ZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvY29uZi9sYXllci5jb25mIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9jb25mL2xheWVyLmNvbmYKaW5kZXggZThiZDM2Mi4uYmUxNjM1ZCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9jb25mL2xheWVyLmNvbmYKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9jb25mL2xheWVyLmNvbmYKQEAgLTE1LDQgKzE1LDQgQEAKIAogTEFZRVJERVBFTkRTX2ZpbGVzeXN0ZW1zLWxheWVyID0gImNvcmUgb3BlbmVtYmVkZGVkLWxheWVyIgogCi1MQVlFUlNFUklFU19DT01QQVRfZmlsZXN5c3RlbXMtbGF5ZXIgPSAidGh1ZCB3YXJyaW9yIHpldXMiCitMQVlFUlNFUklFU19DT01QQVRfZmlsZXN5c3RlbXMtbGF5ZXIgPSAidGh1ZCB3YXJyaW9yIHpldXMgZHVuZmVsbCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9mdXNlLWV4ZmF0L2Z1c2UtZXhmYXRfMS4zLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvZnVzZS1leGZhdC9mdXNlLWV4ZmF0XzEuMy4wLmJiCmluZGV4IDU3MjA0MzAuLmJlMjQxNWYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9mdXNlLWV4ZmF0L2Z1c2UtZXhmYXRfMS4zLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL2Z1c2UtZXhmYXQvZnVzZS1leGZhdF8xLjMuMC5iYgpAQCAtOSw2ICs5LDggQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgogU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcmVsYW4vZXhmYXQvcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7QlB9LnRhci5neiIKIAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9yZWxhbi9leGZhdC9yZWxlYXNlcyIKKwogREVQRU5EUyA9ICJmdXNlIHZpcnR1YWwvbGliYyIKIFJSRUNPTU1FTkRTXyR7UE59ID0gInV0aWwtbGludXgtbW91bnQiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9udGZzLTNnLW50ZnNwcm9ncy9maWxlcy8wMDAxLU1ha2UtYnVpbGQtc3VwcG9ydC11c3JtZXJnZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9udGZzLTNnLW50ZnNwcm9ncy9maWxlcy8wMDAxLU1ha2UtYnVpbGQtc3VwcG9ydC11c3JtZXJnZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNlMTBiOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvbnRmcy0zZy1udGZzcHJvZ3MvZmlsZXMvMDAwMS1NYWtlLWJ1aWxkLXN1cHBvcnQtdXNybWVyZ2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDMzZjY3OGJmNzQzNjdhYWI4ZGRjMjg1OGE5Zjc3OTc0NTVlYTliOWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAyOSBBdWcgMjAxOSAxMDoyMTo1OCArMDgwMAotU3ViamVjdDogW1BBVENIXSBNYWtlIGJ1aWxkIHN1cHBvcnQgdXNybWVyZ2UKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW29lLXNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgotLS0tCi0gbnRmc3Byb2dzL01ha2VmaWxlLmFtIHwgMiAtLQotIHNyYy9NYWtlZmlsZS5hbSAgICAgICB8IDMgLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbnRmc3Byb2dzL01ha2VmaWxlLmFtIGIvbnRmc3Byb2dzL01ha2VmaWxlLmFtCi1pbmRleCBmNGY5ZDFiLi4xZjZhNjczIDEwMDY0NAotLS0tIGEvbnRmc3Byb2dzL01ha2VmaWxlLmFtCi0rKysgYi9udGZzcHJvZ3MvTWFrZWZpbGUuYW0KLUBAIC0xNjUsOCArMTY1LDYgQEAgZXh0cmFzOglsaWJzICQoRVhUUkFfUFJPR1JBTVMpCi0gCi0gaWYgRU5BQkxFX01PVU5UX0hFTFBFUgotIGluc3RhbGwtZXhlYy1ob29rOgotLQkkKElOU1RBTEwpIC1kICQoREVTVERJUikvc2JpbgotLQkkKExOX1MpIC1mICQoc2JpbmRpcikvbWtudGZzICQoREVTVERJUikvc2Jpbi9ta2ZzLm50ZnMKLSAKLSBpbnN0YWxsLWRhdGEtaG9vazoKLSAJJChJTlNUQUxMKSAtZCAkKERFU1RESVIpJChtYW44ZGlyKQotZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQotaW5kZXggOGQ5ODQwOC4uZDBhNmE0NSAxMDA2NDQKLS0tLSBhL3NyYy9NYWtlZmlsZS5hbQotKysrIGIvc3JjL01ha2VmaWxlLmFtCi1AQCAtNjYsOSArNjYsNiBAQCBlbmRpZgotIAotIGlmIEVOQUJMRV9NT1VOVF9IRUxQRVIKLSBpbnN0YWxsLWV4ZWMtbG9jYWw6CWluc3RhbGwtcm9vdGJpblBST0dSQU1TCi0tCSQoTUtESVJfUCkgIiQoREVTVERJUikvc2JpbiIKLS0JJChMTl9TKSAtZiAiJChyb290YmluZGlyKS9udGZzLTNnIiAiJChERVNURElSKS9zYmluL21vdW50Lm50ZnMtM2ciCi0tCSQoTE5fUykgLWYgIiQocm9vdGJpbmRpcikvbG93bnRmcy0zZyIgIiQoREVTVERJUikvc2Jpbi9tb3VudC5sb3dudGZzLTNnIgotIAotIGluc3RhbGwtZGF0YS1sb2NhbDoJaW5zdGFsbC1tYW44Ci0gCSQoTE5fUykgLWYgbnRmcy0zZy44ICIkKERFU1RESVIpJChtYW44ZGlyKS9tb3VudC5udGZzLTNnLjgiCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9udGZzLTNnLW50ZnNwcm9ncy9udGZzLTNnLW50ZnNwcm9nc18yMDE3LjMuMjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvbnRmcy0zZy1udGZzcHJvZ3MvbnRmcy0zZy1udGZzcHJvZ3NfMjAxNy4zLjIzLmJiCmluZGV4IDE1NTliZmQuLjZmNWNiNmMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9udGZzLTNnLW50ZnNwcm9ncy9udGZzLTNnLW50ZnNwcm9nc18yMDE3LjMuMjMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL250ZnMtM2ctbnRmc3Byb2dzL250ZnMtM2ctbnRmc3Byb2dzXzIwMTcuMy4yMy5iYgpAQCAtOCw3ICs4LDYgQEAKIAogU1JDX1VSSSA9ICJodHRwOi8vdHV4ZXJhLmNvbS9vcGVuc291cmNlL250ZnMtM2dfbnRmc3Byb2dzLSR7UFZ9LnRneiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYm50ZnMtM2ctTWFrZWZpbGUuYW0tZml4LWluc3RhbGwtZmFpbGVkLXdoaWxlLWhvc3QucGF0Y2ggXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywndXNybWVyZ2UnLCdmaWxlOi8vMDAwMS1NYWtlLWJ1aWxkLXN1cHBvcnQtdXNybWVyZ2UucGF0Y2gnLCcnLGQpfSBcCiAiCiBTID0gIiR7V09SS0RJUn0vbnRmcy0zZ19udGZzcHJvZ3MtJHtQVn0iCiBTUkNfVVJJW21kNXN1bV0gPSAiZDk3NDc0YWUxOTU0Zjc3MmM2ZDJmYTM4NmE2ZjQ2MmMiCkBAIC0zNSwxMCArMzQsMTggQEAKIEZJTEVTX2xpYm50ZnMtM2cgPSAiJHtsaWJkaXJ9Lyoke1NPTElCU30iCiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgU3RhbmRhcmQgbW91bnQgd2lsbCBleGVjdXRlIHRoZSBwcm9ncmFtIC9zYmluL21vdW50LlRZUEUKLSAgICAjIHdoZW4gY2FsbGVkLiBBZGQgdGhlIHN5bWJvbGljIHRvIGxldCBtb3VudCBjb3VsZCBmaW5kIG50ZnMuCi0gICAgbG4gLXNmIG1vdW50Lm50ZnMtM2cgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0vbW91bnQubnRmcworICAgICMgU3RhbmRhcmQgbW91bnQgd2lsbCBleGVjdXRlIHRoZSBwcm9ncmFtIC9zYmluL21vdW50LlRZUEUgd2hlbiBjYWxsZWQuCisgICAgIyBBZGQgYSBzeW1ib2xpYyBsaW5rIHRvIGxldCBtb3VudCBmaW5kIG50ZnMuCisgICAgbG4gLXNmIG1vdW50Lm50ZnMtM2cgJHtEfSR7YmFzZV9zYmluZGlyfS9tb3VudC5udGZzCiAgICAgcm1kaXIgJHtEfSR7bGliZGlyfS9udGZzLTNnCisKKyAgICAjIEhhbmRsZSB3aGVuIHVzcm1lcmdlIGlzIGluIGVmZmVjdC4gU29tZSBmaWxlcyBhcmUgaW5zdGFsbGVkIHRvIC9zYmluCisgICAgIyByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiAke2Jhc2Vfc2JpbmRpcn0uCisgICAgaWYgWyAiJHtiYXNlX3NiaW5kaXJ9IiAhPSAvc2JpbiBdICYmIFsgLWQgJHtEfS9zYmluIF07IHRoZW4KKyAgICAgICAgbWtkaXIgLXAgJHtEfSR7YmFzZV9zYmluZGlyfQorICAgICAgICBtdiAke0R9L3NiaW4vKiAke0R9JHtiYXNlX3NiaW5kaXJ9CisgICAgICAgIHJtZGlyICR7RH0vc2JpbgorICAgIGZpCiB9CiAKICMgU2F0aXNmeSB0aGUgLWRldiBydW50aW1lIGRlcGVuZGVuY3kKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9zc2hmcy1mdXNlL3NzaGZzLWZ1c2VfMy42LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvc3NoZnMtZnVzZS9zc2hmcy1mdXNlXzMuNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTE1ZDA3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9zc2hmcy1mdXNlL3NzaGZzLWZ1c2VfMy42LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIlRoaXMgaXMgYSBmaWxlc3lzdGVtIGNsaWVudCBiYXNlZCBvbiB0aGUgU1NIIEZpbGUgVHJhbnNmZXIgUHJvdG9jb2wgdXNpbmcgRlVTRSIKLUFVVEhPUiA9ICJNaWtsb3MgU3plcmVkaSA8bWlrbG9zQHN6ZXJlZGkuaHU+IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZ1c2Uvc3NoZnMiCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1ERVBFTkRTID0gImdsaWItMi4wIGZ1c2UzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saWJmdXNlL3NzaGZzIgotU1JDUkVWID0gImExZTVmMTJjNTMwY2NmNTk0MzRhN2Q1OWEzNGEwNDlmMTYwYjM1NTkiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IG1lc29uCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvc3NoZnMtZnVzZS9zc2hmcy1mdXNlXzMuNy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3NzaGZzLWZ1c2Uvc3NoZnMtZnVzZV8zLjcuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjljMzRkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3NzaGZzLWZ1c2Uvc3NoZnMtZnVzZV8zLjcuMC5iYgpAQCAtMCwwICsxLDEzIEBACitTVU1NQVJZID0gIlRoaXMgaXMgYSBmaWxlc3lzdGVtIGNsaWVudCBiYXNlZCBvbiB0aGUgU1NIIEZpbGUgVHJhbnNmZXIgUHJvdG9jb2wgdXNpbmcgRlVTRSIKK0FVVEhPUiA9ICJNaWtsb3MgU3plcmVkaSA8bWlrbG9zQHN6ZXJlZGkuaHU+IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZ1c2Uvc3NoZnMiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiR1BMdjIiCitERVBFTkRTID0gImdsaWItMi4wIGZ1c2UzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saWJmdXNlL3NzaGZzIgorU1JDUkVWID0gImE3ZTEwMzgyMDNjODU2Y2M3ZTA1MmQ0MzlkMWRhNDlmZTEzMTMzOWYiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IG1lc29uCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvdW5pb25mcy1mdXNlL2ZpbGVzLzAwMDEtdW5pb25mcy1EZWZpbmUtSU9DUEFSTV9MRU4taWYtdW5kZWZpbmVkLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3VuaW9uZnMtZnVzZS9maWxlcy8wMDAxLXVuaW9uZnMtRGVmaW5lLUlPQ1BBUk1fTEVOLWlmLXVuZGVmaW5lZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGY5OTFjZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvdW5pb25mcy1mdXNlL2ZpbGVzLzAwMDEtdW5pb25mcy1EZWZpbmUtSU9DUEFSTV9MRU4taWYtdW5kZWZpbmVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotRnJvbSAxMDQxMWZhODY1ODYyMTgyMmFlMzk0MTYwZGFmZmFjZWQ0YTRjZDdmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTMgSnVsIDIwMTcgMjM6MDc6MjkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gdW5pb25mczogRGVmaW5lIElPQ1BBUk1fTEVOIGlmIHVuZGVmaW5lZAotCi1tdXNsIGRvZXMgbm90IGhhdmUgc3lzY3RsLmggd2hpY2ggZGVmaW5lcyB0aGlzCi1mb3IgZ2xpYmMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy91bmlvbmZzLmMgfCAgOCAtLS0tLS0tLQotIHNyYy91bmlvbmZzLmggfCAxNSArKysrKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvdW5pb25mcy5jIGIvc3JjL3VuaW9uZnMuYwotaW5kZXggYTM0ZDM0ZS4uNTE2ODRhNyAxMDA2NDQKLS0tLSBhL3NyYy91bmlvbmZzLmMKLSsrKyBiL3NyYy91bmlvbmZzLmMKLUBAIC0yMSwxNCArMjEsNiBAQAotICNpbmNsdWRlICJvcHRzLmgiCi0gI2luY2x1ZGUgInVzeXNsb2cuaCIKLSAKLS0jaWZuZGVmIF9JT0NfU0laRQotLSNpZmRlZiBJT0NQQVJNX0xFTgotLSNkZWZpbmUgX0lPQ19TSVpFKHgpIElPQ1BBUk1fTEVOKHgpCi0tI2Vsc2UKLS0jZXJyb3IgIk5vIG1lY2hhbmlzbSBmb3IgZGV0ZXJtaW5pbmcgaW9jdGwgbGVuZ3RoIGZvdW5kLiIKLS0jZW5kaWYKLS0jZW5kaWYKLS0KLSBzdGF0aWMgc3RydWN0IGZ1c2Vfb3B0IHVuaW9uZnNfb3B0c1tdID0gewotIAlGVVNFX09QVF9LRVkoImNocm9vdD0lcywiLCBLRVlfQ0hST09UKSwKLSAJRlVTRV9PUFRfS0VZKCJjb3ciLCBLRVlfQ09XKSwKLWRpZmYgLS1naXQgYS9zcmMvdW5pb25mcy5oIGIvc3JjL3VuaW9uZnMuaAotaW5kZXggOGY1ZTBiZi4uYjAyZGU1YSAxMDA2NDQKLS0tLSBhL3NyYy91bmlvbmZzLmgKLSsrKyBiL3NyYy91bmlvbmZzLmgKLUBAIC0xNyw2ICsxNywyMSBAQAotICNkZWZpbmUgRlVTRV9NRVRBX0ZJTEUgIi5mdXNlX2hpZGRlbiIKLSAjZGVmaW5lIEZVU0VfTUVUQV9MRU5HVEggMTIKLSAKLSsjaWZuZGVmIElPQ1BBUk1fTUFTSwotKyNkZWZpbmUgSU9DUEFSTV9NQVNLICAgICAgMHgxRkZGCi0rI2VuZGlmCi0rI2lmbmRlZiBJT0NQQVJNX0xFTgotKyNkZWZpbmUgSU9DUEFSTV9MRU4oYSkgICAgKCgoYSkgPj4gMTYpICYgSU9DUEFSTV9NQVNLKQotKyNlbmRpZgotKwotKyNpZm5kZWYgX0lPQ19TSVpFCi0rI2lmZGVmIElPQ1BBUk1fTEVOCi0rI2RlZmluZSBfSU9DX1NJWkUoeCkgSU9DUEFSTV9MRU4oeCkKLSsjZWxzZQotKyNlcnJvciAiTm8gbWVjaGFuaXNtIGZvciBkZXRlcm1pbmluZyBpb2N0bCBsZW5ndGggZm91bmQuIgotKyNlbmRpZgotKyNlbmRpZgotKwotIC8vIGZpbGUgYWNjZXNzIHByb3RlY3Rpb24gbWFzawotICNkZWZpbmUgU19QUk9UX01BU0sgKFNfSVNVSUR8IFNfSVNHSUQgfCBTX0lTVlRYIHwgU19JUldYVSB8IFNfSVJXWEcgfCBTX0lSV1hPKQotIAotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3VuaW9uZnMtZnVzZS91bmlvbmZzLWZ1c2VfMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3VuaW9uZnMtZnVzZS91bmlvbmZzLWZ1c2VfMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmVkZjE2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy91bmlvbmZzLWZ1c2UvdW5pb25mcy1mdXNlXzIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBGVVNFIGJhc2VkIGltcGxlbWVudGlvbiBvZiB1bmlvbmZzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Jwb2Rnb3JueS91bmlvbmZzLWZ1c2UiCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL3VuaW9uZnMuYztiZWdpbmxpbmU9MztlbmRsaW5lPTg7bWQ1PTMwZmE4ZGU3MGZkOGFiYWIwMGI0ODNhMWI3OTQzYTMyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTdlNWEzN2ZjZTE3MzA3MDY2ZWVjNmIyMzU0NmRhM2IzIFwKLSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3Jwb2Rnb3JueS8ke0JQTn0uZ2l0O2JyYW5jaD1tYXN0ZXIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXVuaW9uZnMtRGVmaW5lLUlPQ1BBUk1fTEVOLWlmLXVuZGVmaW5lZC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ1JFViA9ICJjOGQyM2E5YTc1ZjFhNjI5ODg1OTM2NzE4MzllOGExNjhhNzlmM2U1IgotCi1ERVBFTkRTID0gImZ1c2UiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvdW5pb25mcy1mdXNlL3VuaW9uZnMtZnVzZV8yLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvdW5pb25mcy1mdXNlL3VuaW9uZnMtZnVzZV8yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RkNWM4MgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy91bmlvbmZzLWZ1c2UvdW5pb25mcy1mdXNlXzIuMS5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIkEgRlVTRSBiYXNlZCBpbXBsZW1lbnRpb24gb2YgdW5pb25mcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ycG9kZ29ybnkvdW5pb25mcy1mdXNlIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy91bmlvbmZzLmM7YmVnaW5saW5lPTM7ZW5kbGluZT04O21kNT0zMGZhOGRlNzBmZDhhYmFiMDBiNDgzYTFiNzk0M2EzMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFO21kNT03ZTVhMzdmY2UxNzMwNzA2NmVlYzZiMjM1NDZkYTNiMyBcCisiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG9kZ29ybnkvJHtCUE59LmdpdDticmFuY2g9bWFzdGVyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNSRVYgPSAiOGQ3MzI5NjI0MjNjM2NhNWJlMWYxNGI3ZWMxMzlmZjQ2NGUxMGE1MSIKKworREVQRU5EUyA9ICJmdXNlIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXN1cHBvcnQvZnVzZS9mdXNlM18zLjkuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1zdXBwb3J0L2Z1c2UvZnVzZTNfMy45LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5YTM0OTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXN1cHBvcnQvZnVzZS9mdXNlM18zLjkuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLVNVTU1BUlkgPSAiSW1wbGVtZW50YXRpb24gb2YgYSBmdWxseSBmdW5jdGlvbmFsIGZpbGVzeXN0ZW0gaW4gYSB1c2Vyc3BhY2UgcHJvZ3JhbSIKLURFU0NSSVBUSU9OID0gIkZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBpcyBhIHNpbXBsZSBpbnRlcmZhY2UgZm9yIHVzZXJzcGFjZSBcCi0gICAgICAgICAgICAgICBwcm9ncmFtcyB0byBleHBvcnQgYSB2aXJ0dWFsIGZpbGVzeXN0ZW0gdG8gdGhlIExpbnV4IGtlcm5lbC4gRlVTRSBcCi0gICAgICAgICAgICAgICBhbHNvIGFpbXMgdG8gcHJvdmlkZSBhIHNlY3VyZSBtZXRob2QgZm9yIG5vbiBwcml2aWxlZ2VkIHVzZXJzIHRvIFwKLSAgICAgICAgICAgICAgIGNyZWF0ZSBhbmQgbW91bnQgdGhlaXIgb3duIGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb25zLiBcCi0gICAgICAgICAgICAgICIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJmdXNlL2xpYmZ1c2UiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vR1BMMi50eHQ7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xHUEwyLnR4dDttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRTttZDU9YTU1YzEyYTJkN2Q3NDJlY2I0MWNhOWFlMGE2ZGRjNjYiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZ1c2UvbGliZnVzZS9yZWxlYXNlcy9kb3dubG9hZC9mdXNlLSR7UFZ9L2Z1c2UtJHtQVn0udGFyLnh6IFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1ZGMyYmUyMWMwZDA2YzdlYWNlMzQwOTk2ZThhMzdlMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmY2I3MDc5YTFiYjRlNTEwMzc3YjQyN2QxYzVjMzdjMzQ5MjgxZDQ5OGUyNDlhZTBjMjM3OWI0Y2Y1MDA1OWMyIgotCi1TID0gIiR7V09SS0RJUn0vZnVzZS0ke1BWfSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJmdXNlL2xpYmZ1c2UvcmVsZWFzZXMiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJmdXNlXC0oP1A8cHZlcj4zKFwuXGQrKSspLnRhci54eiIKLQotaW5oZXJpdCBtZXNvbiBwa2djb25maWcKLQotREVQRU5EUyA9ICJ1ZGV2IgotCi1QQUNLQUdFUyA9KyAiZnVzZTMtdXRpbHMiCi0KLVJQUk9WSURFU18ke1BOfS1kYmcgKz0gImZ1c2UzLXV0aWxzLWRiZyIKLQotUlJFQ09NTUVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gImtlcm5lbC1tb2R1bGUtZnVzZSBmdXNlMy11dGlscyIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWJmdXNlMy5zby4qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbGliZnVzZTMqLmxhIgotCi1FWFRSQV9PRU1FU09OICs9ICIgXAotICAgICAtRGV4YW1wbGVzPWZhbHNlIFwKLSIKLQotIyBGb3JiaWQgYXV0by1yZW5hbWluZyB0byBsaWJmdXNlMy11dGlscwotRklMRVNfZnVzZTMtdXRpbHMgPSAiJHtiaW5kaXJ9ICR7YmFzZV9zYmluZGlyfSIKLURFQklBTl9OT0FVVE9OQU1FX2Z1c2UzLXV0aWxzID0gIjEiCi1ERUJJQU5fTk9BVVRPTkFNRV8ke1BOfS1kYmcgPSAiMSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgcm0gLXJmICR7RH0ke2Jhc2VfcHJlZml4fS9kZXYKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1zdXBwb3J0L2Z1c2UvZnVzZTNfMy45LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtc3VwcG9ydC9mdXNlL2Z1c2UzXzMuOS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MzBmYTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtc3VwcG9ydC9mdXNlL2Z1c2UzXzMuOS4xLmJiCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiSW1wbGVtZW50YXRpb24gb2YgYSBmdWxseSBmdW5jdGlvbmFsIGZpbGVzeXN0ZW0gaW4gYSB1c2Vyc3BhY2UgcHJvZ3JhbSIKK0RFU0NSSVBUSU9OID0gIkZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBpcyBhIHNpbXBsZSBpbnRlcmZhY2UgZm9yIHVzZXJzcGFjZSBcCisgICAgICAgICAgICAgICBwcm9ncmFtcyB0byBleHBvcnQgYSB2aXJ0dWFsIGZpbGVzeXN0ZW0gdG8gdGhlIExpbnV4IGtlcm5lbC4gRlVTRSBcCisgICAgICAgICAgICAgICBhbHNvIGFpbXMgdG8gcHJvdmlkZSBhIHNlY3VyZSBtZXRob2QgZm9yIG5vbiBwcml2aWxlZ2VkIHVzZXJzIHRvIFwKKyAgICAgICAgICAgICAgIGNyZWF0ZSBhbmQgbW91bnQgdGhlaXIgb3duIGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb25zLiBcCisgICAgICAgICAgICAgICIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJmdXNlL2xpYmZ1c2UiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vR1BMMi50eHQ7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xHUEwyLnR4dDttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRTttZDU9YTU1YzEyYTJkN2Q3NDJlY2I0MWNhOWFlMGE2ZGRjNjYiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZ1c2UvbGliZnVzZS9yZWxlYXNlcy9kb3dubG9hZC9mdXNlLSR7UFZ9L2Z1c2UtJHtQVn0udGFyLnh6IFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNmQ2YjQ1MDI3NmZiMDRlMjBiZjkxZDgzYjk0MjNmMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYmFmY2ZkNmM2NmJhMzViN2IwYmViODIyNTMyYTkxMDZlYjg0MDlhZDZjZGU5ODg4ODhmZGU4NWY4OWJlNjQ1IgorCitTID0gIiR7V09SS0RJUn0vZnVzZS0ke1BWfSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJmdXNlL2xpYmZ1c2UvcmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJmdXNlXC0oP1A8cHZlcj4zKFwuXGQrKSspLnRhci54eiIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcKKworREVQRU5EUyA9ICJ1ZGV2IgorCitQQUNLQUdFUyA9KyAiZnVzZTMtdXRpbHMiCisKK1JQUk9WSURFU18ke1BOfS1kYmcgKz0gImZ1c2UzLXV0aWxzLWRiZyIKKworUlJFQ09NTUVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gImtlcm5lbC1tb2R1bGUtZnVzZSBmdXNlMy11dGlscyIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWJmdXNlMy5zby4qIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbGliZnVzZTMqLmxhIgorCitFWFRSQV9PRU1FU09OICs9ICIgXAorICAgICAtRGV4YW1wbGVzPWZhbHNlIFwKKyIKKworIyBGb3JiaWQgYXV0by1yZW5hbWluZyB0byBsaWJmdXNlMy11dGlscworRklMRVNfZnVzZTMtdXRpbHMgPSAiJHtiaW5kaXJ9ICR7YmFzZV9zYmluZGlyfSIKK0RFQklBTl9OT0FVVE9OQU1FX2Z1c2UzLXV0aWxzID0gIjEiCitERUJJQU5fTk9BVVRPTkFNRV8ke1BOfS1kYmcgPSAiMSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgcm0gLXJmICR7RH0ke2Jhc2VfcHJlZml4fS9kZXYKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9leGZhdC11dGlscy9leGZhdC11dGlsc18xLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9leGZhdC11dGlscy9leGZhdC11dGlsc18xLjMuMC5iYgppbmRleCAxZjJiZmE2Li43ZjgwNGE3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvZXhmYXQtdXRpbHMvZXhmYXQtdXRpbHNfMS4zLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2V4ZmF0LXV0aWxzL2V4ZmF0LXV0aWxzXzEuMy4wLmJiCkBAIC0xNCw2ICsxNCw4IEBACiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JlbGFuL2V4ZmF0L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQfS50YXIuZ3oiCiAKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcmVsYW4vZXhmYXQvcmVsZWFzZXMiCisKIERFUEVORFMgPSAidmlydHVhbC9saWJjIgogCiBpbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9mYXRjYXQvZmF0Y2F0LzAwMDEtVXNlLXVuaXN0ZC5oLW5vdC1hcmdwLmgtZm9yLWFsbC1QT1NJWC1zeXN0ZW1zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2ZhdGNhdC9mYXRjYXQvMDAwMS1Vc2UtdW5pc3RkLmgtbm90LWFyZ3AuaC1mb3ItYWxsLVBPU0lYLXN5c3RlbXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ4ZTIyYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9mYXRjYXQvZmF0Y2F0LzAwMDEtVXNlLXVuaXN0ZC5oLW5vdC1hcmdwLmgtZm9yLWFsbC1QT1NJWC1zeXN0ZW1zLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gMTRlZjgzMjkxMDk2ZTAxOWViYzQ4MDQwY2Y2MzUzMGEyNTc0YTI2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS2llcm5hbiA8YWxleC5raWVybmFuQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMTkgSmFuIDIwMjAgMTY6MDM6MjEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIHVuaXN0ZC5oIG5vdCBhcmdwLmggZm9yIGFsbCBQT1NJWCBzeXN0ZW1zCisKK2dldG9wdCgzKSBpcyBmb3VuZCBpbiB1bmlzdGQuaCBvbiBhbGwgUE9TSVggc3lzdGVtcyBhbmQgd2UgbWFrZSBubyB1c2UKK29mIGFueSBvZiB0aGUgR05VIHNwZWNpZmljIGFyZ3AgZXh0ZW5zaW9ucy4gSW5jbHVkZSB1bmlzdGQuaCBkaXJlY3RseSB0bworYWxsb3cgYnVpbGRpbmcgd2l0aCBtdXNsIG9uIGxpbnV4LCB3aGlsc3QgcmV0YWluaW5nIGNvbXBhdGliaWxpdHkgd2l0aAorZ2xpYmMgYW5kIG90aGVyIHVuaWNlcy4KKworU2lnbmVkLW9mZi1ieTogQWxleCBLaWVybmFuIDxhbGV4LmtpZXJuYW5AZ21haWwuY29tPgorVXBzdHJlYW0tc3RhdHVzOiBQZW5kaW5nCistLS0KKyBzcmMvZmF0Y2F0LmNwcCB8IDggKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2ZhdGNhdC5jcHAgYi9zcmMvZmF0Y2F0LmNwcAoraW5kZXggY2UyM2NhMDdiYjk5Li5iNDQyN2U0NjViZGUgMTAwNjQ0CistLS0gYS9zcmMvZmF0Y2F0LmNwcAorKysrIGIvc3JjL2ZhdGNhdC5jcHAKK0BAIC0xLDE0ICsxLDEwIEBACisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNpbmNsdWRlPHN0cmluZy5oPgorLSNpZmRlZiBfX0FQUExFX18KKy0jaW5jbHVkZSA8dW5pc3RkLmg+CistI2Vsc2UKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2lmZGVmIF9fV0lOX18KKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAjaW5jbHVkZSAieGdldG9wdC94Z2V0b3B0LmgiCisgI2Vsc2UKKy0jaW5jbHVkZSA8YXJncC5oPgorLSNlbmRpZgorKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9mYXRjYXQvZmF0Y2F0XzEuMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2ZhdGNhdC9mYXRjYXRfMS4xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzcyNjcxNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9mYXRjYXQvZmF0Y2F0XzEuMS4wLmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiRkFUIGZpbGVzeXN0ZW1zIGV4cGxvcmUsIGV4dHJhY3QsIHJlcGFpciwgYW5kIGZvcmVuc2ljIHRvb2wiCitERVNDUklQVElPTiA9ICJUaGlzIHRvb2wgaXMgZGVzaWduZWQgdG8gbWFuaXB1bGF0ZSBGQVQgZmlsZXN5c3RlbXMsIGluIG9yZGVyIHRvIFwKK2V4cGxvcmUsIGV4dHJhY3QsIHJlcGFpciwgcmVjb3ZlciBhbmQgZm9yZW5zaWMgdGhlbS4gSXQgY3VycmVudGx5IHN1cHBvcnRzIFwKK0ZBVDEyLCBGQVQxNiBhbmQgRkFUMzIuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL0dyZWd3YXIvZmF0Y2F0IgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTU3ZmJiZmViZDBkZDFkNmZmMjFiOGNlY2I1NTJhMDNmIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vR3JlZ3dhci9mYXRjYXQuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXVuaXN0ZC5oLW5vdC1hcmdwLmgtZm9yLWFsbC1QT1NJWC1zeXN0ZW1zLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNSRVYgPSAiYjkyMzE3MmQ5N2M1NzgyOTc5NjRjMDYyZTNhOTI3OTllMmE5ZWNhNCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3Vmcy11dGlscy91ZnMtdXRpbHNfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3Vmcy11dGlscy91ZnMtdXRpbHNfZ2l0LmJiCmluZGV4IDVmZGQwODkuLjIzNTgzNjUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy91ZnMtdXRpbHMvdWZzLXV0aWxzX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvdWZzLXV0aWxzL3Vmcy11dGlsc19naXQuYmIKQEAgLTEyLDYgKzEyLDggQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtUmVwbGFjZS11X2ludFhYX3Qtd2l0aC1rZXJuZWwtdHlwZWRlZnMucGF0Y2ggXAogIgogCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCisKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIEVYVFJBX09FTUFLRSA9ICJDUk9TU19DT01QSUxFPSR7VEFSR0VUX1BSRUZJWH0gQ0M9IiR7Q0N9IiBDRkxBR1M9IiR7Q0ZMQUdTfSIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC9maWxlcy8wMDAxLXhmc2R1bXAtc3VwcG9ydC11c3JtZXJnZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzLzAwMDEteGZzZHVtcC1zdXBwb3J0LXVzcm1lcmdlLnBhdGNoCmluZGV4IDA0ZWM3YjMuLmJmYjI1ZTggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzLzAwMDEteGZzZHVtcC1zdXBwb3J0LXVzcm1lcmdlLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzLzAwMDEteGZzZHVtcC1zdXBwb3J0LXVzcm1lcmdlLnBhdGNoCkBAIC0xLDQ0ICsxLDQ4IEBACi1Gcm9tIDJkYTRjZmUxN2I5OTRkN2YxMDAxNzU2MWNhOGVmZTZiNmJkNWYzY2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGZlYThjNDYzNDQ2OTc4NGMxNjIxMWUyNTk3NDExYzE4YzcyZGZhNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCA1IFNlcCAyMDE5IDExOjE3OjE1ICswODAwCitEYXRlOiBUaHUsIDUgTWFyIDIwMjAgMTQ6MzY6MTQgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0geGZzZHVtcDogc3VwcG9ydCB1c3JtZXJnZQogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLXNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgogLS0tCi0gZHVtcC9NYWtlZmlsZSAgICB8IDQgKy0tLQotIHJlc3RvcmUvTWFrZWZpbGUgfCA0ICstLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKyBkdW1wL01ha2VmaWxlICAgIHwgNiArLS0tLS0KKyByZXN0b3JlL01ha2VmaWxlIHwgNiArLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9kdW1wL01ha2VmaWxlIGIvZHVtcC9NYWtlZmlsZQotaW5kZXggOTc4NzlmYS4uMTRkYTY2NCAxMDA2NDQKK2luZGV4IDY2ZjAwZDMuLmNjMmQ5NzMgMTAwNjQ0CiAtLS0gYS9kdW1wL01ha2VmaWxlCiArKysgYi9kdW1wL01ha2VmaWxlCi1AQCAtOTcsMTAgKzk3LDggQEAgZGVmYXVsdDogZGVwZW5kICQoTFRDT01NQU5EKQorQEAgLTk3LDEyICs5Nyw4IEBAIGRlZmF1bHQ6IGRlcGVuZCAkKExUQ09NTUFORCkKICBpbmNsdWRlICQoQlVJTERSVUxFUykKICAKICBpbnN0YWxsOiBkZWZhdWx0CiAtCSQoSU5TVEFMTCkgLW0gNzU1IC1kICQoUEtHX1JPT1RfU0JJTl9ESVIpCiAtCSQoTFRJTlNUQUxMKSAtbSA3NTUgJChMVENPTU1BTkQpICQoUEtHX1JPT1RfU0JJTl9ESVIpCiAgCSQoSU5TVEFMTCkgLW0gNzU1IC1kICQoUEtHX1NCSU5fRElSKQotLQkkKElOU1RBTEwpIC1TICQoUEtHX1JPT1RfU0JJTl9ESVIpLyQoTFRDT01NQU5EKSAkKFBLR19TQklOX0RJUikvJChMVENPTU1BTkQpCistCSMgc2tpcCBzeW1saW5rIHdoZW4gL3NiaW4gaXMgYWxyZWFkIHN5bWxpbmtlZCB0byAvdXNyL3NiaW4sIGxpa2Ugb24gRmVkb3JhCistCXRlc3QgJChQS0dfUk9PVF9TQklOX0RJUikgLWVmICQoUEtHX1NCSU5fRElSKSB8fCBcCistCQkkKElOU1RBTEwpIC1TICQoUEtHX1JPT1RfU0JJTl9ESVIpLyQoTFRDT01NQU5EKSAkKFBLR19TQklOX0RJUikvJChMVENPTU1BTkQpCiArCSQoTFRJTlNUQUxMKSAtbSA3NTUgJChMVENPTU1BTkQpICQoUEtHX1NCSU5fRElSKQogIGluc3RhbGwtZGV2OgogIAogIC5kZXA6ICQoQ09NTUlOQ0wpICQoQ09NTU9OKSAkKElOVklOQ0wpICQoSU5WQ09NTU9OKQogZGlmZiAtLWdpdCBhL3Jlc3RvcmUvTWFrZWZpbGUgYi9yZXN0b3JlL01ha2VmaWxlCi1pbmRleCBjNmYzZjI1Li43ODM1ZWNjIDEwMDY0NAoraW5kZXggYWMzZjhjOC4uM2M0NjM5NCAxMDA2NDQKIC0tLSBhL3Jlc3RvcmUvTWFrZWZpbGUKICsrKyBiL3Jlc3RvcmUvTWFrZWZpbGUKLUBAIC0xMDcsMTAgKzEwNyw4IEBAIGRlZmF1bHQ6IGRlcGVuZCAkKExUQ09NTUFORCkKK0BAIC0xMTEsMTIgKzExMSw4IEBAIGRlZmF1bHQ6IGRlcGVuZCAkKExUQ09NTUFORCkKICBpbmNsdWRlICQoQlVJTERSVUxFUykKICAKICBpbnN0YWxsOiBkZWZhdWx0CiAtCSQoSU5TVEFMTCkgLW0gNzU1IC1kICQoUEtHX1JPT1RfU0JJTl9ESVIpCiAtCSQoTFRJTlNUQUxMKSAtbSA3NTUgJChMVENPTU1BTkQpICQoUEtHX1JPT1RfU0JJTl9ESVIpCiAgCSQoSU5TVEFMTCkgLW0gNzU1IC1kICQoUEtHX1NCSU5fRElSKQotLQkkKElOU1RBTEwpIC1TICQoUEtHX1JPT1RfU0JJTl9ESVIpLyQoTFRDT01NQU5EKSAkKFBLR19TQklOX0RJUikvJChMVENPTU1BTkQpCistCSMgc2tpcCBzeW1saW5rIHdoZW4gL3NiaW4gaXMgYWxyZWFkIHN5bWxpbmtlZCB0byAvdXNyL3NiaW4sIGxpa2Ugb24gRmVkb3JhCistCXRlc3QgJChQS0dfUk9PVF9TQklOX0RJUikgLWVmICQoUEtHX1NCSU5fRElSKSB8fCBcCistCQkkKElOU1RBTEwpIC1TICQoUEtHX1JPT1RfU0JJTl9ESVIpLyQoTFRDT01NQU5EKSAkKFBLR19TQklOX0RJUikvJChMVENPTU1BTkQpCiArCSQoTFRJTlNUQUxMKSAtbSA3NTUgJChMVENPTU1BTkQpICQoUEtHX1NCSU5fRElSKQogIGluc3RhbGwtZGV2OgogIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvd29yay13aXRoLW5ldy12ZXJzaW9uLW9mLXhmc3Byb2dzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvd29yay13aXRoLW5ldy12ZXJzaW9uLW9mLXhmc3Byb2dzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Y2UyM2Q3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzL3dvcmstd2l0aC1uZXctdmVyc2lvbi1vZi14ZnNwcm9ncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLU1ha2UgaXQgd29yayB3aXRoIHhmc3Byb2dzIDUuMi4wLgotCi0ieGZzX2Zzb3BfZ2VvbV92MV90IiBoYXMgY2hhbmdlZCB0byAic3RydWN0IHhmc19mc29wX2dlb21fdjEiCi1pbiB4ZnNwcm9ncyBzaW5jZSB2ZXJzaW9uIDUuMi4wLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogWXVhbiBDaGFvIDx5dWFuYy5mbnN0QGNuLmZ1aml0c3UuY29tPgotLS0tCi0gY29tbW9uL2ZzLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb21tb24vZnMuYyBiL2NvbW1vbi9mcy5jCi1pbmRleCA2MGNmMGZkLi4yY2M3MDMxIDEwMDY0NAotLS0tIGEvY29tbW9uL2ZzLmMKLSsrKyBiL2NvbW1vbi9mcy5jCi1AQCAtMjA0LDcgKzIwNCw3IEBAIGZzX21vdW50ZWQoIGNoYXIgKnR5cHMsIGNoYXIgKmNocnMsIGNoYXIgKm1udHMsIHV1aWRfdCAqaWRwICkKLSBpbnQKLSBmc19nZXRpZCggY2hhciAqbW50cywgdXVpZF90ICppZGIgKQotIHsKLS0JeGZzX2Zzb3BfZ2VvbV92MV90IGdlbzsKLSsJc3RydWN0IHhmc19mc29wX2dlb21fdjEgZ2VvOwotIAlpbnQgZmQ7Ci0gCi0gCWZkID0gb3BlbiggbW50cywgT19SRE9OTFkgKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAveGZzZHVtcF8zLjEuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL3hmc2R1bXBfMy4xLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljNTc1NTguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAveGZzZHVtcF8zLjEuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLVNVTU1BUlkgPSAiWEZTIEZpbGVzeXN0ZW0gRHVtcCBVdGlsaXR5IgotREVTQ1JJUFRJT04gPSAiVGhlIHhmc2R1bXAgcGFja2FnZSBjb250YWlucyB4ZnNkdW1wLCB4ZnNyZXN0b3JlIGFuZCBhIFwKLSAgICAgICAgICAgICAgIG51bWJlciBvZiBvdGhlciB1dGlsaXRpZXMgZm9yIGFkbWluaXN0ZXJpbmcgWEZTIGZpbGVzeXN0ZW1zLlwKLSAgICAgICAgICAgICAgIHhmc2R1bXAgZXhhbWluZXMgZmlsZXMgaW4gYSBmaWxlc3lzdGVtLCBkZXRlcm1pbmVzIHdoaWNoIFwKLSAgICAgICAgICAgICAgIG5lZWQgdG8gYmUgYmFja2VkIHVwLCBhbmQgY29waWVzIHRob3NlIGZpbGVzIHRvIGEgXAotICAgICAgICAgICAgICAgc3BlY2lmaWVkIGRpc2ssIHRhcGUgb3Igb3RoZXIgc3RvcmFnZSBtZWRpdW0uIgotSE9NRVBBR0UgPSAiaHR0cDovL29zcy5zZ2kuY29tL3Byb2plY3RzL3hmcyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvQ09QWUlORzttZDU9MTVjODMyODk0ZDEwZGRkMDBkZmNmNTdiZWU0OTBlY2MiCi1ERVBFTkRTID0gInhmc3Byb2dzIGF0dHIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMvZnMveGZzL3hmc2R1bXAvJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1pbnN0YWxsLWFzLXVzZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vd29yay13aXRoLW5ldy12ZXJzaW9uLW9mLXhmc3Byb2dzLnBhdGNoIFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3Vzcm1lcmdlJywnZmlsZTovLzAwMDEteGZzZHVtcC1zdXBwb3J0LXVzcm1lcmdlLnBhdGNoJywnJyxkKX0gXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiODRkM2JjMjg3YjRhMmJiNWQxNmIyMzIwYTQ3MDQ5YTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWQxNGU2N2FlNWIyNzNjMjY5OGU3NjdiNDNhNDZmMDMzZDM2MWU1NDBmZTEzZmVhYWY5YjExMGVlMGVkYzU4NSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLVBBUkFMTEVMX01BS0UgPSAiIgotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbZ2V0dGV4dF0gPSAiLS1lbmFibGUtZ2V0dGV4dD15ZXMsLS1lbmFibGUtZ2V0dGV4dD1ubyxnZXR0ZXh0IgotCi1DRkxBR1MgKz0gIi1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCi0KLUVYVFJBX09FTUFLRSArPSAiJ0xJQlRPT0w9JHtIT1NUX1NZU30tbGlidG9vbCcgVj0xIgotCi1kb19jb25maWd1cmUgKCkgewotICAgIGV4cG9ydCBERUJVRz0iLUROREVCVUciCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ251LWNvbmZpZy9jb25maWcuZ3Vlc3MgJHtTfQotICAgIGluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLnN1YiAke1N9Ci0gICAgb2VfcnVuY29uZgotfQotCi1kb19pbnN0YWxsICgpIHsKLSAgICBleHBvcnQgRElTVF9ST09UPSR7RH0KLSAgICBvZV9ydW5tYWtlIGluc3RhbGwKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwtZGV2Ci19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC94ZnNkdW1wXzMuMS45LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAveGZzZHVtcF8zLjEuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTE4ZmJhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAveGZzZHVtcF8zLjEuOS5iYgpAQCAtMCwwICsxLDQxIEBACitTVU1NQVJZID0gIlhGUyBGaWxlc3lzdGVtIER1bXAgVXRpbGl0eSIKK0RFU0NSSVBUSU9OID0gIlRoZSB4ZnNkdW1wIHBhY2thZ2UgY29udGFpbnMgeGZzZHVtcCwgeGZzcmVzdG9yZSBhbmQgYSBcCisgICAgICAgICAgICAgICBudW1iZXIgb2Ygb3RoZXIgdXRpbGl0aWVzIGZvciBhZG1pbmlzdGVyaW5nIFhGUyBmaWxlc3lzdGVtcy5cCisgICAgICAgICAgICAgICB4ZnNkdW1wIGV4YW1pbmVzIGZpbGVzIGluIGEgZmlsZXN5c3RlbSwgZGV0ZXJtaW5lcyB3aGljaCBcCisgICAgICAgICAgICAgICBuZWVkIHRvIGJlIGJhY2tlZCB1cCwgYW5kIGNvcGllcyB0aG9zZSBmaWxlcyB0byBhIFwKKyAgICAgICAgICAgICAgIHNwZWNpZmllZCBkaXNrLCB0YXBlIG9yIG90aGVyIHN0b3JhZ2UgbWVkaXVtLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9vc3Muc2dpLmNvbS9wcm9qZWN0cy94ZnMiCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jL0NPUFlJTkc7bWQ1PTE1YzgzMjg5NGQxMGRkZDAwZGZjZjU3YmVlNDkwZWNjIgorREVQRU5EUyA9ICJ4ZnNwcm9ncyBhdHRyIgorCitTUkNfVVJJID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL2ZzL3hmcy94ZnNkdW1wLyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtaW5zdGFsbC1hcy11c2VyLnBhdGNoIFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3Vzcm1lcmdlJywnZmlsZTovLzAwMDEteGZzZHVtcC1zdXBwb3J0LXVzcm1lcmdlLnBhdGNoJywnJyxkKX0gXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMDg2Zjc1ODI4NzViMTRjMTc1MjI4NjdmZmUzZTIwMmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTVhZWVkZTYyMzJkZGNlNmM5ZTc5ZTJhZjg4ZDZmODA4NTM0ZGYxNTUyZWIyYmZhZjdmYjg1YjkyYWRkNmRkMSIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK1BBUkFMTEVMX01BS0UgPSAiIgorUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbZ2V0dGV4dF0gPSAiLS1lbmFibGUtZ2V0dGV4dD15ZXMsLS1lbmFibGUtZ2V0dGV4dD1ubyxnZXR0ZXh0IgorCitDRkxBR1MgKz0gIi1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCisKK0VYVFJBX09FTUFLRSArPSAiJ0xJQlRPT0w9JHtIT1NUX1NZU30tbGlidG9vbCcgVj0xIgorCitkb19jb25maWd1cmUgKCkgeworICAgIGV4cG9ydCBERUJVRz0iLUROREVCVUciCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ251LWNvbmZpZy9jb25maWcuZ3Vlc3MgJHtTfQorICAgIGluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLnN1YiAke1N9CisgICAgb2VfcnVuY29uZgorfQorCitkb19pbnN0YWxsICgpIHsKKyAgICBleHBvcnQgRElTVF9ST09UPSR7RH0KKyAgICBvZV9ydW5tYWtlIGluc3RhbGwKKyAgICBvZV9ydW5tYWtlIGluc3RhbGwtZGV2Cit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MveGZzcHJvZ3NfNS4yLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MveGZzcHJvZ3NfNS4yLjEuYmIKaW5kZXggMzRiMzM4Ni4uNDMzY2U0NyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL3hmc3Byb2dzXzUuMi4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy94ZnNwcm9nc181LjIuMS5iYgpAQCAtMzUsNiArMzUsNyBAQAogICAgICAgICAgICAgICAgIElOU1RBTExfR1JPVVA9cm9vdCBcCiAgICAgICAgICAgICAgICAgYWNfY3ZfaGVhZGVyX2Fpb19oPXllcyBcCiAgICAgICAgICAgICAgICAgYWNfY3ZfbGliX3J0X2xpb19saXN0aW89eWVzIFwKKyAgICAgICAgICAgICAgICBPUFRJTUlaRVI9JyR7U0VMRUNURURfT1BUSU1JWkFUSU9OfScgXAogIgogCiBESVNBQkxFX1NUQVRJQyA9ICIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL1JFQURNRSBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvUkVBRE1FCmluZGV4IDNjNWI0YzUuLmExMTgxNWYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvUkVBRE1FCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvUkVBRE1FCkBAIC0xNSw0ICsxNSw0IEBACiBXaGVuIHNlbmRpbmcgc2luZ2xlIHBhdGNoZXMsIHBsZWFzZSB1c2luZyBzb21ldGhpbmcgbGlrZToKICdnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1nbm9tZV1bUEFUQ0gnCiAKLUxheWVyIG1haW50YWluZXI6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KK0xheWVyIG1haW50YWluZXI6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL2NvbmYvbGF5ZXIuY29uZiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvY29uZi9sYXllci5jb25mCmluZGV4IGQzODFmZGYuLjdhYTk1MDcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvY29uZi9sYXllci5jb25mCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvY29uZi9sYXllci5jb25mCkBAIC0xNyw0ICsxNyw0IEBACiAKIExBWUVSREVQRU5EU19nbm9tZS1sYXllciA9ICJjb3JlIG9wZW5lbWJlZGRlZC1sYXllciBuZXR3b3JraW5nLWxheWVyIgogCi1MQVlFUlNFUklFU19DT01QQVRfZ25vbWUtbGF5ZXIgPSAidGh1ZCB3YXJyaW9yIHpldXMiCitMQVlFUlNFUklFU19DT01QQVRfZ25vbWUtbGF5ZXIgPSAidGh1ZCB3YXJyaW9yIHpldXMgZHVuZmVsbCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibm1hL2xpYm5tYV8xLjguMjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm5tYS9saWJubWFfMS44LjI4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjYjBiYmMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm5tYS9saWJubWFfMS44LjI4LmJiCkBAIC0wLDAgKzEsMjUgQEAKK1NVTU1BUlkgPSAiTmV0d29ya01hbmFnZXIgR1VJIGxpYnJhcnkiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ3RrKzMgbmV0d29ya21hbmFnZXIiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGdub21lYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBnZXR0ZXh0IHZhbGEgZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywnZ2NyJywneDExJywnJyxkKX0iCitBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMDk0YzQ1ZDc2OTRiMTUzNjEyY2JkYzNjNzEzZWRjYjUiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI0YWY2OTU1MmQxMzFhM2IyYjhiNmEyZGY1ODQwNDQyNThiZjU4ODQ0OGRjZGI0YmRkZmExMmEwN2MxMzRiNzI2IgorCitQQUNLQUdFQ09ORklHID89ICJnY3IgaXNvX2NvZGVzIG1vYmlsZV9icm9hZGJhbmRfcHJvdmlkZXJfaW5mbyIKK1BBQ0tBR0VDT05GSUdbZ2NyXSA9ICItRGdjcj10cnVlLC1EZ2NyPWZhbHNlLGdjciIKK1BBQ0tBR0VDT05GSUdbaXNvX2NvZGVzXSA9ICItRGlzb19jb2Rlcz10cnVlLC1EaXNvX2NvZGVzPWZhbHNlLGlzby1jb2Rlcyxpc28tY29kZXMiCitQQUNLQUdFQ09ORklHW21vYmlsZV9icm9hZGJhbmRfcHJvdmlkZXJfaW5mb10gPSAiLURtb2JpbGVfYnJvYWRiYW5kX3Byb3ZpZGVyX2luZm89dHJ1ZSwtRG1vYmlsZV9icm9hZGJhbmRfcHJvdmlkZXJfaW5mbz1mYWxzZSxtb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8sbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvIgorCisjIGdvIGludHJvc3BlY3Rpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgbWlwc24zMiwgYnV0IHZhcGkgbmVlZHMgaXQKKyMKK0VYVFJBX09FTUVTT05fbWlwc2FyY2huMzJfYXBwZW5kID0gIiAtRHZhcGk9ZmFsc2UiCisKK0dUS0RPQ19NRVNPTl9PUFRJT04gPSAiZ3RrX2RvYyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29yay1tYW5hZ2VyLWFwcGxldC9uZXR3b3JrLW1hbmFnZXItYXBwbGV0XzEuMTYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29yay1tYW5hZ2VyLWFwcGxldC9uZXR3b3JrLW1hbmFnZXItYXBwbGV0XzEuMTYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2FjNTJjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrLW1hbmFnZXItYXBwbGV0L25ldHdvcmstbWFuYWdlci1hcHBsZXRfMS4xNi4wLmJiCkBAIC0wLDAgKzEsMjUgQEAKK1NVTU1BUlkgPSAiR1RLKyBhcHBsZXQgZm9yIE5ldHdvcmtNYW5hZ2VyIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitERVBFTkRTID0gImd0ayszIGxpYm5tYSBsaWJub3RpZnkgbGlic2VjcmV0IG5ldHdvcmttYW5hZ2VyIGlzby1jb2RlcyBuc3MiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGZlYXR1cmVzX2NoZWNrIGdub21lYmFzZSBnc2V0dGluZ3MgZ3RrLWljb24tY2FjaGUgZ2V0dGV4dAorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI5NjUyYzI3NTdlODVkNmNhYmE2NTc0MDVjZjc5NGZiZCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImQ2Zjk4YTQ1NWEyNzFlN2UxNjliNWQzNWQyOTBmNDg4MGY1MDNjZGY3NTkzMjUxNTcyYzkzMzA5NDFiNWMzZTUiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW21vZGVtbWFuYWdlcl0gPSAiLUR3d2FuPXRydWUsIC1Ed3dhbj1mYWxzZSwgbW9kZW1tYW5hZ2VyIgorUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItRHNlbGludXg9dHJ1ZSwgLURzZWxpbnV4PWZhbHNlLCBsaWJzZWxpbnV4IgorCitSREVQRU5EU18ke1BOfSA9KyAibmV0d29ya21hbmFnZXIiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vbm0tYXBwbGV0LyBcCisgICAgJHtkYXRhZGlyfS9saWJubWEvd2lmaS51aSBcCisgICAgJHtkYXRhZGlyfS9tZXRhaW5mbyBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmstbWFuYWdlci1hcHBsZXQvbmV0d29yay1tYW5hZ2VyLWFwcGxldF8xLjguMjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmstbWFuYWdlci1hcHBsZXQvbmV0d29yay1tYW5hZ2VyLWFwcGxldF8xLjguMjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4NTM0MDcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrLW1hbmFnZXItYXBwbGV0L25ldHdvcmstbWFuYWdlci1hcHBsZXRfMS44LjI0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotU1VNTUFSWSA9ICJHVEsrIGFwcGxldCBmb3IgTmV0d29ya01hbmFnZXIiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCi0KLURFUEVORFMgPSAiZ3RrKzMgbGlibm90aWZ5IGxpYnNlY3JldCBuZXR3b3JrbWFuYWdlciBpc28tY29kZXMgbnNzIgotCi1HTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgotaW5oZXJpdCBmZWF0dXJlc19jaGVjayBnbm9tZWJhc2UgZ3NldHRpbmdzIGd0ay1kb2MgZ3RrLWljb24tY2FjaGUgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGdldHRleHQKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNWMxYmYzNTFmZGU1YWRjMTIyMDAzNDU1NTA1MTYwNTAiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIxMThiYmI4YTUwMjc2MzRiNjJlOGI0NWIxNmNlYWZjZTc0NDQxNTI5Yzk5YmYyMzA2NTRlM2JlYzM4ZjlmYmJmIgotCi1HVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2djcl0gPSAiLURnY3I9dHJ1ZSwgLURnY3I9ZmFsc2UsIGdjciIKLVBBQ0tBR0VDT05GSUdbbW9kZW1tYW5hZ2VyXSA9ICItRHd3YW49dHJ1ZSwgLUR3d2FuPWZhbHNlLCBtb2RlbW1hbmFnZXIiCi1QQUNLQUdFQ09ORklHW21vYmlsZS1wcm92aWRlci1pbmZvXSA9ICItRG1vYmlsZV9icm9hZGJhbmRfcHJvdmlkZXJfaW5mbz10cnVlLCAtRG1vYmlsZV9icm9hZGJhbmRfcHJvdmlkZXJfaW5mbz1mYWxzZSwgbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvLG1vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mbyIKLVBBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLURzZWxpbnV4PXRydWUsIC1Ec2VsaW51eD1mYWxzZSwgbGlic2VsaW51eCIKLQotUkRFUEVORFNfJHtQTn0gPSsgIm5ldHdvcmttYW5hZ2VyIgotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2RhdGFkaXJ9L25tLWFwcGxldC8gXAotICAgICR7ZGF0YWRpcn0vbGlibm1hL3dpZmkudWkgXAotICAgICR7ZGF0YWRpcn0vbWV0YWluZm8gXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdpbXAvYmFibC9iYWJsXzAuMS43NC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1naW1wL2JhYmwvYmFibF8wLjEuNzQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ3MDk4NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1naW1wL2JhYmwvYmFibF8wLjEuNzQuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJCYWJsIGlzIGEgZHluYW1pYywgYW55IHRvIGFueSwgcGl4ZWwgZm9ybWF0IGNvbnZlcnNpb24gbGlicmFyeSIKK0xJQ0VOU0UgPSAiTEdQTC0zLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKKworR0lSX01FU09OX09QVElPTiA9ICJlbmFibGUtZ2lyIgorCitpbmhlcml0IHNldHVwdG9vbHMzIGdub21lYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworREVQRU5EUyArPSAibGNtcyIKKworIyBodHRwczovL2J1Z3MubGx2bS5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NTU1CitDRkxBR1NfYXBwZW5kX3Rvb2xjaGFpbi1jbGFuZ19taXBzYXJjaCA9ICIgLWZmcC1leGNlcHRpb24tYmVoYXZpb3I9aWdub3JlICIKK0NGTEFHU19hcHBlbmRfdG9vbGNoYWluLWNsYW5nX3Jpc2N2NjQgPSAiIC1mZnAtZXhjZXB0aW9uLWJlaGF2aW9yPWlnbm9yZSAiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9kb3dubG9hZC5naW1wLm9yZy9wdWIvJHtCUE59LzAuMS8ke0JQfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiZDAzMjg1M2YyNjc4YmM5NTA1NGMzOWQ0ZjAyMDQ1YzEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWE3MTBiNjk1MGRhMzdhZGE5NGNkOWUyMDQ2Y2JjZTI2ZGUxMjQ3M2RhMzJhN2I3OWI3ZDE0MzJmYzY2Y2UwZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ2ltcC9nZWdsL2dlZ2wvMDAwMS1tZXNvbi5idWlsZC1HaXZlLW5vdGUtaWYtc2RsMi13YXMtZm91bmQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ2ltcC9nZWdsL2dlZ2wvMDAwMS1tZXNvbi5idWlsZC1HaXZlLW5vdGUtaWYtc2RsMi13YXMtZm91bmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE0OWYxZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1naW1wL2dlZ2wvZ2VnbC8wMDAxLW1lc29uLmJ1aWxkLUdpdmUtbm90ZS1pZi1zZGwyLXdhcy1mb3VuZC5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDZiZWQxOTlhNzNhN2FmMzkzNDRjZjhlNzk5YjY2NTAxMTU1MzYwMGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorRGF0ZTogU2F0LCA4IEZlYiAyMDIwIDE0OjI5OjUyICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lc29uLmJ1aWxkOiBHaXZlIG5vdGUgaWYgc2RsMiB3YXMgZm91bmQKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworQ29uZmlndXJlIG91dHB1dCBjb25mdXNlZCBtZSBhIGJpdAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKy0tLQorIG1lc29uLmJ1aWxkIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCA5ZDViNDg0Li4yOTZiNWYzIDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtMzc0LDYgKzM3NCw3IEBAIG1lc3NhZ2UoJ1xuJy5qb2luKFsnJywKKyAnICBPcGVuRVhSOiAgICAgICAgIEAwQCcuZm9ybWF0KG9wZW5leHIuZm91bmQoKSksCisgJyAgcnN2ZzogICAgICAgICAgICBAMEAnLmZvcm1hdChsaWJyc3ZnLmZvdW5kKCkpLAorICcgIFNETDogICAgICAgICAgICAgQDBAJy5mb3JtYXQoc2RsMS5mb3VuZCgpKSwKKysnICBTREwyOiAgICAgICAgICAgIEAwQCcuZm9ybWF0KHNkbDIuZm91bmQoKSksCisgJyAgbGlicmF3OiAgICAgICAgICBAMEAnLmZvcm1hdChsaWJyYXcuZm91bmQoKSksCisgJyAgSmFzcGVyOiAgICAgICAgICBAMEAnLmZvcm1hdChqYXNwZXIuZm91bmQoKSksCisgJyAgYXYgbGliczogICAgICAgICBAMEAnLmZvcm1hdChhdmxpYnNfZm91bmQpLAorLS0gCisyLjIxLjAKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdpbXAvZ2VnbC9nZWdsXzAuNC4yMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1naW1wL2dlZ2wvZ2VnbF8wLjQuMjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E3M2U2NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1naW1wL2dlZ2wvZ2VnbF8wLjQuMjIuYmIKQEAgLTAsMCArMSw2MSBAQAorU1VNTUFSWSA9ICJHRUdMIChHZW5lcmljIEdyYXBoaWNzIExpYnJhcnkpIGlzIGEgZ3JhcGggYmFzZWQgaW1hZ2UgcHJvY2Vzc2luZyBmcmFtZXdvcmsiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjFhOGJmY2JjODUzMDRkZjQ1NGI2NWQzNzhiMjk5YzciCisKK0RFUEVORFMgPSAiIFwKKyAgICBpbnRsdG9vbC1uYXRpdmUgXAorICAgIGJhYmwgXAorICAgIGdsaWItMi4wIFwKKyAgICBwYW5nbyBcCisgICAgY2Fpcm8gXAorICAgIGV4cGF0IFwKKyAgICB6bGliIFwKKyAgICBcCisgICAganNvbi1nbGliIFwKKyIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKKworaW5oZXJpdCBmZWF0dXJlc19jaGVjayBnbm9tZWJhc2UgdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU0hQViA9ICIke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9IgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cHM6Ly9kb3dubG9hZC5naW1wLm9yZy9wdWIvJHtCUE59LyR7U0hQVn0vJHtCUH0udGFyLnh6IFwKKyAgICBmaWxlOi8vMDAwMS1tZXNvbi5idWlsZC1HaXZlLW5vdGUtaWYtc2RsMi13YXMtZm91bmQucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjE3NzZhYzI2NzkyZGUwZGUzYzNkNjgwODcyZTk0YjcyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE4ODhlYzQxZGZkMTlmZTI4MjczNzk1YzIyMDllZmMxYTU0MmJlNzQyNjkxNTYxODE2NjgzOTkwZGM2NDJjNjEiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJnZXhpdjIganBlZyBsaWJwbmcgbGlicnN2ZyBzZGwyIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAibGlicG5nIGxpYnJzdmciCisKK1BBQ0tBR0VDT05GSUdbamFzcGVyXSA9ICItRGphc3Blcj1lbmFibGVkLC1EamFzcGVyPWRpc2FibGVkLGphc3BlciIKK1BBQ0tBR0VDT05GSUdbZ2V4aXYyXSA9ICItRGdleGl2Mj1lbmFibGVkLC1EZ2V4aXYyPWRpc2FibGVkLGdleGl2MiIKK1BBQ0tBR0VDT05GSUdbZ3JhcGh2aXpdID0gIi1EZ3JhcGh2aXo9ZW5hYmxlZCwtRGdyYXBodml6PWRpc2FibGVkLGdyYXBodml6IgorUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItRGxpYmpwZWc9ZW5hYmxlZCwtRGxpYmpwZWc9ZGlzYWJsZWQsanBlZyIKK1BBQ0tBR0VDT05GSUdbbGNtc10gPSAiLURsY21zPWVuYWJsZWQsLURsY21zPWRpc2FibGVkLGxjbXMiCitQQUNLQUdFQ09ORklHW2xpYmF2XSA9ICItRGxpYmF2PWVuYWJsZWQsLURsaWJhdj1kaXNhYmxlZCxsaWJhdiIKK1BBQ0tBR0VDT05GSUdbbGlicG5nXSA9ICItRGxpYnBuZz1lbmFibGVkLC1EbGlicG5nPWRpc2FibGVkLGxpYnBuZyIKK1BBQ0tBR0VDT05GSUdbbGlicnN2Z10gPSAiLURsaWJyc3ZnPWVuYWJsZWQsLURsaWJyc3ZnPWRpc2FibGVkLGxpYnJzdmciCitQQUNLQUdFQ09ORklHW3NkbF0gPSAiLURzZGwxPWVuYWJsZWQsLURzZGwxPWRpc2FibGVkLHZpcnR1YWwvbGlic2RsIgorUEFDS0FHRUNPTkZJR1tzZGwyXSA9ICItRHNkbDI9ZW5hYmxlZCwtRHNkbDI9ZGlzYWJsZWQsdmlydHVhbC9saWJzZGwyIgorUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItRGxpYnRpZmY9ZW5hYmxlZCwtRGxpYnRpZmY9ZGlzYWJsZWQsdGlmZiIKK1BBQ0tBR0VDT05GSUdbd2VicF0gPSAiLUR3ZWJwPWVuYWJsZWQsLUR3ZWJwPWRpc2FibGVkLHdlYnAiCisKKyMgVGhlcmUgYXJlIGEgY291cGxlIG9mIG5vbi1zeW1saW5rIC5zbyBmaWxlcyBpbnN0YWxsZWQgaW50byBsaWJkaXIsIHdoaWNoIG5lZWQgdG8gZ28gaW50byBtYWluIHBhY2thZ2UKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7bGliZGlyfS8qLnNvIFwKKyAgICAke2xpYmRpcn0vZ2VnbC0ke1NIUFZ9LyouanNvbiBcCisgICAgJHtsaWJkaXJ9L2dlZ2wtJHtTSFBWfS8qLnNvIFwKKyIKK0ZJTEVTX1NPTElCU0RFViA9ICIke2xpYmRpcn0vbGliZ2VnbC0ke1NIUFZ9JHtTT0xJQlNERVZ9IgorCisjIEZhaWxzIHRvIGJ1aWxkIHdpdGggdGh1bWItMSAocWVtdWFybSkKKyMgZ2VnbC0wLjIuMC9vcGVyYXRpb25zL2NvbW1vbi9tYXR0aW5nLWdsb2JhbC5jOiBJbiBmdW5jdGlvbiAnbWF0dGluZ19wcm9jZXNzJzoKKyMgZ2VnbC0wLjIuMC9vcGVyYXRpb25zL2NvbW1vbi9tYXR0aW5nLWdsb2JhbC5jOjQ2MzoxOiBpbnRlcm5hbCBjb21waWxlciBlcnJvcjogaW4gcGF0Y2hfanVtcF9pbnNuLCBhdCBjZmdydGwuYzoxMjc1CitBUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ2ltcC9naW1wL2dpbXBfMi4xMC4xOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1naW1wL2dpbXAvZ2ltcF8yLjEwLjE4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNTA1NzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ2ltcC9naW1wL2dpbXBfMi4xMC4xOC5iYgpAQCAtMCwwICsxLDY0IEBACitTVU1NQVJZID0gIlRoZSBHSU1QIGlzIHRoZSBHTlUgSW1hZ2UgTWFuaXB1bGF0aW9uIFByb2dyYW0iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdpbXAub3JnIgorU0VDVElPTiA9ICJ4MTEvZ3JhcGhpY3MiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzY3ODk1N2IwYzhlOTY0YWE2YzcwZmQ3NzY0MWE3MWUiCisKK0RFUEVORFMgPSAiIFwKKyAgICBnZGstcGl4YnVmLW5hdGl2ZSBcCisgICAgaW50bHRvb2wtbmF0aXZlIFwKKyAgICBsaWJ4c2x0LW5hdGl2ZSBcCisgICAgZ2VnbC1uYXRpdmUgXAorICAgIGRidXMtZ2xpYiBcCisgICAgZ3RrKyBcCisgICAgYmFibCBcCisgICAgZ2VnbCBcCisgICAgbGlibXlwYWludCBcCisgICAgbXlwYWludC1icnVzaGVzLTEuMCBcCisgICAgZ2V4aXYyIFwKKyAgICBqcGVnIFwKKyAgICBsaWJwbmcgXAorICAgIGxpYmV4aWYgXAorICAgIHRpZmYgXAorICAgIGxjbXMgXAorICAgIHBvcHBsZXIgXAorICAgIHBvcHBsZXItZGF0YSBcCisgICAgamFzcGVyIFwKKyAgICBiemlwMiBcCisgICAgbGliZ3VkZXYgXAorICAgIGxpYm1uZyBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnbGlieG11IGxpYnhwbScsICcnLCBkKX0gXAorIgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJleGVjaW5mbyIKKworaW5oZXJpdCBmZWF0dXJlc19jaGVjayBnbm9tZWJhc2UgZ3RrLWljb24tY2FjaGUgZ3RrLWRvYyBtaW1lLXhkZworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTSFBWID0gIiR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0iCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9kb3dubG9hZC5naW1wLm9yZy9wdWIvJHtCUE59L3Yke1NIUFZ9LyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiMDk2ZDA0ZmZiMmM0NTU5Y2IyMTUyZjUwN2ZmMzFjOWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjViZmUxMTFlOGVlYmZmZDNkZGUzMDE2Y2NiNTA3Zjk5NDhkMjY2M2Q5NDk3Y2I0MzhkOWJiNjA5ZTExZDcxNiIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1weXRob24gXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC13ZWJraXQgXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC13bWYiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsX21pcHNhcmNoID0gIiAtLWRpc2FibGUtdmVjdG9yLWljb25zIgorRVhUUkFfT0VDT05GX2FwcGVuZF90b29sY2hhaW4tY2xhbmdfYXJtID0gIiAtLWRpc2FibGUtdmVjdG9yLWljb25zIgorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworICAgIGZpbmQgJHtCfSAtbmFtZSBNYWtlZmlsZSB8IHhhcmdzIHNlZCAtaSBzOictSSQoaW5jbHVkZWRpciknOictSS4nOmcKKyAgICBmaW5kICR7Qn0gLW5hbWUgTWFrZWZpbGUgfCB4YXJncyBzZWQgLWkgczonLUkvdXNyL2luY2x1ZGUnOictSSR7U1RBR0lOR19JTkNESVJ9JzpnCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAjIExldCBuYXRpdmUgYmFibC9nZWdsIGZpbmQgdGhlaXIgcGx1Z2lucworICAgIGV4cG9ydCBCQUJMX1BBVEg9YGZpbmQgJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IC1tYXhkZXB0aCAxIC1uYW1lICdiYWJsLSonYAorICAgIGV4cG9ydCBHRUdMX1BBVEg9YGZpbmQgJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IC1tYXhkZXB0aCAxIC1uYW1lICdnZWdsLSonYAorfQorCitGSUxFU18ke1BOfSAgKz0gIiR7ZGF0YWRpcn0vbWV0YWluZm8iCisKK1JERVBFTkRTXyR7UE59ICs9ICJteXBhaW50LWJydXNoZXMtMS4wIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdpbXAvbXlwYWludC9saWJteXBhaW50X2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1naW1wL215cGFpbnQvbGlibXlwYWludF9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmNhODBmMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1naW1wL215cGFpbnQvbGlibXlwYWludF9naXQuYmIKQEAgLTAsMCArMSwyNCBAQAorU1VNTUFSWSA9ICJsaWJteXBhaW50IGlzIGEgbGlicmFyeSBmb3IgbWFraW5nIGJydXNoc3Ryb2tlcyIKK0xJQ0VOU0UgPSAiSVNDIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OWQxMzIwM2FiNDAxM2U1YTE0ZGQ2MjEwNWY3NWQ1OGIiCisKK0RFUEVORFMgPSAiIFwKKyAgICBnbGliLTIuMC1uYXRpdmUgXAorICAgIGludGx0b29sLW5hdGl2ZSBcCisgICAgZ2xpYi0yLjAgXAorICAgIGJhYmwgXAorICAgIGpzb24tYyBcCisiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdvYmplY3QtaW50cm9zcGVjdGlvbiBnZXR0ZXh0IHB5dGhvbjNuYXRpdmUKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL215cGFpbnQvbGlibXlwYWludC5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPWxpYm15cGFpbnQtdjEiCitTUkNSRVYgPSAiNDc3Y2I5NGI1OTYwMzViNTRhMjU1ZmFhZjk1ZDEzZjZhOGVlMzYxOSIKK1BWID0gIjEuNC4wIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKyAgICAjIGF1dG9nZW4gdXNlcyBweXRob24yIHNvIGdlbmVyYXRlIGhlYWRlcnMgb3Vyc2VsdmVzCisgICAgY2QgJHtTfQorICAgIHB5dGhvbjMgZ2VuZXJhdGUucHkgbXlwYWludC1icnVzaC1zZXR0aW5ncy1nZW4uaCBicnVzaHNldHRpbmdzLWdlbi5oCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ2ltcC9teXBhaW50L215cGFpbnQtYnJ1c2hlcy0xLjBfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdpbXAvbXlwYWludC9teXBhaW50LWJydXNoZXMtMS4wX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGQwOGZlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdpbXAvbXlwYWludC9teXBhaW50LWJydXNoZXMtMS4wX2dpdC5iYgpAQCAtMCwwICsxLDEyIEBACitTVU1NQVJZID0gIk15UGFpbnQgYnJ1c2hlcyIKK0xJQ0VOU0UgPSAiQ0MwLTEuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY1ZDM2MTY4NTJkYmY3YjFhNmQ0YjUzYjAwNjI2MDMyIgorCitpbmhlcml0IGF1dG90b29scyBhbGxhcmNoCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9teXBhaW50L215cGFpbnQtYnJ1c2hlcy5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPXYxLjMueCIKK1NSQ1JFViA9ICJiZTlmZGY5ZWY2YzU0ZTI5Yzc0OTk5OTJmMDRlMjkxMTQ4NTdiM2ZjIgorUFYgPSAiMS4zLjArZ2l0JHtTUkNQVn0iCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9teXBhaW50LWRhdGEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZXZpbmNlL2V2aW5jZV8zLjM0LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZXZpbmNlL2V2aW5jZV8zLjM0LjIuYmIKaW5kZXggOGY2NjljOS4uYjc5MmQ0ZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2V2aW5jZS9ldmluY2VfMy4zNC4yLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ldmluY2UvZXZpbmNlXzMuMzQuMi5iYgpAQCAtMTYsNyArMTYsNyBAQAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCd4MTEnLCdnbm9tZS1kZXNrdG9wMycsJycsZCl9IFwKICIKIAotaW5oZXJpdCBnbm9tZWJhc2UgaXRzdG9vbCBnbm9tZS1oZWxwIHBrZ2NvbmZpZyBnc2V0dGluZ3MgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnZXR0ZXh0IGZlYXR1cmVzX2NoZWNrCitpbmhlcml0IGdub21lYmFzZSBpdHN0b29sIGdub21lLWhlbHAgcGtnY29uZmlnIGdzZXR0aW5ncyBnb2JqZWN0LWludHJvc3BlY3Rpb24gdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdldHRleHQgZmVhdHVyZXNfY2hlY2sgbWltZS14ZGcKIAogU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiOWU5ZTgyZmE4ZjYwNDVhZDc4MTcxNTdkOTMzNWQxODUiCiBTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIzY2MwOTU1ZjExMjA0ZTNhMmRiMWM3YWI5OWI4NjY2OTI3NDk1OTIyNTc0ODViODczMDQxMzRhZDY5ZGEwNjE3IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2V2b2x1dGlvbi1kYXRhLXNlcnZlci9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2V2b2x1dGlvbi1kYXRhLXNlcnZlci9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIuaW5jCmluZGV4IDFlYWUzZGYuLjRkYTNmODIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIvZXZvbHV0aW9uLWRhdGEtc2VydmVyLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZXZvbHV0aW9uLWRhdGEtc2VydmVyL2V2b2x1dGlvbi1kYXRhLXNlcnZlci5pbmMKQEAgLTksNyArOSw3IEBACiAKIGluaGVyaXQgZ25vbWViYXNlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgogCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI2ODdkNmQ3MjQyZDYwYThhM2EzMzIyZWVlNmE0NWRjYSIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImQyZGZhYzVjYTc2ZTA1ZTg3MmZiYjA2YTU3Y2FlMGRhY2U2NDgxOGM0ZGNlMWU5MDZiMDM5Njg4ODI3MGMzYTkiCi1QViA9ICIzLjM0LjMiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIyMzI5MzU1NGU5ZDkyYzZjMGM3OGI1NTY4YjI4NmVmZCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjk4NWM0YjRiNjEzYzUwYzk5OWE0Y2E1ZTlkNTI0NzhhY2JlYTg1ZTFlOTliYWIzYThiNmU1N2JhN2VhY2U4ZjMiCitQViA9ICIzLjM0LjQiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9maWxlLXJvbGxlci9maWxlLXJvbGxlcl8zLjMyLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZmlsZS1yb2xsZXIvZmlsZS1yb2xsZXJfMy4zMi4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWI5NjY4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9maWxlLXJvbGxlci9maWxlLXJvbGxlcl8zLjMyLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIkFuIGFyY2hpdmUgbWFuYWdlciB1dGlsaXR5IGZvciB0aGUgIEdOT01FIEVudmlyb25tZW50IgotTElDRU5TRT0iR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKLQotR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKLQotREVQRU5EUyA9ICIgXAotICAgIGdsaWItMi4wLW5hdGl2ZSBcCi0gICAgZ3RrKzMgXAotICAgIGxpYmFyY2hpdmUgXAotICAgIGxpYm5vdGlmeSBcCi0iCi0KLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBpdHN0b29sIGdub21lLWhlbHAgZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNWUwOThiYjI1NGQzNGY0OGE5YjU3NjFiNDY4ZjQyNDAiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJiZTExMWZiODc3ZGMxZWI0ODdlYzVkNmUyYjcyYmE1ZGVmZTFhYjgwMzNhNmE2YjliOTA0NGEyYTc3ODdlMjJhIgotCi1QQUNLQUdFQ09ORklHW25hdXRpbHVzXSA9ICItRG5hdXRpbHVzLWFjdGlvbnM9dHJ1ZSwtRG5hdXRpbHVzLWFjdGlvbnM9ZmFsc2UsbmF1dGlsdXMiCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKLSAgICAke2RhdGFkaXJ9L21ldGFpbmZvIFwKLSAgICAke2xpYmRpcn0vbmF1dGlsdXMgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2ZpbGUtcm9sbGVyL2ZpbGUtcm9sbGVyXzMuMzIuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9maWxlLXJvbGxlci9maWxlLXJvbGxlcl8zLjMyLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk1NzM1YwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9maWxlLXJvbGxlci9maWxlLXJvbGxlcl8zLjMyLjQuYmIKQEAgLTAsMCArMSwyOCBAQAorU1VNTUFSWSA9ICJBbiBhcmNoaXZlIG1hbmFnZXIgdXRpbGl0eSBmb3IgdGhlICBHTk9NRSBFbnZpcm9ubWVudCIKK0xJQ0VOU0U9IkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCisKK0RFUEVORFMgPSAiIFwKKyAgICBnbGliLTIuMC1uYXRpdmUgXAorICAgIGd0ayszIFwKKyAgICBsaWJhcmNoaXZlIFwKKyAgICBsaWJub3RpZnkgXAorIgorCitpbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgaXRzdG9vbCBnbm9tZS1oZWxwIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIG1pbWUteGRnCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjIxOTgyYjhkMjk4Y2IyOTk0YTk5NDk0Mzk5ZGNiMmQ1IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMWIzYjJjYmZjYjQ0NGUwZDE1MGJmZDA2M2FkZDlkNTE4MWM4YWIyNGYwNTkzZTVhODg5NDM5OTI5NzIxNDAxNyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3BhY2thZ2VraXQnLCAnJywgZCl9IgorCitQQUNLQUdFQ09ORklHW25hdXRpbHVzXSA9ICItRG5hdXRpbHVzLWFjdGlvbnM9dHJ1ZSwtRG5hdXRpbHVzLWFjdGlvbnM9ZmFsc2UsbmF1dGlsdXMiCitQQUNLQUdFQ09ORklHW3BhY2thZ2VraXRdID0gIi1EcGFja2FnZWtpdD10cnVlLC1EcGFja2FnZWtpdD1mYWxzZSwiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKKyAgICAke2RhdGFkaXJ9L21ldGFpbmZvIFwKKyAgICAke2xpYmRpcn0vbmF1dGlsdXMgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dlZGl0L2dlZGl0XzMuMzQuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nZWRpdC9nZWRpdF8zLjM0LjEuYmIKaW5kZXggMjA4MDZiZC4uODUwYmE0ZCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dlZGl0L2dlZGl0XzMuMzQuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2VkaXQvZ2VkaXRfMy4zNC4xLmJiCkBAIC0xOSw3ICsxOSw3IEBACiAgICAgZ3Rrc291cmNldmlldzQgXAogIgogCi1pbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgaXRzdG9vbCBnbm9tZS1oZWxwIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIHZhbGEgZ2V0dGV4dCBmZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KK2luaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBpdHN0b29sIGdub21lLWhlbHAgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgdmFsYSBnZXR0ZXh0IGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBtaW1lLXhkZwogCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2VvY29kZS1nbGliL2dlb2NvZGUtZ2xpYl8zLjI2LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2VvY29kZS1nbGliL2dlb2NvZGUtZ2xpYl8zLjI2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjMjE4ZjMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dlb2NvZGUtZ2xpYi9nZW9jb2RlLWdsaWJfMy4yNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGNvbnZlbmllbmNlIGxpYnJhcnkgZm9yIHRoZSBnZW9jb2RpbmciCi0KLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTU1Y2E4MTdjY2I3ZDViNWI2NjM1NTY5MGU5YWJjNjA1IgotCi1HTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgotR0lSX01FU09OX09QVElPTiA9ICJlbmFibGUtaW50cm9zcGVjdGlvbiIKLUdUS0RPQ19NRVNPTl9PUFRJT04gPSAiZW5hYmxlLWd0ay1kb2MiCi0KLWluaGVyaXQgZ25vbWViYXNlIGdvYmplY3QtaW50cm9zcGVjdGlvbiBnZXR0ZXh0IGd0ay1kb2MgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLURFUEVORFMgPSAiIFwKLSAgICBqc29uLWdsaWIgXAotICAgIGxpYnNvdXAtMi40IFwKLSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMjEwOTQ0OTRlNjZjODYzNjhhZGQ2YTU1YmY0ODAwNDkiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI1YmFhNmFiNzZhNzZjOWZjNTY3ZTRjMzJjM2FmMmNkMWQxNzg0OTM0YzI1NWJjNWE2MmM1MTJlNmFmNmJkZTFjIgotCi1FWFRSQV9PRU1FU09OID0gIi1EZW5hYmxlLWluc3RhbGxlZC10ZXN0cz1mYWxzZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nZW9jb2RlLWdsaWIvZ2VvY29kZS1nbGliXzMuMjYuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nZW9jb2RlLWdsaWIvZ2VvY29kZS1nbGliXzMuMjYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGYzYzI3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dlb2NvZGUtZ2xpYi9nZW9jb2RlLWdsaWJfMy4yNi4yLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiQSBjb252ZW5pZW5jZSBsaWJyYXJ5IGZvciB0aGUgZ2VvY29kaW5nIgorCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT01NWNhODE3Y2NiN2Q1YjViNjYzNTU2OTBlOWFiYzYwNSIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKK0dJUl9NRVNPTl9PUFRJT04gPSAiZW5hYmxlLWludHJvc3BlY3Rpb24iCitHVEtET0NfTUVTT05fT1BUSU9OID0gImVuYWJsZS1ndGstZG9jIgorCitpbmhlcml0IGdub21lYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ2V0dGV4dCBndGstZG9jIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCitERVBFTkRTID0gIiBcCisgICAganNvbi1nbGliIFwKKyAgICBsaWJzb3VwLTIuNCBcCisiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImUxZWYxNDBhMTFhNTQzNjQzZDE3MGRjNzAxMDA5ZTM5IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMDFmZTg0Y2ZhMGJlNTBjNmU0MDExNDdhMmJjNWUyZjE1NzQzMjZlMjI5M2I1NWM2OTg3OWJlM2U4MjAzMGZkMSIKKworRVhUUkFfT0VNRVNPTiA9ICItRGVuYWJsZS1pbnN0YWxsZWQtdGVzdHM9ZmFsc2UiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2hleC9naGV4XzMuMTguNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9naGV4L2doZXhfMy4xOC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMzNlYmQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2hleC9naGV4XzMuMTguNC5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIkdIZXggLSBhIGhleCBlZGl0b3IgZm9yIEdOT01FIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgorCitERVBFTkRTID0gIiBcCisgICAgZ2xpYi0yLjAtbmF0aXZlIFwKKyAgICBndGsrMyBcCisiCisKK2luaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBndGstaWNvbi1jYWNoZSBnbm9tZS1oZWxwIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjdlNmVkODA4NzY2YmMxODI4NWJkYzY5OTliZGYwZjE1IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYzJkOWMxOTFmZjViY2U4MzY2MTg3Nzk4NjViZWU0MDU5ZGI4MWEzYTBkZmYzOGJkYTNjYzdhOWU3Mjk2MzdjMCIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vbWV0YWluZm8iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2pzL2dqc18xLjU4LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2pzL2dqc18xLjU4LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViN2QzMjMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dqcy9nanNfMS41OC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJKYXZhc2NyaXB0IGJpbmRpbmdzIGZvciBHTk9NRSIKLUxJQ0VOU0UgPSAiTUlUICYgTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiIFwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9YmViMjljZjE3ZmFiZTczNmYwNjM5YjA5ZWU2ZTc2ZmEgXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEw7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKLSIKLQotR05PTUVCQVNFQlVJTERDTEFTUyA9ICJhdXRvdG9vbHMiCi0KLURFUEVORFMgPSAibW96anMgZ3RrKzMiCi0KLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnb2JqZWN0LWludHJvc3BlY3Rpb24gdmFsYSBnZXR0ZXh0IGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzODVmNGJhYTI2Njk5MWEwOGQzZTQyNWJjNjllZTk2MiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjI2MWEzZjY2NmM3NzFkNzc0NDk2NWZlNzFiODA0ZmMyYzNhM2Q0NmE4ZTNlOGQ0ZjdlZDVlZjk3OTY3ZWJkNWYiCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1EaXNhYmxlLXRlc3RzLW9uLWhvc3QucGF0Y2giCi0KLSMgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGlzIG1hbmRhdG9yeSBhbmQgY2Fubm90IGJlIGNvbmZpZ3VyZWQKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YSIKLVVOS05PV05fQ09ORklHVVJFX1dISVRFTElTVF9hcHBlbmQgPSAiIC0tZW5hYmxlLWludHJvc3BlY3Rpb24gLS1kaXNhYmxlLWludHJvc3BlY3Rpb24iCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0td2l0aG91dC1kYnVzLXRlc3RzIFwKLSAgICAtLWRpc2FibGUtaW5zdGFsbGVkLXRlc3RzIFwKLSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyBtYWtlIGNvbmZpZ3VyZSBmaW5kIGdvYmplY3QtaW50cm9zcGVjdGlvbiB0ZXN0IGNvZGUuIEFsdGhvdWdoIHdlIHNldAotICAgICMgLS1kaXNhYmxlLWluc3RhbGxlZC10ZXN0cyBnanMgYnVpbGRzIHRoZW0KLSAgICBzZWQgLWkgJ3N8OiRHSV9EQVRBRElSfDoke1NUQUdJTkdfRElSX05BVElWRX0kR0lfREFUQURJUnxnJyAke1N9L2NvbmZpZ3VyZS5hYwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9nanMtMS4wL2xzYW4iCi0KLVBBQ0tBR0VTID0rICIke1BOfS12YWxncmluZCIKLUZJTEVTXyR7UE59LXZhbGdyaW5kID0gIiR7ZGF0YWRpcn0vZ2pzLTEuMC92YWxncmluZCIKLVJTRVBFTkRTXyR7UE59LXZhbGdyaW5kICs9ICJ2YWxncmluZCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nanMvZ2pzXzEuNTguNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nanMvZ2pzXzEuNTguNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmU5MzU1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dqcy9nanNfMS41OC42LmJiCkBAIC0wLDAgKzEsMzcgQEAKK1NVTU1BUlkgPSAiSmF2YXNjcmlwdCBiaW5kaW5ncyBmb3IgR05PTUUiCitMSUNFTlNFID0gIk1JVCAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gIiBcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWJlYjI5Y2YxN2ZhYmU3MzZmMDYzOWIwOWVlNmU3NmZhIFwKKyAgICBmaWxlOi8vQ09QWUlORy5MR1BMO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCisiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAiYXV0b3Rvb2xzIgorCitERVBFTkRTID0gIm1vempzIGd0ayszIgorCitpbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHZhbGEgZ2V0dGV4dCBmZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiN2Y2NzFiM2ZjM2IxNDlhZGNlMjYzNDk1NTQwZTdmNTAiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIxODY0YmYyMmY0ZjVlNDEwNzgzMmI0YzU0MTI3Y2NlODUwOWQzN2NjYzE0YWJkMjVhNjg3OGM3ZmZlZDk2NjQwIgorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRGlzYWJsZS10ZXN0cy1vbi1ob3N0LnBhdGNoIgorCisjIGdvYmplY3QtaW50cm9zcGVjdGlvbiBpcyBtYW5kYXRvcnkgYW5kIGNhbm5vdCBiZSBjb25maWd1cmVkCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEiCitVTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1RfYXBwZW5kID0gIiAtLWVuYWJsZS1pbnRyb3NwZWN0aW9uIC0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLXdpdGhvdXQtZGJ1cy10ZXN0cyBcCisgICAgLS1kaXNhYmxlLWluc3RhbGxlZC10ZXN0cyBcCisiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICMgbWFrZSBjb25maWd1cmUgZmluZCBnb2JqZWN0LWludHJvc3BlY3Rpb24gdGVzdCBjb2RlLiBBbHRob3VnaCB3ZSBzZXQKKyAgICAjIC0tZGlzYWJsZS1pbnN0YWxsZWQtdGVzdHMgZ2pzIGJ1aWxkcyB0aGVtCisgICAgc2VkIC1pICdzfDokR0lfREFUQURJUnw6JHtTVEFHSU5HX0RJUl9OQVRJVkV9JEdJX0RBVEFESVJ8ZycgJHtTfS9jb25maWd1cmUuYWMKK30KKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZ2pzLTEuMC9sc2FuIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdmFsZ3JpbmQiCitGSUxFU18ke1BOfS12YWxncmluZCA9ICIke2RhdGFkaXJ9L2dqcy0xLjAvdmFsZ3JpbmQiCitSU0VQRU5EU18ke1BOfS12YWxncmluZCArPSAidmFsZ3JpbmQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtYmx1ZXRvb3RoL2dub21lLWJsdWV0b290aF8zLjM0LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtYmx1ZXRvb3RoL2dub21lLWJsdWV0b290aF8zLjM0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlNjU4N2IuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWJsdWV0b290aC9nbm9tZS1ibHVldG9vdGhfMy4zNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJHTk9NRSBibHVldG9vdGggbWFuYWdlciIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0iCi0KLVNFQ1RJT04gPSAieDExL2dub21lIgotCi1ERVBFTkRTID0gInVkZXYgZ3RrKzMgbGlibm90aWZ5IGxpYmNhbmJlcnJhIGJsdWV6NSIKLQotR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKLUdUS0RPQ19NRVNPTl9PUFRJT04gPSAiZ3RrX2RvYyIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWljb24tY2FjaGUgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24gdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLSMgZ3RrLWljb24tY2FjaGUgYmJjbGFzcyB3aWxsIHRha2UgY2FyZSBvZiB0aGlzIGZvciB1cy4KLUVYVFJBX09FTUVTT04gPSAiLURpY29uX3VwZGF0ZT1mYWxzZSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMGM1NjdlMTI0YTUyZThkZGMzMWM4YmVkMGMzZTU3YTEiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJlODY3ZTY3NDIzZTFkYzc4YzU2YzJlYTExZGVjMDY2Y2UwMjU0MjM4ZDU1OWU0Nzc3YzgwZmEyOTM1ZWI2YmFmIgotCi1SREVQRU5EU18ke1BOfSArPSAiYmx1ZXo1IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWJsdWV0b290aC9nbm9tZS1ibHVldG9vdGhfMy4zNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWJsdWV0b290aC9nbm9tZS1ibHVldG9vdGhfMy4zNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3Yzg5ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtYmx1ZXRvb3RoL2dub21lLWJsdWV0b290aF8zLjM0LjEuYmIKQEAgLTAsMCArMSwyNCBAQAorU1VNTUFSWSA9ICJHTk9NRSBibHVldG9vdGggbWFuYWdlciIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCisiCisKK1NFQ1RJT04gPSAieDExL2dub21lIgorCitERVBFTkRTID0gInVkZXYgZ3RrKzMgbGlibm90aWZ5IGxpYmNhbmJlcnJhIGJsdWV6NSIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKK0dUS0RPQ19NRVNPTl9PUFRJT04gPSAiZ3RrX2RvYyIKKworaW5oZXJpdCBmZWF0dXJlc19jaGVjayBnbm9tZWJhc2UgZ3RrLWljb24tY2FjaGUgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24gdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKKyMgZ3RrLWljb24tY2FjaGUgYmJjbGFzcyB3aWxsIHRha2UgY2FyZSBvZiB0aGlzIGZvciB1cy4KK0VYVFJBX09FTUVTT04gPSAiLURpY29uX3VwZGF0ZT1mYWxzZSIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMDliNmJhYjdjZWFhZmIzNWRhNzY2YTU0NzZmYmM0NjYiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIzZWM5MTA3NmMyODIyY2QxZjlhYmRjOGUyNzY2M2MzYmRhNGM5YzhhN2E5NzczZjllOTJiZmJmMmI3NDVkMzg2IgorCitSREVQRU5EU18ke1BOfSArPSAiYmx1ZXo1IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWNvbnRyb2wtY2VudGVyL2dub21lLWNvbnRyb2wtY2VudGVyXzMuMzQuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1jb250cm9sLWNlbnRlci9nbm9tZS1jb250cm9sLWNlbnRlcl8zLjM0LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllNmU5MmEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWNvbnRyb2wtY2VudGVyL2dub21lLWNvbnRyb2wtY2VudGVyXzMuMzQuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLVNVTU1BUlkgPSAiR05PTUUgU2V0dGluZ3MiCi1ERVNDUklQVElPTiA9ICJHTk9NRSBTZXR0aW5ncyBpcyBHTk9NRSdzIG1haW4gaW50ZXJmYWNlIGZvciBjb25maWd1cmF0aW9uIG9mIHZhcmlvdXMgYXNwZWN0cyBvZiB5b3VyIGRlc2t0b3AiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzU4NTk5ODk1NDVlMzc5NjhhOTliNjMxZWY0MjcyMmUiCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi0KLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnZXR0ZXh0IHZhbGEgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGJhc2gtY29tcGxldGlvbiBmZWF0dXJlc19jaGVjawotCi1ERVBFTkRTID0gIiBcCi0gICAgZ2RrLXBpeGJ1Zi1uYXRpdmUgXAotICAgIGNvbG9yZC1ndGsgXAotICAgIHVkaXNrczIgXAotICAgIHVwb3dlciBcCi0gICAgcG9sa2l0IFwKLSAgICBwdWxzZWF1ZGlvIFwKLSAgICBhY2NvdW50c3NlcnZpY2UgXAotICAgIHNhbWJhIFwKLSAgICBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIFwKLSAgICBnbm9tZS1zZXR0aW5ncy1kYWVtb24gXAotICAgIGdub21lLWRlc2t0b3AzIFwKLSAgICBnbm9tZS1vbmxpbmUtYWNjb3VudHMgXAotICAgIG5ldHdvcmstbWFuYWdlci1hcHBsZXQgXAotICAgIGdub21lLWJsdWV0b290aCBcCi0gICAgZ3JpbG8gXAotICAgIGxpYmd0b3AgXAotICAgIGdzb3VuZCBcCi0gICAgbGlicHdxdWFsaXR5IFwKLSIKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTICs9ICJwb2xraXQgcHVsc2VhdWRpbyBzeXN0ZW1kIHgxMSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYTk2MGE3ZDNlOWYxYzRmMzQxYmFlNDJkYTdmYmYyM2EiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJhODVmZmFmNTg4NWE4YzcwYzAxOTAxM2Q3Mzc5MmJmNGNjNzVmNjQzZTk3ZjZlOGI1MmY3ZmJiYTlmN2E5MTE0IgotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtQWRkLW1lc29uLW9wdGlvbi10by1wYXNzLXN5c3Jvb3QucGF0Y2giCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJpYnVzICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2lidXNdID0gIi1EaWJ1cz10cnVlLCAtRGlidXM9ZmFsc2UsIGlidXMiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1Ed2F5bGFuZD10cnVlLCAtRHdheWxhbmQ9ZmFsc2UsIHdheWxhbmQiCi0KLSMgT25jZSB3ZSBoYXZlIChsaWIpY2hlZXNlIHdlIGNhbiBtYWtlIGNoZWVzZSBhIFBBQ0tBR0VDT05GSUcKLUVYVFJBX09FTUVTT04gPSAiIFwKLSAgICAtRG9lX3N5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSBcCi0gICAgLURjaGVlc2U9ZmFsc2UgXAotIgotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMSBcCi0gICAgJHtkYXRhZGlyfS9nbm9tZS1zaGVsbCBcCi0gICAgJHtkYXRhZGlyfS9tZXRhaW5mbyBcCi0iCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9nZXR0ZXh0IgotCi1SREVQRU5EU18ke1BOfSArPSAiZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1jb250cm9sLWNlbnRlci9nbm9tZS1jb250cm9sLWNlbnRlcl8zLjM0LjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtY29udHJvbC1jZW50ZXIvZ25vbWUtY29udHJvbC1jZW50ZXJfMy4zNC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmOGVjMzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtY29udHJvbC1jZW50ZXIvZ25vbWUtY29udHJvbC1jZW50ZXJfMy4zNC41LmJiCkBAIC0wLDAgKzEsNTUgQEAKK1NVTU1BUlkgPSAiR05PTUUgU2V0dGluZ3MiCitERVNDUklQVElPTiA9ICJHTk9NRSBTZXR0aW5ncyBpcyBHTk9NRSdzIG1haW4gaW50ZXJmYWNlIGZvciBjb25maWd1cmF0aW9uIG9mIHZhcmlvdXMgYXNwZWN0cyBvZiB5b3VyIGRlc2t0b3AiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzU4NTk5ODk1NDVlMzc5NjhhOTliNjMxZWY0MjcyMmUiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCisKK2luaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnZXR0ZXh0IHZhbGEgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGJhc2gtY29tcGxldGlvbiBmZWF0dXJlc19jaGVjaworCitERVBFTkRTID0gIiBcCisgICAgZ2RrLXBpeGJ1Zi1uYXRpdmUgXAorICAgIGNvbG9yZC1ndGsgXAorICAgIHVkaXNrczIgXAorICAgIHVwb3dlciBcCisgICAgcG9sa2l0IFwKKyAgICBwdWxzZWF1ZGlvIFwKKyAgICBhY2NvdW50c3NlcnZpY2UgXAorICAgIHNhbWJhIFwKKyAgICBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIFwKKyAgICBnbm9tZS1zZXR0aW5ncy1kYWVtb24gXAorICAgIGdub21lLWRlc2t0b3AzIFwKKyAgICBnbm9tZS1vbmxpbmUtYWNjb3VudHMgXAorICAgIGxpYm5tYSBcCisgICAgZ25vbWUtYmx1ZXRvb3RoIFwKKyAgICBncmlsbyBcCisgICAgbGliZ3RvcCBcCisgICAgZ3NvdW5kIFwKKyAgICBsaWJwd3F1YWxpdHkgXAorIgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgKz0gInBvbGtpdCBwdWxzZWF1ZGlvIHN5c3RlbWQgeDExIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJjYTkyMTUxYTJhNThjYzNlMGE3M2U4ODM3OWU5NmNlMiIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImIzMGQwYWZiOTkyNTJmMTUwZTM3ZDVjYTRiYzgzYjg5YmY0YWE2ZDE4YzVkMzY3MjMwMDUzMjc4NjM0ZTBjNDciCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1BZGQtbWVzb24tb3B0aW9uLXRvLXBhc3Mtc3lzcm9vdC5wYXRjaCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImlidXMgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsIGQpfSIKK1BBQ0tBR0VDT05GSUdbaWJ1c10gPSAiLURpYnVzPXRydWUsIC1EaWJ1cz1mYWxzZSwgaWJ1cyIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLUR3YXlsYW5kPXRydWUsIC1Ed2F5bGFuZD1mYWxzZSwgd2F5bGFuZCIKKworIyBPbmNlIHdlIGhhdmUgKGxpYiljaGVlc2Ugd2UgY2FuIG1ha2UgY2hlZXNlIGEgUEFDS0FHRUNPTkZJRworRVhUUkFfT0VNRVNPTiA9ICIgXAorICAgIC1Eb2Vfc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9IFwKKyAgICAtRGNoZWVzZT1mYWxzZSBcCisiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKKyAgICAke2RhdGFkaXJ9L2dub21lLXNoZWxsIFwKKyAgICAke2RhdGFkaXJ9L21ldGFpbmZvIFwKKyIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2dldHRleHQiCisKK1JERVBFTkRTXyR7UE59ICs9ICJnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4zNC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4zNC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGQxMWFhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMzQuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiR05PTUUgbGlicmFyeSBmb3IgcmVhZGluZyAuZGVza3RvcCBmaWxlcyIKLVNFQ1RJT04gPSAieDExL2dub21lIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKLQotQlBOID0gImdub21lLWRlc2t0b3AiCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi0KLWluaGVyaXQgZ25vbWViYXNlIGl0c3Rvb2wgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZmVhdHVyZXNfY2hlY2sKLQotIyBnb2JqZWN0LWludHJvc3BlY3Rpb24gaXMgbWFuZGF0b3J5IGFuZCBjYW5ub3QgYmUgY29uZmlndXJlZAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gImdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIgotVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUX2FwcGVuZCA9ICIgaW50cm9zcGVjdGlvbiIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiY2RjZDMwMDZmNTVkOGM4ODEzMzE1YmVmNmY0ZjZiNzEiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJhY2MyZWZjODQ3NTc0ZmQyMWQ4ZjIwMDY3OWYxMTFjMmIxZWI1YWUyYzA0MWUwMDM0ZTdjMTg0NTBhN2Q5YzZkIgotCi1TUkNfVVJJICs9ICIgXAotICAgIGZpbGU6Ly9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1hc3N1bWUtdGltZV90LWlzLWxvbmcucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLW1lc29uLmJ1aWxkLURpc2FibGUtbGlic2VjY29tcC1mb3ItYWxsLWFyY2hzLnBhdGNoIFwKLSIKLQotREVQRU5EUyArPSAiZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyB2aXJ0dWFsL2xpYngxMSBndGsrMyBzdGFydHVwLW5vdGlmaWNhdGlvbiB4a2V5Ym9hcmQtY29uZmlnIGlzby1jb2RlcyB1ZGV2IgotCi1pbmhlcml0IGZlYXR1cmVzX2NoZWNrIGd0ay1kb2MKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyArPSAieDExIgotCi1HVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCi1FWFRSQV9PRU1FU09OID0gIi1EZGVza3RvcF9kb2NzPWZhbHNlIgotCi1QQUNLQUdFUyA9KyAibGliZ25vbWUtZGVza3RvcDMiCi1GSUxFU19saWJnbm9tZS1kZXNrdG9wMyA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSAke2RhdGFkaXJ9L2xpYmdub21lLWRlc2t0b3AqL3BucC5pZHMgJHtkYXRhZGlyfS9nbm9tZS8qeG1sIgotCi1SUkVDT01NRU5EU19saWJnbm9tZS1kZXNrdG9wMyArPSAiZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMzQuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMzQuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2E5NmM4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4zNC41LmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAiR05PTUUgbGlicmFyeSBmb3IgcmVhZGluZyAuZGVza3RvcCBmaWxlcyIKK1NFQ1RJT04gPSAieDExL2dub21lIgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKKworQlBOID0gImdub21lLWRlc2t0b3AiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCisKK2luaGVyaXQgZ25vbWViYXNlIGl0c3Rvb2wgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZmVhdHVyZXNfY2hlY2sKKworIyBnb2JqZWN0LWludHJvc3BlY3Rpb24gaXMgbWFuZGF0b3J5IGFuZCBjYW5ub3QgYmUgY29uZmlndXJlZAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gImdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIgorVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUX2FwcGVuZCA9ICIgaW50cm9zcGVjdGlvbiIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMWNiY2I5ZDlhNTE1OTQ0N2I5YTQ1MDc5YzYxNTdjYTUiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJlZjEzMjAzYmVkNzIxZDI3MTIyN2Q5OTI4ZDkxOTM3NzMzYzMxMmVmNzliNmY1YzAwYjZjMDJlOGUwYjJmYTIxIgorCitTUkNfVVJJICs9ICIgXAorICAgIGZpbGU6Ly9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1hc3N1bWUtdGltZV90LWlzLWxvbmcucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLW1lc29uLmJ1aWxkLURpc2FibGUtbGlic2VjY29tcC1mb3ItYWxsLWFyY2hzLnBhdGNoIFwKKyIKKworREVQRU5EUyArPSAiZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyB2aXJ0dWFsL2xpYngxMSBndGsrMyBzdGFydHVwLW5vdGlmaWNhdGlvbiB4a2V5Ym9hcmQtY29uZmlnIGlzby1jb2RlcyB1ZGV2IgorCitpbmhlcml0IGZlYXR1cmVzX2NoZWNrIGd0ay1kb2MKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyArPSAieDExIgorCitHVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCitFWFRSQV9PRU1FU09OID0gIi1EZGVza3RvcF9kb2NzPWZhbHNlIgorCitQQUNLQUdFUyA9KyAibGliZ25vbWUtZGVza3RvcDMiCitGSUxFU19saWJnbm9tZS1kZXNrdG9wMyA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSAke2RhdGFkaXJ9L2xpYmdub21lLWRlc2t0b3AqL3BucC5pZHMgJHtkYXRhZGlyfS9nbm9tZS8qeG1sIgorCitSUkVDT01NRU5EU19saWJnbm9tZS1kZXNrdG9wMyArPSAiZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1mb250LXZpZXdlci9nbm9tZS1mb250LXZpZXdlcl8zLjM0LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtZm9udC12aWV3ZXIvZ25vbWUtZm9udC12aWV3ZXJfMy4zNC4wLmJiCmluZGV4IGQ4ZjdlMzAuLmNmMjAyMjUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1mb250LXZpZXdlci9nbm9tZS1mb250LXZpZXdlcl8zLjM0LjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWZvbnQtdmlld2VyL2dub21lLWZvbnQtdmlld2VyXzMuMzQuMC5iYgpAQCAtMTEsNyArMTEsNyBAQAogCiBHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgogCi1pbmhlcml0IGdub21lYmFzZSBndGstaWNvbi1jYWNoZSBnZXR0ZXh0IGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgoraW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWljb24tY2FjaGUgZ2V0dGV4dCBmZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gbWltZS14ZGcKIAogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLW1lbnVzL2dub21lLW1lbnVzM18zLjMyLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtbWVudXMvZ25vbWUtbWVudXMzXzMuMzIuMC5iYgppbmRleCAzZjQ0MWQ5Li4yNGQ2NDUxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtbWVudXMvZ25vbWUtbWVudXMzXzMuMzIuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtbWVudXMvZ25vbWUtbWVudXMzXzMuMzIuMC5iYgpAQCAtNCw3ICs0LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKIAotREVQRU5EUyA9ICJweXRob24gbGlieG1sMiBwb3B0IGd0ayszIGdub21lLWNvbW1vbi1uYXRpdmUiCitERVBFTkRTID0gInB5dGhvbjMgbGlieG1sMiBwb3B0IGd0ayszIGdub21lLWNvbW1vbi1uYXRpdmUiCiAKIGluaGVyaXQgZmVhdHVyZXNfY2hlY2sgZ25vbWViYXNlIGdldHRleHQgcGtnY29uZmlnIGdvYmplY3QtaW50cm9zcGVjdGlvbiB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXNoZWxsL2dub21lLXNoZWxsXzMuMzQuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zaGVsbC9nbm9tZS1zaGVsbF8zLjM0LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2M2ZiZjQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXNoZWxsL2dub21lLXNoZWxsXzMuMzQuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLVNVTU1BUlkgPSAiR05PTUUgU2hlbGwgaXMgdGhlIGdyYXBoaWNhbCBzaGVsbCBvZiB0aGUgR05PTUUgZGVza3RvcCBlbnZpcm9ubWVudCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGdldHRleHQgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBiYXNoLWNvbXBsZXRpb24KLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSBwb2xraXQgc3lzdGVtZCBwYW0iCi0KLURFUEVORFMgPSAiIFwKLSAgICBsaWJ4bWwyLW5hdGl2ZSBcCi0gICAgc2Fzc2MtbmF0aXZlIFwKLSAgICBndGsrMyBcCi0gICAgbXV0dGVyIFwKLSAgICBldm9sdXRpb24tZGF0YS1zZXJ2ZXIgXAotICAgIGdjciBcCi0gICAgZ2pzIFwKLSAgICBnbm9tZS1hdXRvYXIgXAotICAgIHBvbGtpdCBcCi0gICAgbGliY3JvY28gXAotICAgIHN0YXJ0dXAtbm90aWZpY2F0aW9uIFwKLSAgICBpYnVzIFwKLSAgICBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIFwKLSIKLQotR1RLRE9DX01FU09OX09QVElPTiA9ICJndGtfZG9jIgotCi0jIGdvYmplY3QtaW50cm9zcGVjdGlvbiBpcyBtYW5kYXRvcnkgYW5kIGNhbm5vdCBiZSBjb25maWd1cmVkCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgKz0gImdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIgotVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUX2FwcGVuZCA9ICIgaW50cm9zcGVjdGlvbiIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYTBmN2Q3OGY1NzYxNjA3Njg5MGYwZTNiN2YxMjE5NmEiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIyNDc0YmVmMzg2YzVhNDdkN2JlMjg1YWEyMmUyNDEyNWM0NmJhNWY4NjBhMjVhMWEzNmE5MGRlNGU0NTZiZDhhIgotCi1QQUNLQUdFQ09ORklHID8/PSAiYmx1ZXRvb3RoIG5tICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2JsdWV0b290aF0gPSAiLCxnbm9tZS1ibHVldG9vdGgiCi1QQUNLQUdFQ09ORklHW25tXSA9ICItRG5ldHdvcmttYW5hZ2VyPXRydWUsIC1EbmV0d29ya21hbmFnZXI9ZmFsc2UsIG5ldHdvcmttYW5hZ2VyIgotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItRHN5c3RlbWQ9dHJ1ZSwgLURzeXN0ZW1kPWZhbHNlLCBzeXN0ZW1kIgotCi1FWFRSQV9PRU1FU09OID0gIiBcCi0gICAgLURtYW49ZmFsc2UgXAotIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIGZpeCBzaGViYW5ncwotICAgIGZvciB0b29sIGluIGBmaW5kICR7RH0ke2JpbmRpcn0gLW5hbWUgJyotdG9vbCdgOyBkbwotICAgICAgICBzZWQgLWkgJ3M6IyEke1BZVEhPTn06IyEke2JpbmRpcn0vJHtQWVRIT05fUE59OicgJHRvb2wKLSAgICBkb25lCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKLSAgICAke2RhdGFkaXJ9L2dub21lLWNvbnRyb2wtY2VudGVyIFwKLSAgICAke2RhdGFkaXJ9L3hkZy1kZXNrdG9wLXBvcnRhbCBcCi0gICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAotIgotCi1SREVQRU5EU18ke1BOfSArPSAiZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyBnZG0tYmFzZSBsaWJyc3ZnLWd0ayIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzIgotRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9LyotdG9vbCIKLVJERVBFTkRTXyR7UE59LXRvb2xzID0gInB5dGhvbjMtY29yZSIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXNoZWxsL2dub21lLXNoZWxsXzMuMzQuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zaGVsbC9nbm9tZS1zaGVsbF8zLjM0LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTYxOTYyOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zaGVsbC9nbm9tZS1zaGVsbF8zLjM0LjUuYmIKQEAgLTAsMCArMSw2NCBAQAorU1VNTUFSWSA9ICJHTk9NRSBTaGVsbCBpcyB0aGUgZ3JhcGhpY2FsIHNoZWxsIG9mIHRoZSBHTk9NRSBkZXNrdG9wIGVudmlyb25tZW50IgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgorCitpbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgZ2V0dGV4dCBnb2JqZWN0LWludHJvc3BlY3Rpb24gZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGJhc2gtY29tcGxldGlvbgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIHBvbGtpdCBzeXN0ZW1kIHBhbSIKKworREVQRU5EUyA9ICIgXAorICAgIGxpYnhtbDItbmF0aXZlIFwKKyAgICBzYXNzYy1uYXRpdmUgXAorICAgIGd0ayszIFwKKyAgICBtdXR0ZXIgXAorICAgIGV2b2x1dGlvbi1kYXRhLXNlcnZlciBcCisgICAgZ2NyIFwKKyAgICBnanMgXAorICAgIGdub21lLWF1dG9hciBcCisgICAgcG9sa2l0IFwKKyAgICBsaWJjcm9jbyBcCisgICAgc3RhcnR1cC1ub3RpZmljYXRpb24gXAorICAgIGlidXMgXAorICAgIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgXAorIgorCitHVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCisKKyMgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGlzIG1hbmRhdG9yeSBhbmQgY2Fubm90IGJlIGNvbmZpZ3VyZWQKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyArPSAiZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEiCitVTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1RfYXBwZW5kID0gIiBpbnRyb3NwZWN0aW9uIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI0YmQyN2M4YTkxZDMwZmRlNzhjYjY5Yjk0Njc3Y2YxZiIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImQyOTZmMzE4YTc0YTZkNzg4MzM1OGE2Y2UxYzRkODgwOGI3OTAzZGJiYjRmOWM2MWFiNDIzMGYxOGU2ZDc1NTAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJibHVldG9vdGggbm0gJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKK1BBQ0tBR0VDT05GSUdbYmx1ZXRvb3RoXSA9ICIsLGdub21lLWJsdWV0b290aCIKK1BBQ0tBR0VDT05GSUdbbm1dID0gIi1EbmV0d29ya21hbmFnZXI9dHJ1ZSwgLURuZXR3b3JrbWFuYWdlcj1mYWxzZSwgbmV0d29ya21hbmFnZXIiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi1Ec3lzdGVtZD10cnVlLCAtRHN5c3RlbWQ9ZmFsc2UsIHN5c3RlbWQiCisKK0VYVFJBX09FTUVTT04gPSAiIFwKKyAgICAtRG1hbj1mYWxzZSBcCisiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgZml4IHNoZWJhbmdzCisgICAgZm9yIHRvb2wgaW4gYGZpbmQgJHtEfSR7YmluZGlyfSAtbmFtZSAnKi10b29sJ2A7IGRvCisgICAgICAgIHNlZCAtaSAnczojISR7UFlUSE9OfTojISR7YmluZGlyfS8ke1BZVEhPTl9QTn06JyAkdG9vbAorICAgIGRvbmUKK30KKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7ZGF0YWRpcn0vZ25vbWUtY29udHJvbC1jZW50ZXIgXAorICAgICR7ZGF0YWRpcn0veGRnLWRlc2t0b3AtcG9ydGFsIFwKKyAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCisiCisKK1JERVBFTkRTXyR7UE59ICs9ICJnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGdkbS1iYXNlIGxpYnJzdmctZ3RrIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMiCitGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKi10b29sIgorUkRFUEVORFNfJHtQTn0tdG9vbHMgPSAicHl0aG9uMy1jb3JlIgorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3NwZWxsL2dzcGVsbF8xLjguMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nc3BlbGwvZ3NwZWxsXzEuOC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjhhODlmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nc3BlbGwvZ3NwZWxsXzEuOC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotU1VNTUFSWSA9ICJnc3BlbGwgYWRkcyBzcGVsbC1jaGVja2luZyB0byBhIEdUSysgYXBwbGljYXRpb25zIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9nc3BlbGwiCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGMyZTFlYzE1NDBmYjNlMGJlYjY4MzYxMzQ0Y2JhN2UiCi0KLURFUEVORFMgPSAiZ3RrKzMgaXNvLWNvZGVzIGVuY2hhbnQyIgotCi1pbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI0Zjg1NzM4MmJjOWQ4ZDRhZmUxZTY3ZTViNWI5ZGJmZiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImJiOTE5NWMzYTk1YmFjZjU1NmQwMjAzZTk2OTFmNzQ4OWUwZDNiYzVhZTFlNWE0NDBjODliMmYyNDM1ZDNlZDYiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3NwZWxsL2dzcGVsbF8xLjguMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nc3BlbGwvZ3NwZWxsXzEuOC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0Y2RlZmMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3NwZWxsL2dzcGVsbF8xLjguMy5iYgpAQCAtMCwwICsxLDExIEBACitTVU1NQVJZID0gImdzcGVsbCBhZGRzIHNwZWxsLWNoZWNraW5nIHRvIGEgR1RLKyBhcHBsaWNhdGlvbnMiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL1Byb2plY3RzL2dzcGVsbCIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04YzJlMWVjMTU0MGZiM2UwYmViNjgzNjEzNDRjYmE3ZSIKKworREVQRU5EUyA9ICJndGsrMyBpc28tY29kZXMgZW5jaGFudDIiCisKK2luaGVyaXQgZ25vbWViYXNlIGdldHRleHQgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImQwODkyMDAwZDk0NGU4N2ZkNzRlODYxMWVmNDAwY2RiIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNWFlNTE0ZGQwMjE2YmUwNjkxNzZhY2NmNmQwMDQ5ZDZhMDFjZmE2YTUwZGY0YmMwNmJlODVmNzA4MGI2MmRlOCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJjaGFtcGxhaW4vbGliY2hhbXBsYWluXzAuMTIuMjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliY2hhbXBsYWluL2xpYmNoYW1wbGFpbl8wLjEyLjIwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwZTU1MzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliY2hhbXBsYWluL2xpYmNoYW1wbGFpbl8wLjEyLjIwLmJiCkBAIC0wLDAgKzEsMTIgQEAKK1NVTU1BUlkgPSAibGliY2hhbXBsYWluIGlzIGEgR3RrIHdpZGdldCBkaXNwbGF5aW5nIHpvb21hYmxlIGFuZCBwYW5uYWJsZSBtYXBzIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIgorREVQRU5EUyA9ICJnbGliLTIuMCBndGsrMyBnZGstcGl4YnVmIGNsdXR0ZXItMS4wIGNsdXR0ZXItZ3RrLTEuMCBsaWJzb3VwLTIuNCIKKworaW5oZXJpdCBtZXNvbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworU1JDUkVWID0gIjE0NWU0MTdmMzJlNTA3YjYzYzIxYWQ0ZTkxNWI4MDhhNjE3NDA5OWUiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZ25vbWUvbGliY2hhbXBsYWluLmdpdCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdkYXRhL2xpYmdkYXRhXzAuMTcuMTEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ2RhdGEvbGliZ2RhdGFfMC4xNy4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk3YTA1ZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ2RhdGEvbGliZ2RhdGFfMC4xNy4xMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiR0xpYi1iYXNlZCBsaWJyYXJ5IGZvciBhY2Nlc3Npbmcgb25saW5lIHNlcnZpY2UgQVBJcyB1c2luZyB0aGUgR0RhdGEgcHJvdG9jb2wiCi1IT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvbGliZ2RhdGEiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiYzA5MzkwMTg1N2ZjZDExOGYwNjVmOTAwOTgyYzI0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkYXRhL2dkYXRhLmg7ZW5kbGluZT0yMDttZDU9MDc5YTU1NGVmY2Y2NWQ0NmY5NmE1MTU4MDZlN2U5OWEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RhdGEvZ2RhdGEtdHlwZXMuaDtlbmRsaW5lPTIwO21kNT03Mzk5YjExMWFhYzg3MThkYTEzODg4ZmM2MzRiZTZlZiIKLQotREVQRU5EUyA9ICJsaWJ4bWwyIGdsaWItMi4wIGxpYnNvdXAtMi40IGludGx0b29sLW5hdGl2ZSBsaWJvYXV0aCBnY3IganNvbi1nbGliIgotCi1HVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCi1HTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgotCi1pbmhlcml0IGdub21lYmFzZSBwa2djb25maWcgZ2V0dGV4dCBndGstZG9jIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uIG1hbnBhZ2VzIGZlYXR1cmVzX2NoZWNrCi0KLSMgZ2NyCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vZ2RhdGEvLmxpYnMiCi19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItRG1hbj10cnVlLC1EbWFuPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tnb2FdID0gIi1EZ29hPWVuYWJsZWQsLURnb2E9ZGlzYWJsZWQsZ25vbWUtb25saW5lLWFjY291bnRzIgotUEFDS0FHRUNPTkZJR1tndGtdID0gIi1EZ3RrPWVuYWJsZWQsLURndGs9ZGlzYWJsZWQsZ3RrKzMiCi1QQUNLQUdFQ09ORklHW3ZhbGFdID0gIi1EdmFwaT10cnVlLC1EdmFwaT1mYWxzZSIKLQotRVhUUkFfT0VNRVNPTiA9ICItRGFsd2F5c19idWlsZF90ZXN0cz1mYWxzZSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiN2I5OGU5MDU5MjU1ZDhhMmZiMTQ3YzRlNzI3MjMwYTgiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI2Yjk5MTcxMjJlNGRlZjZlNmY3OGJjYjY2MGU0OWUxNDY1NDA4MzJlMjk2YWJjYjVjZGU5OTgyOWEwNGVhOTg2IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdkYXRhL2xpYmdkYXRhXzAuMTcuMTIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ2RhdGEvbGliZ2RhdGFfMC4xNy4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWJjMjAyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdkYXRhL2xpYmdkYXRhXzAuMTcuMTIuYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJHTGliLWJhc2VkIGxpYnJhcnkgZm9yIGFjY2Vzc2luZyBvbmxpbmUgc2VydmljZSBBUElzIHVzaW5nIHRoZSBHRGF0YSBwcm90b2NvbCIKK0hPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9saWJnZGF0YSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmJjMDkzOTAxODU3ZmNkMTE4ZjA2NWY5MDA5ODJjMjQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RhdGEvZ2RhdGEuaDtlbmRsaW5lPTIwO21kNT0wNzlhNTU0ZWZjZjY1ZDQ2Zjk2YTUxNTgwNmU3ZTk5YSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGF0YS9nZGF0YS10eXBlcy5oO2VuZGxpbmU9MjA7bWQ1PTczOTliMTExYWFjODcxOGRhMTM4ODhmYzYzNGJlNmVmIgorCitERVBFTkRTID0gImxpYnhtbDIgZ2xpYi0yLjAgbGlic291cC0yLjQgaW50bHRvb2wtbmF0aXZlIGxpYm9hdXRoIGdjciBqc29uLWdsaWIiCisKK0dUS0RPQ19NRVNPTl9PUFRJT04gPSAiZ3RrX2RvYyIKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCisKK2luaGVyaXQgZ25vbWViYXNlIHBrZ2NvbmZpZyBnZXR0ZXh0IGd0ay1kb2MgdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24gbWFucGFnZXMgZmVhdHVyZXNfY2hlY2sKKworIyBnY3IKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9nZGF0YS8ubGlicyIKK30KKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi1EbWFuPXRydWUsLURtYW49ZmFsc2UiCitQQUNLQUdFQ09ORklHW2dvYV0gPSAiLURnb2E9ZW5hYmxlZCwtRGdvYT1kaXNhYmxlZCxnbm9tZS1vbmxpbmUtYWNjb3VudHMiCitQQUNLQUdFQ09ORklHW2d0a10gPSAiLURndGs9ZW5hYmxlZCwtRGd0az1kaXNhYmxlZCxndGsrMyIKK1BBQ0tBR0VDT05GSUdbdmFsYV0gPSAiLUR2YXBpPXRydWUsLUR2YXBpPWZhbHNlIgorCitFWFRSQV9PRU1FU09OID0gIi1EYWx3YXlzX2J1aWxkX3Rlc3RzPWZhbHNlIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI5ZDU2OTJhMjMwOGJiOTQ5YWY4MDFiZTY2OTg5ZTE2NCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImEwZmQ2Zjg4MjBlOGJhZTAxOWMxZjZmZmFiNWFmN2ZjZDZkN2YxNDc5MTViYjk2OGI1NmRmM2FkNjFiNDIzMTgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ3NmL2xpYmdzZl8xLjE0LjQ2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdzZi9saWJnc2ZfMS4xNC40Ni5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ5MzIwYS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ3NmL2xpYmdzZl8xLjE0LjQ2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJHTk9NRSBTdHJ1Y3R1cmVkIEZpbGUgTGlicmFyeSIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRjNzM3MWI1MDgxNmM5NmUxNDVmYTBmOGFkZThlMjRkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02MTQ2NGNmZTM0Mjc5OGVlY2VkODJlZmU5YWU1NWY2MyIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1ERVBFTkRTPSAibGlieG1sMiBiemlwMiBnbGliLTIuMCB6bGliIGdub21lLWNvbW1vbi1uYXRpdmUiCi0KLWluaGVyaXQgZ25vbWViYXNlIGdvYmplY3QtaW50cm9zcGVjdGlvbiBnZXR0ZXh0IGd0ay1kb2MKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNWJjNmQxZDYzOTRmMGVkNWE1OGU4ZjJlNWU0ZWFkN2YiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJlYTM2OTU5YjE0MjFmYzhlNzJjYWEyMjJmMzBlYzMyMzRkMGVkOTU5OTBlMmJmMjg5NDNhODVmMzNlYWRhZDJkIgotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWRyb3AtYS1jb3B5LXBhc3RlLW9mLWludHJvc3BlY3Rpb24ubTQtbS5wYXRjaCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbZ2RrLXBpeGJ1Zl0gPSAiLS13aXRoLWdkay1waXhidWYsLS13aXRob3V0LWdkay1waXhidWYsZ2RrLXBpeGJ1ZiIKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLXdpdGgtYnoyIFwKLSIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vdGh1bWJuYWlsZXJzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdzZi9saWJnc2ZfMS4xNC40Ny5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnc2YvbGliZ3NmXzEuMTQuNDcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ4MmIzNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnc2YvbGliZ3NmXzEuMTQuNDcuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJHTk9NRSBTdHJ1Y3R1cmVkIEZpbGUgTGlicmFyeSIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRjNzM3MWI1MDgxNmM5NmUxNDVmYTBmOGFkZThlMjRkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02MTQ2NGNmZTM0Mjc5OGVlY2VkODJlZmU5YWU1NWY2MyIKKworU0VDVElPTiA9ICJsaWJzIgorCitERVBFTkRTPSAibGlieG1sMiBiemlwMiBnbGliLTIuMCB6bGliIGdub21lLWNvbW1vbi1uYXRpdmUiCisKK2luaGVyaXQgZ25vbWViYXNlIGdvYmplY3QtaW50cm9zcGVjdGlvbiBnZXR0ZXh0IGd0ay1kb2MKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMjBiZjk5MzMxMjgyMTBkN2E5ZjkyMGEzNDE5OGQyMmYiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkMTg4ZWJkMzc4N2I1Mzc1YThmZDM4ZWU2Zjc2MWEyMDA3ZGU1ZTk4ZmEwY2Y1NjIzZjI3MWRhYTY3YmE3NzRkIgorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWRyb3AtYS1jb3B5LXBhc3RlLW9mLWludHJvc3BlY3Rpb24ubTQtbS5wYXRjaCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbZ2RrLXBpeGJ1Zl0gPSAiLS13aXRoLWdkay1waXhidWYsLS13aXRob3V0LWdkay1waXhidWYsZ2RrLXBpeGJ1ZiIKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAtLXdpdGgtYnoyIFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vdGh1bWJuYWlsZXJzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL211dHRlci9tdXR0ZXIvMDAwMS1FR0wtSW5jbHVkZS1FR0wtZWdsbWVzYWV4dC5oLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL211dHRlci9tdXR0ZXIvMDAwMS1FR0wtSW5jbHVkZS1FR0wtZWdsbWVzYWV4dC5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZmQwMzkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbXV0dGVyL211dHRlci8wMDAxLUVHTC1JbmNsdWRlLUVHTC1lZ2xtZXNhZXh0LmgucGF0Y2gKQEAgLTAsMCArMSw3MiBAQAorRnJvbSBhNDQ0YTRjNWY1OGVhNTE2YWQzY2Q5ZDZkZGMwMDU2YzNjYTliYzkwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIkphbiBBbGV4YW5kZXIgU3RlZmZlbnMgKGhlZnRpZykiIDxqYW4uc3RlZmZlbnNAZ21haWwuY29tPgorRGF0ZTogU3VuLCAyMCBPY3QgMjAxOSAxMjowNDozMSArMDIwMAorU3ViamVjdDogW1BBVENIXSBFR0w6IEluY2x1ZGUgRUdML2VnbG1lc2FleHQuaAorCitUaGUgZWdsZXh0Lmggc2hpcHBlZCBieSBsaWJnbHZuZCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBNZXNhIGV4dGVuc2lvbnMsCit1bmxpa2UgdGhlIGhlYWRlciBzaGlwcGVkIGluIE1lc2EuCisKK0ZpeGVzIGh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9tdXR0ZXIvaXNzdWVzLzg3NgorCitVcHN0cmVhbS1TdGF0dXM6IEFwcGxpZWQgWzFdCisKK1sxXSBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbXV0dGVyLy0vY29tbWl0L2E0NDRhNGM1ZjU4ZWE1MTZhZDNjZDlkNmRkYzAwNTZjM2NhOWJjOTAKKy0tLQorIGNvZ2wvY29nbC9tZXNvbi5idWlsZCAgICAgICB8IDIgKy0KKyBzcmMvYmFja2VuZHMvbWV0YS1lZ2wtZXh0LmggfCAxICsKKyBzcmMvYmFja2VuZHMvbWV0YS1lZ2wuYyAgICAgfCAxICsKKyBzcmMvYmFja2VuZHMvbWV0YS1lZ2wuaCAgICAgfCAxICsKKyA0IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29nbC9jb2dsL21lc29uLmJ1aWxkIGIvY29nbC9jb2dsL21lc29uLmJ1aWxkCitpbmRleCAyNjE5NTU3OTYuLmIwZTY2YmZmMyAxMDA2NDQKKy0tLSBhL2NvZ2wvY29nbC9tZXNvbi5idWlsZAorKysrIGIvY29nbC9jb2dsL21lc29uLmJ1aWxkCitAQCAtNDgsNyArNDgsNyBAQCBjb2dsX2dsX2hlYWRlcl9oID0gY29uZmlndXJlX2ZpbGUoCisgYnVpbHRfaGVhZGVycyArPSBbY29nbF9nbF9oZWFkZXJfaF0KKyAKKyBpZiBoYXZlX2VnbAorLSAgY29nbF9lZ2xfaW5jbHVkZXNfc3RyaW5nID0gJyNpbmNsdWRlIDxFR0wvZWdsLmg+XG4jaW5jbHVkZSA8RUdML2VnbGV4dC5oPicKKysgIGNvZ2xfZWdsX2luY2x1ZGVzX3N0cmluZyA9ICcjaW5jbHVkZSA8RUdML2VnbC5oPlxuI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD5cbiNpbmNsdWRlIDxFR0wvZWdsbWVzYWV4dC5oPicKKyBlbHNlCisgICBjb2dsX2VnbF9pbmNsdWRlc19zdHJpbmcgPSAnJworIGVuZGlmCitkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmRzL21ldGEtZWdsLWV4dC5oIGIvc3JjL2JhY2tlbmRzL21ldGEtZWdsLWV4dC5oCitpbmRleCA4NzA1ZTdkNWIuLmRiMGI3NGY3NiAxMDA2NDQKKy0tLSBhL3NyYy9iYWNrZW5kcy9tZXRhLWVnbC1leHQuaAorKysrIGIvc3JjL2JhY2tlbmRzL21ldGEtZWdsLWV4dC5oCitAQCAtMjksNiArMjksNyBAQAorIAorICNpbmNsdWRlIDxFR0wvZWdsLmg+CisgI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KKysjaW5jbHVkZSA8RUdML2VnbG1lc2FleHQuaD4KKyAKKyAvKgorICAqIFRoaXMgaXMgYSBsaXR0bGUgZGlmZmVyZW50IHRvIHRoZSB0ZXN0cyBzaGlwcGVkIHdpdGggRUdMIGltcGxlbWVudGF0aW9ucywKK2RpZmYgLS1naXQgYS9zcmMvYmFja2VuZHMvbWV0YS1lZ2wuYyBiL3NyYy9iYWNrZW5kcy9tZXRhLWVnbC5jCitpbmRleCA2NTU0YmU5MzUuLmZkZWZmNGY3NyAxMDA2NDQKKy0tLSBhL3NyYy9iYWNrZW5kcy9tZXRhLWVnbC5jCisrKysgYi9zcmMvYmFja2VuZHMvbWV0YS1lZ2wuYworQEAgLTI3LDYgKzI3LDcgQEAKKyAKKyAjaW5jbHVkZSA8RUdML2VnbC5oPgorICNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisrI2luY2x1ZGUgPEVHTC9lZ2xtZXNhZXh0Lmg+CisgI2luY2x1ZGUgPGdpby9naW8uaD4KKyAjaW5jbHVkZSA8Z2xpYi5oPgorICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kcy9tZXRhLWVnbC5oIGIvc3JjL2JhY2tlbmRzL21ldGEtZWdsLmgKK2luZGV4IGYyYTgxNjQ0NS4uNDU5MWU3ZDg1IDEwMDY0NAorLS0tIGEvc3JjL2JhY2tlbmRzL21ldGEtZWdsLmgKKysrKyBiL3NyYy9iYWNrZW5kcy9tZXRhLWVnbC5oCitAQCAtMjgsNiArMjgsNyBAQAorIAorICNpbmNsdWRlIDxFR0wvZWdsLmg+CisgI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KKysjaW5jbHVkZSA8RUdML2VnbG1lc2FleHQuaD4KKyAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyAKKyAjZGVmaW5lIE1FVEFfRUdMX0VSUk9SIG1ldGFfZWdsX2Vycm9yX3F1YXJrICgpCistLSAKKzIuMjEuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbXV0dGVyL211dHRlci8wMDAxLWNvZ2wtRml4LUdMRVMyLWZhbGxiYWNrLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL211dHRlci9tdXR0ZXIvMDAwMS1jb2dsLUZpeC1HTEVTMi1mYWxsYmFjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM5MjAwMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbXV0dGVyL211dHRlci8wMDAxLWNvZ2wtRml4LUdMRVMyLWZhbGxiYWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSBmNGY3ZTMxMzAzZDc4YjJhOGEwODgxYjYxMzExYjhkNzUwMzAxYjhmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWRhbSBKYWNrc29uIDxhamF4QHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDI5IE9jdCAyMDE5IDExOjUzOjI3IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvZ2w6IEZpeCBHTEVTMiBmYWxsYmFjawotCi1TYXkgeW91J3JlIHVzaW5nIGludGVsIGdlbjMsIHlvdSBwb29yIHNvdWwuIFlvdXIgYmlnLUdMIG1heGVzIG91dCBhdCAxLjUKLXVubGVzcyB5b3UgdXNlIGRpcnR5IHRyaWNrcywgYnV0IHlvdSBkbyBoYXZlIEdMRVMyLiBXZSB0cnkgdG8gZmFsbCBiYWNrCi10byBHTEVTIGluIHRoaXMgY2FzZSwgYnV0IHdlIG9ubHkgZXZlciBzYXkgZWdsQmluZEFQSShFR0xfT1BFTkdMX0FQSSkuCi1TbyB3aGVuIHdlIGdvIHRvIGRvIENyZWF0ZUNvbnRleHQsIGV2ZW4gdGhvdWdoIHdlIHRoaW5rIHdlJ3ZlIHJlcXVlc3RlZAotR0xFUyAyLjAsIHRoZSBkcml2ZXIgd2lsbCBjb21wYXJlIHRoYXQgIjIuMCIgYWdhaW5zdCB0aGUgbWF4aW11bSBiaWctR0wKLXZlcnNpb24sIGFuZCB0aGluZ3Mgd2lsbCBmYWlsLgotCi1GaXggdGhpcyBieSBiaW5kaW5nIEVHTF9PUEVOR0xfRVNfQVBJIGJlZm9yZSB0cnlpbmcgYSBHTEVTIGNvbnRleHQuCi0KLWh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9tdXR0ZXIvaXNzdWVzLzYzNQotCi1VcHN0cmVhbS1TdGF0dXM6IEFwcGxpZWQKLS0tLQotIGNvZ2wvY29nbC93aW5zeXMvY29nbC13aW5zeXMtZWdsLmMgfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29nbC9jb2dsL3dpbnN5cy9jb2dsLXdpbnN5cy1lZ2wuYyBiL2NvZ2wvY29nbC93aW5zeXMvY29nbC13aW5zeXMtZWdsLmMKLWluZGV4IDk5ZGNiOGJmMy4uZjJiNDM5YTY3IDEwMDY0NAotLS0tIGEvY29nbC9jb2dsL3dpbnN5cy9jb2dsLXdpbnN5cy1lZ2wuYwotKysrIGIvY29nbC9jb2dsL3dpbnN5cy9jb2dsLXdpbnN5cy1lZ2wuYwotQEAgLTMyOSw2ICszMjksOCBAQCB0cnlfY3JlYXRlX2NvbnRleHQgKENvZ2xEaXNwbGF5ICpkaXNwbGF5LAotICAgaWYgKHJlbmRlcmVyLT5kcml2ZXIgPT0gQ09HTF9EUklWRVJfR0wgfHwKLSAgICAgICByZW5kZXJlci0+ZHJpdmVyID09IENPR0xfRFJJVkVSX0dMMykKLSAgICAgZWdsQmluZEFQSSAoRUdMX09QRU5HTF9BUEkpOwotKyAgZWxzZSBpZiAocmVuZGVyZXItPmRyaXZlciA9PSBDT0dMX0RSSVZFUl9HTEVTMikKLSsgICAgZWdsQmluZEFQSSAoRUdMX09QRU5HTF9FU19BUEkpOwotIAotICAgZWdsX2F0dHJpYnV0ZXNfZnJvbV9mcmFtZWJ1ZmZlcl9jb25maWcgKGRpc3BsYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRpc3BsYXktPm9uc2NyZWVuX3RlbXBsYXRlLT5jb25maWcsCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbXV0dGVyL211dHRlcl8zLjM0LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbXV0dGVyL211dHRlcl8zLjM0LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhZmEyNjkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL211dHRlci9tdXR0ZXJfMy4zNC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotU1VNTUFSWSA9ICJXaW5kb3cgYW5kIGNvbXBvc2l0aW5nIG1hbmFnZXIgYmFzZWQgb24gQ2x1dHRlciIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotREVQRU5EUyA9ICIgXAotICAgIHhzZXJ2ZXIteG9yZy1jdnQtbmF0aXZlIFwKLSAgICB2aXJ0dWFsL2xpYngxMSBcCi0gICAgZ3RrKzMgXAotICAgIGdkay1waXhidWYgXAotICAgIGNhaXJvIFwKLSAgICBwYW5nbyBcCi0gICAgZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyBcCi0gICAganNvbi1nbGliIFwKLSAgICBnbm9tZS1kZXNrdG9wMyBcCi0gICAgZ25vbWUtc2V0dGluZ3MtZGFlbW9uIFwKLSAgICBsaWJ4dHN0IFwKLSAgICBsaWJ4a2JmaWxlIFwKLSAgICB4aW5lcmFtYSBcCi0iCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi0KLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZmVhdHVyZXNfY2hlY2sKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYzNlZTQ2YWU3Yjg0ZDlkMGU4ZGQzZjllMDRhNjFhYjEiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJjZGY1N2RkZDBiYzM1ZGI5NTJiNzMyYjc3Yzc5Njc2MGU2NWQxY2UyZjdkZjMxMjczZTVjOGQ0NzU5ZWQ0YTg5IgotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtY29nbC1GaXgtR0xFUzItZmFsbGJhY2sucGF0Y2giCi0KLSMgeDExIGlzIHN0aWxsIG1hbmFkYXRvcnkgLSBzZWUgbWVzb24uYnVpbGQKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLSMgc3lzdGVtZCBjYW4gYmUgcmVwbGFjZWQgYnkgbGliZWxvZ2luZCAobm90IGF2YWlsYWJsZSBhdG93IC0gbWFrZSBzeXN0ZW1kCi0jIG1hbmRhdG9yeSBkaXN0cm8gZmVhdHVyZSkKLUxPR0lORCA/PSAic3lzdGVtZCIKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyArPSAic3lzdGVtZCIKLQotIyBwcm9maWxlciByZXF1aXJlcyBzeXNwcm9mIDMuMzQgd2hpY2ggaXMgbm90IHdpbGxpbmcgdG8gYnVpbGQgYXRvdwotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgbmF0aXZlLWJhY2tlbmQgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsIHgxMScsICdvcGVuZ2wgZ2x4JywgJycsIGQpfSBcCi0gICAgc20gXAotICAgIHN0YXJ0dXAtbm90aWZpY2F0aW9uIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCB3YXlsYW5kJywgJ3dheWxhbmQnLCAnJywgZCl9IFwKLSIKLQotRVhUUkFfT0VNRVNPTiArPSAiIFwKLSAgICAtRHh3YXlsYW5kX3BhdGg9JHtiaW5kaXJ9L1h3YXlsYW5kIFwKLSIKLQotIyBjb21iaS1jb25maWcgLSBzZWUgbWVzb25fb3B0aW9ucy50eHQgZm9yIG1vcmUgZGV0YWlscwotUEFDS0FHRUNPTkZJR1tuYXRpdmUtYmFja2VuZF0gPSAiLURuYXRpdmVfYmFja2VuZD10cnVlIC1EdWRldj10cnVlLCAtRG5hdGl2ZV9iYWNrZW5kPWZhbHNlIC1EdWRldj1mYWxzZSwgbGliZHJtIHZpcnR1YWwvbGliZ2JtIGxpYmlucHV0ICR7TE9HSU5EfSB2aXJ0dWFsL2VnbCB2aXJ0dWFsL2xpYmdsZXMyIHVkZXYiCi1QQUNLQUdFQ09ORklHW29wZW5nbF0gPSAiLURvcGVuZ2w9dHJ1ZSwgLURvcGVuZ2w9dHJ1ZSwgdmlydHVhbC9saWJnbCIKLVBBQ0tBR0VDT05GSUdbZ2x4XSA9ICItRGdseD10cnVlLCAtRGdseD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbbGlid2Fjb21dID0gIi1EbGlid2Fjb209dHJ1ZSwgLURsaWJ3YWNvbT1mYWxzZSwgbGlid2Fjb20iCi1QQUNLQUdFQ09ORklHW3JlbW90ZS1kZXNrdG9wXSA9ICItRHJlbW90ZV9kZXNrdG9wPXRydWUsIC1EcmVtb3RlX2Rlc2t0b3A9ZmFsc2UsIHBpcGV3aXJlIgotUEFDS0FHRUNPTkZJR1tzbV0gPSAiLURzbT10cnVlLCAtRHNtPWZhbHNlLCBsaWJzbSIKLVBBQ0tBR0VDT05GSUdbcHJvZmlsZXJdID0gIi1EcHJvZmlsZXI9dHJ1ZSwtRHByb2ZpbGVyPWZhbHNlLHN5c3Byb2YiCi1QQUNLQUdFQ09ORklHW3N0YXJ0dXAtbm90aWZpY2F0aW9uXSA9ICItRHN0YXJ0dXBfbm90aWZpY2F0aW9uPXRydWUsIC1Ec3RhcnR1cF9ub3RpZmljYXRpb249ZmFsc2UsIHN0YXJ0dXAtbm90aWZpY2F0aW9uLCBzdGFydHVwLW5vdGlmaWNhdGlvbiIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLUR3YXlsYW5kPXRydWUsLUR3YXlsYW5kPWZhbHNlLHdheWxhbmQgd2F5bGFuZC1uYXRpdmUsIHhzZXJ2ZXIteG9yZy14d2F5bGFuZCIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZC1lZ2xzdHJlYW1dID0gIi1Ed2F5bGFuZF9lZ2xzdHJlYW09dHJ1ZSwtRHdheWxhbmRfZWdsc3RyZWFtPWZhbHNlIgotCi0jIHllcyB0aGV5IGNoYW5nZWQgZnJvbSBtdXR0ZXItNCAtPiBtdXR0ZXItNSByZWNlbnRseSBzbyBiZSBwZXJwYXJlZAotTVVUVEVSX0FQSV9OQU1FID0gIm11dHRlci01IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIEFkZCBnaXIgbGlua3MgaW4gc3RhbmRhcmQgcGF0aHMuIFRoYXQgbWFrZXMgZGVwZW5kZW50cyBsaWZlIG11Y2ggZWFzaWVyCi0gICAgIyB0byBmaW5kIHRoZW0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2dpci0xLjAKLSAgICBmb3IgZ2lyX2Z1bGwgaW4gYGZpbmQgJHtEfSR7bGliZGlyfS8ke01VVFRFUl9BUElfTkFNRX0gLW5hbWUgJyouZ2lyJ2A7IGRvCi0gICAgICAgIGdpcj1gYmFzZW5hbWUgIiRnaXJfZnVsbCJgCi0gICAgICAgIGxuIC1zciAiJHtEfSR7bGliZGlyfS8ke01VVFRFUl9BUElfTkFNRX0vJGdpciIgIiR7RH0ke2RhdGFkaXJ9L2dpci0xLjAvJGdpciIKLSAgICBkb25lCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtkYXRhZGlyfS9nbm9tZS1jb250cm9sLWNlbnRlciBcCi0gICAgJHtsaWJkaXJ9LyR7TVVUVEVSX0FQSV9OQU1FfS9saWIqJHtTT0xJQlN9IFwKLSAgICAke2xpYmRpcn0vJHtNVVRURVJfQVBJX05BTUV9LyoudHlwZWxpYiBcCi0gICAgJHtsaWJkaXJ9LyR7TVVUVEVSX0FQSV9OQU1FfS9wbHVnaW5zIFwKLSIKLQotRklMRVNfJHtQTn0tdGVzdHMgKz0gIiBcCi0gICAgJHtkYXRhZGlyfS9pbnN0YWxsZWQtdGVzdHMgXAotICAgICR7ZGF0YWRpcn0vJHtNVVRURVJfQVBJX05BTUV9L3Rlc3RzIFwKLSAgICAke2xpYmV4ZWNkaXJ9L2luc3RhbGxlZC10ZXN0cy8ke01VVFRFUl9BUElfTkFNRX0gXAotIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiBcCi0gICAgJHtsaWJkaXJ9LyR7TVVUVEVSX0FQSV9OQU1FfS8qLmdpciBcCi0gICAgJHtsaWJkaXJ9LyR7TVVUVEVSX0FQSV9OQU1FfS9saWIqLnNvIFwKLSIKLQotUkRFUEVORFNfJHtQTn0gKz0gInplbml0eSIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL211dHRlci9tdXR0ZXJfMy4zNC41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL211dHRlci9tdXR0ZXJfMy4zNC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwYjg5ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbXV0dGVyL211dHRlcl8zLjM0LjUuYmIKQEAgLTAsMCArMSw5NiBAQAorU1VNTUFSWSA9ICJXaW5kb3cgYW5kIGNvbXBvc2l0aW5nIG1hbmFnZXIgYmFzZWQgb24gQ2x1dHRlciIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworREVQRU5EUyA9ICIgXAorICAgIHhzZXJ2ZXIteG9yZy1jdnQtbmF0aXZlIFwKKyAgICB2aXJ0dWFsL2xpYngxMSBcCisgICAgZ3RrKzMgXAorICAgIGdkay1waXhidWYgXAorICAgIGNhaXJvIFwKKyAgICBwYW5nbyBcCisgICAgZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyBcCisgICAganNvbi1nbGliIFwKKyAgICBnbm9tZS1kZXNrdG9wMyBcCisgICAgZ25vbWUtc2V0dGluZ3MtZGFlbW9uIFwKKyAgICBsaWJ4dHN0IFwKKyAgICBsaWJ4a2JmaWxlIFwKKyAgICB4aW5lcmFtYSBcCisiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCisKK2luaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZmVhdHVyZXNfY2hlY2sKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNGExNmRhZDFkOTNkNWUxZjgxZDU1NWRhMzVmYWYwZTkiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkMWQxNDliNzBlZDczMzA3NzFmNDUyNDg4NmI5ODc3NWZjZTVhMTFjZjE3Zjk2ODNjYmExNTEwNzVmMjg3OWM0IgorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRUdMLUluY2x1ZGUtRUdMLWVnbG1lc2FleHQuaC5wYXRjaCIKKworIyB4MTEgaXMgc3RpbGwgbWFuYWRhdG9yeSAtIHNlZSBtZXNvbi5idWlsZAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworIyBzeXN0ZW1kIGNhbiBiZSByZXBsYWNlZCBieSBsaWJlbG9naW5kIChub3QgYXZhaWxhYmxlIGF0b3cgLSBtYWtlIHN5c3RlbWQKKyMgbWFuZGF0b3J5IGRpc3RybyBmZWF0dXJlKQorTE9HSU5EID89ICJzeXN0ZW1kIgorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTICs9ICJzeXN0ZW1kIgorCisjIHByb2ZpbGVyIHJlcXVpcmVzIHN5c3Byb2YgMy4zNCB3aGljaCBpcyBub3Qgd2lsbGluZyB0byBidWlsZCBhdG93CitQQUNLQUdFQ09ORklHID8/PSAiIFwKKyAgICBuYXRpdmUtYmFja2VuZCBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wgeDExJywgJ29wZW5nbCBnbHgnLCAnJywgZCl9IFwKKyAgICBzbSBcCisgICAgc3RhcnR1cC1ub3RpZmljYXRpb24gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsIHdheWxhbmQnLCAnd2F5bGFuZCcsICcnLCBkKX0gXAorIgorCitFWFRSQV9PRU1FU09OICs9ICIgXAorICAgIC1EeHdheWxhbmRfcGF0aD0ke2JpbmRpcn0vWHdheWxhbmQgXAorIgorCisjIGNvbWJpLWNvbmZpZyAtIHNlZSBtZXNvbl9vcHRpb25zLnR4dCBmb3IgbW9yZSBkZXRhaWxzCitQQUNLQUdFQ09ORklHW25hdGl2ZS1iYWNrZW5kXSA9ICItRG5hdGl2ZV9iYWNrZW5kPXRydWUgLUR1ZGV2PXRydWUsIC1EbmF0aXZlX2JhY2tlbmQ9ZmFsc2UgLUR1ZGV2PWZhbHNlLCBsaWJkcm0gdmlydHVhbC9saWJnYm0gbGliaW5wdXQgJHtMT0dJTkR9IHZpcnR1YWwvZWdsIHZpcnR1YWwvbGliZ2xlczIgdWRldiIKK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICItRG9wZW5nbD10cnVlLCAtRG9wZW5nbD10cnVlLCB2aXJ0dWFsL2xpYmdsIgorUEFDS0FHRUNPTkZJR1tnbHhdID0gIi1EZ2x4PXRydWUsIC1EZ2x4PWZhbHNlIgorUEFDS0FHRUNPTkZJR1tsaWJ3YWNvbV0gPSAiLURsaWJ3YWNvbT10cnVlLCAtRGxpYndhY29tPWZhbHNlLCBsaWJ3YWNvbSIKK1BBQ0tBR0VDT05GSUdbcmVtb3RlLWRlc2t0b3BdID0gIi1EcmVtb3RlX2Rlc2t0b3A9dHJ1ZSwgLURyZW1vdGVfZGVza3RvcD1mYWxzZSwgcGlwZXdpcmUtMC4yIgorUEFDS0FHRUNPTkZJR1tzbV0gPSAiLURzbT10cnVlLCAtRHNtPWZhbHNlLCBsaWJzbSIKK1BBQ0tBR0VDT05GSUdbcHJvZmlsZXJdID0gIi1EcHJvZmlsZXI9dHJ1ZSwtRHByb2ZpbGVyPWZhbHNlLHN5c3Byb2YiCitQQUNLQUdFQ09ORklHW3N0YXJ0dXAtbm90aWZpY2F0aW9uXSA9ICItRHN0YXJ0dXBfbm90aWZpY2F0aW9uPXRydWUsIC1Ec3RhcnR1cF9ub3RpZmljYXRpb249ZmFsc2UsIHN0YXJ0dXAtbm90aWZpY2F0aW9uLCBzdGFydHVwLW5vdGlmaWNhdGlvbiIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLUR3YXlsYW5kPXRydWUsLUR3YXlsYW5kPWZhbHNlLHdheWxhbmQgd2F5bGFuZC1uYXRpdmUsIHhzZXJ2ZXIteG9yZy14d2F5bGFuZCIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZC1lZ2xzdHJlYW1dID0gIi1Ed2F5bGFuZF9lZ2xzdHJlYW09dHJ1ZSwtRHdheWxhbmRfZWdsc3RyZWFtPWZhbHNlIgorCisjIHllcyB0aGV5IGNoYW5nZWQgZnJvbSBtdXR0ZXItNCAtPiBtdXR0ZXItNSByZWNlbnRseSBzbyBiZSBwZXJwYXJlZAorTVVUVEVSX0FQSV9OQU1FID0gIm11dHRlci01IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIEFkZCBnaXIgbGlua3MgaW4gc3RhbmRhcmQgcGF0aHMuIFRoYXQgbWFrZXMgZGVwZW5kZW50cyBsaWZlIG11Y2ggZWFzaWVyCisgICAgIyB0byBmaW5kIHRoZW0KKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2dpci0xLjAKKyAgICBmb3IgZ2lyX2Z1bGwgaW4gYGZpbmQgJHtEfSR7bGliZGlyfS8ke01VVFRFUl9BUElfTkFNRX0gLW5hbWUgJyouZ2lyJ2A7IGRvCisgICAgICAgIGdpcj1gYmFzZW5hbWUgIiRnaXJfZnVsbCJgCisgICAgICAgIGxuIC1zciAiJHtEfSR7bGliZGlyfS8ke01VVFRFUl9BUElfTkFNRX0vJGdpciIgIiR7RH0ke2RhdGFkaXJ9L2dpci0xLjAvJGdpciIKKyAgICBkb25lCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9nbm9tZS1jb250cm9sLWNlbnRlciBcCisgICAgJHtsaWJkaXJ9LyR7TVVUVEVSX0FQSV9OQU1FfS9saWIqJHtTT0xJQlN9IFwKKyAgICAke2xpYmRpcn0vJHtNVVRURVJfQVBJX05BTUV9LyoudHlwZWxpYiBcCisgICAgJHtsaWJkaXJ9LyR7TVVUVEVSX0FQSV9OQU1FfS9wbHVnaW5zIFwKKyIKKworRklMRVNfJHtQTn0tdGVzdHMgKz0gIiBcCisgICAgJHtkYXRhZGlyfS9pbnN0YWxsZWQtdGVzdHMgXAorICAgICR7ZGF0YWRpcn0vJHtNVVRURVJfQVBJX05BTUV9L3Rlc3RzIFwKKyAgICAke2xpYmV4ZWNkaXJ9L2luc3RhbGxlZC10ZXN0cy8ke01VVFRFUl9BUElfTkFNRX0gXAorIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiBcCisgICAgJHtsaWJkaXJ9LyR7TVVUVEVSX0FQSV9OQU1FfS8qLmdpciBcCisgICAgJHtsaWJkaXJ9LyR7TVVUVEVSX0FQSV9OQU1FfS9saWIqLnNvIFwKKyIKKworUkRFUEVORFNfJHtQTn0gKz0gInplbml0eSIKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL25hdXRpbHVzL25hdXRpbHVzXzMuMzQuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9uYXV0aWx1cy9uYXV0aWx1c18zLjM0LjIuYmIKaW5kZXggYmFjYzk2Ny4uMTBkZWE5NCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL25hdXRpbHVzL25hdXRpbHVzXzMuMzQuMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbmF1dGlsdXMvbmF1dGlsdXNfMy4zNC4yLmJiCkBAIC0xNSw3ICsxNSw3IEBACiAgICAgdHJhY2tlciBcCiAiCiAKLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBnZXR0ZXh0IGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgoraW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIGdldHRleHQgZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIG1pbWUteGRnCiAKIFNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjg4NTczMDYxNTQ0MDQwYzBmZjk2MGY5MzRhYTgzNzE5IgogU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYmIwNmUyMjZiOTY1ZjQ3OWEwYjg2NjhjMTljOGUxNzYyYjlkOGYwMzlhZjY4MTc5NjFjYzdhOGYwOWU2ZjhhNyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS90cmFja2VyL3RyYWNrZXItbWluZXJzXzIuMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3RyYWNrZXIvdHJhY2tlci1taW5lcnNfMi4zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkYmJjYWYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3RyYWNrZXIvdHJhY2tlci1taW5lcnNfMi4zLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1TVU1NQVJZID0gIlRyYWNrZXIgbWluZXJzIGFuZCBtZXRhZGF0YSBleHRyYWN0b3JzIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAotICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9ZWUzMTAxMmJmOTBlN2I4YzEwOGM2OWYxOTdmM2UzYTQgXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEw7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKLSIKLQotREVQRU5EUyA9ICIgXAotICAgIGludGx0b29sLW5hdGl2ZSBcCi0gICAgdHJhY2tlciBcCi0gICAgemxpYiBcCi0iCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi0KLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnb2JqZWN0LWludHJvc3BlY3Rpb24gdmFsYSBndGstZG9jIG1hbnBhZ2VzIGJhc2gtY29tcGxldGlvbiBmZWF0dXJlc19jaGVjawotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIwMzIxZDhmNGFkMjdlM2ZjY2RiYzgzODRlNWIzY2I4MyIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjdiMWRlMDZhN2E3OWVhMWM3ODEzYzhhMjFmOGNkMWM1NWYyYjk1Zjc5OWNmOWY0N2YwMjA0ZjNiZThhNTkwZTAiCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1tZXNvbi5idWlsZC1KdXN0LXdhcm4taWYtd2UtYnVpbGQtd2l0aG91dC1saWJzZWNjb21wLnBhdGNoIgotCi0jIGdvYmplY3QtaW50cm9zcGVjdGlvbiBpcyBtYW5kYXRvcnkgYW5kIGNhbm5vdCBiZSBjb25maWd1cmVkCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEiCi1VTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1RfYXBwZW5kID0gIiBpbnRyb3NwZWN0aW9uIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICBmZm1wZWcgXAotICAgIGZsYWMgXAotICAgIGdleGl2MiBcCi0gICAgZ3N0cmVhbWVyIFwKLSAgICBpY3UgXAotICAgIGxpYmV4aWYgXAotICAgIGxpYmdzZiBcCi0gICAganBlZyBcCi0gICAgcG5nIFwKLSAgICB0aWZmIFwKLSAgICB4bWwgXAotICAgIHBkZiBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbZmZtcGVnXSAgICAgPSAiLCxmZm1wZWciCi1QQUNLQUdFQ09ORklHW2ZsYWNdICAgICAgID0gIi1EZmxhYz1lbmFibGVkLC1EZmxhYz1kaXNhYmxlZCxmbGFjIgotUEFDS0FHRUNPTkZJR1tnZXhpdjJdICAgICA9ICIsLGdleGl2MiIKLVBBQ0tBR0VDT05GSUdbZ3N0cmVhbWVyXSAgPSAiLCxnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKLVBBQ0tBR0VDT05GSUdbZ3VwbnBdICAgICAgPSAiLCxndXBucC1kbG5hIgotUEFDS0FHRUNPTkZJR1tpY3VdICAgICAgICA9ICIsLGljdSIKLVBBQ0tBR0VDT05GSUdbbGliZXhpZl0gICAgPSAiLURleGlmPWVuYWJsZWQsLURleGlmPWRpc2FibGVkLGxpYmV4aWYiCi1QQUNLQUdFQ09ORklHW2xpYmdzZl0gICAgID0gIi1EZ3NmPWVuYWJsZWQsLURnc2Y9ZGlzYWJsZWQsbGliZ3NmIgotUEFDS0FHRUNPTkZJR1tqcGVnXSAgICAgICA9ICItRGpwZWc9ZW5hYmxlZCwtRGpwZWc9ZGlzYWJsZWQsanBlZyIKLVBBQ0tBR0VDT05GSUdbcG5nXSAgICAgICAgPSAiLURwbmc9ZW5hYmxlZCwtRHBuZz1kaXNhYmxlZCxsaWJwbmciCi1QQUNLQUdFQ09ORklHW3RpZmZdICAgICAgID0gIi1EdGlmZj1lbmFibGVkLC1EdGlmZj1kaXNhYmxlZCx0aWZmIgotUEFDS0FHRUNPTkZJR1t4bWxdICAgICAgICA9ICItRHhtbD1lbmFibGVkLC1EeG1sPWRpc2FibGVkLGxpYnhtbDIiCi1QQUNLQUdFQ09ORklHW3ZvcmJpc10gICAgID0gIi1Edm9yYmlzPWVuYWJsZWQsLUR2b3JiaXM9ZGlzYWJsZWQsbGlidm9yYmlzIgotUEFDS0FHRUNPTkZJR1twZGZdICAgICAgICA9ICItRHBkZj1lbmFibGVkLC1EcGRmPWRpc2FibGVkLHBvcHBsZXIiCi1QQUNLQUdFQ09ORklHW3Vwb3dlcl0gICAgID0gIiwsdXBvd2VyIgotCi0jIEZvciBzZWN1cml0eSByZWFzb25zIGl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIHNldCBhZGQgbWV0YS1zZWN1cml0eSBpbgotIyB5b3VyIGxheWVycyBhbmQgJ2xpYnNlY2NvbXAnIHRvIFBBQ0tBR0VDT05GSUciLgotUEFDS0FHRUNPTkZJR1tsaWJzZWNjb21wXSA9ICIsLGxpYnNlY2NvbXAiCi0jIG5vdCB5ZXQgaW4gbWV0YS1nbm9tZQotUEFDS0FHRUNPTkZJR1tyc3NdICAgICAgICA9ICItRG1pbmVyX3Jzcz10cnVlLC1EbWluZXJfcnNzPWZhbHNlLGxpYmdyc3MiCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKLSAgICAke2RhdGFkaXJ9L3RyYWNrZXIgXAotICAgICR7bGliZGlyfS90cmFja2VyLW1pbmVycy0yLjAgXAotICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS90cmFja2VyL3RyYWNrZXItbWluZXJzXzIuMy4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3RyYWNrZXIvdHJhY2tlci1taW5lcnNfMi4zLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQwNzg3ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS90cmFja2VyL3RyYWNrZXItbWluZXJzXzIuMy4zLmJiCkBAIC0wLDAgKzEsNjggQEAKK1NVTU1BUlkgPSAiVHJhY2tlciBtaW5lcnMgYW5kIG1ldGFkYXRhIGV4dHJhY3RvcnMiCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gIiBcCisgICAgZmlsZTovL0NPUFlJTkcuR1BMO21kNT1lZTMxMDEyYmY5MGU3YjhjMTA4YzY5ZjE5N2YzZTNhNCBcCisgICAgZmlsZTovL0NPUFlJTkcuTEdQTDttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAorIgorCitERVBFTkRTID0gIiBcCisgICAgaW50bHRvb2wtbmF0aXZlIFwKKyAgICB0cmFja2VyIFwKKyAgICB6bGliIFwKKyIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGdvYmplY3QtaW50cm9zcGVjdGlvbiB2YWxhIGd0ay1kb2MgbWFucGFnZXMgYmFzaC1jb21wbGV0aW9uIGZlYXR1cmVzX2NoZWNrCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImEzMTdiYzUwYzVlNjNkZDA3NDZhNDhhZjQ3OGZiOTJiIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNzQ3MmFhMjhkNzg2MjYyMGQzY2EyYmJlYzNiMTAzZGY1NDdkNzMxOWMxMmU5NWE3ZjdhYTlmOWY2ZGVlNGIxOSIKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLW1lc29uLmJ1aWxkLUp1c3Qtd2Fybi1pZi13ZS1idWlsZC13aXRob3V0LWxpYnNlY2NvbXAucGF0Y2giCisKKyMgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGlzIG1hbmRhdG9yeSBhbmQgY2Fubm90IGJlIGNvbmZpZ3VyZWQKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YSIKK1VOS05PV05fQ09ORklHVVJFX1dISVRFTElTVF9hcHBlbmQgPSAiIGludHJvc3BlY3Rpb24iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgIGZmbXBlZyBcCisgICAgZmxhYyBcCisgICAgZ2V4aXYyIFwKKyAgICBnc3RyZWFtZXIgXAorICAgIGljdSBcCisgICAgbGliZXhpZiBcCisgICAgbGliZ3NmIFwKKyAgICBqcGVnIFwKKyAgICBwbmcgXAorICAgIHRpZmYgXAorICAgIHhtbCBcCisgICAgcGRmIFwKKyIKKworUEFDS0FHRUNPTkZJR1tmZm1wZWddICAgICA9ICIsLGZmbXBlZyIKK1BBQ0tBR0VDT05GSUdbZmxhY10gICAgICAgPSAiLURmbGFjPWVuYWJsZWQsLURmbGFjPWRpc2FibGVkLGZsYWMiCitQQUNLQUdFQ09ORklHW2dleGl2Ml0gICAgID0gIiwsZ2V4aXYyIgorUEFDS0FHRUNPTkZJR1tnc3RyZWFtZXJdICA9ICIsLGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgorUEFDS0FHRUNPTkZJR1tndXBucF0gICAgICA9ICIsLGd1cG5wLWRsbmEiCitQQUNLQUdFQ09ORklHW2ljdV0gICAgICAgID0gIiwsaWN1IgorUEFDS0FHRUNPTkZJR1tsaWJleGlmXSAgICA9ICItRGV4aWY9ZW5hYmxlZCwtRGV4aWY9ZGlzYWJsZWQsbGliZXhpZiIKK1BBQ0tBR0VDT05GSUdbbGliZ3NmXSAgICAgPSAiLURnc2Y9ZW5hYmxlZCwtRGdzZj1kaXNhYmxlZCxsaWJnc2YiCitQQUNLQUdFQ09ORklHW2pwZWddICAgICAgID0gIi1EanBlZz1lbmFibGVkLC1EanBlZz1kaXNhYmxlZCxqcGVnIgorUEFDS0FHRUNPTkZJR1twbmddICAgICAgICA9ICItRHBuZz1lbmFibGVkLC1EcG5nPWRpc2FibGVkLGxpYnBuZyIKK1BBQ0tBR0VDT05GSUdbdGlmZl0gICAgICAgPSAiLUR0aWZmPWVuYWJsZWQsLUR0aWZmPWRpc2FibGVkLHRpZmYiCitQQUNLQUdFQ09ORklHW3htbF0gICAgICAgID0gIi1EeG1sPWVuYWJsZWQsLUR4bWw9ZGlzYWJsZWQsbGlieG1sMiIKK1BBQ0tBR0VDT05GSUdbdm9yYmlzXSAgICAgPSAiLUR2b3JiaXM9ZW5hYmxlZCwtRHZvcmJpcz1kaXNhYmxlZCxsaWJ2b3JiaXMiCitQQUNLQUdFQ09ORklHW3BkZl0gICAgICAgID0gIi1EcGRmPWVuYWJsZWQsLURwZGY9ZGlzYWJsZWQscG9wcGxlciIKK1BBQ0tBR0VDT05GSUdbdXBvd2VyXSAgICAgPSAiLCx1cG93ZXIiCisKKyMgRm9yIHNlY3VyaXR5IHJlYXNvbnMgaXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gc2V0IGFkZCBtZXRhLXNlY3VyaXR5IGluCisjIHlvdXIgbGF5ZXJzIGFuZCAnbGlic2VjY29tcCcgdG8gUEFDS0FHRUNPTkZJRyIuCitQQUNLQUdFQ09ORklHW2xpYnNlY2NvbXBdID0gIiwsbGlic2VjY29tcCIKKyMgbm90IHlldCBpbiBtZXRhLWdub21lCitQQUNLQUdFQ09ORklHW3Jzc10gICAgICAgID0gIi1EbWluZXJfcnNzPXRydWUsLURtaW5lcl9yc3M9ZmFsc2UsbGliZ3JzcyIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7ZGF0YWRpcn0vdHJhY2tlciBcCisgICAgJHtsaWJkaXJ9L3RyYWNrZXItbWluZXJzLTIuMCBcCisgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3RyYWNrZXIvdHJhY2tlcl8yLjMuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS90cmFja2VyL3RyYWNrZXJfMi4zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5MGQ3YmQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3RyYWNrZXIvdHJhY2tlcl8yLjMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLVNVTU1BUlkgPSAiVHJhY2tlciBpcyBhIGZpbGUgc2VhcmNoIGVuZ2luZSIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiIFwKLSAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PWVlMzEwMTJiZjkwZTdiOGMxMDhjNjlmMTk3ZjNlM2E0IFwKLSAgICBmaWxlOi8vQ09QWUlORy5MR1BMO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCi0iCi0KLURFUEVORFMgPSAiIFwKLSAgICBsaWJ4bWwyLW5hdGl2ZSBcCi0gICAgZGJ1cy1uYXRpdmUgXAotICAgIGdsaWItMi4wIFwKLSAgICBzcWxpdGUzIFwKLSAgICBsaWJhcmNoaXZlIFwKLSAgICBkYnVzIFwKLSAgICBpY3UgXAotICAgIGpzb24tZ2xpYiBcCi0gICAgbGlic291cC0yLjQgXAotICAgIGxpYnN0ZW1tZXIgXAotIgotCi1HTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgotCi1pbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHZhbGEgZ3RrLWRvYyBtYW5wYWdlcyBiYXNoLWNvbXBsZXRpb24gZmVhdHVyZXNfY2hlY2sKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNWU3NWI2MTFiMTkwYzRjZWJmNTNlM2RlMTUyNjY0MjkiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJiNjc0ODcyNmU0NjVhZDJmNGQ5OTE1NjA2MzRiMWZkMGRmODg0MWYzZDk4MWIzYjgzN2M0MTYyYWJlZGYwOGExIgotCi0jIGdvYmplY3QtaW50cm9zcGVjdGlvbiBpcyBtYW5kYXRvcnkgYW5kIGNhbm5vdCBiZSBjb25maWd1cmVkCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEiCi1VTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1RfYXBwZW5kID0gIiBpbnRyb3NwZWN0aW9uIgotCi1QQUNLQUdFQ09ORklHID8/PSAiZnRzIgotUEFDS0FHRUNPTkZJR1tuZXR3b3JrbWFuYWdlcl0gPSAiLURuZXR3b3JrX21hbmFnZXI9ZW5hYmxlZCwtRG5ldHdvcmtfbWFuYWdlcj1kaXNhYmxlZCxuZXR3b3JrbWFuZ2VyIgotIyBmdWxsIHRleHQgc2VhcmNoIHJlcXVpcmVzIHNxbGl0ZTMgYnVpbGQgd2l0aCBQQUNLQUdFQ09ORklHW2Z0czVdIHNldAotUEFDS0FHRUNPTkZJR1tmdHNdID0gIi1EZnRzPXRydWUsLURmdHM9ZmFsc2UiCi0KLSMgc2V0IHJlcXVpcmVkIGNyb3NzIHByb3BlcnR5IHNxbGl0ZTNfaGFzX2Z0czUKLWRvX3dyaXRlX2NvbmZpZ1t2YXJkZXBzXSArPSAiUEFDS0FHRUNPTkZJRyIKLWRvX3dyaXRlX2NvbmZpZ19hcHBlbmQoKSB7Ci0gICAgZWNobyAiW3Byb3BlcnRpZXNdIiA+ICR7V09SS0RJUn0vbWVzb24tdHJhY2tlci5jcm9zcwotICAgIGVjaG8gInNxbGl0ZTNfaGFzX2Z0czUgPSAnJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZnRzJywgJ3RydWUnLCAnZmFsc2UnLCBkKX0nIiA+PiAke1dPUktESVJ9L21lc29uLXRyYWNrZXIuY3Jvc3MKLX0KLQotRVhUUkFfT0VNRVNPTiA9ICItLWNyb3NzLWZpbGUgJHtXT1JLRElSfS9tZXNvbi10cmFja2VyLmNyb3NzIgotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMSBcCi0gICAgJHtsaWJkaXJ9L3RyYWNrZXItMi4wIFwKLSAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvdHJhY2tlci90cmFja2VyXzIuMy40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3RyYWNrZXIvdHJhY2tlcl8yLjMuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTkwNzcxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3RyYWNrZXIvdHJhY2tlcl8yLjMuNC5iYgpAQCAtMCwwICsxLDUwIEBACitTVU1NQVJZID0gIlRyYWNrZXIgaXMgYSBmaWxlIHNlYXJjaCBlbmdpbmUiCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gIiBcCisgICAgZmlsZTovL0NPUFlJTkcuR1BMO21kNT1lZTMxMDEyYmY5MGU3YjhjMTA4YzY5ZjE5N2YzZTNhNCBcCisgICAgZmlsZTovL0NPUFlJTkcuTEdQTDttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAorIgorCitERVBFTkRTID0gIiBcCisgICAgbGlieG1sMi1uYXRpdmUgXAorICAgIGRidXMtbmF0aXZlIFwKKyAgICBnbGliLTIuMCBcCisgICAgc3FsaXRlMyBcCisgICAgbGliYXJjaGl2ZSBcCisgICAgZGJ1cyBcCisgICAgaWN1IFwKKyAgICBqc29uLWdsaWIgXAorICAgIGxpYnNvdXAtMi40IFwKKyAgICBsaWJzdGVtbWVyIFwKKyIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGdvYmplY3QtaW50cm9zcGVjdGlvbiB2YWxhIGd0ay1kb2MgbWFucGFnZXMgYmFzaC1jb21wbGV0aW9uIGZlYXR1cmVzX2NoZWNrCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjk5MzdjZjQ4MTJjYTg1MDc4OTA3MzI0YzdjZGY3ZGQ4IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNTc3OTUyMjQ0YWI5NzdjNzhiMGI4OGUyZjYzYzQxOTdlYWJhMTZlNGQ2NmJmZjY5MmI3ZjU4OTkzZTA2NTE2ZCIKKworIyBnb2JqZWN0LWludHJvc3BlY3Rpb24gaXMgbWFuZGF0b3J5IGFuZCBjYW5ub3QgYmUgY29uZmlndXJlZAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gImdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIgorVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUX2FwcGVuZCA9ICIgaW50cm9zcGVjdGlvbiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImZ0cyIKK1BBQ0tBR0VDT05GSUdbbmV0d29ya21hbmFnZXJdID0gIi1EbmV0d29ya19tYW5hZ2VyPWVuYWJsZWQsLURuZXR3b3JrX21hbmFnZXI9ZGlzYWJsZWQsbmV0d29ya21hbmdlciIKKyMgZnVsbCB0ZXh0IHNlYXJjaCByZXF1aXJlcyBzcWxpdGUzIGJ1aWxkIHdpdGggUEFDS0FHRUNPTkZJR1tmdHM1XSBzZXQKK1BBQ0tBR0VDT05GSUdbZnRzXSA9ICItRGZ0cz10cnVlLC1EZnRzPWZhbHNlIgorCisjIHNldCByZXF1aXJlZCBjcm9zcyBwcm9wZXJ0eSBzcWxpdGUzX2hhc19mdHM1Citkb193cml0ZV9jb25maWdbdmFyZGVwc10gKz0gIlBBQ0tBR0VDT05GSUciCitkb193cml0ZV9jb25maWdfYXBwZW5kKCkgeworICAgIGVjaG8gIltwcm9wZXJ0aWVzXSIgPiAke1dPUktESVJ9L21lc29uLXRyYWNrZXIuY3Jvc3MKKyAgICBlY2hvICJzcWxpdGUzX2hhc19mdHM1ID0gJyR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2Z0cycsICd0cnVlJywgJ2ZhbHNlJywgZCl9JyIgPj4gJHtXT1JLRElSfS9tZXNvbi10cmFja2VyLmNyb3NzCit9CisKK0VYVFJBX09FTUVTT04gPSAiLS1jcm9zcy1maWxlICR7V09SS0RJUn0vbWVzb24tdHJhY2tlci5jcm9zcyIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7bGliZGlyfS90cmFja2VyLTIuMCBcCisgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3llbHAveWVscF8zLjM0LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUveWVscC95ZWxwXzMuMzQuMC5iYgppbmRleCAzNDg3MjdlLi5mMDEwNjE2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUveWVscC95ZWxwXzMuMzQuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUveWVscC95ZWxwXzMuMzQuMC5iYgpAQCAtNCw3ICs0LDcgQEAKICAgICBmaWxlOi8vQ09QWUlORzttZDU9NmUxYjljYjc4N2U3NmQ3ZTY5NDY4ODdhNjVjYWE3NTQgXAogIgogCi1pbmhlcml0IGdub21lYmFzZSBpdHN0b29sIGF1dG90b29scy1icm9rZW5zZXAgZ3NldHRpbmdzIGdldHRleHQgZ3RrLWRvYyBmZWF0dXJlc19jaGVjaworaW5oZXJpdCBnbm9tZWJhc2UgaXRzdG9vbCBhdXRvdG9vbHMtYnJva2Vuc2VwIGdzZXR0aW5ncyBnZXR0ZXh0IGd0ay1kb2MgZmVhdHVyZXNfY2hlY2sgbWltZS14ZGcKIAogIyBmb3Igd2Via2l0Z3RrCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4zNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4zNC4xLmJiCmluZGV4IDFlNTMwZWYuLmFkNjlhYjYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMzQuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl8zLjM0LjEuYmIKQEAgLTUsOSArNSw5IEBACiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc3lzcHJvZi9zeXNwcm9mLWFwcGxpY2F0aW9uLmM7ZW5kbGluZT0xNzttZDU9YTNkZThkZjNiMGY4ODc2ZGQwMWUxMzg4ZDJkNGI2MDciCiAKIEdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi1pbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHN5c3RlbWQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdzZXR0aW5ncworaW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCBzeXN0ZW1kIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnc2V0dGluZ3MgbWltZSBtaW1lLXhkZwogCi1ERVBFTkRTID0gImdsaWItMi4wIGxpYnhtbDItbmF0aXZlIGdsaWItMi4wLW5hdGl2ZSIKK0RFUEVORFMgKz0gImdsaWItMi4wIGxpYnhtbDItbmF0aXZlIGdsaWItMi4wLW5hdGl2ZSIKIAogU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiY2MzMjQ1NTI3N2IzMWFmYjE5NjVkNjI3YWUzZTM2MjkiCiBTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI4NDRiYmI4ZDhiNjUwNzFiM2JjYTk2ZjhlOTIxMzE5Y2VlZjgxZjJkMmM1MWZjYzlkYTYzYTRiMzU1Yzg5M2QwIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvb25ib2FyZC9vbmJvYXJkXzEuNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvb25ib2FyZC9vbmJvYXJkXzEuNC4xLmJiCmluZGV4IDAzZmQwNTEuLjFlYjRhMTAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L29uYm9hcmQvb25ib2FyZF8xLjQuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9vbmJvYXJkL29uYm9hcmRfMS40LjEuYmIKQEAgLTEwLDcgKzEwLDcgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICIxYTJmYmU4MmU5MzRmNWIzNzg0MWQxN2ZmNTFlODBlOCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMWNhZTFhYzViMWVmMWFiOTg1YmQyZDJkNzlkZWQ2ZmM5OWVlMDRiMTUzNWNjMWJiMTkxZTQzYTIzMWEzODY1IgogCi1pbmhlcml0IGZlYXR1cmVzX2NoZWNrIHNldHVwdG9vbHMzIHBrZ2NvbmZpZyBndGstaWNvbi1jYWNoZSBnc2V0dGluZ3MKK2luaGVyaXQgZmVhdHVyZXNfY2hlY2sgc2V0dXB0b29sczMgcGtnY29uZmlnIGd0ay1pY29uLWNhY2hlIGdzZXR0aW5ncyBtaW1lLXhkZwogCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1nbm9tZS1hcHBzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZ25vbWUtYXBwcy5iYgppbmRleCA1MjJlOWU5Li4wYjkwMGYwIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1nbm9tZS1hcHBzLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdub21lLWFwcHMuYmIKQEAgLTExLDYgKzExLDcgQEAKICAgICBldmluY2UgXAogICAgIGZpbGUtcm9sbGVyIFwKICAgICBnZWRpdCBcCisgICAgZ2hleCBcCiAgICAgZ25vbWUtY2FsY3VsYXRvciBcCiAgICAgZ25vbWUtZm9udC12aWV3ZXIgXAogICAgIGdub21lLXRlcm1pbmFsIFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL2NvbmYvbGF5ZXIuY29uZiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL2NvbmYvbGF5ZXIuY29uZgppbmRleCA5MzIyMGIxLi42MzRlMDg4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9jb25mL2xheWVyLmNvbmYKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvY29uZi9sYXllci5jb25mCkBAIC0xNiw3ICsxNiw3IEBACiBCQkZJTEVfUFJJT1JJVFlfbWV0YS1pbml0cmFtZnMgPSAiOCIKIExBWUVSREVQRU5EU19tZXRhLWluaXRyYW1mcyA9ICJjb3JlIgogCi1MQVlFUlNFUklFU19DT01QQVRfbWV0YS1pbml0cmFtZnMgPSAidGh1ZCB3YXJyaW9yIHpldXMiCitMQVlFUlNFUklFU19DT01QQVRfbWV0YS1pbml0cmFtZnMgPSAidGh1ZCB3YXJyaW9yIHpldXMgZHVuZmVsbCIKIAogU0lHR0VOX0VYQ0xVREVfU0FGRV9SRUNJUEVfREVQUyArPSAiIFwKICAgZHJhY3V0LT52aXJ0dWFsL2tlcm5lbCBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9pbWFnZXMvaW5pdHJhbWZzLWRlYnVnLWltYWdlLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3AvaW1hZ2VzL2luaXRyYW1mcy1kZWJ1Zy1pbWFnZS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU3MzUwYS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9pbWFnZXMvaW5pdHJhbWZzLWRlYnVnLWltYWdlLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotIyBTaW1wbGUgaW5pdHJhbWZzIGltYWdlLiBNb3N0bHkgdXNlZCBmb3IgbGl2ZSBpbWFnZXMuCi1ERVNDUklQVElPTiA9ICJTbWFsbCBpbWFnZSBjYXBhYmxlIG9mIGJvb3RpbmcgYSBkZXZpY2UuIFRoZSBrZXJuZWwgaW5jbHVkZXMgXAotdGhlIE1pbmltYWwgUkFNLWJhc2VkIEluaXRpYWwgUm9vdCBGaWxlc3lzdGVtIChpbml0cmFtZnMpLCB3aGljaCBvbmUgY2FuIHVzZSBcCi10byBjaGVjayB0aGUgaGFyZHdhcmUgZWZmaWNpZW50bHkuIgotCi1QQUNLQUdFX0lOU1RBTEwgPSAiaW5pdHJhbWZzLWRlYnVnIGJ1c3lib3ggYmFzZS1wYXNzd2QgJHtST09URlNfQk9PVFNUUkFQX0lOU1RBTEx9IgotCi0jIERvIG5vdCBwb2xsdXRlIHRoZSBpbml0cmQgaW1hZ2Ugd2l0aCByb290ZnMgZmVhdHVyZXMKLUlNQUdFX0ZFQVRVUkVTID0gIiIKLQotZXhwb3J0IElNQUdFX0JBU0VOQU1FID0gImluaXRyYW1mcy1kZWJ1Zy1pbWFnZSIKLUlNQUdFX0xJTkdVQVMgPSAiIgotCi1MSUNFTlNFID0gIk1JVCIKLQotSU1BR0VfRlNUWVBFUyA9ICIke0lOSVRSQU1GU19GU1RZUEVTfSIKLWluaGVyaXQgY29yZS1pbWFnZQotCi1JTUFHRV9ST09URlNfU0laRSA9ICI4MTkyIgotSU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFID0gIjAiCi0KLUJBRF9SRUNPTU1FTkRBVElPTlMgKz0gImJ1c3lib3gtc3lzbG9nIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2tleGVjYm9vdF9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3Qva2V4ZWNib290X2dpdC5iYgppbmRleCA0YjIwZTFlLi5lZDNkZWNlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3Qva2V4ZWNib290X2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3Qva2V4ZWNib290X2dpdC5iYgpAQCAtOCw3ICs4LDcgQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9rZXhlY2Jvb3Qva2V4ZWNib290LmdpdCIKIFNSQ19VUklfYXBwZW5kX2xpYmMta2xpYmMgPSAiIGZpbGU6Ly8wMDAxLWtleGVjYm9vdC1Vc2UtbmV3LXJlYm9vdC1BUEktd2l0aC1rbGliYy5wYXRjaCAiCiAKLVNSQ1JFViA9ICI3NDA5YTFlMGFhZWE2MWFmODdjNGVjYTAxNDljZWMxOGE5ZjU4YWI2IgorU1JDUkVWID0gIjVhNWUwNGJlMjA2MTQwMDU5ZjQyYWM3ODZkNDI0ZGExYWZhYTA0YjYiCiBpbmhlcml0IGF1dG90b29scwogCiBFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdGV4dHVpIC0tZW5hYmxlLWRlbGF5PTIgLS1lbmFibGUtZXZkZXYtcmF0ZT0xMDAwLDI1MCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtY29yZS9pbWFnZXMvaW5pdHJhbWZzLWRlYnVnLWltYWdlLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1jb3JlL2ltYWdlcy9pbml0cmFtZnMtZGVidWctaW1hZ2UuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNkY2QyYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtY29yZS9pbWFnZXMvaW5pdHJhbWZzLWRlYnVnLWltYWdlLmJiCkBAIC0wLDAgKzEsMjAgQEAKKyMgU2ltcGxlIGluaXRyYW1mcyBpbWFnZS4gTW9zdGx5IHVzZWQgZm9yIGxpdmUgaW1hZ2VzLgorREVTQ1JJUFRJT04gPSAiU21hbGwgaW1hZ2UgY2FwYWJsZSBvZiBib290aW5nIGEgZGV2aWNlLiBUaGUga2VybmVsIGluY2x1ZGVzIFwKK3RoZSBNaW5pbWFsIFJBTS1iYXNlZCBJbml0aWFsIFJvb3QgRmlsZXN5c3RlbSAoaW5pdHJhbWZzKSwgd2hpY2ggb25lIGNhbiB1c2UgXAordG8gY2hlY2sgdGhlIGhhcmR3YXJlIGVmZmljaWVudGx5LiIKKworUEFDS0FHRV9JTlNUQUxMID0gImluaXRyYW1mcy1kZWJ1ZyBidXN5Ym94IGJhc2UtcGFzc3dkICR7Uk9PVEZTX0JPT1RTVFJBUF9JTlNUQUxMfSIKKworIyBEbyBub3QgcG9sbHV0ZSB0aGUgaW5pdHJkIGltYWdlIHdpdGggcm9vdGZzIGZlYXR1cmVzCitJTUFHRV9GRUFUVVJFUyA9ICIiCisKK2V4cG9ydCBJTUFHRV9CQVNFTkFNRSA9ICJpbml0cmFtZnMtZGVidWctaW1hZ2UiCitJTUFHRV9MSU5HVUFTID0gIiIKKworSU1BR0VfRlNUWVBFUyA9ICIke0lOSVRSQU1GU19GU1RZUEVTfSIKK2luaGVyaXQgY29yZS1pbWFnZQorCitJTUFHRV9ST09URlNfU0laRSA9ICI4MTkyIgorSU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFID0gIjAiCisKK0JBRF9SRUNPTU1FTkRBVElPTlMgKz0gImJ1c3lib3gtc3lzbG9nIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3AvaW1hZ2VzL2luaXRyYW1mcy1rZXhlY2Jvb3QtaW1hZ2UuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWNvcmUvaW1hZ2VzL2luaXRyYW1mcy1rZXhlY2Jvb3QtaW1hZ2UuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2ltYWdlcy9pbml0cmFtZnMta2V4ZWNib290LWltYWdlLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWNvcmUvaW1hZ2VzL2luaXRyYW1mcy1rZXhlY2Jvb3QtaW1hZ2UuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2ltYWdlcy9pbml0cmFtZnMta2V4ZWNib290LWtsaWJjLWltYWdlLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1jb3JlL2ltYWdlcy9pbml0cmFtZnMta2V4ZWNib290LWtsaWJjLWltYWdlLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9pbWFnZXMvaW5pdHJhbWZzLWtleGVjYm9vdC1rbGliYy1pbWFnZS5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1jb3JlL2ltYWdlcy9pbml0cmFtZnMta2V4ZWNib290LWtsaWJjLWltYWdlLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWNvcmUvaW1hZ2VzL21ldGEtaW5pdHJhbWZzLWltYWdlLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1jb3JlL2ltYWdlcy9tZXRhLWluaXRyYW1mcy1pbWFnZS5iYgppbmRleCA5ZDcwZDZkLi40YzA0MWViIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWNvcmUvaW1hZ2VzL21ldGEtaW5pdHJhbWZzLWltYWdlLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtY29yZS9pbWFnZXMvbWV0YS1pbml0cmFtZnMtaW1hZ2UuYmIKQEAgLTMsNiArMyw0IEBACiBJTUFHRV9JTlNUQUxMID0gInBhY2thZ2Vncm91cC1jb3JlLWJvb3QgXAogICAgICAgICAgICAgICAgICBwYWNrYWdlZ3JvdXAtbWV0YS1pbml0cmFtZnMiCiAKLUxJQ0VOU0UgPSAiTUlUIgotCiBpbmhlcml0IGNvcmUtaW1hZ2UKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1kZWJ1Zy5zaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtZGVidWcuc2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1kZWJ1Zy5zaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1kZWJ1Zy5zaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3AvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZGVidWdfMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWRlYnVnXzEuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3AvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZGVidWdfMS4wLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZGVidWdfMS4wLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS1pbml0cmFtZnMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS1pbml0cmFtZnMuYmIKaW5kZXggYmZlZGU1YS4uMjk1NWJhZSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtaW5pdHJhbWZzLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLWluaXRyYW1mcy5iYgpAQCAtNiwzMSArNiwxMyBAQAogUEFDS0FHRVMgPSAnIFwKICAgICBwYWNrYWdlZ3JvdXAtbWV0YS1pbml0cmFtZnMgXAogICAgIHBhY2thZ2Vncm91cC1tZXRhLWluaXRyYW1mcy1kZXZ0b29scyBcCi0gICAgcGFja2FnZWdyb3VwLW1ldGEtaW5pdHJhbWZzLWtlcm5lbCBcCiAnCiAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLWluaXRyYW1mcyA9ICJcCiAgICAgcGFja2FnZWdyb3VwLW1ldGEtaW5pdHJhbWZzLWRldnRvb2xzIFwKLSAgICBwYWNrYWdlZ3JvdXAtbWV0YS1pbml0cmFtZnMta2VybmVsIFwKICIKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtaW5pdHJhbWZzLWRldnRvb2xzID0gIlwKLSAgICBsaWJrbGliYyAgZHJhY3V0IFwKLSAgICBrbGliYy11dGlscy1jYXQga2xpYmMtdXRpbHMtbG9zZXR1cCBrbGliYy11dGlscy1yZWFkbGluayBrbGliYy11dGlscy1jaHJvb3QgXAotICAgIGtsaWJjLXV0aWxzLWxzIGtsaWJjLXV0aWxzLXJlYm9vdCBrbGliYy11dGlscy1jcGlvIGtsaWJjLXV0aWxzLW1pbmlwcyBcCi0gICAga2xpYmMtdXRpbHMtcmVzdW1lIGtsaWJjLXV0aWxzLWRkIGtsaWJjLXV0aWxzLW1rZGlyIGtsaWJjLXV0aWxzLXJ1bi1pbml0IFwKLSAgICBrbGliYy11dGlscy1kbWVzZyBrbGliYy11dGlscy1ta2ZpZm8ga2xpYmMtdXRpbHMtc2guc2hhcmVkIGtsaWJjLXV0aWxzLWZhbHNlIFwKLSAgICBrbGliYy11dGlscy1ta25vZCBrbGliYy11dGlscy1zbGVlcCBrbGliYy11dGlscy1mc3R5cGUga2xpYmMtdXRpbHMtbW91bnQgXAotICAgIGtsaWJjLXV0aWxzLXN5bmMga2xpYmMtdXRpbHMtaGFsdCBrbGliYy11dGlscy1tdiBrbGliYy11dGlscy10cnVlIGtsaWJjLXV0aWxzLWlwY29uZmlnIFwKLSAgICBrbGliYy11dGlscy1uZnNtb3VudCBrbGliYy11dGlscy11bW91bnQga2xpYmMtdXRpbHMta2lsbCBrbGliYy11dGlscy1udWtlIGtsaWJjLXV0aWxzLXVuYW1lIFwKLSAgICBtdGRpbmZvLWtsaWJjIHViaWF0dGFjaC1rbGliYyB1YmlibG9jay1rbGliYyB1YmljcmMzMi1rbGliYyB1YmlkZXRhY2gta2xpYmMgXAotICAgIHViaWZvcm1hdC1rbGliYyB1Ymlta3ZvbC1rbGliYyB1YmluZm8ta2xpYmMgdWJpbml6ZS1rbGliYyB1YmlyZW5hbWUta2xpYmMgXAotICAgIHViaXJtdm9sLWtsaWJjIHViaXJzdm9sLWtsaWJjIHViaXVwZGF0ZXZvbC1rbGliYyBcCisgICAgZHJhY3V0IFwKICAgICAke0BiYi51dGlscy5jb250YWluc19hbnkoIlRSQU5TTEFURURfVEFSR0VUX0FSQ0giLCAiaTU4NiB4ODYtNjQiLCAiZ3J1YmJ5IiwgIiIsIGQpfSBcCiAgICAgIgotCi1SREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1pbml0cmFtZnMta2VybmVsID0gIlwKLSAgICBrZXhlYy1rbGliYyB2bWNvcmUtZG1lc2cta2xpYmMgXAotICAgICIKLQotRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMuaW5jCmluZGV4IDI4OTI4OGQuLjU0Y2QzYzIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMuaW5jCkBAIC03Nyw0ICs3Nyw1IEBACiBLTElCQ19BUkNIX3g4Ni02NCA9ICJ4ODZfNjQiCiBLTElCQ19BUkNIX3Bvd2VycGMgPSAicHBjIgogS0xJQkNfQVJDSF9wb3dlcnBjNjQgPSAicHBjNjQiCitLTElCQ19BUkNIX3Bvd2VycGM2NGxlID0gInBwYzY0IgogVEhJU19MSUJLTElCQyA9ICJsaWJrbGliYyAoPSAke1BWfS0ke1BSfSkiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvUkVBRE1FIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL1JFQURNRQppbmRleCAyMGY0ZmI4Li4zYzRiMWFmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvUkVBRE1FCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9SRUFETUUKQEAgLTE2LDQgKzE2LDQgQEAKIAogWW91IGFyZSBlbmNvdXJhZ2VkIHRvIGZvcmsgdGhlIG1pcnJvciBvbiBnaXRodWIgaHR0cHM6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9tZXRhLW9lLyB0byBzaGFyZSB5b3VyIHBhdGNoZXMsIHRoaXMgaXMgcHJlZmVycmVkIGZvciBwYXRjaCBzZXRzIGNvbnNpc3Rpbmcgb2YgbW9yZSB0aGFuIG9uZSBwYXRjaC4gT3RoZXIgc2VydmljZXMgbGlrZSBnaXRvcmlvdXMsIHJlcG8ub3IuY3ogb3Igc2VsZiBob3N0ZWQgc2V0dXBzIGFyZSBvZiBjb3Vyc2UgYWNjZXB0ZWQgYXMgd2VsbCwgJ2dpdCBmZXRjaCA8cmVtb3RlPicgd29ya3MgdGhlIHNhbWUgb24gYWxsIG9mIHRoZW0uIFdlIHJlY29tbWVuZCBnaXRodWIgYmVjYXVzZSBpdCBpcyBmcmVlLCBlYXN5IHRvIHVzZSwgaGFzIGJlZW4gcHJvdmVuIHRvIGJlIHJlbGlhYmxlIGFuZCBoYXMgYSByZWFsbHkgZ29vZCB3ZWIgR1VJLgogCi1MYXllciBtYWludGFpbmVyOiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+CitMYXllciBtYWludGFpbmVyOiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL2NvbmYvbGF5ZXIuY29uZiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9jb25mL2xheWVyLmNvbmYKaW5kZXggNzRkZDRhMS4uMmQ1MmZiOSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL2NvbmYvbGF5ZXIuY29uZgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvY29uZi9sYXllci5jb25mCkBAIC0zMSw0ICszMSw0IEBACiAKIExBWUVSREVQRU5EU19tdWx0aW1lZGlhLWxheWVyID0gImNvcmUgbWV0YS1weXRob24iCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF9tdWx0aW1lZGlhLWxheWVyID0gInRodWQgd2FycmlvciB6ZXVzIgorTEFZRVJTRVJJRVNfQ09NUEFUX211bHRpbWVkaWEtbGF5ZXIgPSAidGh1ZCB3YXJyaW9yIHpldXMgZHVuZmVsbCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9saWNlbnNlcy9GcmF1bmhvZmVyX0ZES19BQUNfQ29kZWNfTGlicmFyeV9mb3JfQW5kcm9pZCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9saWNlbnNlcy9GcmF1bmhvZmVyX0ZES19BQUNfQ29kZWNfTGlicmFyeV9mb3JfQW5kcm9pZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWIzMmJkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL2xpY2Vuc2VzL0ZyYXVuaG9mZXJfRkRLX0FBQ19Db2RlY19MaWJyYXJ5X2Zvcl9BbmRyb2lkCkBAIC0wLDAgKzEsOTIgQEAKK1NvZnR3YXJlIExpY2Vuc2UgZm9yIFRoZSBGcmF1bmhvZmVyIEZESyBBQUMgQ29kZWMgTGlicmFyeSBmb3IgQW5kcm9pZAorCivCqSBDb3B5cmlnaHQgIDE5OTUgLSAyMDE4IEZyYXVuaG9mZXItR2VzZWxsc2NoYWZ0IHp1ciBGw7ZyZGVydW5nIGRlciBhbmdld2FuZHRlbgorRm9yc2NodW5nIGUuVi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworIDEuICAgIElOVFJPRFVDVElPTgorVGhlIEZyYXVuaG9mZXIgRkRLIEFBQyBDb2RlYyBMaWJyYXJ5IGZvciBBbmRyb2lkICgiRkRLIEFBQyBDb2RlYyIpIGlzIHNvZnR3YXJlCit0aGF0IGltcGxlbWVudHMgdGhlIE1QRUcgQWR2YW5jZWQgQXVkaW8gQ29kaW5nICgiQUFDIikgZW5jb2RpbmcgYW5kIGRlY29kaW5nCitzY2hlbWUgZm9yIGRpZ2l0YWwgYXVkaW8uIFRoaXMgRkRLIEFBQyBDb2RlYyBzb2Z0d2FyZSBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIG9uCithIHdpZGUgdmFyaWV0eSBvZiBBbmRyb2lkIGRldmljZXMuCisKK0FBQydzIEhFLUFBQyBhbmQgSEUtQUFDIHYyIHZlcnNpb25zIGFyZSByZWdhcmRlZCBhcyB0b2RheSdzIG1vc3QgZWZmaWNpZW50CitnZW5lcmFsIHBlcmNlcHR1YWwgYXVkaW8gY29kZWNzLiBBQUMtRUxEIGlzIGNvbnNpZGVyZWQgdGhlIGJlc3QtcGVyZm9ybWluZworZnVsbC1iYW5kd2lkdGggY29tbXVuaWNhdGlvbnMgY29kZWMgYnkgaW5kZXBlbmRlbnQgc3R1ZGllcyBhbmQgaXMgd2lkZWx5CitkZXBsb3llZC4gQUFDIGhhcyBiZWVuIHN0YW5kYXJkaXplZCBieSBJU08gYW5kIElFQyBhcyBwYXJ0IG9mIHRoZSBNUEVHCitzcGVjaWZpY2F0aW9ucy4KKworUGF0ZW50IGxpY2Vuc2VzIGZvciBuZWNlc3NhcnkgcGF0ZW50IGNsYWltcyBmb3IgdGhlIEZESyBBQUMgQ29kZWMgKGluY2x1ZGluZwordGhvc2Ugb2YgRnJhdW5ob2ZlcikgbWF5IGJlIG9idGFpbmVkIHRocm91Z2ggVmlhIExpY2Vuc2luZworKHd3dy52aWFsaWNlbnNpbmcuY29tKSBvciB0aHJvdWdoIHRoZSByZXNwZWN0aXZlIHBhdGVudCBvd25lcnMgaW5kaXZpZHVhbGx5IGZvcgordGhlIHB1cnBvc2Ugb2YgZW5jb2Rpbmcgb3IgZGVjb2RpbmcgYml0IHN0cmVhbXMgaW4gcHJvZHVjdHMgdGhhdCBhcmUgY29tcGxpYW50Cit3aXRoIHRoZSBJU08vSUVDIE1QRUcgYXVkaW8gc3RhbmRhcmRzLiBQbGVhc2Ugbm90ZSB0aGF0IG1vc3QgbWFudWZhY3R1cmVycyBvZgorQW5kcm9pZCBkZXZpY2VzIGFscmVhZHkgbGljZW5zZSB0aGVzZSBwYXRlbnQgY2xhaW1zIHRocm91Z2ggVmlhIExpY2Vuc2luZyBvcgorZGlyZWN0bHkgZnJvbSB0aGUgcGF0ZW50IG93bmVycywgYW5kIHRoZXJlZm9yZSBGREsgQUFDIENvZGVjIHNvZnR3YXJlIG1heQorYWxyZWFkeSBiZSBjb3ZlcmVkIHVuZGVyIHRob3NlIHBhdGVudCBsaWNlbnNlcyB3aGVuIGl0IGlzIHVzZWQgZm9yIHRob3NlCitsaWNlbnNlZCBwdXJwb3NlcyBvbmx5LgorCitDb21tZXJjaWFsbHktbGljZW5zZWQgQUFDIHNvZnR3YXJlIGxpYnJhcmllcywgaW5jbHVkaW5nIGZsb2F0aW5nLXBvaW50IHZlcnNpb25zCit3aXRoIGVuaGFuY2VkIHNvdW5kIHF1YWxpdHksIGFyZSBhbHNvIGF2YWlsYWJsZSBmcm9tIEZyYXVuaG9mZXIuIFVzZXJzIGFyZQorZW5jb3VyYWdlZCB0byBjaGVjayB0aGUgRnJhdW5ob2ZlciB3ZWJzaXRlIGZvciBhZGRpdGlvbmFsIGFwcGxpY2F0aW9ucworaW5mb3JtYXRpb24gYW5kIGRvY3VtZW50YXRpb24uCisKKzIuICAgIENPUFlSSUdIVCBMSUNFTlNFCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCithcmUgcGVybWl0dGVkIHdpdGhvdXQgcGF5bWVudCBvZiBjb3B5cmlnaHQgbGljZW5zZSBmZWVzIHByb3ZpZGVkIHRoYXQgeW91CitzYXRpc2Z5IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworWW91IG11c3QgcmV0YWluIHRoZSBjb21wbGV0ZSB0ZXh0IG9mIHRoaXMgc29mdHdhcmUgbGljZW5zZSBpbiByZWRpc3RyaWJ1dGlvbnMgb2YKK3RoZSBGREsgQUFDIENvZGVjIG9yIHlvdXIgbW9kaWZpY2F0aW9ucyB0aGVyZXRvIGluIHNvdXJjZSBjb2RlIGZvcm0uCisKK1lvdSBtdXN0IHJldGFpbiB0aGUgY29tcGxldGUgdGV4dCBvZiB0aGlzIHNvZnR3YXJlIGxpY2Vuc2UgaW4gdGhlIGRvY3VtZW50YXRpb24KK2FuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCByZWRpc3RyaWJ1dGlvbnMgb2YgdGhlIEZESyBBQUMgQ29kZWMgb3IKK3lvdXIgbW9kaWZpY2F0aW9ucyB0aGVyZXRvIGluIGJpbmFyeSBmb3JtLiBZb3UgbXVzdCBtYWtlIGF2YWlsYWJsZSBmcmVlIG9mCitjaGFyZ2UgY29waWVzIG9mIHRoZSBjb21wbGV0ZSBzb3VyY2UgY29kZSBvZiB0aGUgRkRLIEFBQyBDb2RlYyBhbmQgeW91cgorbW9kaWZpY2F0aW9ucyB0aGVyZXRvIHRvIHJlY2lwaWVudHMgb2YgY29waWVzIGluIGJpbmFyeSBmb3JtLgorCitUaGUgbmFtZSBvZiBGcmF1bmhvZmVyIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorZnJvbSB0aGlzIGxpYnJhcnkgd2l0aG91dCBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKK1lvdSBtYXkgbm90IGNoYXJnZSBjb3B5cmlnaHQgbGljZW5zZSBmZWVzIGZvciBhbnlvbmUgdG8gdXNlLCBjb3B5IG9yIGRpc3RyaWJ1dGUKK3RoZSBGREsgQUFDIENvZGVjIHNvZnR3YXJlIG9yIHlvdXIgbW9kaWZpY2F0aW9ucyB0aGVyZXRvLgorCitZb3VyIG1vZGlmaWVkIHZlcnNpb25zIG9mIHRoZSBGREsgQUFDIENvZGVjIG11c3QgY2FycnkgcHJvbWluZW50IG5vdGljZXMgc3RhdGluZwordGhhdCB5b3UgY2hhbmdlZCB0aGUgc29mdHdhcmUgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuIEZvciBtb2RpZmllZCB2ZXJzaW9ucworb2YgdGhlIEZESyBBQUMgQ29kZWMsIHRoZSB0ZXJtICJGcmF1bmhvZmVyIEZESyBBQUMgQ29kZWMgTGlicmFyeSBmb3IgQW5kcm9pZCIKK211c3QgYmUgcmVwbGFjZWQgYnkgdGhlIHRlcm0gIlRoaXJkLVBhcnR5IE1vZGlmaWVkIFZlcnNpb24gb2YgdGhlIEZyYXVuaG9mZXIgRkRLCitBQUMgQ29kZWMgTGlicmFyeSBmb3IgQW5kcm9pZC4iCisKKzMuICAgIE5PIFBBVEVOVCBMSUNFTlNFCisKK05PIEVYUFJFU1MgT1IgSU1QTElFRCBMSUNFTlNFUyBUTyBBTlkgUEFURU5UIENMQUlNUywgaW5jbHVkaW5nIHdpdGhvdXQKK2xpbWl0YXRpb24gdGhlIHBhdGVudHMgb2YgRnJhdW5ob2ZlciwgQVJFIEdSQU5URUQgQlkgVEhJUyBTT0ZUV0FSRSBMSUNFTlNFLgorRnJhdW5ob2ZlciBwcm92aWRlcyBubyB3YXJyYW50eSBvZiBwYXRlbnQgbm9uLWluZnJpbmdlbWVudCB3aXRoIHJlc3BlY3QgdG8gdGhpcworc29mdHdhcmUuCisKK1lvdSBtYXkgdXNlIHRoaXMgRkRLIEFBQyBDb2RlYyBzb2Z0d2FyZSBvciBtb2RpZmljYXRpb25zIHRoZXJldG8gb25seSBmb3IKK3B1cnBvc2VzIHRoYXQgYXJlIGF1dGhvcml6ZWQgYnkgYXBwcm9wcmlhdGUgcGF0ZW50IGxpY2Vuc2VzLgorCis0LiAgICBESVNDTEFJTUVSCisKK1RoaXMgRkRLIEFBQyBDb2RlYyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBieSBGcmF1bmhvZmVyIG9uIGJlaGFsZiBvZiB0aGUgY29weXJpZ2h0Citob2xkZXJzIGFuZCBjb250cmlidXRvcnMgIkFTIElTIiBhbmQgV0lUSE9VVCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCitpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHRoZSBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRhYmlsaXR5IGFuZAorZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCitDT05UUklCVVRPUlMgQkUgTElBQkxFIGZvciBhbnkgZGlyZWN0LCBpbmRpcmVjdCwgaW5jaWRlbnRhbCwgc3BlY2lhbCwgZXhlbXBsYXJ5LAorb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHByb2N1cmVtZW50IG9mIHN1YnN0aXR1dGUKK2dvb2RzIG9yIHNlcnZpY2VzOyBsb3NzIG9mIHVzZSwgZGF0YSwgb3IgcHJvZml0cywgb3IgYnVzaW5lc3MgaW50ZXJydXB0aW9uLAoraG93ZXZlciBjYXVzZWQgYW5kIG9uIGFueSB0aGVvcnkgb2YgbGlhYmlsaXR5LCB3aGV0aGVyIGluIGNvbnRyYWN0LCBzdHJpY3QKK2xpYWJpbGl0eSwgb3IgdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBhcmlzaW5nIGluIGFueSB3YXkgb3V0IG9mIHRoZSB1c2Ugb2YKK3RoaXMgc29mdHdhcmUsIGV2ZW4gaWYgYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2Ygc3VjaCBkYW1hZ2UuCisKKzUuICAgIENPTlRBQ1QgSU5GT1JNQVRJT04KKworRnJhdW5ob2ZlciBJbnN0aXR1dGUgZm9yIEludGVncmF0ZWQgQ2lyY3VpdHMgSUlTCitBdHRlbnRpb246IEF1ZGlvIGFuZCBNdWx0aW1lZGlhIERlcGFydG1lbnRzIC0gRkRLIEFBQyBMTAorQW0gV29sZnNtYW50ZWwgMzMKKzkxMDU4IEVybGFuZ2VuLCBHZXJtYW55CisKK3d3dy5paXMuZnJhdW5ob2Zlci5kZS9hbW0KK2FtbS1pbmZvQGlpcy5mcmF1bmhvZmVyLmRlCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9nc3NkcF8xLjAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9nc3NkcF8xLjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjA4OGVmMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3NzZHBfMS4wLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1TVU1NQVJZID0gIlJlc291cmNlIGRpc2NvdmVyeSBhbmQgYW5ub3VuY2VtZW50IG92ZXIgU1NEUCIKLURFU0NSSVBUSU9OID0gIkdTU0RQIGltcGxlbWVudHMgcmVzb3VyY2UgZGlzY292ZXJ5IGFuZCBhbm5vdW5jZW1lbnQgb3ZlciBTU0RQIChTaW1wZSBTZXJ2aWNlIERpc2NvdmVyeSBQcm90b2NvbCkuIgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyIKLURFUEVORFMgPSAiZ2xpYi0yLjAgbGlic291cC0yLjQiCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8xLjAvJHtCUE59LSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiMzBjOWE0MDY4NTNjNmEzYTAxMmQxNTFkNmU3YWQyYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhMWUxN2MwOWM3ZTFhMTg1YjBiZDg0ZmQ2ZmYzNzk0MDQ1YTNjZDcyOWI3MDdjMjNlNDIyZmY2NjQ3MTUzNWRjIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHZhbGEgZ3RrLWRvYwotCi0jIENvcHkgdmFwaWdlbi5tNCBzbyB0aGF0IGl0IGRvZXNuJ3QgZ2V0IHJlbW92ZWQgYnkgdmFsYSBjbGFzcwotIyAobm9ybWFsbHkgdGhpcyB3b3VsZCBiZSB0aGUgcmlnaHQgdGhpbmcgdG8gZG8sIGJ1dCBpbiBnc3NkcCB0aGUgdmFwaWdlbi5tNCBoYXMgb25seSBhIGN1c3RvbSBtYWNybykKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICAgICBjcCAtZiAke1N9L200L3ZhcGlnZW4ubTQgJHtTfS9tNC92YXBpZ2VuLWN1c3RvbS5tNCB8fCB0cnVlCi19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdndGsnLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR1tndGtdID0gIi0td2l0aC1ndGssLS13aXRob3V0LWd0ayxndGsrMyIKLQotUEFDS0FHRVMgPSsgImdzc2RwLXRvb2xzIgotCi1GSUxFU19nc3NkcC10b29scyA9ICIke2JpbmRpcn0vZ3NzZHAqICR7ZGF0YWRpcn0vZ3NzZHAvKi5nbGFkZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9nc3NkcF8xLjIuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9nc3NkcF8xLjIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGFkZGQyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2dzc2RwXzEuMi4yLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiUmVzb3VyY2UgZGlzY292ZXJ5IGFuZCBhbm5vdW5jZW1lbnQgb3ZlciBTU0RQIgorREVTQ1JJUFRJT04gPSAiR1NTRFAgaW1wbGVtZW50cyByZXNvdXJjZSBkaXNjb3ZlcnkgYW5kIGFubm91bmNlbWVudCBvdmVyIFNTRFAgKFNpbXBlIFNlcnZpY2UgRGlzY292ZXJ5IFByb3RvY29sKS4iCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IgorREVQRU5EUyA9ICJnbGliLTIuMCBsaWJzb3VwLTIuNCIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LzEuMi8ke0JQTn0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImYwMGE0NzBlYmNiYTk2ZjM0ZGVmOGY4M2FjNTg5MWVkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNhYmI5ZTNiNDU2YjgzNTRhNTVlMjNlYjAyMDc1NDVkOTc0NjQzY2RhNmQ2MjM1MjM0NzBlYmJjNDE4OGIwYTQiCisKK0dUS0RPQ19NRVNPTl9PUFRJT04gPSAnZ3RrX2RvYycKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHZhbGEgZ3RrLWRvYworCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnc25pZmZlcicsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW3NuaWZmZXJdID0gIi1Ec25pZmZlcj10cnVlLC1Ec25pZmZlcj1mYWxzZSxndGsrMywiCisKK1BBQ0tBR0VTID0rICJnc3NkcC10b29scyIKKworRklMRVNfZ3NzZHAtdG9vbHMgPSAiJHtiaW5kaXJ9L2dzc2RwKiAke2RhdGFkaXJ9L2dzc2RwLyouZ2xhZGUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtYXZfMC4xMi4xMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1hdl8wLjEyLjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZmQwMjI3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1hdl8wLjEyLjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIGd1cG5wLWF2LmluYwotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vMC4xMi8ke0JQTn0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gIjIxNWY2MjY1MDhkNzZiNzY3ZjVkYTdjOWI5MmU4N2Q4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgwMzhlZjg0ZGRkYmU3YWQ5MWMyMDViZjkxZGRkZjY4NGYwNzJkZjg2MjNmMzliNjU1NWE2YmI3MjgzN2I4NWEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJndXBucC1hdi9ndXBucC1hdi5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjI7bWQ1PTJiNDdiN2I1Zjc5OWQyZWJhYmU2MmI4OTVlODQ4ODIwIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLWF2XzAuMTIuMTEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtYXZfMC4xMi4xMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODgxNjU2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLWF2XzAuMTIuMTEuYmIKQEAgLTAsMCArMSw3IEBACityZXF1aXJlIGd1cG5wLWF2LmluYworCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vMC4xMi8ke0JQTn0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImYwOWU5OWFlMjAyNzFiMGE4Y2FkY2U4MDYwOThhZThiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY4OWRjZjE0OTJhYjg5OTFkYWVhMjkxMzY1YTMyNTQ4YTc3ZDFhMjI5NGQ4NWIzMzYyMmI1NWNjYTljZTZmZGMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJndXBucC1hdi9ndXBucC1hdi5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjI7bWQ1PTJiNDdiN2I1Zjc5OWQyZWJhYmU2MmI4OTVlODQ4ODIwIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2ZpbGVzL21vdmVfdmFwaWdlbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1kbG5hL21vdmVfdmFwaWdlbi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2ZpbGVzL21vdmVfdmFwaWdlbi5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLWRsbmEvbW92ZV92YXBpZ2VuLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtaWdkLzAwMDEtU3d0aWNoLXRvLW5ldy1HVVBuUC1BUEkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtaWdkLzAwMDEtU3d0aWNoLXRvLW5ldy1HVVBuUC1BUEkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY1YTZkOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1pZ2QvMDAwMS1Td3RpY2gtdG8tbmV3LUdVUG5QLUFQSS5wYXRjaApAQCAtMCwwICsxLDEwMSBAQAorRnJvbSA2MzUzMTU1OGExNmFjMjMzNGE1OWY2MjdiMmZjYTU1NzZkY2ZiYjJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVucyBHZW9yZyA8bWFpbEBqZW5zZ2Uub3JnPgorRGF0ZTogU2F0LCAxIERlYyAyMDE4IDIxOjMzOjIxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFN3dGljaCB0byBuZXcgR1VQblAgQVBJCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ3VwbnAtaWdkL2NvbW1pdC82MzUzMTU1OGExNmFjMjMzNGE1OWY2MjdiMmZjYTU1NzZkY2ZiYjJlXQorLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBndXBucC1pZ2QtMS4wLXVuaW5zdGFsbGVkLnBjLmluIHwgMiArLQorIGd1cG5wLWlnZC0xLjAucGMuaW4gICAgICAgICAgICAgfCAyICstCisgbGliZ3VwbnAtaWdkL01ha2VmaWxlLmFtICAgICAgICB8IDIgKy0KKyB0ZXN0cy9ndGVzdC9ndXBucC1zaW1wbGUtaWdkLmMgIHwgNiArKysrLS0KKyA1IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggZjAzOTIxZi4uYWE3ZjBjYSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTEsNyArMTEsNyBAQCBBQ19TVERDX0hFQURFUlMKKyBBQ19QUk9HX0xJQlRPT0wKKyBBQ19GVU5DX01NQVAKKyAKKy1QS0dfQ0hFQ0tfTU9EVUxFUyhMSUJHVVBOUCwgZ2xpYi0yLjAgPj0gMi4yNiBnb2JqZWN0LTIuMCA+PSAyLjI2IGdzc2RwLTEuMCBndXBucC0xLjAgPj0gMC4xOCBndGhyZWFkLTIuMCkKKytQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJHVVBOUCwgZ2xpYi0yLjAgPj0gMi4yNiBnb2JqZWN0LTIuMCA+PSAyLjI2IGdzc2RwLTEuMiBndXBucC0xLjIgPj0gMC4xOCBndGhyZWFkLTIuMCkKKyAKKyAjIGdsaWItZ2VubWFyc2hhbAorIEdMSUJfR0VOTUFSU0hBTD1gcGtnLWNvbmZpZyAtLXZhcmlhYmxlPWdsaWJfZ2VubWFyc2hhbCBnbGliLTIuMGAKK2RpZmYgLS1naXQgYS9ndXBucC1pZ2QtMS4wLXVuaW5zdGFsbGVkLnBjLmluIGIvZ3VwbnAtaWdkLTEuMC11bmluc3RhbGxlZC5wYy5pbgoraW5kZXggNDgzOTU2Zi4uNmRiM2JlZSAxMDA2NDQKKy0tLSBhL2d1cG5wLWlnZC0xLjAtdW5pbnN0YWxsZWQucGMuaW4KKysrKyBiL2d1cG5wLWlnZC0xLjAtdW5pbnN0YWxsZWQucGMuaW4KK0BAIC01LDcgKzUsNyBAQCBpbmNsdWRlZGlyPSR7cGNmaWxlZGlyfS8KKyAKKyBOYW1lOiBndXBucC1pZ2QtMS4wCisgRGVzY3JpcHRpb246IEdVUG5QIFNpbXBsZSBJR0QgbGlicmFyeQorLVJlcXVpcmVzOiBndXBucC0xLjAKKytSZXF1aXJlczogZ3VwbnAtMS4yCisgVmVyc2lvbjogQFZFUlNJT05ACisgTGliczogJHtsaWJkaXJ9L2xpYmd1cG5wLWF2LTEuMC5sYQorIENmbGFnczogLUkke2luY2x1ZGVkaXJ9CitkaWZmIC0tZ2l0IGEvZ3VwbnAtaWdkLTEuMC5wYy5pbiBiL2d1cG5wLWlnZC0xLjAucGMuaW4KK2luZGV4IDY2NjBkNjMuLmFhNzRlZDMgMTAwNjQ0CistLS0gYS9ndXBucC1pZ2QtMS4wLnBjLmluCisrKysgYi9ndXBucC1pZ2QtMS4wLnBjLmluCitAQCAtNSw3ICs1LDcgQEAgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAKKyBOYW1lOiBndXBucC1pZ2QtMS4wCisgRGVzY3JpcHRpb246IEdVUG5QIFNpbXBsZSBJR0QgbGlicmFyeQorLVJlcXVpcmVzOiBndXBucC0xLjAKKytSZXF1aXJlczogZ3VwbnAtMS4yCisgVmVyc2lvbjogQFZFUlNJT05ACisgTGliczogLUwke2xpYmRpcn0gLWxndXBucC1pZ2QtMS4wCisgQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0vZ3VwbnAtaWdkLTEuMAorZGlmZiAtLWdpdCBhL2xpYmd1cG5wLWlnZC9NYWtlZmlsZS5hbSBiL2xpYmd1cG5wLWlnZC9NYWtlZmlsZS5hbQoraW5kZXggZmUwMjBiNS4uZTEwZDg1NyAxMDA2NDQKKy0tLSBhL2xpYmd1cG5wLWlnZC9NYWtlZmlsZS5hbQorKysrIGIvbGliZ3VwbnAtaWdkL01ha2VmaWxlLmFtCitAQCAtNjAsNyArNjAsNyBAQCBHVVBuUElnZF8xXzBfZ2lyX1ZFUlNJT04gPSAxLjAKKyBHVVBuUElnZF8xXzBfZ2lyX0xJQlMgPSAkKGxpYl9MVExJQlJBUklFUykKKyBHVVBuUElnZF8xXzBfZ2lyX0ZJTEVTID0gJChsaWJndXBucF9pZ2RfMV8wX2xhX1NPVVJDRVMpICQobGliZ3VwbnBfaWdkX2luY19IRUFERVJTKQorIEdVUG5QSWdkXzFfMF9naXJfSU5DTFVERVM9R09iamVjdC0yLjAKKy1HVVBuUElnZF8xXzBfZ2lyX1BBQ0tBR0VTPWd1cG5wLTEuMAorK0dVUG5QSWdkXzFfMF9naXJfUEFDS0FHRVM9Z3VwbnAtMS4yCisgR1VQblBJZ2RfMV8wX2dpcl9DRkxBR1M9LUkkKHNyY2RpcikgLUkkKHRvcF9zcmNkaXIpCisgCisgaWYgSEFWRV9JTlRST1NQRUNUSU9OCitkaWZmIC0tZ2l0IGEvdGVzdHMvZ3Rlc3QvZ3VwbnAtc2ltcGxlLWlnZC5jIGIvdGVzdHMvZ3Rlc3QvZ3VwbnAtc2ltcGxlLWlnZC5jCitpbmRleCA5YjMyYjJhLi5kMDUxZDEzIDEwMDY0NAorLS0tIGEvdGVzdHMvZ3Rlc3QvZ3VwbnAtc2ltcGxlLWlnZC5jCisrKysgYi90ZXN0cy9ndGVzdC9ndXBucC1zaW1wbGUtaWdkLmMKK0BAIC0yNzMsMTMgKzI3MywxNCBAQCBydW5fZ3VwbnBfc2ltcGxlX2lnZF90ZXN0IChHTWFpbkNvbnRleHQgKm1haW5jdHgsIEdVUG5QU2ltcGxlSWdkICppZ2QsCisgICBHVVBuUERldmljZUluZm8gKnN1YmRldjE7CisgICBHVVBuUERldmljZUluZm8gKnN1YmRldjI7CisgICBjb25zdCBnY2hhciAqeG1sX3BhdGggPSAiLiI7CisrICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKyAKKyAgIGdfc2lnbmFsX2Nvbm5lY3QgKGlnZCwgImNvbnRleHQtYXZhaWxhYmxlIiwKKyAgICAgICAgIEdfQ0FMTEJBQ0sgKGlnbm9yZV9ub25fbG9jYWxob3N0KSwgTlVMTCk7CisgCisgICBpZiAobWFpbmN0eCkKKyAgICAgZ19tYWluX2NvbnRleHRfcHVzaF90aHJlYWRfZGVmYXVsdCAobWFpbmN0eCk7CistICBjb250ZXh0ID0gZ3VwbnBfY29udGV4dF9uZXcgKE5VTEwsICJsbyIsIDAsIE5VTEwpOworKyAgY29udGV4dCA9IGd1cG5wX2NvbnRleHRfbmV3ICgibG8iLCAwLCBOVUxMKTsKKyAgIGdfYXNzZXJ0IChjb250ZXh0KTsKKyAKKyAgIGlmIChnX2dldGVudiAoIlhNTF9QQVRIIikpCitAQCAtMjkzLDggKzI5NCw5IEBAIHJ1bl9ndXBucF9zaW1wbGVfaWdkX3Rlc3QgKEdNYWluQ29udGV4dCAqbWFpbmN0eCwgR1VQblBTaW1wbGVJZ2QgKmlnZCwKKyAgIGd1cG5wX2NvbnRleHRfaG9zdF9wYXRoIChjb250ZXh0LCAiV0FOUFBQQ29ubmVjdGlvbi54bWwiLCAiL1dBTlBQUENvbm5lY3Rpb24ueG1sIik7CisgICAqLworIAorLSAgZGV2ID0gZ3VwbnBfcm9vdF9kZXZpY2VfbmV3IChjb250ZXh0LCAiSW50ZXJuZXRHYXRld2F5RGV2aWNlLnhtbCIsIHhtbF9wYXRoKTsKKysgIGRldiA9IGd1cG5wX3Jvb3RfZGV2aWNlX25ldyAoY29udGV4dCwgIkludGVybmV0R2F0ZXdheURldmljZS54bWwiLCB4bWxfcGF0aCwgJmVycm9yKTsKKyAgIGdfYXNzZXJ0IChkZXYpOworKyAgZ19hc3NlcnQgKGVycm9yID09IE5VTEwpOworIAorICAgc3ViZGV2MSA9IGd1cG5wX2RldmljZV9pbmZvX2dldF9kZXZpY2UgKEdVUE5QX0RFVklDRV9JTkZPIChkZXYpLAorICAgICAgICJ1cm46c2NoZW1hcy11cG5wLW9yZzpkZXZpY2U6V0FORGV2aWNlOjEiKTsKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1pZ2RfMC4yLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtaWdkXzAuMi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYWE1OTRkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1pZ2RfMC4yLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1TVU1NQVJZID0gIkhlbHBlcnMgZm9yIGludGVyYWN0aW5nIHdpdGggSW50ZXJuZXQgR2F0ZXdheSBEZXZpY2VzIG92ZXIgVVBuUCIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZ3VwbnAtaWdkL2d1cG5wLXNpbXBsZS1pZ2QuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT1hYTI5MmMwZDkzOTA0NjNhNmUxMDU1ZGM1ZmM2OGU4MCIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBndXBucCBzcWxpdGUzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5nbm9tZS5vcmcvc291cmNlcy8ke0JQTn0vMC4yLyR7QlBOfS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiMTI0MzcxMTM2YjVhN2IxMDU2YTM2ODE3ODBhNjI3NzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzhjNGE2ZDc3MThkMTdlYWMxN2RmOTVhM2E4YzMzNzY3N2VkYTc3ZTU4OTc4MTI5YWQzMTgyZDc2OWMzOGU0NCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcHl0aG9uIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLWlnZF8wLjIuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1pZ2RfMC4yLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE5OGFjZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1pZ2RfMC4yLjUuYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJIZWxwZXJzIGZvciBpbnRlcmFjdGluZyB3aXRoIEludGVybmV0IEdhdGV3YXkgRGV2aWNlcyBvdmVyIFVQblAiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmd1cG5wLWlnZC9ndXBucC1zaW1wbGUtaWdkLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9YWEyOTJjMGQ5MzkwNDYzYTZlMTA1NWRjNWZjNjhlODAiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ3NzZHAgZ3VwbnAgc3FsaXRlMyIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuZ25vbWUub3JnL3NvdXJjZXMvJHtCUE59LzAuMi8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtU3d0aWNoLXRvLW5ldy1HVVBuUC1BUEkucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMTY0ZTA5NmQwZjE0MGJiMWY1ZDk1MDM3MjdiNDI0YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4YjRhMWFhMzhiYWNiY2FjMmMxNzU1MTUzMTQ3ZWFkN2VlOWFmN2Q0ZDFmNTQ0YjY1NzdjZmMzNWUxMGUzYjIwIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1weXRob24iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtdG9vbHNfMC4xMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLXRvb2xzXzAuMTAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjg0ZTdiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLXRvb2xzXzAuMTAuMC5iYgpAQCAtMCwwICsxLDEzIEBACitTVU1NQVJZID0gIlRvb2xzIGZvciBHVVBuUCIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL25ldHdvcmstbGlnaHQvbWFpbi5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PTJjMzliM2EwMDA0OTVkYWJkNDkzMmYyMzFjN2VmZWQ4IgorREVQRU5EUyA9ICJndXBucCBndXBucC1hdiBndGsrMyBnbGliLTIuMC1uYXRpdmUgaW50bHRvb2wtbmF0aXZlIgorUlJFQ09NTUVORFNfJHtQTn0gPSAiYWR3YWl0YS1pY29uLXRoZW1lIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5nbm9tZS5vcmcvc291cmNlcy8ke0JQTn0vMC4xMC8ke0JQTn0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjhjNjZkNGFjYTc1NjQ3ODYxNTc2MWEyNmVkN2M4ZGJhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQxZGE3ZmY1YmE4ZTI0MjVhZGNiNjRjYTVlMDRjODFmNTdjYTIwZWM2ZmRiODQ5MjM5MzlmZGFkNDJjNmExOGQiCitpbmhlcml0IGZlYXR1cmVzX2NoZWNrIG1lc29uIHBrZ2NvbmZpZyBnZXR0ZXh0IGd0ay1pY29uLWNhY2hlCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtdG9vbHNfMC44LjEzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLXRvb2xzXzAuOC4xMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E2Yjg3Mi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtdG9vbHNfMC44LjEzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotU1VNTUFSWSA9ICJUb29scyBmb3IgR1VQblAiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9uZXR3b3JrLWxpZ2h0L21haW4uYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT0yYzM5YjNhMDAwNDk1ZGFiZDQ5MzJmMjMxYzdlZmVkOCIKLURFUEVORFMgPSAiZ3VwbnAgZ3VwbnAtYXYgZ3RrKzMgaW50bHRvb2wtbmF0aXZlIgotUlJFQ09NTUVORFNfJHtQTn0gPSAiYWR3YWl0YS1pY29uLXRoZW1lIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5nbm9tZS5vcmcvc291cmNlcy8ke0JQTn0vMC44LyR7QlBOfS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiMjEyZDg1ZWJjZTg5YjMyNDY4YjU5ZTExNjQwNTBkNDAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWEzZGVjYjlkNTMyYzBlMmU1MDVhZGM1OTJmNDMxZmQ4MWMwMjMxZGVkMjk4MTEyOWU4N2RhMTM3MTI0NzllZCIKLWluaGVyaXQgZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0Ci0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLmluYwppbmRleCA2Y2U5NjMxLi4yOTIwNTgxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC5pbmMKQEAgLTQsMjIgKzQsMTYgQEAKIAogREVQRU5EUyA9ICJlMmZzcHJvZ3MgZ3NzZHAgbGlic291cC0yLjQgbGlieG1sMiIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLSMgQ29weSB2YXBpZ2VuLm00IHNvIHRoYXQgaXQgZG9lc24ndCBnZXQgcmVtb3ZlZCBieSB2YWxhIGNsYXNzCi0jIChub3JtYWxseSB0aGlzIHdvdWxkIGJlIHRoZSByaWdodCB0aGluZyB0byBkbywgYnV0IGluIGd1cG5wIHRoZSB2YXBpZ2VuLm00IGhhcyBvbmx5IGEgY3VzdG9tIG1hY3JvKQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgICAgIGNwIC1mICR7U30vbTQvdmFwaWdlbi5tNCAke1N9L200L3ZhcGlnZW4tY3VzdG9tLm00IHx8IHRydWUKLX0KK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uCiAKIEZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8qLnNvLioiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9ndXBucC1iaW5kaW5nLXRvb2wiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9ndXBucC1iaW5kaW5nLXRvb2wqIgogCi1SREVQRU5EU18ke1BOfS1kZXYgPSAicHl0aG9uLXRleHR1dGlscyBweXRob24teG1sIgorUkRFUEVORFNfJHtQTn0tZGV2ID0gInB5dGhvbjMgcHl0aG9uMy14bWwiCiAKIFNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAiZ3VwbnBfc3lzcm9vdF9wcmVwcm9jZXNzIgogCiBndXBucF9zeXNyb290X3ByZXByb2Nlc3MgKCkgewogICAgIGluc3RhbGwgLWQgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8KLSAgICBpbnN0YWxsIC1tIDc1NSAke0R9JHtiaW5kaXJ9L2d1cG5wLWJpbmRpbmctdG9vbCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LworICAgIGluc3RhbGwgLW0gNzU1ICR7RH0ke2JpbmRpcn0vZ3VwbnAtYmluZGluZy10b29sKiAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LwogfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wXzEuMC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wXzEuMC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmRmN2Q3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucF8xLjAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSBndXBucC5pbmMKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LzEuMC8ke0JQTn0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImFmZDk2ZmU3Mzg1NmIzOGFhZjFiYWY3NTI2ZTA4ZWRkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUxNzNmZGE3NzkxMTFjNmIwMWNkNGE1ZTQxYjU5NDMyMmJlOWQwNGY4Yzc0ZDMzNjFmMGEwYzIwNjljNzc2MTAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmd1cG5wL2d1cG5wLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9ZDc4YTY5ZDliNmU2M2VlMmRjNzJlN2I2NzRkOTc1MjAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnBfMS4yLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnBfMS4yLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTYwMzQ5NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucF8xLjIuMi5iYgpAQCAtMCwwICsxLDggQEAKK3JlcXVpcmUgZ3VwbnAuaW5jCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8xLjIvJHtCUE59LSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyYWRlM2QyOWM2MjRhZDk4ZDcwMTEzZTZlOTM5MDhhNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5YTgwYmQ5NTNlNWM4NzcyYWQyNmI3MmY4ZGEwMWNiZTcyNDFhMTEzZWRkNjA4NDkwM2Y0MTNjZTc1MWM5OTg5IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJndXBucC9ndXBucC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWQ3OGE2OWQ5YjZlNjNlZTJkYzcyZTdiNjc0ZDk3NTIwIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3J5Z2VsL3J5Z2VsXzAuMzcuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yeWdlbC9yeWdlbF8wLjM3LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlZTAyZmMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3J5Z2VsL3J5Z2VsXzAuMzcuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBVUG5QIEFWIG1lZGlhIHNlcnZlciBhbmQgcmVuZGVyZXIiCi1ERVNDUklQVElPTiA9ICJSeWdlbCBpcyBhIGhvbWUgbWVkaWEgc29sdXRpb24gKFVQblAgQVYgTWVkaWFTZXJ2ZXIpIHRoYXQgXAotYWxsb3cgeW91IHRvIGVhc2lseSBzaGFyZSBhdWRpbywgdmlkZW8gYW5kIHBpY3R1cmVzIHRvIG90aGVyIGRldmljZXMuIFwKLUFkZGl0aW9uYWxseSwgbWVkaWEgcGxheWVyIHNvZnR3YXJlIG1heSB1c2UgUnlnZWwgdG8gYmVjb21lIGEgTWVkaWFSZW5kZXJlciBcCi10aGF0IG1heSBiZSBjb250cm9sbGVkIHJlbW90ZWx5IGJ5IGEgVVBuUCBvciBETE5BIENvbnRyb2xsZXIuIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL1J5Z2VsIgotCi1MSUNFTlNFID0gIkxHUEwtMi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLURFUEVORFMgPSAibGlieG1sMiBnbGliLTIuMCBnc3NkcCBndXBucCBndXBucC1hdiBndXBucC1kbG5hIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGxpYmdlZSBsaWJzb3VwLTIuNCBsaWJtZWRpYWFydC0yLjAgbGlidW5pc3RyaW5nIHNxbGl0ZTMgaW50bHRvb2wtbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gPSAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS1wbGF5YmFjayBzaGFyZWQtbWltZS1pbmZvIgotUlJFQ09NTUVORFNfJHtQTn0gPSAicnlnZWwtcGx1Z2luLW1lZGlhLWV4cG9ydCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZjg5NzE2N2FkODJlMmU3NDE1ODJmMmMzOTNhNzY4NDMiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkZmQzZDg4NWRhM2FjMzgzYmEwY2ZiZjExOTk5NWY0YTBjMmJjYTJjYzhmOGNmY2QzZGYxMGNmZWM4ZjM1Y2Q3IgotCi1pbmhlcml0IGdub21lYmFzZSB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbiBnZXR0ZXh0IHN5c3RlbWQKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS10cmFja2VyLXBsdWdpbiAtLXdpdGgtbWVkaWEtZW5naW5lPWdzdHJlYW1lciIKLQotUEFDS0FHRUNPTkZJRyA/PSAiZXh0ZXJuYWwgbXByaXMgcnVpaCBtZWRpYS1leHBvcnQgZ3N0LWxhdW5jaCIKLQotUEFDS0FHRUNPTkZJR19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAiIGd0ayszIiwgIiIsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1tleHRlcm5hbF0gPSAiLS1lbmFibGUtZXh0ZXJuYWwtcGx1Z2luLC0tZGlzYWJsZS1leHRlcm5hbC1wbHVnaW4iCi1QQUNLQUdFQ09ORklHW21wcmlzXSA9ICItLWVuYWJsZS1tcHJpcy1wbHVnaW4sLS1kaXNhYmxlLW1wcmlzLXBsdWdpbiIKLVBBQ0tBR0VDT05GSUdbcnVpaF0gPSAiLS1lbmFibGUtcnVpaC1wbHVnaW4sLS1kaXNhYmxlLXJ1aWgtcGx1Z2luIgotUEFDS0FHRUNPTkZJR1ttZWRpYS1leHBvcnRdID0gIi0tZW5hYmxlLW1lZGlhLWV4cG9ydC1wbHVnaW4sLS1kaXNhYmxlLW1lZGlhLWV4cG9ydC1wbHVnaW4iCi1QQUNLQUdFQ09ORklHW2dzdC1sYXVuY2hdID0gIi0tZW5hYmxlLWdzdC1sYXVuY2gtcGx1Z2luLC0tZGlzYWJsZS1nc3QtbGF1bmNoLXBsdWdpbiIKLVBBQ0tBR0VDT05GSUdbZ3RrKzNdID0gIiwtLXdpdGhvdXQtdWksZ3RrKzMiCi1QQUNLQUdFQ09ORklHW2xtc10gPSAiLS1lbmFibGUtbG1zLXBsdWdpbiwtLWRpc2FibGUtbG1zLXBsdWdpbiIKLQotTElCViA9ICIyLjYiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICAgICMgUmVtb3ZlIC5sYSBmaWxlcyBmb3IgbG9hZGFibGUgbW9kdWxlcwotICAgICAgIHJtIC1mICR7RH0vJHtsaWJkaXJ9L3J5Z2VsLSR7TElCVn0vZW5naW5lcy8qLmxhCi0gICAgICAgcm0gLWYgJHtEfS8ke2xpYmRpcn0vcnlnZWwtJHtMSUJWfS9wbHVnaW5zLyoubGEKLSAgICAgICBpZiBbIC1lICR7RH0ke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kL3VzZXIvcnlnZWwuc2VydmljZSBdOyB0aGVuCi0gICAgICAgICAgICAgICBta2RpciAtcCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICAgICAgICAgICAgbXYgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQvdXNlci9yeWdlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgICAgICAgICAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtub25hcmNoX2xpYmRpcn0vc3lzdGVtZC91c2VyIFwKLSAgICAgICAgICAgICAgICR7RH0ke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kIFwKLSAgICAgICAgICAgICAgICR7RH0ke25vbmFyY2hfbGliZGlyfQotICAgICAgIGZpCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vcnlnZWwtJHtMSUJWfS9lbmdpbmVzICR7ZGF0YWRpcn0vZGJ1cy0xICR7ZGF0YWRpcn0vaWNvbnMiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9yeWdlbC0ke0xJQlZ9L2VuZ2luZXMvLmRlYnVnICR7bGliZGlyfS9yeWdlbC0ke0xJQlZ9L3BsdWdpbnMvLmRlYnVnIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tbWV0YSIKLUFMTE9XX0VNUFRZXyR7UE59LW1ldGEgPSAiMSIKLQotUEFDS0FHRVNfRFlOQU1JQyA9ICIke1BOfS1wbHVnaW4tKiIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJ5Z2VsLnNlcnZpY2UiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICByeWdlbF9saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L3J5Z2VsLSR7TElCVn0nKQotICAgIHBvc3RpbnN0ID0gZC5nZXRWYXIoJ3BsdWdpbl9wb3N0aW5zdCcpCi0gICAgcGtncyA9IFtdCi0KLSAgICBwa2dzICs9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIG9lLnBhdGguam9pbihyeWdlbF9saWJkaXIsICJwbHVnaW5zIiksICdsaWJyeWdlbC0oLiopXC5zbyQnLCBkLmV4cGFuZCgnJHtQTn0tcGx1Z2luLSVzJyksICdSeWdlbCBwbHVnaW4gZm9yICVzJywgcG9zdGluc3Q9cG9zdGluc3QsIGV4dHJhX2RlcGVuZHM9ZC5leHBhbmQoJyR7UE59JykpCi0gICAgcGtncyArPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBvZS5wYXRoLmpvaW4ocnlnZWxfbGliZGlyLCAicGx1Z2lucyIpLCAnKC4qKVwucGx1Z2luJCcsIGQuZXhwYW5kKCcke1BOfS1wbHVnaW4tJXMnKSwgJ1J5Z2VsIHBsdWdpbiBmb3IgJXMnLCBwb3N0aW5zdD1wb3N0aW5zdCwgZXh0cmFfZGVwZW5kcz1kLmV4cGFuZCgnJHtQTn0nKSkKLQotICAgIG1ldGFwa2cgPSBkLmdldFZhcignUE4nKSArICctbWV0YScKLSAgICBkLnNldFZhcignUkRFUEVORFNfJyArIG1ldGFwa2csICcgJy5qb2luKHBrZ3MpKQotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3J5Z2VsL3J5Z2VsXzAuMzguMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yeWdlbC9yeWdlbF8wLjM4LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZjODQ1MAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yeWdlbC9yeWdlbF8wLjM4LjMuYmIKQEAgLTAsMCArMSw2OSBAQAorU1VNTUFSWSA9ICJBIFVQblAgQVYgbWVkaWEgc2VydmVyIGFuZCByZW5kZXJlciIKK0RFU0NSSVBUSU9OID0gIlJ5Z2VsIGlzIGEgaG9tZSBtZWRpYSBzb2x1dGlvbiAoVVBuUCBBViBNZWRpYVNlcnZlcikgdGhhdCBcCithbGxvdyB5b3UgdG8gZWFzaWx5IHNoYXJlIGF1ZGlvLCB2aWRlbyBhbmQgcGljdHVyZXMgdG8gb3RoZXIgZGV2aWNlcy4gXAorQWRkaXRpb25hbGx5LCBtZWRpYSBwbGF5ZXIgc29mdHdhcmUgbWF5IHVzZSBSeWdlbCB0byBiZWNvbWUgYSBNZWRpYVJlbmRlcmVyIFwKK3RoYXQgbWF5IGJlIGNvbnRyb2xsZWQgcmVtb3RlbHkgYnkgYSBVUG5QIG9yIERMTkEgQ29udHJvbGxlci4iCitIT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvUnlnZWwiCisKK0xJQ0VOU0UgPSAiTEdQTC0yLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworREVQRU5EUyA9ICJsaWJ4bWwyIGdsaWItMi4wIGdzc2RwIGd1cG5wIGd1cG5wLWF2IGd1cG5wLWRsbmEgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgbGliZ2VlIGxpYnNvdXAtMi40IGxpYm1lZGlhYXJ0LTIuMCBsaWJ1bmlzdHJpbmcgc3FsaXRlMyBpbnRsdG9vbC1uYXRpdmUiCitSREVQRU5EU18ke1BOfSA9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLXBsYXliYWNrIHNoYXJlZC1taW1lLWluZm8iCitSUkVDT01NRU5EU18ke1BOfSA9ICJyeWdlbC1wbHVnaW4tbWVkaWEtZXhwb3J0IgorCitpbmhlcml0IGdub21lYmFzZSB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbiBnZXR0ZXh0IHN5c3RlbWQKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiN2Y5NTQwMTkwM2EzZjg1NWI0NjRkNTE1MmI5ZDRjMDciCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIwOGMyMWE1NzdmN2JkYWQyNjQ0NmE3NWZmYTMyNzc4YjI2ODQyYzNiMTE4ODE2NWYwYjE5ODE4NTU5NzQ3ZDAwIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXRyYWNrZXItcGx1Z2luIC0td2l0aC1tZWRpYS1lbmdpbmU9Z3N0cmVhbWVyIgorCitQQUNLQUdFQ09ORklHID89ICJleHRlcm5hbCBtcHJpcyBydWloIG1lZGlhLWV4cG9ydCBnc3QtbGF1bmNoIgorCitQQUNLQUdFQ09ORklHX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSIsICIgZ3RrKzMiLCAiIiwgZCl9IgorCitQQUNLQUdFQ09ORklHW2V4dGVybmFsXSA9ICItLWVuYWJsZS1leHRlcm5hbC1wbHVnaW4sLS1kaXNhYmxlLWV4dGVybmFsLXBsdWdpbiIKK1BBQ0tBR0VDT05GSUdbbXByaXNdID0gIi0tZW5hYmxlLW1wcmlzLXBsdWdpbiwtLWRpc2FibGUtbXByaXMtcGx1Z2luIgorUEFDS0FHRUNPTkZJR1tydWloXSA9ICItLWVuYWJsZS1ydWloLXBsdWdpbiwtLWRpc2FibGUtcnVpaC1wbHVnaW4iCitQQUNLQUdFQ09ORklHW21lZGlhLWV4cG9ydF0gPSAiLS1lbmFibGUtbWVkaWEtZXhwb3J0LXBsdWdpbiwtLWRpc2FibGUtbWVkaWEtZXhwb3J0LXBsdWdpbiIKK1BBQ0tBR0VDT05GSUdbZ3N0LWxhdW5jaF0gPSAiLS1lbmFibGUtZ3N0LWxhdW5jaC1wbHVnaW4sLS1kaXNhYmxlLWdzdC1sYXVuY2gtcGx1Z2luIgorUEFDS0FHRUNPTkZJR1tndGsrM10gPSAiLC0td2l0aG91dC11aSxndGsrMyIKK1BBQ0tBR0VDT05GSUdbbG1zXSA9ICItLWVuYWJsZS1sbXMtcGx1Z2luLC0tZGlzYWJsZS1sbXMtcGx1Z2luIgorCitMSUJWID0gIjIuNiIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgICAgIyBSZW1vdmUgLmxhIGZpbGVzIGZvciBsb2FkYWJsZSBtb2R1bGVzCisgICAgICAgcm0gLWYgJHtEfS8ke2xpYmRpcn0vcnlnZWwtJHtMSUJWfS9lbmdpbmVzLyoubGEKKyAgICAgICBybSAtZiAke0R9LyR7bGliZGlyfS9yeWdlbC0ke0xJQlZ9L3BsdWdpbnMvKi5sYQorICAgICAgIGlmIFsgLWUgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQvdXNlci9yeWdlbC5zZXJ2aWNlIF07IHRoZW4KKyAgICAgICAgICAgICAgIG1rZGlyIC1wICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgICAgICAgICAgICBtdiAke0R9JHtub25hcmNoX2xpYmRpcn0vc3lzdGVtZC91c2VyL3J5Z2VsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICAgICAgICAgICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kL3VzZXIgXAorICAgICAgICAgICAgICAgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQgXAorICAgICAgICAgICAgICAgJHtEfSR7bm9uYXJjaF9saWJkaXJ9CisgICAgICAgZmkKK30KKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9yeWdlbC0ke0xJQlZ9L2VuZ2luZXMgJHtkYXRhZGlyfS9kYnVzLTEgJHtkYXRhZGlyfS9pY29ucyIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3J5Z2VsLSR7TElCVn0vZW5naW5lcy8uZGVidWcgJHtsaWJkaXJ9L3J5Z2VsLSR7TElCVn0vcGx1Z2lucy8uZGVidWciCisKK1BBQ0tBR0VTICs9ICIke1BOfS1tZXRhIgorQUxMT1dfRU1QVFlfJHtQTn0tbWV0YSA9ICIxIgorCitQQUNLQUdFU19EWU5BTUlDID0gIiR7UE59LXBsdWdpbi0qIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAicnlnZWwuc2VydmljZSIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIHJ5Z2VsX2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vcnlnZWwtJHtMSUJWfScpCisgICAgcG9zdGluc3QgPSBkLmdldFZhcigncGx1Z2luX3Bvc3RpbnN0JykKKyAgICBwa2dzID0gW10KKworICAgIHBrZ3MgKz0gZG9fc3BsaXRfcGFja2FnZXMoZCwgb2UucGF0aC5qb2luKHJ5Z2VsX2xpYmRpciwgInBsdWdpbnMiKSwgJ2xpYnJ5Z2VsLSguKilcLnNvJCcsIGQuZXhwYW5kKCcke1BOfS1wbHVnaW4tJXMnKSwgJ1J5Z2VsIHBsdWdpbiBmb3IgJXMnLCBwb3N0aW5zdD1wb3N0aW5zdCwgZXh0cmFfZGVwZW5kcz1kLmV4cGFuZCgnJHtQTn0nKSkKKyAgICBwa2dzICs9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIG9lLnBhdGguam9pbihyeWdlbF9saWJkaXIsICJwbHVnaW5zIiksICcoLiopXC5wbHVnaW4kJywgZC5leHBhbmQoJyR7UE59LXBsdWdpbi0lcycpLCAnUnlnZWwgcGx1Z2luIGZvciAlcycsIHBvc3RpbnN0PXBvc3RpbnN0LCBleHRyYV9kZXBlbmRzPWQuZXhwYW5kKCcke1BOfScpKQorCisgICAgbWV0YXBrZyA9IGQuZ2V0VmFyKCdQTicpICsgJy1tZXRhJworICAgIGQuc2V0VmFyKCdSREVQRU5EU18nICsgbWV0YXBrZywgJyAnLmpvaW4ocGtncykpCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9kbGV5bmEtY29yZV8wLjYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZGxleW5hL2RsZXluYS1jb3JlXzAuNi4wLmJiCmluZGV4IGEzYjI3OTMuLjg5MzljZDMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZGxleW5hL2RsZXluYS1jb3JlXzAuNi4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZGxleW5hL2RsZXluYS1jb3JlXzAuNi4wLmJiCkBAIC03LDEyICs3LDE0IEBACiAKIExJQ0VOU0UgPSAiTEdQTHYyLjErIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZGxleW5hL2NvcmUvY29yZS5jO2VuZGxpbmU9MjE7bWQ1PTEzOWNiYTBjNjM0MzQ0YWJjOTQ1NjY5NGZiYjUwODNiIgorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZGxleW5hL2NvcmUvY29yZS5jO2VuZGxpbmU9MjE7bWQ1PTY4NjAyOTk4MzUxODI1YjA4NDRhYWUzNGM2ODRjNTRlIgogCiBERVBFTkRTID0gImdsaWItMi4wIGd1cG5wIgogCitQViAuPSAiK2dpdCR7U1JDUFZ9IgorCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vMDFvcmcvJHtCUE59LmdpdCIKLVNSQ1JFViA9ICIyN2EzNzg2ZWMwMTNmNjRmZDU4MjQzNDEwYTYwNzk4ZjgyNGFjZWMzIgorU1JDUkVWID0gIjFjNjg1M2Y1YmM2OTdkYzBhODc3NGZkNzBkYmM5MTVjNGRiZTdjNWIiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZGxleW5hL2RsZXluYS1yZW5kZXJlci8wMDAxLWFkZC1ndXBucC0xLjItQVBJLXN1cHBvcnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9kbGV5bmEtcmVuZGVyZXIvMDAwMS1hZGQtZ3VwbnAtMS4yLUFQSS1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmNTQ2NTgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9kbGV5bmEtcmVuZGVyZXIvMDAwMS1hZGQtZ3VwbnAtMS4yLUFQSS1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsMTIzIEBACitGcm9tIDdjOTQ1ZTc5NjBjZjdkZmZkOWRkMGJiNWY3ZWM2YmVlNGRjMGJjYTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxOCBGZWIgMjAyMCAxNDoxNzo1NSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBhZGQgZ3VwbnAgMS4yIEFQSSBzdXBwb3J0CisKK1Rha2VzIGZyb20gaHR0cHM6Ly9naXQuYXJjaGxpbnV4Lm9yZy9zdm50b2dpdC9wYWNrYWdlcy5naXQvdHJlZS90cnVuay9ndXBucC0xLjIuZGlmZj9oPXBhY2thZ2VzL2RsZXluYS1yZW5kZXJlcgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgIHwgIDQgKy0tCisgbGliZGxleW5hL3JlbmRlcmVyL2RldmljZS5jIHwgNTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQorIGxpYmRsZXluYS9yZW5kZXJlci91cG5wLmMgICB8ICA0ICstLQorIDMgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMjcxZWU5Mi4uMzY0NjU5ZCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzgsOCArMzgsOCBAQCBMVF9MQU5HKFtDXSkKKyBQS0dfUFJPR19QS0dfQ09ORklHKDAuMTYpCisgUEtHX0NIRUNLX01PRFVMRVMoW0dMSUJdLCBbZ2xpYi0yLjAgPj0gMi4yOF0pCisgUEtHX0NIRUNLX01PRFVMRVMoW0dJT10sIFtnaW8tMi4wID49IDIuMjhdKQorLVBLR19DSEVDS19NT0RVTEVTKFtHU1NEUF0sIFtnc3NkcC0xLjAgPj0gMC4xMy4yXSkKKy1QS0dfQ0hFQ0tfTU9EVUxFUyhbR1VQTlBdLCBbZ3VwbnAtMS4wID49IDAuMjAuNV0pCisrUEtHX0NIRUNLX01PRFVMRVMoW0dTU0RQXSwgW2dzc2RwLTEuMiA+PSAxLjIuMF0pCisrUEtHX0NIRUNLX01PRFVMRVMoW0dVUE5QXSwgW2d1cG5wLTEuMiA+PSAxLjIuMF0pCisgUEtHX0NIRUNLX01PRFVMRVMoW0dVUE5QQVZdLCBbZ3VwbnAtYXYtMS4wID49IDAuMTEuNV0pCisgUEtHX0NIRUNLX01PRFVMRVMoW0dVUE5QRExOQV0sIFtndXBucC1kbG5hLTIuMCA+PSAwLjkuNF0pCisgUEtHX0NIRUNLX01PRFVMRVMoW1NPVVBdLCBbbGlic291cC0yLjQgPj0gMi4yOC4yXSkKK2RpZmYgLS1naXQgYS9saWJkbGV5bmEvcmVuZGVyZXIvZGV2aWNlLmMgYi9saWJkbGV5bmEvcmVuZGVyZXIvZGV2aWNlLmMKK2luZGV4IDc4M2ZiNTIuLmM3YjlmYzMgMTAwNjQ0CistLS0gYS9saWJkbGV5bmEvcmVuZGVyZXIvZGV2aWNlLmMKKysrKyBiL2xpYmRsZXluYS9yZW5kZXJlci9kZXZpY2UuYworQEAgLTIxMjEsNiArMjEyMSw1MyBAQCBleGl0OgorIAlyZXR1cm47CisgfQorIAorK3R5cGVkZWYgc3RydWN0CisreworKyAgR01haW5Mb29wICpsb29wOworKyAgR1VQblBTZXJ2aWNlSW50cm9zcGVjdGlvbiAqaW50cm9zcGVjdGlvbjsKKysgIEdFcnJvciAqKmVycm9yOworK30gR2V0SW50cm9zcGVjdGlvbkFzeW5jRGF0YTsKKysKKytzdGF0aWMgdm9pZAorK2dldF9pbnRyb3NwZWN0aW9uX2FzeW5jX2NiIChHVVBuUFNlcnZpY2VJbmZvICAgICAgICAgICAqaW5mbywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1VQblBTZXJ2aWNlSW50cm9zcGVjdGlvbiAgKmludHJvc3BlY3Rpb24sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdFcnJvciAgICAgICAgICAgICAgICplcnJvciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICAgICAgICAgIHVzZXJfZGF0YSkKKyt7CisrICBHZXRJbnRyb3NwZWN0aW9uQXN5bmNEYXRhICpkYXRhID0gdXNlcl9kYXRhOworKyAgZGF0YS0+aW50cm9zcGVjdGlvbiA9IGludHJvc3BlY3Rpb247CisrICBpZiAoZGF0YS0+ZXJyb3IpCisrICAgICpkYXRhLT5lcnJvciA9IGdfZXJyb3JfY29weSAoZXJyb3IpOworKyAgZ19tYWluX2xvb3BfcXVpdCAoZGF0YS0+bG9vcCk7CisrfQorKworK3N0YXRpYyBHVVBuUFNlcnZpY2VJbnRyb3NwZWN0aW9uICoKKytfZ3VwbnBfc2VydmljZV9pbmZvX2dldF9pbnRyb3NwZWN0aW9uIChHVVBuUFNlcnZpY2VJbmZvICppbmZvLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAqKmVycm9yKQorK3sKKysgIEdldEludHJvc3BlY3Rpb25Bc3luY0RhdGEgZGF0YTsKKysgIEdNYWluQ29udGV4dCAqY29udGV4dDsKKysKKysgIGNvbnRleHQgPSBnX21haW5fY29udGV4dF9uZXcgKCk7CisrICBkYXRhLmxvb3AgPSBnX21haW5fbG9vcF9uZXcgKGNvbnRleHQsIEZBTFNFKTsKKysgIGRhdGEuZXJyb3IgPSBlcnJvcjsKKysKKysgIGdfbWFpbl9jb250ZXh0X3B1c2hfdGhyZWFkX2RlZmF1bHQgKGNvbnRleHQpOworKworKyAgZ3VwbnBfc2VydmljZV9pbmZvX2dldF9pbnRyb3NwZWN0aW9uX2FzeW5jIChpbmZvLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfaW50cm9zcGVjdGlvbl9hc3luY19jYiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGEpOworKworKyAgZ19tYWluX2xvb3BfcnVuIChkYXRhLmxvb3ApOworKworKyAgZ19tYWluX2NvbnRleHRfcG9wX3RocmVhZF9kZWZhdWx0IChjb250ZXh0KTsKKysKKysgIGdfbWFpbl9sb29wX3VucmVmIChkYXRhLmxvb3ApOworKyAgZ19tYWluX2NvbnRleHRfdW5yZWYgKGNvbnRleHQpOworKworKyAgcmV0dXJuIGRhdGEuaW50cm9zcGVjdGlvbjsKKyt9CisrCisgc3RhdGljIGdib29sZWFuIHBydl9nZXRfYXZfc2VydmljZV9zdGF0ZXNfdmFsdWVzKEdVUG5QU2VydmljZVByb3h5ICphdl9wcm94eSwKKyAJCQkJCQkgR1ZhcmlhbnQgKiptcHJpc190cF9zcGVlZHMsCisgCQkJCQkJIEdQdHJBcnJheSAqKnVwbnBfdHBfc3BlZWRzLAorQEAgLTIxNDcsNyArMjE5NCw3IEBAIHN0YXRpYyBnYm9vbGVhbiBwcnZfZ2V0X2F2X3NlcnZpY2Vfc3RhdGVzX3ZhbHVlcyhHVVBuUFNlcnZpY2VQcm94eSAqYXZfcHJveHksCisgCXdlYWtfcmVmID0gYXZfcHJveHk7CisgCWdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1QoYXZfcHJveHkpLCAmd2Vha19yZWYpOworIAorLQlpbnRyb3NwZWN0aW9uID0gZ3VwbnBfc2VydmljZV9pbmZvX2dldF9pbnRyb3NwZWN0aW9uKAorKwlpbnRyb3NwZWN0aW9uID0gX2d1cG5wX3NlcnZpY2VfaW5mb19nZXRfaW50cm9zcGVjdGlvbigKKyAJCUdVUE5QX1NFUlZJQ0VfSU5GTyhhdl9wcm94eSksCisgCQkmZXJyb3IpOworIAorQEAgLTIyMTUsNyArMjI2Miw3IEBAIHN0YXRpYyBnYm9vbGVhbiBwcnZfZ2V0X3JjX3NlcnZpY2Vfc3RhdGVzX3ZhbHVlcyhHVVBuUFNlcnZpY2VQcm94eSAqcmNfcHJveHksCisgCXdlYWtfcmVmID0gcmNfcHJveHk7CisgCWdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1QocmNfcHJveHkpLCAmd2Vha19yZWYpOworIAorLQlpbnRyb3NwZWN0aW9uID0gZ3VwbnBfc2VydmljZV9pbmZvX2dldF9pbnRyb3NwZWN0aW9uKAorKwlpbnRyb3NwZWN0aW9uID0gX2d1cG5wX3NlcnZpY2VfaW5mb19nZXRfaW50cm9zcGVjdGlvbigKKyAJCUdVUE5QX1NFUlZJQ0VfSU5GTyhyY19wcm94eSksCisgCQkmZXJyb3IpOworIAorZGlmZiAtLWdpdCBhL2xpYmRsZXluYS9yZW5kZXJlci91cG5wLmMgYi9saWJkbGV5bmEvcmVuZGVyZXIvdXBucC5jCitpbmRleCBhYzFiMDhhLi5iNzYyMjI2IDEwMDY0NAorLS0tIGEvbGliZGxleW5hL3JlbmRlcmVyL3VwbnAuYworKysrIGIvbGliZGxleW5hL3JlbmRlcmVyL3VwbnAuYworQEAgLTI0Myw4ICsyNDMsOCBAQCBzdGF0aWMgdm9pZCBwcnZfc2VydmVyX3VuYXZhaWxhYmxlX2NiKEdVUG5QQ29udHJvbFBvaW50ICpjcCwKKyAKKyAJdWRuID0gZ3VwbnBfZGV2aWNlX2luZm9fZ2V0X3VkbigoR1VQblBEZXZpY2VJbmZvICopcHJveHkpOworIAorLQlpcF9hZGRyZXNzID0gZ3VwbnBfY29udGV4dF9nZXRfaG9zdF9pcCgKKy0JCWd1cG5wX2NvbnRyb2xfcG9pbnRfZ2V0X2NvbnRleHQoY3ApKTsKKysJaXBfYWRkcmVzcyA9IGdzc2RwX2NsaWVudF9nZXRfaG9zdF9pcCgKKysJCUdTU0RQX0NMSUVOVChndXBucF9jb250cm9sX3BvaW50X2dldF9jb250ZXh0KGNwKSkpOworIAorIAlpZiAoIXVkbiB8fCAhaXBfYWRkcmVzcykKKyAJCWdvdG8gb25fZXJyb3I7CistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9kbGV5bmEtcmVuZGVyZXJfMC42LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9kbGV5bmEtcmVuZGVyZXJfMC42LjAuYmIKaW5kZXggYjMwYWVlOS4uNjQyZjIxYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9kbGV5bmEvZGxleW5hLXJlbmRlcmVyXzAuNi4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZGxleW5hL2RsZXluYS1yZW5kZXJlcl8wLjYuMC5iYgpAQCAtMTEsNyArMTEsOSBAQAogREVQRU5EUyA9ICJnbGliLTIuMCBnc3NkcCBndXBucCBndXBucC1hdiBndXBucC1kbG5hIGxpYnNvdXAtMi40IGRsZXluYS1jb3JlIgogUkRFUEVORFNfJHtQTn0gPSAiZGxleW5hLWNvbm5lY3Rvci1kYnVzIgogCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vMDFvcmcvJHtCUE59LmdpdCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS8wMW9yZy8ke0JQTn0uZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWRkLWd1cG5wLTEuMi1BUEktc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIgogU1JDUkVWID0gIjUwZmQxZWM5ZDUxMzI4ZTdkZWE5ODg3NDEyOWRjOGQ2ZmUzZWExZGQiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9kbGV5bmEtc2VydmVyXzAuNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9kbGV5bmEvZGxleW5hLXNlcnZlcl8wLjYuMC5iYgppbmRleCBhOGU1NDA2Li5lMzFiN2FlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9kbGV5bmEtc2VydmVyXzAuNi4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZGxleW5hL2RsZXluYS1zZXJ2ZXJfMC42LjAuYmIKQEAgLTExLDggKzExLDkgQEAKIERFUEVORFMgPSAiZ2xpYi0yLjAgZ3NzZHAgZ3VwbnAgZ3VwbnAtYXYgZ3VwbnAtZGxuYSBsaWJzb3VwLTIuNCBsaWJ4bWwyIGRsZXluYS1jb3JlIgogUkRFUEVORFNfJHtQTn0gPSAiZGxleW5hLWNvbm5lY3Rvci1kYnVzIgogCitQViAuPSAiK2dpdCR7U1JDUFZ9IgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tLzAxb3JnLyR7QlBOfS5naXQiCi1TUkNSRVYgPSAiNzc2OTUwZDVkOTZhYzlkYmY1YzVjNDdiZGU4YWMwNmY1MGEzY2Y0NiIKK1NSQ1JFViA9ICJlYjg5NWFlODI3MTVlOTg4OWE5NDhmZmE4MTBjMGY4MjhiNGY0Yzc2IgogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2Zkay1hYWMvZmRrLWFhY18yLjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZmRrLWFhYy9mZGstYWFjXzIuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3OTExNjgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2Zkay1hYWMvZmRrLWFhY18yLjAuMS5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIkZESy1BQUMgYXVkaW8gY29kZWMiCisKK0RFU0NSSVBUSU9OID0gIlRoZSBGcmF1bmhvZmVyIEZESyBBQUMgQ29kZWMgTGlicmFyeSBmb3IgQW5kcm9pZCBcCisoXCJGREsgQUFDIENvZGVjXCIpIGlzIHNvZnR3YXJlIHRoYXQgaW1wbGVtZW50cyB0aGUgTVBFRyBcCitBZHZhbmNlZCBBdWRpbyBDb2RpbmcgKFwiQUFDXCIpIGVuY29kaW5nIGFuZCBkZWNvZGluZyBzY2hlbWUgXAorZm9yIGRpZ2l0YWwgYXVkaW8uIgorCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5paXMuZnJhdW5ob2Zlci5kZS9lbi9mZi9hbW0vaW1wbC5odG1sIgorCitMSUNFTlNFID0gIkZyYXVuaG9mZXJfRkRLX0FBQ19Db2RlY19MaWJyYXJ5X2Zvcl9BbmRyb2lkIgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTk9USUNFO21kNT01OTg1ZTFlMTJmNGFmYTcxMGQ2NGVkN2JmZDI5MTg3NSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL21zdG9yc2pvL2Zkay1hYWMuZ2l0O3Byb3RvY29sPWdpdDticmFuY2g9bWFzdGVyIgorU1JDUkVWID0gImQzODdkM2I2ZWQ3OWZmOWE4MmM2MDQ0MGJkZDg2ZTZlNWUzMjRiZWMiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmZWY0NTNiNWQ2ZWUyOGZmMzAyYzYwMGI4Y2RlZDNlNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwN2MyYTY0YjA5OGViNDhiMmU5ZDcyOWQ1ZTc3OGMwOGY3ZDIyZjI4YWRjOGRhN2MzZjkyYzU4ZGExY2JiZDhlIgorCitpbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9mbHVpZHN5bnRoL2ZsdWlkc3ludGguaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9mbHVpZHN5bnRoL2ZsdWlkc3ludGguaW5jCmluZGV4IDljZTY1MDYuLjczODU4YjAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZmx1aWRzeW50aC9mbHVpZHN5bnRoLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsdWlkc3ludGgvZmx1aWRzeW50aC5pbmMKQEAgLTUsOCArNSw4IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mYzE3OGJjZDQyNTA5MDkzOWE4YjYzNGQxZDZhOTU5NCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0ZsdWlkU3ludGgvZmx1aWRzeW50aC5naXQiCi1TUkNSRVYgPSAiMzdjOWFlMmJmNDMxYTc2NDAzMmYwMjNiM2IyYzBjMGI4NmI3YzI3MiIKK1NSQ1JFViA9ICJkOWFkNmEwNzI1ODQwMzg4YTQ4ZjQ1ZTM4ZWRhOTAzYTY1ZWMxY2Y1IgogUyA9ICIke1dPUktESVJ9L2dpdCIKLVBWID0gIjIuMS4wIgorUFYgPSAiMi4xLjIiCiAKIGluaGVyaXQgY21ha2UgcGtnY29uZmlnIGxpYl9wYWNrYWdlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ltYWdlcy9tdWx0aW1lZGlhLWxpYmNhbWVyYS1pbWFnZS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvaW1hZ2VzL211bHRpbWVkaWEtbGliY2FtZXJhLWltYWdlLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0NTAxZTkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ltYWdlcy9tdWx0aW1lZGlhLWxpYmNhbWVyYS1pbWFnZS5iYgpAQCAtMCwwICsxLDE5IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBNYWRoYXZhbiBLcmlzaG5hbiA8bWFkaGF2YW4ua3Jpc2huYW5AbGluYXJvLm9yZz4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworREVTQ1JJUFRJT04gPSAibGliY2FtZXJhIGltYWdlIgorTElDRU5TRSA9ICJNSVQiCisKK3JlcXVpcmUgIG1ldGEtbXVsdGltZWRpYS1pbWFnZS5iYgorCitJTUFHRV9JTlNUQUxMICs9ICIgXAorICAgICAgICBrZXJuZWwtbW9kdWxlcyBcCisgICAgICAgIHhrZXlib2FyZC1jb25maWcgXAorIgorCitJTUFHRV9JTlNUQUxMX2FwcGVuZCA9ICJcCisgICBsaWJjYW1lcmEgXAorICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZCBcCisgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIFwKKyIKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJjYW1lcmEvZmlsZXMvMDAwMS1tZXNvbi1pbXBvcnQtcHl0aG9uMy10by11c2UtYWxzby1mcm9tLXN5c3Jvb3QucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmNhbWVyYS9maWxlcy8wMDAxLW1lc29uLWltcG9ydC1weXRob24zLXRvLXVzZS1hbHNvLWZyb20tc3lzcm9vdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM1NmE2OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmNhbWVyYS9maWxlcy8wMDAxLW1lc29uLWltcG9ydC1weXRob24zLXRvLXVzZS1hbHNvLWZyb20tc3lzcm9vdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLUZyb20gZWE0N2U1MzkxMTIxM2Q3MWU5OTdlYjM0ODQ4YWU3MjczNWJhY2M4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IG1hZGhhdmFuazI3IDxtYWRoYXZhbi5rcmlzaG5hbkBsaW5hcm8ub3JnPgotRGF0ZTogVGh1LCA5IEphbiAyMDIwIDA3OjQyOjE4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1lc29uOiBpbXBvcnQgcHl0aG9uMyB0byB1c2UgYWxzbyBmcm9tIHN5c3Jvb3QKLQotaW1wb3J0aW5nIHB5dGhvbiBtb2R1bGUgY2FuIHByb3ZpZGUgdGhlIGV4YWN0IHBhdGgKLXdoaWNoIGNhbiBiZSB1c2VkIGluIGRlc2t0b3AgYnVpbGQgYXMgd2VsbCBhcyBmcm9tCi1hbnkgYnVpbGQgc3lzdGVtCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogbWFkaGF2YW5rMjcgPG1hZGhhdmFuLmtyaXNobmFuQGxpbmFyby5vcmc+Ci0tLS0KLSBpbmNsdWRlL2xpYmNhbWVyYS9tZXNvbi5idWlsZCB8IDQgKysrLQotIHNyYy9saWJjYW1lcmEvbWVzb24uYnVpbGQgICAgIHwgNCArKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL2xpYmNhbWVyYS9tZXNvbi5idWlsZCBiL2luY2x1ZGUvbGliY2FtZXJhL21lc29uLmJ1aWxkCi1pbmRleCA5OWFiZjA2Li44MzUyNWUyIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9saWJjYW1lcmEvbWVzb24uYnVpbGQKLSsrKyBiL2luY2x1ZGUvbGliY2FtZXJhL21lc29uLmJ1aWxkCi1AQCAtMjEsMTMgKzIxLDE1IEBAIGluY2x1ZGVfZGlyID0gam9pbl9wYXRocyhsaWJjYW1lcmFfaW5jbHVkZV9kaXIsICdsaWJjYW1lcmEnKQotIGluc3RhbGxfaGVhZGVycyhsaWJjYW1lcmFfYXBpLAotICAgICAgICAgICAgICAgICBzdWJkaXIgOiBpbmNsdWRlX2RpcikKLSAKLStweXRob25fbW9kID0gaW1wb3J0KCdweXRob24zJykuZmluZF9weXRob24oKQotKwotIGdlbl9jb250cm9scyA9IGZpbGVzKCcuLi8uLi9zcmMvbGliY2FtZXJhL2dlbi1jb250cm9scy5weScpCi0gCi0gY29udHJvbF9pZHNfaCA9IGN1c3RvbV90YXJnZXQoJ2NvbnRyb2xfaWRzX2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0IDogZmlsZXMoJy4uLy4uL3NyYy9saWJjYW1lcmEvY29udHJvbF9pZHMueWFtbCcsICdjb250cm9sX2lkcy5oLmluJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IDogJ2NvbnRyb2xfaWRzLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZF9maWxlcyA6IGdlbl9jb250cm9scywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIDogW2dlbl9jb250cm9scywgJy1vJywgJ0BPVVRQVVRAJywgJ0BJTlBVVEAnXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIDogW3B5dGhvbl9tb2QsIGdlbl9jb250cm9scywgJy1vJywgJ0BPVVRQVVRAJywgJ0BJTlBVVEAnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIDogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsX2RpciA6IGpvaW5fcGF0aHMoJ2luY2x1ZGUnLCBpbmNsdWRlX2RpcikpCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYmNhbWVyYS9tZXNvbi5idWlsZCBiL3NyYy9saWJjYW1lcmEvbWVzb24uYnVpbGQKLWluZGV4IGM0Zjk2NWIuLjI0MzkzNWIgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliY2FtZXJhL21lc29uLmJ1aWxkCi0rKysgYi9zcmMvbGliY2FtZXJhL21lc29uLmJ1aWxkCi1AQCAtNjUsMTMgKzY1LDE1IEBAIGlmIGxpYnVkZXYuZm91bmQoKQotICAgICBdKQotIGVuZGlmCi0gCi0rcHl0aG9uX21vZCA9IGltcG9ydCgncHl0aG9uMycpLmZpbmRfcHl0aG9uKCkKLSsKLSBnZW5fY29udHJvbHMgPSBmaWxlcygnZ2VuLWNvbnRyb2xzLnB5JykKLSAKLSBjb250cm9sX2lkc19jcHAgPSBjdXN0b21fdGFyZ2V0KCdjb250cm9sX2lkc19jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQgOiBmaWxlcygnY29udHJvbF9pZHMueWFtbCcsICdjb250cm9sX2lkcy5jcHAuaW4nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA6ICdjb250cm9sX2lkcy5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kX2ZpbGVzIDogZ2VuX2NvbnRyb2xzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA6IFtnZW5fY29udHJvbHMsICctbycsICdAT1VUUFVUQCcsICdASU5QVVRAJ10pCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIDogW3B5dGhvbl9tb2QsIGdlbl9jb250cm9scywgJy1vJywgJ0BPVVRQVVRAJywgJ0BJTlBVVEAnXSkKLSAKLSBsaWJjYW1lcmFfc291cmNlcyArPSBjb250cm9sX2lkc19jcHAKLSBsaWJjYW1lcmFfc291cmNlcyArPSBjb250cm9sX2lkc19oCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbGliY2FtZXJhL2xpYmNhbWVyYS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbGliY2FtZXJhL2xpYmNhbWVyYS5iYgppbmRleCBiOTViZjZkLi4zZjhmZTJmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmNhbWVyYS9saWJjYW1lcmEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJjYW1lcmEvbGliY2FtZXJhLmJiCkBAIC0xMCwxMiArMTAsMTEgQEAKIAogU1JDX1VSSSA9ICIgXAogICAgICAgICBnaXQ6Ly9saW51eHR2Lm9yZy9saWJjYW1lcmEuZ2l0O3Byb3RvY29sPWdpdCBcCi0gICAgICAgIGZpbGU6Ly8wMDAxLW1lc29uLWltcG9ydC1weXRob24zLXRvLXVzZS1hbHNvLWZyb20tc3lzcm9vdC5wYXRjaCBcCiAiCiAKLVNSQ1JFViA9ICI1M2VhYjk5NjgwOWU4MjZiYzkxNGU0YzM0Yzc4ZmU3NGQ4NmY4ZGM0IgorU1JDUkVWID0gImE4YmU2ZTk0ZTc5ZjYwMmQ1NDNhMTVhZmQ0NGVmNjBlMzc4YjEzOGYiCiAKLVBWID0gIjIwMTkxMCtnaXQke1NSQ1BWfSIKK1BWID0gIjIwMjAwMitnaXQke1NSQ1BWfSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJkZTI2NS9saWJkZTI2NV8xLjAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbGliZGUyNjUvbGliZGUyNjVfMS4wLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMDc1ZmYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJkZTI2NS9saWJkZTI2NV8xLjAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLURFU0NSSVBUSU9OID0gImxpYmRlMjY1IGlzIGFuIG9wZW4gc291cmNlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBoLjI2NSBcCi12aWRlbyBjb2RlYy4gSXQgaXMgd3JpdHRlbiBmcm9tIHNjcmF0Y2ggYW5kIGhhcyBhIHBsYWluIEMgQVBJIHRvIGVuYWJsZSBhIFwKLXNpbXBsZSBpbnRlZ3JhdGlvbiBpbnRvIG90aGVyIHNvZnR3YXJlLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGliZGUyNjUub3JnLyIKLVNFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgotCi1MSUNFTlNFID0gIkxHUEx2MyIKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTg1MmYzNDVjMWM1MmM5MTYwZjlhN2MzNmJiOTk3NTQ2IgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zdHJ1a3R1cmFnL2xpYmRlMjY1L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjkzNTIwYjM3OGRmMjVmM2E5NGU5NjJmMmI1NDg3MmNjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVhYTAzNDg4MzljMjkzNWRkOTA2NDdkNzJjNmRkNGEwNDNlMzYzNjFjYjNjMzNkMmIwNGRmMTBmYmNlYmQzY2IiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtc2hlcmxvY2syNjUgLS1kaXNhYmxlLWRlYzI2NSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZwotCi1QQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMiCi1GSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbGliZGUyNjUvbGliZGUyNjVfMS4wLjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmRlMjY1L2xpYmRlMjY1XzEuMC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxM2RjYzcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmRlMjY1L2xpYmRlMjY1XzEuMC41LmJiCkBAIC0wLDAgKzEsMTkgQEAKK0RFU0NSSVBUSU9OID0gImxpYmRlMjY1IGlzIGFuIG9wZW4gc291cmNlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBoLjI2NSBcCit2aWRlbyBjb2RlYy4gSXQgaXMgd3JpdHRlbiBmcm9tIHNjcmF0Y2ggYW5kIGhhcyBhIHBsYWluIEMgQVBJIHRvIGVuYWJsZSBhIFwKK3NpbXBsZSBpbnRlZ3JhdGlvbiBpbnRvIG90aGVyIHNvZnR3YXJlLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGliZGUyNjUub3JnLyIKK1NFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgorCitMSUNFTlNFID0gIkxHUEx2MyAmIE1JVCIKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY5NWI1NTY3OTlhYmIyNDM1Yzk3YTExM2NkY2E1MTJmIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zdHJ1a3R1cmFnL2xpYmRlMjY1L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImUzZjI3N2Q4OTAzNDA4NjE1YTVjYzM0NzE4YjM5MWI4M2M5N2M2NDZmYWVhNGY0MWRhOTNiYWM1ZWUwOGE4N2YiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtc2hlcmxvY2syNjUgLS1kaXNhYmxlLWRlYzI2NSIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZworCitQQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMiCitGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbWluaWRsbmEvbWluaWRsbmEuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9taW5pZGxuYS9taW5pZGxuYS5pbmMKaW5kZXggMTg3ZmY1My4uMDQ2NDhhNSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9taW5pZGxuYS9taW5pZGxuYS5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9taW5pZGxuYS9taW5pZGxuYS5pbmMKQEAgLTEyLDYgKzEyLDcgQEAKICAgICAgICAgICAgZmlsZTovL21pbmlkbG5hLWRhZW1vbi5pbml0LmQgXAogICAgICAgICAgICBmaWxlOi8vbWluaWRsbmEuc2VydmljZSBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVwZGF0ZS1HZXR0ZXh0LXZlcnNpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLWNsb2NrX2dldHRpbWUtc2VwcmF0ZWx5LWZyb20tX19OLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9taW5pZGxuYS9taW5pZGxuYS8wMDAxLVVwZGF0ZS1HZXR0ZXh0LXZlcnNpb24ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL21pbmlkbG5hL21pbmlkbG5hLzAwMDEtVXBkYXRlLUdldHRleHQtdmVyc2lvbi5wYXRjaAppbmRleCBjMTgwOTVkLi42MTAwZGEzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL21pbmlkbG5hL21pbmlkbG5hLzAwMDEtVXBkYXRlLUdldHRleHQtdmVyc2lvbi5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL21pbmlkbG5hL21pbmlkbG5hLzAwMDEtVXBkYXRlLUdldHRleHQtdmVyc2lvbi5wYXRjaApAQCAtMTAsOCArMTAsNiBAQAogIGNvbmZpZ3VyZS5hYyB8IDQgKystLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGYzNDNkMjEuLmE1NTZiMzMgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwogQEAgLTE0LDcgKzE0LDcgQEAKQEAgLTIzLDEyICsyMSwxMiBAQAogICNMVF9JTklUCiAgCiAgQUNfQ0FOT05JQ0FMX1RBUkdFVAotQEAgLTI4LDcgKzI4LDcgQEAgbTRfaWZkZWYoW0FDX1VTRV9TWVNURU1fRVhURU5TSU9OU10sIFtBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlNdKQorQEAgLTI4LDcgKzI4LDcgQEAgbTRfaWZkZWYoW0FDX1VTRV9TWVNURU1fRVhURU5TSU9OU10sIFtBQwogIAogIEFNX0lDT05WCiAgQU1fR05VX0dFVFRFWFQoW2V4dGVybmFsXSkKIC1BTV9HTlVfR0VUVEVYVF9WRVJTSU9OKDAuMTgpCi0rQU1fR05VX0dFVFRFWFRfVkVSU0lPTigwLjE5KQorK0FNX0dOVV9HRVRURVhUX1ZFUlNJT04oMC4yMCkKICAKICAjIENoZWNrcyBmb3IgcHJvZ3JhbXMuCiAgQUNfUFJPR19BV0sKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbWluaWRsbmEvbWluaWRsbmEvMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLWNsb2NrX2dldHRpbWUtc2VwcmF0ZWx5LWZyb20tX19OLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9taW5pZGxuYS9taW5pZGxuYS8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItY2xvY2tfZ2V0dGltZS1zZXByYXRlbHktZnJvbS1fX04ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRhMzA3ZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbWluaWRsbmEvbWluaWRsbmEvMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLWNsb2NrX2dldHRpbWUtc2VwcmF0ZWx5LWZyb20tX19OLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gMTExOGIxOTEyOTE2OTI0YmJmYTNmZDRkY2VkOWRmZWQwMWZiZjBlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDkgTWFyIDIwMjAgMDk6NDQ6MzMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBDaGVjayBmb3IgY2xvY2tfZ2V0dGltZSBzZXByYXRlbHkgZnJvbQorIF9fTlJfY2xvY2tfZ2V0dGltZQorCitUaGlzIGhlbHBzIHByaW9yaXRpemUgdXNpbmcgY2xvY2tfZ2V0dGltZSBBUEkgZnJvbSBsaWJjIG92ZXIgc3lzY2FsbAorc2luY2UgZGlyZWN0IHVzZSBvZiBfX05SX2Nsb2NrX2dldHRpbWUgaXMgbm90IHRpbWU2NC1zYWZlCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDEwICsrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTEyNSw2ICsxMjUsMTAgQEAgY2FzZSAkaG9zdCBpbgorIGVzYWMKKyAKKyBBQ19DSEVDS19IRUFERVJTKHN5c2NhbGwuaCBzeXMvc3lzY2FsbC5oIG1hY2gvbWFjaF90aW1lLmgpCisrCisrQUNfTVNHX0NIRUNLSU5HKFtmb3IgY2xvY2tfZ2V0dGltZV0pCisrQUNfU0VBUkNIX0xJQlMoW2Nsb2NrX2dldHRpbWVdLCBbcnRdLCBbQUNfREVGSU5FKFtIQVZFX0NMT0NLX0dFVFRJTUVdLCBbMV0sIFt1c2UgY2xvY2tfZ2V0dGltZV0pXSwpCisrCisgQUNfTVNHX0NIRUNLSU5HKFtmb3IgX19OUl9jbG9ja19nZXR0aW1lIHN5c2NhbGxdKQorIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICBbQUNfTEFOR19QUk9HUkFNKAorQEAgLTE0Myw3ICsxNDcsNiBAQCBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgXSwKKyAgICAgWworICAgICAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQorLSAgICAgICAgQUNfU0VBUkNIX0xJQlMoW2Nsb2NrX2dldHRpbWVdLCBbcnRdLCBbQUNfREVGSU5FKFtIQVZFX0NMT0NLX0dFVFRJTUVdLCBbMV0sIFt1c2UgY2xvY2tfZ2V0dGltZV0pXSwpCisgICAgIF0pCisgCisgQUNfQ0hFQ0tfSEVBREVSKGxpbnV4L25ldGxpbmsuaCwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvb3BlbmgyNjQvb3BlbmgyNjQvMDAwMS1NYWtlZmlsZS1Vc2UtY3Atb3B0aW9ucy10by1wcmVzZXJ2ZS1maWxlLW1vZGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL29wZW5oMjY0L29wZW5oMjY0LzAwMDEtTWFrZWZpbGUtVXNlLWNwLW9wdGlvbnMtdG8tcHJlc2VydmUtZmlsZS1tb2RlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyZjMyOTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL29wZW5oMjY0L29wZW5oMjY0LzAwMDEtTWFrZWZpbGUtVXNlLWNwLW9wdGlvbnMtdG8tcHJlc2VydmUtZmlsZS1tb2RlLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gMWMzYmRhNDVjNTVkMjMzNGFmMzg0Y2FmOWU3ZjI0MGI3YWFmMmViNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDMgTWFyIDIwMjAgMjI6Mjg6MjUgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGU6IFVzZSBjcCBvcHRpb25zIHRvIHByZXNlcnZlIGZpbGUgbW9kZQorCitUaGlzIGZpeGVzIHBhY2thZ2luZyBpc3N1ZXMgZS5nLgorb3BlbmgyNjQ6IC91c3IvbGliL2xpYm9wZW5oMjY0LnNvIGlzIG93bmVkIGJ5IHVpZCAxMDAwLCB3aGljaCBpcyB0aGUgc2FtZSBhcyB0aGUgdXNlciBydW5uaW5nIGJpdGJha2UKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9jaXNjby9vcGVuaDI2NC9wdWxsLzMyNDVdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggNzRmZjAyOWQuLmFjNjQzNDEyIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMzA2LDggKzMwNiw4IEBAIGluc3RhbGwtc2hhcmVkOiAkKExJQlBSRUZJWCkkKFBST0pFQ1RfTkFNRSkuJChTSEFSRURMSUJTVUZGSVgpIGluc3RhbGwtaGVhZGVycyAkCisgCW1rZGlyIC1wICQoREVTVERJUikkKFNIQVJFRExJQl9ESVIpCisgCWluc3RhbGwgLW0gNzU1ICQoTElCUFJFRklYKSQoUFJPSkVDVF9OQU1FKS4kKFNIQVJFRExJQlNVRkZJWEZVTExWRVIpICQoREVTVERJUikkKFNIQVJFRExJQl9ESVIpCisgCWlmIFsgIiQoU0hBUkVETElCU1VGRklYRlVMTFZFUikiICE9ICIkKFNIQVJFRExJQlNVRkZJWCkiIF07IHRoZW4gXAorLQkgIGNwIC1hICQoTElCUFJFRklYKSQoUFJPSkVDVF9OQU1FKS4kKFNIQVJFRExJQlNVRkZJWE1BSk9SVkVSKSAkKERFU1RESVIpJChTSEFSRURMSUJfRElSKSA7IFwKKy0JICBjcCAtYSAkKExJQlBSRUZJWCkkKFBST0pFQ1RfTkFNRSkuJChTSEFSRURMSUJTVUZGSVgpICQoREVTVERJUikkKFNIQVJFRExJQl9ESVIpIDsgXAorKwkgIGNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzICQoTElCUFJFRklYKSQoUFJPSkVDVF9OQU1FKS4kKFNIQVJFRExJQlNVRkZJWE1BSk9SVkVSKSAkKERFU1RESVIpJChTSEFSRURMSUJfRElSKSA7IFwKKysJICBjcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAkKExJQlBSRUZJWCkkKFBST0pFQ1RfTkFNRSkuJChTSEFSRURMSUJTVUZGSVgpICQoREVTVERJUikkKFNIQVJFRExJQl9ESVIpIDsgXAorIAlmaQorIAlta2RpciAtcCAkKERFU1RESVIpJChQUkVGSVgpLyQoTElCRElSX05BTUUpL3BrZ2NvbmZpZworIAlpbnN0YWxsIC1tIDY0NCAkKFBST0pFQ1RfTkFNRSkucGMgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUl9OQU1FKS9wa2djb25maWcKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvb3BlbmgyNjQvb3BlbmgyNjRfMS43LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL29wZW5oMjY0L29wZW5oMjY0XzEuNy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmYwMjhhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvb3BlbmgyNjQvb3BlbmgyNjRfMS43LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1ERVNDUklQVElPTiA9ICJPcGVuSDI2NCBpcyBhIGNvZGVjIGxpYnJhcnkgd2hpY2ggc3VwcG9ydHMgSC4yNjQgZW5jb2RpbmcgYW5kIFwKLWRlY29kaW5nLiBJdCBpcyBzdWl0YWJsZSBmb3IgdXNlIGluIHJlYWwgdGltZSBhcHBsaWNhdGlvbnMgc3VjaCBhcyBXZWJSVEMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuaDI2NC5vcmcvIgotU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCi0KLURFUEVORFNfeDg2ICs9ICJuYXNtLW5hdGl2ZSIKLURFUEVORFNfeDg2LTY0ICs9ICJuYXNtLW5hdGl2ZSIKLQotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iYjZkMzc3MWRhNmEwN2QzM2ZkNTBkNGQ5YWE3M2JjZiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLVNSQ1JFViA9ICJhMTgwYzlkNGQ2ZjFhNDgzMGNhOWVlZDlkMTU5ZDU0OTk2YmQ2M2NiIgotQlJBTkNIID0gIm9wZW5oMjY0djEuNyIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9jaXNjby9vcGVuaDI2NC5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPSR7QlJBTkNIfTsiCi0KLUNPTVBBVElCTEVfTUFDSElORV9hcm12N2EgPSAiKC4qKSIKLUNPTVBBVElCTEVfTUFDSElORV9hYXJjaDY0ID0gIiguKikiCi1DT01QQVRJQkxFX01BQ0hJTkVfeDg2ID0gIiguKikiCi1DT01QQVRJQkxFX01BQ0hJTkVfeDg2LTY0ID0gIiguKikiCi1DT01QQVRJQkxFX01BQ0hJTkVfbWlwcyA9ICIoLiopIgotQ09NUEFUSUJMRV9NQUNISU5FX21pcHM2NCA9ICIoLiopIgotCi1FWFRSQV9PRU1BS0VfYXJtdjdhID0gIkFSQ0g9YXJtIgotRVhUUkFfT0VNQUtFX2FybXY3dmUgPSAiQVJDSD1hcm0iCi1FWFRSQV9PRU1BS0VfYWFyY2g2NCA9ICJBUkNIPWFybTY0IgotRVhUUkFfT0VNQUtFX3g4NiA9ICJBUkNIPWkzODYiCi1FWFRSQV9PRU1BS0VfeDg2LTY0ID0gIkFSQ0g9eDg2XzY0IgotRVhUUkFfT0VNQUtFX21pcHMgPSAiQVJDSD1taXBzIgotRVhUUkFfT0VNQUtFX21pcHM2NCA9ICJBUkNIPW1pcHM2NCIKLQotZG9fY29uZmlndXJlKCkgewotICAgIDoKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICBvZV9ydW5tYWtlCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBQUkVGSVg9JHtwcmVmaXh9Ci19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL29wZW5oMjY0L29wZW5oMjY0XzIuMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9vcGVuaDI2NC9vcGVuaDI2NF8yLjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzY1ZWYyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9vcGVuaDI2NC9vcGVuaDI2NF8yLjEuMC5iYgpAQCAtMCwwICsxLDQ5IEBACitERVNDUklQVElPTiA9ICJPcGVuSDI2NCBpcyBhIGNvZGVjIGxpYnJhcnkgd2hpY2ggc3VwcG9ydHMgSC4yNjQgZW5jb2RpbmcgYW5kIFwKK2RlY29kaW5nLiBJdCBpcyBzdWl0YWJsZSBmb3IgdXNlIGluIHJlYWwgdGltZSBhcHBsaWNhdGlvbnMgc3VjaCBhcyBXZWJSVEMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuaDI2NC5vcmcvIgorU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCisKK0RFUEVORFNfYXBwZW5kX3g4NiA9ICIgbmFzbS1uYXRpdmUiCitERVBFTkRTX2FwcGVuZF94ODYtNjQgPSAiIG5hc20tbmF0aXZlIgorCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWJiNmQzNzcxZGE2YTA3ZDMzZmQ1MGQ0ZDlhYTczYmNmIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDUkVWID0gImE2MGUyOGVmZTIyN2VhOGVhNzYwYjFlMjlhODk0M2UzNzFlYmU0YjMiCitCUkFOQ0ggPSAib3BlbmgyNjR2Mi4xLjAiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY2lzY28vb3BlbmgyNjQuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD0ke0JSQU5DSH0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS1Vc2UtY3Atb3B0aW9ucy10by1wcmVzZXJ2ZS1maWxlLW1vZGUucGF0Y2ggXAorICAgICAgICAgICAiCisKK0NPTVBBVElCTEVfTUFDSElORV9hcm12N2EgPSAiKC4qKSIKK0NPTVBBVElCTEVfTUFDSElORV9hYXJjaDY0ID0gIiguKikiCitDT01QQVRJQkxFX01BQ0hJTkVfeDg2ID0gIiguKikiCitDT01QQVRJQkxFX01BQ0hJTkVfeDg2LTY0ID0gIiguKikiCitDT01QQVRJQkxFX01BQ0hJTkVfbWlwcyA9ICIoLiopIgorQ09NUEFUSUJMRV9NQUNISU5FX21pcHM2NCA9ICIoLiopIgorCitFWFRSQV9PRU1BS0VfYXJtdjdhID0gIkFSQ0g9YXJtIgorRVhUUkFfT0VNQUtFX2FybXY3dmUgPSAiQVJDSD1hcm0iCitFWFRSQV9PRU1BS0VfYWFyY2g2NCA9ICJBUkNIPWFybTY0IgorRVhUUkFfT0VNQUtFX3g4NiA9ICJBUkNIPWkzODYiCitFWFRSQV9PRU1BS0VfeDg2LTY0ID0gIkFSQ0g9eDg2XzY0IgorRVhUUkFfT0VNQUtFX21pcHMgPSAiQVJDSD1taXBzIgorRVhUUkFfT0VNQUtFX21pcHM2NCA9ICJBUkNIPW1pcHM2NCIKK0VYVFJBX09FTUFLRV9yaXNjdjY0ID0gIkFSQ0g9cmlzY3Y2NCIKKworRVhUUkFfT0VNQUtFX2FwcGVuZCA9ICIgRU5BQkxFUElDPVllcyIKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICA6Cit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gUFJFRklYPSR7cHJlZml4fQorfQorCitDTEVBTkJST0tFTiA9ICIxIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLW11bHRpbWVkaWEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtbXVsdGltZWRpYS5iYgppbmRleCBjZWY0NWY5Li5lMGNiNDE1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtbXVsdGltZWRpYS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtbXVsdGltZWRpYS5iYgpAQCAtMjksOSArMjksOSBAQAogICAgIHJ0bXBkdW1wIGxpYm9wZW5tcHQgc2Nocm9lZGluZ2VyIG1wZCBtcGMgbGlibXBkY2xpZW50IFwKICAgICBuY21wYyBsaWJtcGQgZGNhZGVjIGxpYmllYzYxODgzIFwKICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInBhbSIsICIiLCAiIiwgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygiTElDRU5TRV9GTEFHU19XSElURUxJU1QiLCAiY29tbWVyY2lhbCIsICJtaW5pZGxuYSBnc3QtZmx1ZW5kby1tcGVnZGVtdXggdmxjIiwgIiIsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUIiwgImNvbW1lcmNpYWwiLCAidm8tYWFjZW5jIHNveCBsaWJkZTI2NSBnc3Qtb3Blbm1heCIsICIiLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCIsICJjb21tZXJjaWFsIiwgInN0cmVhbXJpcHBlciBnc3QtcGx1Z2lucy11Z2x5IGdzdC1mbHVlbmRvLW1wMyBnc3QtcGx1Z2lucy1nbCIsICIiLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCIsICJjb21tZXJjaWFsIiwgIm1pbmlkbG5hIHZsYyIsICIiLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCIsICJjb21tZXJjaWFsIiwgInZvLWFhY2VuYyBzb3ggbGliZGUyNjUiLCAiIiwgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiTElDRU5TRV9GTEFHU19XSElURUxJU1QiLCAiY29tbWVyY2lhbCIsICJzdHJlYW1yaXBwZXIiLCAiIiwgZCl9IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygiTElDRU5TRV9GTEFHU19XSElURUxJU1QiLCAiY29tbWVyY2lhbCIsICJvcGVuaDI2NCBvcGVuY29yZS1hbXIgZmFhYyB2by1hbXJ3YmVuYyIsICIiLCBkKX0gXAogICAgICIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9zYW1wbGUtY29udGVudC9iaWdidWNrYnVubnktMTA4MHAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NhbXBsZS1jb250ZW50L2JpZ2J1Y2tidW5ueS0xMDgwcC5iYgppbmRleCBjZWUzODZjLi43MGViNmU0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NhbXBsZS1jb250ZW50L2JpZ2J1Y2tidW5ueS0xMDgwcC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NhbXBsZS1jb250ZW50L2JpZ2J1Y2tidW5ueS0xMDgwcC5iYgpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiQmlnIEJ1Y2sgQnVubnkgbW92aWUgLSAxMDgwUCIKIExJQ0VOU0UgPSAiQ0MtQlktMy4wIgogIyBodHRwOi8vd3d3LmJpZ2J1Y2tidW5ueS5vcmcvaW5kZXgucGhwL2Fib3V0LwotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvQ0MtQlktMy4wO21kNT1kZmEwMmI1NzU1NjI5MDIyZTI2N2YxMGI5YzBhMmFiNyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9DQy1CWS0zLjA7bWQ1PWRmYTAyYjU3NTU2MjkwMjJlMjY3ZjEwYjljMGEyYWI3IgogCiBTUkNfVVJJID0gImh0dHA6Ly90aGVtYXp6b25lLmNvbS9iaWdfYnVja19idW5ueV8xMDgwcF9zdXJyb3VuZC5hdmkiCiBTUkNfVVJJW21kNXN1bV0gPSAiMjIzOTkxYzhiMzM1NjRlYjc3OTg4YTRjMTNjMWM3NmEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NhbXBsZS1jb250ZW50L2JpZ2J1Y2tidW5ueS00ODBwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9zYW1wbGUtY29udGVudC9iaWdidWNrYnVubnktNDgwcC5iYgppbmRleCBkMzk1YjkyLi5kZjIzNjg5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NhbXBsZS1jb250ZW50L2JpZ2J1Y2tidW5ueS00ODBwLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc2FtcGxlLWNvbnRlbnQvYmlnYnVja2J1bm55LTQ4MHAuYmIKQEAgLTEsNyArMSw3IEBACiBTVU1NQVJZID0gIkJpZyBCdWNrIEJ1bm55IG1vdmllIC0gNDgwUCIKIExJQ0VOU0UgPSAiQ0MtQlktMy4wIgogIyBodHRwOi8vd3d3LmJpZ2J1Y2tidW5ueS5vcmcvaW5kZXgucGhwL2Fib3V0LwotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvQ0MtQlktMy4wO21kNT1kZmEwMmI1NzU1NjI5MDIyZTI2N2YxMGI5YzBhMmFiNyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9DQy1CWS0zLjA7bWQ1PWRmYTAyYjU3NTU2MjkwMjJlMjY3ZjEwYjljMGEyYWI3IgogCiBTUkNfVVJJID0gImh0dHBzOi8vYXJjaGl2ZS5vcmcvZG93bmxvYWQvQmlnQnVja0J1bm55L2JpZ19idWNrX2J1bm55XzQ4MHBfc3Vycm91bmQtZml4LmF2aSIKIFNSQ19VUklbbWQ1c3VtXSA9ICJlZDdlZDAxZTlhZWZiYThkZGQ3N2MxMzMzMmNlYzEyMCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc2FtcGxlLWNvbnRlbnQvYmlnYnVja2J1bm55LTcyMHAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NhbXBsZS1jb250ZW50L2JpZ2J1Y2tidW5ueS03MjBwLmJiCmluZGV4IDIwZDU2MjcuLmNiOGVjZTAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc2FtcGxlLWNvbnRlbnQvYmlnYnVja2J1bm55LTcyMHAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9zYW1wbGUtY29udGVudC9iaWdidWNrYnVubnktNzIwcC5iYgpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiQmlnIEJ1Y2sgQnVubnkgbW92aWUgLSA3MjBQIgogTElDRU5TRSA9ICJDQy1CWS0zLjAiCiAjIGh0dHA6Ly93d3cuYmlnYnVja2J1bm55Lm9yZy9pbmRleC5waHAvYWJvdXQvCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9DQy1CWS0zLjA7bWQ1PWRmYTAyYjU3NTU2MjkwMjJlMjY3ZjEwYjljMGEyYWI3IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L0NDLUJZLTMuMDttZDU9ZGZhMDJiNTc1NTYyOTAyMmUyNjdmMTBiOWMwYTJhYjciCiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9hcmNoaXZlLm9yZy9kb3dubG9hZC9CaWdCdWNrQnVubnkvYmlnX2J1Y2tfYnVubnlfNzIwcF9zdXJyb3VuZC5hdmkiCiBTUkNfVVJJW21kNXN1bV0gPSAiMGRhOGZlMTI0NTk1ZjViMjA2ZDY0Y2IxNDAwYmJlZmMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NhbXBsZS1jb250ZW50L3RlYXJzb2ZzdGVlbC0xMDgwcC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc2FtcGxlLWNvbnRlbnQvdGVhcnNvZnN0ZWVsLTEwODBwLmJiCmluZGV4IDA1ODJhNDguLjA0Y2JkMmUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc2FtcGxlLWNvbnRlbnQvdGVhcnNvZnN0ZWVsLTEwODBwLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc2FtcGxlLWNvbnRlbnQvdGVhcnNvZnN0ZWVsLTEwODBwLmJiCkBAIC0xLDYgKzEsNiBAQAogU1VNTUFSWSA9ICJUZWFycyBvZiBTdGVlbCBtb3ZpZSAtIDEwODBQIgogTElDRU5TRSA9ICJDQy1CWS0zLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9DQy1CWS0zLjA7bWQ1PWRmYTAyYjU3NTU2MjkwMjJlMjY3ZjEwYjljMGEyYWI3IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L0NDLUJZLTMuMDttZDU9ZGZhMDJiNTc1NTYyOTAyMmUyNjdmMTBiOWMwYTJhYjciCiAKIFNSQ19VUkkgPSAiaHR0cDovL2Z0cC5ubHV1Zy5ubC9wdWIvZ3JhcGhpY3MvYmxlbmRlci9kZW1vL21vdmllcy9Ub1MvVG9TLTRrLTE5MjAubW92IgogU1JDX1VSSVttZDVzdW1dID0gImUzZmVlNTViMTc3OWM1NTNlMzdiMWQzOTg4ZTZmYWQ2IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS92bGMvdmxjLzAwMDEtVXNlLXBhY2thZ2Vjb25maWctdG8tZGV0ZWN0LW1tYWwtc3VwcG9ydC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdmxjL3ZsYy8wMDAxLVVzZS1wYWNrYWdlY29uZmlnLXRvLWRldGVjdC1tbWFsLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI0YWFhMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdmxjL3ZsYy8wMDAxLVVzZS1wYWNrYWdlY29uZmlnLXRvLWRldGVjdC1tbWFsLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSBlODcxNmE3NzU1ZWVmOTNlMTAzM2JiOTEzZTFlYjRmYWVlNTQ2NThmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTUgQXByIDIwMjAgMTg6Mjk6MjYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIHBhY2thZ2Vjb25maWcgdG8gZGV0ZWN0IG1tYWwgc3VwcG9ydAorCitUaGlzIG5lZWRzIHVzZXJsYW5kIGdyYXBoaWNzIGxpYnJhcmllcywgYmVjYXVzZSBkaXN0cm9zIG1heSBpbnN0YWxsIGl0CitpbiBkaWZmZXJlbnQgbG9jYXRpb25zLCB0aGVyZWZvcmUgaXRzIGJlc3QgdG8gcmVseSBvbiBwa2djb25mIHRvIGZpbmQKK3RoZSBsaWJzIGFuZCBoZWFkZXIgbG9jYXRpb25zIGluc3RlYWQgb2YgYXNzdW1pbmcgL29wdC92YyB3aGljaCBtaWdodAord29yayBvbiBzb21lIGRpc3Ryb3MgKCBsaWtlIHJhc3BiaWFuICkgYnV0IG5vdCBldmVyeXdoZXJlCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAzMSArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBkN2NmNjkyLi5mODFiOTlkIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0zNDI3LDI3ICszNDI3LDE4IEBAIEFDX0FSR19FTkFCTEUobW1hbCwKKyAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1tbWFsXSwKKyAgICAgW011bHRpLU1lZGlhIEFic3RyYWN0aW9uIExheWVyIChNTUFMKSBoYXJkd2FyZSBwbHVnaW4gKGRlZmF1bHQgZW5hYmxlKV0pKQorIGlmIHRlc3QgIiR7ZW5hYmxlX21tYWx9IiAhPSAibm8iOyB0aGVuCistICBWTENfU0FWRV9GTEFHUworLSAgTERGTEFHUz0iJHtMREZMQUdTfSAtTC9vcHQvdmMvbGliIC1sdmNob3N0aWYiCistICBDUFBGTEFHUz0iJHtDUFBGTEFHU30gLWlzeXN0ZW0gL29wdC92Yy9pbmNsdWRlIC1pc3lzdGVtIC9vcHQvdmMvaW5jbHVkZS9pbnRlcmZhY2UvdmNvcy9wdGhyZWFkcyAtaXN5c3RlbSAvb3B0L3ZjL2luY2x1ZGUvaW50ZXJmYWNlL3ZtY3NfaG9zdC9saW51eCIKKy0gIEFDX0NIRUNLX0hFQURFUlMoaW50ZXJmYWNlL21tYWwvbW1hbC5oLAorLSAgICBbIEFDX0NIRUNLX0xJQihiY21faG9zdCwgdmNfdHZfdW5yZWdpc3Rlcl9jYWxsYmFja19mdWxsLCBbCistICAgICAgICBoYXZlX21tYWw9InllcyIKKy0gICAgICAgIFZMQ19BRERfUExVR0lOKFttbWFsXSkKKy0gICAgICAgIFZMQ19BRERfTERGTEFHUyhbbW1hbF0sWyAtTC9vcHQvdmMvbGliIF0pCistICAgICAgICBWTENfQUREX0NGTEFHUyhbbW1hbF0sWyAtaXN5c3RlbSAvb3B0L3ZjL2luY2x1ZGUgLWlzeXN0ZW0gL29wdC92Yy9pbmNsdWRlL2ludGVyZmFjZS92Y29zL3B0aHJlYWRzIC1pc3lzdGVtIC9vcHQvdmMvaW5jbHVkZS9pbnRlcmZhY2Uvdm1jc19ob3N0L2xpbnV4IF0pCistICAgICAgICBWTENfQUREX0xJQlMoW21tYWxdLFsgLWxiY21faG9zdCAtbG1tYWwgLWxtbWFsX2NvcmUgLWxtbWFsX2NvbXBvbmVudHMgLWxtbWFsX3V0aWwgLWx2Y2hvc3RpZiBdKSBdLCBbCistICAgICAgICAgIEFTX0lGKFt0ZXN0ICIke2VuYWJsZV9tbWFsfSIgPSAieWVzIl0sCistICAgICAgICAgICAgWyBBQ19NU0dfRVJST1IoW0Nhbm5vdCBmaW5kIGJjbSBsaWJyYXJ5Li4uXSkgXSwKKy0gICAgICAgICAgICBbIEFDX01TR19XQVJOKFtDYW5ub3QgZmluZCBiY20gbGlicmFyeS4uLl0pIF0pCistICAgICAgICAgIF0sCistICAgICAgICBbXSkKKy0gICAgXSAsIFsgQVNfSUYoW3Rlc3QgIiR7ZW5hYmxlX21tYWx9IiA9ICJ5ZXMiXSwKKy0gICAgICBbIEFDX01TR19FUlJPUihbQ2Fubm90IGZpbmQgZGV2ZWxvcG1lbnQgaGVhZGVycyBmb3IgbW1hbC4uLl0pIF0sCistICAgICAgWyBBQ19NU0dfV0FSTihbQ2Fubm90IGZpbmQgZGV2ZWxvcG1lbnQgaGVhZGVycyBmb3IgbW1hbC4uLl0pIF0pIF0pCistICBWTENfUkVTVE9SRV9GTEFHUworKyAgICAgIFBLR19DSEVDS19NT0RVTEVTKEJDTUhPU1QsIFtiY21faG9zdF0sIFsKKysgICAgICBIQVZFX0JDTUhPU1Q9eWVzCisrICAgICAgQUNfREVGSU5FKEhBVkVfQkNNSE9TVCwgMSwgW0RlZmluZSB0aGlzIGlmIHlvdSBoYXZlIGhhdmUgdXNlcmxhbmcgZ3JhcGhpY3MgaW5zdGFsbGVkXSkKKysgICAgICBWTENfQUREX0xJQlMoW2JjbWhvc3RdLFskQkNNSE9TVF9MSUJTXSkKKysgICAgICBWTENfQUREX0NGTEFHUyhbYmNtaG9zdF0sWyRCQ01IT1NUX0NGTEFHU10pCisrICAgICAgXSw6CisrICAgICAgW0FDX01TR19XQVJOKFske0JDTUhPU1RfUEtHX0VSUk9SU306IHVzZXJsYW5kIGdyYXBoaWNzIG5vdCBhdmFpbGFibGUuXSkKKysgICAgICBIQVZFX0JDTUhPU1Q9bm9dKQorKworKyAgICAgIEFDX0NIRUNLX0hFQURFUlMoaW50ZXJmYWNlL21tYWwvbW1hbC5oKQorIGZpCistQU1fQ09ORElUSU9OQUwoW0hBVkVfTU1BTF0sIFt0ZXN0ICIke2hhdmVfbW1hbH0iID0gInllcyJdKQorK0FNX0NPTkRJVElPTkFMKFtIQVZFX01NQUxdLCBbdGVzdCAiJHtoYXZlX2JjbWhvc3R9IiA9ICJ5ZXMiXSkKKyAKKyBkbmwKKyBkbmwgZXZhcyBwbHVnaW4KKy0tIAorMi4yNi4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdmxjL3ZsY18zLjAuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdmxjL3ZsY18zLjAuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE3MTc0ZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3ZsYy92bGNfMy4wLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVmlkZW8gcGxheWVyIGFuZCBzdHJlYW1lciAtIGRhdmluY2kgZWRpdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cudmlkZW9sYW4ub3JnIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotCi1MSUNFTlNFID0gIkdQTC0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotREVQRU5EUyA9ICJjb3JldXRpbHMtbmF0aXZlIGZyaWJpZGkgbGlidG9vbCBsaWJnY3J5cHQgbGliZ2NyeXB0LW5hdGl2ZSBcCi0gICBkYnVzIGxpYnhtbDIgZ251dGxzIFwKLSAgIHRyZW1vciBmYWFkMiBmZm1wZWcgZmxhYyBmbHVpZHN5bnRoIGFsc2EtbGliIFwKLSAgIGx1YS1uYXRpdmUgbHVhIGxpYmlkbiBcCi0gICBhdmFoaSBqcGVnIHh6IGxpYm1vZHBsdWcgbXBlZzJkZWMgXAotICAgbGlibXRwIGxpYm9wdXMgb3JjIGxpYnNhbXBsZXJhdGUwIGxpYnVzYjEgc2Nocm9lZGluZ2VyIHRhZ2xpYiBcCi0gICB0aWZmIgotCi0jIFdoaWxlIHRoaXMgaXRlbSBkb2VzIG5vdCByZXF1aXJlIGl0LCBpdCBkZXBlbmRzIG9uIGZmbXBlZyB3aGljaCBkb2VzCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLnZpZGVvbGFuLm9yZy9wdWIvdmlkZW9sYW4vJHtCUE59LyR7UFZ9LyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LW1ha2Utb3BlbmN2LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXVzZS12b3JiaXNpZGVjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgtZml4LWx1YUwtY2hlY2tpbnQucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjc0NDQ0MmVjMGMxNDU0NTNlYTFkMjU3OTE0YzgwNzJlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUwMTQ5ZWY0YTIwYTE5YjllY2Q4NzMwOWMyZDI3Nzg3ZWUzZjQ3ZGZkNDdjNjYzOTY0NGJjMWY2ZmQ5NWJkZjYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCi0KLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotZXhwb3J0IEJVSUxEQ0MgPSAiJHtCVUlMRF9DQ30iCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgIC0tZW5hYmxlLXJ1bi1hcy1yb290IFwKLSAgICAtLWVuYWJsZS14dmlkZW8gXAotICAgIC0tZGlzYWJsZS1zY3JlZW4gLS1kaXNhYmxlLWNhY2EgXAotICAgIC0tZW5hYmxlLXZsbSBcCi0gICAgLS1lbmFibGUtZnJlZXR5cGUgXAotICAgIC0tZW5hYmxlLXRyZW1vciBcCi0gICAgLS1lbmFibGUtdjRsMiAtLWRpc2FibGUtYWEgLS1kaXNhYmxlLWZhYWQgXAotICAgIC0tZW5hYmxlLWRidXMgXAotICAgIC0td2l0aG91dC1jb250cmliIFwKLSAgICAtLXdpdGhvdXQta2RlLXNvbGlkIFwKLSAgICAtLWVuYWJsZS1yZWFscnRzcCBcCi0gICAgLS1kaXNhYmxlLWxpYnRhciBcCi0gICAgLS1lbmFibGUtYXZjb2RlYyBcCi0gICAgYWNfY3ZfcGF0aF9NT0M9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9JHtRVF9ESVJfTkFNRX0vbW9jIFwKLSAgICBhY19jdl9wYXRoX1JDQz0ke1NUQUdJTkdfQklORElSX05BVElWRX0ke1FUX0RJUl9OQU1FfS9yY2MgXAotICAgIGFjX2N2X3BhdGhfVUlDPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfSR7UVRfRElSX05BTUV9L3VpYyBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiBcCi0gICAgbGl2ZTU1NSBkYzEzOTQgZHYxMzk0IG5vdGlmeSBmb250Y29uZmlnIGZyZWV0eXBlIGR2ZHJlYWQgcG5nIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnJywgZCl9IFwKLSIKLQotaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdxdDUnLCAncW1ha2U1X3BhdGhzJywgJycsIGQpfQotCi1QQUNLQUdFQ09ORklHW21hZF0gPSAiLS1lbmFibGUtbWFkLC0tZGlzYWJsZS1tYWQsbGlibWFkIgotUEFDS0FHRUNPTkZJR1thNTJdID0gIi0tZW5hYmxlLWE1MiwtLWRpc2FibGUtYTUyLGxpYmE1MiIKLVBBQ0tBR0VDT05GSUdbamFja10gPSAiLS1lbmFibGUtamFjaywtLWRpc2FibGUtamFjayxqYWNrIgotUEFDS0FHRUNPTkZJR1tsaXZlNTU1XSA9ICItLWVuYWJsZS1saXZlNTU1IExJVkU1NTVfUFJFRklYPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0sLS1kaXNhYmxlLWxpdmU1NTUsbGl2ZTU1NSIKLVBBQ0tBR0VDT05GSUdbbGliYXNzXSA9ICItLWVuYWJsZS1saWJhc3MsLS1kaXNhYmxlLWxpYmFzcyxsaWJhc3MiCi1QQUNLQUdFQ09ORklHW3Bvc3Rwcm9jXSA9ICItLWVuYWJsZS1wb3N0cHJvYywtLWRpc2FibGUtcG9zdHByb2MsbGlicG9zdHByb2MiCi1QQUNLQUdFQ09ORklHW2xpYnZhXSA9ICItLWVuYWJsZS1saWJ2YSwtLWRpc2FibGUtbGlidmEsbGlidmEiCi1QQUNLQUdFQ09ORklHW29wZW5jdl0gPSAiLS1lbmFibGUtb3BlbmN2LC0tZGlzYWJsZS1vcGVuY3Ysb3BlbmN2IgotUEFDS0FHRUNPTkZJR1tzcGVleF0gPSAiLS1lbmFibGUtc3BlZXgsLS1kaXNhYmxlLXNwZWV4LHNwZWV4IgotUEFDS0FHRUNPTkZJR1tnc3RyZWFtZXJdID0gIi0tZW5hYmxlLWdzdC1kZWNvZGUsLS1kaXNhYmxlLWdzdC1kZWNvZGUsZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0LXBsdWdpbnMtYmFkIgotUEFDS0FHRUNPTkZJR1t2cHhdID0gIi0tZW5hYmxlLXZweCwtLWRpc2FibGUtdnB4LCBsaWJ2cHgiCi1QQUNLQUdFQ09ORklHW3F0NV0gPSAiLS1lbmFibGUtcXQsLS1kaXNhYmxlLXF0LCBxdGJhc2UtbmF0aXZlIHF0eDExZXh0cmFzIHF0c3ZnIgotUEFDS0FHRUNPTkZJR1tmcmVlcmRwXSA9ICItLWVuYWJsZS1mcmVlcmRwLC0tZGlzYWJsZS1mcmVlcmRwLCBmcmVlcmRwIgotUEFDS0FHRUNPTkZJR1tkdmJwc2ldID0gIi0tZW5hYmxlLWR2YnBzaSwtLWRpc2FibGUtZHZicHNpLCBsaWJkdmJwc2kiCi1QQUNLQUdFQ09ORklHW3NhbWJhXSA9ICItLWVuYWJsZS1zbWJjbGllbnQsLS1kaXNhYmxlLXNtYmNsaWVudCwgc2FtYmEiCi1QQUNLQUdFQ09ORklHW3VwbnBdID0gIi0tZW5hYmxlLXVwbnAsLS1kaXNhYmxlLXVwbnAsbGlidXBucCIKLVBBQ0tBR0VDT05GSUdbZHZkbmF2XSA9ICItLWVuYWJsZS1kdmRuYXYsLS1kaXNhYmxlLWR2ZG5hdixsaWJkdmRuYXYgbGliZHZkY3NzIgotUEFDS0FHRUNPTkZJR1tzZnRwXSA9ICItLWVuYWJsZS1zZnRwLC0tZGlzYWJsZS1zZnRwLGxpYnNzaDIiCi1QQUNLQUdFQ09ORklHW3ZvcmJpc10gPSAiLS1lbmFibGUtdm9yYmlzLC0tZGlzYWJsZS12b3JiaXMsbGlidm9yYmlzIGxpYm9nZyIKLVBBQ0tBR0VDT05GSUdbb2dnXSA9ICItLWVuYWJsZS1vZ2csLS1kaXNhYmxlLW9nZyxsaWJ2b3JiaXMgbGlib2dnIgotUEFDS0FHRUNPTkZJR1tkYzEzOTRdID0gIi0tZW5hYmxlLWRjMTM5NCwtLWRpc2FibGUtZGMxMzk0LGxpYmRjMTM5NCIKLVBBQ0tBR0VDT05GSUdbZHYxMzk0XSA9ICItLWVuYWJsZS1kdjEzOTQsLS1kaXNhYmxlLWR2MTM5NCxsaWJyYXcxMzk0IGxpYmF2YzEzOTQiCi1QQUNLQUdFQ09ORklHW3N2Z10gPSAiLS1lbmFibGUtc3ZnLC0tZGlzYWJsZS1zdmcsbGlicnN2ZyIKLVBBQ0tBR0VDT05GSUdbc3ZnZGVjXSA9ICItLWVuYWJsZS1zdmdkZWMsLS1kaXNhYmxlLXN2Z2RlYyxsaWJyc3ZnIGNhaXJvIgotUEFDS0FHRUNPTkZJR1tub3RpZnldID0gIi0tZW5hYmxlLW5vdGlmeSwtLWRpc2FibGUtbm90aWZ5LCBsaWJub3RpZnkgZ3RrKzMiCi1QQUNLQUdFQ09ORklHW2ZvbnRjb25maWddID0gIi0tZW5hYmxlLWZvbnRjb25maWcsLS1kaXNhYmxlLWZvbnRjb25maWcsIGZvbnRjb25maWciCi1QQUNLQUdFQ09ORklHW2ZyZWV0eXBlXSA9ICItLWVuYWJsZS1mcmVldHlwZSwtLWRpc2FibGUtZnJlZXR5cGUsIGZyZWV0eXBlIgotUEFDS0FHRUNPTkZJR1tkdmRyZWFkXSA9ICItLWVuYWJsZS1kdmRyZWFkLC0tZGlzYWJsZS1kdmRyZWFkLCBsaWJkdmRyZWFkIGxpYmR2ZGNzcyIKLVBBQ0tBR0VDT05GSUdbdm5jXSA9ICItLWVuYWJsZS12bmMsLS1kaXNhYmxlLXZuYywgbGlidm5jc2VydmVyIgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14IC0tZW5hYmxlLXhjYiwtLXdpdGhvdXQteCAtLWRpc2FibGUteGNiLCAgeGNiLXV0aWwta2V5c3ltcyBsaWJ4cG0gbGlieGluZXJhbWEiCi1QQUNLQUdFQ09ORklHW3BuZ10gPSAiLS1lbmFibGUtcG5nLC0tZGlzYWJsZS1wbmcsbGlicG5nIgotUEFDS0FHRUNPTkZJR1t2ZHBhdV0gPSAiLS1lbmFibGUtdmRwYXUsLS1kaXNhYmxlLXZkcGF1LGxpYnZkcGF1IgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotICAgIHNlZCAtaSAtZSBzOicke3RvcF9idWlsZGRpcl9zbGFzaH1saWJ0b29sJzonJHt0b3BfYnVpbGRkaXJfc2xhc2h9JyR7VEFSR0VUX1NZU30tbGlidG9vbDpnICR7Qn0vZG9sdGxpYnRvb2wKLQotICAgICMgbW9jIG5lZWRzIHN1cHBvcnQ6IHByZWNyZWF0ZSBidWlsZCBwYXRocwotICAgIGZvciBxdHBhdGggaW4gYWRhcHRlcnMgY29tcG9uZW50cy9lcGcgY29tcG9uZW50cy9wbGF5bGlzdCBjb21wb25lbnRzL3NvdXQgZGlhbG9ncyBtYW5hZ2VycyBzdHlsZXMgdXRpbC9idXR0b25zOyBkbwotICAgICAgICBta2RpciAtcCAiJHtCfS9tb2R1bGVzL2d1aS9xdC8kcXRwYXRoIgotICAgIGRvbmUKLX0KLQotIyBUaGlzIHJlY2lwZSBwYWNrYWdlcyB2bGMgYXMgYSBsaWJyYXJ5IGFzIHdlbGwsIHNvIHF0NCBkZXBlbmRlbmNpZXMKLSMgY2FuIGJlIGF2b2lkZWQgd2hlbiBvbmx5IHRoZSBsaWJyYXJ5IGlzIGluc3RhbGxlZC4KLVBBQ0tBR0VTID0rICJsaWJ2bGMiCi0KLUxFQURfU09OQU1FX2xpYnZsYyA9ICJsaWJ2bGMuc28uNSIKLUZJTEVTX2xpYnZsYyA9ICIke2xpYmRpcn0vbGliKi5zby4qIgotCi1GSUxFU18ke1BOfSArPSAiXAotICAgICR7YmluZGlyfS92bGMgXAotICAgICR7bGliZGlyfS92bGMvdmxjL2xpYnZsY192ZHBhdS5zbyBcCi0gICAgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMgXAotICAgICR7ZGF0YWRpcn0vdmxjLyBcCi0gICAgJHtkYXRhZGlyfS9pY29ucyBcCi0gICAgJHtkYXRhZGlyfS9tZXRhaW5mby92bGMuYXBwZGF0YS54bWwgXAotIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIlwKLSAgICAke2xpYmRpcn0vdmxjLyovLmRlYnVnIFwKLSAgICAke2xpYmRpcn0vdmxjL3BsdWdpbnMvKi8uZGVidWcgXAotIgotCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIlwKLSAgICAke2xpYmRpcn0vdmxjL3BsdWdpbnMvKi8qLmEgXAotIgotCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJkZXYtc28iCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdmxjL3ZsY18zLjAuOS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS92bGMvdmxjXzMuMC45LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZjN2E2MAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdmxjL3ZsY18zLjAuOS4yLmJiCkBAIC0wLDAgKzEsMTMzIEBACitERVNDUklQVElPTiA9ICJWaWRlbyBwbGF5ZXIgYW5kIHN0cmVhbWVyIC0gZGF2aW5jaSBlZGl0aW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy52aWRlb2xhbi5vcmciCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKK0xJQ0VOU0UgPSAiR1BMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitERVBFTkRTID0gImNvcmV1dGlscy1uYXRpdmUgZnJpYmlkaSBsaWJ0b29sIGxpYmdjcnlwdCBsaWJnY3J5cHQtbmF0aXZlIFwKKyAgIGRidXMgbGlieG1sMiBnbnV0bHMgXAorICAgdHJlbW9yIGZhYWQyIGZmbXBlZyBmbGFjIGFsc2EtbGliIFwKKyAgIGx1YS1uYXRpdmUgbHVhIGxpYmlkbiBcCisgICBhdmFoaSBqcGVnIHh6IGxpYm1vZHBsdWcgbXBlZzJkZWMgXAorICAgbGlibXRwIGxpYm9wdXMgb3JjIGxpYnNhbXBsZXJhdGUwIGxpYnVzYjEgc2Nocm9lZGluZ2VyIHRhZ2xpYiBcCisgICB0aWZmIgorCitMREZMQUdTX2FwcGVuZF9yaXNjdjY0ID0gIiAtbGF0b21pYyIKKworIyBXaGlsZSB0aGlzIGl0ZW0gZG9lcyBub3QgcmVxdWlyZSBpdCwgaXQgZGVwZW5kcyBvbiBmZm1wZWcgd2hpY2ggZG9lcworTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC52aWRlb2xhbi5vcmcvcHViL3ZpZGVvbGFuLyR7QlBOfS8ke1BWfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1tYWtlLW9wZW5jdi1jb25maWd1cmFibGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy11c2Utdm9yYmlzaWRlYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LWZpeC1sdWFMLWNoZWNraW50LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBhY2thZ2Vjb25maWctdG8tZGV0ZWN0LW1tYWwtc3VwcG9ydC5wYXRjaCBcCisiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTliZGFkMjkzZDgxY2Q0ODUxNmFiYWQ4ZDQ5MGQ4YWI0MDEyOTY0YWU1NDFmZjE5ZTAwMDIxZTA3MWU0NzYwMSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZmVhdHVyZXNfY2hlY2sgZ2V0dGV4dCBwa2djb25maWcgbWltZS14ZGcKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworZXhwb3J0IEJVSUxEQ0MgPSAiJHtCVUlMRF9DQ30iCitFWFRSQV9PRUNPTkYgPSAiXAorICAgIC0tZW5hYmxlLXJ1bi1hcy1yb290IFwKKyAgICAtLWVuYWJsZS14dmlkZW8gXAorICAgIC0tZGlzYWJsZS1zY3JlZW4gLS1kaXNhYmxlLWNhY2EgXAorICAgIC0tZW5hYmxlLXZsbSBcCisgICAgLS1lbmFibGUtZnJlZXR5cGUgXAorICAgIC0tZW5hYmxlLXRyZW1vciBcCisgICAgLS1lbmFibGUtdjRsMiAtLWRpc2FibGUtYWEgLS1kaXNhYmxlLWZhYWQgXAorICAgIC0tZW5hYmxlLWRidXMgXAorICAgIC0td2l0aG91dC1jb250cmliIFwKKyAgICAtLXdpdGhvdXQta2RlLXNvbGlkIFwKKyAgICAtLWVuYWJsZS1yZWFscnRzcCBcCisgICAgLS1kaXNhYmxlLWxpYnRhciBcCisgICAgLS1lbmFibGUtYXZjb2RlYyBcCisgICAgYWNfY3ZfcGF0aF9NT0M9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9JHtRVF9ESVJfTkFNRX0vbW9jIFwKKyAgICBhY19jdl9wYXRoX1JDQz0ke1NUQUdJTkdfQklORElSX05BVElWRX0ke1FUX0RJUl9OQU1FfS9yY2MgXAorICAgIGFjX2N2X3BhdGhfVUlDPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfSR7UVRfRElSX05BTUV9L3VpYyBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiBcCisgICAgbGl2ZTU1NSBkYzEzOTQgZHYxMzk0IG5vdGlmeSBmb250Y29uZmlnIGZsdWlkc3ludGggZnJlZXR5cGUgZHZkcmVhZCBwbmcgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICcnLCBkKX0gXAorICAgIHgyNjQgXAorIgorCitpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3F0NScsICdxbWFrZTVfcGF0aHMnLCAnJywgZCl9CisKK1BBQ0tBR0VDT05GSUdbbW1hbF0gPSAiLS1lbmFibGUtb214aWwgLS1lbmFibGUtb214aWwtdm91dCAtLWVuYWJsZS1ycGktb214aWwgLS1lbmFibGUtbW1hbCwsdXNlcmxhbmQiCitQQUNLQUdFQ09ORklHW3gyNjRdID0gIi0tZW5hYmxlLXgyNjQsLS1kaXNhYmxlLXgyNjQseDI2NCIKK1BBQ0tBR0VDT05GSUdbZmx1aWRzeW50aF0gPSAiLCxmbHVpZHN5bnRoIgorUEFDS0FHRUNPTkZJR1ttYWRdID0gIi0tZW5hYmxlLW1hZCwtLWRpc2FibGUtbWFkLGxpYm1hZCIKK1BBQ0tBR0VDT05GSUdbYTUyXSA9ICItLWVuYWJsZS1hNTIsLS1kaXNhYmxlLWE1MixsaWJhNTIiCitQQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWphY2ssLS1kaXNhYmxlLWphY2ssamFjayIKK1BBQ0tBR0VDT05GSUdbbGl2ZTU1NV0gPSAiLS1lbmFibGUtbGl2ZTU1NSBMSVZFNTU1X1BSRUZJWD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0tZGlzYWJsZS1saXZlNTU1LGxpdmU1NTUiCitQQUNLQUdFQ09ORklHW2xpYmFzc10gPSAiLS1lbmFibGUtbGliYXNzLC0tZGlzYWJsZS1saWJhc3MsbGliYXNzIgorUEFDS0FHRUNPTkZJR1twb3N0cHJvY10gPSAiLS1lbmFibGUtcG9zdHByb2MsLS1kaXNhYmxlLXBvc3Rwcm9jLGxpYnBvc3Rwcm9jIgorUEFDS0FHRUNPTkZJR1tsaWJ2YV0gPSAiLS1lbmFibGUtbGlidmEsLS1kaXNhYmxlLWxpYnZhLGxpYnZhIgorUEFDS0FHRUNPTkZJR1tvcGVuY3ZdID0gIi0tZW5hYmxlLW9wZW5jdiwtLWRpc2FibGUtb3BlbmN2LG9wZW5jdiIKK1BBQ0tBR0VDT05GSUdbc3BlZXhdID0gIi0tZW5hYmxlLXNwZWV4LC0tZGlzYWJsZS1zcGVleCxzcGVleCIKK1BBQ0tBR0VDT05GSUdbZ3N0cmVhbWVyXSA9ICItLWVuYWJsZS1nc3QtZGVjb2RlLC0tZGlzYWJsZS1nc3QtZGVjb2RlLGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCIKK1BBQ0tBR0VDT05GSUdbdnB4XSA9ICItLWVuYWJsZS12cHgsLS1kaXNhYmxlLXZweCwgbGlidnB4IgorUEFDS0FHRUNPTkZJR1txdDVdID0gIi0tZW5hYmxlLXF0LC0tZGlzYWJsZS1xdCwgcXRiYXNlLW5hdGl2ZSBxdHgxMWV4dHJhcyBxdHN2ZyIKK1BBQ0tBR0VDT05GSUdbZnJlZXJkcF0gPSAiLS1lbmFibGUtZnJlZXJkcCwtLWRpc2FibGUtZnJlZXJkcCwgZnJlZXJkcCIKK1BBQ0tBR0VDT05GSUdbZHZicHNpXSA9ICItLWVuYWJsZS1kdmJwc2ksLS1kaXNhYmxlLWR2YnBzaSwgbGliZHZicHNpIgorUEFDS0FHRUNPTkZJR1tzYW1iYV0gPSAiLS1lbmFibGUtc21iY2xpZW50LC0tZGlzYWJsZS1zbWJjbGllbnQsIHNhbWJhIgorUEFDS0FHRUNPTkZJR1t1cG5wXSA9ICItLWVuYWJsZS11cG5wLC0tZGlzYWJsZS11cG5wLGxpYnVwbnAiCitQQUNLQUdFQ09ORklHW2R2ZG5hdl0gPSAiLS1lbmFibGUtZHZkbmF2LC0tZGlzYWJsZS1kdmRuYXYsbGliZHZkbmF2IGxpYmR2ZGNzcyIKK1BBQ0tBR0VDT05GSUdbc2Z0cF0gPSAiLS1lbmFibGUtc2Z0cCwtLWRpc2FibGUtc2Z0cCxsaWJzc2gyIgorUEFDS0FHRUNPTkZJR1t2b3JiaXNdID0gIi0tZW5hYmxlLXZvcmJpcywtLWRpc2FibGUtdm9yYmlzLGxpYnZvcmJpcyBsaWJvZ2ciCitQQUNLQUdFQ09ORklHW29nZ10gPSAiLS1lbmFibGUtb2dnLC0tZGlzYWJsZS1vZ2csbGlidm9yYmlzIGxpYm9nZyIKK1BBQ0tBR0VDT05GSUdbZGMxMzk0XSA9ICItLWVuYWJsZS1kYzEzOTQsLS1kaXNhYmxlLWRjMTM5NCxsaWJkYzEzOTQiCitQQUNLQUdFQ09ORklHW2R2MTM5NF0gPSAiLS1lbmFibGUtZHYxMzk0LC0tZGlzYWJsZS1kdjEzOTQsbGlicmF3MTM5NCBsaWJhdmMxMzk0IgorUEFDS0FHRUNPTkZJR1tzdmddID0gIi0tZW5hYmxlLXN2ZywtLWRpc2FibGUtc3ZnLGxpYnJzdmciCitQQUNLQUdFQ09ORklHW3N2Z2RlY10gPSAiLS1lbmFibGUtc3ZnZGVjLC0tZGlzYWJsZS1zdmdkZWMsbGlicnN2ZyBjYWlybyIKK1BBQ0tBR0VDT05GSUdbbm90aWZ5XSA9ICItLWVuYWJsZS1ub3RpZnksLS1kaXNhYmxlLW5vdGlmeSwgbGlibm90aWZ5IGd0ayszIgorUEFDS0FHRUNPTkZJR1tmb250Y29uZmlnXSA9ICItLWVuYWJsZS1mb250Y29uZmlnLC0tZGlzYWJsZS1mb250Y29uZmlnLCBmb250Y29uZmlnIgorUEFDS0FHRUNPTkZJR1tmcmVldHlwZV0gPSAiLS1lbmFibGUtZnJlZXR5cGUsLS1kaXNhYmxlLWZyZWV0eXBlLCBmcmVldHlwZSIKK1BBQ0tBR0VDT05GSUdbZHZkcmVhZF0gPSAiLS1lbmFibGUtZHZkcmVhZCwtLWRpc2FibGUtZHZkcmVhZCwgbGliZHZkcmVhZCBsaWJkdmRjc3MiCitQQUNLQUdFQ09ORklHW3ZuY10gPSAiLS1lbmFibGUtdm5jLC0tZGlzYWJsZS12bmMsIGxpYnZuY3NlcnZlciIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCAtLWVuYWJsZS14Y2IsLS13aXRob3V0LXggLS1kaXNhYmxlLXhjYiwgIHhjYi11dGlsLWtleXN5bXMgbGlieHBtIGxpYnhpbmVyYW1hIgorUEFDS0FHRUNPTkZJR1twbmddID0gIi0tZW5hYmxlLXBuZywtLWRpc2FibGUtcG5nLGxpYnBuZyIKK1BBQ0tBR0VDT05GSUdbdmRwYXVdID0gIi0tZW5hYmxlLXZkcGF1LC0tZGlzYWJsZS12ZHBhdSxsaWJ2ZHBhdSIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kIHdheWxhbmQtbmF0aXZlIgorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworICAgIHNlZCAtaSAtZSBzOicke3RvcF9idWlsZGRpcl9zbGFzaH1saWJ0b29sJzonJHt0b3BfYnVpbGRkaXJfc2xhc2h9JyR7VEFSR0VUX1NZU30tbGlidG9vbDpnICR7Qn0vZG9sdGxpYnRvb2wKKworICAgICMgbW9jIG5lZWRzIHN1cHBvcnQ6IHByZWNyZWF0ZSBidWlsZCBwYXRocworICAgIGZvciBxdHBhdGggaW4gYWRhcHRlcnMgY29tcG9uZW50cy9lcGcgY29tcG9uZW50cy9wbGF5bGlzdCBjb21wb25lbnRzL3NvdXQgZGlhbG9ncyBtYW5hZ2VycyBzdHlsZXMgdXRpbC9idXR0b25zOyBkbworICAgICAgICBta2RpciAtcCAiJHtCfS9tb2R1bGVzL2d1aS9xdC8kcXRwYXRoIgorICAgIGRvbmUKK30KKworIyBUaGlzIHJlY2lwZSBwYWNrYWdlcyB2bGMgYXMgYSBsaWJyYXJ5IGFzIHdlbGwsIHNvIHF0NCBkZXBlbmRlbmNpZXMKKyMgY2FuIGJlIGF2b2lkZWQgd2hlbiBvbmx5IHRoZSBsaWJyYXJ5IGlzIGluc3RhbGxlZC4KK1BBQ0tBR0VTID0rICJsaWJ2bGMiCisKK0xFQURfU09OQU1FX2xpYnZsYyA9ICJsaWJ2bGMuc28uNSIKK0ZJTEVTX2xpYnZsYyA9ICIke2xpYmRpcn0vbGliKi5zby4qIgorCitGSUxFU18ke1BOfSArPSAiXAorICAgICR7YmluZGlyfS92bGMgXAorICAgICR7bGliZGlyfS92bGMvdmxjL2xpYnZsY192ZHBhdS5zbyBcCisgICAgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMgXAorICAgICR7ZGF0YWRpcn0vdmxjLyBcCisgICAgJHtkYXRhZGlyfS9pY29ucyBcCisgICAgJHtkYXRhZGlyfS9tZXRhaW5mby92bGMuYXBwZGF0YS54bWwgXAorIgorCitGSUxFU18ke1BOfS1kYmcgKz0gIlwKKyAgICAke2xpYmRpcn0vdmxjLyovLmRlYnVnIFwKKyAgICAke2xpYmRpcn0vdmxjL3BsdWdpbnMvKi8uZGVidWcgXAorIgorCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIlwKKyAgICAke2xpYmRpcn0vdmxjL3BsdWdpbnMvKi8qLmEgXAorIgorCitJTlNBTkVfU0tJUF8ke1BOfSA9ICJkZXYtc28iCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NS94MjY1XzMuMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY1L3gyNjVfMy4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMzNDUyNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NS94MjY1XzMuMi4xLmJiCkBAIC0wLDAgKzEsMjQgQEAKK1NVTU1BUlkgPSAiSC4yNjUvSEVWQyB2aWRlbyBlbmNvZGVyIgorREVTQ1JJUFRJT04gPSAiQSBmcmVlIHNvZnR3YXJlIGxpYnJhcnkgYW5kIGFwcGxpY2F0aW9uIGZvciBlbmNvZGluZyB2aWRlbyBzdHJlYW1zIGludG8gdGhlIEguMjY1L0hFVkMgZm9ybWF0LiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL2RldmVsb3BlcnMveDI2NS5odG1sIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vQ09QWUlORzttZDU9YzllMDQyN2JjNThmMTI5Zjk5NzI4YzYyZDRhZDQwOTEiCisKK0RFUEVORFMgPSAibmFzbS1uYXRpdmUgZ251dGxzIHpsaWIgbGlicGNyZSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLnZpZGVvbGFuLm9yZy9wdWIvdmlkZW9sYW4veDI2NS94MjY1XyR7UFZ9LnRhci5neiIKKworUyA9ICIke1dPUktESVJ9L3gyNjVfJHtQVn0vc291cmNlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTQ4MDgwNDVhMzRkODhhODU3ZTVlYWYzZjY4ZjRiY2EiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmI5YmFkY2Y5MjM2NGZkMzU2N2Y4YjVhYTBlNWU5NTJhZWVhN2EzOWEyYjg2NDM4N2NlYzMxZTNiNThjYmJjYyIKKworaW5oZXJpdCBsaWJfcGFja2FnZSBwa2djb25maWcgY21ha2UKKworRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2ID0gIiAtREVOQUJMRV9BU1NFTUJMWT1PRkYiCisKK0FTW3VuZXhwb3J0XSA9ICIxIgorCitDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NHxpLjg2KS4qLWxpbnV4JwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL2NvbmYvbGF5ZXIuY29uZiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9jb25mL2xheWVyLmNvbmYKaW5kZXggODY2YmRhNy4uN2JjMDcwMiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL2NvbmYvbGF5ZXIuY29uZgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvY29uZi9sYXllci5jb25mCkBAIC0xNyw3ICsxNyw3IEBACiBMQVlFUkRFUEVORFNfbmV0d29ya2luZy1sYXllciArPSAib3BlbmVtYmVkZGVkLWxheWVyIgogTEFZRVJERVBFTkRTX25ldHdvcmtpbmctbGF5ZXIgKz0gIm1ldGEtcHl0aG9uIgogCi1MQVlFUlNFUklFU19DT01QQVRfbmV0d29ya2luZy1sYXllciA9ICJ0aHVkIHdhcnJpb3IgemV1cyIKK0xBWUVSU0VSSUVTX0NPTVBBVF9uZXR3b3JraW5nLWxheWVyID0gInRodWQgd2FycmlvciB6ZXVzIGR1bmZlbGwiCiAKIExJQ0VOU0VfUEFUSCArPSAiJHtMQVlFUkRJUn0vbGljZW5zZXMiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jaXZldHdlYi9jaXZldHdlYl9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvY2l2ZXR3ZWIvY2l2ZXR3ZWJfZ2l0LmJiCmluZGV4IDcxMzY4YzEuLjI4MjBmOWYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jaXZldHdlYi9jaXZldHdlYl9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2NpdmV0d2ViL2NpdmV0d2ViX2dpdC5iYgpAQCAtMiwxMCArMiwxMCBAQAogSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2NpdmV0d2ViL2NpdmV0d2ViIgogCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PTZmMjhmZGNiYTBkZGE3MzVlZWQ2MmJhYzZhMzk3NTYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5tZDttZDU9NTBiZDFkN2YxMzViNTBkN2UyMTg5OTZiYTI4ZDBkODgiCiAKLVNSQ1JFViA9ICI2NDIzZmFlYTQ4MDBmNmNkNDA1NTc1MGE3YWYyZGE4NWNkYmU0ZTk2IgotUFYgPSAiMS4xMStnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICI0YjQ0MGEzMzk5Nzk4NTJkNWE1MWZiMTFhODIyOTUyNzEyMjMxYzIzIgorUFYgPSAiMS4xMitnaXQke1NSQ1BWfSIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9jaXZldHdlYi9jaXZldHdlYi5naXQgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Vbml0dGVzdC1MaW5rLWxpYnJ0LWFuZC1saWJtLXVzaW5nLWwtb3B0aW9uLnBhdGNoIFwKICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2NyZGEvY3JkYS9jcmRhLTQuMTQtcHl0aG9uLTMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvY3JkYS9jcmRhL2NyZGEtNC4xNC1weXRob24tMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTI1ZDBhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2NyZGEvY3JkYS9jcmRhLTQuMTQtcHl0aG9uLTMucGF0Y2gKQEAgLTAsMCArMSwxMDEgQEAKK0ltcG9ydGVkIGZyb20gR2VudG9vCitodHRwczovL2dpdHdlYi5nZW50b28ub3JnL3JlcG8vZ2VudG9vLmdpdC9jb21taXQvP2lkPTljNTBhY2VjMTZiYzdjMzNkNmRjMTIyYzAwN2Q3MTNlN2ZiZWNmOWMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworLS0tIGEvdXRpbHMva2V5MnB1Yi5weQorKysrIGIvdXRpbHMva2V5MnB1Yi5weQorQEAgLTEsMjIgKzEsMjIgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgCisgaW1wb3J0IHN5cworIHRyeToKKyAgICAgICAgZnJvbSBNMkNyeXB0byBpbXBvcnQgUlNBCistZXhjZXB0IEltcG9ydEVycm9yLCBlOgorK2V4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgorICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdFUlJPUjogRmFpbGVkIHRvIGltcG9ydCB0aGUgIk0yQ3J5cHRvIiBtb2R1bGU6ICVzXG4nICUgZS5tZXNzYWdlKQorICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdQbGVhc2UgaW5zdGFsbCB0aGUgIk0yQ3J5cHRvIiBQeXRob24gbW9kdWxlLlxuJykKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnT24gRGViaWFuIEdOVS9MaW51eCB0aGUgcGFja2FnZSBpcyBjYWxsZWQgInB5dGhvbi1tMmNyeXB0byIuXG4nKQorICAgICAgICBzeXMuZXhpdCgxKQorIAorIGRlZiBwcmludF9zc2xfNjQob3V0cHV0LCBuYW1lLCB2YWwpOgorLSAgICB3aGlsZSB2YWxbMF0gPT0gJ1wwJzoKKysgICAgd2hpbGUgdmFsWzA6MV0gPT0gYidcMCc6CisgICAgICAgICB2YWwgPSB2YWxbMTpdCisgICAgIHdoaWxlIGxlbih2YWwpICUgODoKKy0gICAgICAgIHZhbCA9ICdcMCcgKyB2YWwKKysgICAgICAgIHZhbCA9IGInXDAnICsgdmFsCisgICAgIHZuZXcgPSBbXQorICAgICB3aGlsZSBsZW4odmFsKToKKy0gICAgICAgIHZuZXcuYXBwZW5kKCh2YWxbMF0sIHZhbFsxXSwgdmFsWzJdLCB2YWxbM10sIHZhbFs0XSwgdmFsWzVdLCB2YWxbNl0sIHZhbFs3XSkpCisrICAgICAgICB2bmV3LmFwcGVuZCgodmFsWzA6MV0sIHZhbFsxOjJdLCB2YWxbMjozXSwgdmFsWzM6NF0sIHZhbFs0OjVdLCB2YWxbNTo2XSwgdmFsWzY6N10sIHZhbFs3OjhdKSkKKyAgICAgICAgIHZhbCA9IHZhbFs4Ol0KKyAgICAgdm5ldy5yZXZlcnNlKCkKKyAgICAgb3V0cHV0LndyaXRlKCdzdGF0aWMgQk5fVUxPTkcgJXNbJWRdID0ge1xuJyAlIChuYW1lLCBsZW4odm5ldykpKQorQEAgLTM0LDEzICszNCwxMyBAQCBkZWYgcHJpbnRfc3NsXzY0KG91dHB1dCwgbmFtZSwgdmFsKToKKyAgICAgb3V0cHV0LndyaXRlKCd9O1xuXG4nKQorIAorIGRlZiBwcmludF9zc2xfMzIob3V0cHV0LCBuYW1lLCB2YWwpOgorLSAgICB3aGlsZSB2YWxbMF0gPT0gJ1wwJzoKKysgICAgd2hpbGUgdmFsWzA6MV0gPT0gYidcMCc6CisgICAgICAgICB2YWwgPSB2YWxbMTpdCisgICAgIHdoaWxlIGxlbih2YWwpICUgNDoKKy0gICAgICAgIHZhbCA9ICdcMCcgKyB2YWwKKysgICAgICAgIHZhbCA9IGInXDAnICsgdmFsCisgICAgIHZuZXcgPSBbXQorICAgICB3aGlsZSBsZW4odmFsKToKKy0gICAgICAgIHZuZXcuYXBwZW5kKCh2YWxbMF0sIHZhbFsxXSwgdmFsWzJdLCB2YWxbM10sICkpCisrICAgICAgICB2bmV3LmFwcGVuZCgodmFsWzA6MV0sIHZhbFsxOjJdLCB2YWxbMjozXSwgdmFsWzM6NF0pKQorICAgICAgICAgdmFsID0gdmFsWzQ6XQorICAgICB2bmV3LnJldmVyc2UoKQorICAgICBvdXRwdXQud3JpdGUoJ3N0YXRpYyBCTl9VTE9ORyAlc1slZF0gPSB7XG4nICUgKG5hbWUsIGxlbih2bmV3KSkpCitAQCAtODEsMjEgKzgxLDIxIEBAIHN0cnVjdCBwdWJrZXkgeworIAorIHN0YXRpYyBzdHJ1Y3QgcHVia2V5IGtleXNbXSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKT0geworICcnJykKKy0gICAgZm9yIG4gaW4geHJhbmdlKG4gKyAxKToKKysgICAgZm9yIG4gaW4gcmFuZ2UobiArIDEpOgorICAgICAgICAgb3V0cHV0LndyaXRlKCcJS0VZUyhlXyVkLCBuXyVkKSxcbicgJSAobiwgbikpCisgICAgIG91dHB1dC53cml0ZSgnfTtcbicpCisgICAgIHBhc3MKKyAKKyBkZWYgcHJpbnRfZ2NyeXB0KG91dHB1dCwgbmFtZSwgdmFsKToKKyAgICAgb3V0cHV0LndyaXRlKCcjaW5jbHVkZSA8c3RkaW50Lmg+XG4nKQorLSAgICB3aGlsZSB2YWxbMF0gPT0gJ1wwJzoKKysgICAgd2hpbGUgdmFsWzA6MV0gPT0gYidcMCc6CisgICAgICAgICB2YWwgPSB2YWxbMTpdCisgICAgIG91dHB1dC53cml0ZSgnc3RhdGljIGNvbnN0IHVpbnQ4X3QgJXNbJWRdID0ge1xuJyAlIChuYW1lLCBsZW4odmFsKSkpCisgICAgIGlkeCA9IDAKKyAgICAgZm9yIHYgaW4gdmFsOgorICAgICAgICAgaWYgbm90IGlkeDoKKyAgICAgICAgICAgICBvdXRwdXQud3JpdGUoJ1x0JykKKy0gICAgICAgIG91dHB1dC53cml0ZSgnMHglLjJ4LCAnICUgb3JkKHYpKQorKyAgICAgICAgb3V0cHV0LndyaXRlKCcweCUuMngsICcgJSAodiBpZiBzeXMudmVyc2lvbl9pbmZvWzBdID49MyBlbHNlIG9yZCh2KSkpCisgICAgICAgICBpZHggKz0gMQorICAgICAgICAgaWYgaWR4ID09IDg6CisgICAgICAgICAgICAgaWR4ID0gMAorQEAgLTExOCw3ICsxMTgsNyBAQCBzdHJ1Y3Qga2V5X3BhcmFtcyB7CisgCisgc3RhdGljIGNvbnN0IHN0cnVjdCBrZXlfcGFyYW1zIGtleXNbXSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKT0geworICcnJykKKy0gICAgZm9yIG4gaW4geHJhbmdlKG4gKyAxKToKKysgICAgZm9yIG4gaW4gcmFuZ2UobiArIDEpOgorICAgICAgICAgb3V0cHV0LndyaXRlKCcJS0VZUyhlXyVkLCBuXyVkKSxcbicgJSAobiwgbikpCisgICAgIG91dHB1dC53cml0ZSgnfTtcbicpCisgICAgIAorQEAgLTEzNiw3ICsxMzYsNyBAQCBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgbW9kZSA9IE5vbmUKKyAKKyBpZiBub3QgbW9kZSBpbiBtb2RlczoKKy0gICAgcHJpbnQgJ1VzYWdlOiAlcyBbJXNdIGlucHV0LWZpbGUuLi4gb3V0cHV0LWZpbGUnICUgKHN5cy5hcmd2WzBdLCAnfCcuam9pbihtb2Rlcy5rZXlzKCkpKQorKyAgICBwcmludCgnVXNhZ2U6ICVzIFslc10gaW5wdXQtZmlsZS4uLiBvdXRwdXQtZmlsZScgJSAoc3lzLmFyZ3ZbMF0sICd8Jy5qb2luKG1vZGVzLmtleXMoKSkpKQorICAgICBzeXMuZXhpdCgyKQorIAorIG91dHB1dCA9IG9wZW4ob3V0ZmlsZSwgJ3cnKQorQEAgLTE1NCwzICsxNTQsNSBAQCBmb3IgZiBpbiBmaWxlczoKKyAgICAgaWR4ICs9IDEKKyAKKyBtb2Rlc1ttb2RlXVsxXShvdXRwdXQsIGlkeCAtIDEpCisrCisrb3V0cHV0LmNsb3NlKCkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jcmRhL2NyZGFfMy4xOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jcmRhL2NyZGFfMy4xOC5iYgppbmRleCA3YzkyNWIyLi5iMzgwZWFmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvY3JkYS9jcmRhXzMuMTguYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2NyZGEvY3JkYV8zLjE4LmJiCkBAIC00LDcgKzQsNyBAQAogTElDRU5TRSA9ICJjb3B5bGVmdC1uZXh0LTAuMy4wIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY29weWxlZnQtbmV4dC0wLjMuMDttZDU9ODc0M2EyYzM1OTAzN2Q0ZDMyOWEzMWU3OWVhYmVmZmUiCiAKLURFUEVORFMgPSAicHl0aG9uLW0yY3J5cHRvLW5hdGl2ZSBweXRob24tdHlwaW5nLW5hdGl2ZSBweXRob24tbmF0aXZlIGxpYm5sIGxpYmdjcnlwdCIKK0RFUEVORFMgPSAicHl0aG9uMy1tMmNyeXB0by1uYXRpdmUgbGlibmwgbGliZ2NyeXB0IgogCiBTUkNfVVJJID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvJHtCUE59LyR7QlB9LnRhci54eiBcCiAgICAgICAgICAgIGZpbGU6Ly9kby1ub3QtcnVuLWxkY29uZmlnLWlmLWRlc3RkaXItaXMtc2V0LnBhdGNoIFwKQEAgLTE0LDExICsxNCwxMiBAQAogICAgICAgICAgICBmaWxlOi8vbWFrZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly91c2UtdGFyZ2V0LXdvcmQtc2l6ZS1pbnN0ZWFkLW9mLWhvc3Qtcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtaXNzdWVzLXdoZW4tVVNFX09QRU5TU0wtMS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jcmRhLTQuMTQtcHl0aG9uLTMucGF0Y2ggXAogIgogU1JDX1VSSVttZDVzdW1dID0gIjA0MzFmZWYzMDY3YmY1MDNkZmI0NjQwNjlmMDYxNjNhIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQzZmNiOTY3OWY4Yjc1ZWQ4N2FkMTA5NDRhNTA2MjkyZGVmMTNlNGFmYjE5NGFmYTdhYTkyMWIwMWU4ZWNkYmYiCiAKLWluaGVyaXQgcHl0aG9uLWRpciBweXRob25uYXRpdmUgc2l0ZWluZm8KK2luaGVyaXQgcHl0aG9uMy1kaXIgcHl0aG9uM25hdGl2ZSBzaXRlaW5mbwogCiAjIFJlY3Vyc2l2ZSBtYWtlIHByb2JsZW0KIEVYVFJBX09FTUFLRSA9ICJNQUtFRkxBR1M9IERFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9L2NyZGEgTERMSUJSRUc9Jy1XbCwtcnBhdGgsJHtsaWJkaXJ9L2NyZGEgLWxyZWcnIFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwY2QvZGhjcGNkXzguMS41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3BjZC9kaGNwY2RfOC4xLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzNDljYTEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3BjZC9kaGNwY2RfOC4xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLVNVTU1BUlkgPSAiZGhjcGNkIC0gYSBESENQIGNsaWVudCIKLURFU0NSSVBUSU9OID0gImRoY3BjZCBydW5zIG9uIHlvdXIgbWFjaGluZSBhbmQgc2lsZW50bHkgY29uZmlndXJlcyB5b3VyIGNvbXB1dGVyIHRvIHdvcmsgb24gdGhlIGF0dGFjaGVkIG5ldHdvcmtzIHdpdGhvdXQgdHJvdWJsZSBhbmQgbW9zdGx5IHdpdGhvdXQgY29uZmlndXJhdGlvbi4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9yb3kubWFycGxlcy5uYW1lL3Byb2plY3RzL2RoY3BjZC8iCi0KLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MDUzMTQ1Nzk5MmE5N2VjZWJjNjk3NTkxNGE4NzRhOWQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3JveS5tYXJwbGVzLm5hbWUvZG93bmxvYWRzL2RoY3BjZC8iCi0KLVNSQ19VUkkgPSAiaHR0cDovL3JveS5tYXJwbGVzLm5hbWUvZG93bmxvYWRzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcmVtb3ZlLUlOQ0xVREVESVItdG8tcHJldmVudC1idWlsZC1pc3N1ZXMucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1N2ZkNWRkNGZmOTcyMjc3M2VjNjcyMzlkYjM0ZDNiNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNWNiZTE1MDY5Y2VmMzQ3ZTcyZDBiZjdhMTliMDI1NTU3MWVlMGMxODRjNjcwNTg1OWEwOTU4OGE1MGE4ZWJkIgotCi1pbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLVBBQ0tBR0VDT05GSUcgPz0gInVkZXYgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLXdpdGgtdWRldiwtLXdpdGhvdXQtdWRldix1ZGV2LHVkZXYiCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYiCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1pcHY0IgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9kaGNwY2QvZGV2Ly5kZWJ1ZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwY2QvZGhjcGNkXzguMS42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3BjZC9kaGNwY2RfOC4xLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNiMmFmNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwY2QvZGhjcGNkXzguMS42LmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorU1VNTUFSWSA9ICJkaGNwY2QgLSBhIERIQ1AgY2xpZW50IgorREVTQ1JJUFRJT04gPSAiZGhjcGNkIHJ1bnMgb24geW91ciBtYWNoaW5lIGFuZCBzaWxlbnRseSBjb25maWd1cmVzIHlvdXIgY29tcHV0ZXIgdG8gd29yayBvbiB0aGUgYXR0YWNoZWQgbmV0d29ya3Mgd2l0aG91dCB0cm91YmxlIGFuZCBtb3N0bHkgd2l0aG91dCBjb25maWd1cmF0aW9uLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3JveS5tYXJwbGVzLm5hbWUvcHJvamVjdHMvZGhjcGNkLyIKKworTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wNTMxNDU3OTkyYTk3ZWNlYmM2OTc1OTE0YTg3NGE5ZCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vcm95Lm1hcnBsZXMubmFtZS9kb3dubG9hZHMvZGhjcGNkLyIKKworU1JDX1VSSSA9ICJodHRwOi8vcm95Lm1hcnBsZXMubmFtZS9kb3dubG9hZHMvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yZW1vdmUtSU5DTFVERURJUi10by1wcmV2ZW50LWJ1aWxkLWlzc3Vlcy5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gImUxZWVhMDMzODhkMTJjOWFkMjFlY2Q3YzEzNWZkZjhiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjMjkzNGEzZTFlNjdhNWNmZDViYjE1YjFlZmE3MWY2NWMwMDMxNGFjMWNjYjVjNTBkYThlYWUzYTBiODE0N2YiCisKK2luaGVyaXQgcGtnY29uZmlnIGF1dG90b29scy1icm9rZW5zZXAKKworUEFDS0FHRUNPTkZJRyA/PSAidWRldiAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgorCitQQUNLQUdFQ09ORklHW3VkZXZdID0gIi0td2l0aC11ZGV2LC0td2l0aG91dC11ZGV2LHVkZXYsdWRldiIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWlwdjQiCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2RoY3BjZC9kZXYvLmRlYnVnIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZpcmV3YWxsZC9maXJld2FsbGRfMC43LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZmlyZXdhbGxkL2ZpcmV3YWxsZF8wLjcuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdjN2JkNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZmlyZXdhbGxkL2ZpcmV3YWxsZF8wLjcuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLVNVTU1BUlkgPSAiRHluYW1pYyBmaXJld2FsbCBkYWVtb24gd2l0aCBhIEQtQnVzIGludGVyZmFjZSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZmlyZXdhbGxkLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9maXJld2FsbGQvZmlyZXdhbGxkL2lzc3VlcyIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vZmlyZXdhbGxkL2ZpcmV3YWxsZC9yZWxlYXNlcyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9maXJld2FsbGQuaW5pdCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiMjU0OWMyMDA2ZGVmMDdhMTliNGM3N2VjOTYwZTVhYWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmJkMWI3MmIzYzRiNGQwYzIwNjU5ZjY2NGIyYmEzNjE3NTM2NGZmYmI5Y2ViZjNiZGZhZjliNWU2OTgzYmU3NyIKLQotIyBnbGliLTIuMC1uYXRpdmUgaXMgbmVlZGVkIGZvciBHU0VUVElOR1NfUlVMRVMgYXV0b2NvbmYgbWFjcm8gZnJvbSBnc2V0dGluZ3MubTQKLURFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGdsaWItMi4wLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCi0KLWluaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMgYmFzaC1jb21wbGV0aW9uIHB5dGhvbjNuYXRpdmUgZ3NldHRpbmdzIHN5c3RlbWQgdXBkYXRlLXJjLmQKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kLXVuaXRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLWRpc2FibGUtc3lzdGVtZCIKLQotUEFDS0FHRVMgKz0gIiR7UE59LXpzaC1jb21wbGV0aW9uIgotCi0jIGlwdGFibGVzLCBpcDZ0YWJsZXMsIGVidGFibGVzLCBhbmQgaXBzZXQgKnNob3VsZCogYmUgdW5uZWNlc3NhcnkKLSMgd2hlbiB0aGUgbmZ0YWJsZXMgYmFja2VuZCBpcyBhdmFpbGFibGUsIGJlY2F1c2UgbmZ0YWJsZXMgc3VwZXJzZWRlcyBhbGwgb2YgdGhlbS4KLSMgSG93ZXZlciB3ZSBzdGlsbCBuZWVkIGlwdGFibGVzIGFuZCBpcDZ0YWJsZXMgdG8gYmUgYXZhaWxhYmxlIG90aGVyd2lzZSBhbnkKLSMgYXBwbGljYXRpb24gcmVseWluZyBvbiAiZGlyZWN0IHBhc3N0aHJvdWdoIiBydWxlcyAoc3VjaCBhcyBkb2NrZXIpIHdpbGwgYnJlYWsuCi0jIC9ldGMvc3lzY29uZmlnL2ZpcmV3YWxsZCBpcyBhIFJlZCBIYXQtaXNtLCBvbmx5IHJlZmVyZW5jZWQgYnkKLSMgdGhlIFJlZCBIYXQtc3BlY2lmaWMgaW5pdCBzY3JpcHQgd2hpY2ggd2UgYXJlbid0IHVzaW5nLCBzbyB3ZSBkaXNhYmxlIHRoYXQuCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgIC0td2l0aC1uZnQ9JHtzYmluZGlyfS9uZnQgXAotICAgIC0td2l0aG91dC1pcHNldCBcCi0gICAgLS13aXRoLWlwdGFibGVzPSR7c2JpbmRpcn0vaXB0YWJsZXMgXAotICAgIC0td2l0aC1pcHRhYmxlcy1yZXN0b3JlPSR7c2JpbmRpcn0vaXB0YWJsZXMtcmVzdG9yZSBcCi0gICAgLS13aXRoLWlwNnRhYmxlcz0ke3NiaW5kaXJ9L2lwNnRhYmxlcyBcCi0gICAgLS13aXRoLWlwNnRhYmxlcy1yZXN0b3JlPSR7c2JpbmRpcn0vaXA2dGFibGVzLXJlc3RvcmUgXAotICAgIC0td2l0aG91dC1lYnRhYmxlcyBcCi0gICAgLS13aXRob3V0LWVidGFibGVzLXJlc3RvcmUgXAotICAgIC0tZGlzYWJsZS1zeXNjb25maWcgXAotICAgIC0td2l0aC14bWwtY2F0YWxvZz0ke1NUQUdJTkdfRVRDRElSX05BVElWRX0veG1sL2NhdGFsb2cgXAotIgotCi1JTklUU0NSSVBUX05BTUUgPSAiZmlyZXdhbGxkIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImZpcmV3YWxsZC5zZXJ2aWNlIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICA6Ci0gICAgZWxzZQotICAgICAgICAjIGZpcmV3YWxsZCBzaGlwcyBhbiBpbml0IHNjcmlwdCBidXQgaXQgY29udGFpbnMgUmVkIEhhdC1pc21zLCByZXBsYWNlIGl0IHdpdGggb3VyIG93bgotICAgICAgICBybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0vcmMuZC8KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICAgICAgaW5zdGFsbCAtbTA3NTUgJHtXT1JLRElSfS9maXJld2FsbGQuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZmlyZXdhbGxkCi0gICAgZmkKLQotICAgICMgV2UgcmFuIC4vY29uZmlndXJlIHdpdGggUFlUSE9OIHBvaW50ZWQgYXQgdGhlIGJpbmFyeSBpbnNpZGUgJFNUQUdJTkdfQklORElSX05BVElWRQotICAgICMgc28gbm93IHdlIG5lZWQgdG8gZml4IHVwIGFueSByZWZlcmVuY2VzIHRvIHBvaW50IGF0IHRoZSBwcm9wZXIgcGF0aCBpbiB0aGUgaW1hZ2UuCi0gICAgIyBUaGlzIGhhY2sgaXMgYWxzbyBpbiBkaXN0dXRpbHMuYmJjbGFzcywgYnV0IGZpcmV3YWxsZCBkb2Vzbid0IHVzZSBkaXN0dXRpbHMvc2V0dXB0b29scy4KLSAgICBpZiBbICR7UE59ICE9ICIke0JQTn0tbmF0aXZlIiBdOyB0aGVuCi0gICAgICAgIHNlZCAtaSAtZSBzOiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zOiR7YmluZGlyfS9weXRob24zOmcgXAotICAgICAgICAgICAgJHtEfSR7YmluZGlyfS8qICR7RH0ke3NiaW5kaXJ9LyogJHtEfSR7c3lzY29uZmRpcn0vZmlyZXdhbGxkLyoueG1sCi0gICAgZmkKLSAgICBzZWQgLWkgLWUgczoke1NUQUdJTkdfQklORElSX05BVElWRX06JHtiaW5kaXJ9OmcgXAotICAgICAgICAke0R9JHtiaW5kaXJ9LyogJHtEfSR7c2JpbmRpcn0vKiAke0R9JHtzeXNjb25mZGlyfS9maXJld2FsbGQvKi54bWwKLX0KLQotRklMRVNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9maXJld2FsbCBcCi0gICAgJHtub25hcmNoX2xpYmRpcn0vZmlyZXdhbGxkIFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMSBcCi0gICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCi0gICAgJHtkYXRhZGlyfS9tZXRhaW5mbyBcCi0iCi1GSUxFU18ke1BOfS16c2gtY29tcGxldGlvbiA9ICIke2RhdGFkaXJ9L3pzaC9zaXRlLWZ1bmN0aW9ucyIKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgIG5mdGFibGVzIFwKLSAgICBpcHRhYmxlcyBcCi0gICAgcHl0aG9uMy1jb3JlIFwKLSAgICBweXRob24zLWlvIFwKLSAgICBweXRob24zLWZjbnRsIFwKLSAgICBweXRob24zLXNoZWxsIFwKLSAgICBweXRob24zLXN5c2xvZyBcCi0gICAgcHl0aG9uMy14bWwgXAotICAgIHB5dGhvbjMtZGJ1cyBcCi0gICAgcHl0aG9uMy1zbGlwLWRidXMgXAotICAgIHB5dGhvbjMtZGVjb3JhdG9yIFwKLSAgICBweXRob24zLXB5Z29iamVjdCBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZmlyZXdhbGxkL2ZpcmV3YWxsZF8wLjcuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9maXJld2FsbGQvZmlyZXdhbGxkXzAuNy4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkZWE4NDgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZmlyZXdhbGxkL2ZpcmV3YWxsZF8wLjcuMy5iYgpAQCAtMCwwICsxLDg5IEBACitTVU1NQVJZID0gIkR5bmFtaWMgZmlyZXdhbGwgZGFlbW9uIHdpdGggYSBELUJ1cyBpbnRlcmZhY2UiCitIT01FUEFHRSA9ICJodHRwczovL2ZpcmV3YWxsZC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vZmlyZXdhbGxkL2ZpcmV3YWxsZC9pc3N1ZXMiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ZpcmV3YWxsZC9maXJld2FsbGQvcmVsZWFzZXMiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZmlyZXdhbGxkLmluaXQgXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjA1ZWM3NzJjYmRjMGEyYjNkZjA4MWU0YmVjYTU1OTlkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQxNGM0NjIwMmMxMjMzNGNkNWM5ODYyMTRlNWUyNTc1ZDE4ZTc0M2M1NTMxYTk3YWNlMWMwY2Q5NDM0MWM2MGQiCisKKyMgZ2xpYi0yLjAtbmF0aXZlIGlzIG5lZWRlZCBmb3IgR1NFVFRJTkdTX1JVTEVTIGF1dG9jb25mIG1hY3JvIGZyb20gZ3NldHRpbmdzLm00CitERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBnbGliLTIuMC1uYXRpdmUgbGlieHNsdC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgorCitpbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzIGJhc2gtY29tcGxldGlvbiBweXRob24zbmF0aXZlIGdzZXR0aW5ncyBzeXN0ZW1kIHVwZGF0ZS1yYy5kCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtc3lzdGVtZC11bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sLS1kaXNhYmxlLXN5c3RlbWQiCisKK1BBQ0tBR0VTICs9ICIke1BOfS16c2gtY29tcGxldGlvbiIKKworIyBpcHRhYmxlcywgaXA2dGFibGVzLCBlYnRhYmxlcywgYW5kIGlwc2V0ICpzaG91bGQqIGJlIHVubmVjZXNzYXJ5CisjIHdoZW4gdGhlIG5mdGFibGVzIGJhY2tlbmQgaXMgYXZhaWxhYmxlLCBiZWNhdXNlIG5mdGFibGVzIHN1cGVyc2VkZXMgYWxsIG9mIHRoZW0uCisjIEhvd2V2ZXIgd2Ugc3RpbGwgbmVlZCBpcHRhYmxlcyBhbmQgaXA2dGFibGVzIHRvIGJlIGF2YWlsYWJsZSBvdGhlcndpc2UgYW55CisjIGFwcGxpY2F0aW9uIHJlbHlpbmcgb24gImRpcmVjdCBwYXNzdGhyb3VnaCIgcnVsZXMgKHN1Y2ggYXMgZG9ja2VyKSB3aWxsIGJyZWFrLgorIyAvZXRjL3N5c2NvbmZpZy9maXJld2FsbGQgaXMgYSBSZWQgSGF0LWlzbSwgb25seSByZWZlcmVuY2VkIGJ5CisjIHRoZSBSZWQgSGF0LXNwZWNpZmljIGluaXQgc2NyaXB0IHdoaWNoIHdlIGFyZW4ndCB1c2luZywgc28gd2UgZGlzYWJsZSB0aGF0LgorRVhUUkFfT0VDT05GID0gIlwKKyAgICAtLXdpdGgtbmZ0PSR7c2JpbmRpcn0vbmZ0IFwKKyAgICAtLXdpdGhvdXQtaXBzZXQgXAorICAgIC0td2l0aC1pcHRhYmxlcz0ke3NiaW5kaXJ9L2lwdGFibGVzIFwKKyAgICAtLXdpdGgtaXB0YWJsZXMtcmVzdG9yZT0ke3NiaW5kaXJ9L2lwdGFibGVzLXJlc3RvcmUgXAorICAgIC0td2l0aC1pcDZ0YWJsZXM9JHtzYmluZGlyfS9pcDZ0YWJsZXMgXAorICAgIC0td2l0aC1pcDZ0YWJsZXMtcmVzdG9yZT0ke3NiaW5kaXJ9L2lwNnRhYmxlcy1yZXN0b3JlIFwKKyAgICAtLXdpdGhvdXQtZWJ0YWJsZXMgXAorICAgIC0td2l0aG91dC1lYnRhYmxlcy1yZXN0b3JlIFwKKyAgICAtLWRpc2FibGUtc3lzY29uZmlnIFwKKyAgICAtLXdpdGgteG1sLWNhdGFsb2c9JHtTVEFHSU5HX0VUQ0RJUl9OQVRJVkV9L3htbC9jYXRhbG9nIFwKKyIKKworSU5JVFNDUklQVF9OQU1FID0gImZpcmV3YWxsZCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJmaXJld2FsbGQuc2VydmljZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgOgorICAgIGVsc2UKKyAgICAgICAgIyBmaXJld2FsbGQgc2hpcHMgYW4gaW5pdCBzY3JpcHQgYnV0IGl0IGNvbnRhaW5zIFJlZCBIYXQtaXNtcywgcmVwbGFjZSBpdCB3aXRoIG91ciBvd24KKyAgICAgICAgcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L3JjLmQvCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgICAgIGluc3RhbGwgLW0wNzU1ICR7V09SS0RJUn0vZmlyZXdhbGxkLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2ZpcmV3YWxsZAorICAgIGZpCisKKyAgICAjIFdlIHJhbiAuL2NvbmZpZ3VyZSB3aXRoIFBZVEhPTiBwb2ludGVkIGF0IHRoZSBiaW5hcnkgaW5zaWRlICRTVEFHSU5HX0JJTkRJUl9OQVRJVkUKKyAgICAjIHNvIG5vdyB3ZSBuZWVkIHRvIGZpeCB1cCBhbnkgcmVmZXJlbmNlcyB0byBwb2ludCBhdCB0aGUgcHJvcGVyIHBhdGggaW4gdGhlIGltYWdlLgorICAgICMgVGhpcyBoYWNrIGlzIGFsc28gaW4gZGlzdHV0aWxzLmJiY2xhc3MsIGJ1dCBmaXJld2FsbGQgZG9lc24ndCB1c2UgZGlzdHV0aWxzL3NldHVwdG9vbHMuCisgICAgaWYgWyAke1BOfSAhPSAiJHtCUE59LW5hdGl2ZSIgXTsgdGhlbgorICAgICAgICBzZWQgLWkgLWUgczoke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMzoke2JpbmRpcn0vcHl0aG9uMzpnIFwKKyAgICAgICAgICAgICR7RH0ke2JpbmRpcn0vKiAke0R9JHtzYmluZGlyfS8qICR7RH0ke3N5c2NvbmZkaXJ9L2ZpcmV3YWxsZC8qLnhtbAorICAgIGZpCisgICAgc2VkIC1pIC1lIHM6JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9OiR7YmluZGlyfTpnIFwKKyAgICAgICAgJHtEfSR7YmluZGlyfS8qICR7RH0ke3NiaW5kaXJ9LyogJHtEfSR7c3lzY29uZmRpcn0vZmlyZXdhbGxkLyoueG1sCit9CisKK0ZJTEVTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vZmlyZXdhbGwgXAorICAgICR7bm9uYXJjaF9saWJkaXJ9L2ZpcmV3YWxsZCBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAorICAgICR7ZGF0YWRpcn0vbWV0YWluZm8gXAorIgorRklMRVNfJHtQTn0tenNoLWNvbXBsZXRpb24gPSAiJHtkYXRhZGlyfS96c2gvc2l0ZS1mdW5jdGlvbnMiCisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgICBuZnRhYmxlcyBcCisgICAgaXB0YWJsZXMgXAorICAgIHB5dGhvbjMtY29yZSBcCisgICAgcHl0aG9uMy1pbyBcCisgICAgcHl0aG9uMy1mY250bCBcCisgICAgcHl0aG9uMy1zaGVsbCBcCisgICAgcHl0aG9uMy1zeXNsb2cgXAorICAgIHB5dGhvbjMteG1sIFwKKyAgICBweXRob24zLWRidXMgXAorICAgIHB5dGhvbjMtc2xpcC1kYnVzIFwKKyAgICBweXRob24zLWRlY29yYXRvciBcCisgICAgcHl0aG9uMy1weWdvYmplY3QgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvMDAwMS1ybG1fcHl0aG9uMy1hZGQtUFlfSU5DX0RJUi1pbi1zZWFyY2gtZGlyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvMDAwMS1ybG1fcHl0aG9uMy1hZGQtUFlfSU5DX0RJUi1pbi1zZWFyY2gtZGlyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MzAyMzEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy8wMDAxLXJsbV9weXRob24zLWFkZC1QWV9JTkNfRElSLWluLXNlYXJjaC1kaXIucGF0Y2gKQEAgLTAsMCArMSw1OCBAQAorRnJvbSA3MzMzMzA4ODhmZmY0OWU0ZDJiNmMyMTIxYTYwNTBmZGQ5ZjExYTg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCA2IEZlYiAyMDIwIDA5OjMyOjA0ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHJsbV9weXRob24zOiBhZGQgUFlfSU5DX0RJUiBpbiBzZWFyY2ggZGlyCisKK1RoZSBjb25maWd1cmUgb3B0aW9uIC0td2l0aC1ybG0tcHl0aG9uMy1pbmNsdWRlLWRpciBpcyB1c2VkIHRvIHNldAorUFlfSU5DX0RJUiB3aGljaCBpcyBuZXZlciB1c2VkIGFuZCBpdCBmYWlscyB0byBmaW5kIFB5dGhvbi5oLAorc28gYWRkIGl0IGludG8gc2VhcmNoIGRpciB0byBmaXggaXQuCisKK0Fsc28gcmVtb3ZlIFNNQVJUX0xJQlMgZnJvbSBtb2RfZmxhZ3MgYmVjYXVzZSBpdCBpbnRyb2R1Y2VzIHJwYXRoCit0byBMREZBTEdTIHdoaWNoIGNhdXNlcyBhIGRvX3BhY2thZ2VfcWEgZXJyb3I6CisKK0VSUk9SOiBmcmVlcmFkaXVzLTMuMC4yMC1yMCBkb19wYWNrYWdlX3FhOiBRQSBJc3N1ZTogcGFja2FnZSBmcmVlcmFkaXVzLXB5dGhvbiBjb250YWlucyBiYWQgUlBBVEgKKy9idWlsZGFyZWEvYnVpbGQvdG1wL3dvcmsvY29yZTItNjQtcG9reS1saW51eC9mcmVlcmFkaXVzLzMuMC4yMC1yMC9yZWNpcGUtc3lzcm9vdC1uYXRpdmUvdXNyL2xpYi9weXRob24zLjgvY29uZmlnIGluIGZpbGUKKy9idWlsZGFyZWEvYnVpbGQvdG1wL3dvcmsvY29yZTItNjQtcG9reS1saW51eC9mcmVlcmFkaXVzLzMuMC4yMC1yMC9wYWNrYWdlcy1zcGxpdC9mcmVlcmFkaXVzLXB5dGhvbi91c3IvbGliL3JsbV9weXRob24zLnNvLjAuMC4wCitwYWNrYWdlIGZyZWVyYWRpdXMtcHl0aG9uIGNvbnRhaW5zIGJhZCBSUEFUSAorL2J1aWxkYXJlYS9idWlsZC90bXAvd29yay9jb3JlMi02NC1wb2t5LWxpbnV4L2ZyZWVyYWRpdXMvMy4wLjIwLXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZS91c3IvbGliL3B5dGhvbjMuOC9jb25maWcgaW4gZmlsZQorL2J1aWxkYXJlYS9idWlsZC90bXAvd29yay9jb3JlMi02NC1wb2t5LWxpbnV4L2ZyZWVyYWRpdXMvMy4wLjIwLXIwL3BhY2thZ2VzLXNwbGl0L2ZyZWVyYWRpdXMtcHl0aG9uL3Vzci9saWIvcmxtX3B5dGhvbjMuc28uMC4wLjAgW3JwYXRoc10KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL21vZHVsZXMvcmxtX3B5dGhvbjMvY29uZmlndXJlLmFjIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvcmxtX3B5dGhvbjMvY29uZmlndXJlLmFjIGIvc3JjL21vZHVsZXMvcmxtX3B5dGhvbjMvY29uZmlndXJlLmFjCitpbmRleCBhMDAzMjBmLi5hZGJkZjE5IDEwMDY0NAorLS0tIGEvc3JjL21vZHVsZXMvcmxtX3B5dGhvbjMvY29uZmlndXJlLmFjCisrKysgYi9zcmMvbW9kdWxlcy9ybG1fcHl0aG9uMy9jb25maWd1cmUuYWMKK0BAIC05NSw3ICs5NSw3IEBAIGlmIHRlc3QgeCR3aXRoX1tdbW9kbmFtZSAhPSB4bm87IHRoZW4KKyAKKyAJCW9sZF9DRkxBR1M9JENGTEFHUworIAkJQ0ZMQUdTPSIkQ0ZMQUdTICRQWV9DRkxBR1MiCistCQlzbWFydF90cnlfZGlyPSIkUFlfUFJFRklYL2luY2x1ZGUvcHl0aG9uJFBZX1NZU19WRVJTSU9OIgorKwkJc21hcnRfdHJ5X2Rpcj0iJFBZX1BSRUZJWC9pbmNsdWRlL3B5dGhvbiRQWV9TWVNfVkVSU0lPTiAkUFlfSU5DX0RJUiIKKyAJCUZSX1NNQVJUX0NIRUNLX0lOQ0xVREUoUHl0aG9uLmgpCisgCQlDRkxBR1M9JG9sZF9DRkxBR1MKKyAKK0BAIC0xMTQsMTMgKzExNCwxMyBAQCBpZiB0ZXN0IHgkd2l0aF9bXW1vZG5hbWUgIT0geG5vOyB0aGVuCisgCisgCQlldmFsIHQ9XCR7YWNfY3ZfbGliXyR7c21fbGliX3NhZmV9XyR7c21fZnVuY19zYWZlfX0KKyAJCWlmIHRlc3QgIngkdCIgPSAieHllcyI7IHRoZW4KKy0JCQltb2RfbGRmbGFncz0iJFBZX0xJQl9MT0MgJFBZX0VYVFJBX0xJQlMgJFNNQVJUX0xJQlMgLWxtIgorKwkJCW1vZF9sZGZsYWdzPSIkUFlfTElCX0xPQyAkUFlfRVhUUkFfTElCUyAtbG0iCisgCQkJdGFyZ2V0bmFtZT1tb2RuYW1lCisgCQllbHNlCisgCQkJRlJfU01BUlRfQ0hFQ0tfTElCKHB5dGhvbiR7UFlfU1lTX1ZFUlNJT059bSwgUHlfSW5pdGlhbGl6ZSkKKyAJCQlldmFsIHQ9XCR7YWNfY3ZfbGliXyR7c21fbGliX3NhZmV9XyR7c21fZnVuY19zYWZlfX0KKyAJCQlpZiB0ZXN0ICJ4JHQiID0gInh5ZXMiOyB0aGVuCistCQkJCW1vZF9sZGZsYWdzPSIkUFlfTElCX0xPQyAkUFlfRVhUUkFfTElCUyAkU01BUlRfTElCUyAtbG0iCisrCQkJCW1vZF9sZGZsYWdzPSIkUFlfTElCX0xPQyAkUFlfRVhUUkFfTElCUyAtbG0iCisgCQkJCXRhcmdldG5hbWU9bW9kbmFtZQorIAkJCWVsc2UKKyAJCQkJdGFyZ2V0bmFtZT0KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvMDAwMS1zdS10by1yYWRpdXNkLXVzZXItZ3JvdXAtd2hlbi1yb3RhdGluZy1sb2dzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvMDAwMS1zdS10by1yYWRpdXNkLXVzZXItZ3JvdXAtd2hlbi1yb3RhdGluZy1sb2dzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODU5ZGM3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzLzAwMDEtc3UtdG8tcmFkaXVzZC11c2VyLWdyb3VwLXdoZW4tcm90YXRpbmctbG9ncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi1Gcm9tIDFmMjMzNzczOTYyYmYxYTljMmQyMjhhMTgwZWFjZGRiOWRiMmQ1NzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgU2NoZWVsIDxhc2NoZWVsQHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDcgTWF5IDIwMTkgMTY6MDQ6MjkgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gc3UgdG8gcmFkaXVzZCB1c2VyL2dyb3VwIHdoZW4gcm90YXRpbmcgbG9ncwotCi1UaGUgc3UgZGlyZWN0aXZlIHRvIGxvZ3JvdGF0ZSBlbnN1cmVzIHRoYXQgbG9nIHJvdGF0aW9uIGhhcHBlbnMgdW5kZXIgdGhlCi1vd25lciBvZiB0aGUgbG9ncy4gT3RoZXJ3aXNlLCBsb2dyb3RhdGUgcnVucyBhcyByb290OnJvb3QsIHBvdGVudGlhbGx5Ci1lbmFibGluZyBwcml2aWxlZ2UgZXNjYWxhdGlvbiBpZiBhIFJDRSBpcyBkaXNjb3ZlcmVkIGFnYWluc3QgdGhlCi1GcmVlUkFESVVTIGRhZW1vbi4KLQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIFNjaGVlbCA8YXNjaGVlbEByZWRoYXQuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXRodWIuY29tL0ZyZWVSQURJVVMvZnJlZXJhZGl1cy1zZXJ2ZXIvY29tbWl0LzFmMjMzNzczOTYyYmYxYTljMmQyMjhhMTgwZWFjZGRiOWRiMmQ1NzRdCi0KLUNWRTogQ1ZFLTIwMTktMTAxNDMKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gZGViaWFuL2ZyZWVyYWRpdXMubG9ncm90YXRlICB8IDMgKysrCi0gcmVkaGF0L2ZyZWVyYWRpdXMtbG9ncm90YXRlICB8IDEgKwotIHNjcmlwdHMvbG9ncm90YXRlL2ZyZWVyYWRpdXMgfCAzICsrKwotIHN1c2UvcmFkaXVzZC1sb2dyb3RhdGUgICAgICAgfCAxICsKLSA0IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZGViaWFuL2ZyZWVyYWRpdXMubG9ncm90YXRlIGIvZGViaWFuL2ZyZWVyYWRpdXMubG9ncm90YXRlCi1pbmRleCA3ZDgzN2Q1Li5hOGQyOWI3IDEwMDY0NAotLS0tIGEvZGViaWFuL2ZyZWVyYWRpdXMubG9ncm90YXRlCi0rKysgYi9kZWJpYW4vZnJlZXJhZGl1cy5sb2dyb3RhdGUKLUBAIC05LDYgKzksNyBAQAotIAlub3RpZmVtcHR5Ci0gCi0gCWNvcHl0cnVuY2F0ZQotKwlzdSBmcmVlcmFkIGZyZWVyYWQKLSB9Ci0gCi0gIyAoaW4gb3JkZXIpCi1AQCAtMjYsNiArMjcsNyBAQAotIAlub3RpZmVtcHR5Ci0gCi0gCW5vY3JlYXRlCi0rCXN1IGZyZWVyYWQgZnJlZXJhZAotIH0KLSAKLSAjIFRoZXJlIGFyZSBkaWZmZXJlbnQgZGV0YWlsLXJvdGF0aW5nIHN0cmF0ZWdpZXMgeW91IGNhbiB1c2UuICBPbmUgaXMKLUBAIC00NSw0ICs0Nyw1IEBACi0gCW5vdGlmZW1wdHkKLSAKLSAJbm9jcmVhdGUKLSsJc3UgZnJlZXJhZCBmcmVlcmFkCi0gfQotZGlmZiAtLWdpdCBhL3JlZGhhdC9mcmVlcmFkaXVzLWxvZ3JvdGF0ZSBiL3JlZGhhdC9mcmVlcmFkaXVzLWxvZ3JvdGF0ZQotaW5kZXggMzYwNzY1ZC4uYmI5N2NhNSAxMDA2NDQKLS0tLSBhL3JlZGhhdC9mcmVlcmFkaXVzLWxvZ3JvdGF0ZQotKysrIGIvcmVkaGF0L2ZyZWVyYWRpdXMtbG9ncm90YXRlCi1AQCAtOSw2ICs5LDcgQEAgcm90YXRlIDQKLSBtaXNzaW5nb2sKLSBjb21wcmVzcwotIGRlbGF5Y29tcHJlc3MKLStzdSByYWRpdXNkIHJhZGl1c2QKLSAKLSAjCi0gIyAgVGhlIG1haW4gc2VydmVyIGxvZwotZGlmZiAtLWdpdCBhL3NjcmlwdHMvbG9ncm90YXRlL2ZyZWVyYWRpdXMgYi9zY3JpcHRzL2xvZ3JvdGF0ZS9mcmVlcmFkaXVzCi1pbmRleCAzZGU0MzVlLi5lZWNmNjMxIDEwMDY0NAotLS0tIGEvc2NyaXB0cy9sb2dyb3RhdGUvZnJlZXJhZGl1cwotKysrIGIvc2NyaXB0cy9sb2dyb3RhdGUvZnJlZXJhZGl1cwotQEAgLTE3LDYgKzE3LDcgQEAKLSAJbm90aWZlbXB0eQotIAotIAljb3B5dHJ1bmNhdGUKLSsJc3UgcmFkaXVzZCByYWRpdXNkCi0gfQotIAotICMgKGluIG9yZGVyKQotQEAgLTM0LDYgKzM1LDcgQEAKLSAJbm90aWZlbXB0eQotIAotIAlub2NyZWF0ZQotKwlzdSByYWRpdXNkIHJhZGl1c2QKLSB9Ci0gCi0gIyBUaGVyZSBhcmUgZGlmZmVyZW50IGRldGFpbC1yb3RhdGluZyBzdHJhdGVnaWVzIHlvdSBjYW4gdXNlLiAgT25lIGlzCi1AQCAtNTMsNCArNTUsNSBAQAotIAlub3RpZmVtcHR5Ci0gCi0gCW5vY3JlYXRlCi0rCXN1IHJhZGl1c2QgcmFkaXVzZAotIH0KLWRpZmYgLS1naXQgYS9zdXNlL3JhZGl1c2QtbG9ncm90YXRlIGIvc3VzZS9yYWRpdXNkLWxvZ3JvdGF0ZQotaW5kZXggMjRkNTZiZS4uYmU1YTc5NyAxMDA2NDQKLS0tLSBhL3N1c2UvcmFkaXVzZC1sb2dyb3RhdGUKLSsrKyBiL3N1c2UvcmFkaXVzZC1sb2dyb3RhdGUKLUBAIC0xMSw2ICsxMSw3IEBAIG1pc3NpbmdvawotIGNvbXByZXNzCi0gZGVsYXljb21wcmVzcwotIG5vdGlmZW1wdHkKLStzdSByYWRpdXNkIHJhZGl1c2QKLSAKLSAjCi0gIyAgVGhlIG1haW4gc2VydmVyIGxvZwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9mcmVlcmFkaXVzXzMuMC4xOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZyZWVyYWRpdXNfMy4wLjE5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWU2OTc4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZyZWVyYWRpdXNfMy4wLjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjM0ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkZyZWVSQURJVVMgaXMgYW4gSW50ZXJuZXQgYXV0aGVudGljYXRpb24gZGFlbW9uLCB3aGljaCBpbXBsZW1lbnRzIHRoZSBSQURJVVMgXAotcHJvdG9jb2wsIGFzIGRlZmluZWQgaW4gUkZDIDI4NjUgKGFuZCBvdGhlcnMpLiBJdCBhbGxvd3MgTmV0d29yayBBY2Nlc3MgXAotU2VydmVycyAoTkFTIGJveGVzKSB0byBwZXJmb3JtIGF1dGhlbnRpY2F0aW9uIGZvciBkaWFsLXVwIHVzZXJzLiBUaGVyZSBhcmUgXAotYWxzbyBSQURJVVMgY2xpZW50cyBhdmFpbGFibGUgZm9yIFdlYiBzZXJ2ZXJzLCBmaXJld2FsbHMsIFVuaXggbG9naW5zLCBhbmQgXAotbW9yZS4gIFVzaW5nIFJBRElVUyBhbGxvd3MgYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24gZm9yIGEgbmV0d29yayB0byBcCi1iZSBjZW50cmFsaXplZCwgYW5kIG1pbmltaXplcyB0aGUgYW1vdW50IG9mIHJlLWNvbmZpZ3VyYXRpb24gd2hpY2ggaGFzIHRvIGJlIFwKLWRvbmUgd2hlbiBhZGRpbmcgb3IgZGVsZXRpbmcgbmV3IHVzZXJzLiIKLQotU1VNTUFSWSA9ICJIaWdoLXBlcmZvcm1hbmNlIGFuZCBoaWdobHkgY29uZmlndXJhYmxlIFJBRElVUyBzZXJ2ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVyYWRpdXMub3JnLyIKLVNFQ1RJT04gPSAiU3lzdGVtL1NlcnZlcnMiCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIgotREVQRU5EUyA9ICJvcGVuc3NsLW5hdGl2ZSBvcGVuc3NsIGxpYmlkbiBsaWJ0b29sIGxpYnBjYXAgbGlidGFsbG9jIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vRnJlZVJBRElVUy9mcmVlcmFkaXVzLXNlcnZlci5naXQ7YnJhbmNoPXYzLjAueDsgXAotICAgIGZpbGU6Ly9mcmVlcmFkaXVzIFwKLSAgICBmaWxlOi8vdm9sYXRpbGVzLjU4X3JhZGl1c2QgXAotICAgIGZpbGU6Ly9mcmVlcmFkaXVzLWVuYmxlLXVzZXItaW4tY29uZi5wYXRjaCBcCi0gICAgZmlsZTovL2ZyZWVyYWRpdXMtY29uZmlndXJlLmFjLWFsbG93LWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoIFwKLSAgICBmaWxlOi8vZnJlZXJhZGl1cy1saWJ0b29sLWRldGVjdGlvbi5wYXRjaCBcCi0gICAgZmlsZTovL2ZyZWVyYWRpdXMtY29uZmlndXJlLmFjLWFkZC1vcHRpb24tZm9yLWxpYmNhcC5wYXRjaCBcCi0gICAgZmlsZTovL2ZyZWVyYWRpdXMtYXZvaWQtc2VhcmNoaW5nLWhvc3QtZGlycy5wYXRjaCBcCi0gICAgZmlsZTovL2ZyZWVyYWRpdXMtcmxtX3B5dGhvbi1hZGQtUFlfSU5DX0RJUi5wYXRjaCBcCi0gICAgZmlsZTovL2ZyZWVyYWRpdXMtbGlidG9vbC1kby1ub3QtdXNlLWpsaWJ0b29sLnBhdGNoIFwKLSAgICBmaWxlOi8vZnJlZXJhZGl1cy1maXgtcXVvdGluZy1mb3ItQlVJTFRfV0lUSC5wYXRjaCBcCi0gICAgZmlsZTovL2ZyZWVyYWRpdXMtZml4LWVycm9yLWZvci1leHBhbnNpb24tb2YtbWFjcm8ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXJsbV9tc2NoYXAtVXNlLWluY2x1ZGVkaXItaW5zdGVhZC1vZi1oYXJkY29kaW5nLXVzci0ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXN1LXRvLXJhZGl1c2QtdXNlci1ncm91cC13aGVuLXJvdGF0aW5nLWxvZ3MucGF0Y2ggXAotICAgIGZpbGU6Ly9yYWRpdXNkLnNlcnZpY2UgXAotICAgIGZpbGU6Ly9yYWRpdXNkLXZvbGF0aWxlcy5jb25mIFwKLSIKLQotU1JDUkVWID0gImFiNGM3NjcwOTlmMjYzYTdjZDQxMDliY2RjYTgwZWU3NDIxMGE3NjkiCi0KLVBBUkFMTEVMX01BS0UgPSAiIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1MREZMQUdTX2FwcGVuZF9wb3dlcnBjID0gIiAtbGF0b21pYyIKLUxERkxBR1NfYXBwZW5kX21pcHNhcmNoID0gIiAtbGF0b21pYyIKLUxERkxBR1NfYXBwZW5kX2FybXY1ID0gIiAtbGF0b21pYyIKLQotRVhUUkFfT0VDT05GID0gIiAtLWVuYWJsZS1zdHJpY3QtZGVwZW5kZW5jaWVzIFwKLSAgICAgICAgLS13aXRoLWRvY2Rpcj0ke2RvY2Rpcn0vZnJlZXJhZGl1cy0ke1BWfSBcCi0gICAgICAgIC0td2l0aC1vcGVuc3NsLWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgLS13aXRoLW9wZW5zc2wtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgLS13aXRob3V0LXJsbV9pcHBvb2wgXAotICAgICAgICAtLXdpdGhvdXQtcmxtX2NhY2hlX21lbWNhY2hlZCBcCi0gICAgICAgIC0td2l0aG91dC1ybG1fY291bnRlciBcCi0gICAgICAgIC0td2l0aG91dC1ybG1fY291Y2hiYXNlIFwKLSAgICAgICAgLS13aXRob3V0LXJsbV9kYm0gXAotICAgICAgICAtLXdpdGhvdXQtcmxtX2VhcF90bmMgXAotICAgICAgICAtLXdpdGhvdXQtcmxtX2VhcF9pa2V2MiBcCi0gICAgICAgIC0td2l0aG91dC1ybG1fb3BlbmRpcmVjdG9yeSBcCi0gICAgICAgIC0td2l0aG91dC1ybG1fcmVkaXMgXAotICAgICAgICAtLXdpdGhvdXQtcmxtX3JlZGlzd2hvIFwKLSAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfZGIyIFwKLSAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfZmlyZWJpcmQgXAotICAgICAgICAtLXdpdGhvdXQtcmxtX3NxbF9mcmVldGRzIFwKLSAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfaW9kYmMgXAotICAgICAgICAtLXdpdGhvdXQtcmxtX3NxbF9vcmFjbGUgXAotICAgICAgICAtLXdpdGhvdXQtcmxtX3NxbF9zeWJhc2UgXAotICAgICAgICAtLXdpdGhvdXQtcmxtX3NxbGhwd2lwcG9vbCBcCi0gICAgICAgIC0td2l0aG91dC1ybG1fc2VjdXJpZCBcCi0gICAgICAgIC0td2l0aG91dC1ybG1fdW5ib3VuZCBcCi0gICAgICAgIGFjX2N2X3BhdGhfUEVSTD0ke2JpbmRpcn0vcGVybCBcCi0gICAgICAgIGF4X2N2X2NjX2J1aWx0aW5fY2hvb3NlX2V4cHI9bm8gXAotICAgICAgICBheF9jdl9jY19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcD1ubyBcCi0gICAgICAgIGF4X2N2X2NjX2J1aWx0aW5fYnN3YXA2ND1ubyBcCi0gICAgICAgIGF4X2N2X2NjX2JvdW5kZWRfYXR0cmlidXRlPW5vIFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbScsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgIHBjcmUgbGliY2FwIFwKLSAgICAgICAgICAgICAgICAgICBvcGVuc3NsIHJsbS1lYXAtZmFzdCBybG0tZWFwLXB3ZCBcCi0iCi0KLVBBQ0tBR0VDT05GSUdba3JiNV0gPSAiLS13aXRoLXJsbV9rcmI1LC0td2l0aG91dC1ybG1fa3JiNSxrcmI1IgotUEFDS0FHRUNPTkZJR1twYW1dID0gIi0td2l0aC1ybG1fcGFtLC0td2l0aG91dC1ybG1fcGFtLGxpYnBhbSIKLVBBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtbGliY2FwLC0td2l0aG91dC1saWJjYXAsbGliY2FwIgotUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtcmxtX2xkYXAsLS13aXRob3V0LXJsbV9sZGFwLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS13aXRoLXJsbV9zcWxfbXlzcWwsLS13aXRob3V0LXJsbV9zcWxfbXlzcWwsbXlzcWw1IgotUEFDS0FHRUNPTkZJR1tzcWxpdGVdID0gIi0td2l0aC1ybG1fc3FsX3NxbGl0ZSwtLXdpdGhvdXQtcmxtX3NxbF9zcWxpdGUsc3FsaXRlMyIKLVBBQ0tBR0VDT05GSUdbdW5peG9kYmNdID0gIi0td2l0aC1ybG1fc3FsX3VuaXhvZGJjLC0td2l0aG91dC1ybG1fc3FsX3VuaXhvZGJjLHVuaXhvZGJjIgotUEFDS0FHRUNPTkZJR1twb3N0Z3Jlc3FsXSA9ICItLXdpdGgtcmxtX3NxbF9wb3N0Z3Jlc3FsLC0td2l0aG91dC1ybG1fc3FsX3Bvc3RncmVzcWwscG9zdGdyZXNxbCIKLVBBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS13aXRoLXBjcmUsLS13aXRob3V0LXBjcmUsbGlicGNyZSIKLVBBQ0tBR0VDT05GSUdbcGVybF0gPSAiLS13aXRoLXBlcmw9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL3BlcmwgLS13aXRoLXJsbV9wZXJsLC0td2l0aG91dC1ybG1fcGVybCxwZXJsLW5hdGl2ZSBwZXJsLHBlcmwiCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS13aXRoLXJsbV9weXRob24gLS13aXRoLXJsbS1weXRob24tYmluPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiAtLXdpdGgtcmxtLXB5dGhvbi1pbmNsdWRlLWRpcj0ke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9LC0td2l0aG91dC1ybG1fcHl0aG9uLHB5dGhvbi1uYXRpdmUgcHl0aG9uIgotUEFDS0FHRUNPTkZJR1tyZXN0XSA9ICItLXdpdGgtcmxtX3Jlc3QsLS13aXRob3V0LXJsbV9yZXN0LGN1cmwganNvbi1jIgotUEFDS0FHRUNPTkZJR1tydWJ5XSA9ICItLXdpdGgtcmxtX3J1YnksLS13aXRob3V0LXJsbV9ydWJ5LHJ1YnkiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLCAtLXdpdGhvdXQtb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbcmxtLWVhcC1mYXN0XSA9ICItLXdpdGgtcmxtX2VhcF9mYXN0LCAtLXdpdGhvdXQtcmxtX2VhcF9mYXN0IgotUEFDS0FHRUNPTkZJR1tybG0tZWFwLXB3ZF0gPSAiLS13aXRoLXJsbV9lYXBfcHdkLCAtLXdpdGhvdXQtcmxtX2VhcF9wd2QiCi0KLWluaGVyaXQgdXNlcmFkZCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQKLQotIyBUaGlzIGlzIG5vdCBhIGNwYW4gb3IgcHl0aG9uIGJhc2VkIHBhY2thZ2UsIGJ1dCBpdCBuZWVkcyBzb21lIGRlZmluaXRpb25zCi0jIGZyb20gY3Bhbi1iYXNlIGFuZCBweXRob24tZGlyIGJiY2xhc3NlcyBmb3IgYnVpbGRpbmcgcmxtX3BlcmwgYW5kIHJsbV9weXRob24KLSMgY29ycmVjdGx5LgotaW5oZXJpdCBjcGFuLWJhc2UgcHl0aG9uLWRpcgotCi0jIFRoZSBtb2R1bGVzIHN1YmRpcnMgYWxzbyBuZWVkIHRvIGJlIHByb2Nlc3NlZCBieSBhdXRvcmVjb25mLiBVc2UgYXV0b2dlbi5zaAotIyBpbiBvcmRlciB0byBoYW5kbGUgdGhlIHN1YmRpcnMgY29ycmVjdGx5LgotZG9fY29uZmlndXJlICgpIHsKLSAgICAuL2F1dG9nZW4uc2gKLQotICAgICMgdGhlIGNvbmZpZ3VyZSBvZiBybG1fcGVybCBuZWVkcyB0aGlzIHRvIGdldCBjb3JyZWN0Ci0gICAgIyBtb2RfY2ZsYWdzIGFuZCBtb2RfbGRmbGFncwotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BlcmwnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBleHBvcnQgUEVSTDVMSUI9IiR7U1RBR0lOR19MSUJESVJ9JHtQRVJMX09XTl9ESVJ9L3BlcmwvJHtAZ2V0X3BlcmxfdmVyc2lvbihkKX0iCi0gICAgZmkKLQotICAgIG9lX3J1bmNvbmYKLQotICAgICMgd2UgZG9uJ3QgbmVlZCBkaGNwY2xpZW50Ci0gICAgc2VkIC1pIC1lICdzL2RoY3BjbGllbnQubWsvLycgJHtTfS9zcmMvbW9kdWxlcy9wcm90b19kaGNwL2FsbC5tawotfQotCi1JTklUU0NSSVBUX05BTUUgPSAicmFkaXVzZCIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJhZGl1c2Quc2VydmljZSIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIHJhZGl1c2QiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgcm0gLXJmICR7RH0KLSAgICBta2RpciAtcCAke0R9LyR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmQKLSAgICBta2RpciAtcCAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQKLSAgICBta2RpciAtcCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgbWtkaXIgLXAgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9yYWRpdXNkCi0gICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLQotICAgIGV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9JHtEfS8ke2xpYmRpcn0KLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgUj0ke0R9IElOU1RBTExTVFJJUD0iIgotCi0gICAgIyByZW1vdmUgdW5zdXBwb3J0ZWQgY29uZmlnIGZpbGVzCi0gICAgcm0gLWYgJHtEfS8ke3N5c2NvbmZkaXJ9L3JhZGRiL2V4cGVyaW1lbnRhbC5jb25mCi0KLSAgICAjIHJlbW92ZSBzY3JpcHRzIHRoYXQgcmVxdWlyZWQgUGVybChEQkkpCi0gICAgcm0gLXJmICR7RH0vJHtiaW5kaXJ9L3JhZHNxbHJlbGF5Ci0KLSAgICBjcCAtZiAke1dPUktESVJ9L2ZyZWVyYWRpdXMgJHtEfS9ldGMvaW5pdC5kL3JhZGl1c2QKLSAgICBybSAtZiAke0R9LyR7c2JpbmRpcn0vcmMucmFkaXVzZAotICAgIGNobW9kICt4ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvcmFkaXVzZAotICAgIHJtIC1yZiAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vcnVuLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy41OF9yYWRpdXNkICAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy81OF9yYWRpdXNkCi0KLSAgICBjaG93biAtUiByYWRpdXNkOnJhZGl1c2QgJHtEfS8ke3N5c2NvbmZkaXJ9L3JhZGRiLwotICAgIGNob3duIC1SIHJhZGl1c2Q6cmFkaXVzZCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbGliL3JhZGl1c2QKLQotICAgICMgRm9yIHN5c3RlbWQKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcmFkaXVzZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAotICAgICAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0gICAgICAgICAgIC1lICdzLEBTVEFURURJUkAsJHtsb2NhbHN0YXRlZGlyfSxnJyBcCi0gICAgICAgICAgIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLSAgICAgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmFkaXVzZC5zZXJ2aWNlCi0KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3JhZGl1c2Qtdm9sYXRpbGVzLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KLSAgICBmaQotfQotCi0jIFRoaXMgaXMgb25seSBuZWVkZWQgd2hlbiB3ZSBpbnN0YWxsL3VwZGF0ZSBvbiBhIHJ1bm5pbmcgdGFyZ2V0LgotIwotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLSAgICBpZiBbIC16ICIkRCIgXTsgdGhlbgotICAgICAgICBpZiBjb21tYW5kIC12IHN5c3RlbWQtdG1wZmlsZXMgPi9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgICAgIyBjcmVhdGUgL3Zhci9sb2cvcmFkaXVzLCAvdmFyL3J1bi9yYWRpdXNkCi0gICAgICAgICAgICBzeXN0ZW1kLXRtcGZpbGVzIC0tY3JlYXRlICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9yYWRpdXNkLXZvbGF0aWxlcy5jb25mCi0gICAgICAgIGVsaWYgWyAtZSAke3N5c2NvbmZkaXJ9L2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdOyB0aGVuCi0gICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKLSAgICAgICAgZmkKLQotICAgICAgICAjIEZpeCBvd25lcnNoaXAgZm9yIC9ldGMvcmFkZGIvKiwgL3Zhci9saWIvcmFkaXVzZAotICAgICAgICBjaG93biAtUiByYWRpdXNkOnJhZGl1c2QgJHtzeXNjb25mZGlyfS9yYWRkYgotICAgICAgICBjaG93biAtUiByYWRpdXNkOnJhZGl1c2QgJHtsb2NhbHN0YXRlZGlyfS9saWIvcmFkaXVzZAotICAgIGZpCi19Ci0KLSMgV2UgcmVhbGx5IG5lZWQgdGhlIHN5bWxpbmsgOigKLUlOU0FORV9TS0lQXyR7UE59ID0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LWtyYjUgPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tbGRhcCA9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1teXNxbCA9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1wZXJsID0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LXBvc3RncmVzcWwgPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tcHl0aG9uID0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LXVuaXhvZGJjID0gImRldi1zbyIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXV0aWxzICR7UE59LWxkYXAgJHtQTn0ta3JiNSAke1BOfS1wZXJsIFwKLSAgICAke1BOfS1weXRob24gJHtQTn0tbXlzcWwgJHtQTn0tcG9zdGdyZXNxbCAke1BOfS11bml4b2RiYyIKLQotRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9LyoiCi0KLUZJTEVTXyR7UE59LWxkYXAgPSAiJHtsaWJkaXJ9L3JsbV9sZGFwLnNvKiBcCi0gICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWF2YWlsYWJsZS9sZGFwIFwKLSIKLQotRklMRVNfJHtQTn0ta3JiNSA9ICIke2xpYmRpcn0vcmxtX2tyYjUuc28qIFwKLSAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtYXZhaWxhYmxlL2tyYjUgXAotIgotCi1GSUxFU18ke1BOfS1wZXJsID0gIiR7bGliZGlyfS9ybG1fcGVybC5zbyogXAotICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1jb25maWcvcGVybCBcCi0gICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWF2YWlsYWJsZS9wZXJsIFwKLSIKLQotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7bGliZGlyfS9ybG1fcHl0aG9uLnNvKiBcCi0gICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWNvbmZpZy9weXRob24gXAotICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1hdmFpbGFibGUvcHl0aG9uIFwKLSIKLQotRklMRVNfJHtQTn0tbXlzcWwgPSAiJHtsaWJkaXJ9L3JsbV9zcWxfbXlzcWwuc28qIFwKLSAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtY29uZmlnL3NxbC8qL215c3FsIFwKLSAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtYXZhaWxhYmxlL3NxbCBcCi0iCi0KLUZJTEVTXyR7UE59LXBvc3RncmVzcWwgPSAiJHtsaWJkaXJ9L3JsbV9zcWxfcG9zdGdyZXNxbC5zbyogXAotICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1jb25maWcvc3FsLyovcG9zdGdyZXNxbCBcCi0iCi0KLUZJTEVTXyR7UE59LXVuaXhvZGJjID0gIiR7bGliZGlyfS9ybG1fc3FsX3VuaXhvZGJjLnNvKiIKLQotRklMRVNfJHtQTn0gPSsgIiR7bGliZGlyfS9ybG1fKi5zbyogJHtsaWJkaXJ9L3Byb3RvXypzbyoiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJwZXJsIgotUkRFUEVORFNfJHtQTn0tdXRpbHMgPSAiJHtQTn0gcGVybCIKLQotQ0xFQU5CUk9LRU4gPSAiMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZyZWVyYWRpdXNfMy4wLjIwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZnJlZXJhZGl1c18zLjAuMjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA1Y2E0NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZyZWVyYWRpdXNfMy4wLjIwLmJiCkBAIC0wLDAgKzEsMjM3IEBACitERVNDUklQVElPTiA9ICJGcmVlUkFESVVTIGlzIGFuIEludGVybmV0IGF1dGhlbnRpY2F0aW9uIGRhZW1vbiwgd2hpY2ggaW1wbGVtZW50cyB0aGUgUkFESVVTIFwKK3Byb3RvY29sLCBhcyBkZWZpbmVkIGluIFJGQyAyODY1IChhbmQgb3RoZXJzKS4gSXQgYWxsb3dzIE5ldHdvcmsgQWNjZXNzIFwKK1NlcnZlcnMgKE5BUyBib3hlcykgdG8gcGVyZm9ybSBhdXRoZW50aWNhdGlvbiBmb3IgZGlhbC11cCB1c2Vycy4gVGhlcmUgYXJlIFwKK2Fsc28gUkFESVVTIGNsaWVudHMgYXZhaWxhYmxlIGZvciBXZWIgc2VydmVycywgZmlyZXdhbGxzLCBVbml4IGxvZ2lucywgYW5kIFwKK21vcmUuICBVc2luZyBSQURJVVMgYWxsb3dzIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uIGZvciBhIG5ldHdvcmsgdG8gXAorYmUgY2VudHJhbGl6ZWQsIGFuZCBtaW5pbWl6ZXMgdGhlIGFtb3VudCBvZiByZS1jb25maWd1cmF0aW9uIHdoaWNoIGhhcyB0byBiZSBcCitkb25lIHdoZW4gYWRkaW5nIG9yIGRlbGV0aW5nIG5ldyB1c2Vycy4iCisKK1NVTU1BUlkgPSAiSGlnaC1wZXJmb3JtYW5jZSBhbmQgaGlnaGx5IGNvbmZpZ3VyYWJsZSBSQURJVVMgc2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlcmFkaXVzLm9yZy8iCitTRUNUSU9OID0gIlN5c3RlbS9TZXJ2ZXJzIgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lYjcyM2I2MTUzOWZlZWYwMTNkZTQ3NmU2OGI1YzUwYSIKK0RFUEVORFMgPSAib3BlbnNzbC1uYXRpdmUgb3BlbnNzbCBsaWJpZG4gbGlidG9vbCBsaWJwY2FwIGxpYnRhbGxvYyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0ZyZWVSQURJVVMvZnJlZXJhZGl1cy1zZXJ2ZXIuZ2l0O2JyYW5jaD12My4wLng7bGZzPTA7IFwKKyAgICBmaWxlOi8vZnJlZXJhZGl1cyBcCisgICAgZmlsZTovL3ZvbGF0aWxlcy41OF9yYWRpdXNkIFwKKyAgICBmaWxlOi8vZnJlZXJhZGl1cy1lbmJsZS11c2VyLWluLWNvbmYucGF0Y2ggXAorICAgIGZpbGU6Ly9mcmVlcmFkaXVzLWNvbmZpZ3VyZS5hYy1hbGxvdy1jcm9zcy1jb21waWxhdGlvbi5wYXRjaCBcCisgICAgZmlsZTovL2ZyZWVyYWRpdXMtbGlidG9vbC1kZXRlY3Rpb24ucGF0Y2ggXAorICAgIGZpbGU6Ly9mcmVlcmFkaXVzLWNvbmZpZ3VyZS5hYy1hZGQtb3B0aW9uLWZvci1saWJjYXAucGF0Y2ggXAorICAgIGZpbGU6Ly9mcmVlcmFkaXVzLWF2b2lkLXNlYXJjaGluZy1ob3N0LWRpcnMucGF0Y2ggXAorICAgIGZpbGU6Ly9mcmVlcmFkaXVzLXJsbV9weXRob24tYWRkLVBZX0lOQ19ESVIucGF0Y2ggXAorICAgIGZpbGU6Ly9mcmVlcmFkaXVzLWxpYnRvb2wtZG8tbm90LXVzZS1qbGlidG9vbC5wYXRjaCBcCisgICAgZmlsZTovL2ZyZWVyYWRpdXMtZml4LXF1b3RpbmctZm9yLUJVSUxUX1dJVEgucGF0Y2ggXAorICAgIGZpbGU6Ly9mcmVlcmFkaXVzLWZpeC1lcnJvci1mb3ItZXhwYW5zaW9uLW9mLW1hY3JvLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1ybG1fbXNjaGFwLVVzZS1pbmNsdWRlZGlyLWluc3RlYWQtb2YtaGFyZGNvZGluZy11c3ItLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1ybG1fcHl0aG9uMy1hZGQtUFlfSU5DX0RJUi1pbi1zZWFyY2gtZGlyLnBhdGNoIFwKKyAgICBmaWxlOi8vcmFkaXVzZC5zZXJ2aWNlIFwKKyAgICBmaWxlOi8vcmFkaXVzZC12b2xhdGlsZXMuY29uZiBcCisiCisKK1NSQ1JFViA9ICJkOTRjOTUzYWI5NjAyYTIzODQzM2JhMTg1MzMxMTFiODQ1ZmQ4ZTllIgorCitQQVJBTExFTF9NQUtFID0gIiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworTERGTEFHU19hcHBlbmRfcG93ZXJwYyA9ICIgLWxhdG9taWMiCitMREZMQUdTX2FwcGVuZF9taXBzYXJjaCA9ICIgLWxhdG9taWMiCitMREZMQUdTX2FwcGVuZF9hcm12NSA9ICIgLWxhdG9taWMiCisKK0VYVFJBX09FQ09ORiA9ICIgLS1lbmFibGUtc3RyaWN0LWRlcGVuZGVuY2llcyBcCisgICAgICAgIC0td2l0aC1kb2NkaXI9JHtkb2NkaXJ9L2ZyZWVyYWRpdXMtJHtQVn0gXAorICAgICAgICAtLXdpdGgtb3BlbnNzbC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgICAgIC0td2l0aC1vcGVuc3NsLWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSBcCisgICAgICAgIC0td2l0aG91dC1ybG1faXBwb29sIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9jYWNoZV9tZW1jYWNoZWQgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX2NvdW50ZXIgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX2NvdWNoYmFzZSBcCisgICAgICAgIC0td2l0aG91dC1ybG1fZGJtIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9lYXBfdG5jIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9lYXBfaWtldjIgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX29wZW5kaXJlY3RvcnkgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX3JlZGlzIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9yZWRpc3dobyBcCisgICAgICAgIC0td2l0aG91dC1ybG1fc3FsX2RiMiBcCisgICAgICAgIC0td2l0aG91dC1ybG1fc3FsX2ZpcmViaXJkIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfZnJlZXRkcyBcCisgICAgICAgIC0td2l0aG91dC1ybG1fc3FsX2lvZGJjIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfb3JhY2xlIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfc3liYXNlIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfbW9uZ28gXAorICAgICAgICAtLXdpdGhvdXQtcmxtX3NxbGhwd2lwcG9vbCBcCisgICAgICAgIC0td2l0aG91dC1ybG1fc2VjdXJpZCBcCisgICAgICAgIC0td2l0aG91dC1ybG1fdW5ib3VuZCBcCisgICAgICAgIC0td2l0aG91dC1ybG1fcHl0aG9uIFwKKyAgICAgICAgYWNfY3ZfcGF0aF9QRVJMPSR7YmluZGlyfS9wZXJsIFwKKyAgICAgICAgYXhfY3ZfY2NfYnVpbHRpbl9jaG9vc2VfZXhwcj1ubyBcCisgICAgICAgIGF4X2N2X2NjX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wPW5vIFwKKyAgICAgICAgYXhfY3ZfY2NfYnVpbHRpbl9ic3dhcDY0PW5vIFwKKyAgICAgICAgYXhfY3ZfY2NfYm91bmRlZF9hdHRyaWJ1dGU9bm8gXAorIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgcGNyZSBsaWJjYXAgXAorICAgICAgICAgICAgICAgICAgIG9wZW5zc2wgcmxtLWVhcC1mYXN0IHJsbS1lYXAtcHdkIFwKKyIKKworUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItLXdpdGgtcmxtX2tyYjUsLS13aXRob3V0LXJsbV9rcmI1LGtyYjUiCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLXJsbV9wYW0sLS13aXRob3V0LXJsbV9wYW0sbGlicGFtIgorUEFDS0FHRUNPTkZJR1tsaWJjYXBdID0gIi0td2l0aC1saWJjYXAsLS13aXRob3V0LWxpYmNhcCxsaWJjYXAiCitQQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1ybG1fbGRhcCwtLXdpdGhvdXQtcmxtX2xkYXAsb3BlbmxkYXAiCitQQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtcmxtX3NxbF9teXNxbCwtLXdpdGhvdXQtcmxtX3NxbF9teXNxbCxteXNxbDUiCitQQUNLQUdFQ09ORklHW3NxbGl0ZV0gPSAiLS13aXRoLXJsbV9zcWxfc3FsaXRlLC0td2l0aG91dC1ybG1fc3FsX3NxbGl0ZSxzcWxpdGUzIgorUEFDS0FHRUNPTkZJR1t1bml4b2RiY10gPSAiLS13aXRoLXJsbV9zcWxfdW5peG9kYmMsLS13aXRob3V0LXJsbV9zcWxfdW5peG9kYmMsdW5peG9kYmMiCitQQUNLQUdFQ09ORklHW3Bvc3RncmVzcWxdID0gIi0td2l0aC1ybG1fc3FsX3Bvc3RncmVzcWwsLS13aXRob3V0LXJsbV9zcWxfcG9zdGdyZXNxbCxwb3N0Z3Jlc3FsIgorUEFDS0FHRUNPTkZJR1twY3JlXSA9ICItLXdpdGgtcGNyZSwtLXdpdGhvdXQtcGNyZSxsaWJwY3JlIgorUEFDS0FHRUNPTkZJR1twZXJsXSA9ICItLXdpdGgtcGVybD0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvcGVybCAtLXdpdGgtcmxtX3BlcmwsLS13aXRob3V0LXJsbV9wZXJsLHBlcmwtbmF0aXZlIHBlcmwscGVybCIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uM10gPSAiLS13aXRoLXJsbV9weXRob24zIC0td2l0aC1ybG0tcHl0aG9uMy1iaW49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgLS13aXRoLXJsbS1weXRob24zLWluY2x1ZGUtZGlyPSR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0sLS13aXRob3V0LXJsbV9weXRob24zLHB5dGhvbjMtbmF0aXZlIHB5dGhvbjMiCitQQUNLQUdFQ09ORklHW3Jlc3RdID0gIi0td2l0aC1ybG1fcmVzdCwtLXdpdGhvdXQtcmxtX3Jlc3QsY3VybCBqc29uLWMiCitQQUNLQUdFQ09ORklHW3J1YnldID0gIi0td2l0aC1ybG1fcnVieSwtLXdpdGhvdXQtcmxtX3J1YnkscnVieSIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsIC0td2l0aG91dC1vcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tybG0tZWFwLWZhc3RdID0gIi0td2l0aC1ybG1fZWFwX2Zhc3QsIC0td2l0aG91dC1ybG1fZWFwX2Zhc3QiCitQQUNLQUdFQ09ORklHW3JsbS1lYXAtcHdkXSA9ICItLXdpdGgtcmxtX2VhcF9wd2QsIC0td2l0aG91dC1ybG1fZWFwX3B3ZCIKKworaW5oZXJpdCB1c2VyYWRkIGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQgc3lzdGVtZAorCisjIFRoaXMgaXMgbm90IGEgY3BhbiBvciBweXRob24gYmFzZWQgcGFja2FnZSwgYnV0IGl0IG5lZWRzIHNvbWUgZGVmaW5pdGlvbnMKKyMgZnJvbSBjcGFuLWJhc2UgYW5kIHB5dGhvbjMtZGlyIGJiY2xhc3NlcyBmb3IgYnVpbGRpbmcgcmxtX3BlcmwgYW5kIHJsbV9weXRob24KKyMgY29ycmVjdGx5LgoraW5oZXJpdCBjcGFuLWJhc2UgcHl0aG9uMy1kaXIKKworIyBUaGUgbW9kdWxlcyBzdWJkaXJzIGFsc28gbmVlZCB0byBiZSBwcm9jZXNzZWQgYnkgYXV0b3JlY29uZi4gVXNlIGF1dG9nZW4uc2gKKyMgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBzdWJkaXJzIGNvcnJlY3RseS4KK2RvX2NvbmZpZ3VyZSAoKSB7CisgICAgLi9hdXRvZ2VuLnNoCisKKyAgICAjIHRoZSBjb25maWd1cmUgb2YgcmxtX3BlcmwgbmVlZHMgdGhpcyB0byBnZXQgY29ycmVjdAorICAgICMgbW9kX2NmbGFncyBhbmQgbW9kX2xkZmxhZ3MKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwZXJsJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgZXhwb3J0IFBFUkw1TElCPSIke1NUQUdJTkdfTElCRElSfSR7UEVSTF9PV05fRElSfS9wZXJsLyR7QGdldF9wZXJsX3ZlcnNpb24oZCl9IgorICAgIGZpCisKKyAgICBvZV9ydW5jb25mCisKKyAgICAjIHdlIGRvbid0IG5lZWQgZGhjcGNsaWVudAorICAgIHNlZCAtaSAtZSAncy9kaGNwY2xpZW50Lm1rLy8nICR7U30vc3JjL21vZHVsZXMvcHJvdG9fZGhjcC9hbGwubWsKK30KKworSU5JVFNDUklQVF9OQU1FID0gInJhZGl1c2QiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJyYWRpdXNkLnNlcnZpY2UiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCByYWRpdXNkIgorCitkb19pbnN0YWxsKCkgeworICAgIHJtIC1yZiAke0R9CisgICAgbWtkaXIgLXAgJHtEfS8ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5kCisgICAgbWtkaXIgLXAgJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kCisgICAgbWtkaXIgLXAgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIG1rZGlyIC1wICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIvcmFkaXVzZAorICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisKKyAgICBleHBvcnQgTERfTElCUkFSWV9QQVRIPSR7RH0vJHtsaWJkaXJ9CisgICAgb2VfcnVubWFrZSBpbnN0YWxsIFI9JHtEfSBJTlNUQUxMU1RSSVA9IiIKKworICAgICMgcmVtb3ZlIHVuc3VwcG9ydGVkIGNvbmZpZyBmaWxlcworICAgIHJtIC1mICR7RH0vJHtzeXNjb25mZGlyfS9yYWRkYi9leHBlcmltZW50YWwuY29uZgorCisgICAgIyByZW1vdmUgc2NyaXB0cyB0aGF0IHJlcXVpcmVkIFBlcmwoREJJKQorICAgIHJtIC1yZiAke0R9LyR7YmluZGlyfS9yYWRzcWxyZWxheQorCisgICAgY3AgLWYgJHtXT1JLRElSfS9mcmVlcmFkaXVzICR7RH0vZXRjL2luaXQuZC9yYWRpdXNkCisgICAgcm0gLWYgJHtEfS8ke3NiaW5kaXJ9L3JjLnJhZGl1c2QKKyAgICBjaG1vZCAreCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL3JhZGl1c2QKKyAgICBybSAtcmYgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L3J1bi8KKyAgICBybSAtcmYgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMuNThfcmFkaXVzZCAgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvNThfcmFkaXVzZAorCisgICAgY2hvd24gLVIgcmFkaXVzZDpyYWRpdXNkICR7RH0vJHtzeXNjb25mZGlyfS9yYWRkYi8KKyAgICBjaG93biAtUiByYWRpdXNkOnJhZGl1c2QgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9yYWRpdXNkCisKKyAgICAjIEZvciBzeXN0ZW1kCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9yYWRpdXNkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICAgICAgc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAorICAgICAgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorICAgICAgICAgICAgLWUgJ3MsQFNUQVRFRElSQCwke2xvY2Fsc3RhdGVkaXJ9LGcnIFwKKyAgICAgICAgICAgIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKKyAgICAgICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3JhZGl1c2Quc2VydmljZQorCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcmFkaXVzZC12b2xhdGlsZXMuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3JhZGl1c2QuY29uZgorICAgIGZpCit9CisKKyMgVGhpcyBpcyBvbmx5IG5lZWRlZCB3aGVuIHdlIGluc3RhbGwvdXBkYXRlIG9uIGEgcnVubmluZyB0YXJnZXQuCisjCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworICAgIGlmIFsgLXogIiREIiBdOyB0aGVuCisgICAgICAgIGlmIGNvbW1hbmQgLXYgc3lzdGVtZC10bXBmaWxlcyA+L2Rldi9udWxsOyB0aGVuCisgICAgICAgICAgICAjIGNyZWF0ZSAvdmFyL2xvZy9yYWRpdXMsIC92YXIvcnVuL3JhZGl1c2QKKyAgICAgICAgICAgIHN5c3RlbWQtdG1wZmlsZXMgLS1jcmVhdGUgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3JhZGl1c2QuY29uZgorICAgICAgICBlbGlmIFsgLWUgJHtzeXNjb25mZGlyfS9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggXTsgdGhlbgorICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggdXBkYXRlCisgICAgICAgIGZpCisKKyAgICAgICAgIyBGaXggb3duZXJzaGlwIGZvciAvZXRjL3JhZGRiLyosIC92YXIvbGliL3JhZGl1c2QKKyAgICAgICAgY2hvd24gLVIgcmFkaXVzZDpyYWRpdXNkICR7c3lzY29uZmRpcn0vcmFkZGIKKyAgICAgICAgY2hvd24gLVIgcmFkaXVzZDpyYWRpdXNkICR7bG9jYWxzdGF0ZWRpcn0vbGliL3JhZGl1c2QKKyAgICBmaQorfQorCisjIFdlIHJlYWxseSBuZWVkIHRoZSBzeW1saW5rIDooCitJTlNBTkVfU0tJUF8ke1BOfSA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1rcmI1ID0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LWxkYXAgPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tbXlzcWwgPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tcGVybCA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1wb3N0Z3Jlc3FsID0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LXB5dGhvbiA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS11bml4b2RiYyA9ICJkZXYtc28iCisKK1BBQ0tBR0VTID0rICIke1BOfS11dGlscyAke1BOfS1sZGFwICR7UE59LWtyYjUgJHtQTn0tcGVybCBcCisgICAgJHtQTn0tcHl0aG9uICR7UE59LW15c3FsICR7UE59LXBvc3RncmVzcWwgJHtQTn0tdW5peG9kYmMiCisKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS8qIgorCitGSUxFU18ke1BOfS1sZGFwID0gIiR7bGliZGlyfS9ybG1fbGRhcC5zbyogXAorICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1hdmFpbGFibGUvbGRhcCBcCisiCisKK0ZJTEVTXyR7UE59LWtyYjUgPSAiJHtsaWJkaXJ9L3JsbV9rcmI1LnNvKiBcCisgICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWF2YWlsYWJsZS9rcmI1IFwKKyIKKworRklMRVNfJHtQTn0tcGVybCA9ICIke2xpYmRpcn0vcmxtX3Blcmwuc28qIFwKKyAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtY29uZmlnL3BlcmwgXAorICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1hdmFpbGFibGUvcGVybCBcCisiCisKK0ZJTEVTXyR7UE59LXB5dGhvbiA9ICIke2xpYmRpcn0vcmxtX3B5dGhvbjMuc28qIFwKKyAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtY29uZmlnL3B5dGhvbjMgXAorICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1hdmFpbGFibGUvcHl0aG9uMyBcCisiCisKK0ZJTEVTXyR7UE59LW15c3FsID0gIiR7bGliZGlyfS9ybG1fc3FsX215c3FsLnNvKiBcCisgICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWNvbmZpZy9zcWwvKi9teXNxbCBcCisgICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWF2YWlsYWJsZS9zcWwgXAorIgorCitGSUxFU18ke1BOfS1wb3N0Z3Jlc3FsID0gIiR7bGliZGlyfS9ybG1fc3FsX3Bvc3RncmVzcWwuc28qIFwKKyAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtY29uZmlnL3NxbC8qL3Bvc3RncmVzcWwgXAorIgorCitGSUxFU18ke1BOfS11bml4b2RiYyA9ICIke2xpYmRpcn0vcmxtX3NxbF91bml4b2RiYy5zbyoiCisKK0ZJTEVTXyR7UE59ID0rICIke2xpYmRpcn0vcmxtXyouc28qICR7bGliZGlyfS9wcm90b18qc28qIgorCitSREVQRU5EU18ke1BOfSArPSAicGVybCIKK1JERVBFTkRTXyR7UE59LXV0aWxzID0gIiR7UE59IHBlcmwiCisKK0NMRUFOQlJPS0VOID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkva2VhL2tlYV8xLjcuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rZWEva2VhXzEuNy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjMwZmQwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rZWEva2VhXzEuNy4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotU1VNTUFSWSA9ICJJU0MgS2VhIERIQ1AgU2VydmVyIgotREVTQ1JJUFRJT04gPSAiS2VhIGlzIHRoZSBuZXh0IGdlbmVyYXRpb24gb2YgREhDUCBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgSVNDLiBJdCBzdXBwb3J0cyBib3RoIERIQ1B2NCBhbmQgREhDUHY2IHByb3RvY29scyBhbG9uZyB3aXRoIHRoZWlyIGV4dGVuc2lvbnMsIGUuZy4gcHJlZml4IGRlbGVnYXRpb24gYW5kIGR5bmFtaWMgdXBkYXRlcyB0byBETlMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2tlYS5pc2Mub3JnIgotU0VDVElPTiA9ICJjb25uZWN0aXZpdHkiCi1MSUNFTlNFID0gIk1QTC0yLjAgJiBBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGU1YjAxYzg0OGM3NzM2YTBjOWU2OGY5YzljZDAyODEiCi0KLURFUEVORFMgKz0gImtlYS1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiXAotICAgIGh0dHA6Ly9mdHAuaXNjLm9yZy9pc2Mva2VhLyR7UFZ9LyR7QlB9LnRhci5neiBcCi0gICAgZmlsZTovLzAwMDEtcmVtb3ZlLUFDX1RSWV9SVU4ucGF0Y2ggXAotICAgIGZpbGU6Ly9rZWEtZGhjcDQuc2VydmljZSBcCi0gICAgZmlsZTovL2tlYS1kaGNwNi5zZXJ2aWNlIFwKLSAgICBmaWxlOi8va2VhLWRoY3AtZGRucy5zZXJ2aWNlIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmZGEwM2JmNDY1ODE4MDA5YjcwZGZmYzIyNmRhNzc3ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMGY4MmM1NDhiODQ0YzEyZWQ0NmM0ZWIzODgwZDYzYjQ1ZWMwNGNlY2ZjZjJlNGFiMWQ3YmFkYTdmZmY0ZjJhIgotCi1pbmhlcml0IGF1dG90b29scyBzeXN0ZW1kCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJrZWEtZGhjcDQuc2VydmljZSBrZWEtZGhjcDYuc2VydmljZSBrZWEtZGhjcC1kZG5zLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCi0KLURFQlVHX09QVElNSVpBVElPTl9yZW1vdmVfbWlwcyA9ICIgLU9nIgotREVCVUdfT1BUSU1JWkFUSU9OX2FwcGVuZF9taXBzID0gIiAtTyIKLUJVSUxEX09QVElNSVpBVElPTl9yZW1vdmVfbWlwcyA9ICIgLU9nIgotQlVJTERfT1BUSU1JWkFUSU9OX2FwcGVuZF9taXBzID0gIiAtTyIKLQotREVCVUdfT1BUSU1JWkFUSU9OX3JlbW92ZV9taXBzZWwgPSAiIC1PZyIKLURFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfbWlwc2VsID0gIiAtTyIKLUJVSUxEX09QVElNSVpBVElPTl9yZW1vdmVfbWlwc2VsID0gIiAtT2ciCi1CVUlMRF9PUFRJTUlaQVRJT05fYXBwZW5kX21pcHNlbCA9ICIgLU8iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICBta2RpciAtcCAke0J9L3NyYy9saWIvbG9nL2NvbXBpbGVyLwotICAgIGxuIC1zZiAke1NUQUdJTkdfQklORElSX05BVElWRX0va2VhLW1zZy1jb21waWxlciAke0J9L3NyYy9saWIvbG9nL2NvbXBpbGVyL2tlYS1tc2ctY29tcGlsZXIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9rZWEtZGhjcCpzZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Ci0gICAgc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAotICAgICAgICAgICAtZSAncyxATE9DQUxTVEFURURJUkAsJHtsb2NhbHN0YXRlZGlyfSxnJyAtZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCi0gICAgICAgICAgICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2tlYS1kaGNwKnNlcnZpY2UKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgcm0gLXJmICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKLX0KLQotUEFDS0FHRUNPTkZJRyA/Pz0gIm9wZW5zc2wgbG9nNGNwbHVzIGJvb3N0IgotCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsPSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7cHJlZml4fSwsb3BlbnNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tsb2c0Y3BsdXNdID0gIi0td2l0aC1sb2c0Y3BsdXM9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtwcmVmaXh9LCxsb2c0Y3BsdXMsbG9nNGNwbHVzIgotUEFDS0FHRUNPTkZJR1tib29zdF0gPSAiLS13aXRoLWJvb3N0LWxpYnM9LWxib29zdF9zeXN0ZW0sLGJvb3N0LGJvb3N0IgotCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9rZWEvaG9va3MvKi5hICR7bGliZGlyfS9ob29rcy8qLmEiCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2hvb2tzLyouc28iCi0KLUJCQ0xBU1NFWFRFTkQgKz0gIm5hdGl2ZSIKLQotUEFSQUxMRUxfTUFLRUlOU1QgPSAiIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tlYS9rZWFfMS43LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkva2VhL2tlYV8xLjcuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTIyMWMzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tlYS9rZWFfMS43LjYuYmIKQEAgLTAsMCArMSw2NyBAQAorU1VNTUFSWSA9ICJJU0MgS2VhIERIQ1AgU2VydmVyIgorREVTQ1JJUFRJT04gPSAiS2VhIGlzIHRoZSBuZXh0IGdlbmVyYXRpb24gb2YgREhDUCBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgSVNDLiBJdCBzdXBwb3J0cyBib3RoIERIQ1B2NCBhbmQgREhDUHY2IHByb3RvY29scyBhbG9uZyB3aXRoIHRoZWlyIGV4dGVuc2lvbnMsIGUuZy4gcHJlZml4IGRlbGVnYXRpb24gYW5kIGR5bmFtaWMgdXBkYXRlcyB0byBETlMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2tlYS5pc2Mub3JnIgorU0VDVElPTiA9ICJjb25uZWN0aXZpdHkiCitMSUNFTlNFID0gIk1QTC0yLjAgJiBBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NjhkOTU1NDNkMjA5NjQ1OTI5MGE0ZTZiOWNlY2NmZmEiCisKK0RFUEVORFMgKz0gImtlYS1uYXRpdmUiCisKK1NSQ19VUkkgPSAiXAorICAgIGh0dHA6Ly9mdHAuaXNjLm9yZy9pc2Mva2VhLyR7UFZ9LyR7QlB9LnRhci5neiBcCisgICAgZmlsZTovLzAwMDEtcmVtb3ZlLUFDX1RSWV9SVU4ucGF0Y2ggXAorICAgIGZpbGU6Ly9rZWEtZGhjcDQuc2VydmljZSBcCisgICAgZmlsZTovL2tlYS1kaGNwNi5zZXJ2aWNlIFwKKyAgICBmaWxlOi8va2VhLWRoY3AtZGRucy5zZXJ2aWNlIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNmY0ODk5N2EzN2E2NzBhNDA2ZDUwMjBjZTY0YTdmYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxZGEzZDUwZTBjOGU5MmUxYWE2ZDY2MTAwYjVhZmQ3YjkzYmEyYzUwYjBhNGVhMTE0ZmQ5ZGNiOGJlOTgyY2E5IgorCitpbmhlcml0IGF1dG90b29scyBzeXN0ZW1kCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJrZWEtZGhjcDQuc2VydmljZSBrZWEtZGhjcDYuc2VydmljZSBrZWEtZGhjcC1kZG5zLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCisKK0RFQlVHX09QVElNSVpBVElPTl9yZW1vdmVfbWlwcyA9ICIgLU9nIgorREVCVUdfT1BUSU1JWkFUSU9OX2FwcGVuZF9taXBzID0gIiAtTyIKK0JVSUxEX09QVElNSVpBVElPTl9yZW1vdmVfbWlwcyA9ICIgLU9nIgorQlVJTERfT1BUSU1JWkFUSU9OX2FwcGVuZF9taXBzID0gIiAtTyIKKworREVCVUdfT1BUSU1JWkFUSU9OX3JlbW92ZV9taXBzZWwgPSAiIC1PZyIKK0RFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfbWlwc2VsID0gIiAtTyIKK0JVSUxEX09QVElNSVpBVElPTl9yZW1vdmVfbWlwc2VsID0gIiAtT2ciCitCVUlMRF9PUFRJTUlaQVRJT05fYXBwZW5kX21pcHNlbCA9ICIgLU8iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICBta2RpciAtcCAke0J9L3NyYy9saWIvbG9nL2NvbXBpbGVyLworICAgIGxuIC1zZiAke1NUQUdJTkdfQklORElSX05BVElWRX0va2VhLW1zZy1jb21waWxlciAke0J9L3NyYy9saWIvbG9nL2NvbXBpbGVyL2tlYS1tc2ctY29tcGlsZXIKKyAgICAjIHJlcGxhY2UgYWJzX3RvcF9idWlsZGRpciB0byBhdm9pZCBpbnRyb2R1Y2luZyB0aGUgYnVpbGQgcGF0aAorICAgICMgZG9uJ3QgZXhwYW5kIHRoZSBhYnNfdG9wX2J1aWxkZGlyIG9uIHRoZSB0YXJnZXQgYXMgdGhlIGFic190b3BfYnVpbGRkaXIgaXMgbWVhbmxpbmdsZXNzIG9uIHRoZSB0YXJnZXQKKyAgICBmaW5kICR7U30gLXR5cGUgZiAtbmFtZSAqLnNoLmluIHwgeGFyZ3Mgc2VkIC1pICAiczpAYWJzX3RvcF9idWlsZGRpckA6QGFic190b3BfYnVpbGRkaXJfcGxhY2Vob2xkZXJAOmciCisgICAgc2VkIC1pICJzOkBhYnNfdG9wX3NyY2RpckA6QGFic190b3Bfc3JjZGlyX3BsYWNlaG9sZGVyQDpnIiAke1N9L3NyYy9iaW4vYWRtaW4va2VhLWFkbWluLmluCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0va2VhLWRoY3Aqc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorICAgIHNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKyAgICAgICAgICAgLWUgJ3MsQExPQ0FMU1RBVEVESVJALCR7bG9jYWxzdGF0ZWRpcn0sZycgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAorICAgICAgICAgICAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9rZWEtZGhjcCpzZXJ2aWNlCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIHJtIC1yZiAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iCit9CisKK1BBQ0tBR0VDT05GSUcgPz89ICJvcGVuc3NsIGxvZzRjcGx1cyBib29zdCIKKworUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbD0ke1NUQUdJTkdfRElSX1RBUkdFVH0ke3ByZWZpeH0sLG9wZW5zc2wsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbbG9nNGNwbHVzXSA9ICItLXdpdGgtbG9nNGNwbHVzPSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7cHJlZml4fSwsbG9nNGNwbHVzLGxvZzRjcGx1cyIKK1BBQ0tBR0VDT05GSUdbYm9vc3RdID0gIi0td2l0aC1ib29zdC1saWJzPS1sYm9vc3Rfc3lzdGVtLCxib29zdCxib29zdCIKKworRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0va2VhL2hvb2tzLyouYSAke2xpYmRpcn0vaG9va3MvKi5hIgorRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9ob29rcy8qLnNvIgorCitCQkNMQVNTRVhURU5EICs9ICJuYXRpdmUiCisKK1BBUkFMTEVMX01BS0VJTlNUID0gIiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9sZnRwL2xmdHBfNC45LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGZ0cC9sZnRwXzQuOS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjA0N2Y3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9sZnRwL2xmdHBfNC45LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJMRlRQIGlzIGEgc29waGlzdGljYXRlZCBmaWxlIHRyYW5zZmVyIHByb2dyYW0gd2l0aCBcCi0gICAgICAgICAgICAgICBjb21tYW5kIGxpbmUgaW50ZXJmYWNlLiBJdCBzdXBwb3J0cyBGVFAsIEhUVFAsIFwKLSAgICAgICAgICAgICAgIEZJU0gsIFNGVFAsIEhUVFBTIGFuZCBGVFBTIHByb3RvY29scyIKLUhPTUVQQUdFID0gImh0dHA6Ly9sZnRwLnlhci5ydS8iCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotU1JDX1VSSSA9ICJodHRwOi8vbGZ0cC55YXIucnUvZnRwL2xmdHAtJHtQVn0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiMDU4MTdhMmMyNjQ2MzYxODI3MTczMGQwZjY3N2VkYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMDllN2U5MWE3YzAyMDYyNTcxNWU4NWMxNzI2YjFlNzUyNGRhMjI1MTg2ODNmYmUwNTFhYzEzMTE2ZGVkZWFjIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi1hY3BhdGhzID0gIi1JIC4vbTQiCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLW1vZHVsZXMgLS1kaXNhYmxlLXJwYXRoIgotCi1QQUNLQUdFQ09ORklHID8/PSAib3BlbnNzbCB6bGliIGdudXRscyByZWFkbGluZSBleHBhdCIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsIC0td2l0aG91dC1vcGVuc3NsLCBvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYj0ke1NUQUdJTkdfSU5DRElSfS8uLiwgLS13aXRob3V0LXpsaWIsIHpsaWIiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywgLS13aXRob3V0LWdudXRscywgZ251dGxzIgotUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLXJlYWRsaW5lPSR7U1RBR0lOR19JTkNESVJ9Ly4uIC0td2l0aC1yZWFkbGluZS1pbmM9JHtTVEFHSU5HX0lOQ0RJUn0gLS13aXRoLXJlYWRsaW5lLWxpYj0tbHJlYWRsaW5lLCAtLXdpdGgtcmVhZGxpbmU9bm8sIHJlYWRsaW5lIgotUEFDS0FHRUNPTkZJR1tleHBhdF0gPSAiLS13aXRoLWV4cGF0PSR7U1RBR0lOR19JTkNESVJ9Ly4uIC0td2l0aC1leHBhdC1pbmM9JHtTVEFHSU5HX0lOQ0RJUn0gLS13aXRoLWV4cGF0LWxpYj0tbGV4cGF0LCAsIGV4cGF0IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlybSAtcmYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCi19Ci1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vbGZ0cC8ke1BWfS8uZGVidWciCi1SREVQRU5EU18ke1BOfSA9ICJwZXJsIGJhc2ggcmVhZGxpbmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGZ0cC9sZnRwXzQuOS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xmdHAvbGZ0cF80LjkuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWEzODBhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xmdHAvbGZ0cF80LjkuMS5iYgpAQCAtMCwwICsxLDMxIEBACitERVNDUklQVElPTiA9ICJMRlRQIGlzIGEgc29waGlzdGljYXRlZCBmaWxlIHRyYW5zZmVyIHByb2dyYW0gd2l0aCBcCisgICAgICAgICAgICAgICBjb21tYW5kIGxpbmUgaW50ZXJmYWNlLiBJdCBzdXBwb3J0cyBGVFAsIEhUVFAsIFwKKyAgICAgICAgICAgICAgIEZJU0gsIFNGVFAsIEhUVFBTIGFuZCBGVFBTIHByb3RvY29scyIKK0hPTUVQQUdFID0gImh0dHA6Ly9sZnRwLnlhci5ydS8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworU1JDX1VSSSA9ICJodHRwOi8vbGZ0cC55YXIucnUvZnRwL2xmdHAtJHtQVn0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxOWNlNjQwMTJiYzcyMmFkNjE2NjczNzJmYTI2MjM4MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhNjkyZmQwODFjMTllMmNjMDQ1ODY5YWI3MjFhNGZiM2Q3NTcxMDQwODQ5YTQ0MDZjNDA0MmY3MzUyMzI0MTRjIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZworCithY3BhdGhzID0gIi1JIC4vbTQiCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLW1vZHVsZXMgLS1kaXNhYmxlLXJwYXRoIgorCitQQUNLQUdFQ09ORklHID8/PSAib3BlbnNzbCB6bGliIGdudXRscyByZWFkbGluZSBleHBhdCIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsIC0td2l0aG91dC1vcGVuc3NsLCBvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYj0ke1NUQUdJTkdfSU5DRElSfS8uLiwgLS13aXRob3V0LXpsaWIsIHpsaWIiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywgLS13aXRob3V0LWdudXRscywgZ251dGxzIgorUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLXJlYWRsaW5lPSR7U1RBR0lOR19JTkNESVJ9Ly4uIC0td2l0aC1yZWFkbGluZS1pbmM9JHtTVEFHSU5HX0lOQ0RJUn0gLS13aXRoLXJlYWRsaW5lLWxpYj0tbHJlYWRsaW5lLCAtLXdpdGgtcmVhZGxpbmU9bm8sIHJlYWRsaW5lIgorUEFDS0FHRUNPTkZJR1tleHBhdF0gPSAiLS13aXRoLWV4cGF0PSR7U1RBR0lOR19JTkNESVJ9Ly4uIC0td2l0aC1leHBhdC1pbmM9JHtTVEFHSU5HX0lOQ0RJUn0gLS13aXRoLWV4cGF0LWxpYj0tbGV4cGF0LCAsIGV4cGF0IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlybSAtcmYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCit9CitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vbGZ0cC8ke1BWfS8uZGVidWciCitSREVQRU5EU18ke1BOfSA9ICJwZXJsIGJhc2ggcmVhZGxpbmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGliZG5ldC9saWJkbmV0XzEuMTIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGliZG5ldC9saWJkbmV0XzEuMTIuYmIKaW5kZXggNWI2ZTQ1Yy4uNWIyN2NmZSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYmRuZXQvbGliZG5ldF8xLjEyLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJkbmV0L2xpYmRuZXRfMS4xMi5iYgpAQCAtMTEsOCArMTEsMTAgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotaW5oZXJpdCBhdXRvdG9vbHMKK2luaGVyaXQgYXV0b3Rvb2xzIG11bHRpbGliX3NjcmlwdAogCiBhY3BhdGhzID0gIi1JIC4vY29uZmlnLyIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK01VTFRJTElCX1NDUklQVFMgPSAiJHtQTn06JHtiaW5kaXJ9L2RuZXQtY29uZmlnIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21iZWR0bHMvbWJlZHRsc18yLjE2LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbWJlZHRscy9tYmVkdGxzXzIuMTYuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzlkMGRiZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbWJlZHRscy9tYmVkdGxzXzIuMTYuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVNVTU1BUlkgPSAiTGlnaHR3ZWlnaHQgY3J5cHRvIGFuZCBTU0wvVExTIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJtYmVkdGxzIGlzIGEgbGVhbiBvcGVuIHNvdXJjZSBjcnlwdG8gbGlicmFyeSAgICAgICAgICBcCi1mb3IgcHJvdmlkaW5nIFNTTCBhbmQgVExTIHN1cHBvcnQgaW4geW91ciBwcm9ncmFtcy4gSXQgb2ZmZXJzICAgICAgICBcCi1hbiBpbnR1aXRpdmUgQVBJIGFuZCBkb2N1bWVudGVkIGhlYWRlciBmaWxlcywgc28geW91IGNhbiBhY3R1YWxseSAgICBcCi11bmRlcnN0YW5kIHdoYXQgdGhlIGNvZGUgZG9lcy4gSXQgZmVhdHVyZXM6ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gLSBTeW1tZXRyaWMgYWxnb3JpdGhtcywgbGlrZSBBRVMsIEJsb3dmaXNoLCBUcmlwbGUtREVTLCBERVMsIEFSQzQsICBcCi0gICBDYW1lbGxpYSBhbmQgWFRFQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gLSBIYXNoIGFsZ29yaXRobXMsIGxpa2UgU0hBLTEsIFNIQS0yLCBSSVBFTUQtMTYwIGFuZCBNRDUgICAgICAgICAgICBcCi0gLSBFbnRyb3B5IHBvb2wgYW5kIHJhbmRvbSBnZW5lcmF0b3JzLCBsaWtlIENUUi1EUkJHIGFuZCBITUFDLURSQkcgICBcCi0gLSBQdWJsaWMga2V5IGFsZ29yaXRobXMsIGxpa2UgUlNBLCBFbGxpcHRpYyBDdXJ2ZXMsIERpZmZpZS1IZWxsbWFuLCBcCi0gICBFQ0RTQSBhbmQgRUNESCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gLSBTU0wgdjMgYW5kIFRMUyAxLjAsIDEuMSBhbmQgMS4yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gLSBBYnN0cmFjdGlvbiBsYXllcnMgZm9yIGNpcGhlcnMsIGhhc2hlcywgcHVibGljIGtleSBvcGVyYXRpb25zLCAgICBcCi0gICBwbGF0Zm9ybSBhYnN0cmFjdGlvbiBhbmQgdGhyZWFkaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0iCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vdGxzLm1iZWQub3JnLyIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzAyZDUwYTYzNjlmNWYyMmVmZGI2NzRkYjkwODE2N2EiCi0KLVNFQ1RJT04gPSAibGlicyIKLQotU1JDX1VSSSA9ICJodHRwczovL3Rscy5tYmVkLm9yZy9kb3dubG9hZC9tYmVkdGxzLSR7UFZ9LWFwYWNoZS50Z3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiOTBjZTdjN2EwMDFkMjUxNDQxMDI4MDcwNmIzYWIxYTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWMxYmVlNmQ4MjA5MGVkNmVhMjY5MDc4NGVhNGIyOTRhYjU3NmE2NWQ0MjhkYTlmZTg3NTBmOTMyZDJkYTY2MSIKLQotaW5oZXJpdCBjbWFrZQotCi1QQUNLQUdFQ09ORklHID8/PSAic2hhcmVkLWxpYnMgcHJvZ3JhbXMiCi1QQUNLQUdFQ09ORklHW3NoYXJlZC1saWJzXSA9ICItRFVTRV9TSEFSRURfTUJFRFRMU19MSUJSQVJZPU9OLC1VU0VfU0hBUkVEX01CRURUTFNfTElCUkFSWT1PRkYiCi1QQUNLQUdFQ09ORklHW3Byb2dyYW1zXSA9ICItREVOQUJMRV9QUk9HUkFNUz1PTiwtREVOQUJMRV9QUk9HUkFNUz1PRkYiCi0KLUVYVFJBX09FQ01BS0UgPSAiLURFTkFCTEVfVEVTVElORz1PRkYgLURMSUJfSU5TVEFMTF9ESVI6U1RSSU5HPSR7bGliZGlyfSIKLQotUFJPVklERVMgKz0gInBvbGFyc3NsIgotUlBST1ZJREVTXyR7UE59ID0gInBvbGFyc3NsIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tcHJvZ3JhbXMiCi1GSUxFU18ke1BOfS1wcm9ncmFtcyA9ICIke2JpbmRpcn0vIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21iZWR0bHMvbWJlZHRsc18yLjE2LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbWJlZHRscy9tYmVkdGxzXzIuMTYuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmFkMzk3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21iZWR0bHMvbWJlZHRsc18yLjE2LjYuYmIKQEAgLTAsMCArMSw0MyBAQAorU1VNTUFSWSA9ICJMaWdodHdlaWdodCBjcnlwdG8gYW5kIFNTTC9UTFMgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIm1iZWR0bHMgaXMgYSBsZWFuIG9wZW4gc291cmNlIGNyeXB0byBsaWJyYXJ5ICAgICAgICAgIFwKK2ZvciBwcm92aWRpbmcgU1NMIGFuZCBUTFMgc3VwcG9ydCBpbiB5b3VyIHByb2dyYW1zLiBJdCBvZmZlcnMgICAgICAgIFwKK2FuIGludHVpdGl2ZSBBUEkgYW5kIGRvY3VtZW50ZWQgaGVhZGVyIGZpbGVzLCBzbyB5b3UgY2FuIGFjdHVhbGx5ICAgIFwKK3VuZGVyc3RhbmQgd2hhdCB0aGUgY29kZSBkb2VzLiBJdCBmZWF0dXJlczogICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAtIFN5bW1ldHJpYyBhbGdvcml0aG1zLCBsaWtlIEFFUywgQmxvd2Zpc2gsIFRyaXBsZS1ERVMsIERFUywgQVJDNCwgIFwKKyAgIENhbWVsbGlhIGFuZCBYVEVBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAtIEhhc2ggYWxnb3JpdGhtcywgbGlrZSBTSEEtMSwgU0hBLTIsIFJJUEVNRC0xNjAgYW5kIE1ENSAgICAgICAgICAgIFwKKyAtIEVudHJvcHkgcG9vbCBhbmQgcmFuZG9tIGdlbmVyYXRvcnMsIGxpa2UgQ1RSLURSQkcgYW5kIEhNQUMtRFJCRyAgIFwKKyAtIFB1YmxpYyBrZXkgYWxnb3JpdGhtcywgbGlrZSBSU0EsIEVsbGlwdGljIEN1cnZlcywgRGlmZmllLUhlbGxtYW4sIFwKKyAgIEVDRFNBIGFuZCBFQ0RIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAtIFNTTCB2MyBhbmQgVExTIDEuMCwgMS4xIGFuZCAxLjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAtIEFic3RyYWN0aW9uIGxheWVycyBmb3IgY2lwaGVycywgaGFzaGVzLCBwdWJsaWMga2V5IG9wZXJhdGlvbnMsICAgIFwKKyAgIHBsYXRmb3JtIGFic3RyYWN0aW9uIGFuZCB0aHJlYWRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly90bHMubWJlZC5vcmcvIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zMDJkNTBhNjM2OWY1ZjIyZWZkYjY3NGRiOTA4MTY3YSIKKworU0VDVElPTiA9ICJsaWJzIgorCitTUkNfVVJJID0gImh0dHBzOi8vdGxzLm1iZWQub3JnL2Rvd25sb2FkL21iZWR0bHMtJHtQVn0tYXBhY2hlLnRneiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxZjYyOWE0M2MxNjZkZTJlY2E4MDhmM2UzMGFhOTYxZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2NjQ1NWUyM2E2MTkwYTMwMTQyY2RjMTExM2Y3NDE4MTU4ODM5MzMxYTlkOGU2YjA3Nzg2MzFkMDc3MjgxNzcwIgorCitpbmhlcml0IGNtYWtlCisKK1BBQ0tBR0VDT05GSUcgPz89ICJzaGFyZWQtbGlicyBwcm9ncmFtcyIKK1BBQ0tBR0VDT05GSUdbc2hhcmVkLWxpYnNdID0gIi1EVVNFX1NIQVJFRF9NQkVEVExTX0xJQlJBUlk9T04sLVVTRV9TSEFSRURfTUJFRFRMU19MSUJSQVJZPU9GRiIKK1BBQ0tBR0VDT05GSUdbcHJvZ3JhbXNdID0gIi1ERU5BQkxFX1BST0dSQU1TPU9OLC1ERU5BQkxFX1BST0dSQU1TPU9GRiIKKworRVhUUkFfT0VDTUFLRSA9ICItREVOQUJMRV9URVNUSU5HPU9GRiAtRExJQl9JTlNUQUxMX0RJUjpTVFJJTkc9JHtsaWJkaXJ9IgorCitQUk9WSURFUyArPSAicG9sYXJzc2wiCitSUFJPVklERVNfJHtQTn0gPSAicG9sYXJzc2wiCisKK1BBQ0tBR0VTID0rICIke1BOfS1wcm9ncmFtcyIKK0ZJTEVTXyR7UE59LXByb2dyYW1zID0gIiR7YmluZGlyfS8iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9taW5pdXBucGQvbWluaXVwbnBkXzIuMS4yMDE5MTAwNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9taW5pdXBucGQvbWluaXVwbnBkXzIuMS4yMDE5MTAwNi5iYgppbmRleCA4MWJmZTY2Li5hNjMwZDI3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbWluaXVwbnBkL21pbml1cG5wZF8yLjEuMjAxOTEwMDYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21pbml1cG5wZC9taW5pdXBucGRfMi4xLjIwMTkxMDA2LmJiCkBAIC0zNyw2ICszNyw3IEBACiAgICAgaW5zdGFsbCAke1N9L25ldGZpbHRlci9pcHRhYmxlc19pbml0LnNoICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0KICAgICBpbnN0YWxsICR7U30vbmV0ZmlsdGVyL2lwdGFibGVzX3JlbW92ZWFsbC5zaCAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59CiAgICAgaW5zdGFsbCAke1N9L25ldGZpbHRlci9pcDZ0YWJsZXNfaW5pdC5zaCAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59CisgICAgaW5zdGFsbCAke1N9L25ldGZpbHRlci9taW5pdXBucGRfZnVuY3Rpb25zLnNoICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0KICAgICBpbnN0YWxsICR7U30vbmV0ZmlsdGVyL2lwNnRhYmxlc19yZW1vdmVhbGwuc2ggJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfQogICAgIGluc3RhbGwgLW0gMDY0NCAtYiAke1N9L21pbml1cG5wZC5jb25mICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0KICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvMTU3MS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvMTU3MS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45M2ZmNmJjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy8xNTcxLnBhdGNoCkBAIC0wLDAgKzEsMjIgQEAKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vZWNsaXBzZS9tb3NxdWl0dG8vcHVsbC8xNTcxXQorRnJvbSAzZmU1NDY4ZjFiZGNhMWJmZjFkMThjZjQzYzllMzM4ZjQxYWE5ZTMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogR2lhbmZyYW5jbyBDb3N0YW1hZ25hIDxjb3N0YW1hZ25hZ2lhbmZyYW5jb0B5YWhvby5pdD4KK0RhdGU6IFdlZCwgMjIgSmFuIDIwMjAgMTI6Mzk6NDkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIGR5bmFtaWMgc3ltYm9scyBsaW5raW5nIHdpdGggY21ha2UgdG9vCisKK1NpZ25lZC1vZmYtYnk6IEdpYW5mcmFuY28gQ29zdGFtYWduYSA8Y29zdGFtYWduYWdpYW5mcmFuY29AeWFob28uaXQ+CistLS0KKyBsaWIvQ01ha2VMaXN0cy50eHQgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCistLS0gYS9saWIvQ01ha2VMaXN0cy50eHQKKysrKyBiL2xpYi9DTWFrZUxpc3RzLnR4dAorQEAgLTg5LDYgKzg5LDggQEAKKyAJT1VUUFVUX05BTUUgbW9zcXVpdHRvCisgCVZFUlNJT04gJHtWRVJTSU9OfQorIAlTT1ZFUlNJT04gMQorKwlMSU5LX0RFUEVORFMgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2xpbmtlci52ZXJzaW9uCisrCUxJTktfRkxBR1MgIi1XbCwtLXZlcnNpb24tc2NyaXB0PSR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9saW5rZXIudmVyc2lvbiIKKyApCisgCisgaW5zdGFsbChUQVJHRVRTIGxpYm1vc3F1aXR0byBSVU5USU1FIERFU1RJTkFUSU9OICIke0NNQUtFX0lOU1RBTExfQklORElSfSIgTElCUkFSWSBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0iKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy9pbnN0YWxsLXByb3RvY29sLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy9pbnN0YWxsLXByb3RvY29sLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzOTdmYzYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzL2luc3RhbGwtcHJvdG9jb2wucGF0Y2gKQEAgLTAsMCArMSwxNCBAQAorRGVzY3JpcHRpb246IEFsc28gaW5zdGFsbCBtcXR0X3Byb3RvY29sLmgsIGFzIGlzIGRvbmUgaW4gTWFrZWZpbGUKK0F1dGhvcjogR2lhbmZyYW5jbyBDb3N0YW1hZ25hIDxsb2N1dHVzb2Zib3JnQGRlYmlhbi5vcmc+CitCdWctRGViaWFuOiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy85NTExMTYKK0ZvcndhcmRlZDogaHR0cHM6Ly9naXRodWIuY29tL2VjbGlwc2UvbW9zcXVpdHRvL3B1bGwvMTU5OQorTGFzdC1VcGRhdGU6IDIwMjAtMDItMTUKKworLS0tIGEvbGliL0NNYWtlTGlzdHMudHh0CisrKysgYi9saWIvQ01ha2VMaXN0cy50eHQKK0BAIC0xMTQsNCArMTE0LDQgQEAKKyAJaW5zdGFsbChUQVJHRVRTIGxpYm1vc3F1aXR0b19zdGF0aWMgQVJDSElWRSBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0iKQorIGVuZGlmIChXSVRIX1NUQVRJQ19MSUJSQVJJRVMpCisgCistaW5zdGFsbChGSUxFUyBtb3NxdWl0dG8uaCBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9IikKKytpbnN0YWxsKEZJTEVTIG1xdHRfcHJvdG9jb2wuaCBtb3NxdWl0dG8uaCBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9IikKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvbW9zcXVpdHRvLmluaXQgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzL21vc3F1aXR0by5pbml0CmluZGV4IDZhMGMxMjcuLjlkNTk2M2MgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvbW9zcXVpdHRvLmluaXQKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy9tb3NxdWl0dG8uaW5pdApAQCAtMzgsNyArMzgsNyBAQAogY2FzZSAiJDEiIGluCiAgICAgc3RhcnQpCiAgICAgICAgIGVjaG8gIlN0YXJ0aW5nIE1vc3F1aXR0byBtZXNzYWdlIGJyb2tlciIgIm1vc3F1aXR0byIKLSAgICAgICAgaWYgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tb2tub2RvIC0tYmFja2dyb3VuZCAgLS1tYWtlLXBpZGZpbGUgLS1waWRmaWxlICR7UElERklMRX0gLS1leGVjICR7REFFTU9OfSA7IHRoZW4KKyAgICAgICAgaWYgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tb2tub2RvIC0tYmFja2dyb3VuZCAtLW1ha2UtcGlkZmlsZSAtLXBpZGZpbGUgJHtQSURGSUxFfSAtLWV4ZWMgJHtEQUVNT059IC0tIC1jIEBTWVNDT05GRElSQC9tb3NxdWl0dG8vbW9zcXVpdHRvLmNvbmYgOyB0aGVuCiAgICAgICAgICAgICBleGl0IDAKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZXhpdCAxCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL21vc3F1aXR0b18xLjYuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vbW9zcXVpdHRvXzEuNi44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTUzM2Q4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vbW9zcXVpdHRvXzEuNi44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuIHNvdXJjZSBNUVRUIGltcGxlbWVudGF0aW9uIgotREVTQ1JJUFRJT04gPSAiTW9zcXVpdHRvIGlzIGFuIG9wZW4gc291cmNlIChFY2xpcHNlIGxpY2Vuc2VkKSBtZXNzYWdlIGJyb2tlciBcCi10aGF0IGltcGxlbWVudHMgdGhlIE1RIFRlbGVtZXRyeSBUcmFuc3BvcnQgcHJvdG9jb2wgdmVyc2lvbiAzLjEsIDMuMS4xIGFuZCBcCi01LCBwcm92aWRpbmcgYm90aCBhbiBNUVRUIGJyb2tlciBhbmQgc2V2ZXJhbCBjb21tYW5kLWxpbmUgY2xpZW50cy4gTVFUVCBcCi1wcm92aWRlcyBhIGxpZ2h0d2VpZ2h0IG1ldGhvZCBvZiBjYXJyeWluZyBvdXQgbWVzc2FnaW5nIHVzaW5nIGEgXAotcHVibGlzaC9zdWJzY3JpYmUgbW9kZWwuICIKLUhPTUVQQUdFID0gImh0dHA6Ly9tb3NxdWl0dG8ub3JnLyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJFUEwtMS4wIHwgRURMLTEuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT02MmRkYzg0NjE3OWU5MDhkYzBjOGVmZWM0YTQyZWYyMCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lZGwtdjEwO21kNT1jMDlmMTIxOTM5ZjA2M2FlYjUyMzU5NzJiZThjNzIyYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lcGwtdjEwO21kNT04ZDM4M2MzNzllOTFkMjBiYTE4YTUyYzNlN2QzYTk3OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ub3RpY2UuaHRtbDttZDU9YTAwZDZmOWFiNTQyYmU3YmFiYzJkOGI4MGQ1ZDJhNGMgXAotIgotREVQRU5EUyA9ICJ1dGhhc2giCi0KLVNSQ19VUkkgPSAiaHR0cDovL21vc3F1aXR0by5vcmcvZmlsZXMvc291cmNlL21vc3F1aXR0by0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbW9zcXVpdHRvLmluaXQgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjRhMGU1NjdjODQ1YjNlNDFiNzVlMjM3ZDIwMGVkZjgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2RmMjNjODFjYTM3ZjBlMDcwNTc0ZmU3NDQxNDQwM2NmMjUxODMwMTY0MzNkMDdhZGQ2MTM0MzY2ZmI0NWRmNiIKLQotaW5oZXJpdCBzeXN0ZW1kIHVwZGF0ZS1yYy5kIHVzZXJhZGQKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInNzbCB1dWlkIFwKLSAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUdbZG5zLXNydl0gPSAiV0lUSF9TUlY9eWVzLFdJVEhfU1JWPW5vLGMtYXJlcyIKLVBBQ0tBR0VDT05GSUdbc3NsXSA9ICJXSVRIX1RMUz15ZXMgV0lUSF9UTFNfUFNLPXllcyxXSVRIX1RMUz1ubyBXSVRIX1RMU19QU0s9bm8sb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbdXVpZF0gPSAiV0lUSF9VVUlEPXllcyxXSVRIX1VVSUQ9bm8sdXRpbC1saW51eCIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiV0lUSF9TWVNURU1EPXllcyxXSVRIX1NZU1RFTUQ9bm8sc3lzdGVtZCIKLVBBQ0tBR0VDT05GSUdbd2Vic29ja2V0c10gPSAiV0lUSF9XRUJTT0NLRVRTPXllcyxXSVRIX1dFQlNPQ0tFVFM9bm8sbGlid2Vic29ja2V0cyIKLQotRVhUUkFfT0VNQUtFID0gIiBcCi0gICAgcHJlZml4PSR7cHJlZml4fSBcCi0gICAgbWFuZGlyPSR7bWFuZGlyfSBcCi0gICAgbG9jYWxlZGlyPSR7bG9jYWxlZGlyfSBcCi0gICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCi0gICAgU1RSSVA9L2Jpbi90cnVlIFwKLSAgICBXSVRIX0RPQ1M9bm8gXAotICAgIFdJVEhfQlVORExFRF9ERVBTPW5vIFwKLSIKLQotZXhwb3J0IExJQl9TVUZGSVggPSAiJHtAZC5nZXRWYXIoJ2Jhc2VsaWInKS5yZXBsYWNlKCdsaWInLCAnJyl9IgotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9zZXJ2aWNlL3N5c3RlbWQvbW9zcXVpdHRvLnNlcnZpY2Uubm90aWZ5ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL21vc3F1aXR0by5zZXJ2aWNlCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L21vc3F1aXR0bwotICAgIGluc3RhbGwgLW0gMDY0NCAke0R9JHtzeXNjb25mZGlyfS9tb3NxdWl0dG8vbW9zcXVpdHRvLmNvbmYuZXhhbXBsZSBcCi0gICAgICAgICAgICAgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L21vc3F1aXR0by9tb3NxdWl0dG8uY29uZgotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbW9zcXVpdHRvLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL21vc3F1aXR0bwotICAgIHNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0gICAgICAgIC1lICdzLEBCQVNFX1NCSU5ESVJALCR7YmFzZV9zYmluZGlyfSxnJyBcCi0gICAgICAgIC1lICdzLEBMT0NBTFNUQVRFRElSQCwke2xvY2Fsc3RhdGVkaXJ9LGcnIFwKLSAgICAgICAgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAotICAgICAgICAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbW9zcXVpdHRvCi19Ci0KLVBBQ0tBR0VTICs9ICJsaWJtb3NxdWl0dG8xIGxpYm1vc3F1aXR0b3BwMSAke1BOfS1jbGllbnRzIgotCi1QQUNLQUdFX0JFRk9SRV9QTiA9ICIke1BOfS1leGFtcGxlcyIKLQotRklMRVNfJHtQTn0gPSAiJHtzYmluZGlyfS9tb3NxdWl0dG8gXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L21vc3F1aXR0b19wYXNzd2QgXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tb3NxdWl0dG8gXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQgXAotICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tb3NxdWl0dG8uc2VydmljZSBcCi0iCi0KLUNPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9tb3NxdWl0dG8vbW9zcXVpdHRvLmNvbmYiCi0KLUZJTEVTX2xpYm1vc3F1aXR0bzEgPSAiJHtsaWJkaXJ9L2xpYm1vc3F1aXR0by5zby4xIgotCi1GSUxFU19saWJtb3NxdWl0dG9wcDEgPSAiJHtsaWJkaXJ9L2xpYm1vc3F1aXR0b3BwLnNvLjEiCi0KLUZJTEVTXyR7UE59LWNsaWVudHMgPSAiJHtiaW5kaXJ9L21vc3F1aXR0b19wdWIgXAotICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbW9zcXVpdHRvX3N1YiBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9tb3NxdWl0dG9fcnIgXAotIgotCi1GSUxFU18ke1BOfS1leGFtcGxlcyA9ICIke3N5c2NvbmZkaXJ9L21vc3F1aXR0by8qLmV4YW1wbGUiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJtb3NxdWl0dG8uc2VydmljZSIKLQotSU5JVFNDUklQVF9OQU1FID0gIm1vc3F1aXR0byIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDMwIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0tc2hlbGwgL2Jpbi9mYWxzZSBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBtb3NxdWl0dG8iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL21vc3F1aXR0b18xLjYuOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vbW9zcXVpdHRvXzEuNi45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNDNhYWUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL21vc3F1aXR0b18xLjYuOS5iYgpAQCAtMCwwICsxLDg3IEBACitTVU1NQVJZID0gIk9wZW4gc291cmNlIE1RVFQgaW1wbGVtZW50YXRpb24iCitERVNDUklQVElPTiA9ICJNb3NxdWl0dG8gaXMgYW4gb3BlbiBzb3VyY2UgKEVjbGlwc2UgbGljZW5zZWQpIG1lc3NhZ2UgYnJva2VyIFwKK3RoYXQgaW1wbGVtZW50cyB0aGUgTVEgVGVsZW1ldHJ5IFRyYW5zcG9ydCBwcm90b2NvbCB2ZXJzaW9uIDMuMSwgMy4xLjEgYW5kIFwKKzUsIHByb3ZpZGluZyBib3RoIGFuIE1RVFQgYnJva2VyIGFuZCBzZXZlcmFsIGNvbW1hbmQtbGluZSBjbGllbnRzLiBNUVRUIFwKK3Byb3ZpZGVzIGEgbGlnaHR3ZWlnaHQgbWV0aG9kIG9mIGNhcnJ5aW5nIG91dCBtZXNzYWdpbmcgdXNpbmcgYSBcCitwdWJsaXNoL3N1YnNjcmliZSBtb2RlbC4gIgorSE9NRVBBR0UgPSAiaHR0cDovL21vc3F1aXR0by5vcmcvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkVQTC0xLjAgfCBFREwtMS4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTYyZGRjODQ2MTc5ZTkwOGRjMGM4ZWZlYzRhNDJlZjIwIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2VkbC12MTA7bWQ1PWMwOWYxMjE5MzlmMDYzYWViNTIzNTk3MmJlOGM3MjJjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2VwbC12MTA7bWQ1PThkMzgzYzM3OWU5MWQyMGJhMThhNTJjM2U3ZDNhOTc5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL25vdGljZS5odG1sO21kNT1hMDBkNmY5YWI1NDJiZTdiYWJjMmQ4YjgwZDVkMmE0YyBcCisiCitERVBFTkRTID0gInV0aGFzaCIKKworU1JDX1VSSSA9ICJodHRwOi8vbW9zcXVpdHRvLm9yZy9maWxlcy9zb3VyY2UvbW9zcXVpdHRvLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9tb3NxdWl0dG8uaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly8xNTcxLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2luc3RhbGwtcHJvdG9jb2wucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTJmNTA3OGVjMThhYWY2MjNiMTRkZmIxMjFmZDUzNGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDEyOTc5YjJkYjBhMDAyMGJkMDJmYTY0ZjBhMGRlOWU3MDAwYjg0NDYyNTg2ZTMyYjY3ZjI5YmIxZjZjMTY4NSIKKworaW5oZXJpdCBzeXN0ZW1kIHVwZGF0ZS1yYy5kIHVzZXJhZGQgY21ha2UKKworUEFDS0FHRUNPTkZJRyA/Pz0gInNzbCBkbHQgd2Vic29ja2V0cyBcCisgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIgorCitQQUNLQUdFQ09ORklHW2Rucy1zcnZdID0gIi1EV0lUSF9TUlY9T04sLURXSVRIX1NSVj1PRkYsYy1hcmVzIgorUEFDS0FHRUNPTkZJR1tzc2xdID0gIi1EV0lUSF9UTFM9T04gLURXSVRIX1RMU19QU0s9T04gLURXSVRIX0VDPU9OLC1EV0lUSF9UTFM9T0ZGIC1EV0lUSF9UTFNfUFNLPU9GRiAtRFdJVEhfRUNfT0ZGLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi1EV0lUSF9TWVNURU1EPU9OLC1EV0lUSF9TWVNURU1EPU9GRixzeXN0ZW1kIgorUEFDS0FHRUNPTkZJR1t3ZWJzb2NrZXRzXSA9ICItRFdJVEhfV0VCU09DS0VUUz1PTiwtRFdJVEhfV0VCU09DS0VUUz1PRkYsbGlid2Vic29ja2V0cyIKK1BBQ0tBR0VDT05GSUdbZGx0XSA9ICItRFdJVEhfRExUPU9OLC1EV0lUSF9ETFQ9T0ZGLGRsdC1kYWVtb24iCisKK0VYVFJBX09FQ01BS0UgPSAiIFwKKyAgICAtRFdJVEhfQlVORExFRF9ERVBTPU9GRiBcCisgICAgLURXSVRIX0FETlM9T04gXAorIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3NlcnZpY2Uvc3lzdGVtZC9tb3NxdWl0dG8uc2VydmljZS5ub3RpZnkgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbW9zcXVpdHRvLnNlcnZpY2UKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLworICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L21vc3F1aXR0by5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9tb3NxdWl0dG8KKyAgICBzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorICAgICAgICAtZSAncyxAQkFTRV9TQklORElSQCwke2Jhc2Vfc2JpbmRpcn0sZycgXAorICAgICAgICAtZSAncyxATE9DQUxTVEFURURJUkAsJHtsb2NhbHN0YXRlZGlyfSxnJyBcCisgICAgICAgIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKKyAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL21vc3F1aXR0bworfQorCitQQUNLQUdFUyArPSAibGlibW9zcXVpdHRvMSBsaWJtb3NxdWl0dG9wcDEgJHtQTn0tY2xpZW50cyIKKworUEFDS0FHRV9CRUZPUkVfUE4gPSAiJHtQTn0tZXhhbXBsZXMiCisKK0ZJTEVTXyR7UE59ID0gIiR7c2JpbmRpcn0vbW9zcXVpdHRvIFwKKyAgICAgICAgICAgICAgICR7YmluZGlyfS9tb3NxdWl0dG9fcGFzc3dkIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vbW9zcXVpdHRvIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kIFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbW9zcXVpdHRvLnNlcnZpY2UgXAorIgorCitDT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vbW9zcXVpdHRvL21vc3F1aXR0by5jb25mIgorCitGSUxFU19saWJtb3NxdWl0dG8xID0gIiR7bGliZGlyfS9saWJtb3NxdWl0dG8uc28uKiIKKworRklMRVNfbGlibW9zcXVpdHRvcHAxID0gIiR7bGliZGlyfS9saWJtb3NxdWl0dG9wcC5zby4qIgorCitGSUxFU18ke1BOfS1jbGllbnRzID0gIiR7YmluZGlyfS9tb3NxdWl0dG9fcHViIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L21vc3F1aXR0b19zdWIgXAorICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbW9zcXVpdHRvX3JyIFwKKyIKKworRklMRVNfJHtQTn0tZXhhbXBsZXMgPSAiJHtzeXNjb25mZGlyfS9tb3NxdWl0dG8vKi5leGFtcGxlIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibW9zcXVpdHRvLnNlcnZpY2UiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJtb3NxdWl0dG8iCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyAzMCIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLXNoZWxsIC9iaW4vZmFsc2UgXAorICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgbW9zcXVpdHRvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25hbm9tc2cvbm5nXzEuMi41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25hbm9tc2cvbm5nXzEuMi41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3YmUyN2YKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmFub21zZy9ubmdfMS4yLjUuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJuYW5vbXNnLW5leHQtZ2VuZXJhdGlvbiAtLSBsaWdodC13ZWlnaHQgYnJva2VybGVzcyBtZXNzYWdpbmciCitERVNDUklQVElPTiA9ICJOTkcsIGxpa2UgaXRzIHByZWRlY2Vzc29ycyBuYW5vbXNnIChhbmQgdG8gc29tZSBleHRlbnQgWmVyb01RKSwgaXMgYSBsaWdodHdlaWdodCwgYnJva2VyLWxlc3MgbGlicmFyeSwgb2ZmZXJpbmcgYSBzaW1wbGUgQVBJIHRvIHNvbHZlIGNvbW1vbiByZWN1cnJpbmcgbWVzc2FnaW5nIHByb2JsZW1zLCBzdWNoIGFzIHB1Ymxpc2gvc3Vic2NyaWJlLCBSUEMtc3R5bGUgcmVxdWVzdC9yZXBseSwgb3Igc2VydmljZSBkaXNjb3ZlcnkuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL25hbm9tc2cvbm5nIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9YTE5YjE1YmU2ZTg0NGIzOWE1NGRlMmVmNjY1YmQ2ZGUiCisKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JraW5nIgorCitTUkNSRVYgPSAiNTNhZTFhNWFiMzdmZGZjOWFkNWMyMzZkZjNlYWY0ZGQ2M2YwZmVlOSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL25hbm9tc2cvbm5nLmdpdDticmFuY2g9djEuMi54IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZworCitFWFRSQV9PRUNNQUtFID0gIi1EQlVJTERfU0hBUkVEX0xJQlM9T04iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCisKK1BBQ0tBR0VDT05GSUdbbWJlZHRsc10gPSAiLUROTkdfRU5BQkxFX1RMUz1PTiwtRE5OR19FTkFCTEVfVExTPU9GRixtYmVkdGxzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHBsYW4vbmV0cGxhbl8wLjk4LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHBsYW4vbmV0cGxhbl8wLjk4LmJiCmluZGV4IDg2MDc2MmMuLmRiMDI5YTQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXRwbGFuL25ldHBsYW5fMC45OC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0cGxhbi9uZXRwbGFuXzAuOTguYmIKQEAgLTE5LDcgKzE5LDcgQEAKICIKIAogREVQRU5EUyA9ICJnbGliLTIuMCBsaWJ5YW1sIgotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMyBweXRob24zLWNvcmUgcHl0aG9uMy1weXlhbWwgcHl0aG9uMy1uZXRpZmFjZXMgcHl0aG9uMy1ub3NlIHB5dGhvbjMtY292ZXJhZ2UgcHl0aG9uMy1weWNvZGVzdHlsZSBweXRob24tcHlmbGFrZXMgdXRpbC1saW51eC1saWJ1dWlkIgorUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMyBweXRob24zLWNvcmUgcHl0aG9uMy1weXlhbWwgcHl0aG9uMy1uZXRpZmFjZXMgcHl0aG9uMy1ub3NlIHB5dGhvbjMtY292ZXJhZ2UgcHl0aG9uMy1weWNvZGVzdHlsZSBweXRob24zLXB5Zmxha2VzIHV0aWwtbGludXgtbGlidXVpZCIKIAogaW5oZXJpdCBwa2djb25maWcgc3lzdGVtZAogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXItb3BlbnZwbl8xLjguMTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXItb3BlbnZwbl8xLjguMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2ZGI3NzAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLW9wZW52cG5fMS44LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotU1VNTUFSWSA9ICJOZXR3b3JrTWFuYWdlci1vcGVudnBuLXBsdWdpbiIKLVNFQ1RJT04gPSAibmV0L21pc2MiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTAwZDVhNTk5YmVhZDcwZGRjZDcwZGNkNzNmMmUyOWMiCi0KLURFUEVORFMgPSAiZGJ1cyBkYnVzLWdsaWIgbmV0d29ya21hbmFnZXIgb3BlbnZwbiBpbnRsdG9vbC1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIgotCi1pbmhlcml0IGdub21lYmFzZSB1c2VyYWRkIGdldHRleHQgc3lzdGVtZAotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9OZXR3b3JrTWFuYWdlci1vcGVudnBuLyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vTmV0d29ya01hbmFnZXItb3BlbnZwbi0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZGJiYzEwMzc2MWZhY2M3YTYxYTFjMDBkZmQ1NTIzMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZjNjYzg2YmE4NDhkMjFiNGFjODA3YTA5ZDU3NWRlMTEzMzViYTRkZjhjZTZmZGIwODkyMTJlNzdjMjIzMWVmIgotCi1TID0gIiR7V09SS0RJUn0vTmV0d29ya01hbmFnZXItb3BlbnZwbi0ke1BWfSIKLQotUEFDS0FHRUNPTkZJR1tnbm9tZV0gPSAiLS13aXRoLWdub21lLC0td2l0aG91dC1nbm9tZSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIHJtIC1yZiAke0R9JHtsaWJkaXJ9L05ldHdvcmtNYW5hZ2VyLyoubGEKLX0KLQotIyBDcmVhdGUgdXNlciBhbmQgZ3JvdXAgbm0tb3BlbnZwbiB0aGF0IGFyZSBuZWVkZWQgc2luY2UgdmVyc2lvbiAxLjAuNgotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gbm0tb3BlbnZwbiIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtsaWJkaXJ9L05ldHdvcmtNYW5hZ2VyLyouc28gXAotICAgICR7bm9uYXJjaF9saWJkaXJ9L05ldHdvcmtNYW5hZ2VyL1ZQTi9ubS1vcGVudnBuLXNlcnZpY2UubmFtZSBcCi0iCi0KLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiIFwKLSAgICAke2xpYmRpcn0vTmV0d29ya01hbmFnZXIvKi5hIFwKLSIKLQotUkRFUEVORFNfJHtQTn0gPSAiIFwKLSAgICBuZXR3b3JrbWFuYWdlciBcCi0gICAgb3BlbnZwbiBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXItb3BlbnZwbl8xLjguMTIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXItb3BlbnZwbl8xLjguMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ1NWEwZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci1vcGVudnBuXzEuOC4xMi5iYgpAQCAtMCwwICsxLDUyIEBACitTVU1NQVJZID0gIk5ldHdvcmtNYW5hZ2VyLW9wZW52cG4tcGx1Z2luIgorU0VDVElPTiA9ICJuZXQvbWlzYyIKKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMDBkNWE1OTliZWFkNzBkZGNkNzBkY2Q3M2YyZTI5YyIKKworREVQRU5EUyA9ICJkYnVzIGRidXMtZ2xpYiBuZXR3b3JrbWFuYWdlciBvcGVudnBuIGludGx0b29sLW5hdGl2ZSBnbGliLTIuMC1uYXRpdmUiCisKK2luaGVyaXQgZ25vbWViYXNlIHVzZXJhZGQgZ2V0dGV4dCBzeXN0ZW1kCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L05ldHdvcmtNYW5hZ2VyLW9wZW52cG4vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS9OZXR3b3JrTWFuYWdlci1vcGVudnBuLSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gImU4YjEyMTAwMTFlY2UxOGQwMjc4MzEwZmJmZjQ1YWY1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBlZmRhODg3OGFhZjBlNmViNTA3MWEwNTNhZWE1ZDdmOWQ0MmFhYzA5N2IzZmY4OWU3Y2JjOTIzM2Y4MTUzMTgiCisKK1MgPSAiJHtXT1JLRElSfS9OZXR3b3JrTWFuYWdlci1vcGVudnBuLSR7UFZ9IgorCisjIG1ldGEtZ25vbWUgaW4gbGF5ZXJzIGlzIHJlcXVpcmVkIHVzaW5nIGdub21lOgorUEFDS0FHRUNPTkZJR1tnbm9tZV0gPSAiLS13aXRoLWdub21lLC0td2l0aG91dC1nbm9tZSxndGsrMyBsaWJubWEgbGlic2VjcmV0IgorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworICAgICMgbmV0d29yay1tYW5hZ2VyLW9wZW52cG4ubWV0YWluZm8ueG1sIGlzIGNyZWF0ZWQgaW4gc291cmNlIGZvbGRlciBidXQKKyAgICAjIGNvbXBpbGUgZXhwZWN0cyBpdCBpbiBidWlsZCBmb2xkZXIuIEFzIGxvbmcgYXMgbm9ib2R5IGNvbWVzIHVwIHdpdGggYQorICAgICMgYmV0dGVyIHNvbHV0aW9uIGp1c3Qgc3VwcG9ydCBidWlsZDoKKyAgICBpZiBbIC1lICR7U30vYXBwZGF0YS9uZXR3b3JrLW1hbmFnZXItb3BlbnZwbi5tZXRhaW5mby54bWwgXTsgdGhlbgorICAgICAgICBta2RpciAtcCAke0J9L2FwcGRhdGEKKyAgICAgICAgY3AgLWYgJHtTfS9hcHBkYXRhL25ldHdvcmstbWFuYWdlci1vcGVudnBuLm1ldGFpbmZvLnhtbCAke0J9L2FwcGRhdGEvCisgICAgZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIHJtIC1yZiAke0R9JHtsaWJkaXJ9L05ldHdvcmtNYW5hZ2VyLyoubGEKK30KKworIyBDcmVhdGUgdXNlciBhbmQgZ3JvdXAgbm0tb3BlbnZwbiB0aGF0IGFyZSBuZWVkZWQgc2luY2UgdmVyc2lvbiAxLjAuNgorVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gbm0tb3BlbnZwbiIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci8qLnNvIFwKKyAgICAke25vbmFyY2hfbGliZGlyfS9OZXR3b3JrTWFuYWdlci9WUE4vbm0tb3BlbnZwbi1zZXJ2aWNlLm5hbWUgXAorIgorCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiBcCisgICAgJHtsaWJkaXJ9L05ldHdvcmtNYW5hZ2VyLyouYSBcCisiCisKK1JERVBFTkRTXyR7UE59ID0gIiBcCisgICAgbmV0d29ya21hbmFnZXIgXAorICAgIG9wZW52cG4gXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtRml4ZWQtY29uZmlndXJlLmFjLUZpeC1wa2djb25maWctc3lzcm9vdC1sb2NhdGlvbnMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1GaXhlZC1jb25maWd1cmUuYWMtRml4LXBrZ2NvbmZpZy1zeXNyb290LWxvY2F0aW9ucy5wYXRjaAppbmRleCAzMDJjMDI5Li4xOWM4Yzc0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1GaXhlZC1jb25maWd1cmUuYWMtRml4LXBrZ2NvbmZpZy1zeXNyb290LWxvY2F0aW9ucy5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1GaXhlZC1jb25maWd1cmUuYWMtRml4LXBrZ2NvbmZpZy1zeXNyb290LWxvY2F0aW9ucy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gM2RjM2Q4ZTczYmM0MzBlYTRlOTNlMzNmN2IyYTRiM2UwZmYxNzVhZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOWJjZjRjODFhNTU5ZDFlN2RlYWM0N2IyZTUxMGQ3ZjFlNTgzN2EwMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFBhYmxvIFNhYXZlZHJhIDxwc2FhdmVkcmFAaWdhbGlhLmNvbT4KIERhdGU6IFR1ZSwgMTMgTWFyIDIwMTggMTc6MzY6MjAgKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gRml4ZWQgY29uZmlndXJlLmFjOiBGaXggcGtnY29uZmlnIHN5c3Jvb3QgbG9jYXRpb25zCkBAIC04LDEwICs4LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDk2N2VhYzAuLmI5MTQyMTkgMTAwNjQ0CitpbmRleCA2NWNlZmZiLi5hZDRiMGZjIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC01OTIsNyArNTkyLDcgQEAgaWYgdGVzdCAiJGhhdmVfamFuc3NvbiIgPSAieWVzIjsgdGhlbgorQEAgLTU2MSw3ICs1NjEsNyBAQCBpZiB0ZXN0ICIkaGF2ZV9qYW5zc29uIiA9ICJ5ZXMiOyB0aGVuCiAgCUFDX0RFRklORShXSVRIX0pBTlNTT04sIDEsIFtEZWZpbmUgaWYgSkFOU1NPTiBpcyBlbmFibGVkXSkKICAKICAJQUNfQ0hFQ0tfVE9PTFMoUkVBREVMRiwgW2V1LXJlYWRlbGYgcmVhZGVsZl0pCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMi1Eby1ub3QtY3JlYXRlLXNldHRpbmdzLXNldHRpbmdzLXByb3BlcnR5LWRvY3VtZW50YXRpLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDItRG8tbm90LWNyZWF0ZS1zZXR0aW5ncy1zZXR0aW5ncy1wcm9wZXJ0eS1kb2N1bWVudGF0aS5wYXRjaAppbmRleCA1NTgxZGQzLi40NDY2MzdiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMi1Eby1ub3QtY3JlYXRlLXNldHRpbmdzLXNldHRpbmdzLXByb3BlcnR5LWRvY3VtZW50YXRpLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAyLURvLW5vdC1jcmVhdGUtc2V0dGluZ3Mtc2V0dGluZ3MtcHJvcGVydHktZG9jdW1lbnRhdGkucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDRmMDAwYTRhMTk5NzVkNmFiYTcxNDI3ZTY5M2NkMWVkMDgwYWJkYTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDllYWI5NjM1MWE3MjZlOWNlNmExNWQxNThmNzQzZTM1ZDczYTg5MDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgogRGF0ZTogVGh1LCAyMiBNYXIgMjAxOCAxMTowODozMCArMDEwMAogU3ViamVjdDogW1BBVENIXSBEbyBub3QgY3JlYXRlIHNldHRpbmdzIHNldHRpbmdzL3Byb3BlcnR5IGRvY3VtZW50YXRpb24KQEAgLTYsMjMgKzYsMjkgQEAKIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAogCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCiBJdCB3YXMgdHJpZWQgdG8gZ2V0IHRoaXMgd29yayBidXQgZ2kgLyBHaXJSZXBvc2l0b3J5IGNvdWxkIG5vdCBiZSBmb3VuZCBieQogcHl0aG9uLiBBbnl3YXkgaXQgaXMgbm90IG5lY2Vzc2FyeSBmb3IgdXMgdG8gaGF2ZSB0aGUgc2V0dGluZ3MvcHJvcGVydHkgZG9jcy4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKwogLS0tCiAgTWFrZWZpbGUuYW0gIHwgMTEgLS0tLS0tLS0tLS0KICBjb25maWd1cmUuYWMgfCAgNSAtLS0tLQogIDIgZmlsZXMgY2hhbmdlZCwgMTYgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBiMTgwNDY2Li4xYWI0NjU4IDEwMDY0NAoraW5kZXggZDVjYmNmNS4uMmExODE5YSAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLmFtCiArKysgYi9NYWtlZmlsZS5hbQotQEAgLTEyOTgsOSArMTI5OCw3IEBAIEVYVFJBX0RJU1QgKz0gXAotIGlmIEhBVkVfSU5UUk9TUEVDVElPTgorQEAgLTE0NzMsOSArMTQ3Myw3IEBAIGxpYm5tL2xpYm5tLnR5cGVsaWI6IGxpYm5tL2xpYm5tLmdpcgorIElOVFJPU1BFQ1RJT05fR0lSUyArPSBsaWJubS9OTS0xLjAuZ2lyCiAgCiAgbGlibm1fbm9pbnN0X2RhdGEgPSBcCiAtCWxpYm5tL25tLXByb3BlcnR5LWRvY3MueG1sIFwKQEAgLTMxLDcgKzM3LDcgQEAKICAJbGlibm0vbm0tc2V0dGluZ3Mta2V5ZmlsZS1kb2NzLnhtbCBcCiAgCWxpYm5tL25tLXNldHRpbmdzLWlmY2ZnLXJoLWRvY3MueG1sCiAgCi1AQCAtMzkzMCwxOCArMzkyOCw5IEBAICQoY2xpZW50c19jb21tb25fbGlibm1jX2Jhc2VfbGFfT0JKRUNUUyk6ICQobGlibm1fbGliX2hfcHViX21rZW51bXMpCitAQCAtNDIzNiwxOCArNDIzNCw5IEBAICQoY2xpZW50c19jb21tb25fbGlibm1jX2Jhc2VfbGFfT0JKRUNUUyk6ICQobGlibm1fbGliX2hfcHViX21rZW51bXMpCiAgJChjbGllbnRzX2NvbW1vbl9saWJubWNfYmFzZV9sYV9PQkpFQ1RTKTogY2xpZW50cy9jb21tb24vLmRpcnN0YW1wCiAgCiAgY2xpZW50c19jb21tb25fc2V0dGluZ3NfZG9jX2ggPSBjbGllbnRzL2NvbW1vbi9zZXR0aW5ncy1kb2NzLmgKQEAgLTUxLDEwICs1NywxMCBAQAogIAkkKGNsaWVudHNfY29tbW9uX3NldHRpbmdzX2RvY19oKSBcCiAgCSQoY2xpZW50c19jb21tb25fc2V0dGluZ3NfZG9jX2gpLmluCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBiOTE0MjE5Li44NzJjMjkyIDEwMDY0NAoraW5kZXggYWQ0YjBmYy4uMDA5MjA5MiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTIxNSwxMSArMTIxNSw2IEBAIEdUS19ET0NfQ0hFQ0soMS4wKQorQEAgLTEyMDEsMTEgKzEyMDEsNiBAQCBHVEtfRE9DX0NIRUNLKDEuMCkKICAjIGNoZWNrIGlmIHdlIGNhbiBidWlsZCBzZXR0aW5nIHByb3BlcnR5IGRvY3VtZW50YXRpb24KICBidWlsZF9kb2NzPW5vCiAgaWYgdGVzdCAtbiAiJElOVFJPU1BFQ1RJT05fTUFLRUZJTEUiOyB0aGVuCkBAIC02Niw2ICs3MiwzIEBACiAgCUFDX1BBVEhfUFJPRyhQRVJMLCBwZXJsKQogIAlpZiB0ZXN0IC16ICIkUEVSTCI7IHRoZW4KICAJCUFDX01TR19FUlJPUihbLS1lbmFibGUtaW50cm9zcGVjdGlvbiByZXF1aXJlcyBwZXJsXSkKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1zeXN0ZW1kLXNwZWNpZmljLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLXN5c3RlbWQtc3BlY2lmaWMucGF0Y2gKaW5kZXggYWY2ZjkzOC4uYzIzZmMzMCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLXN5c3RlbWQtc3BlY2lmaWMucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLXN5c3RlbWQtc3BlY2lmaWMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGE4OWMyZTZkNDA2MDZmNTYzNDY3YTgzZmI5ODkzM2U5OTBlNzEzNzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGU3ZWQ5MWM0OGUxYTA3NTI3YTg2MDYzN2E3ODY1ZWI2N2NlMzRjZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgogRGF0ZTogVHVlLCAyIEFwciAyMDE5IDAxOjM0OjM1ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIG11c2wgLSBzeXN0ZW1kIHNwZWNpZmljCkBAIC0xMiw2ICsxMiw3IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKwogLS0tCiAgc2hhcmVkL3N5c3RlbWQvc3JjL2Jhc2ljL2luLWFkZHItdXRpbC5jIHwgIDEgKwogIHNoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYyB8ICA5ICsrKysrKysrKwpAQCAtMjIsMTAgKzIzLDEwIEBACiAgNiBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9pbi1hZGRyLXV0aWwuYyBiL3NoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9pbi1hZGRyLXV0aWwuYwotaW5kZXggNTg5OWY2Mi4uMGFkYjI0OCAxMDA2NDQKK2luZGV4IDkxZDY4N2MuLjgzODgzMDQgMTAwNjQ0CiAtLS0gYS9zaGFyZWQvc3lzdGVtZC9zcmMvYmFzaWMvaW4tYWRkci11dGlsLmMKICsrKyBiL3NoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9pbi1hZGRyLXV0aWwuYwotQEAgLTE0LDYgKzE0LDcgQEAKK0BAIC0xNSw2ICsxNSw3IEBACiAgI2luY2x1ZGUgImluLWFkZHItdXRpbC5oIgogICNpbmNsdWRlICJtYWNyby5oIgogICNpbmNsdWRlICJwYXJzZS11dGlsLmgiCkBAIC0zNCwxMCArMzUsMTAgQEAKICAjaW5jbHVkZSAic3RyeGNweXguaCIKICAjaW5jbHVkZSAidXRpbC5oIgogZGlmZiAtLWdpdCBhL3NoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYyBiL3NoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYwotaW5kZXggNzQzMWJlMy4uMTg5MDYwYSAxMDA2NDQKK2luZGV4IDE0NTYxNjcuLjQyZjUxYTAgMTAwNjQ0CiAtLS0gYS9zaGFyZWQvc3lzdGVtZC9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKICsrKyBiL3NoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYwotQEAgLTIxLDYgKzIxLDkgQEAKK0BAIC0xNyw2ICsxNyw5IEBACiAgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CiAgI2luY2x1ZGUgPHN5c2xvZy5oPgogICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTQ3LDcgKzQ4LDcgQEAKICAjaWYgMCAvKiBOTV9JR05PUkVEICovCiAgI2lmIEhBVkVfVkFMR1JJTkRfVkFMR1JJTkRfSAogICNpbmNsdWRlIDx2YWxncmluZC92YWxncmluZC5oPgotQEAgLTExODMsMTEgKzExODYsMTMgQEAgdm9pZCByZXNldF9jYWNoZWRfcGlkKHZvaWQpIHsKK0BAIC0xMTIzLDExICsxMTI2LDEzIEBAIHZvaWQgcmVzZXRfY2FjaGVkX3BpZCh2b2lkKSB7CiAgICAgICAgICBjYWNoZWRfcGlkID0gQ0FDSEVEX1BJRF9VTlNFVDsKICB9CiAgCkBAIC02MSw3ICs2Miw3IEBACiAgCiAgcGlkX3QgZ2V0cGlkX2NhY2hlZCh2b2lkKSB7CiAgICAgICAgICBzdGF0aWMgYm9vbCBpbnN0YWxsZWQgPSBmYWxzZTsKLUBAIC0xMjE2LDcgKzEyMjEsMTEgQEAgcGlkX3QgZ2V0cGlkX2NhY2hlZCh2b2lkKSB7CitAQCAtMTE1Niw3ICsxMTYxLDExIEBAIHBpZF90IGdldHBpZF9jYWNoZWQodm9pZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAqIG9ubHkgaGFsZi1kb2N1bWVudGVkIChnbGliYyBkb2Vzbid0IGRvY3VtZW50IGl0IGJ1dCBMU0IgZG9lcyDigJQgdGhvdWdoIG9ubHkgc3VwZXJmaWNpYWxseSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB3ZSdsbCBjaGVjayBmb3IgZXJyb3JzIG9ubHkgaW4gdGhlIG1vc3QgZ2VuZXJpYyBmYXNoaW9uIHBvc3NpYmxlLiAqLwogIApAQCAtNzQsMTAgKzc1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZWRfcGlkID0gQ0FDSEVEX1BJRF9VTlNFVDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdfcGlkOwogZGlmZiAtLWdpdCBhL3NoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5oIGIvc2hhcmVkL3N5c3RlbWQvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmgKLWluZGV4IDE1NDQzZjEuLjQ4MDcxOTggMTAwNjQ0CitpbmRleCBhMDg4NmUwLi5kYTQ3ZDE0IDEwMDY0NAogLS0tIGEvc2hhcmVkL3N5c3RlbWQvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmgKICsrKyBiL3NoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5oCi1AQCAtMTMsNiArMTMsMTIgQEAKK0BAIC0xNCw2ICsxNCwxMiBAQAogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICAjaW5jbHVkZSA8c3lzL3VuLmg+CiAgCkBAIC0xNDcsMTAgKzE0OCwxMCBAQAogICNpbmNsdWRlIDxzdGRpby5oPgogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KIGRpZmYgLS1naXQgYS9zaGFyZWQvc3lzdGVtZC9zcmMvYmFzaWMvc3RyaW5nLXV0aWwuaCBiL3NoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9zdHJpbmctdXRpbC5oCi1pbmRleCBiMjNmNGM4Li44ZjJmNmUwIDEwMDY0NAoraW5kZXggMDRjYzgyYi4uMmNmNTg5YSAxMDA2NDQKIC0tLSBhL3NoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9zdHJpbmctdXRpbC5oCiArKysgYi9zaGFyZWQvc3lzdGVtZC9zcmMvYmFzaWMvc3RyaW5nLXV0aWwuaAotQEAgLTI3LDYgKzI3LDExIEBACitAQCAtMjYsNiArMjYsMTEgQEAKICAjZGVmaW5lIHN0cmNhc2VlcShhLGIpIChzdHJjYXNlY21wKChhKSwoYikpID09IDApCiAgI2RlZmluZSBzdHJuY2FzZWVxKGEsIGIsIG4pIChzdHJuY2FzZWNtcCgoYSksIChiKSwgKG4pKSA9PSAwKQogIApAQCAtMTYyLDYgKzE2MywzIEBACiAgaW50IHN0cmNtcF9wdHIoY29uc3QgY2hhciAqYSwgY29uc3QgY2hhciAqYikgX3B1cmVfOwogIAogIHN0YXRpYyBpbmxpbmUgYm9vbCBzdHJlcV9wdHIoY29uc3QgY2hhciAqYSwgY29uc3QgY2hhciAqYikgewotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwMi1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwMi1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCmluZGV4IGUwOTczYWYuLjE5NmEzMzUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDItRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvbXVzbC8wMDAyLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDNkMTMwNzczNTY2Nzc1OGY0NDM3ODU4NTQ4MmZlNDIxZGIwODZhZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDg3N2ZiYjRlODQ4NjI5ZmY1NzM3MWI1YmRiMGQ1NjM2OWFiZTlkODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgogRGF0ZTogTW9uLCA4IEFwciAyMDE5IDIzOjEwOjQzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBGaXggYnVpbGQgd2l0aCBtdXNsCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIG11c2wKIE1JTUUtVmVyc2lvbjogMS4wCiBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKQEAgLTMyLDYgKzMyLDcgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorCiAtLS0KICBjbGllbnRzL3R1aS9ubXQtZGV2aWNlLWVudHJ5LmMgICB8IDEgLQogIGxpYm5tLWNvcmUvbm0tdXRpbHMuaCAgICAgICAgICAgIHwgNCArKysrCkBAIC00MSwxMCArNDIsMTAgQEAKICA1IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NsaWVudHMvdHVpL25tdC1kZXZpY2UtZW50cnkuYyBiL2NsaWVudHMvdHVpL25tdC1kZXZpY2UtZW50cnkuYwotaW5kZXggNDNmYmJjMS4uM2VhZTI4NiAxMDA2NDQKK2luZGV4IDRhYjU5MzIuLjkxNTI0OGMgMTAwNjQ0CiAtLS0gYS9jbGllbnRzL3R1aS9ubXQtZGV2aWNlLWVudHJ5LmMKICsrKyBiL2NsaWVudHMvdHVpL25tdC1kZXZpY2UtZW50cnkuYwotQEAgLTM5LDcgKzM5LDYgQEAKK0BAIC0yNiw3ICsyNiw2IEBACiAgI2luY2x1ZGUgIm5tdC1kZXZpY2UtZW50cnkuaCIKICAKICAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgpAQCAtNTMsMTAgKzU0LDEwIEBACiAgI2luY2x1ZGUgIm5tdHVpLmgiCiAgCiBkaWZmIC0tZ2l0IGEvbGlibm0tY29yZS9ubS11dGlscy5oIGIvbGlibm0tY29yZS9ubS11dGlscy5oCi1pbmRleCAyYjViYWJhLi5mN2FiYWI2IDEwMDY0NAoraW5kZXggNTQxOGExZS4uZjQ5MmRhNiAxMDA2NDQKIC0tLSBhL2xpYm5tLWNvcmUvbm0tdXRpbHMuaAogKysrIGIvbGlibm0tY29yZS9ubS11dGlscy5oCi1AQCAtMjUsNiArMjUsMTAgQEAKK0BAIC0xMCw2ICsxMCwxMCBAQAogICNlcnJvciAiT25seSA8TmV0d29ya01hbmFnZXIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICAjZW5kaWYKICAKQEAgLTY4LDEwICs2OSwxMCBAQAogIAogICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiBkaWZmIC0tZ2l0IGEvc2hhcmVkL25tLWRlZmF1bHQuaCBiL3NoYXJlZC9ubS1kZWZhdWx0LmgKLWluZGV4IDU0ZTk5MTYuLjI2ZTlmNGUgMTAwNjQ0CitpbmRleCBhY2U2ZWRlLi4yNTM1N2RhIDEwMDY0NAogLS0tIGEvc2hhcmVkL25tLWRlZmF1bHQuaAogKysrIGIvc2hhcmVkL25tLWRlZmF1bHQuaAotQEAgLTIxMSw2ICsyMTEsOSBAQAorQEAgLTE4Miw2ICsxODIsOSBAQAogICNlbmRpZgogIAogICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAgLTgyLDEwICs4MywxMCBAQAogIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICAKIGRpZmYgLS1naXQgYS9zcmMvZGV2aWNlcy9ubS1kZXZpY2UuYyBiL3NyYy9kZXZpY2VzL25tLWRldmljZS5jCi1pbmRleCBiZDRmYmNjLi5mNzBiMzA5IDEwMDY0NAoraW5kZXggM2JiYzk3NS4uNGU4YTNmNiAxMDA2NDQKIC0tLSBhL3NyYy9kZXZpY2VzL25tLWRldmljZS5jCiArKysgYi9zcmMvZGV2aWNlcy9ubS1kZXZpY2UuYwotQEAgLTI0LDYgKzI0LDcgQEAKK0BAIC05LDYgKzksNyBAQAogICNpbmNsdWRlICJubS1kZXZpY2UuaCIKICAKICAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgpAQCAtOTMsNyArOTQsNyBAQAogICNpbmNsdWRlIDx1bmlzdGQuaD4KICAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CiAgI2luY2x1ZGUgPHNpZ25hbC5oPgotQEAgLTMyLDcgKzMzLDYgQEAKK0BAIC0xNyw3ICsxOCw2IEBACiAgI2luY2x1ZGUgPGFycGEvaW5ldC5oPgogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlIDxsaW51eC9pZl9hZGRyLmg+CkBAIC0xMDIsMTAgKzEwMywxMCBAQAogICNpbmNsdWRlIDxsaW51eC9wa3Rfc2NoZWQuaD4KICAKIGRpZmYgLS1naXQgYS9zcmMvcGxhdGZvcm0vbm0tbGludXgtcGxhdGZvcm0uYyBiL3NyYy9wbGF0Zm9ybS9ubS1saW51eC1wbGF0Zm9ybS5jCi1pbmRleCBkNGIwMTE1Li4yMmEzYTkwIDEwMDY0NAoraW5kZXggN2FiZTRkZi4uOWY1MzE0NyAxMDA2NDQKIC0tLSBhL3NyYy9wbGF0Zm9ybS9ubS1saW51eC1wbGF0Zm9ybS5jCiArKysgYi9zcmMvcGxhdGZvcm0vbm0tbGludXgtcGxhdGZvcm0uYwotQEAgLTI4LDcgKzI4LDYgQEAKK0BAIC0xNCw3ICsxNCw2IEBACiAgI2luY2x1ZGUgPGxpYnVkZXYuaD4KICAjaW5jbHVkZSA8bGludXgvZmliX3J1bGVzLmg+CiAgI2luY2x1ZGUgPGxpbnV4L2lwLmg+CkBAIC0xMTMsNiArMTE0LDMgQEAKICAjaW5jbHVkZSA8bGludXgvaWZfYnJpZGdlLmg+CiAgI2luY2x1ZGUgPGxpbnV4L2lmX2xpbmsuaD4KICAjaW5jbHVkZSA8bGludXgvaWZfdHVuLmg+Ci0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvbXVzbC8wMDAzLUZpeC1idWlsZC13aXRoLW11c2wtZm9yLW4tZGhjcDQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvbXVzbC8wMDAzLUZpeC1idWlsZC13aXRoLW11c2wtZm9yLW4tZGhjcDQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjIyNTI4MgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDMtRml4LWJ1aWxkLXdpdGgtbXVzbC1mb3Itbi1kaGNwNC5wYXRjaApAQCAtMCwwICsxLDYxIEBACitGcm9tIGFmZjVjZGVkODg0N2YzZWVlNTlmNWNlYzIyYWZiODYzMGQ0MDFhODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBZHJpYW4gRnJlaWhvZmVyIDxhZHJpYW4uZnJlaWhvZmVyQHNpZW1lbnMuY29tPgorRGF0ZTogU2F0LCA3IE1hciAyMDIwIDE0OjIyOjM2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy80XSBGaXggYnVpbGQgd2l0aCBtdXNsIGZvciBuLWRoY3A0CisKKy0tLQorIHNoYXJlZC9uLWRoY3A0L3NyYy9uLWRoY3A0LWMtcHJvYmUuYyB8IDggKysrKysrKysKKyBzaGFyZWQvbi1kaGNwNC9zcmMvbi1kaGNwNC1wcml2YXRlLmggfCA0ICsrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NoYXJlZC9uLWRoY3A0L3NyYy9uLWRoY3A0LWMtcHJvYmUuYyBiL3NoYXJlZC9uLWRoY3A0L3NyYy9uLWRoY3A0LWMtcHJvYmUuYworaW5kZXggZTQ0NzdhNy4uNzU3MTNjOCAxMDA2NDQKKy0tLSBhL3NoYXJlZC9uLWRoY3A0L3NyYy9uLWRoY3A0LWMtcHJvYmUuYworKysrIGIvc2hhcmVkL24tZGhjcDQvc3JjL24tZGhjcDQtYy1wcm9iZS5jCitAQCAtMzYwLDggKzM2MCwxMiBAQCBzdGF0aWMgdm9pZCBuX2RoY3A0X2NsaWVudF9wcm9iZV9jb25maWdfaW5pdGlhbGl6ZV9yYW5kb21fc2VlZChORGhjcDRDbGllbnRQcm9iZQorICAgICAgICAgc2VlZDE2dlsxXSA9ICh1NjQgPj4gMTYpIF4gKHU2NCA+PiAgMCk7CisgICAgICAgICBzZWVkMTZ2WzJdID0gKHU2NCA+PiAzMikgXiAodTY0ID4+IDE2KTsKKyAKKysjaWZkZWYgX19HTElCQ19fCisgICAgICAgICByID0gc2VlZDQ4X3Ioc2VlZDE2diwgJmNvbmZpZy0+ZW50cm9weSk7CisgICAgICAgICBjX2Fzc2VydCghcik7CisrI2Vsc2UKKysgICAgICAgIG1lbWNweShjb25maWctPmVudHJvcHksIHNlZWQxNnYsIHNpemVvZiBzZWVkMTZ2KTsKKysjZW5kaWYKKyB9CisgCisgLyoqCitAQCAtMzc1LDEwICszNzksMTQgQEAgc3RhdGljIHZvaWQgbl9kaGNwNF9jbGllbnRfcHJvYmVfY29uZmlnX2luaXRpYWxpemVfcmFuZG9tX3NlZWQoTkRoY3A0Q2xpZW50UHJvYmUKKyAgKi8KKyB1aW50MzJfdCBuX2RoY3A0X2NsaWVudF9wcm9iZV9jb25maWdfZ2V0X3JhbmRvbShORGhjcDRDbGllbnRQcm9iZUNvbmZpZyAqY29uZmlnKSB7CisgICAgICAgICBsb25nIGludCByZXN1bHQ7CisrI2lmZGVmIF9fR0xJQkNfXworICAgICAgICAgaW50IHI7CisgCisgICAgICAgICByID0gbXJhbmQ0OF9yKCZjb25maWctPmVudHJvcHksICZyZXN1bHQpOworICAgICAgICAgY19hc3NlcnQoIXIpOworKyNlbHNlCisrICAgICAgICByZXN1bHQgPSBqcmFuZDQ4KGNvbmZpZy0+ZW50cm9weSk7CisrI2VuZGlmCisgCisgICAgICAgICByZXR1cm4gcmVzdWx0OworIH07CitkaWZmIC0tZ2l0IGEvc2hhcmVkL24tZGhjcDQvc3JjL24tZGhjcDQtcHJpdmF0ZS5oIGIvc2hhcmVkL24tZGhjcDQvc3JjL24tZGhjcDQtcHJpdmF0ZS5oCitpbmRleCA0MzZlZTgwLi5mZmNiNGIyIDEwMDY0NAorLS0tIGEvc2hhcmVkL24tZGhjcDQvc3JjL24tZGhjcDQtcHJpdmF0ZS5oCisrKysgYi9zaGFyZWQvbi1kaGNwNC9zcmMvbi1kaGNwNC1wcml2YXRlLmgKK0BAIC0yNjcsNyArMjY3LDExIEBAIHN0cnVjdCBORGhjcDRDbGllbnRQcm9iZUNvbmZpZyB7CisgICAgICAgICBib29sIGluZm9ybV9vbmx5OworICAgICAgICAgYm9vbCBpbml0X3JlYm9vdDsKKyAgICAgICAgIHN0cnVjdCBpbl9hZGRyIHJlcXVlc3RlZF9pcDsKKysjaWZkZWYgX19HTElCQ19fCisgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhIGVudHJvcHk7ICAgIC8qIGVudHJvcHkgcG9vbCAqLworKyNlbHNlCisrICAgICAgICB1bnNpZ25lZCBzaG9ydCBlbnRyb3B5WzNdOyAgICAgIC8qIGVudHJvcHkgcG9vbCAqLworKyNlbmRpZgorICAgICAgICAgdWludDY0X3QgbXNfc3RhcnRfZGVsYXk7ICAgICAgICAvKiBtYXggbXMgdG8gd2FpdCBiZWZvcmUgc3RhcnRpbmcgcHJvYmUgKi8KKyAgICAgICAgIE5EaGNwNENsaWVudFByb2JlT3B0aW9uICpvcHRpb25zW1VJTlQ4X01BWCArIDFdOworICAgICAgICAgaW50OF90IHJlcXVlc3RfcGFyYW1ldGVyc1tVSU5UOF9NQVggKyAxXTsKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDQtRml4LWJ1aWxkLXdpdGgtbXVzbC1zeXN0ZW1kLXNwZWNpZmljLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwNC1GaXgtYnVpbGQtd2l0aC1tdXNsLXN5c3RlbWQtc3BlY2lmaWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVhYTRkMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDQtRml4LWJ1aWxkLXdpdGgtbXVzbC1zeXN0ZW1kLXNwZWNpZmljLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gODBjN2QzMzkxNTEwOTkzY2JhMWE3NDk5YmYzM2E1YjJiMTE1MjgwZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFkcmlhbiBGcmVpaG9mZXIgPGFkcmlhbi5mcmVpaG9mZXJAc2llbWVucy5jb20+CitEYXRlOiBTYXQsIDcgTWFyIDIwMjAgMTQ6MjQ6MDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCA0LzRdIEZpeCBidWlsZCB3aXRoIG11c2wgLSBzeXN0ZW1kIHNwZWNpZmljCisKKy0tLQorIHNyYy9zeXN0ZW1kL3NyYy9saWJzeXN0ZW1kLW5ldHdvcmsvc2QtZGhjcDYtY2xpZW50LmMgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL3N5c3RlbWQvc3JjL2xpYnN5c3RlbWQtbmV0d29yay9zZC1kaGNwNi1jbGllbnQuYyBiL3NyYy9zeXN0ZW1kL3NyYy9saWJzeXN0ZW1kLW5ldHdvcmsvc2QtZGhjcDYtY2xpZW50LmMKK2luZGV4IGUxMTUwZjkuLjJjNjNiYWMgMTAwNjQ0CistLS0gYS9zcmMvc3lzdGVtZC9zcmMvbGlic3lzdGVtZC1uZXR3b3JrL3NkLWRoY3A2LWNsaWVudC5jCisrKysgYi9zcmMvc3lzdGVtZC9zcmMvbGlic3lzdGVtZC1uZXR3b3JrL3NkLWRoY3A2LWNsaWVudC5jCitAQCAtNyw3ICs3LDkgQEAKKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisrI2lmZGVmIF9fR0xJQkNfXyAgLyogbXVzbCBzdXBwbGllcyBmdWxsIHNldCBvZiB1c2Vyc3BhY2UgaGVhZGVycyAqLworICNpbmNsdWRlIDxsaW51eC9pZl9hcnAuaD4KKysjZW5kaWYKKyAjaW5jbHVkZSA8bGludXgvaWZfaW5maW5pYmFuZC5oPgorIAorICNpbmNsdWRlICJzZC1kaGNwNi1jbGllbnQuaCIKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlcl8xLjE4LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXJfMS4xOC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzUwOGM0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlcl8xLjE4LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNTEgKzAsMCBAQAotU1VNTUFSWSA9ICJOZXR3b3JrTWFuYWdlciIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvTmV0d29ya01hbmFnZXIiCi1TRUNUSU9OID0gIm5ldC9taXNjIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWNiYmZmZDU2ODIyN2FkYTUwNjY0MGZlOTUwYTQ4MjNiIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYm5tLXV0aWwvQ09QWUlORzttZDU9MWM0ZmE3NjVkNmViM2NkMmZiZDg0MzQ0YTFiODE2Y2QgXAotIgotCi1ERVBFTkRTID0gIiBcCi0gICAgaW50bHRvb2wtbmF0aXZlIFwKLSAgICBsaWJ4c2x0LW5hdGl2ZSBcCi0gICAgbGlibmwgXAotICAgIGxpYmd1ZGV2IFwKLSAgICB1dGlsLWxpbnV4IFwKLSAgICBsaWJuZHAgXAotICAgIGxpYm5ld3QgXAotICAgIGphbnNzb24gXAotICAgIGN1cmwgXAotIgotCi1pbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHVwZGF0ZS1yYy5kIHN5c3RlbWQgYmFzaC1jb21wbGV0aW9uIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgdXBkYXRlLWFsdGVybmF0aXZlcyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotU1JDX1VSSSA9ICIgXAotICAgICR7R05PTUVfTUlSUk9SfS9OZXR3b3JrTWFuYWdlci8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9L05ldHdvcmtNYW5hZ2VyLSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLyR7QlBOfS5pbml0ZCBcCi0gICAgZmlsZTovLzAwMDEtRml4ZWQtY29uZmlndXJlLmFjLUZpeC1wa2djb25maWctc3lzcm9vdC1sb2NhdGlvbnMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLURvLW5vdC1jcmVhdGUtc2V0dGluZ3Mtc2V0dGluZ3MtcHJvcGVydHktZG9jdW1lbnRhdGkucGF0Y2ggXAotIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCi0gICAgZmlsZTovL211c2wvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLXN5c3RlbWQtc3BlY2lmaWMucGF0Y2ggXAotICAgIGZpbGU6Ly9tdXNsLzAwMDItRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZmM4NjU4OGEzYWU1NGUwZDQwNmI1NjBhMzEyZDVhNWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTNiZDA3ZjY5NWI2ZDM1MjllYzZhZGJkOWExZDYzODViOTY3ZTljOGFlOTA5NDZmNTFkODg1MmIzMjBmZDA1ZSIKLQotUyA9ICIke1dPUktESVJ9L05ldHdvcmtNYW5hZ2VyLSR7UFZ9IgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtaWZjZmctcmggXAotICAgIC0tZGlzYWJsZS1tb3JlLXdhcm5pbmdzIFwKLSAgICAtLXdpdGgtaXB0YWJsZXM9JHtzYmluZGlyfS9pcHRhYmxlcyBcCi0gICAgLS13aXRoLXRlc3RzIFwKLSAgICAtLXdpdGgtbm10dWk9eWVzIFwKLSAgICAtLXdpdGgtdWRldi1kaXI9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2IFwKLSIKLQotIyBzdG9sZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL2Jsb2IvbWFzdGVyL3NyY3BrZ3MvTmV0d29ya01hbmFnZXIvdGVtcGxhdGUKLSMgYXZvaWRzOgotIyB8IC4uL05ldHdvcmtNYW5hZ2VyLTEuMTYuMC9saWJubS1jb3JlL25tLWpzb24uYzoxMDY6NTA6IGVycm9yOiAnUlRMRF9ERUVQQklORCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ1JUTERfREVGQVVMVCc/Ci1DRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAotICAgIC1EUlRMRF9ERUVQQklORD0wIFwKLSIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2xpYm5tLy5saWJzOiR7Qn0vbGlibm0tZ2xpYi8ubGliczoke0J9L2xpYm5tLXV0aWwvLmxpYnMiCi19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICJuc3MgaWZ1cGRvd24gZGhjbGllbnQgZG5zbWFzcSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQnLCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdjb25zb2xla2l0JywgJycsIGQpLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6NScsICcnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dpZmkgcG9sa2l0JywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiIFwKLSAgICAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSAtLXdpdGgtc2Vzc2lvbi10cmFja2luZz1zeXN0ZW1kLCBcCi0gICAgLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyLCBcCi0iCi1QQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLS1lbmFibGUtcG9sa2l0IC0tZW5hYmxlLXBvbGtpdC1hZ2VudCwtLWRpc2FibGUtcG9sa2l0IC0tZGlzYWJsZS1wb2xraXQtYWdlbnQscG9sa2l0IgotUEFDS0FHRUNPTkZJR1tibHVlejVdID0gIi0tZW5hYmxlLWJsdWV6NS1kdW4sLS1kaXNhYmxlLWJsdWV6NS1kdW4sYmx1ZXo1IgotIyBjb25zb2xla2l0IGlzIG5vdCBwaWNrZWQgYnkgc2hsaWJzLCBzbyBhZGQgaXQgdG8gUkRFUEVORFMgdG9vCi1QQUNLQUdFQ09ORklHW2NvbnNvbGVraXRdID0gIi0td2l0aC1zZXNzaW9uLXRyYWNraW5nPWNvbnNvbGVraXQsLGNvbnNvbGVraXQsY29uc29sZWtpdCIKLVBBQ0tBR0VDT05GSUdbbW9kZW1tYW5hZ2VyXSA9ICItLXdpdGgtbW9kZW0tbWFuYWdlci0xPXllcywtLXdpdGgtbW9kZW0tbWFuYWdlci0xPW5vLG1vZGVtbWFuYWdlciIKLVBBQ0tBR0VDT05GSUdbcHBwXSA9ICItLWVuYWJsZS1wcHAsLS1kaXNhYmxlLXBwcCxwcHAscHBwIgotIyBVc2UgZnVsbCBmZWF0dXJlZCBkaGNwIGNsaWVudCBpbnN0ZWFkIG9mIGludGVybmFsIG9uZQotUEFDS0FHRUNPTkZJR1tkaGNsaWVudF0gPSAiLS13aXRoLWRoY2xpZW50PSR7YmFzZV9zYmluZGlyfS9kaGNsaWVudCwsLGRoY3AtY2xpZW50IgotUEFDS0FHRUNPTkZJR1tkbnNtYXNxXSA9ICItLXdpdGgtZG5zbWFzcT0ke2JpbmRpcn0vZG5zbWFzcSIKLVBBQ0tBR0VDT05GSUdbbnNzXSA9ICItLXdpdGgtY3J5cHRvPW5zcywsbnNzIgotUEFDS0FHRUNPTkZJR1tnbGliXSA9ICItLXdpdGgtbGlibm0tZ2xpYiwsZGJ1cy1nbGliLW5hdGl2ZSBkYnVzLWdsaWIiCi1QQUNLQUdFQ09ORklHW3Jlc29sdmNvbmZdID0gIi0td2l0aC1yZXNvbHZjb25mPSR7YmFzZV9zYmluZGlyfS9yZXNvbHZjb25mLCwscmVzb2x2Y29uZiIKLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtY3J5cHRvPWdudXRscywsZ251dGxzIgotUEFDS0FHRUNPTkZJR1t3aWZpXSA9ICItLWVuYWJsZS13aWZpPXllcywtLWVuYWJsZS13aWZpPW5vLCx3cGEtc3VwcGxpY2FudCIKLVBBQ0tBR0VDT05GSUdbaWZ1cGRvd25dID0gIi0tZW5hYmxlLWlmdXBkb3duLC0tZGlzYWJsZS1pZnVwZG93biIKLVBBQ0tBR0VDT05GSUdbcXQ0LXgxMS1mcmVlXSA9ICItLWVuYWJsZS1xdCwtLWRpc2FibGUtcXQscXQ0LXgxMS1mcmVlIgotCi1QQUNLQUdFUyA9KyAibGlibm11dGlsIGxpYm5tZ2xpYiBsaWJubWdsaWItdnBuIFwKLSAgJHtQTn0tbm10dWkgJHtQTn0tbm10dWktZG9jIFwKLSAgJHtQTn0tYWRzbCBcCi0iCi0KLUZJTEVTX2xpYm5tdXRpbCArPSAiJHtsaWJkaXJ9L2xpYm5tLXV0aWwuc28uKiIKLUZJTEVTX2xpYm5tZ2xpYiArPSAiJHtsaWJkaXJ9L2xpYm5tLWdsaWIuc28uKiIKLUZJTEVTX2xpYm5tZ2xpYi12cG4gKz0gIiR7bGliZGlyfS9saWJubS1nbGliLXZwbi5zby4qIgotCi1GSUxFU18ke1BOfS1hZHNsID0gIiR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci8ke1BWfS9saWJubS1kZXZpY2UtcGx1Z2luLWFkc2wuc28iCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7bGliZXhlY2Rpcn0gXAotICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci8ke1BWfS8qLnNvIFwKLSAgICAke25vbmFyY2hfbGliZGlyfS9OZXR3b3JrTWFuYWdlci9WUE4gXAotICAgICR7bm9uYXJjaF9saWJkaXJ9L05ldHdvcmtNYW5hZ2VyL2NvbmYuZCBcCi0gICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCi0gICAgJHtkYXRhZGlyfS9kYnVzLTEgXAotICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi8qIFwKLSAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtIFwKLSAgICAke2xpYmRpcn0vcHBwZCBcCi0iCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJpcHRhYmxlcyBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ2Ruc21hc3EnLCBkKX0gXAotIgotUkNPTkZMSUNUU18ke1BOfSA9ICJjb25ubWFuIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiBcCi0gICAgJHtkYXRhZGlyfS9OZXR3b3JrTWFuYWdlci9nZGItY21kIFwKLSAgICAke2xpYmRpcn0vcHBwZC8qLyoubGEgXAotICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci8qLmxhIFwKLSAgICAke2xpYmRpcn0vTmV0d29ya01hbmFnZXIvJHtQVn0vKi5sYSBcCi0iCi0KLUZJTEVTXyR7UE59LW5tdHVpID0gIiBcCi0gICAgJHtiaW5kaXJ9L25tdHVpIFwKLSAgICAke2JpbmRpcn0vbm10dWktZWRpdCBcCi0gICAgJHtiaW5kaXJ9L25tdHVpLWNvbm5lY3QgXAotICAgICR7YmluZGlyfS9ubXR1aS1ob3N0bmFtZSBcCi0iCi0KLUZJTEVTXyR7UE59LW5tdHVpLWRvYyA9ICIgXAotICAgICR7bWFuZGlyfS9tYW4xL25tdHVpKiBcCi0iCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJuZXR3b3JrLW1hbmFnZXIiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc3lzdGVtZCcsICdOZXR3b3JrTWFuYWdlci5zZXJ2aWNlIE5ldHdvcmtNYW5hZ2VyLWRpc3BhdGNoZXIuc2VydmljZScsICcnLCBkKX0iCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywncmVzb2x2LWNvbmYnLCcnLGQpfSIKLUFMVEVSTkFUSVZFX1RBUkdFVFtyZXNvbHYtY29uZl0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCcke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLk5ldHdvcmtNYW5hZ2VyJywnJyxkKX0iCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcmVzb2x2LWNvbmZdID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnJHtzeXNjb25mZGlyfS9yZXNvbHYuY29uZicsJycsZCl9IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vJHtCUE59LmluaXRkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9uZXR3b3JrLW1hbmFnZXIKLQotICAgIHJtIC1yZiAke0R9L3J1biAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KLQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLSAgICAgICAgIyBGb3IgcmVhZC1vbmx5IGZpbGVzeXN0ZW0sIGRvIG5vdCBjcmVhdGUgbGlua3MgZHVyaW5nIGJvb3R1cAotICAgICAgICBsbiAtc2YgLi4vcnVuL05ldHdvcmtNYW5hZ2VyL3Jlc29sdi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLk5ldHdvcmtNYW5hZ2VyCi0KLSAgICAgICAgIyBzeXN0ZW1kIHYyMTAgYW5kIG5ld2VyIGRvIG5vdCBuZWVkIHRoaXMgcnVsZSBmaWxlCi0gICAgICAgIHJtICR7RH0vJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvODQtbm0tZHJpdmVycy5ydWxlcwotICAgIGZpCi19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXJfMS4yMi4xMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlcl8xLjIyLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzYTJiN2MKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXJfMS4yMi4xMC5iYgpAQCAtMCwwICsxLDE2NiBAQAorU1VNTUFSWSA9ICJOZXR3b3JrTWFuYWdlciIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvTmV0d29ya01hbmFnZXIiCitTRUNUSU9OID0gIm5ldC9taXNjIgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTDttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorIgorCitERVBFTkRTID0gIiBcCisgICAgaW50bHRvb2wtbmF0aXZlIFwKKyAgICBsaWJ4c2x0LW5hdGl2ZSBcCisgICAgbGlibmwgXAorICAgIGxpYmd1ZGV2IFwKKyAgICB1dGlsLWxpbnV4IFwKKyAgICBsaWJuZHAgXAorICAgIGxpYm5ld3QgXAorICAgIGphbnNzb24gXAorICAgIGN1cmwgXAorIgorCitpbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHVwZGF0ZS1yYy5kIHN5c3RlbWQgYmFzaC1jb21wbGV0aW9uIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgdXBkYXRlLWFsdGVybmF0aXZlcyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworU1JDX1VSSSA9ICIgXAorICAgICR7R05PTUVfTUlSUk9SfS9OZXR3b3JrTWFuYWdlci8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9L05ldHdvcmtNYW5hZ2VyLSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovLyR7QlBOfS5pbml0ZCBcCisgICAgZmlsZTovLzAwMDEtRml4ZWQtY29uZmlndXJlLmFjLUZpeC1wa2djb25maWctc3lzcm9vdC1sb2NhdGlvbnMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLURvLW5vdC1jcmVhdGUtc2V0dGluZ3Mtc2V0dGluZ3MtcHJvcGVydHktZG9jdW1lbnRhdGkucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCisgICAgZmlsZTovL211c2wvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLXN5c3RlbWQtc3BlY2lmaWMucGF0Y2ggXAorICAgIGZpbGU6Ly9tdXNsLzAwMDItRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCisgICAgZmlsZTovL211c2wvMDAwMy1GaXgtYnVpbGQtd2l0aC1tdXNsLWZvci1uLWRoY3A0LnBhdGNoIFwKKyAgICBmaWxlOi8vbXVzbC8wMDA0LUZpeC1idWlsZC13aXRoLW11c2wtc3lzdGVtZC1zcGVjaWZpYy5wYXRjaCBcCisiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmIyOWNjYzE1MzFiYTdlYmJhOTVhOTdmNDBjMjJiOTYzODM4ZThiNjgzMzc0NWVmZThlNmZiNzFmZDhmY2E3NyIKKworUyA9ICIke1dPUktESVJ9L05ldHdvcmtNYW5hZ2VyLSR7UFZ9IgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWRpc2FibGUtaWZjZmctcmggXAorICAgIC0tZGlzYWJsZS1tb3JlLXdhcm5pbmdzIFwKKyAgICAtLXdpdGgtaXB0YWJsZXM9JHtzYmluZGlyfS9pcHRhYmxlcyBcCisgICAgLS13aXRoLXRlc3RzIFwKKyAgICAtLXdpdGgtbm10dWk9eWVzIFwKKyAgICAtLXdpdGgtdWRldi1kaXI9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2IFwKKyIKKworIyBzdG9sZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL2Jsb2IvbWFzdGVyL3NyY3BrZ3MvTmV0d29ya01hbmFnZXIvdGVtcGxhdGUKKyMgYXZvaWRzOgorIyB8IC4uL05ldHdvcmtNYW5hZ2VyLTEuMTYuMC9saWJubS1jb3JlL25tLWpzb24uYzoxMDY6NTA6IGVycm9yOiAnUlRMRF9ERUVQQklORCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ1JUTERfREVGQVVMVCc/CitDRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAorICAgIC1EUlRMRF9ERUVQQklORD0wIFwKKyIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2xpYm5tLy5saWJzOiR7Qn0vbGlibm0tZ2xpYi8ubGliczoke0J9L2xpYm5tLXV0aWwvLmxpYnMiCit9CisKK1BBQ0tBR0VDT05GSUcgPz89ICJuc3MgaWZ1cGRvd24gZGhjbGllbnQgZG5zbWFzcSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQnLCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdjb25zb2xla2l0JywgJycsIGQpLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6NScsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dpZmkgcG9sa2l0JywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiIFwKKyAgICAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSAtLXdpdGgtc2Vzc2lvbi10cmFja2luZz1zeXN0ZW1kLCBcCisgICAgLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyLCBcCisiCitQQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLS1lbmFibGUtcG9sa2l0LC0tZGlzYWJsZS1wb2xraXQscG9sa2l0IgorUEFDS0FHRUNPTkZJR1tibHVlejVdID0gIi0tZW5hYmxlLWJsdWV6NS1kdW4sLS1kaXNhYmxlLWJsdWV6NS1kdW4sYmx1ZXo1IgorIyBjb25zb2xla2l0IGlzIG5vdCBwaWNrZWQgYnkgc2hsaWJzLCBzbyBhZGQgaXQgdG8gUkRFUEVORFMgdG9vCitQQUNLQUdFQ09ORklHW2NvbnNvbGVraXRdID0gIi0td2l0aC1zZXNzaW9uLXRyYWNraW5nPWNvbnNvbGVraXQsLGNvbnNvbGVraXQsY29uc29sZWtpdCIKK1BBQ0tBR0VDT05GSUdbbW9kZW1tYW5hZ2VyXSA9ICItLXdpdGgtbW9kZW0tbWFuYWdlci0xPXllcywtLXdpdGgtbW9kZW0tbWFuYWdlci0xPW5vLG1vZGVtbWFuYWdlciIKK1BBQ0tBR0VDT05GSUdbcHBwXSA9ICItLWVuYWJsZS1wcHAsLS1kaXNhYmxlLXBwcCxwcHAscHBwIgorIyBVc2UgZnVsbCBmZWF0dXJlZCBkaGNwIGNsaWVudCBpbnN0ZWFkIG9mIGludGVybmFsIG9uZQorUEFDS0FHRUNPTkZJR1tkaGNsaWVudF0gPSAiLS13aXRoLWRoY2xpZW50PSR7YmFzZV9zYmluZGlyfS9kaGNsaWVudCwsLGRoY3AtY2xpZW50IgorUEFDS0FHRUNPTkZJR1tkbnNtYXNxXSA9ICItLXdpdGgtZG5zbWFzcT0ke2JpbmRpcn0vZG5zbWFzcSIKK1BBQ0tBR0VDT05GSUdbbnNzXSA9ICItLXdpdGgtY3J5cHRvPW5zcywsbnNzIgorUEFDS0FHRUNPTkZJR1tyZXNvbHZjb25mXSA9ICItLXdpdGgtcmVzb2x2Y29uZj0ke2Jhc2Vfc2JpbmRpcn0vcmVzb2x2Y29uZiwsLHJlc29sdmNvbmYiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWNyeXB0bz1nbnV0bHMsLGdudXRscyIKK1BBQ0tBR0VDT05GSUdbd2lmaV0gPSAiLS1lbmFibGUtd2lmaT15ZXMsLS1lbmFibGUtd2lmaT1ubywsd3BhLXN1cHBsaWNhbnQiCitQQUNLQUdFQ09ORklHW2lmdXBkb3duXSA9ICItLWVuYWJsZS1pZnVwZG93biwtLWRpc2FibGUtaWZ1cGRvd24iCitQQUNLQUdFQ09ORklHW3F0NC14MTEtZnJlZV0gPSAiLS1lbmFibGUtcXQsLS1kaXNhYmxlLXF0LHF0NC14MTEtZnJlZSIKK1BBQ0tBR0VDT05GSUdbY2xvdWQtc2V0dXBdID0gIi0td2l0aC1ubS1jbG91ZC1zZXR1cD15ZXMsLS13aXRoLW5tLWNsb3VkLXNldHVwPW5vIgorCitQQUNLQUdFUyA9KyAiIFwKKyAgJHtQTn0tbm10dWkgJHtQTn0tbm10dWktZG9jIFwKKyAgJHtQTn0tYWRzbCAke1BOfS1jbG91ZC1zZXR1cCBcCisiCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tY2xvdWQtc2V0dXAiCisKK0ZJTEVTXyR7UE59LWFkc2wgPSAiJHtsaWJkaXJ9L05ldHdvcmtNYW5hZ2VyLyR7UFZ9L2xpYm5tLWRldmljZS1wbHVnaW4tYWRzbC5zbyIKKworRklMRVNfJHtQTn0tY2xvdWQtc2V0dXAgPSAiIFwKKyAgICAke2xpYmV4ZWNkaXJ9L25tLWNsb3VkLXNldHVwIFwKKyAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L25tLWNsb3VkLXNldHVwLnNlcnZpY2UgXAorICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbm0tY2xvdWQtc2V0dXAudGltZXIgXAorICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci9kaXNwYXRjaGVyLmQvOTAtbm0tY2xvdWQtc2V0dXAuc2ggXAorICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci9kaXNwYXRjaGVyLmQvbm8td2FpdC5kLzkwLW5tLWNsb3VkLXNldHVwLnNoIFwKKyIKK0FMTE9XX0VNUFRZXyR7UE59LWNsb3VkLXNldHVwID0gIjEiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tY2xvdWQtc2V0dXAgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnY2xvdWQtc2V0dXAnLCAnbm0tY2xvdWQtc2V0dXAuc2VydmljZSBubS1jbG91ZC1zZXR1cC50aW1lcicsICcnLCBkKX0iCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7bGliZXhlY2Rpcn0gXAorICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci8ke1BWfS8qLnNvIFwKKyAgICAke2xpYmRpcn0vTmV0d29ya01hbmFnZXIgXAorICAgICR7bm9uYXJjaF9saWJkaXJ9L05ldHdvcmtNYW5hZ2VyL2NvbmYuZCBcCisgICAgJHtub25hcmNoX2xpYmRpcn0vTmV0d29ya01hbmFnZXIvZGlzcGF0Y2hlci5kIFwKKyAgICAke25vbmFyY2hfbGliZGlyfS9OZXR3b3JrTWFuYWdlci9kaXNwYXRjaGVyLmQvcHJlLWRvd24uZCBcCisgICAgJHtub25hcmNoX2xpYmRpcn0vTmV0d29ya01hbmFnZXIvZGlzcGF0Y2hlci5kL3ByZS11cC5kIFwKKyAgICAke25vbmFyY2hfbGliZGlyfS9OZXR3b3JrTWFuYWdlci9kaXNwYXRjaGVyLmQvbm8td2FpdC5kIFwKKyAgICAke25vbmFyY2hfbGliZGlyfS9OZXR3b3JrTWFuYWdlci9WUE4gXAorICAgICR7bm9uYXJjaF9saWJkaXJ9L05ldHdvcmtNYW5hZ2VyL3N5c3RlbS1jb25uZWN0aW9ucyBcCisgICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi8qIFwKKyAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IFwKKyAgICAke2xpYmRpcn0vcHBwZCBcCisiCisKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJpcHRhYmxlcyBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ2Ruc21hc3EnLCBkKX0gXAorIgorUkNPTkZMSUNUU18ke1BOfSA9ICJjb25ubWFuIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiBcCisgICAgJHtkYXRhZGlyfS9OZXR3b3JrTWFuYWdlci9nZGItY21kIFwKKyAgICAke2xpYmRpcn0vcHBwZC8qLyoubGEgXAorICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci8qLmxhIFwKKyAgICAke2xpYmRpcn0vTmV0d29ya01hbmFnZXIvJHtQVn0vKi5sYSBcCisiCisKK0ZJTEVTXyR7UE59LW5tdHVpID0gIiBcCisgICAgJHtiaW5kaXJ9L25tdHVpIFwKKyAgICAke2JpbmRpcn0vbm10dWktZWRpdCBcCisgICAgJHtiaW5kaXJ9L25tdHVpLWNvbm5lY3QgXAorICAgICR7YmluZGlyfS9ubXR1aS1ob3N0bmFtZSBcCisiCisKK0ZJTEVTXyR7UE59LW5tdHVpLWRvYyA9ICIgXAorICAgICR7bWFuZGlyfS9tYW4xL25tdHVpKiBcCisiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJuZXR3b3JrLW1hbmFnZXIiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc3lzdGVtZCcsICdOZXR3b3JrTWFuYWdlci5zZXJ2aWNlIE5ldHdvcmtNYW5hZ2VyLWRpc3BhdGNoZXIuc2VydmljZScsICcnLCBkKX0iCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywncmVzb2x2LWNvbmYnLCcnLGQpfSIKK0FMVEVSTkFUSVZFX1RBUkdFVFtyZXNvbHYtY29uZl0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCcke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLk5ldHdvcmtNYW5hZ2VyJywnJyxkKX0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcmVzb2x2LWNvbmZdID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnJHtzeXNjb25mZGlyfS9yZXNvbHYuY29uZicsJycsZCl9IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vJHtCUE59LmluaXRkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9uZXR3b3JrLW1hbmFnZXIKKworICAgIHJtIC1yZiAke0R9L3J1biAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKyAgICAgICAgIyBGb3IgcmVhZC1vbmx5IGZpbGVzeXN0ZW0sIGRvIG5vdCBjcmVhdGUgbGlua3MgZHVyaW5nIGJvb3R1cAorICAgICAgICBsbiAtc2YgLi4vcnVuL05ldHdvcmtNYW5hZ2VyL3Jlc29sdi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLk5ldHdvcmtNYW5hZ2VyCisKKyAgICAgICAgIyBzeXN0ZW1kIHYyMTAgYW5kIG5ld2VyIGRvIG5vdCBuZWVkIHRoaXMgcnVsZSBmaWxlCisgICAgICAgIHJtICR7RH0vJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvODQtbm0tZHJpdmVycy5ydWxlcworICAgIGZpCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbmNvbm5lY3Qvb3BlbmNvbm5lY3QvMDAwMS10cm9qYW5zLXRuY2Mtd3JhcHBlci5weS1jb252ZXJ0LXRvLXB5dGhvbjMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbmNvbm5lY3Qvb3BlbmNvbm5lY3QvMDAwMS10cm9qYW5zLXRuY2Mtd3JhcHBlci5weS1jb252ZXJ0LXRvLXB5dGhvbjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjIzZWMxMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuY29ubmVjdC9vcGVuY29ubmVjdC8wMDAxLXRyb2phbnMtdG5jYy13cmFwcGVyLnB5LWNvbnZlcnQtdG8tcHl0aG9uMy5wYXRjaApAQCAtMCwwICsxLDcxIEBACitGcm9tIGRlNzhiY2FjNWUxZmQxM2RlMDM3MWM4ZTE0YjA2MmI4Nzg2YWRlNTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXggS3J1bW1lbmFjaGVyIDxtYXgua3J1bW1lbmFjaGVyQHRvcmFkZXguY29tPgorRGF0ZTogU3VuLCAyIEZlYiAyMDIwIDE1OjUzOjA1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHRyb2phbnMvdG5jYy13cmFwcGVyLnB5OiBjb252ZXJ0IHRvIHB5dGhvbjMKKworVXNlIDJ0bzMgdG8gY29udmVydCB0aGUgc2NyaXB0IHRvIHB5dGhvbjMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNYXggS3J1bW1lbmFjaGVyIDxtYXgua3J1bW1lbmFjaGVyQHRvcmFkZXguY29tPgorLS0tCisgdHJvamFucy90bmNjLXdyYXBwZXIucHkgfCAxNCArKysrKysrLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90cm9qYW5zL3RuY2Mtd3JhcHBlci5weSBiL3Ryb2phbnMvdG5jYy13cmFwcGVyLnB5CitpbmRleCAwZDQ1ODdiZi4uMWE5YTFmNGQgMTAwNzU1CistLS0gYS90cm9qYW5zL3RuY2Mtd3JhcHBlci5weQorKysrIGIvdHJvamFucy90bmNjLXdyYXBwZXIucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vcHl0aG9uMgorKyMhL3Vzci9iaW4vcHl0aG9uMworIAorICMgTGlmdGVkIGZyb20gUnVzcyBEaWxsJ3MganVuaXBlci12cG4td3JhcC5weSwgdGh1czoKKyAjCitAQCAtMTgsMTkgKzE4LDE5IEBACisgCisgaW1wb3J0IHN1YnByb2Nlc3MKKyBpbXBvcnQgbWVjaGFuaXplCistaW1wb3J0IGNvb2tpZWxpYgorK2ltcG9ydCBodHRwLmNvb2tpZWphcgorIGltcG9ydCBnZXRwYXNzCisgaW1wb3J0IHN5cworIGltcG9ydCBvcworIGltcG9ydCB6aXBmaWxlCistaW1wb3J0IHVybGxpYgorK2ltcG9ydCB1cmxsaWIucmVxdWVzdCwgdXJsbGliLnBhcnNlLCB1cmxsaWIuZXJyb3IKKyBpbXBvcnQgc29ja2V0CisgaW1wb3J0IHNzbAorIGltcG9ydCBlcnJubworIGltcG9ydCBhcmdwYXJzZQorIGltcG9ydCBhdGV4aXQKKyBpbXBvcnQgc2lnbmFsCistaW1wb3J0IENvbmZpZ1BhcnNlcgorK2ltcG9ydCBjb25maWdwYXJzZXIKKyBpbXBvcnQgdGltZQorIGltcG9ydCBiaW5hc2NpaQorIGltcG9ydCBobWFjCitAQCAtMzksNyArMzksNyBAQCBpbXBvcnQgaGFzaGxpYgorIGRlZiBta2Rpcl9wKHBhdGgpOgorICAgICB0cnk6CisgICAgICAgICBvcy5ta2RpcihwYXRoKQorLSAgICBleGNlcHQgT1NFcnJvciwgZXhjOgorKyAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICBpZiBleGMuZXJybm8gPT0gZXJybm8uRUVYSVNUIGFuZCBvcy5wYXRoLmlzZGlyKHBhdGgpOgorICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIGVsc2U6CitAQCAtNjQsOSArNjQsOSBAQCBjbGFzcyBUbmNjOgorICAgICAgICAgICAgIGlmIHppcGZpbGUuWmlwRmlsZShzZWxmLnRuY2NfamFyLCAncicpLnRlc3R6aXAoKSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCkKKyAgICAgICAgIGV4Y2VwdDoKKy0gICAgICAgICAgICBwcmludCAnRG93bmxvYWRpbmcgdG5jYy5qYXIuLi4nCisrICAgICAgICAgICAgcHJpbnQoJ0Rvd25sb2FkaW5nIHRuY2MuamFyLi4uJykKKyAgICAgICAgICAgICBta2Rpcl9wKG9zLnBhdGguZXhwYW5kdXNlcignfi8uanVuaXBlcl9uZXR3b3JrcycpKQorLSAgICAgICAgICAgIHVybGxpYi51cmxyZXRyaWV2ZSgnaHR0cHM6Ly8nICsgc2VsZi52cG5faG9zdAorKyAgICAgICAgICAgIHVybGxpYi5yZXF1ZXN0LnVybHJldHJpZXZlKCdodHRwczovLycgKyBzZWxmLnZwbl9ob3N0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgJy9kYW5hLWNhY2hlZC9oYy90bmNjLmphcicsIHNlbGYudG5jY19qYXIpCisgCisgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShzZWxmLnRuY2NfamFyLCAncicpIGFzIGphcjoKKy0tIAorMi4yMC4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuY29ubmVjdC9vcGVuY29ubmVjdF84LjAzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5jb25uZWN0L29wZW5jb25uZWN0XzguMDMuYmIKaW5kZXggZWMzNmEzNy4uNTk3YzE5MiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5jb25uZWN0L29wZW5jb25uZWN0XzguMDMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5jb25uZWN0L29wZW5jb25uZWN0XzguMDMuYmIKQEAgLTIsMTEgKzIsMTQgQEAKIExJQ0VOU0UgPSAiTEdQTHYyLjEiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxHUEw7bWQ1PTI0M2I3MjVkNzFiYjVkZjRhMWU1OTIwYjM0NGI4NmFkIgogCi1TUkNfVVJJID0gImdpdDovL2dpdC5pbmZyYWRlYWQub3JnL3VzZXJzL2R3bXcyL29wZW5jb25uZWN0LmdpdCIKK1NSQ19VUkkgPSAiIFwKKyAgICBnaXQ6Ly9naXQuaW5mcmFkZWFkLm9yZy91c2Vycy9kd213Mi9vcGVuY29ubmVjdC5naXQgXAorICAgIGZpbGU6Ly8wMDAxLXRyb2phbnMtdG5jYy13cmFwcGVyLnB5LWNvbnZlcnQtdG8tcHl0aG9uMy5wYXRjaCBcCisiCiBTUkNSRVYgPSAiZWE3Mzg1MTk2OWFlN2E2ZWE1NGZkZDJkMmI4Yzk0Nzc2YWYyNGIyYSIKIAogREVQRU5EUyA9ICJ2cG5jIGxpYnhtbDIga3JiNSBnZXR0ZXh0LW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gImJhc2ggcHl0aG9uIgorUkRFUEVORFNfJHtQTn0gPSAiYmFzaCBweXRob24zLWNvcmUgdnBuYy1zY3JpcHQiCiAKIFBBQ0tBR0VDT05GSUcgPz89ICJnbnV0bHMgbHo0IGxpYnByb3h5IgogCkBAIC0yMiwxMCArMjUsNSBAQAogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIAotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtdnBuYy1zY3JpcHQ9JHtTWVNST09UX0RFU1RESVJ9JHtzeXNjb25mZGlyfS92cG5jL3ZwbmMtc2NyaXB0IFwKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLXZwbmMtc2NyaXB0PSR7c3lzY29uZmRpcn0vdnBuYy92cG5jLXNjcmlwdCBcCiAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zdGF0aWMiCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0gICAgIyBzY3JpcHQgaGFzIC91c3IvYmluL3B5dGhvbjIgcGF0aCBoYXJkY29kZWQKLSAgICBzZWQgLWkgLWUgJ3M9cHl0aG9uMlwuKj1weXRob249ZycgJHtTfS90cm9qYW5zL3RuY2Mtd3JhcHBlci5weQotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1uZXR3b3JrbWFuYWdlci9weXRob24tbmV0d29ya21hbmFnZXJfMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1uZXR3b3JrbWFuYWdlci9weXRob24tbmV0d29ya21hbmFnZXJfMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWE0MWYxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbmV0d29ya21hbmFnZXIvcHl0aG9uLW5ldHdvcmttYW5hZ2VyXzIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiRWFzeSBjb21tdW5pY2F0aW9uIHdpdGggTmV0d29ya01hbmFnZXIgZnJvbSBQeXRob24iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2V2ZWFzL3B5dGhvbi1uZXR3b3JrbWFuYWdlciIKLUxJQ0VOU0UgPSAiWmxpYiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGQ4YmFjMTc0YmY4NDIyYjE1MTIwMGU2Y2M3OGViZTQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmNjM4ZDg1NGEzNjM5ZmIzN2MwZTA2ZDEwOTJhNzcxZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZWYxZTM0ZDk4ZDdiZWM3Y2MzNjhlMGNhMGYyZTk3NDkzZjliNWViZTZkNzEwM2Y4ZjY0NjBjZmNhM2RjNmZjIgotCi1QWVBJX1BBQ0tBR0UgPSAicHl0aG9uLW5ldHdvcmttYW5hZ2VyIgotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAibmV0d29ya21hbmFnZXIgcHl0aG9uLWRidXMgcHl0aG9uLXNpeCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbmV0d29ya21hbmFnZXIvcHl0aG9uMy1uZXR3b3JrbWFuYWdlcl8yLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW5ldHdvcmttYW5hZ2VyL3B5dGhvbjMtbmV0d29ya21hbmFnZXJfMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxYTZlZGQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW5ldHdvcmttYW5hZ2VyL3B5dGhvbjMtbmV0d29ya21hbmFnZXJfMi4xLmJiCkBAIC0wLDAgKzEsMTMgQEAKK1NVTU1BUlkgPSAiRWFzeSBjb21tdW5pY2F0aW9uIHdpdGggTmV0d29ya01hbmFnZXIgZnJvbSBQeXRob24iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2V2ZWFzL3B5dGhvbi1uZXR3b3JrbWFuYWdlciIKK0xJQ0VOU0UgPSAiWmxpYiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGQ4YmFjMTc0YmY4NDIyYjE1MTIwMGU2Y2M3OGViZTQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmNjM4ZDg1NGEzNjM5ZmIzN2MwZTA2ZDEwOTJhNzcxZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZWYxZTM0ZDk4ZDdiZWM3Y2MzNjhlMGNhMGYyZTk3NDkzZjliNWViZTZkNzEwM2Y4ZjY0NjBjZmNhM2RjNmZjIgorCitQWVBJX1BBQ0tBR0UgPSAicHl0aG9uLW5ldHdvcmttYW5hZ2VyIgoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ID0gIm5ldHdvcmttYW5hZ2VyIHB5dGhvbjMtZGJ1cyBweXRob24zLXNpeCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZWxheWQvcmVsYXlkX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZWxheWQvcmVsYXlkX2dpdC5iYgppbmRleCA5OGRjNDFhLi5lMzEzNGU0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmVsYXlkL3JlbGF5ZF9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JlbGF5ZC9yZWxheWRfZ2l0LmJiCkBAIC0xMiw2ICsxMiw4IEBACiBTUkNSRVYgPSAiYWQwYjI1YWQ3NDM0NWQzNjdjNjIzMTFlMTRiMjc5ZjVjY2I4ZWYxMyIKIFBWID0gIjAuMC4xK2dpdCR7U1JDUFZ9IgogCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCisKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIGluaGVyaXQgY21ha2UKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYV80LjEwLjExLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhXzQuMTAuMTEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmZGMxNWEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhXzQuMTAuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMzMgKzAsMCBAQAotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuc2FtYmEub3JnLyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotCi1MSUNFTlNFID0gIkdQTC0zLjArICYgTEdQTC0zLjArICYgR1BMLTIuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9MR1BMLTMuMDttZDU9YmZjY2ZlOTUyMjY5ZmZmMmI0MDdkZDExZjJmMzA4M2IgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvR1BMLTIuMDttZDU9ODAxZjgwOTgwZDE3MWRkNjQyNTYxMDgzM2EyMmRiZTYgIgotCi1TQU1CQV9NSVJST1IgPSAiaHR0cDovL3NhbWJhLm9yZy9zYW1iYS9mdHAiCi1NSVJST1JTICs9ICJcCi0ke1NBTUJBX01JUlJPUn0gICAgaHR0cDovL21pcnJvci5pbnRlcm5vZGUub24ubmV0L3B1Yi9zYW1iYSBcbiBcCi0ke1NBTUJBX01JUlJPUn0gICAgaHR0cDovL3d3dy5taXJyb3JzZXJ2aWNlLm9yZy9zaXRlcy9mdHAuc2FtYmEub3JnIFxuIFwKLSIKLQotU1JDX1VSSSA9ICIke1NBTUJBX01JUlJPUn0vc3RhYmxlL3NhbWJhLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9zbWIuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly8xNi1kby1ub3QtY2hlY2steHNsdHByb2MtbWFucGFnZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMjAtZG8tbm90LWltcG9ydC10YXJnZXQtbW9kdWxlLXdoaWxlLWNyb3NzLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMjEtYWRkLWNvbmZpZy1vcHRpb24td2l0aG91dC12YWxncmluZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uZXRkYl9kZWZpbmVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dsaWJjX29ubHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaWNvbnYtNC43LjAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZG5zc2VydmVyLTQuNy4wLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NtYl9jb25mLTQuNy4wLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy4wM19zYW1iYSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXdhZi1hZGQtc3VwcG9ydC1vZi1jcm9zc19jb21waWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGliLXJlcGxhY2Utd3NjcmlwdC1Bdm9pZC1nZW5lcmF0aW5nLW5lc3RlZC1tYWluLWZ1bi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXV0aWxfc2VjLmMtTW92ZS1fX3RocmVhZC12YXJpYWJsZS10by1nbG9iYWwtc2NvcGUucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKLSAgICAgICAgICAgZmlsZTovL3NhbWJhLXBhbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zYW1iYS00LjMuOS1yZW1vdmUtZ2V0cHdlbnRfci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jbW9ja2EtdWludHB0cl90LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc2FtYmEtZml4LW11c2wtbGliLXdpdGhvdXQtaW5uZXRnci5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWViZDAyMWRlODQwMzEyZDdlMDg5NTllOGEzZDBiYTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjA5ZjQyMzJlMDRjNmVhYWQwZTNiOGUwMGNkODM3NjgzYTk2MGViYjk1YzFmZTMzNDllOTY4ZDFkMWRmZjg5NCIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAic2FtYmFcLSg/UDxwdmVyPjRcLjEwKFwuXGQrKSspLnRhci5neiIKLQotaW5oZXJpdCBzeXN0ZW1kIHdhZi1zYW1iYSBjcGFuLWJhc2UgcGVybG5hdGl2ZSB1cGRhdGUtcmMuZAotIyByZW1vdmUgZGVmYXVsdCBhZGRlZCBSREVQRU5EUyBvbiBwZXJsCi1SREVQRU5EU18ke1BOfV9yZW1vdmUgPSAicGVybCIKLQotREVQRU5EUyArPSAicmVhZGxpbmUgdmlydHVhbC9saWJpY29udiB6bGliIHBvcHQgbGlidGFsbG9jIGxpYnRkYiBsaWJ0ZXZlbnQgbGlibGRiIGxpYmJzZCBsaWJhaW8gbGlicGFtIGxpYnRhc24xIGphbnNzb24iCi0KLWluaGVyaXQgZmVhdHVyZXNfY2hlY2sKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwYW0iCi0KLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbGlidGlycGMiCi1DRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyIKLUxERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWx0aXJwYyIKLQotSU5JVFNDUklQVF9OQU1FID0gInNhbWJhIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMjAgMyA1IC4gc3RvcCAyMCAwIDEgNiAuIgotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LWJhc2UgJHtQTn0tYWQtZGMgd2luYmluZCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1iYXNlID0gIm5tYi5zZXJ2aWNlIHNtYi5zZXJ2aWNlIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LWFkLWRjID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FkLWRjJywgJ3NhbWJhLnNlcnZpY2UnLCAnJywgZCl9IgotU1lTVEVNRF9TRVJWSUNFX3dpbmJpbmQgPSAid2luYmluZC5zZXJ2aWNlIgotCi0jIFRoZXJlIGFyZSBwcmVyZXF1aXNpdGUgc2V0dGluZ3MgdG8gZW5hYmxlIGFkLWRjLCBzbyBkaXNhYmxlIHRoZSBzZXJ2aWNlIGJ5IGRlZmF1bHQuCi0jIFJlZmVyZW5jZToKLSMgaHR0cHM6Ly93aWtpLnNhbWJhLm9yZy9pbmRleC5waHAvU2V0dGluZ191cF9TYW1iYV9hc19hbl9BY3RpdmVfRGlyZWN0b3J5X0RvbWFpbl9Db250cm9sbGVyCi1TWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59LWFkLWRjID0gImRpc2FibGUiCi0KLSNjcm9zc19jb21waWxlIGNhbm5vdCB1c2UgcHJlZm9ya2VkIHByb2Nlc3MsIHNpbmNlIGZvcmsgcHJvY2VzcyBlYXJsaWVyIHRoYW4gcG9pbnQgc3VicHJvY2VzLnBvcGVuCi0jdG8gY3Jvc3MgUG9wZW4KLWV4cG9ydCBXQUZfTk9fUFJFRk9SSz0ieWVzIgotCi0jIFVzZSBrcmI1LiAgQnVpbGQgYWN0aXZlIGRvbWFpbiBjb250cm9sbGVyLgotIwotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQgemVyb2NvbmYnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgIGFjbCBjdXBzIGFkLWRjIGdudXRscyBsZGFwIG1pdGtyYjUgXAotIgotCi1SREVQRU5EU18ke1BOfS1jdGRiLXRlc3RzICs9ICJiYXNoIHV0aWwtbGludXgtZ2V0b3B0IgotCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLWFjbC1zdXBwb3J0LC0td2l0aG91dC1hY2wtc3VwcG9ydCxhY2wiCi1QQUNLQUdFQ09ORklHW2ZhbV0gPSAiLS13aXRoLWZhbSwtLXdpdGhvdXQtZmFtLGdhbWluIgotUEFDS0FHRUNPTkZJR1tjdXBzXSA9ICItLWVuYWJsZS1jdXBzLC0tZGlzYWJsZS1jdXBzLGN1cHMiCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1tzYXNsXSA9ICIsLGN5cnVzLXNhc2wiCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kLC0td2l0aG91dC1zeXN0ZW1kLHN5c3RlbWQiCi1QQUNLQUdFQ09ORklHW2RtYXBpXSA9ICItLXdpdGgtZG1hcGksLS13aXRob3V0LWRtYXBpLGRtYXBpIgotUEFDS0FHRUNPTkZJR1t6ZXJvY29uZl0gPSAiLS1lbmFibGUtYXZhaGksLS1kaXNhYmxlLWF2YWhpLGF2YWhpIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCwiCi1QQUNLQUdFQ09ORklHW2x0dG5nXSA9ICItLXdpdGgtbHR0bmcsIC0td2l0aG91dC1sdHRuZyxsdHRuZy11c3QiCi1QQUNLQUdFQ09ORklHW2FyY2hpdmVdID0gIi0td2l0aC1saWJhcmNoaXZlLCAtLXdpdGhvdXQtbGliYXJjaGl2ZSwgbGliYXJjaGl2ZSIKLVBBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICIsICwgbGlidW53aW5kIgotUEFDS0FHRUNPTkZJR1tncGdtZV0gPSAiLC0td2l0aG91dC1ncGdtZSwsIgotUEFDS0FHRUNPTkZJR1tsbWRiXSA9ICIsLS13aXRob3V0LWxkYi1sbWRiLGxtZGIsIgotCi0jIEJ1aWxkaW5nIHRoZSBBRCAoQWN0aXZlIERpcmVjdG9yeSkgREMgKERvbWFpbiBDb250cm9sbGVyKSByZXF1aXJlcyBHbnVUTFMsCi0jIEFuZCBhZC1kYyBkb2Vzbid0IHdvcmsgd2l0aCBtaXRrcmI1IGZvciB2ZXJzaW9ucyBwcmlvciB0byA0LjcuMCBhY2NvcmRpbmcgdG86Ci0jIGh0dHA6Ly9zYW1iYS4yMjgzMzI1Lm40Lm5hYmJsZS5jb20vc2FtYmEtNC02LTYtVW5rbm93bi1kZXBlbmRlbmN5LWtkYy1pbi1zZXJ2aWNlLWtkYy1vYmpsaXN0LXRkNDcyMjA5Ni5odG1sCi0jIFNvIHRoZSB3b3JraW5nIGNvbWJpbmF0aW9uIGlzOgotIyAxKSBhZC1kYzogZW5hYmxlLCBnbnV0bHM6IGVuYWJsZSwgbWl0a3JiNTogZGlzYWJsZQotIyAyKSBhZC1kYzogZGlzYWJsZSwgZ251dGxzOiBlbmFibGUvZGlzYWJsZSwgbWl0a3JiNTogZW5hYmxlCi0jCi0jIFdlIGFyZSBub3cgYXQgNC43LjAsIHNvIHRha2UgdGhlIGFib3ZlIHdpdGggYSBncmFpbiBvZiBzYWx0LiBXZSBkbyBub3QgbmVlZCB0byBrbm93IHdoZXJlCi0jIGtyYjVrZGMgaXMgdW5sZXNzIGFkLWRjIGlzIGVuYWJsZWQsIGJ1dCB3ZSB0ZWxsIGNvbmZpZ3VyZSBhbnlob3cuCi0jCi1QQUNLQUdFQ09ORklHW2FkLWRjXSA9ICItLXdpdGgtZXhwZXJpbWVudGFsLW1pdC1hZC1kYywtLXdpdGhvdXQtYWQtZGMsLCIKLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLWVuYWJsZS1nbnV0bHMsLS1kaXNhYmxlLWdudXRscyxnbnV0bHMsIgotUEFDS0FHRUNPTkZJR1ttaXRrcmI1XSA9ICItLXdpdGgtc3lzdGVtLW1pdGtyYjUgLS13aXRoLXN5c3RlbS1taXRrZGM9L3Vzci9zYmluL2tyYjVrZGMsLGtyYjUsIgotCi1TQU1CQTRfSURNQVBfTU9EVUxFUz0iaWRtYXBfYWQsaWRtYXBfcmlkLGlkbWFwX2FkZXgsaWRtYXBfaGFzaCxpZG1hcF90ZGIyIgotU0FNQkE0X1BEQl9NT0RVTEVTPSJwZGJfdGRic2FtLCR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2xkYXAnLCAncGRiX2xkYXAsJywgJycsIGQpfXBkYl9hZHMscGRiX3NtYnBhc3N3ZCxwZGJfd2JjX3NhbSxwZGJfc2FtYmE0IgotU0FNQkE0X0FVVEhfTU9EVUxFUz0iYXV0aF91bml4LGF1dGhfd2JjLGF1dGhfc2VydmVyLGF1dGhfbmV0bG9nb25kLGF1dGhfc2NyaXB0LGF1dGhfc2FtYmE0IgotU0FNQkE0X01PRFVMRVM9IiR7U0FNQkE0X0lETUFQX01PRFVMRVN9LCR7U0FNQkE0X1BEQl9NT0RVTEVTfSwke1NBTUJBNF9BVVRIX01PRFVMRVN9IgotCi0jIFRoZXNlIGxpYnJhcmllcyBhcmUgc3VwcG9zZWQgdG8gcmVwbGFjZSBvdGhlcnMgc3VwcGxpZWQgYnkgcGFja2FnZXMsIGJ1dCBkZWNvcmF0ZSB0aGUgbmFtZXMgb2YKLSMgLnNvIGZpbGVzIHNvIHRoZXJlIHdpbGwgbm90IGJlIGEgY29uZmxpY3QuICBUaGlzIGlzIG5vdCBkb25lIGNvbnNpc3RhbnRseSwgc28gYmUgdmVyeSBjYXJlZnVsCi0jIHdoZW4gYWRkaW5nIHRvIHRoaXMgbGlzdC4KLSMKLVNBTUJBNF9MSUJTPSJoZWltZGFsLGNtb2NrYSxOT05FIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWZocyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1waWRkaXI9L3J1biBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1zb2NrZXRzLWRpcj0vcnVuL3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLW1vZHVsZXNkaXI9JHtsaWJkaXJ9L3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWxvY2tkaXI9JHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtY2FjaGVkaXI9JHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtcnBhdGgtaW5zdGFsbCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1zaGFyZWQtbW9kdWxlcz0ke1NBTUJBNF9NT0RVTEVTfSBcCi0gICAgICAgICAgICAgICAgIC0tYnVuZGxlZC1saWJyYXJpZXM9JHtTQU1CQTRfTElCU30gXAotICAgICAgICAgICAgICAgICAke0BvZS51dGlscy5jb25kaXRpb25hbCgnVEFSR0VUX0FSQ0gnLCAneDg2XzY0JywgJycsICctLWRpc2FibGUtZ2x1c3RlcmZzJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWNsdXN0ZXItc3VwcG9ydCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1wcm9maWxpbmctZGF0YSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1saWJpY29udj0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLXBhbSAtLXdpdGgtcGFtbW9kdWxlc2Rpcj0ke2Jhc2VfbGliZGlyfS9zZWN1cml0eSBcCi0gICAgICAgICAgICAgICAgIgotCi1MREZMQUdTICs9ICItV2wsLXoscmVscm8sLXosbm93ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICcgLWZ1c2UtbGQ9YmZkICcsICcnLCBkKX0iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGZvciBzZWN0aW9uIGluIDEgNSA3OyBkbwotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuJHNlY3Rpb24KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IGN0ZGIvZG9jLyouJHNlY3Rpb24gJHtEfSR7bWFuZGlyfS9tYW4kc2VjdGlvbgotICAgIGRvbmUKLSAgICBmb3Igc2VjdGlvbiBpbiAxIDUgNyA4OyBkbwotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuJHNlY3Rpb24KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IGRvY3MvbWFucGFnZXMvKi4kc2VjdGlvbiAke0R9JHttYW5kaXJ9L21hbiRzZWN0aW9uCi0gICAgZG9uZQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2Jpbi9kZWZhdWx0L3BhY2thZ2luZy9zeXN0ZW1kLyouc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8KLSAgICBzZWQgLWUgJ3MsXChFeGVjUmVsb2FkPVwpLipcKC9raWxsXCksXDEke2Jhc2VfYmluZGlyfVwyLCcgXAotICAgICAgICAtZSAncywvZXRjL3N5c2NvbmZpZy9zYW1iYSwke3N5c2NvbmZkaXJ9L2RlZmF1bHQvc2FtYmEsJyBcCi0gICAgICAgIC1pICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Lyouc2VydmljZQotCi0gICAgaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYWQtZGMnLCAneWVzJywgJ25vJywgZCl9IiA9ICJubyIgXTsgdGhlbgotICAgICAgICBybSAtZiAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zYW1iYS5zZXJ2aWNlCi0gICAgZmkKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotICAgIGluc3RhbGwgLW02NDQgcGFja2FnaW5nL3N5c3RlbWQvc2FtYmEuY29uZi50bXAgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9zYW1iYS5jb25mCi0gICAgZWNobyAiZCAke2xvY2Fsc3RhdGVkaXJ9L2xvZy9zYW1iYSAwNzU1IHJvb3Qgcm9vdCAtIiBcCi0gICAgICAgID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvc2FtYmEuY29uZgotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSAwNzU1IHBhY2thZ2luZy9zeXN2L3NhbWJhLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NhbWJhCi0gICAgc2VkIC1lICdzLC9vcHQvc2FtYmEvYmluLCR7c2JpbmRpcn0sZycgXAotICAgICAgICAtZSAncywvb3B0L3NhbWJhL3NtYi5jb25mLCR7c3lzY29uZmRpcn0vc2FtYmEvc21iLmNvbmYsZycgXAotICAgICAgICAtZSAncywvb3B0L3NhbWJhL2xvZywke2xvY2Fsc3RhdGVkaXJ9L2xvZy9zYW1iYSxnJyBcCi0gICAgICAgIC1lICdzLC9ldGMvaW5pdC5kL3NhbWJhLnNlcnZlciwke3N5c2NvbmZkaXJ9L2luaXQuZC9zYW1iYSxnJyBcCi0gICAgICAgIC1lICdzLC91c3IvYmluLCR7YmFzZV9iaW5kaXJ9LGcnIFwKLSAgICAgICAgLWkgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NhbWJhCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NhbWJhCi0gICAgZWNobyAiMTI3LjAuMC4xIGxvY2FsaG9zdCIgPiAke0R9JHtzeXNjb25mZGlyfS9zYW1iYS9sbWhvc3RzCi0gICAgaW5zdGFsbCAtbTY0NCAke1dPUktESVJ9L3NtYi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3NhbWJhL3NtYi5jb25mCi0gICAgaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMuMDNfc2FtYmEgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvMDNfc2FtYmEKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAotICAgIGluc3RhbGwgLW02NDQgcGFja2FnaW5nL3N5c3RlbWQvc2FtYmEuc3lzY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvc2FtYmEKLQotICAgICMgdGhlIGl0ZW1zIGFyZSBmcm9tIGN0ZGIvdGVzdHMvcnVuX3Rlc3RzLnNoCi0gICAgZm9yIGQgaW4gb25ub2RlIHRha2VvdmVyIHRvb2wgZXZlbnRzY3JpcHRzIGN1bml0IHNpbXBsZSBjb21wbGV4OyBkbwotICAgICAgICB0ZXN0ZGlyPSR7RH0ke2RhdGFkaXJ9L2N0ZGItdGVzdHMvJGQKLSAgICAgICAgaW5zdGFsbCAtZCAkdGVzdGRpcgotICAgICAgICBjcCAke1N9L2N0ZGIvdGVzdHMvJGQvKi5zaCAkdGVzdGRpcgotICAgICAgICBjcCAtciAke1N9L2N0ZGIvdGVzdHMvJGQvc2NyaXB0cyAke1N9L2N0ZGIvdGVzdHMvJGQvc3R1YnMgJHRlc3RkaXIgfHwgdHJ1ZQotICAgIGRvbmUKLQotICAgICMgZml4IGZpbGUtcmRlcHMgcWEgd2FybmluZwotICAgIGlmIFsgLWYgJHtEfSR7YmluZGlyfS9vbm5vZGUgXTsgdGhlbgotICAgICAgICBzZWQgLWkgJ3M6XCgjIS9iaW4vXCliYXNoOlwxc2g6JyAke0R9JHtiaW5kaXJ9L29ubm9kZQotICAgIGZpCi0KLSAgICBjaG1vZCAwNzUwICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMuZCB8fCB0cnVlCi0gICAgcm0gLXJmICR7RH0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biAke0R9JHtsb2NhbHN0YXRlZGlyfS9sb2cKLSAgICAKLSAgICBmb3IgZiBpbiBzYW1iYS1ncHVwZGF0ZSBzYW1iYV91cGdyYWRlZG5zIHNhbWJhX3NwbnVwZGF0ZSBzYW1iYV9rY2Mgc2FtYmFfZG5zdXBkYXRlOyBkbwotICAgICAgICBpZiBbIC1mICIke0R9JHtzYmluZGlyfS8kZiIgXTsgdGhlbgotICAgICAgICAgICAgc2VkIC1pIC1lICdzLCR7UFlUSE9OfSwvdXNyL2Jpbi9lbnYgcHl0aG9uMyxnJyAke0R9JHtzYmluZGlyfS8kZgotICAgICAgICBmaQotICAgIGRvbmUKLSAgICBpZiBbIC1mICIke0R9JHtiaW5kaXJ9L3NhbWJhLXRvb2wiIF07IHRoZW4KLSAgICAgICAgc2VkIC1pIC1lICdzLCR7UFlUSE9OfSwvdXNyL2Jpbi9lbnYgcHl0aG9uMyxnJyAke0R9JHtiaW5kaXJ9L3NhbWJhLXRvb2wKLSAgICBmaQotICAgIAotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tcHl0aG9uMyAke1BOfS1waWRsIFwKLSAgICAgICAgICAgICAke1BOfS1kc2RiLW1vZHVsZXMgJHtQTn0tdGVzdHN1aXRlIHJlZ2lzdHJ5LXRvb2xzIFwKLSAgICAgICAgICAgICB3aW5iaW5kIFwKLSAgICAgICAgICAgICAke1BOfS1jb21tb24gJHtQTn0tYmFzZSAke1BOfS1hZC1kYyAke1BOfS1jdGRiLXRlc3RzIFwKLSAgICAgICAgICAgICBzbWJjbGllbnQgJHtQTn0tY2xpZW50ICR7UE59LXNlcnZlciAke1BOfS10ZXN0IgotCi1weXRob24gc2FtYmFfcG9wdWxhdGVfcGFja2FnZXMoKSB7Ci0gICAgZGVmIG1vZHVsZV9ob29rKGZpbGUsIHBrZywgcGF0dGVybiwgZm9ybWF0LCBiYXNlbmFtZSk6Ci0gICAgICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKLSAgICAgICAgZC5hcHBlbmRWYXIoJ1JSRUNPTU1FTkRTXyVzLWJhc2UnICUgcG4sICcgJXMnICUgcGtnKQotCi0gICAgbWxwcmVmaXggPSBkLmdldFZhcignTUxQUkVGSVgnKSBvciAnJwotICAgIHBhbV9saWJkaXIgPSBkLmV4cGFuZCgnJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHknKQotICAgIHBhbV9wa2duYW1lID0gbWxwcmVmaXggKyAncGFtLXBsdWdpbiVzJwotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBhbV9saWJkaXIsICdecGFtXyguKilcLnNvJCcsIHBhbV9wa2duYW1lLCAnUEFNIHBsdWdpbiBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnLCBwcmVwZW5kPVRydWUpCi0KLSAgICBsaWJkaXIgPSBkLmdldFZhcignbGliZGlyJykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdebGliKC4qKVwuc29cLi4qJCcsICdsaWIlcycsICdTYW1iYSAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJHtQTn0tY29tbW9uJywgcHJlcGVuZD1UcnVlLCBhbGxvd19saW5rcz1UcnVlKQotICAgIHBrZ2xpYmRpciA9ICclcy9zYW1iYScgJSBsaWJkaXIKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBwa2dsaWJkaXIsICdebGliKC4qKVwuc28kJywgJ2xpYiVzJywgJ1NhbWJhICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScke1BOfS1jb21tb24nLCBwcmVwZW5kPVRydWUpCi0gICAgbW9kdWxlZGlyID0gJyVzL3NhbWJhL2F1dGgnICUgbGliZGlyCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbW9kdWxlZGlyLCAnXiguKilcLnNvJCcsICdzYW1iYS1hdXRoLSVzJywgJ1NhbWJhICVzIGF1dGhlbnRpY2F0aW9uIGJhY2tlbmQnLCBob29rPW1vZHVsZV9ob29rLCBleHRyYV9kZXBlbmRzPScnLCBwcmVwZW5kPVRydWUpCi0gICAgbW9kdWxlZGlyID0gJyVzL3NhbWJhL3BkYicgJSBsaWJkaXIKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBtb2R1bGVkaXIsICdeKC4qKVwuc28kJywgJ3NhbWJhLXBkYi0lcycsICdTYW1iYSAlcyBwYXNzd29yZCBiYWNrZW5kJywgaG9vaz1tb2R1bGVfaG9vaywgZXh0cmFfZGVwZW5kcz0nJywgcHJlcGVuZD1UcnVlKQotfQotCi1QQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gInNhbWJhX3BvcHVsYXRlX3BhY2thZ2VzICIKLVBBQ0tBR0VTX0RZTkFNSUMgPSAic2FtYmEtYXV0aC0uKiBzYW1iYS1wZGItLioiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1iYXNlICR7UE59LXB5dGhvbjMgJHtQTn0tZHNkYi1tb2R1bGVzIHB5dGhvbjMiCi1SREVQRU5EU18ke1BOfS1weXRob24zICs9ICJweXRhbGxvYyBweXRob24zLXRkYiIKLQotRklMRVNfJHtQTn0tYmFzZSA9ICIke3NiaW5kaXJ9L25tYmQgXAotICAgICAgICAgICAgICAgICAgICAke3NiaW5kaXJ9L3NtYmQgXAotICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZCBcCi0gICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbm1iLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3NtYi5zZXJ2aWNlIgotCi1GSUxFU18ke1BOfS1hZC1kYyA9ICIke3NiaW5kaXJ9L3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc2FtYmEuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0va3JiNS9wbHVnaW5zL2tkYi9zYW1iYS5zbyBcCi0iCi1SREVQRU5EU18ke1BOfS1hZC1kYyA9ICJrcmI1LWtkYyIKLQotRklMRVNfJHtQTn0tY3RkYi10ZXN0cyA9ICIke2JpbmRpcn0vY3RkYl9ydW5fdGVzdHMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vY3RkYl9ydW5fY2x1c3Rlcl90ZXN0cyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vY3RkYi9ub2RlcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vY3RkYi10ZXN0cyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vY3RkYi90ZXN0cyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL2N0ZGIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtCUE59LWNvbW1vbiA9ICIke3N5c2NvbmZkaXJ9L2RlZmF1bHQgXAotICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAotICAgICAgICAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL3NhbWJhIFwKLSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS92ZnMvKi5zbyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2NoYXJzZXQvKi5zbyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyouZGF0IFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vYXV0aC8qLnNvIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2N0ZGIvZXZlbnRzLyogXAotIgotCi1GSUxFU18ke1BOfS1kc2RiLW1vZHVsZXMgPSAiJHtsaWJkaXJ9L3NhbWJhL2xkYiIKLQotRklMRVNfJHtQTn0tdGVzdHN1aXRlID0gIiR7YmluZGlyfS9nZW50ZXN0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbG9ja3Rlc3QgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9tYXNrdGVzdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L25kcmR1bXAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJ0b3J0dXJlIgotCi1GSUxFU19yZWdpc3RyeS10b29scyA9ICIke2JpbmRpcn0vcmVnZGlmZiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vcmVncGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JlZ3NoZWxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9yZWd0cmVlIgotCi1GSUxFU193aW5iaW5kID0gIiR7c2JpbmRpcn0vd2luYmluZGQgXAotICAgICAgICAgICAgICAgICAke2JpbmRpcn0vd2JpbmZvIFwKLSAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L250bG1fYXV0aCBcCi0gICAgICAgICAgICAgICAgICR7bGliZGlyfS9zYW1iYS9pZG1hcCBcCi0gICAgICAgICAgICAgICAgICR7bGliZGlyfS9zYW1iYS9uc3NfaW5mbyBcCi0gICAgICAgICAgICAgICAgICR7bGliZGlyfS93aW5iaW5kX2tyYjVfbG9jYXRvci5zbyBcCi0gICAgICAgICAgICAgICAgICR7bGliZGlyfS93aW5iaW5kLWtyYjUtbG9jYWxhdXRoLnNvIFwKLSAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvd2luYmluZCBcCi0gICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vd2luYmluZC5zZXJ2aWNlIgotCi1GSUxFU18ke1BOfS1weXRob24zID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotCi1GSUxFU19zbWJjbGllbnQgPSAiJHtiaW5kaXJ9L2NpZnNkZCBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwY2NsaWVudCBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmNhY2xzIFwKLSAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21iY2xpZW50IFwKLSAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21iY3F1b3RhcyBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmdldCBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYnNwb29sIFwKLSAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21idGFyIFwKLSAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21idHJlZSBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3NhbWJhL3NtYnNwb29sX2tyYjVfd3JhcHBlciIKLQotUkRFUEVORFNfJHtQTn0tcGlkbF9hcHBlbmQgPSAiIHBlcmwiCi1GSUxFU18ke1BOfS1waWRsID0gIiR7YmluZGlyfS9waWRsICR7ZGF0YWRpcn0vcGVybDUvUGFyc2UiCi0KLVJERVBFTkRTXyR7UE59LWNsaWVudCA9ICJcCi0gICAgc21iY2xpZW50IFwKLSAgICB3aW5iaW5kIFwKLSAgICByZWdpc3RyeS10b29scyBcCi0gICAgJHtQTn0tcGlkbCBcCi0gICAgIgotCi1BTExPV19FTVBUWV8ke1BOfS1jbGllbnQgPSAiMSIKLQotUkRFUEVORFNfJHtQTn0tc2VydmVyID0gIlwKLSAgICAke1BOfSBcCi0gICAgd2luYmluZCBcCi0gICAgcmVnaXN0cnktdG9vbHMgXAotICAgICIKLQotQUxMT1dfRU1QVFlfJHtQTn0tc2VydmVyID0gIjEiCi0KLVJERVBFTkRTXyR7UE59LXRlc3QgPSAiXAotICAgICR7UE59LWN0ZGItdGVzdHMgXAotICAgICR7UE59LXRlc3RzdWl0ZSBcCi0gICAgIgotCi1BTExPV19FTVBUWV8ke1BOfS10ZXN0ID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmFfNC4xMC4xMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYV80LjEwLjEzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxZDhmYTIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmFfNC4xMC4xMy5iYgpAQCAtMCwwICsxLDMzMyBAQAorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuc2FtYmEub3JnLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorCitMSUNFTlNFID0gIkdQTC0zLjArICYgTEdQTC0zLjArICYgR1BMLTIuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9MR1BMLTMuMDttZDU9YmZjY2ZlOTUyMjY5ZmZmMmI0MDdkZDExZjJmMzA4M2IgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvR1BMLTIuMDttZDU9ODAxZjgwOTgwZDE3MWRkNjQyNTYxMDgzM2EyMmRiZTYgIgorCitTQU1CQV9NSVJST1IgPSAiaHR0cDovL3NhbWJhLm9yZy9zYW1iYS9mdHAiCitNSVJST1JTICs9ICJcCiske1NBTUJBX01JUlJPUn0gICAgaHR0cDovL21pcnJvci5pbnRlcm5vZGUub24ubmV0L3B1Yi9zYW1iYSBcbiBcCiske1NBTUJBX01JUlJPUn0gICAgaHR0cDovL3d3dy5taXJyb3JzZXJ2aWNlLm9yZy9zaXRlcy9mdHAuc2FtYmEub3JnIFxuIFwKKyIKKworU1JDX1VSSSA9ICIke1NBTUJBX01JUlJPUn0vc3RhYmxlL3NhbWJhLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9zbWIuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly8xNi1kby1ub3QtY2hlY2steHNsdHByb2MtbWFucGFnZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMjAtZG8tbm90LWltcG9ydC10YXJnZXQtbW9kdWxlLXdoaWxlLWNyb3NzLWNvbXBpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMjEtYWRkLWNvbmZpZy1vcHRpb24td2l0aG91dC12YWxncmluZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uZXRkYl9kZWZpbmVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2dsaWJjX29ubHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaWNvbnYtNC43LjAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZG5zc2VydmVyLTQuNy4wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NtYl9jb25mLTQuNy4wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy4wM19zYW1iYSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXdhZi1hZGQtc3VwcG9ydC1vZi1jcm9zc19jb21waWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGliLXJlcGxhY2Utd3NjcmlwdC1Bdm9pZC1nZW5lcmF0aW5nLW5lc3RlZC1tYWluLWZ1bi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXV0aWxfc2VjLmMtTW92ZS1fX3RocmVhZC12YXJpYWJsZS10by1nbG9iYWwtc2NvcGUucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKKyAgICAgICAgICAgZmlsZTovL3NhbWJhLXBhbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zYW1iYS00LjMuOS1yZW1vdmUtZ2V0cHdlbnRfci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jbW9ja2EtdWludHB0cl90LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc2FtYmEtZml4LW11c2wtbGliLXdpdGhvdXQtaW5uZXRnci5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTc5MDY1ODBiZjA2ZGFlMDg3ZTk5ZWY4MjU0ZjMyN2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDllYjY0MjZlOTdjYmY1MzhlNDE2ZTUxZWQ4NTM1OTMwMzgyNTEyYWQyZDEzZDVmZmQ3ZjQzMzZhYTdmYWY2MyIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAic2FtYmFcLSg/UDxwdmVyPjRcLjEwKFwuXGQrKSspLnRhci5neiIKKworaW5oZXJpdCBzeXN0ZW1kIHdhZi1zYW1iYSBjcGFuLWJhc2UgcGVybG5hdGl2ZSB1cGRhdGUtcmMuZAorIyByZW1vdmUgZGVmYXVsdCBhZGRlZCBSREVQRU5EUyBvbiBwZXJsCitSREVQRU5EU18ke1BOfV9yZW1vdmUgPSAicGVybCIKKworREVQRU5EUyArPSAicmVhZGxpbmUgdmlydHVhbC9saWJpY29udiB6bGliIHBvcHQgbGlidGFsbG9jIGxpYnRkYiBsaWJ0ZXZlbnQgbGlibGRiIGxpYmJzZCBsaWJhaW8gbGlicGFtIGxpYnRhc24xIGphbnNzb24iCisKK2luaGVyaXQgZmVhdHVyZXNfY2hlY2sKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwYW0iCisKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbGlidGlycGMiCitDRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyIKK0xERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWx0aXJwYyIKKworSU5JVFNDUklQVF9OQU1FID0gInNhbWJhIgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMjAgMyA1IC4gc3RvcCAyMCAwIDEgNiAuIgorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LWJhc2UgJHtQTn0tYWQtZGMgd2luYmluZCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1iYXNlID0gIm5tYi5zZXJ2aWNlIHNtYi5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LWFkLWRjID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FkLWRjJywgJ3NhbWJhLnNlcnZpY2UnLCAnJywgZCl9IgorU1lTVEVNRF9TRVJWSUNFX3dpbmJpbmQgPSAid2luYmluZC5zZXJ2aWNlIgorCisjIFRoZXJlIGFyZSBwcmVyZXF1aXNpdGUgc2V0dGluZ3MgdG8gZW5hYmxlIGFkLWRjLCBzbyBkaXNhYmxlIHRoZSBzZXJ2aWNlIGJ5IGRlZmF1bHQuCisjIFJlZmVyZW5jZToKKyMgaHR0cHM6Ly93aWtpLnNhbWJhLm9yZy9pbmRleC5waHAvU2V0dGluZ191cF9TYW1iYV9hc19hbl9BY3RpdmVfRGlyZWN0b3J5X0RvbWFpbl9Db250cm9sbGVyCitTWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59LWFkLWRjID0gImRpc2FibGUiCisKKyNjcm9zc19jb21waWxlIGNhbm5vdCB1c2UgcHJlZm9ya2VkIHByb2Nlc3MsIHNpbmNlIGZvcmsgcHJvY2VzcyBlYXJsaWVyIHRoYW4gcG9pbnQgc3VicHJvY2VzLnBvcGVuCisjdG8gY3Jvc3MgUG9wZW4KK2V4cG9ydCBXQUZfTk9fUFJFRk9SSz0ieWVzIgorCisjIFVzZSBrcmI1LiAgQnVpbGQgYWN0aXZlIGRvbWFpbiBjb250cm9sbGVyLgorIworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQgemVyb2NvbmYnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIGFjbCBjdXBzIGFkLWRjIGdudXRscyBsZGFwIG1pdGtyYjUgXAorIgorCitSREVQRU5EU18ke1BOfS1jdGRiLXRlc3RzICs9ICJiYXNoIHV0aWwtbGludXgtZ2V0b3B0IgorCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLWFjbC1zdXBwb3J0LC0td2l0aG91dC1hY2wtc3VwcG9ydCxhY2wiCitQQUNLQUdFQ09ORklHW2ZhbV0gPSAiLS13aXRoLWZhbSwtLXdpdGhvdXQtZmFtLGdhbWluIgorUEFDS0FHRUNPTkZJR1tjdXBzXSA9ICItLWVuYWJsZS1jdXBzLC0tZGlzYWJsZS1jdXBzLGN1cHMiCitQQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgorUEFDS0FHRUNPTkZJR1tzYXNsXSA9ICIsLGN5cnVzLXNhc2wiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kLC0td2l0aG91dC1zeXN0ZW1kLHN5c3RlbWQiCitQQUNLQUdFQ09ORklHW2RtYXBpXSA9ICItLXdpdGgtZG1hcGksLS13aXRob3V0LWRtYXBpLGRtYXBpIgorUEFDS0FHRUNPTkZJR1t6ZXJvY29uZl0gPSAiLS1lbmFibGUtYXZhaGksLS1kaXNhYmxlLWF2YWhpLGF2YWhpIgorUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCwiCitQQUNLQUdFQ09ORklHW2x0dG5nXSA9ICItLXdpdGgtbHR0bmcsIC0td2l0aG91dC1sdHRuZyxsdHRuZy11c3QiCitQQUNLQUdFQ09ORklHW2FyY2hpdmVdID0gIi0td2l0aC1saWJhcmNoaXZlLCAtLXdpdGhvdXQtbGliYXJjaGl2ZSwgbGliYXJjaGl2ZSIKK1BBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICIsICwgbGlidW53aW5kIgorUEFDS0FHRUNPTkZJR1tncGdtZV0gPSAiLC0td2l0aG91dC1ncGdtZSwsIgorUEFDS0FHRUNPTkZJR1tsbWRiXSA9ICIsLS13aXRob3V0LWxkYi1sbWRiLGxtZGIsIgorCisjIEJ1aWxkaW5nIHRoZSBBRCAoQWN0aXZlIERpcmVjdG9yeSkgREMgKERvbWFpbiBDb250cm9sbGVyKSByZXF1aXJlcyBHbnVUTFMsCisjIEFuZCBhZC1kYyBkb2Vzbid0IHdvcmsgd2l0aCBtaXRrcmI1IGZvciB2ZXJzaW9ucyBwcmlvciB0byA0LjcuMCBhY2NvcmRpbmcgdG86CisjIGh0dHA6Ly9zYW1iYS4yMjgzMzI1Lm40Lm5hYmJsZS5jb20vc2FtYmEtNC02LTYtVW5rbm93bi1kZXBlbmRlbmN5LWtkYy1pbi1zZXJ2aWNlLWtkYy1vYmpsaXN0LXRkNDcyMjA5Ni5odG1sCisjIFNvIHRoZSB3b3JraW5nIGNvbWJpbmF0aW9uIGlzOgorIyAxKSBhZC1kYzogZW5hYmxlLCBnbnV0bHM6IGVuYWJsZSwgbWl0a3JiNTogZGlzYWJsZQorIyAyKSBhZC1kYzogZGlzYWJsZSwgZ251dGxzOiBlbmFibGUvZGlzYWJsZSwgbWl0a3JiNTogZW5hYmxlCisjCisjIFdlIGFyZSBub3cgYXQgNC43LjAsIHNvIHRha2UgdGhlIGFib3ZlIHdpdGggYSBncmFpbiBvZiBzYWx0LiBXZSBkbyBub3QgbmVlZCB0byBrbm93IHdoZXJlCisjIGtyYjVrZGMgaXMgdW5sZXNzIGFkLWRjIGlzIGVuYWJsZWQsIGJ1dCB3ZSB0ZWxsIGNvbmZpZ3VyZSBhbnlob3cuCisjCitQQUNLQUdFQ09ORklHW2FkLWRjXSA9ICItLXdpdGgtZXhwZXJpbWVudGFsLW1pdC1hZC1kYywtLXdpdGhvdXQtYWQtZGMsLCIKK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLWVuYWJsZS1nbnV0bHMsLS1kaXNhYmxlLWdudXRscyxnbnV0bHMsIgorUEFDS0FHRUNPTkZJR1ttaXRrcmI1XSA9ICItLXdpdGgtc3lzdGVtLW1pdGtyYjUgLS13aXRoLXN5c3RlbS1taXRrZGM9L3Vzci9zYmluL2tyYjVrZGMsLGtyYjUsIgorCitTQU1CQTRfSURNQVBfTU9EVUxFUz0iaWRtYXBfYWQsaWRtYXBfcmlkLGlkbWFwX2FkZXgsaWRtYXBfaGFzaCxpZG1hcF90ZGIyIgorU0FNQkE0X1BEQl9NT0RVTEVTPSJwZGJfdGRic2FtLCR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2xkYXAnLCAncGRiX2xkYXAsJywgJycsIGQpfXBkYl9hZHMscGRiX3NtYnBhc3N3ZCxwZGJfd2JjX3NhbSxwZGJfc2FtYmE0IgorU0FNQkE0X0FVVEhfTU9EVUxFUz0iYXV0aF91bml4LGF1dGhfd2JjLGF1dGhfc2VydmVyLGF1dGhfbmV0bG9nb25kLGF1dGhfc2NyaXB0LGF1dGhfc2FtYmE0IgorU0FNQkE0X01PRFVMRVM9IiR7U0FNQkE0X0lETUFQX01PRFVMRVN9LCR7U0FNQkE0X1BEQl9NT0RVTEVTfSwke1NBTUJBNF9BVVRIX01PRFVMRVN9IgorCisjIFRoZXNlIGxpYnJhcmllcyBhcmUgc3VwcG9zZWQgdG8gcmVwbGFjZSBvdGhlcnMgc3VwcGxpZWQgYnkgcGFja2FnZXMsIGJ1dCBkZWNvcmF0ZSB0aGUgbmFtZXMgb2YKKyMgLnNvIGZpbGVzIHNvIHRoZXJlIHdpbGwgbm90IGJlIGEgY29uZmxpY3QuICBUaGlzIGlzIG5vdCBkb25lIGNvbnNpc3RhbnRseSwgc28gYmUgdmVyeSBjYXJlZnVsCisjIHdoZW4gYWRkaW5nIHRvIHRoaXMgbGlzdC4KKyMKK1NBTUJBNF9MSUJTPSJoZWltZGFsLGNtb2NrYSxOT05FIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWZocyBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1waWRkaXI9L3J1biBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1zb2NrZXRzLWRpcj0vcnVuL3NhbWJhIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLW1vZHVsZXNkaXI9JHtsaWJkaXJ9L3NhbWJhIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWxvY2tkaXI9JHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtY2FjaGVkaXI9JHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtcnBhdGgtaW5zdGFsbCBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1zaGFyZWQtbW9kdWxlcz0ke1NBTUJBNF9NT0RVTEVTfSBcCisgICAgICAgICAgICAgICAgIC0tYnVuZGxlZC1saWJyYXJpZXM9JHtTQU1CQTRfTElCU30gXAorICAgICAgICAgICAgICAgICAke0BvZS51dGlscy5jb25kaXRpb25hbCgnVEFSR0VUX0FSQ0gnLCAneDg2XzY0JywgJycsICctLWRpc2FibGUtZ2x1c3RlcmZzJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWNsdXN0ZXItc3VwcG9ydCBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1wcm9maWxpbmctZGF0YSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1saWJpY29udj0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXBhbSAtLXdpdGgtcGFtbW9kdWxlc2Rpcj0ke2Jhc2VfbGliZGlyfS9zZWN1cml0eSBcCisgICAgICAgICAgICAgICAgIgorCitMREZMQUdTICs9ICItV2wsLXoscmVscm8sLXosbm93ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICcgLWZ1c2UtbGQ9YmZkICcsICcnLCBkKX0iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGZvciBzZWN0aW9uIGluIDEgNSA3OyBkbworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuJHNlY3Rpb24KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IGN0ZGIvZG9jLyouJHNlY3Rpb24gJHtEfSR7bWFuZGlyfS9tYW4kc2VjdGlvbgorICAgIGRvbmUKKyAgICBmb3Igc2VjdGlvbiBpbiAxIDUgNyA4OyBkbworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuJHNlY3Rpb24KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IGRvY3MvbWFucGFnZXMvKi4kc2VjdGlvbiAke0R9JHttYW5kaXJ9L21hbiRzZWN0aW9uCisgICAgZG9uZQorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2Jpbi9kZWZhdWx0L3BhY2thZ2luZy9zeXN0ZW1kLyouc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8KKyAgICBzZWQgLWUgJ3MsXChFeGVjUmVsb2FkPVwpLipcKC9raWxsXCksXDEke2Jhc2VfYmluZGlyfVwyLCcgXAorICAgICAgICAtZSAncywvZXRjL3N5c2NvbmZpZy9zYW1iYSwke3N5c2NvbmZkaXJ9L2RlZmF1bHQvc2FtYmEsJyBcCisgICAgICAgIC1pICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Lyouc2VydmljZQorCisgICAgaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYWQtZGMnLCAneWVzJywgJ25vJywgZCl9IiA9ICJubyIgXTsgdGhlbgorICAgICAgICBybSAtZiAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zYW1iYS5zZXJ2aWNlCisgICAgZmkKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorICAgIGluc3RhbGwgLW02NDQgcGFja2FnaW5nL3N5c3RlbWQvc2FtYmEuY29uZi50bXAgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9zYW1iYS5jb25mCisgICAgZWNobyAiZCAke2xvY2Fsc3RhdGVkaXJ9L2xvZy9zYW1iYSAwNzU1IHJvb3Qgcm9vdCAtIiBcCisgICAgICAgID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvc2FtYmEuY29uZgorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSAwNzU1IHBhY2thZ2luZy9zeXN2L3NhbWJhLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NhbWJhCisgICAgc2VkIC1lICdzLC9vcHQvc2FtYmEvYmluLCR7c2JpbmRpcn0sZycgXAorICAgICAgICAtZSAncywvb3B0L3NhbWJhL3NtYi5jb25mLCR7c3lzY29uZmRpcn0vc2FtYmEvc21iLmNvbmYsZycgXAorICAgICAgICAtZSAncywvb3B0L3NhbWJhL2xvZywke2xvY2Fsc3RhdGVkaXJ9L2xvZy9zYW1iYSxnJyBcCisgICAgICAgIC1lICdzLC9ldGMvaW5pdC5kL3NhbWJhLnNlcnZlciwke3N5c2NvbmZkaXJ9L2luaXQuZC9zYW1iYSxnJyBcCisgICAgICAgIC1lICdzLC91c3IvYmluLCR7YmFzZV9iaW5kaXJ9LGcnIFwKKyAgICAgICAgLWkgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NhbWJhCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NhbWJhCisgICAgZWNobyAiMTI3LjAuMC4xIGxvY2FsaG9zdCIgPiAke0R9JHtzeXNjb25mZGlyfS9zYW1iYS9sbWhvc3RzCisgICAgaW5zdGFsbCAtbTY0NCAke1dPUktESVJ9L3NtYi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3NhbWJhL3NtYi5jb25mCisgICAgaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMuMDNfc2FtYmEgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvMDNfc2FtYmEKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAorICAgIGluc3RhbGwgLW02NDQgcGFja2FnaW5nL3N5c3RlbWQvc2FtYmEuc3lzY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvc2FtYmEKKworICAgICMgdGhlIGl0ZW1zIGFyZSBmcm9tIGN0ZGIvdGVzdHMvcnVuX3Rlc3RzLnNoCisgICAgZm9yIGQgaW4gb25ub2RlIHRha2VvdmVyIHRvb2wgZXZlbnRzY3JpcHRzIGN1bml0IHNpbXBsZSBjb21wbGV4OyBkbworICAgICAgICB0ZXN0ZGlyPSR7RH0ke2RhdGFkaXJ9L2N0ZGItdGVzdHMvJGQKKyAgICAgICAgaW5zdGFsbCAtZCAkdGVzdGRpcgorICAgICAgICBjcCAke1N9L2N0ZGIvdGVzdHMvJGQvKi5zaCAkdGVzdGRpcgorICAgICAgICBjcCAtciAke1N9L2N0ZGIvdGVzdHMvJGQvc2NyaXB0cyAke1N9L2N0ZGIvdGVzdHMvJGQvc3R1YnMgJHRlc3RkaXIgfHwgdHJ1ZQorICAgIGRvbmUKKworICAgICMgZml4IGZpbGUtcmRlcHMgcWEgd2FybmluZworICAgIGlmIFsgLWYgJHtEfSR7YmluZGlyfS9vbm5vZGUgXTsgdGhlbgorICAgICAgICBzZWQgLWkgJ3M6XCgjIS9iaW4vXCliYXNoOlwxc2g6JyAke0R9JHtiaW5kaXJ9L29ubm9kZQorICAgIGZpCisKKyAgICBjaG1vZCAwNzUwICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMuZCB8fCB0cnVlCisgICAgcm0gLXJmICR7RH0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biAke0R9JHtsb2NhbHN0YXRlZGlyfS9sb2cKKyAgICAKKyAgICBmb3IgZiBpbiBzYW1iYS1ncHVwZGF0ZSBzYW1iYV91cGdyYWRlZG5zIHNhbWJhX3NwbnVwZGF0ZSBzYW1iYV9rY2Mgc2FtYmFfZG5zdXBkYXRlOyBkbworICAgICAgICBpZiBbIC1mICIke0R9JHtzYmluZGlyfS8kZiIgXTsgdGhlbgorICAgICAgICAgICAgc2VkIC1pIC1lICdzLCR7UFlUSE9OfSwvdXNyL2Jpbi9lbnYgcHl0aG9uMyxnJyAke0R9JHtzYmluZGlyfS8kZgorICAgICAgICBmaQorICAgIGRvbmUKKyAgICBpZiBbIC1mICIke0R9JHtiaW5kaXJ9L3NhbWJhLXRvb2wiIF07IHRoZW4KKyAgICAgICAgc2VkIC1pIC1lICdzLCR7UFlUSE9OfSwvdXNyL2Jpbi9lbnYgcHl0aG9uMyxnJyAke0R9JHtiaW5kaXJ9L3NhbWJhLXRvb2wKKyAgICBmaQorICAgIAorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tcHl0aG9uMyAke1BOfS1waWRsIFwKKyAgICAgICAgICAgICAke1BOfS1kc2RiLW1vZHVsZXMgJHtQTn0tdGVzdHN1aXRlIHJlZ2lzdHJ5LXRvb2xzIFwKKyAgICAgICAgICAgICB3aW5iaW5kIFwKKyAgICAgICAgICAgICAke1BOfS1jb21tb24gJHtQTn0tYmFzZSAke1BOfS1hZC1kYyAke1BOfS1jdGRiLXRlc3RzIFwKKyAgICAgICAgICAgICBzbWJjbGllbnQgJHtQTn0tY2xpZW50ICR7UE59LXNlcnZlciAke1BOfS10ZXN0IgorCitweXRob24gc2FtYmFfcG9wdWxhdGVfcGFja2FnZXMoKSB7CisgICAgZGVmIG1vZHVsZV9ob29rKGZpbGUsIHBrZywgcGF0dGVybiwgZm9ybWF0LCBiYXNlbmFtZSk6CisgICAgICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKKyAgICAgICAgZC5hcHBlbmRWYXIoJ1JSRUNPTU1FTkRTXyVzLWJhc2UnICUgcG4sICcgJXMnICUgcGtnKQorCisgICAgbWxwcmVmaXggPSBkLmdldFZhcignTUxQUkVGSVgnKSBvciAnJworICAgIHBhbV9saWJkaXIgPSBkLmV4cGFuZCgnJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHknKQorICAgIHBhbV9wa2duYW1lID0gbWxwcmVmaXggKyAncGFtLXBsdWdpbiVzJworICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBhbV9saWJkaXIsICdecGFtXyguKilcLnNvJCcsIHBhbV9wa2duYW1lLCAnUEFNIHBsdWdpbiBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnLCBwcmVwZW5kPVRydWUpCisKKyAgICBsaWJkaXIgPSBkLmdldFZhcignbGliZGlyJykKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdebGliKC4qKVwuc29cLi4qJCcsICdsaWIlcycsICdTYW1iYSAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJHtQTn0tY29tbW9uJywgcHJlcGVuZD1UcnVlLCBhbGxvd19saW5rcz1UcnVlKQorICAgIHBrZ2xpYmRpciA9ICclcy9zYW1iYScgJSBsaWJkaXIKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBwa2dsaWJkaXIsICdebGliKC4qKVwuc28kJywgJ2xpYiVzJywgJ1NhbWJhICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScke1BOfS1jb21tb24nLCBwcmVwZW5kPVRydWUpCisgICAgbW9kdWxlZGlyID0gJyVzL3NhbWJhL2F1dGgnICUgbGliZGlyCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbW9kdWxlZGlyLCAnXiguKilcLnNvJCcsICdzYW1iYS1hdXRoLSVzJywgJ1NhbWJhICVzIGF1dGhlbnRpY2F0aW9uIGJhY2tlbmQnLCBob29rPW1vZHVsZV9ob29rLCBleHRyYV9kZXBlbmRzPScnLCBwcmVwZW5kPVRydWUpCisgICAgbW9kdWxlZGlyID0gJyVzL3NhbWJhL3BkYicgJSBsaWJkaXIKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBtb2R1bGVkaXIsICdeKC4qKVwuc28kJywgJ3NhbWJhLXBkYi0lcycsICdTYW1iYSAlcyBwYXNzd29yZCBiYWNrZW5kJywgaG9vaz1tb2R1bGVfaG9vaywgZXh0cmFfZGVwZW5kcz0nJywgcHJlcGVuZD1UcnVlKQorfQorCitQQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gInNhbWJhX3BvcHVsYXRlX3BhY2thZ2VzICIKK1BBQ0tBR0VTX0RZTkFNSUMgPSAic2FtYmEtYXV0aC0uKiBzYW1iYS1wZGItLioiCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1iYXNlICR7UE59LXB5dGhvbjMgJHtQTn0tZHNkYi1tb2R1bGVzIHB5dGhvbjMiCitSREVQRU5EU18ke1BOfS1weXRob24zICs9ICJweXRhbGxvYyBweXRob24zLXRkYiIKKworRklMRVNfJHtQTn0tYmFzZSA9ICIke3NiaW5kaXJ9L25tYmQgXAorICAgICAgICAgICAgICAgICAgICAke3NiaW5kaXJ9L3NtYmQgXAorICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZCBcCisgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbm1iLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3NtYi5zZXJ2aWNlIgorCitGSUxFU18ke1BOfS1hZC1kYyA9ICIke3NiaW5kaXJ9L3NhbWJhIFwKKyAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc2FtYmEuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0va3JiNS9wbHVnaW5zL2tkYi9zYW1iYS5zbyBcCisiCitSREVQRU5EU18ke1BOfS1hZC1kYyA9ICJrcmI1LWtkYyIKKworRklMRVNfJHtQTn0tY3RkYi10ZXN0cyA9ICIke2JpbmRpcn0vY3RkYl9ydW5fdGVzdHMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vY3RkYl9ydW5fY2x1c3Rlcl90ZXN0cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vY3RkYi9ub2RlcyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vY3RkYi10ZXN0cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vY3RkYi90ZXN0cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL2N0ZGIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICIKKworRklMRVNfJHtCUE59LWNvbW1vbiA9ICIke3N5c2NvbmZkaXJ9L2RlZmF1bHQgXAorICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3NhbWJhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAorICAgICAgICAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL3NhbWJhIFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS92ZnMvKi5zbyBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2NoYXJzZXQvKi5zbyBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyouZGF0IFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vYXV0aC8qLnNvIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2N0ZGIvZXZlbnRzLyogXAorIgorCitGSUxFU18ke1BOfS1kc2RiLW1vZHVsZXMgPSAiJHtsaWJkaXJ9L3NhbWJhL2xkYiIKKworRklMRVNfJHtQTn0tdGVzdHN1aXRlID0gIiR7YmluZGlyfS9nZW50ZXN0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbG9ja3Rlc3QgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9tYXNrdGVzdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L25kcmR1bXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJ0b3J0dXJlIgorCitGSUxFU19yZWdpc3RyeS10b29scyA9ICIke2JpbmRpcn0vcmVnZGlmZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vcmVncGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JlZ3NoZWxsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9yZWd0cmVlIgorCitGSUxFU193aW5iaW5kID0gIiR7c2JpbmRpcn0vd2luYmluZGQgXAorICAgICAgICAgICAgICAgICAke2JpbmRpcn0vd2JpbmZvIFwKKyAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L250bG1fYXV0aCBcCisgICAgICAgICAgICAgICAgICR7bGliZGlyfS9zYW1iYS9pZG1hcCBcCisgICAgICAgICAgICAgICAgICR7bGliZGlyfS9zYW1iYS9uc3NfaW5mbyBcCisgICAgICAgICAgICAgICAgICR7bGliZGlyfS93aW5iaW5kX2tyYjVfbG9jYXRvci5zbyBcCisgICAgICAgICAgICAgICAgICR7bGliZGlyfS93aW5iaW5kLWtyYjUtbG9jYWxhdXRoLnNvIFwKKyAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvd2luYmluZCBcCisgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vd2luYmluZC5zZXJ2aWNlIgorCitGSUxFU18ke1BOfS1weXRob24zID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCitGSUxFU19zbWJjbGllbnQgPSAiJHtiaW5kaXJ9L2NpZnNkZCBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwY2NsaWVudCBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmNhY2xzIFwKKyAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21iY2xpZW50IFwKKyAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21iY3F1b3RhcyBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmdldCBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYnNwb29sIFwKKyAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21idGFyIFwKKyAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21idHJlZSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3NhbWJhL3NtYnNwb29sX2tyYjVfd3JhcHBlciIKKworUkRFUEVORFNfJHtQTn0tcGlkbF9hcHBlbmQgPSAiIHBlcmwiCitGSUxFU18ke1BOfS1waWRsID0gIiR7YmluZGlyfS9waWRsICR7ZGF0YWRpcn0vcGVybDUvUGFyc2UiCisKK1JERVBFTkRTXyR7UE59LWNsaWVudCA9ICJcCisgICAgc21iY2xpZW50IFwKKyAgICB3aW5iaW5kIFwKKyAgICByZWdpc3RyeS10b29scyBcCisgICAgJHtQTn0tcGlkbCBcCisgICAgIgorCitBTExPV19FTVBUWV8ke1BOfS1jbGllbnQgPSAiMSIKKworUkRFUEVORFNfJHtQTn0tc2VydmVyID0gIlwKKyAgICAke1BOfSBcCisgICAgd2luYmluZCBcCisgICAgcmVnaXN0cnktdG9vbHMgXAorICAgICIKKworQUxMT1dfRU1QVFlfJHtQTn0tc2VydmVyID0gIjEiCisKK1JERVBFTkRTXyR7UE59LXRlc3QgPSAiXAorICAgICR7UE59LWN0ZGItdGVzdHMgXAorICAgICR7UE59LXRlc3RzdWl0ZSBcCisgICAgIgorCitBTExPV19FTVBUWV8ke1BOfS10ZXN0ID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvdWZ3L3Vmd18wLjMzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Vmdy91ZndfMC4zMy5iYgppbmRleCA2ZmYxMDNjLi40MmZjMjYyIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvdWZ3L3Vmd18wLjMzLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS91ZncvdWZ3XzAuMzMuYmIKQEAgLTE3LDE1ICsxNywxOCBAQAogICAgICAgICAgICBmaWxlOi8vMDAwNC1scDEwMzk3MjkucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwNS1scDExOTExOTcucGF0Y2ggXAogIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9sYXVuY2hwYWQubmV0L3VmdyIKKwogU1JDX1VSSVttZDVzdW1dID0gIjM3NDdiNDUzZDc2NzA5ZTVhOTlkYTIwOWZjMGJiNWY1IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVmODVhODA4NGFkMzUzOWI1NDdiZWMwOTcyODY5NDgyMzMxODhjOTcxZjQ5ODg5MDMxNmRlYzE3MGJkZDFkYTgiCiAKLWluaGVyaXQgc2V0dXB0b29scyBmZWF0dXJlc19jaGVjaworaW5oZXJpdCBzZXR1cHRvb2xzMyBmZWF0dXJlc19jaGVjawogCiBSREVQRU5EU18ke1BOfSA9ICIgXAogICAgICAgICAgICAgICAgICAgaXB0YWJsZXMgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1tb2R1bGVzIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1tb2R1bGVzIFwKICAgICAgICAgICAgICAgICAgIgogCiBSUkVDT01NRU5EU18ke1BOfSA9ICIgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3ZwbmMvdnBuY18wLjUuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS92cG5jL3ZwbmNfMC41LjMuYmIKaW5kZXggZWEyMTc5OS4uNTRlODU1YSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3ZwbmMvdnBuY18wLjUuMy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvdnBuYy92cG5jXzAuNS4zLmJiCkBAIC0yOCw2ICsyOCw4IEBACiBQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLCxnbnV0bHMiCiBQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIiwsb3BlbnNzbCIKIAorUEFDS0FHRVMgPSsgIiR7UE59LXNjcmlwdCIKKwogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogaW5oZXJpdCBwZXJsbmF0aXZlIHBrZ2NvbmZpZwpAQCAtNTQsNiArNTYsOCBAQAogICAgIGluc3RhbGwgLW0gNzU1ICR7RH0ke3N5c2NvbmZkaXJ9L3ZwbmMvdnBuYy1zY3JpcHQgJHtTWVNST09UX0RFU1RESVJ9JHtzeXNjb25mZGlyfS92cG5jCiB9CiAKK0ZJTEVTXyR7UE59LXNjcmlwdCA9ICIke3N5c2NvbmZkaXJ9L3ZwbmMvdnBuYy1zY3JpcHQiCisKIENPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3ZwbmMvZGVmYXVsdC5jb25mIgotUkRFUEVORFNfJHtQTn0gPSAicGVybC1tb2R1bGUtaW8tZmlsZSIKK1JERVBFTkRTXyR7UE59ID0gInBlcmwtbW9kdWxlLWlvLWZpbGUgJHtQTn0tc2NyaXB0IgogUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS10dW4iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvd29sZnNzbC93b2xmc3NsXzQuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dvbGZzc2wvd29sZnNzbF80LjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZjOGNkMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvd29sZnNzbC93b2xmc3NsXzQuMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJ3b2xmU1NMIExpZ2h0d2VpZ2h0IEVtYmVkZGVkIFNTTC9UTFMgTGlicmFyeSIKLURFU0NSSVBUSU9OID0gIndvbGZTU0wsIGZvcm1lcmx5IEN5YVNTTCwgaXMgYSBsaWdodHdlaWdodCBTU0wgbGlicmFyeSB3cml0dGVuIFwKLSAgICAgICAgICAgICAgIGluIEMgYW5kIG9wdGltaXplZCBmb3IgZW1iZWRkZWQgYW5kIFJUT1MgZW52aXJvbm1lbnRzLiBJdCBjYW4gXAotICAgICAgICAgICAgICAgYmUgdXAgdG8gMjAgdGltZXMgc21hbGxlciB0aGFuIE9wZW5TU0wgd2hpbGUgc3RpbGwgc3VwcG9ydGluZyBcCi0gICAgICAgICAgICAgICBhIGZ1bGwgVExTIGNsaWVudCBhbmQgc2VydmVyLCB1cCB0byBUTFMgMS4zIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cud29sZnNzbC5jb20vcHJvZHVjdHMvd29sZnNzbCIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL3dvbGZzc2wvd29sZnNzbC9pc3N1ZXMiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLVBST1ZJREVTICs9ICJjeWFzc2wiCi1SUFJPVklERVNfJHtQTn0gPSAiY3lhc3NsIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vd29sZlNTTC93b2xmc3NsLmdpdDtwcm90b2NvbD1odHRwcyIKLVNSQ1JFViA9ICIzZjEzYjQ5ZmEzMThmYmQzMjE2ZDdkYTM2ZDk0MmU3YzI3NmQzNDEzIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotQkJDTEFTU0VYVEVORCArPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS93b2xmc3NsL3dvbGZzc2xfNC40LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvd29sZnNzbC93b2xmc3NsXzQuNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiN2IwZDQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvd29sZnNzbC93b2xmc3NsXzQuNC4wLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAid29sZlNTTCBMaWdodHdlaWdodCBFbWJlZGRlZCBTU0wvVExTIExpYnJhcnkiCitERVNDUklQVElPTiA9ICJ3b2xmU1NMLCBmb3JtZXJseSBDeWFTU0wsIGlzIGEgbGlnaHR3ZWlnaHQgU1NMIGxpYnJhcnkgd3JpdHRlbiBcCisgICAgICAgICAgICAgICBpbiBDIGFuZCBvcHRpbWl6ZWQgZm9yIGVtYmVkZGVkIGFuZCBSVE9TIGVudmlyb25tZW50cy4gSXQgY2FuIFwKKyAgICAgICAgICAgICAgIGJlIHVwIHRvIDIwIHRpbWVzIHNtYWxsZXIgdGhhbiBPcGVuU1NMIHdoaWxlIHN0aWxsIHN1cHBvcnRpbmcgXAorICAgICAgICAgICAgICAgYSBmdWxsIFRMUyBjbGllbnQgYW5kIHNlcnZlciwgdXAgdG8gVExTIDEuMyIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LndvbGZzc2wuY29tL3Byb2R1Y3RzL3dvbGZzc2wiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS93b2xmc3NsL3dvbGZzc2wvaXNzdWVzIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitQUk9WSURFUyArPSAiY3lhc3NsIgorUlBST1ZJREVTXyR7UE59ID0gImN5YXNzbCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3dvbGZTU0wvd29sZnNzbC5naXQ7cHJvdG9jb2w9aHR0cHMiCitTUkNSRVYgPSAiZTExNmM4OWE1OGFmNzUwNDIxZDgyZWNlMTNmODA1MTZkMmJkZTAyZSIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0JCQ0xBU1NFWFRFTkQgKz0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtbmV0d29ya2luZy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS1uZXR3b3JraW5nLmJiCmluZGV4IDkxMDliMTAuLjFlMTBjMzAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS1uZXR3b3JraW5nLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS1uZXR3b3JraW5nLmJiCkBAIC0zNiw3ICszNiw3IEBACiAgICAgbGliZG5ldCB1ZncgY2l2ZXR3ZWIgZnJlZXJhZGl1cyBrZWEgZGFxIFwKICAgICBtYmVkdGxzIHJlbGF5ZCBzbm9ydCBkaGNwY2QgcmRhdGUgdmxhbiB2cG5jIFwKICAgICBpbmV0dXRpbHMgd29sZnNzbCBsZnRwIG1pbml1cG5wZCBuZXR3b3JrbWFuYWdlciBcCi0gICAgbmV0d29ya21hbmFnZXItb3BlbnZwbiByZGlzdCBuYW5vbXNnIHB5dGhvbi1uZXR3b3JrbWFuYWdlciBcCisgICAgbmV0d29ya21hbmFnZXItb3BlbnZwbiByZGlzdCBuYW5vbXNnIHB5dGhvbjMtbmV0d29ya21hbmFnZXIgXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAiYmx1ZXRvb3RoIHgxMSIsICJibHVlbWFuIiwgIiIsIGQpfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwYW0iLCAic2FtYmEiLCAiIiwgZCl9IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInBhbSIsICJzYW1iYSIsICIiLCBkKX0gXApAQCAtNTUsNyArNTUsNyBAQAogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtbmV0d29ya2luZy1kYWVtb25zX3JlbW92ZV9saWJjLW11c2wgPSAib3BlbnNhZiIKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtbmV0d29ya2luZy1kZXZ0b29scyA9ICJcCi0gICAgcHl0aG9uLWxkYXAgZ3JwYyBcCisgICAgcHl0aG9uMy1sZGFwIFwKICAgICAiCiAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW5ldHdvcmtpbmctZXh0ZW5kZWQgPSAiXApAQCAtMTA3LDEyICsxMDcsMTIgQEAKICAgICB0dW5jdGwgZG92ZWNvdCBpcHZzYWRtIHN0dW5uZWwgY2hyb255IHNwaWNlLXByb3RvY29sIFwKICAgICB1c2JyZWRpciBudG9wIHdpcmVzaGFyayB0bmZ0cCBsa3NjdHAtdG9vbHMgXAogICAgIGNpbS1zY2hlbWEtZG9jcyBjaW0tc2NoZW1hLWZpbmFsIGNpbS1zY2hlbWEtZXhwZXIgXAotICAgIGxpYm1lbWNhY2hlZCBzbWNyb3V0ZSBsaWJ0ZXZlbnQgaXBjYWxjIGMtYXJlcyB1ZnRwIFwKKyAgICBsaWJtZW1jYWNoZWQgc21jcm91dGUgbGlidGV2ZW50IGlwY2FsYyB1ZnRwIFwKICAgICBudGltZWQgbGludXgtYXRtIHNzbXRwIG9wZW52cG4gcmRtYS1jb3JlIFwKICAgICBpZnRvcCBhb2V0b29scyB0Y3BzbGljZSB0Y3BkdW1wIGxpYnRhbGxvYyBtZW1jYWNoZWQgbnV0dGNwIG5ldGNhdCBcCiAgICAgbmV0Y2F0LW9wZW5ic2QgZmV0Y2htYWlsIHlwLXRvb2xzIHlwYmluZC1tdCB5cC10b29scyBcCiAgICAgYXJwdGFibGVzIG1hY2NoYW5nZXIgbmdodHRwMiBzdHJvbmdzd2FuIGZwaW5nIFwKLSAgICBkbnNzZWMtY29uZiBsaWJlc210cCBjaWZzLXV0aWxzIG9wZW4taXNucyBcCisgICAgbGliZXNtdHAgY2lmcy11dGlscyBvcGVuLWlzbnMgXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAicGFtIiwgImxpYmxkYiIsICIiLCBkKX0gXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCIsICJub24tY29tbWVyY2lhbCIsICJuZXRwZXJmIiwgIiIsIGQpfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCJUUkFOU0xBVEVEX1RBUkdFVF9BUkNIIiwgImk1ODYgeDg2LTY0IiwgInNwaWNlIiwgIiIsIGQpfSBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2N5cnVzLXNhc2wvY3lydXMtc2FzbC9DVkUtMjAxOS0xOTkwNi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvY3lydXMtc2FzbC9jeXJ1cy1zYXNsL0NWRS0yMDE5LTE5OTA2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NDc4MGYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2N5cnVzLXNhc2wvY3lydXMtc2FzbC9DVkUtMjAxOS0xOTkwNi5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIDk0ZmU2ZWI5ZWEyNjkxZjRhN2MzMmZiZjJkMGM3YzQ1NDk5NWI2NjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyNyBGZWIgMjAyMCAxMTowODo1NyArMDgwMAorU3ViamVjdDogW1BBVENIXSBGaXggIzU4NworCitPZmYgYnkgb25lIGVycm9yIGluIGNvbW1vbi5jLCBDVkUtMjAxOS0xOTkwNi4KKworVGhhbmtzIHRvIFN0ZXBoYW4gWmVpc2JlcmcgZm9yIHJlcG9ydGluZworCitDVkU6IENWRS0yMDE5LTE5OTA2CisKK1Vwc3RyZWFtLVN0YXV0czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9jeXJ1c2ltYXAvY3lydXMtc2FzbAorL2NvbW1pdC9kY2M5ZjUxY2JkNGVkNjIyY2ZiMGY5YjFjMTQxZWIyZmZlM2IxMmYxXQorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliL2NvbW1vbi5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliL2NvbW1vbi5jIGIvbGliL2NvbW1vbi5jCitpbmRleCAzMDUzMTFkLi40NDVjNWQ1IDEwMDY0NAorLS0tIGEvbGliL2NvbW1vbi5jCisrKysgYi9saWIvY29tbW9uLmMKK0BAIC0xOTAsNyArMTkwLDcgQEAgaW50IF9zYXNsX2FkZF9zdHJpbmcoY2hhciAqKm91dCwgc2l6ZV90ICphbGxvY2xlbiwKKyAKKyAgIGlmIChhZGQ9PU5VTEwpIGFkZCA9ICIobnVsbCkiOworIAorLSAgYWRkbGVuPXN0cmxlbihhZGQpOyAvKiBvbmx5IGNvbXB1dGUgb25jZSAqLworKyAgYWRkbGVuPXN0cmxlbihhZGQpKzE7IC8qIG9ubHkgY29tcHV0ZSBvbmNlICovCisgICBpZiAoX2J1Zl9hbGxvYyhvdXQsIGFsbG9jbGVuLCAoKm91dGxlbikrYWRkbGVuKSE9U0FTTF9PSykKKyAgICAgcmV0dXJuIFNBU0xfTk9NRU07CisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvY3lydXMtc2FzbC9jeXJ1cy1zYXNsXzIuMS4yNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvY3lydXMtc2FzbC9jeXJ1cy1zYXNsXzIuMS4yNy5iYgppbmRleCBiZTcxMzFkLi5kNTVkYzRhIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2N5cnVzLXNhc2wvY3lydXMtc2FzbF8yLjEuMjcuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2xfMi4xLjI3LmJiCkBAIC0xNiw2ICsxNiw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDA0LWNvbmZpZ3VyZS5hYy1maXgtY29uZGl0aW9uLWZvci1zdXBwbGltZW50LXNucHJpbnRmLWkucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1BbGxvdy1zYXNsYXV0aGQtdG8tYmUtYnVpbHQtb3V0c2lkZS1vZi1zb3VyY2UtdHJlZS13LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZWluaXQuc2gtZml4LXBhcmFsbGVsLWJ1aWxkLWlzc3VlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTE5OTA2LnBhdGNoIFwKICAgICAgICAgICAgIgogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2N5cnVzaW1hcC9jeXJ1cy1zYXNsL2FyY2hpdmVzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pZ21wcHJveHkvaWdtcHByb3h5XzAuMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pZ21wcHJveHkvaWdtcHByb3h5XzAuMi4xLmJiCmluZGV4IGRiOTZkNDguLjAwNDQzM2IgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaWdtcHByb3h5L2lnbXBwcm94eV8wLjIuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lnbXBwcm94eS9pZ21wcHJveHlfMC4yLjEuYmIKQEAgLTgsNCArOCw2IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiM2E5YzJjYjQyYzFmNWVlMGNiNzY5YTQ4ODQ1NDU2NDEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDM1MWU2MjMwMzczOTBmNTc1YzEyMDNkOWNiYjdiYTMzYThiZGVmODVhM2M1ZTFkMjkwMWM1YTJhMzg0NDlhMSIKIAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9wYWxpLyR7QlBOfS9yZWxlYXNlcyIKKwogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lzY3NpLWluaXRpYXRvci11dGlscy9pc2NzaS1pbml0aWF0b3ItdXRpbHNfMi4wLjg3OC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2lzY3NpLWluaXRpYXRvci11dGlsc18yLjAuODc4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzVlNTRiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2lzY3NpLWluaXRpYXRvci11dGlsc18yLjAuODc4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLVNVTU1BUlkgPSAiaVNDU0kgZGFlbW9uIGFuZCB1dGlsaXR5IHByb2dyYW1zIgotREVTQ1JJUFRJT04gPSAiT3Blbi1pU0NTSSBwcm9qZWN0IGlzIGEgaGlnaCBwZXJmb3JtYW5jZSwgdHJhbnNwb3J0IFwKLWluZGVwZW5kZW50LCBtdWx0aS1wbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbiBvZiBSRkMzNzIwLiBUaGUgaXNjc2kgcGFja2FnZSBcCi1wcm92aWRlcyB0aGUgc2VydmVyIGRhZW1vbiBmb3IgdGhlIGlTQ1NJIHByb3RvY29sLCBhcyB3ZWxsIGFzIHRoZSB1dGlsaXR5IFwKLXByb2dyYW1zIHVzZWQgdG8gbWFuYWdlIGl0LiBpU0NTSSBpcyBhIHByb3RvY29sIGZvciBkaXN0cmlidXRlZCBcCi1kaXNrIGFjY2VzcyB1c2luZyBTQ1NJIGNvbW1hbmRzIHNlbnQgb3ZlciBJbnRlcm5ldCBQcm90b2NvbCBuZXR3b3Jrcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW4taXNjc2kuY29tLyIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKLVNFQ1RJT04gPSAibmV0IgotREVQRU5EUyA9ICJvcGVuc3NsIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSBvcGVuLWlzbnMgdXRpbC1saW51eCBrbW9kIgotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQnLCAnJywgZCl9IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotU1JDUkVWID89ICIyODhhZGQyMmQ2YjYxY2M2OGVkZTM1OGZhZWVjOWFmZmIxNTAxOWNkIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3Blbi1pc2NzaS9vcGVuLWlzY3NpIFwKLSAgICAgICAgICAgZmlsZTovL2luaXRkLmRlYmlhbiBcCi0gICAgICAgICAgIGZpbGU6Ly85OV9pc2NzaS1pbml0aWF0b3ItdXRpbHMgXAotICAgICAgICAgICBmaWxlOi8vaXNjc2ktaW5pdGlhdG9yIFwKLSAgICAgICAgICAgZmlsZTovL2lzY3NpLWluaXRpYXRvci5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL2lzY3NpLWluaXRpYXRvci10YXJnZXRzLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vc2V0X2luaXRpYXRvcm5hbWUgXAotICAgICAgICAgICAiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotQiA9ICIke1dPUktESVJ9L2J1aWxkIgotCi1QViAuPSAiK2dpdCR7U1JDUFZ9IgotCi1pbmhlcml0IHVwZGF0ZS1yYy5kIHN5c3RlbWQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLXRhcmdldD0ke1RBUkdFVF9TWVN9IFwKLSAgICAtLWhvc3Q9JHtCVUlMRF9TWVN9IFwKLSIKLQotRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnJywgJy0td2l0aG91dC1zeXN0ZW1kJywgICAgIGQpfSIKLQotRVhUUkFfT0VNQUtFID0gJyBcCi0gICAgT1M9IiR7VEFSR0VUX1NZU30iIFwKLSAgICBUQVJHRVQ9IiR7VEFSR0VUX09TfSIgXAotICAgIEJBU0U9IiR7cHJlZml4fSIgXAotICAgIE1BTkRJUj0iJHttYW5kaXJ9IiBcCi0gICAgT1BURkxBR1M9Ii1ETk9fU1lTVEVNRCAke0NGTEFHU30iIFwKLSAgICBQS0dfQ09ORklHPSIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGtnLWNvbmZpZyIgXAotICAgIE5PX1NZU1RFTUQ9MSBcCi0nCi0KLQotZG9fY29uZmlndXJlICgpIHsKLSAgICBjZCAke1N9L2lzY3NpdWlvIDsgYXV0b3JlY29uZiAtLWluc3RhbGw7IC4vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQotfQotCi1kb19jb21waWxlICgpIHsKLSAgICAjIE1ha2Ugc3VyZSB3ZSBETyBOT1QgcmVnZW5lcmF0ZSBwcm9tX2xleC5jLgotICAgIGlmIFsgLWYgJHtTfS91dGlscy9md3BhcmFtX2liZnQvcHJvbV9sZXgubCBdOyB0aGVuCi0gICAgICAgIG12ICR7U30vdXRpbHMvZndwYXJhbV9pYmZ0L3Byb21fbGV4LmwgJHtTfS91dGlscy9md3BhcmFtX2liZnQvcHJvbV9sZXgubC51bnVzZWQKLSAgICBmaQotICAgIG9lX3J1bm1ha2UgLUMgJHtTfSAke0VYVFJBX09FTUFLRX0gdXNlcgotfQotCi1kb19pbnN0YWxsICgpIHsKLSAgICAjaW5zdGFsbCBuZWNlc3NhcnkgZGlyZWN0b3JpZXMKLSAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9IFwKLSAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kIFwKLSAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vaXNjc2kgXAotICAgICAgICAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvaXNjc2kvbm9kZXMgXAotICAgICAgICAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvaXNjc2kvc2VuZF90YXJnZXRzIFwKLSAgICAgICAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2lzY3NpL3N0YXRpYyBcCi0gICAgICAgICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9pc2NzaS9pc25zIFwKLSAgICAgICAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2lzY3NpL3NscCBcCi0gICAgICAgICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9pc2NzaS9pZmFjZXMgXAotICAgICAgICAke0R9JHtsaWJkaXJ9IFwKLSAgICAgICAgJHtEfSR7bWFuZGlyfS9tYW44Ci0KLSAgICBpbnN0YWxsIC1wIC1tIDc1NSAke1N9L3Vzci9pc2NzaWQgJHtTfS91c3IvaXNjc2lhZG0gXAotICAgICAgICAke1N9L3V0aWxzL2lzY3NpLWluYW1lIFwKLSAgICAgICAgJHtTfS91c3IvaXNjc2lzdGFydCAke0R9LyR7c2JpbmRpcn0KLQotICAgIGNwIC1kUiAke1N9L2xpYm9wZW5pc2NzaXVzci9saWJvcGVuaXNjc2l1c3Iuc28qICR7RH0ke2xpYmRpcn0KLSAgICBpbnN0YWxsIC1wIC1tIDY0NCAke1N9L2RvYy9pc2NzaWFkbS44ICR7U30vZG9jL2lzY3NpZC44ICR7RH0vJHttYW5kaXJ9L21hbjgKLSAgICBpbnN0YWxsIC1wIC1tIDY0NCAke1N9L2V0Yy9pc2NzaWQuY29uZiAke0R9JHtzeXNjb25mZGlyfS9pc2NzaQotICAgIGluc3RhbGwgLXAgLW0gNzU1ICR7V09SS0RJUn0vaW5pdGQuZGViaWFuICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9pc2NzaWQKLQotICAgIHNlZCAtaSAtZSAiczo9IC9zYmluL2lzY3NpZDo9ICR7c2JpbmRpcn0vaXNjc2lkOiIgJHtEfSR7c3lzY29uZmRpcn0vaXNjc2kvaXNjc2lkLmNvbmYKLQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotICAgICAgICBlY2hvICJkIC9ydW4vJHtCUE59L2xvY2sgLSAtIC0gLSIgXAotICAgICAgICAgICAgICAgICAgICAgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2lzY3NpLmNvbmYKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9L2V0Yy9kZWZhdWx0LwotICAgICAgICBpbnN0YWxsIC1wIC1tIDc1NSAke1dPUktESVJ9L2lzY3NpLWluaXRpYXRvciAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0LwotCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2lzY3NpLWluaXRpYXRvci5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7V09SS0RJUn0vaXNjc2ktaW5pdGlhdG9yLXRhcmdldHMuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtub25hcmNoX2xpYmRpcn0vaXNjc2kKLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vc2V0X2luaXRpYXRvcm5hbWUgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2lzY3NpCi0gICAgZWxzZQotICAgICAgICBpbnN0YWxsIC1kICR7RH0vZXRjL2RlZmF1bHQvdm9sYXRpbGVzCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9Lzk5X2lzY3NpLWluaXRpYXRvci11dGlscyAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcwotICAgIGZpCi19Ci0KLXBrZ19wb3N0aW5zdF8ke1BOfSgpIHsKLSAgICBpZiBbICJ4JEQiID0gIngiIF07IHRoZW4KLSAgICAgICAgaWYgWyAtZSAvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdOyB0aGVuCi0gICAgICAgICAgICAvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKLSAgICAgICAgZWxpZiBjb21tYW5kIC12IHN5c3RlbWQtdG1wZmlsZXMgPi9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgICAgc3lzdGVtZC10bXBmaWxlcyAtLWNyZWF0ZSAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvaXNjc2kuY29uZgotICAgICAgICBmaQotICAgIGZpCi19Ci0KLVNZU1RFTURfU0VSVklDRSA9ICIgaXNjc2ktaW5pdGlhdG9yLnNlcnZpY2UgaXNjc2ktaW5pdGlhdG9yLXRhcmdldHMuc2VydmljZSAiCi1JTklUU0NSSVBUX05BTUUgPSAiaXNjc2lkIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMzAgMSAyIDMgNCA1IC4gc3RvcCA3MCAwIDEgMiAzIDQgNSA2IC4iCi0KLUZJTEVTXyR7UE59ICs9ICIke25vbmFyY2hfbGliZGlyfS9pc2NzaSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2lzY3NpLWluaXRpYXRvci11dGlsc18yLjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2lzY3NpLWluaXRpYXRvci11dGlsc18yLjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2I1NTYzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pc2NzaS1pbml0aWF0b3ItdXRpbHMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzXzIuMS4wLmJiCkBAIC0wLDAgKzEsMTIwIEBACitTVU1NQVJZID0gImlTQ1NJIGRhZW1vbiBhbmQgdXRpbGl0eSBwcm9ncmFtcyIKK0RFU0NSSVBUSU9OID0gIk9wZW4taVNDU0kgcHJvamVjdCBpcyBhIGhpZ2ggcGVyZm9ybWFuY2UsIHRyYW5zcG9ydCBcCitpbmRlcGVuZGVudCwgbXVsdGktcGxhdGZvcm0gaW1wbGVtZW50YXRpb24gb2YgUkZDMzcyMC4gVGhlIGlzY3NpIHBhY2thZ2UgXAorcHJvdmlkZXMgdGhlIHNlcnZlciBkYWVtb24gZm9yIHRoZSBpU0NTSSBwcm90b2NvbCwgYXMgd2VsbCBhcyB0aGUgdXRpbGl0eSBcCitwcm9ncmFtcyB1c2VkIHRvIG1hbmFnZSBpdC4gaVNDU0kgaXMgYSBwcm90b2NvbCBmb3IgZGlzdHJpYnV0ZWQgXAorZGlzayBhY2Nlc3MgdXNpbmcgU0NTSSBjb21tYW5kcyBzZW50IG92ZXIgSW50ZXJuZXQgUHJvdG9jb2wgbmV0d29ya3MuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuLWlzY3NpLmNvbS8iCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCitTRUNUSU9OID0gIm5ldCIKK0RFUEVORFMgPSAib3BlbnNzbCBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgb3Blbi1pc25zIHV0aWwtbGludXgga21vZCIKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICdzeXN0ZW1kJywgJycsIGQpfSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK1NSQ1JFViA/PSAiNTQ5Zjg5ODdiZTQ5NTgzYmIwNmIxMTdhMzY0YmVhM2E4ZmM1MjUwYyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW4taXNjc2kvb3Blbi1pc2NzaSBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0ZC5kZWJpYW4gXAorICAgICAgICAgICBmaWxlOi8vOTlfaXNjc2ktaW5pdGlhdG9yLXV0aWxzIFwKKyAgICAgICAgICAgZmlsZTovL2lzY3NpLWluaXRpYXRvciBcCisgICAgICAgICAgIGZpbGU6Ly9pc2NzaS1pbml0aWF0b3Iuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9pc2NzaS1pbml0aWF0b3ItdGFyZ2V0cy5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3NldF9pbml0aWF0b3JuYW1lIFwKKyAgICAgICAgICAgIgorUyA9ICIke1dPUktESVJ9L2dpdCIKK0IgPSAiJHtXT1JLRElSfS9idWlsZCIKKworUFYgLj0gIitnaXQke1NSQ1BWfSIKKworaW5oZXJpdCB1cGRhdGUtcmMuZCBzeXN0ZW1kIGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS10YXJnZXQ9JHtUQVJHRVRfU1lTfSBcCisgICAgLS1ob3N0PSR7QlVJTERfU1lTfSBcCisiCisKK0VYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJycsICctLXdpdGhvdXQtc3lzdGVtZCcsICAgICBkKX0iCisKK0VYVFJBX09FTUFLRSA9ICcgXAorICAgIE9TPSIke1RBUkdFVF9TWVN9IiBcCisgICAgVEFSR0VUPSIke1RBUkdFVF9PU30iIFwKKyAgICBCQVNFPSIke3ByZWZpeH0iIFwKKyAgICBNQU5ESVI9IiR7bWFuZGlyfSIgXAorICAgIE9QVEZMQUdTPSItRE5PX1NZU1RFTUQgJHtDRkxBR1N9IiBcCisgICAgUEtHX0NPTkZJRz0iJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BrZy1jb25maWciIFwKKyAgICBOT19TWVNURU1EPTEgXAorJworCisKK2RvX2NvbmZpZ3VyZSAoKSB7CisgICAgY2QgJHtTfS9pc2NzaXVpbyA7IGF1dG9yZWNvbmYgLS1pbnN0YWxsOyAuL2NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0KK30KKworZG9fY29tcGlsZSAoKSB7CisgICAgIyBNYWtlIHN1cmUgd2UgRE8gTk9UIHJlZ2VuZXJhdGUgcHJvbV9sZXguYy4KKyAgICBpZiBbIC1mICR7U30vdXRpbHMvZndwYXJhbV9pYmZ0L3Byb21fbGV4LmwgXTsgdGhlbgorICAgICAgICBtdiAke1N9L3V0aWxzL2Z3cGFyYW1faWJmdC9wcm9tX2xleC5sICR7U30vdXRpbHMvZndwYXJhbV9pYmZ0L3Byb21fbGV4LmwudW51c2VkCisgICAgZmkKKyAgICBvZV9ydW5tYWtlIC1DICR7U30gJHtFWFRSQV9PRU1BS0V9IHVzZXIKK30KKworZG9faW5zdGFsbCAoKSB7CisgICAgI2luc3RhbGwgbmVjZXNzYXJ5IGRpcmVjdG9yaWVzCisgICAgaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfSBcCisgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCBcCisgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L2lzY3NpIFwKKyAgICAgICAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2lzY3NpL25vZGVzIFwKKyAgICAgICAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2lzY3NpL3NlbmRfdGFyZ2V0cyBcCisgICAgICAgICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9pc2NzaS9zdGF0aWMgXAorICAgICAgICAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvaXNjc2kvaXNucyBcCisgICAgICAgICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9pc2NzaS9zbHAgXAorICAgICAgICAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvaXNjc2kvaWZhY2VzIFwKKyAgICAgICAgJHtEfSR7bGliZGlyfSBcCisgICAgICAgICR7RH0ke21hbmRpcn0vbWFuOAorCisgICAgaW5zdGFsbCAtcCAtbSA3NTUgJHtTfS91c3IvaXNjc2lkICR7U30vdXNyL2lzY3NpYWRtIFwKKyAgICAgICAgJHtTfS91dGlscy9pc2NzaS1pbmFtZSBcCisgICAgICAgICR7U30vdXNyL2lzY3Npc3RhcnQgJHtEfS8ke3NiaW5kaXJ9CisKKyAgICBjcCAtZFIgJHtTfS9saWJvcGVuaXNjc2l1c3IvbGlib3BlbmlzY3NpdXNyLnNvKiAke0R9JHtsaWJkaXJ9CisgICAgaW5zdGFsbCAtcCAtbSA2NDQgJHtTfS9kb2MvaXNjc2lhZG0uOCAke1N9L2RvYy9pc2NzaWQuOCAke0R9LyR7bWFuZGlyfS9tYW44CisgICAgaW5zdGFsbCAtcCAtbSA2NDQgJHtTfS9ldGMvaXNjc2lkLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vaXNjc2kKKyAgICBpbnN0YWxsIC1wIC1tIDc1NSAke1dPUktESVJ9L2luaXRkLmRlYmlhbiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvaXNjc2lkCisKKyAgICBzZWQgLWkgLWUgInM6PSAvc2Jpbi9pc2NzaWQ6PSAke3NiaW5kaXJ9L2lzY3NpZDoiICR7RH0ke3N5c2NvbmZkaXJ9L2lzY3NpL2lzY3NpZC5jb25mCisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKKyAgICAgICAgZWNobyAiZCAvcnVuLyR7QlBOfS9sb2NrIC0gLSAtIC0iIFwKKyAgICAgICAgICAgICAgICAgICAgID4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9pc2NzaS5jb25mCisgICAgICAgIGluc3RhbGwgLWQgJHtEfS9ldGMvZGVmYXVsdC8KKyAgICAgICAgaW5zdGFsbCAtcCAtbSA3NTUgJHtXT1JLRElSfS9pc2NzaS1pbml0aWF0b3IgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC8KKworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9pc2NzaS1pbml0aWF0b3Iuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke1dPUktESVJ9L2lzY3NpLWluaXRpYXRvci10YXJnZXRzLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2lzY3NpCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3NldF9pbml0aWF0b3JuYW1lICR7RH0ke25vbmFyY2hfbGliZGlyfS9pc2NzaQorICAgIGVsc2UKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS85OV9pc2NzaS1pbml0aWF0b3ItdXRpbHMgJHtEfS9ldGMvZGVmYXVsdC92b2xhdGlsZXMKKyAgICBmaQorfQorCitwa2dfcG9zdGluc3RfJHtQTn0oKSB7CisgICAgaWYgWyAieCREIiA9ICJ4IiBdOyB0aGVuCisgICAgICAgIGlmIFsgLWUgL2V0Yy9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggXTsgdGhlbgorICAgICAgICAgICAgL2V0Yy9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggdXBkYXRlCisgICAgICAgIGVsaWYgY29tbWFuZCAtdiBzeXN0ZW1kLXRtcGZpbGVzID4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgICAgIHN5c3RlbWQtdG1wZmlsZXMgLS1jcmVhdGUgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2lzY3NpLmNvbmYKKyAgICAgICAgZmkKKyAgICBmaQorfQorCitTWVNURU1EX1NFUlZJQ0UgPSAiIGlzY3NpLWluaXRpYXRvci5zZXJ2aWNlIGlzY3NpLWluaXRpYXRvci10YXJnZXRzLnNlcnZpY2UgIgorSU5JVFNDUklQVF9OQU1FID0gImlzY3NpZCIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDMwIDEgMiAzIDQgNSAuIHN0b3AgNzAgMCAxIDIgMyA0IDUgNiAuIgorCitGSUxFU18ke1BOfSArPSAiJHtub25hcmNoX2xpYmRpcn0vaXNjc2kiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2tlZXBhbGl2ZWQva2VlcGFsaXZlZF8yLjAuMTkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2tlZXBhbGl2ZWQva2VlcGFsaXZlZF8yLjAuMTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4MTgyYjEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9rZWVwYWxpdmVkL2tlZXBhbGl2ZWRfMi4wLjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotU1VNTUFSWSA9ICJIaWdoIEF2YWlsYWJpbGl0eSBtb25pdG9yIGJ1aWx0IHVwb24gTFZTLCBWUlJQIGFuZCBzZXJ2aWNlIHBvbGxlcnMiCi1ERVNDUklQVElPTiA9ICJLZWVwYWxpdmVkIGlzIGEgcm91dGluZyBzb2Z0d2FyZSB3cml0dGVuIGluIEMuIFRoZSBtYWluIGdvYWwgXAotb2YgdGhpcyBwcm9qZWN0IGlzIHRvIHByb3ZpZGUgc2ltcGxlIGFuZCByb2J1c3QgZmFjaWxpdGllcyBmb3IgbG9hZGJhbGFuY2luZyBcCi1hbmQgaGlnaC1hdmFpbGFiaWxpdHkgdG8gTGludXggc3lzdGVtIGFuZCBMaW51eCBiYXNlZCBpbmZyYXN0cnVjdHVyZXMuIFwKLUxvYWRiYWxhbmNpbmcgZnJhbWV3b3JrIHJlbGllcyBvbiB3ZWxsLWtub3duIGFuZCB3aWRlbHkgdXNlZCBMaW51eCBWaXJ0dWFsIFwKLVNlcnZlciAoSVBWUykga2VybmVsIG1vZHVsZSBwcm92aWRpbmcgTGF5ZXI0IGxvYWRiYWxhbmNpbmcgXAotIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rZWVwYWxpdmVkLm9yZy8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmtlZXBhbGl2ZWQub3JnL3NvZnR3YXJlLyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkZjY3MGUwOTA0ZDRlNDhlNzJjY2M4NDA5YWQ5YzZkZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwZTJmODQ1NDc2NWJjNmE1ZmEyNjc1OGJkOWNlYzE4YWFlNDI4ODI4NDNjZGQyNDg0OGFmZjBhZTY1Y2U0Y2E3IgotCi1ERVBFTkRTID0gImxpYm5mbmV0bGluayBvcGVuc3NsIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAotCi1QQUNLQUdFQ09ORklHID8/PSAibGlibmwgc25tcCBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2xpYm5sXSA9ICItLWVuYWJsZS1saWJubCwtLWRpc2FibGUtbGlibmwsbGlibmwiCi1QQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAsbmV0LXNubXAiCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1pbml0PXN5c3RlbWQgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sLS13aXRoLWluaXQ9U1lTVixzeXN0ZW1kIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWxpYmlwdGMiCi1FWFRSQV9PRU1BS0UgPSAiaW5pdGRpcj0ke3N5c2NvbmZkaXJ9L2luaXQuZCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgWyAtZiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59IF07IHRoZW4KLSAgICAgICAgY2htb2QgMDc1NSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59Ci0gICAgICAgIHNlZCAtaSAncyNyYy5kLyMjJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59Ci0gICAgZmkKLQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke0J9LyR7QlBOfS8ke0JQTn0uc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8ke0JQTn0uc2VydmljZQotICAgIGZpCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3NubXAvbWlicy9LRUVQQUxJVkVELU1JQi50eHQiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJrZWVwYWxpdmVkLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID89ICJkaXNhYmxlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9rZWVwYWxpdmVkL2tlZXBhbGl2ZWRfMi4wLjIwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9rZWVwYWxpdmVkL2tlZXBhbGl2ZWRfMi4wLjIwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzYzMzZGMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2tlZXBhbGl2ZWQva2VlcGFsaXZlZF8yLjAuMjAuYmIKQEAgLTAsMCArMSw0NSBAQAorU1VNTUFSWSA9ICJIaWdoIEF2YWlsYWJpbGl0eSBtb25pdG9yIGJ1aWx0IHVwb24gTFZTLCBWUlJQIGFuZCBzZXJ2aWNlIHBvbGxlcnMiCitERVNDUklQVElPTiA9ICJLZWVwYWxpdmVkIGlzIGEgcm91dGluZyBzb2Z0d2FyZSB3cml0dGVuIGluIEMuIFRoZSBtYWluIGdvYWwgXAorb2YgdGhpcyBwcm9qZWN0IGlzIHRvIHByb3ZpZGUgc2ltcGxlIGFuZCByb2J1c3QgZmFjaWxpdGllcyBmb3IgbG9hZGJhbGFuY2luZyBcCithbmQgaGlnaC1hdmFpbGFiaWxpdHkgdG8gTGludXggc3lzdGVtIGFuZCBMaW51eCBiYXNlZCBpbmZyYXN0cnVjdHVyZXMuIFwKK0xvYWRiYWxhbmNpbmcgZnJhbWV3b3JrIHJlbGllcyBvbiB3ZWxsLWtub3duIGFuZCB3aWRlbHkgdXNlZCBMaW51eCBWaXJ0dWFsIFwKK1NlcnZlciAoSVBWUykga2VybmVsIG1vZHVsZSBwcm92aWRpbmcgTGF5ZXI0IGxvYWRiYWxhbmNpbmcgXAorIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rZWVwYWxpdmVkLm9yZy8iCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmtlZXBhbGl2ZWQub3JnL3NvZnR3YXJlLyR7QlB9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhNTk2NmU4NDMzYjYwOTk4NzA5YzRhOTIyYTQwN2JhYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NjcwZmJjNWViM2RjMTEzODI4YmU4YjcwMjU0OWRjNjhlYzk1NzhjZjgzMjg3NTIwZDkzNWJlNzZmYzhmMTkzIgorCitERVBFTkRTID0gImxpYm5mbmV0bGluayBvcGVuc3NsIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAorCitQQUNLQUdFQ09ORklHID8/PSAibGlibmwgc25tcCBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2xpYm5sXSA9ICItLWVuYWJsZS1saWJubCwtLWRpc2FibGUtbGlibmwsbGlibmwiCitQQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAsbmV0LXNubXAiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1pbml0PXN5c3RlbWQgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sLS13aXRoLWluaXQ9U1lTVixzeXN0ZW1kIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWxpYmlwdGMiCitFWFRSQV9PRU1BS0UgPSAiaW5pdGRpcj0ke3N5c2NvbmZkaXJ9L2luaXQuZCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgWyAtZiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59IF07IHRoZW4KKyAgICAgICAgY2htb2QgMDc1NSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59CisgICAgICAgIHNlZCAtaSAncyNyYy5kLyMjJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59CisgICAgZmkKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke0J9LyR7QlBOfS8ke0JQTn0uc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8ke0JQTn0uc2VydmljZQorICAgIGZpCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3NubXAvbWlicy9LRUVQQUxJVkVELU1JQi50eHQiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJrZWVwYWxpdmVkLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID89ICJkaXNhYmxlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWYvMDAwMS1pbW1vbV9weXRob24tY29udmVydC10by1weXRob24zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWYvMDAwMS1pbW1vbV9weXRob24tY29udmVydC10by1weXRob24zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0NTg3NDYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZi8wMDAxLWltbW9tX3B5dGhvbi1jb252ZXJ0LXRvLXB5dGhvbjMucGF0Y2gKQEAgLTAsMCArMSw1MCBAQAorRnJvbSBmZmM4Mjk2MDNhMmM1MDY3NGM4ZTA0ZGU1MjIxZTQzZjgwYmZjMWIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmV5IFpoaXpoaWtpbiA8YW5kcmV5LnpAZ21haWwuY29tPgorRGF0ZTogTW9uLCAyNyBKYW4gMjAyMCAxMzowMDo1MyArMDAwMAorU3ViamVjdDogW1BBVENIXSBpbW1vbV9weXRob246IGNvbnZlcnQgdG8gcHl0aG9uMworCitDb252ZXJ0IGltbW9tX3B5dGhvbiB0byB1c2UgcHl0aG9uMywgcHl0aG9uMiBpcyBFT0wgYW5kIGlzIG5vdCBzdXBwb3J0ZWQKK2J5IGFsbCBkaXN0cmlidXRpb25zIGFueW1vcmUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBBbmRyZXkgWmhpemhpa2luIDxhbmRyZXkuekBnbWFpbC5jb20+CistLS0KKyBzYW1wbGVzL2ltbXN2L2ltbW9tX3B5dGhvbi9pbW1vbS5weSAgICAgICAgIHwgMiArLQorIHNhbXBsZXMvaW1tc3YvaW1tb21fcHl0aG9uL2ltbW9tZXhhbXBsZXMucHkgfCAyICstCisgc2FtcGxlcy9pbW1zdi9pbW1vbV9weXRob24vaW1tb210ZXN0LnB5ICAgICB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NhbXBsZXMvaW1tc3YvaW1tb21fcHl0aG9uL2ltbW9tLnB5IGIvc2FtcGxlcy9pbW1zdi9pbW1vbV9weXRob24vaW1tb20ucHkKK2luZGV4IDRmNjg2MjVlZC4uZjg4MTk3MDAwIDEwMDc1NQorLS0tIGEvc2FtcGxlcy9pbW1zdi9pbW1vbV9weXRob24vaW1tb20ucHkKKysrKyBiL3NhbXBsZXMvaW1tc3YvaW1tb21fcHl0aG9uL2ltbW9tLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9weXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgaW1tb20gLS0gQW4gSU1NIE9iamVjdCBNYW5hZ2VyIGluIFB5dGhvbgorIAorZGlmZiAtLWdpdCBhL3NhbXBsZXMvaW1tc3YvaW1tb21fcHl0aG9uL2ltbW9tZXhhbXBsZXMucHkgYi9zYW1wbGVzL2ltbXN2L2ltbW9tX3B5dGhvbi9pbW1vbWV4YW1wbGVzLnB5CitpbmRleCA3MGM1NzkyNjUuLmJkNjkzYzI1ZiAxMDA3NTUKKy0tLSBhL3NhbXBsZXMvaW1tc3YvaW1tb21fcHl0aG9uL2ltbW9tZXhhbXBsZXMucHkKKysrKyBiL3NhbXBsZXMvaW1tc3YvaW1tb21fcHl0aG9uL2ltbW9tZXhhbXBsZXMucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhIC91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgCisgaW1wb3J0IGltbW9tCisgCitkaWZmIC0tZ2l0IGEvc2FtcGxlcy9pbW1zdi9pbW1vbV9weXRob24vaW1tb210ZXN0LnB5IGIvc2FtcGxlcy9pbW1zdi9pbW1vbV9weXRob24vaW1tb210ZXN0LnB5CitpbmRleCA0Yjk4YmVhOGMuLmVkMjQ2M2JhOSAxMDA3NTUKKy0tLSBhL3NhbXBsZXMvaW1tc3YvaW1tb21fcHl0aG9uL2ltbW9tdGVzdC5weQorKysrIGIvc2FtcGxlcy9pbW1zdi9pbW1vbV9weXRob24vaW1tb210ZXN0LnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyAKKyBpbXBvcnQgaW1tb20KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmXzUuMTkuMTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZl81LjE5LjEwLmJiCmluZGV4IGE3ZWI0YzguLjNhYjQ3NTcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmXzUuMTkuMTAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWZfNS4xOS4xMC5iYgpAQCAtMTQsNyArMTQsNyBAQAogTElDRU5TRSA9ICJMR1BMdjIuMSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyIKIAotREVQRU5EUyA9ICJsaWJ4bWwyIHB5dGhvbiIKK0RFUEVORFMgPSAibGlieG1sMiBweXRob24zIgogVE9PTENIQUlOID0gImdjYyIKIAogU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCkBAIC0yNiwxMCArMjYsMTMgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtaW1tcGJlX2R1bXAuY2MtVXNlLXN5cy13YWl0LmgtaW5zdGVhZC1vZi13YWl0LmgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtY29uZmlndXJlLXRpbWUtY2hlY2stZm9yLWdldHRpZC1BUEkucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1jcmVhdGVfZW1wdHlfbGlicmFyeS1Vc2UtQ0MtdmFyaWFibGUtaW50ZWFkLW9mLWhhcmRjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW1tb21fcHl0aG9uLWNvbnZlcnQtdG8tcHl0aG9uMy5wYXRjaCBcCiAgICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICI5YjYxZGYwMWQxYTA5MjEwMWM0YTYyNjY5MmVkYWUxOSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZGE5YWY5NmU4ZWU1OGQxMTAzMWQzMDViZjQ4MDRhMDBkZWI2MTA4ZTEyZTQyMjcyMjg4MmEyMDkxYmQzNGJkIgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9vcGVuc2FmL2ZpbGVzL3JlbGVhc2VzIgorCiBpbmhlcml0IGF1dG90b29scyB1c2VyYWRkIHN5c3RlbWQgcGtnY29uZmlnCiAKIFVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCkBAIC02Niw3ICs2OSw3IEBACiAKIElOU0FORV9TS0lQXyR7UE59ID0gImRldi1zbyIKIAotUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcHl0aG9uIgorUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcHl0aG9uMy1jb3JlIgogCiAjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xODY5NzAvCiBDT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsID0gJ251bGwnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvcG9zdGZpeC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvcG9zdGZpeC5pbmMKaW5kZXggNjRjMjBkMC4uNGI5OTQwYyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L3Bvc3RmaXguaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9wb3N0Zml4LmluYwpAQCAtMjAsMTYgKzIwLDE2IEBACiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgogCi1pbmhlcml0IHVwZGF0ZS1yYy5kIHVzZXJhZGQgdXBkYXRlLWFsdGVybmF0aXZlcyBzeXN0ZW1kCitpbmhlcml0IHVwZGF0ZS1yYy5kIHVzZXJhZGQgdXBkYXRlLWFsdGVybmF0aXZlcyBzeXN0ZW1kIGxpYl9wYWNrYWdlCiAKIElOSVRTQ1JJUFRfTkFNRSA9ICJwb3N0Zml4IgogSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgNTggMyA0IDUgLiBzdG9wIDEzIDAgMSA2IC4iCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9IFwKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0tYmluIgorVVNFUkFERF9QQVJBTV8ke1BOfS1iaW4gPSBcCiAiLWQgL3Zhci9zcG9vbC9wb3N0Zml4IC1yIC1nIHBvc3RmaXggLS1zaGVsbCAvYmluL2ZhbHNlIHBvc3RmaXg7IFwKICAtZCAvdmFyL3Nwb29sL3ZtYWlsIC1yIC1nIHZtYWlsIC0tc2hlbGwgL2Jpbi9mYWxzZSB2bWFpbCBcCiAiCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSBwb3N0Zml4Oy0tc3lzdGVtIHBvc3Rkcm9wOy0tc3lzdGVtIHZtYWlsIgorR1JPVVBBRERfUEFSQU1fJHtQTn0tYmluID0gIi0tc3lzdGVtIHBvc3RmaXg7LS1zeXN0ZW0gcG9zdGRyb3A7LS1zeXN0ZW0gdm1haWwiCiAKIGV4cG9ydCBTWVNMSUJTID0gIiR7TERGTEFHU30iCiAKQEAgLTE4NSw5ICsxODUsOSBAQAogICAgIGxuIC1zZiAuLi9zYmluL3NlbmRtYWlsLnBvc3RmaXggJHtEfSR7YmluZGlyfS9tYWlscQogfQogCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJzZW5kbWFpbCBtYWlscSBuZXdhbGlhc2VzIgorQUxURVJOQVRJVkVfJHtQTn0tYmluID0gInNlbmRtYWlsIG1haWxxIG5ld2FsaWFzZXMiCiAjIC91c3IvbGliL3NlbmRtaWFsIGlzIHJlcXVpcmVkIGJ5IExTQiBjb3JlIHRlc3QKLUFMVEVSTkFUSVZFXyR7UE59X2xpbnV4c3RkYmFzZSA9ICJzZW5kbWFpbCBtYWlscSBuZXdhbGlhc2VzIHVzci1saWItc2VuZG1haWwiCitBTFRFUk5BVElWRV8ke1BOfS1iaW5fbGludXhzdGRiYXNlID0gInNlbmRtYWlsIG1haWxxIG5ld2FsaWFzZXMgdXNyLWxpYi1zZW5kbWFpbCIKIEFMVEVSTkFUSVZFX1RBUkdFVFttYWlscV0gPSAiJHtiaW5kaXJ9L21haWxxIgogQUxURVJOQVRJVkVfVEFSR0VUW25ld2FsaWFzZXNdID0gIiR7YmluZGlyfS9uZXdhbGlhc2VzIgogQUxURVJOQVRJVkVfVEFSR0VUW3NlbmRtYWlsXSA9ICIke3NiaW5kaXJ9L3NlbmRtYWlsLnBvc3RmaXgiCkBAIC0yMTIsOSArMjEyLDExIEBACiB9CiAKIFBBQ0tBR0VTID0rICIke1BOfS1jZmciCitSREVQRU5EU18ke1BOfS1jZmdfY2xhc3MtdGFyZ2V0ICs9ICIke1BOfS1iaW4iCiBSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiR7UE59LWNmZyIKICMgRXhjbHVkZSAuZGVidWcgZGlyZWN0b3JpZXMgZnJvbSB0aGUgbWFpbiBwYWNrYWdlCi1GSUxFU18ke1BOfSA9ICIke2xvY2Fsc3RhdGVkaXJ9ICR7YmluZGlyfS8qICR7c2JpbmRpcn0vKiBcCitGSUxFU18ke1BOfS1iaW4gKz0gIiR7bG9jYWxzdGF0ZWRpcn0gJHtiaW5kaXJ9LyogJHtzYmluZGlyfS8qIFwKICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vKiAke3N5c3RlbWRfdW5pdGRpcn0vKiIKIEZJTEVTXyR7UE59LWNmZyA9ICIke3N5c2NvbmZkaXJ9IgogRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmV4ZWNkaXJ9L3Bvc3RmaXgvLmRlYnVnIgorQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9wb3N0Zml4XzMuNC43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L3Bvc3RmaXhfMy40LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2OTllZTUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L3Bvc3RmaXhfMy40LjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1yZXF1aXJlIHBvc3RmaXguaW5jCi0KLVNSQ19VUkkgKz0gImZ0cDovL2Z0cC5wb3JjdXBpbmUub3JnL21pcnJvcnMvcG9zdGZpeC1yZWxlYXNlL29mZmljaWFsL3Bvc3RmaXgtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL21ha2VkZWZzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2luc3RhbGwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFpbi5jZiBcCi0gICAgICAgICAgIGZpbGU6Ly9wb3N0Zml4IFwKLSAgICAgICAgICAgZmlsZTovL2ludGVybmFsX3JlY2lwaWVudCBcCi0gICAgICAgICAgIGZpbGU6Ly9wb3N0Zml4LnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vYWxpYXNlc2RiIFwKLSAgICAgICAgICAgZmlsZTovL2NoZWNrX2hvc3RuYW1lLnNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZWRlZnMtVXNlLW5hdGl2ZS1jb21waWxlci10by1idWlsZC1tYWtlZGVmcy50ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3Bvc3RmaXgtaW5zdGFsbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pY3UtY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZWRlZnMtYWRkLWxuc2wtYW5kLWxyZXNvbHYtdG8tU1lTTElCUy1ieS1kZWZhdWx0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4ZWQtYnVpbGQtZmFpbHVyZS13aXRoLWdsaWJjLTIuMzAtZHVlLXRvLWRyb3BwZWQtUi5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiMjlhYjg1ZThmNmVmN2ZhZTEzMmIwMDRlNzc3NjcxYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZTMyNTMxMjFkM2JhODgzNmEyMzc3NDIyNTUxODU2MGIzNWU0MDQ5Nzk1MWFkNWJlYzE1NGFmYTgyMDVmOTY3IgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJwb3N0Zml4XC0oP1A8cHZlcj4zXC4zKFwuXGQrKSspLnRhci5neiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9wb3N0Zml4XzMuNC44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L3Bvc3RmaXhfMy40LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ3ZjhiYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9wb3N0Zml4XzMuNC44LmJiCkBAIC0wLDAgKzEsMjEgQEAKK3JlcXVpcmUgcG9zdGZpeC5pbmMKKworU1JDX1VSSSArPSAiZnRwOi8vZnRwLnBvcmN1cGluZS5vcmcvbWlycm9ycy9wb3N0Zml4LXJlbGVhc2Uvb2ZmaWNpYWwvcG9zdGZpeC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbWFrZWRlZnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaW5zdGFsbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tYWluLmNmIFwKKyAgICAgICAgICAgZmlsZTovL3Bvc3RmaXggXAorICAgICAgICAgICBmaWxlOi8vaW50ZXJuYWxfcmVjaXBpZW50IFwKKyAgICAgICAgICAgZmlsZTovL3Bvc3RmaXguc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9hbGlhc2VzZGIgXAorICAgICAgICAgICBmaWxlOi8vY2hlY2tfaG9zdG5hbWUuc2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtlZGVmcy1Vc2UtbmF0aXZlLWNvbXBpbGVyLXRvLWJ1aWxkLW1ha2VkZWZzLnRlc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcG9zdGZpeC1pbnN0YWxsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ljdS1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtlZGVmcy1hZGQtbG5zbC1hbmQtbHJlc29sdi10by1TWVNMSUJTLWJ5LWRlZmF1bHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXhlZC1idWlsZC1mYWlsdXJlLXdpdGgtZ2xpYmMtMi4zMC1kdWUtdG8tZHJvcHBlZC1SLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjY5NDRiOTQ2ODg3MDc3YTI4ZTNkY2IzNzVmZjUzNzAxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhkNWQ0Mjk3MzdlMGM2NDUxNDAyOGE4MmZjMDA2Y2JiMjczZDJjYjk4ZGM0MGViMWRiYmZlMTAyZjI5YTg5NDMiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInBvc3RmaXhcLSg/UDxwdmVyPjNcLjMoXC5cZCspKykudGFyLmd6IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wcm9mdHBkL3Byb2Z0cGRfMS4zLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Byb2Z0cGQvcHJvZnRwZF8xLjMuNi5iYgppbmRleCA0MDk5NDcyLi5kNWJiZGQzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Byb2Z0cGQvcHJvZnRwZF8xLjMuNi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Byb2Z0cGQvcHJvZnRwZF8xLjMuNi5iYgpAQCAtMTYsNyArMTYsNyBAQAogaVNSQ19VUklbbWQ1c3VtXSA9ICIxMzI3MDkxMWM0MmFhYzg0MjQzNWYxODIwNTU0NmExYiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MWVmNzRiMTQzNDk1ZDVmZjk3YzRkNDc3MGM2ODA0MDcyYThjOGViMWFkMWVjYzhjYzU0MWI0MGUxNTJlY2FmIgogCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXNlcmFkZCB1cGRhdGUtcmMuZCBzeXN0ZW1kCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXNlcmFkZCB1cGRhdGUtcmMuZCBzeXN0ZW1kIG11bHRpbGliX3NjcmlwdAogCiBQQUNLQUdFQ09ORklHID8/PSAic2hhZG93IFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2IHBhbScsIGQpfSBcCkBAIC0xMTAsNiArMTEwLDcgQEAKICAgICBzZWQgLWUgJ3N8LS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH18fGcnIFwKICAgICAgICAgLWUgJ3N8JHtTVEFHSU5HX0RJUl9OQVRJVkV9fHxnJyBcCiAgICAgICAgIC1lICdzfC1mZGVidWctcHJlZml4LW1hcD1bXiBdKnx8ZycgXAorICAgICAgICAtZSAnc3wtZm1hY3JvLXByZWZpeC1tYXA9W14gXSp8fGcnIFwKICAgICAgICAgLWkgJHtEfS8ke2JpbmRpcn0vcHJ4cwogCiAgICAgIyBmdHBtYWlsIHBlcmwgc2NyaXB0LCB3aGljaCByZWFkcyB0aGUgcHJvZnRwZCBsb2cgZmlsZSBhbmQgc2VuZHMKQEAgLTEzMyw2ICsxMzQsOCBAQAogVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtZyAke0ZUUEdST1VQfSAtLWhvbWUtZGlyIC92YXIvbGliLyR7RlRQVVNFUn0gLS1uby1jcmVhdGUtaG9tZSBcCiAgICAgICAgICAgICAgICAgICAgICAgIC0tc2hlbGwgL2Jpbi9mYWxzZSAke0ZUUFVTRVJ9IgogCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59OiR7YmluZGlyfS9wcnhzIgorCiBGSUxFU18ke1BOfSArPSAiL2hvbWUvJHtGVFBVU0VSfSIKIAogUkRFUEVORFNfJHtQTn0gKz0gInBlcmwiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3B0cGQvcHRwZF8yLjMuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcHRwZC9wdHBkXzIuMy4xLmJiCmluZGV4IDJiZDY0MjcuLmNhYjBkOTQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcHRwZC9wdHBkXzIuMy4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcHRwZC9wdHBkXzIuMy4xLmJiCkBAIC0zMSw2ICszMSw4IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiMjUzYmFiN2FiNTFkOTY5NjE2ZWE4MTFiZTFmMTMyZjMiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGRiZjU0ZGQyYzE3OGJkOWZlNjI0ODFkMmMzNzUxM2VlMzY2MzZkOGJmMTM3Y2ZkYWQ5Njg5MTQ5MGNkYmY5MyIKIAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvcHRwZC9maWxlcy9yZWxlYXNlcyIKKwogUyA9ICIke1dPUktESVJ9L3B0cGQtJHtQVn0iCiAKIEVYVFJBX09FTUFLRSA9ICIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL3NxdWlkXzQuOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvc3F1aWRfNC45LmJiCmluZGV4IDZmMjAyY2YuLjE5OTQ5YWMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvc3F1aWRfNC45LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvc3F1aWRfNC45LmJiCkBAIC00MCw2ICs0MCw4IEBACiAKIExERkxBR1NfYXBwZW5kX21pcHNhcmNoID0gIiAtbGF0b21pYyIKIExERkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sYXRvbWljIgorTERGTEFHU19hcHBlbmRfcmlzY3Y2NCA9ICIgLWxhdG9taWMiCitMREZMQUdTX2FwcGVuZF9yaXNjdjMyID0gIiAtbGF0b21pYyIKIAogVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKIFVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLWhvbWUtZGlyIC92YXIvcnVuL3NxdWlkIC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgc3F1aWQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3RmdHAtaHBhL3RmdHAtaHBhXzUuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdGZ0cC1ocGEvdGZ0cC1ocGFfNS4yLmJiCmluZGV4IDEzMjk3MmIuLjQxMzk1MGIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdGZ0cC1ocGEvdGZ0cC1ocGFfNS4yLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdGZ0cC1ocGEvdGZ0cC1ocGFfNS4yLmJiCkBAIC04MiwxMCArODIsMTUgQEAKIElOSVRTQ1JJUFRfTkFNRSA9ICJ0ZnRwZC1ocGEiCiBJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAyMCAyIDMgNCA1IC4gc3RvcCAyMCAxIC4iCiAKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJ0ZnRwZC44IHRmdHAuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt0ZnRwZC44XSA9ICIke21hbmRpcn0vbWFuOC90ZnRwZC44IgorQUxURVJOQVRJVkVfTElOS19OQU1FW3RmdHAuMV0gPSAiJHttYW5kaXJ9L21hbjEvdGZ0cC4xIgorCiBBTFRFUk5BVElWRV8ke1BOfSA9ICJ0ZnRwIgogQUxURVJOQVRJVkVfVEFSR0VUW3RmdHBdID0gIiR7YmluZGlyfS90ZnRwLWhwYSIKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjYwIgogCisKIFNZU1RFTURfUEFDS0FHRVMgPSAidGZ0cC1ocGEtc2VydmVyIgogU1lTVEVNRF9TRVJWSUNFX3RmdHAtaHBhLXNlcnZlciA9ICJ0ZnRwZC1ocGEuc29ja2V0IHRmdHBkLWhwYS5zZXJ2aWNlIgogU1lTVEVNRF9BVVRPX0VOQUJMRV90ZnRwLWhwYS1zZXJ2ZXIgPSAiZW5hYmxlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjXzEuMjQuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRldnRvb2xzL2dycGMvZ3JwY18xLjI0LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhYjE1ZGEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjXzEuMjQuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkEgaGlnaCBwZXJmb3JtYW5jZSwgb3BlbiBzb3VyY2UsIGdlbmVyYWwtcHVycG9zZSBSUEMgZnJhbWV3b3JrLiBcCi1Qcm92aWRlcyBnUlBDIGxpYnJhcmllcyBmb3IgbXVsdGlwbGUgbGFuZ3VhZ2VzIHdyaXR0ZW4gb24gdG9wIG9mIHNoYXJlZCBDIGNvcmUgbGlicmFyeSBcCi0oQysrLCBOb2RlLmpzLCBQeXRob24sIFJ1YnksIE9iamVjdGl2ZS1DLCBQSFAsIEMjKSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ncnBjL2dycGMiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFwYWNoZS0yIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCi0KLURFUEVORFMgPSAiZ2ZsYWdzIGMtYXJlcyBwcm90b2J1ZiBwcm90b2J1Zi1uYXRpdmUgcHJvdG9idWYtYyBwcm90b2J1Zi1jLW5hdGl2ZSBvcGVuc3NsIGxpYm5zbDIiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGdvb2dsZXRlc3QgZ3JwYy1uYXRpdmUgIgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBncnBjLW5hdGl2ZSAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi1TUkNSRVZfZ3JwYyA9ICIyZGUyZThkZDg5MjFlMWY3ZDA0M2UwMWZhZjdmZThhMjkxZmJiMDcyIgotU1JDUkVWX3VwYiA9ICI5ZWZmY2JjYjI3ZjBhNjY1ZjlmMzQ1MDMwMTg4YzBiMjkxZTMyNDgyIgotQlJBTkNIID0gInYxLjI0LngiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZ3JwYy9ncnBjLmdpdDtwcm90b2NvbD1odHRwcztuYW1lPWdycGM7YnJhbmNoPSR7QlJBTkNIfSBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vcHJvdG9jb2xidWZmZXJzL3VwYjtuYW1lPXVwYjtkZXN0c3VmZml4PWdpdC90aGlyZF9wYXJ0eS91cGIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1DTWFrZUxpc3RzLnR4dC1GaXgtbGlicmFyaWVzLWluc3RhbGxhdGlvbi1mb3ItTGludXgucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGZpbGU6Ly8wMDAxLUNNYWtlTGlzdHMudHh0LUZpeC1ncnBjX2NwcF9wbHVnaW4tcGF0aC1kdXJpbmctY3Jvc3MucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgZmlsZTovLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWdycGNfY3BwX3BsdWdpbi1wYXRoLWR1cmluZy1jcm9zcy5wYXRjaCIKLQotIyBGaXhlcyBidWlsZCB3aXRoIG9sZGVyIGNvbXBpbGVycyA0LjggZXNwZWNpYWxseSBvbiB1YnVudHUgMTQuMDQKLUNYWEZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1XbCwtLW5vLWFzLW5lZWRlZCIKLQotaW5oZXJpdCBjbWFrZSBwa2djb25maWcKLQotRVhUUkFfT0VDTUFLRSA9ICIgXAotICAgIC1EZ1JQQ19DQVJFU19QUk9WSURFUj1wYWNrYWdlIFwKLSAgICAtRGdSUENfWkxJQl9QUk9WSURFUj1wYWNrYWdlIFwKLSAgICAtRGdSUENfU1NMX1BST1ZJREVSPXBhY2thZ2UgXAotICAgIC1EZ1JQQ19QUk9UT0JVRl9QUk9WSURFUj1wYWNrYWdlIFwKLSAgICAtRGdSUENfR0ZMQUdTX1BST1ZJREVSPXBhY2thZ2UgXAotICAgIC1EZ1JQQ19JTlNUQUxMPU9OIFwKLSAgICAtRENNQUtFX0NST1NTQ09NUElMSU5HPU9OIFwKLSAgICAtREJVSUxEX1NIQVJFRF9MSUJTPU9OIFwKLSAgICAtRGdSUENfSU5TVEFMTF9MSUJESVI9JHtiYXNlbGlifSBcCi0gICAgLURnUlBDX0lOU1RBTExfQ01BS0VESVI9JHtiYXNlbGlifS9jbWFrZS8ke0JQTn0gXAotICAgICIKLQotZG9fY29uZmlndXJlX3ByZXBlbmRfbWlwc2FyY2goKSB7Ci0gICAgc2VkIC1pIC1lICJzL3NldChfZ1JQQ19BTExUQVJHRVRTX0xJQlJBUklFUyBcJHtDTUFLRV9ETF9MSUJTfSBydCBtIHB0aHJlYWQpL3NldChfZ1JQQ19BTExUQVJHRVRTX0xJQlJBUklFUyBcJHtDTUFLRV9ETF9MSUJTfSBhdG9taWMgcnQgbSBwdGhyZWFkKS9nIiAke1N9L0NNYWtlTGlzdHMudHh0Ci19Ci0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX3Bvd2VycGMoKSB7Ci0gICAgc2VkIC1pIC1lICJzL3NldChfZ1JQQ19BTExUQVJHRVRTX0xJQlJBUklFUyBcJHtDTUFLRV9ETF9MSUJTfSBydCBtIHB0aHJlYWQpL3NldChfZ1JQQ19BTExUQVJHRVRTX0xJQlJBUklFUyBcJHtDTUFLRV9ETF9MSUJTfSBhdG9taWMgcnQgbSBwdGhyZWFkKS9nIiAke1N9L0NNYWtlTGlzdHMudHh0Ci19Ci0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX3Rvb2xjaGFpbi1jbGFuZ194ODYoKSB7Ci0gICAgc2VkIC1pIC1lICJzL3NldChfZ1JQQ19BTExUQVJHRVRTX0xJQlJBUklFUyBcJHtDTUFLRV9ETF9MSUJTfSBydCBtIHB0aHJlYWQpL3NldChfZ1JQQ19BTExUQVJHRVRTX0xJQlJBUklFUyBcJHtDTUFLRV9ETF9MSUJTfSBhdG9taWMgcnQgbSBwdGhyZWFkKS9nIiAke1N9L0NNYWtlTGlzdHMudHh0Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotU1lTUk9PVF9ESVJTX0JMQUNLTElTVF9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiR7YmFzZWxpYn0vY21ha2UvZ3JwYyIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxkYXBfMy4yLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxkYXBfMy4yLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmODk2MWUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sZGFwXzMuMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTIgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCi0jCi1TVU1NQVJZID0gIlByb3ZpZGVzIGEgd3JhcHBlciBpbiBQeXRob24gdG8gTERBUCIKLURFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgTERBUCBcCi0oTGlnaHR3ZWlnaHQgRGlyZWN0b3J5IEFjY2VzcyBQcm90b2NvbCkgdGhyb3VnaCBQeXRob24gb3BlcmF0aW9ucyBcCi1pbnN0ZWFkIG9mIEMgQVBJLiBUaGUgbW9kdWxlIG1haW5seSBhY3RzIGFzIGEgd3JhcHBlciBmb3IgdGhlIFwKLU9wZW5MREFQIDIueCBsaWJyYXJpZXMuIEVycm9ycyB3aWxsIGFwcGVhciBhcyBleGNlcHRpb25zLiIKLQotTElDRU5TRSA9ICJQU0YiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnB5dGhvbi1sZGFwLm9yZy8iCi1ERVBFTkRTID0gInB5dGhvbiBvcGVubGRhcCBjeXJ1cy1zYXNsIgotCi1QWVBJX1BBQ0tBR0UgPSAicHl0aG9uLWxkYXAiCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT0zNmNlOWQ3MjZkMDMyMWI3M2MxNTIxNzA0ZDA3ZGIxYiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmZTIyNTIyMjA4ZGM5YjA2ZDE2ZWI3MGY4NTUzZWFhYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZDFjNGIxNTM3NWE1MzM1NjRhYWQzZDNkZWFkZTc4OTIyMWU0NTAwNTJiMjFlYmI5NzIwZmI4MjJlY2NkYjhlIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgJ3M6XmxpYnJhcnlfZGlycyA9Lio6Oicgc2V0dXAuY2ZnCi0gICAgc2VkIC1pIC1lICdzOl5pbmNsdWRlX2RpcnMgPS4qOmluY2x1ZGVfZGlycyA9ID0vdXNyL2luY2x1ZGUvc2FzbC86JyBzZXR1cC5jZmcKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSAgICAke1BZVEhPTl9QTn0tcHlhc24xIFwKLSAgICAke1BZVEhPTl9QTn0tcHlhc24xLW1vZHVsZXMgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbGRhcF8zLjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWxkYXBfMy4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ2ZGRiZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWxkYXBfMy4yLjAuYmIKQEAgLTAsMCArMSwzMSBAQAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTIgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCisjCitTVU1NQVJZID0gIlByb3ZpZGVzIGEgd3JhcHBlciBpbiBQeXRob24gdG8gTERBUCIKK0RFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgTERBUCBcCisoTGlnaHR3ZWlnaHQgRGlyZWN0b3J5IEFjY2VzcyBQcm90b2NvbCkgdGhyb3VnaCBQeXRob24gb3BlcmF0aW9ucyBcCitpbnN0ZWFkIG9mIEMgQVBJLiBUaGUgbW9kdWxlIG1haW5seSBhY3RzIGFzIGEgd3JhcHBlciBmb3IgdGhlIFwKK09wZW5MREFQIDIueCBsaWJyYXJpZXMuIEVycm9ycyB3aWxsIGFwcGVhciBhcyBleGNlcHRpb25zLiIKKworTElDRU5TRSA9ICJQU0YiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnB5dGhvbi1sZGFwLm9yZy8iCitERVBFTkRTID0gInB5dGhvbjMgb3BlbmxkYXAgY3lydXMtc2FzbCIKKworUFlQSV9QQUNLQUdFID0gInB5dGhvbi1sZGFwIgoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTM2Y2U5ZDcyNmQwMzIxYjczYzE1MjE3MDRkMDdkYjFiIgorU1JDX1VSSVttZDVzdW1dID0gImZlMjI1MjIyMDhkYzliMDZkMTZlYjcwZjg1NTNlYWFiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdkMWM0YjE1Mzc1YTUzMzU2NGFhZDNkM2RlYWRlNzg5MjIxZTQ1MDA1MmIyMWViYjk3MjBmYjgyMmVjY2RiOGUiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIHNlZCAtaSAtZSAnczpebGlicmFyeV9kaXJzID0uKjo6JyAke1N9L3NldHVwLmNmZworICAgIHNlZCAtaSAtZSAnczpeaW5jbHVkZV9kaXJzID0uKjppbmNsdWRlX2RpcnMgPSA9L3Vzci9pbmNsdWRlL3Nhc2wvOicgJHtTfS9zZXR1cC5jZmcKK30KKworUkRFUEVORFNfJHtQTn0gPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tcHlhc24xIFwKKyAgICAke1BZVEhPTl9QTn0tcHlhc24xLW1vZHVsZXMgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmMvMDAwMS1jb25maWd1cmUuYWMtZml4LXBrZ2NvbmZpZy1pc3N1ZS1vZi1yZG1hLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmMvMDAwMS1jb25maWd1cmUuYWMtZml4LXBrZ2NvbmZpZy1pc3N1ZS1vZi1yZG1hLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZGM3NjQ1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2Nvcm9zeW5jL2Nvcm9zeW5jLzAwMDEtY29uZmlndXJlLmFjLWZpeC1wa2djb25maWctaXNzdWUtb2YtcmRtYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBmaXggcGtnY29uZmlnIGlzc3VlIG9mIHJkbWEKLQotcGtnY29uZmlnIGZpbGVzIGZyb20gcmRtYS1jb3JlKGh0dHBzOi8vZ2l0aHViLmNvbS9saW51eC1yZG1hL3JkbWEtY29yZSkKLWFyZSBuYW1lZCBzdGFydCB3aXRoIGxpYiwgc3VjaCBhcyBsaWJyZG1hY20ucGMgYW5kIGxpYmlidmVyYnMucGMuIFdoZW4KLXJkbWEgc3VwcG9ydCBpcyBlbmFibGVkLCBpdCBmYWlscyB0byBmaW5kIHJkbWEgcmVsYXRlZCBsaWJyYXJpZXMuIFVwZGF0ZQotY29uZmlndXJlLmFjIHRvIHRoZSBpc3N1ZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9jb3Jvc3luYy9jb3Jvc3luYy9wdWxsLzUxNV0KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBhYzUxM2U5My4uMjQwY2ZlZDQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTQ1OSw4ICs0NTksOCBAQCBpZiB0ZXN0ICJ4JHtlbmFibGVfdGVzdGFnZW50c30iID0geHllczsgdGhlbgotIGZpCi0gCi0gaWYgdGVzdCAieCR7ZW5hYmxlX3JkbWF9IiA9IHh5ZXM7IHRoZW4KLS0JUEtHX0NIRUNLX01PRFVMRVMoW3JkbWFjbV0sW3JkbWFjbV0pCi0tCVBLR19DSEVDS19NT0RVTEVTKFtpYnZlcmJzXSxbaWJ2ZXJic10pCi0rCVBLR19DSEVDS19NT0RVTEVTKFtyZG1hY21dLFtsaWJyZG1hY21dKQotKwlQS0dfQ0hFQ0tfTU9EVUxFUyhbaWJ2ZXJic10sW2xpYmlidmVyYnNdKQotIAlBQ19ERUZJTkVfVU5RVU9URUQoW0hBVkVfUkRNQV0sIDEsIFtoYXZlIHJkbWFjbV0pCi0gCVBBQ0tBR0VfRkVBVFVSRVM9IiRQQUNLQUdFX0ZFQVRVUkVTIHJkbWEiCi0gCVdJVEhfTElTVD0iJFdJVEhfTElTVCAtLXdpdGggcmRtYSIKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2Nvcm9zeW5jL2Nvcm9zeW5jL2Nvcm9zeW5jLmNvbmYgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9jb3Jvc3luYy9jb3Jvc3luYy9jb3Jvc3luYy5jb25mCmluZGV4IDZhZWY5ZGUuLjc0NGEzMGYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2Nvcm9zeW5jL2Nvcm9zeW5jL2Nvcm9zeW5jLmNvbmYKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmMvY29yb3N5bmMuY29uZgpAQCAtMSw1OCArMSw2MSBAQAotIyBTdGFydGluZyBwb2ludCBmb3IgY2x1c3RlciB3aXRoIHBhY2VtYWtlci9vcGVuYWlzCi1jb21wYXRpYmlsaXR5OiBub25lCi0KLWNvcm9zeW5jIHsKLQkgdXNlcjogIHJvb3QKLQkgZ3JvdXA6IHJvb3QKLX0KLQotYWlzZXhlYyB7Ci0Jd2l0aCBQYWNlbWFrZXIKLQl1c2VyOiAgcm9vdAotCWdyb3VwOiByb290Ci19Ci0KLXNlcnZpY2UgewotCW5hbWU6IHBhY2VtYWtlcgotCXZlcjogMQotfQotCisjIFBsZWFzZSByZWFkIHRoZSBjb3Jvc3luYy5jb25mLjUgbWFudWFsIHBhZ2UKIHRvdGVtIHsKIAl2ZXJzaW9uOiAyCi0Jc2VjYXV0aDogb2ZmCi0JdGhyZWFkczogMAotCWludGVyZmFjZSB7Ci0JCXJpbmdudW1iZXI6IDAKLQkJIyBDbHVzdGVyIG5ldHdvcmsgYWRkcmVzcwotCQliaW5kbmV0YWRkcjogMTkyLjE2OC4xMC4wCi0JCSMgU2hvdWxkIGJlIGZpbmUgaW4gbW9zdCBjYXNlcywgZG9uJ3QgZm9yZ2V0IHRvIGFsbG93Ci0JCSMgcGFja2V0cyBmb3IgdGhpcyBhZGRyZXNzL3BvcnQgaW4gbmV0ZmlsdGVyIGlmIHRoZXJlCi0JCSMgaXMgcmVzdHJpY3RpdmUgcG9saWN5IHNldCBmb3IgY2x1c3RlciBuZXR3b3JrCi0JCW1jYXN0YWRkcjogMjI2Ljk0LjEuMQotCQltY2FzdHBvcnQ6IDU0MDUKLQl9CisKKwkjIFNldCBuYW1lIG9mIHRoZSBjbHVzdGVyCisJY2x1c3Rlcl9uYW1lOiB0ZXN0Q2x1c3RlcgorCisJIyBjcnlwdG9fY2lwaGVyIGFuZCBjcnlwdG9faGFzaDogVXNlZCBmb3IgbXV0dWFsIG5vZGUgYXV0aGVudGljYXRpb24uCisJIyBJZiB5b3UgY2hvb3NlIHRvIGVuYWJsZSB0aGlzLCB0aGVuIGRvIHJlbWVtYmVyIHRvIGNyZWF0ZSBhIHNoYXJlZAorCSMgc2VjcmV0IHdpdGggImNvcm9zeW5jLWtleWdlbiIuCisJIyBlbmFibGluZyBjcnlwdG9fY2lwaGVyLCByZXF1aXJlcyBhbHNvIGVuYWJsaW5nIG9mIGNyeXB0b19oYXNoLgorCSMgY3J5cHRvIHdvcmtzIG9ubHkgd2l0aCBrbmV0IHRyYW5zcG9ydAorCWNyeXB0b19jaXBoZXI6IG5vbmUKKwljcnlwdG9faGFzaDogbm9uZQogfQogCiBsb2dnaW5nIHsKKwkjIExvZyB0aGUgc291cmNlIGZpbGUgYW5kIGxpbmUgd2hlcmUgbWVzc2FnZXMgYXJlIGJlaW5nCisJIyBnZW5lcmF0ZWQuIFdoZW4gaW4gZG91YnQsIGxlYXZlIG9mZi4gUG90ZW50aWFsbHkgdXNlZnVsIGZvcgorCSMgZGVidWdnaW5nLgogCWZpbGVsaW5lOiBvZmYKLQl0b19zdGRlcnI6IG5vCisJIyBMb2cgdG8gc3RhbmRhcmQgZXJyb3IuIFdoZW4gaW4gZG91YnQsIHNldCB0byB5ZXMuIFVzZWZ1bCB3aGVuCisJIyBydW5uaW5nIGluIHRoZSBmb3JlZ3JvdW5kICh3aGVuIGludm9raW5nICJjb3Jvc3luYyAtZiIpCisJdG9fc3RkZXJyOiB5ZXMKKwkjIExvZyB0byBhIGxvZyBmaWxlLiBXaGVuIHNldCB0byAibm8iLCB0aGUgImxvZ2ZpbGUiIG9wdGlvbgorCSMgbXVzdCBub3QgYmUgc2V0LgogCXRvX2xvZ2ZpbGU6IHllcwotCXRvX3N5c2xvZzogeWVzCiAJbG9nZmlsZTogL3Zhci9sb2cvY2x1c3Rlci9jb3Jvc3luYy5sb2cKKwkjIExvZyB0byB0aGUgc3lzdGVtIGxvZyBkYWVtb24uIFdoZW4gaW4gZG91YnQsIHNldCB0byB5ZXMuCisJdG9fc3lzbG9nOiB5ZXMKKwkjIExvZyBkZWJ1ZyBtZXNzYWdlcyAodmVyeSB2ZXJib3NlKS4gV2hlbiBpbiBkb3VidCwgbGVhdmUgb2ZmLgogCWRlYnVnOiBvZmYKLQl0aW1lc3RhbXA6IG9uCisJIyBMb2cgbWVzc2FnZXMgd2l0aCB0aW1lIHN0YW1wcy4gV2hlbiBpbiBkb3VidCwgc2V0IHRvIGhpcmVzIChvciBvbikKKwkjdGltZXN0YW1wOiBoaXJlcwogCWxvZ2dlcl9zdWJzeXMgewotCQlzdWJzeXM6IEFNRgorCQlzdWJzeXM6IFFVT1JVTQogCQlkZWJ1Zzogb2ZmCiAJfQogfQogCi1hbWYgewotCW1vZGU6IGRpc2FibGVkCitxdW9ydW0geworCSMgRW5hYmxlIGFuZCBjb25maWd1cmUgcXVvcnVtIHN1YnN5c3RlbSAoZGVmYXVsdDogb2ZmKQorCSMgc2VlIGFsc28gY29yb3N5bmMuY29uZi41IGFuZCB2b3RlcXVvcnVtLjUKKwlwcm92aWRlcjogY29yb3N5bmNfdm90ZXF1b3J1bQogfQogCi1xdW9ydW0gewotCSMgUXVvcnVtIGZvciB0aGUgUGFjZW1ha2VyIENsdXN0ZXIgUmVzb3VyY2UgTWFuYWdlcgotCXByb3ZpZGVyOiBjb3Jvc3luY192b3RlcXVvcnVtCi0JZXhwZWN0ZWRfdm90ZXM6IDEKK25vZGVsaXN0IHsKKwkjIENoYW5nZS91bmNvbW1lbnQvYWRkIG5vZGUgc2VjdGlvbnMgdG8gbWF0Y2ggY2x1c3RlciBjb25maWd1cmF0aW9uCisKKwlub2RlIHsKKwkJIyBIb3N0bmFtZSBvZiB0aGUgbm9kZQorCQluYW1lOiBub2RlMQorCQkjIENsdXN0ZXIgbWVtYmVyc2hpcCBub2RlIGlkZW50aWZpZXIKKwkJbm9kZWlkOiAxCisJCSMgQWRkcmVzcyBvZiBmaXJzdCBsaW5rCisJCXJpbmcwX2FkZHI6IDEyNy4wLjAuMQorCQkjIFdoZW4ga25ldCB0cmFuc3BvcnQgaXMgdXNlZCBpdCdzIHBvc3NpYmxlIHRvIGRlZmluZSB1cCB0byA4IGxpbmtzCisJCSNyaW5nMV9hZGRyOiAxOTIuMTY4LjEuMQorCX0KKwkjIC4uLgogfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmNfMi40LjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9jb3Jvc3luYy9jb3Jvc3luY18yLjQuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWVmYmNjYS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9jb3Jvc3luYy9jb3Jvc3luY18yLjQuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIENvcm9zeW5jIENsdXN0ZXIgRW5naW5lIGFuZCBBcHBsaWNhdGlvbiBQcm9ncmFtbWluZyBJbnRlcmZhY2VzIgotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBDb3Jvc3luYyBDbHVzdGVyIEVuZ2luZSBFeGVjdXRpdmUsIHNldmVyYWwgZGVmYXVsdCBcCi1BUElzIGFuZCBsaWJyYXJpZXMsIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmaWxlcywgYW5kIGFuIGluaXQgc2NyaXB0LiIKLUhPTUVQQUdFID0gImh0dHA6Ly9jb3Jvc3luYy5naXRodWIuaW8vY29yb3N5bmMvIgotCi1TRUNUSU9OID0gImJhc2UiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVzZXJhZGQKLQotU1JDX1VSSSA9ICJodHRwOi8vYnVpbGQuY2x1c3RlcmxhYnMub3JnL2Nvcm9zeW5jL3JlbGVhc2VzLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb3Jvc3luYy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWZpeC1wa2djb25maWctaXNzdWUtb2YtcmRtYS5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTM2YTA1NmI4OTNjMzEzYzRlYzFmZTBkN2U2Y2RlYmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWI2ZWFmZGI4ZjQzYTIzNzk0ZmMxNWQ0YzUxOThiYmQ2NzU5MDYwY2IxM2M4ZDJkMWU3OGE2YzgzNjBhYmE1ZiIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC4oPyE5OSlcZCsoXC5cZCspKykiCi0KLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTg1ZWI0Y2UyNDAzM2FkYjYwODhkZDFkNmZmYzVlNWQiCi0KLURFUEVORFMgPSAiZ3JvZmYtbmF0aXZlIG5zcyBsaWJxYiIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImNvcm9zeW5jLnNlcnZpY2UgY29yb3N5bmMtbm90aWZ5ZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdxZGV2aWNlJywgJ2Nvcm9zeW5jLXFkZXZpY2Uuc2VydmljZScsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3FuZXRkJywgJ2Nvcm9zeW5jLXFuZXRkLnNlcnZpY2UnLCAnJywgZCl9IFwKLSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKLQotSU5JVFNDUklQVF9OQU1FID0gImNvcm9zeW5jLWRhZW1vbiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgIGRidXMgcWRldmljZSBxbmV0ZCBzbm1wIFwKLSIKLQotUEFDS0FHRUNPTkZJR1tkYnVzXSA9ICItLWVuYWJsZS1kYnVzLC0tZGlzYWJsZS1kYnVzLGRidXMiCi1QQUNLQUdFQ09ORklHW3FkZXZpY2VdID0gIi0tZW5hYmxlLXFkZXZpY2VzLC0tZGlzYWJsZS1xZGV2aWNlcyIKLVBBQ0tBR0VDT05GSUdbcW5ldGRdID0gIi0tZW5hYmxlLXFuZXRkLC0tZGlzYWJsZS1xbmV0ZCIKLVBBQ0tBR0VDT05GSUdbcmRtYV0gPSAiLS1lbmFibGUtcmRtYSwtLWRpc2FibGUtcmRtYSxyZG1hLWNvcmUiCi1QQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAsbmV0LXNubXAiCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQgLS13aXRoLXN5c3RlbWRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLWRpc2FibGUtc3lzdGVtZCAtLXdpdGhvdXQtc3lzdGVtZGRpcixzeXN0ZW1kIgotCi1FWFRSQV9PRUNPTkYgPSAiYWNfY3ZfcGF0aF9CQVNIUEFUSD0ke2Jhc2VfYmluZGlyfS9iYXNoIGFwX2N2X2NjX3BpZT1ubyIKLUVYVFJBX09FTUFLRSA9ICJ0bXBmaWxlc2Rpcl9EQVRBPSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgKCBjZCAke1N9Ci0gICAgJHtTfS9hdXRvZ2VuLnNoICkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vY29yb3N5bmMuY29uZiAke0R9LyR7c3lzY29uZmRpcn0vY29yb3N5bmMvY29yb3N5bmMuY29uZi5leGFtcGxlCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vaW5pdC9jb3Jvc3luYy5zeXNjb25maWcuZXhhbXBsZSAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvY29yb3N5bmMKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS90b29scy9jb3Jvc3luYy1ub3RpZnlkLnN5c2NvbmZpZy5leGFtcGxlICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9jb3Jvc3luYy1ub3RpZnlkCi0KLSAgICBybSAtcmYgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLSAgICBlY2hvICJkIHJvb3Qgcm9vdCAwNzU1ICR7bG9jYWxzdGF0ZWRpcn0vbG9nL2NsdXN0ZXIgbm9uZSIgPiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wNV9jb3Jvc3luYwotCi0gICAgaWYgWyAke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncW5ldGQnLCBkKX0gXTsgdGhlbgotICAgICAgICBjaG93biAtUiBjb3JvcW5ldGQ6Y29yb3FuZXRkICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS9xbmV0ZAotICAgICAgICBlY2hvICJkIGNvcm9xbmV0ZCBjb3JvcW5ldGQgMDc3MCAvdmFyL3J1bi9jb3Jvc3luYy1xbmV0ZCBub25lIiA+PiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wNV9jb3Jvc3luYwotICAgIGZpCi0KLSAgICBpZiBbICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsZCl9IF07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCi0gICAgICAgIGVjaG8gImQgJHtsb2NhbHN0YXRlZGlyfS9sb2cvY2x1c3RlciAtIC0gLSAtIiA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvY29yb3N5bmMuY29uZgotICAgIGZpCi19Ci0KLVJERVBFTkRTXyR7UE59ICs9ICJiYXNoICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAnc3lzdmluaXQtcGlkb2YnLCAncHJvY3BzJywgZCl9IgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZXhlY2Rpcn0vbGNyc28vLmRlYnVnIgotRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L3NubXAvbWlicy9DT1JPU1lOQy1NSUIudHh0IgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gY29yb3FuZXRkIgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtZCAvIC1NIC1zIC9iaW4vbm9sb2dpbiAtYyAnVXNlciBmb3IgY29yb3N5bmMtcW5ldGQnIC1nIGNvcm9xbmV0ZCBjb3JvcW5ldGQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9jb3Jvc3luYy9jb3Jvc3luY18zLjAuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2Nvcm9zeW5jL2Nvcm9zeW5jXzMuMC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNTMxZDMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9jb3Jvc3luYy9jb3Jvc3luY18zLjAuMy5iYgpAQCAtMCwwICsxLDc0IEBACitTVU1NQVJZID0gIlRoZSBDb3Jvc3luYyBDbHVzdGVyIEVuZ2luZSBhbmQgQXBwbGljYXRpb24gUHJvZ3JhbW1pbmcgSW50ZXJmYWNlcyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgQ29yb3N5bmMgQ2x1c3RlciBFbmdpbmUgRXhlY3V0aXZlLCBzZXZlcmFsIGRlZmF1bHQgXAorQVBJcyBhbmQgbGlicmFyaWVzLCBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZXMsIGFuZCBhbiBpbml0IHNjcmlwdC4iCitIT01FUEFHRSA9ICJodHRwOi8vY29yb3N5bmMuZ2l0aHViLmlvL2Nvcm9zeW5jLyIKKworU0VDVElPTiA9ICJiYXNlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZCB1c2VyYWRkCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9jb3Jvc3luYy5jb25mIFwKKyAgICAgICAgICAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjBlYjkwM2ViOTg0ZjZhNzI4MjgyYzE5OTgyNWU0NDJlOGJiYTg2OWFjZWZkMjIzOTAwNzZlZjNhMzNhNGRlZCIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkK1wuKD8hOTkpXGQrKFwuXGQrKSspIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE4NWViNGNlMjQwMzNhZGI2MDg4ZGQxZDZmZmM1ZTVkIgorCitERVBFTkRTID0gImdyb2ZmLW5hdGl2ZSBuc3MgbGlicWIga3Jvbm9zbmV0IgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiY29yb3N5bmMuc2VydmljZSBjb3Jvc3luYy1ub3RpZnlkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3FkZXZpY2UnLCAnY29yb3N5bmMtcWRldmljZS5zZXJ2aWNlJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncW5ldGQnLCAnY29yb3N5bmMtcW5ldGQuc2VydmljZScsICcnLCBkKX0gXAorIgorU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgorCitJTklUU0NSSVBUX05BTUUgPSAiY29yb3N5bmMtZGFlbW9uIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgZGJ1cyBzbm1wIFwKKyIKKworUEFDS0FHRUNPTkZJR1tkYnVzXSA9ICItLWVuYWJsZS1kYnVzLC0tZGlzYWJsZS1kYnVzLGRidXMiCitQQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAsbmV0LXNubXAiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQgLS13aXRoLXN5c3RlbWRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLWRpc2FibGUtc3lzdGVtZCAtLXdpdGhvdXQtc3lzdGVtZGRpcixzeXN0ZW1kIgorCitFWFRSQV9PRUNPTkYgPSAiYWNfY3ZfcGF0aF9CQVNIUEFUSD0ke2Jhc2VfYmluZGlyfS9iYXNoIGFwX2N2X2NjX3BpZT1ubyIKK0VYVFJBX09FTUFLRSA9ICJ0bXBmaWxlc2Rpcl9EQVRBPSIKKworI2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworIyAgICAoIGNkICR7U30KKyMgICAgJHtTfS9hdXRvZ2VuLnNoICkKKyN9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1dPUktESVJ9L2Nvcm9zeW5jLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nvcm9zeW5jL2Nvcm9zeW5jLmNvbmYuZXhhbXBsZQorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnLworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2luaXQvY29yb3N5bmMuc3lzY29uZmlnLmV4YW1wbGUgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2Nvcm9zeW5jCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vdG9vbHMvY29yb3N5bmMtbm90aWZ5ZC5zeXNjb25maWcuZXhhbXBsZSAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvY29yb3N5bmMtbm90aWZ5ZAorCisgICAgcm0gLXJmICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisgICAgZWNobyAiZCByb290IHJvb3QgMDc1NSAke2xvY2Fsc3RhdGVkaXJ9L2xvZy9jbHVzdGVyIG5vbmUiID4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvMDVfY29yb3N5bmMKKworICAgIGlmIFsgJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3FuZXRkJywgZCl9IF07IHRoZW4KKyAgICAgICAgY2hvd24gLVIgY29yb3FuZXRkOmNvcm9xbmV0ZCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vcW5ldGQKKyAgICAgICAgZWNobyAiZCBjb3JvcW5ldGQgY29yb3FuZXRkIDA3NzAgL3Zhci9ydW4vY29yb3N5bmMtcW5ldGQgbm9uZSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvMDVfY29yb3N5bmMKKyAgICBmaQorCisgICAgaWYgWyAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLGQpfSBdOyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorICAgICAgICBlY2hvICJkICR7bG9jYWxzdGF0ZWRpcn0vbG9nL2NsdXN0ZXIgLSAtIC0gLSIgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2Nvcm9zeW5jLmNvbmYKKyAgICBmaQorfQorCitSREVQRU5EU18ke1BOfSArPSAiYmFzaCAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3N5c3Zpbml0LXBpZG9mJywgJ3Byb2NwcycsIGQpfSIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmV4ZWNkaXJ9L2xjcnNvLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9zbm1wL21pYnMvQ09ST1NZTkMtTUlCLnR4dCIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIGNvcm9xbmV0ZCIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLWQgLyAtTSAtcyAvYmluL25vbG9naW4gLWMgJ1VzZXIgZm9yIGNvcm9zeW5jLXFuZXRkJyAtZyBjb3JvcW5ldGQgY29yb3FuZXRkIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvZGxtL2RsbS8wMDAxLWRsbS1maXgtcGFja2FnZS1xYS1lcnJvci5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2RsbS9kbG0vMDAwMS1kbG0tZml4LXBhY2thZ2UtcWEtZXJyb3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlMzg0ZjcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvZGxtL2RsbS8wMDAxLWRsbS1maXgtcGFja2FnZS1xYS1lcnJvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gMWZiNjg0MzNiZGU5N2Q1NzFmYzc4MWI1MmM5NTIxYjE3ZmJiOGRmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDI0IEp1bCAyMDE4IDE3OjQyOjQzICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGRsbTogZml4IHBhY2thZ2UgcWEgZXJyb3IKLQotcGFzcyBMREZMQUcgdG8gbWFrZWZpbGUgdG8gZml4IGJlbG93IGVycm9yOgotZG9fcGFja2FnZV9xYTogUUEgSXNzdWU6IE5vIEdOVV9IQVNIIGluIHRoZSBlbGYgYmluYXJ5OgotL3BhY2thZ2VzLXNwbGl0L2RsbS91c3Ivc2Jpbi9kbG1fc3Rvbml0aCcgW2xkZmxhZ3NdCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtvZS1zcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLS0tLQotIGZlbmNlL01ha2VmaWxlIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZmVuY2UvTWFrZWZpbGUgYi9mZW5jZS9NYWtlZmlsZQotaW5kZXggY2NhMGIyYy4uMmIzOTYzYyAxMDA2NDQKLS0tLSBhL2ZlbmNlL01ha2VmaWxlCi0rKysgYi9mZW5jZS9NYWtlZmlsZQotQEAgLTMzLDcgKzMzLDcgQEAgQklOX0NGTEFHUyArPSAtZlBJRSAtRFBJRQotIEJJTl9DRkxBR1MgKz0gYHBrZy1jb25maWcgbGlieG1sLTIuMCAtLWNmbGFnc2AKLSBCSU5fQ0ZMQUdTICs9IC1JLi4vaW5jbHVkZQotIAotLUJJTl9MREZMQUdTICs9IC1XbCwteixub3cgLVdsLC16LHJlbHJvIC1waWUKLStCSU5fTERGTEFHUyArPSAkKExERkxBR1MpIC1XbCwteixub3cgLVdsLC16LHJlbHJvIC1waWUKLSBCSU5fTERGTEFHUyArPSBgcGtnLWNvbmZpZyBsaWJ4bWwtMi4wIC0tbGlic2AKLSBCSU5fTERGTEFHUyArPSAtbGRsCi0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2RsbS9kbG0vMDAwMS1tYWtlLVJlcGxhY2UtY3AtYS13aXRoLW1vZGUtcHJlc2VydmluZy1vcHRpb25zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvZGxtL2RsbS8wMDAxLW1ha2UtUmVwbGFjZS1jcC1hLXdpdGgtbW9kZS1wcmVzZXJ2aW5nLW9wdGlvbnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZhMzc1NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2RsbS9kbG0vMDAwMS1tYWtlLVJlcGxhY2UtY3AtYS13aXRoLW1vZGUtcHJlc2VydmluZy1vcHRpb25zLnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gMmY3MmY5MjcxYjhkZDYxY2E1MDkyZTAyNWIwZjgyNDNjNmZkNjhmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDMgTWFyIDIwMjAgMTI6Mzg6MTkgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWFrZTogUmVwbGFjZSBjcCAtYSB3aXRoIG1vZGUgcHJlc2VydmluZyBvcHRpb25zCisKK0hlbHBzIGZpeCBwZXJtaXNzaW9ucyBpbiBzdGFnaW5nIGFyZWEKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZGxtX2NvbnRyb2xkL01ha2VmaWxlIHwgNCArKy0tCisgbGliZGxtL01ha2VmaWxlICAgICAgIHwgOCArKysrLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZGxtX2NvbnRyb2xkL01ha2VmaWxlIGIvZGxtX2NvbnRyb2xkL01ha2VmaWxlCitpbmRleCA2MDgxY2Y4Li5mZTcxYmUyIDEwMDY0NAorLS0tIGEvZGxtX2NvbnRyb2xkL01ha2VmaWxlCisrKysgYi9kbG1fY29udHJvbGQvTWFrZWZpbGUKK0BAIC04OCw4ICs4OCw4IEBAIGluc3RhbGw6IGFsbAorIAkkKElOU1RBTEwpIC1kICQoREVTVERJUikvJChQS0dESVIpCisgCSQoSU5TVEFMTCkgLW0gNzU1ICQoQklOX1RBUkdFVCkgJChERVNURElSKS8kKEJJTkRJUikKKyAJJChJTlNUQUxMKSAtbSA3NTUgJChMSUJfVEFSR0VUKSAkKERFU1RESVIpLyQoTElCRElSKQorLQljcCAtYSAkKExJQl9TTykgJChERVNURElSKS8kKExJQkRJUikKKy0JY3AgLWEgJChMSUJfU01BSk9SKSAkKERFU1RESVIpLyQoTElCRElSKQorKwljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAkKExJQl9TTykgJChERVNURElSKS8kKExJQkRJUikKKysJY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgJChMSUJfU01BSk9SKSAkKERFU1RESVIpLyQoTElCRElSKQorIAkkKElOU1RBTEwpIC1tIDY0NCAkKExJQl9QQykgJChERVNURElSKS8kKFBLR0RJUikKKyAJJChJTlNUQUxMKSAtbSA2NDQgbGliZGxtY29udHJvbC5oICQoREVTVERJUikvJChIRFJESVIpCisgCSQoSU5TVEFMTCkgLW0gNjQ0IGRsbV9jb250cm9sZC44ICQoREVTVERJUikvJChNQU5ESVIpL21hbjgvCitkaWZmIC0tZ2l0IGEvbGliZGxtL01ha2VmaWxlIGIvbGliZGxtL01ha2VmaWxlCitpbmRleCBhYjMyNzYxLi44ODIwYmY4IDEwMDY0NAorLS0tIGEvbGliZGxtL01ha2VmaWxlCisrKysgYi9saWJkbG0vTWFrZWZpbGUKK0BAIC0xMjUsMTAgKzEyNSwxMCBAQCBpbnN0YWxsOiBhbGwKKyAJJChJTlNUQUxMKSAtZCAkKERFU1RESVIpLyQoVURFVkRJUikKKyAJJChJTlNUQUxMKSAtYyAtbSA3NTUgJChMSUJfVEFSR0VUKSAkKERFU1RESVIpLyQoTElCRElSKQorIAkkKElOU1RBTEwpIC1jIC1tIDc1NSAkKExMVF9UQVJHRVQpICQoREVTVERJUikvJChMSUJESVIpCistCWNwIC1hICQoTElCX1NPKSAkKERFU1RESVIpLyQoTElCRElSKQorLQljcCAtYSAkKExJQl9TTUFKT1IpICQoREVTVERJUikvJChMSUJESVIpCistCWNwIC1hICQoTExUX1NPKSAkKERFU1RESVIpLyQoTElCRElSKQorLQljcCAtYSAkKExMVF9TTUFKT1IpICQoREVTVERJUikvJChMSUJESVIpCisrCWNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzICQoTElCX1NPKSAkKERFU1RESVIpLyQoTElCRElSKQorKwljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAkKExJQl9TTUFKT1IpICQoREVTVERJUikvJChMSUJESVIpCisrCWNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzICQoTExUX1NPKSAkKERFU1RESVIpLyQoTElCRElSKQorKwljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAkKExMVF9TTUFKT1IpICQoREVTVERJUikvJChMSUJESVIpCisgCSQoSU5TVEFMTCkgLW0gNjQ0ICQoTElCX1BDKSAkKERFU1RESVIpLyQoUEtHRElSKQorIAkkKElOU1RBTEwpIC1tIDY0NCAkKExMVF9QQykgJChERVNURElSKS8kKFBLR0RJUikKKyAJJChJTlNUQUxMKSAtYyAtbSA2NDQgJChIRFJfVEFSR0VUKSAkKERFU1RESVIpLyQoSERSRElSKQorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvZGxtL2RsbV80LjAuOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2RsbS9kbG1fNC4wLjkuYmIKaW5kZXggNGJmOTk0NC4uNTc3ZGI3MCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvZGxtL2RsbV80LjAuOS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9kbG0vZGxtXzQuMC45LmJiCkBAIC04LDYgKzgsNyBAQAogU1JDX1VSSSA9ICJodHRwczovL3BhZ3VyZS5pby9kbG0vYXJjaGl2ZS9kbG0tJHtQVn0vZGxtLWRsbS0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1kbG0tZml4LWNvbXBpbGUtZXJyb3Itc2luY2UteG1sMi1jb25maWctc2hvdWxkLW5vdC1iLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLW1hY3Jvcy1pbi1nbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1ha2UtUmVwbGFjZS1jcC1hLXdpdGgtbW9kZS1wcmVzZXJ2aW5nLW9wdGlvbnMucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI0YzU3YTk0MWExNTU0Nzg1OWNkMzhmZDU1ZjY2Mzg4ZSIKQEAgLTIxLDcgKzIyLDcgQEAKIAogUyA9ICIke1dPUktESVJ9L2RsbS1kbG0tJHtQVn0iCiAKLURFUEVORFMgPSAiY29yb3N5bmMgc3lzdGVtZCIKK0RFUEVORFMgKz0gImNvcm9zeW5jIgogCiBpbmhlcml0IHBrZ2NvbmZpZyBzeXN0ZW1kIGZlYXR1cmVzX2NoZWNrCiAKQEAgLTQwLDI5ICs0MSwyMCBAQAogICAgIHNlZCAtaSAtZSAicy8tZnN0YWNrLWNsYXNoLXByb3RlY3Rpb24vL2ciICR7U30vKi9NYWtlZmlsZQogfQogCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Citkb19jb21waWxlKCkgewogICAgIHNlZCAtaSAicy9saWJzeXN0ZW1kLWRhZW1vbi9saWJzeXN0ZW1kL2ciICR7U30vZGxtX2NvbnRyb2xkL01ha2VmaWxlCiAgICAgc2VkIC1pIC1lICJzLyAke0RPTlRCVUlMRH0vL2ciICR7U30vTWFrZWZpbGUKLX0KLQotZG9fY29tcGlsZSAoKSB7CiAgICAgb2VfcnVubWFrZSAnQ0M9JHtDQ30nCiB9CiAKLWRvX2luc3RhbGxfYXBwZW5kICgpewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnLwotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2luaXQvZGxtLnN5c2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvZGxtCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vaW5pdC9kbG0uaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZGxtCi0KLSAgICAjIGluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGVzCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2luaXQvZGxtLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBmaQotfQotCiBkb19pbnN0YWxsKCkgewogICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfQorICAgIGluc3RhbGwgLURtIDA2NDQgJHtTfS9pbml0L2RsbS5zeXNjb25maWcgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2RsbQorICAgIGluc3RhbGwgLURtIDA2NDQgJHtTfS9pbml0L2RsbS5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9kbG0KKworICAgICMgaW5zdGFsbCBzeXN0ZW1kIHVuaXQgZmlsZXMKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLURtIDA2NDQgJHtTfS9pbml0L2RsbS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2RsbS5zZXJ2aWNlCisgICAgZmkKIH0KIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQva3Jvbm9zbmV0L2tyb25vc25ldF8xLjE1LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQva3Jvbm9zbmV0L2tyb25vc25ldF8xLjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZjI2OGQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9rcm9ub3NuZXQva3Jvbm9zbmV0XzEuMTUuYmIKQEAgLTAsMCArMSwyMyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworU1VNTUFSWSA9ICIgS3Jvbm9zbmV0LCBvZnRlbiByZWZlcnJlZCB0byBhcyBrbmV0LCBpcyBhIG5ldHdvcmsgYWJzdHJhY3Rpb24gbGF5ZXIgZGVzaWduZWQgZm9yIEhpZ2ggQXZhaWxhYmlsaXR5IHVzZSBjYXNlcywgd2hlcmUgcmVkdW5kYW5jeSwgc2VjdXJpdHksIGZhdWx0IHRvbGVyYW5jZSBhbmQgZmFzdCBmYWlsLW92ZXIgYXJlIHRoZSBjb3JlIHJlcXVpcmVtZW50cyBvZiB5b3VyIGFwcGxpY2F0aW9uLiIKK0hPTUVQQUdFID0gImh0dHBzOi8va3Jvbm9zbmV0Lm9yZy8iCitMSUNFTlNFID0gIkdQTC0yLjArICYgTEdQTC0yLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLmFwcGxpY2F0aW9uczttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5saWJyYXJpZXM7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIgorU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJkb3h5Z2VuLW5hdGl2ZSBsaWJxYi1uYXRpdmUgbGlieG1sMi1uYXRpdmUgYnppcDIgbGlicWIgbGlieG1sMiBsaWJubCBsa3NjdHAtdG9vbHMgbHo0IGx6byBvcGVuc3NsIG5zcyB4eiB6bGliIHpzdGQiCisKK1NSQ1JFViA9ICIwYmE1OTg1YzNkZGVjODQyOWI5ODlmMGU3YmQzMzI0ZjUzZTBhOWIwIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2tyb25vc25ldC9rcm9ub3NuZXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPXN0YWJsZTEiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKKyMgbGlia25ldC90cmFuc3BvcnRfdWRwLmM6MzI2OjQ4OiBlcnJvcjogY29tcGFyaXNvbiBvZiBpbnRlZ2VycyBvZiBkaWZmZXJlbnQgc2lnbnM6ICd1bnNpZ25lZCBsb25nJyBhbmQgJ2ludCcgWy1XZXJyb3IsLVdzaWduLWNvbXBhcmVdCisjIGZvciAoY21zZyA9IENNU0dfRklSU1RIRFIoJm1zZyk7Y21zZzsgY21zZyA9IENNU0dfTlhUSERSKCZtc2csIGNtc2cpKSB7CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitDRkxBR1NfYXBwZW5kX3Rvb2xjaGFpbi1jbGFuZyA9ICIgLVduby1zaWduLWNvbXBhcmUiCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9jb25udHJhY2stdG9vbHMvY29ubnRyYWNrLXRvb2xzXzEuNC41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2Nvbm50cmFjay10b29scy9jb25udHJhY2stdG9vbHNfMS40LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxZTBlYzEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2Nvbm50cmFjay10b29scy9jb25udHJhY2stdG9vbHNfMS40LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIkNvbm5lY3Rpb24gdHJhY2tpbmcgdXNlcnNwYWNlIHRvb2xzIGZvciBMaW51eCIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiIKLQotREVQRU5EUyA9ICJsaWJuZm5ldGxpbmsgbGlibmV0ZmlsdGVyLWNvbm50cmFjayBsaWJuZXRmaWx0ZXItY3R0aW1lb3V0IFwKLSAgICAgICAgICAgbGlibmV0ZmlsdGVyLWN0aGVscGVyIGxpYm5ldGZpbHRlci1xdWV1ZSBiaXNvbi1uYXRpdmUgbGlidGlycGMiCi0KLUVYVFJBX09FQ09ORiArPSAiTElCUz0tbHRpcnBjIENQUEZMQUdTPS1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5uZXRmaWx0ZXIub3JnL3Byb2plY3RzL2Nvbm50cmFjay10b29scy9maWxlcy9jb25udHJhY2stdG9vbHMtJHtQVn0udGFyLmJ6MjtuYW1lPXRhciBcCi0gICAgZmlsZTovL2Nvbm50cmFjay1mYWlsb3ZlciBcCi0gICAgZmlsZTovL2luaXQgXAotIgotU1JDX1VSSVt0YXIubWQ1c3VtXSA9ICI5MzU2YTBjZDRkZjgxYTU5N2FjMjZkODdjY2ZlYmFjNCIKLVNSQ19VUklbdGFyLnNoYTI1NnN1bV0gPSAiMzZjNmQ5OWM3Njg0ODUxZDRkNzJlNzViZDA3ZmYzZjBmZjFiYWFmNGI2ZjA2OWViNzI0NDk5MGNkMWE5YTQ2MiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgcGtnY29uZmlnCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJjb25udHJhY2tkIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9jb25udHJhY2tkCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZG9jL3N5bmMvZnRmdy9jb25udHJhY2tkLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nvbm50cmFja2QvY29ubnRyYWNrZC5jb25mLnNhbXBsZQotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2Nvbm50cmFjay1mYWlsb3ZlciAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL2Nvbm50cmFjay1mYWlsb3ZlcgotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb25udHJhY2tkCi0KLSAgICAjIEZpeCBoYXJkY29kZWQgcGF0aHMgaW4gc2NyaXB0cwotICAgIHNlZCAtaSAncyEvdXNyL3NiaW4vISR7c2JpbmRpcn0vIWcnICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvY29ubnRyYWNrLWZhaWxvdmVyICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvY29ubnRyYWNrZAotICAgIHNlZCAtaSAncyEvZXRjLyEke3N5c2NvbmZkaXJ9LyFnJyAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL2Nvbm50cmFjay1mYWlsb3ZlciAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL2Nvbm50cmFja2QKLSAgICBzZWQgLWkgJ3MhL3Zhci8hJHtsb2NhbHN0YXRlZGlyfS8hZycgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb25udHJhY2stZmFpbG92ZXIgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb25udHJhY2tkICR7RH0vJHtzeXNjb25mZGlyfS9jb25udHJhY2tkL2Nvbm50cmFja2QuY29uZi5zYW1wbGUKLSAgICBzZWQgLWkgJ3MhXmV4cG9ydCBQQVRIPS4qIWV4cG9ydCBQQVRIPSR7YmFzZV9zYmluZGlyfToke2Jhc2VfYmluZGlyfToke3NiaW5kaXJ9OiR7YmluZGlyfSEnICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvY29ubnRyYWNrZAotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2Nvbm50cmFjay10b29scy9jb25udHJhY2stdG9vbHNfMS40LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvY29ubnRyYWNrLXRvb2xzL2Nvbm50cmFjay10b29sc18xLjQuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDUwYTg5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2Nvbm50cmFjay10b29scy9jb25udHJhY2stdG9vbHNfMS40LjYuYmIKQEAgLTAsMCArMSwzNCBAQAorU1VNTUFSWSA9ICJDb25uZWN0aW9uIHRyYWNraW5nIHVzZXJzcGFjZSB0b29scyBmb3IgTGludXgiCitTRUNUSU9OID0gIm5ldCIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGNhNDNjYmM4NDJjMjMzNmU4MzU5MjZjMjE2NmMyOGIiCisKK0RFUEVORFMgPSAibGlibmZuZXRsaW5rIGxpYm5ldGZpbHRlci1jb25udHJhY2sgbGlibmV0ZmlsdGVyLWN0dGltZW91dCBcCisgICAgICAgICAgIGxpYm5ldGZpbHRlci1jdGhlbHBlciBsaWJuZXRmaWx0ZXItcXVldWUgYmlzb24tbmF0aXZlIGxpYnRpcnBjIgorCitFWFRSQV9PRUNPTkYgKz0gIkxJQlM9LWx0aXJwYyBDUFBGTEFHUz0tSSR7U1RBR0lOR19JTkNESVJ9L3RpcnBjIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9jb25udHJhY2stdG9vbHMvZmlsZXMvY29ubnRyYWNrLXRvb2xzLSR7UFZ9LnRhci5iejI7bmFtZT10YXIgXAorICAgIGZpbGU6Ly9jb25udHJhY2stZmFpbG92ZXIgXAorICAgIGZpbGU6Ly9pbml0IFwKKyIKK1NSQ19VUklbdGFyLm1kNXN1bV0gPSAiYTlkYzc1Njc5MjEyMTMwMDdkZWY3OGFkNzIzMTMxMDkiCitTUkNfVVJJW3Rhci5zaGEyNTZzdW1dID0gIjU5MDg1OWNjODQ4MjQ1ZGJmZDljNjQ4Nzc2MWRkMzAzYjNhMTc3MWUwMDdmNGY0MjIxMzA2M2NhNTYyMDVkNWYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHBrZ2NvbmZpZworCitJTklUU0NSSVBUX05BTUUgPSAiY29ubnRyYWNrZCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vY29ubnRyYWNrZAorICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RvYy9zeW5jL2Z0ZncvY29ubnRyYWNrZC5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9jb25udHJhY2tkL2Nvbm50cmFja2QuY29uZi5zYW1wbGUKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9jb25udHJhY2stZmFpbG92ZXIgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb25udHJhY2stZmFpbG92ZXIKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvY29ubnRyYWNrZAorCisgICAgIyBGaXggaGFyZGNvZGVkIHBhdGhzIGluIHNjcmlwdHMKKyAgICBzZWQgLWkgJ3MhL3Vzci9zYmluLyEke3NiaW5kaXJ9LyFnJyAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL2Nvbm50cmFjay1mYWlsb3ZlciAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL2Nvbm50cmFja2QKKyAgICBzZWQgLWkgJ3MhL2V0Yy8hJHtzeXNjb25mZGlyfS8hZycgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb25udHJhY2stZmFpbG92ZXIgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb25udHJhY2tkCisgICAgc2VkIC1pICdzIS92YXIvISR7bG9jYWxzdGF0ZWRpcn0vIWcnICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvY29ubnRyYWNrLWZhaWxvdmVyICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvY29ubnRyYWNrZCAke0R9LyR7c3lzY29uZmRpcn0vY29ubnRyYWNrZC9jb25udHJhY2tkLmNvbmYuc2FtcGxlCisgICAgc2VkIC1pICdzIV5leHBvcnQgUEFUSD0uKiFleHBvcnQgUEFUSD0ke2Jhc2Vfc2JpbmRpcn06JHtiYXNlX2JpbmRpcn06JHtzYmluZGlyfToke2JpbmRpcn0hJyAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL2Nvbm50cmFja2QKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJuZXRmaWx0ZXIvbGlibmV0ZmlsdGVyLWNvbm50cmFja18xLjAuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJuZXRmaWx0ZXIvbGlibmV0ZmlsdGVyLWNvbm50cmFja18xLjAuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWM4MTUwMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbGlibmV0ZmlsdGVyL2xpYm5ldGZpbHRlci1jb25udHJhY2tfMS4wLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gIk5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJVc2Vyc3BhY2UgbGlicmFyeSBwcm92aWRpbmcgYSBwcm9ncmFtbWluZyBpbnRlcmZhY2UgKEFQSSkgdG8gdGhlIExpbnV4IGtlcm5lbCBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdGF0ZSB0YWJsZSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9saWJuZXRmaWx0ZXJfY29ubnRyYWNrL2luZGV4Lmh0bWwiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PThjYTQzY2JjODQyYzIzMzZlODM1OTI2YzIxNjZjMjhiIgotREVQRU5EUyA9ICJsaWJuZm5ldGxpbmsgbGlibW5sIgotCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3Lm5ldGZpbHRlci5vcmcvcHJvamVjdHMvbGlibmV0ZmlsdGVyX2Nvbm50cmFjay9maWxlcy9saWJuZXRmaWx0ZXJfY29ubnRyYWNrLSR7UFZ9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiMDEzZDE4MmMyZGY3MTZmY2I1ZWIyYTFmYjdmZWJkMWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzM2ODUzNTFlMjlkZmY5M2NjMjFmNTM0NGI2ZTYyOGU0MWUzMmI5ZjllNTY3ZjRiZWMwNDc4ZWI0MWY5ODliNiIKLQotUyA9ICIke1dPUktESVJ9L2xpYm5ldGZpbHRlcl9jb25udHJhY2stJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2xpYm5ldGZpbHRlci9saWJuZXRmaWx0ZXItY29ubnRyYWNrXzEuMC44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2xpYm5ldGZpbHRlci9saWJuZXRmaWx0ZXItY29ubnRyYWNrXzEuMC44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkODk0MzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbGlibmV0ZmlsdGVyL2xpYm5ldGZpbHRlci1jb25udHJhY2tfMS4wLjguYmIKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiVXNlcnNwYWNlIGxpYnJhcnkgcHJvdmlkaW5nIGEgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlIChBUEkpIHRvIHRoZSBMaW51eCBrZXJuZWwgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3RhdGUgdGFibGUiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5ldGZpbHRlci5vcmcvcHJvamVjdHMvbGlibmV0ZmlsdGVyX2Nvbm50cmFjay9pbmRleC5odG1sIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiIKK0RFUEVORFMgPSAibGlibmZuZXRsaW5rIGxpYm1ubCIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5uZXRmaWx0ZXIub3JnL3Byb2plY3RzL2xpYm5ldGZpbHRlcl9jb25udHJhY2svZmlsZXMvbGlibmV0ZmlsdGVyX2Nvbm50cmFjay0ke1BWfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gIjMxMjFiNTVhY2Y5NzMyMmRiODMwZGE3NWQ4NDA3Y2JhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBjZDEzYmUwMDg5MjM1Mjg2ODdhZjZjNmI4NjBmMzUzOTJkNDkyNTFjMDRlZTA2NDgyODJkMzZiMWZhZWMxY2YiCisKK1MgPSAiJHtXT1JLRElSfS9saWJuZXRmaWx0ZXJfY29ubnRyYWNrLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJuZnRubC9saWJuZnRubF8xLjEuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJuZnRubC9saWJuZnRubF8xLjEuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFjMjcyMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbGlibmZ0bmwvbGlibmZ0bmxfMS4xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIGxvdy1sZXZlbCBpbnRlcmFjdGlvbiB3aXRoIG5mdGFibGVzIE5ldGxpbmsncyBBUEkgb3ZlciBsaWJtbmwiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Nzk4MDgzOTdjMzM1NWYxNjNjMDEyNjE2MTI1YzllMjYiCi1TRUNUSU9OID0gImxpYnMiCi1ERVBFTkRTID0gImxpYm1ubCIKLQotU1JDUkVWID0gImE3MTU5OWRjMGFlMWE4MDhlOTcwZTk2ODUwZWE4M2Q3N2Y0NTI5OTQiCi1TUkNfVVJJID0gImdpdDovL2dpdC5uZXRmaWx0ZXIub3JnL2xpYm5mdG5sIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYXZvaWQtbmFtaW5nLWxvY2FsLWZ1bmN0aW9uLWFzLW9uZS1vZi1wcmludGYtZmFtaWx5LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJuZnRubC9saWJuZnRubF8xLjEuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJuZnRubC9saWJuZnRubF8xLjEuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjQyOTU0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2xpYm5mdG5sL2xpYm5mdG5sXzEuMS42LmJiCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgbG93LWxldmVsIGludGVyYWN0aW9uIHdpdGggbmZ0YWJsZXMgTmV0bGluaydzIEFQSSBvdmVyIGxpYm1ubCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03OTgwODM5N2MzMzU1ZjE2M2MwMTI2MTYxMjVjOWUyNiIKK1NFQ1RJT04gPSAibGlicyIKK0RFUEVORFMgPSAibGlibW5sIgorCitTUkNSRVYgPSAiYWMwNzc4ZTQwM2ViNTE5ODZjZTE5YmNmMWE2ZThhZTNjZDgzZGNmYSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lm5ldGZpbHRlci5vcmcvbGlibmZ0bmwgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hdm9pZC1uYW1pbmctbG9jYWwtZnVuY3Rpb24tYXMtb25lLW9mLXByaW50Zi1mYW1pbHkucGF0Y2ggXAorICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL25mdGFibGVzL2ZpbGVzLzAwMDEtdXBkYXRlLXB5dGhvbjMtbmZ0YWJsZXMtcmVmZXJlbmNlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL25mdGFibGVzL2ZpbGVzLzAwMDEtdXBkYXRlLXB5dGhvbjMtbmZ0YWJsZXMtcmVmZXJlbmNlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjIyNDM0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9uZnRhYmxlcy9maWxlcy8wMDAxLXVwZGF0ZS1weXRob24zLW5mdGFibGVzLXJlZmVyZW5jZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gZGRiZTY1MmJmMGY0ZWQzMDBiYWU5NDk3MjUwMTMwZDY4ZTRjYmY1YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFydHVybyBCb3JyZXJvIEdvbnphbGV6IDxhcnR1cm9AbmV0ZmlsdGVyLm9yZz4KLURhdGU6IFR1ZSwgMTAgRGVjIDIwMTkgMTI6MDA6NDUgKzAxMDAKLVN1YmplY3Q6IHB5OiBsb2FkIHRoZSBTT05BTUUtdmVyc2lvbmVkIHNoYXJlZCBvYmplY3QKLQotSW5zdHJ1Y3QgdGhlIHB5dGhvbiBtb2R1bGUgdG8gbG9hZCB0aGUgU09OQU1FIHZlcnNpb25lZCBzaGFyZWQgb2JqZWN0LgotCi1Ob3JtYWwgZW5kLXVzZXIgc3lzdGVtcyBtYXkgb25seSBoYXZlIGF2YWlsYWJsZSBsaWJuZnRhYmxlcy5zby4xLjAuMCBhbmQgbm90Ci1saWJuZnRhYmxlcy5zbyB3aGljaCBpcyB1c3VhbGx5IG9ubHkgcHJlc2VudCBpbiBkZXZlbG9wZXIgc3lzdGVtcy4KLQotSW4gRGViaWFuIHN5c3RlbXMsIGZvciBleGFtcGxlOgotCi0gJSBkcGtnIC1MIGxpYm5mdGFibGVzMSB8IGdyZXAgc28uMQotIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvbGlibmZ0YWJsZXMuc28uMS4wLjAKLSAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L2xpYm5mdGFibGVzLnNvLjEKLQotICUgZHBrZyAtTCBsaWJuZnRhYmxlcy1kZXYgfCBncmVwIHNvCi0gL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9saWJuZnRhYmxlcy5zbwotCi1UaGUgIjEiIGlzIG5vdCBhIG1hZ2ljIG51bWJlciwgaXMgdGhlIFNPTkFNRSBvZiBsaWJuZnRhYmxlcyBpbiB0aGUgY3VycmVudAotdmVyc2lvbiwgYXMgc3RhdGVkIGluIE1ha2VfZ2xvYmFsLmFtLgotCi1SZXBvcnRlZC1ieTogTWljaGFlbCBCaWVibCA8YmllYmxAZGViaWFuLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEFydHVybyBCb3JyZXJvIEdvbnphbGV6IDxhcnR1cm9AbmV0ZmlsdGVyLm9yZz4KLUFja2VkLWJ5OiBQaGlsIFN1dHRlciA8cGhpbEBud2wuY2M+Ci1TaWduZWQtb2ZmLWJ5OiBQYWJsbyBOZWlyYSBBeXVzbyA8cGFibG9AbmV0ZmlsdGVyLm9yZz4KLS0tLQotIHB5L25mdGFibGVzLnB5IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcHkvbmZ0YWJsZXMucHkgYi9weS9uZnRhYmxlcy5weQotaW5kZXggNDhlYjU0ZmUuLjJhMGExZTg5IDEwMDY0NAotLS0tIGEvcHkvbmZ0YWJsZXMucHkKLSsrKyBiL3B5L25mdGFibGVzLnB5Ci1AQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBOZnRhYmxlczoKLSAKLSAgICAgdmFsaWRhdG9yID0gTm9uZQotIAotLSAgICBkZWYgX19pbml0X18oc2VsZiwgc29maWxlPSJsaWJuZnRhYmxlcy5zbyIpOgotKyAgICBkZWYgX19pbml0X18oc2VsZiwgc29maWxlPSJsaWJuZnRhYmxlcy5zby4xIik6Ci0gICAgICAgICAiIiJJbnN0YW50aWF0ZSBhIG5ldyBOZnRhYmxlcyBjbGFzcyBvYmplY3QuCi0gCi0gICAgICAgICBBY2NlcHRzIGEgc2hhcmVkIG9iamVjdCBmaWxlIHRvIG9wZW4sIGJ5IGRlZmF1bHQgc3RhbmRhcmQgc2VhcmNoIHBhdGgKLS0tIAotY2dpdCB2MS4yLjEKLQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbmZ0YWJsZXMvbmZ0YWJsZXNfMC45LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbmZ0YWJsZXMvbmZ0YWJsZXNfMC45LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1YTdiY2MuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL25mdGFibGVzL25mdGFibGVzXzAuOS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJOZXRmaWx0ZXIgVGFibGVzIHVzZXJzcGFjZSB1dGlsbGl0ZXMiCi1TRUNUSU9OID0gIm5ldCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMWE3OGZkZDg3OWEyNjNhNWUwYjQyZDFmYzU2NWU3OSIKLQotREVQRU5EUyA9ICJsaWJtbmwgbGlibmZ0bmwgYmlzb24tbmF0aXZlIFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWluaS1nbXAnLCAnJywgJ2dtcCcsIGQpfSIKLQotIyBFbnN1cmUgd2UgcmVqZWN0IHRoZSAwLjA5OSB2ZXJzaW9uIGJ5IG1hdGNoaW5nIGF0IGxlYXN0IHR3byBkb3RzCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJuZnRhYmxlcy0oP1A8cHZlcj5cZCsoXC5cZCspezIsfSkudGFyLmJ6MiIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm5ldGZpbHRlci5vcmcvcHJvamVjdHMvbmZ0YWJsZXMvZmlsZXMvJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXVwZGF0ZS1weXRob24zLW5mdGFibGVzLXJlZmVyZW5jZS5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5OTEzYjJiNDY4NjQzOTRkNDE5MTZiNzQ2MzhlMDg3NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NTZiOTE1Y2UyYTdhZWFmZjEyM2U0OTAwNmJlN2EwNjkwYTA5NjRlOTZjMDYyNzAzMTgxYTM2ZTJlNWVkYjc4IgotCi1pbmhlcml0IGF1dG90b29scyBtYW5wYWdlcyBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbiByZWFkbGluZSIKLVBBQ0tBR0VDT05GSUdbanNvbl0gPSAiLS13aXRoLWpzb24sIC0td2l0aG91dC1qc29uLCBqYW5zc29uIgotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFuLWRvYywgLS1kaXNhYmxlLW1hbi1kb2MsIGFzY2lpZG9jLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbbWluaS1nbXBdID0gIi0td2l0aC1taW5pLWdtcCwgLS13aXRob3V0LW1pbmktZ21wIgotUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0tZW5hYmxlLXB5dGhvbiAtLXdpdGgtcHl0aG9uLWJpbj0ke1BZVEhPTn0sIC0td2l0aC1weXRob24tYmluPSIiLCBweXRob24zIgotUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLWNsaT1yZWFkbGluZSwgLS13aXRob3V0LWNsaSwgcmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW3h0YWJsZXNdID0gIi0td2l0aC14dGFibGVzLCAtLXdpdGhvdXQteHRhYmxlcywgaXB0YWJsZXMiCi0KLWluaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3B5dGhvbjNuYXRpdmUnLCAnJywgZCl9Ci0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJrZXJuZWwtbW9kdWxlLW5mLXRhYmxlcyIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXB5dGhvbiIKLUZJTEVTXyR7UE59LXB5dGhvbiA9ICIke25vbmFyY2hfbGliZGlyfS8ke1BZVEhPTl9ESVJ9IgotUkRFUEVORFNfJHtQTn0tcHl0aG9uID0gInB5dGhvbjMtY29yZSBweXRob24zLWpzb24iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbmZ0YWJsZXMvbmZ0YWJsZXNfMC45LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbmZ0YWJsZXMvbmZ0YWJsZXNfMC45LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI1N2FiYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9uZnRhYmxlcy9uZnRhYmxlc18wLjkuNC5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIk5ldGZpbHRlciBUYWJsZXMgdXNlcnNwYWNlIHV0aWxsaXRlcyIKK1NFQ1RJT04gPSAibmV0IgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQxYTc4ZmRkODc5YTI2M2E1ZTBiNDJkMWZjNTY1ZTc5IgorCitERVBFTkRTID0gImxpYm1ubCBsaWJuZnRubCBiaXNvbi1uYXRpdmUgXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaW5pLWdtcCcsICcnLCAnZ21wJywgZCl9IgorCisjIEVuc3VyZSB3ZSByZWplY3QgdGhlIDAuMDk5IHZlcnNpb24gYnkgbWF0Y2hpbmcgYXQgbGVhc3QgdHdvIGRvdHMKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIm5mdGFibGVzLSg/UDxwdmVyPlxkKyhcLlxkKyl7Mix9KS50YXIuYnoyIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9uZnRhYmxlcy9maWxlcy8ke0JQfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gImZkZmQ1MWExMDgzZmIwNTRhNDg3YjUxNTliMWVkNWNkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA4Yjg2ODNhOWRiNWZiYTk4MGJjMDkyYjc1Mjg4YWY5OGQyMThiYmU4YWI0NDZkYWYyMzM4NTcwZDA3MzBmOWEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIG1hbnBhZ2VzIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uIHJlYWRsaW5lIgorUEFDS0FHRUNPTkZJR1tqc29uXSA9ICItLXdpdGgtanNvbiwgLS13aXRob3V0LWpzb24sIGphbnNzb24iCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW4tZG9jLCAtLWRpc2FibGUtbWFuLWRvYywgYXNjaWlkb2MtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1ttaW5pLWdtcF0gPSAiLS13aXRoLW1pbmktZ21wLCAtLXdpdGhvdXQtbWluaS1nbXAiCitQQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS1lbmFibGUtcHl0aG9uIC0td2l0aC1weXRob24tYmluPSR7UFlUSE9OfSwgLS13aXRoLXB5dGhvbi1iaW49IiIsIHB5dGhvbjMiCitQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtY2xpPXJlYWRsaW5lLCAtLXdpdGhvdXQtY2xpLCByZWFkbGluZSIKK1BBQ0tBR0VDT05GSUdbeHRhYmxlc10gPSAiLS13aXRoLXh0YWJsZXMsIC0td2l0aG91dC14dGFibGVzLCBpcHRhYmxlcyIKKworaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAncHl0aG9uM25hdGl2ZScsICcnLCBkKX0KKworUlJFQ09NTUVORFNfJHtQTn0gKz0gImtlcm5lbC1tb2R1bGUtbmYtdGFibGVzIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tcHl0aG9uIgorRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7bm9uYXJjaF9saWJkaXJ9LyR7UFlUSE9OX0RJUn0iCitSREVQRU5EU18ke1BOfS1weXRob24gPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtanNvbiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLW1vZHVsZV8wLjAuMjAxOTA5MTMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC1tb2R1bGVfMC4wLjIwMTkwOTEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWRjOTdhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLW1vZHVsZV8wLjAuMjAxOTA5MTMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1yZXF1aXJlIHdpcmVndWFyZC5pbmMKLQotaW5oZXJpdCBtb2R1bGUga2VybmVsLW1vZHVsZS1zcGxpdAotCi1ERVBFTkRTID0gInZpcnR1YWwva2VybmVsIGxpYm1ubCIKLQotIyBUaGlzIG1vZHVsZSByZXF1aXJlcyBMaW51eCAzLjEwIGhpZ2hlciBhbmQgc2V2ZXJhbCBuZXR3b3JraW5nIHJlbGF0ZWQKLSMgY29uZmlndXJhdGlvbiBvcHRpb25zLiBGb3IgZXhhY3Qga2VybmVsIHJlcXVpcmVtZW50cyB2aXNpdDoKLSMgaHR0cHM6Ly93d3cud2lyZWd1YXJkLmlvL2luc3RhbGwvI2tlcm5lbC1yZXF1aXJlbWVudHMKLQotRVhUUkFfT0VNQUtFX2FwcGVuZCA9ICIgXAotICAgIEtFUk5FTERJUj0ke1NUQUdJTkdfS0VSTkVMX0RJUn0gXAotICAgICIKLQotTUFLRV9UQVJHRVRTID0gIm1vZHVsZSIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS14dC1oYXNobGltaXQiCi1NT0RVTEVfTkFNRSA9ICJ3aXJlZ3VhcmQiCi0KLSMgS2VybmVsIG1vZHVsZSBwYWNrYWdlcyBNVVNUIGJlZ2luIHdpdGggJ2tlcm5lbC1tb2R1bGUtJywgb3RoZXJ3aXNlCi0jIG11bHRpbGliIGltYWdlIGdlbmVyYXRpb24gY2FuIGZhaWwuCi0jCi0jIFRoZSBmb2xsb3dpbmcgbGluZSBpcyBvbmx5IG5lY2Vzc2FyeSBpZiB0aGUgcmVjaXBlIG5hbWUgZG9lcyBub3QgYmVnaW4KLSMgd2l0aCBrZXJuZWwtbW9kdWxlLS4KLVBLR18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLSR7TU9EVUxFX05BTUV9IgotCi1tb2R1bGVfZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L21vZHVsZXMvJHtLRVJORUxfVkVSU0lPTn0va2VybmVsLyR7TU9EVUxFX05BTUV9Ci0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7TU9EVUxFX05BTUV9LmtvIFwKLSAgICAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059L2tlcm5lbC8ke01PRFVMRV9OQU1FfS8ke01PRFVMRV9OQU1FfS5rbwotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQtbW9kdWxlXzEuMC4yMDIwMDQwMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLW1vZHVsZV8xLjAuMjAyMDA0MDEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzMxOTk1OQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLW1vZHVsZV8xLjAuMjAyMDA0MDEuYmIKQEAgLTAsMCArMSwzNSBAQAorcmVxdWlyZSB3aXJlZ3VhcmQuaW5jCisKK1NSQ1JFViA9ICI0M2Y1N2RhYzdiODMwNTAyNGY4M2FkZGM1MzNjOWVlZGU2NTA5MTI5IgorCitTUkNfVVJJID0gImdpdDovL2dpdC56eDJjNC5jb20vd2lyZWd1YXJkLWxpbnV4LWNvbXBhdCIKKworaW5oZXJpdCBtb2R1bGUga2VybmVsLW1vZHVsZS1zcGxpdAorCitERVBFTkRTID0gInZpcnR1YWwva2VybmVsIGxpYm1ubCIKKworIyBUaGlzIG1vZHVsZSByZXF1aXJlcyBMaW51eCAzLjEwIGhpZ2hlciBhbmQgc2V2ZXJhbCBuZXR3b3JraW5nIHJlbGF0ZWQKKyMgY29uZmlndXJhdGlvbiBvcHRpb25zLiBGb3IgZXhhY3Qga2VybmVsIHJlcXVpcmVtZW50cyB2aXNpdDoKKyMgaHR0cHM6Ly93d3cud2lyZWd1YXJkLmlvL2luc3RhbGwvI2tlcm5lbC1yZXF1aXJlbWVudHMKKworRVhUUkFfT0VNQUtFX2FwcGVuZCA9ICIgXAorICAgIEtFUk5FTERJUj0ke1NUQUdJTkdfS0VSTkVMX0RJUn0gXAorICAgICIKKworTUFLRV9UQVJHRVRTID0gIm1vZHVsZSIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS14dC1oYXNobGltaXQiCitNT0RVTEVfTkFNRSA9ICJ3aXJlZ3VhcmQiCisKKyMgS2VybmVsIG1vZHVsZSBwYWNrYWdlcyBNVVNUIGJlZ2luIHdpdGggJ2tlcm5lbC1tb2R1bGUtJywgb3RoZXJ3aXNlCisjIG11bHRpbGliIGltYWdlIGdlbmVyYXRpb24gY2FuIGZhaWwuCisjCisjIFRoZSBmb2xsb3dpbmcgbGluZSBpcyBvbmx5IG5lY2Vzc2FyeSBpZiB0aGUgcmVjaXBlIG5hbWUgZG9lcyBub3QgYmVnaW4KKyMgd2l0aCBrZXJuZWwtbW9kdWxlLS4KK1BLR18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLSR7TU9EVUxFX05BTUV9IgorCittb2R1bGVfZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L21vZHVsZXMvJHtLRVJORUxfVkVSU0lPTn0va2VybmVsLyR7TU9EVUxFX05BTUV9CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7TU9EVUxFX05BTUV9LmtvIFwKKyAgICAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059L2tlcm5lbC8ke01PRFVMRV9OQU1FfS8ke01PRFVMRV9OQU1FfS5rbworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQtdG9vbHNfMC4wLjIwMTkwOTEzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQtdG9vbHNfMC4wLjIwMTkwOTEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGRkYmNiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLXRvb2xzXzAuMC4yMDE5MDkxMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLXJlcXVpcmUgd2lyZWd1YXJkLmluYwotCi1pbmhlcml0IGJhc2gtY29tcGxldGlvbiBzeXN0ZW1kIHBrZ2NvbmZpZwotCi1ERVBFTkRTID0gIndpcmVndWFyZC1tb2R1bGUgbGlibW5sIgotCi1kb19jb21waWxlX3ByZXBlbmQgKCkgewotICAgIGNkICR7U30vdG9vbHMKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgY2QgJHtTfS90b29scwotICAgIG9lX3J1bm1ha2UgREVTVERJUj0iJHtEfSIgUFJFRklYPSIke3ByZWZpeH0iIFNZU0NPTkZESVI9IiR7c3lzY29uZmRpcn0iIFwKLSAgICAgICAgU1lTVEVNRFVOSVRESVI9IiR7c3lzdGVtZF91bml0ZGlyfSIgXAotICAgICAgICBXSVRIX1NZU1RFTURVTklUUz0ke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAneWVzJywgJycsIGQpfSBcCi0gICAgICAgIFdJVEhfQkFTSENPTVBMRVRJT049eWVzIFwKLSAgICAgICAgV0lUSF9XR1FVSUNLPXllcyBcCi0gICAgICAgIGluc3RhbGwKLX0KLQotRklMRVNfJHtQTn0gPSAiIFwKLSAgICAke3N5c2NvbmZkaXJ9IFwKLSAgICAke3N5c3RlbWRfdW5pdGRpcn0gXAotICAgICR7YmluZGlyfSBcCi0iCi0KLVJERVBFTkRTXyR7UE59ID0gIndpcmVndWFyZC1tb2R1bGUgYmFzaCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLXRvb2xzXzEuMC4yMDIwMDMxOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLXRvb2xzXzEuMC4yMDIwMDMxOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjk4YjlhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQtdG9vbHNfMS4wLjIwMjAwMzE5LmJiCkBAIC0wLDAgKzEsMjUgQEAKK3JlcXVpcmUgd2lyZWd1YXJkLmluYworCitTUkNSRVYgPSAiYTgwNjNhZGM4YWU5YjRmYzk4NDg1MDBlOTNmOTRiZWU4YWQyZTU4NSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lnp4MmM0LmNvbS93aXJlZ3VhcmQtdG9vbHMiCisKK2luaGVyaXQgYmFzaC1jb21wbGV0aW9uIHN5c3RlbWQgcGtnY29uZmlnCisKK0RFUEVORFMgKz0gIndpcmVndWFyZC1tb2R1bGUgbGlibW5sIgorCitkb19pbnN0YWxsICgpIHsKKyAgICBvZV9ydW5tYWtlIERFU1RESVI9IiR7RH0iIFBSRUZJWD0iJHtwcmVmaXh9IiBTWVNDT05GRElSPSIke3N5c2NvbmZkaXJ9IiBcCisgICAgICAgIFNZU1RFTURVTklURElSPSIke3N5c3RlbWRfdW5pdGRpcn0iIFwKKyAgICAgICAgV0lUSF9TWVNURU1EVU5JVFM9JHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3llcycsICcnLCBkKX0gXAorICAgICAgICBXSVRIX0JBU0hDT01QTEVUSU9OPXllcyBcCisgICAgICAgIFdJVEhfV0dRVUlDSz15ZXMgXAorICAgICAgICBpbnN0YWxsCit9CisKK0ZJTEVTXyR7UE59ID0gIiBcCisgICAgJHtzeXNjb25mZGlyfSBcCisgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9IFwKKyAgICAke2JpbmRpcn0gXAorIgorCitSREVQRU5EU18ke1BOfSA9ICJ3aXJlZ3VhcmQtbW9kdWxlIGJhc2giCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC5pbmMKaW5kZXggYjBiNDhkMC4uYTNhNzg2NyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLmluYwpAQCAtMTAsOCArMTAsNCBAQAogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKIAotU1JDX1VSSSA9ICJodHRwczovL2dpdC56eDJjNC5jb20vV2lyZUd1YXJkL3NuYXBzaG90L1dpcmVHdWFyZC0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiZWMyMzQ1ZGZjOGZmYzYxY2NkNzUyOWQ1ZDE5YjI2MDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTk3MzI3MTg1ZDJkMWI1OTdkYzExOGY3MzdjMGMxNjVlMmEyYzIxNDUzMzg3ZWEwMjY1OWYxMTU5ZDE0ODUxOCIKLQotUyA9ICIke1dPUktESVJ9L1dpcmVHdWFyZC0ke1BWfS9zcmMvIgorUyA9ICIke1dPUktESVJ9L2dpdC9zcmMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1uZXRraXQvbmV0a2l0LWZ0cC9uZXRraXQtZnRwXzAuMTcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1uZXRraXQvbmV0a2l0LWZ0cC9uZXRraXQtZnRwXzAuMTcuYmIKaW5kZXggNjVjMjBjMC4uY2YzMDZlYyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC1mdHAvbmV0a2l0LWZ0cF8wLjE3LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtZnRwL25ldGtpdC1mdHBfMC4xNy5iYgpAQCAtMTgsNiArMTgsOCBAQAogCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKIAorQ0xFQU5CUk9LRU4gPSAiMSIKKwogZG9fY29uZmlndXJlICgpIHsKICAgICAuL2NvbmZpZ3VyZSAtLXByZWZpeD0ke3ByZWZpeH0KICAgICBlY2hvICJMREZMQUdTPSR7TERGTEFHU30iID4+IE1DT05GSUcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtcndoby9uZXRraXQtcndob18wLjE3LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC1yd2hvL25ldGtpdC1yd2hvXzAuMTcuYmIKaW5kZXggNjBhOGQ5NS4uYWQ1NDNiMCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC1yd2hvL25ldGtpdC1yd2hvXzAuMTcuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC1yd2hvL25ldGtpdC1yd2hvXzAuMTcuYmIKQEAgLTUsNyArNSw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9yd2hvL3J3aG8uYztiZWdpbmxpbmU9MjtlbmRsaW5lPTM7bWQ1PTVhODVmMTNjMDE0MmQ3MmZjMzc4ZTAwZjE1ZGE1YjllIgogCiBTUkNfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9uL25ldGtpdC1yd2hvL25ldGtpdC1yd2hvXyR7UFZ9Lm9yaWcudGFyLmd6O25hbWU9YXJjaGl2ZSBcCi0gICAgICAgICAgICR7REVCSUFOX01JUlJPUn0vbWFpbi9uL25ldGtpdC1yd2hvL25ldGtpdC1yd2hvXyR7UFZ9LTEzLmRlYmlhbi50YXIuZ3o7bmFtZT1wYXRjaDEzIFwKKyAgICAgICAgICAgJHtERUJJQU5fTUlSUk9SfS9tYWluL24vbmV0a2l0LXJ3aG8vbmV0a2l0LXJ3aG9fJHtQVn0tMTMuZGViaWFuLnRhci5nejtzdWJkaXI9JHtCUH07bmFtZT1wYXRjaDEzIFwKICAgICAgICAgICAgZmlsZTovL3J3aG9kIFwKICAgICAgICAgICAgZmlsZTovL3J3aG9kLmRlZmF1bHQgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtbWlzc2luZy1pbmNsdWRlLXBhdGgtdG8tSS1vcHRpb25zLnBhdGNoIFwKQEAgLTIwLDEzICsyMCwzNyBAQAogCiBDRkxBR1MgKz0gIiAtRF9HTlVfU09VUkNFIgogCi1kZWJpYW5fZG9fcGF0Y2goKSB7Ci0gICAgY2QgJHtTfQotICAgIHdoaWxlIHJlYWQgbGluZTsgZG8gcGF0Y2ggLXAxIDwgJHtXT1JLRElSfS9kZWJpYW4vcGF0Y2hlcy8kbGluZTsgZG9uZSA8ICR7V09SS0RJUn0vZGViaWFuL3BhdGNoZXMvc2VyaWVzCisjIFVubGlrZSBvdGhlciBEZWJpYW4gcGFja2FnZXMsIG5ldC10b29scyAqLmRpZmYuZ3ogY29udGFpbnMgYW5vdGhlciBzZXJpZXMgb2YKKyMgcGF0Y2hlcyBtYWludGFpbmVkIGJ5IHF1aWx0LiBTbyBtYW51YWxseSBhcHBseSB0aGVtIGJlZm9yZSBhcHBseWluZyBvdGhlciBsb2NhbAorIyBwYXRjaGVzLiBBbHNvIHJlbW92ZSBhbGwgdGVtcCBmaWxlcyBiZWZvcmUgbGVhdmluZywgYmVjYXVzZSBkb19wYXRjaCgpIHdpbGwgcG9wCisjIHVwIGFsbCBwcmV2aW91c2x5IGFwcGxpZWQgcGF0Y2hlcyBpbiB0aGUgc3RhcnQKK2RvX3BhdGNoW2RlcGVuZHNdICs9ICJxdWlsdC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKK25ldGtpdF9kb19wYXRjaCgpIHsKKyAgICAgICAgY2QgJHtTfQorICAgICAgICAjIGl0J3MgaW1wb3J0YW50IHRoYXQgd2Ugb25seSBwb3AgdGhlIGV4aXN0aW5nIHBhdGNoZXMgd2hlbiB0aGV5J3ZlCisgICAgICAgICMgYmVlbiBhcHBsaWVkLCBvdGhlcndpc2UgcXVpbHQgd2lsbCBjbGltYiB0aGUgZGlyZWN0b3J5IHRyZWUKKyAgICAgICAgIyBhbmQgcmV2ZXJzZSBvdXQgc29tZSBjb21wbGV0ZWx5IGRpZmZlcmVudCBzZXQgb2YgcGF0Y2hlcworICAgICAgICBpZiBbIC1kICR7U30vcGF0Y2hlcyBdOyB0aGVuCisgICAgICAgICAgICAgICAgIyB3aGlsc3QgdGhpcyBpcyB0aGUgZGVmYXVsdCBkaXJlY3RvcnksIGRvaW5nIGl0IGxpa2UgdGhpcworICAgICAgICAgICAgICAgICMgZGVmZWF0cyB0aGUgZGlyZWN0b3J5IGNsaW1iaW5nIHRoYXQgcXVpbHQgd2lsbCBvdGhlcndpc2UKKyAgICAgICAgICAgICAgICAjIGRvOyBub3RlIHRoZSBkaXJlY3RvcnkgbXVzdCBleGlzdCB0byBkZWZlYXQgdGhpcywgaGVuY2UKKyAgICAgICAgICAgICAgICAjIHRoZSB0ZXN0IGluc2lkZSB3aGljaCB3ZSBvcGVyYXRlCisgICAgICAgICAgICAgICAgUVVJTFRfUEFUQ0hFUz0ke1N9L3BhdGNoZXMgcXVpbHQgcG9wIC1hCisgICAgICAgIGZpCisgICAgICAgIGlmIFsgLWQgJHtTfS8ucGMtJHtCUE59IF07IHRoZW4KKyAgICAgICAgICAgICAgICBybSAtcmYgJHtTfS8ucGMKKyAgICAgICAgICAgICAgICBtdiAke1N9Ly5wYy0ke0JQTn0gJHtTfS8ucGMKKyAgICAgICAgICAgICAgICBRVUlMVF9QQVRDSEVTPSR7U30vZGViaWFuL3BhdGNoZXMgcXVpbHQgcG9wIC1hCisgICAgICAgICAgICAgICAgcm0gLXJmICR7U30vLnBjICR7U30vZGViaWFuCisgICAgICAgIGZpCisgICAgICAgIFFVSUxUX1BBVENIRVM9JHtTfS9kZWJpYW4vcGF0Y2hlcyBxdWlsdCBwdXNoIC1hCisgICAgICAgIG12ICR7U30vLnBjICR7U30vLnBjLSR7QlBOfQogfQogCitkb191bnBhY2tbY2xlYW5kaXJzXSArPSAiJHtTfSIKKwogcHl0aG9uIGRvX3BhdGNoKCkgewotICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZGViaWFuX2RvX3BhdGNoJywgZCkKKyAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ25ldGtpdF9kb19wYXRjaCcsIGQpCiAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdwYXRjaF9kb19wYXRjaCcsIGQpCiB9CiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtdGVsbmV0L2ZpbGVzL0NWRS0yMDIwLTEwMTg4LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC10ZWxuZXQvZmlsZXMvQ1ZFLTIwMjAtMTAxODgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDIxYzYwMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtdGVsbmV0L2ZpbGVzL0NWRS0yMDIwLTEwMTg4LnBhdGNoCkBAIC0wLDAgKzEsMTEyIEBACitGcm9tIDZhYjAwN2RiYjE5NTgzNzFhYmZmMmVhYWFkMmIyNmRhODliM2M3NGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDI0IEFwciAyMDIwIDA5OjQzOjQ0ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlbG5ldGQvdXRpbGl0eS5jOiBmaXggQ1ZFLTIwMjAtMTAxODgKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW0ZlZG9yYTogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy90ZWxuZXQvcmF3L21hc3Rlci9mL3RlbG5ldC0wLjE3LW92ZXJmbG93LWV4cGxvaXQucGF0Y2hdCisKK0NWRTogQ1ZFLTIwMjAtMTAxODgKKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgdGVsbmV0ZC91dGlsaXR5LmMgfCAzMiArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3RlbG5ldGQvdXRpbGl0eS5jIGIvdGVsbmV0ZC91dGlsaXR5LmMKK2luZGV4IDc1MzE0Y2IuLmI5YTQ2YTYgMTAwNjQ0CistLS0gYS90ZWxuZXRkL3V0aWxpdHkuYworKysrIGIvdGVsbmV0ZC91dGlsaXR5LmMKK0BAIC0xNjksMzEgKzE2OSwzOCBAQCB2b2lkIAlwdHlmbHVzaCh2b2lkKQorICAqLworIHN0YXRpYworIGNoYXIgKgorLW5leHRpdGVtKGNoYXIgKmN1cnJlbnQpCisrbmV4dGl0ZW0oY2hhciAqY3VycmVudCwgY29uc3QgY2hhciAqZW5kcCkKKyB7CisrICAgIGlmIChjdXJyZW50ID49IGVuZHApIHsKKysgICAgICAgIHJldHVybiBOVUxMOworKyAgICB9CisgICAgIGlmICgoKmN1cnJlbnQmMHhmZikgIT0gSUFDKSB7CisgCXJldHVybiBjdXJyZW50KzE7CisgICAgIH0KKysgICAgaWYgKGN1cnJlbnQrMSA+PSBlbmRwKSB7CisrICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgfQorICAgICBzd2l0Y2ggKCooY3VycmVudCsxKSYweGZmKSB7CisgICAgIGNhc2UgRE86CisgICAgIGNhc2UgRE9OVDoKKyAgICAgY2FzZSBXSUxMOgorICAgICBjYXNlIFdPTlQ6CistCXJldHVybiBjdXJyZW50KzM7CisrCXJldHVybiBjdXJyZW50KzMgPD0gZW5kcCA/IGN1cnJlbnQrMyA6IE5VTEw7CisgICAgIGNhc2UgU0I6CQkvKiBsb29wIGZvcmV2ZXIgbG9va2luZyBmb3IgdGhlIFNFICovCisgCXsKKyAJICAgIHJlZ2lzdGVyIGNoYXIgKmxvb2sgPSBjdXJyZW50KzI7CisgCistCSAgICBmb3IgKDs7KSB7CisrCSAgICB3aGlsZSAobG9vayA8IGVuZHApIHsKKyAJCWlmICgoKmxvb2srKyYweGZmKSA9PSBJQUMpIHsKKy0JCSAgICBpZiAoKCpsb29rKysmMHhmZikgPT0gU0UpIHsKKysJCSAgICBpZiAobG9vayA8IGVuZHAgJiYgKCpsb29rKysmMHhmZikgPT0gU0UpIHsKKyAJCQlyZXR1cm4gbG9vazsKKyAJCSAgICB9CisgCQl9CisgCSAgICB9CisrCSAgICByZXR1cm4gTlVMTDsKKyAJfQorICAgICBkZWZhdWx0OgorLQlyZXR1cm4gY3VycmVudCsyOworKwlyZXR1cm4gY3VycmVudCsyIDw9IGVuZHAgPyBjdXJyZW50KzIgOiBOVUxMOworICAgICB9CisgfSAgLyogZW5kIG9mIG5leHRpdGVtICovCisgCitAQCAtMjE5LDcgKzIyNiw3IEBAIHZvaWQgbmV0Y2xlYXIodm9pZCkKKyAgICAgcmVnaXN0ZXIgY2hhciAqdGhpc2l0ZW0sICpuZXh0OworICAgICBjaGFyICpnb29kOworICNkZWZpbmUJd2V3YW50KHApCSgobmZyb250cCA+IHApICYmICgoKnAmMHhmZikgPT0gSUFDKSAmJiBcCistCQkJCSgoKihwKzEpJjB4ZmYpICE9IEVDKSAmJiAoKCoocCsxKSYweGZmKSAhPSBFTCkpCisrCQkJCShuZnJvbnRwID4gcCsxICYmICgoKCoocCsxKSYweGZmKSAhPSBFQykgJiYgKCgqKHArMSkmMHhmZikgIT0gRUwpKSkpCisgCisgI2lmCWRlZmluZWQoRU5DUllQVCkKKyAgICAgdGhpc2l0ZW0gPSBuY2xlYXJ0byA+IG5ldG9idWYgPyBuY2xlYXJ0byA6IG5ldG9idWY7CitAQCAtMjI3LDcgKzIzNCw3IEBAIHZvaWQgbmV0Y2xlYXIodm9pZCkKKyAgICAgdGhpc2l0ZW0gPSBuZXRvYnVmOworICNlbmRpZgorIAorLSAgICB3aGlsZSAoKG5leHQgPSBuZXh0aXRlbSh0aGlzaXRlbSkpIDw9IG5iYWNrcCkgeworKyAgICB3aGlsZSAoKG5leHQgPSBuZXh0aXRlbSh0aGlzaXRlbSwgbmJhY2twKSkgIT0gTlVMTCAmJiBuZXh0IDw9IG5iYWNrcCkgeworIAl0aGlzaXRlbSA9IG5leHQ7CisgICAgIH0KKyAKK0BAIC0yMzksMjAgKzI0NiwyMyBAQCB2b2lkIG5ldGNsZWFyKHZvaWQpCisgICAgIGdvb2QgPSBuZXRvYnVmOwkvKiB3aGVyZSB0aGUgZ29vZCBieXRlcyBnbyAqLworICNlbmRpZgorIAorLSAgICB3aGlsZSAobmZyb250cCA+IHRoaXNpdGVtKSB7CisrICAgIHdoaWxlICh0aGlzaXRlbSAhPSBOVUxMICYmIG5mcm9udHAgPiB0aGlzaXRlbSkgeworIAlpZiAod2V3YW50KHRoaXNpdGVtKSkgeworIAkgICAgaW50IGxlbmd0aDsKKyAKKyAJICAgIG5leHQgPSB0aGlzaXRlbTsKKyAJICAgIGRvIHsKKy0JCW5leHQgPSBuZXh0aXRlbShuZXh0KTsKKy0JICAgIH0gd2hpbGUgKHdld2FudChuZXh0KSAmJiAobmZyb250cCA+IG5leHQpKTsKKysJCW5leHQgPSBuZXh0aXRlbShuZXh0LCBuZnJvbnRwKTsKKysJICAgIH0gd2hpbGUgKG5leHQgIT0gTlVMTCAmJiB3ZXdhbnQobmV4dCkgJiYgKG5mcm9udHAgPiBuZXh0KSk7CisrCSAgICBpZiAobmV4dCA9PSBOVUxMKSB7CisrCQluZXh0ID0gbmZyb250cDsKKysJICAgIH0KKyAJICAgIGxlbmd0aCA9IG5leHQtdGhpc2l0ZW07CisgCSAgICBiY29weSh0aGlzaXRlbSwgZ29vZCwgbGVuZ3RoKTsKKyAJICAgIGdvb2QgKz0gbGVuZ3RoOworIAkgICAgdGhpc2l0ZW0gPSBuZXh0OworIAl9IGVsc2UgeworLQkgICAgdGhpc2l0ZW0gPSBuZXh0aXRlbSh0aGlzaXRlbSk7CisrCSAgICB0aGlzaXRlbSA9IG5leHRpdGVtKHRoaXNpdGVtLCBuZnJvbnRwKTsKKyAJfQorICAgICB9CisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtdGVsbmV0L25ldGtpdC10ZWxuZXRfMC4xNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtdGVsbmV0L25ldGtpdC10ZWxuZXRfMC4xNy5iYgppbmRleCBjZjk5MzQxLi4wZTkyYWRkIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1uZXRraXQvbmV0a2l0LXRlbG5ldC9uZXRraXQtdGVsbmV0XzAuMTcuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC10ZWxuZXQvbmV0a2l0LXRlbG5ldF8wLjE3LmJiCkBAIC0xMiw2ICsxMiw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9jcm9zcy1jb21waWxlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdGVsbmV0LXRlbG5ldGQtRml4LXByaW50LWZvcm1hdC1zdHJpbmdzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdGVsbmV0LXRlbG5ldGQtRml4LWRlYWRsb2NrLW9uLWNsZWFudXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMjAtMTAxODgucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vbi9uZXRraXQtdGVsbmV0LyIKQEAgLTU3LDYgKzU4LDkgQEAKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVt0ZWxuZXRdID0gIiR7YmluZGlyfS90ZWxuZXQiCiBBTFRFUk5BVElWRV9UQVJHRVRbdGVsbmV0XSA9ICIke2JpbmRpcn0vdGVsbmV0LiR7UE59IgogCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAidGVsbmV0ZC44IgorQUxURVJOQVRJVkVfTElOS19OQU1FW3RlbG5ldGQuOF0gPSAiJHttYW5kaXJ9L21hbjgvdGVsbmV0ZC44IgorCiBTUkNfVVJJW21kNXN1bV0gPSAiZDZiZWFiYWFmNTNmZTZlMzgyYzQyY2UzZmFhMDVhMzYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWM4MGQ1Yzc4MzgzNjFhMzI4ZmI2YjYwMDE2ZDUwM2RlZjljZTUzYWQzYzU4OWYzYjA4ZmY3MWEyYmI4OGUwMCIKIEZJTEVTXyR7UE59ICs9ICIke3NiaW5kaXJ9L2luLiogJHtsaWJkaXJ9LyogJHtzeXNjb25mZGlyfS94aW5ldGQuZC8qIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL2JhYmVsZC9iYWJlbGRfMS45LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvYmFiZWxkL2JhYmVsZF8xLjkuMS5iYgppbmRleCAyN2U3YjQzLi42ZGQxNWFkIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvYmFiZWxkL2JhYmVsZF8xLjkuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvYmFiZWxkL2JhYmVsZF8xLjkuMS5iYgpAQCAtMTUsNiArMTUsOCBAQAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2plY2gvYmFiZWxkLmdpdDtwcm90b2NvbD1naXQiCiBTUkNSRVYgPSAiMDgzNWQ1ZDg5NGVhMDE2YWI3YjgxNTYyNDY2Y2FkZTJjNTFhMTJkNCIKIAorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiYmFiZWxkLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKKwogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogZG9fY29tcGlsZSAoKSB7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDAxLUNyZWF0ZS1zdWJyb3V0aW5lLWZvci1jbGVhbmluZy1yZWNlbnQtaW50ZXJmYWNlcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDEtQ3JlYXRlLXN1YnJvdXRpbmUtZm9yLWNsZWFuaW5nLXJlY2VudC1pbnRlcmZhY2VzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5MmMzNDQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDAxLUNyZWF0ZS1zdWJyb3V0aW5lLWZvci1jbGVhbmluZy1yZWNlbnQtaW50ZXJmYWNlcy5wYXRjaApAQCAtMCwwICsxLDYwIEBACitGcm9tIDg5ZWE2YWM0YTg4NDBlOGMyYmUwMTQwYTk4MDVjNjUyMmM2YzUyODAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOYXRlIEthcnN0ZW5zIDxuYXRlLmthcnN0ZW5zQGdhcm1pbi5jb20+CitEYXRlOiBXZWQsIDI4IEp1biAyMDE3IDE3OjMwOjAwIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMDEvMTFdIENyZWF0ZSBzdWJyb3V0aW5lIGZvciBjbGVhbmluZyByZWNlbnQgaW50ZXJmYWNlcworCitNb3ZlcyBmdW5jdGlvbmFsaXR5IGZvciBjbGVhbmluZyB0aGUgbGlzdCBvZiByZWNlbnQKK2ludGVyZmFjZXMgaW50byBpdHMgb3duIHN1YnJvdXRpbmUuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtkdHNAYXBwbGUuY29tXQorCitTaWduZWQtb2ZmLWJ5OiBOYXRlIEthcnN0ZW5zIDxuYXRlLmthcnN0ZW5zQGdhcm1pbi5jb20+CistLS0KKyBtRE5TUG9zaXgvbUROU1Bvc2l4LmMgfCAyNCArKysrKysrKysrKysrKy0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tRE5TUG9zaXgvbUROU1Bvc2l4LmMgYi9tRE5TUG9zaXgvbUROU1Bvc2l4LmMKK2luZGV4IDBlMTBiZDUuLmZmYzk2OTYgMTAwNjQ0CistLS0gYS9tRE5TUG9zaXgvbUROU1Bvc2l4LmMKKysrKyBiL21ETlNQb3NpeC9tRE5TUG9zaXguYworQEAgLTg1Niw2ICs4NTYsMTkgQEAgbUROU2xvY2FsIGludCBTZXR1cFNvY2tldChzdHJ1Y3Qgc29ja2FkZHIgKmludGZBZGRyLCBtRE5TSVBQb3J0IHBvcnQsIGludCBpbnRlcmYKKyAgICAgcmV0dXJuIGVycjsKKyB9CisgCisrLy8gQ2xlYW4gdXAgYW55IGludGVyZmFjZXMgdGhhdCBoYXZlIGJlZW4gaGFuZ2luZyBhcm91bmQgb24gdGhlIFJlY2VudEludGVyZmFjZXMgbGlzdCBmb3IgbW9yZSB0aGFuIGEgbWludXRlCisrbUROU2xvY2FsIHZvaWQgQ2xlYW5SZWNlbnRJbnRlcmZhY2VzKHZvaWQpCisreworKyAgICBQb3NpeE5ldHdvcmtJbnRlcmZhY2UgKipyaSA9ICZnUmVjZW50SW50ZXJmYWNlczsKKysgICAgY29uc3QgbUROU3MzMiB1dGMgPSBtRE5TUGxhdGZvcm1VVEMoKTsKKysgICAgd2hpbGUgKCpyaSkKKysgICAgeworKyAgICAgICAgUG9zaXhOZXR3b3JrSW50ZXJmYWNlICpwaSA9ICpyaTsKKysgICAgICAgIGlmICh1dGMgLSBwaS0+TGFzdFNlZW4gPCA2MCkgcmkgPSAoUG9zaXhOZXR3b3JrSW50ZXJmYWNlICoqKSZwaS0+Y29yZUludGYubmV4dDsKKysgICAgICAgIGVsc2UgeyAqcmkgPSAoUG9zaXhOZXR3b3JrSW50ZXJmYWNlICopcGktPmNvcmVJbnRmLm5leHQ7IGZyZWUocGkpOyB9CisrICAgIH0KKyt9CisrCisgLy8gQ3JlYXRlcyBhIFBvc2l4TmV0d29ya0ludGVyZmFjZSBmb3IgdGhlIGludGVyZmFjZSB3aG9zZSBJUCBhZGRyZXNzIGlzCisgLy8gaW50ZkFkZHIgYW5kIHdob3NlIG5hbWUgaXMgaW50Zk5hbWUgYW5kIHJlZ2lzdGVycyBpdCB3aXRoIG1ETlMgY29yZS4KKyBtRE5TbG9jYWwgaW50IFNldHVwT25lSW50ZXJmYWNlKG1ETlMgKmNvbnN0IG0sIHN0cnVjdCBzb2NrYWRkciAqaW50ZkFkZHIsIHN0cnVjdCBzb2NrYWRkciAqaW50Zk1hc2ssIGNvbnN0IGNoYXIgKmludGZOYW1lLCBpbnQgaW50ZkluZGV4KQorQEAgLTEwMTAsMTYgKzEwMjMsNyBAQCBtRE5TbG9jYWwgaW50IFNldHVwSW50ZXJmYWNlTGlzdChtRE5TICpjb25zdCBtKQorIAorICAgICAvLyBDbGVhbiB1cC4KKyAgICAgaWYgKGludGZMaXN0ICE9IE5VTEwpIGZyZWVfaWZpX2luZm8oaW50Zkxpc3QpOworLQorLSAgICAvLyBDbGVhbiB1cCBhbnkgaW50ZXJmYWNlcyB0aGF0IGhhdmUgYmVlbiBoYW5naW5nIGFyb3VuZCBvbiB0aGUgUmVjZW50SW50ZXJmYWNlcyBsaXN0IGZvciBtb3JlIHRoYW4gYSBtaW51dGUKKy0gICAgUG9zaXhOZXR3b3JrSW50ZXJmYWNlICoqcmkgPSAmZ1JlY2VudEludGVyZmFjZXM7CistICAgIGNvbnN0IG1ETlNzMzIgdXRjID0gbUROU1BsYXRmb3JtVVRDKCk7CistICAgIHdoaWxlICgqcmkpCistICAgIHsKKy0gICAgICAgIFBvc2l4TmV0d29ya0ludGVyZmFjZSAqcGkgPSAqcmk7CistICAgICAgICBpZiAodXRjIC0gcGktPkxhc3RTZWVuIDwgNjApIHJpID0gKFBvc2l4TmV0d29ya0ludGVyZmFjZSAqKikmcGktPmNvcmVJbnRmLm5leHQ7CistICAgICAgICBlbHNlIHsgKnJpID0gKFBvc2l4TmV0d29ya0ludGVyZmFjZSAqKXBpLT5jb3JlSW50Zi5uZXh0OyBmcmVlKHBpKTsgfQorLSAgICB9CisrICAgIENsZWFuUmVjZW50SW50ZXJmYWNlcygpOworIAorICAgICByZXR1cm4gZXJyOworIH0KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDItQ3JlYXRlLXN1YnJvdXRpbmUtZm9yLXRlYXJpbmctZG93bi1hbi1pbnRlcmZhY2UucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDAyLUNyZWF0ZS1zdWJyb3V0aW5lLWZvci10ZWFyaW5nLWRvd24tYW4taW50ZXJmYWNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxYmEzMTgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDAyLUNyZWF0ZS1zdWJyb3V0aW5lLWZvci10ZWFyaW5nLWRvd24tYW4taW50ZXJmYWNlLnBhdGNoCkBAIC0wLDAgKzEsNTggQEAKK0Zyb20gYTIxNDhkZjk5ZGRjZDEyMjI0N2Y5NWM0Y2JjY2U1YzQxMTg1ODFhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5hdGUgS2Fyc3RlbnMgPG5hdGUua2Fyc3RlbnNAZ2FybWluLmNvbT4KK0RhdGU6IFdlZCwgMjggSnVuIDIwMTcgMTc6MzA6MDAgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAwMi8xMV0gQ3JlYXRlIHN1YnJvdXRpbmUgZm9yIHRlYXJpbmcgZG93biBhbiBpbnRlcmZhY2UKKworQ3JlYXRlcyBhIHN1YnJvdXRpbmUgZm9yIHRlYXJpbmcgZG93biBhbiBpbnRlcmZhY2UuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtkdHNAYXBwbGUuY29tXQorCitTaWduZWQtb2ZmLWJ5OiBOYXRlIEthcnN0ZW5zIDxuYXRlLmthcnN0ZW5zQGdhcm1pbi5jb20+CistLS0KKyBtRE5TUG9zaXgvbUROU1Bvc2l4LmMgfCAyMiArKysrKysrKysrKysrKysrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tRE5TUG9zaXgvbUROU1Bvc2l4LmMgYi9tRE5TUG9zaXgvbUROU1Bvc2l4LmMKK2luZGV4IGZmYzk2OTYuLjVlNWIyY2QgMTAwNjQ0CistLS0gYS9tRE5TUG9zaXgvbUROU1Bvc2l4LmMKKysrKyBiL21ETlNQb3NpeC9tRE5TUG9zaXguYworQEAgLTU5MSw2ICs1OTEsMTkgQEAgbUROU2xvY2FsIHZvaWQgRnJlZVBvc2l4TmV0d29ya0ludGVyZmFjZShQb3NpeE5ldHdvcmtJbnRlcmZhY2UgKmludGYpCisgICAgIGdSZWNlbnRJbnRlcmZhY2VzID0gaW50ZjsKKyB9CisgCisrbUROU2xvY2FsIHZvaWQgVGVhckRvd25JbnRlcmZhY2UobUROUyAqY29uc3QgbSwgUG9zaXhOZXR3b3JrSW50ZXJmYWNlICppbnRmKQorK3sKKysgICAgbUROU19EZXJlZ2lzdGVySW50ZXJmYWNlKG0sICZpbnRmLT5jb3JlSW50ZiwgTm9ybWFsQWN0aXZhdGlvbik7CisrICAgIGlmIChnTUROU1BsYXRmb3JtUG9zaXhWZXJib3NlTGV2ZWwgPiAwKSBmcHJpbnRmKHN0ZGVyciwgIkRlcmVnaXN0ZXJlZCBpbnRlcmZhY2UgJXNcbiIsIGludGYtPmludGZOYW1lKTsKKysgICAgRnJlZVBvc2l4TmV0d29ya0ludGVyZmFjZShpbnRmKTsKKysKKysgICAgbnVtX3JlZ2lzdGVyZWRfaW50ZXJmYWNlcy0tOworKyAgICBpZiAobnVtX3JlZ2lzdGVyZWRfaW50ZXJmYWNlcyA9PSAwKSB7CisrICAgICAgICBudW1fcGt0c19hY2NlcHRlZCA9IDA7CisrICAgICAgICBudW1fcGt0c19yZWplY3RlZCA9IDA7CisrICAgIH0KKyt9CisrCisgLy8gR3JhYiB0aGUgZmlyc3QgaW50ZXJmYWNlLCBkZXJlZ2lzdGVyIGl0LCBmcmVlIGl0LCBhbmQgcmVwZWF0IHVudGlsIGRvbmUuCisgbUROU2xvY2FsIHZvaWQgQ2xlYXJJbnRlcmZhY2VMaXN0KG1ETlMgKmNvbnN0IG0pCisgeworQEAgLTU5OSwxMyArNjEyLDEwIEBAIG1ETlNsb2NhbCB2b2lkIENsZWFySW50ZXJmYWNlTGlzdChtRE5TICpjb25zdCBtKQorICAgICB3aGlsZSAobS0+SG9zdEludGVyZmFjZXMpCisgICAgIHsKKyAgICAgICAgIFBvc2l4TmV0d29ya0ludGVyZmFjZSAqaW50ZiA9IChQb3NpeE5ldHdvcmtJbnRlcmZhY2UqKShtLT5Ib3N0SW50ZXJmYWNlcyk7CistICAgICAgICBtRE5TX0RlcmVnaXN0ZXJJbnRlcmZhY2UobSwgJmludGYtPmNvcmVJbnRmLCBOb3JtYWxBY3RpdmF0aW9uKTsKKy0gICAgICAgIGlmIChnTUROU1BsYXRmb3JtUG9zaXhWZXJib3NlTGV2ZWwgPiAwKSBmcHJpbnRmKHN0ZGVyciwgIkRlcmVnaXN0ZXJlZCBpbnRlcmZhY2UgJXNcbiIsIGludGYtPmludGZOYW1lKTsKKy0gICAgICAgIEZyZWVQb3NpeE5ldHdvcmtJbnRlcmZhY2UoaW50Zik7CisrICAgICAgICBUZWFyRG93bkludGVyZmFjZShtLCBpbnRmKTsKKyAgICAgfQorLSAgICBudW1fcmVnaXN0ZXJlZF9pbnRlcmZhY2VzID0gMDsKKy0gICAgbnVtX3BrdHNfYWNjZXB0ZWQgPSAwOworLSAgICBudW1fcGt0c19yZWplY3RlZCA9IDA7CisrCisrICAgIGFzc2VydChudW1fcmVnaXN0ZXJlZF9pbnRlcmZhY2VzID09IDApOworIH0KKyAKKyAvLyBTZXRzIHVwIGEgc2VuZC9yZWNlaXZlIHNvY2tldC4KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDMtVHJhY2staW50ZXJmYWNlLXNvY2tldC1mYW1pbHkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDAzLVRyYWNrLWludGVyZmFjZS1zb2NrZXQtZmFtaWx5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMGU2YmYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDAzLVRyYWNrLWludGVyZmFjZS1zb2NrZXQtZmFtaWx5LnBhdGNoCkBAIC0wLDAgKzEsNTAgQEAKK0Zyb20gNzFhN2M3MjhhZTBkODE0M2I2NmFhNDBkZWNjYTc0ZWJhYTlhYTJjZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5hdGUgS2Fyc3RlbnMgPG5hdGUua2Fyc3RlbnNAZ2FybWluLmNvbT4KK0RhdGU6IFdlZCwgMjggSnVuIDIwMTcgMTc6MzA6MDAgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAwMy8xMV0gVHJhY2sgaW50ZXJmYWNlIHNvY2tldCBmYW1pbHkKKworVHJhY2tzIHRoZSBzb2NrZXQgZmFtaWx5IGFzc29jaWF0ZWQgd2l0aCB0aGUgaW50ZXJmYWNlLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbZHRzQGFwcGxlLmNvbV0KKworU2lnbmVkLW9mZi1ieTogTmF0ZSBLYXJzdGVucyA8bmF0ZS5rYXJzdGVuc0BnYXJtaW4uY29tPgorLS0tCisgbUROU1Bvc2l4L21ETlNQb3NpeC5jIHwgMSArCisgbUROU1Bvc2l4L21ETlNQb3NpeC5oIHwgMiArKworIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9tRE5TUG9zaXgvbUROU1Bvc2l4LmMgYi9tRE5TUG9zaXgvbUROU1Bvc2l4LmMKK2luZGV4IDVlNWIyY2QuLjhmZTIyYmUgMTAwNjQ0CistLS0gYS9tRE5TUG9zaXgvbUROU1Bvc2l4LmMKKysrKyBiL21ETlNQb3NpeC9tRE5TUG9zaXguYworQEAgLTkxOCw2ICs5MTgsNyBAQCBtRE5TbG9jYWwgaW50IFNldHVwT25lSW50ZXJmYWNlKG1ETlMgKmNvbnN0IG0sIHN0cnVjdCBzb2NrYWRkciAqaW50ZkFkZHIsIHN0cnVjdAorICAgICAgICAgLy8gU2V0IHVwIHRoZSBleHRyYSBmaWVsZHMgaW4gUG9zaXhOZXR3b3JrSW50ZXJmYWNlLgorICAgICAgICAgYXNzZXJ0KGludGYtPmludGZOYW1lICE9IE5VTEwpOyAgICAgICAgIC8vIGludGYtPmludGZOYW1lIGFscmVhZHkgc2V0IHVwIGFib3ZlCisgICAgICAgICBpbnRmLT5pbmRleCAgICAgICAgICAgICAgICA9IGludGZJbmRleDsKKysgICAgICAgIGludGYtPnNhX2ZhbWlseSAgICAgICAgICAgID0gaW50ZkFkZHItPnNhX2ZhbWlseTsKKyAgICAgICAgIGludGYtPm11bHRpY2FzdFNvY2tldDQgICAgID0gLTE7CisgI2lmIEhBVkVfSVBWNgorICAgICAgICAgaW50Zi0+bXVsdGljYXN0U29ja2V0NiAgICAgPSAtMTsKK2RpZmYgLS1naXQgYS9tRE5TUG9zaXgvbUROU1Bvc2l4LmggYi9tRE5TUG9zaXgvbUROU1Bvc2l4LmgKK2luZGV4IGNhNjBkODAuLmY3N2MxODUgMTAwNjQ0CistLS0gYS9tRE5TUG9zaXgvbUROU1Bvc2l4LmgKKysrKyBiL21ETlNQb3NpeC9tRE5TUG9zaXguaAorQEAgLTE5LDYgKzE5LDcgQEAKKyAjZGVmaW5lIF9fbUROU1BsYXRmb3JtUG9zaXhfaAorIAorICNpbmNsdWRlIDxzaWduYWwuaD4KKysjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICNpbmNsdWRlIDxzeXMvdGltZS5oPgorIAorICNpZmRlZiAgX19jcGx1c3BsdXMKK0BAIC00MCw2ICs0MSw3IEBAIHN0cnVjdCBQb3NpeE5ldHdvcmtJbnRlcmZhY2UKKyAgICAgY29uc3QgY2hhciAqICAgICAgICAgICAgaW50Zk5hbWU7CisgICAgIFBvc2l4TmV0d29ya0ludGVyZmFjZSAqIGFsaWFzSW50ZjsKKyAgICAgaW50IGluZGV4OworKyAgICBzYV9mYW1pbHlfdCBzYV9mYW1pbHk7CisgICAgIGludCBtdWx0aWNhc3RTb2NrZXQ0OworICNpZiBIQVZFX0lQVjYKKyAgICAgaW50IG11bHRpY2FzdFNvY2tldDY7CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDA0LVVzZS1saXN0LWZvci1jaGFuZ2VkLWludGVyZmFjZXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDA0LVVzZS1saXN0LWZvci1jaGFuZ2VkLWludGVyZmFjZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVhZDQ5YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDQtVXNlLWxpc3QtZm9yLWNoYW5nZWQtaW50ZXJmYWNlcy5wYXRjaApAQCAtMCwwICsxLDE3NyBAQAorRnJvbSBlMWY0ODM1MTBhMTAxMWUzNzU0MGZkZWU4ZjNiYzM2MTExZmE0NWEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmF0ZSBLYXJzdGVucyA8bmF0ZS5rYXJzdGVuc0BnYXJtaW4uY29tPgorRGF0ZTogVGh1LCAxMyBKdWwgMjAxNyAwOTowMDowMCAtMDUwMAorU3ViamVjdDogW1BBVENIIDA0LzExXSBVc2UgbGlzdCBmb3IgY2hhbmdlZCBpbnRlcmZhY2VzCisKK1VzZXMgYSBsaW5rZWQgbGlzdCB0byBzdG9yZSB0aGUgaW5kZXggb2YgY2hhbmdlZCBuZXR3b3JrIGludGVyZmFjZXMKK2luc3RlYWQgb2YgYSBiaXRmaWVsZC4gVGhpcyBhbGxvd3MgZm9yIG5ldHdvcmsgaW50ZXJmYWNlcyB3aXRoIGFuCitpbmRleCBncmVhdGVyIHRoYW4gMzEgKGFuIGluZGV4IG9mIDM2IHdhcyBzZWVuIG9uIEFuZHJvaWQpLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbZHRzQGFwcGxlLmNvbV0KKworU2lnbmVkLW9mZi1ieTogTmF0ZSBLYXJzdGVucyA8bmF0ZS5rYXJzdGVuc0BnYXJtaW4uY29tPgorLS0tCisgbUROU1Bvc2l4L21ETlNQb3NpeC5jIHwgNjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21ETlNQb3NpeC9tRE5TUG9zaXguYyBiL21ETlNQb3NpeC9tRE5TUG9zaXguYworaW5kZXggOGZlMjJiZS4uNjk5ODU1YSAxMDA2NDQKKy0tLSBhL21ETlNQb3NpeC9tRE5TUG9zaXguYworKysrIGIvbUROU1Bvc2l4L21ETlNQb3NpeC5jCitAQCAtNzUsNiArNzUsMTQgQEAgc3RydWN0IElmQ2hhbmdlUmVjCisgfTsKKyB0eXBlZGVmIHN0cnVjdCBJZkNoYW5nZVJlYyBJZkNoYW5nZVJlYzsKKyAKKysvLyBVc2VkIHRvIGJ1aWxkIGEgbGlzdCBvZiBuZXR3b3JrIGludGVyZmFjZSBpbmRpY2VzCisrc3RydWN0IE5ldHdvcmtJbnRlcmZhY2VJbmRleAorK3sKKysgICAgaW50IGlmX2luZGV4OworKyAgICBzdHJ1Y3QgTmV0d29ya0ludGVyZmFjZUluZGV4ICpOZXh0OworK307CisrdHlwZWRlZiBzdHJ1Y3QgTmV0d29ya0ludGVyZmFjZUluZGV4IE5ldHdvcmtJbnRlcmZhY2VJbmRleDsKKysKKyAvLyBOb3RlIHRoYXQgc3RhdGljIGRhdGEgaXMgaW5pdGlhbGl6ZWQgdG8gemVybyBpbiAobW9kZXJuKSBDLgorIHN0YXRpYyBmZF9zZXQgZ0V2ZW50RkRzOworIHN0YXRpYyBpbnQgZ01heEZEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxhcmdlc3QgZmQgaW4gZ0V2ZW50RkRzCitAQCAtMTA3MSw2ICsxMDc5LDMyIEBAIG1ETlNsb2NhbCBtU3RhdHVzIE9wZW5JZk5vdGlmeVNvY2tldChpbnQgKnBGRCkKKyAgICAgcmV0dXJuIGVycjsKKyB9CisgCisrbUROU2xvY2FsIG1ETlNCb29sIExpc3RDb250YWluc0ludGVyZmFjZUluZGV4KEdlbkxpbmtlZExpc3QgKmxpc3QsIGludCBpZl9pbmRleCkKKyt7CisrICAgIE5ldHdvcmtJbnRlcmZhY2VJbmRleCAqaXRlbTsKKysKKysgICAgZm9yIChpdGVtID0gKE5ldHdvcmtJbnRlcmZhY2VJbmRleCopbGlzdC0+SGVhZDsgaXRlbSAhPSBOVUxMOyBpdGVtID0gaXRlbS0+TmV4dCkKKysgICAgeworKyAgICAgICAgaWYgKGlmX2luZGV4ID09IGl0ZW0tPmlmX2luZGV4KSByZXR1cm4gbUROU3RydWU7CisrICAgIH0KKysKKysgICAgcmV0dXJuIG1ETlNmYWxzZTsKKyt9CisrCisrbUROU2xvY2FsIHZvaWQgQWRkSW50ZXJmYWNlSW5kZXhUb0xpc3QoR2VuTGlua2VkTGlzdCAqbGlzdCwgaW50IGlmX2luZGV4KQorK3sKKysgICAgTmV0d29ya0ludGVyZmFjZUluZGV4ICppdGVtOworKworKyAgICBpZiAoTGlzdENvbnRhaW5zSW50ZXJmYWNlSW5kZXgobGlzdCwgaWZfaW5kZXgpKSByZXR1cm47CisrCisrICAgIGl0ZW0gPSBtYWxsb2Moc2l6ZW9mICppdGVtKTsKKysgICAgaWYgKGl0ZW0gPT0gTlVMTCkgcmV0dXJuOworKworKyAgICBpdGVtLT5pZl9pbmRleCA9IGlmX2luZGV4OworKyAgICBpdGVtLT5OZXh0ID0gTlVMTDsKKysgICAgQWRkVG9UYWlsKGxpc3QsIGl0ZW0pOworK30KKysKKyAjaWYgTUROU19ERUJVR01TR1MKKyBtRE5TbG9jYWwgdm9pZCAgICAgIFByaW50TmV0TGlua01zZyhjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKnBOTE1zZykKKyB7CitAQCAtMTA5OCwxNCArMTEzMiwxMyBAQCBtRE5TbG9jYWwgdm9pZCAgICAgIFByaW50TmV0TGlua01zZyhjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKnBOTE1zZykKKyB9CisgI2VuZGlmCisgCistbUROU2xvY2FsIG1ETlN1MzIgICAgICAgUHJvY2Vzc1JvdXRpbmdOb3RpZmljYXRpb24oaW50IHNkKQorK21ETlNsb2NhbCB2b2lkICAgICAgICAgIFByb2Nlc3NSb3V0aW5nTm90aWZpY2F0aW9uKGludCBzZCwgR2VuTGlua2VkTGlzdCAqY2hhbmdlZEludGVyZmFjZXMpCisgLy8gUmVhZCB0aHJvdWdoIHRoZSBtZXNzYWdlcyBvbiBzZCBhbmQgaWYgYW55IGluZGljYXRlIHRoYXQgYW55IGludGVyZmFjZSByZWNvcmRzIHNob3VsZAorIC8vIGJlIHRvcm4gZG93biBhbmQgcmVidWlsdCwgcmV0dXJuIGFmZmVjdGVkIGluZGljZXMgYXMgYSBiaXRtYXNrLiBPdGhlcndpc2UgcmV0dXJuIDAuCisgeworICAgICBzc2l6ZV90IHJlYWRDb3VudDsKKyAgICAgY2hhciBidWZmWzQwOTZdOworICAgICBzdHJ1Y3Qgbmxtc2doZHIgICAgICAgICAqcE5MTXNnID0gKHN0cnVjdCBubG1zZ2hkciopIGJ1ZmY7CistICAgIG1ETlN1MzIgcmVzdWx0ID0gMDsKKyAKKyAgICAgLy8gVGhlIHN0cnVjdHVyZSBoZXJlIGlzIG1vcmUgY29tcGxleCB0aGFuIGl0IHJlYWxseSBvdWdodCB0byBiZSBiZWNhdXNlLAorICAgICAvLyB1bmZvcnR1bmF0ZWx5LCB0aGVyZSdzIG5vIGdvb2Qgd2F5IHRvIHNpemUgYSBidWZmZXIgaW4gYWR2YW5jZSBsYXJnZQorQEAgLTExNDEsOSArMTE3NCw5IEBAIG1ETlNsb2NhbCBtRE5TdTMyICAgICAgIFByb2Nlc3NSb3V0aW5nTm90aWZpY2F0aW9uKGludCBzZCkKKyAKKyAgICAgICAgIC8vIFByb2Nlc3MgdGhlIE5ldExpbmsgbWVzc2FnZQorICAgICAgICAgaWYgKHBOTE1zZy0+bmxtc2dfdHlwZSA9PSBSVE1fR0VUTElOSyB8fCBwTkxNc2ctPm5sbXNnX3R5cGUgPT0gUlRNX05FV0xJTkspCistICAgICAgICAgICAgcmVzdWx0IHw9IDEgPDwgKChzdHJ1Y3QgaWZpbmZvbXNnKikgTkxNU0dfREFUQShwTkxNc2cpKS0+aWZpX2luZGV4OworKyAgICAgICAgICAgIEFkZEludGVyZmFjZUluZGV4VG9MaXN0KGNoYW5nZWRJbnRlcmZhY2VzLCAoKHN0cnVjdCBpZmluZm9tc2cqKSBOTE1TR19EQVRBKHBOTE1zZykpLT5pZmlfaW5kZXgpOworICAgICAgICAgZWxzZSBpZiAocE5MTXNnLT5ubG1zZ190eXBlID09IFJUTV9ERUxBRERSIHx8IHBOTE1zZy0+bmxtc2dfdHlwZSA9PSBSVE1fTkVXQUREUikKKy0gICAgICAgICAgICByZXN1bHQgfD0gMSA8PCAoKHN0cnVjdCBpZmFkZHJtc2cqKSBOTE1TR19EQVRBKHBOTE1zZykpLT5pZmFfaW5kZXg7CisrICAgICAgICAgICAgQWRkSW50ZXJmYWNlSW5kZXhUb0xpc3QoY2hhbmdlZEludGVyZmFjZXMsICgoc3RydWN0IGlmYWRkcm1zZyopIE5MTVNHX0RBVEEocE5MTXNnKSktPmlmYV9pbmRleCk7CisgCisgICAgICAgICAvLyBBZHZhbmNlIHBOTE1zZyB0byB0aGUgbmV4dCBtZXNzYWdlIGluIHRoZSBidWZmZXIKKyAgICAgICAgIGlmICgocE5MTXNnLT5ubG1zZ19mbGFncyAmIE5MTV9GX01VTFRJKSAhPSAwICYmIHBOTE1zZy0+bmxtc2dfdHlwZSAhPSBOTE1TR19ET05FKQorQEAgLTExNTQsOCArMTE4Nyw2IEBAIG1ETlNsb2NhbCBtRE5TdTMyICAgICAgIFByb2Nlc3NSb3V0aW5nTm90aWZpY2F0aW9uKGludCBzZCkKKyAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICBicmVhazsgIC8vIGFsbCBkb25lIQorICAgICB9CistCistICAgIHJldHVybiByZXN1bHQ7CisgfQorIAorICNlbHNlIC8vIFVTRVNfTkVUTElOSworQEAgLTExODcsMTQgKzEyMTgsMTMgQEAgbUROU2xvY2FsIHZvaWQgICAgICBQcmludFJvdXRpbmdTb2NrZXRNc2coY29uc3Qgc3RydWN0IGlmYV9tc2doZHIgKnBSU01zZykKKyB9CisgI2VuZGlmCisgCistbUROU2xvY2FsIG1ETlN1MzIgICAgICAgUHJvY2Vzc1JvdXRpbmdOb3RpZmljYXRpb24oaW50IHNkKQorK21ETlNsb2NhbCB2b2lkICAgICAgICAgIFByb2Nlc3NSb3V0aW5nTm90aWZpY2F0aW9uKGludCBzZCwgR2VuTGlua2VkTGlzdCAqY2hhbmdlZEludGVyZmFjZXMpCisgLy8gUmVhZCB0aHJvdWdoIHRoZSBtZXNzYWdlcyBvbiBzZCBhbmQgaWYgYW55IGluZGljYXRlIHRoYXQgYW55IGludGVyZmFjZSByZWNvcmRzIHNob3VsZAorIC8vIGJlIHRvcm4gZG93biBhbmQgcmVidWlsdCwgcmV0dXJuIGFmZmVjdGVkIGluZGljZXMgYXMgYSBiaXRtYXNrLiBPdGhlcndpc2UgcmV0dXJuIDAuCisgeworICAgICBzc2l6ZV90IHJlYWRDb3VudDsKKyAgICAgY2hhciBidWZmWzQwOTZdOworICAgICBzdHJ1Y3QgaWZhX21zZ2hkciAgICAgICAqcFJTTXNnID0gKHN0cnVjdCBpZmFfbXNnaGRyKikgYnVmZjsKKy0gICAgbUROU3UzMiByZXN1bHQgPSAwOworIAorICAgICByZWFkQ291bnQgPSByZWFkKHNkLCBidWZmLCBzaXplb2YgYnVmZik7CisgICAgIGlmIChyZWFkQ291bnQgPCAoc3NpemVfdCkgc2l6ZW9mKHN0cnVjdCBpZmFfbXNnaGRyKSkKK0BAIC0xMjA5LDEyICsxMjM5LDEwIEBAIG1ETlNsb2NhbCBtRE5TdTMyICAgICAgIFByb2Nlc3NSb3V0aW5nTm90aWZpY2F0aW9uKGludCBzZCkKKyAgICAgICAgIHBSU01zZy0+aWZhbV90eXBlID09IFJUTV9JRklORk8pCisgICAgIHsKKyAgICAgICAgIGlmIChwUlNNc2ctPmlmYW1fdHlwZSA9PSBSVE1fSUZJTkZPKQorLSAgICAgICAgICAgIHJlc3VsdCB8PSAxIDw8ICgoc3RydWN0IGlmX21zZ2hkciopIHBSU01zZyktPmlmbV9pbmRleDsKKysgICAgICAgICAgICBBZGRJbnRlcmZhY2VJbmRleFRvTGlzdChjaGFuZ2VkSW50ZXJmYWNlcywgKChzdHJ1Y3QgaWZfbXNnaGRyKikgcFJTTXNnKS0+aWZtX2luZGV4KTsKKyAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICByZXN1bHQgfD0gMSA8PCBwUlNNc2ctPmlmYW1faW5kZXg7CisrICAgICAgICAgICAgQWRkSW50ZXJmYWNlSW5kZXhUb0xpc3QoY2hhbmdlZEludGVyZmFjZXMsIHBSU01zZy0+aWZhbV9pbmRleCk7CisgICAgIH0KKy0KKy0gICAgcmV0dXJuIHJlc3VsdDsKKyB9CisgCisgI2VuZGlmIC8vIFVTRVNfTkVUTElOSworQEAgLTEyMjQsNyArMTI1Miw4IEBAIG1ETlNsb2NhbCB2b2lkIEludGVyZmFjZUNoYW5nZUNhbGxiYWNrKGludCBmZCwgc2hvcnQgZmlsdGVyLCB2b2lkICpjb250ZXh0KQorIHsKKyAgICAgSWZDaGFuZ2VSZWMgICAgICpwQ2hnUmVjID0gKElmQ2hhbmdlUmVjKikgY29udGV4dDsKKyAgICAgZmRfc2V0IHJlYWRGRHM7CistICAgIG1ETlN1MzIgY2hhbmdlZEludGVyZmFjZXMgPSAwOworKyAgICBHZW5MaW5rZWRMaXN0IGNoYW5nZWRJbnRlcmZhY2VzOworKyAgICBOZXR3b3JrSW50ZXJmYWNlSW5kZXggKmNoYW5nZWRJbnRlcmZhY2U7CisgICAgIHN0cnVjdCB0aW1ldmFsIHplcm9UaW1lb3V0ID0geyAwLCAwIH07CisgCisgICAgICh2b2lkKWZkOyAvLyBVbnVzZWQKK0BAIC0xMjMzLDE3ICsxMjYyLDI1IEBAIG1ETlNsb2NhbCB2b2lkIEludGVyZmFjZUNoYW5nZUNhbGxiYWNrKGludCBmZCwgc2hvcnQgZmlsdGVyLCB2b2lkICpjb250ZXh0KQorICAgICBGRF9aRVJPKCZyZWFkRkRzKTsKKyAgICAgRkRfU0VUKHBDaGdSZWMtPk5vdGlmeVNELCAmcmVhZEZEcyk7CisgCisrICAgIEluaXRMaW5rZWRMaXN0KCZjaGFuZ2VkSW50ZXJmYWNlcywgb2Zmc2V0b2YoTmV0d29ya0ludGVyZmFjZUluZGV4LCBOZXh0KSk7CisrCisgICAgIGRvCisgICAgIHsKKy0gICAgICAgIGNoYW5nZWRJbnRlcmZhY2VzIHw9IFByb2Nlc3NSb3V0aW5nTm90aWZpY2F0aW9uKHBDaGdSZWMtPk5vdGlmeVNEKTsKKysgICAgICAgIFByb2Nlc3NSb3V0aW5nTm90aWZpY2F0aW9uKHBDaGdSZWMtPk5vdGlmeVNELCAmY2hhbmdlZEludGVyZmFjZXMpOworICAgICB9CisgICAgIHdoaWxlICgwIDwgc2VsZWN0KHBDaGdSZWMtPk5vdGlmeVNEICsgMSwgJnJlYWRGRHMsIChmZF9zZXQqKSBOVUxMLCAoZmRfc2V0KikgTlVMTCwgJnplcm9UaW1lb3V0KSk7CisgCisgICAgIC8vIEN1cnJlbnRseSB3ZSByZWJ1aWxkIHRoZSBlbnRpcmUgaW50ZXJmYWNlIGxpc3Qgd2hlbmV2ZXIgYW55IGludGVyZmFjZSBjaGFuZ2UgaXMKKyAgICAgLy8gZGV0ZWN0ZWQuIElmIHRoaXMgZXZlciBwcm92ZXMgdG8gYmUgYSBwZXJmb3JtYW5jZSBpc3N1ZSBpbiBhIG11bHRpLWhvbWVkCisgICAgIC8vIGNvbmZpZ3VyYXRpb24sIG1vcmUgY2FyZSBzaG91bGQgYmUgcGFpZCB0byBjaGFuZ2VkSW50ZXJmYWNlcy4KKy0gICAgaWYgKGNoYW5nZWRJbnRlcmZhY2VzKQorKyAgICBpZiAoY2hhbmdlZEludGVyZmFjZXMuSGVhZCAhPSBOVUxMKQorICAgICAgICAgbUROU1BsYXRmb3JtUG9zaXhSZWZyZXNoSW50ZXJmYWNlTGlzdChwQ2hnUmVjLT5tRE5TKTsKKysKKysgICAgd2hpbGUgKChjaGFuZ2VkSW50ZXJmYWNlID0gKE5ldHdvcmtJbnRlcmZhY2VJbmRleCopY2hhbmdlZEludGVyZmFjZXMuSGVhZCkgIT0gTlVMTCkKKysgICAgeworKyAgICAgICAgUmVtb3ZlRnJvbUxpc3QoJmNoYW5nZWRJbnRlcmZhY2VzLCBjaGFuZ2VkSW50ZXJmYWNlKTsKKysgICAgICAgIGZyZWUoY2hhbmdlZEludGVyZmFjZSk7CisrICAgIH0KKyB9CisgCisgLy8gUmVnaXN0ZXIgd2l0aCBlaXRoZXIgYSBSb3V0aW5nIFNvY2tldCBvciBSdE5ldExpbmsgdG8gbGlzdGVuIGZvciBpbnRlcmZhY2UgY2hhbmdlcy4KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDUtSGFuZGxlLW5vaXN5LW5ldGxpbmstc29ja2V0cy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDUtSGFuZGxlLW5vaXN5LW5ldGxpbmstc29ja2V0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmIxNzFlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL21kbnMvZmlsZXMvMDAwNS1IYW5kbGUtbm9pc3ktbmV0bGluay1zb2NrZXRzLnBhdGNoCkBAIC0wLDAgKzEsMjEyIEBACitGcm9tIDkyMDI1Y2FiODY2MTlmNTQ4YmYzZWI4MTZhMTgwNGVmNDA1MDdjYTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOYXRlIEthcnN0ZW5zIDxuYXRlLmthcnN0ZW5zQGdhcm1pbi5jb20+CitEYXRlOiBNb24sIDI0IEp1bCAyMDE3IDA5OjM4OjU1IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMDUvMTFdIEhhbmRsZSBub2lzeSBuZXRsaW5rIHNvY2tldHMKKworVGhlIFBPU0lYIGltcGxlbWVudGF0aW9uIGN1cnJlbnRseSBjbGVhcnMgYWxsIG5ldHdvcmsgaW50ZXJmYWNlcword2hlbiBuZXRsaW5rIGluZGljYXRlcyB0aGF0IHRoZXJlIGhhcyBiZWVuIGEgY2hhbmdlLiBUaGlzIGNhdXNlcwordGhlIGZvbGxvd2luZyBwcm9ibGVtczoKKworICAxKSBBcHBsaWNhdGlvbnMgYXJlIGluZm9ybWVkIHRoYXQgYWxsIG9mIHRoZSBzZXJ2aWNlcyB0aGV5IGFyZQorICAgICB0cmFja2luZyBoYXZlIGJlZW4gcmVtb3ZlZC4KKyAgMikgSW5jcmVhc2VzIG5ldHdvcmsgbG9hZCBiZWNhdXNlIHRoZSBjbGllbnQgbXVzdCByZS1xdWVyeSBmb3IKKyAgICAgYWxsIHJlY29yZHMgaXQgaXMgaW50ZXJlc3RlZCBpbi4KKworVGhpcyBjaGFuZ2VzIG5ldGxpbmsgbm90aWZpY2F0aW9uIGhhbmRsaW5nIGJ5OgorCisgIDEpIEFsd2F5cyBjb21wYXJpbmcgd2l0aCB0aGUgbGF0ZXN0IGludGVyZmFjZSBsaXN0IHJldHVybmVkCisgICAgIGJ5IHRoZSBPUy4KKyAgMikgQ29uZmlybWluZyB0aGF0IHRoZSBpbnRlcmZhY2UgaGFzIGJlZW4gY2hhbmdlZCBpbiBhIHdheQorICAgICB0aGF0IHdlIGNhcmUgYWJvdXQuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtkdHNAYXBwbGUuY29tXQorCitTaWduZWQtb2ZmLWJ5OiBOYXRlIEthcnN0ZW5zIDxuYXRlLmthcnN0ZW5zQGdhcm1pbi5jb20+CistLS0KKyBtRE5TUG9zaXgvbUROU1Bvc2l4LmMgfCAxNDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEzMyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21ETlNQb3NpeC9tRE5TUG9zaXguYyBiL21ETlNQb3NpeC9tRE5TUG9zaXguYworaW5kZXggNjk5ODU1YS4uNTlhOGI4YyAxMDA2NDQKKy0tLSBhL21ETlNQb3NpeC9tRE5TUG9zaXguYworKysrIGIvbUROU1Bvc2l4L21ETlNQb3NpeC5jCitAQCAtMTI0NywxNCArMTI0NywzOCBAQCBtRE5TbG9jYWwgdm9pZCAgICAgICAgICBQcm9jZXNzUm91dGluZ05vdGlmaWNhdGlvbihpbnQgc2QsIEdlbkxpbmtlZExpc3QgKmNoYW5nZQorIAorICNlbmRpZiAvLyBVU0VTX05FVExJTksKKyAKKysvLyBUZXN0IHdoZXRoZXIgdGhlIGdpdmVuIFBvc2l4TmV0d29ya0ludGVyZmFjZSBtYXRjaGVzIHRoZSBnaXZlbiBzdHJ1Y3QgaWZpX2luZm8KKyttRE5TbG9jYWwgbUROU0Jvb2wgSW50ZXJmYWNlc01hdGNoKFBvc2l4TmV0d29ya0ludGVyZmFjZSAqaW50Ziwgc3RydWN0IGlmaV9pbmZvICppZmkpCisreworKyAgICBtRE5TQm9vbCBtYXRjaCA9IG1ETlNmYWxzZTsKKysgICAgbUROU0FkZHIgaXAsIG1hc2s7CisrCisrICAgIGlmKChpbnRmLT5pbmRleCA9PSBpZmktPmlmaV9pbmRleCkgJiYKKysgICAgICAgKGludGYtPnNhX2ZhbWlseSA9PSBpZmktPmlmaV9hZGRyLT5zYV9mYW1pbHkpICYmCisrICAgICAgIChzdHJjbXAoaW50Zi0+Y29yZUludGYuaWZuYW1lLCBpZmktPmlmaV9uYW1lKSA9PSAwKSkKKysgICAgICAgIHsKKysgICAgICAgIFNvY2tBZGRyVG9tRE5TQWRkcihpZmktPmlmaV9hZGRyLCAgICAmaXAsICAgTlVMTCk7CisrICAgICAgICBTb2NrQWRkclRvbUROU0FkZHIoaWZpLT5pZmlfbmV0bWFzaywgJm1hc2ssIE5VTEwpOworKworKyAgICAgICAgbWF0Y2ggPSBtRE5TU2FtZUFkZHJlc3MoJmludGYtPmNvcmVJbnRmLmlwLCAmaXApICYmCisrICAgICAgICAgICAgICAgIG1ETlNTYW1lQWRkcmVzcygmaW50Zi0+Y29yZUludGYubWFzaywgJm1hc2spOworKyAgICAgICAgfQorKworKyAgICByZXR1cm4gbWF0Y2g7CisrfQorKworIC8vIENhbGxlZCB3aGVuIGRhdGEgYXBwZWFycyBvbiBpbnRlcmZhY2UgY2hhbmdlIG5vdGlmaWNhdGlvbiBzb2NrZXQKKyBtRE5TbG9jYWwgdm9pZCBJbnRlcmZhY2VDaGFuZ2VDYWxsYmFjayhpbnQgZmQsIHNob3J0IGZpbHRlciwgdm9pZCAqY29udGV4dCkKKyB7CisgICAgIElmQ2hhbmdlUmVjICAgICAqcENoZ1JlYyA9IChJZkNoYW5nZVJlYyopIGNvbnRleHQ7CisrICAgIG1ETlMgICAgICAgICAgICAqbSA9IHBDaGdSZWMtPm1ETlM7CisgICAgIGZkX3NldCByZWFkRkRzOworICAgICBHZW5MaW5rZWRMaXN0IGNoYW5nZWRJbnRlcmZhY2VzOworICAgICBOZXR3b3JrSW50ZXJmYWNlSW5kZXggKmNoYW5nZWRJbnRlcmZhY2U7CisgICAgIHN0cnVjdCB0aW1ldmFsIHplcm9UaW1lb3V0ID0geyAwLCAwIH07CisrICAgIHN0cnVjdCBpZmlfaW5mbyAqaWZpX2xpc3QsICoqaWZpLCAqaWZpX2ZyZWUsICppZmlfbG9vcDQgPSBOVUxMOworKyAgICBQb3NpeE5ldHdvcmtJbnRlcmZhY2UgKmludGYsICppbnRmTmV4dDsKKysgICAgbUROU0Jvb2wgZm91bmQsIGZvdW5kYXY0OworIAorICAgICAodm9pZClmZDsgLy8gVW51c2VkCisgICAgICh2b2lkKWZpbHRlcjsgLy8gVW51c2VkCitAQCAtMTI3MCwxMiArMTI5NCwxMTUgQEAgbUROU2xvY2FsIHZvaWQgSW50ZXJmYWNlQ2hhbmdlQ2FsbGJhY2soaW50IGZkLCBzaG9ydCBmaWx0ZXIsIHZvaWQgKmNvbnRleHQpCisgICAgIH0KKyAgICAgd2hpbGUgKDAgPCBzZWxlY3QocENoZ1JlYy0+Tm90aWZ5U0QgKyAxLCAmcmVhZEZEcywgKGZkX3NldCopIE5VTEwsIChmZF9zZXQqKSBOVUxMLCAmemVyb1RpbWVvdXQpKTsKKyAKKy0gICAgLy8gQ3VycmVudGx5IHdlIHJlYnVpbGQgdGhlIGVudGlyZSBpbnRlcmZhY2UgbGlzdCB3aGVuZXZlciBhbnkgaW50ZXJmYWNlIGNoYW5nZSBpcworLSAgICAvLyBkZXRlY3RlZC4gSWYgdGhpcyBldmVyIHByb3ZlcyB0byBiZSBhIHBlcmZvcm1hbmNlIGlzc3VlIGluIGEgbXVsdGktaG9tZWQKKy0gICAgLy8gY29uZmlndXJhdGlvbiwgbW9yZSBjYXJlIHNob3VsZCBiZSBwYWlkIHRvIGNoYW5nZWRJbnRlcmZhY2VzLgorLSAgICBpZiAoY2hhbmdlZEludGVyZmFjZXMuSGVhZCAhPSBOVUxMKQorLSAgICAgICAgbUROU1BsYXRmb3JtUG9zaXhSZWZyZXNoSW50ZXJmYWNlTGlzdChwQ2hnUmVjLT5tRE5TKTsKKysgICAgQ2xlYW5SZWNlbnRJbnRlcmZhY2VzKCk7CisrCisrICAgIGlmIChjaGFuZ2VkSW50ZXJmYWNlcy5IZWFkID09IE5VTEwpIGdvdG8gY2xlYW51cDsKKysKKysgICAgaWZpX2xpc3QgPSBnZXRfaWZpX2luZm8oQUZfSU5FVCwgbUROU3RydWUpOworKyAgICBpZiAoaWZpX2xpc3QgPT0gTlVMTCkgZ290byBjbGVhbnVwOworKworKyNpZiBIQVZFX0lQVjYKKysgICAgLyogTGluayB0aGUgSVB2NiBsaXN0IHRvIHRoZSBlbmQgb2YgdGhlIElQdjQgbGlzdCAqLworKyAgICBpZmkgPSAmaWZpX2xpc3Q7CisrICAgIHdoaWxlICgqaWZpICE9IE5VTEwpIGlmaSA9ICYoKmlmaSktPmlmaV9uZXh0OworKyAgICAqaWZpID0gZ2V0X2lmaV9pbmZvKEFGX0lORVQ2LCBtRE5TdHJ1ZSk7CisrI2VuZGlmCisrCisrICAgIGZvciAoaW50ZiA9IChQb3NpeE5ldHdvcmtJbnRlcmZhY2UqKShtLT5Ib3N0SW50ZXJmYWNlcyk7IGludGYgIT0gTlVMTDsgaW50ZiA9IGludGZOZXh0KQorKyAgICB7CisrICAgICAgICBpbnRmTmV4dCA9IChQb3NpeE5ldHdvcmtJbnRlcmZhY2UqKShpbnRmLT5jb3JlSW50Zi5uZXh0KTsKKysKKysgICAgICAgIC8vIExvb3BiYWNrIGludGVyZmFjZShzKSBhcmUgaGFuZGxlZCBsYXRlcgorKyAgICAgICAgaWYgKGludGYtPmNvcmVJbnRmLkxvb3BiYWNrKSBjb250aW51ZTsKKysKKysgICAgICAgIGZvdW5kID0gbUROU2ZhbHNlOworKyAgICAgICAgZm9yIChpZmkgPSAmaWZpX2xpc3Q7ICppZmkgIT0gTlVMTDsgaWZpID0gJigqaWZpKS0+aWZpX25leHQpCisrICAgICAgICB7CisrICAgICAgICAgICAgaWYgKEludGVyZmFjZXNNYXRjaChpbnRmLCAqaWZpKSkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGZvdW5kID0gbUROU3RydWU7CisrCisrICAgICAgICAgICAgICAgIC8vIFJlbW92ZXMgdW5jaGFuZ2VkIGZyb20gaWZpX2xpc3QKKysgICAgICAgICAgICAgICAgaWZpX2ZyZWUgPSAqaWZpOworKyAgICAgICAgICAgICAgICAqaWZpID0gKCppZmkpLT5pZmlfbmV4dDsKKysgICAgICAgICAgICAgICAgaWZpX2ZyZWUtPmlmaV9uZXh0ID0gTlVMTDsKKysgICAgICAgICAgICAgICAgZnJlZV9pZmlfaW5mbyhpZmlfZnJlZSk7CisrCisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysKKysgICAgICAgIC8vIFJlbW92ZXMgY2hhbmdlZCBhbmQgb2xkIGludGVyZmFjZXMgZnJvbSBtLT5Ib3N0SW50ZXJmYWNlcworKyAgICAgICAgaWYgKCFmb3VuZCkgVGVhckRvd25JbnRlcmZhY2UobSwgaW50Zik7CisrICAgIH0KKysKKysgICAgLy8gQWRkIG5ldyBhbmQgY2hhbmdlZCBpbnRlcmZhY2VzIGluIGlmaV9saXN0CisrICAgIC8vIFNhdmUgb2ZmIGxvb3BiYWNrIGludGVyZmFjZSBpbiBjYXNlIGl0IGlzIG5lZWRlZCBsYXRlcgorKyAgICBmb3IgKGlmaSA9ICZpZmlfbGlzdDsgKmlmaSAhPSBOVUxMOyBpZmkgPSAmKCppZmkpLT5pZmlfbmV4dCkKKysgICAgeworKyAgICAgICAgaWYgKChpZmlfbG9vcDQgPT0gTlVMTCkgJiYKKysgICAgICAgICAgICAoKCppZmkpLT5pZmlfYWRkci0+c2FfZmFtaWx5ID09IEFGX0lORVQpICYmCisrICAgICAgICAgICAgKCgqaWZpKS0+aWZpX2ZsYWdzICYgSUZGX1VQKSAmJgorKyAgICAgICAgICAgICgoKmlmaSktPmlmaV9mbGFncyAmIElGRl9MT09QQkFDSykpCisrICAgICAgICB7CisrICAgICAgICAgICAgaWZpX2xvb3A0ID0gKmlmaTsKKysgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmICggICAgICgoKCppZmkpLT5pZmlfYWRkci0+c2FfZmFtaWx5ID09IEFGX0lORVQpCisrI2lmIEhBVkVfSVBWNgorKyAgICAgICAgICAgICAgICAgIHx8ICgoKmlmaSktPmlmaV9hZGRyLT5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpCisrI2VuZGlmCisrICAgICAgICAgICAgICAgICAgKSAmJiAoKCppZmkpLT5pZmlfZmxhZ3MgJiBJRkZfVVApCisrICAgICAgICAgICAgICAgICAgICAmJiAhKCgqaWZpKS0+aWZpX2ZsYWdzICYgSUZGX1BPSU5UT1BPSU5UKQorKyAgICAgICAgICAgICAgICAgICAgJiYgISgoKmlmaSktPmlmaV9mbGFncyAmIElGRl9MT09QQkFDSykpCisrICAgICAgICB7CisrICAgICAgICAgICAgU2V0dXBPbmVJbnRlcmZhY2UobSwgKmlmaSk7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBub24tbG9vcGJhY2sgSVB2NCBpbnRlcmZhY2UuIFRoaXMgaXMgdG8gd29yayBhcm91bmQgaXNzdWVzCisrICAgIC8vIHdpdGggbXVsdGljYXN0IGxvb3BiYWNrIG9uIElQdjYgaW50ZXJmYWNlcyAtLSBzZWUgY29ycmVzcG9uZGluZyBsb2dpYyBpbiBTZXR1cEludGVyZmFjZUxpc3QoKS4KKysgICAgZm91bmRhdjQgPSBtRE5TZmFsc2U7CisrICAgIGZvciAoaW50ZiA9IChQb3NpeE5ldHdvcmtJbnRlcmZhY2UqKShtLT5Ib3N0SW50ZXJmYWNlcyk7IGludGYgIT0gTlVMTDsgaW50ZiA9IChQb3NpeE5ldHdvcmtJbnRlcmZhY2UqKShpbnRmLT5jb3JlSW50Zi5uZXh0KSkKKysgICAgeworKyAgICAgICAgaWYgKGludGYtPnNhX2ZhbWlseSA9PSBBRl9JTkVUICYmICFpbnRmLT5jb3JlSW50Zi5Mb29wYmFjaykKKysgICAgICAgIHsKKysgICAgICAgICAgICBmb3VuZGF2NCA9IG1ETlN0cnVlOworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIGlmIChmb3VuZGF2NCkKKysgICAgeworKyAgICAgICAgZm9yIChpbnRmID0gKFBvc2l4TmV0d29ya0ludGVyZmFjZSopKG0tPkhvc3RJbnRlcmZhY2VzKTsgaW50ZiAhPSBOVUxMOyBpbnRmID0gaW50Zk5leHQpCisrICAgICAgICB7CisrICAgICAgICAgICAgaW50Zk5leHQgPSAoUG9zaXhOZXR3b3JrSW50ZXJmYWNlKikoaW50Zi0+Y29yZUludGYubmV4dCk7CisrICAgICAgICAgICAgaWYgKGludGYtPmNvcmVJbnRmLkxvb3BiYWNrKSBUZWFyRG93bkludGVyZmFjZShtLCBpbnRmKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgICBlbHNlCisrICAgIHsKKysgICAgICAgIGZvdW5kID0gbUROU2ZhbHNlOworKworKyAgICAgICAgZm9yIChpbnRmID0gKFBvc2l4TmV0d29ya0ludGVyZmFjZSopKG0tPkhvc3RJbnRlcmZhY2VzKTsgaW50ZiAhPSBOVUxMOyBpbnRmID0gKFBvc2l4TmV0d29ya0ludGVyZmFjZSopKGludGYtPmNvcmVJbnRmLm5leHQpKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGlmIChpbnRmLT5jb3JlSW50Zi5Mb29wYmFjaykKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGZvdW5kID0gbUROU3RydWU7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysKKysgICAgICAgIGlmICghZm91bmQgJiYgKGlmaV9sb29wNCAhPSBOVUxMKSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBTZXR1cE9uZUludGVyZmFjZShtLCBpZmlfbG9vcDQpOworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIGlmIChpZmlfbGlzdCAhPSBOVUxMKSBmcmVlX2lmaV9pbmZvKGlmaV9saXN0KTsKKyAKKytjbGVhbnVwOgorICAgICB3aGlsZSAoKGNoYW5nZWRJbnRlcmZhY2UgPSAoTmV0d29ya0ludGVyZmFjZUluZGV4KiljaGFuZ2VkSW50ZXJmYWNlcy5IZWFkKSAhPSBOVUxMKQorICAgICB7CisgICAgICAgICBSZW1vdmVGcm9tTGlzdCgmY2hhbmdlZEludGVyZmFjZXMsIGNoYW5nZWRJbnRlcmZhY2UpOworQEAgLTE0MDAsMTUgKzE1MjcsMTEgQEAgbUROU2V4cG9ydCB2b2lkIG1ETlNQbGF0Zm9ybUNsb3NlKG1ETlMgKmNvbnN0IG0pCisgI2VuZGlmCisgfQorIAorLS8vIFRoaXMgaXMgdXNlZCBpbnRlcm5hbGx5IGJ5IEludGVyZmFjZUNoYW5nZUNhbGxiYWNrLgorLS8vIEl0J3MgYWxzbyBleHBvcnRlZCBzbyB0aGF0IHRoZSBTdGFuZGFsb25lIFJlc3BvbmRlciAobUROU1Jlc3BvbmRlclBvc2l4KQorKy8vIFRoaXMgaXMgZXhwb3J0ZWQgc28gdGhhdCB0aGUgU3RhbmRhbG9uZSBSZXNwb25kZXIgKG1ETlNSZXNwb25kZXJQb3NpeCkKKyAvLyBjYW4gY2FsbCBpdCBpbiByZXNwb25zZSB0byBhIFNJR0hVUCAobWFpbmx5IGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMpLgorIG1ETlNleHBvcnQgbVN0YXR1cyBtRE5TUGxhdGZvcm1Qb3NpeFJlZnJlc2hJbnRlcmZhY2VMaXN0KG1ETlMgKmNvbnN0IG0pCisgeworICAgICBpbnQgZXJyOworLSAgICAvLyBUaGlzIGlzIGEgcHJldHR5IGhlYXZ5d2VpZ2h0IHdheSB0byBwcm9jZXNzIGludGVyZmFjZSBjaGFuZ2VzIC0tCistICAgIC8vIGRlc3Ryb3lpbmcgdGhlIGVudGlyZSBpbnRlcmZhY2UgbGlzdCBhbmQgdGhlbiBtYWtpbmcgZnJlc2ggb25lIGZyb20gc2NyYXRjaC4KKy0gICAgLy8gV2Ugc2hvdWxkIG1ha2UgaXQgbGlrZSB0aGUgT1MgWCB2ZXJzaW9uLCB3aGljaCBsZWF2ZXMgdW5jaGFuZ2VkIGludGVyZmFjZXMgYWxvbmUuCisgICAgIENsZWFySW50ZXJmYWNlTGlzdChtKTsKKyAgICAgZXJyID0gU2V0dXBJbnRlcmZhY2VMaXN0KG0pOworICAgICByZXR1cm4gUG9zaXhFcnJvclRvU3RhdHVzKGVycik7CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDA2LVJlbW92ZS11bm5lZWRlZC1mdW5jdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDYtUmVtb3ZlLXVubmVlZGVkLWZ1bmN0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NjFhNjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDA2LVJlbW92ZS11bm5lZWRlZC1mdW5jdGlvbi5wYXRjaApAQCAtMCwwICsxLDUxIEBACitGcm9tIDE1N2Q2N2YxNTI3Nzc3NTRjMDU5Y2VkNzUxMTM1MjEwMmYyM2ZmYWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOYXRlIEthcnN0ZW5zIDxuYXRlLmthcnN0ZW5zQGdhcm1pbi5jb20+CitEYXRlOiBNb24sIDI0IEp1bCAyMDE3IDA5OjM5OjE4IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMDYvMTFdIFJlbW92ZSB1bm5lZWRlZCBmdW5jdGlvbgorCitSZW1vdmVzIGEgZnVuY3Rpb24gd2Ugbm8gbG9uZ2VyIG5lZWQgYnkgaW50ZWdyYXRpbmcgaXQgaW50byB0aGUgb25seQorZnVuY3Rpb24gdGhhdCBjYWxscyBpdC4gVGhpcyB3YXMgb3JpZ2luYWxseSBzZXBhcmF0ZWQgc28gdGhhdCB3ZSBjb3VsZAorb25seSBwcm9jZXNzIG5ldHdvcmsgaW50ZXJmYWNlcyB0aGF0IG5ldGxpbmsgaW5kaWNhdGVkIGhhZCBiZWVuIGNoYW5nZWQsCit0aGlzIGhhcyBzaW5jZSBiZWVuIGV4dGVuZGVkIHRvIHRlc3QgZm9yIGFsbCBuZXR3b3JrIGludGVmYWNlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2R0c0BhcHBsZS5jb21dCisKK1NpZ25lZC1vZmYtYnk6IE5hdGUgS2Fyc3RlbnMgPG5hdGUua2Fyc3RlbnNAZ2FybWluLmNvbT4KKy0tLQorIG1ETlNQb3NpeC9tRE5TUG9zaXguYyB8IDEzICsrLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21ETlNQb3NpeC9tRE5TUG9zaXguYyBiL21ETlNQb3NpeC9tRE5TUG9zaXguYworaW5kZXggNTlhOGI4Yy4uM2ZjNTQ1MSAxMDA2NDQKKy0tLSBhL21ETlNQb3NpeC9tRE5TUG9zaXguYworKysrIGIvbUROU1Bvc2l4L21ETlNQb3NpeC5jCitAQCAtMTA3OSwyNCArMTA3OSwxNSBAQCBtRE5TbG9jYWwgbVN0YXR1cyBPcGVuSWZOb3RpZnlTb2NrZXQoaW50ICpwRkQpCisgICAgIHJldHVybiBlcnI7CisgfQorIAorLW1ETlNsb2NhbCBtRE5TQm9vbCBMaXN0Q29udGFpbnNJbnRlcmZhY2VJbmRleChHZW5MaW5rZWRMaXN0ICpsaXN0LCBpbnQgaWZfaW5kZXgpCisrbUROU2xvY2FsIHZvaWQgQWRkSW50ZXJmYWNlSW5kZXhUb0xpc3QoR2VuTGlua2VkTGlzdCAqbGlzdCwgaW50IGlmX2luZGV4KQorIHsKKyAgICAgTmV0d29ya0ludGVyZmFjZUluZGV4ICppdGVtOworIAorICAgICBmb3IgKGl0ZW0gPSAoTmV0d29ya0ludGVyZmFjZUluZGV4KilsaXN0LT5IZWFkOyBpdGVtICE9IE5VTEw7IGl0ZW0gPSBpdGVtLT5OZXh0KQorICAgICB7CistICAgICAgICBpZiAoaWZfaW5kZXggPT0gaXRlbS0+aWZfaW5kZXgpIHJldHVybiBtRE5TdHJ1ZTsKKysgICAgICAgIGlmIChpZl9pbmRleCA9PSBpdGVtLT5pZl9pbmRleCkgcmV0dXJuOworICAgICB9CisgCistICAgIHJldHVybiBtRE5TZmFsc2U7CistfQorLQorLW1ETlNsb2NhbCB2b2lkIEFkZEludGVyZmFjZUluZGV4VG9MaXN0KEdlbkxpbmtlZExpc3QgKmxpc3QsIGludCBpZl9pbmRleCkKKy17CistICAgIE5ldHdvcmtJbnRlcmZhY2VJbmRleCAqaXRlbTsKKy0KKy0gICAgaWYgKExpc3RDb250YWluc0ludGVyZmFjZUluZGV4KGxpc3QsIGlmX2luZGV4KSkgcmV0dXJuOworLQorICAgICBpdGVtID0gbWFsbG9jKHNpemVvZiAqaXRlbSk7CisgICAgIGlmIChpdGVtID09IE5VTEwpIHJldHVybjsKKyAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDctSW5kaWNhdGUtbG9vcGJhY2staW50ZXJmYWNlLXRvLW1ETlMtY29yZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDctSW5kaWNhdGUtbG9vcGJhY2staW50ZXJmYWNlLXRvLW1ETlMtY29yZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjIwMWM2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL21kbnMvZmlsZXMvMDAwNy1JbmRpY2F0ZS1sb29wYmFjay1pbnRlcmZhY2UtdG8tbUROUy1jb3JlLnBhdGNoCkBAIC0wLDAgKzEsMTI5IEBACitGcm9tIDA3YTk0MDFkODQ4MDRkN2YwMTgxYWE0ZmIwZjEzYTU0YjJhMWM5YTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOYXRlIEthcnN0ZW5zIDxuYXRlLmthcnN0ZW5zQGdhcm1pbi5jb20+CitEYXRlOiBUdWUsIDEgQXVnIDIwMTcgMTc6MDY6MDEgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAwNy8xMV0gSW5kaWNhdGUgbG9vcGJhY2sgaW50ZXJmYWNlIHRvIG1ETlMgY29yZQorCitUZWxscyB0aGUgbUROUyBjb3JlIGlmIGFuIGludGVyZmFjZSBpcyBhIGxvb3BiYWNrIGludGVyZmFjZSwKK3NpbWlsYXIgdG8gQWRkSW50ZXJmYWNlVG9MaXN0KCkgaW4gdGhlIE1hY09TIGltcGxlbWVudGF0aW9uLgorQWxzbyByZW9yZ2FuaXplcyBTZXR1cE9uZUludGVyZmFjZSgpIHRvIHVzZSBhIGNvbnN0IHN0cnVjdAorcmF0aGVyIHRoYW4gZ3Jvd2luZyBpdHMgcGFyYW1ldGVyIGxpc3QgYWdhaW4uCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtkdHNAYXBwbGUuY29tXQorCitTaWduZWQtb2ZmLWJ5OiBOYXRlIEthcnN0ZW5zIDxuYXRlLmthcnN0ZW5zQGdhcm1pbi5jb20+CistLS0KKyBtRE5TUG9zaXgvbUROU1Bvc2l4LmMgfCAzNyArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbUROU1Bvc2l4L21ETlNQb3NpeC5jIGIvbUROU1Bvc2l4L21ETlNQb3NpeC5jCitpbmRleCAzZmM1NDUxLi43OThhYjEwIDEwMDY0NAorLS0tIGEvbUROU1Bvc2l4L21ETlNQb3NpeC5jCisrKysgYi9tRE5TUG9zaXgvbUROU1Bvc2l4LmMKK0BAIC04ODksMTYgKzg4OSwxNCBAQCBtRE5TbG9jYWwgdm9pZCBDbGVhblJlY2VudEludGVyZmFjZXModm9pZCkKKyAKKyAvLyBDcmVhdGVzIGEgUG9zaXhOZXR3b3JrSW50ZXJmYWNlIGZvciB0aGUgaW50ZXJmYWNlIHdob3NlIElQIGFkZHJlc3MgaXMKKyAvLyBpbnRmQWRkciBhbmQgd2hvc2UgbmFtZSBpcyBpbnRmTmFtZSBhbmQgcmVnaXN0ZXJzIGl0IHdpdGggbUROUyBjb3JlLgorLW1ETlNsb2NhbCBpbnQgU2V0dXBPbmVJbnRlcmZhY2UobUROUyAqY29uc3QgbSwgc3RydWN0IHNvY2thZGRyICppbnRmQWRkciwgc3RydWN0IHNvY2thZGRyICppbnRmTWFzaywgY29uc3QgY2hhciAqaW50Zk5hbWUsIGludCBpbnRmSW5kZXgpCisrbUROU2xvY2FsIGludCBTZXR1cE9uZUludGVyZmFjZShtRE5TICpjb25zdCBtLCBzdHJ1Y3QgaWZpX2luZm8gKmNvbnN0IGlmaSkKKyB7CisgICAgIGludCBlcnIgPSAwOworICAgICBQb3NpeE5ldHdvcmtJbnRlcmZhY2UgKmludGY7CisgICAgIFBvc2l4TmV0d29ya0ludGVyZmFjZSAqYWxpYXMgPSBOVUxMOworIAorICAgICBhc3NlcnQobSAhPSBOVUxMKTsKKy0gICAgYXNzZXJ0KGludGZBZGRyICE9IE5VTEwpOworLSAgICBhc3NlcnQoaW50Zk5hbWUgIT0gTlVMTCk7CistICAgIGFzc2VydChpbnRmTWFzayAhPSBOVUxMKTsKKysgICAgYXNzZXJ0KGlmaSAhPSBOVUxMKTsKKyAKKyAgICAgLy8gQWxsb2NhdGUgdGhlIGludGVyZmFjZSBzdHJ1Y3R1cmUgaXRzZWxmLgorICAgICBpbnRmID0gKFBvc2l4TmV0d29ya0ludGVyZmFjZSopY2FsbG9jKDEsIHNpemVvZigqaW50ZikpOworQEAgLTkwNywyNiArOTA1LDI3IEBAIG1ETlNsb2NhbCBpbnQgU2V0dXBPbmVJbnRlcmZhY2UobUROUyAqY29uc3QgbSwgc3RydWN0IHNvY2thZGRyICppbnRmQWRkciwgc3RydWN0CisgICAgIC8vIEFuZCBtYWtlIGEgY29weSBvZiB0aGUgaW50Zk5hbWUuCisgICAgIGlmIChlcnIgPT0gMCkKKyAgICAgeworLSAgICAgICAgaW50Zi0+aW50Zk5hbWUgPSBzdHJkdXAoaW50Zk5hbWUpOworKyAgICAgICAgaW50Zi0+aW50Zk5hbWUgPSBzdHJkdXAoaWZpLT5pZmlfbmFtZSk7CisgICAgICAgICBpZiAoaW50Zi0+aW50Zk5hbWUgPT0gTlVMTCkgeyBhc3NlcnQoMCk7IGVyciA9IEVOT01FTTsgfQorICAgICB9CisgCisgICAgIGlmIChlcnIgPT0gMCkKKyAgICAgeworICAgICAgICAgLy8gU2V0IHVwIHRoZSBmaWVsZHMgcmVxdWlyZWQgYnkgdGhlIG1ETlMgY29yZS4KKy0gICAgICAgIFNvY2tBZGRyVG9tRE5TQWRkcihpbnRmQWRkciwgJmludGYtPmNvcmVJbnRmLmlwLCBOVUxMKTsKKy0gICAgICAgIFNvY2tBZGRyVG9tRE5TQWRkcihpbnRmTWFzaywgJmludGYtPmNvcmVJbnRmLm1hc2ssIE5VTEwpOworKyAgICAgICAgU29ja0FkZHJUb21ETlNBZGRyKGlmaS0+aWZpX2FkZHIsICZpbnRmLT5jb3JlSW50Zi5pcCwgTlVMTCk7CisrICAgICAgICBTb2NrQWRkclRvbUROU0FkZHIoaWZpLT5pZmlfbmV0bWFzaywgJmludGYtPmNvcmVJbnRmLm1hc2ssIE5VTEwpOworIAorICAgICAgICAgLy9Mb2dNc2coIlNldHVwT25lSW50ZXJmYWNlOiAlI2EgJSNhIiwgICZpbnRmLT5jb3JlSW50Zi5pcCwgICZpbnRmLT5jb3JlSW50Zi5tYXNrKTsKKy0gICAgICAgIHN0cm5jcHkoaW50Zi0+Y29yZUludGYuaWZuYW1lLCBpbnRmTmFtZSwgc2l6ZW9mKGludGYtPmNvcmVJbnRmLmlmbmFtZSkpOworKyAgICAgICAgc3RybmNweShpbnRmLT5jb3JlSW50Zi5pZm5hbWUsIGlmaS0+aWZpX25hbWUsIHNpemVvZihpbnRmLT5jb3JlSW50Zi5pZm5hbWUpKTsKKyAgICAgICAgIGludGYtPmNvcmVJbnRmLmlmbmFtZVtzaXplb2YoaW50Zi0+Y29yZUludGYuaWZuYW1lKS0xXSA9IDA7CisgICAgICAgICBpbnRmLT5jb3JlSW50Zi5BZHZlcnRpc2UgPSBtLT5BZHZlcnRpc2VMb2NhbEFkZHJlc3NlczsKKyAgICAgICAgIGludGYtPmNvcmVJbnRmLk1jYXN0VHhSeCA9IG1ETlN0cnVlOworKyAgICAgICAgaW50Zi0+Y29yZUludGYuTG9vcGJhY2sgPSAoKGlmaS0+aWZpX2ZsYWdzICYgSUZGX0xPT1BCQUNLKSAhPSAwKSA/IG1ETlN0cnVlIDogbUROU2ZhbHNlOworIAorICAgICAgICAgLy8gU2V0IHVwIHRoZSBleHRyYSBmaWVsZHMgaW4gUG9zaXhOZXR3b3JrSW50ZXJmYWNlLgorICAgICAgICAgYXNzZXJ0KGludGYtPmludGZOYW1lICE9IE5VTEwpOyAgICAgICAgIC8vIGludGYtPmludGZOYW1lIGFscmVhZHkgc2V0IHVwIGFib3ZlCistICAgICAgICBpbnRmLT5pbmRleCAgICAgICAgICAgICAgICA9IGludGZJbmRleDsKKy0gICAgICAgIGludGYtPnNhX2ZhbWlseSAgICAgICAgICAgID0gaW50ZkFkZHItPnNhX2ZhbWlseTsKKysgICAgICAgIGludGYtPmluZGV4ICAgICAgICAgICAgICAgID0gaWZpLT5pZmlfaW5kZXg7CisrICAgICAgICBpbnRmLT5zYV9mYW1pbHkgICAgICAgICAgICA9IGlmaS0+aWZpX2FkZHItPnNhX2ZhbWlseTsKKyAgICAgICAgIGludGYtPm11bHRpY2FzdFNvY2tldDQgICAgID0gLTE7CisgI2lmIEhBVkVfSVBWNgorICAgICAgICAgaW50Zi0+bXVsdGljYXN0U29ja2V0NiAgICAgPSAtMTsKK0BAIC05MzYsMTcgKzkzNSwxNyBAQCBtRE5TbG9jYWwgaW50IFNldHVwT25lSW50ZXJmYWNlKG1ETlMgKmNvbnN0IG0sIHN0cnVjdCBzb2NrYWRkciAqaW50ZkFkZHIsIHN0cnVjdAorICAgICAgICAgaW50Zi0+Y29yZUludGYuSW50ZXJmYWNlSUQgPSAobUROU0ludGVyZmFjZUlEKWFsaWFzOworIAorICAgICAgICAgaWYgKGFsaWFzICE9IGludGYpCistICAgICAgICAgICAgZGVidWdmKCJTZXR1cE9uZUludGVyZmFjZTogJXMgJSNhIGlzIGFuIGFsaWFzIG9mICUjYSIsIGludGZOYW1lLCAmaW50Zi0+Y29yZUludGYuaXAsICZhbGlhcy0+Y29yZUludGYuaXApOworKyAgICAgICAgICAgIGRlYnVnZigiU2V0dXBPbmVJbnRlcmZhY2U6ICVzICUjYSBpcyBhbiBhbGlhcyBvZiAlI2EiLCBpZmktPmlmaV9uYW1lLCAmaW50Zi0+Y29yZUludGYuaXAsICZhbGlhcy0+Y29yZUludGYuaXApOworICAgICB9CisgCisgICAgIC8vIFNldCB1cCB0aGUgbXVsdGljYXN0IHNvY2tldAorICAgICBpZiAoZXJyID09IDApCisgICAgIHsKKy0gICAgICAgIGlmIChhbGlhcy0+bXVsdGljYXN0U29ja2V0NCA9PSAtMSAmJiBpbnRmQWRkci0+c2FfZmFtaWx5ID09IEFGX0lORVQpCistICAgICAgICAgICAgZXJyID0gU2V0dXBTb2NrZXQoaW50ZkFkZHIsIE11bHRpY2FzdEROU1BvcnQsIGludGYtPmluZGV4LCAmYWxpYXMtPm11bHRpY2FzdFNvY2tldDQpOworKyAgICAgICAgaWYgKGFsaWFzLT5tdWx0aWNhc3RTb2NrZXQ0ID09IC0xICYmIGlmaS0+aWZpX2FkZHItPnNhX2ZhbWlseSA9PSBBRl9JTkVUKQorKyAgICAgICAgICAgIGVyciA9IFNldHVwU29ja2V0KGlmaS0+aWZpX2FkZHIsIE11bHRpY2FzdEROU1BvcnQsIGludGYtPmluZGV4LCAmYWxpYXMtPm11bHRpY2FzdFNvY2tldDQpOworICNpZiBIQVZFX0lQVjYKKy0gICAgICAgIGVsc2UgaWYgKGFsaWFzLT5tdWx0aWNhc3RTb2NrZXQ2ID09IC0xICYmIGludGZBZGRyLT5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpCistICAgICAgICAgICAgZXJyID0gU2V0dXBTb2NrZXQoaW50ZkFkZHIsIE11bHRpY2FzdEROU1BvcnQsIGludGYtPmluZGV4LCAmYWxpYXMtPm11bHRpY2FzdFNvY2tldDYpOworKyAgICAgICAgZWxzZSBpZiAoYWxpYXMtPm11bHRpY2FzdFNvY2tldDYgPT0gLTEgJiYgaWZpLT5pZmlfYWRkci0+c2FfZmFtaWx5ID09IEFGX0lORVQ2KQorKyAgICAgICAgICAgIGVyciA9IFNldHVwU29ja2V0KGlmaS0+aWZpX2FkZHIsIE11bHRpY2FzdEROU1BvcnQsIGludGYtPmluZGV4LCAmYWxpYXMtPm11bHRpY2FzdFNvY2tldDYpOworICNlbmRpZgorICAgICB9CisgCitAQCAtOTczLDggKzk3Miw4IEBAIG1ETlNsb2NhbCBpbnQgU2V0dXBPbmVJbnRlcmZhY2UobUROUyAqY29uc3QgbSwgc3RydWN0IHNvY2thZGRyICppbnRmQWRkciwgc3RydWN0CisgICAgIH0KKyAgICAgZWxzZQorICAgICB7CistICAgICAgICAvLyBVc2UgaW50Zk5hbWUgaW5zdGVhZCBvZiBpbnRmLT5pbnRmTmFtZSBpbiB0aGUgbmV4dCBsaW5lIHRvIGF2b2lkIGRlcmVmZXJlbmNpbmcgTlVMTC4KKy0gICAgICAgIGRlYnVnZigiU2V0dXBPbmVJbnRlcmZhY2U6ICVzICUjYSBmYWlsZWQgdG8gcmVnaXN0ZXIgJWQiLCBpbnRmTmFtZSwgJmludGYtPmNvcmVJbnRmLmlwLCBlcnIpOworKyAgICAgICAgLy8gVXNlIGlmaS0+aWZpX25hbWUgaW5zdGVhZCBvZiBpbnRmLT5pbnRmTmFtZSBpbiB0aGUgbmV4dCBsaW5lIHRvIGF2b2lkIGRlcmVmZXJlbmNpbmcgTlVMTC4KKysgICAgICAgIGRlYnVnZigiU2V0dXBPbmVJbnRlcmZhY2U6ICVzICUjYSBmYWlsZWQgdG8gcmVnaXN0ZXIgJWQiLCBpZmktPmlmaV9uYW1lLCAmaW50Zi0+Y29yZUludGYuaXAsIGVycik7CisgICAgICAgICBpZiAoaW50ZikgeyBGcmVlUG9zaXhOZXR3b3JrSW50ZXJmYWNlKGludGYpOyBpbnRmID0gTlVMTDsgfQorICAgICB9CisgCitAQCAtMTAyMyw3ICsxMDIyLDcgQEAgbUROU2xvY2FsIGludCBTZXR1cEludGVyZmFjZUxpc3QobUROUyAqY29uc3QgbSkKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgIGlmIChTZXR1cE9uZUludGVyZmFjZShtLCBpLT5pZmlfYWRkciwgaS0+aWZpX25ldG1hc2ssIGktPmlmaV9uYW1lLCBpLT5pZmlfaW5kZXgpID09IDApCisrICAgICAgICAgICAgICAgICAgICBpZiAoU2V0dXBPbmVJbnRlcmZhY2UobSwgaSkgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaS0+aWZpX2FkZHItPnNhX2ZhbWlseSA9PSBBRl9JTkVUKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZGF2NCA9IG1ETlN0cnVlOworICAgICAgICAgICAgICAgICB9CitAQCAtMTAzNyw3ICsxMDM2LDcgQEAgbUROU2xvY2FsIGludCBTZXR1cEludGVyZmFjZUxpc3QobUROUyAqY29uc3QgbSkKKyAgICAgICAgIC8vIEluIHRoZSBpbnRlcmltLCB3ZSBza2lwIGxvb3BiYWNrIGludGVyZmFjZSBvbmx5IGlmIHdlIGZvdW5kIGF0IGxlYXN0IG9uZSB2NCBpbnRlcmZhY2UgdG8gdXNlCisgICAgICAgICAvLyBpZiAoKG0tPkhvc3RJbnRlcmZhY2VzID09IE5VTEwpICYmIChmaXJzdExvb3BiYWNrICE9IE5VTEwpKQorICAgICAgICAgaWYgKCFmb3VuZGF2NCAmJiBmaXJzdExvb3BiYWNrKQorLSAgICAgICAgICAgICh2b2lkKSBTZXR1cE9uZUludGVyZmFjZShtLCBmaXJzdExvb3BiYWNrLT5pZmlfYWRkciwgZmlyc3RMb29wYmFjay0+aWZpX25ldG1hc2ssIGZpcnN0TG9vcGJhY2stPmlmaV9uYW1lLCBmaXJzdExvb3BiYWNrLT5pZmlfaW5kZXgpOworKyAgICAgICAgICAgICh2b2lkKSBTZXR1cE9uZUludGVyZmFjZShtLCBmaXJzdExvb3BiYWNrKTsKKyAgICAgfQorIAorICAgICAvLyBDbGVhbiB1cC4KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDgtTWFyay1kZWxldGVkLWludGVyZmFjZXMtYXMtYmVpbmctY2hhbmdlZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDgtTWFyay1kZWxldGVkLWludGVyZmFjZXMtYXMtYmVpbmctY2hhbmdlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGM1MTA1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL21kbnMvZmlsZXMvMDAwOC1NYXJrLWRlbGV0ZWQtaW50ZXJmYWNlcy1hcy1iZWluZy1jaGFuZ2VkLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gMGZjYzBmMjEwZjNhOTMxMGExOTYzZGU2NDBiMzg0Y2U4NjY0MTBmZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5hdGUgS2Fyc3RlbnMgPG5hdGUua2Fyc3RlbnNAZ2FybWluLmNvbT4KK0RhdGU6IFdlZCwgOSBBdWcgMjAxNyAwOToxNjo1OCAtMDUwMAorU3ViamVjdDogW1BBVENIIDA4LzExXSBNYXJrIGRlbGV0ZWQgaW50ZXJmYWNlcyBhcyBiZWluZyBjaGFuZ2VkCisKK05ldGxpbmsgbm90aWZpY2F0aW9uIGhhbmRsaW5nIGlnbm9yZXMgbWVzc2FnZXMgZm9yIGRlbGV0ZWQgbGlua3MsCitSVE1fREVMTElOSy4gSXQgZG9lcyBoYW5kbGUgUlRNX0dFVExJTksuIEFjY29yZGluZyB0byBsaWJubCBkb2N1LQorbWVudGF0aW9uIChodHRwOi8vd3d3LmluZnJhZGVhZC5vcmcvfnRnci9saWJubC9kb2Mvcm91dGUuaHRtbCkKK1JUTV9ERUxMSU5LIGNhbiBiZSBzZW50IGJ5IHRoZSBrZXJuZWwsIGJ1dCBSVE1fR0VUTElOSyBjYW5ub3QuCitUaGVyZSB3YXMgbGlrZWx5IGEgbWl4dXAgaW4gdGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uLCBzbyB0aGlzCitjaGFuZ2UgcmVwbGFjZXMgaGFuZGxpbmcgZm9yIFJUTV9HRVRMSU5LIHdpdGggUlRNX0RFTExJTksuCisKK1Rlc3RpbmcgYW5kIFZlcmlmaWNhdGlvbiBJbnN0cnVjdGlvbnM6CisgIDEuIFVzZSBpcC1saW5rIHRvIGFkZCBhbmQgcmVtb3ZlIGEgVkxBTiBpbnRlcmZhY2UgYW5kIHZlcmlmeQorICAgICB0aGF0IG1ETlNSZXNwb25kZXIgaGFuZGxlcyB0aGUgZGVsZXRlZCBsaW5rLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbZHRzQGFwcGxlLmNvbV0KKworU2lnbmVkLW9mZi1ieTogTmF0ZSBLYXJzdGVucyA8bmF0ZS5rYXJzdGVuc0BnYXJtaW4uY29tPgorLS0tCisgbUROU1Bvc2l4L21ETlNQb3NpeC5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbUROU1Bvc2l4L21ETlNQb3NpeC5jIGIvbUROU1Bvc2l4L21ETlNQb3NpeC5jCitpbmRleCA3OThhYjEwLi5hOGE1N2RmIDEwMDY0NAorLS0tIGEvbUROU1Bvc2l4L21ETlNQb3NpeC5jCisrKysgYi9tRE5TUG9zaXgvbUROU1Bvc2l4LmMKK0BAIC0xMTYzLDcgKzExNjMsNyBAQCBtRE5TbG9jYWwgdm9pZCAgICAgICAgICBQcm9jZXNzUm91dGluZ05vdGlmaWNhdGlvbihpbnQgc2QsIEdlbkxpbmtlZExpc3QgKmNoYW5nZQorICNlbmRpZgorIAorICAgICAgICAgLy8gUHJvY2VzcyB0aGUgTmV0TGluayBtZXNzYWdlCistICAgICAgICBpZiAocE5MTXNnLT5ubG1zZ190eXBlID09IFJUTV9HRVRMSU5LIHx8IHBOTE1zZy0+bmxtc2dfdHlwZSA9PSBSVE1fTkVXTElOSykKKysgICAgICAgIGlmIChwTkxNc2ctPm5sbXNnX3R5cGUgPT0gUlRNX0RFTExJTksgfHwgcE5MTXNnLT5ubG1zZ190eXBlID09IFJUTV9ORVdMSU5LKQorICAgICAgICAgICAgIEFkZEludGVyZmFjZUluZGV4VG9MaXN0KGNoYW5nZWRJbnRlcmZhY2VzLCAoKHN0cnVjdCBpZmluZm9tc2cqKSBOTE1TR19EQVRBKHBOTE1zZykpLT5pZmlfaW5kZXgpOworICAgICAgICAgZWxzZSBpZiAocE5MTXNnLT5ubG1zZ190eXBlID09IFJUTV9ERUxBRERSIHx8IHBOTE1zZy0+bmxtc2dfdHlwZSA9PSBSVE1fTkVXQUREUikKKyAgICAgICAgICAgICBBZGRJbnRlcmZhY2VJbmRleFRvTGlzdChjaGFuZ2VkSW50ZXJmYWNlcywgKChzdHJ1Y3QgaWZhZGRybXNnKikgTkxNU0dfREFUQShwTkxNc2cpKS0+aWZhX2luZGV4KTsKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDktRml4LXBvc3NpYmxlLU5VTEwtZGVyZWZlcmVuY2UucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDA5LUZpeC1wb3NzaWJsZS1OVUxMLWRlcmVmZXJlbmNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MmQ2OTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDA5LUZpeC1wb3NzaWJsZS1OVUxMLWRlcmVmZXJlbmNlLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gMzhjZmYxOTc4MWY4MTU4NjkyNmIwMmYwZmQxY2IzNmMwNDAzOTVlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5hdGUgS2Fyc3RlbnMgPG5hdGUua2Fyc3RlbnNAZ2FybWluLmNvbT4KK0RhdGU6IFRodSwgMTAgQXVnIDIwMTcgMDg6MjE6NTMgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAwOS8xMV0gRml4IHBvc3NpYmxlIE5VTEwgZGVyZWZlcmVuY2UKKworRml4ZXMgYSBwb3NzaWJsZSBOVUxMIGRlcmVmZXJlbmNlIGlmIG1lbW9yeSBmb3IKK3RoZSBQb3NpeE5ldHdvcmtJbnRlcmZhY2UgY291bGQgbm90IGJlIGFsbG9jYXRlZC4KK090aGVyIGxvZ2ljIHNlZW1zIHRvIHByZXZlbnQgZGVyZWZlcmVuY2luZyB0aGlzCit2YXJpYWJsZSBpZiBOVUxMLCBidXQgdGhpcyBpbnN0YW5jZSBzZWVtcyB0byBoYXZlCitiZWVuIG92ZXJsb29rZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtkdHNAYXBwbGUuY29tXQorCitTaWduZWQtb2ZmLWJ5OiBOYXRlIEthcnN0ZW5zIDxuYXRlLmthcnN0ZW5zQGdhcm1pbi5jb20+CistLS0KKyBtRE5TUG9zaXgvbUROU1Bvc2l4LmMgfCAxMSArKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tRE5TUG9zaXgvbUROU1Bvc2l4LmMgYi9tRE5TUG9zaXgvbUROU1Bvc2l4LmMKK2luZGV4IGE4YTU3ZGYuLjMyNDNlZDQgMTAwNjQ0CistLS0gYS9tRE5TUG9zaXgvbUROU1Bvc2l4LmMKKysrKyBiL21ETlNQb3NpeC9tRE5TUG9zaXguYworQEAgLTk1MSwxMiArOTUxLDE1IEBAIG1ETlNsb2NhbCBpbnQgU2V0dXBPbmVJbnRlcmZhY2UobUROUyAqY29uc3QgbSwgc3RydWN0IGlmaV9pbmZvICpjb25zdCBpZmkpCisgCisgICAgIC8vIElmIGludGVyZmFjZSBpcyBhIGRpcmVjdCBsaW5rLCBhZGRyZXNzIHJlY29yZCB3aWxsIGJlIG1hcmtlZCBhcyBrRE5TUmVjb3JkVHlwZUtub3duVW5pcXVlCisgICAgIC8vIGFuZCBza2lwIHRoZSBwcm9iZSBwaGFzZSBvZiB0aGUgcHJvYmUvYW5ub3VuY2UgcGFja2V0IHNlcXVlbmNlLgorLSAgICBpbnRmLT5jb3JlSW50Zi5EaXJlY3RMaW5rID0gbUROU2ZhbHNlOworKyAgICBpZiAoZXJyID09IDApCisrICAgIHsKKysgICAgICAgIGludGYtPmNvcmVJbnRmLkRpcmVjdExpbmsgPSBtRE5TZmFsc2U7CisgI2lmZGVmIERJUkVDVExJTktfSU5URVJGQUNFX05BTUUKKy0gICAgaWYgKHN0cmNtcChpbnRmTmFtZSwgU1RSSU5HSUZZKERJUkVDVExJTktfSU5URVJGQUNFX05BTUUpKSA9PSAwKQorLSAgICAgICAgaW50Zi0+Y29yZUludGYuRGlyZWN0TGluayA9IG1ETlN0cnVlOworKyAgICAgICAgaWYgKHN0cmNtcChpbnRmTmFtZSwgU1RSSU5HSUZZKERJUkVDVExJTktfSU5URVJGQUNFX05BTUUpKSA9PSAwKQorKyAgICAgICAgICAgIGludGYtPmNvcmVJbnRmLkRpcmVjdExpbmsgPSBtRE5TdHJ1ZTsKKyAjZW5kaWYKKy0gICAgaW50Zi0+Y29yZUludGYuU3VwcG9ydHNVbmljYXN0TUROU1Jlc3BvbnNlID0gbUROU3RydWU7CisrICAgICAgICBpbnRmLT5jb3JlSW50Zi5TdXBwb3J0c1VuaWNhc3RNRE5TUmVzcG9uc2UgPSBtRE5TdHJ1ZTsKKysgICAgfQorIAorICAgICAvLyBUaGUgaW50ZXJmYWNlIGlzIGFsbCByZWFkeSB0byBnbywgbGV0J3MgcmVnaXN0ZXIgaXQgd2l0aCB0aGUgbUROUyBjb3JlLgorICAgICBpZiAoZXJyID09IDApCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDEwLUhhbmRsZS1lcnJvcnMtZnJvbS1zb2NrZXQtY2FsbHMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDEwLUhhbmRsZS1lcnJvcnMtZnJvbS1zb2NrZXQtY2FsbHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjliMDE1NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMTAtSGFuZGxlLWVycm9ycy1mcm9tLXNvY2tldC1jYWxscy5wYXRjaApAQCAtMCwwICsxLDYyIEBACitGcm9tIDM4MmIzYjkyNGU0M2FiZDFiZGM1NzkyOTE4MTYxZDA5MjI2NjY2OTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOYXRlIEthcnN0ZW5zIDxuYXRlLmthcnN0ZW5zQGdhcm1pbi5jb20+CitEYXRlOiBUaHUsIDEwIEF1ZyAyMDE3IDA4OjI3OjMyIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMTAvMTFdIEhhbmRsZSBlcnJvcnMgZnJvbSBzb2NrZXQgY2FsbHMKKworQWRkcyBoYW5kbGluZyBmb3Igc29ja2V0KCkgb3IgcmVhZCgpIHJldHVybmluZyBhCituZWdhdGl2ZSB2YWx1ZSAoaW5kaWNhdGluZyBhbiBlcnJvciBoYXMgb2NjdXJyZWQpLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbZHRzQGFwcGxlLmNvbV0KKworU2lnbmVkLW9mZi1ieTogTmF0ZSBLYXJzdGVucyA8bmF0ZS5rYXJzdGVuc0BnYXJtaW4uY29tPgorLS0tCisgbUROU1Bvc2l4L21ETlNQb3NpeC5jIHwgMTIgKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21ETlNQb3NpeC9tRE5TUG9zaXguYyBiL21ETlNQb3NpeC9tRE5TUG9zaXguYworaW5kZXggMzI0M2VkNC4uODRhZjI2YiAxMDA2NDQKKy0tLSBhL21ETlNQb3NpeC9tRE5TUG9zaXguYworKysrIGIvbUROU1Bvc2l4L21ETlNQb3NpeC5jCitAQCAtMTEyOSw3ICsxMTI5LDcgQEAgbUROU2xvY2FsIHZvaWQgICAgICAgICAgUHJvY2Vzc1JvdXRpbmdOb3RpZmljYXRpb24oaW50IHNkLCBHZW5MaW5rZWRMaXN0ICpjaGFuZ2UKKyAvLyBSZWFkIHRocm91Z2ggdGhlIG1lc3NhZ2VzIG9uIHNkIGFuZCBpZiBhbnkgaW5kaWNhdGUgdGhhdCBhbnkgaW50ZXJmYWNlIHJlY29yZHMgc2hvdWxkCisgLy8gYmUgdG9ybiBkb3duIGFuZCByZWJ1aWx0LCByZXR1cm4gYWZmZWN0ZWQgaW5kaWNlcyBhcyBhIGJpdG1hc2suIE90aGVyd2lzZSByZXR1cm4gMC4KKyB7CistICAgIHNzaXplX3QgcmVhZENvdW50OworKyAgICBzc2l6ZV90IHJlYWRWYWwsIHJlYWRDb3VudDsKKyAgICAgY2hhciBidWZmWzQwOTZdOworICAgICBzdHJ1Y3Qgbmxtc2doZHIgICAgICAgICAqcE5MTXNnID0gKHN0cnVjdCBubG1zZ2hkciopIGJ1ZmY7CisgCitAQCAtMTEzOCw3ICsxMTM4LDEwIEBAIG1ETlNsb2NhbCB2b2lkICAgICAgICAgIFByb2Nlc3NSb3V0aW5nTm90aWZpY2F0aW9uKGludCBzZCwgR2VuTGlua2VkTGlzdCAqY2hhbmdlCisgICAgIC8vIGVub3VnaCB0byBob2xkIGFsbCBwZW5kaW5nIGRhdGEgYW5kIHNvIGF2b2lkIG1lc3NhZ2UgZnJhZ21lbnRhdGlvbi4KKyAgICAgLy8gKE5vdGUgdGhhdCBGSU9OUkVBRCBpcyBub3Qgc3VwcG9ydGVkIG9uIEFGX05FVExJTksuKQorIAorLSAgICByZWFkQ291bnQgPSByZWFkKHNkLCBidWZmLCBzaXplb2YgYnVmZik7CisrICAgIHJlYWRWYWwgPSByZWFkKHNkLCBidWZmLCBzaXplb2YgYnVmZik7CisrICAgIGlmIChyZWFkVmFsIDwgMCkgcmV0dXJuOworKyAgICByZWFkQ291bnQgPSByZWFkVmFsOworKworICAgICB3aGlsZSAoMSkKKyAgICAgeworICAgICAgICAgLy8gTWFrZSBzdXJlIHdlJ3ZlIGdvdCBhbiBlbnRpcmUgbmxtc2doZHIgaW4gdGhlIGJ1ZmZlciwgYW5kIHBheWxvYWQsIHRvby4KK0BAIC0xMTU0LDcgKzExNTcsOSBAQCBtRE5TbG9jYWwgdm9pZCAgICAgICAgICBQcm9jZXNzUm91dGluZ05vdGlmaWNhdGlvbihpbnQgc2QsIEdlbkxpbmtlZExpc3QgKmNoYW5nZQorICAgICAgICAgICAgICAgICBwTkxNc2cgPSAoc3RydWN0IG5sbXNnaGRyKikgYnVmZjsKKyAKKyAgICAgICAgICAgICAgICAgLy8gcmVhZCBtb3JlIGRhdGEKKy0gICAgICAgICAgICAgICAgcmVhZENvdW50ICs9IHJlYWQoc2QsIGJ1ZmYgKyByZWFkQ291bnQsIHNpemVvZiBidWZmIC0gcmVhZENvdW50KTsKKysgICAgICAgICAgICAgICAgcmVhZFZhbCA9IHJlYWQoc2QsIGJ1ZmYgKyByZWFkQ291bnQsIHNpemVvZiBidWZmIC0gcmVhZENvdW50KTsKKysgICAgICAgICAgICAgICAgaWYgKHJlYWRWYWwgPCAwKSByZXR1cm47CisrICAgICAgICAgICAgICAgIHJlYWRDb3VudCArPSByZWFkVmFsOworICAgICAgICAgICAgICAgICBjb250aW51ZTsgICAgICAgICAgICAgICAgICAgLy8gc3BpbiBhcm91bmQgYW5kIHJldmFsaWRhdGUgd2l0aCBuZXcgcmVhZENvdW50CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGVsc2UKK0BAIC0xNDI5LDYgKzE0MzQsNyBAQCBtRE5TbG9jYWwgbUROU0Jvb2wgbUROU1BsYXRmb3JtSW5pdF9DYW5SZWNlaXZlVW5pY2FzdCh2b2lkKQorICAgICBpbnQgZXJyOworICAgICBpbnQgcyA9IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCBJUFBST1RPX1VEUCk7CisgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBzNTM1MzsKKysgICAgaWYgKHMgPCAwKSByZXR1cm4gbUROU2ZhbHNlOworICAgICBzNTM1My5zaW5fZmFtaWx5ICAgICAgPSBBRl9JTkVUOworICAgICBzNTM1My5zaW5fcG9ydCAgICAgICAgPSBNdWx0aWNhc3RETlNQb3J0Lk5vdEFuSW50ZWdlcjsKKyAgICAgczUzNTMuc2luX2FkZHIuc19hZGRyID0gMDsKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMTEtQ2hhbmdlLWEtZHluYW1pYy1hbGxvY2F0aW9uLXRvLWZpbGUtc2NvcGUtdmFyaWFibGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDExLUNoYW5nZS1hLWR5bmFtaWMtYWxsb2NhdGlvbi10by1maWxlLXNjb3BlLXZhcmlhYmxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NGZiMzUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDExLUNoYW5nZS1hLWR5bmFtaWMtYWxsb2NhdGlvbi10by1maWxlLXNjb3BlLXZhcmlhYmxlLnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gMTlkZTI2ZGI2OTQwOGYwMjI0MWUyMzJiMzkyMjQ1ODlhMGY2MzBkZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5hdGUgS2Fyc3RlbnMgPG5hdGUua2Fyc3RlbnNAZ2FybWluLmNvbT4KK0RhdGU6IFRodSwgMTAgQXVnIDIwMTcgMDg6NDY6MDMgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAxMS8xMV0gQ2hhbmdlIGEgZHluYW1pYyBhbGxvY2F0aW9uIHRvIGZpbGUtc2NvcGUgdmFyaWFibGUKKworQ2hhbmdlcyBhIHZhcmlhYmxlIGZyb20gYmVpbmcgZHluYW1pY2FsbHktYWxsb2NhdGVkIHRvIGJlaW5nCitzdGF0aWNhbGx5LWFsbG9jYXRlZCBhdCB0aGUgZmlsZSBzY29wZS4gQWRkcmVzc2VzIGEgQ292ZXJpdHkKK2lzc3VlIHdoZXJlIGl0IGFwcGVhcmVkIHRoYXQgdGhlIG1lbW9yeSB3YXMgYmVpbmcgbGVha2VkLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbZHRzQGFwcGxlLmNvbV0KKworU2lnbmVkLW9mZi1ieTogTmF0ZSBLYXJzdGVucyA8bmF0ZS5rYXJzdGVuc0BnYXJtaW4uY29tPgorLS0tCisgbUROU1Bvc2l4L21ETlNQb3NpeC5jIHwgMTIgKysrKy0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21ETlNQb3NpeC9tRE5TUG9zaXguYyBiL21ETlNQb3NpeC9tRE5TUG9zaXguYworaW5kZXggODRhZjI2Yi4uYjc3OTVlZCAxMDA2NDQKKy0tLSBhL21ETlNQb3NpeC9tRE5TUG9zaXguYworKysrIGIvbUROU1Bvc2l4L21ETlNQb3NpeC5jCitAQCAtOTEsNiArOTEsNyBAQCBzdGF0aWMgc2lnc2V0X3QgZ0V2ZW50U2lnbmFsU2V0OyAgICAgICAgICAgICAgICAvLyBTaWduYWxzIHdoaWNoIGV2ZW50IGxvb3AgbGlzdAorIHN0YXRpYyBzaWdzZXRfdCBnRXZlbnRTaWduYWxzOyAgICAgICAgICAgICAgICAgIC8vIFNpZ25hbHMgd2hpY2ggd2VyZSByZWNlaXZlZCB3aGlsZSBpbnNpZGUgbG9vcAorIAorIHN0YXRpYyBQb3NpeE5ldHdvcmtJbnRlcmZhY2UgKmdSZWNlbnRJbnRlcmZhY2VzOworK3N0YXRpYyBJZkNoYW5nZVJlYyBnQ2hnUmVjOworIAorIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIC8vIEdsb2JhbHMgKGZvciBkZWJ1Z2dpbmcpCitAQCAtMTQxMiwxNiArMTQxMywxMSBAQCBjbGVhbnVwOgorIG1ETlNsb2NhbCBtU3RhdHVzIFdhdGNoRm9ySW50ZXJmYWNlQ2hhbmdlKG1ETlMgKmNvbnN0IG0pCisgeworICAgICBtU3RhdHVzIGVycjsKKy0gICAgSWZDaGFuZ2VSZWMgKnBDaGdSZWM7CisgCistICAgIHBDaGdSZWMgPSAoSWZDaGFuZ2VSZWMqKSBtRE5TUGxhdGZvcm1NZW1BbGxvY2F0ZShzaXplb2YgKnBDaGdSZWMpOworLSAgICBpZiAocENoZ1JlYyA9PSBOVUxMKQorLSAgICAgICAgcmV0dXJuIG1TdGF0dXNfTm9NZW1vcnlFcnI7CistCistICAgIHBDaGdSZWMtPm1ETlMgPSBtOworLSAgICBlcnIgPSBPcGVuSWZOb3RpZnlTb2NrZXQoJnBDaGdSZWMtPk5vdGlmeVNEKTsKKysgICAgZ0NoZ1JlYy5tRE5TID0gbTsKKysgICAgZXJyID0gT3BlbklmTm90aWZ5U29ja2V0KCZnQ2hnUmVjLk5vdGlmeVNEKTsKKyAgICAgaWYgKGVyciA9PSAwKQorLSAgICAgICAgZXJyID0gbUROU1Bvc2l4QWRkRkRUb0V2ZW50TG9vcChwQ2hnUmVjLT5Ob3RpZnlTRCwgSW50ZXJmYWNlQ2hhbmdlQ2FsbGJhY2ssIHBDaGdSZWMpOworKyAgICAgICAgZXJyID0gbUROU1Bvc2l4QWRkRkRUb0V2ZW50TG9vcChnQ2hnUmVjLk5vdGlmeVNELCBJbnRlcmZhY2VDaGFuZ2VDYWxsYmFjaywgJmdDaGdSZWMpOworIAorICAgICByZXR1cm4gZXJyOworIH0KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL21kbnNfODc4LjI2MC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL21kbnMvbWRuc184NzguMjYwLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxNzg5NDUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL21kbnMvbWRuc184NzguMjYwLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi1TVU1NQVJZID0gIlB1Ymxpc2hlcyAmIGJyb3dzZXMgYXZhaWxhYmxlIHNlcnZpY2VzIG9uIGEgbGluayBhY2NvcmRpbmcgdG8gdGhlIFplcm9jb25mIC8gQm9uam91ciBwcm90b2NvbCIKLURFU0NSSVBUSU9OID0gIkJvbmpvdXIsIGFsc28ga25vd24gYXMgemVyby1jb25maWd1cmF0aW9uIG5ldHdvcmtpbmcsIGVuYWJsZXMgYXV0b21hdGljIGRpc2NvdmVyeSBvZiBjb21wdXRlcnMsIGRldmljZXMsIGFuZCBzZXJ2aWNlcyBvbiBJUCBuZXR3b3Jrcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9uZXR3b3JraW5nL2JvbmpvdXIvIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vTElDRU5TRTttZDU9MzFjNTAzNzE5MjFlMGZiNzMxMDAzYmJjNjY1ZjI5YmYiCi0KLUNPTVBBVElCTEVfSE9TVF9saWJjLW11c2wgPSAnbnVsbCcKLQotUlBST1ZJREVTXyR7UE59ICs9ICJsaWJkbnNfc2Quc28iCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9vcGVuc291cmNlLmFwcGxlLmNvbS90YXJiYWxscy9tRE5TUmVzcG9uZGVyL21ETlNSZXNwb25kZXItJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2J1aWxkLnBhdGNoO3BhdGNoZGlyPS4uIFwKLSAgICAgICAgICAgZmlsZTovL21kbnMuc2VydmljZSBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhZWI5MmQ4MzhhNGFhMjQwMmVmMTI4ZWQ1MDE0ODRlYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzY2M3MTU4MmU4ZWVlNDY5YzJkZThlY2FlMWQ3NjllN2YzMmIzNDY4ZGZiN2YyY2E3N2YxZGVlMWYzMGE3ZDFlIgotCi1QQVJBTExFTF9NQUtFID0gIiIKLQotUyA9ICIke1dPUktESVJ9L21ETlNSZXNwb25kZXItJHtQVn0vbUROU1Bvc2l4IgotCi1FWFRSQV9PRU1BS0UgKz0gIm9zPWxpbnV4IERFQlVHPTAgJ0NDPSR7Q0N9JyAnTEQ9JHtDQ0xEfSAke0xERkxBR1N9JyIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWRvX2luc3RhbGwgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgYnVpbGQvcHJvZC9tZG5zZCAke0R9JHtzYmluZGlyfQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0gICAgY3AgYnVpbGQvcHJvZC9saWJkbnNfc2Quc28gJHtEfSR7bGliZGlyfS9saWJkbnNfc2Quc28uMQotICAgIGNobW9kIDA2NDQgJHtEfSR7bGliZGlyfS9saWJkbnNfc2Quc28uMQotICAgIGxuIC1zIGxpYmRuc19zZC5zby4xICR7RH0ke2xpYmRpcn0vbGliZG5zX3NkLnNvCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNjQ0IC4uL21ETlNTaGFyZWQvZG5zX3NkLmggJHtEfSR7aW5jbHVkZWRpcn0KLQotICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44Ci0gICAgaW5zdGFsbCAtbSAwNjQ0IC4uL21ETlNTaGFyZWQvbUROU1Jlc3BvbmRlci44ICR7RH0ke21hbmRpcn0vbWFuOC9tZG5zZC44Ci0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgLi4vQ2xpZW50cy9idWlsZC9kbnMtc2QgJHtEfSR7YmluZGlyfQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0gICAgb2VfbGliaW5zdGFsbCAtQyBidWlsZC9wcm9kIC1zbyBsaWJuc3NfbWRucy0wLjIgJHtEfSR7bGliZGlyfQotICAgIGxuIC1zIGxpYm5zc19tZG5zLTAuMi5zbyAke0R9JHtsaWJkaXJ9L2xpYm5zc19tZG5zLnNvLjIKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KLSAgICBpbnN0YWxsIC1tIDA2NDQgbnNzX21kbnMuY29uZiAke0R9JHtzeXNjb25mZGlyfQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjUKLSAgICBpbnN0YWxsIC1tIDA2NDQgbnNzX21kbnMuY29uZi41ICR7RH0ke21hbmRpcn0vbWFuNQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjgKLSAgICBpbnN0YWxsIC1tIDA2NDQgbGlibnNzX21kbnMuOCAke0R9JHttYW5kaXJ9L21hbjgKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbWRucy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotfQotCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotICAgIHNlZCAtZSAnL15ob3N0czovcy9ccypcPG1kbnNcPi8vJyBcCi0gICAgICAgIC1lICdzL1woXmhvc3RzOi4qXClcKFw8ZmlsZXNcPlwpXCguKlwpXChcPGRuc1w+XClcKC4qXCkvXDFcMiBtZG5zXDNcNFw1LycgXAotICAgICAgICAtaSAkRC9ldGMvbnNzd2l0Y2guY29uZgotfQotCi1wa2dfcHJlcm1fJHtQTn0gKCkgewotICAgIHNlZCAtZSAnL15ob3N0czovcy9ccypcPG1kbnNcPi8vJyBcCi0gICAgICAgIC1lICcvXmhvc3RzOi9zL1xzKm1kbnMvLycgXAotICAgICAgICAtaSAkRC9ldGMvbnNzd2l0Y2guY29uZgotfQotCi1pbmhlcml0IHN5c3RlbWQKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm1kbnMuc2VydmljZSIKLQotRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbWRucy5zZXJ2aWNlIgotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWJkbnNfc2Quc28uMSBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2Rucy1zZCBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm5zc19tZG5zLTAuMi5zbyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9uc3NfbWRucy5jb25mIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9saWJkbnNfc2Quc28gXAotICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2Ruc19zZC5oICIKLQotRklMRVNfJHtQTn0tbWFuICs9ICIke21hbmRpcn0vbWFuOC9tZG5zZC44IFwKLSAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjUvbnNzX21kbnMuY29uZi41IFwKLSAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjgvbGlibnNzX21kbnMuOCIKLQotUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tZGV2ICR7UE59LW1hbiAke1BOfS1kYmciCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9tZG5zXzg3OC4yNzAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL21kbnNfODc4LjI3MC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmOGRjOTIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9tZG5zXzg3OC4yNzAuMi5iYgpAQCAtMCwwICsxLDEwMSBAQAorU1VNTUFSWSA9ICJQdWJsaXNoZXMgJiBicm93c2VzIGF2YWlsYWJsZSBzZXJ2aWNlcyBvbiBhIGxpbmsgYWNjb3JkaW5nIHRvIHRoZSBaZXJvY29uZiAvIEJvbmpvdXIgcHJvdG9jb2wiCitERVNDUklQVElPTiA9ICJCb25qb3VyLCBhbHNvIGtub3duIGFzIHplcm8tY29uZmlndXJhdGlvbiBuZXR3b3JraW5nLCBlbmFibGVzIGF1dG9tYXRpYyBkaXNjb3Zlcnkgb2YgY29tcHV0ZXJzLCBkZXZpY2VzLCBhbmQgc2VydmljZXMgb24gSVAgbmV0d29ya3MuIgorSE9NRVBBR0UgPSAiaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vbmV0d29ya2luZy9ib25qb3VyLyIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0xJQ0VOU0U7bWQ1PTMxYzUwMzcxOTIxZTBmYjczMTAwM2JiYzY2NWYyOWJmIgorCitDT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsID0gJ251bGwnCisKK1JQUk9WSURFU18ke1BOfSArPSAibGliZG5zX3NkLnNvIgorCitTUkNfVVJJID0gImh0dHBzOi8vb3BlbnNvdXJjZS5hcHBsZS5jb20vdGFyYmFsbHMvbUROU1Jlc3BvbmRlci9tRE5TUmVzcG9uZGVyLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9idWlsZC5wYXRjaDtwYXRjaGRpcj0uLiBcCisgICAgICAgICAgIGZpbGU6Ly9tZG5zLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1DcmVhdGUtc3Vicm91dGluZS1mb3ItY2xlYW5pbmctcmVjZW50LWludGVyZmFjZXMucGF0Y2g7cGF0Y2hkaXI9Li4gXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1DcmVhdGUtc3Vicm91dGluZS1mb3ItdGVhcmluZy1kb3duLWFuLWludGVyZmFjZS5wYXRjaDtwYXRjaGRpcj0uLiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLVRyYWNrLWludGVyZmFjZS1zb2NrZXQtZmFtaWx5LnBhdGNoO3BhdGNoZGlyPS4uIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtVXNlLWxpc3QtZm9yLWNoYW5nZWQtaW50ZXJmYWNlcy5wYXRjaDtwYXRjaGRpcj0uLiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LUhhbmRsZS1ub2lzeS1uZXRsaW5rLXNvY2tldHMucGF0Y2g7cGF0Y2hkaXI9Li4gXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1SZW1vdmUtdW5uZWVkZWQtZnVuY3Rpb24ucGF0Y2g7cGF0Y2hkaXI9Li4gXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1JbmRpY2F0ZS1sb29wYmFjay1pbnRlcmZhY2UtdG8tbUROUy1jb3JlLnBhdGNoO3BhdGNoZGlyPS4uIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtTWFyay1kZWxldGVkLWludGVyZmFjZXMtYXMtYmVpbmctY2hhbmdlZC5wYXRjaDtwYXRjaGRpcj0uLiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LUZpeC1wb3NzaWJsZS1OVUxMLWRlcmVmZXJlbmNlLnBhdGNoO3BhdGNoZGlyPS4uIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtSGFuZGxlLWVycm9ycy1mcm9tLXNvY2tldC1jYWxscy5wYXRjaDtwYXRjaGRpcj0uLiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLUNoYW5nZS1hLWR5bmFtaWMtYWxsb2NhdGlvbi10by1maWxlLXNjb3BlLXZhcmlhYmxlLnBhdGNoO3BhdGNoZGlyPS4uIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjRlMTM5YThlMTEzMzM0OTAwNmIwNDM2MjkxYzllMjliIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJjZWYwZWU5OTAwNTA0YzUyNzdmYjgxZGUwYTI4ZTZjMDgzNWZlNDgyZWJlY2YxMDY3YzY4NjRmNWM0ZWRhNzQiCisKK1BBUkFMTEVMX01BS0UgPSAiIgorCitTID0gIiR7V09SS0RJUn0vbUROU1Jlc3BvbmRlci0ke1BWfS9tRE5TUG9zaXgiCisKK0VYVFJBX09FTUFLRSArPSAib3M9bGludXggREVCVUc9MCAnQ0M9JHtDQ30nICdMRD0ke0NDTER9ICR7TERGTEFHU30nIgorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworZG9faW5zdGFsbCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSBidWlsZC9wcm9kL21kbnNkICR7RH0ke3NiaW5kaXJ9CisKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKyAgICBjcCBidWlsZC9wcm9kL2xpYmRuc19zZC5zbyAke0R9JHtsaWJkaXJ9L2xpYmRuc19zZC5zby4xCisgICAgY2htb2QgMDY0NCAke0R9JHtsaWJkaXJ9L2xpYmRuc19zZC5zby4xCisgICAgbG4gLXMgbGliZG5zX3NkLnNvLjEgJHtEfSR7bGliZGlyfS9saWJkbnNfc2Quc28KKworICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0KKyAgICBpbnN0YWxsIC1tIDA2NDQgLi4vbUROU1NoYXJlZC9kbnNfc2QuaCAke0R9JHtpbmNsdWRlZGlyfQorCisgICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjgKKyAgICBpbnN0YWxsIC1tIDA2NDQgLi4vbUROU1NoYXJlZC9tRE5TUmVzcG9uZGVyLjggJHtEfSR7bWFuZGlyfS9tYW44L21kbnNkLjgKKworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSAuLi9DbGllbnRzL2J1aWxkL2Rucy1zZCAke0R9JHtiaW5kaXJ9CisKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKyAgICBvZV9saWJpbnN0YWxsIC1DIGJ1aWxkL3Byb2QgLXNvIGxpYm5zc19tZG5zLTAuMiAke0R9JHtsaWJkaXJ9CisgICAgbG4gLXMgbGlibnNzX21kbnMtMC4yLnNvICR7RH0ke2xpYmRpcn0vbGlibnNzX21kbnMuc28uMgorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQorICAgIGluc3RhbGwgLW0gMDY0NCBuc3NfbWRucy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9CisKKyAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuNQorICAgIGluc3RhbGwgLW0gMDY0NCBuc3NfbWRucy5jb25mLjUgJHtEfSR7bWFuZGlyfS9tYW41CisKKyAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuOAorICAgIGluc3RhbGwgLW0gMDY0NCBsaWJuc3NfbWRucy44ICR7RH0ke21hbmRpcn0vbWFuOAorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9tZG5zLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCit9CisKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisgICAgc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bWRuc1w+Ly8nIFwKKyAgICAgICAgLWUgJ3MvXCheaG9zdHM6LipcKVwoXDxmaWxlc1w+XClcKC4qXClcKFw8ZG5zXD5cKVwoLipcKS9cMVwyIG1kbnNcM1w0XDUvJyBcCisgICAgICAgIC1pICREL2V0Yy9uc3N3aXRjaC5jb25mCit9CisKK3BrZ19wcmVybV8ke1BOfSAoKSB7CisgICAgc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bWRuc1w+Ly8nIFwKKyAgICAgICAgLWUgJy9eaG9zdHM6L3MvXHMqbWRucy8vJyBcCisgICAgICAgIC1pICREL2V0Yy9uc3N3aXRjaC5jb25mCit9CisKK2luaGVyaXQgc3lzdGVtZAorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibWRucy5zZXJ2aWNlIgorCitGSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tZG5zLnNlcnZpY2UiCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2xpYmRuc19zZC5zby4xIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vZG5zLXNkIFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibnNzX21kbnMtMC4yLnNvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L25zc19tZG5zLmNvbmYiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYmRuc19zZC5zbyBcCisgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZG5zX3NkLmggIgorCitGSUxFU18ke1BOfS1tYW4gKz0gIiR7bWFuZGlyfS9tYW44L21kbnNkLjggXAorICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuNS9uc3NfbWRucy5jb25mLjUgXAorICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuOC9saWJuc3NfbWRucy44IgorCitQQUNLQUdFUyA9ICIke1BOfSAke1BOfS1kZXYgJHtQTn0tbWFuICR7UE59LWRiZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC8wMDAxLUFkZC1wa2ctY29uZmlnLXN1cHBvcnQtZm9yLWJ1aWxkaW5nLWFwcGxpY2F0aW9ucy1hbmQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwMS1BZGQtcGtnLWNvbmZpZy1zdXBwb3J0LWZvci1idWlsZGluZy1hcHBsaWNhdGlvbnMtYW5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjYjk1ODgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwMS1BZGQtcGtnLWNvbmZpZy1zdXBwb3J0LWZvci1idWlsZGluZy1hcHBsaWNhdGlvbnMtYW5kLnBhdGNoCkBAIC0wLDAgKzEsMTcwIEBACitGcm9tIGFlYThjMmYwYmY4MDA0YzhkYThjYTlhY2IwNGFiMDc3OThjZDgwNjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIdWdoIE1jTWFzdGVyIDxodWdoLm1jbWFzdGVyQG91dGxvb2suY29tPgorRGF0ZTogV2VkLCAzIEFwciAyMDE5IDIxOjM2OjAzICsxMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBwa2ctY29uZmlnIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIGFwcGxpY2F0aW9ucyBhbmQKKyBzdWItYWdlbnRzCisKK1RoZSBuZXRzbm1wIHBhY2thZ2Ugc2hvdWxkIGJlIHVzZWQgd2hlbiBidWlsZGluZyBOZXQtU05NUCBhcHBsaWNhdGlvbnMuCitUaGUgbmV0c25tcC1hZ2VudCBwYWNrYWdlIHNob3VsZCBiZSB1c2VkIHdoZW4gYnVpbGRpbmcgTmV0LVNOTVAgc3ViYWdlbnRzLgorCitTaWduZWQtb2ZmLWJ5OiBIdWdoIE1jTWFzdGVyIDxodWdoLm1jbWFzdGVyQG91dGxvb2suY29tPgorWyBidmFuYXNzY2hlOiBlZGl0ZWQgbWFrZWZpbGUgY29kZSBhbmQgLnBjIGZpbGVzOyBhZGRlZCAuL2NvbmZpZ3VyZSBjaGFuZ2VzIF0KKworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wL25ldC1zbm1wL3BhdGNoZXMvX2Rpc2N1c3MvdGhyZWFkL2EwZDY2ZTkxZGQvZjk0MC9hdHRhY2htZW50LzAwMDEtQWRkLXBrZy1jb25maWctc3VwcG9ydC1mb3ItYnVpbGRpbmctYXBwbGljYXRpb25zLWFuZC5wYXRjaAorCistLS0KKyBNYWtlZmlsZS5pbiAgICAgICAgIHwgIDIgKysKKyBNYWtlZmlsZS5ydWxlcyAgICAgIHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCisgY29uZmlndXJlICAgICAgICAgICB8ICA0ICsrKysKKyBjb25maWd1cmUuYWMgICAgICAgIHwgIDEgKworIG5ldHNubXAtYWdlbnQucGMuaW4gfCAxMiArKysrKysrKysrKysKKyBuZXRzbm1wLnBjLmluICAgICAgIHwgMTIgKysrKysrKysrKysrCisgNiBmaWxlcyBjaGFuZ2VkLCA1NyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXRzbm1wLWFnZW50LnBjLmluCisgY3JlYXRlIG1vZGUgMTAwNjQ0IG5ldHNubXAucGMuaW4KKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IDlkYmRkZTEzNTNiMS4uZWM5NzI2MzZjMjc5IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtMzUsNiArMzUsNyBAQCBJTlNUQUxMQlVJTFRIRUFERVJTPWluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKyBJTlNUQUxMQlVJTFRJTkNMVURFSEVBREVSUz1ARkVBVFVSRUhFQURFUlNACisgSU5TVEFMTEJJTlNDUklQVFM9bmV0LXNubXAtY29uZmlnIG5ldC1zbm1wLWNyZWF0ZS12My11c2VyCisgSU5TVEFMTFVDREhFQURFUlM9dWNkLXNubXAtY29uZmlnLmggdmVyc2lvbi5oIG1pYl9tb2R1bGVfY29uZmlnLmgKKytJTlNUQUxMX1BLR0NPTkZJRz1uZXRzbm1wLnBjIG5ldHNubXAtYWdlbnQucGMKKyAKKyAjCisgIyBvdGhlciBpbnN0YWxsIHJ1bGVzLgorQEAgLTI3NSw2ICsyNzYsNyBAQCBjb25maWdjbGVhbjogbWFrZWZpbGVjbGVhbgorIAkJbGlidG9vbCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIFwKKyAJCW5ldC1zbm1wLWNvbmZpZyBuZXQtc25tcC1jb25maWcteCBjb25maWd1cmUtc3VtbWFyeSBcCisgCQluZXQtc25tcC1jcmVhdGUtdjMtdXNlciBuZXQtc25tcC1jcmVhdGUtdjMtdXNlci14CisrCXJtIC1mICoucGMKKyAJcm0gLWYgbWlicy8uaW5kZXgKKyAJcm0gLWYgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCQlcCisgCQlpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAkJXAorZGlmZiAtLWdpdCBhL01ha2VmaWxlLnJ1bGVzIGIvTWFrZWZpbGUucnVsZXMKK2luZGV4IDllOWU5MDA5ZTVkMi4uZTcxNGY5MWU3MjVlIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUucnVsZXMKKysrKyBiL01ha2VmaWxlLnJ1bGVzCitAQCAtODUsMTIgKzg1LDE0IEBAIHN1YmRpcnM6CisgIyBpbnN0YWxsbGlicyBoYW5kbGVzIGxvY2FsLCB1Y2QgYW5kIHN1YmRpciBsaWJzLiBuZWVkIHRvIGRvIHN1YmRpciBsaWJzCisgIyBiZWZvcmUgYmlucywgc2luemUgdGhvc2UgbGlicyBtYXkgYmUgbmVlZGVkIGZvciBzdWNjZXNzZnVsIGxpbmtpbmcKKyBpbnN0YWxsOiBpbnN0YWxsbG9jYWxoZWFkZXJzIEBpbnN0YWxsdWNkaGVhZGVyc0AgXAorLSAgICAgICAgIGluc3RhbGxsaWJzIFwKKy0gICAgICAgICBpbnN0YWxsbG9jYWxiaW4gICAgICBpbnN0YWxsbG9jYWxzYmluICAgXAorKyAgICAgICAgIGluc3RhbGxsaWJzICAgICAgICAgaW5zdGFsbF9wa2djb25maWcgICBcCisrICAgICAgICAgaW5zdGFsbGxvY2FsYmluICAgICBpbnN0YWxsbG9jYWxzYmluICAgIFwKKyAgICAgICAgICBpbnN0YWxsc3ViZGlycyAgICAgICQoT1RIRVJJTlNUQUxMKQorIAorLXVuaW5zdGFsbDogdW5pbnN0YWxsbGlicyB1bmluc3RhbGxiaW4gdW5pbnN0YWxsc2JpbiB1bmluc3RhbGxoZWFkZXJzIFwKKy0gICAgICAgICAgIHVuaW5zdGFsbHN1YmRpcnMgJChPVEhFUlVOSU5TVEFMTCkKKyt1bmluc3RhbGw6IHVuaW5zdGFsbGxpYnMgICAgIHVuaW5zdGFsbF9wa2djb25maWcgXAorKyAgICAgICAgICAgdW5pbnN0YWxsYmluICAgICAgdW5pbnN0YWxsc2JpbiAgICAgICBcCisrICAgICAgICAgICB1bmluc3RhbGxoZWFkZXJzICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgIHVuaW5zdGFsbHN1YmRpcnMgICQoT1RIRVJVTklOU1RBTEwpCisgCisgaW5zdGFsbHByb2dzOiBpbnN0YWxsYmluIGluc3RhbGxzYmluCisgCitAQCAtMjg3LDYgKzI4OSwyNiBAQCB1bmluc3RhbGxsaWJzOgorIAkJZG9uZSBcCisgCWZpCisgCisrIworKyMgcGtnLWNvbmZpZyBmaWxlcworKyMKKytpbnN0YWxsX3BrZ2NvbmZpZzogJChJTlNUQUxMX1BLR0NPTkZJRykKKysJQGlmIHRlc3QgIngkKElOU1RBTExfUEtHQ09ORklHKSIgIT0geDsgdGhlbgkJCVwKKysJCSQoU0hFTEwpICQodG9wX3NyY2RpcikvbWtpbnN0YWxsZGlycyAkKElOU1RBTExfUFJFRklYKSQobGliZGlyKS9wa2djb25maWc7IFwKKysJCWZvciBpIGluICQoSU5TVEFMTF9QS0dDT05GSUcpOyBkbwkJCVwKKysJCQllY2hvICJpbnN0YWxsaW5nICQkaSBpbiAkKElOU1RBTExfUFJFRklYKSQobGliZGlyKS9wa2djb25maWciOyBcCisrCQlkb25lOwkJCQkJCQlcCisrCQkkKElOU1RBTEwpICQoSU5TVEFMTF9QS0dDT05GSUcpICQoSU5TVEFMTF9QUkVGSVgpJChsaWJkaXIpL3BrZ2NvbmZpZzsgXAorKwlmaQorKworK3VuaW5zdGFsbF9wa2djb25maWc6CisrCUBpZiB0ZXN0ICJ4JChJTlNUQUxMX1BLR0NPTkZJRykiICE9IHg7IHRoZW4JCQlcCisrCQlmb3IgaSBpbiAkKElOU1RBTExfUEtHQ09ORklHKTsgZG8JCQlcCisrCQkJZWNobyAicmVtb3ZpbmcgJCRpIGZyb20gJChJTlNUQUxMX1BSRUZJWCkkKGxpYmRpcikvcGtnY29uZmlnIjsgXAorKwkJCSQoVU5JTlNUQUxMKSAkKElOU1RBTExfUFJFRklYKSQobGliZGlyKS9wa2djb25maWcvJCRpO1wKKysJCWRvbmU7CQkJCQkJCVwKKysJZmkKKysKKyAjCisgIyBub3JtYWwgYmluIGJpbmFyaWVzCisgIworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggNWVjNDRmNWNlMDgyLi41MTAzYTRkYzlkODggMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTMwNDIyLDYgKzMwNDIyLDggQEAgYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIG5ldC1zbm1wLWNvbmZpZzpuZXQtc25tcC1jb25maWcuaW4iCisgCisgYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIG5ldC1zbm1wLWNyZWF0ZS12My11c2VyOm5ldC1zbm1wLWNyZWF0ZS12My11c2VyLmluIgorIAorK2FjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBuZXRzbm1wLnBjOm5ldHNubXAucGMuaW4gbmV0c25tcC1hZ2VudC5wYzpuZXRzbm1wLWFnZW50LnBjLmluIgorKworIGFjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBkaXN0L2dlbmVyYXRpb24tc2NyaXB0cy9nZW4tdmFyaWFibGVzOmRpc3QvZ2VuZXJhdGlvbi1zY3JpcHRzL2dlbi12YXJpYWJsZXMuaW4iCisgCisgYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIGxvY2FsL3NubXBjb25mIgorQEAgLTMxNDQ1LDYgKzMxNDQ3LDggQEAgZG8KKyAgICAgIm1pYnMvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgbWlicy9NYWtlZmlsZTpNYWtlZmlsZS50b3A6bWlicy9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlcyIgOzsKKyAgICAgIm5ldC1zbm1wLWNvbmZpZyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBuZXQtc25tcC1jb25maWc6bmV0LXNubXAtY29uZmlnLmluIiA7OworICAgICAibmV0LXNubXAtY3JlYXRlLXYzLXVzZXIiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgbmV0LXNubXAtY3JlYXRlLXYzLXVzZXI6bmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuaW4iIDs7CisrICAgICJuZXRzbm1wLnBjIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIG5ldHNubXAucGM6bmV0c25tcC5wYy5pbiIgOzsKKysgICAgIm5ldHNubXAtYWdlbnQucGMiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgbmV0c25tcC1hZ2VudC5wYzpuZXRzbm1wLWFnZW50LnBjLmluIiA7OworICAgICAiZGlzdC9nZW5lcmF0aW9uLXNjcmlwdHMvZ2VuLXZhcmlhYmxlcyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBkaXN0L2dlbmVyYXRpb24tc2NyaXB0cy9nZW4tdmFyaWFibGVzOmRpc3QvZ2VuZXJhdGlvbi1zY3JpcHRzL2dlbi12YXJpYWJsZXMuaW4iIDs7CisgICAgICJsb2NhbC9zbm1wY29uZiIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBsb2NhbC9zbm1wY29uZiIgOzsKKyAgICAgImRlZmF1bHQiKSBDT05GSUdfQ09NTUFORFM9IiRDT05GSUdfQ09NTUFORFMgZGVmYXVsdCIgOzsKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDRjNGRjZTA5ZDQ4OC4uZDYyYTAyZGE1ZDg4IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMzYsNiArMTM2LDcgQEAgQUNfQ09ORklHX0ZJTEVTKFtuZXQtc25tcC1jb25maWc6bmV0LXNubXAtY29uZmlnLmluXSwKKyAJCVtjaG1vZCAreCBuZXQtc25tcC1jb25maWddKQorIEFDX0NPTkZJR19GSUxFUyhbbmV0LXNubXAtY3JlYXRlLXYzLXVzZXI6bmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuaW5dLAorIAkJW2NobW9kICt4IG5ldC1zbm1wLWNyZWF0ZS12My11c2VyXSkKKytBQ19DT05GSUdfRklMRVMoW25ldHNubXAucGM6bmV0c25tcC5wYy5pbiBuZXRzbm1wLWFnZW50LnBjOm5ldHNubXAtYWdlbnQucGMuaW5dKQorIEFDX0NPTkZJR19GSUxFUyhbZGlzdC9nZW5lcmF0aW9uLXNjcmlwdHMvZ2VuLXZhcmlhYmxlczpkaXN0L2dlbmVyYXRpb24tc2NyaXB0cy9nZW4tdmFyaWFibGVzLmluXSkKKyBBQ19DT05GSUdfRklMRVMoW2xvY2FsL3NubXBjb25mXSkKKyAKK2RpZmYgLS1naXQgYS9uZXRzbm1wLWFnZW50LnBjLmluIGIvbmV0c25tcC1hZ2VudC5wYy5pbgorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwMC4uM2ExYzc3YmJmODE0CistLS0gL2Rldi9udWxsCisrKysgYi9uZXRzbm1wLWFnZW50LnBjLmluCitAQCAtMCwwICsxLDEyIEBACisrcHJlZml4PUBwcmVmaXhACisrZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorK2luY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisrbGliZGlyPUBsaWJkaXJACisrCisrTmFtZTogbmV0c25tcC1hZ2VudCAoQFBBQ0tBR0VfTkFNRUApCisrRGVzY3JpcHRpb246IFNOTVAgKFNpbXBsZSBOZXR3b3JrIE1hbmFnZW1lbnQgUHJvdG9jb2wpIHN1Yi1hZ2VudCBTREsuCisrVVJMOiBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZworK1ZlcnNpb246IEBQQUNLQUdFX1ZFUlNJT05ACisrQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0KKytMaWJzOiAtTCR7bGliZGlyfSAtbG5ldHNubXBtaWJzIC1sbmV0c25tcGFnZW50IC1sbmV0c25tcAorK0xpYnMucHJpdmF0ZTogQExERkxBR1NAIEBMTUlCTElCU0AgQExBR0VOVExJQlNAIEBQRVJMTERPUFRTX0ZPUl9BUFBTQCBATE5FVFNOTVBMSUJTQCBATElCU0AKK2RpZmYgLS1naXQgYS9uZXRzbm1wLnBjLmluIGIvbmV0c25tcC5wYy5pbgorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwMC4uMGExZjU3ODVhNGY0CistLS0gL2Rldi9udWxsCisrKysgYi9uZXRzbm1wLnBjLmluCitAQCAtMCwwICsxLDEyIEBACisrcHJlZml4PUBwcmVmaXhACisrZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorK2luY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisrbGliZGlyPUBsaWJkaXJACisrCisrTmFtZTogbmV0c25tcCAoQFBBQ0tBR0VfTkFNRUApCisrRGVzY3JpcHRpb246IFNOTVAgKFNpbXBsZSBOZXR3b3JrIE1hbmFnZW1lbnQgUHJvdG9jb2wpIGRhZW1vbiBhbmQgYXBwbGljYXRpb25zLgorK1VSTDogaHR0cDovL3d3dy5uZXQtc25tcC5vcmcKKytWZXJzaW9uOiBAUEFDS0FHRV9WRVJTSU9OQAorK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9CisrTGliczogLUwke2xpYmRpcn0gLWxuZXRzbm1wCisrTGlicy5wcml2YXRlOiBATERGTEFHU0AgQExORVRTTk1QTElCU0AgQExJQlNAIEBQRVJMTERPUFRTX0ZPUl9BUFBTQAorLS0gCisyLjIxLjAuMTk2LmcwNDFmNWVhMWNmOTgKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wXzUuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcF81LjguYmIKaW5kZXggMTkyYjZiNS4uNTQ2NjY0OSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wXzUuOC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXBfNS44LmJiCkBAIC0yNyw2ICsyNyw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9yZXByb2R1Y2liaWxpdHktaGF2ZS1wcmludGNhcC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9yZXByb2R1Y2liaWxpdHktYWNjZXB0LWNvbmZpZ3VyZS1vcHRpb25zLWZyb20tZW52LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbmV0LXNubXAtZml4LWNvbXBpbGUtZXJyb3ItZGlzYWJsZS1kZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtcGtnLWNvbmZpZy1zdXBwb3J0LWZvci1idWlsZGluZy1hcHBsaWNhdGlvbnMtYW5kLnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjYzYmZjNjVmYmI4NmNkYjYxNjU5OGRmMWFmZjY0NThhIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImIyZmMzNTAwODQwZWJlNTMyNzM0YzQ3ODZiMGRhNGVmMGE1ZjY3ZTUxZWY0Yzg2YjMzNDVkNjk3ZTQ5NzZhZGYiCkBAIC0zNCw3ICszNSw3IEBACiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbmV0LXNubXAvZmlsZXMvbmV0LXNubXAvIgogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL25ldC1zbm1wLyg/UDxwdmVyPlxkKyhcLlxkKykrKS8iCiAKLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtcmMuZCBzaXRlaW5mbyBzeXN0ZW1kIHBrZ2NvbmZpZyBwZXJsbmF0aXZlIHB0ZXN0Citpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQgc2l0ZWluZm8gc3lzdGVtZCBwa2djb25maWcgcGVybG5hdGl2ZSBwdGVzdCBtdWx0aWxpYl9zY3JpcHQgbXVsdGlsaWJfaGVhZGVyCiAKIEVYVFJBX09FTUFLRSA9ICJJTlNUQUxMX1BSRUZJWD0ke0R9IE9USEVSTERGTEFHUz0nJHtMREZMQUdTfScgSE9TVF9DUFBGTEFHUz0nJHtCVUlMRF9DUFBGTEFHU30nIgogCkBAIC0xMjMsMTEgKzEyNCwxNCBAQAogICAgICAgICAtaSAke0R9JHtiaW5kaXJ9L25ldC1zbm1wLWNyZWF0ZS12My11c2VyCiAgICAgc2VkIC1lICdzQF5OU0NfU1JDRElSPS4qQE5TQ19TUkNESVI9LkBnJyBcCiAgICAgICAgIC1lICdzQFteIF0qLWZkZWJ1Zy1wcmVmaXgtbWFwPVteICJdKkBAZycgXAorICAgICAgICAtZSAnc0BbXiBdKi1mbWFjcm8tcHJlZml4LW1hcD1bXiAiXSpAQGcnIFwKICAgICAgICAgLWUgJ3NAW14gXSotLXN5c3Jvb3Q9W14gIl0qQEBnJyBcCiAgICAgICAgIC1lICdzQFteIF0qLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1bXiAiXSpAQGcnIFwKICAgICAgICAgLWUgJ3NAW14gXSotLXdpdGgtaW5zdGFsbC1wcmVmaXg9W14gIl0qQEBnJyBcCiAgICAgICAgIC1lICdzQFteIF0qUEtHX0NPTkZJR19QQVRIPVteICJdKkBAZycgXAogICAgICAgICAtZSAnc0BbXiBdKlBLR19DT05GSUdfTElCRElSPVteICJdKkBAZycgXAorICAgICAgICAtZSAnc0AtTCR7U1RBR0lOR19ESVJfSE9TVH0ke2xpYmRpcn1AQGcnIFwKKyAgICAgICAgLWUgJ3NALUkke1NUQUdJTkdfRElSX0hPU1R9JHtpbmNsdWRlZGlyfUBAZycgXAogICAgICAgICAtaSAke0R9JHtiaW5kaXJ9L25ldC1zbm1wLWNvbmZpZwogCiAgICAgaWYgWyAiJHtIQVNfUEVSTH0iID0gIjEiIF07IHRoZW4KQEAgLTEzNSw2ICsxMzksOCBAQAogICAgICAgICAgICAgLWUgInNAXk5TQ19MSUJESVI9LUwuKkBOU0NfTElCRElSPS1MXCRce2xpYmRpclx9QGciIFwKICAgICAgICAgICAgIC1pICR7RH0ke2JpbmRpcn0vbmV0LXNubXAtY29uZmlnCiAgICAgZmkKKworICAgIG9lX211bHRpbGliX2hlYWRlciBuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogfQogCiBkb19pbnN0YWxsX3B0ZXN0KCkgewpAQCAtMjY3LDMgKzI3Myw1IEBACiBSQ09ORkxJQ1RTXyR7UE59LXNlcnZlci1zbm1wdHJhcGQgKz0gIiR7UE59LXNlcnZlci1zbm1wdHJhcGQtc3lzdGVtZCIKIAogTEVBRF9TT05BTUUgPSAibGlibmV0c25tcC5zbyIKKworTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfS1kZXY6JHtiaW5kaXJ9L25ldC1zbm1wLWNvbmZpZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubGxkcC9maWxlcy8wMDAxLUZpeC1tdXNsLWxpYmMtYnVpbGQtaXNzdWUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmxsZHAvZmlsZXMvMDAwMS1GaXgtbXVzbC1saWJjLWJ1aWxkLWlzc3VlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwYjA4MmUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmxsZHAvZmlsZXMvMDAwMS1GaXgtbXVzbC1saWJjLWJ1aWxkLWlzc3VlLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gYTY0ZTUyZjliNTg1MTlhYTJiOGExMDczZmE2YzA0ZGEwNDkzMzQyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvbmF0aGFuIFJpY2hhcmRzb24gPGpvbmF0aGFuLnJpY2hhcmRzb25AYnJvYWRjb20uY29tPgorRGF0ZTogV2VkLCAyNiBGZWIgMjAyMCAxMjoxNjozOCAtMDgwMAorU3ViamVjdDogW1BBVENIXSBGaXggbXVzbCBsaWJjIGJ1aWxkIGlzc3VlCisKK2NsaWYuaCBzaG91bGQgaW5jbHVkZSBzeXMvdHlwZXMuaCBmb3IgdGhlIGRlZmluaXRpb24gb2YgcGlkX3QuIEl0IGZhaWxzCit0byBjb21waWxlIHdoZW4gdXNpbmcgbXVzbCBsaWJjLgorCitTaWduZWQtb2ZmLWJ5OiBKb25hdGhhbiBSaWNoYXJkc29uIDxqb25hdGhhbi5yaWNoYXJkc29uQGJyb2FkY29tLmNvbT4KKworLS0tCisgaW5jbHVkZS9jbGlmLmggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvY2xpZi5oIGIvaW5jbHVkZS9jbGlmLmgKK2luZGV4IDY0OGVlZGYuLjkyZjRmZDggMTAwNjQ0CistLS0gYS9pbmNsdWRlL2NsaWYuaAorKysrIGIvaW5jbHVkZS9jbGlmLmgKK0BAIC0zMiw2ICszMiw3IEBACisgI2lmbmRlZiBDTElGX0gKKyAjZGVmaW5lIENMSUZfSAorIAorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3VuLmg+CisgI2luY2x1ZGUgImNsaWZfc29jay5oIgorIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sbGRwL2ZpbGVzLzAwMDEtYXV0b3Rvb2xzLUFkZC1pbmNsdWRlLXBhdGgtdG8tZ2VuZXJhdGVkLXZlcnNpb24uaC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubGxkcC9maWxlcy8wMDAxLWF1dG90b29scy1BZGQtaW5jbHVkZS1wYXRoLXRvLWdlbmVyYXRlZC12ZXJzaW9uLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU4ZmMxMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubGxkcC9maWxlcy8wMDAxLWF1dG90b29scy1BZGQtaW5jbHVkZS1wYXRoLXRvLWdlbmVyYXRlZC12ZXJzaW9uLmgucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSBlYjE0YWE2NmRjMDM4NDA3MWFmNDAxY2NlZDhjMDI5OTNiNTU1MDJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9uYXRoYW4gUmljaGFyZHNvbiA8am9uYXRoYW4ucmljaGFyZHNvbkBicm9hZGNvbS5jb20+CitEYXRlOiBXZWQsIDI2IEZlYiAyMDIwIDE1OjU0OjUxIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGF1dG90b29sczogQWRkIGluY2x1ZGUgcGF0aCB0byBnZW5lcmF0ZWQgdmVyc2lvbi5oCisKK1doZW4gdGhlIGJ1aWxkIGRpciBpc24ndCB0aGUgc2FtZSBhcyBzb3VyY2UgZGlyIGl0IGZhaWxzIHRvIGNvbXBpbGUKK2JlY2F1c2UgdGhlIGdlbmVyYXRlZCB2ZXJzaW9uLmggZnJvbSBBQ19DT05GSUdfRklMRVMgaXMgYWx3YXlzIGluIGJ1aWxkCitkaXIuIEluY2x1ZGUgdGhlIHBhdGggdG8gaXQgaW4gQU1fQ1BQRkxBR1MuCisKK1NpZ25lZC1vZmYtYnk6IEpvbmF0aGFuIFJpY2hhcmRzb24gPGpvbmF0aGFuLnJpY2hhcmRzb25AYnJvYWRjb20uY29tPgorCistLS0KKyBNYWtlZmlsZS5hbSB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggMGZiOWJiMC4uMjk1MjAxOSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTE0LDYgKzE0LDkgQEAgZW5kaWYKKyBBTV9DUFBGTEFHUyA9IC1JJHtzcmNkaXJ9L2luY2x1ZGUgLURTWVNDT05GRElSPSJcIiR7c3lzY29uZmRpcn1cIiIgXAorIAktRF9GT1JUSUZZX1NPVVJDRT0yCisgCisrIyBSZXF1aXJlZCBmb3IgdGhlIGdlbmVyYXRlZCB2ZXJzaW9uLmggd2hlbiBidWlsZCBkaXIgaXMgbm90IHRoZSBzYW1lIGFzIHNyY2Rpci4KKytBTV9DUFBGTEFHUyArPSAtSSR7dG9wX2J1aWxkZGlyfS9pbmNsdWRlCisrCisgQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQKKyAKKyBwYXJzZV9jbGkubzogQ0ZMQUdTKz0tVV9GT1JUSUZZX1NPVVJDRSAtV25vLWVycm9yCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmxsZHAvZmlsZXMvMDAwMS1hdXRvdG9vbHMtQWRkLW9wdGlvbi10by1kaXNhYmxlLWluc3RhbGxhdGlvbi1vZi1zeXN0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sbGRwL2ZpbGVzLzAwMDEtYXV0b3Rvb2xzLUFkZC1vcHRpb24tdG8tZGlzYWJsZS1pbnN0YWxsYXRpb24tb2Ytc3lzdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjZhNTI5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sbGRwL2ZpbGVzLzAwMDEtYXV0b3Rvb2xzLUFkZC1vcHRpb24tdG8tZGlzYWJsZS1pbnN0YWxsYXRpb24tb2Ytc3lzdC5wYXRjaApAQCAtMCwwICsxLDU3IEBACitGcm9tIGRjM2YyMjUwOTA4NTg3NzEwZjEwOWM4MGRkZjhhOTRmMGJjNDBiODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb25hdGhhbiBSaWNoYXJkc29uIDxqb25hdGhhbi5yaWNoYXJkc29uQGJyb2FkY29tLmNvbT4KK0RhdGU6IEZyaSwgNiBBcHIgMjAxOCAxMDo0OTowNCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBhdXRvdG9vbHM6IEFkZCBvcHRpb24gdG8gZGlzYWJsZSBpbnN0YWxsYXRpb24gb2Ygc3lzdGVtZCBjb25mCisgZmlsZXMKKworQWRkIG9wdGlvbiB0byBjb25maWd1cmUuYWMgdG8gZW5hYmxlIG9yIGRpc2FibGUgaW5zdGFsbCBvZiBzeXN0ZW1kIGNvbmYKK2ZpbGVzLiBJZiAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXIgaXMgcGFzc2VkIHRvIGNvbmZpZ3VyZSB0aGVuIHRoZQorZmlsZXMgd2lsbCBiZSBpbnN0YWxsZWQgdG8gdGhlIHByb3ZpZGVkIGRpcmVjdG9yeS4gSWYgdGhlIG9wdGlvbiBpc24ndAorcHJvdmlkZWQgdGhlbiB0aGUgdmFsdWUgaXMgZGV0ZXJtaW5lZCBmcm9tIHRoZSBzeXN0ZW1kIHBrZ2NvbmZpZyBmaWxlLAoraWYgZm91bmQgaW4gUEtHX0NPTkZJR19QQVRILgorCitUaGlzIGNoYW5nZSBpcyByZXF1aXJlZCBiZWNhdXNlIE1ha2VmaWxlLmFtIGFsd2F5cyBpbnN0YWxsZWQgdGhlIGZpbGVzCit0byBhIGhhcmQgY29kZWQgcGF0aCB0aGF0IGNvdWxkbid0IGJlIGNoYW5nZWQuCisKKworU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gUmljaGFyZHNvbiA8am9uYXRoYW4ucmljaGFyZHNvbkBicm9hZGNvbS5jb20+CistLS0KKyBNYWtlZmlsZS5hbSAgfCAzICsrLQorIGNvbmZpZ3VyZS5hYyB8IDkgKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCAyOTJjMGZkLi4wZmI5YmIwIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMTM4LDggKzEzOCw5IEBAIGluc3RhbGwtZGF0YS1ob29rOglpbnN0YWxsZGlycy1sb2NhbAorIHBrZ2NvbmZpZ2RpciA9ICR7bGliZGlyfS9wa2djb25maWcKKyBwa2djb25maWdfREFUQSA9IGxsZHBhZC5wYyBsaWJsbGRwX2NsaWYucGMKKyAKKy1zeXN0ZW1kc3lzdGVtdW5pdGRpciA9ICQocHJlZml4KS9saWIvc3lzdGVtZC9zeXN0ZW0KKytpZiBIQVZFX1NZU1RFTUQKKyBkaXN0X3N5c3RlbWRzeXN0ZW11bml0X0RBVEEgPSBsbGRwYWQuc2VydmljZSBsbGRwYWQuc29ja2V0CisrZW5kaWYKKyAKKyBiYXNoY29tcGxldGlvbmRpciA9ICQoc3lzY29uZmRpcikvYmFzaF9jb21wbGV0aW9uLmQKKyBkaXN0X2Jhc2hjb21wbGV0aW9uX0RBVEEgPSBjb250cmliL2Jhc2hfY29tcGxldGlvbi9sbGRwYWQgY29udHJpYi9iYXNoX2NvbXBsZXRpb24vbGxkcHRvb2wKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDA2Njc0NDYuLmY3NWY0MzMgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTk1LDYgKzk1LDE1IEBAIEFDX1RZUEVfVUlOVDE2X1QKKyBBQ19UWVBFX1VJTlQzMl9UCisgQUNfVFlQRV9VSU5UOF9UCisgCisrIyBTdXBwb3J0IGZvciBzeXN0ZW1kIHVuaXQgZmlsZXMuCisrQUNfQVJHX1dJVEgoW3N5c3RlbWRzeXN0ZW11bml0ZGlyXSwKKysgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9RElSXSwgW0RpcmVjdG9yeSBmb3Igc3lzdGVtZCBzZXJ2aWNlIGZpbGVzXSksCisrICAgICAgICBbXSwgW3dpdGhfc3lzdGVtZHN5c3RlbXVuaXRkaXI9JCgkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXN5c3RlbWRzeXN0ZW11bml0ZGlyIHN5c3RlbWQpXSkKKytpZiB0ZXN0ICJ4JHdpdGhfc3lzdGVtZHN5c3RlbXVuaXRkaXIiICE9IHhubzsgdGhlbgorKyAgICAgICAgQUNfU1VCU1QoW3N5c3RlbWRzeXN0ZW11bml0ZGlyXSwgWyR3aXRoX3N5c3RlbWRzeXN0ZW11bml0ZGlyXSkKKytmaQorK0FNX0NPTkRJVElPTkFMKEhBVkVfU1lTVEVNRCwgW3Rlc3QgLW4gIiR3aXRoX3N5c3RlbWRzeXN0ZW11bml0ZGlyIiAtYSAieCR3aXRoX3N5c3RlbWRzeXN0ZW11bml0ZGlyIiAhPSB4bm8gXSkKKysKKyBBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlIGluY2x1ZGUvdmVyc2lvbi5oIGxsZHBhZC5zcGVjIGxsZHBhZC5wYyBsaWJsbGRwX2NsaWYucGNdKQorIEFDX0NPTkZJR19NQUNST19ESVIoW200XSkKKyBBQ19PVVRQVVQKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubGxkcC9vcGVubGxkcF8xLjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubGxkcC9vcGVubGxkcF8xLjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmJmMDY0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sbGRwL29wZW5sbGRwXzEuMC4xLmJiCkBAIC0wLDAgKzEsMzMgQEAKK1NVTU1BUlkgPSAiT3Blbi1MTERQIgorREVTQ1JJUFRJT04gPSAiTGluayBMYXllciBEaXNjb3ZlcnkgUHJvdG9jb2wgZm9yIExpbnV4IHRoYXQgaW5jbHVkZXMgc3VwcG9ydCBmb3IgRENCWCIKK0hPTUVQQUdFID0gImh0dHA6Ly9vcGVuLWxsZHAub3JnL3N0YXJ0IgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGMyYmMyODNlNjVkZjM5OGNlZDVmNWI3NDdlNzgxNjIiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgcGtnY29uZmlnIGF1dG90b29scworaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnc3lzdGVtZCcsICcnLCBkKX0KKworREVQRU5EUyA9ICJsaWJubCBsaWJjb25maWcgcmVhZGxpbmUiCisKK1NSQ1JFViA9ICIzNmQ3MjlkZTdjZTViNTZjZjA2MWQ5NGQ2MTBjZjA1MTAxNTQ4MjBjIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ludGVsL29wZW5sbGRwLmdpdDtwcm90b2NvbD1odHRwczticmFuY2g9bWFzdGVyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LW11c2wtbGliYy1idWlsZC1pc3N1ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWF1dG90b29scy1BZGQtaW5jbHVkZS1wYXRoLXRvLWdlbmVyYXRlZC12ZXJzaW9uLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hdXRvdG9vbHMtQWRkLW9wdGlvbi10by1kaXNhYmxlLWluc3RhbGxhdGlvbi1vZi1zeXN0LnBhdGNoIFwKKyAgICAgICAgICAgIgorCisjIE1ha2VmaWxlLmFtIGFkZHMgLVdlcnJvciB0byBBTV9DRkxBR1MuIFRoZXJlIGFyZSB3YXJuaW5ncyBzbyBkaXNhYmxlIGl0LgorVEFSR0VUX0NGTEFHUyArPSAiLVduby1lcnJvciIKKworIyBFbmFibGUgaW5zdGFsbCBvZiBzeXN0ZW1kIGNvbmYgZmlsZXMuCitFWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICctLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfScsICcnLCBkKX0iCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJsbGRwYWQuc2VydmljZSBsbGRwYWQuc29ja2V0IgorCisjIFRvIGVuYWJsZSBzZXJ2aWNlIGF0IGJvb3Qgc2V0IHRvIGVuYWJsZSBpbiBsb2NhbC5jb25mLgorU1lTVEVNRF9BVVRPX0VOQUJMRSA/PSAiZGlzYWJsZSIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAiaXByb3V0ZTItdGMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcHB0cC1saW51eC9wcHRwLWxpbnV4XzEuMTAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9wcHRwLWxpbnV4L3BwdHAtbGludXhfMS4xMC4wLmJiCmluZGV4IDMyMjE1ODEuLjUzYTc5YWYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9wcHRwLWxpbnV4L3BwdHAtbGludXhfMS4xMC4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9wcHRwLWxpbnV4L3BwdHAtbGludXhfMS4xMC4wLmJiCkBAIC05LDYgKzksOCBAQAogTElDRU5TRSA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKIAoraW5oZXJpdCBwZXJsbmF0aXZlCisKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3NvdXJjZWZvcmdlL3BwdHBjbGllbnQvcHB0cC0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vb3B0aW9ucy5wcHRwIFwKICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3F1YWdnYS9xdWFnZ2EuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3F1YWdnYS9xdWFnZ2EuaW5jCmluZGV4IGRmZDZhYTcuLjEzNGEzM2QgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9xdWFnZ2EvcXVhZ2dhLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcXVhZ2dhL3F1YWdnYS5pbmMKQEAgLTQwLDcgKzQwLDcgQEAKIFBBQ0tBR0VDT05GSUdbY2FwXSA9ICItLWVuYWJsZS1jYXBhYmlsaXRpZXMsLS1kaXNhYmxlLWNhcGFiaWxpdGllcyxsaWJjYXAiCiBQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLWxpYnBhbSwgLS13aXRob3V0LWxpYnBhbSwgbGlicGFtIgogCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCB1c2VyYWRkIHN5c3RlbWQgcGtnY29uZmlnCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCB1c2VyYWRkIHN5c3RlbWQgcGtnY29uZmlnIG11bHRpbGliX2hlYWRlcgogCiBTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWJncGQgJHtQTn0taXNpc2QgJHtQTn0tb3NwZjZkICR7UE59LW9zcGZkICR7UE59LXJpcGQgJHtQTn0tcmlwbmdkIgogU1lTVEVNRF9TRVJWSUNFXyR7UE59LWJncGQgPSAiYmdwZC5zZXJ2aWNlIgpAQCAtMTA2LDYgKzEwNiw5IEBACiAgICAgc2VkIC1pICdzIS9ldGMvISR7c3lzY29uZmRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8qICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvd2F0Y2hxdWFnZ2EKICAgICBzZWQgLWkgJ3MhL3Zhci8hJHtsb2NhbHN0YXRlZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLyogJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvdm9sYXRpbGVzLjAzX3F1YWdnYQogICAgIHNlZCAtaSAncyFeUEFUSD0uKiFQQVRIPSR7YmFzZV9zYmluZGlyfToke3NiaW5kaXJ9OiR7YmFzZV9iaW5kaXJ9OiR7YmluZGlyfSEnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8qCisgICAgc2VkIC1pICdzIS0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9W14gIl0qISEnICR7RH0ke2luY2x1ZGVkaXJ9L3F1YWdnYS92ZXJzaW9uLmgKKworICAgIG9lX211bHRpbGliX2hlYWRlciBxdWFnZ2EvdmVyc2lvbi5oCiAKICAgICAjIEZvciBQQU0KICAgICBmb3IgZmVhdHVyZSBpbiAke0RJU1RST19GRUFUVVJFU307IGRvCkBAIC0xMTYsOSArMTE5LDkgQEAKICAgICBkb25lCiAKICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKLSAgICAgICAgZWNobyAiZCAvdmFyL3J1bi9xdWFnZ2EgMDc1NSBxdWFnZ2EgcXVhZ2dhIC0iIFwKLSAgICAgICAgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLyR7QlBOfS5jb25mCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L3RtcGZpbGVzLmQKKyAgICAgICAgZWNobyAiZCAvcnVuL3F1YWdnYSAwNzU1IHF1YWdnYSBxdWFnZ2EgLSIgXAorICAgICAgICA+ICR7RH0ke25vbmFyY2hfbGliZGlyfS90bXBmaWxlcy5kLyR7QlBOfS5jb25mCiAgICAgZmkKIAogICAgICMgUmVtb3ZlIHN5c2luaXQgc2NyaXB0IGlmIHN5c3Zpbml0IGlzIG5vdCBpbiBESVNUUk9fRkVBVFVSRVMKQEAgLTE2Niw2ICsxNjksOCBAQAogRklMRVNfJHtQTn0td2F0Y2hxdWFnZ2EgPSAiJHtzYmluZGlyfS93YXRjaHF1YWdnYSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvd2F0Y2hxdWFnZ2EgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvd2F0Y2hxdWFnZ2EiCiAKK0ZJTEVTXyR7UE59ICs9ICIke25vbmFyY2hfbGliZGlyfS90bXBmaWxlcy5kLyouY29uZiIKKwogIyBJbmRpY2F0ZSB0aGF0IHRoZSBkZWZhdWx0IGZpbGVzIGFyZSBjb25maWd1cmF0aW9uIGZpbGVzCiBDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9kZWZhdWx0L3F1YWdnYSBcCiAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9xdWFnZ2EvYmdwZC5jb25mIFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy91c3JzY3RwL3VzcnNjdHBfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3VzcnNjdHAvdXNyc2N0cF9naXQuYmIKaW5kZXggYTVhNTYwNS4uNGY4ZTRkNCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3VzcnNjdHAvdXNyc2N0cF9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3VzcnNjdHAvdXNyc2N0cF9naXQuYmIKQEAgLTgsNiArOCw4IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKKwogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCiAKIERFUEVORFMgKz0gIm9wZW5zc2wiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2FycHRhYmxlcy9hcnB0YWJsZXMvMDAwMS1Vc2UtQVJQQ0ZMQUdTLWZvci1wYWNrYWdlLXNwZWNpZmljLWNvbXBpbGVyLWZsYWdzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9hcnB0YWJsZXMvYXJwdGFibGVzLzAwMDEtVXNlLUFSUENGTEFHUy1mb3ItcGFja2FnZS1zcGVjaWZpYy1jb21waWxlci1mbGFncy5wYXRjaAppbmRleCBlOGJlNDVlLi5lYjU4Mzg5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2FycHRhYmxlcy9hcnB0YWJsZXMvMDAwMS1Vc2UtQVJQQ0ZMQUdTLWZvci1wYWNrYWdlLXNwZWNpZmljLWNvbXBpbGVyLWZsYWdzLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYXJwdGFibGVzL2FycHRhYmxlcy8wMDAxLVVzZS1BUlBDRkxBR1MtZm9yLXBhY2thZ2Utc3BlY2lmaWMtY29tcGlsZXItZmxhZ3MucGF0Y2gKQEAgLTgsMjQgKzgsMTcgQEAKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIC0tLQotIE1ha2VmaWxlICAgICAgICAgICAgfCAxNSArKysrKysrLS0tLS0tLS0KLSBleHRlbnNpb25zL01ha2VmaWxlIHwgIDUgKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisgTWFrZWZpbGUgICAgICAgICAgICB8IDEwICsrKystLS0tLS0KKyBleHRlbnNpb25zL01ha2VmaWxlIHwgIDQgKysrKworIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggN2JlYWQwZC4uMzM2ZGI2YiAxMDA2NDQKK2luZGV4IDYyZWJkZjIuLmNkMDY4MTMgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZQogKysrIGIvTWFrZWZpbGUKLUBAIC03LDE1ICs3LDEzIEBAIExJQkRJUjo9JChQUkVGSVgpL2xpYgotIEJJTkRJUjo9JChQUkVGSVgpL3NiaW4KLSBNQU5ESVI6PSQoUFJFRklYKS9tYW4KLSBtYW44ZGlyPSQoTUFORElSKS9tYW44Ci0tSU5JVERJUjo9L2V0Yy9yYy5kL2luaXQuZAotK0lOSVRESVI6PS9ldGMvaW5pdC5kCi0gU1lTQ09ORklHRElSOj0vZXRjL3N5c2NvbmZpZwotIERFU1RESVI6PQorQEAgLTEyLDkgKzEyLDcgQEAgREVTVERJUjo9CiAgCi0gTUFOUyA9IGFycHRhYmxlcy44IGFycHRhYmxlcy1zYXZlLjggYXJwdGFibGVzLXJlc3RvcmUuOAorIE1BTlMgPSBhcnB0YWJsZXMtbGVnYWN5LjggYXJwdGFibGVzLXNhdmUuOCBhcnB0YWJsZXMtcmVzdG9yZS44CiAgCiAtQ09QVF9GTEFHUzo9LU8yCiAtQ0ZMQUdTOj0kKENPUFRfRkxBR1MpIC1XYWxsIC1XdW51c2VkIC1JJChLRVJORUxfRElSKS9pbmNsdWRlLyAtSWluY2x1ZGUvIC1EQVJQVEFCTEVTX1ZFUlNJT049XCIkKEFSUFRBQkxFU19WRVJTSU9OKVwiICMtZyAtRERFQlVHICMtcGcgIyAtREFSUFRDX0RFQlVHCkBAIC0zNCw4ICsyNyw4IEBACiAgaWZuZGVmIEFSUFRfTElCRElSCiAgQVJQVF9MSUJESVI6PSQoTElCRElSKS9hcnB0YWJsZXMKICBlbmRpZgotQEAgLTI1LDEzICsyMywxMyBAQCBpbmNsdWRlIGV4dGVuc2lvbnMvTWFrZWZpbGUKLSBhbGw6IGFycHRhYmxlcyBsaWJhcnB0Yy9saWJhcnB0Yy5hCitAQCAtMjQsMTMgKzIyLDEzIEBAIGluY2x1ZGUgZXh0ZW5zaW9ucy9NYWtlZmlsZQorIGFsbDogYXJwdGFibGVzLWxlZ2FjeSBsaWJhcnB0Yy9saWJhcnB0Yy5hCiAgCiAgYXJwdGFibGVzLm86IGFycHRhYmxlcy5jCiAtCSQoQ0MpICQoQ0ZMQUdTKSAtYyAtbyAkQCAkPApAQCAtNTEsMjkgKzQ0LDE4IEBACiAgCiAgbGliYXJwdGMvbGliYXJwdGMuYTogbGliYXJwdGMvbGliYXJwdGMubwogIAkkKEFSKSByY3MgJEAgJDwKLUBAIC01Myw3ICs1MSw4IEBAIHNjcmlwdHM6IGFycHRhYmxlcy1zYXZlIGFycHRhYmxlcy1yZXN0b3JlIGFycHRhYmxlcy5zeXN2Ci0gCWluc3RhbGwgLW0gMDc1NSBhcnB0YWJsZXMtcmVzdG9yZV8gJChERVNURElSKSQoQklORElSKS9hcnB0YWJsZXMtcmVzdG9yZQotIAljYXQgYXJwdGFibGVzLnN5c3YgfCBzZWQgJ3MvX19FWEVDX1BBVEhfXy8kKHRtcDEpL2cnIHwgc2VkICdzL19fU1lTQ09ORklHX18vJCh0bXAyKS9nJyA+IGFycHRhYmxlcy5zeXN2XwotIAlpZiBbICIkKERFU1RESVIpIiAhPSAiIiBdOyB0aGVuIG1rZGlyIC1wICQoREVTVERJUikkKElOSVRESVIpOyBmaQotLQlpZiB0ZXN0IC1kICQoREVTVERJUikkKElOSVRESVIpOyB0aGVuIGluc3RhbGwgLW0gMDc1NSBhcnB0YWJsZXMuc3lzdl8gJChERVNURElSKSQoSU5JVERJUikvYXJwdGFibGVzOyBmaQotKwlpbnN0YWxsIC1kICQoREVTVERJUikkKElOSVRESVIpCi0rCWluc3RhbGwgLW0gMDc1NSBhcnB0YWJsZXMuc3lzdl8gJChERVNURElSKSQoSU5JVERJUikvYXJwdGFibGVzCi0gCXJtIC1mIGFycHRhYmxlcy1zYXZlXyBhcnB0YWJsZXMtcmVzdG9yZV8gYXJwdGFibGVzLnN5c3ZfCi0gCi0gLlBIT05ZOiBpbnN0YWxsLW1hbgogZGlmZiAtLWdpdCBhL2V4dGVuc2lvbnMvTWFrZWZpbGUgYi9leHRlbnNpb25zL01ha2VmaWxlCi1pbmRleCAwMTg5Y2M5Li5iMDQ2NDI1IDEwMDY0NAoraW5kZXggMDE4OWNjOS4uZThhZjc4MiAxMDA2NDQKIC0tLSBhL2V4dGVuc2lvbnMvTWFrZWZpbGUKICsrKyBiL2V4dGVuc2lvbnMvTWFrZWZpbGUKLUBAIC00LDQgKzQsNyBAQCBFWFRfRlVOQys9c3RhbmRhcmQgbWFuZ2xlIENMQVNTSUZZIE1BUksKLSBFWFRfT0JKUys9JChmb3JlYWNoIFQsJChFWFRfRlVOQyksIGV4dGVuc2lvbnMvYXJwdF8kKFQpLm8pCitAQCAtNSwzICs1LDcgQEAgRVhUX09CSlMrPSQoZm9yZWFjaCBULCQoRVhUX0ZVTkMpLCBleHRlbnNpb25zL2FycHRfJChUKS5vKQogIAogIGV4dGVuc2lvbnMvZWJ0XyUubzogZXh0ZW5zaW9ucy9hcnB0XyUuYyBpbmNsdWRlL2FycHRhYmxlcy5oIGluY2x1ZGUvYXJwdGFibGVzX2NvbW1vbi5oCi0tCSQoQ0MpICQoQ0ZMQUdTKSAkKFBST0dTUEVDUykgLWMgLW8gJEAgJDwKKyAJJChDQykgJChDRkxBR1MpICQoUFJPR1NQRUNTKSAtYyAtbyAkQCAkPAogKwkkKENDKSAkKENGTEFHUykgJChBUlBDRkxBR1MpICQoUFJPR1NQRUNTKSAtYyAtbyAkQCAkPAogKwogK2V4dGVuc2lvbnMvYXJwdF8lLm86IGV4dGVuc2lvbnMvYXJwdF8lLmMgaW5jbHVkZS9hcnB0YWJsZXMuaCBpbmNsdWRlL2FycHRhYmxlc19jb21tb24uaAogKwkkKENDKSAkKENGTEFHUykgJChBUlBDRkxBR1MpICQoUFJPR1NQRUNTKSAtYyAtbyAkQCAkPAogLS0gCi0yLjEyLjEKKzIuMTcuMQogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2FycHRhYmxlcy9hcnB0YWJsZXMvYXJwdGFibGVzLWluaXQtYnVzeWJveC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYXJwdGFibGVzL2FycHRhYmxlcy9hcnB0YWJsZXMtaW5pdC1idXN5Ym94LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDk1NmM0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYXJwdGFibGVzL2FycHRhYmxlcy9hcnB0YWJsZXMtaW5pdC1idXN5Ym94LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotSW5kZXg6IGFycHRhYmxlcy12MC4wLjMtNC9hcnB0YWJsZXMuc3lzdgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGFycHRhYmxlcy12MC4wLjMtNC5vcmlnL2FycHRhYmxlcy5zeXN2CTIwMTAtMDMtMjIgMTY6Mjg6MDMuMDAwMDAwMDAwICswMzAwCi0rKysgYXJwdGFibGVzLXYwLjAuMy00L2FycHRhYmxlcy5zeXN2CTIwMTAtMDMtMjIgMTY6Mjc6NTEuMDAwMDAwMDAwICswMzAwCi1AQCAtMTIsMTAgKzEyLDEwIEBACi0gIyBjb25maWc6IF9fU1lTQ09ORklHX18vYXJwdGFibGVzCi0gCi0gc291cmNlIC9ldGMvaW5pdC5kL2Z1bmN0aW9ucwotLXNvdXJjZSAvZXRjL3N5c2NvbmZpZy9uZXR3b3JrCi0rIyBzb3VyY2UgL2V0Yy9zeXNjb25maWcvbmV0d29yawotIAotICMgQ2hlY2sgdGhhdCBuZXR3b3JraW5nIGlzIHVwLgotLVsgJHtORVRXT1JLSU5HfSA9ICJubyIgXSAmJiBleGl0IDAKLSsjIFsgJHtORVRXT1JLSU5HfSA9ICJubyIgXSAmJiBleGl0IDAKLSAKLSBbIC14IF9fRVhFQ19QQVRIX18vYXJwdGFibGVzIF0gfHwgZXhpdCAxCi0gWyAteCBfX0VYRUNfUEFUSF9fL2FycHRhYmxlcy1zYXZlIF0gfHwgZXhpdCAxCi1AQCAtMjgsMzIgKzI4LDMwIEBACi0gZGVzYz0iQXJwIGZpbHRlcmluZyIKLSAKLSBzdGFydCgpIHsKLS0JZWNobyAtbiAkIlN0YXJ0aW5nICRkZXNjICgkcHJvZyk6ICIKLSsJZWNobyAtbiAiU3RhcnRpbmcgJGRlc2MgKCRwcm9nKTogIgotIAlfX0VYRUNfUEFUSF9fL2FycHRhYmxlcy1yZXN0b3JlIDwgX19TWVNDT05GSUdfXy9hcnB0YWJsZXMgfHwgUkVUVkFMPTEKLSAKLSAJaWYgWyAkUkVUVkFMIC1lcSAwIF07IHRoZW4KLS0JCXN1Y2Nlc3MgIiRwcm9nIHN0YXJ0dXAiCi0tCQlybSAtZiAvdmFyL2xvY2svc3Vic3lzLyRwcm9nCi0rCQllY2hvICIkcHJvZyBvayIKLSsJCXRvdWNoIC92YXIvbG9jay9zdWJzeXMvJHByb2cKLSAJZWxzZQotLQkJZmFpbHVyZSAiJHByb2cgc3RhcnR1cCIKLSsJCWVjaG8gIiRwcm9nIGZhaWxlZCIKLSAJZmkKLSAKLS0JZWNobwotIAlyZXR1cm4gJFJFVFZBTAotIH0KLSAKLSBzdG9wKCkgewotLQllY2hvIC1uICQiU3RvcHBpbmcgJGRlc2MgKCRwcm9nKTogIgotKwllY2hvIC1uICJTdG9wcGluZyAkZGVzYyAoJHByb2cpOiAiCi0gCV9fRVhFQ19QQVRIX18vYXJwdGFibGVzLXJlc3RvcmUgPCAvZGV2L251bGwgfHwgUkVUVkFMPTEKLSAKLSAJaWYgWyAkUkVUVkFMIC1lcSAwIF07IHRoZW4KLS0JCXN1Y2Nlc3MgIiRwcm9nIHNodXRkb3duIgotLQkJcm0gLWYgJXtfbG9jYWxzdGF0ZWRpcn0vbG9jay9zdWJzeXMvJHByb2cKLSsJCWVjaG8gIiRwcm9nIHN0b3BwZWQiCi0rCQlybSAtZiAvdmFyL2xvY2svc3Vic3lzLyRwcm9nCi0gCWVsc2UKLS0JCWZhaWx1cmUgIiRwcm9nIHNodXRkb3duIgotKwkJZWNobyAiJHByb2cgZmFpbGVkIHRvIHN0b3AiCi0gCWZpCi0gCi0tCWVjaG8KLSAJcmV0dXJuICRSRVRWQUwKLSB9Ci0gCi1AQCAtNjMsMTUgKzYxLDE0IEBACi0gfQotIAotIHNhdmUoKSB7Ci0tCWVjaG8gLW4gJCJTYXZpbmcgJGRlc2MgKCRwcm9nKTogIgotKwllY2hvIC1uICJTYXZpbmcgJGRlc2MgKCRwcm9nKTogIgotIAlfX0VYRUNfUEFUSF9fL2FycHRhYmxlcy1zYXZlID4gX19TWVNDT05GSUdfXy9hcnB0YWJsZXMgfHwgUkVUVkFMPTEKLSAKLSAJaWYgWyAkUkVUVkFMIC1lcSAwIF07IHRoZW4KLS0JCXN1Y2Nlc3MgIiRwcm9nIHNhdmVkIgotKwkJZWNobyAiJHByb2cgc2F2ZWQiCi0gCWVsc2UKLS0JCWZhaWx1cmUgIiRwcm9nIHNhdmVkIgotKwkJZWNobyAiJHByb2cgaXMgbm90IHNhdmVkIgotIAlmaQotLQllY2hvCi0gfQotIAotIGNhc2UgIiQxIiBpbgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9hcnB0YWJsZXMvYXJwdGFibGVzL2FycHRhYmxlcy1yZW1vdmUtYmFzaGlzbS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYXJwdGFibGVzL2FycHRhYmxlcy9hcnB0YWJsZXMtcmVtb3ZlLWJhc2hpc20ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzMzI2NTguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9hcnB0YWJsZXMvYXJwdGFibGVzL2FycHRhYmxlcy1yZW1vdmUtYmFzaGlzbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gY2QzMTJiYzBlMzY4NjQwNDQyODg3OGQyM2I4ODg4Y2JhMDlhMjBlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAxOCBTZXAgMjAxNCAxOTo0Njo1OCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBhcnB0YWJsZXMuc3lzdjogcmVtb3ZlIGJhc2hpc20KLQotVXNlICIuIiB0byByZXBsYWNlIG9mICJzb3VyY2UiLCBhbmQgY2hhbmdlIC9iaW4vYmFzaCB0byAvYmluL3NoLCB0aGUKLWVjaG8gJCJmb28iIHdvcmtzIHdlbGwgaW4gYnVzeWJveC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gYXJwdGFibGVzLnN5c3YgfCAgICA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYXJwdGFibGVzLnN5c3YgYi9hcnB0YWJsZXMuc3lzdgotaW5kZXggN2E5MGJkMi4uNzcxMDM3NiAxMDA2NDQKLS0tLSBhL2FycHRhYmxlcy5zeXN2Ci0rKysgYi9hcnB0YWJsZXMuc3lzdgotQEAgLTEsNCArMSw0IEBACi0tIyEvYmluL2Jhc2gKLSsjIS9iaW4vc2gKLSAjCi0gIyBpbml0IHNjcmlwdCBmb3IgYXJwdGFibGVzCi0gIwotQEAgLTExLDcgKzExLDcgQEAKLSAjCi0gIyBjb25maWc6IF9fU1lTQ09ORklHX18vYXJwdGFibGVzCi0gCi0tc291cmNlIC9ldGMvaW5pdC5kL2Z1bmN0aW9ucwotKy4gL2V0Yy9pbml0LmQvZnVuY3Rpb25zCi0gIyBzb3VyY2UgL2V0Yy9zeXNjb25maWcvbmV0d29yawotIAotICMgQ2hlY2sgdGhhdCBuZXR3b3JraW5nIGlzIHVwLgotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYXJwdGFibGVzL2FycHRhYmxlc19naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2FycHRhYmxlcy9hcnB0YWJsZXNfZ2l0LmJiCmluZGV4IGNlYzFkMWYuLmMwMmExOTkgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYXJwdGFibGVzL2FycHRhYmxlc19naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9hcnB0YWJsZXMvYXJwdGFibGVzX2dpdC5iYgpAQCAtMiwxNSArMiwxMyBAQAogU0VDVElPTiA9ICJuZXQiCiBMSUNFTlNFID0gIkdQTC0yLjAiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9HUEwtMi4wO21kNT04MDFmODA5ODBkMTcxZGQ2NDI1NjEwODMzYTIyZGJlNiIKLVNSQ1JFViA9ICJmNGFiOGY2M2YxMWE3MmYxNDY4N2E2NjQ2ZDA0YWUxYmFlM2ZhNDVmIgotUFYgPSAiMC4wLjQrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiZWZhZTg5NDllMzFmOGIyZWI2MjkwZjM3N2EyODM4NGNlY2FmMTA1YSIKK1BWID0gIjAuMC41K2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gIiBcCiAgICAgZ2l0Oi8vZ2l0Lm5ldGZpbHRlci5vcmcvYXJwdGFibGVzIFwKICAgICBmaWxlOi8vMDAwMS1Vc2UtQVJQQ0ZMQUdTLWZvci1wYWNrYWdlLXNwZWNpZmljLWNvbXBpbGVyLWZsYWdzLnBhdGNoIFwKLSAgICBmaWxlOi8vYXJwdGFibGVzLWluaXQtYnVzeWJveC5wYXRjaCBcCiAgICAgZmlsZTovL2FycHRhYmxlcy1hcnB0LWdldC10YXJnZXQtZml4LnBhdGNoIFwKLSAgICBmaWxlOi8vYXJwdGFibGVzLXJlbW92ZS1iYXNoaXNtLnBhdGNoIFwKICAgICBmaWxlOi8vYXJwdGFibGVzLnNlcnZpY2UgXAogIgogU1JDX1VSSVthcnB0YWJsZXMubWQ1c3VtXSA9ICIxZDRhYjA1NzYxZjA2M2IwNzUxNjQ1ZDhmMmI4ZjhlNSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlcy9jbWFrZS1pbnN0YWxsLWxpYmNhcmVzLnBjLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jLWFyZXMvYy1hcmVzL2NtYWtlLWluc3RhbGwtbGliY2FyZXMucGMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjYWRiMmIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jLWFyZXMvYy1hcmVzL2NtYWtlLWluc3RhbGwtbGliY2FyZXMucGMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotRnJvbSAxMjQxNDMwNDI0NWNjZTZlZjBlOGI5NTQ3OTQ5YmU1MTA5ODQ1MzUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMjQgSnVsIDIwMTggMTM6MzM6MzMgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gY21ha2U6IEluc3RhbGwgbGliY2FyZXMucGMKLQotUHJlcGFyZSBhbmQgaW5zdGFsbCBsaWJjYXJlcy5wYyBmaWxlIGR1cmluZyBjbWFrZSBidWlsZCwgc28gbGlicmFyaWVzCi11c2luZyBwa2ctY29uZmlnIHRvIGZpbmQgbGliY2FyZXMgd2lsbCBub3QgZmFpbC4KLQotU2lnbmVkLW9mZi1ieTogQWxleGV5IEZpcmFnbyA8YWxleGV5X2ZpcmFnb0BtZW50b3IuY29tPgotCi11cGRhdGUgdG8gMS4xNC4wLCBmaXggcGF0Y2ggd2FybmluZwotCi1TaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgotLS0tCi0gQ01ha2VMaXN0cy50eHQgICAgICB8IDIzICsrKysrKysrKysrKysrKysrKysrKysrCi0gbGliY2FyZXMucGMuY21ha2VpbiB8IDIwICsrKysrKysrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmNhcmVzLnBjLmNtYWtlaW4KLQotZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDYwYTg4MGMuLjcxZWFhNTMgMTAwNjQ0Ci0tLS0gYS9DTWFrZUxpc3RzLnR4dAotKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC0xOTMsMjIgKzE5MywzMCBAQCBBRERfREVGSU5JVElPTlMoJHtTWVNGTEFHU30pCi0gCi0gCi0gIyBUZWxsIEMtQXJlcyBhYm91dCBsaWJyYXJpZXMgdG8gZGVwZW5kIG9uCi0rIyBBbHNvIHBhc3MgdGhlc2UgbGlicmFyaWVzIHRvIHBrZy1jb25maWcgZmlsZQotK1NFVChDQVJFU19QUklWQVRFX0xJQlNfTElTVCkKLSBJRiAoSEFWRV9MSUJSRVNPTFYpCi0gCUxJU1QgKEFQUEVORCBDQVJFU19ERVBFTkRFTlRfTElCUyByZXNvbHYpCi0rCUxJU1QgKEFQUEVORCBDQVJFU19QUklWQVRFX0xJQlNfTElTVCAiLWxyZXNvbHYiKQotIEVORElGICgpCi0gSUYgKEhBVkVfTElCTlNMKQotIAlMSVNUIChBUFBFTkQgQ0FSRVNfREVQRU5ERU5UX0xJQlMgbnNsKQotKwlMSVNUIChBUFBFTkQgQ0FSRVNfUFJJVkFURV9MSUJTX0xJU1QgIi1sbnNsIikKLSBFTkRJRiAoKQotIElGIChIQVZFX0xJQlNPQ0tFVCkKLSAJTElTVCAoQVBQRU5EIENBUkVTX0RFUEVOREVOVF9MSUJTIHNvY2tldCkKLSsJTElTVCAoQVBQRU5EIENBUkVTX1BSSVZBVEVfTElCU19MSVNUICItbHNvY2tldCIpCi0gRU5ESUYgKCkKLSBJRiAoSEFWRV9MSUJSVCkKLSAJTElTVCAoQVBQRU5EIENBUkVTX0RFUEVOREVOVF9MSUJTIHJ0KQotKwlMSVNUIChBUFBFTkQgQ0FSRVNfUFJJVkFURV9MSUJTX0xJU1QgIi1scnQiKQotIEVORElGICgpCi0gSUYgKFdJTjMyKQotIAlMSVNUIChBUFBFTkQgQ0FSRVNfREVQRU5ERU5UX0xJQlMgd3MyXzMyKQotKwlMSVNUIChBUFBFTkQgQ0FSRVNfUFJJVkFURV9MSUJTX0xJU1QgIi1sd3MyXzMyIikKLSBFTkRJRiAoKQotIAotK3N0cmluZyAoUkVQTEFDRSAiOyIgIiAiIENBUkVTX1BSSVZBVEVfTElCUyAiJHtDQVJFU19QUklWQVRFX0xJQlNfTElTVH0iKQotIAotICMgV2hlbiBjaGVja2luZyBmb3Igc3ltYm9scywgd2UgbmVlZCB0byBtYWtlIHN1cmUgd2Ugc2V0IHRoZSBwcm9wZXIKLSAjIGhlYWRlcnMsIGxpYnJhcmllcywgYW5kIGRlZmluaXRpb25zIGZvciB0aGUgZGV0ZWN0aW9uIHRvIHdvcmsgcHJvcGVybHkKLUBAIC01MTQsNiArNTIyLDE1IEBAIENPTkZJR1VSRV9GSUxFIChhcmVzX2J1aWxkLmguY21ha2UgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2FyZXNfYnVpbGQuaCkKLSAjIFdyaXRlIGFyZXNfY29uZmlnLmggY29uZmlndXJhdGlvbiBmaWxlLiAgVGhpcyBpcyB1c2VkIG9ubHkgZm9yIHRoZSBidWlsZC4KLSBDT05GSUdVUkVfRklMRSAoYXJlc19jb25maWcuaC5jbWFrZSAke1BST0pFQ1RfQklOQVJZX0RJUn0vYXJlc19jb25maWcuaCkKLSAKLSsjIFBhc3MgcmVxdWlyZWQgQ0ZMQUdTIHRvIHBrZy1jb25maWcgaW4gY2FzZSBvZiBzdGF0aWMgbGlicmFyeQotK0lGIChDQVJFU19TVEFUSUMpCi0rICAgICAgIFNFVCAoQ1BQRkxBR19DQVJFU19TVEFUSUNMSUIgIi1EQ0FSRVNfU1RBVElDTElCIikKLStFTkRJRigpCi0rCi0rIyBXcml0ZSBhcmVzX2NvbmZpZy5oIGNvbmZpZ3VyYXRpb24gZmlsZS4gIFRoaXMgaXMgdXNlZCBvbmx5IGZvciB0aGUgYnVpbGQuCi0rQ09ORklHVVJFX0ZJTEUgKGxpYmNhcmVzLnBjLmNtYWtlaW4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2xpYmNhcmVzLnBjIEBPTkxZKQotKwotKwotIAotICMgVFJBTlNGT1JNX01BS0VGSUxFX0lOQwotICMKLUBAIC02NjQsNiArNjgxLDEyIEBAIElGIChDQVJFU19JTlNUQUxMKQotIAlJTlNUQUxMIChGSUxFUyAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2xpYmNhcmVzLnBjIiBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0vcGtnY29uZmlnIikKLSBFTkRJRiAoKQotIAotKyMgcGtnLWNvbmZpZyBmaWxlCi0rSUYgKENBUkVTX0lOU1RBTEwpCi0rICAgICAgIFNFVCAoUEtHQ09ORklHX0lOU1RBTExfRElSICIke0NNQUtFX0lOU1RBTExfTElCRElSfS9wa2djb25maWciKQotKyAgICAgICBJTlNUQUxMIChGSUxFUyAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2xpYmNhcmVzLnBjIiBERVNUSU5BVElPTiAke1BLR0NPTkZJR19JTlNUQUxMX0RJUn0pCi0rRU5ESUYgKCkKLSsKLSAjIExlZ2FjeSBjaGFpbi1idWlsZGluZyB2YXJpYWJsZXMgKHByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGNvZGUpLgotICMgRG9uJ3QgdXNlIHRoZXNlLCBleHRlcm5hbCBjb2RlIHNob3VsZCBiZSB1cGRhdGVkIHRvIHJlZmVyIHRvIHRoZSBhbGlhc2VzIGRpcmVjdGx5IChlLmcuLCBDYXJlczo6Y2FyZXMpLgotIFNFVCAoQ0FSRVNfRk9VTkQgMSBDQUNIRSBJTlRFUk5BTCAiQ0FSRVMgTElCUkFSWSBGT1VORCIpCi1kaWZmIC0tZ2l0IGEvbGliY2FyZXMucGMuY21ha2VpbiBiL2xpYmNhcmVzLnBjLmNtYWtlaW4KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4zNTc5MjU2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJjYXJlcy5wYy5jbWFrZWluCi1AQCAtMCwwICsxLDIwIEBACi0rIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKyMgUHJvamVjdCAgICAgICAgX19fICAgICAgIF9fIF8gXyBfXyBfX18gIF9fXyAKLSsjICAgICAgICAgICAgICAgLyBfX3xfX19fIC8gX2AgfCAnX18vIF8gXC8gX198Ci0rIyAgICAgICAgICAgICAgfCAoX3xfX19fX3wgKF98IHwgfCB8ICBfXy9cX18gXAotKyMgICAgICAgICAgICAgICBcX19ffCAgICAgXF9fLF98X3wgIFxfX198fF9fXy8KLSsjCi0rcHJlZml4PUBDTUFLRV9JTlNUQUxMX1BSRUZJWEAKLStleGVjX3ByZWZpeD1AQ01BS0VfSU5TVEFMTF9QUkVGSVhACi0rbGliZGlyPUBDTUFLRV9JTlNUQUxMX0ZVTExfTElCRElSQAotK2luY2x1ZGVkaXI9QENNQUtFX0lOU1RBTExfRlVMTF9JTkNMVURFRElSQAotKwotK05hbWU6IGMtYXJlcwotK1VSTDogaHR0cDovL2RhbmllbC5oYXh4LnNlL3Byb2plY3RzL2MtYXJlcy8KLStEZXNjcmlwdGlvbjogYXN5bmNocm9ub3VzIEROUyBsb29rdXAgbGlicmFyeQotK1ZlcnNpb246IEBWRVJTSU9OQAotK1JlcXVpcmVzOiAKLStSZXF1aXJlcy5wcml2YXRlOiAKLStDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSBAQ1BQRkxBR19DQVJFU19TVEFUSUNMSUJACi0rTGliczogLUwke2xpYmRpcn0gLWxjYXJlcwotK0xpYnMucHJpdmF0ZTogQENBUkVTX1BSSVZBVEVfTElCU0AKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jLWFyZXMvYy1hcmVzXzEuMTUuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlc18xLjE1LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0Mzc1MjkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jLWFyZXMvYy1hcmVzXzEuMTUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDEyLTIwMTQgTEcgRWxlY3Ryb25pY3MsIEluYy4KLVNVTU1BUlkgPSAiYy1hcmVzIGlzIGEgQyBsaWJyYXJ5IHRoYXQgcmVzb2x2ZXMgbmFtZXMgYXN5bmNocm9ub3VzbHkuIgotSE9NRVBBR0UgPSAiaHR0cDovL2RhbmllbC5oYXh4LnNlL3Byb2plY3RzL2MtYXJlcy8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PWZiOTk3NDU0YzhkNjJhYTZhNDdmMDdhOGNkNDhiMDA2IgotCi1QViA9ICIxLjE1LjArZ2l0ciR7U1JDUFZ9IgotCi1TUkNfVVJJID0gIlwKLSAgICBnaXQ6Ly9naXRodWIuY29tL2MtYXJlcy9jLWFyZXMuZ2l0IFwKLSAgICBmaWxlOi8vY21ha2UtaW5zdGFsbC1saWJjYXJlcy5wYy5wYXRjaCBcCi0iCi1TUkNSRVYgPSAiZTk4MjkyNGFjZWU3ZjczMTNiNGJhYTRlZTVlYzAwMGM1ZTM3M2MzMCIKLQotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiY2FyZXMtKD9QPHB2ZXI+XGQrXyhcZF8/KSspIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwotCi1QQUNLQUdFUyA9KyAiJHtQTn0tdXRpbHMiCi0KLUZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jaWZzL2NpZnMtdXRpbHMvMDAwMS1CdWdmaXgtTW9kaWZ5LXRoZS1kaXItb2YtaW5zdGFsbC1leGVjLWhvb2stYW5kLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jaWZzL2NpZnMtdXRpbHMvMDAwMS1CdWdmaXgtTW9kaWZ5LXRoZS1kaXItb2YtaW5zdGFsbC1leGVjLWhvb2stYW5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzM2FlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2NpZnMvY2lmcy11dGlscy8wMDAxLUJ1Z2ZpeC1Nb2RpZnktdGhlLWRpci1vZi1pbnN0YWxsLWV4ZWMtaG9vay1hbmQucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSBmNjFmNWY4YTMyODIwNzg2N2I1YzUyM2IxYzZiZWY2YWFlY2FhYjg4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogV2FuZyBNaW5neXUgPHdhbmdteUBjbi5mdWppdHN1LmNvbT4KK0RhdGU6IFNhdCwgMTUgRmViIDIwMjAgMTY6MDU6NTggKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gQnVnZml4OiBNb2RpZnkgdGhlIGRpciBvZiBpbnN0YWxsLWV4ZWMtaG9vayBhbmQKKyBpbnN0YWxsLWRhdGEtaG9vaworCitFcnJvciBtZXNzYWdlOgorKGNkIC9zYmluICYmIGxuIC1zZiBtb3VudC5jaWZzIG1vdW50LnNtYjMpCisgIC95b2N0by93b3JrMDAxL2Zuc3Qvd2FuZ215L2J1aWxkL3RtcC9ob3N0dG9vbHMvaW5zdGFsbCAtYyBtb3VudC5jaWZzCisnL3lvY3RvL3dvcmswMDEvZm5zdC93YW5nbXkvYnVpbGQvdG1wL3dvcmsvY29yZTItNjQtcG9reS1saW51eC9jaWZzLXV0aWxzLzYuMTAtcjAvaW1hZ2Uvc2JpbicKK21ha2UgIGluc3RhbGwtZGF0YS1ob29rCitsbjogZmFpbGVkIHRvIGNyZWF0ZSBzeW1ib2xpYyBsaW5rICdtb3VudC5zbWIzJzogUGVybWlzc2lvbiBkZW5pZWQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFdhbmcgTWluZ3l1IDx3YW5nbXlAY24uZnVqaXRzdS5jb20+CistLS0KKyBNYWtlZmlsZS5hbSB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggZmU5Y2QzNC4uZTliZTZiMyAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTExOSwxMSArMTE5LDExIEBAIGVuZGlmCisgU1VCRElSUyA9IGNvbnRyaWIKKyAKKyBpbnN0YWxsLWV4ZWMtaG9vazoKKy0JKGNkICQoUk9PVFNCSU5ESVIpICYmIGxuIC1zZiBtb3VudC5jaWZzIG1vdW50LnNtYjMpCisrCShjZCAkKERFU1RESVIpJChST09UU0JJTkRJUikgJiYgbG4gLXNmIG1vdW50LmNpZnMgbW91bnQuc21iMykKKyAKKyBpbnN0YWxsLWRhdGEtaG9vazoKKy0JKGNkICQobWFuOGRpcikgJiYgbG4gLXNmIG1vdW50LmNpZnMuOCBtb3VudC5zbWIzLjgpCisrCSh0ZXN0IC1uICIkKG1hbl9NQU5TKSIgfHwgZXhpdCAwOyBjZCAkKERFU1RESVIpJChtYW44ZGlyKSAmJiBsbiAtc2YgbW91bnQuY2lmcy44IG1vdW50LnNtYjMuOCkKKyAKKyB1bmluc3RhbGwtaG9vazoKKy0JKGNkICQoUk9PVFNCSU5ESVIpICYmIHJtIC1mICQoUk9PVFNCSU5ESVIpL21vdW50LnNtYjMpCistCShjZCAkKG1hbjhkaXIpICYmIHJtIC1mICQobWFuOGRpcikvbW91bnQuc21iMy44KQorKwkoY2QgJChERVNURElSKSQoUk9PVFNCSU5ESVIpICYmIHJtIC1mICQoREVTVERJUikkKFJPT1RTQklORElSKS9tb3VudC5zbWIzKQorKwkodGVzdCAtbiAiJChtYW5fTUFOUykiIHx8IGV4aXQgMDsgY2QgJChERVNURElSKSQobWFuOGRpcikgJiYgcm0gLWYgJChERVNURElSKSQobWFuOGRpcikvbW91bnQuc21iMy44KQorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jaWZzL2NpZnMtdXRpbHNfNi4xMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2lmcy9jaWZzLXV0aWxzXzYuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ4MmVlNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2lmcy9jaWZzLXV0aWxzXzYuMTAuYmIKQEAgLTAsMCArMSwzOSBAQAorREVTQ1JJUFRJT04gPSAiQSBhIHBhY2thZ2Ugb2YgdXRpbGl0aWVzIGZvciBkb2luZyBhbmQgbWFuYWdpbmcgbW91bnRzIG9mIHRoZSBMaW51eCBDSUZTIGZpbGVzeXN0ZW0uIgorSE9NRVBBR0UgPSAiaHR0cDovL3dpa2kuc2FtYmEub3JnL2luZGV4LnBocC9MaW51eENJRlNfdXRpbHMiCitTRUNUSU9OID0gIm90aGVyb3NmcyIKK0xJQ0VOU0UgPSAiR1BMdjMgJiBMR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworUFYgPSAiNi4xMCIKKworU1JDUkVWID0gIjVmZjVmYzJlY2MxMDM1M2ZkMzlhZDUwOGRiNWMyODI4ZmQyZDhkOWEiCitTUkNfVVJJID0gImdpdDovL2dpdC5zYW1iYS5vcmcvY2lmcy11dGlscy5naXQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitERVBFTkRTICs9ICJsaWJ0YWxsb2MiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2NhcF0gPSAiLS13aXRoLWxpYmNhcCwtLXdpdGhvdXQtbGliY2FwLGxpYmNhcCIKKyMgd2hlbiBlbmFibGVkLCBpdCBjcmVhdGVzICR7YmluZGlyfS9jaWZzY3JlZHMgYW5kIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5IGluIGRvX2luc3RhbGxfYXBwZW5kIGlzIG5lZWRlZAorUEFDS0FHRUNPTkZJR1tjaWZzY3JlZHNdID0gIi0tZW5hYmxlLWNpZnNjcmVkcywtLWRpc2FibGUtY2lmc2NyZWRzLGtleXV0aWxzIgorIyB3aGVuIGVuYWJsZWQsIGl0IGNyZWF0ZXMgJHtzYmluZGlyfS9jaWZzLnVwY2FsbCBhbmQgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgaW4gZG9faW5zdGFsbF9hcHBlbmQgaXMgbmVlZGVkCitQQUNLQUdFQ09ORklHW2NpZnN1cGNhbGxdID0gIi0tZW5hYmxlLWNpZnN1cGNhbGwsLS1kaXNhYmxlLWNpZnN1cGNhbGwsa3JiNSBsaWJ0YWxsb2Mga2V5dXRpbHMiCitQQUNLQUdFQ09ORklHW2NpZnNpZG1hcF0gPSAiLS1lbmFibGUtY2lmc2lkbWFwLC0tZGlzYWJsZS1jaWZzaWRtYXAsa2V5dXRpbHMgc2FtYmEiCitQQUNLQUdFQ09ORklHW2NpZnNhY2xdID0gIi0tZW5hYmxlLWNpZnNhY2wsLS1kaXNhYmxlLWNpZnNhY2wsc2FtYmEiCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS1lbmFibGUtcGFtIC0td2l0aC1wYW1kaXI9JHtiYXNlX2xpYmRpcn0vc2VjdXJpdHksLS1kaXNhYmxlLXBhbSxsaWJwYW0ga2V5dXRpbHMiCisKK1NSQ19VUkkgKz0gIiBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1CdWdmaXgtTW9kaWZ5LXRoZS1kaXItb2YtaW5zdGFsbC1leGVjLWhvb2stYW5kLnBhdGNoIFwKKyAgICAgICAgICAgICIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgUmVtb3ZlIGVtcHR5IC91c3IvYmluIGFuZCAvdXNyL3NiaW4gZGlyZWN0b3JpZXMgc2luY2UgdGhlIG1vdW50IGhlbHBlcgorICAgICMgaXMgaW5zdGFsbGVkIHRvIC9zYmluCisgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7YmluZGlyfSAke0R9JHtzYmluZGlyfQorfQorCitGSUxFU18ke1BOfSArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Ly5kZWJ1ZyIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtY2lmcyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2lmcy9jaWZzLXV0aWxzXzYuOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2lmcy9jaWZzLXV0aWxzXzYuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFkY2IyMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2NpZnMvY2lmcy11dGlsc182LjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJBIGEgcGFja2FnZSBvZiB1dGlsaXRpZXMgZm9yIGRvaW5nIGFuZCBtYW5hZ2luZyBtb3VudHMgb2YgdGhlIExpbnV4IENJRlMgZmlsZXN5c3RlbS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd2lraS5zYW1iYS5vcmcvaW5kZXgucGhwL0xpbnV4Q0lGU191dGlscyIKLVNFQ1RJT04gPSAib3RoZXJvc2ZzIgotTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1QViA9ICI2LjkiCi0KLVNSQ1JFViA9ICI5YThjMjFhZDllNDUxMGE4M2EzYTQxZjdhMDRmNzYzYTRmZTllYzA5IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXQuc2FtYmEub3JnL2NpZnMtdXRpbHMuZ2l0IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotREVQRU5EUyArPSAibGlidGFsbG9jIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tjYXBdID0gIi0td2l0aC1saWJjYXAsLS13aXRob3V0LWxpYmNhcCxsaWJjYXAiCi0jIHdoZW4gZW5hYmxlZCwgaXQgY3JlYXRlcyAke2JpbmRpcn0vY2lmc2NyZWRzIGFuZCAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSBpbiBkb19pbnN0YWxsX2FwcGVuZCBpcyBuZWVkZWQKLVBBQ0tBR0VDT05GSUdbY2lmc2NyZWRzXSA9ICItLWVuYWJsZS1jaWZzY3JlZHMsLS1kaXNhYmxlLWNpZnNjcmVkcyxrZXl1dGlscyIKLSMgd2hlbiBlbmFibGVkLCBpdCBjcmVhdGVzICR7c2JpbmRpcn0vY2lmcy51cGNhbGwgYW5kIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5IGluIGRvX2luc3RhbGxfYXBwZW5kIGlzIG5lZWRlZAotUEFDS0FHRUNPTkZJR1tjaWZzdXBjYWxsXSA9ICItLWVuYWJsZS1jaWZzdXBjYWxsLC0tZGlzYWJsZS1jaWZzdXBjYWxsLGtyYjUgbGlidGFsbG9jIGtleXV0aWxzIgotUEFDS0FHRUNPTkZJR1tjaWZzaWRtYXBdID0gIi0tZW5hYmxlLWNpZnNpZG1hcCwtLWRpc2FibGUtY2lmc2lkbWFwLGtleXV0aWxzIHNhbWJhIgotUEFDS0FHRUNPTkZJR1tjaWZzYWNsXSA9ICItLWVuYWJsZS1jaWZzYWNsLC0tZGlzYWJsZS1jaWZzYWNsLHNhbWJhIgotUEFDS0FHRUNPTkZJR1twYW1dID0gIi0tZW5hYmxlLXBhbSAtLXdpdGgtcGFtZGlyPSR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5LC0tZGlzYWJsZS1wYW0sbGlicGFtIGtleXV0aWxzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBSZW1vdmUgZW1wdHkgL3Vzci9iaW4gYW5kIC91c3Ivc2JpbiBkaXJlY3RvcmllcyBzaW5jZSB0aGUgbW91bnQgaGVscGVyCi0gICAgIyBpcyBpbnN0YWxsZWQgdG8gL3NiaW4KLSAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtiaW5kaXJ9ICR7RH0ke3NiaW5kaXJ9Ci19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2Jhc2VfbGliZGlyfS9zZWN1cml0eSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvLmRlYnVnIgotUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1jaWZzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kbnNzZWMtY29uZi9kbnNzZWMtY29uZl8yLjAyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kbnNzZWMtY29uZi9kbnNzZWMtY29uZl8yLjAyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTU5YmQyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG5zc2VjLWNvbmYvZG5zc2VjLWNvbmZfMi4wMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiRE5TU0VDIGFuZCBETFYgY29uZmlndXJhdGlvbiBhbmQgcHJpbWluZyB0b29sIgotREVTQ1JJUFRJT04gPSAiXAotRE5TU0VDIGNvbmZpZ3VyYXRpb24gYW5kIHByaW1pbmcgdG9vbC4gS2V5cyBhcmUgcmVxdWlyZWQgdW50aWwgdGhlIHJvb3QgXAotaXMgc2lnbmVkLCBhcyB3ZWxsIGFzIGZvciBsb2NhbCB1bnB1Ymxpc2hlZCBETlNTRUMga2V5cyB0byBiZSBwcmVsb2FkZWQgXAotaW50byB0aGUgcmVjdXJzaXZlIG5hbWVzZXJ2ZXIuIFRoZXNlIEROU1NFQyBjb25maWd1cmF0aW9uIGZpbGVzIGNhbiBiZSBcCi1kaXJlY3RseSBpbmNsdWRlZCBpbiB0aGUgYmluZCBvciB1bmJvdW5kIG5hbWVzZXJ2ZXIgY29uZmlndXJhdGlvbiBmaWxlcy4gXAotZG5zc2VjLWNvbmYgaW5jbHVkZXMgYSBjb21tYW5kbGluZSBjb25maWd1cmF0aW9uIGNsaWVudCBmb3IgQmluZCBhbmQgXAotVW5ib3VuZCwga25vd24gRE5TU0VDIGtleXMsIFVSTCdzIHRvIG9mZmljaWFsIHB1YmxpY2F0aW9uIHBhZ2VzIG9mIGtleXMsIFwKLWFuZCBoYXJ2ZXN0ZWQga2V5cywgYXMgd2VsbCBhIHNjcmlwdCB0byBoYXJ2ZXN0IEROU0tFWSdzIGZyb20gRE5TLiBcCi1TZWUgYWxzbzogc3lzdGVtLWNvbmZpZy1kbnNzZWMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20veGVsZXJhbmNlL2Ruc3NlYy1jb25mIgotU0VDVElPTiA9ICJuZXQiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIgotREVQRU5EUyArPSAieG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIFwKLSAgICAgICAgICAgIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3hlbGVyYW5jZS9kbnNzZWMtY29uZi5naXQiCi1TUkNSRVYgPSAiOGU3OTk2ODM3MzZiNGE3YjVlNWU3OGY5OGZiYTBhNmY0ODM5MzUzNyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgcm0gLXJmICR7RH0KLSAgICBtYWtlIFBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IEVUQ0RJUj0ke0R9JHtzeXNjb25mZGlyfSBpbnN0YWxsCi0gICAgIyBXZSBubyBsb25nZXIgc2hpcCB0cnVzdCBhbmNob3JzLiBNb3N0IG9mIHRoZXNlIGFyZSBpbiB0aGUgRExWIFJlZ2lzdHJ5IG5vdy4KLSAgICAjIGFuZCBpdCBwcmV2ZW50cyB0aGUgcHJvYmxlbSBvZiBzaGlwcGluZyBvdXRkYXRlZCB0cnVzdCBhbmNob3JzLgotICAgICMgRm9yIERMViwgd2Ugc2hpcCB0aGUgSVNDIERMViBSZWdpc3RyeSBrZXkKLSAgICBybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0vcGtpL2Ruc3NlYy1rZXlzL2hhcnZlc3QvKgotICAgIHJtIC1yZiAke0R9JHtzeXNjb25mZGlyfS9wa2kvZG5zc2VjLWtleXMvcHJvZHVjdGlvbi9yZXZlcnNlLyoKLSAgICBpbnN0YWxsIC1kIC1tIDA3NTUgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCi0gICAgaW5zdGFsbCAtbSAwNjQ0IHBhY2thZ2luZy9mZWRvcmEvZG5zc2VjLnN5c2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvZG5zc2VjCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG92ZWNvdC9kb3ZlY290XzIuMi4zNi40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kb3ZlY290L2RvdmVjb3RfMi4yLjM2LjQuYmIKaW5kZXggMjM5YTI1Mi4uMGY3ZmFkMiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kb3ZlY290L2RvdmVjb3RfMi4yLjM2LjQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kb3ZlY290L2RvdmVjb3RfMi4yLjM2LjQuYmIKQEAgLTE5LDcgKzE5LDcgQEAKIENGTEFHUyArPSAiLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyIKIExERkxBR1MgKz0gIi1sdGlycGMiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVzZXJhZGQKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVzZXJhZGQgZ2V0dGV4dAogCiBQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnbGRhcCBwYW0nLCBkKX0iCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZHJiZC9kcmJkLXV0aWxzXzkuMTEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZHJiZC9kcmJkLXV0aWxzXzkuMTEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg2YjBmNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RyYmQvZHJiZC11dGlsc185LjExLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1TVU1NQVJZID0gIkRpc3RyaWJ1dGVkIGJsb2NrIGRldmljZSBkcml2ZXIgZm9yIExpbnV4IgotREVTQ1JJUFRJT04gPSAiRFJCRCBtaXJyb3JzIGEgYmxvY2sgZGV2aWNlIG92ZXIgdGhlIG5ldHdvcmsgdG8gYW5vdGhlciBtYWNoaW5lLlwKLURSQkQgbWlycm9ycyBhIGJsb2NrIGRldmljZSBvdmVyIHRoZSBuZXR3b3JrIHRvIGFub3RoZXIgbWFjaGluZS5cCi1UaGluayBvZiBpdCBhcyBuZXR3b3JrZWQgcmFpZCAxLiBJdCBpcyBhIGJ1aWxkaW5nIGJsb2NrIGZvclwKLXNldHRpbmcgdXAgaGlnaCBhdmFpbGFiaWxpdHkgKEhBKSBjbHVzdGVycy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmRyYmQub3JnLyIKLVNFQ1RJT04gPSAiYWRtaW4iCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1NzRjNjk2NWFlNWY1ODNlNTU4ODBlMzk3ZmJiMDE4IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vTElOQklUL2RyYmQtdXRpbHM7bmFtZT1kcmJkLXV0aWxzIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9MSU5CSVQvZHJiZC1oZWFkZXJzO25hbWU9ZHJiZC1oZWFkZXJzO2Rlc3RzdWZmaXg9Z2l0L2RyYmQtaGVhZGVycyBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCd1c3JtZXJnZScsJ2ZpbGU6Ly8wMDAxLWRyYmQtdXRpbHMtc3VwcG9ydC11c3JtZXJnZS5wYXRjaCcsJycsZCl9IFwKLSAgICAgICAgICAiCi0jIHY5LjExLjAKLVNSQ1JFVl9kcmJkLXV0aWxzID0gIjYzMDkyNzUxZTc2ZTFmYmEzOTdlNTNkZjRiZTVjMTE2MWI4M2EyMjMiCi1TUkNSRVZfZHJiZC1oZWFkZXJzID0gImQxMDBlZTAxYmY1YWE4ZDUyMjA3NjdlNGUzNWM0MjI0ZmFhOGQ4NjUiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vTElOQklUL2RyYmQtdXRpbHMvcmVsZWFzZXMiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJkcmJkLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBzeXN0ZW1kCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgICAgICAgICAgICAgIC0td2l0aC1pbml0ZGlyPS9ldGMvaW5pdC5kICAgIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcGFjZW1ha2VyICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXJnbWFuYWdlciAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1iYXNoY29tcGxldGlvbiAgICAgIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtZGlzdHJvIGRlYmlhbiAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWluaXRzY3JpcHR0eXBlPWJvdGggICAgXAotICAgICAgICAgICAgICAgIC0td2l0aC1zeXN0ZW1kdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbWFudWFsIFwKLSAgICAgICAgICAgICAgICIKLQotIyBJZiB3ZSBoYXZlIGluaGVyaXRlZCByZXByb2R1Y2libGVfYnVpbGQsIHdlIHdhbnQgdG8gdXNlIGl0LgotZXhwb3J0IFdBTlRfRFJCRF9SRVBST0RVQ0lCTEVfQlVJTEQgPSAieWVzIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIGRvbid0IGluc3RhbGwgZW1wdHkgL3Zhci9sb2NrIGFuZCAvdmFyL3J1biB0byBhdm9pZCBjb25mbGljdCB3aXRoIGJhc2UtZmlsZXMKLSAgICBybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbG9jawotICAgIHJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KLX0KLQotUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcGVybC1tb2R1bGUtZ2V0b3B0LWxvbmcgcGVybC1tb2R1bGUtZXhwb3J0ZXIgcGVybC1tb2R1bGUtY29uc3RhbnQgcGVybC1tb2R1bGUtb3ZlcmxvYWRpbmcgcGVybC1tb2R1bGUtZXhwb3J0ZXItaGVhdnkiCi0KLSMgVGhlIGRyYmQgaXRlbXMgYXJlIGV4cGxpY2l0bHkgcHV0IHVuZGVyIC9saWIgd2hlbiBpbnN0YWxsZWQuCi0jCi1GSUxFU18ke1BOfSArPSAiL3J1biIKLUZJTEVTXyR7UE59ICs9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2RyYmQgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L2RyYmQgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L3RtcGZpbGVzLmQiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZHJiZC8uZGVidWciCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RyYmQvZHJiZC11dGlsc185LjEyLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RyYmQvZHJiZC11dGlsc185LjEyLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjgzZjY4ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZHJiZC9kcmJkLXV0aWxzXzkuMTIuMC5iYgpAQCAtMCwwICsxLDU4IEBACitTVU1NQVJZID0gIkRpc3RyaWJ1dGVkIGJsb2NrIGRldmljZSBkcml2ZXIgZm9yIExpbnV4IgorREVTQ1JJUFRJT04gPSAiRFJCRCBtaXJyb3JzIGEgYmxvY2sgZGV2aWNlIG92ZXIgdGhlIG5ldHdvcmsgdG8gYW5vdGhlciBtYWNoaW5lLlwKK0RSQkQgbWlycm9ycyBhIGJsb2NrIGRldmljZSBvdmVyIHRoZSBuZXR3b3JrIHRvIGFub3RoZXIgbWFjaGluZS5cCitUaGluayBvZiBpdCBhcyBuZXR3b3JrZWQgcmFpZCAxLiBJdCBpcyBhIGJ1aWxkaW5nIGJsb2NrIGZvclwKK3NldHRpbmcgdXAgaGlnaCBhdmFpbGFiaWxpdHkgKEhBKSBjbHVzdGVycy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmRyYmQub3JnLyIKK1NFQ1RJT04gPSAiYWRtaW4iCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1NzRjNjk2NWFlNWY1ODNlNTU4ODBlMzk3ZmJiMDE4IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vTElOQklUL2RyYmQtdXRpbHM7bmFtZT1kcmJkLXV0aWxzIFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9MSU5CSVQvZHJiZC1oZWFkZXJzO25hbWU9ZHJiZC1oZWFkZXJzO2Rlc3RzdWZmaXg9Z2l0L2RyYmQtaGVhZGVycyBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCd1c3JtZXJnZScsJ2ZpbGU6Ly8wMDAxLWRyYmQtdXRpbHMtc3VwcG9ydC11c3JtZXJnZS5wYXRjaCcsJycsZCl9IFwKKyAgICAgICAgICAiCisjIHY5LjEyLjAKK1NSQ1JFVl9kcmJkLXV0aWxzID0gIjkxNjI5YTRjY2U0OWNhMGQ0ZjkxN2ZlMGJmZmEyNWNmZThkYjMwNTIiCitTUkNSRVZfZHJiZC1oZWFkZXJzID0gIjIzMzAwNmI0ZDI2Y2YzMTk2MzhiZTBlZjZkMTZlYzdkZWUyODdiNjYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vTElOQklUL2RyYmQtdXRpbHMvcmVsZWFzZXMiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJkcmJkLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCisKK0RFUEVORFMgPSAiZmxleC1uYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBzeXN0ZW1kCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgICAgICAgICAgICAgIC0td2l0aC1pbml0ZGlyPS9ldGMvaW5pdC5kICAgIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcGFjZW1ha2VyICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LXJnbWFuYWdlciAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1iYXNoY29tcGxldGlvbiAgICAgIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZGlzdHJvIGRlYmlhbiAgICAgICAgICBcCisgICAgICAgICAgICAgICAgLS13aXRoLWluaXRzY3JpcHR0eXBlPWJvdGggICAgXAorICAgICAgICAgICAgICAgIC0td2l0aC1zeXN0ZW1kdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbWFudWFsIFwKKyAgICAgICAgICAgICAgICIKKworIyBJZiB3ZSBoYXZlIGluaGVyaXRlZCByZXByb2R1Y2libGVfYnVpbGQsIHdlIHdhbnQgdG8gdXNlIGl0LgorZXhwb3J0IFdBTlRfRFJCRF9SRVBST0RVQ0lCTEVfQlVJTEQgPSAieWVzIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIGRvbid0IGluc3RhbGwgZW1wdHkgL3Zhci9sb2NrIGFuZCAvdmFyL3J1biB0byBhdm9pZCBjb25mbGljdCB3aXRoIGJhc2UtZmlsZXMKKyAgICBybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbG9jaworICAgIHJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KK30KKworUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcGVybC1tb2R1bGUtZ2V0b3B0LWxvbmcgcGVybC1tb2R1bGUtZXhwb3J0ZXIgcGVybC1tb2R1bGUtY29uc3RhbnQgcGVybC1tb2R1bGUtb3ZlcmxvYWRpbmcgcGVybC1tb2R1bGUtZXhwb3J0ZXItaGVhdnkiCisKKyMgVGhlIGRyYmQgaXRlbXMgYXJlIGV4cGxpY2l0bHkgcHV0IHVuZGVyIC9saWIgd2hlbiBpbnN0YWxsZWQuCisjCitGSUxFU18ke1BOfSArPSAiL3J1biIKK0ZJTEVTXyR7UE59ICs9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2RyYmQgXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L2RyYmQgXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L3RtcGZpbGVzLmQiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZHJiZC8uZGVidWciCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2ZldGNobWFpbC9mZXRjaG1haWxfNi40LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2ZldGNobWFpbC9mZXRjaG1haWxfNi40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxY2FhOTEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9mZXRjaG1haWwvZmV0Y2htYWlsXzYuNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJGZXRjaG1haWwgcmV0cmlldmVzIG1haWwgZnJvbSByZW1vdGUgbWFpbCBzZXJ2ZXJzIGFuZCBmb3J3YXJkcyBpdCB2aWEgU01UUCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZmV0Y2htYWlsLmluZm8vIgotREVTQ1JJUFRJT04gPSAiRmV0Y2htYWlsIGlzIGEgZnVsbC1mZWF0dXJlZCwgcm9idXN0LCB3ZWxsLWRvY3VtZW50ZWQgcmVtb3RlLW1haWwgcmV0cmlldmFsIGFuZCBmb3J3YXJkaW5nIHV0aWxpdHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBvdmVyIG9uLWRlbWFuZCBUQ1AvSVAgbGlua3MgKHN1Y2ggYXMgU0xJUCBvciBQUFAgY29ubmVjdGlvbnMpLiBJdCBzdXBwb3J0cyBldmVyeSByZW1vdGUtbWFpbCBwcm90b2NvbCBub3cgaW4gdXNlIG9uIHRoZSBJbnRlcm5ldDogUE9QMiwgUE9QMywgUlBPUCwgQVBPUCwgS1BPUCwgYWxsIGZsYXZvcnMgb2YgSU1BUCwgRVRSTiwgYW5kIE9ETVIuIEl0IGNhbiBldmVuIHN1cHBvcnQgSVB2NiBhbmQgSVBTRUMuIgotU0VDVElPTiA9ICJtYWlsIgotTElDRU5TRSA9ICJHUEx2MiAmIE1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWNhNTM5ODVjMWZkMDUzYWUwYmZmZmZhYTg5ZWQ0OWYxIgotCi1ERVBFTkRTID0gIm9wZW5zc2wiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImMyYjgzNmE5MTljZGQ0ZWM1M2IwNmI3MGUwYWEzZTYzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNmMzNmMTFkZDA4YzNlOGNjM2U5ZDE4ZWVjNjg2YjE2MjZkNDgxOGY0ZDVhNzI3OTE1MDdiYmM0ZGNlNmE5YTAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHl0aG9uLWRpciBweXRob25uYXRpdmUKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1zc2w9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSIKLQotUEFDS0FHRVMgPSsgImZldGNobWFpbC1weXRob24iCi1GSUxFU19mZXRjaG1haWwtcHl0aG9uID0gIiR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9LyoiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2ZldGNobWFpbC9mZXRjaG1haWxfNi40LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2ZldGNobWFpbC9mZXRjaG1haWxfNi40LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWUyZDFiZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZmV0Y2htYWlsL2ZldGNobWFpbF82LjQuMy5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIkZldGNobWFpbCByZXRyaWV2ZXMgbWFpbCBmcm9tIHJlbW90ZSBtYWlsIHNlcnZlcnMgYW5kIGZvcndhcmRzIGl0IHZpYSBTTVRQIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mZXRjaG1haWwuaW5mby8iCitERVNDUklQVElPTiA9ICJGZXRjaG1haWwgaXMgYSBmdWxsLWZlYXR1cmVkLCByb2J1c3QsIHdlbGwtZG9jdW1lbnRlZCByZW1vdGUtbWFpbCByZXRyaWV2YWwgYW5kIGZvcndhcmRpbmcgdXRpbGl0eSBpbnRlbmRlZCB0byBiZSB1c2VkIG92ZXIgb24tZGVtYW5kIFRDUC9JUCBsaW5rcyAoc3VjaCBhcyBTTElQIG9yIFBQUCBjb25uZWN0aW9ucykuIEl0IHN1cHBvcnRzIGV2ZXJ5IHJlbW90ZS1tYWlsIHByb3RvY29sIG5vdyBpbiB1c2Ugb24gdGhlIEludGVybmV0OiBQT1AyLCBQT1AzLCBSUE9QLCBBUE9QLCBLUE9QLCBhbGwgZmxhdm9ycyBvZiBJTUFQLCBFVFJOLCBhbmQgT0RNUi4gSXQgY2FuIGV2ZW4gc3VwcG9ydCBJUHY2IGFuZCBJUFNFQy4iCitTRUNUSU9OID0gIm1haWwiCitMSUNFTlNFID0gIkdQTHYyICYgTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Y2E1Mzk4NWMxZmQwNTNhZTBiZmZmZmFhODllZDQ5ZjEiCisKK0RFUEVORFMgPSAib3BlbnNzbCIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNjE0ZDVhMDVhYzlhMDQyYmZjOTMxN2U1NDk5YmFmZDQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjAzNjBlMTRiOWFhNWQwNjVlZWY4ZmY5OWFkMDM0N2VmNmNiYmZjOTM0YzgxMTQ5MDgyOTVhNDAyYTA5ZDNlNCIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBweXRob24zLWRpciBweXRob24zbmF0aXZlCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtc3NsPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0iCisKK1BBQ0tBR0VTID0rICJmZXRjaG1haWwtcHl0aG9uIgorRklMRVNfZmV0Y2htYWlsLXB5dGhvbiA9ICIke2xpYmRpcn0vJHtQWVRIT05fRElSfS8qIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJtZW1jYWNoZWQvbGlibWVtY2FjaGVkLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlibWVtY2FjaGVkL2xpYm1lbWNhY2hlZC5pbmMKaW5kZXggZDlhODIxZC4uMzE5YWIyOSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJtZW1jYWNoZWQvbGlibWVtY2FjaGVkLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYm1lbWNhY2hlZC9saWJtZW1jYWNoZWQuaW5jCkBAIC02LDYgKzYsOCBAQAogCiBTUkNfVVJJID0gImh0dHA6Ly9sYXVuY2hwYWQubmV0L2xpYm1lbWNhY2hlZC8xLjAvJHtQVn0vK2Rvd25sb2FkL2xpYm1lbWNhY2hlZC0ke1BWfS50YXIuZ3oiCiAKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvbGlibWVtY2FjaGVkIgorCiBUQVJHRVRfTERGTEFHUyArPSAiLWx1dWlkIgogVEFSR0VUX0NGTEFHUyArPSAiLURfX1VTRV9HTlUgLURfR05VX1NPVVJDRSIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZGIvbGlidGRiLzAwMDEtd2FmLWFkZC1zdXBwb3J0LW9mLWNyb3NzX2NvbXBpbGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGIvMDAwMS13YWYtYWRkLXN1cHBvcnQtb2YtY3Jvc3NfY29tcGlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTIwYzlhMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGIvMDAwMS13YWYtYWRkLXN1cHBvcnQtb2YtY3Jvc3NfY29tcGlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLUZyb20gNGI4NDYzZmY0M2Y4OTgzYTcwNmIxODFjNTI5MjQ5MWY5Zjk1NGJlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDI1IEphbiAyMDE5IDE1OjAwOjU5ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHdhZjogYWRkIHN1cHBvcnQgb2YgY3Jvc3NfY29tcGlsZQotCi1BZnRlciB1cGdyYWRlIGxpYnRkYiBmcm9tIDEuMy4xNiB0byAxLjMuMTcsIHdhZiBidWlsZCBzeXN0ZW0KLXdoaWNoIHVzZWQgYnkgbGlidGRiIHVwZ3JhZGUgZnJvbSAxLjUuMTkgdG8gMi4wLjgKLQotb24gMS41LjE5LCBmb3IgY3Jvc3NfY29tcGlsZSwgc3VicHJvY2Vzcy5Qb3BlbiBpcyBzZXQgdG8gYmUKLXNhbWJhX2Nyb3NzLmNyb3NzX1BvcGVuLCB3aGljaCB3aWxsIG5vdCBleGVjdXRlIHRlc3Rwcm9nIG9uCi1ob3N0LCBidXQgb25seSByZWFkIHJlc3VsdCBmcm9tIGNyb3NzLWFuc3dlcnMudHh0IHdoaWNoIGlzCi1wYXNzZWQgYnkgb3B0aW9uIC0tY3Jvc3MtYW5zd2VyCi0KLXBhcnQgb2Ygb2xkIGNvZGU6Ci0gICAgYXJncyA9IFV0aWxzLnRvX2xpc3Qoa3cuZ2V0KCdleGVjX2FyZ3MnLCBbXSkpCi0gICAgcHJvYyA9IFV0aWxzLnBwcm9jLlBvcGVuKFtsYXN0cHJvZ10gKyBhcmdzLCBzdGRvdXQ9VXRpbHMucHByb2MuUElQRSwgc3RkZXJyPVV0aWxzLnBwcm9jLlBJUEUpCi0KLWJ1dCBvbiAyLjAuOCwgZXhlY19hcmdzIGlzIG5vdCB1c2VkIGFuZCBjYXVzZSBkb19jb25maWd1cmUKLWZhaWxlZCB3aXRoIEV4ZWMgZm9ybWF0IGVycm9yCi0KLWZpeGVkIGJ5IGFwcGVuZCBjcm9zcyBhbnNlciByZWxhdGVkIGFyZ3MgdG8gY21kCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGxhYi5jb20vc2FtYmEtdGVhbS9zYW1iYS9tZXJnZV9yZXF1ZXN0cy8yMTFdCi0KLVNpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0aGlyZF9wYXJ0eS93YWYvd2FmbGliL1Rvb2xzL2NfY29uZmlnLnB5IHwgMTEgKysrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvd2FmL3dhZmxpYi9Ub29scy9jX2NvbmZpZy5weSBiL3RoaXJkX3BhcnR5L3dhZi93YWZsaWIvVG9vbHMvY19jb25maWcucHkKLWluZGV4IDc2MDgyMTUuLjc2N2NmMzMgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS93YWYvd2FmbGliL1Rvb2xzL2NfY29uZmlnLnB5Ci0rKysgYi90aGlyZF9wYXJ0eS93YWYvd2FmbGliL1Rvb2xzL2NfY29uZmlnLnB5Ci1AQCAtNjYwLDIwICs2NjAsMjEgQEAgY2xhc3MgdGVzdF9leGVjKFRhc2suVGFzayk6Ci0gCSIiIgotIAljb2xvciA9ICdQSU5LJwotIAlkZWYgcnVuKHNlbGYpOgotKwkJYXJncyA9IHNlbGYuZ2VuZXJhdG9yLmJsZC5rdy5nZXQoJ2V4ZWNfYXJncycsIFtdKQotIAkJaWYgZ2V0YXR0cihzZWxmLmdlbmVyYXRvciwgJ3JwYXRoJywgTm9uZSk6Ci0gCQkJaWYgZ2V0YXR0cihzZWxmLmdlbmVyYXRvciwgJ2RlZmluZV9yZXQnLCBGYWxzZSk6Ci0tCQkJCXNlbGYuZ2VuZXJhdG9yLmJsZC5yZXR2YWwgPSBzZWxmLmdlbmVyYXRvci5ibGQuY21kX2FuZF9sb2coW3NlbGYuaW5wdXRzWzBdLmFic3BhdGgoKV0pCi0tCQkJZWxzZToKLS0JCQkJc2VsZi5nZW5lcmF0b3IuYmxkLnJldHZhbCA9IHNlbGYuZ2VuZXJhdG9yLmJsZC5leGVjX2NvbW1hbmQoW3NlbGYuaW5wdXRzWzBdLmFic3BhdGgoKV0pCi0rCQkJCXNlbGYuZ2VuZXJhdG9yLmJsZC5yZXR2YWwgPSBzZWxmLmdlbmVyYXRvci5ibGQuY21kX2FuZF9sb2coW3NlbGYuaW5wdXRzWzBdLmFic3BhdGgoKV0gKyBhcmdzKQotKwkJCWVsc2U6IAotKwkJCQlzZWxmLmdlbmVyYXRvci5ibGQucmV0dmFsID0gc2VsZi5nZW5lcmF0b3IuYmxkLmV4ZWNfY29tbWFuZChbc2VsZi5pbnB1dHNbMF0uYWJzcGF0aCgpXSArIGFyZ3MpCi0gCQllbHNlOgotIAkJCWVudiA9IHNlbGYuZW52LmVudiBvciB7fQotIAkJCWVudi51cGRhdGUoZGljdChvcy5lbnZpcm9uKSkKLSAJCQlmb3IgdmFyIGluICgnTERfTElCUkFSWV9QQVRIJywgJ0RZTERfTElCUkFSWV9QQVRIJywgJ1BBVEgnKToKLSAJCQkJZW52W3Zhcl0gPSBzZWxmLmlucHV0c1swXS5wYXJlbnQuYWJzcGF0aCgpICsgb3MucGF0aC5wYXRoc2VwICsgZW52LmdldCh2YXIsICcnKQotIAkJCWlmIGdldGF0dHIoc2VsZi5nZW5lcmF0b3IsICdkZWZpbmVfcmV0JywgRmFsc2UpOgotLQkJCQlzZWxmLmdlbmVyYXRvci5ibGQucmV0dmFsID0gc2VsZi5nZW5lcmF0b3IuYmxkLmNtZF9hbmRfbG9nKFtzZWxmLmlucHV0c1swXS5hYnNwYXRoKCldLCBlbnY9ZW52KQotKwkJCQlzZWxmLmdlbmVyYXRvci5ibGQucmV0dmFsID0gc2VsZi5nZW5lcmF0b3IuYmxkLmNtZF9hbmRfbG9nKFtzZWxmLmlucHV0c1swXS5hYnNwYXRoKCldICsgYXJncywgZW52PWVudikKLSAJCQllbHNlOgotLQkJCQlzZWxmLmdlbmVyYXRvci5ibGQucmV0dmFsID0gc2VsZi5nZW5lcmF0b3IuYmxkLmV4ZWNfY29tbWFuZChbc2VsZi5pbnB1dHNbMF0uYWJzcGF0aCgpXSwgZW52PWVudikKLSsJCQkJc2VsZi5nZW5lcmF0b3IuYmxkLnJldHZhbCA9IHNlbGYuZ2VuZXJhdG9yLmJsZC5leGVjX2NvbW1hbmQoW3NlbGYuaW5wdXRzWzBdLmFic3BhdGgoKV0gKyBhcmdzLCBlbnY9ZW52KQotIAotIEBmZWF0dXJlKCd0ZXN0X2V4ZWMnKQotIEBhZnRlcl9tZXRob2QoJ2FwcGx5X2xpbmsnKQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGIvdGRiLUFkZC1jb25maWd1cmUtb3B0aW9ucy1mb3ItcGFja2FnZXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGIvdGRiLUFkZC1jb25maWd1cmUtb3B0aW9ucy1mb3ItcGFja2FnZXMucGF0Y2gKaW5kZXggNDgxZmQ2OC4uYzM1Y2FiNyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZGIvbGlidGRiL3RkYi1BZGQtY29uZmlndXJlLW9wdGlvbnMtZm9yLXBhY2thZ2VzLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGRiL2xpYnRkYi90ZGItQWRkLWNvbmZpZ3VyZS1vcHRpb25zLWZvci1wYWNrYWdlcy5wYXRjaApAQCAtNzgsNyArNzgsNyBAQAogKyAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xpbnV4L3R5cGVzLmggY3J5cHQuaCBsb2NhbGUuaCBjb21wYXQuaCcpCiArICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnYXR0ci94YXR0ci5oIGNvbXBhdC5oIGN0eXBlLmggZHVzdGF0LmgnKQogICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2ZjbnRsLmggZm5tYXRjaC5oIGdsb2IuaCBoaXN0b3J5Lmgga3JiNS5oIGxhbmdpbmZvLmgnKQotLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xpYmFpby5oIGxvY2FsZS5oIG5kaXIuaCBwd2QuaCcpCistICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbG9jYWxlLmggbmRpci5oIHB3ZC5oJykKIC0gICAgY29uZi5DSEVDS19IRUFERVJTKCdzaGFkb3cuaCBzeXMvYWNsLmgnKQogLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9hdHRyaWJ1dGVzLmggYXR0ci9hdHRyaWJ1dGVzLmggc3lzL2NhcGFiaWxpdHkuaCBzeXMvZGlyLmggc3lzL2Vwb2xsLmgnKQogKyAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xvY2FsZS5oIG5kaXIuaCBwd2QuaCcpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGJfMS40LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGJfMS40LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NzNlODAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZGIvbGlidGRiXzEuNC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgdGRiIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vdGRiLnNhbWJhLm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEwtMy4wKyAmIEdQTC0zLjArIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly90b29scy90ZGJkdW1wLmM7ZW5kbGluZT0xODttZDU9YjU5Y2Q0NWFhODYyNDU3ODEyNmE4Yzk4ZjQ4MDE4YzQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS90ZGIuaDtlbmRsaW5lPTI3O21kNT1mNWJiNTQ0NjQxZDMwODE4MjFiY2MxZGQ1ODMxMGJlNiIKLQotU1JDX1VSSSA9ICJodHRwczovL3NhbWJhLm9yZy9mdHAvdGRiL3RkYi0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vdGRiLUFkZC1jb25maWd1cmUtb3B0aW9ucy1mb3ItcGFja2FnZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS13YWYtYWRkLXN1cHBvcnQtb2YtY3Jvc3NfY29tcGlsZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiMmMwNWFkNjgzMzQzNjhkMzI1OGE2M2RiNzA5ZjI1NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MDQwYjJjY2U0MDI4ZTM5MmYwNjNmOTFiYmU3NmI4YjI4ZmVjYzJiN2MwYzYwNzFjNjdiNWViMzE2OGUwMDRhIgotCi1QQUNLQUdFQ09ORklHID8/PSAiXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCcsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsICdhdHRyJywgJycsIGQpfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICItLXdpdGgtYWNsLC0td2l0aG91dC1hY2wsYWNsIgotUEFDS0FHRUNPTkZJR1thdHRyXSA9ICItLXdpdGgtYXR0ciwtLXdpdGhvdXQtYXR0cixhdHRyIgotUEFDS0FHRUNPTkZJR1tsaWJhaW9dID0gIi0td2l0aC1saWJhaW8sLS13aXRob3V0LWxpYmFpbyxsaWJhaW8iCi1QQUNLQUdFQ09ORklHW2xpYmJzZF0gPSAiLS13aXRoLWxpYmJzZCwtLXdpdGhvdXQtbGliYnNkLGxpYmJzZCIKLVBBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtbGliY2FwLC0td2l0aG91dC1saWJjYXAsbGliY2FwIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCIKLQotUyA9ICIke1dPUktESVJ9L3RkYi0ke1BWfSIKLQotaW5oZXJpdCB3YWYtc2FtYmEKLQotI2Nyb3NzX2NvbXBpbGUgY2Fubm90IHVzZSBwcmVmb3JrZWQgcHJvY2Vzcywgc2luY2UgZm9yayBwcm9jZXNzIGVhcmxpZXIgdGhhbiBwb2ludCBzdWJwcm9jZXMucG9wZW4KLSN0byBjcm9zcyBQb3BlbgotZXhwb3J0IFdBRl9OT19QUkVGT1JLPSJ5ZXMiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXJwYXRoIFwKLSAgICAgICAgICAgICAgICAgLS1idW5kbGVkLWxpYnJhcmllcz1OT05FIFwKLSAgICAgICAgICAgICAgICAgLS1idWlsdGluLWxpYnJhcmllcz1yZXBsYWNlIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWxpYmljb252PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH1cCi0gICAgICAgICAgICAgICAgIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgIyBhZGQgdGhpcyBsaW5rIGZvciBjcm9zcyBjaGVjayBweXRob24gbW9kdWxlIGV4aXN0ZW5jZS4gZWc6IG9uIHg4Ni02NCBob3N0LCBjaGVjayBweXRob24gbW9kdWxlCi0gICAgICMgdW5kZXIgcmVjaXBlLXN5c3Jvb3Qgd2hpY2ggaXMgbWlwczY0LgotICAgICBjZCAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn07IGxuIC1zIHRkYi4qLnNvIHRkYi5zbwotfQotCi1QQUNLQUdFUyArPSAidGRiLXRvb2xzIHB5dGhvbjMtdGRiIgotCi1SUFJPVklERVNfJHtQTn0tZGJnICs9ICJweXRob24zLXRkYi1kYmciCi0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8qLnNvLioiCi1GSUxFU190ZGItdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU19weXRob24zLXRkYiA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L3NpdGUtcGFja2FnZXMvKiIKLVJERVBFTkRTX3B5dGhvbjMtdGRiID0gInB5dGhvbjMiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfXB5dGhvbjMtdGRiID0gImRldi1zbyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGRiL2xpYnRkYl8xLjQuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGRiL2xpYnRkYl8xLjQuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTMxMDE0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZGIvbGlidGRiXzEuNC4zLmJiCkBAIC0wLDAgKzEsNTYgQEAKK1NVTU1BUlkgPSAiVGhlIHRkYiBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3RkYi5zYW1iYS5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMLTMuMCsgJiBHUEwtMy4wKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vdG9vbHMvdGRiZHVtcC5jO2VuZGxpbmU9MTg7bWQ1PWI1OWNkNDVhYTg2MjQ1NzgxMjZhOGM5OGY0ODAxOGM0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdGRiLmg7ZW5kbGluZT0yNzttZDU9ZjViYjU0NDY0MWQzMDgxODIxYmNjMWRkNTgzMTBiZTYiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9zYW1iYS5vcmcvZnRwL3RkYi90ZGItJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3RkYi1BZGQtY29uZmlndXJlLW9wdGlvbnMtZm9yLXBhY2thZ2VzLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImU2MzhlODg5MGY3NDM2MjRhNzU0MzA0YjNmOTk0ZjRkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM4MDU4MzkzZGZhMTVmNDdlMTFlYmQyZjFkMTMyNjkzZjBiM2IzYjhiZjIyZDAyMDFiZmIzMDUwMjZmODhhMWIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3hhdHRyJywgJ2F0dHInLCAnJywgZCl9IFwKKyIKKworUEFDS0FHRUNPTkZJR1thY2xdID0gIi0td2l0aC1hY2wsLS13aXRob3V0LWFjbCxhY2wiCitQQUNLQUdFQ09ORklHW2F0dHJdID0gIi0td2l0aC1hdHRyLC0td2l0aG91dC1hdHRyLGF0dHIiCitQQUNLQUdFQ09ORklHW2xpYmFpb10gPSAiLS13aXRoLWxpYmFpbywtLXdpdGhvdXQtbGliYWlvLGxpYmFpbyIKK1BBQ0tBR0VDT05GSUdbbGliYnNkXSA9ICItLXdpdGgtbGliYnNkLC0td2l0aG91dC1saWJic2QsbGliYnNkIgorUEFDS0FHRUNPTkZJR1tsaWJjYXBdID0gIi0td2l0aC1saWJjYXAsLS13aXRob3V0LWxpYmNhcCxsaWJjYXAiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQsLS13aXRob3V0LXZhbGdyaW5kLHZhbGdyaW5kIgorCitTID0gIiR7V09SS0RJUn0vdGRiLSR7UFZ9IgorCitpbmhlcml0IHdhZi1zYW1iYQorCisjY3Jvc3NfY29tcGlsZSBjYW5ub3QgdXNlIHByZWZvcmtlZCBwcm9jZXNzLCBzaW5jZSBmb3JrIHByb2Nlc3MgZWFybGllciB0aGFuIHBvaW50IHN1YnByb2Nlcy5wb3BlbgorI3RvIGNyb3NzIFBvcGVuCitleHBvcnQgV0FGX05PX1BSRUZPUks9InllcyIKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtcnBhdGggXAorICAgICAgICAgICAgICAgICAtLWJ1bmRsZWQtbGlicmFyaWVzPU5PTkUgXAorICAgICAgICAgICAgICAgICAtLWJ1aWx0aW4tbGlicmFyaWVzPXJlcGxhY2UgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtbGliaWNvbnY9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fVwKKyAgICAgICAgICAgICAgICAiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICAjIGFkZCB0aGlzIGxpbmsgZm9yIGNyb3NzIGNoZWNrIHB5dGhvbiBtb2R1bGUgZXhpc3RlbmNlLiBlZzogb24geDg2LTY0IGhvc3QsIGNoZWNrIHB5dGhvbiBtb2R1bGUKKyAgICAgIyB1bmRlciByZWNpcGUtc3lzcm9vdCB3aGljaCBpcyBtaXBzNjQuCisgICAgIGNkICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfTsgbG4gLXMgdGRiLiouc28gdGRiLnNvCit9CisKK1BBQ0tBR0VTICs9ICJ0ZGItdG9vbHMgcHl0aG9uMy10ZGIiCisKK1JQUk9WSURFU18ke1BOfS1kYmcgKz0gInB5dGhvbjMtdGRiLWRiZyIKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9Lyouc28uKiIKK0ZJTEVTX3RkYi10b29scyA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTX3B5dGhvbjMtdGRiID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcy8qIgorUkRFUEVORFNfcHl0aG9uMy10ZGIgPSAicHl0aG9uMyIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9cHl0aG9uMy10ZGIgPSAiZGV2LXNvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9sb3dwYW4tdG9vbHMvbG93cGFuLXRvb2xzX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbG93cGFuLXRvb2xzL2xvd3Bhbi10b29sc19naXQuYmIKaW5kZXggNTg1OTY4Zi4uNTkxN2NmYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9sb3dwYW4tdG9vbHMvbG93cGFuLXRvb2xzX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xvd3Bhbi10b29scy9sb3dwYW4tdG9vbHNfZ2l0LmJiCkBAIC0yMSw3ICsyMSw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHB5dGhvbi1kaXIgcGtnY29uZmlnCitpbmhlcml0IGF1dG90b29scyBweXRob24zLWRpciBwa2djb25maWcKIAogQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFtX2N2X3B5dGhvbl9weXRob25kaXI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vbG93cGFuLXRvb2xzIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L21lbWNhY2hlZC9tZW1jYWNoZWRfMS41LjIwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9tZW1jYWNoZWQvbWVtY2FjaGVkXzEuNS4yMC5iYgppbmRleCAzN2E3N2MzLi5mZWI0ZjNmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L21lbWNhY2hlZC9tZW1jYWNoZWRfMS41LjIwLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbWVtY2FjaGVkL21lbWNhY2hlZF8xLjUuMjAuYmIKQEAgLTI2LDcgKzI2LDcgQEAKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJjZmQ3YjAyM2E5Y2VmZTdhZThhNjcxODRmNTFkODQxZGJiZjk3OTk0ZWQwZThhNTVlMzFlZTA5MjMyMGVhMWU0IgogCiAjIHNldCB0aGUgc2FtZSBDT01QQVRJQkxFX0hPU1QgYXMgbGliaHVnZXRsYmZzCi1DT01QQVRJQkxFX0hPU1QgPSAnKGkuODZ8eDg2XzY0fHBvd2VycGN8cG93ZXJwYzY0fGFybSkuKi1saW51eCcKK0NPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjR8cG93ZXJwY3xwb3dlcnBjNjR8YWFyY2g2NHxhcm0pLiotbGludXgqIgogCiBweXRob24gX19hbm9ueW1vdXMgKCkgewogICAgIGVuZGlhbm5lc3MgPSBkLmdldFZhcignU0lURUlORk9fRU5ESUFOTkVTUycpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25iZGtpdC9uYmRraXQvMDAwMS1zZXJ2ZXItRml4LWJ1aWxkLXdoZW4tcHJpbnRmLWlzLWEtbWFjcm8ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25iZGtpdC9uYmRraXQvMDAwMS1zZXJ2ZXItRml4LWJ1aWxkLXdoZW4tcHJpbnRmLWlzLWEtbWFjcm8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdlYzQxZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmJka2l0L25iZGtpdC8wMDAxLXNlcnZlci1GaXgtYnVpbGQtd2hlbi1wcmludGYtaXMtYS1tYWNyby5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDI4ZjA3NzE1YWI0ZDY3MGNlODFlMTI3NzZiYmVjZTA0MzMwNWJkODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxMSBBcHIgMjAyMCAxNTowODozOSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBzZXJ2ZXI6IEZpeCBidWlsZCB3aGVuIHByaW50ZiBpcyBhIG1hY3JvCisKK2NsYW5nIGNvbXBsYWlucyBvbiB4ODYgd2hlbiBidWlsZGluZworCittYWluLmM6MTE2OjI6IGVycm9yOiBlbWJlZGRpbmcgYSAjaW5jbHVkZSBkaXJlY3RpdmUgd2l0aGluIG1hY3JvIGFyZ3VtZW50cyBpcyBub3Qgc3VwcG9ydGVkCisgXgorCitjb252ZXJ0IG5lc3RpbmcgaW5jbHVkZSBpbnRvIGEgc3RyaW5nIGFzc2lnbm1lbnQsIHRvIHNhbWUgZWZmZWN0IGJ1dAorbWFraW5nIGl0IGNvbXBhdGlibGUgd2l0aCBjbGFuZyBhcyB3ZWxsCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbGliZ3Vlc3Rmcy9uYmRraXQvcHVsbC8zXQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNlcnZlci9tYWluLmMgfCA1ICsrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NlcnZlci9tYWluLmMgYi9zZXJ2ZXIvbWFpbi5jCitpbmRleCA3NDgxMjJmLi5jMGFjODc0IDEwMDY0NAorLS0tIGEvc2VydmVyL21haW4uYworKysrIGIvc2VydmVyL21haW4uYworQEAgLTExMiw5ICsxMTIsMTAgQEAgc3RhdGljIHZvaWQKKyB1c2FnZSAodm9pZCkKKyB7CisgICAvKiAtLXtzaG9ydCxsb25nfS1vcHRpb25zIHJlbWFpbiB1bmRvY3VtZW50ZWQgKi8KKy0gIHByaW50ZiAoCisrICBjaGFyIGNvbnN0ICpvcHRfbGlzdCA9CisgI2luY2x1ZGUgInN5bm9wc2lzLmMiCistICApOworKwkgIDsKKysgIHByaW50ZiAoIiVzXG4iLCBvcHRfbGlzdCk7CisgICBwcmludGYgKCJcbiIKKyAgICAgICAgICAgIlBsZWFzZSByZWFkIHRoZSBuYmRraXQoMSkgbWFudWFsIHBhZ2UgZm9yIGZ1bGwgdXNhZ2UuXG4iKTsKKyB9CistLSAKKzIuMjYuMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25iZGtpdC9uYmRraXRfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uYmRraXQvbmJka2l0X2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjNlNDllCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uYmRraXQvbmJka2l0X2dpdC5iYgpAQCAtMCwwICsxLDM2IEBACitTVU1NQVJZID0gIm5iZGtpdCBpcyBhIHRvb2xraXQgZm9yIGNyZWF0aW5nIE5CRCBzZXJ2ZXJzLiIKK0RFU0NSSVBUSU9OID0gIk5CRCDigJQgTmV0d29yayBCbG9jayBEZXZpY2Ug4oCUIGlzIGEgcHJvdG9jb2wgXAorZm9yIGFjY2Vzc2luZyBCbG9jayBEZXZpY2VzIChoYXJkIGRpc2tzIGFuZCBkaXNrLWxpa2UgdGhpbmdzKSBcCitvdmVyIGEgTmV0d29yay4gXAorXAorbmJka2l0IGlzIGEgdG9vbGtpdCBmb3IgY3JlYXRpbmcgTkJEIHNlcnZlcnMuIgorCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliZ3Vlc3Rmcy9uYmRraXQiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTQzMzJhOTc4MDg5OTRjZjIxMzNhNjViNmM2ZjMzZWFmIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGliZ3Vlc3Rmcy9uYmRraXQuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc2VydmVyLUZpeC1idWlsZC13aGVuLXByaW50Zi1pcy1hLW1hY3JvLnBhdGNoIFwKKyIKKworUFYgPSAiMS4xOS42K2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gIjI1NzU2MWJjOWYyZjAxZWI5ZjIxNjg2YmNlYzRiODYzZDE3YTI2YzQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0RFUEVORFMgPSAiY3VybCB4eiBlMmZzcHJvZ3MgemxpYiIKKworIyBhdXRvdG9vbHMtYnJva2Vuc2VwIGlzIG5lZWRlZCBhcyBuYmRraXQgZG9lcyBub3Qgc3VwcG9ydCBidWlsZCBpbiBleHRlcm5hbCBkaXJlY3RvcnkKK2luaGVyaXQgcGtnY29uZmlnIHB5dGhvbjNuYXRpdmUgcGVybG5hdGl2ZSBiYXNoLWNvbXBsZXRpb24gYXV0b3Rvb2xzLWJyb2tlbnNlcAorCisjIFRob3NlIGFyZSByZXF1aXJlZCB0byBidWlsZCBzdGFuZGFsb25lCitFWFRSQV9PRUNPTkYgPSAiIC0td2l0aG91dC1saWJ2aXJ0IC0td2l0aG91dC1saWJndWVzdGZzIC0tZGlzYWJsZS1wZXJsIgorCisjIERpc2FibGUgc29tZSBleHRlbmRlZCBzdXBwb3J0IChub3QgZGVzaXJlZCBmb3Igc21hbGwgZW1iZWRkZWQgc3lzdGVtcykKKyNFWFRSQV9PRUNPTkYgKz0gIiAtLWRpc2FibGUtcHl0aG9uIgorI0VYVFJBX09FQ09ORiArPSAiIC0tZGlzYWJsZS1vY2FtbCIKKyNFWFRSQV9PRUNPTkYgKz0gIiAtLWRpc2FibGUtcnVzdCIKKyNFWFRSQV9PRUNPTkYgKz0gIiAtLWRpc2FibGUtcnVieSIKKyNFWFRSQV9PRUNPTkYgKz0gIiAtLWRpc2FibGUtdGNsIgorI0VYVFJBX09FQ09ORiArPSAiIC0tZGlzYWJsZS1sdWEiCisjRVhUUkFfT0VDT05GICs9ICIgLS1kaXNhYmxlLXZkZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25jcC9saWJvd2ZhdF8wLjMyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uY3AvbGlib3dmYXRfMC4zMi5iYgppbmRleCAyNGY0MTM1Li5kMmY0ZGY3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25jcC9saWJvd2ZhdF8wLjMyLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmNwL2xpYm93ZmF0XzAuMzIuYmIKQEAgLTI2LDQgKzI2LDYgQEAKICAgICAgICAgTUFOM0RJUj0ke21hbmRpcn0vbWFuMwogfQogCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25kaXNjNi9uZGlzYzZfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZGlzYzYvbmRpc2M2X2dpdC5iYgppbmRleCBlYzQ4Nzk3Li41Zjg2NjA1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25kaXNjNi9uZGlzYzZfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmRpc2M2L25kaXNjNl9naXQuYmIKQEAgLTE1LDYgKzE1LDggQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAorREVQRU5EUyA9ICJjb3JldXRpbHMtbmF0aXZlIgorCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0CiAKIEVYVFJBX09FQ09ORiArPSAiUEVSTD0ke1VTUkJJTlBBVEh9L3BlcmwiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25ldGNmL25ldGNmXzAuMi44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZXRjZi9uZXRjZl8wLjIuOC5iYgppbmRleCBjNTdlN2Q0Li5hMTgwNTcxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25ldGNmL25ldGNmXzAuMi44LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmV0Y2YvbmV0Y2ZfMC4yLjguYmIKQEAgLTIwLDcgKzIwLDcgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotaW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAoraW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scyBwZXJsbmF0aXZlIHBrZ2NvbmZpZyBzeXN0ZW1kCiAKIEVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAtLXdpdGgtZHJpdmVyPXJlZGhhdCIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZXRwZXJmL25ldHBlcmZfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZXRwZXJmL25ldHBlcmZfZ2l0LmJiCmluZGV4IGYxZjYyZGYuLmQ0OGYzYWUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmV0cGVyZi9uZXRwZXJmX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25ldHBlcmYvbmV0cGVyZl9naXQuYmIKQEAgLTE5LDcgKzE5LDcgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotaW5oZXJpdCB1cGRhdGUtcmMuZCBhdXRvdG9vbHMKK2luaGVyaXQgdXBkYXRlLXJjLmQgYXV0b3Rvb2xzIHRleGluZm8KIAogIyBjcHVfc2V0LnBhdGNoIHBsdXMgX0dOVV9TT1VSQ0UgbWFrZXMgc3JjL25ldGxpYi5jIGNvbXBpbGUgd2l0aCBDUFVfIG1hY3JvcwogQ0ZMQUdTX2FwcGVuZCA9ICIgLURET19VTklYIC1ERE9fSVBWNiAtRF9HTlVfU09VUkNFIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZ2h0dHAyL25naHR0cDJfMS40MC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZ2h0dHAyL25naHR0cDJfMS40MC4wLmJiCmluZGV4IGYzN2U5YjcuLjllZDhjNTYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmdodHRwMi9uZ2h0dHAyXzEuNDAuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25naHR0cDIvbmdodHRwMl8xLjQwLjAuYmIKQEAgLTE0LDcgKzE0LDcgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICI4ZDFhNmI5Njc2MDI1NGU0ZGQxNDJkNzE3NmU4ZmI3YyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIwOWZjNDNkNDI4ZmYyMzcxMzg3MzNjNzM3YjI5ZmIxYTdlNDlkNDlkZTA2ZDJlZGJlZDNiYzRjZGNlZTY5MDczIgogCi1pbmhlcml0IGNtYWtlIG1hbnBhZ2VzIHB5dGhvbm5hdGl2ZQoraW5oZXJpdCBjbWFrZSBtYW5wYWdlcyBweXRob24zbmF0aXZlCiBQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICIiCiAKICMgZXhhbXBsZXMgYXJlIG5ldmVyIGluc3RhbGxlZCwgYW5kIGRvbid0IG5lZWQgdG8gYmUgYnVpbHQgaW4gdGhlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cGJpbmQtbXRfMi42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXBiaW5kLW10XzIuNi5iYgppbmRleCA0ZjdmOGFhLi4wM2I5OGM5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cGJpbmQtbXRfMi42LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwYmluZC1tdF8yLjYuYmIKQEAgLTQ1LDcgKzQ1LDcgQEAKIAogQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3ZfcHJvZ19TVFJJUD0vYmluL3RydWUiCiAKLUNGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtSSR7U1RBR0lOR19JTkNESVJ9L25zczMiCitDRkxBR1NfYXBwZW5kID0gIiAtSSR7U1RBR0lOR19JTkNESVJ9L25zczMgLUkke1NUQUdJTkdfSU5DRElSfS9uc3ByIgogCiBkb19pbnN0YWxsX2FwcGVuZCAoKSB7CiAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wL2VtYmVkLWxpYnMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcC9lbWJlZC1saWJzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMWFiNzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcC9lbWJlZC1saWJzLnBhdGNoCkBAIC0wLDAgKzEsMjAgQEAKK1VzZSAtLWVtYmVkIG9wdGlvbiBzbyB0aGF0IGl0IGNhbiByZXR1cm4gbGlicHl0aG9uIGFzIHdlbGwKKworJSAuLi9yZWNpcGUtc3lzcm9vdC1uYXRpdmUvdXNyL2Jpbi9weXRob24zLW5hdGl2ZS9weXRob24zLWNvbmZpZyAtLWxpYnMgLS1lbWJlZAorLWxweXRob24zLjggLWxjcnlwdCAtbHB0aHJlYWQgLWxkbCAtbHV0aWwgLWxtIC1sbQorW2tyYWpAYXBvbGxvIC9tbnQvYi95b2UvYnVpbGQvdG1wL3dvcmsvY29ydGV4YTd0MmhmLW5lb24tdmZwdjQteW9lLWxpbnV4LWdudWVhYmkvbnRvcC81LjAuMS1yMC9udG9wLTUuMC4xXQorJSAuLi9yZWNpcGUtc3lzcm9vdC1uYXRpdmUvdXNyL2Jpbi9weXRob24zLW5hdGl2ZS9weXRob24zLWNvbmZpZyAtLWxpYnMKKy1sY3J5cHQgLWxwdGhyZWFkIC1sZGwgLWx1dGlsIC1sbSAtbG0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtMTQ2Myw3ICsxNDYzLDcgQEAgZG5sPgorICAgZmkKKyAKKyAgIGlmIHRlc3QgIngkUFlUSE9OX0NPTkZJRyIgIT0gIngiOyB0aGVuCistICAgIFBZVEhPTl9MSUJTPSJgJFBZVEhPTl9DT05GSUcgLS1saWJzYCIKKysgICAgUFlUSE9OX0xJQlM9ImAkUFlUSE9OX0NPTkZJRyAtLWxpYnMgLS1lbWJlZGAiCisgICAgIGlmIHRlc3QgIngkUFlUSE9OX0xJQlMiID0gIngiOyB0aGVuCisgICAgICAgQUNfTVNHX1JFU1VMVChQeXRob25bLWRldmVsXSBzdXBwb3J0IGlzIHByZXNlbnQgYnV0IG1pc2NvbmZpZ3VyZWQpICAgICAKKyAgICAgZWxzZSAgIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udG9wL250b3BfNS4wLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcF81LjAuMS5iYgppbmRleCA4MGYwMDliLi5kODM1ZTM5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcF81LjAuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcF81LjAuMS5iYgpAQCAtMTksMTUgKzE5LDE2IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5EUEktSW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBsdWdpbnMtTWFrZWZpbGUuYW0tZml4LWZvci1hdXRvbWFrZS0xLjE2LjEucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZml4LW1pc3NpbmctcmV0dXJuLWZyb20tbm9uLXZvaWQtZnVuY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZW1iZWQtbGlicy5wYXRjaCBcCiAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjAxNzEwYjY5MjVhOGE1ZmZlMWE0MWI4YjUxMmViZDY5IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlOGU4NGNiMTRkMjE3M2JlYWNhNGQ0Y2I5OTFhMTRkODRhNGJlZjg0ZWMzN2IyMjc2YmMzNjNmNDVjNTJlZjgiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9udG9wL2ZpbGVzL250b3AvU3RhYmxlIgogCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXNlcmFkZCBweXRob25uYXRpdmUgcGtnY29uZmlnIHN5c3RlbWQKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1c2VyYWRkIHB5dGhvbjNuYXRpdmUgcGtnY29uZmlnIHN5c3RlbWQKIAotREVQRU5EUyA9ICJnZW9pcCBycmR0b29sIHB5dGhvbiB6bGliIGxpYnBjYXAgZ2RibSIKK0RFUEVORFMgPSAiZ2VvaXAgcnJkdG9vbCBweXRob24zIHpsaWIgbGlicGNhcCBnZGJtIgogCiBQQUNLQUdFQ09ORklHID8/PSAib3BlbnNzbCBzbm1wIHBsdWdpbnMiCiBQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1zc2wsIC0td2l0aG91dC1zc2wsIG9wZW5zc2wsIG9wZW5zc2wiCkBAIC0zNSw3ICszNiw3IEBACiAtLWRpc2FibGUtc25tcCxuZXQtc25tcCwiCiBQQUNLQUdFQ09ORklHW3BsdWdpbnNdID0gIi0tZW5hYmxlLXBsdWdpbnM9eWVzLCAtLWRpc2FibGUtcGx1Z2lucywgLCIKIAotRVhUUkFfT0VDT05GICs9ICJhY19jdl9maWxlX2FjbG9jYWxfbTQ9eWVzIGFjX2N2X2ZpbGVfZGVwY29tcD1ubyIKK0VYVFJBX09FQ09ORiArPSAiYWNfY3ZfZmlsZV9hY2xvY2FsX200PXllcyBhY19jdl9maWxlX2RlcGNvbXA9bm8gUFlUSE9OX0NPTkZJRz1weXRob24zLWNvbmZpZyIKIAogZG9fY29uZmlndXJlKCkgewogICAgIGNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYWNsb2NhbC9saWJ0b29sLm00IGxpYnRvb2wubTQuaW4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRwL250cC9yZXByb2R1Y2liaWxpdHktcmVzcGVjdC1zb3VyY2UtZGF0ZS1lcG9jaC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRwL250cC9yZXByb2R1Y2liaWxpdHktcmVzcGVjdC1zb3VyY2UtZGF0ZS1lcG9jaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThlNzFjMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250cC9udHAvcmVwcm9kdWNpYmlsaXR5LXJlc3BlY3Qtc291cmNlLWRhdGUtZXBvY2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0tLS0gbnRwLTQuMi44cDEyLm9yaWdpbmFsL3NjcmlwdHMvYnVpbGQvbWt2ZXIuaW4JMjAxOC0xMS0xMiAxNDowNjo0OS4zMzMwMjA0MzAgKzEzMDAKLSsrKyBudHAtNC4yLjhwMTIvc2NyaXB0cy9idWlsZC9ta3Zlci5pbgkyMDE4LTExLTEyIDE0OjE1OjA0Ljk0NzQ4MDE2NyArMTMwMAotQEAgLTE1LDcgKzE1LDEyIEBACi0gICopIENvbmZTdHI9IiR7Q29uZlN0cn0tQFZFUl9TVUZGSVhAIiA7OwotIGVzYWMKLSAKLS1Db25mU3RyPSIkQ29uZlN0ciBgTENfVElNRT1DIFRaPVVUQyBkYXRlYCIKLStpZiBbIC1uICIkU09VUkNFX0RBVEVfRVBPQ0giIF07IHRoZW4KLSsgICBDb25mU3RyPSIkQ29uZlN0ciBgTENfVElNRT1DIFRaPVVUQyBkYXRlIC1kQCRTT1VSQ0VfREFURV9FUE9DSCAyPi9kZXYvbnVsbGAiIHx8Ci0rICAgQ29uZlN0cj0iJENvbmZTdHIgYExDX1RJTUU9QyBUWj1VVEMgZGF0ZSAtciAkU09VUkNFX0RBVEVfRVBPQ0hgIgotK2Vsc2UKLSsgICBDb25mU3RyPSIkQ29uZlN0ciBgTENfVElNRT1DIFRaPVVUQyBkYXRlYCIKLStmaQotIAotIGlmIFsgISAtZiAudmVyc2lvbiBdOyB0aGVuCi0gICBlY2hvIDAgPiAudmVyc2lvbgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udHAvbnRwXzQuMi44cDEzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udHAvbnRwXzQuMi44cDEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTUwZmFiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRwL250cF80LjIuOHAxMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3OSArMCwwIEBACi1TVU1NQVJZID0gIk5ldHdvcmsgVGltZSBQcm90b2NvbCBkYWVtb24gYW5kIHV0aWxpdGllcyIKLURFU0NSSVBUSU9OID0gIlRoZSBOZXR3b3JrIFRpbWUgUHJvdG9jb2wgKE5UUCkgaXMgdXNlZCB0byBcCi1zeW5jaHJvbml6ZSB0aGUgdGltZSBvZiBhIGNvbXB1dGVyIGNsaWVudCBvciBzZXJ2ZXIgdG8gXAotYW5vdGhlciBzZXJ2ZXIgb3IgcmVmZXJlbmNlIHRpbWUgc291cmNlLCBzdWNoIGFzIGEgcmFkaW8gXAotb3Igc2F0ZWxsaXRlIHJlY2VpdmVyIG9yIG1vZGVtLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9zdXBwb3J0Lm50cC5vcmciCi1TRUNUSU9OID0gIm5ldCIKLUxJQ0VOU0UgPSAiTlRQIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT00Y2VlMzMyNTc0Njc1MDllNDk4ZjRjZDlhNmE0YmQ1MyIKLQotREVQRU5EUyA9ICJsaWJldmVudCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmVlY2lzLnVkZWwuZWR1L35udHAvbnRwX3Nwb29sL250cDQvbnRwLTQuMi9udHAtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL250cC00LjIuNF9wNi1uYW5vLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlcHJvZHVjaWJpbGl0eS1maXhlZC1wYXRoLXRvLXBvc2l4LXNoZWxsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlcHJvZHVjaWJpbGl0eS1yZXNwZWN0LXNvdXJjZS1kYXRlLWVwb2NoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL250cGQgXAotICAgICAgICAgICBmaWxlOi8vbnRwLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vbnRwZGF0ZSBcCi0gICAgICAgICAgIGZpbGU6Ly9udHBkYXRlLmRlZmF1bHQgXAotICAgICAgICAgICBmaWxlOi8vbnRwZGF0ZS5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL250cGQuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9zbnRwLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vc250cCBcCi0gICAgICAgICAgIGZpbGU6Ly9udHBkLmxpc3QgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWEwNDBhYjliNGNhNjU2YjUyMjliODlkNmI4MjJmMTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjg4NzcyY2VjZmNkOWE1MzY5NGZmYWIxMDhkMTgyNWEzMWJhNzdmM2E4NDY2YjA0MDFiYWVjYTNiYzIzMmEzOCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgdXNlcmFkZCBzeXN0ZW1kIHBrZ2NvbmZpZwotCi0jIFRoZSBhY19jdl9oZWFkZXJfcmVhZGxpbmVfaGlzdG9yeSBpcyB0byBzdG9wIG50cGRjIGRlcGVuZGluZyBvbiBlaXRoZXIKLSMgcmVhZGxpbmUgb3IgY3Vyc2VzCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1uZXQtc25tcC1jb25maWc9bm8gXAotICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbnRwc25tcGQgXAotICAgICAgICAgICAgICAgICBhY19jdl9oZWFkZXJfcmVhZGxpbmVfaGlzdG9yeV9oPW5vIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLXlpZWxkaW5nX3NlbGVjdD15ZXMgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtbG9jZmlsZT1yZWRoYXQgXAotICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcnBhdGggXAotICAgICAgICAgICAgICAgICAiCi1DRkxBR1NfYXBwZW5kID0gIiAtRFBUWVNfQVJFX0dFVFBUIC1EUFRZU19BUkVfU0VBUkNIRUQiCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCi1OVFBfVVNFUl9IT01FID89ICIvdmFyL2xpYi9udHAiCi1VU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0taG9tZS1kaXIgJHtOVFBfVVNFUl9IT01FfSBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tbm8tY3JlYXRlLWhvbWUgXAotICAgICAgICAgICAgICAgICAgICAgICAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIG50cCIKLQotIyBOQjogZGVidWcgaXMgZGVmYXVsdC1lbmFibGVkIGJ5IE5UUDsga2VlcCBpdCBkZWZhdWx0LWVuYWJsZWQgaGVyZS4KLVBBQ0tBR0VDT05GSUcgPz89ICJjYXAgZGVidWcgcmVmY2xvY2tzIG9wZW5zc2wgXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbC1saWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtb3BlbnNzbC1pbmNkaXI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtY3J5cHRvLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1vcGVuc3NsIC0td2l0aG91dC1jcnlwdG8sIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbY2FwXSA9ICItLWVuYWJsZS1saW51eGNhcHMsLS1kaXNhYmxlLWxpbnV4Y2FwcyxsaWJjYXAiCi1QQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtbGluZWVkaXRsaWJzLC0td2l0aG91dC1saW5lZWRpdGxpYnMscmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW3JlZmNsb2Nrc10gPSAiLS1lbmFibGUtYWxsLWNsb2NrcywtLWRpc2FibGUtYWxsLWNsb2NrcyxwcHMtdG9vbHMiCi1QQUNLQUdFQ09ORklHW2RlYnVnXSA9ICItLWVuYWJsZS1kZWJ1Z2dpbmcsLS1kaXNhYmxlLWRlYnVnZ2luZyIKLVBBQ0tBR0VDT05GSUdbbWRuc10gPSAiYWNfY3ZfaGVhZGVyX2Ruc19zZF9oPXllcyxhY19jdl9oZWFkZXJfZG5zX3NkX2g9bm8sbWRucyIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9udHAuY29uZiAke0R9JHtzeXNjb25mZGlyfQotICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vbnRwZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L250cGRhdGUgJHtEfSR7YmluZGlyfS9udHBkYXRlLXN5bmMKLQotICAgIGluc3RhbGwgLW0gNzU1IC1kICR7RH0ke05UUF9VU0VSX0hPTUV9Ci0gICAgY2hvd24gbnRwOm50cCAke0R9JHtOVFBfVVNFUl9IT01FfQotCi0gICAgIyBGaXggaGFyZGNvZGVkIHBhdGhzIGluIHNjcmlwdHMKLSAgICBzZWQgLWkgJ3MhL3Vzci9zYmluLyEke3NiaW5kaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYwotICAgIHNlZCAtaSAncyEvdXNyL2Jpbi8hJHtiaW5kaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYwotICAgIHNlZCAtaSAncyEvZXRjLyEke3N5c2NvbmZkaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYwotICAgIHNlZCAtaSAncyEvdmFyLyEke2xvY2Fsc3RhdGVkaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYwotICAgIHNlZCAtaSAncyFeUEFUSD0uKiFQQVRIPSR7YmFzZV9zYmluZGlyfToke2Jhc2VfYmluZGlyfToke3NiaW5kaXJ9OiR7YmluZGlyfSEnICR7RH0ke2JpbmRpcn0vbnRwZGF0ZS1zeW5jCi0gICAgc2VkIC1pICcxcywjIS4qcGVybCAtdywjISAke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtzYmluZGlyfS9udHB0cmFjZQotICAgIHNlZCAtaSAnL3VzZS9pIHVzZSB3YXJuaW5nczsnICR7RH0ke3NiaW5kaXJ9L250cHRyYWNlCi0gICAgc2VkIC1pICcxcywjIS4qcGVybCwjISAke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtzYmluZGlyfS9udHAtd2FpdAotICAgIHNlZCAtaSAnL3VzZS9pIHVzZSB3YXJuaW5nczsnICR7RH0ke3NiaW5kaXJ9L250cC13YWl0Ci0gICAgc2VkIC1pICcxcywjIS4qcGVybCAtdywjISAke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtzYmluZGlyfS9jYWxjX3RpY2thZGoKLSAgICBzZWQgLWkgJy91c2UvaSB1c2Ugd2FybmluZ3M7JyAke0R9JHtzYmluZGlyfS9jYWxjX3RpY2thZGoKLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLSAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L250cGRhdGUuZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L250cGRhdGUKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zbnRwICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQKLSAgICBsbiAtcyAke2JpbmRpcn0vbnRwZGF0ZS1zeW5jICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9udHBkYXRlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbnRwZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NudHAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9udHAtdW5pdHMuZAotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L250cGQubGlzdCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L250cC11bml0cy5kLzYwLW50cGQubGlzdAotCi0gICAgIyBSZW1vdmUgYW4gZW1wdHkgbGliZXhlY2Rpci4KLSAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsaWJleGVjZGlyfQotfQotCi1QQUNLQUdFUyArPSAibnRwZGF0ZSBzbnRwIG50cGRjIG50cHEgJHtQTn0tdGlja2FkaiAke1BOfS11dGlscyIKLSMgTk9URTogeW91IGRvbid0IG5lZWQgbnRwZGF0ZSwgdXNlICJudHBkIC1xIC1nIC14IgotCi0jIG50cCBvcmlnaW5hbGx5IGluY2x1ZGVzIHRpY2thZGouIEl0J3Mgc3BsaXQgb2ZmIGZvciBpbmNsdXNpb24gaW4gc21hbGwgZmlybXdhcmUgaW1hZ2VzIG9uIHBsYXRmb3JtcwotIyB3aXRoIHdvbmt5IGNsb2NrcyAoZS5nLiBPcGVuU2x1ZykKLVJERVBFTkRTXyR7UE59ID0gIiR7UE59LXRpY2thZGoiCi0jIG50cGQgcmVxdWlyZSBsaWJnY2MgZm9yIGV4ZWN1dGlvbgotUkRFUEVORFNfJHtQTn0gKz0gImxpYmdjYyIKLSMgSGFuZGxlIG1vdmUgZnJvbSBiaW4gdG8gdXRpbHMgcGFja2FnZQotUlBST1ZJREVTXyR7UE59LXV0aWxzID0gIiR7UE59LWJpbiIKLVJSRVBMQUNFU18ke1BOfS11dGlscyA9ICIke1BOfS1iaW4iCi1SQ09ORkxJQ1RTXyR7UE59LXV0aWxzID0gIiR7UE59LWJpbiIKLSMgbnRwZGMgYW5kIG50cHEgd2VyZSBzcGxpdCBvdXQgb2YgbnRwLXV0aWxzCi1SREVQRU5EU18ke1BOfS11dGlscyA9ICJudHBkYyBudHBxIgotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IG50cGRhdGUgc250cCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJudHBkLnNlcnZpY2UiCi1TWVNURU1EX1NFUlZJQ0VfbnRwZGF0ZSA9ICJudHBkYXRlLnNlcnZpY2UiCi1TWVNURU1EX1NFUlZJQ0Vfc250cCA9ICJzbnRwLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFX3NudHAgPSAiZGlzYWJsZSIKLQotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLQotUlBST1ZJREVTX250cGRhdGUgKz0gIm50cGRhdGUtc3lzdGVtZCIKLVJSRVBMQUNFU19udHBkYXRlICs9ICJudHBkYXRlLXN5c3RlbWQiCi1SQ09ORkxJQ1RTX250cGRhdGUgKz0gIm50cGRhdGUtc3lzdGVtZCIKLQotUlNVR0dFU1RTXyR7UE59ID0gImlhbmEtZXRjIgotCi1GSUxFU18ke1BOfSA9ICIke3NiaW5kaXJ9L250cGQubnRwICR7c3lzY29uZmRpcn0vbnRwLmNvbmYgJHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCBcCi0gICAgJHtOVFBfVVNFUl9IT01FfSBcCi0gICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L250cC11bml0cy5kLzYwLW50cGQubGlzdCBcCi0iCi1GSUxFU18ke1BOfS10aWNrYWRqID0gIiR7c2JpbmRpcn0vdGlja2FkaiIKLUZJTEVTXyR7UE59LXV0aWxzID0gIiR7c2JpbmRpcn0gJHtkYXRhZGlyfS9udHAvbGliIgotUkRFUEVORFNfJHtQTn0tdXRpbHMgKz0gInBlcmwiCi1GSUxFU19udHBkYXRlID0gIiR7c2JpbmRpcn0vbnRwZGF0ZSBcCi0gICAgJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQvbnRwZGF0ZS1zeW5jIFwKLSAgICAke2JpbmRpcn0vbnRwZGF0ZS1zeW5jIFwKLSAgICAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvbnRwZGF0ZSBcCi0gICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9udHBkYXRlLnNlcnZpY2UgXAotIgotRklMRVNfc250cCA9ICIke3NiaW5kaXJ9L3NudHAgXAotICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvc250cCBcCi0gICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc250cC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAiCi1GSUxFU19udHBkYyA9ICIke3NiaW5kaXJ9L250cGRjIgotRklMRVNfbnRwcSA9ICIke3NiaW5kaXJ9L250cHEiCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L250cC5jb25mIgotQ09ORkZJTEVTX250cGRhdGUgPSAiJHtzeXNjb25mZGlyfS9kZWZhdWx0L250cGRhdGUiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJudHBkIgotIyBObyBkZXBlbmRlbmNpZXMsIHNvIGp1c3QgZ28gaW4gYXQgdGhlIHN0YW5kYXJkIGxldmVsICgyMCkKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgotCi1wa2dfcG9zdGluc3RfbnRwZGF0ZSgpIHsKLSAgICBpZiAhIGdyZXAgLXEgLXMgbnRwZGF0ZSAkRC92YXIvc3Bvb2wvY3Jvbi9yb290OyB0aGVuCi0gICAgICAgIGVjaG8gImFkZGluZyBjcm9udGFiIgotICAgICAgICB0ZXN0IC1kICREL3Zhci9zcG9vbC9jcm9uIHx8IG1rZGlyIC1wICREL3Zhci9zcG9vbC9jcm9uCi0gICAgICAgIGVjaG8gIjMwICogKiAqICogICAgJHtiaW5kaXJ9L250cGRhdGUtc3luYyBzaWxlbnQiID4+ICREL3Zhci9zcG9vbC9jcm9uL3Jvb3QKLSAgICBmaQotfQotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJudHBkIgotQUxURVJOQVRJVkVfTElOS19OQU1FW250cGRdID0gIiR7c2JpbmRpcn0vbnRwZCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRwL250cF80LjIuOHAxNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRwL250cF80LjIuOHAxNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGY2NjA4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udHAvbnRwXzQuMi44cDE0LmJiCkBAIC0wLDAgKzEsMTc4IEBACitTVU1NQVJZID0gIk5ldHdvcmsgVGltZSBQcm90b2NvbCBkYWVtb24gYW5kIHV0aWxpdGllcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBOZXR3b3JrIFRpbWUgUHJvdG9jb2wgKE5UUCkgaXMgdXNlZCB0byBcCitzeW5jaHJvbml6ZSB0aGUgdGltZSBvZiBhIGNvbXB1dGVyIGNsaWVudCBvciBzZXJ2ZXIgdG8gXAorYW5vdGhlciBzZXJ2ZXIgb3IgcmVmZXJlbmNlIHRpbWUgc291cmNlLCBzdWNoIGFzIGEgcmFkaW8gXAorb3Igc2F0ZWxsaXRlIHJlY2VpdmVyIG9yIG1vZGVtLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zdXBwb3J0Lm50cC5vcmciCitTRUNUSU9OID0gIm5ldCIKK0xJQ0VOU0UgPSAiTlRQIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT00MTkwYjM5NDM1NjExZTkyYTRkYTc0ZTY4MjYyM2YxOSIKKworREVQRU5EUyA9ICJsaWJldmVudCIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmVlY2lzLnVkZWwuZWR1L35udHAvbnRwX3Nwb29sL250cDQvbnRwLTQuMi9udHAtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL250cC00LjIuNF9wNi1uYW5vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlcHJvZHVjaWJpbGl0eS1maXhlZC1wYXRoLXRvLXBvc2l4LXNoZWxsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL250cGQgXAorICAgICAgICAgICBmaWxlOi8vbnRwLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vbnRwZGF0ZSBcCisgICAgICAgICAgIGZpbGU6Ly9udHBkYXRlLmRlZmF1bHQgXAorICAgICAgICAgICBmaWxlOi8vbnRwZGF0ZS5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL250cGQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9zbnRwLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vc250cCBcCisgICAgICAgICAgIGZpbGU6Ly9udHBkLmxpc3QgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzgzZWRhZjFkNjhkZGY2NTFiZGU2NGVkYTU0YTU3OWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTk2MGU0ZjA4MWY2YWFmZDEwOGQ3MjFiYzNhYjE1ZjllOGRmZDA4ZGMwODMzOWFhOTViY2E5ZDI1NDVlNGViNyIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgdXNlcmFkZCBzeXN0ZW1kIHBrZ2NvbmZpZworCisjIFRoZSBhY19jdl9oZWFkZXJfcmVhZGxpbmVfaGlzdG9yeSBpcyB0byBzdG9wIG50cGRjIGRlcGVuZGluZyBvbiBlaXRoZXIKKyMgcmVhZGxpbmUgb3IgY3Vyc2VzCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1uZXQtc25tcC1jb25maWc9bm8gXAorICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbnRwc25tcGQgXAorICAgICAgICAgICAgICAgICBhY19jdl9oZWFkZXJfcmVhZGxpbmVfaGlzdG9yeV9oPW5vIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXlpZWxkaW5nX3NlbGVjdD15ZXMgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtbG9jZmlsZT1yZWRoYXQgXAorICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcnBhdGggXAorICAgICAgICAgICAgICAgICAiCitDRkxBR1NfYXBwZW5kID0gIiAtRFBUWVNfQVJFX0dFVFBUIC1EUFRZU19BUkVfU0VBUkNIRUQiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitOVFBfVVNFUl9IT01FID89ICIvdmFyL2xpYi9udHAiCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0taG9tZS1kaXIgJHtOVFBfVVNFUl9IT01FfSBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tbm8tY3JlYXRlLWhvbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIG50cCIKKworIyBOQjogZGVidWcgaXMgZGVmYXVsdC1lbmFibGVkIGJ5IE5UUDsga2VlcCBpdCBkZWZhdWx0LWVuYWJsZWQgaGVyZS4KK1BBQ0tBR0VDT05GSUcgPz89ICJjYXAgZGVidWcgcmVmY2xvY2tzIG9wZW5zc2wgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbC1saWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtb3BlbnNzbC1pbmNkaXI9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtY3J5cHRvLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1vcGVuc3NsIC0td2l0aG91dC1jcnlwdG8sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbY2FwXSA9ICItLWVuYWJsZS1saW51eGNhcHMsLS1kaXNhYmxlLWxpbnV4Y2FwcyxsaWJjYXAiCitQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtbGluZWVkaXRsaWJzLC0td2l0aG91dC1saW5lZWRpdGxpYnMscmVhZGxpbmUiCitQQUNLQUdFQ09ORklHW3JlZmNsb2Nrc10gPSAiLS1lbmFibGUtYWxsLWNsb2NrcywtLWRpc2FibGUtYWxsLWNsb2NrcyxwcHMtdG9vbHMiCitQQUNLQUdFQ09ORklHW2RlYnVnXSA9ICItLWVuYWJsZS1kZWJ1Z2dpbmcsLS1kaXNhYmxlLWRlYnVnZ2luZyIKK1BBQ0tBR0VDT05GSUdbbWRuc10gPSAiYWNfY3ZfaGVhZGVyX2Ruc19zZF9oPXllcyxhY19jdl9oZWFkZXJfZG5zX3NkX2g9bm8sbWRucyIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9udHAuY29uZiAke0R9JHtzeXNjb25mZGlyfQorICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vbnRwZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L250cGRhdGUgJHtEfSR7YmluZGlyfS9udHBkYXRlLXN5bmMKKworICAgIGluc3RhbGwgLW0gNzU1IC1kICR7RH0ke05UUF9VU0VSX0hPTUV9CisgICAgY2hvd24gbnRwOm50cCAke0R9JHtOVFBfVVNFUl9IT01FfQorCisgICAgIyBGaXggaGFyZGNvZGVkIHBhdGhzIGluIHNjcmlwdHMKKyAgICBzZWQgLWkgJ3MhL3Vzci9zYmluLyEke3NiaW5kaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYworICAgIHNlZCAtaSAncyEvdXNyL2Jpbi8hJHtiaW5kaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYworICAgIHNlZCAtaSAncyEvZXRjLyEke3N5c2NvbmZkaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYworICAgIHNlZCAtaSAncyEvdmFyLyEke2xvY2Fsc3RhdGVkaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYworICAgIHNlZCAtaSAncyFeUEFUSD0uKiFQQVRIPSR7YmFzZV9zYmluZGlyfToke2Jhc2VfYmluZGlyfToke3NiaW5kaXJ9OiR7YmluZGlyfSEnICR7RH0ke2JpbmRpcn0vbnRwZGF0ZS1zeW5jCisgICAgc2VkIC1pICcxcywjIS4qcGVybCAtdywjISAke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtzYmluZGlyfS9udHB0cmFjZQorICAgIHNlZCAtaSAnL3VzZS9pIHVzZSB3YXJuaW5nczsnICR7RH0ke3NiaW5kaXJ9L250cHRyYWNlCisgICAgc2VkIC1pICcxcywjIS4qcGVybCwjISAke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtzYmluZGlyfS9udHAtd2FpdAorICAgIHNlZCAtaSAnL3VzZS9pIHVzZSB3YXJuaW5nczsnICR7RH0ke3NiaW5kaXJ9L250cC13YWl0CisgICAgc2VkIC1pICcxcywjIS4qcGVybCAtdywjISAke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtzYmluZGlyfS9jYWxjX3RpY2thZGoKKyAgICBzZWQgLWkgJy91c2UvaSB1c2Ugd2FybmluZ3M7JyAke0R9JHtzYmluZGlyfS9jYWxjX3RpY2thZGoKKworICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L250cGRhdGUuZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L250cGRhdGUKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zbnRwICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvCisKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQKKyAgICBsbiAtcyAke2JpbmRpcn0vbnRwZGF0ZS1zeW5jICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9udHBkYXRlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbnRwZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NudHAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9udHAtdW5pdHMuZAorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L250cGQubGlzdCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L250cC11bml0cy5kLzYwLW50cGQubGlzdAorCisgICAgIyBSZW1vdmUgYW4gZW1wdHkgbGliZXhlY2Rpci4KKyAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsaWJleGVjZGlyfQorfQorCitQQUNLQUdFUyArPSAibnRwZGF0ZSBzbnRwIG50cGRjIG50cHEgJHtQTn0tdGlja2FkaiAke1BOfS11dGlscyIKKyMgTk9URTogeW91IGRvbid0IG5lZWQgbnRwZGF0ZSwgdXNlICJudHBkIC1xIC1nIC14IgorCisjIG50cCBvcmlnaW5hbGx5IGluY2x1ZGVzIHRpY2thZGouIEl0J3Mgc3BsaXQgb2ZmIGZvciBpbmNsdXNpb24gaW4gc21hbGwgZmlybXdhcmUgaW1hZ2VzIG9uIHBsYXRmb3JtcworIyB3aXRoIHdvbmt5IGNsb2NrcyAoZS5nLiBPcGVuU2x1ZykKK1JERVBFTkRTXyR7UE59ID0gIiR7UE59LXRpY2thZGoiCisjIG50cGQgcmVxdWlyZSBsaWJnY2MgZm9yIGV4ZWN1dGlvbgorUkRFUEVORFNfJHtQTn0gKz0gImxpYmdjYyIKKyMgSGFuZGxlIG1vdmUgZnJvbSBiaW4gdG8gdXRpbHMgcGFja2FnZQorUlBST1ZJREVTXyR7UE59LXV0aWxzID0gIiR7UE59LWJpbiIKK1JSRVBMQUNFU18ke1BOfS11dGlscyA9ICIke1BOfS1iaW4iCitSQ09ORkxJQ1RTXyR7UE59LXV0aWxzID0gIiR7UE59LWJpbiIKKyMgbnRwZGMgYW5kIG50cHEgd2VyZSBzcGxpdCBvdXQgb2YgbnRwLXV0aWxzCitSREVQRU5EU18ke1BOfS11dGlscyA9ICJudHBkYyBudHBxIgorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IG50cGRhdGUgc250cCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJudHBkLnNlcnZpY2UiCitTWVNURU1EX1NFUlZJQ0VfbnRwZGF0ZSA9ICJudHBkYXRlLnNlcnZpY2UiCitTWVNURU1EX1NFUlZJQ0Vfc250cCA9ICJzbnRwLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFX3NudHAgPSAiZGlzYWJsZSIKKworUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKKworUlBST1ZJREVTX250cGRhdGUgKz0gIm50cGRhdGUtc3lzdGVtZCIKK1JSRVBMQUNFU19udHBkYXRlICs9ICJudHBkYXRlLXN5c3RlbWQiCitSQ09ORkxJQ1RTX250cGRhdGUgKz0gIm50cGRhdGUtc3lzdGVtZCIKKworUlNVR0dFU1RTXyR7UE59ID0gImlhbmEtZXRjIgorCitGSUxFU18ke1BOfSA9ICIke3NiaW5kaXJ9L250cGQubnRwICR7c3lzY29uZmRpcn0vbnRwLmNvbmYgJHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCBcCisgICAgJHtOVFBfVVNFUl9IT01FfSBcCisgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L250cC11bml0cy5kLzYwLW50cGQubGlzdCBcCisiCitGSUxFU18ke1BOfS10aWNrYWRqID0gIiR7c2JpbmRpcn0vdGlja2FkaiIKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7c2JpbmRpcn0gJHtkYXRhZGlyfS9udHAvbGliIgorUkRFUEVORFNfJHtQTn0tdXRpbHMgKz0gInBlcmwiCitGSUxFU19udHBkYXRlID0gIiR7c2JpbmRpcn0vbnRwZGF0ZSBcCisgICAgJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQvbnRwZGF0ZS1zeW5jIFwKKyAgICAke2JpbmRpcn0vbnRwZGF0ZS1zeW5jIFwKKyAgICAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvbnRwZGF0ZSBcCisgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9udHBkYXRlLnNlcnZpY2UgXAorIgorRklMRVNfc250cCA9ICIke3NiaW5kaXJ9L3NudHAgXAorICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvc250cCBcCisgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc250cC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAiCitGSUxFU19udHBkYyA9ICIke3NiaW5kaXJ9L250cGRjIgorRklMRVNfbnRwcSA9ICIke3NiaW5kaXJ9L250cHEiCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L250cC5jb25mIgorQ09ORkZJTEVTX250cGRhdGUgPSAiJHtzeXNjb25mZGlyfS9kZWZhdWx0L250cGRhdGUiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJudHBkIgorIyBObyBkZXBlbmRlbmNpZXMsIHNvIGp1c3QgZ28gaW4gYXQgdGhlIHN0YW5kYXJkIGxldmVsICgyMCkKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgorCitwa2dfcG9zdGluc3RfbnRwZGF0ZSgpIHsKKyAgICBpZiAhIGdyZXAgLXEgLXMgbnRwZGF0ZSAkRC92YXIvc3Bvb2wvY3Jvbi9yb290OyB0aGVuCisgICAgICAgIGVjaG8gImFkZGluZyBjcm9udGFiIgorICAgICAgICB0ZXN0IC1kICREL3Zhci9zcG9vbC9jcm9uIHx8IG1rZGlyIC1wICREL3Zhci9zcG9vbC9jcm9uCisgICAgICAgIGVjaG8gIjMwICogKiAqICogICAgJHtiaW5kaXJ9L250cGRhdGUtc3luYyBzaWxlbnQiID4+ICREL3Zhci9zcG9vbC9jcm9uL3Jvb3QKKyAgICBmaQorfQorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJudHBkIgorQUxURVJOQVRJVkVfTElOS19OQU1FW250cGRdID0gIiR7c2JpbmRpcn0vbnRwZCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnZtZXRjbGkvbnZtZXRjbGlfMC43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udm1ldGNsaS9udm1ldGNsaV8wLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFmNTVlMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnZtZXRjbGkvbnZtZXRjbGlfMC43LmJiCkBAIC0wLDAgKzEsMzkgQEAKK1NVTU1BUlkgPSAiTlZNLUV4cHJlc3MgdGFyZ2V0IHVzZXIgc3BhY2UgY29uZmlndXJhdGlvbiB1dGlsaXR5LiIKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgY29tbWFuZCBsaW5lIGludGVyZmFjZSB0byB0aGUgTlZNZSBcCitvdmVyIEZhYnJpY3MgbnZtZXQgaW4gdGhlIExpbnV4IGtlcm5lbC4gIEl0IGFsbG93cyBjb25maWd1cmluZyB0aGUgbnZtZXQgXAoraW50ZXJhY3RpdmVseSBhcyB3ZWxsIGFzIHNhdmluZyAvIHJlc3RvcmluZyB0aGUgY29uZmlndXJhdGlvbiB0byAvIGZyb20gYSBqc29uIFwKK2ZpbGUuIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWRlY2U3ODIxYmYzZmQ3MGZlMTMwOWVhYTM3ZDUyYTIiCisKK2luaGVyaXQgc3lzdGVtZCBzZXR1cHRvb2xzMworCisjIG52bWV0IHNlcnZpY2Ugd2lsbCBzdGFydCBhbmQgc3RvcCB0aGUgTlZNZSBUYXJnZXQgY29uZmlndXJhdGlvbiBvbiBib290IGFuZAorIyBzaHV0ZG93biBmcm9tIGEgc2F2ZWQgTlZNZSBUYXJnZXQgY29uZmlndXJhdGlvbiBpbiB0aGUgL2V0Yy9udm1ldC9jb25maWcuanNvbgorIyBmaWxlLiBUaGlzIGZpbGUgaXMgbm90IGluc3RhbGxlZCBieSBkZWZhdWx0IHNpbmNlIHRoZSBjb25maWd1cmF0aW9uIHdpbGwgdmFyeQorIyBvbiByZWFsIHN5c3RlbXMuIEV4YW1wbGUgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgcHJvdmlkZWQgYnkgaW5jbHVkaW5nIHRoZQorIyBudm1ldGNsaS1leGFtcGxlcyBwYWNrYWdlLgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm52bWV0LnNlcnZpY2UiCisKK1NZU1RFTURfQVVUT19FTkFCTEUgPz0gImRpc2FibGUiCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zIHB5dGhvbjMtc2l4IHB5dGhvbjMtcHlwYXJzaW5nIHB5dGhvbjMtY29uZmlnc2hlbGwtZmIiCisKK1NSQ1JFViA9ICIwYTZiMDg4ZGIyZGMyZTVkZTExZTZmMjNmMWU4OTBlNGI1NGZlZTY0IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQuaW5mcmFkZWFkLm9yZy91c2Vycy9oY2gvbnZtZXRjbGkuZ2l0O2JyYW5jaD1tYXN0ZXIiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgSW5zdGFsbCBleGFtcGxlIGNvbmZpZ3VyYXRpb24gc2NyaXB0cy4KKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L252bWV0CisgICAgY3AgLWZyICR7U30vZXhhbXBsZXMgJHtEfSR7ZGF0YWRpcn0vbnZtZXQvCisKKyAgICAjIEluc3RhbGwgc3lzdGVtZCBzZXJ2aWNlIGZpbGUuCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGNwIC1mciAke1N9L252bWV0LnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KK30KKworIyBFeGFtcGxlcyBwYWNrYWdlIGNvbnRhaW5zIGV4YW1wbGUganNvbiBmaWxlcyB1c2VkIHRvIGNvbmZpZ3VyZSBudm1ldC4KK1BBQ0tBR0VTICs9ICIke1BOfS1leGFtcGxlcyIKK0ZJTEVTXyR7UE59LWV4YW1wbGVzID0gIiR7ZGF0YWRpcn0vbnZtZXQvZXhhbXBsZXMvKiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvaXBtaV9zZXJpYWxfYm1jX2VtdS5jLWluY2x1ZGUtcmVhZGxpbmUuaC1mcm9tLXJlYWRsaS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvaXBtaV9zZXJpYWxfYm1jX2VtdS5jLWluY2x1ZGUtcmVhZGxpbmUuaC1mcm9tLXJlYWRsaS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTIwOGRlOC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL2lwbWlfc2VyaWFsX2JtY19lbXUuYy1pbmNsdWRlLXJlYWRsaW5lLmgtZnJvbS1yZWFkbGkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIGJlYmZiM2MyNDU4MmVjNGU0NWQ3OWM1YjUyMTM1MTk3YmY3MzczZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDE0IEp1biAyMDE5IDE0OjE3OjM0ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGlwbWlfc2VyaWFsX2JtY19lbXUuYzogaW5jbHVkZSByZWFkbGluZS5oIGZyb20gcmVhZGxpbmUKLQotVGhlIGxpYmVkaXQgaGFkIGJlZW4gcmVtb3ZlZCBhbmQgc3dpdGhlZCB0byByZWFkbGluZS4KLVdlIG5lZWQgdG8gaW5jbHVkZSByZWFkbGluZS5oIGZyb20gcmVhZGxpbmUgcmF0aGVyIHRoYW4gZWRpdGxpbmUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzYW1wbGUvaXBtaV9zZXJpYWxfYm1jX2VtdS5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc2FtcGxlL2lwbWlfc2VyaWFsX2JtY19lbXUuYyBiL3NhbXBsZS9pcG1pX3NlcmlhbF9ibWNfZW11LmMKLWluZGV4IGUwYWUwMTkuLjFiOGJiOWEgMTAwNjQ0Ci0tLS0gYS9zYW1wbGUvaXBtaV9zZXJpYWxfYm1jX2VtdS5jCi0rKysgYi9zYW1wbGUvaXBtaV9zZXJpYWxfYm1jX2VtdS5jCi1AQCAtNDIsNyArNDIsNyBAQAotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KLS0jaW5jbHVkZSA8ZWRpdGxpbmUvcmVhZGxpbmUuaD4KLSsjaW5jbHVkZSA8cmVhZGxpbmUvcmVhZGxpbmUuaD4KLSAKLSAjZGVmaW5lIF9HTlVfU09VUkNFCi0gI2luY2x1ZGUgPGdldG9wdC5oPgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL29wZW5pcG1pXzIuMC4yNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvb3BlbmlwbWlfMi4wLjI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDkyNzgwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvb3BlbmlwbWlfMi4wLjI3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLVNVTU1BUlkgPSAiSVBNSSAoSW50ZWxsaWdlbnQgUGxhdGZvcm0gTWFuYWdlbWVudCBJbnRlcmZhY2UpIGxpYnJhcnkgYW5kIHRvb2xzIgotREVTQ1JJUFRJT04gPSAiT3BlbklQTUkgaXMgYW4gZWZmb3J0IHRvIGNyZWF0ZSBhIGZ1bGwtZnVuY3Rpb24gSVBNSSBzeXN0ZW0sIFwKLXRvIGFsbG93IGZ1bGwgYWNjZXNzIHRvIGFsbCBJUE1JIGluZm9ybWF0aW9uIG9uIGEgc2VydmVyIFwKLWFuZCB0byBhYnN0cmFjdCBpdCB0byBhIGxldmVsIHRoYXQgd2lsbCBtYWtlIGl0IGVhc3kgdG8gdXNlIgotCi1IT01FUEFHRSA9ICJodHRwOi8vb3BlbmlwbWkuc291cmNlZm9yZ2UubmV0IgotCi1ERVBFTkRTID0gIiBcCi0gICAgZ2xpYi0yLjAgXAotICAgIG5jdXJzZXMgXAotICAgIG5ldC1zbm1wIFwKLSAgICBvcGVuc3NsIFwKLSAgICBwb3B0IFwKLSAgICBweXRob24gXAotICAgIHN3aWctbmF0aXZlIFwKLSAgICByZWFkbGluZSBcCi0gICAgIgotCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEgJiBCU0QiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1kODA0NWYzYjhmOTI5YzFjYjI5YTFlM2ZkNzM3YjQ5OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkJTRDttZDU9NGIzMThkNDE2MGViNjljOGVlNTM0NTJmZWIxYjRjZGYgXAotICAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L29wZW5pcG1pL09wZW5JUE1JLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtc3ltbGluay1pbnN0YWxsLWVycm9yLWluLWNtZGxhbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3BlbmlwbWktbm8tb3BlbmlwbWlndWktbWFuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5pcG1pLXJlbW92ZS1ob3N0LXBhdGgtZnJvbS1sYV9MREZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2lwbWktaW5pdC1maXgtdGhlLWFyZ3VtZW50cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlX3N5c190eXBlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pcG1pX3NlcmlhbF9ibWNfZW11LmMtaW5jbHVkZS1yZWFkbGluZS5oLWZyb20tcmVhZGxpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5pcG1pLWhlbHBlciBcCi0gICAgICAgICAgIGZpbGU6Ly9pcG1pLnNlcnZpY2UgXAotICAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9PcGVuSVBNSS0ke1BWfSIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ1MjVjZWFhMDdkZjU0NDA2NzRlN2U2OGE2NzcyZmU3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYzYjFmYWZhYWVjMmUyYmFjMzJmZWM1YTg2OTQxYWQ4YjhjYjY0NTQzNDcwYmQ2ZDgxOWQ3YjE2NjcxM2QyMGIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgcHl0aG9ubmF0aXZlIHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQgc3lzdGVtZCBjcGFuLWJhc2UKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zdGF0aWMgXAotICAgICAgICAgICAgICAgIC0td2l0aC1wZXJsPScke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvcGVybCcgXAotICAgICAgICAgICAgICAgIC0td2l0aC1weXRob249JyR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbicgXAotICAgICAgICAgICAgICAgIC0td2l0aC1weXRob25pbnN0YWxsPScke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfScgXAotICAgICAgICAgICAgICAgIC0td2l0aC1nbGlidmVyPTIuMCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImdkYm0iCi1QQUNLQUdFQ09ORklHW2dkYm1dID0gImFjX2N2X2hlYWRlcl9nZGJtX2g9eWVzLGFjX2N2X2hlYWRlcl9nZGJtX2g9bm8sZ2RibSwiCi0KLVBBQ0tBR0VTICs9ICIke1BOfS1wZXJsICR7UE59LXB5dGhvbiIKLVBSSVZBVEVfTElCU18ke1BOfS1wZXJsID0gImxpYk9wZW5JUE1JLnNvLjAiCi0KLUZJTEVTXyR7UE59LXBlcmwgPSAiIFwKLSAgICAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL09wZW5JUE1JLnBtIFwKLSAgICAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL2F1dG8vT3BlbklQTUkvT3BlbklQTUkuc28gXAotICAgICIKLQotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiBcCi0gICAgJHtsaWJkaXJ9L3BlcmwvdmVuZG9yX3BlcmwvKi9hdXRvL09wZW5JUE1JLy5kZWJ1ZyBcCi0gICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vLmRlYnVnIFwKLSAgICAiCi0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0KLSAgICAjIExldCdzIHBlcmZvcm0gcmVndWxhciBjb25maWd1cmF0aW9uIGZpcnN0IHRoZW4gaGFuZGxlIHBlcmwgaXNzdWVzLgotICAgIGF1dG90b29sc19kb19jb25maWd1cmUKLQotICAgIHBlcmxfdmVyPWBwZXJsIC1WOnZlcnNpb24gfCBjdXQgLWRcJyAtZiAyYAotICAgIAotICAgICMgRm9yY2Ugb3BlbmlwbWkgcGVybCBiaW5kaW5ncyB0byBiZSBjb21waWxlZCB1c2luZyBwZXJsLW5hdGl2ZSBpbnN0ZWFkIG9mCi0gICAgIyB0aGUgaG9zdCdzIHBlcmwuIFNldCB0aGUgcHJvcGVyIGluc3RhbGwgZGlyZWN0b3J5IGZvciB0aGUgcmVzdWx0aW5nCi0gICAgIyBvcGVuaXBtaS5wbSBhbmQgb3BlbmlwbWkuc28KLSAgICBmb3IgaSBpbiAke1N9L3N3aWcvTWFrZWZpbGUgJHtTfS9zd2lnL3BlcmwvTWFrZWZpbGU7IGRvCi0gICAgICAgIGVjaG8gIlNBTDogaSA9ICRpIgotICAgICAgICBlY2hvICJTQUw6IFNUQUdJTkdfSU5DRElSX05BVElWRSA9ICRTVEFHSU5HX0lOQ0RJUl9OQVRJVkUiCi0gICAgICAgIGVjaG8gIlNBTDogbGliZGlyID0gJGxpYmRpciIKLSAgICAgICAgc2VkIC1pIC1lICIvXlBFUkxfQ0ZMQUdTL3M6LUkvdXNyL2xvY2FsL2luY2x1ZGU6LUkke1NUQUdJTkdfSU5DRElSX05BVElWRX06ZyIgJGkKLSAgICAgICAgc2VkIC1pIC1lICIvXlBFUkxfQ0ZMQUdTL3M6LUkgLiogOi1JICR7U1RBR0lOR19MSUJESVJ9JHtQRVJMX09XTl9ESVJ9L3Blcmw1LyR7QGdldF9wZXJsX3ZlcnNpb24oZCl9LyR7QGdldF9wZXJsX2FyY2goZCl9L0NPUkUgOmciICRpCi0gICAgICAgIHNlZCAtaSAtZSAiL15QRVJMX0lOU1RBTExfRElSL3M6XlBFUkxfSU5TVEFMTF9ESVIgPSAuKjpQRVJMX0lOU1RBTExfRElSID0gJHtsaWJkaXJ9L3BlcmwvdmVuZG9yX3BlcmwvJHBlcmxfdmVyOmciICRpCi0gICAgZG9uZQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgZWNobyAiU0FMOiBEID0gJEQiCi0gICAgZWNobyAiU0FMOiBsaWJkaXIgPSAkbGliZGlyIgotICAgIGluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vaXBtaS5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9pcG1pCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vaXBtaS5zeXNjb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9pcG1pCi0gICAgIyBTQUw6IG12OiBjYW5ub3Qgc3RhdCBgL2xvY2FsZGlzay9sb2FkYnVpbGQvc2xpdHRsZTEvd29ya3NwYWNlL2NndHNfdGVzdF9idWlsZC9iaXRiYWtlX2J1aWxkL3RtcC93b3JrL3g4Nl82NC13cnMtbGludXgvb3BlbmlwbWktMi4wLjE5LXI0L2ltYWdlL3Vzci9saWI2NC9wZXJsNSc6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLSAgICAjIFNBTDogcmVhbCBwYXRoIHRvIHBlcmwgaXMgL2xvY2FsZGlzay9sb2FkYnVpbGQvc2xpdHRsZTEvd29ya3NwYWNlL2NndHNfdGVzdF9idWlsZC9iaXRiYWtlX2J1aWxkL3RtcC93b3JrL3g4Nl82NC13cnMtbGludXgvcGVybC01LjE0LjItcjguMy9wYWNrYWdlL3Vzci9saWI2NC9wZXJsNSBhbmQgaXQgaXMgYSBzeW1saW5rIHRvIHBlcmwgc28gbm8gbmVlZCB0byBtdi4KLSAgICBpZiBbIC1kICR7RH0ke2xpYmRpcn0vcGVybDUgXQotICAgIHRoZW4KLSAgICAgICAgbXYgJHtEfSR7bGliZGlyfS9wZXJsNSAke0R9JHtsaWJkaXJ9L3BlcmwKLSAgICBmaQotIAotICAgICMgZm9yIHN5c3RlbWQKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgaW5zdGFsbCAtbSAwNjY0ICR7V09SS0RJUn0vaXBtaS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgc2VkIC1pIC1lICJzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LGciICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2lwbWkuc2VydmljZQotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZXhlY2Rpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9vcGVuaXBtaS1oZWxwZXIgJHtEfSR7bGliZXhlY2Rpcn0KLX0KLQotSU5JVFNDUklQVF9OQU1FID0gImlwbWkiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAzMCAuIHN0b3AgNzAgMCAxIDIgMyA0IDUgNiAuIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiaXBtaS5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9vcGVuaXBtaV8yLjAuMjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL29wZW5pcG1pXzIuMC4yOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTk2ZWI5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9vcGVuaXBtaV8yLjAuMjguYmIKQEAgLTAsMCArMSwxMTIgQEAKK1NVTU1BUlkgPSAiSVBNSSAoSW50ZWxsaWdlbnQgUGxhdGZvcm0gTWFuYWdlbWVudCBJbnRlcmZhY2UpIGxpYnJhcnkgYW5kIHRvb2xzIgorREVTQ1JJUFRJT04gPSAiT3BlbklQTUkgaXMgYW4gZWZmb3J0IHRvIGNyZWF0ZSBhIGZ1bGwtZnVuY3Rpb24gSVBNSSBzeXN0ZW0sIFwKK3RvIGFsbG93IGZ1bGwgYWNjZXNzIHRvIGFsbCBJUE1JIGluZm9ybWF0aW9uIG9uIGEgc2VydmVyIFwKK2FuZCB0byBhYnN0cmFjdCBpdCB0byBhIGxldmVsIHRoYXQgd2lsbCBtYWtlIGl0IGVhc3kgdG8gdXNlIgorCitIT01FUEFHRSA9ICJodHRwOi8vb3BlbmlwbWkuc291cmNlZm9yZ2UubmV0IgorCitERVBFTkRTID0gIiBcCisgICAgZ2xpYi0yLjAgXAorICAgIG5jdXJzZXMgXAorICAgIG5ldC1zbm1wIFwKKyAgICBvcGVuc3NsIFwKKyAgICBwb3B0IFwKKyAgICBweXRob24zIFwKKyAgICBzd2lnLW5hdGl2ZSBcCisgICAgcmVhZGxpbmUgXAorICAgICIKKworTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xICYgQlNEIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9ZDgwNDVmM2I4ZjkyOWMxY2IyOWExZTNmZDczN2I0OTkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5CU0Q7bWQ1PTRiMzE4ZDQxNjBlYjY5YzhlZTUzNDUyZmViMWI0Y2RmIFwKKyAgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9vcGVuaXBtaS9PcGVuSVBNSS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZml4LXN5bWxpbmstaW5zdGFsbC1lcnJvci1pbi1jbWRsYW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29wZW5pcG1pLW5vLW9wZW5pcG1pZ3VpLW1hbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuaXBtaS1yZW1vdmUtaG9zdC1wYXRoLWZyb20tbGFfTERGTEFHUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pcG1pLWluaXQtZml4LXRoZS1hcmd1bWVudHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaW5jbHVkZV9zeXNfdHlwZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb3BlbmlwbWktaGVscGVyIFwKKyAgICAgICAgICAgZmlsZTovL2lwbWkuc2VydmljZSBcCisgICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L09wZW5JUE1JLSR7UFZ9IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmEzN2YwOGUzMDYwNjJlYzczYzdlZDJhMmJkNGQ1ZjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGU4YjFkZTJhOWEwNDFiNDE5MTMzZWNiMjFmOTU2ZTk5OTg0MWNmMmU3NTllOTczZWViYTlhMzZmOGI0MDk5NiIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBweXRob24zbmF0aXZlIHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQgc3lzdGVtZCBjcGFuLWJhc2UKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zdGF0aWMgXAorICAgICAgICAgICAgICAgIC0td2l0aC1wZXJsPScke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvcGVybCcgXAorICAgICAgICAgICAgICAgIC0td2l0aC1weXRob249JyR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zJyBcCisgICAgICAgICAgICAgICAgLS13aXRoLXB5dGhvbmluc3RhbGw9JyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBcCisgICAgICAgICAgICAgICAgLS13aXRoLWdsaWJ2ZXI9Mi4wIgorCitQQUNLQUdFQ09ORklHID8/PSAiZ2RibSIKK1BBQ0tBR0VDT05GSUdbZ2RibV0gPSAiYWNfY3ZfaGVhZGVyX2dkYm1faD15ZXMsYWNfY3ZfaGVhZGVyX2dkYm1faD1ubyxnZGJtLCIKKworUEFDS0FHRVMgKz0gIiR7UE59LXBlcmwgJHtQTn0tcHl0aG9uIgorUFJJVkFURV9MSUJTXyR7UE59LXBlcmwgPSAibGliT3BlbklQTUkuc28uMCIKKworRklMRVNfJHtQTn0tcGVybCA9ICIgXAorICAgICR7bGliZGlyfS9wZXJsL3ZlbmRvcl9wZXJsLyovT3BlbklQTUkucG0gXAorICAgICR7bGliZGlyfS9wZXJsL3ZlbmRvcl9wZXJsLyovYXV0by9PcGVuSVBNSS9PcGVuSVBNSS5zbyBcCisgICAgIgorCitGSUxFU18ke1BOfS1weXRob24gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiIFwKKyAgICAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL2F1dG8vT3BlbklQTUkvLmRlYnVnIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8uZGVidWcgXAorICAgICIKKworZG9fY29uZmlndXJlICgpIHsKKworICAgICMgTGV0J3MgcGVyZm9ybSByZWd1bGFyIGNvbmZpZ3VyYXRpb24gZmlyc3QgdGhlbiBoYW5kbGUgcGVybCBpc3N1ZXMuCisgICAgYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZQorCisgICAgcGVybF92ZXI9YHBlcmwgLVY6dmVyc2lvbiB8IGN1dCAtZFwnIC1mIDJgCisgICAgCisgICAgIyBGb3JjZSBvcGVuaXBtaSBwZXJsIGJpbmRpbmdzIHRvIGJlIGNvbXBpbGVkIHVzaW5nIHBlcmwtbmF0aXZlIGluc3RlYWQgb2YKKyAgICAjIHRoZSBob3N0J3MgcGVybC4gU2V0IHRoZSBwcm9wZXIgaW5zdGFsbCBkaXJlY3RvcnkgZm9yIHRoZSByZXN1bHRpbmcKKyAgICAjIG9wZW5pcG1pLnBtIGFuZCBvcGVuaXBtaS5zbworICAgIGZvciBpIGluICR7U30vc3dpZy9NYWtlZmlsZSAke1N9L3N3aWcvcGVybC9NYWtlZmlsZTsgZG8KKyAgICAgICAgZWNobyAiU0FMOiBpID0gJGkiCisgICAgICAgIGVjaG8gIlNBTDogU1RBR0lOR19JTkNESVJfTkFUSVZFID0gJFNUQUdJTkdfSU5DRElSX05BVElWRSIKKyAgICAgICAgZWNobyAiU0FMOiBsaWJkaXIgPSAkbGliZGlyIgorICAgICAgICBzZWQgLWkgLWUgIi9eUEVSTF9DRkxBR1MvczotSS91c3IvbG9jYWwvaW5jbHVkZTotSSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfTpnIiAkaQorICAgICAgICBzZWQgLWkgLWUgIi9eUEVSTF9DRkxBR1MvczotSSAuKiA6LUkgJHtTVEFHSU5HX0xJQkRJUn0ke1BFUkxfT1dOX0RJUn0vcGVybDUvJHtAZ2V0X3BlcmxfdmVyc2lvbihkKX0vJHtAZ2V0X3BlcmxfYXJjaChkKX0vQ09SRSA6ZyIgJGkKKyAgICAgICAgc2VkIC1pIC1lICIvXlBFUkxfSU5TVEFMTF9ESVIvczpeUEVSTF9JTlNUQUxMX0RJUiA9IC4qOlBFUkxfSU5TVEFMTF9ESVIgPSAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8kcGVybF92ZXI6ZyIgJGkKKyAgICBkb25lCit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBlY2hvICJTQUw6IEQgPSAkRCIKKyAgICBlY2hvICJTQUw6IGxpYmRpciA9ICRsaWJkaXIiCisgICAgaW5zdGFsbCAtbSAwNzU1IC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9pcG1pLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2lwbWkKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9pcG1pLnN5c2NvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2lwbWkKKyAgICAjIFNBTDogbXY6IGNhbm5vdCBzdGF0IGAvbG9jYWxkaXNrL2xvYWRidWlsZC9zbGl0dGxlMS93b3Jrc3BhY2UvY2d0c190ZXN0X2J1aWxkL2JpdGJha2VfYnVpbGQvdG1wL3dvcmsveDg2XzY0LXdycy1saW51eC9vcGVuaXBtaS0yLjAuMTktcjQvaW1hZ2UvdXNyL2xpYjY0L3Blcmw1JzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorICAgICMgU0FMOiByZWFsIHBhdGggdG8gcGVybCBpcyAvbG9jYWxkaXNrL2xvYWRidWlsZC9zbGl0dGxlMS93b3Jrc3BhY2UvY2d0c190ZXN0X2J1aWxkL2JpdGJha2VfYnVpbGQvdG1wL3dvcmsveDg2XzY0LXdycy1saW51eC9wZXJsLTUuMTQuMi1yOC4zL3BhY2thZ2UvdXNyL2xpYjY0L3Blcmw1IGFuZCBpdCBpcyBhIHN5bWxpbmsgdG8gcGVybCBzbyBubyBuZWVkIHRvIG12LgorICAgIGlmIFsgLWQgJHtEfSR7bGliZGlyfS9wZXJsNSBdCisgICAgdGhlbgorICAgICAgICBtdiAke0R9JHtsaWJkaXJ9L3Blcmw1ICR7RH0ke2xpYmRpcn0vcGVybAorICAgIGZpCisgCisgICAgIyBmb3Igc3lzdGVtZAorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NjQgJHtXT1JLRElSfS9pcG1pLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBzZWQgLWkgLWUgInMsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0sZyIgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vaXBtaS5zZXJ2aWNlCisgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJleGVjZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L29wZW5pcG1pLWhlbHBlciAke0R9JHtsaWJleGVjZGlyfQorfQorCitJTklUU0NSSVBUX05BTUUgPSAiaXBtaSIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDMwIC4gc3RvcCA3MCAwIDEgMiAzIDQgNSA2IC4iCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJpcG1pLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW52cG4vb3BlbnZwbl8yLjQuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbnZwbi9vcGVudnBuXzIuNC43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTRlYjI1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbnZwbi9vcGVudnBuXzIuNC43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGZ1bGwtZmVhdHVyZWQgU1NMIFZQTiBzb2x1dGlvbiB2aWEgdHVuIGRldmljZS4iCi1IT01FUEFHRSA9ICJodHRwczovL29wZW52cG4ubmV0LyIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdhZWU1OTZlZDJkZWVmZTNlOGE4NjFlMjQyOTJhYmJhIgotREVQRU5EUyA9ICJsem8gb3BlbnNzbCBpcHJvdXRlMiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgotCi1pbmhlcml0IGF1dG90b29scyBzeXN0ZW1kIHVwZGF0ZS1yYy5kCi0KLVNSQ19VUkkgPSAiaHR0cDovL3N3dXBkYXRlLm9wZW52cG4ub3JnL2NvbW11bml0eS9yZWxlYXNlcy8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vb3BlbnZwbiBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVudnBuQC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL29wZW52cG4tdm9sYXRpbGUuY29uZiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjlkNjdjYWJjOWIwNDQxMDYyZWJkNGUxMmJiN2RmZWRiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjczZGNlNTQyZWQzZDZmMDU1MzY3NGY0OTAyNWRmYmRmZjE4MzQ4ZWI4YTI1ZTYyMTUxMzVkNjg2YjE2NTQyM2MiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSArPSAib3BlbnZwbkBsb29wYmFjay1zZXJ2ZXIuc2VydmljZSBvcGVudnBuQGxvb3BiYWNrLWNsaWVudC5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59IgotSU5JVFNDUklQVF9OQU1FXyR7UE59ID0gIm9wZW52cG4iCi1JTklUU0NSSVBUX1BBUkFNU18ke1BOfSA9ICJzdGFydCAxMCAyIDMgNCA1IC4gc3RvcCA3MCAwIDEgNiAuIgotCi1DRkxBR1MgKz0gIi1mbm8taW5saW5lIgotCi0jIEkgd2FudCBvcGVudnBuIHRvIGJlIGFibGUgdG8gcmVhZCBwYXNzd29yZCBmcm9tIGZpbGUgKGhydykKLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtaXByb3V0ZTIiCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJycsICctLWRpc2FibGUtcGx1Z2luLWF1dGgtcGFtJywgZCl9IgotCi0jIEV4cGxpY2l0bHkgc3BlY2lmeSBJUFJPVVRFIHRvIGJ5cGFzcyB0aGUgY29uZmlndXJlLXRpbWUgY2hlY2sgZm9yIC9zYmluL2lwIG9uIHRoZSBob3N0LgotRVhUUkFfT0VDT05GICs9ICJJUFJPVVRFPSR7YmFzZV9zYmluZGlyfS9pcCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9vcGVudnBuICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L29wZW52cG4KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZQotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc2FtcGxlL3NhbXBsZS1jb25maWctZmlsZXMvbG9vcGJhY2stc2VydmVyICAke0R9JHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZS9sb29wYmFjay1zZXJ2ZXIuY29uZgotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc2FtcGxlL3NhbXBsZS1jb25maWctZmlsZXMvbG9vcGJhY2stY2xpZW50ICAke0R9JHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZS9sb29wYmFjay1jbGllbnQuY29uZgotICAgIGluc3RhbGwgLWRtIDc1NSAke0R9JHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZS9zYW1wbGUta2V5cwotICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vc2FtcGxlL3NhbXBsZS1rZXlzLyogJHtEfSR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvc2FtcGxlLWtleXMKLQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9vcGVudnBuQC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L29wZW52cG5ALnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW52cG5AbG9vcGJhY2stc2VydmVyLnNlcnZpY2UKLSAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9vcGVudnBuQC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVudnBuQGxvb3BiYWNrLWNsaWVudC5zZXJ2aWNlCi0KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbGliCi0gICAgICAgIGluc3RhbGwgLWQgLW0gNzEwICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIvb3BlbnZwbgotCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGVudnBuLXZvbGF0aWxlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9vcGVudnBuLmNvbmYKLSAgICAgICAgc2VkIC1pIC1lICdzI0BMT0NBTFNUQVRFRElSQCMke2xvY2Fsc3RhdGVkaXJ9I2cnICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvb3BlbnZwbi5jb25mCi0gICAgZmkKLX0KLQotUEFDS0FHRVMgPSsgIiAke1BOfS1zYW1wbGUgIgotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLXR1biIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vb3BlbnZwbi9wbHVnaW5zLy5kZWJ1ZyIKLUZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW52cG5ALnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZCBcCi0gICAgICAgICAgICAgICAiCi1GSUxFU18ke1BOfS1zYW1wbGUgKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbnZwbkBsb29wYmFjay1zZXJ2ZXIuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbnZwbkBsb29wYmFjay1jbGllbnQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVudnBuL29wZW52cG5fMi40LjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW52cG4vb3BlbnZwbl8yLjQuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWVmYTU3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVudnBuL29wZW52cG5fMi40LjguYmIKQEAgLTAsMCArMSw3MyBAQAorU1VNTUFSWSA9ICJBIGZ1bGwtZmVhdHVyZWQgU1NMIFZQTiBzb2x1dGlvbiB2aWEgdHVuIGRldmljZS4iCitIT01FUEFHRSA9ICJodHRwczovL29wZW52cG4ubmV0LyIKK1NFQ1RJT04gPSAibmV0IgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdhZWU1OTZlZDJkZWVmZTNlOGE4NjFlMjQyOTJhYmJhIgorREVQRU5EUyA9ICJsem8gb3BlbnNzbCBpcHJvdXRlMiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgorCitpbmhlcml0IGF1dG90b29scyBzeXN0ZW1kIHVwZGF0ZS1yYy5kCisKK1NSQ19VUkkgPSAiaHR0cDovL3N3dXBkYXRlLm9wZW52cG4ub3JnL2NvbW11bml0eS9yZWxlYXNlcy8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vb3BlbnZwbiBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVudnBuQC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL29wZW52cG4tdm9sYXRpbGUuY29uZiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vb3BlbnZwbi5uZXQvY29tbXVuaXR5LWRvd25sb2FkcyIKKworU1JDX1VSSVttZDVzdW1dID0gImU5Y2I0MDU0MmUxN2NlMjk1ZDgwODYwNjkwNzEwYWFiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY1ZTFkYTNmM2EwOGU3ZTkwMGMxNzVlN2ZjMzBkODM0ODgxZmQyZGVhMGViMzliMjUzMjVhODYxYTlkYTBiYzUiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSArPSAib3BlbnZwbkBsb29wYmFjay1zZXJ2ZXIuc2VydmljZSBvcGVudnBuQGxvb3BiYWNrLWNsaWVudC5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59IgorSU5JVFNDUklQVF9OQU1FXyR7UE59ID0gIm9wZW52cG4iCitJTklUU0NSSVBUX1BBUkFNU18ke1BOfSA9ICJzdGFydCAxMCAyIDMgNCA1IC4gc3RvcCA3MCAwIDEgNiAuIgorCitDRkxBR1MgKz0gIi1mbm8taW5saW5lIgorCisjIEkgd2FudCBvcGVudnBuIHRvIGJlIGFibGUgdG8gcmVhZCBwYXNzd29yZCBmcm9tIGZpbGUgKGhydykKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtaXByb3V0ZTIiCitFWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJycsICctLWRpc2FibGUtcGx1Z2luLWF1dGgtcGFtJywgZCl9IgorCisjIEV4cGxpY2l0bHkgc3BlY2lmeSBJUFJPVVRFIHRvIGJ5cGFzcyB0aGUgY29uZmlndXJlLXRpbWUgY2hlY2sgZm9yIC9zYmluL2lwIG9uIHRoZSBob3N0LgorRVhUUkFfT0VDT05GICs9ICJJUFJPVVRFPSR7YmFzZV9zYmluZGlyfS9pcCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9vcGVudnBuICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKKworICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L29wZW52cG4KKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZQorICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc2FtcGxlL3NhbXBsZS1jb25maWctZmlsZXMvbG9vcGJhY2stc2VydmVyICAke0R9JHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZS9sb29wYmFjay1zZXJ2ZXIuY29uZgorICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc2FtcGxlL3NhbXBsZS1jb25maWctZmlsZXMvbG9vcGJhY2stY2xpZW50ICAke0R9JHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZS9sb29wYmFjay1jbGllbnQuY29uZgorICAgIGluc3RhbGwgLWRtIDc1NSAke0R9JHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZS9zYW1wbGUta2V5cworICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vc2FtcGxlL3NhbXBsZS1rZXlzLyogJHtEfSR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvc2FtcGxlLWtleXMKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9vcGVudnBuQC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L29wZW52cG5ALnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW52cG5AbG9vcGJhY2stc2VydmVyLnNlcnZpY2UKKyAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9vcGVudnBuQC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVudnBuQGxvb3BiYWNrLWNsaWVudC5zZXJ2aWNlCisKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbGliCisgICAgICAgIGluc3RhbGwgLWQgLW0gNzEwICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIvb3BlbnZwbgorCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGVudnBuLXZvbGF0aWxlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9vcGVudnBuLmNvbmYKKyAgICAgICAgc2VkIC1pIC1lICdzI0BMT0NBTFNUQVRFRElSQCMke2xvY2Fsc3RhdGVkaXJ9I2cnICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvb3BlbnZwbi5jb25mCisgICAgZmkKK30KKworUEFDS0FHRVMgPSsgIiAke1BOfS1zYW1wbGUgIgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLXR1biIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vb3BlbnZwbi9wbHVnaW5zLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW52cG5ALnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZCBcCisgICAgICAgICAgICAgICAiCitGSUxFU18ke1BOfS1zYW1wbGUgKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbnZwbkBsb29wYmFjay1zZXJ2ZXIuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbnZwbkBsb29wYmFjay1jbGllbnQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9yZG1hLWNvcmUvcmRtYS1jb3JlLzAwMDEtUmVtb3ZlLW1hbi1maWxlcy13aGljaC1jYW50LWJlLWJ1aWx0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9yZG1hLWNvcmUvcmRtYS1jb3JlLzAwMDEtUmVtb3ZlLW1hbi1maWxlcy13aGljaC1jYW50LWJlLWJ1aWx0LnBhdGNoCmluZGV4IGYxNDM3YTAuLmZlZWQwMjEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvcmRtYS1jb3JlL3JkbWEtY29yZS8wMDAxLVJlbW92ZS1tYW4tZmlsZXMtd2hpY2gtY2FudC1iZS1idWlsdC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmUvMDAwMS1SZW1vdmUtbWFuLWZpbGVzLXdoaWNoLWNhbnQtYmUtYnVpbHQucGF0Y2gKQEAgLTI1NCw5ICsyNTQsMTAgQEAKIGluZGV4IDBiZDllYmExLi44NzZiNmZjZiAxMDA2NDQKIC0tLSBhL3Byb3ZpZGVycy9tbHg1L21hbi9DTWFrZUxpc3RzLnR4dAogKysrIGIvcHJvdmlkZXJzL21seDUvbWFuL0NNYWtlTGlzdHMudHh0Ci1AQCAtMSw3MiArMSw3IEBACitAQCAtMSw4MSArMSw3IEBACiAgcmRtYV9tYW5fcGFnZXMoCiAtICBtbHg1ZHZfYWxsb2NfZG0uMy5tZAorLSAgbWx4NWR2X2FsbG9jX3Zhci4zLm1kCiAtICBtbHg1ZHZfY3JlYXRlX2NxLjMubWQKIC0gIG1seDVkdl9jcmVhdGVfZmxvdy4zLm1kCiAtICBtbHg1ZHZfY3JlYXRlX2Zsb3dfYWN0aW9uX21vZGlmeV9oZWFkZXIuMy5tZApAQCAtMjc0LDYgKzI3NSw3IEBACiAtICBtbHg1ZHZfZGV2eF9zdWJzY3JpYmVfZGV2eF9ldmVudC4zLm1kCiAtICBtbHg1ZHZfZGV2eF91bWVtX3JlZy4zLm1kCiAtICBtbHg1ZHZfZHJfZmxvdy4zLm1kCistICBtbHg1ZHZfZHVtcC4zLm1kCiAtICBtbHg1ZHZfZmxvd19hY3Rpb25fZXNwLjMubWQKICAgIG1seDVkdl9nZXRfY2xvY2tfaW5mby4zCiAgICBtbHg1ZHZfaW5pdF9vYmouMwpAQCAtMjg1LDYgKzI4Nyw3IEBACiAgICBtbHg1ZHYuNwogICkKIC1yZG1hX2FsaWFzX21hbl9wYWdlcygKKy0gbWx4NWR2X2FsbG9jX3Zhci4zIG1seDVkdl9mcmVlX3Zhci4zCiAtIG1seDVkdl9jcmVhdGVfbWtleS4zIG1seDVkdl9kZXN0cm95X21rZXkuMwogLSBtbHg1ZHZfZGV2eF9hbGxvY191YXIuMyBtbHg1ZHZfZGV2eF9mcmVlX3Vhci4zCiAtIG1seDVkdl9kZXZ4X2NyZWF0ZV9jbWRfY29tcC4zIG1seDVkdl9kZXZ4X2Rlc3Ryb3lfY21kX2NvbXAuMwpAQCAtMzExLDEwICszMTQsMTIgQEAKIC0gbWx4NWR2X2RyX2Zsb3cuMyBtbHg1ZHZfZHJfYWN0aW9uX2NyZWF0ZV9kZXN0X3Zwb3J0LjMKIC0gbWx4NWR2X2RyX2Zsb3cuMyBtbHg1ZHZfZHJfYWN0aW9uX2NyZWF0ZV9mbG93X2NvdW50ZXIuMwogLSBtbHg1ZHZfZHJfZmxvdy4zIG1seDVkdl9kcl9hY3Rpb25fY3JlYXRlX2Ryb3AuMworLSBtbHg1ZHZfZHJfZmxvdy4zIG1seDVkdl9kcl9hY3Rpb25fY3JlYXRlX2Zsb3dfbWV0ZXIuMwogLSBtbHg1ZHZfZHJfZmxvdy4zIG1seDVkdl9kcl9hY3Rpb25fY3JlYXRlX21vZGlmeV9oZWFkZXIuMwogLSBtbHg1ZHZfZHJfZmxvdy4zIG1seDVkdl9kcl9hY3Rpb25fY3JlYXRlX3BhY2tldF9yZWZvcm1hdC4zCiAtIG1seDVkdl9kcl9mbG93LjMgbWx4NWR2X2RyX2FjdGlvbl9jcmVhdGVfdGFnLjMKIC0gbWx4NWR2X2RyX2Zsb3cuMyBtbHg1ZHZfZHJfYWN0aW9uX2Rlc3Ryb3kuMworLSBtbHg1ZHZfZHJfZmxvdy4zIG1seDVkdl9kcl9hY3Rpb25fbW9kaWZ5X2Zsb3dfbWV0ZXIuMwogLSBtbHg1ZHZfZHJfZmxvdy4zIG1seDVkdl9kcl9kb21haW5fY3JlYXRlLjMKIC0gbWx4NWR2X2RyX2Zsb3cuMyBtbHg1ZHZfZHJfZG9tYWluX2Rlc3Ryb3kuMwogLSBtbHg1ZHZfZHJfZmxvdy4zIG1seDVkdl9kcl9kb21haW5fc3luYy4zCkBAIC0zMjQsNiArMzI5LDEwIEBACiAtIG1seDVkdl9kcl9mbG93LjMgbWx4NWR2X2RyX3J1bGVfZGVzdHJveS4zCiAtIG1seDVkdl9kcl9mbG93LjMgbWx4NWR2X2RyX3RhYmxlX2NyZWF0ZS4zCiAtIG1seDVkdl9kcl9mbG93LjMgbWx4NWR2X2RyX3RhYmxlX2Rlc3Ryb3kuMworLSBtbHg1ZHZfZHVtcC4zIG1seDVkdl9kdW1wX2RyX2RvbWFpbi4zCistIG1seDVkdl9kdW1wLjMgbWx4NWR2X2R1bXBfZHJfbWF0Y2hlci4zCistIG1seDVkdl9kdW1wLjMgbWx4NWR2X2R1bXBfZHJfcnVsZS4zCistIG1seDVkdl9kdW1wLjMgbWx4NWR2X2R1bXBfZHJfdGFibGUuMwogLSBtbHg1ZHZfd3JfcG9zdC4zIG1seDVkdl93cl9zZXRfZGNfYWRkci4zCiAtIG1seDVkdl93cl9wb3N0LjMgbWx4NWR2X3FwX2V4X2Zyb21faWJ2X3FwX2V4LjMKIC0pCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmUvMDAwMS1Vc2Utb3ZlcmxvYWRhYmxlLWF0dHJpYnV0ZS13aXRoLWNsYW5nLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9yZG1hLWNvcmUvcmRtYS1jb3JlLzAwMDEtVXNlLW92ZXJsb2FkYWJsZS1hdHRyaWJ1dGUtd2l0aC1jbGFuZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJhNjg0Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmUvMDAwMS1Vc2Utb3ZlcmxvYWRhYmxlLWF0dHJpYnV0ZS13aXRoLWNsYW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSA0Mjk3NmVkMGEwMTYwODY0YjQxNjgwNjA0ZWE5Y2RiM2MxNzVjYjk0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTUgSmFuIDIwMjAgMTc6NDg6MjggLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNlIG92ZXJsb2FkYWJsZSBhdHRyaWJ1dGUgd2l0aCBjbGFuZwotCi1UaGlzIGlzIG92ZXJyaWRpbmcgdGhlIGxpYmMgaW1wbGVtZW50YXRpb24KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGlicmRtYWNtL3ByZWxvYWQuYyB8IDggKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJyZG1hY20vcHJlbG9hZC5jIGIvbGlicmRtYWNtL3ByZWxvYWQuYwotaW5kZXggZDQ2YmViMWIuLmI0NTFkZTUwIDEwMDY0NAotLS0tIGEvbGlicmRtYWNtL3ByZWxvYWQuYwotKysrIGIvbGlicmRtYWNtL3ByZWxvYWQuYwotQEAgLTU5LDYgKzU5LDEyIEBACi0gI2luY2x1ZGUgImNtYS5oIgotICNpbmNsdWRlICJpbmRleGVyLmgiCi0gCi0rI2lmZGVmIF9fY2xhbmdfXwotKyNkZWZpbmUgT1ZFUkxPQUQgIF9fYXR0cmlidXRlX18oKG92ZXJsb2FkYWJsZSkpIAotKyNlbHNlCi0rI2RlZmluZSBPVkVSTE9BRAotKyNlbmRpZgotKwotIHN0cnVjdCBzb2NrZXRfY2FsbHMgewotIAlpbnQgKCpzb2NrZXQpKGludCBkb21haW4sIGludCB0eXBlLCBpbnQgcHJvdG9jb2wpOwotIAlpbnQgKCpiaW5kKShpbnQgc29ja2V0LCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIHNvY2tsZW5fdCBhZGRybGVuKTsKLUBAIC03OTMsNyArNzk5LDcgQEAgc3NpemVfdCByZWN2KGludCBzb2NrZXQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwgaW50IGZsYWdzKQotIAkJcnJlY3YoZmQsIGJ1ZiwgbGVuLCBmbGFncykgOiByZWFsLnJlY3YoZmQsIGJ1ZiwgbGVuLCBmbGFncyk7Ci0gfQotIAotLXNzaXplX3QgcmVjdmZyb20oaW50IHNvY2tldCwgdm9pZCAqYnVmLCBzaXplX3QgbGVuLCBpbnQgZmxhZ3MsCi0rc3NpemVfdCBPVkVSTE9BRCByZWN2ZnJvbShpbnQgc29ja2V0LCB2b2lkICpidWYsIHNpemVfdCBsZW4sIGludCBmbGFncywKLSAJCSBzdHJ1Y3Qgc29ja2FkZHIgKnNyY19hZGRyLCBzb2NrbGVuX3QgKmFkZHJsZW4pCi0gewotIAlpbnQgZmQ7Ci0tLSAKLTIuMjUuMAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmUvMDAwMS1saWJyZG1hY20tVXNlLXNjaGVkX3lpZWxkLWluc3RlYWQtb2YtcHRocmVhZF95aWVsZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvcmRtYS1jb3JlL3JkbWEtY29yZS8wMDAxLWxpYnJkbWFjbS1Vc2Utc2NoZWRfeWllbGQtaW5zdGVhZC1vZi1wdGhyZWFkX3lpZWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGFiZDMzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvcmRtYS1jb3JlL3JkbWEtY29yZS8wMDAxLWxpYnJkbWFjbS1Vc2Utc2NoZWRfeWllbGQtaW5zdGVhZC1vZi1wdGhyZWFkX3lpZWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSA2YWM5NTYyZDc1NmQ0MjU5Mjk5NGFlYWFjN2E1ZTdiMmJiY2U1Y2FiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMTQgRGVjIDIwMTkgMTQ6MDc6NTcgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbGlicmRtYWNtOiBVc2Ugc2NoZWRfeWllbGQgaW5zdGVhZCBvZiBwdGhyZWFkX3lpZWxkCi0KLWdsaWJjIHJlZGlyZWN0cyBwdGhyZWFkX3lpZWxkIHRvIHNjaGVkX3lpZWxkIGFkZGl0aW9uYWxseSB3ZSBnZXQgaXQKLXdvcmtpbmcgd2l0aCBtdXNsIG9uIGxpbnV4Ci0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbGludXgtcmRtYS9yZG1hLWNvcmUvcHVsbC82MzVdCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGlicmRtYWNtL3Jzb2NrZXQuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYnJkbWFjbS9yc29ja2V0LmMgYi9saWJyZG1hY20vcnNvY2tldC5jCi1pbmRleCA4OWFlMjEzOS4uN2ZjNWIyNjYgMTAwNjQ0Ci0tLS0gYS9saWJyZG1hY20vcnNvY2tldC5jCi0rKysgYi9saWJyZG1hY20vcnNvY2tldC5jCi1AQCAtMzAzOCw3ICszMDM4LDcgQEAgc3RhdGljIGludCByc19wb2xsX2VudGVyKHZvaWQpCi0gCXB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0KTsKLSAJaWYgKHN1c3BlbmRwb2xsKSB7Ci0gCQlwdGhyZWFkX211dGV4X3VubG9jaygmbXV0KTsKLS0JCXB0aHJlYWRfeWllbGQoKTsKLSsJCXNjaGVkX3lpZWxkKCk7Ci0gCQlyZXR1cm4gLUVCVVNZOwotIAl9Ci0gCi0tLSAKLTIuMjQuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmVfMjcuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvcmRtYS1jb3JlL3JkbWEtY29yZV8yNy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTc5NzlkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvcmRtYS1jb3JlL3JkbWEtY29yZV8yNy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotU1VNTUFSWSA9ICJVc2Vyc3BhY2Ugc3VwcG9ydCBmb3IgSW5maW5pQmFuZC9SRE1BIHZlcmJzIgotREVTQ1JJUFRJT04gPSAiVGhpcyBpcyB0aGUgdXNlcnNwYWNlIGNvbXBvbmVudHMgZm9yIHRoZSBMaW51eCBLZXJuZWwncyBkcml2ZXJzIEluZmluaWJhbmQvUkRNQSBzdWJzeXN0ZW0uIgotU0VDVElPTiA9ICJsaWJzIgotCi1ERVBFTkRTID0gImxpYm5sIgotUkRFUEVORFNfJHtQTn0gPSAiYmFzaCBwZXJsIgotCi1CUkFOQ0ggPSAic3RhYmxlLXYke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saW51eC1yZG1hL3JkbWEtY29yZS5naXQ7YnJhbmNoPSR7QlJBTkNIfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1tYW4tZmlsZXMtd2hpY2gtY2FudC1iZS1idWlsdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYnJkbWFjbS1Vc2Utc2NoZWRfeWllbGQtaW5zdGVhZC1vZi1wdGhyZWFkX3lpZWxkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLW92ZXJsb2FkYWJsZS1hdHRyaWJ1dGUtd2l0aC1jbGFuZy5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ1JFViA9ICI4NGNhZjAzNWFlNjEyM2UyMjk2YjcyMDA2Y2QyY2Y2OThjNjVlYjQ2IgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotI0RlZmF1bHQgRHVhbCBMaWNlbnNlIGh0dHBzOi8vZ2l0aHViLmNvbS9saW51eC1yZG1hL3JkbWEtY29yZS9ibG9iL21hc3Rlci9DT1BZSU5HLm1kCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSB8IEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5CU0RfRkI7bWQ1PTBlYzE4YmFlMWE5ZGY5MmM4ZDZhZTAxZjk0YTI4OWFlIFwKLQkJICAgZmlsZTovL0NPUFlJTkcuR1BMMjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLUVYVFJBX09FQ01BS0UgPSAiIFwKLSAgICAtRENNQUtFX0lOU1RBTExfU1lTVEVNRF9TRVJWSUNFRElSPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0gXAotICAgIC1EQ01BS0VfSU5TVEFMTF9QRVJMRElSPSR7bGliZGlyfS9wZXJsNS8ke0BnZXRfcGVybF92ZXJzaW9uKGQpfSBcCi0iCi0KLUZJTEVTX1NPTElCU0RFViA9ICIiCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyoiCi1JTlNBTkVfU0tJUF8ke1BOfSArPSAiZGV2LXNvIgotCi1pbmhlcml0IGNtYWtlIGNwYW4tYmFzZSBzeXN0ZW1kCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIgXAotICAgIHNycF9kYWVtb24uc2VydmljZSBcCi0gICAgaXdwbWQuc2VydmljZSBcCi0gICAgaWJhY20uc29ja2V0IFwKLSAgICByZG1hLWxvYWQtbW9kdWxlc0Auc2VydmljZSBcCi0gICAgc3JwX2RhZW1vbl9wb3J0QC5zZXJ2aWNlIFwKLSAgICByZG1hLWh3LnRhcmdldCBcCi0gICAgaWJhY20uc2VydmljZSBcCi0iCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCi0KLU9FQ01BS0VfRklORF9ST09UX1BBVEhfTU9ERV9QUk9HUkFNID0gIkJPVEgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmVfMjguMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvcmRtYS1jb3JlL3JkbWEtY29yZV8yOC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1ZmQ3ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmVfMjguMC5iYgpAQCAtMCwwICsxLDQyIEBACitTVU1NQVJZID0gIlVzZXJzcGFjZSBzdXBwb3J0IGZvciBJbmZpbmlCYW5kL1JETUEgdmVyYnMiCitERVNDUklQVElPTiA9ICJUaGlzIGlzIHRoZSB1c2Vyc3BhY2UgY29tcG9uZW50cyBmb3IgdGhlIExpbnV4IEtlcm5lbCdzIGRyaXZlcnMgSW5maW5pYmFuZC9SRE1BIHN1YnN5c3RlbS4iCitTRUNUSU9OID0gImxpYnMiCisKK0RFUEVORFMgPSAibGlibmwiCitSREVQRU5EU18ke1BOfSA9ICJiYXNoIHBlcmwiCisKK0JSQU5DSCA9ICJzdGFibGUtdiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpbnV4LXJkbWEvcmRtYS1jb3JlLmdpdDticmFuY2g9JHtCUkFOQ0h9IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLW1hbi1maWxlcy13aGljaC1jYW50LWJlLWJ1aWx0LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDUkVWID0gImYxMmM5NTNmMDg2NDY5MWVhY2M5ZmNjNGNkYTQ4OWI5MmZmZDVhODUiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCisjRGVmYXVsdCBEdWFsIExpY2Vuc2UgaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXJkbWEvcmRtYS1jb3JlL2Jsb2IvbWFzdGVyL0NPUFlJTkcubWQKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIHwgR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkJTRF9GQjttZDU9MGVjMThiYWUxYTlkZjkyYzhkNmFlMDFmOTRhMjg5YWUgXAorCQkgICBmaWxlOi8vQ09QWUlORy5HUEwyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworRVhUUkFfT0VDTUFLRSA9ICIgXAorICAgIC1EQ01BS0VfSU5TVEFMTF9TWVNURU1EX1NFUlZJQ0VESVI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSBcCisgICAgLURDTUFLRV9JTlNUQUxMX1BFUkxESVI9JHtsaWJkaXJ9L3Blcmw1LyR7QGdldF9wZXJsX3ZlcnNpb24oZCl9IFwKKyIKKworRklMRVNfU09MSUJTREVWID0gIiIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vKiIKK0lOU0FORV9TS0lQXyR7UE59ICs9ICJkZXYtc28iCisKK2luaGVyaXQgY21ha2UgY3Bhbi1iYXNlIHN5c3RlbWQKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiBcCisgICAgc3JwX2RhZW1vbi5zZXJ2aWNlIFwKKyAgICBpd3BtZC5zZXJ2aWNlIFwKKyAgICBpYmFjbS5zb2NrZXQgXAorICAgIHJkbWEtbG9hZC1tb2R1bGVzQC5zZXJ2aWNlIFwKKyAgICBzcnBfZGFlbW9uX3BvcnRALnNlcnZpY2UgXAorICAgIHJkbWEtaHcudGFyZ2V0IFwKKyAgICBpYmFjbS5zZXJ2aWNlIFwKKyIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKKworT0VDTUFLRV9GSU5EX1JPT1RfUEFUSF9NT0RFX1BST0dSQU0gPSAiQk9USCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3BpY2Uvc3BpY2UtcHJvdG9jb2xfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zcGljZS9zcGljZS1wcm90b2NvbF9naXQuYmIKaW5kZXggOTY2Y2E0MS4uMWQ1NmJlYSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zcGljZS9zcGljZS1wcm90b2NvbF9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zcGljZS9zcGljZS1wcm90b2NvbF9naXQuYmIKQEAgLTEzLDkgKzEzLDkgQEAKIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjM3MzExY2I1NjA0ZjNlNWNjMmZiMGZkMjM1MjdlOTUiCiAKLVBWID0gIjAuMTQuMCtnaXQke1NSQ1BWfSIKK1BWID0gIjAuMTQuMStnaXQke1NSQ1BWfSIKIAotU1JDUkVWID0gImY3MmVjZTk5M2FlYWYyM2Y3N2UyODQ1NTYyYjIwZTU1NjNlNTJiYTAiCitTUkNSRVYgPSAiZTBlYzE3OGE3MmFhMzNlMzA3ZWU1YWMwMmI2M2JmMzM2ZGE5MjFhNSIKIAogU1JDX1VSSSA9ICIgXAogICAgIGdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL3NwaWNlL3NwaWNlLXByb3RvY29sIFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3BpY2Uvc3BpY2VfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zcGljZS9zcGljZV9naXQuYmIKaW5kZXggMDZhNzljNS4uOWQzYTBlNiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zcGljZS9zcGljZV9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zcGljZS9zcGljZV9naXQuYmIKQEAgLTI5LDEzICsyOSwxMiBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHB5dGhvbm5hdGl2ZSBweXRob24tZGlyIHBrZ2NvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBweXRob24zbmF0aXZlIHB5dGhvbjMtZGlyIHBrZ2NvbmZpZwogCi1ERVBFTkRTICs9ICJzcGljZS1wcm90b2NvbCBqcGVnIHBpeG1hbiBhbHNhLWxpYiBnbGliLTIuMCBweXRob24tcHlwYXJzaW5nLW5hdGl2ZSBweXRob24tc2l4LW5hdGl2ZSBnbGliLTIuMC1uYXRpdmUiCitERVBFTkRTICs9ICJzcGljZS1wcm90b2NvbCBqcGVnIHBpeG1hbiBhbHNhLWxpYiBnbGliLTIuMCBweXRob24zLXB5cGFyc2luZy1uYXRpdmUgcHl0aG9uMy1zaXgtbmF0aXZlIGdsaWItMi4wLW5hdGl2ZSIKIERFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICJuYXRpdmVzZGstb3BlbnNzbCIKIAotZXhwb3J0IFBZVEhPTj0iJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIgotZXhwb3J0IFBZVEhPTlBBVEg9IiR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2xpYmRpcn0vcHl0aG9uMi43L3NpdGUtcGFja2FnZXMiCitleHBvcnQgUFlUSE9OPSIke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyIKIAogQ0ZMQUdTX2FwcGVuZCA9ICIgLVduby1lcnJvciIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHJvbmdzd2FuL3N0cm9uZ3N3YW5fNS44LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0cm9uZ3N3YW4vc3Ryb25nc3dhbl81LjguMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA1ZDY5Ni4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0cm9uZ3N3YW4vc3Ryb25nc3dhbl81LjguMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzNSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJzdHJvbmdTd2FuIGlzIGFuIE9wZW5Tb3VyY2UgSVBzZWMgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBcCi1MaW51eCBvcGVyYXRpbmcgc3lzdGVtLiIKLVNVTU1BUlkgPSAic3Ryb25nU3dhbiBpcyBhbiBPcGVuU291cmNlIElQc2VjIGltcGxlbWVudGF0aW9uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zdHJvbmdzd2FuLm9yZyIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotREVQRU5EUyA9ICJnbXAgb3BlbnNzbCBmbGV4LW5hdGl2ZSBmbGV4IGJpc29uLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuc3Ryb25nc3dhbi5vcmcvc3Ryb25nc3dhbi0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1mdW50aW9uLXBhcmFtZXRlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lbW9yeS5oLUluY2x1ZGUtc3RkaW50LmgtZm9yLXVpbnRwdHJfdC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ5NGVhYzJjYWVkNTFiMGNjNzc2ZTU4ODdiMTBiYWNlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg2OTAwZGRiZTczMzdjOTIzZGFkZjJjODMzOWFlOGVkMmI5MTU4ZTM2OTE3NDU4ODRkMDhhZTUzNDY3NzQzMGUiCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInN0cm9uZ3N3YW4tKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgICAgICAtLXdpdGhvdXQtbGliLXByZWZpeCBcCi0gICAgICAgIC0td2l0aC1kZXYtaGVhZGVycz0ke2luY2x1ZGVkaXJ9L3N0cm9uZ3N3YW4gXAotIgotCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICctLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8nLCAnLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyJywgZCl9IgotCi1QQUNLQUdFQ09ORklHID8/PSAiY2hhcm9uIGN1cmwgZ21wIG9wZW5zc2wgc3Ryb2tlIHNxbGl0ZTMgXAotICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdsZGFwJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbYWVzbmldID0gIi0tZW5hYmxlLWFlc25pLC0tZGlzYWJsZS1hZXNuaSwsJHtQTn0tcGx1Z2luLWFlc25pIgotUEFDS0FHRUNPTkZJR1tiZmRdID0gIi0tZW5hYmxlLWJmZC1iYWNrdHJhY2VzLC0tZGlzYWJsZS1iZmQtYmFja3RyYWNlcyxiaW51dGlscyIKLVBBQ0tBR0VDT05GSUdbY2hhcm9uXSA9ICItLWVuYWJsZS1jaGFyb24sLS1kaXNhYmxlLWNoYXJvbiwiCi1QQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCwke1BOfS1wbHVnaW4tY3VybCIKLVBBQ0tBR0VDT05GSUdbZ21wXSA9ICItLWVuYWJsZS1nbXAsLS1kaXNhYmxlLWdtcCxnbXAsJHtQTn0tcGx1Z2luLWdtcCIKLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtbGRhcCwtLWRpc2FibGUtbGRhcCxvcGVubGRhcCwke1BOfS1wbHVnaW4tbGRhcCIKLVBBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0tZW5hYmxlLW15c3FsLC0tZGlzYWJsZS1teXNxbCxteXNxbDUsJHtQTn0tcGx1Z2luLW15c3FsIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wsJHtQTn0tcGx1Z2luLW9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3NjZXBdID0gIi0tZW5hYmxlLXNjZXBjbGllbnQsLS1kaXNhYmxlLXNjZXBjbGllbnQsIgotUEFDS0FHRUNPTkZJR1tzb3VwXSA9ICItLWVuYWJsZS1zb3VwLC0tZGlzYWJsZS1zb3VwLGxpYnNvdXAtMi40LCR7UE59LXBsdWdpbi1zb3VwIgotUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLWVuYWJsZS1zcWxpdGUsLS1kaXNhYmxlLXNxbGl0ZSxzcWxpdGUzLCR7UE59LXBsdWdpbi1zcWxpdGUiCi1QQUNLQUdFQ09ORklHW3N0cm9rZV0gPSAiLS1lbmFibGUtc3Ryb2tlLC0tZGlzYWJsZS1zdHJva2UsLCR7UE59LXBsdWdpbi1zdHJva2UiCi1QQUNLQUdFQ09ORklHW3N3YW5jdGxdID0gIi0tZW5hYmxlLXN3YW5jdGwsLS1kaXNhYmxlLXN3YW5jdGwsLGxpYmdjYyIKLQotIyByZXF1aXJlcyBzd2FuY3RsCi1QQUNLQUdFQ09ORklHW3N5c3RlbWQtY2hhcm9uXSA9ICItLWVuYWJsZS1zeXN0ZW1kLC0tZGlzYWJsZS1zeXN0ZW1kLHN5c3RlbWQsIgotCi1pbmhlcml0IGF1dG90b29scyBzeXN0ZW1kIHBrZ2NvbmZpZwotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLWlwc2VjIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2lwc2VjL2xpYioke1NPTElCU30iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7YmluZGlyfS8uZGVidWcgJHtzYmluZGlyfS8uZGVidWcgJHtsaWJkaXJ9L2lwc2VjLy5kZWJ1ZyAke2xpYmV4ZWNkaXJ9L2lwc2VjLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2lwc2VjL2xpYioke1NPTElCU0RFVn0gJHtsaWJkaXJ9L2lwc2VjLyoubGEgJHtsaWJkaXJ9L2lwc2VjL2luY2x1ZGUvY29uZmlnLmgiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9pcHNlYy8qLmEiCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9LyouY29uZiAke3N5c2NvbmZkaXJ9L2lwc2VjLmQvKi5jb25mICR7c3lzY29uZmRpcn0vc3Ryb25nc3dhbi5kLyouY29uZiIKLQotUEFDS0FHRVMgKz0gIiR7UE59LXBsdWdpbnMiCi1BTExPV19FTVBUWV8ke1BOfS1wbHVnaW5zID0gIjEiCi0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl4ke1BOfS1wbHVnaW4tLiokIgotTk9BVVRPUEFDS0FHRURFQlVHID0gIjEiCi0KLXB5dGhvbiBzcGxpdF9zdHJvbmdzd2FuX3BsdWdpbnMgKCkgewotICAgIHN5c2NvbmZkaXIgPSBkLmV4cGFuZCgnJHtzeXNjb25mZGlyfS9zdHJvbmdzd2FuLmQvY2hhcm9uJykKLSAgICBsaWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2lwc2VjL3BsdWdpbnMnKQotICAgIGRiZ2xpYmRpciA9IG9zLnBhdGguam9pbihsaWJkaXIsICcuZGVidWcnKQotCi0gICAgZGVmIGFkZF9wbHVnaW5fY29uZihmLCBwa2csIGZpbGVfcmVnZXgsIG91dHB1dF9wYXR0ZXJuLCBtb2R1bGVuYW1lKToKLSAgICAgICAgZHZhciA9IGQuZ2V0VmFyKCdQS0dEJykKLSAgICAgICAgb2xkZmlsZXMgPSBkLmdldFZhcignQ09ORkZJTEVTXycgKyBwa2cpCi0gICAgICAgIG5ld2ZpbGUgPSAnLycgKyBvcy5wYXRoLnJlbHBhdGgoZiwgZHZhcikKLQotICAgICAgICBpZiBub3Qgb2xkZmlsZXM6Ci0gICAgICAgICAgICBkLnNldFZhcignQ09ORkZJTEVTXycgKyBwa2csIG5ld2ZpbGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkLnNldFZhcignQ09ORkZJTEVTXycgKyBwa2csIG9sZGZpbGVzICsgIiAiICsgbmV3ZmlsZSkKLQotICAgIHNwbGl0X3BhY2thZ2VzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnbGlic3Ryb25nc3dhbi0oLiopXC5zbycsICcke1BOfS1wbHVnaW4tJXMnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4nLCBwcmVwZW5kPVRydWUpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgc3lzY29uZmRpciwgJyguKilcLmNvbmYnLCAnJHtQTn0tcGx1Z2luLSVzJywgJ3N0cm9uZ1N3YW4gJXMgcGx1Z2luJywgcHJlcGVuZD1UcnVlLCBob29rPWFkZF9wbHVnaW5fY29uZikKLQotICAgIHNwbGl0X2RiZ19wYWNrYWdlcyA9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIGRiZ2xpYmRpciwgJ2xpYnN0cm9uZ3N3YW4tKC4qKVwuc28nLCAnJHtQTn0tcGx1Z2luLSVzLWRiZycsICdzdHJvbmdTd2FuICVzIHBsdWdpbiAtIERlYnVnZ2luZyBmaWxlcycsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGJnJykKLSAgICBzcGxpdF9kZXZfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdsaWJzdHJvbmdzd2FuLSguKilcLmxhJywgJyR7UE59LXBsdWdpbi0lcy1kZXYnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4gLSBEZXZlbG9wbWVudCBmaWxlcycsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGV2JykKLSAgICBzcGxpdF9zdGF0aWNkZXZfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdsaWJzdHJvbmdzd2FuLSguKilcLmEnLCAnJHtQTn0tcGx1Z2luLSVzLXN0YXRpY2RldicsICdzdHJvbmdTd2FuICVzIHBsdWdpbiAtIERldmVsb3BtZW50IGZpbGVzIChTdGF0aWMgTGlicmFyaWVzKScsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJHtQTn0tc3RhdGljZGV2JykKLQotICAgIGlmIHNwbGl0X3BhY2thZ2VzOgotICAgICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCi0gICAgICAgIGQuc2V0VmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLXBsdWdpbnMnLCAnICcuam9pbihzcGxpdF9wYWNrYWdlcykpCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLWRiZycsICcgJyArICcgJy5qb2luKHNwbGl0X2RiZ19wYWNrYWdlcykpCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLWRldicsICcgJyArICcgJy5qb2luKHNwbGl0X2Rldl9wYWNrYWdlcykpCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLXN0YXRpY2RldicsICcgJyArICcgJy5qb2luKHNwbGl0X3N0YXRpY2Rldl9wYWNrYWdlcykpCi19Ci0KLVBBQ0tBR0VTUExJVEZVTkNTX3ByZXBlbmQgPSAic3BsaXRfc3Ryb25nc3dhbl9wbHVnaW5zICIKLQotIyBJbnN0YWxsIHNvbWUgZGVmYXVsdCBwbHVnaW5zIGJhc2VkIG9uIGRlZmF1bHQgc3Ryb25nU3dhbiAuL2NvbmZpZ3VyZSBvcHRpb25zCi0jIFNlZSBodHRwczovL3dpa2kuc3Ryb25nc3dhbi5vcmcvcHJvamVjdHMvc3Ryb25nc3dhbi93aWtpL1BsdWdpbmxpc3QKLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQTn0tcGx1Z2luLWFlcyBcCi0gICAgJHtQTn0tcGx1Z2luLWF0dHIgXAotICAgICR7UE59LXBsdWdpbi1jbWFjIFwKLSAgICAke1BOfS1wbHVnaW4tY29uc3RyYWludHMgXAotICAgICR7UE59LXBsdWdpbi1kZXMgXAotICAgICR7UE59LXBsdWdpbi1kbnNrZXkgXAotICAgICR7UE59LXBsdWdpbi1obWFjIFwKLSAgICAke1BOfS1wbHVnaW4ta2VybmVsLW5ldGxpbmsgXAotICAgICR7UE59LXBsdWdpbi1tZDUgXAotICAgICR7UE59LXBsdWdpbi1ub25jZSBcCi0gICAgJHtQTn0tcGx1Z2luLXBlbSBcCi0gICAgJHtQTn0tcGx1Z2luLXBncCBcCi0gICAgJHtQTn0tcGx1Z2luLXBrY3MxIFwKLSAgICAke1BOfS1wbHVnaW4tcGtjczcgXAotICAgICR7UE59LXBsdWdpbi1wa2NzOCBcCi0gICAgJHtQTn0tcGx1Z2luLXBrY3MxMiBcCi0gICAgJHtQTn0tcGx1Z2luLXB1YmtleSBcCi0gICAgJHtQTn0tcGx1Z2luLXJhbmRvbSBcCi0gICAgJHtQTn0tcGx1Z2luLXJjMiBcCi0gICAgJHtQTn0tcGx1Z2luLXJlc29sdmUgXAotICAgICR7UE59LXBsdWdpbi1yZXZvY2F0aW9uIFwKLSAgICAke1BOfS1wbHVnaW4tc2hhMSBcCi0gICAgJHtQTn0tcGx1Z2luLXNoYTIgXAotICAgICR7UE59LXBsdWdpbi1zb2NrZXQtZGVmYXVsdCBcCi0gICAgJHtQTn0tcGx1Z2luLXNzaGtleSBcCi0gICAgJHtQTn0tcGx1Z2luLXVwZG93biBcCi0gICAgJHtQTn0tcGx1Z2luLXZpY2kgXAotICAgICR7UE59LXBsdWdpbi14NTA5IFwKLSAgICAke1BOfS1wbHVnaW4teGF1dGgtZ2VuZXJpYyBcCi0gICAgJHtQTn0tcGx1Z2luLXhjYmMgXAotICAgICR7UE59LXBsdWdpbi1jdXJ2ZTI1NTE5IFwKLSAgICAiCi0KLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc3dhbmN0bCcsICcke0JQTn0uc2VydmljZScsICcnLCBkKX0gJHtCUE59LXN0YXJ0ZXIuc2VydmljZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3Ryb25nc3dhbi9zdHJvbmdzd2FuXzUuOC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHJvbmdzd2FuL3N0cm9uZ3N3YW5fNS44LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGEyNzMzMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3Ryb25nc3dhbi9zdHJvbmdzd2FuXzUuOC40LmJiCkBAIC0wLDAgKzEsMTM1IEBACitERVNDUklQVElPTiA9ICJzdHJvbmdTd2FuIGlzIGFuIE9wZW5Tb3VyY2UgSVBzZWMgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBcCitMaW51eCBvcGVyYXRpbmcgc3lzdGVtLiIKK1NVTU1BUlkgPSAic3Ryb25nU3dhbiBpcyBhbiBPcGVuU291cmNlIElQc2VjIGltcGxlbWVudGF0aW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zdHJvbmdzd2FuLm9yZyIKK1NFQ1RJT04gPSAibmV0IgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorREVQRU5EUyA9ICJnbXAgb3BlbnNzbCBmbGV4LW5hdGl2ZSBmbGV4IGJpc29uLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuc3Ryb25nc3dhbi5vcmcvc3Ryb25nc3dhbi0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1mdW50aW9uLXBhcmFtZXRlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lbW9yeS5oLUluY2x1ZGUtc3RkaW50LmgtZm9yLXVpbnRwdHJfdC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjA2MzRlN2Y0MDU5MWJkM2Y2NzcwZTU4M2MzZjI3ZDI5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJkOWE1N2UzMzgxM2I2MmQ1OGNiYTA3NTMxYzRkNWEzNWM2YjgyM2RmZTliOGZmN2M2MjNiNjU3MWYwMjU1M2MiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInN0cm9uZ3N3YW4tKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgICAgICAtLXdpdGhvdXQtbGliLXByZWZpeCBcCisgICAgICAgIC0td2l0aC1kZXYtaGVhZGVycz0ke2luY2x1ZGVkaXJ9L3N0cm9uZ3N3YW4gXAorIgorCitFWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICctLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8nLCAnLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyJywgZCl9IgorCitQQUNLQUdFQ09ORklHID8/PSAiY2hhcm9uIGN1cmwgZ21wIG9wZW5zc2wgc3Ryb2tlIHNxbGl0ZTMgXAorICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdsZGFwJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbYWVzbmldID0gIi0tZW5hYmxlLWFlc25pLC0tZGlzYWJsZS1hZXNuaSwsJHtQTn0tcGx1Z2luLWFlc25pIgorUEFDS0FHRUNPTkZJR1tiZmRdID0gIi0tZW5hYmxlLWJmZC1iYWNrdHJhY2VzLC0tZGlzYWJsZS1iZmQtYmFja3RyYWNlcyxiaW51dGlscyIKK1BBQ0tBR0VDT05GSUdbY2hhcm9uXSA9ICItLWVuYWJsZS1jaGFyb24sLS1kaXNhYmxlLWNoYXJvbiwiCitQQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCwke1BOfS1wbHVnaW4tY3VybCIKK1BBQ0tBR0VDT05GSUdbZ21wXSA9ICItLWVuYWJsZS1nbXAsLS1kaXNhYmxlLWdtcCxnbXAsJHtQTn0tcGx1Z2luLWdtcCIKK1BBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtbGRhcCwtLWRpc2FibGUtbGRhcCxvcGVubGRhcCwke1BOfS1wbHVnaW4tbGRhcCIKK1BBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0tZW5hYmxlLW15c3FsLC0tZGlzYWJsZS1teXNxbCxteXNxbDUsJHtQTn0tcGx1Z2luLW15c3FsIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wsJHtQTn0tcGx1Z2luLW9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3NjZXBdID0gIi0tZW5hYmxlLXNjZXBjbGllbnQsLS1kaXNhYmxlLXNjZXBjbGllbnQsIgorUEFDS0FHRUNPTkZJR1tzb3VwXSA9ICItLWVuYWJsZS1zb3VwLC0tZGlzYWJsZS1zb3VwLGxpYnNvdXAtMi40LCR7UE59LXBsdWdpbi1zb3VwIgorUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLWVuYWJsZS1zcWxpdGUsLS1kaXNhYmxlLXNxbGl0ZSxzcWxpdGUzLCR7UE59LXBsdWdpbi1zcWxpdGUiCitQQUNLQUdFQ09ORklHW3N0cm9rZV0gPSAiLS1lbmFibGUtc3Ryb2tlLC0tZGlzYWJsZS1zdHJva2UsLCR7UE59LXBsdWdpbi1zdHJva2UiCitQQUNLQUdFQ09ORklHW3N3YW5jdGxdID0gIi0tZW5hYmxlLXN3YW5jdGwsLS1kaXNhYmxlLXN3YW5jdGwsLGxpYmdjYyIKKworIyByZXF1aXJlcyBzd2FuY3RsCitQQUNLQUdFQ09ORklHW3N5c3RlbWQtY2hhcm9uXSA9ICItLWVuYWJsZS1zeXN0ZW1kLC0tZGlzYWJsZS1zeXN0ZW1kLHN5c3RlbWQsIgorCitpbmhlcml0IGF1dG90b29scyBzeXN0ZW1kIHBrZ2NvbmZpZworCitSUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLWlwc2VjIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2lwc2VjL2xpYioke1NPTElCU30iCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7YmluZGlyfS8uZGVidWcgJHtzYmluZGlyfS8uZGVidWcgJHtsaWJkaXJ9L2lwc2VjLy5kZWJ1ZyAke2xpYmV4ZWNkaXJ9L2lwc2VjLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2lwc2VjL2xpYioke1NPTElCU0RFVn0gJHtsaWJkaXJ9L2lwc2VjLyoubGEgJHtsaWJkaXJ9L2lwc2VjL2luY2x1ZGUvY29uZmlnLmgiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9pcHNlYy8qLmEiCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9LyouY29uZiAke3N5c2NvbmZkaXJ9L2lwc2VjLmQvKi5jb25mICR7c3lzY29uZmRpcn0vc3Ryb25nc3dhbi5kLyouY29uZiIKKworUEFDS0FHRVMgKz0gIiR7UE59LXBsdWdpbnMiCitBTExPV19FTVBUWV8ke1BOfS1wbHVnaW5zID0gIjEiCisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl4ke1BOfS1wbHVnaW4tLiokIgorTk9BVVRPUEFDS0FHRURFQlVHID0gIjEiCisKK3B5dGhvbiBzcGxpdF9zdHJvbmdzd2FuX3BsdWdpbnMgKCkgeworICAgIHN5c2NvbmZkaXIgPSBkLmV4cGFuZCgnJHtzeXNjb25mZGlyfS9zdHJvbmdzd2FuLmQvY2hhcm9uJykKKyAgICBsaWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2lwc2VjL3BsdWdpbnMnKQorICAgIGRiZ2xpYmRpciA9IG9zLnBhdGguam9pbihsaWJkaXIsICcuZGVidWcnKQorCisgICAgZGVmIGFkZF9wbHVnaW5fY29uZihmLCBwa2csIGZpbGVfcmVnZXgsIG91dHB1dF9wYXR0ZXJuLCBtb2R1bGVuYW1lKToKKyAgICAgICAgZHZhciA9IGQuZ2V0VmFyKCdQS0dEJykKKyAgICAgICAgb2xkZmlsZXMgPSBkLmdldFZhcignQ09ORkZJTEVTXycgKyBwa2cpCisgICAgICAgIG5ld2ZpbGUgPSAnLycgKyBvcy5wYXRoLnJlbHBhdGgoZiwgZHZhcikKKworICAgICAgICBpZiBub3Qgb2xkZmlsZXM6CisgICAgICAgICAgICBkLnNldFZhcignQ09ORkZJTEVTXycgKyBwa2csIG5ld2ZpbGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkLnNldFZhcignQ09ORkZJTEVTXycgKyBwa2csIG9sZGZpbGVzICsgIiAiICsgbmV3ZmlsZSkKKworICAgIHNwbGl0X3BhY2thZ2VzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnbGlic3Ryb25nc3dhbi0oLiopXC5zbycsICcke1BOfS1wbHVnaW4tJXMnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4nLCBwcmVwZW5kPVRydWUpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgc3lzY29uZmRpciwgJyguKilcLmNvbmYnLCAnJHtQTn0tcGx1Z2luLSVzJywgJ3N0cm9uZ1N3YW4gJXMgcGx1Z2luJywgcHJlcGVuZD1UcnVlLCBob29rPWFkZF9wbHVnaW5fY29uZikKKworICAgIHNwbGl0X2RiZ19wYWNrYWdlcyA9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIGRiZ2xpYmRpciwgJ2xpYnN0cm9uZ3N3YW4tKC4qKVwuc28nLCAnJHtQTn0tcGx1Z2luLSVzLWRiZycsICdzdHJvbmdTd2FuICVzIHBsdWdpbiAtIERlYnVnZ2luZyBmaWxlcycsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGJnJykKKyAgICBzcGxpdF9kZXZfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdsaWJzdHJvbmdzd2FuLSguKilcLmxhJywgJyR7UE59LXBsdWdpbi0lcy1kZXYnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4gLSBEZXZlbG9wbWVudCBmaWxlcycsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGV2JykKKyAgICBzcGxpdF9zdGF0aWNkZXZfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdsaWJzdHJvbmdzd2FuLSguKilcLmEnLCAnJHtQTn0tcGx1Z2luLSVzLXN0YXRpY2RldicsICdzdHJvbmdTd2FuICVzIHBsdWdpbiAtIERldmVsb3BtZW50IGZpbGVzIChTdGF0aWMgTGlicmFyaWVzKScsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJHtQTn0tc3RhdGljZGV2JykKKworICAgIGlmIHNwbGl0X3BhY2thZ2VzOgorICAgICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCisgICAgICAgIGQuc2V0VmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLXBsdWdpbnMnLCAnICcuam9pbihzcGxpdF9wYWNrYWdlcykpCisgICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLWRiZycsICcgJyArICcgJy5qb2luKHNwbGl0X2RiZ19wYWNrYWdlcykpCisgICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLWRldicsICcgJyArICcgJy5qb2luKHNwbGl0X2Rldl9wYWNrYWdlcykpCisgICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLXN0YXRpY2RldicsICcgJyArICcgJy5qb2luKHNwbGl0X3N0YXRpY2Rldl9wYWNrYWdlcykpCit9CisKK1BBQ0tBR0VTUExJVEZVTkNTX3ByZXBlbmQgPSAic3BsaXRfc3Ryb25nc3dhbl9wbHVnaW5zICIKKworIyBJbnN0YWxsIHNvbWUgZGVmYXVsdCBwbHVnaW5zIGJhc2VkIG9uIGRlZmF1bHQgc3Ryb25nU3dhbiAuL2NvbmZpZ3VyZSBvcHRpb25zCisjIFNlZSBodHRwczovL3dpa2kuc3Ryb25nc3dhbi5vcmcvcHJvamVjdHMvc3Ryb25nc3dhbi93aWtpL1BsdWdpbmxpc3QKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQTn0tcGx1Z2luLWFlcyBcCisgICAgJHtQTn0tcGx1Z2luLWF0dHIgXAorICAgICR7UE59LXBsdWdpbi1jbWFjIFwKKyAgICAke1BOfS1wbHVnaW4tY29uc3RyYWludHMgXAorICAgICR7UE59LXBsdWdpbi1kZXMgXAorICAgICR7UE59LXBsdWdpbi1kbnNrZXkgXAorICAgICR7UE59LXBsdWdpbi1obWFjIFwKKyAgICAke1BOfS1wbHVnaW4ta2VybmVsLW5ldGxpbmsgXAorICAgICR7UE59LXBsdWdpbi1tZDUgXAorICAgICR7UE59LXBsdWdpbi1ub25jZSBcCisgICAgJHtQTn0tcGx1Z2luLXBlbSBcCisgICAgJHtQTn0tcGx1Z2luLXBncCBcCisgICAgJHtQTn0tcGx1Z2luLXBrY3MxIFwKKyAgICAke1BOfS1wbHVnaW4tcGtjczcgXAorICAgICR7UE59LXBsdWdpbi1wa2NzOCBcCisgICAgJHtQTn0tcGx1Z2luLXBrY3MxMiBcCisgICAgJHtQTn0tcGx1Z2luLXB1YmtleSBcCisgICAgJHtQTn0tcGx1Z2luLXJhbmRvbSBcCisgICAgJHtQTn0tcGx1Z2luLXJjMiBcCisgICAgJHtQTn0tcGx1Z2luLXJlc29sdmUgXAorICAgICR7UE59LXBsdWdpbi1yZXZvY2F0aW9uIFwKKyAgICAke1BOfS1wbHVnaW4tc2hhMSBcCisgICAgJHtQTn0tcGx1Z2luLXNoYTIgXAorICAgICR7UE59LXBsdWdpbi1zb2NrZXQtZGVmYXVsdCBcCisgICAgJHtQTn0tcGx1Z2luLXNzaGtleSBcCisgICAgJHtQTn0tcGx1Z2luLXVwZG93biBcCisgICAgJHtQTn0tcGx1Z2luLXZpY2kgXAorICAgICR7UE59LXBsdWdpbi14NTA5IFwKKyAgICAke1BOfS1wbHVnaW4teGF1dGgtZ2VuZXJpYyBcCisgICAgJHtQTn0tcGx1Z2luLXhjYmMgXAorICAgICR7UE59LXBsdWdpbi1jdXJ2ZTI1NTE5IFwKKyAgICAiCisKK1JQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1JSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1JDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc3dhbmN0bCcsICcke0JQTn0uc2VydmljZScsICcnLCBkKX0gJHtCUE59LXN0YXJ0ZXIuc2VydmljZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdWZ0cC91ZnRwXzQuMTAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdWZ0cC91ZnRwXzQuMTAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTM1ZWUxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC91ZnRwL3VmdHBfNC4xMC4yLmJiCkBAIC0wLDAgKzEsMTcgQEAKK0RFU0NSSVBUSU9OID0gIkVuY3J5cHRlZCBVRFAgYmFzZWQgRlRQIHdpdGggbXVsdGljYXN0IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdWZ0cC1tdWx0aWNhc3QiCitTRUNUSU9OID0gImxpYnMvbmV0d29yayIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy91ZnRwLW11bHRpY2FzdC9maWxlcy9zb3VyY2UtdGFyLyIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vdWZ0cC1tdWx0aWNhc3Qvc291cmNlLXRhci91ZnRwLSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkYjA1MTliZjdiMWUwMzI5NDQ5ZTgxYzFlNjgyNjJmOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlY2FiNmFiMDdmZTBlYmFmN2JmZTM1ZDk5ZmUyZGEyOGVkZTNkZGM2ZjIxZjgyNWQzYjI1OWNmMTcxMjU4NTA1IgorCitERVBFTkRTID0gIm9wZW5zc2wiCisKK2RvX2luc3RhbGwgKCkgeworCW9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdWZ0cC91ZnRwXzQuMTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3VmdHAvdWZ0cF80LjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmMwYzIyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdWZ0cC91ZnRwXzQuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1ERVNDUklQVElPTiA9ICJFbmNyeXB0ZWQgVURQIGJhc2VkIEZUUCB3aXRoIG11bHRpY2FzdCIKLUhPTUVQQUdFID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3VmdHAtbXVsdGljYXN0IgotU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdWZ0cC1tdWx0aWNhc3QvZmlsZXMvc291cmNlLXRhci8iCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3VmdHAtbXVsdGljYXN0L3NvdXJjZS10YXIvdWZ0cC0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiZGY2NDA3YWYzYTAwNjdiODgxNDMxYjNkYWQxNDllZjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTFiYThhYWU4MGM3YzljY2FmMDQ2MDBiNjI4Y2JlY2E0Njk5ZWQ0ODI2OGZlNDNkMmJmNTM5YTQxMDgzZjI5MiIKLQotREVQRU5EUyA9ICJvcGVuc3NsIgotCi1kb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3VuYm91bmQvdW5ib3VuZF8xLjkuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdW5ib3VuZC91bmJvdW5kXzEuOS40LmJiCmluZGV4IDAzZWIyZmEuLjYyMDAyMTQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdW5ib3VuZC91bmJvdW5kXzEuOS40LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdW5ib3VuZC91bmJvdW5kXzEuOS40LmJiCkBAIC0yMyw3ICsyMyw3IEBACiAKIEVYVFJBX09FQ09ORiA9ICItLXdpdGgtbGliZXhwYXQ9JHtTVEFHSU5HX0VYRUNQUkVGSVhESVJ9IFwKIAkJLS13aXRoLXNzbD0ke1NUQUdJTkdfRVhFQ1BSRUZJWERJUn0gXAotCQlsaWJ0b29sPSR7VEFSR0VUX1BSRUZJWH1saWJ0b29sIFwKKwkJbGlidG9vbD0ke0hPU1RfU1lTfS1saWJ0b29sIFwKICIKIAkJCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvd2lyZXNoYXJrL3dpcmVzaGFya18zLjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvd2lyZXNoYXJrL3dpcmVzaGFya18zLjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY0NmIzMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3dpcmVzaGFyay93aXJlc2hhcmtfMy4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJ3aXJlc2hhcmsgLSBhIHBvcHVsYXIgbmV0d29yayBwcm90b2NvbCBhbmFseXplciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cud2lyZXNoYXJrLm9yZyIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJHUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmUyNzEyMzRiYTFhMTNjNmU1MTJlNzZiOTRhYzJmNzciCi0KLURFUEVORFMgPSAicGNyZSBleHBhdCBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgbGliZ2NyeXB0IGxpYmdwZy1lcnJvciBsaWJ4bWwyIGJpc29uLW5hdGl2ZSIKLQotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiB3aXJlc2hhcmstbmF0aXZlIGNocnBhdGgtcmVwbGFjZW1lbnQtbmF0aXZlICIKLQotU1JDX1VSSSA9ICJodHRwczovLzEuZXUuZGwud2lyZXNoYXJrLm9yZy9zcmMvYWxsLXZlcnNpb25zL3dpcmVzaGFyay0ke1BWfS50YXIueHoiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovLzEuYXMuZGwud2lyZXNoYXJrLm9yZy9zcmMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyNTk5MTVhZGJiYWRlZDE1ZGUwNzVhZmU3YjRiMDNiNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0Y2ZkMzNhMTlhNDU0ZmY0MDAyMjQzZTlkMDRkNmFmZDY0MjgwYTEwOWEyMWFlNjUyYTE5MmYyYmUyYjFiNjZjIgotCi1QRSA9ICIxIgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBweXRob24zbmF0aXZlIHBlcmxuYXRpdmUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLVBBQ0tBR0VDT05GSUcgPz0gImxpYnBjYXAgZ251dGxzIGxpYm5sIGxpYmNhcCBzYmMgJHtAYmIudXRpbHMuY29udGFpbnMoJ0JCRklMRV9DT0xMRUNUSU9OUycsICdxdDUtbGF5ZXInLCAncXQ1IHBsdWdpbnMnLCAnJywgZCl9IgotCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJsaWJwY2FwIGdudXRscyBzc2wgbGlic3NoIgotCi1QQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLURFTkFCTEVfQ0FQPU9OLC1ERU5BQkxFX0NBUD1PRkYgLURFTkFCTEVfUENBUF9OR19ERUZBVUxUPU9OLCBsaWJjYXAiCi1QQUNLQUdFQ09ORklHW2xpYnBjYXBdID0gIi1ERU5BQkxFX1BDQVA9T04sLURFTkFCTEVfUENBUD1PRkYgLURFTkFCTEVfUENBUF9OR19ERUZBVUxUPU9OICwgbGlicGNhcCIKLVBBQ0tBR0VDT05GSUdbbGlic21pXSA9ICItREVOQUJMRV9TTUk9T04sLURFTkFCTEVfU01JPU9GRixsaWJzbWkiCi1QQUNLQUdFQ09ORklHW2xpYm5sXSA9ICIsLGxpYm5sIgotUEFDS0FHRUNPTkZJR1twb3J0YXVkaW9dID0gIi1ERU5BQkxFX1BPUlRBVURJTz1PTiwtREVOQUJMRV9QT1JUQVVESU89T0ZGLCBwb3J0YXVkaW8tdjE5IgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi1ERU5BQkxFX0dOVVRMUz1PTiwtREVOQUJMRV9HTlVUTFM9T0ZGLCBnbnV0bHMiCi1QQUNLQUdFQ09ORklHW3NzbF0gPSAiLCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItREVOQUJMRV9LUkI1PU9OLC1ERU5BQkxFX0tSQjU9T0ZGLCBrcmI1IgotUEFDS0FHRUNPTkZJR1tsdWFdID0gIi1ERU5BQkxFX0xVQT1PTiwtREVOQUJMRV9MVUE9T0ZGLCBsdWEiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi1ERU5BQkxFX1pMSUI9T04sLURFTkFCTEVfWkxJQj1PRkYsIHpsaWIiCi1QQUNLQUdFQ09ORklHW2dlb2lwXSA9ICIsLCBnZW9pcCIKLVBBQ0tBR0VDT05GSUdbcGx1Z2luc10gPSAiLURFTkFCTEVfUExVR0lOUz1PTiwtREVOQUJMRV9QTFVHSU5TPU9GRiIKLVBBQ0tBR0VDT05GSUdbc2JjXSA9ICItREVOQUJMRV9TQkM9T04sLURFTkFCTEVfU0JDPU9GRiwgc2JjIgotUEFDS0FHRUNPTkZJR1tsaWJzc2hdID0gIiwsbGlic3NoMiIKLVBBQ0tBR0VDT05GSUdbbHo0XSA9ICItREVOQUJMRV9MWjQ9T04sLURFTkFCTEVfTFo0PU9GRiwgbHo0IgotCi0jIHRoZXNlIG5leHQgdHdvIG9wdGlvbnMgcmVxdWlyZSBhZGRpb25hbCBsYXllcnMKLVBBQ0tBR0VDT05GSUdbYy1hcmVzXSA9ICItREVOQUJMRV9DQVJFUz1PTiwtREVOQUJMRV9DQVJFUz1PRkYsIGMtYXJlcyIKLVBBQ0tBR0VDT05GSUdbcXQ1XSA9ICItREVOQUJMRV9RVDU9T04gLURCVUlMRF93aXJlc2hhcms9T04sIC1ERU5BQkxFX1FUNT1PRkYgLURCVUlMRF93aXJlc2hhcms9T0ZGLCBxdHRvb2xzLW5hdGl2ZSBxdG11bHRpbWVkaWEgcXRzdmciCi0KLWluaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncXQ1JywgJ2NtYWtlX3F0NScsICcnLCBkKX0KLQotRVhUUkFfT0VDTUFLRSArPSAiLURFTkFCTEVfTkVUTElOSz1PTiBcCi0gICAgICAgICAgICAgICAgICAtREJVSUxEX21tZGJyZXNvbHZlPU9GRiBcCi0gICAgICAgICAgICAgICAgICAtREJVSUxEX3JhbmRwa3RkdW1wPU9GRiBcCi0gICAgICAgICAgICAgICAgICAtREJVSUxEX2FuZHJvaWRkdW1wPU9GRiBcCi0gICAgICAgICAgICAgICAgICAtREJVSUxEX2RjZXJwY2lkbDJ3cnM9T0ZGIFwKLSAgICAgICAgICAgICAgICAgIC1ETV9JTkNMVURFX0RJUj0ke2luY2x1ZGVkaXJ9IFwKLSAgICAgICAgICAgICAgICAgIC1ETV9MSUJSQVJZPSR7bGliZGlyfSBcCi0gICAgICAgICAgICAgICAgICIKLUNGTEFHU19hcHBlbmQgPSAiIC1sbSIKLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWZvciBmIGluIGxlbW9uCi0JZG8KLQkJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vcnVuLyRmICR7RH0ke2JpbmRpcn0KLQlkb25lCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQlmb3IgZiBpbiBgZmluZCAke0R9JHtsaWJkaXJ9ICR7RH0ke2JpbmRpcn0gLXR5cGUgZiAtZXhlY3V0YWJsZWAKLQlkbwotCQljaHJwYXRoIC0tZGVsZXRlICRmCi0JZG9uZQotfQotCi1QQUNLQUdFX0JFRk9SRV9QTiArPSAidHNoYXJrIgotCi1GSUxFU190c2hhcmsgPSAiJHtiaW5kaXJ9L3RzaGFyayAke21hbmRpcn0vbWFuMS90c2hhcmsuKiIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0qIgotCi1SREVQRU5EU190c2hhcmsgPSAid2lyZXNoYXJrIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvd2lyZXNoYXJrL3dpcmVzaGFya18zLjIuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvd2lyZXNoYXJrL3dpcmVzaGFya18zLjIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjU0NTAyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC93aXJlc2hhcmsvd2lyZXNoYXJrXzMuMi4yLmJiCkBAIC0wLDAgKzEsODEgQEAKK0RFU0NSSVBUSU9OID0gIndpcmVzaGFyayAtIGEgcG9wdWxhciBuZXR3b3JrIHByb3RvY29sIGFuYWx5emVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy53aXJlc2hhcmsub3JnIgorU0VDVElPTiA9ICJuZXQiCitMSUNFTlNFID0gIkdQTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ZTI3MTIzNGJhMWExM2M2ZTUxMmU3NmI5NGFjMmY3NyIKKworREVQRU5EUyA9ICJwY3JlIGV4cGF0IGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJnY3J5cHQgbGliZ3BnLWVycm9yIGxpYnhtbDIgYmlzb24tbmF0aXZlIgorCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHdpcmVzaGFyay1uYXRpdmUgY2hycGF0aC1yZXBsYWNlbWVudC1uYXRpdmUgIgorCitTUkNfVVJJID0gImh0dHBzOi8vMS5ldS5kbC53aXJlc2hhcmsub3JnL3NyYy9hbGwtdmVyc2lvbnMvd2lyZXNoYXJrLSR7UFZ9LnRhci54eiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vMS5hcy5kbC53aXJlc2hhcmsub3JnL3NyYyIKKworU1JDX1VSSVttZDVzdW1dID0gImU0NjhiNzhlMTE3NmUwMjEyYjEzZWY4MDlmNTlkY2JiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVmNTkyM2VmNGMzZmVlMzcwZWQwY2ExYmIzMjRmMzdjMjQ2MDE1ZWJhNGE3ZTc0YWI5NWQ5MjA4ZmVlZGVkNzkiCisKK1BFID0gIjEiCisKK2luaGVyaXQgY21ha2UgcGtnY29uZmlnIHB5dGhvbjNuYXRpdmUgcGVybG5hdGl2ZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gbWltZSBtaW1lLXhkZworCitQQUNLQUdFQ09ORklHID89ICJsaWJwY2FwIGdudXRscyBsaWJubCBsaWJjYXAgc2JjIgorCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJsaWJwY2FwIGdudXRscyBzc2wgbGlic3NoIgorCitQQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLURFTkFCTEVfQ0FQPU9OLC1ERU5BQkxFX0NBUD1PRkYgLURFTkFCTEVfUENBUF9OR19ERUZBVUxUPU9OLCBsaWJjYXAiCitQQUNLQUdFQ09ORklHW2xpYnBjYXBdID0gIi1ERU5BQkxFX1BDQVA9T04sLURFTkFCTEVfUENBUD1PRkYgLURFTkFCTEVfUENBUF9OR19ERUZBVUxUPU9OICwgbGlicGNhcCIKK1BBQ0tBR0VDT05GSUdbbGlic21pXSA9ICItREVOQUJMRV9TTUk9T04sLURFTkFCTEVfU01JPU9GRixsaWJzbWkiCitQQUNLQUdFQ09ORklHW2xpYm5sXSA9ICIsLGxpYm5sIgorUEFDS0FHRUNPTkZJR1twb3J0YXVkaW9dID0gIi1ERU5BQkxFX1BPUlRBVURJTz1PTiwtREVOQUJMRV9QT1JUQVVESU89T0ZGLCBwb3J0YXVkaW8tdjE5IgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi1ERU5BQkxFX0dOVVRMUz1PTiwtREVOQUJMRV9HTlVUTFM9T0ZGLCBnbnV0bHMiCitQQUNLQUdFQ09ORklHW3NzbF0gPSAiLCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItREVOQUJMRV9LUkI1PU9OLC1ERU5BQkxFX0tSQjU9T0ZGLCBrcmI1IgorUEFDS0FHRUNPTkZJR1tsdWFdID0gIi1ERU5BQkxFX0xVQT1PTiwtREVOQUJMRV9MVUE9T0ZGLCBsdWEiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi1ERU5BQkxFX1pMSUI9T04sLURFTkFCTEVfWkxJQj1PRkYsIHpsaWIiCitQQUNLQUdFQ09ORklHW2dlb2lwXSA9ICIsLCBnZW9pcCIKK1BBQ0tBR0VDT05GSUdbcGx1Z2luc10gPSAiLURFTkFCTEVfUExVR0lOUz1PTiwtREVOQUJMRV9QTFVHSU5TPU9GRiIKK1BBQ0tBR0VDT05GSUdbc2JjXSA9ICItREVOQUJMRV9TQkM9T04sLURFTkFCTEVfU0JDPU9GRiwgc2JjIgorUEFDS0FHRUNPTkZJR1tsaWJzc2hdID0gIiwsbGlic3NoMiIKK1BBQ0tBR0VDT05GSUdbbHo0XSA9ICItREVOQUJMRV9MWjQ9T04sLURFTkFCTEVfTFo0PU9GRiwgbHo0IgorCisjIHRoZXNlIG5leHQgdHdvIG9wdGlvbnMgcmVxdWlyZSBhZGRpb25hbCBsYXllcnMKK1BBQ0tBR0VDT05GSUdbYy1hcmVzXSA9ICItREVOQUJMRV9DQVJFUz1PTiwtREVOQUJMRV9DQVJFUz1PRkYsIGMtYXJlcyIKK1BBQ0tBR0VDT05GSUdbcXQ1XSA9ICItREVOQUJMRV9RVDU9T04gLURCVUlMRF93aXJlc2hhcms9T04sIC1ERU5BQkxFX1FUNT1PRkYgLURCVUlMRF93aXJlc2hhcms9T0ZGLCBxdHRvb2xzLW5hdGl2ZSBxdG11bHRpbWVkaWEgcXRzdmciCisKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncXQ1JywgJ2NtYWtlX3F0NScsICcnLCBkKX0KKworRVhUUkFfT0VDTUFLRSArPSAiLURFTkFCTEVfTkVUTElOSz1PTiBcCisgICAgICAgICAgICAgICAgICAtREJVSUxEX21tZGJyZXNvbHZlPU9GRiBcCisgICAgICAgICAgICAgICAgICAtREJVSUxEX3JhbmRwa3RkdW1wPU9GRiBcCisgICAgICAgICAgICAgICAgICAtREJVSUxEX2FuZHJvaWRkdW1wPU9GRiBcCisgICAgICAgICAgICAgICAgICAtREJVSUxEX2RjZXJwY2lkbDJ3cnM9T0ZGIFwKKyAgICAgICAgICAgICAgICAgIC1ETV9JTkNMVURFX0RJUj0ke2luY2x1ZGVkaXJ9IFwKKyAgICAgICAgICAgICAgICAgIC1ETV9MSUJSQVJZPSR7bGliZGlyfSBcCisgICAgICAgICAgICAgICAgICIKK0NGTEFHU19hcHBlbmQgPSAiIC1sbSIKKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWZvciBmIGluIGxlbW9uCisJZG8KKwkJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vcnVuLyRmICR7RH0ke2JpbmRpcn0KKwlkb25lCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKwlmb3IgZiBpbiBgZmluZCAke0R9JHtsaWJkaXJ9ICR7RH0ke2JpbmRpcn0gLXR5cGUgZiAtZXhlY3V0YWJsZWAKKwlkbworCQljaHJwYXRoIC0tZGVsZXRlICRmCisJZG9uZQorfQorCitQQUNLQUdFX0JFRk9SRV9QTiArPSAidHNoYXJrIgorCitGSUxFU190c2hhcmsgPSAiJHtiaW5kaXJ9L3RzaGFyayAke21hbmRpcn0vbWFuMS90c2hhcmsuKiIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0qIgorCitSREVQRU5EU190c2hhcmsgPSAid2lyZXNoYXJrIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvY29uZi9sYXllci5jb25mIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jb25mL2xheWVyLmNvbmYKaW5kZXggYmFkODc4NS4uYWRjZWM4MyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jb25mL2xheWVyLmNvbmYKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jb25mL2xheWVyLmNvbmYKQEAgLTIzLDEzICsyMywyMCBAQAogCiBCQkZJTEVfUFJJT1JJVFlfb3BlbmVtYmVkZGVkLWxheWVyID0gIjYiCiAKKyMgb25seSBhY3RpdmF0ZXMgY29udGVudCB3aGVuIGlkZW50aWZpZWQgbGF5ZXJzIGFyZSBwcmVzZW50LAorIyB0byBlbnN1cmUgeW9jdG8gY29tcGF0aWJpbGl0eSBjaGVjayBwYXNzCitCQkZJTEVTX0RZTkFNSUMgKz0gIiBcCittZXRhLXB5dGhvbjoke0xBWUVSRElSfS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLSovKi8qLmJiIFwKK3BlcmwtbGF5ZXI6JHtMQVlFUkRJUn0vZHluYW1pYy1sYXllcnMvcGVybC1sYXllci9yZWNpcGVzLSovKi8qLmJiIFwKKyIKKwogIyBUaGlzIHNob3VsZCBvbmx5IGJlIGluY3JlbWVudGVkIG9uIHNpZ25pZmljYW50IGNoYW5nZXMgdGhhdCB3aWxsCiAjIGNhdXNlIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggb3RoZXIgbGF5ZXJzCiBMQVlFUlZFUlNJT05fb3BlbmVtYmVkZGVkLWxheWVyID0gIjEiCiAKIExBWUVSREVQRU5EU19vcGVuZW1iZWRkZWQtbGF5ZXIgPSAiY29yZSIKIAotTEFZRVJTRVJJRVNfQ09NUEFUX29wZW5lbWJlZGRlZC1sYXllciA9ICJ0aHVkIHdhcnJpb3IgemV1cyIKK0xBWUVSU0VSSUVTX0NPTVBBVF9vcGVuZW1iZWRkZWQtbGF5ZXIgPSAidGh1ZCB3YXJyaW9yIHpldXMgZHVuZmVsbCIKIAogTElDRU5TRV9QQVRIICs9ICIke0xBWUVSRElSfS9saWNlbnNlcyIKIApAQCAtNDksMTEgKzU2LDEzIEBACiAgIHVzYi1tb2Rlc3dpdGNoLWRhdGEtPnVzYi1tb2Rlc3dpdGNoIFwKICAgbG1zZW5zb3JzLT5sbXNlbnNvcnMtY29uZmlnIFwKICAgcGhvcm9uaXgtdGVzdC1zdWl0ZS0+YmFzaCBcCi0gIHBob3Jvbml4LXRlc3Qtc3VpdGUtPnB5dGhvbiBcCisgIHBob3Jvbml4LXRlc3Qtc3VpdGUtPnB5dGhvbjMgXAogICBwaG9yb25peC10ZXN0LXN1aXRlLT5waHAgXAogICBwaG9yb25peC10ZXN0LXN1aXRlLT5sc2ItcmVsZWFzZSBcCiAgIHBob3Jvbml4LXRlc3Qtc3VpdGUtPnV0aWwtbGludXggXAogICBwaG9yb25peC10ZXN0LXN1aXRlLT5idXN5Ym94IFwKKyAgcGhvcm9uaXgtdGVzdC1zdWl0ZS0+c2hhcmVkLW1pbWUtaW5mbyBcCisgIHBob3Jvbml4LXRlc3Qtc3VpdGUtPmRlc2t0b3AtZmlsZS11dGlscyBcCiAiCiAKICMgdHRmLmluYyBpbmhlcml0cyBmb250Y2FjaGUgd2hpY2ggYWRkcyBmb250Y29uZmlnLXV0aWxzIHRvIFJERVBFTkRTCkBAIC03MCw2ICs3OSw3IEBACiAgIHR0Zi1saWJlcmF0aW9uLXNhbnMtbmFycm93LT5mb250Y29uZmlnIFwKICAgdHRmLWxrbHVnLT5mb250Y29uZmlnIFwKICAgdHRmLWxvaGl0LT5mb250Y29uZmlnIFwKKyAgdHRmLW5vdG8tZW1vamktPmZvbnRjb25maWcgXAogICB0dGYtcHQtc2Fucy0+Zm9udGNvbmZpZyBcCiAgIHR0Zi1yb2JvdG8tPmZvbnRjb25maWcgXAogICB0dGYtbXBsdXMtPmZvbnRjb25maWcgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9zcGVlZHRlc3QtY2xpL3NwZWVkdGVzdC1jbGlfMi4xLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtYmVuY2htYXJrL3NwZWVkdGVzdC1jbGkvc3BlZWR0ZXN0LWNsaV8yLjEuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9zcGVlZHRlc3QtY2xpL3NwZWVkdGVzdC1jbGlfMi4xLjIuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1iZW5jaG1hcmsvc3BlZWR0ZXN0LWNsaS9zcGVlZHRlc3QtY2xpXzIuMS4yLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL3J3bWVtL3J3bWVtXzEuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1ic3AvcndtZW0vcndtZW1fMS4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL3J3bWVtL3J3bWVtXzEuMi5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWJzcC9yd21lbS9yd21lbV8xLjIuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjLzAwMDEtRml4LWJ1aWxkLW9uLTMyYml0LWFyY2hlcy13aXRoLTY0Yml0LXRpbWVfdC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjLzAwMDEtRml4LWJ1aWxkLW9uLTMyYml0LWFyY2hlcy13aXRoLTY0Yml0LXRpbWVfdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saXJjL2xpcmMvMDAwMS1GaXgtYnVpbGQtb24tMzJiaXQtYXJjaGVzLXdpdGgtNjRiaXQtdGltZV90LnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy8wMDAxLUZpeC1idWlsZC1vbi0zMmJpdC1hcmNoZXMtd2l0aC02NGJpdC10aW1lX3QucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjL2xpcmMudG1wZmlsZXMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjLnRtcGZpbGVzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjLnRtcGZpbGVzCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjLnRtcGZpbGVzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjX29wdGlvbnMuY29uZiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjL2xpcmNfb3B0aW9ucy5jb25mCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjX29wdGlvbnMuY29uZgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saXJjL2xpcmMvbGlyY19vcHRpb25zLmNvbmYKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjL2xpcmNkLmNvbmYgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjZC5jb25mCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjZC5jb25mCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjZC5jb25mCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjZC5pbml0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saXJjL2xpcmMvbGlyY2QuaW5pdApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saXJjL2xpcmMvbGlyY2QuaW5pdApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saXJjL2xpcmMvbGlyY2QuaW5pdApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saXJjL2xpcmMvbGlyY2Quc2VydmljZSBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjL2xpcmNkLnNlcnZpY2UKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjL2xpcmNkLnNlcnZpY2UKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjL2xpcmNkLnNlcnZpY2UKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjL2xpcmNleGVjLmluaXQgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjZXhlYy5pbml0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjZXhlYy5pbml0CnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjZXhlYy5pbml0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9wb2xsZmQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9wb2xsZmQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjL3BvbGxmZC5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saXJjL2xpcmMvcG9sbGZkLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyY18wLjkuNGQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyY18wLjkuNGQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU5OTY5NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjXzAuOS40ZC5iYgpAQCAtMCwwICsxLDg2IEBACitERVNDUklQVElPTiA9ICJMSVJDIGlzIGEgcGFja2FnZSB0aGF0IGFsbG93cyB5b3UgdG8gZGVjb2RlIGFuZCBzZW5kIGluZnJhLXJlZCBzaWduYWxzIG9mIG1hbnkgY29tbW9ubHkgdXNlZCByZW1vdGUgY29udHJvbHMuIgorREVTQ1JJUFRJT05fYXBwZW5kX2xpcmMgPSAiIFRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgbGlyYyBkYWVtb24sIGxpYnJhcmllcyBhbmQgdG9vbHMuIgorREVTQ1JJUFRJT05fYXBwZW5kX2xpcmMtZXhlYyA9ICIgVGhpcyBwYWNrYWdlIGNvbnRhaW5zIGEgZGFlbW9uIHRoYXQgcnVucyBwcm9ncmFtcyBvbiBJUiBzaWduYWxzLiIKK0RFU0NSSVBUSU9OX2FwcGVuZF9saXJjLXJlbW90ZXMgPSAiIFRoaXMgcGFja2FnZSBjb250YWlucyBzb21lIGNvbmZpZyBmaWxlcyBmb3IgcmVtb3Rlcy4iCitERVNDUklQVElPTl9hcHBlbmRfbGlyYy1uc2x1MmV4YW1wbGUgPSAiIFRoaXMgcGFja2FnZSBjb250YWlucyBhIHdvcmtpbmcgY29uZmlnIGZvciBSQzUgcmVtb3RlcyBhbmQgYSBtb2RpZmllZCBOU0xVMi4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpcmMub3JnIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkdQTHYyIgorREVQRU5EUyA9ICJsaWJ4c2x0LW5hdGl2ZSBhbHNhLWxpYiBsaWJmdGRpIGxpYnVzYjEgbGlidXNiLWNvbXBhdCBqYWNrIHBvcnRhdWRpby12MTkgcHl0aG9uMy1weXlhbWwiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNfVVJJID0gImh0dHA6Ly9wcmRvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvbGlyYy9saXJjLSR7UFZ9LnRhci5iejIgXAorICAgIGZpbGU6Ly9wb2xsZmQucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1vbi0zMmJpdC1hcmNoZXMtd2l0aC02NGJpdC10aW1lX3QucGF0Y2ggXAorICAgIGZpbGU6Ly9saXJjZC5zZXJ2aWNlIFwKKyAgICBmaWxlOi8vbGlyY2QuaW5pdCBcCisgICAgZmlsZTovL2xpcmNleGVjLmluaXQgXAorICAgIGZpbGU6Ly9saXJjZC5jb25mIFwKKyAgICBmaWxlOi8vbGlyY19vcHRpb25zLmNvbmYgXAorICAgIGZpbGU6Ly9saXJjLnRtcGZpbGVzIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwZDExNjc5Y2JkZDk0YTVhNmRhMDBhOGU3MjMxYjRiZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNjhmMThjMzViNDg5Yjg2NWMwYTc0MWQxMTliMTM2ZTg3MDIxOTE1MzhjZDM1NTFiOTc3YTdhZjZjNGU0MWFiIgorCitTWVNURU1EX1BBQ0tBR0VTID0gImxpcmMgbGlyYy1leGVjIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImxpcmNkLnNlcnZpY2UgbGlyY21kLnNlcnZpY2UgbGlyY2Qtc2V0dXAuc2VydmljZSBsaXJjZC11aW5wdXQuc2VydmljZSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1leGVjID0gImlyZXhlYy5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRV9saXJjID0gImVuYWJsZSIKK1NZU1RFTURfQVVUT19FTkFCTEVfbGlyYy1leGVjID0gImVuYWJsZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgcHl0aG9uM25hdGl2ZQorCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLywtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsc3lzdGVtZCIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCwtLXdpdGgteD1ubyxsaWJ4MTEsIgorCitQQUNLQUdFQ09ORklHID89ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICcgc3lzdGVtZCcsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJyB4MTEnLCAnJywgZCl9IFwKKyIKK0NBQ0hFRF9DT05GSUdVUkVWQVJTID0gIkhBVkVfV09SS0lOR19QT0xMPXllcyIKKworI0VYVFJBX09FTUFLRSA9ICdTVUJESVJTPSJsaWIgZGFlbW9ucyB0b29scyInCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1tIDA3NTUgLWQgJHtEfSR7c3lzY29uZmRpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgLWQgJHtEfSR7c3lzY29uZmRpcn0vbGlyYworICAgIGluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtsaWJkaXJ9L3RtcGZpbGVzLmQKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9saXJjZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2xpcmMvCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlyY19vcHRpb25zLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vbGlyYy8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9saXJjZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2xpcmNleGVjLmluaXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlyYy50bXBmaWxlcyAke0R9JHtsaWJkaXJ9L3RtcGZpbGVzLmQvbGlyYy5jb25mCisgICAgcm0gLXJmICR7RH0ke2xpYmRpcn0vbGlyYy9wbHVnaW5zLyoubGEKKyAgICBybWRpciAke0R9L3Zhci9ydW4vbGlyYyAke0R9L3Zhci9ydW4KKyAgICBjaG93biAtUiByb290OnJvb3QgJHtEfSR7ZGF0YWRpcn0vbGlyYy9jb250cmliCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1jb250cmliICR7UE59LWV4ZWMgJHtQTn0tcGx1Z2lucyAke1BOfS1weXRob24iCisKK1JERVBFTkRTXyR7UE59ID0gImJhc2giCitSREVQRU5EU18ke1BOfS1leGVjID0gIiR7UE59IgorUkRFUEVORFNfJHtQTn0tcHl0aG9uID0gInB5dGhvbjMtc2hlbGwgcHl0aG9uMy1weXlhbWwgcHl0aG9uMy1kYXRldGltZSBweXRob24zLW5ldGNsaWVudCBweXRob24zLXN0cmluZ29sZCIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAiJHtQTn0tZXhlYyAke1BOfS1wbHVnaW5zIgorCitGSUxFU18ke1BOfS1wbHVnaW5zID0gIiR7bGliZGlyfS9saXJjL3BsdWdpbnMvKi5zbyAke2RhdGFkaXJ9L2xpcmMvY29uZmlncyIKK0ZJTEVTXyR7UE59LWNvbnRyaWIgPSAiJHtkYXRhZGlyfS9saXJjL2NvbnRyaWIiCitGSUxFU18ke1BOfS1leGVjID0gIiR7YmluZGlyfS9pcmV4ZWMgJHtzeXNjb25mZGlyfS9saXJjZXhlYyAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2lyZXhlYy5zZXJ2aWNlIgorRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbGlyY2V4ZWMuaW5pdCIKK0ZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2xpcmNkLnNlcnZpY2UiCitGSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9saXJjZC5zb2NrZXQiCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RtcGZpbGVzLmQvbGlyYy5jb25mIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vbGlyYy9wbHVnaW5zLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59LXB5dGhvbiArPSAiJHtiaW5kaXJ9L2lyZGItZ2V0ICR7YmluZGlyfS9pcnRleHQydWRwICR7YmluZGlyfS9saXJjZC1zZXR1cCAke2JpbmRpcn0vcHJvbnRvMmxpcmMgJHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcyIKKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJsaXJjIGxpcmMtZXhlYyIKK0lOSVRTQ1JJUFRfTkFNRV9saXJjLWV4ZWMgPSAibGlyY2V4ZWMiCitJTklUU0NSSVBUX1BBUkFNU19saXJjLWV4ZWMgPSAiZGVmYXVsdHMgMjEiCisKKyMgdGhpcyBpcyBmb3IgZGlzdHJpYnV0aW9ucyB0aGF0IGRvbid0IHVzZSB1ZGV2Citwa2dfcG9zdGluc3RfJHtQTn1fYXBwZW5kKCkgeworICAgIGlmIFsgISAtYyAkRC9kZXYvbGlyYyAtYSAhIC1mIC9zYmluL3VkZXZkIF07IHRoZW4gbWtub2QgJEQvZGV2L2xpcmMgYyA2MSAwOyBmaQorfQorCitTRUNVUklUWV9DRkxBR1MgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtb2UuYmJhcHBlbmQgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLW9lLmJiYXBwZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZGE1ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLW9lLmJiYXBwZW5kCkBAIC0wLDAgKzEsMjAgQEAKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWRldnRvb2xzICs9ICJcCisgICAgcHl0aG9uMy1kaXN0dXRpbHMtZXh0cmEgXAorICAgIHJ3bWVtIFwKKyAgICBzcGVlZHRlc3QtY2xpIFwKKyAgICBtb25nb2RiIFwKKyIKKworUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtY29ubmVjdGl2aXR5ICs9ICJcCisgICAgbGlyYyBcCisiCisKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWV4dGVuZGVkICs9ICJcCisgICAgbGNkcHJvYyBcCisgICAgbW96anMgXAorIgorUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2Utc3VwcG9ydCArPSAiXAorICAgIHNtZW0gXAorIgorUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtZXh0ZW5kZWRfcmVtb3ZlX2xpYmMtbXVzbCA9ICJsY2Rwcm9jIgorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLUludGVsUkRGUE1hdGhMaWIyMFUxLUNoZWNrLWZvci1fX0RFRklORURfd2NoYXJfdC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtSW50ZWxSREZQTWF0aExpYjIwVTEtQ2hlY2stZm9yLV9fREVGSU5FRF93Y2hhcl90LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLUludGVsUkRGUE1hdGhMaWIyMFUxLUNoZWNrLWZvci1fX0RFRklORURfd2NoYXJfdC5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1JbnRlbFJERlBNYXRoTGliMjBVMS1DaGVjay1mb3ItX19ERUZJTkVEX3djaGFyX3QucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtTWFyay1vbmUtb2Ytc3RyZXJyb3Jfci1pbXBsZW1lbnRhdGlvbi1nbGliYy1zcGVjaWZpYy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtTWFyay1vbmUtb2Ytc3RyZXJyb3Jfci1pbXBsZW1lbnRhdGlvbi1nbGliYy1zcGVjaWZpYy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1NYXJrLW9uZS1vZi1zdHJlcnJvcl9yLWltcGxlbWVudGF0aW9uLWdsaWJjLXNwZWNpZmljLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLU1hcmstb25lLW9mLXN0cmVycm9yX3ItaW1wbGVtZW50YXRpb24tZ2xpYmMtc3BlY2lmaWMucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtU3VwcG9ydC1kZXByZWNhdGVkLXJlc29sdmVyLWZ1bmN0aW9ucy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtU3VwcG9ydC1kZXByZWNhdGVkLXJlc29sdmVyLWZ1bmN0aW9ucy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1TdXBwb3J0LWRlcHJlY2F0ZWQtcmVzb2x2ZXItZnVuY3Rpb25zLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLVN1cHBvcnQtZGVwcmVjYXRlZC1yZXNvbHZlci1mdW5jdGlvbnMucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtVGVsbC1zY29ucy10by11c2UtYnVpbGQtc2V0dGluZ3MtZnJvbS1lbnZpcm9ubWVudC12YS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtVGVsbC1zY29ucy10by11c2UtYnVpbGQtc2V0dGluZ3MtZnJvbS1lbnZpcm9ubWVudC12YS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1UZWxsLXNjb25zLXRvLXVzZS1idWlsZC1zZXR0aW5ncy1mcm9tLWVudmlyb25tZW50LXZhLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLVRlbGwtc2NvbnMtdG8tdXNlLWJ1aWxkLXNldHRpbmdzLWZyb20tZW52aXJvbm1lbnQtdmEucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLV9fR0xJQkNfXy10by1jb250cm9sLXVzZS1vZi1nbnVfZ2V0X2xpYmNfdmVyc2lvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLV9fR0xJQkNfXy10by1jb250cm9sLXVzZS1vZi1nbnVfZ2V0X2xpYmNfdmVyc2lvbi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1Vc2UtX19HTElCQ19fLXRvLWNvbnRyb2wtdXNlLW9mLWdudV9nZXRfbGliY192ZXJzaW9uLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1fX0dMSUJDX18tdG8tY29udHJvbC11c2Utb2YtZ251X2dldF9saWJjX3ZlcnNpb24ucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLWxvbmctbG9uZy1pbnN0ZWFkLW9mLWludDY0X3QucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1sb25nLWxvbmctaW5zdGVhZC1vZi1pbnQ2NF90LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1sb25nLWxvbmctaW5zdGVhZC1vZi1pbnQ2NF90LnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1sb25nLWxvbmctaW5zdGVhZC1vZi1pbnQ2NF90LnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLWFzaW8tRG9udC11c2UtZXhwZXJpbWVudGFsLXdpdGgtY2xhbmcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLWFzaW8tRG9udC11c2UtZXhwZXJpbWVudGFsLXdpdGgtY2xhbmcucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtYXNpby1Eb250LXVzZS1leHBlcmltZW50YWwtd2l0aC1jbGFuZy5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1hc2lvLURvbnQtdXNlLWV4cGVyaW1lbnRhbC13aXRoLWNsYW5nLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAyLUFkZC1hLWRlZmluaXRpb24tZm9yLXRoZS1tYWNyby1fX0VMRl9OQVRJVkVfQ0xBU1MucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAyLUFkZC1hLWRlZmluaXRpb24tZm9yLXRoZS1tYWNyby1fX0VMRl9OQVRJVkVfQ0xBU1MucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDItQWRkLWEtZGVmaW5pdGlvbi1mb3ItdGhlLW1hY3JvLV9fRUxGX05BVElWRV9DTEFTUy5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMi1BZGQtYS1kZWZpbml0aW9uLWZvci10aGUtbWFjcm8tX19FTEZfTkFUSVZFX0NMQVNTLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAyLUZpeC1kZWZhdWx0LXN0YWNrLXNpemUtdG8tMjU2Sy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDItRml4LWRlZmF1bHQtc3RhY2stc2l6ZS10by0yNTZLLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAyLUZpeC1kZWZhdWx0LXN0YWNrLXNpemUtdG8tMjU2Sy5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMi1GaXgtZGVmYXVsdC1zdGFjay1zaXplLXRvLTI1NksucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDMtRml4LXVua25vd24tcHJlZml4LWVudi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDMtRml4LXVua25vd24tcHJlZml4LWVudi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMy1GaXgtdW5rbm93bi1wcmVmaXgtZW52LnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAzLUZpeC11bmtub3duLXByZWZpeC1lbnYucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDQtd2lyZWR0aWdlci1EaXNhYmxlLXN0cnRvdXEtb24tbXVzbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDQtd2lyZWR0aWdlci1EaXNhYmxlLXN0cnRvdXEtb24tbXVzbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwNC13aXJlZHRpZ2VyLURpc2FibGUtc3RydG91cS1vbi1tdXNsLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDA0LXdpcmVkdGlnZXItRGlzYWJsZS1zdHJ0b3VxLW9uLW11c2wucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzEyOTYucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8xMjk2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlODRiY2IKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8xMjk2LnBhdGNoCkBAIC0wLDAgKzEsNTIgQEAKK1Vwc3RyZWFtLVN0YXR1czogc3VibWl0dGVkIGh0dHBzOi8vZ2l0aHViLmNvbS9tb25nb2RiL21vbmdvL3B1bGwvMTI5NgorRnJvbSAzNjJiZTA2ZmMxNmE1YWQwZjllOWFhOTBjYzc2M2M1MjQyZThlMzVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmFicmljZSBGb250YWluZSA8Zm9udGFpbmUuZmFicmljZUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDkgRmViIDIwMTkgMTI6NDE6NDUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gc3NsX21hbmFnZXIuY3BwOiBmaXggYnVpbGQgd2l0aCBnY2MgNyBhbmQgLWZwZXJtaXNzaXZlCisKK0NoYW5nZSBwcm90b3R5cGUgb2YgREVSVG9rZW46OnBhcnNlIGZ1bmN0aW9uIGZyb20KK3BhcnNlKENvbnN0RGF0YVJhbmdlIGNkciwgc2l6ZV90KiBvdXRMZW5ndGgpOwordG8gcGFyc2UoQ29uc3REYXRhUmFuZ2UgY2RyLCB1aW50NjRfdCogb3V0TGVuZ3RoKTsKKworT3RoZXJ3aXNlLCB3ZSBnb3QgdGhlIGZvbGxvd2luZyBlcnJvcjoKKworc3JjL21vbmdvL3V0aWwvbmV0L3NzbF9tYW5hZ2VyLmNwcDogSW4gc3RhdGljIG1lbWJlciBmdW5jdGlvbiAnc3RhdGljIG1vbmdvOjpTdGF0dXNXaXRoPG1vbmdvOjp7YW5vbnltb3VzfTo6REVSVG9rZW4+IG1vbmdvOjp7YW5vbnltb3VzfTo6REVSVG9rZW46OnBhcnNlKG1vbmdvOjpDb25zdERhdGFSYW5nZSwgc2l6ZV90KiknOgorc3JjL21vbmdvL3V0aWwvbmV0L3NzbF9tYW5hZ2VyLmNwcDo1NzU6Nzk6IGVycm9yOiBpbnZhbGlkIGNvbnZlcnNpb24gZnJvbSAnc2l6ZV90KiB7YWthIHVuc2lnbmVkIGludCp9JyB0byAnbG9uZyB1bnNpZ25lZCBpbnQqJyBbLWZwZXJtaXNzaXZlXQorICBpZiAobW9uZ29VbnNpZ25lZEFkZE92ZXJmbG93NjQodGFnQW5kTGVuZ3RoQnl0ZUNvdW50LCBkZXJMZW5ndGgsIG91dExlbmd0aCkgfHwKKworU2lnbmVkLW9mZi1ieTogRmFicmljZSBGb250YWluZSA8Zm9udGFpbmUuZmFicmljZUBnbWFpbC5jb20+CistLS0KKyBzcmMvbW9uZ28vdXRpbC9uZXQvc3NsX21hbmFnZXIuY3BwIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21vbmdvL3V0aWwvbmV0L3NzbF9tYW5hZ2VyLmNwcCBiL3NyYy9tb25nby91dGlsL25ldC9zc2xfbWFuYWdlci5jcHAKK2luZGV4IGI5M2ViZTg0YTRhMy4uMzUxMWViNWQ5OThmIDEwMDY0NAorLS0tIGEvc3JjL21vbmdvL3V0aWwvbmV0L3NzbF9tYW5hZ2VyLmNwcAorKysrIGIvc3JjL21vbmdvL3V0aWwvbmV0L3NzbF9tYW5hZ2VyLmNwcAorQEAgLTc4Miw3ICs3ODIsNyBAQCBjbGFzcyBERVJUb2tlbiB7CisgICAgICAqCisgICAgICAqIFJldHVybnMgYSBERVJUb2tlbiB3aGljaCBjb25zaXN0cyBvZiB0aGUgKHRhZywgbGVuZ3RoLCB2YWx1ZSkgdHVwbGUuCisgICAgICAqLworLSAgICBzdGF0aWMgU3RhdHVzV2l0aDxERVJUb2tlbj4gcGFyc2UoQ29uc3REYXRhUmFuZ2UgY2RyLCBzaXplX3QqIG91dExlbmd0aCk7CisrICAgIHN0YXRpYyBTdGF0dXNXaXRoPERFUlRva2VuPiBwYXJzZShDb25zdERhdGFSYW5nZSBjZHIsIHVpbnQ2NF90KiBvdXRMZW5ndGgpOworIAorIHByaXZhdGU6CisgICAgIERFUlR5cGUgX3R5cGV7REVSVHlwZTo6RW5kT2ZDb250ZW50fTsKK0BAIC03OTksNyArNzk5LDcgQEAgc3RydWN0IERhdGFUeXBlOjpIYW5kbGVyPERFUlRva2VuPiB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBhZHZhbmNlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6cHRyZGlmZl90IGRlYnVnX29mZnNldCkgeworLSAgICAgICAgc2l6ZV90IG91dExlbmd0aDsKKysgICAgICAgIHVpbnQ2NF90IG91dExlbmd0aDsKKyAKKyAgICAgICAgIGF1dG8gc3dQYWlyID0gREVSVG9rZW46OnBhcnNlKENvbnN0RGF0YVJhbmdlKHB0ciwgbGVuZ3RoKSwgJm91dExlbmd0aCk7CisgCitAQCAtODQ0LDcgKzg0NCw3IEBAIFN0YXR1c1dpdGg8c3RkOjpzdHJpbmc+IHJlYWRERVJTdHJpbmcoQ29uc3REYXRhUmFuZ2VDdXJzb3ImIGNkYykgeworIH0KKyAKKyAKKy1TdGF0dXNXaXRoPERFUlRva2VuPiBERVJUb2tlbjo6cGFyc2UoQ29uc3REYXRhUmFuZ2UgY2RyLCBzaXplX3QqIG91dExlbmd0aCkgeworK1N0YXR1c1dpdGg8REVSVG9rZW4+IERFUlRva2VuOjpwYXJzZShDb25zdERhdGFSYW5nZSBjZHIsIHVpbnQ2NF90KiBvdXRMZW5ndGgpIHsKKyAgICAgY29uc3Qgc2l6ZV90IGtUYWdMZW5ndGggPSAxOworICAgICBjb25zdCBzaXplX3Qga1RhZ0xlbmd0aEFuZEluaXRpYWxMZW5ndGhCeXRlTGVuZ3RoID0ga1RhZ0xlbmd0aCArIDE7CisgCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi9hcm02NC1zdXBwb3J0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvYXJtNjQtc3VwcG9ydC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvYXJtNjQtc3VwcG9ydC5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvYXJtNjQtc3VwcG9ydC5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGJfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGJfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ODQxZWYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYl9naXQuYmIKQEAgLTAsMCArMSw3NiBAQAorU1VNTUFSWSA9ICJtb25nb2RiIgorTElDRU5TRSA9ICJTU1BMLTEgJiBBcGFjaGUtMi4wICYgWmxpYiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UtQ29tbXVuaXR5LnR4dDttZDU9M2E4NjVmMjdmMTFmNDNlY2JlNTQyZDllYTM4N2RjZjEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQVBBQ0hFLTIuMC50eHQ7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgorCitERVBFTkRTID0gIm9wZW5zc2wgbGlicGNhcCB6bGliIGJvb3N0IGN1cmwgcHl0aG9uMyBcCisgICAgICAgICAgIHB5dGhvbjMtc2V0dXB0b29scy1uYXRpdmUgXAorICAgICAgICAgICBweXRob24zLXB5eWFtbC1uYXRpdmUgcHl0aG9uMy1jaGVldGFoLW5hdGl2ZSBcCisgICAgICAgICAgIHB5dGhvbjMtcHN1dGlsLW5hdGl2ZSBweXRob24zLXJlZ2V4LW5hdGl2ZSBcCisgICAgICAgICAgICIKKworaW5oZXJpdCBzY29ucyBkb3MydW5peCBzaXRlaW5mbyBweXRob24zbmF0aXZlCisKK1BWID0gIjQuMi4yIgorI3Y0LjIuMgorU1JDUkVWID0gImEwYmJiZmY2YWRhMTU5ZTE5Mjk4ZDM3OTQ2YWM4ZGM0YjQ5N2VhZGYiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbW9uZ29kYi9tb25nby5naXQ7YnJhbmNoPXY0LjIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1UZWxsLXNjb25zLXRvLXVzZS1idWlsZC1zZXR0aW5ncy1mcm9tLWVudmlyb25tZW50LXZhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLWxvbmctbG9uZy1pbnN0ZWFkLW9mLWludDY0X3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtX19HTElCQ19fLXRvLWNvbnRyb2wtdXNlLW9mLWdudV9nZXRfbGliY192ZXJzaW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLWEtZGVmaW5pdGlvbi1mb3ItdGhlLW1hY3JvLV9fRUxGX05BVElWRV9DTEFTUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hcm02NC1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSW50ZWxSREZQTWF0aExpYjIwVTEtQ2hlY2stZm9yLV9fREVGSU5FRF93Y2hhcl90LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtU3VwcG9ydC1kZXByZWNhdGVkLXJlc29sdmVyLWZ1bmN0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUZpeC11bmtub3duLXByZWZpeC1lbnYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMTI5Ni5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9IlwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFyay1vbmUtb2Ytc3RyZXJyb3Jfci1pbXBsZW1lbnRhdGlvbi1nbGliYy1zcGVjaWZpYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeC1kZWZhdWx0LXN0YWNrLXNpemUtdG8tMjU2Sy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXdpcmVkdGlnZXItRGlzYWJsZS1zdHJ0b3VxLW9uLW11c2wucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX3Rvb2xjaGFpbi1jbGFuZyA9ICJcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFzaW8tRG9udC11c2UtZXhwZXJpbWVudGFsLXdpdGgtY2xhbmcucGF0Y2ggXAorICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0NPTVBBVElCTEVfSE9TVCA/PSAnKHg4Nl82NHxpLjg2fHBvd2VycGM2NHxhcm18YWFyY2g2NCkuKi1saW51eCcKKworUEFDS0FHRUNPTkZJRyA/Pz0gInRjbWFsbG9jIHN5c3RlbS1wY3JlIgorIyBncGVyZnRvb2xzIGNvbXBpbGF0aW9uIGZhaWxzIGZvciBhcm0gYmVsb3cgdjcgYmVjYXVzZSBvZiBtaXNzaW5nIHN1cHBvcnQgb2YKKyMgZG1iIG9wZXJhdGlvbi4gU28gd2UgdXNlIHN5c3RlbS1hbGxvY2F0b3IgaW5zdGVhZCBvZiB0Y21hbGxvYworUEFDS0FHRUNPTkZJR19yZW1vdmVfYXJtdjYgPSAidGNtYWxsb2MiCitQQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAidGNtYWxsb2MiCitQQUNLQUdFQ09ORklHX3JlbW92ZV9yaXNjdjY0ID0gInRjbWFsbG9jIgorUEFDS0FHRUNPTkZJR19yZW1vdmVfcmlzY3YzMiA9ICJ0Y21hbGxvYyIKKworUEFDS0FHRUNPTkZJR1t0Y21hbGxvY10gPSAiLS11c2Utc3lzdGVtLXRjbWFsbG9jLC0tYWxsb2NhdG9yPXN5c3RlbSxncGVyZnRvb2xzLCIKK1BBQ0tBR0VDT05GSUdbc2hlbGxdID0gIiwtLWpzLWVuZ2luZT1ub25lLCwiCitQQUNLQUdFQ09ORklHW3N5c3RlbS1wY3JlXSA9ICItLXVzZS1zeXN0ZW0tcGNyZSwsbGlicGNyZSwiCisKK0VYVFJBX09FU0NPTlMgPSAiLS1wcmVmaXg9JHtEfSR7cHJlZml4fSBcCisgICAgICAgICAgICAgICAgIExJQlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0gXAorICAgICAgICAgICAgICAgICBMSU5LRkxBR1M9JyR7TERGTEFHU30nIFwKKyAgICAgICAgICAgICAgICAgQ1hYRkxBR1M9JyR7Q1hYRkxBR1N9JyBcCisgICAgICAgICAgICAgICAgIFRBUkdFVF9BUkNIPSR7VEFSR0VUX0FSQ0h9IFwKKyAgICAgICAgICAgICAgICAgLS1zc2wgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtd2FybmluZ3MtYXMtZXJyb3JzIFwKKyAgICAgICAgICAgICAgICAgLS11c2Utc3lzdGVtLXpsaWIgXAorICAgICAgICAgICAgICAgICAtLW5vc3RyaXAgXAorICAgICAgICAgICAgICAgICAtLWVuZGlhbj0ke0BvZS51dGlscy5jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICdsaXR0bGUnLCAnYmlnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgLS13aXJlZHRpZ2VyPSR7QFsnb2ZmJywnb24nXVtkLmdldFZhcignU0lURUlORk9fQklUUycpICE9ICczMiddfSBcCisgICAgICAgICAgICAgICAgICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gXAorICAgICAgICAgICAgICAgICBjb3JlIgorCitzY29uc19kb19jb21waWxlKCkgeworICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vc2NvbnMgJHtQQVJBTExFTF9NQUtFfSAke0VYVFJBX09FU0NPTlN9IHx8IFwKKyAgICAgICAgZGllICJzY29ucyBidWlsZCBleGVjdXRpb24gZmFpbGVkLiIKK30KKworc2NvbnNfZG9faW5zdGFsbCgpIHsKKyAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3Njb25zIGluc3RhbGwgJHtFWFRSQV9PRVNDT05TfXx8IFwKKyAgICAgICAgZGllICJzY29ucyBpbnN0YWxsIGV4ZWN1dGlvbiBmYWlsZWQuIgorfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xjZHByb2MvbGNkcHJvYy8wMDAxLUZpeC1wYXJhbGxlbC1idWlsZC1maXgtcG9ydC1pbnRlcm5hbC1tYWtlLWRlcGVuZGVuY2kucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbGNkcHJvYy9sY2Rwcm9jLzAwMDEtRml4LXBhcmFsbGVsLWJ1aWxkLWZpeC1wb3J0LWludGVybmFsLW1ha2UtZGVwZW5kZW5jaS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xjZHByb2MvbGNkcHJvYy8wMDAxLUZpeC1wYXJhbGxlbC1idWlsZC1maXgtcG9ydC1pbnRlcm5hbC1tYWtlLWRlcGVuZGVuY2kucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9sY2Rwcm9jL2xjZHByb2MvMDAwMS1GaXgtcGFyYWxsZWwtYnVpbGQtZml4LXBvcnQtaW50ZXJuYWwtbWFrZS1kZXBlbmRlbmNpLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGNkcHJvYy9sY2Rwcm9jLzAwMDItSW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgtZGVmaW5pdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9sY2Rwcm9jL2xjZHByb2MvMDAwMi1JbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC1kZWZpbml0aW9uLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGNkcHJvYy9sY2Rwcm9jLzAwMDItSW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgtZGVmaW5pdGlvbi5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL2xjZHByb2MvbGNkcHJvYy8wMDAyLUluY2x1ZGUtbGltaXRzLmgtZm9yLVBBVEhfTUFYLWRlZmluaXRpb24ucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sY2Rwcm9jL2xjZHByb2MvMDAwMy1GaXgtbm9uLXg4Ni1wbGF0Zm9ybXMtb24tbXVzbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9sY2Rwcm9jL2xjZHByb2MvMDAwMy1GaXgtbm9uLXg4Ni1wbGF0Zm9ybXMtb24tbXVzbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xjZHByb2MvbGNkcHJvYy8wMDAzLUZpeC1ub24teDg2LXBsYXRmb3Jtcy1vbi1tdXNsLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbGNkcHJvYy9sY2Rwcm9jLzAwMDMtRml4LW5vbi14ODYtcGxhdGZvcm1zLW9uLW11c2wucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sY2Rwcm9jL2xjZHByb2NfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL2xjZHByb2MvbGNkcHJvY19naXQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sY2Rwcm9jL2xjZHByb2NfZ2l0LmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbGNkcHJvYy9sY2Rwcm9jX2dpdC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDEtUG9ydC1idWlsZC10by1weXRob24zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDEtUG9ydC1idWlsZC10by1weXRob24zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MjUwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1Qb3J0LWJ1aWxkLXRvLXB5dGhvbjMucGF0Y2gKQEAgLTAsMCArMSw2ODk3IEBACitGcm9tIDMzYTM3M2JhNDFkOTc4YWY2MGMyZjAyMzBiY2JhNmFkMjczNTdlYzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorRGF0ZTogV2VkLCAyOSBKYW4gMjAyMCAxNjoyNToxMSArMDEwMAorU3ViamVjdDogW1BBVENIXSBQb3J0IGJ1aWxkIHRvIHB5dGhvbjMKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworKiBmaXJzdCB0b29sIG9mIGNob2ljZSB3YXMgMnRvMworKiBzb21lIHBhcnRzIHdlcmUgdGFrZW4gZnJvbSBbMV0gYnV0IGR1cmluZyB3b3JrIGl0IHdhcyBmb3VuZCB0aGF0IHRoaXMgcGF0Y2gKKyAgaW50cm9kdWNlcyBpbnRlcmVzdGluZyBlZmZlY3RzIC0gc2VlIGhhc2ggZnVuY3Rpb25zLiBXb3JraW5nIG1vcmUgb24gdGhpcworICBtYWtlcyBtZSBndWVzcyB0aGF0IG9uZSBoYXMgbmV2ZXIgd29ya2VkLi4uCisqIEZldyBwYXJ0cyB3ZXJlIHRha2VuIGZyb20gdXBzdHJlYW0gbWlycm9yIFsyXS4gU2luY2UgdGhleSB1c2Ugc2l4IGZvciBwb3J0aW5nCisgIHRvIHB5dGhvbjMgaXQgYWRkcyB1cyBhIG5ldyBkZXBlbmRlbmN5LgorKiBUbyBnZXQgYSBiZXR0ZXIgb3ZlcnZpZXcgd2hhdCBpcyBnb2luZyBvbiBvciBmYWlsaW5nIHNvbWUgYWRkaXRpb25hbCBtZXNzYWdlcworICB3ZXJlIGFkZGVkLiBUaGUgbW9zdCB2ZXJib3NlIG9uZSBpcyBsZWZ0IGRpc2FibGVkIC0gc2VlCisgIHB5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9jb25maWd1cmUvX19pbml0X18ucHkgLyBMaW5lIDMxMCBvbndhcmRzCisqIG1ham9yIGNoYW5nZXMgdXBzdHJlYW0gb24gYnVpbGQgYXJlIG5vdCB0byBleHBlY3Qgc28gdXBncmFkaW5nIHNob3VsZCBjYXVzZQorICBsaXR0bGUgdHJvdWJsZSBhbmQgY2hhbmdlcyBjYW4gYmUgdHJhY2tlZCBieSBbM10KKyogc29tZSBzb2x1dGlvbnMgYXJlIHdvcmthcm91bmRzL2hhY2tzIHNvIHRoaXMgcGF0Y2ggd2lsbCBub3QgYmUgYWNjZXBldGVkCisgIHVwc3RyZWFtLiBUaGlzIHNob3VsZCBub3QgYmUgYSBwcm9iZWxtZSBmb3IgdXM6IG9uY2UgbW96anMgPj0gNjggd2lsbCBhcnJpdmUKKyAgd2UgaGF2ZSB0byBnbyB0byBydXN0L2NhcmdvIGJhc2VkIGJ1aWxkIGFueXdheS4KKworWzFdIGh0dHBzOi8vY29kZS5mb3hraXQudXMvYWRlbGllL3BhY2thZ2VzL2Jsb2IvZjJiNTc3M2RhMTlhYjM5N2ZiZTY0ZmQzMmRhY2MzODNjZmU0Y2Q3Ny91c2VyL21vempzL3B5dGhvbjMucGF0Y2gKK1syXSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9nZWNrby1kZXYKK1szXSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9nZWNrby1kZXYvdHJlZS9lc3I2MAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXByb3BwcmlhdGUgW1NvbWUgSGFja3NdCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CistLS0KKyBidWlsZC9hdXRvY29uZi9jb25maWcuc3RhdHVzLm00ICAgICAgICAgICAgICAgfCAgIDIgKy0KKyBidWlsZC9tb3ouY29uZmlndXJlL2FuZHJvaWQtbmRrLmNvbmZpZ3VyZSAgICAgfCAgIDQgKy0KKyBidWlsZC9tb3ouY29uZmlndXJlL2NoZWNrcy5jb25maWd1cmUgICAgICAgICAgfCAgIDQgKy0KKyBidWlsZC9tb3ouY29uZmlndXJlL2luaXQuY29uZmlndXJlICAgICAgICAgICAgfCAgMzEgKy0KKyBidWlsZC9tb3ouY29uZmlndXJlL2tleWZpbGVzLmNvbmZpZ3VyZSAgICAgICAgfCAgIDQgKy0KKyBidWlsZC9tb3ouY29uZmlndXJlL29sZC5jb25maWd1cmUgICAgICAgICAgICAgfCAgMzIgKy0KKyBidWlsZC9tb3ouY29uZmlndXJlL3Rvb2xjaGFpbi5jb25maWd1cmUgICAgICAgfCAgMTggKy0KKyBidWlsZC9tb3ouY29uZmlndXJlL3V0aWwuY29uZmlndXJlICAgICAgICAgICAgfCAgIDkgKy0KKyBidWlsZC9tb3ouY29uZmlndXJlL3dpbmRvd3MuY29uZmlndXJlICAgICAgICAgfCAgMTAgKy0KKyBidWlsZC90ZW1wbGF0ZXMubW96YnVpbGQgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KKyBjb25maWcvTW96WmlwRmlsZS5weSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTIgKy0KKyBjb25maWcvZXhwYW5kbGlicy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KKyBjb25maWcvZXhwYW5kbGlic19leGVjLnB5ICAgICAgICAgICAgICAgICAgICAgfCAgMTQgKy0KKyBjb25maWcvZXhwYW5kbGlic19nZW4ucHkgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KKyBjb25maWd1cmUucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDIgKy0KKyBqcy9zcmMvYnVpbGQvbW96LmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KKyBqcy9zcmMvYnVpbHRpbi9lbWJlZGpzLnB5ICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKy0KKyBqcy9zcmMvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KKyBqcy9zcmMvZnJvbnRlbmQvR2VuZXJhdGVSZXNlcnZlZFdvcmRzLnB5ICAgICAgfCAgIDYgKy0KKyBqcy9zcmMvZ2MvR2VuZXJhdGVTdGF0c1BoYXNlcy5weSAgICAgICAgICAgICAgfCAgIDQgKy0KKyBqcy9zcmMvb2xkLWNvbmZpZ3VyZS5pbiAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKworIG1lbW9yeS9idWlsZC9tb3ouYnVpbGQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOCArLQorIG1vemdsdWUvYnVpbGQvbW96LmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICB8ICAyMiArLQorIC4uLi9tb3pidWlsZC9tb3pidWlsZC9hY3Rpb24vY2hlY2tfYmluYXJ5LnB5ICB8ICAgMiArCisgLi4uL21vemJ1aWxkL2FjdGlvbi9wcm9jZXNzX2RlZmluZV9maWxlcy5weSAgIHwgICA0ICstCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2JhY2tlbmQvYmFzZS5weSAgICAgIHwgICA4ICstCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2JhY2tlbmQvY29tbW9uLnB5ICAgIHwgICA4ICstCisgLi4uL21vemJ1aWxkL2JhY2tlbmQvY29uZmlnZW52aXJvbm1lbnQucHkgICAgIHwgIDE0ICstCisgLi4uL21vemJ1aWxkL21vemJ1aWxkL2JhY2tlbmQvZmFzdGVybWFrZS5weSAgIHwgIDEwICstCisgLi4uL21vemJ1aWxkL2JhY2tlbmQvcmVjdXJzaXZlbWFrZS5weSAgICAgICAgIHwgMTgxICsrKy0tLS0KKyBweXRob24vbW96YnVpbGQvbW96YnVpbGQvY29uZmlnX3N0YXR1cy5weSAgICAgfCAgIDcgKy0KKyAuLi4vbW96YnVpbGQvbW96YnVpbGQvY29uZmlndXJlL19faW5pdF9fLnB5ICAgfCAgODMgKysrLQorIC4uLi9tb3pidWlsZC9jb25maWd1cmUvY2hlY2tfZGVidWdfcmFuZ2VzLnB5ICB8ICAgNiArLQorIHB5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9jb25maWd1cmUvb3B0aW9ucy5weSB8ICAyNCArLQorIHB5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9jb25maWd1cmUvdXRpbC5weSAgICB8ICAxMiArLQorIC4uLi9tb3pidWlsZC9tb3pidWlsZC9jb250cm9sbGVyL2J1aWxkaW5nLnB5ICB8ICAxNiArLQorIHB5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9mcm9udGVuZC9jb250ZXh0LnB5ICB8ICA4OSArKy0tCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2Zyb250ZW5kL2RhdGEucHkgICAgIHwgICA4ICstCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2Zyb250ZW5kL2VtaXR0ZXIucHkgIHwgIDUwICstCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2Zyb250ZW5kL3JlYWRlci5weSAgIHwgIDQ5ICstCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2Zyb250ZW5kL3NhbmRib3gucHkgIHwgICAzICstCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2phci5weSAgICAgICAgICAgICAgIHwgIDEyICstCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL21ha2V1dGlsLnB5ICAgICAgICAgIHwgIDI0ICstCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL21vemluZm8ucHkgICAgICAgICAgIHwgICA4ICstCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3ByZXByb2Nlc3Nvci5weSAgICAgIHwgIDI3ICstCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3NoZWxsdXRpbC5weSAgICAgICAgIHwgICA2ICstCisgLi4uL3Rlc3QvYmFja2VuZC90ZXN0X3JlY3Vyc2l2ZW1ha2UucHkgICAgICAgIHwgIDE4ICstCisgLi4uL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL2NvbW1vbi5weSAgICAgICAgIHwgICA4ICstCisgLi4uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL2xpbnQucHkgIHwgICA4ICstCisgLi4uL3Rlc3QvY29uZmlndXJlL3Rlc3RfY2hlY2tzX2NvbmZpZ3VyZS5weSAgIHwgICA4ICstCisgLi4uL3Rlc3QvY29uZmlndXJlL3Rlc3RfY29tcGlsZV9jaGVja3MucHkgICAgIHwgICA0ICstCisgLi4uL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfY29uZmlndXJlLnB5IHwgMjQ0ICsrKysrLS0tLS0KKyAuLi4vbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF9saW50LnB5ICAgICAgfCAgMjQgKy0KKyAuLi4vdGVzdC9jb25maWd1cmUvdGVzdF9tb3pfY29uZmlndXJlLnB5ICAgICAgfCAgMzIgKy0KKyAuLi4vbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF9vcHRpb25zLnB5ICAgfCA0NTAgKysrKysrKysrLS0tLS0tLS0tCisgLi4uL2NvbmZpZ3VyZS90ZXN0X3Rvb2xjaGFpbl9jb25maWd1cmUucHkgICAgIHwgIDIyICstCisgLi4uL3Rlc3QvY29uZmlndXJlL3Rlc3RfdG9vbGNoYWluX2hlbHBlcnMucHkgIHwgIDYyICstLQorIC4uLi9jb25maWd1cmUvdGVzdF90b29sa2l0X21vel9jb25maWd1cmUucHkgICB8ICAgMiArLQorIC4uLi9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X3V0aWwucHkgICAgICB8ICAgOCArLQorIHB5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0aW5nLnB5ICAgICAgICAgICB8ICAxMCArLQorIHB5dGhvbi9tb3pidWlsZC9tb3pidWlsZC91dGlsLnB5ICAgICAgICAgICAgICB8ICA3OSArKy0KKyBweXRob24vbW96YnVpbGQvbW96YnVpbGQvdmlydHVhbGVudi5weSAgICAgICAgfCAgIDYgKy0KKyBweXRob24vbW96YnVpbGQvbW96cGFjay9jaHJvbWUvbWFuaWZlc3QucHkgICAgfCAgIDYgKy0KKyBweXRob24vbW96YnVpbGQvbW96cGFjay9jb3BpZXIucHkgICAgICAgICAgICAgfCAgMTIgKy0KKyBweXRob24vbW96YnVpbGQvbW96cGFjay9maWxlcy5weSAgICAgICAgICAgICAgfCAgMjIgKy0KKyBweXRob24vbW96YnVpbGQvbW96cGFjay9tYW5pZmVzdHMucHkgICAgICAgICAgfCAgMTYgKy0KKyBweXRob24vbW96YnVpbGQvbW96cGFjay9tb3pqYXIucHkgICAgICAgICAgICAgfCAgMzcgKy0KKyAuLi4vbWFuaWZlc3RwYXJzZXIvbWFuaWZlc3RwYXJzZXIvaW5pLnB5ICAgICAgfCAgMTMgKy0KKyAuLi4vbWFuaWZlc3RwYXJzZXIvbWFuaWZlc3RwYXJzZXIucHkgICAgICAgICAgfCAgMjQgKy0KKyB0ZXN0aW5nL21vemJhc2UvbW96aW5mby9tb3ppbmZvL21vemluZm8ucHkgICAgfCAgMjYgKy0KKyAuLi4vbW96cHJvY2Vzcy9tb3pwcm9jZXNzL3Byb2Nlc3NoYW5kbGVyLnB5ICAgfCAgMTAgKy0KKyB0aGlyZF9wYXJ0eS9weXRob24vd2hpY2gvd2hpY2gucHkgICAgICAgICAgICAgfCAgMTggKy0KKyA3MiBmaWxlcyBjaGFuZ2VkLCAxMDgxIGluc2VydGlvbnMoKyksIDk5MyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2J1aWxkL2F1dG9jb25mL2NvbmZpZy5zdGF0dXMubTQgYi9idWlsZC9hdXRvY29uZi9jb25maWcuc3RhdHVzLm00CitpbmRleCBjNzU1NzUzODYuLjU0M2MyZDY4MiAxMDA2NDQKKy0tLSBhL2J1aWxkL2F1dG9jb25mL2NvbmZpZy5zdGF0dXMubTQKKysrKyBiL2J1aWxkL2F1dG9jb25mL2NvbmZpZy5zdGF0dXMubTQKK0BAIC0xMjIsNyArMTIyLDcgQEAgdHJhcCAncm0gLWYgJENPTkZJR19TVEFUVVMgY29uZnRlc3QqOyBleGl0IDEnIDEgMiAxNQorIAorIGRubCBXZSdyZSBnb2luZyB0byBuZWVkIFsgXSBmb3IgcHl0aG9uIHN5bnRheC4KKyBjaGFuZ2VxdW90ZSg8PDwsID4+PilkbmwKKy1lY2hvIGNyZWF0aW5nICRDT05GSUdfU1RBVFVTCisrZWNobyBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyBpbiBgcHdkYAorIAorIGNhdCA+ICRDT05GSUdfU1RBVFVTIDw8RU9GCisgCitkaWZmIC0tZ2l0IGEvYnVpbGQvbW96LmNvbmZpZ3VyZS9hbmRyb2lkLW5kay5jb25maWd1cmUgYi9idWlsZC9tb3ouY29uZmlndXJlL2FuZHJvaWQtbmRrLmNvbmZpZ3VyZQoraW5kZXggMTA2N2I4NjE5Li4zYjU5MmEyMzcgMTAwNjQ0CistLS0gYS9idWlsZC9tb3ouY29uZmlndXJlL2FuZHJvaWQtbmRrLmNvbmZpZ3VyZQorKysrIGIvYnVpbGQvbW96LmNvbmZpZ3VyZS9hbmRyb2lkLW5kay5jb25maWd1cmUKK0BAIC0zMCw3ICszMCw3IEBAIGpzX29wdGlvbignLS13aXRoLWFuZHJvaWQtdmVyc2lvbicsCisgCisgCisgQGRlcGVuZHMoJy0td2l0aC1hbmRyb2lkLXZlcnNpb24nLCBtaW5fYW5kcm9pZF92ZXJzaW9uLCAnLS1oZWxwJykKKy1AaW1wb3J0cyhfZnJvbT0nX19idWlsdGluX18nLCBfaW1wb3J0PSdWYWx1ZUVycm9yJykKKytAaW1wb3J0cyhfZnJvbT0nYnVpbHRpbnMnLCBfaW1wb3J0PSdWYWx1ZUVycm9yJykKKyBkZWYgYW5kcm9pZF92ZXJzaW9uKHZhbHVlLCBtaW5fdmVyc2lvbiwgXyk6CisgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgICMgU29tZW9uZSBoYXMgcGFzc2VkIC0td2l0aG91dC1hbmRyb2lkLXZlcnNpb24uCitAQCAtNjgsNyArNjgsNyBAQCBhZGRfb2xkX2NvbmZpZ3VyZV9hc3NpZ25tZW50KCdhbmRyb2lkX25kaycsIG5kaykKKyAKKyBAZGVwZW5kcyhuZGspCisgQGNoZWNraW5nKCdmb3IgYW5kcm9pZCBuZGsgdmVyc2lvbicpCistQGltcG9ydHMoX2Zyb209J19fYnVpbHRpbl9fJywgX2ltcG9ydD0nb3BlbicpCisrQGltcG9ydHMoX2Zyb209J2J1aWx0aW5zJywgX2ltcG9ydD0nb3BlbicpCisgZGVmIG5ka192ZXJzaW9uKG5kayk6CisgICAgIGlmIG5vdCBuZGs6CisgICAgICAgICAjIEJ1aWxkaW5nICdqcy9zcmMnIGZvciBub24tQW5kcm9pZC4KK2RpZmYgLS1naXQgYS9idWlsZC9tb3ouY29uZmlndXJlL2NoZWNrcy5jb25maWd1cmUgYi9idWlsZC9tb3ouY29uZmlndXJlL2NoZWNrcy5jb25maWd1cmUKK2luZGV4IDUxNjY1MmRhOS4uMTFlMTA5MWM2IDEwMDY0NAorLS0tIGEvYnVpbGQvbW96LmNvbmZpZ3VyZS9jaGVja3MuY29uZmlndXJlCisrKysgYi9idWlsZC9tb3ouY29uZmlndXJlL2NoZWNrcy5jb25maWd1cmUKK0BAIC0xNCw3ICsxNCw3IEBACisgCisgCisgQHRlbXBsYXRlCistQGltcG9ydHMoX2Zyb209J19fYnVpbHRpbl9fJywgX2ltcG9ydD0nRXhjZXB0aW9uJykKKytAaW1wb3J0cyhfZnJvbT0nYnVpbHRpbnMnLCBfaW1wb3J0PSdFeGNlcHRpb24nKQorIGRlZiBfZGVjbGFyZV9leGNlcHRpb25zKCk6CisgICAgIGNsYXNzIEZhdGFsQ2hlY2tFcnJvcihFeGNlcHRpb24pOgorICAgICAgICAgJycnQW4gZXhjZXB0aW9uIHRvIHRocm93IGZyb20gYSBmdW5jdGlvbiBkZWNvcmF0ZWQgd2l0aCBAY2hlY2tpbmcuCitAQCAtNTcsNyArNTcsNyBAQCBkZWYgY2hlY2tpbmcod2hhdCwgY2FsbGJhY2s9Tm9uZSk6CisgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgIHJldCA9IGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgICAgICBleGNlcHQgRmF0YWxDaGVja0Vycm9yIGFzIGU6CistICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGUubWVzc2FnZQorKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBzdHIoZSkKKyAgICAgICAgICAgICAgICAgZGlzcGxheV9yZXQgPSBjYWxsYmFjayhyZXQpIGlmIGNhbGxiYWNrIGVsc2UgcmV0CisgICAgICAgICAgICAgICAgIGlmIGRpc3BsYXlfcmV0IGlzIFRydWU6CisgICAgICAgICAgICAgICAgICAgICBsb2cuaW5mbygneWVzJykKK2RpZmYgLS1naXQgYS9idWlsZC9tb3ouY29uZmlndXJlL2luaXQuY29uZmlndXJlIGIvYnVpbGQvbW96LmNvbmZpZ3VyZS9pbml0LmNvbmZpZ3VyZQoraW5kZXggNjQ4YWMyZGVkLi40ZDc0NTQ3ZDggMTAwNjQ0CistLS0gYS9idWlsZC9tb3ouY29uZmlndXJlL2luaXQuY29uZmlndXJlCisrKysgYi9idWlsZC9tb3ouY29uZmlndXJlL2luaXQuY29uZmlndXJlCitAQCAtMTQsNyArMTQsNyBAQCBvcHRpb24oZW52PSdESVNUJywgbmFyZ3M9MSwgaGVscD0nRElTVCBkaXJlY3RvcnknKQorIAorIAorIEBkZXBlbmRzKCctLWhlbHAnLCAnRElTVCcpCistQGltcG9ydHMoX2Zyb209J19fYnVpbHRpbl9fJywgX2ltcG9ydD0nb3BlbicpCisrQGltcG9ydHMoX2Zyb209J2J1aWx0aW5zJywgX2ltcG9ydD0nb3BlbicpCisgQGltcG9ydHMoX2Zyb209J29zLnBhdGgnLCBfaW1wb3J0PSdleGlzdHMnKQorIGRlZiBjaGVja19idWlsZF9lbnZpcm9ubWVudChoZWxwLCBkaXN0KToKKyAgICAgdG9wb2JqZGlyID0gb3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmFic3BhdGgoJy4nKSkKK0BAIC02NSw3ICs2NSw3IEBAIGRlZiBjaGVja19idWlsZF9lbnZpcm9ubWVudChoZWxwLCBkaXN0KToKKyAgICAgIyBDaGVjayBmb3IgQ1JMRiBsaW5lIGVuZGluZ3MuCisgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4odG9wc3JjZGlyLCAnY29uZmlndXJlLnB5JyksICdyYicpIGFzIGZoOgorICAgICAgICAgZGF0YSA9IGZoLnJlYWQoKQorLSAgICAgICAgaWYgJ1xyJyBpbiBkYXRhOgorKyAgICAgICAgaWYgYidccicgaW4gZGF0YToKKyAgICAgICAgICAgICBkaWUoJ1xuICoqKlxuJworICAgICAgICAgICAgICAgICAnICogVGhlIHNvdXJjZSB0cmVlIGFwcGVhcnMgdG8gaGF2ZSBXaW5kb3dzLXN0eWxlIGxpbmUgZW5kaW5ncy5cbicKKyAgICAgICAgICAgICAgICAgJyAqXG4nCitAQCAtMjY5LDcgKzI2OSw3IEBAIGRlZiBlYXJseV9vcHRpb25zKCk6CisgICAgIGRlZiBlYXJseV9vcHRpb25zKCk6CisgICAgICAgICByZXR1cm4gc2V0KAorICAgICAgICAgICAgIG9wdGlvbi5lbnYKKy0gICAgICAgICAgICBmb3Igb3B0aW9uIGluIF9fc2FuZGJveF9fLl9vcHRpb25zLml0ZXJ2YWx1ZXMoKQorKyAgICAgICAgICAgIGZvciBvcHRpb24gaW4gX19zYW5kYm94X18uX29wdGlvbnMudmFsdWVzKCkKKyAgICAgICAgICAgICBpZiBvcHRpb24uZW52CisgICAgICAgICApCisgICAgIHJldHVybiBlYXJseV9vcHRpb25zCitAQCAtMzA3LDE1ICszMDcsMTUgQEAgZGVmIG1vemNvbmZpZ19vcHRpb25zKG1vemNvbmZpZywgYXV0b21hdGlvbiwgaGVscCk6CisgICAgICAgICAgICAgICAgIGxvZy5pbmZvKCcgICVzJyAlIGFyZykKKyAgICAgICAgICAgICAgICAgaGVscGVyLmFkZChhcmcsIG9yaWdpbj0nbW96Y29uZmlnJywgYXJncz1oZWxwZXIuX2FyZ3MpCisgCistICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBtb3pjb25maWdbJ2VudiddWydhZGRlZCddLml0ZXJpdGVtcygpOgorKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gbW96Y29uZmlnWydlbnYnXVsnYWRkZWQnXS5pdGVtcygpOgorICAgICAgICAgICAgIGFkZChrZXksIHZhbHVlKQorICAgICAgICAgICAgIG9zLmVudmlyb25ba2V5XSA9IHZhbHVlCistICAgICAgICBmb3Iga2V5LCAoXywgdmFsdWUpIGluIG1vemNvbmZpZ1snZW52J11bJ21vZGlmaWVkJ10uaXRlcml0ZW1zKCk6CisrICAgICAgICBmb3Iga2V5LCAoXywgdmFsdWUpIGluIG1vemNvbmZpZ1snZW52J11bJ21vZGlmaWVkJ10uaXRlbXMoKToKKyAgICAgICAgICAgICBhZGQoa2V5LCB2YWx1ZSkKKyAgICAgICAgICAgICBvcy5lbnZpcm9uW2tleV0gPSB2YWx1ZQorLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gbW96Y29uZmlnWyd2YXJzJ11bJ2FkZGVkJ10uaXRlcml0ZW1zKCk6CisrICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBtb3pjb25maWdbJ3ZhcnMnXVsnYWRkZWQnXS5pdGVtcygpOgorICAgICAgICAgICAgIGFkZChrZXksIHZhbHVlKQorLSAgICAgICAgZm9yIGtleSwgKF8sIHZhbHVlKSBpbiBtb3pjb25maWdbJ3ZhcnMnXVsnbW9kaWZpZWQnXS5pdGVyaXRlbXMoKToKKysgICAgICAgIGZvciBrZXksIChfLCB2YWx1ZSkgaW4gbW96Y29uZmlnWyd2YXJzJ11bJ21vZGlmaWVkJ10uaXRlbXMoKToKKyAgICAgICAgICAgICBhZGQoa2V5LCB2YWx1ZSkKKyAKKyAKK0BAIC0zNTMsNyArMzUzLDcgQEAgb3B0aW9uKGVudj0nUFlUSE9OMycsIG5hcmdzPTEsIGhlbHA9J1B5dGhvbiAzIGludGVycHJldGVyICgzLjUgb3IgbGF0ZXIpJykKKyBAZGVwZW5kcygnUFlUSE9OMycpCisgQGNoZWNraW5nKCdmb3IgUHl0aG9uIDMnLAorICAgICAgICAgICBjYWxsYmFjaz1sYW1iZGEgeDogJyVzICglcyknICUgKHgucGF0aCwgeC5zdHJfdmVyc2lvbikgaWYgeCBlbHNlICdubycpCistQGltcG9ydHMoX2Zyb209J19fYnVpbHRpbl9fJywgX2ltcG9ydD0nRXhjZXB0aW9uJykKKytAaW1wb3J0cyhfZnJvbT0nYnVpbHRpbnMnLCBfaW1wb3J0PSdFeGNlcHRpb24nKQorIEBpbXBvcnRzKF9mcm9tPSdtb3pidWlsZC5weXRob251dGlsJywgX2ltcG9ydD0nZmluZF9weXRob24zX2V4ZWN1dGFibGUnKQorIEBpbXBvcnRzKF9mcm9tPSdtb3pidWlsZC5weXRob251dGlsJywgX2ltcG9ydD0ncHl0aG9uX2V4ZWN1dGFibGVfdmVyc2lvbicpCisgZGVmIHB5dGhvbjMoZW52X3B5dGhvbik6CitAQCAtMzc3LDkgKzM3Nyw2IEBAIGRlZiBweXRob24zKGVudl9weXRob24pOgorICAgICAgICAgaWYgbm90IHB5dGhvbjoKKyAgICAgICAgICAgICByZXR1cm4gTm9uZQorIAorLSAgICAgICAgIyBUaGUgQVBJIHJldHVybnMgYSBieXRlcyB3aGVyZWFzIGV2ZXJ5dGhpbmcgaW4gY29uZmlndXJlIGlzIHVuaWNvZGUuCistICAgICAgICBweXRob24gPSBweXRob24uZGVjb2RlKCd1dGYtOCcpCistCisgICAgIHJldHVybiBuYW1lc3BhY2UoCisgICAgICAgICBwYXRoPXB5dGhvbiwKKyAgICAgICAgIHZlcnNpb249dmVyc2lvbiwKK0BAIC00ODEsNiArNDc4LDggQEAgZGVmIGhnX2NvbmZpZyhidWlsZF9lbnYsIGhnLCB2ZXJzaW9uKToKKyBAaW1wb3J0cygncmUnKQorIGRlZiBnaXRfdmVyc2lvbihnaXQpOgorICAgICBvdXQgPSBjaGVja19jbWRfb3V0cHV0KGdpdCwgJy0tdmVyc2lvbicpLnJzdHJpcCgpCisrICAgIGlmIGlzaW5zdGFuY2Uob3V0LCBieXRlcyk6CisrICAgICAgICBvdXQgPSBvdXQuZGVjb2RlKCd1dGYtOCcpCisgCisgICAgIG1hdGNoID0gcmUuc2VhcmNoKCdnaXQgdmVyc2lvbiAoLiopJCcsIG91dCkKKyAKK0BAIC01NTEsOCArNTUwLDggQEAgb3B0aW9uKCctLXRhcmdldCcsIG5hcmdzPTEsCisgQGltcG9ydHMoX2Zyb209J21vemJ1aWxkLmNvbmZpZ3VyZS5jb25zdGFudHMnLCBfaW1wb3J0PSdFbmRpYW5uZXNzJykKKyBAaW1wb3J0cyhfZnJvbT0nbW96YnVpbGQuY29uZmlndXJlLmNvbnN0YW50cycsIF9pbXBvcnQ9J0tlcm5lbCcpCisgQGltcG9ydHMoX2Zyb209J21vemJ1aWxkLmNvbmZpZ3VyZS5jb25zdGFudHMnLCBfaW1wb3J0PSdPUycpCistQGltcG9ydHMoX2Zyb209J19fYnVpbHRpbl9fJywgX2ltcG9ydD0nS2V5RXJyb3InKQorLUBpbXBvcnRzKF9mcm9tPSdfX2J1aWx0aW5fXycsIF9pbXBvcnQ9J1ZhbHVlRXJyb3InKQorK0BpbXBvcnRzKF9mcm9tPSdidWlsdGlucycsIF9pbXBvcnQ9J0tleUVycm9yJykKKytAaW1wb3J0cyhfZnJvbT0nYnVpbHRpbnMnLCBfaW1wb3J0PSdWYWx1ZUVycm9yJykKKyBkZWYgc3BsaXRfdHJpcGxldCh0cmlwbGV0LCBhbGxvd191bmtub3duPUZhbHNlKToKKyAgICAgIyBUaGUgc3RhbmRhcmQgdHJpcGxldCBpcyBkZWZpbmVkIGFzCisgICAgICMgICBDUFVfVFlQRS1NQU5VRkFDVFVSRVItT1BFUkFUSU5HX1NZU1RFTQorQEAgLTU2Miw2ICs1NjEsOCBAQCBkZWYgc3BsaXRfdHJpcGxldCh0cmlwbGV0LCBhbGxvd191bmtub3duPUZhbHNlKToKKyAgICAgIyBBZGRpdGlvbmFsbHksIHNvbWUgbWF5IG9taXQgInVua25vd24iIHdoZW4gdGhlIG1hbnVmYWN0dXJlcgorICAgICAjIGlzIG5vdCBzcGVjaWZpZWQgYW5kIGVtaXQKKyAgICAgIyAgIENQVV9UWVBFLU9QRVJBVElOR19TWVNURU0KKysgICAgaWYgaXNpbnN0YW5jZSh0cmlwbGV0LCBieXRlcyk6CisrICAgICAgICB0cmlwbGV0ID0gdHJpcGxldC5kZWNvZGUoJ3V0Zi04JykKKyAgICAgcGFydHMgPSB0cmlwbGV0LnNwbGl0KCctJywgMikKKyAgICAgaWYgbGVuKHBhcnRzKSA9PSAzOgorICAgICAgICAgY3B1LCBfLCBvcyA9IHBhcnRzCitAQCAtOTg3LDcgKzk4OCw3IEBAIGFkZF9vbGRfY29uZmlndXJlX2Fzc2lnbm1lbnQoJ01PWl9CVUlMRF9BUFAnLCBidWlsZF9wcm9qZWN0KQorICMgLSBvdGhlcndpc2UsIGlmIHdlIGhhdmUgImEiIGluIEdSRV9NSUxFU1RPTkUsIHdlJ3JlIGJ1aWxkaW5nIE5pZ2h0bHkgb3IgQXVyb3JhCisgIyAtIG90aGVyd2lzZSwgd2UncmUgYnVpbGRpbmcgUmVsZWFzZS9CZXRhIChkZWZpbmUgUkVMRUFTRV9PUl9CRVRBKQorIEBkZXBlbmRzKGNoZWNrX2J1aWxkX2Vudmlyb25tZW50LCAnLS1oZWxwJykKKy1AaW1wb3J0cyhfZnJvbT0nX19idWlsdGluX18nLCBfaW1wb3J0PSdvcGVuJykKKytAaW1wb3J0cyhfZnJvbT0nYnVpbHRpbnMnLCBfaW1wb3J0PSdvcGVuJykKKyBAaW1wb3J0cygncmUnKQorIGRlZiBtaWxlc3RvbmUoYnVpbGRfZW52LCBfKToKKyAgICAgbWlsZXN0b25lX3BhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRfZW52LnRvcHNyY2RpciwKK0BAIC0xMTA1LDcgKzExMDYsNyBAQCBkZWYgZW5hYmxlZF9pbl9uaWdodGx5KG1pbGVzdG9uZSwgXyk6CisgZGVmIGFsbF9jb25maWd1cmVfb3B0aW9ucygpOgorICAgICByZXN1bHQgPSBbXQorICAgICBwcmV2aW91cyA9IE5vbmUKKy0gICAgZm9yIG9wdGlvbiBpbiBfX3NhbmRib3hfXy5fb3B0aW9ucy5pdGVydmFsdWVzKCk6CisrICAgIGZvciBvcHRpb24gaW4gX19zYW5kYm94X18uX29wdGlvbnMudmFsdWVzKCk6CisgICAgICAgICAjIF9fc2FuZGJveF9fLl9vcHRpb25zIGNvbnRhaW5zIGl0ZW1zIGZvciBib3RoIG9wdGlvbi5uYW1lIGFuZAorICAgICAgICAgIyBvcHRpb24uZW52LiBCdXQgaXQncyBhbHNvIGFuIE9yZGVyZWREaWN0LCBtZWFuaW5nIGJvdGggYXJlCisgICAgICAgICAjIGNvbnNlY3V0aXZlLgorZGlmZiAtLWdpdCBhL2J1aWxkL21vei5jb25maWd1cmUva2V5ZmlsZXMuY29uZmlndXJlIGIvYnVpbGQvbW96LmNvbmZpZ3VyZS9rZXlmaWxlcy5jb25maWd1cmUKK2luZGV4IDVkNTFjY2NlYS4uMTRhMzVhM2M2IDEwMDY0NAorLS0tIGEvYnVpbGQvbW96LmNvbmZpZ3VyZS9rZXlmaWxlcy5jb25maWd1cmUKKysrKyBiL2J1aWxkL21vei5jb25maWd1cmUva2V5ZmlsZXMuY29uZmlndXJlCitAQCAtMTYsOCArMTYsOCBAQCBkZWYga2V5ZmlsZShkZXNjLCBkZWZhdWx0PU5vbmUsIGhlbHA9Tm9uZSwgY2FsbGJhY2s9bGFtYmRhIHg6IHgpOgorIAorICAgICBAZGVwZW5kcygnLS13aXRoLSVzLWtleWZpbGUnICUgbmFtZSkKKyAgICAgQGNoZWNraW5nKCdmb3IgdGhlICVzIGtleScgJSBkZXNjLCBsYW1iZGEgeDogeCBhbmQgeCBpcyBub3Qgbm9fa2V5KQorLSAgICBAaW1wb3J0cyhfZnJvbT0nX19idWlsdGluX18nLCBfaW1wb3J0PSdvcGVuJykKKy0gICAgQGltcG9ydHMoX2Zyb209J19fYnVpbHRpbl9fJywgX2ltcG9ydD0nSU9FcnJvcicpCisrICAgIEBpbXBvcnRzKF9mcm9tPSdidWlsdGlucycsIF9pbXBvcnQ9J29wZW4nKQorKyAgICBAaW1wb3J0cyhfZnJvbT0nYnVpbHRpbnMnLCBfaW1wb3J0PSdJT0Vycm9yJykKKyAgICAgZGVmIGtleWZpbGUodmFsdWUpOgorICAgICAgICAgaWYgdmFsdWU6CisgICAgICAgICAgICAgdHJ5OgorZGlmZiAtLWdpdCBhL2J1aWxkL21vei5jb25maWd1cmUvb2xkLmNvbmZpZ3VyZSBiL2J1aWxkL21vei5jb25maWd1cmUvb2xkLmNvbmZpZ3VyZQoraW5kZXggODFjMTBiOTFmLi4yOWI0OTZiYWUgMTAwNjQ0CistLS0gYS9idWlsZC9tb3ouY29uZmlndXJlL29sZC5jb25maWd1cmUKKysrKyBiL2J1aWxkL21vei5jb25maWd1cmUvb2xkLmNvbmZpZ3VyZQorQEAgLTY0LDkgKzY0LDkgQEAgc2V0X2NvbmZpZygnQVVUT0NPTkYnLCBhdXRvY29uZikKKyAKKyBAZGVwZW5kcygnT0xEX0NPTkZJR1VSRScsIG1vemNvbmZpZywgYXV0b2NvbmYsIGNoZWNrX2J1aWxkX2Vudmlyb25tZW50LCBzaGVsbCwKKyAgICAgICAgICBvbGRfY29uZmlndXJlX2Fzc2lnbm1lbnRzLCBidWlsZF9wcm9qZWN0KQorLUBpbXBvcnRzKF9mcm9tPSdfX2J1aWx0aW5fXycsIF9pbXBvcnQ9J29wZW4nKQorLUBpbXBvcnRzKF9mcm9tPSdfX2J1aWx0aW5fXycsIF9pbXBvcnQ9J3ByaW50JykKKy1AaW1wb3J0cyhfZnJvbT0nX19idWlsdGluX18nLCBfaW1wb3J0PSdzb3J0ZWQnKQorK0BpbXBvcnRzKF9mcm9tPSdidWlsdGlucycsIF9pbXBvcnQ9J29wZW4nKQorK0BpbXBvcnRzKF9mcm9tPSdidWlsdGlucycsIF9pbXBvcnQ9J3ByaW50JykKKytAaW1wb3J0cyhfZnJvbT0nYnVpbHRpbnMnLCBfaW1wb3J0PSdzb3J0ZWQnKQorIEBpbXBvcnRzKCdnbG9iJykKKyBAaW1wb3J0cygnaXRlcnRvb2xzJykKKyBAaW1wb3J0cygnc3VicHJvY2VzcycpCitAQCAtMTEzLDcgKzExMyw3IEBAIGRlZiBwcmVwYXJlX2NvbmZpZ3VyZShvbGRfY29uZmlndXJlLCBtb3pjb25maWcsIGF1dG9jb25mLCBidWlsZF9lbnYsIHNoZWxsLAorIAorICAgICAgICAgIyBNYWtlIG9sZC1jb25maWd1cmUgYXBwZW5kIHRvIGNvbmZpZy5sb2csIHdoZXJlIHdlIHB1dCBvdXIgb3duIGxvZy4KKyAgICAgICAgICMgVGhpcyBjb3VsZCBiZSBkb25lIHdpdGggYSBtNCBtYWNybywgYnV0IGl0J3Mgd2F5IGVhc2llciB0aGlzIHdheQorLSAgICAgICAgc2NyaXB0ID0gc2NyaXB0LnJlcGxhY2UoJz4uL2NvbmZpZy5sb2cnLCAnPj4uL2NvbmZpZy5sb2cnKQorKyAgICAgICAgc2NyaXB0ID0gc2NyaXB0LnJlcGxhY2UoYic+Li9jb25maWcubG9nJywgYic+Pi4vY29uZmlnLmxvZycpCisgCisgICAgICAgICB3aXRoIG9wZW4ob2xkX2NvbmZpZ3VyZSwgJ3diJykgYXMgZmg6CisgICAgICAgICAgICAgZmgud3JpdGUoc2NyaXB0KQorQEAgLTI4Miw4ICsyODIsOCBAQCBkZWYgb2xkX2NvbmZpZ3VyZV9vcHRpb25zKCpvcHRpb25zKToKKyAgICAgJy0teC1pbmNsdWRlcycsCisgICAgICctLXgtbGlicmFyaWVzJywKKyApCistQGltcG9ydHMoX2Zyb209J19fYnVpbHRpbl9fJywgX2ltcG9ydD0nY29tcGlsZScpCistQGltcG9ydHMoX2Zyb209J19fYnVpbHRpbl9fJywgX2ltcG9ydD0nb3BlbicpCisrQGltcG9ydHMoX2Zyb209J2J1aWx0aW5zJywgX2ltcG9ydD0nY29tcGlsZScpCisrQGltcG9ydHMoX2Zyb209J2J1aWx0aW5zJywgX2ltcG9ydD0nb3BlbicpCisgQGltcG9ydHMoJ2xvZ2dpbmcnKQorIEBpbXBvcnRzKCdvcycpCisgQGltcG9ydHMoJ3N1YnByb2Nlc3MnKQorQEAgLTMyNiw3ICszMjYsNyBAQCBkZWYgb2xkX2NvbmZpZ3VyZShwcmVwYXJlX2NvbmZpZ3VyZSwgZXh0cmFfb2xkX2NvbmZpZ3VyZV9hcmdzLCBhbGxfb3B0aW9ucywKKyAgICAgbG9nLmRlYnVnKCdSdW5uaW5nICVzJywgcXVvdGUoKmNtZCkpCisgICAgIGlmIGV4dHJhX2VudjoKKyAgICAgICAgIGxvZy5kZWJ1Zygnd2l0aCBleHRyYSBlbnZpcm9ubWVudDogJXMnLAorLSAgICAgICAgICAgICAgICAgICcgJy5qb2luKCclcz0lcycgJSBwYWlyIGZvciBwYWlyIGluIGV4dHJhX2Vudi5pdGVyaXRlbXMoKSkpCisrICAgICAgICAgICAgICAgICAgJyAnLmpvaW4oJyVzPSVzJyAlIHBhaXIgZm9yIHBhaXIgaW4gZXh0cmFfZW52Lml0ZW1zKCkpKQorIAorICAgICAjIE91ciBsb2dnaW5nIGdvZXMgdG8gY29uZmlnLmxvZywgdGhlIHNhbWUgZmlsZSBvbGQuY29uZmlndXJlIHVzZXMuCisgICAgICMgV2UgY2FuJ3Qgc2hhcmUgdGhlIGhhbmRsZSBvbiB0aGUgZmlsZSwgc28gY2xvc2UgaXQuIFdlIGFzc3VtZSBub3RoaW5nCitAQCAtMzU5LDcgKzM1OSw3IEBAIGRlZiBvbGRfY29uZmlndXJlKHByZXBhcmVfY29uZmlndXJlLCBleHRyYV9vbGRfY29uZmlndXJlX2FyZ3MsIGFsbF9vcHRpb25zLAorICAgICAgICAgIyBFdmVyeSB2YXJpYXRpb24gb2YgdGhlIGV4ZWMoKSBmdW5jdGlvbiBJIHRyaWVkIGxlZCB0bzoKKyAgICAgICAgICMgU3ludGF4RXJyb3I6IHVucXVhbGlmaWVkIGV4ZWMgaXMgbm90IGFsbG93ZWQgaW4gZnVuY3Rpb24gJ21haW4nIGl0CisgICAgICAgICAjIGNvbnRhaW5zIGEgbmVzdGVkIGZ1bmN0aW9uIHdpdGggZnJlZSB2YXJpYWJsZXMKKy0gICAgICAgIGV4ZWMgY29kZSBpbiByYXdfY29uZmlnICMgbm9xYQorKyAgICAgICAgZXhlYyhjb2RlLCByYXdfY29uZmlnKSAjIG5vcWEKKyAKKyAgICAgIyBFbnN1cmUgYWxsIHRoZSBmbGFncyBrbm93biB0byBvbGQtY29uZmlndXJlIGFwcGVhciBpbiB0aGUKKyAgICAgIyBAb2xkX2NvbmZpZ3VyZV9vcHRpb25zIGFib3ZlLgorQEAgLTM5MywxNiArMzkzLDI0IEBAIGRlZiBzZXRfb2xkX2NvbmZpZ3VyZV9kZWZpbmUobmFtZSwgdmFsdWUpOgorIEBkZXBlbmRzKG9sZF9jb25maWd1cmUpCisgQGltcG9ydHMoJ3R5cGVzJykKKyBkZWYgcG9zdF9vbGRfY29uZmlndXJlKHJhd19jb25maWcpOgorKyAgICBsb2cuaW5mbygncG9zdF9vbGRfY29uZmlndXJlIHN0YXJ0ZWQnKQorKworICAgICBmb3IgaywgdiBpbiByYXdfY29uZmlnWydzdWJzdHMnXToKKyAgICAgICAgIHNldF9vbGRfY29uZmlndXJlX2NvbmZpZygKKy0gICAgICAgICAgICBrWzE6LTFdLCB2WzE6LTFdIGlmIGlzaW5zdGFuY2UodiwgdHlwZXMuU3RyaW5nVHlwZXMpIGVsc2UgdikKKysgICAgICAgICAgICBrWzE6LTFdLCB2WzE6LTFdIGlmIGlzaW5zdGFuY2Uodiwgc3RyKSBlbHNlIHYpCisrCisrICAgIGxvZy5pbmZvKCdwb3N0X29sZF9jb25maWd1cmUgMSBmaW5pc2hlZCcpCisgCistICAgIGZvciBrLCB2IGluIGRpY3QocmF3X2NvbmZpZ1snZGVmaW5lcyddKS5pdGVyaXRlbXMoKToKKysgICAgZm9yIGssIHYgaW4gZGljdChyYXdfY29uZmlnWydkZWZpbmVzJ10pLml0ZW1zKCk6CisgICAgICAgICBzZXRfb2xkX2NvbmZpZ3VyZV9kZWZpbmUoa1sxOi0xXSwgdlsxOi0xXSkKKyAKKysgICAgbG9nLmluZm8oJ3Bvc3Rfb2xkX2NvbmZpZ3VyZSAyIGZpbmlzaGVkJykKKysKKyAgICAgc2V0X29sZF9jb25maWd1cmVfY29uZmlnKCdub25fZ2xvYmFsX2RlZmluZXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3X2NvbmZpZ1snbm9uX2dsb2JhbF9kZWZpbmVzJ10pCisgCisrICAgIGxvZy5pbmZvKCdwb3N0X29sZF9jb25maWd1cmUgMyBmaW5pc2hlZCcpCisrCisgCisgIyBBc3N1bWluZyBubyBvdGhlciBvcHRpb24gaXMgZGVjbGFyZWQgYWZ0ZXIgdGhpcyBmdW5jdGlvbiwgaGFuZGxlIHRoZQorICMgZW52IG9wdGlvbnMgdGhhdCB3ZXJlIGluamVjdGVkIGJ5IG1vemNvbmZpZ19vcHRpb25zIGJ5IGNyZWF0aW5nIGR1bW15CitAQCAtNDE0LDYgKzQyMiw3IEBAIGRlZiBwb3N0X29sZF9jb25maWd1cmUocmF3X2NvbmZpZyk6CisgQGltcG9ydHMoJ19fc2FuZGJveF9fJykKKyBAaW1wb3J0cyhfZnJvbT0nbW96YnVpbGQuY29uZmlndXJlLm9wdGlvbnMnLCBfaW1wb3J0PSdPcHRpb24nKQorIGRlZiByZW1haW5pbmdfbW96Y29uZmlnX29wdGlvbnMoXyk6CisrICAgIGxvZy5pbmZvKCdyZW1haW5pbmdfbW96Y29uZmlnX29wdGlvbnMgc3RhcnRlZCcpCisgICAgIGhlbHBlciA9IF9fc2FuZGJveF9fLl9oZWxwZXIKKyAgICAgZm9yIGFyZyBpbiBoZWxwZXI6CisgICAgICAgICBpZiBoZWxwZXIuX29yaWdpbnNbYXJnXSAhPSAnbW96Y29uZmlnJzoKK0BAIC00MjIsNSArNDMxLDYgQEAgZGVmIHJlbWFpbmluZ19tb3pjb25maWdfb3B0aW9ucyhfKToKKyAgICAgICAgIGlmIG5hbWUuaXN1cHBlcigpIGFuZCBuYW1lIG5vdCBpbiBfX3NhbmRib3hfXy5fb3B0aW9uczoKKyAgICAgICAgICAgICBvcHRpb24gPSBPcHRpb24oZW52PW5hbWUsIG5hcmdzPScqJywgaGVscD1uYW1lKQorICAgICAgICAgICAgIGhlbHBlci5oYW5kbGUob3B0aW9uKQorKyAgICBsb2cuaW5mbygncmVtYWluaW5nX21vemNvbmZpZ19vcHRpb25zIGZpbmlzaGVkJykKKyAKKyAjIFBsZWFzZSBkbyBub3QgYWRkIGFueXRoaW5nIGFmdGVyIHJlbWFpbmluZ19tb3pjb25maWdfb3B0aW9ucygpCitkaWZmIC0tZ2l0IGEvYnVpbGQvbW96LmNvbmZpZ3VyZS90b29sY2hhaW4uY29uZmlndXJlIGIvYnVpbGQvbW96LmNvbmZpZ3VyZS90b29sY2hhaW4uY29uZmlndXJlCitpbmRleCBmYzY0MGM3NWUuLmM1NTA4ZGZiNyAxMDA3NTUKKy0tLSBhL2J1aWxkL21vei5jb25maWd1cmUvdG9vbGNoYWluLmNvbmZpZ3VyZQorKysrIGIvYnVpbGQvbW96LmNvbmZpZ3VyZS90b29sY2hhaW4uY29uZmlndXJlCitAQCAtMzkxLDcgKzM5MSw3IEBAIGRlZiBnZXRfY29tcGlsZXJfaW5mbyhjb21waWxlciwgbGFuZ3VhZ2UpOgorICAgICAgICAgKCdDUFUnLCBDUFVfcHJlcHJvY2Vzc29yX2NoZWNrcyksCisgICAgICAgICAoJ0tFUk5FTCcsIGtlcm5lbF9wcmVwcm9jZXNzb3JfY2hlY2tzKSwKKyAgICAgKToKKy0gICAgICAgIGZvciBuLCAodmFsdWUsIGNvbmRpdGlvbikgaW4gZW51bWVyYXRlKHByZXByb2Nlc3Nvcl9jaGVja3MuaXRlcml0ZW1zKCkpOgorKyAgICAgICAgZm9yIG4sICh2YWx1ZSwgY29uZGl0aW9uKSBpbiBlbnVtZXJhdGUocHJlcHJvY2Vzc29yX2NoZWNrcy5pdGVtcygpKToKKyAgICAgICAgICAgICBjaGVjayArPSBkZWRlbnQoJycnXAorICAgICAgICAgICAgICAgICAjJShpZilzICUoY29uZGl0aW9uKXMKKyAgICAgICAgICAgICAgICAgJSUlKG5hbWUpcyAiJSh2YWx1ZSlzIgorQEAgLTQyNSw5ICs0MjUsOSBAQCBkZWYgZ2V0X2NvbXBpbGVyX2luZm8oY29tcGlsZXIsIGxhbmd1YWdlKToKKyAgICAgZGF0YSA9IHt9CisgICAgIGZvciBsaW5lIGluIHJlc3VsdC5zcGxpdGxpbmVzKCk6CisgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoYiclJyk6CistICAgICAgICAgICAgaywgXywgdiA9IGxpbmUucGFydGl0aW9uKCcgJykKKy0gICAgICAgICAgICBrID0gay5sc3RyaXAoJyUnKQorLSAgICAgICAgICAgIGRhdGFba10gPSB2LnJlcGxhY2UoJyAnLCAnJykubHN0cmlwKCciJykucnN0cmlwKCciJykKKysgICAgICAgICAgICBrLCBfLCB2ID0gbGluZS5wYXJ0aXRpb24oYicgJykKKysgICAgICAgICAgICBrID0gay5sc3RyaXAoYiclJykuZGVjb2RlKCd1dGYtOCcpCisrICAgICAgICAgICAgZGF0YVtrXSA9IHYucmVwbGFjZShiJyAnLCBiJycpLmxzdHJpcChiJyInKS5yc3RyaXAoYiciJykuZGVjb2RlKCd1dGYtOCcpCisgICAgICAgICAgICAgbG9nLmRlYnVnKCclcyA9ICVzJywgaywgZGF0YVtrXSkKKyAKKyAgICAgdHJ5OgorQEAgLTU1MSw3ICs1NTEsNyBAQCBkZWYgY2hlY2tfY29tcGlsZXIoY29tcGlsZXIsIGxhbmd1YWdlLCB0YXJnZXQpOgorICAgICApCisgCisgCistQGltcG9ydHMoX2Zyb209J19fYnVpbHRpbl9fJywgX2ltcG9ydD0nb3BlbicpCisrQGltcG9ydHMoX2Zyb209J2J1aWx0aW5zJywgX2ltcG9ydD0nb3BlbicpCisgQGltcG9ydHMoJ2pzb24nKQorIEBpbXBvcnRzKCdzdWJwcm9jZXNzJykKKyBAaW1wb3J0cygnc3lzJykKK0BAIC02MDYsNyArNjA2LDcgQEAgZGVmIHZzX21ham9yX3ZlcnNpb24odmFsdWUpOgorIAorIAorIEBkZXBlbmRzKGhvc3QsIHRhcmdldCwgdnNfbWFqb3JfdmVyc2lvbiwgY2hlY2tfYnVpbGRfZW52aXJvbm1lbnQsICctLXdpdGgtdmlzdWFsLXN0dWRpby12ZXJzaW9uJykKKy1AaW1wb3J0cyhfZnJvbT0nX19idWlsdGluX18nLCBfaW1wb3J0PSdzb3J0ZWQnKQorK0BpbXBvcnRzKF9mcm9tPSdidWlsdGlucycsIF9pbXBvcnQ9J3NvcnRlZCcpCisgQGltcG9ydHMoX2Zyb209J29wZXJhdG9yJywgX2ltcG9ydD0naXRlbWdldHRlcicpCisgQGltcG9ydHMoJ3BsYXRmb3JtJykKKyBkZWYgdmNfY29tcGlsZXJfcGF0aChob3N0LCB0YXJnZXQsIHZzX21ham9yX3ZlcnNpb24sIGVudiwgdnNfcmVsZWFzZV9uYW1lKToKK0BAIC04MDcsNyArODA3LDcgQEAgZGVmIGNvbXBpbGVyKGxhbmd1YWdlLCBob3N0X29yX3RhcmdldCwgY19jb21waWxlcj1Ob25lLCBvdGhlcl9jb21waWxlcj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Lm9zICE9ICdBbmRyb2lkJzoKKyAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWVzcGFjZSgqKnsKKyAgICAgICAgICAgICAgICAgICAgIGs6IFtdIGlmIGsgPT0gJ2ZsYWdzJyBlbHNlIHYKKy0gICAgICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIG90aGVyX2NvbXBpbGVyLl9fZGljdF9fLml0ZXJpdGVtcygpCisrICAgICAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBvdGhlcl9jb21waWxlci5fX2RpY3RfXy5pdGVtcygpCisgICAgICAgICAgICAgICAgIH0pCisgCisgICAgICMgTm9ybWFsbHksIHdlJ2QgdXNlIGB2YXJgIGluc3RlYWQgb2YgYF92YXJgLCBidXQgdGhlIGludGVyYWN0aW9uIHdpdGgKK0BAIC0xMjM4LDcgKzEyMzgsNyBAQCBzZXRfY29uZmlnKCdWSVNJQklMSVRZX0ZMQUdTJywgdmlzaWJpbGl0eV9mbGFncykKKyAKKyBAZGVwZW5kcyhjX2NvbXBpbGVyKQorIEBpbXBvcnRzKCdtdWx0aXByb2Nlc3NpbmcnKQorLUBpbXBvcnRzKF9mcm9tPSdfX2J1aWx0aW5fXycsIF9pbXBvcnQ9J21pbicpCisrQGltcG9ydHMoX2Zyb209J2J1aWx0aW5zJywgX2ltcG9ydD0nbWluJykKKyBkZWYgcGdvX2ZsYWdzKGNvbXBpbGVyKToKKyAgICAgaWYgY29tcGlsZXIudHlwZSBpbiAoJ2djYycsICdjbGFuZycpOgorICAgICAgICAgcmV0dXJuIG5hbWVzcGFjZSgKK0BAIC0xNTE3LDYgKzE1MTcsOCBAQCBkZWYgZW5hYmxlX2dudV9saW5rZXIoZW5hYmxlX2dvbGRfb3B0aW9uLCBjX2NvbXBpbGVyLCBkZXZlbG9wZXJfb3B0aW9ucywgYnVpbGRfZQorICAgICAgICAgZ29sZCA9IGNoZWNrX2NtZF9vdXRwdXQoKmRldGVjdGlvbl9jbWQpLnN0cmlwKCkKKyAgICAgICAgIGlmIG5vdCBnb2xkOgorICAgICAgICAgICAgIHJldHVybgorKyAgICAgICAgaWYgaXNpbnN0YW5jZShnb2xkLCBieXRlcyk6CisrICAgICAgICAgICAgZ29sZCA9IGdvbGQuZGVjb2RlKCd1dGYtOCcpCisgCisgICAgICAgICBnb2xkRnVsbFBhdGggPSBmaW5kX3Byb2dyYW0oZ29sZCkKKyAgICAgICAgIGlmIGdvbGRGdWxsUGF0aCBpcyBOb25lOgorZGlmZiAtLWdpdCBhL2J1aWxkL21vei5jb25maWd1cmUvdXRpbC5jb25maWd1cmUgYi9idWlsZC9tb3ouY29uZmlndXJlL3V0aWwuY29uZmlndXJlCitpbmRleCAzMjg0ZmQ4YjUuLjIxODgxM2UyZCAxMDA2NDQKKy0tLSBhL2J1aWxkL21vei5jb25maWd1cmUvdXRpbC5jb25maWd1cmUKKysrKyBiL2J1aWxkL21vei5jb25maWd1cmUvdXRpbC5jb25maWd1cmUKK0BAIC0yNSw3ICsyNSw2IEBAIGRlZiBjb25maWd1cmVfZXJyb3IobWVzc2FnZSk6CisgIyBkb2VzIG5vdC4KKyAKKyAKKy1AaW1wb3J0cyhfZnJvbT0nX19idWlsdGluX18nLCBfaW1wb3J0PSd1bmljb2RlJykKKyBAaW1wb3J0cygnc3VicHJvY2VzcycpCisgQGltcG9ydHMoJ3N5cycpCisgQGltcG9ydHMoX2Zyb209J21vemJ1aWxkLmNvbmZpZ3VyZS51dGlsJywgX2ltcG9ydD0nTGluZUlPJykKK0BAIC0zOSwxMCArMzgsMTAgQEAgZGVmIGNoZWNrX2NtZF9vdXRwdXQoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgaWYgJ2VudicgaW4ga3dhcmdzOgorICAgICAgICAgbm9ybWFsaXplZF9lbnYgPSB7fQorICAgICAgICAgZm9yIGssIHYgaW4ga3dhcmdzWydlbnYnXS5pdGVtcygpOgorLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoaywgdW5pY29kZSk6CisrICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShrLCBzdHIpOgorICAgICAgICAgICAgICAgICBrID0gay5lbmNvZGUoJ3V0Zi04JywgJ3N0cmljdCcpCisgCistICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2LCB1bmljb2RlKToKKysgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHYsIHN0cik6CisgICAgICAgICAgICAgICAgIHYgPSB2LmVuY29kZSgndXRmLTgnLCAnc3RyaWN0JykKKyAKKyAgICAgICAgICAgICBub3JtYWxpemVkX2VudltrXSA9IHYKK0BAIC0yODUsNyArMjg0LDcgQEAgZGVmIHVuaXF1ZV9saXN0KGwpOgorICMgICAgICgnMTkuMCcsICd4NjQnLCByJ0M6XC4uLlxhbWQ2NFxjbC5leGUnKQorICMgICAgICgnMTkuMCcsICd4ODYnLCByJ0M6XC4uLlxhbWQ2NF94ODZcY2wuZXhlJykKKyBAaW1wb3J0cyhfaW1wb3J0PSdfd2lucmVnJywgX2FzPSd3aW5yZWcnKQorLUBpbXBvcnRzKF9mcm9tPSdfX2J1aWx0aW5fXycsIF9pbXBvcnQ9J1dpbmRvd3NFcnJvcicpCisrQGltcG9ydHMoX2Zyb209J2J1aWx0aW5zJywgX2ltcG9ydD0nV2luZG93c0Vycm9yJykKKyBAaW1wb3J0cyhfZnJvbT0nZm5tYXRjaCcsIF9pbXBvcnQ9J2ZubWF0Y2gnKQorIGRlZiBnZXRfcmVnaXN0cnlfdmFsdWVzKHBhdHRlcm4sIGdldF8zMl9hbmRfNjRfYml0PUZhbHNlKToKKyAgICAgZGVmIGVudW1faGVscGVyKGZ1bmMsIGtleSk6CitAQCAtMzYwLDYgKzM1OSw4IEBAIGRlZiBnZXRfcmVnaXN0cnlfdmFsdWVzKHBhdHRlcm4sIGdldF8zMl9hbmRfNjRfYml0PUZhbHNlKToKKyBAaW1wb3J0cyhfZnJvbT0nbW96YnVpbGQuY29uZmlndXJlLnV0aWwnLCBfaW1wb3J0PSdWZXJzaW9uJywgX2FzPSdfVmVyc2lvbicpCisgZGVmIFZlcnNpb24odik6CisgICAgICdBIHZlcnNpb24gbnVtYmVyIHRoYXQgY2FuIGJlIGNvbXBhcmVkIHVzZWZ1bGx5LicKKysgICAgaWYgaXNpbnN0YW5jZSh2LCBieXRlcyk6CisrICAgICAgICB2ID0gdi5kZWNvZGUoJ3V0Zi04JykKKyAgICAgcmV0dXJuIF9WZXJzaW9uKHYpCisgCisgIyBEZW5vdGVzIGEgZGVwcmVjYXRlZCBvcHRpb24uIENvbWJpbmVzIG9wdGlvbigpIGFuZCBAZGVwZW5kczoKK2RpZmYgLS1naXQgYS9idWlsZC9tb3ouY29uZmlndXJlL3dpbmRvd3MuY29uZmlndXJlIGIvYnVpbGQvbW96LmNvbmZpZ3VyZS93aW5kb3dzLmNvbmZpZ3VyZQoraW5kZXggYTViNzkwZTNiLi4yYjg4ZmM0NDcgMTAwNjQ0CistLS0gYS9idWlsZC9tb3ouY29uZmlndXJlL3dpbmRvd3MuY29uZmlndXJlCisrKysgYi9idWlsZC9tb3ouY29uZmlndXJlL3dpbmRvd3MuY29uZmlndXJlCitAQCAtMTAsNyArMTAsNyBAQCBvcHRpb24oJy0td2l0aC13aW5kb3dzLXZlcnNpb24nLCBuYXJncz0xLCBkZWZhdWx0PSc2MDMnLAorIAorIAorIEBkZXBlbmRzKCctLXdpdGgtd2luZG93cy12ZXJzaW9uJykKKy1AaW1wb3J0cyhfZnJvbT0nX19idWlsdGluX18nLCBfaW1wb3J0PSdWYWx1ZUVycm9yJykKKytAaW1wb3J0cyhfZnJvbT0nYnVpbHRpbnMnLCBfaW1wb3J0PSdWYWx1ZUVycm9yJykKKyBkZWYgdmFsaWRfd2luZG93c192ZXJzaW9uKHZhbHVlKToKKyAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgZGllKCdDYW5ub3QgYnVpbGQgd2l0aCAtLXdpdGhvdXQtd2luZG93cy12ZXJzaW9uJykKK0BAIC01MCw4ICs1MCw4IEBAIGRlZiB3aW5kb3dzX3Nka19kaXIodmFsdWUsIGhvc3QpOgorIAorIEBpbXBvcnRzKCdvcycpCisgQGltcG9ydHMoJ3JlJykKKy1AaW1wb3J0cyhfZnJvbT0nX19idWlsdGluX18nLCBfaW1wb3J0PSdzb3J0ZWQnKQorLUBpbXBvcnRzKF9mcm9tPSdfX2J1aWx0aW5fXycsIF9pbXBvcnQ9J1dpbmRvd3NFcnJvcicpCisrQGltcG9ydHMoX2Zyb209J2J1aWx0aW5zJywgX2ltcG9ydD0nc29ydGVkJykKKytAaW1wb3J0cyhfZnJvbT0nYnVpbHRpbnMnLCBfaW1wb3J0PSdXaW5kb3dzRXJyb3InKQorIGRlZiBnZXRfc2RrX2RpcnMoc2RrLCBzdWJkaXIpOgorICAgICBkZWYgZ2V0X2RpcnNfY29udGFpbmluZyhzZGssIHN0ZW0sIHN1YmRpcik6CisgICAgICAgICBiYXNlID0gb3MucGF0aC5qb2luKHNkaywgc3RlbSkKK0BAIC05Niw3ICs5Niw3IEBAIGRlZiB2YWxpZF93aW5kb3dzX3Nka19kaXJfcmVzdWx0KHZhbHVlKToKKyAKKyBAZGVwZW5kcyhjX2NvbXBpbGVyLCB3aW5kb3dzX3Nka19kaXIsIHZhbGlkX3dpbmRvd3NfdmVyc2lvbiwgJ1dJTkRPV1NTREtESVInKQorIEBjaGVja2luZygnZm9yIFdpbmRvd3MgU0RLJywgdmFsaWRfd2luZG93c19zZGtfZGlyX3Jlc3VsdCkKKy1AaW1wb3J0cyhfZnJvbT0nX19idWlsdGluX18nLCBfaW1wb3J0PSdzb3J0ZWQnKQorK0BpbXBvcnRzKF9mcm9tPSdidWlsdGlucycsIF9pbXBvcnQ9J3NvcnRlZCcpCisgQGltcG9ydHMoX2Zyb209J3RleHR3cmFwJywgX2ltcG9ydD0nZGVkZW50JykKKyBkZWYgdmFsaWRfd2luZG93c19zZGtfZGlyKGNvbXBpbGVyLCB3aW5kb3dzX3Nka19kaXIsIHRhcmdldF92ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93c19zZGtfZGlyX2Vudik6CitAQCAtMTc0LDcgKzE3NCw3IEBAIGRlZiB2YWxpZF91Y3J0X3Nka19kaXJfcmVzdWx0KHZhbHVlKToKKyBAZGVwZW5kcyh3aW5kb3dzX3Nka19kaXIsICdXSU5ET1dTU0RLRElSJywgY19jb21waWxlcikKKyBAY2hlY2tpbmcoJ2ZvciBVbml2ZXJzYWwgQ1JUIFNESycsIHZhbGlkX3VjcnRfc2RrX2Rpcl9yZXN1bHQpCisgQGltcG9ydHMoJ29zJykKKy1AaW1wb3J0cyhfZnJvbT0nX19idWlsdGluX18nLCBfaW1wb3J0PSdzb3J0ZWQnKQorK0BpbXBvcnRzKF9mcm9tPSdidWlsdGlucycsIF9pbXBvcnQ9J3NvcnRlZCcpCisgQGltcG9ydHMoX2ltcG9ydD0nbW96cGFjay5wYXRoJywgX2FzPSdtb3pwYXRoJykKKyBkZWYgdmFsaWRfdWNydF9zZGtfZGlyKHdpbmRvd3Nfc2RrX2Rpciwgd2luZG93c19zZGtfZGlyX2VudiwgY19jb21waWxlcik6CisgICAgIGlmIHdpbmRvd3Nfc2RrX2Rpcl9lbnY6CitkaWZmIC0tZ2l0IGEvYnVpbGQvdGVtcGxhdGVzLm1vemJ1aWxkIGIvYnVpbGQvdGVtcGxhdGVzLm1vemJ1aWxkCitpbmRleCAzZGE4NTBjZTUuLmFlNWU0MTBmZSAxMDA2NDQKKy0tLSBhL2J1aWxkL3RlbXBsYXRlcy5tb3pidWlsZAorKysrIGIvYnVpbGQvdGVtcGxhdGVzLm1vemJ1aWxkCitAQCAtMTAsNyArMTAsNyBAQCBkZWYgQmluYXJ5KCk6CisgICAgIHRlbXBsYXRlcy4nJycKKyAKKyAgICAgIyBBZGQgLWxsb2cgYnkgZGVmYXVsdCwgc2luY2Ugd2UgdXNlIGl0IGFsbCBvdmVyIHRoZSBwbGFjZS4KKy0gICAgaWYgQ09ORklHWydPU19UQVJHRVQnXSA9PSAnQW5kcm9pZCc6CisrICAgIGlmIHN0cihDT05GSUdbJ09TX1RBUkdFVCddKSA9PSAnQW5kcm9pZCc6CisgICAgICAgICBPU19MSUJTICs9IFsnbG9nJ10KKyAKKyAKK2RpZmYgLS1naXQgYS9jb25maWcvTW96WmlwRmlsZS5weSBiL2NvbmZpZy9Nb3paaXBGaWxlLnB5CitpbmRleCAzMzdmZTA1MjEuLmRjN2FkZDRjMyAxMDA2NDQKKy0tLSBhL2NvbmZpZy9Nb3paaXBGaWxlLnB5CisrKysgYi9jb25maWcvTW96WmlwRmlsZS5weQorQEAgLTE4LDcgKzE4LDcgQEAgY2xhc3MgWmlwRmlsZSh6aXBmaWxlLlppcEZpbGUpOgorICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGUsIG1vZGU9InIiLCBjb21wcmVzc2lvbj16aXBmaWxlLlpJUF9TVE9SRUQsCisgICAgICAgICAgICAgICAgbG9jayA9IEZhbHNlKToKKyAgICAgaWYgbG9jazoKKy0gICAgICBhc3NlcnQgaXNpbnN0YW5jZShmaWxlLCBiYXNlc3RyaW5nKQorKyAgICAgIGFzc2VydCBpc2luc3RhbmNlKGZpbGUsIHN0cikKKyAgICAgICBzZWxmLmxvY2tmaWxlID0gbG9ja19maWxlKGZpbGUgKyAnLmxjaycpCisgICAgIGVsc2U6CisgICAgICAgc2VsZi5sb2NrZmlsZSA9IE5vbmUKK0BAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFppcEZpbGUoemlwZmlsZS5aaXBGaWxlKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3RpbWU9dGltZS5sb2NhbHRpbWUodGltZS50aW1lKCkpKQorICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBzZWxmLmNvbXByZXNzaW9uCisgICAgICAgIyBBZGQgc29tZSBzdGFuZGFyZCBVTklYIGZpbGUgYWNjZXNzIHBlcm1pc3Npb25zICgtcnctci0tci0tKS4KKy0gICAgICB6aW5mby5leHRlcm5hbF9hdHRyID0gKDB4ODFhNCAmIDB4RkZGRikgPDwgMTZMCisrICAgICAgemluZm8uZXh0ZXJuYWxfYXR0ciA9ICgweDgxYTQgJiAweEZGRkYpIDw8IDE2CisgICAgIGVsc2U6CisgICAgICAgemluZm8gPSB6aW5mb19vcl9hcmNuYW1lCisgCitAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBaaXBGaWxlKHppcGZpbGUuWmlwRmlsZSk6CisgICAgICMgYXMgdGhlIG9sZCwgcmV1c2UgdGhlIGV4aXN0aW5nIGVudHJ5LgorIAorICAgICBkb1NlZWsgPSBGYWxzZSAjIHN0b3JlIGlmIHdlIG5lZWQgdG8gc2VlayB0byB0aGUgZW9mIGFmdGVyIG92ZXJ3cml0aW5nCistICAgIGlmIHNlbGYuTmFtZVRvSW5mby5oYXNfa2V5KHppbmZvLmZpbGVuYW1lKToKKysgICAgaWYgemluZm8uZmlsZW5hbWUgaW4gc2VsZi5OYW1lVG9JbmZvOgorICAgICAgICMgRmluZCB0aGUgbGFzdCBaaXBJbmZvIHdpdGggb3VyIG5hbWUuCisgICAgICAgIyBMYXN0LCBiZWNhdXNlIHRoYXQncyBjYXRjaGluZyBtdWx0aXBsZSBvdmVyd3JpdGVzCisgICAgICAgaSA9IGxlbihzZWxmLmZpbGVsaXN0KQorQEAgLTEwOSwxNCArMTA5LDE0IEBAIGNsYXNzIFppcEZpbGUoemlwZmlsZS5aaXBGaWxlKToKKyAgICAgICAjIGFkanVzdCBmaWxlIG1vZGUgaWYgd2Ugb3JpZ2luYWxseSBqdXN0IHdyb3RlLCBub3cgd2UgcmV3cml0ZQorICAgICAgIHNlbGYuZnAuY2xvc2UoKQorICAgICAgIHNlbGYuZnAgPSBvcGVuKHNlbGYuZmlsZW5hbWUsICdyK2InKQorLSAgICBhbGwgPSBtYXAobGFtYmRhIHppOiAoemksIFRydWUpLCBzZWxmLmZpbGVsaXN0KSArIFwKKy0gICAgICAgIG1hcChsYW1iZGEgemk6ICh6aSwgRmFsc2UpLCBzZWxmLl9yZW1vdmUpCisrICAgIGFsbCA9IFsoemksIFRydWUpIGZvciB6aSBpbiBzZWxmLmZpbGVsaXN0XSArIFwKKysgICAgICAgIFsoemksIEZhbHNlKSBmb3IgemkgaW4gc2VsZi5fcmVtb3ZlXQorICAgICBhbGwuc29ydChsYW1iZGEgbCwgcjogY21wKGxbMF0uaGVhZGVyX29mZnNldCwgclswXS5oZWFkZXJfb2Zmc2V0KSkKKyAgICAgIyBlbXB0eSBfcmVtb3ZlIGZvciBtdWx0aXBsZSBjbG9zZXMKKyAgICAgc2VsZi5fcmVtb3ZlID0gW10KKyAKKyAgICAgbGVuZ3RocyA9IFthbGxbaSsxXVswXS5oZWFkZXJfb2Zmc2V0IC0gYWxsW2ldWzBdLmhlYWRlcl9vZmZzZXQKKy0gICAgICAgICAgICAgICBmb3IgaSBpbiB4cmFuZ2UobGVuKGFsbCktMSldCisrICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGFsbCktMSldCisgICAgIGxlbmd0aHMuYXBwZW5kKHNlbGYuZW5kIC0gYWxsWy0xXVswXS5oZWFkZXJfb2Zmc2V0KQorICAgICB0b19wb3MgPSAwCisgICAgIGZvciAoemksIGtlZXApLCBsZW5ndGggaW4gemlwKGFsbCwgbGVuZ3Rocyk6CitkaWZmIC0tZ2l0IGEvY29uZmlnL2V4cGFuZGxpYnMucHkgYi9jb25maWcvZXhwYW5kbGlicy5weQoraW5kZXggYWMwNmM0MzJmLi5kZjFmZWQxNWQgMTAwNjQ0CistLS0gYS9jb25maWcvZXhwYW5kbGlicy5weQorKysrIGIvY29uZmlnL2V4cGFuZGxpYnMucHkKK0BAIC0yNiw3ICsyNiw3IEBAICR7TElCX1BSRUZJWH0ke1JPT1R9LiR7TElCX1NVRkZJWH0gZm9sbG93aW5nIHRoZXNlIHJ1bGVzOgorICAgZGVzY3JpcHRvciBjb250YWlucy4gQW5kIGZvciBlYWNoIG9mIHRoZXNlIExJQlMsIGFsc28gYXBwbHkgdGhlIHNhbWUKKyAgIHJ1bGVzLgorICcnJworLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKKysKKyBpbXBvcnQgc3lzLCBvcywgZXJybm8KKyBpbXBvcnQgZXhwYW5kbGlic19jb25maWcgYXMgY29uZgorIAorQEAgLTM2LDcgKzM2LDcgQEAgZGVmIGVuc3VyZVBhcmVudERpcihmaWxlKToKKyAgICAgaWYgZGlyIGFuZCBub3Qgb3MucGF0aC5leGlzdHMoZGlyKToKKyAgICAgICAgIHRyeToKKyAgICAgICAgICAgICBvcy5tYWtlZGlycyhkaXIpCistICAgICAgICBleGNlcHQgT1NFcnJvciwgZXJyb3I6CisrICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKKyAgICAgICAgICAgICBpZiBlcnJvci5lcnJubyAhPSBlcnJuby5FRVhJU1Q6CisgICAgICAgICAgICAgICAgIHJhaXNlCisgCitAQCAtMTQwLDQgKzE0MCw0IEBAIGNsYXNzIEV4cGFuZEFyZ3MobGlzdCk6CisgICAgICAgICByZXR1cm4gW3JlbGF0aXZpemUoYXJnKV0KKyAKKyBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorLSAgICBwcmludCAiICIuam9pbihFeHBhbmRBcmdzKHN5cy5hcmd2WzE6XSkpCisrICAgIHByaW50KCIgIi5qb2luKEV4cGFuZEFyZ3Moc3lzLmFyZ3ZbMTpdKSkpCitkaWZmIC0tZ2l0IGEvY29uZmlnL2V4cGFuZGxpYnNfZXhlYy5weSBiL2NvbmZpZy9leHBhbmRsaWJzX2V4ZWMucHkKK2luZGV4IGRmNjU2MDE2Yy4uZmI3ODZhNmE4IDEwMDY0NAorLS0tIGEvY29uZmlnL2V4cGFuZGxpYnNfZXhlYy5weQorKysrIGIvY29uZmlnL2V4cGFuZGxpYnNfZXhlYy5weQorQEAgLTIwLDcgKzIwLDcgQEAgV2l0aCB0aGUgLS1zeW1ib2wtb3JkZXIgYXJndW1lbnQsIGZvbGxvd2VkIGJ5IGEgZmlsZSBuYW1lLCBpdCB3aWxsIGFkZCB0aGUKKyByZWxldmFudCBsaW5rZXIgb3B0aW9ucyB0byBjaGFuZ2UgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBsaW5rZXIgcHV0cyB0aGUKKyBzeW1ib2xzIGFwcGVhciBpbiB0aGUgcmVzdWx0aW5nIGJpbmFyeS4gT25seSB3b3JrcyBmb3IgRUxGIHRhcmdldHMuCisgJycnCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAorKworIGltcG9ydCBzeXMKKyBpbXBvcnQgb3MKKyBmcm9tIGV4cGFuZGxpYnMgaW1wb3J0ICgKK0BAIC0zMDQsMTEgKzMwNCwxMSBAQCBjbGFzcyBTZWN0aW9uRmluZGVyKG9iamVjdCk6CisgICAgICAgICByZXR1cm4gc3ltcworIAorIGRlZiBwcmludF9jb21tYW5kKG91dCwgYXJncyk6CistICAgIHByaW50ID4+b3V0LCAiRXhlY3V0aW5nOiAiICsgIiAiLmpvaW4oYXJncykKKysgICAgcHJpbnQoIkV4ZWN1dGluZzogIiArICIgIi5qb2luKGFyZ3MpLCBmaWxlPW91dCkKKyAgICAgZm9yIHRtcCBpbiBbZiBmb3IgZiBpbiBhcmdzLnRtcCBpZiBvcy5wYXRoLmlzZmlsZShmKV06CistICAgICAgICBwcmludCA+Pm91dCwgdG1wICsgIjoiCisrICAgICAgICBwcmludCh0bXAgKyAiOiIsIGZpbGU9b3V0KQorICAgICAgICAgd2l0aCBvcGVuKHRtcCkgYXMgZmlsZToKKy0gICAgICAgICAgICBwcmludCA+Pm91dCwgIiIuam9pbihbIiAgICAiICsgbCBmb3IgbCBpbiBmaWxlLnJlYWRsaW5lcygpXSkKKysgICAgICAgICAgICBwcmludCgiIi5qb2luKFsiICAgICIgKyBsIGZvciBsIGluIGZpbGUucmVhZGxpbmVzKCldKSwgZmlsZT1vdXQpCisgICAgIG91dC5mbHVzaCgpCisgCisgZGVmIG1haW4oYXJncywgcHJvY19jYWxsYmFjaz1Ob25lKToKK0BAIC0zMzgsMTMgKzMzOCwxMyBAQCBkZWYgbWFpbihhcmdzLCBwcm9jX2NhbGxiYWNrPU5vbmUpOgorICAgICAgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsIHN0ZG91dCA9IHN1YnByb2Nlc3MuUElQRSwgc3RkZXJyID0gc3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgICAgICAgaWYgcHJvY19jYWxsYmFjazoKKyAgICAgICAgICAgICAgICAgcHJvY19jYWxsYmFjayhwcm9jKQorLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKKy0gICAgICAgICAgICBwcmludCA+PnN5cy5zdGRlcnIsICdlcnJvcjogTGF1bmNoaW5nJywgYXJncywgJzonLCBlCisrICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisrICAgICAgICAgICAgcHJpbnQoJ2Vycm9yOiBMYXVuY2hpbmcnLCBhcmdzLCAnOicsIGUsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICByYWlzZSBlCisgICAgICAgICAoc3Rkb3V0LCBzdGRlcnIpID0gcHJvYy5jb21tdW5pY2F0ZSgpCisgICAgICAgICBpZiBwcm9jLnJldHVybmNvZGUgYW5kIG5vdCBvcHRpb25zLnZlcmJvc2U6CisgICAgICAgICAgICAgcHJpbnRfY29tbWFuZChzeXMuc3RkZXJyLCBhcmdzKQorLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZShzdGRvdXQpCisrICAgICAgICBzeXMuc3RkZXJyLndyaXRlKHN0ZG91dC5kZWNvZGUoInV0Zi04IikpCisgICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKKyAgICAgICAgIGlmIHByb2MucmV0dXJuY29kZToKKyAgICAgICAgICAgICByZXR1cm4gcHJvYy5yZXR1cm5jb2RlCitkaWZmIC0tZ2l0IGEvY29uZmlnL2V4cGFuZGxpYnNfZ2VuLnB5IGIvY29uZmlnL2V4cGFuZGxpYnNfZ2VuLnB5CitpbmRleCBiMWRlNjNjZDAuLmRjNjJiZDE4NCAxMDA2NDQKKy0tLSBhL2NvbmZpZy9leHBhbmRsaWJzX2dlbi5weQorKysrIGIvY29uZmlnL2V4cGFuZGxpYnNfZ2VuLnB5CitAQCAtNSw3ICs1LDcgQEAKKyAnJydHaXZlbiBhIGxpc3Qgb2Ygb2JqZWN0IGZpbGVzIGFuZCBsaWJyYXJ5IG5hbWVzLCBwcmludHMgYSBsaWJyYXJ5CisgZGVzY3JpcHRvciB0byBzdGFuZGFyZCBvdXRwdXQnJycKKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CisrCisgaW1wb3J0IHN5cworIGltcG9ydCBvcworIGltcG9ydCBleHBhbmRsaWJzX2NvbmZpZyBhcyBjb25mCitAQCAtMzgsNCArMzgsNCBAQCBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorIAorICAgICBlbnN1cmVQYXJlbnREaXIob3B0aW9ucy5vdXRwdXQpCisgICAgIHdpdGggb3BlbihvcHRpb25zLm91dHB1dCwgJ3cnKSBhcyBvdXRmaWxlOgorLSAgICAgICAgcHJpbnQgPj5vdXRmaWxlLCBnZW5lcmF0ZShhcmdzKQorKyAgICAgICAgcHJpbnQoZ2VuZXJhdGUoYXJncyksIGZpbGU9b3V0ZmlsZSkKK2RpZmYgLS1naXQgYS9jb25maWd1cmUucHkgYi9jb25maWd1cmUucHkKK2luZGV4IDc3MWUzNGUzOC4uYmVlMzI5ZDdjIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLnB5CisrKysgYi9jb25maWd1cmUucHkKK0BAIC0yLDEwICsyLDExIEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24sIHVuaWNvZGVfbGl0ZXJhbHMKKysKKyAKKyBpbXBvcnQgY29kZWNzCisgaW1wb3J0IGl0ZXJ0b29scworK2ltcG9ydCBsb2dnaW5nCisgaW1wb3J0IG9zCisgaW1wb3J0IHN5cworIGltcG9ydCB0ZXh0d3JhcAorQEAgLTM0LDcgKzM1LDkgQEAgZnJvbSBtb3pidWlsZC51dGlsIGltcG9ydCAoCisgZGVmIG1haW4oYXJndik6CisgICAgIGNvbmZpZyA9IHt9CisgICAgIHNhbmRib3ggPSBDb25maWd1cmVTYW5kYm94KGNvbmZpZywgb3MuZW52aXJvbiwgYXJndikKKysgICAgcHJpbnQoJ3NhbmRib3gucnVuIHN0YXJ0ZWQnKQorICAgICBzYW5kYm94LnJ1bihvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJ21vei5jb25maWd1cmUnKSkKKysgICAgcHJpbnQoJ3NhbmRib3gucnVuIGZpbmlzaGVkJykKKyAKKyAgICAgaWYgc2FuZGJveC5faGVscDoKKyAgICAgICAgIHJldHVybiAwCitAQCAtNTYsMTIgKzU5LDIxIEBAIGRlZiBjb25maWdfc3RhdHVzKGNvbmZpZyk6CisgCisgICAgIHNhbml0aXplZF9jb25maWcgPSB7fQorICAgICBzYW5pdGl6ZWRfY29uZmlnWydzdWJzdHMnXSA9IHsKKy0gICAgICAgIGs6IHNhbml0aXplZF9ib29scyh2KSBmb3IgaywgdiBpbiBjb25maWcuaXRlcml0ZW1zKCkKKysgICAgICAgIGs6IHNhbml0aXplZF9ib29scyh2KSBmb3IgaywgdiBpbiBjb25maWcuaXRlbXMoKQorICAgICAgICAgaWYgayBub3QgaW4gKCdERUZJTkVTJywgJ25vbl9nbG9iYWxfZGVmaW5lcycsICdUT1BTUkNESVInLCAnVE9QT0JKRElSJywKKyAgICAgICAgICAgICAgICAgICAgICAnQUxMX0NPTkZJR1VSRV9QQVRIUycpCisgICAgIH0KKysKKysgICAgIyBIYWNrIGFyb3VuZCBPcHRpb25WYWx1ZSBlbnRyaWVzIHVua25vd24gZHVyaW5nIGNvbXBpbGUKKysgICAgZm9yIG9wdCBpbiAoJ0JVSUxEX0JBQ0tFTkRTJywgJ01PWl9VSV9MT0NBTEUnLCAnUlVTVEZMQUdTJyApOgorKyAgICAgICAgb2xkID0gc2FuaXRpemVkX2NvbmZpZ1snc3Vic3RzJ11bb3B0XQorKyAgICAgICAgbmV3ID0gW10KKysgICAgICAgIGZvciBzZXR0aW5nIGluIG9sZDoKKysgICAgICAgICAgICBuZXcuYXBwZW5kKHNldHRpbmcpCisrICAgICAgICBzYW5pdGl6ZWRfY29uZmlnWydzdWJzdHMnXVtvcHRdID0gbmV3CisrCisgICAgIHNhbml0aXplZF9jb25maWdbJ2RlZmluZXMnXSA9IHsKKy0gICAgICAgIGs6IHNhbml0aXplZF9ib29scyh2KSBmb3IgaywgdiBpbiBjb25maWdbJ0RFRklORVMnXS5pdGVyaXRlbXMoKQorKyAgICAgICAgazogc2FuaXRpemVkX2Jvb2xzKHYpIGZvciBrLCB2IGluIGNvbmZpZ1snREVGSU5FUyddLml0ZW1zKCkKKyAgICAgfQorICAgICBzYW5pdGl6ZWRfY29uZmlnWydub25fZ2xvYmFsX2RlZmluZXMnXSA9IGNvbmZpZ1snbm9uX2dsb2JhbF9kZWZpbmVzJ10KKyAgICAgc2FuaXRpemVkX2NvbmZpZ1sndG9wc3JjZGlyJ10gPSBjb25maWdbJ1RPUFNSQ0RJUiddCitAQCAtNzEsMjAgKzgzLDE3IEBAIGRlZiBjb25maWdfc3RhdHVzKGNvbmZpZyk6CisgICAgICMgQ3JlYXRlIGNvbmZpZy5zdGF0dXMuIEV2ZW50dWFsbHksIHdlJ2xsIHdhbnQgdG8ganVzdCBkbyB0aGUgd29yayBpdCBkb2VzCisgICAgICMgaGVyZSwgd2hlbiB3ZSdyZSBhYmxlIHRvIHNraXAgY29uZmlndXJlIHRlc3RzL3VzZSBjYWNoZWQgcmVzdWx0cy9ub3QgcmVseQorICAgICAjIG9uIGF1dG9jb25mLgorLSAgICBwcmludCgiQ3JlYXRpbmcgY29uZmlnLnN0YXR1cyIsIGZpbGU9c3lzLnN0ZGVycikKKy0gICAgZW5jb2RpbmcgPSAnbWJjcycgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMicgZWxzZSAndXRmLTgnCistICAgIHdpdGggY29kZWNzLm9wZW4oJ2NvbmZpZy5zdGF0dXMnLCAndycsIGVuY29kaW5nKSBhcyBmaDoKKysgICAgbG9nZ2luZy5nZXRMb2dnZXIoJ21vei5jb25maWd1cmUnKS5pbmZvKCdDcmVhdGluZyBjb25maWcuc3RhdHVzJykKKysgICAgd2l0aCBjb2RlY3Mub3BlbignY29uZmlnLnN0YXR1cycsICd3JywgJ3V0Zi04JykgYXMgZmg6CisgICAgICAgICBmaC53cml0ZSh0ZXh0d3JhcC5kZWRlbnQoJycnXAorICAgICAgICAgICAgICMhJShweXRob24pcworLSAgICAgICAgICAgICMgY29kaW5nPSUoZW5jb2RpbmcpcworLSAgICAgICAgICAgIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscworLSAgICAgICAgICAgIGZyb20gbW96YnVpbGQudXRpbCBpbXBvcnQgZW5jb2RlCistICAgICAgICAgICAgZW5jb2RpbmcgPSAnJShlbmNvZGluZylzJworLSAgICAgICAgJycnKSAlIHsncHl0aG9uJzogY29uZmlnWydQWVRIT04nXSwgJ2VuY29kaW5nJzogZW5jb2Rpbmd9KQorKyAgICAgICAgICAgICMgY29kaW5nPXV0Zi04CisrICAgICAgICAgICAgcHJpbnQoImNvbmZpZy5zdGF0dXMgc3RhcnRlZCIpCisrICAgICAgICAnJycpICUgeydweXRob24nOiBjb25maWdbJ1BZVEhPTiddfSkKKyAgICAgICAgICMgQSBsb3Qgb2YgdGhlIGJ1aWxkIGJhY2tlbmQgY29kZSBpcyBjdXJyZW50bHkgZXhwZWN0aW5nIGJ5dGUKKyAgICAgICAgICMgc3RyaW5ncyBhbmQgYnJlYWtzIGluIHN1YnRsZSB3YXlzIHdpdGggdW5pY29kZSBzdHJpbmdzLiAoYnVnIDEyOTY1MDgpCistICAgICAgICBmb3IgaywgdiBpbiBzYW5pdGl6ZWRfY29uZmlnLml0ZXJpdGVtcygpOgorLSAgICAgICAgICAgIGZoLndyaXRlKCclcyA9IGVuY29kZSglcywgZW5jb2RpbmcpXG4nICUgKGssIGluZGVudGVkX3JlcHIodikpKQorKyAgICAgICAgZm9yIGssIHYgaW4gc2FuaXRpemVkX2NvbmZpZy5pdGVtcygpOgorKyAgICAgICAgICAgIGZoLndyaXRlKCclcyA9ICVzXG4nICUgKGssIGluZGVudGVkX3JlcHIodikpKQorICAgICAgICAgZmgud3JpdGUoIl9fYWxsX18gPSBbJ3RvcG9iamRpcicsICd0b3BzcmNkaXInLCAnZGVmaW5lcycsICIKKyAgICAgICAgICAgICAgICAgICInbm9uX2dsb2JhbF9kZWZpbmVzJywgJ3N1YnN0cycsICdtb3pjb25maWcnXSIpCisgCitAQCAtOTcsNiArMTA2LDkgQEAgZGVmIGNvbmZpZ19zdGF0dXMoY29uZmlnKToKKyAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBkaWN0KFsobmFtZSwgZ2xvYmFscygpW25hbWVdKSBmb3IgbmFtZSBpbiBfX2FsbF9fXSkKKyAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ19zdGF0dXMoKiphcmdzKQorICAgICAgICAgICAgICcnJykpCisrICAgICAgICBmaC53cml0ZSh0ZXh0d3JhcC5kZWRlbnQoJycnCisrICAgICAgICAgICAgcHJpbnQoImNvbmZpZy5zdGF0dXMgZmluaXNoZWQiKQorKyAgICAgICAgJycnKSkKKyAKKyAgICAgcGFydGlhbF9jb25maWcgPSBQYXJ0aWFsQ29uZmlnRW52aXJvbm1lbnQoY29uZmlnWydUT1BPQkpESVInXSkKKyAgICAgcGFydGlhbF9jb25maWcud3JpdGVfdmFycyhzYW5pdGl6ZWRfY29uZmlnKQorQEAgLTExNiw3ICsxMjgsNyBAQCBkZWYgY29uZmlnX3N0YXR1cyhjb25maWcpOgorICAgICAjIGV4ZWN1dGFibGUgcGVybWlzc2lvbnMuCisgICAgIG9zLmNobW9kKCdjb25maWcuc3RhdHVzJywgMG83NTUpCisgICAgIGlmIGNvbmZpZy5nZXQoJ01PWl9CVUlMRF9BUFAnKSAhPSAnanMnIG9yIGNvbmZpZy5nZXQoJ0pTX1NUQU5EQUxPTkUnKToKKy0gICAgICAgIG9zLmVudmlyb25bYidXUklURV9NT1pJTkZPJ10gPSBiJzEnCisrICAgICAgICBvcy5lbnZpcm9uWydXUklURV9NT1pJTkZPJ10gPSAnMScKKyAgICAgICAgIGZyb20gbW96YnVpbGQuY29uZmlnX3N0YXR1cyBpbXBvcnQgY29uZmlnX3N0YXR1cworIAorICAgICAgICAgIyBTb21lIHZhbHVlcyBpbiBzYW5pdGl6ZWRfY29uZmlnIGFsc28gaGF2ZSBtb3JlIGNvbXBsZXggdHlwZXMsIHN1Y2ggYXMKK0BAIC0xMjcsNyArMTM5LDcgQEAgZGVmIGNvbmZpZ19zdGF0dXMoY29uZmlnKToKKyAKKyAgICAgICAgICMgQSBsb3Qgb2YgdGhlIGJ1aWxkIGJhY2tlbmQgY29kZSBpcyBjdXJyZW50bHkgZXhwZWN0aW5nIGJ5dGUgc3RyaW5ncworICAgICAgICAgIyBhbmQgYnJlYWtzIGluIHN1YnRsZSB3YXlzIHdpdGggdW5pY29kZSBzdHJpbmdzLgorLSAgICAgICAgcmV0dXJuIGNvbmZpZ19zdGF0dXMoYXJncz1bXSwgKiplbmNvZGUoc2FuaXRpemVkX2NvbmZpZywgZW5jb2RpbmcpKQorKyAgICAgICAgcmV0dXJuIGNvbmZpZ19zdGF0dXMoYXJncz1bXSwgKipzYW5pdGl6ZWRfY29uZmlnKQorICAgICByZXR1cm4gMAorIAorIAorZGlmZiAtLWdpdCBhL2pzL3NyYy9idWlsZC9tb3ouYnVpbGQgYi9qcy9zcmMvYnVpbGQvbW96LmJ1aWxkCitpbmRleCBhN2Y1ZmE0Y2UuLjg1NmNhZTMyZCAxMDA2NDQKKy0tLSBhL2pzL3NyYy9idWlsZC9tb3ouYnVpbGQKKysrKyBiL2pzL3NyYy9idWlsZC9tb3ouYnVpbGQKK0BAIC00NywyMiArNDcsMjIgQEAgVVNFX0xJQlMgKz0gWworICAgICAnemxpYicsCisgXQorIAorLWlmIENPTkZJR1snT1NfQVJDSCddIG5vdCBpbiAoJ1dJTk5UJywgJ0hQLVVYJyk6CisraWYgc3RyKENPTkZJR1snT1NfQVJDSCddKSBub3QgaW4gKCdXSU5OVCcsICdIUC1VWCcpOgorICAgICBPU19MSUJTICs9IFsKKyAgICAgICAgICdtJywKKyAgICAgXQorIAorLWlmIENPTkZJR1snT1NfQVJDSCddID09ICdGcmVlQlNEJzoKKytpZiBzdHIoQ09ORklHWydPU19BUkNIJ10pID09ICdGcmVlQlNEJzoKKyAgICAgT1NfTElCUyArPSBbCisgICAgICAgICAnLXB0aHJlYWQnLAorICAgICBdCisgCistaWYgQ09ORklHWydPU19BUkNIJ10gPT0gJ0xpbnV4JzoKKytpZiBzdHIoQ09ORklHWydPU19BUkNIJ10pID09ICdMaW51eCc6CisgICAgIE9TX0xJQlMgKz0gWworICAgICAgICAgJ2RsJywKKyAgICAgXQorIAorLWlmIENPTkZJR1snT1NfQVJDSCddID09ICdTdW5PUyc6CisraWYgc3RyKENPTkZJR1snT1NfQVJDSCddKSA9PSAnU3VuT1MnOgorICAgICBPU19MSUJTICs9IFsKKyAgICAgICAgICdwb3NpeDQnLAorICAgICAgICAgJ2RsJywKK2RpZmYgLS1naXQgYS9qcy9zcmMvYnVpbHRpbi9lbWJlZGpzLnB5IGIvanMvc3JjL2J1aWx0aW4vZW1iZWRqcy5weQoraW5kZXggYmEyNWU3MWMxLi5kNGYyZGUxMjIgMTAwNjQ0CistLS0gYS9qcy9zcmMvYnVpbHRpbi9lbWJlZGpzLnB5CisrKysgYi9qcy9zcmMvYnVpbHRpbi9lbWJlZGpzLnB5CitAQCAtMzYsNyArMzYsNyBAQAorICMKKyAjIEl0IHVzZXMgdGhlIEMgcHJlcHJvY2Vzc29yIHRvIHByb2Nlc3MgaXRzIGlucHV0cy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CisrCisgaW1wb3J0IHJlLCBzeXMsIG9zLCBzdWJwcm9jZXNzCisgaW1wb3J0IHNobGV4CisgaW1wb3J0IHdoaWNoCitAQCAtNTIsOCArNTIsOCBAQCBkZWYgVG9DQXNjaWlBcnJheShsaW5lcyk6CisgCisgZGVmIFRvQ0FycmF5KGxpbmVzKToKKyAgIHJlc3VsdCA9IFtdCistICBmb3IgY2hyIGluIGxpbmVzOgorLSAgICByZXN1bHQuYXBwZW5kKHN0cihvcmQoY2hyKSkpCisrICBmb3IgY2hhciBpbiBsaW5lczoKKysgICAgcmVzdWx0LmFwcGVuZCgiMHglMC4yWCIgJSBjaGFyKQorICAgcmV0dXJuICIsICIuam9pbihyZXN1bHQpCisgCisgSEVBREVSX1RFTVBMQVRFID0gIiIiXAorQEAgLTg3LDcgKzg3LDcgQEAgZGVmIGVtYmVkKGN4eCwgcHJlcHJvY2Vzc29yT3B0aW9uLCBjcHBmbGFncywgbXNncywgc291cmNlcywgY19vdXQsIGpzX291dCwgbmFtZXMKKyAKKyAgIGpzX291dC53cml0ZShwcm9jZXNzZWQpCisgICBpbXBvcnQgemxpYgorLSAgY29tcHJlc3NlZCA9IHpsaWIuY29tcHJlc3MocHJvY2Vzc2VkKQorKyAgY29tcHJlc3NlZCA9IHpsaWIuY29tcHJlc3MocHJvY2Vzc2VkLmVuY29kZSgndXRmLTgnKSkKKyAgIGRhdGEgPSBUb0NBcnJheShjb21wcmVzc2VkKQorICAgY19vdXQud3JpdGUoSEVBREVSX1RFTVBMQVRFICUgeworICAgICAnc291cmNlc190eXBlJzogJ3Vuc2lnbmVkIGNoYXInLAorQEAgLTEwNyw3ICsxMDcsNyBAQCBkZWYgcHJlcHJvY2VzcyhjeHgsIHByZXByb2Nlc3Nvck9wdGlvbiwgc291cmNlLCBhcmdzID0gW10pOgorICAgdG1wT3V0ID0gJ3NlbGYtaG9zdGluZy1wcmVwcm9jZXNzZWQucHAnOworICAgb3V0cHV0QXJnID0gc2hsZXguc3BsaXQocHJlcHJvY2Vzc29yT3B0aW9uICsgdG1wT3V0KQorIAorLSAgd2l0aCBvcGVuKHRtcEluLCAnd2InKSBhcyBpbnB1dDoKKysgIHdpdGggb3Blbih0bXBJbiwgJ3cnKSBhcyBpbnB1dDoKKyAgICAgaW5wdXQud3JpdGUoc291cmNlKQorICAgcHJpbnQoJyAnLmpvaW4oY3h4ICsgb3V0cHV0QXJnICsgYXJncyArIFt0bXBJbl0pKQorICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5Qb3BlbihjeHggKyBvdXRwdXRBcmcgKyBhcmdzICsgW3RtcEluXSkud2FpdCgpCitkaWZmIC0tZ2l0IGEvanMvc3JjL2NvbmZpZ3VyZSBiL2pzL3NyYy9jb25maWd1cmUKK2luZGV4IDNiM2EzOWFmMy4uOGY1ZWE0MWQwIDEwMDc1NQorLS0tIGEvanMvc3JjL2NvbmZpZ3VyZQorKysrIGIvanMvc3JjL2NvbmZpZ3VyZQorQEAgLTI0LDQgKzI0LDQgQEAgZXhwb3J0IE9MRF9DT05GSUdVUkU9IiRTUkNESVIiL29sZC1jb25maWd1cmUKKyAKKyBzZXQgLS0gIiRAIiAtLWVuYWJsZS1wcm9qZWN0PWpzCisgCistd2hpY2ggcHl0aG9uMi43ID4gL2Rldi9udWxsICYmIGV4ZWMgcHl0aG9uMi43ICIkVE9QU1JDRElSL2NvbmZpZ3VyZS5weSIgIiRAIiB8fCBleGVjIHB5dGhvbiAiJFRPUFNSQ0RJUi9jb25maWd1cmUucHkiICIkQCIKKyt3aGljaCBweXRob24zID4gL2Rldi9udWxsICYmIGV4ZWMgcHl0aG9uMyAiJFRPUFNSQ0RJUi9jb25maWd1cmUucHkiICIkQCIgfHwgZXhlYyBweXRob24gIiRUT1BTUkNESVIvY29uZmlndXJlLnB5IiAiJEAiCitkaWZmIC0tZ2l0IGEvanMvc3JjL2Zyb250ZW5kL0dlbmVyYXRlUmVzZXJ2ZWRXb3Jkcy5weSBiL2pzL3NyYy9mcm9udGVuZC9HZW5lcmF0ZVJlc2VydmVkV29yZHMucHkKK2luZGV4IDNhYTIzMDdiOS4uMzgxYzhlMmI0IDEwMDY0NAorLS0tIGEvanMvc3JjL2Zyb250ZW5kL0dlbmVyYXRlUmVzZXJ2ZWRXb3Jkcy5weQorKysrIGIvanMvc3JjL2Zyb250ZW5kL0dlbmVyYXRlUmVzZXJ2ZWRXb3Jkcy5weQorQEAgLTgwLDE0ICs4MCwxNCBAQCBkZWYgc3BsaXRfbGlzdF9wZXJfY29sdW1uKHJlc2VydmVkX3dvcmRfbGlzdCwgY29sdW1uKToKKyAgICAgICAgIHBlcl9jb2x1bW4gPSBjb2x1bW5fZGljdC5zZXRkZWZhdWx0KHdvcmRbY29sdW1uXSwgW10pCisgICAgICAgICBwZXJfY29sdW1uLmFwcGVuZChpdGVtKQorIAorLSAgICByZXR1cm4gc29ydGVkKGNvbHVtbl9kaWN0Lml0ZW1zKCksIGtleT1sYW1iZGEgKGNoYXIsIHdvcmQpOiBvcmQoY2hhcikpCisrICAgIHJldHVybiBzb3J0ZWQobGlzdChjb2x1bW5fZGljdC5pdGVtcygpKSwga2V5PWxhbWJkYSBjaGFyX3dvcmQ6IG9yZChjaGFyX3dvcmRbMF0pKQorIAorIGRlZiBnZW5lcmF0ZV9sZXR0ZXJfc3dpdGNoKG9wdCwgdW5wcm9jZXNzZWRfY29sdW1ucywgcmVzZXJ2ZWRfd29yZF9saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM9Tm9uZSk6CisgICAgIGFzc2VydChsZW4ocmVzZXJ2ZWRfd29yZF9saXN0KSAhPSAwKTsKKyAKKyAgICAgaWYgbm90IGNvbHVtbnM6CistICAgICAgICBjb2x1bW5zID0gcmFuZ2UoMCwgdW5wcm9jZXNzZWRfY29sdW1ucykKKysgICAgICAgIGNvbHVtbnMgPSBsaXN0KHJhbmdlKDAsIHVucHJvY2Vzc2VkX2NvbHVtbnMpKQorIAorICAgICBpZiBsZW4ocmVzZXJ2ZWRfd29yZF9saXN0KSA9PSAxOgorICAgICAgICAgaW5kZXgsIHdvcmQgPSByZXNlcnZlZF93b3JkX2xpc3RbMF0KK0BAIC0xNjEsNyArMTYxLDcgQEAgZGVmIHNwbGl0X2xpc3RfcGVyX2xlbmd0aChyZXNlcnZlZF93b3JkX2xpc3QpOgorICAgICAgICAgcGVyX2xlbmd0aCA9IGxlbmd0aF9kaWN0LnNldGRlZmF1bHQobGVuKHdvcmQpLCBbXSkKKyAgICAgICAgIHBlcl9sZW5ndGguYXBwZW5kKGl0ZW0pCisgCistICAgIHJldHVybiBzb3J0ZWQobGVuZ3RoX2RpY3QuaXRlbXMoKSwga2V5PWxhbWJkYSAobGVuZ3RoLCB3b3JkKTogbGVuZ3RoKQorKyAgICByZXR1cm4gc29ydGVkKGxpc3QobGVuZ3RoX2RpY3QuaXRlbXMoKSksIGtleT1sYW1iZGEgbGVuZ3RoX3dvcmQ6IGxlbmd0aF93b3JkWzBdKQorIAorIGRlZiBnZW5lcmF0ZV9zd2l0Y2gob3B0LCByZXNlcnZlZF93b3JkX2xpc3QpOgorICAgICBhc3NlcnQobGVuKHJlc2VydmVkX3dvcmRfbGlzdCkgIT0gMCk7CitkaWZmIC0tZ2l0IGEvanMvc3JjL2djL0dlbmVyYXRlU3RhdHNQaGFzZXMucHkgYi9qcy9zcmMvZ2MvR2VuZXJhdGVTdGF0c1BoYXNlcy5weQoraW5kZXggMmRhZjgzNTU1Li5lMzlhMjZhNGIgMTAwNjQ0CistLS0gYS9qcy9zcmMvZ2MvR2VuZXJhdGVTdGF0c1BoYXNlcy5weQorKysrIGIvanMvc3JjL2djL0dlbmVyYXRlU3RhdHNQaGFzZXMucHkKK0BAIC0yNjcsNyArMjY3LDcgQEAgZGVmIGdlbmVyYXRlSGVhZGVyKG91dCk6CisgICAgICMKKyAgICAgIyBHZW5lcmF0ZSBQaGFzZUtpbmQgZW51bS4KKyAgICAgIworLSAgICBwaGFzZUtpbmROYW1lcyA9IG1hcChsYW1iZGEgcGhhc2VLaW5kOiBwaGFzZUtpbmQubmFtZSwgQWxsUGhhc2VLaW5kcykKKysgICAgcGhhc2VLaW5kTmFtZXMgPSBbcGhhc2VLaW5kLm5hbWUgZm9yIHBoYXNlS2luZCBpbiBBbGxQaGFzZUtpbmRzXQorICAgICBleHRyYVBoYXNlS2luZHMgPSBbCisgICAgICAgICAiTk9ORSA9IExJTUlUIiwKKyAgICAgICAgICJFWFBMSUNJVF9TVVNQRU5TSU9OID0gTElNSVQiLAorQEAgLTI3OSw3ICsyNzksNyBAQCBkZWYgZ2VuZXJhdGVIZWFkZXIob3V0KToKKyAgICAgIworICAgICAjIEdlbmVyYXRlIFBoYXNlIGVudW0uCisgICAgICMKKy0gICAgcGhhc2VOYW1lcyA9IG1hcChsYW1iZGEgcGhhc2U6IHBoYXNlLm5hbWUsIEFsbFBoYXNlcykKKysgICAgcGhhc2VOYW1lcyA9IFtwaGFzZS5uYW1lIGZvciBwaGFzZSBpbiBBbGxQaGFzZXNdCisgICAgIGV4dHJhUGhhc2VzID0gWworICAgICAgICAgIk5PTkUgPSBMSU1JVCIsCisgICAgICAgICAiRVhQTElDSVRfU1VTUEVOU0lPTiA9IExJTUlUIiwKK2RpZmYgLS1naXQgYS9qcy9zcmMvb2xkLWNvbmZpZ3VyZS5pbiBiL2pzL3NyYy9vbGQtY29uZmlndXJlLmluCitpbmRleCAxMWMzZDVhMmUuLjM4OTI2NTQwNCAxMDA2NDQKKy0tLSBhL2pzL3NyYy9vbGQtY29uZmlndXJlLmluCisrKysgYi9qcy9zcmMvb2xkLWNvbmZpZ3VyZS5pbgorQEAgLTE4ODQsMyArMTg4NCw1IEBAIGlmIHRlc3QgIiRKU19TVEFOREFMT05FIjsgdGhlbgorIGZpCisgCisgcm0gLWZyIGNvbmZkZWZzKiAkYWNfY2xlYW5fZmlsZXMKKytlY2hvIGNvbmZkZWZzKiAkYWNfY2xlYW5fZmlsZXMgcmVtb3ZlZAorK2VjaG8gIm9sZC1jb25maWd1cmUgZG9uZSIKK2RpZmYgLS1naXQgYS9tZW1vcnkvYnVpbGQvbW96LmJ1aWxkIGIvbWVtb3J5L2J1aWxkL21vei5idWlsZAoraW5kZXggZTJjNzE1MjcxLi5mMDljZTc5MzUgMTAwNjQ0CistLS0gYS9tZW1vcnkvYnVpbGQvbW96LmJ1aWxkCisrKysgYi9tZW1vcnkvYnVpbGQvbW96LmJ1aWxkCitAQCAtMzAsNyArMzAsNyBAQCBlbHNlOgorICAgICAgICAgJ2ZhbGxiYWNrLmNwcCcsCisgICAgIF0KKyAKKy1pZiBDT05GSUdbJ09TX1RBUkdFVCddID09ICdEYXJ3aW4nIGFuZCAoQ09ORklHWydNT1pfUkVQTEFDRV9NQUxMT0MnXSBvcgorK2lmIHN0cihDT05GSUdbJ09TX1RBUkdFVCddKSA9PSAnRGFyd2luJyBhbmQgKENPTkZJR1snTU9aX1JFUExBQ0VfTUFMTE9DJ10gb3IKKyAgICAgICAgIENPTkZJR1snTU9aX01FTU9SWSddKToKKyAgICAgU09VUkNFUyArPSBbCisgICAgICAgICAnem9uZS5jJywKK0BAIC0zOCwxNSArMzgsMTUgQEAgaWYgQ09ORklHWydPU19UQVJHRVQnXSA9PSAnRGFyd2luJyBhbmQgKENPTkZJR1snTU9aX1JFUExBQ0VfTUFMTE9DJ10gb3IKKyAKKyBMaWJyYXJ5KCdtZW1vcnknKQorIAorLWlmIENPTkZJR1snT1NfVEFSR0VUJ10gPT0gJ0FuZHJvaWQnIGFuZCBDT05GSUdbJ0NDX1RZUEUnXSA9PSAnY2xhbmcnOgorK2lmIHN0cihDT05GSUdbJ09TX1RBUkdFVCddKSA9PSAnQW5kcm9pZCcgYW5kIHN0cihDT05GSUdbJ0NDX1RZUEUnXSkgPT0gJ2NsYW5nJzoKKyAgICAgQ1hYRkxBR1MgKz0gWworICAgICAgICAgJy1Xbm8tdGF1dG9sb2dpY2FsLXBvaW50ZXItY29tcGFyZScsCisgICAgIF0KKyAKKy1pZiBDT05GSUdbJ01PWl9CVUlMRF9BUFAnXSAhPSAnbWVtb3J5JzoKKytpZiBzdHIoQ09ORklHWydNT1pfQlVJTERfQVBQJ10pICE9ICdtZW1vcnknOgorICAgICBGSU5BTF9MSUJSQVJZID0gJ21vemdsdWUnCisgCistaWYgQ09ORklHWydDQ19UWVBFJ10gaW4gKCdtc3ZjJywgJ2NsYW5nLWNsJyk6CisraWYgc3RyKENPTkZJR1snQ0NfVFlQRSddKSBpbiAoJ21zdmMnLCAnY2xhbmctY2wnKToKKyAgICAgQ1hYRkxBR1MgKz0gWyctd2Q0MjczJ10gIyBpbmNvbnNpc3RlbnQgZGxsIGxpbmthZ2UgKGJ1ZyA1NTgxNjMpCisgCisgaWYgQ09ORklHWydNT1pfUkVQTEFDRV9NQUxMT0NfU1RBVElDJ106CitkaWZmIC0tZ2l0IGEvbW96Z2x1ZS9idWlsZC9tb3ouYnVpbGQgYi9tb3pnbHVlL2J1aWxkL21vei5idWlsZAoraW5kZXggNTM3NTg0ODVhLi41ZTkzMDg4MDIgMTAwNjQ0CistLS0gYS9tb3pnbHVlL2J1aWxkL21vei5idWlsZAorKysrIGIvbW96Z2x1ZS9idWlsZC9tb3ouYnVpbGQKK0BAIC05LDEyICs5LDEyIEBACisgIyBJZiB0aGlzIGlzIGV2ZXIgY2hhbmdlZCwgdXBkYXRlIE1PWl9TSEFSRURfTU9aR0xVRSBpbiBicm93c2VyL2luc3RhbGxlci9NYWtlZmlsZS5pbgorIGlmIENPTkZJR1snSlNfU1RBTkRBTE9ORSddIGFuZCBub3QgQ09ORklHWydNT1pfTUVNT1JZJ106CisgICAgIExpYnJhcnkoJ21vemdsdWUnKQorLWVsaWYgQ09ORklHWydPU19UQVJHRVQnXSBpbiAoJ1dJTk5UJywgJ0RhcndpbicsICdBbmRyb2lkJyk6CisrZWxpZiBzdHIoQ09ORklHWydPU19UQVJHRVQnXSkgaW4gKCdXSU5OVCcsICdEYXJ3aW4nLCAnQW5kcm9pZCcpOgorICAgICBTaGFyZWRMaWJyYXJ5KCdtb3pnbHVlJykKKyBlbHNlOgorICAgICBMaWJyYXJ5KCdtb3pnbHVlJykKKyAKKy1pZiBDT05GSUdbJ09TX1RBUkdFVCddID09ICdBbmRyb2lkJzoKKytpZiBzdHIoQ09ORklHWydPU19UQVJHRVQnXSkgPT0gJ0FuZHJvaWQnOgorICAgICBTT1VSQ0VTICs9IFsKKyAgICAgICAgICdCaW9uaWNHbHVlLmNwcCcsCisgICAgIF0KK0BAIC0yNCwxNCArMjQsMTQgQEAgaWYgQ09ORklHWydNT1pfQVNBTiddOgorICAgICAgICAgJ0FzYW5PcHRpb25zLmNwcCcsCisgICAgIF0KKyAKKy1pZiBDT05GSUdbJ09TX1RBUkdFVCddID09ICdXSU5OVCc6CisraWYgc3RyKENPTkZJR1snT1NfVEFSR0VUJ10pID09ICdXSU5OVCc6CisgICAgIERFRkZJTEUgPSAnbW96Z2x1ZS5kZWYnCisgICAgICMgV2UnbGwgYnJlYWsgdGhlIERMTCBibG9ja2xpc3QgaWYgd2UgaW1tZWRpYXRlbHkgbG9hZCB1c2VyMzIuZGxsCisgICAgIERFTEFZTE9BRF9ETExTICs9IFsKKyAgICAgICAgICd1c2VyMzIuZGxsJywKKyAgICAgXQorIAorLSAgICBpZiBDT05GSUdbJ0NDX1RZUEUnXSA9PSAibXN2YyI6CisrICAgIGlmIHN0cihDT05GSUdbJ0NDX1RZUEUnXSkgPT0gIm1zdmMiOgorICAgICAgICAgQ0ZMQUdTICs9IFsnLWd1YXJkOmNmJ10KKyAgICAgICAgIENYWEZMQUdTICs9IFsnLWd1YXJkOmNmJ10KKyAgICAgICAgIExERkxBR1MgKz0gWyctZ3VhcmQ6Y2YnXQorQEAgLTQ4LDEyICs0OCwxMiBAQCBpZiBDT05GSUdbJ01PWl9XSURHRVRfVE9PTEtJVCddOgorICAgICAgICAgICAgICdkdW1teS5jcHAnLAorICAgICAgICAgXQorIAorLSAgICBpZiBDT05GSUdbJ09TX1RBUkdFVCddID09ICdXSU5OVCc6CisrICAgIGlmIHN0cihDT05GSUdbJ09TX1RBUkdFVCddKSA9PSAnV0lOTlQnOgorICAgICAgICAgTE9DQUxfSU5DTFVERVMgKz0gWworICAgICAgICAgICAgICcvbWVtb3J5L2J1aWxkJywKKyAgICAgICAgIF0KKyAKKy0gICAgICAgIGlmIENPTkZJR1snQ0NfVFlQRSddID09ICJtc3ZjIjoKKysgICAgICAgIGlmIHN0cihDT05GSUdbJ0NDX1RZUEUnXSkgPT0gIm1zdmMiOgorICAgICAgICAgICAgIFNPVVJDRVMgKz0gWydXaW5kb3dzQ0ZHU3RhdHVzLmNwcCddCisgICAgICAgICBTT1VSQ0VTICs9IFsKKyAgICAgICAgICAgICAnQXV0aGVudGljb2RlLmNwcCcsCitAQCAtODUsMTcgKzg1LDE3IEBAIGlmIENPTkZJR1snTU9aX1dJREdFVF9UT09MS0lUJ106CisgICAgICAgICAnV2luZG93c0RsbEJsb2NrbGlzdC5oJywKKyAgICAgXQorIAorLSAgICBpZiBDT05GSUdbJ0NQVV9BUkNIJ10uc3RhcnRzd2l0aCgneDg2Jyk6CisrICAgIGlmIHN0cihDT05GSUdbJ0NQVV9BUkNIJ10pLnN0YXJ0c3dpdGgoJ3g4NicpOgorICAgICAgICAgU09VUkNFUyArPSBbCisgICAgICAgICAgICAgJ1NTRS5jcHAnLAorICAgICAgICAgXQorIAorLSAgICBpZiBDT05GSUdbJ0NQVV9BUkNIJ10gPT0gJ2FybSc6CisrICAgIGlmIHN0cihDT05GSUdbJ0NQVV9BUkNIJ10pID09ICdhcm0nOgorICAgICAgICAgU09VUkNFUyArPSBbCisgICAgICAgICAgICAgJ2FybS5jcHAnLAorICAgICAgICAgXQorIAorLSAgICBpZiBDT05GSUdbJ0NQVV9BUkNIJ10uc3RhcnRzd2l0aCgnbWlwcycpOgorKyAgICBpZiBzdHIoQ09ORklHWydDUFVfQVJDSCddKS5zdGFydHN3aXRoKCdtaXBzJyk6CisgICAgICAgICBTT1VSQ0VTICs9IFsKKyAgICAgICAgICAgICAnbWlwcy5jcHAnLAorICAgICAgICAgXQorQEAgLTExNCw3ICsxMTQsNyBAQCBMSUJSQVJZX0RFRklORVNbJ01PWl9IQVNfTU9aR0xVRSddID0gVHJ1ZQorIAorIExERkxBR1MgKz0gQ09ORklHWydNT1pfR0xVRV9XUkFQX0xERkxBR1MnXQorIAorLWlmIENPTkZJR1snT1NfVEFSR0VUJ10gPT0gJ0Rhcndpbic6CisraWYgc3RyKENPTkZJR1snT1NfVEFSR0VUJ10pID09ICdEYXJ3aW4nOgorICAgICAjIE9uIE9TWCAxMC4xMC4zLCBhIGRlYWQgbG9jayBoYXBwZW5zIGluIHNvbWUgY2FzZXMgaW52b2x2aW5nIGR5bmFtaWMKKyAgICAgIyBzeW1ib2wgcmVzb2x1dGlvbiBmb3Igc3ltYm9scyB0aGF0IGplbWFsbG9jIGl0c2VsZiB1c2VzLiBXaGlsZSBpdAorICAgICAjIG1pZ2h0IGJlIHBvc3NpYmxlIHRvIGZpbmQgYSB3YXkgdG8gYXZvaWQgYWxsIHN1Y2ggc3ltYm9sIHJlc29sdXRpb25zLAorQEAgLTEyNCw3ICsxMjQsNyBAQCBpZiBDT05GSUdbJ09TX1RBUkdFVCddID09ICdEYXJ3aW4nOgorICAgICAjIGZvciBUTFMuCisgICAgIExERkxBR1MgKz0gWyctV2wsLWJpbmRfYXRfbG9hZCddCisgCistaWYgQ09ORklHWydNT1pfTElOS0VSJ10gYW5kIENPTkZJR1snVEFSR0VUX0NQVSddID09ICdhcm0nOgorK2lmIENPTkZJR1snTU9aX0xJTktFUiddIGFuZCBzdHIoQ09ORklHWydUQVJHRVRfQ1BVJ10pID09ICdhcm0nOgorICAgICBMREZMQUdTICs9IFsnLVdsLC12ZXJzaW9uLXNjcmlwdCwlcy9hcm0tZWFiaS1maWx0ZXInICUgU1JDRElSXQorIAorIERJU1RfSU5TVEFMTCA9IFRydWUKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYWN0aW9uL2NoZWNrX2JpbmFyeS5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9hY3Rpb24vY2hlY2tfYmluYXJ5LnB5CitpbmRleCA1NjY1ZWYwNTMuLmI2OTZmNzNkNiAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9hY3Rpb24vY2hlY2tfYmluYXJ5LnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYWN0aW9uL2NoZWNrX2JpbmFyeS5weQorQEAgLTEwNCw2ICsxMDQsOCBAQCBkZWYgaXRlcl9yZWFkZWxmX3N5bWJvbHModGFyZ2V0LCBiaW5hcnkpOgorIAorIGRlZiBpdGVyX3JlYWRlbGZfZHluYW1pYyh0YXJnZXQsIGJpbmFyeSk6CisgICAgIGZvciBsaW5lIGluIGdldF9vdXRwdXQodGFyZ2V0WydyZWFkZWxmJ10sICctZCcsIGJpbmFyeSk6CisrICAgICAgICBpZiBpc2luc3RhbmNlKGxpbmUsIGJ5dGVzKToKKysgICAgICAgICAgICBsaW5lPWxpbmUuZGVjb2RlKCd1dGYtOCcpCisgICAgICAgICBkYXRhID0gbGluZS5zcGxpdChOb25lLCAyKQorICAgICAgICAgaWYgZGF0YSBhbmQgbGVuKGRhdGEpID09IDMgYW5kIGRhdGFbMF0uc3RhcnRzd2l0aCgnMHgnKToKKyAgICAgICAgICAgICB5aWVsZCBkYXRhWzFdLnJzdHJpcCgnKScpLmxzdHJpcCgnKCcpLCBkYXRhWzJdCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2FjdGlvbi9wcm9jZXNzX2RlZmluZV9maWxlcy5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9hY3Rpb24vcHJvY2Vzc19kZWZpbmVfZmlsZXMucHkKK2luZGV4IDU2M2ZiYjhmYS4uYzNkZjI4NjliIDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2FjdGlvbi9wcm9jZXNzX2RlZmluZV9maWxlcy5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2FjdGlvbi9wcm9jZXNzX2RlZmluZV9maWxlcy5weQorQEAgLTIsNyArMiw3IEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbiwgdW5pY29kZV9saXRlcmFscworKworIAorIGltcG9ydCBhcmdwYXJzZQorIGltcG9ydCBvcworQEAgLTUzLDcgKzUzLDcgQEAgZGVmIHByb2Nlc3NfZGVmaW5lX2ZpbGUob3V0cHV0LCBpbnB1dCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ09ORklHVVJFX0RFRklORV9GSUxFJykKKyAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVzID0gJ1xuJy5qb2luKHNvcnRlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNkZWZpbmUgJXMgJXMnICUgKG5hbWUsIHZhbCkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZhbCBpbiBjb25maWcuZGVmaW5lc1snQUxMREVGSU5FUyddLml0ZXJpdGVtcygpKSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZhbCBpbiBjb25maWcuZGVmaW5lc1snQUxMREVGSU5FUyddLml0ZW1zKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBsWzptLnN0YXJ0KCdjbWQnKSAtIDFdIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBkZWZpbmVzICsgbFttLmVuZCgnbmFtZScpOl0KKyAgICAgICAgICAgICAgICAgICAgIGVsaWYgY21kID09ICdkZWZpbmUnOgorZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9iYWNrZW5kL2Jhc2UucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYmFja2VuZC9iYXNlLnB5CitpbmRleCBhOGQ1Yzk0ZTAuLjdjZGE2MzQ3NSAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9iYWNrZW5kL2Jhc2UucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9iYWNrZW5kL2Jhc2UucHkKK0BAIC0yLDcgKzIsNyBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgdW5pY29kZV9saXRlcmFscworKworIAorIGZyb20gYWJjIGltcG9ydCAoCisgICAgIEFCQ01ldGEsCitAQCAtMzEsNyArMzEsNyBAQCBmcm9tIC5jb25maWdlbnZpcm9ubWVudCBpbXBvcnQgQ29uZmlnRW52aXJvbm1lbnQKKyBmcm9tIG1vemJ1aWxkLmJhc2UgaW1wb3J0IEV4ZWN1dGlvblN1bW1hcnkKKyAKKyAKKy1jbGFzcyBCdWlsZEJhY2tlbmQoTG9nZ2luZ01peGluKToKKytjbGFzcyBCdWlsZEJhY2tlbmQoTG9nZ2luZ01peGluLCBtZXRhY2xhc3M9QUJDTWV0YSk6CisgICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGJ1aWxkIGJhY2tlbmRzLgorIAorICAgICBBIGJ1aWxkIGJhY2tlbmQgaXMgbWVyZWx5IGEgY29uc3VtZXIgb2YgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gKHRoZSBvdXRwdXQKK0BAIC0zOSw4ICszOSw2IEBAIGNsYXNzIEJ1aWxkQmFja2VuZChMb2dnaW5nTWl4aW4pOgorICAgICBpcyB0aGUgZGlzY3JldGlvbiBvZiB0aGUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24uCisgICAgICIiIgorIAorLSAgICBfX21ldGFjbGFzc19fID0gQUJDTWV0YQorLQorICAgICBkZWYgX19pbml0X18oc2VsZiwgZW52aXJvbm1lbnQpOgorICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZW52aXJvbm1lbnQsIChDb25maWdFbnZpcm9ubWVudCwgRW1wdHlDb25maWcpKQorICAgICAgICAgc2VsZi5wb3B1bGF0ZV9sb2dnZXIoKQorQEAgLTMxMSw3ICszMDksNyBAQCBjbGFzcyBCdWlsZEJhY2tlbmQoTG9nZ2luZ01peGluKToKKyAgICAgICAgIHNyY2RpciA9IG1venBhdGguZGlybmFtZShvYmouaW5wdXRfcGF0aCkKKyAgICAgICAgIHBwLmNvbnRleHQudXBkYXRlKHsKKyAgICAgICAgICAgICBrOiAnICcuam9pbih2KSBpZiBpc2luc3RhbmNlKHYsIGxpc3QpIGVsc2UgdgorLSAgICAgICAgICAgIGZvciBrLCB2IGluIG9iai5jb25maWcuc3Vic3RzLml0ZXJpdGVtcygpCisrICAgICAgICAgICAgZm9yIGssIHYgaW4gb2JqLmNvbmZpZy5zdWJzdHMuaXRlbXMoKQorICAgICAgICAgfSkKKyAgICAgICAgIHBwLmNvbnRleHQudXBkYXRlKAorICAgICAgICAgICAgIHRvcF9zcmNkaXI9b2JqLnRvcHNyY2RpciwKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYmFja2VuZC9jb21tb24ucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYmFja2VuZC9jb21tb24ucHkKK2luZGV4IGQwMGNiYmNhZi4uZjc0N2RmNDQ2IDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2JhY2tlbmQvY29tbW9uLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYmFja2VuZC9jb21tb24ucHkKK0BAIC0yLDcgKzIsNyBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgdW5pY29kZV9saXRlcmFscworKworIAorIGltcG9ydCBqc29uCisgaW1wb3J0IG9zCitAQCAtMTc0LDcgKzE3NCw3IEBAIGNsYXNzIENvbW1vbkJhY2tlbmQoQnVpbGRCYWNrZW5kKToKKyAgICAgICAgIGlmIGxlbihzZWxmLl9pZGxfbWFuYWdlci5pZGxzKToKKyAgICAgICAgICAgICBzZWxmLl93cml0ZV9ydXN0X3hwaWRsX3N1bW1hcnkoc2VsZi5faWRsX21hbmFnZXIpCisgICAgICAgICAgICAgc2VsZi5faGFuZGxlX2lkbF9tYW5hZ2VyKHNlbGYuX2lkbF9tYW5hZ2VyKQorLSAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9nZW5lcmF0ZWRfc291cmNlcyhtb3pwYXRoLmpvaW4oc2VsZi5lbnZpcm9ubWVudC50b3BvYmpkaXIsICdkaXN0L2luY2x1ZGUvJXMuaCcgJSBpZGxbJ3Jvb3QnXSkgZm9yIGlkbCBpbiBzZWxmLl9pZGxfbWFuYWdlci5pZGxzLnZhbHVlcygpKQorKyAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9nZW5lcmF0ZWRfc291cmNlcyhtb3pwYXRoLmpvaW4oc2VsZi5lbnZpcm9ubWVudC50b3BvYmpkaXIsICdkaXN0L2luY2x1ZGUvJXMuaCcgJSBpZGxbJ3Jvb3QnXSkgZm9yIGlkbCBpbiBsaXN0KHNlbGYuX2lkbF9tYW5hZ2VyLmlkbHMudmFsdWVzKCkpKQorIAorIAorICAgICAgICAgZm9yIGNvbmZpZyBpbiBzZWxmLl9jb25maWdzOgorQEAgLTM3MiwxNCArMzcyLDE0IEBAIGNsYXNzIENvbW1vbkJhY2tlbmQoQnVpbGRCYWNrZW5kKToKKyAKKyAgICAgICAgIHdpdGggc2VsZi5fd3JpdGVfZmlsZShtb3pwYXRoLmpvaW4odG9wb2JqZGlyLCAnZGlzdCcsICd4cGNycycsICdydCcsICdhbGwucnMnKSkgYXMgZmg6CisgICAgICAgICAgICAgZmgud3JpdGUoIi8vIFRISVMgRklMRSBJUyBHRU5FUkFURUQgLSBETyBOT1QgRURJVFxuXG4iKQorLSAgICAgICAgICAgIGZvciBpZGwgaW4gbWFuYWdlci5pZGxzLnZhbHVlcygpOgorKyAgICAgICAgICAgIGZvciBpZGwgaW4gbGlzdChtYW5hZ2VyLmlkbHMudmFsdWVzKCkpOgorICAgICAgICAgICAgICAgICBmaC53cml0ZShpbmNsdWRlX3RtcGwgJSAoInJ0IiwgaWRsWydyb290J10pKQorICAgICAgICAgICAgICAgICBmaC53cml0ZSgiO1xuIikKKyAKKyAgICAgICAgIHdpdGggc2VsZi5fd3JpdGVfZmlsZShtb3pwYXRoLmpvaW4odG9wb2JqZGlyLCAnZGlzdCcsICd4cGNycycsICdidCcsICdhbGwucnMnKSkgYXMgZmg6CisgICAgICAgICAgICAgZmgud3JpdGUoIi8vIFRISVMgRklMRSBJUyBHRU5FUkFURUQgLSBETyBOT1QgRURJVFxuXG4iKQorICAgICAgICAgICAgIGZoLndyaXRlKCImW1xuIikKKy0gICAgICAgICAgICBmb3IgaWRsIGluIG1hbmFnZXIuaWRscy52YWx1ZXMoKToKKysgICAgICAgICAgICBmb3IgaWRsIGluIGxpc3QobWFuYWdlci5pZGxzLnZhbHVlcygpKToKKyAgICAgICAgICAgICAgICAgZmgud3JpdGUoaW5jbHVkZV90bXBsICUgKCJidCIsIGlkbFsncm9vdCddKSkKKyAgICAgICAgICAgICAgICAgZmgud3JpdGUoIixcbiIpCisgICAgICAgICAgICAgZmgud3JpdGUoIl1cbiIpCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2JhY2tlbmQvY29uZmlnZW52aXJvbm1lbnQucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYmFja2VuZC9jb25maWdlbnZpcm9ubWVudC5weQoraW5kZXggMzY3NmE3ZDE4Li5mMDg5NmNlYTQgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYmFja2VuZC9jb25maWdlbnZpcm9ubWVudC5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2JhY2tlbmQvY29uZmlnZW52aXJvbm1lbnQucHkKK0BAIC0yLDE0ICsyLDE0IEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisrCisgCisgaW1wb3J0IG9zCisgaW1wb3J0IHN5cworIGltcG9ydCBqc29uCisgCisgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgSXRlcmFibGUsIE9yZGVyZWREaWN0CistZnJvbSB0eXBlcyBpbXBvcnQgU3RyaW5nVHlwZXMsIE1vZHVsZVR5cGUKKytmcm9tIHR5cGVzIGltcG9ydCBNb2R1bGVUeXBlCisgCisgaW1wb3J0IG1venBhY2sucGF0aCBhcyBtb3pwYXRoCisgCitAQCAtMjIsNyArMjIsNyBAQCBmcm9tIG1vemJ1aWxkLnNoZWxsdXRpbCBpbXBvcnQgcXVvdGUgYXMgc2hlbGxfcXVvdGUKKyAKKyAKKyBpZiBzeXMudmVyc2lvbl9pbmZvLm1ham9yID09IDI6CistICAgIHRleHRfdHlwZSA9IHVuaWNvZGUKKysgICAgdGV4dF90eXBlID0gc3RyCisgZWxzZToKKyAgICAgdGV4dF90eXBlID0gc3RyCisgCitAQCAtMTUxLDcgKzE1MSw3IEBAIGNsYXNzIENvbmZpZ0Vudmlyb25tZW50KG9iamVjdCk6CisgICAgICAgICAgICAgc2hlbGxfcXVvdGUoc2VsZi5kZWZpbmVzW25hbWVdKS5yZXBsYWNlKCckJywgJyQkJykpCisgICAgICAgICAgICAgZm9yIG5hbWUgaW4gc29ydGVkKGdsb2JhbF9kZWZpbmVzKV0pCisgICAgICAgICBkZWYgc2VyaWFsaXplKG5hbWUsIG9iaik6CistICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIFN0cmluZ1R5cGVzKToKKysgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwgc3RyKToKKyAgICAgICAgICAgICAgICAgcmV0dXJuIG9iagorICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBJdGVyYWJsZSk6CisgICAgICAgICAgICAgICAgIHJldHVybiAnICcuam9pbihvYmopCitAQCAtMTg1LDggKzE4NSw4IEBAIGNsYXNzIENvbmZpZ0Vudmlyb25tZW50KG9iamVjdCk6CisgICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdi5kZWNvZGUoJ3V0Zi04JywgJ3JlcGxhY2UnKQorIAorLSAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5zdWJzdHMuaXRlbXMoKToKKy0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2LCBTdHJpbmdUeXBlcyk6CisrICAgICAgICBmb3IgaywgdiBpbiBsaXN0KHNlbGYuc3Vic3RzLml0ZW1zKCkpOgorKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHYsIHN0cik6CisgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodiwgSXRlcmFibGUpOgorICAgICAgICAgICAgICAgICAgICAgdHlwZSh2KShkZWNvZGUoaSkgZm9yIGkgaW4gdikKKyAgICAgICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHYsIHRleHRfdHlwZSk6CitAQCAtMjU1LDcgKzI1NSw3IEBAIGNsYXNzIFBhcnRpYWxDb25maWdEaWN0KG9iamVjdCk6CisgICAgICAgICBleGlzdGluZ19maWxlcyA9IHNlbGYuX2xvYWRfY29uZmlnX3RyYWNrKCkKKyAKKyAgICAgICAgIG5ld19maWxlcyA9IHNldCgpCistICAgICAgICBmb3IgaywgdiBpbiB2YWx1ZXMuaXRlcml0ZW1zKCk6CisrICAgICAgICBmb3IgaywgdiBpbiB2YWx1ZXMuaXRlbXMoKToKKyAgICAgICAgICAgICBuZXdfZmlsZXMuYWRkKHNlbGYuX3dyaXRlX2ZpbGUoaywgdikpCisgCisgICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZXhpc3RpbmdfZmlsZXMgLSBuZXdfZmlsZXM6CitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2JhY2tlbmQvZmFzdGVybWFrZS5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9iYWNrZW5kL2Zhc3Rlcm1ha2UucHkKK2luZGV4IGIwMjlhYTEwZi4uYjY2YWRlNjRmIDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2JhY2tlbmQvZmFzdGVybWFrZS5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2JhY2tlbmQvZmFzdGVybWFrZS5weQorQEAgLTIsNyArMiw3IEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCB1bmljb2RlX2xpdGVyYWxzLCBwcmludF9mdW5jdGlvbgorKworIAorIGZyb20gbW96YnVpbGQuYmFja2VuZC5iYXNlIGltcG9ydCBQYXJ0aWFsQmFja2VuZAorIGZyb20gbW96YnVpbGQuYmFja2VuZC5jb21tb24gaW1wb3J0IENvbW1vbkJhY2tlbmQKK0BAIC0xNDAsNyArMTQwLDcgQEAgY2xhc3MgRmFzdGVyTWFrZUJhY2tlbmQoQ29tbW9uQmFja2VuZCwgUGFydGlhbEJhY2tlbmQpOgorICAgICAgICAgIyBBZGQgaW5mb3JtYXRpb24gZm9yIGNocm9tZSBtYW5pZmVzdCBnZW5lcmF0aW9uCisgICAgICAgICBtYW5pZmVzdF90YXJnZXRzID0gW10KKyAKKy0gICAgICAgIGZvciB0YXJnZXQsIGVudHJpZXMgaW4gc2VsZi5fbWFuaWZlc3RfZW50cmllcy5pdGVyaXRlbXMoKToKKysgICAgICAgIGZvciB0YXJnZXQsIGVudHJpZXMgaW4gc2VsZi5fbWFuaWZlc3RfZW50cmllcy5pdGVtcygpOgorICAgICAgICAgICAgIG1hbmlmZXN0X3RhcmdldHMuYXBwZW5kKHRhcmdldCkKKyAgICAgICAgICAgICBpbnN0YWxsX3RhcmdldCA9IG1venBhdGguYmFzZWRpcih0YXJnZXQsIGluc3RhbGxfbWFuaWZlc3RzX2Jhc2VzKQorICAgICAgICAgICAgIHNlbGYuX2luc3RhbGxfbWFuaWZlc3RzW2luc3RhbGxfdGFyZ2V0XS5hZGRfY29udGVudCgKK0BAIC0xNTIsMTMgKzE1MiwxMyBAQCBjbGFzcyBGYXN0ZXJNYWtlQmFja2VuZChDb21tb25CYWNrZW5kLCBQYXJ0aWFsQmFja2VuZCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICUgJyAnLmpvaW4oc2VsZi5faW5zdGFsbF9tYW5pZmVzdHMua2V5cygpKSkKKyAKKyAgICAgICAgICMgQWRkIGRlcGVuZGVuY2llcyB3ZSBpbmZlcmVkOgorLSAgICAgICAgZm9yIHRhcmdldCwgZGVwcyBpbiBzZWxmLl9kZXBlbmRlbmNpZXMuaXRlcml0ZW1zKCk6CisrICAgICAgICBmb3IgdGFyZ2V0LCBkZXBzIGluIHNlbGYuX2RlcGVuZGVuY2llcy5pdGVtcygpOgorICAgICAgICAgICAgIG1rLmNyZWF0ZV9ydWxlKFt0YXJnZXRdKS5hZGRfZGVwZW5kZW5jaWVzKAorICAgICAgICAgICAgICAgICAnJChUT1BPQkpESVIpLyVzJyAlIGQgZm9yIGQgaW4gZGVwcykKKyAKKyAgICAgICAgIG1rLmFkZF9zdGF0ZW1lbnQoJ2luY2x1ZGUgJChUT1BTUkNESVIpL2NvbmZpZy9mYXN0ZXIvcnVsZXMubWsnKQorIAorLSAgICAgICAgZm9yIGJhc2UsIGluc3RhbGxfbWFuaWZlc3QgaW4gc2VsZi5faW5zdGFsbF9tYW5pZmVzdHMuaXRlcml0ZW1zKCk6CisrICAgICAgICBmb3IgYmFzZSwgaW5zdGFsbF9tYW5pZmVzdCBpbiBzZWxmLl9pbnN0YWxsX21hbmlmZXN0cy5pdGVtcygpOgorICAgICAgICAgICAgIHdpdGggc2VsZi5fd3JpdGVfZmlsZSgKKyAgICAgICAgICAgICAgICAgICAgIG1venBhdGguam9pbihzZWxmLmVudmlyb25tZW50LnRvcG9iamRpciwgJ2Zhc3RlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luc3RhbGxfJXMnICUgYmFzZS5yZXBsYWNlKCcvJywgJ18nKSkpIGFzIGZoOgorQEAgLTE2Nyw3ICsxNjcsNyBAQCBjbGFzcyBGYXN0ZXJNYWtlQmFja2VuZChDb21tb25CYWNrZW5kLCBQYXJ0aWFsQmFja2VuZCk6CisgICAgICAgICAjIEZvciBhcnRpZmFjdCBidWlsZHMgb25seSwgd3JpdGUgYSBzaW5nbGUgdW5pZmllZCBtYW5pZmVzdCBmb3IgY29uc3VtcHRpb24gYnkgfG1hY2ggd2F0Y2h8LgorICAgICAgICAgaWYgc2VsZi5lbnZpcm9ubWVudC5pc19hcnRpZmFjdF9idWlsZDoKKyAgICAgICAgICAgICB1bmlmaWVkX21hbmlmZXN0ID0gSW5zdGFsbE1hbmlmZXN0KCkKKy0gICAgICAgICAgICBmb3IgYmFzZSwgaW5zdGFsbF9tYW5pZmVzdCBpbiBzZWxmLl9pbnN0YWxsX21hbmlmZXN0cy5pdGVyaXRlbXMoKToKKysgICAgICAgICAgICBmb3IgYmFzZSwgaW5zdGFsbF9tYW5pZmVzdCBpbiBzZWxmLl9pbnN0YWxsX21hbmlmZXN0cy5pdGVtcygpOgorICAgICAgICAgICAgICAgICAjIEV4cGVjdCAnZGlzdC9iaW4vKionLCB3aGljaCBpbmNsdWRlcyAnZGlzdC9iaW4nIHdpdGggbm8gdHJhaWxpbmcgc2xhc2guCisgICAgICAgICAgICAgICAgIGFzc2VydCBiYXNlLnN0YXJ0c3dpdGgoJ2Rpc3QvYmluJykKKyAgICAgICAgICAgICAgICAgYmFzZSA9IGJhc2VbbGVuKCdkaXN0L2JpbicpOl0KK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYmFja2VuZC9yZWN1cnNpdmVtYWtlLnB5IGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2JhY2tlbmQvcmVjdXJzaXZlbWFrZS5weQoraW5kZXggZGQ5MDIwZDYyLi5hYTg5Y2MyOTcgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYmFja2VuZC9yZWN1cnNpdmVtYWtlLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYmFja2VuZC9yZWN1cnNpdmVtYWtlLnB5CitAQCAtMiw3ICsyLDcgQEAKKyAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKKyAjIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCisgCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIHVuaWNvZGVfbGl0ZXJhbHMKKysKKyAKKyBpbXBvcnQgbG9nZ2luZworIGltcG9ydCBvcworQEAgLTEyLDcgKzEyLDcgQEAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgKAorICAgICBkZWZhdWx0ZGljdCwKKyAgICAgbmFtZWR0dXBsZSwKKyApCistZnJvbSBTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KKytmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworIGZyb20gaXRlcnRvb2xzIGltcG9ydCBjaGFpbgorIAorIGZyb20gbW96cGFjay5tYW5pZmVzdHMgaW1wb3J0ICgKK0BAIC04MCw3NSArODAsNzYgQEAgZnJvbSAuLnV0aWwgaW1wb3J0ICgKKyApCisgZnJvbSAuLm1ha2V1dGlsIGltcG9ydCBNYWtlZmlsZQorIGZyb20gbW96YnVpbGQuc2hlbGx1dGlsIGltcG9ydCBxdW90ZSBhcyBzaGVsbF9xdW90ZQorK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCByZWR1Y2UKKyAKKyBNT1pCVUlMRF9WQVJJQUJMRVMgPSBbCistICAgIGInQVNGTEFHUycsCistICAgIGInQ01TUkNTJywKKy0gICAgYidDTU1TUkNTJywKKy0gICAgYidDUFBfVU5JVF9URVNUUycsCistICAgIGInRElSUycsCistICAgIGInRElTVF9JTlNUQUxMJywKKy0gICAgYidFWFRSQV9EU09fTERPUFRTJywKKy0gICAgYidFWFRSQV9KU19NT0RVTEVTJywKKy0gICAgYidFWFRSQV9QUF9DT01QT05FTlRTJywKKy0gICAgYidFWFRSQV9QUF9KU19NT0RVTEVTJywKKy0gICAgYidGT1JDRV9TSEFSRURfTElCJywKKy0gICAgYidGT1JDRV9TVEFUSUNfTElCJywKKy0gICAgYidGSU5BTF9MSUJSQVJZJywKKy0gICAgYidIT1NUX0NGTEFHUycsCistICAgIGInSE9TVF9DU1JDUycsCistICAgIGInSE9TVF9DTU1TUkNTJywKKy0gICAgYidIT1NUX0NYWEZMQUdTJywKKy0gICAgYidIT1NUX0VYVFJBX0xJQlMnLAorLSAgICBiJ0hPU1RfTElCUkFSWV9OQU1FJywKKy0gICAgYidIT1NUX1BST0dSQU0nLAorLSAgICBiJ0hPU1RfU0lNUExFX1BST0dSQU1TJywKKy0gICAgYidKQVJfTUFOSUZFU1QnLAorLSAgICBiJ0pBVkFfSkFSX1RBUkdFVFMnLAorLSAgICBiJ0xJQlJBUllfTkFNRScsCistICAgIGInTElCUycsCistICAgIGInTUFLRV9GUkFNRVdPUksnLAorLSAgICBiJ01PRFVMRScsCistICAgIGInTk9fRElTVF9JTlNUQUxMJywKKy0gICAgYidOT19FWFBBTkRfTElCUycsCistICAgIGInTk9fSU5URVJGQUNFU19NQU5JRkVTVCcsCistICAgIGInTk9fSlNfTUFOSUZFU1QnLAorLSAgICBiJ09TX0xJQlMnLAorLSAgICBiJ1BBUkFMTEVMX0RJUlMnLAorLSAgICBiJ1BSRUZfSlNfRVhQT1JUUycsCistICAgIGInUFJPR1JBTScsCistICAgIGInUkVTT1VSQ0VfRklMRVMnLAorLSAgICBiJ1NIQVJFRF9MSUJSQVJZX0xJQlMnLAorLSAgICBiJ1NIQVJFRF9MSUJSQVJZX05BTUUnLAorLSAgICBiJ1NJTVBMRV9QUk9HUkFNUycsCistICAgIGInU09OQU1FJywKKy0gICAgYidTVEFUSUNfTElCUkFSWV9OQU1FJywKKy0gICAgYidURVNUX0RJUlMnLAorLSAgICBiJ1RPT0xfRElSUycsCisrICAgICdBU0ZMQUdTJywKKysgICAgJ0NNU1JDUycsCisrICAgICdDTU1TUkNTJywKKysgICAgJ0NQUF9VTklUX1RFU1RTJywKKysgICAgJ0RJUlMnLAorKyAgICAnRElTVF9JTlNUQUxMJywKKysgICAgJ0VYVFJBX0RTT19MRE9QVFMnLAorKyAgICAnRVhUUkFfSlNfTU9EVUxFUycsCisrICAgICdFWFRSQV9QUF9DT01QT05FTlRTJywKKysgICAgJ0VYVFJBX1BQX0pTX01PRFVMRVMnLAorKyAgICAnRk9SQ0VfU0hBUkVEX0xJQicsCisrICAgICdGT1JDRV9TVEFUSUNfTElCJywKKysgICAgJ0ZJTkFMX0xJQlJBUlknLAorKyAgICAnSE9TVF9DRkxBR1MnLAorKyAgICAnSE9TVF9DU1JDUycsCisrICAgICdIT1NUX0NNTVNSQ1MnLAorKyAgICAnSE9TVF9DWFhGTEFHUycsCisrICAgICdIT1NUX0VYVFJBX0xJQlMnLAorKyAgICAnSE9TVF9MSUJSQVJZX05BTUUnLAorKyAgICAnSE9TVF9QUk9HUkFNJywKKysgICAgJ0hPU1RfU0lNUExFX1BST0dSQU1TJywKKysgICAgJ0pBUl9NQU5JRkVTVCcsCisrICAgICdKQVZBX0pBUl9UQVJHRVRTJywKKysgICAgJ0xJQlJBUllfTkFNRScsCisrICAgICdMSUJTJywKKysgICAgJ01BS0VfRlJBTUVXT1JLJywKKysgICAgJ01PRFVMRScsCisrICAgICdOT19ESVNUX0lOU1RBTEwnLAorKyAgICAnTk9fRVhQQU5EX0xJQlMnLAorKyAgICAnTk9fSU5URVJGQUNFU19NQU5JRkVTVCcsCisrICAgICdOT19KU19NQU5JRkVTVCcsCisrICAgICdPU19MSUJTJywKKysgICAgJ1BBUkFMTEVMX0RJUlMnLAorKyAgICAnUFJFRl9KU19FWFBPUlRTJywKKysgICAgJ1BST0dSQU0nLAorKyAgICAnUkVTT1VSQ0VfRklMRVMnLAorKyAgICAnU0hBUkVEX0xJQlJBUllfTElCUycsCisrICAgICdTSEFSRURfTElCUkFSWV9OQU1FJywKKysgICAgJ1NJTVBMRV9QUk9HUkFNUycsCisrICAgICdTT05BTUUnLAorKyAgICAnU1RBVElDX0xJQlJBUllfTkFNRScsCisrICAgICdURVNUX0RJUlMnLAorKyAgICAnVE9PTF9ESVJTJywKKyAgICAgIyBYWFggY29uZmlnL01ha2VmaWxlLmluIHNwZWNpZmllcyB0aGlzIGluIGEgbWFrZSBpbnZvY2F0aW9uCisgICAgICMnVVNFX0VYVEVOU0lPTl9NQU5JRkVTVCcsCistICAgIGInWFBDU0hFTExfVEVTVFMnLAorLSAgICBiJ1hQSURMX01PRFVMRScsCisrICAgICdYUENTSEVMTF9URVNUUycsCisrICAgICdYUElETF9NT0RVTEUnLAorIF0KKyAKKyBERVBSRUNBVEVEX1ZBUklBQkxFUyA9IFsKKy0gICAgYidFWFBPUlRfTElCUkFSWScsCistICAgIGInRVhUUkFfTElCUycsCistICAgIGInSE9TVF9MSUJTJywKKy0gICAgYidMSUJYVUxfTElCUkFSWScsCistICAgIGInTU9DSElURVNUX0ExMVlfRklMRVMnLAorLSAgICBiJ01PQ0hJVEVTVF9CUk9XU0VSX0ZJTEVTJywKKy0gICAgYidNT0NISVRFU1RfQlJPV1NFUl9GSUxFU19QQVJUUycsCistICAgIGInTU9DSElURVNUX0NIUk9NRV9GSUxFUycsCistICAgIGInTU9DSElURVNUX0ZJTEVTJywKKy0gICAgYidNT0NISVRFU1RfRklMRVNfUEFSVFMnLAorLSAgICBiJ01PQ0hJVEVTVF9NRVRST19GSUxFUycsCistICAgIGInTU9DSElURVNUX1JPQk9DT1BfRklMRVMnLAorLSAgICBiJ01PRFVMRV9PUFRJTUlaRV9GTEFHUycsCistICAgIGInTU9aX0NIUk9NRV9GSUxFX0ZPUk1BVCcsCistICAgIGInU0hPUlRfTElCTkFNRScsCistICAgIGInVEVTVElOR19KU19NT0RVTEVTJywKKy0gICAgYidURVNUSU5HX0pTX01PRFVMRV9ESVInLAorKyAgICAnRVhQT1JUX0xJQlJBUlknLAorKyAgICAnRVhUUkFfTElCUycsCisrICAgICdIT1NUX0xJQlMnLAorKyAgICAnTElCWFVMX0xJQlJBUlknLAorKyAgICAnTU9DSElURVNUX0ExMVlfRklMRVMnLAorKyAgICAnTU9DSElURVNUX0JST1dTRVJfRklMRVMnLAorKyAgICAnTU9DSElURVNUX0JST1dTRVJfRklMRVNfUEFSVFMnLAorKyAgICAnTU9DSElURVNUX0NIUk9NRV9GSUxFUycsCisrICAgICdNT0NISVRFU1RfRklMRVMnLAorKyAgICAnTU9DSElURVNUX0ZJTEVTX1BBUlRTJywKKysgICAgJ01PQ0hJVEVTVF9NRVRST19GSUxFUycsCisrICAgICdNT0NISVRFU1RfUk9CT0NPUF9GSUxFUycsCisrICAgICdNT0RVTEVfT1BUSU1JWkVfRkxBR1MnLAorKyAgICAnTU9aX0NIUk9NRV9GSUxFX0ZPUk1BVCcsCisrICAgICdTSE9SVF9MSUJOQU1FJywKKysgICAgJ1RFU1RJTkdfSlNfTU9EVUxFUycsCisrICAgICdURVNUSU5HX0pTX01PRFVMRV9ESVInLAorIF0KKyAKKyBNT1pCVUlMRF9WQVJJQUJMRVNfTUVTU0FHRSA9ICdJdCBzaG91bGQgb25seSBiZSBkZWZpbmVkIGluIG1vei5idWlsZCBmaWxlcy4nCitAQCAtMjA3LDcgKzIwOCw3IEBAIGNsYXNzIEJhY2tlbmRNYWtlRmlsZShvYmplY3QpOgorICAgICAgICAgc2VsZi5maC53cml0ZShidWYpCisgCisgICAgIGRlZiB3cml0ZV9vbmNlKHNlbGYsIGJ1Zik6CistICAgICAgICBpZiBpc2luc3RhbmNlKGJ1ZiwgdW5pY29kZSk6CisrICAgICAgICBpZiBpc2luc3RhbmNlKGJ1Ziwgc3RyKToKKyAgICAgICAgICAgICBidWYgPSBidWYuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgICBpZiBiJ1xuJyArIGJ1ZiBub3QgaW4gc2VsZi5maC5nZXR2YWx1ZSgpOgorICAgICAgICAgICAgIHNlbGYud3JpdGUoYnVmKQorQEAgLTI4MCw3ICsyODEsNyBAQCBjbGFzcyBSZWN1cnNpdmVNYWtlVHJhdmVyc2FsKG9iamVjdCk6CisgICAgICAgICBIZWxwZXIgZnVuY3Rpb24gdG8gY2FsbCBhIGZpbHRlciBmcm9tIGNvbXB1dGVfZGVwZW5kZW5jaWVzIGFuZAorICAgICAgICAgdHJhdmVyc2UuCisgICAgICAgICAiIiIKKy0gICAgICAgIHJldHVybiBmaWx0ZXIoY3VycmVudCwgc2VsZi5nZXRfc3ViZGlycyhjdXJyZW50KSkKKysgICAgICAgIHJldHVybiBsaXN0KGZpbHRlcihjdXJyZW50LCBzZWxmLmdldF9zdWJkaXJzKGN1cnJlbnQpKSkKKyAKKyAgICAgZGVmIGNvbXB1dGVfZGVwZW5kZW5jaWVzKHNlbGYsIGZpbHRlcj1Ob25lKToKKyAgICAgICAgICIiIgorQEAgLTcxMCw3ICs3MTEsNyBAQCBjbGFzcyBSZWN1cnNpdmVNYWtlQmFja2VuZChDb21tb25CYWNrZW5kKToKKyAgICAgICAgIGNvbnZlbmllbmNlIHZhcmlhYmxlcywgYW5kIHRoZSBvdGhlciBkZXBlbmRlbmN5IGRlZmluaXRpb25zIGZvciBhCisgICAgICAgICBob3BlZnVsbHkgcHJvcGVyIGRpcmVjdG9yeSB0cmF2ZXJzYWwuCisgICAgICAgICAiIiIKKy0gICAgICAgIGZvciB0aWVyLCBub19za2lwIGluIHNlbGYuX25vX3NraXAuaXRlbXMoKToKKysgICAgICAgIGZvciB0aWVyLCBub19za2lwIGluIGxpc3Qoc2VsZi5fbm9fc2tpcC5pdGVtcygpKToKKyAgICAgICAgICAgICBzZWxmLmxvZyhsb2dnaW5nLkRFQlVHLCAnZmlsbF9yb290X21rJywgeworICAgICAgICAgICAgICAgICAnbnVtYmVyJzogbGVuKG5vX3NraXApLCAndGllcic6IHRpZXIKKyAgICAgICAgICAgICAgICAgfSwgJ1VzaW5nIHtudW1iZXJ9IGRpcmVjdG9yaWVzIGR1cmluZyB7dGllcn0nKQorQEAgLTc1Nyw3ICs3NTgsNyBAQCBjbGFzcyBSZWN1cnNpdmVNYWtlQmFja2VuZChDb21tb25CYWNrZW5kKToKKyAgICAgICAgIGZvciB0aWVyLCBmaWx0ZXIgaW4gZmlsdGVyczoKKyAgICAgICAgICAgICBtYWluLCBhbGxfZGVwcyA9IFwKKyAgICAgICAgICAgICAgICAgc2VsZi5fdHJhdmVyc2FsLmNvbXB1dGVfZGVwZW5kZW5jaWVzKGZpbHRlcikKKy0gICAgICAgICAgICBmb3IgZGlyLCBkZXBzIGluIGFsbF9kZXBzLml0ZW1zKCk6CisrICAgICAgICAgICAgZm9yIGRpciwgZGVwcyBpbiBsaXN0KGFsbF9kZXBzLml0ZW1zKCkpOgorICAgICAgICAgICAgICAgICBpZiBkZXBzIGlzIG5vdCBOb25lIG9yIChkaXIgaW4gc2VsZi5faWRsX2RpcnMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGllciA9PSAnZXhwb3J0Jyk6CisgICAgICAgICAgICAgICAgICAgICBydWxlID0gcm9vdF9kZXBzX21rLmNyZWF0ZV9ydWxlKFsnJXMvJXMnICUgKGRpciwgdGllcildKQorQEAgLTc3MCw3ICs3NzEsNyBAQCBjbGFzcyBSZWN1cnNpdmVNYWtlQmFja2VuZChDb21tb25CYWNrZW5kKToKKyAgICAgICAgICAgICAgICAgcnVsZS5hZGRfZGVwZW5kZW5jaWVzKCclcy8lcycgJSAoZCwgdGllcikgZm9yIGQgaW4gbWFpbikKKyAKKyAgICAgICAgIGFsbF9jb21waWxlX2RlcHMgPSByZWR1Y2UobGFtYmRhIHgseTogeHx5LAorLSAgICAgICAgICAgIHNlbGYuX2NvbXBpbGVfZ3JhcGgudmFsdWVzKCkpIGlmIHNlbGYuX2NvbXBpbGVfZ3JhcGggZWxzZSBzZXQoKQorKyAgICAgICAgICAgIGxpc3Qoc2VsZi5fY29tcGlsZV9ncmFwaC52YWx1ZXMoKSkpIGlmIHNlbGYuX2NvbXBpbGVfZ3JhcGggZWxzZSBzZXQoKQorICAgICAgICAgIyBJbmNsdWRlIHRoZSBmb2xsb3dpbmcgYXMgZGVwZW5kZW5jaWVzIG9mIHRoZSB0b3AgcmVjdXJzaW9uIHRhcmdldCBmb3IKKyAgICAgICAgICMgY29tcGlsYXRpb246CisgICAgICAgICAjIC0gbm9kZXMgdGhhdCBhcmUgbm90IGRlcGVuZGVuZGVkIHVwb24gYnkgYW55dGhpbmcuIFR5cGljYWxseSwgdGhpcworQEAgLTc4Myw3ICs3ODQsNyBAQCBjbGFzcyBSZWN1cnNpdmVNYWtlQmFja2VuZChDb21tb25CYWNrZW5kKToKKyAgICAgICAgICMgICBhcyBkaXJlY3QgZGVwZW5kZW5jaWVzIG9mIHRoZSB0b3AgcmVjdXJzaW9uIHRhcmdldCwgdG8gc29tZWhvdworICAgICAgICAgIyAgIHByaW9yaXRpemUgdGhlbS4KKyAgICAgICAgICMgICAxLiBTZWUgYnVnIDEyNjIyNDEgY29tbWVudCA1LgorLSAgICAgICAgY29tcGlsZV9yb290cyA9IFt0IGZvciB0LCBkZXBzIGluIHNlbGYuX2NvbXBpbGVfZ3JhcGguaXRlcml0ZW1zKCkKKysgICAgICAgIGNvbXBpbGVfcm9vdHMgPSBbdCBmb3IgdCwgZGVwcyBpbiBsaXN0KHNlbGYuX2NvbXBpbGVfZ3JhcGguaXRlbXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRlcHMgb3IgdCBub3QgaW4gYWxsX2NvbXBpbGVfZGVwc10KKyAKKyAgICAgICAgIHJ1bGUgPSByb290X2RlcHNfbWsuY3JlYXRlX3J1bGUoWydyZWN1cnNlX2NvbXBpbGUnXSkKK0BAIC04NDUsMTQgKzg0NiwxNCBAQCBjbGFzcyBSZWN1cnNpdmVNYWtlQmFja2VuZChDb21tb25CYWNrZW5kKToKKyAgICAgICAgICAgICBydWxlLmFkZF9kZXBlbmRlbmNpZXMoWyckKENVUkRJUikvJTogJSddKQorIAorICAgICBkZWYgX2NoZWNrX2JsYWNrbGlzdGVkX3ZhcmlhYmxlcyhzZWxmLCBtYWtlZmlsZV9pbiwgbWFrZWZpbGVfY29udGVudCk6CistICAgICAgICBpZiBiJ0VYVEVSTkFMTFlfTUFOQUdFRF9NQUtFX0ZJTEUnIGluIG1ha2VmaWxlX2NvbnRlbnQ6CisrICAgICAgICBpZiAnRVhURVJOQUxMWV9NQU5BR0VEX01BS0VfRklMRScgaW4gbWFrZWZpbGVfY29udGVudDoKKyAgICAgICAgICAgICAjIEJ5cGFzcyB0aGUgdmFyaWFibGUgcmVzdHJpY3Rpb25zIGZvciBleHRlcm5hbGx5IG1hbmFnZWQgbWFrZWZpbGVzLgorICAgICAgICAgICAgIHJldHVybgorIAorICAgICAgICAgZm9yIGwgaW4gbWFrZWZpbGVfY29udGVudC5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICAgbCA9IGwuc3RyaXAoKQorICAgICAgICAgICAgICMgRG9uJ3QgY2hlY2sgY29tbWVudHMKKy0gICAgICAgICAgICBpZiBsLnN0YXJ0c3dpdGgoYicjJyk6CisrICAgICAgICAgICAgaWYgbC5zdGFydHN3aXRoKCcjJyk6CisgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgZm9yIHggaW4gY2hhaW4oTU9aQlVJTERfVkFSSUFCTEVTLCBERVBSRUNBVEVEX1ZBUklBQkxFUyk6CisgICAgICAgICAgICAgICAgIGlmIHggbm90IGluIGw6CitAQCAtOTA5LDExICs5MTAsMTEgQEAgY2xhc3MgUmVjdXJzaXZlTWFrZUJhY2tlbmQoQ29tbW9uQmFja2VuZCk6CisgICAgICAgICAgICAgICAgICAgICAjIERpcmVjdG9yaWVzIHdpdGggYSBNYWtlZmlsZSBjb250YWluaW5nIGEgdG9vbHMgdGFyZ2V0LCBvcgorICAgICAgICAgICAgICAgICAgICAgIyBYUElfUEtHTkFNRSBvciBJTlNUQUxMX0VYVEVOU0lPTl9JRCBjYW4ndCBiZSBza2lwcGVkIGFuZAorICAgICAgICAgICAgICAgICAgICAgIyBtdXN0IHJ1biBkdXJpbmcgdGhlICd0b29scycgdGllci4KKy0gICAgICAgICAgICAgICAgICAgIGZvciB0IGluIChiJ1hQSV9QS0dOQU1FJywgYidJTlNUQUxMX0VYVEVOU0lPTl9JRCcsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIndG9vbHMnKToKKysgICAgICAgICAgICAgICAgICAgIGZvciB0IGluICgnWFBJX1BLR05BTUUnLCAnSU5TVEFMTF9FWFRFTlNJT05fSUQnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9vbHMnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0IG5vdCBpbiBjb250ZW50OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHQgPT0gYid0b29scycgYW5kIG5vdCByZS5zZWFyY2goJyg/Ol58XHMpdG9vbHMuKjo6JywgY29udGVudCwgcmUuTSk6CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgdCA9PSAndG9vbHMnIGFuZCBub3QgcmUuc2VhcmNoKCcoPzpefFxzKXRvb2xzLio6OicsIGNvbnRlbnQsIHJlLk0pOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9iamRpciA9PSBzZWxmLmVudmlyb25tZW50LnRvcG9iamRpcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKK0BAIC05MzMsNyArOTM0LDcgQEAgY2xhc3MgUmVjdXJzaXZlTWFrZUJhY2tlbmQoQ29tbW9uQmFja2VuZCk6CisgICAgICAgICBzZWxmLl9maWxsX3Jvb3RfbWsoKQorIAorICAgICAgICAgIyBNYWtlIHRoZSBtYXN0ZXIgdGVzdCBtYW5pZmVzdCBmaWxlcy4KKy0gICAgICAgIGZvciBmbGF2b3IsIHQgaW4gc2VsZi5fdGVzdF9tYW5pZmVzdHMuaXRlbXMoKToKKysgICAgICAgIGZvciBmbGF2b3IsIHQgaW4gbGlzdChzZWxmLl90ZXN0X21hbmlmZXN0cy5pdGVtcygpKToKKyAgICAgICAgICAgICBpbnN0YWxsX3ByZWZpeCwgbWFuaWZlc3RzID0gdAorICAgICAgICAgICAgIG1hbmlmZXN0X3N0ZW0gPSBtb3pwYXRoLmpvaW4oaW5zdGFsbF9wcmVmaXgsICclcy5pbmknICUgZmxhdm9yKQorICAgICAgICAgICAgIHNlbGYuX3dyaXRlX21hc3Rlcl90ZXN0X21hbmlmZXN0KG1venBhdGguam9pbigKK0BAIC0xMDM5LDcgKzEwNDAsNyBAQCBjbGFzcyBSZWN1cnNpdmVNYWtlQmFja2VuZChDb21tb25CYWNrZW5kKToKKyAgICAgICAgIGZvciBwIGluICgnTWFrZWZpbGUnLCAnYmFja2VuZC5taycsICcuZGVwcy8ubWtkaXIuZG9uZScpOgorICAgICAgICAgICAgIGJ1aWxkX2ZpbGVzLmFkZF9vcHRpb25hbF9leGlzdHMocCkKKyAKKy0gICAgICAgIGZvciBpZGwgaW4gbWFuYWdlci5pZGxzLnZhbHVlcygpOgorKyAgICAgICAgZm9yIGlkbCBpbiBsaXN0KG1hbmFnZXIuaWRscy52YWx1ZXMoKSk6CisgICAgICAgICAgICAgc2VsZi5faW5zdGFsbF9tYW5pZmVzdHNbJ2Rpc3RfaWRsJ10uYWRkX2xpbmsoaWRsWydzb3VyY2UnXSwKKyAgICAgICAgICAgICAgICAgaWRsWydiYXNlbmFtZSddKQorICAgICAgICAgICAgIHNlbGYuX2luc3RhbGxfbWFuaWZlc3RzWydkaXN0X2luY2x1ZGUnXS5hZGRfb3B0aW9uYWxfZXhpc3RzKCclcy5oJworQEAgLTEwODYsNyArMTA4Nyw3IEBAIGNsYXNzIFJlY3Vyc2l2ZU1ha2VCYWNrZW5kKENvbW1vbkJhY2tlbmQpOgorIAorICAgICAgICAgaW50ZXJmYWNlc19tYW5pZmVzdHMgPSBbXQorICAgICAgICAgZGlzdF9kaXIgPSBtb3pwYXRoLmpvaW4oc2VsZi5lbnZpcm9ubWVudC50b3BvYmpkaXIsICdkaXN0JykKKy0gICAgICAgIGZvciBtYW5pZmVzdCwgZW50cmllcyBpbiBtYW5hZ2VyLmludGVyZmFjZV9tYW5pZmVzdHMuaXRlbXMoKToKKysgICAgICAgIGZvciBtYW5pZmVzdCwgZW50cmllcyBpbiBsaXN0KG1hbmFnZXIuaW50ZXJmYWNlX21hbmlmZXN0cy5pdGVtcygpKToKKyAgICAgICAgICAgICBpbnRlcmZhY2VzX21hbmlmZXN0cy5hcHBlbmQobW96cGF0aC5qb2luKCckKERFUFRIKScsIG1hbmlmZXN0KSkKKyAgICAgICAgICAgICBmb3IgeHB0IGluIHNvcnRlZChlbnRyaWVzKToKKyAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZF94cHRfZmlsZXMuYWRkKG1venBhdGguam9pbigKK0BAIC0xMTk0LDcgKzExOTUsNyBAQCBjbGFzcyBSZWN1cnNpdmVNYWtlQmFja2VuZChDb21tb25CYWNrZW5kKToKKyAgICAgICAgICMgRG9uJ3QgYWxsb3cgZmlsZXMgdG8gYmUgZGVmaW5lZCBtdWx0aXBsZSB0aW1lcyB1bmxlc3MgaXQgaXMgYWxsb3dlZC4KKyAgICAgICAgICMgV2UgY3VycmVudGx5IGFsbG93IGR1cGxpY2F0ZXMgZm9yIG5vbi10ZXN0IGZpbGVzIG9yIHRlc3QgZmlsZXMgaWYKKyAgICAgICAgICMgdGhlIG1hbmlmZXN0IGlzIGxpc3RlZCBhcyBhIGR1cGxpY2F0ZS4KKy0gICAgICAgIGZvciBzb3VyY2UsIChkZXN0LCBpc190ZXN0KSBpbiBvYmouaW5zdGFsbHMuaXRlbXMoKToKKysgICAgICAgIGZvciBzb3VyY2UsIChkZXN0LCBpc190ZXN0KSBpbiBsaXN0KG9iai5pbnN0YWxscy5pdGVtcygpKToKKyAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIHNlbGYuX2luc3RhbGxfbWFuaWZlc3RzWydfdGVzdF9maWxlcyddLmFkZF9saW5rKHNvdXJjZSwgZGVzdCkKKyAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKK0BAIC0xNTU4LDcgKzE1NTksNyBAQCBjbGFzcyBSZWN1cnNpdmVNYWtlQmFja2VuZChDb21tb25CYWNrZW5kKToKKyAgICAgICAgIG1hbl9kaXIgPSBtb3pwYXRoLmpvaW4oc2VsZi5lbnZpcm9ubWVudC50b3BvYmpkaXIsICdfYnVpbGRfbWFuaWZlc3RzJywKKyAgICAgICAgICAgICBkZXN0KQorIAorLSAgICAgICAgZm9yIGssIG1hbmlmZXN0IGluIG1hbmlmZXN0cy5pdGVtcygpOgorKyAgICAgICAgZm9yIGssIG1hbmlmZXN0IGluIGxpc3QobWFuaWZlc3RzLml0ZW1zKCkpOgorICAgICAgICAgICAgIHdpdGggc2VsZi5fd3JpdGVfZmlsZShtb3pwYXRoLmpvaW4obWFuX2RpciwgaykpIGFzIGZoOgorICAgICAgICAgICAgICAgICBtYW5pZmVzdC53cml0ZShmaWxlb2JqPWZoKQorIAorQEAgLTE1OTMsMjAgKzE1OTQsMjAgQEAgY2xhc3MgUmVjdXJzaXZlTWFrZUJhY2tlbmQoQ29tbW9uQmFja2VuZCk6CisgICAgICAgICAgICAgICAgIHBwLmNvbnRleHQudXBkYXRlKGV4dHJhKQorICAgICAgICAgICAgIGlmIG5vdCBwcC5jb250ZXh0LmdldCgnYXV0b2NvbmZtaycsICcnKToKKyAgICAgICAgICAgICAgICAgcHAuY29udGV4dFsnYXV0b2NvbmZtayddID0gJ2F1dG9jb25mLm1rJworLSAgICAgICAgICAgIHBwLmhhbmRsZUxpbmUoYicjIFRISVMgRklMRSBXQVMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQuIERPIE5PVCBNT0RJRlkgQlkgSEFORC5cbicpOworLSAgICAgICAgICAgIHBwLmhhbmRsZUxpbmUoYidERVBUSCA6PSBAREVQVEhAXG4nKQorLSAgICAgICAgICAgIHBwLmhhbmRsZUxpbmUoYid0b3BvYmpkaXIgOj0gQHRvcG9iamRpckBcbicpCistICAgICAgICAgICAgcHAuaGFuZGxlTGluZShiJ3RvcHNyY2RpciA6PSBAdG9wX3NyY2RpckBcbicpCistICAgICAgICAgICAgcHAuaGFuZGxlTGluZShiJ3NyY2RpciA6PSBAc3JjZGlyQFxuJykKKy0gICAgICAgICAgICBwcC5oYW5kbGVMaW5lKGInVlBBVEggOj0gQHNyY2RpckBcbicpCistICAgICAgICAgICAgcHAuaGFuZGxlTGluZShiJ3JlbGF0aXZlc3JjZGlyIDo9IEByZWxhdGl2ZXNyY2RpckBcbicpCistICAgICAgICAgICAgcHAuaGFuZGxlTGluZShiJ2luY2x1ZGUgJChERVBUSCkvY29uZmlnL0BhdXRvY29uZm1rQFxuJykKKysgICAgICAgICAgICBwcC5oYW5kbGVMaW5lKCcjIFRISVMgRklMRSBXQVMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQuIERPIE5PVCBNT0RJRlkgQlkgSEFORC5cbicpOworKyAgICAgICAgICAgIHBwLmhhbmRsZUxpbmUoJ0RFUFRIIDo9IEBERVBUSEBcbicpCisrICAgICAgICAgICAgcHAuaGFuZGxlTGluZSgndG9wb2JqZGlyIDo9IEB0b3BvYmpkaXJAXG4nKQorKyAgICAgICAgICAgIHBwLmhhbmRsZUxpbmUoJ3RvcHNyY2RpciA6PSBAdG9wX3NyY2RpckBcbicpCisrICAgICAgICAgICAgcHAuaGFuZGxlTGluZSgnc3JjZGlyIDo9IEBzcmNkaXJAXG4nKQorKyAgICAgICAgICAgIHBwLmhhbmRsZUxpbmUoJ1ZQQVRIIDo9IEBzcmNkaXJAXG4nKQorKyAgICAgICAgICAgIHBwLmhhbmRsZUxpbmUoJ3JlbGF0aXZlc3JjZGlyIDo9IEByZWxhdGl2ZXNyY2RpckBcbicpCisrICAgICAgICAgICAgcHAuaGFuZGxlTGluZSgnaW5jbHVkZSAkKERFUFRIKS9jb25maWcvQGF1dG9jb25mbWtAXG4nKQorICAgICAgICAgICAgIGlmIG5vdCBzdHViOgorICAgICAgICAgICAgICAgICBwcC5kb19pbmNsdWRlKG9iai5pbnB1dF9wYXRoKQorICAgICAgICAgICAgICMgRW1wdHkgbGluZSB0byBhdm9pZCBmYWlsdXJlcyB3aGVuIGxhc3QgbGluZSBpbiBNYWtlZmlsZS5pbiBlbmRzCisgICAgICAgICAgICAgIyB3aXRoIGEgYmFja3NsYXNoLgorLSAgICAgICAgICAgIHBwLmhhbmRsZUxpbmUoYidcbicpCistICAgICAgICAgICAgcHAuaGFuZGxlTGluZShiJ2luY2x1ZGUgJCh0b3BzcmNkaXIpL2NvbmZpZy9yZWN1cnNlLm1rXG4nKQorKyAgICAgICAgICAgIHBwLmhhbmRsZUxpbmUoJ1xuJykKKysgICAgICAgICAgICBwcC5oYW5kbGVMaW5lKCdpbmNsdWRlICQodG9wc3JjZGlyKS9jb25maWcvcmVjdXJzZS5ta1xuJykKKyAgICAgICAgIGlmIG5vdCBzdHViOgorICAgICAgICAgICAgICMgQWRkaW5nIHRoZSBNYWtlZmlsZS5pbiBoZXJlIGhhcyB0aGUgZGVzaXJlZCBzaWRlLWVmZmVjdAorICAgICAgICAgICAgICMgdGhhdCBpZiB0aGUgTWFrZWZpbGUuaW4gZGlzYXBwZWFycywgdGhpcyB3aWxsIGZvcmNlCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2NvbmZpZ19zdGF0dXMucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29uZmlnX3N0YXR1cy5weQoraW5kZXggZDQ2ZjEzMzJkLi5hOWEyN2E2OTkgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29uZmlnX3N0YXR1cy5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2NvbmZpZ19zdGF0dXMucHkKK0BAIC03Nyw2ICs3Nyw3IEBAIGRlZiBjb25maWdfc3RhdHVzKHRvcG9iamRpcj0nLicsIHRvcHNyY2Rpcj0nLicsIGRlZmluZXM9Tm9uZSwKKyAgICAgU2VlIGJ1aWxkL2F1dG9jb25mL2NvbmZpZy5zdGF0dXMubTQuCisgICAgICcnJworIAorKyAgICBwcmludCgiY29uZmlnX3N0YXR1cyBzdGFydGVkIikKKyAgICAgaWYgJ0NPTkZJR19GSUxFUycgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVXNpbmcgdGhlIENPTkZJR19GSUxFUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QgJworICAgICAgICAgICAgICdzdXBwb3J0ZWQuJykKK0BAIC0xMTksNyArMTIwLDcgQEAgZGVmIGNvbmZpZ19zdGF0dXModG9wb2JqZGlyPScuJywgdG9wc3JjZGlyPScuJywgZGVmaW5lcz1Ob25lLAorICAgICBpZiAnV1JJVEVfTU9aSU5GTycgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgIHdyaXRlX21vemluZm8ob3MucGF0aC5qb2luKHRvcG9iamRpciwgJ21vemluZm8uanNvbicpLCBlbnYsIG9zLmVudmlyb24pCisgCistICAgIGNwdV9zdGFydCA9IHRpbWUuY2xvY2soKQorKyAgICBjcHVfc3RhcnQgPSB0aW1lLnBlcmZfY291bnRlcigpCisgICAgIHRpbWVfc3RhcnQgPSB0aW1lLnRpbWUoKQorIAorICAgICAjIE1ha2UgYXBwcm9wcmlhdGUgYmFja2VuZCBpbnN0YW5jZXMsIGRlZmF1bHRpbmcgdG8gUmVjdXJzaXZlTWFrZUJhY2tlbmQsCitAQCAtMTU1LDcgKzE1Niw3IEBAIGRlZiBjb25maWdfc3RhdHVzKHRvcG9iamRpcj0nLicsIHRvcHNyY2Rpcj0nLicsIGRlZmluZXM9Tm9uZSwKKyAgICAgICAgICAgICBzdW1tYXJ5ID0gb2JqLmd5cF9zdW1tYXJ5KCkKKyAgICAgICAgICAgICBwcmludChzdW1tYXJ5LCBmaWxlPXN5cy5zdGRlcnIpCisgCistICAgIGNwdV90aW1lID0gdGltZS5jbG9jaygpIC0gY3B1X3N0YXJ0CisrICAgIGNwdV90aW1lID0gdGltZS5wZXJmX2NvdW50ZXIoKSAtIGNwdV9zdGFydAorICAgICB3YWxsX3RpbWUgPSB0aW1lLnRpbWUoKSAtIHRpbWVfc3RhcnQKKyAgICAgZWZmaWNpZW5jeSA9IGNwdV90aW1lIC8gd2FsbF90aW1lIGlmIHdhbGxfdGltZSBlbHNlIDEwMAorICAgICB1bnRyYWNrZWQgPSB3YWxsX3RpbWUgLSBleGVjdXRpb25fdGltZQorQEAgLTE3OSwzICsxODAsNSBAQCBkZWYgY29uZmlnX3N0YXR1cyh0b3BvYmpkaXI9Jy4nLCB0b3BzcmNkaXI9Jy4nLCBkZWZpbmVzPU5vbmUsCisgICAgICMgQWR2ZXJ0aXNlIEFuZHJvaWQgU3R1ZGlvIGlmIGl0IGlzIGFwcHJvcHJpYXRlLgorICAgICBpZiBNYWNoQ29tbWFuZENvbmRpdGlvbnMuaXNfYW5kcm9pZChlbnYpOgorICAgICAgICAgcHJpbnQoQU5EUk9JRF9JREVfQURWRVJUSVNFTUVOVCkKKysKKysgICAgcHJpbnQoImNvbmZpZ19zdGF0dXMgZmluaXNoZWQiKQorZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9jb25maWd1cmUvX19pbml0X18ucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29uZmlndXJlL19faW5pdF9fLnB5CitpbmRleCBkMDM2MTU3MDcuLjEzZDYyM2Q0ZiAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9jb25maWd1cmUvX19pbml0X18ucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9jb25maWd1cmUvX19pbml0X18ucHkKK0BAIC0yLDkgKzIsOSBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24sIHVuaWNvZGVfbGl0ZXJhbHMKKyAKKy1pbXBvcnQgX19idWlsdGluX18KKysKKytpbXBvcnQgYnVpbHRpbnMKKyBpbXBvcnQgaW5zcGVjdAorIGltcG9ydCBsb2dnaW5nCisgaW1wb3J0IG9zCitAQCAtMzgsNiArMzgsOCBAQCBmcm9tIG1vemJ1aWxkLnV0aWwgaW1wb3J0ICgKKyAKKyBpbXBvcnQgbW96cGFjay5wYXRoIGFzIG1venBhdGgKKyAKKytpbXBvcnQgdHJhY2ViYWNrCisrCisgCisgY2xhc3MgQ29uZmlndXJlRXJyb3IoRXhjZXB0aW9uKToKKyAgICAgcGFzcworQEAgLTY5LDcgKzcxLDcgQEAgY2xhc3MgU2FuZGJveERlcGVuZHNGdW5jdGlvbihvYmplY3QpOgorICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwga2V5KToKKyAgICAgICAgIHJldHVybiBzZWxmLl9nZXRhdHRyKGtleSkuc2FuZGJveGVkCisgCistICAgIGRlZiBfX25vbnplcm9fXyhzZWxmKToKKysgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgorICAgICAgICAgcmFpc2UgQ29uZmlndXJlRXJyb3IoCisgICAgICAgICAgICAgJ0Nhbm5vdCBkbyBib29sZWFuIG9wZXJhdGlvbnMgb24gQGRlcGVuZHMgZnVuY3Rpb25zLicpCisgCitAQCAtOTYsNiArOTgsNyBAQCBjbGFzcyBEZXBlbmRzRnVuY3Rpb24ob2JqZWN0KToKKyAgICAgICAgICAgICBzYW5kYm94Ll92YWx1ZV9mb3Ioc2VsZikKKyAgICAgICAgIGVsaWYgbm90IHNhbmRib3guX2hlbHA6CisgICAgICAgICAgICAgc2FuZGJveC5fZXhlY3V0aW9uX3F1ZXVlLmFwcGVuZCgoc2FuZGJveC5fdmFsdWVfZm9yLCAoc2VsZiwpKSkKKysgICAgICAgICAgICBzYW5kYm94LnRhc2tzX2RlYnVnX291dCgiRGVwZW5kc0Z1bmN0aW9uLl9faW5pdCAlcyIgJSBmdW5jLl9fbmFtZV9fKQorIAorICAgICBAcHJvcGVydHkKKyAgICAgZGVmIG5hbWUoc2VsZik6CitAQCAtMjA2LDYgKzIwOSwxNSBAQCBjbGFzcyBDb21iaW5lZERlcGVuZHNGdW5jdGlvbihEZXBlbmRzRnVuY3Rpb24pOgorICAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgIHJldHVybiBub3Qgc2VsZiA9PSBvdGhlcgorIAorKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisrICAgICAgICAjIFRoaXMgd2FzIG9uZSB3YXMgdGFrZW4gZnJvbSBbMV0gaW5pdGlhbGx5LiBTaG91bGQgbm90IGhhdmUgZG9uZSB0aGF0OgorKyAgICAgICAgIyBpdCBjYXVzZXMgZXhwbG9zaW9uIG9mIENvbmZpZ3VyZVNhbmRib3guX2V4ZWN1dGlvbl9xdWV1ZSB3aXRoIDEwMCUKKysgICAgICAgICMgQ1BVIGxvYWQgYW5kIGVhdGluZyBhbGwgYXZhbGlhYmxlIG1lbW9yeS4uLgorKyAgICAgICAgIworKyAgICAgICAgIyBbMV0gaHR0cHM6Ly9jb2RlLmZveGtpdC51cy9hZGVsaWUvcGFja2FnZXMvYmxvYi9mMmI1NzczZGExOWFiMzk3ZmJlNjRmZDMyZGFjYzM4M2NmZTRjZDc3L3VzZXIvbW96anMvcHl0aG9uMy5wYXRjaCNMODA2OAorKyAgICAgICAgcmV0dXJuIGhhc2goKHNlbGYuX25hbWUsIHR1cGxlKHNlbGYuZGVwZW5kZW5jaWVzKSkpCisrCisrCisgY2xhc3MgU2FuZGJveGVkR2xvYmFsKGRpY3QpOgorICAgICAnJydJZGVudGlmaWFibGUgZGljdCB0eXBlIGZvciB1c2UgYXMgZnVuY3Rpb24gZ2xvYmFsJycnCisgCitAQCAtMjUzLDExICsyNjUsMTIgQEAgY2xhc3MgQ29uZmlndXJlU2FuZGJveChkaWN0KToKKyAgICAgIyBUaGUgZGVmYXVsdCBzZXQgb2YgYnVpbHRpbnMuIFdlIGV4cG9zZSB1bmljb2RlIGFzIHN0ciB0byBtYWtlIHNhbmRib3hlZAorICAgICAjIGZpbGVzIG1vcmUgcHl0aG9uMy1yZWFkeS4KKyAgICAgQlVJTFRJTlMgPSBSZWFkT25seURpY3QoeworLSAgICAgICAgYjogZ2V0YXR0cihfX2J1aWx0aW5fXywgYikKKysgICAgICAgIGI6IGdldGF0dHIoYnVpbHRpbnMsIGIpCisgICAgICAgICBmb3IgYiBpbiAoJ05vbmUnLCAnRmFsc2UnLCAnVHJ1ZScsICdpbnQnLCAnYm9vbCcsICdhbnknLCAnYWxsJywgJ2xlbicsCisgICAgICAgICAgICAgICAgICAgJ2xpc3QnLCAndHVwbGUnLCAnc2V0JywgJ2RpY3QnLCAnaXNpbnN0YW5jZScsICdnZXRhdHRyJywKKy0gICAgICAgICAgICAgICAgICAnaGFzYXR0cicsICdlbnVtZXJhdGUnLCAncmFuZ2UnLCAnemlwJykKKy0gICAgfSwgX19pbXBvcnRfXz1mb3JiaWRkZW5faW1wb3J0LCBzdHI9dW5pY29kZSkKKysgICAgICAgICAgICAgICAgICAnaGFzYXR0cicsICdlbnVtZXJhdGUnLCAncmFuZ2UnLCAnemlwJywgJ19fYnVpbGRfY2xhc3NfXycsCisrICAgICAgICAgICAgICAgICAgJ2J5dGVzJywgJ2V4ZWMnKQorKyAgICB9LCBfX2ltcG9ydF9fPWZvcmJpZGRlbl9pbXBvcnQsIHN0cj1zdHIpCisgCisgICAgICMgRXhwb3NlIGEgbGltaXRlZCBzZXQgb2YgZnVuY3Rpb25zIGZyb20gb3MucGF0aAorICAgICBPUyA9IFJlYWRPbmx5TmFtZXNwYWNlKHBhdGg9UmVhZE9ubHlOYW1lc3BhY2UoKip7CitAQCAtMjk0LDYgKzMwNywxMSBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgIyBRdWV1ZSBvZiBmdW5jdGlvbnMgdG8gZXhlY3V0ZSwgd2l0aCB0aGVpciBhcmd1bWVudHMKKyAgICAgICAgIHNlbGYuX2V4ZWN1dGlvbl9xdWV1ZSA9IFtdCisgCisrICAgICAgICAjIEZvciBkZWJ1Z2dpbmc6IFNob3cgbnVtYmVyIG9mIHRhc2tzIHN0YXJ0ZWQgaW4gcnVuKCkgLyBhZGRlZCBlbHNld2hlcmUKKysgICAgICAgICMgYW5kIHNvbWUgYWRkaXRpb25hbCBpbmZvCisrICAgICAgICBzZWxmLnRhc2tfZGVidWcgPSBGYWxzZSAjIHNldCBUcnVlIHRvIGVuYWJsZQorKyAgICAgICAgc2VsZi50YXNrc19zdGFydGVkID0gMAorKworICAgICAgICAgIyBTdG9yZSB0aGUgYHdoZW5gcyBhc3NvY2lhdGVkIHRvIHNvbWUgb3B0aW9ucy4KKyAgICAgICAgIHNlbGYuX2NvbmRpdGlvbnMgPSB7fQorIAorQEAgLTMzMSw3ICszNDksNyBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgICAgICAgICByZXR1cm4gbWV0aG9kCisgICAgICAgICAgICAgZGVmIHdyYXBwZWQoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICAgb3V0X2FyZ3MgPSBbCistICAgICAgICAgICAgICAgICAgICBhcmcuZGVjb2RlKGVuY29kaW5nKSBpZiBpc2luc3RhbmNlKGFyZywgc3RyKSBlbHNlIGFyZworKyAgICAgICAgICAgICAgICAgICAgYXJnLmRlY29kZShlbmNvZGluZykgaWYgaXNpbnN0YW5jZShhcmcsIGJ5dGVzKSBlbHNlIGFyZworICAgICAgICAgICAgICAgICAgICAgZm9yIGFyZyBpbiBhcmdzCisgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgcmV0dXJuIG1ldGhvZCgqb3V0X2FyZ3MsICoqa3dhcmdzKQorQEAgLTM2MCw2ICszNzgsMTQgQEAgY2xhc3MgQ29uZmlndXJlU2FuZGJveChkaWN0KToKKyAgICAgICAgICAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCisgICAgICAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKKyAKKysgICAgZGVmIHRhc2tzX2RlYnVnX291dChzZWxmLCB0ZXh0KToKKysgICAgICAgIGlmIHNlbGYudGFza19kZWJ1ZzoKKysgICAgICAgICAgICBwcmludCgiJXMgLyBxdWV1ZWQgJWkgLyBkb25lICVpIiAlKHRleHQsIGxlbihzZWxmLl9leGVjdXRpb25fcXVldWUpLCBzZWxmLnRhc2tzX3N0YXJ0ZWQpKQorKyAgICAgICAgICAgICNpZiBsZW4oc2VsZi5fZXhlY3V0aW9uX3F1ZXVlKSA+IDUwMDA6CisrICAgICAgICAgICAgIyAgICB0cmFjZWJhY2sucHJpbnRfc3RhY2soZmlsZT1zeXMuc3Rkb3V0KQorKyAgICAgICAgICAgICNpZiBsZW4oc2VsZi5fZXhlY3V0aW9uX3F1ZXVlKSA+IDUwMTA6CisrICAgICAgICAgICAgIyAgICByYWlzZSBFeGNlcHRpb24oIlRvbyBtYW55IHRhc2tzIikKKysKKyAgICAgZGVmIGluY2x1ZGVfZmlsZShzZWxmLCBwYXRoKToKKyAgICAgICAgICcnJ0luY2x1ZGUgb25lIGZpbGUgaW4gdGhlIHNhbmRib3guIFVzZXJzIG9mIHRoaXMgY2xhc3MgcHJvYmFibHkgd2FudAorICAgICAgICAgdG8gdXNlIGBydW5gIGluc3RlYWQuCitAQCAtMzgwLDYgKzQwNiw5IEBAIGNsYXNzIENvbmZpZ3VyZVNhbmRib3goZGljdCk6CisgICAgICAgICBpZiBwYXRoIGluIHNlbGYuX2FsbF9wYXRoczoKKyAgICAgICAgICAgICByYWlzZSBDb25maWd1cmVFcnJvcigKKyAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBpbmNsdWRlIGAlc2AgYmVjYXVzZSBpdCB3YXMgaW5jbHVkZWQgYWxyZWFkeS4nICUgcGF0aCkKKysKKysgICAgICAgIGlmIHNlbGYudGFza19kZWJ1ZzoKKysgICAgICAgICAgICBwcmludCgiaW5jbHVkZV9maWxlIiwgcGF0aCkKKyAgICAgICAgIHNlbGYuX3BhdGhzLmFwcGVuZChwYXRoKQorICAgICAgICAgc2VsZi5fYWxsX3BhdGhzLmFkZChwYXRoKQorIAorQEAgLTM5OCw3ICs0MjcsNyBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgaWYgcGF0aDoKKyAgICAgICAgICAgICBzZWxmLmluY2x1ZGVfZmlsZShwYXRoKQorIAorLSAgICAgICAgZm9yIG9wdGlvbiBpbiBzZWxmLl9vcHRpb25zLml0ZXJ2YWx1ZXMoKToKKysgICAgICAgIGZvciBvcHRpb24gaW4gc2VsZi5fb3B0aW9ucy52YWx1ZXMoKToKKyAgICAgICAgICAgICAjIEFsbCBvcHRpb25zIG11c3QgYmUgcmVmZXJlbmNlZCBieSBzb21lIEBkZXBlbmRzIGZ1bmN0aW9uCisgICAgICAgICAgICAgaWYgb3B0aW9uIG5vdCBpbiBzZWxmLl9zZWVuOgorICAgICAgICAgICAgICAgICByYWlzZSBDb25maWd1cmVFcnJvcigKK0BAIC00MjUsNiArNDU0LDggQEAgY2xhc3MgQ29uZmlndXJlU2FuZGJveChkaWN0KToKKyAKKyAgICAgICAgICMgUnVuIHRoZSBleGVjdXRpb24gcXVldWUKKyAgICAgICAgIGZvciBmdW5jLCBhcmdzIGluIHNlbGYuX2V4ZWN1dGlvbl9xdWV1ZToKKysgICAgICAgICAgICBzZWxmLnRhc2tzX3N0YXJ0ZWQgKz0gMQorKyAgICAgICAgICAgIHNlbGYudGFza3NfZGVidWdfb3V0KCJDb25maWd1cmVTYW5kYm94LnJ1biglcykiICUgZnVuYy5fX25hbWVfXykKKyAgICAgICAgICAgICBmdW5jKCphcmdzKQorIAorICAgICAgICAgaWYgc2VsZi5faGVscDoKK0BAIC01MDQsNyArNTM1LDcgQEAgY2xhc3MgQ29uZmlndXJlU2FuZGJveChkaWN0KToKKyAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gUG9zaXRpdmVPcHRpb25WYWx1ZSgpCisgICAgICAgICAgICAgICAgIGVsaWYgdmFsdWUgaXMgRmFsc2Ugb3IgdmFsdWUgPT0gKCk6CisgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE5lZ2F0aXZlT3B0aW9uVmFsdWUoKQorLSAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIHR5cGVzLlN0cmluZ1R5cGVzKToKKysgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCAoc3RyLCkpOgorICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBQb3NpdGl2ZU9wdGlvblZhbHVlKCh2YWx1ZSwpKQorICAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIHR1cGxlKToKKyAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gUG9zaXRpdmVPcHRpb25WYWx1ZSh2YWx1ZSkKK0BAIC01NDQsNyArNTc1LDcgQEAgY2xhc3MgQ29uZmlndXJlU2FuZGJveChkaWN0KToKKyAgICAgICAgIHJldHVybiB2YWx1ZQorIAorICAgICBkZWYgX2RlcGVuZGVuY3koc2VsZiwgYXJnLCBjYWxsZWVfbmFtZSwgYXJnX25hbWU9Tm9uZSk6CistICAgICAgICBpZiBpc2luc3RhbmNlKGFyZywgdHlwZXMuU3RyaW5nVHlwZXMpOgorKyAgICAgICAgaWYgaXNpbnN0YW5jZShhcmcsIChzdHIsKSk6CisgICAgICAgICAgICAgcHJlZml4LCBuYW1lLCB2YWx1ZXMgPSBPcHRpb24uc3BsaXRfb3B0aW9uKGFyZykKKyAgICAgICAgICAgICBpZiB2YWx1ZXMgIT0gKCk6CisgICAgICAgICAgICAgICAgIHJhaXNlIENvbmZpZ3VyZUVycm9yKCJPcHRpb24gbXVzdCBub3QgY29udGFpbiBhbiAnPSciKQorQEAgLTYwOCw3ICs2MzksNyBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgJycnCisgICAgICAgICB3aGVuID0gc2VsZi5fbm9ybWFsaXplX3doZW4oa3dhcmdzLmdldCgnd2hlbicpLCAnb3B0aW9uJykKKyAgICAgICAgIGFyZ3MgPSBbc2VsZi5fcmVzb2x2ZShhcmcpIGZvciBhcmcgaW4gYXJnc10KKy0gICAgICAgIGt3YXJncyA9IHtrOiBzZWxmLl9yZXNvbHZlKHYpIGZvciBrLCB2IGluIGt3YXJncy5pdGVyaXRlbXMoKQorKyAgICAgICAga3dhcmdzID0ge2s6IHNlbGYuX3Jlc29sdmUodikgZm9yIGssIHYgaW4ga3dhcmdzLml0ZW1zKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGsgIT0gJ3doZW4nfQorICAgICAgICAgb3B0aW9uID0gT3B0aW9uKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgIGlmIHdoZW46CitAQCAtNjg5LDcgKzcyMCw3IEBAIGNsYXNzIENvbmZpZ3VyZVNhbmRib3goZGljdCk6CisgICAgICAgICB3aXRoIHNlbGYub25seV93aGVuX2ltcGwod2hlbik6CisgICAgICAgICAgICAgd2hhdCA9IHNlbGYuX3Jlc29sdmUod2hhdCkKKyAgICAgICAgICAgICBpZiB3aGF0OgorLSAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh3aGF0LCB0eXBlcy5TdHJpbmdUeXBlcyk6CisrICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHdoYXQsIChzdHIsKSk6CisgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuZXhwZWN0ZWQgdHlwZTogJyVzJyIgJSB0eXBlKHdoYXQpLl9fbmFtZV9fKQorICAgICAgICAgICAgICAgICBzZWxmLmluY2x1ZGVfZmlsZSh3aGF0KQorIAorQEAgLTcwNyw3ICs3MzgsNyBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgICAgIChrWzotbGVuKCdfaW1wbCcpXSwgZ2V0YXR0cihzZWxmLCBrKSkKKyAgICAgICAgICAgICBmb3IgayBpbiBkaXIoc2VsZikgaWYgay5lbmRzd2l0aCgnX2ltcGwnKSBhbmQgayAhPSAndGVtcGxhdGVfaW1wbCcKKyAgICAgICAgICkKKy0gICAgICAgIGdsb2IudXBkYXRlKChrLCB2KSBmb3IgaywgdiBpbiBzZWxmLml0ZXJpdGVtcygpIGlmIGsgbm90IGluIGdsb2IpCisrICAgICAgICBnbG9iLnVwZGF0ZSgoaywgdikgZm9yIGssIHYgaW4gc2VsZi5pdGVtcygpIGlmIGsgbm90IGluIGdsb2IpCisgCisgICAgICAgICAjIEFueSBmdW5jdGlvbiBhcmd1bWVudCB0byB0aGUgdGVtcGxhdGUgbXVzdCBiZSBwcmVwYXJlZCB0byBiZSBzYW5kYm94ZWQuCisgICAgICAgICAjIElmIHRoZSB0ZW1wbGF0ZSBpdHNlbGYgcmV0dXJucyBhIGZ1bmN0aW9uIChpbiB3aGljaCBjYXNlLCBpdCdzIHZlcnkKK0BAIC03MzEsNyArNzYyLDcgQEAgY2xhc3MgQ29uZmlndXJlU2FuZGJveChkaWN0KToKKyAgICAgICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgICBhcmdzID0gW21heWJlX3ByZXBhcmVfZnVuY3Rpb24oYXJnKSBmb3IgYXJnIGluIGFyZ3NdCisgICAgICAgICAgICAgICAgIGt3YXJncyA9IHtrOiBtYXliZV9wcmVwYXJlX2Z1bmN0aW9uKHYpCistICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBrd2FyZ3MuaXRlcml0ZW1zKCl9CisrICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBrd2FyZ3MuaXRlbXMoKX0KKyAgICAgICAgICAgICAgICAgcmV0ID0gdGVtcGxhdGUoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgICAgICBpZiBpc2Z1bmN0aW9uKHJldCk6CisgICAgICAgICAgICAgICAgICAgICAjIFdlIGNhbid0IGV4cGVjdCB0aGUgc2FuZGJveGVkIGNvZGUgdG8gdGhpbmsgYWJvdXQgYWxsIHRoZQorQEAgLTc2Niw3ICs3OTcsNyBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgZm9yIHZhbHVlLCByZXF1aXJlZCBpbiAoCisgICAgICAgICAgICAgICAgIChfaW1wb3J0LCBUcnVlKSwgKF9mcm9tLCBGYWxzZSksIChfYXMsIEZhbHNlKSk6CisgCistICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHR5cGVzLlN0cmluZ1R5cGVzKSBhbmQgKAorKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCAoc3RyLCkpIGFuZCAoCisgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZCBvciB2YWx1ZSBpcyBub3QgTm9uZSk6CisgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5leHBlY3RlZCB0eXBlOiAnJXMnIiAlIHR5cGUodmFsdWUpLl9fbmFtZV9fKQorICAgICAgICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lIGFuZCBub3Qgc2VsZi5SRV9NT0RVTEUubWF0Y2godmFsdWUpOgorQEAgLTgwNyw3ICs4MzgsNyBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgIyBTcGVjaWFsIGNhc2UgZm9yIHRoZSBvcGVuKCkgYnVpbHRpbiwgYmVjYXVzZSBvdGhlcndpc2UsIHVzaW5nIGl0CisgICAgICAgICAjIGZhaWxzIHdpdGggIklPRXJyb3I6IGZpbGUoKSBjb25zdHJ1Y3RvciBub3QgYWNjZXNzaWJsZSBpbgorICAgICAgICAgIyByZXN0cmljdGVkIG1vZGUiCistICAgICAgICBpZiB3aGF0ID09ICdfX2J1aWx0aW5fXy5vcGVuJzoKKysgICAgICAgIGlmIHdoYXQgPT0gJ2J1aWx0aW5zLm9wZW4nOgorICAgICAgICAgICAgIHJldHVybiBsYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBvcGVuKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICMgVW50aWwgdGhpcyBwcm92ZXMgdG8gYmUgYSBwZXJmb3JtYW5jZSBwcm9ibGVtLCBqdXN0IGNvbnN0cnVjdCBhbgorICAgICAgICAgIyBpbXBvcnQgc3RhdGVtZW50IGFuZCBleGVjdXRlIGl0LgorQEAgLTgyOSw3ICs4NjAsNyBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgbmFtZSA9IHNlbGYuX3Jlc29sdmUobmFtZSwgbmVlZF9oZWxwX2RlcGVuZGVuY3k9RmFsc2UpCisgICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgcmV0dXJuCistICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShuYW1lLCB0eXBlcy5TdHJpbmdUeXBlcyk6CisrICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShuYW1lLCAoc3RyLCkpOgorICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5leHBlY3RlZCB0eXBlOiAnJXMnIiAlIHR5cGUobmFtZSkuX19uYW1lX18pCisgICAgICAgICBpZiBuYW1lIGluIGRhdGE6CisgICAgICAgICAgICAgcmFpc2UgQ29uZmlndXJlRXJyb3IoCitAQCAtODUwLDYgKzg4MSw3IEBAIGNsYXNzIENvbmZpZ3VyZVNhbmRib3goZGljdCk6CisgCisgICAgICAgICBzZWxmLl9leGVjdXRpb25fcXVldWUuYXBwZW5kKCgKKyAgICAgICAgICAgICBzZWxmLl9yZXNvbHZlX2FuZF9zZXQsIChzZWxmLl9jb25maWcsIG5hbWUsIHZhbHVlLCB3aGVuKSkpCisrICAgICAgICBzZWxmLnRhc2tzX2RlYnVnX291dCgiQ29uZmlndXJlU2FuZGJveC5zZXRfY29uZmlnX2ltcGwgLyAlcyglcyIgJSAobmFtZSwgdmFsdWUpKQorIAorICAgICBkZWYgc2V0X2RlZmluZV9pbXBsKHNlbGYsIG5hbWUsIHZhbHVlLCB3aGVuPU5vbmUpOgorICAgICAgICAgJycnSW1wbGVtZW50YXRpb24gb2Ygc2V0X2RlZmluZSgpLgorQEAgLTg2NCw2ICs4OTYsNyBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgZGVmaW5lcyA9IHNlbGYuX2NvbmZpZy5zZXRkZWZhdWx0KCdERUZJTkVTJywge30pCisgICAgICAgICBzZWxmLl9leGVjdXRpb25fcXVldWUuYXBwZW5kKCgKKyAgICAgICAgICAgICBzZWxmLl9yZXNvbHZlX2FuZF9zZXQsIChkZWZpbmVzLCBuYW1lLCB2YWx1ZSwgd2hlbikpKQorKyAgICAgICAgc2VsZi50YXNrc19kZWJ1Z19vdXQoIkNvbmZpZ3VyZVNhbmRib3guc2V0X2RlZmluZV9pbXBsIC8gJXMoJXMpIiAlIChuYW1lLCB2YWx1ZSkpCisgCisgICAgIGRlZiBpbXBseV9vcHRpb25faW1wbChzZWxmLCBvcHRpb24sIHZhbHVlLCByZWFzb249Tm9uZSwgd2hlbj1Ob25lKToKKyAgICAgICAgICcnJ0ltcGxlbWVudGF0aW9uIG9mIGltcGx5X29wdGlvbigpLgorQEAgLTkyMiw3ICs5NTUsNyBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBvc3NpYmxlX3JlYXNvbnNbMF0sIE9wdGlvbik6CisgICAgICAgICAgICAgICAgICAgICByZWFzb24gPSBwb3NzaWJsZV9yZWFzb25zWzBdCisgICAgICAgICBpZiBub3QgcmVhc29uIGFuZCAoaXNpbnN0YW5jZSh2YWx1ZSwgKGJvb2wsIHR1cGxlKSkgb3IKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKHZhbHVlLCB0eXBlcy5TdHJpbmdUeXBlcykpOgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UodmFsdWUsIChzdHIsKSkpOgorICAgICAgICAgICAgICMgQSByZWFzb24gY2FuIGJlIHByb3ZpZGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBpbXBseV9vcHRpb24KKyAgICAgICAgICAgICAjIGlzIGNhbGxlZCB3aXRoIGFuIGltbWVkaWF0ZSB2YWx1ZS4KKyAgICAgICAgICAgICBfLCBmaWxlbmFtZSwgbGluZSwgXywgXywgXyA9IGluc3BlY3Quc3RhY2soKVsxXQorQEAgLTk1NSwxMCArOTg4LDEwIEBAIGNsYXNzIENvbmZpZ3VyZVNhbmRib3goZGljdCk6CisgICAgICAgICBpZiBub3QgaW5zcGVjdC5pc2Z1bmN0aW9uKGZ1bmMpOgorICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5leHBlY3RlZCB0eXBlOiAnJXMnIiAlIHR5cGUoZnVuYykuX19uYW1lX18pCisgICAgICAgICBpZiBmdW5jIGluIHNlbGYuX3ByZXBhcmVkX2Z1bmN0aW9uczoKKy0gICAgICAgICAgICByZXR1cm4gZnVuYywgZnVuYy5mdW5jX2dsb2JhbHMKKysgICAgICAgICAgICByZXR1cm4gZnVuYywgZnVuYy5fX2dsb2JhbHNfXworIAorICAgICAgICAgZ2xvYiA9IFNhbmRib3hlZEdsb2JhbCgKKy0gICAgICAgICAgICAoaywgdikgZm9yIGssIHYgaW4gZnVuYy5mdW5jX2dsb2JhbHMuaXRlcml0ZW1zKCkKKysgICAgICAgICAgICAoaywgdikgZm9yIGssIHYgaW4gZnVuYy5fX2dsb2JhbHNfXy5pdGVtcygpCisgICAgICAgICAgICAgaWYgKGluc3BlY3QuaXNmdW5jdGlvbih2KSBhbmQgdiBub3QgaW4gc2VsZi5fdGVtcGxhdGVzKSBvciAoCisgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNjbGFzcyh2KSBhbmQgaXNzdWJjbGFzcyh2LCBFeGNlcHRpb24pKQorICAgICAgICAgKQorQEAgLTk3OSwyMCArMTAxMiwyMCBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgIyBOb3RlIHRoaXMgaXMgbm90IGVudGlyZWx5IGJ1bGxldCBwcm9vZiAoaWYgdGhlIHZhbHVlIGlzIGUuZy4gYSBsaXN0LAorICAgICAgICAgIyB0aGUgbGlzdCBjb250ZW50cyBjb3VsZCBoYXZlIGNoYW5nZWQpLCBidXQgY292ZXJzIHRoZSBiYXNlcy4KKyAgICAgICAgIGNsb3N1cmUgPSBOb25lCistICAgICAgICBpZiBmdW5jLmZ1bmNfY2xvc3VyZToKKysgICAgICAgIGlmIGZ1bmMuX19jbG9zdXJlX186CisgICAgICAgICAgICAgZGVmIG1ha2VjZWxsKGNvbnRlbnQpOgorICAgICAgICAgICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgICAgICAgICAgY29udGVudAorLSAgICAgICAgICAgICAgICByZXR1cm4gZi5mdW5jX2Nsb3N1cmVbMF0KKysgICAgICAgICAgICAgICAgcmV0dXJuIGYuX19jbG9zdXJlX19bMF0KKyAKKyAgICAgICAgICAgICBjbG9zdXJlID0gdHVwbGUobWFrZWNlbGwoY2VsbC5jZWxsX2NvbnRlbnRzKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgY2VsbCBpbiBmdW5jLmZ1bmNfY2xvc3VyZSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNlbGwgaW4gZnVuYy5fX2Nsb3N1cmVfXykKKyAKKyAgICAgICAgIG5ld19mdW5jID0gc2VsZi53cmFwcyhmdW5jKSh0eXBlcy5GdW5jdGlvblR5cGUoCistICAgICAgICAgICAgZnVuYy5mdW5jX2NvZGUsCisrICAgICAgICAgICAgZnVuYy5fX2NvZGVfXywKKyAgICAgICAgICAgICBnbG9iLAorICAgICAgICAgICAgIGZ1bmMuX19uYW1lX18sCistICAgICAgICAgICAgZnVuYy5mdW5jX2RlZmF1bHRzLAorKyAgICAgICAgICAgIGZ1bmMuX19kZWZhdWx0c19fLAorICAgICAgICAgICAgIGNsb3N1cmUKKyAgICAgICAgICkpCisgICAgICAgICBAc2VsZi53cmFwcyhuZXdfZnVuYykKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29uZmlndXJlL2NoZWNrX2RlYnVnX3Jhbmdlcy5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9jb25maWd1cmUvY2hlY2tfZGVidWdfcmFuZ2VzLnB5CitpbmRleCBjMGNhYTljYzUuLmEzZTFmMzdlMSAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9jb25maWd1cmUvY2hlY2tfZGVidWdfcmFuZ2VzLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29uZmlndXJlL2NoZWNrX2RlYnVnX3Jhbmdlcy5weQorQEAgLTYsNyArNiw3IEBACisgIyB0byBhIGdpdmVuIGNvbXBpbGF0aW9uIHVuaXQuIFRoaXMgaXMgdXNlZCBhcyBhIGhlbHBlciB0byBmaW5kIGEgYnVnIGluIHNvbWUKKyAjIHZlcnNpb25zIG9mIEdOVSBsZC4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorKworIAorIGltcG9ydCBzdWJwcm9jZXNzCisgaW1wb3J0IHN5cworQEAgLTQ1LDYgKzQ1LDggQEAgZGVmIGdldF9yYW5nZV9sZW5ndGgocmFuZ2UsIGRlYnVnX3Jhbmdlcyk6CisgZGVmIG1haW4oYmluLCBjb21waWxhdGlvbl91bml0KToKKyAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oWydvYmpkdW1wJywgJy1XJywgYmluXSwgc3Rkb3V0ID0gc3VicHJvY2Vzcy5QSVBFLCBzdGRlcnIgPSBzdWJwcm9jZXNzLlBJUEUpCisgICAgIChvdXQsIGVycikgPSBwLmNvbW11bmljYXRlKCkKKysgICAgaWYgaXNpbnN0YW5jZShvdXQsIGJ5dGVzKToKKysgICAgICAgIG91dCA9IG91dC5kZWNvZGUoJ3V0Zi04JykKKyAgICAgc2VjdGlvbnMgPSByZS5zcGxpdCgnXG4oQ29udGVudHMgb2YgdGhlfFRoZSBzZWN0aW9uKSAnLCBvdXQpCisgICAgIGRlYnVnX2luZm8gPSBbcyBmb3IgcyBpbiBzZWN0aW9ucyBpZiBzLnN0YXJ0c3dpdGgoJy5kZWJ1Z19pbmZvJyldCisgICAgIGRlYnVnX3JhbmdlcyA9IFtzIGZvciBzIGluIHNlY3Rpb25zIGlmIHMuc3RhcnRzd2l0aCgnLmRlYnVnX3JhbmdlcycpXQorQEAgLTU5LDQgKzYxLDQgQEAgZGVmIG1haW4oYmluLCBjb21waWxhdGlvbl91bml0KToKKyAKKyAKKyBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorLSAgICBwcmludChtYWluKCpzeXMuYXJndlsxOl0pKQorKyAgICBwcmludCgobWFpbigqc3lzLmFyZ3ZbMTpdKSkpCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2NvbmZpZ3VyZS9vcHRpb25zLnB5IGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2NvbmZpZ3VyZS9vcHRpb25zLnB5CitpbmRleCA1M2FlMmFlNmQuLjRkODBjYWQ4NiAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9jb25maWd1cmUvb3B0aW9ucy5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2NvbmZpZ3VyZS9vcHRpb25zLnB5CitAQCAtMiw3ICsyLDcgQEAKKyAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKKyAjIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCisgCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uLCB1bmljb2RlX2xpdGVyYWxzCisrCisgCisgaW1wb3J0IG9zCisgaW1wb3J0IHN5cworQEAgLTEyLDcgKzEyLDcgQEAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKKyAKKyBkZWYgaXN0dXBsZW9mc3RyaW5ncyhvYmopOgorICAgICByZXR1cm4gaXNpbnN0YW5jZShvYmosIHR1cGxlKSBhbmQgbGVuKG9iaikgYW5kIGFsbCgKKy0gICAgICAgIGlzaW5zdGFuY2UobywgdHlwZXMuU3RyaW5nVHlwZXMpIGZvciBvIGluIG9iaikKKysgICAgICAgIGlzaW5zdGFuY2UobywgKHN0ciwpKSBmb3IgbyBpbiBvYmopCisgCisgCisgY2xhc3MgT3B0aW9uVmFsdWUodHVwbGUpOgorQEAgLTg4LDcgKzg4LDcgQEAgY2xhc3MgUG9zaXRpdmVPcHRpb25WYWx1ZShPcHRpb25WYWx1ZSk6CisgICAgIGluIHRoZSBmb3JtIG9mIGEgdHVwbGUgZm9yIHdoZW4gdmFsdWVzIGFyZSBnaXZlbiB0byB0aGUgb3B0aW9uIChpbiB0aGUgZm9ybQorICAgICAtLW9wdGlvbj12YWx1ZVssdmFsdWUyLi4uXS4KKyAgICAgJycnCistICAgIGRlZiBfX25vbnplcm9fXyhzZWxmKToKKysgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgorICAgICAgICAgcmV0dXJuIFRydWUKKyAKKyAKK0BAIC0xMTMsNyArMTEzLDcgQEAgY2xhc3MgQ29uZmxpY3RpbmdPcHRpb25FcnJvcihJbnZhbGlkT3B0aW9uRXJyb3IpOgorICAgICAgICAgaWYgZm9ybWF0X2RhdGE6CisgICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UuZm9ybWF0KCoqZm9ybWF0X2RhdGEpCisgICAgICAgICBzdXBlcihDb25mbGljdGluZ09wdGlvbkVycm9yLCBzZWxmKS5fX2luaXRfXyhtZXNzYWdlKQorLSAgICAgICAgZm9yIGssIHYgaW4gZm9ybWF0X2RhdGEuaXRlcml0ZW1zKCk6CisrICAgICAgICBmb3IgaywgdiBpbiBmb3JtYXRfZGF0YS5pdGVtcygpOgorICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwgaywgdikKKyAKKyAKK0BAIC0xNDksNyArMTQ5LDcgQEAgY2xhc3MgT3B0aW9uKG9iamVjdCk6CisgICAgICAgICAgICAgICAgICdBdCBsZWFzdCBhbiBvcHRpb24gbmFtZSBvciBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lIG11c3QgJworICAgICAgICAgICAgICAgICAnYmUgZ2l2ZW4nKQorICAgICAgICAgaWYgbmFtZToKKy0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShuYW1lLCB0eXBlcy5TdHJpbmdUeXBlcyk6CisrICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobmFtZSwgKHN0ciwpKToKKyAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZE9wdGlvbkVycm9yKCdPcHRpb24gbXVzdCBiZSBhIHN0cmluZycpCisgICAgICAgICAgICAgaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgnLS0nKToKKyAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZE9wdGlvbkVycm9yKCdPcHRpb24gbXVzdCBzdGFydCB3aXRoIGAtLWAnKQorQEAgLTE1OCw3ICsxNTgsNyBAQCBjbGFzcyBPcHRpb24ob2JqZWN0KToKKyAgICAgICAgICAgICBpZiBub3QgbmFtZS5pc2xvd2VyKCk6CisgICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRPcHRpb25FcnJvcignT3B0aW9uIG11c3QgYmUgYWxsIGxvd2VyY2FzZScpCisgICAgICAgICBpZiBlbnY6CistICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZW52LCB0eXBlcy5TdHJpbmdUeXBlcyk6CisrICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZW52LCAoc3RyLCkpOgorICAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkT3B0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAnRW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZSBtdXN0IGJlIGEgc3RyaW5nJykKKyAgICAgICAgICAgICBpZiBub3QgZW52LmlzdXBwZXIoKToKK0BAIC0xNjgsOCArMTY4LDggQEAgY2xhc3MgT3B0aW9uKG9iamVjdCk6CisgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UobmFyZ3MsIGludCkgYW5kIG5hcmdzID49IDApOgorICAgICAgICAgICAgIHJhaXNlIEludmFsaWRPcHRpb25FcnJvcigKKyAgICAgICAgICAgICAgICAgIm5hcmdzIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLCAnPycsICcqJyBvciAnKyciKQorLSAgICAgICAgaWYgKG5vdCBpc2luc3RhbmNlKGRlZmF1bHQsIHR5cGVzLlN0cmluZ1R5cGVzKSBhbmQKKy0gICAgICAgICAgICAgICAgbm90IGlzaW5zdGFuY2UoZGVmYXVsdCwgKGJvb2wsIHR5cGVzLk5vbmVUeXBlKSkgYW5kCisrICAgICAgICBpZiAobm90IGlzaW5zdGFuY2UoZGVmYXVsdCwgKHN0ciwpKSBhbmQKKysgICAgICAgICAgICAgICAgbm90IGlzaW5zdGFuY2UoZGVmYXVsdCwgKGJvb2wsIHR5cGUoTm9uZSkpKSBhbmQKKyAgICAgICAgICAgICAgICAgbm90IGlzdHVwbGVvZnN0cmluZ3MoZGVmYXVsdCkpOgorICAgICAgICAgICAgIHJhaXNlIEludmFsaWRPcHRpb25FcnJvcigKKyAgICAgICAgICAgICAgICAgJ2RlZmF1bHQgbXVzdCBiZSBhIGJvb2wsIGEgc3RyaW5nIG9yIGEgdHVwbGUgb2Ygc3RyaW5ncycpCitAQCAtMjQxLDcgKzI0MSw3IEBAIGNsYXNzIE9wdGlvbihvYmplY3QpOgorICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKCInJXMnIiAlIGMgZm9yIGMgaW4gY2hvaWNlcykpCisgICAgICAgICBlbGlmIGhhc19jaG9pY2VzOgorICAgICAgICAgICAgIG1heGFyZ3MgPSBzZWxmLm1heGFyZ3MKKy0gICAgICAgICAgICBpZiBsZW4oY2hvaWNlcykgPCBtYXhhcmdzIGFuZCBtYXhhcmdzICE9IHN5cy5tYXhpbnQ6CisrICAgICAgICAgICAgaWYgbGVuKGNob2ljZXMpIDwgbWF4YXJncyBhbmQgbWF4YXJncyAhPSBzeXMubWF4c2l6ZToKKyAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZE9wdGlvbkVycm9yKCdOb3QgZW5vdWdoIGBjaG9pY2VzYCBmb3IgYG5hcmdzYCcpCisgICAgICAgICBzZWxmLmNob2ljZXMgPSBjaG9pY2VzCisgICAgICAgICBzZWxmLmhlbHAgPSBoZWxwCitAQCAtMjU1LDcgKzI1NSw3IEBAIGNsYXNzIE9wdGlvbihvYmplY3QpOgorICAgICAgICAgd2hlcmUgcHJlZml4IGlzIG9uZSBvZiAnd2l0aCcsICd3aXRob3V0JywgJ2VuYWJsZScgb3IgJ2Rpc2FibGUnLgorICAgICAgICAgVGhlICc9dmFsdWVzJyBwYXJ0IGlzIG9wdGlvbmFsLiBWYWx1ZXMgYXJlIHNlcGFyYXRlZCB3aXRoIGNvbW1hcy4KKyAgICAgICAgICcnJworLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3B0aW9uLCB0eXBlcy5TdHJpbmdUeXBlcyk6CisrICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvcHRpb24sIChzdHIsKSk6CisgICAgICAgICAgICAgcmFpc2UgSW52YWxpZE9wdGlvbkVycm9yKCdPcHRpb24gbXVzdCBiZSBhIHN0cmluZycpCisgCisgICAgICAgICBlbGVtZW50cyA9IG9wdGlvbi5zcGxpdCgnPScsIDEpCitAQCAtMzA4LDcgKzMwOCw3IEBAIGNsYXNzIE9wdGlvbihvYmplY3QpOgorICAgICBkZWYgbWF4YXJncyhzZWxmKToKKyAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5uYXJncywgaW50KToKKyAgICAgICAgICAgICByZXR1cm4gc2VsZi5uYXJncworLSAgICAgICAgcmV0dXJuIDEgaWYgc2VsZi5uYXJncyA9PSAnPycgZWxzZSBzeXMubWF4aW50CisrICAgICAgICByZXR1cm4gMSBpZiBzZWxmLm5hcmdzID09ICc/JyBlbHNlIHN5cy5tYXhzaXplCisgCisgICAgIGRlZiBfdmFsaWRhdGVfbmFyZ3Moc2VsZiwgbnVtKToKKyAgICAgICAgIG1pbmFyZ3MsIG1heGFyZ3MgPSBzZWxmLm1pbmFyZ3MsIHNlbGYubWF4YXJncworQEAgLTQ5OSw1ICs0OTksNSBAQCBjbGFzcyBDb21tYW5kTGluZUhlbHBlcihvYmplY3QpOgorIAorICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICBmb3IgZCBpbiAoc2VsZi5fYXJncywgc2VsZi5fZXh0cmFfYXJncyk6CistICAgICAgICAgICAgZm9yIGFyZywgcG9zIGluIGQuaXRlcnZhbHVlcygpOgorKyAgICAgICAgICAgIGZvciBhcmcsIHBvcyBpbiBkLnZhbHVlcygpOgorICAgICAgICAgICAgICAgICB5aWVsZCBhcmcKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29uZmlndXJlL3V0aWwucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29uZmlndXJlL3V0aWwucHkKK2luZGV4IDlkOGIyZWIwZS4uYTEyOTg2ZTQ4IDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2NvbmZpZ3VyZS91dGlsLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29uZmlndXJlL3V0aWwucHkKK0BAIC03NywxNSArNzcsNyBAQCBjbGFzcyBDb25maWd1cmVPdXRwdXRIYW5kbGVyKGxvZ2dpbmcuSGFuZGxlcik6CisgICAgICAgICAjIFB5dGhvbiBoYXMgdGhpcyBmZWF0dXJlIHdoZXJlIGl0IHNldHMgdGhlIGVuY29kaW5nIG9mIHBpcGVzIHRvCisgICAgICAgICAjIGFzY2lpLCB3aGljaCBibGF0YW50bHkgZmFpbHMgd2hlbiB0cnlpbmcgdG8gcHJpbnQgb3V0IG5vbi1hc2NpaS4KKyAgICAgICAgIGRlZiBmaXhfZW5jb2RpbmcoZmgpOgorLSAgICAgICAgICAgIHRyeToKKy0gICAgICAgICAgICAgICAgaXNhdHR5ID0gZmguaXNhdHR5KCkKKy0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CistICAgICAgICAgICAgICAgIGlzYXR0eSA9IFRydWUKKy0KKy0gICAgICAgICAgICBpZiBub3QgaXNhdHR5OgorLSAgICAgICAgICAgICAgICBlbmNvZGluZyA9IGdldHByZWZlcnJlZGVuY29kaW5nKCkKKy0gICAgICAgICAgICAgICAgaWYgZW5jb2Rpbmc6CistICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29kZWNzLmdldHdyaXRlcihlbmNvZGluZykoZmgpCisrICAgICAgICAgICAgIyBubyBtYWdpYyBvbiBvZSAvIHB5dGhvbjMKKyAgICAgICAgICAgICByZXR1cm4gZmgKKyAKKyAgICAgICAgIHNlbGYuX3N0ZG91dCA9IGZpeF9lbmNvZGluZyhzdGRvdXQpCitAQCAtMjAwLDcgKzE5Miw3IEBAIGNsYXNzIExpbmVJTyhvYmplY3QpOgorICAgICAgICAgc2VsZi5fZXJyb3JzID0gZXJyb3JzCisgCisgICAgIGRlZiB3cml0ZShzZWxmLCBidWYpOgorLSAgICAgICAgaWYgc2VsZi5fZW5jb2RpbmcgYW5kIGlzaW5zdGFuY2UoYnVmLCBzdHIpOgorKyAgICAgICAgaWYgc2VsZi5fZW5jb2RpbmcgYW5kIGlzaW5zdGFuY2UoYnVmLCBieXRlcyk6CisgICAgICAgICAgICAgYnVmID0gYnVmLmRlY29kZShzZWxmLl9lbmNvZGluZywgc2VsZi5fZXJyb3JzKQorICAgICAgICAgbGluZXMgPSBidWYuc3BsaXRsaW5lcygpCisgICAgICAgICBpZiBub3QgbGluZXM6CitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2NvbnRyb2xsZXIvYnVpbGRpbmcucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29udHJvbGxlci9idWlsZGluZy5weQoraW5kZXggZDVhZjUzMmY3Li5lOTgxMGZlNTggMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29udHJvbGxlci9idWlsZGluZy5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2NvbnRyb2xsZXIvYnVpbGRpbmcucHkKK0BAIC0yLDcgKzIsNyBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgdW5pY29kZV9saXRlcmFscworKworIAorIGltcG9ydCBlcnJubworIGltcG9ydCBnZXRwYXNzCitAQCAtMTQ2LDcgKzE0Niw3IEBAIGNsYXNzIFRpZXJTdGF0dXMob2JqZWN0KToKKyAgICAgICAgICIiIgorICAgICAgICAgbyA9IFtdCisgCistICAgICAgICBmb3IgdGllciwgc3RhdGUgaW4gc2VsZi50aWVycy5pdGVtcygpOgorKyAgICAgICAgZm9yIHRpZXIsIHN0YXRlIGluIGxpc3Qoc2VsZi50aWVycy5pdGVtcygpKToKKyAgICAgICAgICAgICB0X2VudHJ5ID0gZGljdCgKKyAgICAgICAgICAgICAgICAgbmFtZT10aWVyLAorICAgICAgICAgICAgICAgICBzdGFydD1zdGF0ZVsnYmVnaW5fdGltZSddLAorQEAgLTU3NCw3ICs1NzQsNyBAQCBjbGFzcyBCdWlsZFByb2dyZXNzRm9vdGVyKEZvb3Rlcik6CisgCisgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXJtaW5hbCwgbW9uaXRvcik6CisgICAgICAgICBGb290ZXIuX19pbml0X18oc2VsZiwgdGVybWluYWwpCistICAgICAgICBzZWxmLnRpZXJzID0gbW9uaXRvci50aWVycy50aWVyX3N0YXR1cy52aWV3aXRlbXMoKQorKyAgICAgICAgc2VsZi50aWVycyA9IG1vbml0b3IudGllcnMudGllcl9zdGF0dXMuaXRlbXMoKQorIAorICAgICBkZWYgZHJhdyhzZWxmKToKKyAgICAgICAgICIiIkRyYXdzIHRoaXMgZm9vdGVyIGluIHRoZSB0ZXJtaW5hbC4iIiIKK0BAIC05MTEsOCArOTExLDggQEAgY2xhc3MgQ0NhY2hlU3RhdHMob2JqZWN0KToKKyAKKyAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCisgCistICAgIGRlZiBfX25vbnplcm9fXyhzZWxmKToKKy0gICAgICAgIHJlbGF0aXZlX3ZhbHVlcyA9IFt2IGZvciBrLCB2IGluIHNlbGYuX3ZhbHVlcy5pdGVtcygpCisrICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKKysgICAgICAgIHJlbGF0aXZlX3ZhbHVlcyA9IFt2IGZvciBrLCB2IGluIGxpc3Qoc2VsZi5fdmFsdWVzLml0ZW1zKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgayBub3QgaW4gc2VsZi5BQlNPTFVURV9LRVlTXQorICAgICAgICAgcmV0dXJuIChhbGwodiA+PSAwIGZvciB2IGluIHJlbGF0aXZlX3ZhbHVlcykgYW5kCisgICAgICAgICAgICAgICAgIGFueSh2ID4gMCBmb3IgdiBpbiByZWxhdGl2ZV92YWx1ZXMpKQorQEAgLTExNTYsNyArMTE1Niw3IEBAIGNsYXNzIEJ1aWxkRHJpdmVyKE1vemJ1aWxkT2JqZWN0KToKKyAKKyAgICAgICAgIGhpZ2hfZmluZGVyLCBmaW5kZXJfcGVyY2VudCA9IG1vbml0b3IuaGF2ZV9oaWdoX2ZpbmRlcl91c2FnZSgpCisgICAgICAgICBpZiBoaWdoX2ZpbmRlcjoKKy0gICAgICAgICAgICBwcmludChGSU5ERVJfU0xPV19NRVNTQUdFICUgZmluZGVyX3BlcmNlbnQpCisrICAgICAgICAgICAgcHJpbnQoKEZJTkRFUl9TTE9XX01FU1NBR0UgJSBmaW5kZXJfcGVyY2VudCkpCisgCisgICAgICAgICBjY2FjaGVfZW5kID0gbW9uaXRvci5jY2FjaGVfc3RhdHMoKQorIAorQEAgLTEyNzYsOCArMTI3Niw4IEBAIGNsYXNzIEJ1aWxkRHJpdmVyKE1vemJ1aWxkT2JqZWN0KToKKyAgICAgICAgICIiIkluc3RhbGwgdGVzdCBmaWxlcy4iIiIKKyAKKyAgICAgICAgIGlmIHNlbGYuaXNfY2xvYmJlcl9uZWVkZWQoKToKKy0gICAgICAgICAgICBwcmludChJTlNUQUxMX1RFU1RTX0NMT0JCRVIuZm9ybWF0KAorLSAgICAgICAgICAgICAgICAgIGNsb2JiZXJfZmlsZT1vcy5wYXRoLmpvaW4oc2VsZi50b3BvYmpkaXIsICdDTE9CQkVSJykpKQorKyAgICAgICAgICAgIHByaW50KChJTlNUQUxMX1RFU1RTX0NMT0JCRVIuZm9ybWF0KAorKyAgICAgICAgICAgICAgICAgIGNsb2JiZXJfZmlsZT1vcy5wYXRoLmpvaW4oc2VsZi50b3BvYmpkaXIsICdDTE9CQkVSJykpKSkKKyAgICAgICAgICAgICBzeXMuZXhpdCgxKQorIAorICAgICAgICAgaWYgbm90IHRlc3Rfb2JqczoKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvZnJvbnRlbmQvY29udGV4dC5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9mcm9udGVuZC9jb250ZXh0LnB5CitpbmRleCBmYmRiZWZjMWQuLjFhZWY2YTY1YSAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9mcm9udGVuZC9jb250ZXh0LnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvZnJvbnRlbmQvY29udGV4dC5weQorQEAgLTE0LDcgKzE0LDcgQEAgSWYgeW91IGFyZSBsb29raW5nIGZvciB0aGUgYWJzb2x1dGUgYXV0aG9yaXR5IG9uIHdoYXQgbW96LmJ1aWxkIGZpbGVzIGNhbgorIGNvbnRhaW4sIHlvdSd2ZSBjb21lIHRvIHRoZSByaWdodCBwbGFjZS4KKyAiIiIKKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgdW5pY29kZV9saXRlcmFscworKworIAorIGltcG9ydCBvcworIAorQEAgLTIzNywxNSArMjM3LDE1IEBAIGNsYXNzIENvbnRleHQoS2V5ZWREZWZhdWx0RGljdCk6CisgICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHRyYW5zYWN0aW9uYWw6IGlmIHNldGl0ZW0gZmFpbHMgZm9yIG9uZSBvZiB0aGUgdmFsdWVzLAorICAgICAgICAgdGhlIGNvbnRleHQgaXMgbm90IHVwZGF0ZWQgYXQgYWxsLiIiIgorICAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVyYWJsZSwgZGljdCk6CistICAgICAgICAgICAgaXRlcmFibGUgPSBpdGVyYWJsZS5pdGVtcygpCisrICAgICAgICAgICAgaXRlcmFibGUgPSBsaXN0KGl0ZXJhYmxlLml0ZW1zKCkpCisgCisgICAgICAgICB1cGRhdGUgPSB7fQorLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gaXRlcnRvb2xzLmNoYWluKGl0ZXJhYmxlLCBrd2FyZ3MuaXRlbXMoKSk6CisrICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVydG9vbHMuY2hhaW4oaXRlcmFibGUsIGxpc3Qoa3dhcmdzLml0ZW1zKCkpKToKKyAgICAgICAgICAgICBzdG9yZWRfdHlwZSA9IHNlbGYuX3ZhbGlkYXRlKGtleSwgdmFsdWUpCisgICAgICAgICAgICAgIyBEb24ndCBjcmVhdGUgYW4gaW5zdGFuY2Ugb2Ygc3RvcmVkX3R5cGUgaWYgY29lcmNpb24gaXMgbmVlZGVkLAorICAgICAgICAgICAgICMgdW50aWwgYWxsIHZhbHVlcyBhcmUgdmFsaWRhdGVkLgorICAgICAgICAgICAgIHVwZGF0ZVtrZXldID0gKHZhbHVlLCBzdG9yZWRfdHlwZSkKKy0gICAgICAgIGZvciBrZXksICh2YWx1ZSwgc3RvcmVkX3R5cGUpIGluIHVwZGF0ZS5pdGVtcygpOgorKyAgICAgICAgZm9yIGtleSwgKHZhbHVlLCBzdG9yZWRfdHlwZSkgaW4gbGlzdCh1cGRhdGUuaXRlbXMoKSk6CisgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHN0b3JlZF90eXBlKToKKyAgICAgICAgICAgICAgICAgdXBkYXRlW2tleV0gPSBzdG9yZWRfdHlwZSh2YWx1ZSkKKyAgICAgICAgICAgICBlbHNlOgorQEAgLTMxMSw3ICszMTEsNyBAQCBjbGFzcyBCYXNlQ29tcGlsZUZsYWdzKENvbnRleHREZXJpdmVkVmFsdWUsIGRpY3QpOgorICAgICAgICAgIyBhIHRlbXBsYXRlIHdlcmUgc2V0IGFuZCB3aGljaCB3ZXJlIHByb3ZpZGVkIGFzIGRlZmF1bHRzLgorICAgICAgICAgdGVtcGxhdGVfbmFtZSA9IGdldGF0dHIoY29udGV4dCwgJ3RlbXBsYXRlJywgTm9uZSkKKyAgICAgICAgIGlmIHRlbXBsYXRlX25hbWUgaW4gKE5vbmUsICdHeXAnKToKKy0gICAgICAgICAgICBkaWN0Ll9faW5pdF9fKHNlbGYsICgoaywgdiBpZiB2IGlzIE5vbmUgZWxzZSBUeXBlZExpc3QodW5pY29kZSkodikpCisrICAgICAgICAgICAgZGljdC5fX2luaXRfXyhzZWxmLCAoKGssIHYgaWYgdiBpcyBOb25lIGVsc2UgVHlwZWRMaXN0KHN0cikodikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYsIF8gaW4gc2VsZi5mbGFnX3ZhcmlhYmxlcykpCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIGRpY3QuX19pbml0X18oc2VsZikKK0BAIC01MjAsMTMgKzUyMCwxMyBAQCBjbGFzcyBDb21waWxlRmxhZ3MoQmFzZUNvbXBpbGVGbGFncyk6CisgICAgICAgICBpZiBrZXkgaW4gc2VsZiBhbmQgc2VsZltrZXldIGlzIE5vbmU6CisgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignYCVzYCBtYXkgbm90IGJlIHNldCBpbiBDT01QSUxFX0ZMQUdTIGZyb20gbW96LmJ1aWxkLCB0aGlzICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSBpcyByZXNvbHZlZCBmcm9tIHRoZSBlbWl0dGVyLicgJSBrZXkpCistICAgICAgICBpZiBub3QgKGlzaW5zdGFuY2UodmFsdWUsIGxpc3QpIGFuZCBhbGwoaXNpbnN0YW5jZSh2LCBiYXNlc3RyaW5nKSBmb3IgdiBpbiB2YWx1ZSkpOgorKyAgICAgICAgaWYgbm90IChpc2luc3RhbmNlKHZhbHVlLCBsaXN0KSBhbmQgYWxsKGlzaW5zdGFuY2Uodiwgc3RyKSBmb3IgdiBpbiB2YWx1ZSkpOgorICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0EgbGlzdCBvZiBzdHJpbmdzIG11c3QgYmUgcHJvdmlkZWQgYXMgYSB2YWx1ZSBmb3IgYSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGlsZSBmbGFncyBjYXRlZ29yeS4nKQorICAgICAgICAgZGljdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKQorIAorIAorLWNsYXNzIEZpbmFsVGFyZ2V0VmFsdWUoQ29udGV4dERlcml2ZWRWYWx1ZSwgdW5pY29kZSk6CisrY2xhc3MgRmluYWxUYXJnZXRWYWx1ZShDb250ZXh0RGVyaXZlZFZhbHVlLCBzdHIpOgorICAgICBkZWYgX19uZXdfXyhjbHMsIGNvbnRleHQsIHZhbHVlPSIiKToKKyAgICAgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgICAgICB2YWx1ZSA9ICdkaXN0LycKK0BAIC01MzYsNyArNTM2LDcgQEAgY2xhc3MgRmluYWxUYXJnZXRWYWx1ZShDb250ZXh0RGVyaXZlZFZhbHVlLCB1bmljb2RlKToKKyAgICAgICAgICAgICAgICAgdmFsdWUgKz0gJ2JpbicKKyAgICAgICAgICAgICBpZiBjb250ZXh0WydESVNUX1NVQkRJUiddOgorICAgICAgICAgICAgICAgICB2YWx1ZSArPSAnLycgKyBjb250ZXh0WydESVNUX1NVQkRJUiddCistICAgICAgICByZXR1cm4gdW5pY29kZS5fX25ld19fKGNscywgdmFsdWUpCisrICAgICAgICByZXR1cm4gc3RyLl9fbmV3X18oY2xzLCB2YWx1ZSkKKyAKKyAKKyBkZWYgRW51bSgqdmFsdWVzKToKK0BAIC01ODQsNyArNTg0LDcgQEAgY2xhc3MgUGF0aE1ldGEodHlwZSk6CisgICAgICAgICAgICAgICAgIGNscyA9IFNvdXJjZVBhdGgKKyAgICAgICAgIHJldHVybiBzdXBlcihQYXRoTWV0YSwgY2xzKS5fX2NhbGxfXyhjb250ZXh0LCB2YWx1ZSkKKyAKKy1jbGFzcyBQYXRoKENvbnRleHREZXJpdmVkVmFsdWUsIHVuaWNvZGUpOgorK2NsYXNzIFBhdGgoQ29udGV4dERlcml2ZWRWYWx1ZSwgc3RyLCBtZXRhY2xhc3M9UGF0aE1ldGEpOgorICAgICAiIiJTdG9yZXMgYW5kIHJlc29sdmVzIGEgc291cmNlIHBhdGggcmVsYXRpdmUgdG8gYSBnaXZlbiBjb250ZXh0CisgCisgICAgIFRoaXMgY2xhc3MgaXMgdXNlZCBhcyBhIGJhY2tpbmcgdHlwZSBmb3Igc29tZSBvZiB0aGUgc2FuZGJveCB2YXJpYWJsZXMuCitAQCAtNTk1LDcgKzU5NSw2IEBAIGNsYXNzIFBhdGgoQ29udGV4dERlcml2ZWRWYWx1ZSwgdW5pY29kZSk6CisgICAgICAgLSAnIW9iamRpci9yZWxhdGl2ZS9wYXRocycKKyAgICAgICAtICclL2ZpbGVzeXN0ZW0vYWJzb2x1dGUvcGF0aHMnCisgICAgICIiIgorLSAgICBfX21ldGFjbGFzc19fID0gUGF0aE1ldGEKKyAKKyAgICAgZGVmIF9fbmV3X18oY2xzLCBjb250ZXh0LCB2YWx1ZT1Ob25lKToKKyAgICAgICAgIHJldHVybiBzdXBlcihQYXRoLCBjbHMpLl9fbmV3X18oY2xzLCB2YWx1ZSkKK0BAIC02MTIsMTAgKzYxMSwxNCBAQCBjbGFzcyBQYXRoKENvbnRleHREZXJpdmVkVmFsdWUsIHVuaWNvZGUpOgorICAgICAgICAgIiIiCisgICAgICAgICByZXR1cm4gUGF0aChzZWxmLmNvbnRleHQsIG1venBhdGguam9pbihzZWxmLCAqcCkpCisgCisrICAgIEBzdGF0aWNtZXRob2QKKysgICAgZGVmIGNtcChhLCBiKToKKysgICAgICAgIHJldHVybiAoYSA+IGIpIC0gKGEgPCBiKQorKworICAgICBkZWYgX19jbXBfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBQYXRoKSBhbmQgc2VsZi5zcmNkaXIgIT0gb3RoZXIuc3JjZGlyOgorLSAgICAgICAgICAgIHJldHVybiBjbXAoc2VsZi5mdWxsX3BhdGgsIG90aGVyLmZ1bGxfcGF0aCkKKy0gICAgICAgIHJldHVybiBjbXAodW5pY29kZShzZWxmKSwgb3RoZXIpCisrICAgICAgICAgICAgcmV0dXJuIHNlbGYuY21wKHNlbGYuZnVsbF9wYXRoLCBvdGhlci5mdWxsX3BhdGgpCisrICAgICAgICByZXR1cm4gc2VsZi5jbXAoc3RyKHNlbGYpLCBvdGhlcikKKyAKKyAgICAgIyBfX2NtcF9fIGlzIG5vdCBlbm91Z2ggYmVjYXVzZSB1bmljb2RlIGhhcyBfX2VxX18sIF9fbmVfXywgZXRjLiBkZWZpbmVkCisgICAgICMgYW5kIF9fY21wX18gaXMgb25seSB1c2VkIGZvciB0aG9zZSB3aGVuIHRoZXkgZG9uJ3QgZXhpc3QuCitAQCAtNzczLDcgKzc3Niw3IEBAIGRlZiBDb250ZXh0RGVyaXZlZFR5cGVkUmVjb3JkKCpmaWVsZHMpOgorICAgICAgICAgX19zbG90c19fID0gdHVwbGUoW25hbWUgZm9yIG5hbWUsIF8gaW4gZmllbGRzXSkKKyAKKyAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb250ZXh0KToKKy0gICAgICAgICAgICBmb3IgZm5hbWUsIGZ0eXBlIGluIHNlbGYuX2ZpZWxkcy5pdGVtcygpOgorKyAgICAgICAgICAgIGZvciBmbmFtZSwgZnR5cGUgaW4gbGlzdChzZWxmLl9maWVsZHMuaXRlbXMoKSk6CisgICAgICAgICAgICAgICAgIGlmIGlzc3ViY2xhc3MoZnR5cGUsIENvbnRleHREZXJpdmVkVmFsdWUpOgorICAgICAgICAgICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBmbmFtZSwgc2VsZi5fZmllbGRzW2ZuYW1lXShjb250ZXh0KSkKKyAgICAgICAgICAgICAgICAgZWxzZToKK0BAIC05MDksOCArOTEyLDggQEAgZGVmIFR5cGVkTGlzdFdpdGhBY3Rpb24odHlwLCBhY3Rpb24pOgorICAgICByZXR1cm4gX1R5cGVkTGlzdFdpdGhBY3Rpb24KKyAKKyBXZWJQbGF0Zm9ybVRlc3RNYW5pZmVzdCA9IFR5cGVkTmFtZWRUdXBsZSgiV2ViUGxhdGZvcm1UZXN0TWFuaWZlc3QiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoIm1hbmlmZXN0X3BhdGgiLCB1bmljb2RlKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0X3Jvb3QiLCB1bmljb2RlKV0pCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygibWFuaWZlc3RfcGF0aCIsIHN0ciksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgidGVzdF9yb290Iiwgc3RyKV0pCisgTWFuaWZlc3RwYXJzZXJNYW5pZmVzdExpc3QgPSBPcmRlcmVkUGF0aExpc3RXaXRoQWN0aW9uKHJlYWRfbWFuaWZlc3RwYXJzZXJfbWFuaWZlc3QpCisgUmVmdGVzdE1hbmlmZXN0TGlzdCA9IE9yZGVyZWRQYXRoTGlzdFdpdGhBY3Rpb24ocmVhZF9yZWZ0ZXN0X21hbmlmZXN0KQorIFdwdE1hbmlmZXN0TGlzdCA9IFR5cGVkTGlzdFdpdGhBY3Rpb24oV2ViUGxhdGZvcm1UZXN0TWFuaWZlc3QsIHJlYWRfd3B0X21hbmlmZXN0KQorQEAgLTkxOCwxOCArOTIxLDE4IEBAIFdwdE1hbmlmZXN0TGlzdCA9IFR5cGVkTGlzdFdpdGhBY3Rpb24oV2ViUGxhdGZvcm1UZXN0TWFuaWZlc3QsIHJlYWRfd3B0X21hbmlmZXN0CisgT3JkZXJlZFNvdXJjZUxpc3QgPSBDb250ZXh0RGVyaXZlZFR5cGVkTGlzdChTb3VyY2VQYXRoLCBTdHJpY3RPcmRlcmluZ09uQXBwZW5kTGlzdCkKKyBPcmRlcmVkVGVzdEZsYXZvckxpc3QgPSBUeXBlZExpc3QoRW51bSgqYWxsX3Rlc3RfZmxhdm9ycygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaWN0T3JkZXJpbmdPbkFwcGVuZExpc3QpCistT3JkZXJlZFN0cmluZ0xpc3QgPSBUeXBlZExpc3QodW5pY29kZSwgU3RyaWN0T3JkZXJpbmdPbkFwcGVuZExpc3QpCisrT3JkZXJlZFN0cmluZ0xpc3QgPSBUeXBlZExpc3Qoc3RyLCBTdHJpY3RPcmRlcmluZ09uQXBwZW5kTGlzdCkKKyBEZXBlbmRlbnRUZXN0c0VudHJ5ID0gQ29udGV4dERlcml2ZWRUeXBlZFJlY29yZCgoJ2ZpbGVzJywgT3JkZXJlZFNvdXJjZUxpc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgndGFncycsIE9yZGVyZWRTdHJpbmdMaXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2ZsYXZvcnMnLCBPcmRlcmVkVGVzdEZsYXZvckxpc3QpKQorIEJ1Z3ppbGxhQ29tcG9uZW50ID0gVHlwZWROYW1lZFR1cGxlKCdCdWd6aWxsYUNvbXBvbmVudCcsCistICAgICAgICAgICAgICAgICAgICAgICAgWygncHJvZHVjdCcsIHVuaWNvZGUpLCAoJ2NvbXBvbmVudCcsIHVuaWNvZGUpXSkKKysgICAgICAgICAgICAgICAgICAgICAgICBbKCdwcm9kdWN0Jywgc3RyKSwgKCdjb21wb25lbnQnLCBzdHIpXSkKKyBTY2hlZHVsaW5nQ29tcG9uZW50cyA9IENvbnRleHREZXJpdmVkVHlwZWRSZWNvcmQoCistICAgICAgICAoJ2luY2x1c2l2ZScsIFR5cGVkTGlzdCh1bmljb2RlLCBTdHJpY3RPcmRlcmluZ09uQXBwZW5kTGlzdCkpLAorLSAgICAgICAgKCdleGNsdXNpdmUnLCBUeXBlZExpc3QodW5pY29kZSwgU3RyaWN0T3JkZXJpbmdPbkFwcGVuZExpc3QpKSkKKysgICAgICAgICgnaW5jbHVzaXZlJywgVHlwZWRMaXN0KHN0ciwgU3RyaWN0T3JkZXJpbmdPbkFwcGVuZExpc3QpKSwKKysgICAgICAgICgnZXhjbHVzaXZlJywgVHlwZWRMaXN0KHN0ciwgU3RyaWN0T3JkZXJpbmdPbkFwcGVuZExpc3QpKSkKKyAKKyBHZW5lcmF0ZWRGaWxlc0xpc3QgPSBTdHJpY3RPcmRlcmluZ09uQXBwZW5kTGlzdFdpdGhGbGFnc0ZhY3RvcnkoeworLSAgICAnc2NyaXB0JzogdW5pY29kZSwKKysgICAgJ3NjcmlwdCc6IHN0ciwKKyAgICAgJ2lucHV0cyc6IGxpc3QsCisgICAgICdmbGFncyc6IGxpc3QsIH0pCisgCitAQCAtMTA5Niw3ICsxMDk5LDcgQEAgY2xhc3MgRmlsZXMoU3ViQ29udGV4dCk6CisgICAgICAgICBzZWxmLnRlc3RfdGFncyB8PSBvdGhlci50ZXN0X3RhZ3MKKyAgICAgICAgIHNlbGYudGVzdF9mbGF2b3JzIHw9IG90aGVyLnRlc3RfZmxhdm9ycworIAorLSAgICAgICAgZm9yIGssIHYgaW4gb3RoZXIuaXRlbXMoKToKKysgICAgICAgIGZvciBrLCB2IGluIGxpc3Qob3RoZXIuaXRlbXMoKSk6CisgICAgICAgICAgICAgaWYgayA9PSAnSU1QQUNURURfVEVTVFMnOgorICAgICAgICAgICAgICAgICBzZWxmLnRlc3RfZmlsZXMgfD0gc2V0KG1venBhdGgucmVscGF0aChlLmZ1bGxfcGF0aCwgZS5jb250ZXh0LmNvbmZpZy50b3BzcmNkaXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGUgaW4gdi5maWxlcykKK0BAIC0xMTU0LDcgKzExNTcsNyBAQCBjbGFzcyBGaWxlcyhTdWJDb250ZXh0KToKKyAKKyAgICAgICAgIGJ1Z19jb21wb25lbnRzID0gQ291bnRlcigpCisgCistICAgICAgICBmb3IgZiBpbiBmaWxlcy52YWx1ZXMoKToKKysgICAgICAgIGZvciBmIGluIGxpc3QoZmlsZXMudmFsdWVzKCkpOgorICAgICAgICAgICAgIGJ1Z19jb21wb25lbnQgPSBmLmdldCgnQlVHX0NPTVBPTkVOVCcpCisgICAgICAgICAgICAgaWYgYnVnX2NvbXBvbmVudDoKKyAgICAgICAgICAgICAgICAgYnVnX2NvbXBvbmVudHNbYnVnX2NvbXBvbmVudF0gKz0gMQorQEAgLTEyMzIsNyArMTIzNSw3IEBAIFZBUklBQkxFUyA9IHsKKyAgICAgICAgIFJ1c3RMaWJyYXJ5IHRlbXBsYXRlIGluc3RlYWQuCisgICAgICAgICAiIiIpLAorIAorLSAgICAnUlVTVF9MSUJSQVJZX1RBUkdFVF9ESVInOiAodW5pY29kZSwgdW5pY29kZSwKKysgICAgJ1JVU1RfTElCUkFSWV9UQVJHRVRfRElSJzogKHN0ciwgc3RyLAorICAgICAgICAgIiIiV2hlcmUgQ0FSR09fVEFSR0VUX0RJUiBzaG91bGQgcG9pbnQgd2hlbiBjb21waWxpbmcgdGhpcyBsaWJyYXJ5LiAgSWYKKyAgICAgICAgIG5vdCBzZXQsIGl0IGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IG9iamRpci4gIEl0IHNob3VsZCBiZSBhIHJlbGF0aXZlIHBhdGgKKyAgICAgICAgIHRvIHRoZSBjdXJyZW50IG9iamRpcjsgYWJzb2x1dGUgcGF0aHMgc2hvdWxkIG5vdCBiZSB1c2VkLgorQEAgLTEyNDgsNyArMTI1MSw3IEBAIFZBUklBQkxFUyA9IHsKKyAgICAgICAgIEhvc3RSdXN0TGlicmFyeSB0ZW1wbGF0ZSBpbnN0ZWFkLgorICAgICAgICAgIiIiKSwKKyAKKy0gICAgJ1JVU1RfVEVTVCc6ICh1bmljb2RlLCB1bmljb2RlLAorKyAgICAnUlVTVF9URVNUJzogKHN0ciwgc3RyLAorICAgICAgICAgIiIiTmFtZSBvZiBhIFJ1c3QgdGVzdCB0byBidWlsZCBhbmQgcnVuIHZpYSBgY2FyZ28gdGVzdGAuCisgCisgICAgICAgICBUaGlzIHZhcmlhYmxlIHNob3VsZCBub3QgYmUgdXNlZCBkaXJlY3RseTsgeW91IHNob3VsZCBiZSB1c2luZyB0aGUKK0BAIC0xNDg3LDcgKzE0OTAsNyBAQCBWQVJJQUJMRVMgPSB7CisgICAgICAgICAiIiJMaWtlIGBgT0JKRElSX0ZJTEVTYGAsIHdpdGggcHJlcHJvY2Vzc2luZy4gVXNlIHNwYXJpbmdseS4KKyAgICAgICAgICIiIiksCisgCistICAgICdGSU5BTF9MSUJSQVJZJzogKHVuaWNvZGUsIHVuaWNvZGUsCisrICAgICdGSU5BTF9MSUJSQVJZJzogKHN0ciwgc3RyLAorICAgICAgICAgIiIiTGlicmFyeSBpbiB3aGljaCB0aGUgb2JqZWN0cyBvZiB0aGUgY3VycmVudCBkaXJlY3Rvcnkgd2lsbCBiZSBsaW5rZWQuCisgCisgICAgICAgICBUaGlzIHZhcmlhYmxlIGNvbnRhaW5zIHRoZSBuYW1lIG9mIGEgbGlicmFyeSwgZGVmaW5lZCBlbHNld2hlcmUgd2l0aAorQEAgLTE1MjgsNyArMTUzMSw3IEBAIFZBUklBQkxFUyA9IHsKKyAgICAgICAgIHdpdGggdGhlIGhvc3QgY29tcGlsZXIuCisgICAgICAgICAiIiIpLAorIAorLSAgICAnSE9TVF9MSUJSQVJZX05BTUUnOiAodW5pY29kZSwgdW5pY29kZSwKKysgICAgJ0hPU1RfTElCUkFSWV9OQU1FJzogKHN0ciwgc3RyLAorICAgICAgICAgIiIiTmFtZSBvZiB0YXJnZXQgbGlicmFyeSBnZW5lcmF0ZWQgd2hlbiBjcm9zcyBjb21waWxpbmcuCisgICAgICAgICAiIiIpLAorIAorQEAgLTE1NDYsNyArMTU0OSw3IEBAIFZBUklBQkxFUyA9IHsKKyAgICAgICAgIGxpYnJhcmllcyB0aGF0IGxpbmsgaW50byB0aGlzIGxpYnJhcnkgdmlhIEZJTkFMX0xJQlJBUlkuCisgICAgICAgICAiIiIpLAorIAorLSAgICAnTElCUkFSWV9OQU1FJzogKHVuaWNvZGUsIHVuaWNvZGUsCisrICAgICdMSUJSQVJZX05BTUUnOiAoc3RyLCBzdHIsCisgICAgICAgICAiIiJUaGUgY29kZSBuYW1lIG9mIHRoZSBsaWJyYXJ5IGdlbmVyYXRlZCBmb3IgYSBkaXJlY3RvcnkuCisgCisgICAgICAgICBCeSBkZWZhdWx0IFNUQVRJQ19MSUJSQVJZX05BTUUgYW5kIFNIQVJFRF9MSUJSQVJZX05BTUUgdGFrZSB0aGlzIG5hbWUuCitAQCAtMTU1OCw3ICsxNTYxLDcgQEAgVkFSSUFCTEVTID0geworICAgICAgICAgYGBleGFtcGxlL2NvbXBvbmVudHMveHBjb21zYW1wbGUubGliYGAgb24gV2luZG93cy4KKyAgICAgICAgICIiIiksCisgCistICAgICdTSEFSRURfTElCUkFSWV9OQU1FJzogKHVuaWNvZGUsIHVuaWNvZGUsCisrICAgICdTSEFSRURfTElCUkFSWV9OQU1FJzogKHN0ciwgc3RyLAorICAgICAgICAgIiIiVGhlIG5hbWUgb2YgdGhlIHN0YXRpYyBsaWJyYXJ5IGdlbmVyYXRlZCBmb3IgYSBkaXJlY3RvcnksIGlmIGl0IG5lZWRzIHRvCisgICAgICAgICBkaWZmZXIgZnJvbSB0aGUgbGlicmFyeSBjb2RlIG5hbWUuCisgCitAQCAtMTU3Miw3ICsxNTc1LDcgQEAgVkFSSUFCTEVTID0geworICAgICAgICAgSW1wbGllcyBGT1JDRV9TSEFSRURfTElCLgorICAgICAgICAgIiIiKSwKKyAKKy0gICAgJ1NUQVRJQ19MSUJSQVJZX05BTUUnOiAodW5pY29kZSwgdW5pY29kZSwKKysgICAgJ1NUQVRJQ19MSUJSQVJZX05BTUUnOiAoc3RyLCBzdHIsCisgICAgICAgICAiIiJUaGUgbmFtZSBvZiB0aGUgc3RhdGljIGxpYnJhcnkgZ2VuZXJhdGVkIGZvciBhIGRpcmVjdG9yeSwgaWYgaXQgbmVlZHMgdG8KKyAgICAgICAgIGRpZmZlciBmcm9tIHRoZSBsaWJyYXJ5IGNvZGUgbmFtZS4KKyAKK0BAIC0xNjA0LDMxICsxNjA3LDMxIEBAIFZBUklBQkxFUyA9IHsKKyAKKyAgICAgICAgIFRoaXMgdmFyaWFibGUgY29udGFpbnMgYSBsaXN0IG9mIHN5c3RlbSBsaWJhcmllcyB0byBsaW5rIGFnYWluc3QuCisgICAgICAgICAiIiIpLAorLSAgICAnUkNGSUxFJzogKHVuaWNvZGUsIHVuaWNvZGUsCisrICAgICdSQ0ZJTEUnOiAoc3RyLCBzdHIsCisgICAgICAgICAiIiJUaGUgcHJvZ3JhbSAucmMgZmlsZS4KKyAKKyAgICAgICAgIFRoaXMgdmFyaWFibGUgY2FuIG9ubHkgYmUgdXNlZCBvbiBXaW5kb3dzLgorICAgICAgICAgIiIiKSwKKyAKKy0gICAgJ1JFU0ZJTEUnOiAodW5pY29kZSwgdW5pY29kZSwKKysgICAgJ1JFU0ZJTEUnOiAoc3RyLCBzdHIsCisgICAgICAgICAiIiJUaGUgcHJvZ3JhbSAucmVzIGZpbGUuCisgCisgICAgICAgICBUaGlzIHZhcmlhYmxlIGNhbiBvbmx5IGJlIHVzZWQgb24gV2luZG93cy4KKyAgICAgICAgICIiIiksCisgCistICAgICdSQ0lOQ0xVREUnOiAodW5pY29kZSwgdW5pY29kZSwKKysgICAgJ1JDSU5DTFVERSc6IChzdHIsIHN0ciwKKyAgICAgICAgICIiIlRoZSByZXNvdXJjZSBzY3JpcHQgZmlsZSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgZGVmYXVsdCAucmVzIGZpbGUuCisgCisgICAgICAgICBUaGlzIHZhcmlhYmxlIGNhbiBvbmx5IGJlIHVzZWQgb24gV2luZG93cy4KKyAgICAgICAgICIiIiksCisgCistICAgICdERUZGSUxFJzogKHVuaWNvZGUsIHVuaWNvZGUsCisrICAgICdERUZGSUxFJzogKHN0ciwgc3RyLAorICAgICAgICAgIiIiVGhlIHByb2dyYW0gLmRlZiAobW9kdWxlIGRlZmluaXRpb24pIGZpbGUuCisgCisgICAgICAgICBUaGlzIHZhcmlhYmxlIGNhbiBvbmx5IGJlIHVzZWQgb24gV2luZG93cy4KKyAgICAgICAgICIiIiksCisgCistICAgICdTWU1CT0xTX0ZJTEUnOiAoUGF0aCwgdW5pY29kZSwKKysgICAgJ1NZTUJPTFNfRklMRSc6IChQYXRoLCBzdHIsCisgICAgICAgICAiIiJBIGZpbGUgY29udGFpbmluZyBhIGxpc3Qgb2Ygc3ltYm9scyB0byBleHBvcnQgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LgorIAorICAgICAgICAgVGhlIGdpdmVuIGZpbGUgY29udGFpbnMgYSBsaXN0IG9mIHN5bWJvbHMgdG8gYmUgZXhwb3J0ZWQsIGFuZCBpcworQEAgLTE2NDksNyArMTY1Miw3IEBAIFZBUklBQkxFUyA9IHsKKyAgICAgICAgIGBgQklOX1NVRkZJWGBgLCB0aGUgbmFtZSB3aWxsIHJlbWFpbiB1bmNoYW5nZWQuCisgICAgICAgICAiIiIpLAorIAorLSAgICAnU09OQU1FJzogKHVuaWNvZGUsIHVuaWNvZGUsCisrICAgICdTT05BTUUnOiAoc3RyLCBzdHIsCisgICAgICAgICAiIiJUaGUgc29uYW1lIG9mIHRoZSBzaGFyZWQgb2JqZWN0IGN1cnJlbnRseSBiZWluZyBsaW5rZWQKKyAKKyAgICAgICAgIHNvbmFtZSBpcyB0aGUgImxvZ2ljYWwgbmFtZSIgb2YgYSBzaGFyZWQgb2JqZWN0LCBvZnRlbiB1c2VkIHRvIHByb3ZpZGUKK0BAIC0xNzE5LDcgKzE3MjIsNyBAQCBWQVJJQUJMRVMgPSB7CisgICAgICAgICBgYEdFTkVSQVRFRF9GSUxFU2BgLgorICAgICAgICAgIiIiKSwKKyAKKy0gICAgJ1BST0dSQU0nIDogKHVuaWNvZGUsIHVuaWNvZGUsCisrICAgICdQUk9HUkFNJyA6IChzdHIsIHN0ciwKKyAgICAgICAgICIiIkNvbXBpbGVkIGV4ZWN1dGFibGUgbmFtZS4KKyAKKyAgICAgICAgIElmIHRoZSBjb25maWd1cmF0aW9uIHRva2VuIGBgQklOX1NVRkZJWGBgIGlzIHNldCwgaXRzIHZhbHVlIHdpbGwgYmUKK0BAIC0xNzI3LDcgKzE3MzAsNyBAQCBWQVJJQUJMRVMgPSB7CisgICAgICAgICBgYEJJTl9TVUZGSVhgYCwgYGBQUk9HUkFNYGAgd2lsbCByZW1haW4gdW5jaGFuZ2VkLgorICAgICAgICAgIiIiKSwKKyAKKy0gICAgJ0hPU1RfUFJPR1JBTScgOiAodW5pY29kZSwgdW5pY29kZSwKKysgICAgJ0hPU1RfUFJPR1JBTScgOiAoc3RyLCBzdHIsCisgICAgICAgICAiIiJDb21waWxlZCBob3N0IGV4ZWN1dGFibGUgbmFtZS4KKyAKKyAgICAgICAgIElmIHRoZSBjb25maWd1cmF0aW9uIHRva2VuIGBgSE9TVF9CSU5fU1VGRklYYGAgaXMgc2V0LCBpdHMgdmFsdWUgd2lsbCBiZQorQEAgLTE3NjUsNyArMTc2OCw3IEBAIFZBUklBQkxFUyA9IHsKKyAgICAgICAgIGZpbGVzLgorICAgICAgICAgIiIiKSwKKyAKKy0gICAgJ1hQSURMX01PRFVMRSc6ICh1bmljb2RlLCB1bmljb2RlLAorKyAgICAnWFBJRExfTU9EVUxFJzogKHN0ciwgc3RyLAorICAgICAgICAgIiIiWFBDT00gSW50ZXJmYWNlIERlZmluaXRpb24gTW9kdWxlIE5hbWUuCisgCisgICAgICAgICBUaGlzIGlzIHRoZSBuYW1lIG9mIHRoZSBgYC54cHRgYCBmaWxlIHRoYXQgaXMgY3JlYXRlZCBieSBsaW5raW5nCitAQCAtMTkyNCwxNCArMTkyNywxNCBAQCBWQVJJQUJMRVMgPSB7CisgCisgCisgICAgICMgVGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgYXJlIHVzZWQgdG8gY29udHJvbCB0aGUgdGFyZ2V0IG9mIGluc3RhbGxlZCBmaWxlcy4KKy0gICAgJ1hQSV9OQU1FJzogKHVuaWNvZGUsIHVuaWNvZGUsCisrICAgICdYUElfTkFNRSc6IChzdHIsIHN0ciwKKyAgICAgICAgICIiIlRoZSBuYW1lIG9mIGFuIGV4dGVuc2lvbiBYUEkgdG8gZ2VuZXJhdGUuCisgCisgICAgICAgICBXaGVuIHRoaXMgdmFyaWFibGUgaXMgcHJlc2VudCwgdGhlIHJlc3VsdHMgb2YgdGhpcyBkaXJlY3Rvcnkgd2lsbCBlbmQgdXAKKyAgICAgICAgIGJlaW5nIHBhY2thZ2VkIGludG8gYW4gZXh0ZW5zaW9uIGluc3RlYWQgb2YgdGhlIG1haW4gZGlzdC9iaW4gcmVzdWx0cy4KKyAgICAgICAgICIiIiksCisgCistICAgICdESVNUX1NVQkRJUic6ICh1bmljb2RlLCB1bmljb2RlLAorKyAgICAnRElTVF9TVUJESVInOiAoc3RyLCBzdHIsCisgICAgICAgICAiIiJUaGUgbmFtZSBvZiBhbiBhbHRlcm5hdGUgZGlyZWN0b3J5IHRvIGluc3RhbGwgZmlsZXMgdG8uCisgCisgICAgICAgICBXaGVuIHRoaXMgdmFyaWFibGUgaXMgcHJlc2VudCwgdGhlIHJlc3VsdHMgb2YgdGhpcyBkaXJlY3Rvcnkgd2lsbCBlbmQgdXAKK0BAIC0xOTM5LDcgKzE5NDIsNyBAQCBWQVJJQUJMRVMgPSB7CisgICAgICAgICBvdGhlcndpc2UgYmUgcGxhY2VkLgorICAgICAgICAgIiIiKSwKKyAKKy0gICAgJ0ZJTkFMX1RBUkdFVCc6IChGaW5hbFRhcmdldFZhbHVlLCB1bmljb2RlLAorKyAgICAnRklOQUxfVEFSR0VUJzogKEZpbmFsVGFyZ2V0VmFsdWUsIHN0ciwKKyAgICAgICAgICIiIlRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdG8gaW5zdGFsbCB0YXJnZXRzIHRvLgorIAorICAgICAgICAgVGhlIGRpcmVjdG9yeSBpcyByZWxhdGl2ZSB0byB0aGUgdG9wIG9mIHRoZSBvYmplY3QgZGlyZWN0b3J5LiBUaGUKK0BAIC0xOTcwLDcgKzE5NzMsNyBAQCBWQVJJQUJMRVMgPSB7CisgCisgICAgICdHWVBfRElSUyc6IChTdHJpY3RPcmRlcmluZ09uQXBwZW5kTGlzdFdpdGhGbGFnc0ZhY3RvcnkoeworICAgICAgICAgICAgICd2YXJpYWJsZXMnOiBkaWN0LAorLSAgICAgICAgICAgICdpbnB1dCc6IHVuaWNvZGUsCisrICAgICAgICAgICAgJ2lucHV0Jzogc3RyLAorICAgICAgICAgICAgICdzYW5kYm94X3ZhcnMnOiBkaWN0LAorICAgICAgICAgICAgICdub19jaHJvbWl1bSc6IGJvb2wsCisgICAgICAgICAgICAgJ25vX3VuaWZpZWQnOiBib29sLAorQEAgLTIxOTQsNyArMjE5Nyw3IEBAIFZBUklBQkxFUyA9IHsKKyB9CisgCisgIyBTYW5pdHkgY2hlY2s6IHdlIGRvbid0IHdhbnQgYW55IHZhcmlhYmxlIGFib3ZlIHRvIGhhdmUgYSBsaXN0IGFzIHN0b3JhZ2UgdHlwZS4KKy1mb3IgbmFtZSwgKHN0b3JhZ2VfdHlwZSwgaW5wdXRfdHlwZXMsIGRvY3MpIGluIFZBUklBQkxFUy5pdGVtcygpOgorK2ZvciBuYW1lLCAoc3RvcmFnZV90eXBlLCBpbnB1dF90eXBlcywgZG9jcykgaW4gbGlzdChWQVJJQUJMRVMuaXRlbXMoKSk6CisgICAgIGlmIHN0b3JhZ2VfdHlwZSA9PSBsaXN0OgorICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCclcyBoYXMgYSAibGlzdCIgc3RvcmFnZSB0eXBlLiBVc2UgIkxpc3QiIGluc3RlYWQuJworICAgICAgICAgICAgICUgbmFtZSkKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvZnJvbnRlbmQvZGF0YS5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9mcm9udGVuZC9kYXRhLnB5CitpbmRleCA0NDJmYzllMGEuLjgzNzQ1M2E5ZiAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9mcm9udGVuZC9kYXRhLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvZnJvbnRlbmQvZGF0YS5weQorQEAgLTE1LDcgKzE1LDcgQEAgY29udGFpbnMgdGhlIGNvZGUgZm9yIGNvbnZlcnRpbmcgZXhlY3V0ZWQgbW96YnVpbGQgZmlsZXMgaW50byB0aGVzZSBkYXRhCisgc3RydWN0dXJlcy4KKyAiIiIKKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgdW5pY29kZV9saXRlcmFscworKworIAorIGZyb20gbW96YnVpbGQudXRpbCBpbXBvcnQgU3RyaWN0T3JkZXJpbmdPbkFwcGVuZExpc3QKKyBmcm9tIG1venBhY2suY2hyb21lLm1hbmlmZXN0IGltcG9ydCBNYW5pZmVzdEVudHJ5CitAQCAtMTgyLDcgKzE4Miw3IEBAIGNsYXNzIENvbXB1dGVkRmxhZ3MoQ29udGV4dERlcml2ZWQpOgorICAgICAgICAgICAgIGlmIHZhbHVlOgorICAgICAgICAgICAgICAgICBmb3IgZGVzdF92YXIgaW4gZGVzdF92YXJzOgorICAgICAgICAgICAgICAgICAgICAgZmxhZ3NbZGVzdF92YXJdLmV4dGVuZCh2YWx1ZSkKKy0gICAgICAgIHJldHVybiBmbGFncy5pdGVtcygpCisrICAgICAgICByZXR1cm4gbGlzdChmbGFncy5pdGVtcygpKQorIAorIGNsYXNzIFhQSURMRmlsZShDb250ZXh0RGVyaXZlZCk6CisgICAgICIiIkRlc2NyaWJlcyBhbiBYUElETCBmaWxlIHRvIGJlIGNvbXBpbGVkLiIiIgorQEAgLTIxMyw3ICsyMTMsNyBAQCBjbGFzcyBCYXNlRGVmaW5lcyhDb250ZXh0RGVyaXZlZCk6CisgICAgICAgICBzZWxmLmRlZmluZXMgPSBkZWZpbmVzCisgCisgICAgIGRlZiBnZXRfZGVmaW5lcyhzZWxmKToKKy0gICAgICAgIGZvciBkZWZpbmUsIHZhbHVlIGluIHNlbGYuZGVmaW5lcy5pdGVyaXRlbXMoKToKKysgICAgICAgIGZvciBkZWZpbmUsIHZhbHVlIGluIHNlbGYuZGVmaW5lcy5pdGVtcygpOgorICAgICAgICAgICAgIGlmIHZhbHVlIGlzIFRydWU6CisgICAgICAgICAgICAgICAgIHlpZWxkKCctRCVzJyAlIGRlZmluZSkKKyAgICAgICAgICAgICBlbGlmIHZhbHVlIGlzIEZhbHNlOgorQEAgLTQ5NCw3ICs0OTQsNyBAQCBjbGFzcyBTaW1wbGVQcm9ncmFtKEJhc2VQcm9ncmFtKToKKyAgICAgS0lORCA9ICd0YXJnZXQnCisgCisgICAgIGRlZiBzb3VyY2VfZmlsZXMoc2VsZik6CistICAgICAgICBmb3Igc3JjcyBpbiBzZWxmLnNvdXJjZXMudmFsdWVzKCk6CisrICAgICAgICBmb3Igc3JjcyBpbiBsaXN0KHNlbGYuc291cmNlcy52YWx1ZXMoKSk6CisgICAgICAgICAgICAgZm9yIGYgaW4gc3JjczoKKyAgICAgICAgICAgICAgICAgaWYgbW96cGF0aC5iYXNlbmFtZShtb3pwYXRoLnNwbGl0ZXh0KGYpWzBdKSA9PSBtb3pwYXRoLnNwbGl0ZXh0KHNlbGYucHJvZ3JhbSlbMF06CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2ZdCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2Zyb250ZW5kL2VtaXR0ZXIucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvZnJvbnRlbmQvZW1pdHRlci5weQoraW5kZXggNjQyYjM4MWMwLi5jMjgzNDRhNzUgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvZnJvbnRlbmQvZW1pdHRlci5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2Zyb250ZW5kL2VtaXR0ZXIucHkKK0BAIC0yLDcgKzIsNyBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgdW5pY29kZV9saXRlcmFscworKworIAorIGltcG9ydCBpdGVydG9vbHMKKyBpbXBvcnQgbG9nZ2luZworQEAgLTExNiw4ICsxMTYsOCBAQCBjbGFzcyBUcmVlTWV0YWRhdGFFbWl0dGVyKExvZ2dpbmdNaXhpbik6CisgICAgICAgICAjIGFyZ3VtZW50cy4gVGhpcyBncm9zcyBoYWNrIHdvcmtzIGFyb3VuZCB0aGUgcHJvYmxlbSB1bnRpbCB3ZQorICAgICAgICAgIyByaWQgb3Vyc2VsdmVzIG9mIDIuNi4KKyAgICAgICAgIHNlbGYuaW5mbyA9IHt9CistICAgICAgICBmb3IgaywgdiBpbiBtb3ppbmZvLmluZm8uaXRlbXMoKToKKy0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGssIHVuaWNvZGUpOgorKyAgICAgICAgZm9yIGssIHYgaW4gbGlzdChtb3ppbmZvLmluZm8uaXRlbXMoKSk6CisrICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShrLCBzdHIpOgorICAgICAgICAgICAgICAgICBrID0gay5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgICAgICBzZWxmLmluZm9ba10gPSB2CisgCitAQCAtMjM0LDcgKzIzNCw3IEBAIGNsYXNzIFRyZWVNZXRhZGF0YUVtaXR0ZXIoTG9nZ2luZ01peGluKToKKyAKKyAKKyAgICAgICAgICMgTmV4dCBkbyBGSU5BTF9MSUJSQVJZIGxpbmthZ2UuCistICAgICAgICBmb3IgbGliIGluIChsIGZvciBsaWJzIGluIHNlbGYuX2xpYnMudmFsdWVzKCkgZm9yIGwgaW4gbGlicyk6CisrICAgICAgICBmb3IgbGliIGluIChsIGZvciBsaWJzIGluIGxpc3Qoc2VsZi5fbGlicy52YWx1ZXMoKSkgZm9yIGwgaW4gbGlicyk6CisgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobGliLCAoU3RhdGljTGlicmFyeSwgUnVzdExpYnJhcnkpKSBvciBub3QgbGliLmxpbmtfaW50bzoKKyAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICBpZiBsaWIubGlua19pbnRvIG5vdCBpbiBzZWxmLl9saWJzOgorQEAgLTI5NCwxMyArMjk0LDEzIEBAIGNsYXNzIFRyZWVNZXRhZGF0YUVtaXR0ZXIoTG9nZ2luZ01peGluKToKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaWIubGlua19pbnRvID09IG91dGVybGliLmJhc2VuYW1lKToKKyAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9kZWZpbmVzKGxpYiwgZGVmaW5lcykKKyAKKy0gICAgICAgIGZvciBsaWIgaW4gKGwgZm9yIGxpYnMgaW4gc2VsZi5fbGlicy52YWx1ZXMoKSBmb3IgbCBpbiBsaWJzKToKKysgICAgICAgIGZvciBsaWIgaW4gKGwgZm9yIGxpYnMgaW4gbGlzdChzZWxmLl9saWJzLnZhbHVlcygpKSBmb3IgbCBpbiBsaWJzKToKKyAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGxpYiwgTGlicmFyeSk6CisgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9kZWZpbmVzKGxpYiwgbGliLmxpYl9kZWZpbmVzKQorICAgICAgICAgICAgIHlpZWxkIGxpYgorIAorIAorLSAgICAgICAgZm9yIGxpYiBpbiAobCBmb3IgbGlicyBpbiBzZWxmLl9saWJzLnZhbHVlcygpIGZvciBsIGluIGxpYnMpOgorKyAgICAgICAgZm9yIGxpYiBpbiAobCBmb3IgbGlicyBpbiBsaXN0KHNlbGYuX2xpYnMudmFsdWVzKCkpIGZvciBsIGluIGxpYnMpOgorICAgICAgICAgICAgIGxpYl9kZWZpbmVzID0gbGlzdChsaWIubGliX2RlZmluZXMuZ2V0X2RlZmluZXMoKSkKKyAgICAgICAgICAgICBpZiBsaWJfZGVmaW5lczoKKyAgICAgICAgICAgICAgICAgb2JqZGlyX2ZsYWdzID0gc2VsZi5fY29tcGlsZV9mbGFnc1tsaWIub2JqZGlyXQorQEAgLTMxMCwxMyArMzEwLDEzIEBAIGNsYXNzIFRyZWVNZXRhZGF0YUVtaXR0ZXIoTG9nZ2luZ01peGluKToKKyAgICAgICAgICAgICAgICAgaWYgb2JqZGlyX2ZsYWdzOgorICAgICAgICAgICAgICAgICAgICAgb2JqZGlyX2ZsYWdzLnJlc29sdmVfZmxhZ3MoJ0xJQlJBUllfREVGSU5FUycsIGxpYl9kZWZpbmVzKQorIAorLSAgICAgICAgZm9yIGZsYWdzX29iaiBpbiBzZWxmLl9jb21waWxlX2ZsYWdzLnZhbHVlcygpOgorKyAgICAgICAgZm9yIGZsYWdzX29iaiBpbiBsaXN0KHNlbGYuX2NvbXBpbGVfZmxhZ3MudmFsdWVzKCkpOgorICAgICAgICAgICAgIHlpZWxkIGZsYWdzX29iagorIAorLSAgICAgICAgZm9yIGZsYWdzX29iaiBpbiBzZWxmLl9jb21waWxlX2FzX2ZsYWdzLnZhbHVlcygpOgorKyAgICAgICAgZm9yIGZsYWdzX29iaiBpbiBsaXN0KHNlbGYuX2NvbXBpbGVfYXNfZmxhZ3MudmFsdWVzKCkpOgorICAgICAgICAgICAgIHlpZWxkIGZsYWdzX29iagorIAorLSAgICAgICAgZm9yIG9iaiBpbiBzZWxmLl9iaW5hcmllcy52YWx1ZXMoKToKKysgICAgICAgIGZvciBvYmogaW4gbGlzdChzZWxmLl9iaW5hcmllcy52YWx1ZXMoKSk6CisgICAgICAgICAgICAgeWllbGQgb2JqCisgCisgCitAQCAtNDA5LDcgKzQwOSw3IEBAIGNsYXNzIFRyZWVNZXRhZGF0YUVtaXR0ZXIoTG9nZ2luZ01peGluKToKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaWJzW2tleV0gPSBsCisgICAgICAgICAgICAgICAgICAgICBpZiBrZXkgbm90IGluIGxpYnM6CisgICAgICAgICAgICAgICAgICAgICAgICAgbGlic1trZXldID0gbAorLSAgICAgICAgICAgIGNhbmRpZGF0ZXMgPSBsaWJzLnZhbHVlcygpCisrICAgICAgICAgICAgY2FuZGlkYXRlcyA9IGxpc3QobGlicy52YWx1ZXMoKSkKKyAgICAgICAgICAgICBpZiBmb3JjZV9zdGF0aWMgYW5kIG5vdCBjYW5kaWRhdGVzOgorICAgICAgICAgICAgICAgICBpZiBkaXI6CisgICAgICAgICAgICAgICAgICAgICByYWlzZSBTYW5kYm94VmFsaWRhdGlvbkVycm9yKAorQEAgLTQ3Myw5ICs0NzMsOSBAQCBjbGFzcyBUcmVlTWV0YWRhdGFFbWl0dGVyKExvZ2dpbmdNaXhpbik6CisgCisgICAgIGRlZiBfdmVyaWZ5X2RlcHMoc2VsZiwgY29udGV4dCwgY3JhdGVfZGlyLCBjcmF0ZV9uYW1lLCBkZXBlbmRlbmNpZXMsIGRlc2NyaXB0aW9uPSdEZXBlbmRlbmN5Jyk6CisgICAgICAgICAiIiJWZXJpZnkgdGhhdCBhIGNyYXRlJ3MgZGVwZW5kZW5jaWVzIGFsbCBzcGVjaWZ5IGxvY2FsIHBhdGhzLiIiIgorLSAgICAgICAgZm9yIGRlcF9jcmF0ZV9uYW1lLCB2YWx1ZXMgaW4gZGVwZW5kZW5jaWVzLml0ZXJpdGVtcygpOgorKyAgICAgICAgZm9yIGRlcF9jcmF0ZV9uYW1lLCB2YWx1ZXMgaW4gZGVwZW5kZW5jaWVzLml0ZW1zKCk6CisgICAgICAgICAgICAgIyBBIHNpbXBsZSB2ZXJzaW9uIG51bWJlci4KKy0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlcywgKHN0ciwgdW5pY29kZSkpOgorKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWVzLCBzdHIpOgorICAgICAgICAgICAgICAgICByYWlzZSBTYW5kYm94VmFsaWRhdGlvbkVycm9yKAorICAgICAgICAgICAgICAgICAgICAgJyVzICVzIG9mIGNyYXRlICVzIGRvZXMgbm90IGxpc3QgYSBwYXRoJyAlIChkZXNjcmlwdGlvbiwgZGVwX2NyYXRlX25hbWUsIGNyYXRlX25hbWUpLAorICAgICAgICAgICAgICAgICAgICAgY29udGV4dCkKK0BAIC01MjksNyArNTI5LDcgQEAgY2xhc3MgVHJlZU1ldGFkYXRhRW1pdHRlcihMb2dnaW5nTWl4aW4pOgorIAorICAgICAgICAgY2FyZ29fdGFyZ2V0X2RpciA9IGNvbnRleHQuZ2V0KCdSVVNUX0xJQlJBUllfVEFSR0VUX0RJUicsICcuJykKKyAKKy0gICAgICAgIGRlcGVuZGVuY2llcyA9IHNldChjb25maWcuZ2V0KCdkZXBlbmRlbmNpZXMnLCB7fSkuaXRlcmtleXMoKSkKKysgICAgICAgIGRlcGVuZGVuY2llcyA9IHNldChjb25maWcuZ2V0KCdkZXBlbmRlbmNpZXMnLCB7fSkua2V5cygpKQorIAorICAgICAgICAgZmVhdHVyZXMgPSBjb250ZXh0LmdldChjbHMuRkVBVFVSRVNfVkFSLCBbXSkKKyAgICAgICAgIHVuaXF1ZV9mZWF0dXJlcyA9IHNldChmZWF0dXJlcykKK0BAIC04NjMsNyArODYzLDcgQEAgY2xhc3MgVHJlZU1ldGFkYXRhRW1pdHRlcihMb2dnaW5nTWl4aW4pOgorICAgICAgICAgYXNzZXJ0IG5vdCBnZW5fc291cmNlc1snVU5JRklFRF9TT1VSQ0VTJ10KKyAKKyAgICAgICAgIG5vX3BnbyA9IGNvbnRleHQuZ2V0KCdOT19QR08nKQorLSAgICAgICAgbm9fcGdvX3NvdXJjZXMgPSBbZiBmb3IgZiwgZmxhZ3MgaW4gYWxsX2ZsYWdzLml0ZXJpdGVtcygpCisrICAgICAgICBub19wZ29fc291cmNlcyA9IFtmIGZvciBmLCBmbGFncyBpbiBhbGxfZmxhZ3MuaXRlbXMoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmxhZ3Mubm9fcGdvXQorICAgICAgICAgaWYgbm9fcGdvOgorICAgICAgICAgICAgIGlmIG5vX3Bnb19zb3VyY2VzOgorQEAgLTg5MCw3ICs4OTAsNyBAQCBjbGFzcyBUcmVlTWV0YWRhdGFFbWl0dGVyKExvZ2dpbmdNaXhpbik6CisgCisgICAgICAgICAjIFRoZSBpbnZlcnNlIG9mIHRoZSBhYm92ZSwgbWFwcGluZyBzdWZmaXhlcyB0byB0aGVpciBjYW5vbmljYWwgc3VmZml4LgorICAgICAgICAgY2Fub25pY2FsaXplZF9zdWZmaXhfbWFwID0ge30KKy0gICAgICAgIGZvciBzdWZmaXgsIGFsdGVybmF0aXZlcyBpbiBzdWZmaXhfbWFwLml0ZXJpdGVtcygpOgorKyAgICAgICAgZm9yIHN1ZmZpeCwgYWx0ZXJuYXRpdmVzIGluIHN1ZmZpeF9tYXAuaXRlbXMoKToKKyAgICAgICAgICAgICBhbHRlcm5hdGl2ZXMuYWRkKHN1ZmZpeCkKKyAgICAgICAgICAgICBmb3IgYSBpbiBhbHRlcm5hdGl2ZXM6CisgICAgICAgICAgICAgICAgIGNhbm9uaWNhbGl6ZWRfc3VmZml4X21hcFthXSA9IHN1ZmZpeAorQEAgLTkxNCw3ICs5MTQsNyBAQCBjbGFzcyBUcmVlTWV0YWRhdGFFbWl0dGVyKExvZ2dpbmdNaXhpbik6CisgICAgICAgICAjIFNvdXJjZSBmaWxlcyB0byB0cmFjayBmb3IgbGlua2FibGVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRleHQuCisgICAgICAgICBjdHh0X3NvdXJjZXMgPSBkZWZhdWx0ZGljdChsYW1iZGE6IGRlZmF1bHRkaWN0KGxpc3QpKQorIAorLSAgICAgICAgZm9yIHZhcmlhYmxlLCAoa2xhc3MsIGdlbl9rbGFzcywgc3VmZml4ZXMpIGluIHZhcm1hcC5pdGVtcygpOgorKyAgICAgICAgZm9yIHZhcmlhYmxlLCAoa2xhc3MsIGdlbl9rbGFzcywgc3VmZml4ZXMpIGluIGxpc3QodmFybWFwLml0ZW1zKCkpOgorICAgICAgICAgICAgIGFsbG93ZWRfc3VmZml4ZXMgPSBzZXQoKS51bmlvbigqW3N1ZmZpeF9tYXBbc10gZm9yIHMgaW4gc3VmZml4ZXNdKQorIAorICAgICAgICAgICAgICMgRmlyc3QgZW5zdXJlIHRoYXQgd2UgaGF2ZW4ndCBiZWVuIGdpdmVuIGZpbGV0eXBlcyB0aGF0IHdlIGRvbid0CitAQCAtOTQxLDIwICs5NDEsMjAgQEAgY2xhc3MgVHJlZU1ldGFkYXRhRW1pdHRlcihMb2dnaW5nTWl4aW4pOgorICAgICAgICAgICAgICAgICAgICAgb2JqID0gY2xzKCphcmdsaXN0KQorICAgICAgICAgICAgICAgICAgICAgc3JjcyA9IG9iai5maWxlcworICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIFVuaWZpZWRTb3VyY2VzKSBhbmQgb2JqLmhhdmVfdW5pZmllZF9tYXBwaW5nOgorLSAgICAgICAgICAgICAgICAgICAgICAgIHNyY3MgPSBkaWN0KG9iai51bmlmaWVkX3NvdXJjZV9tYXBwaW5nKS5rZXlzKCkKKysgICAgICAgICAgICAgICAgICAgICAgICBzcmNzID0gbGlzdChkaWN0KG9iai51bmlmaWVkX3NvdXJjZV9tYXBwaW5nKS5rZXlzKCkpCisgICAgICAgICAgICAgICAgICAgICBjdHh0X3NvdXJjZXNbdmFyaWFibGVdW2Nhbm9uaWNhbF9zdWZmaXhdICs9IHNvcnRlZChzcmNzKQorICAgICAgICAgICAgICAgICAgICAgeWllbGQgb2JqCisgCisgICAgICAgICBpZiBjdHh0X3NvdXJjZXM6CisgICAgICAgICAgICAgZm9yIGxpbmthYmxlIGluIGxpbmthYmxlczoKKyAgICAgICAgICAgICAgICAgZm9yIHRhcmdldF92YXIgaW4gKCdTT1VSQ0VTJywgJ1VOSUZJRURfU09VUkNFUycpOgorLSAgICAgICAgICAgICAgICAgICAgZm9yIHN1ZmZpeCwgc3JjcyBpbiBjdHh0X3NvdXJjZXNbdGFyZ2V0X3Zhcl0uaXRlbXMoKToKKysgICAgICAgICAgICAgICAgICAgIGZvciBzdWZmaXgsIHNyY3MgaW4gbGlzdChjdHh0X3NvdXJjZXNbdGFyZ2V0X3Zhcl0uaXRlbXMoKSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgbGlua2FibGUuc291cmNlc1tzdWZmaXhdICs9IHNyY3MKKyAgICAgICAgICAgICBmb3IgaG9zdF9saW5rYWJsZSBpbiBob3N0X2xpbmthYmxlczoKKy0gICAgICAgICAgICAgICAgZm9yIHN1ZmZpeCwgc3JjcyBpbiBjdHh0X3NvdXJjZXNbJ0hPU1RfU09VUkNFUyddLml0ZW1zKCk6CisrICAgICAgICAgICAgICAgIGZvciBzdWZmaXgsIHNyY3MgaW4gbGlzdChjdHh0X3NvdXJjZXNbJ0hPU1RfU09VUkNFUyddLml0ZW1zKCkpOgorICAgICAgICAgICAgICAgICAgICAgaG9zdF9saW5rYWJsZS5zb3VyY2VzW3N1ZmZpeF0gKz0gc3JjcworIAorLSAgICAgICAgZm9yIGYsIGZsYWdzIGluIGFsbF9mbGFncy5pdGVyaXRlbXMoKToKKysgICAgICAgIGZvciBmLCBmbGFncyBpbiBhbGxfZmxhZ3MuaXRlbXMoKToKKyAgICAgICAgICAgICBpZiBmbGFncy5mbGFnczoKKyAgICAgICAgICAgICAgICAgZXh0ID0gbW96cGF0aC5zcGxpdGV4dChmKVsxXQorICAgICAgICAgICAgICAgICB5aWVsZCBQZXJTb3VyY2VGbGFnKGNvbnRleHQsIGYsIGZsYWdzLmZsYWdzKQorQEAgLTExNDMsNyArMTE0Myw3IEBAIGNsYXNzIFRyZWVNZXRhZGF0YUVtaXR0ZXIoTG9nZ2luZ01peGluKToKKyAgICAgICAgIGZvciBvYmogaW4gc2VsZi5faGFuZGxlX2xpbmthYmxlcyhjb250ZXh0LCBwYXNzdGhydSwgZ2VuZXJhdGVkX2ZpbGVzKToKKyAgICAgICAgICAgICB5aWVsZCBvYmoKKyAKKy0gICAgICAgIGdlbmVyYXRlZF9maWxlcy51cGRhdGUoWyclcyVzJyAlIChrLCBzZWxmLmNvbmZpZy5zdWJzdHMuZ2V0KCdCSU5fU1VGRklYJywgJycpKSBmb3IgayBpbiBzZWxmLl9iaW5hcmllcy5rZXlzKCldKQorKyAgICAgICAgZ2VuZXJhdGVkX2ZpbGVzLnVwZGF0ZShbJyVzJXMnICUgKGssIHNlbGYuY29uZmlnLnN1YnN0cy5nZXQoJ0JJTl9TVUZGSVgnLCAnJykpIGZvciBrIGluIGxpc3Qoc2VsZi5fYmluYXJpZXMua2V5cygpKV0pCisgCisgICAgICAgICBjb21wb25lbnRzID0gW10KKyAgICAgICAgIGZvciB2YXIsIGNscyBpbiAoCitAQCAtMTI3Nyw3ICsxMjc3LDcgQEAgY2xhc3MgVHJlZU1ldGFkYXRhRW1pdHRlcihMb2dnaW5nTWl4aW4pOgorICAgICAgICAgZm9yIG9iaiBpbiBzZWxmLl9wcm9jZXNzX2phcl9tYW5pZmVzdHMoY29udGV4dCk6CisgICAgICAgICAgICAgeWllbGQgb2JqCisgCistICAgICAgICBmb3IgbmFtZSwgamFyIGluIGNvbnRleHQuZ2V0KCdKQVZBX0pBUl9UQVJHRVRTJywge30pLml0ZW1zKCk6CisrICAgICAgICBmb3IgbmFtZSwgamFyIGluIGxpc3QoY29udGV4dC5nZXQoJ0pBVkFfSkFSX1RBUkdFVFMnLCB7fSkuaXRlbXMoKSk6CisgICAgICAgICAgICAgeWllbGQgQ29udGV4dFdyYXBwZWQoY29udGV4dCwgamFyKQorIAorICAgICAgICAgY29tcHV0ZWRfYXNfZmxhZ3MucmVzb2x2ZV9mbGFncygnTU9aQlVJTEQnLAorQEAgLTEzNDYsNyArMTM0Niw3IEBAIGNsYXNzIFRyZWVNZXRhZGF0YUVtaXR0ZXIoTG9nZ2luZ01peGluKToKKyAgICAgICAgICAgICBzY3JpcHQgPSBtb3pwYXRoLmpvaW4obW96cGF0aC5kaXJuYW1lKG1venBhdGguZGlybmFtZShfX2ZpbGVfXykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJywgJ3Byb2Nlc3NfZGVmaW5lX2ZpbGVzLnB5JykKKyAgICAgICAgICAgICB5aWVsZCBHZW5lcmF0ZWRGaWxlKGNvbnRleHQsIHNjcmlwdCwgJ3Byb2Nlc3NfZGVmaW5lX2ZpbGUnLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZShwYXRoKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtQYXRoKGNvbnRleHQsIHBhdGggKyAnLmluJyldKQorIAorICAgICAgICAgZ2VuZXJhdGVkX2ZpbGVzID0gY29udGV4dC5nZXQoJ0dFTkVSQVRFRF9GSUxFUycpIG9yIFtdCitAQCAtMTM5Myw3ICsxMzkzLDcgQEAgY2xhc3MgVHJlZU1ldGFkYXRhRW1pdHRlcihMb2dnaW5nTWl4aW4pOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzLmZsYWdzLCBsb2NhbGl6ZWQ9bG9jYWxpemVkKQorIAorICAgICBkZWYgX3Byb2Nlc3NfdGVzdF9tYW5pZmVzdHMoc2VsZiwgY29udGV4dCk6CistICAgICAgICBmb3IgcHJlZml4LCBpbmZvIGluIFRFU1RfTUFOSUZFU1RTLml0ZW1zKCk6CisrICAgICAgICBmb3IgcHJlZml4LCBpbmZvIGluIGxpc3QoVEVTVF9NQU5JRkVTVFMuaXRlbXMoKSk6CisgICAgICAgICAgICAgZm9yIHBhdGgsIG1hbmlmZXN0IGluIGNvbnRleHQuZ2V0KCclc19NQU5JRkVTVFMnICUgcHJlZml4LCBbXSk6CisgICAgICAgICAgICAgICAgIGZvciBvYmogaW4gc2VsZi5fcHJvY2Vzc190ZXN0X21hbmlmZXN0KGNvbnRleHQsIGluZm8sIHBhdGgsIG1hbmlmZXN0KToKKyAgICAgICAgICAgICAgICAgICAgIHlpZWxkIG9iagorQEAgLTE0NzksNyArMTQ3OSw3IEBAIGNsYXNzIFRyZWVNZXRhZGF0YUVtaXR0ZXIoTG9nZ2luZ01peGluKToKKyAKKyAgICAgICAgICAgICAgICAgcHJvY2Vzc19zdXBwb3J0X2ZpbGVzKHRlc3QpCisgCistICAgICAgICAgICAgZm9yIHBhdGgsIG1fZGVmYXVsdHMgaW4gbXBtYW5pZmVzdC5tYW5pZmVzdF9kZWZhdWx0cy5pdGVtcygpOgorKyAgICAgICAgICAgIGZvciBwYXRoLCBtX2RlZmF1bHRzIGluIGxpc3QobXBtYW5pZmVzdC5tYW5pZmVzdF9kZWZhdWx0cy5pdGVtcygpKToKKyAgICAgICAgICAgICAgICAgcHJvY2Vzc19zdXBwb3J0X2ZpbGVzKG1fZGVmYXVsdHMpCisgCisgICAgICAgICAgICAgIyBXZSBhbHNvIGNvcHkgbWFuaWZlc3RzIGludG8gdGhlIG91dHB1dCBkaXJlY3RvcnksCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2Zyb250ZW5kL3JlYWRlci5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9mcm9udGVuZC9yZWFkZXIucHkKK2luZGV4IGMxZWZjMWMzZC4uMGNkZjhiOGRiIDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2Zyb250ZW5kL3JlYWRlci5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2Zyb250ZW5kL3JlYWRlci5weQorQEAgLTE2LDcgKzE2LDcgQEAgVGhlIEJ1aWxkUmVhZGVyIGNvbnRhaW5zIGJhc2ljIGxvZ2ljIGZvciB0cmF2ZXJzaW5nIGEgdHJlZSBvZiBtb3pidWlsZCBmaWxlcy4KKyBJdCBkb2VzIHRoaXMgYnkgZXhhbWluaW5nIHNwZWNpZmljIHZhcmlhYmxlcyBwb3B1bGF0ZWQgZHVyaW5nIGV4ZWN1dGlvbi4KKyAiIiIKKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24sIHVuaWNvZGVfbGl0ZXJhbHMKKysKKyAKKyBpbXBvcnQgYXN0CisgaW1wb3J0IGluc3BlY3QKK0BAIC04MSwxMiArODEsMTMgQEAgZnJvbSAuY29udGV4dCBpbXBvcnQgKAorIAorIGZyb20gbW96YnVpbGQuYmFzZSBpbXBvcnQgRXhlY3V0aW9uU3VtbWFyeQorIGZyb20gY29uY3VycmVudC5mdXR1cmVzLnByb2Nlc3MgaW1wb3J0IFByb2Nlc3NQb29sRXhlY3V0b3IKKytmcm9tIGZ1bmN0b29scyBpbXBvcnQgcmVkdWNlCisgCisgCisgCisgaWYgc3lzLnZlcnNpb25faW5mby5tYWpvciA9PSAyOgorLSAgICB0ZXh0X3R5cGUgPSB1bmljb2RlCistICAgIHR5cGVfdHlwZSA9IHR5cGVzLlR5cGVUeXBlCisrICAgIHRleHRfdHlwZSA9IHN0cgorKyAgICB0eXBlX3R5cGUgPSB0eXBlCisgZWxzZToKKyAgICAgdGV4dF90eXBlID0gc3RyCisgICAgIHR5cGVfdHlwZSA9IHR5cGUKK0BAIC0xMjcsNyArMTI4LDcgQEAgY2xhc3MgRW1wdHlDb25maWcob2JqZWN0KToKKyAKKyAgICAgICAgIHNlbGYuc3Vic3RzID0gc2VsZi5Qb3B1bGF0ZU9uR2V0RGljdChFbXB0eVZhbHVlLCBzdWJzdHMgb3Igc2VsZi5kZWZhdWx0X3N1YnN0cykKKyAgICAgICAgIHVkaWN0ID0ge30KKy0gICAgICAgIGZvciBrLCB2IGluIHNlbGYuc3Vic3RzLml0ZW1zKCk6CisrICAgICAgICBmb3IgaywgdiBpbiBsaXN0KHNlbGYuc3Vic3RzLml0ZW1zKCkpOgorICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uodiwgc3RyKToKKyAgICAgICAgICAgICAgICAgdWRpY3Rbay5kZWNvZGUoJ3V0Zi04JyldID0gdi5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgICBlbHNlOgorQEAgLTMxMSw3ICszMTIsNyBAQCBjbGFzcyBNb3pidWlsZFNhbmRib3goU2FuZGJveCk6CisgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdgdGVtcGxhdGVgIGlzIGEgZnVuY3Rpb24gZGVjb3JhdG9yLiBZb3UgbXVzdCAnCisgICAgICAgICAgICAgICAgICd1c2UgaXQgYXMgYEB0ZW1wbGF0ZWAgcHJlY2VkaW5nIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24uJykKKyAKKy0gICAgICAgIG5hbWUgPSBmdW5jLmZ1bmNfbmFtZQorKyAgICAgICAgbmFtZSA9IGZ1bmMuX19uYW1lX18KKyAKKyAgICAgICAgIGlmIG5hbWUgaW4gc2VsZi50ZW1wbGF0ZXM6CisgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoCitAQCAtMzkwLDcgKzM5MSw3IEBAIGNsYXNzIE1vemJ1aWxkU2FuZGJveChTYW5kYm94KToKKyAgICAgICAgICAgICBrbGFzcyA9IHNlbGYuX2NvbnRleHQuX19jbGFzc19fCisgICAgICAgICAgICAgc2VsZi5fY29udGV4dC5fX2NsYXNzX18gPSBUZW1wbGF0ZUNvbnRleHQKKyAgICAgICAgICAgICAjIFRoZSBzYW5kYm94IHdpbGwgZG8gYWxsIHRoZSBuZWNlc3NhcnkgY2hlY2tzIGZvciB0aGVzZSBtZXJnZXMuCistICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gY29udGV4dC5pdGVtcygpOgorKyAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGxpc3QoY29udGV4dC5pdGVtcygpKToKKyAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZGljdCk6CisgICAgICAgICAgICAgICAgICAgICBzZWxmW2tleV0udXBkYXRlKHZhbHVlKQorICAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIChsaXN0LCBIaWVyYXJjaGljYWxTdHJpbmdMaXN0KSk6CitAQCAtNDA3LDEyICs0MDgsMTQgQEAgY2xhc3MgTW96YnVpbGRTYW5kYm94KFNhbmRib3gpOgorIAorIGNsYXNzIFRlbXBsYXRlRnVuY3Rpb24ob2JqZWN0KToKKyAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmMsIHNhbmRib3gpOgorLSAgICAgICAgc2VsZi5wYXRoID0gZnVuYy5mdW5jX2NvZGUuY29fZmlsZW5hbWUKKy0gICAgICAgIHNlbGYubmFtZSA9IGZ1bmMuZnVuY19uYW1lCisrICAgICAgICBzZWxmLnBhdGggPSBmdW5jLl9fY29kZV9fLmNvX2ZpbGVuYW1lCisrICAgICAgICBzZWxmLm5hbWUgPSBmdW5jLl9fbmFtZV9fCisgCistICAgICAgICBjb2RlID0gZnVuYy5mdW5jX2NvZGUKKysgICAgICAgIGNvZGUgPSBmdW5jLl9fY29kZV9fCisgICAgICAgICBmaXJzdGxpbmVubyA9IGNvZGUuY29fZmlyc3RsaW5lbm8KKyAgICAgICAgIGxpbmVzID0gc2FuZGJveC5fY3VycmVudF9zb3VyY2Uuc3BsaXRsaW5lcyhUcnVlKQorKyAgICAgICAgaWYgbGVuKGxpbmVzKSBhbmQgaXNpbnN0YW5jZShsaW5lc1swXSwgYnl0ZXMpOgorKyAgICAgICAgICAgIGxpbmVzID0gW2wuZGVjb2RlKCd1dGYtOCcpIGZvciBsIGluIGxpbmVzXQorICAgICAgICAgbGluZXMgPSBpbnNwZWN0LmdldGJsb2NrKGxpbmVzW2ZpcnN0bGluZW5vIC0gMTpdKQorIAorICAgICAgICAgIyBUaGUgY29kZSBsaW5lcyB3ZSBnZXQgb3V0IG9mIGluc3BlY3QuZ2V0c291cmNlbGluZXMgbG9vayBsaWtlCitAQCAtNDMwLDcgKzQzMyw3IEBAIGNsYXNzIFRlbXBsYXRlRnVuY3Rpb24ob2JqZWN0KToKKyAgICAgICAgICMgYWN0dWFsbHkgbmV2ZXIgY2FsbHMgX19nZXRpdGVtX18gYW5kIF9fc2V0aXRlbV9fLCBzbyB3ZSBuZWVkIHRvCisgICAgICAgICAjIG1vZGlmeSB0aGUgQVNUIHNvIHRoYXQgYWNjZXNzZXMgdG8gZ2xvYmFscyBhcmUgcHJvcGVybHkgZGlyZWN0ZWQKKyAgICAgICAgICMgdG8gYSBkaWN0LgorLSAgICAgICAgc2VsZi5fZ2xvYmFsX25hbWUgPSBiJ19kYXRhJyAjIEFTVCB3YW50cyBzdHIgZm9yIHRoaXMsIG5vdCB1bmljb2RlCisrICAgICAgICBzZWxmLl9nbG9iYWxfbmFtZSA9ICdfZGF0YScKKyAgICAgICAgICMgSW4gY2FzZSAnX2RhdGEnIGlzIGEgbmFtZSB1c2VkIGZvciBhIHZhcmlhYmxlIGluIHRoZSBmdW5jdGlvbiBjb2RlLAorICAgICAgICAgIyBwcmVwZW5kIG1vcmUgdW5kZXJzY29yZXMgdW50aWwgd2UgZmluZCBhbiB1bnVzZWQgbmFtZS4KKyAgICAgICAgIHdoaWxlIChzZWxmLl9nbG9iYWxfbmFtZSBpbiBjb2RlLmNvX25hbWVzIG9yCitAQCAtNDQ5LDggKzQ1Miw4IEBAIGNsYXNzIFRlbXBsYXRlRnVuY3Rpb24ob2JqZWN0KToKKyAgICAgICAgICAgICBjb21waWxlKGZ1bmNfYXN0LCBzZWxmLnBhdGgsICdleGVjJyksCisgICAgICAgICAgICAgZ2xvYiwKKyAgICAgICAgICAgICBzZWxmLm5hbWUsCistICAgICAgICAgICAgZnVuYy5mdW5jX2RlZmF1bHRzLAorLSAgICAgICAgICAgIGZ1bmMuZnVuY19jbG9zdXJlLAorKyAgICAgICAgICAgIGZ1bmMuX19kZWZhdWx0c19fLAorKyAgICAgICAgICAgIGZ1bmMuX19jbG9zdXJlX18sCisgICAgICAgICApCisgICAgICAgICBmdW5jKCkKKyAKK0BAIC00NjQsMTEgKzQ2NywxMSBAQCBjbGFzcyBUZW1wbGF0ZUZ1bmN0aW9uKG9iamVjdCk6CisgICAgICAgICAgICAgJ19fYnVpbHRpbnNfXyc6IHNhbmRib3guX2J1aWx0aW5zCisgICAgICAgICB9CisgICAgICAgICBmdW5jID0gdHlwZXMuRnVuY3Rpb25UeXBlKAorLSAgICAgICAgICAgIHNlbGYuX2Z1bmMuZnVuY19jb2RlLAorKyAgICAgICAgICAgIHNlbGYuX2Z1bmMuX19jb2RlX18sCisgICAgICAgICAgICAgZ2xvYiwKKyAgICAgICAgICAgICBzZWxmLm5hbWUsCistICAgICAgICAgICAgc2VsZi5fZnVuYy5mdW5jX2RlZmF1bHRzLAorLSAgICAgICAgICAgIHNlbGYuX2Z1bmMuZnVuY19jbG9zdXJlCisrICAgICAgICAgICAgc2VsZi5fZnVuYy5fX2RlZmF1bHRzX18sCisrICAgICAgICAgICAgc2VsZi5fZnVuYy5fX2Nsb3N1cmVfXworICAgICAgICAgKQorICAgICAgICAgc2FuZGJveC5leGVjX2Z1bmN0aW9uKGZ1bmMsIGFyZ3MsIGt3YXJncywgc2VsZi5wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlY29tZXNfY3VycmVudF9wYXRoPUZhbHNlKQorQEAgLTQ4NCw3ICs0ODcsNyBAQCBjbGFzcyBUZW1wbGF0ZUZ1bmN0aW9uKG9iamVjdCk6CisgICAgICAgICBkZWYgdmlzaXRfU3RyKHNlbGYsIG5vZGUpOgorICAgICAgICAgICAgICMgU3RyaW5nIG5vZGVzIHdlIGdvdCBmcm9tIHRoZSBBU1QgcGFyc2VyIGFyZSBzdHIsIGJ1dCB3ZSB3YW50CisgICAgICAgICAgICAgIyB1bmljb2RlIGxpdGVyYWxzIGV2ZXJ5d2hlcmUsIHNvIHRyYW5zZm9ybSB0aGVtLgorLSAgICAgICAgICAgIG5vZGUucyA9IHVuaWNvZGUobm9kZS5zKQorKyAgICAgICAgICAgIG5vZGUucyA9IHN0cihub2RlLnMpCisgICAgICAgICAgICAgcmV0dXJuIG5vZGUKKyAKKyAgICAgICAgIGRlZiB2aXNpdF9OYW1lKHNlbGYsIG5vZGUpOgorQEAgLTYxNyw3ICs2MjAsNyBAQCBjbGFzcyBCdWlsZFJlYWRlckVycm9yKEV4Y2VwdGlvbik6CisgCisgICAgICAgICAgICAgZm9yIGwgaW4gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24odHlwZShzZWxmLm90aGVyKSwgc2VsZi5vdGhlciwKKyAgICAgICAgICAgICAgICAgc2VsZi50cmFjZSk6CistICAgICAgICAgICAgICAgIHMud3JpdGUodW5pY29kZShsKSkKKysgICAgICAgICAgICAgICAgcy53cml0ZShzdHIobCkpCisgCisgICAgICAgICByZXR1cm4gcy5nZXR2YWx1ZSgpCisgCitAQCAtNzY3LDcgKzc3MCw3IEBAIGNsYXNzIEJ1aWxkUmVhZGVyRXJyb3IoRXhjZXB0aW9uKToKKyAgICAgICAgICAgICBzLndyaXRlKCcgICAgJXNcbicgJSBpbm5lci5hcmdzWzJdKQorICAgICAgICAgICAgIHMud3JpdGUoJ1xuJykKKyAgICAgICAgICAgICBjbG9zZV9tYXRjaGVzID0gZGlmZmxpYi5nZXRfY2xvc2VfbWF0Y2hlcyhpbm5lci5hcmdzWzJdLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBUklBQkxFUy5rZXlzKCksIDIpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChWQVJJQUJMRVMua2V5cygpKSwgMikKKyAgICAgICAgICAgICBpZiBjbG9zZV9tYXRjaGVzOgorICAgICAgICAgICAgICAgICBzLndyaXRlKCdNYXliZSB5b3UgbWVhbnQgJXM/XG4nICUgJyBvciAnLmpvaW4oY2xvc2VfbWF0Y2hlcykpCisgICAgICAgICAgICAgICAgIHMud3JpdGUoJ1xuJykKK0BAIC0xMTUyLDcgKzExNTUsNyBAQCBjbGFzcyBCdWlsZFJlYWRlcihvYmplY3QpOgorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQpCisgICAgICAgICAgICAgICAgIG5vbl91bmlmaWVkX3NvdXJjZXMuYWRkKHNvdXJjZSkKKyAgICAgICAgICAgICBhY3Rpb25fb3ZlcnJpZGVzID0ge30KKy0gICAgICAgICAgICBmb3IgYWN0aW9uLCBzY3JpcHQgaW4gZ3lwX2Rpci5hY3Rpb25fb3ZlcnJpZGVzLml0ZXJpdGVtcygpOgorKyAgICAgICAgICAgIGZvciBhY3Rpb24sIHNjcmlwdCBpbiBneXBfZGlyLmFjdGlvbl9vdmVycmlkZXMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgYWN0aW9uX292ZXJyaWRlc1thY3Rpb25dID0gU291cmNlUGF0aChjb250ZXh0LCBzY3JpcHQpCisgCisgICAgICAgICAgICAgZ3lwX3Byb2Nlc3NvciA9IEd5cFByb2Nlc3Nvcihjb250ZXh0LmNvbmZpZywKK0BAIC0xMTg4LDcgKzExOTEsNyBAQCBjbGFzcyBCdWlsZFJlYWRlcihvYmplY3QpOgorIAorICAgICAgICAgICAgICAgICByZWN1cnNlX2luZm9bZF1ba2V5XSA9IGRpY3Qoc2FuZGJveC5tZXRhZGF0YVtrZXldKQorIAorLSAgICAgICAgZm9yIHBhdGgsIGNoaWxkX21ldGFkYXRhIGluIHJlY3Vyc2VfaW5mby5pdGVtcygpOgorKyAgICAgICAgZm9yIHBhdGgsIGNoaWxkX21ldGFkYXRhIGluIGxpc3QocmVjdXJzZV9pbmZvLml0ZW1zKCkpOgorICAgICAgICAgICAgIGNoaWxkX3BhdGggPSBwYXRoLmpvaW4oJ21vei5idWlsZCcpLmZ1bGxfcGF0aAorIAorICAgICAgICAgICAgICMgRW5zdXJlIHdlIGRvbid0IGJyZWFrIG91dCBvZiB0aGUgdG9wc3JjZGlyLiBXZSBkb24ndCBkbyByZWFscGF0aAorQEAgLTEyNzksNyArMTI4Miw3IEBAIGNsYXNzIEJ1aWxkUmVhZGVyKG9iamVjdCk6CisgICAgICAgICAjIFRoZXJlIGlzIHJvb20gdG8gaW1wcm92ZSB0aGlzIGNvZGUgKGFuZCB0aGUgY29kZSBpbgorICAgICAgICAgIyBfZmluZF9yZWxldmFudF9tb3pidWlsZHMpIHRvIGJldHRlciBoYW5kbGUgbXVsdGlwbGUgZmlsZXMgaW4gdGhlIHNhbWUKKyAgICAgICAgICMgZGlyZWN0b3J5LiBCdWcgMTEzNjk2NiB0cmFja3MuCistICAgICAgICBmb3IgcGF0aCwgbWJwYXRocyBpbiByZWxldmFudHMuaXRlbXMoKToKKysgICAgICAgIGZvciBwYXRoLCBtYnBhdGhzIGluIGxpc3QocmVsZXZhbnRzLml0ZW1zKCkpOgorICAgICAgICAgICAgIHBhdGhfbW96YnVpbGRzW3BhdGhdID0gW21venBhdGguam9pbih0b3BzcmNkaXIsIHApIGZvciBwIGluIG1icGF0aHNdCisgCisgICAgICAgICAgICAgZm9yIGksIG1icGF0aCBpbiBlbnVtZXJhdGUobWJwYXRoc1swOi0xXSk6CitAQCAtMTMxNiw3ICsxMzE5LDcgQEAgY2xhc3MgQnVpbGRSZWFkZXIob2JqZWN0KToKKyAgICAgICAgICAgICBhbGxfY29udGV4dHMuYXBwZW5kKGNvbnRleHQpCisgCisgICAgICAgICByZXN1bHQgPSB7fQorLSAgICAgICAgZm9yIHBhdGgsIHBhdGhzIGluIHBhdGhfbW96YnVpbGRzLml0ZW1zKCk6CisrICAgICAgICBmb3IgcGF0aCwgcGF0aHMgaW4gbGlzdChwYXRoX21vemJ1aWxkcy5pdGVtcygpKToKKyAgICAgICAgICAgICByZXN1bHRbcGF0aF0gPSByZWR1Y2UobGFtYmRhIHgsIHk6IHggKyB5LCAoY29udGV4dHNbcF0gZm9yIHAgaW4gcGF0aHMpLCBbXSkKKyAKKyAgICAgICAgIHJldHVybiByZXN1bHQsIGFsbF9jb250ZXh0cworQEAgLTEzNTYsNyArMTM1OSw3IEBAIGNsYXNzIEJ1aWxkUmVhZGVyKG9iamVjdCk6CisgCisgICAgICAgICByID0ge30KKyAKKy0gICAgICAgIGZvciBwYXRoLCBjdHhzIGluIHBhdGhzLml0ZW1zKCk6CisrICAgICAgICBmb3IgcGF0aCwgY3R4cyBpbiBsaXN0KHBhdGhzLml0ZW1zKCkpOgorICAgICAgICAgICAgICMgU2hvdWxkIGJlIG5vcm1hbGl6ZWQgYnkgcmVhZF9yZWxldmFudF9tb3pidWlsZHMuCisgICAgICAgICAgICAgYXNzZXJ0ICdcXCcgbm90IGluIHBhdGgKKyAKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvZnJvbnRlbmQvc2FuZGJveC5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9mcm9udGVuZC9zYW5kYm94LnB5CitpbmRleCBiMjA5MDgwMmUuLjZkOTQyOTFlYSAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9mcm9udGVuZC9zYW5kYm94LnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvZnJvbnRlbmQvc2FuZGJveC5weQorQEAgLTE3LDcgKzE3LDcgQEAgS2V5RXJyb3IgYXJlIG1hY2hpbmUgcGFyc2VhYmxlLiBUaGlzIG1hY2hpbmUtZnJpZW5kbHkgZGF0YSBpcyB1c2VkIHRvIHByZXNlbnQKKyB1c2VyLWZyaWVuZGx5IGVycm9yIG1lc3NhZ2VzIGluIHRoZSBjYXNlIG9mIGVycm9ycy4KKyAiIiIKKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgdW5pY29kZV9saXRlcmFscworKworIAorIGltcG9ydCBvcworIGltcG9ydCBzeXMKK0BAIC0xMTIsNiArMTEyLDcgQEAgY2xhc3MgU2FuZGJveChkaWN0KToKKyAgICAgICAgICdpbnQnOiBpbnQsCisgICAgICAgICAnc2V0Jzogc2V0LAorICAgICAgICAgJ3R1cGxlJzogdHVwbGUsCisrICAgICAgICAnc3RyJzogc3RyLAorICAgICB9KQorIAorICAgICBkZWYgX19pbml0X18oc2VsZiwgY29udGV4dCwgZmluZGVyPWRlZmF1bHRfZmluZGVyKToKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvamFyLnB5IGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2phci5weQoraW5kZXggNDdhMmVmZjYzLi45NmFlYTYzY2UgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvamFyLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvamFyLnB5CitAQCAtOCw3ICs4LDcgQEAgcHJvY2Vzc2luZyBqYXIubW4gZmlsZXMuCisgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBqYXIubW4gb24gTURDIGZvciBmdXJ0aGVyIGRldGFpbHMgb24gdGhlIGZvcm1hdC4KKyAnJycKKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorKworIAorIGltcG9ydCBzeXMKKyBpbXBvcnQgb3MKK0BAIC0xNyw3ICsxNyw3IEBAIGltcG9ydCByZQorIGltcG9ydCBsb2dnaW5nCisgZnJvbSB0aW1lIGltcG9ydCBsb2NhbHRpbWUKKyBmcm9tIE1velppcEZpbGUgaW1wb3J0IFppcEZpbGUKKy1mcm9tIGNTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KKytmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CisgCisgZnJvbSBtb3pidWlsZC5wcmVwcm9jZXNzb3IgaW1wb3J0IFByZXByb2Nlc3NvcgorQEAgLTMwMiw5ICszMDIsOSBAQCBjbGFzcyBKYXJNYWtlcihvYmplY3QpOgorICAgICAgICAgJycndXBkYXRlTWFuaWZlc3QgcmVwbGFjZXMgdGhlICUgaW4gdGhlIGNocm9tZSByZWdpc3RyYXRpb24gZW50cmllcworICAgICAgICAgd2l0aCB0aGUgZ2l2ZW4gY2hyb21lIGJhc2UgcGF0aCwgYW5kIHVwZGF0ZXMgdGhlIGdpdmVuIG1hbmlmZXN0IGZpbGUuCisgICAgICAgICAnJycKKy0gICAgICAgIG15cmVnaXN0ZXIgPSBkaWN0LmZyb21rZXlzKG1hcChsYW1iZGEgczogcy5yZXBsYWNlKCclJywKKy0gICAgICAgICAgICBjaHJvbWViYXNlcGF0aCksIHJlZ2lzdGVyKSkKKy0gICAgICAgIGFkZEVudHJpZXNUb0xpc3RGaWxlKG1hbmlmZXN0UGF0aCwgbXlyZWdpc3Rlci5pdGVya2V5cygpKQorKyAgICAgICAgbXlyZWdpc3RlciA9IGRpY3QuZnJvbWtleXMoW3MucmVwbGFjZSgnJScsCisrICAgICAgICAgICAgY2hyb21lYmFzZXBhdGgpIGZvciBzIGluIHJlZ2lzdGVyXSkKKysgICAgICAgIGFkZEVudHJpZXNUb0xpc3RGaWxlKG1hbmlmZXN0UGF0aCwgaXRlcihteXJlZ2lzdGVyLmtleXMoKSkpCisgCisgICAgIGRlZiBtYWtlSmFyKHNlbGYsIGluZmlsZSwgamFyZGlyKToKKyAgICAgICAgICcnJ21ha2VKYXIgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQgdG8gSmFyTWFrZXIuCitAQCAtMzIyLDcgKzMyMiw3IEBAIGNsYXNzIEphck1ha2VyKG9iamVjdCk6CisgICAgICAgICBlbGlmIHNlbGYucmVsYXRpdmVzcmNkaXI6CisgICAgICAgICAgICAgc2VsZi5sb2NhbGVkaXJzID0gXAorICAgICAgICAgICAgICAgICBzZWxmLmdlbmVyYXRlTG9jYWxlRGlycyhzZWxmLnJlbGF0aXZlc3JjZGlyKQorLSAgICAgICAgaWYgaXNpbnN0YW5jZShpbmZpbGUsIGJhc2VzdHJpbmcpOgorKyAgICAgICAgaWYgaXNpbnN0YW5jZShpbmZpbGUsIHN0cik6CisgICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCdwcm9jZXNzaW5nICcgKyBpbmZpbGUpCisgICAgICAgICAgICAgc2VsZi5zb3VyY2VkaXJzLmFwcGVuZChfbm9ybXBhdGgob3MucGF0aC5kaXJuYW1lKGluZmlsZSkpKQorICAgICAgICAgcHAgPSBzZWxmLnBwLmNsb25lKCkKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvbWFrZXV0aWwucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvbWFrZXV0aWwucHkKK2luZGV4IGZjZDQ1YmVkMi4uZjc3YzVkMmMzIDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL21ha2V1dGlsLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvbWFrZXV0aWwucHkKK0BAIC0yLDExICsyLDEwIEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisrCisgCisgaW1wb3J0IG9zCisgaW1wb3J0IHJlCistZnJvbSB0eXBlcyBpbXBvcnQgU3RyaW5nVHlwZXMKKyBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBJdGVyYWJsZQorIAorIAorQEAgLTY2LDcgKzY1LDcgQEAgY2xhc3MgX1NpbXBsZU9yZGVyZWRTZXQob2JqZWN0KToKKyAgICAgICAgIHNlbGYuX2xpc3QgPSBbXQorICAgICAgICAgc2VsZi5fc2V0ID0gc2V0KCkKKyAKKy0gICAgZGVmIF9fbm9uemVyb19fKHNlbGYpOgorKyAgICBkZWYgX19ib29sX18oc2VsZik6CisgICAgICAgICByZXR1cm4gYm9vbChzZWxmLl9zZXQpCisgCisgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKK0BAIC0xMDMsMTkgKzEwMiwxOSBAQCBjbGFzcyBSdWxlKG9iamVjdCk6CisgCisgICAgIGRlZiBhZGRfdGFyZ2V0cyhzZWxmLCB0YXJnZXRzKToKKyAgICAgICAgICcnJ0FkZCBhZGRpdGlvbmFsIHRhcmdldHMgdG8gdGhlIHJ1bGUuJycnCistICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh0YXJnZXRzLCBJdGVyYWJsZSkgYW5kIG5vdCBpc2luc3RhbmNlKHRhcmdldHMsIFN0cmluZ1R5cGVzKQorKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodGFyZ2V0cywgSXRlcmFibGUpIGFuZCBub3QgaXNpbnN0YW5jZSh0YXJnZXRzLCBzdHIpCisgICAgICAgICBzZWxmLl90YXJnZXRzLnVwZGF0ZSh0YXJnZXRzKQorICAgICAgICAgcmV0dXJuIHNlbGYKKyAKKyAgICAgZGVmIGFkZF9kZXBlbmRlbmNpZXMoc2VsZiwgZGVwcyk6CisgICAgICAgICAnJydBZGQgZGVwZW5kZW5jaWVzIHRvIHRoZSBydWxlLicnJworLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZGVwcywgSXRlcmFibGUpIGFuZCBub3QgaXNpbnN0YW5jZShkZXBzLCBTdHJpbmdUeXBlcykKKysgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRlcHMsIEl0ZXJhYmxlKSBhbmQgbm90IGlzaW5zdGFuY2UoZGVwcywgc3RyKQorICAgICAgICAgc2VsZi5fZGVwZW5kZW5jaWVzLnVwZGF0ZShkZXBzKQorICAgICAgICAgcmV0dXJuIHNlbGYKKyAKKyAgICAgZGVmIGFkZF9jb21tYW5kcyhzZWxmLCBjb21tYW5kcyk6CisgICAgICAgICAnJydBZGQgY29tbWFuZHMgdG8gdGhlIHJ1bGUuJycnCistICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjb21tYW5kcywgSXRlcmFibGUpIGFuZCBub3QgaXNpbnN0YW5jZShjb21tYW5kcywgU3RyaW5nVHlwZXMpCisrICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjb21tYW5kcywgSXRlcmFibGUpIGFuZCBub3QgaXNpbnN0YW5jZShjb21tYW5kcywgc3RyKQorICAgICAgICAgc2VsZi5fY29tbWFuZHMuZXh0ZW5kKGNvbW1hbmRzKQorICAgICAgICAgcmV0dXJuIHNlbGYKKyAKK0BAIC0xMzksMTMgKzEzOCwxNiBAQCBjbGFzcyBSdWxlKG9iamVjdCk6CisgICAgICAgICAnJycKKyAgICAgICAgIGlmIG5vdCBzZWxmLl90YXJnZXRzOgorICAgICAgICAgICAgIHJldHVybgorLSAgICAgICAgZmgud3JpdGUoJyVzOicgJSAnICcuam9pbihzZWxmLl90YXJnZXRzKSkKKysgICAgICAgIHdzdHJpbmcgPSAnJXM6JyAlICcgJy5qb2luKHNlbGYuX3RhcmdldHMpCisgICAgICAgICBpZiBzZWxmLl9kZXBlbmRlbmNpZXM6CistICAgICAgICAgICAgZmgud3JpdGUoJyAlcycgJSAnICcuam9pbihzZWxmLmRlcGVuZGVuY2llcygpKSkKKy0gICAgICAgIGZoLndyaXRlKCdcbicpCisrICAgICAgICAgICAgd3N0cmluZyArPSAnICVzJyAlICcgJy5qb2luKHNlbGYuZGVwZW5kZW5jaWVzKCkpCisrICAgICAgICB3c3RyaW5nICs9ICdcbicKKyAgICAgICAgIGZvciBjbWQgaW4gc2VsZi5fY29tbWFuZHM6CistICAgICAgICAgICAgZmgud3JpdGUoJ1x0JXNcbicgJSBjbWQpCistCisrICAgICAgICAgICAgd3N0cmluZyArPSAnXHQlc1xuJyAlIGNtZAorKyAgICAgICAgdHJ5OgorKyAgICAgICAgICAgIGZoLndyaXRlKHdzdHJpbmcuZW5jb2RlKCd1dGYtOCcpKQorKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKysgICAgICAgICAgICBmaC53cml0ZSh3c3RyaW5nKQorIAorICMgY29sb24gZm9sbG93ZWQgYnkgYW55dGhpbmcgZXhjZXB0IGEgc2xhc2ggKFdpbmRvd3MgcGF0aCBkZXRlY3Rpb24pCisgX2RlcGZpbGVzcGxpdHRlciA9IHJlLmNvbXBpbGUocic6KD8hW1xcL10pJykKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvbW96aW5mby5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9tb3ppbmZvLnB5CitpbmRleCA3ZTdhZDFiMmEuLmYwM2YyMGJhMyAxMDA3NTUKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9tb3ppbmZvLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvbW96aW5mby5weQorQEAgLTUsNyArNSw3IEBACisgIyBUaGlzIG1vZHVsZSBwcm9kdWNlcyBhIEpTT04gZmlsZSB0aGF0IHByb3ZpZGVzIGJhc2ljIGJ1aWxkIGluZm8gYW5kCisgIyBjb25maWd1cmF0aW9uIG1ldGFkYXRhLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisrCisgCisgaW1wb3J0IG9zCisgaW1wb3J0IHJlCitAQCAtMzMsNyArMzMsNyBAQCBkZWYgYnVpbGRfZGljdChjb25maWcsIGVudj1vcy5lbnZpcm9uKToKKyAgICAgICAgIGRbJ21vemNvbmZpZyddID0gY29uZmlnLm1vemNvbmZpZworIAorICAgICAjIG9zCistICAgIG8gPSBzdWJzdHNbIk9TX1RBUkdFVCJdCisrICAgIG8gPSBzdHIoc3Vic3RzWyJPU19UQVJHRVQiXSkKKyAgICAga25vd25fb3MgPSB7IkxpbnV4IjogImxpbnV4IiwKKyAgICAgICAgICAgICAgICAgIldJTk5UIjogIndpbiIsCisgICAgICAgICAgICAgICAgICJEYXJ3aW4iOiAibWFjIiwKK0BAIC0xNDgsNyArMTQ4LDcgQEAgZGVmIHdyaXRlX21vemluZm8oZmlsZSwgY29uZmlnLCBlbnY9b3MuZW52aXJvbik6CisgICAgIGFuZCB3aGF0IGtleXMgYXJlIHByb2R1Y2VkLgorICAgICAiIiIKKyAgICAgYnVpbGRfY29uZiA9IGJ1aWxkX2RpY3QoY29uZmlnLCBlbnYpCistICAgIGlmIGlzaW5zdGFuY2UoZmlsZSwgYmFzZXN0cmluZyk6CistICAgICAgICBmaWxlID0gb3BlbihmaWxlLCAnd2InKQorKyAgICBpZiBpc2luc3RhbmNlKGZpbGUsIHN0cik6CisrICAgICAgICBmaWxlID0gb3BlbihmaWxlLCAndycpCisgCisgICAgIGpzb24uZHVtcChidWlsZF9jb25mLCBmaWxlLCBzb3J0X2tleXM9VHJ1ZSwgaW5kZW50PTQpCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3ByZXByb2Nlc3Nvci5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9wcmVwcm9jZXNzb3IucHkKK2luZGV4IDY3ODBiOGI3Mi4uMTllNTk4ODRlIDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3ByZXByb2Nlc3Nvci5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3ByZXByb2Nlc3Nvci5weQorQEAgLTI3LDcgKzI3LDggQEAgaW1wb3J0IG9zCisgaW1wb3J0IHJlCisgZnJvbSBvcHRwYXJzZSBpbXBvcnQgT3B0aW9uUGFyc2VyCisgaW1wb3J0IGVycm5vCistZnJvbSBtYWtldXRpbCBpbXBvcnQgTWFrZWZpbGUKKytmcm9tIC5tYWtldXRpbCBpbXBvcnQgTWFrZWZpbGUKKytmcm9tIGZ1bmN0b29scyBpbXBvcnQgcmVkdWNlCisgCisgIyBoYWNrIGFyb3VuZCB3aW4zMiBtYW5nbGluZyBvdXIgbGluZSBlbmRpbmdzCisgIyBodHRwOi8vYXNwbi5hY3RpdmVzdGF0ZS5jb20vQVNQTi9Db29rYm9vay9QeXRob24vUmVjaXBlLzY1NDQzCitAQCAtMjMwLDcgKzIzMSw3IEBAIGNsYXNzIEV4cHJlc3Npb246CisgICAgICAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUuX19yZXByX18oKQorIAorLSAgICBjbGFzcyBQYXJzZUVycm9yKFN0YW5kYXJkRXJyb3IpOgorKyAgICBjbGFzcyBQYXJzZUVycm9yKEV4Y2VwdGlvbik6CisgICAgICAgICAiIiIKKyAgICAgICAgIEVycm9yIHJhaXNlZCB3aGVuIHBhcnNpbmcgZmFpbHMuCisgICAgICAgICBJdCBoYXMgdHdvIG1lbWJlcnMsIG9mZnNldCBhbmQgY29udGVudCwgd2hpY2ggZ2l2ZSB0aGUgb2Zmc2V0IG9mIHRoZQorQEAgLTI3OCw3ICsyNzksNyBAQCBjbGFzcyBQcmVwcm9jZXNzb3I6CisgICAgICAgICBzZWxmLmNvbnRleHQgPSBDb250ZXh0KCkKKyAgICAgICAgIGZvciBrLHYgaW4geydGSUxFJzogJycsCisgICAgICAgICAgICAgICAgICAgICAnTElORSc6IDAsCistICAgICAgICAgICAgICAgICAgICAnRElSRUNUT1JZJzogb3MucGF0aC5hYnNwYXRoKCcuJyl9Lml0ZXJpdGVtcygpOgorKyAgICAgICAgICAgICAgICAgICAgJ0RJUkVDVE9SWSc6IG9zLnBhdGguYWJzcGF0aCgnLicpfS5pdGVtcygpOgorICAgICAgICAgICAgIHNlbGYuY29udGV4dFtrXSA9IHYKKyAgICAgICAgIHNlbGYuYWN0aW9uTGV2ZWwgPSAwCisgICAgICAgICBzZWxmLmRpc2FibGVMZXZlbCA9IDAKK0BAIC0yOTIsMjEgKzI5MywyMSBAQCBjbGFzcyBQcmVwcm9jZXNzb3I6CisgICAgICAgICBzZWxmLmNtZHMgPSB7fQorICAgICAgICAgZm9yIGNtZCwgbGV2ZWwgaW4geydkZWZpbmUnOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlZic6IDAsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lmJzogc3lzLm1heGludCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAnaWZkZWYnOiBzeXMubWF4aW50LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZm5kZWYnOiBzeXMubWF4aW50LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZic6IHN5cy5tYXhzaXplLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZmRlZic6IHN5cy5tYXhzaXplLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZm5kZWYnOiBzeXMubWF4c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWxzZSc6IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VsaWYnOiAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbGlmZGVmJzogMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWxpZm5kZWYnOiAxLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbmRpZic6IHN5cy5tYXhpbnQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuZGlmJzogc3lzLm1heHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cGFuZCc6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpdGVyYWwnOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWx0ZXInOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmZpbHRlcic6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUnOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlc3Vic3QnOiAwLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvcic6IDB9Lml0ZXJpdGVtcygpOgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvcic6IDB9Lml0ZW1zKCk6CisgICAgICAgICAgICAgc2VsZi5jbWRzW2NtZF0gPSAobGV2ZWwsIGdldGF0dHIoc2VsZiwgJ2RvXycgKyBjbWQpKQorICAgICAgICAgc2VsZi5vdXQgPSBzeXMuc3Rkb3V0CisgICAgICAgICBzZWxmLnNldE1hcmtlcihtYXJrZXIpCitAQCAtNDM0LDcgKzQzNSw3IEBAIGNsYXNzIFByZXByb2Nlc3NvcjoKKyAgICAgICAgIGZpbHRlcmVkTGluZSA9IHNlbGYuYXBwbHlGaWx0ZXJzKGFMaW5lKQorICAgICAgICAgaWYgZmlsdGVyZWRMaW5lICE9IGFMaW5lOgorICAgICAgICAgICAgIHNlbGYuYWN0aW9uTGV2ZWwgPSAyCistICAgICAgICBzZWxmLm91dC53cml0ZShmaWx0ZXJlZExpbmUpCisrICAgICAgICBzZWxmLm91dC53cml0ZShmaWx0ZXJlZExpbmUuZW5jb2RlKCd1dGYtOCcpKQorIAorICAgICBkZWYgaGFuZGxlQ29tbWFuZExpbmUoc2VsZiwgYXJncywgZGVmYXVsdFRvU3RkaW4gPSBGYWxzZSk6CisgICAgICAgICAiIiIKK0BAIC00NjgsNyArNDY5LDcgQEAgY2xhc3MgUHJlcHJvY2Vzc29yOgorICAgICAgICAgICAgICAgICByYWlzZSBQcmVwcm9jZXNzb3IuRXJyb3Ioc2VsZiwgIi0tZGVwZW5kIGRvZXNuJ3Qgd29yayB3aXRoIHN0ZG91dCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lKQorICAgICAgICAgICAgIHRyeToKKy0gICAgICAgICAgICAgICAgZnJvbSBtYWtldXRpbCBpbXBvcnQgTWFrZWZpbGUKKysgICAgICAgICAgICAgICAgZnJvbSAubWFrZXV0aWwgaW1wb3J0IE1ha2VmaWxlCisgICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgICByYWlzZSBQcmVwcm9jZXNzb3IuRXJyb3Ioc2VsZiwgIi0tZGVwZW5kIHJlcXVpcmVzIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW96YnVpbGQubWFrZXV0aWwgbW9kdWxlIiwgTm9uZSkKK0BAIC02ODMsNyArNjg0LDcgQEAgY2xhc3MgUHJlcHJvY2Vzc29yOgorICAgICAgICAgY3VycmVudCA9IGRpY3Qoc2VsZi5maWx0ZXJzKQorICAgICAgICAgZm9yIGYgaW4gZmlsdGVyczoKKyAgICAgICAgICAgICBjdXJyZW50W2ZdID0gZ2V0YXR0cihzZWxmLCAnZmlsdGVyXycgKyBmKQorLSAgICAgICAgZmlsdGVyTmFtZXMgPSBjdXJyZW50LmtleXMoKQorKyAgICAgICAgZmlsdGVyTmFtZXMgPSBsaXN0KGN1cnJlbnQua2V5cygpKQorICAgICAgICAgZmlsdGVyTmFtZXMuc29ydCgpCisgICAgICAgICBzZWxmLmZpbHRlcnMgPSBbKGZuLCBjdXJyZW50W2ZuXSkgZm9yIGZuIGluIGZpbHRlck5hbWVzXQorICAgICAgICAgcmV0dXJuCitAQCAtNjkzLDcgKzY5NCw3IEBAIGNsYXNzIFByZXByb2Nlc3NvcjoKKyAgICAgICAgIGZvciBmIGluIGZpbHRlcnM6CisgICAgICAgICAgICAgaWYgZiBpbiBjdXJyZW50OgorICAgICAgICAgICAgICAgICBkZWwgY3VycmVudFtmXQorLSAgICAgICAgZmlsdGVyTmFtZXMgPSBjdXJyZW50LmtleXMoKQorKyAgICAgICAgZmlsdGVyTmFtZXMgPSBsaXN0KGN1cnJlbnQua2V5cygpKQorICAgICAgICAgZmlsdGVyTmFtZXMuc29ydCgpCisgICAgICAgICBzZWxmLmZpbHRlcnMgPSBbKGZuLCBjdXJyZW50W2ZuXSkgZm9yIGZuIGluIGZpbHRlck5hbWVzXQorICAgICAgICAgcmV0dXJuCitAQCAtNzM4LDcgKzczOSw3IEBAIGNsYXNzIFByZXByb2Nlc3NvcjoKKyAgICAgICAgIGFyZ3MgY2FuIGVpdGhlciBiZSBhIGZpbGUgbmFtZSwgb3IgYSBmaWxlLWxpa2Ugb2JqZWN0LgorICAgICAgICAgRmlsZXMgc2hvdWxkIGJlIG9wZW5lZCwgYW5kIHdpbGwgYmUgY2xvc2VkIGFmdGVyIHByb2Nlc3NpbmcuCisgICAgICAgICAiIiIKKy0gICAgICAgIGlzTmFtZSA9IHR5cGUoYXJncykgPT0gc3RyIG9yIHR5cGUoYXJncykgPT0gdW5pY29kZQorKyAgICAgICAgaXNOYW1lID0gdHlwZShhcmdzKSA9PSBzdHIgb3IgdHlwZShhcmdzKSA9PSBzdHIKKyAgICAgICAgIG9sZENoZWNrTGluZU51bWJlcnMgPSBzZWxmLmNoZWNrTGluZU51bWJlcnMKKyAgICAgICAgIHNlbGYuY2hlY2tMaW5lTnVtYmVycyA9IEZhbHNlCisgICAgICAgICBpZiBpc05hbWU6CitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3NoZWxsdXRpbC5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9zaGVsbHV0aWwucHkKK2luZGV4IDE4NWE5NzBlZS4uYzBjMTVmOGYyIDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3NoZWxsdXRpbC5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3NoZWxsdXRpbC5weQorQEAgLTE1LDcgKzE1LDcgQEAgZGVmIF90b2tlbnMycmUoKip0b2tlbnMpOgorICAgICAjIHdoaWNoIG1hdGNoZXMgdGhlIHBhdHRlcm4gYW5kIGNhcHR1cmVzIGl0IGluIGEgbmFtZWQgbWF0Y2ggZ3JvdXAuCisgICAgICMgVGhlIGdyb3VwIG5hbWVzIGFuZCBwYXR0ZXJucyBhcmUgZ2l2ZW4gYXMgYXJndW1lbnRzLgorICAgICBhbGxfdG9rZW5zID0gJ3wnLmpvaW4oJyg/UDwlcz4lcyknICUgKG5hbWUsIHZhbHVlKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHRva2Vucy5pdGVyaXRlbXMoKSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiB0b2tlbnMuaXRlbXMoKSkKKyAgICAgbm9uZXNjYXBlZCA9IHInKD88IVxcKSg/OiVzKScgJSBhbGxfdG9rZW5zCisgCisgICAgICMgVGhlIGZpbmFsIHBhdHRlcm4gbWF0Y2hlcyBlaXRoZXIgdGhlIGFib3ZlIHBhdHRlcm4sIG9yIGFuIGVzY2FwZWQKK0BAIC05Niw3ICs5Niw3IEBAIGNsYXNzIF9DbGluZVNwbGl0dGVyKG9iamVjdCk6CisgICAgICAgICAgICAgc2VsZi5jbGluZSA9IHNlbGYuY2xpbmVbbS5lbmQoKTpdCisgCisgICAgICAgICAgICAgbWF0Y2ggPSB7bmFtZTogdmFsdWUKKy0gICAgICAgICAgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gbS5ncm91cGRpY3QoKS5pdGVtcygpIGlmIHZhbHVlfQorKyAgICAgICAgICAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBsaXN0KG0uZ3JvdXBkaWN0KCkuaXRlbXMoKSkgaWYgdmFsdWV9CisgICAgICAgICAgICAgaWYgJ3F1b3RlJyBpbiBtYXRjaDoKKyAgICAgICAgICAgICAgICAgIyAiIG9yICcgc3RhcnQgYSBxdW90ZWQgc3RyaW5nCisgICAgICAgICAgICAgICAgIGlmIG1hdGNoWydxdW90ZSddID09ICciJzoKK0BAIC0xNDQsNyArMTQ0LDcgQEAgY2xhc3MgX0NsaW5lU3BsaXR0ZXIob2JqZWN0KToKKyAgICAgICAgICAgICBzZWxmLl9wdXNoKHNlbGYuY2xpbmVbOm0uc3RhcnQoKV0pCisgICAgICAgICAgICAgc2VsZi5jbGluZSA9IHNlbGYuY2xpbmVbbS5lbmQoKTpdCisgICAgICAgICAgICAgbWF0Y2ggPSB7bmFtZTogdmFsdWUKKy0gICAgICAgICAgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gbS5ncm91cGRpY3QoKS5pdGVtcygpIGlmIHZhbHVlfQorKyAgICAgICAgICAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBsaXN0KG0uZ3JvdXBkaWN0KCkuaXRlbXMoKSkgaWYgdmFsdWV9CisgICAgICAgICAgICAgaWYgJ3F1b3RlJyBpbiBtYXRjaDoKKyAgICAgICAgICAgICAgICAgIyBhIGRvdWJsZSBxdW90ZSBlbmRzIHRoZSBxdW90ZWQgc3RyaW5nLCBzbyBnbyBiYWNrIHRvCisgICAgICAgICAgICAgICAgICMgdW5xdW90ZWQgcGFyc2luZworZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2JhY2tlbmQvdGVzdF9yZWN1cnNpdmVtYWtlLnB5IGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvYmFja2VuZC90ZXN0X3JlY3Vyc2l2ZW1ha2UucHkKK2luZGV4IGEwNTA1OWY4YS4uMzU1YTk2MTY1IDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvYmFja2VuZC90ZXN0X3JlY3Vyc2l2ZW1ha2UucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2JhY2tlbmQvdGVzdF9yZWN1cnNpdmVtYWtlLnB5CitAQCAtMiw5ICsyLDkgQEAKKyAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKKyAjIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCisgCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCisgCistaW1wb3J0IGNQaWNrbGUgYXMgcGlja2xlCisrCisraW1wb3J0IHBpY2tsZSBhcyBwaWNrbGUKKyBpbXBvcnQganNvbgorIGltcG9ydCBvcworIGltcG9ydCB1bml0dGVzdAorQEAgLTMzMyw3ICszMzMsNyBAQCBjbGFzcyBUZXN0UmVjdXJzaXZlTWFrZUJhY2tlbmQoQmFja2VuZFRlc3Rlcik6CisgICAgICAgICAgICAgXSwKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGZvciB2YXIsIHZhbCBpbiBleHBlY3RlZC5pdGVtcygpOgorKyAgICAgICAgZm9yIHZhciwgdmFsIGluIGxpc3QoZXhwZWN0ZWQuaXRlbXMoKSk6CisgICAgICAgICAgICAgIyBwcmludCgidGVzdF92YXJpYWJsZV9wYXNzdGhydVslc10iICUgKHZhcikpCisgICAgICAgICAgICAgZm91bmQgPSBbc3RyIGZvciBzdHIgaW4gbGluZXMgaWYgc3RyLnN0YXJ0c3dpdGgodmFyKV0KKyAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvdW5kLCB2YWwpCitAQCAtMzcyLDcgKzM3Miw3IEBAIGNsYXNzIFRlc3RSZWN1cnNpdmVNYWtlQmFja2VuZChCYWNrZW5kVGVzdGVyKToKKyAgICAgICAgICAgICBdLAorICAgICAgICAgfQorIAorLSAgICAgICAgZm9yIHZhciwgdmFsIGluIGV4cGVjdGVkLml0ZW1zKCk6CisrICAgICAgICBmb3IgdmFyLCB2YWwgaW4gbGlzdChleHBlY3RlZC5pdGVtcygpKToKKyAgICAgICAgICAgICBmb3VuZCA9IFtzdHIgZm9yIHN0ciBpbiBsaW5lcyBpZiBzdHIuc3RhcnRzd2l0aCh2YXIpXQorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm91bmQsIHZhbCkKKyAKK0BAIC01NjMsNyArNTYzLDcgQEAgY2xhc3MgVGVzdFJlY3Vyc2l2ZU1ha2VCYWNrZW5kKEJhY2tlbmRUZXN0ZXIpOgorIAorICAgICAgICAgIyBUaGlzIGlzIG5vdCB0aGUgbW9zdCByb2J1c3QgdGVzdCBpbiB0aGUgd29ybGQsIGJ1dCBpdCBnZXRzIHRoZSBqb2IKKyAgICAgICAgICMgZG9uZS4KKy0gICAgICAgIGVudHJpZXMgPSBbZSBmb3IgZSBpbiBtLl9kZXN0cy5rZXlzKCkgaWYgJyoqJyBpbiBlXQorKyAgICAgICAgZW50cmllcyA9IFtlIGZvciBlIGluIGxpc3QobS5fZGVzdHMua2V5cygpKSBpZiAnKionIGluIGVdCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihlbnRyaWVzKSwgMSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3N1cHBvcnQvKionLCBlbnRyaWVzWzBdKQorIAorQEAgLTU5MCwxMSArNTkwLDExIEBAIGNsYXNzIFRlc3RSZWN1cnNpdmVNYWtlQmFja2VuZChCYWNrZW5kVGVzdGVyKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KFsnY2hpbGQvdGVzdF9zdWIuanMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaGlsZC9kYXRhLyoqJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hpbGQvYW5vdGhlci1maWxlLnNqcyddKSkKKy0gICAgICAgIGZvciBrZXkgaW4gdGVzdF9pbnN0YWxscy5rZXlzKCk6CisrICAgICAgICBmb3Iga2V5IGluIGxpc3QodGVzdF9pbnN0YWxscy5rZXlzKCkpOgorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oa2V5LCB0ZXN0X2luc3RhbGxzKQorIAorICAgICAgICAgc3ludGhlc2l6ZWRfbWFuaWZlc3QgPSBJbnN0YWxsTWFuaWZlc3QoKQorLSAgICAgICAgZm9yIGl0ZW0sIGluc3RhbGxzIGluIHRlc3RfaW5zdGFsbHMuaXRlbXMoKToKKysgICAgICAgIGZvciBpdGVtLCBpbnN0YWxscyBpbiBsaXN0KHRlc3RfaW5zdGFsbHMuaXRlbXMoKSk6CisgICAgICAgICAgICAgZm9yIGluc3RhbGxfaW5mbyBpbiBpbnN0YWxsczoKKyAgICAgICAgICAgICAgICAgaWYgbGVuKGluc3RhbGxfaW5mbykgPT0gMzoKKyAgICAgICAgICAgICAgICAgICAgIHN5bnRoZXNpemVkX21hbmlmZXN0LmFkZF9wYXR0ZXJuX2xpbmsoKmluc3RhbGxfaW5mbykKK0BAIC02MDIsNyArNjAyLDcgQEAgY2xhc3MgVGVzdFJlY3Vyc2l2ZU1ha2VCYWNrZW5kKEJhY2tlbmRUZXN0ZXIpOgorICAgICAgICAgICAgICAgICAgICAgc3ludGhlc2l6ZWRfbWFuaWZlc3QuYWRkX2xpbmsoKmluc3RhbGxfaW5mbykKKyAKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHN5bnRoZXNpemVkX21hbmlmZXN0KSwgMykKKy0gICAgICAgIGZvciBpdGVtLCBpbmZvIGluIHN5bnRoZXNpemVkX21hbmlmZXN0Ll9kZXN0cy5pdGVtcygpOgorKyAgICAgICAgZm9yIGl0ZW0sIGluZm8gaW4gbGlzdChzeW50aGVzaXplZF9tYW5pZmVzdC5fZGVzdHMuaXRlbXMoKSk6CisgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihpdGVtLCBtKQorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mbywgbS5fZGVzdHNbaXRlbV0pCisgCitAQCAtODY0LDcgKzg2NCw3IEBAIGNsYXNzIFRlc3RSZWN1cnNpdmVNYWtlQmFja2VuZChCYWNrZW5kVGVzdGVyKToKKyAgICAgICAgIGV4cGVjdGVkW21venBhdGguam9pbihlbnYudG9wb2JqZGlyLCAnZmluYWwtdGFyZ2V0JyldID0gWworICAgICAgICAgICAgICdGSU5BTF9UQVJHRVQgPSAkKERFUFRIKS9yYW5kb20tZmluYWwtdGFyZ2V0JworICAgICAgICAgXQorLSAgICAgICAgZm9yIGtleSwgZXhwZWN0ZWRfcnVsZXMgaW4gZXhwZWN0ZWQuaXRlcml0ZW1zKCk6CisrICAgICAgICBmb3Iga2V5LCBleHBlY3RlZF9ydWxlcyBpbiBleHBlY3RlZC5pdGVtcygpOgorICAgICAgICAgICAgIGJhY2tlbmRfcGF0aCA9IG1venBhdGguam9pbihrZXksICdiYWNrZW5kLm1rJykKKyAgICAgICAgICAgICBsaW5lcyA9IFtsLnN0cmlwKCkgZm9yIGwgaW4gb3BlbihiYWNrZW5kX3BhdGgsICdydCcpLnJlYWRsaW5lcygpWzI6XV0KKyAgICAgICAgICAgICBmb3VuZCA9IFtzdHIgZm9yIHN0ciBpbiBsaW5lcyBpZgorZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS9jb21tb24ucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvY29tbW9uLnB5CitpbmRleCAxNTBjNmUzOTMuLjVlMmMyYWZhYSAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS9jb21tb24ucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS9jb21tb24ucHkKK0BAIC0yLDcgKzIsNyBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24sIHVuaWNvZGVfbGl0ZXJhbHMKKysKKyAKKyBpbXBvcnQgY29weQorIGltcG9ydCBlcnJubworQEAgLTE2LDcgKzE2LDcgQEAgZnJvbSBtb3pidWlsZC5jb25maWd1cmUgaW1wb3J0IENvbmZpZ3VyZVNhbmRib3gKKyBmcm9tIG1vemJ1aWxkLnV0aWwgaW1wb3J0IFJlYWRPbmx5TmFtZXNwYWNlCisgZnJvbSBtb3pwYWNrIGltcG9ydCBwYXRoIGFzIG1venBhdGgKKyAKKy1mcm9tIFN0cmluZ0lPIGltcG9ydCBTdHJpbmdJTworK2Zyb20gaW8gaW1wb3J0IFN0cmluZ0lPCisgZnJvbSB3aGljaCBpbXBvcnQgV2hpY2hFcnJvcgorIAorIGZyb20gYnVpbGRjb25maWcgaW1wb3J0ICgKK0BAIC03NywxMCArNzcsMTAgQEAgY2xhc3MgQ29uZmlndXJlVGVzdFNhbmRib3goQ29uZmlndXJlU2FuZGJveCk6CisgICAgICAgICBzZWxmLl9zZWFyY2hfcGF0aCA9IGVudmlyb24uZ2V0KCdQQVRIJywgJycpLnNwbGl0KG9zLnBhdGhzZXApCisgCisgICAgICAgICBzZWxmLl9zdWJwcm9jZXNzX3BhdGhzID0geworLSAgICAgICAgICAgIG1venBhdGguYWJzcGF0aChrKTogdiBmb3IgaywgdiBpbiBwYXRocy5pdGVyaXRlbXMoKSBpZiB2CisrICAgICAgICAgICAgbW96cGF0aC5hYnNwYXRoKGspOiB2IGZvciBrLCB2IGluIHBhdGhzLml0ZW1zKCkgaWYgdgorICAgICAgICAgfQorIAorLSAgICAgICAgcGF0aHMgPSBwYXRocy5rZXlzKCkKKysgICAgICAgIHBhdGhzID0gbGlzdChwYXRocy5rZXlzKCkpCisgCisgICAgICAgICBlbnZpcm9uID0gZGljdChlbnZpcm9uKQorICAgICAgICAgaWYgJ0NPTkZJR19TSEVMTCcgbm90IGluIGVudmlyb246CitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL2xpbnQucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvbGludC5weQoraW5kZXggOThmNWY0ZmU3Li5hNTQ5YjRiY2YgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvbGludC5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL2xpbnQucHkKK0BAIC0yLDExICsyLDExIEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbiwgdW5pY29kZV9saXRlcmFscworKworIAorIGltcG9ydCBvcworIGltcG9ydCB1bml0dGVzdAorLWZyb20gU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCisrZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KKyBmcm9tIG1venVuaXQgaW1wb3J0IG1haW4KKyBmcm9tIGJ1aWxkY29uZmlnIGltcG9ydCAoCisgICAgIHRvcG9iamRpciwKK0BAIC00MCw5ICs0MCw3IEBAIGNsYXNzIExpbnRNZXRhKHR5cGUpOgorICAgICAgICAgcmV0dXJuIHR5cGUuX19uZXdfXyhtY3MsIG5hbWUsIGJhc2VzLCBhdHRycykKKyAKKyAKKy1jbGFzcyBMaW50KHVuaXR0ZXN0LlRlc3RDYXNlKToKKy0gICAgX19tZXRhY2xhc3NfXyA9IExpbnRNZXRhCistCisrY2xhc3MgTGludCh1bml0dGVzdC5UZXN0Q2FzZSwgbWV0YWNsYXNzPUxpbnRNZXRhKToKKyAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAgc2VsZi5fY3VyZGlyID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgIG9zLmNoZGlyKHRvcG9iamRpcikKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF9jaGVja3NfY29uZmlndXJlLnB5IGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfY2hlY2tzX2NvbmZpZ3VyZS5weQoraW5kZXggYzYwMDAwYmIyLi4wNzA5MWMwNzcgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF9jaGVja3NfY29uZmlndXJlLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF9jaGVja3NfY29uZmlndXJlLnB5CitAQCAtMiw5ICsyLDkgQEAKKyAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKKyAjIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCisgCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uLCB1bmljb2RlX2xpdGVyYWxzCisgCistZnJvbSBTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KKysKKytmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworIGltcG9ydCBvcworIGltcG9ydCBzeXMKKyBpbXBvcnQgdGV4dHdyYXAKK0BAIC00NDcsNyArNDQ3LDcgQEAgY2xhc3MgVGVzdENoZWNrc0NvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgY2hlY2tpbmcgZm9yIGEuLi4gJXMKKyAgICAgICAgICcnJyAlIHNlbGYuT1RIRVJfQSkpCisgCistICAgICAgICBkaXJzID0gbWFwKG1venBhdGguZGlybmFtZSwgKHNlbGYuT1RIRVJfQSwgc2VsZi5LTk9XTl9BKSkKKysgICAgICAgIGRpcnMgPSBsaXN0KG1hcChtb3pwYXRoLmRpcm5hbWUsIChzZWxmLk9USEVSX0EsIHNlbGYuS05PV05fQSkpKQorICAgICAgICAgY29uZmlnLCBvdXQsIHN0YXR1cyA9IHNlbGYuZ2V0X3Jlc3VsdCh0ZXh0d3JhcC5kZWRlbnQoJycnXAorICAgICAgICAgICAgIGNoZWNrX3Byb2coIkEiLCAoImtub3duLWEiLCksIHBhdGhzPVsiJXMiXSkKKyAgICAgICAgICcnJyAlIG9zLnBhdGhzZXAuam9pbihkaXJzKSkpCitAQCAtNDU3LDcgKzQ1Nyw3IEBAIGNsYXNzIFRlc3RDaGVja3NDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIGNoZWNraW5nIGZvciBhLi4uICVzCisgICAgICAgICAnJycgJSBzZWxmLk9USEVSX0EpKQorIAorLSAgICAgICAgZGlycyA9IG1hcChtb3pwYXRoLmRpcm5hbWUsIChzZWxmLktOT1dOX0EsIHNlbGYuS05PV05fQikpCisrICAgICAgICBkaXJzID0gbGlzdChtYXAobW96cGF0aC5kaXJuYW1lLCAoc2VsZi5LTk9XTl9BLCBzZWxmLktOT1dOX0IpKSkKKyAgICAgICAgIGNvbmZpZywgb3V0LCBzdGF0dXMgPSBzZWxmLmdldF9yZXN1bHQodGV4dHdyYXAuZGVkZW50KCcnJ1wKKyAgICAgICAgICAgICBjaGVja19wcm9nKCJBIiwgKCJrbm93bi1hIiwpLCBwYXRocz1bIiVzIiwgIiVzIl0pCisgICAgICAgICAnJycgJSAob3MucGF0aHNlcC5qb2luKGRpcnMpLCBzZWxmLk9USEVSX0EpKSkKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF9jb21waWxlX2NoZWNrcy5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X2NvbXBpbGVfY2hlY2tzLnB5CitpbmRleCBiNWJlM2JmMmUuLjI4MjAwMGJiMiAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X2NvbXBpbGVfY2hlY2tzLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF9jb21waWxlX2NoZWNrcy5weQorQEAgLTIsMTQgKzIsMTQgQEAKKyAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKKyAjIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCisgCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uLCB1bmljb2RlX2xpdGVyYWxzCisrCisgCisgaW1wb3J0IG9zCisgaW1wb3J0IHRleHR3cmFwCisgaW1wb3J0IHVuaXR0ZXN0CisgaW1wb3J0IG1venBhY2sucGF0aCBhcyBtb3pwYXRoCisgCistZnJvbSBTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KKytmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworIAorIGZyb20gYnVpbGRjb25maWcgaW1wb3J0IHRvcHNyY2RpcgorIGZyb20gY29tbW9uIGltcG9ydCBDb25maWd1cmVUZXN0U2FuZGJveAorZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X2NvbmZpZ3VyZS5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X2NvbmZpZ3VyZS5weQoraW5kZXggZjM3ZTI3MDFmLi5lYjBjYTg0ZmIgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF9jb25maWd1cmUucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X2NvbmZpZ3VyZS5weQorQEAgLTIsOSArMiw5IEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbiwgdW5pY29kZV9saXRlcmFscworIAorLWZyb20gU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCisrCisrZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KKyBpbXBvcnQgb3MKKyBpbXBvcnQgc3lzCisgaW1wb3J0IHRleHR3cmFwCitAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAKKyAgICAgICAgIGlmICctLWhlbHAnIGluIG9wdGlvbnM6CisgICAgICAgICAgICAgcmV0dXJuIG91dC5nZXR2YWx1ZSgpLCBjb25maWcKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCcnLCBvdXQuZ2V0dmFsdWUoKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIG91dC5nZXR2YWx1ZSgpKQorICAgICAgICAgcmV0dXJuIGNvbmZpZworIAorICAgICBkZWYgbW96X2NvbmZpZ3VyZShzZWxmLCBzb3VyY2UpOgorQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIGRlZiB0ZXN0X2RlZmF1bHRzKHNlbGYpOgorICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKCkKKyAgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHsKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeworICAgICAgICAgICAgICdDSE9JQ0VTJzogTmVnYXRpdmVPcHRpb25WYWx1ZSgpLAorICAgICAgICAgICAgICdERUZBVUxURUQnOiBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnbm90LXNpbXBsZScsKSksCisgICAgICAgICAgICAgJ0lTX0dDQyc6IE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSwKK0BAIC03MSw5ICs3MSw5IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICBkZWYgdGVzdF9oZWxwKHNlbGYpOgorICAgICAgICAgaGVscCwgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKFsnLS1oZWxwJ10sIHByb2c9J2NvbmZpZ3VyZScpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh7fSwgY29uZmlnKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7fSwgY29uZmlnKQorICAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICdVc2FnZTogY29uZmlndXJlIFtvcHRpb25zXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnT3B0aW9uczogW2RlZmF1bHRzIGluIGJyYWNrZXRzIGFmdGVyIGRlc2NyaXB0aW9uc11cbicKK0BAIC0xMDksNyArMTA5LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICApOgorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0VOQUJMRURfU0lNUExFJywgY29uZmlnKQorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1NJTVBMRScsIGNvbmZpZykKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhOZWdhdGl2ZU9wdGlvblZhbHVlKCksIGNvbmZpZ1snU0lNUExFJ10pCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOZWdhdGl2ZU9wdGlvblZhbHVlKCksIGNvbmZpZ1snU0lNUExFJ10pCisgCisgICAgICAgICBmb3IgY29uZmlnIGluICgKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKFsnLS1lbmFibGUtc2ltcGxlJ10pLAorQEAgLTExNyw3ICsxMTcsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICk6CisgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignRU5BQkxFRF9TSU1QTEUnLCBjb25maWcpCisgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignU0lNUExFJywgY29uZmlnKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFBvc2l0aXZlT3B0aW9uVmFsdWUoKSwgY29uZmlnWydTSU1QTEUnXSkKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKSwgY29uZmlnWydTSU1QTEUnXSkKKyAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNvbmZpZ1snU0lNUExFJ10sIGNvbmZpZ1snRU5BQkxFRF9TSU1QTEUnXSkKKyAKKyAgICAgICAgICMgLS1lbmFibGUtc2ltcGxlIGRvZXNuJ3QgdGFrZSB2YWx1ZXMuCitAQCAtMTM1LDcgKzEzNSw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PXsnTU9aX1dJVEhfRU5WJzogJzEnfSksCisgICAgICAgICApOgorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1dJVEhfRU5WJywgY29uZmlnKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSwgY29uZmlnWydXSVRIX0VOViddKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTmVnYXRpdmVPcHRpb25WYWx1ZSgpLCBjb25maWdbJ1dJVEhfRU5WJ10pCisgCisgICAgICAgICBmb3IgY29uZmlnIGluICgKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKFsnLS1lbmFibGUtd2l0aC1lbnYnXSksCitAQCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PXsnTU9aX1dJVEhfRU5WJzogJyd9KSwKKyAgICAgICAgICk6CisgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignV0lUSF9FTlYnLCBjb25maWcpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgpLCBjb25maWdbJ1dJVEhfRU5WJ10pCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb3NpdGl2ZU9wdGlvblZhbHVlKCksIGNvbmZpZ1snV0lUSF9FTlYnXSkKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKToKKyAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoWyctLWVuYWJsZS13aXRoLWVudj12YWx1ZSddKQorQEAgLTE2MCwyMyArMTYwLDIzIEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZyhbJy0tZW5hYmxlLXZhbHVlcycsICctLWRpc2FibGUtdmFsdWVzJ10pLAorICAgICAgICAgKToKKyAgICAgICAgICAgICBzZWxmLmFzc2VydEluKG5hbWUsIGNvbmZpZykKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhOZWdhdGl2ZU9wdGlvblZhbHVlKCksIGNvbmZpZ1tuYW1lXSkKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSwgY29uZmlnW25hbWVdKQorIAorICAgICAgICAgZm9yIGNvbmZpZyBpbiAoCisgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKFsnLS1lbmFibGUtdmFsdWVzJ10pLAorICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZyhbJy0tZGlzYWJsZS12YWx1ZXMnLCAnLS1lbmFibGUtdmFsdWVzJ10pLAorICAgICAgICAgKToKKyAgICAgICAgICAgICBzZWxmLmFzc2VydEluKG5hbWUsIGNvbmZpZykKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhQb3NpdGl2ZU9wdGlvblZhbHVlKCksIGNvbmZpZ1tuYW1lXSkKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKSwgY29uZmlnW25hbWVdKQorIAorICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKFsnLS1lbmFibGUtdmFsdWVzPWZvbyddKQorICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhQb3NpdGl2ZU9wdGlvblZhbHVlKCgnZm9vJywpKSwgY29uZmlnW25hbWVdKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb3NpdGl2ZU9wdGlvblZhbHVlKCgnZm9vJywpKSwgY29uZmlnW25hbWVdKQorIAorICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKFsnLS1lbmFibGUtdmFsdWVzPWZvbyxiYXInXSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgY29uZmlnKQorICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbmZpZ1tuYW1lXSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdmb28nLCAnYmFyJykpLCBjb25maWdbbmFtZV0pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdmb28nLCAnYmFyJykpLCBjb25maWdbbmFtZV0pCisgCisgICAgIGRlZiB0ZXN0X3ZhbHVlczIoc2VsZik6CisgICAgICAgICBzZWxmLnRlc3RfdmFsdWVzKCdWQUxVRVMyJykKK0BAIC0xODcsMTIgKzE4NywxMiBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgZGVmIHRlc3RfcmV0dXJuZWRfZGVmYXVsdChzZWxmKToKKyAgICAgICAgIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZyhbJy0tZW5hYmxlLXNpbXBsZSddKQorICAgICAgICAgc2VsZi5hc3NlcnRJbignREVGQVVMVEVEJywgY29uZmlnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdzaW1wbGUnLCkpLCBjb25maWdbJ0RFRkFVTFRFRCddKQorIAorICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKFsnLS1kaXNhYmxlLXNpbXBsZSddKQorICAgICAgICAgc2VsZi5hc3NlcnRJbignREVGQVVMVEVEJywgY29uZmlnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdub3Qtc2ltcGxlJywpKSwgY29uZmlnWydERUZBVUxURUQnXSkKKyAKKyAgICAgZGVmIHRlc3RfcmV0dXJuZWRfY2hvaWNlcyhzZWxmKToKK0BAIC0yMDAsMTMgKzIwMCwxMyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICBjb25maWcgPSBzZWxmLmdldF9jb25maWcoCisgICAgICAgICAgICAgICAgIFsnLS1lbmFibGUtdmFsdWVzPWFscGhhJywgJy0tcmV0dXJuZWQtY2hvaWNlcz0lcycgJSB2YWxdKQorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0NIT0lDRVMnLCBjb25maWcpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgodmFsLCkpLCBjb25maWdbJ0NIT0lDRVMnXSkKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKHZhbCwpKSwgY29uZmlnWydDSE9JQ0VTJ10pCisgCisgICAgICAgICBmb3IgdmFsIGluICgnMCcsICcxJywgJzInKToKKyAgICAgICAgICAgICBjb25maWcgPSBzZWxmLmdldF9jb25maWcoCisgICAgICAgICAgICAgICAgIFsnLS1lbmFibGUtdmFsdWVzPW51bWVyaWMnLCAnLS1yZXR1cm5lZC1jaG9pY2VzPSVzJyAlIHZhbF0pCisgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignQ0hPSUNFUycsIGNvbmZpZykKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhQb3NpdGl2ZU9wdGlvblZhbHVlKCh2YWwsKSksIGNvbmZpZ1snQ0hPSUNFUyddKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9zaXRpdmVPcHRpb25WYWx1ZSgodmFsLCkpLCBjb25maWdbJ0NIT0lDRVMnXSkKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKToKKyAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoWyctLWVuYWJsZS12YWx1ZXM9bnVtZXJpYycsCitAQCAtMjE4LDEyICsyMTgsMTIgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIGRlZiB0ZXN0X2luY2x1ZGVkKHNlbGYpOgorICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKGVudj17J0NDJzogJ2djYyd9KQorICAgICAgICAgc2VsZi5hc3NlcnRJbignSVNfR0NDJywgY29uZmlnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnWydJU19HQ0MnXSwgVHJ1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnWydJU19HQ0MnXSwgVHJ1ZSkKKyAKKyAgICAgICAgIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZygKKyAgICAgICAgICAgICBbJy0tZW5hYmxlLWluY2x1ZGU9ZXh0cmEuY29uZmlndXJlJywgJy0tZXh0cmEnXSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0VYVFJBJywgY29uZmlnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgpLCBjb25maWdbJ0VYVFJBJ10pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKSwgY29uZmlnWydFWFRSQSddKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpOgorICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZyhbJy0tZXh0cmEnXSkKK0BAIC0yMzEsNyArMjMxLDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIGRlZiB0ZXN0X3RlbXBsYXRlKHNlbGYpOgorICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKGVudj17J0NDJzogJ2djYyd9KQorICAgICAgICAgc2VsZi5hc3NlcnRJbignQ0ZMQUdTJywgY29uZmlnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnWydDRkxBR1MnXSwgWyctV2Vycm9yPWZvb2JhciddKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ0NGTEFHUyddLCBbJy1XZXJyb3I9Zm9vYmFyJ10pCisgCisgICAgICAgICBjb25maWcgPSBzZWxmLmdldF9jb25maWcoZW52PXsnQ0MnOiAnY2xhbmcnfSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0NGTEFHUycsIGNvbmZpZykKK0BAIC0yODgsNyArMjg4LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgc2FuZGJveAorICAgICAgICAgKQorIAorLSAgICAgICAgaW1wb3J0IF9fYnVpbHRpbl9fCisrICAgICAgICBpbXBvcnQgYnVpbHRpbnMKKyAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2FuZGJveFsnZm9vJ10oKSwgX19idWlsdGluX18pCisgCisgICAgICAgICBleGVjXyh0ZXh0d3JhcC5kZWRlbnQoJycnCitAQCAtMzAwLDcgKzMwMCw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgKQorIAorICAgICAgICAgZiA9IHNhbmRib3hbJ2ZvbyddKCkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGYubmFtZSwgb3MuZGV2bnVsbCkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5uYW1lLCBvcy5kZXZudWxsKQorICAgICAgICAgZi5jbG9zZSgpCisgCisgICAgICAgICAjIFRoaXMgdW5sb2NrcyB0aGUgc2FuZGJveAorQEAgLTMzNiw4ICszMzYsOCBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2FuZGJveFsnZm9vJ10oKSwgc2FuZGJveCkKKyAKKyAgICAgICAgICMgTm90aGluZyBsZWFrZWQgZnJvbSB0aGUgZnVuY3Rpb24gYmVpbmcgZXhlY3V0ZWQKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNhbmRib3gua2V5cygpLCBbJ19fYnVpbHRpbnNfXycsICdmb28nXSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNhbmRib3hbJ19fYnVpbHRpbnNfXyddLCBDb25maWd1cmVTYW5kYm94LkJVSUxUSU5TKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNhbmRib3gua2V5cygpKSwgWydfX2J1aWx0aW5zX18nLCAnZm9vJ10pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNhbmRib3hbJ19fYnVpbHRpbnNfXyddLCBDb25maWd1cmVTYW5kYm94LkJVSUxUSU5TKQorIAorICAgICAgICAgZXhlY18odGV4dHdyYXAuZGVkZW50KCcnJworICAgICAgICAgICAgIEB0ZW1wbGF0ZQorQEAgLTM1NCw3ICszNTQsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKSBhcyBlOgorICAgICAgICAgICAgIHNhbmRib3guX2RlcGVuZHNbc2FuZGJveFsnYmFyJ11dLnJlc3VsdCgpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbCBuYW1lICdzeXMnIGlzIG5vdCBkZWZpbmVkIikKKyAKKyAgICAgZGVmIHRlc3RfYXBwbHlfaW1wb3J0cyhzZWxmKToKK0BAIC0zODAsMjggKzM4MCwyOCBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICBzYW5kYm94CisgICAgICAgICApCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oaW1wb3J0cyksIDEpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihpbXBvcnRzKSwgMSkKKyAKKyAgICAgZGVmIHRlc3Rfb3NfcGF0aChzZWxmKToKKyAgICAgICAgIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZyhbJy0td2l0aC1pbXBvcnRzPSVzJyAlIF9fZmlsZV9fXSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0hBU19BQlNQQVRIJywgY29uZmlnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnWydIQVNfQUJTUEFUSCddLCBUcnVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ0hBU19BQlNQQVRIJ10sIFRydWUpCisgICAgICAgICBzZWxmLmFzc2VydEluKCdIQVNfR0VUQVRJTUUnLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ0hBU19HRVRBVElNRSddLCBUcnVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ0hBU19HRVRBVElNRSddLCBUcnVlKQorICAgICAgICAgc2VsZi5hc3NlcnRJbignSEFTX0dFVEFUSU1FMicsIGNvbmZpZykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZ1snSEFTX0dFVEFUSU1FMiddLCBGYWxzZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnWydIQVNfR0VUQVRJTUUyJ10sIEZhbHNlKQorIAorICAgICBkZWYgdGVzdF90ZW1wbGF0ZV9jYWxsKHNlbGYpOgorICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKGVudj17J0NDJzogJ2djYyd9KQorICAgICAgICAgc2VsZi5hc3NlcnRJbignVEVNUExBVEVfVkFMVUUnLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ1RFTVBMQVRFX1ZBTFVFJ10sIDQyKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ1RFTVBMQVRFX1ZBTFVFJ10sIDQyKQorICAgICAgICAgc2VsZi5hc3NlcnRJbignVEVNUExBVEVfVkFMVUVfMicsIGNvbmZpZykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZ1snVEVNUExBVEVfVkFMVUVfMiddLCAyMSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnWydURU1QTEFURV9WQUxVRV8yJ10sIDIxKQorIAorICAgICBkZWYgdGVzdF90ZW1wbGF0ZV9pbXBvcnRzKHNlbGYpOgorICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKFsnLS1lbmFibGUtaW1wb3J0cy1pbi10ZW1wbGF0ZSddKQorICAgICAgICAgc2VsZi5hc3NlcnRJbignUExBVEZPUk0nLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ1BMQVRGT1JNJ10sIHN5cy5wbGF0Zm9ybSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnWydQTEFURk9STSddLCBzeXMucGxhdGZvcm0pCisgCisgICAgIGRlZiB0ZXN0X2RlY29yYXRvcnMoc2VsZik6CisgICAgICAgICBjb25maWcgPSB7fQorQEAgLTQxOSwyNyArNDE5LDI3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldF9jb25maWcoKmFyZ3MsIGNvbmZpZ3VyZT0nc2V0X2NvbmZpZy5jb25maWd1cmUnKQorIAorICAgICAgICAgaGVscCwgY29uZmlnID0gZ2V0X2NvbmZpZyhbJy0taGVscCddKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnLCB7fSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnLCB7fSkKKyAKKyAgICAgICAgIGNvbmZpZyA9IGdldF9jb25maWcoWyctLXNldC1mb28nXSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0ZPTycsIGNvbmZpZykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZ1snRk9PJ10sIFRydWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZ1snRk9PJ10sIFRydWUpCisgCisgICAgICAgICBjb25maWcgPSBnZXRfY29uZmlnKFsnLS1zZXQtYmFyJ10pCisgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdGT08nLCBjb25maWcpCisgICAgICAgICBzZWxmLmFzc2VydEluKCdCQVInLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ0JBUiddLCBUcnVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ0JBUiddLCBUcnVlKQorIAorICAgICAgICAgY29uZmlnID0gZ2V0X2NvbmZpZyhbJy0tc2V0LXZhbHVlPXF1eCddKQorICAgICAgICAgc2VsZi5hc3NlcnRJbignVkFMVUUnLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ1ZBTFVFJ10sICdxdXgnKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ1ZBTFVFJ10sICdxdXgnKQorIAorICAgICAgICAgY29uZmlnID0gZ2V0X2NvbmZpZyhbJy0tc2V0LW5hbWU9aG9nZSddKQorICAgICAgICAgc2VsZi5hc3NlcnRJbignaG9nZScsIGNvbmZpZykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZ1snaG9nZSddLCBUcnVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ2hvZ2UnXSwgVHJ1ZSkKKyAKKyAgICAgICAgIGNvbmZpZyA9IGdldF9jb25maWcoW10pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWcsIHsnQkFSJzogRmFsc2V9KQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHsnQkFSJzogRmFsc2V9KQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25maWd1cmVFcnJvcik6CisgICAgICAgICAgICAgIyBCb3RoIC0tc2V0LWZvbyBhbmQgLS1zZXQtbmFtZT1GT08gYXJlIGdvaW5nIHRvIHRyeSB0bworQEAgLTQ1NCwxMSArNDU0LDExIEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIHNldF9jb25maWcoJ1FVWCcsICdxdXgnLCB3aGVuPSctLXdpdGgtcXV4JykKKyAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKCkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWcsIHsKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZywgeworICAgICAgICAgICAgICAgICAnRk9PJzogJ2ZvbycsCisgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICBjb25maWcgPSBzZWxmLmdldF9jb25maWcoWyctLXdpdGgtcXV4J10pCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnLCB7CisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHsKKyAgICAgICAgICAgICAgICAgJ0ZPTyc6ICdmb28nLAorICAgICAgICAgICAgICAgICAnUVVYJzogJ3F1eCcsCisgICAgICAgICAgICAgfSkKK0BAIC00NjgsMjcgKzQ2OCwyNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfY29uZmlnKCphcmdzLCBjb25maWd1cmU9J3NldF9kZWZpbmUuY29uZmlndXJlJykKKyAKKyAgICAgICAgIGhlbHAsIGNvbmZpZyA9IGdldF9jb25maWcoWyctLWhlbHAnXSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZywgeydERUZJTkVTJzoge319KQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHsnREVGSU5FUyc6IHt9fSkKKyAKKyAgICAgICAgIGNvbmZpZyA9IGdldF9jb25maWcoWyctLXNldC1mb28nXSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0ZPTycsIGNvbmZpZ1snREVGSU5FUyddKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnWydERUZJTkVTJ11bJ0ZPTyddLCBUcnVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ0RFRklORVMnXVsnRk9PJ10sIFRydWUpCisgCisgICAgICAgICBjb25maWcgPSBnZXRfY29uZmlnKFsnLS1zZXQtYmFyJ10pCisgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdGT08nLCBjb25maWdbJ0RFRklORVMnXSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JBUicsIGNvbmZpZ1snREVGSU5FUyddKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnWydERUZJTkVTJ11bJ0JBUiddLCBUcnVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ0RFRklORVMnXVsnQkFSJ10sIFRydWUpCisgCisgICAgICAgICBjb25maWcgPSBnZXRfY29uZmlnKFsnLS1zZXQtdmFsdWU9cXV4J10pCisgICAgICAgICBzZWxmLmFzc2VydEluKCdWQUxVRScsIGNvbmZpZ1snREVGSU5FUyddKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnWydERUZJTkVTJ11bJ1ZBTFVFJ10sICdxdXgnKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ0RFRklORVMnXVsnVkFMVUUnXSwgJ3F1eCcpCisgCisgICAgICAgICBjb25maWcgPSBnZXRfY29uZmlnKFsnLS1zZXQtbmFtZT1ob2dlJ10pCisgICAgICAgICBzZWxmLmFzc2VydEluKCdob2dlJywgY29uZmlnWydERUZJTkVTJ10pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ0RFRklORVMnXVsnaG9nZSddLCBUcnVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ0RFRklORVMnXVsnaG9nZSddLCBUcnVlKQorIAorICAgICAgICAgY29uZmlnID0gZ2V0X2NvbmZpZyhbXSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZ1snREVGSU5FUyddLCB7J0JBUic6IEZhbHNlfSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnWydERUZJTkVTJ10sIHsnQkFSJzogRmFsc2V9KQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25maWd1cmVFcnJvcik6CisgICAgICAgICAgICAgIyBCb3RoIC0tc2V0LWZvbyBhbmQgLS1zZXQtbmFtZT1GT08gYXJlIGdvaW5nIHRvIHRyeSB0bworQEAgLTUwMywxMSArNTAzLDExIEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIHNldF9kZWZpbmUoJ1FVWCcsICdxdXgnLCB3aGVuPSctLXdpdGgtcXV4JykKKyAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKCkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ0RFRklORVMnXSwgeworKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnWydERUZJTkVTJ10sIHsKKyAgICAgICAgICAgICAgICAgJ0ZPTyc6ICdmb28nLAorICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKFsnLS13aXRoLXF1eCddKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZ1snREVGSU5FUyddLCB7CisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ0RFRklORVMnXSwgeworICAgICAgICAgICAgICAgICAnRk9PJzogJ2ZvbycsCisgICAgICAgICAgICAgICAgICdRVVgnOiAncXV4JywKKyAgICAgICAgICAgICB9KQorQEAgLTUxOCwxOSArNTE4LDE5IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgICAqYXJncywgY29uZmlndXJlPSdpbXBseV9vcHRpb24vc2ltcGxlLmNvbmZpZ3VyZScpCisgCisgICAgICAgICBoZWxwLCBjb25maWcgPSBnZXRfY29uZmlnKFsnLS1oZWxwJ10pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWcsIHt9KQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHt9KQorIAorICAgICAgICAgY29uZmlnID0gZ2V0X2NvbmZpZyhbXSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZywge30pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZywge30pCisgCisgICAgICAgICBjb25maWcgPSBnZXRfY29uZmlnKFsnLS1lbmFibGUtZm9vJ10pCisgICAgICAgICBzZWxmLmFzc2VydEluKCdCQVInLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ0JBUiddLCBQb3NpdGl2ZU9wdGlvblZhbHVlKCkpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZ1snQkFSJ10sIFBvc2l0aXZlT3B0aW9uVmFsdWUoKSkKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIGdldF9jb25maWcoWyctLWVuYWJsZS1mb28nLCAnLS1kaXNhYmxlLWJhciddKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgIGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgIictLWVuYWJsZS1iYXInIGltcGxpZWQgYnkgJy0tZW5hYmxlLWZvbycgY29uZmxpY3RzIHdpdGggIgorICAgICAgICAgICAgICInLS1kaXNhYmxlLWJhcicgZnJvbSB0aGUgY29tbWFuZC1saW5lIikKK0BAIC01NDEsMzEgKzU0MSwzMSBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAgICAgKmFyZ3MsIGNvbmZpZ3VyZT0naW1wbHlfb3B0aW9uL25lZ2F0aXZlLmNvbmZpZ3VyZScpCisgCisgICAgICAgICBoZWxwLCBjb25maWcgPSBnZXRfY29uZmlnKFsnLS1oZWxwJ10pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWcsIHt9KQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHt9KQorIAorICAgICAgICAgY29uZmlnID0gZ2V0X2NvbmZpZyhbXSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZywge30pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZywge30pCisgCisgICAgICAgICBjb25maWcgPSBnZXRfY29uZmlnKFsnLS1lbmFibGUtZm9vJ10pCisgICAgICAgICBzZWxmLmFzc2VydEluKCdCQVInLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ0JBUiddLCBOZWdhdGl2ZU9wdGlvblZhbHVlKCkpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZ1snQkFSJ10sIE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSkKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIGdldF9jb25maWcoWyctLWVuYWJsZS1mb28nLCAnLS1lbmFibGUtYmFyJ10pCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAiJy0tZGlzYWJsZS1iYXInIGltcGxpZWQgYnkgJy0tZW5hYmxlLWZvbycgY29uZmxpY3RzIHdpdGggIgorICAgICAgICAgICAgICInLS1lbmFibGUtYmFyJyBmcm9tIHRoZSBjb21tYW5kLWxpbmUiKQorIAorICAgICAgICAgY29uZmlnID0gZ2V0X2NvbmZpZyhbJy0tZGlzYWJsZS1ob2dlJ10pCisgICAgICAgICBzZWxmLmFzc2VydEluKCdCQVInLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ0JBUiddLCBOZWdhdGl2ZU9wdGlvblZhbHVlKCkpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZ1snQkFSJ10sIE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSkKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIGdldF9jb25maWcoWyctLWRpc2FibGUtaG9nZScsICctLWVuYWJsZS1iYXInXSkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICBlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICInLS1kaXNhYmxlLWJhcicgaW1wbGllZCBieSAnLS1kaXNhYmxlLWhvZ2UnIGNvbmZsaWN0cyB3aXRoICIKKyAgICAgICAgICAgICAiJy0tZW5hYmxlLWJhcicgZnJvbSB0aGUgY29tbWFuZC1saW5lIikKK0BAIC01NzYsMjMgKzU3NiwyMyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAgICAgKmFyZ3MsIGNvbmZpZ3VyZT0naW1wbHlfb3B0aW9uL3ZhbHVlcy5jb25maWd1cmUnKQorIAorICAgICAgICAgaGVscCwgY29uZmlnID0gZ2V0X2NvbmZpZyhbJy0taGVscCddKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnLCB7fSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnLCB7fSkKKyAKKyAgICAgICAgIGNvbmZpZyA9IGdldF9jb25maWcoW10pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWcsIHt9KQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHt9KQorIAorICAgICAgICAgY29uZmlnID0gZ2V0X2NvbmZpZyhbJy0tZW5hYmxlLWZvbz1hJ10pCisgICAgICAgICBzZWxmLmFzc2VydEluKCdCQVInLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ0JBUiddLCBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsKSkpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZ1snQkFSJ10sIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdhJywpKSkKKyAKKyAgICAgICAgIGNvbmZpZyA9IGdldF9jb25maWcoWyctLWVuYWJsZS1mb289YSxiJ10pCisgICAgICAgICBzZWxmLmFzc2VydEluKCdCQVInLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ0JBUiddLCBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsJ2InKSkpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZ1snQkFSJ10sIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdhJywnYicpKSkKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIGdldF9jb25maWcoWyctLWVuYWJsZS1mb289YSxiJywgJy0tZGlzYWJsZS1iYXInXSkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICBlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICInLS1lbmFibGUtYmFyPWEsYicgaW1wbGllZCBieSAnLS1lbmFibGUtZm9vJyBjb25mbGljdHMgd2l0aCAiCisgICAgICAgICAgICAgIictLWRpc2FibGUtYmFyJyBmcm9tIHRoZSBjb21tYW5kLWxpbmUiKQorQEAgLTYwMywxNSArNjAzLDE1IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgICAqYXJncywgY29uZmlndXJlPSdpbXBseV9vcHRpb24vaW5mZXIuY29uZmlndXJlJykKKyAKKyAgICAgICAgIGhlbHAsIGNvbmZpZyA9IGdldF9jb25maWcoWyctLWhlbHAnXSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZywge30pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZywge30pCisgCisgICAgICAgICBjb25maWcgPSBnZXRfY29uZmlnKFtdKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnLCB7fSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnLCB7fSkKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIGdldF9jb25maWcoWyctLWVuYWJsZS1mb28nLCAnLS1kaXNhYmxlLWJhciddKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgIGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgIictLWVuYWJsZS1iYXInIGltcGxpZWQgYnkgJy0tZW5hYmxlLWZvbycgY29uZmxpY3RzIHdpdGggIgorICAgICAgICAgICAgICInLS1kaXNhYmxlLWJhcicgZnJvbSB0aGUgY29tbWFuZC1saW5lIikKK0BAIC02MTksNyArNjE5LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENvbmZpZ3VyZUVycm9yKSBhcyBlOgorICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZyhbXSwgY29uZmlndXJlPSdpbXBseV9vcHRpb24vaW5mZXJfa28uY29uZmlndXJlJykKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICBlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICJDYW5ub3QgaW5mZXIgd2hhdCBpbXBsaWVzICctLWVuYWJsZS1iYXInLiBQbGVhc2UgYWRkIGEgYHJlYXNvbmAgIgorICAgICAgICAgICAgICJ0byB0aGUgYGltcGx5X29wdGlvbmAgY2FsbC4iKQorQEAgLTYzMCwyNSArNjMwLDI1IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgICAqYXJncywgY29uZmlndXJlPSdpbXBseV9vcHRpb24vaW1tLmNvbmZpZ3VyZScpCisgCisgICAgICAgICBoZWxwLCBjb25maWcgPSBnZXRfY29uZmlnKFsnLS1oZWxwJ10pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWcsIHt9KQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHt9KQorIAorICAgICAgICAgY29uZmlnID0gZ2V0X2NvbmZpZyhbXSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZywge30pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZywge30pCisgCisgICAgICAgICBjb25maWdfcGF0aCA9IG1venBhdGguYWJzcGF0aCgKKyAgICAgICAgICAgICBtb3pwYXRoLmpvaW4odGVzdF9kYXRhX3BhdGgsICdpbXBseV9vcHRpb24nLCAnaW1tLmNvbmZpZ3VyZScpKQorIAorLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4cChJbnZhbGlkT3B0aW9uRXJyb3IsCisrICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW52YWxpZE9wdGlvbkVycm9yLAorICAgICAgICAgICAgICItLWVuYWJsZS1mb28nIGltcGxpZWQgYnkgJ2ltcGx5X29wdGlvbiBhdCAlczo3JyBjb25mbGljdHMgd2l0aCAiCisgICAgICAgICAgICAgIictLWRpc2FibGUtZm9vJyBmcm9tIHRoZSBjb21tYW5kLWxpbmUiICUgY29uZmlnX3BhdGgpOgorICAgICAgICAgICAgIGdldF9jb25maWcoWyctLWRpc2FibGUtZm9vJ10pCisgCistICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwKEludmFsaWRPcHRpb25FcnJvciwKKysgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbnZhbGlkT3B0aW9uRXJyb3IsCisgICAgICAgICAgICAgIi0tZW5hYmxlLWJhcj1mb28sYmFyJyBpbXBsaWVkIGJ5ICdpbXBseV9vcHRpb24gYXQgJXM6MTYnIGNvbmZsaWN0cyIKKyAgICAgICAgICAgICAiIHdpdGggJy0tZW5hYmxlLWJhcj1hLGIsYycgZnJvbSB0aGUgY29tbWFuZC1saW5lIiAlIGNvbmZpZ19wYXRoKToKKyAgICAgICAgICAgICBnZXRfY29uZmlnKFsnLS1lbmFibGUtYmFyPWEsYixjJ10pCisgCistICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwKEludmFsaWRPcHRpb25FcnJvciwKKysgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbnZhbGlkT3B0aW9uRXJyb3IsCisgICAgICAgICAgICAgIi0tZW5hYmxlLWJhej1CQVonIGltcGxpZWQgYnkgJ2ltcGx5X29wdGlvbiBhdCAlczoyNScgY29uZmxpY3RzIgorICAgICAgICAgICAgICIgd2l0aCAnLS1lbmFibGUtYmF6PVFVVVgnIGZyb20gdGhlIGNvbW1hbmQtbGluZSIgJSBjb25maWdfcGF0aCk6CisgICAgICAgICAgICAgZ2V0X2NvbmZpZyhbJy0tZW5hYmxlLWJhej1RVVVYJ10pCitAQCAtNjYwLDcgKzY2MCw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImAtLXdpdGgtZm9vYCwgZW1pdHRlZCBmcm9tIGAlc2AgbGluZSAyLCBpcyB1bmtub3duLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICUgbW96cGF0aC5qb2luKHRlc3RfZGF0YV9wYXRoLCAnbW96LmNvbmZpZ3VyZScpKQorIAorQEAgLTY3NSw3ICs2NzUsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpOgorICAgICAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmV4cGVjdGVkIHR5cGU6ICdpbnQnIikKKyAKKyAgICAgZGVmIHRlc3RfaW1wbHlfb3B0aW9uX3doZW4oc2VsZik6CitAQCAtNjg2LDEyICs2ODYsMTIgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgc2V0X2NvbmZpZygnUVVYJywgZGVwZW5kcygnLS13aXRoLXF1eCcpKGxhbWJkYSB4OiB4KSkKKyAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKCkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWcsIHsKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZywgeworICAgICAgICAgICAgICAgICAnUVVYJzogTmVnYXRpdmVPcHRpb25WYWx1ZSgpLAorICAgICAgICAgICAgIH0pCisgCisgICAgICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKFsnLS13aXRoLWZvbyddKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZywgeworKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnLCB7CisgICAgICAgICAgICAgICAgICdRVVgnOiBQb3NpdGl2ZU9wdGlvblZhbHVlKCksCisgICAgICAgICAgICAgfSkKKyAKK0BAIC03MDAsNyArNzAwLDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgd2l0aCBzZWxmLm1vel9jb25maWd1cmUoJ29wdGlvbigiLS13aXRoLWZvbyIsIGhlbHA9ImZvbyIpJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAnT3B0aW9uIGAtLXdpdGgtZm9vYCBpcyBub3QgaGFuZGxlZCA7IHJlZmVyZW5jZSBpdCB3aXRoIGEgQGRlcGVuZHMnCisgICAgICAgICApCitAQCAtNzEyLDcgKzcxMiw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAnT3B0aW9uIGAtLXdpdGgtZm9vYCBhbHJlYWR5IGRlZmluZWQnCisgICAgICAgICApCitAQCAtNzI0LDcgKzcyNCw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAnT3B0aW9uIGBNT1pfRk9PYCBhbHJlYWR5IGRlZmluZWQnCisgICAgICAgICApCitAQCAtNzM2LDcgKzczNiw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAnT3B0aW9uIGBNT1pfRk9PYCBhbHJlYWR5IGRlZmluZWQnCisgICAgICAgICApCitAQCAtNzQ4LDcgKzc0OCw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAnT3B0aW9uIGBNT1pfRk9PYCBhbHJlYWR5IGRlZmluZWQnCisgICAgICAgICApCitAQCAtNzYwLDcgKzc2MCw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAnT3B0aW9uIGAtLXdpdGgtZm9vYCBhbHJlYWR5IGRlZmluZWQnCisgICAgICAgICApCitAQCAtNzc2LDE4ICs3NzYsMTggQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgc2V0X2NvbmZpZygnUVVYJywgZGVwZW5kcygnLS13aXRoLXF1eCcsIHdoZW49Jy0td2l0aC1mb28nKShsYW1iZGEgeDogeCkpCisgICAgICAgICAnJycpOgorICAgICAgICAgICAgIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZygpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnLCB7CisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHsKKyAgICAgICAgICAgICAgICAgJ0ZPTyc6IE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSwKKyAgICAgICAgICAgICB9KQorIAorICAgICAgICAgICAgIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZyhbJy0td2l0aC1mb28nXSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWcsIHsKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZywgeworICAgICAgICAgICAgICAgICAnRk9PJzogUG9zaXRpdmVPcHRpb25WYWx1ZSgpLAorICAgICAgICAgICAgICAgICAnUVVYJzogTmVnYXRpdmVPcHRpb25WYWx1ZSgpLAorICAgICAgICAgICAgIH0pCisgCisgICAgICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKFsnLS13aXRoLWZvbycsICctLXdpdGgtcXV4J10pCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnLCB7CisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHsKKyAgICAgICAgICAgICAgICAgJ0ZPTyc6IFBvc2l0aXZlT3B0aW9uVmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgJ1FVWCc6IFBvc2l0aXZlT3B0aW9uVmFsdWUoKSwKKyAgICAgICAgICAgICB9KQorQEAgLTc5NSw3ICs3OTUsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKFsnLS13aXRoLWJhciddKQorIAorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgIGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICctLXdpdGgtYmFyIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBjb25maWd1cmF0aW9uJworICAgICAgICAgICAgICkKK0BAIC04MDMsNyArODAzLDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZyhbJy0td2l0aC1xdXgnXSkKKyAKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICBlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAnLS13aXRoLXF1eCBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgY29uZmlndXJhdGlvbicKKyAgICAgICAgICAgICApCitAQCAtODExLDE4ICs4MTEsMTggQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZyhbJ1FVWD0xJ10pCisgCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgJ1FVWCBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgY29uZmlndXJhdGlvbicKKyAgICAgICAgICAgICApCisgCisgICAgICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKGVudj17J1FVWCc6ICcxJ30pCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnLCB7CisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHsKKyAgICAgICAgICAgICAgICAgJ0ZPTyc6IE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSwKKyAgICAgICAgICAgICB9KQorIAorICAgICAgICAgICAgIGhlbHAsIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZyhbJy0taGVscCddKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGhlbHAsIHRleHR3cmFwLmRlZGVudCgnJydcCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxwLCB0ZXh0d3JhcC5kZWRlbnQoJycnXAorICAgICAgICAgICAgICAgICBVc2FnZTogY29uZmlndXJlIFtvcHRpb25zXQorIAorICAgICAgICAgICAgICAgICBPcHRpb25zOiBbZGVmYXVsdHMgaW4gYnJhY2tldHMgYWZ0ZXIgZGVzY3JpcHRpb25zXQorQEAgLTgzMyw3ICs4MzMsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpKQorIAorICAgICAgICAgICAgIGhlbHAsIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZyhbJy0taGVscCcsICctLXdpdGgtZm9vJ10pCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoaGVscCwgdGV4dHdyYXAuZGVkZW50KCcnJ1wKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbHAsIHRleHR3cmFwLmRlZGVudCgnJydcCisgICAgICAgICAgICAgICAgIFVzYWdlOiBjb25maWd1cmUgW29wdGlvbnNdCisgCisgICAgICAgICAgICAgICAgIE9wdGlvbnM6IFtkZWZhdWx0cyBpbiBicmFja2V0cyBhZnRlciBkZXNjcmlwdGlvbnNdCitAQCAtODUxLDcgKzg1MSw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQ29uZmlndXJlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0BkZXBlbmRzIGZ1bmN0aW9uIG5lZWRzIHRoZSBzYW1lIGB3aGVuYCBhcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbnMgaXQgZGVwZW5kcyBvbicpCisgCitAQCAtODY4LDcgKzg2OCw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQ29uZmlndXJlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0BkZXBlbmRzIGZ1bmN0aW9uIG5lZWRzIHRoZSBzYW1lIGB3aGVuYCBhcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbnMgaXQgZGVwZW5kcyBvbicpCisgCitAQCAtODk2LDcgKzg5Niw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIHdpdGggc2VsZi5tb3pfY29uZmlndXJlKCdpbmNsdWRlKCIuLi9mb28uY29uZmlndXJlIiknKToKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKCkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICBlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICdDYW5ub3QgaW5jbHVkZSBgJXNgIGJlY2F1c2UgaXQgaXMgbm90IGluIGEgc3ViZGlyZWN0b3J5IG9mIGAlc2AnCisgICAgICAgICAgICAgJSAobW96cGF0aC5ub3JtcGF0aChtb3pwYXRoLmpvaW4odGVzdF9kYXRhX3BhdGgsICcuLicsCitAQCAtOTExLDcgKzkxMSw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAnQ2Fubm90IGluY2x1ZGUgYCVzYCBiZWNhdXNlIGl0IHdhcyBpbmNsdWRlZCBhbHJlYWR5LicKKyAgICAgICAgICAgICAlIG1venBhdGgubm9ybXBhdGgobW96cGF0aC5qb2luKHRlc3RfZGF0YV9wYXRoLAorQEAgLTkyNCw3ICs5MjQsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpOgorICAgICAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwgIlVuZXhwZWN0ZWQgdHlwZTogJ2ludCciKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLCAiVW5leHBlY3RlZCB0eXBlOiAnaW50JyIpCisgCisgICAgIGRlZiB0ZXN0X2luY2x1ZGVfd2hlbihzZWxmKToKKyAgICAgICAgIHdpdGggTW9ja2VkT3Blbih7CitAQCAtOTY3LDI2ICs5NjcsMjYgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKSwKKyAgICAgICAgIH0pOgorICAgICAgICAgICAgIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZygpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnLCB7fSkKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZywge30pCisgCisgICAgICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKFsnLS13aXRoLWZvbyddKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZywge30pCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHt9KQorIAorICAgICAgICAgICAgIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZyhbJy0td2l0aC1iYXInXSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWcsIHsKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZywgeworICAgICAgICAgICAgICAgICAnQkFSJzogJ2JhcicsCisgICAgICAgICAgICAgfSkKKyAKKyAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKFsnLS13aXRoLXF1eCddKQorIAorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgIGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICctLXdpdGgtcXV4IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBjb25maWd1cmF0aW9uJworICAgICAgICAgICAgICkKKyAKKyAgICAgICAgICAgICBjb25maWcgPSBzZWxmLmdldF9jb25maWcoWyctLXdpdGgtZm9vJywgJy0td2l0aC1mb28tcmVhbGx5J10pCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnLCB7CisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHsKKyAgICAgICAgICAgICAgICAgJ0ZPTyc6ICdmb28nLAorICAgICAgICAgICAgICAgICAnRk9PMic6IFRydWUsCisgICAgICAgICAgICAgfSkKK0BAIC05OTgsNyArOTk4LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKCkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsICdDYW5ub3QgcmVhc3NpZ24gYnVpbHRpbnMnKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLCAnQ2Fubm90IHJlYXNzaWduIGJ1aWx0aW5zJykKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgd2l0aCBzZWxmLm1vel9jb25maWd1cmUoJycnCitAQCAtMTAwNiw3ICsxMDA2LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKCkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2Fubm90IGFzc2lnbiBgZm9vYCBiZWNhdXNlIGl0IGlzIG5laXRoZXIgYSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnQGRlcGVuZHMgbm9yIGEgQHRlbXBsYXRlJykKKyAKK0BAIC0xMDE5LDcgKzEwMTksNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpOgorICAgICAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJAZGVwZW5kcyBuZWVkcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25maWd1cmVFcnJvcikgYXMgZToKK0BAIC0xMDMwLDcgKzEwMzAsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpOgorICAgICAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICInLS13aXRoLWZvbycgaXMgbm90IGEga25vd24gb3B0aW9uLiBNYXliZSBpdCdzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZCB0b28gbGF0ZT8iKQorIAorQEAgLTEwNDIsNyArMTA0Miw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9wdGlvbiBtdXN0IG5vdCBjb250YWluIGFuICc9JyIpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgZToKK0BAIC0xMDUzLDcgKzEwNTMsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpOgorICAgICAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgdXNlIG9iamVjdCBvZiB0eXBlICdpbnQnIGFzIGFyZ3VtZW50ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0byBAZGVwZW5kcyIpCisgCitAQCAtMTA2NSw3ICsxMDY1LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKCkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IGRlY29yYXRlIGdlbmVyYXRvciBmdW5jdGlvbnMgd2l0aCBAZGVwZW5kcyIpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgZToKK0BAIC0xMDc0LDcgKzEwNzQsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpOgorICAgICAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmV4cGVjdGVkIHR5cGU6ICdpbnQnIikKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQ29uZmlndXJlRXJyb3IpIGFzIGU6CitAQCAtMTA4OCw3ICsxMDg4LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKCkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGBmb29gIGZ1bmN0aW9uIG1heSBub3QgYmUgY2FsbGVkIikKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBlOgorQEAgLTEwOTksNyArMTA5OSw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlcGVuZHNfaW1wbCgpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJ2ZvbyciKQorIAorICAgICBkZWYgdGVzdF9kZXBlbmRzX3doZW4oc2VsZik6CitAQCAtMTEyNCwxMiArMTEyNCwxMiBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICBzZXRfY29uZmlnKCdRVVgnLCBxdXgpCisgICAgICAgICAnJycpOgorICAgICAgICAgICAgIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZygpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnLCB7CisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHsKKyAgICAgICAgICAgICAgICAgJ0ZPTyc6ICdmb28nLAorICAgICAgICAgICAgIH0pCisgCisgICAgICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKFsnLS13aXRoLXF1eCddKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZywgeworKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnLCB7CisgICAgICAgICAgICAgICAgICdGT08nOiAnZm9vJywKKyAgICAgICAgICAgICAgICAgJ1FVWCc6ICdxdXgnLAorICAgICAgICAgICAgIH0pCitAQCAtMTE0NCw3ICsxMTQ0LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKCkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnQGltcG9ydHMgbXVzdCBhcHBlYXIgYWZ0ZXIgQHRlbXBsYXRlJykKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQ29uZmlndXJlRXJyb3IpIGFzIGU6CitAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKCkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnQGltcG9ydHMgbXVzdCBhcHBlYXIgYWZ0ZXIgQGRlcGVuZHMnKQorIAorICAgICAgICAgZm9yIGltcG9ydF8gaW4gKAorQEAgLTExNzQsNyArMTE3NCw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgICAnJycgJSBpbXBvcnRfKToKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwgIlVuZXhwZWN0ZWQgdHlwZTogJ2ludCciKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwgIlVuZXhwZWN0ZWQgdHlwZTogJ2ludCciKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgd2l0aCBzZWxmLm1vel9jb25maWd1cmUoJycnCitAQCAtMTE4NSw3ICsxMTg1LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKCkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsICJVbmV4cGVjdGVkIHR5cGU6ICdpbnQnIikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwgIlVuZXhwZWN0ZWQgdHlwZTogJ2ludCciKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBlOgorICAgICAgICAgICAgIHdpdGggc2VsZi5tb3pfY29uZmlndXJlKCcnJworQEAgLTExOTUsNyArMTE5NSw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYXJndW1lbnQgdG8gQGltcG9ydHM6ICdvcyonIikKKyAKKyAgICAgZGVmIHRlc3Rfb25seV93aGVuKHNlbGYpOgorQEAgLTEyNTAsNyArMTI1MCw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoWyctLWZvbyddKQorIAorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWZvbyBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgY29uZmlndXJhdGlvbicpCisgCisgICAgICAgICAjIENhbm5vdCBkZXBlbmQgb24gYW4gb3B0aW9uIGRlZmluZWQgaW4gYSBvbmx5X3doZW4gYmxvY2ssIGJlY2F1c2Ugd2UKK0BAIC0xMjYxLDcgKzEyNjEsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENvbmZpZ3VyZUVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoKQorIAorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdAZGVwZW5kcyBmdW5jdGlvbiBuZWVkcyB0aGUgc2FtZSBgd2hlbmAgYXMgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25zIGl0IGRlcGVuZHMgb24nKQorIAorQEAgLTEyNzgsNyArMTI3OCw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoKQorIAorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWZvbyBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgY29uZmlndXJhdGlvbicpCisgCisgICAgICAgICAjIEFuZCBzaW1pbGFybHkgZG9lc24ndCBmYWlsIHdoZW4gdGhlIGNvbmRpdGlvbiBpcyB0cnVlLgorZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X2xpbnQucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF9saW50LnB5CitpbmRleCA2ZDhkNGM0OWYuLjZhZDg5NzgzOSAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X2xpbnQucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X2xpbnQucHkKK0BAIC0yLDkgKzIsOSBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24sIHVuaWNvZGVfbGl0ZXJhbHMKKyAKKy1mcm9tIFN0cmluZ0lPIGltcG9ydCBTdHJpbmdJTworKworK2Zyb20gaW8gaW1wb3J0IFN0cmluZ0lPCisgaW1wb3J0IG9zCisgaW1wb3J0IHRleHR3cmFwCisgaW1wb3J0IHVuaXR0ZXN0CitAQCAtNjIsNyArNjIsNyBAQCBjbGFzcyBUZXN0TGludCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5saW50X3Rlc3QoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJgYmFyYCBkZXBlbmRzIG9uICctLWhlbHAnIGFuZCBgZm9vYC4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgImBmb29gIG11c3QgZGVwZW5kIG9uICctLWhlbHAnIikKKyAKK0BAIC04NSw3ICs4NSw3IEBAIGNsYXNzIFRlc3RMaW50KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpOgorICAgICAgICAgICAgICAgICBzZWxmLmxpbnRfdGVzdCgpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImBiYXJgIGRlcGVuZHMgb24gJy0taGVscCcgYW5kIGBmb29gLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiYGZvb2AgbXVzdCBkZXBlbmQgb24gJy0taGVscCciKQorIAorQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFzcyBUZXN0TGludCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5saW50X3Rlc3QoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaXNzaW5nIEBkZXBlbmRzIGZvciBgZm9vYDogJy0taGVscCciKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25maWd1cmVFcnJvcikgYXMgZToKK0BAIC0xMzAsNyArMTMwLDcgQEAgY2xhc3MgVGVzdExpbnQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYubGludF90ZXN0KCkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWlzc2luZyBAZGVwZW5kcyBmb3IgYGZvb2A6ICctLWhlbHAnIikKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQ29uZmlndXJlRXJyb3IpIGFzIGU6CitAQCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIFRlc3RMaW50KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpOgorICAgICAgICAgICAgICAgICBzZWxmLmxpbnRfdGVzdCgpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1pc3NpbmcgQGRlcGVuZHMgZm9yIGBmb29gOiAnLS1oZWxwJyIpCisgCisgICAgICAgICAjIFRoaXMgd291bGQgaGF2ZSBmYWlsZWQgd2l0aCAiTWlzc2luZyBAZGVwZW5kcyBmb3IgYGZvb2A6ICctLWhlbHAnIgorQEAgLTE3OCw3ICsxNzgsNyBAQCBjbGFzcyBUZXN0TGludCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5saW50X3Rlc3QoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaXNzaW5nIEBkZXBlbmRzIGZvciBgZm9vYDogJy0taGVscCciKQorIAorICAgICAgICAgIyBUaGVyZSBpcyBhIGRlZmF1bHQgcmVzdHJpY3RlZCBgb3NgIG1vZHVsZSB3aGVuIHRoZXJlIGlzIG5vIGV4cGxpY2l0CitAQCAtMjA1LDcgKzIwNSw3IEBAIGNsYXNzIFRlc3RMaW50KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpOgorICAgICAgICAgICAgICAgICBzZWxmLmxpbnRfdGVzdCgpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzOjM6IFRoZSBkZXBlbmRlbmN5IG9uIGAtLWZvb2AgaXMgdW51c2VkLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICUgbW96cGF0aC5qb2luKHRlc3RfZGF0YV9wYXRoLCAnbW96LmNvbmZpZ3VyZScpKQorIAorQEAgLTIyMiw3ICsyMjIsNyBAQCBjbGFzcyBUZXN0TGludCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5saW50X3Rlc3QoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIlczo1OiBUaGUgZGVwZW5kZW5jeSBvbiBgYmFyYCBpcyB1bnVzZWQuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBtb3pwYXRoLmpvaW4odGVzdF9kYXRhX3BhdGgsICdtb3ouY29uZmlndXJlJykpCisgCitAQCAtMjM2LDcgKzIzNiw3IEBAIGNsYXNzIFRlc3RMaW50KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpOgorICAgICAgICAgICAgICAgICBzZWxmLmxpbnRfdGVzdCgpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzOjI6IFRoZSBkZXBlbmRlbmN5IG9uIGA8bGFtYmRhPmAgaXMgdW51c2VkLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICUgbW96cGF0aC5qb2luKHRlc3RfZGF0YV9wYXRoLCAnbW96LmNvbmZpZ3VyZScpKQorIAorQEAgLTI1Nyw3ICsyNTcsNyBAQCBjbGFzcyBUZXN0TGludCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5saW50X3Rlc3QoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIlczo5OiBUaGUgZGVwZW5kZW5jeSBvbiBgcXV4YCBpcyB1bnVzZWQuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBtb3pwYXRoLmpvaW4odGVzdF9kYXRhX3BhdGgsICdtb3ouY29uZmlndXJlJykpCisgCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfbW96X2NvbmZpZ3VyZS5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X21vel9jb25maWd1cmUucHkKK2luZGV4IGIzMzQyZTI2OC4uN2EyNmU5ZTA5IDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfbW96X2NvbmZpZ3VyZS5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfbW96X2NvbmZpZ3VyZS5weQorQEAgLTIsNyArMiw3IEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbiwgdW5pY29kZV9saXRlcmFscworKworIAorIGZyb20gbW96dW5pdCBpbXBvcnQgbWFpbgorIGZyb20gbW96cGFjayBpbXBvcnQgcGF0aCBhcyBtb3pwYXRoCitAQCAtMjcsMTAgKzI3LDEwIEBAIGNsYXNzIFRlc3RNb3pDb25maWd1cmUoQmFzZUNvbmZpZ3VyZVRlc3QpOgorICAgICAgICAgICAgIHNoZWxsID0gbW96cGF0aC5hYnNwYXRoKCcvYmluL3NoJykKKyAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlcGxhY2UoJ0NPTkZJR19TSEVMTD0lcyAnICUgc2hlbGwsICcnKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0tZW5hYmxlLWFwcGxpY2F0aW9uPWJyb3dzZXInLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnLS1lbmFibGUtYXBwbGljYXRpb249YnJvd3NlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfdmFsdWVfZm9yKFsnLS1lbmFibGUtYXBwbGljYXRpb249YnJvd3NlciddKSkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLWVuYWJsZS1hcHBsaWNhdGlvbj1icm93c2VyICcKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0tZW5hYmxlLWFwcGxpY2F0aW9uPWJyb3dzZXIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgJ01PWl9WVFVORT0xJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF92YWx1ZV9mb3IoWyctLWVuYWJsZS1hcHBsaWNhdGlvbj1icm93c2VyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdNT1pfVlRVTkU9MSddKSkKK0BAIC0zOSwyNSArMzksMjUgQEAgY2xhc3MgVGVzdE1vekNvbmZpZ3VyZShCYXNlQ29uZmlndXJlVGVzdCk6CisgICAgICAgICAgICAgZW52aXJvbj17J01PWl9WVFVORSc6ICcxJ30sCisgICAgICAgICAgICAgbW96Y29uZmlnPSdhY19hZGRfb3B0aW9ucyAtLWVuYWJsZS1wcm9qZWN0PWpzJykKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLWVuYWJsZS1wcm9qZWN0PWpzIE1PWl9WVFVORT0xJywKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0tZW5hYmxlLXByb2plY3Q9anMgTU9aX1ZUVU5FPTEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpCisgCisgICAgICAgICAjIC0tZGlzYWJsZS1qcy1zaGVsbCBpcyB0aGUgZGVmYXVsdCwgc28gaXQncyBmaWx0ZXJlZCBvdXQuCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS1lbmFibGUtYXBwbGljYXRpb249YnJvd3NlcicsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLWVuYWJsZS1hcHBsaWNhdGlvbj1icm93c2VyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF92YWx1ZV9mb3IoWyctLWVuYWJsZS1hcHBsaWNhdGlvbj1icm93c2VyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWRpc2FibGUtanMtc2hlbGwnXSkpCisgCisgICAgICAgICAjIE5vcm1hbGx5LCAtLXdpdGhvdXQtZm9vIHdvdWxkIGJlIGZpbHRlcmVkIG91dCBiZWNhdXNlIHRoYXQncyB0aGUKKyAgICAgICAgICMgZGVmYXVsdCwgYnV0IHNpbmNlIGl0IGlzIGEgKGZha2UpIG9sZC1jb25maWd1cmUgb3B0aW9uLCBpdCBhbHdheXMKKyAgICAgICAgICMgYXBwZWFycy4KKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLWVuYWJsZS1hcHBsaWNhdGlvbj1icm93c2VyIC0td2l0aG91dC1mb28nLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnLS1lbmFibGUtYXBwbGljYXRpb249YnJvd3NlciAtLXdpdGhvdXQtZm9vJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF92YWx1ZV9mb3IoWyctLWVuYWJsZS1hcHBsaWNhdGlvbj1icm93c2VyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXdpdGhvdXQtZm9vJ10pKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0tZW5hYmxlLWFwcGxpY2F0aW9uPWJyb3dzZXIgLS13aXRoLWZvbycsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLWVuYWJsZS1hcHBsaWNhdGlvbj1icm93c2VyIC0td2l0aC1mb28nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3ZhbHVlX2ZvcihbJy0tZW5hYmxlLWFwcGxpY2F0aW9uPWJyb3dzZXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0td2l0aC1mb28nXSkpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygiLS1lbmFibGUtYXBwbGljYXRpb249YnJvd3NlciAnLS13aXRoLWZvbz1mb28gYmFyJyIsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCItLWVuYWJsZS1hcHBsaWNhdGlvbj1icm93c2VyICctLXdpdGgtZm9vPWZvbyBiYXInIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF92YWx1ZV9mb3IoWyctLWVuYWJsZS1hcHBsaWNhdGlvbj1icm93c2VyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXdpdGgtZm9vPWZvbyBiYXInXSkpCisgCitAQCAtNjksNyArNjksNyBAQCBjbGFzcyBUZXN0TW96Q29uZmlndXJlKEJhc2VDb25maWd1cmVUZXN0KToKKyAgICAgICAgICAgICAgICAgc2VsZi52ZXJzaW9uID0gdmVyc2lvbgorIAorICAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBzdGRpbiwgYXJncyk6CistICAgICAgICAgICAgICAgIHRoaXMuYXNzZXJ0RXF1YWxzKGFyZ3MsICgnLXZlcnNpb24nLCkpCisrICAgICAgICAgICAgICAgIHRoaXMuYXNzZXJ0RXF1YWwoYXJncywgKCctdmVyc2lvbicsKSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIDAsIHNlbGYudmVyc2lvbiwgJycKKyAKKyAgICAgICAgIGRlZiBjaGVja19uc2lzX3ZlcnNpb24odmVyc2lvbik6CitAQCAtODQsMTMgKzg0LDEzIEBAIGNsYXNzIFRlc3RNb3pDb25maWd1cmUoQmFzZUNvbmZpZ3VyZVRlc3QpOgorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0KSBhcyBlOgorICAgICAgICAgICAgIGNoZWNrX25zaXNfdmVyc2lvbigndjMuMGEyJykKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNoZWNrX25zaXNfdmVyc2lvbigndjMuMGIxJyksICczLjBiMScpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjaGVja19uc2lzX3ZlcnNpb24oJ3YzLjBiMicpLCAnMy4wYjInKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY2hlY2tfbnNpc192ZXJzaW9uKCd2My4wcmMxJyksICczLjByYzEnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY2hlY2tfbnNpc192ZXJzaW9uKCd2My4wJyksICczLjAnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY2hlY2tfbnNpc192ZXJzaW9uKCd2My4wLTInKSwgJzMuMCcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjaGVja19uc2lzX3ZlcnNpb24oJ3YzLjAuMScpLCAnMy4wJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNoZWNrX25zaXNfdmVyc2lvbigndjMuMScpLCAnMy4xJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tfbnNpc192ZXJzaW9uKCd2My4wYjEnKSwgJzMuMGIxJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tfbnNpc192ZXJzaW9uKCd2My4wYjInKSwgJzMuMGIyJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tfbnNpc192ZXJzaW9uKCd2My4wcmMxJyksICczLjByYzEnKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGVja19uc2lzX3ZlcnNpb24oJ3YzLjAnKSwgJzMuMCcpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNrX25zaXNfdmVyc2lvbigndjMuMC0yJyksICczLjAnKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGVja19uc2lzX3ZlcnNpb24oJ3YzLjAuMScpLCAnMy4wJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tfbnNpc192ZXJzaW9uKCd2My4xJyksICczLjEnKQorIAorIAorIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3Rfb3B0aW9ucy5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X29wdGlvbnMucHkKK2luZGV4IDlkZWZjY2IyYy4uMzMwY2UzYjFmIDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3Rfb3B0aW9ucy5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3Rfb3B0aW9ucy5weQorQEAgLTIsNyArMiw3IEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbiwgdW5pY29kZV9saXRlcmFscworKworIAorIGltcG9ydCB1bml0dGVzdAorIAorQEAgLTI4LDEzOSArMjgsMTM5IEBAIGNsYXNzIE9wdGlvbihPcHRpb24pOgorIGNsYXNzIFRlc3RPcHRpb24odW5pdHRlc3QuVGVzdENhc2UpOgorICAgICBkZWYgdGVzdF9vcHRpb24oc2VsZik6CisgICAgICAgICBvcHRpb24gPSBPcHRpb24oJy0tb3B0aW9uJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5wcmVmaXgsICcnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9uLm5hbWUsICdvcHRpb24nKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9uLmVudiwgTm9uZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLnByZWZpeCwgJycpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbi5uYW1lLCAnb3B0aW9uJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLmVudiwgTm9uZSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3B0aW9uLmRlZmF1bHQpCisgCisgICAgICAgICBvcHRpb24gPSBPcHRpb24oJy0tZW5hYmxlLW9wdGlvbicpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb24ucHJlZml4LCAnZW5hYmxlJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYW1lLCAnb3B0aW9uJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5lbnYsIE5vbmUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbi5wcmVmaXgsICdlbmFibGUnKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb24ubmFtZSwgJ29wdGlvbicpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbi5lbnYsIE5vbmUpCisgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9wdGlvbi5kZWZhdWx0KQorIAorICAgICAgICAgb3B0aW9uID0gT3B0aW9uKCctLWRpc2FibGUtb3B0aW9uJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5wcmVmaXgsICdkaXNhYmxlJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYW1lLCAnb3B0aW9uJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5lbnYsIE5vbmUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbi5wcmVmaXgsICdkaXNhYmxlJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLm5hbWUsICdvcHRpb24nKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb24uZW52LCBOb25lKQorICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wdGlvbi5kZWZhdWx0KQorIAorICAgICAgICAgb3B0aW9uID0gT3B0aW9uKCctLXdpdGgtb3B0aW9uJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5wcmVmaXgsICd3aXRoJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYW1lLCAnb3B0aW9uJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5lbnYsIE5vbmUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbi5wcmVmaXgsICd3aXRoJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLm5hbWUsICdvcHRpb24nKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb24uZW52LCBOb25lKQorICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcHRpb24uZGVmYXVsdCkKKyAKKyAgICAgICAgIG9wdGlvbiA9IE9wdGlvbignLS13aXRob3V0LW9wdGlvbicpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb24ucHJlZml4LCAnd2l0aG91dCcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb24ubmFtZSwgJ29wdGlvbicpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb24uZW52LCBOb25lKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb24ucHJlZml4LCAnd2l0aG91dCcpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbi5uYW1lLCAnb3B0aW9uJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLmVudiwgTm9uZSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcHRpb24uZGVmYXVsdCkKKyAKKyAgICAgICAgIG9wdGlvbiA9IE9wdGlvbignLS13aXRob3V0LW9wdGlvbi1mb28nLCBlbnY9J01PWl9PUFRJT04nKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9uLmVudiwgJ01PWl9PUFRJT04nKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb24uZW52LCAnTU9aX09QVElPTicpCisgCisgICAgICAgICBvcHRpb24gPSBPcHRpb24oZW52PSdNT1pfT1BUSU9OJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5wcmVmaXgsICcnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9uLm5hbWUsIE5vbmUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb24uZW52LCAnTU9aX09QVElPTicpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbi5wcmVmaXgsICcnKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb24ubmFtZSwgTm9uZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLmVudiwgJ01PWl9PUFRJT04nKQorICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcHRpb24uZGVmYXVsdCkKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIE9wdGlvbignLS1vcHRpb24nLCBuYXJncz0wLCBkZWZhdWx0PSgnYScsKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGdpdmVuIGBkZWZhdWx0YCBkb2Vzbid0IHNhdGlzZnkgYG5hcmdzYCIpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBPcHRpb24oJy0tb3B0aW9uJywgbmFyZ3M9MSwgZGVmYXVsdD0oKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICBlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICdkZWZhdWx0IG11c3QgYmUgYSBib29sLCBhIHN0cmluZyBvciBhIHR1cGxlIG9mIHN0cmluZ3MnKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgT3B0aW9uKCctLW9wdGlvbicsIG5hcmdzPTEsIGRlZmF1bHQ9VHJ1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGdpdmVuIGBkZWZhdWx0YCBkb2Vzbid0IHNhdGlzZnkgYG5hcmdzYCIpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBPcHRpb24oJy0tb3B0aW9uJywgbmFyZ3M9MSwgZGVmYXVsdD0oJ2EnLCAnYicpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZ2l2ZW4gYGRlZmF1bHRgIGRvZXNuJ3Qgc2F0aXNmeSBgbmFyZ3NgIikKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIE9wdGlvbignLS1vcHRpb24nLCBuYXJncz0yLCBkZWZhdWx0PSgpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgIGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgJ2RlZmF1bHQgbXVzdCBiZSBhIGJvb2wsIGEgc3RyaW5nIG9yIGEgdHVwbGUgb2Ygc3RyaW5ncycpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBPcHRpb24oJy0tb3B0aW9uJywgbmFyZ3M9MiwgZGVmYXVsdD1UcnVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZ2l2ZW4gYGRlZmF1bHRgIGRvZXNuJ3Qgc2F0aXNmeSBgbmFyZ3NgIikKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIE9wdGlvbignLS1vcHRpb24nLCBuYXJncz0yLCBkZWZhdWx0PSgnYScsKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGdpdmVuIGBkZWZhdWx0YCBkb2Vzbid0IHNhdGlzZnkgYG5hcmdzYCIpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBPcHRpb24oJy0tb3B0aW9uJywgbmFyZ3M9Jz8nLCBkZWZhdWx0PSgnYScsICdiJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBnaXZlbiBgZGVmYXVsdGAgZG9lc24ndCBzYXRpc2Z5IGBuYXJnc2AiKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgT3B0aW9uKCctLW9wdGlvbicsIG5hcmdzPScrJywgZGVmYXVsdD0oKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICBlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICdkZWZhdWx0IG11c3QgYmUgYSBib29sLCBhIHN0cmluZyBvciBhIHR1cGxlIG9mIHN0cmluZ3MnKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgT3B0aW9uKCctLW9wdGlvbicsIG5hcmdzPScrJywgZGVmYXVsdD1UcnVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZ2l2ZW4gYGRlZmF1bHRgIGRvZXNuJ3Qgc2F0aXNmeSBgbmFyZ3NgIikKKyAKKyAgICAgICAgICMgLS1kaXNhYmxlIG9wdGlvbnMgd2l0aCBhIG5hcmdzIHZhbHVlIHRoYXQgcmVxdWlyZXMgYXQgbGVhc3Qgb25lCisgICAgICAgICAjIGFyZ3VtZW50IG5lZWQgdG8gYmUgZ2l2ZW4gYSBkZWZhdWx0LgorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgT3B0aW9uKCctLWRpc2FibGUtb3B0aW9uJywgbmFyZ3M9MSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGdpdmVuIGBkZWZhdWx0YCBkb2Vzbid0IHNhdGlzZnkgYG5hcmdzYCIpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBPcHRpb24oJy0tZGlzYWJsZS1vcHRpb24nLCBuYXJncz0nKycpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBnaXZlbiBgZGVmYXVsdGAgZG9lc24ndCBzYXRpc2Z5IGBuYXJnc2AiKQorIAorICAgICAgICAgIyBUZXN0IG5hcmdzIGluZmVyZW5jZSBmcm9tIGRlZmF1bHQgdmFsdWUKKyAgICAgICAgIG9wdGlvbiA9IE9wdGlvbignLS13aXRoLWZvbycsIGRlZmF1bHQ9VHJ1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYXJncywgMCkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLm5hcmdzLCAwKQorIAorICAgICAgICAgb3B0aW9uID0gT3B0aW9uKCctLXdpdGgtZm9vJywgZGVmYXVsdD1GYWxzZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYXJncywgMCkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLm5hcmdzLCAwKQorIAorICAgICAgICAgb3B0aW9uID0gT3B0aW9uKCctLXdpdGgtZm9vJywgZGVmYXVsdD0nYScpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb24ubmFyZ3MsICc/JykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLm5hcmdzLCAnPycpCisgCisgICAgICAgICBvcHRpb24gPSBPcHRpb24oJy0td2l0aC1mb28nLCBkZWZhdWx0PSgnYScsKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYXJncywgJz8nKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb24ubmFyZ3MsICc/JykKKyAKKyAgICAgICAgIG9wdGlvbiA9IE9wdGlvbignLS13aXRoLWZvbycsIGRlZmF1bHQ9KCdhJywgJ2InKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYXJncywgJyonKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb24ubmFyZ3MsICcqJykKKyAKKyAgICAgICAgIG9wdGlvbiA9IE9wdGlvbihlbnY9J0ZPTycsIGRlZmF1bHQ9VHJ1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYXJncywgMCkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLm5hcmdzLCAwKQorIAorICAgICAgICAgb3B0aW9uID0gT3B0aW9uKGVudj0nRk9PJywgZGVmYXVsdD1GYWxzZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYXJncywgMCkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLm5hcmdzLCAwKQorIAorICAgICAgICAgb3B0aW9uID0gT3B0aW9uKGVudj0nRk9PJywgZGVmYXVsdD0nYScpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb24ubmFyZ3MsICc/JykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLm5hcmdzLCAnPycpCisgCisgICAgICAgICBvcHRpb24gPSBPcHRpb24oZW52PSdGT08nLCBkZWZhdWx0PSgnYScsKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYXJncywgJz8nKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb24ubmFyZ3MsICc/JykKKyAKKyAgICAgICAgIG9wdGlvbiA9IE9wdGlvbihlbnY9J0ZPTycsIGRlZmF1bHQ9KCdhJywgJ2InKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYXJncywgJyonKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb24ubmFyZ3MsICcqJykKKyAKKyAgICAgZGVmIHRlc3Rfb3B0aW9uX29wdGlvbihzZWxmKToKKyAgICAgICAgIGZvciBvcHRpb24gaW4gKAorQEAgLTE3MCw3MCArMTcwLDcwIEBAIGNsYXNzIFRlc3RPcHRpb24odW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICctLXdpdGgtb3B0aW9uJywKKyAgICAgICAgICAgICAnLS13aXRob3V0LW9wdGlvbicsCisgICAgICAgICApOgorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKE9wdGlvbihvcHRpb24pLm9wdGlvbiwgb3B0aW9uKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKE9wdGlvbihvcHRpb24sIGVudj0nRk9PJykub3B0aW9uLCBvcHRpb24pCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChPcHRpb24ob3B0aW9uKS5vcHRpb24sIG9wdGlvbikKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE9wdGlvbihvcHRpb24sIGVudj0nRk9PJykub3B0aW9uLCBvcHRpb24pCisgCisgICAgICAgICAgICAgb3B0ID0gT3B0aW9uKG9wdGlvbiwgZGVmYXVsdD1GYWxzZSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHQub3B0aW9uLAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0Lm9wdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24ucmVwbGFjZSgnLWRpc2FibGUtJywgJy1lbmFibGUtJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgnLXdpdGhvdXQtJywgJy13aXRoLScpKQorIAorICAgICAgICAgICAgIG9wdCA9IE9wdGlvbihvcHRpb24sIGRlZmF1bHQ9VHJ1ZSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHQub3B0aW9uLAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0Lm9wdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24ucmVwbGFjZSgnLWVuYWJsZS0nLCAnLWRpc2FibGUtJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgnLXdpdGgtJywgJy13aXRob3V0LScpKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoT3B0aW9uKGVudj0nRk9PJykub3B0aW9uLCAnRk9PJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoT3B0aW9uKGVudj0nRk9PJykub3B0aW9uLCAnRk9PJykKKyAKKyAgICAgZGVmIHRlc3Rfb3B0aW9uX2Nob2ljZXMoc2VsZik6CisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBPcHRpb24oJy0tb3B0aW9uJywgbmFyZ3M9MywgY2hvaWNlcz0oJ2EnLCAnYicpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdOb3QgZW5vdWdoIGBjaG9pY2VzYCBmb3IgYG5hcmdzYCcpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBPcHRpb24oJy0td2l0aG91dC1vcHRpb24nLCBuYXJncz0xLCBjaG9pY2VzPSgnYScsICdiJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0EgYGRlZmF1bHRgIG11c3QgYmUgZ2l2ZW4gYWxvbmcgd2l0aCBgY2hvaWNlc2AnKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgT3B0aW9uKCctLXdpdGhvdXQtb3B0aW9uJywgbmFyZ3M9JysnLCBjaG9pY2VzPSgnYScsICdiJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0EgYGRlZmF1bHRgIG11c3QgYmUgZ2l2ZW4gYWxvbmcgd2l0aCBgY2hvaWNlc2AnKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgT3B0aW9uKCctLXdpdGhvdXQtb3B0aW9uJywgZGVmYXVsdD0nYycsIGNob2ljZXM9KCdhJywgJ2InKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGBkZWZhdWx0YCB2YWx1ZSBtdXN0IGJlIG9uZSBvZiAnYScsICdiJyIpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBPcHRpb24oJy0td2l0aG91dC1vcHRpb24nLCBkZWZhdWx0PSgnYScsICdjJywpLCBjaG9pY2VzPSgnYScsICdiJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBgZGVmYXVsdGAgdmFsdWUgbXVzdCBiZSBvbmUgb2YgJ2EnLCAnYiciKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgT3B0aW9uKCctLXdpdGhvdXQtb3B0aW9uJywgZGVmYXVsdD0oJ2MnLCksIGNob2ljZXM9KCdhJywgJ2InKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGBkZWZhdWx0YCB2YWx1ZSBtdXN0IGJlIG9uZSBvZiAnYScsICdiJyIpCisgCisgICAgICAgICBvcHRpb24gPSBPcHRpb24oJy0td2l0aC1vcHRpb24nLCBuYXJncz0nKycsIGNob2ljZXM9KCdhJywgJ2InKSkKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIG9wdGlvbi5nZXRfdmFsdWUoJy0td2l0aC1vcHRpb249YycpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLCAiJ2MnIGlzIG5vdCBvbmUgb2YgJ2EnLCAnYiciKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLCAiJ2MnIGlzIG5vdCBvbmUgb2YgJ2EnLCAnYiciKQorIAorICAgICAgICAgdmFsdWUgPSBvcHRpb24uZ2V0X3ZhbHVlKCctLXdpdGgtb3B0aW9uPWIsYScpCisgICAgICAgICBzZWxmLmFzc2VydFRydWUodmFsdWUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYicsICdhJykpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2InLCAnYScpKSwgdmFsdWUpCisgCisgICAgICAgICBvcHRpb24gPSBPcHRpb24oJy0td2l0aG91dC1vcHRpb24nLCBuYXJncz0nKicsIGRlZmF1bHQ9J2EnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9KCdhJywgJ2InKSkKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIG9wdGlvbi5nZXRfdmFsdWUoJy0td2l0aC1vcHRpb249YycpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLCAiJ2MnIGlzIG5vdCBvbmUgb2YgJ2EnLCAnYiciKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLCAiJ2MnIGlzIG5vdCBvbmUgb2YgJ2EnLCAnYiciKQorIAorICAgICAgICAgdmFsdWUgPSBvcHRpb24uZ2V0X3ZhbHVlKCctLXdpdGgtb3B0aW9uPWIsYScpCisgICAgICAgICBzZWxmLmFzc2VydFRydWUodmFsdWUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYicsICdhJykpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2InLCAnYScpKSwgdmFsdWUpCisgCisgICAgICAgICAjIFRlc3QgbmFyZ3MgaW5mZXJlbmNlIGZyb20gY2hvaWNlcworICAgICAgICAgb3B0aW9uID0gT3B0aW9uKCctLXdpdGgtb3B0aW9uJywgY2hvaWNlcz0oJ2EnLCAnYicpKQorQEAgLTI0NCwzNyArMjQ0LDM3IEBAIGNsYXNzIFRlc3RPcHRpb24odW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9KCdhJywgJ2InLCAnYycsICdkJykpCisgCisgICAgICAgICB2YWx1ZSA9IG9wdGlvbi5nZXRfdmFsdWUoJy0td2l0aC1vcHRpb249K2QnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2InLCAnYycsICdkJykpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2InLCAnYycsICdkJykpLCB2YWx1ZSkKKyAKKyAgICAgICAgIHZhbHVlID0gb3B0aW9uLmdldF92YWx1ZSgnLS13aXRoLW9wdGlvbj0tYicpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYycsKSksIHZhbHVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYycsKSksIHZhbHVlKQorIAorICAgICAgICAgdmFsdWUgPSBvcHRpb24uZ2V0X3ZhbHVlKCctLXdpdGgtb3B0aW9uPS1iLCtkJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdjJywnZCcpKSwgdmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdjJywnZCcpKSwgdmFsdWUpCisgCisgICAgICAgICAjIEFkZGluZyBzb21ldGhpbmcgdGhhdCBpcyBpbiB0aGUgZGVmYXVsdCBpcyBmaW5lCisgICAgICAgICB2YWx1ZSA9IG9wdGlvbi5nZXRfdmFsdWUoJy0td2l0aC1vcHRpb249K2InKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2InLCAnYycpKSwgdmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdiJywgJ2MnKSksIHZhbHVlKQorIAorICAgICAgICAgIyBSZW1vdmluZyBzb21ldGhpbmcgdGhhdCBpcyBub3QgaW4gdGhlIGRlZmF1bHQgaXMgZmluZSwgYXMgbG9uZyBhcyBpdAorICAgICAgICAgIyBpcyBvbmUgb2YgdGhlIGNob2ljZXMKKyAgICAgICAgIHZhbHVlID0gb3B0aW9uLmdldF92YWx1ZSgnLS13aXRoLW9wdGlvbj0tYScpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYicsICdjJykpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2InLCAnYycpKSwgdmFsdWUpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBvcHRpb24uZ2V0X3ZhbHVlKCctLXdpdGgtb3B0aW9uPS1lJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ2UnIGlzIG5vdCBvbmUgb2YgJ2EnLCAnYicsICdjJywgJ2QnIikKKyAKKyAgICAgICAgICMgT3RoZXIgIm5vdCBhIGNob2ljZSIgZXJyb3JzLgorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgb3B0aW9uLmdldF92YWx1ZSgnLS13aXRoLW9wdGlvbj0rZScpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIidlJyBpcyBub3Qgb25lIG9mICdhJywgJ2InLCAnYycsICdkJyIpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBvcHRpb24uZ2V0X3ZhbHVlKCctLXdpdGgtb3B0aW9uPWUnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICInZScgaXMgbm90IG9uZSBvZiAnYScsICdiJywgJ2MnLCAnZCciKQorIAorICAgICBkZWYgdGVzdF9vcHRpb25fdmFsdWVfY29tcGFyZShzZWxmKToKK0BAIC0yOTQsNyArMjk0LDcgQEAgY2xhc3MgVGVzdE9wdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgCisgICAgICAgICAjIEZvciB1c2FiaWxpdHkgcmVhc29ucywgd2UgcmFpc2UgVHlwZUVycm9yIHdoZW4gYXR0ZW1wdGluZyB0byBjb21wYXJlCisgICAgICAgICAjIGFnYWluc3QgYSBub24tdHVwbGUuCistICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwKFR5cGVFcnJvciwgJ2Nhbm5vdCBjb21wYXJlIGEnKToKKysgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdjYW5ub3QgY29tcGFyZSBhJyk6CisgICAgICAgICAgICAgdmFsID09ICdmb28nCisgCisgICAgICAgICAjIEJ1dCB3ZSBhbGxvdyBlbXB0eSBvcHRpb24gdmFsdWVzIHRvIGNvbXBhcmUgb3RoZXJ3aXNlIHdlIGNhbid0CitAQCAtMzEzLDM2ICszMTMsMzYgQEAgY2xhc3MgVGVzdE9wdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgCisgICAgIGRlZiB0ZXN0X29wdGlvbl92YWx1ZV9mb3JtYXQoc2VsZik6CisgICAgICAgICB2YWwgPSBQb3NpdGl2ZU9wdGlvblZhbHVlKCkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLXdpdGgtdmFsdWUnLCB2YWwuZm9ybWF0KCctLXdpdGgtdmFsdWUnKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLXdpdGgtdmFsdWUnLCB2YWwuZm9ybWF0KCctLXdpdGhvdXQtdmFsdWUnKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLWVuYWJsZS12YWx1ZScsIHZhbC5mb3JtYXQoJy0tZW5hYmxlLXZhbHVlJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS1lbmFibGUtdmFsdWUnLCB2YWwuZm9ybWF0KCctLWRpc2FibGUtdmFsdWUnKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLXZhbHVlJywgdmFsLmZvcm1hdCgnLS12YWx1ZScpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ1ZBTFVFPTEnLCB2YWwuZm9ybWF0KCdWQUxVRScpKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnLS13aXRoLXZhbHVlJywgdmFsLmZvcm1hdCgnLS13aXRoLXZhbHVlJykpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLXdpdGgtdmFsdWUnLCB2YWwuZm9ybWF0KCctLXdpdGhvdXQtdmFsdWUnKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0tZW5hYmxlLXZhbHVlJywgdmFsLmZvcm1hdCgnLS1lbmFibGUtdmFsdWUnKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0tZW5hYmxlLXZhbHVlJywgdmFsLmZvcm1hdCgnLS1kaXNhYmxlLXZhbHVlJykpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLXZhbHVlJywgdmFsLmZvcm1hdCgnLS12YWx1ZScpKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVkFMVUU9MScsIHZhbC5mb3JtYXQoJ1ZBTFVFJykpCisgCisgICAgICAgICB2YWwgPSBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLXdpdGgtdmFsdWU9YScsIHZhbC5mb3JtYXQoJy0td2l0aC12YWx1ZScpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0td2l0aC12YWx1ZT1hJywgdmFsLmZvcm1hdCgnLS13aXRob3V0LXZhbHVlJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS1lbmFibGUtdmFsdWU9YScsIHZhbC5mb3JtYXQoJy0tZW5hYmxlLXZhbHVlJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS1lbmFibGUtdmFsdWU9YScsIHZhbC5mb3JtYXQoJy0tZGlzYWJsZS12YWx1ZScpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0tdmFsdWU9YScsIHZhbC5mb3JtYXQoJy0tdmFsdWUnKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdWQUxVRT1hJywgdmFsLmZvcm1hdCgnVkFMVUUnKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0td2l0aC12YWx1ZT1hJywgdmFsLmZvcm1hdCgnLS13aXRoLXZhbHVlJykpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLXdpdGgtdmFsdWU9YScsIHZhbC5mb3JtYXQoJy0td2l0aG91dC12YWx1ZScpKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnLS1lbmFibGUtdmFsdWU9YScsIHZhbC5mb3JtYXQoJy0tZW5hYmxlLXZhbHVlJykpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLWVuYWJsZS12YWx1ZT1hJywgdmFsLmZvcm1hdCgnLS1kaXNhYmxlLXZhbHVlJykpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLXZhbHVlPWEnLCB2YWwuZm9ybWF0KCctLXZhbHVlJykpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWQUxVRT1hJywgdmFsLmZvcm1hdCgnVkFMVUUnKSkKKyAKKyAgICAgICAgIHZhbCA9IFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdhJywgJ2InKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLXdpdGgtdmFsdWU9YSxiJywgdmFsLmZvcm1hdCgnLS13aXRoLXZhbHVlJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS13aXRoLXZhbHVlPWEsYicsIHZhbC5mb3JtYXQoJy0td2l0aG91dC12YWx1ZScpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0tZW5hYmxlLXZhbHVlPWEsYicsIHZhbC5mb3JtYXQoJy0tZW5hYmxlLXZhbHVlJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS1lbmFibGUtdmFsdWU9YSxiJywgdmFsLmZvcm1hdCgnLS1kaXNhYmxlLXZhbHVlJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS12YWx1ZT1hLGInLCB2YWwuZm9ybWF0KCctLXZhbHVlJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnVkFMVUU9YSxiJywgdmFsLmZvcm1hdCgnVkFMVUUnKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0td2l0aC12YWx1ZT1hLGInLCB2YWwuZm9ybWF0KCctLXdpdGgtdmFsdWUnKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0td2l0aC12YWx1ZT1hLGInLCB2YWwuZm9ybWF0KCctLXdpdGhvdXQtdmFsdWUnKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0tZW5hYmxlLXZhbHVlPWEsYicsIHZhbC5mb3JtYXQoJy0tZW5hYmxlLXZhbHVlJykpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLWVuYWJsZS12YWx1ZT1hLGInLCB2YWwuZm9ybWF0KCctLWRpc2FibGUtdmFsdWUnKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0tdmFsdWU9YSxiJywgdmFsLmZvcm1hdCgnLS12YWx1ZScpKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVkFMVUU9YSxiJywgdmFsLmZvcm1hdCgnVkFMVUUnKSkKKyAKKyAgICAgICAgIHZhbCA9IE5lZ2F0aXZlT3B0aW9uVmFsdWUoKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0td2l0aG91dC12YWx1ZScsIHZhbC5mb3JtYXQoJy0td2l0aC12YWx1ZScpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0td2l0aG91dC12YWx1ZScsIHZhbC5mb3JtYXQoJy0td2l0aG91dC12YWx1ZScpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0tZGlzYWJsZS12YWx1ZScsIHZhbC5mb3JtYXQoJy0tZW5hYmxlLXZhbHVlJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS1kaXNhYmxlLXZhbHVlJywgdmFsLmZvcm1hdCgnLS1kaXNhYmxlLXZhbHVlJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnJywgdmFsLmZvcm1hdCgnLS12YWx1ZScpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ1ZBTFVFPScsIHZhbC5mb3JtYXQoJ1ZBTFVFJykpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLXdpdGhvdXQtdmFsdWUnLCB2YWwuZm9ybWF0KCctLXdpdGgtdmFsdWUnKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0td2l0aG91dC12YWx1ZScsIHZhbC5mb3JtYXQoJy0td2l0aG91dC12YWx1ZScpKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnLS1kaXNhYmxlLXZhbHVlJywgdmFsLmZvcm1hdCgnLS1lbmFibGUtdmFsdWUnKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0tZGlzYWJsZS12YWx1ZScsIHZhbC5mb3JtYXQoJy0tZGlzYWJsZS12YWx1ZScpKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgdmFsLmZvcm1hdCgnLS12YWx1ZScpKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVkFMVUU9JywgdmFsLmZvcm1hdCgnVkFMVUUnKSkKKyAKKyAgICAgZGVmIHRlc3Rfb3B0aW9uX3ZhbHVlKHNlbGYsIG5hbWU9J29wdGlvbicsIG5hcmdzPTAsIGRlZmF1bHQ9Tm9uZSk6CisgICAgICAgICBkaXNhYmxlZCA9IG5hbWUuc3RhcnRzd2l0aCgoJ2Rpc2FibGUtJywgJ3dpdGhvdXQtJykpCitAQCAtMzU5LDI4ICszNTksMjggQEAgY2xhc3MgVGVzdE9wdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgCisgICAgICAgICBpZiBuYXJncyBpbiAoMCwgJz8nLCAnKicpIG9yIGRpc2FibGVkOgorICAgICAgICAgICAgIHZhbHVlID0gb3B0aW9uLmdldF92YWx1ZSgnLS0lcycgJSBuYW1lLCAnb3B0aW9uJykKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZSwgcG9zT3B0aW9uVmFsdWUoKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZS5vcmlnaW4sICdvcHRpb24nKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIHBvc09wdGlvblZhbHVlKCkpCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZS5vcmlnaW4sICdvcHRpb24nKQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgb3B0aW9uLmdldF92YWx1ZSgnLS0lcycgJSBuYW1lKQorICAgICAgICAgICAgIGlmIG5hcmdzID09IDE6CistICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJXMgdGFrZXMgMSB2YWx1ZScgJSBuYW1lKQorICAgICAgICAgICAgIGVsaWYgbmFyZ3MgPT0gJysnOgorLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSVzIHRha2VzIDEgb3IgbW9yZSB2YWx1ZXMnICUgbmFtZSkKKyAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSVzIHRha2VzIDIgdmFsdWVzJyAlIG5hbWUpCisgCisgICAgICAgICB2YWx1ZSA9IG9wdGlvbi5nZXRfdmFsdWUoJycpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZSwgZGVmYXVsdFZhbHVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUub3JpZ2luLCAnZGVmYXVsdCcpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBkZWZhdWx0VmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLm9yaWdpbiwgJ2RlZmF1bHQnKQorIAorICAgICAgICAgdmFsdWUgPSBvcHRpb24uZ2V0X3ZhbHVlKE5vbmUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZSwgZGVmYXVsdFZhbHVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUub3JpZ2luLCAnZGVmYXVsdCcpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBkZWZhdWx0VmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLm9yaWdpbiwgJ2RlZmF1bHQnKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcik6CisgICAgICAgICAgICAgdmFsdWUgPSBvcHRpb24uZ2V0X3ZhbHVlKCdNT1pfT1BUSU9OPScsICdlbnZpcm9ubWVudCcpCitAQCAtMzkzLDQ3ICszOTMsNDcgQEAgY2xhc3MgVGVzdE9wdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgCisgICAgICAgICBpZiBuYXJncyBpbiAoMSwgJz8nLCAnKicsICcrJykgYW5kIG5vdCBkaXNhYmxlZDoKKyAgICAgICAgICAgICB2YWx1ZSA9IG9wdGlvbi5nZXRfdmFsdWUoJy0tJXM9JyAlIG5hbWUsICdvcHRpb24nKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLCBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnJywpKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZS5vcmlnaW4sICdvcHRpb24nKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCcnLCkpKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUub3JpZ2luLCAnb3B0aW9uJykKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIG9wdGlvbi5nZXRfdmFsdWUoJy0tJXM9JyAlIG5hbWUpCisgICAgICAgICAgICAgaWYgZGlzYWJsZWQ6CistICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBwYXNzIGEgdmFsdWUgdG8gLS0lcycgJSBuYW1lKQorICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJXMgdGFrZXMgJWQgdmFsdWVzJyAlIChuYW1lLCBuYXJncykpCisgCisgICAgICAgICBpZiBuYXJncyBpbiAoMSwgJz8nLCAnKicsICcrJykgYW5kIG5vdCBkaXNhYmxlZDoKKyAgICAgICAgICAgICB2YWx1ZSA9IG9wdGlvbi5nZXRfdmFsdWUoJy0tJXM9Zm9vJyAlIG5hbWUsICdvcHRpb24nKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLCBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnZm9vJywpKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZS5vcmlnaW4sICdvcHRpb24nKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdmb28nLCkpKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUub3JpZ2luLCAnb3B0aW9uJykKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIG9wdGlvbi5nZXRfdmFsdWUoJy0tJXM9Zm9vJyAlIG5hbWUpCisgICAgICAgICAgICAgaWYgZGlzYWJsZWQ6CistICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBwYXNzIGEgdmFsdWUgdG8gLS0lcycgJSBuYW1lKQorICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJXMgdGFrZXMgJWQgdmFsdWVzJyAlIChuYW1lLCBuYXJncykpCisgCisgICAgICAgICBpZiBuYXJncyBpbiAoMiwgJyonLCAnKycpIGFuZCBub3QgZGlzYWJsZWQ6CisgICAgICAgICAgICAgdmFsdWUgPSBvcHRpb24uZ2V0X3ZhbHVlKCctLSVzPWZvbyxiYXInICUgbmFtZSwgJ29wdGlvbicpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdmb28nLCAnYmFyJykpKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLm9yaWdpbiwgJ29wdGlvbicpCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2ZvbycsICdiYXInKSkpCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZS5vcmlnaW4sICdvcHRpb24nKQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgb3B0aW9uLmdldF92YWx1ZSgnLS0lcz1mb28sYmFyJyAlIG5hbWUsICdvcHRpb24nKQorICAgICAgICAgICAgIGlmIGRpc2FibGVkOgorLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDYW5ub3QgcGFzcyBhIHZhbHVlIHRvIC0tJXMnICUgbmFtZSkKKyAgICAgICAgICAgICBlbGlmIG5hcmdzID09ICc/JzoKKy0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0lcyB0YWtlcyAwIG9yIDEgdmFsdWVzJyAlIG5hbWUpCisgICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0lcyB0YWtlcyAlZCB2YWx1ZSVzJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChuYW1lLCBuYXJncywgJ3MnIGlmIG5hcmdzICE9IDEgZWxzZSAnJykpCisgCitAQCAtNDQxLDU5ICs0NDEsNTkgQEAgY2xhc3MgVGVzdE9wdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1kZWZhdWx0KQorICAgICAgICAgaWYgbmFyZ3MgaW4gKDAsICc/JywgJyonKSBvciBkaXNhYmxlZDoKKyAgICAgICAgICAgICB2YWx1ZSA9IG9wdGlvbi5nZXRfdmFsdWUoJy0tJXMnICUgbmFtZSwgJ29wdGlvbicpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIHBvc09wdGlvblZhbHVlKCkpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUub3JpZ2luLCAnb3B0aW9uJykKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBwb3NPcHRpb25WYWx1ZSgpKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUub3JpZ2luLCAnb3B0aW9uJykKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIG9wdGlvbi5nZXRfdmFsdWUoJy0tJXMnICUgbmFtZSkKKyAgICAgICAgICAgICBpZiBkaXNhYmxlZDoKKy0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2Fubm90IHBhc3MgYSB2YWx1ZSB0byAtLSVzJyAlIG5hbWUpCisgICAgICAgICAgICAgZWxpZiBuYXJncyA9PSAnKyc6CistICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJXMgdGFrZXMgMSBvciBtb3JlIHZhbHVlcycgJSBuYW1lKQorICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJXMgdGFrZXMgJWQgdmFsdWUlcycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAobmFtZSwgbmFyZ3MsICdzJyBpZiBuYXJncyAhPSAxIGVsc2UgJycpKQorIAorICAgICAgICAgdmFsdWUgPSBvcHRpb24uZ2V0X3ZhbHVlKCcnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIGRlZmF1bHRWYWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLm9yaWdpbiwgJ2RlZmF1bHQnKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgZGVmYXVsdFZhbHVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZS5vcmlnaW4sICdkZWZhdWx0JykKKyAKKyAgICAgICAgIHZhbHVlID0gb3B0aW9uLmdldF92YWx1ZShOb25lKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIGRlZmF1bHRWYWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLm9yaWdpbiwgJ2RlZmF1bHQnKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgZGVmYXVsdFZhbHVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZS5vcmlnaW4sICdkZWZhdWx0JykKKyAKKyAgICAgICAgIHZhbHVlID0gb3B0aW9uLmdldF92YWx1ZSgnTU9aX09QVElPTj0nLCAnZW52aXJvbm1lbnQnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLm9yaWdpbiwgJ2Vudmlyb25tZW50JykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUub3JpZ2luLCAnZW52aXJvbm1lbnQnKQorIAorICAgICAgICAgaWYgbmFyZ3MgaW4gKDAsICc/JywgJyonKToKKyAgICAgICAgICAgICB2YWx1ZSA9IG9wdGlvbi5nZXRfdmFsdWUoJ01PWl9PUFRJT049MScsICdlbnZpcm9ubWVudCcpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZS5vcmlnaW4sICdlbnZpcm9ubWVudCcpCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgUG9zaXRpdmVPcHRpb25WYWx1ZSgpKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUub3JpZ2luLCAnZW52aXJvbm1lbnQnKQorICAgICAgICAgZWxpZiBuYXJncyBpbiAoMSwgJysnKToKKyAgICAgICAgICAgICB2YWx1ZSA9IG9wdGlvbi5nZXRfdmFsdWUoJ01PWl9PUFRJT049MScsICdlbnZpcm9ubWVudCcpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCcxJywpKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZS5vcmlnaW4sICdlbnZpcm9ubWVudCcpCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgUG9zaXRpdmVPcHRpb25WYWx1ZSgoJzEnLCkpKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUub3JpZ2luLCAnZW52aXJvbm1lbnQnKQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgb3B0aW9uLmdldF92YWx1ZSgnTU9aX09QVElPTj0xJywgJ2Vudmlyb25tZW50JykKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLCAnTU9aX09QVElPTiB0YWtlcyAyIHZhbHVlcycpCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLCAnTU9aX09QVElPTiB0YWtlcyAyIHZhbHVlcycpCisgCisgICAgICAgICBpZiBuYXJncyBpbiAoMSwgJz8nLCAnKicsICcrJykgYW5kIG5vdCBkaXNhYmxlZDoKKyAgICAgICAgICAgICB2YWx1ZSA9IG9wdGlvbi5nZXRfdmFsdWUoJy0tJXM9JyAlIG5hbWUsICdvcHRpb24nKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLCBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnJywpKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZS5vcmlnaW4sICdvcHRpb24nKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCcnLCkpKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUub3JpZ2luLCAnb3B0aW9uJykKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIG9wdGlvbi5nZXRfdmFsdWUoJy0tJXM9JyAlIG5hbWUsICdvcHRpb24nKQorICAgICAgICAgICAgIGlmIGRpc2FibGVkOgorLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDYW5ub3QgcGFzcyBhIHZhbHVlIHRvIC0tJXMnICUgbmFtZSkKKyAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSVzIHRha2VzICVkIHZhbHVlcycgJSAobmFtZSwgbmFyZ3MpKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcik6CitAQCAtNTAxLDI2ICs1MDEsMjYgQEAgY2xhc3MgVGVzdE9wdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgCisgICAgICAgICBpZiBuYXJncyBpbiAoMSwgJz8nLCAnKicsICcrJyk6CisgICAgICAgICAgICAgdmFsdWUgPSBvcHRpb24uZ2V0X3ZhbHVlKCdNT1pfT1BUSU9OPWZvbycsICdlbnZpcm9ubWVudCcpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdmb28nLCkpKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLm9yaWdpbiwgJ2Vudmlyb25tZW50JykKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnZm9vJywpKSkKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLm9yaWdpbiwgJ2Vudmlyb25tZW50JykKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIG9wdGlvbi5nZXRfdmFsdWUoJ01PWl9PUFRJT049Zm9vJywgJ2Vudmlyb25tZW50JykKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTU9aX09QVElPTiB0YWtlcyAlZCB2YWx1ZXMnICUgbmFyZ3MpCisgCisgICAgICAgICBpZiBuYXJncyBpbiAoMiwgJyonLCAnKycpOgorICAgICAgICAgICAgIHZhbHVlID0gb3B0aW9uLmdldF92YWx1ZSgnTU9aX09QVElPTj1mb28sYmFyJywgJ2Vudmlyb25tZW50JykKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZSwgUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2ZvbycsICdiYXInKSkpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUub3JpZ2luLCAnZW52aXJvbm1lbnQnKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdmb28nLCAnYmFyJykpKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUub3JpZ2luLCAnZW52aXJvbm1lbnQnKQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgb3B0aW9uLmdldF92YWx1ZSgnTU9aX09QVElPTj1mb28sYmFyJywgJ2Vudmlyb25tZW50JykKKyAgICAgICAgICAgICBpZiBuYXJncyA9PSAnPyc6CistICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ01PWl9PUFRJT04gdGFrZXMgMCBvciAxIHZhbHVlcycpCisgICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTU9aX09QVElPTiB0YWtlcyAlZCB2YWx1ZSVzJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChuYXJncywgJ3MnIGlmIG5hcmdzICE9IDEgZWxzZSAnJykpCisgCitAQCAtNTMyLDI2ICs1MzIsMjYgQEAgY2xhc3MgVGVzdE9wdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgZW52X29wdGlvbi5nZXRfdmFsdWUoJy0tJXMnICUgbmFtZSkKKyAKKyAgICAgICAgIHZhbHVlID0gZW52X29wdGlvbi5nZXRfdmFsdWUoJycpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZSwgZGVmYXVsdFZhbHVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUub3JpZ2luLCAnZGVmYXVsdCcpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBkZWZhdWx0VmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLm9yaWdpbiwgJ2RlZmF1bHQnKQorIAorICAgICAgICAgdmFsdWUgPSBlbnZfb3B0aW9uLmdldF92YWx1ZSgnTU9aX09QVElPTj0nLCAnZW52aXJvbm1lbnQnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIG5lZ09wdGlvblZhbHVlKCkpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZS5vcmlnaW4sICdlbnZpcm9ubWVudCcpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBuZWdPcHRpb25WYWx1ZSgpKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZS5vcmlnaW4sICdlbnZpcm9ubWVudCcpCisgCisgICAgICAgICBpZiBuYXJncyBpbiAoMCwgJz8nLCAnKicpOgorICAgICAgICAgICAgIHZhbHVlID0gZW52X29wdGlvbi5nZXRfdmFsdWUoJ01PWl9PUFRJT049MScsICdlbnZpcm9ubWVudCcpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIHBvc09wdGlvblZhbHVlKCkpCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgcG9zT3B0aW9uVmFsdWUoKSkKKyAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodmFsdWUpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUub3JpZ2luLCAnZW52aXJvbm1lbnQnKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUub3JpZ2luLCAnZW52aXJvbm1lbnQnKQorICAgICAgICAgZWxpZiBuYXJncyBpbiAoMSwgJysnKToKKyAgICAgICAgICAgICB2YWx1ZSA9IGVudl9vcHRpb24uZ2V0X3ZhbHVlKCdNT1pfT1BUSU9OPTEnLCAnZW52aXJvbm1lbnQnKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLCBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnMScsKSkpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUub3JpZ2luLCAnZW52aXJvbm1lbnQnKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCcxJywpKSkKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLm9yaWdpbiwgJ2Vudmlyb25tZW50JykKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIGVudl9vcHRpb24uZ2V0X3ZhbHVlKCdNT1pfT1BUSU9OPTEnLCAnZW52aXJvbm1lbnQnKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsICdNT1pfT1BUSU9OIHRha2VzIDIgdmFsdWVzJykKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsICdNT1pfT1BUSU9OIHRha2VzIDIgdmFsdWVzJykKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgZW52X29wdGlvbi5nZXRfdmFsdWUoJy0tJXMnICUgbmFtZSkKK0BAIC01NjEsMjYgKzU2MSwyNiBAQCBjbGFzcyBUZXN0T3B0aW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAKKyAgICAgICAgIGlmIG5hcmdzIGluICgxLCAnPycsICcqJywgJysnKToKKyAgICAgICAgICAgICB2YWx1ZSA9IGVudl9vcHRpb24uZ2V0X3ZhbHVlKCdNT1pfT1BUSU9OPWZvbycsICdlbnZpcm9ubWVudCcpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdmb28nLCkpKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLm9yaWdpbiwgJ2Vudmlyb25tZW50JykKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnZm9vJywpKSkKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLm9yaWdpbiwgJ2Vudmlyb25tZW50JykKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIGVudl9vcHRpb24uZ2V0X3ZhbHVlKCdNT1pfT1BUSU9OPWZvbycsICdlbnZpcm9ubWVudCcpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ01PWl9PUFRJT04gdGFrZXMgJWQgdmFsdWVzJyAlIG5hcmdzKQorIAorICAgICAgICAgaWYgbmFyZ3MgaW4gKDIsICcqJywgJysnKToKKyAgICAgICAgICAgICB2YWx1ZSA9IGVudl9vcHRpb24uZ2V0X3ZhbHVlKCdNT1pfT1BUSU9OPWZvbyxiYXInLCAnZW52aXJvbm1lbnQnKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLCBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnZm9vJywgJ2JhcicpKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZS5vcmlnaW4sICdlbnZpcm9ubWVudCcpCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2ZvbycsICdiYXInKSkpCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZS5vcmlnaW4sICdlbnZpcm9ubWVudCcpCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICBlbnZfb3B0aW9uLmdldF92YWx1ZSgnTU9aX09QVElPTj1mb28sYmFyJywgJ2Vudmlyb25tZW50JykKKyAgICAgICAgICAgICBpZiBuYXJncyA9PSAnPyc6CistICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ01PWl9PUFRJT04gdGFrZXMgMCBvciAxIHZhbHVlcycpCisgICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTU9aX09QVElPTiB0YWtlcyAlZCB2YWx1ZSVzJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChuYXJncywgJ3MnIGlmIG5hcmdzICE9IDEgZWxzZSAnJykpCisgCitAQCAtNTkyLDI4ICs1OTIsMjggQEAgY2xhc3MgVGVzdE9wdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9ZGVmYXVsdCkKKyAKKyAgICAgICAgIHZhbHVlID0gb3B0aW9uLmdldF92YWx1ZSgnLS0lcy1vcHRpb24nICUgZGlzYWJsZSwgJ29wdGlvbicpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZSwgTmVnYXRpdmVPcHRpb25WYWx1ZSgpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUub3JpZ2luLCAnb3B0aW9uJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUub3JpZ2luLCAnb3B0aW9uJykKKyAKKyAgICAgICAgIG9wdGlvbiA9IHNlbGYudGVzdF9vcHRpb25fdmFsdWUoJyVzLW9wdGlvbicgJSBkaXNhYmxlLCBuYXJncz1uYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1kZWZhdWx0KQorIAorICAgICAgICAgaWYgbmFyZ3MgaW4gKDAsICc/JywgJyonKToKKyAgICAgICAgICAgICB2YWx1ZSA9IG9wdGlvbi5nZXRfdmFsdWUoJy0tJXMtb3B0aW9uJyAlIGVuYWJsZSwgJ29wdGlvbicpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZS5vcmlnaW4sICdvcHRpb24nKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKSkKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLm9yaWdpbiwgJ29wdGlvbicpCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICBvcHRpb24uZ2V0X3ZhbHVlKCctLSVzLW9wdGlvbicgJSBlbmFibGUsICdvcHRpb24nKQorICAgICAgICAgICAgIGlmIG5hcmdzID09IDE6CistICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJXMtb3B0aW9uIHRha2VzIDEgdmFsdWUnICUgZW5hYmxlKQorICAgICAgICAgICAgIGVsaWYgbmFyZ3MgPT0gJysnOgorLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSVzLW9wdGlvbiB0YWtlcyAxIG9yIG1vcmUgdmFsdWVzJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGVuYWJsZSkKKyAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSVzLW9wdGlvbiB0YWtlcyAyIHZhbHVlcycgJSBlbmFibGUpCisgCisgICAgIGRlZiB0ZXN0X29wdGlvbl92YWx1ZV93aXRoKHNlbGYpOgorQEAgLTYyMiwxMiArNjIyLDEyIEBAIGNsYXNzIFRlc3RPcHRpb24odW5pdHRlc3QuVGVzdENhc2UpOgorICAgICBkZWYgdGVzdF9vcHRpb25fdmFsdWVfaW52YWxpZF9uYXJncyhzZWxmKToKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIE9wdGlvbignLS1vcHRpb24nLCBuYXJncz0nZm9vJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFyZ3MgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsICc/JywgJyonIG9yICcrJyIpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBPcHRpb24oJy0tb3B0aW9uJywgbmFyZ3M9LTIpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hcmdzIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLCAnPycsICcqJyBvciAnKyciKQorIAorICAgICBkZWYgdGVzdF9vcHRpb25fdmFsdWVfbmFyZ3NfMShzZWxmKToKK0BAIC02MzgsNyArNjM4LDcgQEAgY2xhc3MgVGVzdE9wdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAjIEEgZGVmYXVsdCBpcyByZXF1aXJlZAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgT3B0aW9uKCctLWRpc2FibGUtb3B0aW9uJywgbmFyZ3M9MSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGdpdmVuIGBkZWZhdWx0YCBkb2Vzbid0IHNhdGlzZnkgYG5hcmdzYCIpCisgCisgICAgIGRlZiB0ZXN0X29wdGlvbl92YWx1ZV9uYXJnc18yKHNlbGYpOgorQEAgLTY0OSw3ICs2NDksNyBAQCBjbGFzcyBUZXN0T3B0aW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICMgQSBkZWZhdWx0IGlzIHJlcXVpcmVkCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBPcHRpb24oJy0tZGlzYWJsZS1vcHRpb24nLCBuYXJncz0yKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZ2l2ZW4gYGRlZmF1bHRgIGRvZXNuJ3Qgc2F0aXNmeSBgbmFyZ3NgIikKKyAKKyAgICAgZGVmIHRlc3Rfb3B0aW9uX3ZhbHVlX25hcmdzXzBfb3JfMShzZWxmKToKK0BAIC02NzYsNyArNjc2LDcgQEAgY2xhc3MgVGVzdE9wdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAjIEEgZGVmYXVsdCBpcyByZXF1aXJlZAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgT3B0aW9uKCctLWRpc2FibGUtb3B0aW9uJywgbmFyZ3M9JysnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZ2l2ZW4gYGRlZmF1bHRgIGRvZXNuJ3Qgc2F0aXNmeSBgbmFyZ3NgIikKKyAKKyAKK0BAIC02ODQsMjEgKzY4NCwyMSBAQCBjbGFzcyBUZXN0Q29tbWFuZExpbmVIZWxwZXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgIGhlbHBlciA9IENvbW1hbmRMaW5lSGVscGVyKHt9LCBbJ2NtZCcsICctLWZvbycsICctLWJhciddKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWyctLWZvbycsICctLWJhciddLCBsaXN0KGhlbHBlcikpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnLS1mb28nLCAnLS1iYXInXSwgbGlzdChoZWxwZXIpKQorIAorICAgICAgICAgaGVscGVyLmFkZCgnLS1lbmFibGUtcXV4JykKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsnLS1mb28nLCAnLS1iYXInLCAnLS1lbmFibGUtcXV4J10sIGxpc3QoaGVscGVyKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyctLWZvbycsICctLWJhcicsICctLWVuYWJsZS1xdXgnXSwgbGlzdChoZWxwZXIpKQorIAorICAgICAgICAgdmFsdWUsIG9wdGlvbiA9IGhlbHBlci5oYW5kbGUoT3B0aW9uKCctLWJhcicpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWyctLWZvbycsICctLWVuYWJsZS1xdXgnXSwgbGlzdChoZWxwZXIpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgpLCB2YWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLWJhcicsIG9wdGlvbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyctLWZvbycsICctLWVuYWJsZS1xdXgnXSwgbGlzdChoZWxwZXIpKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb3NpdGl2ZU9wdGlvblZhbHVlKCksIHZhbHVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnLS1iYXInLCBvcHRpb24pCisgCisgICAgICAgICB2YWx1ZSwgb3B0aW9uID0gaGVscGVyLmhhbmRsZShPcHRpb24oJy0tYmF6JykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJy0tZm9vJywgJy0tZW5hYmxlLXF1eCddLCBsaXN0KGhlbHBlcikpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhOZWdhdGl2ZU9wdGlvblZhbHVlKCksIHZhbHVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoTm9uZSwgb3B0aW9uKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJy0tZm9vJywgJy0tZW5hYmxlLXF1eCddLCBsaXN0KGhlbHBlcikpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSwgdmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIG9wdGlvbikKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgIENvbW1hbmRMaW5lSGVscGVyKHt9LCBbJy0tZm9vJywgJy0tYmFyJ10pCitAQCAtNzA3LDg5ICs3MDcsODkgQEAgY2xhc3MgVGVzdENvbW1hbmRMaW5lSGVscGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIGZvbyA9IE9wdGlvbignLS13aXRoLWZvbycsIG5hcmdzPScqJykKKyAgICAgICAgIGhlbHBlciA9IENvbW1hbmRMaW5lSGVscGVyKHt9LCBbJ2NtZCcsICctLXdpdGgtZm9vPWEsYiddKQorICAgICAgICAgdmFsdWUsIG9wdGlvbiA9IGhlbHBlci5oYW5kbGUoZm9vKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2EnLCAnYicpKSwgdmFsdWUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnY29tbWFuZC1saW5lJywgdmFsdWUub3JpZ2luKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0td2l0aC1mb289YSxiJywgb3B0aW9uKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsICdiJykpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2NvbW1hbmQtbGluZScsIHZhbHVlLm9yaWdpbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0td2l0aC1mb289YSxiJywgb3B0aW9uKQorIAorICAgICAgICAgaGVscGVyID0gQ29tbWFuZExpbmVIZWxwZXIoe30sIFsnY21kJywgJy0td2l0aC1mb289YSxiJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0td2l0aG91dC1mb28nXSkKKyAgICAgICAgIHZhbHVlLCBvcHRpb24gPSBoZWxwZXIuaGFuZGxlKGZvbykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSwgdmFsdWUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnY29tbWFuZC1saW5lJywgdmFsdWUub3JpZ2luKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0td2l0aG91dC1mb28nLCBvcHRpb24pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSwgdmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdjb21tYW5kLWxpbmUnLCB2YWx1ZS5vcmlnaW4pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLXdpdGhvdXQtZm9vJywgb3B0aW9uKQorIAorICAgICAgICAgaGVscGVyID0gQ29tbWFuZExpbmVIZWxwZXIoe30sIFsnY21kJywgJy0td2l0aG91dC1mb28nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS13aXRoLWZvbz1hLGInXSkKKyAgICAgICAgIHZhbHVlLCBvcHRpb24gPSBoZWxwZXIuaGFuZGxlKGZvbykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdhJywgJ2InKSksIHZhbHVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ2NvbW1hbmQtbGluZScsIHZhbHVlLm9yaWdpbikKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLXdpdGgtZm9vPWEsYicsIG9wdGlvbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2EnLCAnYicpKSwgdmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdjb21tYW5kLWxpbmUnLCB2YWx1ZS5vcmlnaW4pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLXdpdGgtZm9vPWEsYicsIG9wdGlvbikKKyAKKyAgICAgICAgIGZvbyA9IE9wdGlvbignLS13aXRoLWZvbycsIGVudj0nRk9PJywgbmFyZ3M9JyonKQorICAgICAgICAgaGVscGVyID0gQ29tbWFuZExpbmVIZWxwZXIoeydGT08nOiAnJ30sIFsnY21kJywgJy0td2l0aC1mb289YSxiJ10pCisgICAgICAgICB2YWx1ZSwgb3B0aW9uID0gaGVscGVyLmhhbmRsZShmb28pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsICdiJykpLCB2YWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdjb21tYW5kLWxpbmUnLCB2YWx1ZS5vcmlnaW4pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS13aXRoLWZvbz1hLGInLCBvcHRpb24pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdhJywgJ2InKSksIHZhbHVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnY29tbWFuZC1saW5lJywgdmFsdWUub3JpZ2luKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnLS13aXRoLWZvbz1hLGInLCBvcHRpb24pCisgCisgICAgICAgICBoZWxwZXIgPSBDb21tYW5kTGluZUhlbHBlcih7J0ZPTyc6ICdhLGInfSwgWydjbWQnLCAnLS13aXRob3V0LWZvbyddKQorICAgICAgICAgdmFsdWUsIG9wdGlvbiA9IGhlbHBlci5oYW5kbGUoZm9vKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoTmVnYXRpdmVPcHRpb25WYWx1ZSgpLCB2YWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdjb21tYW5kLWxpbmUnLCB2YWx1ZS5vcmlnaW4pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS13aXRob3V0LWZvbycsIG9wdGlvbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTmVnYXRpdmVPcHRpb25WYWx1ZSgpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2NvbW1hbmQtbGluZScsIHZhbHVlLm9yaWdpbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0td2l0aG91dC1mb28nLCBvcHRpb24pCisgCisgICAgICAgICBoZWxwZXIgPSBDb21tYW5kTGluZUhlbHBlcih7J0ZPTyc6ICcnfSwgWydjbWQnLCAnLS13aXRoLWJhcj1hLGInXSkKKyAgICAgICAgIHZhbHVlLCBvcHRpb24gPSBoZWxwZXIuaGFuZGxlKGZvbykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSwgdmFsdWUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnZW52aXJvbm1lbnQnLCB2YWx1ZS5vcmlnaW4pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnRk9PPScsIG9wdGlvbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTmVnYXRpdmVPcHRpb25WYWx1ZSgpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2Vudmlyb25tZW50JywgdmFsdWUub3JpZ2luKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRk9PPScsIG9wdGlvbikKKyAKKyAgICAgICAgIGhlbHBlciA9IENvbW1hbmRMaW5lSGVscGVyKHsnRk9PJzogJ2EsYid9LCBbJ2NtZCcsICctLXdpdGhvdXQtYmFyJ10pCisgICAgICAgICB2YWx1ZSwgb3B0aW9uID0gaGVscGVyLmhhbmRsZShmb28pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsICdiJykpLCB2YWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdlbnZpcm9ubWVudCcsIHZhbHVlLm9yaWdpbikKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdGT089YSxiJywgb3B0aW9uKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsICdiJykpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2Vudmlyb25tZW50JywgdmFsdWUub3JpZ2luKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRk9PPWEsYicsIG9wdGlvbikKKyAKKyAgICAgICAgIGhlbHBlciA9IENvbW1hbmRMaW5lSGVscGVyKHt9LCBbJ2NtZCcsICctLXdpdGgtZm9vPWEsYicsICdGT089J10pCisgICAgICAgICB2YWx1ZSwgb3B0aW9uID0gaGVscGVyLmhhbmRsZShmb28pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhOZWdhdGl2ZU9wdGlvblZhbHVlKCksIHZhbHVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ2NvbW1hbmQtbGluZScsIHZhbHVlLm9yaWdpbikKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdGT089Jywgb3B0aW9uKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOZWdhdGl2ZU9wdGlvblZhbHVlKCksIHZhbHVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnY29tbWFuZC1saW5lJywgdmFsdWUub3JpZ2luKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRk9PPScsIG9wdGlvbikKKyAKKyAgICAgICAgIGhlbHBlciA9IENvbW1hbmRMaW5lSGVscGVyKHt9LCBbJ2NtZCcsICctLXdpdGhvdXQtZm9vJywgJ0ZPTz1hLGInXSkKKyAgICAgICAgIHZhbHVlLCBvcHRpb24gPSBoZWxwZXIuaGFuZGxlKGZvbykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdhJywgJ2InKSksIHZhbHVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ2NvbW1hbmQtbGluZScsIHZhbHVlLm9yaWdpbikKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdGT089YSxiJywgb3B0aW9uKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsICdiJykpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2NvbW1hbmQtbGluZScsIHZhbHVlLm9yaWdpbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0ZPTz1hLGInLCBvcHRpb24pCisgCisgICAgICAgICBoZWxwZXIgPSBDb21tYW5kTGluZUhlbHBlcih7fSwgWydjbWQnLCAnRk9PPScsICctLXdpdGgtZm9vPWEsYiddKQorICAgICAgICAgdmFsdWUsIG9wdGlvbiA9IGhlbHBlci5oYW5kbGUoZm9vKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2EnLCAnYicpKSwgdmFsdWUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnY29tbWFuZC1saW5lJywgdmFsdWUub3JpZ2luKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0td2l0aC1mb289YSxiJywgb3B0aW9uKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsICdiJykpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2NvbW1hbmQtbGluZScsIHZhbHVlLm9yaWdpbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0td2l0aC1mb289YSxiJywgb3B0aW9uKQorIAorICAgICAgICAgaGVscGVyID0gQ29tbWFuZExpbmVIZWxwZXIoe30sIFsnY21kJywgJ0ZPTz1hLGInLCAnLS13aXRob3V0LWZvbyddKQorICAgICAgICAgdmFsdWUsIG9wdGlvbiA9IGhlbHBlci5oYW5kbGUoZm9vKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoTmVnYXRpdmVPcHRpb25WYWx1ZSgpLCB2YWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdjb21tYW5kLWxpbmUnLCB2YWx1ZS5vcmlnaW4pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS13aXRob3V0LWZvbycsIG9wdGlvbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTmVnYXRpdmVPcHRpb25WYWx1ZSgpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2NvbW1hbmQtbGluZScsIHZhbHVlLm9yaWdpbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0td2l0aG91dC1mb28nLCBvcHRpb24pCisgCisgICAgIGRlZiB0ZXN0X2V4dHJhX2FyZ3Moc2VsZik6CisgICAgICAgICBmb28gPSBPcHRpb24oJy0td2l0aC1mb28nLCBlbnY9J0ZPTycsIG5hcmdzPScqJykKKyAgICAgICAgIGhlbHBlciA9IENvbW1hbmRMaW5lSGVscGVyKHt9LCBbJ2NtZCddKQorICAgICAgICAgaGVscGVyLmFkZCgnRk9PPWEsYixjJywgJ290aGVyLW9yaWdpbicpCisgICAgICAgICB2YWx1ZSwgb3B0aW9uID0gaGVscGVyLmhhbmRsZShmb28pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsICdiJywgJ2MnKSksIHZhbHVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ290aGVyLW9yaWdpbicsIHZhbHVlLm9yaWdpbikKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdGT089YSxiLGMnLCBvcHRpb24pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdhJywgJ2InLCAnYycpKSwgdmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdvdGhlci1vcmlnaW4nLCB2YWx1ZS5vcmlnaW4pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdGT089YSxiLGMnLCBvcHRpb24pCisgCisgICAgICAgICBoZWxwZXIgPSBDb21tYW5kTGluZUhlbHBlcih7fSwgWydjbWQnXSkKKyAgICAgICAgIGhlbHBlci5hZGQoJ0ZPTz1hLGIsYycsICdvdGhlci1vcmlnaW4nKQorICAgICAgICAgaGVscGVyLmFkZCgnLS13aXRoLWZvbz1hLGIsYycsICdvdGhlci1vcmlnaW4nKQorICAgICAgICAgdmFsdWUsIG9wdGlvbiA9IGhlbHBlci5oYW5kbGUoZm9vKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2EnLCAnYicsICdjJykpLCB2YWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdvdGhlci1vcmlnaW4nLCB2YWx1ZS5vcmlnaW4pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS13aXRoLWZvbz1hLGIsYycsIG9wdGlvbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2EnLCAnYicsICdjJykpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ290aGVyLW9yaWdpbicsIHZhbHVlLm9yaWdpbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0td2l0aC1mb289YSxiLGMnLCBvcHRpb24pCisgCisgICAgICAgICAjIEFkZGluZyBjb25mbGljdGluZyBvcHRpb25zIGlzIG5vdCBhbGxvd2VkLgorICAgICAgICAgaGVscGVyID0gQ29tbWFuZExpbmVIZWxwZXIoe30sIFsnY21kJ10pCitAQCAtODA5LDkgKzgwOSw5IEBAIGNsYXNzIFRlc3RDb21tYW5kTGluZUhlbHBlcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAjIEJ1dCBhZGRpbmcgdGhlIHNhbWUgaXMgYWxsb3dlZC4KKyAgICAgICAgIGhlbHBlci5hZGQoJ0ZPTz1hLGIsYycsICdvdGhlci1vcmlnaW4nKQorICAgICAgICAgdmFsdWUsIG9wdGlvbiA9IGhlbHBlci5oYW5kbGUoZm9vKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2EnLCAnYicsICdjJykpLCB2YWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdvdGhlci1vcmlnaW4nLCB2YWx1ZS5vcmlnaW4pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnRk9PPWEsYixjJywgb3B0aW9uKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsICdiJywgJ2MnKSksIHZhbHVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnb3RoZXItb3JpZ2luJywgdmFsdWUub3JpZ2luKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRk9PPWEsYixjJywgb3B0aW9uKQorIAorICAgICAgICAgIyBUaGUgc2FtZSBydWxlIGFzIGFib3ZlIGFwcGxpZXMgd2hlbiB1c2luZyB0aGUgb3B0aW9uIGZvcm0gdnMuIHRoZQorICAgICAgICAgIyB2YXJpYWJsZSBmb3JtLiBCdXQgd2UgY2FuJ3QgZGV0ZWN0IGl0IHdoZW4gLmFkZCBpcyBjYWxsZWQuCitAQCAtODM3LDkgKzgzNyw5IEBAIGNsYXNzIFRlc3RDb21tYW5kTGluZUhlbHBlcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBoZWxwZXIuYWRkKCdGT089YSxiLGMnLCAnb3RoZXItb3JpZ2luJykKKyAgICAgICAgIGhlbHBlci5hZGQoJy0td2l0aC1mb289YSxiLGMnLCAnb3RoZXItb3JpZ2luJykKKyAgICAgICAgIHZhbHVlLCBvcHRpb24gPSBoZWxwZXIuaGFuZGxlKGZvbykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdhJywgJ2InLCAnYycpKSwgdmFsdWUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnb3RoZXItb3JpZ2luJywgdmFsdWUub3JpZ2luKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0td2l0aC1mb289YSxiLGMnLCBvcHRpb24pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdhJywgJ2InLCAnYycpKSwgdmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdvdGhlci1vcmlnaW4nLCB2YWx1ZS5vcmlnaW4pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLXdpdGgtZm9vPWEsYixjJywgb3B0aW9uKQorIAorICAgICAgICAgIyBDb25mbGljdHMgYXJlIGFsc28gbm90IGFsbG93ZWQgYWdhaW5zdCB3aGF0IGlzIGluIHRoZQorICAgICAgICAgIyBlbnZpcm9ubWVudC9vbiB0aGUgY29tbWFuZCBsaW5lLgorQEAgLTg2OSwxOSArODY5LDE5IEBAIGNsYXNzIFRlc3RDb21tYW5kTGluZUhlbHBlcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBmb28gPSBPcHRpb24oJy0tZm9vJywKKyAgICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZV9vcmlnaW5zPSgnY29tbWFuZC1saW5lJywpKQorICAgICAgICAgdmFsdWUsIG9wdGlvbiA9IGhlbHBlci5oYW5kbGUoZm9vKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgpLCB2YWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdjb21tYW5kLWxpbmUnLCB2YWx1ZS5vcmlnaW4pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS1mb28nLCBvcHRpb24pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKSwgdmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdjb21tYW5kLWxpbmUnLCB2YWx1ZS5vcmlnaW4pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLWZvbycsIG9wdGlvbikKKyAKKyAgICAgICAgIGJhciA9IE9wdGlvbignLS1iYXInLAorICAgICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlX29yaWdpbnM9KCdtb3pjb25maWcnLCkpCistICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwKEludmFsaWRPcHRpb25FcnJvciwKKysgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbnZhbGlkT3B0aW9uRXJyb3IsCisgICAgICAgICAgICAgIi0tYmFyIGNhbiBub3QgYmUgc2V0IGJ5IGNvbW1hbmQtbGluZS4gVmFsdWVzIGFyZSBhY2NlcHRlZCBmcm9tOiBtb3pjb25maWciKToKKyAgICAgICAgICAgICBoZWxwZXIuaGFuZGxlKGJhcikKKyAKKyAgICAgICAgIGJheiA9IE9wdGlvbihlbnY9J0JBWicsCisgICAgICAgICAgICAgICAgICAgICAgcG9zc2libGVfb3JpZ2lucz0oJ2ltcGxpZWQnLCkpCistICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwKEludmFsaWRPcHRpb25FcnJvciwKKysgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbnZhbGlkT3B0aW9uRXJyb3IsCisgICAgICAgICAgICAgIkJBWj0xIGNhbiBub3QgYmUgc2V0IGJ5IGVudmlyb25tZW50LiBWYWx1ZXMgYXJlIGFjY2VwdGVkIGZyb206IGltcGxpZWQiKToKKyAgICAgICAgICAgICBoZWxwZXIuaGFuZGxlKGJheikKKyAKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF90b29sY2hhaW5fY29uZmlndXJlLnB5IGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfdG9vbGNoYWluX2NvbmZpZ3VyZS5weQoraW5kZXggY2I3ZmY3MDllLi5jMzM5YTMyYmYgMTAwNzU1CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF90b29sY2hhaW5fY29uZmlndXJlLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF90b29sY2hhaW5fY29uZmlndXJlLnB5CitAQCAtMiwxMiArMiwxMiBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24sIHVuaWNvZGVfbGl0ZXJhbHMKKysKKyAKKyBpbXBvcnQgbG9nZ2luZworIGltcG9ydCBvcworIAorLWZyb20gU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCisrZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KKyAKKyBmcm9tIG1venVuaXQgaW1wb3J0IG1haW4KKyAKK0BAIC0zNjYsOSArMzY2LDkgQEAgY2xhc3MgQmFzZVRvb2xjaGFpblRlc3QoQmFzZUNvbmZpZ3VyZVRlc3QpOgorICAgICAgICAgICAgICAgICBjb21waWxlciA9IHNhbmRib3guX3ZhbHVlX2ZvcihzYW5kYm94W3Zhcl0pCisgICAgICAgICAgICAgICAgICMgQWRkIHZhciBvbiBib3RoIGVuZHMgdG8gbWFrZSBpdCBjbGVhciB3aGljaCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZXMgaXMgZmFpbGluZyB0aGUgdGVzdCB3aGVuIHRoYXQgaGFwcGVucy4KKy0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKHZhciwgY29tcGlsZXIpLCAodmFyLCByZXN1bHQpKQorKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCh2YXIsIGNvbXBpbGVyKSwgKHZhciwgcmVzdWx0KSkKKyAgICAgICAgICAgICBleGNlcHQgU3lzdGVtRXhpdDoKKy0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKHZhciwgcmVzdWx0KSwKKysgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgodmFyLCByZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmFyLCBzZWxmLm91dC5nZXR2YWx1ZSgpLnN0cmlwKCkpKQorICAgICAgICAgICAgICAgICByZXR1cm4KKyAKK0BAIC00MDcsNyArNDA3LDcgQEAgY2xhc3MgQmFzZVRvb2xjaGFpblRlc3QoQmFzZUNvbmZpZ3VyZVRlc3QpOgorICAgICAgICAgICAgICdSVVNUX0xJQl9TVUZGSVgnLAorICAgICAgICAgICAgICdPQkpfU1VGRklYJywKKyAgICAgICAgICk6CistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJyVzPSVzJyAlIChrLCBzYW5kYm94LmdldF9jb25maWcoaykpLAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyVzPSVzJyAlIChrLCBzYW5kYm94LmdldF9jb25maWcoaykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICclcz0lcycgJSAoaywgbGlicmFyeV9uYW1lX2luZm9ba10pKQorIAorIAorQEAgLTU4NCw3ICs1ODQsNyBAQCBjbGFzcyBMaW51eFRvb2xjaGFpblRlc3QoQmFzZVRvb2xjaGFpblRlc3QpOgorICAgICAgICAgIyBXZSdsbCB0cnkgZ2NjIGFuZCBjbGFuZywgYnV0IHNpbmNlIHRoZXJlIGlzIG5vIGdjYyAoZ2NjLXgueSBkb2Vzbid0CisgICAgICAgICAjIGNvdW50KSwgZmluZCBjbGFuZy4KKyAgICAgICAgIHBhdGhzID0geworLSAgICAgICAgICAgIGs6IHYgZm9yIGssIHYgaW4gc2VsZi5QQVRIUy5pdGVyaXRlbXMoKQorKyAgICAgICAgICAgIGs6IHYgZm9yIGssIHYgaW4gc2VsZi5QQVRIUy5pdGVtcygpCisgICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShrKSBub3QgaW4gKCdnY2MnLCAnZysrJykKKyAgICAgICAgIH0KKyAgICAgICAgIHNlbGYuZG9fdG9vbGNoYWluX3Rlc3QocGF0aHMsIHsKK0BAIC02MTksNyArNjE5LDcgQEAgY2xhc3MgTGludXhUb29sY2hhaW5UZXN0KEJhc2VUb29sY2hhaW5UZXN0KToKKyAgICAgICAgICMgRXZlbiBpZiB0aGVyZSBhcmUgZ2NjLXgueSBvciBjbGFuZy14LnkgY29tcGlsZXJzIGF2YWlsYWJsZSwgd2UKKyAgICAgICAgICMgZG9uJ3QgdHJ5IHRoZW0uIFRoaXMgY291bGQgYmUgY29uc2lkZXJlZCBzb21ldGhpbmcgdG8gaW1wcm92ZS4KKyAgICAgICAgIHBhdGhzID0geworLSAgICAgICAgICAgIGs6IHYgZm9yIGssIHYgaW4gc2VsZi5QQVRIUy5pdGVyaXRlbXMoKQorKyAgICAgICAgICAgIGs6IHYgZm9yIGssIHYgaW4gc2VsZi5QQVRIUy5pdGVtcygpCisgICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShrKSBub3QgaW4gKCdnY2MnLCAnZysrJywgJ2NsYW5nJywgJ2NsYW5nKysnKQorICAgICAgICAgfQorICAgICAgICAgc2VsZi5kb190b29sY2hhaW5fdGVzdChwYXRocywgeworQEAgLTgwMCw3ICs4MDAsNyBAQCBjbGFzcyBPU1hUb29sY2hhaW5UZXN0KEJhc2VUb29sY2hhaW5UZXN0KToKKyAgICAgZGVmIHRlc3Rfbm90X2djYyhzZWxmKToKKyAgICAgICAgICMgV2Ugd29uJ3QgcGljayBHQ0MgaWYgaXQncyB0aGUgb25seSB0aGluZyBhdmFpbGFibGUuCisgICAgICAgICBwYXRocyA9IHsKKy0gICAgICAgICAgICBrOiB2IGZvciBrLCB2IGluIHNlbGYuUEFUSFMuaXRlcml0ZW1zKCkKKysgICAgICAgICAgICBrOiB2IGZvciBrLCB2IGluIHNlbGYuUEFUSFMuaXRlbXMoKQorICAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUoaykgbm90IGluICgnY2xhbmcnLCAnY2xhbmcrKycpCisgICAgICAgICB9CisgICAgICAgICBzZWxmLmRvX3Rvb2xjaGFpbl90ZXN0KHBhdGhzLCB7CitAQCAtOTc2LDcgKzk3Niw3IEBAIGNsYXNzIFdpbmRvd3NUb29sY2hhaW5UZXN0KEJhc2VUb29sY2hhaW5UZXN0KToKKyAgICAgZGVmIHRlc3RfY2xhbmdfY2woc2VsZik6CisgICAgICAgICAjIFdlJ2xsIHBpY2sgY2xhbmctY2wgaWYgbXN2YyBjYW4ndCBiZSBmb3VuZC4KKyAgICAgICAgIHBhdGhzID0geworLSAgICAgICAgICAgIGs6IHYgZm9yIGssIHYgaW4gc2VsZi5QQVRIUy5pdGVyaXRlbXMoKQorKyAgICAgICAgICAgIGs6IHYgZm9yIGssIHYgaW4gc2VsZi5QQVRIUy5pdGVtcygpCisgICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShrKSAhPSAnY2wnCisgICAgICAgICB9CisgICAgICAgICBzZWxmLmRvX3Rvb2xjaGFpbl90ZXN0KHBhdGhzLCB7CitAQCAtOTg3LDcgKzk4Nyw3IEBAIGNsYXNzIFdpbmRvd3NUb29sY2hhaW5UZXN0KEJhc2VUb29sY2hhaW5UZXN0KToKKyAgICAgZGVmIHRlc3RfZ2NjKHNlbGYpOgorICAgICAgICAgIyBXZSdsbCBwaWNrIEdDQyBpZiBtc3ZjIGFuZCBjbGFuZy1jbCBjYW4ndCBiZSBmb3VuZC4KKyAgICAgICAgIHBhdGhzID0geworLSAgICAgICAgICAgIGs6IHYgZm9yIGssIHYgaW4gc2VsZi5QQVRIUy5pdGVyaXRlbXMoKQorKyAgICAgICAgICAgIGs6IHYgZm9yIGssIHYgaW4gc2VsZi5QQVRIUy5pdGVtcygpCisgICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShrKSBub3QgaW4gKCdjbCcsICdjbGFuZy1jbCcpCisgICAgICAgICB9CisgICAgICAgICBzZWxmLmRvX3Rvb2xjaGFpbl90ZXN0KHBhdGhzLCB7CitAQCAtMTAwNiw3ICsxMDA2LDcgQEAgY2xhc3MgV2luZG93c1Rvb2xjaGFpblRlc3QoQmFzZVRvb2xjaGFpblRlc3QpOgorICAgICBkZWYgdGVzdF9jbGFuZyhzZWxmKToKKyAgICAgICAgICMgV2UnbGwgcGljayBjbGFuZyBpZiBub3RoaW5nIGVsc2UgaXMgZm91bmQuCisgICAgICAgICBwYXRocyA9IHsKKy0gICAgICAgICAgICBrOiB2IGZvciBrLCB2IGluIHNlbGYuUEFUSFMuaXRlcml0ZW1zKCkKKysgICAgICAgICAgICBrOiB2IGZvciBrLCB2IGluIHNlbGYuUEFUSFMuaXRlbXMoKQorICAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUoaykgbm90IGluICgnY2wnLCAnY2xhbmctY2wnLCAnZ2NjJykKKyAgICAgICAgIH0KKyAgICAgICAgIHNlbGYuZG9fdG9vbGNoYWluX3Rlc3QocGF0aHMsIHsKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF90b29sY2hhaW5faGVscGVycy5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X3Rvb2xjaGFpbl9oZWxwZXJzLnB5CitpbmRleCA4ZWMzM2E4YjcuLmJhMDQ2ZWQxMiAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X3Rvb2xjaGFpbl9oZWxwZXJzLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF90b29sY2hhaW5faGVscGVycy5weQorQEAgLTIsNyArMiw3IEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbiwgdW5pY29kZV9saXRlcmFscworKworIAorIGltcG9ydCBjb3B5CisgaW1wb3J0IHJlCitAQCAtMTAsNyArMTAsNyBAQCBpbXBvcnQgdHlwZXMKKyBpbXBvcnQgdW5pdHRlc3QKKyAKKyBmcm9tIGZubWF0Y2ggaW1wb3J0IGZubWF0Y2gKKy1mcm9tIFN0cmluZ0lPIGltcG9ydCBTdHJpbmdJTworK2Zyb20gaW8gaW1wb3J0IFN0cmluZ0lPCisgZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZGVkZW50CisgCisgZnJvbSBtb3p1bml0IGltcG9ydCAoCitAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBDb21waWxlclByZXByb2Nlc3NvcihQcmVwcm9jZXNzb3IpOgorICAgICAgICAgIyBIYWNrIGFyb3VuZCBpdCBlbm91Z2ggdGhhdCB0aGUgY29uZmlndXJlIHRlc3RzIHdvcmsgcHJvcGVybHkuCisgICAgICAgICBjb250ZXh0ID0gc2VsZi5jb250ZXh0CisgICAgICAgICBkZWYgbm9ybWFsaXplX251bWJlcnModmFsdWUpOgorLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHR5cGVzLlN0cmluZ1R5cGVzKToKKysgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCAoc3RyLCkpOgorICAgICAgICAgICAgICAgICBpZiB2YWx1ZVstMTpdID09ICdMJyBhbmQgdmFsdWVbOi0xXS5pc2RpZ2l0KCk6CisgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGludCh2YWx1ZVs6LTFdKQorICAgICAgICAgICAgIHJldHVybiB2YWx1ZQorQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgQ29tcGlsZXJQcmVwcm9jZXNzb3IoUHJlcHJvY2Vzc29yKToKKyAgICAgICAgICAgICByZXR1cm4gc2VsZi5IQVNfRkVBVFVSRS5zdWIocidcMVwyJywgZXhwcikKKyAgICAgICAgIHNlbGYuY29udGV4dCA9IHNlbGYuQ29udGV4dCgKKyAgICAgICAgICAgICAobm9ybWFsaXplX2hhc19mZWF0dXJlKGspLCBub3JtYWxpemVfbnVtYmVycyh2KSkKKy0gICAgICAgICAgICBmb3IgaywgdiBpbiBjb250ZXh0Lml0ZXJpdGVtcygpCisrICAgICAgICAgICAgZm9yIGssIHYgaW4gY29udGV4dC5pdGVtcygpCisgICAgICAgICApCisgICAgICAgICB0cnk6CisgICAgICAgICAgICAgcmV0dXJuIFByZXByb2Nlc3Nvci5kb19pZihzZWxmLCBub3JtYWxpemVfaGFzX2ZlYXR1cmUoZXhwcmVzc2lvbiksCitAQCAtOTUsNyArOTUsNyBAQCBjbGFzcyBUZXN0Q29tcGlsZXJQcmVwcm9jZXNzb3IodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgaW5wdXQubmFtZSA9ICdmb28nCisgICAgICAgICBwcC5kb19pbmNsdWRlKGlucHV0KQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHAub3V0LmdldHZhbHVlKCksICcxIC4gMiAuIGMgIkQiJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHAub3V0LmdldHZhbHVlKCksICcxIC4gMiAuIGMgIkQiJykKKyAKKyAgICAgZGVmIHRlc3RfY29uZGl0aW9uKHNlbGYpOgorICAgICAgICAgcHAgPSBDb21waWxlclByZXByb2Nlc3Nvcih7CitAQCAtMTI1LDcgKzEyNSw3IEBAIGNsYXNzIFRlc3RDb21waWxlclByZXByb2Nlc3Nvcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBpbnB1dC5uYW1lID0gJ2ZvbycKKyAgICAgICAgIHBwLmRvX2luY2x1ZGUoaW5wdXQpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnSUZERUZfQVxuSUZfQVxuSUZfQlxuSUZfTk9UX0NcbicsIHBwLm91dC5nZXR2YWx1ZSgpKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSUZERUZfQVxuSUZfQVxuSUZfQlxuSUZfTk9UX0NcbicsIHBwLm91dC5nZXR2YWx1ZSgpKQorIAorIAorIGNsYXNzIEZha2VDb21waWxlcihkaWN0KToKK0BAIC0xNjQsOSArMTY0LDkgQEAgY2xhc3MgRmFrZUNvbXBpbGVyKGRpY3QpOgorICAgICAnJycKKyAgICAgZGVmIF9faW5pdF9fKHNlbGYsICpkZWZpbml0aW9ucyk6CisgICAgICAgICBmb3IgZGVmaW5pdGlvbiBpbiBkZWZpbml0aW9uczoKKy0gICAgICAgICAgICBpZiBhbGwobm90IGlzaW5zdGFuY2UoZCwgZGljdCkgZm9yIGQgaW4gZGVmaW5pdGlvbi5pdGVydmFsdWVzKCkpOgorKyAgICAgICAgICAgIGlmIGFsbChub3QgaXNpbnN0YW5jZShkLCBkaWN0KSBmb3IgZCBpbiBkZWZpbml0aW9uLnZhbHVlcygpKToKKyAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbiA9IHtOb25lOiBkZWZpbml0aW9ufQorLSAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGRlZmluaXRpb24uaXRlcml0ZW1zKCk6CisrICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gZGVmaW5pdGlvbi5pdGVtcygpOgorICAgICAgICAgICAgICAgICBzZWxmLnNldGRlZmF1bHQoa2V5LCB7fSkudXBkYXRlKHZhbHVlKQorIAorICAgICBkZWYgX19jYWxsX18oc2VsZiwgc3RkaW4sIGFyZ3MpOgorQEAgLTE3OCwxNCArMTc4LDE0IEBAIGNsYXNzIEZha2VDb21waWxlcihkaWN0KToKKyAgICAgICAgICAgICBwcCA9IENvbXBpbGVyUHJlcHJvY2Vzc29yKHNlbGZbTm9uZV0pCisgCisgICAgICAgICAgICAgZGVmIGFwcGx5X2RlZm4oZGVmbik6CistICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIGRlZm4uaXRlcml0ZW1zKCk6CisrICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIGRlZm4uaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAgIGlmIHYgaXMgRmFsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgaWYgayBpbiBwcC5jb250ZXh0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWwgcHAuY29udGV4dFtrXQorICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICBwcC5jb250ZXh0W2tdID0gdgorIAorLSAgICAgICAgICAgIGZvciBnbG9iLCBkZWZuIGluIHNlbGYuaXRlcml0ZW1zKCk6CisrICAgICAgICAgICAgZm9yIGdsb2IsIGRlZm4gaW4gc2VsZi5pdGVtcygpOgorICAgICAgICAgICAgICAgICBpZiBnbG9iIGFuZCBub3QgZ2xvYi5zdGFydHN3aXRoKCctJykgYW5kIGZubWF0Y2goZmlsZSwgZ2xvYik6CisgICAgICAgICAgICAgICAgICAgICBhcHBseV9kZWZuKGRlZm4pCisgCitAQCAtMjE2LDcgKzIxNiw3IEBAIGNsYXNzIFRlc3RGYWtlQ29tcGlsZXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgICAnQSc6ICcxJywKKyAgICAgICAgICAgICAgICAgJ0InOiAnMicsCisgICAgICAgICAgICAgfSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21waWxlcihOb25lLCBbJy1FJywgJ2ZpbGUnXSksCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21waWxlcihOb25lLCBbJy1FJywgJ2ZpbGUnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAsICcxIDIgQycsICcnKSkKKyAKKyAgICAgICAgICAgICBjb21waWxlciA9IEZha2VDb21waWxlcih7CitAQCAtMjM4LDI1ICsyMzgsMjUgQEAgY2xhc3MgVGVzdEZha2VDb21waWxlcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgICAgICAgICAnQic6ICc0MicsCisgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgfSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21waWxlcihOb25lLCBbJy1FJywgJ2ZpbGUnXSksCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21waWxlcihOb25lLCBbJy1FJywgJ2ZpbGUnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAsICcxIDIgQycsICcnKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21waWxlcihOb25lLCBbJy1FJywgJy1mb28nLCAnZmlsZSddKSwKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBpbGVyKE5vbmUsIFsnLUUnLCAnLWZvbycsICdmaWxlJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLCAnMSAyIGZvbycsICcnKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21waWxlcihOb25lLCBbJy1FJywgJy1iYXInLCAnZmlsZSddKSwKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBpbGVyKE5vbmUsIFsnLUUnLCAnLWJhcicsICdmaWxlJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLCAnMSBiYXIgYmFyJywgJycpKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbXBpbGVyKE5vbmUsIFsnLUUnLCAnLXF1eCcsICdmaWxlJ10pLAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGlsZXIoTm9uZSwgWyctRScsICctcXV4JywgJ2ZpbGUnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAsICcxIEIgQycsICcnKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21waWxlcihOb25lLCBbJy1FJywgJy1mb28nLCAnLWJhcicsICdmaWxlJ10pLAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGlsZXIoTm9uZSwgWyctRScsICctZm9vJywgJy1iYXInLCAnZmlsZSddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgJzEgYmFyIGJhcicsICcnKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21waWxlcihOb25lLCBbJy1FJywgJy1iYXInLCAnLWZvbycsICdmaWxlJ10pLAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGlsZXIoTm9uZSwgWyctRScsICctYmFyJywgJy1mb28nLCAnZmlsZSddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgJzEgYmFyIGZvbycsICcnKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21waWxlcihOb25lLCBbJy1FJywgJy1iYXInLCAnLXF1eCcsICdmaWxlJ10pLAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGlsZXIoTm9uZSwgWyctRScsICctYmFyJywgJy1xdXgnLCAnZmlsZSddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgJzEgQiBiYXInLCAnJykpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29tcGlsZXIoTm9uZSwgWyctRScsICctcXV4JywgJy1iYXInLCAnZmlsZSddKSwKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBpbGVyKE5vbmUsIFsnLUUnLCAnLXF1eCcsICctYmFyJywgJ2ZpbGUnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAsICcxIGJhciBiYXInLCAnJykpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29tcGlsZXIoTm9uZSwgWyctRScsICdmaWxlLmMnXSksCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21waWxlcihOb25lLCBbJy1FJywgJ2ZpbGUuYyddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgJzEgNDIgQycsICcnKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21waWxlcihOb25lLCBbJy1FJywgJy1iYXInLCAnZmlsZS5jJ10pLAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGlsZXIoTm9uZSwgWyctRScsICctYmFyJywgJ2ZpbGUuYyddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgJzEgYmFyIGJhcicsICcnKSkKKyAKKyAgICAgZGVmIHRlc3RfbXVsdGlwbGVfZGVmaW5pdGlvbnMoc2VsZik6CitAQCAtMjY3LDcgKzI2Nyw3IEBAIGNsYXNzIFRlc3RGYWtlQ29tcGlsZXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICdDJzogMywKKyAgICAgICAgIH0pCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21waWxlciwgeworKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21waWxlciwgeworICAgICAgICAgICAgIE5vbmU6IHsKKyAgICAgICAgICAgICAgICAgJ0EnOiAxLAorICAgICAgICAgICAgICAgICAnQic6IDIsCitAQCAtMjgyLDcgKzI4Miw3IEBAIGNsYXNzIFRlc3RGYWtlQ29tcGlsZXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICdDJzogMywKKyAgICAgICAgIH0pCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21waWxlciwgeworKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21waWxlciwgeworICAgICAgICAgICAgIE5vbmU6IHsKKyAgICAgICAgICAgICAgICAgJ0EnOiAxLAorICAgICAgICAgICAgICAgICAnQic6IDQsCitAQCAtMzAyLDcgKzMwMiw3IEBAIGNsYXNzIFRlc3RGYWtlQ29tcGlsZXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIH0sCisgICAgICAgICB9KQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29tcGlsZXIsIHsKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGlsZXIsIHsKKyAgICAgICAgICAgICBOb25lOiB7CisgICAgICAgICAgICAgICAgICdBJzogMSwKKyAgICAgICAgICAgICAgICAgJ0InOiA0LAorQEAgLTMzMCw3ICszMzAsNyBAQCBjbGFzcyBUZXN0RmFrZUNvbXBpbGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICB9LAorICAgICAgICAgfSkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbXBpbGVyLCB7CisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBpbGVyLCB7CisgICAgICAgICAgICAgTm9uZTogeworICAgICAgICAgICAgICAgICAnQSc6IDEsCisgICAgICAgICAgICAgICAgICdCJzogMiwKK0BAIC0zNzAsNyArMzcwLDcgQEAgY2xhc3MgQ29tcGlsZXJSZXN1bHQoUmVhZE9ubHlOYW1lc3BhY2UpOgorICAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShvdGhlciwgZGljdCkKKyAgICAgICAgIHJlc3VsdCA9IGNvcHkuZGVlcGNvcHkoc2VsZi5fX2RpY3RfXykKKy0gICAgICAgIGZvciBrLCB2IGluIG90aGVyLml0ZXJpdGVtcygpOgorKyAgICAgICAgZm9yIGssIHYgaW4gb3RoZXIuaXRlbXMoKToKKyAgICAgICAgICAgICBpZiBrID09ICdmbGFncyc6CisgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRkZWZhdWx0KGssIFtdKS5leHRlbmQodikKKyAgICAgICAgICAgICBlbHNlOgorQEAgLTM4MSw3ICszODEsNyBAQCBjbGFzcyBDb21waWxlclJlc3VsdChSZWFkT25seU5hbWVzcGFjZSk6CisgY2xhc3MgVGVzdENvbXBpbGVyUmVzdWx0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgZGVmIHRlc3RfY29tcGlsZXJfcmVzdWx0KHNlbGYpOgorICAgICAgICAgcmVzdWx0ID0gQ29tcGlsZXJSZXN1bHQoKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzdWx0Ll9fZGljdF9fLCB7CisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5fX2RpY3RfXywgeworICAgICAgICAgICAgICd3cmFwcGVyJzogW10sCisgICAgICAgICAgICAgJ2NvbXBpbGVyJzogbW96cGF0aC5hYnNwYXRoKCcnKSwKKyAgICAgICAgICAgICAndmVyc2lvbic6ICcnLAorQEAgLTM5Nyw3ICszOTcsNyBAQCBjbGFzcyBUZXN0Q29tcGlsZXJSZXN1bHQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIGxhbmd1YWdlPSdDJywKKyAgICAgICAgICAgICBmbGFncz1bJy1zdGQ9Z251OTknXSwKKyAgICAgICAgICkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3VsdC5fX2RpY3RfXywgeworKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuX19kaWN0X18sIHsKKyAgICAgICAgICAgICAnd3JhcHBlcic6IFtdLAorICAgICAgICAgICAgICdjb21waWxlcic6IG1venBhdGguYWJzcGF0aCgnL3Vzci9iaW4vZ2NjJyksCisgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnNC4yLjEnLAorQEAgLTQwNyw3ICs0MDcsNyBAQCBjbGFzcyBUZXN0Q29tcGlsZXJSZXN1bHQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgfSkKKyAKKyAgICAgICAgIHJlc3VsdDIgPSByZXN1bHQgKyB7J2ZsYWdzJzogWyctbTMyJ119CistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN1bHQyLl9fZGljdF9fLCB7CisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdDIuX19kaWN0X18sIHsKKyAgICAgICAgICAgICAnd3JhcHBlcic6IFtdLAorICAgICAgICAgICAgICdjb21waWxlcic6IG1venBhdGguYWJzcGF0aCgnL3Vzci9iaW4vZ2NjJyksCisgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnNC4yLjEnLAorQEAgLTQxNiwxNCArNDE2LDE0IEBAIGNsYXNzIFRlc3RDb21waWxlclJlc3VsdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJ2ZsYWdzJzogWyctc3RkPWdudTk5JywgJy1tMzInXSwKKyAgICAgICAgIH0pCisgICAgICAgICAjIE9yaWdpbmFsIGZsYWdzIGFyZSB1bnRvdWNoZWQuCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN1bHQuZmxhZ3MsIFsnLXN0ZD1nbnU5OSddKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuZmxhZ3MsIFsnLXN0ZD1nbnU5OSddKQorIAorICAgICAgICAgcmVzdWx0MyA9IHJlc3VsdCArIHsKKyAgICAgICAgICAgICAnY29tcGlsZXInOiAnL3Vzci9iaW4vZ2NjLTQuNycsCisgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnNC43LjMnLAorICAgICAgICAgICAgICdmbGFncyc6IFsnLW0zMiddLAorICAgICAgICAgfQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzdWx0My5fX2RpY3RfXywgeworKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQzLl9fZGljdF9fLCB7CisgICAgICAgICAgICAgJ3dyYXBwZXInOiBbXSwKKyAgICAgICAgICAgICAnY29tcGlsZXInOiBtb3pwYXRoLmFic3BhdGgoJy91c3IvYmluL2djYy00LjcnKSwKKyAgICAgICAgICAgICAndmVyc2lvbic6ICc0LjcuMycsCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfdG9vbGtpdF9tb3pfY29uZmlndXJlLnB5IGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfdG9vbGtpdF9tb3pfY29uZmlndXJlLnB5CitpbmRleCBhYzM1ZDc0NWYuLmNkZDhlY2UxYiAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X3Rvb2xraXRfbW96X2NvbmZpZ3VyZS5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfdG9vbGtpdF9tb3pfY29uZmlndXJlLnB5CitAQCAtMiw3ICsyLDcgQEAKKyAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKKyAjIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCisgCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uLCB1bmljb2RlX2xpdGVyYWxzCisrCisgCisgaW1wb3J0IG9zCisgCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfdXRpbC5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X3V0aWwucHkKK2luZGV4IDlmOTU3NWZkMC4uYzJkYjFhNjI4IDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfdXRpbC5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfdXRpbC5weQorQEAgLTIsNyArMiw3IEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbiwgdW5pY29kZV9saXRlcmFscworKworIAorIGltcG9ydCBsb2dnaW5nCisgaW1wb3J0IG9zCitAQCAtMTEsNyArMTEsNyBAQCBpbXBvcnQgdGV4dHdyYXAKKyBpbXBvcnQgdW5pdHRlc3QKKyBpbXBvcnQgc3lzCisgCistZnJvbSBTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KKytmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworIAorIGZyb20gbW96dW5pdCBpbXBvcnQgbWFpbgorIGZyb20gbW96cGFjayBpbXBvcnQgcGF0aCBhcyBtb3pwYXRoCitAQCAtNDM0LDExICs0MzQsMTEgQEAgY2xhc3MgVGVzdExvZ1N1YnByb2Nlc3NPdXRwdXQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQgYXMgZToKKyAgICAgICAgICAgICBzdGF0dXMgPSBlLmNvZGUKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHN0YXR1cywgMCkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwKQorICAgICAgICAgcXVvdGVfY2hhciA9ICInIgorICAgICAgICAgaWYgZ2V0cHJlZmVycmVkZW5jb2RpbmcoKS5sb3dlcigpID09ICd1dGYtOCc6CisgICAgICAgICAgICAgcXVvdGVfY2hhciA9ICdcdTAwQjQnLmVuY29kZSgndXRmLTgnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3V0LmdldHZhbHVlKCkuc3RyaXAoKSwgcXVvdGVfY2hhcikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LmdldHZhbHVlKCkuc3RyaXAoKSwgcXVvdGVfY2hhcikKKyAKKyAKKyBjbGFzcyBUZXN0VmVyc2lvbih1bml0dGVzdC5UZXN0Q2FzZSk6CitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3RpbmcucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdGluZy5weQoraW5kZXggMzIyOWMzZjc3Li44MmQyNTBmYWIgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdGluZy5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3RpbmcucHkKK0BAIC0yLDkgKzIsOSBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgdW5pY29kZV9saXRlcmFscworIAorLWltcG9ydCBjUGlja2xlIGFzIHBpY2tsZQorKworK2ltcG9ydCBwaWNrbGUgYXMgcGlja2xlCisgaW1wb3J0IG9zCisgaW1wb3J0IHN5cworIAorQEAgLTcwLDcgKzcwLDcgQEAgUkVGVEVTVF9GTEFWT1JTID0gKCdjcmFzaHRlc3QnLCAncmVmdGVzdCcpCisgV0VCX1BMQVRGT1JNX1RFU1RTX0ZMQVZPUlMgPSAoJ3dlYi1wbGF0Zm9ybS10ZXN0cycsKQorIAorIGRlZiBhbGxfdGVzdF9mbGF2b3JzKCk6CistICAgIHJldHVybiAoW3ZbMF0gZm9yIHYgaW4gVEVTVF9NQU5JRkVTVFMudmFsdWVzKCldICsKKysgICAgcmV0dXJuIChbdlswXSBmb3IgdiBpbiBsaXN0KFRFU1RfTUFOSUZFU1RTLnZhbHVlcygpKV0gKworICAgICAgICAgICAgIGxpc3QoUkVGVEVTVF9GTEFWT1JTKSArCisgICAgICAgICAgICAgbGlzdChXRUJfUExBVEZPUk1fVEVTVFNfRkxBVk9SUykpCisgCitAQCAtMjEwLDcgKzIxMCw3IEBAIGRlZiBpbnN0YWxsX3Rlc3RfZmlsZXModG9wc3JjZGlyLCB0b3BvYmpkaXIsIHRlc3RzX3Jvb3QsIHRlc3Rfb2Jqcyk6CisgICAgIG9ubHkgYSBmZXcgdGVzdHMgbmVlZCB0byBiZSBydW4uCisgICAgICIiIgorICAgICBmbGF2b3JfaW5mbyA9IHtmbGF2b3I6IChyb290LCBwcmVmaXgsIGluc3RhbGwpCistICAgICAgICAgICAgICAgICAgIGZvciAoZmxhdm9yLCByb290LCBwcmVmaXgsIGluc3RhbGwpIGluIFRFU1RfTUFOSUZFU1RTLnZhbHVlcygpfQorKyAgICAgICAgICAgICAgICAgICBmb3IgKGZsYXZvciwgcm9vdCwgcHJlZml4LCBpbnN0YWxsKSBpbiBsaXN0KFRFU1RfTUFOSUZFU1RTLnZhbHVlcygpKX0KKyAgICAgb2JqZGlyX2Rlc3QgPSBtb3pwYXRoLmpvaW4odG9wb2JqZGlyLCB0ZXN0c19yb290KQorIAorICAgICBjb252ZXJ0ZXIgPSBTdXBwb3J0RmlsZXNDb252ZXJ0ZXIoKQorQEAgLTI5Miw3ICsyOTIsNyBAQCBkZWYgcmVhZF93cHRfbWFuaWZlc3QoY29udGV4dCwgcGF0aHMpOgorICAgICAgICAgcGF0aHNfZmlsZSA9IG9zLnBhdGguam9pbihjb250ZXh0LmNvbmZpZy50b3BzcmNkaXIsICJ0ZXN0aW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndlYi1wbGF0Zm9ybSIsICJ0ZXN0cyIsICJ0b29scyIsICJsb2NhbHBhdGhzLnB5IikKKyAgICAgICAgIF9nbG9iYWxzID0geyJfX2ZpbGVfXyI6IHBhdGhzX2ZpbGV9CistICAgICAgICBleGVjZmlsZShwYXRoc19maWxlLCBfZ2xvYmFscykKKysgICAgICAgIGV4ZWMoY29tcGlsZShvcGVuKHBhdGhzX2ZpbGUsICJyYiIpLnJlYWQoKSwgcGF0aHNfZmlsZSwgJ2V4ZWMnKSwgX2dsb2JhbHMpCisgICAgICAgICBpbXBvcnQgbWFuaWZlc3QgYXMgd3B0bWFuaWZlc3QKKyAgICAgZmluYWxseToKKyAgICAgICAgIHN5cy5wYXRoID0gb2xkX3BhdGgKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdXRpbC5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC91dGlsLnB5CitpbmRleCA0ZWEyMjdkYzAuLjc5Y2IxNTcxMyAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC91dGlsLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdXRpbC5weQorQEAgLTUsNyArNSw3IEBACisgIyBUaGlzIGZpbGUgY29udGFpbnMgbWlzY2VsbGFuZW91cyB1dGlsaXR5IGZ1bmN0aW9ucyB0aGF0IGRvbid0IGJlbG9uZyBhbnl3aGVyZQorICMgaW4gcGFydGljdWxhci4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgdW5pY29kZV9saXRlcmFscywgcHJpbnRfZnVuY3Rpb24KKysKKyAKKyBpbXBvcnQgYXJncGFyc2UKKyBpbXBvcnQgY29sbGVjdGlvbnMKK0BAIC0yMSw2ICsyMSw5IEBAIGltcG9ydCBzdGF0CisgaW1wb3J0IHN5cworIGltcG9ydCB0aW1lCisgaW1wb3J0IHR5cGVzCisraW1wb3J0IHBwcmludAorK2ltcG9ydCBzaXgKKytpbXBvcnQgc3VicHJvY2VzcworIAorIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0ICgKKyAgICAgZGVmYXVsdGRpY3QsCitAQCAtMzYsNyArMzksNyBAQCBmcm9tIGlvIGltcG9ydCAoCisgaWYgc3lzLnZlcnNpb25faW5mb1swXSA9PSAzOgorICAgICBzdHJfdHlwZSA9IHN0cgorIGVsc2U6CistICAgIHN0cl90eXBlID0gYmFzZXN0cmluZworKyAgICBzdHJfdHlwZSA9IHN0cgorIAorIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICBfa2VybmVsMzIgPSBjdHlwZXMud2luZGxsLmtlcm5lbDMyCitAQCAtNzgsNyArODEsNyBAQCBkZWYgaGFzaF9maWxlKHBhdGgsIGhhc2hlcj1Ob25lKToKKyAgICAgcmV0dXJuIGguaGV4ZGlnZXN0KCkKKyAKKyAKKy1jbGFzcyBFbXB0eVZhbHVlKHVuaWNvZGUpOgorK2NsYXNzIEVtcHR5VmFsdWUoc3RyKToKKyAgICAgIiIiQSBkdW1teSB0eXBlIHRoYXQgYmVoYXZlcyBsaWtlIGFuIGVtcHR5IHN0cmluZyBhbmQgc2VxdWVuY2UuCisgCisgICAgIFRoaXMgdHlwZSBleGlzdHMgaW4gb3JkZXIgdG8gc3VwcG9ydAorQEAgLTkyLDcgKzk1LDcgQEAgY2xhc3MgRW1wdHlWYWx1ZSh1bmljb2RlKToKKyBjbGFzcyBSZWFkT25seU5hbWVzcGFjZShvYmplY3QpOgorICAgICAiIiJBIGNsYXNzIGZvciBvYmplY3RzIHdpdGggaW1tdXRhYmxlIGF0dHJpYnV0ZXMgc2V0IGF0IGluaXRpYWxpemF0aW9uLiIiIgorICAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgorLSAgICAgICAgZm9yIGssIHYgaW4ga3dhcmdzLml0ZXJpdGVtcygpOgorKyAgICAgICAgZm9yIGssIHYgaW4ga3dhcmdzLml0ZW1zKCk6CisgICAgICAgICAgICAgc3VwZXIoUmVhZE9ubHlOYW1lc3BhY2UsIHNlbGYpLl9fc2V0YXR0cl9fKGssIHYpCisgCisgICAgIGRlZiBfX2RlbGF0dHJfXyhzZWxmLCBrZXkpOgorQEAgLTIyNCw3ICsyMjcsNyBAQCBjbGFzcyBGaWxlQXZvaWRXcml0ZShCeXRlc0lPKToKKyAgICAgICAgIHNlbGYubW9kZSA9IG1vZGUKKyAKKyAgICAgZGVmIHdyaXRlKHNlbGYsIGJ1Zik6CistICAgICAgICBpZiBpc2luc3RhbmNlKGJ1ZiwgdW5pY29kZSk6CisrICAgICAgICBpZiBpc2luc3RhbmNlKGJ1Ziwgc3RyKToKKyAgICAgICAgICAgICBidWYgPSBidWYuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgICBCeXRlc0lPLndyaXRlKHNlbGYsIGJ1ZikKKyAKK0BAIC0yNjcsNiArMjcwLDEwIEBAIGNsYXNzIEZpbGVBdm9pZFdyaXRlKEJ5dGVzSU8pOgorICAgICAgICAgICAgIGlmICdiJyBpbiBzZWxmLm1vZGU6CisgICAgICAgICAgICAgICAgIHdyaXRlbW9kZSArPSAnYicKKyAgICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5uYW1lLCB3cml0ZW1vZGUpIGFzIGZpbGU6CisrICAgICAgICAgICAgICAgIGlmICdiJyBpbiBzZWxmLm1vZGUgYW5kIGlzaW5zdGFuY2UoYnVmLCBzdHIpOgorKyAgICAgICAgICAgICAgICAgICAgYnVmID0gYnVmLmVuY29kZSgndXRmLTgnKQorKyAgICAgICAgICAgICAgICBlbGlmICdiJyBub3QgaW4gc2VsZi5tb2RlIGFuZCBpc2luc3RhbmNlKGJ1ZiwgYnl0ZXMpOgorKyAgICAgICAgICAgICAgICAgICAgYnVmID0gYnVmLmRlY29kZSgndXRmLTgnKQorICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKGJ1ZikKKyAKKyAgICAgICAgIGlmIHNlbGYuX2NhcHR1cmVfZGlmZjoKK0BAIC0zODEsNyArMzg4LDcgQEAgY2xhc3MgTGlzdE1peGluKG9iamVjdCk6CisgICAgIGRlZiBfX2FkZF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICMgQWxsb3cgTm9uZSBhbmQgRW1wdHlWYWx1ZSBpcyBhIHNwZWNpYWwgY2FzZSBiZWNhdXNlIGl0IG1ha2VzIHVuZGVmaW5lZAorICAgICAgICAgIyB2YXJpYWJsZSByZWZlcmVuY2VzIGluIG1vei5idWlsZCBiZWhhdmUgYmV0dGVyLgorLSAgICAgICAgb3RoZXIgPSBbXSBpZiBpc2luc3RhbmNlKG90aGVyLCAodHlwZXMuTm9uZVR5cGUsIEVtcHR5VmFsdWUpKSBlbHNlIG90aGVyCisrICAgICAgICBvdGhlciA9IFtdIGlmIGlzaW5zdGFuY2Uob3RoZXIsICh0eXBlKE5vbmUpLCBFbXB0eVZhbHVlKSkgZWxzZSBvdGhlcgorICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIGxpc3QpOgorICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ09ubHkgbGlzdHMgY2FuIGJlIGFwcGVuZGVkIHRvIGxpc3RzLicpCisgCitAQCAtMzkwLDcgKzM5Nyw3IEBAIGNsYXNzIExpc3RNaXhpbihvYmplY3QpOgorICAgICAgICAgcmV0dXJuIG5ld19saXN0CisgCisgICAgIGRlZiBfX2lhZGRfXyhzZWxmLCBvdGhlcik6CistICAgICAgICBvdGhlciA9IFtdIGlmIGlzaW5zdGFuY2Uob3RoZXIsICh0eXBlcy5Ob25lVHlwZSwgRW1wdHlWYWx1ZSkpIGVsc2Ugb3RoZXIKKysgICAgICAgIG90aGVyID0gW10gaWYgaXNpbnN0YW5jZShvdGhlciwgKHR5cGUoTm9uZSksIEVtcHR5VmFsdWUpKSBlbHNlIG90aGVyCisgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgbGlzdCk6CisgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignT25seSBsaXN0cyBjYW4gYmUgYXBwZW5kZWQgdG8gbGlzdHMuJykKKyAKK0BAIC01NjEsMTQgKzU2OCwxNCBAQCBkZWYgRmxhZ3NGYWN0b3J5KGZsYWdzKToKKyAgICAgZnVuY3Rpb25zIGJlbG93LgorICAgICAiIiIKKyAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZmxhZ3MsIGRpY3QpCistICAgIGFzc2VydCBhbGwoaXNpbnN0YW5jZSh2LCB0eXBlKSBmb3IgdiBpbiBmbGFncy52YWx1ZXMoKSkKKysgICAgYXNzZXJ0IGFsbChpc2luc3RhbmNlKHYsIHR5cGUpIGZvciB2IGluIGxpc3QoZmxhZ3MudmFsdWVzKCkpKQorIAorICAgICBjbGFzcyBGbGFncyhvYmplY3QpOgorLSAgICAgICAgX19zbG90c19fID0gZmxhZ3Mua2V5cygpCisrICAgICAgICBfX3Nsb3RzX18gPSBsaXN0KGZsYWdzLmtleXMoKSkKKyAgICAgICAgIF9mbGFncyA9IGZsYWdzCisgCisgICAgICAgICBkZWYgdXBkYXRlKHNlbGYsICoqa3dhcmdzKToKKy0gICAgICAgICAgICBmb3IgaywgdiBpbiBrd2FyZ3MuaXRlcml0ZW1zKCk6CisrICAgICAgICAgICAgZm9yIGssIHYgaW4ga3dhcmdzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwgaywgdikKKyAKKyAgICAgICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKK0BAIC0xMDA2LDggKzEwMTMsNiBAQCBkZWYgVHlwZWROYW1lZFR1cGxlKG5hbWUsIGZpZWxkcyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dvdCAlcywgZXhwZWN0ZWQgJXMnICUgKGZuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUodmFsdWUpLCBmdHlwZSkpCisgCistICAgICAgICAgICAgc3VwZXIoVHlwZWRUdXBsZSwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorLQorICAgICBUeXBlZFR1cGxlLl9maWVsZHMgPSBmaWVsZHMKKyAKKyAgICAgcmV0dXJuIFR5cGVkVHVwbGUKK0BAIC0xMDk5LDE0ICsxMTA0LDE0IEBAIGRlZiBncm91cF91bmlmaWVkX2ZpbGVzKGZpbGVzLCB1bmlmaWVkX3ByZWZpeCwgdW5pZmllZF9zdWZmaXgsCisgICAgICMgaXNzdWUuICBTbyB3ZSBkbyBhIGxpdHRsZSBkYW5jZSB0byBmaWx0ZXIgaXQgb3V0IG91cnNlbHZlcy4KKyAgICAgZHVtbXlfZmlsbF92YWx1ZSA9ICgiZHVtbXkiLCkKKyAgICAgZGVmIGZpbHRlcl9vdXRfZHVtbXkoaXRlcmFibGUpOgorLSAgICAgICAgcmV0dXJuIGl0ZXJ0b29scy5pZmlsdGVyKGxhbWJkYSB4OiB4ICE9IGR1bW15X2ZpbGxfdmFsdWUsCisrICAgICAgICByZXR1cm4gZmlsdGVyKGxhbWJkYSB4OiB4ICE9IGR1bW15X2ZpbGxfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmFibGUpCisgCisgICAgICMgRnJvbSB0aGUgaXRlcnRvb2xzIGRvY3VtZW50YXRpb24sIHNsaWdodGx5IG1vZGlmaWVkOgorICAgICBkZWYgZ3JvdXBlcihuLCBpdGVyYWJsZSk6CisgICAgICAgICAiZ3JvdXBlcigzLCAnQUJDREVGRycsICd4JykgLS0+IEFCQyBERUYgR3h4IgorICAgICAgICAgYXJncyA9IFtpdGVyKGl0ZXJhYmxlKV0gKiBuCistICAgICAgICByZXR1cm4gaXRlcnRvb2xzLml6aXBfbG9uZ2VzdChmaWxsdmFsdWU9ZHVtbXlfZmlsbF92YWx1ZSwgKmFyZ3MpCisrICAgICAgICByZXR1cm4gaXRlcnRvb2xzLnppcF9sb25nZXN0KGZpbGx2YWx1ZT1kdW1teV9maWxsX3ZhbHVlLCAqYXJncykKKyAKKyAgICAgZm9yIGksIHVuaWZpZWRfZ3JvdXAgaW4gZW51bWVyYXRlKGdyb3VwZXIoZmlsZXNfcGVyX3VuaWZpZWRfZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMpKToKK0BAIC0xMTIzLDcgKzExMjgsNyBAQCBkZWYgcGFpcihpdGVyYWJsZSk6CisgICAgICAgICBbKDEsMiksICgzLDQpLCAoNSw2KV0KKyAgICAgJycnCisgICAgIGkgPSBpdGVyKGl0ZXJhYmxlKQorLSAgICByZXR1cm4gaXRlcnRvb2xzLml6aXBfbG9uZ2VzdChpLCBpKQorKyAgICByZXR1cm4gaXRlcnRvb2xzLnppcF9sb25nZXN0KGksIGkpCisgCisgCisgVkFSSUFCTEVTX1JFID0gcmUuY29tcGlsZSgnXCRcKChcdyspXCknKQorQEAgLTExNDEsNyArMTE0Niw3IEBAIGRlZiBleHBhbmRfdmFyaWFibGVzKHMsIHZhcmlhYmxlcyk6CisgICAgICAgICB2YWx1ZSA9IHZhcmlhYmxlcy5nZXQobmFtZSkKKyAgICAgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgICAgICBjb250aW51ZQorLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHR5cGVzLlN0cmluZ1R5cGVzKToKKysgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCAoc3RyLCkpOgorICAgICAgICAgICAgIHZhbHVlID0gJyAnLmpvaW4odmFsdWUpCisgICAgICAgICByZXN1bHQgKz0gdmFsdWUKKyAgICAgcmV0dXJuIHJlc3VsdAorQEAgLTExNjgsNyArMTE3Myw3IEBAIGNsYXNzIEVudW1TdHJpbmdDb21wYXJpc29uRXJyb3IoRXhjZXB0aW9uKToKKyAgICAgcGFzcworIAorIAorLWNsYXNzIEVudW1TdHJpbmcodW5pY29kZSk6CisrY2xhc3MgRW51bVN0cmluZyhzdHIpOgorICAgICAnJydBIHN0cmluZyB0eXBlIHRoYXQgb25seSBjYW4gaGF2ZSBhIGxpbWl0ZWQgc2V0IG9mIHZhbHVlcywgc2ltaWxhcmx5IHRvCisgICAgIGFuIEVudW0sIGFuZCBjYW4gb25seSBiZSBjb21wYXJlZCBhZ2FpbnN0IHRoYXQgc2V0IG9mIHZhbHVlcy4KKyAKK0BAIC0xMTg1LDggKzExOTAsOCBAQCBjbGFzcyBFbnVtU3RyaW5nKHVuaWNvZGUpOgorICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgIGlmIG90aGVyIG5vdCBpbiBzZWxmLlBPU1NJQkxFX1ZBTFVFUzoKKyAgICAgICAgICAgICByYWlzZSBFbnVtU3RyaW5nQ29tcGFyaXNvbkVycm9yKAorLSAgICAgICAgICAgICAgICAnQ2FuIG9ubHkgY29tcGFyZSB3aXRoICVzJworLSAgICAgICAgICAgICAgICAlICcsICcuam9pbigiJyVzJyIgJSB2IGZvciB2IGluIHNlbGYuUE9TU0lCTEVfVkFMVUVTKSkKKysgICAgICAgICAgICAgICAgJyVzIGlzIG5vdCBpbiAlcycKKysgICAgICAgICAgICAgICAgJSAob3RoZXIsICcsICcuam9pbigiJyVzJyIgJSB2IGZvciB2IGluIHNlbGYuUE9TU0lCTEVfVkFMVUVTKSkpCisgICAgICAgICByZXR1cm4gc3VwZXIoRW51bVN0cmluZywgc2VsZikuX19lcV9fKG90aGVyKQorIAorICAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKK0BAIC0xMjA0LDE0ICsxMjA5LDE0IEBAIGRlZiBfZXNjYXBlX2NoYXIoYyk6CisgICAgICMgcXVvdGluZyBjb3VsZCBiZSBkb25lIHdpdGggZWl0aGVyICcgb3IgIi4KKyAgICAgaWYgYyA9PSAiJyI6CisgICAgICAgICByZXR1cm4gIlxcJyIKKy0gICAgcmV0dXJuIHVuaWNvZGUoYy5lbmNvZGUoJ3VuaWNvZGVfZXNjYXBlJykpCisrICAgIHJldHVybiBzdHIoYy5lbmNvZGUoJ3VuaWNvZGVfZXNjYXBlJykpCisgCisgIyBNYXBwaW5nIHRhYmxlIGJldHdlZW4gcmF3IGNoYXJhY3RlcnMgYmVsb3cgXHg4MCBhbmQgdGhlaXIgZXNjYXBlZAorICMgY291bnRlcnBhcnQsIHdoZW4gdGhleSBkaWZmZXIKKyBfSU5ERU5URURfUkVQUl9UQUJMRSA9IHsKKyAgICAgYzogZQorICAgICBmb3IgYywgZSBpbiBtYXAobGFtYmRhIHg6ICh4LCBfZXNjYXBlX2NoYXIoeCkpLAorLSAgICAgICAgICAgICAgICAgICAgbWFwKHVuaWNociwgcmFuZ2UoMTI4KSkpCisrICAgICAgICAgICAgICAgICAgICBtYXAoY2hyLCByYW5nZSgxMjgpKSkKKyAgICAgaWYgYyAhPSBlCisgfQorICMgUmVnZXhwIG1hdGNoaW5nIGFsbCBjaGFyYWN0ZXJzIHRvIGVzY2FwZS4KK0BAIC0xMjE5LDcgKzEyMjQsMzMgQEAgX0lOREVOVEVEX1JFUFJfUkUgPSByZS5jb21waWxlKAorICAgICAnKFsnICsgJycuam9pbihfSU5ERU5URURfUkVQUl9UQUJMRS52YWx1ZXMoKSkgKyAnXSspJykKKyAKKyAKKysjIFN0b2xlbiBmcm9tIGdlY2tvIG1hc3RlciBbMV0KKysjIFsxXSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9nZWNrby1kZXYvYmxvYi80MTY1YTJlODQzYzQ5NGJmYjNlMzVkOGExZmJmOWM2MTIwOWUzNjc1L3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC91dGlsLnB5I0wxMjg2CisrCisrIyBUaGUgZGVmYXVsdCBQcmV0dHlQcmludGVyIGhhcyBzb21lIGlzc3VlcyB3aXRoIFVURi04LCBzbyB3ZSBuZWVkIHRvIG92ZXJyaWRlCisrIyBzb21lIHN0dWZmIGhlcmUuCisrY2xhc3MgX1ByZXR0eVByaW50ZXIocHByaW50LlByZXR0eVByaW50ZXIpOgorKyAgICBkZWYgZm9ybWF0KHNlbGYsIG9iamVjdCwgY29udGV4dCwgbWF4bGV2ZWxzLCBsZXZlbCk6CisrICAgICAgICBpZiBub3QgKGlzaW5zdGFuY2Uob2JqZWN0LCBzaXgudGV4dF90eXBlKSBvcgorKyAgICAgICAgICAgICAgICBpc2luc3RhbmNlKG9iamVjdCwgc2l4LmJpbmFyeV90eXBlKSk6CisrICAgICAgICAgICAgcmV0dXJuIHN1cGVyKF9QcmV0dHlQcmludGVyLCBzZWxmKS5mb3JtYXQoCisrICAgICAgICAgICAgICAgIG9iamVjdCwgY29udGV4dCwgbWF4bGV2ZWxzLCBsZXZlbCkKKysgICAgICAgICMgVGhpcyBpcyBzdXBlciBoYWNreSBhbmQgd2VpcmQsIGJ1dCB0aGUgb3V0cHV0IG9mICdyZXByJyBhY3R1YWxseQorKyAgICAgICAgIyB2YXJpZXMgYmFzZWQgb24gdGhlIGRlZmF1bHQgSS9PIGVuY29kaW5nIG9mIHRoZSBwcm9jZXNzLCB3aGljaCBpc24ndAorKyAgICAgICAgIyBuZWNlc3NhcmlseSB1dGYtOC4gSW5zdGVhZCB3ZSBvcGVuIGEgbmV3IHNoZWxsIGFuZCBhc2sgd2hhdCB0aGUgcmVwcgorKyAgICAgICAgIyBXT1VMRCBiZSBhc3N1bWluZyB0aGUgZGVmYXVsdCBlbmNvZGluZyBpcyB1dGYtOC4gSWYgeW91IGNhbiBjb21lIHVwCisrICAgICAgICAjIHdpdGggYSBiZXR0ZXIgd2F5IG9mIGRvaW5nIHRoaXMgd2l0aG91dCBzaW1wbHkgcmUtaW1wbGVtZW50aW5nIHRoZQorKyAgICAgICAgIyBsb2dpYyBvZiAicmVwciIsIHBsZWFzZSByZXBsYWNlIHRoaXMuCisrICAgICAgICBlbnYgPSBkaWN0KG9zLmVudmlyb24pCisrICAgICAgICBlbnZbJ1BZVEhPTklPRU5DT0RJTkcnXSA9ICd1dGYtOCcKKysgICAgICAgIHJldCA9IHNpeC5lbnN1cmVfdGV4dChzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgKKysgICAgICAgICAgICBbc3lzLmV4ZWN1dGFibGVdLCBpbnB1dD0ncHJpbnQocmVwciglcykpJyAlIHJlcHIob2JqZWN0KSwKKysgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwgZW52PWVudiwgZW5jb2Rpbmc9J3V0Zi04JykpLnN0cmlwKCkKKysgICAgICAgIHJldHVybiAocmV0LCBUcnVlLCBGYWxzZSkKKysKKyBkZWYgaW5kZW50ZWRfcmVwcihvLCBpbmRlbnQ9NCk6CisrICAgIHJldHVybiBfUHJldHR5UHJpbnRlcihpbmRlbnQ9aW5kZW50KS5wZm9ybWF0KG8pCisrCisgICAgICcnJ1NpbWlsYXIgdG8gcmVwcigpLCBidXQgcmV0dXJucyBhbiBpbmRlbnRlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0CisgCisgICAgIE9uZSBub3RhYmxlIGRpZmZlcmVuY2Ugd2l0aCByZXByIGlzIHRoYXQgdGhlIHJldHVybmVkIHJlcHJlc2VudGF0aW9uCitAQCAtMTI0Miw3ICsxMjczLDcgQEAgZGVmIGluZGVudGVkX3JlcHIobywgaW5kZW50PTQpOgorICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG8sIGJ5dGVzKToKKyAgICAgICAgICAgICB5aWVsZCAnYicKKyAgICAgICAgICAgICB5aWVsZCByZXByKG8pCistICAgICAgICBlbGlmIGlzaW5zdGFuY2UobywgdW5pY29kZSk6CisrICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobywgc3RyKToKKyAgICAgICAgICAgICB5aWVsZCAiJyIKKyAgICAgICAgICAgICAjIFdlIHdhbnQgYSByZWFkYWJsZSBzdHJpbmcgKG5vbiBlc2NhcGVkIHVuaWNvZGUpLCBidXQgc29tZQorICAgICAgICAgICAgICMgc3BlY2lhbCBjaGFyYWN0ZXJzIG5lZWQgZXNjYXBpbmcgKGUuZy4gXG4sIFx0LCBldGMuKQorQEAgLTEyNzIsMTEgKzEzMDMsMTEgQEAgZGVmIGVuY29kZShvYmosIGVuY29kaW5nPSd1dGYtOCcpOgorICAgICBpZiBpc2luc3RhbmNlKG9iaiwgZGljdCk6CisgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgIGVuY29kZShrLCBlbmNvZGluZyk6IGVuY29kZSh2LCBlbmNvZGluZykKKy0gICAgICAgICAgICBmb3IgaywgdiBpbiBvYmouaXRlcml0ZW1zKCkKKysgICAgICAgICAgICBmb3IgaywgdiBpbiBvYmouaXRlbXMoKQorICAgICAgICAgfQorICAgICBpZiBpc2luc3RhbmNlKG9iaiwgYnl0ZXMpOgorICAgICAgICAgcmV0dXJuIG9iagorLSAgICBpZiBpc2luc3RhbmNlKG9iaiwgdW5pY29kZSk6CisrICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBzdHIpOgorICAgICAgICAgcmV0dXJuIG9iai5lbmNvZGUoZW5jb2RpbmcpCisgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBJdGVyYWJsZSk6CisgICAgICAgICByZXR1cm4gW2VuY29kZShpLCBlbmNvZGluZykgZm9yIGkgaW4gb2JqXQorZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC92aXJ0dWFsZW52LnB5IGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3ZpcnR1YWxlbnYucHkKK2luZGV4IDM4ZDA2ZDcxZC4uYzY3YzA0NmYzIDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3ZpcnR1YWxlbnYucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC92aXJ0dWFsZW52LnB5CitAQCAtNTMxLDkgKzUzMSw5IEBAIGRlZiB2ZXJpZnlfcHl0aG9uX3ZlcnNpb24obG9nX2hhbmRsZSk6CisgCisgICAgIG91ciA9IExvb3NlVmVyc2lvbignJWQuJWQuJWQnICUgKG1ham9yLCBtaW5vciwgbWljcm8pKQorIAorLSAgICBpZiBtYWpvciAhPSBNSU5JTVVNX1BZVEhPTl9NQUpPUiBvciBvdXIgPCBNSU5JTVVNX1BZVEhPTl9WRVJTSU9OOgorLSAgICAgICAgbG9nX2hhbmRsZS53cml0ZSgnUHl0aG9uICVzIG9yIGdyZWF0ZXIgKGJ1dCBub3QgUHl0aG9uIDMpIGlzICcKKy0gICAgICAgICAgICAncmVxdWlyZWQgdG8gYnVpbGQuICcgJSBNSU5JTVVNX1BZVEhPTl9WRVJTSU9OKQorKyAgICBpZiBvdXIgPCBNSU5JTVVNX1BZVEhPTl9WRVJTSU9OOgorKyAgICAgICAgbG9nX2hhbmRsZS53cml0ZSgnUHl0aG9uICVzIG9yIGdyZWF0ZXIgaXMgcmVxdWlyZWQgdG8gYnVpbGQuICcKKysgICAgICAgICAgICAlIE1JTklNVU1fUFlUSE9OX1ZFUlNJT04pCisgICAgICAgICBsb2dfaGFuZGxlLndyaXRlKCdZb3UgYXJlIHJ1bm5pbmcgUHl0aG9uICVzLlxuJyAlIG91cikKKyAKKyAgICAgICAgIGlmIG9zLm5hbWUgaW4gKCdudCcsICdjZScpOgorZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL2Nocm9tZS9tYW5pZmVzdC5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL2Nocm9tZS9tYW5pZmVzdC5weQoraW5kZXggYzkxYjk5Y2YxLi4wMmVhYzBkYmIgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96cGFjay9jaHJvbWUvbWFuaWZlc3QucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL2Nocm9tZS9tYW5pZmVzdC5weQorQEAgLTIsMTEgKzIsMTEgQEAKKyAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKKyAjIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCisgCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKKysKKyAKKyBpbXBvcnQgcmUKKyBpbXBvcnQgb3MKKy1mcm9tIHVybHBhcnNlIGltcG9ydCB1cmxwYXJzZQorK2Zyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZQorIGltcG9ydCBtb3pwYWNrLnBhdGggYXMgbW96cGF0aAorIGZyb20gbW96cGFjay5jaHJvbWUuZmxhZ3MgaW1wb3J0IEZsYWdzCisgZnJvbSBtb3pwYWNrLmVycm9ycyBpbXBvcnQgZXJyb3JzCitAQCAtMzE2LDcgKzMxNiw3IEBAIGNsYXNzIE1hbmlmZXN0Q29udHJhY3QoTWFuaWZlc3RFbnRyeSk6CisgICAgICAgICByZXR1cm4gc2VsZi5zZXJpYWxpemUoc2VsZi5jb250cmFjdElELCBzZWxmLmNpZCkKKyAKKyAjIEFsbCBtYW5pZmVzdCBjbGFzc2VzIGJ5IHRoZWlyIHR5cGUgbmFtZS4KKy1NQU5JRkVTVFNfVFlQRVMgPSBkaWN0KFsoYy50eXBlLCBjKSBmb3IgYyBpbiBnbG9iYWxzKCkudmFsdWVzKCkKKytNQU5JRkVTVFNfVFlQRVMgPSBkaWN0KFsoYy50eXBlLCBjKSBmb3IgYyBpbiBsaXN0KGdsb2JhbHMoKS52YWx1ZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHR5cGUoYykgPT0gdHlwZSBhbmQgaXNzdWJjbGFzcyhjLCBNYW5pZmVzdEVudHJ5KQorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGhhc2F0dHIoYywgJ3R5cGUnKSBhbmQgYy50eXBlXSkKKyAKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96cGFjay9jb3BpZXIucHkgYi9weXRob24vbW96YnVpbGQvbW96cGFjay9jb3BpZXIucHkKK2luZGV4IDFlNTIxZTUyYi4uNDNlZDliZTRhIDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21venBhY2svY29waWVyLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96cGFjay9jb3BpZXIucHkKK0BAIC0yLDcgKzIsNyBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorKworIAorIGltcG9ydCBvcworIGltcG9ydCBzdGF0CitAQCAtMTEzLDcgKzExMyw3IEBAIGNsYXNzIEZpbGVSZWdpc3RyeShvYmplY3QpOgorICAgICAgICAgJycnCisgICAgICAgICBSZXR1cm4gYWxsIHBhdGhzIHN0b3JlZCBpbiB0aGUgY29udGFpbmVyLCBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIGFkZGVkLgorICAgICAgICAgJycnCistICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXMua2V5cygpCisrICAgICAgICByZXR1cm4gbGlzdChzZWxmLl9maWxlcy5rZXlzKCkpCisgCisgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgJycnCitAQCAtMTQ2LDcgKzE0Niw3IEBAIGNsYXNzIEZpbGVSZWdpc3RyeShvYmplY3QpOgorICAgICAgICAgICAgIGZvciBwYXRoLCBmaWxlIGluIHJlZ2lzdHJ5OgorICAgICAgICAgICAgICAgICAoLi4uKQorICAgICAgICAgJycnCistICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXMuaXRlcml0ZW1zKCkKKysgICAgICAgIHJldHVybiBpdGVyKHNlbGYuX2ZpbGVzLml0ZW1zKCkpCisgCisgICAgIGRlZiByZXF1aXJlZF9kaXJlY3RvcmllcyhzZWxmKToKKyAgICAgICAgICcnJworQEAgLTE1NSw3ICsxNTUsNyBAQCBjbGFzcyBGaWxlUmVnaXN0cnkob2JqZWN0KToKKyAgICAgICAgIHVuc3BlY2lmaWVkICh2aXJ0dWFsKSByb290IGRpcmVjdG9yeSAoYW5kIGRvIG5vdCBpbmNsdWRlIHNhaWQgcm9vdAorICAgICAgICAgZGlyZWN0b3J5KS4KKyAgICAgICAgICcnJworLSAgICAgICAgcmV0dXJuIHNldChrIGZvciBrLCB2IGluIHNlbGYuX3JlcXVpcmVkX2RpcmVjdG9yaWVzLml0ZW1zKCkgaWYgdiA+IDApCisrICAgICAgICByZXR1cm4gc2V0KGsgZm9yIGssIHYgaW4gbGlzdChzZWxmLl9yZXF1aXJlZF9kaXJlY3Rvcmllcy5pdGVtcygpKSBpZiB2ID4gMCkKKyAKKyAgICAgZGVmIG91dHB1dF90b19pbnB1dHNfdHJlZShzZWxmKToKKyAgICAgICAgICcnJworQEAgLTI5NSw3ICsyOTUsNyBAQCBjbGFzcyBGaWxlQ29waWVyKEZpbGVSZWdpc3RyeSk6CisgCisgICAgICAgICBSZXR1cm5zIGEgRmlsZUNvcHlSZXN1bHQgdGhhdCBkZXRhaWxzIHdoYXQgY2hhbmdlZC4KKyAgICAgICAgICcnJworLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZGVzdGluYXRpb24sIGJhc2VzdHJpbmcpCisrICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShkZXN0aW5hdGlvbiwgc3RyKQorICAgICAgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmV4aXN0cyhkZXN0aW5hdGlvbikgb3Igb3MucGF0aC5pc2RpcihkZXN0aW5hdGlvbikKKyAKKyAgICAgICAgIHJlc3VsdCA9IEZpbGVDb3B5UmVzdWx0KCkKK0BAIC01NjMsNyArNTYzLDcgQEAgY2xhc3MgSmFycmVyKEZpbGVSZWdpc3RyeSwgQmFzZUZpbGUpOgorICAgICAgICAgICAgIGRlZiBleGlzdHMoc2VsZik6CisgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmRlZmxhdGVyIGlzIG5vdCBOb25lCisgCistICAgICAgICBpZiBpc2luc3RhbmNlKGRlc3QsIGJhc2VzdHJpbmcpOgorKyAgICAgICAgaWYgaXNpbnN0YW5jZShkZXN0LCBzdHIpOgorICAgICAgICAgICAgIGRlc3QgPSBEZXN0KGRlc3QpCisgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShkZXN0LCBEZXN0KQorIAorZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL2ZpbGVzLnB5IGIvcHl0aG9uL21vemJ1aWxkL21venBhY2svZmlsZXMucHkKK2luZGV4IDhjZTM1MzM3NS4uYmYzNWUzOWI4IDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21venBhY2svZmlsZXMucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL2ZpbGVzLnB5CitAQCAtMiw3ICsyLDcgQEAKKyAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKKyAjIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCisgCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKKysKKyAKKyBpbXBvcnQgZXJybm8KKyBpbXBvcnQgb3MKK0BAIC01Nyw3ICs1Nyw3IEBAIGVsc2U6CisgCisgICAgIGRlZiBfY29weWZpbGUoc3JjLCBkZXN0KToKKyAgICAgICAgICMgRmFsc2UgaW5kaWNhdGVzIGBkZXN0YCBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gaWYgaXQgZXhpc3RzIGFscmVhZHkuCistICAgICAgICBpZiBpc2luc3RhbmNlKHNyYywgdW5pY29kZSkgYW5kIGlzaW5zdGFuY2UoZGVzdCwgdW5pY29kZSk6CisrICAgICAgICBpZiBpc2luc3RhbmNlKHNyYywgc3RyKSBhbmQgaXNpbnN0YW5jZShkZXN0LCBzdHIpOgorICAgICAgICAgICAgIF9Db3B5RmlsZVcoc3JjLCBkZXN0LCBGYWxzZSkKKyAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzcmMsIHN0cikgYW5kIGlzaW5zdGFuY2UoZGVzdCwgc3RyKToKKyAgICAgICAgICAgICBfQ29weUZpbGVBKHNyYywgZGVzdCwgRmFsc2UpCitAQCAtMTY0LDcgKzE2NCw3IEBAIGNsYXNzIEJhc2VGaWxlKG9iamVjdCk6CisgICAgICAgICBkaXNhYmxlZCB3aGVuIHNraXBfaWZfb2xkZXIgaXMgRmFsc2UuCisgICAgICAgICBSZXR1cm5zIHdoZXRoZXIgYSBjb3B5IHdhcyBhY3R1YWxseSBwZXJmb3JtZWQgKFRydWUpIG9yIG5vdCAoRmFsc2UpLgorICAgICAgICAgJycnCistICAgICAgICBpZiBpc2luc3RhbmNlKGRlc3QsIGJhc2VzdHJpbmcpOgorKyAgICAgICAgaWYgaXNpbnN0YW5jZShkZXN0LCBzdHIpOgorICAgICAgICAgICAgIGRlc3QgPSBEZXN0KGRlc3QpCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRlc3QsIERlc3QpCitAQCAtMjc4LDExICsyNzgsMTEgQEAgY2xhc3MgRXhlY3V0YWJsZUZpbGUoRmlsZSk6CisgICAgICcnJworICAgICBkZWYgY29weShzZWxmLCBkZXN0LCBza2lwX2lmX29sZGVyPVRydWUpOgorICAgICAgICAgcmVhbF9kZXN0ID0gZGVzdAorLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGVzdCwgYmFzZXN0cmluZyk6CisrICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkZXN0LCBzdHIpOgorICAgICAgICAgICAgIGZkLCBkZXN0ID0gbWtzdGVtcCgpCisgICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisgICAgICAgICAgICAgb3MucmVtb3ZlKGRlc3QpCistICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShkZXN0LCBiYXNlc3RyaW5nKQorKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZGVzdCwgc3RyKQorICAgICAgICAgIyBJZiBGaWxlLmNvcHkgZGlkbid0IGFjdHVhbGx5IGNvcHkgYmVjYXVzZSBkZXN0IGlzIG5ld2VyLCBjaGVjayB0aGUKKyAgICAgICAgICMgZmlsZSBzaXplcy4gSWYgZGVzdCBpcyBzbWFsbGVyLCBpdCBtZWFucyBpdCBpcyBhbHJlYWR5IHN0cmlwcGVkIGFuZAorICAgICAgICAgIyBlbGZoYWNrZWQsIHNvIHdlIGNhbiBza2lwLgorQEAgLTMxOSw3ICszMTksNyBAQCBjbGFzcyBBYnNvbHV0ZVN5bWxpbmtGaWxlKEZpbGUpOgorICAgICAgICAgRmlsZS5fX2luaXRfXyhzZWxmLCBwYXRoKQorIAorICAgICBkZWYgY29weShzZWxmLCBkZXN0LCBza2lwX2lmX29sZGVyPVRydWUpOgorLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZGVzdCwgYmFzZXN0cmluZykKKysgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRlc3QsIHN0cikKKyAKKyAgICAgICAgICMgVGhlIGxvZ2ljIGluIHRoaXMgZnVuY3Rpb24gaXMgY29tcGxpY2F0ZWQgYnkgdGhlIGZhY3QgdGhhdCBzeW1saW5rcworICAgICAgICAgIyBhcmVuJ3QgdW5pdmVyc2FsbHkgc3VwcG9ydGVkLiBTbywgd2hlcmUgc3ltbGlua3MgYXJlbid0IHN1cHBvcnRlZCwgd2UKK0BAIC00MTAsNyArNDEwLDcgQEAgY2xhc3MgSGFyZGxpbmtGaWxlKEZpbGUpOgorICAgICAnJycKKyAKKyAgICAgZGVmIGNvcHkoc2VsZiwgZGVzdCwgc2tpcF9pZl9vbGRlcj1UcnVlKToKKy0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRlc3QsIGJhc2VzdHJpbmcpCisrICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShkZXN0LCBzdHIpCisgCisgICAgICAgICBpZiBub3QgaGFzYXR0cihvcywgJ2xpbmsnKToKKyAgICAgICAgICAgICByZXR1cm4gc3VwZXIoSGFyZGxpbmtGaWxlLCBzZWxmKS5jb3B5KAorQEAgLTQ3MSw3ICs0NzEsNyBAQCBjbGFzcyBFeGlzdGluZ0ZpbGUoQmFzZUZpbGUpOgorICAgICAgICAgc2VsZi5yZXF1aXJlZCA9IHJlcXVpcmVkCisgCisgICAgIGRlZiBjb3B5KHNlbGYsIGRlc3QsIHNraXBfaWZfb2xkZXI9VHJ1ZSk6CistICAgICAgICBpZiBpc2luc3RhbmNlKGRlc3QsIGJhc2VzdHJpbmcpOgorKyAgICAgICAgaWYgaXNpbnN0YW5jZShkZXN0LCBzdHIpOgorICAgICAgICAgICAgIGRlc3QgPSBEZXN0KGRlc3QpCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRlc3QsIERlc3QpCitAQCAtNTE3LDcgKzUxNyw3IEBAIGNsYXNzIFByZXByb2Nlc3NlZEZpbGUoQmFzZUZpbGUpOgorICAgICAgICAgJycnCisgICAgICAgICBJbnZva2VzIHRoZSBwcmVwcm9jZXNzb3IgdG8gY3JlYXRlIHRoZSBkZXN0aW5hdGlvbiBmaWxlLgorICAgICAgICAgJycnCistICAgICAgICBpZiBpc2luc3RhbmNlKGRlc3QsIGJhc2VzdHJpbmcpOgorKyAgICAgICAgaWYgaXNpbnN0YW5jZShkZXN0LCBzdHIpOgorICAgICAgICAgICAgIGRlc3QgPSBEZXN0KGRlc3QpCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRlc3QsIERlc3QpCitAQCAtNjU3LDcgKzY1Nyw3IEBAIGNsYXNzIFhQVEZpbGUoR2VuZXJhdGVkRmlsZSk6CisgICAgICAgICB0aGUgaW5kaXZpZHVhbCBYUFRzIHRvIGxpbmsuCisgICAgICAgICBza2lwX2lmX29sZGVyIGlzIGlnbm9yZWQuCisgICAgICAgICAnJycKKy0gICAgICAgIGlmIGlzaW5zdGFuY2UoZGVzdCwgYmFzZXN0cmluZyk6CisrICAgICAgICBpZiBpc2luc3RhbmNlKGRlc3QsIHN0cik6CisgICAgICAgICAgICAgZGVzdCA9IERlc3QoZGVzdCkKKyAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRlc3QsIERlc3QpCisgCitAQCAtMTEwOCw3ICsxMTA4LDcgQEAgY2xhc3MgQ29tcG9zZWRGaW5kZXIoQmFzZUZpbmRlcik6CisgICAgICAgICBmcm9tIG1venBhY2suY29waWVyIGltcG9ydCBGaWxlUmVnaXN0cnkKKyAgICAgICAgIHNlbGYuZmlsZXMgPSBGaWxlUmVnaXN0cnkoKQorIAorLSAgICAgICAgZm9yIGJhc2UsIGZpbmRlciBpbiBzb3J0ZWQoZmluZGVycy5pdGVyaXRlbXMoKSk6CisrICAgICAgICBmb3IgYmFzZSwgZmluZGVyIGluIHNvcnRlZChmaW5kZXJzLml0ZW1zKCkpOgorICAgICAgICAgICAgIGlmIHNlbGYuZmlsZXMuY29udGFpbnMoYmFzZSk6CisgICAgICAgICAgICAgICAgIHNlbGYuZmlsZXMucmVtb3ZlKGJhc2UpCisgICAgICAgICAgICAgZm9yIHAsIGYgaW4gZmluZGVyLmZpbmQoJycpOgorZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL21hbmlmZXN0cy5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL21hbmlmZXN0cy5weQoraW5kZXggMjdjNjY2MzRiLi5mNzliNDAwODYgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96cGFjay9tYW5pZmVzdHMucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL21hbmlmZXN0cy5weQorQEAgLTIsOCArMiw2IEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCB1bmljb2RlX2xpdGVyYWxzCistCisgZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgorIGltcG9ydCBqc29uCisgCitAQCAtMTE2LDcgKzExNCw3IEBAIGNsYXNzIEluc3RhbGxNYW5pZmVzdChvYmplY3QpOgorICAgICAgICAgc2VsZi5fc291cmNlX2ZpbGVzID0gc2V0KCkKKyAKKyAgICAgICAgIGlmIHBhdGggb3IgZmlsZW9iajoKKy0gICAgICAgICAgICB3aXRoIF9hdXRvX2ZpbGVvYmoocGF0aCwgZmlsZW9iaiwgJ3JiJykgYXMgZmg6CisrICAgICAgICAgICAgd2l0aCBfYXV0b19maWxlb2JqKHBhdGgsIGZpbGVvYmosICdyJykgYXMgZmg6CisgICAgICAgICAgICAgICAgIHNlbGYuX3NvdXJjZV9maWxlcy5hZGQoZmgubmFtZSkKKyAgICAgICAgICAgICAgICAgc2VsZi5fbG9hZF9mcm9tX2ZpbGVvYmooZmgpCisgCitAQCAtMTc1LDcgKzE3Myw3IEBAIGNsYXNzIEluc3RhbGxNYW5pZmVzdChvYmplY3QpOgorICAgICAgICAgICAgICAgICBkZXN0LCBjb250ZW50ID0gZmllbGRzWzE6XQorIAorICAgICAgICAgICAgICAgICBzZWxmLmFkZF9jb250ZW50KAorLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGVjb2RlX2ZpZWxkX2VudHJ5KGNvbnRlbnQpLmVuY29kZSgndXRmLTgnKSwgZGVzdCkKKysgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RlY29kZV9maWVsZF9lbnRyeShjb250ZW50KSwgZGVzdCkKKyAgICAgICAgICAgICAgICAgY29udGludWUKKyAKKyAgICAgICAgICAgICAjIERvbid0IGZhaWwgZm9yIG5vbi1hY3Rpb25hYmxlIGl0ZW1zLCBhbGxvd2luZworQEAgLTIyOCw3ICsyMjYsNyBAQCBjbGFzcyBJbnN0YWxsTWFuaWZlc3Qob2JqZWN0KToKKyAKKyAgICAgICAgIEl0IGlzIGFuIGVycm9yIGlmIGJvdGggYXJlIHNwZWNpZmllZC4KKyAgICAgICAgICIiIgorLSAgICAgICAgd2l0aCBfYXV0b19maWxlb2JqKHBhdGgsIGZpbGVvYmosICd3YicpIGFzIGZoOgorKyAgICAgICAgd2l0aCBfYXV0b19maWxlb2JqKHBhdGgsIGZpbGVvYmosICd3JykgYXMgZmg6CisgICAgICAgICAgICAgZmgud3JpdGUoJyVkXG4nICUgc2VsZi5DVVJSRU5UX1ZFUlNJT04pCisgCisgICAgICAgICAgICAgZm9yIGRlc3QgaW4gc29ydGVkKHNlbGYuX2Rlc3RzKToKK0BAIC0yNDIsMTMgKzI0MCwxMSBAQCBjbGFzcyBJbnN0YWxsTWFuaWZlc3Qob2JqZWN0KToKKyAgICAgICAgICAgICAgICAgICAgIGZvciBwYXRoIGluIHBhdGhzOgorICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IG1venBhdGguam9pbihiYXNlLCBwYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzID0gWyclZCcgJSB0eXBlLCBtb3pwYXRoLmpvaW4oZGVzdCwgcGF0aCksIHNvdXJjZV0KKy0gICAgICAgICAgICAgICAgICAgICAgICBmaC53cml0ZSgnJXNcbicgJSBzZWxmLkZJRUxEX1NFUEFSQVRPUi5qb2luKAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmVuY29kZSgndXRmLTgnKSBmb3IgcCBpbiBwYXJ0cykpCisrICAgICAgICAgICAgICAgICAgICAgICAgZmgud3JpdGUoJyVzXG4nICUgc2VsZi5GSUVMRF9TRVBBUkFUT1Iuam9pbihwYXJ0cykpCisgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICBwYXJ0cyA9IFsnJWQnICUgZW50cnlbMF0sIGRlc3RdCisgICAgICAgICAgICAgICAgICAgICBwYXJ0cy5leHRlbmQoZW50cnlbMTpdKQorLSAgICAgICAgICAgICAgICAgICAgZmgud3JpdGUoJyVzXG4nICUgc2VsZi5GSUVMRF9TRVBBUkFUT1Iuam9pbigKKy0gICAgICAgICAgICAgICAgICAgICAgICBwLmVuY29kZSgndXRmLTgnKSBmb3IgcCBpbiBwYXJ0cykpCisrICAgICAgICAgICAgICAgICAgICBmaC53cml0ZSgnJXNcbicgJSBzZWxmLkZJRUxEX1NFUEFSQVRPUi5qb2luKHBhcnRzKSkKKyAKKyAgICAgZGVmIGFkZF9saW5rKHNlbGYsIHNvdXJjZSwgZGVzdCk6CisgICAgICAgICAiIiJBZGQgYSBsaW5rIHRvIHRoaXMgbWFuaWZlc3QuCitAQCAtNDM5LDcgKzQzNSw3IEBAIGNsYXNzIEluc3RhbGxNYW5pZmVzdChvYmplY3QpOgorICAgICAgICAgICAgIGlmIGluc3RhbGxfdHlwZSA9PSBzZWxmLkNPTlRFTlQ6CisgICAgICAgICAgICAgICAgICMgR2VuZXJhdGVkRmlsZSBleHBlY3QgdGhlIGJ1ZmZlciBpbnRlcmZhY2UsIHdoaWNoIHRoZSB1bmljb2RlCisgICAgICAgICAgICAgICAgICMgdHlwZSBkb2Vzbid0IGhhdmUsIHNvIGVuY29kZSB0byBhIHN0ci4KKy0gICAgICAgICAgICAgICAgY29udGVudCA9IHNlbGYuX2RlY29kZV9maWVsZF9lbnRyeShlbnRyeVsxXSkuZW5jb2RlKCd1dGYtOCcpCisrICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBzZWxmLl9kZWNvZGVfZmllbGRfZW50cnkoZW50cnlbMV0pCisgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LmFkZChkZXN0LCBHZW5lcmF0ZWRGaWxlKGNvbnRlbnQpKQorICAgICAgICAgICAgICAgICBjb250aW51ZQorIAorZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL21vemphci5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL21vemphci5weQoraW5kZXggYTcyM2ZkMmMwLi4wYjA0ZDIzM2MgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96cGFjay9tb3pqYXIucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL21vemphci5weQorQEAgLTIsNyArMiw3IEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisrCisgCisgZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTworIGltcG9ydCBzdHJ1Y3QKK0BAIC0xNCw5ICsxNCwxMCBAQCBmcm9tIHppcGZpbGUgaW1wb3J0ICgKKyAgICAgWklQX0RFRkxBVEVELAorICkKKyBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAorLWZyb20gdXJscGFyc2UgaW1wb3J0IHVybHBhcnNlLCBQYXJzZVJlc3VsdAorK2Zyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZSwgUGFyc2VSZXN1bHQKKyBpbXBvcnQgbW96cGFjay5wYXRoIGFzIG1venBhdGgKKyBmcm9tIG1vemJ1aWxkLnV0aWwgaW1wb3J0IG1lbW9pemUKKytmcm9tIGZ1bmN0b29scyBpbXBvcnQgcmVkdWNlCisgCisgCisgSkFSX1NUT1JFRCA9IFpJUF9TVE9SRUQKK0BAIC03Miw3ICs3Myw3IEBAIGNsYXNzIEphclN0cnVjdChvYmplY3QpOgorICAgICAgICAgYW4gaW5zdGFuY2Ugd2l0aCBlbXB0eSBmaWVsZHMuCisgICAgICAgICAnJycKKyAgICAgICAgIGFzc2VydCBzZWxmLk1BR0lDIGFuZCBpc2luc3RhbmNlKHNlbGYuU1RSVUNULCBPcmRlcmVkRGljdCkKKy0gICAgICAgIHNlbGYuc2l6ZV9maWVsZHMgPSBzZXQodCBmb3IgdCBpbiBzZWxmLlNUUlVDVC5pdGVydmFsdWVzKCkKKysgICAgICAgIHNlbGYuc2l6ZV9maWVsZHMgPSBzZXQodCBmb3IgdCBpbiBzZWxmLlNUUlVDVC52YWx1ZXMoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgdCBpbiBKYXJTdHJ1Y3QuVFlQRV9NQVBQSU5HKQorICAgICAgICAgc2VsZi5fdmFsdWVzID0ge30KKyAgICAgICAgIGlmIGRhdGE6CitAQCAtOTQsNyArOTUsNyBAQCBjbGFzcyBKYXJTdHJ1Y3Qob2JqZWN0KToKKyAgICAgICAgICMgRm9yIGFsbCBmaWVsZHMgdXNlZCBhcyBvdGhlciBmaWVsZHMgc2l6ZXMsIGtlZXAgdHJhY2sgb2YgdGhlaXIgdmFsdWUKKyAgICAgICAgICMgc2VwYXJhdGVseS4KKyAgICAgICAgIHNpemVzID0gZGljdCgodCwgMCkgZm9yIHQgaW4gc2VsZi5zaXplX2ZpZWxkcykKKy0gICAgICAgIGZvciBuYW1lLCB0IGluIHNlbGYuU1RSVUNULml0ZXJpdGVtcygpOgorKyAgICAgICAgZm9yIG5hbWUsIHQgaW4gc2VsZi5TVFJVQ1QuaXRlbXMoKToKKyAgICAgICAgICAgICBpZiB0IGluIEphclN0cnVjdC5UWVBFX01BUFBJTkc6CisgICAgICAgICAgICAgICAgIHZhbHVlLCBzaXplID0gSmFyU3RydWN0LmdldF9kYXRhKHQsIGRhdGFbb2Zmc2V0Ol0pCisgICAgICAgICAgICAgZWxzZToKK0BAIC0xMTMsNyArMTE0LDcgQEAgY2xhc3MgSmFyU3RydWN0KG9iamVjdCk6CisgICAgICAgICBJbml0aWFsaXplIGFuIGluc3RhbmNlIHdpdGggZW1wdHkgZmllbGRzLgorICAgICAgICAgJycnCisgICAgICAgICBzZWxmLnNpZ25hdHVyZSA9IHNlbGYuTUFHSUMKKy0gICAgICAgIGZvciBuYW1lLCB0IGluIHNlbGYuU1RSVUNULml0ZXJpdGVtcygpOgorKyAgICAgICAgZm9yIG5hbWUsIHQgaW4gc2VsZi5TVFJVQ1QuaXRlbXMoKToKKyAgICAgICAgICAgICBpZiBuYW1lIGluIHNlbGYuc2l6ZV9maWVsZHM6CisgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgc2VsZi5fdmFsdWVzW25hbWVdID0gMCBpZiB0IGluIEphclN0cnVjdC5UWVBFX01BUFBJTkcgZWxzZSAnJworQEAgLTEzOCw5ICsxMzksOSBAQCBjbGFzcyBKYXJTdHJ1Y3Qob2JqZWN0KToKKyAgICAgICAgIGZyb20gc2VsZi5TVFJVQ1QuCisgICAgICAgICAnJycKKyAgICAgICAgIHNlcmlhbGl6ZWQgPSBzdHJ1Y3QucGFjaygnPEknLCBzZWxmLnNpZ25hdHVyZSkKKy0gICAgICAgIHNpemVzID0gZGljdCgodCwgbmFtZSkgZm9yIG5hbWUsIHQgaW4gc2VsZi5TVFJVQ1QuaXRlcml0ZW1zKCkKKysgICAgICAgIHNpemVzID0gZGljdCgodCwgbmFtZSkgZm9yIG5hbWUsIHQgaW4gc2VsZi5TVFJVQ1QuaXRlbXMoKQorICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCB0IGluIEphclN0cnVjdC5UWVBFX01BUFBJTkcpCistICAgICAgICBmb3IgbmFtZSwgdCBpbiBzZWxmLlNUUlVDVC5pdGVyaXRlbXMoKToKKysgICAgICAgIGZvciBuYW1lLCB0IGluIHNlbGYuU1RSVUNULml0ZW1zKCk6CisgICAgICAgICAgICAgaWYgdCBpbiBKYXJTdHJ1Y3QuVFlQRV9NQVBQSU5HOgorICAgICAgICAgICAgICAgICBmb3JtYXQsIHNpemUgPSBKYXJTdHJ1Y3QuVFlQRV9NQVBQSU5HW3RdCisgICAgICAgICAgICAgICAgIGlmIG5hbWUgaW4gc2l6ZXM6CitAQCAtMTU5LDcgKzE2MCw3IEBAIGNsYXNzIEphclN0cnVjdChvYmplY3QpOgorICAgICAgICAgdmFyaWFibGUgbGVuZ3RoIGZpZWxkcy4KKyAgICAgICAgICcnJworICAgICAgICAgc2l6ZSA9IEphclN0cnVjdC5UWVBFX01BUFBJTkdbJ3VpbnQzMiddWzFdCistICAgICAgICBmb3IgbmFtZSwgdHlwZSBpbiBzZWxmLlNUUlVDVC5pdGVyaXRlbXMoKToKKysgICAgICAgIGZvciBuYW1lLCB0eXBlIGluIHNlbGYuU1RSVUNULml0ZW1zKCk6CisgICAgICAgICAgICAgaWYgdHlwZSBpbiBKYXJTdHJ1Y3QuVFlQRV9NQVBQSU5HOgorICAgICAgICAgICAgICAgICBzaXplICs9IEphclN0cnVjdC5UWVBFX01BUFBJTkdbdHlwZV1bMV0KKyAgICAgICAgICAgICBlbHNlOgorQEAgLTE4MCw3ICsxODEsNyBAQCBjbGFzcyBKYXJTdHJ1Y3Qob2JqZWN0KToKKyAgICAgICAgIHJldHVybiBrZXkgaW4gc2VsZi5fdmFsdWVzCisgCisgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKy0gICAgICAgIHJldHVybiBzZWxmLl92YWx1ZXMuaXRlcml0ZW1zKCkKKysgICAgICAgIHJldHVybiBpdGVyKHNlbGYuX3ZhbHVlcy5pdGVtcygpKQorIAorICAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgICByZXR1cm4gIjwlcyAlcz4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorQEAgLTM3NCw3ICszNzUsNyBAQCBjbGFzcyBKYXJSZWFkZXIob2JqZWN0KToKKyAgICAgICAgIGVudHJpZXMgPSBzZWxmLmVudHJpZXMKKyAgICAgICAgIGlmIG5vdCBlbnRyaWVzOgorICAgICAgICAgICAgIHJldHVybiBKQVJfU1RPUkVECistICAgICAgICByZXR1cm4gbWF4KGZbJ2NvbXByZXNzaW9uJ10gZm9yIGYgaW4gZW50cmllcy5pdGVydmFsdWVzKCkpCisrICAgICAgICByZXR1cm4gbWF4KGZbJ2NvbXByZXNzaW9uJ10gZm9yIGYgaW4gZW50cmllcy52YWx1ZXMoKSkKKyAKKyAgICAgQHByb3BlcnR5CisgICAgIGRlZiBlbnRyaWVzKHNlbGYpOgorQEAgLTM5MCw3ICszOTEsNyBAQCBjbGFzcyBKYXJSZWFkZXIob2JqZWN0KToKKyAgICAgICAgICAgICBwcmVsb2FkID0gSmFyU3RydWN0LmdldF9kYXRhKCd1aW50MzInLCBzZWxmLl9kYXRhKVswXQorICAgICAgICAgZW50cmllcyA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgIG9mZnNldCA9IHNlbGYuX2NkaXJfZW5kWydjZGlyX29mZnNldCddCistICAgICAgICBmb3IgZSBpbiB4cmFuZ2Uoc2VsZi5fY2Rpcl9lbmRbJ2NkaXJfZW50cmllcyddKToKKysgICAgICAgIGZvciBlIGluIHJhbmdlKHNlbGYuX2NkaXJfZW5kWydjZGlyX2VudHJpZXMnXSk6CisgICAgICAgICAgICAgZW50cnkgPSBKYXJDZGlyRW50cnkoc2VsZi5fZGF0YVtvZmZzZXQ6XSkKKyAgICAgICAgICAgICBvZmZzZXQgKz0gZW50cnkuc2l6ZQorICAgICAgICAgICAgICMgQ3JlYXRvciBob3N0IHN5c3RlbS4gMCBpcyBNU0RPUywgMyBpcyBVbml4CitAQCAtNDUyLDcgKzQ1Myw3IEBAIGNsYXNzIEphclJlYWRlcihvYmplY3QpOgorICAgICAgICAgICAgIGZvciBmaWxlIGluIGphclJlYWRlcjoKKyAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAnJycKKy0gICAgICAgIGZvciBlbnRyeSBpbiBzZWxmLmVudHJpZXMuaXRlcnZhbHVlcygpOgorKyAgICAgICAgZm9yIGVudHJ5IGluIHNlbGYuZW50cmllcy52YWx1ZXMoKToKKyAgICAgICAgICAgICB5aWVsZCBzZWxmLl9nZXRyZWFkZXIoZW50cnkpCisgCisgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBuYW1lKToKK0BAIC01NDcsNyArNTQ4LDcgQEAgY2xhc3MgSmFyV3JpdGVyKG9iamVjdCk6CisgICAgICAgICBoZWFkZXJzID0ge30KKyAgICAgICAgIHByZWxvYWRfc2l6ZSA9IDAKKyAgICAgICAgICMgUHJlcGFyZSBjZW50cmFsIGRpcmVjdG9yeSBlbnRyaWVzCistICAgICAgICBmb3IgZW50cnksIGNvbnRlbnQgaW4gc2VsZi5fY29udGVudHMuaXRlcnZhbHVlcygpOgorKyAgICAgICAgZm9yIGVudHJ5LCBjb250ZW50IGluIHNlbGYuX2NvbnRlbnRzLnZhbHVlcygpOgorICAgICAgICAgICAgIGhlYWRlciA9IEphckxvY2FsRmlsZUhlYWRlcigpCisgICAgICAgICAgICAgZm9yIG5hbWUgaW4gZW50cnkuU1RSVUNUOgorICAgICAgICAgICAgICAgICBpZiBuYW1lIGluIGhlYWRlcjoKK0BAIC01NjIsNyArNTYzLDcgQEAgY2xhc3MgSmFyV3JpdGVyKG9iamVjdCk6CisgICAgICAgICBlbmRbJ2Rpc2tfZW50cmllcyddID0gbGVuKHNlbGYuX2NvbnRlbnRzKQorICAgICAgICAgZW5kWydjZGlyX2VudHJpZXMnXSA9IGVuZFsnZGlza19lbnRyaWVzJ10KKyAgICAgICAgIGVuZFsnY2Rpcl9zaXplJ10gPSByZWR1Y2UobGFtYmRhIHgsIHk6IHggKyB5WzBdLnNpemUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvbnRlbnRzLnZhbHVlcygpLCAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHNlbGYuX2NvbnRlbnRzLnZhbHVlcygpKSwgMCkKKyAgICAgICAgICMgT24gb3B0aW1pemVkIGFyY2hpdmVzLCBzdG9yZSB0aGUgcHJlbG9hZGVkIHNpemUgYW5kIHRoZSBjZW50cmFsCisgICAgICAgICAjIGRpcmVjdG9yeSBlbnRyaWVzLCBmb2xsb3dlZCBieSB0aGUgZmlyc3QgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5LgorICAgICAgICAgaWYgc2VsZi5fb3B0aW1pemU6CitAQCAtNTcxLDE4ICs1NzIsMTggQEAgY2xhc3MgSmFyV3JpdGVyKG9iamVjdCk6CisgICAgICAgICAgICAgaWYgcHJlbG9hZF9zaXplOgorICAgICAgICAgICAgICAgICBwcmVsb2FkX3NpemUgKz0gb2Zmc2V0CisgICAgICAgICAgICAgc2VsZi5fZGF0YS53cml0ZShzdHJ1Y3QucGFjaygnPEknLCBwcmVsb2FkX3NpemUpKQorLSAgICAgICAgICAgIGZvciBlbnRyeSwgXyBpbiBzZWxmLl9jb250ZW50cy5pdGVydmFsdWVzKCk6CisrICAgICAgICAgICAgZm9yIGVudHJ5LCBfIGluIHNlbGYuX2NvbnRlbnRzLnZhbHVlcygpOgorICAgICAgICAgICAgICAgICBlbnRyeVsnb2Zmc2V0J10gKz0gb2Zmc2V0CisgICAgICAgICAgICAgICAgIHNlbGYuX2RhdGEud3JpdGUoZW50cnkuc2VyaWFsaXplKCkpCisgICAgICAgICAgICAgc2VsZi5fZGF0YS53cml0ZShlbmQuc2VyaWFsaXplKCkpCisgICAgICAgICAjIFN0b3JlIGxvY2FsIGZpbGUgZW50cmllcyBmb2xsb3dlZCBieSBjb21wcmVzc2VkIGRhdGEKKy0gICAgICAgIGZvciBlbnRyeSwgY29udGVudCBpbiBzZWxmLl9jb250ZW50cy5pdGVydmFsdWVzKCk6CisrICAgICAgICBmb3IgZW50cnksIGNvbnRlbnQgaW4gc2VsZi5fY29udGVudHMudmFsdWVzKCk6CisgICAgICAgICAgICAgc2VsZi5fZGF0YS53cml0ZShoZWFkZXJzW2VudHJ5XS5zZXJpYWxpemUoKSkKKyAgICAgICAgICAgICBzZWxmLl9kYXRhLndyaXRlKGNvbnRlbnQpCisgICAgICAgICAjIE9uIG5vbiBvcHRpbWl6ZWQgYXJjaGl2ZXMsIHN0b3JlIHRoZSBjZW50cmFsIGRpcmVjdG9yeSBlbnRyaWVzLgorICAgICAgICAgaWYgbm90IHNlbGYuX29wdGltaXplOgorICAgICAgICAgICAgIGVuZFsnY2Rpcl9vZmZzZXQnXSA9IG9mZnNldAorLSAgICAgICAgICAgIGZvciBlbnRyeSwgXyBpbiBzZWxmLl9jb250ZW50cy5pdGVydmFsdWVzKCk6CisrICAgICAgICAgICAgZm9yIGVudHJ5LCBfIGluIHNlbGYuX2NvbnRlbnRzLnZhbHVlcygpOgorICAgICAgICAgICAgICAgICBzZWxmLl9kYXRhLndyaXRlKGVudHJ5LnNlcmlhbGl6ZSgpKQorICAgICAgICAgIyBTdG9yZSB0aGUgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5LgorICAgICAgICAgc2VsZi5fZGF0YS53cml0ZShlbmQuc2VyaWFsaXplKCkpCitAQCAtNjIyLDcgKzYyMyw3IEBAIGNsYXNzIEphcldyaXRlcihvYmplY3QpOgorICAgICAgICAgICAgIGRlZmxhdGVyID0gZGF0YQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICBkZWZsYXRlciA9IERlZmxhdGVyKGNvbXByZXNzLCBjb21wcmVzc19sZXZlbD1zZWxmLl9jb21wcmVzc19sZXZlbCkKKy0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIGJhc2VzdHJpbmcpOgorKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YSwgc3RyKToKKyAgICAgICAgICAgICAgICAgZGVmbGF0ZXIud3JpdGUoZGF0YSkKKyAgICAgICAgICAgICBlbGlmIGhhc2F0dHIoZGF0YSwgJ3JlYWQnKToKKyAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihkYXRhLCAnc2VlaycpOgorZGlmZiAtLWdpdCBhL3Rlc3RpbmcvbW96YmFzZS9tYW5pZmVzdHBhcnNlci9tYW5pZmVzdHBhcnNlci9pbmkucHkgYi90ZXN0aW5nL21vemJhc2UvbWFuaWZlc3RwYXJzZXIvbWFuaWZlc3RwYXJzZXIvaW5pLnB5CitpbmRleCBlNWJhMjQ5YzEuLmMxNDFhMThiNyAxMDA2NDQKKy0tLSBhL3Rlc3RpbmcvbW96YmFzZS9tYW5pZmVzdHBhcnNlci9tYW5pZmVzdHBhcnNlci9pbmkucHkKKysrKyBiL3Rlc3RpbmcvbW96YmFzZS9tYW5pZmVzdHBhcnNlci9tYW5pZmVzdHBhcnNlci9pbmkucHkKK0BAIC0yLDcgKzIsNyBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBmaWxlLAorICMgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorKworIAorIGltcG9ydCBvcworIGltcG9ydCBzeXMKK0BAIC0xMiw3ICsxMiw3IEBAIF9fYWxsX18gPSBbJ3JlYWRfaW5pJywgJ2NvbWJpbmVfZmllbGRzJ10KKyAKKyBjbGFzcyBJbmlQYXJzZUVycm9yKEV4Y2VwdGlvbik6CisgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcCwgbGluZW51bSwgbXNnKToKKy0gICAgICAgIGlmIGlzaW5zdGFuY2UoZnAsIGJhc2VzdHJpbmcpOgorKyAgICAgICAgaWYgaXNpbnN0YW5jZShmcCwgc3RyKToKKyAgICAgICAgICAgICBwYXRoID0gZnAKKyAgICAgICAgIGVsaWYgaGFzYXR0cihmcCwgJ25hbWUnKToKKyAgICAgICAgICAgICBwYXRoID0gZnAubmFtZQorQEAgLTQzLDEyICs0MywxNSBAQCBkZWYgcmVhZF9pbmkoZnAsIHZhcmlhYmxlcz1Ob25lLCBkZWZhdWx0PSdERUZBVUxUJywgZGVmYXVsdHNfb25seT1GYWxzZSwKKyAgICAgc2VjdGlvbnMgPSBbXQorICAgICBrZXkgPSB2YWx1ZSA9IE5vbmUKKyAgICAgc2VjdGlvbl9uYW1lcyA9IHNldCgpCistICAgIGlmIGlzaW5zdGFuY2UoZnAsIGJhc2VzdHJpbmcpOgorKyAgICBpZiBpc2luc3RhbmNlKGZwLCBzdHIpOgorICAgICAgICAgZnAgPSBmaWxlKGZwKQorIAorICAgICAjIHJlYWQgdGhlIGxpbmVzCisgICAgIGZvciAobGluZW51bSwgbGluZSkgaW4gZW51bWVyYXRlKGZwLnJlYWQoKS5zcGxpdGxpbmVzKCksIHN0YXJ0PTEpOgorIAorKyAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5lLCBieXRlcyk6CisrICAgICAgICAgICBsaW5lID0gbGluZS5kZWNvZGUoJ3V0Zi04JykKKysKKyAgICAgICAgIHN0cmlwcGVkID0gbGluZS5zdHJpcCgpCisgCisgICAgICAgICAjIGlnbm9yZSBibGFuayBsaW5lcworQEAgLTY2LDcgKzY5LDcgQEAgZGVmIHJlYWRfaW5pKGZwLCB2YXJpYWJsZXM9Tm9uZSwgZGVmYXVsdD0nREVGQVVMVCcsIGRlZmF1bHRzX29ubHk9RmFsc2UsCisgICAgICAgICBpbmxpbmVfcHJlZml4ZXMgPSB7cDogLTEgZm9yIHAgaW4gY29tbWVudHN9CisgICAgICAgICB3aGlsZSBjb21tZW50X3N0YXJ0ID09IHN5cy5tYXhzaXplIGFuZCBpbmxpbmVfcHJlZml4ZXM6CisgICAgICAgICAgICAgbmV4dF9wcmVmaXhlcyA9IHt9CistICAgICAgICAgICAgZm9yIHByZWZpeCwgaW5kZXggaW4gaW5saW5lX3ByZWZpeGVzLml0ZW1zKCk6CisrICAgICAgICAgICAgZm9yIHByZWZpeCwgaW5kZXggaW4gbGlzdChpbmxpbmVfcHJlZml4ZXMuaXRlbXMoKSk6CisgICAgICAgICAgICAgICAgIGluZGV4ID0gbGluZS5maW5kKHByZWZpeCwgaW5kZXgrMSkKKyAgICAgICAgICAgICAgICAgaWYgaW5kZXggPT0gLTE6CisgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorQEAgLTE2Myw3ICsxNjYsNyBAQCBkZWYgY29tYmluZV9maWVsZHMoZ2xvYmFsX3ZhcnMsIGxvY2FsX3ZhcnMpOgorICAgICAgICAgJ3N1cHBvcnQtZmlsZXMnOiAnJXMgJXMnLAorICAgICB9CisgICAgIGZpbmFsX21hcHBpbmcgPSBnbG9iYWxfdmFycy5jb3B5KCkKKy0gICAgZm9yIGZpZWxkX25hbWUsIHZhbHVlIGluIGxvY2FsX3ZhcnMuaXRlbXMoKToKKysgICAgZm9yIGZpZWxkX25hbWUsIHZhbHVlIGluIGxpc3QobG9jYWxfdmFycy5pdGVtcygpKToKKyAgICAgICAgIGlmIGZpZWxkX25hbWUgbm90IGluIGZpZWxkX3BhdHRlcm5zIG9yIGZpZWxkX25hbWUgbm90IGluIGdsb2JhbF92YXJzOgorICAgICAgICAgICAgIGZpbmFsX21hcHBpbmdbZmllbGRfbmFtZV0gPSB2YWx1ZQorICAgICAgICAgICAgIGNvbnRpbnVlCitkaWZmIC0tZ2l0IGEvdGVzdGluZy9tb3piYXNlL21hbmlmZXN0cGFyc2VyL21hbmlmZXN0cGFyc2VyL21hbmlmZXN0cGFyc2VyLnB5IGIvdGVzdGluZy9tb3piYXNlL21hbmlmZXN0cGFyc2VyL21hbmlmZXN0cGFyc2VyL21hbmlmZXN0cGFyc2VyLnB5CitpbmRleCA5MjEzNjlmZDIuLjViMmY0YzQ1MyAxMDA3NTUKKy0tLSBhL3Rlc3RpbmcvbW96YmFzZS9tYW5pZmVzdHBhcnNlci9tYW5pZmVzdHBhcnNlci9tYW5pZmVzdHBhcnNlci5weQorKysrIGIvdGVzdGluZy9tb3piYXNlL21hbmlmZXN0cGFyc2VyL21hbmlmZXN0cGFyc2VyL21hbmlmZXN0cGFyc2VyLnB5CitAQCAtMiw5ICsyLDkgQEAKKyAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMgZmlsZSwKKyAjIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCisgCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uCisgCistZnJvbSBTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KKysKKytmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworIGltcG9ydCBqc29uCisgaW1wb3J0IGZubWF0Y2gKKyBpbXBvcnQgb3MKK0BAIC0yMyw3ICsyMyw3IEBAIGZyb20gLmZpbHRlcnMgaW1wb3J0ICgKKyBfX2FsbF9fID0gWydNYW5pZmVzdFBhcnNlcicsICdUZXN0TWFuaWZlc3QnLCAnY29udmVydCddCisgCisgcmVscGF0aCA9IG9zLnBhdGgucmVscGF0aAorLXN0cmluZyA9IChiYXNlc3RyaW5nLCkKKytzdHJpbmcgPSAoc3RyLCkKKyAKKyAKKyAjIHBhdGggbm9ybWFsaXphdGlvbgorQEAgLTE5NSw3ICsxOTUsNyBAQCBjbGFzcyBNYW5pZmVzdFBhcnNlcihvYmplY3QpOgorIAorICAgICAgICAgICAgICMgb3RoZXJ3aXNlIGFuIGl0ZW0KKyAgICAgICAgICAgICAjIGFwcGx5IGFuY2VzdG9yIGRlZmF1bHRzLCB3aGlsZSBtYWludGFpbmluZyBjdXJyZW50IGZpbGUgcHJpb3JpdHkKKy0gICAgICAgICAgICBkYXRhID0gZGljdChzZWxmLl9hbmNlc3Rvcl9kZWZhdWx0cy5pdGVtcygpICsgZGF0YS5pdGVtcygpKQorKyAgICAgICAgICAgIGRhdGEgPSBkaWN0KGxpc3Qoc2VsZi5fYW5jZXN0b3JfZGVmYXVsdHMuaXRlbXMoKSkgKyBsaXN0KGRhdGEuaXRlbXMoKSkpCisgCisgICAgICAgICAgICAgdGVzdCA9IGRhdGEKKyAgICAgICAgICAgICB0ZXN0WyduYW1lJ10gPSBzZWN0aW9uCitAQCAtMzIzLDE5ICszMjMsMTkgQEAgY2xhc3MgTWFuaWZlc3RQYXJzZXIob2JqZWN0KToKKyAgICAgICAgICMgbWFrZSBzb21lIGNoZWNrIGZ1bmN0aW9ucworICAgICAgICAgaWYgaW52ZXJzZToKKyAgICAgICAgICAgICBkZWYgaGFzX3RhZ3ModGVzdCk6CistICAgICAgICAgICAgICAgIHJldHVybiBub3QgdGFncy5pbnRlcnNlY3Rpb24odGVzdC5rZXlzKCkpCisrICAgICAgICAgICAgICAgIHJldHVybiBub3QgdGFncy5pbnRlcnNlY3Rpb24obGlzdCh0ZXN0LmtleXMoKSkpCisgCisgICAgICAgICAgICAgZGVmIGRpY3RfcXVlcnkodGVzdCk6CistICAgICAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGt3YXJncy5pdGVtcygpOgorKyAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBsaXN0KGt3YXJncy5pdGVtcygpKToKKyAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QuZ2V0KGtleSkgPT0gdmFsdWU6CisgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIGRlZiBoYXNfdGFncyh0ZXN0KToKKy0gICAgICAgICAgICAgICAgcmV0dXJuIHRhZ3MuaXNzdWJzZXQodGVzdC5rZXlzKCkpCisrICAgICAgICAgICAgICAgIHJldHVybiB0YWdzLmlzc3Vic2V0KGxpc3QodGVzdC5rZXlzKCkpKQorIAorICAgICAgICAgICAgIGRlZiBkaWN0X3F1ZXJ5KHRlc3QpOgorLSAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBrd2FyZ3MuaXRlbXMoKToKKysgICAgICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gbGlzdChrd2FyZ3MuaXRlbXMoKSk6CisgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0LmdldChrZXkpICE9IHZhbHVlOgorICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorQEAgLTM1OSw3ICszNTksNyBAQCBjbGFzcyBNYW5pZmVzdFBhcnNlcihvYmplY3QpOgorICAgICAgICAgaWYgdGVzdHMgaXMgTm9uZToKKyAgICAgICAgICAgICBtYW5pZmVzdHMgPSBbXQorICAgICAgICAgICAgICMgTWFrZSBzdXJlIHRvIHJldHVybiBhbGwgdGhlIG1hbmlmZXN0cywgZXZlbiBvbmVzIHdpdGhvdXQgdGVzdHMuCistICAgICAgICAgICAgZm9yIG1hbmlmZXN0IGluIHNlbGYubWFuaWZlc3RfZGVmYXVsdHMua2V5cygpOgorKyAgICAgICAgICAgIGZvciBtYW5pZmVzdCBpbiBsaXN0KHNlbGYubWFuaWZlc3RfZGVmYXVsdHMua2V5cygpKToKKyAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShtYW5pZmVzdCwgdHVwbGUpOgorICAgICAgICAgICAgICAgICAgICAgcGFyZW50bWFuaWZlc3QsIG1hbmlmZXN0ID0gbWFuaWZlc3QKKyAgICAgICAgICAgICAgICAgaWYgbWFuaWZlc3Qgbm90IGluIG1hbmlmZXN0czoKK0BAIC00MDksNyArNDA5LDcgQEAgY2xhc3MgTWFuaWZlc3RQYXJzZXIob2JqZWN0KToKKyAgICAgICAgICIiIgorIAorICAgICAgICAgZmlsZXMgPSBzZXQoW10pCistICAgICAgICBpZiBpc2luc3RhbmNlKGRpcmVjdG9yaWVzLCBiYXNlc3RyaW5nKToKKysgICAgICAgIGlmIGlzaW5zdGFuY2UoZGlyZWN0b3JpZXMsIHN0cik6CisgICAgICAgICAgICAgZGlyZWN0b3JpZXMgPSBbZGlyZWN0b3JpZXNdCisgCisgICAgICAgICAjIGdldCBmaWxlcyBpbiBkaXJlY3RvcmllcworQEAgLTQ3Niw3ICs0NzYsNyBAQCBjbGFzcyBNYW5pZmVzdFBhcnNlcihvYmplY3QpOgorICAgICAgICAgICAgIHByaW50KCdbREVGQVVMVF0nLCBmaWxlPWZwKQorICAgICAgICAgICAgIGZvciB0YWcgaW4gZ2xvYmFsX3RhZ3M6CisgICAgICAgICAgICAgICAgIHByaW50KCclcyA9JyAlIHRhZywgZmlsZT1mcCkKKy0gICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBnbG9iYWxfa3dhcmdzLml0ZW1zKCk6CisrICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gbGlzdChnbG9iYWxfa3dhcmdzLml0ZW1zKCkpOgorICAgICAgICAgICAgICAgICBwcmludCgnJXMgPSAlcycgJSAoa2V5LCB2YWx1ZSksIGZpbGU9ZnApCisgICAgICAgICAgICAgcHJpbnQoZmlsZT1mcCkKKyAKK0BAIC02MDIsNyArNjAyLDcgQEAgY2xhc3MgTWFuaWZlc3RQYXJzZXIob2JqZWN0KToKKyAgICAgICAgIGludGVybmFsIGZ1bmN0aW9uIHRvIGltcG9ydCBkaXJlY3RvcmllcworICAgICAgICAgIiIiCisgCistICAgICAgICBpZiBpc2luc3RhbmNlKHBhdHRlcm4sIGJhc2VzdHJpbmcpOgorKyAgICAgICAgaWYgaXNpbnN0YW5jZShwYXR0ZXJuLCBzdHIpOgorICAgICAgICAgICAgIHBhdHRlcm5zID0gW3BhdHRlcm5dCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIHBhdHRlcm5zID0gcGF0dGVybgorZGlmZiAtLWdpdCBhL3Rlc3RpbmcvbW96YmFzZS9tb3ppbmZvL21vemluZm8vbW96aW5mby5weSBiL3Rlc3RpbmcvbW96YmFzZS9tb3ppbmZvL21vemluZm8vbW96aW5mby5weQoraW5kZXggOTBjMTg3NTY4Li42YzVhMWYzMjIgMTAwNzU1CistLS0gYS90ZXN0aW5nL21vemJhc2UvbW96aW5mby9tb3ppbmZvL21vemluZm8ucHkKKysrKyBiL3Rlc3RpbmcvbW96YmFzZS9tb3ppbmZvL21vemluZm8vbW96aW5mby5weQorQEAgLTgsNyArOCw3IEBACisgIyBsaW51eCkgdG8gdGhlIGluZm9ybWF0aW9uOyBJIGNlcnRhaW5seSB3b3VsZG4ndCB3YW50IGFueW9uZSBwYXJzaW5nIHRoaXMKKyAjIGluZm9ybWF0aW9uIGFuZCBoYXZpbmcgYmVoYXZpb3VyIGRlcGVuZCBvbiBpdAorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbgorKworIAorIGltcG9ydCBvcworIGltcG9ydCBwbGF0Zm9ybQorQEAgLTI0LDcgKzI0LDcgQEAgX29zID0gb3MKKyBjbGFzcyB1bmtub3duKG9iamVjdCk6CisgICAgICIiIm1hcmtlciBjbGFzcyBmb3IgdW5rbm93biBpbmZvcm1hdGlvbiIiIgorIAorLSAgICBkZWYgX19ub256ZXJvX18oc2VsZik6CisrICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKKyAgICAgICAgIHJldHVybiBGYWxzZQorIAorICAgICBkZWYgX19zdHJfXyhzZWxmKToKK0BAIC05NiwyMCArOTYsMTcgQEAgZWxpZiBzeXN0ZW0uc3RhcnRzd2l0aCgoJ01JTkdXJywgJ01TWVNfTlQnKSk6CisgICAgIGluZm9bJ29zJ10gPSAnd2luJworICAgICBvc192ZXJzaW9uID0gdmVyc2lvbiA9IHVua25vd24KKyBlbGlmIHN5c3RlbSA9PSAiTGludXgiOgorLSAgICBpZiBoYXNhdHRyKHBsYXRmb3JtLCAibGludXhfZGlzdHJpYnV0aW9uIik6CistICAgICAgICAoZGlzdHJvLCBvc192ZXJzaW9uLCBjb2RlbmFtZSkgPSBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKQorLSAgICBlbHNlOgorLSAgICAgICAgKGRpc3Rybywgb3NfdmVyc2lvbiwgY29kZW5hbWUpID0gcGxhdGZvcm0uZGlzdCgpCisgICAgIGlmIG5vdCBwcm9jZXNzb3I6CisgICAgICAgICBwcm9jZXNzb3IgPSBtYWNoaW5lCistICAgIHZlcnNpb24gPSAiJXMgJXMiICUgKGRpc3Rybywgb3NfdmVyc2lvbikKKysKKysgICAgZGlzdHJvID0gJ09FL1lvY3RvJworKyAgICBvc192ZXJzaW9uID0gdmVyc2lvbiA9IHVua25vd24KKyAKKyAgICAgIyBCdWcgaW4gUHl0aG9uIDIncyBgcGxhdGZvcm1gIGxpYnJhcnk6CisgICAgICMgSXQgd2lsbCByZXR1cm4gYSB0cmlwbGUgb2YgZW1wdHkgc3RyaW5ncyBpZiB0aGUgZGlzdHJpYnV0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuCisgICAgICMgSXQgd29ya3Mgb24gUHl0aG9uIDMuIElmIHdlIGRvbid0IGhhdmUgYW4gT1MgdmVyc2lvbiwKKyAgICAgIyB0aGUgdW5pdCB0ZXN0cyBmYWlsIHRvIHJ1bi4KKyAgICAgaWYgbm90IGRpc3RybyBhbmQgbm90IG9zX3ZlcnNpb24gYW5kIG5vdCBjb2RlbmFtZToKKy0gICAgICAgIGRpc3RybyA9ICdsZnMnCisgICAgICAgICB2ZXJzaW9uID0gcmVsZWFzZQorICAgICAgICAgb3NfdmVyc2lvbiA9IHJlbGVhc2UKKyAKK0BAIC0xMzEsNyArMTI4LDcgQEAgZWxzZToKKyAgICAgb3NfdmVyc2lvbiA9IHZlcnNpb24gPSB1bmtub3duCisgCisgaW5mb1sndmVyc2lvbiddID0gdmVyc2lvbgorLWluZm9bJ29zX3ZlcnNpb24nXSA9IFN0cmluZ1ZlcnNpb24ob3NfdmVyc2lvbikKKytpbmZvWydvc192ZXJzaW9uJ10gPSB2ZXJzaW9uCisgCisgIyBwcm9jZXNzb3IgdHlwZSBhbmQgYml0cworIGlmIHByb2Nlc3NvciBpbiBbImkzODYiLCAiaTY4NiJdOgorQEAgLTE4OCwxMiArMTg1LDcgQEAgZGVmIHVwZGF0ZShuZXdfaW5mbyk6CisgICAgICAgICAgICAgICAgICAgICAgdG8gYSBqc29uIGZpbGUgY29udGFpbmluZyB0aGUgbmV3IGluZm8uCisgICAgICIiIgorIAorLSAgICBQWTMgPSBzeXMudmVyc2lvbl9pbmZvWzBdID09IDMKKy0gICAgaWYgUFkzOgorLSAgICAgICAgc3RyaW5nX3R5cGVzID0gc3RyLAorLSAgICBlbHNlOgorLSAgICAgICAgc3RyaW5nX3R5cGVzID0gYmFzZXN0cmluZywKKy0gICAgaWYgaXNpbnN0YW5jZShuZXdfaW5mbywgc3RyaW5nX3R5cGVzKToKKysgICAgaWYgaXNpbnN0YW5jZShuZXdfaW5mbywgc3RyKToKKyAgICAgICAgICMgbGF6eSBpbXBvcnQKKyAgICAgICAgIGltcG9ydCBtb3pmaWxlCisgICAgICAgICBpbXBvcnQganNvbgorQEAgLTI5NSw3ICsyODcsNyBAQCBkZWYgbWFpbihhcmdzPU5vbmUpOgorIAorICAgICAjIHByaW50IG91dCBjaG9pY2VzIGlmIHJlcXVlc3RlZAorICAgICBmbGFnID0gRmFsc2UKKy0gICAgZm9yIGtleSwgdmFsdWUgaW4gb3B0aW9ucy5fX2RpY3RfXy5pdGVtcygpOgorKyAgICBmb3Iga2V5LCB2YWx1ZSBpbiBsaXN0KG9wdGlvbnMuX19kaWN0X18uaXRlbXMoKSk6CisgICAgICAgICBpZiB2YWx1ZSBpcyBUcnVlOgorICAgICAgICAgICAgIHByaW50KCclcyBjaG9pY2VzOiAlcycgJSAoa2V5LCAnICcuam9pbihbc3RyKGNob2ljZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBjaG9pY2UgaW4gY2hvaWNlc1trZXldXSkpKQorQEAgLTMwNCw3ICsyOTYsNyBAQCBkZWYgbWFpbihhcmdzPU5vbmUpOgorICAgICAgICAgcmV0dXJuCisgCisgICAgICMgb3RoZXJ3aXNlLCBwcmludCBvdXQgYWxsIGluZm8KKy0gICAgZm9yIGtleSwgdmFsdWUgaW4gaW5mby5pdGVtcygpOgorKyAgICBmb3Iga2V5LCB2YWx1ZSBpbiBsaXN0KGluZm8uaXRlbXMoKSk6CisgICAgICAgICBwcmludCgnJXM6ICVzJyAlIChrZXksIHZhbHVlKSkKKyAKKyAKK2RpZmYgLS1naXQgYS90ZXN0aW5nL21vemJhc2UvbW96cHJvY2Vzcy9tb3pwcm9jZXNzL3Byb2Nlc3NoYW5kbGVyLnB5IGIvdGVzdGluZy9tb3piYXNlL21venByb2Nlc3MvbW96cHJvY2Vzcy9wcm9jZXNzaGFuZGxlci5weQoraW5kZXggM2VmYjY1MGI3Li4yNTc1YTQ3MDIgMTAwNjQ0CistLS0gYS90ZXN0aW5nL21vemJhc2UvbW96cHJvY2Vzcy9tb3pwcm9jZXNzL3Byb2Nlc3NoYW5kbGVyLnB5CisrKysgYi90ZXN0aW5nL21vemJhc2UvbW96cHJvY2Vzcy9tb3pwcm9jZXNzL3Byb2Nlc3NoYW5kbGVyLnB5CitAQCAtMiw3ICsyLDcgQEAKKyAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMgZmlsZSwKKyAjIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCisgCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uCisrCisgCisgaW1wb3J0IGVycm5vCisgaW1wb3J0IG9zCitAQCAtMTMsNyArMTMsNyBAQCBpbXBvcnQgdGhyZWFkaW5nCisgaW1wb3J0IHRpbWUKKyBpbXBvcnQgdHJhY2ViYWNrCisgCistZnJvbSBRdWV1ZSBpbXBvcnQgUXVldWUsIEVtcHR5CisrZnJvbSBxdWV1ZSBpbXBvcnQgUXVldWUsIEVtcHR5CisgZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKKyAKKyAKK0BAIC0xMjQsMTQgKzEyNCwxNCBAQCBjbGFzcyBQcm9jZXNzSGFuZGxlck1peGluKG9iamVjdCk6CisgICAgICAgICAgICAgdGhyZWFkID0gdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkubmFtZQorICAgICAgICAgICAgIHByaW50KCJEQkc6Ok1PWlBST0MgUElEOnt9ICh7fSkgfCB7fSIuZm9ybWF0KHNlbGYucGlkLCB0aHJlYWQsIG1zZykpCisgCistICAgICAgICBkZWYgX19kZWxfXyhzZWxmLCBfbWF4aW50PXN5cy5tYXhpbnQpOgorKyAgICAgICAgZGVmIF9fZGVsX18oc2VsZiwgX21heGludD1zeXMubWF4c2l6ZSk6CisgICAgICAgICAgICAgaWYgaXNXaW46CisgICAgICAgICAgICAgICAgIGhhbmRsZSA9IGdldGF0dHIoc2VsZiwgJ19oYW5kbGUnLCBOb25lKQorICAgICAgICAgICAgICAgICBpZiBoYW5kbGU6CisgICAgICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdfaW50ZXJuYWxfcG9sbCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ludGVybmFsX3BvbGwoX2RlYWRzdGF0ZT1fbWF4aW50KQorICAgICAgICAgICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBvbGwoX2RlYWRzdGF0ZT1zeXMubWF4aW50KQorKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucG9sbChfZGVhZHN0YXRlPXN5cy5tYXhzaXplKQorICAgICAgICAgICAgICAgICBpZiBoYW5kbGUgb3Igc2VsZi5fam9iIG9yIHNlbGYuX2lvX3BvcnQ6CisgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbGVhbnVwKCkKKyAgICAgICAgICAgICBlbHNlOgorQEAgLTI0Myw3ICsyNDMsNyBAQCBjbGFzcyBQcm9jZXNzSGFuZGxlck1peGluKG9iamVjdCk6CisgICAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUsCisgICAgICAgICAgICAgICAgICAgICAgYzJwcmVhZCwgYzJwd3JpdGUsCisgICAgICAgICAgICAgICAgICAgICAgZXJycmVhZCwgZXJyd3JpdGUpID0gYXJnc190dXBsZQorLSAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmdzLCBiYXNlc3RyaW5nKToKKysgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYXJncywgc3RyKToKKyAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBzdWJwcm9jZXNzLmxpc3QyY21kbGluZShhcmdzKQorIAorICAgICAgICAgICAgICAgICAjIEFsd2F5cyBvciBpbiB0aGUgY3JlYXRlIG5ldyBwcm9jZXNzIGdyb3VwCitkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvcHl0aG9uL3doaWNoL3doaWNoLnB5IGIvdGhpcmRfcGFydHkvcHl0aG9uL3doaWNoL3doaWNoLnB5CitpbmRleCA5YzdkMTA4MzUuLmYwMmIyNjE2ZSAxMDA2NDQKKy0tLSBhL3RoaXJkX3BhcnR5L3B5dGhvbi93aGljaC93aGljaC5weQorKysrIGIvdGhpcmRfcGFydHkvcHl0aG9uL3doaWNoL3doaWNoLnB5CitAQCAtOTAsMTMgKzkwLDEzIEBAIGRlZiBfZ2V0UmVnaXN0ZXJlZEV4ZWN1dGFibGUoZXhlTmFtZSk6CisgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKKyAgICAgICAgIGlmIG9zLnBhdGguc3BsaXRleHQoZXhlTmFtZSlbMV0ubG93ZXIoKSAhPSAnLmV4ZSc6CisgICAgICAgICAgICAgZXhlTmFtZSArPSAnLmV4ZScKKy0gICAgICAgIGltcG9ydCBfd2lucmVnCisrICAgICAgICBpbXBvcnQgd2lucmVnCisgICAgICAgICB0cnk6CisgICAgICAgICAgICAga2V5ID0gIlNPRlRXQVJFXFxNaWNyb3NvZnRcXFdpbmRvd3NcXEN1cnJlbnRWZXJzaW9uXFxBcHAgUGF0aHNcXCIgK1wKKyAgICAgICAgICAgICAgICAgICBleGVOYW1lCistICAgICAgICAgICAgdmFsdWUgPSBfd2lucmVnLlF1ZXJ5VmFsdWUoX3dpbnJlZy5IS0VZX0xPQ0FMX01BQ0hJTkUsIGtleSkKKysgICAgICAgICAgICB2YWx1ZSA9IHdpbnJlZy5RdWVyeVZhbHVlKHdpbnJlZy5IS0VZX0xPQ0FMX01BQ0hJTkUsIGtleSkKKyAgICAgICAgICAgICByZWdpc3RlcmVkID0gKHZhbHVlLCAiZnJvbSBIS0xNXFwiK2tleSkKKy0gICAgICAgIGV4Y2VwdCBfd2lucmVnLmVycm9yOgorKyAgICAgICAgZXhjZXB0IHdpbnJlZy5lcnJvcjoKKyAgICAgICAgICAgICBwYXNzCisgICAgICAgICBpZiByZWdpc3RlcmVkIGFuZCBub3Qgb3MucGF0aC5leGlzdHMocmVnaXN0ZXJlZFswXSk6CisgICAgICAgICAgICAgcmVnaXN0ZXJlZCA9IE5vbmUKK0BAIC0yNDQsNyArMjQ0LDcgQEAgZGVmIHdoaWNoKGNvbW1hbmQsIHBhdGg9Tm9uZSwgdmVyYm9zZT0wLCBleHRzPU5vbmUpOgorICAgICBJZiBubyBtYXRjaCBpcyBmb3VuZCBmb3IgdGhlIGNvbW1hbmQsIGEgV2hpY2hFcnJvciBpcyByYWlzZWQuCisgICAgICIiIgorICAgICB0cnk6CistICAgICAgICBtYXRjaCA9IHdoaWNoZ2VuKGNvbW1hbmQsIHBhdGgsIHZlcmJvc2UsIGV4dHMpLm5leHQoKQorKyAgICAgICAgbWF0Y2ggPSBuZXh0KHdoaWNoZ2VuKGNvbW1hbmQsIHBhdGgsIHZlcmJvc2UsIGV4dHMpKQorICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgIHJhaXNlIFdoaWNoRXJyb3IoIkNvdWxkIG5vdCBmaW5kICclcycgb24gdGhlIHBhdGguIiAlIGNvbW1hbmQpCisgICAgIHJldHVybiBtYXRjaAorQEAgLTI4MSwxNyArMjgxLDE3IEBAIGRlZiBtYWluKGFyZ3YpOgorICAgICB0cnk6CisgICAgICAgICBvcHRsaXN0LCBhcmdzID0gZ2V0b3B0LmdldG9wdChhcmd2WzE6XSwgJ2hhVnZxcDplOicsCisgICAgICAgICAgICAgWydoZWxwJywgJ2FsbCcsICd2ZXJzaW9uJywgJ3ZlcmJvc2UnLCAncXVpZXQnLCAncGF0aD0nLCAnZXh0cz0nXSkKKy0gICAgZXhjZXB0IGdldG9wdC5HZXRvcHRFcnJvciwgbXNnOgorKyAgICBleGNlcHQgZ2V0b3B0LkdldG9wdEVycm9yIGFzIG1zZzoKKyAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIndoaWNoOiBlcnJvcjogJXMuIFlvdXIgaW52b2NhdGlvbiB3YXM6ICVzXG4iXAorICAgICAgICAgICAgICAgICAgICAgICAgICAlIChtc2csIGFyZ3YpKQorICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiVHJ5ICd3aGljaCAtLWhlbHAnLlxuIikKKyAgICAgICAgIHJldHVybiAxCisgICAgIGZvciBvcHQsIG9wdGFyZyBpbiBvcHRsaXN0OgorICAgICAgICAgaWYgb3B0IGluICgnLWgnLCAnLS1oZWxwJyk6CistICAgICAgICAgICAgcHJpbnQgX2NtZGxuVXNhZ2UKKysgICAgICAgICAgICBwcmludChfY21kbG5Vc2FnZSkKKyAgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICAgZWxpZiBvcHQgaW4gKCctVicsICctLXZlcnNpb24nKToKKy0gICAgICAgICAgICBwcmludCAid2hpY2ggJXMiICUgX192ZXJzaW9uX18KKysgICAgICAgICAgICBwcmludCgid2hpY2ggJXMiICUgX192ZXJzaW9uX18pCisgICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgIGVsaWYgb3B0IGluICgnLWEnLCAnLS1hbGwnKToKKyAgICAgICAgICAgICBhbGwgPSAxCitAQCAtMzE5LDkgKzMxOSw5IEBAIGRlZiBtYWluKGFyZ3YpOgorICAgICAgICAgbm1hdGNoZXMgPSAwCisgICAgICAgICBmb3IgbWF0Y2ggaW4gd2hpY2hnZW4oYXJnLCBwYXRoPWFsdHBhdGgsIHZlcmJvc2U9dmVyYm9zZSwgZXh0cz1leHRzKToKKyAgICAgICAgICAgICBpZiB2ZXJib3NlOgorLSAgICAgICAgICAgICAgICBwcmludCAiJXMgKCVzKSIgJSBtYXRjaAorKyAgICAgICAgICAgICAgICBwcmludCgiJXMgKCVzKSIgJSBtYXRjaCkKKyAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICBwcmludCBtYXRjaAorKyAgICAgICAgICAgICAgICBwcmludChtYXRjaCkKKyAgICAgICAgICAgICBubWF0Y2hlcyArPSAxCisgICAgICAgICAgICAgaWYgbm90IGFsbDoKKyAgICAgICAgICAgICAgICAgYnJlYWsKKy0tIAorMi4yMS4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAxLWpzLnBjLmluLWRvLW5vdC1pbmNsdWRlLVJlcXVpcmVkRGVmaW5lcy5oLWZvci1kZXBlbmQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMi1qcy5wYy5pbi1kby1ub3QtaW5jbHVkZS1SZXF1aXJlZERlZmluZXMuaC1mb3ItZGVwZW5kLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1qcy5wYy5pbi1kby1ub3QtaW5jbHVkZS1SZXF1aXJlZERlZmluZXMuaC1mb3ItZGVwZW5kLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMi1qcy5wYy5pbi1kby1ub3QtaW5jbHVkZS1SZXF1aXJlZERlZmluZXMuaC1mb3ItZGVwZW5kLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMy1maXgtY3Jvc3MtY29tcGlsYXRpb24tb24taTU4Ni10YXJnZXRzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDMtZml4LWNyb3NzLWNvbXBpbGF0aW9uLW9uLWk1ODYtdGFyZ2V0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDkyOWE4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDMtZml4LWNyb3NzLWNvbXBpbGF0aW9uLW9uLWk1ODYtdGFyZ2V0cy5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIGE0NTIxMzhhMWRkMjc0YmZhZDM4MWE3MDE3Mjk3ODMzNjBkYzg2ZmIgTW9uIFNlcCAxNyAgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFjaWVqIEJvcnplY2tpIDxtYWNpZWouYm9yemVja2lAb3Blbi1ybmQucGw+CitEYXRlOiBUdWUsIDUgSmFuIDIwMTYgMjI6MDQ6MTcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGNyb3NzIGNvbXBpbGF0aW9uIG9uIGk1ODYgdGFyZ2V0cworCitSZW1vdmUgb2ZmZW5kaW5nIC1XbCwtcnBhdGgtbGluayB0aGF0IG1heSBjYXVzZSBob3N0IGxpYnJhcmllcyB0byBiZSBwaWNrZWQKK2R1cmluZyBsaW5raW5nLiBUaGUgcGF0Y2ggYXBwbGllcyBhIGZpeCB0byBjb25maWd1cmUuaW4uIFNvIGFzIG5vdCB0bworcmVnZW5lcmF0ZSBjb25maWd1cmUsIHNpbWlsYXIgZml4IGlzIGFwcGxpZWQgdGhlcmUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IE1hY2llaiBCb3J6ZWNraSA8bWFjaWVqLmJvcnplY2tpQG9wZW4tcm5kLnBsPgorCitSZWJhc2UgdG8gNTIuOC4xCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSB0byA2MC45LjAgKGZpcmVmb3gtZXNyIHNvdXJjZXMpCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorLS0tCisganMvc3JjL29sZC1jb25maWd1cmUuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9qcy9zcmMvb2xkLWNvbmZpZ3VyZS5pbiBiL2pzL3NyYy9vbGQtY29uZmlndXJlLmluCitpbmRleCAzZDUzZWUxLi4xMWMzZDVhIDEwMDY0NAorLS0tIGEvanMvc3JjL29sZC1jb25maWd1cmUuaW4KKysrKyBiL2pzL3NyYy9vbGQtY29uZmlndXJlLmluCitAQCAtNDA1LDcgKzQwNSw3IEBAIEFTPSckKENDKScKKyBBU19EQVNIX0NfRkxBRz0nLWMnCisgTU9aX1VTRVJfRElSPSIubW96aWxsYSIKKyAKKy1NT1pfRklYX0xJTktfUEFUSFM9Ii1XbCwtcnBhdGgtbGluaywke0RJU1R9L2JpbiAtV2wsLXJwYXRoLWxpbmssJHtwcmVmaXh9L2xpYiIKKytNT1pfRklYX0xJTktfUEFUSFM9Ii1XbCwtcnBhdGgtbGluaywke0RJU1R9L2JpbiIKKyAKKyBkbmwgQ29uZmlndXJlIHBsYXRmb3JtLXNwZWNpZmljIENQVSBhcmNoaXRlY3R1cmUgY29tcGlsZXIgb3B0aW9ucy4KKyBkbmwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIAorMi4yMS4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA0LWRvLW5vdC1jcmVhdGUtcHl0aG9uLWVudmlyb25tZW50LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDQtZG8tbm90LWNyZWF0ZS1weXRob24tZW52aXJvbm1lbnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg1ZmMzNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA0LWRvLW5vdC1jcmVhdGUtcHl0aG9uLWVudmlyb25tZW50LnBhdGNoCkBAIC0wLDAgKzEsNjQgQEAKK0Zyb20gNTAyOGQxY2Q2NjljMTc5ZWQ0OTA2MTMxNmQwNGM4ZTg4NjJhNWJkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTIgSnVsIDIwMTggMTU6MDQ6NDcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzVdIGRvIG5vdCBjcmVhdGUgcHl0aG9uIGVudmlyb25tZW50CisKK1VzZSBvZSdzIHB5dGhvbiBlbnZpcm9ubWVudCByYXRoZXIgdGhhbiBjcmVhdGUgb25lIG9mIGhvc3QKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCitSZWJhc2UgdG8gNjAuOS4wIChmaXJlZm94LWVzciBzb3VyY2VzKQorU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKy0tLQorIGJ1aWxkL21vei5jb25maWd1cmUvaW5pdC5jb25maWd1cmUgfCAxOCAtLS0tLS0tLS0tLS0tLS0tLS0KKyBjb25maWd1cmUucHkgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKysrKysrLQorIDMgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCisKKy0tLSBhL2J1aWxkL21vei5jb25maWd1cmUvaW5pdC5jb25maWd1cmUKKysrKyBiL2J1aWxkL21vei5jb25maWd1cmUvaW5pdC5jb25maWd1cmUKK0BAIC0yNTAsMjQgKzI1MCw2IEBAIGRlZiB2aXJ0dWFsZW52X3B5dGhvbihlbnZfcHl0aG9uLCBidWlsZF8KKyAgICAgZWxzZToKKyAgICAgICAgIHB5dGhvbiA9IHN5cy5leGVjdXRhYmxlCisgCistICAgIGlmIG5vdCBtYW5hZ2VyLnVwX3RvX2RhdGUocHl0aG9uKToKKy0gICAgICAgIGxvZy5pbmZvKCdDcmVhdGluZyBQeXRob24gZW52aXJvbm1lbnQnKQorLSAgICAgICAgbWFuYWdlci5idWlsZChweXRob24pCistCistICAgIHB5dGhvbiA9IG5vcm1zZXAobWFuYWdlci5weXRob25fcGF0aCkKKy0KKy0gICAgaWYgcHl0aG9uICE9IG5vcm1zZXAoc3lzLmV4ZWN1dGFibGUpOgorLSAgICAgICAgbG9nLmluZm8oJ1JlZXhlY3V0aW5nIGluIHRoZSB2aXJ0dWFsZW52JykKKy0gICAgICAgIGlmIGVudl9weXRob246CistICAgICAgICAgICAgZGVsIG9zLmVudmlyb25bJ1BZVEhPTiddCistICAgICAgICAjIE9uZSB3b3VsZCBwcmVmZXIgdG8gdXNlIG9zLmV4ZWNsLCBidXQgdGhhdCdzIGNvbXBsZXRlbHkgYm9ya2VkIG9uCistICAgICAgICAjIFdpbmRvd3MuCistICAgICAgICBzeXMuZXhpdChzdWJwcm9jZXNzLmNhbGwoW3B5dGhvbl0gKyBzeXMuYXJndikpCistCistICAgICMgV2UgYXJlIG5vdyBpbiB0aGUgdmlydHVhbGVudgorLSAgICBpZiBub3QgZGlzdHV0aWxzLnN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYigpOgorLSAgICAgICAgZGllKCdDb3VsZCBub3QgZGV0ZXJtaW5lIHB5dGhvbiBzaXRlIHBhY2thZ2VzIGRpcmVjdG9yeScpCistCisgICAgIHJldHVybiBweXRob24KKyAKKyAKKy0tLSBhL2NvbmZpZ3VyZS5weQorKysrIGIvY29uZmlndXJlLnB5CitAQCAtMTIsNyArMTIsMTUgQEAgaW1wb3J0IHRleHR3cmFwCisgCisgCisgYmFzZV9kaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKKy1zeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKGJhc2VfZGlyLCAncHl0aG9uJywgJ21vemJ1aWxkJykpCisrc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihiYXNlX2RpciwgJ2NvbmZpZycpKQorK2RlZiBnZXRfaW1tZWRpYXRlX3N1YmRpcmVjdG9yaWVzKGFfZGlyKToKKysgICAgcmV0dXJuIFtuYW1lIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoYV9kaXIpCisrICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oYV9kaXIsIG5hbWUpKV0KKytmb3IgcyBpbiBbInB5dGhvbiIsICJ0ZXN0aW5nL21vemJhc2UiXToKKysgICAgc3ViX2RpciA9IG9zLnBhdGguam9pbihiYXNlX2RpciwgcykKKysgICAgZm9yIG1vZHVsZV9kaXIgaW4gZ2V0X2ltbWVkaWF0ZV9zdWJkaXJlY3RvcmllcyhzdWJfZGlyKToKKysgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oc3ViX2RpciwgbW9kdWxlX2RpcikpCisrCisgZnJvbSBtb3pidWlsZC5jb25maWd1cmUgaW1wb3J0IENvbmZpZ3VyZVNhbmRib3gKKyBmcm9tIG1vemJ1aWxkLm1ha2V1dGlsIGltcG9ydCBNYWtlZmlsZQorIGZyb20gbW96YnVpbGQucHl0aG9udXRpbCBpbXBvcnQgaXRlcl9tb2R1bGVzX2luX3BhdGgKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAyLWZpeC1jYW5ub3QtZmluZC1saW5rLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDUtZml4LWNhbm5vdC1maW5kLWxpbmsucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAyLWZpeC1jYW5ub3QtZmluZC1saW5rLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwNS1maXgtY2Fubm90LWZpbmQtbGluay5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDMtd29ya2Fyb3VuZC1hdXRvY29uZi0yLjEzLWRldGVjdGlvbi1mYWlsZWQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwNi13b3JrYXJvdW5kLWF1dG9jb25mLTIuMTMtZGV0ZWN0aW9uLWZhaWxlZC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDMtd29ya2Fyb3VuZC1hdXRvY29uZi0yLjEzLWRldGVjdGlvbi1mYWlsZWQucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA2LXdvcmthcm91bmQtYXV0b2NvbmYtMi4xMy1kZXRlY3Rpb24tZmFpbGVkLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwNS1maXgtZG9fY29tcGlsZS1mYWlsZWQtb24tbWlwcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA3LWZpeC1kb19jb21waWxlLWZhaWxlZC1vbi1taXBzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwNS1maXgtZG9fY29tcGlsZS1mYWlsZWQtb24tbWlwcy5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDctZml4LWRvX2NvbXBpbGUtZmFpbGVkLW9uLW1pcHMucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy9hZGQtcmlzY3Ytc3VwcG9ydC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA4LWFkZC1yaXNjdi1zdXBwb3J0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvYWRkLXJpc2N2LXN1cHBvcnQucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA4LWFkZC1yaXNjdi1zdXBwb3J0LnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1tb3pqcy1maXgtY29yZWR1bXAtY2F1c2VkLWJ5LWdldGVudi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA5LW1vempzLWZpeC1jb3JlZHVtcC1jYXVzZWQtYnktZ2V0ZW52LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1tb3pqcy1maXgtY29yZWR1bXAtY2F1c2VkLWJ5LWdldGVudi5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDktbW96anMtZml4LWNvcmVkdW1wLWNhdXNlZC1ieS1nZXRlbnYucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy9mb3JtYXQtb3ZlcmZsb3cucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAxMC1mb3JtYXQtb3ZlcmZsb3cucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy9mb3JtYXQtb3ZlcmZsb3cucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDEwLWZvcm1hdC1vdmVyZmxvdy5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDEtVG8tZml4LWJ1aWxkLWVycm9yLW9uLWFybTMyQkUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAxMS1Uby1maXgtYnVpbGQtZXJyb3Itb24tYXJtMzJCRS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDEtVG8tZml4LWJ1aWxkLWVycm9yLW9uLWFybTMyQkUucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDExLVRvLWZpeC1idWlsZC1lcnJvci1vbi1hcm0zMkJFLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvSlNfUFVCTElDX0FQSS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDEyLUpTX1BVQkxJQ19BUEkucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy9KU19QVUJMSUNfQVBJLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAxMi1KU19QVUJMSUNfQVBJLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1yaXNjdi1EaXNhYmxlLWF0b21pYy1vcGVyYXRpb25zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMTMtcmlzY3YtRGlzYWJsZS1hdG9taWMtb3BlcmF0aW9ucy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDEtcmlzY3YtRGlzYWJsZS1hdG9taWMtb3BlcmF0aW9ucy5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMTMtcmlzY3YtRGlzYWJsZS1hdG9taWMtb3BlcmF0aW9ucy5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzL2ZhbGxiYWNrLXRvLTIwMTEtQysrLXN0YW5kYXJkLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMTQtZmFsbGJhY2stdG8tMjAxMS1DKystc3RhbmRhcmQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy9mYWxsYmFjay10by0yMDExLUMrKy1zdGFuZGFyZC5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMTQtZmFsbGJhY2stdG8tMjAxMS1DKystc3RhbmRhcmQucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAxLWZpeC1jb21waWxpbmctZmFpbHVyZS1vbi1taXBzNjQtbjMyLWJzcC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy9taXBzYXJjaG4zMi8wMDAxLWZpeC1jb21waWxpbmctZmFpbHVyZS1vbi1taXBzNjQtbjMyLWJzcC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDEtZml4LWNvbXBpbGluZy1mYWlsdXJlLW9uLW1pcHM2NC1uMzItYnNwLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvbWlwc2FyY2huMzIvMDAwMS1maXgtY29tcGlsaW5nLWZhaWx1cmUtb24tbWlwczY0LW4zMi1ic3AucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA2LXN1cHBvcnQtbXVzbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy9tdXNsLzAwMDEtc3VwcG9ydC1tdXNsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwNi1zdXBwb3J0LW11c2wucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy9tdXNsLzAwMDEtc3VwcG9ydC1tdXNsLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1qcy1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzL211c2wvMDAwMi1qcy1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1qcy1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvbXVzbC8wMDAyLWpzLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqc182MC45LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anNfNjAuOS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NjZjNjIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anNfNjAuOS4wLmJiCkBAIC0wLDAgKzEsMTM1IEBACitTVU1NQVJZID0gIlNwaWRlck1vbmtleSBpcyBNb3ppbGxhJ3MgSmF2YVNjcmlwdCBlbmdpbmUgd3JpdHRlbiBpbiBDL0MrKyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTW96aWxsYS9Qcm9qZWN0cy9TcGlkZXJNb25rZXkiCitMSUNFTlNFID0gIk1QTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kYzliNmVjZDE5YTE0YTU0YTYyOGVkYWFmMjM3MzNiZiIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHBzOi8vYXJjaGl2ZS5tb3ppbGxhLm9yZy9wdWIvZmlyZWZveC9yZWxlYXNlcy8ke1BWfWVzci9zb3VyY2UvZmlyZWZveC0ke1BWfWVzci5zb3VyY2UudGFyLnh6IFwKKyAgICBmaWxlOi8vMDAwMS1Qb3J0LWJ1aWxkLXRvLXB5dGhvbjMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLWpzLnBjLmluLWRvLW5vdC1pbmNsdWRlLVJlcXVpcmVkRGVmaW5lcy5oLWZvci1kZXBlbmQucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLWZpeC1jcm9zcy1jb21waWxhdGlvbi1vbi1pNTg2LXRhcmdldHMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA0LWRvLW5vdC1jcmVhdGUtcHl0aG9uLWVudmlyb25tZW50LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNS1maXgtY2Fubm90LWZpbmQtbGluay5wYXRjaCBcCisgICAgZmlsZTovLzAwMDYtd29ya2Fyb3VuZC1hdXRvY29uZi0yLjEzLWRldGVjdGlvbi1mYWlsZWQucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA3LWZpeC1kb19jb21waWxlLWZhaWxlZC1vbi1taXBzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwOC1hZGQtcmlzY3Ytc3VwcG9ydC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDktbW96anMtZml4LWNvcmVkdW1wLWNhdXNlZC1ieS1nZXRlbnYucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDEwLWZvcm1hdC1vdmVyZmxvdy5wYXRjaCBcCisgICAgZmlsZTovLzAwMTEtVG8tZml4LWJ1aWxkLWVycm9yLW9uLWFybTMyQkUucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDEyLUpTX1BVQkxJQ19BUEkucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDEzLXJpc2N2LURpc2FibGUtYXRvbWljLW9wZXJhdGlvbnMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDE0LWZhbGxiYWNrLXRvLTIwMTEtQysrLXN0YW5kYXJkLnBhdGNoIFwKKyIKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAorICAgIGZpbGU6Ly9tdXNsLzAwMDEtc3VwcG9ydC1tdXNsLnBhdGNoIFwKKyAgICBmaWxlOi8vbXVzbC8wMDAyLWpzLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfbWlwc2FyY2huMzIgPSAiIFwKKyAgICBmaWxlOi8vbWlwc2FyY2huMzIvMDAwMS1maXgtY29tcGlsaW5nLWZhaWx1cmUtb24tbWlwczY0LW4zMi1ic3AucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjY5YTBiZTljZTY5NWU1ZGM0OTQxZWQwYzc4ZWYwMGMyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlmNDUzYzhjYzU2NjllNDZlMzhmOTc3NzY0ZDQ5YTM2Mjk1YmYwZDAyMzYxOWQ5YWFjNzgyZTZiYjNlOGM1M2YiCisKK1MgPSAiJHtXT1JLRElSfS9maXJlZm94LSR7QGQuZ2V0VmFyKCJQViIpLnJlcGxhY2UoImVzciIsICIiKX0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwZXJsbmF0aXZlIHB5dGhvbjNuYXRpdmUKKworaW5oZXJpdCBmZWF0dXJlc19jaGVjaworQ09ORkxJQ1RfRElTVFJPX0ZFQVRVUkVTX21pcHNhcmNobjMyID0gImxkLWlzLWdvbGQiCisKK0RFUEVORFMgKz0gIiBcCisgICAgbnNwciB6bGliIGF1dG9jb25mLTIuMTMtbmF0aXZlIFwKKyAgICBweXRob24zLXNpeC1uYXRpdmUgcHl0aG9uMy1weXRvbWwtbmF0aXZlIFwKKyAgICBweXRob24zLWpzbWluLW5hdGl2ZSBweXRob24zLXNpeCBcCisiCisKKyMgRGlzYWJsZSBudWxsIHBvaW50ZXIgb3B0aW1pemF0aW9uIGluIGdjYyA+PSA2CisjIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTMyODA0NQorQ0ZMQUdTICs9ICItZm5vLXRyZWUtdnJwIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tZGVsZXRlLW51bGwtcG9pbnRlci1jaGVja3MiCitDWFhGTEFHUyArPSAiLWZuby10cmVlLXZycCAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWRlbGV0ZS1udWxsLXBvaW50ZXItY2hlY2tzIgorCisjIG5zcHIncyBwYWNrYWdlLWNvbmZpZyBpcyBpZ25vcmVkIHNvIHNldCBsaWJzIG1hbnVhbGx5CitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLXRhcmdldD0ke1RBUkdFVF9TWVN9IFwKKyAgICAtLWhvc3Q9JHtCVUlMRF9TWVN9IFwKKyAgICAtLXByZWZpeD0ke3ByZWZpeH0gXAorICAgIC0tbGliZGlyPSR7bGliZGlyfSBcCisgICAgLS1kaXNhYmxlLXRlc3RzIC0tZGlzYWJsZS1zdHJpcCAtLWRpc2FibGUtb3B0aW1pemUgXAorICAgIC0tZGlzYWJsZS1qZW1hbGxvYyBcCisgICAgLS13aXRoLW5zcHItY2ZsYWdzPSctSSR7U1RBR0lOR19JTkNESVJ9L25zcHIgLUkke1NUQUdJTkdfSU5DRElSfS9uc3MzJyBcCisgICAgLS13aXRoLW5zcHItbGlicz0nLWxwbGRzNCAtbHBsYzQgLWxuc3ByNCcgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICItLWVuYWJsZS1nb2xkIiwgJy0tZGlzYWJsZS1nb2xkJywgZCl9IFwKKyIKKworIyBXaXRob3V0IHRoaXMsIEpTX0luaXQoKSB3aWxsIGZhaWwgZm9yIG1pcHM2NC4KK0VYVFJBX09FQ09ORl9hcHBlbmRfbWlwc2FyY2ggPSAiIC0td2l0aC1pbnRsLWFwaT1idWlsZCIKK0VYVFJBX09FQ09ORl9hcHBlbmRfcG93ZXJwYyA9ICIgLS13aXRoLWludGwtYXBpPWJ1aWxkIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX21pcHNhcmNoID0gIiAtLWRpc2FibGUtaW9uIgorRVhUUkFfT0VDT05GX2FwcGVuZF9yaXNjdjY0ID0gIiAtLWRpc2FibGUtaW9uIgorRVhUUkFfT0VDT05GX2FwcGVuZF9yaXNjdjMyID0gIiAtLWRpc2FibGUtaW9uIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0teC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSAtLXgtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9LC0teC1pbmNsdWRlcz1ubyAtLXgtbGlicmFyaWVzPW5vLHZpcnR1YWwvbGlieDExIgorCitFWFRSQV9PRU1BS0VfdGFzay1jb21waWxlICs9ICJCVUlMRF9PUFQ9MSBPU19MREZMQUdTPSctV2wsLWxhdG9taWMgJHtMREZMQUdTfSciCitFWFRSQV9PRU1BS0VfdGFzay1pbnN0YWxsICs9ICJTVEFUSUNfTElCUkFSWV9OQU1FPWpzX3N0YXRpYyIKKworZXhwb3J0IEhPU1RfQ0MgPSAiJHtCVUlMRF9DQ30iCitleHBvcnQgSE9TVF9DWFggPSAiJHtCVUlMRF9DWFh9IgorZXhwb3J0IEhPU1RfQ0ZMQUdTID0gIiR7QlVJTERfQ0ZMQUdTfSIKK2V4cG9ydCBIT1NUX0NQUEZMQUdTID0gIiR7QlVJTERfQ1BQRkxBR1N9IgorZXhwb3J0IEhPU1RfQ1hYRkxBR1MgPSAiJHtCVUlMRF9DWFhGTEFHU30iCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICBleHBvcnQgU0hFTEw9Ii9iaW4vc2giCisgICAgY2QgJHtTfQorICAgICMgQWRkIG1vempzIHB5dGhvbi1tb2R1bGVzIG5lY2Vzc2FyeQorICAgIFBZVEhPTlBBVEg9IiR7U30vdGhpcmRfcGFydHkvcHl0aG9uL3doaWNoOiR7U30vY29uZmlnOiR7U30vYnVpbGQiCisgICAgZm9yIHN1Yl9kaXIgaW4gcHl0aG9uIHRlc3RpbmcvbW96YmFzZTsgZG8KKyAgICAgICAgZm9yIG1vZHVsZV9kaXIgaW4gYGxzICRzdWJfZGlyIC0xYDtkbworICAgICAgICAgICAgWyAkbW9kdWxlX2RpciA9ICJ2aXJ0dWFsZW52IiBdICYmIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBbIC1kICIke1N9LyRzdWJfZGlyLyRtb2R1bGVfZGlyIiBdO3RoZW4KKyAgICAgICAgICAgICAgICBQWVRIT05QQVRIPSIkUFlUSE9OUEFUSDoke1N9LyRzdWJfZGlyLyRtb2R1bGVfZGlyIgorICAgICAgICAgICAgZmkKKyAgICAgICAgZG9uZQorICAgIGRvbmUKKyAgICBlY2hvICIkUFlUSE9OUEFUSCIgPiAke0J9L1BZVEhPTlBBVEgKKyAgICBleHBvcnQgUFlUSE9OUEFUSD1gY2F0ICR7Qn0vUFlUSE9OUEFUSGAKKworICAgIGNkICR7U30vanMvc3JjCisgICAgYXV0b2NvbmYyMTMgLS1tYWNyb2Rpcj0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2F1dG9jb25mMjEzIG9sZC1jb25maWd1cmUuaW4gPiBvbGQtY29uZmlndXJlCisKKyAgICBjZCAke0J9CisgICAgJHtTfS9qcy9zcmMvY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQorCisgICAgIyBNYWtlIHN0YW5kYXJkIE1ha2VmaWxlIGNoZWNrcyBwYXNzCisgICAgdG91Y2ggJHtTfS9qcy9zcmMvY29uZmlndXJlCisgICAgdG91Y2ggJHtCfS9jb25maWcuc3RhdHVzCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBleHBvcnQgU0hFTEw9Ii9iaW4vc2giCisgICAgZXhwb3J0IFBZVEhPTlBBVEg9YGNhdCAke0J9L1BZVEhPTlBBVEhgCit9CisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKyAgICBleHBvcnQgU0hFTEw9Ii9iaW4vc2giCisgICAgZXhwb3J0IFBZVEhPTlBBVEg9YGNhdCAke0J9L1BZVEhPTlBBVEhgCit9CisKK1BBQ0tBR0VTID0rICJsaWIke0JQTn0iCitGSUxFU19saWIke0JQTn0gKz0gIiR7bGliZGlyfS9saWIqLnNvIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vanM2MC1jb25maWciCisKKyMgRmFpbHMgdG8gYnVpbGQgd2l0aCB0aHVtYi0xIChxZW11YXJtKQorI3wge3N0YW5kYXJkIGlucHV0fTogQXNzZW1ibGVyIG1lc3NhZ2VzOgorI3wge3N0YW5kYXJkIGlucHV0fToyMTcyOiBFcnJvcjogc2hpZnRzIGluIENNUC9NT1YgaW5zdHJ1Y3Rpb25zIGFyZSBvbmx5IHN1cHBvcnRlZCBpbiB1bmlmaWVkIHN5bnRheCAtLSBgbW92IHIyLHIxLExTUiMyMCcKKyN8IHtzdGFuZGFyZCBpbnB1dH06MjE3MzogRXJyb3I6IHVuc2hpZnRlZCByZWdpc3RlciByZXF1aXJlZCAtLSBgYmljIHIyLHIyLCMoMTw8MTEpJworI3wge3N0YW5kYXJkIGlucHV0fToyMTc0OiBFcnJvcjogdW5zaGlmdGVkIHJlZ2lzdGVyIHJlcXVpcmVkIC0tIGBvcnIgcjEscjEsIygxPDwyMCknCisjfCB7c3RhbmRhcmQgaW5wdXR9OjIxNzY6IEVycm9yOiBpbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkIGluIFRodW1iMTYgbW9kZSAtLSBgc3VicyByMixyMiwjMHgzMDAnCisjfCB7c3RhbmRhcmQgaW5wdXR9OjIxNzg6IEVycm9yOiBpbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkIGluIFRodW1iMTYgbW9kZSAtLSBgc3VicyByNSxyMiwjNTInCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorCitESVNBQkxFX1NUQVRJQyA9ICIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtc3VwcG9ydC9zbWVtL3NtZW0vMDAwMS1zbWVtLWZpeC1zdXBwb3J0LWZvci1zb3VyY2Utb3B0aW9uLXB5dGhvbjMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtc3VwcG9ydC9zbWVtL3NtZW0vMDAwMS1zbWVtLWZpeC1zdXBwb3J0LWZvci1zb3VyY2Utb3B0aW9uLXB5dGhvbjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWMxYmU1YQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1zdXBwb3J0L3NtZW0vc21lbS8wMDAxLXNtZW0tZml4LXN1cHBvcnQtZm9yLXNvdXJjZS1vcHRpb24tcHl0aG9uMy5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIDNmZjc4ZjFmMDA5NzMzOTNkMWE3ZWU0ZTQ2N2EyYmFjZjFjODA3ZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8Z2l0QGFuZHJlZC5uZXQ+CitEYXRlOiBXZWQsIDUgRmViIDIwMjAgMTY6MTQ6MjEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gc21lbTogZml4IHN1cHBvcnQgZm9yIC0tc291cmNlIG9wdGlvbiAocHl0aG9uMykKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVXNpbmcgLS1zb3VyY2UgZG9lc24ndCB3b3JrIHdpdGhvdXQgdGhpcyBwYXRjaDoKK1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgRmlsZSAiLi9zbWVtIiwgbGluZSA3MjcsIGluIDxtb2R1bGU+CisgICAgc2hvd3BpZHMoKQorICBGaWxlICIuL3NtZW0iLCBsaW5lIDI5OSwgaW4gc2hvd3BpZHMKKyAgICBzaG93dGFibGUocHQua2V5cygpLCBmaWVsZHMsIGNvbHVtbnMuc3BsaXQoKSwgb3B0aW9ucy5zb3J0IG9yICdwc3MnKQorICBGaWxlICIuL3NtZW0iLCBsaW5lIDUxOSwgaW4gc2hvd3RhYmxlCisgICAgbXQgPSB0b3RhbG1lbSgpCisgIEZpbGUgIi4vc21lbSIsIGxpbmUgMTE4LCBpbiB0b3RhbG1lbQorICAgIF90b3RhbG1lbSA9IG1lbW9yeSgpWydtZW10b3RhbCddCisgIEZpbGUgIi4vc21lbSIsIGxpbmUgMTkzLCBpbiBtZW1vcnkKKyAgICBtID0gZi5tYXRjaChsKQorVHlwZUVycm9yOiBjYW5ub3QgdXNlIGEgc3RyaW5nIHBhdHRlcm4gb24gYSBieXRlcy1saWtlIG9iamVjdAorCitweXRob24zJ3MgdGFyZmlsZSByZXR1cm5zIGJ5dGVzLCB3aGVyZWFzIGFsbCBvZiB0aGUgcmVzdCBvZgordGhlIGNvZGUgYXNzdW1lcyBzdHIuCisKK0ZpeCB0aGUgdGFyZmlsZSB1c2FnZSB0byBjb252ZXJ0IHRvIHN0ciBiZWZvcmUgcmV0dXJuaW5nIHRoZQorcmVzdWx0cy4KKworU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGdpdEBhbmRyZWQubmV0PgorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt1cHN0cmVhbSB3YW50cyB0byBzdXBwb3J0IHB5dGhvbjIgJiBweXRob24zXQorLS0tCisgc21lbSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zbWVtIGIvc21lbQoraW5kZXggNDZhMzE4OS4uNTRkNDBkZCAxMDA3NTUKKy0tLSBhL3NtZW0KKysrKyBiL3NtZW0KK0BAIC05MCw5ICs5MCw5IEBAIGNsYXNzIHRhcmRhdGEocHJvY2RhdGEpOgorICAgICAgICAgICAgICAgICBkLGYgPSB0aS5uYW1lLnNwbGl0KCcvJykKKyAgICAgICAgICAgICAgICAgeWllbGQgZAorICAgICBkZWYgX3JlYWQoc2VsZiwgZik6CistICAgICAgICByZXR1cm4gc2VsZi50YXIuZXh0cmFjdGZpbGUoZikucmVhZCgpCisrICAgICAgICByZXR1cm4gc2VsZi50YXIuZXh0cmFjdGZpbGUoZikucmVhZCgpLmRlY29kZSgpCisgICAgIGRlZiBfcmVhZGxpbmVzKHNlbGYsIGYpOgorLSAgICAgICAgcmV0dXJuIHNlbGYudGFyLmV4dHJhY3RmaWxlKGYpLnJlYWRsaW5lcygpCisrICAgICAgICByZXR1cm4gW2wuZGVjb2RlKCkgZm9yIGwgaW4gc2VsZi50YXIuZXh0cmFjdGZpbGUoZikucmVhZGxpbmVzKCldCisgICAgIGRlZiBwaWR1c2VyKHNlbGYsIHApOgorICAgICAgICAgdCA9IHNlbGYudGFyLmdldG1lbWJlcigiJWQiICUgcCkKKyAgICAgICAgIGlmIHQudW5hbWU6CistLSAKKzIuMjMuMC5yYzEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLXN1cHBvcnQvc21lbS9zbWVtXzEuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1zdXBwb3J0L3NtZW0vc21lbV8xLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBkYjljMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1zdXBwb3J0L3NtZW0vc21lbV8xLjUuYmIKQEAgLTAsMCArMSw0MyBAQAorU1VNTUFSWSA9ICJSZXBvcnQgYXBwbGljYXRpb24gbWVtb3J5IHVzYWdlIGluIGEgbWVhbmluZ2Z1bCB3YXkiCitERVNDUklQVElPTiA9ICJzbWVtIGlzIGEgdG9vbCB0aGF0IGNhbiBnaXZlIG51bWVyb3VzIHJlcG9ydHMgb24gbWVtb3J5IHVzYWdlIG9uIExpbnV4IFwKK3N5c3RlbXMuIFVubGlrZSBleGlzdGluZyB0b29scywgc21lbSBjYW4gcmVwb3J0IHByb3BvcnRpb25hbCBzZXQgc2l6ZSAoUFNTKSwgXAord2hpY2ggaXMgYSBtb3JlIG1lYW5pbmdmdWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGFtb3VudCBvZiBtZW1vcnkgdXNlZCBieSBcCitsaWJyYXJpZXMgYW5kIGFwcGxpY2F0aW9ucyBpbiBhIHZpcnR1YWwgbWVtb3J5IHN5c3RlbS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnNlbGVuaWMuY29tL3NtZW0vIgorU0VDVElPTiA9ICJBcHBsaWNhdGlvbnMvU3lzdGVtIgorCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitIR19DSEFOR0VTRVQgPSAiOTgyNzNjZTMzMWJiIgorU1JDX1VSSSA9ICJodHRwczovL3NlbGVuaWMuY29tL3JlcG8vJHtCUE59L2FyY2hpdmUvJHtIR19DSEFOR0VTRVR9LnRhci5iejI7ZG93bmxvYWRmaWxlbmFtZT0ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc21lbS1maXgtc3VwcG9ydC1mb3Itc291cmNlLW9wdGlvbi1weXRob24zLnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gIjUxYzM5ODk3NzkzNjBmNDJiNDJlZjQ2YjI4MzFiZTNhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE2MTEzMWM2ODZhNmQ5OTYyYTBlOTY5MTI1MjZkZDQ2MzA4ZTAyMmQ2MmUzZjhhY2FlZDVhNTZmZGE4ZTA4Y2UiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NlbGVuaWMuY29tL3JlcG8vc21lbS90YWdzIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitTID0gIiR7V09SS0RJUn0vJHtCUE59LSR7SEdfQ0hBTkdFU0VUfSIKKworZG9fY29tcGlsZSgpIHsKKyAgICAgICAgJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30gc21lbWNhcC5jIC1vIHNtZW1jYXAKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7bWFuZGlyfS9tYW44CisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3NtZW0gJHtEfSR7YmluZGlyfS8KKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCcgJHtEfSR7YmluZGlyfS9zbWVtCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3NtZW1jYXAgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vc21lbS44ICR7RH0vJHttYW5kaXJ9L21hbjgvCit9CisKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtY29yZSBweXRob24zLWNvbXByZXNzaW9uIgorUlJFQ09NTUVORFNfJHtQTn0gPSAicHl0aG9uMy1tYXRwbG90bGliIHB5dGhvbjMtbnVtcHkiCisKK1BBQ0tBR0VfQkVGT1JFX1BOID0gInNtZW1jYXAiCisKK0ZJTEVTX3NtZW1jYXAgPSAiJHtiaW5kaXJ9L3NtZW1jYXAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9wZXJsLWxheWVyL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLW9lLmJiYXBwZW5kIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9wZXJsLWxheWVyL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLW9lLmJiYXBwZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5YmM3ODgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL3BlcmwtbGF5ZXIvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtb2UuYmJhcHBlbmQKQEAgLTAsMCArMSBAQAorUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2Utc3VwcG9ydCArPSAiZGVic3VtcyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvcGVybC1sYXllci9yZWNpcGVzLXN1cHBvcnQvZGVic3Vtcy9kZWJzdW1zXzIuMi4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9wZXJsLWxheWVyL3JlY2lwZXMtc3VwcG9ydC9kZWJzdW1zL2RlYnN1bXNfMi4yLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdhYjVlNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvcGVybC1sYXllci9yZWNpcGVzLXN1cHBvcnQvZGVic3Vtcy9kZWJzdW1zXzIuMi4yLmJiCkBAIC0wLDAgKzEsNTYgQEAKK1NVTU1BUlkgPSAiTWlzY2VsbGFuZW91cyB1dGlsaXRpZXMgc3BlY2lmaWMgdG8gRGViaWFuIgorU1VNTUFSWV8ke1BOfS1jcm9uID0gIkNyb24gc2NyaXB0cyB0byBjb250cm9sIGF1dG9tYXRpYyBkZWJzdW0gY2hlY2tpbmciCitERVNDUklQVElPTiA9ICJBIHRvb2wgZm9yIHZlcmlmaWNhdGlvbiBvZiBpbnN0YWxsZWQgcGFja2FnZSBmaWxlcyBhZ2FpbnN0IFwKK01ENSBjaGVja3N1bXMgZGVic3VtcyBjYW4gdmVyaWZ5IHRoZSBpbnRlZ3JpdHkgb2YgaW5zdGFsbGVkIHBhY2thZ2UgZmlsZXMgXAorYWdhaW5zdCBNRDUgY2hlY2tzdW1zIGluc3RhbGxlZCBieSB0aGUgcGFja2FnZSwgb3IgZ2VuZXJhdGVkIGZyb20gYSAuZGViIFwKK2FyY2hpdmUuIgorREVTQ1JJUFRJT05fJHtQTn0tY3JvbiA9ICJDcm9uIHNjcmlwdHMgdG8gY29udHJvbCBhdXRvbWF0aWMgc3lzdGVtIGludGVncml0eSBcCitjaGVja2luZyB2aWEgZGVic3Vtcy4iCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9NzcwZDc1MTU1M2U2NTU5ZTllYWVmZDJlMTFjY2Y3ZTkiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNzA1MzBUMjEyMTA4Wi9wb29sL21haW4vZC9kZWJzdW1zL2RlYnN1bXNfMi4yLjIudGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjgyYjA3MTA4NTVhN2U1MjEyZDQzNTgxNjNhMjY5ZTc5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFhNjE4OTZmOTNhNmJiZmUwMTYxYzIxZGNkNjc1MjlhZThlMWVjOGMzY2NmMjQ0NTIzYzUyYzRhZDgyNTNkOTciCisKKyMgdGhlIHBhY2thZ2UgaXMgdGFrZW4gZnJvbSBzbmFwc2hvdHMuZGViaWFuLm9yZzsgdGhhdCBzb3VyY2UgaXMgc3RhdGljIGFuZCBnb2VzIHN0YWxlCisjIHNvIHdlIGNoZWNrIHRoZSBsYXRlc3QgdXBzdHJlYW0gZnJvbSBhIGRpcmVjdG9yeSB0aGF0IGRvZXMgZ2V0IHVwZGF0ZWQKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vZC8ke0JQTn0vIgorCitpbmhlcml0IHBlcmxuYXRpdmUgZ2V0dGV4dAorCitERVBFTkRTICs9ICJwbzRhLW5hdGl2ZSIKKworZG9faW5zdGFsbCgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseSAke0R9LyR7c3lzY29uZmRpcn0vY3Jvbi53ZWVrbHkKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vY3Jvbi5tb250aGx5ICR7RH0ke3NiaW5kaXJ9ICR7RH0ke2JpbmRpcn0KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjEgJHtEfSR7bWFuZGlyfS9tYW44CisgICAgICAgIGluc3RhbGwgLW0gMDc1NSBkZWJzdW1zICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSByZGVic3VtcyAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsIC1tIDA3NTUgZGVic3Vtc19pbml0ICR7RH0ke3NiaW5kaXJ9CisgICAgICAgIGluc3RhbGwgLW0gMDY0NCBtYW4vZGVic3Vtcy4xICR7RH0ke21hbmRpcn0vbWFuMS8KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IG1hbi9yZGVic3Vtcy4xICR7RH0ke21hbmRpcn0vbWFuMS8KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IG1hbi9kZWJzdW1zX2luaXQuOCAke0R9JHttYW5kaXJ9L21hbjgvCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCBkZWJpYW4vY3Jvbi5kYWlseSBcCisgICAgICAgICAgICAgICAgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkvZGVic3VtcworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgZGViaWFuL2Nyb24ud2Vla2x5IFwKKyAgICAgICAgICAgICAgICAke0R9LyR7c3lzY29uZmRpcn0vY3Jvbi53ZWVrbHkvZGVic3VtcworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgZGViaWFuL2Nyb24ubW9udGhseSBcCisgICAgICAgICAgICAgICAgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nyb24ubW9udGhseS9kZWJzdW1zCisgICAgICAgICMgTXVzdCBleGlzdCwgZGVmYXVsdHMgdG8gZW1wdHkuCisgICAgICAgIHRvdWNoICR7RH0vJHtzeXNjb25mZGlyfS9kZWJzdW1zLWlnbm9yZQorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tY3JvbiIKKworUkRFUEVORFNfJHtQTn0gPSAiZHBrZyBkcGtnLXBlcmwgbGliZmlsZS1mbm1hdGNoLXBlcmwgcGVybCBcCisgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jb25zdGFudCBwZXJsLW1vZHVsZS1kaWdlc3QtbWQ1IFwKKyAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWVycm5vIHBlcmwtbW9kdWxlLWZjbnRsIFwKKyAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtYmFzZW5hbWUgcGVybC1tb2R1bGUtZmlsZS1jb3B5IFwKKyAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtZmluZCBwZXJsLW1vZHVsZS1maWxlLWdsb2IgXAorICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1wYXRoIHBlcmwtbW9kdWxlLWZpbGUtc3BlYyBcCisgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXRlbXAgcGVybC1tb2R1bGUtZ2V0b3B0LWxvbmcgXAorICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtcG9zaXgiCisKK0ZJTEVTXyR7UE59LWNyb24gPSAiJHtzeXNjb25mZGlyfS9jcm9uLioiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2xpY2Vuc2VzL3d4V2lkZ2V0cyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvbGljZW5zZXMvd3hXaWRnZXRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNmI5ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2xpY2Vuc2VzL3d4V2lkZ2V0cwpAQCAtMCwwICsxLDU0IEBACisgICAgICAgICAgICAgICAgd3hXaW5kb3dzIExpYnJhcnkgTGljZW5jZSwgVmVyc2lvbiAzLjEKKyAgICAgICAgICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgIENvcHlyaWdodCAoYykgMTk5OC0yMDA1IEp1bGlhbiBTbWFydCwgUm9iZXJ0IFJvZWJsaW5nIGV0IGFsCisKKyAgRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCisgIG9mIHRoaXMgbGljZW5jZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLgorCisgICAgICAgICAgICAgICAgICAgICAgIFdYV0lORE9XUyBMSUJSQVJZIExJQ0VOQ0UKKyAgICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCisKKyAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbmNlIGFzIHB1Ymxpc2hlZCBieQorICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbmNlLCBvciAoYXQKKyAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBMaWJyYXJ5CisgIEdlbmVyYWwgUHVibGljIExpY2VuY2UgZm9yIG1vcmUgZGV0YWlscy4KKworICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbmNlCisgIGFsb25nIHdpdGggdGhpcyBzb2Z0d2FyZSwgdXN1YWxseSBpbiBhIGZpbGUgbmFtZWQgQ09QWUlORy5MSUIuICBJZiBub3QsCisgIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCisKKyAgRVhDRVBUSU9OIE5PVElDRQorCisgIDEuIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSBjb3B5cmlnaHQgaG9sZGVycyBvZiB0aGlzIGxpYnJhcnkgZ2l2ZQorICBwZXJtaXNzaW9uIGZvciBhZGRpdGlvbmFsIHVzZXMgb2YgdGhlIHRleHQgY29udGFpbmVkIGluIHRoaXMgcmVsZWFzZSBvZgorICB0aGUgbGlicmFyeSBhcyBsaWNlbmNlZCB1bmRlciB0aGUgd3hXaW5kb3dzIExpYnJhcnkgTGljZW5jZSwgYXBwbHlpbmcKKyAgZWl0aGVyIHZlcnNpb24gMy4xIG9mIHRoZSBMaWNlbmNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uIG9mCisgIHRoZSBMaWNlbmNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlcnMgb2YgdmVyc2lvbgorICAzLjEgb2YgdGhlIExpY2VuY2UgZG9jdW1lbnQuCisKKyAgMi4gVGhlIGV4Y2VwdGlvbiBpcyB0aGF0IHlvdSBtYXkgdXNlLCBjb3B5LCBsaW5rLCBtb2RpZnkgYW5kIGRpc3RyaWJ1dGUKKyAgdW5kZXIgeW91ciBvd24gdGVybXMsIGJpbmFyeSBvYmplY3QgY29kZSB2ZXJzaW9ucyBvZiB3b3JrcyBiYXNlZAorICBvbiB0aGUgTGlicmFyeS4KKworICAzLiBJZiB5b3UgY29weSBjb2RlIGZyb20gZmlsZXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKyAgR2VuZXJhbCBQdWJsaWMgTGljZW5jZSBvciB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5jZSBpbnRvIGEKKyAgY29weSBvZiB0aGlzIGxpYnJhcnksIGFzIHRoaXMgbGljZW5jZSBwZXJtaXRzLCB0aGUgZXhjZXB0aW9uIGRvZXMgbm90CisgIGFwcGx5IHRvIHRoZSBjb2RlIHRoYXQgeW91IGFkZCBpbiB0aGlzIHdheS4gIFRvIGF2b2lkIG1pc2xlYWRpbmcgYW55b25lIGFzCisgIHRvIHRoZSBzdGF0dXMgb2Ygc3VjaCBtb2RpZmllZCBmaWxlcywgeW91IG11c3QgZGVsZXRlIHRoaXMgZXhjZXB0aW9uCisgIG5vdGljZSBmcm9tIHN1Y2ggY29kZSBhbmQvb3IgYWRqdXN0IHRoZSBsaWNlbnNpbmcgY29uZGl0aW9ucyBub3RpY2UKKyAgYWNjb3JkaW5nbHkuCisKKyAgNC4gSWYgeW91IHdyaXRlIG1vZGlmaWNhdGlvbnMgb2YgeW91ciBvd24gZm9yIHRoaXMgbGlicmFyeSwgaXQgaXMgeW91cgorICBjaG9pY2Ugd2hldGhlciB0byBwZXJtaXQgdGhpcyBleGNlcHRpb24gdG8gYXBwbHkgdG8geW91ciBtb2RpZmljYXRpb25zLgorICBJZiB5b3UgZG8gbm90IHdpc2ggdGhhdCwgeW91IG11c3QgZGVsZXRlIHRoZSBleGNlcHRpb24gbm90aWNlIGZyb20gc3VjaAorICBjb2RlIGFuZC9vciBhZGp1c3QgdGhlIGxpY2Vuc2luZyBjb25kaXRpb25zIG5vdGljZSBhY2NvcmRpbmdseS4KKworCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvYW5hbHl6ZS1zdXNwZW5kL2FuYWx5emUtc3VzcGVuZF81LjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2FuYWx5emUtc3VzcGVuZC9hbmFseXplLXN1c3BlbmRfNS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjBhYWQzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvYW5hbHl6ZS1zdXNwZW5kL2FuYWx5emUtc3VzcGVuZF81LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1TVU1NQVJZID0gIkFuYWx5emUgU3VzcGVuZCIKLURFU0NSSVBUSU9OID0gImFuYWx5emUtc3VzcGVuZCBpcyBhIHRvb2wgZm9yIHN5c3RlbSBkZXZlbG9wZXJzIHRvIHZpc3VhbGl6ZSBcCi10aGUgYWN0aXZpdHkgYmV0d2VlbiBzdXNwZW5kIGFuZCByZXN1bWUsIGFsbG93aW5nIHRoZW0gdG8gaWRlbnRpZnkgXAotaW5lZmZpY2llbmNpZXMgYW5kIGJvdHRsZW5lY2tzLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL3N1c3BlbmRyZXN1bWUiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTJmODg0ZDJhZTFmZjg3YzA5ZTViN2NjYzJjNGNhN2UiCi0KLSMgQXBhcnQgZnJvbSB0aGUgbGlzdGVkIFJERVBFTkRTLCBhbmFseXplLXN1c3BlbmQgZGVwZW5kcyBvbiBzb21lIGZlYXR1cmVzCi0jIHByb3ZpZGVkIGJ5IHRoZSBrZXJuZWwuIFRoZXNlIG9wdGlvbnMgYXJlOgotIyAgIC0gQ09ORklHX1BNX0RFQlVHPXkKLSMgICAtIENPTkZJR19QTV9TTEVFUF9ERUJVRz15Ci0jICAgLSBDT05GSUdfRlRSQUNFPXkKLSMgICAtIENPTkZJR19GVU5DVElPTl9UUkFDRVI9eQotIyAgIC0gQ09ORklHX0ZVTkNUSU9OX0dSQVBIX1RSQUNFUj15Ci0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tY29yZSBweXRob24tZGF0ZXRpbWUgcHl0aG9uLXN0cmluZ29sZCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tLzAxb3JnL3N1c3BlbmRyZXN1bWUuZ2l0O3Byb3RvY29sPWh0dHBzIgotU1JDUkVWID0gImNmNTk1MjdkYzI0ZmRkMmYzMTRhZTRkY2FlYjNkNjhhMTE3OTg4ZjYiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtRG0gMDc1NSBhbmFseXplX3N1c3BlbmQucHkgJHtEfSR7YmluZGlyfS9hbmFseXplX3N1c3BlbmQucHkKLSAgICBpbnN0YWxsIC1EbSAwNjQ0IFJFQURNRSAke0R9JHtkb2NkaXJ9L2FuYWx5emUtc3VzcGVuZC9SRUFETUUKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2Zpby9maWxlcy9weXRob24zX3NoZWJhbmdzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9maW8vZmlsZXMvcHl0aG9uM19zaGViYW5ncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjhiMDIxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9maW8vZmlsZXMvcHl0aG9uM19zaGViYW5ncy5wYXRjaApAQCAtMCwwICsxLDM4IEBACitweXRob24zOiBjaGFuZ2UgZm91ciBzaGViYW5ncyB0byBweXRob24zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CisKKy0tLSBhL3Rvb2xzL2Zpb19qc29ucGx1c19jbGF0MmNzdgorKysrIGIvdG9vbHMvZmlvX2pzb25wbHVzX2NsYXQyY3N2CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyBOb3RlOiB0aGlzIHNjcmlwdCBpcyBweXRob24yIGFuZCBweXRob24zIGNvbXBhdGlibGUuCisgIworICMgZmlvX2pzb25wbHVzX2NsYXQyY3N2CistLS0gYS90b29scy9maW9sb2dwYXJzZXIucHkKKysrKyBiL3Rvb2xzL2Zpb2xvZ3BhcnNlci5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgTm90ZTogdGhpcyBzY3JpcHQgaXMgcHl0aG9uMiBhbmQgcHl0aG9uIDMgY29tcGF0aWJsZS4KKyAjCisgIyBmaW9sb2dwYXJzZXIucHkKKy0tLSBhL3Rvb2xzL2hpc3QvZmlvbG9ncGFyc2VyX2hpc3QucHkKKysrKyBiL3Rvb2xzL2hpc3QvZmlvbG9ncGFyc2VyX2hpc3QucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIgCisgICAgIFV0aWxpdHkgZm9yIGNvbnZlcnRpbmcgKl9jbGF0X2hpc3QqIGZpbGVzIGdlbmVyYXRlZCBieSBmaW8gaW50byBsYXRlbmN5IHN0YXRpc3RpY3MuCisgICAgIAorLS0tIGEvdG9vbHMvcGxvdC9maW8yZ251cGxvdAorKysrIGIvdG9vbHMvcGxvdC9maW8yZ251cGxvdAorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgTm90ZTogdGhpcyBzY3JpcHQgaXMgcHl0aG9uMiBhbmQgcHl0aG9uMyBjb21wYXRpYmxlLgorICMKKyAjICBDb3B5cmlnaHQgKEMpIDIwMTMgZU5vdmFuY2UgU0FTIDxsaWNlbnNpbmdAZW5vdmFuY2UuY29tPgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9maW8vZmlvXzMuMTcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2Zpby9maW9fMy4xNy5iYgppbmRleCBlNDFjMjFkLi43NTlkMTA4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2Zpby9maW9fMy4xNy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2Zpby9maW9fMy4xNy5iYgpAQCAtMTEsNyArMTEsOCBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCiAKIERFUEVORFMgPSAibGliYWlvIHpsaWIgY29yZXV0aWxzLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbiBiYXNoIgorREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAncG1lbScsICdwbWRrJywgJycsIGQpfSIKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtY29yZSBiYXNoIgogCiBQQUNLQUdFQ09ORklHX05VTUEgPSAibnVtYSIKICMgQVJNIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IE5VTUEKQEAgLTI0LDYgKzI1LDcgQEAKIFNSQ1JFViA9ICIwOGNlOWRjMjBiOGE0ZTU1ZGI3YWY2ZDg2OWRkZmE0OWI0YTAyZDAzIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLmRrL2Zpby5naXQgXAogICAgICAgICAgIGZpbGU6Ly8wMDAxLXVwZGF0ZS10aGUtaW50ZXJwcmV0ZXItcGF0aHMucGF0Y2ggXAorICAgICAgICAgIGZpbGU6Ly9weXRob24zX3NoZWJhbmdzLnBhdGNoIFwKICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKQEAgLTMyLDcgKzM0LDcgQEAKIERJU0FCTEVfU1RBVElDID0gIiIKIAogRVhUUkFfT0VNQUtFID0gIkNDPScke0NDfScgTERGTEFHUz0nJHtMREZMQUdTfSciCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW9wdGltaXphdGlvbnMiCitFWFRSQV9PRUNPTkYgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAneDg2JywgJy0tZGlzYWJsZS1vcHRpbWl6YXRpb25zJywgJycsIGQpfSIKIAogZG9fY29uZmlndXJlKCkgewogICAgIC4vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9nbG1hcmsyL2dsbWFyazJfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9nbG1hcmsyL2dsbWFyazJfZ2l0LmJiCmluZGV4IDUwYjU1M2MuLjZkMjBiYmQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvZ2xtYXJrMi9nbG1hcmsyX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2dsbWFyazIvZ2xtYXJrMl9naXQuYmIKQEAgLTEwLDEzICsxMCwxMyBAQAogCiBERVBFTkRTID0gImxpYnBuZyBqcGVnIHVkZXYiCiAKLVBWID0gIjIwMTkwOTA0KyR7U1JDUFZ9IgorUFYgPSAiMjAxOTEyMjYrJHtTUkNQVn0iCiAKIENPTVBBVElCTEVfSE9TVF9ycGkgID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3ZjNGdyYXBoaWNzJywgJy4qLWxpbnV4KicsICdudWxsJywgZCl9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZ2xtYXJrMi9nbG1hcmsyLmdpdDtwcm90b2NvbD1odHRwcyBcCiAgICAgICAgICAgIGZpbGU6Ly9weXRob24zLnBhdGNoIgotU1JDUkVWID0gIjI0YTExMzlkY2JmZDg2YmQwMjA2NTMxNmVhYTkwNTU5ZTM5Mzc0ZTEiCitTUkNSRVYgPSAiNzJkYWJjNWQ3MmI0OWM2ZDQ1YmFkZWI4YTk0MWJhNGQ4MjliMGJkNiIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pb3pvbmUzL2lvem9uZTNfNDg4LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pb3pvbmUzL2lvem9uZTNfNDg4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDllMDc3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvaW96b25lMy9pb3pvbmUzXzQ4OC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi1TVU1NQVJZID0gIkZpbGVzeXN0ZW0gYW5kIERpc2sgQmVuY2htYXJraW5nIFRvb2wiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmlvem9uZS5vcmcvIgotQVVUSE9SID0gIkRvbiBDYXBwcyA8ZG9uLmNhcHBzMkB2ZXJpem9uLm5ldD4sIFdpbGxpYW0gRC4gTm9yY290dCA8d25vcmNvdHRAdXMub3JhY2xlLmNvbT4iCi1TRUNUSU9OID0gImNvbnNvbGUvdGVzdHMiCi1MSUNFTlNFID0gImlvem9uZTMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9pb3pvbmUuYztiZWdpbmxpbmU9Mzc7ZW5kbGluZT00ODttZDU9NzMzMTI2MDA5MTg2OGRjYWQwZjllZGVhNzM1YjVmNGIgXAotICAgIGZpbGU6Ly9pb3pvbmUuYztiZWdpbmxpbmU9Mjc2O2VuZGxpbmU9MjgyO21kNT03N2Y5ZWU1MWU0NWI1N2E3ZTc1MTljNGZhMGI0ZjAwYiBcCi0iCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuaW96b25lLm9yZy9zcmMvY3VycmVudC8ke0JQTn1fJHtQVn0udGFyIFwKLSAgICBmaWxlOi8vcGFyYWxsZWxpc20ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWxldC1zeXN0ZW0taGVhZGVycy1wcm92aWRlLXByZWFkNjQucGF0Y2ggXAotICAgIGZpbGU6Ly9jb3B5cmlnaHQudHh0IFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkNjBhNjllNDRjZGE4NDM2ZjRmOTRkODYwOTU4ZWZjMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NjAyNjUxNjNkOTNmMTVmN2FkMzUyZjcyNmQ0ODM3YzVkZDc5NGZmZjM1N2M3NDNmZGI1NmNiY2Y0YWJjYTA0IgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJpb3pvbmUzXyg/UDxwdmVyPlxkKykudGFyIgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59XyR7UFZ9L3NyYy9jdXJyZW50LyIKLQotIwotIyBBbGwgb3RoZXIgYXJjaGVzIGNhbiB1c2UgdGhlIGRlZmF1bHQgT0VNQUtFIGV4Y2VwdCB0aG9zZQotIyBleHBsaWNpdGx5IGxpc3RlZCBiZWxvdy4gQW5vdGhlciwgdGhlIGlvem9uZTMgTWFrZWZpbGUKLSMgbmVlZHMgdG8gYmUgdG9sZCBhYm91dCB0aGUgY3Jvc3MtY29tcGlsZXIgZXhwbGljaXRseSBoZXJlLgotIwotRVhUUkFfT0VNQUtFX3Bvd2VycGMgPSAibGludXgtcG93ZXJwYyBDQz0nJHtDQ30nIEdDQz0nJHtDQ30nIgotRVhUUkFfT0VNQUtFX3Bvd2VycGM2NCA9ICJsaW51eC1wb3dlcnBjNjQgQ0M9JyR7Q0N9JyBHQ0M9JyR7Q0N9JyIKLUVYVFJBX09FTUFLRV94ODYtNjQgPSAibGludXgtQU1ENjQgQ0M9JyR7Q0N9JyBHQ0M9JyR7Q0N9JyIKLUVYVFJBX09FTUFLRV9hcm0gPSAibGludXgtYXJtIENDPScke0NDfScgR0NDPScke0NDfSciCi1FWFRSQV9PRU1BS0UgPSAibGludXggQ0M9JyR7Q0N9JyBHQ0M9JyR7Q0N9JyIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9IFwKLSAgICAgICAgICAgICAgICR7RH0ke21hbmRpcn0vbWFuMSBcCi0gICAgICAgICAgICAgICAke0R9JHtkYXRhZGlyfS9kb2MvJHtCUE59L2V4YW1wbGVzCi0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9pb3pvbmUgJHtEfSR7YmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2ZpbGVvcCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vJHtCUE59XyR7UFZ9L2RvY3MvaW96b25lLjEgJHtEfSR7bWFuZGlyfS9tYW4xLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2NvcHlyaWdodC50eHQgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS8KLQotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9LyouZGVtICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vZXhhbXBsZXMKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9jbGllbnRfbGlzdCAke0R9JHtkYXRhZGlyfS9kb2MvJHtCUE59L2V4YW1wbGVzCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vR251cGxvdC50eHQgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS9leGFtcGxlcwotCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vR2VuZXJhdGVfR3JhcGhzICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vZXhhbXBsZXMKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9nZW5nbnVwbG90LnNoICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vZXhhbXBsZXMKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9yZXBvcnQucGwgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS9leGFtcGxlcwotCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vJHtCUE59XyR7UFZ9L2RvY3MvSW96b25lX3BzLmd6ICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vJHtCUE59XyR7UFZ9L2RvY3MvSU96b25lX21zd29yZF85OC5wZGYgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8ke0JQTn1fJHtQVn0vZG9jcy9SdW5fcnVsZXMuZG9jICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RvYy8ke1BOfS9jb3B5cmlnaHQudHh0IgotCi0jIExJQ0VOU0U6Ci0jCi0jICBDb3B5cmlnaHQgMTk5MSwgMTk5MiwgMTk5NCwgMTk5OCwgMTk5OSwgMjAwMiAgIFdpbGxpYW0gRC4gTm9yY290dAotIwotIyAgTGljZW5zZSB0byBmcmVlbHkgdXNlIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgaXMgaGVyZWJ5IGdyYW50ZWQKLSMgIGJ5IHRoZSBhdXRob3IsIHN1YmplY3QgdG8gdGhlIGNvbmRpdGlvbiB0aGF0IHRoaXMgY29weXJpZ2h0IG5vdGljZQotIyAgcmVtYWlucyBpbnRhY3QuICBUaGUgYXV0aG9yIHJldGFpbnMgdGhlIGV4Y2x1c2l2ZSByaWdodCB0byBwdWJsaXNoCi0jICBkZXJpdmF0aXZlIHdvcmtzIGJhc2VkIG9uIHRoaXMgd29yaywgaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8KLSMgIHJldmlzZWQgdmVyc2lvbnMgb2YgdGhpcyB3b3JrLgotIwotCi0jCi0jIEJlbG93IGlzIGF1dGhvciByZXBseSB0byBxdWVzdGlvbiBhYm91dCBkaXN0cmlidXRpbmcgaW96b25lMyBpbgotIyBPcGVuRW1iZWRkZWQ6Ci0jCi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIwotIyBNYXJjaW4sCi0jCi0jICAgICBSZS1kaXN0cmlidXRpb24gaXMgcGVybWl0dGVkIGFzIGxvbmcgYXMgdGhlIGNvcHlyaWdodCBpcwotIyAgICAgbWFpbnRhaW5lZCBhbmQgdGhlIHNvdXJjZSBjb2RlIGlzIG5vdCBjaGFuZ2VkLiBJIGRvIG5vdAotIyAgICAgc2VlIGEgcHJvYmxlbSB3aXRoIHlvdXIgbW9kcyB0byBlbmFibGUgZmlsZW9wIGZvciBMaW51eC1hcm0sCi0jICAgICBhcyB0aGVzZSBtb2RzIGhhdmUgYmVlbiByZXR1cm5lZCB0byB0aGUgSW96b25lIGZvbGtzLAotIyAgICAgYW5kIHRoZXkgaGF2ZSBiZWVuIGFjY2VwdGVkIGZvciBpbmNsdXNpb24gaW4gdGhlIG5leHQKLSMgICAgIHJlbGVhc2UgOi0pCi0jCi0jIFRoYW5rIHlvdSBmb3IgeW91ciBjb250cmlidXRpb24sCi0jIERvbiBDYXBwcwotIwotIyAtLS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tCi0jIEZyb206ICJNYXJjaW4gSnVzemtpZXdpY3oiIDxmaXJtYUBocncub25lLnBsPgotIyBUbzogIkRvbiBDYXBwcyIgPGRvbi5jYXBwczJAdmVyaXpvbi5uZXQ+OyAiV2lsbGlhbSBELiBOb3Jjb3R0IgotIyA8d25vcmNvdHRAdXMub3JhY2xlLmNvbT4KLSMgU2VudDogU3VuZGF5LCBPY3RvYmVyIDI5LCAyMDA2IDQ6NTUgUE0KLSMgU3ViamVjdDogaW96b25lMyAyNjMgcGF0Y2ggZm9yIGFybSBhbmQgTGljZW5zZSBxdWVzdGlvbgotIwotIwotIyA+IE1vcm5pbmcKLSMgPgotIyA+IEkgd2FudCB0byBpbmNsdWRlIGlvem9uZTMgaW4gT3BlbkVtYmVkZGVkIFsxXSBtZXRhZGF0YSB0byBnaXZlIGl0IGZvcgotIyA+IG90aGVyIGRldmVsb3BlcnMuIEN1cnJlbnRseSBPRSBpcyB1c2VkIHRvIGJ1aWxkIGZldyBkaXN0cmlidXRpb25zIGZvcgotIyA+IG1pc2MgcGxhdGZvcm1zOiBBUk0sIFNIMywgU0g0LCB4ODYsIFBvd2VyUEMgYW5kIGRpZmZlcmVudCB0eXBlcyBvZgotIyA+IG1hY2hpbmVzIChQREEsIHNldHRvcGJveCwgZGV2Ym9hcmRzLCBkZXNrdG9wcywgdGhpbiBjbGllbnRzLCByb3V0ZXJzKS4KLSMgPgotIyA+IEFjY29yZGluZyB0byB5b3VyIGRpc3RyaWJ1dGlvbiBvZiBkZXJpdmF0aW9ucyBpcyBmb3JiaWRkZW4uIFBhY2thZ2luZwotIyA+IGlvem9uZTMgaW4gT3BlbkVtYmVkZGVkIHdpbGwgbm90IGludm9sdmUgYW55IHNvdXJjZSBjb2RlIGNoYW5nZXMuIEJ1dAotIyA+IHdoZW4gSSB3YXMgYnVpbGRpbmcgaXQgZm9yIEFSTSBJIGRpc2NvdmVyZWQgdGhhdCBmaWxlb3AgYmluYXJ5IHdhcyBub3QKLSMgPiBidWlsdCAtIHNvIEkgY3JlYXRlZCBwYXRjaCBmb3IgaXQgKGF0dGFjaGVkKS4gTm90IHlldCB0ZXN0ZWQgaXQgb24gdGFyZ2V0Ci0jID4gZGV2aWNlLgotIyA+Ci0jID4gVGh1cywgSSBzZWVrIHlvdXIgd3JpdHRlbiBwZXJtaXNzaW9uIHZpYSBlLW1haWwgdG8gZGlzdHJpYnV0ZSBhIHBhY2thZ2Ugb2YKLSMgPiB0aGUgdW5tb2RpZmllZCBzb3VyY2UgY29kZSBhbmQgYWxzbyBhIHBhY2thZ2Ugb2YgdGhlIHByZS1jb21waWxlZCBiaW5hcnkuCi0jID4gWW91ciBjb3B5cmlnaHQgc3RhdGVtZW50IHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2UuCi0jID4KLSMgPgotIyA+IDEuIGh0dHA6Ly93d3cub3BlbmVtYmVkZGVkLm9yZy8KLSMgPgotIyA+IFJlZ2FyZHMKLSMgPiAtLQotIyA+IEpJRDogaHJ3LWphYmJlci5vcmcKLSMgPiBPcGVuRW1iZWRkZWQgZGV2ZWxvcGVyL2NvbnN1bHRhbnQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pb3pvbmUzL2lvem9uZTNfNDg5LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pb3pvbmUzL2lvem9uZTNfNDg5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0YjdlNGYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2lvem9uZTMvaW96b25lM180ODkuYmIKQEAgLTAsMCArMSwxMjEgQEAKK1NVTU1BUlkgPSAiRmlsZXN5c3RlbSBhbmQgRGlzayBCZW5jaG1hcmtpbmcgVG9vbCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuaW96b25lLm9yZy8iCitBVVRIT1IgPSAiRG9uIENhcHBzIDxkb24uY2FwcHMyQHZlcml6b24ubmV0PiwgV2lsbGlhbSBELiBOb3Jjb3R0IDx3bm9yY290dEB1cy5vcmFjbGUuY29tPiIKK1NFQ1RJT04gPSAiY29uc29sZS90ZXN0cyIKK0xJQ0VOU0UgPSAiaW96b25lMyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2lvem9uZS5jO2JlZ2lubGluZT0zNztlbmRsaW5lPTQ4O21kNT03MzMxMjYwMDkxODY4ZGNhZDBmOWVkZWE3MzViNWY0YiBcCisgICAgZmlsZTovL2lvem9uZS5jO2JlZ2lubGluZT0yNzY7ZW5kbGluZT0yODI7bWQ1PTc3ZjllZTUxZTQ1YjU3YTdlNzUxOWM0ZmEwYjRmMDBiIFwKKyIKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5pb3pvbmUub3JnL3NyYy9jdXJyZW50LyR7QlBOfV8ke1BWfS50YXIgXAorICAgIGZpbGU6Ly9wYXJhbGxlbGlzbS5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtbGV0LXN5c3RlbS1oZWFkZXJzLXByb3ZpZGUtcHJlYWQ2NC5wYXRjaCBcCisgICAgZmlsZTovL2NvcHlyaWdodC50eHQgXAorIgorU1JDX1VSSVttZDVzdW1dID0gImU4NjMyODE5ODc2ODljZDZkOTcyOWU1MzU2MzdiNzdkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYxNTU4NTBkMTAxOWYyNDUwZGM5MjZiYmRiNWEyNGFiZjQyM2VlM2JiOTI4YWIxZTY4NTY5Y2Y2MGE5MDg1ODQiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImlvem9uZTNfKD9QPHB2ZXI+XGQrKS50YXIiCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn1fJHtQVn0vc3JjL2N1cnJlbnQvIgorCisjCisjIEFsbCBvdGhlciBhcmNoZXMgY2FuIHVzZSB0aGUgZGVmYXVsdCBPRU1BS0UgZXhjZXB0IHRob3NlCisjIGV4cGxpY2l0bHkgbGlzdGVkIGJlbG93LiBBbm90aGVyLCB0aGUgaW96b25lMyBNYWtlZmlsZQorIyBuZWVkcyB0byBiZSB0b2xkIGFib3V0IHRoZSBjcm9zcy1jb21waWxlciBleHBsaWNpdGx5IGhlcmUuCisjCitFWFRSQV9PRU1BS0VfcG93ZXJwYyA9ICJsaW51eC1wb3dlcnBjIENDPScke0NDfScgR0NDPScke0NDfSciCitFWFRSQV9PRU1BS0VfcG93ZXJwYzY0ID0gImxpbnV4LXBvd2VycGM2NCBDQz0nJHtDQ30nIEdDQz0nJHtDQ30nIgorRVhUUkFfT0VNQUtFX3Bvd2VycGM2NGxlID0gImxpbnV4LXBvd2VycGM2NCBDQz0nJHtDQ30nIEdDQz0nJHtDQ30nIgorRVhUUkFfT0VNQUtFX3g4Ni02NCA9ICJsaW51eC1BTUQ2NCBDQz0nJHtDQ30nIEdDQz0nJHtDQ30nIgorRVhUUkFfT0VNQUtFX2FybSA9ICJsaW51eC1hcm0gQ0M9JyR7Q0N9JyBHQ0M9JyR7Q0N9JyIKK0VYVFJBX09FTUFLRSA9ICJsaW51eCBDQz0nJHtDQ30nIEdDQz0nJHtDQ30nIgorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0gXAorICAgICAgICAgICAgICAgJHtEfSR7bWFuZGlyfS9tYW4xIFwKKyAgICAgICAgICAgICAgICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vZXhhbXBsZXMKKworICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2lvem9uZSAke0R9JHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vZmlsZW9wICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8ke0JQTn1fJHtQVn0vZG9jcy9pb3pvbmUuMSAke0R9JHttYW5kaXJ9L21hbjEvCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vY29weXJpZ2h0LnR4dCAke0R9JHtkYXRhZGlyfS9kb2MvJHtCUE59LworCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vKi5kZW0gJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS9leGFtcGxlcworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2NsaWVudF9saXN0ICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vZXhhbXBsZXMKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9HbnVwbG90LnR4dCAke0R9JHtkYXRhZGlyfS9kb2MvJHtCUE59L2V4YW1wbGVzCisKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9HZW5lcmF0ZV9HcmFwaHMgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS9leGFtcGxlcworICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2dlbmdudXBsb3Quc2ggJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS9leGFtcGxlcworICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3JlcG9ydC5wbCAke0R9JHtkYXRhZGlyfS9kb2MvJHtCUE59L2V4YW1wbGVzCisKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8ke0JQTn1fJHtQVn0vZG9jcy9Jb3pvbmVfcHMuZ3ogJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8ke0JQTn1fJHtQVn0vZG9jcy9JT3pvbmVfbXN3b3JkXzk4LnBkZiAke0R9JHtkYXRhZGlyfS9kb2MvJHtCUE59LworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LyR7QlBOfV8ke1BWfS9kb2NzL1J1bl9ydWxlcy5kb2MgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS8KK30KKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZG9jLyR7UE59L2NvcHlyaWdodC50eHQiCisKKyMgTElDRU5TRToKKyMKKyMgIENvcHlyaWdodCAxOTkxLCAxOTkyLCAxOTk0LCAxOTk4LCAxOTk5LCAyMDAyICAgV2lsbGlhbSBELiBOb3Jjb3R0CisjCisjICBMaWNlbnNlIHRvIGZyZWVseSB1c2UgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBpcyBoZXJlYnkgZ3JhbnRlZAorIyAgYnkgdGhlIGF1dGhvciwgc3ViamVjdCB0byB0aGUgY29uZGl0aW9uIHRoYXQgdGhpcyBjb3B5cmlnaHQgbm90aWNlCisjICByZW1haW5zIGludGFjdC4gIFRoZSBhdXRob3IgcmV0YWlucyB0aGUgZXhjbHVzaXZlIHJpZ2h0IHRvIHB1Ymxpc2gKKyMgIGRlcml2YXRpdmUgd29ya3MgYmFzZWQgb24gdGhpcyB3b3JrLCBpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bworIyAgcmV2aXNlZCB2ZXJzaW9ucyBvZiB0aGlzIHdvcmsuCisjCisKKyMKKyMgQmVsb3cgaXMgYXV0aG9yIHJlcGx5IHRvIHF1ZXN0aW9uIGFib3V0IGRpc3RyaWJ1dGluZyBpb3pvbmUzIGluCisjIE9wZW5FbWJlZGRlZDoKKyMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIE1hcmNpbiwKKyMKKyMgICAgIFJlLWRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgYXMgbG9uZyBhcyB0aGUgY29weXJpZ2h0IGlzCisjICAgICBtYWludGFpbmVkIGFuZCB0aGUgc291cmNlIGNvZGUgaXMgbm90IGNoYW5nZWQuIEkgZG8gbm90CisjICAgICBzZWUgYSBwcm9ibGVtIHdpdGggeW91ciBtb2RzIHRvIGVuYWJsZSBmaWxlb3AgZm9yIExpbnV4LWFybSwKKyMgICAgIGFzIHRoZXNlIG1vZHMgaGF2ZSBiZWVuIHJldHVybmVkIHRvIHRoZSBJb3pvbmUgZm9sa3MsCisjICAgICBhbmQgdGhleSBoYXZlIGJlZW4gYWNjZXB0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgbmV4dAorIyAgICAgcmVsZWFzZSA6LSkKKyMKKyMgVGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiwKKyMgRG9uIENhcHBzCisjCisjIC0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0KKyMgRnJvbTogIk1hcmNpbiBKdXN6a2lld2ljeiIgPGZpcm1hQGhydy5vbmUucGw+CisjIFRvOiAiRG9uIENhcHBzIiA8ZG9uLmNhcHBzMkB2ZXJpem9uLm5ldD47ICJXaWxsaWFtIEQuIE5vcmNvdHQiCisjIDx3bm9yY290dEB1cy5vcmFjbGUuY29tPgorIyBTZW50OiBTdW5kYXksIE9jdG9iZXIgMjksIDIwMDYgNDo1NSBQTQorIyBTdWJqZWN0OiBpb3pvbmUzIDI2MyBwYXRjaCBmb3IgYXJtIGFuZCBMaWNlbnNlIHF1ZXN0aW9uCisjCisjCisjID4gTW9ybmluZworIyA+CisjID4gSSB3YW50IHRvIGluY2x1ZGUgaW96b25lMyBpbiBPcGVuRW1iZWRkZWQgWzFdIG1ldGFkYXRhIHRvIGdpdmUgaXQgZm9yCisjID4gb3RoZXIgZGV2ZWxvcGVycy4gQ3VycmVudGx5IE9FIGlzIHVzZWQgdG8gYnVpbGQgZmV3IGRpc3RyaWJ1dGlvbnMgZm9yCisjID4gbWlzYyBwbGF0Zm9ybXM6IEFSTSwgU0gzLCBTSDQsIHg4NiwgUG93ZXJQQyBhbmQgZGlmZmVyZW50IHR5cGVzIG9mCisjID4gbWFjaGluZXMgKFBEQSwgc2V0dG9wYm94LCBkZXZib2FyZHMsIGRlc2t0b3BzLCB0aGluIGNsaWVudHMsIHJvdXRlcnMpLgorIyA+CisjID4gQWNjb3JkaW5nIHRvIHlvdXIgZGlzdHJpYnV0aW9uIG9mIGRlcml2YXRpb25zIGlzIGZvcmJpZGRlbi4gUGFja2FnaW5nCisjID4gaW96b25lMyBpbiBPcGVuRW1iZWRkZWQgd2lsbCBub3QgaW52b2x2ZSBhbnkgc291cmNlIGNvZGUgY2hhbmdlcy4gQnV0CisjID4gd2hlbiBJIHdhcyBidWlsZGluZyBpdCBmb3IgQVJNIEkgZGlzY292ZXJlZCB0aGF0IGZpbGVvcCBiaW5hcnkgd2FzIG5vdAorIyA+IGJ1aWx0IC0gc28gSSBjcmVhdGVkIHBhdGNoIGZvciBpdCAoYXR0YWNoZWQpLiBOb3QgeWV0IHRlc3RlZCBpdCBvbiB0YXJnZXQKKyMgPiBkZXZpY2UuCisjID4KKyMgPiBUaHVzLCBJIHNlZWsgeW91ciB3cml0dGVuIHBlcm1pc3Npb24gdmlhIGUtbWFpbCB0byBkaXN0cmlidXRlIGEgcGFja2FnZSBvZgorIyA+IHRoZSB1bm1vZGlmaWVkIHNvdXJjZSBjb2RlIGFuZCBhbHNvIGEgcGFja2FnZSBvZiB0aGUgcHJlLWNvbXBpbGVkIGJpbmFyeS4KKyMgPiBZb3VyIGNvcHlyaWdodCBzdGF0ZW1lbnQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgcGFja2FnZS4KKyMgPgorIyA+CisjID4gMS4gaHR0cDovL3d3dy5vcGVuZW1iZWRkZWQub3JnLworIyA+CisjID4gUmVnYXJkcworIyA+IC0tCisjID4gSklEOiBocnctamFiYmVyLm9yZworIyA+IE9wZW5FbWJlZGRlZCBkZXZlbG9wZXIvY29uc3VsdGFudAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9maWxlcy8wMDAxLWh1Z2VfcGFnZV9zZXR1cF9oZWxwZXItdXNlLXB5dGhvbjMtaW50ZXJwcmV0ZXIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9maWxlcy8wMDAxLWh1Z2VfcGFnZV9zZXR1cF9oZWxwZXItdXNlLXB5dGhvbjMtaW50ZXJwcmV0ZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ1ZjI4MwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2ZpbGVzLzAwMDEtaHVnZV9wYWdlX3NldHVwX2hlbHBlci11c2UtcHl0aG9uMy1pbnRlcnByZXRlci5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIGI3N2M2MWRlNGQ4OGQyYzZlNWQzMWY0ZjVhNTg3N2NjNGM2MTI3MmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZXkgWmhpemhpa2luIDxhbmRyZXkuekBnbWFpbC5jb20+CitEYXRlOiBNb24sIDI3IEphbiAyMDIwIDE3OjI3OjU1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGh1Z2VfcGFnZV9zZXR1cF9oZWxwZXI6IHVzZSBweXRob24zIGludGVycHJldGVyCisKK1NldHVwIGhlbHBlciBzY3JpcHQgaXMgYWxyZWFkeSBwcmVwYXJlZCB0byBiZSB1c2VkIHdpdGggcHl0aG9uMywgdXNlIHRoZQoraW50ZXJwcmV0ZXIgZXhwbGljaXRseS4gVGhpcyByZW1vdmVzIGRlcGVuZGVuY3kgdG8gcHl0aG9uMiBhbmQgd2lsbCBub3QKK2ZhaWwgdGhlIFFBIGNoZWNrLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLXNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZXkgWmhpemhpa2luIDxhbmRyZXkuekBnbWFpbC5jb20+CistLS0KKyBodWdlX3BhZ2Vfc2V0dXBfaGVscGVyLnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaHVnZV9wYWdlX3NldHVwX2hlbHBlci5weSBiL2h1Z2VfcGFnZV9zZXR1cF9oZWxwZXIucHkKK2luZGV4IGE5YmEyYmYuLjdiYTBjOTIgMTAwNzU1CistLS0gYS9odWdlX3BhZ2Vfc2V0dXBfaGVscGVyLnB5CisrKysgYi9odWdlX3BhZ2Vfc2V0dXBfaGVscGVyLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL3B5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAKKyAjCisgIyBUb29sIHRvIHNldCB1cCBMaW51eCBsYXJnZSBwYWdlIHN1cHBvcnQgd2l0aCBtaW5pbWFsIGVmZm9ydAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvbGliaHVnZXRsYmZzX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2xpYmh1Z2V0bGJmc19naXQuYmIKaW5kZXggZTY2ZGIxYS4uNDc2OGQ3YiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvbGliaHVnZXRsYmZzX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9saWJodWdldGxiZnNfZ2l0LmJiCkBAIC00LDcgKzQsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTEdQTC0yLjE7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIgogCiBERVBFTkRTID0gInN5c2ZzdXRpbHMiCi1SREVQRU5EU18ke1BOfSArPSAiYmFzaCBweXRob24gcHl0aG9uLWlvIHB5dGhvbi1sYW5nIHB5dGhvbi1zdWJwcm9jZXNzIHB5dGhvbi1yZXNvdXJjZSIKK1JERVBFTkRTXyR7UE59ICs9ICJiYXNoIHB5dGhvbjMtY29yZSIKIFJERVBFTkRTXyR7UE59LXRlc3RzICs9ICJiYXNoIHB5dGhvbjMtY29yZSIKIAogUFYgPSAiMi4yMiIKQEAgLTI1LDYgKzI1LDcgQEAKICAgICBmaWxlOi8vMDAwNS1JbmNsdWRlLWRpcmVudC5oLWZvci1pbm9fdC5wYXRjaCBcCiAgICAgZmlsZTovLzAwMDYtaW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2ggXAogICAgIGZpbGU6Ly8wMDAxLXRlc3RzLWFkZC1leHBsaWNpdC1wZXJtaXNzaW9ucy10by1vcGVuLWNhbGwucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWh1Z2VfcGFnZV9zZXR1cF9oZWxwZXItdXNlLXB5dGhvbjMtaW50ZXJwcmV0ZXIucGF0Y2ggXAogIgogCiBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCkBAIC0zNyw2ICszOCw3IEBACiBMSUJIVUdFVExCRlNfQVJDSCA9ICIke1RBUkdFVF9BUkNIfSIKIExJQkhVR0VUTEJGU19BUkNIX3Bvd2VycGMgPSAicHBjIgogTElCSFVHRVRMQkZTX0FSQ0hfcG93ZXJwYzY0ID0gInBwYzY0IgorTElCSFVHRVRMQkZTX0FSQ0hfcG93ZXJwYzY0bGUgPSAicHBjNjQiCiBFWFRSQV9PRU1BS0UgPSAiJ0FSQ0g9JHtMSUJIVUdFVExCRlNfQVJDSH0nICdPUFQ9JHtDRkxBR1N9JyAnQ0M9JHtDQ30nICR7TElCQVJHU30gQlVJTERUWVBFPU5BVElWRU9OTFkgVj0yIgogUEFSQUxMRUxfTUFLRSA9ICIiCiBDRkxBR1MgKz0gIi1mZXhwZW5zaXZlLW9wdGltaXphdGlvbnMgLWZyZW5hbWUtcmVnaXN0ZXJzIC1mb21pdC1mcmFtZS1wb2ludGVyIC1nMCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvcGhvcm9uaXgtdGVzdC1zdWl0ZS9waG9yb25peC10ZXN0LXN1aXRlXzkuMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9waG9yb25peC10ZXN0LXN1aXRlL3Bob3Jvbml4LXRlc3Qtc3VpdGVfOS4yLjEuYmIKaW5kZXggNTJiMzQxYi4uNGE4ZTViNSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9waG9yb25peC10ZXN0LXN1aXRlL3Bob3Jvbml4LXRlc3Qtc3VpdGVfOS4yLjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9waG9yb25peC10ZXN0LXN1aXRlL3Bob3Jvbml4LXRlc3Qtc3VpdGVfOS4yLjEuYmIKQEAgLTExLDcgKzExLDcgQEAKIAogUyA9ICIke1dPUktESVJ9L3Bob3Jvbml4LXRlc3Qtc3VpdGUiCiAKLWluaGVyaXQgc3lzdGVtZCBhbGxhcmNoCitpbmhlcml0IHN5c3RlbWQgYWxsYXJjaCBtaW1lIG1pbWUteGRnCiAKIGRvX2luc3RhbGwoKSB7CiAgICAgREVTVERJUj0ke0R9IC4vaW5zdGFsbC1zaCAke2V4ZWNfcHJlZml4fQpAQCAtMjksNyArMjksNyBAQAogU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgogU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInBob3JvbWF0aWMtY2xpZW50LnNlcnZpY2UgcGhvcm9tYXRpYy1zZXJ2ZXIuc2VydmljZSIKIAotUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcHl0aG9uIHBocC1jbGkgdXRpbC1saW51eC1sc2NwdSBvcy1yZWxlYXNlIGxzYi1yZWxlYXNlIgorUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcHl0aG9uMy1jb3JlIHBocC1jbGkgdXRpbC1saW51eC1sc2NwdSBvcy1yZWxlYXNlIGxzYi1yZWxlYXNlIgogCiBGSUxFU18ke1BOfSArPSAiIFwKICAgICAke2RhdGFkaXJ9L3Bob3Jvbml4LXRlc3Qtc3VpdGUgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZGFjLXV0aWxzL2VkYWMtdXRpbHNfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZGFjLXV0aWxzL2VkYWMtdXRpbHNfZ2l0LmJiCmluZGV4IDA5ZTczODQuLmI4OWZlNjcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWRhYy11dGlscy9lZGFjLXV0aWxzX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VkYWMtdXRpbHMvZWRhYy11dGlsc19naXQuYmIKQEAgLTMwLDYgKzMwLDcgQEAKIFJERVBFTkRTXyR7UE59X2FhcmNoNjQgPSAiZG1pZGVjb2RlIgogUkRFUEVORFNfJHtQTn1fcG93ZXJwYyA9ICJkbWlkZWNvZGUiCiBSREVQRU5EU18ke1BOfV9wb3dlcnBjNjQgPSAiZG1pZGVjb2RlIgorUkRFUEVORFNfJHtQTn1fcG93ZXJwYzY0bGUgPSAiZG1pZGVjb2RlIgogUkRFUEVORFNfJHtQTn1fYXBwZW5kID0gIiBcCiAgICAgcGVybCBcCiAgICAgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2ZsYXNocm9tL2ZsYXNocm9tLzAwMDEtdHlwZWNhc3QtZW51bS1jb252ZXJzaW9ucy1leHBsaWNpdGx5LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9mbGFzaHJvbS9mbGFzaHJvbS8wMDAxLXR5cGVjYXN0LWVudW0tY29udmVyc2lvbnMtZXhwbGljaXRseS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWM1MzY1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9mbGFzaHJvbS9mbGFzaHJvbS8wMDAxLXR5cGVjYXN0LWVudW0tY29udmVyc2lvbnMtZXhwbGljaXRseS5wYXRjaApAQCAtMCwwICsxLDY5IEBACitGcm9tIDhhMjM2MzMwZjJhZjU2YmRlMjFlOWY2OTIwOGVhM2U1OWY1MjlmMGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxNSBNYXIgMjAyMCAxNzowMjozMCAtMDcwMAorU3ViamVjdDogW1BBVENIXSB0eXBlY2FzdCBlbnVtIGNvbnZlcnNpb25zIGV4cGxpY2l0bHkKKworY2xhbmcgY29tcGxhaW5zIGxpa2UgYmVsb3cKKworbGliZmxhc2hyb20uYzoxOTE6NDM6IGVycm9yOiBpbXBsaWNpdCBjb252ZXJzaW9uIGZyb20gZW51bWVyYXRpb24gdHlwZSAnY29uc3QgZW51bSB0ZXN0X3N0YXRlJyB0byBkaWZmZXJlbnQgZW51bWVyYXRpb24gdHlwZSAnZW51bSBmbGFzaHJvbV90ZXN0X3N0YXRlJyBbLVdlcnJvciwtV2VudW0tY29udmVyc2lvbl0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZF9ib2FyZHNbaV0ud29ya2luZyA9IGJpbmZvW2ldLndvcmtpbmc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfiB+fn5+fn5+fn5efn5+fn5+CitsaWJmbGFzaHJvbS5jOjIyOTo0NjogZXJyb3I6IGltcGxpY2l0IGNvbnZlcnNpb24gZnJvbSBlbnVtZXJhdGlvbiB0eXBlICdjb25zdCBlbnVtIHRlc3Rfc3RhdGUnIHRvIGRpZmZlcmVudCBlbnVtZXJhdGlvbiB0eXBlICdlbnVtIGZsYXNocm9tX3Rlc3Rfc3RhdGUnIFstV2Vycm9yLC1XZW51bS1jb252ZXJzaW9uXQorICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkX2NoaXBzZXRzW2ldLnN0YXR1cyA9IGNoaXBzZXRbaV0uc3RhdHVzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+IH5+fn5+fn5+fn5+Xn5+fn5+CisKK0hvd2V2ZXIgdGhlc2UgZW51bXMgYXJlIGV4YWN0bHkgc2FtZSBzbyB0aGV5IGNhbiBiZSB0eXBlY2FzdGVkCisKK2xpYmZsYXNocm9tLmgKKworLyoqIEBpbmdyb3VwIGZsYXNocm9tLXF1ZXJ5ICovCitlbnVtIGZsYXNocm9tX3Rlc3Rfc3RhdGUgeworICAgICAgICBGTEFTSFJPTV9URVNURURfT0sgID0gMCwKKyAgICAgICAgRkxBU0hST01fVEVTVEVEX05UICA9IDEsCisgICAgICAgIEZMQVNIUk9NX1RFU1RFRF9CQUQgPSAyLAorICAgICAgICBGTEFTSFJPTV9URVNURURfREVQID0gMywKKyAgICAgICAgRkxBU0hST01fVEVTVEVEX05BICA9IDQsCit9OworCitmbGFzaC5oCisKK2VudW0gdGVzdF9zdGF0ZSB7CisgICAgICAgICAgT0sgPSAwLAorICAgICAgICAgIE5UID0gMSwgLyogTm90IHRlc3RlZCAqLworICAgICAgICAgIEJBRCwgICAgLyogS25vd24gdG8gbm90IHdvcmsgKi8KKyAgICAgICAgICBERVAsICAgIC8qIFN1cHBvcnQgZGVwZW5kcyBvbiBjb25maWd1cmF0aW9uIChlLmcuIEludGVsIGZsYXNoIGRlc2NyaXB0b3IpICovCisgICAgICAgICAgTkEsICAgICAvKiBOb3QgYXBwbGljYWJsZSAoZS5nLiB3cml0ZSBzdXBwb3J0IG9uIFJPTSBjaGlwcykgKi8KKyAgfTsKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWJmbGFzaHJvbS5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmZsYXNocm9tLmMgYi9saWJmbGFzaHJvbS5jCitpbmRleCAwZGVjMjJlLi43OTU2Njg1IDEwMDY0NAorLS0tIGEvbGliZmxhc2hyb20uYworKysrIGIvbGliZmxhc2hyb20uYworQEAgLTE4OCw3ICsxODgsNyBAQCBzdHJ1Y3QgZmxhc2hyb21fYm9hcmRfaW5mbyAqZmxhc2hyb21fc3VwcG9ydGVkX2JvYXJkcyh2b2lkKQorIAkJZm9yICg7IGkgPCBib2FyZHNfa25vd25fc2l6ZTsgKytpKSB7CisgCQkJc3VwcG9ydGVkX2JvYXJkc1tpXS52ZW5kb3IgPSBiaW5mb1tpXS52ZW5kb3I7CisgCQkJc3VwcG9ydGVkX2JvYXJkc1tpXS5uYW1lID0gYmluZm9baV0ubmFtZTsKKy0JCQlzdXBwb3J0ZWRfYm9hcmRzW2ldLndvcmtpbmcgPSBiaW5mb1tpXS53b3JraW5nOworKwkJCXN1cHBvcnRlZF9ib2FyZHNbaV0ud29ya2luZyA9IChlbnVtIGZsYXNocm9tX3Rlc3Rfc3RhdGUpYmluZm9baV0ud29ya2luZzsKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCW1zZ19nZXJyKCJNZW1vcnkgYWxsb2NhdGlvbiBlcnJvciFcbiIpOworQEAgLTIyNiw3ICsyMjYsNyBAQCBzdHJ1Y3QgZmxhc2hyb21fY2hpcHNldF9pbmZvICpmbGFzaHJvbV9zdXBwb3J0ZWRfY2hpcHNldHModm9pZCkKKyAJCQlzdXBwb3J0ZWRfY2hpcHNldHNbaV0uY2hpcHNldCA9IGNoaXBzZXRbaV0uZGV2aWNlX25hbWU7CisgCQkJc3VwcG9ydGVkX2NoaXBzZXRzW2ldLnZlbmRvcl9pZCA9IGNoaXBzZXRbaV0udmVuZG9yX2lkOworIAkJCXN1cHBvcnRlZF9jaGlwc2V0c1tpXS5jaGlwc2V0X2lkID0gY2hpcHNldFtpXS5kZXZpY2VfaWQ7CistCQkJc3VwcG9ydGVkX2NoaXBzZXRzW2ldLnN0YXR1cyA9IGNoaXBzZXRbaV0uc3RhdHVzOworKwkJCXN1cHBvcnRlZF9jaGlwc2V0c1tpXS5zdGF0dXMgPSAoZW51bSBmbGFzaHJvbV90ZXN0X3N0YXRlKWNoaXBzZXRbaV0uc3RhdHVzOworIAkgIH0KKyAJfSBlbHNlIHsKKyAJCW1zZ19nZXJyKCJNZW1vcnkgYWxsb2NhdGlvbiBlcnJvciFcbiIpOworLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9mbGFzaHJvbS9mbGFzaHJvbV8xLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2ZsYXNocm9tL2ZsYXNocm9tXzEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDc0YTFhNS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2ZsYXNocm9tL2ZsYXNocm9tXzEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLURFU0NSSVBUSU9OID0gImZsYXNocm9tIGlzIGEgdXRpbGl0eSBmb3IgaWRlbnRpZnlpbmcsIHJlYWRpbmcsIHdyaXRpbmcsIHZlcmlmeWluZyBhbmQgZXJhc2luZyBmbGFzaCBjaGlwcyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1IT01FUEFHRSA9ICJodHRwOi8vZmxhc2hyb20ub3JnIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLURFUEVORFMgPSAicGNpdXRpbHMgbGlidXNiIGxpYnVzYi1jb21wYXQiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9kb3dubG9hZC5mbGFzaHJvbS5vcmcvcmVsZWFzZXMvZmxhc2hyb20tdiR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiOTFiYWI2YzA3MmUzOGE0OTNiYjRlYjY3M2U0ZmUwZDYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWVhZGE5YzcwYzIyNDIxMjE3YzY2OTM1NjE4MGMwZGVkZGQwYjYwODc2ZTYzZDIyMjRlMzI2MGI5MGMxNGUxOSIKLQotUyA9ICIke1dPUktESVJ9L2ZsYXNocm9tLXYke1BWfSIKLQotaW5oZXJpdCBwa2djb25maWcKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIFBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IGluc3RhbGwKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZmxhc2hyb20vZmxhc2hyb21fMS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9mbGFzaHJvbS9mbGFzaHJvbV8xLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQyY2VjMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZmxhc2hyb20vZmxhc2hyb21fMS4yLmJiCkBAIC0wLDAgKzEsMjAgQEAKK0RFU0NSSVBUSU9OID0gImZsYXNocm9tIGlzIGEgdXRpbGl0eSBmb3IgaWRlbnRpZnlpbmcsIHJlYWRpbmcsIHdyaXRpbmcsIHZlcmlmeWluZyBhbmQgZXJhc2luZyBmbGFzaCBjaGlwcyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitIT01FUEFHRSA9ICJodHRwOi8vZmxhc2hyb20ub3JnIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKK0RFUEVORFMgPSAicGNpdXRpbHMgbGlidXNiIGxpYnVzYi1jb21wYXQiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9kb3dubG9hZC5mbGFzaHJvbS5vcmcvcmVsZWFzZXMvZmxhc2hyb20tdiR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10eXBlY2FzdC1lbnVtLWNvbnZlcnNpb25zLWV4cGxpY2l0bHkucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiN2Y4ZTRiODcwODdlYjEyZWNlZTBmY2M1NDQ1YjQ5NTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTFmOGQ5NTg4MWY1YTQzNjVkZmU1ODc3NmNlODIxZGZjZWUwZjEzOGY3NWQwZjQ0ZjhhM2NkMDMyZDllYTQyYiIKKworUyA9ICIke1dPUktESVJ9L2ZsYXNocm9tLXYke1BWfSIKKworaW5oZXJpdCBwa2djb25maWcKKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIFBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IGluc3RhbGwKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnNfMy42LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2xtX3NlbnNvcnMvbG1zZW5zb3JzXzMuNi4wLmJiCmluZGV4IDQ4NDkwZTguLjg5MGRiNTUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnNfMy42LjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sbV9zZW5zb3JzL2xtc2Vuc29yc18zLjYuMC5iYgpAQCAtNyw3ICs3LDYgQEAKIERFUEVORFMgPSAiIFwKICAgICBiaXNvbi1uYXRpdmUgXAogICAgIGZsZXgtbmF0aXZlIFwKLSAgICBycmR0b29sIFwKICAgICB2aXJ0dWFsL2xpYmljb252IFwKICIKIApAQCAtOTEsNyArOTAsNyBAQAogUkRFUEVORFNfJHtQTn0gKz0gIiBcCiAgICAgJHtQTn0tbGlic2Vuc29ycyBcCiAgICAgJHtQTn0tc2Vuc29ycyBcCi0gICAgJHtQTn0tc2Vuc29yZCBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2Vuc29yZCcsICcke1BOfS1zZW5zb3JkJywgJycsIGQpfSBcCiAgICAgJHtQTn0tZmFuY29udHJvbCBcCiAgICAgJHtQTn0tc2Vuc29yc2RldGVjdCBcCiAgICAgJHtQTn0tc2Vuc29yc2NvbmZjb252ZXJ0IFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbnZtZS1jbGkvbnZtZS1jbGkvMDAwMS1maXgtbXVzbC1jb21waWxhdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbnZtZS1jbGkvbnZtZS1jbGkvMDAwMS1maXgtbXVzbC1jb21waWxhdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTVkMGRhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9udm1lLWNsaS9udm1lLWNsaS8wMDAxLWZpeC1tdXNsLWNvbXBpbGF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gMGZmN2FkMmM4OGUzYTQ3ZTdlM2Y2ZmU2OGMyOGE4ZDJkOGE3MWYxZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5lZWwgQ2hvdGFpIDxuZWVsQGNob3QuYWk+CitEYXRlOiBGcmksIDE0IEZlYiAyMDIwIDE3OjU2OjIzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBtdXNsIGNvbXBpbGF0aW9uCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC1udm1lL252bWUtY2xpL2NvbW1pdC8wZmY3YWQyYzg4ZTNhNDdlN2UzZjZmZTY4YzI4YThkMmQ4YTcxZjFmXQorU2lnbmVkLW9mZi1ieTogUGllcnJlLUplYW4gVGV4aWVyIDxwanRleGllckBrb25jZXB0by5pbz4KKy0tLQorIHBsdWdpbnMvbWljcm9uL21pY3Jvbi1udm1lLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3BsdWdpbnMvbWljcm9uL21pY3Jvbi1udm1lLmMgYi9wbHVnaW5zL21pY3Jvbi9taWNyb24tbnZtZS5jCitpbmRleCA4MjQwODg3Li4xNjVmY2YwIDEwMDY0NAorLS0tIGEvcGx1Z2lucy9taWNyb24vbWljcm9uLW52bWUuYworKysrIGIvcGx1Z2lucy9taWNyb24vbWljcm9uLW52bWUuYworQEAgLTEzLDYgKzEzLDcgQEAKKyAjaW5jbHVkZSAibnZtZS1wcmludC5oIgorICNpbmNsdWRlICJudm1lLWlvY3RsLmgiCisgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyAKKyAjZGVmaW5lIENSRUFURV9DTUQKKyAjaW5jbHVkZSAibWljcm9uLW52bWUuaCIKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9udm1lLWNsaS9udm1lLWNsaV8xLjEwLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL252bWUtY2xpL252bWUtY2xpXzEuMTAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjRiYjJkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9udm1lLWNsaS9udm1lLWNsaV8xLjEwLjEuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJOVk1lIG1hbmFnZW1lbnQgY29tbWFuZCBsaW5lIGludGVyZmFjZSIKK0FVVEhPUiA9ICJTdGVmYW4gV2llaGxlciA8c3RlZmFuLndpZWhsZXJAbWlzc2luZ2xpbmtlbGVjdHJvbmljcy5jb20+IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LW52bWUvbnZtZS1jbGkiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ODI2NDUzNWMwYzRlOWM2YzMzNTYzNWM0MDI2YTgwMjIiCitERVBFTkRTID0gInV0aWwtbGludXgiCitQViAuPSAiK2dpdCR7U1JDUFZ9IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGludXgtbnZtZS9udm1lLWNsaS5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtbXVzbC1jb21waWxhdGlvbi5wYXRjaCBcCisiCitTUkNSRVYgPSAiMWQ4NGQ2YWUwYzdkN2NlZmY1YTczZmUxNzRkZGU4YjAwMDVmNjEwOCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBiYXNoLWNvbXBsZXRpb24gc3lzdGVtZAorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbC1zcGVjIERFU1RESVI9JHtEfSBQUkVGSVg9JHtwcmVmaXh9IFwKKyAgICAgICAgVURFVkRJUj0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYgU1lTVEVNRERJUj0ke3N5c3RlbWRfdW5pdGRpcn0KK30KKworcGtnX3Bvc3RpbnN0X29udGFyZ2V0XyR7UE59KCkgeworICAgICR7c2JpbmRpcn0vbnZtZSBnZW4taG9zdG5xbiA+ICR7c3lzY29uZmRpcn0vbnZtZS9ob3N0bnFuCisgICAgJHtiaW5kaXJ9L3V1aWRnZW4gPiAke3N5c2NvbmZkaXJ9L252bWUvaG9zdGlkCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1kcmFjdXQgJHtQTn0tenNoLWNvbXBsZXRpb24iCisKK0ZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IgorRklMRVNfJHtQTn0tZHJhY3V0ID0gIiR7bm9uYXJjaF9saWJkaXJ9L2RyYWN1dC9kcmFjdXQuY29uZi5kIgorRklMRVNfJHtQTn0tenNoLWNvbXBsZXRpb24gPSAiJHtkYXRhZGlyfS96c2gvc2l0ZS1mdW5jdGlvbnMiCisKK1JERVBFTkRTXyR7UE59ID0gInV0aWwtbGludXgtdXVpZGdlbiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbnZtZS1jbGkvbnZtZS1jbGlfMS45LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9udm1lLWNsaS9udm1lLWNsaV8xLjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhOGJjMTcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9udm1lLWNsaS9udm1lLWNsaV8xLjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIk5WTWUgbWFuYWdlbWVudCBjb21tYW5kIGxpbmUgaW50ZXJmYWNlIgotQVVUSE9SID0gIlN0ZWZhbiBXaWVobGVyIDxzdGVmYW4ud2llaGxlckBtaXNzaW5nbGlua2VsZWN0cm9uaWNzLmNvbT4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGludXgtbnZtZS9udm1lLWNsaSIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04MjY0NTM1YzBjNGU5YzZjMzM1NjM1YzQwMjZhODAyMiIKLURFUEVORFMgPSAidXRpbC1saW51eCIKLVBWIC49ICIrZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saW51eC1udm1lL252bWUtY2xpLmdpdCIKLVNSQ1JFViA9ICI5NzdlN2Q0Y2Y1OWMzYzdmODllOWMwOTNjOTFmOTkxYjA3MjkyZTQ1IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGJhc2gtY29tcGxldGlvbiBzeXN0ZW1kCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsLXNwZWMgREVTVERJUj0ke0R9IFBSRUZJWD0ke3ByZWZpeH0gXAotICAgICAgICBVREVWRElSPSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldiBTWVNURU1ERElSPSR7c3lzdGVtZF91bml0ZGlyfQotfQotCi1wa2dfcG9zdGluc3Rfb250YXJnZXRfJHtQTn0oKSB7Ci0gICAgJHtzYmluZGlyfS9udm1lIGdlbi1ob3N0bnFuID4gJHtzeXNjb25mZGlyfS9udm1lL2hvc3RucW4KLSAgICAke2JpbmRpcn0vdXVpZGdlbiA+ICR7c3lzY29uZmRpcn0vbnZtZS9ob3N0aWQKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LWRyYWN1dCAke1BOfS16c2gtY29tcGxldGlvbiIKLQotRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0iCi1GSUxFU18ke1BOfS1kcmFjdXQgPSAiJHtub25hcmNoX2xpYmRpcn0vZHJhY3V0L2RyYWN1dC5jb25mLmQiCi1GSUxFU18ke1BOfS16c2gtY29tcGxldGlvbiA9ICIke2RhdGFkaXJ9L3pzaC9zaXRlLWZ1bmN0aW9ucyIKLQotUkRFUEVORFNfJHtQTn0gPSAidXRpbC1saW51eC11dWlkZ2VuIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9nYW1tdS9nYW1tdV8xLjMyLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2dhbW11L2dhbW11XzEuMzIuMC5iYgppbmRleCA0NDQxMTc1Li5mZDZiODVmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2dhbW11L2dhbW11XzEuMzIuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2dhbW11L2dhbW11XzEuMzIuMC5iYgpAQCAtMTMsNyArMTMsNyBAQAogU1JDX1VSSVttZDVzdW1dID0gIjhlYTE2YzZiM2NjNDgwOTdhOGU2MjMxMWZlMGUyNWI5IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlNjdjYWExMDJhYTRjOGZiZWQ1MzAwZTVhMDI2MmU0MDQxMWM0Y2M3OWY0Mzc5YThkMzRlZWQ3OTc5NjhmYzMiCiAKLWluaGVyaXQgZGlzdHV0aWxzIGNtYWtlIGdldHRleHQKK2luaGVyaXQgZGlzdHV0aWxzMyBjbWFrZSBnZXR0ZXh0CiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogICAgICMgdGhlc2UgZmlsZXMgc2VlbSB0byBvbmx5IGJlIHVzZWQgYnkgc3ltYmlhbiBhbmQgdHJpZ2dlciBRQSB3YXJuaW5ncwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9nZW5zaW8vZ2Vuc2lvLzAwMDEtZmlsdGVyLVJlbmFtZS1zb21lLXZhcmlhYmxlcy10by10cl9zdGR4eHgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2dlbnNpby9nZW5zaW8vMDAwMS1maWx0ZXItUmVuYW1lLXNvbWUtdmFyaWFibGVzLXRvLXRyX3N0ZHh4eC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmM0OGEyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9nZW5zaW8vZ2Vuc2lvLzAwMDEtZmlsdGVyLVJlbmFtZS1zb21lLXZhcmlhYmxlcy10by10cl9zdGR4eHgucGF0Y2gKQEAgLTAsMCArMSwxMDggQEAKK0Zyb20gNjAxZTZlNTZmNDRiOTFkOTU3YmI2NDM2NjI0NTVmNTI1NDBmMzM2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENvcmV5IE1pbnlhcmQgPGNtaW55YXJkQG12aXN0YS5jb20+CitEYXRlOiBUdWUsIDI1IEZlYiAyMDIwIDE2OjA4OjQwIC0wNjAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpbHRlcjogUmVuYW1lIHNvbWUgdmFyaWFibGVzIHRvIHRyX3N0ZHh4eAorCitzdGRvdXQgYW5kIHN0ZGVyciBjYW4gYmUgbWFjcm9zLCBkb24ndCB1c2UgdGhlIG5hbWVzIGRpcmVjdGx5LgorCitTaWduZWQtb2ZmLWJ5OiBDb3JleSBNaW55YXJkIDxjbWlueWFyZEBtdmlzdGEuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2NtaW55YXJkL2dlbnNpby9jb21taXQvNjAxZTZlNTZmNDRiOTFkOTU3YmI2NDM2NjI0NTVmNTI1NDBmMzM2YV0KK1NpZ25lZC1vZmYtYnk6IFBpZXJyZS1KZWFuIFRleGllciA8cGp0ZXhpZXJAa29uY2VwdG8uaW8+CistLS0KKyBsaWIvZ2Vuc2lvX2ZpbHRlcl90cmFjZS5jIHwgMjggKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi9nZW5zaW9fZmlsdGVyX3RyYWNlLmMgYi9saWIvZ2Vuc2lvX2ZpbHRlcl90cmFjZS5jCitpbmRleCBkMzlkNThiLi5hYmUyZGI2IDEwMDY0NAorLS0tIGEvbGliL2dlbnNpb19maWx0ZXJfdHJhY2UuYworKysrIGIvbGliL2dlbnNpb19maWx0ZXJfdHJhY2UuYworQEAgLTMyLDggKzMyLDggQEAgc3RydWN0IHRyYWNlX2ZpbHRlciB7CisgICAgIGVudW0gdHJhY2VfZGlyIGRpcjsKKyAgICAgYm9vbCByYXc7CisgICAgIGNoYXIgKmZpbGVuYW1lOworLSAgICBib29sIHN0ZG91dDsKKy0gICAgYm9vbCBzdGRlcnI7CisrICAgIGJvb2wgdHJfc3Rkb3V0OworKyAgICBib29sIHRyX3N0ZGVycjsKKyAKKyAgICAgRklMRSAqdHI7CisgfTsKK0BAIC04Miw5ICs4Miw5IEBAIHRyYWNlX3RyeV9jb25uZWN0KHN0cnVjdCBnZW5zaW9fZmlsdGVyICpmaWx0ZXIsIHN0cnVjdCB0aW1ldmFsICp0aW1lb3V0KQorIHsKKyAgICAgc3RydWN0IHRyYWNlX2ZpbHRlciAqdGZpbHRlciA9IGZpbHRlcl90b190cmFjZShmaWx0ZXIpOworIAorLSAgICBpZiAodGZpbHRlci0+c3Rkb3V0KSB7CisrICAgIGlmICh0ZmlsdGVyLT50cl9zdGRvdXQpIHsKKyAJdGZpbHRlci0+dHIgPSBzdGRvdXQ7CistICAgIH0gZWxzZSBpZiAodGZpbHRlci0+c3RkZXJyKSB7CisrICAgIH0gZWxzZSBpZiAodGZpbHRlci0+dHJfc3RkZXJyKSB7CisgCXRmaWx0ZXItPnRyID0gc3RkZXJyOworICAgICB9IGVsc2UgaWYgKHRmaWx0ZXItPmZpbGVuYW1lKSB7CisgCXRmaWx0ZXItPnRyID0gZm9wZW4odGZpbHRlci0+ZmlsZW5hbWUsICJhKyIpOworQEAgLTk5LDcgKzk5LDcgQEAgdHJhY2VfdHJ5X2Rpc2Nvbm5lY3Qoc3RydWN0IGdlbnNpb19maWx0ZXIgKmZpbHRlciwgc3RydWN0IHRpbWV2YWwgKnRpbWVvdXQpCisgeworICAgICBzdHJ1Y3QgdHJhY2VfZmlsdGVyICp0ZmlsdGVyID0gZmlsdGVyX3RvX3RyYWNlKGZpbHRlcik7CisgCistICAgIGlmICghdGZpbHRlci0+c3Rkb3V0ICYmICF0ZmlsdGVyLT5zdGRlcnIgJiYgdGZpbHRlci0+dHIpCisrICAgIGlmICghdGZpbHRlci0+dHJfc3Rkb3V0ICYmICF0ZmlsdGVyLT50cl9zdGRlcnIgJiYgdGZpbHRlci0+dHIpCisgCWZjbG9zZSh0ZmlsdGVyLT50cik7CisgICAgIHRmaWx0ZXItPnRyID0gTlVMTDsKKyAgICAgcmV0dXJuIDA7CitAQCAtMzMxLDEyICszMzEsMTIgQEAgc3RhdGljIGludCBnZW5zaW9fdHJhY2VfZmlsdGVyX2Z1bmMoc3RydWN0IGdlbnNpb19maWx0ZXIgKmZpbHRlciwgaW50IG9wLAorIAorIHN0YXRpYyBzdHJ1Y3QgZ2Vuc2lvX2ZpbHRlciAqCisgZ2Vuc2lvX3RyYWNlX2ZpbHRlcl9yYXdfYWxsb2Moc3RydWN0IGdlbnNpb19vc19mdW5jcyAqbywgZW51bSB0cmFjZV9kaXIgZGlyLAorLQkJCSAgICAgIGJvb2wgcmF3LCBjb25zdCBjaGFyICpmaWxlbmFtZSwgYm9vbCBzdGRvdXQsCistCQkJICAgICAgYm9vbCBzdGRlcnIpCisrCQkJICAgICAgYm9vbCByYXcsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBib29sIHRyX3N0ZG91dCwKKysJCQkgICAgICBib29sIHRyX3N0ZGVycikKKyB7CisgICAgIHN0cnVjdCB0cmFjZV9maWx0ZXIgKnRmaWx0ZXI7CisgCistICAgIGlmICghZmlsZW5hbWUgJiYgIXN0ZG91dCAmJiAhc3RkZXJyKQorKyAgICBpZiAoIWZpbGVuYW1lICYmICF0cl9zdGRvdXQgJiYgIXRyX3N0ZGVycikKKyAJZGlyID0gVFJBQ0VfTk9ORTsKKyAKKyAgICAgdGZpbHRlciA9IG8tPnphbGxvYyhvLCBzaXplb2YoKnRmaWx0ZXIpKTsKK0BAIC0zNTEsOCArMzUxLDggQEAgZ2Vuc2lvX3RyYWNlX2ZpbHRlcl9yYXdfYWxsb2Moc3RydWN0IGdlbnNpb19vc19mdW5jcyAqbywgZW51bSB0cmFjZV9kaXIgZGlyLAorIAlpZiAoIXRmaWx0ZXItPmZpbGVuYW1lKQorIAkgICAgZ290byBvdXRfbm9tZW07CisgICAgIH0KKy0gICAgdGZpbHRlci0+c3Rkb3V0ID0gc3Rkb3V0OworLSAgICB0ZmlsdGVyLT5zdGRlcnIgPSBzdGRlcnI7CisrICAgIHRmaWx0ZXItPnRyX3N0ZG91dCA9IHRyX3N0ZG91dDsKKysgICAgdGZpbHRlci0+dHJfc3RkZXJyID0gdHJfc3RkZXJyOworIAorICAgICB0ZmlsdGVyLT5sb2NrID0gby0+YWxsb2NfbG9jayhvKTsKKyAgICAgaWYgKCF0ZmlsdGVyLT5sb2NrKQorQEAgLTM4NSw3ICszODUsNyBAQCBnZW5zaW9fdHJhY2VfZmlsdGVyX2FsbG9jKHN0cnVjdCBnZW5zaW9fb3NfZnVuY3MgKm8sCisgeworICAgICBzdHJ1Y3QgZ2Vuc2lvX2ZpbHRlciAqZmlsdGVyOworICAgICBpbnQgZGlyID0gVFJBQ0VfTk9ORTsKKy0gICAgYm9vbCByYXcgPSBmYWxzZSwgc3Rkb3V0ID0gZmFsc2UsIHN0ZGVyciA9IGZhbHNlOworKyAgICBib29sIHJhdyA9IGZhbHNlLCB0cl9zdGRvdXQgPSBmYWxzZSwgdHJfc3RkZXJyID0gZmFsc2U7CisgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lID0gTlVMTDsKKyAgICAgdW5zaWduZWQgaW50IGk7CisgCitAQCAtMzk2LDE1ICszOTYsMTUgQEAgZ2Vuc2lvX3RyYWNlX2ZpbHRlcl9hbGxvYyhzdHJ1Y3QgZ2Vuc2lvX29zX2Z1bmNzICpvLAorIAkgICAgY29udGludWU7CisgCWlmIChnZW5zaW9fY2hlY2tfa2V5dmFsdWUoYXJnc1tpXSwgImZpbGUiLCAmZmlsZW5hbWUpID4gMCkKKyAJICAgIGNvbnRpbnVlOworLQlpZiAoZ2Vuc2lvX2NoZWNrX2tleWJvb2woYXJnc1tpXSwgInN0ZG91dCIsICZzdGRvdXQpID4gMCkKKysJaWYgKGdlbnNpb19jaGVja19rZXlib29sKGFyZ3NbaV0sICJzdGRvdXQiLCAmdHJfc3Rkb3V0KSA+IDApCisgCSAgICBjb250aW51ZTsKKy0JaWYgKGdlbnNpb19jaGVja19rZXlib29sKGFyZ3NbaV0sICJzdGRlcnIiLCAmc3RkZXJyKSA+IDApCisrCWlmIChnZW5zaW9fY2hlY2tfa2V5Ym9vbChhcmdzW2ldLCAic3RkZXJyIiwgJnRyX3N0ZGVycikgPiAwKQorIAkgICAgY29udGludWU7CisgCXJldHVybiBHRV9JTlZBTDsKKyAgICAgfQorIAorICAgICBmaWx0ZXIgPSBnZW5zaW9fdHJhY2VfZmlsdGVyX3Jhd19hbGxvYyhvLCBkaXIsIHJhdywgZmlsZW5hbWUsCistCQkJCQkgICBzdGRvdXQsIHN0ZGVycik7CisrCQkJCQkgICB0cl9zdGRvdXQsIHRyX3N0ZGVycik7CisgICAgIGlmICghZmlsdGVyKQorIAlyZXR1cm4gR0VfTk9NRU07CisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ2Vuc2lvL2dlbnNpb18xLjUuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ2Vuc2lvL2dlbnNpb18xLjUuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Yzk3NjYyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9nZW5zaW8vZ2Vuc2lvXzEuNS4zLmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NVTU1BUlkgPSAiQSBsaWJyYXJ5IHRvIGFic3RyYWN0IHN0cmVhbSBJL08gbGlrZSBzZXJpYWwgcG9ydCwgVENQLCB0ZWxuZXQsIGV0YyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9jbWlueWFyZC9nZW5zaW8iCitMSUNFTlNFID0gIkdQTC0yLjAgJiBMR1BMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT1hMGZkMzY5MDhhZjg0M2JjZWUxMGNiNmRmYzQ3ZmE2NyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iYWUzMDE5YjRjNmRjNDEzOGMyMTc4NjRiZDA0MzMxZiBcCisgICAgICAgICAgICAgICAgICAgICIKKworU1JDUkVWID0gIjk1ZWMxYWIzMWVlOTc0MTFmYzM3MTU2ZDEyMDYxYWRjZjAzMzE1OTgiCitQViA9ICIxLjUuMytnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2NtaW55YXJkL2dlbnNpbztwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpbHRlci1SZW5hbWUtc29tZS12YXJpYWJsZXMtdG8tdHJfc3RkeHh4LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scworCitQQUNLQUdFQ09ORklHID8/PSAib3BlbnNzbCB0Y3Atd3JhcHBlcnMiCisKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2w9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSwtLXdpdGhvdXQtb3BlbnNzbCwgb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbdGNwLXdyYXBwZXJzXSA9ICItLXdpdGgtdGNwLXdyYXBwZXJzLC0td2l0aG91dC10Y3Atd3JhcHBlcnMsIHRjcC13cmFwcGVycyIKK1BBQ0tBR0VDT05GSUdbc3dpZ10gPSAiLS13aXRoLXN3aWcsLS13aXRob3V0LXN3aWcsIHN3aWciCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtcHl0aG9uIgorCitSREVQRU5EU18ke1BOfSArPSAiYmFzaCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkL0NWRS0yMDE5LTE2Mjc1LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGQvQ1ZFLTIwMTktMTYyNzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNlZmQ0ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkL0NWRS0yMDE5LTE2Mjc1LnBhdGNoCkBAIC0wLDAgKzEsNzkgQEAKK0Zyb20gZDg2ZDY2ZGMwNzNiYzIxZDNiMTJmYWY0MTEyMDYyYWUwMGMxNzczZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvdW5pIE1hbGluZW4gPGpAdzEuZmk+CitEYXRlOiBUaHUsIDI5IEF1ZyAyMDE5IDExOjUyOjA0ICswMzAwCitTdWJqZWN0OiBBUDogU2lsZW50bHkgaWdub3JlIG1hbmFnZW1lbnQgZnJhbWUgZnJvbSB1bmV4cGVjdGVkIHNvdXJjZQorYWRkcmVzcworCitEbyBub3QgcHJvY2VzcyBhbnkgcmVjZWl2ZWQgTWFuYWdlbWVudCBmcmFtZXMgd2l0aCB1bmV4cGVjdGVkL2ludmFsaWQgU0EKK3NvIHRoYXQgd2UgZG8gbm90IGFkZCBhbnkgc3RhdGUgZm9yIHVuZXhwZWN0ZWQgU1RBIGFkZHJlc3NlcyBvciBlbmQgdXAKK3NlbmRpbmcgb3V0IGZyYW1lcyB0byB1bmV4cGVjdGVkIGRlc3RpbmF0aW9uLiBUaGlzIHByZXZlbnRzIHVuZXhwZWN0ZWQKK3NlcXVlbmNlcyB3aGVyZSBhbiB1bnByb3RlY3RlZCBmcmFtZSBtaWdodCBlbmQgdXAgY2F1c2luZyB0aGUgQVAgdG8gc2VuZAorb3V0IGEgcmVzcG9uc2UgdG8gYW5vdGhlciBkZXZpY2UgYW5kIHRoYXQgb3RoZXIgZGV2aWNlIHByb2Nlc3NpbmcgdGhlCit1bmV4cGVjdGVkIHJlc3BvbnNlLgorCitJbiBwYXJ0aWN1bGFyLCB0aGlzIHByZXZlbnRzIHNvbWUgcG90ZW50aWFsIGRlbmlhbCBvZiBzZXJ2aWNlIGNhc2VzCit3aGVyZSB0aGUgdW5leHBlY3RlZCByZXNwb25zZSBmcmFtZSBmcm9tIHRoZSBBUCBtaWdodCByZXN1bHQgaW4gYQorY29ubmVjdGVkIHN0YXRpb24gZHJvcHBpbmcgaXRzIGFzc29jaWF0aW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCitDVkU6IENWRS0yMDE5LTE2Mjc1CisKK1JlZmVyZW5jZSB0byB1cHN0cmVhbSBwYXRjaDoKK2h0dHBzOi8vdzEuZmkvY2dpdC9ob3N0YXAvY29tbWl0Lz9pZD1kODZkNjZkYzA3M2JjMjFkM2IxMmZhZjQxMTIwNjJhZTAwYzE3NzNmCisKK1NpZ25lZC1vZmYtYnk6IEpvdW5pIE1hbGluZW4gPGpAdzEuZmk+CistLS0KKyBzcmMvYXAvZHJ2X2NhbGxiYWNrcy5jIHwgMTMgKysrKysrKysrKysrKworIHNyYy9hcC9pZWVlODAyXzExLmMgICAgfCAxMiArKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9hcC9kcnZfY2FsbGJhY2tzLmMgYi9zcmMvYXAvZHJ2X2NhbGxiYWNrcy5jCitpbmRleCAzMTU4NzY4Li4zNGNhMzc5IDEwMDY0NAorLS0tIGEvc3JjL2FwL2Rydl9jYWxsYmFja3MuYworKysrIGIvc3JjL2FwL2Rydl9jYWxsYmFja3MuYworQEAgLTEzMSw2ICsxMzEsMTkgQEAgaW50IGhvc3RhcGRfbm90aWZfYXNzb2Moc3RydWN0IGhvc3RhcGRfZGF0YSAqaGFwZCwgY29uc3QgdTggKmFkZHIsCisgCQkJICAgImhvc3RhcGRfbm90aWZfYXNzb2M6IFNraXAgZXZlbnQgd2l0aCBubyBhZGRyZXNzIik7CisgCQlyZXR1cm4gLTE7CisgCX0KKysKKysJaWYgKGlzX211bHRpY2FzdF9ldGhlcl9hZGRyKGFkZHIpIHx8CisrCSAgICBpc196ZXJvX2V0aGVyX2FkZHIoYWRkcikgfHwKKysJICAgIG9zX21lbWNtcChhZGRyLCBoYXBkLT5vd25fYWRkciwgRVRIX0FMRU4pID09IDApIHsKKysJCS8qIERvIG5vdCBwcm9jZXNzIGFueSBmcmFtZXMgd2l0aCB1bmV4cGVjdGVkL2ludmFsaWQgU0Egc28gdGhhdAorKwkJICogd2UgZG8gbm90IGFkZCBhbnkgc3RhdGUgZm9yIHVuZXhwZWN0ZWQgU1RBIGFkZHJlc3NlcyBvciBlbmQKKysJCSAqIHVwIHNlbmRpbmcgb3V0IGZyYW1lcyB0byB1bmV4cGVjdGVkIGRlc3RpbmF0aW9uLiAqLworKwkJd3BhX3ByaW50ZihNU0dfREVCVUcsICIlczogSW52YWxpZCBTQT0iIE1BQ1NUUgorKwkJCSAgICIgaW4gcmVjZWl2ZWQgaW5kaWNhdGlvbiAtIGlnbm9yZSB0aGlzIGluZGljYXRpb24gc2lsZW50bHkiLAorKwkJCSAgIF9fZnVuY19fLCBNQUMyU1RSKGFkZHIpKTsKKysJCXJldHVybiAwOworKwl9CisrCisgCXJhbmRvbV9hZGRfcmFuZG9tbmVzcyhhZGRyLCBFVEhfQUxFTik7CisgCisgCWhvc3RhcGRfbG9nZ2VyKGhhcGQsIGFkZHIsIEhPU1RBUERfTU9EVUxFX0lFRUU4MDIxMSwKK2RpZmYgLS1naXQgYS9zcmMvYXAvaWVlZTgwMl8xMS5jIGIvc3JjL2FwL2llZWU4MDJfMTEuYworaW5kZXggYzg1YTI4ZC4uMjgxNjgxMiAxMDA2NDQKKy0tLSBhL3NyYy9hcC9pZWVlODAyXzExLmMKKysrKyBiL3NyYy9hcC9pZWVlODAyXzExLmMKK0BAIC00NjI2LDYgKzQ2MjYsMTggQEAgaW50IGllZWU4MDJfMTFfbWdtdChzdHJ1Y3QgaG9zdGFwZF9kYXRhICpoYXBkLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLAorIAlmYyA9IGxlX3RvX2hvc3QxNihtZ210LT5mcmFtZV9jb250cm9sKTsKKyAJc3R5cGUgPSBXTEFOX0ZDX0dFVF9TVFlQRShmYyk7CisgCisrCWlmIChpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihtZ210LT5zYSkgfHwKKysJICAgIGlzX3plcm9fZXRoZXJfYWRkcihtZ210LT5zYSkgfHwKKysJICAgIG9zX21lbWNtcChtZ210LT5zYSwgaGFwZC0+b3duX2FkZHIsIEVUSF9BTEVOKSA9PSAwKSB7CisrCQkvKiBEbyBub3QgcHJvY2VzcyBhbnkgZnJhbWVzIHdpdGggdW5leHBlY3RlZC9pbnZhbGlkIFNBIHNvIHRoYXQKKysJCSAqIHdlIGRvIG5vdCBhZGQgYW55IHN0YXRlIGZvciB1bmV4cGVjdGVkIFNUQSBhZGRyZXNzZXMgb3IgZW5kCisrCQkgKiB1cCBzZW5kaW5nIG91dCBmcmFtZXMgdG8gdW5leHBlY3RlZCBkZXN0aW5hdGlvbi4gKi8KKysJCXdwYV9wcmludGYoTVNHX0RFQlVHLCAiTUdNVDogSW52YWxpZCBTQT0iIE1BQ1NUUgorKwkJCSAgICIgaW4gcmVjZWl2ZWQgZnJhbWUgLSBpZ25vcmUgdGhpcyBmcmFtZSBzaWxlbnRseSIsCisrCQkJICAgTUFDMlNUUihtZ210LT5zYSkpOworKwkJcmV0dXJuIDA7CisrCX0KKysKKyAJaWYgKHN0eXBlID09IFdMQU5fRkNfU1RZUEVfQkVBQ09OKSB7CisgCQloYW5kbGVfYmVhY29uKGhhcGQsIG1nbXQsIGxlbiwgZmkpOworIAkJcmV0dXJuIDE7CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZF8yLjkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZF8yLjkuYmIKaW5kZXggOTgyNTE0Zi4uNjhkYzEyMyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGRfMi45LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkXzIuOS5iYgpAQCAtMTEsNiArMTEsNyBAQAogICAgIGZpbGU6Ly9kZWZjb25maWcgXAogICAgIGZpbGU6Ly9pbml0IFwKICAgICBmaWxlOi8vaG9zdGFwZC5zZXJ2aWNlIFwKKyAgICBmaWxlOi8vQ1ZFLTIwMTktMTYyNzUucGF0Y2ggXAogIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiZjE4OGZjNTNhNDk1ZmU3YWYzYjZkNzdkM2MzMWRlZTgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lyc3NpL2lyc3NpXzEuMS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcnNzaS9pcnNzaV8xLjEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI4NjdlOC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lyc3NpL2lyc3NpXzEuMS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJuY3Vyc2VzIElSQyBjbGllbnQiCi1ERVNDUklQVElPTiA9ICJJcnNzaSBpcyBhbiBuY3Vyc2VzIElSQyBjbGllbnQiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTVmZGMxMTEzMzA2MTY3ZDZlYTI1NjE0MDRjZTAyZjgiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgbmN1cnNlcyBvcGVuc3NsIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyNzFkMmZkODc1Y2RkZDM0NTI2MjM0ZDhhNzY2ZDgyYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1Y2NjMmI4OWEzOTRlOTFiZWEwYWE4M2E5NTFjM2IxZDQ3MWM3NmRhODdiNDE2OWVjNDM1NTMwYTMxYmY5NzMyIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtdGV4dHVpIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLXByb3h5IFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWJvdCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1wZXJsPW5vIFwKLSAgICAgICAgICAgICAgICAgLS1lbmFibGUtdHJ1ZS1jb2xvciIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXJzc2kvaXJzc2lfMS4yLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lyc3NpL2lyc3NpXzEuMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNTQwM2UKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lyc3NpL2lyc3NpXzEuMi4yLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAibmN1cnNlcyBJUkMgY2xpZW50IgorREVTQ1JJUFRJT04gPSAiSXJzc2kgaXMgYW4gbmN1cnNlcyBJUkMgY2xpZW50IgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1ZmRjMTExMzMwNjE2N2Q2ZWEyNTYxNDA0Y2UwMmY4IgorCitERVBFTkRTID0gImdsaWItMi4wIG5jdXJzZXMgb3BlbnNzbCIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiODU0N2Y4OWUwMTRlMjNlMWJiYmI2NjViY2Y3ZTJmNzAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjcyNzA2MGM5MTg1NjhiYTJmZjQyOTVhZDczNjEyOGRiYTBiOTk1ZDdiMjA0OTFiY2ExMWY1OTNiZDg1NzU3OCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGgtdGV4dHVpIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXByb3h5IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWJvdCBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1wZXJsPW5vIFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtdHJ1ZS1jb2xvciIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXdkL2l3ZC8wMDAxLU1ha2VmaWxlLmFtLUF2b2lkLXJlZGlyZWN0aW9uLW9mLWlucHV0LWFuZC1vdXRwdXQtZmkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3ZC9pd2QvMDAwMS1NYWtlZmlsZS5hbS1Bdm9pZC1yZWRpcmVjdGlvbi1vZi1pbnB1dC1hbmQtb3V0cHV0LWZpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2VmMDA3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXdkL2l3ZC8wMDAxLU1ha2VmaWxlLmFtLUF2b2lkLXJlZGlyZWN0aW9uLW9mLWlucHV0LWFuZC1vdXRwdXQtZmkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIGYyYTJiOWY0NDVhYjFlMzFmYmIyN2E3NDc0NGU5YTJlZGVkZmNlMTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA0IE5vdiAyMDE5IDE2OjM4OjA0IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiBBdm9pZCByZWRpcmVjdGlvbiBvZiBpbnB1dCBhbmQgb3V0cHV0IGZpbGVzCi0KLUVuc3VyZSB0aGF0IGRpcmVjdG9yeSBpcyBjcmVhdGVkIGJlZm9yZSBpdHMgd3JpdHRlbiB0bwotCi1UaGlzIGNhbiBjYXVzZSBhIGJ1aWxkIHJhY2UgaW4gYSBoaWdobHkgcGFyYWxsZWxpc2VkIGJ1aWxkIHdoZXJlIGEgZGlyZWN0b3J5IGlzIG5vdCB5ZXQgY3JlYXRlZCBidXQKLW91dHB1dCBmaWxlIGlzIGJlaW5nIHdyaXR0ZW4gdXNpbmcgcmVkaXJlY3Rpb24gZS5nLgotCi1yc3QybWFuLnB5IC0tc3RyaWN0IC0tbm8tcmF3IC0tbm8tZ2VuZXJhdG9yIC0tbm8tZGF0ZXN0YW1wIDwgLi4vZ2l0L21vbml0b3IvaXdtb24ucnN0ID4gbW9uaXRvci9pd21vbi4xCi0vYmluL3NoOiBtb25pdG9yL2l3bW9uLjE6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLW1ha2VbMV06ICoqKiBbTWFrZWZpbGU6MzU0NDogbW9uaXRvci9pd21vbi4xXSBFcnJvciAxCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gfCA1ICsrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDgyM2I3ZDAyLi4xYmQwMDA1YyAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTYyNiw4ICs2MjYsOSBAQCBTRURfUFJPQ0VTUyA9ICQoQU1fVl9HRU4pJChNS0RJUl9QKSAkKGRpciAkQCkgJiYgJChTRUQpIFwKLSAJCTwgJDwgPiAkQAotIAotIGlmIFJVTl9SU1QyTUFOCi0tUlNUMk1BTl9QUk9DRVNTID0gJChBTV9WX0dFTikkKFJTVDJNQU4pIC0tc3RyaWN0IC0tbm8tcmF3IC0tbm8tZ2VuZXJhdG9yIFwKLS0JCQktLW5vLWRhdGVzdGFtcCA8ICQ8ID4gJEAKLStSU1QyTUFOX1BST0NFU1MgPSAkKEFNX1ZfR0VOKSQoTUtESVJfUCkgJChkaXIgJEApICYmIFwKLSsJCQkkKEFNX1ZfR0VOKSQoUlNUMk1BTikgLS1zdHJpY3QgLS1uby1yYXcgXAotKwkJCS0tbm8tZ2VuZXJhdG9yIC0tbm8tZGF0ZXN0YW1wICQ8ICRACi0gZWxzZQotIFJTVDJNQU5fUFJPQ0VTUyA9ICQoQU1fVl9HRU4pdGVzdCAtZiAkQCB8fCBcCi0gCQl7IGVjaG8gIkdlbmVyYXRlZCBtYW51YWwgcGFnZSAkQCBkb2VzIG5vdCBleGlzdCI7IGZhbHNlOyB9Ci0tLSAKLTIuMjQuMAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3ZC9pd2RfMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pd2QvaXdkXzEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MzNGNhMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3ZC9pd2RfMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiV2lyZWxlc3MgZGFlbW9uIGZvciBMaW51eCIKLUxJQ0VOU0UgPSAiTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYjUwNGI2N2M1MDMzMWZjNzg3MzRmZWQ5MGZiMGUwOSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgcHl0aG9uM25hdGl2ZQotCi1ERVBFTkRTID0gImVsbCByZWFkbGluZSBkYnVzIHB5dGhvbjMtZG9jdXRpbHMtbmF0aXZlIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbmV0d29yay93aXJlbGVzcy9pd2QuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tQXZvaWQtcmVkaXJlY3Rpb24tb2YtaW5wdXQtYW5kLW91dHB1dC1maS5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDUkVWID0gIjk3MWUxZDIwMzhhMjAzYWQ0M2JkMjI3OGE4MTFhOWU1ZWM4ZDUyZGIiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKLVBBQ0tBR0VDT05GSUdbd2lyZWRdID0gIi0tZW5hYmxlLXdpcmVkLC0tZGlzYWJsZS13aXJlZCIKLVBBQ0tBR0VDT05GSUdbb2Zvbm9dID0gIi0tZW5hYmxlLW9mb25vLC0tZGlzYWJsZS1vZm9ubyIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWQtdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LC0tZGlzYWJsZS1zeXN0ZW1kLXNlcnZpY2Usc3lzdGVtZCIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1leHRlcm5hbC1lbGwiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICBta2RpciAtcCAke1N9L2J1aWxkLWF1eAotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBta2RpciAtLXBhcmVudHMgJHtEfSR7ZG9jZGlyfS8ke0JQTn0KLSAgICBpbnN0YWxsIC1tNjQ0ICR7U30vZG9jLyoudHh0ICR7RH0ke2RvY2Rpcn0vJHtCUE59Ci19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMSAke25vbmFyY2hfbGliZGlyfS9tb2R1bGVzLWxvYWQuZCAke3N5c3RlbWRfdW5pdGRpcn0vbmV0d29yay8iCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJpd2Quc2VydmljZSAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd3aXJlZCcsICdlYWQuc2VydmljZScsICcnLCBkKX0iCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gIlwKLSAgICBrZXJuZWwtbW9kdWxlLXBrY3M3LW1lc3NhZ2UgXAotICAgIGtlcm5lbC1tb2R1bGUtcGtjczgta2V5LXBhcnNlciBcCi0gICAga2VybmVsLW1vZHVsZS14NTA5LWtleS1wYXJzZXIgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pd2QvaXdkXzEuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXdkL2l3ZF8xLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBhYzAzZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXdkL2l3ZF8xLjYuYmIKQEAgLTAsMCArMSw1NCBAQAorU1VNTUFSWSA9ICJXaXJlbGVzcyBkYWVtb24gZm9yIExpbnV4IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9pd2Qud2lraS5rZXJuZWwub3JnLyIKK0xJQ0VOU0UgPSAiTEdQTC0yLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYjUwNGI2N2M1MDMzMWZjNzg3MzRmZWQ5MGZiMGUwOSIKKworREVQRU5EUyA9ICJlbGwiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9uZXR3b3JrL3dpcmVsZXNzL2l3ZC5naXQiCitTUkNSRVYgPSAiYWQ5N2Y0Zjk0NWI4Mjg0MjVmZjI4OGU5MDU1MjNlMTFiMzMwZDQxZCIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIG1hbnBhZ2VzIHBrZ2NvbmZpZyBweXRob24zbmF0aXZlIHN5c3RlbWQKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgY2xpZW50IFwKKyAgICBtb25pdG9yIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbY2xpZW50XSA9ICItLWVuYWJsZS1jbGllbnQsLS1kaXNhYmxlLWNsaWVudCxyZWFkbGluZSIKK1BBQ0tBR0VDT05GSUdbbW9uaXRvcl0gPSAiLS1lbmFibGUtbW9uaXRvciwtLWRpc2FibGUtbW9uaXRvciIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbnVhbC1wYWdlcywtLWRpc2FibGUtbWFudWFsLXBhZ2VzLHB5dGhvbjMtZG9jdXRpbHMtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1t3aXJlZF0gPSAiLS1lbmFibGUtd2lyZWQsLS1kaXNhYmxlLXdpcmVkIgorUEFDS0FHRUNPTkZJR1tvZm9ub10gPSAiLS1lbmFibGUtb2Zvbm8sLS1kaXNhYmxlLW9mb25vIgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtc3lzdGVtZC11bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sLS1kaXNhYmxlLXN5c3RlbWQtc2VydmljZSxzeXN0ZW1kIgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtZXh0ZXJuYWwtZWxsIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiIFwKKyAgICBpd2Quc2VydmljZSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnd2lyZWQnLCAnZWFkLnNlcnZpY2UnLCAnJywgZCl9IFwKKyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke1N9L2J1aWxkLWF1eAorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIElmIGNsaWVudCBhbmQgbW9uaXRvciBhcmUgZGlzYWJsZWQsIGJpbmRpciBpcyBlbXB0eSwgY2F1c2luZyBhIFFBIGVycm9yCisgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfS8ke2JpbmRpcn0KK30KKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7bm9uYXJjaF9saWJkaXJ9L21vZHVsZXMtbG9hZC5kIFwKKyAgICAke3N5c3RlbWRfdW5pdGRpcn0vbmV0d29yayBcCisiCisKK1JERVBFTkRTXyR7UE59ID0gImRidXMiCisKK1JSRUNPTU1FTkRTXyR7UE59ID0gIlwKKyAgICBrZXJuZWwtbW9kdWxlLXBrY3M3LW1lc3NhZ2UgXAorICAgIGtlcm5lbC1tb2R1bGUtcGtjczgta2V5LXBhcnNlciBcCisgICAga2VybmVsLW1vZHVsZS14NTA5LWtleS1wYXJzZXIgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJldi9saWJldl80LjI3LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJldi9saWJldl80LjI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTQ1MzZiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGliZXYvbGliZXZfNC4yNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiQSBmdWxsLWZlYXR1cmVkIGFuZCBoaWdoLXBlcmZvcm1hbmNlIGV2ZW50IGxvb3AgdGhhdCBpcyBsb29zZWx5IFwKLW1vZGVsbGVkIGFmdGVyIGxpYmV2ZW50LiIKLUhPTUVQQUdFID0gImh0dHA6Ly9zb2Z0d2FyZS5zY2htb3JwLmRlL3BrZy9saWJldi5odG1sIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UgfCBHUEwtMi4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQ2YWQ0MTZhZmQwNDBjOTA2OThlZGNkZjFjYmVlMzQ3IgotCi1TUkNfVVJJID0gImh0dHA6Ly9kaXN0LnNjaG1vcnAuZGUvbGliZXYvQXR0aWMvJHtCUH0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImQzODkyNWZiYzAzMDE1M2ZlNjc0YzRlMGU4NjRhNjlhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJkNTUyNmZjOGRhNGYwNzJkZDVjNzNlMThmYmIxNjY2ZjVlZjhlZDc4YjczYmJhMTJlMTk1Y2ZkZDgxMDM0NGUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLXBpYyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBBdm9pZCBjb25mbGljdGluZyB3aXRoIGxpYmV2ZW50LiBUaGUgcHJvdmlkZWQgY29tcGF0aWJpbGl0eSBsYXllciBpcwotICAgICMgc3RpbGwgYmFzaWMgc28gZHJvcCBpdCBmb3Igbm93LgotICAgIHJtICR7RH0ke2luY2x1ZGVkaXJ9L2V2ZW50LmgKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYmV2L2xpYmV2XzQuMzMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYmV2L2xpYmV2XzQuMzMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYwYzJkYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGliZXYvbGliZXZfNC4zMy5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIkEgZnVsbC1mZWF0dXJlZCBhbmQgaGlnaC1wZXJmb3JtYW5jZSBldmVudCBsb29wIHRoYXQgaXMgbG9vc2VseSBcCittb2RlbGxlZCBhZnRlciBsaWJldmVudC4iCitIT01FUEFHRSA9ICJodHRwOi8vc29mdHdhcmUuc2NobW9ycC5kZS9wa2cvbGliZXYuaHRtbCIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIHwgR1BMLTIuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kNmFkNDE2YWZkMDQwYzkwNjk4ZWRjZGYxY2JlZTM0NyIKKworU1JDX1VSSSA9ICJodHRwOi8vZGlzdC5zY2htb3JwLmRlL2xpYmV2L0F0dGljLyR7QlB9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhMzQzM2YyMzU4MzE2NzA4MWJmNGFjZGQ1YjAxYjM0ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1MDdlYjdiOGQxMDE1ZmJlYzViOTM1ZjM0ZWJlZDE1YmYzNDZiZWQwNGExMWFiODJiOGVlZTg0OGM0MjA1YWVhIgorCitpbmhlcml0IGF1dG90b29scworCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1waWMiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgQXZvaWQgY29uZmxpY3Rpbmcgd2l0aCBsaWJldmVudC4gVGhlIHByb3ZpZGVkIGNvbXBhdGliaWxpdHkgbGF5ZXIgaXMKKyAgICAjIHN0aWxsIGJhc2ljIHNvIGRyb3AgaXQgZm9yIG5vdy4KKyAgICBybSAke0R9JHtpbmNsdWRlZGlyfS9ldmVudC5oCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJtYmltL2xpYm1iaW0vY2xhbmcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm1iaW0vbGlibWJpbS9jbGFuZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg4NTc4NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm1iaW0vbGlibWJpbS9jbGFuZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLUNoZWNrIGZvciBjbGFuZyBjb21waWxlciBzaW5jZSB3ZSBuZWVkIHRvIGRpc2FibGUKLXVudXNlZC1mdW5jdGlvbiB3YXJuaW5nIGZvciBjbGFuZywgYXQgc2FtZSB0aW1lCi1wYXNzIHdlcnJvciB3aGVuIGNoZWNraW5nIGZvciBjb21waWxlciBvcHRpb25zIGlmCi13ZXJyb3IgaXMgZW5hYmxlZCBzbyBzcHVyaW91cyBvcHRpb25zIGRvIG5vdCBnZXQKLWVuYWJsZWQuIE9ubHkgdGhlIG9uZXMgdGhhdCBhcmUgc3VwcG9ydGVkIGJ5IGdpdmVuCi1jb21waWxlciBhcmUgYWNjZXB0ZWQuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IGxpYm1iaW0tMS4xNC4wL200L2NvbXBpbGVyLXdhcm5pbmdzLm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlibWJpbS0xLjE0LjAub3JpZy9tNC9jb21waWxlci13YXJuaW5ncy5tNAotKysrIGxpYm1iaW0tMS4xNC4wL200L2NvbXBpbGVyLXdhcm5pbmdzLm00Ci1AQCAtMiwxMCArMiwzMCBAQCBBQ19ERUZVTihbTElCTUJJTV9DT01QSUxFUl9XQVJOSU5HU10sCi0gW0FDX0FSR19FTkFCTEUobW9yZS13YXJuaW5ncywKLSAJQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLW1vcmUtd2FybmluZ3NdLCBbUG9zc2libGUgdmFsdWVzOiBuby95ZXMvZXJyb3JdKSwKLSAJc2V0X21vcmVfd2FybmluZ3M9IiRlbmFibGV2YWwiLHNldF9tb3JlX3dhcm5pbmdzPWVycm9yKQotKwotKyMgQ2xhbmcgdGhyb3dzIGEgbG90IG9mIHdhcm5pbmdzIHdoZW4gaXQgZG9lcyBub3QgdW5kZXJzdGFuZCBhIGZsYWcuIERpc2FibGUKLSsjIHRoaXMgd2FybmluZyBmb3Igbm93IHNvIG90aGVyIHdhcm5pbmdzIGFyZSB2aXNpYmxlLgotK0FDX01TR19DSEVDS0lORyhbaWYgY29tcGlsaW5nIHdpdGggY2xhbmddKQotK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW10sIFtbCi0rI2lmbmRlZiBfX2NsYW5nX18KLSsJbm90IGNsYW5nCi0rI2VuZGlmCi0rCV1dKV0sCi0rCVtDTEFORz15ZXNdLAotKwlbQ0xBTkc9bm9dCi0rKQotK0FDX01TR19SRVNVTFQoWyRDTEFOR10pCi0rQVNfSUYoW3Rlc3QgIngkQ0xBTkciID0gInh5ZXMiXSwgW0NMQU5HX0ZMQUdTPS1Xbm8tZXJyb3I9dW51c2VkLWZ1bmN0aW9uXSkKLStDRkxBR1M9IiRDRkxBR1MgJENMQU5HX0ZMQUdTIgotK0xERkxBR1M9IiRMREZMQUdTICRDTEFOR19GTEFHUyIKLSsKLSBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG1vcmUgd2FybmluZ3MpCi0gaWYgdGVzdCAiJEdDQyIgPSAieWVzIiAtYSAiJHNldF9tb3JlX3dhcm5pbmdzIiAhPSAibm8iOyB0aGVuCi0gCUFDX01TR19SRVNVTFQoeWVzKQotIAlDRkxBR1M9Ii1XYWxsIC1zdGQ9Z251ODkgJENGTEFHUyIKLSsJaWYgdGVzdCAieCRzZXRfbW9yZV93YXJuaW5ncyIgPSB4ZXJyb3I7IHRoZW4KLSsJCVdFUlJPUj0iLVdlcnJvciIKLSsJZmkKLSAKLSAJZm9yIG9wdGlvbiBpbiAtV21pc3NpbmctZGVjbGFyYXRpb25zIC1XbWlzc2luZy1wcm90b3R5cGVzIFwKLSAJCSAgICAgIC1XZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IC1Xc3RyaWN0LXByb3RvdHlwZXMgXAotQEAgLTE3LDIyICszNywyMyBAQCBpZiB0ZXN0ICIkR0NDIiA9ICJ5ZXMiIC1hICIkc2V0X21vcmVfd2FyCi0gCQkgICAgICAtV21pc3NpbmctaW5jbHVkZS1kaXJzIC1XYWdncmVnYXRlLXJldHVybiBcCi0gCQkgICAgICAtV2Zvcm1hdC1zZWN1cml0eSAtV3R5cGUtbGltaXRzOyBkbwotIAkJU0FWRV9DRkxBR1M9IiRDRkxBR1MiCi0tCQlDRkxBR1M9IiRDRkxBR1MgJG9wdGlvbiIKLSsJCUNGTEFHUz0iJENGTEFHUyAkb3B0aW9uICRXRVJST1IiCi0gCQlBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgZ2NjIHVuZGVyc3RhbmRzICRvcHRpb25dKQotIAkJQUNfVFJZX0NPTVBJTEUoW10sIFtdLAotIAkJCWhhc19vcHRpb249eWVzLAotIAkJCWhhc19vcHRpb249bm8sKQotIAkJaWYgdGVzdCAkaGFzX29wdGlvbiA9IG5vOyB0aGVuCi0gCQkJQ0ZMQUdTPSIkU0FWRV9DRkxBR1MiCi0rCQllbHNlCi0rCQkJQ0ZMQUdTPSIkU0FWRV9DRkxBR1MgJG9wdGlvbiIKLSAJCWZpCi0gCQlBQ19NU0dfUkVTVUxUKCRoYXNfb3B0aW9uKQotIAkJdW5zZXQgaGFzX29wdGlvbgotIAkJdW5zZXQgU0FWRV9DRkxBR1MKLSAJZG9uZQotKwlDRkxBR1M9IiRDRkxBR1MgJFdFUlJPUiIKLSAJdW5zZXQgb3B0aW9uCi0tCWlmIHRlc3QgIngkc2V0X21vcmVfd2FybmluZ3MiID0geGVycm9yOyB0aGVuCi0tCQlDRkxBR1M9IiRDRkxBR1MgLVdlcnJvciIKLS0JZmkKLSsJdW5zZXQgV0VSUk9SCi0gZWxzZQotIAlBQ19NU0dfUkVTVUxUKG5vKQotIGZpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm1iaW0vbGlibWJpbV8xLjIwLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm1iaW0vbGlibWJpbV8xLjIwLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzZWY4MGMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJtYmltL2xpYm1iaW1fMS4yMC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJsaWJtYmltIGlzIGxpYnJhcnkgZm9yIHRhbGtpbmcgdG8gV1dBTiBkZXZpY2VzIGJ5IE1CSU0gcHJvdG9jb2wiCi1ERVNDUklQVElPTiA9ICJsaWJtYmltIGlzIGEgZ2xpYi1iYXNlZCBsaWJyYXJ5IGZvciB0YWxraW5nIHRvIFdXQU4gbW9kZW1zIGFuZCBkZXZpY2VzIHdoaWNoIHNwZWFrIHRoZSBNb2JpbGUgSW50ZXJmYWNlIEJyb2FkYmFuZCBNb2RlbCAoTUJJTSkgcHJvdG9jb2wiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2xpYm1iaW0vIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0iCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYmd1ZGV2IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmFzaC1jb21wbGV0aW9uCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vY2xhbmcucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImQzOGQ2MzdlMzNjZGU4YTkxNDg0ZjUzYTlmNmM0ZDQ5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFjMjcwOGE0MDliMDlmMWY2ZjE3ODZhOGE5ZTM5YzM2NjE5YWE4ZDZmMjg1ZWE5NDNkYWE3YTQ4ZWEzNmQzZTgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm1iaW0vbGlibWJpbV8xLjIyLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm1iaW0vbGlibWJpbV8xLjIyLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFlMzE0ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibWJpbS9saWJtYmltXzEuMjIuMC5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gImxpYm1iaW0gaXMgbGlicmFyeSBmb3IgdGFsa2luZyB0byBXV0FOIGRldmljZXMgYnkgTUJJTSBwcm90b2NvbCIKK0RFU0NSSVBUSU9OID0gImxpYm1iaW0gaXMgYSBnbGliLWJhc2VkIGxpYnJhcnkgZm9yIHRhbGtpbmcgdG8gV1dBTiBtb2RlbXMgYW5kIGRldmljZXMgd2hpY2ggc3BlYWsgdGhlIE1vYmlsZSBJbnRlcmZhY2UgQnJvYWRiYW5kIE1vZGVsIChNQklNKSBwcm90b2NvbCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGlibWJpbS8iCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gIiBcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgbGliZ3VkZXYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiYXNoLWNvbXBsZXRpb24KKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gIjg3MDYwZTg5NTcwMTMxNzdlNDE0MGVkYzZmNjRmNWJkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVjMDc3OGViMWNkMTJjMzYwNDUyMzEzNGU1NTE4M2Y1MTQ3YjBjYWU3MTE1MGU4NzViNTgzNzY4ZjdhYTFmMzgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm10cC9saWJtdHBfMS4xLjE2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJtdHAvbGlibXRwXzEuMS4xNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTk2ZTMxNS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm10cC9saWJtdHBfMS4xLjE2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotIyBUT0RPOiBpbmNsdWRlIGRlYmlhbidzIG10cC10b29scyBtYW4gcGFnZSAobmVlZHMgeHNsdHByb2MtbmF0aXZlIGFuZAotIyBkb2Nib29rLXhzbC1uYXRpdmUsIG9yIHdlIHByZWdlbmVyYXRlIGl0KSwgYWRkIHN1cHBvcnQgZm9yIGRveHlnZW4KLSMgZ2VuZXJhdGlvbiBmdWxseSB3aXRoIC1uYXRpdmVzCi1ERVNDUklQVElPTiA9ICJsaWJtdHAgaXMgYW4gSW5pdGlhdG9yIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNZWRpYSBUcmFuc2ZlciBcCi1Qcm90b2NvbCAoTVRQKSBpbiB0aGUgZm9ybSBvZiBhIGxpYnJhcnkgc3VpdGFibGUgcHJpbWFyaWx5IGZvciBQT1NJWCBcCi1jb21wbGlhbnQgb3BlcmF0aW5nIHN5c3RlbXMiCi1TVU1NQVJZID0gImxpYm10cCBpcyBhbiBJbml0aWF0b3IgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1lZGlhIFRyYW5zZmVyIFByb3RvY29sIChNVFApIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpYm10cC5zb3VyY2Vmb3JnZS5uZXQvIgotTElDRU5TRSA9ICJMR1BMLTIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gIlwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9MDQ0OGQzNjc2YmMwZGUwMDQwNmFmMjI3ZDM0MWE0ZDEgXAotICAgIGZpbGU6Ly9zcmMvcHRwLmM7YmVnaW5saW5lPTM7ZW5kbGluZT0yMjttZDU9MzAzY2M0NDIyZmQ1NDllZjg2ODlhZGVkMjA0MzRhOWEgXAotICAgIGZpbGU6Ly9leGFtcGxlcy9hbGJ1bXMuYztiZWdpbmxpbmU9NTtlbmRsaW5lPTIxO21kNT04NGY0ZTU1ZGZlYzQ5ZTg5OGI3ZjY4YTgyOGMxNTYyMCBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1ERVBFTkRTID0gImxpYnVzYjEgZ2V0dGV4dC1uYXRpdmUiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QlBOfS1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IgotU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vMDAwMS1Vc2UtbmF0aXZlLW10cC1ob3RwbHVnLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzc5NjE3OWFmNDZlOTA5MzhkZGUxZDBjNGQxZDFkNGMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWI2OGY5ZGQxZWQzOGRlNTU4ZGU2ODdmNDBlMjU1YTM5ZTRkNWUzMmVmM2RlNjAxZjBhYzE5ZGQ1NjgyYmJhMCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGxpYl9wYWNrYWdlCi0KLUVYVFJBX09FQ09ORiArPSAiIFwKLSAgICAtLWRpc2FibGUtcnBhdGggXAotICAgIC0td2l0aC11ZGV2PSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldiBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2xhcmdlZmlsZScsIGQpfSIKLVBBQ0tBR0VDT05GSUdbZG94eWdlbl0gPSAiLS1lbmFibGUtZG94eWdlbiwtLWRpc2FibGUtZG94eWdlbiIKLVBBQ0tBR0VDT05GSUdbbGFyZ2VmaWxlXSA9ICItLWVuYWJsZS1sYXJnZWZpbGUsLS1kaXNhYmxlLWxhcmdlZmlsZSIKLVBBQ0tBR0VDT05GSUdbbXRwel0gPSAiLS1lbmFibGUtbXRweiwtLWRpc2FibGUtbXRweixsaWJnY3J5cHQiCi0KLVBBQ0tBR0VTID0rICIke0JQTn0tY29tbW9uICR7QlBOfS1ydW50aW1lIgotCi1SREVQRU5EU18ke0JQTn0gKz0gImxpYm10cC1jb21tb24iCi1SUkVDT01NRU5EU18ke0JQTn0gKz0gImxpYm10cC1ydW50aW1lICR7UE59LWJpbiIKLQotRklMRVNfJHtCUE59LWNvbW1vbiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC8qIgotU1VNTUFSWV8ke0JQTn0tY29tbW9uID0gIlRoZSB1ZGV2IHJ1bGVzIGZpbGUgZm9yIE1UUCBkZXZpY2VzIgotCi1GSUxFU18ke0JQTn0tcnVudGltZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvbXRwLXByb2JlIgotUkRFUEVORFNfJHtCUE59LXJ1bnRpbWUgPSAibGlibXRwLWNvbW1vbiIKLVNVTU1BUllfJHtCUE59LXJ1bnRpbWUgPSAibXRwLXByb2JlLCB1c2VkIGZvciB0aGUgTVRQIHVkZXYgcnVsZXMiCi1ERVNDUklQVElPTl8ke0JQTn0tcnVudGltZSA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgbXRwLXByb2JlLCBhIHByb2dyYW0gdG8gcHJvYmUgbmV3bHkgY29ubmVjdGVkIGRldmljZSBpbnRlcmZhY2VzIGZyb20gdXNlcnNwYWNlIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBNVFAgZGV2aWNlcywgdXNlZCBmb3IgdWRldiBydWxlcy4iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm10cC9saWJtdHBfMS4xLjE3LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJtdHAvbGlibXRwXzEuMS4xNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGRlY2JjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJtdHAvbGlibXRwXzEuMS4xNy5iYgpAQCAtMCwwICsxLDUwIEBACisjIFRPRE86IGluY2x1ZGUgZGViaWFuJ3MgbXRwLXRvb2xzIG1hbiBwYWdlIChuZWVkcyB4c2x0cHJvYy1uYXRpdmUgYW5kCisjIGRvY2Jvb2steHNsLW5hdGl2ZSwgb3Igd2UgcHJlZ2VuZXJhdGUgaXQpLCBhZGQgc3VwcG9ydCBmb3IgZG94eWdlbgorIyBnZW5lcmF0aW9uIGZ1bGx5IHdpdGggLW5hdGl2ZXMKK0RFU0NSSVBUSU9OID0gImxpYm10cCBpcyBhbiBJbml0aWF0b3IgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1lZGlhIFRyYW5zZmVyIFwKK1Byb3RvY29sIChNVFApIGluIHRoZSBmb3JtIG9mIGEgbGlicmFyeSBzdWl0YWJsZSBwcmltYXJpbHkgZm9yIFBPU0lYIFwKK2NvbXBsaWFudCBvcGVyYXRpbmcgc3lzdGVtcyIKK1NVTU1BUlkgPSAibGlibXRwIGlzIGFuIEluaXRpYXRvciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTWVkaWEgVHJhbnNmZXIgUHJvdG9jb2wgKE1UUCkiCitIT01FUEFHRSA9ICJodHRwOi8vbGlibXRwLnNvdXJjZWZvcmdlLm5ldC8iCitMSUNFTlNFID0gIkxHUEwtMi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT0wNDQ4ZDM2NzZiYzBkZTAwNDA2YWYyMjdkMzQxYTRkMSBcCisgICAgZmlsZTovL3NyYy9wdHAuYztiZWdpbmxpbmU9MztlbmRsaW5lPTIyO21kNT0zMDNjYzQ0MjJmZDU0OWVmODY4OWFkZWQyMDQzNGE5YSBcCisgICAgZmlsZTovL2V4YW1wbGVzL2FsYnVtcy5jO2JlZ2lubGluZT01O2VuZGxpbmU9MjE7bWQ1PTg0ZjRlNTVkZmVjNDllODk4YjdmNjhhODI4YzE1NjIwIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK0RFUEVORFMgPSAibGlidXNiMSBnZXR0ZXh0LW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtCUE59LW5hdGl2ZSIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGZpbGU6Ly8wMDAxLVVzZS1uYXRpdmUtbXRwLWhvdHBsdWcucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MWFlYTVkMzEzOWU1MTg5YzJlMDU1ZWQyYzk4Y2Q5MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmOGEzNGNmNTJkOWY5YjljYjhjN2YyNmIxMmRhMzQ3ZDRhZjdlYjkwNGMxMzE4OTYwMmU0YzZiNjJkMWE3OWRjIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbGliX3BhY2thZ2UKKworRVhUUkFfT0VDT05GICs9ICIgXAorICAgIC0tZGlzYWJsZS1ycGF0aCBcCisgICAgLS13aXRoLXVkZXY9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2IFwKKyIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnbGFyZ2VmaWxlJywgZCl9IgorUEFDS0FHRUNPTkZJR1tkb3h5Z2VuXSA9ICItLWVuYWJsZS1kb3h5Z2VuLC0tZGlzYWJsZS1kb3h5Z2VuIgorUEFDS0FHRUNPTkZJR1tsYXJnZWZpbGVdID0gIi0tZW5hYmxlLWxhcmdlZmlsZSwtLWRpc2FibGUtbGFyZ2VmaWxlIgorUEFDS0FHRUNPTkZJR1ttdHB6XSA9ICItLWVuYWJsZS1tdHB6LC0tZGlzYWJsZS1tdHB6LGxpYmdjcnlwdCIKKworUEFDS0FHRVMgPSsgIiR7QlBOfS1jb21tb24gJHtCUE59LXJ1bnRpbWUiCisKK1JERVBFTkRTXyR7QlBOfSArPSAibGlibXRwLWNvbW1vbiIKK1JSRUNPTU1FTkRTXyR7QlBOfSArPSAibGlibXRwLXJ1bnRpbWUgJHtQTn0tYmluIgorCitGSUxFU18ke0JQTn0tY29tbW9uID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLyoiCitTVU1NQVJZXyR7QlBOfS1jb21tb24gPSAiVGhlIHVkZXYgcnVsZXMgZmlsZSBmb3IgTVRQIGRldmljZXMiCisKK0ZJTEVTXyR7QlBOfS1ydW50aW1lID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9tdHAtcHJvYmUiCitSREVQRU5EU18ke0JQTn0tcnVudGltZSA9ICJsaWJtdHAtY29tbW9uIgorU1VNTUFSWV8ke0JQTn0tcnVudGltZSA9ICJtdHAtcHJvYmUsIHVzZWQgZm9yIHRoZSBNVFAgdWRldiBydWxlcyIKK0RFU0NSSVBUSU9OXyR7QlBOfS1ydW50aW1lID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyBtdHAtcHJvYmUsIGEgcHJvZ3JhbSB0byBwcm9iZSBuZXdseSBjb25uZWN0ZWQgZGV2aWNlIGludGVyZmFjZXMgZnJvbSB1c2Vyc3BhY2UgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIE1UUCBkZXZpY2VzLCB1c2VkIGZvciB1ZGV2IHJ1bGVzLiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicW1pL2xpYnFtaV8xLjI0LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnFtaS9saWJxbWlfMS4yNC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWE1OGQyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicW1pL2xpYnFtaV8xLjI0LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1TVU1NQVJZID0gImxpYnFtaSBpcyBhIGxpYnJhcnkgZm9yIHRhbGtpbmcgdG8gV1dBTiBkZXZpY2VzIGJ5IFFNSSBwcm90b2NvbCIKLURFU0NSSVBUSU9OID0gImxpYnFtaSBpcyBhIGdsaWItYmFzZWQgbGlicmFyeSBmb3IgdGFsa2luZyB0byBXV0FOIG1vZGVtcyBhbmQgZGV2aWNlcyB3aGljaCBzcGVhayB0aGUgUXVhbGNvbW0gTVNNIEludGVyZmFjZSAoUU1JKSBwcm90b2NvbCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGlicW1pIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0iCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmFzaC1jb21wbGV0aW9uCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlNDljNDE5MTEyZDcwOGI1MzAxYWY3Y2NjMmMwOTBmZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YWU0ZTQ3NmY5NjBkYmMwZDA0YjFjMDM2ODc3NmViNzhlZGZmZDQ0MjFmM2U0YzA3NGJiMmJmYjYzNzViMjgyIgotCi1QQUNLQUdFQ09ORklHID8/PSAidWRldiBtYmltIgotUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICIsLS13aXRob3V0LXVkZXYsbGliZ3VkZXYiCi1QQUNLQUdFQ09ORklHW21iaW1dID0gIi0tZW5hYmxlLW1iaW0tcW11eCwtLWRpc2FibGUtbWJpbS1xbXV4LGxpYm1iaW0iCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfdG9vbGNoYWluLWNsYW5nID0gIiAtLWVuYWJsZS1tb3JlLXdhcm5pbmdzPW5vIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJxbWkvbGlicW1pXzEuMjQuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicW1pL2xpYnFtaV8xLjI0LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI0YjBmMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicW1pL2xpYnFtaV8xLjI0LjguYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJsaWJxbWkgaXMgYSBsaWJyYXJ5IGZvciB0YWxraW5nIHRvIFdXQU4gZGV2aWNlcyBieSBRTUkgcHJvdG9jb2wiCitERVNDUklQVElPTiA9ICJsaWJxbWkgaXMgYSBnbGliLWJhc2VkIGxpYnJhcnkgZm9yIHRhbGtpbmcgdG8gV1dBTiBtb2RlbXMgYW5kIGRldmljZXMgd2hpY2ggc3BlYWsgdGhlIFF1YWxjb21tIE1TTSBJbnRlcmZhY2UgKFFNSSkgcHJvdG9jb2wiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2xpYnFtaSIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiIFwKKyAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJhc2gtY29tcGxldGlvbgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzc5M2RiMmM5MWQ3OTI4MTYwMzQxYjM1N2IyNjMxNWQ5Yzg3OWVjYjM2Njk5Y2I3YTZiMzYwNTRjYmE2MDg5MyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInVkZXYgbWJpbSIKK1BBQ0tBR0VDT05GSUdbdWRldl0gPSAiLC0td2l0aG91dC11ZGV2LGxpYmd1ZGV2IgorUEFDS0FHRUNPTkZJR1ttYmltXSA9ICItLWVuYWJsZS1tYmltLXFtdXgsLS1kaXNhYmxlLW1iaW0tcW11eCxsaWJtYmltIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX3Rvb2xjaGFpbi1jbGFuZyA9ICIgLS1lbmFibGUtbW9yZS13YXJuaW5ncz1ubyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXYvbGlidXZfMS4zNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1di9saWJ1dl8xLjM0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4NDJiYmQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1di9saWJ1dl8xLjM0LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIkEgbXVsdGktcGxhdGZvcm0gc3VwcG9ydCBsaWJyYXJ5IHdpdGggYSBmb2N1cyBvbiBhc3luY2hyb25vdXMgSS9PIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYnV2L2xpYnV2IgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vbGlidXYvbGlidXYvaXNzdWVzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNjg5MDJhNDMwZTMyMjAwMjYzZDE4MmQ0NDkyNGQ0NyIKLQotU1JDUkVWID0gIjE1YWU3NTAxNTFhYzkzNDFlNTk0NWViMzhmODk4MmQ1OWZiOTkyMDEiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGlidXYvbGlidXY7YnJhbmNoPXYxLngiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICAke1N9L2F1dG9nZW4uc2ggfHwgYmJub3RlICIke1BOfSBmYWlsZWQgdG8gYXV0b2dlbi5zaCIKLSAgICBvZV9ydW5jb25mCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1di9saWJ1dl8xLjM2LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnV2L2xpYnV2XzEuMzYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWVhYTJiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1di9saWJ1dl8xLjM2LjAuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJBIG11bHRpLXBsYXRmb3JtIHN1cHBvcnQgbGlicmFyeSB3aXRoIGEgZm9jdXMgb24gYXN5bmNocm9ub3VzIEkvTyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJ1di9saWJ1diIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYnV2L2xpYnV2L2lzc3VlcyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTY4OTAyYTQzMGUzMjIwMDI2M2QxODJkNDQ5MjRkNDciCisKK1NSQ1JFViA9ICI1MzNiNzM4ODM4YWQ4NDA3MDMyZTE0YjY3NzJiMjllZjlhZjYzY2ZhIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpYnV2L2xpYnV2O2JyYW5jaD12MS54IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scworCitkb19jb25maWd1cmUoKSB7CisgICAgJHtTfS9hdXRvZ2VuLnNoIHx8IGJibm90ZSAiJHtQTn0gZmFpbGVkIHRvIGF1dG9nZW4uc2giCisgICAgb2VfcnVuY29uZgorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlid2Vic29ja2V0cy9saWJ3ZWJzb2NrZXRzXzMuMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ3ZWJzb2NrZXRzL2xpYndlYnNvY2tldHNfMy4yLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljNTUwMzMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ3ZWJzb2NrZXRzL2xpYndlYnNvY2tldHNfMy4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TVU1NQVJZID0gIkNhbm9uaWNhbCBsaWJ3ZWJzb2NrZXRzLm9yZyB3ZWJzb2NrZXQgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHBzOi8vbGlid2Vic29ja2V0cy5vcmcvIgotTElDRU5TRSA9ICJMR1BMLTIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTRjZTg3ZjNmYWNiNmY5MTFjMTQyYzhiZWY5YmZiMzgwIgotCi1ERVBFTkRTID0gInpsaWIiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi1TUkNSRVYgPSAiOTQ5MzFjYWQwMDNmYWY5ZDMxNmU2OThiNTU3YmJiNmQyNDVmMWY5MSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS93YXJtY2F0L2xpYndlYnNvY2tldHMuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD12My4yLXN0YWJsZSIKLQotaW5oZXJpdCBjbWFrZSBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/PSAibGlidXYgY2xpZW50IHNlcnZlciBodHRwMiBzc2wiCi1QQUNLQUdFQ09ORklHW2NsaWVudF0gPSAiLURMV1NfV0lUSE9VVF9DTElFTlQ9T0ZGLC1ETFdTX1dJVEhPVVRfQ0xJRU5UPU9OLCIKLVBBQ0tBR0VDT05GSUdbaHR0cDJdID0gIi1ETFdTX1dJVEhfSFRUUDI9T04sLURMV1NfV0lUSF9IVFRQMj1PRkYsIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItRExXU19JUFY2PU9OLC1ETFdTX0lQVjY9T0ZGLCIKLVBBQ0tBR0VDT05GSUdbbGliZXZdID0gIi1ETFdTX1dJVEhfTElCRVY9T04sLURMV1NfV0lUSF9MSUJFVj1PRkYsbGliZXYiCi1QQUNLQUdFQ09ORklHW2xpYnV2XSA9ICItRExXU19XSVRIX0xJQlVWPU9OLC1ETFdTX1dJVEhfTElCVVY9T0ZGLGxpYnV2IgotUEFDS0FHRUNPTkZJR1tzZXJ2ZXJdID0gIi1ETFdTX1dJVEhPVVRfU0VSVkVSPU9GRiwtRExXU19XSVRIT1VUX1NFUlZFUj1PTiwiCi1QQUNLQUdFQ09ORklHW3NzbF0gPSAiLURMV1NfV0lUSF9TU0w9T04sLURMV1NfV0lUSF9TU0w9T0ZGLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3Rlc3RhcHBzXSA9ICItRExXU19XSVRIT1VUX1RFU1RBUFBTPU9GRiwtRExXU19XSVRIT1VUX1RFU1RBUFBTPU9OLCIKLQotRVhUUkFfT0VDTUFLRSArPSAiIFwKLSAgICAtRExJQl9TVUZGSVg9JHtAZC5nZXRWYXIoJ2Jhc2VsaWInKS5yZXBsYWNlKCdsaWInLCAnJyl9IFwKLSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RhcHBzIgotCi1GSUxFU18ke1BOfS10ZXN0YXBwcyArPSAiJHtkYXRhZGlyfS9saWJ3ZWJzb2NrZXRzLXRlc3Qtc2VydmVyLyoiCi0KLUNGTEFHU19hcHBlbmQgPSAiIC1Xbm8tZXJyb3IiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYndlYnNvY2tldHMvbGlid2Vic29ja2V0c180LjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlid2Vic29ja2V0cy9saWJ3ZWJzb2NrZXRzXzQuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkMWY1N2EKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYndlYnNvY2tldHMvbGlid2Vic29ja2V0c180LjAuMS5iYgpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIkNhbm9uaWNhbCBsaWJ3ZWJzb2NrZXRzLm9yZyB3ZWJzb2NrZXQgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHBzOi8vbGlid2Vic29ja2V0cy5vcmcvIgorTElDRU5TRSA9ICJNSVQgJiBabGliICYgQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OGM0N2IwNzgxMjQzMDhhNGUxMzU0ZThkNTlmNjA2YjciCisKK0RFUEVORFMgPSAiemxpYiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFViA9ICI2ZWIzOTM4OGY0M2Y2ZTJhMjdmMGVmY2JmOGNiMjM5MWUzODgyNGU5IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3dhcm1jYXQvbGlid2Vic29ja2V0cy5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPXY0LjAtc3RhYmxlIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3dhcm1jYXQvJHtCUE59L3JlbGVhc2VzIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPlxkKyhcLlxkKykrKSIKKworaW5oZXJpdCBjbWFrZSBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/PSAibGlidXYgY2xpZW50IHNlcnZlciBodHRwMiBzc2wiCitQQUNLQUdFQ09ORklHW2NsaWVudF0gPSAiLURMV1NfV0lUSE9VVF9DTElFTlQ9T0ZGLC1ETFdTX1dJVEhPVVRfQ0xJRU5UPU9OLCIKK1BBQ0tBR0VDT05GSUdbaHR0cDJdID0gIi1ETFdTX1dJVEhfSFRUUDI9T04sLURMV1NfV0lUSF9IVFRQMj1PRkYsIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItRExXU19JUFY2PU9OLC1ETFdTX0lQVjY9T0ZGLCIKK1BBQ0tBR0VDT05GSUdbbGliZXZdID0gIi1ETFdTX1dJVEhfTElCRVY9T04sLURMV1NfV0lUSF9MSUJFVj1PRkYsbGliZXYiCitQQUNLQUdFQ09ORklHW2xpYnV2XSA9ICItRExXU19XSVRIX0xJQlVWPU9OLC1ETFdTX1dJVEhfTElCVVY9T0ZGLGxpYnV2IgorUEFDS0FHRUNPTkZJR1tzZXJ2ZXJdID0gIi1ETFdTX1dJVEhPVVRfU0VSVkVSPU9GRiwtRExXU19XSVRIT1VUX1NFUlZFUj1PTiwiCitQQUNLQUdFQ09ORklHW3NzbF0gPSAiLURMV1NfV0lUSF9TU0w9T04sLURMV1NfV0lUSF9TU0w9T0ZGLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3Rlc3RhcHBzXSA9ICItRExXU19XSVRIT1VUX1RFU1RBUFBTPU9GRiwtRExXU19XSVRIT1VUX1RFU1RBUFBTPU9OLCIKKworRVhUUkFfT0VDTUFLRSArPSAiIFwKKyAgICAtRExJQl9TVUZGSVg9JHtAZC5nZXRWYXIoJ2Jhc2VsaWInKS5yZXBsYWNlKCdsaWInLCAnJyl9IFwKKyIKKworUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RhcHBzIgorCitGSUxFU18ke1BOfS10ZXN0YXBwcyArPSAiJHtkYXRhZGlyfS9saWJ3ZWJzb2NrZXRzLXRlc3Qtc2VydmVyLyoiCisKK0NGTEFHU19hcHBlbmQgPSAiIC1Xbm8tZXJyb3IiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyY18wLjkuNGQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyY18wLjkuNGQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwNmNhZWUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saXJjL2xpcmNfMC45LjRkLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiTElSQyBpcyBhIHBhY2thZ2UgdGhhdCBhbGxvd3MgeW91IHRvIGRlY29kZSBhbmQgc2VuZCBpbmZyYS1yZWQgc2lnbmFscyBvZiBtYW55IGNvbW1vbmx5IHVzZWQgcmVtb3RlIGNvbnRyb2xzLiIKLURFU0NSSVBUSU9OX2FwcGVuZF9saXJjID0gIiBUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIGxpcmMgZGFlbW9uLCBsaWJyYXJpZXMgYW5kIHRvb2xzLiIKLURFU0NSSVBUSU9OX2FwcGVuZF9saXJjLWV4ZWMgPSAiIFRoaXMgcGFja2FnZSBjb250YWlucyBhIGRhZW1vbiB0aGF0IHJ1bnMgcHJvZ3JhbXMgb24gSVIgc2lnbmFscy4iCi1ERVNDUklQVElPTl9hcHBlbmRfbGlyYy1yZW1vdGVzID0gIiBUaGlzIHBhY2thZ2UgY29udGFpbnMgc29tZSBjb25maWcgZmlsZXMgZm9yIHJlbW90ZXMuIgotREVTQ1JJUFRJT05fYXBwZW5kX2xpcmMtbnNsdTJleGFtcGxlID0gIiBUaGlzIHBhY2thZ2UgY29udGFpbnMgYSB3b3JraW5nIGNvbmZpZyBmb3IgUkM1IHJlbW90ZXMgYW5kIGEgbW9kaWZpZWQgTlNMVTIuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saXJjLm9yZyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJHUEx2MiIKLURFUEVORFMgPSAibGlieHNsdC1uYXRpdmUgYWxzYS1saWIgbGliZnRkaSBsaWJ1c2IxIGxpYnVzYi1jb21wYXQgamFjayBwb3J0YXVkaW8tdjE5IgotCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9wcmRvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvbGlyYy9saXJjLSR7UFZ9LnRhci5iejIgXAotICAgIGZpbGU6Ly9wb2xsZmQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1vbi0zMmJpdC1hcmNoZXMtd2l0aC02NGJpdC10aW1lX3QucGF0Y2ggXAotICAgIGZpbGU6Ly9saXJjZC5zZXJ2aWNlIFwKLSAgICBmaWxlOi8vbGlyY2QuaW5pdCBcCi0gICAgZmlsZTovL2xpcmNleGVjLmluaXQgXAotICAgIGZpbGU6Ly9saXJjZC5jb25mIFwKLSAgICBmaWxlOi8vbGlyY19vcHRpb25zLmNvbmYgXAotICAgIGZpbGU6Ly9saXJjLnRtcGZpbGVzIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIwZDExNjc5Y2JkZDk0YTVhNmRhMDBhOGU3MjMxYjRiZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNjhmMThjMzViNDg5Yjg2NWMwYTc0MWQxMTliMTM2ZTg3MDIxOTE1MzhjZDM1NTFiOTc3YTdhZjZjNGU0MWFiIgotCi1TWVNURU1EX1BBQ0tBR0VTID0gImxpcmMgbGlyYy1leGVjIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImxpcmNkLnNlcnZpY2UgbGlyY21kLnNlcnZpY2UgbGlyY2Qtc2V0dXAuc2VydmljZSBsaXJjZC11aW5wdXQuc2VydmljZSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1leGVjID0gImlyZXhlYy5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRV9saXJjID0gImVuYWJsZSIKLVNZU1RFTURfQVVUT19FTkFCTEVfbGlyYy1leGVjID0gImVuYWJsZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgcHl0aG9uM25hdGl2ZQotCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLywtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsc3lzdGVtZCIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCwtLXdpdGgteD1ubyxsaWJ4MTEsIgotCi1QQUNLQUdFQ09ORklHID89ICIgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICcgc3lzdGVtZCcsICcnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJyB4MTEnLCAnJywgZCl9IFwKLSIKLUNBQ0hFRF9DT05GSUdVUkVWQVJTID0gIkhBVkVfV09SS0lOR19QT0xMPXllcyIKLQotI0VYVFJBX09FTUFLRSA9ICdTVUJESVJTPSJsaWIgZGFlbW9ucyB0b29scyInCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1tIDA3NTUgLWQgJHtEfSR7c3lzY29uZmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgLWQgJHtEfSR7c3lzY29uZmRpcn0vbGlyYwotICAgIGluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtsaWJkaXJ9L3RtcGZpbGVzLmQKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9saXJjZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2xpcmMvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlyY19vcHRpb25zLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vbGlyYy8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9saXJjZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2xpcmNleGVjLmluaXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlyYy50bXBmaWxlcyAke0R9JHtsaWJkaXJ9L3RtcGZpbGVzLmQvbGlyYy5jb25mCi0gICAgcm0gLXJmICR7RH0ke2xpYmRpcn0vbGlyYy9wbHVnaW5zLyoubGEKLSAgICBybWRpciAke0R9L3Zhci9ydW4vbGlyYyAke0R9L3Zhci9ydW4KLSAgICBjaG93biAtUiByb290OnJvb3QgJHtEfSR7ZGF0YWRpcn0vbGlyYy9jb250cmliCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1jb250cmliICR7UE59LWV4ZWMgJHtQTn0tcGx1Z2lucyAke1BOfS1weXRob24iCi0KLVJERVBFTkRTXyR7UE59ID0gImJhc2giCi1SREVQRU5EU18ke1BOfS1leGVjID0gIiR7UE59IgotUkRFUEVORFNfJHtQTn0tcHl0aG9uID0gInB5dGhvbiIKLQotUlJFQ09NTUVORFNfbGlyYyA9ICIke1BOfS1leGVjICR7UE59LXBsdWdpbnMiCi0KLUZJTEVTXyR7UE59LXBsdWdpbnMgPSAiJHtsaWJkaXJ9L2xpcmMvcGx1Z2lucy8qLnNvICR7ZGF0YWRpcn0vbGlyYy9jb25maWdzIgotRklMRVNfJHtQTn0tY29udHJpYiA9ICIke2RhdGFkaXJ9L2xpcmMvY29udHJpYiIKLUZJTEVTXyR7UE59LWV4ZWMgPSAiJHtiaW5kaXJ9L2lyZXhlYyAke3N5c2NvbmZkaXJ9L2xpcmNleGVjICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vaXJleGVjLnNlcnZpY2UiCi1GSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9saXJjZXhlYy5pbml0IgotRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbGlyY2Quc2VydmljZSIKLUZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2xpcmNkLnNvY2tldCIKLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vdG1wZmlsZXMuZC9saXJjLmNvbmYiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9saXJjL3BsdWdpbnMvLmRlYnVnIgotRklMRVNfJHtQTn0tcHl0aG9uICs9ICIke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzIgotCi0KLUlOSVRTQ1JJUFRfUEFDS0FHRVMgPSAibGlyYyBsaXJjLWV4ZWMiCi1JTklUU0NSSVBUX05BTUVfbGlyYy1leGVjID0gImxpcmNleGVjIgotSU5JVFNDUklQVF9QQVJBTVNfbGlyYy1leGVjID0gImRlZmF1bHRzIDIxIgotCi0jIHRoaXMgaXMgZm9yIGRpc3RyaWJ1dGlvbnMgdGhhdCBkb24ndCB1c2UgdWRldgotcGtnX3Bvc3RpbnN0XyR7UE59X2FwcGVuZCgpIHsKLSAgICBpZiBbICEgLWMgJEQvZGV2L2xpcmMgLWEgISAtZiAvc2Jpbi91ZGV2ZCBdOyB0aGVuIG1rbm9kICREL2Rldi9saXJjIGMgNjEgMDsgZmkKLX0KLQotU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vZGVtbWFuYWdlci9tb2RlbW1hbmFnZXJfMS4xMC44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb2RlbW1hbmFnZXIvbW9kZW1tYW5hZ2VyXzEuMTAuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NkMjFjYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vZGVtbWFuYWdlci9tb2RlbW1hbmFnZXJfMS4xMC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotU1VNTUFSWSA9ICJNb2RlbU1hbmFnZXIgaXMgYSBkYWVtb24gY29udHJvbGxpbmcgYnJvYWRiYW5kIGRldmljZXMvY29ubmVjdGlvbnMiCi1ERVNDUklQVElPTiA9ICJNb2RlbU1hbmFnZXIgaXMgYSBEQnVzLWFjdGl2YXRlZCBkYWVtb24gd2hpY2ggY29udHJvbHMgbW9iaWxlIGJyb2FkYmFuZCAoMkcvM0cvNEcpIGRldmljZXMgYW5kIGNvbm5lY3Rpb25zIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9Nb2RlbU1hbmFnZXIvIgotTElDRU5TRSA9ICJHUEwtMi4wICYgTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gIiBcCi0gICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCBzeXN0ZW1kIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGJhc2gtY29tcGxldGlvbgotCi1ERVBFTkRTID0gImdsaWItMi4wIGxpYmd1ZGV2IGludGx0b29sLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9Nb2RlbU1hbmFnZXIvTW9kZW1NYW5hZ2VyLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImMwNWFjNDI0NmM4MWNjMTVkNjE3YzRhMTI5MjMyOTg4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNiZTE3NDA3OGRiZGYzZjc0NmE1NWYwMDA0MzUzZDNjMjdkYTJhMzFkYTU1MzAzNmQ5MGZjN2RjMzRhMDE2OWEiCi0KLVMgPSAiJHtXT1JLRElSfS9Nb2RlbU1hbmFnZXItJHtQVn0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJtYmltIHFtaSBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCBwb2xraXQnLCBkKX0gXAotIgotCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLywsIgotUEFDS0FHRUNPTkZJR1twb2xraXRdID0gIi0td2l0aC1wb2xraXQ9eWVzLC0td2l0aC1wb2xraXQ9bm8scG9sa2l0IgotIyBTdXBwb3J0IFdXQU4gbW9kZW1zIGFuZCBkZXZpY2VzIHdoaWNoIHNwZWFrIHRoZSBNb2JpbGUgSW50ZXJmYWNlIEJyb2FkYmFuZCBNb2RlbCAoTUJJTSkgcHJvdG9jb2wuCi1QQUNLQUdFQ09ORklHW21iaW1dID0gIi0td2l0aC1tYmltLC0td2l0aG91dC1tYmltLGxpYm1iaW0iCi0jIFN1cHBvcnQgV1dBTiBtb2RlbXMgYW5kIGRldmljZXMgd2hpY2ggc3BlYWsgdGhlIFF1YWxjb21tIE1TTSBJbnRlcmZhY2UgKFFNSSkgcHJvdG9jb2wuCi1QQUNLQUdFQ09ORklHW3FtaV0gPSAiLS13aXRoLXFtaSwtLXdpdGhvdXQtcW1pLGxpYnFtaSIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS13aXRoLXVkZXYtYmFzZS1kaXI9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2IFwKLSIKLUVYVFJBX09FQ09ORl9hcHBlbmRfdG9vbGNoYWluLWNsYW5nID0gIiAtLWVuYWJsZS1tb3JlLXdhcm5pbmdzPW5vIgotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2RhdGFkaXJ9L2ljb25zIFwKLSAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMSBcCi0gICAgJHtkYXRhZGlyfS9Nb2RlbU1hbmFnZXIgXAotICAgICR7bGliZGlyfS9Nb2RlbU1hbmFnZXIgXAotICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0gXAotIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiBcCi0gICAgJHtsaWJkaXJ9L01vZGVtTWFuYWdlci8qLmxhIFwKLSIKLQotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIgXAotICAgICR7bGliZGlyfS9Nb2RlbU1hbmFnZXIvKi5hIFwKLSIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vTW9kZW1NYW5hZ2VyLy5kZWJ1ZyIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIk1vZGVtTWFuYWdlci5zZXJ2aWNlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb2RlbW1hbmFnZXIvbW9kZW1tYW5hZ2VyXzEuMTIuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9kZW1tYW5hZ2VyL21vZGVtbWFuYWdlcl8xLjEyLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdhODZiOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9kZW1tYW5hZ2VyL21vZGVtbWFuYWdlcl8xLjEyLjguYmIKQEAgLTAsMCArMSw1NyBAQAorU1VNTUFSWSA9ICJNb2RlbU1hbmFnZXIgaXMgYSBkYWVtb24gY29udHJvbGxpbmcgYnJvYWRiYW5kIGRldmljZXMvY29ubmVjdGlvbnMiCitERVNDUklQVElPTiA9ICJNb2RlbU1hbmFnZXIgaXMgYSBEQnVzLWFjdGl2YXRlZCBkYWVtb24gd2hpY2ggY29udHJvbHMgbW9iaWxlIGJyb2FkYmFuZCAoMkcvM0cvNEcpIGRldmljZXMgYW5kIGNvbm5lY3Rpb25zIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9Nb2RlbU1hbmFnZXIvIgorTElDRU5TRSA9ICJHUEwtMi4wICYgTEdQTC0yLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gIiBcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCBzeXN0ZW1kIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGJhc2gtY29tcGxldGlvbgorCitERVBFTkRTID0gImdsaWItMi4wIGxpYmd1ZGV2IGludGx0b29sLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9Nb2RlbU1hbmFnZXIvTW9kZW1NYW5hZ2VyLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgICIKKworU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY4YjUzZDA2MTViYTBkM2UyYmJmMzg2ZWQwMjlkZmU2NDRhNmEzMGE3OWFiOGQ4NTUyMzUyN2JiNGU3MTNhZmYiCisKK1MgPSAiJHtXT1JLRElSfS9Nb2RlbU1hbmFnZXItJHtQVn0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICJtYmltIHFtaSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCBwb2xraXQnLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHW2F0XSA9ICItLXdpdGgtYXQtY29tbWFuZC12aWEtZGJ1cyIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vLCwiCitQQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLS13aXRoLXBvbGtpdD15ZXMsLS13aXRoLXBvbGtpdD1ubyxwb2xraXQiCisjIFN1cHBvcnQgV1dBTiBtb2RlbXMgYW5kIGRldmljZXMgd2hpY2ggc3BlYWsgdGhlIE1vYmlsZSBJbnRlcmZhY2UgQnJvYWRiYW5kIE1vZGVsIChNQklNKSBwcm90b2NvbC4KK1BBQ0tBR0VDT05GSUdbbWJpbV0gPSAiLS13aXRoLW1iaW0sLS13aXRob3V0LW1iaW0sbGlibWJpbSIKKyMgU3VwcG9ydCBXV0FOIG1vZGVtcyBhbmQgZGV2aWNlcyB3aGljaCBzcGVhayB0aGUgUXVhbGNvbW0gTVNNIEludGVyZmFjZSAoUU1JKSBwcm90b2NvbC4KK1BBQ0tBR0VDT05GSUdbcW1pXSA9ICItLXdpdGgtcW1pLC0td2l0aG91dC1xbWksbGlicW1pIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLXdpdGgtdWRldi1iYXNlLWRpcj0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYgXAorIgorRVhUUkFfT0VDT05GX2FwcGVuZF90b29sY2hhaW4tY2xhbmcgPSAiIC0tZW5hYmxlLW1vcmUtd2FybmluZ3M9bm8iCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vaWNvbnMgXAorICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAorICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKKyAgICAke2RhdGFkaXJ9L01vZGVtTWFuYWdlciBcCisgICAgJHtsaWJkaXJ9L01vZGVtTWFuYWdlciBcCisgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSBcCisiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiIFwKKyAgICAke2xpYmRpcn0vTW9kZW1NYW5hZ2VyLyoubGEgXAorIgorCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiBcCisgICAgJHtsaWJkaXJ9L01vZGVtTWFuYWdlci8qLmEgXAorIgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9Nb2RlbU1hbmFnZXIvLmRlYnVnIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiTW9kZW1NYW5hZ2VyLnNlcnZpY2UiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BhaG8tbXF0dC1jL2ZpbGVzLzAwMDEtRml4LWJ1Zy1vZi1mcmVlLXdpdGgtbXVzbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcGFoby1tcXR0LWMvZmlsZXMvMDAwMS1GaXgtYnVnLW9mLWZyZWUtd2l0aC1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyZjllN2EKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BhaG8tbXF0dC1jL2ZpbGVzLzAwMDEtRml4LWJ1Zy1vZi1mcmVlLXdpdGgtbXVzbC5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDk2MjMzYTgzODJiOTUyMDI5M2E0OGIwOGRjM2IyMDRhMjEyMDU4MDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBXYW5nIE1pbmd5dSA8d2FuZ215QGNuLmZ1aml0c3UuY29tPgorRGF0ZTogRnJpLCAyNCBBcHIgMjAyMCAwMDo1MzoxOSArMDkwMAorU3ViamVjdDogW1BBVENIXSBGaXggYnVnIG9mIGZyZWUoKSB3aXRoIG11c2wKKworVGhpcyBmaXhlcyBidWlsZCBlcnJvciB3aXRoIG11c2wgQyBsaWJyYXJ5OgorL3ViaW51eC1kZXYvdWJpbnV4MDAxL2NvbnRyaWJ1dGlvbi9idWlsZC90bXAvd29yay9hcm12N3ZldDJoZi1uZW9uLXBva3ktbGludXgtbXVzbGVhYmkvcGFoby1tcXR0LWMvMS4zLjItcjAvZ2l0L3NyYy9IZWFwLmg6NTU6MjQ6CitlcnJvcjogZXhwZWN0ZWQgZGVjbGFyYXRpb24gc3BlY2lmaWVycyBvciAnLi4uJyBiZWZvcmUgc3RyaW5nIGNvbnN0YW50CisgICA1NSB8ICNkZWZpbmUgZnJlZSh4KSBteWZyZWUoX19GSUxFX18sIF9fTElORV9fLCB4KQorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+CisvdWJpbnV4LWRldi91YmludXgwMDEvY29udHJpYnV0aW9uL2J1aWxkL3RtcC93b3JrL2FybXY3dmV0MmhmLW5lb24tcG9reS1saW51eC1tdXNsZWFiaS9wYWhvLW1xdHQtYy8xLjMuMi1yMC9naXQvc3JjL0hlYXAuaDo1NTozNDoKK2Vycm9yOiBleHBlY3RlZCBkZWNsYXJhdGlvbiBzcGVjaWZpZXJzIG9yICcuLi4nIGJlZm9yZSBudW1lcmljIGNvbnN0YW50CisgICA1NSB8ICNkZWZpbmUgZnJlZSh4KSBteWZyZWUoX19GSUxFX18sIF9fTElORV9fLCB4KQorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fgorCitTaWduZWQtb2ZmLWJ5OiBXYW5nIE1pbmd5dSA8d2FuZ215QGNuLmZ1aml0c3UuY29tPgorLS0tCisgc3JjL01RVFRSZWFzb25Db2Rlcy5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL01RVFRSZWFzb25Db2Rlcy5jIGIvc3JjL01RVFRSZWFzb25Db2Rlcy5jCitpbmRleCA0MTZlYWI1Li40NzlkYmFjIDEwMDY0NAorLS0tIGEvc3JjL01RVFRSZWFzb25Db2Rlcy5jCisrKysgYi9zcmMvTVFUVFJlYXNvbkNvZGVzLmMKK0BAIC0xNiwxMCArMTYsMTAgQEAKKyAKKyAjaW5jbHVkZSAiTVFUVFJlYXNvbkNvZGVzLmgiCisgCistI2luY2x1ZGUgIkhlYXAuaCIKKyAjaW5jbHVkZSAiU3RhY2tUcmFjZS5oIgorIAorICNpbmNsdWRlIDxtZW1vcnkuaD4KKysjaW5jbHVkZSAiSGVhcC5oIgorIAorICNkZWZpbmUgQVJSQVlfU0laRShhKSAoc2l6ZW9mKGEpIC8gc2l6ZW9mKGFbMF0pKQorIAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wYWhvLW1xdHQtYy9wYWhvLW1xdHQtY18xLjMuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcGFoby1tcXR0LWMvcGFoby1tcXR0LWNfMS4zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhMjQ5NjcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wYWhvLW1xdHQtYy9wYWhvLW1xdHQtY18xLjMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAiUGFobyBNUVRUIC0gQyBsaWJyYXJpZXMgZm9yIHRoZSBNUVRUIGFuZCBNUVRULVNOIHByb3RvY29scyIKLURFU0NSSVBUSU9OID0gIkNsaWVudCBpbXBsZW1lbnRhdGlvbiBvZiBvcGVuIGFuZCBzdGFuZGFyZCBtZXNzYWdpbmcgcHJvdG9jb2xzIGZvciBNYWNoaW5lLXRvLU1hY2hpbmUgKE0yTSkgYW5kIEludGVybmV0IG9mIFRoaW5ncyAoSW9UKS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhaG8vIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIkVQTC0xLjAgfCBFREwtMS4wIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gIiBcCi0gICAgICAgIGZpbGU6Ly9lZGwtdjEwO21kNT0zYWRmY2M3MGY1YWViN2E0NGYzZjliNDk1YWExZmJmMyBcCi0gICAgICAgIGZpbGU6Ly9lcGwtdjEwO21kNT02NTljOGU5MmE0MGI2ZGYxZDllM2RjY2Y1YWU0NWEwOCBcCi0gICAgICAgIGZpbGU6Ly9ub3RpY2UuaHRtbDttZDU9YTAwZDZmOWFiNTQyYmU3YmFiYzJkOGI4MGQ1ZDJhNGMgXAotICAgICAgICBmaWxlOi8vYWJvdXQuaHRtbDttZDU9ZGNkZTQzOGQ3M2NmNDIzOTNkYTlkNDBmYWJjMGM5YmMgXAotIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZWNsaXBzZS9wYWhvLm1xdHQuYztwcm90b2NvbD1odHRwIgotCi1TUkNSRVYgPSAiZDM0YzUxMjE0ZjQxNzJmMmUxMmJiMTc1MzJjOWY0NGY3MmE1N2RkNCIKLQotREVQRU5EUyA9ICJvcGVuc3NsIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgcGFoby1tcXR0IGluc3RhbGxlcyBzb21lIHRoaW5nIHRoYXQgd2UgZG9uJ3Qgd2FudC4KLSAgICBybSAtcmYgJHtEfSR7cHJlZml4fS9zYW1wbGVzCi0gICAgZmluZCAke0R9JHtwcmVmaXh9IC1tYXhkZXB0aCAxIC10eXBlIGYgLWRlbGV0ZQotfQotCi1FWFRSQV9PRUNNQUtFID0gIi1EUEFIT19XSVRIX1NTTD1PTiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcGFoby1tcXR0LWMvcGFoby1tcXR0LWNfMS4zLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BhaG8tbXF0dC1jL3BhaG8tbXF0dC1jXzEuMy4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhOGM3MTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BhaG8tbXF0dC1jL3BhaG8tbXF0dC1jXzEuMy4yLmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiUGFobyBNUVRUIC0gQyBsaWJyYXJpZXMgZm9yIHRoZSBNUVRUIGFuZCBNUVRULVNOIHByb3RvY29scyIKK0RFU0NSSVBUSU9OID0gIkNsaWVudCBpbXBsZW1lbnRhdGlvbiBvZiBvcGVuIGFuZCBzdGFuZGFyZCBtZXNzYWdpbmcgcHJvdG9jb2xzIGZvciBNYWNoaW5lLXRvLU1hY2hpbmUgKE0yTSkgYW5kIEludGVybmV0IG9mIFRoaW5ncyAoSW9UKS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhaG8vIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkVQTC0xLjAgfCBFREwtMS4wIgorCitMSUNfRklMRVNfQ0hLU1VNID0gIiBcCisgICAgICAgIGZpbGU6Ly9lZGwtdjEwO21kNT0zYWRmY2M3MGY1YWViN2E0NGYzZjliNDk1YWExZmJmMyBcCisgICAgICAgIGZpbGU6Ly9lcGwtdjIwO21kNT1kOWZjMGVmZWY1MjI4NzA0ZTdmNWIzN2YyNzE5MjcyMyBcCisgICAgICAgIGZpbGU6Ly9ub3RpY2UuaHRtbDttZDU9OTQzZjg2MTA2OTg4OWFjZWNlYmY1MWRmYTI0NDc4ZTIgXAorICAgICAgICBmaWxlOi8vYWJvdXQuaHRtbDttZDU9ZTU2NjJjYmI1ZjhmZDVjOWZhYWM1MjZlNDA3Nzg5OGUgXAorIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZWNsaXBzZS9wYWhvLm1xdHQuYztwcm90b2NvbD1odHRwIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1Zy1vZi1mcmVlLXdpdGgtbXVzbC5wYXRjaCIKKworU1JDUkVWID0gImZiZTM5MDY0YzQ0MTZmODc5MzA4YThhNTM5MGIxOWQ1NDQ5NzA3ODkiCisKK0RFUEVORFMgPSAib3BlbnNzbCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIHBhaG8tbXF0dCBpbnN0YWxsZXMgc29tZSB0aGluZyB0aGF0IHdlIGRvbid0IHdhbnQuCisgICAgcm0gLXJmICR7RH0ke3ByZWZpeH0vc2FtcGxlcworICAgIGZpbmQgJHtEfSR7cHJlZml4fSAtbWF4ZGVwdGggMSAtdHlwZSBmIC1kZWxldGUKK30KKworRVhUUkFfT0VDTUFLRSA9ICItRFBBSE9fV0lUSF9TU0w9T04iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2xpYmMtbXVzbCgpIHsKKyAgICBzZWQgLWkgLWUgInMvU0VUKExJQlNfU1lTVEVNIGMgZGwgcHRocmVhZCBhbmwgcnQpL1NFVChMSUJTX1NZU1RFTSBjIGRsIHB0aHJlYWQgcnQpL2ciICR7U30vc3JjL0NNYWtlTGlzdHMudHh0IAorfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zZXIybmV0L3NlcjJuZXRfMy41LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NlcjJuZXQvc2VyMm5ldF8zLjUuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ4YWFiMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NlcjJuZXQvc2VyMm5ldF8zLjUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBzZXJpYWwgdG8gbmV0d29yayBwcm94eSIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9zZXIybmV0LyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJhZTMwMTliNGM2ZGM0MTM4YzIxNzg2NGJkMDQzMzFmIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L3NlcjJuZXQvc2VyMm5ldC9zZXIybmV0LSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjU2OTI2N2IzN2I4ZjUwN2Q4ODc0ZjI4ZjUzMzRiNWQyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAyZjVkZDBhYmJlZjVhMTdiODA4MzZiMGRlMWVmMDU4OGUyNTcxMDZmYjVlMjY5Yjg2ODIyYmZkMDAxZGM4NjIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NlcjJuZXQvc2VyMm5ldF80LjEuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2VyMm5ldC9zZXIybmV0XzQuMS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkZjEzNGUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NlcjJuZXQvc2VyMm5ldF80LjEuNS5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIkEgc2VyaWFsIHRvIG5ldHdvcmsgcHJveHkiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvc2VyMm5ldC8iCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYWUzMDE5YjRjNmRjNDEzOGMyMTc4NjRiZDA0MzMxZiIKKworREVQRU5EUyA9ICJnZW5zaW8gbGlieWFtbCIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9zZXIybmV0L3NlcjJuZXQvc2VyMm5ldC0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MmM1ZTU2ZDJkNTRjZWQwY2RlYjc2NGE3ZThmZWM5MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkZjkwNGQyNzFlYjE2MWMyNjVjOTU2ZjBjYjkzOGRkMGEzNzVkZGE0YTkxOWEzNDRmNzNiMDhiYzUwYjlmMzA4IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LWlkbGVfMC4yLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktaWRsZV8wLjIuMC5iYgppbmRleCBjYTA5ZjZkLi43Y2IyNWI2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktaWRsZV8wLjIuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktaWRsZV8wLjIuMC5iYgpAQCAtMTEsNyArMTEsMTIgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICI5MmEyZGU1MTk4Mjg0Y2JkM2M0MzBiMGQxYTk3MWE4NiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMDEzYWQ0YjM4ZDE0ZWU2MzBiOGNjOGFkYTVlOTVjY2FhODQ5YjlhNmZlMTVkMmVhZjZkMDcxN2Q3NmYyZmFiIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHl0aG9ubmF0aXZlCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgJHtAYmIudXRpbHMuY29udGFpbnMoIkJCRklMRV9DT0xMRUNUSU9OUyIsICJtZXRhLXB5dGhvbjIiLCAicHl0aG9ubmF0aXZlIiwgIiIsIGQpfQogCiBGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS90ZWxlcGF0aHkgXAogICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xIgorCitweXRob24oKSB7CisgICAgaWYgJ21ldGEtcHl0aG9uMicgbm90IGluIGQuZ2V0VmFyKCdCQkZJTEVfQ09MTEVDVElPTlMnKS5zcGxpdCgpOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCdSZXF1aXJlcyBtZXRhLXB5dGhvbjIgdG8gYmUgcHJlc2VudC4nKQorfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96YWJiaXgvemFiYml4XzQuNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96YWJiaXgvemFiYml4XzQuNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTZmZjBkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemFiYml4L3phYmJpeF80LjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLVNVTU1BUlkgPSAiT3Blbi1zb3VyY2UgbW9uaXRvcmluZyBzb2x1dGlvbiBmb3IgeW91ciBJVCBpbmZyYXN0cnVjdHVyZSIKLURFU0NSSVBUSU9OID0gIlwKLVpBQkJJWCBpcyBzb2Z0d2FyZSB0aGF0IG1vbml0b3JzIG51bWVyb3VzIHBhcmFtZXRlcnMgb2YgYSBuZXR3b3JrIGFuZCB0aGUgXAotaGVhbHRoIGFuZCBpbnRlZ3JpdHkgb2Ygc2VydmVycy4gWkFCQklYIHVzZXMgYSBmbGV4aWJsZSBub3RpZmljYXRpb24gXAotbWVjaGFuaXNtIHRoYXQgYWxsb3dzIHVzZXJzIHRvIGNvbmZpZ3VyZSBlLW1haWwgYmFzZWQgYWxlcnRzIGZvciB2aXJ0dWFsbHkgXAotYW55IGV2ZW50LiBUaGlzIGFsbG93cyBhIGZhc3QgcmVhY3Rpb24gdG8gc2VydmVyIHByb2JsZW1zLiBaQUJCSVggb2ZmZXJzIFwKLWV4Y2VsbGVudCByZXBvcnRpbmcgYW5kIGRhdGEgdmlzdWFsaXNhdGlvbiBmZWF0dXJlcyBiYXNlZCBvbiB0aGUgc3RvcmVkIFwKLWRhdGEuIFRoaXMgbWFrZXMgWkFCQklYIGlkZWFsIGZvciBjYXBhY2l0eSBwbGFubmluZy4gXAotXAotWkFCQklYIHN1cHBvcnRzIGJvdGggcG9sbGluZyBhbmQgdHJhcHBpbmcuIEFsbCBaQUJCSVggcmVwb3J0cyBhbmQgXAotc3RhdGlzdGljcywgYXMgd2VsbCBhcyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgYXJlIGFjY2Vzc2VkIHRocm91Z2ggYSBcCi13ZWItYmFzZWQgZnJvbnQgZW5kLiBBIHdlYi1iYXNlZCBmcm9udCBlbmQgZW5zdXJlcyB0aGF0IHRoZSBzdGF0dXMgb2YgXAoteW91ciBuZXR3b3JrIGFuZCB0aGUgaGVhbHRoIG9mIHlvdXIgc2VydmVycyBjYW4gYmUgYXNzZXNzZWQgZnJvbSBhbnkgXAotbG9jYXRpb24uIFByb3Blcmx5IGNvbmZpZ3VyZWQsIFpBQkJJWCBjYW4gcGxheSBhbiBpbXBvcnRhbnQgcm9sZSBpbiBcCi1tb25pdG9yaW5nIElUIGluZnJhc3RydWN0dXJlLiBUaGlzIGlzIGVxdWFsbHkgdHJ1ZSBmb3Igc21hbGwgXAotb3JnYW5pc2F0aW9ucyB3aXRoIGEgZmV3IHNlcnZlcnMgYW5kIGZvciBsYXJnZSBjb21wYW5pZXMgd2l0aCBhIFwKLW11bHRpdHVkZSBvZiBzZXJ2ZXJzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuemFiYml4LmNvbS8iCi1TRUNUSU9OID0gIkFwcGxpY2F0aW9ucy9JbnRlcm5ldCIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzAwZTkzOGFkMzAzMTQ3ZmVkZTIyOTRlZDc4ZmUwMmUiCi1ERVBFTkRTICA9ICJsaWJldmVudCBsaWJwY3JlIG9wZW5sZGFwIHZpcnR1YWwvbGliaWNvbnYgemxpYiIKLQotUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vamFpc3QuZGwuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvemFiYml4L1pBQkJJWCUyMExhdGVzdCUyMFN0YWJsZS8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICBmaWxlOi8vMDAwMS1GaXgtY29uZmlndXJlLmFjLnBhdGNoIFwKLSAgICBmaWxlOi8vemFiYml4LWFnZW50LnNlcnZpY2UgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTlkZjk0MTQ5NzkwZjg2NzMyZjE4ZDA0MmI3MDE1NWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGJmNzRlNTk3ZGQ0MWE1NTgzMDVmZTE3YTJiMWVkNmZlMmQ3NzA0NGI4NzY5NmE5MmU0MjI3ZmJmMzE1NTY0YSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGxpbnV4LWtlcm5lbC1iYXNlIHBrZ2NvbmZpZyBzeXN0ZW1kIHVzZXJhZGQKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ6YWJiaXgtYWdlbnQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZW5hYmxlIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLXIgemFiYml4IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItciAtZyB6YWJiaXggLWQgL3Zhci9saWIvemFiYml4IFwKLSAgICAtcyAvc2Jpbi9ub2xvZ2luIC1jIFwiWmFiYml4IE1vbml0b3JpbmcgU3lzdGVtXCIgemFiYml4IFwKLSIKLQotS0VSTkVMX1ZFUlNJT04gPSAiJHtAZ2V0X2tlcm5lbHZlcnNpb25faGVhZGVycygnJHtTVEFHSU5HX0tFUk5FTF9ESVJ9Jyl9IgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIFwKLSAgICAtLWVuYWJsZS1hZ2VudCBcCi0gICAgLS1lbmFibGUtaXB2NiBcCi0gICAgLS13aXRoLW5ldC1zbm1wIFwKLSAgICAtLXdpdGgtbGRhcD0ke1NUQUdJTkdfRVhFQ1BSRUZJWERJUn0gXAotICAgIC0td2l0aC11bml4b2RiYyBcCi0gICAgLS13aXRoLXNzaDIgXAotICAgIC0td2l0aC1zcWxpdGUzIFwKLSAgICAtLXdpdGgtemxpYiBcCi0gICAgLS13aXRoLWxpYnB0aHJlYWQgXAotICAgIC0td2l0aC1saWJldmVudCBcCi0gICAgLS13aXRoLWxpYnBjcmUgXAotIgotQ0ZMQUdTX2FwcGVuZCA9ICIgLWxsZGFwIC1sbGJlciAtcHRocmVhZCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgZXhwb3J0IEtFUk5FTF9WRVJTSU9OPSIke0tFUk5FTF9WRVJTSU9OfSIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3phYmJpeC1hZ2VudC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgICAgICBzZWQgLWkgLWUgJ3MjQFNCSU5ESVJAIyR7c2JpbmRpcn0jZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vemFiYml4LWFnZW50LnNlcnZpY2UKLSAgICBmaQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9IgotCi1SREVQRU5EU18ke1BOfSA9ICJsb2dyb3RhdGUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3phYmJpeC96YWJiaXhfNC40LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3phYmJpeC96YWJiaXhfNC40LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGUwZGRkNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemFiYml4L3phYmJpeF80LjQuNi5iYgpAQCAtMCwwICsxLDc4IEBACitTVU1NQVJZID0gIk9wZW4tc291cmNlIG1vbml0b3Jpbmcgc29sdXRpb24gZm9yIHlvdXIgSVQgaW5mcmFzdHJ1Y3R1cmUiCitERVNDUklQVElPTiA9ICJcCitaQUJCSVggaXMgc29mdHdhcmUgdGhhdCBtb25pdG9ycyBudW1lcm91cyBwYXJhbWV0ZXJzIG9mIGEgbmV0d29yayBhbmQgdGhlIFwKK2hlYWx0aCBhbmQgaW50ZWdyaXR5IG9mIHNlcnZlcnMuIFpBQkJJWCB1c2VzIGEgZmxleGlibGUgbm90aWZpY2F0aW9uIFwKK21lY2hhbmlzbSB0aGF0IGFsbG93cyB1c2VycyB0byBjb25maWd1cmUgZS1tYWlsIGJhc2VkIGFsZXJ0cyBmb3IgdmlydHVhbGx5IFwKK2FueSBldmVudC4gVGhpcyBhbGxvd3MgYSBmYXN0IHJlYWN0aW9uIHRvIHNlcnZlciBwcm9ibGVtcy4gWkFCQklYIG9mZmVycyBcCitleGNlbGxlbnQgcmVwb3J0aW5nIGFuZCBkYXRhIHZpc3VhbGlzYXRpb24gZmVhdHVyZXMgYmFzZWQgb24gdGhlIHN0b3JlZCBcCitkYXRhLiBUaGlzIG1ha2VzIFpBQkJJWCBpZGVhbCBmb3IgY2FwYWNpdHkgcGxhbm5pbmcuIFwKK1wKK1pBQkJJWCBzdXBwb3J0cyBib3RoIHBvbGxpbmcgYW5kIHRyYXBwaW5nLiBBbGwgWkFCQklYIHJlcG9ydHMgYW5kIFwKK3N0YXRpc3RpY3MsIGFzIHdlbGwgYXMgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGFyZSBhY2Nlc3NlZCB0aHJvdWdoIGEgXAord2ViLWJhc2VkIGZyb250IGVuZC4gQSB3ZWItYmFzZWQgZnJvbnQgZW5kIGVuc3VyZXMgdGhhdCB0aGUgc3RhdHVzIG9mIFwKK3lvdXIgbmV0d29yayBhbmQgdGhlIGhlYWx0aCBvZiB5b3VyIHNlcnZlcnMgY2FuIGJlIGFzc2Vzc2VkIGZyb20gYW55IFwKK2xvY2F0aW9uLiBQcm9wZXJseSBjb25maWd1cmVkLCBaQUJCSVggY2FuIHBsYXkgYW4gaW1wb3J0YW50IHJvbGUgaW4gXAorbW9uaXRvcmluZyBJVCBpbmZyYXN0cnVjdHVyZS4gVGhpcyBpcyBlcXVhbGx5IHRydWUgZm9yIHNtYWxsIFwKK29yZ2FuaXNhdGlvbnMgd2l0aCBhIGZldyBzZXJ2ZXJzIGFuZCBmb3IgbGFyZ2UgY29tcGFuaWVzIHdpdGggYSBcCittdWx0aXR1ZGUgb2Ygc2VydmVycy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnphYmJpeC5jb20vIgorU0VDVElPTiA9ICJBcHBsaWNhdGlvbnMvSW50ZXJuZXQiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTMwMGU5MzhhZDMwMzE0N2ZlZGUyMjk0ZWQ3OGZlMDJlIgorREVQRU5EUyAgPSAibGliZXZlbnQgbGlicGNyZSBvcGVubGRhcCB2aXJ0dWFsL2xpYmljb252IHpsaWIiCisKK1BBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCisKK1NSQ19VUkkgPSAiaHR0cDovL2phaXN0LmRsLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L3phYmJpeC9aQUJCSVglMjBMYXRlc3QlMjBTdGFibGUvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgZmlsZTovLzAwMDEtRml4LWNvbmZpZ3VyZS5hYy5wYXRjaCBcCisgICAgZmlsZTovL3phYmJpeC1hZ2VudC5zZXJ2aWNlIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImU2NjY1MzkyMjBiZTkzYjFhZjM4ZTQwZjVmYmIxZjc5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIyYmIyOGU2Njc0MjRhZDQ2ODhmNDc3MzI4NTNmNDI0MWRmMGU3OGE3NjA3NzI3YjA0M2Q3MDRiYTcyNmFlMGUiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBsaW51eC1rZXJuZWwtYmFzZSBwa2djb25maWcgc3lzdGVtZCB1c2VyYWRkCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0iCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiemFiYml4LWFnZW50LnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImVuYWJsZSIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi1yIHphYmJpeCIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLXIgLWcgemFiYml4IC1kIC92YXIvbGliL3phYmJpeCBcCisgICAgLXMgL3NiaW4vbm9sb2dpbiAtYyBcIlphYmJpeCBNb25pdG9yaW5nIFN5c3RlbVwiIHphYmJpeCBcCisiCisKK0tFUk5FTF9WRVJTSU9OID0gIiR7QGdldF9rZXJuZWx2ZXJzaW9uX2hlYWRlcnMoJyR7U1RBR0lOR19LRVJORUxfRElSfScpfSIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2luZyBcCisgICAgLS1lbmFibGUtYWdlbnQgXAorICAgIC0tZW5hYmxlLWlwdjYgXAorICAgIC0td2l0aC1uZXQtc25tcCBcCisgICAgLS13aXRoLWxkYXA9JHtTVEFHSU5HX0VYRUNQUkVGSVhESVJ9IFwKKyAgICAtLXdpdGgtdW5peG9kYmMgXAorICAgIC0td2l0aC1zc2gyIFwKKyAgICAtLXdpdGgtc3FsaXRlMyBcCisgICAgLS13aXRoLXpsaWIgXAorICAgIC0td2l0aC1saWJwdGhyZWFkIFwKKyAgICAtLXdpdGgtbGliZXZlbnQgXAorICAgIC0td2l0aC1saWJwY3JlIFwKKyIKK0NGTEFHU19hcHBlbmQgPSAiIC1sbGRhcCAtbGxiZXIgLXB0aHJlYWQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIGV4cG9ydCBLRVJORUxfVkVSU0lPTj0iJHtLRVJORUxfVkVSU0lPTn0iCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS96YWJiaXgtYWdlbnQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKyAgICAgICAgc2VkIC1pIC1lICdzI0BTQklORElSQCMke3NiaW5kaXJ9I2cnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3phYmJpeC1hZ2VudC5zZXJ2aWNlCisgICAgZmkKK30KKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfSIKKworUkRFUEVORFNfJHtQTn0gPSAibG9ncm90YXRlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvbXEvY3ptcV80LjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemVyb21xL2N6bXFfNC4yLjAuYmIKaW5kZXggNGVjMWMwNC4uN2M5YTMzZSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvbXEvY3ptcV80LjIuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3plcm9tcS9jem1xXzQuMi4wLmJiCkBAIC05LDYgKzksOCBAQAogU1JDX1VSSVttZDVzdW1dID0gIjdlMDk5OTdkYjZhYzNiMjVlOGVkMTA0MDUzMDQwNzIyIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImNmYWIyOWMyYjNjYzhhODQ1NzQ5NzU4YTUxZTFkZDVmNTE2MGMxZWY1N2UyYTQxZWE5NmU0YzJkY2M4ZmVjZWIiCiAKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vemVyb21xLyR7QlBOfS9yZWxlYXNlcyIKKwogaW5oZXJpdCBjbWFrZQogCiBQQUNLQUdFUyA9ICJsaWIke0JQTn0gbGliJHtCUE59LWRldiBsaWIke0JQTn0tc3RhdGljZGV2ICR7UE59ICR7UE59LWRiZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemVyb21xL2ZpbGVzLzAwMDEtQ01ha2VMaXN0cy10eHQtQXZvaWQtaG9zdC1zcGVjaWZpYy1wYXRoLXRvLWxpYnNvZGl1bS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemVyb21xL2ZpbGVzLzAwMDEtQ01ha2VMaXN0cy10eHQtQXZvaWQtaG9zdC1zcGVjaWZpYy1wYXRoLXRvLWxpYnNvZGl1bS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjNkZWU0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvbXEvZmlsZXMvMDAwMS1DTWFrZUxpc3RzLXR4dC1Bdm9pZC1ob3N0LXNwZWNpZmljLXBhdGgtdG8tbGlic29kaXVtLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb206IE5pa28gTWF1bm8gPG5pa28ubWF1bm9AdmFpc2FsYS5jb20+CitEYXRlOiBXZWQgQXByIDIyIDA5OjAwOjAwIDIwMjAgKzAzMDAKK1N1YmplY3Q6IENNYWtlTGlzdHMudHh0OiBBdm9pZCBob3N0LXNwZWNpZmljIHBhdGggdG8gbGlic29kaXVtCisKK0F2b2lkIHByb3BhZ2F0aW5nIGZ1bGwgYnVpbGQgaG9zdCBzcGVjaWZpYyBwYXRoIHRvIGdlbmVyYXRlZAorWmVyb01RVGFyZ2V0cy5jbWFrZSB3aGVuIGJ1aWxkaW5nIHdpdGggbGlic29kaXVtLCB3aGljaCBjaGFuZ2VzIHRoZQorY29udGVudCBpbiBnZW5lcmF0ZWQgWmVyb01RVGFyZ2V0cy5jbWFrZSBmaWxlcyBmb2xsb3dpbmdseToKKworICAtSU5URVJGQUNFX0xJTktfTElCUkFSSUVTICItbHB0aHJlYWQ7L2J1aWxkL2hvc3Qvc3BlY2lmaWMvcGF0aC90by96ZXJvbXEvNC4zLjItcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2xpYi9saWJzb2RpdW0uc287LWxydCIKKyAgK0lOVEVSRkFDRV9MSU5LX0xJQlJBUklFUyAiLWxwdGhyZWFkOy1sc29kaXVtOy1scnQiCisKK1RoaXMgY2hhbmdlIG1pdGlnYXRlcyBhbiBpc3N1ZSBzdGVtbWluZyBmcm9tIHJldXNlIG9mIGJ1aWxkIGFydGlmYWN0cword2hlcmUgdGhlIHBhdGggdG8gbGlic29kaXVtLnNvIGRvZXMgbm90IG1hdGNoIGV4YWN0bHkgYmV0d2VlbiB0d28KK2RpZmZlcmVudCBidWlsZCBob3N0cy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE5pa28gTWF1bm8gPG5pa28ubWF1bm9AdmFpc2FsYS5jb20+CisKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTEyMTAsNyArMTIxMCw3IEBACisgICB0YXJnZXRfbGlua19saWJyYXJpZXMobGliem1xICR7T1BUSU9OQUxfTElCUkFSSUVTfSAke0NNQUtFX1RIUkVBRF9MSUJTX0lOSVR9KQorIAorICAgaWYoU09ESVVNX0ZPVU5EKQorLSAgICB0YXJnZXRfbGlua19saWJyYXJpZXMobGliem1xICR7U09ESVVNX0xJQlJBUklFU30pCisrICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhsaWJ6bXEgLWxzb2RpdW0pCisgICAgICMgT24gU29sYXJpcywgbGlic29kaXVtIGRlcGVuZHMgb24gbGlic3NwCisgICAgIGlmKCR7Q01BS0VfU1lTVEVNX05BTUV9IE1BVENIRVMgIlN1bk9TIikKKyAgICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMobGliem1xIHNzcCkKK0BAIC0xMjQwLDcgKzEyNDAsNyBAQAorICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGxpYnptcS1zdGF0aWMgJHtPUFRJT05BTF9MSUJSQVJJRVN9ICR7Q01BS0VfVEhSRUFEX0xJQlNfSU5JVH0pCisgCisgICBpZihTT0RJVU1fRk9VTkQpCistICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhsaWJ6bXEtc3RhdGljICR7U09ESVVNX0xJQlJBUklFU30pCisrICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhsaWJ6bXEtc3RhdGljIC1sc29kaXVtKQorICAgICAjIE9uIFNvbGFyaXMsIGxpYnNvZGl1bSBkZXBlbmRzIG9uIGxpYnNzcAorICAgICBpZigke0NNQUtFX1NZU1RFTV9OQU1FfSBNQVRDSEVTICJTdW5PUyIpCisgICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGxpYnptcS1zdGF0aWMgc3NwKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvbXEvemVyb21xXzQuMy4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvbXEvemVyb21xXzQuMy4yLmJiCmluZGV4IGFkZjJjN2IuLjAyYTRjMDQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemVyb21xL3plcm9tcV80LjMuMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3plcm9tcS96ZXJvbXFfNC4zLjIuYmIKQEAgLTcsMTEgKzcsMTQgQEAKIFBBQ0tBR0VDT05GSUdbbGlic29kaXVtXSA9ICItRFdJVEhfTElCU09ESVVNPU9OLC1EV0lUSF9MSUJTT0RJVU09T0ZGLCBsaWJzb2RpdW0iCiAKIFNSQ19VUkkgPSAiaHR0cDovL2dpdGh1Yi5jb20vemVyb21xL2xpYnptcS9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vemVyb21xLSR7UFZ9LnRhci5neiBcCisgICAgZmlsZTovLzAwMDEtQ01ha2VMaXN0cy10eHQtQXZvaWQtaG9zdC1zcGVjaWZpYy1wYXRoLXRvLWxpYnNvZGl1bS5wYXRjaCBcCiAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAiCiBTUkNfVVJJW21kNXN1bV0gPSAiMjA0N2U5MTdjMmNjOTM1MDVlMjU3OWJjYmE2N2E1NzMiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWJkN2I1YzgzMGQ2NDI4OTU2YjY3YTA0NTRhN2Y4Y2JlZDFkZTc0YjNiMDFlNWMzM2M1Mzc4ZTIyNzQwZjc2MyIKIAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vbGliem1xL3JlbGVhc2VzIgorCiBpbmhlcml0IGNtYWtlIHB0ZXN0IHBrZ2NvbmZpZwogCiBFWFRSQV9PRUNNQUtFID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnLURCVUlMRF9URVNUUz1PTicsICctREJVSUxEX1RFU1RTPU9GRicsIGQpfSBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtYnJva2VyLzAwMDEtbGF1bmNoLWltcHJvdmUtZXJyb3ItaGFuZGxpbmctZm9yLW9wZW5kaXIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtYnJva2VyLzAwMDEtbGF1bmNoLWltcHJvdmUtZXJyb3ItaGFuZGxpbmctZm9yLW9wZW5kaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjYzE3NWIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWJyb2tlci8wMDAxLWxhdW5jaC1pbXByb3ZlLWVycm9yLWhhbmRsaW5nLWZvci1vcGVuZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbSBmNDJkNWUzODg1OWM2NWExODZhY2QwZGE5NGJiZWVjYTEyZmFmN2EyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGF2aWQgUmhlaW5zYmVyZyA8ZGF2aWQucmhlaW5zYmVyZ0BnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDIgTWF5IDIwMTkgMTc6MzM6MzQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gbGF1bmNoOiBpbXByb3ZlIGVycm9yIGhhbmRsaW5nIGZvciBvcGVuZGlyKCkKLQotVGhpcyBpbXByb3ZlcyB0aGUgZXJyb3ItaGFuZGxpbmcgb2Ygb3BlbmRpcigpIGJ5IGFsd2F5cyBwcmludGluZwotZGlhZ25vc3RpY3MuIEZ1cnRoZXJtb3JlLCBpdCBhbGlnbnMgdGhlIGJlaGF2aW9yIHdpdGggZGJ1cy1kZWFtb24gYW5kCi1pZ25vcmVzIEVBQ0NFUy4KLQotU2lnbmVkLW9mZi1ieTogRGF2aWQgUmhlaW5zYmVyZyA8ZGF2aWQucmhlaW5zYmVyZ0BnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IGRidXMtYnJva2VyQGY0MmQ1ZTM4ODU5YzY1YTE4NmFjZDBkYTk0YmJlZWNhMTJmYWY3YTIKLS0tLQotIHNyYy9sYXVuY2gvbGF1bmNoZXIuYyB8IDE3ICsrKysrKysrKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbGF1bmNoL2xhdW5jaGVyLmMgYi9zcmMvbGF1bmNoL2xhdW5jaGVyLmMKLWluZGV4IDMxYTUzNjQuLjJlYzRiZGEgMTAwNjQ0Ci0tLS0gYS9zcmMvbGF1bmNoL2xhdW5jaGVyLmMKLSsrKyBiL3NyYy9sYXVuY2gvbGF1bmNoZXIuYwotQEAgLTc0OSwxMCArNzQ5LDIzIEBAIHN0YXRpYyBpbnQgbGF1bmNoZXJfbG9hZF9zZXJ2aWNlX2RpcihMYXVuY2hlciAqbGF1bmNoZXIsIGNvbnN0IGNoYXIgKmRpcnBhdGgsIE5TCi0gCi0gICAgICAgICBkaXIgPSBvcGVuZGlyKGRpcnBhdGgpOwotICAgICAgICAgaWYgKCFkaXIpIHsKLS0gICAgICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT0VOVCB8fCBlcnJubyA9PSBFTk9URElSKQotKyAgICAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRU5PRU5UIHx8IGVycm5vID09IEVOT1RESVIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLS0gICAgICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVycm5vID09IEVBQ0NFUykgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19hcHBlbmRfaGVyZSgmbGF1bmNoZXItPmxvZywgTE9HX0VSUiwgMCwgTlVMTCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgciA9IGxvZ19jb21taXRmKCZsYXVuY2hlci0+bG9nLCAiQWNjZXNzIGRlbmllZCB0byBzZXJ2aWNlIGRpcmVjdG9yeSAnJXMnXG4iLCBkaXJwYXRoKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAocikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcl9mb2xkKHIpOwotKwotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19hcHBlbmRfaGVyZSgmbGF1bmNoZXItPmxvZywgTE9HX0VSUiwgZXJybm8sIE5VTEwpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBsb2dfY29tbWl0ZigmbGF1bmNoZXItPmxvZywgIlVuYWJsZSB0byBvcGVuIHNlcnZpY2UgZGlyZWN0b3J5ICclcyc6ICVtXG4iLCBkaXJwYXRoKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAocikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcl9mb2xkKHIpOwotKwotICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcl9vcmlnaW4oLWVycm5vKTsKLSsgICAgICAgICAgICAgICAgfQotICAgICAgICAgfQotIAotICAgICAgICAgciA9IGRpcndhdGNoX2FkZChsYXVuY2hlci0+ZGlyd2F0Y2gsIGRpcnBhdGgpOwotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWJyb2tlci8wMDAyLW1ldHJpY3MtY2hhbmdlLXRoZS1jb25zdGFudC11c2VkLWZvci1pbnZhbGlkLXRpbWVzdGEucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtYnJva2VyLzAwMDItbWV0cmljcy1jaGFuZ2UtdGhlLWNvbnN0YW50LXVzZWQtZm9yLWludmFsaWQtdGltZXN0YS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdhMmRjNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtYnJva2VyLzAwMDItbWV0cmljcy1jaGFuZ2UtdGhlLWNvbnN0YW50LXVzZWQtZm9yLWludmFsaWQtdGltZXN0YS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLUZyb20gMzU3MGIzZTliYTM2N2YxMDcxOGI1NjMzNmNlMzJkNTI1NGY2NjU3NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRvbSBHdW5kZXJzZW4gPHRlZ0Bqa2xtLm5vPgotRGF0ZTogVGh1LCA5IE1heSAyMDE5IDEzOjAwOjM3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1ldHJpY3M6IGNoYW5nZSB0aGUgY29uc3RhbnQgdXNlZCBmb3IgaW52YWxpZCB0aW1lc3RhbXBzCi0KLVVzZSAodWludDY0X3QpLTEgcmF0aGVyIHRoYW4gMCB0byBpbmRpY2F0ZSBhbiBpbnZhbGlkIHRpbWVzdGFtcC4gSXQKLXNob3VsZCBub3QgYmUgcG9zc2libGUgZm9yIHRoZSBrZXJuZWwgdG8gcmV0dXJuIDAgZnJvbQotY2xvY2tfZ2V0dGltZSgpLCBidXQgd2UgaGF2ZSByZWNlaXZlZCBzb21lIHJlcG9ydHMgb2Ygb3VyIGFzc2VydHMKLXRyaWdnZXJpbmcsIHNvIGF2b2lkIHRoZSBpc3N1ZSBlbnRpcmVseSAgYnkgdXNpbmcgLTEgaW5zdGVhZCAod2hpY2gKLXJlYWxseSBjYW4gbmV2ZXIgYmUgcmV0dXJuZWQpLgotCi1TZWUgaHR0cHM6Ly9yZXRyYWNlLmZlZG9yYXByb2plY3Qub3JnL2ZhZi9yZXBvcnRzLzI1Mzk0ODQvCi0KLVNpZ25lZC1vZmYtYnk6IFRvbSBHdW5kZXJzZW4gPHRlZ0Bqa2xtLm5vPgotVXBzdHJlYW0tU3RhdHVzOiBkYnVzLWJyb2tlckAzNTcwYjNlOWJhMzY3ZjEwNzE4YjU2MzM2Y2UzMmQ1MjU0ZjY2NTc1Ci0tLS0KLSBzcmMvdXRpbC9tZXRyaWNzLmMgfCA4ICsrKystLS0tCi0gc3JjL3V0aWwvbWV0cmljcy5oIHwgOSArKysrKystLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvdXRpbC9tZXRyaWNzLmMgYi9zcmMvdXRpbC9tZXRyaWNzLmMKLWluZGV4IGI1YTcxODIuLmVlZjk0ZWIgMTAwNjQ0Ci0tLS0gYS9zcmMvdXRpbC9tZXRyaWNzLmMKLSsrKyBiL3NyYy91dGlsL21ldHJpY3MuYwotQEAgLTI2LDcgKzI2LDcgQEAgdm9pZCBtZXRyaWNzX2luaXQoTWV0cmljcyAqbWV0cmljcywgY2xvY2tpZF90IGlkKSB7Ci0gfQotIAotIHZvaWQgbWV0cmljc19kZWluaXQoTWV0cmljcyAqbWV0cmljcykgewotLSAgICAgICAgY19hc3NlcnQoIW1ldHJpY3MtPnRpbWVzdGFtcCk7Ci0rICAgICAgICBjX2Fzc2VydChtZXRyaWNzLT50aW1lc3RhbXAgPT0gTUVUUklDU19USU1FU1RBTVBfSU5WQUxJRCk7Ci0gICAgICAgICBtZXRyaWNzX2luaXQobWV0cmljcywgbWV0cmljcy0+aWQpOwotIH0KLSAKLUBAIC04Miw3ICs4Miw3IEBAIHZvaWQgbWV0cmljc19zYW1wbGVfYWRkKE1ldHJpY3MgKm1ldHJpY3MsIHVpbnQ2NF90IHRpbWVzdGFtcCkgewotICAqIGEgc2FtcGxlIGlzIG5vdCBjdXJyZW50bHkgcnVubmluZy4KLSAgKi8KLSB2b2lkIG1ldHJpY3Nfc2FtcGxlX3N0YXJ0KE1ldHJpY3MgKm1ldHJpY3MpIHsKLS0gICAgICAgIGNfYXNzZXJ0KCFtZXRyaWNzLT50aW1lc3RhbXApOwotKyAgICAgICAgY19hc3NlcnQobWV0cmljcy0+dGltZXN0YW1wID09IE1FVFJJQ1NfVElNRVNUQU1QX0lOVkFMSUQpOwotICAgICAgICAgbWV0cmljcy0+dGltZXN0YW1wID0gbWV0cmljc19nZXRfdGltZShtZXRyaWNzKTsKLSB9Ci0gCi1AQCAtOTMsMTEgKzkzLDExIEBAIHZvaWQgbWV0cmljc19zYW1wbGVfc3RhcnQoTWV0cmljcyAqbWV0cmljcykgewotICAqIEVuZCBhIGN1cnJlbnRseSBydW5uaW5nIHNhbXBsZSwgYW5kIHVwZGF0ZSB0aGUgaW50ZXJuYWwgc3RhdGUuCi0gICovCi0gdm9pZCBtZXRyaWNzX3NhbXBsZV9lbmQoTWV0cmljcyAqbWV0cmljcykgewotLSAgICAgICAgY19hc3NlcnQobWV0cmljcy0+dGltZXN0YW1wKTsKLSsgICAgICAgIGNfYXNzZXJ0KG1ldHJpY3MtPnRpbWVzdGFtcCAhPSBNRVRSSUNTX1RJTUVTVEFNUF9JTlZBTElEKTsKLSAKLSAgICAgICAgIG1ldHJpY3Nfc2FtcGxlX2FkZChtZXRyaWNzLCBtZXRyaWNzLT50aW1lc3RhbXApOwotIAotLSAgICAgICAgbWV0cmljcy0+dGltZXN0YW1wID0gMDsKLSsgICAgICAgIG1ldHJpY3MtPnRpbWVzdGFtcCA9IE1FVFJJQ1NfVElNRVNUQU1QX0lOVkFMSUQ7Ci0gfQotIAotIC8qKgotZGlmZiAtLWdpdCBhL3NyYy91dGlsL21ldHJpY3MuaCBiL3NyYy91dGlsL21ldHJpY3MuaAotaW5kZXggYThlZTkxNS4uYjAwZGVlNiAxMDA2NDQKLS0tLSBhL3NyYy91dGlsL21ldHJpY3MuaAotKysrIGIvc3JjL3V0aWwvbWV0cmljcy5oCi1AQCAtOCw2ICs4LDggQEAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KLSAKLSsjZGVmaW5lIE1FVFJJQ1NfVElNRVNUQU1QX0lOVkFMSUQgKCh1aW50NjRfdCkgLTEpCi0rCi0gdHlwZWRlZiBzdHJ1Y3QgTWV0cmljcyBNZXRyaWNzOwotIAotIHN0cnVjdCBNZXRyaWNzIHsKLUBAIC0yMyw5ICsyNSwxMCBAQCBzdHJ1Y3QgTWV0cmljcyB7Ci0gICAgICAgICB1aW50NjRfdCBzdW1fb2Zfc3F1YXJlczsKLSB9OwotIAotLSNkZWZpbmUgTUVUUklDU19JTklUKF9pZCkgeyAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICAgICAgLm1pbmltdW0gPSAodWludDY0X3QpIC0xLCAgICAgICBcCi0tICAgICAgICAgICAgICAgIC5pZCA9IChfaWQpLCAgICAgICAgICAgICAgICAgICAgXAotKyNkZWZpbmUgTUVUUklDU19JTklUKF9pZCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgIC5taW5pbXVtID0gKHVpbnQ2NF90KSAtMSwgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgLmlkID0gKF9pZCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAudGltZXN0YW1wID0gTUVUUklDU19USU1FU1RBTVBfSU5WQUxJRCwgICAgICAgICBcCi0gICAgICAgICB9Ci0gCi0gdm9pZCBtZXRyaWNzX2luaXQoTWV0cmljcyAqbWV0cmljcywgY2xvY2tpZF90IGlkKTsKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1icm9rZXIvMDAwMy1kYnVzLXNvY2tldC10cmVhdC1NU0dfQ1RSVU5DLWdyYWNlZnVsbHkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtYnJva2VyLzAwMDMtZGJ1cy1zb2NrZXQtdHJlYXQtTVNHX0NUUlVOQy1ncmFjZWZ1bGx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2Y5ZTcxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1icm9rZXIvMDAwMy1kYnVzLXNvY2tldC10cmVhdC1NU0dfQ1RSVU5DLWdyYWNlZnVsbHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi1Gcm9tIDUyMGM0N2M1M2RlZWI4OTNlMDMxOTRmZWZhZjNjNWI5MjIzZWRlMjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYXZpZCBSaGVpbnNiZXJnIDxkYXZpZC5yaGVpbnNiZXJnQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTAgTWF5IDIwMTkgMTA6NTg6MDYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gZGJ1cy9zb2NrZXQ6IHRyZWF0IE1TR19DVFJVTkMgZ3JhY2VmdWxseQotCi1BcyBpdCB0dXJucyBvdXQsIExTTXMgYWxsb3cgY2xpZW50cyB0byB0cmlnZ2VyIGEgTVNHX0NUUlVOQyBvbiB0aGUKLXJlbW90ZSBzaWRlIG9mIGEgdW5peCBzb2NrZXQuIFdoZW5ldmVyIExTTXMgcmVqZWN0IHRoZSB0cmFuc21pc3Npb24gb2YKLWFuIEZELCB0aGV5IHdpbGwgc2ltcGx5IGRyb3AgdGhlIEZEIGFuZCBzZXQgTVNHX0NUUlVOQywgd2l0aG91dCBhbnkKLW90aGVyIGVycm9yIG5vdGlmaWNhdGlvbi4KLQotVGhlcmVmb3JlLCB3ZSBtdXN0IGFzc3VtZSBhbnkgb2NjdXJhbmNlIG9mIE1TR19DVFJVTkMgaXMgdHJpZ2dlciBieSBhCi1jbGllbnQuIFRoaXMgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBjb25zaWRlciBNU0dfQ1RSVU5DIGZvciBhbnkgb3RoZXIKLWVycm9yIGhhbmRsaW5nLCBhbmQgYXMgc3VjaCB3ZSBhcmUgbGVmdCB0byBkaXNjb25uZWN0aW5nIHRoZSBjbGllbnQgYW5kCi1pZ25vcmluZyB0aGUgZmxhZy4KLQotTHVja2lseSwgTVNHX0NUUlVOQyBpcyBleHBlY3RlZCBmb3IgYW55IG90aGVyIGV2ZW50LCBzbyB3ZSBvbmx5IHVzZWQgaXQKLWZvciBkaWFnbm9zdGljcyBzbyBmYXIuCi0KLVNpZ25lZC1vZmYtYnk6IERhdmlkIFJoZWluc2JlcmcgPGRhdmlkLnJoZWluc2JlcmdAZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBkYnVzLWJyb2tlckA1MjBjNDdjNTNkZWViODkzZTAzMTk0ZmVmYWYzYzViOTIyM2VkZTI3Ci0tLS0KLSBzcmMvZGJ1cy9zb2NrZXQuYyB8IDQ0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2RidXMvc29ja2V0LmMgYi9zcmMvZGJ1cy9zb2NrZXQuYwotaW5kZXggY2FjZGZmMi4uNmU2YmExMCAxMDA2NDQKLS0tLSBhL3NyYy9kYnVzL3NvY2tldC5jCi0rKysgYi9zcmMvZGJ1cy9zb2NrZXQuYwotQEAgLTU5MywxOCArNTkzLDQwIEBAIHN0YXRpYyBpbnQgc29ja2V0X3JlY3Ztc2coU29ja2V0ICpzb2NrZXQsCi0gCi0gICAgICAgICBpZiAobXNnLm1zZ19mbGFncyAmIE1TR19DVFJVTkMpIHsKLSAgICAgICAgICAgICAgICAgLyoKLS0gICAgICAgICAgICAgICAgICogVGhpcyBmbGFnIG1lYW5zIHRoZSBjb250cm9sLWJ1ZmZlciB3YXMgdG9vIHNtYWxsIHRvIHJldHJpZXZlCi0tICAgICAgICAgICAgICAgICAqIGFsbCBkYXRhLiBJZiB0aGlzIGNhbiBiZSB0cmlnZ2VyZWQgcmVtb3RlbHksIGl0IG1lYW5zIGEgcGVlcgotLSAgICAgICAgICAgICAgICAgKiBjYW4gY2F1c2UgdXMgdG8gbWlzcyBGRHMuIEhlbmNlLCB3ZSByZWFsbHkgbXVzdCBwcm90ZWN0Ci0tICAgICAgICAgICAgICAgICAqIGFnYWluc3QgdGhpcy4KLS0gICAgICAgICAgICAgICAgICogV2UgZG8gcHJvdmlkZSBzdWl0YWJseSBzaXplZCBidWZmZXJzIHRvIGJlIHByZXBhcmVkIGZvciBhbnkKLS0gICAgICAgICAgICAgICAgICogcG9zc2libGUgc2NlbmFyaW8uIFNvIGlmIHRoaXMgaGFwcGVucywgc29tZXRoaW5nIGlzIGZpc2h5Ci0tICAgICAgICAgICAgICAgICAqIGFuZCB3ZSBiZXR0ZXIgcmVwb3J0IGl0LgotLSAgICAgICAgICAgICAgICAgKiBOb3RlIHRoYXQgdGhpcyBpcyBhbHNvIHJlcG9ydGVkIGJ5IHRoZSBrZXJuZWwgaWYgd2UgZXhjZWVkZWQKLS0gICAgICAgICAgICAgICAgICogb3VyIE5PRklMRSBsaW1pdC4gU2luY2UgdGhpcyBpbXBsaWVzIHJlc291cmNlCi0tICAgICAgICAgICAgICAgICAqIG1pc2NvbmZpZ3VyYXRpb24gYXMgd2VsbCwgd2UgdHJlYXQgaXQgdGhlIHNhbWUgd2F5LgotKyAgICAgICAgICAgICAgICAgKiBPdXIgY29udHJvbC1idWZmZXItc2l6ZSBpcyBjYXJlZnVsbHkgY2FsY3VsYXRlZCB0byBiZSBiaWcKLSsgICAgICAgICAgICAgICAgICogZW5vdWdoIGZvciBhbnkgcG9zc2libGUgYW5jaWxsYXJ5IGRhdGEgd2UgZXhwZWN0LiBUaGVyZWZvcmUsCi0rICAgICAgICAgICAgICAgICAqIHRoZSBrZXJuZWwgc2hvdWxkIG5ldmVyIGJlIHJlcXVpcmVkIHRvIHRydW5jYXRlIGl0LCBhbmQgdGh1cwotKyAgICAgICAgICAgICAgICAgKiBNU0dfQ1RSVU5DIHdpbGwgbmV2ZXIgYmUgc2V0LiBUaGlzIGlzIGFsc28gZm93YXJkIGNvbXBhdGlibGUKLSsgICAgICAgICAgICAgICAgICogdG8gZnV0dXJlIGV4dGVuc2lvbnMgdG8gdGhlIGFuY2lsbGFyeSBkYXRhLCBzaW5jZSB0aGVzZSBtdXN0Ci0rICAgICAgICAgICAgICAgICAqIGJlIGVuYWJsZWQgZXhwbGljaXRseSBiZWZvcmUgdGhlIGtlcm5lbCBjb25zaWRlcnMgZm9yd2FyZGluZwotKyAgICAgICAgICAgICAgICAgKiB0aGVtLgotKyAgICAgICAgICAgICAgICAgKgotKyAgICAgICAgICAgICAgICAgKiBVbmZvcnR1bmF0ZWx5LCB0aGUgU0NNX1JJR0hUUyBpbXBsZW1lbnRhdGlvbiBtaWdodCBzZXQgdGhpcwotKyAgICAgICAgICAgICAgICAgKiBmbGFnIGFzIHdlbGwuIEluIHBhcnRpY3VsYXIsIGlmIG5vdCBhbGwgRkRzIGNhbiBiZSByZXR1cm5lZAotKyAgICAgICAgICAgICAgICAgKiB0byB1c2VyLXNwYWNlLCBNU0dfQ1RSVU5DIHdpbGwgYmUgc2V0IChzaWduYWxsaW5nIHRoYXQgdGhlCi0rICAgICAgICAgICAgICAgICAqIEZELXNldCBpcyBub24tY29tcGxldGUpLiBObyBvdGhlciBlcnJvciBpcyByZXR1cm5lZCBvcgotKyAgICAgICAgICAgICAgICAgKiBzaWduYWxsZWQsIHRob3VnaC4gVGhlcmUgYXJlIHNldmVyYWwgcmVhc29ucyB3aHkgdGhlIEZECi0rICAgICAgICAgICAgICAgICAqIHRyYW5zbWlzc2lvbiBjYW4gZmFpbC4gTW9zdCBpbXBvcnRhbnRseSwgaWYgd2UgZXhoYXVzdCBvdXIKLSsgICAgICAgICAgICAgICAgICogRkQgbGltaXQsIGZ1cnRoZXIgRkRzIHdpbGwgc2ltcGx5IGJlIGRpc2NhcmRlZC4gV2UgYXJlCi0rICAgICAgICAgICAgICAgICAqIHByb3RlY3RlZCBhZ2FpbnN0IHRoaXMgYnkgb3VyIGFjY291bnRpbmctcXVvdGFzLCBidXQgd2UKLSsgICAgICAgICAgICAgICAgICogd291bGQgc3RpbGwgbGlrZSB0byBjYXRjaCB0aGlzIGNvbmRpdGlvbiBhbmQgd2FybiBsb3VkbHkuCi0rICAgICAgICAgICAgICAgICAqIEhvd2V2ZXIsIEZEcyBhcmUgYWxzbyBkcm9wcGVkIGlmIHRoZSBzZWN1cml0eSBsYXllciByZWZ1c2VkCi0rICAgICAgICAgICAgICAgICAqIHRoZSB0cmFuc21pc3Npb24gb2YgdGhlIEZEIGluIHF1ZXN0aW9uLiBUaGlzIG1lYW5zLCBpZiBhbgotKyAgICAgICAgICAgICAgICAgKiBMU00gcmVmdXNlcyB0aGUgRC1CdXMgY2xpZW50IHRvIHNlbmQgdXMgYW4gRkQsIHRoZSBGRCBpcwotKyAgICAgICAgICAgICAgICAgKiBqdXN0IGRyb3BwZWQgYW5kIE1TR19DVFJVTkMgd2lsbCBiZSBzZXQuIFRoaXMgY2FuIGJlCi0rICAgICAgICAgICAgICAgICAqIHRyaWdnZXJlZCBieSBjbGllbnRzLgotKyAgICAgICAgICAgICAgICAgKgotKyAgICAgICAgICAgICAgICAgKiBUbyBzdW1tYXJpemU6IEluIGFuIGlkZWFsIHdvcmxkLCB3ZSB3b3VsZCBleHBlY3QgdGhpcyBmbGFnCi0rICAgICAgICAgICAgICAgICAqIHRvIG5ldmVyIGJlIHNldCwgYW5kIHdlIHdvdWxkIGp1c3QgdXNlCi0rICAgICAgICAgICAgICAgICAqIGBlcnJvcl9vcmlnaW4oLUVOT1RSRUNPVkVSQUJMRSlgIHRvIHByb3ZpZGUgZGlhZ25vc3RpY3MuCi0rICAgICAgICAgICAgICAgICAqIFVuZm9ydHVuYXRlbHksIHRoZSBncm9zcyBtaXN1c2Ugb2YgdGhpcyBmbGFnIGZvciBMU00KLSsgICAgICAgICAgICAgICAgICogc2VjdXJpdHkgZW5mb3JjZW1lbnRzIG1lYW5zIHdlIGhhdmUgdG8gYXNzdW1lIGFueSBvY2N1cmVuY2UKLSsgICAgICAgICAgICAgICAgICogb2YgTVNHX0NUUlVOQyBtZWFucyB0aGUgY2xpZW50IHdhcyByZWZ1c2VkIHRvIHNlbmQgYQotKyAgICAgICAgICAgICAgICAgKiBzcGVjaWZpYyBtZXNzYWdlLiBPdXIgb25seSBwb3NzaWJsZSB3YXkgdG8gZGVhbCB3aXRoIHRoaXMgaXMKLSsgICAgICAgICAgICAgICAgICogdG8gZGlzY29ubmVjdCB0aGUgY2xpZW50LgotICAgICAgICAgICAgICAgICAgKi8KLS0gICAgICAgICAgICAgICAgciA9IGVycm9yX29yaWdpbigtRU5PVFJFQ09WRVJBQkxFKTsKLSsgICAgICAgICAgICAgICAgc29ja2V0X2Nsb3NlKHNvY2tldCk7Ci0rICAgICAgICAgICAgICAgIHIgPSBTT0NLRVRfRV9MT1NUX0lOVEVSRVNUOwotICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgfQotIAotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWJyb2tlci8wMDA0LWxhdW5jaGVyLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1icm9rZXIvMDAwNC1sYXVuY2hlci1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzNDhkOTcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWJyb2tlci8wMDA0LWxhdW5jaGVyLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gZmMxZDI2ZGQwOGM0OGMwNGZjOTg4M2IzNmE5NGMyMTlhYmEyMDkxYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEx1Y2EgQm9jY2Fzc2kgPGx1Y2EuYm9jY2Fzc2lAbWljcm9zb2Z0LmNvbT4KLURhdGU6IE1vbiwgMjggT2N0IDIwMTkgMTQ6MzE6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gbGF1bmNoZXI6IGZpeCBidWlsZCB3aXRoIG11c2wgbGliYwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi0uLi9zcmMvbGF1bmNoL2xhdW5jaGVyLmM6IEluIGZ1bmN0aW9uIOKAmGxhdW5jaGVyX2ZvcmvigJk6Ci0uLi9zcmMvbGF1bmNoL2xhdW5jaGVyLmM6Mzc4OjYwOiBlcnJvcjog4oCYV0VYSVRFROKAmSB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiDigJhXSUZFWElURUTigJk/Ci0gICAgICAgICByID0gc2RfZXZlbnRfYWRkX2NoaWxkKGxhdW5jaGVyLT5ldmVudCwgTlVMTCwgcGlkLCBXRVhJVEVELCBsYXVuY2hlcl9vbl9jaGlsZF9leGl0LCBsYXVuY2hlcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXSUZFWElURUQKLQotSW5jbHVkZSBzeXMvd2FpdC5oIHdoaWNoIGRlZmluZXMgaXQuCi0KLVNpZ25lZC1vZmYtYnk6IEx1Y2EgQm9jY2Fzc2kgPGx1Y2EuYm9jY2Fzc2lAbWljcm9zb2Z0LmNvbT4KLVN1Z2dlc3RlZC1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogcGVuZGluZyBodHRwczovL2dpdGh1Yi5jb20vYnVzMS9kYnVzLWJyb2tlci9wdWxsLzIxNAotLS0tCi0gc3JjL2xhdW5jaC9sYXVuY2hlci5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvbGF1bmNoL2xhdW5jaGVyLmMgYi9zcmMvbGF1bmNoL2xhdW5jaGVyLmMKLWluZGV4IDJlYzRiZGEuLjFmMzhmY2YgMTAwNjQ0Ci0tLS0gYS9zcmMvbGF1bmNoL2xhdW5jaGVyLmMKLSsrKyBiL3NyYy9sYXVuY2gvbGF1bmNoZXIuYwotQEAgLTEwLDYgKzEwLDcgQEAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN5cy9wcmN0bC5oPgotICNpbmNsdWRlIDxzeXMvdW4uaD4KLSsjaW5jbHVkZSA8c3lzL3dhaXQuaD4KLSAjaW5jbHVkZSA8c3lzdGVtZC9zZC1idXMuaD4KLSAjaW5jbHVkZSA8c3lzdGVtZC9zZC1kYWVtb24uaD4KLSAjaW5jbHVkZSA8c3lzdGVtZC9zZC1ldmVudC5oPgotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWJyb2tlcl8yMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1icm9rZXJfMjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiNDEwMWEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWJyb2tlcl8yMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiZGJ1cyBicm9rZXIiCi1ERVNDUklQVElPTiA9ICJEcm9wLWluIHJlcGxhY2VtZW50IGZvciBkYnVzLWRhZW1vbi4iCi0KLVNFQ1RJT04gPSAiYmFzZSIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9N2I0ODZjMjMzOGQyMjVhMTQwNWQ5NzllZDJjMTVjZTgiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2J1czEvZGJ1cy1icm9rZXIvcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9L2RidXMtYnJva2VyLSR7UFZ9LnRhci54eiIKLVNSQ19VUkkgKz0gIiBmaWxlOi8vMDAwMS1sYXVuY2gtaW1wcm92ZS1lcnJvci1oYW5kbGluZy1mb3Itb3BlbmRpci5wYXRjaCIKLVNSQ19VUkkgKz0gIiBmaWxlOi8vMDAwMi1tZXRyaWNzLWNoYW5nZS10aGUtY29uc3RhbnQtdXNlZC1mb3ItaW52YWxpZC10aW1lc3RhLnBhdGNoIgotU1JDX1VSSSArPSAiIGZpbGU6Ly8wMDAzLWRidXMtc29ja2V0LXRyZWF0LU1TR19DVFJVTkMtZ3JhY2VmdWxseS5wYXRjaCIKLVNSQ19VUkkgKz0gIiBmaWxlOi8vMDAwNC1sYXVuY2hlci1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiYTE3ODg2YTkyYWIxZTBiYzJlNGIxYTI3NDMzOWUzODgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmZmZjlhODMxYTUxNDY1OWUyYzdkNzA0ZTc2ODY3Y2UzMWViY2Y0M2U4ZDdhNjJlMDgwYzY2NTZmNjRjZDM5ZSIKLQotaW5oZXJpdCBtZXNvbiBwa2djb25maWcgc3lzdGVtZCBmZWF0dXJlc19jaGVjawotCi1ERVBFTkRTID0gImV4cGF0IHN5c3RlbWQiCi1ERVBFTkRTICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzZWxpbnV4JywgJ2xpYnNlbGludXgnLCAnJywgZCl9IgotREVQRU5EUyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsICdhdWRpdCcsICcnLCBkKX0iCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtCUE59LnNlcnZpY2UiCi0KLUZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IgotRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IgotRklMRVNfJHtQTn0gKz0gIiR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQvY2F0YWxvZyIKLQotRVhUUkFfT0VNRVNPTiArPSAiIC1Ec2VsaW51eD0ke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3NlbGludXgnLCAndHJ1ZScsICdmYWxzZScsIGQpfSIKLUVYVFJBX09FTUVTT04gKz0gIiAtRGF1ZGl0PSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9IgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtYnJva2VyXzIyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWJyb2tlcl8yMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGI2ZjdmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWJyb2tlcl8yMi5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gImRidXMgYnJva2VyIgorREVTQ1JJUFRJT04gPSAiRHJvcC1pbiByZXBsYWNlbWVudCBmb3IgZGJ1cy1kYWVtb24uIgorCitTRUNUSU9OID0gImJhc2UiCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTdiNDg2YzIzMzhkMjI1YTE0MDVkOTc5ZWQyYzE1Y2U4IgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9idXMxL2RidXMtYnJva2VyL3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS9kYnVzLWJyb2tlci0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiMDNjNDczMGYyMTEwYjU0OTJlMTIxMmM4MWFmMzI1ZGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzJmMzA3MDBjZWZjOTk3YzQ3OWQ3NWZjYzQyZjMxNzc5NDBmMWViYmVlOWM1YTYwYzFlM2VlMzliOTBhOTc4MyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9idXMxLyR7QlBOfS9yZWxlYXNlcyIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgc3lzdGVtZCBmZWF0dXJlc19jaGVjaworCitERVBFTkRTID0gImV4cGF0IHN5c3RlbWQiCitERVBFTkRTICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzZWxpbnV4JywgJ2xpYnNlbGludXgnLCAnJywgZCl9IgorREVQRU5EUyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsICdhdWRpdCcsICcnLCBkKX0iCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtCUE59LnNlcnZpY2UiCisKK0ZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IgorRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IgorRklMRVNfJHtQTn0gKz0gIiR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQvY2F0YWxvZyIKKworRVhUUkFfT0VNRVNPTiArPSAiIC1Ec2VsaW51eD0ke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3NlbGludXgnLCAndHJ1ZScsICdmYWxzZScsIGQpfSIKK0VYVFJBX09FTUVTT04gKz0gIiAtRGF1ZGl0PSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9IgorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9lbWxvZy9lbWxvZy8wMDAxLVJlbW92ZS1tb2R1bGVzX2NsZWFuLWZyb20tY2xlYW4tdGFyZ2V0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZW1sb2cvZW1sb2cvMDAwMS1SZW1vdmUtbW9kdWxlc19jbGVhbi1mcm9tLWNsZWFuLXRhcmdldC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWJhNTI4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZW1sb2cvZW1sb2cvMDAwMS1SZW1vdmUtbW9kdWxlc19jbGVhbi1mcm9tLWNsZWFuLXRhcmdldC5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIGZkMGE0ZWUyMDFiNWM3YjI0ZGE3OWRjZDM0NmFjMTIxOTc4OTUxYTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAyOSBNYXIgMjAyMCAxOTo1ODozNiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBSZW1vdmUgbW9kdWxlc19jbGVhbiBmcm9tIGNsZWFuIHRhcmdldAorCitUaGlzIGlzIG5lZWRlZCB3aGVuIGJ1aWxkaW5nIGFwcGxpY2F0aW9ucyAody9vIG1vZHVsZSkKK1NpbmNlIE9FIHdpbGwgcnVuICdtYWtlIGNsZWFuJyBiZWZvcmUgcmVjb25maWd1cmluZywgdGhpcword2lsbCB0cnkgdG8gcnVuIG1vZHVsZV9jbGVhbiBhbmQgd2lsbCB3cm9uZ2x5IHRyeSB0byBsb29rIGZvciByZW1vdmluZworbW9kdWxlcyBmcm9tIC9saWIvbW9kdWxlcworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyBPRS1TcGVjaWZpYyBdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IGM2MDg2M2YuLmZjODk3ZDUgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0yMyw3ICsyMyw3IEBAIGFsbDogbW9kdWxlcyBuYmNhdCBta2VtbG9nCisgCisgaW5zdGFsbDogbW9kdWxlc19pbnN0YWxsIG5iY2F0X2luc3RhbGwgbWtlbWxvZ19pbnN0YWxsCisgCistY2xlYW46IG1vZHVsZXNfY2xlYW4gbmJjYXRfY2xlYW4gbWtlbWxvZ19jbGVhbgorK2NsZWFuOiBuYmNhdF9jbGVhbiBta2VtbG9nX2NsZWFuCisgCisgbW9kdWxlczoKKyAJJChNQUtFKSAtQyAkKEtESVIpIE09JChDVVJESVIpIG1vZHVsZXMKKy0tIAorMi4yNi4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2VtbG9nL2VtbG9nX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2VtbG9nL2VtbG9nX2dpdC5iYgppbmRleCAyMjMwOGQ3Li4zODdkZDY3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9lbWxvZy9lbWxvZ19naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZW1sb2cvZW1sb2dfZ2l0LmJiCkBAIC0xLDYgKzEsOCBAQAogcmVxdWlyZSAke0JQTn0uaW5jCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly8ke0JQTn0uaW5pdGQiCitTUkNfVVJJICs9ICJmaWxlOi8vJHtCUE59LmluaXRkIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1tb2R1bGVzX2NsZWFuLWZyb20tY2xlYW4tdGFyZ2V0LnBhdGNoIFwKKyAgICAgICAgICAgICIKIAogU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vRHJvcC11c2Utb2YtZXJyb3ItaC5wYXRjaCIKIApAQCAtOCw2ICsxMCw4IEBACiAKIElOSVRTQ1JJUFRfTkFNRSA9ICIke0JQTn0iCiAKKworCiBkb19jb21waWxlKCkgewogICAgIG9lX3J1bm1ha2UgbmJjYXQKICAgICBvZV9ydW5tYWtlIG1rZW1sb2cKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2xpYm5mYy9saWJuZmNfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGlibmZjL2xpYm5mY19naXQuYmIKaW5kZXggNjRjNWY1Yy4uMjg1MWVjZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGlibmZjL2xpYm5mY19naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGlibmZjL2xpYm5mY19naXQuYmIKQEAgLTcsNiArNyw4IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwogCitQViA9ICIxLjcuMStnaXQke1NSQ1BWfSIKKwogUyA9ICIke1dPUktESVJ9L2dpdCIKIFNSQ1JFViA9ICIyZDQ1NDM2NzNlOWI3NmMwMjY3OWNhOGI4OTI1OTY1OWYxYWZkOTMyIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL25mYy10b29scy9saWJuZmMuZ2l0IFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2xpYnNpZ2MrKy0yLjAvbGlic2lnYysrLTIuMF8yLjEwLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9saWJzaWdjKystMi4wL2xpYnNpZ2MrKy0yLjBfMi4xMC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTViOWNlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2xpYnNpZ2MrKy0yLjAvbGlic2lnYysrLTIuMF8yLjEwLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIkEgbGlicmFyeSBmb3IgbG9vc2UgY291cGxpbmcgb2YgQysrIG1ldGhvZCBjYWxscyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kODA0NWYzYjhmOTI5YzFjYjI5YTFlM2ZkNzM3YjQ5OSIKLQotREVQRU5EUyA9ICJtbS1jb21tb24iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvbGlic2lnYysrLzIuMTAvbGlic2lnYysrLSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxYjA2N2JmYWUwYjUwMmU2YTUxMjczMzZjYjA5ZDJkZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMWNhMDI1MzM3OTU5NmY5YzE5ZjA3MGM4M2QzNjJiMTJkZmQzOWMwYTNlYTFkZDgxM2U4ZTIxYzFhMDk3YTk4IgotCi1TID0gIiR7V09SS0RJUn0vbGlic2lnYysrLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scwotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9zaWdjKystKi8iCi1GSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vZGV2aGVscCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi1TRUNVUklUWV9DRkxBR1MgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2xpYnNpZ2MrKy0yLjAvbGlic2lnYysrLTIuMF8yLjEwLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9saWJzaWdjKystMi4wL2xpYnNpZ2MrKy0yLjBfMi4xMC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2MTI5ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9saWJzaWdjKystMi4wL2xpYnNpZ2MrKy0yLjBfMi4xMC4zLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciBsb29zZSBjb3VwbGluZyBvZiBDKysgbWV0aG9kIGNhbGxzIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ4MDQ1ZjNiOGY5MjljMWNiMjlhMWUzZmQ3MzdiNDk5IgorCitERVBFTkRTID0gIm1tLWNvbW1vbiIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9saWJzaWdjKysvMi4xMC9saWJzaWdjKystJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImVhNjhjN2FmYzIzYTRiODlhMmRmYTc4MzQ0NDYwNzg1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBiNjhkZmM2MzEzYzZjYzkwYWM5ODljNmQ3MjJhMWJmMDU4NWFkMTM4NDZlNzk3NDZhYTg3Y2IyNjU5MDQ3ODYiCisKK1MgPSAiJHtXT1JLRElSfS9saWJzaWdjKystJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3NpZ2MrKy0qLyIKK0ZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9kZXZoZWxwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK1NFQ1VSSVRZX0NGTEFHUyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGlic2lnYysrLTIuMC9saWJzaWdjKystM18zLjAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2xpYnNpZ2MrKy0yLjAvbGlic2lnYysrLTNfMy4wLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2YmQwMmMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGlic2lnYysrLTIuMC9saWJzaWdjKystM18zLjAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciBsb29zZSBjb3VwbGluZyBvZiBDKysgbWV0aG9kIGNhbGxzIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NTliZmZlMjk5MzgxNmViMzJlYzRiYzFlYzFkNTg3NSIKLQotREVQRU5EUyA9ICJtbS1jb21tb24iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvbGlic2lnYysrLzMuMC9saWJzaWdjKystJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gIjFmOTNmOGVkNGVhZDM4ZTg3NjE1NzgzNGIyYzU3YzIxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRiNzc2NzZkZTFlNzQ3NzRlYzQ1NmJjYzZhYzZmMDRhMjc5MWExMmNjMWZlMDdmODMwNWQ0YzNjODZlMmYzMzkiCi0KLVMgPSAiJHtXT1JLRElSfS9saWJzaWdjKystJHtQVn0iCi0KLWluaGVyaXQgc2V0dXB0b29sczMgbWVzb24KLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vc2lnYysrLSovIgotRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L2RldmhlbHAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9saWJzaWdjKystMi4wL2xpYnNpZ2MrKy0zXzMuMC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGlic2lnYysrLTIuMC9saWJzaWdjKystM18zLjAuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzRmNWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGlic2lnYysrLTIuMC9saWJzaWdjKystM18zLjAuMy5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIkEgbGlicmFyeSBmb3IgbG9vc2UgY291cGxpbmcgb2YgQysrIG1ldGhvZCBjYWxscyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTU5YmZmZTI5OTM4MTZlYjMyZWM0YmMxZWMxZDU4NzUiCisKK0RFUEVORFMgPSAibW0tY29tbW9uIgorCitTUkNfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2xpYnNpZ2MrKy8zLjAvbGlic2lnYysrLSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4ZGNhNDU1OWU3MzJmNDc3MTAzNzBiYWE4YmMyZTY2ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlNGY0ODY2YTg5NGJkYmUwNTNlNGZiMjJjY2M2YmM0YjY4NTFmZDMxYTQ3NDZmZGQyMGIyY2Y2ZTg3YzZlZGI2IgorCitTID0gIiR7V09SS0RJUn0vbGlic2lnYysrLSR7UFZ9IgorCitpbmhlcml0IHNldHVwdG9vbHMzIG1lc29uCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3NpZ2MrKy0qLyIKK0ZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9kZXZoZWxwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK1NFQ1VSSVRZX0NGTEFHUyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS1vZS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtb2UuYmIKaW5kZXggNTlmMTcwMy4uODM1OGU5MyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS1vZS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLW9lLmJiCkBAIC00Niw3ICs0Niw3IEBACiAiCiAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWJlbmNobWFya3MgPSAiXAotICAgIGFuYWx5emUtc3VzcGVuZCBkaHJ5c3RvbmUgaXBlcmYyIGxpbnBhY2sgcGhvcm9uaXgtdGVzdC1zdWl0ZSBcCisgICAgZGhyeXN0b25lIGlwZXJmMiBsaW5wYWNrIHBob3Jvbml4LXRlc3Qtc3VpdGUgXAogICAgIHRpb2JlbmNoIGJvbm5pZSsrIGZpbyBpcGVyZjIgaXBlcmYzIGxtYmVuY2ggcy1zdWl0ZSB3aGV0c3RvbmUgXAogICAgIGxpYmMtYmVuY2ggbWVtdGVzdGVyIHN5c2JlbmNoIGRiZW5jaCBpb3pvbmUzIGxpYmh1Z2V0bGJmcyBcCiAgICAgbmJlbmNoLWJ5dGUgdGlueW1lbWJlbmNoIFwKQEAgLTYyLDE0ICs2MiwxNSBAQAogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtY29ubmVjdGl2aXR5ID0iXAogICAgIGdhbW11IGhvc3RhcGQgaXJzc2kga3JiNSBsaWJldiBsaWJpbW9iaWxlZGV2aWNlIFwKICAgICBsaWJtYmltIGxpYm10cCBsaWJuZHAgbGlicW1pIGxpYnRvcnJlbnQgXAotICAgIGxpYnV2IGxpYndlYnNvY2tldHMgbGludXhwdHAgbGlyYyBsb3VkbW91dGggXAorICAgIGxpYnV2IGxpYndlYnNvY2tldHMgbGludXhwdHAgbG91ZG1vdXRoIFwKICAgICBtb2RlbW1hbmFnZXIgbW9zaCAgXAogICAgIHBhaG8tbXF0dC1jIHBob25ldC11dGlscyByYWJiaXRtcS1jIHJma2lsbCBydG9ycmVudCBcCi0gICAgc2VyMm5ldCBzbXN0b29sczMgdGVsZXBhdGh5LWdsaWIgdGVsZXBhdGh5LWlkbGUgdGhyaWZ0IFwKKyAgICBzZXIybmV0IHNtc3Rvb2xzMyB0ZWxlcGF0aHktZ2xpYiB0aHJpZnQgXAogICAgIHVzYm11eGQgemFiYml4IHplcm9tcSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAib2JleC1kYXRhLXNlcnZlciIsICIiLCBkKX0gXAogICAgIGxpYm1pa21vZCBcCiAgICAgb2JleGZ0cCBvcGVub2JleCBsaWJuZXQgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJCQkZJTEVfQ09MTEVDVElPTlMiLCAibWV0YS1weXRob24yIiwgInRlbGVwYXRoeS1pZGxlIiwgIiIsIGQpfSBcCiAgICAgIgogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtY29ubmVjdGl2aXR5X2FwcGVuZF9saWJjLWdsaWJjID0gIiB3dnN0cmVhbXMgd3ZkaWFsIgogCkBAIC0xMDAsMjQgKzEwMSwyNSBAQAogCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1kYnMgPSJcCiAgICAgbGV2ZWxkYiBsaWJkYmkgbWFyaWFkYiBtYXJpYWRiLW5hdGl2ZSBcCi0gICAgbXlzcWwtcHl0aG9uIHBvc3RncmVzcWwgcHNxbG9kYmMgcm9ja3NkYiBzb2NpIFwKKyAgICBwb3N0Z3Jlc3FsIHBzcWxvZGJjIHJvY2tzZGIgc29jaSBcCiAgICAgc3FsaXRlIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiQkJGSUxFX0NPTExFQ1RJT05TIiwgIm1ldGEtcHl0aG9uMiIsICJteXNxbC1weXRob24iLCAiIiwgZCl9IFwKICAgICAiCiAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWRldnRvb2xzID0iXAogICAgIGFuZHJvaWQtdG9vbHMgYW5kcm9pZC10b29scy1jb25mIGJvb3RjaGFydCBicmVha3BhZCBcCiAgICAgY2FwbnByb3RvIGNnZGIgY3Njb3BlIGN0YWdzIFwKICAgICBkZWJvb3RzdHJhcCBkbWFsbG9jIGZsYXRidWZmZXJzIFwKLSAgICBnaWZsaWIgaWNvbi1zbGljZXIgaXB0cmFmLW5nIGpxIGpzb25jcHAganNvbnJwYyBqc29uLXNwaXJpdCBcCisgICAgZ2lmbGliIGdycGMgaWNvbi1zbGljZXIgaXB0cmFmLW5nIGpxIGpzb25jcHAganNvbnJwYyBqc29uLXNwaXJpdCBcCiAgICAga2NvbmZpZy1mcm9udGVuZHMgbGVtb24gbGliZWRpdCBsaWJnZWUgbGlic29tYm9rMyBcCiAgICAgbGlidWJveCBsb2c0Y3BsdXMgbHNodyBsdHJhY2UgbHVhIG1jcHAgbWVtc3RhdCBtZXJjdXJpYWwgXAotICAgIG1waWNoIG1zZ3BhY2stYyBubG9obWFubi1qc29uIG5vZGVqcyBvcGVub2NkIHBheC11dGlscyBcCisgICAgbXBpY2ggbXNncGFjay1jIG5sb2htYW5uLWpzb24gb3Blbm9jZCBwYXgtdXRpbHMgXAogICAgIGlwYy1ydW4gbGliZGJkLW15c3FsLXBlcmwgbGliZGJpLXBlcmwgbGliaW8tcHR5LXBlcmwgcGhwIFwKLSAgICBwcm90b2J1ZiBwcm90b2J1Zi1jIHB5dGhvbjMtZGlzdHV0aWxzLWV4dHJhIFwKLSAgICBweXRob24tY3B1c2V0IHB5dGhvbi1kaXN0dXRpbHMtZXh0cmEgcHl0aG9uLWZ1dHVyZXMgcHl0aG9uLXB5Z29iamVjdCBcCi0gICAgcmFwaWRqc29uIHNlcmlhbGNoZWNrIHNpcDMgc2lwIHRjbGFwIHVmdHJhY2UgdXctaW1hcCB2YWxpanNvbiBcCisgICAgcHJvdG9idWYgcHJvdG9idWYtYyBcCisgICAgcmFwaWRqc29uIHNlcmlhbGNoZWNrIHNpcDMgdGNsYXAgdWZ0cmFjZSB1dy1pbWFwIHZhbGlqc29uIFwKICAgICB4bWxycGMtYyB5YWpsIHlhc20gXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAieDExIiwgImdlYW55IGdlYW55LXBsdWdpbnMgZ2xhZGUgdGsiLCAiIiwgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiQkJGSUxFX0NPTExFQ1RJT05TIiwgIm1ldGEtcHl0aG9uMiIsICJub2RlanMiLCAiIiwgZCl9IFwKICAgICAiCiAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWRldnRvb2xzX3JlbW92ZV9hcm12NSA9ICJ1ZnRyYWNlIG5vZGVqcyIKQEAgLTEyNywxOSArMTI5LDE5IEBACiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1kZXZ0b29sc19yZW1vdmVfcG93ZXJwYyA9ICJhbmRyb2lkLXRvb2xzIGJyZWFrcGFkIHVmdHJhY2UgbHNodyIKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWRldnRvb2xzX3JlbW92ZV9wb3dlcnBjNjQgPSAiYW5kcm9pZC10b29scyB1ZnRyYWNlIGxzaHciCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1kZXZ0b29sc19yZW1vdmVfcG93ZXJwYzY0bGUgPSAiYW5kcm9pZC10b29scyB1ZnRyYWNlIGxzaHciCi1SREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1kZXZ0b29sc19yZW1vdmVfcmlzY3Y2NCA9ICJub2RlanMgdWZ0cmFjZSBsc2h3IgotUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtZGV2dG9vbHNfcmVtb3ZlX3Jpc2N2MzIgPSAibm9kZWpzIHVmdHJhY2UgbHNodyIKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWRldnRvb2xzX3JlbW92ZV9yaXNjdjY0ID0gImJyZWFrcGFkIGx0cmFjZSBub2RlanMgdWZ0cmFjZSBsc2h3IgorUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtZGV2dG9vbHNfcmVtb3ZlX3Jpc2N2MzIgPSAiYnJlYWtwYWQgbHRyYWNlIG5vZGVqcyB1ZnRyYWNlIGxzaHciCiAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWV4dGVuZGVkID0iXAogICAgIGJ5YWNjIGNmZW5naW5lIGNmZW5naW5lLW1hc3RlcmZpbGVzIGNtcGktYmluZGluZ3MgXAogICAgIGRkcmVzY3VlIGRpYWxvZyBkdW1iLWluaXQgZW5zY3JpcHQgZmx1ZW50Yml0IFwKICAgICBoYXZlZ2VkIGhleGVkaXQgaGlyZWRpcyBocGxpcCBod2xvYyBpbmRlbnQgaW90b3AgaXNvbWQ1c3VtIFwKLSAgICBqYW5zc29uIGtvbmtyZXRjbXBpIGxjZHByb2MgbGliYmxvY2tkZXYgbGliY2VjIGxpYmNvbmZpZyBcCisgICAgamFuc3NvbiBrb25rcmV0Y21waSBsaWJibG9ja2RldiBsaWJjZWMgbGliY29uZmlnIFwKICAgICBsaWJkaXZlY29tcHV0ZXIgbGlicGxpc3QgbGlidXNibXV4ZCBcCiAgICAgbGlibG9ja2ZpbGUgbGlibG9nZ2luZyBsaWJsb2dub3JtIGxpYm1vZGJ1cyBsaWJtb2RidXMgXAogICAgIGxpYnB3cXVhbGl0eSBsaWJxYiBsaWJ1aW8gXAogICAgIGxvY2tmaWxlLXByb2dzIGxvZ3dhdGNoIGxwcm5nIG1haWx4IG1kNWRlZXAgXAotICAgIG1vempzIG1yYWEgbmFuYSBuaWNzdGF0IFwKKyAgICBtcmFhIG5hbmEgbmljc3RhdCBcCiAgICAgcDd6aXAgcDhwbGF0Zm9ybSBsaWJmaWxlLWZubWF0Y2gtcGVybCBcCiAgICAgcmFycGQgcmVkaXMgcnJkdG9vbCBsaWJmYXN0anNvbiBsaWJyZWxwIHJzeXNsb2cgc2FubG9jayBcCiAgICAgc2JsaW0tY21waS1kZXZlbCBzYmxpbS1zZmMtY29tbW9uIHNibGltLXNmY2MgXApAQCAtMTUzLDcgKzE1NSw3IEBACiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwYW0iLCAicGFtLXNzaC1hZ2VudC1hdXRoIG9wZW53c21hbiBzYmxpbS1zZmNiICIsICIiLCBkKX0gXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAicG9sa2l0IiwgInBvbGtpdCBwb2xraXQtZ3JvdXAtcnVsZS1kYXRldGltZSAiLCAiIiwgZCl9IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInBvbGtpdCIsICJwb2xraXQtZ3JvdXAtcnVsZS1uZXR3b3JrICIsICIiLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJCQlBBVEgiLCAibWV0YS1weXRob24iLCAib3BlbmxtaS10b29scyIsICIiLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJCQkZJTEVfQ09MTEVDVElPTlMiLCAibWV0YS1weXRob24yIiwgIm9wZW5sbWktdG9vbHMiLCAiIiwgZCl9IFwKICAgICAiCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1leHRlbmRlZF9yZW1vdmVfbWlwc2FyY2ggPSAidXBtIG1yYWEgdGlwdG9wIgogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtZXh0ZW5kZWRfcmVtb3ZlX3Bvd2VycGMgPSAidXBtIG1yYWEiCkBAIC0xNjEsNyArMTYzLDYgQEAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWV4dGVuZGVkX3JlbW92ZV9wb3dlcnBjNjRsZSA9ICJ1cG0gbXJhYSIKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWV4dGVuZGVkX3JlbW92ZV9yaXNjdjY0ID0gInVwbSBtcmFhIHRpcHRvcCIKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWV4dGVuZGVkX3JlbW92ZV9yaXNjdjMyID0gInVwbSBtcmFhIHRpcHRvcCIKLVJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWV4dGVuZGVkX3JlbW92ZV9saWJjLW11c2wgPSAibGNkcHJvYyIKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtZ25vbWUgPSJcCiAgICAgYXRrbW0gZ25vbWUtY29tbW9uIGdub21lLWRvYy11dGlscy1zdHViIGd0a21tIFwKQEAgLTE2OSw4ICsxNzAsOSBAQAogICAgICIKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtZ3JhcGhpY3MgPSJcCi0gICAgYmFibCBjYWlyb21tIGRpZXRzcGxhc2ggZGlyZWN0ZmIgZGlyZWN0ZmItZXhhbXBsZXMgZG5mZHJhZ29yYSBcCi0gICAgZmJncmFiIGZiaWRhIGZvbnRmb3JnZSBmdndtIGdlZ2wgZ2ltcCBnbG0gZ3Bob3RvMiBsaWJncGhvdG8yIFwKKyAgICBjYWlyb21tIGRpZXRzcGxhc2ggZGlyZWN0ZmIgZGlyZWN0ZmItZXhhbXBsZXMgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJQQUNLQUdFX0NMQVNTRVMiLCAicGFja2FnZV9ycG0iLCAiZG5mZHJhZ29yYSBkbmYtcGx1Z2luLXR1aSIsICIiLCBkKX0gXAorICAgIGZiZ3JhYiBmYmlkYSBmb250Zm9yZ2UgZnZ3bSBnbG0gZ3Bob3RvMiBsaWJncGhvdG8yIFwKICAgICBndGtwZXJmIGphc3BlciBsZXB0b25pY2EgbGlibW5nIGxpYnNkbDItaW1hZ2UgbGlic2RsMi1taXhlciBsaWJzZGwyLW5ldCBcCiAgICAgbGlic2RsLWdmeCBsaWJzZGwtaW1hZ2UgbGlic2RsLW1peGVyIGxpYnNkbC1uZXQgbGlic2RsLXR0ZiBcCiAgICAgbGlidm5jc2VydmVyIGxpYnl1aSBsaWJ5dWktbmN1cnNlcyBseGRtIG51bWxvY2t4IG9wZW5ib3ggb3BlbmpwZWcgXApAQCAtMTg3LDE1ICsxODksMjMgQEAKICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIm9wZW5nbCIsICJmcmVlZ2x1dCBsaWJzZGwyLXR0ZiIsICIiLCBkKX0gXAogICAgICIKIAorCisKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWtlcm5lbCA9IlwKICAgICBhZ2VudC1wcm94eSBicm9hZGNvbS1idC1maXJtd2FyZSBjcHVwb3dlciBcCiAgICAgY3Jhc2ggaXBtaXRvb2wgbWluaWNvcmVkdW1wZXIgb3Byb2ZpbGUgXAogICAgICIKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWtlcm5lbF9hcHBlbmRfeDg2ID0gIiBwbS1ncmFwaCAiCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1rZXJuZWxfYXBwZW5kX3g4Ni02NCA9ICIgcG0tZ3JhcGggIgorCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1rZXJuZWxfcmVtb3ZlX2xpYmMtbXVzbCA9ICJjcmFzaCBtaW5pY29yZWR1bXBlciIKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2Uta2VybmVsX3JlbW92ZV9taXBzNjQgPSAiY3Jhc2giCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1rZXJuZWxfcmVtb3ZlX21pcHM2NGVsID0gImNyYXNoIgogCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1rZXJuZWxfcmVtb3ZlX3Jpc2N2NjQgPSAiY3Jhc2ggb3Byb2ZpbGUiCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1rZXJuZWxfcmVtb3ZlX3Jpc2N2MzIgPSAiY3Jhc2ggb3Byb2ZpbGUiCisKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLW11bHRpbWVkaWEgPSJcCiAgICAgYWxzYS1vc3MgYXVkaW9maWxlIGNkcmtpdCBpZDNsaWIgXAogICAgIGEyam1pZGlkIGphY2sgbGliYXNzIGxpYmJ1cm4gbGliY2RpbyBsaWJjZGlvLXBhcmFub2lhIFwKQEAgLTIzMCw5ICsyNDAsOSBAQAogTkUxMF9hcm12N3ZlID0gIm5lMTAiCiAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLXN1cHBvcnQgPSJcCi0gICAgYW50aHkgYXNpbyBhdG9wIGF1Z2VhcyBhdnJvLWMgYmR3Z2MgZnJhbWUgZ3JhaWwgXAorICAgIGFudGh5IGFzaW8gYXRvcCBhdWdlYXMgYXZyby1jIGJkd2djIGZyYW1lIGdyYWlsIGMtYXJlcyBcCiAgICAgY2NpZCBjZXJlcy1zb2x2ZXIgY2tlcm1pdCBjcHByZXN0IGN0YXBpLWNvbW1vbiBkYWVtb25pemUgXAotICAgIGRhZW1vbnRvb2xzIGRlYnN1bXMgZGV2bWVtMiBkZnUtdXRpbCBkZnUtdXRpbC1uYXRpdmUgZGlnaXRlbXAgXAorICAgIGRhZW1vbnRvb2xzIGRldm1lbTIgZGZ1LXV0aWwgZGZ1LXV0aWwtbmF0aXZlIGRpZ2l0ZW1wIFwKICAgICBkc3RhdCBlamVjdCBlbmNhIGVwZWcgZXNwZWFrIGZic2V0IGZic2V0LW1vZGVzIFwKICAgICBmZnR3IGZsdGstbmF0aXZlIGdkIGdmbGFncyBnbG9nIGdudWxpYiBncGVyZnRvb2xzIFwKICAgICBncG0gZ3JhZG0gZ3NsIGdzb2FwIGhkZHRlbXAgaGlkYXBpIGh0b3AgaHVuc3BlbGwgaHdkYXRhIGlrc2VtZWwgXApAQCAtMjQxLDE4ICsyNTEsMTggQEAKICAgICBsaWJncGlvZCBsaWJpaW8gbGlianMtanF1ZXJ5IGxpYmpzLXNpenpsZSBsaWJsaW5lYnJlYWsgbGlibWljcm9odHRwZCBcCiAgICAgbGlibXhtbCBsaWJvYXV0aCBsaWJvbCBsaWJvb3AgbGlicDExIGxpYnJhdzEzOTQgbGlic21pIGxpYnNvYyBsaWJzc2gyIFwKICAgICBsaWJzc2ggbGlidGFyIGxpYnRlYW0gbGlidGlueXhtbDIgbGlidGlueXhtbCBsaWJ1c2JnIGxpYnVzYi1jb21wYXQgbGlidXRlbXB0ZXIgXAotICAgIGxpbmtzIGxpby11dGlscyBsb2NrZGV2IGxvZzRjIGxvZzRjcHAgbG9nd2FybiBsaWJkZXZtYXBwZXIgbHZtMiBcCisgICAgbGlua3MgbG9ja2RldiBsb2c0YyBsb2c0Y3BwIGxvZ3dhcm4gbGliZGV2bWFwcGVyIGx2bTIgXAogICAgIG1haWxjYXAgbWJ1ZmZlciBtZyBtaW5pbmkgXAogICAgIG11bHRpcGF0aC10b29scyBuYW5vIG5lb24gbm1vbiBudW1hY3RsIG9uaWcgb3BlbmN0IG9wZW5sZGFwIFwKICAgICBvcGVuc2Mgd2J4bWwyIHA5MTBuZCBwY3NjLWxpdGUgcGljb2NvbSBsaWJvdHIgcGlkZ2luIFwKICAgICBwbmdjaGVjayBwb2NvIHBvcHBsZXIgcG9wcGxlci1kYXRhIHBvcnRhdWRpby12MTkgcHBzLXRvb2xzIFwKLSAgICBwdiBweGFyZWdzIHJhcHRvcjIgcmRmaW5kIHJlYWQtZWRpZCByc25hcHNob3QgczNjMjR4eC1ncGlvIHMzYzY0eHgtZ3BpbyBcCi0gICAgc2pmMjQxMC1saW51eC1uYXRpdmUgc2F0eXIgc2RwYXJtIHB0eS1mb3J3YXJkLW5hdGl2ZSBzZXJpYWwtZm9yd2FyZCBcCi0gICAgc2czLXV0aWxzIHNoYXJ1dGlscyBzbWVtIHNwaXRvb2xzIHNyZWNvcmQgc3NpYXBpIHN0bTMyZmxhc2ggXAorICAgIHB2IHB4YXJlZ3MgcmFwdG9yMiByZGZpbmQgcmVhZC1lZGlkIHJzbmFwc2hvdCBcCisgICAgc2F0eXIgc2RwYXJtIHB0eS1mb3J3YXJkLW5hdGl2ZSBzZXJpYWwtZm9yd2FyZCBcCisgICAgc2czLXV0aWxzIHNoYXJ1dGlscyBzcGl0b29scyBzcmVjb3JkIHNzaWFwaSBzdG0zMmZsYXNoIFwKICAgICBzeXNsb2ctbmcgc3lzdGVtLWNvbmZpZy1rZXlib2FyZCB0YmIgdGhpbi1wcm92aXNpb25pbmctdG9vbHMgdG9reW9jYWJpbmV0IFwKICAgICB0cmVlIHVodWJjdGwgdW5peG9kYmMgdXJpcGFyc2VyIHVzYi1tb2Rlc3dpdGNoIFwKLSAgICB1c2ItbW9kZXN3aXRjaC1kYXRhIHVzYnBhdGggdXRoYXNoIHV0b3VjaC1ldmVtdSB1dG91Y2gtZnJhbWUgXAotICAgIHZpbSB2aW0tdGlueSB3ZWJzb2NrZXRwcCB3bWljb25maWcgeGRlbHRhMyB4ZGctdXNlci1kaXJzIHhtbHN0YXJsZXQgXAorICAgIHVzYi1tb2Rlc3dpdGNoLWRhdGEgdXRoYXNoIHV0b3VjaC1ldmVtdSB1dG91Y2gtZnJhbWUgXAorICAgIHZpbSB2aW0tdGlueSB3ZWJzb2NrZXRwcCB4ZGVsdGEzIHhkZy11c2VyLWRpcnMgeG1sc3RhcmxldCBcCiAgICAgemJhciB6aWxlIFwKICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSIsICJnZWlzIHRvc2NvdGVybSB1aW0gc3luZXJneSB1dG91Y2gtbXR2aWV3IGxpbmtzLXgxMSBmbHRrIHBpZGdpbi1vdHIiLCAiIiwgZCl9IFwKICAgICBsaWJjYW5iZXJyYSBcCkBAIC0yNjAsMTIgKzI3MCwxMyBAQAogICAgIHByb2NtYWlsIFwKICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInBvbGtpdCIsICJ1ZGlza3MyIHVwb3dlciIsICIiLCBkKX0gXAogICAgICR7TkUxMH0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJCQkZJTEVfQ09MTEVDVElPTlMiLCAibWV0YS1weXRob24yIiwgImxpby11dGlscyIsICIiLCBkKX0gXAogICAgICIKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2Utc3VwcG9ydF9yZW1vdmVfYXJtID0ibnVtYWN0bCIKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLXN1cHBvcnRfcmVtb3ZlX21pcHNhcmNoID0gImdwZXJmdG9vbHMiCi1SREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1zdXBwb3J0X3JlbW92ZV9yaXNjdjY0ID0gInVpbSIKLVJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLXN1cHBvcnRfcmVtb3ZlX3Jpc2N2MzIgPSAidWltIgorUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2Utc3VwcG9ydF9yZW1vdmVfcmlzY3Y2NCA9ICJncGVyZnRvb2xzIHVpbSIKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLXN1cHBvcnRfcmVtb3ZlX3Jpc2N2MzIgPSAiZ3BlcmZ0b29scyB1aW0iCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1zdXBwb3J0X3JlbW92ZV9wb3dlcnBjID0gInNzaWFwaSIKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2Utc3VwcG9ydC1lZ2wgPSJcCkBAIC0yOTYsNiArMzA3LDkgQEAKICAgICBsaWJlZS1wdGVzdCBcCiAgICAgcG9jby1wdGVzdCBcCiAgICAgIgorUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtcHRlc3QtcGFja2FnZXNfcmVtb3ZlX3Jpc2N2NjQgPSAib3Byb2ZpbGUtcHRlc3QiCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1wdGVzdC1wYWNrYWdlc19yZW1vdmVfcmlzY3YzMiA9ICJvcHJvZmlsZS1wdGVzdCIKKwogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtcHRlc3QtcGFja2FnZXNfYXBwZW5kX3g4NiA9ICJcCiAgICAgbWNlbG9nLXB0ZXN0IFwKICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BseW1vdXRoL3BseW1vdXRoXzAuOS40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGx5bW91dGgvcGx5bW91dGhfMC45LjQuYmIKaW5kZXggMzA1OTc3ZS4uOGI3MWMyYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGx5bW91dGgvcGx5bW91dGhfMC45LjQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGx5bW91dGgvcGx5bW91dGhfMC45LjQuYmIKQEAgLTI2LDcgKzI2LDggQEAKIAogRVhUUkFfT0VDT05GICs9ICIgLS1lbmFibGUtc2hhcmVkIC0tZGlzYWJsZS1zdGF0aWMgLS1kaXNhYmxlLWd0ayAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiBcCiAgICAgLS13aXRoLWxvZ289JHtMT0dPfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0tZW5hYmxlLXN5c3RlbWQtaW50ZWdyYXRpb24gLS13aXRoLXN5c3RlbS1yb290LWluc3RhbGwgLS13aXRoLXN5c3RlbWQtdHR5LWFzay1wYXNzd29yZC1hZ2VudD0ke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLXR0eS1hc2stcGFzc3dvcmQtYWdlbnQnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS1lbmFibGUtc3lzdGVtZC1pbnRlZ3JhdGlvbiAtLXdpdGgtc3lzdGVtZC10dHktYXNrLXBhc3N3b3JkLWFnZW50PSR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtdHR5LWFzay1wYXNzd29yZC1hZ2VudCcsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndXNybWVyZ2UnLCctLXdpdGhvdXQtc3lzdGVtLXJvb3QtaW5zdGFsbCcsJy0td2l0aC1zeXN0ZW0tcm9vdC1pbnN0YWxsJyxkKX0gXAogIgogCiBQQUNLQUdFQ09ORklHID8/PSAicGFuZ28gaW5pdHJkIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvc2FmZWMvc2FmZWNfMy41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvc2FmZWMvc2FmZWNfMy41LmJiCmluZGV4IGM5YWNlM2IuLjk0Y2RiM2EgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3NhZmVjL3NhZmVjXzMuNS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9zYWZlYy9zYWZlY18zLjUuYmIKQEAgLTE0LDYgKzE0LDEwIEBACiAKIENQUEZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1EX0dOVV9TT1VSQ0UiCiAKLUNPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0fGkuODZ8cG93ZXJwY3xwb3dlcnBjNjR8YXJtKS4qLWxpbnV4JworQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjR8aS44Nnxwb3dlcnBjfHBvd2VycGM2NHxhcm18YWFyY2g2NCkuKi1saW51eCcKIAotUkRFUEVORFNfJHtQTn0gPSAicGVybCIKK1BBQ0tBR0VTID0rICIke1BOfS1jaGVjayIKKworRklMRVNfJHtQTn0tY2hlY2sgKz0gIiR7YmluZGlyfS9jaGVja19mb3JfdW5zYWZlX2FwaXMiCisKK1JERVBFTkRTXyR7UE59LWNoZWNrICs9ICJwZXJsIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvc2RidXMtYysrL3NkYnVzLWMrKy0wLjcuNi9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9zZGJ1cy1jKysvc2RidXMtYysrLTAuOC4xL3J1bi1wdGVzdApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvc2RidXMtYysrL3NkYnVzLWMrKy0wLjcuNi9ydW4tcHRlc3QKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3NkYnVzLWMrKy9zZGJ1cy1jKystMC44LjEvcnVuLXB0ZXN0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9zZGJ1cy1jKysvc2RidXMtYysrLXRvb2xzLW5hdGl2ZV8wLjcuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3NkYnVzLWMrKy9zZGJ1cy1jKystdG9vbHMtbmF0aXZlXzAuNy42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDkyYzIzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3NkYnVzLWMrKy9zZGJ1cy1jKystdG9vbHMtbmF0aXZlXzAuNy42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJzZGJ1cy1jKysgbmF0aXZlIHRvb2xzIgotREVTQ1JJUFRJT04gPSAiTmF0aXZlIGludGVyZmFjZSBjb2RlIGdlbmVyYXRvciBmb3IgZGV2ZWxvcG1lbnQgd2l0aCBzZGJ1cy1jKysiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1N9L0NPUFlJTkc7bWQ1PTE4MDNmYTljMmMzY2U4Y2IwNmI0ODYxZDc1MzEwNzQyIgotCi1pbmhlcml0IGNtYWtlIG5hdGl2ZQotCi1ERVBFTkRTICs9ICJleHBhdCIKLQotU1JDUkVWID0gIjUxMjFkNDZlZWQ0MjIzMTI4NWMxOGQzMTdhOWY0OGUwYjI4NDlkNWUiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vS2lzdGxlci1Hcm91cC9zZGJ1cy1jcHAuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD1tYXN0ZXI7c3VicGF0aD10b29scyIKLQotUyA9ICIke1dPUktESVJ9L3Rvb2xzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvc2RidXMtYysrL3NkYnVzLWMrKy10b29sc18wLjguMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3NkYnVzLWMrKy9zZGJ1cy1jKystdG9vbHNfMC44LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVhZWMwZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3NkYnVzLWMrKy9zZGJ1cy1jKystdG9vbHNfMC44LjEuYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJzZGJ1cy1jKysgbmF0aXZlIHRvb2xzIgorREVTQ1JJUFRJT04gPSAiTmF0aXZlIGludGVyZmFjZSBjb2RlIGdlbmVyYXRvciBmb3IgZGV2ZWxvcG1lbnQgd2l0aCBzZGJ1cy1jKysiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1N9L0NPUFlJTkc7bWQ1PTE4MDNmYTljMmMzY2U4Y2IwNmI0ODYxZDc1MzEwNzQyIgorCitpbmhlcml0IGNtYWtlCisKK0RFUEVORFMgKz0gImV4cGF0IgorCitTUkNSRVYgPSAiM2E0ZjM0M2ZiOTI0NjUwZTc2Mzk2NjBlZmE1ZjE0Mzk2MTE2MjA0NCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9LaXN0bGVyLUdyb3VwL3NkYnVzLWNwcC5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPW1hc3RlcjtzdWJwYXRoPXRvb2xzIgorCitTID0gIiR7V09SS0RJUn0vdG9vbHMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3NkYnVzLWMrKy9zZGJ1cy1jKytfMC43LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9zZGJ1cy1jKysvc2RidXMtYysrXzAuNy42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Nzc3NGNiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3NkYnVzLWMrKy9zZGJ1cy1jKytfMC43LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TVU1NQVJZID0gInNkYnVzLWMrKyIKLURFU0NSSVBUSU9OID0gIkhpZ2gtbGV2ZWwgQysrIEQtQnVzIGxpYnJhcnkgZGVzaWduZWQgdG8gcHJvdmlkZSBlYXN5LXRvLXVzZSB5ZXQgcG93ZXJmdWwgQVBJIGluIG1vZGVybiBDKysiCi0KLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE4MDNmYTljMmMzY2U4Y2IwNmI0ODYxZDc1MzEwNzQyIgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBzeXN0ZW1kIHB0ZXN0Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnd2l0aC1leHRlcm5hbC1saWJzeXN0ZW1kJywgJ3dpdGgtYnVpbHRpbi1saWJzeXN0ZW1kJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJ3dpdGgtdGVzdHMnLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR1t3aXRoLWJ1aWx0aW4tbGlic3lzdGVtZF0gPSAiLCxzZGJ1cy1jKystbGlic3lzdGVtZCxsaWJjYXAiCi1QQUNLQUdFQ09ORklHW3dpdGgtZXh0ZXJuYWwtbGlic3lzdGVtZF0gPSAiLCxzeXN0ZW1kLGxpYnN5c3RlbWQiCi1QQUNLQUdFQ09ORklHW3dpdGgtdGVzdHNdID0gIi1EQlVJTERfVEVTVFM9T04gLURURVNUU19JTlNUQUxMX1BBVEg9JHtsaWJkaXJ9LyR7QlBOfS90ZXN0cywtREJVSUxEX1RFU1RTPU9GRiIKLQotREVQRU5EUyArPSAiZXhwYXQiCi0KLVNSQ1JFViA9ICI1MTIxZDQ2ZWVkNDIyMzEyODVjMThkMzE3YTlmNDhlMGIyODQ5ZDVlIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0tpc3RsZXItR3JvdXAvc2RidXMtY3BwLmdpdDtwcm90b2NvbD1odHRwczticmFuY2g9bWFzdGVyIgotU1JDX1VSSSArPSAiZmlsZTovL3J1bi1wdGVzdCIKLQotRVhUUkFfT0VDTUFLRSA9ICItREJVSUxEX0NPREVfR0VOPU9OIFwKLSAgICAgICAgICAgICAgICAgLURCVUlMRF9ET0M9T04gXAotICAgICAgICAgICAgICAgICAtREJVSUxEX0RPWFlHRU5fRE9DPU9GRiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRklMRVNfJHtQTn1fcmVtb3ZlID0gIiR7c3lzY29uZmRpcn0iCi1GSUxFU18ke1BOfS1wdGVzdCArPSAiJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmQvIgotRklMRVNfJHtQTn0tcHRlc3QgKz0gIiR7bGliZGlyfS8ke0JQTn0vdGVzdHMiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9zZGJ1cy1jKysteG1sMmNwcCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3NkYnVzLWMrKy9zZGJ1cy1jKytfMC44LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9zZGJ1cy1jKysvc2RidXMtYysrXzAuOC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ZDYzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9zZGJ1cy1jKysvc2RidXMtYysrXzAuOC4xLmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAic2RidXMtYysrIgorREVTQ1JJUFRJT04gPSAiSGlnaC1sZXZlbCBDKysgRC1CdXMgbGlicmFyeSBkZXNpZ25lZCB0byBwcm92aWRlIGVhc3ktdG8tdXNlIHlldCBwb3dlcmZ1bCBBUEkgaW4gbW9kZXJuIEMrKyIKKworU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTgwM2ZhOWMyYzNjZThjYjA2YjQ4NjFkNzUzMTA3NDIiCisKK2luaGVyaXQgY21ha2UgcGtnY29uZmlnIHN5c3RlbWQgcHRlc3QKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd3aXRoLWV4dGVybmFsLWxpYnN5c3RlbWQnLCAnd2l0aC1idWlsdGluLWxpYnN5c3RlbWQnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnd2l0aC10ZXN0cycsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW3dpdGgtYnVpbHRpbi1saWJzeXN0ZW1kXSA9ICIsLHNkYnVzLWMrKy1saWJzeXN0ZW1kLGxpYmNhcCIKK1BBQ0tBR0VDT05GSUdbd2l0aC1leHRlcm5hbC1saWJzeXN0ZW1kXSA9ICIsLHN5c3RlbWQsbGlic3lzdGVtZCIKK1BBQ0tBR0VDT05GSUdbd2l0aC10ZXN0c10gPSAiLURCVUlMRF9URVNUUz1PTiAtRFRFU1RTX0lOU1RBTExfUEFUSD0ke2xpYmRpcn0vJHtCUE59L3Rlc3RzLC1EQlVJTERfVEVTVFM9T0ZGIgorCitERVBFTkRTICs9ICJleHBhdCIKKworU1JDUkVWID0gIjNhNGYzNDNmYjkyNDY1MGU3NjM5NjYwZWZhNWYxNDM5NjExNjIwNDQiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vS2lzdGxlci1Hcm91cC9zZGJ1cy1jcHAuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD1tYXN0ZXIiCitTUkNfVVJJICs9ICJmaWxlOi8vcnVuLXB0ZXN0IgorCitFWFRSQV9PRUNNQUtFID0gIi1EQlVJTERfQ09ERV9HRU49T04gXAorICAgICAgICAgICAgICAgICAtREJVSUxEX0RPQz1PTiBcCisgICAgICAgICAgICAgICAgIC1EQlVJTERfRE9YWUdFTl9ET0M9T0ZGIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitGSUxFU18ke1BOfV9yZW1vdmUgPSAiJHtzeXNjb25mZGlyfSIKK0ZJTEVTXyR7UE59LXB0ZXN0ICs9ICIke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC8iCitGSUxFU18ke1BOfS1wdGVzdCArPSAiJHtsaWJkaXJ9LyR7QlBOfS90ZXN0cyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L3NkYnVzLWMrKy14bWwyY3BwIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9ib3Rhbi9ib3Rhbl8yLjEzLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL2JvdGFuL2JvdGFuXzIuMTMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg1NGJkNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL2JvdGFuL2JvdGFuXzIuMTMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLVNVTU1BUlkgPSAiQ3J5cHRvIGFuZCBUTFMgZm9yIEMrKzExIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9ib3Rhbi5yYW5kb21iaXQubmV0IgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9saWNlbnNlLnR4dDttZDU9YTAyZTAzYzhmYTJjNWU3YjliM2ZjYzFiOTgxMWZkM2IiCi1TRUNUSU9OID0gImxpYnMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9ib3Rhbi5yYW5kb21iaXQubmV0L3JlbGVhc2VzL0JvdGFuLSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5ZjkwYzdkNTIzNzc4YmU1ZjIzZjNjZTc5MDQ2YmEzNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNTdhZTQyYTQxZTEwOTFiY2E1OGY0NGY0MWFkZGViZDlhMzkwYjY1MTYwMzk1MmM4ODFlYzg5ZDUwMTg3ZTkwIgotCi1TID0gIiR7V09SS0RJUn0vQm90YW4tJHtQVn0iCi0KLWluaGVyaXQgcHl0aG9uM25hdGl2ZSBzaXRlaW5mbyBsaWJfcGFja2FnZQotCi1DUFUgPz0gIiR7VEFSR0VUX0FSQ0h9IgotQ1BVX3g4NiA9ICJ4ODZfMzIiCi1DUFVfYXJtdjdhID0gImFybXY3IgotQ1BVX2FybXY3dmUgPSAiYXJtdjciCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLQlweXRob24zICR7U30vY29uZmlndXJlLnB5IFwKLQktLXByZWZpeD0iJHtEfSR7cHJlZml4fSIgXAotCS0tY3B1PSIke0NQVX0iIFwKLQktLWNjLWJpbj0iJHtDWFh9IiBcCi0JLS1jeHhmbGFncz0iJHtDWFhGTEFHU30iIFwKLQktLWxkZmxhZ3M9IiR7TERGTEFHU30iIFwKLQktLXdpdGgtZW5kaWFuPSR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJ2xpdHRsZScsICdiaWcnLCBkKX0gXAotCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwibmVvbiIsIiIsIi0tZGlzYWJsZS1uZW9uIixkKX0gXAotCS0td2l0aC1zeXNyb290LWRpcj0ke1NUQUdJTkdfRElSX1RBUkdFVH0gXAotCS0td2l0aC1idWlsZC1kaXI9IiR7Qn0iIFwKLQktLW9wdGltaXplLWZvci1zaXplIFwKLQktLXdpdGgtc3RhY2stcHJvdGVjdG9yIFwKLQktLWVuYWJsZS1zaGFyZWQtbGlicmFyeSBcCi0JLS13aXRoLXB5dGhvbi12ZXJzaW9ucz0zIFwKLQkke0VYVFJBX09FQ09ORn0KLX0KLQotZG9fY29tcGlsZSgpIHsKLQlvZV9ydW5tYWtlCi19Ci1kb19pbnN0YWxsKCkgewotCW9lX3J1bm1ha2UgaW5zdGFsbAotCXNlZCAtaSAtZSAic3wke0R9fHxnIiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9ib3Rhbi0yLnBjCi19Ci0KLVBBQ0tBR0VTICs9ICIke1BOfS1weXRob24zIgotCi1GSUxFU18ke1BOfS1weXRob24zID0gIiR7bGliZGlyfS9weXRob24zIgotCi1SREVQRU5EU18ke1BOfS1weXRob24zICs9ICJweXRob24zIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9ib3Rhbi9ib3Rhbl8yLjE0LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL2JvdGFuL2JvdGFuXzIuMTQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MmU4OWY2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9ib3Rhbi9ib3Rhbl8yLjE0LjAuYmIKQEAgLTAsMCArMSw1MSBAQAorU1VNTUFSWSA9ICJDcnlwdG8gYW5kIFRMUyBmb3IgQysrMTEiCitIT01FUEFHRSA9ICJodHRwczovL2JvdGFuLnJhbmRvbWJpdC5uZXQiCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xpY2Vuc2UudHh0O21kNT1hMDJlMDNjOGZhMmM1ZTdiOWIzZmNjMWI5ODExZmQzYiIKK1NFQ1RJT04gPSAibGlicyIKKworU1JDX1VSSSA9ICJodHRwczovL2JvdGFuLnJhbmRvbWJpdC5uZXQvcmVsZWFzZXMvQm90YW4tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImViYzY4YzA4Yjk5YmJjNGI0ZmM5YmRiZmFkMzk4YjAyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBjMTBmMTJiNDI0YTQwZWUxOWJkZTAwMjkyMDk4ZTIwMWQ3NDk4NTM1YzA2MmQ4ZDViNTg2ZDA3ODYxYTU0YjUiCisKK1MgPSAiJHtXT1JLRElSfS9Cb3Rhbi0ke1BWfSIKKworaW5oZXJpdCBweXRob24zbmF0aXZlIHNpdGVpbmZvIGxpYl9wYWNrYWdlCisKK0NQVSA/PSAiJHtUQVJHRVRfQVJDSH0iCitDUFVfeDg2ID0gIng4Nl8zMiIKK0NQVV9hcm12N2EgPSAiYXJtdjciCitDUFVfYXJtdjd2ZSA9ICJhcm12NyIKKworZG9fY29uZmlndXJlKCkgeworCXB5dGhvbjMgJHtTfS9jb25maWd1cmUucHkgXAorCS0tcHJlZml4PSIke0R9JHtleGVjX3ByZWZpeH0iIFwKKwktLWxpYmRpcj0iJHtEfSR7bGliZGlyfSIgXAorCS0tY3B1PSIke0NQVX0iIFwKKwktLWNjLWJpbj0iJHtDWFh9IiBcCisJLS1jeHhmbGFncz0iJHtDWFhGTEFHU30iIFwKKwktLWxkZmxhZ3M9IiR7TERGTEFHU30iIFwKKwktLXdpdGgtZW5kaWFuPSR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJ2xpdHRsZScsICdiaWcnLCBkKX0gXAorCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwibmVvbiIsIiIsIi0tZGlzYWJsZS1uZW9uIixkKX0gXAorCS0td2l0aC1zeXNyb290LWRpcj0ke1NUQUdJTkdfRElSX0hPU1R9IFwKKwktLXdpdGgtYnVpbGQtZGlyPSIke0J9IiBcCisJLS1vcHRpbWl6ZS1mb3Itc2l6ZSBcCisJLS13aXRoLXN0YWNrLXByb3RlY3RvciBcCisJLS1lbmFibGUtc2hhcmVkLWxpYnJhcnkgXAorCS0td2l0aC1weXRob24tdmVyc2lvbnM9MyBcCisJJHtFWFRSQV9PRUNPTkZ9Cit9CisKK2RvX2NvbXBpbGUoKSB7CisJb2VfcnVubWFrZQorfQorZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIGluc3RhbGwKKwlzZWQgLWkgLWUgInN8JHtEfXx8ZyIgJHtEfSR7bGliZGlyfS9wa2djb25maWcvYm90YW4tMi5wYworfQorCitQQUNLQUdFUyArPSAiJHtQTn0tcHl0aG9uMyIKKworRklMRVNfJHtQTn0tcHl0aG9uMyA9ICIke2xpYmRpcn0vcHl0aG9uMyIKKworUkRFUEVORFNfJHtQTn0tcHl0aG9uMyArPSAicHl0aG9uMyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jcnlwdG8vY3J5cHRzZXR1cC9jcnlwdHNldHVwXzIuMi4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9jcnlwdHNldHVwL2NyeXB0c2V0dXBfMi4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3OWI5ZWIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9jcnlwdHNldHVwL2NyeXB0c2V0dXBfMi4yLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi1TVU1NQVJZID0gIk1hbmFnZSBwbGFpbiBkbS1jcnlwdCBhbmQgTFVLUyBlbmNyeXB0ZWQgdm9sdW1lcyIKLURFU0NSSVBUSU9OID0gIkNyeXB0c2V0dXAgaXMgdXNlZCB0byBjb252ZW5pZW50bHkgc2V0dXAgZG0tY3J5cHQgbWFuYWdlZCBcCi1kZXZpY2UtbWFwcGVyIG1hcHBpbmdzLiBUaGVzZSBpbmNsdWRlIHBsYWluIGRtLWNyeXB0IHZvbHVtZXMgYW5kIFwKLUxVS1Mgdm9sdW1lcy4gVGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBMVUtTIHVzZXMgYSBtZXRhZGF0YSBoZWFkZXIgXAotYW5kIGNhbiBoZW5jZSBvZmZlciBtb3JlIGZlYXR1cmVzIHRoYW4gcGxhaW4gZG0tY3J5cHQuIE9uIHRoZSBvdGhlciBcCi1oYW5kLCB0aGUgaGVhZGVyIGlzIHZpc2libGUgYW5kIHZ1bG5lcmFibGUgdG8gZGFtYWdlLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0bGFiLmNvbS9jcnlwdHNldHVwL2NyeXB0c2V0dXAiCi1TRUNUSU9OID0gImNvbnNvbGUiCi1MSUNFTlNFID0gIkdQTC0yLjAtd2l0aC1PcGVuU1NMLWV4Y2VwdGlvbiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTMyMTA3ZGQyODNiMWRmZWI2NmM5YjNlNmJlMzEyMzI2IgotCi1ERVBFTkRTID0gIiBcCi0gICAganNvbi1jIFwKLSAgICBsaWJkZXZtYXBwZXIgXAotICAgIHBvcHQgXAotICAgIHV0aWwtbGludXggXAotIgotCi1SREVQRU5EU18ke1BOfSA9ICIgXAotICAgIGxpYmRldm1hcHBlciBcCi0iCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy8ke0JQTn0vdiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19LyR7QlB9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyYjY0Y2E5ZWExNmU4MjNkZjM1OWVhY2Y5YzAyNDE0YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYWYwZWM5NTUxYWI5Yzg3MDA3NGNhZTlkM2Y2OGQ4MmNhYjAwNGY0MDk1ZmE4OWRiMGU0NDEzNzEzNDI0YTQ2IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi0jIFVzZSBvcGVuc3NsIGJlY2F1c2UgbGliZ2NyeXB0IGRyb3BzIHJvb3QgcHJpdmlsZWdlcwotIyBpZiBsaWJnY3J5cHQgaXMgbGlua2VkIHdpdGggbGliY2FwIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUcgPz89ICIgXAotICAgIGtleXJpbmcgXAotICAgIGNyeXB0c2V0dXAgXAotICAgIHZlcml0eXNldHVwIFwKLSAgICBjcnlwdHNldHVwLXJlZW5jcnlwdCBcCi0gICAgaW50ZWdyaXR5c2V0dXAgXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3NlbGludXgnLCBkKX0gXAotICAgIGtlcm5lbF9jcnlwdG8gXAotICAgIGludGVybmFsLWFyZ29uMiBcCi0gICAgYmxraWQgXAotICAgIGx1a3MtYWRqdXN0LXh0cy1rZXlzaXplIFwKLSAgICBvcGVuc3NsIFwKLSIKLVBBQ0tBR0VDT05GSUdfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAotICAgIHVkZXYgXAotIgotCi1QQUNLQUdFQ09ORklHW2tleXJpbmddID0gIi0tZW5hYmxlLWtleXJpbmcsLS1kaXNhYmxlLWtleXJpbmciCi1QQUNLQUdFQ09ORklHW2ZpcHNdID0gIi0tZW5hYmxlLWZpcHMsLS1kaXNhYmxlLWZpcHMiCi1QQUNLQUdFQ09ORklHW3B3cXVhbGl0eV0gPSAiLS1lbmFibGUtcHdxdWFsaXR5LC0tZGlzYWJsZS1wd3F1YWxpdHksbGlicHdxdWFsaXR5IgotUEFDS0FHRUNPTkZJR1twYXNzd2RxY10gPSAiLS1lbmFibGUtcGFzc3dkcWMsLS1kaXNhYmxlLXBhc3N3ZHFjLHBhc3N3ZHFjIgotUEFDS0FHRUNPTkZJR1tjcnlwdHNldHVwXSA9ICItLWVuYWJsZS1jcnlwdHNldHVwLC0tZGlzYWJsZS1jcnlwdHNldHVwIgotUEFDS0FHRUNPTkZJR1t2ZXJpdHlzZXR1cF0gPSAiLS1lbmFibGUtdmVyaXR5c2V0dXAsLS1kaXNhYmxlLXZlcml0eXNldHVwIgotUEFDS0FHRUNPTkZJR1tjcnlwdHNldHVwLXJlZW5jcnlwdF0gPSAiLS1lbmFibGUtY3J5cHRzZXR1cC1yZWVuY3J5cHQsLS1kaXNhYmxlLWNyeXB0c2V0dXAtcmVlbmNyeXB0IgotUEFDS0FHRUNPTkZJR1tpbnRlZ3JpdHlzZXR1cF0gPSAiLS1lbmFibGUtaW50ZWdyaXR5c2V0dXAsLS1kaXNhYmxlLWludGVncml0eXNldHVwIgotUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItLWVuYWJsZS1zZWxpbnV4LC0tZGlzYWJsZS1zZWxpbnV4IgotUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLWVuYWJsZS11ZGV2LC0tZGlzYWJsZS11ZGV2LCx1ZGV2IgotUEFDS0FHRUNPTkZJR1trZXJuZWxfY3J5cHRvXSA9ICItLWVuYWJsZS1rZXJuZWxfY3J5cHRvLC0tZGlzYWJsZS1rZXJuZWxfY3J5cHRvIgotIyBnY3J5cHQtcGtiZGYyIHJlcXVyaWVzIC0td2l0aC1jcnlwdG9fYmFja2VuZD1nY3J5cHQgb3IgdGhlIGZsYWcgaXNuJ3QKLSMgcmVjb2duaXplZC4KLVBBQ0tBR0VDT05GSUdbZ2NyeXB0LXBia2RmMl0gPSAiLS1lbmFibGUtZ2NyeXB0LXBia2RmMiIKLVBBQ0tBR0VDT05GSUdbaW50ZXJuYWwtYXJnb24yXSA9ICItLWVuYWJsZS1pbnRlcm5hbC1hcmdvbjIsLS1kaXNhYmxlLWludGVybmFsLWFyZ29uMiIKLVBBQ0tBR0VDT05GSUdbaW50ZXJuYWwtc3NlLWFyZ29uMl0gPSAiLS1lbmFibGUtaW50ZXJuYWwtc3NlLWFyZ29uMiwtLWRpc2FibGUtaW50ZXJuYWwtc3NlLWFyZ29uMiIKLVBBQ0tBR0VDT05GSUdbYmxraWRdID0gIi0tZW5hYmxlLWJsa2lkLC0tZGlzYWJsZS1ibGtpZCx1dGlsLWxpbnV4IgotUEFDS0FHRUNPTkZJR1tkZXYtcmFuZG9tXSA9ICItLWVuYWJsZS1kZXYtcmFuZG9tLC0tZGlzYWJsZS1kZXYtcmFuZG9tIgotUEFDS0FHRUNPTkZJR1tsdWtzLWFkanVzdC14dHMta2V5c2l6ZV0gPSAiLS1lbmFibGUtbHVrcy1hZGp1c3QteHRzLWtleXNpemUsLS1kaXNhYmxlLWx1a3MtYWRqdXN0LXh0cy1rZXlzaXplIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtY3J5cHRvX2JhY2tlbmQ9b3BlbnNzbCwsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbZ2NyeXB0XSA9ICItLXdpdGgtY3J5cHRvX2JhY2tlbmQ9Z2NyeXB0LCxsaWJnY3J5cHQiCi1QQUNLQUdFQ09ORklHW25zc10gPSAiLS13aXRoLWNyeXB0b19iYWNrZW5kPW5zcywsbnNzIgotUEFDS0FHRUNPTkZJR1trZXJuZWxdID0gIi0td2l0aC1jcnlwdG9fYmFja2VuZD1rZXJuZWwiCi1QQUNLQUdFQ09ORklHW25ldHRsZV0gPSAiLS13aXRoLWNyeXB0b19iYWNrZW5kPW5ldHRsZSwsbmV0dGxlIgotUEFDS0FHRUNPTkZJR1tsdWtzMl0gPSAiLS13aXRoLWRlZmF1bHQtbHVrcy1mb3JtYXQ9TFVLUzIsLS13aXRoLWRlZmF1bHQtbHVrcy1mb3JtYXQ9TFVLUzEiCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtYWVzLWdlbmVyaWMgXAotICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1kbS1jcnlwdCBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLW1kNSBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWNiYyBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLXNoYTI1Ni1nZW5lcmljIFwKLSAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUteHRzIFwKLSIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXN0YXRpYyIKLSMgQnVpbGRpbmcgd2l0aG91dCBsYXJnZWZpbGUgaXMgbm90IHN1cHBvcnRlZCBieSB1cHN0cmVhbQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1sYXJnZWZpbGUiCi0jIFJlcXVpcmVzIGEgc3RhdGljIHBvcHQgbGlicmFyeQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtc3RhdGljLWNyeXB0c2V0dXAiCi0jIFRoZXJlJ3Mgbm8gcmVjaXBlIGZvciBsaWJhcmdvbjIgeWV0Ci1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1saWJhcmdvbjIiCi0KLUZJTEVTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJyR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL2NyeXB0c2V0dXAuY29uZicsICcnLCBkKX0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jcnlwdG8vY3J5cHRzZXR1cC9jcnlwdHNldHVwXzIuMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9jcnlwdHNldHVwL2NyeXB0c2V0dXBfMi4zLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMzNzVmZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jcnlwdG8vY3J5cHRzZXR1cC9jcnlwdHNldHVwXzIuMy4xLmJiCkBAIC0wLDAgKzEsOTIgQEAKK1NVTU1BUlkgPSAiTWFuYWdlIHBsYWluIGRtLWNyeXB0IGFuZCBMVUtTIGVuY3J5cHRlZCB2b2x1bWVzIgorREVTQ1JJUFRJT04gPSAiQ3J5cHRzZXR1cCBpcyB1c2VkIHRvIGNvbnZlbmllbnRseSBzZXR1cCBkbS1jcnlwdCBtYW5hZ2VkIFwKK2RldmljZS1tYXBwZXIgbWFwcGluZ3MuIFRoZXNlIGluY2x1ZGUgcGxhaW4gZG0tY3J5cHQgdm9sdW1lcyBhbmQgXAorTFVLUyB2b2x1bWVzLiBUaGUgZGlmZmVyZW5jZSBpcyB0aGF0IExVS1MgdXNlcyBhIG1ldGFkYXRhIGhlYWRlciBcCithbmQgY2FuIGhlbmNlIG9mZmVyIG1vcmUgZmVhdHVyZXMgdGhhbiBwbGFpbiBkbS1jcnlwdC4gT24gdGhlIG90aGVyIFwKK2hhbmQsIHRoZSBoZWFkZXIgaXMgdmlzaWJsZSBhbmQgdnVsbmVyYWJsZSB0byBkYW1hZ2UuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRsYWIuY29tL2NyeXB0c2V0dXAvY3J5cHRzZXR1cCIKK1NFQ1RJT04gPSAiY29uc29sZSIKK0xJQ0VOU0UgPSAiR1BMLTIuMC13aXRoLU9wZW5TU0wtZXhjZXB0aW9uIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzIxMDdkZDI4M2IxZGZlYjY2YzliM2U2YmUzMTIzMjYiCisKK0RFUEVORFMgPSAiIFwKKyAgICBqc29uLWMgXAorICAgIGxpYmRldm1hcHBlciBcCisgICAgcG9wdCBcCisgICAgdXRpbC1saW51eCBcCisiCisKK1JERVBFTkRTXyR7UE59ID0gIiBcCisgICAgbGliZGV2bWFwcGVyIFwKKyIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzLyR7QlBOfS92JHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswXX0uJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVsxXX0vJHtCUH0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImNlZjQ4MmMwNTc5ZjM0ZDk1MjQzMTFhYzcwYzA4NzVmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkyYWJhNGQ1NTlhMmNmNzA0M2ZhZWQ5MmUwZjIyYzVhZGRlYTM2YmQ2M2Y4YzAzOWJhNWE4ZjNhMTU5ZmU3ZDIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCisKKyMgVXNlIG9wZW5zc2wgYmVjYXVzZSBsaWJnY3J5cHQgZHJvcHMgcm9vdCBwcml2aWxlZ2VzCisjIGlmIGxpYmdjcnlwdCBpcyBsaW5rZWQgd2l0aCBsaWJjYXAgc3VwcG9ydAorUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAga2V5cmluZyBcCisgICAgY3J5cHRzZXR1cCBcCisgICAgdmVyaXR5c2V0dXAgXAorICAgIGNyeXB0c2V0dXAtcmVlbmNyeXB0IFwKKyAgICBpbnRlZ3JpdHlzZXR1cCBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsIGQpfSBcCisgICAga2VybmVsX2NyeXB0byBcCisgICAgaW50ZXJuYWwtYXJnb24yIFwKKyAgICBibGtpZCBcCisgICAgbHVrcy1hZGp1c3QteHRzLWtleXNpemUgXAorICAgIG9wZW5zc2wgXAorIgorUEFDS0FHRUNPTkZJR19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCisgICAgdWRldiBcCisiCisKK1BBQ0tBR0VDT05GSUdba2V5cmluZ10gPSAiLS1lbmFibGUta2V5cmluZywtLWRpc2FibGUta2V5cmluZyIKK1BBQ0tBR0VDT05GSUdbZmlwc10gPSAiLS1lbmFibGUtZmlwcywtLWRpc2FibGUtZmlwcyIKK1BBQ0tBR0VDT05GSUdbcHdxdWFsaXR5XSA9ICItLWVuYWJsZS1wd3F1YWxpdHksLS1kaXNhYmxlLXB3cXVhbGl0eSxsaWJwd3F1YWxpdHkiCitQQUNLQUdFQ09ORklHW3Bhc3N3ZHFjXSA9ICItLWVuYWJsZS1wYXNzd2RxYywtLWRpc2FibGUtcGFzc3dkcWMscGFzc3dkcWMiCitQQUNLQUdFQ09ORklHW2NyeXB0c2V0dXBdID0gIi0tZW5hYmxlLWNyeXB0c2V0dXAsLS1kaXNhYmxlLWNyeXB0c2V0dXAiCitQQUNLQUdFQ09ORklHW3Zlcml0eXNldHVwXSA9ICItLWVuYWJsZS12ZXJpdHlzZXR1cCwtLWRpc2FibGUtdmVyaXR5c2V0dXAiCitQQUNLQUdFQ09ORklHW2NyeXB0c2V0dXAtcmVlbmNyeXB0XSA9ICItLWVuYWJsZS1jcnlwdHNldHVwLXJlZW5jcnlwdCwtLWRpc2FibGUtY3J5cHRzZXR1cC1yZWVuY3J5cHQiCitQQUNLQUdFQ09ORklHW2ludGVncml0eXNldHVwXSA9ICItLWVuYWJsZS1pbnRlZ3JpdHlzZXR1cCwtLWRpc2FibGUtaW50ZWdyaXR5c2V0dXAiCitQQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0tZW5hYmxlLXNlbGludXgsLS1kaXNhYmxlLXNlbGludXgiCitQQUNLQUdFQ09ORklHW3VkZXZdID0gIi0tZW5hYmxlLXVkZXYsLS1kaXNhYmxlLXVkZXYsLHVkZXYiCitQQUNLQUdFQ09ORklHW2tlcm5lbF9jcnlwdG9dID0gIi0tZW5hYmxlLWtlcm5lbF9jcnlwdG8sLS1kaXNhYmxlLWtlcm5lbF9jcnlwdG8iCisjIGdjcnlwdC1wa2JkZjIgcmVxdXJpZXMgLS13aXRoLWNyeXB0b19iYWNrZW5kPWdjcnlwdCBvciB0aGUgZmxhZyBpc24ndAorIyByZWNvZ25pemVkLgorUEFDS0FHRUNPTkZJR1tnY3J5cHQtcGJrZGYyXSA9ICItLWVuYWJsZS1nY3J5cHQtcGJrZGYyIgorUEFDS0FHRUNPTkZJR1tpbnRlcm5hbC1hcmdvbjJdID0gIi0tZW5hYmxlLWludGVybmFsLWFyZ29uMiwtLWRpc2FibGUtaW50ZXJuYWwtYXJnb24yIgorUEFDS0FHRUNPTkZJR1tpbnRlcm5hbC1zc2UtYXJnb24yXSA9ICItLWVuYWJsZS1pbnRlcm5hbC1zc2UtYXJnb24yLC0tZGlzYWJsZS1pbnRlcm5hbC1zc2UtYXJnb24yIgorUEFDS0FHRUNPTkZJR1tibGtpZF0gPSAiLS1lbmFibGUtYmxraWQsLS1kaXNhYmxlLWJsa2lkLHV0aWwtbGludXgiCitQQUNLQUdFQ09ORklHW2Rldi1yYW5kb21dID0gIi0tZW5hYmxlLWRldi1yYW5kb20sLS1kaXNhYmxlLWRldi1yYW5kb20iCitQQUNLQUdFQ09ORklHW2x1a3MtYWRqdXN0LXh0cy1rZXlzaXplXSA9ICItLWVuYWJsZS1sdWtzLWFkanVzdC14dHMta2V5c2l6ZSwtLWRpc2FibGUtbHVrcy1hZGp1c3QteHRzLWtleXNpemUiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1jcnlwdG9fYmFja2VuZD1vcGVuc3NsLCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tnY3J5cHRdID0gIi0td2l0aC1jcnlwdG9fYmFja2VuZD1nY3J5cHQsLGxpYmdjcnlwdCIKK1BBQ0tBR0VDT05GSUdbbnNzXSA9ICItLXdpdGgtY3J5cHRvX2JhY2tlbmQ9bnNzLCxuc3MiCitQQUNLQUdFQ09ORklHW2tlcm5lbF0gPSAiLS13aXRoLWNyeXB0b19iYWNrZW5kPWtlcm5lbCIKK1BBQ0tBR0VDT05GSUdbbmV0dGxlXSA9ICItLXdpdGgtY3J5cHRvX2JhY2tlbmQ9bmV0dGxlLCxuZXR0bGUiCitQQUNLQUdFQ09ORklHW2x1a3MyXSA9ICItLXdpdGgtZGVmYXVsdC1sdWtzLWZvcm1hdD1MVUtTMiwtLXdpdGgtZGVmYXVsdC1sdWtzLWZvcm1hdD1MVUtTMSIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1hZXMtZ2VuZXJpYyBcCisgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWRtLWNyeXB0IFwKKyAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtbWQ1IFwKKyAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtY2JjIFwKKyAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtc2hhMjU2LWdlbmVyaWMgXAorICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS14dHMgXAorIgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc3RhdGljIgorIyBCdWlsZGluZyB3aXRob3V0IGxhcmdlZmlsZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHVwc3RyZWFtCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWxhcmdlZmlsZSIKKyMgUmVxdWlyZXMgYSBzdGF0aWMgcG9wdCBsaWJyYXJ5CitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1zdGF0aWMtY3J5cHRzZXR1cCIKKyMgVGhlcmUncyBubyByZWNpcGUgZm9yIGxpYmFyZ29uMiB5ZXQKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWxpYmFyZ29uMiIKKworRklMRVNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnJHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvY3J5cHRzZXR1cC5jb25mJywgJycsIGQpfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9wa2NzMTEtaGVscGVyL3BrY3MxMS1oZWxwZXJfMS4yNS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9wa2NzMTEtaGVscGVyL3BrY3MxMS1oZWxwZXJfMS4yNS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzFmMmVhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jcnlwdG8vcGtjczExLWhlbHBlci9wa2NzMTEtaGVscGVyXzEuMjUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciB1c2luZyBQS0NTIgotREVTQ1JJUFRJT04gPSAicGtjczExLWhlbHBlciBpcyBhIGxpYnJhcnkgdGhhdCBzaW1wbGlmaWVzIHRoZSBpbnRlcmFjdGlvbiB3aXRoIFBLQ1MgXAotcHJvdmlkZXJzIGZvciBlbmQtdXNlciBhcHBsaWNhdGlvbnMgdXNpbmcgYSBzaW1wbGUgQVBJIGFuZCBvcHRpb25hbCBPcGVuU1NMIFwKLWVuZ2luZS4gVGhlIGxpYnJhcnkgYWxsb3dzIHVzaW5nIG11bHRpcGxlIFBLQ1MgZW51bWVyYXRpbmcgYXZhaWxhYmxlIHRva2VuIFwKLWNlcnRpZmljYXRlcywgb3Igc2VsZWN0aW5nIGEgY2VydGlmaWNhdGUgZGlyZWN0bHkgYnkgc2VyaWFsaXplZCBpZCwgaGFuZGxpbmcgXAotY2FyZCByZW1vdmFsIGFuZCBjYXJkIGluc2VydCBldmVudHMsIGhhbmRsaW5nIGNhcmQgaWUtaW5zZXJ0IHRvIGEgZGlmZmVyZW50IFwKLXNsb3QsIHN1cHBvcnRpbmcgc2Vzc2lvbiBleHBpcmF0aW9uIGFuZCBtdWNoIG1vcmUgYWxsIHVzaW5nIGEgc2ltcGxlIEFQSS4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNjLXByb2plY3Qub3JnL3BrY3MxMS1oZWxwZXIvIgotU0VDVElPTiA9ICJEZXZlbG9wbWVudC9MaWJyYXJpZXMiCi0KLUxJQ0VOU0UgPSAiR1BMdjIgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gIiBcCi0gICAgZmlsZTovL0NPUFlJTkc7bWQ1PTMwZjEwZDIyY2ZiMWJhOThjY2Q3MTRhNDFhZDMzMTFhIFwKLSAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PThhNzFkMDQ3NWQwOGVlZTc2ZDhiNmQwYzZkYmVjNTQzIFwKLSAgICBmaWxlOi8vQ09QWUlORy5CU0Q7bWQ1PTY2YjdhMzdjM2MxMDQ4M2MxZmQ4NjAwNzcyNjEwNGQ3IFwKLSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9PcGVuU0MvJHtCUE59LmdpdCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLSMgdjEuMjUuMQotU1JDUkVWID0gIjI3MTNjYjA5ZGNkOTAxMDRjYjdiY2ViNWYxNGNkNmY5MDgzNGY3YjEiCi0KLURFUEVORFMgPSAiemxpYiBuZXR0bGUgZ251dGxzIGdtcCBvcGVuc3NsIG5zcyBuc3ByIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zdGF0aWMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL3BrY3MxMS1oZWxwZXIvcGtjczExLWhlbHBlcl8xLjI2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9wa2NzMTEtaGVscGVyL3BrY3MxMS1oZWxwZXJfMS4yNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjZlN2NjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9wa2NzMTEtaGVscGVyL3BrY3MxMS1oZWxwZXJfMS4yNi5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIkEgbGlicmFyeSBmb3IgdXNpbmcgUEtDUyIKK0RFU0NSSVBUSU9OID0gInBrY3MxMS1oZWxwZXIgaXMgYSBsaWJyYXJ5IHRoYXQgc2ltcGxpZmllcyB0aGUgaW50ZXJhY3Rpb24gd2l0aCBQS0NTIFwKK3Byb3ZpZGVycyBmb3IgZW5kLXVzZXIgYXBwbGljYXRpb25zIHVzaW5nIGEgc2ltcGxlIEFQSSBhbmQgb3B0aW9uYWwgT3BlblNTTCBcCitlbmdpbmUuIFRoZSBsaWJyYXJ5IGFsbG93cyB1c2luZyBtdWx0aXBsZSBQS0NTIGVudW1lcmF0aW5nIGF2YWlsYWJsZSB0b2tlbiBcCitjZXJ0aWZpY2F0ZXMsIG9yIHNlbGVjdGluZyBhIGNlcnRpZmljYXRlIGRpcmVjdGx5IGJ5IHNlcmlhbGl6ZWQgaWQsIGhhbmRsaW5nIFwKK2NhcmQgcmVtb3ZhbCBhbmQgY2FyZCBpbnNlcnQgZXZlbnRzLCBoYW5kbGluZyBjYXJkIGllLWluc2VydCB0byBhIGRpZmZlcmVudCBcCitzbG90LCBzdXBwb3J0aW5nIHNlc3Npb24gZXhwaXJhdGlvbiBhbmQgbXVjaCBtb3JlIGFsbCB1c2luZyBhIHNpbXBsZSBBUEkuIgorCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zYy1wcm9qZWN0Lm9yZy9wa2NzMTEtaGVscGVyLyIKK1NFQ1RJT04gPSAiRGV2ZWxvcG1lbnQvTGlicmFyaWVzIgorCitMSUNFTlNFID0gIkdQTHYyICYgQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT0zMGYxMGQyMmNmYjFiYTk4Y2NkNzE0YTQxYWQzMzExYSBcCisgICAgZmlsZTovL0NPUFlJTkcuR1BMO21kNT04YTcxZDA0NzVkMDhlZWU3NmQ4YjZkMGM2ZGJlYzU0MyBcCisgICAgZmlsZTovL0NPUFlJTkcuQlNEO21kNT02NmI3YTM3YzNjMTA0ODNjMWZkODYwMDc3MjYxMDRkNyBcCisiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vT3BlblNDLyR7QlBOfS5naXQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisjIHYxLjI2CitTUkNSRVYgPSAiYzdhMGNmYTA4ZGRjNzVkOTYzYTgzNWQzNTg4MTcwYWYwZTVmMTExNSIKKworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAicGtjczExLWhlbHBlci0oP1A8cHZlcj5cZCsoXC5cZCspKykiCisKK0RFUEVORFMgPSAiemxpYiBuZXR0bGUgZ251dGxzIGdtcCBvcGVuc3NsIG5zcyBuc3ByIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zdGF0aWMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYl9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYl9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkOGNjZGMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGJfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotU1VNTUFSWSA9ICJtb25nb2RiIgotTElDRU5TRSA9ICJTU1BMLTEgJiBBcGFjaGUtMi4wICYgWmxpYiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UtQ29tbXVuaXR5LnR4dDttZDU9M2E4NjVmMjdmMTFmNDNlY2JlNTQyZDllYTM4N2RjZjEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQVBBQ0hFLTIuMC50eHQ7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgotCi1ERVBFTkRTID0gIm9wZW5zc2wgbGlicGNhcCB6bGliIGJvb3N0IGN1cmwgcHl0aG9uMyBcCi0gICAgICAgICAgIHB5dGhvbjMtc2V0dXB0b29scy1uYXRpdmUgXAotICAgICAgICAgICBweXRob24zLXB5eWFtbC1uYXRpdmUgcHl0aG9uMy1jaGVldGFoLW5hdGl2ZSBcCi0gICAgICAgICAgIHB5dGhvbjMtcHN1dGlsLW5hdGl2ZSBweXRob24zLXJlZ2V4LW5hdGl2ZSBcCi0gICAgICAgICAgICIKLQotaW5oZXJpdCBzY29ucyBkb3MydW5peCBzaXRlaW5mbyBweXRob24zbmF0aXZlCi0KLVBWID0gIjQuMi4wK2dpdCR7U1JDUFZ9IgotI3Y0LjIuMAotU1JDUkVWID0gIjE4Y2U1YzlmNTZhMDFmMmM5MzNhNzIwZDY0NzA3ZjM0NTZmODFjOGIiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbW9uZ29kYi9tb25nby5naXQ7YnJhbmNoPXY0LjIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1UZWxsLXNjb25zLXRvLXVzZS1idWlsZC1zZXR0aW5ncy1mcm9tLWVudmlyb25tZW50LXZhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLWxvbmctbG9uZy1pbnN0ZWFkLW9mLWludDY0X3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtX19HTElCQ19fLXRvLWNvbnRyb2wtdXNlLW9mLWdudV9nZXRfbGliY192ZXJzaW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLWEtZGVmaW5pdGlvbi1mb3ItdGhlLW1hY3JvLV9fRUxGX05BVElWRV9DTEFTUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hcm02NC1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSW50ZWxSREZQTWF0aExpYjIwVTEtQ2hlY2stZm9yLV9fREVGSU5FRF93Y2hhcl90LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtU3VwcG9ydC1kZXByZWNhdGVkLXJlc29sdmVyLWZ1bmN0aW9ucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUZpeC11bmtub3duLXByZWZpeC1lbnYucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSJcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1hcmstb25lLW9mLXN0cmVycm9yX3ItaW1wbGVtZW50YXRpb24tZ2xpYmMtc3BlY2lmaWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXgtZGVmYXVsdC1zdGFjay1zaXplLXRvLTI1NksucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC13aXJlZHRpZ2VyLURpc2FibGUtc3RydG91cS1vbi1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF90b29sY2hhaW4tY2xhbmcgPSAiXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hc2lvLURvbnQtdXNlLWV4cGVyaW1lbnRhbC13aXRoLWNsYW5nLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1DT01QQVRJQkxFX0hPU1QgPz0gJyh4ODZfNjR8cG93ZXJwYzY0fGFhcmNoNjQpLiotbGludXgnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJ0Y21hbGxvYyBzeXN0ZW0tcGNyZSIKLSMgZ3BlcmZ0b29scyBjb21waWxhdGlvbiBmYWlscyBmb3IgYXJtIGJlbG93IHY3IGJlY2F1c2Ugb2YgbWlzc2luZyBzdXBwb3J0IG9mCi0jIGRtYiBvcGVyYXRpb24uIFNvIHdlIHVzZSBzeXN0ZW0tYWxsb2NhdG9yIGluc3RlYWQgb2YgdGNtYWxsb2MKLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2FybXY2ID0gInRjbWFsbG9jIgotUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gInRjbWFsbG9jIgotCi1QQUNLQUdFQ09ORklHW3RjbWFsbG9jXSA9ICItLXVzZS1zeXN0ZW0tdGNtYWxsb2MsLS1hbGxvY2F0b3I9c3lzdGVtLGdwZXJmdG9vbHMsIgotUEFDS0FHRUNPTkZJR1tzaGVsbF0gPSAiLC0tanMtZW5naW5lPW5vbmUsLCIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtLXBjcmVdID0gIi0tdXNlLXN5c3RlbS1wY3JlLCxsaWJwY3JlLCIKLQotRVhUUkFfT0VTQ09OUyA9ICItLXByZWZpeD0ke0R9JHtwcmVmaXh9IFwKLSAgICAgICAgICAgICAgICAgTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgIExJTktGTEFHUz0nJHtMREZMQUdTfScgXAotICAgICAgICAgICAgICAgICBDWFhGTEFHUz0nJHtDWFhGTEFHU30nIFwKLSAgICAgICAgICAgICAgICAgVEFSR0VUX0FSQ0g9JHtUQVJHRVRfQVJDSH0gXAotICAgICAgICAgICAgICAgICAtLXNzbCBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS13YXJuaW5ncy1hcy1lcnJvcnMgXAotICAgICAgICAgICAgICAgICAtLXVzZS1zeXN0ZW0temxpYiBcCi0gICAgICAgICAgICAgICAgIC0tbm9zdHJpcCBcCi0gICAgICAgICAgICAgICAgIC0tZW5kaWFuPSR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJ2xpdHRsZScsICdiaWcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAtLXdpcmVkdGlnZXI9JHtAWydvZmYnLCdvbiddW2QuZ2V0VmFyKCdTSVRFSU5GT19CSVRTJykgIT0gJzMyJ119IFwKLSAgICAgICAgICAgICAgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCi0gICAgICAgICAgICAgICAgIGNvcmUiCi0KLXNjb25zX2RvX2NvbXBpbGUoKSB7Ci0gICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9zY29ucyAke1BBUkFMTEVMX01BS0V9ICR7RVhUUkFfT0VTQ09OU30gfHwgXAotICAgICAgICBkaWUgInNjb25zIGJ1aWxkIGV4ZWN1dGlvbiBmYWlsZWQuIgotfQotCi1zY29uc19kb19pbnN0YWxsKCkgewotICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vc2NvbnMgaW5zdGFsbCAke0VYVFJBX09FU0NPTlN9fHwgXAotICAgICAgICBkaWUgInNjb25zIGluc3RhbGwgZXhlY3V0aW9uIGZhaWxlZC4iCi19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGItbmF0aXZlXzEwLjQuMTEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGItbmF0aXZlXzEwLjQuMTIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi1uYXRpdmVfMTAuNC4xMS5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiLW5hdGl2ZV8xMC40LjEyLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiLmluYwppbmRleCAyM2RlNjlkLi45NWY1YWNiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi5pbmMKQEAgLTIxLDggKzIxLDggQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLWJyZWFrYWdlLWZyb20tbG9ja19ndWFyZC1lcnJvci02MTYxLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWxpYnJhcnktTFo0LWxvb2t1cC5wYXRjaCBcCiAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImQwZGU4ODFhYjhlYWQ0NjkyOGNhZmI3ZDU1ODUzNWMxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRjMDc2MjMyYjk5NDMzYjA5ZWIzYzZkNjJmNjA3MTkyYjM0NzRkMDIyNzAzNjk5YjhmNmFlZjRlNzlkZTNmYjkiCitTUkNfVVJJW21kNXN1bV0gPSAiOTdkN2MwZjUwOGMwNGEzMWMxMzhmZGIyNGU5NWRiYzQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmVmMWUxZDM4YWEyNTNkZDhhNTEwMDZiZDE1YWFkMTg0OTEyZmNlMzFjNDQ2YmI2OTQzNGZjZGU3MzVhYTIwOCIKIAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9NYXJpYURCL3NlcnZlci9yZWxlYXNlcyIKIApAQCAtMTY4LDYgKzE2OCwxMCBAQAogICAgIGlmIFsgLWYgJHtEfSR7ZGF0YWRpcn0vZG9jL1JFQURNRSBdOyB0aGVuCiAgICAgICAgIG12ICR7RH0ke2RhdGFkaXJ9L2RvYy9SRUFETUUgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7UE59LwogICAgIGZpCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBtdiAke0R9L2xpYi9zZWN1cml0eSAke0R9LyR7bGliZGlyfQorICAgICAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9L2xpYgorICAgIGZpCiB9CiAKIFBBQ0tBR0VTID0gIiR7UE59LWRiZyAke1BOfSBcCkBAIC0yOTksMTEgKzMwMywxNCBAQAogICAgICR7c2JpbmRpcn0vbmRiZCBcCiAgICAgJHtzYmluZGlyfS9uZGJfbWdtZCBcCiAgICAgJHtsaWJkaXJ9L3BsdWdpbi8qLnNvIFwKKyAgICAke2xpYmRpcn0vc2VjdXJpdHkvKi5zbyBcCisgICAgJHtsaWJkaXJ9L3BsdWdpbi9hdXRoX3BhbV90b29sX2Rpci9hdXRoX3BhbV90b29sIFwKICAgICAke2RhdGFkaXJ9L215c3FsLyBcCiAgICAgJHtsb2NhbHN0YXRlZGlyfS9teXNxbC8gXAogICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL215c3FsZCBcCiAgICAgJHtzeXNjb25mZGlyfS9teS5jbmYgXAogICAgICR7c3lzY29uZmRpcn0vbXkuY25mLmQvc2VydmVyLmNuZiBcCisgICAgJHtzeXNjb25mZGlyfS9zZWN1cml0eS91c2VyX21hcC5jb25mIFwKICAgICAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQiCiAKIERFU0NSSVBUSU9OXyR7UE59LWxlZnRvdmVycyA9ICJ1bnBhY2thZ2VkIGFuZCBwcm9iYWJseSB1bm5lZWRlZCBmaWxlcyBmb3IgJHtQTn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIvZml4LWFybS1hdG9taWMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIvZml4LWFybS1hdG9taWMucGF0Y2gKaW5kZXggMTg1YjdiNy4uMDViMGNmOCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiL2ZpeC1hcm0tYXRvbWljLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi9maXgtYXJtLWF0b21pYy5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gZmZhYWY0ZDQzZWJmMmVmNmQwMjI5YTYwZjQwN2MxZjVhMDZlNWM1MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZjQ0N2FjYTUzNGQxYTEyODA5ZWViMTQ2ZTgyMjBkMzA1Y2MzODg0ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE1pbmdsaSBZdSA8bWluZ2xpLnl1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDE1IE1hciAyMDE5IDAxOjQ2OjA1IC0wNzAwCitEYXRlOiBUaHUsIDkgQXByIDIwMjAgMTQ6MDc6MTkgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gYnVpbGRfcm9ja3NkYi5jbWFrZTogZml4IGF0b21pYyBzdXBwb3J0IG9uIGFybQogCiBDaGVjayB0byBsaW5rIHdpdGggbGliYXRvbWljIHRvIGVuYWJsZSBDMTEgYXRvbWljcyBzdXBwb3J0CkBAIC0xMCwxNCArMTAsMTYgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLVNpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPG1pbmdsaS55dUB3aW5kcml2ZXIuY29tPgogLS0tCiAgc3RvcmFnZS9yb2Nrc2RiL2J1aWxkX3JvY2tzZGIuY21ha2UgfCAzICsrKwogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKIAorZGlmZiAtLWdpdCBhL3N0b3JhZ2Uvcm9ja3NkYi9idWlsZF9yb2Nrc2RiLmNtYWtlIGIvc3RvcmFnZS9yb2Nrc2RiL2J1aWxkX3JvY2tzZGIuY21ha2UKK2luZGV4IGQ3ODk1YjAuLjNiY2Q1MmEgMTAwNjQ0CiAtLS0gYS9zdG9yYWdlL3JvY2tzZGIvYnVpbGRfcm9ja3NkYi5jbWFrZQogKysrIGIvc3RvcmFnZS9yb2Nrc2RiL2J1aWxkX3JvY2tzZGIuY21ha2UKLUBAIC00NzAsNiArNDcwLDkgQEAgbGlzdChBUFBFTkQgU09VUkNFUyAke0NNQUtFX0NVUlJFTlRfQklOQQorQEAgLTQ3MCw2ICs0NzAsOSBAQCBsaXN0KEFQUEVORCBTT1VSQ0VTICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9idWlsZF92ZXJzaW9uLmNjKQogIAogIEFERF9DT05WRU5JRU5DRV9MSUJSQVJZKHJvY2tzZGJsaWIgJHtTT1VSQ0VTfSkKICB0YXJnZXRfbGlua19saWJyYXJpZXMocm9ja3NkYmxpYiAke1RISVJEUEFSVFlfTElCU30gJHtTWVNURU1fTElCU30pCkBAIC0yNSw1ICsyNyw4IEBACiArICBUQVJHRVRfTElOS19MSUJSQVJJRVMocm9ja3NkYmxpYiBhdG9taWMpCiArRU5ESUYoKQogIElGKENNQUtFX0NYWF9DT01QSUxFUl9JRCBNQVRDSEVTICJHTlUiIE9SIENNQUtFX0NYWF9DT01QSUxFUl9JRCBNQVRDSEVTICJDbGFuZyIpCi0gICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMocm9ja3NkYmxpYiBQUk9QRVJUSUVTIENPTVBJTEVfRkxBR1MgIi1mUElDIC1mbm8tYnVpbHRpbi1tZW1jbXAiKQorICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKHJvY2tzZGJsaWIgUFJPUEVSVElFUyBDT01QSUxFX0ZMQUdTICItZlBJQyAtZm5vLWJ1aWx0aW4tbWVtY21wIC1Xbm8tZXJyb3IiKQogIGVuZGlmKCkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiXzEwLjQuMTEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGJfMTAuNC4xMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiXzEwLjQuMTEuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYl8xMC40LjEyLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL215c3FsLXB5dGhvbl8xLjIuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbXlzcWwtcHl0aG9uXzEuMi41LmJiCmluZGV4IGYyZmFlYzEuLjQ2MTdkYTggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbXlzcWwtcHl0aG9uXzEuMi41LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbXlzcWwtcHl0aG9uXzEuMi41LmJiCkBAIC0xNiw0ICsxNiw5IEBACiAKIFMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgogCi1pbmhlcml0IHNldHVwdG9vbHMKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoIkJCRklMRV9DT0xMRUNUSU9OUyIsICJtZXRhLXB5dGhvbjIiLCAic2V0dXB0b29scyIsICIiLCBkKX0KKworcHl0aG9uKCkgeworICAgIGlmICdtZXRhLXB5dGhvbjInIG5vdCBpbiBkLmdldFZhcignQkJGSUxFX0NPTExFQ1RJT05TJykuc3BsaXQoKToKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgnUmVxdWlyZXMgbWV0YS1weXRob24yIHRvIGJlIHByZXNlbnQuJykKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsLmluYwppbmRleCA5MWQwMjc1Li5kMzU3MTFjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvcG9zdGdyZXNxbC5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL3Bvc3RncmVzcWwuaW5jCkBAIC0zNyw3ICszNyw3IEBACiAjIExERkxBR1MgZm9yIHNoYXJlZCBsaWJyYXJpZXMKIGV4cG9ydCBMREZMQUdTX1NMID0gIiR7TERGTEFHU30iCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwZXJsbmF0aXZlIHB5dGhvbm5hdGl2ZSB1c2VyYWRkIHVwZGF0ZS1yYy5kIHN5c3RlbWQgZ2V0dGV4dCBjcGFuLWJhc2UKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwZXJsbmF0aXZlIHB5dGhvbjNuYXRpdmUgdXNlcmFkZCB1cGRhdGUtcmMuZCBzeXN0ZW1kIGdldHRleHQgY3Bhbi1iYXNlCiAKIENGTEFHUyArPSAiLUkke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9IC1JJHtTVEFHSU5HX0lOQ0RJUn0vdGNsOC42IgogCkBAIC01OCw3ICs1OCw3IEBACiBQQUNLQUdFQ09ORklHID8/PSAiJHtlbmFibGVfcGFtfSBvcGVuc3NsIHB5dGhvbiB1dWlkIGxpYnhtbCB0Y2wgbmxzIGxpYnhtbCBwZXJsIgogUEFDS0FHRUNPTkZJR1twYW1dID0gIi0td2l0aC1wYW0sLS13aXRob3V0LXBhbSxsaWJwYW0sIgogUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbCwtLXdpdGhvdXQtb3BlbnNzbCxvcGVuc3NsLCIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLXdpdGgtcHl0aG9uLC0td2l0aG91dC1weXRob24scHl0aG9uLHB5dGhvbiIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLXdpdGgtcHl0aG9uLC0td2l0aG91dC1weXRob24scHl0aG9uMyxweXRob24zIgogUEFDS0FHRUNPTkZJR1t1dWlkXSA9ICItLXdpdGgtdXVpZD1lMmZzLC0td2l0aG91dC11dWlkLHV0aWwtbGludXgsIgogUEFDS0FHRUNPTkZJR1t0Y2xdID0gIi0td2l0aC10Y2wgLS13aXRoLXRjbGNvbmZpZz0ke1NUQUdJTkdfQklORElSX0NST1NTfSwtLXdpdGhvdXQtdGNsLHRjbCB0Y2wtbmF0aXZlLCIKIFBBQ0tBR0VDT05GSUdbbmxzXSA9ICItLWVuYWJsZS1ubHMsLS1kaXNhYmxlLW5scywsIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL3Bvc3RncmVzcWxfMTIuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsXzEyLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4Njg1MTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL3Bvc3RncmVzcWxfMTIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLXJlcXVpcmUgcG9zdGdyZXNxbC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT04N2RhMmI4NDg4NDg2MGI3MWY1ZjI0YWIzN2U3ZGE3OCIKLQotU1JDX1VSSSArPSAiXAotICAgZmlsZTovL25vdC1jaGVjay1saWJwZXJsLnBhdGNoIFwKLSAgIGZpbGU6Ly8wMDAxLUFkZC1zdXBwb3J0LWZvci1SSVNDLVYucGF0Y2ggXAotICAgZmlsZTovLzAwMDEtSW1wcm92ZS1yZXByb2R1Y2liaWxpdHkucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmVlMWJkNGVjNWY0OTM2M2EzZjQ1NmYwN2U1OTliNDEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTA5YmYzYWJiYWY2NzYzOTgwZDBmOGFjYmI5NDNiNzYyOWE4YjIwMDczZGUxOGQ4NjdhZWNkYjc5ODg0ODNlZCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsXzEyLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvcG9zdGdyZXNxbF8xMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MTNlNTAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvcG9zdGdyZXNxbF8xMi4yLmJiCkBAIC0wLDAgKzEsMTIgQEAKK3JlcXVpcmUgcG9zdGdyZXNxbC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT1mYzRjZTIxOTYwZjBjNTYxNDYwZDc1MGJjMjcwZDExZiIKKworU1JDX1VSSSArPSAiXAorICAgZmlsZTovL25vdC1jaGVjay1saWJwZXJsLnBhdGNoIFwKKyAgIGZpbGU6Ly8wMDAxLUFkZC1zdXBwb3J0LWZvci1SSVNDLVYucGF0Y2ggXAorICAgZmlsZTovLzAwMDEtSW1wcm92ZS1yZXByb2R1Y2liaWxpdHkucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTg4Y2VlYThlY2YyNzQxMzA3ZjY2M2U0NTM5YjU4YjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWQxZGNjNGM0ZmM1MDA3ODZiNzQ1NjM1YTllMWViYTk1MDE5NWNlMjBiODkxM2Y1MDM0NWJiN2Q1MzY5YjVkZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcm9ja3NkYi9maWxlcy8wMDAxLUZpeC1idWlsZC1icmVha2FnZS1mcm9tLWxvY2tfZ3VhcmQtZXJyb3ItNjE2MS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcm9ja3NkYi9maWxlcy8wMDAxLUZpeC1idWlsZC1icmVha2FnZS1mcm9tLWxvY2tfZ3VhcmQtZXJyb3ItNjE2MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWM4N2QwYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3JvY2tzZGIvZmlsZXMvMDAwMS1GaXgtYnVpbGQtYnJlYWthZ2UtZnJvbS1sb2NrX2d1YXJkLWVycm9yLTYxNjEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIGI2MjY3MDNkZTdlY2U1MDdmMzYwNTA3ZTQ5ZDNlY2I0NDhiMTJlMDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXlzYW0gWWFiYW5kZWggPG15YWJhbmRlaEBmYi5jb20+Ci1EYXRlOiBUaHUsIDEyIERlYyAyMDE5IDEzOjQ4OjUwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCBicmVha2FnZSBmcm9tIGxvY2tfZ3VhcmQgZXJyb3IgKCM2MTYxKQotCi1TdW1tYXJ5OgotVGhpcyBjaGFuZ2UgZml4ZXMgYSBzb3VyY2UgaXNzdWUgdGhhdCBjYXVzZWQgY29tcGlsZSB0aW1lIGVycm9yIHdoaWNoIGJyZWFrcyBidWlsZCBmb3IgbWFueSBmYmNvZGUgc2VydmljZXMgaW4gdGhhdCBzZXR1cC4gVGhlIHNpemUoKSBtZW1iZXIgZnVuY3Rpb24gb2YgY2hhbm5lbCBpcyBhIGNvbnN0IG1lbWJlciwgc28gbWVtYmVyIHZhcmlhYmxlcyBhY2Nlc3NlZCB3aXRoaW4gaXQgYXJlIGltcGxpY2l0bHkgY29uc3QgYXMgd2VsbC4gVGhpcyBjYXVzZWQgZXJyb3Igd2hlbiBjbGFuZyBmYWlscyB0byByZXNvbHZlIHRvIGEgY29uc3RydWN0b3IgdGhhdCB0YWtlcyBzdGQ6Om11dGV4IGJlY2F1c2UgdGhlIHN1aXRhYmxlIGNvbnN0cnVjdG9yIGdvdCByZWplY3RlZCBkdWUgdG8gbG9zcyBvZiBjb25zdG5lc3MgZm9yIGl0cyBhcmd1bWVudC4gVGhlIGZpeCBpcyB0byBhZGQgbXV0YWJsZSBtb2RpZmllciB0byB0aGUgbG9ja18gbWVtYmVyIG9mIGNoYW5uZWwuCi1QdWxsIFJlcXVlc3QgcmVzb2x2ZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yb2Nrc2RiL3B1bGwvNjE2MQotCi1EaWZmZXJlbnRpYWwgUmV2aXNpb246IEQxODk2NzY4NQotCi1QdWxsZWQgQnk6IG1heXNhbXlhYmFuZGVoCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotZmJzaGlwaXQtc291cmNlLWlkOiA2OThiNmE1MTUzYzNjOTJlZWFjYjg0MmM0NjdhYTI4Y2MzNTBkNDMyCi0tLS0KLSB1dGlsL2NoYW5uZWwuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3V0aWwvY2hhbm5lbC5oIGIvdXRpbC9jaGFubmVsLmgKLWluZGV4IDAyMjU0ODJjMC4uYThhNDc2ODBhIDEwMDY0NAotLS0tIGEvdXRpbC9jaGFubmVsLmgKLSsrKyBiL3V0aWwvY2hhbm5lbC5oCi1AQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBjaGFubmVsIHsKLSAKLSAgcHJpdmF0ZToKLSAgIHN0ZDo6Y29uZGl0aW9uX3ZhcmlhYmxlIGN2XzsKLS0gIHN0ZDo6bXV0ZXggbG9ja187Ci0rICBtdXRhYmxlIHN0ZDo6bXV0ZXggbG9ja187Ci0gICBzdGQ6OnF1ZXVlPFQ+IGJ1ZmZlcl87Ci0gICBib29sIGVvZl87Ci0gfTsKLS0tIAotMi4yNC4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcm9ja3NkYi9maWxlcy8wMDAxLWNtYWtlLUFkZC1jaGVjay1mb3ItYXRvbWljLXN1cHBvcnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3JvY2tzZGIvZmlsZXMvMDAwMS1jbWFrZS1BZGQtY2hlY2stZm9yLWF0b21pYy1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliZmIxZjMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3JvY2tzZGIvZmlsZXMvMDAwMS1jbWFrZS1BZGQtY2hlY2stZm9yLWF0b21pYy1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsMTE1IEBACitGcm9tIGJhMGEwZTU0ZDk1NDRiYWJiZDM5NjM4OTFmNGUzMjAwZGQ1NTgzZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAyMCAxNToxMDozNyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBjbWFrZTogQWRkIGNoZWNrIGZvciBhdG9taWMgc3VwcG9ydAorCitEZXRlY3QgaWYgbGliYXRvbWljIHNob3VsZCBiZSBsaW5rZWQgaW4gb3IgY29tcGlsZXIgYW5kIHBsYXRmb3JtIGNhbgorcHJvdmlkZSB0aGUgbmVlZGVkIGF0b21pYyBpbnN0cmluc2ljcywgdGhpcyBoZWxwcyBidWlsZCBvbiBjZXJ0YWluCitwbGF0Zm9ybXMgbGlrZSBtaXBzIG9yIGNsYW5nL2kzODYKKworRml4ZXMKKworfCAvbW50L2IveW9lL2J1aWxkL3RtcC93b3JrL21pcHMzMnIyLXlvZS1saW51eC9yb2Nrc2RiLzYuNi40LXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZS91c3IvYmluL21pcHMteW9lLWxpbnV4L21pcHMteW9lLWxpbnV4LWxkOiBsaWJyb2Nrc2RiLnNvLjYuNi40OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX2F0b21pY19leGNoYW5nZV84JworfCAvbW50L2IveW9lL2J1aWxkL3RtcC93b3JrL21pcHMzMnIyLXlvZS1saW51eC9yb2Nrc2RiLzYuNi40LXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZS91c3IvYmluL21pcHMteW9lLWxpbnV4L21pcHMteW9lLWxpbnV4LWxkOiBsaWJyb2Nrc2RiLnNvLjYuNi40OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX2F0b21pY19mZXRjaF9vcl84JworfCAvbW50L2IveW9lL2J1aWxkL3RtcC93b3JrL21pcHMzMnIyLXlvZS1saW51eC9yb2Nrc2RiLzYuNi40LXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZS91c3IvYmluL21pcHMteW9lLWxpbnV4L21pcHMteW9lLWxpbnV4LWxkOiBsaWJyb2Nrc2RiLnNvLjYuNi40OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX2F0b21pY19jb21wYXJlX2V4Y2hhbmdlXzgnCit8IC9tbnQvYi95b2UvYnVpbGQvdG1wL3dvcmsvbWlwczMycjIteW9lLWxpbnV4L3JvY2tzZGIvNi42LjQtcjAvcmVjaXBlLXN5c3Jvb3QtbmF0aXZlL3Vzci9iaW4vbWlwcy15b2UtbGludXgvbWlwcy15b2UtbGludXgtbGQ6IGxpYnJvY2tzZGIuc28uNi42LjQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fYXRvbWljX2ZldGNoX3N1Yl84JworfCAvbW50L2IveW9lL2J1aWxkL3RtcC93b3JrL21pcHMzMnIyLXlvZS1saW51eC9yb2Nrc2RiLzYuNi40LXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZS91c3IvYmluL21pcHMteW9lLWxpbnV4L21pcHMteW9lLWxpbnV4LWxkOiBsaWJyb2Nrc2RiLnNvLjYuNi40OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX2F0b21pY19sb2FkXzgnCit8IC9tbnQvYi95b2UvYnVpbGQvdG1wL3dvcmsvbWlwczMycjIteW9lLWxpbnV4L3JvY2tzZGIvNi42LjQtcjAvcmVjaXBlLXN5c3Jvb3QtbmF0aXZlL3Vzci9iaW4vbWlwcy15b2UtbGludXgvbWlwcy15b2UtbGludXgtbGQ6IGxpYnJvY2tzZGIuc28uNi42LjQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fYXRvbWljX3N0b3JlXzgnCit8IC9tbnQvYi95b2UvYnVpbGQvdG1wL3dvcmsvbWlwczMycjIteW9lLWxpbnV4L3JvY2tzZGIvNi42LjQtcjAvcmVjaXBlLXN5c3Jvb3QtbmF0aXZlL3Vzci9iaW4vbWlwcy15b2UtbGludXgvbWlwcy15b2UtbGludXgtbGQ6IGxpYnJvY2tzZGIuc28uNi42LjQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fYXRvbWljX2ZldGNoX2FkZF84JworCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JvY2tzZGIvcHVsbC82NTU1XQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIENNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgfCAgNiArKysKKyBjbWFrZS9tb2R1bGVzL0NoZWNrQXRvbWljLmNtYWtlIHwgNjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGNtYWtlL21vZHVsZXMvQ2hlY2tBdG9taWMuY21ha2UKKworLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtNzgwLDcgKzc4MCwxMyBAQCBpZihXSU4zMikKKyAgIHNldChTWVNURU1fTElCUyAke1NZU1RFTV9MSUJTfSBzaGx3YXBpLmxpYiBycGNydDQubGliKQorICAgc2V0KExJQlMgJHtST0NLU0RCX1NUQVRJQ19MSUJ9ICR7VEhJUkRQQVJUWV9MSUJTfSAke1NZU1RFTV9MSUJTfSkKKyBlbHNlKCkKKysgICMgY2hlY2sgaWYgbGlua2luZyBhZ2FpbnN0IGxpYmF0b21pYyBpcyBuZWNlc3NhcnkKKysgIGluY2x1ZGUoQ2hlY2tBdG9taWMpCisrCisgICBzZXQoU1lTVEVNX0xJQlMgJHtDTUFLRV9USFJFQURfTElCU19JTklUfSkKKysgIGlmKEhBVkVfQ1hYX0FUT01JQ19XSVRIX0xJQiBPUiBIQVZFX0NYWF9BVE9NSUNTNjRfV0lUSF9MSUIpCisrICAgIHNldChTWVNURU1fTElCUyAke1NZU1RFTV9MSUJTfSBhdG9taWMpCisrICBlbmRpZigpCisgICBzZXQoTElCUyAke1JPQ0tTREJfU0hBUkVEX0xJQn0gJHtUSElSRFBBUlRZX0xJQlN9ICR7U1lTVEVNX0xJQlN9KQorIAorICAgYWRkX2xpYnJhcnkoJHtST0NLU0RCX1NIQVJFRF9MSUJ9IFNIQVJFRCAke1NPVVJDRVN9KQorLS0tIC9kZXYvbnVsbAorKysrIGIvY21ha2UvbW9kdWxlcy9DaGVja0F0b21pYy5jbWFrZQorQEAgLTAsMCArMSw2OSBAQAorKyMgQ2hlY2tzIGlmIGF0b21pYyBvcGVyYXRpb25zIGFyZSBzdXBwb3J0ZWQgbmF0aXZlbHkgb3IgaWYgbGlua2luZyBhZ2FpbnN0CisrIyBsaWJhdG9taWMgaXMgbmVlZGVkLgorKworKyMgQ2hlY2sgaW5zcGlyZWQgYnkgTExWTXMgY21ha2UvbW9kdWxlcy9DaGVja0F0b21pYy5jbWFrZQorKworK0lOQ0xVREUoQ2hlY2tDWFhTb3VyY2VDb21waWxlcykKKytJTkNMVURFKENoZWNrTGlicmFyeUV4aXN0cykKKysKKytmdW5jdGlvbihjaGVja193b3JraW5nX2N4eF9hdG9taWNzIHZhcm5hbWUpCisrICBzZXQoT0xEX0NNQUtFX1JFUVVJUkVEX0ZMQUdTICR7Q01BS0VfUkVRVUlSRURfRkxBR1N9KQorKyAgc2V0KENNQUtFX1JFUVVJUkVEX0ZMQUdTICIke0NNQUtFX1JFUVVJUkVEX0ZMQUdTfSAtc3RkPWMrKzExIikKKysgIENIRUNLX0NYWF9TT1VSQ0VfQ09NUElMRVMoIgorKyNpbmNsdWRlIDxhdG9taWM+Cisrc3RkOjphdG9taWM8aW50PiB4OworK2ludCBtYWluKCkgeworKyAgcmV0dXJuIHg7CisrfQorKyIgJHt2YXJuYW1lfSkKKysgIHNldChDTUFLRV9SRVFVSVJFRF9GTEFHUyAke09MRF9DTUFLRV9SRVFVSVJFRF9GTEFHU30pCisrZW5kZnVuY3Rpb24oY2hlY2tfd29ya2luZ19jeHhfYXRvbWljcykKKysKKytmdW5jdGlvbihjaGVja193b3JraW5nX2N4eF9hdG9taWNzNjQgdmFybmFtZSkKKysgIHNldChPTERfQ01BS0VfUkVRVUlSRURfRkxBR1MgJHtDTUFLRV9SRVFVSVJFRF9GTEFHU30pCisrICBzZXQoQ01BS0VfUkVRVUlSRURfRkxBR1MgIi1zdGQ9YysrMTEgJHtDTUFLRV9SRVFVSVJFRF9GTEFHU30iKQorKyAgQ0hFQ0tfQ1hYX1NPVVJDRV9DT01QSUxFUygiCisrI2luY2x1ZGUgPGF0b21pYz4KKysjaW5jbHVkZSA8Y3N0ZGludD4KKytzdGQ6OmF0b21pYzx1aW50NjRfdD4geCAoMCk7Cisrc3RkOjphdG9taWM8ZG91YmxlPiB5ICgwKTsKKytpbnQgbWFpbigpIHsKKysgIHVpbnQ2NF90IGkgPSB4LmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisrICByZXR1cm4gaW50KHkpOworK30KKysiICR7dmFybmFtZX0pCisrICBzZXQoQ01BS0VfUkVRVUlSRURfRkxBR1MgJHtPTERfQ01BS0VfUkVRVUlSRURfRkxBR1N9KQorK2VuZGZ1bmN0aW9uKGNoZWNrX3dvcmtpbmdfY3h4X2F0b21pY3M2NCkKKysKKysjIENoZWNrIGlmIGF0b21pY3Mgd29yayB3aXRob3V0IGxpYmF0b21pYworK2NoZWNrX3dvcmtpbmdfY3h4X2F0b21pY3MoSEFWRV9DWFhfQVRPTUlDU19XSVRIT1VUX0xJQikKKysKKytpZihOT1QgSEFWRV9DWFhfQVRPTUlDU19XSVRIT1VUX0xJQikKKysgIGNoZWNrX2xpYnJhcnlfZXhpc3RzKGF0b21pYyBfX2F0b21pY19mZXRjaF9hZGRfNCAiIiBIQVZFX0xJQkFUT01JQykKKysgIGlmKCBIQVZFX0xJQkFUT01JQyApCisrICAgIGxpc3QoQVBQRU5EIENNQUtFX1JFUVVJUkVEX0xJQlJBUklFUyAiYXRvbWljIikKKysgICAgY2hlY2tfd29ya2luZ19jeHhfYXRvbWljcyhIQVZFX0NYWF9BVE9NSUNTX1dJVEhfTElCKQorKyAgICBpZiAoTk9UIEhBVkVfQ1hYX0FUT01JQ1NfV0lUSF9MSUIpCisrICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiSG9zdCBjb21waWxlciBtdXN0IHN1cHBvcnQgc3RkOjphdG9taWMhIikKKysgICAgZW5kaWYoKQorKyAgZWxzZSgpCisrICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkhvc3QgY29tcGlsZXIgYXBwZWFycyB0byByZXF1aXJlIGxpYmF0b21pYywgYnV0IGNhbm5vdCBmaW5kIGl0LiIpCisrICBlbmRpZigpCisrZW5kaWYoKQorKworKyMgQ2hlY2sgaWYgNjRiaXQgYXRvbWljcyB3b3JrIHdpdGhvdXQgbGliYXRvbWljCisrY2hlY2tfd29ya2luZ19jeHhfYXRvbWljczY0KEhBVkVfQ1hYX0FUT01JQ1M2NF9XSVRIT1VUX0xJQikKKysKKytpZihOT1QgSEFWRV9DWFhfQVRPTUlDUzY0X1dJVEhPVVRfTElCKQorKyAgY2hlY2tfbGlicmFyeV9leGlzdHMoYXRvbWljIF9fYXRvbWljX2xvYWRfOCAiIiBIQVZFX0NYWF9MSUJBVE9NSUNTNjQpCisrICBpZihIQVZFX0NYWF9MSUJBVE9NSUNTNjQpCisrICAgIGxpc3QoQVBQRU5EIENNQUtFX1JFUVVJUkVEX0xJQlJBUklFUyAiYXRvbWljIikKKysgICAgY2hlY2tfd29ya2luZ19jeHhfYXRvbWljczY0KEhBVkVfQ1hYX0FUT01JQ1M2NF9XSVRIX0xJQikKKysgICAgaWYgKE5PVCBIQVZFX0NYWF9BVE9NSUNTNjRfV0lUSF9MSUIpCisrICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiSG9zdCBjb21waWxlciBtdXN0IHN1cHBvcnQgc3RkOjphdG9taWMhIikKKysgICAgZW5kaWYoKQorKyAgZWxzZSgpCisrICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkhvc3QgY29tcGlsZXIgYXBwZWFycyB0byByZXF1aXJlIGxpYmF0b21pYywgYnV0IGNhbm5vdCBmaW5kIGl0LiIpCisrICBlbmRpZigpCisrZW5kaWYoKQorKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9yb2Nrc2RiL3JvY2tzZGJfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9yb2Nrc2RiL3JvY2tzZGJfZ2l0LmJiCmluZGV4IDcxM2Q1YmIuLmI5MDM4ZGYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcm9ja3NkYi9yb2Nrc2RiX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3JvY2tzZGIvcm9ja3NkYl9naXQuYmIKQEAgLTYsMTMgKzYsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UubGV2ZWxkYjttZDU9ZmIwNGZmNTdhMTRmMzA4ZjJlZWQ0YTliODdkNDU4MzciCiAKLVNSQ1JFViA9ICI0Y2ZiZDg3YWZkMDhhMTZkZjI4NDM2ZmI5OTBlZjZiMTU0ZWU2MTE0IgotU1JDQlJBTkNIID0gIjYuNS5mYiIKLVBWID0gIjYuNS4yIgorU1JDUkVWID0gIjU1MWExMTA5MTg0OTNhMTlkMTEyNDNmNTM0MDhiOTc0ODVkZTE0MTEiCitTUkNCUkFOQ0ggPSAiNi42LmZiIgorUFYgPSAiNi42LjQiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9mYWNlYm9vay8ke0JQTn0uZ2l0O2JyYW5jaD0ke1NSQ0JSQU5DSH0gXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtYnJlYWthZ2UtZnJvbS1sb2NrX2d1YXJkLWVycm9yLTYxNjEucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1kYi13cml0ZV90aHJlYWQuY2MtSW5pdGlhbGl6ZS1zdGF0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNtYWtlLUFkZC1jaGVjay1mb3ItYXRvbWljLXN1cHBvcnQucGF0Y2ggXAogICAgICAgICAgICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKQEAgLTM5LDMgKzM5LDUgQEAKICAgICAjIGZpeCBmb3IgcWEgY2hlY2sgYnVpbGRwYXRocwogICAgIHNlZCAtaSAicyMke1JFQ0lQRV9TWVNST09UfSMjZyIgJHtEfSR7bGliZGlyfS9jbWFrZS9yb2Nrc2RiL1JvY2tzREJUYXJnZXRzLmNtYWtlCiB9CisKK0xERkxBR1NfYXBwZW5kX3Jpc2N2NjQgPSAiIC1wdGhyZWFkIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2Fic2VpbC1jcHAvYWJzZWlsLWNwcC8wMDAxLUFkZC1SSVNDVi1zdXBwb3J0LXRvLUdldFByb2dyYW1Db3VudGVyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2Fic2VpbC1jcHAvYWJzZWlsLWNwcC8wMDAxLUFkZC1SSVNDVi1zdXBwb3J0LXRvLUdldFByb2dyYW1Db3VudGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZWMwNzAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYWJzZWlsLWNwcC9hYnNlaWwtY3BwLzAwMDEtQWRkLVJJU0NWLXN1cHBvcnQtdG8tR2V0UHJvZ3JhbUNvdW50ZXIucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSA5ODNlZWFlMDc5Mjk0NmZlNWMwOTBmOTUxNjRjODkyZWM2ZGI1Y2M0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMTYgRmViIDIwMjAgMTY6MjI6NTMgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIFJJU0NWIHN1cHBvcnQgdG8gR2V0UHJvZ3JhbUNvdW50ZXIoKQorCitJZGVudGlmeSBQQyByZWdpc3RlciBmcm9tIHNpZ25hbCBjb250ZXh0CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vYWJzZWlsL2Fic2VpbC1jcHAvcHVsbC82MjFdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZXhhbWluZV9zdGFjay5jYyB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9leGFtaW5lX3N0YWNrLmNjIGIvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZXhhbWluZV9zdGFjay5jYworaW5kZXggNDczOWZiYy4uZmI3NzQ1MCAxMDA2NDQKKy0tLSBhL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2V4YW1pbmVfc3RhY2suY2MKKysrKyBiL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2V4YW1pbmVfc3RhY2suY2MKK0BAIC01Myw2ICs1Myw4IEBAIHZvaWQqIEdldFByb2dyYW1Db3VudGVyKHZvaWQqIHZ1YykgeworICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1szMl0pOworICNlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCisgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihjb250ZXh0LT51Y19tY29udGV4dC5yZWdzLT5uaXApOworKyNlbGlmIGRlZmluZWQoX19yaXNjdikKKysgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNvbnRleHQtPnVjX21jb250ZXh0Ll9fZ3JlZ3NbUkVHX1BDXSk7CisgI2VsaWYgZGVmaW5lZChfX3MzOTBfXykgJiYgIWRlZmluZWQoX19zMzkweF9fKQorICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29udGV4dC0+dWNfbWNvbnRleHQucHN3LmFkZHIgJiAweDdmZmZmZmZmKTsKKyAjZWxpZiBkZWZpbmVkKF9fczM5MF9fKSAmJiBkZWZpbmVkKF9fczM5MHhfXykKKy0tIAorMi4yNS4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hYnNlaWwtY3BwL2Fic2VpbC1jcHAvMDAwMS1SZW1vdmUtbWFlcy1vcHRpb24tZnJvbS1jcm9zcy1jb21waWxhdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hYnNlaWwtY3BwL2Fic2VpbC1jcHAvMDAwMS1SZW1vdmUtbWFlcy1vcHRpb24tZnJvbS1jcm9zcy1jb21waWxhdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzQxY2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2Fic2VpbC1jcHAvYWJzZWlsLWNwcC8wMDAxLVJlbW92ZS1tYWVzLW9wdGlvbi1mcm9tLWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gNzA5MjY2NjZmN2M1YzM1YWRkMzYzZTNiY2FkZTZlYWFiYWNlNzIwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNpbmFuIEtheWEgPHNpbmFuLmtheWFAbWljcm9zb2Z0LmNvbT4KK0RhdGU6IE1vbiwgMyBGZWIgMjAyMCAwMzoyNTo1NyArMDAwMAorU3ViamVjdDogW1BBVENIXSBSZW1vdmUgbWFlcyBvcHRpb24gZnJvbSBjcm9zcy1jb21waWxhdGlvbgorCistLS0KKyBhYnNsL2NvcHRzL0dFTkVSQVRFRF9BYnNlaWxDb3B0cy5jbWFrZSB8IDQgLS0tLQorIGFic2wvY29wdHMvR0VORVJBVEVEX2NvcHRzLmJ6bCAgICAgICAgIHwgNCAtLS0tCisgYWJzbC9jb3B0cy9jb3B0cy5weSAgICAgICAgICAgICAgICAgICAgfCA0IC0tLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDEyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYWJzbC9jb3B0cy9HRU5FUkFURURfQWJzZWlsQ29wdHMuY21ha2UgYi9hYnNsL2NvcHRzL0dFTkVSQVRFRF9BYnNlaWxDb3B0cy5jbWFrZQoraW5kZXggMDFiZDQwYi4uYWY5OTY5NCAxMDA2NDQKKy0tLSBhL2Fic2wvY29wdHMvR0VORVJBVEVEX0Fic2VpbENvcHRzLmNtYWtlCisrKysgYi9hYnNsL2NvcHRzL0dFTkVSQVRFRF9BYnNlaWxDb3B0cy5jbWFrZQorQEAgLTIzMCw3ICsyMzAsMyBAQCBsaXN0KEFQUEVORCBBQlNMX1JBTkRPTV9IV0FFU19NU1ZDX1g2NF9GTEFHUworICAgICAiL09iMiIKKyApCisgCistbGlzdChBUFBFTkQgQUJTTF9SQU5ET01fSFdBRVNfWDY0X0ZMQUdTCistICAgICItbWFlcyIKKy0gICAgIi1tc3NlNC4xIgorLSkKK2RpZmYgLS1naXQgYS9hYnNsL2NvcHRzL0dFTkVSQVRFRF9jb3B0cy5iemwgYi9hYnNsL2NvcHRzL0dFTkVSQVRFRF9jb3B0cy5iemwKK2luZGV4IDgyZjMzMmYuLjlhNTQ4ZDEgMTAwNjQ0CistLS0gYS9hYnNsL2NvcHRzL0dFTkVSQVRFRF9jb3B0cy5iemwKKysrKyBiL2Fic2wvY29wdHMvR0VORVJBVEVEX2NvcHRzLmJ6bAorQEAgLTIzMSw3ICsyMzEsMyBAQCBBQlNMX1JBTkRPTV9IV0FFU19NU1ZDX1g2NF9GTEFHUyA9IFsKKyAgICAgIi9PYjIiLAorIF0KKyAKKy1BQlNMX1JBTkRPTV9IV0FFU19YNjRfRkxBR1MgPSBbCistICAgICItbWFlcyIsCistICAgICItbXNzZTQuMSIsCistXQorZGlmZiAtLWdpdCBhL2Fic2wvY29wdHMvY29wdHMucHkgYi9hYnNsL2NvcHRzL2NvcHRzLnB5CitpbmRleCAwNjhhYmNlLi5jMmY3MGZiIDEwMDY0NAorLS0tIGEvYWJzbC9jb3B0cy9jb3B0cy5weQorKysrIGIvYWJzbC9jb3B0cy9jb3B0cy5weQorQEAgLTIwMywxMCArMjAzLDYgQEAgQ09QVF9WQVJTID0geworICAgICAjIHRvIGltcHJvdmUgcGVyZm9ybWFuY2Ugb2Ygc29tZSByYW5kb20gYml0IGdlbmVyYXRvcnMuCisgICAgICJBQlNMX1JBTkRPTV9IV0FFU19BUk02NF9GTEFHUyI6IFsiLW1hcmNoPWFybXY4LWErY3J5cHRvIl0sCisgICAgICJBQlNMX1JBTkRPTV9IV0FFU19BUk0zMl9GTEFHUyI6IFsiLW1mcHU9bmVvbiJdLAorLSAgICAiQUJTTF9SQU5ET01fSFdBRVNfWDY0X0ZMQUdTIjogWworLSAgICAgICAgIi1tYWVzIiwKKy0gICAgICAgICItbXNzZTQuMSIsCistICAgIF0sCisgICAgICJBQlNMX1JBTkRPTV9IV0FFU19NU1ZDX1g2NF9GTEFHUyI6IFsKKyAgICAgICAgICIvTzIiLCAgIyBNYXhpbWl6ZSBzcGVlZAorICAgICAgICAgIi9PYjIiLCAgIyBBZ2dyZXNzaXZlIGlubGluaW5nCistLSAKKzIuMjMuMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYWJzZWlsLWNwcC9hYnNlaWwtY3BwLzAwMDEtYWJzbC1hbHdheXMtdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYWJzZWlsLWNwcC9hYnNlaWwtY3BwLzAwMDEtYWJzbC1hbHdheXMtdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJiNTlkOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hYnNlaWwtY3BwL2Fic2VpbC1jcHAvMDAwMS1hYnNsLWFsd2F5cy11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIDE0MjI5ZThjNmY0MmE5NmU0ZDcyNTEyNDE5M2NlZWZhNTRlNWUxYTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCA5IEFwciAyMDIwIDEzOjA2OjI3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGFic2w6IGFsd2F5cyB1c2UgPGFzbS9zZ2lkZWZzLmg+CisKK0ZpeGVzIG1pcHMvbXVzbCBidWlsZCwgc2luY2Ugc2dpZGVmcy5oIGlzIG5vdCBwcmVzZW50IG9uIGFsbCBDIGxpYnJhcmllcworYnV0IG9uIGxpbnV4IGFzbS9zZ2lkZWZzLmggaXMgdGhlcmUgYW5kIGNvbnRhaW5zIHNhbWUgZGVmaW5pdGlvbnMsIHVzaW5nCit0aGF0IG1ha2VzIGl0IHBvcnRhYmxlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGFic2wvYmFzZS9pbnRlcm5hbC9kaXJlY3RfbW1hcC5oIHwgNiArLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9hYnNsL2Jhc2UvaW50ZXJuYWwvZGlyZWN0X21tYXAuaCBiL2Fic2wvYmFzZS9pbnRlcm5hbC9kaXJlY3RfbW1hcC5oCitpbmRleCAyZTVlNDIyLi5jNTE1MzI1IDEwMDY0NAorLS0tIGEvYWJzbC9iYXNlL2ludGVybmFsL2RpcmVjdF9tbWFwLmgKKysrKyBiL2Fic2wvYmFzZS9pbnRlcm5hbC9kaXJlY3RfbW1hcC5oCitAQCAtNDEsMTMgKzQxLDkgQEAKKyAKKyAjaWZkZWYgX19taXBzX18KKyAvLyBJbmNsdWRlIGRlZmluaXRpb25zIG9mIHRoZSBBQkkgY3VycmVudGx5IGluIHVzZS4KKy0jaWZkZWYgX19CSU9OSUNfXworLS8vIEFuZHJvaWQgZG9lc24ndCBoYXZlIHNnaWRlZnMuaCwgYnV0IGRvZXMgaGF2ZSBhc20vc2dpZGVmcy5oLCB3aGljaCBoYXMgdGhlCisrLy8gYmlvbmljL211c2wgQyBsaWJzIGRvbid0IGhhdmUgc2dpZGVmcy5oLCBidXQgZG8gaGF2ZSBhc20vc2dpZGVmcy5oLCB3aGljaCBoYXMgdGhlCisgLy8gZGVmaW5pdGlvbnMgd2UgbmVlZC4KKyAjaW5jbHVkZSA8YXNtL3NnaWRlZnMuaD4KKy0jZWxzZQorLSNpbmNsdWRlIDxzZ2lkZWZzLmg+CistI2VuZGlmICAvLyBfX0JJT05JQ19fCisgI2VuZGlmICAvLyBfX21pcHNfXworIAorIC8vIFNZU19tbWFwIGFuZCBTWVNfbXVubWFwIGFyZSBub3QgZGVmaW5lZCBpbiBBbmRyb2lkLgorLS0gCisyLjI2LjAKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2Fic2VpbC1jcHAvYWJzZWlsLWNwcC8wMDAyLUFkZC1mb3Jnb3R0ZW4tQUJTTF9IQVZFX1ZEU09fU1VQUE9SVC1jb25kaXRpb25hbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hYnNlaWwtY3BwL2Fic2VpbC1jcHAvMDAwMi1BZGQtZm9yZ290dGVuLUFCU0xfSEFWRV9WRFNPX1NVUFBPUlQtY29uZGl0aW9uYWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFiNGE3MwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hYnNlaWwtY3BwL2Fic2VpbC1jcHAvMDAwMi1BZGQtZm9yZ290dGVuLUFCU0xfSEFWRV9WRFNPX1NVUFBPUlQtY29uZGl0aW9uYWwucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSA5Mzg0NzM1MzgzYTBiODY4OGUzZjA1ZWQyM2E1M2YxODg2M2VhZTIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2luYW4gS2F5YSA8c2luYW4ua2F5YUBtaWNyb3NvZnQuY29tPgorRGF0ZTogVHVlLCAxMSBGZWIgMjAyMCAxMTozNjowMCAtMDUwMAorU3ViamVjdDogW1BBVENIXSBBZGQgZm9yZ290dGVuIEFCU0xfSEFWRV9WRFNPX1NVUFBPUlQgY29uZGl0aW9uYWwKKworU2lnbmVkLW9mZi1ieTogU2luYW4gS2F5YSA8c2luYW4ua2F5YUBtaWNyb3NvZnQuY29tPgorLS0tCisgYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV94ODYtaW5sLmluYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3N0YWNrdHJhY2VfeDg2LWlubC5pbmMgYi9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja3RyYWNlX3g4Ni1pbmwuaW5jCitpbmRleCBmZjBmZDMxLi4yODYwN2MzIDEwMDY0NAorLS0tIGEvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV94ODYtaW5sLmluYworKysrIGIvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV94ODYtaW5sLmluYworQEAgLTE3MSw2ICsxNzEsNyBAQCBzdGF0aWMgdm9pZCAqKk5leHRTdGFja0ZyYW1lKHZvaWQgKipvbGRfZnAsIGNvbnN0IHZvaWQgKnVjKSB7CisgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyICprZXJuZWxfcnRfc2lncmV0dXJuX2FkZHJlc3MgPSBudWxscHRyOworICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciAqa2VybmVsX3ZzeXNjYWxsX2FkZHJlc3MgPSBudWxscHRyOworICAgICBpZiAobnVtX3B1c2hfaW5zdHJ1Y3Rpb25zID09IC0xKSB7CisrI2lmZGVmIEFCU0xfSEFWRV9WRFNPX1NVUFBPUlQKKyAgICAgICBhYnNsOjpkZWJ1Z2dpbmdfaW50ZXJuYWw6OlZEU09TdXBwb3J0IHZkc287CisgICAgICAgaWYgKHZkc28uSXNQcmVzZW50KCkpIHsKKyAgICAgICAgIGFic2w6OmRlYnVnZ2luZ19pbnRlcm5hbDo6VkRTT1N1cHBvcnQ6OlN5bWJvbEluZm8KK0BAIC0xOTksNiArMjAwLDkgQEAgc3RhdGljIHZvaWQgKipOZXh0U3RhY2tGcmFtZSh2b2lkICoqb2xkX2ZwLCBjb25zdCB2b2lkICp1YykgeworICAgICAgIH0gZWxzZSB7CisgICAgICAgICBudW1fcHVzaF9pbnN0cnVjdGlvbnMgPSAwOworICAgICAgIH0KKysjZWxzZQorKyAgICAgIG51bV9wdXNoX2luc3RydWN0aW9ucyA9IDA7CisrI2VuZGlmCisgICAgIH0KKyAgICAgaWYgKG51bV9wdXNoX2luc3RydWN0aW9ucyAhPSAwICYmIGtlcm5lbF9ydF9zaWdyZXR1cm5fYWRkcmVzcyAhPSBudWxscHRyICYmCisgICAgICAgICBvbGRfZnBbMV0gPT0ga2VybmVsX3J0X3NpZ3JldHVybl9hZGRyZXNzKSB7CistLSAKKzIuMjAuMS53aW5kb3dzLjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2Fic2VpbC1jcHAvYWJzZWlsLWNwcC8wMDAzLUFkZC1mUElDLW9wdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hYnNlaWwtY3BwL2Fic2VpbC1jcHAvMDAwMy1BZGQtZlBJQy1vcHRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI3ODgxMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hYnNlaWwtY3BwL2Fic2VpbC1jcHAvMDAwMy1BZGQtZlBJQy1vcHRpb24ucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBkNzE2MGQ2NDdjOGY4ODQ3ZjNlYThkN2IwZWIyMjI5MzY5NjJjMWFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2luYW4gS2F5YSA8c2luYW4ua2F5YUBtaWNyb3NvZnQuY29tPgorRGF0ZTogVHVlLCAxMSBGZWIgMjAyMCAxMTo1ODowMiAtMDUwMAorU3ViamVjdDogW1BBVENIXSBBZGQgZlBJQyBvcHRpb24KKworU2lnbmVkLW9mZi1ieTogU2luYW4gS2F5YSA8c2luYW4ua2F5YUBtaWNyb3NvZnQuY29tPgorLS0tCisgQ01ha2VMaXN0cy50eHQgfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IDc0YTNhNGMuLjRmODM3YjMgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC03OSw2ICs3OSw5IEBAIG9wdGlvbihBQlNMX1VTRV9HT09HTEVURVNUX0hFQUQKKyAKKyBvcHRpb24oQUJTTF9SVU5fVEVTVFMgIklmIE9OLCBBYnNlaWwgdGVzdHMgd2lsbCBiZSBydW4uIiBPRkYpCisgCisrIyBsaW5rIGZhaWxzIG9uIGFybTY0IGFuZCB4ODYtNjQgd2l0aG91dCB0aGlzCisrYWRkX2NvbXBpbGVfb3B0aW9ucygtZlBJQykKKysKKyBpZigke0FCU0xfUlVOX1RFU1RTfSkKKyAgICMgZW5hYmxlIENUZXN0LiAgVGhpcyB3aWxsIHNldCBCVUlMRF9URVNUSU5HIHRvIE9OIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkCisgICAjIG9uIHRoZSBjb21tYW5kIGxpbmUKKy0tIAorMi4yMC4xLndpbmRvd3MuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYWJzZWlsLWNwcC9hYnNlaWwtY3BwX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hYnNlaWwtY3BwL2Fic2VpbC1jcHBfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhNDQxMzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYWJzZWlsLWNwcC9hYnNlaWwtY3BwX2dpdC5iYgpAQCAtMCwwICsxLDU3IEBACitTVU1NQVJZID0gIkFic2VpbCBpcyBhIGNwcCBsaWJyYXJ5IGxpa2UgU1RMIgorREVTQ1JJUFRJT04gPSAiQWJzZWlsIHByb3ZpZGVzIHBpZWNlcyBtaXNzaW5nIGZyb20gdGhlIEMrKyBzdGFuZGFyZC4gQ29udGFpbnMgXAorYWRkaXRpb25hbCB1c2VmdWwgbGlicmFyaWVzIGxpa2UgYWxnb3JpdGhtLCBjb250YWluZXIsIGRlYnVnZ2luZywgaGFzaCwgbWVtb3J5LCBcCittZXRhLCBudW1lcmljLCBzdHJpbmdzLCBzeW5jaHJvbml6YXRpb24sIHRpbWUsIHR5cGVzIGFuZCB1dGlsaXR5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9hYnNlaWwuaW8vIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZGY1MmM2ZWRiN2FkYzIyZTUzM2IyYmFjYzNiZDM5MTUiCisKK1BWID0gIjIwMTkwODA4K2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gImFhODQ0ODk5YzkzN2JkZTVkMmIyNGYyNzZiNTk5OTdlNWI2NjhiZGUiCitCUkFOQ0ggPSAibHRzXzIwMTlfMDhfMDgiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYWJzZWlsL2Fic2VpbC1jcHA7YnJhbmNoPSR7QlJBTkNIfSAgICAgICAgICAgICAgICBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1tYWVzLW9wdGlvbi1mcm9tLWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoICAgICAgICBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1mb3Jnb3R0ZW4tQUJTTF9IQVZFX1ZEU09fU1VQUE9SVC1jb25kaXRpb25hbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUFkZC1mUElDLW9wdGlvbi5wYXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1SSVNDVi1zdXBwb3J0LXRvLUdldFByb2dyYW1Db3VudGVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWJzbC1hbHdheXMtdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2ggXAorICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJleGVjaW5mbyAiCisKK0FTTkVFREVEX2NsYXNzLW5hdGl2ZSA9ICIiCitBU05FRURFRF9jbGFzcy1uYXRpdmVzZGsgPSAiIgorCitpbmhlcml0IGNtYWtlCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK3B5dGhvbiAoKSB7CisgICAgYXJjaCA9IGQuZ2V0VmFyKCJUQVJHRVRfQVJDSCIpCisKKyAgICBpZiBhcmNoID09ICJhYXJjaDY0IjoKKyAgICAgICAgdHVuZXMgPSBkLmdldFZhcigiVFVORV9GRUFUVVJFUyIpCisgICAgICAgIGlmIG5vdCB0dW5lczoKKyAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCIlcy0lcyBOZWVkcyBzdXBwb3J0IGZvciBjcnlwdG8gb24gYXJtdjgiICUgKHBrZ24sIHBrZ3YpKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHBrZ24gPSBkLmdldFZhcigiUE4iKQorICAgICAgICBwa2d2ID0gZC5nZXRWYXIoIlBWIikKKyAgICAgICAgaWYgImNyeXB0byIgbm90IGluIHR1bmVzOgorICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIiVzLSVzIE5lZWRzIHN1cHBvcnQgZm9yIGNyeXB0byBvbiBhcm12OCIgJSAocGtnbiwgcGtndikpCisKKyAgICBpZiBhcmNoID09ICJ4ODZfNjQiOgorICAgICAgICB0dW5lcyA9IGQuZ2V0VmFyKCJUVU5FX0ZFQVRVUkVTIikKKyAgICAgICAgaWYgbm90IHR1bmVzOgorICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiJXMtJXMgTmVlZHMgc3VwcG9ydCBmb3IgY29yZWk3IG9uIHg4Nl82NCIgJSAocGtnbiwgcGtndikpCisgICAgICAgICAgIHJldHVybgorICAgICAgICBwa2duID0gZC5nZXRWYXIoIlBOIikKKyAgICAgICAgcGtndiA9IGQuZ2V0VmFyKCJQViIpCisgICAgICAgIGlmICJjb3JlaTciIG5vdCBpbiB0dW5lczoKKyAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCIlcy0lcyBOZWVkcyBzdXBwb3J0IGZvciBjb3JlaTcgb24geDg2XzY0IiAlIChwa2duLCBwa2d2KSkKKworfQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL2J1aWxkLzAwMDEtUmlzY3YtQWRkLXJpc2Mtdi1BbmRyb2lkLWNvbmZpZy1oZWFkZXIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL2J1aWxkLzAwMDEtUmlzY3YtQWRkLXJpc2Mtdi1BbmRyb2lkLWNvbmZpZy1oZWFkZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdjNDQzYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvYnVpbGQvMDAwMS1SaXNjdi1BZGQtcmlzYy12LUFuZHJvaWQtY29uZmlnLWhlYWRlci5wYXRjaApAQCAtMCwwICsxLDM1OSBAQAorRnJvbSA4MmRjZTEzZWE3YjViMzFjNjM4NTFiZDY3ZjY2MDcyNDEzOTE3ZTczIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbnhpIE1hbyA8bWFvY2hlbnhpQGVzd2luLmNvbT4KK0RhdGU6IE1vbiwgMjAgQXByIDIwMjAgMTU6MzI6NDAgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzFdIFJpc2N2OiBBZGQgcmlzYy12IEFuZHJvaWQgY29uZmlnIGhlYWRlcgorCistLS0KKyAuLi4vYXJjaC9saW51eC1yaXNjdjY0L0FuZHJvaWRDb25maWcuaCAgICAgICAgfCAzNDAgKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDM0MCBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGNvcmUvY29tYm8vaW5jbHVkZS9hcmNoL2xpbnV4LXJpc2N2NjQvQW5kcm9pZENvbmZpZy5oCisKK2RpZmYgLS1naXQgYS9jb3JlL2NvbWJvL2luY2x1ZGUvYXJjaC9saW51eC1yaXNjdjY0L0FuZHJvaWRDb25maWcuaCBiL2NvcmUvY29tYm8vaW5jbHVkZS9hcmNoL2xpbnV4LXJpc2N2NjQvQW5kcm9pZENvbmZpZy5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uYmNiZGE4Zjg3ZgorLS0tIC9kZXYvbnVsbAorKysrIGIvY29yZS9jb21iby9pbmNsdWRlL2FyY2gvbGludXgtcmlzY3Y2NC9BbmRyb2lkQ29uZmlnLmgKK0BAIC0wLDAgKzEsMzQwIEBACisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKyAqCisrICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisrICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKyAqCisrICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKysgKgorKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKysgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKysgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKysgKi8KKysKKysvKgorKyAqIEFuZHJvaWQgY29uZmlnIC0tICJhbmRyb2lkLWFhcmNoNjQiLiAgVXNlZCBmb3IgQVJNIGFhcmNoNjQgZGV2aWNlIGJ1aWxkcy4KKysgKi8KKysjaWZuZGVmIF9BTkRST0lEX0NPTkZJR19ICisrI2RlZmluZSBfQU5EUk9JRF9DT05GSUdfSAorKworKy8qCisrICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhISEgSU1QT1JUQU5UICEhIQorKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqCisrICogVGhpcyBmaWxlIGlzIGluY2x1ZGVkIGJ5IEFMTCBDL0MrKyBzb3VyY2UgZmlsZXMuICBEb24ndCBwdXQgYW55dGhpbmcgaW4KKysgKiBoZXJlIHVubGVzcyB5b3UgYXJlIGFic29sdXRlbHkgY2VydGFpbiBpdCBjYW4ndCBnbyBhbnl3aGVyZSBlbHNlLgorKyAqCisrICogQW55IEMrKyBzdHVmZiBtdXN0IGJlIHdyYXBwZWQgd2l0aCAiI2lmZGVmIF9fY3BsdXNwbHVzIi4gIERvIG5vdCB1c2UgIi8vIgorKyAqIGNvbW1lbnRzLgorKyAqLworKworKy8qCisrICogVGhyZWFkaW5nIG1vZGVsLiAgQ2hvb3NlIG9uZToKKysgKgorKyAqIEhBVkVfUFRIUkVBRFMgLSB1c2UgdGhlIHB0aHJlYWRzIGxpYnJhcnkuCisrICogSEFWRV9XSU4zMl9USFJFQURTIC0gdXNlIFdpbjMyIHRocmVhZCBwcmltaXRpdmVzLgorKyAqICAtLSBjb21iaW5lIEhBVkVfQ1JFQVRFVEhSRUFELCBIQVZFX0NSRUFURU1VVEVYLCBhbmQgSEFWRV9fQkVHSU5USFJFQURFWAorKyAqLworKyNkZWZpbmUgSEFWRV9QVEhSRUFEUworKworKy8qCisrICogRG8gd2UgaGF2ZSBwdGhyZWFkX3NldG5hbWVfbnAoKT8KKysgKgorKyAqIChIQVZFX1BUSFJFQURfU0VUTkFNRV9OUCBpcyB1c2VkIGJ5IFdlYktpdCB0byBlbmFibGUgYSBmdW5jdGlvbiB3aXRoCisrICogdGhlIHNhbWUgbmFtZSBidXQgZGlmZmVyZW50IHBhcmFtZXRlcnMsIHNvIHdlIGNhbid0IHVzZSB0aGF0IGhlcmUuKQorKyAqLworKyNkZWZpbmUgSEFWRV9BTkRST0lEX1BUSFJFQURfU0VUTkFNRV9OUAorKworKy8qCisrICogRG8gd2UgaGF2ZSB0aGUgZnV0ZXggc3lzY2FsbD8KKysgKi8KKysjZGVmaW5lIEhBVkVfRlVURVgKKysKKysvKgorKyAqIFByb2Nlc3MgY3JlYXRpb24gbW9kZWwuICBDaG9vc2Ugb25lOgorKyAqCisrICogSEFWRV9GT1JLRVhFQyAtIHVzZSBmb3JrKCkgYW5kIGV4ZWMoKQorKyAqIEhBVkVfV0lOMzJfUFJPQyAtIHVzZSBDcmVhdGVQcm9jZXNzKCkKKysgKi8KKysjZGVmaW5lIEhBVkVfRk9SS0VYRUMKKysKKysvKgorKyAqIFByb2Nlc3Mgb3V0LW9mLW1lbW9yeSBhZGp1c3RtZW50LiAgU2V0IGlmIHJ1bm5pbmcgb24gTGludXgsCisrICogd2hlcmUgd2UgY2FuIHdyaXRlIHRvIC9wcm9jLzxwaWQ+L29vbV9hZGogdG8gbW9kaWZ5IHRoZSBvdXQtb2YtbWVtb3J5CisrICogYmFkbmVzcyBhZGp1c3RtZW50LgorKyAqLworKyNkZWZpbmUgSEFWRV9PT01fQURKCisrCisrLyoKKysgKiBJUEMgbW9kZWwuICBDaG9vc2Ugb25lOgorKyAqCisrICogSEFWRV9TWVNWX0lQQyAtIHVzZSB0aGUgY2xhc3NpYyBTeXNWIElQQyBtZWNoYW5pc21zIChzZW1nZXQsIHNobWdldCkuCisrICogSEFWRV9NQUNPU1hfSVBDIC0gdXNlIE1hY2ludG9zaCBJUEMgbWVjaGFuaXNtcyAoc2VtX29wZW4sIG1tYXApLgorKyAqIEhBVkVfV0lOMzJfSVBDIC0gdXNlIFdpbjMyIElQQyAoQ3JlYXRlU2VtYXBob3JlLCBDcmVhdGVGaWxlTWFwcGluZykuCisrICogSEFWRV9BTkRST0lEX0lQQyAtIHVzZSBBbmRyb2lkIHZlcnNpb25zICg/LCBtbWFwKS4KKysgKi8KKysjZGVmaW5lIEhBVkVfQU5EUk9JRF9JUEMKKysKKysvKgorKyAqIE1lbW9yeS1tYXBwaW5nIG1vZGVsLiBDaG9vc2Ugb25lOgorKyAqCisrICogSEFWRV9QT1NJWF9GSUxFTUFQIC0gdXNlIHRoZSBQb3NpeCBzeXMvbW1hcC5oCisrICogSEFWRV9XSU4zMl9GSUxFTUFQIC0gdXNlIFdpbjMyIGZpbGVtYXBzCisrICovCisrI2RlZmluZSAgSEFWRV9QT1NJWF9GSUxFTUFQCisrCisrLyoKKysgKiBEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSA8dGVybWlvLmg+CisrICovCisrI2RlZmluZSAgSEFWRV9URVJNSU9fSCAxCisrCisrLyoKKysgKiBEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSA8c3lzL3NlbmRmaWxlLmg+CisrICovCisrI2RlZmluZSAgSEFWRV9TWVNfU0VOREZJTEVfSCAxCisrCisrLyoKKysgKiBEZWZpbmUgdGhpcyBpZiB5b3UgYnVpbGQgYWdhaW5zdCBNU1ZDUlQuRExMCisrICovCisrLyogI2RlZmluZSBIQVZFX01TX0NfUlVOVElNRSAqLworKworKy8qCisrICogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgc3lzL3Vpby5oCisrICovCisrI2RlZmluZSAgSEFWRV9TWVNfVUlPX0ggMQorKworKy8qCisrICogRGVmaW5lIHRoaXMgaWYgeW91ciBwbGF0Zm9ybXMgaW1wbGVtZW50cyBzeW1ib2xpYyBsaW5rcworKyAqIGluIGl0cyBmaWxlc3lzdGVtcworKyAqLworKyNkZWZpbmUgSEFWRV9TWU1MSU5LUworKworKy8qCisrICogRGVmaW5lIHRoaXMgaWYgd2UgaGF2ZSBsb2NhbHRpbWVfcigpLgorKyAqLworKy8qICNkZWZpbmUgSEFWRV9MT0NBTFRJTUVfUiAxICovCisrCisrLyoKKysgKiBEZWZpbmUgdGhpcyBpZiB3ZSBoYXZlIGdldGhvc3RieW5hbWVfcigpLgorKyAqLworKy8qICNkZWZpbmUgSEFWRV9HRVRIT1NUQllOQU1FX1IgKi8KKysKKysvKgorKyAqIERlZmluZSB0aGlzIGlmIHdlIGhhdmUgaW9jdGwoKS4KKysgKi8KKysjZGVmaW5lIEhBVkVfSU9DVEwKKysKKysvKgorKyAqIERlZmluZSB0aGlzIGlmIHdlIHdhbnQgdG8gdXNlIFdpblNvY2suCisrICovCisrLyogI2RlZmluZSBIQVZFX1dJTlNPQ0sgKi8KKysKKysvKgorKyAqIERlZmluZSB0aGlzIGlmIGhhdmUgY2xvY2tfZ2V0dGltZSgpIGFuZCBmcmllbmRzCisrICovCisrI2RlZmluZSBIQVZFX1BPU0lYX0NMT0NLUworKworKy8qCisrICogRGVmaW5lIHRoaXMgaWYgd2UgaGF2ZSBsaW51eCBzdHlsZSBlcG9sbCgpCisrICovCisrI2RlZmluZSBIQVZFX0VQT0xMCisrCisrLyoKKysgKiBFbmRpYW5uZXNzIG9mIHRoZSB0YXJnZXQgbWFjaGluZS4gIENob29zZSBvbmU6CisrICoKKysgKiBIQVZFX0VORElBTl9IIC0tIGhhdmUgZW5kaWFuLmggaGVhZGVyIHdlIGNhbiBpbmNsdWRlLgorKyAqIEhBVkVfTElUVExFX0VORElBTiAtLSB3ZSBhcmUgbGl0dGxlIGVuZGlhbi4KKysgKiBIQVZFX0JJR19FTkRJQU4gLS0gd2UgYXJlIGJpZyBlbmRpYW4uCisrICovCisrI2RlZmluZSBIQVZFX0VORElBTl9ICisrI2RlZmluZSBIQVZFX0xJVFRMRV9FTkRJQU4KKysKKysjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTIDY0CisrLyogI2RlZmluZSBfTEFSR0VGSUxFX1NPVVJDRSAxICovCisrCisrLyoKKysgKiBEZWZpbmUgaWYgcGxhdGZvcm0gaGFzIG9mZjY0X3QgKGFuZCBsc2VlazY0IGFuZCBvdGhlciB4eHg2NCBmdW5jdGlvbnMpCisrICovCisrI2RlZmluZSBIQVZFX09GRjY0X1QKKysKKysvKgorKyAqIERlZmluZWQgaWYgd2UgaGF2ZSB0aGUgYmFja3RyYWNlKCkgY2FsbCBmb3IgcmV0cmlldmluZyBhIHN0YWNrIHRyYWNlLgorKyAqIE5lZWRlZCBmb3IgQ2FsbFN0YWNrIHRvIG9wZXJhdGU7IGlmIG5vdCBkZWZpbmVkLCBDYWxsU3RhY2sgaXMKKysgKiBub24tZnVuY3Rpb25hbC4KKysgKi8KKysjZGVmaW5lIEhBVkVfQkFDS1RSQUNFIDAKKysKKysvKgorKyAqIERlZmluZWQgaWYgd2UgaGF2ZSB0aGUgY3h4YWJpLmggaGVhZGVyIGZvciBkZW1hbmdsaW5nIEMrKyBzeW1ib2xzLiAgSWYKKysgKiBub3QgZGVmaW5lZCwgc3RhY2sgY3Jhd2xzIHdpbGwgYmUgZGlzcGxheWVkIHdpdGggcmF3IG1hbmdsZWQgc3ltYm9scworKyAqLworKyNkZWZpbmUgSEFWRV9DWFhBQkkgMAorKworKy8qCisrICogRGVmaW5lZCBpZiB3ZSBoYXZlIHRoZSBnZXR0aWQoKSBzeXN0ZW0gY2FsbC4KKysgKi8KKysjZGVmaW5lIEhBVkVfR0VUVElECisrCisrLyoKKysgKiBEZWZpbmVkIGlmIHdlIGhhdmUgdGhlIHNjaGVkX3NldHNjaGVkdWxlcigpIGNhbGwKKysgKi8KKysjZGVmaW5lIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSCisrCisrLyoKKysgKiBBZGQgYW55IGV4dHJhIHBsYXRmb3JtLXNwZWNpZmljIGRlZmluZXMgaGVyZS4KKysgKi8KKysjaWZuZGVmIF9fbGludXhfXworKyNkZWZpbmUgX19saW51eF9fCisrI2VuZGlmCisrCisrLyoKKysgKiBEZWZpbmUgaWYgd2UgaGF2ZSA8bWFsbG9jLmg+IGhlYWRlcgorKyAqLworKyNkZWZpbmUgSEFWRV9NQUxMT0NfSAorKworKy8qCisrICogRGVmaW5lIGlmIHdlJ3JlIHJ1bm5pbmcgb24gKm91ciogbGludXggb24gZGV2aWNlIG9yIGVtdWxhdG9yLgorKyAqLworKyNkZWZpbmUgSEFWRV9BTkRST0lEX09TIDEKKysKKysvKgorKyAqIERlZmluZSBpZiB3ZSBoYXZlIExpbnV4LXN0eWxlIG5vbi1maWxlc3lzdGVtIFVuaXggRG9tYWluIFNvY2tldHMKKysgKi8KKysjZGVmaW5lIEhBVkVfTElOVVhfTE9DQUxfU09DS0VUX05BTUVTUEFDRSAxCisrCisrLyoKKysgKiBEZWZpbmUgaWYgd2UgaGF2ZSBMaW51eCdzIGlub3RpZnkgaW4gPHN5cy9pbm90aWZ5Lmg+LgorKyAqLworKyNkZWZpbmUgSEFWRV9JTk9USUZZIDEKKysKKysvKgorKyAqIERlZmluZSBpZiB3ZSBoYXZlIG1hZHZpc2UoKSBpbiA8c3lzL21tYW4uaD4KKysgKi8KKysjZGVmaW5lIEhBVkVfTUFEVklTRSAxCisrCisrLyoKKysgKiBEZWZpbmUgaWYgdG0gc3RydWN0IGhhcyB0bV9nbXRvZmYgZmllbGQKKysgKi8KKysjZGVmaW5lIEhBVkVfVE1fR01UT0ZGIDEKKysKKysvKgorKyAqIERlZmluZSBpZiBkaXJlbnQgc3RydWN0IGhhcyBkX3R5cGUgZmllbGQKKysgKi8KKysjZGVmaW5lIEhBVkVfRElSRU5UX0RfVFlQRSAxCisrCisrLyoKKysgKiBEZWZpbmUgaWYgbGliYyBpbmNsdWRlcyBBbmRyb2lkIHN5c3RlbSBwcm9wZXJ0aWVzIGltcGxlbWVudGF0aW9uLgorKyAqLworKyNkZWZpbmUgSEFWRV9MSUJDX1NZU1RFTV9QUk9QRVJUSUVTIDEKKysKKysvKgorKyAqIERlZmluZSBpZiBzeXN0ZW0gcHJvdmlkZXMgYSBzeXN0ZW0gcHJvcGVydHkgc2VydmVyIChzaG91bGQgYmUKKysgKiBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCBIQVZFX0xJQkNfU1lTVEVNX1BST1BFUlRJRVMpLgorKyAqLworKy8qICNkZWZpbmUgSEFWRV9TWVNURU1fUFJPUEVSVFlfU0VSVkVSICovCisrCisrLyoKKysgKiBXaGF0IENQVSBhcmNoaXRlY3R1cmUgZG9lcyB0aGlzIHBsYXRmb3JtIHVzZT8KKysgKi8KKysjZGVmaW5lIEFSQ0hfQUFSQ0g2NAorKworKy8qCisrICogRGVmaW5lIGlmIHRoZSBzaXplIG9mIGVudW1zIGlzIGFzIHNob3J0IGFzIHBvc3NpYmxlLAorKyAqLworKy8qICNkZWZpbmUgSEFWRV9TSE9SVF9FTlVNUyAqLworKworKy8qCisrICogc3ByaW50ZigpIGZvcm1hdCBzdHJpbmcgZm9yIHNoYXJlZCBsaWJyYXJ5IG5hbWluZy4KKysgKi8KKysjZGVmaW5lIE9TX1NIQVJFRF9MSUJfRk9STUFUX1NUUiAgICAibGliJXMuc28iCisrCisrLyoKKysgKiB0eXBlIGZvciB0aGUgdGhpcmQgYXJndW1lbnQgdG8gbWluY29yZSgpLgorKyAqLworKyNkZWZpbmUgTUlOQ09SRV9QT0lOVEVSX1RZUEUgdW5zaWduZWQgY2hhciAqCisrCisrLyoKKysgKiBUaGUgZGVmYXVsdCBwYXRoIHNlcGFyYXRvciBmb3IgdGhlIHBsYXRmb3JtCisrICovCisrI2RlZmluZSBPU19QQVRIX1NFUEFSQVRPUiAnLycKKysKKysvKgorKyAqIElzIHRoZSBmaWxlc3lzdGVtIGNhc2Ugc2Vuc2l0aXZlPworKyAqLworKyNkZWZpbmUgT1NfQ0FTRV9TRU5TSVRJVkUKKysKKysvKgorKyAqIERlZmluZSBpZiA8c3lzL3NvY2tldC5oPiBleGlzdHMuCisrICovCisrI2RlZmluZSBIQVZFX1NZU19TT0NLRVRfSCAxCisrCisrLyoKKysgKiBEZWZpbmUgaWYgdGhlIHN0cmxjcHkoKSBmdW5jdGlvbiBleGlzdHMgb24gdGhlIHN5c3RlbS4KKysgKi8KKysjZGVmaW5lIEhBVkVfU1RSTENQWSAxCisrCisrLyoKKysgKiBEZWZpbmUgaWYgdGhlIG9wZW5fbWVtc3RyZWFtKCkgZnVuY3Rpb24gZXhpc3RzIG9uIHRoZSBzeXN0ZW0uCisrICovCisrLyogI2RlZmluZSBIQVZFX09QRU5fTUVNU1RSRUFNIDEgKi8KKysKKysvKgorKyAqIERlZmluZSBpZiB0aGUgQlNEIGZ1bm9wZW4oKSBmdW5jdGlvbiBleGlzdHMgb24gdGhlIHN5c3RlbS4KKysgKi8KKysjZGVmaW5lIEhBVkVfRlVOT1BFTiAxCisrCisrLyoKKysgKiBEZWZpbmUgaWYgcHJjdGwoKSBleGlzdHMKKysgKi8KKysjZGVmaW5lIEhBVkVfUFJDVEwgMQorKworKy8qCisrICogRGVmaW5lIGlmIHdyaXRldigpIGV4aXN0cworKyAqLworKyNkZWZpbmUgSEFWRV9XUklURVYgMQorKworKy8qCisrICogRGVmaW5lIGlmIDxzdGRpbnQuaD4gZXhpc3RzLgorKyAqLworKyNkZWZpbmUgSEFWRV9TVERJTlRfSCAxCisrCisrLyoKKysgKiBEZWZpbmUgaWYgPHN0ZGJvb2wuaD4gZXhpc3RzLgorKyAqLworKyNkZWZpbmUgSEFWRV9TVERCT09MX0ggMQorKworKy8qCisrICogRGVmaW5lIGlmIDxzY2hlZC5oPiBleGlzdHMuCisrICovCisrI2RlZmluZSBIQVZFX1NDSEVEX0ggMQorKworKy8qCisrICogRGVmaW5lIGlmIHByZWFkKCkgZXhpc3RzCisrICovCisrI2RlZmluZSBIQVZFX1BSRUFEIDEKKysKKysvKgorKyAqIERlZmluZSBpZiB3ZSBoYXZlIHN0X210aW0gaW4gc3RydWN0IHN0YXQKKysgKi8KKysjZGVmaW5lIEhBVkVfU1RBVF9TVF9NVElNIDEKKysKKysvKgorKyAqIERlZmluZSBpZiBwcmludGYoKSBzdXBwb3J0cyAlemQgZm9yIHNpemVfdCBhcmd1bWVudHMKKysgKi8KKysjZGVmaW5lIEhBVkVfUFJJTlRGX1pEIDEKKysKKysvKgorKyAqIERlZmluZSB0byAxIGlmIDxzdGRsaWIuaD4gcHJvdmlkZXMgcXNvcnRfcigpIHdpdGggYSBCU0Qgc3R5bGUgZnVuY3Rpb24gcHJvdG90eXBlLgorKyAqLworKyNkZWZpbmUgSEFWRV9CU0RfUVNPUlRfUiAwCisrCisrLyoKKysgKiBEZWZpbmUgdG8gMSBpZiA8c3RkbGliLmg+IHByb3ZpZGVzIHFzb3J0X3IoKSB3aXRoIGEgR05VIHN0eWxlIGZ1bmN0aW9uIHByb3RvdHlwZS4KKysgKi8KKysjZGVmaW5lIEhBVkVfR05VX1FTT1JUX1IgMAorKworKyNlbmRpZiAvKiBfQU5EUk9JRF9DT05GSUdfSCAqLworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9jb3JlLzAwMTMtYWRiLVN1cHBvcnQtcmlzY3Y2NC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvY29yZS8wMDEzLWFkYi1TdXBwb3J0LXJpc2N2NjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg0MzRhZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvY29yZS8wMDEzLWFkYi1TdXBwb3J0LXJpc2N2NjQucGF0Y2gKQEAgLTAsMCArMSwxODkgQEAKK0Zyb20gNDhkZGY0ZmI5OTk5MzE5NDJjMzU5MzUwZmIzMWNkNTU3NTE0ZTFjNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW54aSBNYW8gPG1hb2NoZW54aUBlc3dpbi5jb20+CitEYXRlOiBNb24sIDIwIEFwciAyMDIwIDE1OjI3OjIyICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMS8xXSBhZGI6IFN1cHBvcnQgcmlzY3Y2NAorCistLS0KKyBpbmNsdWRlL2N1dGlscy9hdG9taWMtaW5saW5lLmggIHwgICAyICsKKyBpbmNsdWRlL2N1dGlscy9hdG9taWMtcmlzY3Y2NC5oIHwgMTU2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAxNTggaW5zZXJ0aW9ucygrKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2N1dGlscy9hdG9taWMtcmlzY3Y2NC5oCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2N1dGlscy9hdG9taWMtaW5saW5lLmggYi9pbmNsdWRlL2N1dGlscy9hdG9taWMtaW5saW5lLmgKK2luZGV4IGEzMWU5MTM1NzkuLmI1ZGMzODIwOWMgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2N1dGlscy9hdG9taWMtaW5saW5lLmgKKysrKyBiL2luY2x1ZGUvY3V0aWxzL2F0b21pYy1pbmxpbmUuaAorQEAgLTU1LDYgKzU1LDggQEAgZXh0ZXJuICJDIiB7CisgI2luY2x1ZGUgPGN1dGlscy9hdG9taWMtbWlwczY0Lmg+CisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKyAjaW5jbHVkZSA8Y3V0aWxzL2F0b21pYy1taXBzLmg+CisrI2VsaWYgZGVmaW5lZChfX3Jpc2N2KSAmJiBfX3Jpc2N2X3hsZW4gPT0gNjQKKysjaW5jbHVkZSA8Y3V0aWxzL2F0b21pYy1yaXNjdjY0Lmg+CisgI2Vsc2UKKyAjZXJyb3IgYXRvbWljIG9wZXJhdGlvbnMgYXJlIHVuc3VwcG9ydGVkCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jdXRpbHMvYXRvbWljLXJpc2N2NjQuaCBiL2luY2x1ZGUvY3V0aWxzL2F0b21pYy1yaXNjdjY0LmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4yNjY0ZGI1YTg2CistLS0gL2Rldi9udWxsCisrKysgYi9pbmNsdWRlL2N1dGlscy9hdG9taWMtcmlzY3Y2NC5oCitAQCAtMCwwICsxLDE1NiBAQAorKy8qCisrICogQ29weXJpZ2h0IChDKSAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKysgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAqCisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoKKysgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisrICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKysgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUworKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisrICogQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAorKyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsCisrICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTCisrICogT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VECisrICogQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorKyAqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorKyAqIFNVQ0ggREFNQUdFLgorKyAqLworKworKyNpZm5kZWYgQU5EUk9JRF9DVVRJTFNfQVRPTUlDX1JJU0NWNjRfSAorKyNkZWZpbmUgQU5EUk9JRF9DVVRJTFNfQVRPTUlDX1JJU0NWNjRfSAorKworKyNpbmNsdWRlIDxzdGRpbnQuaD4KKysKKysjaWZuZGVmIEFORFJPSURfQVRPTUlDX0lOTElORQorKyNkZWZpbmUgQU5EUk9JRF9BVE9NSUNfSU5MSU5FIGlubGluZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkKKysjZW5kaWYKKysKKysvKgorKyAgIFRPRE9BQXJjaDY0OiBSZXZpc2l0IHRoZSBiZWxvdyBmdW5jdGlvbnMgYW5kIGNoZWNrIGZvciBwb3RlbnRpYWwKKysgICBvcHRpbWl6YXRpb25zIHVzaW5nIGFzc2VtYmx5IGNvZGUgb3Igb3RoZXJ3aXNlLgorKyovCisrCisrZXh0ZXJuIEFORFJPSURfQVRPTUlDX0lOTElORQorK3ZvaWQgYW5kcm9pZF9jb21waWxlcl9iYXJyaWVyKHZvaWQpCisreworKyAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIiIgOiA6IDogIm1lbW9yeSIpOworK30KKysKKytleHRlcm4gQU5EUk9JRF9BVE9NSUNfSU5MSU5FCisrdm9pZCBhbmRyb2lkX21lbW9yeV9iYXJyaWVyKHZvaWQpCisreworKyAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZlbmNlIHJ3LHJ3IiA6IDogOiAibWVtb3J5Iik7CisrfQorKworK2V4dGVybiBBTkRST0lEX0FUT01JQ19JTkxJTkUKKytpbnQzMl90IGFuZHJvaWRfYXRvbWljX2FjcXVpcmVfbG9hZCh2b2xhdGlsZSBjb25zdCBpbnQzMl90ICpwdHIpCisreworKyAgICBpbnQzMl90IHZhbHVlID0gKnB0cjsKKysgICAgYW5kcm9pZF9tZW1vcnlfYmFycmllcigpOworKyAgICByZXR1cm4gdmFsdWU7CisrfQorKworK2V4dGVybiBBTkRST0lEX0FUT01JQ19JTkxJTkUKKytpbnQzMl90IGFuZHJvaWRfYXRvbWljX3JlbGVhc2VfbG9hZCh2b2xhdGlsZSBjb25zdCBpbnQzMl90ICpwdHIpCisreworKyAgICBhbmRyb2lkX21lbW9yeV9iYXJyaWVyKCk7CisrICAgIHJldHVybiAqcHRyOworK30KKysKKytleHRlcm4gQU5EUk9JRF9BVE9NSUNfSU5MSU5FCisrdm9pZCBhbmRyb2lkX2F0b21pY19hY3F1aXJlX3N0b3JlKGludDMyX3QgdmFsdWUsIHZvbGF0aWxlIGludDMyX3QgKnB0cikKKyt7CisrICAgICpwdHIgPSB2YWx1ZTsKKysgICAgYW5kcm9pZF9tZW1vcnlfYmFycmllcigpOworK30KKysKKytleHRlcm4gQU5EUk9JRF9BVE9NSUNfSU5MSU5FCisrdm9pZCBhbmRyb2lkX2F0b21pY19yZWxlYXNlX3N0b3JlKGludDMyX3QgdmFsdWUsIHZvbGF0aWxlIGludDMyX3QgKnB0cikKKyt7CisrICAgIGFuZHJvaWRfbWVtb3J5X2JhcnJpZXIoKTsKKysgICAgKnB0ciA9IHZhbHVlOworK30KKysKKytleHRlcm4gQU5EUk9JRF9BVE9NSUNfSU5MSU5FCisraW50IGFuZHJvaWRfYXRvbWljX2NhcyhpbnQzMl90IG9sZF92YWx1ZSwgaW50MzJfdCBuZXdfdmFsdWUsCisrICAgICAgICAgICAgICAgICAgICAgICB2b2xhdGlsZSBpbnQzMl90ICpwdHIpCisreworKyAgICByZXR1cm4gX19zeW5jX3ZhbF9jb21wYXJlX2FuZF9zd2FwKHB0ciwgb2xkX3ZhbHVlLCBuZXdfdmFsdWUpICE9IG9sZF92YWx1ZTsKKyt9CisrCisrZXh0ZXJuIEFORFJPSURfQVRPTUlDX0lOTElORQorK2ludCBhbmRyb2lkX2F0b21pY19hY3F1aXJlX2NhcyhpbnQzMl90IG9sZF92YWx1ZSwgaW50MzJfdCBuZXdfdmFsdWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvbGF0aWxlIGludDMyX3QgKnB0cikKKyt7CisrICAgIGludCBzdGF0dXMgPSBhbmRyb2lkX2F0b21pY19jYXMob2xkX3ZhbHVlLCBuZXdfdmFsdWUsIHB0cik7CisrICAgIGFuZHJvaWRfbWVtb3J5X2JhcnJpZXIoKTsKKysgICAgcmV0dXJuIHN0YXR1czsKKyt9CisrCisrZXh0ZXJuIEFORFJPSURfQVRPTUlDX0lOTElORQorK2ludCBhbmRyb2lkX2F0b21pY19yZWxlYXNlX2NhcyhpbnQzMl90IG9sZF92YWx1ZSwgaW50MzJfdCBuZXdfdmFsdWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvbGF0aWxlIGludDMyX3QgKnB0cikKKyt7CisrICAgIGFuZHJvaWRfbWVtb3J5X2JhcnJpZXIoKTsKKysgICAgcmV0dXJuIGFuZHJvaWRfYXRvbWljX2NhcyhvbGRfdmFsdWUsIG5ld192YWx1ZSwgcHRyKTsKKyt9CisrCisrZXh0ZXJuIEFORFJPSURfQVRPTUlDX0lOTElORQorK2ludDMyX3QgYW5kcm9pZF9hdG9taWNfYWRkKGludDMyX3QgaW5jcmVtZW50LCB2b2xhdGlsZSBpbnQzMl90ICpwdHIpCisreworKyAgICBpbnQzMl90IHByZXYsIHN0YXR1czsKKysgICAgYW5kcm9pZF9tZW1vcnlfYmFycmllcigpOworKyAgICBkbyB7CisrICAgICAgICBwcmV2ID0gKnB0cjsKKysgICAgICAgIHN0YXR1cyA9IGFuZHJvaWRfYXRvbWljX2NhcyhwcmV2LCBwcmV2ICsgaW5jcmVtZW50LCBwdHIpOworKyAgICB9IHdoaWxlIChfX2J1aWx0aW5fZXhwZWN0KHN0YXR1cyAhPSAwLCAwKSk7CisrICAgIHJldHVybiBwcmV2OworK30KKysKKytleHRlcm4gQU5EUk9JRF9BVE9NSUNfSU5MSU5FCisraW50MzJfdCBhbmRyb2lkX2F0b21pY19pbmModm9sYXRpbGUgaW50MzJfdCAqYWRkcikKKyt7CisrICAgIHJldHVybiBhbmRyb2lkX2F0b21pY19hZGQoMSwgYWRkcik7CisrfQorKworK2V4dGVybiBBTkRST0lEX0FUT01JQ19JTkxJTkUKKytpbnQzMl90IGFuZHJvaWRfYXRvbWljX2RlYyh2b2xhdGlsZSBpbnQzMl90ICphZGRyKQorK3sKKysgICAgcmV0dXJuIGFuZHJvaWRfYXRvbWljX2FkZCgtMSwgYWRkcik7CisrfQorKworK2V4dGVybiBBTkRST0lEX0FUT01JQ19JTkxJTkUKKytpbnQzMl90IGFuZHJvaWRfYXRvbWljX2FuZChpbnQzMl90IHZhbHVlLCB2b2xhdGlsZSBpbnQzMl90ICpwdHIpCisreworKyAgICBpbnQzMl90IHByZXYsIHN0YXR1czsKKysgICAgYW5kcm9pZF9tZW1vcnlfYmFycmllcigpOworKyAgICBkbyB7CisrICAgICAgICBwcmV2ID0gKnB0cjsKKysgICAgICAgIHN0YXR1cyA9IGFuZHJvaWRfYXRvbWljX2NhcyhwcmV2LCBwcmV2ICYgdmFsdWUsIHB0cik7CisrICAgIH0gd2hpbGUgKF9fYnVpbHRpbl9leHBlY3Qoc3RhdHVzICE9IDAsIDApKTsKKysgICAgcmV0dXJuIHByZXY7CisrfQorKworK2V4dGVybiBBTkRST0lEX0FUT01JQ19JTkxJTkUKKytpbnQzMl90IGFuZHJvaWRfYXRvbWljX29yKGludDMyX3QgdmFsdWUsIHZvbGF0aWxlIGludDMyX3QgKnB0cikKKyt7CisrICAgIGludDMyX3QgcHJldiwgc3RhdHVzOworKyAgICBhbmRyb2lkX21lbW9yeV9iYXJyaWVyKCk7CisrICAgIGRvIHsKKysgICAgICAgIHByZXYgPSAqcHRyOworKyAgICAgICAgc3RhdHVzID0gYW5kcm9pZF9hdG9taWNfY2FzKHByZXYsIHByZXYgfCB2YWx1ZSwgcHRyKTsKKysgICAgfSB3aGlsZSAoX19idWlsdGluX2V4cGVjdChzdGF0dXMgIT0gMCwgMCkpOworKyAgICByZXR1cm4gcHJldjsKKyt9CisrCisrI2VuZGlmIC8qIEFORFJPSURfQ1VUSUxTX0FUT01JQ19SSVNDVl9IICovCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzXzUuMS4xLnIzNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHNfNS4xLjEucjM3LmJiCmluZGV4IGMwZDA4ZGIuLmZiNjEyNWUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHNfNS4xLjEucjM3LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHNfNS4xLjEucjM3LmJiCkBAIC0zOCwxMSArMzgsMTMgQEAKICAgICBmaWxlOi8vY29yZS8wMDExLVJlbW92ZS1iaW9uaWMtc3BlY2lmaWMtY2FsbHMucGF0Y2g7cGF0Y2hkaXI9c3lzdGVtL2NvcmUgXAogICAgIGZpbGU6Ly9jb3JlLzAwMTItRml4LWltcGxpY2l0LWRlY2xhcmF0aW9uLW9mLXN0bGNhdC1zdHJsY29weS1mdW5jdGlvbi5wYXRjaDtwYXRjaGRpcj1zeXN0ZW0vY29yZSBcCiAgICAgZmlsZTovL2NvcmUvYWRiX2xpYnNzbF8xMS5kaWZmO3BhdGNoZGlyPXN5c3RlbS9jb3JlIFwKKyAgICBmaWxlOi8vY29yZS8wMDEzLWFkYi1TdXBwb3J0LXJpc2N2NjQucGF0Y2g7cGF0Y2hkaXI9c3lzdGVtL2NvcmUgXAogICAgIGZpbGU6Ly9leHRyYXMvMDAwMS1leHQ0X3V0aWxzLXJlbW92ZS1zZWxpbnV4LWV4dGVuc2lvbnMucGF0Y2g7cGF0Y2hkaXI9c3lzdGVtL2V4dHJhcyBcCiAgICAgZmlsZTovL2V4dHJhcy8wMDAyLWV4dDRfdXRpbHMtYWRkLW8tYXJndW1lbnQtdG8tcHJlc2VydmUtb3duZXJzaGlwLnBhdGNoO3BhdGNoZGlyPXN5c3RlbS9leHRyYXMgXAogICAgIGZpbGU6Ly9saWJzZWxpbnV4LzAwMDEtUmVtb3ZlLWJpb25pYy1zcGVjaWZpYy1jYWxscy5wYXRjaDtwYXRjaGRpcj1leHRlcm5hbC9saWJzZWxpbnV4IFwKICAgICBmaWxlOi8vbGlic2VsaW51eC8wMDAxLWxpYnNlbGludXgtRG8tbm90LWRlZmluZS1nZXR0aWQtaWYtZ2xpYmMtMi4zMC1pcy11c2UucGF0Y2g7cGF0Y2hkaXI9ZXh0ZXJuYWwvbGlic2VsaW51eCBcCiAgICAgZmlsZTovL2FuZHJvaWQtdG9vbHMtYWRiZC5zZXJ2aWNlIFwKKyAgICBmaWxlOi8vYnVpbGQvMDAwMS1SaXNjdi1BZGQtcmlzYy12LUFuZHJvaWQtY29uZmlnLWhlYWRlci5wYXRjaDtwYXRjaGRpcj1idWlsZCBcCiAgICAgZmlsZTovL2dpdGlnbm9yZSBcCiAgICAgZmlsZTovL2FkYi5taztzdWJkaXI9JHtCUE59IFwKICAgICBmaWxlOi8vYWRiZC5taztzdWJkaXI9JHtCUE59IFwKQEAgLTYxLDYgKzYzLDcgQEAKIAogQ09NUEFUSUJMRV9IT1NUX3Bvd2VycGMgPSAiKG51bGwpIgogQ09NUEFUSUJMRV9IT1NUX3Bvd2VycGM2NCA9ICIobnVsbCkiCitDT01QQVRJQkxFX0hPU1RfcG93ZXJwYzY0bGUgPSAiKG51bGwpIgogCiBpbmhlcml0IHN5c3RlbWQKIApAQCAtOTMsNiArOTYsOSBAQAogICAgICAgYWFyY2g2NCkKICAgICAgICAgZXhwb3J0IGFuZHJvaWRfYXJjaD1saW51eC1hcm02NAogICAgICAgOzsKKyAgICAgIHJpc2N2NjQpCisgICAgICAgIGV4cG9ydCBhbmRyb2lkX2FyY2g9bGludXgtcmlzY3Y2NAorICAgICAgOzsKICAgICAgIG1pcHN8bWlwc2VsKQogICAgICAgICBleHBvcnQgYW5kcm9pZF9hcmNoPWxpbnV4LW1pcHMKICAgICAgIDs7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtMi4xMy9hdXRvY29uZi0yLjEzLW5hdGl2ZV8yLjEzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mLTIuMTMvYXV0b2NvbmYtMi4xMy1uYXRpdmVfMi4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTRhNzMzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mLTIuMTMvYXV0b2NvbmYtMi4xMy1uYXRpdmVfMi4xMy5iYgpAQCAtMCwwICsxLDY3IEBACitTVU1NQVJZID0gIkEgR05VIHRvb2wgdGhhdCBwcm9kdWNlIHNoZWxsIHNjcmlwdHMgdG8gYXV0b21hdGljYWxseSBjb25maWd1cmUgc29mdHdhcmUiCitERVNDUklQVElPTiA9ICJBdXRvY29uZiBpcyBhbiBleHRlbnNpYmxlIHBhY2thZ2Ugb2YgTTQgbWFjcm9zIHRoYXQgcHJvZHVjZSBzaGVsbCBzY3JpcHRzIHRvIGF1dG9tYXRpY2FsbHkgXCAKK2NvbmZpZ3VyZSBzb2Z0d2FyZSBzb3VyY2UgY29kZSBwYWNrYWdlcy4gQXV0b2NvbmYgY3JlYXRlcyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGZvciBhIHBhY2thZ2UgZnJvbSBhIHRlbXBsYXRlIFwKK2ZpbGUgdGhhdCBsaXN0cyB0aGUgb3BlcmF0aW5nIHN5c3RlbSBmZWF0dXJlcyB0aGF0IHRoZSBwYWNrYWdlIGNhbiB1c2UsIGluIHRoZSBmb3JtIG9mIE00IG1hY3JvIGNhbGxzLiIKK1NFQ1RJT04gPSAiZGV2ZWwiCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi8iCisKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNFTlNFID0gIkdQTHYyICYgR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zNjFiNmI4MzdjYWQyNmM2OTAwYTkyNmI2MmFhZGE1ZiIKKworU1JDX1VSSSA9ICIgXAorICAgICR7R05VX01JUlJPUn0vYXV0b2NvbmYvYXV0b2NvbmYtJHtQVn0udGFyLmd6IFwKKyAgICBmaWxlOi8vMDAwMS1BZGQtY29uZmlnLmd1ZXNzLWNvbmZpZy5zdWItaW5zdGFsbC10by1kZXN0ZGlyLnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9LyR7QlBOfSIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5ZGU1NmQ0YTE2MWE3MjMyMjgyMjBiMGY0MjVkYzcxMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMDYxMTEzNmJlZTUwNTgxMWU5Y2ExMWNhN2FjMTg4ZWY1MzIzYThlMmVmMTljZmZkM2VkYjNjZjA4ZmQ3OTFlIgorCitpbmhlcml0IG5hdGl2ZSB0ZXhpbmZvCisKK0RFUEVORFMgKz0gIm00LW5hdGl2ZSBnbnUtY29uZmlnLW5hdGl2ZSIKK1JERVBFTkRTXyR7UE59ID0gIm00LW5hdGl2ZSBnbnUtY29uZmlnLW5hdGl2ZSIKKworUEVSTCA9ICIke1VTUkJJTlBBVEh9L3BlcmwiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BFUkw9JyR7UEVSTH0nIgorCitDT05GSUdVUkVPUFRTID0gIiBcCisgICAgLS1idWlsZD0ke0JVSUxEX1NZU30gXAorICAgIC0taG9zdD0ke0hPU1RfU1lTfSBcCisgICAgLS10YXJnZXQ9JHtUQVJHRVRfU1lTfSBcCisgICAgLS1wcmVmaXg9JHtwcmVmaXh9IFwKKyAgICAtLWV4ZWNfcHJlZml4PSR7ZXhlY19wcmVmaXh9IFwKKyAgICAtLWJpbmRpcj0ke2JpbmRpcn0gXAorICAgIC0tc2JpbmRpcj0ke3NiaW5kaXJ9IFwKKyAgICAtLWxpYmV4ZWNkaXI9JHtsaWJleGVjZGlyfSBcCisgICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0gXAorICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9IFwKKyAgICAtLXNoYXJlZHN0YXRlZGlyPSR7c2hhcmVkc3RhdGVkaXJ9IFwKKyAgICAtLWxvY2Fsc3RhdGVkaXI9JHtsb2NhbHN0YXRlZGlyfSBcCisgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAtLWluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfSBcCisgICAgLS1vbGRpbmNsdWRlZGlyPSR7b2xkaW5jbHVkZWRpcn0gXAorICAgIC0taW5mb2Rpcj0ke2luZm9kaXJ9IFwKKyAgICAtLW1hbmRpcj0ke21hbmRpcn0gXAorICAgIC0tZGlzYWJsZS1zaWxlbnQtcnVsZXMgXAorIgorCitFWFRSQV9PRUNPTkYgKz0gImFjX2N2X3BhdGhfTTQ9bTQgYWNfY3ZfcHJvZ19URVNUX0VNQUNTPW5vIgorCitkb19jb25maWd1cmUoKSB7CisgICAgLi9jb25maWd1cmUgJHtDT05GSUdVUkVPUFRTfQorfQorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorCisgICAgIyBhdm9pZCBjb25mbGljdHMgd2l0aCBzdGFuZGFyZCBhdXRvdG9vbHMKKyAgICB2ZXI9IjIxMyIKKyAgICBmb3IgZmlsZSBpbiBgZmluZCAke0R9JHtiaW5kaXJ9IC10eXBlIGZgOyBkbworICAgICAgICBtdiAkZmlsZSAkZmlsZSR2ZXIKKyAgICBkb25lCisJbXYgJHtEfSR7ZGF0YWRpcn0vYXV0b2NvbmYgJHtEfSR7ZGF0YWRpcn0vYXV0b2NvbmYyMTMKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi0yLjEzL2F1dG9jb25mLTIuMTMvMDAwMS1BZGQtY29uZmlnLmd1ZXNzLWNvbmZpZy5zdWItaW5zdGFsbC10by1kZXN0ZGlyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mLTIuMTMvYXV0b2NvbmYtMi4xMy8wMDAxLUFkZC1jb25maWcuZ3Vlc3MtY29uZmlnLnN1Yi1pbnN0YWxsLXRvLWRlc3RkaXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZlOWVjYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi0yLjEzL2F1dG9jb25mLTIuMTMvMDAwMS1BZGQtY29uZmlnLmd1ZXNzLWNvbmZpZy5zdWItaW5zdGFsbC10by1kZXN0ZGlyLnBhdGNoCkBAIC0wLDAgKzEsNjcgQEAKK0Zyb20gM2QzZTIzZjdiMTRlODc4NDk0MDVhNGUxMDlhNjliNzY2OTY2MTVmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDExIERlYyAyMDE5IDIzOjE4OjE5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBjb25maWcuZ3Vlc3MgY29uZmlnLnN1YiAvIGluc3RhbGwgdG8gZGVzdGRpcgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0NvbmZpZ3VyYXRpb25dCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5pbiB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCBhNmM5NGQ0Li40YjFiNzA4IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtMTM3LDIzICsxMzcsMjMgQEAgaW5zdGFsbGNoZWNrOiBhbGwgaW5zdGFsbAorIAljZCB0ZXN0c3VpdGUgJiYgJHtNQUtFfSBBVVRPQ09ORj0ke2JpbmRpcn0vYXV0b2NvbmYgJEAKKyAKKyBpbnN0YWxsZGlyczoKKy0JJChTSEVMTCkgJHtzcmNkaXJ9L21raW5zdGFsbGRpcnMgJChiaW5kaXIpICQoaW5mb2RpcikgJChhY2RhdGFkaXIpCisrCSQoU0hFTEwpICR7c3JjZGlyfS9ta2luc3RhbGxkaXJzICR7REVTVERJUn0kKGJpbmRpcikgJHtERVNURElSfSQoaW5mb2RpcikgJHtERVNURElSfSQoYWNkYXRhZGlyKQorIAorIGluc3RhbGw6IGFsbCAkKE00RklMRVMpIGFjY29uZmlnLmggaW5zdGFsbGRpcnMgaW5zdGFsbC1pbmZvCisgCWZvciBwIGluICQoQVNDUklQVFMpOyBkbyBcCistCSAgJChJTlNUQUxMX1BST0dSQU0pICQkcCAkKGJpbmRpcikvYGVjaG8gJCRwfHNlZCAnJCh0cmFuc2Zvcm0pJ2A7IFwKKysJICAkKElOU1RBTExfUFJPR1JBTSkgJCRwICR7REVTVERJUn0kKGJpbmRpcikvYGVjaG8gJCRwfHNlZCAnJCh0cmFuc2Zvcm0pJ2A7IFwKKyAJZG9uZQorIAlmb3IgaSBpbiAkKE00RlJPWkVOKTsgZG8gXAorLQkgICQoSU5TVEFMTF9EQVRBKSAkJGkgJChhY2RhdGFkaXIpLyQkaTsgXAorKwkgICQoSU5TVEFMTF9EQVRBKSAkJGkgJHtERVNURElSfSQoYWNkYXRhZGlyKS8kJGk7IFwKKyAJZG9uZQorIAlmb3IgaSBpbiAkKE00RklMRVMpIGFjY29uZmlnLmg7IGRvIFwKKy0JICAkKElOU1RBTExfREFUQSkgJChzcmNkaXIpLyQkaSAkKGFjZGF0YWRpcikvJCRpOyBcCisrCSAgJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS8kJGkgJHtERVNURElSfSQoYWNkYXRhZGlyKS8kJGk7IFwKKyAJZG9uZQorIAktaWYgdGVzdCAtZiBhdXRvc2NhbjsgdGhlbiBcCistCSQoSU5TVEFMTF9QUk9HUkFNKSBhdXRvc2NhbiAkKGJpbmRpcikvYGVjaG8gYXV0b3NjYW58c2VkICckKHRyYW5zZm9ybSknYDsgXAorKwkkKElOU1RBTExfUFJPR1JBTSkgYXV0b3NjYW4gJHtERVNURElSfSQoYmluZGlyKS9gZWNobyBhdXRvc2NhbnxzZWQgJyQodHJhbnNmb3JtKSdgOyBcCisgCWZvciBpIGluIGFjZnVuY3Rpb25zIGFjaGVhZGVycyBhY2lkZW50aWZpZXJzIGFjcHJvZ3JhbXMgXAorLQkgIGFjbWFrZXZhcnM7IGRvIFwKKy0JJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS8kJGkgJChhY2RhdGFkaXIpLyQkaTsgXAorKwkgIGFjbWFrZXZhcnMgY29uZmlnLmd1ZXNzIGNvbmZpZy5zdWI7IGRvIFwKKysJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS8kJGkgJHtERVNURElSfSQoYWNkYXRhZGlyKS8kJGk7IFwKKyAJZG9uZTsgXAorIAllbHNlIDo7IGZpCisgCitAQCAtMTYxLDExICsxNjEsMTEgQEAgaW5zdGFsbDogYWxsICQoTTRGSUxFUykgYWNjb25maWcuaCBpbnN0YWxsZGlycyBpbnN0YWxsLWluZm8KKyBpbnN0YWxsLWluZm86IGluZm8gaW5zdGFsbGRpcnMKKyAJaWYgdGVzdCAtZiBhdXRvY29uZi5pbmZvOyB0aGVuIFwKKyAJICBmb3IgaSBpbiAqLmluZm8qOyBkbyBcCistCSAgICAkKElOU1RBTExfREFUQSkgJCRpICQoaW5mb2RpcikvJCRpOyBcCisrCSAgICAkKElOU1RBTExfREFUQSkgJCRpICR7REVTVERJUn0kKGluZm9kaXIpLyQkaTsgXAorIAkgIGRvbmU7IFwKKyAJZWxzZSBcCisgCSAgZm9yIGkgaW4gJChzcmNkaXIpLyouaW5mbyo7IGRvIFwKKy0JICAgICQoSU5TVEFMTF9EQVRBKSAkJGkgJChpbmZvZGlyKS9gZWNobyAkJGkgfCBzZWQgJ3N8XiQoc3JjZGlyKS98fCdgOyBcCisrCSAgICAkKElOU1RBTExfREFUQSkgJCRpICR7REVTVERJUn0kKGluZm9kaXIpL2BlY2hvICQkaSB8IHNlZCAnc3xeJChzcmNkaXIpL3x8J2A7IFwKKyAJICBkb25lOyBcCisgCWZpCisgCistLSAKKzIuMjEuMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWRfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkX2dpdC5iYgppbmRleCBmZjVhY2JlLi5kYWYyNjJlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWRfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZF9naXQuYmIKQEAgLTQ5LDYgKzQ5LDggQEAKIENYWEZMQUdTICs9ICItRF9HTlVfU09VUkNFIgogCiBDT01QQVRJQkxFX0hPU1RfcG93ZXJwYyA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX3Jpc2N2NjQgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9yaXNjdjMyID0gIm51bGwiCiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY2dkYi9jZ2RiXzAuNy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NnZGIvY2dkYl8wLjcuMS5iYgppbmRleCA1N2UzNjRlLi45ZDM3M2ZjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY2dkYi9jZ2RiXzAuNy4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jZ2RiL2NnZGJfMC43LjEuYmIKQEAgLTcsNyArNyw3IEBACiAKIERFUEVORFMgPSAiZmxleC1uYXRpdmUgcmVhZGxpbmUgbmN1cnNlcyIKIAotaW5oZXJpdCBhdXRvdG9vbHMKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KIAogU1JDX1VSSSA9ICJodHRwOi8vY2dkYi5tZS9maWxlcy8ke0JQfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Bdm9pZC11c2Utb2YtbWlwcy13aGljaC1pcy1yZXNlcnZlZC1vbi1taXBzLnBhdGNoIFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9janNvbi9janNvbl8xLjcuMTMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY2pzb24vY2pzb25fMS43LjEzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2MTc0ODIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY2pzb24vY2pzb25fMS43LjEzLmJiCkBAIC0wLDAgKzEsMjEgQEAKK0RFU0NSSVBUSU9OID0gIlVsdHJhbGlnaHR3ZWlnaHQgSlNPTiBwYXJzZXIgaW4gQU5TSSBDIgorQVVUSE9SID0gIkRhdmUgR2FtYmxlIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL0RhdmVHYW1ibGUvY0pTT04iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIxODk0N2Y3N2U4Y2I4ZTJmYTAyOTE4ZGM0MWM1MGQwIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vRGF2ZUdhbWJsZS9jSlNPTi5naXQiCitTUkNSRVYgPSAiMzk4NTNlNTE0OGRhZDhkYzVkMzJlYTJiMDA5NDNjZjRhMGM2ZjEyMCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZSBwa2djb25maWcKKworRVhUUkFfT0VDTUFLRSArPSAiXAorICAgIC1ERU5BQkxFX0NKU09OX1VUSUxTPU9uIFwKKyAgICAtREVOQUJMRV9DVVNUT01fQ09NUElMRVJfRkxBR1M9T0ZGIFwKKyAgICAtREJVSUxEX1NIQVJFRF9BTkRfU1RBVElDX0xJQlM9T24gXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY2xvYy9jbG9jXzEuODQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY2xvYy9jbG9jXzEuODQuYmIKaW5kZXggZjllY2QwZS4uM2U0NmM3MiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2Nsb2MvY2xvY18xLjg0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jbG9jL2Nsb2NfMS44NC5iYgpAQCAtOSw2ICs5LDggQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJhNTJmMzg0MzgyNTM3N2NmYTRlNGIzYjMwYTU2N2FiNCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJjM2YwYTZiZDIzMTkxMTA0MThjY2IzZTU1YTdhMWI2ZDBlZGZkNzUyOGJmZDJhZTVkNTMwOTM4YWJlOTBmMjU0IgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL0FsRGFuaWFsLyR7QlBOfS9yZWxlYXNlcyIKKwogZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKIGRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY29uY3VycmVuY3lraXQvY29uY3VycmVuY3lraXRfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NvbmN1cnJlbmN5a2l0L2NvbmN1cnJlbmN5a2l0X2dpdC5iYgppbmRleCAxOTc2N2MzLi44YzZjZjdkIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY29uY3VycmVuY3lraXQvY29uY3VycmVuY3lraXRfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jb25jdXJyZW5jeWtpdC9jb25jdXJyZW5jeWtpdF9naXQuYmIKQEAgLTIxLDYgKzIxLDcgQEAKIGluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAogCiBQTEFUX3Bvd2VycGM2NCA9ICJwcGM2NCIKK1BMQVRfcG93ZXJwYzY0bGUgPSAicHBjNjQiCiBQTEFUID89ICIke0hPU1RfQVJDSH0iCiAKIGRvX2NvbmZpZ3VyZSAoKSB7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY3B1aWQvY3B1aWRfMjAxODA1MTkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY3B1aWQvY3B1aWRfMjAxODA1MTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzM2EwMDAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NwdWlkL2NwdWlkXzIwMTgwNTE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJMaW51eCB0b29sIHRvIGR1bXAgeDg2IENQVUlEIGluZm9ybWF0aW9uIGFib3V0IHRoZSBDUFUocykiCi1ERVNDUklQVElPTiA9ICJjcHVpZCBkdW1wcyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQ1BVKHMpIGdhdGhlcmVkIFwKLWZyb20gdGhlIENQVUlEIGluc3RydWN0aW9uLCBhbmQgYWxzbyBkZXRlcm1pbmVzIHRoZSBleGFjdCBtb2RlbCBvZiBDUFUocykuIFwKLUl0IHN1cHBvcnRzIEludGVsLCBBTUQsIGFuZCBWSUEgQ1BVcywgYXMgd2VsbCBhcyBvbGRlciBUcmFuc21ldGEsIEN5cml4LCBcCi1VTUMsIE5leEdlbiwgUmlzZSwgYW5kIFNpUyBDUFVzIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZXRhbGxlbi5jb20vJHtCUE59LyR7QlB9LnNyYy50YXIuZ3ogXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYjNiNGU0NGVmNDk1NzUwNDNhOTFkZWYwMjA3ZGNjNzYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTY3ODIzYmUzNmYyM2NiYzk3MmViMGFhODgyZDA2OWMxZDE1NWE1OTc4OTkwYWMzYmNmNDI1ZTZhMmU3ZmY5YSIKLQotQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NCkuKi1saW51eCIKLQotIyBUaGUgaW5zdGFsbCBydWxlIGZyb20gdGhlIE1ha2VmaWxlIGhhcyBoYXJkY29kZWQgcGF0aHMsIHNvIHdlIGR1cGxpY2F0ZQotIyB0aGUgYWN0aW9ucyB0byBhY2NvbW1vZGF0ZSBkaWZmZXJlbnQgcGF0aHMuCi1kb19pbnN0YWxsICgpIHsKLSAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtCfS9jcHVpZCAke0R9LyR7YmluZGlyfS9jcHVpZAotICAgIGluc3RhbGwgLUQgLW0gMDQ0NCAke0J9L2NwdWlkLm1hbi5neiAke0R9LyR7bWFuZGlyfQotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NwdWlkL2NwdWlkXzIwMjAwMjExLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NwdWlkL2NwdWlkXzIwMjAwMjExLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NDYyYTkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY3B1aWQvY3B1aWRfMjAyMDAyMTEuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJMaW51eCB0b29sIHRvIGR1bXAgeDg2IENQVUlEIGluZm9ybWF0aW9uIGFib3V0IHRoZSBDUFUocykiCitERVNDUklQVElPTiA9ICJjcHVpZCBkdW1wcyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQ1BVKHMpIGdhdGhlcmVkIFwKK2Zyb20gdGhlIENQVUlEIGluc3RydWN0aW9uLCBhbmQgYWxzbyBkZXRlcm1pbmVzIHRoZSBleGFjdCBtb2RlbCBvZiBDUFUocykuIFwKK0l0IHN1cHBvcnRzIEludGVsLCBBTUQsIGFuZCBWSUEgQ1BVcywgYXMgd2VsbCBhcyBvbGRlciBUcmFuc21ldGEsIEN5cml4LCBcCitVTUMsIE5leEdlbiwgUmlzZSwgYW5kIFNpUyBDUFVzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZXRhbGxlbi5jb20vJHtCUE59LyR7QlB9LnNyYy50YXIuZ3ogXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiYzNkZGE0MGFlZTc4YmQxODc5MjlmNDU0YTNjNzVmMzUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTU3MGNhMjNjZTU1NDNmYjY5NzRhYmNiYmRlMDI2MWVhN2RiZmVhNDBmNGU3MzM1YjQ4NzAyNzQzMTVlNTIxYiIKKworQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NCkuKi1saW51eCIKKworaW5oZXJpdCBwZXJsbmF0aXZlCisKKyMgVGhlIGluc3RhbGwgcnVsZSBmcm9tIHRoZSBNYWtlZmlsZSBoYXMgaGFyZGNvZGVkIHBhdGhzLCBzbyB3ZSBkdXBsaWNhdGUKKyMgdGhlIGFjdGlvbnMgdG8gYWNjb21tb2RhdGUgZGlmZmVyZW50IHBhdGhzLgorZG9faW5zdGFsbCAoKSB7CisgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7Qn0vY3B1aWQgJHtEfS8ke2JpbmRpcn0vY3B1aWQKKyAgICBpbnN0YWxsIC1EIC1tIDA0NDQgJHtCfS9jcHVpZC5tYW4uZ3ogJHtEfS8ke21hbmRpcn0KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kbmYtcGx1Z2luLXR1aS9kbmYtcGx1Z2luLXR1aV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZG5mLXBsdWdpbi10dWkvZG5mLXBsdWdpbi10dWlfZ2l0LmJiCmluZGV4IGE4MzY3YjUuLjQwNjQ5NGUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kbmYtcGx1Z2luLXR1aS9kbmYtcGx1Z2luLXR1aV9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2RuZi1wbHVnaW4tdHVpL2RuZi1wbHVnaW4tdHVpX2dpdC5iYgpAQCAtNCw4ICs0LDggQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdWJpbnV4L2RuZi1wbHVnaW4tdHVpLmdpdDticmFuY2g9bWFzdGVyICIKLVNSQ1JFViA9ICIzMWQ2ODY2ZDVlZGEwMmJlOWE2YmZiMWZjYTllOTA5NWIxMmVlY2QxIgotUFYgPSAiMS4wIgorU1JDUkVWID0gImM1NDE2YWRlYjIxMDE1NGRjNGNjYzRjM2UxYzUyOTdkODNlYmQ0MWUiCitQViA9ICIxLjEiCiAKIFNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJmaWxlOi8vb2UtcmVtb3RlLnJlcG8uc2FtcGxlIgogCkBAIC0zNywzICszNyw0IEBACiAiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgorUE5CTEFDS0xJU1RbZG5mLXBsdWdpbi10dWldID89ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRV9DTEFTU0VTJywgJ3BhY2thZ2VfcnBtJywgJycsICdkb2VzIG5vdCBidWlsZCBjb3JyZWN0bHkgd2l0aG91dCBwYWNrYWdlX3JwbSBpbiBQQUNLQUdFX0NMQVNTRVMnLCBkKX0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZG94eWdlbi9kb3h5Z2VuL2RveHlnZW4tbmF0aXZlLW9ubHktY2hlY2stcHl0aG9uMy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kb3h5Z2VuL2RveHlnZW4vZG94eWdlbi1uYXRpdmUtb25seS1jaGVjay1weXRob24zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5NjUwYzIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZG94eWdlbi9kb3h5Z2VuL2RveHlnZW4tbmF0aXZlLW9ubHktY2hlY2stcHl0aG9uMy5wYXRjaApAQCAtMCwwICsxLDQzMyBAQAorSXQgZmFpbHMgdG8gY29tcGlsZSBkb3h5Z2VuLW5hdGl2ZSB3aGVuIC91c3IvYmluL3B5dGhvbiBpcyBhIGxpbmsgdG8gcHl0aG9uMyBvbgorYnVpbGQgaG9zdDoKKworfCBGYWlsZWQgdG8gaW1wb3J0IHRoZSBzaXRlIG1vZHVsZQorfCBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Cit8ICAgRmlsZSAiL3Vzci9saWI2NC9weXRob24zLjYvc2l0ZS5weSIsIGxpbmUgNTY0LCBpbiA8bW9kdWxlPgorfCAgICAgbWFpbigpCit8ICAgRmlsZSAiL3Vzci9saWI2NC9weXRob24zLjYvc2l0ZS5weSIsIGxpbmUgNTUwLCBpbiBtYWluCit8ICAgICBrbm93bl9wYXRocyA9IGFkZHVzZXJzaXRlcGFja2FnZXMoa25vd25fcGF0aHMpCit8ICAgRmlsZSAiL3Vzci9saWI2NC9weXRob24zLjYvc2l0ZS5weSIsIGxpbmUgMjgyLCBpbiBhZGR1c2Vyc2l0ZXBhY2thZ2VzCit8ICAgICB1c2VyX3NpdGUgPSBnZXR1c2Vyc2l0ZXBhY2thZ2VzKCkKK3wgICBGaWxlICIvdXNyL2xpYjY0L3B5dGhvbjMuNi9zaXRlLnB5IiwgbGluZSAyNTgsIGluIGdldHVzZXJzaXRlcGFja2FnZXMKK3wgICAgIHVzZXJfYmFzZSA9IGdldHVzZXJiYXNlKCkgIyB0aGlzIHdpbGwgYWxzbyBzZXQgVVNFUl9CQVNFCit8ICAgRmlsZSAiL3Vzci9saWI2NC9weXRob24zLjYvc2l0ZS5weSIsIGxpbmUgMjQ4LCBpbiBnZXR1c2VyYmFzZQorfCAgICAgVVNFUl9CQVNFID0gZ2V0X2NvbmZpZ192YXIoJ3VzZXJiYXNlJykKK3wgICBGaWxlICIvdXNyL2xpYjY0L3B5dGhvbjMuNi9zeXNjb25maWcucHkiLCBsaW5lIDYwNCwgaW4gZ2V0X2NvbmZpZ192YXIKK3wgICAgIHJldHVybiBnZXRfY29uZmlnX3ZhcnMoKS5nZXQobmFtZSkKK3wgICBGaWxlICIvdXNyL2xpYjY0L3B5dGhvbjMuNi9zeXNjb25maWcucHkiLCBsaW5lIDU1MywgaW4gZ2V0X2NvbmZpZ192YXJzCit8ICAgICBfaW5pdF9wb3NpeChfQ09ORklHX1ZBUlMpCit8ICAgRmlsZSAiL3Vzci9saWI2NC9weXRob24zLjYvc3lzY29uZmlnLnB5IiwgbGluZSA0MjQsIGluIF9pbml0X3Bvc2l4Cit8ICAgICBfdGVtcCA9IF9faW1wb3J0X18obmFtZSwgZ2xvYmFscygpLCBsb2NhbHMoKSwgWydidWlsZF90aW1lX3ZhcnMnXSwgMCkKK3wgTW9kdWxlTm90Rm91bmRFcnJvcjogTm8gbW9kdWxlIG5hbWVkICdfc3lzY29uZmlnZGF0YScKKworUmVwbGFjZSBmaW5kX3BhY2thZ2UgUHl0aG9uSW50ZXJwIHdpdGggUHl0aG9uMyB0byBmaXggdGhpcyBpc3N1ZSB0aGF0CitpdCB1c2VzIHB5dGhvbjMgZnJvbSBweXRob24zLW5hdGl2ZS4gQW5kIGl0IGFsc28gcmVwbGFjZXMgdGhlIHJlc3VsdAordmFyaWFibGUgUFlUSE9OX0VYRUNVVEFCTEUgd2l0aCBQeXRob24zX0VYRUNVVEFCTEUuCisKK1RoaXMgcGF0Y2ggaXMgb25seSBuZWVkZGVkIGJ5IGRveHlnZW4tbmF0aXZlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbb2Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggOTY5YWU1OC4uNjA0NDAwZiAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTkzLDcgKzkzLDcgQEAgZWxzZSAoKQorIGVuZGlmICgpCisgCisgZmluZF9wcm9ncmFtKERPVCBOQU1FUyBkb3QpCistZmluZF9wYWNrYWdlKFB5dGhvbkludGVycCBSRVFVSVJFRCkKKytmaW5kX3BhY2thZ2UoUHl0aG9uMyBSRVFVSVJFRCkKKyBmaW5kX3BhY2thZ2UoRkxFWCBSRVFVSVJFRCkKKyBmaW5kX3BhY2thZ2UoQklTT04gUkVRVUlSRUQpCisgaWYgKEJJU09OX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDIuNykKK2RpZmYgLS1naXQgYS9hZGRvbi9kb3h5d2l6YXJkL0NNYWtlTGlzdHMudHh0IGIvYWRkb24vZG94eXdpemFyZC9DTWFrZUxpc3RzLnR4dAoraW5kZXggNmFhY2Q4Yi4uZmExOTdlOSAxMDA2NDQKKy0tLSBhL2FkZG9uL2RveHl3aXphcmQvQ01ha2VMaXN0cy50eHQKKysrKyBiL2FkZG9uL2RveHl3aXphcmQvQ01ha2VMaXN0cy50eHQKK0BAIC01OCw3ICs1OCw3IEBAIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygke0dFTkVSQVRFRF9TUkNfV0laQVJEfS9zZXR0aW5ncy5oIFBST1BFUlRJRVMgR0VORVJBCisgCisgIyBnZW5lcmF0ZSB2ZXJzaW9uLmNwcAorIGFkZF9jdXN0b21fY29tbWFuZCgKKy0gICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy92ZXJzaW9uLnB5ICR7VkVSU0lPTn0gPiAke0dFTkVSQVRFRF9TUkNfV0laQVJEfS92ZXJzaW9uLmNwcAorKyAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy92ZXJzaW9uLnB5ICR7VkVSU0lPTn0gPiAke0dFTkVSQVRFRF9TUkNfV0laQVJEfS92ZXJzaW9uLmNwcAorICAgICBERVBFTkRTICR7Q01BS0VfU09VUkNFX0RJUn0vVkVSU0lPTiAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy92ZXJzaW9uLnB5CisgICAgIE9VVFBVVCAke0dFTkVSQVRFRF9TUkNfV0laQVJEfS92ZXJzaW9uLmNwcAorICkKK0BAIC02Niw3ICs2Niw3IEBAIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygke0dFTkVSQVRFRF9TUkNfV0laQVJEfS92ZXJzaW9uLmNwcCBQUk9QRVJUSUVTIEdFTkVSCisgCisgIyBnZW5lcmF0ZSBjb25maWdkb2MuY3BwCisgYWRkX2N1c3RvbV9jb21tYW5kKAorLUNPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvY29uZmlnZ2VuLnB5IC13aXogJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvY29uZmlnLnhtbCA+ICR7R0VORVJBVEVEX1NSQ19XSVpBUkR9L2NvbmZpZ2RvYy5jcHAKKytDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9jb25maWdnZW4ucHkgLXdpeiAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9jb25maWcueG1sID4gJHtHRU5FUkFURURfU1JDX1dJWkFSRH0vY29uZmlnZG9jLmNwcAorIE9VVFBVVCAke0dFTkVSQVRFRF9TUkNfV0laQVJEfS9jb25maWdkb2MuY3BwCisgKQorIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygke0dFTkVSQVRFRF9TUkNfV0laQVJEfS9jb25maWdkb2MuY3BwIFBST1BFUlRJRVMgR0VORVJBVEVEIDEpCitAQCAtNzQsNyArNzQsNyBAQCBzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMoJHtHRU5FUkFURURfU1JDX1dJWkFSRH0vY29uZmlnZG9jLmNwcCBQUk9QRVJUSUVTIEdFTgorIHNldChMRVhfRklMRVMgY29uZmlnX2RveHl3KSAKKyBmb3JlYWNoKGxleF9maWxlICR7TEVYX0ZJTEVTfSkKKyAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorLQkgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9zY2FuX3N0YXRlcy5weSAke0NNQUtFX1NPVVJDRV9ESVJ9L2FkZG9uL2RveHl3aXphcmQvJHtsZXhfZmlsZX0ubCA+ICR7R0VORVJBVEVEX1NSQ19XSVpBUkR9LyR7bGV4X2ZpbGV9LmwuaAorKwkgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvc2Nhbl9zdGF0ZXMucHkgJHtDTUFLRV9TT1VSQ0VfRElSfS9hZGRvbi9kb3h5d2l6YXJkLyR7bGV4X2ZpbGV9LmwgPiAke0dFTkVSQVRFRF9TUkNfV0laQVJEfS8ke2xleF9maWxlfS5sLmgKKyAgICAgICAgIERFUEVORFMgJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvc2Nhbl9zdGF0ZXMucHkgJHtDTUFLRV9TT1VSQ0VfRElSfS9hZGRvbi9kb3h5d2l6YXJkLyR7bGV4X2ZpbGV9LmwKKyAJT1VUUFVUICAke0dFTkVSQVRFRF9TUkNfV0laQVJEfS8ke2xleF9maWxlfS5sLmgKKyAgICAgKQorZGlmZiAtLWdpdCBhL2RvYy9DTWFrZUxpc3RzLnR4dCBiL2RvYy9DTWFrZUxpc3RzLnR4dAoraW5kZXggMDMyYzE2YS4uMzMyZjFiMiAxMDA2NDQKKy0tLSBhL2RvYy9DTWFrZUxpc3RzLnR4dAorKysrIGIvZG9jL0NNYWtlTGlzdHMudHh0CitAQCAtMTMyLDcgKzEzMiw3IEBAIGNvbmZpZ3VyZV9maWxlKCR7Q01BS0VfU09VUkNFX0RJUn0vZG9jL2RveHlpbmRleGVyLjEgICAgICAke1BST0pFQ1RfQklOQVJZX0RJUn0vCisgCisgIyBkb2MvbGFuZ3VhZ2UuZG9jIChzZWUgdGFnIERveHlmaWxlOklOUFVUKQorIGFkZF9jdXN0b21fY29tbWFuZCgKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gdHJhbnNsYXRvci5weSAke0NNQUtFX1NPVVJDRV9ESVJ9CisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSB0cmFuc2xhdG9yLnB5ICR7Q01BS0VfU09VUkNFX0RJUn0KKyAgICAgICAgIERFUEVORFMgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2RvYy9tYWludGFpbmVycy50eHQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2RvYy9sYW5ndWFnZS50cGwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2RvYy90cmFuc2xhdG9yLnB5CisgICAgICAgICBPVVRQVVQgbGFuZ3VhZ2UuZG9jCisgICAgICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke1BST0pFQ1RfQklOQVJZX0RJUn0vZG9jCitAQCAtMTQxLDcgKzE0MSw3IEBAIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcyhsYW5ndWFnZS5kb2MgUFJPUEVSVElFUyBHRU5FUkFURUQgMSkKKyAKKyAjIGRvYy9jb25maWcuZG9jIChzZWUgdGFnIERveHlmaWxlOklOUFVUKQorIGFkZF9jdXN0b21fY29tbWFuZCgKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gICR7VE9QfS9zcmMvY29uZmlnZ2VuLnB5IC1kb2MgJHtUT1B9L3NyYy9jb25maWcueG1sID4gY29uZmlnLmRvYworKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9zcmMvY29uZmlnZ2VuLnB5IC1kb2MgJHtUT1B9L3NyYy9jb25maWcueG1sID4gY29uZmlnLmRvYworICAgICAgICAgREVQRU5EUyAke1RPUH0vc3JjL2NvbmZpZy54bWwgJHtUT1B9L3NyYy9jb25maWdnZW4ucHkKKyAgICAgICAgIE9VVFBVVCBjb25maWcuZG9jCisgICAgICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke1BST0pFQ1RfQklOQVJZX0RJUn0vZG9jLworQEAgLTE5Miw3ICsxOTIsNyBAQCBhZGRfY3VzdG9tX3RhcmdldChkb2NzX2NobQorICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgZWNobyAiICAgIGZvciBmaWxlIGluIGZpbGVzOiIgPj4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2NobS9kb3h5Z2VuX21hbnVhbF9leGFtcGxlc19jaG0ucHkKKyAgICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8gIiAgICAgICAgaWYgZmlsZS5lbmRzd2l0aCgnLmh0bWwnKSBvciBmaWxlLmVuZHN3aXRoKCcucG5nJykgb3IgZmlsZS5lbmRzd2l0aCgnLmNzcycpIG9yIGZpbGUuZW5kc3dpdGgoJy5naWYnKToiID4+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9jaG0vZG94eWdlbl9tYW51YWxfZXhhbXBsZXNfY2htLnB5CisgICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBlY2hvICIgICAgICAgICAgICBwcmludChvcy5wYXRoLmpvaW4ocm9vdCwgZmlsZSkpIiA+PiAke1BST0pFQ1RfQklOQVJZX0RJUn0vY2htL2RveHlnZW5fbWFudWFsX2V4YW1wbGVzX2NobS5weQorLSAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgY2hkaXIgICR7UFJPSkVDVF9CSU5BUllfRElSfS9jaG0gJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2NobS9kb3h5Z2VuX21hbnVhbF9leGFtcGxlc19jaG0ucHkgPj4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2NobS9kb3h5Z2VuX21hbnVhbC5oaHAKKysgICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGNoZGlyICAke1BST0pFQ1RfQklOQVJZX0RJUn0vY2htICR7UHl0aG9uM19FWEVDVVRBQkxFfSAke1BST0pFQ1RfQklOQVJZX0RJUn0vY2htL2RveHlnZW5fbWFudWFsX2V4YW1wbGVzX2NobS5weSA+PiAke1BST0pFQ1RfQklOQVJZX0RJUn0vY2htL2RveHlnZW5fbWFudWFsLmhocAorICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgY2hkaXIgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2NobSAiJHtIVE1MX0hFTFBfQ09NUElMRVJ9IiBkb3h5Z2VuX21hbnVhbC5oaHAgfHwgZWNobyA+IG51bAorICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgcmVuYW1lICR7UFJPSkVDVF9CSU5BUllfRElSfS9jaG0vaW5kZXguY2htICR7UFJPSkVDVF9CSU5BUllfRElSfS9jaG0vZG94eWdlbl9tYW51YWwuY2htCisgICAgICAgICBERVBFTkRTICR7UFJPSkVDVF9CSU5BUllfRElSfS9kb2MvbGFuZ3VhZ2UuZG9jICR7UFJPSkVDVF9CSU5BUllfRElSfS9kb2MvY29uZmlnLmRvYworZGlmZiAtLWdpdCBhL2V4YW1wbGVzL0NNYWtlTGlzdHMudHh0IGIvZXhhbXBsZXMvQ01ha2VMaXN0cy50eHQKK2luZGV4IDk2N2YzZDQuLmE4ZDFhYWQgMTAwNjQ0CistLS0gYS9leGFtcGxlcy9DTWFrZUxpc3RzLnR4dAorKysrIGIvZXhhbXBsZXMvQ01ha2VMaXN0cy50eHQKK0BAIC01MiwxOTYgKzUyLDE5NiBAQCBhZGRfY3VzdG9tX3RhcmdldChleGFtcGxlcworIAorIGFkZF9jdXN0b21fY29tbWFuZCgKKyAJQ09NTUFORCAke0VYRUNVVEFCTEVfT1VUUFVUX1BBVEh9L2RveHlnZW4gY2xhc3MuY2ZnCistICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9jbGFzcy9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvY2xhc3MvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKysgICAgICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9jbGFzcy9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvY2xhc3MvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIGNsYXNzLmggY2xhc3MuY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9jbGFzcy9odG1sL2luZGV4Lmh0bWwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvY2xhc3MvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiBkZWZpbmUuY2ZnCistICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9kZWZpbmUvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2RlZmluZS9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2RlZmluZS9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZGVmaW5lL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgCURFUEVORFMgZG94eWdlbiBkZWZpbmUuaCBkZWZpbmUuY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9kZWZpbmUvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2RlZmluZS9sYXRleC9yZWZtYW5fZG9jLnRleAorICkKKyAKKyBhZGRfY3VzdG9tX2NvbW1hbmQoCisgCUNPTU1BTkQgJHtFWEVDVVRBQkxFX09VVFBVVF9QQVRIfS9kb3h5Z2VuIGVudW0uY2ZnCistICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9lbnVtL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9lbnVtL2xhdGV4L3JlZm1hbl9kb2MudGV4CisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZW51bS9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZW51bS9sYXRleC9yZWZtYW5fZG9jLnRleAorIAlERVBFTkRTIGRveHlnZW4gZW51bS5oIGVudW0uY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9lbnVtL2h0bWwvaW5kZXguaHRtbCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9lbnVtL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgKQorIAorIGFkZF9jdXN0b21fY29tbWFuZCgKKyAJQ09NTUFORCAke0VYRUNVVEFCTEVfT1VUUFVUX1BBVEh9L2RveHlnZW4gZmlsZS5jZmcKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2ZpbGUvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2ZpbGUvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKysgICAgICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9maWxlL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9maWxlL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgCURFUEVORFMgZG94eWdlbiBmaWxlLmggZmlsZS5jZmcgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkKKyAJT1VUUFVUICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2ZpbGUvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2ZpbGUvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiBmdW5jLmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZnVuYy9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZnVuYy9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2Z1bmMvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2Z1bmMvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIGZ1bmMuaCBmdW5jLmNmZyAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weQorIAlPVVRQVVQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZnVuYy9odG1sL2luZGV4Lmh0bWwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZnVuYy9sYXRleC9yZWZtYW5fZG9jLnRleAorICkKKyAKKyBhZGRfY3VzdG9tX2NvbW1hbmQoCisgCUNPTU1BTkQgJHtFWEVDVVRBQkxFX09VVFBVVF9QQVRIfS9kb3h5Z2VuIGphdmFkb2MtYmFubmVyLmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvamF2YWRvYy1iYW5uZXIvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2phdmFkb2MtYmFubmVyL2xhdGV4L3JlZm1hbl9kb2MudGV4CisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvamF2YWRvYy1iYW5uZXIvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2phdmFkb2MtYmFubmVyL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgCURFUEVORFMgZG94eWdlbiBqYXZhZG9jLWJhbm5lci5oIGphdmFkb2MtYmFubmVyLmNmZyAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weQorIAlPVVRQVVQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvamF2YWRvYy1iYW5uZXIvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2phdmFkb2MtYmFubmVyL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgKQorIAorIGFkZF9jdXN0b21fY29tbWFuZCgKKyAJQ09NTUFORCAke0VYRUNVVEFCTEVfT1VUUFVUX1BBVEh9L2RveHlnZW4gcGFnZS5jZmcKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3BhZ2UvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3BhZ2UvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKysgICAgICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9wYWdlL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9wYWdlL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgCURFUEVORFMgZG94eWdlbiBwYWdlLmRvYyBwYWdlLmNmZyAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weQorIAlPVVRQVVQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcGFnZS9odG1sL2luZGV4Lmh0bWwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcGFnZS9sYXRleC9yZWZtYW5fZG9jLnRleAorICkKKyAKKyBhZGRfY3VzdG9tX2NvbW1hbmQoCisgCUNPTU1BTkQgJHtFWEVDVVRBQkxFX09VVFBVVF9QQVRIfS9kb3h5Z2VuIHJlbGF0ZXMuY2ZnCistICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9yZWxhdGVzL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9yZWxhdGVzL2xhdGV4L3JlZm1hbl9kb2MudGV4CisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcmVsYXRlcy9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcmVsYXRlcy9sYXRleC9yZWZtYW5fZG9jLnRleAorIAlERVBFTkRTIGRveHlnZW4gcmVsYXRlcy5jcHAgcmVsYXRlcy5jZmcgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkKKyAJT1VUUFVUICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3JlbGF0ZXMvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3JlbGF0ZXMvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiBhdXRob3IuY2ZnCistICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9hdXRob3IvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2F1dGhvci9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2F1dGhvci9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvYXV0aG9yL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgCURFUEVORFMgZG94eWdlbiBhdXRob3IuY3BwIGF1dGhvci5jZmcgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkKKyAJT1VUUFVUICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2F1dGhvci9odG1sL2luZGV4Lmh0bWwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvYXV0aG9yL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgKQorIAorIGFkZF9jdXN0b21fY29tbWFuZCgKKyAJQ09NTUFORCAke0VYRUNVVEFCTEVfT1VUUFVUX1BBVEh9L2RveHlnZW4gcGFyLmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcGFyL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9wYXIvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKysgICAgICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9wYXIvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3Bhci9sYXRleC9yZWZtYW5fZG9jLnRleAorIAlERVBFTkRTIGRveHlnZW4gcGFyLmNwcCBwYXIuY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9wYXIvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3Bhci9sYXRleC9yZWZtYW5fZG9jLnRleAorICkKKyAKKyBhZGRfY3VzdG9tX2NvbW1hbmQoCisgCUNPTU1BTkQgJHtFWEVDVVRBQkxFX09VVFBVVF9QQVRIfS9kb3h5Z2VuIG92ZXJsb2FkLmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvb3ZlcmxvYWQvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL292ZXJsb2FkL2xhdGV4L3JlZm1hbl9kb2MudGV4CisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvb3ZlcmxvYWQvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL292ZXJsb2FkL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgCURFUEVORFMgZG94eWdlbiBvdmVybG9hZC5jcHAgb3ZlcmxvYWQuY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9vdmVybG9hZC9odG1sL2luZGV4Lmh0bWwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvb3ZlcmxvYWQvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiBleGFtcGxlLmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZXhhbXBsZS9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZXhhbXBsZS9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2V4YW1wbGUvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2V4YW1wbGUvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIGV4YW1wbGUuY3BwIGV4YW1wbGVfdGVzdC5jcHAgZXhhbXBsZS5jZmcgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkKKyAJT1VUUFVUICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2V4YW1wbGUvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2V4YW1wbGUvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiBpbmNsdWRlLmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvaW5jbHVkZS9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvaW5jbHVkZS9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2luY2x1ZGUvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2luY2x1ZGUvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIGluY2x1ZGUuY3BwIGluY2x1ZGVfdGVzdC5jcHAgaW5jbHVkZS5jZmcgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkKKyAJT1VUUFVUICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2luY2x1ZGUvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2luY2x1ZGUvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiBxdHN0eWxlLmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcXRzdHlsZS9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcXRzdHlsZS9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3F0c3R5bGUvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3F0c3R5bGUvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIHF0c3R5bGUuY3BwIHF0c3R5bGUuY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9xdHN0eWxlL2h0bWwvaW5kZXguaHRtbCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9xdHN0eWxlL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgKQorIAorIGFkZF9jdXN0b21fY29tbWFuZCgKKyAJQ09NTUFORCAke0VYRUNVVEFCTEVfT1VUUFVUX1BBVEh9L2RveHlnZW4gamRzdHlsZS5jZmcKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2pkc3R5bGUvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2pkc3R5bGUvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKysgICAgICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9qZHN0eWxlL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9qZHN0eWxlL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgCURFUEVORFMgZG94eWdlbiBqZHN0eWxlLmNwcCBqZHN0eWxlLmNmZyAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weQorIAlPVVRQVVQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvamRzdHlsZS9odG1sL2luZGV4Lmh0bWwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvamRzdHlsZS9sYXRleC9yZWZtYW5fZG9jLnRleAorICkKKyAKKyBhZGRfY3VzdG9tX2NvbW1hbmQoCisgCUNPTU1BTkQgJHtFWEVDVVRBQkxFX09VVFBVVF9QQVRIfS9kb3h5Z2VuIHN0cnVjdGNtZC5jZmcKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3N0cnVjdGNtZC9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvc3RydWN0Y21kL2xhdGV4L3JlZm1hbl9kb2MudGV4CisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvc3RydWN0Y21kL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9zdHJ1Y3RjbWQvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIHN0cnVjdGNtZC5oIHN0cnVjdGNtZC5jZmcgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkKKyAJT1VUUFVUICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3N0cnVjdGNtZC9odG1sL2luZGV4Lmh0bWwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvc3RydWN0Y21kL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgKQorIAorIGFkZF9jdXN0b21fY29tbWFuZCgKKyAJQ09NTUFORCAke0VYRUNVVEFCTEVfT1VUUFVUX1BBVEh9L2RveHlnZW4gYXV0b2xpbmsuY2ZnCistICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9hdXRvbGluay9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvYXV0b2xpbmsvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKysgICAgICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9hdXRvbGluay9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvYXV0b2xpbmsvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIGF1dG9saW5rLmNwcCBhdXRvbGluay5jZmcgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkKKyAJT1VUUFVUICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2F1dG9saW5rL2h0bWwvaW5kZXguaHRtbCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9hdXRvbGluay9sYXRleC9yZWZtYW5fZG9jLnRleAorICkKKyAKKyBhZGRfY3VzdG9tX2NvbW1hbmQoCisgCUNPTU1BTkQgJHtFWEVDVVRBQkxFX09VVFBVVF9QQVRIfS9kb3h5Z2VuIHRhZy5jZmcKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3RhZy9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvdGFnL2xhdGV4L3JlZm1hbl9kb2MudGV4CisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvdGFnL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy90YWcvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIHRhZy5jcHAgdGFnLmNmZyAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9leGFtcGxlL2h0bWwvaW5kZXguaHRtbCAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weQorIAlPVVRQVVQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvdGFnL2h0bWwvaW5kZXguaHRtbCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy90YWcvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiByZXN0eXBlZGVmLmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcmVzdHlwZWRlZi9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcmVzdHlwZWRlZi9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3Jlc3R5cGVkZWYvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3Jlc3R5cGVkZWYvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIHJlc3R5cGVkZWYuY3BwIHJlc3R5cGVkZWYuY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9yZXN0eXBlZGVmL2h0bWwvaW5kZXguaHRtbCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9yZXN0eXBlZGVmL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgKQorIAorIGFkZF9jdXN0b21fY29tbWFuZCgKKyAJQ09NTUFORCAke0VYRUNVVEFCTEVfT1VUUFVUX1BBVEh9L2RveHlnZW4gYWZ0ZXJkb2MuY2ZnCistICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9hZnRlcmRvYy9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvYWZ0ZXJkb2MvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKysgICAgICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9hZnRlcmRvYy9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvYWZ0ZXJkb2MvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIGFmdGVyZG9jLmggYWZ0ZXJkb2MuY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9hZnRlcmRvYy9odG1sL2luZGV4Lmh0bWwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvYWZ0ZXJkb2MvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiB0ZW1wbC5jZmcKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3RlbXBsYXRlL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy90ZW1wbGF0ZS9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3RlbXBsYXRlL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy90ZW1wbGF0ZS9sYXRleC9yZWZtYW5fZG9jLnRleAorIAlERVBFTkRTIGRveHlnZW4gdGVtcGwuY3BwIHRlbXBsLmNmZyAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weQorIAlPVVRQVVQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvdGVtcGxhdGUvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3RlbXBsYXRlL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgKQorIAorIGFkZF9jdXN0b21fY29tbWFuZCgKKyAJQ09NTUFORCAke0VYRUNVVEFCTEVfT1VUUFVUX1BBVEh9L2RveHlnZW4gZ3JvdXAuY2ZnCistICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9ncm91cC9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZ3JvdXAvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKysgICAgICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9ncm91cC9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZ3JvdXAvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIGdyb3VwLmNwcCBncm91cC5jZmcgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkKKyAJT1VUUFVUICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2dyb3VwL2h0bWwvaW5kZXguaHRtbCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9ncm91cC9sYXRleC9yZWZtYW5fZG9jLnRleAorICkKKyAKKyBhZGRfY3VzdG9tX2NvbW1hbmQoCisgCUNPTU1BTkQgJHtFWEVDVVRBQkxFX09VVFBVVF9QQVRIfS9kb3h5Z2VuIG1lbWdycC5jZmcKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL21lbWdycC9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvbWVtZ3JwL2xhdGV4L3JlZm1hbl9kb2MudGV4CisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvbWVtZ3JwL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9tZW1ncnAvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIG1lbWdycC5jcHAgbWVtZ3JwLmNmZyAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weQorIAlPVVRQVVQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvbWVtZ3JwL2h0bWwvaW5kZXguaHRtbCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9tZW1ncnAvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiBweWV4YW1wbGUuY2ZnCistICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9weWV4YW1wbGUvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3B5ZXhhbXBsZS9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3B5ZXhhbXBsZS9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcHlleGFtcGxlL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgCURFUEVORFMgZG94eWdlbiBweWV4YW1wbGUucHkgcHlleGFtcGxlLmNmZyAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weQorIAlPVVRQVVQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcHlleGFtcGxlL2h0bWwvaW5kZXguaHRtbCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9weWV4YW1wbGUvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiB0Y2xleGFtcGxlLmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvdGNsZXhhbXBsZS9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvdGNsZXhhbXBsZS9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3RjbGV4YW1wbGUvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3RjbGV4YW1wbGUvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIHRjbGV4YW1wbGUudGNsIHRjbGV4YW1wbGUuY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy90Y2xleGFtcGxlL2h0bWwvaW5kZXguaHRtbCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy90Y2xleGFtcGxlL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgKQorIAorIGFkZF9jdXN0b21fY29tbWFuZCgKKyAJQ09NTUFORCAke0VYRUNVVEFCTEVfT1VUUFVUX1BBVEh9L2RveHlnZW4gbXV4LmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvbXV4L2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9tdXgvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKysgICAgICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9tdXgvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL211eC9sYXRleC9yZWZtYW5fZG9jLnRleAorIAlERVBFTkRTIGRveHlnZW4gbXV4LnZoZGwgbXV4LmNmZyAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weQorIAlPVVRQVVQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvbXV4L2h0bWwvaW5kZXguaHRtbCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9tdXgvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiBtYW51YWwuY2ZnCistICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9tYW51YWwvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL21hbnVhbC9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL21hbnVhbC9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvbWFudWFsL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgCURFUEVORFMgZG94eWdlbiBtYW51YWwuYyBtYW51YWwuY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9tYW51YWwvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL21hbnVhbC9sYXRleC9yZWZtYW5fZG9jLnRleAorICkKKyAKKyBhZGRfY3VzdG9tX2NvbW1hbmQoCisgCUNPTU1BTkQgJHtFWEVDVVRBQkxFX09VVFBVVF9QQVRIfS9kb3h5Z2VuIGRvY3N0cmluZy5jZmcKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2RvY3N0cmluZy9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZG9jc3RyaW5nL2xhdGV4L3JlZm1hbl9kb2MudGV4CisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZG9jc3RyaW5nL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9kb2NzdHJpbmcvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIGRvY3N0cmluZy5weSBkb2NzdHJpbmcuY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9kb2NzdHJpbmcvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2RvY3N0cmluZy9sYXRleC9yZWZtYW5fZG9jLnRleAorICkKK0BAIC0yNDksNyArMjQ5LDcgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAorIGlmIChET1QpCisgICBhZGRfY3VzdG9tX2NvbW1hbmQoCisgCUNPTU1BTkQgJHtFWEVDVVRBQkxFX09VVFBVVF9QQVRIfS9kb3h5Z2VuIGRpYWdyYW1zLmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZGlhZ3JhbXMvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2RpYWdyYW1zL2xhdGV4L3JlZm1hbl9kb2MudGV4CisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZGlhZ3JhbXMvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2RpYWdyYW1zL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgCURFUEVORFMgZG94eWdlbiBkaWFncmFtc19hLmggZGlhZ3JhbXNfYi5oIGRpYWdyYW1zX2MuaCBkaWFncmFtc19kLmggZGlhZ3JhbXNfZS5oIGRpYWdyYW1zLmNmZyAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weQorIAlPVVRQVVQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZGlhZ3JhbXMvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2RpYWdyYW1zL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgICApCitkaWZmIC0tZ2l0IGEvbGlibXNjZ2VuL0NNYWtlTGlzdHMudHh0IGIvbGlibXNjZ2VuL0NNYWtlTGlzdHMudHh0CitpbmRleCAwNzlmY2ZjLi5lNmQ4NmY2IDEwMDY0NAorLS0tIGEvbGlibXNjZ2VuL0NNYWtlTGlzdHMudHh0CisrKysgYi9saWJtc2NnZW4vQ01ha2VMaXN0cy50eHQKK0BAIC03LDcgKzcsNyBAQCBpbmNsdWRlX2RpcmVjdG9yaWVzKAorIHNldChMRVhfRklMRVMgbXNjZ2VuX2xleGVyKSAKKyBmb3JlYWNoKGxleF9maWxlICR7TEVYX0ZJTEVTfSkKKyAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9zY2FuX3N0YXRlcy5weSAke0NNQUtFX1NPVVJDRV9ESVJ9L2xpYm1zY2dlbi8ke2xleF9maWxlfS5sID4gJHtHRU5FUkFURURfU1JDfS8ke2xleF9maWxlfS5sLmgKKysgICAgICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICR7Q01BS0VfU09VUkNFX0RJUn0vc3JjL3NjYW5fc3RhdGVzLnB5ICR7Q01BS0VfU09VUkNFX0RJUn0vbGlibXNjZ2VuLyR7bGV4X2ZpbGV9LmwgPiAke0dFTkVSQVRFRF9TUkN9LyR7bGV4X2ZpbGV9LmwuaAorICAgICAgICAgREVQRU5EUyAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9zY2FuX3N0YXRlcy5weSAke0NNQUtFX1NPVVJDRV9ESVJ9L2xpYm1zY2dlbi8ke2xleF9maWxlfS5sCisgICAgICAgICBPVVRQVVQgICR7R0VORVJBVEVEX1NSQ30vJHtsZXhfZmlsZX0ubC5oCisgICAgICkKK2RpZmYgLS1naXQgYS9zcmMvQ01ha2VMaXN0cy50eHQgYi9zcmMvQ01ha2VMaXN0cy50eHQKK2luZGV4IDIzNDYwZDAuLjU4ZjY3OWEgMTAwNjQ0CistLS0gYS9zcmMvQ01ha2VMaXN0cy50eHQKKysrKyBiL3NyYy9DTWFrZUxpc3RzLnR4dAorQEAgLTM1LDcgKzM1LDcgQEAgc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKCR7R0VORVJBVEVEX1NSQ30vc2V0dGluZ3MuaCBQUk9QRVJUSUVTIEdFTkVSQVRFRCAxKQorIAorICMgY29uZmlndmFsdWVzLmgKKyBhZGRfY3VzdG9tX2NvbW1hbmQoCistICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvY29uZmlnZ2VuLnB5IC1tYXBoICR7Q01BS0VfU09VUkNFX0RJUn0vc3JjL2NvbmZpZy54bWwgPiAke0dFTkVSQVRFRF9TUkN9L2NvbmZpZ3ZhbHVlcy5oCisrICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICR7Q01BS0VfU09VUkNFX0RJUn0vc3JjL2NvbmZpZ2dlbi5weSAtbWFwaCAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9jb25maWcueG1sID4gJHtHRU5FUkFURURfU1JDfS9jb25maWd2YWx1ZXMuaAorICAgICBERVBFTkRTICR7Q01BS0VfU09VUkNFX0RJUn0vc3JjL2NvbmZpZy54bWwgJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvY29uZmlnZ2VuLnB5CisgICAgIE9VVFBVVCAke0dFTkVSQVRFRF9TUkN9L2NvbmZpZ3ZhbHVlcy5oCisgKQorQEAgLTQ3LDcgKzQ3LDcgQEAgYWRkX2N1c3RvbV90YXJnZXQoCisgCisgIyBjb25maWd2YWx1ZXMuY3BwCisgYWRkX2N1c3RvbV9jb21tYW5kKAorLSAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7Q01BS0VfU09VUkNFX0RJUn0vc3JjL2NvbmZpZ2dlbi5weSAtbWFwcyAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9jb25maWcueG1sID4gJHtHRU5FUkFURURfU1JDfS9jb25maWd2YWx1ZXMuY3BwCisrICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICR7Q01BS0VfU09VUkNFX0RJUn0vc3JjL2NvbmZpZ2dlbi5weSAtbWFwcyAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9jb25maWcueG1sID4gJHtHRU5FUkFURURfU1JDfS9jb25maWd2YWx1ZXMuY3BwCisgICAgIERFUEVORFMgJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvY29uZmlnLnhtbCAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9jb25maWdnZW4ucHkKKyAgICAgT1VUUFVUICR7R0VORVJBVEVEX1NSQ30vY29uZmlndmFsdWVzLmNwcAorICkKK0BAIC01NSw3ICs1NSw3IEBAIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygke0dFTkVSQVRFRF9TUkN9L2NvbmZpZ3ZhbHVlcy5jcHAgUFJPUEVSVElFUyBHRU5FUkFUCisgCisgIyBjb25maWdvcHRpb25zLmNwcAorIGFkZF9jdXN0b21fY29tbWFuZCgKKy0gICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9jb25maWdnZW4ucHkgLWNwcCAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9jb25maWcueG1sID4gJHtHRU5FUkFURURfU1JDfS9jb25maWdvcHRpb25zLmNwcAorKyAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9jb25maWdnZW4ucHkgLWNwcCAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9jb25maWcueG1sID4gJHtHRU5FUkFURURfU1JDfS9jb25maWdvcHRpb25zLmNwcAorICAgICBERVBFTkRTICR7Q01BS0VfU09VUkNFX0RJUn0vc3JjL2NvbmZpZy54bWwgJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvY29uZmlnZ2VuLnB5CisgICAgIE9VVFBVVCAke0dFTkVSQVRFRF9TUkN9L2NvbmZpZ29wdGlvbnMuY3BwCisgKQorQEAgLTg2LDcgKzg2LDcgQEAgZmlsZShHTE9CIFJFU09VUkNFUyAke0NNQUtFX1NPVVJDRV9ESVJ9L3RlbXBsYXRlcy8qLyopCisgIyByZXNvdXJjZXMuY3BwCisgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICBDT01NRU5UICAiR2VuZXJhdGluZyAke0dFTkVSQVRFRF9TUkN9L3Jlc291cmNlcy5jcHAiCistICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvcmVzMmNjX2NtZC5weSAke0NNQUtFX1NPVVJDRV9ESVJ9L3RlbXBsYXRlcyAke0dFTkVSQVRFRF9TUkN9L3Jlc291cmNlcy5jcHAKKysgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvcmVzMmNjX2NtZC5weSAke0NNQUtFX1NPVVJDRV9ESVJ9L3RlbXBsYXRlcyAke0dFTkVSQVRFRF9TUkN9L3Jlc291cmNlcy5jcHAKKyAgICAgREVQRU5EUyAke1JFU09VUkNFU30KKyAgICAgT1VUUFVUICR7R0VORVJBVEVEX1NSQ30vcmVzb3VyY2VzLmNwcAorICkKK0BAIC05NCw3ICs5NCw3IEBAIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygke0dFTkVSQVRFRF9TUkN9L3Jlc291cmNlcy5jcHAgUFJPUEVSVElFUyBHRU5FUkFURUQKKyAKKyAjIGxheW91dF9kZWZhdWx0LnhtbAorIGFkZF9jdXN0b21fY29tbWFuZCgKKy0gICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy90b19jX2NtZC5weSA8ICR7Q01BS0VfU09VUkNFX0RJUn0vc3JjL2xheW91dF9kZWZhdWx0LnhtbCA+ICR7R0VORVJBVEVEX1NSQ30vbGF5b3V0X2RlZmF1bHQueG1sLmgKKysgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvdG9fY19jbWQucHkgPCAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9sYXlvdXRfZGVmYXVsdC54bWwgPiAke0dFTkVSQVRFRF9TUkN9L2xheW91dF9kZWZhdWx0LnhtbC5oCisgICAgIERFUEVORFMgJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvbGF5b3V0X2RlZmF1bHQueG1sCisgICAgIE9VVFBVVCAgJHtHRU5FUkFURURfU1JDfS9sYXlvdXRfZGVmYXVsdC54bWwuaAorICkKK0BAIC0xMjQsNyArMTI0LDcgQEAgZm9yZWFjaChsZXhfZmlsZSAke0xFWF9GSUxFU30pCisgICAgIHNldChMRVhfRklMRVNfSCAke0xFWF9GSUxFU19IfSAiICIgJHtHRU5FUkFURURfU1JDfS8ke2xleF9maWxlfS5sLmggQ0FDSEUgSU5URVJOQUwgIlN0b3JlcyBnZW5lcmF0ZWQgZmlsZXMiKQorICAgICBzZXQoTEVYX0ZJTEVTX0NQUCAke0xFWF9GSUxFU19DUFB9ICIgIiAke0dFTkVSQVRFRF9TUkN9LyR7bGV4X2ZpbGV9LmNwcCBDQUNIRSBJTlRFUk5BTCAiU3RvcmVzIGdlbmVyYXRlZCBmaWxlcyIpCisgICAgIGFkZF9jdXN0b21fY29tbWFuZCgKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvc2Nhbl9zdGF0ZXMucHkgJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvJHtsZXhfZmlsZX0ubCA+ICR7R0VORVJBVEVEX1NSQ30vJHtsZXhfZmlsZX0ubC5oCisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9zY2FuX3N0YXRlcy5weSAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy8ke2xleF9maWxlfS5sID4gJHtHRU5FUkFURURfU1JDfS8ke2xleF9maWxlfS5sLmgKKyAgICAgICAgIERFUEVORFMgJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvc2Nhbl9zdGF0ZXMucHkgJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvJHtsZXhfZmlsZX0ubAorICAgICAgICAgT1VUUFVUICAke0dFTkVSQVRFRF9TUkN9LyR7bGV4X2ZpbGV9LmwuaAorICAgICApCitkaWZmIC0tZ2l0IGEvdGVzdGluZy9DTWFrZUxpc3RzLnR4dCBiL3Rlc3RpbmcvQ01ha2VMaXN0cy50eHQKK2luZGV4IDQwY2I0MGIuLmEzMDFhY2QgMTAwNjQ0CistLS0gYS90ZXN0aW5nL0NNYWtlTGlzdHMudHh0CisrKysgYi90ZXN0aW5nL0NNYWtlTGlzdHMudHh0CitAQCAtMSw5ICsxLDkgQEAKKyBhZGRfY3VzdG9tX3RhcmdldCh0ZXN0cworICAgICAgICAgIENPTU1FTlQgIlJ1bm5pbmcgZG94eWdlbiB0ZXN0cy4uLiIKKy0JIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9TT1VSQ0VfRElSfS90ZXN0aW5nL3J1bnRlc3RzLnB5IC0tZG94eWdlbiAke1BST0pFQ1RfQklOQVJZX0RJUn0vYmluL2RveHlnZW4gLS1pbnB1dGRpciAke0NNQUtFX1NPVVJDRV9ESVJ9L3Rlc3RpbmcgLS1vdXRwdXRkaXIgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L3Rlc3RpbmcKKysJIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICR7Q01BS0VfU09VUkNFX0RJUn0vdGVzdGluZy9ydW50ZXN0cy5weSAtLWRveHlnZW4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2Jpbi9kb3h5Z2VuIC0taW5wdXRkaXIgJHtDTUFLRV9TT1VSQ0VfRElSfS90ZXN0aW5nIC0tb3V0cHV0ZGlyICR7UFJPSkVDVF9CSU5BUllfRElSfS90ZXN0aW5nCisgICAgICAgICAgREVQRU5EUyBkb3h5Z2VuCisgKQorIGFkZF90ZXN0KE5BTUUgc3VpdGUKKy0JQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3Rlc3RpbmcvcnVudGVzdHMucHkgLS1kb3h5Z2VuICQ8VEFSR0VUX0ZJTEU6ZG94eWdlbj4gLS1pbnB1dGRpciAke0NNQUtFX1NPVVJDRV9ESVJ9L3Rlc3RpbmcgLS1vdXRwdXRkaXIgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L3Rlc3RpbmcKKysJQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gJHtDTUFLRV9TT1VSQ0VfRElSfS90ZXN0aW5nL3J1bnRlc3RzLnB5IC0tZG94eWdlbiAkPFRBUkdFVF9GSUxFOmRveHlnZW4+IC0taW5wdXRkaXIgJHtDTUFLRV9TT1VSQ0VfRElSfS90ZXN0aW5nIC0tb3V0cHV0ZGlyICR7UFJPSkVDVF9CSU5BUllfRElSfS90ZXN0aW5nCisgKQorIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2RveHlnZW4vZG94eWdlbl8xLjguMTcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZG94eWdlbi9kb3h5Z2VuXzEuOC4xNy5iYgppbmRleCA3YTRlZWUzLi40NWRlNzE4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZG94eWdlbi9kb3h5Z2VuXzEuOC4xNy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZG94eWdlbi9kb3h5Z2VuXzEuOC4xNy5iYgpAQCAtOSw2ICs5LDcgQEAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQfS5zcmMudGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtZG9uLXQtbG9vay1mb3ItSWNvbnYucGF0Y2ggXAogIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZG94eWdlbi1uYXRpdmUtb25seS1jaGVjay1weXRob24zLnBhdGNoIgogU1JDX1VSSVttZDVzdW1dID0gIjc5OTdhMTVjNzNhOGJkNmQwMDNlYWJhNWMyZWUyYjQ3IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJjYmE5ODhhZjJkNDk1NTQxY2JiZTU1NDFiM2JlZTBlZTExMTQ0ZGNiMjNhODFlYWRhMTlmNTUwMWZkOGI1OTkiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9mbGF0YnVmZmVycy9mbGF0YnVmZmVycy8wMDAxLUFkZC1kZXRlY3Rpb24tb2Ytc3RydG91bGxfbC1mdW5jdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9mbGF0YnVmZmVycy9mbGF0YnVmZmVycy8wMDAxLUFkZC1kZXRlY3Rpb24tb2Ytc3RydG91bGxfbC1mdW5jdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlODIxMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZmxhdGJ1ZmZlcnMvZmxhdGJ1ZmZlcnMvMDAwMS1BZGQtZGV0ZWN0aW9uLW9mLXN0cnRvdWxsX2wtZnVuY3Rpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIGJmZjdmZmJjNTEzMGNkNDZjYWYzM2I3NmI0YmIwNTkzZmNkMTUwNjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWbGFkaW1pciBHbGF2bnl5IDwzMTg5NzMyMCt2Z2xhdm55eUB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+Ci1EYXRlOiBGcmksIDEwIE1heSAyMDE5IDAwOjE1OjI5ICswNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBkZXRlY3Rpb24gb2Ygc3RydG91bGxfbCBmdW5jdGlvbiAoIzUzMzMpICgjNTMzNykKLQotU2lnbmVkLW9mZi1ieTogRmFicmljZSBGb250YWluZSA8Zm9udGFpbmUuZmFicmljZUBnbWFpbC5jb20+Ci1bUmV0cmlldmVkIGZyb206Ci1odHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2ZsYXRidWZmZXJzL2NvbW1pdC9iZmY3ZmZiYzUxMzBjZDQ2Y2FmMzNiNzZiNGJiMDU5M2ZjZDE1MDY2XQotLS0tCi0gQ01ha2VMaXN0cy50eHQgfCAxMiArKysrKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAotaW5kZXggMDY0MGMzN2I1Li4zMGJlMjM4ZmUgMTAwNjQ0Ci0tLS0gYS9DTWFrZUxpc3RzLnR4dAotKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC00MiwxMiArNDIsMTggQEAgaWYoREVGSU5FRCBGTEFUQlVGRkVSU19NQVhfUEFSU0lOR19ERVBUSCkKLSAgIG1lc3NhZ2UoU1RBVFVTICJGTEFUQlVGRkVSU19NQVhfUEFSU0lOR19ERVBUSDogJHtGTEFUQlVGRkVSU19NQVhfUEFSU0lOR19ERVBUSH0iKQotIGVuZGlmKCkKLSAKLS0jIEF1dG8tZGV0ZWN0IGxvY2FsZS1uYXJyb3cgJ3N0cnRvZF9sJyBmdW5jdGlvbi4KLSsjIEF1dG8tZGV0ZWN0IGxvY2FsZS1uYXJyb3cgJ3N0cnRvZF9sJyBhbmQgICdzdHJ0b3VsbF9sJyBmdW5jdGlvbnMuCi0gaWYoTk9UIERFRklORUQgRkxBVEJVRkZFUlNfTE9DQUxFX0lOREVQRU5ERU5UKQotKyAgc2V0KEZMQVRCVUZGRVJTX0xPQ0FMRV9JTkRFUEVOREVOVCAwKQotICAgaWYoTVNWQykKLS0gICAgY2hlY2tfY3h4X3N5bWJvbF9leGlzdHMoX3N0cnRvZl9sIHN0ZGxpYi5oIEZMQVRCVUZGRVJTX0xPQ0FMRV9JTkRFUEVOREVOVCkKLSsgICAgY2hlY2tfY3h4X3N5bWJvbF9leGlzdHMoX3N0cnRvZl9sIHN0ZGxpYi5oIEZMQVRCVUZGRVJTX0hBU19TVFJUT0ZfTCkKLSsgICAgY2hlY2tfY3h4X3N5bWJvbF9leGlzdHMoX3N0cnRvdWk2NF9sIHN0ZGxpYi5oIEZMQVRCVUZGRVJTX0hBU19TVFJUT1VMTF9MKQotICAgZWxzZSgpCi0tICAgIGNoZWNrX2N4eF9zeW1ib2xfZXhpc3RzKHN0cnRvZl9sIHN0ZGxpYi5oIEZMQVRCVUZGRVJTX0xPQ0FMRV9JTkRFUEVOREVOVCkKLSsgICAgY2hlY2tfY3h4X3N5bWJvbF9leGlzdHMoc3RydG9mX2wgc3RkbGliLmggRkxBVEJVRkZFUlNfSEFTX1NUUlRPRl9MKQotKyAgICBjaGVja19jeHhfc3ltYm9sX2V4aXN0cyhzdHJ0b3VsbF9sIHN0ZGxpYi5oIEZMQVRCVUZGRVJTX0hBU19TVFJUT1VMTF9MKQotKyAgZW5kaWYoKQotKyAgaWYoRkxBVEJVRkZFUlNfSEFTX1NUUlRPRl9MIEFORCBGTEFUQlVGRkVSU19IQVNfU1RSVE9VTExfTCkKLSsgICAgc2V0KEZMQVRCVUZGRVJTX0xPQ0FMRV9JTkRFUEVOREVOVCAxKQotICAgZW5kaWYoKQotIGVuZGlmKCkKLSBhZGRfZGVmaW5pdGlvbnMoLURGTEFUQlVGRkVSU19MT0NBTEVfSU5ERVBFTkRFTlQ9JDxCT09MOiR7RkxBVEJVRkZFUlNfTE9DQUxFX0lOREVQRU5ERU5UfT4pCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZmxhdGJ1ZmZlcnMvZmxhdGJ1ZmZlcnNfMS4xMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2ZsYXRidWZmZXJzL2ZsYXRidWZmZXJzXzEuMTEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTI5NDQxZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZmxhdGJ1ZmZlcnMvZmxhdGJ1ZmZlcnNfMS4xMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotU1VNTUFSWSA9ICJNZW1vcnkgRWZmaWNpZW50IFNlcmlhbGl6YXRpb24gTGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZmxhdGJ1ZmZlcnMiCi1TRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi0KLVBBQ0tBR0VfQkVGT1JFX1BOID0gIiR7UE59LWNvbXBpbGVyIgotCi1SREVQRU5EU18ke1BOfS1jb21waWxlciA9ICIke1BOfSIKLVJERVBFTkRTXyR7UE59LWRldiArPSAiJHtQTn0tY29tcGlsZXIiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1hODczYzU2NDVjMTg0ZDUxZTBmOWIzNGUxZDdjZjU1OSIKLQotU1JDUkVWID0gIjllN2U4Y2JlOWY2NzUxMjNkZDQxYjdjNjI4NjhhY2FkMzkxODhjYWUiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9nb29nbGUvZmxhdGJ1ZmZlcnMuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWRldGVjdGlvbi1vZi1zdHJ0b3VsbF9sLWZ1bmN0aW9uLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLSMgTWFrZSBzdXJlIEMrKzExIGlzIHVzZWQsIHJlcXVpcmVkIGZvciBleGFtcGxlIGZvciBHQ0MgNC45Ci1DWFhGTEFHUyArPSAiLXN0ZD1jKysxMSAtZlBJQyIKLUJVSUxEX0NYWEZMQUdTICs9ICItc3RkPWMrKzExIC1mUElDIgotCi0jIEJVSUxEX1RZUEU9UmVsZWFzZSBpcyByZXF1aXJlZCwgb3RoZXJ3aXNlIGZsYXRjIGlzIG5vdCBpbnN0YWxsZWQKLUVYVFJBX09FQ01BS0UgKz0gIlwKLSAgICAtRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSBcCi0gICAgLURGTEFUQlVGRkVSU19CVUlMRF9URVNUUz1PRkYgXCAgICAKLSAgICAtREZMQVRCVUZGRVJTX0JVSUxEX1NIQVJFRExJQj1PTiBcCi0iCi0KLWluaGVyaXQgY21ha2UKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRklMRVNfJHtQTn0tY29tcGlsZXIgPSAiJHtiaW5kaXJ9IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZmxhdGJ1ZmZlcnMvZmxhdGJ1ZmZlcnNfMS4xMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2ZsYXRidWZmZXJzL2ZsYXRidWZmZXJzXzEuMTIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzFjZWY2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2ZsYXRidWZmZXJzL2ZsYXRidWZmZXJzXzEuMTIuMC5iYgpAQCAtMCwwICsxLDM0IEBACitTVU1NQVJZID0gIk1lbW9yeSBFZmZpY2llbnQgU2VyaWFsaXphdGlvbiBMaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9mbGF0YnVmZmVycyIKK1NFQ1RJT04gPSAiY29uc29sZS90b29scyIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKKworUEFDS0FHRV9CRUZPUkVfUE4gPSAiJHtQTn0tY29tcGlsZXIiCisKK1JERVBFTkRTXyR7UE59LWNvbXBpbGVyID0gIiR7UE59IgorUkRFUEVORFNfJHtQTn0tZGV2ICs9ICIke1BOfS1jb21waWxlciIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgorCitTUkNSRVYgPSAiNmRmNDBhMjQ3MTczN2IyNzI3MWJkZDliOTAwYWI1ZjNhZWM3NDZjNyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dvb2dsZS9mbGF0YnVmZmVycy5naXQiCisKKyMgTWFrZSBzdXJlIEMrKzExIGlzIHVzZWQsIHJlcXVpcmVkIGZvciBleGFtcGxlIGZvciBHQ0MgNC45CitDWFhGTEFHUyArPSAiLXN0ZD1jKysxMSAtZlBJQyIKK0JVSUxEX0NYWEZMQUdTICs9ICItc3RkPWMrKzExIC1mUElDIgorCisjIEJVSUxEX1RZUEU9UmVsZWFzZSBpcyByZXF1aXJlZCwgb3RoZXJ3aXNlIGZsYXRjIGlzIG5vdCBpbnN0YWxsZWQKK0VYVFJBX09FQ01BS0UgKz0gIlwKKyAgICAtRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSBcCisgICAgLURGTEFUQlVGRkVSU19CVUlMRF9URVNUUz1PRkYgXCAgICAKKyAgICAtREZMQVRCVUZGRVJTX0JVSUxEX1NIQVJFRExJQj1PTiBcCisiCisKK2luaGVyaXQgY21ha2UKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworRklMRVNfJHtQTn0tY29tcGlsZXIgPSAiJHtiaW5kaXJ9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2VhbnkvZ2VhbnlfMS4zNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nZWFueS9nZWFueV8xLjM2LmJiCmluZGV4IDE3ZTE2YmYuLjgyODIwOTEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nZWFueS9nZWFueV8xLjM2LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nZWFueS9nZWFueV8xLjM2LmJiCkBAIC01LDcgKzUsNyBAQAogCiBERVBFTkRTID0gImd0ayszIGxpYnhtbC1wYXJzZXItcGVybC1uYXRpdmUgcHl0aG9uMy1kb2N1dGlscy1uYXRpdmUgaW50bHRvb2wtbmF0aXZlIgogCi1pbmhlcml0IGZlYXR1cmVzX2NoZWNrIGF1dG90b29scyBwa2djb25maWcgcGVybG5hdGl2ZSBnZXR0ZXh0Citpbmhlcml0IGZlYXR1cmVzX2NoZWNrIGF1dG90b29scyBwa2djb25maWcgcGVybG5hdGl2ZSBnZXR0ZXh0IG1pbWUteGRnCiAKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZV8zLjIyLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGVfMy4yMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGQ3MDU3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZV8zLjIyLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIkdsYWRlIC0gQSBVc2VyIEludGVyZmFjZSBEZXNpZ25lciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nbmFzaCIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hYWJlODc1OTFjYjhhZTBmM2M2OGJlNjk3N2JiNTUyMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9OWFjMmU3Y2ZmMWRkYWY0OGI2ZWFiNjAyOGYyM2VmODggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMO21kNT0yNTI4OTBkOWVlZTI2YWFiN2I0MzJlOGI4YTYxNjQ3NSIKLURFUEVORFMgPSAiZ3RrKyBndGsrMyBnbGliLTIuMCBsaWJ4bWwyIGludGx0b29sLW5hdGl2ZSBcCi0gICAgICAgICAgIGdub21lLWNvbW1vbi1uYXRpdmUgXAotIgotCi0KLWluaGVyaXQgZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnbm9tZWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvZ2xhZGUvMy4yMi9nbGFkZS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXllbHAtaGVscC1ydWxlcy12YXIucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyMjY4MDJjZjNiMDY4NjEyNDA1MjQ4MDVhYTZmZTZmZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkZmY4OWEyZWYyZWFmMDAwZmYyYTQ2OTc5OTc4ZDAzY2I5MjAyY2IwNDY2OGUwMWQwZWE1YzViYjU1NDdlMzlhIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1tYW4tcGFnZXMiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyogJHtsaWJkaXJ9L2dsYWRlL21vZHVsZXMvbGliZ2xhZGVndGsuc28iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9nbGFkZS9tb2R1bGVzL2xpYmdsYWRlZ3RrLmxhIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ2xhZGUvbW9kdWxlcy8uZGVidWcvbGliZ2xhZGVndGsuc28iCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZV8zLjIyLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGVfMy4yMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkNTM5YjIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGVfMy4yMi4yLmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NVTU1BUlkgPSAiR2xhZGUgLSBBIFVzZXIgSW50ZXJmYWNlIERlc2lnbmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2duYXNoIgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWFhYmU4NzU5MWNiOGFlMGYzYzY4YmU2OTc3YmI1NTIyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMO21kNT05YWMyZTdjZmYxZGRhZjQ4YjZlYWI2MDI4ZjIzZWY4OCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEw7bWQ1PTI1Mjg5MGQ5ZWVlMjZhYWI3YjQzMmU4YjhhNjE2NDc1IgorREVQRU5EUyA9ICJndGsrIGd0ayszIGdsaWItMi4wIGxpYnhtbDIgaW50bHRvb2wtbmF0aXZlIFwKKyAgICAgICAgICAgZ25vbWUtY29tbW9uLW5hdGl2ZSBcCisiCisKKworaW5oZXJpdCBmZWF0dXJlc19jaGVjayBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gbWltZS14ZGcKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9nbGFkZS8zLjIyL2dsYWRlLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUteWVscC1oZWxwLXJ1bGVzLXZhci5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImMwNzRmYTM3OGM4ZjFhZDgwZDIwMTMzYzRhZTZmNDJkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVkZWZhNmViMjRiNGQxNWJkNTI1ODkxMjFkYzEwOWJjMDhjMjg2MTU3YzQxMjg4ZGViNzRkZDljYzNmMjZhMjEiCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLW1hbi1wYWdlcyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vKiAke2xpYmRpcn0vZ2xhZGUvbW9kdWxlcy9saWJnbGFkZWd0ay5zbyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dsYWRlL21vZHVsZXMvbGliZ2xhZGVndGsubGEiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nbGFkZS9tb2R1bGVzLy5kZWJ1Zy9saWJnbGFkZWd0ay5zbyIKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWdycGNfY3BwX3BsdWdpbi1wYXRoLWR1cmluZy1jcm9zcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGMvMDAwMS1DTWFrZUxpc3RzLnR4dC1GaXgtZ3JwY19jcHBfcGx1Z2luLXBhdGgtZHVyaW5nLWNyb3NzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGMvMDAwMS1DTWFrZUxpc3RzLnR4dC1GaXgtZ3JwY19jcHBfcGx1Z2luLXBhdGgtZHVyaW5nLWNyb3NzLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWdycGNfY3BwX3BsdWdpbi1wYXRoLWR1cmluZy1jcm9zcy5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWxpYnJhcmllcy1pbnN0YWxsYXRpb24tZm9yLUxpbnV4LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dycGMvZ3JwYy8wMDAxLUNNYWtlTGlzdHMudHh0LUZpeC1saWJyYXJpZXMtaW5zdGFsbGF0aW9uLWZvci1MaW51eC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWxpYnJhcmllcy1pbnN0YWxsYXRpb24tZm9yLUxpbnV4LnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWxpYnJhcmllcy1pbnN0YWxsYXRpb24tZm9yLUxpbnV4LnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjXzEuMjQuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGNfMS4yNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MjU2MmUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjXzEuMjQuMy5iYgpAQCAtMCwwICsxLDY3IEBACitERVNDUklQVElPTiA9ICJBIGhpZ2ggcGVyZm9ybWFuY2UsIG9wZW4gc291cmNlLCBnZW5lcmFsLXB1cnBvc2UgUlBDIGZyYW1ld29yay4gXAorUHJvdmlkZXMgZ1JQQyBsaWJyYXJpZXMgZm9yIG11bHRpcGxlIGxhbmd1YWdlcyB3cml0dGVuIG9uIHRvcCBvZiBzaGFyZWQgQyBjb3JlIGxpYnJhcnkgXAorKEMrKywgTm9kZS5qcywgUHl0aG9uLCBSdWJ5LCBPYmplY3RpdmUtQywgUEhQLCBDIykiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ3JwYy9ncnBjIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcGFjaGUtMiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgorCitERVBFTkRTID0gImdmbGFncyBjLWFyZXMgcHJvdG9idWYgcHJvdG9idWYtbmF0aXZlIHByb3RvYnVmLWMgcHJvdG9idWYtYy1uYXRpdmUgb3BlbnNzbCBsaWJuc2wyIgorREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBnb29nbGV0ZXN0IGdycGMtbmF0aXZlICIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgZ3JwYy1uYXRpdmUgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDUkVWX2dycGMgPSAiMmRlMmU4ZGQ4OTIxZTFmN2QwNDNlMDFmYWY3ZmU4YTI5MWZiYjA3MiIKK1NSQ1JFVl91cGIgPSAiOWVmZmNiY2IyN2YwYTY2NWY5ZjM0NTAzMDE4OGMwYjI5MWUzMjQ4MiIKK0JSQU5DSCA9ICJ2MS4yNC54IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dycGMvZ3JwYy5naXQ7cHJvdG9jb2w9aHR0cHM7bmFtZT1ncnBjO2JyYW5jaD0ke0JSQU5DSH0gXAorICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL3Byb3RvY29sYnVmZmVycy91cGI7bmFtZT11cGI7ZGVzdHN1ZmZpeD1naXQvdGhpcmRfcGFydHkvdXBiIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWxpYnJhcmllcy1pbnN0YWxsYXRpb24tZm9yLUxpbnV4LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vMDAwMS1DTWFrZUxpc3RzLnR4dC1GaXgtZ3JwY19jcHBfcGx1Z2luLXBhdGgtZHVyaW5nLWNyb3NzLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIGZpbGU6Ly8wMDAxLUNNYWtlTGlzdHMudHh0LUZpeC1ncnBjX2NwcF9wbHVnaW4tcGF0aC1kdXJpbmctY3Jvc3MucGF0Y2giCisKKyMgRml4ZXMgYnVpbGQgd2l0aCBvbGRlciBjb21waWxlcnMgNC44IGVzcGVjaWFsbHkgb24gdWJ1bnR1IDE0LjA0CitDWFhGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtV2wsLS1uby1hcy1uZWVkZWQiCisKK2luaGVyaXQgY21ha2UgcGtnY29uZmlnCisKK0VYVFJBX09FQ01BS0UgPSAiIFwKKyAgICAtRGdSUENfQ0FSRVNfUFJPVklERVI9cGFja2FnZSBcCisgICAgLURnUlBDX1pMSUJfUFJPVklERVI9cGFja2FnZSBcCisgICAgLURnUlBDX1NTTF9QUk9WSURFUj1wYWNrYWdlIFwKKyAgICAtRGdSUENfUFJPVE9CVUZfUFJPVklERVI9cGFja2FnZSBcCisgICAgLURnUlBDX0dGTEFHU19QUk9WSURFUj1wYWNrYWdlIFwKKyAgICAtRGdSUENfSU5TVEFMTD1PTiBcCisgICAgLURDTUFLRV9DUk9TU0NPTVBJTElORz1PTiBcCisgICAgLURCVUlMRF9TSEFSRURfTElCUz1PTiBcCisgICAgLURnUlBDX0lOU1RBTExfTElCRElSPSR7YmFzZWxpYn0gXAorICAgIC1EZ1JQQ19JTlNUQUxMX0NNQUtFRElSPSR7YmFzZWxpYn0vY21ha2UvJHtCUE59IFwKKyAgICAiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX21pcHNhcmNoKCkgeworICAgIHNlZCAtaSAtZSAicy9zZXQoX2dSUENfQUxMVEFSR0VUU19MSUJSQVJJRVMgXCR7Q01BS0VfRExfTElCU30gcnQgbSBwdGhyZWFkKS9zZXQoX2dSUENfQUxMVEFSR0VUU19MSUJSQVJJRVMgXCR7Q01BS0VfRExfTElCU30gYXRvbWljIHJ0IG0gcHRocmVhZCkvZyIgJHtTfS9DTWFrZUxpc3RzLnR4dAorfQorCitkb19jb25maWd1cmVfcHJlcGVuZF9wb3dlcnBjKCkgeworICAgIHNlZCAtaSAtZSAicy9zZXQoX2dSUENfQUxMVEFSR0VUU19MSUJSQVJJRVMgXCR7Q01BS0VfRExfTElCU30gcnQgbSBwdGhyZWFkKS9zZXQoX2dSUENfQUxMVEFSR0VUU19MSUJSQVJJRVMgXCR7Q01BS0VfRExfTElCU30gYXRvbWljIHJ0IG0gcHRocmVhZCkvZyIgJHtTfS9DTWFrZUxpc3RzLnR4dAorfQorCitkb19jb25maWd1cmVfcHJlcGVuZF9yaXNjdjY0KCkgeworICAgIHNlZCAtaSAtZSAicy9zZXQoX2dSUENfQUxMVEFSR0VUU19MSUJSQVJJRVMgXCR7Q01BS0VfRExfTElCU30gcnQgbSBwdGhyZWFkKS9zZXQoX2dSUENfQUxMVEFSR0VUU19MSUJSQVJJRVMgXCR7Q01BS0VfRExfTElCU30gYXRvbWljIHJ0IG0gcHRocmVhZCkvZyIgJHtTfS9DTWFrZUxpc3RzLnR4dAorfQorCitkb19jb25maWd1cmVfcHJlcGVuZF9yaXNjdjMyKCkgeworICAgIHNlZCAtaSAtZSAicy9zZXQoX2dSUENfQUxMVEFSR0VUU19MSUJSQVJJRVMgXCR7Q01BS0VfRExfTElCU30gcnQgbSBwdGhyZWFkKS9zZXQoX2dSUENfQUxMVEFSR0VUU19MSUJSQVJJRVMgXCR7Q01BS0VfRExfTElCU30gYXRvbWljIHJ0IG0gcHRocmVhZCkvZyIgJHtTfS9DTWFrZUxpc3RzLnR4dAorfQorCitkb19jb25maWd1cmVfcHJlcGVuZF90b29sY2hhaW4tY2xhbmdfeDg2KCkgeworICAgIHNlZCAtaSAtZSAicy9zZXQoX2dSUENfQUxMVEFSR0VUU19MSUJSQVJJRVMgXCR7Q01BS0VfRExfTElCU30gcnQgbSBwdGhyZWFkKS9zZXQoX2dSUENfQUxMVEFSR0VUU19MSUJSQVJJRVMgXCR7Q01BS0VfRExfTElCU30gYXRvbWljIHJ0IG0gcHRocmVhZCkvZyIgJHtTfS9DTWFrZUxpc3RzLnR4dAorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NZU1JPT1RfRElSU19CTEFDS0xJU1RfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIke2Jhc2VsaWJ9L2NtYWtlL2dycGMiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2d1aWRlci9ndWlkZXJfMy45LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3VpZGVyL2d1aWRlcl8zLjkuNi5iYgppbmRleCAwMDU3ZGI2Li5mMDU5MDAyIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3VpZGVyL2d1aWRlcl8zLjkuNi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3VpZGVyL2d1aWRlcl8zLjkuNi5iYgpAQCAtMTYsNyArMTYsNyBAQAogUyA9ICIke1dPUktESVJ9L2dpdCIKIFIgPSAiJHtSRUNJUEVfU1lTUk9PVH0iCiAKLWluaGVyaXQgZGlzdHV0aWxzCitpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJCQkZJTEVfQ09MTEVDVElPTlMiLCAibWV0YS1weXRob24yIiwgImRpc3R1dGlscyIsICIiLCBkKX0KIAogR1VJREVSX09CSiA9ICJndWlkZXIucHljIgogR1VJREVSX1NDUklQVCA9ICJndWlkZXIiCkBAIC0zMywzICszMyw3IEBACiAKIFJERVBFTkRTXyR7UE59ID0gInB5dGhvbi1jdHlwZXMgcHl0aG9uLXNoZWxsIFwKICAgICAgICAgICAgICAgICAgIHB5dGhvbi1qc29uIHB5dGhvbi1zdWJwcm9jZXNzIgorcHl0aG9uKCkgeworICAgIGlmICdtZXRhLXB5dGhvbjInIG5vdCBpbiBkLmdldFZhcignQkJGSUxFX0NPTExFQ1RJT05TJykuc3BsaXQoKToKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgnUmVxdWlyZXMgbWV0YS1weXRob24yIHRvIGJlIHByZXNlbnQuJykKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qcS9qcV8xLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvanEvanFfMS42LmJiCmluZGV4IDAwODZlYWUuLmJmYWVlZDUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qcS9qcV8xLjYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2pxL2pxXzEuNi5iYgpAQCAtOCw4ICs4LDEwIEBACiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE1ZDAzZTM2MGZhNzM5OWY3NmQ1YTQzNTlmYzcyY2JmIgogCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zdGVkb2xhbi8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtCUH0vJHtCUH0udGFyLmd6IFwKLSIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3N0ZWRvbGFuLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke0JQfS8ke0JQfS50YXIuZ3oiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc3RlZG9sYW4vJHtCUE59L3JlbGVhc2VzIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAianFcLSg/UDxwdmVyPihcZCtcLlxkKykpKD8hX1xkKykudGFyLmd6IgogCiBTUkNfVVJJW21kNXN1bV0gPSAiZTY4ZmJkNmE5OTJlMzZmMWFjNDhjOTliYmY4MjVkNmIiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWRlOGM4ZTI5YWFhM2ZiOWNjNmI0N2JiMjcyOTlmMjcxMzU0ZWJiNzI1MTRlM2FjY2FkYzdkMzhiNWJiYWE3MiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29ucnBjL2pzb25ycGNfMS4yLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvanNvbnJwYy9qc29ucnBjXzEuMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYmY0NGQ3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29ucnBjL2pzb25ycGNfMS4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIkMrKyBmcmFtZXdvcmsgZm9yIGpzb24tcnBjIDEuMCBhbmQgMi4wIgotREVTQ1JJUFRJT04gPSAiSnNvblJwYy1DcHAgaXMgYW4gT3BlblNvdXJjZSBpbXBsZW1lbnRhdGlvbiBvZiBKU09OLVJQQyBcCi0gICAgICAgICAgICAgICBwcm90b2NvbCBpbiBDKysuIEpTT04tUlBDIGlzIGEgbGlnaHR3ZWlnaHQgcmVtb3RlIHByb2NlZHVyZSBcCi0gICAgICAgICAgICAgICBjYWxsIHByb3RvY29sIHNpbWlsYXIgdG8gWE1MLVJQQy4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vY2luZW1hc3QvbGlianNvbi1ycGMtY3BwIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NGU3MjhjNWIzNjAxOGY2YzM4M2I0YjllZmQ5Yzg4NDAiCi1TRUNUSU9OID0gImxpYnMiCi0KLURFUEVORFMgPSAiY3VybCBqc29uY3BwIGxpYm1pY3JvaHR0cGQgaGlyZWRpcyIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2NpbmVtYXN0L2xpYmpzb24tcnBjLWNwcCIKLVNSQ1JFViA9ICI0ZWQ1YjAwZGNjNDA5NDA1YTE5ZTZkOGM2NDc4ZjcwMzE1MzQzMGUxIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1QQUNLQUdFQ09ORklHID89ICIiCi1QQUNLQUdFQ09ORklHW2NvdmVyYWdlXSA9ICItRFdJVEhfQ09WRVJBR0U9WUVTLC1EV0lUSF9DT1ZFUkFHRT1OTywsIgotCi1pbmhlcml0IGNtYWtlCi0KLUVYVFJBX09FQ01BS0UgKz0gIi1EQ09NUElMRV9URVNUUz1OTyAtRENPTVBJTEVfU1RVQkdFTj1OTyAtRENPTVBJTEVfRVhBTVBMRVM9Tk8gXAotICAgICAgICAgICAgICAgICAgLURCVUlMRF9TSEFSRURfTElCUz1ZRVMgLURCVUlMRF9TVEFUSUNfTElCUz1ZRVMgXAotICAgICAgICAgICAgICAgICAgLURDTUFLRV9MSUJSQVJZX1BBVEg9JHtsaWJkaXJ9IFwKLSIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbGlianNvbi1ycGMtY3BwL2NtYWtlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2pzb25ycGMvanNvbnJwY18xLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29ucnBjL2pzb25ycGNfMS4zLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E5Njc1ZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29ucnBjL2pzb25ycGNfMS4zLjAuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJDKysgZnJhbWV3b3JrIGZvciBqc29uLXJwYyAxLjAgYW5kIDIuMCIKK0RFU0NSSVBUSU9OID0gIkpzb25ScGMtQ3BwIGlzIGFuIE9wZW5Tb3VyY2UgaW1wbGVtZW50YXRpb24gb2YgSlNPTi1SUEMgXAorICAgICAgICAgICAgICAgcHJvdG9jb2wgaW4gQysrLiBKU09OLVJQQyBpcyBhIGxpZ2h0d2VpZ2h0IHJlbW90ZSBwcm9jZWR1cmUgXAorICAgICAgICAgICAgICAgY2FsbCBwcm90b2NvbCBzaW1pbGFyIHRvIFhNTC1SUEMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2NpbmVtYXN0L2xpYmpzb24tcnBjLWNwcCIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTRlNzI4YzViMzYwMThmNmMzODNiNGI5ZWZkOWM4ODQwIgorU0VDVElPTiA9ICJsaWJzIgorCitERVBFTkRTID0gImN1cmwganNvbmNwcCBsaWJtaWNyb2h0dHBkIGhpcmVkaXMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9jaW5lbWFzdC9saWJqc29uLXJwYy1jcHAiCitTUkNSRVYgPSAiYzY5NmY2OTMyMTEzYjgxY2QyMGNkNGEzNGZkYjE4MDhlNzczZjIzZSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworUEFDS0FHRUNPTkZJRyA/PSAiIgorUEFDS0FHRUNPTkZJR1tjb3ZlcmFnZV0gPSAiLURXSVRIX0NPVkVSQUdFPVlFUywtRFdJVEhfQ09WRVJBR0U9Tk8sLCIKKworaW5oZXJpdCBjbWFrZQorCitFWFRSQV9PRUNNQUtFICs9ICItRENPTVBJTEVfVEVTVFM9Tk8gLURDT01QSUxFX1NUVUJHRU49Tk8gLURDT01QSUxFX0VYQU1QTEVTPU5PIFwKKyAgICAgICAgICAgICAgICAgIC1EQlVJTERfU0hBUkVEX0xJQlM9WUVTIC1EQlVJTERfU1RBVElDX0xJQlM9WUVTIFwKKyAgICAgICAgICAgICAgICAgIC1EQ01BS0VfTElCUkFSWV9QQVRIPSR7bGliZGlyfSBcCisiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYmpzb24tcnBjLWNwcC9jbWFrZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sYXBhY2svbGFwYWNrXzMuOC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xhcGFjay9sYXBhY2tfMy44LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1NDQ3NDQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xhcGFjay9sYXBhY2tfMy44LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1TVU1NQVJZID0gIkxpbmVhciBBbGdlYnJhIFBBQ0thZ2UiCi1VUkwgPSAiaHR0cDovL3d3dy5uZXRsaWIub3JnL2xhcGFjayIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTMwZjhhYTUwMGE0N2M3ZGFiMGY4ZWZiNWExYzlhNDAiCi0KLSMgUmVjaXBlIG5lZWRzIEZPUlRSQU4gc3VwcG9ydCAoY29waWVkIGZyb20gY29uZi9sb2NhbC5jb25mLnNhbXBsZS5leHRlbmRlZCkKLSMgRW5hYmxpbmcgRk9SVFJBTgotIyBOb3RlIHRoaXMgaXMgbm90IG9mZmljaWFsbHkgc3VwcG9ydGVkIGFuZCBpcyBqdXN0IGlsbHVzdHJhdGVkIGhlcmUgdG8KLSMgc2hvdyBhbiBleGFtcGxlIG9mIGhvdyBpdCBjYW4gYmUgZG9uZQotIyBZb3UnbGwgYWxzbyBuZWVkIHlvdXIgZm9ydHJhbiByZWNpcGUgdG8gZGVwZW5kIG9uIGxpYmdmb3J0cmFuCi0jRk9SVFJBTl9mb3JjZXZhcmlhYmxlID0gIixmb3J0cmFuIgotI1JVTlRJTUVUQVJHRVRfYXBwZW5kX3BuLWdjYy1ydW50aW1lID0gIiBsaWJxdWFkbWF0aCIKLQotREVQRU5EUyA9ICJsaWJnZm9ydHJhbiIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm5ldGxpYi5vcmcvbGFwYWNrL2xhcGFjay0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiOTY1OTFhZmZkYmY1OGM0NTBkNDVjMWRhYTU0MGRiZDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGViMjJjYzRhNjEyMGJmZjcyNjIxMTU1YTk5MTdmNDg1Zjk2ZWY4MzE5YWMwNzRhN2FmYmM2OGFhYjg4YmNmNiIKLQotRVhUUkFfT0VDTUFLRSA9ICIgLURCVUlMRF9TSEFSRURfTElCUz1PTiAiCi1PRUNNQUtFX0dFTkVSQVRPUiA9ICJVbml4IE1ha2VmaWxlcyIKLQotaW5oZXJpdCBjbWFrZSBwa2djb25maWcKLUVYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xhcGFjay9sYXBhY2tfMy45LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGFwYWNrL2xhcGFja18zLjkuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmQ0ZGY1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xhcGFjay9sYXBhY2tfMy45LjAuYmIKQEAgLTAsMCArMSwyNCBAQAorU1VNTUFSWSA9ICJMaW5lYXIgQWxnZWJyYSBQQUNLYWdlIgorVVJMID0gImh0dHA6Ly93d3cubmV0bGliLm9yZy9sYXBhY2siCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTkzMGY4YWE1MDBhNDdjN2RhYjBmOGVmYjVhMWM5YTQwIgorCisjIFJlY2lwZSBuZWVkcyBGT1JUUkFOIHN1cHBvcnQgKGNvcGllZCBmcm9tIGNvbmYvbG9jYWwuY29uZi5zYW1wbGUuZXh0ZW5kZWQpCisjIEVuYWJsaW5nIEZPUlRSQU4KKyMgTm90ZSB0aGlzIGlzIG5vdCBvZmZpY2lhbGx5IHN1cHBvcnRlZCBhbmQgaXMganVzdCBpbGx1c3RyYXRlZCBoZXJlIHRvCisjIHNob3cgYW4gZXhhbXBsZSBvZiBob3cgaXQgY2FuIGJlIGRvbmUKKyMgWW91J2xsIGFsc28gbmVlZCB5b3VyIGZvcnRyYW4gcmVjaXBlIHRvIGRlcGVuZCBvbiBsaWJnZm9ydHJhbgorI0ZPUlRSQU5fZm9yY2V2YXJpYWJsZSA9ICIsZm9ydHJhbiIKKyNSVU5USU1FVEFSR0VUX2FwcGVuZF9wbi1nY2MtcnVudGltZSA9ICIgbGlicXVhZG1hdGgiCisKK0RFUEVORFMgPSAibGliZ2ZvcnRyYW4iCisKK1NSQ1JFViA9ICI2YWNjOTlkNWYzOTEzMGJlN2NlYzAwZmI4MzU2MDYwNDIxMDFhOTcwIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL1JlZmVyZW5jZS1MQVBBQ0svbGFwYWNrLmdpdDtwcm90b2NvbD1odHRwcyIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0VYVFJBX09FQ01BS0UgPSAiIC1EQlVJTERfU0hBUkVEX0xJQlM9T04gIgorT0VDTUFLRV9HRU5FUkFUT1IgPSAiVW5peCBNYWtlZmlsZXMiCisKK2luaGVyaXQgY21ha2UgcGtnY29uZmlnCitFWENMVURFX0ZST01fV09STEQgPSAiMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJnZWUvbGliZ2VlXzAuMjAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJnZWUvbGliZ2VlXzAuMjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA0OGU0OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGliZ2VlL2xpYmdlZV8wLjIwLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJsaWJnZWUgaXMgYSBjb2xsZWN0aW9uIGxpYnJhcnkgcHJvdmlkaW5nIEdPYmplY3QtYmFzZWQgaW50ZXJmYWNlcyBcCi1hbmQgY2xhc3NlcyBmb3IgY29tbW9ubHkgdXNlZCBkYXRhIHN0cnVjdHVyZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL0xpYmdlZSIKLVNFQ1RJT04gPSAibGlicyIKLURFUEVORFMgPSAiZ2xpYi0yLjAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiYzA5MzkwMTg1N2ZjZDExOGYwNjVmOTAwOTgyYzI0IgotCi1QRSA9ICIxIgotaW5oZXJpdCBnbm9tZWJhc2UgdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgTUFDUk9TPSJsaWJ0b29sLm00IGx0fm9ic29sZXRlLm00IGx0b3B0aW9ucy5tNCBsdHN1Z2FyLm00IGx0dmVyc2lvbi5tNCIKLSAgICBmb3IgaSBpbiAke01BQ1JPU307IGRvCi0gICAgICAgIHJtIC1mIG00LyRpCi0gICAgZG9uZQotfQotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI0NWRiNDc4ZjJiMzAwYWRhOGUwMzllYmM2Yzk0NThkZSIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjllMDM1YzRiNzU1ZjQ2YmZhZTcwYmE4MWNkY2Y4MzI4YjAzZjU1NDM3M2NlYzhjODE2ZThiNTY4MGY4NTM1M2MiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGliZ2VlL2xpYmdlZV8wLjIwLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGliZ2VlL2xpYmdlZV8wLjIwLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc2ZWZmNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJnZWUvbGliZ2VlXzAuMjAuMy5iYgpAQCAtMCwwICsxLDIyIEBACitERVNDUklQVElPTiA9ICJsaWJnZWUgaXMgYSBjb2xsZWN0aW9uIGxpYnJhcnkgcHJvdmlkaW5nIEdPYmplY3QtYmFzZWQgaW50ZXJmYWNlcyBcCithbmQgY2xhc3NlcyBmb3IgY29tbW9ubHkgdXNlZCBkYXRhIHN0cnVjdHVyZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL0xpYmdlZSIKK1NFQ1RJT04gPSAibGlicyIKK0RFUEVORFMgPSAiZ2xpYi0yLjAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiYzA5MzkwMTg1N2ZjZDExOGYwNjVmOTAwOTgyYzI0IgorCitQRSA9ICIxIgoraW5oZXJpdCBnbm9tZWJhc2UgdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgTUFDUk9TPSJsaWJ0b29sLm00IGx0fm9ic29sZXRlLm00IGx0b3B0aW9ucy5tNCBsdHN1Z2FyLm00IGx0dmVyc2lvbi5tNCIKKyAgICBmb3IgaSBpbiAke01BQ1JPU307IGRvCisgICAgICAgIHJtIC1mIG00LyRpCisgICAgZG9uZQorfQorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJlNTc0YjM5NTJiOTNkMjE5YjVlYzdjNzRjNTg5MmMzMyIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImQwYjVlZGVmYzg4Y2JjYTVmMTcwOWQxOWZhNjJhZWY0OTA5MjJjNjU3N2ExNGFjNGU3YjA4NTUwNzkxMWE1ZGUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHRyYWNlL2x0cmFjZV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHRyYWNlL2x0cmFjZV9naXQuYmIKaW5kZXggNmI2NmMyNS4uNTcxMDk0MyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x0cmFjZS9sdHJhY2VfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdHJhY2UvbHRyYWNlX2dpdC5iYgpAQCAtMzgsNiArMzgsOSBAQAogUEFDS0FHRUNPTkZJR1t1bndpbmRdID0gIi0td2l0aC1saWJ1bndpbmQsLS13aXRob3V0LWxpYnVud2luZCxsaWJ1bndpbmQiCiBQQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0tZW5hYmxlLXNlbGludXgsLS1kaXNhYmxlLXNlbGludXgsbGlic2VsaW51eCxsaWJzZWxpbnV4IgogCitDT01QQVRJQkxFX0hPU1RfcmlzY3Y2NCA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX3Jpc2N2MzIgPSAibnVsbCIKKwogZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewogICAgICggY2QgJHtTfTsgLi9hdXRvZ2VuLnNoICkKIH0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdWEvbHVhXzUuMy41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YS9sdWFfNS4zLjUuYmIKaW5kZXggYWU0MWU2Mi4uYTIzYTRhNSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YS9sdWFfNS4zLjUuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YS9sdWFfNS4zLjUuYmIKQEAgLTM1LDYgKzM1LDcgQEAKIAogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CiAgICAgc2VkIC1pIC1lIHM6L3Vzci9sb2NhbDoke3ByZWZpeH06ZyBzcmMvbHVhY29uZi5oCisgICAgc2VkIC1pIC1lIHM6bGliL2x1YS86JHtiYXNlbGlifS9sdWEvOmcgc3JjL2x1YWNvbmYuaAogfQogCiBkb19jb21waWxlICgpIHsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdWFqaXQvbHVhaml0L2NsYW5nLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXQvY2xhbmcucGF0Y2gKaW5kZXggYzM5ZWY2Zi4uODA3Y2M0NCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXQvY2xhbmcucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXQvY2xhbmcucGF0Y2gKQEAgLTgsOCArOCw4IEBACiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gTHVhSklULTIuMC41Lm9yaWcvc3JjL2xqX2FyY2guaAogKysrIEx1YUpJVC0yLjAuNS9zcmMvbGpfYXJjaC5oCi1AQCAtMzEzLDcgKzMxMyw3IEBACi0gI2Vycm9yICJOZWVkIGF0IGxlYXN0IEdDQyA0LjIgb3IgbmV3ZXIiCitAQCAtNDM2LDcgKzQzNiw3IEBACisgI2VuZGlmCiAgI2VuZGlmCiAgI2VsaWYgIUxKX1RBUkdFVF9QUzMKIC0jaWYgKF9fR05VQ19fIDwgNCkgfHwgKChfX0dOVUNfXyA9PSA0KSAmJiBfX0dOVUNfTUlOT1JfXyA8IDMpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhaml0L2x1YWppdF8yLjAuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdWFqaXQvbHVhaml0XzIuMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGEwNDcwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdWFqaXQvbHVhaml0XzIuMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotU1VNTUFSWSA9ICJKdXN0LUluLVRpbWUgQ29tcGlsZXIgZm9yIEx1YSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0xMGE5NmM5MzQwM2FmZmNjMzQ3NjVmNGMyNjEyYmMyMiIKLUhPTUVQQUdFID0gImh0dHA6Ly9sdWFqaXQub3JnIgotCi1QViAuPSAiK2dpdCR7U1JDUFZ9IgotU1JDUkVWID0gIjAyYjUyMTk4MWExYWI5MTlmZjJjZDRkOWJjYWVlODBiYWY3N2RjZTIiCi1TUkNfVVJJID0gImdpdDovL2x1YWppdC5vcmcvZ2l0L2x1YWppdC0yLjAuZ2l0O3Byb3RvY29sPWh0dHAgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3Qtc3RyaXAtYXV0b21hdGljYWxseS10aGlzLWxlYXZlcy10aGUtc3RyaXBwaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NsYW5nLnBhdGNoIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBwa2djb25maWcgYmluY29uZmlnIHNpdGVpbmZvCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi0jIGh0dHA6Ly9sdWFqaXQub3JnL2luc3RhbGwuaHRtbCNjcm9zcwotIyBIb3N0IGx1YWppdCBuZWVkcyB0byBiZSBjb21waWxlZCB3aXRoIHRoZSBzYW1lIHBvaW50ZXIgc2l6ZQotIyBJZiB5b3Ugd2FudCB0byBjcm9zcy1jb21waWxlIHRvIGFueSAzMiBiaXQgdGFyZ2V0IG9uIGFuIHg2NCBPUywKLSMgeW91IG5lZWQgdG8gaW5zdGFsbCB0aGUgbXVsdGlsaWIgZGV2ZWxvcG1lbnQgcGFja2FnZSAoZS5nLgotIyBsaWJjNi1kZXYtaTM4NiBvbiBEZWJpYW4vVWJ1bnR1KSBhbmQgYnVpbGQgYSAzMiBiaXQgaG9zdCBwYXJ0Ci0jIChIT1NUX0NDPSJnY2MgLW0zMiIpLgotQlVJTERfQ0NfQVJDSF9hcHBlbmQgPSAiICR7QFsnLW0zMicsJyddW2QuZ2V0VmFyKCdTSVRFSU5GT19CSVRTJykgIT0gJzMyJ119IgotCi0jIFRoZSBsdWEgbWFrZWZpbGVzIGV4cGVjdCB0aGUgVEFSR0VUX1NZUyB0byBiZSBmcm9tIHVuYW1lIC1zCi0jIFZhbHVlczogV2luZG93cywgTGludXgsIERhcndpbiwgaU9TLCBTdW5PUywgUFMzLCBHTlUva0ZyZWVCU0QKLUxVQV9UQVJHRVRfT1MgPSAiVW5rbm93biIKLUxVQV9UQVJHRVRfT1NfZGFyd2luID0gIkRhcndpbiIKLUxVQV9UQVJHRVRfT1NfbGludXggPSAiTGludXgiCi1MVUFfVEFSR0VUX09TX2xpbnV4LWdudWVhYmkgPSAiTGludXgiCi1MVUFfVEFSR0VUX09TX21pbmd3MzIgPSAiV2luZG93cyIKLQotIyBXZSBkb24ndCB3YW50IHRoZSBsdWEgYnVpbGRzeXN0ZW0ncyBjb21waWxlciBvcHRpbWl6YXRpb25zLCBvciBpdHMKLSMgc3RyaXBwaW5nLCBhbmQgd2UgZG9uJ3Qgd2FudCBpdCB0byBwaWNrIHVwIENGTEFHUyBvciBMREZMQUdTLCBhcyB0aG9zZSBhcHBseQotIyB0byBib3RoIGhvc3QgYW5kIHRhcmdldCBjb21waWxlcwotRVhUUkFfT0VNQUtFID0gIlwKLSAgICBRPSBFPSdAOicgXAotICAgIFwKLSAgICBDQ09QVD0gQ0NPUFRfeDg2PSBDRkxBR1M9IExERkxBR1M9IFRBUkdFVF9TVFJJUD0nQDonIFwKLSAgICBcCi0gICAgJ1RBUkdFVF9TWVM9JHtMVUFfVEFSR0VUX09TfScgXAotICAgIFwKLSAgICAnQ0M9JHtDQ30nIFwKLSAgICAnVEFSR0VUX0FSPSR7QVJ9IHJjdXMnIFwKLSAgICAnVEFSR0VUX0NGTEFHUz0ke0NGTEFHU30nIFwKLSAgICAnVEFSR0VUX0xERkxBR1M9JHtMREZMQUdTfScgXAotICAgICdUQVJHRVRfU0hMREZMQUdTPSR7TERGTEFHU30nIFwKLSAgICAnSE9TVF9DQz0ke0JVSUxEX0NDfScgXAotICAgICdIT1NUX0NGTEFHUz0ke0JVSUxEX0NGTEFHU30nIFwKLSAgICBcCi0gICAgJ1BSRUZJWD0ke3ByZWZpeH0nIFwKLSAgICAnTVVMVElMSUI9JHtiYXNlbGlifScgXAotICAgICdMRENPTkZJRz06JyBcCi0iCi0KLWRvX2NvbXBpbGUgKCkgewotICAgIG9lX3J1bm1ha2UKLX0KLQotIyBUaGVyZSdzIElOU1RBTExfTElCIGFuZCBJTlNUQUxMX1NIQVJFIGFsc28sIGJ1dCB0aGUgbHVhIGJpbmFyeSBoYXJkY29kZXMgdGhlCi0jICcvc2hhcmUnIGFuZCAnLycgKyBMVUFfTVVMVElMSUIgcGF0aHMsIHNvIHdlIGRvbid0IHdhbnQgdG8gYnJlYWsgdGhvc2UKLSMgZXhwZWN0YXRpb25zLgotRVhUUkFfT0VNQUtFSU5TVCA9ICJcCi0gICAgJ0RFU1RESVI9JHtEfScgXAotICAgICdJTlNUQUxMX0JJTj0ke0R9JHtiaW5kaXJ9JyBcCi0gICAgJ0lOU1RBTExfSU5DPSR7RH0ke2luY2x1ZGVkaXJ9L2x1YWppdC0kKE1BSlZFUikuJChNSU5WRVIpJyBcCi0gICAgJ0lOU1RBTExfTUFOPSR7RH0ke21hbmRpcn0vbWFuMScgXAotIgotZG9faW5zdGFsbCAoKSB7Ci0gICAgb2VfcnVubWFrZSAke0VYVFJBX09FTUFLRUlOU1R9IGluc3RhbGwKLSAgICBybWRpciAke0R9JHtkYXRhZGlyfS9sdWEvNS4qIFwKLSAgICAgICAgICAke0R9JHtkYXRhZGlyfS9sdWEgXAotICAgICAgICAgICR7RH0ke2xpYmRpcn0vbHVhLzUuKiBcCi0gICAgICAgICAgJHtEfSR7bGliZGlyfS9sdWEKLX0KLQotUEFDS0FHRVMgKz0gJ2x1YWppdC1jb21tb24nCi0KLSMgU2VlIHRoZSBjb21tZW50IGZvciBFWFRSQV9PRU1BS0VJTlNULiBUaGlzIGlzIG5lZWRlZCB0byBlbnN1cmUgdGhlIGhhcmRjb2RlZAotIyBwYXRocyBhcmUgcGFja2FnZWQgcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSBsaWJkaXIgYW5kIGRhdGFkaXIgcGF0aHMgYXJlLgotRklMRVNfJHtQTn0gKz0gIiR7cHJlZml4fS8ke2Jhc2VsaWJ9ICR7cHJlZml4fS9zaGFyZSIKLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGlibHVhaml0LTUuMS5zby4yIFwKLSAgICAke2xpYmRpcn0vbGlibHVhaml0LTUuMS5zby4ke1BWfSBcCi0iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9saWJsdWFqaXQtNS4xLmEgXAotICAgICR7bGliZGlyfS9saWJsdWFqaXQtNS4xLnNvIFwKLSAgICAke2xpYmRpcn0vcGtnY29uZmlnL2x1YWppdC5wYyBcCi0iCi1GSUxFU19sdWFqaXQtY29tbW9uID0gIiR7ZGF0YWRpcn0vJHtCUE59LSR7UFZ9IgotCi0jIEFhcmNoNjQvbWlwczY0L3BwYy9wcGM2NCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgcmVsZWFzZQotQ09NUEFUSUJMRV9IT1NUX2FhcmNoNjQgPSAibnVsbCIKLUNPTVBBVElCTEVfSE9TVF9taXBzYXJjaG4zMiA9ICJudWxsIgotQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjY0ID0gIm51bGwiCi1DT01QQVRJQkxFX0hPU1RfcG93ZXJwYyA9ICJudWxsIgotQ09NUEFUSUJMRV9IT1NUX3Bvd2VycGM2NCA9ICJudWxsIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXRfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXRfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ZjgyMTYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhaml0L2x1YWppdF9naXQuYmIKQEAgLTAsMCArMSw5OSBAQAorU1VNTUFSWSA9ICJKdXN0LUluLVRpbWUgQ29tcGlsZXIgZm9yIEx1YSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT1kNzM5YmI5MjUwYTU1YzEyNGE1NDViNTg4ZmQ3Njc3MSIKK0hPTUVQQUdFID0gImh0dHA6Ly9sdWFqaXQub3JnIgorCitQViA9ICIyLjEuMH5iZXRhMyIKK1NSQ1JFViA9ICIwYWQ2MGNjYmMzNzY4ZmE4ZTNlNzI2ODU4YWRmMjYxOTUwZWRiYzIyIgorU1JDX1VSSSA9ICJnaXQ6Ly9sdWFqaXQub3JnL2dpdC9sdWFqaXQtMi4wLmdpdDtwcm90b2NvbD1odHRwO2JyYW5jaD12Mi4xIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXN0cmlwLWF1dG9tYXRpY2FsbHktdGhpcy1sZWF2ZXMtdGhlLXN0cmlwcGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jbGFuZy5wYXRjaCBcCisgICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBwa2djb25maWcgYmluY29uZmlnIHNpdGVpbmZvCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCisjIGh0dHA6Ly9sdWFqaXQub3JnL2luc3RhbGwuaHRtbCNjcm9zcworIyBIb3N0IGx1YWppdCBuZWVkcyB0byBiZSBjb21waWxlZCB3aXRoIHRoZSBzYW1lIHBvaW50ZXIgc2l6ZQorIyBJZiB5b3Ugd2FudCB0byBjcm9zcy1jb21waWxlIHRvIGFueSAzMiBiaXQgdGFyZ2V0IG9uIGFuIHg2NCBPUywKKyMgeW91IG5lZWQgdG8gaW5zdGFsbCB0aGUgbXVsdGlsaWIgZGV2ZWxvcG1lbnQgcGFja2FnZSAoZS5nLgorIyBsaWJjNi1kZXYtaTM4NiBvbiBEZWJpYW4vVWJ1bnR1KSBhbmQgYnVpbGQgYSAzMiBiaXQgaG9zdCBwYXJ0CisjIChIT1NUX0NDPSJnY2MgLW0zMiIpLgorQlVJTERfQ0NfQVJDSF9hcHBlbmQgPSAiICR7QFsnLW0zMicsJyddW2QuZ2V0VmFyKCdTSVRFSU5GT19CSVRTJykgIT0gJzMyJ119IgorCisjIFRoZSBsdWEgbWFrZWZpbGVzIGV4cGVjdCB0aGUgVEFSR0VUX1NZUyB0byBiZSBmcm9tIHVuYW1lIC1zCisjIFZhbHVlczogV2luZG93cywgTGludXgsIERhcndpbiwgaU9TLCBTdW5PUywgUFMzLCBHTlUva0ZyZWVCU0QKK0xVQV9UQVJHRVRfT1MgPSAiVW5rbm93biIKK0xVQV9UQVJHRVRfT1NfZGFyd2luID0gIkRhcndpbiIKK0xVQV9UQVJHRVRfT1NfbGludXggPSAiTGludXgiCitMVUFfVEFSR0VUX09TX2xpbnV4LWdudWVhYmkgPSAiTGludXgiCitMVUFfVEFSR0VUX09TX21pbmd3MzIgPSAiV2luZG93cyIKKworIyBXZSBkb24ndCB3YW50IHRoZSBsdWEgYnVpbGRzeXN0ZW0ncyBjb21waWxlciBvcHRpbWl6YXRpb25zLCBvciBpdHMKKyMgc3RyaXBwaW5nLCBhbmQgd2UgZG9uJ3Qgd2FudCBpdCB0byBwaWNrIHVwIENGTEFHUyBvciBMREZMQUdTLCBhcyB0aG9zZSBhcHBseQorIyB0byBib3RoIGhvc3QgYW5kIHRhcmdldCBjb21waWxlcworRVhUUkFfT0VNQUtFID0gIlwKKyAgICBRPSBFPSdAOicgXAorICAgIFwKKyAgICBDQ09QVD0gQ0NPUFRfeDg2PSBDRkxBR1M9IExERkxBR1M9IFRBUkdFVF9TVFJJUD0nQDonIFwKKyAgICBcCisgICAgJ1RBUkdFVF9TWVM9JHtMVUFfVEFSR0VUX09TfScgXAorICAgIFwKKyAgICAnQ0M9JHtDQ30nIFwKKyAgICAnVEFSR0VUX0FSPSR7QVJ9IHJjdXMnIFwKKyAgICAnVEFSR0VUX0NGTEFHUz0ke0NGTEFHU30nIFwKKyAgICAnVEFSR0VUX0xERkxBR1M9JHtMREZMQUdTfScgXAorICAgICdUQVJHRVRfU0hMREZMQUdTPSR7TERGTEFHU30nIFwKKyAgICAnSE9TVF9DQz0ke0JVSUxEX0NDfScgXAorICAgICdIT1NUX0NGTEFHUz0ke0JVSUxEX0NGTEFHU30nIFwKKyAgICBcCisgICAgJ1BSRUZJWD0ke3ByZWZpeH0nIFwKKyAgICAnTVVMVElMSUI9JHtiYXNlbGlifScgXAorICAgICdMRENPTkZJRz06JyBcCisiCisKK2RvX2NvbXBpbGUgKCkgeworICAgIG9lX3J1bm1ha2UKK30KKworIyBUaGVyZSdzIElOU1RBTExfTElCIGFuZCBJTlNUQUxMX1NIQVJFIGFsc28sIGJ1dCB0aGUgbHVhIGJpbmFyeSBoYXJkY29kZXMgdGhlCisjICcvc2hhcmUnIGFuZCAnLycgKyBMVUFfTVVMVElMSUIgcGF0aHMsIHNvIHdlIGRvbid0IHdhbnQgdG8gYnJlYWsgdGhvc2UKKyMgZXhwZWN0YXRpb25zLgorRVhUUkFfT0VNQUtFSU5TVCA9ICJcCisgICAgJ0RFU1RESVI9JHtEfScgXAorICAgICdJTlNUQUxMX0JJTj0ke0R9JHtiaW5kaXJ9JyBcCisgICAgJ0lOU1RBTExfSU5DPSR7RH0ke2luY2x1ZGVkaXJ9L2x1YWppdC0kKE1BSlZFUikuJChNSU5WRVIpJyBcCisgICAgJ0lOU1RBTExfTUFOPSR7RH0ke21hbmRpcn0vbWFuMScgXAorIgorZG9faW5zdGFsbCAoKSB7CisgICAgb2VfcnVubWFrZSAke0VYVFJBX09FTUFLRUlOU1R9IGluc3RhbGwKKyAgICBybWRpciAke0R9JHtkYXRhZGlyfS9sdWEvNS4qIFwKKyAgICAgICAgICAke0R9JHtkYXRhZGlyfS9sdWEgXAorICAgICAgICAgICR7RH0ke2xpYmRpcn0vbHVhLzUuKiBcCisgICAgICAgICAgJHtEfSR7bGliZGlyfS9sdWEKK30KKworUEFDS0FHRVMgKz0gJ2x1YWppdC1jb21tb24nCisKKyMgU2VlIHRoZSBjb21tZW50IGZvciBFWFRSQV9PRU1BS0VJTlNULiBUaGlzIGlzIG5lZWRlZCB0byBlbnN1cmUgdGhlIGhhcmRjb2RlZAorIyBwYXRocyBhcmUgcGFja2FnZWQgcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSBsaWJkaXIgYW5kIGRhdGFkaXIgcGF0aHMgYXJlLgorRklMRVNfJHtQTn0gKz0gIiR7cHJlZml4fS8ke2Jhc2VsaWJ9ICR7cHJlZml4fS9zaGFyZSIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGlibHVhaml0LTUuMS5zby4yIFwKKyAgICAke2xpYmRpcn0vbGlibHVhaml0LTUuMS5zby4ke1BWfSBcCisiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9saWJsdWFqaXQtNS4xLmEgXAorICAgICR7bGliZGlyfS9saWJsdWFqaXQtNS4xLnNvIFwKKyAgICAke2xpYmRpcn0vcGtnY29uZmlnL2x1YWppdC5wYyBcCisiCitGSUxFU19sdWFqaXQtY29tbW9uID0gIiR7ZGF0YWRpcn0vJHtCUE59LSR7UFZ9IgorCisjIG1pcHM2NC9wcGMvcHBjNjQvcmlzY3Y2NCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgcmVsZWFzZQorQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjMyID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfbWlwc2FyY2huNjQgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9wb3dlcnBjID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfcG93ZXJwYzY0ID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfcG93ZXJwYzY0bGUgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9yaXNjdjY0ID0gIm51bGwiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhcG9zaXgvbHVhcG9zaXgvMDAwMS1maXgtYXZvaWQtcmFjZS1jb25kaXRpb24tYmV0d2Vlbi10ZXN0LWFuZC1ta2Rpci5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdWFwb3NpeC9sdWFwb3NpeC8wMDAxLWZpeC1hdm9pZC1yYWNlLWNvbmRpdGlvbi1iZXR3ZWVuLXRlc3QtYW5kLW1rZGlyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4YTllM2QKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhcG9zaXgvbHVhcG9zaXgvMDAwMS1maXgtYXZvaWQtcmFjZS1jb25kaXRpb24tYmV0d2Vlbi10ZXN0LWFuZC1ta2Rpci5wYXRjaApAQCAtMCwwICsxLDc1IEBACitGcm9tIDRkZmNhMDM2Yzk2MDcxYmQyYTJjODBmZjg0NzE5YzZkMzc4NTgzNzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIYXNlZWIgQXNocmFmIDxIYXNlZWJfQXNocmFmQG1lbnRvci5jb20+CitEYXRlOiBGcmksIDE3IEFwciAyMDIwIDE0OjM2OjUwICswNTAwCitTdWJqZWN0OiBbUEFUQ0ggMS8xXSBmaXg6IGF2b2lkIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gdGVzdCBhbmQgbWtkaXIKKword2hlbiBidWlsZGluZyBpbiBwYXJhbGxlbCB0aGUgcmFjZSBjb25kaXRpb24sIHdoZW4gdGhlIGRpcmVjdG9yeQoraXMgdGVzdGVkIGZvciBleGlzdGVuY2UgYW5kIGl0IGlzIGNyZWF0ZWQsIGNhbiBicmVhayB0aGUgYnVpbGQKKworU2lnbmVkLW9mZi1ieTogSGFzZWViIEFzaHJhZiA8SGFzZWViX0FzaHJhZkBtZW50b3IuY29tPgorLS0tCisgTWFrZWZpbGUuaW4gICAgICAgICAgICB8IDYgKysrLS0tCisgYnVpbGQtYXV4L3JvY2tzcGVjcy5tayB8IDIgKy0KKyBsb2NhbC5tayAgICAgICAgICAgICAgIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggOWI1MWVmMy4uNDcyMjUyNSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTE2MzcsNyArMTYzNyw3IEBAIGRpc3RjbGVhbi10YWdzOgorIAorIGRpc3RkaXI6ICQoRElTVEZJTEVTKQorIAkkKGFtX19yZW1vdmVfZGlzdGRpcikKKy0JdGVzdCAtZCAiJChkaXN0ZGlyKSIgfHwgbWtkaXIgIiQoZGlzdGRpcikiCisrCSQoTUtESVJfUCkgIiQoZGlzdGRpcikiCisgCUBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqXS9cXFxcJi9nJ2A7IFwKKyAJdG9wc3JjZGlyc3RyaXA9YGVjaG8gIiQodG9wX3NyY2RpcikiIHwgc2VkICdzL1tdLlteJCRcXCpdL1xcXFwmL2cnYDsgXAorIAlsaXN0PSckKERJU1RGSUxFUyknOyBcCitAQCAtMTk3NSw3ICsxOTc1LDcgQEAgY2xlYW4tbG9jYWw6CisgCXJtIC1mICQocG9zaXhfc3VibW9kdWxlcykKKyAKKyAkKGFsbGh0bWwpOiAkKEVYVFJBX2V4dF9wb3NpeF9wb3NpeF9sYV9TT1VSQ0VTKSAkKGV4dF9wb3NpeF9wb3NpeF9sYV9TT1VSQ0VTKQorLQl0ZXN0IC1kICQoYnVpbGRkaXIpL2RvYyB8fCBta2RpciAkKGJ1aWxkZGlyKS9kb2MKKysJJChNS0RJUl9QKSAkKGJ1aWxkZGlyKS9kb2MKKyBASEFWRV9MRE9DX1RSVUVACSQoTERPQykgLWMgYnVpbGQtYXV4L2NvbmZpZy5sZCAtZCAkKGFic19zcmNkaXIpL2RvYyAuCisgQEhBVkVfTERPQ19GQUxTRUAJJChNS0RJUl9QKSBkb2MKKyBASEFWRV9MRE9DX0ZBTFNFQAl0b3VjaCBkb2MvaW5kZXguaHRtbCBkb2MvbGRvYy5jc3MKK0BAIC0xOTgzLDcgKzE5ODMsNyBAQCAkKGFsbGh0bWwpOiAkKEVYVFJBX2V4dF9wb3NpeF9wb3NpeF9sYV9TT1VSQ0VTKSAkKGV4dF9wb3NpeF9wb3NpeF9sYV9TT1VSQ0VTKQorIGRvYzogJChhbGxodG1sKQorIAorICQobHVhcm9ja3NfY29uZmlnKTogTWFrZWZpbGUuYW0KKy0JQHRlc3QgLWQgYnVpbGQtYXV4IHx8IG1rZGlyIGJ1aWxkLWF1eAorKwlAJChNS0RJUl9QKSBidWlsZC1hdXgKKyAJJChBTV9WX0dFTil7CQkJCQkJXAorIAkgICQoc2V0X0xVQV9CSU5ESVIpOwkJCQkJXAorIAkgIGVjaG8gJ3JvY2tzX3RyZWVzID0geyAiJChhYnNfc3JjZGlyKS9sdWFyb2NrcyIgfSc7CVwKK2RpZmYgLS1naXQgYS9idWlsZC1hdXgvcm9ja3NwZWNzLm1rIGIvYnVpbGQtYXV4L3JvY2tzcGVjcy5taworaW5kZXggZWJkMWRiZi4uYzhmYmRiYyAxMDA2NDQKKy0tLSBhL2J1aWxkLWF1eC9yb2Nrc3BlY3MubWsKKysrKyBiL2J1aWxkLWF1eC9yb2Nrc3BlY3MubWsKK0BAIC02Miw3ICs2Miw3IEBAIExVQV9JTkNESVIgPSBgY2QgJCRMVUFfQklORElSLy4uL2luY2x1ZGUgJiYgcHdkYAorIExVQV9MSUJESVIgPSBgY2QgJCRMVUFfQklORElSLy4uL2xpYiAmJiBwd2RgCisgCisgJChsdWFyb2Nrc19jb25maWcpOiBNYWtlZmlsZS5hbQorLQlAdGVzdCAtZCBidWlsZC1hdXggfHwgbWtkaXIgYnVpbGQtYXV4CisrCUAkKE1LRElSX1ApIGJ1aWxkLWF1eAorIAkkKEFNX1ZfR0VOKXsJCQkJCQlcCisgCSAgJChzZXRfTFVBX0JJTkRJUik7CQkJCQlcCisgCSAgZWNobyAncm9ja3NfdHJlZXMgPSB7ICIkKGFic19zcmNkaXIpL2x1YXJvY2tzIiB9JzsJXAorZGlmZiAtLWdpdCBhL2xvY2FsLm1rIGIvbG9jYWwubWsKK2luZGV4IGQzOTFlZjcuLjgwYjIyY2UgMTAwNjQ0CistLS0gYS9sb2NhbC5taworKysrIGIvbG9jYWwubWsKK0BAIC0yNTUsNyArMjU1LDcgQEAgZGlzdF9leGFtcGxlc19EQVRBICs9CQkJCVwKKyBhbGxodG1sID0gJChkaXN0X2RvY19EQVRBKSAkKGRpc3RfZXhhbXBsZXNfREFUQSkgJChkaXN0X21vZHVsZXNfREFUQSkgJChkaXN0X2NsYXNzZXNfREFUQSkKKyAKKyAkKGFsbGh0bWwpOiAkKEVYVFJBX2V4dF9wb3NpeF9wb3NpeF9sYV9TT1VSQ0VTKSAkKGV4dF9wb3NpeF9wb3NpeF9sYV9TT1VSQ0VTKQorLQl0ZXN0IC1kICQoYnVpbGRkaXIpL2RvYyB8fCBta2RpciAkKGJ1aWxkZGlyKS9kb2MKKysJJChNS0RJUl9QKSAkKGJ1aWxkZGlyKS9kb2MKKyBpZiBIQVZFX0xET0MKKyAJJChMRE9DKSAtYyBidWlsZC1hdXgvY29uZmlnLmxkIC1kICQoYWJzX3NyY2RpcikvZG9jIC4KKyBlbHNlCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhcG9zaXgvbHVhcG9zaXhfMzMuNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YXBvc2l4L2x1YXBvc2l4XzMzLjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmVlOWZlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YXBvc2l4L2x1YXBvc2l4XzMzLjQuMC5iYgpAQCAtMCwwICsxLDIxIEBACitERVNDUklQVElPTiA9ICJsdWFwb3NpeCBpcyBhIFBPU0lYIGJpbmRpbmcgZm9yIEx1YS4iCitMSUNFTlNFID0gIk1JVCIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9sdWFwb3NpeC9sdWFwb3NpeCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdkZDJhYWQwNGJiN2NhMjEyZTY5MTI3YmE4ZDU4ZjlmIgorCitERVBFTkRTICs9ICJsdWEtbmF0aXZlIGx1YSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2x1YXBvc2l4L2x1YXBvc2l4LmdpdDticmFuY2g9cmVsZWFzZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1hdm9pZC1yYWNlLWNvbmRpdGlvbi1iZXR3ZWVuLXRlc3QtYW5kLW1rZGlyLnBhdGNoIFwKKyIKK1NSQ1JFViA9ICI4ZTQ5MDJlZDgxYzkyMmVkOGY3NmE3ZWQ4NWJlMWVhYTNmZDdlNjZkIgorUyA9ICIke1dPUktESVJ9L2dpdCIKK0xVQV9WRVJTSU9OID0gIjUuMyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyAnbHVhZGlyPSR7ZGF0YWRpcn0vbHVhLyR7TFVBX1ZFUlNJT059JyAnbHVhZXhlY2Rpcj0ke2xpYmRpcn0vbHVhLyR7TFVBX1ZFUlNJT059JyBpbnN0YWxsCit9CisKK0ZJTEVTXyR7UE59ID0gIiR7ZGF0YWRpcn0vbHVhLyR7TFVBX1ZFUlNJT059ICR7bGliZGlyfS9sdWEvJHtMVUFfVkVSU0lPTn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbmFub3BiL25hbm9wYl8wLjQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9uYW5vcGIvbmFub3BiXzAuNC4wLmJiCmluZGV4IGFlZGQ1M2EuLjIxZDExMGEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9uYW5vcGIvbmFub3BiXzAuNC4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9uYW5vcGIvbmFub3BiXzAuNC4wLmJiCkBAIC05LDcgKzksNyBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGNtYWtlIHB5dGhvbm5hdGl2ZQoraW5oZXJpdCBjbWFrZSBweXRob24zbmF0aXZlCiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogICAgIGluc3RhbGwgLURtIDA3NTUgJHtTfS9nZW5lcmF0b3IvbmFub3BiX2dlbmVyYXRvci5weSAke0R9JHtiaW5kaXJ9L25hbm9wYl9nZW5lcmF0b3IucHkKQEAgLTI2LDMgKzI2LDUgQEAKICIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitQTkJMQUNLTElTVFtuYW5vcGJdID0gIk5lZWRzIGZvcndhcmQgcG9ydGluZyB0byB1c2UgcHl0aG9uMyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ubG9obWFubi1maWZvL25sb2htYW5uLWZpZm9fZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25sb2htYW5uLWZpZm8vbmxvaG1hbm4tZmlmb19naXQuYmIKaW5kZXggMzI2YTRhYi4uYTk3ZWI1MyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25sb2htYW5uLWZpZm8vbmxvaG1hbm4tZmlmb19naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25sb2htYW5uLWZpZm8vbmxvaG1hbm4tZmlmb19naXQuYmIKQEAgLTEwLDYgKzEwLDggQEAKIAogU1JDUkVWID0gIjBkZmJmNWRhY2JiMTVhMzJjNDNmOTEyYTdlNjZhNTRhYWUzOWQwZjkiCiAKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKKwogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogIyBubG9obWFubi1maWZvIGlzIGEgaGVhZGVyIG9ubHkgQysrIGxpYnJhcnksIHNvIHRoZSBtYWluIHBhY2thZ2Ugd2lsbCBiZSBlbXB0eS4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzLzAwMDEtRGlzYWJsZS1ydW5uaW5nLWd5cC1maWxlcy1mb3ItYnVuZGxlZC1kZXBzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMS1EaXNhYmxlLXJ1bm5pbmctZ3lwLWZpbGVzLWZvci1idW5kbGVkLWRlcHMucGF0Y2gKaW5kZXggNWQwZGMwMy4uNGRkMTIxZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMS1EaXNhYmxlLXJ1bm5pbmctZ3lwLWZpbGVzLWZvci1idW5kbGVkLWRlcHMucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMS1EaXNhYmxlLXJ1bm5pbmctZ3lwLWZpbGVzLWZvci1idW5kbGVkLWRlcHMucGF0Y2gKQEAgLTQsMjMgKzQsMjIgQEAKIFN1YmplY3Q6IFtQQVRDSF0gRGlzYWJsZSBydW5uaW5nIGd5cCBvbiBzaGFyZWQgZGVwcwogCiAtLS0KLSBNYWtlZmlsZSB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgTWFrZWZpbGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCBhOTg3NzJmLi5mNTY2M2UyIDEwMDY0NAoraW5kZXggMDk0NzMwMGYyNC4uNmM5ODY5MTk4NCAxMDA2NDQKIC0tLSBhL01ha2VmaWxlCiArKysgYi9NYWtlZmlsZQotQEAgLTEyMyw4ICsxMjMsOCBAQCB3aXRoLWNvZGUtY2FjaGU6Ci0gdGVzdC1jb2RlLWNhY2hlOiB3aXRoLWNvZGUtY2FjaGUKLSAJJChQWVRIT04pIHRvb2xzL3Rlc3QucHkgJChQQVJBTExFTF9BUkdTKSAtLW1vZGU9JChCVUlMRFRZUEVfTE9XRVIpIGNvZGUtY2FjaGUKK0BAIC0xNDEsNyArMTQxLDcgQEAgdGVzdC1jb2RlLWNhY2hlOiB3aXRoLWNvZGUtY2FjaGUKKyAJZWNobyAiJ3Rlc3QtY29kZS1jYWNoZScgdGFyZ2V0IGlzIGEgbm9vcCIKICAKLS1vdXQvTWFrZWZpbGU6IGNvbW1vbi5neXBpIGRlcHMvdXYvdXYuZ3lwIGRlcHMvaHR0cF9wYXJzZXIvaHR0cF9wYXJzZXIuZ3lwIFwKLS0gICAgICAgICAgICAgIGRlcHMvemxpYi96bGliLmd5cCBkZXBzL3Y4L2d5cGZpbGVzL3Rvb2xjaGFpbi5neXBpIFwKLStvdXQvTWFrZWZpbGU6IGNvbW1vbi5neXBpIGRlcHMvaHR0cF9wYXJzZXIvaHR0cF9wYXJzZXIuZ3lwIFwKLSsgICAgICAgICAgICAgIGRlcHMvdjgvZ3lwZmlsZXMvdG9vbGNoYWluLmd5cGkgXAotICAgICAgICAgICAgICAgZGVwcy92OC9neXBmaWxlcy9mZWF0dXJlcy5neXBpIGRlcHMvdjgvZ3lwZmlsZXMvdjguZ3lwIG5vZGUuZ3lwIFwKLSAgICAgICAgICAgICAgIGNvbmZpZy5neXBpCisgb3V0L01ha2VmaWxlOiBjb25maWcuZ3lwaSBjb21tb24uZ3lwaSBub2RlLmd5cCBcCistCWRlcHMvdXYvdXYuZ3lwIGRlcHMvaHR0cF9wYXJzZXIvaHR0cF9wYXJzZXIuZ3lwIGRlcHMvemxpYi96bGliLmd5cCBcCisrCWRlcHMvaHR0cF9wYXJzZXIvaHR0cF9wYXJzZXIuZ3lwIFwKKyAJdG9vbHMvdjhfZ3lwZmlsZXMvdG9vbGNoYWluLmd5cGkgdG9vbHMvdjhfZ3lwZmlsZXMvZmVhdHVyZXMuZ3lwaSBcCisgCXRvb2xzL3Y4X2d5cGZpbGVzL2luc3BlY3Rvci5neXBpIHRvb2xzL3Y4X2d5cGZpbGVzL3Y4Lmd5cAogIAkkKFBZVEhPTikgdG9vbHMvZ3lwX25vZGUucHkgLWYgbWFrZQogLS0gCi0yLjE5LjIKKzIuMjAuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqcy8wMDAxLWJ1aWxkLWFsbG93LXBhc3NpbmctbXVsdGlwbGUtbGlicy10by1wa2dfY29uZmlnLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMS1idWlsZC1hbGxvdy1wYXNzaW5nLW11bHRpcGxlLWxpYnMtdG8tcGtnX2NvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2VkZjIyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMS1idWlsZC1hbGxvdy1wYXNzaW5nLW11bHRpcGxlLWxpYnMtdG8tcGtnX2NvbmZpZy5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIGZkYWEwZTNiZWY5M2M1YzcyYTcyNThiNWYxZTMwNzE4ZTdkODFmOWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8Z2l0QGFuZHJlZC5uZXQ+CitEYXRlOiBNb24sIDIgTWFyIDIwMjAgMTI6MTc6MDkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIGJ1aWxkOiBhbGxvdyBwYXNzaW5nIG11bHRpcGxlIGxpYnMgdG8gcGtnX2NvbmZpZworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitTb21ldGltZXMgaXQncyBuZWNlc3NhcnkgdG8gcGFzcyBtdWx0aXBsZSBsaWJyYXJ5IG5hbWVzIHRvIHBrZy1jb25maWcsCitlLmcuIHRoZSBicm90bGkgc2hhcmVkIGxpYnJhcmllcyBjYW4gYmUgcHVsbGVkIGluIHdpdGgKKyAgICBwa2ctY29uZmlnIGxpYmJyb3RsaWVuYyBsaWJicm90bGlkZWMKKworVXBkYXRlIHRoZSBjb2RlIHRvIGhhbmRsZSBib3RoLCBzdHJpbmdzIChhcyB1c2VkIHNvIGZhciksIGFuZCBsaXN0cworb2Ygc3RyaW5ncy4KKworU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGdpdEBhbmRyZWQubmV0PgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL3B1bGwvMzIwNDZdCisgY29uZmlndXJlLnB5IHwgNiArKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUucHkgYi9jb25maWd1cmUucHkKK2luZGV4IGJlYjA4ZGYwODguLmUzZjc4ZjJmZWQgMTAwNzU1CistLS0gYS9jb25maWd1cmUucHkKKysrKyBiL2NvbmZpZ3VyZS5weQorQEAgLTY4MCw3ICs2ODAsMTEgQEAgZGVmIHBrZ19jb25maWcocGtnKToKKyAgIHJldHZhbCA9ICgpCisgICBmb3IgZmxhZyBpbiBbJy0tbGlicy1vbmx5LWwnLCAnLS1jZmxhZ3Mtb25seS1JJywKKyAgICAgICAgICAgICAgICAnLS1saWJzLW9ubHktTCcsICctLW1vZHZlcnNpb24nXToKKy0gICAgYXJncyArPSBbZmxhZywgcGtnXQorKyAgICBhcmdzICs9IFtmbGFnXQorKyAgICBpZiBpc2luc3RhbmNlKHBrZywgbGlzdCk6CisrICAgICAgYXJncyArPSBwa2cKKysgICAgZWxzZToKKysgICAgICBhcmdzICs9IFtwa2ddCisgICAgIHRyeToKKyAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbihzaGxleC5zcGxpdChwa2dfY29uZmlnKSArIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKy0tIAorMi4yNS4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzLzAwMDItVXNpbmctbmF0aXZlLWJpbmFyaWVzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMi1Vc2luZy1uYXRpdmUtYmluYXJpZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjUxNDJkYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzLzAwMDItVXNpbmctbmF0aXZlLWJpbmFyaWVzLnBhdGNoCkBAIC0wLDAgKzEsNzEgQEAKK0Zyb20gNmMzYWMyMDQ3N2E0YmFjNjQzMDg4ZjI0ZGYzYzA0MmU2MjdmYWZhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEd1aWxsYXVtZSBCdXJlbCA8Z3VpbGxhdW1lLmJ1cmVsQHN0b3Jtc2hpZWxkLmV1PgorRGF0ZTogRnJpLCAzIEphbiAyMDIwIDExOjI1OjU0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzaW5nIG5hdGl2ZSBiaW5hcmllcworCistLS0KKyBub2RlLmd5cCAgICAgICAgICAgICAgICAgfCAgNCArKy0tCisgdG9vbHMvdjhfZ3lwZmlsZXMvdjguZ3lwIHwgMTEgKysrKy0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL25vZGUuZ3lwIGIvbm9kZS5neXAKK2luZGV4IDhmNGRjNTE4Li5kOTM4OTE5MCAxMDA2NDQKKy0tLSBhL25vZGUuZ3lwCisrKysgYi9ub2RlLmd5cAorQEAgLTQ0Niw3ICs0NDYsNyBAQAorICAgICAgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvbm9kZV9jb2RlX2NhY2hlLmNjJywKKyAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAnYWN0aW9uJzogWworLSAgICAgICAgICAgICAgICAnPEAoX2lucHV0cyknLAorKyAgICAgICAgICAgICAgICAnbWtjb2RlY2FjaGUnLAorICAgICAgICAgICAgICAgICAnPEAoX291dHB1dHMpJywKKyAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgfSwKK0BAIC00NzEsNyArNDcxLDcgQEAKKyAgICAgICAgICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL25vZGVfc25hcHNob3QuY2MnLAorICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICdhY3Rpb24nOiBbCistICAgICAgICAgICAgICAgICc8QChfaW5wdXRzKScsCisrICAgICAgICAgICAgICAgICdub2RlX21rc25hcHNob3QnLAorICAgICAgICAgICAgICAgICAnPEAoX291dHB1dHMpJywKKyAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgfSwKK2RpZmYgLS1naXQgYS90b29scy92OF9neXBmaWxlcy92OC5neXAgYi90b29scy92OF9neXBmaWxlcy92OC5neXAKK2luZGV4IGE1MDZhNjdkLi5jOTFmN2RkZSAxMDA2NDQKKy0tLSBhL3Rvb2xzL3Y4X2d5cGZpbGVzL3Y4Lmd5cAorKysrIGIvdG9vbHMvdjhfZ3lwZmlsZXMvdjguZ3lwCitAQCAtMTQwLDcgKzE0MCw4IEBACisgICAgICAgICAgICAgJzxAKHRvcnF1ZV9vdXRwdXRzKScsCisgICAgICAgICAgIF0sCisgICAgICAgICAgICdhY3Rpb24nOiBbCistICAgICAgICAgICAgJzxAKF9pbnB1dHMpJywKKysgICAgICAgICAgICAndG9ycXVlJywKKysgICAgICAgICAgICAnPEAodG9ycXVlX2ZpbGVzKScsCisgICAgICAgICAgICAgJy1vJywgJzwodG9ycXVlX291dHB1dF9yb290KS90b3JxdWUtZ2VuZXJhdGVkJywKKyAgICAgICAgICAgICAnLXY4LXJvb3QnLCAnPChWOF9ST09UKScKKyAgICAgICAgICAgXSwKK0BAIC0yNDcsOSArMjQ4LDcgQEAKKyAgICAgICAgICAgICAnPChnZW5lcmF0ZV9ieXRlY29kZV9idWlsdGluc19saXN0X291dHB1dCknLAorICAgICAgICAgICBdLAorICAgICAgICAgICAnYWN0aW9uJzogWworLSAgICAgICAgICAgICdweXRob24nLAorLSAgICAgICAgICAgICc8KFY4X1JPT1QpL3Rvb2xzL3J1bi5weScsCistICAgICAgICAgICAgJzxAKF9pbnB1dHMpJywKKysgICAgICAgICAgICAnYnl0ZWNvZGVfYnVpbHRpbnNfbGlzdF9nZW5lcmF0b3InLAorICAgICAgICAgICAgICc8QChfb3V0cHV0cyknLAorICAgICAgICAgICBdLAorICAgICAgICAgfSwKK0BAIC0xMzk2LDkgKzEzOTUsNyBAQAorICAgICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS9zcmMvcmVnZXhwL3NwZWNpYWwtY2FzZS5jYycsCisgICAgICAgICAgIF0sCisgICAgICAgICAgICdhY3Rpb24nOiBbCistICAgICAgICAgICAgJ3B5dGhvbicsCistICAgICAgICAgICAgJzwoVjhfUk9PVCkvdG9vbHMvcnVuLnB5JywKKy0gICAgICAgICAgICAnPEAoX2lucHV0cyknLAorKyAgICAgICAgICAgICdnZW4tcmVnZXhwLXNwZWNpYWwtY2FzZScsCisgICAgICAgICAgICAgJzxAKF9vdXRwdXRzKScsCisgICAgICAgICAgIF0sCisgICAgICAgICB9LAorLS0gCisyLjIwLjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMi1Vc2luZy1uYXRpdmUtdG9ycXVlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMi1Vc2luZy1uYXRpdmUtdG9ycXVlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTAzNWY5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzLzAwMDItVXNpbmctbmF0aXZlLXRvcnF1ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gNGJiZWU1ZTNkNThiYzQ5MTE5OTlmM2VjMmNjNWFhYjhkZWQ2NzE3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJXaW5rZXIgTWF0dGhpYXMgKFRULUNBL0VORzEpIiA8TWF0dGhpYXMuV2lua2VyQGRlLmJvc2NoLmNvbT4KLURhdGU6IFR1ZSwgMTEgRGVjIDIwMTggMTA6NDQ6MjkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNpbmcgbmF0aXZlIHRvcnF1ZQotCi0tLS0KLSBkZXBzL3Y4L2d5cGZpbGVzL3Y4Lmd5cCB8IDYgKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2RlcHMvdjgvZ3lwZmlsZXMvdjguZ3lwIGIvZGVwcy92OC9neXBmaWxlcy92OC5neXAKLWluZGV4IDhjNzhmMDIyNTUuLjQzNDE2ODg0NGUgMTAwNjQ0Ci0tLS0gYS9kZXBzL3Y4L2d5cGZpbGVzL3Y4Lmd5cAotKysrIGIvZGVwcy92OC9neXBmaWxlcy92OC5neXAKLUBAIC0yODMxLDcgKzI4MzEsNiBAQAotICAgICAgICAgewotICAgICAgICAgICAnYWN0aW9uX25hbWUnOiAncnVuX3RvcnF1ZScsCi0gICAgICAgICAgICdpbnB1dHMnOiBbICAjIE9yZGVyIG1hdHRlcnMuCi0tICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpLzwoRVhFQ1VUQUJMRV9QUkVGSVgpdG9ycXVlPChFWEVDVVRBQkxFX1NVRkZJWCknLAotICAgICAgICAgICAgICcuLi9zcmMvYnVpbHRpbnMvYmFzZS50cScsCi0gICAgICAgICAgICAgJy4uL3NyYy9idWlsdGlucy9hcnJheS50cScsCi0gICAgICAgICAgICAgJy4uL3NyYy9idWlsdGlucy90eXBlZC1hcnJheS50cScsCi1AQCAtMjg0NSw3ICsyODQ0LDEwIEBACi0gICAgICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3RvcnF1ZS1nZW5lcmF0ZWQvYnVpbHRpbnMtdHlwZWQtYXJyYXktZnJvbS1kc2wtZ2VuLmNjJywKLSAgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvdG9ycXVlLWdlbmVyYXRlZC9idWlsdGlucy10eXBlZC1hcnJheS1mcm9tLWRzbC1nZW4uaCcsCi0gICAgICAgICAgIF0sCi0tICAgICAgICAgICdhY3Rpb24nOiBbJzxAKF9pbnB1dHMpJywgJy1vJywgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3RvcnF1ZS1nZW5lcmF0ZWQnXSwKLSsgICAgICAgICAgJ2FjdGlvbic6IFsKLSsgICAgICAgICAgICAndG9ycXVlJywKLSsgICAgICAgICAgICAnPEAoX2lucHV0cyknLAotKyAgICAgICAgICAgICctbycsICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS90b3JxdWUtZ2VuZXJhdGVkJ10sCi0gICAgICAgICB9LAotICAgICAgIF0sCi0gICAgIH0sICMgdG9ycXVlCi0tLSAKLTIuMTkuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqcy8wMDAyLWJ1aWxkLWFsbG93LXVzZS1vZi1zeXN0ZW0taW5zdGFsbGVkLWJyb3RsaS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzLzAwMDItYnVpbGQtYWxsb3ctdXNlLW9mLXN5c3RlbS1pbnN0YWxsZWQtYnJvdGxpLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMDM4ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqcy8wMDAyLWJ1aWxkLWFsbG93LXVzZS1vZi1zeXN0ZW0taW5zdGFsbGVkLWJyb3RsaS5wYXRjaApAQCAtMCwwICsxLDY2IEBACitGcm9tIGYwZjkyN2ZlZWU4Y2IxZmIxNzM4MzVkNWMzZjZiZWI2YmY3ZDVlNTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8Z2l0QGFuZHJlZC5uZXQ+CitEYXRlOiBNb24sIDIgTWFyIDIwMjAgMTI6MTc6MzUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIGJ1aWxkOiBhbGxvdyB1c2Ugb2Ygc3lzdGVtLWluc3RhbGxlZCBicm90bGkKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworYnJvdGxpIGlzIGF2YWlsYWJsZSBhcyBhIHNoYXJlZCBsaWJyYXJ5IHNpbmNlIDIwMTYsIHNvIGl0IG1ha2VzIHNlbnNlCit0byBhbGxvdyBpdHMgdXNlIGFzIGEgc3lzdGVtLWluc3RhbGxlZCB2ZXJzaW9uLgorCitTb21lIG9mIHRoZSBpbmZyYXN0cnVjdHVyZSB3YXMgaW4gcGxhY2UgYWxyZWFkeSAobm9kZS5neXAgYW5kCitub2RlLmd5cGkpLCBidXQgc29tZSBiaXRzIGluIHRoZSBjb25maWd1cmUgc2NyaXB0IGhlcmUgd2VyZSBtaXNzaW5nLgorCitBZGQgdGhlbSwga2VlcGluZyB0aGUgZGVmYXVsdCBhcyBiZWZvcmUsIHRvIHVzZSB0aGUgYnVuZGxlZCB2ZXJzaW9uLgorCitSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2Jyb3RsaS9wdWxsLzQyMQorU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGdpdEBhbmRyZWQubmV0PgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL3B1bGwvMzIwNDZdCisgY29uZmlndXJlLnB5IHwgMjIgKysrKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUucHkgYi9jb25maWd1cmUucHkKK2luZGV4IGUzZjc4ZjJmZWQuLjAxOTBlMzFiNDEgMTAwNzU1CistLS0gYS9jb25maWd1cmUucHkKKysrKyBiL2NvbmZpZ3VyZS5weQorQEAgLTMwMSw2ICszMDEsMjcgQEAgc2hhcmVkX29wdGdyb3VwLmFkZF9vcHRpb24oJy0tc2hhcmVkLXpsaWItbGlicGF0aCcsCisgICAgIGRlc3Q9J3NoYXJlZF96bGliX2xpYnBhdGgnLAorICAgICBoZWxwPSdhIGRpcmVjdG9yeSB0byBzZWFyY2ggZm9yIHRoZSBzaGFyZWQgemxpYiBETEwnKQorIAorK3NoYXJlZF9vcHRncm91cC5hZGRfb3B0aW9uKCctLXNoYXJlZC1icm90bGknLAorKyAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorKyAgICBkZXN0PSdzaGFyZWRfYnJvdGxpJywKKysgICAgaGVscD0nbGluayB0byBhIHNoYXJlZCBicm90bGkgRExMIGluc3RlYWQgb2Ygc3RhdGljIGxpbmtpbmcnKQorKworK3NoYXJlZF9vcHRncm91cC5hZGRfb3B0aW9uKCctLXNoYXJlZC1icm90bGktaW5jbHVkZXMnLAorKyAgICBhY3Rpb249J3N0b3JlJywKKysgICAgZGVzdD0nc2hhcmVkX2Jyb3RsaV9pbmNsdWRlcycsCisrICAgIGhlbHA9J2RpcmVjdG9yeSBjb250YWluaW5nIGJyb3RsaSBoZWFkZXIgZmlsZXMnKQorKworK3NoYXJlZF9vcHRncm91cC5hZGRfb3B0aW9uKCctLXNoYXJlZC1icm90bGktbGlibmFtZScsCisrICAgIGFjdGlvbj0nc3RvcmUnLAorKyAgICBkZXN0PSdzaGFyZWRfYnJvdGxpX2xpYm5hbWUnLAorKyAgICBkZWZhdWx0PSdicm90bGlkZWMsYnJvdGxpZW5jJywKKysgICAgaGVscD0nYWx0ZXJuYXRpdmUgbGliIG5hbWUgdG8gbGluayB0byBbZGVmYXVsdDogJWRlZmF1bHRdJykKKysKKytzaGFyZWRfb3B0Z3JvdXAuYWRkX29wdGlvbignLS1zaGFyZWQtYnJvdGxpLWxpYnBhdGgnLAorKyAgICBhY3Rpb249J3N0b3JlJywKKysgICAgZGVzdD0nc2hhcmVkX2Jyb3RsaV9saWJwYXRoJywKKysgICAgaGVscD0nYSBkaXJlY3RvcnkgdG8gc2VhcmNoIGZvciB0aGUgc2hhcmVkIGJyb3RsaSBETEwnKQorKworIHNoYXJlZF9vcHRncm91cC5hZGRfb3B0aW9uKCctLXNoYXJlZC1jYXJlcycsCisgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgIGRlc3Q9J3NoYXJlZF9jYXJlcycsCitAQCAtMTY5Miw2ICsxNzEzLDcgQEAgY29uZmlndXJlX25hcGkob3V0cHV0KQorIGNvbmZpZ3VyZV9saWJyYXJ5KCd6bGliJywgb3V0cHV0KQorIGNvbmZpZ3VyZV9saWJyYXJ5KCdodHRwX3BhcnNlcicsIG91dHB1dCkKKyBjb25maWd1cmVfbGlicmFyeSgnbGlidXYnLCBvdXRwdXQpCisrY29uZmlndXJlX2xpYnJhcnkoJ2Jyb3RsaScsIG91dHB1dCwgcGtnbmFtZT1bJ2xpYmJyb3RsaWRlYycsICdsaWJicm90bGllbmMnXSkKKyBjb25maWd1cmVfbGlicmFyeSgnY2FyZXMnLCBvdXRwdXQsIHBrZ25hbWU9J2xpYmNhcmVzJykKKyBjb25maWd1cmVfbGlicmFyeSgnbmdodHRwMicsIG91dHB1dCwgcGtnbmFtZT0nbGlibmdodHRwMicpCisgY29uZmlndXJlX3Y4KG91dHB1dCkKKy0tIAorMi4yNS4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzLzAwMDMtSW5zdGFsbC1ib3RoLWJpbmFyaWVzLWFuZC11c2UtbGliZGlyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMy1JbnN0YWxsLWJvdGgtYmluYXJpZXMtYW5kLXVzZS1saWJkaXIucGF0Y2gKaW5kZXggN2FhNzBmZS4uNTk5Zjc0MiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMy1JbnN0YWxsLWJvdGgtYmluYXJpZXMtYW5kLXVzZS1saWJkaXIucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMy1JbnN0YWxsLWJvdGgtYmluYXJpZXMtYW5kLXVzZS1saWJkaXIucGF0Y2gKQEAgLTE1LDE3ICsxNSwxNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+Ci0KIC0tLQogIGNvbmZpZ3VyZS5weSAgICAgfCAgNyArKysrKysrCiAgdG9vbHMvaW5zdGFsbC5weSB8IDMxICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KICAyIGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLnB5IGIvY29uZmlndXJlLnB5Ci1pbmRleCBjZmQ0MjA3Li5lYjI2ZjdkIDEwMDc1NQoraW5kZXggMjBjY2UyMTRkYi4uZTJkNzhhMmE1MSAxMDA3NTUKIC0tLSBhL2NvbmZpZ3VyZS5weQogKysrIGIvY29uZmlndXJlLnB5Ci1AQCAtNTUyLDYgKzU1MiwxMiBAQCBwYXJzZXIuYWRkX29wdGlvbignLS1zaGFyZWQnLAorQEAgLTU1OSw2ICs1NTksMTIgQEAgcGFyc2VyLmFkZF9vcHRpb24oJy0tc2hhcmVkJywKICAgICAgaGVscD0nY29tcGlsZSBzaGFyZWQgbGlicmFyeSBmb3IgZW1iZWRkaW5nIG5vZGUgaW4gYW5vdGhlciBwcm9qZWN0LiAnICsKICAgICAgICAgICAnKFRoaXMgbW9kZSBpcyBub3Qgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgZm9yIHJlZ3VsYXIgYXBwbGljYXRpb25zKScpCiAgCkBAIC0zOCwxOSArMzcsMTkgQEAKICBwYXJzZXIuYWRkX29wdGlvbignLS13aXRob3V0LXY4LXBsYXRmb3JtJywKICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgZGVzdD0nd2l0aG91dF92OF9wbGF0Zm9ybScsCi1AQCAtMTA5NSw2ICsxMTAxLDcgQEAgZGVmIGNvbmZpZ3VyZV9ub2RlKG8pOgotICAgaWYgb3B0aW9ucy5jb2RlX2NhY2hlX3BhdGg6Ci0gICAgIG9bJ3ZhcmlhYmxlcyddWydub2RlX2NvZGVfY2FjaGVfcGF0aCddID0gb3B0aW9ucy5jb2RlX2NhY2hlX3BhdGgKK0BAIC0xMTAzLDYgKzExMDksNyBAQCBkZWYgY29uZmlndXJlX25vZGUobyk6CisgICBpZiBvWyd2YXJpYWJsZXMnXVsnd2FudF9zZXBhcmF0ZV9ob3N0X3Rvb2xzZXQnXSA9PSAwOgorICAgICBvWyd2YXJpYWJsZXMnXVsnbm9kZV9jb2RlX2NhY2hlJ10gPSAneWVzJyAjIEZvciB0ZXN0aW5nCiAgICBvWyd2YXJpYWJsZXMnXVsnbm9kZV9zaGFyZWQnXSA9IGIob3B0aW9ucy5zaGFyZWQpCiArICBvWyd2YXJpYWJsZXMnXVsnbGliZGlyJ10gPSBvcHRpb25zLmxpYmRpcgogICAgbm9kZV9tb2R1bGVfdmVyc2lvbiA9IGdldG1vZHVsZXZlcnNpb24uZ2V0X3ZlcnNpb24oKQogIAogICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgogZGlmZiAtLWdpdCBhL3Rvb2xzL2luc3RhbGwucHkgYi90b29scy9pbnN0YWxsLnB5Ci1pbmRleCAwMjhjMzJlLi5iZjQ0M2M0IDEwMDc1NQoraW5kZXggNjU1ODAyOTgwYS4uZmU0NzIzYmYxNSAxMDA3NTUKIC0tLSBhL3Rvb2xzL2luc3RhbGwucHkKICsrKyBiL3Rvb2xzL2luc3RhbGwucHkKLUBAIC0xMTcsMjYgKzExNywyMyBAQCBkZWYgc3ViZGlyX2ZpbGVzKHBhdGgsIGRlc3QsIGFjdGlvbik6CitAQCAtMTIxLDI2ICsxMjEsMjMgQEAgZGVmIHN1YmRpcl9maWxlcyhwYXRoLCBkZXN0LCBhY3Rpb24pOgogIAogIGRlZiBmaWxlcyhhY3Rpb24pOgogICAgaXNfd2luZG93cyA9IHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInCkBAIC05Miw1ICs5MSw1IEBACiAgICBpZiAndHJ1ZScgPT0gdmFyaWFibGVzLmdldCgnbm9kZV91c2VfZHRyYWNlJyk6CiAgICAgIGFjdGlvbihbJ291dC9SZWxlYXNlL25vZGUuZCddLCAnbGliL2R0cmFjZS9ub2RlLmQnKQogLS0gCi0yLjIzLjAKKzIuMjAuMQogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqcy8wMDA0LU1ha2UtY29tcGF0aWJpbGl0eS13aXRoLWdjYy00LjgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqcy8wMDA0LU1ha2UtY29tcGF0aWJpbGl0eS13aXRoLWdjYy00LjgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNWMwODUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwNC1NYWtlLWNvbXBhdGliaWxpdHktd2l0aC1nY2MtNC44LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotSW1wbGVtZW50IGZ1bmN0aW9uIGFzIHdyYXBwZXIgZm9yIHN0ZDo6bWFrZV91bmlxdWUKLW1ldGhvZCB0byBiZSBjb21wYXRpYmxlIHdpdGggZ2NjIDwgNC45IC4KLSJlcnJvcjo6bWFrZV91bmlxdWUgaXMgbm90IGEgbWVtYmVyIG9mICdzdGQnIgotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEJyYWQgQmlzaG9wIDxicmFkbGV5YkBmdXp6aWVzcXVpcnJlbC5jb20+Ci0KLWRpZmYgLU5hdXIgbm9kZS12MTAuMTUuMS9zcmMvY2FyZXNfd3JhcC5jYyBub2RlLXYxMC4xNS4xL3NyYy9jYXJlc193cmFwLmNjCi0tLS0gbm9kZS12MTAuMTUuMS9zcmMvY2FyZXNfd3JhcC5jYwkyMDE5LTAxLTI5IDA4OjIwOjUwLjAwMDAwMDAwMCArMDEwMAotKysrIG5vZGUtdjEwLjE1LjEvc3JjL2NhcmVzX3dyYXAuY2MJMjAxOS0wMi0yMSAxNjoyMjoyNS40ODkxMzE2NjUgKzAxMDAKLUBAIC01Miw2ICs1MiwxNiBAQAotICMgZGVmaW5lIEFJX1Y0TUFQUEVEIDAKLSAjZW5kaWYKLSAKLSsjaWZuZGVmIF9fY3BwX2xpYl9tYWtlX3VuaXF1ZQotK25hbWVzcGFjZSBzdGQgewotKyAgLy8vIG1ha2VfdW5pcXVlIGltcGxlbWVudGF0aW9uCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgotKyAgc3RkOjp1bmlxdWVfcHRyPFQ+IG1ha2VfdW5pcXVlKEFyZ3MmJi4uLiBhcmdzKSB7Ci0rICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8VD4obmV3IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7Ci0rICB9Ci0rfQotKyNlbmRpZgotKwotIG5hbWVzcGFjZSBub2RlIHsKLSBuYW1lc3BhY2UgY2FyZXNfd3JhcCB7Ci0gCi1kaWZmIC1OYXVyIG5vZGUtdjEwLjE1LjEvc3JjL2luc3BlY3Rvcl9hZ2VudC5jYyBub2RlLXYxMC4xNS4xL3NyYy9pbnNwZWN0b3JfYWdlbnQuY2MKLS0tLSBub2RlLXYxMC4xNS4xL3NyYy9pbnNwZWN0b3JfYWdlbnQuY2MJMjAxOS0wMS0yOSAwODoyMDo1MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBub2RlLXYxMC4xNS4xL3NyYy9pbnNwZWN0b3JfYWdlbnQuY2MJMjAxOS0wMi0yMSAxNjoyMjowOS4wMDAxODU5OTIgKzAxMDAKLUBAIC0yNCw2ICsyNCwxNiBAQAotICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0gI2VuZGlmICAvLyBfX1BPU0lYX18KLSAKLSsjaWZuZGVmIF9fY3BwX2xpYl9tYWtlX3VuaXF1ZQotK25hbWVzcGFjZSBzdGQgewotKyAgLy8vIG1ha2VfdW5pcXVlIGltcGxlbWVudGF0aW9uCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgotKyAgc3RkOjp1bmlxdWVfcHRyPFQ+IG1ha2VfdW5pcXVlKEFyZ3MmJi4uLiBhcmdzKSB7Ci0rICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8VD4obmV3IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7Ci0rICB9Ci0rfQotKyNlbmRpZgotKwotIG5hbWVzcGFjZSBub2RlIHsKLSBuYW1lc3BhY2UgaW5zcGVjdG9yIHsKLSBuYW1lc3BhY2UgewotCi1kaWZmIC0tZ2l0IGEvc3JjL2luc3BlY3Rvci9tYWluX3RocmVhZF9pbnRlcmZhY2UuY2MgYi9zcmMvaW5zcGVjdG9yL21haW5fdGhyZWFkX2ludGVyZmFjZS5jYwotaW5kZXggZTM3NGMwZmQ3MC4uMDVkN2Q4YzYwZiAxMDA2NDQKLS0tLSBhL3NyYy9pbnNwZWN0b3IvbWFpbl90aHJlYWRfaW50ZXJmYWNlLmNjCi0rKysgYi9zcmMvaW5zcGVjdG9yL21haW5fdGhyZWFkX2ludGVyZmFjZS5jYwotQEAgLTYsNiArNiwxNiBAQAotICNpbmNsdWRlIDxmdW5jdGlvbmFsPgotICNpbmNsdWRlIDx1bmljb2RlL3VuaXN0ci5oPgotCi0rI2lmbmRlZiBfX2NwcF9saWJfbWFrZV91bmlxdWUKLStuYW1lc3BhY2Ugc3RkIHsKLSsgIC8vLyBtYWtlX3VuaXF1ZSBpbXBsZW1lbnRhdGlvbgotKyAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLSsgIHN0ZDo6dW5pcXVlX3B0cjxUPiBtYWtlX3VuaXF1ZShBcmdzJiYuLi4gYXJncykgewotKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFQ+KG5ldyBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwotKyAgfQotK30KLSsjZW5kaWYKLSsKLSBuYW1lc3BhY2Ugbm9kZSB7Ci0gbmFtZXNwYWNlIGluc3BlY3RvciB7Ci0gbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzLzAwMDQtdjgtZG9uLXQtb3ZlcnJpZGUtQVJNLUNGTEFHUy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzLzAwMDQtdjgtZG9uLXQtb3ZlcnJpZGUtQVJNLUNGTEFHUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2VkOTcyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwNC12OC1kb24tdC1vdmVycmlkZS1BUk0tQ0ZMQUdTLnBhdGNoCkBAIC0wLDAgKzEsMTAyIEBACitGcm9tIDQ3ZWU1Y2M1NTAxMjg5MjA1ZDNlOGU5ZjI3ZWE5ZGFmMThjZWJhYzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8Z2l0QGFuZHJlZC5uZXQ+CitEYXRlOiBTYXQsIDkgTm92IDIwMTkgMTQ6NDU6MzAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gdjg6IGRvbid0IG92ZXJyaWRlIEFSTSBDRkxBR1MKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVGhpcyBvdmVycmlkZXMgeW9jdG8tcHJvdmlkZWQgYnVpbGQgZmxhZ3Mgd2l0aCBpdHMgb3duLCBlLmcgd2UgZ2V0CisgICAgYXJtLXBva3ktbGludXgtbXVzbGVhYmktZysrICAtbXRodW1iIC1tZnB1PW5lb24gLW1mbG9hdC1hYmk9aGFyZCAtbWNwdT1jb3J0ZXgtYTcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbWFyY2g9YXJtdjctYSAtbWZwdT1uZW9uIC1tZmxvYXQtYWJpPWhhcmQgLW1hcm0KKworQ2F1c2luZyB0aGUgbGF0dGVyIHRvIG92ZXJyaWRlIHRoZSBmb3JtZXIsIGFuZCBjb21waWxlciB3YXJuaW5nczoKKyAgICBjYzFwbHVzOiB3YXJuaW5nOiBzd2l0Y2ggJy1tY3B1PWNvcnRleC1hNycgY29uZmxpY3RzIHdpdGggJy1tYXJjaD1hcm12Ny1hJyBzd2l0Y2gKKworUGF0Y2ggdGhpcyBvdXQsIHNvIHRoYXQgeW9jdG8tcHJvdmlkZWQgZmxhZ3MgdGFrZSBwcmVjZWRlbmNlLgorTm90ZSB0aGF0IGluIHJlYWxpdHkgdGhlIHNhbWUgc2hvdWxkIHByb2JhYmx5IGJlIGRvbmUgZm9yIGFsbCB0aGUgb3RoZXIKK3N1cHBvcnRlZCBhcmNoaXRlY3R1cmVzLCB0b28uCisKK05vdGUgdGhhdCB0aGlzIGFsc28gc3dpdGNoZXMgdG8gVGh1bWIoMikgbW9kZSAoaW4gbXkgY2FzZSkuIE5vIG9idmlvdXMKK3Byb2JsZW1zIGhhdmUgYmVlbiBub3RlZCBkdXJpbmcgY29tcGlsYXRpb24gb3IgcnVudGltZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1zcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxnaXRAYW5kcmVkLm5ldD4KKy0tLQorIHRvb2xzL3Y4X2d5cGZpbGVzL3Rvb2xjaGFpbi5neXBpIHwgNTIgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA1MCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rvb2xzL3Y4X2d5cGZpbGVzL3Rvb2xjaGFpbi5neXBpIGIvdG9vbHMvdjhfZ3lwZmlsZXMvdG9vbGNoYWluLmd5cGkKK2luZGV4IDI2NGIzZTQ3OGUuLjBiNDE4NDgxNDUgMTAwNjQ0CistLS0gYS90b29scy92OF9neXBmaWxlcy90b29sY2hhaW4uZ3lwaQorKysrIGIvdG9vbHMvdjhfZ3lwZmlsZXMvdG9vbGNoYWluLmd5cGkKK0BAIC0yMTEsMzEgKzIxMSw3IEBACisgICAgICAgICAndGFyZ2V0X2NvbmRpdGlvbnMnOiBbCisgICAgICAgICAgIFsnX3Rvb2xzZXQ9PSJob3N0IicsIHsKKyAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKKy0gICAgICAgICAgICAgIFsndjhfdGFyZ2V0X2FyY2g9PWhvc3RfYXJjaCcsIHsKKy0gICAgICAgICAgICAgICAgIyBIb3N0IGJ1aWx0IHdpdGggYW4gQXJtIENYWCBjb21waWxlci4KKy0gICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCistICAgICAgICAgICAgICAgICAgWyAnYXJtX3ZlcnNpb249PTcnLCB7CistICAgICAgICAgICAgICAgICAgICAnY2ZsYWdzJzogWyctbWFyY2g9YXJtdjctYScsXSwKKy0gICAgICAgICAgICAgICAgICB9XSwKKy0gICAgICAgICAgICAgICAgICBbICdhcm1fdmVyc2lvbj09NyBvciBhcm1fdmVyc2lvbj09ImRlZmF1bHQiJywgeworLSAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCistICAgICAgICAgICAgICAgICAgICAgIFsgJ2FybV9mcHUhPSJkZWZhdWx0IicsIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAnY2ZsYWdzJzogWyctbWZwdT08KGFybV9mcHUpJyxdLAorLSAgICAgICAgICAgICAgICAgICAgICB9XSwKKy0gICAgICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICAgfV0sCistICAgICAgICAgICAgICAgICAgWyAnYXJtX2Zsb2F0X2FiaSE9ImRlZmF1bHQiJywgeworLSAgICAgICAgICAgICAgICAgICAgJ2NmbGFncyc6IFsnLW1mbG9hdC1hYmk9PChhcm1fZmxvYXRfYWJpKScsXSwKKy0gICAgICAgICAgICAgICAgICB9XSwKKy0gICAgICAgICAgICAgICAgICBbICdhcm1fdGh1bWI9PTEnLCB7CistICAgICAgICAgICAgICAgICAgICAnY2ZsYWdzJzogWyctbXRodW1iJyxdLAorLSAgICAgICAgICAgICAgICAgIH1dLAorLSAgICAgICAgICAgICAgICAgIFsgJ2FybV90aHVtYj09MCcsIHsKKy0gICAgICAgICAgICAgICAgICAgICdjZmxhZ3MnOiBbJy1tYXJtJyxdLAorLSAgICAgICAgICAgICAgICAgIH1dLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgfSwgeworLSAgICAgICAgICAgICAgICAjICd2OF90YXJnZXRfYXJjaCE9aG9zdF9hcmNoJworKyAgICAgICAgICAgICAgWyd2OF90YXJnZXRfYXJjaCE9aG9zdF9hcmNoJywgeworICAgICAgICAgICAgICAgICAjIEhvc3Qgbm90IGJ1aWx0IHdpdGggYW4gQXJtIENYWCBjb21waWxlciAoc2ltdWxhdG9yIGJ1aWxkKS4KKyAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCisgICAgICAgICAgICAgICAgICAgWyAnYXJtX2Zsb2F0X2FiaT09ImhhcmQiJywgeworQEAgLTI1NCwzMSArMjMwLDcgQEAKKyAgICAgICAgICAgfV0sICAjIF90b29sc2V0PT0iaG9zdCIKKyAgICAgICAgICAgWydfdG9vbHNldD09InRhcmdldCInLCB7CisgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCistICAgICAgICAgICAgICBbJ3Y4X3RhcmdldF9hcmNoPT10YXJnZXRfYXJjaCcsIHsKKy0gICAgICAgICAgICAgICAgIyBUYXJnZXQgYnVpbHQgd2l0aCBhbiBBcm0gQ1hYIGNvbXBpbGVyLgorLSAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKKy0gICAgICAgICAgICAgICAgICBbICdhcm1fdmVyc2lvbj09NycsIHsKKy0gICAgICAgICAgICAgICAgICAgICdjZmxhZ3MnOiBbJy1tYXJjaD1hcm12Ny1hJyxdLAorLSAgICAgICAgICAgICAgICAgIH1dLAorLSAgICAgICAgICAgICAgICAgIFsgJ2FybV92ZXJzaW9uPT03IG9yIGFybV92ZXJzaW9uPT0iZGVmYXVsdCInLCB7CistICAgICAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKKy0gICAgICAgICAgICAgICAgICAgICAgWyAnYXJtX2ZwdSE9ImRlZmF1bHQiJywgeworLSAgICAgICAgICAgICAgICAgICAgICAgICdjZmxhZ3MnOiBbJy1tZnB1PTwoYXJtX2ZwdSknLF0sCistICAgICAgICAgICAgICAgICAgICAgIH1dLAorLSAgICAgICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgICB9XSwKKy0gICAgICAgICAgICAgICAgICBbICdhcm1fZmxvYXRfYWJpIT0iZGVmYXVsdCInLCB7CistICAgICAgICAgICAgICAgICAgICAnY2ZsYWdzJzogWyctbWZsb2F0LWFiaT08KGFybV9mbG9hdF9hYmkpJyxdLAorLSAgICAgICAgICAgICAgICAgIH1dLAorLSAgICAgICAgICAgICAgICAgIFsgJ2FybV90aHVtYj09MScsIHsKKy0gICAgICAgICAgICAgICAgICAgICdjZmxhZ3MnOiBbJy1tdGh1bWInLF0sCistICAgICAgICAgICAgICAgICAgfV0sCistICAgICAgICAgICAgICAgICAgWyAnYXJtX3RodW1iPT0wJywgeworLSAgICAgICAgICAgICAgICAgICAgJ2NmbGFncyc6IFsnLW1hcm0nLF0sCistICAgICAgICAgICAgICAgICAgfV0sCistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICB9LCB7CistICAgICAgICAgICAgICAgICMgJ3Y4X3RhcmdldF9hcmNoIT10YXJnZXRfYXJjaCcKKysgICAgICAgICAgICAgIFsndjhfdGFyZ2V0X2FyY2ghPXRhcmdldF9hcmNoJywgeworICAgICAgICAgICAgICAgICAjIFRhcmdldCBub3QgYnVpbHQgd2l0aCBhbiBBcm0gQ1hYIGNvbXBpbGVyIChzaW11bGF0b3IgYnVpbGQpLgorICAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKKyAgICAgICAgICAgICAgICAgICBbICdhcm1fZmxvYXRfYWJpPT0iaGFyZCInLCB7CistLSAKKzIuMjAuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqcy8wMDA1LUxpbmstYXRvbWljLWxpYnJhcnkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqcy8wMDA1LUxpbmstYXRvbWljLWxpYnJhcnkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2ZmYxOGIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwNS1MaW5rLWF0b21pYy1saWJyYXJ5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotTGluayBhdG9taWMgbGlicmFyeSB0byBmaXggbWlzc2luZyB1bmRlZmluZWQgcmVmZXJyZW5jZXMKLWxpa2UgInVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fYXRvbWljX2ZldGNoX2FkZF84JyIKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+Ci0KLWRpZmYgLU5hdXIgbm9kZS12MTAuMTUuMS9kZXBzL3Y4L2d5cGZpbGVzL3Y4Lmd5cCBub2RlLXYxMC4xNS4xL2RlcHMvdjgvZ3lwZmlsZXMvdjguZ3lwCi0tLS0gbm9kZS12MTAuMTUuMS9kZXBzL3Y4L2d5cGZpbGVzL3Y4Lmd5cAkyMDE5LTAyLTEzIDA5OjAyOjIxLjAwMDAwMDAwMCArMDEwMAotKysrIG5vZGUtdjEwLjE1LjEvZGVwcy92OC9neXBmaWxlcy92OC5neXAJMjAxOS0wMi0xNSAyMToyNzoxMS43NTU2Nzk2NjAgKzAxMDAKLUBAIC00NTIsNiArNDUyLDExIEBACi0gICAgICAgICAnPChERVBUSCknLAotICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpJwotICAgICAgIF0sCi0rICAgICAgJ2xpbmtfc2V0dGluZ3MnOiB7Ci0rICAgICAgICAnbGlicmFyaWVzJzogWwotKyAgICAgICAgICAnLWxhdG9taWMnCi0rICAgICAgICBdLAotKyAgICAgIH0sCi0gICAgICAgJ3NvdXJjZXMnOiBbCi0gICAgICAgICAnPEAoaW5zcGVjdG9yX2FsbF9zb3VyY2VzKScsCi0gICAgICAgICAnLi4vaW5jbHVkZS8vdjgtaW5zcGVjdG9yLXByb3RvY29sLmgnLApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwNy12OC1kb24tdC1vdmVycmlkZS1BUk0tQ0ZMQUdTLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwNy12OC1kb24tdC1vdmVycmlkZS1BUk0tQ0ZMQUdTLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjJjYmZiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzLzAwMDctdjgtZG9uLXQtb3ZlcnJpZGUtQVJNLUNGTEFHUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi1Gcm9tIDQ3ZWU1Y2M1NTAxMjg5MjA1ZDNlOGU5ZjI3ZWE5ZGFmMThjZWJhYzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8Z2l0QGFuZHJlZC5uZXQ+Ci1EYXRlOiBTYXQsIDkgTm92IDIwMTkgMTQ6NDU6MzAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gdjg6IGRvbid0IG92ZXJyaWRlIEFSTSBDRkxBR1MKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotVGhpcyBvdmVycmlkZXMgeW9jdG8tcHJvdmlkZWQgYnVpbGQgZmxhZ3Mgd2l0aCBpdHMgb3duLCBlLmcgd2UgZ2V0Ci0gICAgYXJtLXBva3ktbGludXgtbXVzbGVhYmktZysrICAtbXRodW1iIC1tZnB1PW5lb24gLW1mbG9hdC1hYmk9aGFyZCAtbWNwdT1jb3J0ZXgtYTcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbWFyY2g9YXJtdjctYSAtbWZwdT1uZW9uIC1tZmxvYXQtYWJpPWhhcmQgLW1hcm0KLQotQ2F1c2luZyB0aGUgbGF0dGVyIHRvIG92ZXJyaWRlIHRoZSBmb3JtZXIsIGFuZCBjb21waWxlciB3YXJuaW5nczoKLSAgICBjYzFwbHVzOiB3YXJuaW5nOiBzd2l0Y2ggJy1tY3B1PWNvcnRleC1hNycgY29uZmxpY3RzIHdpdGggJy1tYXJjaD1hcm12Ny1hJyBzd2l0Y2gKLQotUGF0Y2ggdGhpcyBvdXQsIHNvIHRoYXQgeW9jdG8tcHJvdmlkZWQgZmxhZ3MgdGFrZSBwcmVjZWRlbmNlLgotTm90ZSB0aGF0IGluIHJlYWxpdHkgdGhlIHNhbWUgc2hvdWxkIHByb2JhYmx5IGJlIGRvbmUgZm9yIGFsbCB0aGUgb3RoZXIKLXN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzLCB0b28uCi0KLU5vdGUgdGhhdCB0aGlzIGFsc28gc3dpdGNoZXMgdG8gVGh1bWIoMikgbW9kZSAoaW4gbXkgY2FzZSkuIE5vIG9idmlvdXMKLXByb2JsZW1zIGhhdmUgYmVlbiBub3RlZCBkdXJpbmcgY29tcGlsYXRpb24gb3IgcnVudGltZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1zcGVjaWZpY10KLVNpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxnaXRAYW5kcmVkLm5ldD4KLS0tLQotIGRlcHMvdjgvZ3lwZmlsZXMvdG9vbGNoYWluLmd5cGkgfCA1MiArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA1MCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2RlcHMvdjgvZ3lwZmlsZXMvdG9vbGNoYWluLmd5cGkgYi9kZXBzL3Y4L2d5cGZpbGVzL3Rvb2xjaGFpbi5neXBpCi1pbmRleCA5MTBhMjEyLi4xMzkwYjE1IDEwMDY0NAotLS0tIGEvZGVwcy92OC9neXBmaWxlcy90b29sY2hhaW4uZ3lwaQotKysrIGIvZGVwcy92OC9neXBmaWxlcy90b29sY2hhaW4uZ3lwaQotQEAgLTE5OSwzMSArMTk5LDcgQEAKLSAgICAgICAgICd0YXJnZXRfY29uZGl0aW9ucyc6IFsKLSAgICAgICAgICAgWydfdG9vbHNldD09Imhvc3QiJywgewotICAgICAgICAgICAgICdjb25kaXRpb25zJzogWwotLSAgICAgICAgICAgICAgWyd2OF90YXJnZXRfYXJjaD09aG9zdF9hcmNoJywgewotLSAgICAgICAgICAgICAgICAjIEhvc3QgYnVpbHQgd2l0aCBhbiBBcm0gQ1hYIGNvbXBpbGVyLgotLSAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKLS0gICAgICAgICAgICAgICAgICBbICdhcm1fdmVyc2lvbj09NycsIHsKLS0gICAgICAgICAgICAgICAgICAgICdjZmxhZ3MnOiBbJy1tYXJjaD1hcm12Ny1hJyxdLAotLSAgICAgICAgICAgICAgICAgIH1dLAotLSAgICAgICAgICAgICAgICAgIFsgJ2FybV92ZXJzaW9uPT03IG9yIGFybV92ZXJzaW9uPT0iZGVmYXVsdCInLCB7Ci0tICAgICAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKLS0gICAgICAgICAgICAgICAgICAgICAgWyAnYXJtX2ZwdSE9ImRlZmF1bHQiJywgewotLSAgICAgICAgICAgICAgICAgICAgICAgICdjZmxhZ3MnOiBbJy1tZnB1PTwoYXJtX2ZwdSknLF0sCi0tICAgICAgICAgICAgICAgICAgICAgIH1dLAotLSAgICAgICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgICB9XSwKLS0gICAgICAgICAgICAgICAgICBbICdhcm1fZmxvYXRfYWJpIT0iZGVmYXVsdCInLCB7Ci0tICAgICAgICAgICAgICAgICAgICAnY2ZsYWdzJzogWyctbWZsb2F0LWFiaT08KGFybV9mbG9hdF9hYmkpJyxdLAotLSAgICAgICAgICAgICAgICAgIH1dLAotLSAgICAgICAgICAgICAgICAgIFsgJ2FybV90aHVtYj09MScsIHsKLS0gICAgICAgICAgICAgICAgICAgICdjZmxhZ3MnOiBbJy1tdGh1bWInLF0sCi0tICAgICAgICAgICAgICAgICAgfV0sCi0tICAgICAgICAgICAgICAgICAgWyAnYXJtX3RodW1iPT0wJywgewotLSAgICAgICAgICAgICAgICAgICAgJ2NmbGFncyc6IFsnLW1hcm0nLF0sCi0tICAgICAgICAgICAgICAgICAgfV0sCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICB9LCB7Ci0tICAgICAgICAgICAgICAgICMgJ3Y4X3RhcmdldF9hcmNoIT1ob3N0X2FyY2gnCi0rICAgICAgICAgICAgICBbJ3Y4X3RhcmdldF9hcmNoIT1ob3N0X2FyY2gnLCB7Ci0gICAgICAgICAgICAgICAgICMgSG9zdCBub3QgYnVpbHQgd2l0aCBhbiBBcm0gQ1hYIGNvbXBpbGVyIChzaW11bGF0b3IgYnVpbGQpLgotICAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKLSAgICAgICAgICAgICAgICAgICBbICdhcm1fZmxvYXRfYWJpPT0iaGFyZCInLCB7Ci1AQCAtMjQyLDMxICsyMTgsNyBAQAotICAgICAgICAgICB9XSwgICMgX3Rvb2xzZXQ9PSJob3N0IgotICAgICAgICAgICBbJ190b29sc2V0PT0idGFyZ2V0IicsIHsKLSAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKLS0gICAgICAgICAgICAgIFsndjhfdGFyZ2V0X2FyY2g9PXRhcmdldF9hcmNoJywgewotLSAgICAgICAgICAgICAgICAjIFRhcmdldCBidWlsdCB3aXRoIGFuIEFybSBDWFggY29tcGlsZXIuCi0tICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzogWwotLSAgICAgICAgICAgICAgICAgIFsgJ2FybV92ZXJzaW9uPT03JywgewotLSAgICAgICAgICAgICAgICAgICAgJ2NmbGFncyc6IFsnLW1hcmNoPWFybXY3LWEnLF0sCi0tICAgICAgICAgICAgICAgICAgfV0sCi0tICAgICAgICAgICAgICAgICAgWyAnYXJtX3ZlcnNpb249PTcgb3IgYXJtX3ZlcnNpb249PSJkZWZhdWx0IicsIHsKLS0gICAgICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzogWwotLSAgICAgICAgICAgICAgICAgICAgICBbICdhcm1fZnB1IT0iZGVmYXVsdCInLCB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgJ2NmbGFncyc6IFsnLW1mcHU9PChhcm1fZnB1KScsXSwKLS0gICAgICAgICAgICAgICAgICAgICAgfV0sCi0tICAgICAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICAgIH1dLAotLSAgICAgICAgICAgICAgICAgIFsgJ2FybV9mbG9hdF9hYmkhPSJkZWZhdWx0IicsIHsKLS0gICAgICAgICAgICAgICAgICAgICdjZmxhZ3MnOiBbJy1tZmxvYXQtYWJpPTwoYXJtX2Zsb2F0X2FiaSknLF0sCi0tICAgICAgICAgICAgICAgICAgfV0sCi0tICAgICAgICAgICAgICAgICAgWyAnYXJtX3RodW1iPT0xJywgewotLSAgICAgICAgICAgICAgICAgICAgJ2NmbGFncyc6IFsnLW10aHVtYicsXSwKLS0gICAgICAgICAgICAgICAgICB9XSwKLS0gICAgICAgICAgICAgICAgICBbICdhcm1fdGh1bWI9PTAnLCB7Ci0tICAgICAgICAgICAgICAgICAgICAnY2ZsYWdzJzogWyctbWFybScsXSwKLS0gICAgICAgICAgICAgICAgICB9XSwKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgIH0sIHsKLS0gICAgICAgICAgICAgICAgIyAndjhfdGFyZ2V0X2FyY2ghPXRhcmdldF9hcmNoJwotKyAgICAgICAgICAgICAgWyd2OF90YXJnZXRfYXJjaCE9dGFyZ2V0X2FyY2gnLCB7Ci0gICAgICAgICAgICAgICAgICMgVGFyZ2V0IG5vdCBidWlsdCB3aXRoIGFuIEFybSBDWFggY29tcGlsZXIgKHNpbXVsYXRvciBidWlsZCkuCi0gICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzogWwotICAgICAgICAgICAgICAgICAgIFsgJ2FybV9mbG9hdF9hYmk9PSJoYXJkIicsIHsKLS0tIAotMi4yMy4wLnJjMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqcy9iaWctZW5kaWFuLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvYmlnLWVuZGlhbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjkzODE4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvYmlnLWVuZGlhbi5wYXRjaApAQCAtMCwwICsxLDE4IEBACisKK2h0dHBzOi8vZ2l0aHViLmNvbS92OC92OC9jb21taXQvODc4Y2NiMzNiZDNjZjBlNmRjMDE4ZmY4ZDE1ODQzZjU4NWFjMDdiZQorCitkaWQgc29tZSBhdXRvbWF0ZWQgY2xlYW51cHMgYnV0IGl0IG1pc3NlZCBiaWctZW5kaWFuIGNvZGUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLSBhL2RlcHMvdjgvc3JjL3J1bnRpbWUvcnVudGltZS11dGlscy5oCisrKysgYi9kZXBzL3Y4L3NyYy9ydW50aW1lL3J1bnRpbWUtdXRpbHMuaAorQEAgLTEyNiw3ICsxMjYsNyBAQCBzdGF0aWMgaW5saW5lIE9iamVjdFBhaXIgTWFrZVBhaXIoT2JqZWN0CisgI2lmIGRlZmluZWQoVjhfVEFSR0VUX0xJVFRMRV9FTkRJQU4pCisgICByZXR1cm4geC5wdHIoKSB8IChzdGF0aWNfY2FzdDxPYmplY3RQYWlyPih5LnB0cigpKSA8PCAzMik7CisgI2VsaWYgZGVmaW5lZChWOF9UQVJHRVRfQklHX0VORElBTikKKy0gIHJldHVybiB5LT5wdHIoKSB8IChzdGF0aWNfY2FzdDxPYmplY3RQYWlyPih4LT5wdHIoKSkgPDwgMzIpOworKyAgcmV0dXJuIHkucHRyKCkgfCAoc3RhdGljX2Nhc3Q8T2JqZWN0UGFpcj4oeC5wdHIoKSkgPDwgMzIpOworICNlbHNlCisgI2Vycm9yIFVua25vd24gZW5kaWFubmVzcworICNlbmRpZgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvbWlwcy13YXJuaW5ncy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzL21pcHMtd2FybmluZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE3NzNmMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzL21pcHMtd2FybmluZ3MucGF0Y2gKQEAgLTAsMCArMSwxOSBAQAorQWRkIGV4cGxpY2l0IHN0YXRpYyBjYXN0IHRvIGZpeCBuYXJyb3dpbmcgd2FybmluZworCitGaXhlcworZGVwcy92OC9zcmMvY29kZWdlbi9taXBzL2Fzc2VtYmxlci1taXBzLmNjOjM1NTY6NDQ6IGVycm9yOiBub24tY29uc3RhbnQtZXhwcmVzc2lvbiBjYW5ub3QgYmUgbmFycm93ZWQgZnJvbSB0eXBlICdpbnQnIHRvICdzaXplX3QnIChha2EgJ3Vuc2lnbmVkIGludCcpIGluIGluaXRpYWxpemVyIGxpc3QgWy1XYysrMTEtbmFycm93aW5nXQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLSBhL2RlcHMvdjgvc3JjL2NvZGVnZW4vbWlwcy9hc3NlbWJsZXItbWlwcy5jYworKysrIGIvZGVwcy92OC9zcmMvY29kZWdlbi9taXBzL2Fzc2VtYmxlci1taXBzLmNjCitAQCAtMzU1Myw3ICszNTUzLDcgQEAgdm9pZCBBc3NlbWJsZXI6Okdyb3dCdWZmZXIoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbG9jX2luZm9fd3JpdGVyLmxhc3RfcGMoKSArIHBjX2RlbHRhKTsKKyAKKyAgIC8vIFJlbG9jYXRlIHJ1bnRpbWUgZW50cmllcy4KKy0gIFZlY3RvcjxieXRlPiBpbnN0cnVjdGlvbnN7YnVmZmVyX3N0YXJ0XywgcGNfb2Zmc2V0KCl9OworKyAgVmVjdG9yPGJ5dGU+IGluc3RydWN0aW9uc3tidWZmZXJfc3RhcnRfLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHBjX29mZnNldCgpKX07CisgICBWZWN0b3I8Y29uc3QgYnl0ZT4gcmVsb2NfaW5mb3tyZWxvY19pbmZvX3dyaXRlci5wb3MoKSwgcmVsb2Nfc2l6ZX07CisgICBmb3IgKFJlbG9jSXRlcmF0b3IgaXQoaW5zdHJ1Y3Rpb25zLCByZWxvY19pbmZvLCAwKTsgIWl0LmRvbmUoKTsgaXQubmV4dCgpKSB7CisgICAgIFJlbG9jSW5mbzo6TW9kZSBybW9kZSA9IGl0LnJpbmZvKCktPnJtb2RlKCk7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqc18xMC4xNy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanNfMTAuMTcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzFhNDc2My4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqc18xMC4xNy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLURFU0NSSVBUSU9OID0gIm5vZGVKUyBFdmVudGVkIEkvTyBmb3IgVjggSmF2YVNjcmlwdCIKLUhPTUVQQUdFID0gImh0dHA6Ly9ub2RlanMub3JnIgotTElDRU5TRSA9ICJNSVQgJiBCU0QgJiBBcnRpc3RpYy0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iZTk4MGViN2NjYWZlMjg3Y2I0MzgwNzZhNjVlODg4YyIKLQotREVQRU5EUyA9ICJvcGVuc3NsIgotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBub2RlanMtbmF0aXZlIgotCi1pbmhlcml0IHBrZ2NvbmZpZyBweXRob25uYXRpdmUKLQotQ09NUEFUSUJMRV9NQUNISU5FX2FybXY0ID0gIighLiphcm12NCkuKiIKLUNPTVBBVElCTEVfTUFDSElORV9hcm12NSA9ICIoIS4qYXJtdjUpLioiCi1DT01QQVRJQkxFX01BQ0hJTkVfbWlwczY0ID0gIighLiptaXBzNjQpLioiCi0KLUNPTVBBVElCTEVfSE9TVF9yaXNjdjY0ID0gIm51bGwiCi1DT01QQVRJQkxFX0hPU1RfcmlzY3YzMiA9ICJudWxsIgotCi1TUkNfVVJJID0gImh0dHA6Ly9ub2RlanMub3JnL2Rpc3QvdiR7UFZ9L25vZGUtdiR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtcnVubmluZy1neXAtZmlsZXMtZm9yLWJ1bmRsZWQtZGVwcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUluc3RhbGwtYm90aC1iaW5hcmllcy1hbmQtdXNlLWxpYmRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LU1ha2UtY29tcGF0aWJpbGl0eS13aXRoLWdjYy00LjgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy12OC1kb24tdC1vdmVycmlkZS1BUk0tQ0ZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLVVzaW5nLW5hdGl2ZS10b3JxdWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1MaW5rLWF0b21pYy1saWJyYXJ5LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDVhNTZkMGFiZjc2NGE5MWY2MjdmMDY5MGNkNGI5ZjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDEyNjY3ZDc2YmQ1MjczYzA3Y2I2OWMyMTU5OTgxMDlmZDViYjM1Yzg3NDY1NGY5M2U2YTAxMzJkNjY2YzU4ZSIKLQotUyA9ICIke1dPUktESVJ9L25vZGUtdiR7UFZ9IgotCi0jIHY4IGVycm9ycyBvdXQgaWYgeW91IGhhdmUgc2V0IENDQUNIRQotQ0NBQ0hFID0gIiIKLQotZGVmIG1hcF9ub2RlanNfYXJjaChhLCBkKToKLSAgICBpbXBvcnQgcmUKLQotICAgIGlmICAgcmUubWF0Y2goJ2kuODYkJywgYSk6IHJldHVybiAnaWEzMicKLSAgICBlbGlmIHJlLm1hdGNoKCd4ODZfNjQkJywgYSk6IHJldHVybiAneDY0JwotICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjQkJywgYSk6IHJldHVybiAnYXJtNjQnCi0gICAgZWxpZiByZS5tYXRjaCgnKHBvd2VycGM2NHxwcGM2NGxlKSQnLCBhKTogcmV0dXJuICdwcGM2NCcKLSAgICBlbGlmIHJlLm1hdGNoKCdwb3dlcnBjJCcsIGEpOiByZXR1cm4gJ3BwYycKLSAgICByZXR1cm4gYQotCi1BUkNIRkxBR1NfYXJtID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2NhbGxjb252ZW50aW9uLWhhcmQnLCAnLS13aXRoLWFybS1mbG9hdC1hYmk9aGFyZCcsICctLXdpdGgtYXJtLWZsb2F0LWFiaT1zb2Z0ZnAnLCBkKX0gXAotICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICduZW9uJywgJy0td2l0aC1hcm0tZnB1PW5lb24nLCBcCi0gICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3ZmcHYzZDE2JywgJy0td2l0aC1hcm0tZnB1PXZmcHYzLWQxNicsIFwKLSAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAndmZwdjMnLCAnLS13aXRoLWFybS1mcHU9dmZwdjMnLCBcCi0gICAgICAgICAgICAgICAgICAgICctLXdpdGgtYXJtLWZwdT12ZnAnLCBkKSwgZCksIGQpfSIKLUdZUF9ERUZJTkVTX2FwcGVuZF9taXBzZWwgPSAiIG1pcHNfYXJjaF92YXJpYW50PSdyMScgIgotQVJDSEZMQUdTID89ICIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJhcmVzIGljdSBsaWJ1diB6bGliIgotUEFDS0FHRUNPTkZJR1thcmVzXSA9ICItLXNoYXJlZC1jYXJlcywsYy1hcmVzIgotUEFDS0FHRUNPTkZJR1tneXBdID0gIiwsZ3lwLXB5Mi1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW2ljdV0gPSAiLS13aXRoLWludGw9c3lzdGVtLWljdSwtLXdpdGhvdXQtaW50bCxpY3UiCi1QQUNLQUdFQ09ORklHW2xpYnV2XSA9ICItLXNoYXJlZC1saWJ1diwsbGlidXYiCi1QQUNLQUdFQ09ORklHW25naHR0cDJdID0gIi0tc2hhcmVkLW5naHR0cDIsLG5naHR0cDIiCi1QQUNLQUdFQ09ORklHW3NoYXJlZF0gPSAiLS1zaGFyZWQiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0tc2hhcmVkLXpsaWIsLHpsaWIiCi0KLSMgV2UgZG9uJ3Qgd2FudCB0byBjcm9zcy1jb21waWxlIGR1cmluZyB0YXJnZXQgY29tcGlsZSwKLSMgYW5kIHdlIG5lZWQgdG8gdXNlIHRoZSByaWdodCBmbGFncyBkdXJpbmcgaG9zdCBjb21waWxlLAotIyB0b28uCi1FWFRSQV9PRU1BS0UgPSAiXAotICAgIENDLmhvc3Q9JyR7Q0N9JyBcCi0gICAgQ0ZMQUdTLmhvc3Q9JyR7Q1BQRkxBR1N9ICR7Q0ZMQUdTfScgXAotICAgIENYWC5ob3N0PScke0NYWH0nIFwKLSAgICBDWFhGTEFHUy5ob3N0PScke0NQUEZMQUdTfSAke0NYWEZMQUdTfScgXAotICAgIExERkxBR1MuaG9zdD0nJHtMREZMQUdTfScgXAotICAgIEFSLmhvc3Q9JyR7QVJ9JyBcCi0gICAgXAotICAgIGJ1aWxkZGlyX25hbWU9Li8gXAotIgotCi1weXRob24gZG9fdW5wYWNrKCkgewotICAgIGltcG9ydCBzaHV0aWwKLQotICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnYmFzZV9kb191bnBhY2snLCBkKQotCi0gICAgc2h1dGlsLnJtdHJlZShkLmdldFZhcignUycpICsgJy9kZXBzL29wZW5zc2wnLCBUcnVlKQotICAgIGlmICdhcmVzJyBpbiBkLmdldFZhcignUEFDS0FHRUNPTkZJRycpOgotICAgICAgICBzaHV0aWwucm10cmVlKGQuZ2V0VmFyKCdTJykgKyAnL2RlcHMvY2FyZXMnLCBUcnVlKQotICAgIGlmICdneXAnIGluIGQuZ2V0VmFyKCdQQUNLQUdFQ09ORklHJyk6Ci0gICAgICAgIHNodXRpbC5ybXRyZWUoZC5nZXRWYXIoJ1MnKSArICcvdG9vbHMvZ3lwJywgVHJ1ZSkKLSAgICBpZiAnbGlidXYnIGluIGQuZ2V0VmFyKCdQQUNLQUdFQ09ORklHJyk6Ci0gICAgICAgIHNodXRpbC5ybXRyZWUoZC5nZXRWYXIoJ1MnKSArICcvZGVwcy91dicsIFRydWUpCi0gICAgaWYgJ25naHR0cDInIGluIGQuZ2V0VmFyKCdQQUNLQUdFQ09ORklHJyk6Ci0gICAgICAgIHNodXRpbC5ybXRyZWUoZC5nZXRWYXIoJ1MnKSArICcvZGVwcy9uZ2h0dHAyJywgVHJ1ZSkKLSAgICBpZiAnemxpYicgaW4gZC5nZXRWYXIoJ1BBQ0tBR0VDT05GSUcnKToKLSAgICAgICAgc2h1dGlsLnJtdHJlZShkLmdldFZhcignUycpICsgJy9kZXBzL3psaWInLCBUcnVlKQotfQotCi0jIE5vZGUgaXMgd2F5IHRvbyBjb29sIHRvIHVzZSBwcm9wZXIgYXV0b3Rvb2xzLCBzbyB3ZSBpbnN0YWxsIHR3byB3cmFwcGVycyB0byBmb3JjZWZ1bGx5IGluamVjdCBwcm9wZXIgYXJjaCBjZmxhZ3MgdG8gd29ya2Fyb3VuZCBneXBpCi1kb19jb25maWd1cmUgKCkgewotICAgIGV4cG9ydCBMRD0iJHtDWFh9IgotICAgIEdZUF9ERUZJTkVTPSIke0dZUF9ERUZJTkVTfSIgZXhwb3J0IEdZUF9ERUZJTkVTCi0gICAgIyAkVEFSR0VUX0FSQ0ggc2V0dGluZ3MgZG9uJ3QgbWF0Y2ggLS1kZXN0LWNwdSBzZXR0aW5ncwotICAgLi9jb25maWd1cmUgLS1wcmVmaXg9JHtwcmVmaXh9IC0td2l0aG91dC1zbmFwc2hvdCAtLXNoYXJlZC1vcGVuc3NsIFwKLSAgICAgICAgICAgICAgIC0tZGVzdC1jcHU9IiR7QG1hcF9ub2RlanNfYXJjaChkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZCl9IiBcCi0gICAgICAgICAgICAgICAtLWRlc3Qtb3M9bGludXggXAotICAgICAgICAgICAgICAgLS1saWJkaXI9JHtEfSR7bGliZGlyfSBcCi0gICAgICAgICAgICAgICAke0FSQ0hGTEFHU30gXAotICAgICAgICAgICAgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfQotfQotCi1kb19jb21waWxlICgpIHsKLSAgICBleHBvcnQgTEQ9IiR7Q1hYfSIKLSAgICBvZV9ydW5tYWtlIEJVSUxEVFlQRT1SZWxlYXNlCi19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgICMgdXNlIG5vZGUgZnJvbSBQQVRIIGluc3RlYWQgb2YgYWJzb2x1dGUgcGF0aCB0byBzeXNyb290Ci0gICAgIyBub2RlLXYwLjEwLjI1L3Rvb2xzL2luc3RhbGwucHkgaXMgdXNpbmc6Ci0gICAgIyBzaGViYW5nID0gb3MucGF0aC5qb2luKG5vZGVfcHJlZml4LCAnYmluL25vZGUnKQotICAgICMgdXBkYXRlX3NoZWJhbmcobGlua19wYXRoLCBzaGViYW5nKQotICAgICMgYW5kIG5vZGVfcHJlZml4IGNhbiBiZSB2ZXJ5IGxvbmcgcGF0aCB0byBiaW5kaXIgaW4gbmF0aXZlIHN5c3Jvb3QgYW5kCi0gICAgIyB3aGVuIGl0IGV4Y2VlZHMgMTI4IGNoYXJhY3RlciBzaGViYW5nIGxpbWl0IGl0J3Mgc3RyaXBwZWQgdG8gaW5jb3JyZWN0IHBhdGgKLSAgICAjIGFuZCBucG0gZmFpbHMgdG8gZXhlY3V0ZSBsaWtlIGluIHRoaXMgY2FzZSB3aXRoIDEzMyBjaGFyYWN0ZXJzIHNob3cgaW4gbG9nLmRvX2luc3RhbGw6Ci0gICAgIyB1cGRhdGluZyBzaGViYW5nIG9mIC9ob21lL2plbmtpbnMvd29ya3NwYWNlL2J1aWxkLXdlYm9zLW5pZ2h0bHkvZGV2aWNlL3FlbXV4ODYvbGFiZWwvb3Blbi13ZWJvcy1idWlsZGVyL0JVSUxELXFlbXV4ODYvd29yay94ODZfNjQtbGludXgvbm9kZWpzLW5hdGl2ZS8wLjEwLjE1LXIwL2ltYWdlL2hvbWUvamVua2lucy93b3Jrc3BhY2UvYnVpbGQtd2Vib3MtbmlnaHRseS9kZXZpY2UvcWVtdXg4Ni9sYWJlbC9vcGVuLXdlYm9zLWJ1aWxkZXIvQlVJTEQtcWVtdXg4Ni9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2Jpbi9ucG0gdG8gL2hvbWUvamVua2lucy93b3Jrc3BhY2UvYnVpbGQtd2Vib3MtbmlnaHRseS9kZXZpY2UvcWVtdXg4Ni9sYWJlbC9vcGVuLXdlYm9zLWJ1aWxkZXIvQlVJTEQtcWVtdXg4Ni9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2Jpbi9ub2RlCi0gICAgIyAvdXNyL2Jpbi9ucG0gaXMgc3ltbGluayB0byAvdXNyL2xpYi9ub2RlX21vZHVsZXMvbnBtL2Jpbi9ucG0tY2xpLmpzCi0gICAgIyB1c2Ugc2VkIG9uIG5wbS1jbGkuanMgYmVjYXVzZSBvdGhlcndpc2Ugc3ltbGluayBpcyByZXBsYWNlZCB3aXRoIG5vcm1hbCBmaWxlIGFuZAotICAgICMgbnBtLWNsaS5qcyBjb250aW51ZXMgdG8gdXNlIG9sZCBzaGViYW5nCi0gICAgc2VkICIxc14uKl4jXCEvdXNyL2Jpbi9lbnYgbm9kZV5nIiAtaSAke0R9JHtleGVjX3ByZWZpeH0vbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMKLQotICAgICMgSW5zdGFsbCB0aGUgbmF0aXZlIHRvcnF1ZSB0byBwcm92aWRlIGl0IHdpdGhpbiBzeXNyb290IGZvciB0aGUgdGFyZ2V0IGNvbXBpbGF0aW9uCi0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vb3V0L1JlbGVhc2UvdG9ycXVlICR7RH0ke2JpbmRpcn0vdG9ycXVlCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICBzZWQgIjFzXi4qXiNcISR7YmluZGlyfS9lbnYgbm9kZV5nIiAtaSAke0R9JHtleGVjX3ByZWZpeH0vbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LW5wbSIKLUZJTEVTXyR7UE59LW5wbSA9ICIke2V4ZWNfcHJlZml4fS9saWIvbm9kZV9tb2R1bGVzICR7YmluZGlyfS9ucG0gJHtiaW5kaXJ9L25weCIKLVJERVBFTkRTXyR7UE59LW5wbSA9ICJiYXNoIHB5dGhvbi1jb3JlIHB5dGhvbi1zaGVsbCBweXRob24tZGF0ZXRpbWUgcHl0aG9uLXN1YnByb2Nlc3MgcHl0aG9uLXRleHR1dGlscyBcCi0gICAgcHl0aG9uLWNvbXBpbGVyIHB5dGhvbi1taXNjIHB5dGhvbi1tdWx0aXByb2Nlc3NpbmciCi0KLVBBQ0tBR0VTID0rICIke1BOfS1zeXN0ZW10YXAiCi1GSUxFU18ke1BOfS1zeXN0ZW10YXAgPSAiJHtkYXRhZGlyfS9zeXN0ZW10YXAiCi0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqc18xMi4xNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanNfMTIuMTQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDY4ZmIzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanNfMTIuMTQuMS5iYgpAQCAtMCwwICsxLDE2MyBAQAorREVTQ1JJUFRJT04gPSAibm9kZUpTIEV2ZW50ZWQgSS9PIGZvciBWOCBKYXZhU2NyaXB0IgorSE9NRVBBR0UgPSAiaHR0cDovL25vZGVqcy5vcmciCitMSUNFTlNFID0gIk1JVCAmIEJTRCAmIEFydGlzdGljLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWJlNGQ1MTA3YzY0ZGMzZDdjNTdlMzc5N2UxYTA2NzRiIgorCitERVBFTkRTID0gIm9wZW5zc2wiCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIG5vZGVqcy1uYXRpdmUiCisKK2luaGVyaXQgcGtnY29uZmlnIHB5dGhvbjNuYXRpdmUKKworQ09NUEFUSUJMRV9NQUNISU5FX2FybXY0ID0gIighLiphcm12NCkuKiIKK0NPTVBBVElCTEVfTUFDSElORV9hcm12NSA9ICIoIS4qYXJtdjUpLioiCitDT01QQVRJQkxFX01BQ0hJTkVfbWlwczY0ID0gIighLiptaXBzNjQpLioiCisKK0NPTVBBVElCTEVfSE9TVF9yaXNjdjY0ID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfcmlzY3YzMiA9ICJudWxsIgorCitTUkNfVVJJID0gImh0dHA6Ly9ub2RlanMub3JnL2Rpc3QvdiR7UFZ9L25vZGUtdiR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtcnVubmluZy1neXAtZmlsZXMtZm9yLWJ1bmRsZWQtZGVwcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUluc3RhbGwtYm90aC1iaW5hcmllcy1hbmQtdXNlLWxpYmRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXY4LWRvbi10LW92ZXJyaWRlLUFSTS1DRkxBR1MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYmlnLWVuZGlhbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLWFsbG93LXBhc3NpbmctbXVsdGlwbGUtbGlicy10by1wa2dfY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItYnVpbGQtYWxsb3ctdXNlLW9mLXN5c3RlbS1pbnN0YWxsZWQtYnJvdGxpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21pcHMtd2FybmluZ3MucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItVXNpbmctbmF0aXZlLWJpbmFyaWVzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMWM3OGE3NWY1Yzk1MzIxZjUzM2VjY2NjYTY5NWU4MTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODc3YjRiODQyMzE4YjBlMDliYzc1NGZhZjczNDNmMmYwOTdmMGZjNGY4OGFiOWFlNTdjZjk5NDRlODhlN2FkYiIKKworUyA9ICIke1dPUktESVJ9L25vZGUtdiR7UFZ9IgorCisjIHY4IGVycm9ycyBvdXQgaWYgeW91IGhhdmUgc2V0IENDQUNIRQorQ0NBQ0hFID0gIiIKKworZGVmIG1hcF9ub2RlanNfYXJjaChhLCBkKToKKyAgICBpbXBvcnQgcmUKKworICAgIGlmICAgcmUubWF0Y2goJ2kuODYkJywgYSk6IHJldHVybiAnaWEzMicKKyAgICBlbGlmIHJlLm1hdGNoKCd4ODZfNjQkJywgYSk6IHJldHVybiAneDY0JworICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjQkJywgYSk6IHJldHVybiAnYXJtNjQnCisgICAgZWxpZiByZS5tYXRjaCgnKHBvd2VycGM2NHxwcGM2NGxlKSQnLCBhKTogcmV0dXJuICdwcGM2NCcKKyAgICBlbGlmIHJlLm1hdGNoKCdwb3dlcnBjJCcsIGEpOiByZXR1cm4gJ3BwYycKKyAgICByZXR1cm4gYQorCitBUkNIRkxBR1NfYXJtID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2NhbGxjb252ZW50aW9uLWhhcmQnLCAnLS13aXRoLWFybS1mbG9hdC1hYmk9aGFyZCcsICctLXdpdGgtYXJtLWZsb2F0LWFiaT1zb2Z0ZnAnLCBkKX0gXAorICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICduZW9uJywgJy0td2l0aC1hcm0tZnB1PW5lb24nLCBcCisgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3ZmcHYzZDE2JywgJy0td2l0aC1hcm0tZnB1PXZmcHYzLWQxNicsIFwKKyAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAndmZwdjMnLCAnLS13aXRoLWFybS1mcHU9dmZwdjMnLCBcCisgICAgICAgICAgICAgICAgICAgICctLXdpdGgtYXJtLWZwdT12ZnAnLCBkKSwgZCksIGQpfSIKK0dZUF9ERUZJTkVTX2FwcGVuZF9taXBzZWwgPSAiIG1pcHNfYXJjaF92YXJpYW50PSdyMScgIgorQVJDSEZMQUdTID89ICIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJhcmVzIGJyb3RsaSBpY3UgbGlidXYgemxpYiIKK1BBQ0tBR0VDT05GSUdbYXJlc10gPSAiLS1zaGFyZWQtY2FyZXMsLGMtYXJlcyIKK1BBQ0tBR0VDT05GSUdbYnJvdGxpXSA9ICItLXNoYXJlZC1icm90bGksLGJyb3RsaSIKK1BBQ0tBR0VDT05GSUdbaWN1XSA9ICItLXdpdGgtaW50bD1zeXN0ZW0taWN1LC0td2l0aG91dC1pbnRsLGljdSIKK1BBQ0tBR0VDT05GSUdbbGlidXZdID0gIi0tc2hhcmVkLWxpYnV2LCxsaWJ1diIKK1BBQ0tBR0VDT05GSUdbbmdodHRwMl0gPSAiLS1zaGFyZWQtbmdodHRwMiwsbmdodHRwMiIKK1BBQ0tBR0VDT05GSUdbc2hhcmVkXSA9ICItLXNoYXJlZCIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS1zaGFyZWQtemxpYiwsemxpYiIKKworIyBXZSBkb24ndCB3YW50IHRvIGNyb3NzLWNvbXBpbGUgZHVyaW5nIHRhcmdldCBjb21waWxlLAorIyBhbmQgd2UgbmVlZCB0byB1c2UgdGhlIHJpZ2h0IGZsYWdzIGR1cmluZyBob3N0IGNvbXBpbGUsCisjIHRvby4KK0VYVFJBX09FTUFLRSA9ICJcCisgICAgQ0MuaG9zdD0nJHtDQ30nIFwKKyAgICBDRkxBR1MuaG9zdD0nJHtDUFBGTEFHU30gJHtDRkxBR1N9JyBcCisgICAgQ1hYLmhvc3Q9JyR7Q1hYfScgXAorICAgIENYWEZMQUdTLmhvc3Q9JyR7Q1BQRkxBR1N9ICR7Q1hYRkxBR1N9JyBcCisgICAgTERGTEFHUy5ob3N0PScke0xERkxBR1N9JyBcCisgICAgQVIuaG9zdD0nJHtBUn0nIFwKKyAgICBcCisgICAgYnVpbGRkaXJfbmFtZT0uLyBcCisiCisKK3B5dGhvbiBkb191bnBhY2soKSB7CisgICAgaW1wb3J0IHNodXRpbAorCisgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdiYXNlX2RvX3VucGFjaycsIGQpCisKKyAgICBzaHV0aWwucm10cmVlKGQuZ2V0VmFyKCdTJykgKyAnL2RlcHMvb3BlbnNzbCcsIFRydWUpCisgICAgaWYgJ2FyZXMnIGluIGQuZ2V0VmFyKCdQQUNLQUdFQ09ORklHJyk6CisgICAgICAgIHNodXRpbC5ybXRyZWUoZC5nZXRWYXIoJ1MnKSArICcvZGVwcy9jYXJlcycsIFRydWUpCisgICAgaWYgJ2Jyb3RsaScgaW4gZC5nZXRWYXIoJ1BBQ0tBR0VDT05GSUcnKToKKyAgICAgICAgc2h1dGlsLnJtdHJlZShkLmdldFZhcignUycpICsgJy9kZXBzL2Jyb3RsaScsIFRydWUpCisgICAgaWYgJ2xpYnV2JyBpbiBkLmdldFZhcignUEFDS0FHRUNPTkZJRycpOgorICAgICAgICBzaHV0aWwucm10cmVlKGQuZ2V0VmFyKCdTJykgKyAnL2RlcHMvdXYnLCBUcnVlKQorICAgIGlmICduZ2h0dHAyJyBpbiBkLmdldFZhcignUEFDS0FHRUNPTkZJRycpOgorICAgICAgICBzaHV0aWwucm10cmVlKGQuZ2V0VmFyKCdTJykgKyAnL2RlcHMvbmdodHRwMicsIFRydWUpCisgICAgaWYgJ3psaWInIGluIGQuZ2V0VmFyKCdQQUNLQUdFQ09ORklHJyk6CisgICAgICAgIHNodXRpbC5ybXRyZWUoZC5nZXRWYXIoJ1MnKSArICcvZGVwcy96bGliJywgVHJ1ZSkKK30KKworIyBOb2RlIGlzIHdheSB0b28gY29vbCB0byB1c2UgcHJvcGVyIGF1dG90b29scywgc28gd2UgaW5zdGFsbCB0d28gd3JhcHBlcnMgdG8gZm9yY2VmdWxseSBpbmplY3QgcHJvcGVyIGFyY2ggY2ZsYWdzIHRvIHdvcmthcm91bmQgZ3lwaQorZG9fY29uZmlndXJlICgpIHsKKyAgICBleHBvcnQgTEQ9IiR7Q1hYfSIKKyAgICBHWVBfREVGSU5FUz0iJHtHWVBfREVGSU5FU30iIGV4cG9ydCBHWVBfREVGSU5FUworICAgICMgJFRBUkdFVF9BUkNIIHNldHRpbmdzIGRvbid0IG1hdGNoIC0tZGVzdC1jcHUgc2V0dGluZ3MKKyAgICBweXRob24zIGNvbmZpZ3VyZS5weSAtLXByZWZpeD0ke3ByZWZpeH0gLS1jcm9zcy1jb21waWxpbmcgLS13aXRob3V0LXNuYXBzaG90IC0tc2hhcmVkLW9wZW5zc2wgXAorICAgICAgICAgICAgICAgLS13aXRob3V0LWR0cmFjZSBcCisgICAgICAgICAgICAgICAtLXdpdGhvdXQtZXR3IFwKKyAgICAgICAgICAgICAgIC0tZGVzdC1jcHU9IiR7QG1hcF9ub2RlanNfYXJjaChkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZCl9IiBcCisgICAgICAgICAgICAgICAtLWRlc3Qtb3M9bGludXggXAorICAgICAgICAgICAgICAgLS1saWJkaXI9JHtEfSR7bGliZGlyfSBcCisgICAgICAgICAgICAgICAke0FSQ0hGTEFHU30gXAorICAgICAgICAgICAgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfQorfQorCitkb19jb21waWxlICgpIHsKKyAgICBleHBvcnQgTEQ9IiR7Q1hYfSIKKyAgICBvZV9ydW5tYWtlIEJVSUxEVFlQRT1SZWxlYXNlCit9CisKK2RvX2luc3RhbGwgKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KKworICAgICMgd2Fzbid0IHVwZGF0ZWQgc2luY2UgMjAwOSBhbmQgaXMgdGhlIG9ubHkgdGhpbmcgcmVxdWlyaW5nIHB5dGhvbjIgaW4gcnVudGltZQorICAgICMgRVJST1I6IG5vZGVqcy0xMi4xNC4xLXIwIGRvX3BhY2thZ2VfcWE6IFFBIElzc3VlOiAvdXNyL2xpYi9ub2RlX21vZHVsZXMvbnBtL25vZGVfbW9kdWxlcy9ub2RlLWd5cC9neXAvc2FtcGxlcy9zYW1wbGVzIGNvbnRhaW5lZCBpbiBwYWNrYWdlIG5vZGVqcy1ucG0gcmVxdWlyZXMgL3Vzci9iaW4vcHl0aG9uLCBidXQgbm8gcHJvdmlkZXJzIGZvdW5kIGluIFJERVBFTkRTX25vZGVqcy1ucG0/IFtmaWxlLXJkZXBzXQorICAgIHJtIC1mICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvbm9kZS1neXAvZ3lwL3NhbXBsZXMvc2FtcGxlcworfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgIyB1c2Ugbm9kZSBmcm9tIFBBVEggaW5zdGVhZCBvZiBhYnNvbHV0ZSBwYXRoIHRvIHN5c3Jvb3QKKyAgICAjIG5vZGUtdjAuMTAuMjUvdG9vbHMvaW5zdGFsbC5weSBpcyB1c2luZzoKKyAgICAjIHNoZWJhbmcgPSBvcy5wYXRoLmpvaW4obm9kZV9wcmVmaXgsICdiaW4vbm9kZScpCisgICAgIyB1cGRhdGVfc2hlYmFuZyhsaW5rX3BhdGgsIHNoZWJhbmcpCisgICAgIyBhbmQgbm9kZV9wcmVmaXggY2FuIGJlIHZlcnkgbG9uZyBwYXRoIHRvIGJpbmRpciBpbiBuYXRpdmUgc3lzcm9vdCBhbmQKKyAgICAjIHdoZW4gaXQgZXhjZWVkcyAxMjggY2hhcmFjdGVyIHNoZWJhbmcgbGltaXQgaXQncyBzdHJpcHBlZCB0byBpbmNvcnJlY3QgcGF0aAorICAgICMgYW5kIG5wbSBmYWlscyB0byBleGVjdXRlIGxpa2UgaW4gdGhpcyBjYXNlIHdpdGggMTMzIGNoYXJhY3RlcnMgc2hvdyBpbiBsb2cuZG9faW5zdGFsbDoKKyAgICAjIHVwZGF0aW5nIHNoZWJhbmcgb2YgL2hvbWUvamVua2lucy93b3Jrc3BhY2UvYnVpbGQtd2Vib3MtbmlnaHRseS9kZXZpY2UvcWVtdXg4Ni9sYWJlbC9vcGVuLXdlYm9zLWJ1aWxkZXIvQlVJTEQtcWVtdXg4Ni93b3JrL3g4Nl82NC1saW51eC9ub2RlanMtbmF0aXZlLzAuMTAuMTUtcjAvaW1hZ2UvaG9tZS9qZW5raW5zL3dvcmtzcGFjZS9idWlsZC13ZWJvcy1uaWdodGx5L2RldmljZS9xZW11eDg2L2xhYmVsL29wZW4td2Vib3MtYnVpbGRlci9CVUlMRC1xZW11eDg2L3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvYmluL25wbSB0byAvaG9tZS9qZW5raW5zL3dvcmtzcGFjZS9idWlsZC13ZWJvcy1uaWdodGx5L2RldmljZS9xZW11eDg2L2xhYmVsL29wZW4td2Vib3MtYnVpbGRlci9CVUlMRC1xZW11eDg2L3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvYmluL25vZGUKKyAgICAjIC91c3IvYmluL25wbSBpcyBzeW1saW5rIHRvIC91c3IvbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMKKyAgICAjIHVzZSBzZWQgb24gbnBtLWNsaS5qcyBiZWNhdXNlIG90aGVyd2lzZSBzeW1saW5rIGlzIHJlcGxhY2VkIHdpdGggbm9ybWFsIGZpbGUgYW5kCisgICAgIyBucG0tY2xpLmpzIGNvbnRpbnVlcyB0byB1c2Ugb2xkIHNoZWJhbmcKKyAgICBzZWQgIjFzXi4qXiNcIS91c3IvYmluL2VudiBub2RlXmciIC1pICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcworCisgICAgIyBJbnN0YWxsIHRoZSBuYXRpdmUgYmluYXJpZXMgdG8gcHJvdmlkZSBpdCB3aXRoaW4gc3lzcm9vdCBmb3IgdGhlIHRhcmdldCBjb21waWxhdGlvbgorICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L291dC9SZWxlYXNlL3RvcnF1ZSAke0R9JHtiaW5kaXJ9L3RvcnF1ZQorICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L291dC9SZWxlYXNlL2J5dGVjb2RlX2J1aWx0aW5zX2xpc3RfZ2VuZXJhdG9yICR7RH0ke2JpbmRpcn0vYnl0ZWNvZGVfYnVpbHRpbnNfbGlzdF9nZW5lcmF0b3IKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsJ2ljdScsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L291dC9SZWxlYXNlL2dlbi1yZWdleHAtc3BlY2lhbC1jYXNlICR7RH0ke2JpbmRpcn0vZ2VuLXJlZ2V4cC1zcGVjaWFsLWNhc2UKKyAgICBmaQorICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L291dC9SZWxlYXNlL21rY29kZWNhY2hlICR7RH0ke2JpbmRpcn0vbWtjb2RlY2FjaGUKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9vdXQvUmVsZWFzZS9ub2RlX21rc25hcHNob3QgJHtEfSR7YmluZGlyfS9ub2RlX21rc25hcHNob3QKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgIHNlZCAiMXNeLipeI1whJHtiaW5kaXJ9L2VudiBub2RlXmciIC1pICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcworfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tbnBtIgorRklMRVNfJHtQTn0tbnBtID0gIiR7ZXhlY19wcmVmaXh9L2xpYi9ub2RlX21vZHVsZXMgJHtiaW5kaXJ9L25wbSAke2JpbmRpcn0vbnB4IgorUkRFUEVORFNfJHtQTn0tbnBtID0gImJhc2ggcHl0aG9uMy1jb3JlIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1kYXRldGltZSBcCisgICAgcHl0aG9uMy1taXNjIHB5dGhvbjMtbXVsdGlwcm9jZXNzaW5nIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tc3lzdGVtdGFwIgorRklMRVNfJHtQTn0tc3lzdGVtdGFwID0gIiR7ZGF0YWRpcn0vc3lzdGVtdGFwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vY3RhdmUvb2N0YXZlXzQuNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29jdGF2ZS9vY3RhdmVfNC40LjEuYmIKaW5kZXggNzFkMjQ1MC4uZWMzZTgyNSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29jdGF2ZS9vY3RhdmVfNC40LjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29jdGF2ZS9vY3RhdmVfNC40LjEuYmIKQEAgLTcsMTEgKzcsMTEgQEAKIAogREVQRU5EUyA9ICJncGVyZi1uYXRpdmUgdGV4aW5mbyBsYXBhY2sgcGNyZSByZWFkbGluZSIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHRleGluZm8gZ2V0dGV4dAoraW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHRleGluZm8gZ2V0dGV4dCBtaW1lLXhkZwogCiBFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWphdmEgLS1kaXNhYmxlLWRvY3MiCiAKLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9vY3RhdmUvJHtQTn0tJHtQVn0udGFyLmd6IFwKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9vY3RhdmUvJHtCUE59LSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtYmxhcy1saWJyYXJ5LWludGVnZXItc2l6ZS5wYXRjaCBcCiAiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wY2ltZW0vcGNpbWVtXzIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wY2ltZW0vcGNpbWVtXzIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDdkNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BjaW1lbS9wY2ltZW1fMi4wLmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiU2ltcGxlIHByb2dyYW0gdG8gcmVhZCAmIHdyaXRlIHRvIGEgcGNpIGRldmljZSBmcm9tIHVzZXJzcGFjZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iaWxsZmFycm93L3BjaW1lbSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2JpbGxmYXJyb3cvcGNpbWVtL2lzc3VlcyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitDT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NHxhYXJjaDY0fGFybSkiCisKK1NSQ1JFViA9ICIwOTcyNGVkYjE3ODNhOThkYTJiN2FlNTNjNWFhYTg3NDkzYWFiYzliIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2JpbGxmYXJyb3cvcGNpbWVtLmdpdCAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7Qn0vcGNpbWVtICR7RH0ke2JpbmRpcn0vcGNpbWVtCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJkYmktcGVybF8xLjY0Mi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmRiaS1wZXJsXzEuNjQyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTMyYjNmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmRiaS1wZXJsXzEuNjQyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgUGVybCBEYXRhYmFzZSBJbnRlcmZhY2UiCi1ERVNDUklQVElPTiA9ICJEQkkgaXMgYSBkYXRhYmFzZSBhY2Nlc3MgQXBwbGljYXRpb24gUHJvZ3JhbW1pbmcgSW50ZXJmYWNlIFwKLShBUEkpIGZvciB0aGUgUGVybCBMYW5ndWFnZS4gVGhlIERCSSBBUEkgU3BlY2lmaWNhdGlvbiBkZWZpbmVzIGEgc2V0IFwKLW9mIGZ1bmN0aW9ucywgdmFyaWFibGVzIGFuZCBjb252ZW50aW9ucyB0aGF0IHByb3ZpZGUgYSBjb25zaXN0ZW50IFwKLWRhdGFiYXNlIGludGVyZmFjZSBpbmRlcGVuZGVudCBvZiB0aGUgYWN0dWFsIGRhdGFiYXNlIGJlaW5nIHVzZWQuIFwKLSIKLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9EQkkvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTEwOTgyYzcxNDhlMGEwMTJjMGZkODA1MzQ1MjJmNWM1IgotCi1TUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL1QvVEkvVElNQi9EQkktJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImYyYmExOGI1Y2VhMWM4Y2IzMjJhNjJiZTBhODQ3ZjNkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNmMjAyNTAyM2E1NjI4NmNlYmQxNWNiNDk1ZTM2Y2NkOWI0NTZjM2NjMjI5YmYyY2UxZjY5ZTllYmZjMjdmNWQiCi0KLVMgPSAiJHtXT1JLRElSfS9EQkktJHtQVn0iCi0KLWluaGVyaXQgY3BhbiBwdGVzdC1wZXJsCi0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLQkjIHRlc3QgcmVxdWlyZXMgIi1UIiAodGFpbnQpIGNvbW1hbmQgbGluZSBvcHRpb24KLQlybSAtcmYgJHtCfS90L3BvZC1jb3ZlcmFnZS50Ci0Jcm0gLXJmICR7Qn0vdC8xM3RhaW50LnQKLQkjIHNvdXJjZSBvZiB0ZXN0IGZhaWx1cmUgbm90IG9idmlvdXMKLQlybSAtcmYgJHtCfS90Lzg1Z29mZXIudAotCSMgdW5jbGVhciB3aHkgdGhlcmUgYXJlIHNldmVyYWwgZHVwbGljYXRlcyBvZiB0ZXN0cyBpbiB0YXJiYWxsCi0Jcm0gLXJmICR7Qn0vdC96Ki50Ci19Ci0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICIgXAotICAgIHBlcmwgXAotICAgIHBlcmwtbW9kdWxlLWNhcnAgXAotICAgIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKLSAgICBwZXJsLW1vZHVsZS1leHBvcnRlci1oZWF2eSBcCi0gICAgcGVybC1tb2R1bGUtZHluYWxvYWRlciBcCi0gICAgcGVybC1tb2R1bGUtaW8tZGlyIFwKLSAgICBwZXJsLW1vZHVsZS1zY2FsYXItdXRpbCBcCi0gICAgcGVybC1tb2R1bGUtdW5pdmVyc2FsIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiIFwKLSAgICAke1BOfSBcCi0gICAgcGVybC1tb2R1bGUtYiBcCi0gICAgcGVybC1tb2R1bGUtYmVuY2htYXJrIFwKLSAgICBwZXJsLW1vZHVsZS1jd2QgXAotICAgIHBlcmwtbW9kdWxlLWRhdGEtZHVtcGVyIFwKLSAgICBwZXJsLW1vZHVsZS1lbmNvZGUgXAotICAgIHBlcmwtbW9kdWxlLWVuY29kZS1ieXRlIFwKLSAgICBwZXJsLW1vZHVsZS1lbmNvZGUtZW5jb2RpbmcgXAotICAgIHBlcmwtbW9kdWxlLWZpbGUtY29weSBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1wYXRoIFwKLSAgICBwZXJsLW1vZHVsZS1saWIgXAotICAgIHBlcmwtbW9kdWxlLXBlcmxpbyBcCi0gICAgcGVybC1tb2R1bGUtcGVybGlvLXNjYWxhciBcCi0gICAgcGVybC1tb2R1bGUtcGVybGlvLXZpYSBcCi0gICAgcGVybC1tb2R1bGUtc2RibS1maWxlIFwKLSAgICBwZXJsLW1vZHVsZS1zdG9yYWJsZSBcCi0gICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKLSAgICBwZXJsLW1vZHVsZS11dGY4IFwKLSAgICAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZGJpLXBlcmxfMS42NDMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJkYmktcGVybF8xLjY0My5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWZhZDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZGJpLXBlcmxfMS42NDMuYmIKQEAgLTAsMCArMSw2MiBAQAorU1VNTUFSWSA9ICJUaGUgUGVybCBEYXRhYmFzZSBJbnRlcmZhY2UiCitERVNDUklQVElPTiA9ICJEQkkgaXMgYSBkYXRhYmFzZSBhY2Nlc3MgQXBwbGljYXRpb24gUHJvZ3JhbW1pbmcgSW50ZXJmYWNlIFwKKyhBUEkpIGZvciB0aGUgUGVybCBMYW5ndWFnZS4gVGhlIERCSSBBUEkgU3BlY2lmaWNhdGlvbiBkZWZpbmVzIGEgc2V0IFwKK29mIGZ1bmN0aW9ucywgdmFyaWFibGVzIGFuZCBjb252ZW50aW9ucyB0aGF0IHByb3ZpZGUgYSBjb25zaXN0ZW50IFwKK2RhdGFiYXNlIGludGVyZmFjZSBpbmRlcGVuZGVudCBvZiB0aGUgYWN0dWFsIGRhdGFiYXNlIGJlaW5nIHVzZWQuIFwKKyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9EQkkvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTEwOTgyYzcxNDhlMGEwMTJjMGZkODA1MzQ1MjJmNWM1IgorCitTUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL1QvVEkvVElNQi9EQkktJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjM1MmY4MGIxZTIzNzY5YzExNjA4MmE5MDkwNWQ3Mzk4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhhMmI5OTNkYjU2MGEyYzM3M2MxNzRlZTk3NmE1MTAyN2RkNzgwZWM3NjZhZTE3NjIwYzIwMzkzZDJlODM2ZmEiCisKK1MgPSAiJHtXT1JLRElSfS9EQkktJHtQVn0iCisKK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKwkjIHRlc3QgcmVxdWlyZXMgIi1UIiAodGFpbnQpIGNvbW1hbmQgbGluZSBvcHRpb24KKwlybSAtcmYgJHtCfS90L3BvZC1jb3ZlcmFnZS50CisJcm0gLXJmICR7Qn0vdC8xM3RhaW50LnQKKwkjIHNvdXJjZSBvZiB0ZXN0IGZhaWx1cmUgbm90IG9idmlvdXMKKwlybSAtcmYgJHtCfS90Lzg1Z29mZXIudAorCSMgdW5jbGVhciB3aHkgdGhlcmUgYXJlIHNldmVyYWwgZHVwbGljYXRlcyBvZiB0ZXN0cyBpbiB0YXJiYWxsCisJcm0gLXJmICR7Qn0vdC96Ki50Cit9CisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICIgXAorICAgIHBlcmwgXAorICAgIHBlcmwtbW9kdWxlLWNhcnAgXAorICAgIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKKyAgICBwZXJsLW1vZHVsZS1leHBvcnRlci1oZWF2eSBcCisgICAgcGVybC1tb2R1bGUtZHluYWxvYWRlciBcCisgICAgcGVybC1tb2R1bGUtaW8tZGlyIFwKKyAgICBwZXJsLW1vZHVsZS1zY2FsYXItdXRpbCBcCisgICAgcGVybC1tb2R1bGUtdW5pdmVyc2FsIFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiIFwKKyAgICAke1BOfSBcCisgICAgcGVybC1tb2R1bGUtYiBcCisgICAgcGVybC1tb2R1bGUtYmVuY2htYXJrIFwKKyAgICBwZXJsLW1vZHVsZS1jd2QgXAorICAgIHBlcmwtbW9kdWxlLWRhdGEtZHVtcGVyIFwKKyAgICBwZXJsLW1vZHVsZS1lbmNvZGUgXAorICAgIHBlcmwtbW9kdWxlLWVuY29kZS1ieXRlIFwKKyAgICBwZXJsLW1vZHVsZS1lbmNvZGUtZW5jb2RpbmcgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtY29weSBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1wYXRoIFwKKyAgICBwZXJsLW1vZHVsZS1saWIgXAorICAgIHBlcmwtbW9kdWxlLXBlcmxpbyBcCisgICAgcGVybC1tb2R1bGUtcGVybGlvLXNjYWxhciBcCisgICAgcGVybC1tb2R1bGUtcGVybGlvLXZpYSBcCisgICAgcGVybC1tb2R1bGUtc2RibS1maWxlIFwKKyAgICBwZXJsLW1vZHVsZS1zdG9yYWJsZSBcCisgICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKKyAgICBwZXJsLW1vZHVsZS11dGY4IFwKKyAgICAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliaW8tcHR5LXBlcmxfMS4xMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmlvLXB0eS1wZXJsXzEuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxYTk1ZTUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliaW8tcHR5LXBlcmxfMS4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBtb2R1bGUgZm9yIHBzZXVkbyB0dHkgSU8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTUVUQS55bWw7YmVnaW5saW5lPTExO2VuZGxpbmU9MTI7bWQ1PWIyNTYyZjk0OTA3ZWViNDJlOGNlOWQ0NWY2MjhlNTg3IgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuY3Bhbi5vcmcvbW9kdWxlcy9ieS1tb2R1bGUvSU8vSU8tVHR5LSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjExNjk1YTFhNTE2YjNiZDFiOTBjZTc1ZmYwY2UzZTZkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEyZWY4NzcwZDMzMDkxNzgyMDNmOGM4YWMyNWU2MjNlNjNjZjc2ZTk3ODMwZmQzYmUyODBhZGUxYTU1NTI5MGQiCi0KLVMgPSAiJHtXT1JLRElSfS9JTy1UdHktJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9wZXJsL3ZlbmRvcl9wZXJsLyovYXV0by9JTy9UdHkvLmRlYnVnLyIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliaW8tcHR5LXBlcmxfMS4xNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmlvLXB0eS1wZXJsXzEuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFiMjFkMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmlvLXB0eS1wZXJsXzEuMTQuYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSBmb3IgcHNldWRvIHR0eSBJTyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9NRVRBLnltbDtiZWdpbmxpbmU9MTE7ZW5kbGluZT0xMjttZDU9YjI1NjJmOTQ5MDdlZWI0MmU4Y2U5ZDQ1ZjYyOGU1ODciCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5jcGFuLm9yZy9tb2R1bGVzL2J5LW1vZHVsZS9JTy9JTy1UdHktJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzBiY2VjNGIxYjE5ODM4ZWQyMDlmYjk2YTEzZjNlODkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTFmM2U0ZTMxMTEyOGJkYjJjNmExNWYwMmM1MTM3NmNiODUyY2NmOWRmOWJlYmU4ZGZiYjVmOTU2MWViOTViNSIKKworUyA9ICIke1dPUktESVJ9L0lPLVR0eS0ke1BWfSIKKworaW5oZXJpdCBjcGFuCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3BlcmwvdmVuZG9yX3BlcmwvKi9hdXRvL0lPL1R0eS8uZGVidWcvIgorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJqc29uLXBlcmxfNC4wMjAwMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmpzb24tcGVybF80LjAyMDAwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNWE4YTYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJqc29uLXBlcmxfNC4wMjAwMC5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIlBlcmwgbW9kdWxlIHRvIGRlY29kZS9lbmNvZGUganNvbiBmaWxlcyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgSlNPTi5wbSBtb2R1bGUgd2l0aCBmcmllbmRzLiBcCitUaGUgbW9kdWxlIGltcGxlbWVudHMgSlNPTiBlbmNvZGUvZGVjb2RlLiIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL0pTT04iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0xMTcxO2VuZGxpbmU9MTE3NjttZDU9M2JlMmNiODE1OWQwOTQ3NjhlNjczODZjNDUzZThiYmUiCisKK0RFUEVORFMgKz0gInBlcmwiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9tYWthbWFrYS9KU09OLmdpdDtwcm90b2NvbD1odHRwcyIKKworU1JDUkVWID0gIjQyYTYzMjRkZjY1NGU5MjQxOTUxMmNlZTgwYzBiNDkxNTVkOWU1NmQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY3BhbgorCitSREVQRU5EU18ke1BOfSArPSAicGVybCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlicGVybGlvLWd6aXAtcGVybF8wLjIwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlicGVybGlvLWd6aXAtcGVybF8wLjIwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmZTdhN2QKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJwZXJsaW8tZ3ppcC1wZXJsXzAuMjAuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSB0byBtYW5pcHVsYXRlIGFuZCBhY2Nlc3MgZ3ppcCBmaWxlcyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgZ3ppcC5wbSBtb2R1bGUgd2l0aCBmcmllbmRzLiBcCitUaGUgbW9kdWxlIGltcGxlbWVudHMgcGVybGlvIGxheWVyIGZvciBnemlwLiIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL1BlcmxJTzo6Z3ppcCIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTU1O2VuZGxpbmU9NjE7bWQ1PWJjM2RhMmRlYzFmYmVhNTlhYzkxMTcyYzVlMGViODM3IgorCitERVBFTkRTICs9ICJwZXJsIgorCitTUkNfVVJJID0gImh0dHBzOi8vY3Bhbi5tZXRhY3Bhbi5vcmcvYXV0aG9ycy9pZC9OL05XL05XQ0xBUksvUGVybElPLWd6aXAtJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDM5M2VhZTVkMGIyM2RmNmNmNDBlZDQ0YWY3ZDcxMWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDg0ODY3OWEzZjIwMWUzZjNiMGM1ZjZmOTUyNmU2MDJhZjUyOTIzZmZhNDcxYTJhMzY1N2RiNzg2YmQzYmRjNSIKKworUyA9ICIke1dPUktESVJ9L1BlcmxJTy1nemlwLSR7UFZ9IgorCitFWFRSQV9DUEFORkxBR1MgPSAiRVhQQVRMSUJQQVRIPSR7U1RBR0lOR19MSUJESVJ9IEVYUEFUSU5DUEFUSD0ke1NUQUdJTkdfSU5DRElSfSIKKworaW5oZXJpdCBjcGFuCisKK2RvX2NvbXBpbGUoKSB7CisJZXhwb3J0IExJQkM9IiQoZmluZCAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vIC1uYW1lICdsaWJjLSouc28nKSIKKwljcGFuX2RvX2NvbXBpbGUKK30KKworUkRFUEVORFNfJHtQTn0gKz0gInBlcmwgcGVybC1tb2R1bGUtcGVybGlvIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1saWJ4bWwyLWRldGVjdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLWxpYnhtbDItZGV0ZWN0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2M2ZDRlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLWxpYnhtbDItZGV0ZWN0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVXNlIHBrZy1jb25maWcgZm9yIGxpYnhtbDIgZGV0ZWN0aW9uLgotCi14bWwyLWNvbmZpZyBkb2VzIG5vdCB3b3JrLiBVc2UgcGtnY29uZmlnIHRvIHNldCBDUFBGTEFHUyBhbmQgTElCUy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiAgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5pbiB8IDE1ICsrLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQotLS0tIGEvYWNpbmNsdWRlLm00Ci0rKysgYi9hY2luY2x1ZGUubTQKLUBAIC0yNDgxLDggKzI0ODEsOCBAQCBBQ19ERUZVTihbUEhQX1NFVFVQX0xJQlhNTF0sIFsKLSAgICAgTElCWE1MX1ZFUlNJT049YGV4cHIgWyRdMSBcKiAxMDAwMDAwICsgWyRdMiBcKiAxMDAwICsgWyRdM2AKLSAgICAgaWYgdGVzdCAiJExJQlhNTF9WRVJTSU9OIiAtZ2UgIjIwMDYwMTEiOyB0aGVuCi0gICAgICAgZm91bmRfbGlieG1sPXllcwotLSAgICAgIExJQlhNTF9MSUJTPWAkWE1MMl9DT05GSUcgLS1saWJzYAotLSAgICAgIExJQlhNTF9JTkNTPWAkWE1MMl9DT05GSUcgLS1jZmxhZ3NgCi0rICAgICAgTElCWE1MX0xJQlM9YHBrZy1jb25maWcgLS1saWJzIGxpYnhtbC0yLjBgCi0rICAgICAgTElCWE1MX0lOQ1M9YHBrZy1jb25maWcgLS1jZmxhZ3MgbGlieG1sLTIuMGAKLSAgICAgZWxzZQotICAgICAgIEFDX01TR19FUlJPUihbbGlieG1sMiB2ZXJzaW9uIDIuNi4xMSBvciBncmVhdGVyIHJlcXVpcmVkLl0pCi0gICAgIGZpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDAxLWFjaW5jbHVkZS5tNC1kb24tdC11bnNldC1jYWNoZS12YXJpYWJsZXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDAxLWFjaW5jbHVkZS5tNC1kb24tdC11bnNldC1jYWNoZS12YXJpYWJsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxZGJlMjYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1hY2luY2x1ZGUubTQtZG9uLXQtdW5zZXQtY2FjaGUtdmFyaWFibGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSBkMjY3OWM4OWMwYjE1YjkwZTUzNjBiNDg2MzI1OGE3OTU1ZTVmNGU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMTIgRmViIDIwMTkgMTU6NTk6MTkgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gYWNpbmNsdWRlLm00OiBkb24ndCB1bnNldCBjYWNoZSB2YXJpYWJsZXMKLQotVW5zZXR0aW5nIHByZXZlbnRzIGNhY2hlIHZhcmlhYmxlIGZyb20gYmVpbmcgcGFzc2VkIHRvIGNvbmZpZ3VyZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1zcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLQotdXBkYXRlIHBhdGNoIHRvIHZlcnNpb24gNy4zLjIKLVNpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBhY2luY2x1ZGUubTQgfCA0IC0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2FjaW5jbHVkZS5tNCBiL2FjaW5jbHVkZS5tNAotaW5kZXggMjVmOTAwZC4uMjY0MTk2OSAxMDA2NDQKLS0tLSBhL2FjaW5jbHVkZS5tNAotKysrIGIvYWNpbmNsdWRlLm00Ci1AQCAtMTkyMSw4ICsxOTIxLDYgQEAgZGVmaW5lKFtwaHBzaGlmdF0sW2lmZWxzZShpbmRleChbJEBdLFssXSksLTEsLFtzdWJzdHIoWyRAXSxpbmNyKGluZGV4KFskQF0sWyxdKSkKLSBkbmwKLSBBQ19ERUZVTihbUEhQX0NIRUNLX0ZVTkNfTElCXSxbCi0gICBpZmVsc2UoJDIsLDosWwotLSAgdW5zZXQgYWNfY3ZfbGliXyQyW11fJDEKLS0gIHVuc2V0IGFjX2N2X2xpYl8kMltdX19fJDEKLSAgIHVuc2V0IGZvdW5kCi0gICBBQ19DSEVDS19MSUIoJDIsICQxLCBbZm91bmQ9eWVzXSwgWwotICAgICBBQ19DSEVDS19MSUIoJDIsIF9fJDEsIFtmb3VuZD15ZXNdLCBbZm91bmQ9bm9dKQotQEAgLTE5NTQsOCArMTk1Miw2IEBAIGRubCBpbiB0aGUgZGVmYXVsdCBsaWJyYXJpZXMgYW5kIGFzIGEgZmFsbCBiYWNrIGluIHRoZSBzcGVjaWZpZWQgbGlicmFyeS4KLSBkbmwgRGVmaW5lcyBIQVZFX2Z1bmMgYW5kIEhBVkVfbGlicmFyeSBpZiBmb3VuZCBhbmQgYWRkcyB0aGUgbGlicmFyeSB0byBMSUJTLgotIGRubAotIEFDX0RFRlVOKFtQSFBfQ0hFQ0tfRlVOQ10sWwotLSAgdW5zZXQgYWNfY3ZfZnVuY18kMQotLSAgdW5zZXQgYWNfY3ZfZnVuY19fXyQxCi0gICB1bnNldCBmb3VuZAotIAotICAgQUNfQ0hFQ0tfRlVOQygkMSwgW2ZvdW5kPXllc10sWyBBQ19DSEVDS19GVU5DKF9fJDEsW2ZvdW5kPXllc10sW2ZvdW5kPW5vXSkgXSkKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1hY2luY2x1ZGUubTQtc2tpcC1iaW5jb25maWctY2hlY2stZm9yLWxpYnhtbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtYWNpbmNsdWRlLm00LXNraXAtYmluY29uZmlnLWNoZWNrLWZvci1saWJ4bWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1MzI5MjYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1hY2luY2x1ZGUubTQtc2tpcC1iaW5jb25maWctY2hlY2stZm9yLWxpYnhtbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZyb20gYTJkMTQ2YjhkZDlkMDJmNTIzZDFlMjA1ZDc5NzkyNjI2YTcxZGVjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDIgQXByIDIwMTggMTU6Mjc6MDkgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gYWNpbmNsdWRlLm00OiBza2lwIGJpbmNvbmZpZyBjaGVjayBmb3IgbGlieG1sCi0KLVdlIHdhbnQgbGlieG1sIGZsYWdzIHRvIGJlIHBpY2tlZCB1cCB1c2luZyBwa2ctY29uZmlnIGluc3RlYWQgb2YgdGhlCi14bWwyLWNvbmZpZyBmaWxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLXNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotCi0tLS0KLSBhY2luY2x1ZGUubTQgfCAyOSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2FjaW5jbHVkZS5tNCBiL2FjaW5jbHVkZS5tNAotaW5kZXggZDQyZDcwOC4uZDMyNzY2YSAxMDA2NDQKLS0tLSBhL2FjaW5jbHVkZS5tNAotKysrIGIvYWNpbmNsdWRlLm00Ci1AQCAtMjUyNSwzNSArMjUyNSw2IEBAIGRubAotIEFDX0RFRlVOKFtQSFBfU0VUVVBfTElCWE1MXSwgWwotICAgZm91bmRfbGlieG1sPW5vCi0gCi0tICBkbmwgRmlyc3QgdHJ5IHRvIGZpbmQgeG1sMi1jb25maWcKLS0gIEFDX0NBQ0hFX0NIRUNLKFtmb3IgeG1sMi1jb25maWcgcGF0aF0sIGFjX2N2X3BocF94bWwyX2NvbmZpZ19wYXRoLAotLSAgWwotLSAgICBmb3IgaSBpbiAkUEhQX0xJQlhNTF9ESVIgL3Vzci9sb2NhbCAvdXNyOyBkbwotLSAgICAgIGlmIHRlc3QgLXggIiRpL2Jpbi94bWwyLWNvbmZpZyI7IHRoZW4KLS0gICAgICAgIGFjX2N2X3BocF94bWwyX2NvbmZpZ19wYXRoPSIkaS9iaW4veG1sMi1jb25maWciCi0tICAgICAgICBicmVhawotLSAgICAgIGZpCi0tICAgIGRvbmUKLS0gIF0pCi0tCi0tICBpZiB0ZXN0IC14ICIkYWNfY3ZfcGhwX3htbDJfY29uZmlnX3BhdGgiOyB0aGVuCi0tICAgIFhNTDJfQ09ORklHPSIkYWNfY3ZfcGhwX3htbDJfY29uZmlnX3BhdGgiCi0tICAgIGxpYnhtbF9mdWxsX3ZlcnNpb249YCRYTUwyX0NPTkZJRyAtLXZlcnNpb25gCi0tICAgIGFjX0lGUz0kSUZTCi0tICAgIElGUz0iLiIKLS0gICAgc2V0ICRsaWJ4bWxfZnVsbF92ZXJzaW9uCi0tICAgIElGUz0kYWNfSUZTCi0tICAgIExJQlhNTF9WRVJTSU9OPWBleHByIFskXTEgXCogMTAwMDAwMCArIFskXTIgXCogMTAwMCArIFskXTNgCi0tICAgIGlmIHRlc3QgIiRMSUJYTUxfVkVSU0lPTiIgLWdlICIyMDA2MDExIjsgdGhlbgotLSAgICAgIGZvdW5kX2xpYnhtbD15ZXMKLS0gICAgICBMSUJYTUxfTElCUz1gJFhNTDJfQ09ORklHIC0tbGlic2AKLS0gICAgICBMSUJYTUxfSU5DUz1gJFhNTDJfQ09ORklHIC0tY2ZsYWdzYAotLSAgICBlbHNlCi0tICAgICAgQUNfTVNHX0VSUk9SKFtsaWJ4bWwyIHZlcnNpb24gMi42LjExIG9yIGdyZWF0ZXIgcmVxdWlyZWQuXSkKLS0gICAgZmkKLS0gIGZpCi0tCi0tICBkbmwgSWYgeG1sMi1jb25maWcgZmFpbHMsIHRyeSBwa2ctY29uZmlnCi0gICBpZiB0ZXN0ICIkZm91bmRfbGlieG1sIiA9ICJubyI7IHRoZW4KLSAgICAgaWYgdGVzdCAteiAiJFBLR19DT05GSUciOyB0aGVuCi0gICAgICAgQUNfUEFUSF9QUk9HKFBLR19DT05GSUcsIHBrZy1jb25maWcsIG5vKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1jb25maWd1cmUuYWMtZG9uLXQtaW5jbHVkZS1idWlsZC1saWJ0b29sLm00LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1jb25maWd1cmUuYWMtZG9uLXQtaW5jbHVkZS1idWlsZC1saWJ0b29sLm00LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4NjEzNjYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDAxLWNvbmZpZ3VyZS5hYy1kb24tdC1pbmNsdWRlLWJ1aWxkLWxpYnRvb2wubTQucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSBmNWEzNGU3NzE1MzJiODQzM2YzMDdiNjc5NTAwYzI2YWYzMjhiYTM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMTcgQXByIDIwMjAgMTU6MDE6NTcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBkb24ndCBpbmNsdWRlIGJ1aWxkL2xpYnRvb2wubTQKKword2UgZGVsZXRlIGJ1aWxkL2xpYnRvb2wubTQgYmVmb3JlIGRvX2NvbmZpZ3VyZSwKK3dlIHdpbGwgdXNlIGxpYnRvb2wubTQgdW5kZXIgQUNMT0NBTERJUgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLXNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMDZjNmEyNy4uZjg1MTQ0ZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNiw3ICs2LDYgQEAgZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBtNF9pbmNsdWRlKFtidWlsZC9heF9jaGVja19jb21waWxlX2ZsYWcubTRdKQorIG00X2luY2x1ZGUoW2J1aWxkL2F4X2Z1bmNfd2hpY2hfZ2V0aG9zdGJ5bmFtZV9yLm00XSkKKyBtNF9pbmNsdWRlKFtidWlsZC9heF9nY2NfZnVuY19hdHRyaWJ1dGUubTRdKQorLW00X2luY2x1ZGUoW2J1aWxkL2xpYnRvb2wubTRdKQorIG00X2luY2x1ZGUoW2J1aWxkL3BocF9jeHhfY29tcGlsZV9zdGRjeHgubTRdKQorIG00X2luY2x1ZGUoW2J1aWxkL3BocC5tNF0pCisgbTRfaW5jbHVkZShbYnVpbGQvcGtnLm00XSkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1tYWluLXBocF9pbmkuYy1idWlsZC1lbXB0eS1waHBfbG9hZF96ZW5kX2V4dGVuc2lvbl9jLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1tYWluLXBocF9pbmkuYy1idWlsZC1lbXB0eS1waHBfbG9hZF96ZW5kX2V4dGVuc2lvbl9jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmY2U5NzM4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtbWFpbi1waHBfaW5pLmMtYnVpbGQtZW1wdHktcGhwX2xvYWRfemVuZF9leHRlbnNpb25fYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLUZyb20gMjg0MmFhMmEwNzhlYjFjYWQ1NTU0MGI2MWU3ZWRmMTExMzk1MTUwZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAYm9vdGxpbi5jb20+Ci1EYXRlOiBNb24sIDI2IEZlYiAyMDE4IDE5OjMwOjU1ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1haW4vcGhwX2luaS5jOiBidWlsZCBlbXB0eSBwaHBfbG9hZF96ZW5kX2V4dGVuc2lvbl9jYigpIHdoZW4KLSAhSEFWRV9MSUJETAotCi1Db21taXQgMDc4MmE3ZmM2MzE0YzhiZDNjYmZkNTdmMTJkMDQ3OWJmOWNjOGRjNyAoIkZpeGVkIGJ1ZyAjNzQ4NjYKLWV4dGVuc2lvbl9kaXIgPSAiLi9leHQiIG5vdyB1c2UgY3VycmVudCBkaXJlY3RvcnkgZm9yIGJhc2UiKSBtb2RpZmllZAotdGhlIHBocF9sb2FkX3plbmRfZXh0ZW5zaW9uX2NiKCkgZnVuY3Rpb24gdG8gdXNlIHBocF9sb2FkX3NobGliKCksIGFuZAotcGFzcyBhIGhhbmRsZSB0byB0aGUgbmV3bHkgaW50cm9kdWNlZCB6ZW5kX2xvYWRfZXh0ZW5zaW9uX2hhbmRsZSgpCi1mdW5jdGlvbiBpbnN0ZWFkIG9mIHBhc3NpbmcgdGhlIGV4dGVuc2lvbiBwYXRoIHRvCi16ZW5kX2xvYWRfZXh0ZW5zaW9uKCkuCi0KLVdoaWxlIGRvaW5nIHNvLCBpdCBpbnRyb2R1Y2VkIGEgY2FsbCB0byBwaHBfbG9hZF9zaGxpYigpIGZyb20gY29kZQotdGhhdCBpcyBidWlsdCBldmVuIHdoZW4gSEFWRV9MSUJETCBpcyBub3QgZGVmaW5lZC4gSG93ZXZlciwKLXBocF9sb2FkX3NobGliKCkgaXMgbm90IGltcGxlbWVudGVkIHdoZW4gSEFWRV9MSUJETCBpcyBub3QgZGVmaW5lZCwKLWZvciBvYnZpb3VzIHJlYXNvbnMuCi0KLUl0IHR1cm5zIG91dCB0aGF0IHplbmRfbG9hZF9leHRlbnNpb25faGFuZGxlKCkgYW55d2F5IGRvZXNuJ3QgZG8KLWFueXRoaW5nIHdoZW4gWkVORF9FWFRFTlNJT05TX1NVUFBPUlQgaXMgZGVmaW5lZCB0byAwLCBhbmQKLVpFTkRfRVhURU5TSU9OU19TVVBQT1JUIGlzIG5vdCBkZWZpbmVkIHdoZW4gSEFWRV9MSUJETCBpcyBub3QgZGVmaW5lZAotKFplbmQvemVuZF9wb3J0YWJpbGl0eS5oKS4KLQotRml4ZXMgdGhlIGZvbGxvd2luZyBidWlsZCBmYWlsdXJlIHdoZW4gYnVpbGRpbmcgb24gYSBzeXN0ZW0gdGhhdAotZG9lc24ndCBoYXZlIGxpYmRsOgotCi1tYWluL3BocF9pbmkubzogSW4gZnVuY3Rpb24gYHBocF9sb2FkX3plbmRfZXh0ZW5zaW9uX2NiJzoKLXBocF9pbmkuYzooLnRleHQrMHg0NzgpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBwaHBfbG9hZF9zaGxpYicKLXBocF9pbmkuYzooLnRleHQrMHg0YjApOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBwaHBfbG9hZF9zaGxpYicKLWNvbGxlY3QyOiBlcnJvcjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwOi8vZ2l0LnBocC5uZXQvP3A9cGhwLXNyYy5naXQ7YT1jb21taXQ7aD0yODQyYWEyYTA3OGViMWNhZDU1NTQwYjYxZTdlZGYxMTEzOTUxNTBkXQotU2lnbmVkLW9mZi1ieTogVGhvbWFzIFBldGF6em9uaSA8dGhvbWFzLnBldGF6em9uaUBib290bGluLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0tLS0KLSBtYWluL3BocF9pbmkuYyB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL21haW4vcGhwX2luaS5jIGIvbWFpbi9waHBfaW5pLmMKLWluZGV4IGJhNThlYjEuLmZjYTI2M2UgMTAwNjQ0Ci0tLS0gYS9tYWluL3BocF9pbmkuYwotKysrIGIvbWFpbi9waHBfaW5pLmMKLUBAIC0zNTAsNiArMzUwLDcgQEAgc3RhdGljIHZvaWQgcGhwX2xvYWRfcGhwX2V4dGVuc2lvbl9jYih2b2lkICphcmcpCi0gCi0gLyoge3t7IHBocF9sb2FkX3plbmRfZXh0ZW5zaW9uX2NiCi0gICovCi0rI2lmZGVmIEhBVkVfTElCREwKLSBzdGF0aWMgdm9pZCBwaHBfbG9hZF96ZW5kX2V4dGVuc2lvbl9jYih2b2lkICphcmcpCi0gewotIAljaGFyICpmaWxlbmFtZSA9ICooKGNoYXIgKiopIGFyZyk7Ci1AQCAtNDA5LDYgKzQxMCw5IEBAIHN0YXRpYyB2b2lkIHBocF9sb2FkX3plbmRfZXh0ZW5zaW9uX2NiKHZvaWQgKmFyZykKLSAJCWVmcmVlKGxpYnBhdGgpOwotIAl9Ci0gfQotKyNlbHNlCi0rc3RhdGljIHZvaWQgcGhwX2xvYWRfemVuZF9leHRlbnNpb25fY2Iodm9pZCAqYXJnKSB7IH0KLSsjZW5kaWYKLSAvKiB9fX0gKi8KLSAKLSAvKiB7e3sgcGhwX2luaXRfY29uZmlnCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtb3BjYWNoZS1jb25maWcubTQtZW5hYmxlLW9wY2FjaGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDAxLW9wY2FjaGUtY29uZmlnLm00LWVuYWJsZS1vcGNhY2hlLnBhdGNoCmluZGV4IDM0ZjQzM2YuLmVlMGQ1ZWQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtb3BjYWNoZS1jb25maWcubTQtZW5hYmxlLW9wY2FjaGUucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1vcGNhY2hlLWNvbmZpZy5tNC1lbmFibGUtb3BjYWNoZS5wYXRjaApAQCAtMSwzMCArMSwyNyBAQAotRnJvbSA4ZGU1YmE2OWQyMGQwNDliOGNhOTgzYTk0NzBjNzMwMzE0MmVjMGIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLURhdGU6IFN1biwgMjggQXByIDIwMTkgMTY6NTU6MTMgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gRnJvbSBmYjEzOWQ5NzA3ZGFiZTE2ODRiNDcyYTA4YTZlYjU3NjFlZGU0YTNhIE1vbiBTZXAgMTcKLSAwMDowMDowMCAyMDAxIEZyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+IERhdGU6IFR1ZSwgMTIKLSBGZWIgMjAxOSAxNDo1NjoxNiArMDgwMCBTdWJqZWN0OiBbUEFUQ0hdIG9wY2FjaGUvY29uZmlnLm00OiBlbmFibGUgb3BjYWNoZQorb3BjYWNoZS9jb25maWcubTQ6IGVuYWJsZSBvcGNhY2hlCiAKLVdlIGNhbid0IHVzZSBBQ19UUllfUlVOIHRvIHJ1biBwcm9ncmFtcyBpbiBhIGNyb3NzIGNvbXBpbGUgZW52aXJvbm1lbnQuIFNldAotdGhlIHZhcmlhYmxlcyBkaXJlY3RseSBpbnN0ZWFkIHNpbmNlIHdlIGtub3cgdGhhdCB3ZSdkIGJlIHJ1bm5pbmcgb24gbGF0ZXN0CitXZSBjYW4ndCB1c2UgQUNfVFJZX1JVTiB0byBydW4gcHJvZ3JhbXMgaW4gYSBjcm9zcyBjb21waWxlIGVudmlyb25tZW50LgorU2V0Cit0aGUgdmFyaWFibGVzIGRpcmVjdGx5IGluc3RlYWQgc2luY2Ugd2Uga25vdyB0aGF0IHdlJ2QgYmUgcnVubmluZyBvbgorbGF0ZXN0CiBlbm91Z2ggbGludXgga2VybmVsLgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0NvbmZpZ3VyYXRpb25dCiAKIFNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CiAKLXVwZGF0ZSBwYXRjaCB0byB2ZXJzaW9uIDcuMy40Cit1cGRhdGUgcGF0Y2ggdG8gdmVyc2lvbiA3LjQuNAogU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KIC0tLQotIGV4dC9vcGNhY2hlL2NvbmZpZy5tNCB8IDMxMiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDMwNiBkZWxldGlvbnMoLSkKKyBleHQvb3BjYWNoZS9jb25maWcubTQgfCAxOTQgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxOTEgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9leHQvb3BjYWNoZS9jb25maWcubTQgYi9leHQvb3BjYWNoZS9jb25maWcubTQKLWluZGV4IDQ4MTAyMTcuLjIyYzNkNjEgMTAwNjQ0CitpbmRleCA2YzQwY2FmLi44NGRkZjFlIDEwMDY0NAogLS0tIGEvZXh0L29wY2FjaGUvY29uZmlnLm00CiArKysgYi9leHQvb3BjYWNoZS9jb25maWcubTQKLUBAIC0yNywzMTkgKzI3LDE5IEBAIGlmIHRlc3QgIiRQSFBfT1BDQUNIRSIgIT0gIm5vIjsgdGhlbgotICAgQUNfQ0hFQ0tfSEVBREVSUyhbdW5pc3RkLmggc3lzL3Vpby5oXSkKK0BAIC0yMywyMDEgKzIzLDEzIEBAIGlmIHRlc3QgIiRQSFBfT1BDQUNIRSIgIT0gIm5vIjsgdGhlbgorICAgQUNfQ0hFQ0tfRlVOQ1MoW21wcm90ZWN0XSkKICAKICAgIEFDX01TR19DSEVDS0lORyhmb3Igc3lzdmlwYyBzaGFyZWQgbWVtb3J5IHN1cHBvcnQpCiAtICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWwpAQCAtOTUsOSArOTIsOCBAQAogLSAgICBBQ19ERUZJTkUoSEFWRV9TSE1fSVBDLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIFN5c1YgSVBDIFNITSBzdXBwb3J0XSkKIC0gICAgbXNnPXllc10sW21zZz1ub10sW21zZz1ub10pCiAtICBBQ19NU0dfUkVTVUxUKFskbXNnXSkKLS0KICsgIEFDX0RFRklORShIQVZFX1NITV9JUEMsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgU3lzViBJUEMgU0hNIHN1cHBvcnRdKQotKyAgCisgCiAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG1tYXAoKSB1c2luZyBNQVBfQU5PTiBzaGFyZWQgbWVtb3J5IHN1cHBvcnQpCiAtICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWwogLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTExNCw3ICsxMTAsOCBAQAogLSNpZm5kZWYgTUFQX0ZBSUxFRAogLSMgZGVmaW5lIE1BUF9GQUlMRUQgKCh2b2lkKiktMSkKIC0jZW5kaWYKLS0KKysgIEFDX0RFRklORShIQVZFX1NITV9NTUFQX0FOT04sIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgbW1hcChNQVBfQU5PTikgU0hNIHN1cHBvcnRdKQorIAogLWludCBtYWluKCkgewogLSAgcGlkX3QgcGlkOwogLSAgaW50IHN0YXR1czsKQEAgLTE0OSw2NCArMTQ2LDggQEAKIC0gICAgQUNfREVGSU5FKEhBVkVfU0hNX01NQVBfQU5PTiwgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBtbWFwKE1BUF9BTk9OKSBTSE0gc3VwcG9ydF0pCiAtICAgIG1zZz15ZXNdLFttc2c9bm9dLFttc2c9bm9dKQogLSAgQUNfTVNHX1JFU1VMVChbJG1zZ10pCi0rICBBQ19ERUZJTkUoSEFWRV9TSE1fTU1BUF9BTk9OLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIG1tYXAoTUFQX0FOT04pIFNITSBzdXBwb3J0XSkKLSAKLSAgIEFDX01TR19DSEVDS0lORyhmb3IgbW1hcCgpIHVzaW5nIC9kZXYvemVybyBzaGFyZWQgbWVtb3J5IHN1cHBvcnQpCi0tICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWwotLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0jaW5jbHVkZSA8c3lzL3dhaXQuaD4KLS0jaW5jbHVkZSA8c3lzL21tYW4uaD4KLS0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLS0jaW5jbHVkZSA8ZmNudGwuaD4KLS0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0tI2luY2x1ZGUgPHN0cmluZy5oPgogLQotLSNpZm5kZWYgTUFQX0ZBSUxFRAotLSMgZGVmaW5lIE1BUF9GQUlMRUQgKCh2b2lkKiktMSkKLS0jZW5kaWYKLS0KLS1pbnQgbWFpbigpIHsKLS0gIHBpZF90IHBpZDsKLS0gIGludCBzdGF0dXM7Ci0tICBpbnQgZmQ7Ci0tICBjaGFyICpzaG07Ci0tCi0tICBmZCA9IG9wZW4oIi9kZXYvemVybyIsIE9fUkRXUiwgU19JUlVTUiB8IFNfSVdVU1IpOwotLSAgaWYgKGZkID09IC0xKSB7Ci0tICAgIHJldHVybiAxOwotLSAgfQotLQotLSAgc2htID0gbW1hcChOVUxMLCA0MDk2LCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBmZCwgMCk7Ci0tICBpZiAoc2htID09IE1BUF9GQUlMRUQpIHsKLS0gICAgcmV0dXJuIDI7Ci0tICB9Ci0tCi0tICBzdHJjcHkoc2htLCAiaGVsbG8iKTsKLS0KLS0gIHBpZCA9IGZvcmsoKTsKLS0gIGlmIChwaWQgPCAwKSB7Ci0tICAgIHJldHVybiA1OwotLSAgfSBlbHNlIGlmIChwaWQgPT0gMCkgewotLSAgICBzdHJjcHkoc2htLCAiYnllIik7Ci0tICAgIHJldHVybiA2OwotLSAgfQotLSAgaWYgKHdhaXQoJnN0YXR1cykgIT0gcGlkKSB7Ci0tICAgIHJldHVybiA3OwotLSAgfQotLSAgaWYgKCFXSUZFWElURUQoc3RhdHVzKSB8fCBXRVhJVFNUQVRVUyhzdGF0dXMpICE9IDYpIHsKLS0gICAgcmV0dXJuIDg7Ci0tICB9Ci0tICBpZiAoc3RyY21wKHNobSwgImJ5ZSIpICE9IDApIHsKLS0gICAgcmV0dXJuIDk7Ci0tICB9Ci0tICByZXR1cm4gMDsKLS19Ci0tXV0pXSxbZG5sCi0tICAgIEFDX0RFRklORShIQVZFX1NITV9NTUFQX1pFUk8sIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgbW1hcCgiL2Rldi96ZXJvIikgU0hNIHN1cHBvcnRdKQotLSAgICBtc2c9eWVzXSxbbXNnPW5vXSxbbXNnPW5vXSkKLS0gIEFDX01TR19SRVNVTFQoWyRtc2ddKQotKyAgQUNfREVGSU5FKEhBVkVfU0hNX01NQVBfWkVSTywgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBtbWFwKCIvZGV2L3plcm8iKSBTSE0gc3VwcG9ydF0pCi0gCistICBQSFBfQ0hFQ0tfRlVOQ19MSUIoc2htX29wZW4sIHJ0KQogICAgQUNfTVNHX0NIRUNLSU5HKGZvciBtbWFwKCkgdXNpbmcgc2htX29wZW4oKSBzaGFyZWQgbWVtb3J5IHN1cHBvcnQpCiAtICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWwogLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTIzMCw3ICsxNzEsNyBAQAogLSAgY2hhciAqc2htOwogLSAgY2hhciB0bXBuYW1lWzQwOTZdOwogLQotLSAgc3ByaW50Zih0bXBuYW1lLCJ0ZXN0LnNobS4lZFhYWFhYWCIsIGdldHBpZCgpKTsKKy0gIHNwcmludGYodG1wbmFtZSwiL29wY2FjaGUudGVzdC5zaG0uJWRYWFhYWFgiLCBnZXRwaWQoKSk7CiAtICBpZiAobWt0ZW1wKHRtcG5hbWUpID09IE5VTEwpIHsKIC0gICAgcmV0dXJuIDE7CiAtICB9CkBAIC0yNzMsODAgKzIxNCwxNSBAQAogLX0KIC1dXSldLFtkbmwKIC0gICAgQUNfREVGSU5FKEhBVkVfU0hNX01NQVBfUE9TSVgsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgUE9TSVggbW1hcCgpIFNITSBzdXBwb3J0XSkKLS0gICAgbXNnPXllc10sW21zZz1ub10sW21zZz1ub10pCi0tICBBQ19NU0dfUkVTVUxUKFskbXNnXSkKKy0gICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKKy0gICAgUEhQX0NIRUNLX0xJQlJBUlkocnQsIHNobV91bmxpbmssIFtQSFBfQUREX0xJQlJBUlkocnQsMSxPUENBQ0hFX1NIQVJFRF9MSUJBREQpXSkKKy0gIF0sWworLSAgICBBQ19NU0dfUkVTVUxUKFtub10pCistICBdLFsKKy0gICAgQUNfTVNHX1JFU1VMVChbbm9dKQorLSAgXSkKICsgIEFDX0RFRklORShIQVZFX1NITV9NTUFQX1BPU0lYLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIFBPU0lYIG1tYXAoKSBTSE0gc3VwcG9ydF0pCiAgCi0gICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG1tYXAoKSB1c2luZyByZWd1bGFyIGZpbGUgc2hhcmVkIG1lbW9yeSBzdXBwb3J0KQotLSAgQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKLS0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tI2luY2x1ZGUgPHN5cy93YWl0Lmg+Ci0tI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0tI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0tI2luY2x1ZGUgPGZjbnRsLmg+Ci0tI2luY2x1ZGUgPHVuaXN0ZC5oPgotLSNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPHN0ZGlvLmg+Ci0tCi0tI2lmbmRlZiBNQVBfRkFJTEVECi0tIyBkZWZpbmUgTUFQX0ZBSUxFRCAoKHZvaWQqKS0xKQotLSNlbmRpZgotLQotLWludCBtYWluKCkgewotLSAgcGlkX3QgcGlkOwotLSAgaW50IHN0YXR1czsKLS0gIGludCBmZDsKLS0gIGNoYXIgKnNobTsKLS0gIGNoYXIgdG1wbmFtZVs0MDk2XTsKLS0KLS0gIHNwcmludGYodG1wbmFtZSwidGVzdC5zaG0uJWRYWFhYWFgiLCBnZXRwaWQoKSk7Ci0tICBpZiAobWt0ZW1wKHRtcG5hbWUpID09IE5VTEwpIHsKLS0gICAgcmV0dXJuIDE7Ci0tICB9Ci0tICBmZCA9IG9wZW4odG1wbmFtZSwgT19SRFdSIHwgT19DUkVBVCwgU19JUlVTUiB8IFNfSVdVU1IpOwotLSAgaWYgKGZkID09IC0xKSB7Ci0tICAgIHJldHVybiAyOwotLSAgfQotLSAgaWYgKGZ0cnVuY2F0ZShmZCwgNDA5NikgPCAwKSB7Ci0tICAgIGNsb3NlKGZkKTsKLS0gICAgdW5saW5rKHRtcG5hbWUpOwotLSAgICByZXR1cm4gMzsKLS0gIH0KLS0KLS0gIHNobSA9IG1tYXAoTlVMTCwgNDA5NiwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCwgZmQsIDApOwotLSAgaWYgKHNobSA9PSBNQVBfRkFJTEVEKSB7Ci0tICAgIHJldHVybiA0OwotLSAgfQotLSAgdW5saW5rKHRtcG5hbWUpOwotLSAgY2xvc2UoZmQpOwotLQotLSAgc3RyY3B5KHNobSwgImhlbGxvIik7Ci0tCi0tICBwaWQgPSBmb3JrKCk7Ci0tICBpZiAocGlkIDwgMCkgewotLSAgICByZXR1cm4gNTsKLS0gIH0gZWxzZSBpZiAocGlkID09IDApIHsKLS0gICAgc3RyY3B5KHNobSwgImJ5ZSIpOwotLSAgICByZXR1cm4gNjsKLS0gIH0KLS0gIGlmICh3YWl0KCZzdGF0dXMpICE9IHBpZCkgewotLSAgICByZXR1cm4gNzsKLS0gIH0KLS0gIGlmICghV0lGRVhJVEVEKHN0YXR1cykgfHwgV0VYSVRTVEFUVVMoc3RhdHVzKSAhPSA2KSB7Ci0tICAgIHJldHVybiA4OwotLSAgfQotLSAgaWYgKHN0cmNtcChzaG0sICJieWUiKSAhPSAwKSB7Ci0tICAgIHJldHVybiA5OwotLSAgfQotLSAgcmV0dXJuIDA7Ci0tfQotLV1dKV0sW2RubAotLSAgICBBQ19ERUZJTkUoSEFWRV9TSE1fTU1BUF9GSUxFLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIG1tYXAoKSBTSE0gc3VwcG9ydF0pCi0tICAgIG1zZz15ZXNdLFttc2c9bm9dLFttc2c9bm9dKQotLSAgQUNfTVNHX1JFU1VMVChbJG1zZ10pCi0rICBBQ19ERUZJTkUoSEFWRV9TSE1fTU1BUF9GSUxFLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIG1tYXAoKSBTSE0gc3VwcG9ydF0pCi0gCiAgICBQSFBfTkVXX0VYVEVOU0lPTihvcGNhY2hlLAogIAlaZW5kQWNjZWxlcmF0b3IuYyBcCiAtLSAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtcGhwLWRvbi10LXVzZS1icm9rZW4td3JhcHBlci1mb3ItbWtkaXIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDAxLXBocC1kb24tdC11c2UtYnJva2VuLXdyYXBwZXItZm9yLW1rZGlyLnBhdGNoCmluZGV4IDJmN2Q1ODEuLmQ2ODczNzMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtcGhwLWRvbi10LXVzZS1icm9rZW4td3JhcHBlci1mb3ItbWtkaXIucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1waHAtZG9uLXQtdXNlLWJyb2tlbi13cmFwcGVyLWZvci1ta2Rpci5wYXRjaApAQCAtNCwxNyArNCwyMCBAQAogU3ViamVjdDogW1BBVENIIDIvOF0gcGhwOiBkb24ndCB1c2UgYnJva2VuIHdyYXBwZXIgZm9yIG1rZGlyCiAKIFNpZ25lZC1vZmYtYnk6IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+CisKK3VwZGF0ZSBwYXRjaCB0byB2ZXJzaW9uIDcuNC40CitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgogLS0tCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogCi0gTWFrZWZpbGUuZ2xvYmFsIHwgMiArLQorIGJ1aWxkL01ha2VmaWxlLmdsb2JhbCB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmdsb2JhbCBiL01ha2VmaWxlLmdsb2JhbAorZGlmZiAtLWdpdCBhL2J1aWxkL01ha2VmaWxlLmdsb2JhbCBiL2J1aWxkL01ha2VmaWxlLmdsb2JhbAogaW5kZXggZmY4NThjMi4uYWU1NTRiNCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmdsb2JhbAotKysrIGIvTWFrZWZpbGUuZ2xvYmFsCistLS0gYS9idWlsZC9NYWtlZmlsZS5nbG9iYWwKKysrKyBiL2J1aWxkL01ha2VmaWxlLmdsb2JhbAogQEAgLTEsNCArMSw0IEBACiAtbWtpbnN0YWxsZGlycyA9ICQodG9wX3NyY2RpcikvYnVpbGQvc2h0b29sIG1rZGlyIC1wCiArbWtpbnN0YWxsZGlycyA9IG1rZGlyIC1wCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDAxLXBocC5tNC1kb24tdC11bnNldC1jYWNoZS12YXJpYWJsZXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDAxLXBocC5tNC1kb24tdC11bnNldC1jYWNoZS12YXJpYWJsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ3MjFlYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtcGhwLm00LWRvbi10LXVuc2V0LWNhY2hlLXZhcmlhYmxlcy5wYXRjaApAQCAtMCwwICsxLDM5IEBACitwaHAubTQ6IGRvbid0IHVuc2V0IGNhY2hlIHZhcmlhYmxlcworCitVbnNldHRpbmcgcHJldmVudHMgY2FjaGUgdmFyaWFibGUgZnJvbSBiZWluZyBwYXNzZWQgdG8gY29uZmlndXJlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLXNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorCit1cGRhdGUgdGhpcyBwYXRjaCB0byA3LjQuNCwgYWNpbmNsdWRlLm00IG1vdmUgdG8gYnVpbGQvcGhwLm00CitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgYnVpbGQvcGhwLm00IHwgNCAtLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9idWlsZC9waHAubTQgYi9idWlsZC9waHAubTQKK2luZGV4IDVjNDVkMTMuLjIxOGVjNDcgMTAwNjQ0CistLS0gYS9idWlsZC9waHAubTQKKysrKyBiL2J1aWxkL3BocC5tNAorQEAgLTE1ODcsOCArMTU4Nyw2IEBAIGRubCBQSFBfQ0hFQ0tfRlVOQ19MSUIKKyBkbmwKKyBBQ19ERUZVTihbUEhQX0NIRUNLX0ZVTkNfTElCXSxbCisgICBpZmVsc2UoJDIsLDosWworLSAgdW5zZXQgYWNfY3ZfbGliXyQyW11fJDEKKy0gIHVuc2V0IGFjX2N2X2xpYl8kMltdX19fJDEKKyAgIHVuc2V0IGZvdW5kCisgICBBQ19DSEVDS19MSUIoJDIsICQxLCBbZm91bmQ9eWVzXSwgWworICAgICBBQ19DSEVDS19MSUIoJDIsIF9fJDEsIFtmb3VuZD15ZXNdLCBbZm91bmQ9bm9dKQorQEAgLTE2MjAsOCArMTYxOCw2IEBAIGRubCBhbmQgYXMgYSBmYWxsIGJhY2sgaW4gdGhlIHNwZWNpZmllZCBsaWJyYXJ5LiBEZWZpbmVzIEhBVkVfZnVuYyBhbmQKKyBkbmwgSEFWRV9saWJyYXJ5IGlmIGZvdW5kIGFuZCBhZGRzIHRoZSBsaWJyYXJ5IHRvIExJQlMuCisgZG5sCisgQUNfREVGVU4oW1BIUF9DSEVDS19GVU5DXSxbCistICB1bnNldCBhY19jdl9mdW5jXyQxCistICB1bnNldCBhY19jdl9mdW5jX19fJDEKKyAgIHVuc2V0IGZvdW5kCisgCisgICBBQ19DSEVDS19GVU5DKCQxLCBbZm91bmQ9eWVzXSxbIEFDX0NIRUNLX0ZVTkMoX18kMSxbZm91bmQ9eWVzXSxbZm91bmQ9bm9dKSBdKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDQ4LVVzZS1wa2ctY29uZmlnLWZvci1GcmVlVHlwZTItZGV0ZWN0aW9uLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDA0OC1Vc2UtcGtnLWNvbmZpZy1mb3ItRnJlZVR5cGUyLWRldGVjdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM2ZGRhYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDQ4LVVzZS1wa2ctY29uZmlnLWZvci1GcmVlVHlwZTItZGV0ZWN0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbTogPT91dGYtOD9iP1QyNWt4WmxsYWlCVGRYTER2UT09Pz0gPG9uZHJlakBzdXJ5Lm9yZz4KLURhdGU6IE1vbiwgMjIgT2N0IDIwMTggMDY6NTQ6MzEgKzAwMDAKLVN1YmplY3Q6IFVzZSBwa2ctY29uZmlnIGZvciBGcmVlVHlwZTIgZGV0ZWN0aW9uCi0KLS0tLQotIGV4dC9nZC9jb25maWcubTQgfCAzMCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9leHQvZ2QvY29uZmlnLm00IGIvZXh0L2dkL2NvbmZpZy5tNAotaW5kZXggNDk4ZDg3MC4uZDI4YzZhZSAxMDA2NDQKLS0tLSBhL2V4dC9nZC9jb25maWcubTQKLSsrKyBiL2V4dC9nZC9jb25maWcubTQKLUBAIC0xODQsMjEgKzE4NCwyOSBAQCBBQ19ERUZVTihbUEhQX0dEX1hQTV0sWwotIEFDX0RFRlVOKFtQSFBfR0RfRlJFRVRZUEUyXSxbCi0gICBpZiB0ZXN0ICIkUEhQX0ZSRUVUWVBFX0RJUiIgIT0gIm5vIjsgdGhlbgotIAotLSAgICBmb3IgaSBpbiAkUEhQX0ZSRUVUWVBFX0RJUiAvdXNyL2xvY2FsIC91c3I7IGRvCi0tICAgICAgaWYgdGVzdCAtZiAiJGkvYmluL2ZyZWV0eXBlLWNvbmZpZyI7IHRoZW4KLS0gICAgICAgIEZSRUVUWVBFMl9ESVI9JGkKLS0gICAgICAgIEZSRUVUWVBFMl9DT05GSUc9IiRpL2Jpbi9mcmVldHlwZS1jb25maWciCi0tICAgICAgICBicmVhawotKyAgICBpZiB0ZXN0IC16ICIkUEtHX0NPTkZJRyI7IHRoZW4KLSsgICAgICBBQ19QQVRIX1BST0coUEtHX0NPTkZJRywgcGtnLWNvbmZpZywgbm8pCi0rICAgIGZpCi0rICAgIGlmIHRlc3QgLXggIiRQS0dfQ09ORklHIiAmJiAkUEtHX0NPTkZJRyAtLWV4aXN0cyBmcmVldHlwZTIgOyB0aGVuCi0rICAgICAgRlJFRVRZUEUyX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3MgZnJlZXR5cGUyYAotKyAgICAgIEZSRUVUWVBFMl9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgZnJlZXR5cGUyYAotKyAgICBlbHNlCi0rICAgICAgZm9yIGkgaW4gJFBIUF9GUkVFVFlQRV9ESVIgL3Vzci9sb2NhbCAvdXNyOyBkbwotKyAgICAgICAgaWYgdGVzdCAtZiAiJGkvYmluL2ZyZWV0eXBlLWNvbmZpZyI7IHRoZW4KLSsgICAgICAgICAgRlJFRVRZUEUyX0RJUj0kaQotKyAgICAgICAgICBGUkVFVFlQRTJfQ09ORklHPSIkaS9iaW4vZnJlZXR5cGUtY29uZmlnIgotKyAgICAgICAgICBicmVhawotKyAgICAgICAgZmkKLSsgICAgICBkb25lCi0rCi0rICAgICAgaWYgdGVzdCAteiAiJEZSRUVUWVBFMl9ESVIiOyB0aGVuCi0rICAgICAgICBBQ19NU0dfRVJST1IoW2ZyZWV0eXBlLWNvbmZpZyBub3QgZm91bmQuXSkKLSAgICAgICBmaQotLSAgICBkb25lCi0gCi0tICAgIGlmIHRlc3QgLXogIiRGUkVFVFlQRTJfRElSIjsgdGhlbgotLSAgICAgIEFDX01TR19FUlJPUihbZnJlZXR5cGUtY29uZmlnIG5vdCBmb3VuZC5dKQotKyAgICAgIEZSRUVUWVBFMl9DRkxBR1M9YCRGUkVFVFlQRTJfQ09ORklHIC0tY2ZsYWdzYAotKyAgICAgIEZSRUVUWVBFMl9MSUJTPWAkRlJFRVRZUEUyX0NPTkZJRyAtLWxpYnNgCi0gICAgIGZpCi0gCi0tICAgIEZSRUVUWVBFMl9DRkxBR1M9YCRGUkVFVFlQRTJfQ09ORklHIC0tY2ZsYWdzYAotLSAgICBGUkVFVFlQRTJfTElCUz1gJEZSRUVUWVBFMl9DT05GSUcgLS1saWJzYAotLQotICAgICBQSFBfRVZBTF9JTkNMSU5FKCRGUkVFVFlQRTJfQ0ZMQUdTKQotICAgICBQSFBfRVZBTF9MSUJMSU5FKCRGUkVFVFlQRTJfTElCUywgR0RfU0hBUkVEX0xJQkFERCkKLSAgICAgQUNfREVGSU5FKEhBVkVfTElCRlJFRVRZUEUsMSxbIF0pCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC83MF9tb2RfcGhwNS5jb25mIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvNzBfbW9kX3BocDUuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRlNmZiMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC83MF9tb2RfcGhwNS5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotIyB2aW06IGZ0PWFwYWNoZSBzdz00IHRzPTQKLTxJZkRlZmluZSBQSFA1PgotCSMgTG9hZCB0aGUgbW9kdWxlIGZpcnN0Ci0JPElmTW9kdWxlICFzYXBpX2FwYWNoZTIuYz4KLQkJTG9hZE1vZHVsZSBwaHA1X21vZHVsZSAgICBsaWIvYXBhY2hlMi9tb2R1bGVzL2xpYnBocDUuc28KLQk8L0lmTW9kdWxlPgotCi0JIyBTZXQgaXQgdG8gaGFuZGxlIHRoZSBmaWxlcwotCUFkZEhhbmRsZXIgcGhwNS1zY3JpcHQgLnBocCAucGh0bWwgLnBocDMgLnBocDQgLnBocDUKLQlBZGRUeXBlIGFwcGxpY2F0aW9uL3gtaHR0cGQtcGhwLXNvdXJjZSAucGhwcwotCURpcmVjdG9yeUluZGV4IGluZGV4Lmh0bWwgaW5kZXguaHRtbC52YXIgaW5kZXgucGhwIGluZGV4LnBodG1sCi08L0lmRGVmaW5lPgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvQ1ZFLTIwMTktNjk3OC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL0NWRS0yMDE5LTY5NzgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3Y2RmZDkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvQ1ZFLTIwMTktNjk3OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5MiArMCwwIEBACi1Gcm9tIDA4OWY3YzBiYzI4ZDM5OWIwNDIwYWE2ZWYwNThlNGMxYzEyMGIyYWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiQ2hyaXN0b3BoIE0uIEJlY2tlciIgPGNtYmVja2VyNjlAZ214LmRlPgotRGF0ZTogU2F0LCAxOSBKYW4gMjAxOSAxMDozNTozOSArMDEwMAotU3ViamVjdDogW1BBVENIXSBTeW5jIHdpdGggdXBzdHJlYW0KLQotRXZlbiB0aG91Z2ggbGliZ2QvbGliZ2QjNDkyIGlzIG5vdCBhIHJlbGV2YW50IGJ1ZyBmaXggZm9yIFBIUCwgc2luY2UKLXRoZSBiaW5kaW5nIGRvZXNuJ3QgdXNlIHRoZSBgZ2RJbWFnZSpQdHIoKWAgZnVuY3Rpb25zIGF0IGFsbCwgd2UncmUKLXBvcnRpbmcgdGhlIGZpeCB0byBzdGF5IGluIHN5bmMgaGVyZS4KLS0tLQotIGV4dC9nZC9saWJnZC9nZF9naWZfb3V0LmMgfCAyMCArKysrKysrKysrKysrKysrKy0tLQotIGV4dC9nZC9saWJnZC9nZF9qcGVnLmMgICAgfCAxNyArKysrKysrKysrKysrKy0tLQotIGV4dC9nZC9saWJnZC9nZF93Ym1wLmMgICAgfCAxOCArKysrKysrKysrKysrKystLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHA6Ly9naXQucGhwLm5ldC8/cD1waHAtc3JjLmdpdDthPWNvbW1pdDtoPTA4OWY3YzBiYzI4ZDM5OWIwNDIwYWE2ZWYwNThlNGMxYzEyMGIyYWVdCi1DVkU6IENWRS0yMDE5LTY5NzgKLQotU2lnbmVkLW9mZi1ieTogVHJldm9yIEdhbWJsaW4gPHRyZXZvci5nYW1ibGluQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9leHQvZ2QvbGliZ2QvZ2RfZ2lmX291dC5jIGIvZXh0L2dkL2xpYmdkL2dkX2dpZl9vdXQuYwotaW5kZXggMWYyYTZiOTM2YS4uMmUxZjM4YWY3MCAxMDA2NDQKLS0tLSBhL2V4dC9nZC9saWJnZC9nZF9naWZfb3V0LmMKLSsrKyBiL2V4dC9nZC9saWJnZC9nZF9naWZfb3V0LmMKLUBAIC05NywxMiArOTcsMTggQEAgc3RhdGljIHZvaWQgY2xfaGFzaCAocmVnaXN0ZXIgY291bnRfaW50IGNoc2l6ZSwgR2lmQ3R4ICpjdHgpOwotIHN0YXRpYyB2b2lkIGNoYXJfaW5pdCAoR2lmQ3R4ICpjdHgpOwotIHN0YXRpYyB2b2lkIGNoYXJfb3V0IChpbnQgYywgR2lmQ3R4ICpjdHgpOwotIHN0YXRpYyB2b2lkIGZsdXNoX2NoYXIgKEdpZkN0eCAqY3R4KTsKLSsKLStzdGF0aWMgaW50IF9nZEltYWdlR2lmQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHhQdHIgb3V0KTsKLSsKLSB2b2lkICogZ2RJbWFnZUdpZlB0ciAoZ2RJbWFnZVB0ciBpbSwgaW50ICpzaXplKQotIHsKLSAgIHZvaWQgKnJ2OwotICAgZ2RJT0N0eCAqb3V0ID0gZ2ROZXdEeW5hbWljQ3R4ICgyMDQ4LCBOVUxMKTsKLS0gIGdkSW1hZ2VHaWZDdHggKGltLCBvdXQpOwotLSAgcnYgPSBnZERQRXh0cmFjdERhdGEgKG91dCwgc2l6ZSk7Ci0rCWlmICghX2dkSW1hZ2VHaWZDdHgoaW0sIG91dCkpIHsKLSsJCXJ2ID0gZ2REUEV4dHJhY3REYXRhKG91dCwgc2l6ZSk7Ci0rCX0gZWxzZSB7Ci0rCQlydiA9IE5VTEw7Ci0rCX0KLSAgIG91dC0+Z2RfZnJlZSAob3V0KTsKLSAgIHJldHVybiBydjsKLSB9Ci1AQCAtMTE1LDYgKzEyMSwxMiBAQCB2b2lkIGdkSW1hZ2VHaWYgKGdkSW1hZ2VQdHIgaW0sIEZJTEUgKiBvdXRGaWxlKQotIH0KLSAKLSB2b2lkIGdkSW1hZ2VHaWZDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQpCi0rewotKwlfZ2RJbWFnZUdpZkN0eChpbSwgb3V0KTsKLSt9Ci0rCi0rLyogcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIDEgb24gZmFpbHVyZSAqLwotK3N0YXRpYyBpbnQgX2dkSW1hZ2VHaWZDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQpCi0gewotIAlnZEltYWdlUHRyIHBpbSA9IDAsIHRpbSA9IGltOwotIAlpbnQgaW50ZXJsYWNlLCBCaXRzUGVyUGl4ZWw7Ci1AQCAtMTI1LDcgKzEzNyw3IEBAIHZvaWQgZ2RJbWFnZUdpZkN0eChnZEltYWdlUHRyIGltLCBnZElPQ3R4UHRyIG91dCkKLSAJCQliYXNlZCB0ZW1wb3JhcnkgaW1hZ2UuICovCi0gCQlwaW0gPSBnZEltYWdlQ3JlYXRlUGFsZXR0ZUZyb21UcnVlQ29sb3IoaW0sIDEsIDI1Nik7Ci0gCQlpZiAoIXBpbSkgewotLQkJCXJldHVybjsKLSsJCQlyZXR1cm4gMTsKLSAJCX0KLSAJCXRpbSA9IHBpbTsKLSAJfQotQEAgLTEzOCw2ICsxNTAsOCBAQCB2b2lkIGdkSW1hZ2VHaWZDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQpCi0gCQkvKiBEZXN0cm95IHBhbGV0dGUgYmFzZWQgdGVtcG9yYXJ5IGltYWdlLiAqLwotIAkJZ2RJbWFnZURlc3Ryb3koCXBpbSk7Ci0gCX0KLSsKLSsgICAgcmV0dXJuIDA7Ci0gfQotIAotIHN0YXRpYyBpbnQKLWRpZmYgLS1naXQgYS9leHQvZ2QvbGliZ2QvZ2RfanBlZy5jIGIvZXh0L2dkL2xpYmdkL2dkX2pwZWcuYwotaW5kZXggOGNmNzFmY2JjOS4uZWY0NmM0YTIyYyAxMDA2NDQKLS0tLSBhL2V4dC9nZC9saWJnZC9nZF9qcGVnLmMKLSsrKyBiL2V4dC9nZC9saWJnZC9nZF9qcGVnLmMKLUBAIC0xMzIsNiArMTMyLDcgQEAgY29uc3QgY2hhciAqIGdkSnBlZ0dldFZlcnNpb25TdHJpbmcoKQotIAl9Ci0gfQotIAotK3N0YXRpYyBpbnQgX2dkSW1hZ2VKcGVnQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHggKm91dGZpbGUsIGludCBxdWFsaXR5KTsKLSAKLSAvKgotICAqIFdyaXRlIElNIHRvIE9VVEZJTEUgYXMgYSBKRklGLWZvcm1hdHRlZCBKUEVHIGltYWdlLCB1c2luZyBxdWFsaXR5Ci1AQCAtMTUzLDggKzE1NCwxMSBAQCB2b2lkICpnZEltYWdlSnBlZ1B0ciAoZ2RJbWFnZVB0ciBpbSwgaW50ICpzaXplLCBpbnQgcXVhbGl0eSkKLSB7Ci0gCXZvaWQgKnJ2OwotIAlnZElPQ3R4ICpvdXQgPSBnZE5ld0R5bmFtaWNDdHggKDIwNDgsIE5VTEwpOwotLQlnZEltYWdlSnBlZ0N0eCAoaW0sIG91dCwgcXVhbGl0eSk7Ci0tCXJ2ID0gZ2REUEV4dHJhY3REYXRhIChvdXQsIHNpemUpOwotKwlpZiAoIV9nZEltYWdlSnBlZ0N0eChpbSwgb3V0LCBxdWFsaXR5KSkgewotKwkJcnYgPSBnZERQRXh0cmFjdERhdGEob3V0LCBzaXplKTsKLSsJfSBlbHNlIHsKLSsJCXJ2ID0gTlVMTDsKLSsJfQotIAlvdXQtPmdkX2ZyZWUgKG91dCk7Ci0gCi0gCXJldHVybiBydjsKLUBAIC0xNjMsNiArMTY3LDEyIEBAIHZvaWQgKmdkSW1hZ2VKcGVnUHRyIChnZEltYWdlUHRyIGltLCBpbnQgKnNpemUsIGludCBxdWFsaXR5KQotIHZvaWQganBlZ19nZElPQ3R4X2Rlc3QgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBnZElPQ3R4ICogb3V0ZmlsZSk7Ci0gCi0gdm9pZCBnZEltYWdlSnBlZ0N0eCAoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eCAqIG91dGZpbGUsIGludCBxdWFsaXR5KQotK3sKLSsJX2dkSW1hZ2VKcGVnQ3R4KGltLCBvdXRmaWxlLCBxdWFsaXR5KTsKLSt9Ci0rCi0rLyogcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIDEgb24gZmFpbHVyZSAqLwotK3N0YXRpYyBpbnQgX2dkSW1hZ2VKcGVnQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHggKm91dGZpbGUsIGludCBxdWFsaXR5KQotIHsKLSAJc3RydWN0IGpwZWdfY29tcHJlc3Nfc3RydWN0IGNpbmZvOwotIAlzdHJ1Y3QganBlZ19lcnJvcl9tZ3IgamVycjsKLUBAIC0xODQsNyArMTk0LDcgQEAgdm9pZCBnZEltYWdlSnBlZ0N0eCAoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eCAqIG91dGZpbGUsIGludCBxdWFsaXR5KQotIAkJaWYgKHJvdykgewotIAkJCWdkRnJlZSAocm93KTsKLSAJCX0KLS0JCXJldHVybjsKLSsJCXJldHVybiAxOwotIAl9Ci0gCi0gCWNpbmZvLmVyci0+ZXJyb3JfZXhpdCA9IGZhdGFsX2pwZWdfZXJyb3I7Ci1AQCAtMjc3LDYgKzI4Nyw3IEBAIHZvaWQgZ2RJbWFnZUpwZWdDdHggKGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHggKiBvdXRmaWxlLCBpbnQgcXVhbGl0eSkKLSAJanBlZ19maW5pc2hfY29tcHJlc3MgKCZjaW5mbyk7Ci0gCWpwZWdfZGVzdHJveV9jb21wcmVzcyAoJmNpbmZvKTsKLSAJZ2RGcmVlIChyb3cpOwotKwlyZXR1cm4gMDsKLSB9Ci0gCi0gZ2RJbWFnZVB0ciBnZEltYWdlQ3JlYXRlRnJvbUpwZWcgKEZJTEUgKiBpbkZpbGUpCi1kaWZmIC0tZ2l0IGEvZXh0L2dkL2xpYmdkL2dkX3dibXAuYyBiL2V4dC9nZC9saWJnZC9nZF93Ym1wLmMKLWluZGV4IDU1Y2VkMzQ0M2QuLmZkOWVkYWQyY2EgMTAwNjQ0Ci0tLS0gYS9leHQvZ2QvbGliZ2QvZ2Rfd2JtcC5jCi0rKysgYi9leHQvZ2QvbGliZ2QvZ2Rfd2JtcC5jCi1AQCAtODIsNiArODIsNyBAQCBpbnQgZ2RfZ2V0aW4gKHZvaWQgKmluKQotIAlyZXR1cm4gKGdkR2V0QygoZ2RJT0N0eCAqKSBpbikpOwotIH0KLSAKLStzdGF0aWMgaW50IF9nZEltYWdlV0JNUEN0eChnZEltYWdlUHRyIGltYWdlLCBpbnQgZmcsIGdkSU9DdHggKm91dCk7Ci0gCi0gLyogICAgICBnZEltYWdlV0JNUEN0eAotICAgICoqICAtLS0tLS0tLS0tLS0tLQotQEAgLTkzLDYgKzk0LDEyIEBAIGludCBnZF9nZXRpbiAodm9pZCAqaW4pCi0gICAgKiogIG91dDogICAgdGhlIHN0cmVhbSB3aGVyZSB0byB3cml0ZQotICAqLwotIHZvaWQgZ2RJbWFnZVdCTVBDdHggKGdkSW1hZ2VQdHIgaW1hZ2UsIGludCBmZywgZ2RJT0N0eCAqIG91dCkKLSt7Ci0rCV9nZEltYWdlV0JNUEN0eChpbWFnZSwgZmcsIG91dCk7Ci0rfQotKwotKy8qIHJldHVybnMgMCBvbiBzdWNjZXNzLCAxIG9uIGZhaWx1cmUgKi8KLStzdGF0aWMgaW50IF9nZEltYWdlV0JNUEN0eChnZEltYWdlUHRyIGltYWdlLCBpbnQgZmcsIGdkSU9DdHggKm91dCkKLSB7Ci0gCWludCB4LCB5LCBwb3M7Ci0gCVdibXAgKndibXA7Ci1AQCAtMTAwLDcgKzEwNyw3IEBAIHZvaWQgZ2RJbWFnZVdCTVBDdHggKGdkSW1hZ2VQdHIgaW1hZ2UsIGludCBmZywgZ2RJT0N0eCAqIG91dCkKLSAJLyogY3JlYXRlIHRoZSBXQk1QICovCi0gCWlmICgod2JtcCA9IGNyZWF0ZXdibXAgKGdkSW1hZ2VTWCAoaW1hZ2UpLCBnZEltYWdlU1kgKGltYWdlKSwgV0JNUF9XSElURSkpID09IE5VTEwpIHsKLSAJCWdkX2Vycm9yKCJDb3VsZCBub3QgY3JlYXRlIFdCTVAiKTsKLS0JCXJldHVybjsKLSsJCXJldHVybiAxOwotIAl9Ci0gCi0gCS8qIGZpbGwgdXAgdGhlIFdCTVAgc3RydWN0dXJlICovCi1AQCAtMTE2LDcgKzEyMyw5IEBAIHZvaWQgZ2RJbWFnZVdCTVBDdHggKGdkSW1hZ2VQdHIgaW1hZ2UsIGludCBmZywgZ2RJT0N0eCAqIG91dCkKLSAKLSAJLyogd3JpdGUgdGhlIFdCTVAgdG8gYSBnZCBmaWxlIGRlc2NyaXB0b3IgKi8KLSAJaWYgKHdyaXRld2JtcCAod2JtcCwgJmdkX3B1dG91dCwgb3V0KSkgewotKwkJZnJlZXdibXAod2JtcCk7Ci0gCQlnZF9lcnJvcigiQ291bGQgbm90IHNhdmUgV0JNUCIpOwotKwkJcmV0dXJuIDE7Ci0gCX0KLSAJLyogZGVzIHN1Ym1pdHRlZCB0aGlzIGJ1Z2ZpeDogZ2RGcmVlIHRoZSBtZW1vcnkuICovCi0gCWZyZWV3Ym1wKHdibXApOwotQEAgLTIwNCw4ICsyMTMsMTEgQEAgdm9pZCAqIGdkSW1hZ2VXQk1QUHRyIChnZEltYWdlUHRyIGltLCBpbnQgKnNpemUsIGludCBmZykKLSB7Ci0gCXZvaWQgKnJ2OwotIAlnZElPQ3R4ICpvdXQgPSBnZE5ld0R5bmFtaWNDdHgoMjA0OCwgTlVMTCk7Ci0tCWdkSW1hZ2VXQk1QQ3R4KGltLCBmZywgb3V0KTsKLS0JcnYgPSBnZERQRXh0cmFjdERhdGEob3V0LCBzaXplKTsKLSsJaWYgKCFfZ2RJbWFnZVdCTVBDdHgoaW0sIGZnLCBvdXQpKSB7Ci0rCQlydiA9IGdkRFBFeHRyYWN0RGF0YShvdXQsIHNpemUpOwotKwl9IGVsc2UgewotKwkJcnYgPSBOVUxMOwotKwl9Ci0gCW91dC0+Z2RfZnJlZShvdXQpOwotIAotIAlyZXR1cm4gcnY7Ci0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9pY29udi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL2ljb252LnBhdGNoCmluZGV4IGVjZjdkODcuLjllYzhhODkgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL2ljb252LnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL2ljb252LnBhdGNoCkBAIC0xLDMyICsxLDMzIEBACi1Gcm9tIDE3Y2M1NjQ1ZjNhY2Y5NDNhNWEwNjQ2NWQwOWQwZWJjZmVhOTg3YmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotRGF0ZTogV2VkLCAyIE5vdiAyMDExIDE2OjU0OjU3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZworU3ViamVjdDogW1BBVENIXSBGcm9tIDE3Y2M1NjQ1ZjNhY2Y5NDNhNWEwNjQ2NWQwOWQwZWJjZmVhOTg3YmQgTW9uIFNlcCAxNworIDAwOjAwOjAwIDIwMDEgRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4gRGF0ZTogV2VkLCAyIE5vdgorIDIwMTEgMTY6NTQ6NTcgKzAxMDAgU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAordXBkYXRlIHBhdGNoIHRvIHZlcnNpb24gNy40LjQKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CiAtLS0KLSBhY2luY2x1ZGUubTQgICAgICAgIHwgMyArKy0KKyBidWlsZC9waHAubTQgICAgICAgIHwgMyArKy0KICBleHQvaWNvbnYvY29uZmlnLm00IHwgMiArLQogIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvYWNpbmNsdWRlLm00IGIvYWNpbmNsdWRlLm00Ci1pbmRleCBkMzI3NjZhLi5hZDUxNjZlIDEwMDY0NAotLS0tIGEvYWNpbmNsdWRlLm00Ci0rKysgYi9hY2luY2x1ZGUubTQKLUBAIC0yNDQ1LDcgKzI0NDUsOCBAQCBBQ19ERUZVTihbUEhQX1NFVFVQX0lDT05WXSwgWwotICAgZG5sIENoZWNrIGxpYmMgZmlyc3QgaWYgbm8gcGF0aCBpcyBwcm92aWRlZCBpbiAtLXdpdGgtaWNvbnYKLSAgIGRubAorZGlmZiAtLWdpdCBhL2J1aWxkL3BocC5tNCBiL2J1aWxkL3BocC5tNAoraW5kZXggNzM5Mjg3Ni4uNWM0NWQxMyAxMDA2NDQKKy0tLSBhL2J1aWxkL3BocC5tNAorKysrIGIvYnVpbGQvcGhwLm00CitAQCAtMTk1MCw3ICsxOTUwLDggQEAgQUNfREVGVU4oW1BIUF9TRVRVUF9JQ09OVl0sIFsKKyAgIGVjaG8gPiBleHQvaWNvbnYvcGhwX2ljb252X3N1cHBvcnRzX2Vycm5vLmgKICAKKyAgIGRubCBDaGVjayBsaWJjIGZpcnN0IGlmIG5vIHBhdGggaXMgcHJvdmlkZWQgaW4gLS13aXRoLWljb252LgogLSAgaWYgdGVzdCAiJFBIUF9JQ09OViIgPSAieWVzIjsgdGhlbgogKyAgZG5sIG11c3QgY2hlY2sgYWdhaW5zdCBubywgbm90IGFnYWluc3QgeWVzIGFzIFBIUF9JQ09OViBjYW4gYWxzbyBpbmNsdWRlIGEgcGF0aCwgd2hpY2ggaW1wbGllcyB5ZXMKICsgIGlmIHRlc3QgIiRQSFBfSUNPTlYiICE9ICJubyI7IHRoZW4KLSAgICAgZG5sIFJlc2V0IExJQlMgdGVtcG9yYXJpbHkgYXMgaXQgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIGluY2x1ZGVkCi0gICAgIGRubCAtbGljb252IGluLgorICAgICBkbmwgUmVzZXQgTElCUyB0ZW1wb3JhcmlseSBhcyBpdCBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gaW5jbHVkZWQgLWxpY29udiBpbi4KICAgICAgTElCU19zYXZlPSIkTElCUyIKKyAgICAgTElCUz0KIGRpZmYgLS1naXQgYS9leHQvaWNvbnYvY29uZmlnLm00IGIvZXh0L2ljb252L2NvbmZpZy5tNAotaW5kZXggNmEwNTY5Ny4uOTczZTc1MCAxMDA2NDQKK2luZGV4IGZlOWI0N2EuLmI2YjYzMmYgMTAwNjQ0CiAtLS0gYS9leHQvaWNvbnYvY29uZmlnLm00CiArKysgYi9leHQvaWNvbnYvY29uZmlnLm00Ci1AQCAtMTUsNyArMTUsNyBAQCBpZiB0ZXN0ICIkUEhQX0lDT05WIiAhPSAibm8iOyB0aGVuCitAQCAtMTQsNyArMTQsNyBAQCBpZiB0ZXN0ICIkUEhQX0lDT05WIiAhPSAibm8iOyB0aGVuCiAgCiAgICBpZiB0ZXN0ICIkaWNvbnZfYXZhaWwiICE9ICJubyI7IHRoZW4KICAgICAgaWYgdGVzdCAteiAiJElDT05WX0RJUiI7IHRoZW4KQEAgLTM1LDMgKzM2LDYgQEAKICAgICAgICAgIGlmIHRlc3QgLWYgIiRpL2luY2x1ZGUvaWNvbnYuaCIgfHwgdGVzdCAtZiAiJGkvaW5jbHVkZS9naWNvbnYuaCI7IHRoZW4KICAgICAgICAgICAgUEhQX0lDT05WX1BSRUZJWD0iJGkiCiAgICAgICAgICAgIGJyZWFrCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL2ltYXAtZml4LWF1dG9mb28ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9pbWFwLWZpeC1hdXRvZm9vLnBhdGNoCmluZGV4IDE2MzU5YWYuLmViZTVmNmEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL2ltYXAtZml4LWF1dG9mb28ucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvaW1hcC1maXgtYXV0b2Zvby5wYXRjaApAQCAtMSwzMiArMSwxOSBAQAotRnJvbSBjMDg0YzgzNDlkMTc4MDk4MGUyMzJjYjI4YjYwYTEwOWUzZDg5NDM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KLURhdGU6IFdlZCwgMiBOb3YgMjAxMSAxNjo1NDo1NyArMDEwMAotU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1N1YmplY3Q6IFtQQVRDSF0gRnJvbSBjMDg0YzgzNDlkMTc4MDk4MGUyMzJjYjI4YjYwYTEwOWUzZDg5NDM4IE1vbiBTZXAgMTcKKyAwMDowMDowMCAyMDAxIEZyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+IERhdGU6IFdlZCwgMiBOb3YKKyAyMDExIDE2OjU0OjU3ICswMTAwIFN1YmplY3Q6IFtQQVRDSF0gVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKK3VwZGF0ZSBwYXRjaCB0byB2ZXJzaW9uIDcuNC40CitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgogLS0tCi0gYWNpbmNsdWRlLm00ICAgICAgIHwgIDIgKy0KICBleHQvaW1hcC9jb25maWcubTQgfCAxMCArKy0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2FjaW5jbHVkZS5tNCBiL2FjaW5jbHVkZS5tNAotaW5kZXggYWQ1MTY2ZS4uZjZhNTVlYyAxMDA2NDQKLS0tLSBhL2FjaW5jbHVkZS5tNAotKysrIGIvYWNpbmNsdWRlLm00Ci1AQCAtMjM1MCw3ICsyMzUwLDcgQEAgQUNfREVGVU4oW1BIUF9TRVRVUF9PUEVOU1NMXSxbCi0gICAgICAgUEhQX09QRU5TU0xfRElSPSIvdXNyL2xvY2FsL3NzbCAvdXNyL2xvY2FsIC91c3IgL3Vzci9sb2NhbC9vcGVuc3NsIgotICAgICBmaQotIAotLSAgICBmb3IgaSBpbiAkUEhQX09QRU5TU0xfRElSOyBkbwotKyAgICBmb3IgaSBpbiAkUEhQX09QRU5TU0xfRElSICRQSFBfT1BFTlNTTF9ESVIvdXNyOyBkbwotICAgICAgIGlmIHRlc3QgLXIgJGkvaW5jbHVkZS9vcGVuc3NsL2V2cC5oOyB0aGVuCi0gICAgICAgICBPUEVOU1NMX0lOQ0RJUj0kaS9pbmNsdWRlCi0gICAgICAgZmkKIGRpZmYgLS1naXQgYS9leHQvaW1hcC9jb25maWcubTQgYi9leHQvaW1hcC9jb25maWcubTQKLWluZGV4IGJhZGI2ZTIuLjhmZjgwM2MgMTAwNjQ0CitpbmRleCA1MDg2YTMxLi4wZTkzOGJkIDEwMDY0NAogLS0tIGEvZXh0L2ltYXAvY29uZmlnLm00CiArKysgYi9leHQvaW1hcC9jb25maWcubTQKLUBAIC0xMDksNyArMTA5LDcgQEAgaWYgdGVzdCAiJFBIUF9JTUFQIiAhPSAibm8iOyB0aGVuCi0gICAgIFBIUF9ORVdfRVhURU5TSU9OKGltYXAsIHBocF9pbWFwLmMsICRleHRfc2hhcmVkKQorQEAgLTExMCw3ICsxMTAsNyBAQCBpZiB0ZXN0ICIkUEhQX0lNQVAiICE9ICJubyI7IHRoZW4KKyAgICAgUEhQX05FV19FWFRFTlNJT04oaW1hcCwgcGhwX2ltYXAuYywgJGV4dF9zaGFyZWQsLCAtRFpFTkRfRU5BQkxFX1NUQVRJQ19UU1JNTFNfQ0FDSEU9MSkKICAgICAgQUNfREVGSU5FKEhBVkVfSU1BUCwxLFsgXSkKICAKIC0gICAgZm9yIGkgaW4gJFBIUF9JTUFQIC91c3IvbG9jYWwgL3VzcjsgZG8KQEAgLTM0LDcgKzIxLDcgQEAKICAgICAgICBJTUFQX0lOQ19DSEsoKQogICAgICAgIGVsW11JTUFQX0lOQ19DSEsoL2luY2x1ZGUvYy1jbGllbnQpCiAgICAgICAgZWxbXUlNQVBfSU5DX0NISygvaW5jbHVkZS9pbWFwKQotQEAgLTE5OCwxMyArMTk4LDcgQEAgaWYgdGVzdCAiJFBIUF9JTUFQIiAhPSAibm8iOyB0aGVuCitAQCAtMTk5LDEzICsxOTksNyBAQCBpZiB0ZXN0ICIkUEhQX0lNQVAiICE9ICJubyI7IHRoZW4KICAgICAgICBBQ19NU0dfRVJST1IoQ2Fubm90IGZpbmQgcmZjODIyLmguIFBsZWFzZSBjaGVjayB5b3VyIGMtY2xpZW50IGluc3RhbGxhdGlvbi4pCiAgICAgIGZpCiAgCkBAIC00OSwzICszNiw2IEBACiAgICAgICAgSU1BUF9MSUI9JGxpYgogICAgICAgIElNQVBfTElCX0NISygkUEhQX0xJQkRJUikKICAgICAgICBJTUFQX0xJQl9DSEsoYy1jbGllbnQpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BoYXItbWFrZWZpbGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waGFyLW1ha2VmaWxlLnBhdGNoCmluZGV4IDMzNmNmMGQuLmViNzNiYzQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BoYXItbWFrZWZpbGUucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvcGhhci1tYWtlZmlsZS5wYXRjaApAQCAtMSwyNCArMSwyNSBAQAotRnJvbSAwODk2MmE1NmY2OTk2M2UwMTg5MmQ5OGNhNWI3NWRlODM1NGJkM2Y1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KLURhdGU6IFdlZCwgMiBOb3YgMjAxMSAxNjo1NDo1NyArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggcGhhciBwYWNrYWdpbmcKK1N1YmplY3Q6IFtQQVRDSF0gRnJvbSAwODk2MmE1NmY2OTk2M2UwMTg5MmQ5OGNhNWI3NWRlODM1NGJkM2Y1IE1vbiBTZXAgMTcKKyAwMDowMDowMCAyMDAxIEZyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+IERhdGU6IFdlZCwgMiBOb3YKKyAyMDExIDE2OjU0OjU3ICswMTAwIFN1YmplY3Q6IFtQQVRDSF0gRml4IHBoYXIgcGFja2FnaW5nCiAKIEluaGVyaXRlZCBmcm9tIE9FLUNsYXNzaWMsIHdpdGggc29tZSBhZGRpdGlvbnMgdG8gZml4IGhvc3QgcGF0aHMgbGVha2luZwogaW50byB0aGUgdGFyZ2V0IHBhY2thZ2UuCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlnXQogCit1cGRhdGUgcGF0Y2ggdG8gdmVyc2lvbiA3LjQuNAorU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KIC0tLQogIGV4dC9waGFyL01ha2VmaWxlLmZyYWcgfCAxNyArKystLS0tLS0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZXh0L3BoYXIvTWFrZWZpbGUuZnJhZyBiL2V4dC9waGFyL01ha2VmaWxlLmZyYWcKLWluZGV4IDBlMzcxM2YuLjIyZjc4OTggMTAwNjQ0CitpbmRleCA2NDQyZjMzLi42MTQ1NDEyIDEwMDY0NAogLS0tIGEvZXh0L3BoYXIvTWFrZWZpbGUuZnJhZwogKysrIGIvZXh0L3BoYXIvTWFrZWZpbGUuZnJhZwogQEAgLTEwLDIwICsxMCw5IEBAIHBoYXJjbWQ6ICQoYnVpbGRkaXIpL3BoYXIucGhwICQoYnVpbGRkaXIpL3BoYXIucGhhcgogIAotIFBIUF9QSEFSQ01EX1NFVFRJTkdTID0gLW4gLWQgJ29wZW5fYmFzZWRpcj0nIC1kICdvdXRwdXRfYnVmZmVyaW5nPTAnIC1kICdtZW1vcnlfbGltaXQ9LTEnIC1kIHBoYXIucmVhZG9ubHk9MCAtZCAnc2FmZV9tb2RlPTAnCisgUEhQX1BIQVJDTURfU0VUVElOR1MgPSAtbiAtZCAnb3Blbl9iYXNlZGlyPScgLWQgJ291dHB1dF9idWZmZXJpbmc9MCcgLWQgJ21lbW9yeV9saW1pdD0tMScgLWQgcGhhci5yZWFkb25seT0wCiAgUEhQX1BIQVJDTURfRVhFQ1VUQUJMRSA9IGAgXAogLQlpZiB0ZXN0IC14ICIkKHRvcF9idWlsZGRpcikvJChTQVBJX0NMSV9QQVRIKSI7IHRoZW4gXAogLQkJJCh0b3Bfc3JjZGlyKS9idWlsZC9zaHRvb2wgZWNobyAtbiAtLSAiJCh0b3BfYnVpbGRkaXIpLyQoU0FQSV9DTElfUEFUSCkgLW4iOyBcCkBAIC0zNCw5ICszNSwxMiBAQAogLQkJJCh0b3Bfc3JjZGlyKS9idWlsZC9zaHRvb2wgZWNobyAtbiAtLSAiJChQSFBfRVhFQ1VUQUJMRSkiOyBcCiAtCWZpO2AKIC1QSFBfUEhBUkNNRF9CQU5HID0gYCQodG9wX3NyY2RpcikvYnVpbGQvc2h0b29sIGVjaG8gLW4gLS0gIiQoSU5TVEFMTF9ST09UKSQoYmluZGlyKS8kKHByb2dyYW1fcHJlZml4KXBocCQocHJvZ3JhbV9zdWZmaXgpJChFWEVFWFQpIjtgCi0rCQkkKHRvcF9zcmNkaXIpL2J1aWxkL3NodG9vbCBlY2hvIC1uIC0tICIkKFBIUF9FWEVDVVRBQkxFKSI7IGAKKysgICAgICAgICAgICAgICAkKHRvcF9zcmNkaXIpL2J1aWxkL3NodG9vbCBlY2hvIC1uIC0tICIkKFBIUF9FWEVDVVRBQkxFKSI7IGAKICsKICtQSFBfUEhBUkNNRF9CQU5HID0gYCQodG9wX3NyY2RpcikvYnVpbGQvc2h0b29sIGVjaG8gLW4gLS0gIiQoYmluZGlyKS8kKHByb2dyYW1fcHJlZml4KXBocCQocHJvZ3JhbV9zdWZmaXgpJChFWEVFWFQpIjtgCiAgCiAgJChidWlsZGRpcikvcGhhci9waGFyLmluYzogJChzcmNkaXIpL3BoYXIvcGhhci5pbmMKICAJLUB0ZXN0IC1kICQoYnVpbGRkaXIpL3BoYXIgfHwgbWtkaXIgJChidWlsZGRpcikvcGhhcgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waHBfZXhlY19uYXRpdmUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waHBfZXhlY19uYXRpdmUucGF0Y2gKaW5kZXggODA0MDkwMC4uNGFlYzQ4MSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvcGhwX2V4ZWNfbmF0aXZlLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BocF9leGVjX25hdGl2ZS5wYXRjaApAQCAtMSwyMiArMSwyNiBAQAotRnJvbSBkMjUxYjVhYTNkMjM4MDNkMDE2Y2ExNjgxOGUyZTFkMmYyYjcwYTAyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KLURhdGU6IFdlZCwgMiBOb3YgMjAxMSAxNjo1NDo1NyArMDEwMAotU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcmlhdGUKK1N1YmplY3Q6IFtQQVRDSF0gcm9tIGQyNTFiNWFhM2QyMzgwM2QwMTZjYTE2ODE4ZTJlMWQyZjJiNzBhMDIgTW9uIFNlcCAxNworIDAwOjAwOjAwIDIwMDEgRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4gRGF0ZTogV2VkLCAyIE5vdgorIDIwMTEgMTY6NTQ6NTcgKzAxMDAgU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcmlhdGUKIAordXBkYXRlIHBhdGNoIHRvIHZlcnNpb24gNy40LjQKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CiAtLS0KICBzYXBpL2NsaS9jb25maWcubTQgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9zYXBpL2NsaS9jb25maWcubTQgYi9zYXBpL2NsaS9jb25maWcubTQKLWluZGV4IDIxNjgxNTEuLjIwYTgxZGIgMTAwNjQ0CitpbmRleCA5MTdkNDVmLi5hYWYxZTI3IDEwMDY0NAogLS0tIGEvc2FwaS9jbGkvY29uZmlnLm00CiArKysgYi9zYXBpL2NsaS9jb25maWcubTQKLUBAIC01MCw3ICs1MCw3IEBAIGlmIHRlc3QgIiRQSFBfQ0xJIiAhPSAibm8iOyB0aGVuCitAQCAtNDcsNyArNDcsNyBAQCBpZiB0ZXN0ICIkUEhQX0NMSSIgIT0gIm5vIjsgdGhlbgogICAgZXNhYwogIAotICAgZG5sIFNldCBleGVjdXRhYmxlIGZvciB0ZXN0cworICAgZG5sIFNldCBleGVjdXRhYmxlIGZvciB0ZXN0cy4KIC0gIFBIUF9FWEVDVVRBQkxFPSJcJCh0b3BfYnVpbGRkaXIpL1wkKFNBUElfQ0xJX1BBVEgpIgogKyAgUEhQX0VYRUNVVEFCTEU9IiR7UEhQX05BVElWRV9ESVJ9L3BocCIKICAgIFBIUF9TVUJTVChQSFBfRVhFQ1VUQUJMRSkKICAKLSAgIGRubCBFeHBvc2UgdG8gTWFrZWZpbGUKKyAgIGRubCBFeHBvc2UgdG8gTWFrZWZpbGUuCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzcuMy4xMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzcuMy4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdmYjg0Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocF83LjMuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNzUgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHNlcnZlci1zaWRlLCBIVE1MLWVtYmVkZGVkIHNjcmlwdGluZyBsYW5ndWFnZSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucGhwLm5ldCIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotCi1MSUNFTlNFID0gIlBIUC0zLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mYjA3YmZjNTFmNmQ1ZTBjMzBiNjVkOTcwMTIzM2IyZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi1ERVBFTkRTID0gInpsaWIgYnppcDIgbGlieG1sMiB2aXJ0dWFsL2xpYmljb252IHBocC1uYXRpdmUgbGVtb24tbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiemxpYi1uYXRpdmUgbGlieG1sMi1uYXRpdmUiCi0KLVBIUF9NQUpPUl9WRVJTSU9OID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19IgotCi1TUkNfVVJJID0gImh0dHA6Ly9waHAubmV0L2Rpc3RyaWJ1dGlvbnMvcGhwLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1waHAtZG9uLXQtdXNlLWJyb2tlbi13cmFwcGVyLWZvci1ta2Rpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWFjaW5jbHVkZS5tNC1kb24tdC11bnNldC1jYWNoZS12YXJpYWJsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0OC1Vc2UtcGtnLWNvbmZpZy1mb3ItRnJlZVR5cGUyLWRldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1saWJ4bWwyLWRldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4tcGhwLWZpeGhlYWRlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOS02OTc4LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAotICAgICAgICAgICAgZmlsZTovL2ljb252LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9pbWFwLWZpeC1hdXRvZm9vLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9waHBfZXhlY19uYXRpdmUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3BocC1mcG0uY29uZiBcCi0gICAgICAgICAgICBmaWxlOi8vcGhwLWZwbS1hcGFjaGUuY29uZiBcCi0gICAgICAgICAgICBmaWxlOi8vNzBfbW9kX3BocCR7UEhQX01BSk9SX1ZFUlNJT059LmNvbmYgXAotICAgICAgICAgICAgZmlsZTovL3BocC1mcG0uc2VydmljZSBcCi0gICAgICAgICAgICBmaWxlOi8vcGVhci1tYWtlZmlsZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcGhhci1tYWtlZmlsZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1vcGNhY2hlLWNvbmZpZy5tNC1lbmFibGUtb3BjYWNoZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8veGZhaWxfdHdvX2J1Z190ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIgotUyA9ICIke1dPUktESVJ9L3BocC0ke1BWfSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyMWI3MTBiNDEyNmQ0ZDU0NzE0ZGU5NjkzYTZjN2IwZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MmQxZmY0YjEzYzcwOTM2MzVmMWVjMzM4YTVlNjg5MWNhOTliMTBlNjVmYmNhZGQ1MjdlNWJiODRkMTFiNWU3IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHl0aG9ubmF0aXZlIGdldHRleHQKLQotIyBwaHBpemUgaXMgbm90IHNjYW5uZWQgZm9yIGFic29sdXRlIHBhdGhzIGJ5IGRlZmF1bHQgKGJ1dCBwaHAtY29uZmlnIGlzKS4KLSMKLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICJwaHBpemUiCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiYnVpbGQtZGVmcy5oIgotCi1QSFBfTElCRElSID0gIiR7bGliZGlyfS9waHAke1BIUF9NQUpPUl9WRVJTSU9OfSIKLQotIyBDb21tb24gRVhUUkFfT0VDT05GCi1DT01NT05fRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNvY2tldHMgXAotICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1wY250bCBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNoYXJlZCBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1waWMgXAotICAgICAgICAgICAgICAgICAgICAgICAtLWxpYmRpcj0ke1BIUF9MSUJESVJ9IFwKLSIKLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1tYnN0cmluZyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtd2RkeCBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtZnBtIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtbGliZGlyPSR7YmFzZWxpYn0gXAotICAgICAgICAgICAgICAgIC0td2l0aC1nZXR0ZXh0PSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWljb252PSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtYnoyPSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7ZXhlY19wcmVmaXh9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtY29uZmlnLWZpbGUtcGF0aD0ke3N5c2NvbmZkaXJ9L3BocC9hcGFjaGUyLXBocCR7UEhQX01BSk9SX1ZFUlNJT059IFwKLSAgICAgICAgICAgICAgICAke0BvZS51dGlscy5jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICdhY19jdl9jX2JpZ2VuZGlhbl9waHA9bm8nLCAnYWNfY3ZfY19iaWdlbmRpYW5fcGhwPXllcycsIGQpfSBcCi0gICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncGFtJywgJycsICdhY19jdl9saWJfcGFtX3BhbV9zdGFydD1ubycsIGQpfSBcCi0gICAgICAgICAgICAgICAgJHtDT01NT05fRVhUUkFfT0VDT05GfSBcCi0iCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfcmlzY3Y2NCA9ICIgLS13aXRoLXBjcmUtaml0PW5vIgotRVhUUkFfT0VDT05GX2FwcGVuZF9yaXNjdjMyID0gIiAtLXdpdGgtcGNyZS1qaXQ9bm8iCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9mdW5jX2Rsb3Blbj1ubyBhY19jdl9saWJfZGxfZGxvcGVuPXllcyIKLQotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICIgXAotICAgICAgICAgICAgICAgIC0td2l0aC16bGliPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS8uLiBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWljb252IFwKLSAgICAgICAgICAgICAgICAke0NPTU1PTl9FWFRSQV9PRUNPTkZ9IFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIm15c3FsIHNxbGl0ZTMgaW1hcCBvcGNhY2hlIG9wZW5zc2wgXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYgcGFtJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKLQotUEFDS0FHRUNPTkZJR1t6aXBdID0gIi0tZW5hYmxlLXppcCAtLXdpdGgtbGliemlwPSR7U1RBR0lOR19FWEVDUFJFRklYRElSfSwsbGliemlwIgotCi1QQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtbXlzcWxpPW15c3FsbmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLXBkby1teXNxbD1teXNxbG5kIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICwtLXdpdGhvdXQtbXlzcWxpIC0td2l0aG91dC1wZG8tbXlzcWwgXAotICAgICAgICAgICAgICAgICAgICAgICAgLG15c3FsNSIKLQotUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLXdpdGgtc3FsaXRlMz0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1wZG8tc3FsaXRlPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLC0td2l0aG91dC1zcWxpdGUzIC0td2l0aG91dC1wZG8tc3FsaXRlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLHNxbGl0ZTMiCi1QQUNLQUdFQ09ORklHW3Bnc3FsXSA9ICItLXdpdGgtcGdzcWw9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtleGVjX3ByZWZpeH0sLS13aXRob3V0LXBnc3FsLHBvc3RncmVzcWwiCi1QQUNLQUdFQ09ORklHW3NvYXBdID0gIi0tZW5hYmxlLWxpYnhtbCAtLWVuYWJsZS1zb2FwLCAtLWRpc2FibGUtc29hcCwgbGlieG1sMiIKLVBBQ0tBR0VDT05GSUdbYXBhY2hlMl0gPSAiLS13aXRoLWFweHMyPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2FweHMsLGFwYWNoZTItbmF0aXZlIGFwYWNoZTIiCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLCxsaWJwYW0iCi1QQUNLQUdFQ09ORklHW2ltYXBdID0gIi0td2l0aC1pbWFwPSR7U1RBR0lOR19ESVJfSE9TVH0gXAotICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtaW1hcC1zc2w9JHtTVEFHSU5HX0RJUl9IT1NUfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICwtLXdpdGhvdXQtaW1hcCAtLXdpdGhvdXQtaW1hcC1zc2wgXAotICAgICAgICAgICAgICAgICAgICAgICAsdXctaW1hcCIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi1QQUNLQUdFQ09ORklHW29wY2FjaGVdID0gIi0tZW5hYmxlLW9wY2FjaGUsLS1kaXNhYmxlLW9wY2FjaGUiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLC0td2l0aG91dC1vcGVuc3NsLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQ9JHtTVEFHSU5HX0RJUl9UQVJHRVR9L3VzciwtLXdpdGgtdmFsZ3JpbmQ9bm8sdmFsZ3JpbmQiCi0KLWV4cG9ydCBQSFBfTkFUSVZFX0RJUiA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0iCi1leHBvcnQgUEhQX1BFQVJfUEhQX0JJTiA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGhwIgotQ0ZMQUdTICs9ICIgLURfR05VX1NPVVJDRSAtZyAtRFBUWVNfQVJFX0dFVFBUIC1EUFRZU19BUkVfU0VBUkNIRUQgLUkke1NUQUdJTkdfSU5DRElSfS9hcGFjaGUyIgotCi1FWFRSQV9PRU1BS0UgPSAiSU5TVEFMTF9ST09UPSR7RH0iCi0KLWFjcGF0aHMgPSAiIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgcm0gLWYgJHtTfS9idWlsZC9saWJ0b29sLm00ICR7U30vbHRtYWluLnNoICR7U30vYWNsb2NhbC5tNAotICAgIGZpbmQgJHtTfSAtbmFtZSBjb25maWcubTQgfCB4YXJncyAtbjEgc2VkIC1pICdzIUFQWFNfSFRUUEQ9LiohQVBYU19IVFRQRD0ke1NUQUdJTkdfU0JJTkRJUl9OQVRJVkV9L2h0dHBkIScKLX0KLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLSAgICAjIE5vLCBsaWJ0b29sLCB3ZSByZWFsbHkgZG9uJ3Qgd2FudCBycGF0aCBzZXQuLi4KLSAgICBzZWQgLWkgJ3N8XmhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Lip8aGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0iInxnJyAke0hPU1RfU1lTfS1saWJ0b29sCi0gICAgc2VkIC1pICdzfF5ydW5wYXRoX3Zhcj1MRF9SVU5fUEFUSHxydW5wYXRoX3Zhcj1ESUVfUlBBVEhfRElFfGcnICR7SE9TVF9TWVN9LWxpYnRvb2wKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgIHJtIC1yZiAke0R9LyR7UEhQX0xJQkRJUn0vcGhwLy5yZWdpc3RyeQotICAgIHJtIC1yZiAke0R9LyR7UEhQX0xJQkRJUn0vcGhwLy5jaGFubmVscwotICAgIHJtIC1yZiAke0R9LyR7UEhQX0xJQkRJUn0vcGhwLy5bYS16XSoKLX0KLQotZG9faW5zdGFsbF9wcmVwZW5kKCkgewotICAgIGNhdCAke0FDTE9DQUxESVJ9L2xpYnRvb2wubTQgJHtBQ0xPQ0FMRElSfS9sdH5vYnNvbGV0ZS5tNCAke0FDTE9DQUxESVJ9L2x0b3B0aW9ucy5tNCBcCi0gICAgICAgICR7QUNMT0NBTERJUn0vbHRzdWdhci5tNCAke0FDTE9DQUxESVJ9L2x0dmVyc2lvbi5tNCA+ICR7U30vYnVpbGQvbGlidG9vbC5tNAotfQotCi1kb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FwYWNoZTInLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICAjIEluc3RhbGwgZHVtbXkgY29uZmlnIGZpbGUgc28gYXB4cyBkb2Vzbid0IGZhaWwKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9hcGFjaGUyCi0gICAgICAgIHByaW50ZiAiXG5Mb2FkTW9kdWxlIGR1bW15X21vZHVsZSBtb2R1bGVzL21vZF9kdW1teS5zb1xuIiA+ICR7RH0ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvaHR0cGQuY29uZgotICAgIGZpCi19Ci0KLSMgZml4bWUKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9LwotICAgIGlmIFsgLWQgJHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9JHtzeXNjb25mZGlyfSBdO3RoZW4KLSAgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1JFQ0lQRV9TWVNST09UX05BVElWRX0ke3N5c2NvbmZkaXJ9L3BlYXIuY29uZiAke0R9JHtzeXNjb25mZGlyfS8KLSAgICBmaQotICAgIHJtIC1yZiAke0R9LyR7VE1QRElSfQotICAgIHJtIC1yZiAke0R9Ly5yZWdpc3RyeQotICAgIHJtIC1yZiAke0R9Ly5jaGFubmVscwotICAgIHJtIC1yZiAke0R9Ly5bYS16XSoKLSAgICBybSAtcmYgJHtEfS92YXIKLSAgICBybSAtZiAgJHtEfS8ke3N5c2NvbmZkaXJ9L3BocC1mcG0uY29uZi5kZWZhdWx0Ci0gICAgc2VkIC1pICdzOiR7U1RBR0lOR19ESVJfTkFUSVZFfTo6ZycgJHtEfSR7c3lzY29uZmRpcn0vcGVhci5jb25mCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcGhwLWZwbS5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9waHAtZnBtLmNvbmYKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9hcGFjaGUyL2NvbmYuZAotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3BocC1mcG0tYXBhY2hlLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kL3BocC1mcG0uY29uZgotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgc2VkIC1pICdzOj0vdXNyL3NiaW46PSR7c2JpbmRpcn06ZycgJHtCfS9zYXBpL2ZwbS9pbml0LmQucGhwLWZwbQotICAgIHNlZCAtaSAnczo9L2V0Yzo9JHtzeXNjb25mZGlyfTpnJyAke0J9L3NhcGkvZnBtL2luaXQuZC5waHAtZnBtCi0gICAgc2VkIC1pICdzOj0vdmFyOj0ke2xvY2Fsc3RhdGVkaXJ9OmcnICR7Qn0vc2FwaS9mcG0vaW5pdC5kLnBocC1mcG0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS9zYXBpL2ZwbS9pbml0LmQucGhwLWZwbSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcGhwLWZwbQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3BocC1mcG0tYXBhY2hlLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kL3BocC1mcG0uY29uZgotCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTt0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcGhwLWZwbS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgICAgICBzZWQgLWkgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAotICAgICAgICAgICAgLWUgJ3MsQExPQ0FMU1RBVEVESVJALCR7bG9jYWxzdGF0ZWRpcn0sZycgXAotICAgICAgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcGhwLWZwbS5zZXJ2aWNlCi0gICAgZmkKLQotICAgIFRNUD1gZGlybmFtZSAke0R9LyR7VE1QRElSfWAKLSAgICB3aGlsZSB0ZXN0ICR7VE1QfSAhPSAke0R9OyBkbwotICAgICAgICBpZiBbIC1kICR7VE1QfSBdOyB0aGVuCi0gICAgICAgICAgICBybWRpciAke1RNUH0KLSAgICAgICAgZmkKLSAgICAgICAgVE1QPWBkaXJuYW1lICR7VE1QfWA7Ci0gICAgZG9uZQotCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYXBhY2hlMicsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYXBhY2hlMi9tb2R1bGVzLmQKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9waHAvYXBhY2hlMi1waHAke1BIUF9NQUpPUl9WRVJTSU9OfQotICAgICAgICBpbnN0YWxsIC1tIDY0NCAgJHtXT1JLRElSfS83MF9tb2RfcGhwJHtQSFBfTUFKT1JfVkVSU0lPTn0uY29uZiAke0R9JHtzeXNjb25mZGlyfS9hcGFjaGUyL21vZHVsZXMuZAotICAgICAgICBzZWQgLWkgcyxsaWIvLCR7bGliZXhlY2Rpcn0vLCAke0R9JHtzeXNjb25mZGlyfS9hcGFjaGUyL21vZHVsZXMuZC83MF9tb2RfcGhwJHtQSFBfTUFKT1JfVkVSU0lPTn0uY29uZgotICAgICAgICBjYXQgJHtTfS9waHAuaW5pLXByb2R1Y3Rpb24gfCBcCi0gICAgICAgICAgICBzZWQgLWUgJ3MsZXh0ZW5zaW9uX2RpciA9IFwiXC4vXCIsZXh0ZW5zaW9uX2RpciA9IFwiL3Vzci9saWIvZXh0ZW5zaW9uc1wiLCcgXAotICAgICAgICAgICAgPiAke0R9JHtzeXNjb25mZGlyfS9waHAvYXBhY2hlMi1waHAke1BIUF9NQUpPUl9WRVJTSU9OfS9waHAuaW5pCi0gICAgICAgIHJtIC1mICR7RH0ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvaHR0cGQuY29uZioKLSAgICBmaQotfQotCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gInBocF9zeXNyb290X3ByZXByb2Nlc3MiCi0KLXBocF9zeXNyb290X3ByZXByb2Nlc3MgKCkgewotICAgIGluc3RhbGwgLWQgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8KLSAgICBpbnN0YWxsIC1tIDc1NSAke0R9JHtiaW5kaXJ9L3BocGl6ZSAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LwotICAgIGluc3RhbGwgLW0gNzU1ICR7RH0ke2JpbmRpcn0vcGhwLWNvbmZpZyAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LwotCi0gICAgc2VkIC1pICdzIWV2YWwgZWNobyAvIWV2YWwgZWNobyAke1NUQUdJTkdfRElSX0hPU1R9LyEnICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vcGhwaXplCi0gICAgc2VkIC1pICdzIV5pbmNsdWRlX2Rpcj0uKiFpbmNsdWRlX2Rpcj0ke1NUQUdJTkdfSU5DRElSfS9waHAhJyAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L3BocC1jb25maWcKLX0KLQotTU9EUEhQX1BBQ0tBR0UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYXBhY2hlMicsICcke1BOfS1tb2RwaHAnLCAnJywgZCl9IgotCi1QQUNLQUdFUyA9ICIke1BOfS1kYmcgJHtQTn0tY2xpICR7UE59LWNnaSAke1BOfS1mcG0gJHtQTn0tZnBtLWFwYWNoZTIgJHtQTn0tcGVhciAke1BOfS1waGFyICR7TU9EUEhQX1BBQ0tBR0V9ICR7UE59LWRldiAke1BOfS1zdGF0aWNkZXYgJHtQTn0tZG9jICR7UE59LW9wY2FjaGUgJHtQTn0iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJsaWJnY2MiCi1SREVQRU5EU18ke1BOfS1wZWFyID0gIiR7UE59IgotUkRFUEVORFNfJHtQTn0tcGhhciA9ICIke1BOfS1jbGkiCi1SREVQRU5EU18ke1BOfS1jbGkgPSAiJHtQTn0iCi1SREVQRU5EU18ke1BOfS1tb2RwaHAgPSAiJHtQTn0gYXBhY2hlMiIKLVJERVBFTkRTXyR7UE59LW9wY2FjaGUgPSAiJHtQTn0iCi0KLUlOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0tZnBtIgotaW5oZXJpdCB1cGRhdGUtcmMuZAotCi1GSUxFU18ke1BOfS1kYmcgPSsgIiR7YmluZGlyfS8uZGVidWcgXAotICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2FwYWNoZTIvbW9kdWxlcy8uZGVidWciCi1GSUxFU18ke1BOfS1kb2MgKz0gIiR7UEhQX0xJQkRJUn0vcGhwL2RvYyIKLUZJTEVTXyR7UE59LWNsaSA9ICIke2JpbmRpcn0vcGhwIgotRklMRVNfJHtQTn0tcGhhciA9ICIke2JpbmRpcn0vcGhhcioiCi1GSUxFU18ke1BOfS1jZ2kgPSAiJHtiaW5kaXJ9L3BocC1jZ2kiCi1GSUxFU18ke1BOfS1mcG0gPSAiJHtzYmluZGlyfS9waHAtZnBtICR7c3lzY29uZmRpcn0vcGhwLWZwbS5jb25mICR7ZGF0YWRpcn0vZnBtICR7c3lzY29uZmRpcn0vaW5pdC5kL3BocC1mcG0gJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9waHAtZnBtLnNlcnZpY2UgJHtzeXNjb25mZGlyfS9waHAtZnBtLmQvd3d3LmNvbmYuZGVmYXVsdCIKLUZJTEVTXyR7UE59LWZwbS1hcGFjaGUyID0gIiR7c3lzY29uZmRpcn0vYXBhY2hlMi9jb25mLmQvcGhwLWZwbS5jb25mIgotQ09ORkZJTEVTXyR7UE59LWZwbSA9ICIke3N5c2NvbmZkaXJ9L3BocC1mcG0uY29uZiIKLUNPTkZGSUxFU18ke1BOfS1mcG0tYXBhY2hlMiA9ICIke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kL3BocC1mcG0uY29uZiIKLUlOSVRTQ1JJUFRfTkFNRV8ke1BOfS1mcG0gPSAicGhwLWZwbSIKLUlOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LWZwbSA9ICJkZWZhdWx0cyA2MCIKLUZJTEVTXyR7UE59LXBlYXIgPSAiJHtiaW5kaXJ9L3BlYXIqICR7YmluZGlyfS9wZWNsICR7UEhQX0xJQkRJUn0vcGhwL1BFQVIgXAotICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwL1BFQVIqLnBocCAke1BIUF9MSUJESVJ9L3BocC9TeXN0ZW0ucGhwIFwKLSAgICAgICAgICAgICAgICAke1BIUF9MSUJESVJ9L3BocC9wZWNsY21kLnBocCAke1BIUF9MSUJESVJ9L3BocC9wZWFyY21kLnBocCBcCi0gICAgICAgICAgICAgICAgJHtQSFBfTElCRElSfS9waHAvLmNoYW5uZWxzICR7UEhQX0xJQkRJUn0vcGhwLy5jaGFubmVscy8uYWxpYXMgXAotICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwLy5yZWdpc3RyeSAke1BIUF9MSUJESVJ9L3BocC9BcmNoaXZlL1Rhci5waHAgXAotICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwL0NvbnNvbGUvR2V0b3B0LnBocCAke1BIUF9MSUJESVJ9L3BocC9PUy9HdWVzcy5waHAgXAotICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwL2RhdGEvUEVBUiBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9wZWFyLmNvbmYiCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfS9waHAgJHtQSFBfTElCRElSfS9idWlsZCAke2JpbmRpcn0vcGhwaXplIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vcGhwLWNvbmZpZyAke1BIUF9MSUJESVJ9L3BocC8uZGVwZGIgXAotICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwLy5kZXBkYmxvY2sgJHtQSFBfTElCRElSfS9waHAvLmZpbGVtYXAgXAotICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwLy5sb2NrICR7UEhQX0xJQkRJUn0vcGhwL3Rlc3QiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UEhQX0xJQkRJUn0vZXh0ZW5zaW9ucy8qLyouYSIKLUZJTEVTXyR7UE59LW9wY2FjaGUgPSAiJHtQSFBfTElCRElSfS9leHRlbnNpb25zLyovb3BjYWNoZSR7U09MSUJTREVWfSIKLUZJTEVTXyR7UE59ID0gIiR7UEhQX0xJQkRJUn0vcGhwIgotRklMRVNfJHtQTn0gKz0gIiR7YmluZGlyfSAke2xpYmV4ZWNkaXJ9L2FwYWNoZTIiCi0KLVNVTU1BUllfJHtQTn0tbW9kcGhwID0gIlBIUCBtb2R1bGUgZm9yIHRoZSBBcGFjaGUgSFRUUCBzZXJ2ZXIiCi1GSUxFU18ke1BOfS1tb2RwaHAgPSAiJHtsaWJkaXJ9L2FwYWNoZTIgJHtzeXNjb25mZGlyfSIKLQotTU9EUEhQX09MRFBBQ0tBR0UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYXBhY2hlMicsICdtb2RwaHAnLCAnJywgZCl9IgotUlBST1ZJREVTXyR7UE59LW1vZHBocCA9ICIke01PRFBIUF9PTERQQUNLQUdFfSIKLVJSRVBMQUNFU18ke1BOfS1tb2RwaHAgPSAiJHtNT0RQSFBfT0xEUEFDS0FHRX0iCi1SQ09ORkxJQ1RTXyR7UE59LW1vZHBocCA9ICIke01PRFBIUF9PTERQQUNLQUdFfSIKLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgIGNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcGhwIFwKLSAgICAgICAgUEhQX1BFQVJfU1lTQ09ORl9ESVI9JHtzeXNjb25mZGlyfS8KLX0KLQotCi0jIEZhaWxzIHRvIGJ1aWxkIHdpdGggdGh1bWItMSAocWVtdWFybSkKLSMgfCB7c3RhbmRhcmQgaW5wdXR9OiBBc3NlbWJsZXIgbWVzc2FnZXM6Ci0jIHwge3N0YW5kYXJkIGlucHV0fTozNzE5OiBFcnJvcjogc2VsZWN0ZWQgcHJvY2Vzc29yIGRvZXMgbm90IHN1cHBvcnQgVGh1bWIgbW9kZSBgc211bGwgcjAscjIscjkscjMnCi0jIHwge3N0YW5kYXJkIGlucHV0fTozNzIwOiBFcnJvcjogdW5zaGlmdGVkIHJlZ2lzdGVyIHJlcXVpcmVkIC0tIGBzdWIgcjIscjIscjAsYXNyIzMxJwotIyB8IHtzdGFuZGFyZCBpbnB1dH06Mzc5NjogRXJyb3I6IHNlbGVjdGVkIHByb2Nlc3NvciBkb2VzIG5vdCBzdXBwb3J0IFRodW1iIG1vZGUgYHNtdWxsIHIwLHIyLHIzLHIzJwotIyB8IHtzdGFuZGFyZCBpbnB1dH06Mzc5NzogRXJyb3I6IHVuc2hpZnRlZCByZWdpc3RlciByZXF1aXJlZCAtLSBgc3ViIHIyLHIyLHIwLGFzciMzMScKLSMgfCBtYWtlOiAqKiogW2V4dC9zdGFuZGFyZC9tYXRoLmxvXSBFcnJvciAxCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzcuNC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHBfNy40LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY0YzI4ZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzcuNC40LmJiCkBAIC0wLDAgKzEsMjY5IEBACitTVU1NQVJZID0gIkEgc2VydmVyLXNpZGUsIEhUTUwtZW1iZWRkZWQgc2NyaXB0aW5nIGxhbmd1YWdlIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5waHAubmV0IgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiUEhQLTMuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTdlNTcxYjg4OGQ1ODViMzFmOWVmNWVkY2M2NDdmYTMwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK0RFUEVORFMgPSAiemxpYiBiemlwMiBsaWJ4bWwyIHZpcnR1YWwvbGliaWNvbnYgcGhwLW5hdGl2ZSBsZW1vbi1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJ6bGliLW5hdGl2ZSBsaWJ4bWwyLW5hdGl2ZSIKKworUEhQX01BSk9SX1ZFUlNJT04gPSAiJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswXX0iCisKK1NSQ19VUkkgPSAiaHR0cDovL3BocC5uZXQvZGlzdHJpYnV0aW9ucy9waHAtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBocC1kb24tdC11c2UtYnJva2VuLXdyYXBwZXItZm9yLW1rZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi1waHAtZml4aGVhZGVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWRvbi10LWluY2x1ZGUtYnVpbGQtbGlidG9vbC5tNC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBocC5tNC1kb24tdC11bnNldC1jYWNoZS12YXJpYWJsZXMucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCisgICAgICAgICAgICBmaWxlOi8vaWNvbnYucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2ltYXAtZml4LWF1dG9mb28ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3BocF9leGVjX25hdGl2ZS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcGhwLWZwbS5jb25mIFwKKyAgICAgICAgICAgIGZpbGU6Ly9waHAtZnBtLWFwYWNoZS5jb25mIFwKKyAgICAgICAgICAgIGZpbGU6Ly83MF9tb2RfcGhwJHtQSFBfTUFKT1JfVkVSU0lPTn0uY29uZiBcCisgICAgICAgICAgICBmaWxlOi8vcGhwLWZwbS5zZXJ2aWNlIFwKKyAgICAgICAgICAgIGZpbGU6Ly9wZWFyLW1ha2VmaWxlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9waGFyLW1ha2VmaWxlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW9wY2FjaGUtY29uZmlnLm00LWVuYWJsZS1vcGNhY2hlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly94ZmFpbF90d29fYnVnX3Rlc3RzLnBhdGNoIFwKKyAgICAgICAgICAiCitTID0gIiR7V09SS0RJUn0vcGhwLSR7UFZ9IgorU1JDX1VSSVttZDVzdW1dID0gIjI2MmMyNThhM2I4YjU2OTlmY2NhODlhNjRlNTg3NThjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwOGU4ZjQxODJlYzhhMjc2N2IwYjFiOGUxZTdjNjlmYjE0OWIzN2NmYjk4ZWU0YTM3NDc1ZTA4MmZhOTgyOWYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBweXRob24zbmF0aXZlIGdldHRleHQKKworIyBwaHBpemUgaXMgbm90IHNjYW5uZWQgZm9yIGFic29sdXRlIHBhdGhzIGJ5IGRlZmF1bHQgKGJ1dCBwaHAtY29uZmlnIGlzKS4KKyMKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICJwaHBpemUiCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiYnVpbGQtZGVmcy5oIgorCitQSFBfTElCRElSID0gIiR7bGliZGlyfS9waHAke1BIUF9NQUpPUl9WRVJTSU9OfSIKKworIyBDb21tb24gRVhUUkFfT0VDT05GCitDT01NT05fRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNvY2tldHMgXAorICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1wY250bCBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aCBcCisgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1waWMgXAorICAgICAgICAgICAgICAgICAgICAgICAtLWxpYmRpcj0ke1BIUF9MSUJESVJ9IFwKKyIKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1tYnN0cmluZyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtZnBtIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtbGliZGlyPSR7YmFzZWxpYn0gXAorICAgICAgICAgICAgICAgIC0td2l0aC1nZXR0ZXh0PSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisgICAgICAgICAgICAgICAgLS13aXRoLWljb252PSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtYnoyPSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7ZXhlY19wcmVmaXh9IFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtY29uZmlnLWZpbGUtcGF0aD0ke3N5c2NvbmZkaXJ9L3BocC9hcGFjaGUyLXBocCR7UEhQX01BSk9SX1ZFUlNJT059IFwKKyAgICAgICAgICAgICAgICAke0BvZS51dGlscy5jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICdhY19jdl9jX2JpZ2VuZGlhbl9waHA9bm8nLCAnYWNfY3ZfY19iaWdlbmRpYW5fcGhwPXllcycsIGQpfSBcCisgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncGFtJywgJycsICdhY19jdl9saWJfcGFtX3BhbV9zdGFydD1ubycsIGQpfSBcCisgICAgICAgICAgICAgICAgJHtDT01NT05fRVhUUkFfT0VDT05GfSBcCisiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfcmlzY3Y2NCA9ICIgLS13aXRoLXBjcmUtaml0PW5vIgorRVhUUkFfT0VDT05GX2FwcGVuZF9yaXNjdjMyID0gIiAtLXdpdGgtcGNyZS1qaXQ9bm8iCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9mdW5jX2Rsb3Blbj1ubyBhY19jdl9saWJfZGxfZGxvcGVuPXllcyIKKworRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICIgXAorICAgICAgICAgICAgICAgIC0td2l0aC16bGliPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS8uLiBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LWljb252IFwKKyAgICAgICAgICAgICAgICAke0NPTU1PTl9FWFRSQV9PRUNPTkZ9IFwKKyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIm15c3FsIHNxbGl0ZTMgaW1hcCBvcGNhY2hlIG9wZW5zc2wgXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYgcGFtJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKKworUEFDS0FHRUNPTkZJR1t6aXBdID0gIi0tZW5hYmxlLXppcCAtLXdpdGgtbGliemlwPSR7U1RBR0lOR19FWEVDUFJFRklYRElSfSwsbGliemlwIgorCitQQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtbXlzcWxpPW15c3FsbmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLXBkby1teXNxbD1teXNxbG5kIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICwtLXdpdGhvdXQtbXlzcWxpIC0td2l0aG91dC1wZG8tbXlzcWwgXAorICAgICAgICAgICAgICAgICAgICAgICAgLG15c3FsNSIKKworUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLXdpdGgtc3FsaXRlMz0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1wZG8tc3FsaXRlPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLC0td2l0aG91dC1zcWxpdGUzIC0td2l0aG91dC1wZG8tc3FsaXRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLHNxbGl0ZTMiCitQQUNLQUdFQ09ORklHW3Bnc3FsXSA9ICItLXdpdGgtcGdzcWw9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtleGVjX3ByZWZpeH0sLS13aXRob3V0LXBnc3FsLHBvc3RncmVzcWwiCitQQUNLQUdFQ09ORklHW3NvYXBdID0gIi0tZW5hYmxlLWxpYnhtbCAtLWVuYWJsZS1zb2FwLCAtLWRpc2FibGUtc29hcCwgbGlieG1sMiIKK1BBQ0tBR0VDT05GSUdbYXBhY2hlMl0gPSAiLS13aXRoLWFweHMyPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2FweHMsLGFwYWNoZTItbmF0aXZlIGFwYWNoZTIiCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLCxsaWJwYW0iCitQQUNLQUdFQ09ORklHW2ltYXBdID0gIi0td2l0aC1pbWFwPSR7U1RBR0lOR19ESVJfSE9TVH0gXAorICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtaW1hcC1zc2w9JHtTVEFHSU5HX0RJUl9IT1NUfSBcCisgICAgICAgICAgICAgICAgICAgICAgICwtLXdpdGhvdXQtaW1hcCAtLXdpdGhvdXQtaW1hcC1zc2wgXAorICAgICAgICAgICAgICAgICAgICAgICAsdXctaW1hcCIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCitQQUNLQUdFQ09ORklHW29wY2FjaGVdID0gIi0tZW5hYmxlLW9wY2FjaGUsLS1kaXNhYmxlLW9wY2FjaGUiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLC0td2l0aG91dC1vcGVuc3NsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQ9JHtTVEFHSU5HX0RJUl9UQVJHRVR9L3VzciwtLXdpdGgtdmFsZ3JpbmQ9bm8sdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW21icmVnZXhdID0gIi0tZW5hYmxlLW1icmVnZXgsIC0tZGlzYWJsZS1tYnJlZ2V4LCBvbmlndXJ1bWEiCisKK2V4cG9ydCBQSFBfTkFUSVZFX0RJUiA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0iCitleHBvcnQgUEhQX1BFQVJfUEhQX0JJTiA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGhwIgorQ0ZMQUdTICs9ICIgLURfR05VX1NPVVJDRSAtZyAtRFBUWVNfQVJFX0dFVFBUIC1EUFRZU19BUkVfU0VBUkNIRUQgLUkke1NUQUdJTkdfSU5DRElSfS9hcGFjaGUyIgorCitFWFRSQV9PRU1BS0UgPSAiSU5TVEFMTF9ST09UPSR7RH0iCisKK2FjcGF0aHMgPSAiIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisgICAgcm0gLWYgJHtTfS9idWlsZC9saWJ0b29sLm00ICR7U30vbHRtYWluLnNoICR7U30vYWNsb2NhbC5tNAorICAgIGZpbmQgJHtTfSAtbmFtZSBjb25maWcubTQgfCB4YXJncyAtbjEgc2VkIC1pICdzIUFQWFNfSFRUUEQ9LiohQVBYU19IVFRQRD0ke1NUQUdJTkdfU0JJTkRJUl9OQVRJVkV9L2h0dHBkIScKK30KKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKyAgICAjIE5vLCBsaWJ0b29sLCB3ZSByZWFsbHkgZG9uJ3Qgd2FudCBycGF0aCBzZXQuLi4KKyAgICBzZWQgLWkgJ3N8XmhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Lip8aGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0iInxnJyAke0hPU1RfU1lTfS1saWJ0b29sCisgICAgc2VkIC1pICdzfF5ydW5wYXRoX3Zhcj1MRF9SVU5fUEFUSHxydW5wYXRoX3Zhcj1ESUVfUlBBVEhfRElFfGcnICR7SE9TVF9TWVN9LWxpYnRvb2wKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgIHJtIC1yZiAke0R9LyR7UEhQX0xJQkRJUn0vcGhwLy5yZWdpc3RyeQorICAgIHJtIC1yZiAke0R9LyR7UEhQX0xJQkRJUn0vcGhwLy5jaGFubmVscworICAgIHJtIC1yZiAke0R9LyR7UEhQX0xJQkRJUn0vcGhwLy5bYS16XSoKK30KKworZG9faW5zdGFsbF9wcmVwZW5kKCkgeworICAgIGNhdCAke0FDTE9DQUxESVJ9L2xpYnRvb2wubTQgJHtBQ0xPQ0FMRElSfS9sdH5vYnNvbGV0ZS5tNCAke0FDTE9DQUxESVJ9L2x0b3B0aW9ucy5tNCBcCisgICAgICAgICR7QUNMT0NBTERJUn0vbHRzdWdhci5tNCAke0FDTE9DQUxESVJ9L2x0dmVyc2lvbi5tNCA+ICR7U30vYnVpbGQvbGlidG9vbC5tNAorfQorCitkb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FwYWNoZTInLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICAjIEluc3RhbGwgZHVtbXkgY29uZmlnIGZpbGUgc28gYXB4cyBkb2Vzbid0IGZhaWwKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9hcGFjaGUyCisgICAgICAgIHByaW50ZiAiXG5Mb2FkTW9kdWxlIGR1bW15X21vZHVsZSBtb2R1bGVzL21vZF9kdW1teS5zb1xuIiA+ICR7RH0ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvaHR0cGQuY29uZgorICAgIGZpCit9CisKKyMgZml4bWUKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9LworICAgIHJtIC1yZiAke0R9LyR7VE1QRElSfQorICAgIHJtIC1yZiAke0R9Ly5yZWdpc3RyeQorICAgIHJtIC1yZiAke0R9Ly5jaGFubmVscworICAgIHJtIC1yZiAke0R9Ly5bYS16XSoKKyAgICBybSAtcmYgJHtEfS92YXIKKyAgICBybSAtZiAgJHtEfS8ke3N5c2NvbmZkaXJ9L3BocC1mcG0uY29uZi5kZWZhdWx0CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcGhwLWZwbS5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9waHAtZnBtLmNvbmYKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9hcGFjaGUyL2NvbmYuZAorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3BocC1mcG0tYXBhY2hlLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kL3BocC1mcG0uY29uZgorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgc2VkIC1pICdzOj0vdXNyL3NiaW46PSR7c2JpbmRpcn06ZycgJHtCfS9zYXBpL2ZwbS9pbml0LmQucGhwLWZwbQorICAgIHNlZCAtaSAnczo9L2V0Yzo9JHtzeXNjb25mZGlyfTpnJyAke0J9L3NhcGkvZnBtL2luaXQuZC5waHAtZnBtCisgICAgc2VkIC1pICdzOj0vdmFyOj0ke2xvY2Fsc3RhdGVkaXJ9OmcnICR7Qn0vc2FwaS9mcG0vaW5pdC5kLnBocC1mcG0KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS9zYXBpL2ZwbS9pbml0LmQucGhwLWZwbSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcGhwLWZwbQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3BocC1mcG0tYXBhY2hlLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kL3BocC1mcG0uY29uZgorCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTt0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcGhwLWZwbS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgICAgICBzZWQgLWkgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAorICAgICAgICAgICAgLWUgJ3MsQExPQ0FMU1RBVEVESVJALCR7bG9jYWxzdGF0ZWRpcn0sZycgXAorICAgICAgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcGhwLWZwbS5zZXJ2aWNlCisgICAgZmkKKworICAgIFRNUD1gZGlybmFtZSAke0R9LyR7VE1QRElSfWAKKyAgICB3aGlsZSB0ZXN0ICR7VE1QfSAhPSAke0R9OyBkbworICAgICAgICBpZiBbIC1kICR7VE1QfSBdOyB0aGVuCisgICAgICAgICAgICBybWRpciAke1RNUH0KKyAgICAgICAgZmkKKyAgICAgICAgVE1QPWBkaXJuYW1lICR7VE1QfWA7CisgICAgZG9uZQorCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYXBhY2hlMicsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYXBhY2hlMi9tb2R1bGVzLmQKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9waHAvYXBhY2hlMi1waHAke1BIUF9NQUpPUl9WRVJTSU9OfQorICAgICAgICBpbnN0YWxsIC1tIDY0NCAgJHtXT1JLRElSfS83MF9tb2RfcGhwJHtQSFBfTUFKT1JfVkVSU0lPTn0uY29uZiAke0R9JHtzeXNjb25mZGlyfS9hcGFjaGUyL21vZHVsZXMuZAorICAgICAgICBzZWQgLWkgcyxsaWIvLCR7bGliZXhlY2Rpcn0vLCAke0R9JHtzeXNjb25mZGlyfS9hcGFjaGUyL21vZHVsZXMuZC83MF9tb2RfcGhwJHtQSFBfTUFKT1JfVkVSU0lPTn0uY29uZgorICAgICAgICBjYXQgJHtTfS9waHAuaW5pLXByb2R1Y3Rpb24gfCBcCisgICAgICAgICAgICBzZWQgLWUgJ3MsZXh0ZW5zaW9uX2RpciA9IFwiXC4vXCIsZXh0ZW5zaW9uX2RpciA9IFwiL3Vzci9saWIvZXh0ZW5zaW9uc1wiLCcgXAorICAgICAgICAgICAgPiAke0R9JHtzeXNjb25mZGlyfS9waHAvYXBhY2hlMi1waHAke1BIUF9NQUpPUl9WRVJTSU9OfS9waHAuaW5pCisgICAgICAgIHJtIC1mICR7RH0ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvaHR0cGQuY29uZioKKyAgICBmaQorfQorCitTWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gInBocF9zeXNyb290X3ByZXByb2Nlc3MiCisKK3BocF9zeXNyb290X3ByZXByb2Nlc3MgKCkgeworICAgIGluc3RhbGwgLWQgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8KKyAgICBpbnN0YWxsIC1tIDc1NSAke0R9JHtiaW5kaXJ9L3BocGl6ZSAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LworICAgIGluc3RhbGwgLW0gNzU1ICR7RH0ke2JpbmRpcn0vcGhwLWNvbmZpZyAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LworCisgICAgc2VkIC1pICdzIWV2YWwgZWNobyAvIWV2YWwgZWNobyAke1NUQUdJTkdfRElSX0hPU1R9LyEnICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vcGhwaXplCisgICAgc2VkIC1pICdzIV5pbmNsdWRlX2Rpcj0uKiFpbmNsdWRlX2Rpcj0ke1NUQUdJTkdfSU5DRElSfS9waHAhJyAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L3BocC1jb25maWcKK30KKworTU9EUEhQX1BBQ0tBR0UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYXBhY2hlMicsICcke1BOfS1tb2RwaHAnLCAnJywgZCl9IgorCitQQUNLQUdFUyA9ICIke1BOfS1kYmcgJHtQTn0tY2xpICR7UE59LWNnaSAke1BOfS1mcG0gJHtQTn0tZnBtLWFwYWNoZTIgJHtQTn0tcGVhciAke1BOfS1waGFyICR7TU9EUEhQX1BBQ0tBR0V9ICR7UE59LWRldiAke1BOfS1zdGF0aWNkZXYgJHtQTn0tZG9jICR7UE59LW9wY2FjaGUgJHtQTn0iCisKK1JERVBFTkRTXyR7UE59ICs9ICJsaWJnY2MiCitSREVQRU5EU18ke1BOfS1wZWFyID0gIiR7UE59IgorUkRFUEVORFNfJHtQTn0tcGhhciA9ICIke1BOfS1jbGkiCitSREVQRU5EU18ke1BOfS1jbGkgPSAiJHtQTn0iCitSREVQRU5EU18ke1BOfS1tb2RwaHAgPSAiJHtQTn0gYXBhY2hlMiIKK1JERVBFTkRTXyR7UE59LW9wY2FjaGUgPSAiJHtQTn0iCisKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0tZnBtIgoraW5oZXJpdCB1cGRhdGUtcmMuZAorCitGSUxFU18ke1BOfS1kYmcgPSsgIiR7YmluZGlyfS8uZGVidWcgXAorICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2FwYWNoZTIvbW9kdWxlcy8uZGVidWciCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7UEhQX0xJQkRJUn0vcGhwL2RvYyIKK0ZJTEVTXyR7UE59LWNsaSA9ICIke2JpbmRpcn0vcGhwIgorRklMRVNfJHtQTn0tcGhhciA9ICIke2JpbmRpcn0vcGhhcioiCitGSUxFU18ke1BOfS1jZ2kgPSAiJHtiaW5kaXJ9L3BocC1jZ2kiCitGSUxFU18ke1BOfS1mcG0gPSAiJHtzYmluZGlyfS9waHAtZnBtICR7c3lzY29uZmRpcn0vcGhwLWZwbS5jb25mICR7ZGF0YWRpcn0vZnBtICR7c3lzY29uZmRpcn0vaW5pdC5kL3BocC1mcG0gJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9waHAtZnBtLnNlcnZpY2UgJHtzeXNjb25mZGlyfS9waHAtZnBtLmQvd3d3LmNvbmYuZGVmYXVsdCIKK0ZJTEVTXyR7UE59LWZwbS1hcGFjaGUyID0gIiR7c3lzY29uZmRpcn0vYXBhY2hlMi9jb25mLmQvcGhwLWZwbS5jb25mIgorQ09ORkZJTEVTXyR7UE59LWZwbSA9ICIke3N5c2NvbmZkaXJ9L3BocC1mcG0uY29uZiIKK0NPTkZGSUxFU18ke1BOfS1mcG0tYXBhY2hlMiA9ICIke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kL3BocC1mcG0uY29uZiIKK0lOSVRTQ1JJUFRfTkFNRV8ke1BOfS1mcG0gPSAicGhwLWZwbSIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LWZwbSA9ICJkZWZhdWx0cyA2MCIKK0ZJTEVTXyR7UE59LXBlYXIgPSAiJHtiaW5kaXJ9L3BlYXIqICR7YmluZGlyfS9wZWNsICR7UEhQX0xJQkRJUn0vcGhwL1BFQVIgXAorICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwL1BFQVIqLnBocCAke1BIUF9MSUJESVJ9L3BocC9TeXN0ZW0ucGhwIFwKKyAgICAgICAgICAgICAgICAke1BIUF9MSUJESVJ9L3BocC9wZWNsY21kLnBocCAke1BIUF9MSUJESVJ9L3BocC9wZWFyY21kLnBocCBcCisgICAgICAgICAgICAgICAgJHtQSFBfTElCRElSfS9waHAvLmNoYW5uZWxzICR7UEhQX0xJQkRJUn0vcGhwLy5jaGFubmVscy8uYWxpYXMgXAorICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwLy5yZWdpc3RyeSAke1BIUF9MSUJESVJ9L3BocC9BcmNoaXZlL1Rhci5waHAgXAorICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwL0NvbnNvbGUvR2V0b3B0LnBocCAke1BIUF9MSUJESVJ9L3BocC9PUy9HdWVzcy5waHAgXAorICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwL2RhdGEvUEVBUiBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9wZWFyLmNvbmYiCitGSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfS9waHAgJHtQSFBfTElCRElSfS9idWlsZCAke2JpbmRpcn0vcGhwaXplIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vcGhwLWNvbmZpZyAke1BIUF9MSUJESVJ9L3BocC8uZGVwZGIgXAorICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwLy5kZXBkYmxvY2sgJHtQSFBfTElCRElSfS9waHAvLmZpbGVtYXAgXAorICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwLy5sb2NrICR7UEhQX0xJQkRJUn0vcGhwL3Rlc3QiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UEhQX0xJQkRJUn0vZXh0ZW5zaW9ucy8qLyouYSIKK0ZJTEVTXyR7UE59LW9wY2FjaGUgPSAiJHtQSFBfTElCRElSfS9leHRlbnNpb25zLyovb3BjYWNoZSR7U09MSUJTREVWfSIKK0ZJTEVTXyR7UE59ID0gIiR7UEhQX0xJQkRJUn0vcGhwIgorRklMRVNfJHtQTn0gKz0gIiR7YmluZGlyfSAke2xpYmV4ZWNkaXJ9L2FwYWNoZTIiCisKK1NVTU1BUllfJHtQTn0tbW9kcGhwID0gIlBIUCBtb2R1bGUgZm9yIHRoZSBBcGFjaGUgSFRUUCBzZXJ2ZXIiCitGSUxFU18ke1BOfS1tb2RwaHAgPSAiJHtsaWJkaXJ9L2FwYWNoZTIgJHtzeXNjb25mZGlyfSIKKworTU9EUEhQX09MRFBBQ0tBR0UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYXBhY2hlMicsICdtb2RwaHAnLCAnJywgZCl9IgorUlBST1ZJREVTXyR7UE59LW1vZHBocCA9ICIke01PRFBIUF9PTERQQUNLQUdFfSIKK1JSRVBMQUNFU18ke1BOfS1tb2RwaHAgPSAiJHtNT0RQSFBfT0xEUEFDS0FHRX0iCitSQ09ORkxJQ1RTXyR7UE59LW1vZHBocCA9ICIke01PRFBIUF9PTERQQUNLQUdFfSIKKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgIGNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcGhwIFwKKyAgICAgICAgUEhQX1BFQVJfU1lTQ09ORl9ESVI9JHtzeXNjb25mZGlyfS8KK30KKworCisjIEZhaWxzIHRvIGJ1aWxkIHdpdGggdGh1bWItMSAocWVtdWFybSkKKyMgfCB7c3RhbmRhcmQgaW5wdXR9OiBBc3NlbWJsZXIgbWVzc2FnZXM6CisjIHwge3N0YW5kYXJkIGlucHV0fTozNzE5OiBFcnJvcjogc2VsZWN0ZWQgcHJvY2Vzc29yIGRvZXMgbm90IHN1cHBvcnQgVGh1bWIgbW9kZSBgc211bGwgcjAscjIscjkscjMnCisjIHwge3N0YW5kYXJkIGlucHV0fTozNzIwOiBFcnJvcjogdW5zaGlmdGVkIHJlZ2lzdGVyIHJlcXVpcmVkIC0tIGBzdWIgcjIscjIscjAsYXNyIzMxJworIyB8IHtzdGFuZGFyZCBpbnB1dH06Mzc5NjogRXJyb3I6IHNlbGVjdGVkIHByb2Nlc3NvciBkb2VzIG5vdCBzdXBwb3J0IFRodW1iIG1vZGUgYHNtdWxsIHIwLHIyLHIzLHIzJworIyB8IHtzdGFuZGFyZCBpbnB1dH06Mzc5NzogRXJyb3I6IHVuc2hpZnRlZCByZWdpc3RlciByZXF1aXJlZCAtLSBgc3ViIHIyLHIyLHIwLGFzciMzMScKKyMgfCBtYWtlOiAqKiogW2V4dC9zdGFuZGFyZC9tYXRoLmxvXSBFcnJvciAxCitBUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wbHkvcGx5X2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wbHkvcGx5X2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDY5M2IzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BseS9wbHlfZ2l0LmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiUGx5OiBBIGxpZ2h0LXdlaWdodCBkeW5hbWljIHRyYWNlciBmb3IgZUJQRiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pb3Zpc29yL3BseSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworREVQRU5EUyArPSAiYmlzb24tbmF0aXZlIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaW92aXNvci9wbHkiCitTUkNSRVYgPSAiYWE1YjlhYzMxMzA3ZWMxYWNlY2U4MThiZTMzNGVmODAxYzgwMmExMiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK0NPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0Lip8YWFyY2g2NC4qfGFybS4qfHBvd2VycGMuKiktbGludXgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWYtY18xLjMuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zi1jXzEuMy4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTJmODJkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zi1jXzEuMy4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotU1VNTUFSWSA9ICJQcm90b2NvbCBCdWZmZXJzIC0gc3RydWN0dXJlZCBkYXRhIHNlcmlhbGlzYXRpb24gbWVjaGFuaXNtIgotREVTQ1JJUFRJT04gPSAiVGhpcyBpcyBwcm90b2J1Zi1jLCBhIEMgaW1wbGVtZW50YXRpb24gb2YgdGhlIEdvb2dsZSBQcm90b2NvbCBCdWZmZXJzIGRhdGEgXAotc2VyaWFsaXphdGlvbiBmb3JtYXQuIEl0IGluY2x1ZGVzIGxpYnByb3RvYnVmLWMsIGEgcHVyZSBDIGxpYnJhcnkgdGhhdCBcCi1pbXBsZW1lbnRzIHByb3RvYnVmIGVuY29kaW5nIGFuZCBkZWNvZGluZywgYW5kIHByb3RvYy1jLCBhIGNvZGUgZ2VuZXJhdG9yIHRoYXQgXAotY29udmVydHMgUHJvdG9jb2wgQnVmZmVyIC5wcm90byBmaWxlcyB0byBDIGRlc2NyaXB0b3IgY29kZSwgYmFzZWQgb24gdGhlIFwKLW9yaWdpbmFsIHByb3RvYy4gcHJvdG9idWYtYyBmb3JtZXJseSBpbmNsdWRlZCBhbiBSUEMgaW1wbGVtZW50YXRpb247IHRoYXQgY29kZSBcCi1oYXMgYmVlbiBzcGxpdCBvdXQgaW50byB0aGUgcHJvdG9idWYtYy1ycGMgcHJvamVjdC4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcHJvdG9idWYtYy9wcm90b2J1Zi1jIgotU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jYjkwMTE2ODcxNWY0NzgyYTJiMDZjM2RkYWVmYTU1OCIKLQotREVQRU5EUyA9ICJwcm90b2J1Zi1uYXRpdmUgcHJvdG9idWYiCi0KLVNSQ1JFViA9ICIxMzkwNDA5ZjRlZTRlMjZkMDYzNTMxMDk5NWI1MTZlYjcwMmMzZjllIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcHJvdG9idWYtYy9wcm90b2J1Zi1jLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWF2b2lkLXJhY2UtY29uZGl0aW9uLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLSNtYWtlIHN1cmUgYysrMTEgaXMgdXNlZAotQ1hYRkxBR1MgKz0gIi1zdGQ9YysrMTEiCi1CVUlMRF9DWFhGTEFHUyArPSAiLXN0ZD1jKysxMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VfQkVGT1JFX1BOID0gIiR7UE59LWNvbXBpbGVyIgotCi1GSUxFU18ke1BOfS1jb21waWxlciA9ICIke2JpbmRpcn0iCi0KLVJERVBFTkRTXyR7UE59LWNvbXBpbGVyID0gInByb3RvYnVmLWNvbXBpbGVyIgotUkRFUEVORFNfJHtQTn0tZGV2ICs9ICIke1BOfS1jb21waWxlciIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmLWNfMS4zLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWYtY18xLjMuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGMzODkzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmLWNfMS4zLjMuYmIKQEAgLTAsMCArMSwzNiBAQAorU1VNTUFSWSA9ICJQcm90b2NvbCBCdWZmZXJzIC0gc3RydWN0dXJlZCBkYXRhIHNlcmlhbGlzYXRpb24gbWVjaGFuaXNtIgorREVTQ1JJUFRJT04gPSAiVGhpcyBpcyBwcm90b2J1Zi1jLCBhIEMgaW1wbGVtZW50YXRpb24gb2YgdGhlIEdvb2dsZSBQcm90b2NvbCBCdWZmZXJzIGRhdGEgXAorc2VyaWFsaXphdGlvbiBmb3JtYXQuIEl0IGluY2x1ZGVzIGxpYnByb3RvYnVmLWMsIGEgcHVyZSBDIGxpYnJhcnkgdGhhdCBcCitpbXBsZW1lbnRzIHByb3RvYnVmIGVuY29kaW5nIGFuZCBkZWNvZGluZywgYW5kIHByb3RvYy1jLCBhIGNvZGUgZ2VuZXJhdG9yIHRoYXQgXAorY29udmVydHMgUHJvdG9jb2wgQnVmZmVyIC5wcm90byBmaWxlcyB0byBDIGRlc2NyaXB0b3IgY29kZSwgYmFzZWQgb24gdGhlIFwKK29yaWdpbmFsIHByb3RvYy4gcHJvdG9idWYtYyBmb3JtZXJseSBpbmNsdWRlZCBhbiBSUEMgaW1wbGVtZW50YXRpb247IHRoYXQgY29kZSBcCitoYXMgYmVlbiBzcGxpdCBvdXQgaW50byB0aGUgcHJvdG9idWYtYy1ycGMgcHJvamVjdC4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcHJvdG9idWYtYy9wcm90b2J1Zi1jIgorU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jYjkwMTE2ODcxNWY0NzgyYTJiMDZjM2RkYWVmYTU1OCIKKworREVQRU5EUyA9ICJwcm90b2J1Zi1uYXRpdmUgcHJvdG9idWYiCisKK1NSQ1JFViA9ICJmMjBhM2ZhMTMxYzI3NWEwZTc5NWQ5OWEyOGY5NGI0ZGJiYjVhZjI2IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcHJvdG9idWYtYy9wcm90b2J1Zi1jLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWF2b2lkLXJhY2UtY29uZGl0aW9uLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKKyNtYWtlIHN1cmUgYysrMTEgaXMgdXNlZAorQ1hYRkxBR1MgKz0gIi1zdGQ9YysrMTEiCitCVUlMRF9DWFhGTEFHUyArPSAiLXN0ZD1jKysxMSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VfQkVGT1JFX1BOID0gIiR7UE59LWNvbXBpbGVyIgorCitGSUxFU18ke1BOfS1jb21waWxlciA9ICIke2JpbmRpcn0iCisKK1JERVBFTkRTXyR7UE59LWNvbXBpbGVyID0gInByb3RvYnVmLWNvbXBpbGVyIgorUkRFUEVORFNfJHtQTn0tZGV2ICs9ICIke1BOfS1jb21waWxlciIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmXzMuMTAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zl8zLjEwLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4NTI2ZjEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmXzMuMTAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLVNVTU1BUlkgPSAiUHJvdG9jb2wgQnVmZmVycyAtIHN0cnVjdHVyZWQgZGF0YSBzZXJpYWxpc2F0aW9uIG1lY2hhbmlzbSIKLURFU0NSSVBUSU9OID0gIlByb3RvY29sIEJ1ZmZlcnMgYXJlIGEgd2F5IG9mIGVuY29kaW5nIHN0cnVjdHVyZWQgZGF0YSBpbiBhbiBcCi1lZmZpY2llbnQgeWV0IGV4dGVuc2libGUgZm9ybWF0LiBHb29nbGUgdXNlcyBQcm90b2NvbCBCdWZmZXJzIGZvciBhbG1vc3QgXAotYWxsIG9mIGl0cyBpbnRlcm5hbCBSUEMgcHJvdG9jb2xzIGFuZCBmaWxlIGZvcm1hdHMuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9wcm90b2J1ZiIKLVNFQ1RJT04gPSAiY29uc29sZS90b29scyIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzdiNTc2MmUwN2YwYWY4Yzc0Y2U4MGE4YmRhNDI2NmIiCi0KLURFUEVORFMgPSAiemxpYiIKLURFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgcHJvdG9idWYtbmF0aXZlIgotCi1TUkNSRVYgPSAiZDA5ZDY0OWFlYTM2ZjAyYzAzZjgzOTZiYTM5YThkNGRiOGE2MDdlNCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dvb2dsZS9wcm90b2J1Zi5naXQ7YnJhbmNoPTMuMTAueCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wcm90b2J1Zi1maXgtY29uZmlndXJlLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0taW5jbHVkZS1kZXNjcmlwdG9yLmNjLXdoZW4tYnVpbGRpbmctbGlicC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWV4YW1wbGVzLU1ha2VmaWxlLXJlc3BlY3QtQ1hYLUxERkxBR1MtdmFyaWFibGVzLWZpeC0ucGF0Y2ggXAotIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBwdGVzdAotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tweXRob25dID0gIiwsIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1wcm90b2M9ZWNobyIKLQotVEVTVF9TUkNfRElSID0gImV4YW1wbGVzIgotTEFOR19TVVBQT1JUID0gImNwcCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAncHl0aG9uJywgJycsIGQpfSIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlta2RpciAtcCAiJHtCfS8ke1RFU1RfU1JDX0RJUn0iCi0KLQkjIEFkZCB0aGUgbG9jYXRpb24gb2YgdGhlIGNyb3NzLWNvbXBpbGVkIGhlYWRlciBhbmQgbGlicmFyeSBmaWxlcwotCSMgd2hpY2ggaGF2ZW4ndCBiZWVuIGluc3RhbGxlZCB5ZXQuCi0JY3AgIiR7Qn0vcHJvdG9idWYucGMiICIke0J9LyR7VEVTVF9TUkNfRElSfS9wcm90b2J1Zi5wYyIKLQlzZWQgLWUgJ3N8bGliZGlyPXxsaWJkaXI9JHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfXwnIC1pICIke0J9LyR7VEVTVF9TUkNfRElSfS9wcm90b2J1Zi5wYyIKLQlzZWQgLWUgJ3N8Q2ZsYWdzOnxDZmxhZ3M6IC1JJHtTfS9zcmN8JyAtaSAiJHtCfS8ke1RFU1RfU1JDX0RJUn0vcHJvdG9idWYucGMiCi0Jc2VkIC1lICdzfExpYnM6fExpYnM6IC1MJHtCfS9zcmMvLmxpYnN8JyAtaSAiJHtCfS8ke1RFU1RfU1JDX0RJUn0vcHJvdG9idWYucGMiCi0JZXhwb3J0IFBLR19DT05GSUdfUEFUSD0iJHtCfS8ke1RFU1RfU1JDX0RJUn0iCi0KLQkjIFNhdmUgdGhlIHBrZ2NmZyBzeXNyb290IHZhcmlhYmxlLCBhbmQgdXBkYXRlIGl0IHRvIG5vdGhpbmcgc28KLQkjIHRoYXQgaXQgZG9lc24ndCBhcHBlbmQgdGhlIHN5c3Jvb3QgdG8gdGhlIGJlZ2lubmluZyBvZiBwYXRocy4KLQkjIFRoZSBoZWFkZXIgYW5kIGxpYnJhcnkgZmlsZXMgYXJlbid0IGluc3RhbGxlZCB0byB0aGUgdGFyZ2V0Ci0JIyBzeXN0ZW0geWV0LiAgU28gdGhlIGFic29sdXRlIHBhdGhzIHdlcmUgc3BlY2lmaWVkIGFib3ZlLgotCXNhdmVfcGtnX2NvbmZpZ19zeXNyb290X2Rpcj0kUEtHX0NPTkZJR19TWVNST09UX0RJUgotCWV4cG9ydCBQS0dfQ09ORklHX1NZU1JPT1RfRElSPQotCi0JIyBDb21waWxlIHRoZSB0ZXN0cwotCWZvciBsYW5nIGluICR7TEFOR19TVVBQT1JUfTsgZG8KLQkJb2VfcnVubWFrZSAtQyAiJHtTfS8ke1RFU1RfU1JDX0RJUn0iICR7bGFuZ30KLQlkb25lCi0KLQkjIFJlc3RvcmUgdGhlIHBrZ2NvbmZpZyBzeXNyb290IHZhcmlhYmxlCi0JZXhwb3J0IFBLR19DT05GSUdfU1lTUk9PVF9ESVI9JHNhdmVfcGtnX2NvbmZpZ19zeXNyb290X2RpcgotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCWxvY2FsIG9sZGRpcj1gcHdkYAotCi0JY2QgIiR7U30vJHtURVNUX1NSQ19ESVJ9IgotCWluc3RhbGwgLWQgIiR7RH0vJHtQVEVTVF9QQVRIfSIKLQlmb3IgaSBpbiBhZGRfcGVyc29uKiBsaXN0X3Blb3BsZSo7IGRvCi0JCWlmIFsgLXggIiRpIiBdOyB0aGVuCi0JCQlpbnN0YWxsICIkaSIgIiR7RH0vJHtQVEVTVF9QQVRIfSIKLQkJZmkKLQlkb25lCi0JY3AgIiR7U30vJHtURVNUX1NSQ19ESVJ9L2FkZHJlc3Nib29rX3BiMi5weSIgIiR7RH0vJHtQVEVTVF9QQVRIfSIKLQljZCAiJG9sZGRpciIKLX0KLQotUEFDS0FHRV9CRUZPUkVfUE4gPSAiJHtQTn0tY29tcGlsZXIgJHtQTn0tbGl0ZSIKLQotRklMRVNfJHtQTn0tY29tcGlsZXIgPSAiJHtiaW5kaXJ9ICR7bGliZGlyfS9saWJwcm90b2Mke1NPTElCU30iCi1GSUxFU18ke1BOfS1saXRlID0gIiR7bGliZGlyfS9saWJwcm90b2J1Zi1saXRlJHtTT0xJQlN9IgotCi1SREVQRU5EU18ke1BOfS1jb21waWxlciA9ICIke1BOfSIKLVJERVBFTkRTXyR7UE59LWRldiArPSAiJHtQTn0tY29tcGlsZXIiCi1SREVQRU5EU18ke1BOfS1wdGVzdCA9ICJiYXNoICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24tcHJvdG9idWYnLCAnJywgZCl9IgotCi1NSVBTX0lOU1RSVUNUSU9OX1NFVCA9ICJtaXBzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLUxERkxBR1NfYXBwZW5kX2FybSA9ICIgLWxhdG9taWMiCi1MREZMQUdTX2FwcGVuZF9taXBzID0gIiAtbGF0b21pYyIKLUxERkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sYXRvbWljIgotTERGTEFHU19hcHBlbmRfbWlwc2VsID0gIiAtbGF0b21pYyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zl8zLjExLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWZfMy4xMS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNmM1YjIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWZfMy4xMS40LmJiCkBAIC0wLDAgKzEsOTAgQEAKK1NVTU1BUlkgPSAiUHJvdG9jb2wgQnVmZmVycyAtIHN0cnVjdHVyZWQgZGF0YSBzZXJpYWxpc2F0aW9uIG1lY2hhbmlzbSIKK0RFU0NSSVBUSU9OID0gIlByb3RvY29sIEJ1ZmZlcnMgYXJlIGEgd2F5IG9mIGVuY29kaW5nIHN0cnVjdHVyZWQgZGF0YSBpbiBhbiBcCitlZmZpY2llbnQgeWV0IGV4dGVuc2libGUgZm9ybWF0LiBHb29nbGUgdXNlcyBQcm90b2NvbCBCdWZmZXJzIGZvciBhbG1vc3QgXAorYWxsIG9mIGl0cyBpbnRlcm5hbCBSUEMgcHJvdG9jb2xzIGFuZCBmaWxlIGZvcm1hdHMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9wcm90b2J1ZiIKK1NFQ1RJT04gPSAiY29uc29sZS90b29scyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzdiNTc2MmUwN2YwYWY4Yzc0Y2U4MGE4YmRhNDI2NmIiCisKK0RFUEVORFMgPSAiemxpYiIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgcHJvdG9idWYtbmF0aXZlIgorCitTUkNSRVYgPSAiZDBiZmQ1MjIxMTgyZGExYTdjYzI4MGYzMzM3YjVlNDFhODk1MzljZiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dvb2dsZS9wcm90b2J1Zi5naXQ7YnJhbmNoPTMuMTEueCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wcm90b2J1Zi1maXgtY29uZmlndXJlLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0taW5jbHVkZS1kZXNjcmlwdG9yLmNjLXdoZW4tYnVpbGRpbmctbGlicC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWV4YW1wbGVzLU1ha2VmaWxlLXJlc3BlY3QtQ1hYLUxERkxBR1MtdmFyaWFibGVzLWZpeC0ucGF0Y2ggXAorIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBwdGVzdAorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tweXRob25dID0gIiwsIgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1wcm90b2M9ZWNobyIKKworVEVTVF9TUkNfRElSID0gImV4YW1wbGVzIgorTEFOR19TVVBQT1JUID0gImNwcCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAncHl0aG9uJywgJycsIGQpfSIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwlta2RpciAtcCAiJHtCfS8ke1RFU1RfU1JDX0RJUn0iCisKKwkjIEFkZCB0aGUgbG9jYXRpb24gb2YgdGhlIGNyb3NzLWNvbXBpbGVkIGhlYWRlciBhbmQgbGlicmFyeSBmaWxlcworCSMgd2hpY2ggaGF2ZW4ndCBiZWVuIGluc3RhbGxlZCB5ZXQuCisJY3AgIiR7Qn0vcHJvdG9idWYucGMiICIke0J9LyR7VEVTVF9TUkNfRElSfS9wcm90b2J1Zi5wYyIKKwlzZWQgLWUgJ3N8bGliZGlyPXxsaWJkaXI9JHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfXwnIC1pICIke0J9LyR7VEVTVF9TUkNfRElSfS9wcm90b2J1Zi5wYyIKKwlzZWQgLWUgJ3N8Q2ZsYWdzOnxDZmxhZ3M6IC1JJHtTfS9zcmN8JyAtaSAiJHtCfS8ke1RFU1RfU1JDX0RJUn0vcHJvdG9idWYucGMiCisJc2VkIC1lICdzfExpYnM6fExpYnM6IC1MJHtCfS9zcmMvLmxpYnN8JyAtaSAiJHtCfS8ke1RFU1RfU1JDX0RJUn0vcHJvdG9idWYucGMiCisJZXhwb3J0IFBLR19DT05GSUdfUEFUSD0iJHtCfS8ke1RFU1RfU1JDX0RJUn0iCisKKwkjIFNhdmUgdGhlIHBrZ2NmZyBzeXNyb290IHZhcmlhYmxlLCBhbmQgdXBkYXRlIGl0IHRvIG5vdGhpbmcgc28KKwkjIHRoYXQgaXQgZG9lc24ndCBhcHBlbmQgdGhlIHN5c3Jvb3QgdG8gdGhlIGJlZ2lubmluZyBvZiBwYXRocy4KKwkjIFRoZSBoZWFkZXIgYW5kIGxpYnJhcnkgZmlsZXMgYXJlbid0IGluc3RhbGxlZCB0byB0aGUgdGFyZ2V0CisJIyBzeXN0ZW0geWV0LiAgU28gdGhlIGFic29sdXRlIHBhdGhzIHdlcmUgc3BlY2lmaWVkIGFib3ZlLgorCXNhdmVfcGtnX2NvbmZpZ19zeXNyb290X2Rpcj0kUEtHX0NPTkZJR19TWVNST09UX0RJUgorCWV4cG9ydCBQS0dfQ09ORklHX1NZU1JPT1RfRElSPQorCisJIyBDb21waWxlIHRoZSB0ZXN0cworCWZvciBsYW5nIGluICR7TEFOR19TVVBQT1JUfTsgZG8KKwkJb2VfcnVubWFrZSAtQyAiJHtTfS8ke1RFU1RfU1JDX0RJUn0iICR7bGFuZ30KKwlkb25lCisKKwkjIFJlc3RvcmUgdGhlIHBrZ2NvbmZpZyBzeXNyb290IHZhcmlhYmxlCisJZXhwb3J0IFBLR19DT05GSUdfU1lTUk9PVF9ESVI9JHNhdmVfcGtnX2NvbmZpZ19zeXNyb290X2RpcgorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWxvY2FsIG9sZGRpcj1gcHdkYAorCisJY2QgIiR7U30vJHtURVNUX1NSQ19ESVJ9IgorCWluc3RhbGwgLWQgIiR7RH0vJHtQVEVTVF9QQVRIfSIKKwlmb3IgaSBpbiBhZGRfcGVyc29uKiBsaXN0X3Blb3BsZSo7IGRvCisJCWlmIFsgLXggIiRpIiBdOyB0aGVuCisJCQlpbnN0YWxsICIkaSIgIiR7RH0vJHtQVEVTVF9QQVRIfSIKKwkJZmkKKwlkb25lCisJY3AgIiR7U30vJHtURVNUX1NSQ19ESVJ9L2FkZHJlc3Nib29rX3BiMi5weSIgIiR7RH0vJHtQVEVTVF9QQVRIfSIKKwljZCAiJG9sZGRpciIKK30KKworUEFDS0FHRV9CRUZPUkVfUE4gPSAiJHtQTn0tY29tcGlsZXIgJHtQTn0tbGl0ZSIKKworRklMRVNfJHtQTn0tY29tcGlsZXIgPSAiJHtiaW5kaXJ9ICR7bGliZGlyfS9saWJwcm90b2Mke1NPTElCU30iCitGSUxFU18ke1BOfS1saXRlID0gIiR7bGliZGlyfS9saWJwcm90b2J1Zi1saXRlJHtTT0xJQlN9IgorCitSREVQRU5EU18ke1BOfS1jb21waWxlciA9ICIke1BOfSIKK1JERVBFTkRTXyR7UE59LWRldiArPSAiJHtQTn0tY29tcGlsZXIiCitSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJiYXNoICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24tcHJvdG9idWYnLCAnJywgZCl9IgorCitNSVBTX0lOU1RSVUNUSU9OX1NFVCA9ICJtaXBzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK0xERkxBR1NfYXBwZW5kX2FybSA9ICIgLWxhdG9taWMiCitMREZMQUdTX2FwcGVuZF9taXBzID0gIiAtbGF0b21pYyIKK0xERkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sYXRvbWljIgorTERGTEFHU19hcHBlbmRfbWlwc2VsID0gIiAtbGF0b21pYyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wdWdpeG1sL3B1Z2l4bWxfMS4xMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wdWdpeG1sL3B1Z2l4bWxfMS4xMC5iYgppbmRleCBkNDhhZDM3Li42OWU2NjI4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHVnaXhtbC9wdWdpeG1sXzEuMTAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B1Z2l4bWwvcHVnaXhtbF8xLjEwLmJiCkBAIC0xMyw2ICsxMyw4IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiZjk3MjM3ZTk5MDgyMDFjNmQ4NTM2MjEwNzQ3YjY2YWYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTVmMzk5ZmJiNDcwOTQyNDEwZDM0ODU4NGRjOTUzYmNhZWM5MjY0MTVkMzQ2MmY0NzFlZjM1MGYyOWI1ODcwYSIKIAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS96ZXV4LyR7QlBOfS9yZWxlYXNlcyIKKwogaW5oZXJpdCBjbWFrZQogCiBFWFRSQV9PRUNNQUtFICs9ICItREJVSUxEX1NIQVJFRF9MSUJTPU9OIFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNwdXNldF8xLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcHVzZXRfMS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjU1YTUxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNwdXNldF8xLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIkNwdXNldCBpcyBhIFB5dGhvbiBhcHBsaWNhdGlvbiB0byBtYWtlIHVzaW5nIHRoZSBjcHVzZXRzIGZhY2lsaXRpZXMgaW4gdGhlIExpbnV4IGtlcm5lbCBlYXNpZXIiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLVNSQ1JFViA9ICI2YzQ2ZDcxYTFjNmVlNzExMDYzMTUzYjlmNzc4NzI4MDEyOGY3MjUyIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xwZWNoYWNlay9jcHVzZXQuZ2l0O3Byb3RvY29sPWh0dHBzOyIKLQotaW5oZXJpdCBkaXN0dXRpbHMKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgIHB5dGhvbi1jb3JlIFwKLSAgICBweXRob24tcmUgXAotICAgIHB5dGhvbi1sb2dnaW5nIFwKLSAgICBweXRob24tdGV4dHV0aWxzIFwKLSAgICBweXRob24tdW5peGFkbWluIFwKLSAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kaXN0dXRpbHMtZXh0cmEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kaXN0dXRpbHMtZXh0cmEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViODRmNzQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGlzdHV0aWxzLWV4dHJhLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1kaXN0dXRpbHMtZXh0cmEuaW5jCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgcHl0aG9uLWRpc3R1dGlscyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mdXR1cmVzXzMuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZnV0dXJlc18zLjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTYzNmY3My4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mdXR1cmVzXzMuMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlIGNvbmN1cnJlbnQuZnV0dXJlcyBtb2R1bGUgcHJvdmlkZXMgYSBoaWdoLWxldmVsIGludGVyZmFjZSBmb3IgYXN5bmNocm9ub3VzbHkgZXhlY3V0aW5nIGNhbGxhYmxlcy4iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiUFNGIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ODM0ZDk4MmY5NzNjNDhiNmQ2NjJiNTk0NGM1YWI1NjciCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYWdyb25ob2xtL3B5dGhvbmZ1dHVyZXMiCi1ERVBFTkRTID0gInB5dGhvbiIKLQotU1JDX1VSSVttZDVzdW1dID0gImI0M2EzOWFlMTQ3NWUzZmQ2OTQwZjJiNGY3MjE0Njc1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlMDMzYWY3NmE1ZTM1ZjU4ZTU2ZGE3YTkxZTY4NzcwNmZhZjRlN2JkZmIyY2JjM2YyY2NhNmI5YmNkYTk3OTQiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzbWluXzIuMi4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNtaW5fMi4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwMGQxZTIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNtaW5fMi4yLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJKYXZhU2NyaXB0IG1pbmlmaWVyLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS90aWtpdHUvanNtaW4vIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zYTMzMDFjZTJhZDY0N2UxNzJmNGExMDE2YzY3MzI0ZCIKLQotaW5oZXJpdCBzZXR1cHRvb2xzIHB5cGkKLVNSQ19VUklbbWQ1c3VtXSA9ICIwMGU3YTMxNzlhNDU5MWFhYjJlZTcwN2IzMjE0ZTJmZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNmRmOTliMmNkMWM3NWQ5ZDM0MmU0MzM1YjUzNTc4OWI4ZGE5MTA3ZWM3NDgyMTI3MDZlZjdiYmU1YzI1NTNiIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdvYmplY3QvMDAwMS1weXRob24tcHlvYmplY3QtZml4LWluc3RhbGwtZGlyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlnb2JqZWN0LzAwMDEtcHl0aG9uLXB5b2JqZWN0LWZpeC1pbnN0YWxsLWRpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ4Y2RhNS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdvYmplY3QvMDAwMS1weXRob24tcHlvYmplY3QtZml4LWluc3RhbGwtZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLUZyb20gOGI0NjQ4ZDViYzUwY2IxYzE0OTYxZWQzOGJmOTdkNWE2OTNmNTIzNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDI0IEp1biAyMDE5IDE0OjUxOjUyICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHB5dGhvbi1weW9iamVjdDogZml4IHRoZSB3cm9uZyBpbnN0YWxsIGRpciBmb3IgcHl0aG9uMgotCi0qIGFmdGVyIHVwZ3JhZGUgdG8gMy4zMi4xLCBweWdvYmplY3Qgc3dpdGNoIHRvIGJ1aWxkIHdpdGggbWVzb24sIGFuZAotICBkZWZhdWx0IHB5dGhvbiBvcHRpb24gaXMgcHl0aG9uMywgc3dpdGNoIHRvIHB5dGhvbjIKLQotKiBkZWZhdWx0IGluc3RhbGwgZGlyIGdldCBieSBweXRob24uaW5zdGFsbF9zb3VyY2VzIGFuZCAKLXB5dGhvbi5nZXRfaW5zdGFsbF9kaXIgaXMgZ2V0IGZyb20gcHl0aG9uJ3Mgc3lzY29uZmlnIGluZm8sCi1ub3QgbGlrZSBweXRob24zLCBmb3IgcHl0aG9uMiwgdGhlIGluc3RhbGwgZGlyIGluY2x1ZGUgdGhlIGJhc2VkaXIgb2YKLXJlY2lwZS1zeXNyb290LW5hdGl2ZSwgYWRkIHN0YWdlZGlyIG9wdGlvbiBmb3IgdXNlciB0byBjb25maWcKLWNvcnJlY3QgaW5zdGFsbCBkaXIuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Utc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnaS9tZXNvbi5idWlsZCAgICAgICAgICAgIHwgNyArKystLS0tCi0gZ2kvb3ZlcnJpZGVzL21lc29uLmJ1aWxkICB8IDQgKystLQotIGdpL3JlcG9zaXRvcnkvbWVzb24uYnVpbGQgfCA0ICsrLS0KLSBtZXNvbi5idWlsZCAgICAgICAgICAgICAgIHwgNCArKystCi0gbWVzb25fb3B0aW9ucy50eHQgICAgICAgICB8IDEgKwotIHB5Z3RrY29tcGF0L21lc29uLmJ1aWxkICAgfCA0ICsrLS0KLSA2IGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2kvbWVzb24uYnVpbGQgYi9naS9tZXNvbi5idWlsZAotaW5kZXggYzFhZmQ2OC4uMjQ5YzIzZCAxMDA2NDQKLS0tLSBhL2dpL21lc29uLmJ1aWxkCi0rKysgYi9naS9tZXNvbi5idWlsZAotQEAgLTYwLDkgKzYwLDggQEAgcHl0aG9uX3NvdXJjZXMgPSBbCi0gICAndHlwZXMucHknLAotIF0KLSAKLS1weXRob24uaW5zdGFsbF9zb3VyY2VzKHB5dGhvbl9zb3VyY2VzLAotLSAgcHVyZSA6IGZhbHNlLAotLSAgc3ViZGlyIDogJ2dpJwotK2luc3RhbGxfZGF0YShweXRob25fc291cmNlcywKLSsgIGluc3RhbGxfZGlyOiBqb2luX3BhdGhzKHN0YWdlZGlyLCAnZ2knKQotICkKLSAKLSAjIGh0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL2lzc3Vlcy80MTE3Ci1AQCAtNzYsNyArNzUsNyBAQCBnaWV4dCA9IHB5dGhvbi5leHRlbnNpb25fbW9kdWxlKCdfZ2knLCBzb3VyY2VzLAotICAgZGVwZW5kZW5jaWVzIDogW3B5dGhvbl9leHRfZGVwLCBnbGliX2RlcCwgZ2lfZGVwLCBmZmlfZGVwXSwKLSAgIGluY2x1ZGVfZGlyZWN0b3JpZXM6IGluY2x1ZGVfZGlyZWN0b3JpZXMoJy4uJyksCi0gICBpbnN0YWxsOiB0cnVlLAotLSAgc3ViZGlyIDogJ2dpJywKLSsgIGluc3RhbGxfZGlyOiBqb2luX3BhdGhzKHN0YWdlZGlyLCAnZ2knKSwKLSAgIGNfYXJnczogcHlleHRfY19hcmdzICsgbWFpbl9jX2FyZ3MKLSApCi0KLWRpZmYgLS1naXQgYS9naS9vdmVycmlkZXMvbWVzb24uYnVpbGQgYi9naS9vdmVycmlkZXMvbWVzb24uYnVpbGQKLWluZGV4IDZmZjA3M2YuLjk2NGZlZjEgMTAwNjQ0Ci0tLS0gYS9naS9vdmVycmlkZXMvbWVzb24uYnVpbGQKLSsrKyBiL2dpL292ZXJyaWRlcy9tZXNvbi5idWlsZAotQEAgLTEwLDYgKzEwLDYgQEAgcHl0aG9uX3NvdXJjZXMgPSBbCi0gICAna2V5c3ltcy5weScsCi0gICAnX19pbml0X18ucHknXQotIAotLXB5dGhvbi5pbnN0YWxsX3NvdXJjZXMocHl0aG9uX3NvdXJjZXMsCi0tICBzdWJkaXIgOiBqb2luX3BhdGhzKCdnaScsICdvdmVycmlkZXMnKQotK2luc3RhbGxfZGF0YShweXRob25fc291cmNlcywKLSsgIGluc3RhbGxfZGlyOiBqb2luX3BhdGhzKHN0YWdlZGlyLCAnZ2knLCAnb3ZlcnJpZGVzJykKLSApCi1kaWZmIC0tZ2l0IGEvZ2kvcmVwb3NpdG9yeS9tZXNvbi5idWlsZCBiL2dpL3JlcG9zaXRvcnkvbWVzb24uYnVpbGQKLWluZGV4IGZkYzEzNmIuLmZjODhhZGYgMTAwNjQ0Ci0tLS0gYS9naS9yZXBvc2l0b3J5L21lc29uLmJ1aWxkCi0rKysgYi9naS9yZXBvc2l0b3J5L21lc29uLmJ1aWxkCi1AQCAtMSw1ICsxLDUgQEAKLSBweXRob25fc291cmNlcyA9IFsnX19pbml0X18ucHknXQotIAotLXB5dGhvbi5pbnN0YWxsX3NvdXJjZXMocHl0aG9uX3NvdXJjZXMsCi0tICBzdWJkaXIgOiBqb2luX3BhdGhzKCdnaScsICdyZXBvc2l0b3J5JykKLStpbnN0YWxsX2RhdGEocHl0aG9uX3NvdXJjZXMsCi0rICBpbnN0YWxsX2Rpcjogam9pbl9wYXRocyhzdGFnZWRpciwgJ2dpJywgJ3JlcG9zaXRvcnknKQotICkKLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCBkMjdhMDA1Li5lY2Q1NWQ1IDEwMDY0NAotLS0tIGEvbWVzb24uYnVpbGQKLSsrKyBiL21lc29uLmJ1aWxkCi1AQCAtMTY1LDEyICsxNjUsMTQgQEAgZWxzZQotICAgcHlfdmVyc2lvbiA9IHB5Z29iamVjdF92ZXJzaW9uCi0gZW5kaWYKLSAKLStzdGFnZWRpciA9IGdldF9vcHRpb24oJ3N0YWdlZGlyJykKLSsKLSBwa2dpbmZvX2NvbmYgPSBjb25maWd1cmF0aW9uX2RhdGEoKQotIHBrZ2luZm9fY29uZi5zZXQoJ1ZFUlNJT04nLCBweV92ZXJzaW9uKQotIGNvbmZpZ3VyZV9maWxlKGlucHV0IDogJ1BLRy1JTkZPLmluJywKLSAgIG91dHB1dCA6ICdQeUdPYmplY3QtQDBALmVnZy1pbmZvJy5mb3JtYXQocHlfdmVyc2lvbiksCi0gICBjb25maWd1cmF0aW9uIDogcGtnaW5mb19jb25mLAotLSAgaW5zdGFsbF9kaXIgOiBweXRob24uZ2V0X2luc3RhbGxfZGlyKHB1cmUgOiBmYWxzZSkpCi0rICBpbnN0YWxsX2RpciA6IHN0YWdlZGlyKQotIAotIHN1YmRpcignZ2knKQotIHN1YmRpcigncHlndGtjb21wYXQnKQotZGlmZiAtLWdpdCBhL21lc29uX29wdGlvbnMudHh0IGIvbWVzb25fb3B0aW9ucy50eHQKLWluZGV4IDVkZDRjYmMuLjIxZGVmMTYgMTAwNjQ0Ci0tLS0gYS9tZXNvbl9vcHRpb25zLnR4dAotKysrIGIvbWVzb25fb3B0aW9ucy50eHQKLUBAIC0xLDMgKzEsNCBAQAotIG9wdGlvbigncHl0aG9uJywgdHlwZSA6ICdzdHJpbmcnLCB2YWx1ZSA6ICdweXRob24zJykKLSBvcHRpb24oJ3B5Y2Fpcm8nLCB0eXBlIDogJ2Jvb2xlYW4nLCB2YWx1ZSA6IHRydWUsIGRlc2NyaXB0aW9uIDogJ2J1aWxkIHdpdGggcHljYWlybyBpbnRlZ3JhdGlvbicpCi0gb3B0aW9uKCd0ZXN0cycsIHR5cGUgOiAnYm9vbGVhbicsIHZhbHVlIDogdHJ1ZSwgZGVzY3JpcHRpb24gOiAnYnVpbGQgdW5pdCB0ZXN0cycpCi0rb3B0aW9uKCdzdGFnZWRpcicsIHR5cGUgOiAnc3RyaW5nJywgdmFsdWUgOiAnJykKLWRpZmYgLS1naXQgYS9weWd0a2NvbXBhdC9tZXNvbi5idWlsZCBiL3B5Z3RrY29tcGF0L21lc29uLmJ1aWxkCi1pbmRleCA5ZTQzYzQ0Li5lZjMzMjJkIDEwMDY0NAotLS0tIGEvcHlndGtjb21wYXQvbWVzb24uYnVpbGQKLSsrKyBiL3B5Z3RrY29tcGF0L21lc29uLmJ1aWxkCi1AQCAtMyw2ICszLDYgQEAgcHl0aG9uX3NvdXJjZXMgPSBbCi0gICAnZ2VuZXJpY3RyZWVtb2RlbC5weScsCi0gICAncHlndGtjb21wYXQucHknXQotIAotLXB5dGhvbi5pbnN0YWxsX3NvdXJjZXMocHl0aG9uX3NvdXJjZXMsCi0tICBzdWJkaXIgOiAncHlndGtjb21wYXQnCi0raW5zdGFsbF9kYXRhKHB5dGhvbl9zb3VyY2VzLAotKyAgaW5zdGFsbF9kaXI6IGpvaW5fcGF0aHMoc3RhZ2VkaXIsICdweWd0a2NvbXBhdCcpCi0gKQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdvYmplY3RfMy4zNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlnb2JqZWN0XzMuMzQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNiZDA3Zi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdvYmplY3RfMy4zNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gR09iamVjdCBiaW5kaW5ncyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucHlndGsub3JnLyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IgotCi1HTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgotaW5oZXJpdCBnbm9tZWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGRpc3R1dGlscy1iYXNlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1ERVBFTkRTICs9ICJweXRob24gZ2xpYi0yLjAiCi0KLVNSQ05BTUUgPSAicHlnb2JqZWN0IgotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzLyR7U1JDTkFNRX0vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtcHl0aG9uLXB5b2JqZWN0LWZpeC1pbnN0YWxsLWRpci5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjYTFkYzRmMzFjMWQ2ZDI4Mzc1OGU4ZjMxNWE4OGFiNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4N2UyYzlhYTc4NWYzNTJlZjExMWRjYzVmNjNkZjliODVjZjZlMDVlNTJmZjA0ZjgwM2ZmYmViZGFjZjUyNzFhIgotCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUID0gImludHJvc3BlY3Rpb24iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJzdGFnZWRpciIKLQotUEFDS0FHRUNPTkZJR1tjYWlyb10gPSAiLURweWNhaXJvPXRydWUsLURweWNhaXJvPWZhbHNlLCBjYWlybyBweXRob24tcHljYWlybywgcHl0aG9uLXB5Y2Fpcm8iCi1QQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItRHRlc3RzPXRydWUsIC1EdGVzdHM9ZmFsc2UsICwgIgotUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi1EcHl0aG9uPXB5dGhvbjMsIC1EcHl0aG9uPXB5dGhvbjIsICwgIgotUEFDS0FHRUNPTkZJR1tzdGFnZWRpcl0gPSAiLURzdGFnZWRpcj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSwgLURzdGFnZWRpcj0iIiwgLCAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLXBrZ3V0aWwiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIFJlbW92ZSBmaWxlcyB0aGF0IGNsYXNoIHdpdGggcHl0aG9uMy1weWdvYmplY3Q7IHRoZWlyIGNvbnRlbnQgaXMgc2FtZQotICAgIHJtIC1yICR7RH0ke2luY2x1ZGVkaXJ9L3B5Z29iamVjdC0zLjAvcHlnb2JqZWN0LmggJHtEfSR7bGliZGlyfS9wa2djb25maWcKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dG9tbC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRvbWwuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODA1MzFkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dG9tbC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1TVU1NQVJZID0gIkEgVE9NTC0wLjQuMCBwYXJzZXIvd3JpdGVyIGZvciBQeXRob24iCi1IT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B5dG9tbC8iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Y2ZmZjQyMzY5OWJkYWVmMjQzMzE5MzNhYzRmNTYwNzgiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlNTlkZDM2YTU1OWRkMmE4NzZlNGMxNDljNjllOTQ3YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZWVjZjdjOGQwYWRjZmYzYjM3NWIwOWZlNDAzNDA3YWE5YjY0NWM0OTllNWFiOGNhYzY3MGFjNGEzNWY2MWU3IgotCi1pbmhlcml0IHB5cGkKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0b21sXzAuMS4yMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dG9tbF8wLjEuMjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4ZmE5NTMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0b21sXzAuMS4yMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXB5dG9tbC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeF8xLjEzLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaXhfMS4xMy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjI2ZTgzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeF8xLjEzLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaXguaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13aGljaF8xLjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdoaWNoXzEuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDFmZGM3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdoaWNoXzEuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAid2hpY2gucHkgLS0gYSBwb3J0YWJsZSBHTlUgd2hpY2ggcmVwbGFjZW1lbnQiCi1IT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3Avd2hpY2gvIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0wMzBiMDk3OTg2ODE0ODJiOWFkMTJhYzQ3YmU0OTZlYSIKLQotaW5oZXJpdCBzZXR1cHRvb2xzIHB5cGkgcHl0aG9uLWRpcgotCi1TUkNSRVYgPSAiNDI1YmRlZWIyZDg3YzM2ZTIzMTNkYzRiOGQ2OWZmMmJiNWEwMmVlOSIKLVBZUElfU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3RyZW50bS93aGljaCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgcm1kaXIgLXAgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfQotICAgIHJtZGlyIC1wIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2RhdGFkaXJ9Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9zaXAvc2lwXzQuMTkuMTkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvc2lwL3NpcF80LjE5LjE5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGExNWI4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9zaXAvc2lwXzQuMTkuMTkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIHNpcC5pbmMKLQotREVQRU5EUyA9ICJweXRob24iCi0KLWluaGVyaXQgcHl0aG9uLWRpciBweXRob25uYXRpdmUKLQotUEFDS0FHRVMgKz0gInB5dGhvbi1zaXAiCi0KLUZJTEVTX3B5dGhvbi1zaXAgPSAiJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy8iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvLmRlYnVnIgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdWZ0cmFjZS91ZnRyYWNlXzAuOS4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3VmdHJhY2UvdWZ0cmFjZV8wLjkuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGJhNjA3Yy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdWZ0cmFjZS91ZnRyYWNlXzAuOS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotU1VNTUFSWSA9ICJUcmFjZSBhbmQgYW5hbHl6ZSBleGVjdXRpb24gb2YgYSBwcm9ncmFtIHdyaXR0ZW4gaW4gQy9DKysiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbmFtaHl1bmcvdWZ0cmFjZSIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL25hbWh5dW5nL3VmdHJhY2UvaXNzdWVzIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotREVQRU5EUyA9ICJlbGZ1dGlscyIKLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIgotCi1pbmhlcml0IGF1dG90b29scwotCi0jIHYwLjkuMwotU1JDUkVWID0gImU3Nzc4MGU3NTI0YzBhOTdmMjUzMTNiMjA1ODM3MTkxYmJlOTcxMmEiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbmFtaHl1bmcvJHtCUE59IFwKLSAgICAgICAgICAgIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotTERGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbGFyZ3AiCi0KLWRlZiBzZXRfdGFyZ2V0X2FyY2goZCk6Ci0gICAgaW1wb3J0IHJlCi0gICAgYXJjaCA9IGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpCi0gICAgaWYgcmUubWF0Y2gocidpLjg2JywgYXJjaCwgcmUuSSk6Ci0gICAgICAgIHJldHVybiAnaTM4NicKLSAgICBlbGlmIHJlLm1hdGNoKCdhcm1lYicsIGFyY2gsIHJlLkkpOgotICAgICAgICByZXR1cm4gJ2FybScKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gYXJjaAotCi1FWFRSQV9VRlRSQUNFX09FQ09ORiA9ICJBUkNIPSR7QHNldF90YXJnZXRfYXJjaChkKX0gXAotICAgICAgICAgICAgICAgICAgICAgICAgd2l0aF9lbGZ1dGlscz0vdXNlL2xpYmVsZi9mcm9tL3N5c3Jvb3QiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICAke1N9L2NvbmZpZ3VyZSAke0VYVFJBX1VGVFJBQ0VfT0VDT05GfQotfQotCi1GSUxFU19TT0xJQlNERVYgPSAiIgotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qLnNvIgotCi1DT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0fGFhcmNoNjR8YXJtKSIKLQotIyB1ZnRyYWNlIHN1cHBvcnRzIGFybXY2IGFuZCBhYm92ZQotQ09NUEFUSUJMRV9IT1NUX2FybXY0ID0gJ251bGwnCi1DT01QQVRJQkxFX0hPU1RfYXJtdjUgPSAnbnVsbCcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy91ZnRyYWNlL3VmdHJhY2VfMC45LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdWZ0cmFjZS91ZnRyYWNlXzAuOS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmZTQ2MWIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdWZ0cmFjZS91ZnRyYWNlXzAuOS40LmJiCkBAIC0wLDAgKzEsNDUgQEAKK1NVTU1BUlkgPSAiVHJhY2UgYW5kIGFuYWx5emUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbSB3cml0dGVuIGluIEMvQysrIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL25hbWh5dW5nL3VmdHJhY2UiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9uYW1oeXVuZy91ZnRyYWNlL2lzc3VlcyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK0RFUEVORFMgPSAiZWxmdXRpbHMiCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGFyZ3Atc3RhbmRhbG9uZSIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworIyB2MC45LjQKK1NSQ1JFViA9ICI1ZTQyMmMwZWM4N2I0MWQxNGU5Y2U4NTI3OTgzNDA2NzE4ZWY2NGUwIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL25hbWh5dW5nLyR7QlBOfSBcCisgICAgICAgICAgICIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0xERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWxhcmdwIgorCitkZWYgc2V0X3RhcmdldF9hcmNoKGQpOgorICAgIGltcG9ydCByZQorICAgIGFyY2ggPSBkLmdldFZhcignVEFSR0VUX0FSQ0gnKQorICAgIGlmIHJlLm1hdGNoKHInaS44NicsIGFyY2gsIHJlLkkpOgorICAgICAgICByZXR1cm4gJ2kzODYnCisgICAgZWxpZiByZS5tYXRjaCgnYXJtZWInLCBhcmNoLCByZS5JKToKKyAgICAgICAgcmV0dXJuICdhcm0nCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGFyY2gKKworRVhUUkFfVUZUUkFDRV9PRUNPTkYgPSAiQVJDSD0ke0BzZXRfdGFyZ2V0X2FyY2goZCl9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhfZWxmdXRpbHM9L3VzZS9saWJlbGYvZnJvbS9zeXNyb290IgorCitkb19jb25maWd1cmUoKSB7CisgICAgJHtTfS9jb25maWd1cmUgJHtFWFRSQV9VRlRSQUNFX09FQ09ORn0KK30KKworRklMRVNfU09MSUJTREVWID0gIiIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vKi5zbyIKKworQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NHxhYXJjaDY0fGFybSkiCisKKyMgdWZ0cmFjZSBzdXBwb3J0cyBhcm12NiBhbmQgYWJvdmUKK0NPTVBBVElCTEVfSE9TVF9hcm12NCA9ICdudWxsJworQ09NUEFUSUJMRV9IT1NUX2FybXY1ID0gJ251bGwnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMveWFzbS95YXNtX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy95YXNtL3lhc21fZ2l0LmJiCmluZGV4IGRjNGZiZjcuLjUzODU2MjYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy95YXNtL3lhc21fZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy95YXNtL3lhc21fZ2l0LmJiCkBAIC0xMyw3ICsxMyw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHl0aG9ubmF0aXZlCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHB5dGhvbjNuYXRpdmUKIAogQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiQ0NMRF9GT1JfQlVJTEQ9JyR7Q0NfRk9SX0JVSUxEfSciCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ib2luYy9ib2luYy1jbGllbnRfNy4xNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ib2luYy9ib2luYy1jbGllbnRfNy4xNi5iYgppbmRleCAxYjBhZjU1Li5kYjkwZjA2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYm9pbmMvYm9pbmMtY2xpZW50XzcuMTYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2JvaW5jL2JvaW5jLWNsaWVudF83LjE2LmJiCkBAIC0yOSw3ICsyOSw3IEBACiAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2d0aysgbGlibm90aWZ5IHhjYi11dGlsIGxpYnhzY3Juc2F2ZXInLCAnJywgZCl9IFwKICAgICAgICAgICAgbmV0dGxlIFwKICIKLVNSQ1JFViA9ICJhNDMyZTFjY2JmODY0Zjk5YzdiMjlhMTY0NWRlMzgwNTY5MTVmOTQ0IgorU1JDUkVWID0gImUwZTAzM2FmOWZjYTNjY2E4NGEzNDE3ZWE2NTMxYWUyNWJlNzNhN2EiCiBCUkFOQ0ggPSAiY2xpZW50X3JlbGVhc2UvNy8ke1BWfSIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9CT0lOQy9ib2luYztwcm90b2NvbD1odHRwczticmFuY2g9JHtCUkFOQ0h9IFwKICAgICAgICAgICAgZmlsZTovL2JvaW5jLUFNX0NPTkRJVElPTkFMLnBhdGNoIFwKQEAgLTczLDE1ICs3MywxNiBAQAogCXNlZCAtaSAtZSAnc3xec3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Lip8c3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9IiJ8ZycgJHtCfS8ke1RBUkdFVF9TWVN9LWxpYnRvb2wKIAlzZWQgLWkgLWUgJ3N8XnJ1bnBhdGhfdmFyPUxEX1JVTl9QQVRIfHJ1bnBhdGhfdmFyPURJRV9SUEFUSF9ESUV8ZycgJHtCfS8ke1RBUkdFVF9TWVN9LWxpYnRvb2wKIH0KKwogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAJaWYgWyAtZSAke0R9JHtub25hcmNoX2xpYmRpcn0vc3lzdGVtZC9zeXN0ZW0vYm9pbmMtY2xpZW50LnNlcnZpY2UgXTsgdGhlbgotICAgICAgICAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQogCQltdiBcCiAJCSR7RH0ke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kL3N5c3RlbS9ib2luYy1jbGllbnQuc2VydmljZSBcCiAJCSR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2JvaW5jLWNsaWVudC5zZXJ2aWNlCiAJCXJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kL3N5c3RlbSBcCi0gICAgICAgICAgICAgICAgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQgXAotICAgICAgICAgICAgICAgICR7RH0ke25vbmFyY2hfbGliZGlyfQorCQkke0R9JHtub25hcmNoX2xpYmRpcn0vc3lzdGVtZCBcCisJCSR7RH0ke25vbmFyY2hfbGliZGlyfQogCWZpCiB9CiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9icm90bGkvYnJvdGxpXzEuMC43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Jyb3RsaS9icm90bGlfMS4wLjcuYmIKaW5kZXggZTRlNDU0Yi4uNzBkYmNhZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Jyb3RsaS9icm90bGlfMS4wLjcuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Jyb3RsaS9icm90bGlfMS4wLjcuYmIKQEAgLTE4LDMgKzE4LDUgQEAKIAkJbXYgLXYgIiR7bGlifSIgIiQoZWNobyAke2xpYn0gfCBzZWQgcy8tc3RhdGljLy8pIgogCWRvbmUKIH0KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2NfMjAxOTExMjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2NfMjAxOTExMjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0ZTU3ZjUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjXzIwMTkxMTI1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotIyBTaWdoLiBUaGlzIGlzIG9uZSBvZiB0aG9zZSBwbGFjZXMgd2hlcmUgZXZlcnlvbmUgbGljZW5zZXMgaXQgZGlmZmVyZW50bHkuIFNvbWVvbmUKLSMgZXZlbiBhcHBseSBVQ0IgdG8gaXQgKEZyZWUvTmV0L09wZW5CU0QpLiBUaGUgbWFpbnRhaW5lciBzdGF0ZXMgdGhhdDoKLSMgIkkndmUgZm91bmQgbm8gcmVsaWFibGUgc291cmNlIHdoaWNoIHN0YXRlcyB0aGF0IGJ5YWNjIG11c3QgYmVhciBhIFVDQiBjb3B5cmlnaHQuIgotIyBTZXR0aW5nIHRvIFBEIGFzIHRoaXMgaXMgd2hhdCB0aGUgdXBzdHJlYW0gaGFzIGl0IGFzLgotCi1MSUNFTlNFID0gIlBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcGFja2FnZS9kZWJpYW4vY29weXJpZ2h0O21kNT0zZWI3YzYzNTQzNGZhZmUyM2VmMzBmYzI2M2U2M2IyZiIKLXJlcXVpcmUgYnlhY2MuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2NzQ1YTRmYmYwNzIzYzRjOTI4MGZjM2U1NjhiM2QxYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNzFjMmViZTM2YWZhYTg0NDhiODBlODkzNDczYTY4MWU2M2EzYjhhNGVkNjM2YzBkNjc1NzgwYTAyNDExY2RlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjXzIwMjAwMzMwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjXzIwMjAwMzMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NTMxMWMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2NfMjAyMDAzMzAuYmIKQEAgLTAsMCArMSwxMSBAQAorIyBTaWdoLiBUaGlzIGlzIG9uZSBvZiB0aG9zZSBwbGFjZXMgd2hlcmUgZXZlcnlvbmUgbGljZW5zZXMgaXQgZGlmZmVyZW50bHkuIFNvbWVvbmUKKyMgZXZlbiBhcHBseSBVQ0IgdG8gaXQgKEZyZWUvTmV0L09wZW5CU0QpLiBUaGUgbWFpbnRhaW5lciBzdGF0ZXMgdGhhdDoKKyMgIkkndmUgZm91bmQgbm8gcmVsaWFibGUgc291cmNlIHdoaWNoIHN0YXRlcyB0aGF0IGJ5YWNjIG11c3QgYmVhciBhIFVDQiBjb3B5cmlnaHQuIgorIyBTZXR0aW5nIHRvIFBEIGFzIHRoaXMgaXMgd2hhdCB0aGUgdXBzdHJlYW0gaGFzIGl0IGFzLgorCitMSUNFTlNFID0gIlBEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcGFja2FnZS9kZWJpYW4vY29weXJpZ2h0O21kNT0yNjI4NTdlYzU5MjNmMDczZmEwNmExZjE4MTIyMjVlYSIKK3JlcXVpcmUgYnlhY2MuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkZWNmNmU2YjgyZWEyZWZhZTZiYmFkMzJkNzc3N2RhOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMDk5ZTJkZDhhNjg0ZDczOWFjNmI5YTBlNDNkNDY4MzE0YTViYzM0ZmQyMTQ2NjUwMmQxMjBiMThkZjUxZmIwIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lLW1hc3RlcmZpbGVzL3B5dGhvbjMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmUtbWFzdGVyZmlsZXMvcHl0aG9uMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNmY2NzAxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lLW1hc3RlcmZpbGVzL3B5dGhvbjMucGF0Y2gKQEAgLTAsMCArMSwxNiBAQAorLS0tIGEvbW9kdWxlcy9wYWNrYWdlcy9hcHRfZ2V0CisrKysgYi9tb2R1bGVzL3BhY2thZ2VzL2FwdF9nZXQKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Zhci9jZmVuZ2luZS9iaW4vcHl0aG9uCisrIyEvdmFyL2NmZW5naW5lL2Jpbi9weXRob24zCisgCisgaW1wb3J0IHN5cworIGltcG9ydCBvcworLS0tIGEvbW9kdWxlcy9wYWNrYWdlcy9hcHRfZ2V0LmluCisrKysgYi9tb2R1bGVzL3BhY2thZ2VzL2FwdF9nZXQuaW4KK0BAIC0xLDQgKzEsNCBAQAorLSMhQGJpbmRpckAvcHl0aG9uCisrIyFAYmluZGlyQC9weXRob24zCisgCisgaW1wb3J0IHN5cworIGltcG9ydCBvcwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lLW1hc3RlcmZpbGVzXzMuMTIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jZmVuZ2luZS9jZmVuZ2luZS1tYXN0ZXJmaWxlc18zLjEyLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkYTZhZjkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lLW1hc3RlcmZpbGVzXzMuMTIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChDKSAyMDE0IC0gMjAxNyBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KLSMKLVNVTU1BUlkgPSAiQmFzZSBwb2xpY3kgZm9yIENGRW5naW5lIgotCi1ERVNDUklQVElPTiA9ICJDRkVuZ2luZSBpcyBhbiBJVCBpbmZyYXN0cnVjdHVyZSBhdXRvbWF0aW9uIGZyYW1ld29yayBcCi10aGF0IGhlbHBzIGVuZ2luZWVycywgc3lzdGVtIGFkbWluaXN0cmF0b3JzIGFuZCBvdGhlciBzdGFrZWhvbGRlcnMgXAotaW4gYW4gSVQgc3lzdGVtIHRvIG1hbmFnZSBhbmQgdW5kZXJzdGFuZCBJVCBpbmZyYXN0cnVjdHVyZSB0aHJvdWdob3V0IFwKLWl0cyBsaWZlY3ljbGUuIENGRW5naW5lIHRha2VzIHN5c3RlbXMgZnJvbSBCdWlsZCB0byBEZXBsb3ksIE1hbmFnZSBhbmQgQXVkaXQuIFwKLSBcCi1UaGlzIHBhY2thZ2UgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBhIHN0YWJsZSBiYXNlIHBvbGljeSBmb3IgXAotaW5zdGFsbGF0aW9ucyBhbmQgdXBncmFkZXMsIGFuZCBpcyB1c2VkIGJ5IENGRW5naW5lIDMuNiBhbmQgbmV3ZXIuIFwKLSBcCi1UaGUgY29udGVudHMgb2YgdGhpcyBwYWNrZ2UgYXJlIGludGVuZGVkIHRvIGxpdmUgaW4gYC92YXIvY2ZlbmdpbmUvbWFzdGVyZmlsZXNgIFwKLW9yIHdoZXJldmVyIGAkKHN5cy5tYXN0ZXJkaXIpYCBwb2ludHMuIFwKLSIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2NmZW5naW5lLmNvbSIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05Zjc2NDI2ZjllZjhjNmY2NzM5ZmFkZDIxZDgxN2E0ZiIKLQotU1JDX1VSSSA9ICJodHRwczovL2NmZW5naW5lLXBhY2thZ2UtcmVwb3MuczMuYW1hem9uYXdzLmNvbS90YXJiYWxscy8ke0JQfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkNTliZDhjOTU2MjBkYTgxNmMzODJmNzQ5ZDQyNTg2MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYzUwZTNkOGM3MDIwOTdlMTNhMjEyNTg2MjZkOTM2ZDZmZjJlNjQ5MmU4OTNkZmUyODZmZjBkNjIwNGQ3YTY1IgotCi1pbmhlcml0IGF1dG90b29scwotCi1leHBvcnQgRVhQTElDSVRfVkVSU0lPTj0iJHtQVn0iCi0KLUVYVFJBX09FQ09ORiA9ICItLXByZWZpeD0ke2RhdGFkaXJ9L2NmZW5naW5lIgotCi1GSUxFU18ke1BOfSA9ICIke2RhdGFkaXJ9L2NmZW5naW5lIgotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWNvcmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmUtbWFzdGVyZmlsZXNfMy4xNS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lLW1hc3RlcmZpbGVzXzMuMTUuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWFjODU1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lLW1hc3RlcmZpbGVzXzMuMTUuMC5iYgpAQCAtMCwwICsxLDQxIEBACisjCisjIENvcHlyaWdodCAoQykgMjAxNCAtIDIwMTcgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCisjCitTVU1NQVJZID0gIkJhc2UgcG9saWN5IGZvciBDRkVuZ2luZSIKKworREVTQ1JJUFRJT04gPSAiQ0ZFbmdpbmUgaXMgYW4gSVQgaW5mcmFzdHJ1Y3R1cmUgYXV0b21hdGlvbiBmcmFtZXdvcmsgXAordGhhdCBoZWxwcyBlbmdpbmVlcnMsIHN5c3RlbSBhZG1pbmlzdHJhdG9ycyBhbmQgb3RoZXIgc3Rha2Vob2xkZXJzIFwKK2luIGFuIElUIHN5c3RlbSB0byBtYW5hZ2UgYW5kIHVuZGVyc3RhbmQgSVQgaW5mcmFzdHJ1Y3R1cmUgdGhyb3VnaG91dCBcCitpdHMgbGlmZWN5Y2xlLiBDRkVuZ2luZSB0YWtlcyBzeXN0ZW1zIGZyb20gQnVpbGQgdG8gRGVwbG95LCBNYW5hZ2UgYW5kIEF1ZGl0LiBcCisgXAorVGhpcyBwYWNrYWdlIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgYSBzdGFibGUgYmFzZSBwb2xpY3kgZm9yIFwKK2luc3RhbGxhdGlvbnMgYW5kIHVwZ3JhZGVzLCBhbmQgaXMgdXNlZCBieSBDRkVuZ2luZSAzLjYgYW5kIG5ld2VyLiBcCisgXAorVGhlIGNvbnRlbnRzIG9mIHRoaXMgcGFja2dlIGFyZSBpbnRlbmRlZCB0byBsaXZlIGluIGAvdmFyL2NmZW5naW5lL21hc3RlcmZpbGVzYCBcCitvciB3aGVyZXZlciBgJChzeXMubWFzdGVyZGlyKWAgcG9pbnRzLiBcCisiCisKK0hPTUVQQUdFID0gImh0dHA6Ly9jZmVuZ2luZS5jb20iCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OWY3NjQyNmY5ZWY4YzZmNjczOWZhZGQyMWQ4MTdhNGYiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9jZmVuZ2luZS1wYWNrYWdlLXJlcG9zLnMzLmFtYXpvbmF3cy5jb20vdGFyYmFsbHMvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3B5dGhvbjMucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNmQ0NTZmZGQ5YmQyNGZmNjYxN2VlYWEwNWVmYWU2MDIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGEwNzFjMGM0YmE3ZGY5YmFkOTMxNDRjZmY1ZmJjMDU2NmU1MTcyYWZkNjYyMDEwNzJlMzE5M2I3NmM1NWEzOCIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworZXhwb3J0IEVYUExJQ0lUX1ZFUlNJT049IiR7UFZ9IgorCitFWFRSQV9PRUNPTkYgPSAiLS1wcmVmaXg9JHtkYXRhZGlyfS9jZmVuZ2luZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgcm0gLXJmICR7RH0ke2RhdGFkaXJ9L2NmZW5naW5lL21vZHVsZXMvcGFja2FnZXMvenlwcGVyICR7RH0ke2RhdGFkaXJ9L2NmZW5naW5lL21vZHVsZXMvcGFja2FnZXMveXVtCit9CisKK0ZJTEVTXyR7UE59ID0gIiR7ZGF0YWRpcn0vY2ZlbmdpbmUiCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zLWNvcmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmVfMy4xMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lXzMuMTIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQwMTIzZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmVfMy4xMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTQgLSAyMDE3IFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgotIwotU1VNTUFSWSA9ICJDRkVuZ2luZSBpcyBhbiBJVCBpbmZyYXN0cnVjdHVyZSBhdXRvbWF0aW9uIGZyYW1ld29yayIKLQotREVTQ1JJUFRJT04gPSAiQ0ZFbmdpbmUgaXMgYW4gSVQgaW5mcmFzdHJ1Y3R1cmUgYXV0b21hdGlvbiBmcmFtZXdvcmsgXAotdGhhdCBoZWxwcyBlbmdpbmVlcnMsIHN5c3RlbSBhZG1pbmlzdHJhdG9ycyBhbmQgb3RoZXIgc3Rha2Vob2xkZXJzIFwKLWluIGFuIElUIHN5c3RlbSB0byBtYW5hZ2UgYW5kIHVuZGVyc3RhbmQgSVQgaW5mcmFzdHJ1Y3R1cmUgdGhyb3VnaG91dCBcCi1pdHMgbGlmZWN5Y2xlLiBDRkVuZ2luZSB0YWtlcyBzeXN0ZW1zIGZyb20gQnVpbGQgdG8gRGVwbG95LCBNYW5hZ2UgYW5kIEF1ZGl0LiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2NmZW5naW5lLmNvbSIKLQotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWY4YjM0ODI4YWIzNzNkNmIxYmI0YjBmYzYwYTc4NDk0IgotCi1ERVBFTkRTID0gImF0dHIgdG9reW9jYWJpbmV0IgotCi1TUkNfVVJJID0gImh0dHBzOi8vY2ZlbmdpbmUtcGFja2FnZS1yZXBvcy5zMy5hbWF6b25hd3MuY29tL3RhcmJhbGxzLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9zZXQtcGF0aC1vZi1kZWZhdWx0LWNvbmZpZy1maWxlLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzNlZjEyMjYwZGI0YjQzMDM1MjIyOWYzN2Y3Y2IwZTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDcxYmE5OGEyNzIzOTBjNmZhOGJjMjBlOGVhMjdmMDA1MGEwYTcyYTNlNmIyMDZhNDc2MmI0NjQ2YmUzMzJlYyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZAotCi1leHBvcnQgRVhQTElDSVRfVkVSU0lPTj0iJHtQVn0iCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjZmVuZ2luZTMuc2VydmljZSBjZi1hcGFjaGUuc2VydmljZSBjZi1odWIuc2VydmljZSBjZi1wb3N0Z3Jlcy5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjZi1ydW5hbGVydHMuc2VydmljZSBjZi1leGVjZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjZi1tb25pdG9yZC5zZXJ2aWNlICBjZi1zZXJ2ZXJkLnNlcnZpY2UgXAotIgotU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfSA9ICJkaXNhYmxlIgotCi1QQUNLQUdFQ09ORklHID8/PSAibGlicGNyZSBvcGVuc3NsIFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0gc3lzdGVtZCcsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2xpYnhtbDJdID0gIi0td2l0aC1saWJ4bWwyPXllcywtLXdpdGgtbGlieG1sMj1ubyxsaWJ4bWwyLCIKLVBBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0td2l0aC1teXNxbD15ZXMsLS13aXRoLW15c3FsPW5vLG15c3FsLCIKLVBBQ0tBR0VDT05GSUdbcG9zdGdyZXNxbF0gPSAiLS13aXRoLXBvc3RncmVzcWw9eWVzLC0td2l0aC1wb3N0Z3Jlc3FsPW5vLHBvc3RncmVzcWwsIgotUEFDS0FHRUNPTkZJR1thY2xdID0gIi0td2l0aC1saWJhY2w9eWVzLC0td2l0aC1saWJhY2w9bm8sYWNsLCIKLVBBQ0tBR0VDT05GSUdbbGlidmlydF0gPSAiLS13aXRoLWxpYnZpcnQ9eWVzLC0td2l0aC1saWJ2aXJ0PW5vLGxpYnZpcnQsIgotUEFDS0FHRUNPTkZJR1tsaWJwY3JlXSA9ICItLXdpdGgtcGNyZT15ZXMsLS13aXRoLXBjcmU9bm8sbGlicGNyZSwiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsPXllcywtLXdpdGgtb3BlbnNzbD1ubyxvcGVuc3NsLCIKLVBBQ0tBR0VDT05GSUdbcGFtXSA9ICItLXdpdGgtcGFtPXllcywtLXdpdGgtcGFtPW5vLGxpYnBhbSwiCi1QQUNLQUdFQ09ORklHW2xpYnlhbWxdID0gIi0td2l0aC1saWJ5YW1sLC0td2l0aG91dC1saWJ5YW1sLGxpYnlhbWwsIgotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtc3lzdGVtZC1zZXJ2aWNlPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sLS13aXRob3V0LXN5c3RlbWQtc2VydmljZSIKLVBBQ0tBR0VDT05GSUdbbGliY3VybF0gPSAiLS13aXRoLWxpYmN1cmwsLS13aXRob3V0LWxpYmN1cmwsY3VybCwiCi0KLUVYVFJBX09FQ09ORiA9ICJod19jdl9mdW5jX3ZhX2NvcHk9eWVzIC0td2l0aC1pbml0LXNjcmlwdD0ke3N5c2NvbmZkaXJ9L2luaXQuZCAtLXdpdGgtdG9reW9jYWJpbmV0IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9LyR7QlBOfS9iaW4KLSAgICBmb3IgZiBpbiBgbHMgJHtEfSR7YmluZGlyfWA7IGRvCi0gICAgICAgIGxuIC1zICR7YmluZGlyfS9gYmFzZW5hbWUgJGZgICR7RH0ke2xvY2Fsc3RhdGVkaXJ9LyR7QlBOfS9iaW4vCi0gICAgZG9uZQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0Ci0gICAgY2F0IDw8IEVPRiA+ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvY2ZlbmdpbmUzCi1SVU5fQ0ZfU0VSVkVSRD0xCi1SVU5fQ0ZfRVhFQ0Q9MQotUlVOX0NGX01PTklUT1JEPTEKLVJVTl9DRl9IVUI9MAotRU9GCi0KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1tIDA3NTUgLUQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2NmZW5naW5lMyAke0R9JHtkYXRhZGlyfS8ke0JQTn0vY2ZlbmdpbmUzCi0gICAgICAgIHNlZCAtaSAtZSAncyMvZXRjL2luaXQuZCMke2RhdGFkaXJ9LyR7QlBOfSMnICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Lyouc2VydmljZQotICAgIGZpCi19Ci0KLVJERVBFTkRTXyR7UE59ICs9ICIke0JQTn0tbWFzdGVyZmlsZXMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmVfMy4xNS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lXzMuMTUuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDE0NmJmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lXzMuMTUuMC5iYgpAQCAtMCwwICsxLDcyIEBACisjCisjIENvcHlyaWdodCAoQykgMjAxNCAtIDIwMTcgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCisjCitTVU1NQVJZID0gIkNGRW5naW5lIGlzIGFuIElUIGluZnJhc3RydWN0dXJlIGF1dG9tYXRpb24gZnJhbWV3b3JrIgorCitERVNDUklQVElPTiA9ICJDRkVuZ2luZSBpcyBhbiBJVCBpbmZyYXN0cnVjdHVyZSBhdXRvbWF0aW9uIGZyYW1ld29yayBcCit0aGF0IGhlbHBzIGVuZ2luZWVycywgc3lzdGVtIGFkbWluaXN0cmF0b3JzIGFuZCBvdGhlciBzdGFrZWhvbGRlcnMgXAoraW4gYW4gSVQgc3lzdGVtIHRvIG1hbmFnZSBhbmQgdW5kZXJzdGFuZCBJVCBpbmZyYXN0cnVjdHVyZSB0aHJvdWdob3V0IFwKK2l0cyBsaWZlY3ljbGUuIENGRW5naW5lIHRha2VzIHN5c3RlbXMgZnJvbSBCdWlsZCB0byBEZXBsb3ksIE1hbmFnZSBhbmQgQXVkaXQuIgorCitIT01FUEFHRSA9ICJodHRwOi8vY2ZlbmdpbmUuY29tIgorCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjMzYWEyNWU1Mzk4MzIzN2NmMGJkNGMyMzhhZjI1NWYiCisKK0RFUEVORFMgPSAiYXR0ciB0b2t5b2NhYmluZXQgYmlzb24tbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHBzOi8vY2ZlbmdpbmUtcGFja2FnZS1yZXBvcy5zMy5hbWF6b25hd3MuY29tL3RhcmJhbGxzLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9zZXQtcGF0aC1vZi1kZWZhdWx0LWNvbmZpZy1maWxlLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImQ0ZGFiZmE0NmQ4YWZhMTUxYmU1NjEwZjE4NDM1NGU3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZhNTNlMTM3Zjg1MGViMjY4YThlN2FlNDU3OGI1ZGI1ZGMzODM2NTYzNDFmNTA1M2RjMWEzNTNlZDAyODgyNjUiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBzeXN0ZW1kCisKK2V4cG9ydCBFWFBMSUNJVF9WRVJTSU9OPSIke1BWfSIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImNmZW5naW5lMy5zZXJ2aWNlIGNmLWFwYWNoZS5zZXJ2aWNlIGNmLWh1Yi5zZXJ2aWNlIGNmLXBvc3RncmVzLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGNmLXJ1bmFsZXJ0cy5zZXJ2aWNlIGNmLWV4ZWNkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGNmLW1vbml0b3JkLnNlcnZpY2UgIGNmLXNlcnZlcmQuc2VydmljZSBcCisiCitTWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59ID0gImRpc2FibGUiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJsaWJwY3JlIG9wZW5zc2wgXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbSBzeXN0ZW1kJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbbGlieG1sMl0gPSAiLS13aXRoLWxpYnhtbDI9eWVzLC0td2l0aC1saWJ4bWwyPW5vLGxpYnhtbDIsIgorUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS13aXRoLW15c3FsPXllcywtLXdpdGgtbXlzcWw9bm8sbXlzcWwsIgorUEFDS0FHRUNPTkZJR1twb3N0Z3Jlc3FsXSA9ICItLXdpdGgtcG9zdGdyZXNxbD15ZXMsLS13aXRoLXBvc3RncmVzcWw9bm8scG9zdGdyZXNxbCwiCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLWxpYmFjbD15ZXMsLS13aXRoLWxpYmFjbD1ubyxhY2wsIgorUEFDS0FHRUNPTkZJR1tsaWJ2aXJ0XSA9ICItLXdpdGgtbGlidmlydD15ZXMsLS13aXRoLWxpYnZpcnQ9bm8sbGlidmlydCwiCitQQUNLQUdFQ09ORklHW2xpYnBjcmVdID0gIi0td2l0aC1wY3JlPXllcywtLXdpdGgtcGNyZT1ubyxsaWJwY3JlLCIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2w9eWVzLC0td2l0aC1vcGVuc3NsPW5vLG9wZW5zc2wsIgorUEFDS0FHRUNPTkZJR1twYW1dID0gIi0td2l0aC1wYW09eWVzLC0td2l0aC1wYW09bm8sbGlicGFtLCIKK1BBQ0tBR0VDT05GSUdbbGlieWFtbF0gPSAiLS13aXRoLWxpYnlhbWwsLS13aXRob3V0LWxpYnlhbWwsbGlieWFtbCwiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kLXNlcnZpY2U9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLXdpdGhvdXQtc3lzdGVtZC1zZXJ2aWNlIgorUEFDS0FHRUNPTkZJR1tsaWJjdXJsXSA9ICItLXdpdGgtbGliY3VybCwtLXdpdGhvdXQtbGliY3VybCxjdXJsLCIKKworRVhUUkFfT0VDT05GID0gImh3X2N2X2Z1bmNfdmFfY29weT15ZXMgLS13aXRoLWluaXQtc2NyaXB0PSR7c3lzY29uZmRpcn0vaW5pdC5kIC0td2l0aC10b2t5b2NhYmluZXQiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vJHtCUE59L2JpbgorICAgIGZvciBmIGluIGBscyAke0R9JHtiaW5kaXJ9YDsgZG8KKyAgICAgICAgbG4gLXMgJHtiaW5kaXJ9L2BiYXNlbmFtZSAkZmAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vJHtCUE59L2Jpbi8KKyAgICBkb25lCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKyAgICBjYXQgPDwgRU9GID4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9jZmVuZ2luZTMKK1JVTl9DRl9TRVJWRVJEPTEKK1JVTl9DRl9FWEVDRD0xCitSVU5fQ0ZfTU9OSVRPUkQ9MQorUlVOX0NGX0hVQj0wCitFT0YKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAtRCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY2ZlbmdpbmUzICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS9jZmVuZ2luZTMKKyAgICAgICAgc2VkIC1pIC1lICdzIy9ldGMvaW5pdC5kIyR7ZGF0YWRpcn0vJHtCUE59IycgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vKi5zZXJ2aWNlCisgICAgZmkKKyAgICBybSAtcmYgJHtEfSR7ZGF0YWRpcn0vY2ZlbmdpbmUvbW9kdWxlcy9wYWNrYWdlcy96eXBwZXIKK30KKworUkRFUEVORFNfJHtQTn0gKz0gIiR7QlBOfS1tYXN0ZXJmaWxlcyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZC8wMDAxLVJlbW92ZS1pbmNsdWRpbmctc3lzLXN5c2N0bC5oLW9uLWdsaWJjLWJhc2VkLXN5c3RlbXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGQvMDAwMS1SZW1vdmUtaW5jbHVkaW5nLXN5cy1zeXNjdGwuaC1vbi1nbGliYy1iYXNlZC1zeXN0ZW1zLnBhdGNoCmluZGV4IDNkZWUzNGMuLjc5NDg3ODggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZC8wMDAxLVJlbW92ZS1pbmNsdWRpbmctc3lzLXN5c2N0bC5oLW9uLWdsaWJjLWJhc2VkLXN5c3RlbXMucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkLzAwMDEtUmVtb3ZlLWluY2x1ZGluZy1zeXMtc3lzY3RsLmgtb24tZ2xpYmMtYmFzZWQtc3lzdGVtcy5wYXRjaApAQCAtMyw4MCArMywyOSBAQAogRGF0ZTogU2F0LCAyNyBKdWwgMjAxOSAxNDoyMDoxNCAtMDcwMAogU3ViamVjdDogW1BBVENIXSBSZW1vdmUgaW5jbHVkaW5nIHN5cy9zeXNjdGwuaCBvbiBnbGliYyBiYXNlZCBzeXN0ZW1zCiAKLUdsaWJjIDIuMzAgaGFzIGFkZGVkIGRlcHJlY2F0aW9uIG5vdGljZSBhbmQgY29sbGVjdGQgZGV0ZWN0cyBpdCBhcyB3YXJuaW5nIFsxXQorR2xpYmMgMi4zMCBoYXMgYWRkZWQgZGVwcmVjYXRpb24gbm90aWNlIGFuZCBjb2xsZWN0ZCBkZXRlY3RzIGl0IGFzCit3YXJuaW5nIFsxXQogCiBGaXhlcwotc3lzL3N5c2N0bC5oOjIxOjI6IGVycm9yOiAiVGhlIDxzeXMvc3lzY3RsLmg+IGhlYWRlciBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIiBbLVdlcnJvciwtVyN3YXJuaW5nc10KK3N5cy9zeXNjdGwuaDoyMToyOiBlcnJvcjogIlRoZSA8c3lzL3N5c2N0bC5oPiBoZWFkZXIgaXMgZGVwcmVjYXRlZCBhbmQKK3dpbGwgYmUgcmVtb3ZlZC4iIFstV2Vycm9yLC1XI3dhcm5pbmdzXQogCi1bMV0gaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvP3A9Z2xpYmMuZ2l0O2E9Y29tbWl0O2g9NzQ0ZTgyOTYzNzE2MmJiN2Q1MDI5NjMyYWFjZjM0MWM2NGI4Njk5MAorWzFdCitodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD1nbGliYy5naXQ7YT1jb21taXQ7aD03NDRlODI5NjM3MTYyYmI3ZDUwMjk2MzJhYWNmMzQxYzY0Yjg2OTkwCiAKLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vY29sbGVjdGQvY29sbGVjdGQvcHVsbC8zMjM0XQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKK1todHRwczovL2dpdGh1Yi5jb20vY29sbGVjdGQvY29sbGVjdGQvcHVsbC8zMjM0XQogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIC0tLQotIHNyYy9jb250ZXh0c3dpdGNoLmMgfCAyICstCi0gc3JjL21lbW9yeS5jICAgICAgICB8IDIgKy0KLSBzcmMvc3dhcC5jICAgICAgICAgIHwgMiArLQotIHNyYy91dWlkLmMgICAgICAgICAgfCAyICstCi0gNCBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisgc3JjL3Byb2Nlc3Nlcy5jIHwgMiArLQorIHNyYy91cHRpbWUuYyAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotLS0tIGEvc3JjL2NvbnRleHRzd2l0Y2guYwotKysrIGIvc3JjL2NvbnRleHRzd2l0Y2guYwotQEAgLTI2LDcgKzI2LDcgQEAKLSAjaW5jbHVkZSAiY29tbW9uLmgiCi0gI2luY2x1ZGUgInBsdWdpbi5oIgotIAotLSNpZmRlZiBIQVZFX1NZU19TWVNDVExfSAotKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1NZU0NUTF9IKSAmJiAhZGVmaW5lZChfX0dMSUJDX18pCi0gI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KLSAjZW5kaWYKLSAKLS0tLSBhL3NyYy9tZW1vcnkuYwotKysrIGIvc3JjL21lbW9yeS5jCi1AQCAtMjgsNyArMjgsNyBAQAotICNpbmNsdWRlICJjb21tb24uaCIKLSAjaW5jbHVkZSAicGx1Z2luLmgiCi0gCi0tI2lmZGVmIEhBVkVfU1lTX1NZU0NUTF9ICi0rI2lmIGRlZmluZWQoSEFWRV9TWVNfU1lTQ1RMX0gpICYmICFkZWZpbmVkKF9fR0xJQkNfXykKLSAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgotICNlbmRpZgotICNpZmRlZiBIQVZFX1NZU19WTU1FVEVSX0gKLS0tLSBhL3NyYy9zd2FwLmMKLSsrKyBiL3NyYy9zd2FwLmMKLUBAIC00OSw3ICs0OSw3IEBACi0gI2lmIEhBVkVfU1lTX1BBUkFNX0gKLSAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0gI2VuZGlmCi0tI2lmIEhBVkVfU1lTX1NZU0NUTF9ICi0rI2lmIGRlZmluZWQoSEFWRV9TWVNfU1lTQ1RMX0gpICYmICFkZWZpbmVkKF9fR0xJQkNfXykKLSAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgotICNlbmRpZgotICNpZiBIQVZFX1NZU19ES1NUQVRfSAotLS0tIGEvc3JjL3V1aWQuYwotKysrIGIvc3JjL3V1aWQuYwotQEAgLTI5LDcgKzI5LDcgQEAKLSAjaW5jbHVkZSAiY29tbW9uLmgiCi0gI2luY2x1ZGUgInBsdWdpbi5oIgotIAotLSNpZiBIQVZFX1NZU19TWVNDVExfSAotKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1NZU0NUTF9IKSAmJiAhZGVmaW5lZChfX0dMSUJDX18pCi0gI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KLSAjZW5kaWYKLSAKLS0tLSBhL3NyYy9jcHUuYwotKysrIGIvc3JjL2NwdS5jCi1AQCAtNjAsNyArNjAsNyBAQAotIAotICNpZiAoZGVmaW5lZChIQVZFX1NZU0NUTCkgJiYgSEFWRV9TWVNDVEwpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIChkZWZpbmVkKEhBVkVfU1lTQ1RMQllOQU1FKSAmJiBIQVZFX1NZU0NUTEJZTkFNRSkKLS0jaWZkZWYgSEFWRV9TWVNfU1lTQ1RMX0gKLSsjaWYgZGVmaW5lZChIQVZFX1NZU19TWVNDVExfSCkgJiYgIWRlZmluZWQoX19HTElCQ19fKQotICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+Ci0gI2VuZGlmCi0gCitkaWZmIC0tZ2l0IGEvc3JjL3Byb2Nlc3Nlcy5jIGIvc3JjL3Byb2Nlc3Nlcy5jCitpbmRleCBmODM5MTNhLi45ZjcxNTExIDEwMDY0NAogLS0tIGEvc3JjL3Byb2Nlc3Nlcy5jCiArKysgYi9zcmMvcHJvY2Vzc2VzLmMKLUBAIC04Miw3ICs4Miw3IEBACitAQCAtODcsNyArODcsNyBAQAogICNpZiBIQVZFX01BQ0hfVk1fUFJPVF9ICiAgI2luY2x1ZGUgPG1hY2gvdm1fcHJvdC5oPgogICNlbmRpZgpAQCAtODUsNiArMzQsOCBAQAogICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CiAgI2VuZGlmCiAgLyogI2VuZGlmIEhBVkVfVEhSRUFEX0lORk8gKi8KK2RpZmYgLS1naXQgYS9zcmMvdXB0aW1lLmMgYi9zcmMvdXB0aW1lLmMKK2luZGV4IDA4OTJiZGEuLjRiMTUxNTAgMTAwNjQ0CiAtLS0gYS9zcmMvdXB0aW1lLmMKICsrKyBiL3NyYy91cHRpbWUuYwogQEAgLTMzLDcgKzMzLDcgQEAKQEAgLTk2LDMgKzQ3LDcgQEAKICAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgogIC8qIFVzaW5nIHN5c2N0bCBpbnRlcmZhY2UgdG8gcmV0cmlldmUgdGhlIGJvb3QgdGltZSBvbiAqQlNEIC8gRGFyd2luIC8gT1MgWAogICAqIHN5c3RlbXMgKi8KKyAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZC8wMDAxLWNvbmRpdGlvbmFsbHktY2hlY2stbGlidmlydC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZC8wMDAxLWNvbmRpdGlvbmFsbHktY2hlY2stbGlidmlydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVlNzVjYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGQvMDAwMS1jb25kaXRpb25hbGx5LWNoZWNrLWxpYnZpcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDM4NWJmMWMyZWM1Nzk0MmUxN2VlNTI5ZTU3ZWVmMGRjZDk5OTA0ZTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDEgU2VwIDIwMTUgMTc6MDA6MzMgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gW1BBVENIXSBjb25kaXRpb25hbGx5IGNoZWNrIGxpYnZpcnQKLQotVXBzdHJlYW0tU3RhdHVlOiBQZW5kaW5nCi0KLWNoZWNrIGlmIGxpYnZpcnQgaXMgYXZhaWxhYmxlIG9ubHkgd2hlbiBhIHVzZXIgd2FudHMgdG8gdXNlIGxpYnZpcnQKLQotU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBjb25maWd1cmUuYWMgfCAxMyArKysrKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMTAxZDZmOWYuLmE3ZWNhOTdkIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC01NzU4LDExICs1NzU4LDE0IEBAIGVsc2UKLSAgIHdpdGhfbGlieG1sMj0ibm8gKHBrZy1jb25maWcgZG9lc24ndCBrbm93IGxpYnhtbC0yLjApIgotIGZpCi0gCi0tJFBLR19DT05GSUcgLS1leGlzdHMgbGlidmlydCAyPi9kZXYvbnVsbAotLWlmIHRlc3QgJD8gPSAwOyB0aGVuCi0tICB3aXRoX2xpYnZpcnQ9InllcyIKLS1lbHNlCi0tICB3aXRoX2xpYnZpcnQ9Im5vIChwa2ctY29uZmlnIGRvZXNuJ3Qga25vdyBsaWJ2aXJ0KSIKLStpZiB0ZXN0ICJ4JGVuYWJsZV9saWJ2aXJ0IiA9ICJ4eWVzIjsgdGhlbgotKwkkUEtHX0NPTkZJRyAtLWV4aXN0cyBsaWJ2aXJ0IDI+L2Rldi9udWxsCi0rCWlmIHRlc3QgIiQ/IiA9ICIwIgotKwl0aGVuCi0rCQl3aXRoX2xpYnZpcnQ9InllcyIKLSsJZWxzZQotKwkJd2l0aF9saWJ2aXJ0PSJubyAocGtnLWNvbmZpZyBkb2Vzbid0IGtub3cgbGlidmlydCkiCi0rCWZpCi0gZmkKLSAKLSBpZiB0ZXN0ICJ4JHdpdGhfbGlieG1sMiIgPSAieHllcyI7IHRoZW4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZC8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItV25vLWVycm9yLWZvcm1hdC10cnVuY2F0aW9uLWNvbXAucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGQvMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLVduby1lcnJvci1mb3JtYXQtdHJ1bmNhdGlvbi1jb21wLnBhdGNoCmluZGV4IGQyYzcyNjguLjhkMzFlMTIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZC8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItV25vLWVycm9yLWZvcm1hdC10cnVuY2F0aW9uLWNvbXAucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkLzAwMDEtY29uZmlndXJlLUNoZWNrLWZvci1Xbm8tZXJyb3ItZm9ybWF0LXRydW5jYXRpb24tY29tcC5wYXRjaApAQCAtMjMsOSArMjMsOSBAQAogaW5kZXggYTdlY2E5N2QuLjU2MGViOTg4IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC02Nzk0LDYgKzY3OTQsNyBAQCBpZiB0ZXN0ICJ4JGVuYWJsZV93ZXJyb3IiICE9ICJ4bm8iOyB0aGVuCi0gICBBTV9DRkxBR1M9IiRBTV9DRkxBR1MgLVdlcnJvciIKLSAgIEFNX0NYWEZMQUdTPSIkQU1fQ1hYRkxBR1MgLVdlcnJvciIKK0BAIC03MTAxLDYgKzcxMDEsNyBAQCBpZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KKyAgICAgQU1fQ1hYRkxBR1M9IiRBTV9DWFhGTEFHUyAtV2Vycm9yIgorICAgZmkKICBmaQogK0FYX0NIRUNLX0NPTVBJTEVfRkxBRyhbLVdlcnJvciAtV2Vycm9yPWZvcm1hdC10cnVuY2F0aW9uXSxbQU1fQ0ZMQUdTPSIkQU1fQ0ZMQUdTIC1Xbm8tZXJyb3I9Zm9ybWF0LXRydW5jYXRpb24iIEFNX0NYWEZMQUdTPSIkQU1fQ1hYRkxBR1MgLVduby1lcnJvcj1mb3JtYXQtdHJ1bmNhdGlvbiJdKQogIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkLzAwMDEtZml4LXRvLWJ1aWxkLXdpdGgtZ2xpYmMtMi4yNS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZC8wMDAxLWZpeC10by1idWlsZC13aXRoLWdsaWJjLTIuMjUucGF0Y2gKaW5kZXggYmU5NDJlNS4uMWUxNDBmOSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkLzAwMDEtZml4LXRvLWJ1aWxkLXdpdGgtZ2xpYmMtMi4yNS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGQvMDAwMS1maXgtdG8tYnVpbGQtd2l0aC1nbGliYy0yLjI1LnBhdGNoCkBAIC0xMSw4ICsxMSw4IEBACiBpbmRleCAzNzI1ZjlhLi4yMDIyMjViIDEwMDY0NAogLS0tIGEvc3JjL21kLmMKICsrKyBiL3NyYy9tZC5jCi1AQCAtMjUsNiArMjUsNyBAQAotICNpbmNsdWRlICJ1dGlsc19pZ25vcmVsaXN0LmgiCitAQCAtMjYsNiArMjYsNyBAQAorICNpbmNsdWRlICJ1dGlscy9pZ25vcmVsaXN0L2lnbm9yZWxpc3QuaCIKICAKICAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CiArI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZF81LjExLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGRfNS4xMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MGU4MmUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGRfNS4xMS4wLmJiCkBAIC0wLDAgKzEsODggQEAKK1NVTU1BUlkgPSAiQ29sbGVjdHMgYW5kIHN1bW1hcmlzZXMgc3lzdGVtIHBlcmZvcm1hbmNlIHN0YXRpc3RpY3MiCitERVNDUklQVElPTiA9ICJjb2xsZWN0ZCBpcyBhIGRhZW1vbiB3aGljaCBjb2xsZWN0cyBzeXN0ZW0gcGVyZm9ybWFuY2Ugc3RhdGlzdGljcyBwZXJpb2RpY2FsbHkgYW5kIHByb3ZpZGVzIG1lY2hhbmlzbXMgdG8gc3RvcmUgdGhlIHZhbHVlcyBpbiBhIHZhcmlldHkgb2Ygd2F5cywgZm9yIGV4YW1wbGUgaW4gUlJEIGZpbGVzLiIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xYmQyMWYxOWY3ZjBjNjFhN2JlOGVjYWNiMGUyODg1NCIKKworREVQRU5EUyA9ICJycmR0b29sIGN1cmwgbGlicGNhcCBsaWJ4bWwyIHlhamwgbGliZ2NyeXB0IGxpYnRvb2wgbHZtMiIKKworU1JDX1VSSSA9ICJodHRwOi8vY29sbGVjdGQub3JnL2ZpbGVzL2NvbGxlY3RkLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vY29sbGVjdGQuaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9jb2xsZWN0ZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL25vLWdjcnlwdC1iYWRwYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LXRvLWJ1aWxkLXdpdGgtZ2xpYmMtMi4yNS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItV25vLWVycm9yLWZvcm1hdC10cnVuY2F0aW9uLWNvbXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1EaXNhYmxlLW5ldy1nY2M4LXdhcm5pbmdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtbGliY29sbGVjdGRjbGllbnQtRml4LXN0cmluZy1vdmVyZmxvdy1lcnJvcnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtaW5jbHVkaW5nLXN5cy1zeXNjdGwuaC1vbi1nbGliYy1iYXNlZC1zeXN0ZW1zLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjEzYjFjOTQ2ZjY2ODRhYmU0NTNlMjRiNWNkODBlYzQ1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM3YjEwYTgwNmUzNGFhODU3MGMxY2FmYTYwMDZjNjA0Nzk2ZmFlMTNjYzJlMWIzZTYzMGQzM2RjYmE5ZTVkYjIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB5dGhvbjNuYXRpdmUgdXBkYXRlLXJjLmQgcGtnY29uZmlnIHN5c3RlbWQKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImNvbGxlY3RkLnNlcnZpY2UiCisKKyMgRmxvYXRpbmdwb2ludCBsYXlvdXQsIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQKKyMgJ25vdGhpbmcnLCAnZW5kaWFuZmxpcCcgb3IgJ2ludHN3YXAnCitGUExBWU9VVCA/PSAiLS13aXRoLWZwLWxheW91dD1ub3RoaW5nIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tvcGVuamRrXSA9ICItLXdpdGgtamF2YT0ke1NUQUdJTkdfRElSX1RBUkdFVH0ke2xpYmRpcn0vanZtLC0td2l0aG91dC1qYXZhLG9wZW5qZGstNyIKK1BBQ0tBR0VDT05GSUdbc25tcF0gPSAiLS1lbmFibGUtc25tcCwtLWRpc2FibGUtc25tcCAtLXdpdGgtbGlibmV0c25tcD1ubyxuZXQtc25tcCIKK1BBQ0tBR0VDT05GSUdbbGlibWVtY2FjaGVkXSA9ICItLXdpdGgtbGlibWVtY2FjaGVkLC0td2l0aG91dC1saWJtZW1jYWNoZWQsbGlibWVtY2FjaGVkIgorUEFDS0FHRUNPTkZJR1tpcHRhYmxlc10gPSAiLS1lbmFibGUtaXB0YWJsZXMsLS1kaXNhYmxlLWlwdGFibGVzLGlwdGFibGVzIgorUEFDS0FHRUNPTkZJR1twb3N0Z3Jlc3FsXSA9ICItLWVuYWJsZS1wb3N0Z3Jlc3FsIC0td2l0aC1saWJwcT15ZXMsIFwKKyAgICAgICAgLS1kaXNhYmxlLXBvc3RncmVzcWwgLS13aXRoLWxpYnBxPW5vLHBvc3RncmVzcWwiCitQQUNLQUdFQ09ORklHW215c3FsXSA9ICItLWVuYWJsZS1teXNxbCAtLXdpdGgtbGlibXlzcWw9eWVzLCBcCisgICAgICAgIC0tZGlzYWJsZS1teXNxbCAtLXdpdGgtbGlibXlzcWw9bm8sbXlzcWw1IgorUEFDS0FHRUNPTkZJR1tkYmldID0gIi0tZW5hYmxlLWRiaSwtLWRpc2FibGUtZGJpLGxpYmRiaSIKK1BBQ0tBR0VDT05GSUdbbW9kYnVzXSA9ICItLWVuYWJsZS1tb2RidXMsLS1kaXNhYmxlLW1vZGJ1cyxsaWJtb2RidXMiCitQQUNLQUdFQ09ORklHW2xpYm93Y2FwaV0gPSAiLS13aXRoLWxpYm93Y2FwaSwtLXdpdGhvdXQtbGlib3djYXBpLG93ZnMiCitQQUNLQUdFQ09ORklHW3NlbnNvcnNdID0gIi0tZW5hYmxlLXNlbnNvcnMgLS13aXRoLWxpYnNlbnNvcnM9eWVzLCBcCisgICAgICAgIC0tZGlzYWJsZS1zZW5zb3JzIC0td2l0aC1saWJzZW5zb3JzPW5vLGxtc2Vuc29ycyIKK1BBQ0tBR0VDT05GSUdbYW1xcF0gPSAiLS1lbmFibGUtYW1xcCAtLXdpdGgtbGlicmFiYml0bXE9eWVzLCBcCisgICAgICAgIC0tZGlzYWJsZS1hbXFwIC0td2l0aC1saWJyYWJiaXRtcT1ubyxyYWJiaXRtcS1jIgorIyBwcm90b2J1Zi1jLCBsaWJ2aXJ0IHRoYXQgYXJlIGN1cnJlbnRseSBvbmx5IGF2YWlsYWJsZSBpbiBtZXRhLXZpcnR1YWxpemF0aW9uIGxheWVyCitQQUNLQUdFQ09ORklHW3BpbmJhXSA9ICItLWVuYWJsZS1waW5iYSwtLWRpc2FibGUtcGluYmEscHJvdG9idWYtYy1uYXRpdmUgcHJvdG9idWYtYyIKK1BBQ0tBR0VDT05GSUdbbGlidmlydF0gPSAiLS1lbmFibGUtdmlydCwtLWRpc2FibGUtdmlydCxsaWJ2aXJ0IgorUEFDS0FHRUNPTkZJR1tsaWJlc210cF0gPSAiLS13aXRoLWxpYmVzbXRwLC0td2l0aG91dC1saWJlc210cCxsaWJlc210cCIKK1BBQ0tBR0VDT05GSUdbbGlibW5sXSA9ICItLXdpdGgtbGlibW5sLC0td2l0aG91dC1saWJtbmwsbGlibW5sIgorUEFDS0FHRUNPTkZJR1tsaWJhdGFzbWFydF0gPSAiLS13aXRoLWxpYmF0YXNtYXJ0LC0td2l0aG91dC1saWJhdGFzbWFydCxsaWJhdGFzbWFydCIKK1BBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtb3BlbmxkYXAgLS13aXRoLWxpYmxkYXAsLS1kaXNhYmxlLW9wZW5sZGFwIC0td2l0aG91dC1saWJsZGFwLCBvcGVubGRhcCIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgICAgICAgICAgICAgJHtGUExBWU9VVH0gXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1wZXJsIC0td2l0aC1saWJwZXJsPW5vIC0td2l0aC1wZXJsLWJpbmRpbmdzPW5vIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtbGliZ2NyeXB0PSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2xpYmdjcnlwdC1jb25maWcgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ub3RpZnlfZGVza3RvcCBcCisiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vY29sbGVjdGQuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY29sbGVjdGQKKyAgICBzZWQgLWkgJ3MhL3Vzci9zYmluLyEke3NiaW5kaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY29sbGVjdGQKKyAgICBzZWQgLWkgJ3MhL2V0Yy8hJHtzeXNjb25mZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2NvbGxlY3RkCisgICAgc2VkIC1pICdzIS92YXIvISR7bG9jYWxzdGF0ZWRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb2xsZWN0ZAorICAgIHNlZCAtaSAncyFeUEFUSD0uKiFQQVRIPSR7YmFzZV9zYmluZGlyfToke2Jhc2VfYmluZGlyfToke3NiaW5kaXJ9OiR7YmluZGlyfSEnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb2xsZWN0ZAorICAgIGluc3RhbGwgLURtIDA2NDAgJHtCfS9zcmMvY29sbGVjdGQuY29uZiAke0R9JHtzeXNjb25mZGlyfS9jb2xsZWN0ZC5jb25mCisgICAgIyBGaXggY29uZmlndXJhdGlvbiBmaWxlIHRvIGFsbG93IGNvbGxlY3RkIHRvIHN0YXJ0IHVwCisgICAgc2VkIC1pICdzIV4jRlFETkxvb2t1cFsgXHRdKnRydWUhRlFETkxvb2t1cCAgIGZhbHNlIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2NvbGxlY3RkLmNvbmYKKworICAgIHJtZGlyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCisgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IgorCisgICAgIyBJbnN0YWxsIHN5c3RlbWQgdW5pdCBmaWxlcworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9jb2xsZWN0ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKyAgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vY29sbGVjdGQuc2VydmljZQorfQorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9jb2xsZWN0ZC5jb25mIgorCitJTklUU0NSSVBUX05BTUUgPSAiY29sbGVjdGQiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKKworIyB0aHJlc2hvbGQuc28gbG9hZC5zbyBhcmUgYWxzbyBwcm92aWRlZCBieSBnZWdsCisjIGRpc2suc28gaXMgYWxzbyBwcm92aWRlZCBieSBsaWJncGhvdG8yLWNhbWxpYnMKK1BSSVZBVEVfTElCUyA9ICJ0aHJlc2hvbGQuc28gbG9hZC5zbyBkaXNrLnNvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkXzUuOC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkXzUuOC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTUxYWMwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZF81LjguMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLVNVTU1BUlkgPSAiQ29sbGVjdHMgYW5kIHN1bW1hcmlzZXMgc3lzdGVtIHBlcmZvcm1hbmNlIHN0YXRpc3RpY3MiCi1ERVNDUklQVElPTiA9ICJjb2xsZWN0ZCBpcyBhIGRhZW1vbiB3aGljaCBjb2xsZWN0cyBzeXN0ZW0gcGVyZm9ybWFuY2Ugc3RhdGlzdGljcyBwZXJpb2RpY2FsbHkgYW5kIHByb3ZpZGVzIG1lY2hhbmlzbXMgdG8gc3RvcmUgdGhlIHZhbHVlcyBpbiBhIHZhcmlldHkgb2Ygd2F5cywgZm9yIGV4YW1wbGUgaW4gUlJEIGZpbGVzLiIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xYmQyMWYxOWY3ZjBjNjFhN2JlOGVjYWNiMGUyODg1NCIKLQotREVQRU5EUyA9ICJycmR0b29sIGN1cmwgbGlicGNhcCBsaWJ4bWwyIHlhamwgbGliZ2NyeXB0IGxpYnRvb2wgbHZtMiIKLQotU1JDX1VSSSA9ICJodHRwOi8vY29sbGVjdGQub3JnL2ZpbGVzL2NvbGxlY3RkLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vY29sbGVjdGQuaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb2xsZWN0ZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL25vLWdjcnlwdC1iYWRwYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZGl0aW9uYWxseS1jaGVjay1saWJ2aXJ0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LXRvLWJ1aWxkLXdpdGgtZ2xpYmMtMi4yNS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItV25vLWVycm9yLWZvcm1hdC10cnVuY2F0aW9uLWNvbXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1EaXNhYmxlLW5ldy1nY2M4LXdhcm5pbmdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtbGliY29sbGVjdGRjbGllbnQtRml4LXN0cmluZy1vdmVyZmxvdy1lcnJvcnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtaW5jbHVkaW5nLXN5cy1zeXNjdGwuaC1vbi1nbGliYy1iYXNlZC1zeXN0ZW1zLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImJmY2U5NmM0MmNlZGU1MjQzMDI4NTEwYmNjNTdjMWU2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU3OTZmZGEyN2NlMDYzNzdmNDkxYWQ5MWFhMjg2OTYyYTY4YzJiNTQwNzZhYTc3YTI5NjczZDUzMjA0NDUzZGEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB5dGhvbm5hdGl2ZSB1cGRhdGUtcmMuZCBwa2djb25maWcgc3lzdGVtZAotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiY29sbGVjdGQuc2VydmljZSIKLQotIyBGbG9hdGluZ3BvaW50IGxheW91dCwgYXJjaGl0ZWN0dXJlIGRlcGVuZGVudAotIyAnbm90aGluZycsICdlbmRpYW5mbGlwJyBvciAnaW50c3dhcCcKLUZQTEFZT1VUID89ICItLXdpdGgtZnAtbGF5b3V0PW5vdGhpbmciCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW29wZW5qZGtdID0gIi0td2l0aC1qYXZhPSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7bGliZGlyfS9qdm0sLS13aXRob3V0LWphdmEsb3Blbmpkay03IgotUEFDS0FHRUNPTkZJR1tzbm1wXSA9ICItLWVuYWJsZS1zbm1wLC0tZGlzYWJsZS1zbm1wIC0td2l0aC1saWJuZXRzbm1wPW5vLG5ldC1zbm1wIgotUEFDS0FHRUNPTkZJR1tsaWJtZW1jYWNoZWRdID0gIi0td2l0aC1saWJtZW1jYWNoZWQsLS13aXRob3V0LWxpYm1lbWNhY2hlZCxsaWJtZW1jYWNoZWQiCi1QQUNLQUdFQ09ORklHW2lwdGFibGVzXSA9ICItLWVuYWJsZS1pcHRhYmxlcywtLWRpc2FibGUtaXB0YWJsZXMsaXB0YWJsZXMiCi1QQUNLQUdFQ09ORklHW3Bvc3RncmVzcWxdID0gIi0tZW5hYmxlLXBvc3RncmVzcWwgLS13aXRoLWxpYnBxPXllcywgXAotICAgICAgICAtLWRpc2FibGUtcG9zdGdyZXNxbCAtLXdpdGgtbGlicHE9bm8scG9zdGdyZXNxbCIKLVBBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0tZW5hYmxlLW15c3FsIC0td2l0aC1saWJteXNxbD15ZXMsIFwKLSAgICAgICAgLS1kaXNhYmxlLW15c3FsIC0td2l0aC1saWJteXNxbD1ubyxteXNxbDUiCi1QQUNLQUdFQ09ORklHW2RiaV0gPSAiLS1lbmFibGUtZGJpLC0tZGlzYWJsZS1kYmksbGliZGJpIgotUEFDS0FHRUNPTkZJR1ttb2RidXNdID0gIi0tZW5hYmxlLW1vZGJ1cywtLWRpc2FibGUtbW9kYnVzLGxpYm1vZGJ1cyIKLVBBQ0tBR0VDT05GSUdbbGlib3djYXBpXSA9ICItLXdpdGgtbGlib3djYXBpLC0td2l0aG91dC1saWJvd2NhcGksb3dmcyIKLVBBQ0tBR0VDT05GSUdbc2Vuc29yc10gPSAiLS1lbmFibGUtc2Vuc29ycyAtLXdpdGgtbGlic2Vuc29ycz15ZXMsIFwKLSAgICAgICAgLS1kaXNhYmxlLXNlbnNvcnMgLS13aXRoLWxpYnNlbnNvcnM9bm8sbG1zZW5zb3JzIgotUEFDS0FHRUNPTkZJR1thbXFwXSA9ICItLWVuYWJsZS1hbXFwIC0td2l0aC1saWJyYWJiaXRtcT15ZXMsIFwKLSAgICAgICAgLS1kaXNhYmxlLWFtcXAgLS13aXRoLWxpYnJhYmJpdG1xPW5vLHJhYmJpdG1xLWMiCi0jIHByb3RvYnVmLWMsIGxpYnZpcnQgdGhhdCBhcmUgY3VycmVudGx5IG9ubHkgYXZhaWxhYmxlIGluIG1ldGEtdmlydHVhbGl6YXRpb24gbGF5ZXIKLVBBQ0tBR0VDT05GSUdbcGluYmFdID0gIi0tZW5hYmxlLXBpbmJhLC0tZGlzYWJsZS1waW5iYSxwcm90b2J1Zi1jLW5hdGl2ZSBwcm90b2J1Zi1jIgotUEFDS0FHRUNPTkZJR1tsaWJ2aXJ0XSA9ICItLWVuYWJsZS12aXJ0LC0tZGlzYWJsZS12aXJ0LGxpYnZpcnQiCi1QQUNLQUdFQ09ORklHW2xpYmVzbXRwXSA9ICItLXdpdGgtbGliZXNtdHAsLS13aXRob3V0LWxpYmVzbXRwLGxpYmVzbXRwIgotUEFDS0FHRUNPTkZJR1tsaWJtbmxdID0gIi0td2l0aC1saWJtbmwsLS13aXRob3V0LWxpYm1ubCxsaWJtbmwiCi1QQUNLQUdFQ09ORklHW2xpYmF0YXNtYXJ0XSA9ICItLXdpdGgtbGliYXRhc21hcnQsLS13aXRob3V0LWxpYmF0YXNtYXJ0LGxpYmF0YXNtYXJ0IgotUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLWVuYWJsZS1vcGVubGRhcCAtLXdpdGgtbGlibGRhcCwtLWRpc2FibGUtb3BlbmxkYXAgLS13aXRob3V0LWxpYmxkYXAsIG9wZW5sZGFwIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAgICAgICAgICAgICAke0ZQTEFZT1VUfSBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXBlcmwgLS13aXRoLWxpYnBlcmw9bm8gLS13aXRoLXBlcmwtYmluZGluZ3M9bm8gXAotICAgICAgICAgICAgICAgIC0td2l0aC1saWJnY3J5cHQ9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vbGliZ2NyeXB0LWNvbmZpZyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLW5vdGlmeV9kZXNrdG9wIFwKLSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9jb2xsZWN0ZC5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb2xsZWN0ZAotICAgIHNlZCAtaSAncyEvdXNyL3NiaW4vISR7c2JpbmRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb2xsZWN0ZAotICAgIHNlZCAtaSAncyEvZXRjLyEke3N5c2NvbmZkaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY29sbGVjdGQKLSAgICBzZWQgLWkgJ3MhL3Zhci8hJHtsb2NhbHN0YXRlZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2NvbGxlY3RkCi0gICAgc2VkIC1pICdzIV5QQVRIPS4qIVBBVEg9JHtiYXNlX3NiaW5kaXJ9OiR7YmFzZV9iaW5kaXJ9OiR7c2JpbmRpcn06JHtiaW5kaXJ9IScgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2NvbGxlY3RkCi0gICAgaW5zdGFsbCAtRG0gMDY0MCAke0J9L3NyYy9jb2xsZWN0ZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2NvbGxlY3RkLmNvbmYKLSAgICAjIEZpeCBjb25maWd1cmF0aW9uIGZpbGUgdG8gYWxsb3cgY29sbGVjdGQgdG8gc3RhcnQgdXAKLSAgICBzZWQgLWkgJ3MhXiNGUUROTG9va3VwWyBcdF0qdHJ1ZSFGUUROTG9va3VwICAgZmFsc2UhZycgJHtEfSR7c3lzY29uZmRpcn0vY29sbGVjdGQuY29uZgotCi0gICAgcm1kaXIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKLSAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iCi0KLSAgICAjIEluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGVzCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2NvbGxlY3RkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotICAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9jb2xsZWN0ZC5zZXJ2aWNlCi19Ci0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L2NvbGxlY3RkLmNvbmYiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJjb2xsZWN0ZCIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgotCi0jIHRocmVzaG9sZC5zbyBsb2FkLnNvIGFyZSBhbHNvIHByb3ZpZGVkIGJ5IGdlZ2wKLSMgZGlzay5zbyBpcyBhbHNvIHByb3ZpZGVkIGJ5IGxpYmdwaG90bzItY2FtbGlicwotUFJJVkFURV9MSUJTID0gInRocmVzaG9sZC5zbyBsb2FkLnNvIGRpc2suc28iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGRyZXNjdWUvZGRyZXNjdWVfMS4yNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kZHJlc2N1ZS9kZHJlc2N1ZV8xLjI0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MmJkMTFiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kZHJlc2N1ZS9kZHJlc2N1ZV8xLjI0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotU1VNTUFSWSA9ICJEYXRhIHJlY292ZXJ5IHRvb2wiCi1ERVNDUklQVElPTiA9ICJHTlUgZGRyZXNjdWUgaXMgYSBkYXRhIHJlY292ZXJ5IHRvb2wuIEl0IGNvcGllcyBkYXRhIFwKLSAgICBmcm9tIG9uZSBmaWxlIG9yIGJsb2NrIGRldmljZSAoaGFyZCBkaXNjLCBjZHJvbSwgZXRjKSB0byBhbm90aGVyLCBcCi0gICAgdHJ5aW5nIGhhcmQgdG8gcmVzY3VlIGRhdGEgaW4gY2FzZSBvZiByZWFkIGVycm9ycy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZGRyZXNjdWUvZGRyZXNjdWUuaHRtbCIKLVNFQ1RJT04gPSAiY29uc29sZSIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NmQ2ZTMwMGZmZDhmYjlkMThiZDliMTM2YTliYmExMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9tYWluX2NvbW1vbi5jYztiZWdpbmxpbmU9NTtlbmRsaW5lPTE2O21kNT0zZWMyODhiMjY3NjUyOGNkMmIwNjkzNjRlMzEzMDE2ZiIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIubHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiOGFjODlmODMzYzBkZjIyMTcyM2UzM2I0NDdlMjMwZmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGI1ZDNmZWVkZTcwZTM2NTdjYTZiM2M3ODQ0ZjIzMTMxODUxY2JiNmFmMGNlY2M5NzIxNTAwZjdkNzAyMTA4NyIKLQotIyBUaGlzIGlzbid0IGFscmVhZHkgYWRkZWQgYnkgYmFzZS5iYmNsYXNzCi1kb191bnBhY2tbZGVwZW5kc10gKz0gImx6aXAtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCi0KLUNPTkZJR1VSRU9QVFMgPSAiXAotICAgICctLXNyY2Rpcj0ke1N9JyBcCi0gICAgJy0tcHJlZml4PSR7cHJlZml4fScgXAotICAgICctLWV4ZWMtcHJlZml4PSR7ZXhlY19wcmVmaXh9JyBcCi0gICAgJy0tYmluZGlyPSR7YmluZGlyfScgXAotICAgICctLWRhdGFkaXI9JHtkYXRhZGlyfScgXAotICAgICctLWluZm9kaXI9JHtpbmZvZGlyfScgXAotICAgICctLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfScgXAotICAgICdDWFg9JHtDWFh9JyBcCi0gICAgJ0NQUEZMQUdTPSR7Q1BQRkxBR1N9JyBcCi0gICAgJ0NYWEZMQUdTPSR7Q1hYRkxBR1N9JyBcCi0gICAgJ0xERkxBR1M9JHtMREZMQUdTfScgXAotIgotRVhUUkFfT0VNQUtFID0gIiIKLQotZG9fY29uZmlndXJlICgpIHsKLSAgICAke1N9L2NvbmZpZ3VyZSAke0NPTkZJR1VSRU9QVFN9Ci19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotICAgICMgSW5mbyBkaXIgbGlzdGluZyBpc24ndCBpbnRlcmVzdGluZyBhdCB0aGlzIHBvaW50IHNvIHJlbW92ZSBpdCBpZiBpdCBleGlzdHMuCi0gICAgaWYgWyAtZSAiJHtEfSR7aW5mb2Rpcn0vZGlyIiBdOyB0aGVuCi0gICAgICAgIHJtIC1mICR7RH0ke2luZm9kaXJ9L2RpcgotICAgIGZpCi19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGRyZXNjdWUvZGRyZXNjdWVfMS4yNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kZHJlc2N1ZS9kZHJlc2N1ZV8xLjI1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMjQzNTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGRyZXNjdWUvZGRyZXNjdWVfMS4yNS5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIkRhdGEgcmVjb3ZlcnkgdG9vbCIKK0RFU0NSSVBUSU9OID0gIkdOVSBkZHJlc2N1ZSBpcyBhIGRhdGEgcmVjb3ZlcnkgdG9vbC4gSXQgY29waWVzIGRhdGEgXAorICAgIGZyb20gb25lIGZpbGUgb3IgYmxvY2sgZGV2aWNlIChoYXJkIGRpc2MsIGNkcm9tLCBldGMpIHRvIGFub3RoZXIsIFwKKyAgICB0cnlpbmcgaGFyZCB0byByZXNjdWUgZGF0YSBpbiBjYXNlIG9mIHJlYWQgZXJyb3JzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9kZHJlc2N1ZS9kZHJlc2N1ZS5odG1sIgorU0VDVElPTiA9ICJjb25zb2xlIgorTElDRU5TRSA9ICJHUEx2MisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc2ZDZlMzAwZmZkOGZiOWQxOGJkOWIxMzZhOWJiYTEzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL21haW5fY29tbW9uLmNjO2JlZ2lubGluZT01O2VuZGxpbmU9MTY7bWQ1PTNlYzI4OGIyNjc2NTI4Y2QyYjA2OTM2NGUzMTMwMTZmIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5seiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5OWZkN2EyOGJmOTk1M2Q4ODUzNGM3ZWU5YWI1YmQyYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjZTUzOGViZDI2YTA5ZjQ1ZGE2N2QzYWQzZjc0MzE5MzI0MjgyMzFjZWVjN2EyZDI1NWY3MTZmYTIzMWExMDYzIgorCisjIFRoaXMgaXNuJ3QgYWxyZWFkeSBhZGRlZCBieSBiYXNlLmJiY2xhc3MKK2RvX3VucGFja1tkZXBlbmRzXSArPSAibHppcC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKKworQ09ORklHVVJFT1BUUyA9ICJcCisgICAgJy0tc3JjZGlyPSR7U30nIFwKKyAgICAnLS1wcmVmaXg9JHtwcmVmaXh9JyBcCisgICAgJy0tZXhlYy1wcmVmaXg9JHtleGVjX3ByZWZpeH0nIFwKKyAgICAnLS1iaW5kaXI9JHtiaW5kaXJ9JyBcCisgICAgJy0tZGF0YWRpcj0ke2RhdGFkaXJ9JyBcCisgICAgJy0taW5mb2Rpcj0ke2luZm9kaXJ9JyBcCisgICAgJy0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9JyBcCisgICAgJ0NYWD0ke0NYWH0nIFwKKyAgICAnQ1BQRkxBR1M9JHtDUFBGTEFHU30nIFwKKyAgICAnQ1hYRkxBR1M9JHtDWFhGTEFHU30nIFwKKyAgICAnTERGTEFHUz0ke0xERkxBR1N9JyBcCisiCitFWFRSQV9PRU1BS0UgPSAiIgorCitkb19jb25maWd1cmUgKCkgeworICAgICR7U30vY29uZmlndXJlICR7Q09ORklHVVJFT1BUU30KK30KKworZG9faW5zdGFsbCAoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisgICAgIyBJbmZvIGRpciBsaXN0aW5nIGlzbid0IGludGVyZXN0aW5nIGF0IHRoaXMgcG9pbnQgc28gcmVtb3ZlIGl0IGlmIGl0IGV4aXN0cy4KKyAgICBpZiBbIC1lICIke0R9JHtpbmZvZGlyfS9kaXIiIF07IHRoZW4KKyAgICAgICAgcm0gLWYgJHtEfSR7aW5mb2Rpcn0vZGlyCisgICAgZmkKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kbHQtZGFlbW9uL2RsdC1kYWVtb24vMDAwMi1Eb24tdC1leGVjdXRlLXByb2Nlc3Nlcy1hcy1hLXNwZWNpZmljLXVzZXIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGx0LWRhZW1vbi9kbHQtZGFlbW9uLzAwMDItRG9uLXQtZXhlY3V0ZS1wcm9jZXNzZXMtYXMtYS1zcGVjaWZpYy11c2VyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MWJlMjUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGx0LWRhZW1vbi9kbHQtZGFlbW9uLzAwMDItRG9uLXQtZXhlY3V0ZS1wcm9jZXNzZXMtYXMtYS1zcGVjaWZpYy11c2VyLnBhdGNoCkBAIC0wLDAgKzEsOTQgQEAKK0Zyb20gYmNjYTRjOTkzOTRiYTQyMmQwM2E1ZTc2ZjJhMDAyM2VmMjQ4ODI0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlaSBHaGVyemFuIDxhbmRyZWkuZ2hlcnphbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxOCBOb3YgMjAxNCAxNTo0NzoyMiArMDEwMAorU3ViamVjdDogW1BBVENIIDIvNF0gRG9uJ3QgZXhlY3V0ZSBwcm9jZXNzZXMgYXMgYSBzcGVjaWZpYyB1c2VyLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0NvbmZpZ3VyYXRpb24gU3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpLmdoZXJ6YW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHN5c3RlbWQvZGx0LWFkYXB0b3ItdWRwLnNlcnZpY2UuY21ha2UgIHwgMSAtCisgc3lzdGVtZC9kbHQtZGJ1cy5zZXJ2aWNlLmNtYWtlICAgICAgICAgfCAxIC0KKyBzeXN0ZW1kL2RsdC1leGFtcGxlLXVzZXIuc2VydmljZS5jbWFrZSB8IDEgLQorIHN5c3RlbWQvZGx0LXJlY2VpdmUuc2VydmljZS5jbWFrZSAgICAgIHwgMSAtCisgc3lzdGVtZC9kbHQtc3lzdGVtLnNlcnZpY2UuY21ha2UgICAgICAgfCAxIC0KKyBzeXN0ZW1kL2RsdC5zZXJ2aWNlLmNtYWtlICAgICAgICAgICAgICB8IDEgLQorIDYgZmlsZXMgY2hhbmdlZCwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c3RlbWQvZGx0LWFkYXB0b3ItdWRwLnNlcnZpY2UuY21ha2UgYi9zeXN0ZW1kL2RsdC1hZGFwdG9yLXVkcC5zZXJ2aWNlLmNtYWtlCitpbmRleCA4ZGFjMWYyLi5lY2Y5ZjllIDEwMDY0NAorLS0tIGEvc3lzdGVtZC9kbHQtYWRhcHRvci11ZHAuc2VydmljZS5jbWFrZQorKysrIGIvc3lzdGVtZC9kbHQtYWRhcHRvci11ZHAuc2VydmljZS5jbWFrZQorQEAgLTIxLDkgKzIxLDggQEAgV2FudHM9ZGx0LnNlcnZpY2UKKyAKKyBbU2VydmljZV0KKyBUeXBlPXNpbXBsZQorLVVzZXI9QERMVF9VU0VSQAorIEV4ZWNTdGFydD1AQ01BS0VfSU5TVEFMTF9QUkVGSVhAL2Jpbi9kbHQtYWRhcHRvci11ZHAgLWEgQERMVF9BREFQVE9SX1VEUF9BUFBJREAgLWMgQERMVF9BREFQVE9SX1VEUF9DVElEQCAtcCBARExUX0FEQVBUT1JfVURQX1BPUlRACisgTGltaXRDT1JFPWluZmluaXR5CisgCisgW0luc3RhbGxdCistV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorK1dhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CitkaWZmIC0tZ2l0IGEvc3lzdGVtZC9kbHQtZGJ1cy5zZXJ2aWNlLmNtYWtlIGIvc3lzdGVtZC9kbHQtZGJ1cy5zZXJ2aWNlLmNtYWtlCitpbmRleCA5YmFmM2U5Li43NGE3ZWFjIDEwMDY0NAorLS0tIGEvc3lzdGVtZC9kbHQtZGJ1cy5zZXJ2aWNlLmNtYWtlCisrKysgYi9zeXN0ZW1kL2RsdC1kYnVzLnNlcnZpY2UuY21ha2UKK0BAIC0yMCw3ICsyMCw2IEBAIFdhbnRzPWRsdC5zZXJ2aWNlCisgCisgW1NlcnZpY2VdCisgVHlwZT1zaW1wbGUKKy1Vc2VyPUBETFRfVVNFUkAKKyBFeGVjU3RhcnQ9QENNQUtFX0lOU1RBTExfUFJFRklYQC9iaW4vZGx0LWRidXMKKyBXYXRjaGRvZ1NlYz1ARExUX1dhdGNoZG9nU2VjQAorIE5vdGlmeUFjY2Vzcz1tYWluCitkaWZmIC0tZ2l0IGEvc3lzdGVtZC9kbHQtZXhhbXBsZS11c2VyLnNlcnZpY2UuY21ha2UgYi9zeXN0ZW1kL2RsdC1leGFtcGxlLXVzZXIuc2VydmljZS5jbWFrZQoraW5kZXggYjY2NTc0Mi4uMzUwMDliMCAxMDA2NDQKKy0tLSBhL3N5c3RlbWQvZGx0LWV4YW1wbGUtdXNlci5zZXJ2aWNlLmNtYWtlCisrKysgYi9zeXN0ZW1kL2RsdC1leGFtcGxlLXVzZXIuc2VydmljZS5jbWFrZQorQEAgLTIxLDYgKzIxLDUgQEAgV2FudHM9ZGx0LnNlcnZpY2UKKyAKKyBbU2VydmljZV0KKyBUeXBlPXNpbXBsZQorLVVzZXI9QERMVF9VU0VSQAorIEV4ZWNTdGFydD1AQ01BS0VfSU5TVEFMTF9QUkVGSVhAL2Jpbi9kbHQtZXhhbXBsZS11c2VyICJIYWxsbyBmcm9tIEdFTklWSSBETFQgZXhhbXBsZSB1c2VyIGFwcGxpY2F0aW9uIgorLUxpbWl0Q09SRT1pbmZpbml0eQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisrTGltaXRDT1JFPWluZmluaXR5CitkaWZmIC0tZ2l0IGEvc3lzdGVtZC9kbHQtcmVjZWl2ZS5zZXJ2aWNlLmNtYWtlIGIvc3lzdGVtZC9kbHQtcmVjZWl2ZS5zZXJ2aWNlLmNtYWtlCitpbmRleCBjMDdkNDQ3Li44Zjg4ZjAwIDEwMDY0NAorLS0tIGEvc3lzdGVtZC9kbHQtcmVjZWl2ZS5zZXJ2aWNlLmNtYWtlCisrKysgYi9zeXN0ZW1kL2RsdC1yZWNlaXZlLnNlcnZpY2UuY21ha2UKK0BAIC0yMiw2ICsyMiw1IEBAIFdhbnRzPWRsdC5zZXJ2aWNlCisgCisgW1NlcnZpY2VdCisgVHlwZT1zaW1wbGUKKy1Vc2VyPUBETFRfVVNFUkAKKyBFeGVjU3RhcnQ9QENNQUtFX0lOU1RBTExfUFJFRklYQC9iaW4vZGx0LXJlY2VpdmUgLW8gL3RtcC9kbHRfcmVjZWl2ZV9sb2cuZGx0IGxvY2FsaG9zdAorLUxpbWl0Q09SRT1pbmZpbml0eQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisrTGltaXRDT1JFPWluZmluaXR5CitkaWZmIC0tZ2l0IGEvc3lzdGVtZC9kbHQtc3lzdGVtLnNlcnZpY2UuY21ha2UgYi9zeXN0ZW1kL2RsdC1zeXN0ZW0uc2VydmljZS5jbWFrZQoraW5kZXggMGU5MWY0Mi4uMWE1YjkxMyAxMDA3NTUKKy0tLSBhL3N5c3RlbWQvZGx0LXN5c3RlbS5zZXJ2aWNlLmNtYWtlCisrKysgYi9zeXN0ZW1kL2RsdC1zeXN0ZW0uc2VydmljZS5jbWFrZQorQEAgLTIyLDcgKzIyLDYgQEAgV2FudHM9ZGx0LnNlcnZpY2UKKyAKKyBbU2VydmljZV0KKyBUeXBlPXNpbXBsZQorLVVzZXI9QERMVF9VU0VSQAorIEV4ZWNTdGFydD1AQ01BS0VfSU5TVEFMTF9QUkVGSVhAL2Jpbi9kbHQtc3lzdGVtCisgV2F0Y2hkb2dTZWM9QERMVF9XYXRjaGRvZ1NlY0AKKyBOb3RpZnlBY2Nlc3M9bWFpbgorZGlmZiAtLWdpdCBhL3N5c3RlbWQvZGx0LnNlcnZpY2UuY21ha2UgYi9zeXN0ZW1kL2RsdC5zZXJ2aWNlLmNtYWtlCitpbmRleCAwYjNlZTJjLi5lNDc1M2EyIDEwMDc1NQorLS0tIGEvc3lzdGVtZC9kbHQuc2VydmljZS5jbWFrZQorKysrIGIvc3lzdGVtZC9kbHQuc2VydmljZS5jbWFrZQorQEAgLTIxLDcgKzIxLDYgQEAgRG9jdW1lbnRhdGlvbj1tYW46ZGx0LWRhZW1vbigxKSBtYW46ZGx0LmNvbmYoNSkKKyAKKyBbU2VydmljZV0KKyBUeXBlPXNpbXBsZQorLVVzZXI9QERMVF9VU0VSQAorIEV4ZWNTdGFydD1AQ01BS0VfSU5TVEFMTF9QUkVGSVhAL2Jpbi9kbHQtZGFlbW9uCisgV2F0Y2hkb2dTZWM9QERMVF9XYXRjaGRvZ1NlY0AKKyBOb3RpZnlBY2Nlc3M9bWFpbgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RsdC1kYWVtb24vZGx0LWRhZW1vbi8wMDA0LU1vZGlmeS1zeXN0ZW1kLWNvbmZpZy1kaXJlY3RvcnkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGx0LWRhZW1vbi9kbHQtZGFlbW9uLzAwMDQtTW9kaWZ5LXN5c3RlbWQtY29uZmlnLWRpcmVjdG9yeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTAyOGMwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RsdC1kYWVtb24vZGx0LWRhZW1vbi8wMDA0LU1vZGlmeS1zeXN0ZW1kLWNvbmZpZy1kaXJlY3RvcnkucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorRnJvbSA5YTVlNjU1Y2Y1NzMwMTAwOGNkNjFkNTNjOGE0MTBhN2YzOTdlNjUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaS5naGVyemFuQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE4IE5vdiAyMDE0IDE1OjUxOjMwICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggNC80XSBNb2RpZnkgc3lzdGVtZCBjb25maWcgZGlyZWN0b3J5CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbQ29uZmlndXJhdGlvbiBTcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWkuZ2hlcnphbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3lzdGVtZC9DTWFrZUxpc3RzLnR4dCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IGU2YjQ0YTIuLjBlODg1YmYgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC0yMDEsNyArMjAxLDcgQEAgaWYoV0lUSF9TWVNURU1EIE9SIFdJVEhfU1lTVEVNRF9XQVRDSERPRyBPUiBXSVRIX1NZU1RFTURfSk9VUk5BTCkKKyAKKyAgICAgc2V0KHN5c3RlbWRfU1JDUyAke1BST0pFQ1RfU09VUkNFX0RJUn0vc3lzdGVtZC8zcmRwYXJ0eS9zZC1kYWVtb24uYykKKyAKKy0gICAgc2V0KFNZU1RFTURfVU5JVERJUiAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vbGliL3N5c3RlbWQvc3lzdGVtIiBDQUNIRSBQQVRICisrICAgIHNldChTWVNURU1EX1VOSVRESVIgIi9saWIvc3lzdGVtZC9zeXN0ZW0iIENBQ0hFIFBBVEgKKyAgICAgICAgICJTZXQgZGlyZWN0b3J5IHRvIGluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGVzIikKKyAKKyAgICAgYWRkX3N1YmRpcmVjdG9yeShzeXN0ZW1kKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RsdC1kYWVtb24vZGx0LWRhZW1vbi8yMDQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGx0LWRhZW1vbi9kbHQtZGFlbW9uLzIwNC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGZjMGJjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RsdC1kYWVtb24vZGx0LWRhZW1vbi8yMDQucGF0Y2gKQEAgLTAsMCArMSwxNDggQEAKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vR0VOSVZJL2RsdC1kYWVtb24vcHVsbC8yMDRdCitGcm9tIDkyODMwYWZmNmU5MTA0MWY1NzQ3NTNkNzhkYTc1OGM2Mjk4MWQ5YTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBHaWFuZnJhbmNvIENvc3RhbWFnbmEgPGNvc3RhbWFnbmFnaWFuZnJhbmNvQHlhaG9vLml0PgorRGF0ZTogU2F0LCAyNSBKYW4gMjAyMCAwOTowODowNyArMDEwMAorU3ViamVjdDogW1BBVENIIDEvM10gZGx0X3VzZXIuaDogZml4IGJ1aWxkIHdoZW4gbXVzbCBpcyB0aGUgbGliYworIGltcGxlbWVudGF0aW9uLCBieSBhZGRpbmcgYSBtaXNzaW5nIGluY2x1ZGUgZm9yIHB0aHJlYWRfdCByZWZlcmVuY2U6CisKK3NlZSBodHRwczovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzMwODAwMC8gZm9yIGRldGFpbHMKKworVGhhbmtzIEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IGZvciB0aGUgcmVwb3J0CisKK1NpZ25lZC1vZmYtYnk6IEdpYW5mcmFuY28gQ29zdGFtYWduYSA8Y29zdGFtYWduYWdpYW5mcmFuY29AeWFob28uaXQ+CitTaWduZWQtb2ZmLWJ5OiBHaWFuZnJhbmNvIENvc3RhbWFnbmEgPGxvY3V0dXNvZmJvcmdAZGViaWFuLm9yZz4KKy0tLQorIGluY2x1ZGUvZGx0L2RsdF91c2VyLmggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvZGx0L2RsdF91c2VyLmggYi9pbmNsdWRlL2RsdC9kbHRfdXNlci5oCitpbmRleCA2OWNiODU0Li43NjZkMzQ5IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9kbHQvZGx0X3VzZXIuaAorKysrIGIvaW5jbHVkZS9kbHQvZGx0X3VzZXIuaAorQEAgLTc0LDYgKzc0LDcgQEAKKyAgXHsKKyAgKi8KKyAjICAgaW5jbHVkZSA8bXF1ZXVlLmg+CisrIyAgIGluY2x1ZGUgPHB0aHJlYWQuaD4KKyAKKyAjICAgaWYgIWRlZmluZWQgKF9fV0lOMzJfXykKKyAjICAgICAgaW5jbHVkZSA8c2VtYXBob3JlLmg+CisKK0Zyb20gNWY2N2FiYTAyYzEyYjc0NDZlNjNjY2M4NjI4NWMxM2JjNWM3YTQzMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEdpYW5mcmFuY28gQ29zdGFtYWduYSA8Y29zdGFtYWduYWdpYW5mcmFuY29AeWFob28uaXQ+CitEYXRlOiBTYXQsIDI1IEphbiAyMDIwIDA5OjE2OjE0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBkbHQtdGVzdC1pbml0LWZyZWU6IGZpeCBidWlsZCBmYWlsdXJlIHdpdGggc3RyaWN0CisgY29tcGlsZXIgZmxhZ3MsIGR1ZSB0byB1aW50IGJlaW5nIHVuZGVmaW5lZC4gVGhpcyBpcyBhY3R1YWxseSBhbiAiaW50IiB0eXBlLAorIGxvb2tpbmcgYXQgdGhlIHRlc3QgaW1wbGVtZW50YXRpb24KKworU2lnbmVkLW9mZi1ieTogR2lhbmZyYW5jbyBDb3N0YW1hZ25hIDxjb3N0YW1hZ25hZ2lhbmZyYW5jb0B5YWhvby5pdD4KK1NpZ25lZC1vZmYtYnk6IEdpYW5mcmFuY28gQ29zdGFtYWduYSA8bG9jdXR1c29mYm9yZ0BkZWJpYW4ub3JnPgorLS0tCisgc3JjL3Rlc3RzL2RsdC10ZXN0LWluaXQtZnJlZS5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9kbHQtdGVzdC1pbml0LWZyZWUuYyBiL3NyYy90ZXN0cy9kbHQtdGVzdC1pbml0LWZyZWUuYworaW5kZXggOTZiNTI0NS4uMzViODgwMyAxMDA2NDQKKy0tLSBhL3NyYy90ZXN0cy9kbHQtdGVzdC1pbml0LWZyZWUuYworKysrIGIvc3JjL3Rlc3RzL2RsdC10ZXN0LWluaXQtZnJlZS5jCitAQCAtMzIsNyArMzIsNyBAQAorIAorIHZvaWQgZXhlYyhjb25zdCBjaGFyICpjbWQsIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCk7Cisgdm9pZCBwcmludE1lbW9yeVVzYWdlKCk7CistY2hhciAqb2NjdXB5TWVtb3J5KHVpbnQgc2l6ZSk7CisrY2hhciAqb2NjdXB5TWVtb3J5KGludCBzaXplKTsKKyB2b2lkIGRvX2V4YW1wbGVfdGVzdCgpOworIHZvaWQgZG9fZGx0X3Rlc3QoKTsKKyAKK0BAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBwcmludE1lbW9yeVVzYWdlKCkKKyAgICAgcHJpbnRmKCIlcyIsIHJlc3VsdCk7CisgfQorIAorLWNoYXIgKm9jY3VweU1lbW9yeSh1aW50IHNpemUpCisrY2hhciAqb2NjdXB5TWVtb3J5KGludCBzaXplKQorIHsKKyAgICAgY2hhciAqYnVmID0gKGNoYXIgKiltYWxsb2Moc2l6ZSAqIHNpemVvZihjaGFyKSk7CisgCisKK0Zyb20gYzc5MGQ2MWZhZDM4MmU1ZDNlNjQ4ZWU5OTkwNDA4N2ViOWJjNGE3NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEdpYW5mcmFuY28gQ29zdGFtYWduYSA8Y29zdGFtYWduYWdpYW5mcmFuY29AeWFob28uaXQ+CitEYXRlOiBTYXQsIDI1IEphbiAyMDIwIDA5OjIwOjQ4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBzeXMvcG9sbC5oOiBkZXByZWNhdGUgb2xkIHN5cy9wb2xsLmggaW5jbHVkZSBoZWFkZXIsIG5vdworIGdsaWJjL211c2wgd2FudHMgcG9sbC5oIGJlaW5nIGluY2x1ZGVkIGRpcmVjdGx5LiBUaGlzIGZpeGVzIGEgYnVpbGQgZmFpbHVyZQorIG9uIG11c2wgc3lzdGVtcyB3aXRoIHN0cmljdCBjIGhhcmRlbmluZyBmbGFncworCitTaWduZWQtb2ZmLWJ5OiBHaWFuZnJhbmNvIENvc3RhbWFnbmEgPGNvc3RhbWFnbmFnaWFuZnJhbmNvQHlhaG9vLml0PgorU2lnbmVkLW9mZi1ieTogR2lhbmZyYW5jbyBDb3N0YW1hZ25hIDxsb2N1dHVzb2Zib3JnQGRlYmlhbi5vcmc+CistLS0KKyBzcmMvY29uc29sZS9sb2dzdG9yYWdlL2RsdC1sb2dzdG9yYWdlLWN0cmwuYyB8IDIgKy0KKyBzcmMvZGFlbW9uL2RsdF9kYWVtb25fZXZlbnRfaGFuZGxlci5jICAgICAgICB8IDIgKy0KKyBzcmMvZGFlbW9uL2RsdF9kYWVtb25fZXZlbnRfaGFuZGxlci5oICAgICAgICB8IDIgKy0KKyBzcmMvZGFlbW9uL2RsdF9kYWVtb25fZXZlbnRfaGFuZGxlcl90eXBlcy5oICB8IDIgKy0KKyBzcmMvbGliL2RsdF91c2VyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyA1IGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb25zb2xlL2xvZ3N0b3JhZ2UvZGx0LWxvZ3N0b3JhZ2UtY3RybC5jIGIvc3JjL2NvbnNvbGUvbG9nc3RvcmFnZS9kbHQtbG9nc3RvcmFnZS1jdHJsLmMKK2luZGV4IDUyNWMxMzcuLjY2MTRmNDQgMTAwNjQ0CistLS0gYS9zcmMvY29uc29sZS9sb2dzdG9yYWdlL2RsdC1sb2dzdG9yYWdlLWN0cmwuYworKysrIGIvc3JjL2NvbnNvbGUvbG9nc3RvcmFnZS9kbHQtbG9nc3RvcmFnZS1jdHJsLmMKK0BAIC02MSw3ICs2MSw3IEBACisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxnZXRvcHQuaD4KKyAKKy0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KKysjaW5jbHVkZSA8cG9sbC5oPgorIAorICNpZiBkZWZpbmVkKF9fbGludXhfXykKKyAjICAgaW5jbHVkZSAic2QtZGFlbW9uLmgiCitkaWZmIC0tZ2l0IGEvc3JjL2RhZW1vbi9kbHRfZGFlbW9uX2V2ZW50X2hhbmRsZXIuYyBiL3NyYy9kYWVtb24vZGx0X2RhZW1vbl9ldmVudF9oYW5kbGVyLmMKK2luZGV4IDE2MTFmN2IuLjBkNDYzZGEgMTAwNjQ0CistLS0gYS9zcmMvZGFlbW9uL2RsdF9kYWVtb25fZXZlbnRfaGFuZGxlci5jCisrKysgYi9zcmMvZGFlbW9uL2RsdF9kYWVtb25fZXZlbnRfaGFuZGxlci5jCitAQCAtMzAsNyArMzAsNyBAQAorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAKKy0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KKysjaW5jbHVkZSA8cG9sbC5oPgorICNpbmNsdWRlIDxzeXNsb2cuaD4KKyAKKyAjaW5jbHVkZSAiZGx0X2NvbW1vbi5oIgorZGlmZiAtLWdpdCBhL3NyYy9kYWVtb24vZGx0X2RhZW1vbl9ldmVudF9oYW5kbGVyLmggYi9zcmMvZGFlbW9uL2RsdF9kYWVtb25fZXZlbnRfaGFuZGxlci5oCitpbmRleCBlYjk2MTAxLi5iZDU1MGQzIDEwMDY0NAorLS0tIGEvc3JjL2RhZW1vbi9kbHRfZGFlbW9uX2V2ZW50X2hhbmRsZXIuaAorKysrIGIvc3JjL2RhZW1vbi9kbHRfZGFlbW9uX2V2ZW50X2hhbmRsZXIuaAorQEAgLTI1LDcgKzI1LDcgQEAKKyAgKiBcZmlsZSBkbHRfZGFlbW9uX2V2ZW50X2hhbmRsZXIuaAorICAqLworIAorLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgorKyNpbmNsdWRlIDxwb2xsLmg+CisgCisgI2luY2x1ZGUgImRsdF9kYWVtb25fY29ubmVjdGlvbl90eXBlcy5oIgorICNpbmNsdWRlICJkbHRfZGFlbW9uX2V2ZW50X2hhbmRsZXJfdHlwZXMuaCIKK2RpZmYgLS1naXQgYS9zcmMvZGFlbW9uL2RsdF9kYWVtb25fZXZlbnRfaGFuZGxlcl90eXBlcy5oIGIvc3JjL2RhZW1vbi9kbHRfZGFlbW9uX2V2ZW50X2hhbmRsZXJfdHlwZXMuaAoraW5kZXggMzcwZTUwMy4uMGIxNmQwOCAxMDA2NDQKKy0tLSBhL3NyYy9kYWVtb24vZGx0X2RhZW1vbl9ldmVudF9oYW5kbGVyX3R5cGVzLmgKKysrKyBiL3NyYy9kYWVtb24vZGx0X2RhZW1vbl9ldmVudF9oYW5kbGVyX3R5cGVzLmgKK0BAIC0yNSw3ICsyNSw3IEBACisgICogXGZpbGUgZGx0X2RhZW1vbl9ldmVudF9oYW5kbGVyX3R5cGVzLmgKKyAgKi8KKyAKKy0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KKysjaW5jbHVkZSA8cG9sbC5oPgorIAorICNpbmNsdWRlICJkbHRfZGFlbW9uX2Nvbm5lY3Rpb25fdHlwZXMuaCIKKyAKKyNkaWZmIC0tZ2l0IGEvc3JjL2xpYi9kbHRfdXNlci5jIGIvc3JjL2xpYi9kbHRfdXNlci5jCisjaW5kZXggZmZhOWIwOS4uNTExZjk5MSAxMDA2NDQKKyMtLS0gYS9zcmMvbGliL2RsdF91c2VyLmMKKyMrKysgYi9zcmMvbGliL2RsdF91c2VyLmMKKyNAQCAtNDMsNyArNDMsNyBAQAorIyAjaW5jbHVkZSA8ZXJybm8uaD4KKyMgCisjICNpbmNsdWRlIDxzeXMvdWlvLmg+IC8qIHdyaXRldigpICovCisjLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgorIysjaW5jbHVkZSA8cG9sbC5oPgorIyAKKyMgI2luY2x1ZGUgPGxpbWl0cy5oPgorIyAjaWZkZWYgbGludXgKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kbHQtZGFlbW9uL2RsdC1kYWVtb25fMi4xOC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RsdC1kYWVtb24vZGx0LWRhZW1vbl8yLjE4LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVjNjM4YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kbHQtZGFlbW9uL2RsdC1kYWVtb25fMi4xOC40LmJiCkBAIC0wLDAgKzEsNjIgQEAKK1NVTU1BUlkgPSAiRGlhZ25vc3RpYyBMb2cgYW5kIFRyYWNlIgorREVTQ1JJUFRJT04gPSAiVGhpcyBjb21wb25lbnQgcHJvdmlkZXMgYSBzdGFuZGFyZGlzZWQgbG9nIGFuZCB0cmFjZSBpbnRlcmZhY2UsIFwKK2Jhc2VkIG9uIHRoZSBzdGFuZGFyZGlzZWQgcHJvdG9jb2wgc3BlY2lmaWVkIGluIHRoZSBBVVRPU0FSIHN0YW5kYXJkIDQuMCBETFQuIFwKK1RoaXMgY29tcG9uZW50IGNhbiBiZSB1c2VkIGJ5IEdFTklWSSBjb21wb25lbnRzIGFuZCBvdGhlciBhcHBsaWNhdGlvbnMgYXMgXAorbG9nZ2luZyBmYWNpbGl0eSBwcm92aWRpbmc6IFwKKy0gdGhlIERMVCBzaGFyZWQgbGlicmFyeSBcCistIHRoZSBETFQgZGFlbW9uLCBpbmNsdWRpbmcgc3RhcnR1cCBzY3JpcHRzIFwKKy0gdGhlIERMVCBkYWVtb24gYWRhcHRvcnMtIHRoZSBETFQgY2xpZW50IGNvbnNvbGUgdXRpbGl0aWVzIFwKKy0gdGhlIERMVCB0ZXN0IGFwcGxpY2F0aW9ucyIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3Lmdlbml2aS5vcmcvIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJNUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTgxODQyMDgwNjBkZjg4MGZlMzEzN2I5M2ViODhhZWVhIgorCitERVBFTkRTID0gInpsaWIgZ3ppcC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9HRU5JVkkvJHtCUE59LmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgZmlsZTovLzAwMDItRG9uLXQtZXhlY3V0ZS1wcm9jZXNzZXMtYXMtYS1zcGVjaWZpYy11c2VyLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNC1Nb2RpZnktc3lzdGVtZC1jb25maWctZGlyZWN0b3J5LnBhdGNoIFwKKyAgICBmaWxlOi8vMjA0LnBhdGNoIFwKKyIKK1NSQ1JFViA9ICIxNGVhOTcxYmU3ZTgwOGI5YzUwOTljN2Y0MDRlZDNjZjM0MTg3M2M0IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywgZCl9IgorIyBHZW5lcmFsIG9wdGlvbnMKK1BBQ0tBR0VDT05GSUdbZGx0LWV4YW1wbGVzXSA9ICItRFdJVEhfRExUX0VYQU1QTEVTPU9OLC1EV0lUSF9ETFRfRVhBTVBMRVM9T0ZGLCxkbHQtZGFlbW9uLXN5c3RlbWQiCisKKyMgTGludXggb3B0aW9ucworUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItRFdJVEhfU1lTVEVNRD1PTiwtRFdJVEhfU1lTVEVNRD1PRkYsc3lzdGVtZCIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZC13YXRjaGRvZ10gPSAiLURXSVRIX1NZU1RFTURfV0FUQ0hET0c9T04sLURXSVRIX1NZU1RFTURfV0FUQ0hET0c9T0ZGLHN5c3RlbWQsbGlic3lzdGVtZCIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZC1qb3VybmFsXSA9ICItRFdJVEhfU1lTVEVNRF9KT1VSTkFMPU9OLC1EV0lUSF9TWVNURU1EX0pPVVJOQUw9T0ZGLHN5c3RlbWQsbGlic3lzdGVtZCIKK1BBQ0tBR0VDT05GSUdbZGx0LWRidXNdID0gIi1EV0lUSF9ETFRfREJVUz1PTiwtRFdJVEhfRExUX0RCVVM9T0ZGLGRidXMsZGJ1cy1saWIiCitQQUNLQUdFQ09ORklHW3VkcC1jb25uZWN0aW9uXSA9ICItRFdJVEhfVURQX0NPTk5FQ1RJT049T04sLURXSVRIX1VEUF9DT05ORUNUSU9OPU9GRiIKKworIyBDb21tYW5kIGxpbmUgb3B0aW9ucworUEFDS0FHRUNPTkZJR1tkbHQtc3lzdGVtXSA9ICItRFdJVEhfRExUX1NZU1RFTT1PTiwtRFdJVEhfRExUX1NZU1RFTT1PRkYiCitQQUNLQUdFQ09ORklHW2RsdC1hZGFwdG9yXSA9ICItRFdJVEhfRExUX0FEQVBUT1I9T04sLURXSVRIX0RMVF9BREFQVE9SPU9GRiwsZGx0LWRhZW1vbi1zeXN0ZW1kIgorUEFDS0FHRUNPTkZJR1tkbHQtY29uc29sZV0gPSAiLURXSVRIX0RMVF9DT05TT0xFPU9OLC1EV0lUSF9ETFRfQ09OU09MRT1PRkYsLGRsdC1kYWVtb24tc3lzdGVtZCIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBjbWFrZSBzeXN0ZW1kCisKK0VYVFJBX09FQ01BS0UgKz0gIi1EU1lTVEVNRF9VTklURElSPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0iCisKK1BBQ0tBR0VTICs9ICIke1BOfS1zeXN0ZW1kIgorU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1zeXN0ZW1kIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzeXN0ZW1kJywgJ2RsdC5zZXJ2aWNlJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2RsdC1zeXN0ZW0nLCAnZGx0LXN5c3RlbS5zZXJ2aWNlJywgJycsIGQpfSIKK1NZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0gPSAiZW5hYmxlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LXN5c3RlbWQgPSAiIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkbHQtYWRhcHRvcicsICdkbHQtYWRhcHRvci11ZHAuc2VydmljZScsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2RsdC1leGFtcGxlcycsICdkbHQtZXhhbXBsZS11c2VyLnNlcnZpY2UnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkbHQtZXhhbXBsZXMgZGx0LWNvbnNvbGUnLCAnZGx0LXJlY2VpdmUuc2VydmljZScsICcnLCBkKX0gXAorIgorU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfS1zeXN0ZW1kID0gImRpc2FibGUiCisKK0ZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9kbHQtZmlsZXRyYW5zZmVyIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBybSAtZiAke0R9JHtiaW5kaXJ9L2RsdC10ZXN0LSoKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9maWdsZXQvZmlnbGV0LzAwMDEtYnVpbGQtYWRkLWF1dG90b29scy1zdXBwb3J0LXRvLWFsbG93LWVhc3ktY3Jvc3MtY29tcC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9maWdsZXQvZmlnbGV0LzAwMDEtYnVpbGQtYWRkLWF1dG90b29scy1zdXBwb3J0LXRvLWFsbG93LWVhc3ktY3Jvc3MtY29tcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDI5YTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZpZ2xldC9maWdsZXQvMDAwMS1idWlsZC1hZGQtYXV0b3Rvb2xzLXN1cHBvcnQtdG8tYWxsb3ctZWFzeS1jcm9zcy1jb21wLnBhdGNoCkBAIC0wLDAgKzEsMjUyIEBACitGcm9tIDkwMmIwMjJjMDNhZDY3NjlhYmU0ZDdlNmZkZTFkZjdhODgzODU3ZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCYXJ0b3N6IEdvbGFzemV3c2tpIDxiZ29sYXN6ZXdza2lAYmF5bGlicmUuY29tPgorRGF0ZTogVHVlLCAyNCBNYXIgMjAyMCAxNDo0NDo1NCArMDEwMAorU3ViamVjdDogW1BBVENIXSBidWlsZDogYWRkIGF1dG90b29scyBzdXBwb3J0IHRvIGFsbG93IGVhc3kgY3Jvc3MtY29tcGlsYXRpb24KKworU2lnbmVkLW9mZi1ieTogQmFydG9zeiBHb2xhc3pld3NraSA8YmdvbGFzemV3c2tpQGJheWxpYnJlLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdXBzdHJlYW0gdXNlcyBhIGN1c3RvbSBNYWtlZmlsZSBhbmQgYnVpbGRzIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbnV4IGFzIHdlbGwgYXMgV2luZG93cy4gSSdtIG5vdCBzdXJlIGF1dG90b29scworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3VsZCBiZSBwcmVmZXJyZWQgYXMgYSBnZW5lcmFsIHNvbHV0aW9uIGJ1dCBpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrcyB3ZWxsIGVub3VnaCBmb3IgeW9jdG8uXQorLS0tCisgTWFrZWZpbGUgICAgIHwgMTIyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE1ha2VmaWxlLmFtICB8ICA2NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgY29uZmlndXJlLmFjIHwgIDIzICsrKysrKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDkwIGluc2VydGlvbnMoKyksIDEyMiBkZWxldGlvbnMoLSkKKyBkZWxldGUgbW9kZSAxMDA2NDQgTWFrZWZpbGUKKyBjcmVhdGUgbW9kZSAxMDA2NDQgTWFrZWZpbGUuYW0KKyBjcmVhdGUgbW9kZSAxMDA2NDQgY29uZmlndXJlLmFjCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IGU5MmJjYWYuLjAwMDAwMDAKKy0tLSBhL01ha2VmaWxlCisrKysgL2Rldi9udWxsCitAQCAtMSwxMjIgKzAsMCBAQAorLSMgTWFrZWZpbGUgZm9yIGZpZ2xldCB2ZXJzaW9uIDIuMi40ICgyNiBKYW4gMjAxMSkKKy0jIGFkYXB0ZWQgZnJvbSBNYWtlZmlsZSBmb3IgZmlnbGV0IHZlcnNpb24gMi4yLjIgKDA1IEp1bHkgMjAwNSkKKy0jIGFkYXB0ZWQgZnJvbSBNYWtlZmlsZSBmb3IgZmlnbGV0IHZlcnNpb24gMi4yICgxNSBPY3QgMTk5NikKKy0jIENvcHlyaWdodCAxOTkzLCAxOTk0LDE5OTUgR2xlbm4gQ2hhcHBlbGwgYW5kIElhbiBDaGFpCistIyBDb3B5cmlnaHQgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSBKb2huIENvd2FuCistIyBDb3B5cmlnaHQgMjAwMiBDaHJpc3RpYWFuIEtlZXQKKy0jIENvcHlyaWdodCAyMDExIENsYXVkaW8gTWF0c3Vva2EKKy0KKy0jIFBsZWFzZSBub3RpY2UgdGhhdCB0byBmb2xsb3cgbW9kZXJuIHN0YW5kYXJkcyBhbmQgZWFzZSB0aGlyZC1wYXJ0eQorLSMgcGFja2FnZSBjcmVhdGlvbiwgYmluYXJpZXMgYXJlIG5vdyBpbnN0YWxsZWQgdW5kZXIgQklORElSLCBhbmQgREVTVERJUgorLSMgaXMgcmVzZXJ2ZWQgZm9yIHRoZSBpbnN0YWxsYXRpb24gcGF0aG5hbWUgcHJlZml4LgorLSMKKy0jIFBsZWFzZSBtYWtlIHN1cmUgQklORElSLCBNQU5ESVIsIERFRkFVTFRGT05URElSIGFuZAorLSMgICBERUZBVUxURk9OVEZJTEUgYXJlIGRlZmluZWQgdG8gcmVmbGVjdCB0aGUgc2l0dWF0aW9uCistIyAgIG9uIHlvdXIgY29tcHV0ZXIuICBTZWUgUkVBRE1FIGZvciBkZXRhaWxzLgorLQorLSMgRG9uJ3QgY2hhbmdlIHRoaXMgZXZlbiBpZiB5b3VyIHNoZWxsIGlzIGRpZmZlcmVudC4gVGhlIG9ubHkgcmVhc29uCistIyBmb3IgY2hhbmdpbmcgdGhpcyBpcyBpZiBzaCBpcyBub3QgaW4gdGhlIHNhbWUgcGxhY2UuCistU0hFTEwgPSAvYmluL3NoCistCistIyBUaGUgQyBjb21waWxlciBhbmQgbGlua2VyIHRvIHVzZQorLUNDCT0gZ2NjCistQ0ZMQUdTCT0gLWcgLU8yIC1XYWxsIC1Xbm8tdW51c2VkLXZhbHVlCistTEQJPSBnY2MKKy1MREZMQUdTID0KKy0KKy0jIEZlYXR1cmUgZmxhZ3M6CistIyAgIGRlZmluZSBUTEZfRk9OVFMgdG8gdXNlIFRPSWxldCBUTEYgZm9udHMKKy1YQ0ZMQUdTCT0gLURUTEZfRk9OVFMKKy0KKy0jIFdoZXJlIHRvIGluc3RhbGwgZmlsZXMKKy1wcmVmaXgJPSAvdXNyL2xvY2FsCistCistIyBXaGVyZSB0aGUgZXhlY3V0YWJsZXMgc2hvdWxkIGJlIHB1dAorLUJJTkRJUgk9ICQocHJlZml4KS9iaW4KKy0KKy0jIFdoZXJlIHRoZSBtYW4gcGFnZSBzaG91bGQgYmUgcHV0CistTUFORElSCT0gJChwcmVmaXgpL21hbgorLQorLSMgV2hlcmUgZmlnbGV0IHdpbGwgc2VhcmNoIGZpcnN0IGZvciBmb250cyAodGhlICIuZmxmIiBmaWxlcykuCistREVGQVVMVEZPTlRESVIgPSAkKHByZWZpeCkvc2hhcmUvZmlnbGV0CistIyBVc2UgdGhpcyBkZWZpbml0aW9uIGlmIHlvdSBjYW4ndCBwdXQgdGhpbmdzIGluICQocHJlZml4KS9zaGFyZS9maWdsZXQKKy0jREVGQVVMVEZPTlRESVIgPSBmb250cworLQorLSMgVGhlIGZpbGVuYW1lIG9mIHRoZSBmb250IHRvIGJlIHVzZWQgaWYgbm8gb3RoZXIgaXMgc3BlY2lmaWVkLAorLSMgICB3aXRob3V0IHN1ZmZpeC4oc3RhbmRhcmQgaXMgcmVjb21tZW5kZWQsIGJ1dCBhbnkgb3RoZXIgY2FuIGJlCistIyAgIHVzZWQpLiBUaGlzIGZvbnQgZmlsZSBzaG91bGQgcmVzaWRlIGluIHRoZSBkaXJlY3Rvcnkgc3BlY2lmaWVkCistIyAgIGJ5IERFRkFVTFRGT05URElSLgorLURFRkFVTFRGT05URklMRSA9IHN0YW5kYXJkCistCistIyMKKy0jIyAgRU5EIE9GIENPTkZJR1VSQVRJT04gU0VDVElPTgorLSMjCistCistVkVSU0lPTgk9IDIuMi41CistRElTVAk9IGZpZ2xldC0kKFZFUlNJT04pCistT0JKUwk9IGZpZ2xldC5vIHppcGlvLm8gY3JjLm8gaW5mbGF0ZS5vIHV0ZjgubworLUJJTlMJPSBmaWdsZXQgY2hrZm9udCBmaWdsaXN0IHNob3dmaWdmb250cworLU1BTlVBTAk9IGZpZ2xldC42IGNoa2ZvbnQuNiBmaWdsaXN0LjYgc2hvd2ZpZ2ZvbnRzLjYKKy1ERklMRVMJPSBNYWtlZmlsZSBNYWtlZmlsZS50YyAkKE1BTlVBTCkgJChPQkpTOi5vPS5jKSBjaGtmb250LmMgZ2V0b3B0LmMgXAorLQkgIGZpZ2xpc3Qgc2hvd2ZpZ2ZvbnRzIENIQU5HRVMgRkFRIFJFQURNRSBMSUNFTlNFIGZpZ2ZvbnQudHh0IFwKKy0JICBjcmMuaCBpbmZsYXRlLmggemlwaW8uaCB1dGY4LmggcnVuLXRlc3RzLnNoIGZpZ21hZ2ljCistCistLmMubzoKKy0JJChDQykgLWMgJChDRkxBR1MpICQoWENGTEFHUykgLURERUZBVUxURk9OVERJUj1cIiQoREVGQVVMVEZPTlRESVIpXCIgXAorLQkJLURERUZBVUxURk9OVEZJTEU9XCIkKERFRkFVTFRGT05URklMRSlcIiAtbyAkKi5vICQ8CistCistYWxsOiAkKEJJTlMpCistCistZmlnbGV0OiAkKE9CSlMpCistCSQoTEQpICQoTERGTEFHUykgLW8gJEAgJChPQkpTKQorLQorLWNoa2ZvbnQ6IGNoa2ZvbnQubworLQkkKExEKSAkKExERkxBR1MpIC1vICRAIGNoa2ZvbnQubworLQorLWNsZWFuOgorLQlybSAtZiAqLm8gKn4gY29yZSBmaWdsZXQgY2hrZm9udAorLQorLWluc3RhbGw6IGFsbAorLQlta2RpciAtcCAkKERFU1RESVIpJChCSU5ESVIpCistCW1rZGlyIC1wICQoREVTVERJUikkKE1BTkRJUikvbWFuNgorLQlta2RpciAtcCAkKERFU1RESVIpJChERUZBVUxURk9OVERJUikKKy0JY3AgJChCSU5TKSAkKERFU1RESVIpJChCSU5ESVIpCistCWNwICQoTUFOVUFMKSAkKERFU1RESVIpJChNQU5ESVIpL21hbjYKKy0JY3AgZm9udHMvKi5mbGYgJChERVNURElSKSQoREVGQVVMVEZPTlRESVIpCistCWNwIGZvbnRzLyouZmxjICQoREVTVERJUikkKERFRkFVTFRGT05URElSKQorLQorLWRpc3Q6CistCXJtIC1SZiAkKERJU1QpICQoRElTVCkudGFyLmd6CistCW1rZGlyICQoRElTVCkvCistCWNwICQoREZJTEVTKSAkKERJU1QpLworLQlta2RpciAkKERJU1QpL2ZvbnRzCistCWNwIGZvbnRzLyouZmxbZmNdICQoRElTVCkvZm9udHMKKy0JbWtkaXIgJChESVNUKS90ZXN0cworLQljcCB0ZXN0cy8qdHh0IHRlc3RzL2VtYm9zcy50bGYgJChESVNUKS90ZXN0cworLQl0YXIgY3ZmIC0gJChESVNUKSB8IGd6aXAgLTljID4gJChESVNUKS50YXIuZ3oKKy0Jcm0gLVJmICQoRElTVCkKKy0JdGFyIHhmICQoRElTVCkudGFyLmd6CistCShjZCAkKERJU1QpOyBtYWtlIGFsbCBjaGVjayB2ZXJjaGVjaykKKy0JQHJtIC1SZiAkKERJU1QpCistCUBlY2hvCistCUBscyAtbCAkKERJU1QpLnRhci5negorLQorLWNoZWNrOgorLQlAZWNobyAiUnVuIHRlc3RzIGluIGBwd2RgIgorLQlALi9ydW4tdGVzdHMuc2ggZm9udHMKKy0JQGVjaG8KKy0KKy12ZXJjaGVjazoKKy0JQHByaW50ZiAiSW5mb2NvZGU6ICI7IC4vZmlnbGV0IC1JMQorLQlALi9maWdsZXQgLXZ8c2VkIC1uICcvVmVyc2lvbi9zLy4qXChWZXJzaW9uXCkvXDEvcCcKKy0JQHByaW50ZiAiUkVBRE1FOiAiOyBoZWFkIC0xIDwgUkVBRE1FfHNlZCAncy8uKikgLy8nCistCUBwcmludGYgIkZBUTogIjsgZ3JlcCBsYXRlc3QgRkFRfHNlZCAncy8gYW5kIGNhbi4qLy8nCistCUBncmVwIC1oICJeXC5USCIgKi42CistCistJChPQkpTKSBjaGtmb250Lm8gZ2V0b3B0Lm86IE1ha2VmaWxlCistY2hrZm9udC5vOiBjaGtmb250LmMKKy1jcmMubzogY3JjLmMgY3JjLmgKKy1maWdsZXQubzogZmlnbGV0LmMgemlwaW8uaAorLWdldG9wdC5vOiBnZXRvcHQuYworLWluZmxhdGUubzogaW5mbGF0ZS5jIGluZmxhdGUuaAorLXppcGlvLm86IHppcGlvLmMgemlwaW8uaCBpbmZsYXRlLmggY3JjLmgKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uN2ZlYjQyYworLS0tIC9kZXYvbnVsbAorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC0wLDAgKzEsNjcgQEAKKytBTV9DRkxBR1MgPSAtaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvY29uZmlnLmggLVdhbGwgLVdleHRyYSAtZworKworK2Jpbl9QUk9HUkFNUyA9IGZpZ2xldCBjaGtmb250CisrZGlzdF9iaW5fU0NSSVBUUyA9IGZpZ2xpc3Qgc2hvd2ZpZ2ZvbnRzCisrCisrZmlnbGV0X1NPVVJDRVMgPSBmaWdsZXQuYyB6aXBpby5jIGNyYy5jIGluZmxhdGUuYyB1dGY4LmMKKytjaGtmb250X1NPVVJDRVMgPSBjaGtmb250LmMKKysKKytmb250ZGlyID0gJChwcmVmaXgpL3NoYXJlL2ZpZ2xldAorK2Rpc3RfZm9udF9EQVRBID0gXAorKwlmb250cy82NDYtY2EyLmZsYyBcCisrCWZvbnRzLzY0Ni1mci5mbGMgXAorKwlmb250cy82NDYtbm8uZmxjIFwKKysJZm9udHMvODg1OS00LmZsYyBcCisrCWZvbnRzL2J1YmJsZS5mbGYgXAorKwlmb250cy9sZWFuLmZsZiBcCisrCWZvbnRzL3Ntc2NyaXB0LmZsZiBcCisrCWZvbnRzL3V0ZjguZmxjIFwKKysJZm9udHMvNjQ2LWNhLmZsYyBcCisrCWZvbnRzLzY0Ni1nYi5mbGMgXAorKwlmb250cy82NDYtcHQyLmZsYyBcCisrCWZvbnRzLzg4NTktNS5mbGMgXAorKwlmb250cy9kaWdpdGFsLmZsZiBcCisrCWZvbnRzL21pbmkuZmxmIFwKKysJZm9udHMvc21zaGFkb3cuZmxmIFwKKysJZm9udHMvNjQ2LWNuLmZsYyBcCisrCWZvbnRzLzY0Ni1odS5mbGMgXAorKwlmb250cy82NDYtcHQuZmxjIFwKKysJZm9udHMvODg1OS03LmZsYyBcCisrCWZvbnRzL2ZyYW5nby5mbGMgXAorKwlmb250cy9tbmVtb25pYy5mbGYgXAorKwlmb250cy9zbXNsYW50LmZsZiBcCisrCWZvbnRzLzY0Ni1jdS5mbGMgXAorKwlmb250cy82NDYtaXJ2LmZsYyBcCisrCWZvbnRzLzY0Ni1zZTIuZmxjIFwKKysJZm9udHMvODg1OS04LmZsYyBcCisrCWZvbnRzL2h6LmZsYyBcCisrCWZvbnRzL21vc2Nvdy5mbGMgXAorKwlmb250cy9zdGFuZGFyZC5mbGYgXAorKwlmb250cy82NDYtZGUuZmxjIFwKKysJZm9udHMvNjQ2LWl0LmZsYyBcCisrCWZvbnRzLzY0Ni1zZS5mbGMgXAorKwlmb250cy84ODU5LTkuZmxjIFwKKysJZm9udHMvaWxoZWJyZXcuZmxjIFwKKysJZm9udHMvc2NyaXB0LmZsZiBcCisrCWZvbnRzL3Rlcm0uZmxmIFwKKysJZm9udHMvNjQ2LWRrLmZsYyBcCisrCWZvbnRzLzY0Ni1qcC5mbGMgXAorKwlmb250cy82NDYteXUuZmxjIFwKKysJZm9udHMvYmFubmVyLmZsZiBcCisrCWZvbnRzL2l2cml0LmZsZiBcCisrCWZvbnRzL3NoYWRvdy5mbGYgXAorKwlmb250cy91cHBlci5mbGMgXAorKwlmb250cy82NDYtZXMyLmZsYyBcCisrCWZvbnRzLzY0Ni1rci5mbGMgXAorKwlmb250cy84ODU5LTIuZmxjIFwKKysJZm9udHMvYmlnLmZsZiBcCisrCWZvbnRzL2ppczAyMDEuZmxjIFwKKysJZm9udHMvc2xhbnQuZmxmIFwKKysJZm9udHMvdXNoZWJyZXcuZmxjIFwKKysJZm9udHMvNjQ2LWVzLmZsYyBcCisrCWZvbnRzLzY0Ni1ubzIuZmxjIFwKKysJZm9udHMvODg1OS0zLmZsYyBcCisrCWZvbnRzL2Jsb2NrLmZsZiBcCisrCWZvbnRzL2tvaThyLmZsYyBcCisrCWZvbnRzL3NtYWxsLmZsZiBcCisrCWZvbnRzL3Vza2F0YS5mbGMKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi43MjE1NGUyCistLS0gL2Rldi9udWxsCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0wLDAgKzEsMjMgQEAKKytBQ19QUkVSRVEoMi42MSkKKysKKytBQ19JTklUKFtmaWdsZXRdLCAyLjIuNSkKKysKKytBQ19DT05GSUdfQVVYX0RJUihbYXV0b3N0dWZmXSkKKytBQ19DT05GSUdfTUFDUk9fRElSUyhbbTRdKQorK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ24gc3ViZGlyLW9iamVjdHNdKQorK200X2lmZGVmKFtBTV9TSUxFTlRfUlVMRVNdLCBbQU1fU0lMRU5UX1JVTEVTKFt5ZXNdKV0pCisrCisrQUNfQ09ORklHX1NSQ0RJUihbZmlnbGV0LmNdKQorK0FDX0NPTkZJR19IRUFERVIoW2NvbmZpZy5oXSkKKysKKytBQ19ERUZJTkUoW0RFRkFVTFRGT05URElSXSwgWyIvdXNyL3NoYXJlL2ZpZ2xldCJdLCBbRGVmYXVsdCBmb250IGRpcmVjdG9yeV0pCisrQUNfREVGSU5FKFtERUZBVUxURk9OVEZJTEVdLCBbInN0YW5kYXJkIl0sIFtEZWZhdWx0IGZvbnRdKQorKworK0FNX1BST0dfQVIKKytBQ19QUk9HX0NDCisrQUNfUFJPR19JTlNUQUxMCisrQUNfSEVBREVSX1NUREMKKysKKytBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlXSkKKysKKytBQ19PVVRQVVQKKy0tIAorMi4yNS4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9maWdsZXQvZmlnbGV0X2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9maWdsZXQvZmlnbGV0X2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjExNjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZpZ2xldC9maWdsZXRfZ2l0LmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiRklHbGV0IGlzIGEgcHJvZ3JhbSB0aGF0IGNyZWF0ZXMgbGFyZ2UgY2hhcmFjdGVycyBvdXQgb2Ygb3JkaW5hcnkgc2NyZWVuIGNoYXJhY3RlcnMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZpZ2xldC5vcmcvIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE2ODhiY2Q5N2IyNzcwNGYxYWZjYWM3MzM2NDA5ODU3IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY21hdHN1b2thL2ZpZ2xldC5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC1hZGQtYXV0b3Rvb2xzLXN1cHBvcnQtdG8tYWxsb3ctZWFzeS1jcm9zcy1jb21wLnBhdGNoIgorU1JDUkVWID0gIjViYmNkNzM4M2E4YzNhNTMxMjk5YjIxNmIwYzczNGUxNDk1YzZkYjMiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorUFYgPSAiMi4yLjUrZ2l0JHtTUkNQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbHVlbnRiaXQvZmx1ZW50Yml0XzEuMy41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsdWVudGJpdC9mbHVlbnRiaXRfMS4zLjUuYmIKaW5kZXggZDhjYjhiNS4uMDY4OTVhMCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsdWVudGJpdC9mbHVlbnRiaXRfMS4zLjUuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsdWVudGJpdC9mbHVlbnRiaXRfMS4zLjUuYmIKQEAgLTQzLDYgKzQzLDggQEAKIAogRVhUUkFfT0VDTUFLRSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCctREZMQl9TWVNURU1EPU9uJywnJyxkKX0iCiAKK0VYVFJBX09FQ01BS0VfYXBwZW5kX3Jpc2N2NjQgPSAiIC1ERkxCX0RFUFM9J2F0b21pYyciCisKICMgS2Fma2EgT3V0cHV0IHBsdWdpbiAoZGlzYWJsZWQgYnkgZGVmYXVsdCk6IG5vdGUgdGhhdCB3aGVuCiAjIGVuYWJsaW5nIEthZmthIG91dHB1dCBwbHVnaW4sIHRoZSBiYWNrZW5kIGxpYnJhcnkgbGlicmRrYWZrYQogIyByZXF1aXJlcyAnb3BlbnNzbCcgYXMgYSBkZXBlbmRlbmN5LgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLTMuMTIuNi8wMDAxLWluY2x1ZGUtY3Vwcy1wcGQuaC1mb3ItbWlzc2luZy1wcGQtZGVmaW5pdGlvbnMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAtMy4xMi42LzAwMDEtaW5jbHVkZS1jdXBzLXBwZC5oLWZvci1taXNzaW5nLXBwZC1kZWZpbml0aW9ucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjI1OWI1Zi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAtMy4xMi42LzAwMDEtaW5jbHVkZS1jdXBzLXBwZC5oLWZvci1taXNzaW5nLXBwZC1kZWZpbml0aW9ucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gN2VmOWMwNDBkZDk1OTEwNWMxNmQ0ZGM2N2UxNGYzYmJlYTI1ZTc3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDE2IERlYyAyMDE2IDE5OjUxOjE5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgY3Vwcy9wcGQuaCBmb3IgbWlzc2luZyBwcGQgZGVmaW5pdGlvbnMKLQotRml4ZXMgZXJyb3JzIHNwb3R0ZWQgYnkgY2xhbmcKLQotfCBwcm50L2hwY3Vwcy9IUEN1cHNGaWx0ZXIuY3BwOjM2NToxODogZXJyb3I6IHVzZSBvZiB1bmRlY2xhcmVkIGlkZW50aWZpZXIgJ3BwZEZpbmRBdHRyJwotfCAgICAgaWYgKCgoYXR0ciA9IHBwZEZpbmRBdHRyKG1fcHBkLCAiaHBQcmludGVyTGFuZ3VhZ2UiLCBOVUxMKSkgPT0gTlVMTCkgfHwKLXwgICAgICAgICAgICAgICAgICBeCi18IHBybnQvaHBjdXBzL0hQQ3Vwc0ZpbHRlci5jcHA6MzY4OjEzOiBlcnJvcjogdXNlIG9mIHVuZGVjbGFyZWQgaWRlbnRpZmllciAncHBkQ2xvc2UnCi18ICAgICAgICAgICAgIHBwZENsb3NlKG1fcHBkKTsKLXwgICAgICAgICAgICAgXgotfCBwcm50L2hwY3Vwcy9IUEN1cHNGaWx0ZXIuY3BwOjQ0NDo5OiBlcnJvcjogdXNlIG9mIHVuZGVjbGFyZWQgaWRlbnRpZmllciAncHBkQ2xvc2UnCi18ICAgICAgICAgcHBkQ2xvc2UobV9wcGQpOwotfCAgICAgICAgIF4KLXwgcHJudC9ocGN1cHMvSFBDdXBzRmlsdGVyLmNwcDo0OTc6MTM6IGVycm9yOiB1c2Ugb2YgdW5kZWNsYXJlZCBpZGVudGlmaWVyICdwcGRPcGVuRmlsZScKLXwgICAgIG1fcHBkID0gcHBkT3BlbkZpbGUoZ2V0ZW52KCJQUEQiKSk7Ci18ICAgICAgICAgICAgIF4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBwcm50L2hwY3Vwcy9IUEN1cHNGaWx0ZXIuaCB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvcHJudC9ocGN1cHMvSFBDdXBzRmlsdGVyLmggYi9wcm50L2hwY3Vwcy9IUEN1cHNGaWx0ZXIuaAotaW5kZXggMDQzMWE3YS4uZWIwY2FkNiAxMDA2NDQKLS0tLSBhL3BybnQvaHBjdXBzL0hQQ3Vwc0ZpbHRlci5oCi0rKysgYi9wcm50L2hwY3Vwcy9IUEN1cHNGaWx0ZXIuaAotQEAgLTM3LDYgKzM3LDcgQEAKLSAjaW5jbHVkZSAiSm9iLmgiDQotIA0KLSAjaW5jbHVkZSAiZGJ1c2NvbW0uaCINCi0rI2luY2x1ZGUgPGN1cHMvcHBkLmg+DQotIA0KLSAjZGVmaW5lCQlEQklUTUFQRklMRUhFQURFUgkJMTQNCi0gI2RlZmluZQkJREJJVE1BUElORk9IRUFERVIJCTQwDQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAtMy4xMi42L2NvbmZpZ3VyZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcC0zLjEyLjYvY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWMwMDVjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcC0zLjEyLjYvY29uZmlndXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotSW5kZXg6IGhwbGlwLTMuMTIuNi9jb25maWd1cmUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBocGxpcC0zLjEyLjYub3JpZy9jb25maWd1cmUuaW4JMjAxNC0wNy0xNiAyMDowMzo1MS4zMTAwNDQxOTYgKzAwMDAKLSsrKyBocGxpcC0zLjEyLjYvY29uZmlndXJlLmluCTIwMTQtMDctMTggMDc6NTM6MzEuNTg5NTU5MTkyICswMDAwCi1AQCAtMjcsOCArMjcsNyBAQAotIAotICNBQ19QUkVSRVEoMi41OSkKLSBBQ19JTklUKFtIUCBMaW51eCBJbWFnaW5nIGFuZCBQcmludGluZ10sIFszLjEyLjZdLCBbMy4xMi42XSwgW2hwbGlwXSkKLS0jQU1fSU5JVF9BVVRPTUFLRShbMS45IGZvcmVpZ25dKQotLUFNX0lOSVRfQVVUT01BS0UKLStBTV9JTklUX0FVVE9NQUtFKFsxLjkgZm9yZWlnbl0pCi0gQUNfRElTQUJMRV9TVEFUSUMKLSAKLSAjIENoZWNrcyBmb3IgcHJvZ3JhbXMuCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAtMy4xMi42L2N1cHMtMS42LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLTMuMTIuNi9jdXBzLTEuNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RmMDFhYS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAtMy4xMi42L2N1cHMtMS42LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzk1ICswLDAgQEAKLUltcG9ydGVkIGZyb20gZ2VudG9vOgotaHR0cHM6Ly9idWdzLmdlbnRvby5vcmcvc2hvd19idWcuY2dpP2lkPTQyODY3MgotCi1kaWZmIC1OYXVyIGhwbGlwLTMuMTIuNl9vbGQvcHJudC9jdXBzZXh0L2N1cHNleHQuYyBocGxpcC0zLjEyLjYvcHJudC9jdXBzZXh0L2N1cHNleHQuYwotLS0tIGhwbGlwLTMuMTIuNl9vbGQvcHJudC9jdXBzZXh0L2N1cHNleHQuYwkyMDEyLTA4LTA0IDA5OjE4OjE4LjM4ODMzMDAzOCArMDIwMAotKysrIGhwbGlwLTMuMTIuNi9wcm50L2N1cHNleHQvY3Vwc2V4dC5jCTIwMTItMDgtMDQgMDk6MTg6MjcuODU1MTgxMzI3ICswMjAwCi1AQCAtODcsNiArODcsNDYgQEAKLSAjZGVmaW5lIFBZX1NTSVpFX1RfTUlOIElOVF9NSU4NCi0gI2VuZGlmDQotIA0KLSsjaWYgKENVUFNfVkVSU0lPTl9NQUpPUiA+IDEpIHx8IChDVVBTX1ZFUlNJT05fTUlOT1IgPiA1KQ0KLSsjZGVmaW5lIEhBVkVfQ1VQU18xXzYgMQ0KLSsjZW5kaWYNCi0rDQotKyNpZm5kZWYgSEFWRV9DVVBTXzFfNg0KLSsjZGVmaW5lIGlwcEdldENvdW50KGF0dHIpICAgICBhdHRyLT5udW1fdmFsdWVzDQotKyNkZWZpbmUgaXBwR2V0R3JvdXBUYWcoYXR0cikgIGF0dHItPmdyb3VwX3RhZw0KLSsjZGVmaW5lIGlwcEdldFZhbHVlVGFnKGF0dHIpICBhdHRyLT52YWx1ZV90YWcNCi0rI2RlZmluZSBpcHBHZXROYW1lKGF0dHIpICAgICAgYXR0ci0+bmFtZQ0KLSsjZGVmaW5lIGlwcEdldEJvb2xlYW4oYXR0ciwgZWxlbWVudCkgYXR0ci0+dmFsdWVzW2VsZW1lbnRdLmJvb2xlYW4NCi0rI2RlZmluZSBpcHBHZXRJbnRlZ2VyKGF0dHIsIGVsZW1lbnQpIGF0dHItPnZhbHVlc1tlbGVtZW50XS5pbnRlZ2VyDQotKyNkZWZpbmUgaXBwR2V0U3RhdHVzQ29kZShpcHApIGlwcC0+cmVxdWVzdC5zdGF0dXMuc3RhdHVzX2NvZGUNCi0rI2RlZmluZSBpcHBHZXRTdHJpbmcoYXR0ciwgZWxlbWVudCwgbGFuZ3VhZ2UpIGF0dHItPnZhbHVlc1tlbGVtZW50XS5zdHJpbmcudGV4dA0KLSsNCi0rc3RhdGljIGlwcF9hdHRyaWJ1dGVfdCAqIGlwcEZpcnN0QXR0cmlidXRlKCBpcHBfdCAqaXBwICkNCi0rew0KLSsgICAgaWYgKCFpcHApDQotKyAgICAgICAgcmV0dXJuIChOVUxMKTsNCi0rICAgIHJldHVybiAoaXBwLT5jdXJyZW50ID0gaXBwLT5hdHRycyk7DQotK30NCi0rDQotK3N0YXRpYyBpcHBfYXR0cmlidXRlX3QgKiBpcHBOZXh0QXR0cmlidXRlKCBpcHBfdCAqaXBwICkNCi0rew0KLSsgICAgaWYgKCFpcHAgfHwgIWlwcC0+Y3VycmVudCkNCi0rICAgICAgICByZXR1cm4gKE5VTEwpOw0KLSsgICAgcmV0dXJuIChpcHAtPmN1cnJlbnQgPSBpcHAtPmN1cnJlbnQtPm5leHQpOw0KLSt9DQotKw0KLStzdGF0aWMgaW50IGlwcFNldE9wZXJhdGlvbiggaXBwX3QgKmlwcCwgaXBwX29wX3Qgb3AgKQ0KLSt7DQotKyAgICBpcHAtPnJlcXVlc3Qub3Aub3BlcmF0aW9uX2lkID0gb3A7DQotKyAgICByZXR1cm4gKDEpOw0KLSt9DQotKw0KLStzdGF0aWMgaW50IGlwcFNldFJlcXVlc3RJZCggaXBwX3QgKmlwcCwgaW50IHJlcXVlc3RfaWQgKQ0KLSt7DQotKyAgICBpcHAtPnJlcXVlc3QuYW55LnJlcXVlc3RfaWQgPSByZXF1ZXN0X2lkOw0KLSsgICAgcmV0dXJuICgxKTsNCi0rfQ0KLSsjZW5kaWYNCi0gDQotIGludCBnX251bV9vcHRpb25zID0gMDsNCi0gY3Vwc19vcHRpb25fdCAqIGdfb3B0aW9uczsNCi1AQCAtMzMzLDggKzM3Myw4IEBACi0gICAgIHJlcXVlc3QgPSBpcHBOZXcoKTsNCi0gICAgIGxhbmd1YWdlID0gY3Vwc0xhbmdEZWZhdWx0KCk7DQotIA0KLS0gICAgcmVxdWVzdC0+cmVxdWVzdC5vcC5vcGVyYXRpb25faWQgPSBDVVBTX0dFVF9QUklOVEVSUzsNCi0tICAgIHJlcXVlc3QtPnJlcXVlc3QuYW55LnJlcXVlc3RfaWQgPSAxOw0KLSsgICAgaXBwU2V0T3BlcmF0aW9uKCByZXF1ZXN0LCBDVVBTX0dFVF9QUklOVEVSUyApOw0KLSsgICAgaXBwU2V0UmVxdWVzdElkICggcmVxdWVzdCwgMSk7DQotIA0KLSAgICAgaXBwQWRkU3RyaW5nKCByZXF1ZXN0LCBJUFBfVEFHX09QRVJBVElPTiwgSVBQX1RBR19DSEFSU0VULA0KLSAgICAgICAgICAgICAgICAgICAiYXR0cmlidXRlcy1jaGFyc2V0IiwgTlVMTCwgY3Vwc0xhbmdFbmNvZGluZyggbGFuZ3VhZ2UgKSApOw0KLUBAIC0zNzgsMTAgKzQxOCwxMCBAQAotICAgICAgICAgaXBwX3BzdGF0ZV90IHN0YXRlOw0KLSAgICAgICAgIGludCBpID0gMDsNCi0gDQotLSAgICAgICAgZm9yICggYXR0ciA9IHJlc3BvbnNlLT5hdHRyczsgYXR0ciAhPSBOVUxMOyBhdHRyID0gYXR0ci0+bmV4dCApDQotKyAgICAgICAgZm9yICggYXR0ciA9IGlwcEZpcnN0QXR0cmlidXRlKCByZXNwb25zZSApOyBhdHRyICE9IE5VTEw7IGF0dHIgPSBpcHBOZXh0QXR0cmlidXRlKCByZXNwb25zZSApICkNCi0gICAgICAgICB7DQotLSAgICAgICAgICAgIHdoaWxlICggYXR0ciAhPSBOVUxMICYmIGF0dHItPmdyb3VwX3RhZyAhPSBJUFBfVEFHX1BSSU5URVIgKQ0KLS0gICAgICAgICAgICAgICAgYXR0ciA9IGF0dHItPm5leHQ7DQotKyAgICAgICAgICAgIHdoaWxlICggYXR0ciAhPSBOVUxMICYmIGlwcEdldEdyb3VwVGFnKCBhdHRyICkgIT0gSVBQX1RBR19QUklOVEVSICkNCi0rICAgICAgICAgICAgICAgIGF0dHIgPSBpcHBOZXh0QXR0cmlidXRlKCByZXNwb25zZSApOw0KLSANCi0gICAgICAgICAgICAgaWYgKCBhdHRyID09IE5VTEwgKQ0KLSAgICAgICAgICAgICAgICAgYnJlYWs7DQotQEAgLTM5MCw0MSArNDMwLDQxIEBACi0gICAgICAgICAgICAgc3RhdGUgPSBJUFBfUFJJTlRFUl9JRExFOw0KLSAgICAgICAgICAgICBhY2NlcHRpbmcgPSAwOw0KLSANCi0tICAgICAgICAgICAgd2hpbGUgKCBhdHRyICE9IE5VTEwgJiYgYXR0ci0+Z3JvdXBfdGFnID09IElQUF9UQUdfUFJJTlRFUiApDQotKyAgICAgICAgICAgIHdoaWxlICggYXR0ciAhPSBOVUxMICYmIGlwcEdldEdyb3VwVGFnKCBhdHRyICkgPT0gSVBQX1RBR19QUklOVEVSICkNCi0gICAgICAgICAgICAgew0KLS0gICAgICAgICAgICAgICAgaWYgKCBzdHJjbXAoIGF0dHItPm5hbWUsICJwcmludGVyLW5hbWUiICkgPT0gMCAmJg0KLS0gICAgICAgICAgICAgICAgICAgICAgICBhdHRyLT52YWx1ZV90YWcgPT0gSVBQX1RBR19OQU1FICkNCi0tICAgICAgICAgICAgICAgICAgICBuYW1lID0gYXR0ci0+dmFsdWVzWyAwIF0uc3RyaW5nLnRleHQ7DQotLQ0KLS0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIHN0cmNtcCggYXR0ci0+bmFtZSwgImRldmljZS11cmkiICkgPT0gMCAmJg0KLS0gICAgICAgICAgICAgICAgICAgICAgICBhdHRyLT52YWx1ZV90YWcgPT0gSVBQX1RBR19VUkkgKQ0KLS0gICAgICAgICAgICAgICAgICAgIGRldmljZV91cmkgPSBhdHRyLT52YWx1ZXNbIDAgXS5zdHJpbmcudGV4dDsNCi0tDQotLSAgICAgICAgICAgICAgICBlbHNlIGlmICggc3RyY21wKCBhdHRyLT5uYW1lLCAicHJpbnRlci11cmktc3VwcG9ydGVkIiApID09IDAgJiYNCi0tICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci0+dmFsdWVfdGFnID09IElQUF9UQUdfVVJJICkNCi0tICAgICAgICAgICAgICAgICAgICBwcmludGVyX3VyaSA9IGF0dHItPnZhbHVlc1sgMCBdLnN0cmluZy50ZXh0Ow0KLS0NCi0tICAgICAgICAgICAgICAgIGVsc2UgaWYgKCBzdHJjbXAoIGF0dHItPm5hbWUsICJwcmludGVyLWluZm8iICkgPT0gMCAmJg0KLS0gICAgICAgICAgICAgICAgICAgICAgICBhdHRyLT52YWx1ZV90YWcgPT0gSVBQX1RBR19URVhUICkNCi0tICAgICAgICAgICAgICAgICAgICBpbmZvID0gYXR0ci0+dmFsdWVzWyAwIF0uc3RyaW5nLnRleHQ7DQotLQ0KLS0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIHN0cmNtcCggYXR0ci0+bmFtZSwgInByaW50ZXItbG9jYXRpb24iICkgPT0gMCAmJg0KLS0gICAgICAgICAgICAgICAgICAgICAgICBhdHRyLT52YWx1ZV90YWcgPT0gSVBQX1RBR19URVhUICkNCi0tICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiA9IGF0dHItPnZhbHVlc1sgMCBdLnN0cmluZy50ZXh0Ow0KLS0NCi0tICAgICAgICAgICAgICAgIGVsc2UgaWYgKCBzdHJjbXAoIGF0dHItPm5hbWUsICJwcmludGVyLW1ha2UtYW5kLW1vZGVsIiApID09IDAgJiYNCi0tICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci0+dmFsdWVfdGFnID09IElQUF9UQUdfVEVYVCApDQotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9tb2RlbCA9IGF0dHItPnZhbHVlc1sgMCBdLnN0cmluZy50ZXh0Ow0KLS0NCi0tICAgICAgICAgICAgICAgIGVsc2UgaWYgKCBzdHJjbXAoIGF0dHItPm5hbWUsICJwcmludGVyLXN0YXRlIiApID09IDAgJiYNCi0tICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci0+dmFsdWVfdGFnID09IElQUF9UQUdfRU5VTSApDQotLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAoIGlwcF9wc3RhdGVfdCApIGF0dHItPnZhbHVlc1sgMCBdLmludGVnZXI7DQotLQ0KLS0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChhdHRyLT5uYW1lLCAicHJpbnRlci1pcy1hY2NlcHRpbmctam9icyIpICYmDQotLSAgICAgICAgICAgICAgICAgICAgICAgIGF0dHItPnZhbHVlX3RhZyA9PSBJUFBfVEFHX0JPT0xFQU4pDQotLSAgICAgICAgICAgICAgICAgICAgYWNjZXB0aW5nID0gYXR0ci0+dmFsdWVzWyAwIF0uYm9vbGVhbjsNCi0rICAgICAgICAgICAgICAgIGlmICggc3RyY21wKCBpcHBHZXROYW1lKCBhdHRyICksICJwcmludGVyLW5hbWUiICkgPT0gMCAmJg0KLSsgICAgICAgICAgICAgICAgICAgICAgICBpcHBHZXRWYWx1ZVRhZyggYXR0ciApID09IElQUF9UQUdfTkFNRSApDQotKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGlwcEdldFN0cmluZyggYXR0ciwgMCwgTlVMTCApOw0KLSsNCi0rICAgICAgICAgICAgICAgIGVsc2UgaWYgKCBzdHJjbXAoIGlwcEdldE5hbWUoIGF0dHIgKSwgImRldmljZS11cmkiICkgPT0gMCAmJg0KLSsgICAgICAgICAgICAgICAgICAgICAgICBpcHBHZXRWYWx1ZVRhZyggYXR0ciApID09IElQUF9UQUdfVVJJICkNCi0rICAgICAgICAgICAgICAgICAgICBkZXZpY2VfdXJpID0gaXBwR2V0U3RyaW5nKCBhdHRyLCAwLCBOVUxMICk7DQotKw0KLSsgICAgICAgICAgICAgICAgZWxzZSBpZiAoIHN0cmNtcCggaXBwR2V0TmFtZSggYXR0ciApLCAicHJpbnRlci11cmktc3VwcG9ydGVkIiApID09IDAgJiYNCi0rICAgICAgICAgICAgICAgICAgICAgICAgaXBwR2V0VmFsdWVUYWcoIGF0dHIgKSA9PSBJUFBfVEFHX1VSSSApDQotKyAgICAgICAgICAgICAgICAgICAgcHJpbnRlcl91cmkgPSBpcHBHZXRTdHJpbmcoIGF0dHIsIDAsIE5VTEwgKTsNCi0rDQotKyAgICAgICAgICAgICAgICBlbHNlIGlmICggc3RyY21wKCBpcHBHZXROYW1lKCBhdHRyICksICJwcmludGVyLWluZm8iICkgPT0gMCAmJg0KLSsgICAgICAgICAgICAgICAgICAgICAgICBpcHBHZXRWYWx1ZVRhZyggYXR0ciApID09IElQUF9UQUdfVEVYVCApDQotKyAgICAgICAgICAgICAgICAgICAgaW5mbyA9IGlwcEdldFN0cmluZyggYXR0ciwgMCwgTlVMTCApOw0KLSsNCi0rICAgICAgICAgICAgICAgIGVsc2UgaWYgKCBzdHJjbXAoIGlwcEdldE5hbWUoIGF0dHIgKSwgInByaW50ZXItbG9jYXRpb24iICkgPT0gMCAmJg0KLSsgICAgICAgICAgICAgICAgICAgICAgICBpcHBHZXRWYWx1ZVRhZyggYXR0ciApID09IElQUF9UQUdfVEVYVCApDQotKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gPSBpcHBHZXRTdHJpbmcoIGF0dHIsIDAsIE5VTEwgKTsNCi0rDQotKyAgICAgICAgICAgICAgICBlbHNlIGlmICggc3RyY21wKCBpcHBHZXROYW1lKCBhdHRyICksICJwcmludGVyLW1ha2UtYW5kLW1vZGVsIiApID09IDAgJiYNCi0rICAgICAgICAgICAgICAgICAgICAgICAgaXBwR2V0VmFsdWVUYWcoIGF0dHIgKSA9PSBJUFBfVEFHX1RFWFQgKQ0KLSsgICAgICAgICAgICAgICAgICAgIG1ha2VfbW9kZWwgPSBpcHBHZXRTdHJpbmcoIGF0dHIsIDAsIE5VTEwgKTsNCi0rDQotKyAgICAgICAgICAgICAgICBlbHNlIGlmICggc3RyY21wKCBpcHBHZXROYW1lKCBhdHRyICksICJwcmludGVyLXN0YXRlIiApID09IDAgJiYNCi0rICAgICAgICAgICAgICAgICAgICAgICAgaXBwR2V0VmFsdWVUYWcoIGF0dHIgKSA9PSBJUFBfVEFHX0VOVU0gKQ0KLSsgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gKCBpcHBfcHN0YXRlX3QgKSBpcHBHZXRJbnRlZ2VyKCBhdHRyLCAwICk7DQotKw0KLSsgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChpcHBHZXROYW1lKCBhdHRyICksICJwcmludGVyLWlzLWFjY2VwdGluZy1qb2JzIikgJiYNCi0rICAgICAgICAgICAgICAgICAgICAgICAgaXBwR2V0VmFsdWVUYWcoIGF0dHIgKSA9PSBJUFBfVEFHX0JPT0xFQU4pDQotKyAgICAgICAgICAgICAgICAgICAgYWNjZXB0aW5nID0gaXBwR2V0Qm9vbGVhbiggYXR0ciwgMCApOw0KLSANCi0tICAgICAgICAgICAgICAgIGF0dHIgPSBhdHRyLT5uZXh0Ow0KLSsgICAgICAgICAgICAgICAgYXR0ciA9IGlwcE5leHRBdHRyaWJ1dGUoIHJlc3BvbnNlICk7DQotICAgICAgICAgICAgIH0NCi0gDQotICAgICAgICAgICAgIGlmICggZGV2aWNlX3VyaSA9PSBOVUxMICkNCi1AQCAtNTIyLDggKzU2Miw4IEBACi0gICAgIHJlcXVlc3QgPSBpcHBOZXcoKTsNCi0gICAgIGxhbmd1YWdlID0gY3Vwc0xhbmdEZWZhdWx0KCk7DQotIA0KLS0gICAgcmVxdWVzdC0+cmVxdWVzdC5vcC5vcGVyYXRpb25faWQgPSBDVVBTX0FERF9QUklOVEVSOw0KLS0gICAgcmVxdWVzdC0+cmVxdWVzdC5hbnkucmVxdWVzdF9pZCA9IDE7DQotKyAgICBpcHBTZXRPcGVyYXRpb24oIHJlcXVlc3QsIENVUFNfQUREX1BSSU5URVIgKTsNCi0rICAgIGlwcFNldFJlcXVlc3RJZCAoIHJlcXVlc3QsIDEgKTsNCi0gDQotICAgICBpcHBBZGRTdHJpbmcoIHJlcXVlc3QsIElQUF9UQUdfT1BFUkFUSU9OLCBJUFBfVEFHX0NIQVJTRVQsDQotICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dGVzLWNoYXJzZXQiLCBOVUxMLCBjdXBzTGFuZ0VuY29kaW5nKCBsYW5ndWFnZSApICk7DQotQEAgLTU2OCw3ICs2MDgsNyBAQAotICAgICB9DQotICAgICBlbHNlDQotICAgICB7DQotLSAgICAgICAgc3RhdHVzID0gcmVzcG9uc2UtPnJlcXVlc3Quc3RhdHVzLnN0YXR1c19jb2RlOw0KLSsgICAgICAgIHN0YXR1cyA9IGlwcEdldFN0YXR1c0NvZGUoIHJlc3BvbnNlICk7DQotICAgICAgICAgLy9pcHBEZWxldGUoIHJlc3BvbnNlICk7DQotICAgICAgICAgciA9IDE7DQotICAgICB9DQotQEAgLTYzMSw4ICs2NzEsOCBAQAotICAgICAgICAqLw0KLSAgICAgcmVxdWVzdCA9IGlwcE5ldygpOw0KLSANCi0tICAgIHJlcXVlc3QtPnJlcXVlc3Qub3Aub3BlcmF0aW9uX2lkID0gQ1VQU19ERUxFVEVfUFJJTlRFUjsNCi0tICAgIHJlcXVlc3QtPnJlcXVlc3Qub3AucmVxdWVzdF9pZCA9IDE7DQotKyAgICBpcHBTZXRPcGVyYXRpb24oIHJlcXVlc3QsIENVUFNfREVMRVRFX1BSSU5URVIgKTsNCi0rICAgIGlwcFNldFJlcXVlc3RJZCAoIHJlcXVlc3QsIDEgKTsNCi0gDQotICAgICBsYW5ndWFnZSA9IGN1cHNMYW5nRGVmYXVsdCgpOw0KLSANCi1AQCAtNjUwLDcgKzY5MCw3IEBACi0gICAgICAqLw0KLSAgICAgcmVzcG9uc2UgPSBjdXBzRG9SZXF1ZXN0KCBodHRwLCByZXF1ZXN0LCAiL2FkbWluLyIgKTsNCi0gDQotLSAgICBpZiAoICggcmVzcG9uc2UgIT0gTlVMTCApICYmICggcmVzcG9uc2UtPnJlcXVlc3Quc3RhdHVzLnN0YXR1c19jb2RlIDw9IElQUF9PS19DT05GTElDVCApICkNCi0rICAgIGlmICggKCByZXNwb25zZSAhPSBOVUxMICkgJiYgKCBpcHBHZXRTdGF0dXNDb2RlKCByZXNwb25zZSApIDw9IElQUF9PS19DT05GTElDVCApICkNCi0gICAgIHsNCi0gICAgICAgICByID0gMTsNCi0gICAgIH0NCi1AQCAtNzIxLDggKzc2MSw4IEBACi0gDQotICAgICByZXF1ZXN0ID0gaXBwTmV3KCk7DQotIA0KLS0gICAgcmVxdWVzdC0+cmVxdWVzdC5vcC5vcGVyYXRpb25faWQgPSBDVVBTX1NFVF9ERUZBVUxUOw0KLS0gICAgcmVxdWVzdC0+cmVxdWVzdC5vcC5yZXF1ZXN0X2lkID0gMTsNCi0rICAgIGlwcFNldE9wZXJhdGlvbiggcmVxdWVzdCwgQ1VQU19TRVRfREVGQVVMVCApOw0KLSsgICAgaXBwU2V0UmVxdWVzdElkICggcmVxdWVzdCwgMSApOw0KLSANCi0gICAgIGxhbmd1YWdlID0gY3Vwc0xhbmdEZWZhdWx0KCk7DQotIA0KLUBAIC03NDMsNyArNzgzLDcgQEAKLSANCi0gICAgIHJlc3BvbnNlID0gY3Vwc0RvUmVxdWVzdCggaHR0cCwgcmVxdWVzdCwgIi9hZG1pbi8iICk7DQotIA0KLS0gICAgaWYgKCAoIHJlc3BvbnNlICE9IE5VTEwgKSAmJiAoIHJlc3BvbnNlLT5yZXF1ZXN0LnN0YXR1cy5zdGF0dXNfY29kZSA8PSBJUFBfT0tfQ09ORkxJQ1QgKSApDQotKyAgICBpZiAoICggcmVzcG9uc2UgIT0gTlVMTCApICYmICggaXBwR2V0U3RhdHVzQ29kZSggcmVzcG9uc2UgKSA8PSBJUFBfT0tfQ09ORkxJQ1QgKSApDQotICAgICB7DQotICAgICAgICAgciA9IDE7DQotICAgICB9DQotQEAgLTc5Nyw4ICs4MzcsOCBAQAotIA0KLSAgICAgcmVxdWVzdCA9IGlwcE5ldygpOw0KLSANCi0tICAgIHJlcXVlc3QtPnJlcXVlc3Qub3Aub3BlcmF0aW9uX2lkID0gb3A7DQotLSAgICByZXF1ZXN0LT5yZXF1ZXN0Lm9wLnJlcXVlc3RfaWQgPSAxOw0KLSsgICAgaXBwU2V0T3BlcmF0aW9uKCByZXF1ZXN0LCBvcCApOw0KLSsgICAgaXBwU2V0UmVxdWVzdElkICggcmVxdWVzdCwgMSApOw0KLSANCi0gICAgIGxhbmd1YWdlID0gY3Vwc0xhbmdEZWZhdWx0KCk7DQotIA0KLUBAIC04MjIsNyArODYyLDcgQEAKLSANCi0gICAgIHJlc3BvbnNlID0gY3Vwc0RvUmVxdWVzdChodHRwLCByZXF1ZXN0LCAiL2FkbWluLyIpOw0KLSANCi0tICAgIGlmICgoIHJlc3BvbnNlICE9IE5VTEwgKSAmJiAocmVzcG9uc2UtPnJlcXVlc3Quc3RhdHVzLnN0YXR1c19jb2RlIDw9IElQUF9PS19DT05GTElDVCkpDQotKyAgICBpZiAoKCByZXNwb25zZSAhPSBOVUxMICkgJiYgKGlwcEdldFN0YXR1c0NvZGUoIHJlc3BvbnNlICkgPD0gSVBQX09LX0NPTkZMSUNUKSkNCi0gICAgIHsNCi0gICAgICAgICByID0gMTsNCi0gICAgIH0NCi1AQCAtODM3LDcgKzg3Nyw3IEBACi0gICAgIGlmICggcmVzcG9uc2UgIT0gTlVMTCApDQotICAgICAgICAgaXBwRGVsZXRlKCByZXNwb25zZSApOw0KLSANCi0tICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCAiaSIsIHIgKTs7DQotKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSggImkiLCByICk7DQotIH0NCi0gDQotIA0KLUBAIC0xMTE2LDggKzExNTYsOCBAQAotIA0KLSAgICAgcmVxdWVzdCA9IGlwcE5ldygpOw0KLSANCi0tICAgIHJlcXVlc3QtPnJlcXVlc3Qub3Aub3BlcmF0aW9uX2lkID0gQ1VQU19HRVRfUFBEUzsNCi0tICAgIHJlcXVlc3QtPnJlcXVlc3Qub3AucmVxdWVzdF9pZCAgID0gMTsNCi0rICAgIGlwcFNldE9wZXJhdGlvbiggcmVxdWVzdCwgQ1VQU19HRVRfUFBEUyApOw0KLSsgICAgaXBwU2V0UmVxdWVzdElkICggcmVxdWVzdCwgMSApOw0KLSANCi0gICAgIGxhbmd1YWdlID0gY3Vwc0xhbmdEZWZhdWx0KCk7DQotIA0KLUBAIC0xMTQzLDQzICsxMTgzLDQzIEBACi0gICAgIGlmICgocmVzcG9uc2UgPSBjdXBzRG9SZXF1ZXN0KGh0dHAsIHJlcXVlc3QsICIvIikpICE9IE5VTEwpDQotICAgICB7DQotIA0KLS0gICAgICAgIGZvciAoYXR0ciA9IHJlc3BvbnNlLT5hdHRyczsgYXR0cjsgYXR0ciA9IGF0dHItPm5leHQpDQotKyAgICAgICAgZm9yIChhdHRyID0gaXBwRmlyc3RBdHRyaWJ1dGUoIHJlc3BvbnNlICk7IGF0dHI7IGF0dHIgPSBpcHBOZXh0QXR0cmlidXRlKCByZXNwb25zZSApKQ0KLSAgICAgICAgIHsNCi0gICAgICAgICAgICAgUHlPYmplY3QgKmRpY3Q7DQotICAgICAgICAgICAgIGNoYXIgKnBwZG5hbWUgPSBOVUxMOw0KLSANCi0tICAgICAgICAgICAgd2hpbGUgKGF0dHIgJiYgYXR0ci0+Z3JvdXBfdGFnICE9IElQUF9UQUdfUFJJTlRFUikNCi0tICAgICAgICAgICAgICAgIGF0dHIgPSBhdHRyLT5uZXh0Ow0KLSsgICAgICAgICAgICB3aGlsZSAoYXR0ciAmJiBpcHBHZXRHcm91cFRhZyggYXR0ciApICE9IElQUF9UQUdfUFJJTlRFUikNCi0rICAgICAgICAgICAgICAgIGF0dHIgPSBpcHBOZXh0QXR0cmlidXRlKCByZXNwb25zZSApOw0KLSANCi0gICAgICAgICAgICAgaWYgKCFhdHRyKQ0KLSAgICAgICAgICAgICAgICAgYnJlYWs7DQotIA0KLSAgICAgICAgICAgICBkaWN0ID0gUHlEaWN0X05ldyAoKTsNCi0gDQotLSAgICAgICAgICAgIGZvciAoOyBhdHRyICYmIGF0dHItPmdyb3VwX3RhZyA9PSBJUFBfVEFHX1BSSU5URVI7IGF0dHIgPSBhdHRyLT5uZXh0KQ0KLSsgICAgICAgICAgICBmb3IgKDsgYXR0ciAmJiBpcHBHZXRHcm91cFRhZyggYXR0ciApID09IElQUF9UQUdfUFJJTlRFUjsgYXR0ciA9IGlwcE5leHRBdHRyaWJ1dGUoIHJlc3BvbnNlICkpDQotICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOw0KLSANCi0tICAgICAgICAgICAgICAgIGlmICghc3RyY21wIChhdHRyLT5uYW1lLCAicHBkLW5hbWUiKSAmJiBhdHRyLT52YWx1ZV90YWcgPT0gSVBQX1RBR19OQU1FKQ0KLSsgICAgICAgICAgICAgICAgaWYgKCFzdHJjbXAgKGlwcEdldE5hbWUoIGF0dHIgKSwgInBwZC1uYW1lIikgJiYgaXBwR2V0VmFsdWVUYWcoIGF0dHIgKSA9PSBJUFBfVEFHX05BTUUpDQotICAgICAgICAgICAgICAgICB7DQotLSAgICAgICAgICAgICAgICAgICAgcHBkbmFtZSA9IGF0dHItPnZhbHVlc1swXS5zdHJpbmcudGV4dDsNCi0rICAgICAgICAgICAgICAgICAgICBwcGRuYW1lID0gaXBwR2V0U3RyaW5nKCBhdHRyLCAwLCBOVUxMICk7DQotIA0KLSAgICAgICAgICAgICAgICAgICAgIC8vc3ByaW50ZiggYnVmLCAicHJpbnQgJyVzJyIsIHBwZG5hbWUpOw0KLSAgICAgICAgICAgICAgICAgICAgIC8vUHlSdW5fU2ltcGxlU3RyaW5nKCBidWYgKTsNCi0gICAgICAgICAgICAgICAgIH0NCi0gDQotLSAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRyLT52YWx1ZV90YWcgPT0gSVBQX1RBR19URVhUIHx8IGF0dHItPnZhbHVlX3RhZyA9PSBJUFBfVEFHX05BTUUgfHwgYXR0ci0+dmFsdWVfdGFnID09IElQUF9UQUdfS0VZV09SRCkNCi0tICAgICAgICAgICAgICAgIC8vZWxzZSBpZiAoKCFzdHJjbXAgKGF0dHItPm5hbWUsICJwcGQtbmF0dXJhbC1sYW5ndWFnZSIpICYmIGF0dHItPnZhbHVlX3RhZyA9PSBJUFBfVEFHX0xBTkdVQUdFKSB8fA0KLS0gICAgICAgICAgICAgICAgLy8gICAgKCFzdHJjbXAgKGF0dHItPm5hbWUsICJwcGQtbWFrZS1hbmQtbW9kZWwiKSAmJiBhdHRyLT52YWx1ZV90YWcgPT0gSVBQX1RBR19URVhUKSB8fA0KLS0gICAgICAgICAgICAgICAgLy8gICAgKCFzdHJjbXAgKGF0dHItPm5hbWUsICJwcGQtbWFrZSIpICYmIGF0dHItPnZhbHVlX3RhZyA9PSBJUFBfVEFHX1RFWFQpIHx8DQotLSAgICAgICAgICAgICAgICAvLyAgICAoIXN0cmNtcCAoYXR0ci0+bmFtZSwgInBwZC1kZXZpY2UtaWQiKSAmJiBhdHRyLT52YWx1ZV90YWcgPT0gSVBQX1RBR19URVhUKSkNCi0rICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlwcEdldFZhbHVlVGFnKCBhdHRyICkgPT0gSVBQX1RBR19URVhUIHx8IGlwcEdldFZhbHVlVGFnKCBhdHRyICkgPT0gSVBQX1RBR19OQU1FIHx8IGlwcEdldFZhbHVlVGFnKCBhdHRyICkgPT0gSVBQX1RBR19LRVlXT1JEKQ0KLSsgICAgICAgICAgICAgICAgLy9lbHNlIGlmICgoIXN0cmNtcCAoaXBwR2V0TmFtZSggYXR0ciApLCAicHBkLW5hdHVyYWwtbGFuZ3VhZ2UiKSAmJiBpcHBHZXRWYWx1ZVRhZyggYXR0ciApID09IElQUF9UQUdfTEFOR1VBR0UpIHx8DQotKyAgICAgICAgICAgICAgICAvLyAgICAoIXN0cmNtcCAoaXBwR2V0TmFtZSggYXR0ciApLCAicHBkLW1ha2UtYW5kLW1vZGVsIikgJiYgaXBwR2V0VmFsdWVUYWcoIGF0dHIgKSA9PSBJUFBfVEFHX1RFWFQpIHx8DQotKyAgICAgICAgICAgICAgICAvLyAgICAoIXN0cmNtcCAoaXBwR2V0TmFtZSggYXR0ciApLCAicHBkLW1ha2UiKSAmJiBpcHBHZXRWYWx1ZVRhZyggYXR0ciApID09IElQUF9UQUdfVEVYVCkgfHwNCi0rICAgICAgICAgICAgICAgIC8vICAgICghc3RyY21wIChpcHBHZXROYW1lKCBhdHRyICksICJwcGQtZGV2aWNlLWlkIikgJiYgaXBwR2V0VmFsdWVUYWcoIGF0dHIgKSA9PSBJUFBfVEFHX1RFWFQpKQ0KLSAgICAgICAgICAgICAgICAgew0KLS0gICAgICAgICAgICAgICAgICAgIHZhbCA9IFB5T2JqX2Zyb21fVVRGOChhdHRyLT52YWx1ZXNbMF0uc3RyaW5nLnRleHQpOw0KLSsgICAgICAgICAgICAgICAgICAgIHZhbCA9IFB5T2JqX2Zyb21fVVRGOChpcHBHZXRTdHJpbmcoIGF0dHIsIDAsIE5VTEwgKSk7DQotICAgICAgICAgICAgICAgICB9DQotIA0KLSAgICAgICAgICAgICAgICAgaWYgKHZhbCkNCi0gICAgICAgICAgICAgICAgIHsNCi0tICAgICAgICAgICAgICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyAoZGljdCwgYXR0ci0+bmFtZSwgdmFsKTsNCi0rICAgICAgICAgICAgICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyAoZGljdCwgaXBwR2V0TmFtZSggYXR0ciApLCB2YWwpOw0KLSAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRiAodmFsKTsNCi0gICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgfQ0KLWRpZmYgLU5hdXIgaHBsaXAtMy4xMi42X29sZC9zY2FuL3NhbmUvaHBhaW8uYyBocGxpcC0zLjEyLjYvc2Nhbi9zYW5lL2hwYWlvLmMKLS0tLSBocGxpcC0zLjEyLjZfb2xkL3NjYW4vc2FuZS9ocGFpby5jCTIwMTItMDgtMDQgMDk6MTg6MjEuNDU4Mzg5OTEzICswMjAwCi0rKysgaHBsaXAtMy4xMi42L3NjYW4vc2FuZS9ocGFpby5jCTIwMTItMDgtMDQgMDk6MTg6MjcuODc1MTgxNzIwICswMjAwCi1AQCAtNDcsNiArNDcsNDMgQEAKLSAjZGVmaW5lIERFQlVHX0RFQ0xBUkVfT05MWQotICNpbmNsdWRlICJzYW5laV9kZWJ1Zy5oIgotIAotKyNpZiAoQ1VQU19WRVJTSU9OX01BSk9SID4gMSkgfHwgKENVUFNfVkVSU0lPTl9NSU5PUiA+IDUpCi0rI2RlZmluZSBIQVZFX0NVUFNfMV82IDEKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIEhBVkVfQ1VQU18xXzYKLSsjZGVmaW5lIGlwcEdldEdyb3VwVGFnKGF0dHIpICBhdHRyLT5ncm91cF90YWcKLSsjZGVmaW5lIGlwcEdldFZhbHVlVGFnKGF0dHIpICBhdHRyLT52YWx1ZV90YWcKLSsjZGVmaW5lIGlwcEdldE5hbWUoYXR0cikgICAgICBhdHRyLT5uYW1lCi0rI2RlZmluZSBpcHBHZXRTdHJpbmcoYXR0ciwgZWxlbWVudCwgbGFuZ3VhZ2UpIGF0dHItPnZhbHVlc1tlbGVtZW50XS5zdHJpbmcudGV4dAotKwotK3N0YXRpYyBpcHBfYXR0cmlidXRlX3QgKiBpcHBGaXJzdEF0dHJpYnV0ZSggaXBwX3QgKmlwcCApCi0rewotKyAgICBpZiAoIWlwcCkKLSsgICAgICAgIHJldHVybiAoTlVMTCk7Ci0rICAgIHJldHVybiAoaXBwLT5jdXJyZW50ID0gaXBwLT5hdHRycyk7Ci0rfQotKwotK3N0YXRpYyBpcHBfYXR0cmlidXRlX3QgKiBpcHBOZXh0QXR0cmlidXRlKCBpcHBfdCAqaXBwICkKLSt7Ci0rICAgIGlmICghaXBwIHx8ICFpcHAtPmN1cnJlbnQpCi0rICAgICAgICByZXR1cm4gKE5VTEwpOwotKyAgICByZXR1cm4gKGlwcC0+Y3VycmVudCA9IGlwcC0+Y3VycmVudC0+bmV4dCk7Ci0rfQotKwotK3N0YXRpYyBpbnQgaXBwU2V0T3BlcmF0aW9uKCBpcHBfdCAqaXBwLCBpcHBfb3BfdCBvcCApCi0rewotKyAgICBpcHAtPnJlcXVlc3Qub3Aub3BlcmF0aW9uX2lkID0gb3A7Ci0rICAgIHJldHVybiAoMSk7Ci0rfQotKwotK3N0YXRpYyBpbnQgaXBwU2V0UmVxdWVzdElkKCBpcHBfdCAqaXBwLCBpbnQgcmVxdWVzdF9pZCApCi0rewotKyAgICBpcHAtPnJlcXVlc3QuYW55LnJlcXVlc3RfaWQgPSByZXF1ZXN0X2lkOwotKyAgICByZXR1cm4gKDEpOwotK30KLSsjZW5kaWYKLSsKLSBzdGF0aWMgU0FORV9EZXZpY2UgKipEZXZpY2VMaXN0ID0gTlVMTDsKLSAKLSBzdGF0aWMgaW50IEFkZERldmljZUxpc3QoY2hhciAqdXJpLCBjaGFyICptb2RlbCwgU0FORV9EZXZpY2UgKioqcGQpCi1AQCAtMTg2LDggKzIyMyw4IEBACi0gICAgLyogQXNzZW1ibGUgdGhlIElQUCByZXF1ZXN0ICovCi0gICAgcmVxdWVzdCA9IGlwcE5ldygpOwotIAotLSAgIHJlcXVlc3QtPnJlcXVlc3Qub3Aub3BlcmF0aW9uX2lkID0gQ1VQU19HRVRfUFJJTlRFUlM7Ci0tICAgcmVxdWVzdC0+cmVxdWVzdC5hbnkucmVxdWVzdF9pZCAgPSAxOwotKyAgIGlwcFNldE9wZXJhdGlvbiggcmVxdWVzdCwgQ1VQU19HRVRfUFJJTlRFUlMgKTsKLSsgICBpcHBTZXRSZXF1ZXN0SWQoIHJlcXVlc3QsIDEgKTsKLSAKLSAgICBpcHBBZGRTdHJpbmcocmVxdWVzdCwgSVBQX1RBR19PUEVSQVRJT04sIElQUF9UQUdfQ0hBUlNFVCwgImF0dHJpYnV0ZXMtY2hhcnNldCIsIE5VTEwsICJ1dGYtOCIpOwotICAgIGlwcEFkZFN0cmluZyhyZXF1ZXN0LCBJUFBfVEFHX09QRVJBVElPTiwgSVBQX1RBR19MQU5HVUFHRSwgImF0dHJpYnV0ZXMtbmF0dXJhbC1sYW5ndWFnZSIsIE5VTEwsICJlbiIpOwotQEAgLTE5NywyMCArMjM0LDIwIEBACi0gICAgaWYgKChyZXNwb25zZSA9IGN1cHNEb1JlcXVlc3QoaHR0cCwgcmVxdWVzdCwgIi8iKSkgPT0gTlVMTCkKLSAgICAgICBnb3RvIGJ1Z291dDsKLSAKLS0gICBmb3IgKGF0dHIgPSByZXNwb25zZS0+YXR0cnM7IGF0dHIgIT0gTlVMTDsgYXR0ciA9IGF0dHItPm5leHQpCi0rICAgZm9yIChhdHRyID0gaXBwRmlyc3RBdHRyaWJ1dGUgKCByZXNwb25zZSApOyBhdHRyICE9IE5VTEw7IGF0dHIgPSBpcHBOZXh0QXR0cmlidXRlKCByZXNwb25zZSApKQotICAgIHsKLSAgICAgICAvKiBTa2lwIGxlYWRpbmcgYXR0cmlidXRlcyB1bnRpbCB3ZSBoaXQgYSBwcmludGVyLiAqLwotLSAgICAgIHdoaWxlIChhdHRyICE9IE5VTEwgJiYgYXR0ci0+Z3JvdXBfdGFnICE9IElQUF9UQUdfUFJJTlRFUikKLS0gICAgICAgICBhdHRyID0gYXR0ci0+bmV4dDsKLSsgICAgICB3aGlsZSAoYXR0ciAhPSBOVUxMICYmIGlwcEdldEdyb3VwVGFnKCBhdHRyICkgIT0gSVBQX1RBR19QUklOVEVSKQotKyAgICAgICAgIGF0dHIgPSBpcHBOZXh0QXR0cmlidXRlKCByZXNwb25zZSApOwotIAotICAgICAgIGlmIChhdHRyID09IE5VTEwpCi0gICAgICAgICAgYnJlYWs7Ci0gCi0tICAgICAgd2hpbGUgKGF0dHIgIT0gTlVMTCAmJiBhdHRyLT5ncm91cF90YWcgPT0gSVBQX1RBR19QUklOVEVSKQotKyAgICAgIHdoaWxlIChhdHRyICE9IE5VTEwgJiYgaXBwR2V0R3JvdXBUYWcoIGF0dHIgKSA9PSBJUFBfVEFHX1BSSU5URVIpCi0gICAgICAgewotLSAgICAgICAgIGlmIChzdHJjbXAoYXR0ci0+bmFtZSwgImRldmljZS11cmkiKSA9PSAwICYmIGF0dHItPnZhbHVlX3RhZyA9PSBJUFBfVEFHX1VSSSAmJiBBZGRDdXBzTGlzdChhdHRyLT52YWx1ZXNbMF0uc3RyaW5nLnRleHQsIHByaW50ZXIpID09IDApCi0rICAgICAgICAgaWYgKHN0cmNtcChpcHBHZXROYW1lKCBhdHRyICksICJkZXZpY2UtdXJpIikgPT0gMCAmJiBpcHBHZXRWYWx1ZVRhZyggYXR0ciApID09IElQUF9UQUdfVVJJICYmIEFkZEN1cHNMaXN0KGlwcEdldFN0cmluZyggYXR0ciwgMCwgTlVMTCApLCBwcmludGVyKSA9PSAwKQotICAgICAgICAgICAgIGNudCsrOwotLSAgICAgICAgIGF0dHIgPSBhdHRyLT5uZXh0OwotKyAgICAgICAgIGF0dHIgPSBpcHBOZXh0QXR0cmlidXRlKCByZXNwb25zZSApOwotICAgICAgIH0KLSAKLSAgICAgICBpZiAoYXR0ciA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLTMuMTIuNi9maXgtbGlidXNiLXBhdGhzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLTMuMTIuNi9maXgtbGlidXNiLXBhdGhzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzQ3ZjgzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcC0zLjEyLjYvZml4LWxpYnVzYi1wYXRocy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotZGlmZiAtcnVwTiBocGxpcC0zLjEyLjZfb3JpZy9jb25maWd1cmUuaW4gaHBsaXAtMy4xMi42L2NvbmZpZ3VyZS5pbgotLS0tIGhwbGlwLTMuMTIuNl9vcmlnL2NvbmZpZ3VyZS5pbgkyMDEyLTA2LTE4IDIwOjQ0OjI0LjAwMDAwMDAwMCArMTAwMAotKysrIGhwbGlwLTMuMTIuNi9jb25maWd1cmUuaW4JMjAxMi0wOC0xNiAxMzo0MDowNy4yNTk5Mjc2NTAgKzEwMDAKLUBAIC01MjQsNiArNTI0LDggQEAgaWYgdGVzdCAiJGhwaWpzX29ubHlfYnVpbGQiID0gIm5vIjsgdGhlbgotICAgICAgIEFDX0NIRUNLX0hFQURFUlModXNiLmgsICxbQUNfTVNHX0VSUk9SKFtjYW5ub3QgZmluZCBsaWJ1c2ItZGV2ZWwgc3VwcG9ydF0sIDExKV0pCi0gICAgZWxzZQotICAgICAgIEFDX0NIRUNLX0xJQihbdXNiLTEuMF0sIFtsaWJ1c2JfaW5pdF0sIFtMSUJTPSIkTElCUyJdLCBbQUNfTVNHX0VSUk9SKFtjYW5ub3QgZmluZCBsaWJ1c2IgMS4wIHN1cHBvcnRdLCAyKV0pCi0rICAgICAgTElCVVNCSU5DTFVERVJPT1Q/PSIvdXNyL2luY2x1ZGUvIgotKyAgICAgIEFDX0FSR19WQVIoTElCVVNCSU5DTFVERVJPT1QsIFtwYXRoIHRvIGxpYnVzYi0xLjAgZm9sZGVyXSkKLSAgICAgICBBQ19DSEVDS19IRUFERVJTKGxpYnVzYi0xLjAvbGlidXNiLmgsICxbQUNfTVNHX0VSUk9SKFtjYW5ub3QgZmluZCBsaWJ1c2ItMS4wLWRldmVsIHN1cHBvcnRdLCAxMSldKQotICAgIGZpCi0gZmkKLWRpZmYgLXJ1cE4gaHBsaXAtMy4xMi42X29yaWcvTWFrZWZpbGUuYW0gaHBsaXAtMy4xMi42L01ha2VmaWxlLmFtCi0tLS0gaHBsaXAtMy4xMi42X29yaWcvTWFrZWZpbGUuYW0JMjAxMi0wNi0xOCAyMDo0NDoxMy4wMDAwMDAwMDAgKzEwMDAKLSsrKyBocGxpcC0zLjEyLjYvTWFrZWZpbGUuYW0JMjAxMi0wOC0xNiAxMzo0MToxMi4zMDc5MzI4MjIgKzEwMDAKLUBAIC03Miw3ICs3Miw3IEBAIGxpYmhwbXVkX2xhX1NPVVJDRVMgPSBpby9ocG11ZC9ocG11ZC5jIGkKLSAJICBpby9ocG11ZC9ocG11ZC5oIGlvL2hwbXVkL2hwbXVkaS5oIGlvL2hwbXVkL2xpc3QuaCBpby9ocG11ZC9tbGMuaCBpby9ocG11ZC9wbWwuaCBpby9ocG11ZC9kb3Q0LmMgXAotIAkgIGlvL2hwbXVkL2RvdDQuaCBpby9ocG11ZC9qZC5jIGlvL2hwbXVkL2pkLmggaW8vaHBtdWQvcHAuYyBpby9ocG11ZC9wcC5oIGlvL2hwbXVkL211c2IuaCBpby9ocG11ZC9tdXNiX2xpYnVzYjAxLmMKLSBlbHNlCi0tbGliaHBtdWRfbGFfQ0ZMQUdTID0gLUkvdXNyL2luY2x1ZGUvbGlidXNiLTEuMCAtRE1VRE5BTUU9XCIkKE1VRE5BTUUpXCIgLURDT05GRElSPVwiJChocGxpcF9jb25mZGlyKVwiCi0rbGliaHBtdWRfbGFfQ0ZMQUdTID0gLUkvJChMSUJVU0JJTkNMVURFUk9PVCkvbGlidXNiLTEuMCAtRE1VRE5BTUU9XCIkKE1VRE5BTUUpXCIgLURDT05GRElSPVwiJChocGxpcF9jb25mZGlyKVwiCi0gbGliaHBtdWRfbGFfU09VUkNFUyA9IGlvL2hwbXVkL2hwbXVkLmMgaW8vaHBtdWQvbWxjLmMgaW8vaHBtdWQvbW9kZWwuYyBpby9ocG11ZC9wbWwuYyBcCi0gCSAgaW8vaHBtdWQvaHBtdWQuaCBpby9ocG11ZC9ocG11ZGkuaCBpby9ocG11ZC9saXN0LmggaW8vaHBtdWQvbWxjLmggaW8vaHBtdWQvcG1sLmggaW8vaHBtdWQvZG90NC5jIFwKLSAJICBpby9ocG11ZC9kb3Q0LmggaW8vaHBtdWQvamQuYyBpby9ocG11ZC9qZC5oIGlvL2hwbXVkL3BwLmMgaW8vaHBtdWQvcHAuaCBpby9ocG11ZC9tdXNiLmggaW8vaHBtdWQvbXVzYi5jCi1AQCAtMjg2LDcgKzI4Niw3IEBAIGhwbXVkZXh0X2xhX0xJQkFERCA9IGxpYmhwbXVkLmxhCi0gaWYgTElCVVNCMDFfQlVJTEQKLSBocG11ZGV4dF9sYV9DRkxBR1MgPSAtSSQoUFlUSE9OSU5DTFVERURJUikKLSBlbHNlCi0taHBtdWRleHRfbGFfQ0ZMQUdTID0tSS91c3IvaW5jbHVkZS9saWJ1c2ItMS4wIC1JJChQWVRIT05JTkNMVURFRElSKQotK2hwbXVkZXh0X2xhX0NGTEFHUyA9LUkkKExJQlVTQklOQ0xVREVST09UKS9saWJ1c2ItMS4wIC1JJChQWVRIT05JTkNMVURFRElSKQotIGVuZGlmCi0gCi0gIyB1aSAocXQzKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLTMuMTIuNi9zZXR1cC1hZGQtc2xlZXAtYWZ0ZXItY3Vwcy1yZXNldC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcC0zLjEyLjYvc2V0dXAtYWRkLXNsZWVwLWFmdGVyLWN1cHMtcmVzZXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMWI2YzQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLTMuMTIuNi9zZXR1cC1hZGQtc2xlZXAtYWZ0ZXItY3Vwcy1yZXNldC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLS0tLSBocGxpcC0zLjExLjEwL3NldHVwLnB5Lm9yaWcJMjAxMS0xMC0wMiAxNDowNjoxOS4wMDAwMDAwMDAgKzExMDAKLSsrKyBocGxpcC0zLjExLjEwL3NldHVwLnB5CTIwMTItMDItMjkgMDg6MjE6MzkuMTY3OTk5OTM4ICsxMTAwCi1AQCAtNTczLDYgKzU3Myw3IEBACi0gCi0gICAgICAgICAgICAgbG9nLmRlYnVnKCJSZXN0YXJ0aW5nIENVUFMuLi4iKQotICAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gdXRpbHMucnVuKHJlc3RhcnRfY3VwcygpKQotKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMykKLSAgICAgICAgICAgICBsb2cuZGVidWcoIlJlc3RhcnQgQ1VQUyByZXR1cm5lZDogZXhpdD0lZCBvdXRwdXQ9JXMiICUgKHN0YXR1cywgb3V0cHV0KSkKLSAKLSAgICAgICAgICAgICBjdXBzLnNldFBhc3N3b3JkUHJvbXB0KCJZb3UgZG8gbm90IGhhdmUgcGVybWlzc2lvbiB0byBhZGQgYSBwcmludGVyLiIpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAvMDMwLXJlcGxhY2VfdW5zYWZlX21lbWNweV93aXRoX21lbW1vdmUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAvMDMwLXJlcGxhY2VfdW5zYWZlX21lbWNweV93aXRoX21lbW1vdmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJhYmIyYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcC8wMzAtcmVwbGFjZV91bnNhZmVfbWVtY3B5X3dpdGhfbWVtbW92ZS5wYXRjaApAQCAtMCwwICsxLDE1IEBACitodHRwczovL2J1Z3MubGF1bmNocGFkLm5ldC9ocGxpcC8rYnVnLzE2NzIyNTYKKworbWVtY3B5IHNob3VsZCBuZXZlciBiZSB1c2VkIHdpdGggb3ZlcmxhcHBpbmcgbWVtb3J5IHJlZ2lvbnMKKworLS0tIGEvaW8vaHBtdWQvbXVzYi5jCisrKysgYi9pby9ocG11ZC9tdXNiLmMKK0BAIC03NzUsNyArNzc1LDcgQEAgc3RhdGljIGludCBkZXZpY2VfaWQoaW50IGZkLCB1bnNpZ25lZCBjaAorICAgICAgICAgbGVuID0gc2l6ZS0xOyAgIC8qIGxlYXZlIGJ5dGUgZm9yIHplcm8gdGVybWluYXRpb24gKi8KKyAgICAgaWYgKGxlbiA+IDIpCisgICAgICAgICBsZW4gLT0gMjsKKy0gICAgbWVtY3B5KGJ1ZmZlciwgYnVmZmVyKzIsIGxlbik7ICAgIC8qIHJlbW92ZSBsZW5ndGggKi8KKysgICAgbWVtbW92ZShidWZmZXIsIGJ1ZmZlcisyLCBsZW4pOyAgICAvKiByZW1vdmUgbGVuZ3RoICovCisgICAgIGJ1ZmZlcltsZW5dPTA7CisgICAgIERCRygicmVhZCBhY3R1YWwgZGV2aWNlX2lkIHN1Y2Nlc3NmdWxseSBmZD0lZCBsZW49JWRcbiIsIGZkLCBsZW4pOworIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLzA1MC1maXgtZ2xpYmNpc21zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLzA1MC1maXgtZ2xpYmNpc21zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwMjBiZDQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAvMDUwLWZpeC1nbGliY2lzbXMucGF0Y2gKQEAgLTAsMCArMSwxNyBAQAorZGlmZiAtLWdpdCBhL3NjYW4vc2FuZS9PcmJsaXRlU2Nhbi9MaW51eENvbW1vbi5oIGIvc2Nhbi9zYW5lL09yYmxpdGVTY2FuL0xpbnV4Q29tbW9uLmgKK2luZGV4IDY2MDVkZDkuLjU1YzcxMTAgMTAwNjQ0CistLS0gYS9zY2FuL3NhbmUvT3JibGl0ZVNjYW4vTGludXhDb21tb24uaAorKysrIGIvc2Nhbi9zYW5lL09yYmxpdGVTY2FuL0xpbnV4Q29tbW9uLmgKK0BAIC0xOCwxMCArMTgsOCBAQCB0eXBlZGVmIHVfaW50MzJfdAkJCVVJbnQzMjsKKyB0eXBlZGVmIGludDMyX3QJCQkJU0ludDMyOw0KKyAvL3R5cGVkZWYgdW5zaWduZWQgbG9uZwkJCVVJbnQzMjsNCisgLy90eXBlZGVmIHNpZ25lZCBsb25nCQkJU0ludDMyOw0KKy10eXBlZGVmIF9fUzY0X1RZUEUJCQlTSW50NjQ7DQorLXR5cGVkZWYgX19VNjRfVFlQRQkJCVVJbnQ2NDsNCistdHlwZWRlZiBfX1M2NF9UWVBFCQkJaW50NjRfdDsNCistdHlwZWRlZiBfX1U2NF9UWVBFCQkJdWludDY0X3Q7DQorK3R5cGVkZWYgaW50NjRfdCAJCQlTSW50NjQ7DQorK3R5cGVkZWYgdWludDY0X3QJCQlVSW50NjQ7DQorIA0KKyAvL3R5cGVkZWYgdW5zaWduZWQgbG9uZwlVTE9ORzsNCisgLy90eXBlZGVmIHZvaWQqCQkJTFBWT0lEOw0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcC82MDAtZml4LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLzYwMC1maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFhNTAzNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcC82MDAtZml4LnBhdGNoCkBAIC0wLDAgKzEsMTAgQEAKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtMjU0LDcgKzI1NCw2IEBAIGlmIHRlc3QgIiRjbGFzc19kcml2ZXIiID0gInllcyI7IHRoZW4KKyAgICB0ZXN0IGBzaCAuL2NyZWF0ZVBQRC5zaCAtZmAgPT0gMAorIGVsc2UKKyAgICBBQ19NU0dfUkVTVUxUKG5vKQorLSAgIHRlc3QgYHNoIC4vY3JlYXRlUFBELnNoIC1xYCA9PSAwCisgZmkKKyBBTV9DT05ESVRJT05BTChIUExJUF9DTEFTU19EUklWRVIsIHRlc3QgeCRjbGFzc19kcml2ZXIgPSB4eWVzKQorIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLzk5OS1yZW1vdmUtbEltYWdlUHJvY2Vzc29yLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLzk5OS1yZW1vdmUtbEltYWdlUHJvY2Vzc29yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlZTRhYzUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAvOTk5LXJlbW92ZS1sSW1hZ2VQcm9jZXNzb3IucGF0Y2gKQEAgLTAsMCArMSw2OSBAQAorIyAuLi9iaW4vbGQ6IGNhbm5vdCBmaW5kIC1sSW1hZ2VQcm9jZXNzb3IKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTU5MCwxMSArNTkwLDEwIEBAIGhwY3Vwc19TT1VSQ0VTID0gcHJudC9ocGN1cHMvSFBDdXBzRmlsdGUKKyAJcHJudC9ocGN1cHMvZmxhdGVfY29sb3JzcGFjZS5oIHBybnQvaHBjdXBzL1J1bkxlbkVuY29kaW5nLmggcHJudC9ocGN1cHMvY29tbW9uX2RlZmluZXMuaCBcCisgCXBybnQvaHBjdXBzL2dlblBDTG0uaCBcCisgCWNvbW1vbi91dGlscy5jIGNvbW1vbi91dGlscy5oIHBybnQvaHBjdXBzL0hicGwxX1dyYXBwZXIuY3BwIHBybnQvaHBjdXBzL2dlblBDTG0uY3BwIFwKKy0JcHJudC9ocGN1cHMvZ2VuSlBFR1N0cmlwcy5jcHAgcHJudC9ocGN1cHMvUnVuTGVuRW5jb2RpbmcuY3BwIFwKKy0JcHJudC9ocGN1cHMvSW1hZ2VQcm9jZXNzb3IuaAorKwlwcm50L2hwY3Vwcy9nZW5KUEVHU3RyaXBzLmNwcCBwcm50L2hwY3Vwcy9SdW5MZW5FbmNvZGluZy5jcHAKKyAKKyBocGN1cHNfQ1hYRkxBR1MgPSAkKEFQREtfRU5ESUFOX0ZMQUcpICQoREJVU19DRkxBR1MpCistaHBjdXBzX0xEQUREID0gLUwuL3BybnQvaHBjdXBzLyAtbGpwZWcgLWxkbCAtbEltYWdlUHJvY2Vzc29yIC1sY3VwcyAtbGN1cHNpbWFnZSAtbHogJChEQlVTX0xJQlMpCisraHBjdXBzX0xEQUREID0gLUwuL3BybnQvaHBjdXBzLyAtbGpwZWcgLWxkbCAtbGN1cHMgLWxjdXBzaW1hZ2UgLWx6ICQoREJVU19MSUJTKQorICNlbHNlCisgI2hwY3Vwc2RpciA9ICQoY3Vwc2ZpbHRlcmRpcikKKyAjaHBjdXBzX1BST0dSQU1TID0gaHBjdXBzCistLS0gYS9wcm50L2hwY3Vwcy9IUEN1cHNGaWx0ZXIuY3BwCisrKysgYi9wcm50L2hwY3Vwcy9IUEN1cHNGaWx0ZXIuY3BwCitAQCAtNjM3LDE2ICs2MzcsMTAgQEAgaW50IEhQQ3Vwc0ZpbHRlcjo6cHJvY2Vzc1Jhc3RlckRhdGEoY3VwcworIAorIAorICAgICBzcHJpbnRmKGhwUHJlUHJvY2Vzc2VkUmFzdGVyRmlsZSwgIiVzL2hwXyVzX2N1cHNfU3dhcGVkUGFnZXNYWFhYWFgiLENVUFNfVE1QX0RJUiwgbV9KQS51c2VyX25hbWUpOworLSAgICBpbWFnZV9wcm9jZXNzb3JfdCogaW1hZ2VQcm9jZXNzb3IgPSBpbWFnZVByb2Nlc3NvckNyZWF0ZSgpOworIAorICAgICB3aGlsZSAoY3Vwc1Jhc3RlclJlYWRIZWFkZXIyKGN1cHNfcmFzdGVyLCAmY3Vwc19oZWFkZXIpKQorICAgICB7CisgCistICAgICAgICBJTUFHRV9QUk9DRVNTT1JfRVJST1IgcmVzdWx0ID0gaW1hZ2VQcm9jZXNzb3JTdGFydFBhZ2UoaW1hZ2VQcm9jZXNzb3IsICZjdXBzX2hlYWRlcik7CistICAgICAgICBpZiAocmVzdWx0ICE9IElQRV9TVUNDRVNTKXsKKy0gICAgICAgICAgICBkYmdsb2coIkRFQlVHOiBpbWFnZVByb2Nlc3NvclN0YXJ0UGFnZSBmYWlsZWQgcmVzdWx0ID0gJWRcbiIsIHJlc3VsdCk7CistICAgICAgICB9CistCisgICAgICAgICBjdXJyZW50X3BhZ2VfbnVtYmVyKys7CisgCisgICAgICAgICBpZiAoY3VycmVudF9wYWdlX251bWJlciA9PSAxKSB7CitAQCAtNzQ1LDExICs3MzksNiBAQCBpbnQgSFBDdXBzRmlsdGVyOjpwcm9jZXNzUmFzdGVyRGF0YShjdXBzCisgICAgICAgICAgICAgY29sb3JfcmFzdGVyID0gcmdiUmFzdGVyOworICAgICAgICAgICAgIGJsYWNrX3Jhc3RlciA9IGtSYXN0ZXI7CisgCistICAgICAgICAgICAgcmVzdWx0ID0gaW1hZ2VQcm9jZXNzb3JQcm9jZXNzTGluZShpbWFnZVByb2Nlc3NvciwgbV9wUHJpbnRlckJ1ZmZlciwgY3Vwc19oZWFkZXIuY3Vwc0J5dGVzUGVyTGluZSk7CistICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBJUEVfU1VDQ0VTUyl7CistICAgICAgICAgICAgICAgIGRiZ2xvZygiREVCVUc6IGltYWdlUHJvY2Vzc29yUHJvY2Vzc0xpbmUgZmFpbGVkIHJlc3VsdCA9ICVkXG4iLCByZXN1bHQpOworLSAgICAgICAgICAgIH0KKy0KKyAKKyAgICAgICAgICAgICBpZiAoKHkgPT0gMCkgJiYgIWlzX2xqbW9ubykgeworICAgICAgICAgICAgICAgICAvL0ZvciBsam1vbm8sIG1ha2Ugc3VyZSB0aGF0IGZpcnN0IGxpbmUgaXMgbm90IGEgYmxhbmtSYXN0ZXIgbGluZS5PdGhlcndpc2UgcHJpbnRlcgorQEAgLTc4MCwxMSArNzY5LDYgQEAgaW50IEhQQ3Vwc0ZpbHRlcjo6cHJvY2Vzc1Jhc3RlckRhdGEoY3VwcworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0gIC8vIGZvcigpIGxvb3AgZW5kCisgCistICAgICAgICByZXN1bHQgPSBpbWFnZVByb2Nlc3NvckVuZFBhZ2UoaW1hZ2VQcm9jZXNzb3IpOworLSAgICAgICAgaWYgKHJlc3VsdCAhPSBJUEVfU1VDQ0VTUyl7CistICAgICAgICAgICAgICAgIGRiZ2xvZygiREVCVUc6IGltYWdlUHJvY2Vzc29yRW5kUGFnZSBmYWlsZWQgcmVzdWx0ID0gJWRcbiIsIHJlc3VsdCk7CistICAgICAgICB9CistCisgCisgICAgICAgICBtX0pvYi5OZXdQYWdlKCk7CisgICAgICAgICBpZiAoZXJyICE9IE5PX0VSUk9SKSB7CitAQCAtODAwLDggKzc4NCw2IEBAIGludCBIUEN1cHNGaWx0ZXI6OnByb2Nlc3NSYXN0ZXJEYXRhKGN1cHMKKyAgICAgICAgIHJnYlJhc3RlciA9IE5VTEw7CisgICAgIH0KKyAKKy0gICAgaW1hZ2VQcm9jZXNzb3JEZXN0cm95KGltYWdlUHJvY2Vzc29yKTsKKy0KKyAgICAgdW5saW5rKGhwUHJlUHJvY2Vzc2VkUmFzdGVyRmlsZSk7CisgICAgIHJldHVybiByZXRfc3RhdHVzOworIH0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcC9jb25maWd1cmUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAvY29uZmlndXJlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmZTc3YzUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAvY29uZmlndXJlLnBhdGNoCkBAIC0wLDAgKzEsMTIgQEAKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtMjcsOCArMjcsNyBAQAorIAorICNBQ19QUkVSRVEoMi41OSkKKyBBQ19JTklUKFtIUCBMaW51eCBJbWFnaW5nIGFuZCBQcmludGluZ10sIFszLjE5LjEyXSwgWzMuMTkuMTJdLCBbaHBsaXBdKQorLSNBTV9JTklUX0FVVE9NQUtFKFsxLjkgZm9yZWlnbl0pCistQU1fSU5JVF9BVVRPTUFLRQorK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ25dKQorIEFDX0RJU0FCTEVfU1RBVElDCisgCisgIyBDaGVja3MgZm9yIHByb2dyYW1zLgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwL2ZpeC1saWJ1c2ItcGF0aHMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAvZml4LWxpYnVzYi1wYXRocy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWExZGUwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwL2ZpeC1saWJ1c2ItcGF0aHMucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorCistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgorQEAgLTU5OSw2ICs1OTksOCBAQCBpZiB0ZXN0ICIkY2xhc3NfZHJpdmVyIiA9ICJubyIgJiYgdGVzdCAiCisgICAgICAgQUNfQ0hFQ0tfSEVBREVSUyh1c2IuaCwgLFtBQ19NU0dfRVJST1IoW2Nhbm5vdCBmaW5kIGxpYnVzYi1kZXZlbCBzdXBwb3J0XSwgMTEpXSkKKyAgICBlbHNlCisgICAgICAgQUNfQ0hFQ0tfTElCKFt1c2ItMS4wXSwgW2xpYnVzYl9pbml0XSwgW0xJQlM9IiRMSUJTIl0sIFtBQ19NU0dfRVJST1IoW2Nhbm5vdCBmaW5kIGxpYnVzYiAxLjAgc3VwcG9ydF0sIDIpXSkKKysgICAgICBMSUJVU0JJTkNMVURFUk9PVD89Ii91c3IvaW5jbHVkZS8iCisrICAgICAgQUNfQVJHX1ZBUihMSUJVU0JJTkNMVURFUk9PVCwgW3BhdGggdG8gbGlidXNiLTEuMCBmb2xkZXJdKQorICAgICAgIEFDX0NIRUNLX0hFQURFUlMobGlidXNiLTEuMC9saWJ1c2IuaCwgLFtBQ19NU0dfRVJST1IoW2Nhbm5vdCBmaW5kIGxpYnVzYi0xLjAtZGV2ZWwgc3VwcG9ydF0sIDExKV0pCisgICAgZmkKKyBmaQorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMTA5LDcgKzEwOSw3IEBAIGxpYmhwbXVkX2xhX1NPVVJDRVMgKz0gaW8vaHBtdWQvbXVzYl9saWIKKyBsaWJocG11ZF9sYV9MREZMQUdTICs9IC1sdXNiCisgZWxzZQorIGxpYmhwbXVkX2xhX1NPVVJDRVMgKz0gaW8vaHBtdWQvbXVzYi5jIAorLWxpYmhwbXVkX2xhX0NGTEFHUyAgKz0gLUkvdXNyL2luY2x1ZGUvbGlidXNiLTEuMAorK2xpYmhwbXVkX2xhX0NGTEFHUyAgKz0gLUkkKExJQlVTQklOQ0xVREVST09UKS9saWJ1c2ItMS4wCisgbGliaHBtdWRfbGFfTERGTEFHUyArPSAtbHVzYi0xLjAKKyBlbmRpZgorIAorQEAgLTM2Miw3ICszNjIsNyBAQCBocG11ZGV4dF9sYV9DRkxBR1MgKz0gLUlwcm90b2NvbC9kaXNjb3ZlCisgZW5kaWYKKyAKKyBpZiAhTElCVVNCMDFfQlVJTEQKKy1ocG11ZGV4dF9sYV9DRkxBR1MgKz0tSS91c3IvaW5jbHVkZS9saWJ1c2ItMS4wIAorK2hwbXVkZXh0X2xhX0NGTEFHUyArPS1JJChMSUJVU0JJTkNMVURFUk9PVCkvbGlidXNiLTEuMCAKKyBlbmRpZgorIGVuZGlmICMhSFBMSVBfQ0xBU1NfRFJJVkVSCisgIyB1aSAocXQzKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwL2hwbGlwLTMuMTkuNi1maXgtcmV0dXJuLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwL2hwbGlwLTMuMTkuNi1maXgtcmV0dXJuLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3NTQ2YjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAvaHBsaXAtMy4xOS42LWZpeC1yZXR1cm4ucGF0Y2gKQEAgLTAsMCArMSwyMCBAQAorRnJvbSAyZmNkMGU3OWIyMWVjNmRiZjk3NWFkN2QxYjU2OTdhNzg5OTNlMmYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGF2aWQgVmFsbGVhdSA8dmFsbGVhdUBjaHJvbWl1bS5vcmc+CitEYXRlOiBXZWQsIDE0IEF1ZyAyMDE5IDE1OjQ3OjM4IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeGluZyBpbnZhbGlkIHJldHVybiBpbiB2b2lkIGZ1bmN0aW9uCisKKy0tLQorIHBybnQvaHBwcy9ocHBzZmlsdGVyLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKKy0tLSBhL3BybnQvaHBwcy9ocHBzZmlsdGVyLmMKKysrKyBiL3BybnQvaHBwcy9ocHBzZmlsdGVyLmMKK0BAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIHZvaWQgb3Blbl90ZW1wYm9va2xldGZpbGUoY2hhciAqbQorICAgICBpZihwdGVtcGJvb2tsZXRfZmlsZSA9PSBOVUxMKQorICAgICB7CisgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFUlJPUjogVW5hYmxlIHRvIG9wZW4gdGVtcCBmaWxlICVzXG4iLCB0ZW1wX2ZpbGVuYW1lKTsKKy0gICAgICAgICAgICByZXR1cm4gMTsKKysgICAgICAgICAgICByZXR1cm47CisgICAgIH0gIAorICAgICBjaG1vZCh0ZW1wX2ZpbGVuYW1lLCBTX0lSVVNSIHwgU19JV1VTUiB8IFNfSVJHUlAgfCBTX0lST1RIKTsKKyAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcF8zLjEyLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXBfMy4xMi42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2M5OTViLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcF8zLjEyLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1TVU1NQVJZID0gIkhQIExpbnV4IEltYWdpbmcgYW5kIFByaW50aW5nIgotTElDRU5TRT0iR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00NDJiYjNjYmJlZWI2MDY0M2E4NzMyNTcxOGI4YThlZSIKLQotUFIgPSAicjEiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vc2V0dXAtYWRkLXNsZWVwLWFmdGVyLWN1cHMtcmVzZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWxpYnVzYi1wYXRocy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jdXBzLTEuNi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLWN1cHMtcHBkLmgtZm9yLW1pc3NpbmctcHBkLWRlZmluaXRpb25zLnBhdGNoIFwKLSIKLQotREVQRU5EUyArPSAiY3VwcyBweXRob24gbGlidXNiIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcHl0aG9uLWRpciBweXRob25uYXRpdmUgcGtnY29uZmlnCi0KLWV4cG9ydCBTVEFHSU5HX0lOQ0RJUgotZXhwb3J0IFNUQUdJTkdfTElCRElSCi0KLUVYVFJBX09FQ09ORiArPSAiXAotICAgICAgICBMSUJVU0JJTkNMVURFUk9PVD0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgIC0tZGlzYWJsZS1uZXR3b3JrLWJ1aWxkIFwKLSAgICAgICAgLS1kaXNhYmxlLWRvYy1idWlsZCBcCi0gICAgICAgIC0tZGlzYWJsZS1wcC1idWlsZCBcCi0gICAgICAgIC0tZGlzYWJsZS1zY2FuLWJ1aWxkIFwKLSAgICAgICAgLS1kaXNhYmxlLWd1aS1idWlsZCBcCi0gICAgICAgIC0tZGlzYWJsZS1mYXgtYnVpbGQgXAotICAgICAgICAtLWRpc2FibGUtcG9saWN5a2l0ICBcCi0gICAgICAgIC0tZGlzYWJsZS1xdDQgXAotICAgICAgICAtLWRpc2FibGUtcXQzIFwKLSAgICAgICAgLS1kaXNhYmxlLWRidXMtYnVpbGQgXAotICAgICAgICAtLWRpc2FibGUtZm9vbWF0aWMtZHJ2LWluc3RhbGwgXAotICAgICAgICAtLWVuYWJsZS1mb29tYXRpYy1wcGQtaW5zdGFsbCAgXAotICAgICAgICAtLWVuYWJsZS1mb29tYXRpYy1yaXAtaHBsaXAtaW5zdGFsbCBcCi0gICAgICAgIC0td2l0aC1jdXBzYmFja2VuZGRpcj0ke2xpYmRpcn0vY3Vwcy9iYWNrZW5kIFwKLSAgICAgICAgLS13aXRoLWN1cHNmaWx0ZXJkaXI9JHtsaWJkaXJ9L2N1cHMvZmlsdGVyIFwKLSIKLQotUEFDS0FHRVMgKz0gIiR7UE59LXBwZCAke1BOfS1jdXBzICR7UE59LWJhY2tlbmQgJHtQTn0tZmlsdGVyICR7UE59LWhhbCIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgICAgIHB5dGhvbiBcCi0gICAgICAgIHB5dGhvbi1zeXNsb2cgXAotICAgICAgICBweXRob24tcHByaW50IFwKLSAgICAgICAgcHl0aG9uLWNvbXByZXNzaW9uIFwKLSAgICAgICAgcHl0aG9uLXNoZWxsIFwKLSAgICAgICAgcHl0aG9uLXhtbCBcCi0gICAgICAgIHB5dGhvbi11bml4YWRtaW4gXAotICAgICAgICBweXRob24taHRtbCBcCi0gICAgICAgIHB5dGhvbi1yZXNvdXJjZSBcCi0gICAgICAgIHB5dGhvbi10ZXJtaW5hbCBcCi0gICAgICAgIHB5dGhvbi1zdWJwcm9jZXNzXAotIgotUkRFUEVORFNfJHtQTn0tZmlsdGVyICs9ICJwZXJsIgotCi0jIG5lZWQgdG8gc25hZyB0aGUgZGVidWcgZmlsZSBvciBPRSB3aWxsIGZhaWwgb24gYmFja2VuZCBwYWNrYWdlCi1GSUxFU18ke1BOfS1kYmcgKz0gIlwKLSAgICAgICAgJHtsaWJkaXJ9L2N1cHMvYmFja2VuZC8uZGVidWcgXAotICAgICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8uZGVidWcgXAotICAgICAgICAke2xpYmRpcn0vY3Vwcy9maWx0ZXIvLmRlYnVnICIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmxhIgotRklMRVNfJHtQTn0tcHBkID0gIiR7ZGF0YWRpcn0vcHBkIgotRklMRVNfJHtQTn0tY3VwcyA9ICIke2RhdGFkaXJ9L2N1cHMiCi1GSUxFU18ke1BOfS1iYWNrZW5kID0gIiR7bGliZGlyfS9jdXBzL2JhY2tlbmQiCi1GSUxFU18ke1BOfS1maWx0ZXIgPSAiJHtsaWJkaXJ9L2N1cHMvZmlsdGVyIgotRklMRVNfJHtQTn0taGFsID0gIiR7ZGF0YWRpcn0vaGFsIgotCi1GSUxFU18ke1BOfSArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5zbyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjUzMDM5MzhlODYzMDc3NWVhNmZiMzgzYWY4NTc3NWU1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU0NTc4MDAwNzkyOTY5YWRiNTgzZTc1ZWZlYWNiOWM0NmFiNjk2NTllYzdlOTQyNGRlMzkwNjEzZjM1OTU3NzUiCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcF8zLjE5LjEyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwXzMuMTkuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgzYTZmZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcF8zLjE5LjEyLmJiCkBAIC0wLDAgKzEsODggQEAKK1NVTU1BUlkgPSAiSFAgTGludXggSW1hZ2luZyBhbmQgUHJpbnRpbmciCitMSUNFTlNFPSJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTIwZjJjODE5NDk5Y2MyMDYzZTlhN2IwN2I0MDg4MTVjIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtbGlidXNiLXBhdGhzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzk5OS1yZW1vdmUtbEltYWdlUHJvY2Vzc29yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzYwMC1maXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDMwLXJlcGxhY2VfdW5zYWZlX21lbWNweV93aXRoX21lbW1vdmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDUwLWZpeC1nbGliY2lzbXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaHBsaXAtMy4xOS42LWZpeC1yZXR1cm4ucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImQ3MmJjNzdkNzkxYzE1MGMyYzIyYjg0ZTk1NTNiYWIzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI3ZjM5ODUwMmZiNjU5ZTBkZThlNTQ5NzYyMzdlM2M2YTY0ZmVjMGIzYzM2MDU0YTUxNTg3NmY3YjAwNmIyNTUiCisKK0RFUEVORFMgKz0gImN1cHMgcHl0aG9uMyBsaWJ1c2IiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBweXRob24zLWRpciBweXRob24zbmF0aXZlIHBrZ2NvbmZpZyBzeXN0ZW1kCisKK2V4cG9ydCBTVEFHSU5HX0lOQ0RJUgorZXhwb3J0IFNUQUdJTkdfTElCRElSCisKK0NGTEFHUyArPSAiLUkke1NUQUdJTkdfSU5DRElSfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0ke1BZVEhPTl9BQkl9IgorCitFWFRSQV9PRUNPTkYgKz0gIlwKKyAgICAgICAgTElCVVNCSU5DTFVERVJPT1Q9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICAgICAgICAtLWVuYWJsZS1jdXBzLXBwZC1pbnN0YWxsIFwKKyAgICAgICAgLS1kaXNhYmxlLW5ldHdvcmstYnVpbGQgXAorICAgICAgICAtLWRpc2FibGUtZG9jLWJ1aWxkIFwKKyAgICAgICAgLS1kaXNhYmxlLXBwLWJ1aWxkIFwKKyAgICAgICAgLS1kaXNhYmxlLXNjYW4tYnVpbGQgXAorICAgICAgICAtLWRpc2FibGUtZ3VpLWJ1aWxkIFwKKyAgICAgICAgLS1kaXNhYmxlLWZheC1idWlsZCBcCisgICAgICAgIC0tZGlzYWJsZS1wb2xpY3lraXQgIFwKKyAgICAgICAgLS1kaXNhYmxlLXF0NCBcCisgICAgICAgIC0tZGlzYWJsZS1xdDMgXAorICAgICAgICAtLWRpc2FibGUtZGJ1cy1idWlsZCBcCisgICAgICAgIC0tZW5hYmxlLWZvb21hdGljLWRydi1pbnN0YWxsIFwKKyAgICAgICAgLS1kaXNhYmxlLWZvb21hdGljLXBwZC1pbnN0YWxsIFwKKyAgICAgICAgLS1kaXNhYmxlLWZvb21hdGljLXJpcC1ocGxpcC1pbnN0YWxsIFwKKyAgICAgICAgLS13aXRoLWN1cHNiYWNrZW5kZGlyPSR7bGliZGlyfS9jdXBzL2JhY2tlbmQgXAorICAgICAgICAtLXdpdGgtY3Vwc2ZpbHRlcmRpcj0ke2xpYmRpcn0vY3Vwcy9maWx0ZXIgXAorIgorCitFWFRSQV9PRU1BS0UgPSAicnVsZXNzeXN0ZW1kaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIHJtIC1yZiAke0R9JHtkYXRhZGlyfS9ocGxpcC91cGdyYWRlLnB5CisgICAgcm0gLXJmICR7RH0ke2RhdGFkaXJ9L2hwbGlwL3VuaW5zdGFsbC5weQorICAgIHNlZCAtaSAtZSAic3wvdXNyL2Jpbi9lbnYgcHl0aG9ufC91c3IvYmluL2VudiBweXRob24zfGciICR7RH0ke2RhdGFkaXJ9L2hwbGlwLyoucHkKKyAgICBzZWQgLWkgLWUgInN8L3Vzci9iaW4vcHl0aG9ufC91c3IvYmluL2VudiBweXRob24zfGciICR7RH0ke2RhdGFkaXJ9L2hwbGlwLyoucHkKK30KKworUEFDS0FHRVMgKz0gIiR7UE59LXBwZCAke1BOfS1jdXBzICR7UE59LWJhY2tlbmQgJHtQTn0tZmlsdGVyICR7UE59LWhhbCIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgICAgIHB5dGhvbjNcCisgICAgICAgIHB5dGhvbjMtc3lzbG9nIFwKKyAgICAgICAgcHl0aG9uMy1wcHJpbnQgXAorICAgICAgICBweXRob24zLWNvbXByZXNzaW9uIFwKKyAgICAgICAgcHl0aG9uMy1zaGVsbCBcCisgICAgICAgIHB5dGhvbjMteG1sIFwKKyAgICAgICAgcHl0aG9uMy11bml4YWRtaW4gXAorICAgICAgICBweXRob24zLWh0bWwgXAorICAgICAgICBweXRob24zLXJlc291cmNlIFwKKyAgICAgICAgcHl0aG9uMy10ZXJtaW5hbCBcCisiCitSREVQRU5EU18ke1BOfS1maWx0ZXIgKz0gInBlcmwiCisKKyMgbmVlZCB0byBzbmFnIHRoZSBkZWJ1ZyBmaWxlIG9yIE9FIHdpbGwgZmFpbCBvbiBiYWNrZW5kIHBhY2thZ2UKK0ZJTEVTXyR7UE59LWRiZyArPSAiXAorICAgICAgICAke2xpYmRpcn0vY3Vwcy9iYWNrZW5kLy5kZWJ1ZyBcCisgICAgICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Ly5kZWJ1ZyBcCisgICAgICAgICR7bGliZGlyfS9jdXBzL2ZpbHRlci8uZGVidWcgIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoubGEiCitGSUxFU18ke1BOfS1wcGQgPSAiJHtkYXRhZGlyfS9wcGQiCitGSUxFU18ke1BOfS1jdXBzID0gIiR7ZGF0YWRpcn0vY3VwcyIKK0ZJTEVTXyR7UE59LWJhY2tlbmQgPSAiJHtsaWJkaXJ9L2N1cHMvYmFja2VuZCIKK0ZJTEVTXyR7UE59LWZpbHRlciA9ICIke2xpYmRpcn0vY3Vwcy9maWx0ZXIiCitGSUxFU18ke1BOfS1oYWwgPSAiJHtkYXRhZGlyfS9oYWwiCisKK0ZJTEVTXyR7UE59ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLnNvIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiaHBsaXAtcHJpbnRlckAuc2VydmljZSIKKworQ0xFQU5CUk9LRU4gPSAiMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9pY2V3bS9pY2V3bV8xLjUuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9pY2V3bS9pY2V3bV8xLjUuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU2ZGUwMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaWNld20vaWNld21fMS41LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJJY2UgV2luZG93IE1hbmFnZXIgKEljZVdNKSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00YTI2OTUyNDY3ZWY3OWE3ZWZjYTRhOWNmNTJkNDE3YiIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaWNlLXdtLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLXNraXAtcnVubmluZy10ZXN0LXByb2dyYW0td2hlbi1jcm9zcy1jby5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZWJhOTRhNzkzNWEwNTMxZDJjMTRlZWIxNDI2YWVlZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmMWMxMzQ0YjIwYTllODYzNTE0M2Y3MGVlMjc5MzBiNTVmODEzYzE1Y2E2MWY4NGQ3NzU4NGQzMTFiNmFjMDI3IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBwZXJsbmF0aXZlIGZlYXR1cmVzX2NoZWNrIHFlbXUKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLWxpYmRpcj0ke2RhdGFkaXJ9L2ljZXdtIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtY2ZnZGlyPSR7c3lzY29uZmRpcn0vaWNld20gXAotICAgICAgICAgICAgICAgIC0td2l0aC1kb2NkaXI9JHtkb2NkaXJ9L2ljZXdtIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1mcmliaWRpIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS14aW5lcmFtYSBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtc2hhcGUiCi0KLURFUEVORFMgPSAiYXNjaWlkb2MtbmF0aXZlIGZvbnRjb25maWcgZ2RrLXBpeGJ1ZiBsaWJ4ZnQgbGlieHBtIGxpYnhyYW5kciBsaWJ4aW5lcmFtYSBsaWJpY2UgbGlic20gbGlieDExIGxpYnhleHQgbGlieHJlbmRlciIKLURFUEVORFNfYXBwZW5kID0gIiBxZW11LW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gInBlcmwgZnJpYmlkaSIKLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQotICAgIGNkICR7Qn0KLSAgICBvZV9ydW5tYWtlIC1DIHNyYyBnZW5wcmVmCi0KLSAgICBxZW11X2JpbmFyeT0iJHtAcWVtdV93cmFwcGVyX2NtZGxpbmUoZCwgJyR7U1RBR0lOR19ESVJfVEFSR0VUfScsWycke0J9L3NyYy8ubGlicycsJyR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2xpYmRpcn0nLCcke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0nXSl9IgotICAgIGNhdCA+cWVtdXdyYXBwZXIgPDxFT0YKLSMhL2Jpbi9zaAotJHtxZW11X2JpbmFyeX0gc3JjL2dlbnByZWYgIlwkQCIKLUVPRgotICAgIGNobW9kICt4IHFlbXV3cmFwcGVyCi0gICAgLi9xZW11d3JhcHBlciA+IHNyYy9wcmVmZXJlbmNlcwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94c2Vzc2lvbnMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaWNld20vaWNld21fMS42LjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaWNld20vaWNld21fMS42LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQxYTJiMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9pY2V3bS9pY2V3bV8xLjYuNS5iYgpAQCAtMCwwICsxLDQ2IEBACitERVNDUklQVElPTiA9ICJJY2UgV2luZG93IE1hbmFnZXIgKEljZVdNKSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00YTI2OTUyNDY3ZWY3OWE3ZWZjYTRhOWNmNTJkNDE3YiIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaWNlLXdtLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmx6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLXNraXAtcnVubmluZy10ZXN0LXByb2dyYW0td2hlbi1jcm9zcy1jby5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNDFlNmFiZjg0MmZmM2Y4NzA1YTgxZDM1MmJlN2M1YjE4MWM1ODc1NDljMTgzZGUwNjQxYzM4MjAyMzRhN2IyIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ljZS13bS8ke0JQTn0vcmVsZWFzZXMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHBlcmxuYXRpdmUgZmVhdHVyZXNfY2hlY2sgcWVtdSB1cGRhdGUtYWx0ZXJuYXRpdmVzCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1saWJkaXI9JHtkYXRhZGlyfS9pY2V3bSBcCisgICAgICAgICAgICAgICAgLS13aXRoLWNmZ2Rpcj0ke3N5c2NvbmZkaXJ9L2ljZXdtIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZG9jZGlyPSR7ZG9jZGlyfS9pY2V3bSBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtZnJpYmlkaSBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUteGluZXJhbWEgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNoYXBlIgorCitERVBFTkRTID0gImFzY2lpZG9jLW5hdGl2ZSBmb250Y29uZmlnIGdkay1waXhidWYgbGlieGZ0IGxpYnhwbSBsaWJ4cmFuZHIgXAorICAgIGxpYnhpbmVyYW1hIGxpYmljZSBsaWJzbSBsaWJ4MTEgbGlieGV4dCBsaWJ4cmVuZGVyIGxpYnhjb21wb3NpdGUgbGlieGRhbWFnZSBcCisgICAgbGlieGZpeGVzIgorREVQRU5EU19hcHBlbmQgPSAiIHFlbXUtbmF0aXZlIgorUkRFUEVORFNfJHtQTn0gPSAicGVybCBmcmliaWRpIgorCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCisgICAgY2QgJHtCfQorICAgIG9lX3J1bm1ha2UgLUMgc3JjIGdlbnByZWYKKworICAgIHFlbXVfYmluYXJ5PSIke0BxZW11X3dyYXBwZXJfY21kbGluZShkLCAnJHtTVEFHSU5HX0RJUl9UQVJHRVR9JyxbJyR7Qn0vc3JjLy5saWJzJywnJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfScsJyR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfSddKX0iCisgICAgY2F0ID5xZW11d3JhcHBlciA8PEVPRgorIyEvYmluL3NoCiske3FlbXVfYmluYXJ5fSBzcmMvZ2VucHJlZiAiXCRAIgorRU9GCisgICAgY2htb2QgK3ggcWVtdXdyYXBwZXIKKyAgICAuL3FlbXV3cmFwcGVyID4gc3JjL3ByZWZlcmVuY2VzCit9CisKK0FMVEVSTkFUSVZFXyR7UE59ID0gIngtc2Vzc2lvbi1tYW5hZ2VyIgorQUxURVJOQVRJVkVfVEFSR0VUW3gtc2Vzc2lvbi1tYW5hZ2VyXSA9ICIke2JpbmRpcn0vaWNld20tc2Vzc2lvbiIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZXyR7UE59ID0gIjEwMCIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veHNlc3Npb25zIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2luZGVudC9pbmRlbnQvMDAwMS1GaXgtYnVpbGRzLXdpdGgtcmVjZW50LWdldHRleHQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaW5kZW50L2luZGVudC8wMDAxLUZpeC1idWlsZHMtd2l0aC1yZWNlbnQtZ2V0dGV4dC5wYXRjaAppbmRleCBlNDhkZmIzLi5lOWRhZGFjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaW5kZW50L2luZGVudC8wMDAxLUZpeC1idWlsZHMtd2l0aC1yZWNlbnQtZ2V0dGV4dC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaW5kZW50L2luZGVudC8wMDAxLUZpeC1idWlsZHMtd2l0aC1yZWNlbnQtZ2V0dGV4dC5wYXRjaApAQCAtOSw4ICs5LDYgQEAKICBNYWtlZmlsZS5hbSB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDU0OGZlYTcuLmNmMDFjNWUgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5hbQogKysrIGIvTWFrZWZpbGUuYW0KIEBAIC0xLDcgKzEsNyBAQApAQCAtMTgsNyArMTYsMTcgQEAKICBBVVRPTUFLRV9PUFRJT05TID0gbm8tdGV4aW5mby50ZXgKICAKIC1TVUJESVJTID0gaW50bCBzcmMgZG9jIHBvIG1hbgotK1NVQkRJUlMgPSBzcmMgZG9jIHBvIG1hbgorK1NVQkRJUlMgPSBzcmMgcG8gbWFuCiAgCiAgQlVJTFRfU09VUkNFUyA9IAogIAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC01OCw3ICs1OCw2IEBAIGZpCisgQUNfSEVBREVSX0RJUkVOVAorIAorIEFDX09VVFBVVChbIAorLSAgIGludGwvTWFrZWZpbGUKKyAgICBwby9NYWtlZmlsZS5pbgorICAgIE1ha2VmaWxlCisgICAgc3JjL01ha2VmaWxlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaW5kZW50L2luZGVudF8yLjIuMTIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaW5kZW50L2luZGVudF8yLjIuMTIuYmIKaW5kZXggZjhkNjNkNC4uOTBiYThhMiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2luZGVudC9pbmRlbnRfMi4yLjEyLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9pbmRlbnQvaW5kZW50XzIuMi4xMi5iYgpAQCAtOSw2ICs5LDcgQEAKIHlvdSB3YW50IGEgcHJvZ3JhbSB0byBmb3JtYXQgeW91ciBjb2RlLiIKIExJQ0VOU0UgPSAiR1BMdjMiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKwogREVQRU5EUyA9ICJ2aXJ0dWFsL2dldHRleHQiCiAKIFNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmd6IFwKQEAgLTE5LDEwICsyMCw4IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiNDc2NGI2YWM5OGY2NjU0YTM1ZGExMTdiOGU1ZThlMTQiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTc3ZDY4YzAyMTE1MTU0NTliODgxMjExOGQ2MDY4MTJlMzAwMDk3Y2ZhYzBiNGU5ZmIzNDcyNjY0MjYzYmI4YiIKIAotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dAoraW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCiAKLUNGTEFHU19jbGFzcy1uYXRpdmUgKz0gIiAtV25vLWVycm9yPXVudXNlZC12YWx1ZSIKLQotRklMRVNfJHtQTn0tZG9jICs9ICIvdXNyL2RvYy9pbmRlbnQvaW5kZW50Lmh0bWwiCitDRkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLVduby1lcnJvcj11bnVzZWQtdmFsdWUiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2lvdG9wL2lvdG9wXzAuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9pb3RvcC9pb3RvcF8wLjYuYmIKaW5kZXggYjAxZDdmNi4uM2E1OTcyMSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2lvdG9wL2lvdG9wXzAuNi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaW90b3AvaW90b3BfMC42LmJiCkBAIC00LDI0ICs0LDI2IEBACiAgICAgYSB0YWJsZSBvZiBjdXJyZW50IEkvTyB1c2FnZSBieSBwcm9jZXNzZXMgb24gdGhlIHN5c3RlbS4iCiBIT01FUEFHRSA9ICJodHRwOi8vZ3VpY2hhei5mcmVlLmZyL2lvdG9wLyIKIAotCiBMSUNFTlNFID0gIkdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IgogCi1TUkNfVVJJID0gImh0dHA6Ly9ndWljaGF6LmZyZWUuZnIvaW90b3AvZmlsZXMvJHtCUH0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1ZWY5NDU2YjI2ZDc2OTRhYmYzMTAxYTcyZTFlMGQxZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzYWRlYTJhMjRlZGE0OWJiYmFlYjRlNmVkMjA0MjM1NWI0NDFkYmQ3MTYxZTg4MzA2N2EwMmJmYzhkY2VmNzViIgorUFYgLj0gIitnaXQke1NSQ1BWfSIKKworU1JDUkVWID0gIjFiZmIzYmM3MGZlYmIxZmZiOTUxNDZiNmRjZDY1MjU3MjI4MDk5YTMiCitTUkNfVVJJID0gImdpdDovL3JlcG8ub3IuY3ovaW90b3AuZ2l0IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3JlcG8ub3IuY3ovaW90b3AuZ2l0L3RhZ3MiCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJpb3RvcC0oP1A8cHZlcj5cZCsoXC5cZCspKykiCiAKLWluaGVyaXQgZGlzdHV0aWxzCitpbmhlcml0IGRpc3R1dGlsczMKIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAgICAgcm0gLWYgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NpdGUucHlvIHx8IHRydWUKICAgICBybSAtZiAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2l0ZS5weSAgfHwgdHJ1ZQogfQogCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24tY3Vyc2VzIHB5dGhvbi10ZXh0dXRpbHMgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWNvZGVjcyBweXRob24tY3R5cGVzIHB5dGhvbi1wcHJpbnQgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXNoZWxsIHB5dGhvbi1zdWJwcm9jZXNzIHB5dGhvbi1jb3JlIgorUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1jdXJzZXMgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1jb2RlY3MgcHl0aG9uMy1jdHlwZXMgcHl0aG9uMy1wcHJpbnQgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1zaGVsbCBweXRob24zLWNvcmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQva29ua3JldGNtcGkva29ua3JldGNtcGlfMC45LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQva29ua3JldGNtcGkva29ua3JldGNtcGlfMC45LjIuYmIKaW5kZXggZjYyY2Y2Yi4uZTZkNTY2MyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2tvbmtyZXRjbXBpL2tvbmtyZXRjbXBpXzAuOS4yLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9rb25rcmV0Y21waS9rb25rcmV0Y21waV8wLjkuMi5iYgpAQCAtNiw3ICs2LDcgQEAKIEhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ybm92YWNlay9rb25rcmV0Y21waSIKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjY3MzI3MGJmYzM1MGQ5Y2UxZWZjODcyNGM2YzE4NzMiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHN3aWctbmF0aXZlIHNibGltLWNtcGktZGV2ZWwgcHl0aG9uIgorREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBzd2lnLW5hdGl2ZSBzYmxpbS1jbXBpLWRldmVsIHB5dGhvbjMiCiBERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGNtcGktYmluZGluZ3MtbmF0aXZlIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcm5vdmFjZWsva29ua3JldGNtcGkuZ2l0IFwKQEAgLTM0LDYgKzM0LDYgQEAKIAogUlBST1ZJREVTXyR7UE59LWRiZyArPSAiJHtQTn0tcHl0aG9uLWRiZyIKIAotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7bGliZGlyfS9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9rb25rcmV0bW9mLnB5KiAke2xpYmRpcn0vcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvX2tvbmtyZXRtb2Yuc28iCitGSUxFU18ke1BOfS1weXRob24gPSAiJHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9rb25rcmV0bW9mLnB5KiAke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL19rb25rcmV0bW9mLnNvIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJjZWMvbGliY2VjLzAwMDEtRW5oYW5jZS1yZXByb2R1Y2liaWxpdHkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliY2VjL2xpYmNlYy8wMDAxLUVuaGFuY2UtcmVwcm9kdWNpYmlsaXR5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwODg4N2IKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliY2VjL2xpYmNlYy8wMDAxLUVuaGFuY2UtcmVwcm9kdWNpYmlsaXR5LnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gMjQwNzI3ZDMxNDI3MDBhZjc3OWNhNmY1YzQ2Nzc0MTk3ODdiY2EyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI4IEFwciAyMDIwIDE2OjE1OjIwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEVuaGFuY2UgcmVwcm9kdWNpYmlsaXR5CisKK1NldEJ1aWxkSW5mby5jbWFrZSBncm9rcyBpbmZvcm1hdGlvbiBmcm9tIGJ1aWxkIHN5c3RlbSBhbmQgZW1pdHMgdGhhdAoraW50byBzb3VyY2Vjb2RlICggaGVhZGVyIGZpbGUgKSB3aGljaCBpcyB0aGVuIGNvbXBpbGVkIGludG8gYmluYXJ5LCB0aGlzCitzdHJpbmcgaXMgYnVpbGQgc3lzdGVtIGRlcGVuZGVudCwgdGhlcmVmb3JlIGNhbiBjYXVzZSByZXByb2R1Y2liaWxpdHkKK2lzc3VlcywgaGVyZSB3ZSBzZXQgc3RhdGljIHN0cmluZyBmb3IgTElCX0lORk8KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1zcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9saWJjZWMvQ01ha2VMaXN0cy50eHQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbGliY2VjL0NNYWtlTGlzdHMudHh0IGIvc3JjL2xpYmNlYy9DTWFrZUxpc3RzLnR4dAoraW5kZXggMTlhMDcwYi4uNGIzYzgyNyAxMDA2NDQKKy0tLSBhL3NyYy9saWJjZWMvQ01ha2VMaXN0cy50eHQKKysrKyBiL3NyYy9saWJjZWMvQ01ha2VMaXN0cy50eHQKK0BAIC0xMzMsNyArMTMzLDcgQEAgc2V0KENFQ19IRUFERVJTIGRldmljZXMvQ0VDUmVjb3JkaW5nRGV2aWNlLmgKKyBzb3VyY2VfZ3JvdXAoIkhlYWRlciBGaWxlcyIgRklMRVMgJHtDRUNfSEVBREVSU30pCisgCisgIyBwbGF0Zm9ybSBhbmQgZGV2aWNlIHNwZWNpZmljCistaW5jbHVkZShjbWFrZS9TZXRCdWlsZEluZm8uY21ha2UpCisrc2V0KExJQl9JTkZPICJjb21waWxlZCBvbiAke0NNQUtFX1NZU1RFTX0gLi4uICIpCisgaW5jbHVkZShjbWFrZS9DaGVja1BsYXRmb3JtU3VwcG9ydC5jbWFrZSkKKyAKKyAjIyBjcmVhdGUgcHJvamVjdCBncm91cHMKKy0tIAorMi4yNi4yCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJjZWMvbGliY2VjX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJjZWMvbGliY2VjX2dpdC5iYgppbmRleCA4ZDVhODI0Li4zOWNlYjQ4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliY2VjL2xpYmNlY19naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmNlYy9saWJjZWNfZ2l0LmJiCkBAIC0yLDE4ICsyLDE5IEBACiBIT01FUEFHRSA9ICJodHRwOi8vbGliY2VjLnB1bHNlLWVpZ2h0LmNvbS8iCiAKIExJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTYxZmQ4NmY5Yzk0N2I0MzAxMjYxODFkYTJjNmM3MTUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iM2E3MTllOTdmNDllNDg0MWU5MDU3M2Y5YjFhOThhYyIKIAogREVQRU5EUyA9ICJwOHBsYXRmb3JtIHVkZXYgbmN1cnNlcyBzd2lnLW5hdGl2ZSBweXRob24zIgogCiBERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdsaWJ4MTEgbGlieHJhbmRyJywgJycsIGQpfSIKIERFUEVORFNfYXBwZW5kX3JwaSA9ICIke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICd2YzRncmFwaGljcycsICcnLCAnIHVzZXJsYW5kJywgZCl9IgogCi1QViA9ICI0LjAuNCIKK1BWID0gIjUuMC4wIgogCi1TUkNSRVYgPSAiM2JiZDQzMjE2MTg1MDNkMTQwMDgzODdhNzJmYWJiNjc0Mzg3ODgzMSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9QdWxzZS1FaWdodC9saWJjZWMuZ2l0IFwKK1NSQ1JFViA9ICI0M2JjMjdmZTdiZTQ5MTE0OWU2ZjU3ZDE0MTEwZTAyYWJkYWMyZjI0IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL1B1bHNlLUVpZ2h0L2xpYmNlYy5naXQ7YnJhbmNoPXJlbGVhc2UgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1DaGVja1BsYXRmb3JtU3VwcG9ydC5jbWFrZS1Eby1ub3QtaGFyZGNvZGUtbGliLXBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1FbmhhbmNlLXJlcHJvZHVjaWJpbGl0eS5wYXRjaCBcCiAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi8wMDAxLWlkbi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi8wMDAxLWlkbi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vMDAwMS1pZG4tZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi8wMDAxLWlkbi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuXzEuMzUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbl8xLjM1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNTc0MDMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbl8xLjM1LmJiCkBAIC0wLDAgKzEsNDAgQEAKK1NVTU1BUlkgPSAiSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWUgc3VwcG9ydCBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiSW1wbGVtZW50YXRpb24gb2YgdGhlIFN0cmluZ3ByZXAsIFB1bnljb2RlIGFuZCBJRE5BIHNwZWNpZmljYXRpb25zIGRlZmluZWQgYnkgdGhlIElFVEYgSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWVzIChJRE4pIHdvcmtpbmcgZ3JvdXAuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmlkbi8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIihMR1BMdjIuMSsgfCBMR1BMdjMpICYgR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGY0YmU0Nzk0MGE5MWVlNjk1NTZmNWY3MWVlZDRhZWMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlOR3YyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9pZG5hLmg7ZW5kbGluZT0yMTttZDU9MzdjZmZhZDI0ODA3ZjQ0NmEyNGRlM2U3MzcxZjIwYjkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2lkbi5jO2VuZGxpbmU9MjA7bWQ1PTA5ZTk3MDM0YTg4NzdiMzQ1MWNiNjUwNjVmYzJjMDZlIgorREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYmljb252IGF1dG9jb25mLWFyY2hpdmUiCisKK2luaGVyaXQgcGtnY29uZmlnIGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gZ3RrLWRvYworCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGliaWRuLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pZG4tZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmVmNjM0MTQxZmUzOTMyNmNiMzU0Yjc1ZTg5MWZlYWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjExYWYxMDA1YjQ2YjdiMTVkMDU3ZDdmMTA3MzE1YTFhZDQ2OTM1YzdmY2RmMjQzYzE2ZTQ2ZWMxNGYwZmUxZSIKKworIyBjb21tYW5kIHRvb2wgaXMgdW5kZXIgR1BMdjMrLCB3aGlsZSBsaWJpZG4gaXRzZWxmIGlzIHVuZGVyIExHUEx2Mi4xKyBvciBMR1BMdjMKKyMgc28gcGFja2FnZSBjb21tYW5kIGludG8gYSBzZXBhcmF0ZSBwYWNrYWdlCitQQUNLQUdFUyA9KyAiaWRuIgorRklMRVNfaWRuID0gIiR7YmluZGlyfS8qIgorCitMSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyB8IExHUEx2MyIKK0xJQ0VOU0VfaWRuID0gIkdQTHYzKyIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1jc2hhcnAiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCXJtIC1yZiAke0R9JHtkYXRhZGlyfS9lbWFjcworfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJpbW9iaWxlZGV2aWNlL2xpYnBsaXN0XzIuMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmltb2JpbGVkZXZpY2UvbGlicGxpc3RfMi4xLjAuYmIKaW5kZXggNDhkZWM0Ny4uMzY2NTllNyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmltb2JpbGVkZXZpY2UvbGlicGxpc3RfMi4xLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmltb2JpbGVkZXZpY2UvbGlicGxpc3RfMi4xLjAuYmIKQEAgLTQsOSArNCw5IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYmI1YzUwYWI3Y2FiNGJhZWZmYmExNDk3NzAzMGMwNyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9NmFiMTdiNDE2NDA1NjQ0MzRkZGE4NWMwNmI3MTI0ZjciCiAKLURFUEVORFMgPSAibGlieG1sMiBnbGliLTIuMCBzd2lnIHB5dGhvbiIKK0RFUEVORFMgPSAibGlieG1sMiBnbGliLTIuMCBzd2lnIHB5dGhvbjMiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBweXRob25uYXRpdmUKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBweXRob24zbmF0aXZlCiAKIFNSQ1JFViA9ICIzZGYwMmQ0ZDBlOTAwODc3MWU4NjIyZmRjMTBkZTgzMzNiM2YwZDg1IgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpYmltb2JpbGVkZXZpY2UvbGlicGxpc3Q7cHJvdG9jb2w9aHR0cHMgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnB3cXVhbGl0eS9maWxlcy9hZGQtbWlzc2luZy1weXRob24taW5jbHVkZS1kaXItZm9yLWNyb3NzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnB3cXVhbGl0eS9maWxlcy9hZGQtbWlzc2luZy1weXRob24taW5jbHVkZS1kaXItZm9yLWNyb3NzLnBhdGNoCmluZGV4IGQxMjQ5MmYuLmVjODY3MjEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJwd3F1YWxpdHkvZmlsZXMvYWRkLW1pc3NpbmctcHl0aG9uLWluY2x1ZGUtZGlyLWZvci1jcm9zcy5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicHdxdWFsaXR5L2ZpbGVzL2FkZC1taXNzaW5nLXB5dGhvbi1pbmNsdWRlLWRpci1mb3ItY3Jvc3MucGF0Y2gKQEAgLTEzLDI4ICsxMywyMyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvcHl0aG9uL01ha2VmaWxlLmFtIGIvcHl0aG9uL01ha2VmaWxlLmFtCi1pbmRleCBhYmM1Y2QzLi5lMzViYTcxIDEwMDY0NAoraW5kZXggMWQwMGMwYy4uNTI4MTZiMiAxMDA2NDQKIC0tLSBhL3B5dGhvbi9NYWtlZmlsZS5hbQogKysrIGIvcHl0aG9uL01ha2VmaWxlLmFtCi1AQCAtMTQsNCArMTQsNCBAQCBhbGwtbG9jYWw6Ci0gCUNGTEFHUz0iJHtDRkxBR1N9IC1mbm8tc3RyaWN0LWFsaWFzaW5nIiBAUFlUSE9OQklOQVJZQCBzZXR1cC5weSBidWlsZCAtLWJ1aWxkLWxpYj0uCitAQCAtMTQsNyArMTQsNyBAQCBhbGwtbG9jYWw6CisgCUNGTEFHUz0iJHtDRkxBR1N9IC1mbm8tc3RyaWN0LWFsaWFzaW5nIiBAUFlUSE9OQklOQVJZQCBzZXR1cC5weSBidWlsZCAtLWJ1aWxkLWJhc2UgcHkkKFBZVEhPTlJFVikKICAKICBpbnN0YWxsLWV4ZWMtbG9jYWw6Ci0tCUNGTEFHUz0iJHtDRkxBR1N9IC1mbm8tc3RyaWN0LWFsaWFzaW5nIiBAUFlUSE9OQklOQVJZQCBzZXR1cC5weSBpbnN0YWxsIC0tcHJlZml4PSR7REVTVERJUn0ke3ByZWZpeH0KLSsJQ0ZMQUdTPSIke0NGTEFHU30gLWZuby1zdHJpY3QtYWxpYXNpbmciIEBQWVRIT05CSU5BUllAIHNldHVwLnB5IGluc3RhbGwgLS1wcmVmaXg9JHtERVNURElSfSR7cHJlZml4fSAtLWluc3RhbGwtbGliPSR7REVTVERJUn0vJHtQWVRIT05TSVRFRElSfQorLQlDRkxBR1M9IiR7Q0ZMQUdTfSAtZm5vLXN0cmljdC1hbGlhc2luZyIgQFBZVEhPTkJJTkFSWUAgc2V0dXAucHkgYnVpbGQgLS1idWlsZC1iYXNlIHB5JChQWVRIT05SRVYpIGluc3RhbGwgLS1wcmVmaXg9JHtERVNURElSfSR7cHJlZml4fQorKwlDRkxBR1M9IiR7Q0ZMQUdTfSAtZm5vLXN0cmljdC1hbGlhc2luZyIgQFBZVEhPTkJJTkFSWUAgc2V0dXAucHkgYnVpbGQgLS1idWlsZC1iYXNlIHB5JChQWVRIT05SRVYpIGluc3RhbGwgLS1wcmVmaXg9JHtERVNURElSfSR7cHJlZml4fSAtLWluc3RhbGwtbGliPSR7REVTVERJUn0vJHtQWVRIT05TSVRFRElSfQorIAorIGNsZWFuLWxvY2FsOgorIAlybSAtcmYgcHkkKFBZVEhPTlJFVikKIGRpZmYgLS1naXQgYS9weXRob24vc2V0dXAucHkuaW4gYi9weXRob24vc2V0dXAucHkuaW4KLWluZGV4IDY0NTc1OTUuLmQzZGIwZTUgMTAwNzU1CitpbmRleCBhNzQxYjkxLi42NzU5YTk1IDEwMDc1NQogLS0tIGEvcHl0aG9uL3NldHVwLnB5LmluCiArKysgYi9weXRob24vc2V0dXAucHkuaW4KLUBAIC02LDYgKzYsNyBAQAotIAotIGZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IHNldHVwLCBFeHRlbnNpb24KLSBmcm9tIGRpc3R1dGlscy5jb21tYW5kLmJ1aWxkX2V4dCBpbXBvcnQgYnVpbGRfZXh0IGFzIF9idWlsZF9leHQKLStpbXBvcnQgb3MKLSAKLSBjbGFzcyBidWlsZF9leHQoX2J1aWxkX2V4dCk6Ci0gICAgIGRlZiBnZW5jb25zdGFudHMoc2VsZiwgaGVhZGVyZmlsZSwgb3V0cHV0ZmlsZSk6Ci1AQCAtMjMsNyArMjQsNyBAQCBjbGFzcyBidWlsZF9leHQoX2J1aWxkX2V4dCk6CitAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBzZGlzdChfc2Rpc3QpOgogIAogIHB3cW1vZHVsZSA9IEV4dGVuc2lvbigncHdxdWFsaXR5JywKICAgICAgICAgICAgICBzb3VyY2VzID0gWydwd3F1YWxpdHkuYyddLApAQCAtNDQsNSArMzksNSBAQAogICAgICAgICAgICAgIGxpYnJhcmllcyA9IFsncHdxdWFsaXR5J10pCiAgCiAtLSAKLTEuOS4xCisyLjE3LjEKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnB3cXVhbGl0eS9saWJwd3F1YWxpdHlfMS40LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicHdxdWFsaXR5L2xpYnB3cXVhbGl0eV8xLjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZiMjVjZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicHdxdWFsaXR5L2xpYnB3cXVhbGl0eV8xLjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkxpYnJhcnkgZm9yIHBhc3N3b3JkIHF1YWxpdHkgY2hlY2tpbmcgYW5kIGdlbmVyYXRpbmcgcmFuZG9tIHBhc3N3b3JkcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJwd3F1YWxpdHkvbGlicHdxdWFsaXR5IgotU0VDVElPTiA9ICJkZXZlbC9saWIiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmJkMmYxMzg2ZGY4MTNhNDU5YTBjMzRmZGU2NzZmYzIiCi0KLVNSQ05BTUUgPSAibGlicHdxdWFsaXR5IgotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtTUkNOQU1FfS8ke1NSQ05BTUV9L3JlbGVhc2VzL2Rvd25sb2FkLyR7U1JDTkFNRX0tJHtQVn0vJHtTUkNOQU1FfS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2FkZC1taXNzaW5nLXB5dGhvbi1pbmNsdWRlLWRpci1mb3ItY3Jvc3MucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjhkZWZjYzcyODBhOTBlOTQwMGQ2Njg5YzkzYTI3OWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWRlNmZmMDQ2Y2YyMTcyZDI2NWEyY2I2ZjhkYTQzOWQ4OTRmM2U0ZTgxNTdiMDU2YzUxNTUxNTIzMmZhZGU2YiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJwd3F1YWxpdHkvbGlicHdxdWFsaXR5L3JlbGVhc2VzIgotCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotREVQRU5EUyA9ICJjcmFja2xpYiB2aXJ0dWFsL2dldHRleHQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGRpc3R1dGlsczMtYmFzZSBnZXR0ZXh0Ci0KLUIgPSAiJHtTfSIKLQotZXhwb3J0IFBZVEhPTl9ESVIKLWV4cG9ydCBCVUlMRF9TWVMKLWV4cG9ydCBIT1NUX1NZUwotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1weXRob24tcmV2PSR7UFlUSE9OX0JBU0VWRVJTSU9OfSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1weXRob24tYmluYXJ5PSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1weXRob25zaXRlZGlyPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKLSAgICAgICAgICAgICAgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbScsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLS1lbmFibGUtcGFtLCAtLWRpc2FibGUtcGFtLCBsaWJwYW0iCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vc2VjdXJpdHkvcGFtX3B3cXVhbGl0eS5zbyIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3NlY3VyaXR5Ly5kZWJ1ZyIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L3NlY3VyaXR5L3BhbV9wd3F1YWxpdHkuYSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3NlY3VyaXR5L3BhbV9wd3F1YWxpdHkubGEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicHdxdWFsaXR5L2xpYnB3cXVhbGl0eV8xLjQuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJwd3F1YWxpdHkvbGlicHdxdWFsaXR5XzEuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0ZDJmN2UKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicHdxdWFsaXR5L2xpYnB3cXVhbGl0eV8xLjQuMi5iYgpAQCAtMCwwICsxLDQxIEBACitERVNDUklQVElPTiA9ICJMaWJyYXJ5IGZvciBwYXNzd29yZCBxdWFsaXR5IGNoZWNraW5nIGFuZCBnZW5lcmF0aW5nIHJhbmRvbSBwYXNzd29yZHMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGlicHdxdWFsaXR5L2xpYnB3cXVhbGl0eSIKK1NFQ1RJT04gPSAiZGV2ZWwvbGliIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZiZDJmMTM4NmRmODEzYTQ1OWEwYzM0ZmRlNjc2ZmMyIgorCitTUkNOQU1FID0gImxpYnB3cXVhbGl0eSIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS9yZWxlYXNlcy9kb3dubG9hZC8ke1NSQ05BTUV9LSR7UFZ9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9hZGQtbWlzc2luZy1weXRob24taW5jbHVkZS1kaXItZm9yLWNyb3NzLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImFlNmU2MWZjMzNmNWRhYzBkZTVlODQ3ZWI3NTIwZDcxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUyNjNlMDllZTYyMjY5YzA5MmY3OTBhYzE1OTExMmFlZDNlNjY4MjZhNzk1ZTNhZmVjODVmZGVhYzQyODFjOGUiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGlicHdxdWFsaXR5L2xpYnB3cXVhbGl0eS9yZWxlYXNlcyIKKworUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCisKK0RFUEVORFMgPSAiY3JhY2tsaWIgdmlydHVhbC9nZXR0ZXh0IgorCitpbmhlcml0IGF1dG90b29scyBkaXN0dXRpbHMzLWJhc2UgZ2V0dGV4dAorCitCID0gIiR7U30iCisKK2V4cG9ydCBQWVRIT05fRElSCitleHBvcnQgQlVJTERfU1lTCitleHBvcnQgSE9TVF9TWVMKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGgtcHl0aG9uLXJldj0ke1BZVEhPTl9CQVNFVkVSU0lPTn0gXAorICAgICAgICAgICAgICAgICAtLXdpdGgtcHl0aG9uLWJpbmFyeT0ke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gXAorICAgICAgICAgICAgICAgICAtLXdpdGgtcHl0aG9uc2l0ZWRpcj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCisgICAgICAgICAgICAgICAgIC0tbGliZGlyPSR7bGliZGlyfSBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0nLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1twYW1dID0gIi0tZW5hYmxlLXBhbSwgLS1kaXNhYmxlLXBhbSwgbGlicGFtIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3NlY3VyaXR5L3BhbV9wd3F1YWxpdHkuc28iCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9zZWN1cml0eS8uZGVidWciCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9zZWN1cml0eS9wYW1fcHdxdWFsaXR5LmEiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9zZWN1cml0eS9wYW1fcHdxdWFsaXR5LmxhIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnFiL2xpYnFiXzEuMC41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnFiL2xpYnFiXzEuMC41LmJiCmluZGV4IDgyNTAzYTEuLmNkNDAxOTYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJxYi9saWJxYl8xLjAuNS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicWIvbGlicWJfMS4wLjUuYmIKQEAgLTMzLDMgKzMzLDUgQEAKICAgICAoIGNkICR7U30KICAgICAke1N9L2F1dG9nZW4uc2ggKQogfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJzdGF0Z3JhYi9saWJzdGF0Z3JhYl8wLjkyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnN0YXRncmFiL2xpYnN0YXRncmFiXzAuOTIuYmIKaW5kZXggYzYxZDdjOS4uYTA4MWNiMSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnN0YXRncmFiL2xpYnN0YXRncmFiXzAuOTIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnN0YXRncmFiL2xpYnN0YXRncmFiXzAuOTIuYmIKQEAgLTE0LDYgKzE0LDggQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICI1MzYyYjJkZGJlYzU0YjM5MDFlN2Q3MGMyMmNkYTI0OSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI1YmYxOTA2YWZmOWZmYzNlZWFjZjMyNTY3MjcwZjRkODE5MDU1ZDgzODZkOThiOWM4YzA1NTE5MDEyZDVhMTk2IgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMiCisKICMgUGVybDUgaXMgZm9yIHRlc3RzIG9ubHkKIEVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtcGVybDUgLS13aXRoLW1udHRhYj0vcHJvYy9tb3VudHMiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJ6aXAvbGliemlwXzEuNS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnppcC9saWJ6aXBfMS41LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkNzI1YmYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnppcC9saWJ6aXBfMS41LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJsaWJ6aXAgaXMgYSBDIGxpYnJhcnkgZm9yIHJlYWRpbmcsIGNyZWF0aW5nLCBhbmQgbW9kaWZ5aW5nIHppcCBhcmNoaXZlcy4iCi1IT01FUEFHRSA9ICJodHRwczovL2xpYnppcC5vcmcvIgotCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTAxZjhiMWI4ZGE2NDAzNzM5MDk0Mzk2ZTE1YjFlNzIyIgotCi1ERVBFTkRTID0gInpsaWIgYnppcDIiCi0KLVBBQ0tBR0VDT05GSUdbc3NsXSA9ICItREVOQUJMRV9PUEVOU1NMPU9OLC1ERU5BQkxFX09QRU5TU0w9T0ZGLG9wZW5zc2wiCi0KLVBBQ0tBR0VDT05GSUcgPz0gInNzbCIKLQotaW5oZXJpdCBjbWFrZQotCi1TUkNfVVJJID0gImh0dHBzOi8vbGliemlwLm9yZy9kb3dubG9hZC9saWJ6aXAtJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjlkZDM4ZDI3M2JjZGVjNWQzZDE0OThmZTY2ODRmNDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjNkZTRkNGJkNDlhMDFlMGNhYjM1MDdmYzE2M2Y4OGUxNjUxNjk1YjZiOWNiMjVhZDE3NGRiZTMxOWQ0YTNiNCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJ6aXAvbGliemlwXzEuNi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnppcC9saWJ6aXBfMS42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFhZDU1MgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJ6aXAvbGliemlwXzEuNi4xLmJiCkBAIC0wLDAgKzEsMTkgQEAKK0RFU0NSSVBUSU9OID0gImxpYnppcCBpcyBhIEMgbGlicmFyeSBmb3IgcmVhZGluZywgY3JlYXRpbmcsIGFuZCBtb2RpZnlpbmcgemlwIGFyY2hpdmVzLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vbGliemlwLm9yZy8iCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTMzYmIxMTdhYTU1ZjlhYWQzZDI4ZTI5MjU2Zjk5MTkiCisKK0RFUEVORFMgPSAiemxpYiBiemlwMiIKKworUEFDS0FHRUNPTkZJR1tzc2xdID0gIi1ERU5BQkxFX09QRU5TU0w9T04sLURFTkFCTEVfT1BFTlNTTD1PRkYsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbbHptYV0gPSAiLURFTkFCTEVfTFpNQT1PTiwtREVOQUJMRV9MWk1BPU9GRix4eiIKKworUEFDS0FHRUNPTkZJRyA/PSAic3NsIGx6bWEiCisKK2luaGVyaXQgY21ha2UKKworU1JDX1VSSSA9ICJodHRwczovL2xpYnppcC5vcmcvZG93bmxvYWQvbGliemlwLSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gImY5YTIyODYxOWFhYjI0NDZhZGRjOWM5ZTBlMmRlMTQ5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcwNWRhYzdhNjcxYjNmNDQwMTgxNDgxZTYwN2IwOTA4MTI5YTljZjFkZGZjYmE3NWQ2NjQzNmMwZTdkMzM2NDEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1kby1ub3QtY3JlYXRlLXB5dGhvbi1lbnZpcm9ubWVudC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAxLWRvLW5vdC1jcmVhdGUtcHl0aG9uLWVudmlyb25tZW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2MxYjY5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAxLWRvLW5vdC1jcmVhdGUtcHl0aG9uLWVudmlyb25tZW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotRnJvbSA1MDI4ZDFjZDY2OWMxNzllZDQ5MDYxMzE2ZDA0YzhlODg2MmE1YmQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAxMiBKdWwgMjAxOCAxNTowNDo0NyArMDgwMAotU3ViamVjdDogW1BBVENIIDEvNV0gZG8gbm90IGNyZWF0ZSBweXRob24gZW52aXJvbm1lbnQKLQotVXNlIG9lJ3MgcHl0aG9uIGVudmlyb25tZW50IHJhdGhlciB0aGFuIGNyZWF0ZSBvbmUgb2YgaG9zdAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBidWlsZC9tb3ouY29uZmlndXJlL2luaXQuY29uZmlndXJlIHwgMTggLS0tLS0tLS0tLS0tLS0tLS0tCi0gY29uZmlndXJlLnB5ICAgICAgICAgICAgICAgICAgICAgICB8IDEwICsrKysrKysrKy0KLSBqcy9zcmMvb2xkLWNvbmZpZ3VyZSAgICAgICAgICAgICAgIHwgIDQgKystLQotIDMgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCi0KLS0tLSBhL2J1aWxkL21vei5jb25maWd1cmUvaW5pdC5jb25maWd1cmUKLSsrKyBiL2J1aWxkL21vei5jb25maWd1cmUvaW5pdC5jb25maWd1cmUKLUBAIC0yNTAsMjQgKzI1MCw2IEBAIGRlZiB2aXJ0dWFsZW52X3B5dGhvbihlbnZfcHl0aG9uLCBidWlsZF8KLSAgICAgZWxzZToKLSAgICAgICAgIHB5dGhvbiA9IHN5cy5leGVjdXRhYmxlCi0gCi0tICAgIGlmIG5vdCBtYW5hZ2VyLnVwX3RvX2RhdGUocHl0aG9uKToKLS0gICAgICAgIGxvZy5pbmZvKCdDcmVhdGluZyBQeXRob24gZW52aXJvbm1lbnQnKQotLSAgICAgICAgbWFuYWdlci5idWlsZChweXRob24pCi0tCi0tICAgIHB5dGhvbiA9IG5vcm1zZXAobWFuYWdlci5weXRob25fcGF0aCkKLS0KLS0gICAgaWYgcHl0aG9uICE9IG5vcm1zZXAoc3lzLmV4ZWN1dGFibGUpOgotLSAgICAgICAgbG9nLmluZm8oJ1JlZXhlY3V0aW5nIGluIHRoZSB2aXJ0dWFsZW52JykKLS0gICAgICAgIGlmIGVudl9weXRob246Ci0tICAgICAgICAgICAgZGVsIG9zLmVudmlyb25bJ1BZVEhPTiddCi0tICAgICAgICAjIE9uZSB3b3VsZCBwcmVmZXIgdG8gdXNlIG9zLmV4ZWNsLCBidXQgdGhhdCdzIGNvbXBsZXRlbHkgYm9ya2VkIG9uCi0tICAgICAgICAjIFdpbmRvd3MuCi0tICAgICAgICBzeXMuZXhpdChzdWJwcm9jZXNzLmNhbGwoW3B5dGhvbl0gKyBzeXMuYXJndikpCi0tCi0tICAgICMgV2UgYXJlIG5vdyBpbiB0aGUgdmlydHVhbGVudgotLSAgICBpZiBub3QgZGlzdHV0aWxzLnN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYigpOgotLSAgICAgICAgZGllKCdDb3VsZCBub3QgZGV0ZXJtaW5lIHB5dGhvbiBzaXRlIHBhY2thZ2VzIGRpcmVjdG9yeScpCi0tCi0gICAgIHJldHVybiBweXRob24KLSAKLSAKLS0tLSBhL2NvbmZpZ3VyZS5weQotKysrIGIvY29uZmlndXJlLnB5Ci1AQCAtMTIsNyArMTIsMTUgQEAgaW1wb3J0IHRleHR3cmFwCi0gCi0gCi0gYmFzZV9kaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKLS1zeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKGJhc2VfZGlyLCAncHl0aG9uJywgJ21vemJ1aWxkJykpCi0rc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihiYXNlX2RpciwgJ2NvbmZpZycpKQotK2RlZiBnZXRfaW1tZWRpYXRlX3N1YmRpcmVjdG9yaWVzKGFfZGlyKToKLSsgICAgcmV0dXJuIFtuYW1lIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoYV9kaXIpCi0rICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oYV9kaXIsIG5hbWUpKV0KLStmb3IgcyBpbiBbInB5dGhvbiIsICJ0ZXN0aW5nL21vemJhc2UiXToKLSsgICAgc3ViX2RpciA9IG9zLnBhdGguam9pbihiYXNlX2RpciwgcykKLSsgICAgZm9yIG1vZHVsZV9kaXIgaW4gZ2V0X2ltbWVkaWF0ZV9zdWJkaXJlY3RvcmllcyhzdWJfZGlyKToKLSsgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oc3ViX2RpciwgbW9kdWxlX2RpcikpCi0rCi0gZnJvbSBtb3pidWlsZC5jb25maWd1cmUgaW1wb3J0IENvbmZpZ3VyZVNhbmRib3gKLSBmcm9tIG1vemJ1aWxkLm1ha2V1dGlsIGltcG9ydCBNYWtlZmlsZQotIGZyb20gbW96YnVpbGQucHl0aG9udXRpbCBpbXBvcnQgaXRlcl9tb2R1bGVzX2luX3BhdGgKLS0tLSBhL2pzL3NyYy9vbGQtY29uZmlndXJlCi0rKysgYi9qcy9zcmMvb2xkLWNvbmZpZ3VyZQotQEAgLTk5NzQsNyArOTk3NCw3IEBAIGlmIHRlc3QgIiRKU19TVEFOREFMT05FIjsgdGhlbgotICAgCi0gaWYgdGVzdCAiJG5vX3JlY3Vyc2lvbiIgIT0geWVzOyB0aGVuCi0gICB0cmFwICcnIEVYSVQKLS0gIGlmICEgJFBZVEhPTiAkX3RvcHNyY2Rpci9idWlsZC9zdWJjb25maWd1cmUucHkgLS1saXN0IHN1YmNvbmZpZ3VyZXMgLS1za2lwIHNraXBfc3ViY29uZmlndXJlczsgdGhlbgotKyAgaWYgISBQWVRIT05QQVRIPSRfdG9wc3JjZGlyL3B5dGhvbi9tb3pidWlsZC8gJFBZVEhPTiAkX3RvcHNyY2Rpci9idWlsZC9zdWJjb25maWd1cmUucHkgLS1saXN0IHN1YmNvbmZpZ3VyZXMgLS1za2lwIHNraXBfc3ViY29uZmlndXJlczsgdGhlbgotICAgICAgIGV4aXQgMQotICAgZmkKLSBmaQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDQtZG8tbm90LXVzZS1hdXRvY29uZi0yLjEzLXRvLXJlZnJlc2gtb2xkLmNvbmZpZ3VyZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA0LWRvLW5vdC11c2UtYXV0b2NvbmYtMi4xMy10by1yZWZyZXNoLW9sZC5jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjYmE3OWMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDQtZG8tbm90LXVzZS1hdXRvY29uZi0yLjEzLXRvLXJlZnJlc2gtb2xkLmNvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gYTQ2YWRiNzRiNWJhNWUxN2Q2NzZkMzFkNzBmYWNhNzZjMTM4MWQxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMTIgSnVsIDIwMTggMjE6MjU6NDYgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzVdIGRvIG5vdCB1c2UgYXV0b2NvbmYgMi4xMyB0byByZWZyZXNoIG9sZC5jb25maWd1cmUKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYnVpbGQvbW96LmNvbmZpZ3VyZS9vbGQuY29uZmlndXJlIHwgMiArLQotIGpzL3NyYy9vbGQtY29uZmlndXJlICAgICAgICAgICAgICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2J1aWxkL21vei5jb25maWd1cmUvb2xkLmNvbmZpZ3VyZSBiL2J1aWxkL21vei5jb25maWd1cmUvb2xkLmNvbmZpZ3VyZQotaW5kZXggZWNlNDdmNC4uYTczOTAwZiAxMDA2NDQKLS0tLSBhL2J1aWxkL21vei5jb25maWd1cmUvb2xkLmNvbmZpZ3VyZQotKysrIGIvYnVpbGQvbW96LmNvbmZpZ3VyZS9vbGQuY29uZmlndXJlCi1AQCAtODMsNyArODMsNyBAQCBkZWYgcHJlcGFyZV9jb25maWd1cmUob2xkX2NvbmZpZ3VyZSwgbW96Y29uZmlnLCBhdXRvY29uZiwgYnVpbGRfZW52LCBzaGVsbCwKLSAgICAgICAgICAgICBvbGRfY29uZmlndXJlID0gb3MucGF0aC5qb2luKG9sZF9jb25maWd1cmVfZGlyLCAnanMnLCAnc3JjJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUob2xkX2NvbmZpZ3VyZSkpCi0gCi0tICAgIHJlZnJlc2ggPSBUcnVlCi0rICAgIHJlZnJlc2ggPSBGYWxzZQotICAgICBpZiBleGlzdHMob2xkX2NvbmZpZ3VyZSk6Ci0gICAgICAgICBtdGltZSA9IGdldG10aW1lKG9sZF9jb25maWd1cmUpCi0gICAgICAgICBhY2xvY2FsID0gb3MucGF0aC5qb2luKGJ1aWxkX2Vudi50b3BzcmNkaXIsICdidWlsZCcsICdhdXRvY29uZicsCi1kaWZmIC0tZ2l0IGEvanMvc3JjL29sZC1jb25maWd1cmUgYi9qcy9zcmMvb2xkLWNvbmZpZ3VyZQotaW5kZXggNzViMDBlMS4uOGE4ZWY1MiAxMDA2NDQKLS0tLSBhL2pzL3NyYy9vbGQtY29uZmlndXJlCi0rKysgYi9qcy9zcmMvb2xkLWNvbmZpZ3VyZQotQEAgLTYxOSw3ICs2MTksNyBAQCBpZiB0ZXN0IC16ICIkc3JjZGlyIjsgdGhlbgotICAgYWNfcHJvZz0kMAotICAgYWNfY29uZmRpcj1gZWNobyAkYWNfcHJvZ3xzZWQgJ3MlL1teL11bXi9dKiQlJSdgCi0gICB0ZXN0ICJ4JGFjX2NvbmZkaXIiID0gIngkYWNfcHJvZyIgJiYgYWNfY29uZmRpcj0uCi0tICBzcmNkaXI9JGFjX2NvbmZkaXIKLSsgIHNyY2Rpcj0iJGFjX2NvbmZkaXIvLi4vLi4vIgotICAgaWYgdGVzdCAhIC1yICRzcmNkaXIvJGFjX3VuaXF1ZV9maWxlOyB0aGVuCi0gICAgIHNyY2Rpcj0uLgotICAgZmkKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMTAtZml4LWNyb3NzLWNvbXBpbGF0aW9uLW9uLWk1ODYtdGFyZ2V0cy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDEwLWZpeC1jcm9zcy1jb21waWxhdGlvbi1vbi1pNTg2LXRhcmdldHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhYzI1ZjYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMTAtZml4LWNyb3NzLWNvbXBpbGF0aW9uLW9uLWk1ODYtdGFyZ2V0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gYTQ1MjEzOGExZGQyNzRiZmFkMzgxYTcwMTcyOTc4MzM2MGRjODZmYiBNb24gU2VwIDE3ICAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYWNpZWogQm9yemVja2kgPG1hY2llai5ib3J6ZWNraUBvcGVuLXJuZC5wbD4KLURhdGU6IFR1ZSwgNSBKYW4gMjAxNiAyMjowNDoxNyArMDEwMAotU3ViamVjdDogW1BBVENIXSBmaXggY3Jvc3MgY29tcGlsYXRpb24gb24gaTU4NiB0YXJnZXRzCi0KLVJlbW92ZSBvZmZlbmRpbmcgLVdsLC1ycGF0aC1saW5rIHRoYXQgbWF5IGNhdXNlIGhvc3QgbGlicmFyaWVzIHRvIGJlIHBpY2tlZAotZHVyaW5nIGxpbmtpbmcuIFRoZSBwYXRjaCBhcHBsaWVzIGEgZml4IHRvIGNvbmZpZ3VyZS5pbi4gU28gYXMgbm90IHRvCi1yZWdlbmVyYXRlIGNvbmZpZ3VyZSwgc2ltaWxhciBmaXggaXMgYXBwbGllZCB0aGVyZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWFjaWVqIEJvcnplY2tpIDxtYWNpZWouYm9yemVja2lAb3Blbi1ybmQucGw+Ci0KLVJlYmFzZSB0byA1Mi44LjEKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGpzL3NyYy9vbGQtY29uZmlndXJlIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi0tLS0gYS9qcy9zcmMvb2xkLWNvbmZpZ3VyZQotKysrIGIvanMvc3JjL29sZC1jb25maWd1cmUKLUBAIC0zODMzLDcgKzM4MzMsNyBAQCBBUz0nJChDQyknCi0gQVNfREFTSF9DX0ZMQUc9Jy1jJwotIE1PWl9VU0VSX0RJUj0iLm1vemlsbGEiCi0gCi0tTU9aX0ZJWF9MSU5LX1BBVEhTPSItV2wsLXJwYXRoLWxpbmssJHtESVNUfS9iaW4gLVdsLC1ycGF0aC1saW5rLCR7cHJlZml4fS9saWIiCi0rTU9aX0ZJWF9MSU5LX1BBVEhTPSItV2wsLXJwYXRoLWxpbmssJHtESVNUfS9iaW4iCi0gCi0gCi0gCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anNfNjAuNS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzXzYwLjUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzg5YmNhYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anNfNjAuNS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMyICswLDAgQEAKLVNVTU1BUlkgPSAiU3BpZGVyTW9ua2V5IGlzIE1vemlsbGEncyBKYXZhU2NyaXB0IGVuZ2luZSB3cml0dGVuIGluIEMvQysrIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb3ppbGxhL1Byb2plY3RzL1NwaWRlck1vbmtleSIKLUxJQ0VOU0UgPSAiTVBMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWRjOWI2ZWNkMTlhMTRhNTRhNjI4ZWRhYWYyMzczM2JmIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZGV2LmdlbnRvby5vcmcvfmF4cy9kaXN0ZmlsZXMvbW96anMtNjAuNS4yLnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1qcy5wYy5pbi1kby1ub3QtaW5jbHVkZS1SZXF1aXJlZERlZmluZXMuaC1mb3ItZGVwZW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtZml4LWNyb3NzLWNvbXBpbGF0aW9uLW9uLWk1ODYtdGFyZ2V0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWRvLW5vdC1jcmVhdGUtcHl0aG9uLWVudmlyb25tZW50LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZml4LWNhbm5vdC1maW5kLWxpbmsucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy13b3JrYXJvdW5kLWF1dG9jb25mLTIuMTMtZGV0ZWN0aW9uLWZhaWxlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWRvLW5vdC11c2UtYXV0b2NvbmYtMi4xMy10by1yZWZyZXNoLW9sZC5jb25maWd1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1maXgtZG9fY29tcGlsZS1mYWlsZWQtb24tbWlwcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hZGQtcmlzY3Ytc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1vempzLWZpeC1jb3JlZHVtcC1jYXVzZWQtYnktZ2V0ZW52LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Zvcm1hdC1vdmVyZmxvdy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVRvLWZpeC1idWlsZC1lcnJvci1vbi1hcm0zMkJFLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0pTX1BVQkxJQ19BUEkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1yaXNjdi1EaXNhYmxlLWF0b21pYy1vcGVyYXRpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZhbGxiYWNrLXRvLTIwMTEtQysrLXN0YW5kYXJkLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LXN1cHBvcnQtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWpzLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9taXBzYXJjaG4zMiA9ICIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtY29tcGlsaW5nLWZhaWx1cmUtb24tbWlwczY0LW4zMi1ic3AucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMDIzZWQwMTRlOWU5M2QwMTYyMGQxMjFiYzA2YTM1ODkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjUxMDM5Yzk5NzQxNWZkMGYxM2Y4ZTAxOTY2YjRhOGZmODBjYmY5MGRlYjhiMTRjMTg4MjcxMDRhMzY5Y2MwZCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHBlcmxuYXRpdmUgcHl0aG9ubmF0aXZlCi0KLWluaGVyaXQgZmVhdHVyZXNfY2hlY2sKLUNPTkZMSUNUX0RJU1RST19GRUFUVVJFU19taXBzYXJjaG4zMiA9ICJsZC1pcy1nb2xkIgotCi1ERVBFTkRTICs9ICJuc3ByIHpsaWIgcHl0aG9uLXNpeC1uYXRpdmUgcHl0aG9uLXB5dG9tbC1uYXRpdmUgXAotICAgICAgICAgICAgcHl0aG9uLWpzbWluLW5hdGl2ZSBweXRob24tZnV0dXJlcy1uYXRpdmUgXAotICAgICAgICAgICAgcHl0aG9uLXdoaWNoLW5hdGl2ZSIKLQotIyBEaXNhYmxlIG51bGwgcG9pbnRlciBvcHRpbWl6YXRpb24gaW4gZ2NjID49IDYKLSMgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xMzI4MDQ1Ci1DRkxBR1MgKz0gIi1mbm8tdHJlZS12cnAgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1kZWxldGUtbnVsbC1wb2ludGVyLWNoZWNrcyIKLUNYWEZMQUdTICs9ICItZm5vLXRyZWUtdnJwIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tZGVsZXRlLW51bGwtcG9pbnRlci1jaGVja3MiCi0KLSMgbnNwcidzIHBhY2thZ2UtY29uZmlnIGlzIGlnbm9yZWQgc28gc2V0IGxpYnMgbWFudWFsbHkKLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tdGFyZ2V0PSR7VEFSR0VUX1NZU30gXAotICAgIC0taG9zdD0ke0JVSUxEX1NZU30gXAotICAgIC0tcHJlZml4PSR7cHJlZml4fSBcCi0gICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKLSAgICAtLWRpc2FibGUtdGVzdHMgLS1kaXNhYmxlLXN0cmlwIC0tZGlzYWJsZS1vcHRpbWl6ZSBcCi0gICAgLS1kaXNhYmxlLWplbWFsbG9jIFwKLSAgICAtLXdpdGgtbnNwci1saWJzPSctbHBsZHM0IC1scGxjNCAtbG5zcHI0JyBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgIi0tZW5hYmxlLWdvbGQiLCAnLS1kaXNhYmxlLWdvbGQnLCBkKX0gXAotIgotCi0jIFdpdGhvdXQgdGhpcywgSlNfSW5pdCgpIHdpbGwgZmFpbCBmb3IgbWlwczY0LgotRVhUUkFfT0VDT05GX2FwcGVuZF9taXBzYXJjaCA9ICIgLS13aXRoLWludGwtYXBpPWJ1aWxkIgotRVhUUkFfT0VDT05GX2FwcGVuZF9wb3dlcnBjID0gIiAtLXdpdGgtaW50bC1hcGk9YnVpbGQiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfbWlwc2FyY2ggPSAiIC0tZGlzYWJsZS1pb24iCi1FWFRSQV9PRUNPTkZfYXBwZW5kX3Jpc2N2NjQgPSAiIC0tZGlzYWJsZS1pb24iCi1FWFRSQV9PRUNPTkZfYXBwZW5kX3Jpc2N2MzIgPSAiIC0tZGlzYWJsZS1pb24iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS14LWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IC0teC1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0sLS14LWluY2x1ZGVzPW5vIC0teC1saWJyYXJpZXM9bm8sdmlydHVhbC9saWJ4MTEiCi0KLUVYVFJBX09FTUFLRV90YXNrLWNvbXBpbGUgKz0gIkJVSUxEX09QVD0xIE9TX0xERkxBR1M9Jy1XbCwtbGF0b21pYyAke0xERkxBR1N9JyIKLUVYVFJBX09FTUFLRV90YXNrLWluc3RhbGwgKz0gIlNUQVRJQ19MSUJSQVJZX05BTUU9anNfc3RhdGljIgotCi1leHBvcnQgSE9TVF9DQyA9ICIke0JVSUxEX0NDfSIKLWV4cG9ydCBIT1NUX0NYWCA9ICIke0JVSUxEX0NYWH0iCi1leHBvcnQgSE9TVF9DRkxBR1MgPSAiJHtCVUlMRF9DRkxBR1N9IgotZXhwb3J0IEhPU1RfQ1BQRkxBR1MgPSAiJHtCVUlMRF9DUFBGTEFHU30iCi1leHBvcnQgSE9TVF9DWFhGTEFHUyA9ICIke0JVSUxEX0NYWEZMQUdTfSIKLQotZG9fY29uZmlndXJlKCkgewotICAgIGV4cG9ydCBTSEVMTD0iL2Jpbi9zaCIKLSAgICBleHBvcnQgVE1QPSIke0J9IgotICAgICR7U30vanMvc3JjL2NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0KLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIGV4cG9ydCBTSEVMTD0iL2Jpbi9zaCIKLSAgICBleHBvcnQgUwotICAgIGV4cG9ydCBQWVRIT05QQVRICi0gICAgY2QgJHtTfQotICAgIGZvciBzdWJfZGlyIGluIHB5dGhvbiB0ZXN0aW5nL21vemJhc2U7IGRvCi0gICAgICAgIGZvciBtb2R1bGVfZGlyIGluIGBscyAkc3ViX2RpciAtMWA7ZG8KLSAgICAgICAgICAgIFsgJG1vZHVsZV9kaXIgPSAidmlydHVhbGVudiIgXSAmJiBjb250aW51ZQotICAgICAgICAgICAgaWYgWyAtZCAiJHtTfS8kc3ViX2Rpci8kbW9kdWxlX2RpciIgXTt0aGVuCi0gICAgICAgICAgICAgICAgUFlUSE9OUEFUSD0iJFBZVEhPTlBBVEg6JHtTfS8kc3ViX2Rpci8kbW9kdWxlX2RpciIKLSAgICAgICAgICAgIGZpCi0gICAgICAgIGRvbmUKLSAgICBkb25lCi0gICAgUFlUSE9OUEFUSD0iJFBZVEhPTlBBVEg6JHtTfS9jb25maWc6JHtTfS9idWlsZCIKLSAgICBjZCAtCi19Ci0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLSAgICBleHBvcnQgU0hFTEw9Ii9iaW4vc2giCi0gICAgZXhwb3J0IFMKLSAgICBleHBvcnQgUFlUSE9OUEFUSAotICAgIGNkICR7U30KLSAgICBmb3Igc3ViX2RpciBpbiBweXRob24gdGVzdGluZy9tb3piYXNlOyBkbwotICAgICAgICBmb3IgbW9kdWxlX2RpciBpbiBgbHMgJHN1Yl9kaXIgLTFgO2RvCi0gICAgICAgICAgICBbICRtb2R1bGVfZGlyID0gInZpcnR1YWxlbnYiIF0gJiYgY29udGludWUKLSAgICAgICAgICAgIGlmIFsgLWQgIiR7U30vJHN1Yl9kaXIvJG1vZHVsZV9kaXIiIF07dGhlbgotICAgICAgICAgICAgICAgIFBZVEhPTlBBVEg9IiRQWVRIT05QQVRIOiR7U30vJHN1Yl9kaXIvJG1vZHVsZV9kaXIiCi0gICAgICAgICAgICBmaQotICAgICAgICBkb25lCi0gICAgZG9uZQotICAgIFBZVEhPTlBBVEg9IiRQWVRIT05QQVRIOiR7U30vY29uZmlnOiR7U30vYnVpbGQiCi0gICAgY2QgLQotfQotCi1QQUNLQUdFUyA9KyAibGliJHtCUE59IgotRklMRVNfbGliJHtCUE59ICs9ICIke2xpYmRpcn0vbGliKi5zbyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2pzNjAtY29uZmlnIgotCi0jIEZhaWxzIHRvIGJ1aWxkIHdpdGggdGh1bWItMSAocWVtdWFybSkKLSN8IHtzdGFuZGFyZCBpbnB1dH06IEFzc2VtYmxlciBtZXNzYWdlczoKLSN8IHtzdGFuZGFyZCBpbnB1dH06MjE3MjogRXJyb3I6IHNoaWZ0cyBpbiBDTVAvTU9WIGluc3RydWN0aW9ucyBhcmUgb25seSBzdXBwb3J0ZWQgaW4gdW5pZmllZCBzeW50YXggLS0gYG1vdiByMixyMSxMU1IjMjAnCi0jfCB7c3RhbmRhcmQgaW5wdXR9OjIxNzM6IEVycm9yOiB1bnNoaWZ0ZWQgcmVnaXN0ZXIgcmVxdWlyZWQgLS0gYGJpYyByMixyMiwjKDE8PDExKScKLSN8IHtzdGFuZGFyZCBpbnB1dH06MjE3NDogRXJyb3I6IHVuc2hpZnRlZCByZWdpc3RlciByZXF1aXJlZCAtLSBgb3JyIHIxLHIxLCMoMTw8MjApJwotI3wge3N0YW5kYXJkIGlucHV0fToyMTc2OiBFcnJvcjogaW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBpbiBUaHVtYjE2IG1vZGUgLS0gYHN1YnMgcjIscjIsIzB4MzAwJwotI3wge3N0YW5kYXJkIGlucHV0fToyMTc4OiBFcnJvcjogaW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBpbiBUaHVtYjE2IG1vZGUgLS0gYHN1YnMgcjUscjIsIzUyJwotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLQotRElTQUJMRV9TVEFUSUMgPSAiIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21yYWEvbXJhYS8wMDAxLWNtYWtlLVVzZS1hLXJlZ3VsYXItZXhwcmVzc2lvbi10by1tYXRjaC14ODYtYXJjaGl0ZWMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbXJhYS9tcmFhLzAwMDEtY21ha2UtVXNlLWEtcmVndWxhci1leHByZXNzaW9uLXRvLW1hdGNoLXg4Ni1hcmNoaXRlYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2FlMDJmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21yYWEvbXJhYS8wMDAxLWNtYWtlLVVzZS1hLXJlZ3VsYXItZXhwcmVzc2lvbi10by1tYXRjaC14ODYtYXJjaGl0ZWMucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSA1ZGUxODNkYzQzNmJiNjQ3MzYxYWI2NDFkODkxYzExM2U2YTdkYWRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgOCBNYXIgMjAyMCAxNjozMDo0OCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBjbWFrZTogVXNlIGEgcmVndWxhciBleHByZXNzaW9uIHRvIG1hdGNoIHg4NiBhcmNoaXRlY3R1cmVzCisKK2luIE9FIHdlIHVzZSBpNjg2IGZvciBxZW11eDg2IGFuZCB0aGlzIHJlc3VsdHMgaW4KKworLS0gSU5GTyAtIFRhcmdldCBhcmNoIGlzIGk2ODYKK0NNYWtlIEVycm9yIGF0IENNYWtlTGlzdHMudHh0OjE5MSAobWVzc2FnZSk6CisgIE9ubHkgeDg2LCBhcm0sIG1pcHMsIFBFUklQSEVSQUxNQU4gYW5kIG1vY2sgcGxhdGZvcm1zIGN1cnJlbnRseSBzdXBwb3J0ZWQKKworU28gdXNpbmcgYSB3aWxkY2FyZCBoZWxwcyBpbiB1c2luZyBhbnkgeDg2IGFyY2gKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIENNYWtlTGlzdHMudHh0IHwgMyArLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCAyNTBkOTEwNi4uZmI2NDI3MjIgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC0xNzYsOCArMTc2LDcgQEAgZWxzZSAoKQorICAgbWVzc2FnZSAoU1RBVFVTICJJTkZPIC0gT3ZlcnJpZGUgYXJjaCBpcyAke0RFVEVDVEVEX0FSQ0h9IikKKyBlbmRpZigpCisgCistaWYgKERFVEVDVEVEX0FSQ0ggU1RSRVFVQUwgImk1ODYiIE9SIERFVEVDVEVEX0FSQ0ggU1RSRVFVQUwgIng4Nl82NCIKKy0gICAgT1IgREVURUNURURfQVJDSCBTVFJFUVVBTCAiaTM4NiIpCisraWYgKERFVEVDVEVEX0FSQ0ggTUFUQ0hFUyAiaT84NiIgT1IgREVURUNURURfQVJDSCBTVFJFUVVBTCAieDg2XzY0IikKKyAgIHNldCAoWDg2UExBVCBPTikKKyBlbHNlaWYgKERFVEVDVEVEX0FSQ0ggTUFUQ0hFUyAiYXJtLioiIE9SIERFVEVDVEVEX0FSQ0ggTUFUQ0hFUyAiYWFyY2g2NCIpCisgICBzZXQgKEFSTVBMQVQgT04pCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbXJhYS9tcmFhX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tcmFhL21yYWFfZ2l0LmJiCmluZGV4IDZkNDJjNjcuLjQwM2Q2NDEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tcmFhL21yYWFfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tcmFhL21yYWFfZ2l0LmJiCkBAIC0zLDEyICszLDEzIEBACiBTRUNUSU9OID0gImxpYnMiCiAKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGI5MmEzYjQ5N2Q3OTQzMDQyYTZkYjQwYzA4OGMzZjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05MWU3ZGU1MGE4ZDNjZjAxMDU3ZjMxOGQ3MjQ2MGFjZCIKIAotU1JDUkVWID0gIjk2NzU4NWM5ZWEwZTFhODgxOGQyMTcyZDIzOTVkODUwMmY2MTgwYTIiCi1QViA9ICIyLjAuMCtnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICJlMTVjZTZmYmM3NjE0OGJhODgzNWFkYzkyMTk2YjBkMGEzZjI0NWU3IgorUFYgPSAiMi4xLjArZ2l0JHtTUkNQVn0iCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9pbnRlbC1pb3QtZGV2a2l0LyR7QlBOfS5naXQ7cHJvdG9jb2w9aHR0cCBcCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZWNsaXBzZS8ke0JQTn0uZ2l0O3Byb3RvY29sPWh0dHAgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jbWFrZS1Vc2UtYS1yZWd1bGFyLWV4cHJlc3Npb24tdG8tbWF0Y2gteDg2LWFyY2hpdGVjLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpAQCAtMjYsNiArMjcsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIC1EUFlUSE9OX0lOQ0xVREVfRElSPSR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0ke1BZVEhPTl9BQkl9IFwKICAgICAgICAgICAgICAgICAgICAgICAgIgogCitDRkxBR1MgKz0gIi1mY29tbW9uIgorCiAjIFByZXBlbmQgbXJhYS11dGlscyB0byBtYWtlIHN1cmUgYmluZGlyIGVuZHMgdXAgaW4gdGhlcmUKIFBBQ0tBR0VTID0rICIke1BOfS11dGlscyIKIApAQCAtNjAsMyArNjMsNSBAQAogIyMjIEluY2x1ZGUgZGVzaXJlZCBsYW5ndWFnZSBiaW5kaW5ncyAjIyMKIFBBQ0tBR0VTID0rICIke0BiYi51dGlscy5jb250YWlucygnQklORElOR1MnLCAnbm9kZWpzJywgJ25vZGUtJHtQTn0nLCAnJywgZCl9IgogUEFDS0FHRVMgPSsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCSU5ESU5HUycsICdweXRob24nLCAnJHtQWVRIT05fUE59LSR7UE59JywgJycsIGQpfSIKKworVE9PTENIQUlOID0gImdjYyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9uYW5hL25hbmFfMi41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL25hbmEvbmFuYV8yLjUuYmIKaW5kZXggNTk1ODUyYS4uNDIzNTAwNiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL25hbmEvbmFuYV8yLjUuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL25hbmEvbmFuYV8yLjUuYmIKQEAgLTE1LDcgKzE1LDcgQEAKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTZhYTU3ZjNiN2ZkZGE4NzBjZWU1OTcyNzViZDVkMTEiCiAKLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgdGV4aW5mbwogCiBFWFRSQV9PRU1BS0UgPSAiREVTVERJUj0ke0R9IgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbmxtaS9vcGVubG1pLXRvb2xzXzAuMTAuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktdG9vbHNfMC4xMC41LmJiCmluZGV4IDQxOWIzZWUuLjA0ZjgyZDIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktdG9vbHNfMC4xMC41LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktdG9vbHNfMC4xMC41LmJiCkBAIC01LDcgKzUsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vQ09QWUlORzttZDU9NzU4NTk5ODk1NDVlMzc5NjhhOTliNjMxZWY0MjcyMmUiCiBTRUNUSU9OID0gIlN5c3RlbS9NYW5hZ2VtZW50IgogCi1pbmhlcml0IHNldHVwdG9vbHMKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoIkJCRklMRV9DT0xMRUNUSU9OUyIsICJtZXRhLXB5dGhvbjIiLCAic2V0dXB0b29scyIsICIiLCBkKX0KIAogREVQRU5EUyA9ICJweXRob24tbmF0aXZlIHB5dGhvbi1weXdiZW0tbmF0aXZlIHB5dGhvbi1tMmNyeXB0byBweXRob24tcHl3YmVtIgogCkBAIC0xNywxMCArMTcsMTAgQEAKIFMgPSAiJHtXT1JLRElSfS8ke0JQfS9jbGkiCiAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAncy9AQFZFUlNJT05AQC8kKFZFUlNJT04pL2cnIHNldHVwLnB5LnNrZWwgPnNldHVwLnB5CisgICAgc2VkICdzL0BAVkVSU0lPTkBALyQoVkVSU0lPTikvZycgJHtTfS9zZXR1cC5weS5za2VsID4gJHtTfS9zZXR1cC5weQogfQogCiBweXRob24oKSB7Ci0gICAgaWYgJ21ldGEtcHl0aG9uJyBub3QgaW4gZC5nZXRWYXIoJ0JCRklMRV9DT0xMRUNUSU9OUycpLnNwbGl0KCk6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoJ1JlcXVpcmVzIG1ldGEtcHl0aG9uIHRvIGJlIHByZXNlbnQuJykKKyAgICBpZiAnbWV0YS1weXRob24yJyBub3QgaW4gZC5nZXRWYXIoJ0JCRklMRV9DT0xMRUNUSU9OUycpLnNwbGl0KCk6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoJ1JlcXVpcmVzIG1ldGEtcHl0aG9uMiB0byBiZSBwcmVzZW50LicpCiB9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3N0cmVlL29zdHJlZV8yMDE5LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3N0cmVlL29zdHJlZV8yMDE5LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZjUxMWIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29zdHJlZS9vc3RyZWVfMjAxOS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTczICswLDAgQEAKLVNVTU1BUlkgPSAiVmVyc2lvbmVkIE9wZXJhdGluZyBTeXN0ZW0gUmVwb3NpdG9yeS4iCi1ERVNDUklQVElPTiA9ICJsaWJvc3RyZWUgaXMgYm90aCBhIHNoYXJlZCBsaWJyYXJ5IGFuZCBzdWl0ZSBvZiBjb21tYW5kIGxpbmUgXAotdG9vbHMgdGhhdCBjb21iaW5lcyBhIFwiZ2l0LWxpa2VcIiBtb2RlbCBmb3IgY29tbWl0dGluZyBhbmQgZG93bmxvYWRpbmcgXAotYm9vdGFibGUgZmlsZXN5c3RlbSB0cmVlcywgYWxvbmcgd2l0aCBhIGxheWVyIGZvciBkZXBsb3lpbmcgdGhlbSBhbmQgbWFuYWdpbmcgXAotdGhlIGJvb3Rsb2FkZXIgY29uZmlndXJhdGlvbi4iCi1IT01FUEFHRSA9ICJodHRwczovL29zdHJlZS5yZWFkdGhlZG9jcy5pbyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgotCi1ERVBFTkRTID0gIiBcCi0gICAgZ2xpYi0yLjAgXAotICAgIGdwZ21lIFwKLSAgICBlMmZzcHJvZ3MgXAotICAgIGxpYmNhcCBcCi0gICAgemxpYiBcCi0gICAgeHogXAotICAgIGJpc29uLW5hdGl2ZSBcCi0iCi0KLSMgVGhlIFlvY3RvIG1pcnJvciBoYXMgYW4gb2xkIGV4cG9ydCBvZiBvc3RyZWU6Ci0jIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy9naXQyX2dpdGh1Yi5jb20ub3N0cmVlZGV2Lm9zdHJlZS50YXIuZ3oKLVBSRU1JUlJPUlMgPSAiIgotCi1TUkNfVVJJID0gIiBcCi0gICAgZ2l0c206Ly9naXRodWIuY29tL29zdHJlZWRldi9vc3RyZWUgXAotICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotIgotU1JDUkVWID0gIjQzNzA2MjAyZjdkZTJjZTBjODI5YTQ2Y2FhYjM1MGFlMTY1NmY2YWQiCi0KLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj5cZCtcLlxkKykiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJhc2gtY29tcGxldGlvbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBtYW5wYWdlcyBwa2djb25maWcgcHRlc3QtZ25vbWUgc3lzdGVtZAotCi0jIFBhY2thZ2UgY29uZmlndXJhdGlvbiAtIG1hdGNoIG9zdHJlZSBkZWZhdWx0cywgYnV0IHdpdGhvdXQgcm9maWxlcy1mdXNlCi0jIG90aGVyd2lzZSB3ZSBpbnRyb2R1Y2UgYSBkZXBlbmRlbmRlbmN5IG9uIG1ldGEtZmlsZXN5c3RlbXMKLSMKLSMgSWYgcnVubmluZyB3aXRoIHB0ZXN0LCBib3RoIHNvdXAgKGZvciB0cml2aWFsLWh0dHBkKSBhbmQgeGF0dHIgYXJlIHJlcXVpcmVkCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzZWxpbnV4IHNtYWNrJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnc3lzdGVtZCBsaWJtb3VudCcsICcnLCBkKX0gXAotICAgIHNvdXAgXAotIgotCi0jIFdlIGluY2x1ZGUgc291cCBiZWNhdXNlIG9zdHJlZSBjYW4ndCAoY3VycmVudGx5KSBiZSBidWlsdCB3aXRob3V0Ci0jIHNvdXAgb3IgY3VybCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9vc3RyZWVkZXYvb3N0cmVlL2lzc3Vlcy8xODk3Ci1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA/Pz0gIiBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCBzbWFjaycsIGQpfSBcCi0gICAgYnVpbHRpbi1ncnViMi1ta2NvbmZpZyBcCi0gICAgc291cCBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbYXZhaGldID0gIi0td2l0aC1hdmFoaSwgLS13aXRob3V0LWF2YWhpLCBhdmFoaSIKLVBBQ0tBR0VDT05GSUdbYnVpbHRpbi1ncnViMi1ta2NvbmZpZ10gPSAiLS13aXRoLWJ1aWx0aW4tZ3J1YjItbWtjb25maWcsIC0td2l0aG91dC1idWlsdGluLWdydWIyLW1rY29uZmlnIgotUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLXdpdGgtY3VybCwgLS13aXRob3V0LWN1cmwsIGN1cmwiCi1QQUNLQUdFQ09ORklHW2RyYWN1dF0gPSAiLS13aXRoLWRyYWN1dCwgLS13aXRob3V0LWRyYWN1dCIKLVBBQ0tBR0VDT05GSUdbZ2pzXSA9ICJhY19jdl9wYXRoX0dKUz0ke2JpbmRpcn0vZ2pzIgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1jcnlwdG89Z251dGxzLCAsIGdudXRscyIKLVBBQ0tBR0VDT05GSUdbbGliYXJjaGl2ZV0gPSAiLS13aXRoLWxpYmFyY2hpdmUsIC0td2l0aG91dC1saWJhcmNoaXZlLCBsaWJhcmNoaXZlIgotUEFDS0FHRUNPTkZJR1tsaWJtb3VudF0gPSAiLS13aXRoLWxpYm1vdW50LCAtLXdpdGhvdXQtbGlibW91bnQsIHV0aWwtbGludXgiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW4sIC0tZGlzYWJsZS1tYW4sIGxpYnhzbHQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbbWtpbml0Y3Bpb10gPSAiLS13aXRoLW1raW5pdGNwaW8sIC0td2l0aG91dC1ta2luaXRjcGlvIgotUEFDS0FHRUNPTkZJR1tuby1odHRwMl0gPSAiLS1kaXNhYmxlLWh0dHAyLCAtLWVuYWJsZS1odHRwMiIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLWNyeXB0bz1vcGVuc3NsLCAsIG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3JvZmlsZXMtZnVzZV0gPSAiLS1lbmFibGUtcm9maWxlcy1mdXNlLCAtLWRpc2FibGUtcm9maWxlcy1mdXNlLCBmdXNlIgotUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItLXdpdGgtc2VsaW51eCwgLS13aXRob3V0LXNlbGludXgsIGxpYnNlbGludXgiCi1QQUNLQUdFQ09ORklHW3NtYWNrXSA9ICItLXdpdGgtc21hY2ssIC0td2l0aG91dC1zbWFjaywgc21hY2siCi1QQUNLQUdFQ09ORklHW3NvdXBdID0gIi0td2l0aC1zb3VwLCAtLXdpdGhvdXQtc291cCAtLWRpc2FibGUtZ2xpYnRlc3QsIGxpYnNvdXAtMi40IgotUEFDS0FHRUNPTkZJR1tzdGF0aWNdID0gIiIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLWxpYnN5c3RlbWQgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0sIC0td2l0aG91dC1saWJzeXN0ZW1kLCBzeXN0ZW1kIgotUEFDS0FHRUNPTkZJR1t0cml2aWFsLWh0dHBkLWNtZGxpbmVdID0gIi0tZW5hYmxlLXRyaXZpYWwtaHR0cGQtY21kbGluZSwgLS1kaXNhYmxlLXRyaXZpYWwtaHR0cGQtY21kbGluZSIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc3RhdGljJywgJy0td2l0aC1zdGF0aWMtY29tcGlsZXI9XCcke0NDfSAke0NGTEFHU30gJHtDUFBGTEFHU30gJHtMREZMQUdTfVwnJywgJycsIGQpfSBcCi0iCi0KLSMgTWFrZWZpbGUtbGlib3N0cmVlLmFtIG92ZXJyaWRlcyB0aGlzIHRvIGF2b2lkIGEgYnVpbGQgcHJvYmxlbSB3aXRoIGNsYW5nLAotIyBidXQgdGhhdCBmaXggYnJlYWtzIGNyb3NzIGNvbXBpbGF0aW9uIGFuZCB3ZSBkb24ndCBuZWVkIGl0Ci1FWFRSQV9PRU1BS0UgPSAiIFwKLSAgICBJTlRST1NQRUNUSU9OX1NDQU5ORVJfRU5WPSBcCi0iCi0KLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiIFwKLSAgICAtLWVuYWJsZS13cnBzZXVkby1jb21wYXQgXAotICAgIC0tZGlzYWJsZS1vdG1wZmlsZSBcCi0iCi0KLSMgUGF0aCB0byAke3ByZWZpeH0vbGliL29zdHJlZS9vc3RyZWUtZ3J1Yi1nZW5lcmF0b3IgaXMgaGFyZGNvZGVkIG9uIHRoZQotIyBkb19jb25maWd1cmUgc3RhZ2Ugc28gd2UgZG8gZGVwZW5kIG9uIGl0Ci1TWVNST09UX0RJUiA9ICIke1NUQUdJTkdfRElSX1RBUkdFVH0iCi1TWVNST09UX0RJUl9jbGFzcy1uYXRpdmUgPSAiJHtTVEFHSU5HX0RJUl9OQVRJVkV9IgotZG9fY29uZmlndXJlW3ZhcmRlcHNdICs9ICJTWVNST09UX0RJUiIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyB0aGlzIHJlZmxlY3RzIHdoYXQgYXV0b2dlbi5zaCBkb2VzLCBidXQgdGhlIE9FIHdyYXBwZXJzIGZvciBhdXRvcmVjb25mCi0gICAgIyBhbGxvdyBpdCB0byB3b3JrIHdpdGhvdXQgdGhlIG90aGVyIGd5cmF0aW9ucyB3aGljaCBleGlzdCB0aGVyZQotICAgIGNwICR7U30vbGliZ2xueC9NYWtlZmlsZS1saWJnbG54LmFtICR7U30vbGliZ2xueC9NYWtlZmlsZS1saWJnbG54LmFtLmluYwotICAgIGNwICR7U30vYnNkaWZmL01ha2VmaWxlLWJzZGlmZi5hbSAke1N9L2JzZGlmZi9NYWtlZmlsZS1ic2RpZmYuYW0uaW5jCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L29zdHJlZSBPU1RSRUVfR1JVQjJfRVhFQz0iJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L29zdHJlZS9vc3RyZWUtZ3J1Yi1nZW5lcmF0b3IiCi19Ci0KLVBBQ0tBR0VfQkVGT1JFX1BOID0gIiBcCi0gICAgJHtQTn0tZHJhY3V0IFwKLSAgICAke1BOfS1ncnViIFwKLSAgICAke1BOfS1ta2luaXRjcGlvIFwKLSAgICAke1BOfS1zd2l0Y2hyb290IFwKLSAgICAke1BOfS10cml2aWFsLWh0dHBkIFwKLSIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtub25hcmNoX2xpYmRpcn0vJHtCUE59IFwKLSAgICAke25vbmFyY2hfbGliZGlyfS90bXBmaWxlcy5kIFwKLSAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtIFwKLSAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLWdlbmVyYXRvcnMgXAotIgotRklMRVNfJHtQTn0tZHJhY3V0ID0gIiBcCi0gICAgJHtzeXNjb25mZGlyfS9kcmFjdXQuY29uZi5kIFwKLSAgICAke2xpYmRpcn0vZHJhY3V0IFwKLSIKLUZJTEVTXyR7UE59LWdydWIgPSAiIFwKLSAgICAke3N5c2NvbmZkaXJ9L2dydWIuZCBcCi0gICAgJHtsaWJleGVjZGlyfS9saWJvc3RyZWUvZ3J1YjItMTVfb3N0cmVlIFwKLSIKLUZJTEVTXyR7UE59LW1raW5pdGNwaW8gPSAiIFwKLSAgICAke3N5c2NvbmZkaXJ9L29zdHJlZS1ta2luaXRjcGlvLmNvbmYgXAotICAgICR7bGliZGlyfS9pbml0Y3BpbyBcCi0iCi1GSUxFU18ke1BOfS1zd2l0Y2hyb290ID0gIiBcCi0gICAgJHtub25hcmNoX2xpYmRpcn0vJHtCUE59L29zdHJlZS1wcmVwYXJlLXJvb3QgXAotICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3N0cmVlLXByZXBhcmUtcm9vdC5zZXJ2aWNlIFwKLSIKLUZJTEVTXyR7UE59LXRyaXZpYWwtaHR0cGQgPSAiIFwKLSAgICAke2xpYmV4ZWNkaXJ9L2xpYm9zdHJlZS9vc3RyZWUtdHJpdmlhbC1odHRwZCBcCi0iCi0KLVJERVBFTkRTXyR7UE59ID0gIiBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndHJpdmlhbC1odHRwZC1jbWRsaW5lJywgJyR7UE59LXRyaXZpYWwtaHR0cGQnLCAnJywgZCl9IFwKLSIKLVJERVBFTkRTXyR7UE59LWRyYWN1dCA9ICJiYXNoIgotUkRFUEVORFNfJHtQTn0tbWtpbml0Y3BpbyA9ICJiYXNoIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gIiBcCi0gICAgZ251cGcgXAotICAgICR7UE59LXN3aXRjaHJvb3QgXAotIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCi0gICAgYXR0ciBcCi0gICAgYmFzaCBcCi0gICAgY29yZXV0aWxzIFwKLSAgICBjcGlvIFwKLSAgICBkaWZmdXRpbHMgXAotICAgIGZpbmR1dGlscyBcCi0gICAgZ3JlcCBcCi0gICAgcHl0aG9uMy1jb3JlIFwKLSAgICBweXRob24zLW11bHRpcHJvY2Vzc2luZyBcCi0gICAgdGFyIFwKLSAgICAke1BOfS10cml2aWFsLWh0dHBkIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnQkJGSUxFX0NPTExFQ1RJT05TJywgJ21ldGEtcHl0aG9uJywgJ3B5dGhvbjMtcHl5YW1sJywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ2pzJywgJ2dqcycsICcnLCBkKX0gXAotIgotUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLXV0aWxzIGdsaWJjLWxvY2FsZWRhdGEtZW4tdXMiCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJrZXJuZWwtbW9kdWxlLW92ZXJsYXkiCi1SUkVDT01NRU5EU18ke1BOfS1wdGVzdCArPSAic3RyYWNlIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAib3N0cmVlLXJlbW91bnQuc2VydmljZSBvc3RyZWUtZmluYWxpemUtc3RhZ2VkLnBhdGgiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tc3dpdGNocm9vdCA9ICJvc3RyZWUtcHJlcGFyZS1yb290LnNlcnZpY2UiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29zdHJlZS9vc3RyZWVfMjAyMC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29zdHJlZS9vc3RyZWVfMjAyMC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMDIxYzUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3N0cmVlL29zdHJlZV8yMDIwLjMuYmIKQEAgLTAsMCArMSwxODkgQEAKK1NVTU1BUlkgPSAiVmVyc2lvbmVkIE9wZXJhdGluZyBTeXN0ZW0gUmVwb3NpdG9yeS4iCitERVNDUklQVElPTiA9ICJsaWJvc3RyZWUgaXMgYm90aCBhIHNoYXJlZCBsaWJyYXJ5IGFuZCBzdWl0ZSBvZiBjb21tYW5kIGxpbmUgXAordG9vbHMgdGhhdCBjb21iaW5lcyBhIFwiZ2l0LWxpa2VcIiBtb2RlbCBmb3IgY29tbWl0dGluZyBhbmQgZG93bmxvYWRpbmcgXAorYm9vdGFibGUgZmlsZXN5c3RlbSB0cmVlcywgYWxvbmcgd2l0aCBhIGxheWVyIGZvciBkZXBsb3lpbmcgdGhlbSBhbmQgbWFuYWdpbmcgXAordGhlIGJvb3Rsb2FkZXIgY29uZmlndXJhdGlvbi4iCitIT01FUEFHRSA9ICJodHRwczovL29zdHJlZS5yZWFkdGhlZG9jcy5pbyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgorCitERVBFTkRTID0gIiBcCisgICAgZ2xpYi0yLjAgXAorICAgIGUyZnNwcm9ncyBcCisgICAgbGliY2FwIFwKKyAgICB6bGliIFwKKyAgICB4eiBcCisgICAgYmlzb24tbmF0aXZlIFwKKyIKKworIyBUaGUgWW9jdG8gbWlycm9yIGhhcyBhbiBvbGQgZXhwb3J0IG9mIG9zdHJlZToKKyMgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzL2dpdDJfZ2l0aHViLmNvbS5vc3RyZWVkZXYub3N0cmVlLnRhci5negorUFJFTUlSUk9SUyA9ICIiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBnaXRzbTovL2dpdGh1Yi5jb20vb3N0cmVlZGV2L29zdHJlZSBcCisgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCitTUkNSRVYgPSAiNmVkNDgyMzRiYTU3OWZmNzNlYjEyOGFmMjM3MjEyYjBhMDBmMjA1NyIKKworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPlxkK1wuXGQrKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmFzaC1jb21wbGV0aW9uIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIG1hbnBhZ2VzIHBrZ2NvbmZpZyBwdGVzdC1nbm9tZSBzeXN0ZW1kCisKKyMgUGFja2FnZSBjb25maWd1cmF0aW9uIC0gbWF0Y2ggb3N0cmVlIGRlZmF1bHRzLCBidXQgd2l0aG91dCByb2ZpbGVzLWZ1c2UKKyMgb3RoZXJ3aXNlIHdlIGludHJvZHVjZSBhIGRlcGVuZGVuZGVuY3kgb24gbWV0YS1maWxlc3lzdGVtcworUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCBzbWFjaycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQgbGlibW91bnQnLCAnJywgZCl9IFwKKyAgICBnbGliIFwKKyAgICBncGdtZSBcCisgICAgc291cCBcCisiCisKKyMgV2UgaW5jbHVkZSBzb3VwIGJlY2F1c2Ugb3N0cmVlIGNhbid0IChjdXJyZW50bHkpIGJlIGJ1aWx0IHdpdGhvdXQKKyMgc291cCBvciBjdXJsIC0gaHR0cHM6Ly9naXRodWIuY29tL29zdHJlZWRldi9vc3RyZWUvaXNzdWVzLzE4OTcKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID8/PSAiIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzZWxpbnV4IHNtYWNrJywgZCl9IFwKKyAgICBidWlsdGluLWdydWIyLW1rY29uZmlnIFwKKyAgICBncGdtZSBcCisgICAgc291cCBcCisiCisKK1BBQ0tBR0VDT05GSUdbYXZhaGldID0gIi0td2l0aC1hdmFoaSwgLS13aXRob3V0LWF2YWhpLCBhdmFoaSIKK1BBQ0tBR0VDT05GSUdbYnVpbHRpbi1ncnViMi1ta2NvbmZpZ10gPSAiLS13aXRoLWJ1aWx0aW4tZ3J1YjItbWtjb25maWcsIC0td2l0aG91dC1idWlsdGluLWdydWIyLW1rY29uZmlnIgorUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLXdpdGgtY3VybCwgLS13aXRob3V0LWN1cmwsIGN1cmwiCitQQUNLQUdFQ09ORklHW2RyYWN1dF0gPSAiLS13aXRoLWRyYWN1dCwgLS13aXRob3V0LWRyYWN1dCIKK1BBQ0tBR0VDT05GSUdbZ2xpYl0gPSAiLS13aXRoLWNyeXB0bz1nbGliIgorUEFDS0FHRUNPTkZJR1tnanNdID0gImFjX2N2X3BhdGhfR0pTPSR7YmluZGlyfS9nanMiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWNyeXB0bz1nbnV0bHMsICwgZ251dGxzIgorUEFDS0FHRUNPTkZJR1tncGdtZV0gPSAiLS13aXRoLWdwZ21lLCAtLXdpdGhvdXQtZ3BnbWUsIGdwZ21lIgorUEFDS0FHRUNPTkZJR1tsaWJhcmNoaXZlXSA9ICItLXdpdGgtbGliYXJjaGl2ZSwgLS13aXRob3V0LWxpYmFyY2hpdmUsIGxpYmFyY2hpdmUiCitQQUNLQUdFQ09ORklHW2xpYm1vdW50XSA9ICItLXdpdGgtbGlibW91bnQsIC0td2l0aG91dC1saWJtb3VudCwgdXRpbC1saW51eCIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbiwgLS1kaXNhYmxlLW1hbiwgbGlieHNsdC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1tta2luaXRjcGlvXSA9ICItLXdpdGgtbWtpbml0Y3BpbywgLS13aXRob3V0LW1raW5pdGNwaW8iCitQQUNLQUdFQ09ORklHW25vLWh0dHAyXSA9ICItLWRpc2FibGUtaHR0cDIsIC0tZW5hYmxlLWh0dHAyIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtY3J5cHRvPW9wZW5zc2wsICwgb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbcm9maWxlcy1mdXNlXSA9ICItLWVuYWJsZS1yb2ZpbGVzLWZ1c2UsIC0tZGlzYWJsZS1yb2ZpbGVzLWZ1c2UsIGZ1c2UiCitQQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0td2l0aC1zZWxpbnV4LCAtLXdpdGhvdXQtc2VsaW51eCwgbGlic2VsaW51eCIKK1BBQ0tBR0VDT05GSUdbc21hY2tdID0gIi0td2l0aC1zbWFjaywgLS13aXRob3V0LXNtYWNrLCBzbWFjayIKK1BBQ0tBR0VDT05GSUdbc291cF0gPSAiLS13aXRoLXNvdXAsIC0td2l0aG91dC1zb3VwIC0tZGlzYWJsZS1nbGlidGVzdCwgbGlic291cC0yLjQiCitQQUNLQUdFQ09ORklHW3N0YXRpY10gPSAiIgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtbGlic3lzdGVtZCAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSwgLS13aXRob3V0LWxpYnN5c3RlbWQsIHN5c3RlbWQiCitQQUNLQUdFQ09ORklHW3RyaXZpYWwtaHR0cGQtY21kbGluZV0gPSAiLS1lbmFibGUtdHJpdmlhbC1odHRwZC1jbWRsaW5lLCAtLWRpc2FibGUtdHJpdmlhbC1odHRwZC1jbWRsaW5lIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzdGF0aWMnLCAnLS13aXRoLXN0YXRpYy1jb21waWxlcj1cJyR7Q0N9ICR7Q0ZMQUdTfSAke0NQUEZMQUdTfSAke0xERkxBR1N9XCcnLCAnJywgZCl9IFwKKyIKKworIyBNYWtlZmlsZS1saWJvc3RyZWUuYW0gb3ZlcnJpZGVzIHRoaXMgdG8gYXZvaWQgYSBidWlsZCBwcm9ibGVtIHdpdGggY2xhbmcsCisjIGJ1dCB0aGF0IGZpeCBicmVha3MgY3Jvc3MgY29tcGlsYXRpb24gYW5kIHdlIGRvbid0IG5lZWQgaXQKK0VYVFJBX09FTUFLRSA9ICIgXAorICAgIElOVFJPU1BFQ1RJT05fU0NBTk5FUl9FTlY9IFwKKyIKKworRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICIgXAorICAgIC0tZW5hYmxlLXdycHNldWRvLWNvbXBhdCBcCisgICAgLS1kaXNhYmxlLW90bXBmaWxlIFwKKyIKKworIyBQYXRoIHRvICR7cHJlZml4fS9saWIvb3N0cmVlL29zdHJlZS1ncnViLWdlbmVyYXRvciBpcyBoYXJkY29kZWQgb24gdGhlCisjIGRvX2NvbmZpZ3VyZSBzdGFnZSBzbyB3ZSBkbyBkZXBlbmQgb24gaXQKK1NZU1JPT1RfRElSID0gIiR7U1RBR0lOR19ESVJfVEFSR0VUfSIKK1NZU1JPT1RfRElSX2NsYXNzLW5hdGl2ZSA9ICIke1NUQUdJTkdfRElSX05BVElWRX0iCitkb19jb25maWd1cmVbdmFyZGVwc10gKz0gIlNZU1JPT1RfRElSIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAjIHRoaXMgcmVmbGVjdHMgd2hhdCBhdXRvZ2VuLnNoIGRvZXMsIGJ1dCB0aGUgT0Ugd3JhcHBlcnMgZm9yIGF1dG9yZWNvbmYKKyAgICAjIGFsbG93IGl0IHRvIHdvcmsgd2l0aG91dCB0aGUgb3RoZXIgZ3lyYXRpb25zIHdoaWNoIGV4aXN0IHRoZXJlCisgICAgY3AgJHtTfS9saWJnbG54L01ha2VmaWxlLWxpYmdsbnguYW0gJHtTfS9saWJnbG54L01ha2VmaWxlLWxpYmdsbnguYW0uaW5jCisgICAgY3AgJHtTfS9ic2RpZmYvTWFrZWZpbGUtYnNkaWZmLmFtICR7U30vYnNkaWZmL01ha2VmaWxlLWJzZGlmZi5hbS5pbmMKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgIGNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vb3N0cmVlIE9TVFJFRV9HUlVCMl9FWEVDPSIke1NUQUdJTkdfTElCRElSX05BVElWRX0vb3N0cmVlL29zdHJlZS1ncnViLWdlbmVyYXRvciIKK30KKworUEFDS0FHRV9CRUZPUkVfUE4gPSAiIFwKKyAgICAke1BOfS1kcmFjdXQgXAorICAgICR7UE59LWdydWIgXAorICAgICR7UE59LW1raW5pdGNwaW8gXAorICAgICR7UE59LXN3aXRjaHJvb3QgXAorICAgICR7UE59LXRyaXZpYWwtaHR0cGQgXAorIgorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke25vbmFyY2hfbGliZGlyfS8ke0JQTn0gXAorICAgICR7bm9uYXJjaF9saWJkaXJ9L3RtcGZpbGVzLmQgXAorICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0gXAorICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0tZ2VuZXJhdG9ycyBcCisiCitGSUxFU18ke1BOfS1kcmFjdXQgPSAiIFwKKyAgICAke3N5c2NvbmZkaXJ9L2RyYWN1dC5jb25mLmQgXAorICAgICR7bGliZGlyfS9kcmFjdXQgXAorIgorRklMRVNfJHtQTn0tZ3J1YiA9ICIgXAorICAgICR7c3lzY29uZmRpcn0vZ3J1Yi5kIFwKKyAgICAke2xpYmV4ZWNkaXJ9L2xpYm9zdHJlZS9ncnViMi0xNV9vc3RyZWUgXAorIgorRklMRVNfJHtQTn0tbWtpbml0Y3BpbyA9ICIgXAorICAgICR7c3lzY29uZmRpcn0vb3N0cmVlLW1raW5pdGNwaW8uY29uZiBcCisgICAgJHtsaWJkaXJ9L2luaXRjcGlvIFwKKyIKK0ZJTEVTXyR7UE59LXN3aXRjaHJvb3QgPSAiIFwKKyAgICAke25vbmFyY2hfbGliZGlyfS8ke0JQTn0vb3N0cmVlLXByZXBhcmUtcm9vdCBcCisgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vc3RyZWUtcHJlcGFyZS1yb290LnNlcnZpY2UgXAorIgorRklMRVNfJHtQTn0tdHJpdmlhbC1odHRwZCA9ICIgXAorICAgICR7bGliZXhlY2Rpcn0vbGlib3N0cmVlL29zdHJlZS10cml2aWFsLWh0dHBkIFwKKyIKKworUkRFUEVORFNfJHtQTn0gPSAiIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0cml2aWFsLWh0dHBkLWNtZGxpbmUnLCAnJHtQTn0tdHJpdmlhbC1odHRwZCcsICcnLCBkKX0gXAorIgorUkRFUEVORFNfJHtQTn0tZHJhY3V0ID0gImJhc2giCitSREVQRU5EU18ke1BOfS1ta2luaXRjcGlvID0gImJhc2giCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGdtZScsICdnbnVwZycsICcnLCBkKX0gXAorICAgICR7UE59LXN3aXRjaHJvb3QgXAorIgorCisjCisjIE5vdGUgdGhhdCB0byBnZXQgcHRlc3QgdG8gcGFzcyB5b3UgYWxzbyBuZWVkOgorIworIyAgIHhhdHRyIGluIERJU1RST19GRUFUVVJFUworIyAgIHN0YXRpYyBvc3RyZWUtcHJlcGFyZS1yb290IChQQUNLQUdFQ09ORklHX2FwcGVuZF9wbi1vc3RyZWUgPSAiIHN0YXRpYyIpCisjICAgbWV0YS1weXRob24gaW4geW91ciBsYXllcnMKKyMgICBvdmVybGF5ZnMgaW4geW91ciBrZXJuZWwgKEtFUk5FTF9FWFRSQV9GRUFUVVJFUyArPSAiZmVhdHVyZXMvb3ZlcmxheWZzL292ZXJsYXlmcy5zY2MiKQorIyAgIGJ1c3lib3ggYnVpbHQgc3RhdGljYWxseQorIyAgIC92YXIvdG1wIGFzIGEgcmVhbCBmaWxlc3lzdGVtIChub3QgYSB0bXBmcykKKyMgICBTdWZmaWNpZW50IGRpc2sgc3BhY2UgKElNQUdFX1JPT1RGU19TSVpFID0gIjUyNDI4OCIpIGFuZCBSQU0gKFFCX01FTSA9ICItbSAxMDI0IikKKyMKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorICAgIGF0dHIgXAorICAgIGJhc2ggXAorICAgIGNvcmV1dGlscyBcCisgICAgY3BpbyBcCisgICAgZGlmZnV0aWxzIFwKKyAgICBmaW5kdXRpbHMgXAorICAgIGdyZXAgXAorICAgIHB5dGhvbjMtY29yZSBcCisgICAgcHl0aG9uMy1tdWx0aXByb2Nlc3NpbmcgXAorICAgIHN0cmFjZSBcCisgICAgdGFyIFwKKyAgICB1dGlsLWxpbnV4IFwKKyAgICB4eiBcCisgICAgJHtQTn0tdHJpdmlhbC1odHRwZCBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0JCRklMRV9DT0xMRUNUSU9OUycsICdtZXRhLXB5dGhvbicsICdweXRob24zLXB5eWFtbCcsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dqcycsICdnanMnLCAnJywgZCl9IFwKKyIKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy11dGlscyBnbGliYy1sb2NhbGVkYXRhLWVuLXVzIgorCitSUkVDT01NRU5EU18ke1BOfSArPSAia2VybmVsLW1vZHVsZS1vdmVybGF5IgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAib3N0cmVlLXJlbW91bnQuc2VydmljZSBvc3RyZWUtZmluYWxpemUtc3RhZ2VkLnBhdGgiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tc3dpdGNocm9vdCA9ICJvc3RyZWUtcHJlcGFyZS1yb290LnNlcnZpY2UiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9wYW0tc3NoLWFnZW50LWF1dGhfMC4xMC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9wYW0tc3NoLWFnZW50LWF1dGhfMC4xMC4zLmJiCmluZGV4IDQxYjRkMGQuLjc4NzE4MDEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wYW0vcGFtLXNzaC1hZ2VudC1hdXRoXzAuMTAuMy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL3BhbS1zc2gtYWdlbnQtYXV0aF8wLjEwLjMuYmIKQEAgLTI3LDcgKzI3LDcgQEAKICMKIFMgPSAiJHtXT1JLRElSfS9wYW1fc3NoX2FnZW50X2F1dGgtJHtQVn0iCiAKLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAoraW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBlcmxuYXRpdmUKIAogIyBBdm9pZCBhdXRvcmVjb25mLiAgT3ZlcnJpZGUgdGhlIC0tbGliZXhlYyBvZV9ydW5jb25mIHNwZWNpZmllcyBzbyB0aGF0CiAjIHRoZSBtb2R1bGUgaXMgcHV0IHdpdGggdGhlIG90aGVyIHBhbSBtb2R1bGVzLiAgQmVjYXVzZSBpdCBjYW5ub3QsIGluIGdlbmVyYWwsCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcGVndGwvcGVndGxfMi44LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcGVndGwvcGVndGxfMi44LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczMzMzNjMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BlZ3RsL3BlZ3RsXzIuOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotREVTQ1JJUFRJT049ImhlYWRlci1vbmx5IGxpYnJhcnkgZm9yIGNyZWF0aW5nIHBhcnNlcnMgYWNjb3JkaW5nIHRvIFBhcnNpbmcgRXhwcmVzc2lvbiBHcmFtbWFyIgotSE9NRVBBR0U9Imh0dHBzOi8vZ2l0aHViLmNvbS90YW9jcHAvUEVHVEwiCi1MSUNFTlNFPSJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hZTc3YjBkOTAzYTc4OGNiNDhmNGYwOTI2ZmZjNDY4YiIKLQotU1JDUkVWID0gIjdhZmY4MGRhMmNhNGZjYjBiNDdmMzJiYTY4NGZmMmUxY2Q0OGM1NzkiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdGFvY3BwL1BFR1RMLmdpdDtwcm90b2NvbD1odHRwczticmFuY2g9Mi54IFwKLSAgICAgICAgICAiCi0KLWluaGVyaXQgY21ha2UKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wZWd0bC9wZWd0bF8yLjguMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wZWd0bC9wZWd0bF8yLjguMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Mjc0MWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BlZ3RsL3BlZ3RsXzIuOC4zLmJiCkBAIC0wLDAgKzEsMTIgQEAKK0RFU0NSSVBUSU9OPSJoZWFkZXItb25seSBsaWJyYXJ5IGZvciBjcmVhdGluZyBwYXJzZXJzIGFjY29yZGluZyB0byBQYXJzaW5nIEV4cHJlc3Npb24gR3JhbW1hciIKK0hPTUVQQUdFPSJodHRwczovL2dpdGh1Yi5jb20vdGFvY3BwL1BFR1RMIgorTElDRU5TRT0iTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NmE1MTk1ZjcyMGE4ZDQzNmE0MTQ4ZTBjYjg2NjA0MDAiCisKK1NSQ1JFViA9ICI0N2U4NzhhZDRmZDcyYzkxMjUzYzlkNDdiNmYxN2UwMDFjYTJkZmNmIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3Rhb2NwcC9QRUdUTC5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPTIueCBcCisgICAgICAgICAgIgorCitpbmhlcml0IGNtYWtlCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXMvMDAwMS1zcmMtRG8tbm90LXJlc2V0LUZJTkFMX0xJQlMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXMvMDAwMS1zcmMtRG8tbm90LXJlc2V0LUZJTkFMX0xJQlMucGF0Y2gKaW5kZXggMDRhZjE1ZC4uYjVjNDEzMyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JlZGlzL3JlZGlzLzAwMDEtc3JjLURvLW5vdC1yZXNldC1GSU5BTF9MSUJTLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yZWRpcy9yZWRpcy8wMDAxLXNyYy1Eby1ub3QtcmVzZXQtRklOQUxfTElCUy5wYXRjaApAQCAtMTgsNyArMTgsNyBAQAogaW5kZXggN2Y3YzYyNS4uYzcxZGQzYiAxMDA2NDQKIC0tLSBhL3NyYy9NYWtlZmlsZQogKysrIGIvc3JjL01ha2VmaWxlCi1AQCAtNjYsNyArNjYsNyBAQCBlbmRpZgorQEAgLTc1LDcgKzc1LDcgQEAgZW5kaWYKICAKICBGSU5BTF9DRkxBR1M9JChTVEQpICQoV0FSTikgJChPUFQpICQoREVCVUcpICQoQ0ZMQUdTKSAkKFJFRElTX0NGTEFHUykKICBGSU5BTF9MREZMQUdTPSQoTERGTEFHUykgJChSRURJU19MREZMQUdTKSAkKERFQlVHKQpAQCAtMjYsNyArMjYsNyBAQAogK0ZJTkFMX0xJQlMrPS1sbQogIERFQlVHPS1nIC1nZ2RiCiAgCi0gaWZlcSAoJCh1bmFtZV9TKSxTdW5PUykKKyAjIExpbnV4IEFSTSBuZWVkcyAtbGF0b21pYyBhdCBsaW5raW5nIHRpbWUKIC0tIAogMi4yMy4wCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yZWRpcy9yZWRpcy8wMDA1LU1hcmstZXh0ZXJuLWRlZmluaXRpb24tb2YtU0RTX05PSU5JVC1pbi1zZHMuaC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yZWRpcy9yZWRpcy8wMDA1LU1hcmstZXh0ZXJuLWRlZmluaXRpb24tb2YtU0RTX05PSU5JVC1pbi1zZHMuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY3NTY4Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXMvMDAwNS1NYXJrLWV4dGVybi1kZWZpbml0aW9uLW9mLVNEU19OT0lOSVQtaW4tc2RzLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1Gcm9tIDdmN2Y3MTBjODgyMWI3MjU0YmFlYWY5NDVjYTNjYTI2M2I5ODQ1ZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAyMSBEZWMgMjAxOSAxMToxNzo1MCAtMDgwMAotU3ViamVjdDogW1BBVENIXSBNYXJrIGV4dGVybiBkZWZpbml0aW9uIG9mIFNEU19OT0lOSVQgaW4gc2RzLmgKLQotVGhpcyBoZWxwcyBhdm9pZGluZyBtdWx0aXBsZSBkZWZpbml0aW9uIG9mIHRoaXMgdmFyaWFibGUsIGl0cyBhbHNvCi1kZWZpbmVkIGdsb2JhbGx5IGluIHNkcy5jCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9zZHMuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9zZHMuaCBiL3NyYy9zZHMuaAotaW5kZXggMWJkYjYwZC4uYWRjYzEyYyAxMDA2NDQKLS0tLSBhL3NyYy9zZHMuaAotKysrIGIvc3JjL3Nkcy5oCi1AQCAtMzQsNyArMzQsNyBAQAotICNkZWZpbmUgX19TRFNfSAotIAotICNkZWZpbmUgU0RTX01BWF9QUkVBTExPQyAoMTAyNCoxMDI0KQotLWNvbnN0IGNoYXIgKlNEU19OT0lOSVQ7Ci0rZXh0ZXJuIGNvbnN0IGNoYXIgKlNEU19OT0lOSVQ7Ci0gCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzdGRhcmcuaD4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yZWRpcy9yZWRpc181LjAuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yZWRpcy9yZWRpc181LjAuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkxNTc1NS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXNfNS4wLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi1TVU1NQVJZID0gIlJlZGlzIGtleS12YWx1ZSBzdG9yZSIKLURFU0NSSVBUSU9OID0gIlJlZGlzIGlzIGFuIG9wZW4gc291cmNlLCBhZHZhbmNlZCBrZXktdmFsdWUgc3RvcmUuIgotSE9NRVBBR0UgPSAiaHR0cDovL3JlZGlzLmlvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYzAxYjQ5ZmVkNGRmMWE3OTg0MzY4OGZhM2Y3YjlkNiIKLURFUEVORFMgPSAicmVhZGxpbmUgbHVhIG5jdXJzZXMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLnJlZGlzLmlvL3JlbGVhc2VzLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9yZWRpcy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2luaXQtcmVkaXMtc2VydmVyIFwKLSAgICAgICAgICAgZmlsZTovL3JlZGlzLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vaGlyZWRpcy11c2UtZGVmYXVsdC1DQy1pZi1pdC1pcy1zZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbHVhLXVwZGF0ZS1NYWtlZmlsZS10by11c2UtZW52aXJvbm1lbnQtYnVpbGQtc2V0dGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vZS11c2UtbGliYy1tYWxsb2MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zcmMtRG8tbm90LXJlc2V0LUZJTkFMX0xJQlMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1NYXJrLWV4dGVybi1kZWZpbml0aW9uLW9mLVNEU19OT0lOSVQtaW4tc2RzLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vR05VX1NPVVJDRS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjYxMmVjNDMwNzVhODg4YmM4YjhhN2RkOGNjYjJlMGY3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYxZGI3NGVhYmY2ODAxZjA1N2ZkMjRiNTkwMjMyZjJmMzM3ZDQyMjI4MGZkMTk0ODZlY2EwM2JlODdkM2E4MmIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtcmMuZCBzeXN0ZW1kIHVzZXJhZGQKLQotRklOQUxfTElCU194ODZfdG9vbGNoYWluLWNsYW5nID0gIi1sYXRvbWljIgotRklOQUxfTElCU19taXBzID0gIi1sYXRvbWljIgotRklOQUxfTElCU19hcm0gPSAiLWxhdG9taWMiCi1GSU5BTF9MSUJTX3Bvd2VycGMgPSAiLWxhdG9taWMiCi0KLWV4cG9ydCBGSU5BTF9MSUJTCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICA9ICItLXN5c3RlbSAtLWhvbWUtZGlyIC92YXIvbGliL3JlZGlzIC1nIHJlZGlzIC0tc2hlbGwgL2Jpbi9mYWxzZSByZWRpcyIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIHJlZGlzIgotCi1SRURJU19PTl9TWVNURU1EID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9IgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgKGNkIGRlcHMgJiYgb2VfcnVubWFrZSBoaXJlZGlzIGx1YSBsaW5lbm9pc2UpCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgZXhwb3J0IFBSRUZJWD0ke0R9LyR7cHJlZml4fQotICAgIG9lX3J1bm1ha2UgaW5zdGFsbAotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L3JlZGlzCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcmVkaXMuY29uZiAke0R9LyR7c3lzY29uZmRpcn0vcmVkaXMvcmVkaXMuY29uZgotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQtcmVkaXMtc2VydmVyICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvcmVkaXMtc2VydmVyCi0gICAgaW5zdGFsbCAtZCAke0R9L3Zhci9saWIvcmVkaXMvCi0gICAgY2hvd24gcmVkaXMucmVkaXMgJHtEfS92YXIvbGliL3JlZGlzLwotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3JlZGlzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KLSAgICBzZWQgLWkgJ3MhL3Vzci9zYmluLyEke3NiaW5kaXJ9LyFnJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9yZWRpcy5zZXJ2aWNlCi0KLSAgICBpZiBbICIke1JFRElTX09OX1NZU1RFTUR9IiA9IHRydWUgXTsgdGhlbgotICAgICAgICBzZWQgLWkgJ3MhZGFlbW9uaXplIHllcyEjIGRhZW1vbml6ZSB5ZXMhJyAke0R9LyR7c3lzY29uZmRpcn0vcmVkaXMvcmVkaXMuY29uZgotICAgIGZpCi19Ci0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3JlZGlzL3JlZGlzLmNvbmYiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJyZWRpcy1zZXJ2ZXIiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA4NyIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJlZGlzLnNlcnZpY2UiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXNfNS4wLjkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXNfNS4wLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA0MjkzMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yZWRpcy9yZWRpc181LjAuOS5iYgpAQCAtMCwwICsxLDY2IEBACitTVU1NQVJZID0gIlJlZGlzIGtleS12YWx1ZSBzdG9yZSIKK0RFU0NSSVBUSU9OID0gIlJlZGlzIGlzIGFuIG9wZW4gc291cmNlLCBhZHZhbmNlZCBrZXktdmFsdWUgc3RvcmUuIgorSE9NRVBBR0UgPSAiaHR0cDovL3JlZGlzLmlvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYzAxYjQ5ZmVkNGRmMWE3OTg0MzY4OGZhM2Y3YjlkNiIKK0RFUEVORFMgPSAicmVhZGxpbmUgbHVhIG5jdXJzZXMiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLnJlZGlzLmlvL3JlbGVhc2VzLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9yZWRpcy5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2luaXQtcmVkaXMtc2VydmVyIFwKKyAgICAgICAgICAgZmlsZTovL3JlZGlzLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vaGlyZWRpcy11c2UtZGVmYXVsdC1DQy1pZi1pdC1pcy1zZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbHVhLXVwZGF0ZS1NYWtlZmlsZS10by11c2UtZW52aXJvbm1lbnQtYnVpbGQtc2V0dGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vZS11c2UtbGliYy1tYWxsb2MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zcmMtRG8tbm90LXJlc2V0LUZJTkFMX0xJQlMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vR05VX1NPVVJDRS5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImM5NDUyM2M5ZjRlZTY2MjAyN2RkZjkwNTc1ZDBlMDU4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUzZDBhZTE2NGNkMzM1MzZjM2Q0YjcyMGFlOWExMjhlYTYxNjZlYmYwNGZmMWFkZDNiODVmMTI0MjA5MGNiODUiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtcmMuZCBzeXN0ZW1kIHVzZXJhZGQKKworRklOQUxfTElCU194ODZfdG9vbGNoYWluLWNsYW5nID0gIi1sYXRvbWljIgorRklOQUxfTElCU19taXBzID0gIi1sYXRvbWljIgorRklOQUxfTElCU19hcm0gPSAiLWxhdG9taWMiCitGSU5BTF9MSUJTX3Bvd2VycGMgPSAiLWxhdG9taWMiCisKK2V4cG9ydCBGSU5BTF9MSUJTCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59ICA9ICItLXN5c3RlbSAtLWhvbWUtZGlyIC92YXIvbGliL3JlZGlzIC1nIHJlZGlzIC0tc2hlbGwgL2Jpbi9mYWxzZSByZWRpcyIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIHJlZGlzIgorCitSRURJU19PTl9TWVNURU1EID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9IgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgKGNkIGRlcHMgJiYgb2VfcnVubWFrZSBoaXJlZGlzIGx1YSBsaW5lbm9pc2UpCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgZXhwb3J0IFBSRUZJWD0ke0R9LyR7cHJlZml4fQorICAgIG9lX3J1bm1ha2UgaW5zdGFsbAorICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L3JlZGlzCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcmVkaXMuY29uZiAke0R9LyR7c3lzY29uZmRpcn0vcmVkaXMvcmVkaXMuY29uZgorICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQtcmVkaXMtc2VydmVyICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvcmVkaXMtc2VydmVyCisgICAgaW5zdGFsbCAtZCAke0R9L3Zhci9saWIvcmVkaXMvCisgICAgY2hvd24gcmVkaXMucmVkaXMgJHtEfS92YXIvbGliL3JlZGlzLworCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3JlZGlzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKyAgICBzZWQgLWkgJ3MhL3Vzci9zYmluLyEke3NiaW5kaXJ9LyFnJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9yZWRpcy5zZXJ2aWNlCisKKyAgICBpZiBbICIke1JFRElTX09OX1NZU1RFTUR9IiA9IHRydWUgXTsgdGhlbgorICAgICAgICBzZWQgLWkgJ3MhZGFlbW9uaXplIHllcyEjIGRhZW1vbml6ZSB5ZXMhJyAke0R9LyR7c3lzY29uZmRpcn0vcmVkaXMvcmVkaXMuY29uZgorICAgIGZpCit9CisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3JlZGlzL3JlZGlzLmNvbmYiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJyZWRpcy1zZXJ2ZXIiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA4NyIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJlZGlzLnNlcnZpY2UiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnJkdG9vbC9ycmR0b29sXzEuNy4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JyZHRvb2wvcnJkdG9vbF8xLjcuMi5iYgppbmRleCBiMzljZWRhLi41NjYyZTYzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnJkdG9vbC9ycmR0b29sXzEuNy4yLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ycmR0b29sL3JyZHRvb2xfMS43LjIuYmIKQEAgLTQsNyArNCw3IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0zOWRmODRjZmQ4YTVlMThiZjk4OGYyNzdmNzk0NjY3NiIKIAotREVQRU5EUyA9ICJsaWJwbmcgemxpYiBjYWlybyBwYW5nbyBnbGliLTIuMCBsaWJ4bWwyIGdyb2ZmLW5hdGl2ZSBweXRob24tc2V0dXB0b29scy1uYXRpdmUiCitERVBFTkRTID0gImxpYnBuZyB6bGliIGNhaXJvIHBhbmdvIGdsaWItMi4wIGxpYnhtbDIgZ3JvZmYtbmF0aXZlIHB5dGhvbjMtc2V0dXB0b29scy1uYXRpdmUiCiAKIFNSQ1JFViA9ICI1NmE4M2Y0ZjUyZTY3NDVjZDQzNTJmOWVlMDA4YmUzMTgzYTZkZWRmIgogUFYgPSAiMS43LjIiCkBAIC0xNSw3ICsxNSw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWluaGVyaXQgY3BhbiBhdXRvdG9vbHMtYnJva2Vuc2VwIGdldHRleHQgcHl0aG9ubmF0aXZlIHB5dGhvbi1kaXIgc3lzdGVtZAoraW5oZXJpdCBjcGFuIGF1dG90b29scy1icm9rZW5zZXAgZ2V0dGV4dCBweXRob24zbmF0aXZlIHB5dGhvbjMtZGlyIHN5c3RlbWQKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCiAKQEAgLTI0LDcgKzI0LDcgQEAKIAogRVhUUkFfQVVUT1JFQ09ORiA9ICItSSBtNCAtLWV4Y2x1ZGU9YXV0b3BvaW50IgogCi1QQUNLQUdFQ09ORklHID8/PSAicHl0aG9uIHBlcmwgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKK1BBQ0tBR0VDT05GSUcgPz89ICJwZXJsICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCiAKIFBBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLWVuYWJsZS1weXRob249eWVzIFwKIGFtX2N2X3B5dGhvbl9weXRob25kaXI9JHtTVEFHSU5HX0xJQkRJUn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L3NpdGUtcGFja2FnZXMgXApAQCAtMTIzLDcgKzEyMyw3IEBACiBERVNDUklQVElPTl8ke1BOfS1weXRob24gPSBcCiAiVGhlICR7UE59LXB5dGhvbiBwYWNrYWdlIGluY2x1ZGVzIFJSRHRvb2wgYmluZGluZ3MgZm9yIHB5dGhvbi4iCiBGSUxFU18ke1BOfS1weXRob24gPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS9zaXRlLXBhY2thZ2VzLyoiCi1SREVQRU5EU18ke1BOfS1weXRob24gPSAicHl0aG9uIgorUkRFUEVORFNfJHtQTn0tcHl0aG9uID0gInB5dGhvbjMiCiAKIEZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3BlcmwvdmVuZG9yX3BlcmwvKi9hdXRvL1JSRHMvLmRlYnVnIFwKICAgICAke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L3NpdGUtcGFja2FnZXMvLmRlYnVnIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvbGlicmVscF8xLjQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL2xpYnJlbHBfMS40LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2YzYzYTcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvbGlicmVscF8xLjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiQSByZWxpYWJsZSBsb2dnaW5nIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcnN5c2xvZy9saWJyZWxwIgotCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWZiOWMxMGVkOWZkNjgyNjc1NzYxNTQ1NWNhODkzYTkiCi0KLURFUEVORFMgPSAiZ21wIG5ldHRsZSBsaWJpZG4gemxpYiBnbnV0bHMgb3BlbnNzbCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JzeXNsb2cvbGlicmVscC5naXQ7cHJvdG9jb2w9aHR0cHMgXAotIgotCi1TUkNSRVYgPSAiZTk2NDQzZGRhM2MwODBmYTk5MWRlY2VjMjZiYzRhYzk4ZDI0YjlhMiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUNQUEZMQUdTICs9ICItV25vLWVycm9yIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvbGlicmVscF8xLjUuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL2xpYnJlbHBfMS41LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ2NjMxNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL2xpYnJlbHBfMS41LjAuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJBIHJlbGlhYmxlIGxvZ2dpbmcgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9yc3lzbG9nL2xpYnJlbHAiCisKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZmI5YzEwZWQ5ZmQ2ODI2NzU3NjE1NDU1Y2E4OTNhOSIKKworREVQRU5EUyA9ICJnbXAgbmV0dGxlIGxpYmlkbiB6bGliIGdudXRscyBvcGVuc3NsIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnN5c2xvZy9saWJyZWxwLmdpdDtwcm90b2NvbD1odHRwcyBcCisiCisKK1NSQ1JFViA9ICIwYmViMjI1OGUxMmU0MTMxZGMzMWUyNjEwNzhlYTUzZDE4Zjc4N2Q3IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworQ1BQRkxBR1MgKz0gIi1Xbm8tZXJyb3IiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvcnVuLXB0ZXN0CmluZGV4IDM3NzBhNzUuLmFhNjk4ZDggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvcnVuLXB0ZXN0CisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvcnVuLXB0ZXN0CkBAIC0xLDMgKzEsOCBAQAogIyEvYmluL3NoCiAjCitzZXQgLWUKK3NldCAtbyBwaXBlZmFpbAorCitTQ1JJUFRQQVRIPSIkKCBjZCAiJChkaXJuYW1lICIkMCIpIiA7IHB3ZCAtUCApIgorY2QgJHtTQ1JJUFRQQVRIfQogbWFrZSAtQyB0ZXN0cyAtayBjaGVjay1URVNUUwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZ184LjE5MTEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2dfOC4xOTExLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyYWMwM2UuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZ184LjE5MTEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5MCArMCwwIEBACi1TVU1NQVJZID0gIlJzeXNsb2cgaXMgYW4gZW5oYW5jZWQgbXVsdGktdGhyZWFkZWQgc3lzbG9nZCIKLURFU0NSSVBUSU9OID0gIlwKLVJzeXNsb2cgaXMgYW4gZW5oYW5jZWQgc3lzbG9nZCBzdXBwb3J0aW5nLCBhbW9uZyBvdGhlcnMsIE15U1FMLFwKLSBQb3N0Z3JlU1FMLCBmYWlsb3ZlciBsb2cgZGVzdGluYXRpb25zLCBzeXNsb2cvdGNwLCBmaW5lIGdyYWluXAotIG91dHB1dCBmb3JtYXQgY29udHJvbCwgaGlnaCBwcmVjaXNpb24gdGltZXN0YW1wcywgcXVldWVkIG9wZXJhdGlvbnNcCi0gYW5kIHRoZSBhYmlsaXR5IHRvIGZpbHRlciBvbiBhbnkgbWVzc2FnZSBwYXJ0LiBJdCBpcyBxdWl0ZVwKLSBjb21wYXRpYmxlIHRvIHN0b2NrIHN5c2tsb2dkIGFuZCBjYW4gYmUgdXNlZCBhcyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuXAotIEl0cyBhZHZhbmNlZCBmZWF0dXJlcyBtYWtlIGl0IHN1aXRhYmxlIGZvciBlbnRlcnByaXNlLWNsYXNzLFwKLSBlbmNyeXB0aW9uIHByb3RlY3RlZCBzeXNsb2cgcmVsYXkgY2hhaW5zIHdoaWxlIGF0IHRoZSBzYW1lIHRpbWUgYmVpbmdcCi0gdmVyeSBlYXN5IHRvIHNldHVwIGZvciB0aGUgbm92aWNlIHVzZXIuIgotCi1ERVBFTkRTID0gInpsaWIgbGliZXN0ciBsaWJmYXN0anNvbiBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUgbGlibG9nZ2luZyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucnN5c2xvZy5jb20vIgotTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyAmIEFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01MWQ5NjM1ZTY0NmZiNzVlMWI3NGMwNzRmNzg4ZTk3MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9Y2I3OTAzZjFlNWMzOWFlODM4MjA5ZTEzMGRjYTI3MGEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5BU0wyMDttZDU9MDUyZjhhMDkyMDY2MTVhYjA3MzI2ZmY4Y2UyZDlkMzJcCi0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5yc3lzbG9nLmNvbS9kb3dubG9hZC9maWxlcy9kb3dubG9hZC9yc3lzbG9nLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vaW5pdHNjcmlwdCBcCi0gICAgICAgICAgIGZpbGU6Ly9yc3lzbG9nLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vcnN5c2xvZy5sb2dyb3RhdGUgXAotICAgICAgICAgICBmaWxlOi8vdXNlLXBrZ2NvbmZpZy10by1jaGVjay1saWJnY3J5cHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKLQotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCi0gICAgZmlsZTovLzAwMDEtSW5jbHVkZS1zeXMtdGltZS1oLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE1NGUzM2ZlYjU4NzIxNmYyOTU1MDUwYTgzMDExMDRjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUxZjQ3NzZiMWM2MmFkNzIyMGY0ZDYyNGE4OWE5NmIwYzNkNDczODAwNjg5OTM1NmVhYWVmMGYxZjkxZWUxMDQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcnN5c2xvZy9yc3lzbG9nL3JlbGVhc2VzIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZCB1cGRhdGUtcmMuZCBwdGVzdAotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1nZW5lcmF0ZS1tYW4tcGFnZXMgYXBfY3ZfYXRvbWljX2J1aWx0aW5zPXllcyIKLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtaW1maWxlLXRlc3RzIgotRVhUUkFfT0VDT05GX3JlbW92ZV9taXBzYXJjaCA9ICJhcF9jdl9hdG9taWNfYnVpbHRpbnM9eWVzIgotRVhUUkFfT0VDT05GX3JlbW92ZV9wb3dlcnBjID0gImFwX2N2X2F0b21pY19idWlsdGlucz15ZXMiCi0KLSMgZmlyc3QgbGluZSBpcyBkZWZhdWx0IHllcyBpbiBjb25maWd1cmUKLVBBQ0tBR0VDT05GSUcgPz89ICIgXAotICAgIHJzeXNsb2dkIHJzeXNsb2dydCBrbG9nIGluZXQgcmVnZXhwIHV1aWQgbGliZ2NyeXB0IFwKLSAgICBmbWh0dHAgaW1kaWFnIGdudXRscyBpbWZpbGUgXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3NubXAgc3lzdGVtZCcsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICd0ZXN0YmVuY2ggcmVscCAke1ZBTEdSSU5EfScsICcnLCBkKX0gXAotIgotCi0jIGRlZmF1bHQgeWVzIGluIGNvbmZpZ3VyZQotUEFDS0FHRUNPTkZJR1tyZWxwXSA9ICItLWVuYWJsZS1yZWxwLC0tZGlzYWJsZS1yZWxwLGxpYnJlbHAsIgotUEFDS0FHRUNPTkZJR1tyc3lzbG9nZF0gPSAiLS1lbmFibGUtcnN5c2xvZ2QsLS1kaXNhYmxlLXJzeXNsb2dkLCwiCi1QQUNLQUdFQ09ORklHW3JzeXNsb2dydF0gPSAiLS1lbmFibGUtcnN5c2xvZ3J0LC0tZGlzYWJsZS1yc3lzbG9ncnQsLCIKLVBBQ0tBR0VDT05GSUdbZm1odHRwXSA9ICItLWVuYWJsZS1mbWh0dHAsLS1kaXNhYmxlLWZtaHR0cCxjdXJsLCIKLVBBQ0tBR0VDT05GSUdbaW5ldF0gPSAiLS1lbmFibGUtaW5ldCwtLWRpc2FibGUtaW5ldCwsIgotUEFDS0FHRUNPTkZJR1trbG9nXSA9ICItLWVuYWJsZS1rbG9nLC0tZGlzYWJsZS1rbG9nLCwiCi1QQUNLQUdFQ09ORklHW3JlZ2V4cF0gPSAiLS1lbmFibGUtcmVnZXhwLC0tZGlzYWJsZS1yZWdleHAsLCIKLVBBQ0tBR0VDT05GSUdbdXVpZF0gPSAiLS1lbmFibGUtdXVpZCwtLWRpc2FibGUtdXVpZCx1dGlsLWxpbnV4LCIKLVBBQ0tBR0VDT05GSUdbbGliZ2NyeXB0XSA9ICItLWVuYWJsZS1saWJnY3J5cHQsLS1kaXNhYmxlLWxpYmdjcnlwdCxsaWJnY3J5cHQsIgotUEFDS0FHRUNPTkZJR1t0ZXN0YmVuY2hdID0gIi0tZW5hYmxlLXRlc3RiZW5jaCAtLWVuYWJsZS1vbXN0ZG91dCwtLWRpc2FibGUtdGVzdGJlbmNoIC0tZGlzYWJsZS1vbXN0ZG91dCwsIgotCi0jIGRlZmF1bHQgbm8gaW4gY29uZmlndXJlCi1QQUNLQUdFQ09ORklHW2RlYnVnXSA9ICItLWVuYWJsZS1kZWJ1ZywtLWRpc2FibGUtZGVidWcsLCIKLVBBQ0tBR0VDT05GSUdbaW1kaWFnXSA9ICItLWVuYWJsZS1pbWRpYWcsLS1kaXNhYmxlLWltZGlhZywsIgotUEFDS0FHRUNPTkZJR1tpbWZpbGVdID0gIi0tZW5hYmxlLWltZmlsZSwtLWRpc2FibGUtaW1maWxlLCwiCi1QQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAsbmV0LXNubXAsIgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0tZW5hYmxlLWdudXRscywtLWRpc2FibGUtZ251dGxzLGdudXRscywiCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLywtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsc3lzdGVtZCwiCi1QQUNLQUdFQ09ORklHW2ltam91cm5hbF0gPSAiLS1lbmFibGUtaW1qb3VybmFsLC0tZGlzYWJsZS1pbWpvdXJuYWwsIgotUEFDS0FHRUNPTkZJR1ttbWpzb25wYXJzZV0gPSAiLS1lbmFibGUtbW1qc29ucGFyc2UsLS1kaXNhYmxlLW1tanNvbnBhcnNlLCIKLVBBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0tZW5hYmxlLW15c3FsLC0tZGlzYWJsZS1teXNxbCxteXNxbDUsIgotUEFDS0FHRUNPTkZJR1twb3N0Z3Jlc3FsXSA9ICItLWVuYWJsZS1wZ3NxbCwtLWRpc2FibGUtcGdzcWwscG9zdGdyZXNxbCwiCi1QQUNLQUdFQ09ORklHW2xpYmRiaV0gPSAiLS1lbmFibGUtbGliZGJpLC0tZGlzYWJsZS1saWJkYmksbGliZGJpLCIKLVBBQ0tBR0VDT05GSUdbbWFpbF0gPSAiLS1lbmFibGUtbWFpbCwtLWRpc2FibGUtbWFpbCwsIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS1lbmFibGUtdmFsZ3JpbmQsLS1kaXNhYmxlLXZhbGdyaW5kLHZhbGdyaW5kLCIKLQotVEVTVERJUiA9ICJ0ZXN0cyIKLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgZWNobyAnYnVpbGR0ZXN0LVRFU1RTOiAkKGNoZWNrX1BST0dSQU1TKScgPj4gJHtURVNURElSfS9NYWtlZmlsZQotICAgIG9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBidWlsZHRlc3QtVEVTVFMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLSAgICAjIGluc3RhbGwgdGhlIHRlc3RzCi0gICAgY3AgLXJmICR7U30vJHtURVNURElSfSAke0R9JHtQVEVTVF9QQVRIfQotICAgIGNwIC1yZiAke0J9LyR7VEVTVERJUn0gJHtEfSR7UFRFU1RfUEFUSH0KLQotICAgICMgZG8gTk9UIG5lZWQgdG8gcmVidWlsZCBNYWtlZmlsZSBpdHNlbGYKLSAgICBzZWQgLWkgJ3MvXk1ha2VmaWxlOi4qJC9NYWtlZmlsZTovJyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCi0gICAgIyBkbyBOT1QgbmVlZCB0byByZWJ1aWxkICQoY2hlY2tfUFJPR1JBTVMpCi0gICAgc2VkIC1pICdzL15jaGVjay1URVNUUzouKiQvY2hlY2stVEVTVFM6LycgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQotCi0gICAgIyBmaXggdGhlIHNyY2RpciwgdG9wX3NyY2RpcgotICAgIHNlZCAtaSAncyxeXChzcmNkaXIgPSBcKS4qLFwxJHtQVEVTVF9QQVRIfS90ZXN0cywnICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKLSAgICBzZWQgLWkgJ3MsXlwodG9wX3NyY2RpciA9IFwpLiosXDEke1BURVNUX1BBVEh9L3Rlc3RzLCcgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQotICAgICMgZml4IHRoZSBhYnNfdG9wX2J1aWxkZGlyCi0gICAgc2VkIC1pICdzLF5cKGFic190b3BfYnVpbGRkaXIgPSBcKS4qLFwxJHtQVEVTVF9QQVRIfS8sJyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCi0KLSAgICAjIHZhbGdyaW5kIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggYXJtIGFuZCBtaXBzLAotICAgICMgc28gcmVtb3ZlIHJlbGF0ZWQgdGVzdCBjYXNlcyBpZiB0aGVyZSBpcyBubyB2YWxncmluZC4KLSAgICBpZiBbIHgke1ZBTEdSSU5EfSA9IHggXTsgdGhlbgotICAgICAgICBzZWQgLWkgJy91ZHAtbXNncmVkdWMtL2QnICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKLSAgICBmaQotCi0gICAgIyBpbnN0YWxsIHRlc3QtZHJpdmVyCi0gICAgaW5zdGFsbCAtbSA2NDQgJHtTfS90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfQotCi0gICAgIyBpbnN0YWxsIG5lY2Vzc2FyeSBsaW5rcwotICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdG9vbHMKLSAgICBsbiAtc2YgJHtzYmluZGlyfS9yc3lzbG9nZCAke0R9JHtQVEVTVF9QQVRIfS90b29scy9yc3lzbG9nZAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9ydW50aW1lCi0gICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9ydW50aW1lLy5saWJzCi0gICAgKAotICAgICAgICBjZCAke0R9LyR7bGliZGlyfS9yc3lzbG9nCi0gICAgICAgIGFsbHNvPSIqLnNvIgotICAgICAgICBmb3IgaSBpbiAkYWxsc287IGRvCi0gICAgICAgICAgICBsbiAtc2YgJHtsaWJkaXJ9L3JzeXNsb2cvJGkgJHtEfSR7UFRFU1RfUEFUSH0vcnVudGltZS8ubGlicy8kaQotICAgICAgICBkb25lCi0gICAgKQotCi0gICAgIyBmaXggdGhlIG1vZHVsZSBsb2FkIHBhdGggd2l0aCBydW50aW1lLy5saWJzCi0gICAgZmluZCAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9IC1uYW1lICIqLmNvbmYiIC1vIC1uYW1lICIqLnNoIiAtbyAtbmFtZSAiKi5jIiB8IHhhcmdzIFwKLSAgICAgICAgc2VkIC1pIC1lICdzOi4uL3BsdWdpbnMvLiovLmxpYnMvOi4uL3J1bnRpbWUvLmxpYnMvOmcnCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCIKLSAgICBpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuZCIKLSAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2luaXRzY3JpcHQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c2xvZwotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vcnN5c2xvZy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3JzeXNsb2cuY29uZgotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vcnN5c2xvZy5sb2dyb3RhdGUgJHtEfSR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmQvbG9ncm90YXRlLnJzeXNsb2cKLSAgICBzZWQgLWkgLWUgInMjQEJJTkRJUkAjJHtiaW5kaXJ9I2ciICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5kL2xvZ3JvdGF0ZS5yc3lzbG9nCi0KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdpbWpvdXJuYWwnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kIDA3NTUgJHtEfSR7c3lzY29uZmRpcn0vcnN5c2xvZy5kCi0gICAgICAgIGVjaG8gJyRNb2RMb2FkIGltam91cm5hbCcgPj4gJHtEfSR7c3lzY29uZmRpcn0vcnN5c2xvZy5kL2ltam91cm5hbC5jb25mCi0gICAgZmkKLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtbWpzb25wYXJzZScsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgMDc1NSAke0R9JHtzeXNjb25mZGlyfS9yc3lzbG9nLmQKLSAgICAgICAgZWNobyAnJE1vZExvYWQgbW1qc29ucGFyc2UnID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3JzeXNsb2cuZC9tbWpzb25wYXJzZS5jb25mCi0gICAgZmkKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7YmluZGlyfSIKLQotSU5JVFNDUklQVF9OQU1FID0gInN5c2xvZyIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9yc3lzbG9nLmNvbmYiCi0KLVJDT05GTElDVFNfJHtQTn0gPSAiYnVzeWJveC1zeXNsb2cgc3lza2xvZ2Qgc3lzbG9nLW5nIgotCi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QlBOfS5zZXJ2aWNlIgotCi1SREVQRU5EU18ke1BOfSArPSAibG9ncm90YXRlIgotCi0jIGZvciByc3lzbG9nLXB0ZXN0Ci1WQUxHUklORCA9ICJ2YWxncmluZCIKLQotIyB2YWxncmluZCBzdXBwb3J0cyBhcm12NyBhbmQgYWJvdmUKLVZBTEdSSU5EX2FybXY0ID0gJycKLVZBTEdSSU5EX2FybXY1ID0gJycKLVZBTEdSSU5EX2FybXY2ID0gJycKLQotIyBYMzIgaXNuJ3Qgc3VwcG9ydGVkIGJ5IHZhbGdyaW5kIGF0IHRoaXMgdGltZQotVkFMR1JJTkRfbGludXgtZ251eDMyID0gJycKLVZBTEdSSU5EX2xpbnV4LW11c2x4MzIgPSAnJwotCi0jIERpc2FibGUgZm9yIHNvbWUgTUlQUyB2YXJpYW50cwotVkFMR1JJTkRfbWlwc2FyY2hyNiA9ICcnCi1WQUxHUklORF9saW51eC1nbnVuMzIgPSAnJwotCi0jIERpc2FibGUgZm9yIHBvd2VycGM2NCB3aXRoIG11c2wKLVZBTEdSSU5EX2xpYmMtbXVzbF9wb3dlcnBjNjQgPSAnJwotCi0jIFJJU0MtViBzdXBwb3J0IGZvciB2YWxncmluZCBpcyBub3QgdGhlcmUgeWV0Ci1WQUxHUklORF9yaXNjdjY0ID0gIiIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIlwKLSAgbWFrZSBkaWZmdXRpbHMgZ3ppcCBiYXNoIGdhd2sgY29yZXV0aWxzIHByb2NwcyBcCi0gIGxpYmdjYyBweXRob24tY29yZSBweXRob24taW8gXAotICAiCi1SUkVDT01NRU5EU18ke1BOfS1wdGVzdCArPSAiJHtUQ0xJQkN9LWRiZyAke1ZBTEdSSU5EfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2dfOC4yMDAyLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nXzguMjAwMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MDUxNDUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nXzguMjAwMi4wLmJiCkBAIC0wLDAgKzEsMjAwIEBACitTVU1NQVJZID0gIlJzeXNsb2cgaXMgYW4gZW5oYW5jZWQgbXVsdGktdGhyZWFkZWQgc3lzbG9nZCIKK0RFU0NSSVBUSU9OID0gIlwKK1JzeXNsb2cgaXMgYW4gZW5oYW5jZWQgc3lzbG9nZCBzdXBwb3J0aW5nLCBhbW9uZyBvdGhlcnMsIE15U1FMLFwKKyBQb3N0Z3JlU1FMLCBmYWlsb3ZlciBsb2cgZGVzdGluYXRpb25zLCBzeXNsb2cvdGNwLCBmaW5lIGdyYWluXAorIG91dHB1dCBmb3JtYXQgY29udHJvbCwgaGlnaCBwcmVjaXNpb24gdGltZXN0YW1wcywgcXVldWVkIG9wZXJhdGlvbnNcCisgYW5kIHRoZSBhYmlsaXR5IHRvIGZpbHRlciBvbiBhbnkgbWVzc2FnZSBwYXJ0LiBJdCBpcyBxdWl0ZVwKKyBjb21wYXRpYmxlIHRvIHN0b2NrIHN5c2tsb2dkIGFuZCBjYW4gYmUgdXNlZCBhcyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuXAorIEl0cyBhZHZhbmNlZCBmZWF0dXJlcyBtYWtlIGl0IHN1aXRhYmxlIGZvciBlbnRlcnByaXNlLWNsYXNzLFwKKyBlbmNyeXB0aW9uIHByb3RlY3RlZCBzeXNsb2cgcmVsYXkgY2hhaW5zIHdoaWxlIGF0IHRoZSBzYW1lIHRpbWUgYmVpbmdcCisgdmVyeSBlYXN5IHRvIHNldHVwIGZvciB0aGUgbm92aWNlIHVzZXIuIgorCitERVBFTkRTID0gInpsaWIgbGliZXN0ciBsaWJmYXN0anNvbiBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUgbGlibG9nZ2luZyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucnN5c2xvZy5jb20vIgorTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyAmIEFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01MWQ5NjM1ZTY0NmZiNzVlMWI3NGMwNzRmNzg4ZTk3MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9Y2I3OTAzZjFlNWMzOWFlODM4MjA5ZTEzMGRjYTI3MGEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5BU0wyMDttZDU9MDUyZjhhMDkyMDY2MTVhYjA3MzI2ZmY4Y2UyZDlkMzJcCisiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5yc3lzbG9nLmNvbS9kb3dubG9hZC9maWxlcy9kb3dubG9hZC9yc3lzbG9nLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vaW5pdHNjcmlwdCBcCisgICAgICAgICAgIGZpbGU6Ly9yc3lzbG9nLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vcnN5c2xvZy5sb2dyb3RhdGUgXAorICAgICAgICAgICBmaWxlOi8vdXNlLXBrZ2NvbmZpZy10by1jaGVjay1saWJnY3J5cHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCisgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1zeXMtdGltZS1oLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImZiZTZkMTgyMDUxNzBlMjJiYWQ0NzA5NTRkMGRjODc0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZlODZjMTRkODYwZGExMjAyYzc2NjE2ZmVhYzA1MzllYTVhNDBhNGFkMTgyZDc0YjdkNmQyNDE5Y2MyMzgxZjgiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcnN5c2xvZy9yc3lzbG9nL3JlbGVhc2VzIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZCB1cGRhdGUtcmMuZCBwdGVzdAorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1nZW5lcmF0ZS1tYW4tcGFnZXMgYXBfY3ZfYXRvbWljX2J1aWx0aW5zPXllcyIKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtaW1maWxlLXRlc3RzIgorRVhUUkFfT0VDT05GX3JlbW92ZV9taXBzYXJjaCA9ICJhcF9jdl9hdG9taWNfYnVpbHRpbnM9eWVzIgorRVhUUkFfT0VDT05GX3JlbW92ZV9wb3dlcnBjID0gImFwX2N2X2F0b21pY19idWlsdGlucz15ZXMiCisKKyMgZmlyc3QgbGluZSBpcyBkZWZhdWx0IHllcyBpbiBjb25maWd1cmUKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgIHJzeXNsb2dkIHJzeXNsb2dydCBrbG9nIGluZXQgcmVnZXhwIHV1aWQgbGliZ2NyeXB0IFwKKyAgICBmbWh0dHAgaW1kaWFnIGdudXRscyBpbWZpbGUgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3NubXAgc3lzdGVtZCcsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICd0ZXN0YmVuY2ggcmVscCAke1ZBTEdSSU5EfScsICcnLCBkKX0gXAorIgorCisjIGRlZmF1bHQgeWVzIGluIGNvbmZpZ3VyZQorUEFDS0FHRUNPTkZJR1tyZWxwXSA9ICItLWVuYWJsZS1yZWxwLC0tZGlzYWJsZS1yZWxwLGxpYnJlbHAsIgorUEFDS0FHRUNPTkZJR1tyc3lzbG9nZF0gPSAiLS1lbmFibGUtcnN5c2xvZ2QsLS1kaXNhYmxlLXJzeXNsb2dkLCwiCitQQUNLQUdFQ09ORklHW3JzeXNsb2dydF0gPSAiLS1lbmFibGUtcnN5c2xvZ3J0LC0tZGlzYWJsZS1yc3lzbG9ncnQsLCIKK1BBQ0tBR0VDT05GSUdbZm1odHRwXSA9ICItLWVuYWJsZS1mbWh0dHAsLS1kaXNhYmxlLWZtaHR0cCxjdXJsLCIKK1BBQ0tBR0VDT05GSUdbaW5ldF0gPSAiLS1lbmFibGUtaW5ldCwtLWRpc2FibGUtaW5ldCwsIgorUEFDS0FHRUNPTkZJR1trbG9nXSA9ICItLWVuYWJsZS1rbG9nLC0tZGlzYWJsZS1rbG9nLCwiCitQQUNLQUdFQ09ORklHW3JlZ2V4cF0gPSAiLS1lbmFibGUtcmVnZXhwLC0tZGlzYWJsZS1yZWdleHAsLCIKK1BBQ0tBR0VDT05GSUdbdXVpZF0gPSAiLS1lbmFibGUtdXVpZCwtLWRpc2FibGUtdXVpZCx1dGlsLWxpbnV4LCIKK1BBQ0tBR0VDT05GSUdbbGliZ2NyeXB0XSA9ICItLWVuYWJsZS1saWJnY3J5cHQsLS1kaXNhYmxlLWxpYmdjcnlwdCxsaWJnY3J5cHQsIgorUEFDS0FHRUNPTkZJR1t0ZXN0YmVuY2hdID0gIi0tZW5hYmxlLXRlc3RiZW5jaCAtLWVuYWJsZS1vbXN0ZG91dCwtLWRpc2FibGUtdGVzdGJlbmNoIC0tZGlzYWJsZS1vbXN0ZG91dCwsIgorCisjIGRlZmF1bHQgbm8gaW4gY29uZmlndXJlCitQQUNLQUdFQ09ORklHW2RlYnVnXSA9ICItLWVuYWJsZS1kZWJ1ZywtLWRpc2FibGUtZGVidWcsLCIKK1BBQ0tBR0VDT05GSUdbaW1kaWFnXSA9ICItLWVuYWJsZS1pbWRpYWcsLS1kaXNhYmxlLWltZGlhZywsIgorUEFDS0FHRUNPTkZJR1tpbWZpbGVdID0gIi0tZW5hYmxlLWltZmlsZSwtLWRpc2FibGUtaW1maWxlLCwiCitQQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAsbmV0LXNubXAsIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0tZW5hYmxlLWdudXRscywtLWRpc2FibGUtZ251dGxzLGdudXRscywiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLywtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsc3lzdGVtZCwiCitQQUNLQUdFQ09ORklHW2ltam91cm5hbF0gPSAiLS1lbmFibGUtaW1qb3VybmFsLC0tZGlzYWJsZS1pbWpvdXJuYWwsIgorUEFDS0FHRUNPTkZJR1ttbWpzb25wYXJzZV0gPSAiLS1lbmFibGUtbW1qc29ucGFyc2UsLS1kaXNhYmxlLW1tanNvbnBhcnNlLCIKK1BBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0tZW5hYmxlLW15c3FsLC0tZGlzYWJsZS1teXNxbCxteXNxbDUsIgorUEFDS0FHRUNPTkZJR1twb3N0Z3Jlc3FsXSA9ICItLWVuYWJsZS1wZ3NxbCwtLWRpc2FibGUtcGdzcWwscG9zdGdyZXNxbCwiCitQQUNLQUdFQ09ORklHW2xpYmRiaV0gPSAiLS1lbmFibGUtbGliZGJpLC0tZGlzYWJsZS1saWJkYmksbGliZGJpLCIKK1BBQ0tBR0VDT05GSUdbbWFpbF0gPSAiLS1lbmFibGUtbWFpbCwtLWRpc2FibGUtbWFpbCwsIgorUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS1lbmFibGUtdmFsZ3JpbmQsLS1kaXNhYmxlLXZhbGdyaW5kLHZhbGdyaW5kLCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgc2VkIC1pIC1lICdzfHB5dGhvbiB8cHl0aG9uMyB8ZycgJHtTfS90ZXN0cy8qLnNoCisgICAgc2VkIC1pIC1lICdzfC91c3IvYmluL2VudiBweXRob258L3Vzci9iaW4vZW52IHB5dGhvbjN8ZycgJHtTfS90ZXN0cy8qLnB5CisgICAgc2VkIC1pIC1lICdzfC91c3IvYmluL2VudiBweXRob258L3Vzci9iaW4vZW52IHB5dGhvbjN8ZycgJHtTfS90ZXN0cy90ZXN0c3VpdGVzLyoucHkKK30KKworVEVTVERJUiA9ICJ0ZXN0cyIKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgZWNobyAnYnVpbGR0ZXN0LVRFU1RTOiAkKGNoZWNrX1BST0dSQU1TKScgPj4gJHtURVNURElSfS9NYWtlZmlsZQorICAgIG9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBidWlsZHRlc3QtVEVTVFMKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICAjIGluc3RhbGwgdGhlIHRlc3RzCisgICAgY3AgLXJmICR7U30vJHtURVNURElSfSAke0R9JHtQVEVTVF9QQVRIfQorICAgIGNwIC1yZiAke0J9LyR7VEVTVERJUn0gJHtEfSR7UFRFU1RfUEFUSH0KKworICAgICMgZG8gTk9UIG5lZWQgdG8gcmVidWlsZCBNYWtlZmlsZSBpdHNlbGYKKyAgICBzZWQgLWkgJ3MvXk1ha2VmaWxlOi4qJC9NYWtlZmlsZTovJyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCisgICAgIyBkbyBOT1QgbmVlZCB0byByZWJ1aWxkICQoY2hlY2tfUFJPR1JBTVMpCisgICAgc2VkIC1pICdzL15jaGVjay1URVNUUzouKiQvY2hlY2stVEVTVFM6LycgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQorCisgICAgIyBmaXggdGhlIHNyY2RpciwgdG9wX3NyY2RpcgorICAgIHNlZCAtaSAncyxeXChzcmNkaXIgPSBcKS4qLFwxJHtQVEVTVF9QQVRIfS90ZXN0cywnICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKKyAgICBzZWQgLWkgJ3MsXlwodG9wX3NyY2RpciA9IFwpLiosXDEke1BURVNUX1BBVEh9L3Rlc3RzLCcgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQorICAgICMgZml4IHRoZSBhYnNfdG9wX2J1aWxkZGlyCisgICAgc2VkIC1pICdzLF5cKGFic190b3BfYnVpbGRkaXIgPSBcKS4qLFwxJHtQVEVTVF9QQVRIfS8sJyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCisKKyAgICAjIHZhbGdyaW5kIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggYXJtIGFuZCBtaXBzLAorICAgICMgc28gcmVtb3ZlIHJlbGF0ZWQgdGVzdCBjYXNlcyBpZiB0aGVyZSBpcyBubyB2YWxncmluZC4KKyAgICBpZiBbIHgke1ZBTEdSSU5EfSA9IHggXTsgdGhlbgorICAgICAgICBzZWQgLWkgJy91ZHAtbXNncmVkdWMtL2QnICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKKyAgICBmaQorCisgICAgIyBpbnN0YWxsIHRlc3QtZHJpdmVyCisgICAgaW5zdGFsbCAtbSA2NDQgJHtTfS90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfQorCisgICAgIyBpbnN0YWxsIG5lY2Vzc2FyeSBsaW5rcworICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdG9vbHMKKyAgICBsbiAtc2YgJHtzYmluZGlyfS9yc3lzbG9nZCAke0R9JHtQVEVTVF9QQVRIfS90b29scy9yc3lzbG9nZAorCisgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9ydW50aW1lCisgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9ydW50aW1lLy5saWJzCisgICAgKAorICAgICAgICBjZCAke0R9LyR7bGliZGlyfS9yc3lzbG9nCisgICAgICAgIGFsbHNvPSIqLnNvIgorICAgICAgICBmb3IgaSBpbiAkYWxsc287IGRvCisgICAgICAgICAgICBsbiAtc2YgJHtsaWJkaXJ9L3JzeXNsb2cvJGkgJHtEfSR7UFRFU1RfUEFUSH0vcnVudGltZS8ubGlicy8kaQorICAgICAgICBkb25lCisgICAgKQorCisgICAgIyBmaXggdGhlIG1vZHVsZSBsb2FkIHBhdGggd2l0aCBydW50aW1lLy5saWJzCisgICAgZmluZCAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9IC1uYW1lICIqLmNvbmYiIC1vIC1uYW1lICIqLnNoIiAtbyAtbmFtZSAiKi5jIiB8IHhhcmdzIFwKKyAgICAgICAgc2VkIC1pIC1lICdzOi4uL3BsdWdpbnMvLiovLmxpYnMvOi4uL3J1bnRpbWUvLmxpYnMvOmcnCisgICAgIyBmaXggdGhlIHB5dGhvbjMgcGF0aCBmb3IgdGVzdHMvc2V0LWVudmFyCisgICAgc2VkIC1pIC1lIHM6JHtIT1NUVE9PTFNfRElSfToke2JpbmRpcn06ZyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9zZXQtZW52dmFycworfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQiCisgICAgaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmQiCisgICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9pbml0c2NyaXB0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXNsb2cKKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3JzeXNsb2cuY29uZiAke0R9JHtzeXNjb25mZGlyfS9yc3lzbG9nLmNvbmYKKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3JzeXNsb2cubG9ncm90YXRlICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5kL2xvZ3JvdGF0ZS5yc3lzbG9nCisgICAgc2VkIC1pIC1lICJzI0BCSU5ESVJAIyR7YmluZGlyfSNnIiAke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuZC9sb2dyb3RhdGUucnN5c2xvZworCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnaW1qb3VybmFsJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAwNzU1ICR7RH0ke3N5c2NvbmZkaXJ9L3JzeXNsb2cuZAorICAgICAgICBlY2hvICckTW9kTG9hZCBpbWpvdXJuYWwnID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3JzeXNsb2cuZC9pbWpvdXJuYWwuY29uZgorICAgIGZpCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbW1qc29ucGFyc2UnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kIDA3NTUgJHtEfSR7c3lzY29uZmRpcn0vcnN5c2xvZy5kCisgICAgICAgIGVjaG8gJyRNb2RMb2FkIG1tanNvbnBhcnNlJyA+PiAke0R9JHtzeXNjb25mZGlyfS9yc3lzbG9nLmQvbW1qc29ucGFyc2UuY29uZgorICAgIGZpCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2JpbmRpcn0iCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJzeXNsb2ciCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vcnN5c2xvZy5jb25mIgorCitSQ09ORkxJQ1RTXyR7UE59ID0gImJ1c3lib3gtc3lzbG9nIHN5c2tsb2dkIHN5c2xvZy1uZyIKKworUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0JQTn0uc2VydmljZSIKKworUkRFUEVORFNfJHtQTn0gKz0gImxvZ3JvdGF0ZSIKKworIyBmb3IgcnN5c2xvZy1wdGVzdAorVkFMR1JJTkQgPSAidmFsZ3JpbmQiCisKKyMgdmFsZ3JpbmQgc3VwcG9ydHMgYXJtdjcgYW5kIGFib3ZlCitWQUxHUklORF9hcm12NCA9ICcnCitWQUxHUklORF9hcm12NSA9ICcnCitWQUxHUklORF9hcm12NiA9ICcnCisKKyMgWDMyIGlzbid0IHN1cHBvcnRlZCBieSB2YWxncmluZCBhdCB0aGlzIHRpbWUKK1ZBTEdSSU5EX2xpbnV4LWdudXgzMiA9ICcnCitWQUxHUklORF9saW51eC1tdXNseDMyID0gJycKKworIyBEaXNhYmxlIGZvciBzb21lIE1JUFMgdmFyaWFudHMKK1ZBTEdSSU5EX21pcHNhcmNocjYgPSAnJworVkFMR1JJTkRfbGludXgtZ251bjMyID0gJycKKworIyBEaXNhYmxlIGZvciBwb3dlcnBjNjQgd2l0aCBtdXNsCitWQUxHUklORF9saWJjLW11c2xfcG93ZXJwYzY0ID0gJycKK1ZBTEdSSU5EX2xpYmMtbXVzbF9wb3dlcnBjNjRsZSA9ICcnCisKKyMgUklTQy1WIHN1cHBvcnQgZm9yIHZhbGdyaW5kIGlzIG5vdCB0aGVyZSB5ZXQKK1ZBTEdSSU5EX3Jpc2N2NjQgPSAiIgorVkFMR1JJTkRfcmlzY3YzMiA9ICIiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJcCisgIG1ha2UgZGlmZnV0aWxzIGd6aXAgYmFzaCBnYXdrIGNvcmV1dGlscyBwcm9jcHMgXAorICBsaWJnY2MgcHl0aG9uMy1jb3JlIHB5dGhvbjMtaW8gXAorICAiCitSUkVDT01NRU5EU18ke1BOfS1wdGVzdCArPSAiJHtUQ0xJQkN9LWRiZyAke1ZBTEdSSU5EfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zaWdyb2svbGlic2lncm9rXzAuNS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NpZ3Jvay9saWJzaWdyb2tfMC41LjIuYmIKaW5kZXggMzVlNTlkNi4uZThjMzZhOCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NpZ3Jvay9saWJzaWdyb2tfMC41LjIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NpZ3Jvay9saWJzaWdyb2tfMC41LjIuYmIKQEAgLTE1LDcgKzE1LDcgQEAKIAogUEFDS0FHRUNPTkZJRyA/Pz0gInNlcmlhbHBvcnQgZnRkaSB1c2IiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIG1pbWUKIAogU1JDX1VSSSA9ICJodHRwOi8vc2lncm9rLm9yZy9kb3dubG9hZC9zb3VyY2UvbGlic2lncm9rL2xpYnNpZ3Jvay0ke1BWfS50YXIuZ3oiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zaWdyb2svc2lncm9rLWNsaV8wLjcuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zaWdyb2svc2lncm9rLWNsaV8wLjcuMS5iYgppbmRleCAyMjkzZjE0Li4zNjllMmY2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2lncm9rL3NpZ3Jvay1jbGlfMC43LjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NpZ3Jvay9zaWdyb2stY2xpXzAuNy4xLmJiCkBAIC0xMCw3ICsxMCw3IEBACiAKIFBBQ0tBR0VDT05GSUcgPz89ICJkZWNvZGUiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIG1pbWUteGRnCiAKIFNSQ19VUkkgPSAiaHR0cDovL3NpZ3Jvay5vcmcvZG93bmxvYWQvc291cmNlL3NpZ3Jvay1jbGkvc2lncm9rLWNsaS0ke1BWfS50YXIuZ3oiCiBTUkNfVVJJW21kNXN1bV0gPSAiM2Y0NWNlNjY0YmFkNTI5ZDhiM2Y3OGE2MWIwMTdkNzUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc25hcHB5L3NuYXBweV8xLjEuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zbmFwcHkvc25hcHB5XzEuMS43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjM3YzVmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zbmFwcHkvc25hcHB5XzEuMS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTQgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCi0jIFJlbGVhc2VkIHVuZGVyIHRoZSBCU0QtMy1DbGF1c2UgbGljZW5zZSAoc2VlIENPUFlJTkcuQlNELTMgZm9yIHRoZSB0ZXJtcykKLSMKLVNVTU1BUlkgPSAiQSBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJTbmFwcHkgaXMgYSBmYXN0IGRhdGEgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gbGlicmFyeSBcCi1JdCB3YXMgZGVzaWduZWQgdG8gYmUgdmVyeSBmYXN0IGFuZCBzdGFibGUsIGJ1dCBub3QgdG8gYWNoaWV2ZSBhIGhpZ2ggXAotY29tcHJlc3Npb24gcmF0aW8uIgotCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY2MmYzMDgwMzI0YTk3YjMxNTlhN2E3ZTYxODEyZDBjIgotCi1TUkNfVVJJID0gImh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JlcG8vcGtncy9zbmFwcHkvc25hcHB5LTEuMS43LnRhci5nei9zaGE1MTIvMzIwNDZmNTMyNjA2YmE1NDVhNGU0ODI1YzBjNjZhMTliZTQ0OWYyY2EyZmY3NjBhNmZhMTcwYTM2MDM3MzE0NzlhN2RlYWRiNjgzNTQ2ZTVmOGI1MDMzNDE0YzUwZjRhOWEyOWY2ZDIzYjdhNDFmMDQ3ZTU2NmU2OWVjYTdjYWYvc25hcHB5LTEuMS43LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gImVlOTA4NjI5MWM5YWU4ZGViNGRhYzVlMGI4NWJmNTRhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkZmEwMmU4NzNmZjUxYTExZWUwMmI5Y2EzOTE4MDdmMGM4ZWEwNTI5YTQ5MjRhZmE2NDVmYmY5NzE2M2Y5ZDQiCi0KLWluaGVyaXQgY21ha2UgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2x6b10gPSAiLURIQVZFX0xJQkxaTzI9MSwtREhBVkVfTElCTFpPMj0wLGx6bywiCi1UQVJHRVRfQ0ZMQUdTICs9ICItZlBJQyIKLQotRVhUUkFfT0VDTUFLRSArPSAnLURCVUlMRF9TSEFSRURfTElCUz0iT04iIFwKLSAgICAgICAgICAgICAgICAgICcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zbmFwcHkvc25hcHB5XzEuMS44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NuYXBweS9zbmFwcHlfMS4xLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZkMWU0MQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zbmFwcHkvc25hcHB5XzEuMS44LmJiCkBAIC0wLDAgKzEsMjUgQEAKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE0IFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgorIyBSZWxlYXNlZCB1bmRlciB0aGUgQlNELTMtQ2xhdXNlIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLkJTRC0zIGZvciB0aGUgdGVybXMpCisjCitTVU1NQVJZID0gIkEgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiU25hcHB5IGlzIGEgZmFzdCBkYXRhIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIGxpYnJhcnkgXAorSXQgd2FzIGRlc2lnbmVkIHRvIGJlIHZlcnkgZmFzdCBhbmQgc3RhYmxlLCBidXQgbm90IHRvIGFjaGlldmUgYSBoaWdoIFwKK2NvbXByZXNzaW9uIHJhdGlvLiIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mNjJmMzA4MDMyNGE5N2IzMTU5YTdhN2U2MTgxMmQwYyIKKworU1JDX1VSSSA9ICJodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9yZXBvL3BrZ3Mvc25hcHB5L3NuYXBweS0xLjEuOC50YXIuZ3ovc2hhNTEyL2VmZTE4ZmYxYjNlZGRhMWI0YjZjZWZjYmM2ZGE4MTE5YzA1ZDYzYWZkYmY3YTc4NGYzNDkwMzUzYzc0ZGNlZDc2YmFlZDdiNWYxYWEzNGI5OTg5OTcyOTE5MmI5ZDY1N2MzM2M3NmRlNGI1MDdhNTE1NTNmYTgwMDFhZTc1YzFjL3NuYXBweS0xLjEuOC50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3MGU0OGNiYTdmZWNmMjg5MTUzZDAwOTc5MWM5OTc3ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxNmI2NzdmMDc4MzJhNjEyYjA4MzYxNzhkYjdmMzc0ZTQxNGY5NDY1N2MxMzhlNjk5M2NiZmM1ZGNjNTg2NTFmIgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tsem9dID0gIi1ESEFWRV9MSUJMWk8yPTEsLURIQVZFX0xJQkxaTzI9MCxsem8sIgorVEFSR0VUX0NGTEFHUyArPSAiLWZQSUMiCisKK0VYVFJBX09FQ01BS0UgKz0gJy1EQlVJTERfU0hBUkVEX0xJQlM9Ik9OIiBcCisgICAgICAgICAgICAgICAgICAnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc29ja2V0Y2FuL2Nhbi11dGlscy8wMDAxLWZpeC1pbmNsdWRlLXRvLWZpbmQtU0lPQ0dTVEFNUC13aXRoLWxhdGVzdC1rZXJuZWwucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc29ja2V0Y2FuL2Nhbi11dGlscy8wMDAxLWZpeC1pbmNsdWRlLXRvLWZpbmQtU0lPQ0dTVEFNUC13aXRoLWxhdGVzdC1rZXJuZWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiZjNhZWUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NvY2tldGNhbi9jYW4tdXRpbHMvMDAwMS1maXgtaW5jbHVkZS10by1maW5kLVNJT0NHU1RBTVAtd2l0aC1sYXRlc3Qta2VybmVsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLUZyb20gMjA5ODFjOGEzMjg3NDdmODIzYjdlZWY2OGQwYzI4MTJiM2VhZWQzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZhYnJpY2UgRm9udGFpbmUgPGZvbnRhaW5lLmZhYnJpY2VAZ21haWwuY29tPgotRGF0ZTogU3VuLCAxNCBKdWwgMjAxOSAyMTo1MDo0MyArMDIwMAotU3ViamVjdDogW1BBVENIXSBmaXggaW5jbHVkZSB0byBmaW5kIFNJT0NHU1RBTVAgd2l0aCBsYXRlc3Qga2VybmVsCi0KLUluIGxpbnV4IGtlcm5lbCBjb21taXQgMDc2OGUxNzA3M2RjNTI3Y2NkMThlZDVmOTZjZTg1Zjk5ODVlOTExNQotdGhlIGFzbS1nZW5lcmljL3NvY2tpb3MuaCBoZWFkZXIgbm8gbG9uZ2VyIGRlZmluZXMgU0lPQ0dTVEFNUC4KLUluc3RlYWQgaXQgcHJvdmlkZXMgb25seSBTSU9DR1NUQU1QX09MRC4KLQotVGhlIGxpbnV4L3NvY2tpb3MuaCBoZWFkZXIgbm93IGRlZmluZXMgU0lPQ0dTVEFNUCB1c2luZyBlaXRoZXIKLVNJT0NHU1RBTVBfT0xEIG9yIFNJT0NHU1RBTVBfTkVXIGFzIGFwcHJvcHJpYXRlLiBUaGlzIGxpbnV4IG9ubHkKLWhlYWRlciBmaWxlIGlzIG5vdCBwdWxsZWQgc28gd2UgZ2V0IGEgYnVpbGQgZmFpbHVyZS4KLQotY2FubG9nc2VydmVyLmM6IEluIGZ1bmN0aW9uICdtYWluJzoKLWNhbmxvZ3NlcnZlci5jOjQwNDoyMTogZXJyb3I6ICdTSU9DR1NUQU1QJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiAnU0lPQ0dSQVJQJz8KLSAgICAgaWYgKGlvY3RsKHNbaV0sIFNJT0NHU1RBTVAsICZ0dikgPCAwKQotICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fgotICAgICAgICAgICAgICAgICAgICAgU0lPQ0dSQVJQCi1jYW5sb2dzZXJ2ZXIuYzo0MDQ6MjE6IG5vdGU6IGVhY2ggdW5kZWNsYXJlZCBpZGVudGlmaWVyIGlzIHJlcG9ydGVkIG9ubHkgb25jZSBmb3IgZWFjaCBmdW5jdGlvbiBpdCBhcHBlYXJzIGluCi0KLUZpeGVzOgotIC0gaHR0cDovL2F1dG9idWlsZC5idWlsZHJvb3Qub3JnL3Jlc3VsdHMvMzYzZGU3ZDliZjQzM2JlOGJjNDdiYTRlZTUyYWUwYmI4MGZhOTAyMQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGludXgtY2FuL2Nhbi11dGlscy9jb21taXQvZTk1OTBiMWNhNzVkMzYwZWFmMzIxMWJlYmQ4NjA1ODIxNGQ0ODA2NF0KLVNpZ25lZC1vZmYtYnk6IEZhYnJpY2UgRm9udGFpbmUgPGZvbnRhaW5lLmZhYnJpY2VAZ21haWwuY29tPgotLS0tCi0gY2FubG9nc2VydmVyLmMgfCAxICsKLSBjYW5zbmlmZmVyLmMgICB8IDEgKwotIGlzb3RwZHVtcC5jICAgIHwgMSArCi0gaXNvdHBwZXJmLmMgICAgfCAxICsKLSBpc290cHNuaWZmZXIuYyB8IDEgKwotIHNsY2FucHR5LmMgICAgIHwgMSArCi0gNiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NhbmxvZ3NlcnZlci5jIGIvY2FubG9nc2VydmVyLmMKLWluZGV4IGUzMzUwYjcuLmY1MzE2NWMgMTAwNjQ0Ci0tLS0gYS9jYW5sb2dzZXJ2ZXIuYwotKysrIGIvY2FubG9nc2VydmVyLmMKLUBAIC02MSw2ICs2MSw3IEBACi0gCi0gI2luY2x1ZGUgPGxpbnV4L2Nhbi5oPgotICNpbmNsdWRlIDxsaW51eC9jYW4vcmF3Lmg+Ci0rI2luY2x1ZGUgPGxpbnV4L3NvY2tpb3MuaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gCi1kaWZmIC0tZ2l0IGEvY2Fuc25pZmZlci5jIGIvY2Fuc25pZmZlci5jCi1pbmRleCA3YjBhM2ZhLi5iZjdkNzJlIDEwMDY0NAotLS0tIGEvY2Fuc25pZmZlci5jCi0rKysgYi9jYW5zbmlmZmVyLmMKLUBAIC02MSw2ICs2MSw3IEBACi0gCi0gI2luY2x1ZGUgPGxpbnV4L2Nhbi5oPgotICNpbmNsdWRlIDxsaW51eC9jYW4vYmNtLmg+Ci0rI2luY2x1ZGUgPGxpbnV4L3NvY2tpb3MuaD4KLSAKLSAjaW5jbHVkZSAidGVybWluYWwuaCIKLSAKLWRpZmYgLS1naXQgYS9pc290cGR1bXAuYyBiL2lzb3RwZHVtcC5jCi1pbmRleCBiMmI2NTBhLi4zNmQ4YWYzIDEwMDY0NAotLS0tIGEvaXNvdHBkdW1wLmMKLSsrKyBiL2lzb3RwZHVtcC5jCi1AQCAtNTUsNiArNTUsNyBAQAotIAotICNpbmNsdWRlIDxsaW51eC9jYW4uaD4KLSAjaW5jbHVkZSA8bGludXgvY2FuL3Jhdy5oPgotKyNpbmNsdWRlIDxsaW51eC9zb2NraW9zLmg+Ci0gI2luY2x1ZGUgInRlcm1pbmFsLmgiCi0gCi0gI2RlZmluZSBOT19DQU5fSUQgMHhGRkZGRkZGRlUKLWRpZmYgLS1naXQgYS9pc290cHBlcmYuYyBiL2lzb3RwcGVyZi5jCi1pbmRleCBkYjNhMmI3Li41ODUyYTU3IDEwMDY0NAotLS0tIGEvaXNvdHBwZXJmLmMKLSsrKyBiL2lzb3RwcGVyZi5jCi1AQCAtNTYsNiArNTYsNyBAQAotIAotICNpbmNsdWRlIDxsaW51eC9jYW4uaD4KLSAjaW5jbHVkZSA8bGludXgvY2FuL3Jhdy5oPgotKyNpbmNsdWRlIDxsaW51eC9zb2NraW9zLmg+Ci0gCi0gI2RlZmluZSBOT19DQU5fSUQgMHhGRkZGRkZGRlUKLSAjZGVmaW5lIFBFUkNFTlRSRVMgMiAvKiByZXNvbHV0aW9uIGluIHBlcmNlbnQgZm9yIGJhcmdyYXBoICovCi1kaWZmIC0tZ2l0IGEvaXNvdHBzbmlmZmVyLmMgYi9pc290cHNuaWZmZXIuYwotaW5kZXggZjQyZTE4Yi4uZDdhNGM2NiAxMDA2NDQKLS0tLSBhL2lzb3Rwc25pZmZlci5jCi0rKysgYi9pc290cHNuaWZmZXIuYwotQEAgLTU1LDYgKzU1LDcgQEAKLSAKLSAjaW5jbHVkZSA8bGludXgvY2FuLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2Nhbi9pc290cC5oPgotKyNpbmNsdWRlIDxsaW51eC9zb2NraW9zLmg+Ci0gI2luY2x1ZGUgInRlcm1pbmFsLmgiCi0gCi0gI2RlZmluZSBOT19DQU5fSUQgMHhGRkZGRkZGRlUKLWRpZmYgLS1naXQgYS9zbGNhbnB0eS5jIGIvc2xjYW5wdHkuYwotaW5kZXggNDMxY2E2OC4uN2RmYWY1YyAxMDA2NDQKLS0tLSBhL3NsY2FucHR5LmMKLSsrKyBiL3NsY2FucHR5LmMKLUBAIC00MCw2ICs0MCw3IEBACi0gCi0gI2luY2x1ZGUgPGxpbnV4L2Nhbi5oPgotICNpbmNsdWRlIDxsaW51eC9jYW4vcmF3Lmg+Ci0rI2luY2x1ZGUgPGxpbnV4L3NvY2tpb3MuaD4KLSAKLSAvKiBtYXhpbXVtIHJ4IGJ1ZmZlciBsZW46IGV4dGVuZGVkIENBTiBmcmFtZSB3aXRoIHRpbWVzdGFtcCAqLwotICNkZWZpbmUgU0xDX01UVSAoc2l6ZW9mKCJUMTExMTIyMjI4MTEyMjMzNDQ1NTY2Nzc4OEVBNUZcciIpKzEpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc29ja2V0Y2FuL2Nhbi11dGlsc19naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc29ja2V0Y2FuL2Nhbi11dGlsc19naXQuYmIKaW5kZXggZGI1MDU1Zi4uNTE5MzY4OCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NvY2tldGNhbi9jYW4tdXRpbHNfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zb2NrZXRjYW4vY2FuLXV0aWxzX2dpdC5iYgpAQCAtMSwxOCArMSwxNSBAQAogU1VNTUFSWSA9ICJMaW51eCBDQU4gbmV0d29yayBkZXZlbG9wbWVudCB1dGlsaXRpZXMiCi1ERVNDUklQVElPTiA9ICJMaW51eCBDQU4gbmV0d29yayBkZXZlbG9wbWVudCIKIExJQ0VOU0UgPSAiR1BMdjIgJiBCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9pbmNsdWRlL2xpbnV4L2Nhbi5oO2VuZGxpbmU9NDM7bWQ1PTM5MGEyYzlhM2M1ZTM1OTVhMDY5YWMxNDM2NTUzZWU3IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vaW5jbHVkZS9saW51eC9jYW4uaDtlbmRsaW5lPTQ0O21kNT1hOWUxMTY5YzZjOWExMTRhNjEzMjllOTlmODZmZGQzMSIKIAogREVQRU5EUyA9ICJsaWJzb2NrZXRjYW4iCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saW51eC1jYW4vJHtCUE59LmdpdDtwcm90b2NvbD1naXQ7YnJhbmNoPW1hc3RlciBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1pbmNsdWRlLXRvLWZpbmQtU0lPQ0dTVEFNUC13aXRoLWxhdGVzdC1rZXJuZWwucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNSRVYgPSAiNGM4ZmIwNWNiNGQ2ZGRjZDY3Mjk5MDA4ZGI1NGFmNDIzZjg2ZmQwNSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saW51eC1jYW4vJHtCUE59LmdpdDtwcm90b2NvbD1naXQiCiAKLVBWID0gIjAuMCtnaXRyJHtTUkNQVn0iCitTUkNSRVYgPSAiZGE2NWZkZmUwZDE5ODY2MjVlZTAwYWYwYjU2YWUxN2VjMTMyZTcwMCIKKworUFYgPSAiMjAyMC4wMi4wNCIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zeXNkaWcvc3lzZGlnLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1iYWNrdHJhY2UtQVBJcy1hcmUtZ2xpYmMtc3BlY2lmaS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zeXNkaWcvc3lzZGlnLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1iYWNrdHJhY2UtQVBJcy1hcmUtZ2xpYmMtc3BlY2lmaS5wYXRjaAppbmRleCA3ZDNmOGExLi5jYjgwNjExIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc3lzZGlnL3N5c2RpZy8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wtYmFja3RyYWNlLUFQSXMtYXJlLWdsaWJjLXNwZWNpZmkucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3N5c2RpZy9zeXNkaWcvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLWJhY2t0cmFjZS1BUElzLWFyZS1nbGliYy1zcGVjaWZpLnBhdGNoCkBAIC05LDQyICs5LDQxIEBACiAgdXNlcnNwYWNlL2xpYnNpbnNwL3V0aWxzLmggICB8IDIgKy0KICAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL3VzZXJzcGFjZS9saWJzaW5zcC91dGlscy5jcHAgYi91c2Vyc3BhY2UvbGlic2luc3AvdXRpbHMuY3BwCi1pbmRleCA4ZjIzZjljLi5jNDk2YTU3IDEwMDY0NAogLS0tIGEvdXNlcnNwYWNlL2xpYnNpbnNwL3V0aWxzLmNwcAogKysrIGIvdXNlcnNwYWNlL2xpYnNpbnNwL3V0aWxzLmNwcAotQEAgLTIxLDcgKzIxLDkgQEAgYWxvbmcgd2l0aCBzeXNkaWcuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCitAQCAtMjIsNyArMjIsNyBAQCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICAjaW5jbHVkZSA8bGltaXRzLmg+CiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogICNpbmNsdWRlIDxzeXMvdGltZS5oPgotKyNpZmRlZiBfX0dMSUJDX18KKy0jaWZuZGVmIENZR1dJTkdfQUdFTlQKKysjaWYgIWRlZmluZWQoQ1lHV0lOR19BR0VOVCkgfHwgZGVmaW5lZChfX0dMSUJDX18pCiAgI2luY2x1ZGUgPGV4ZWNpbmZvLmg+Ci0rI2VuZGlmCisgI2VuZGlmCiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxzeXMvdGltZS5oPgotICNpbmNsdWRlIDxuZXRkYi5oPgotQEAgLTc0MSw3ICs3NDMsNyBAQCB1aW50NjRfdCBzaW5zcF91dGlsczo6Z2V0X2N1cnJlbnRfdGltZV9ucygpCi0gICAgIHJldHVybiB0di50dl9zZWMgKiAodWludDY0X3QpIDEwMDAwMDAwMDAgKyB0di50dl91c2VjICogMTAwMDsKLSB9CitAQCAtNzgwLDYgKzc4MCw3IEBAIGJvb2wgc2luc3BfdXRpbHM6Omdsb2JfbWF0Y2goY29uc3QgY2hhcgogIAotLSNpZm5kZWYgX1dJTjMyCi0rI2lmIGRlZmluZWQoX1dJTjMyKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKKyAjaWZuZGVmIENZR1dJTkdfQUdFTlQKKyAjaWZuZGVmIF9XSU4zMgorKyNpZmRlZiBfX0dMSUJDX18KICB2b2lkIHNpbnNwX3V0aWxzOjpidCh2b2lkKQogIHsKICAJc3RhdGljIGNvbnN0IGNoYXIgc3RhcnRbXSA9ICJCQUNLVFJBQ0UgLS0tLS0tLS0tLS0tIjsKLWRpZmYgLS1naXQgYS91c2Vyc3BhY2UvbGlic2luc3AvdXRpbHMuaCBiL3VzZXJzcGFjZS9saWJzaW5zcC91dGlscy5oCi1pbmRleCA2MDBkMDBiLi40YWI0NjUwIDEwMDY0NAorQEAgLTgwMSw2ICs4MDIsNyBAQCB2b2lkIHNpbnNwX3V0aWxzOjpidCh2b2lkKQorIAorIAlmcmVlKGJ0X3N5bXMpOworIH0KKysjZW5kaWYgLy8gR2xpYmMKKyAjZW5kaWYgLy8gX1dJTjMyCisgI2VuZGlmIC8vIENZR1dJTkdfQUdFTlQKKyAKIC0tLSBhL3VzZXJzcGFjZS9saWJzaW5zcC91dGlscy5oCiArKysgYi91c2Vyc3BhY2UvbGlic2luc3AvdXRpbHMuaAotQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgorQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgCi0gCXN0YXRpYyB1aW50NjRfdCBnZXRfY3VycmVudF90aW1lX25zKCk7CisgCXN0YXRpYyBib29sIGdsb2JfbWF0Y2goY29uc3QgY2hhciAqcGF0dGVybiwgY29uc3QgY2hhciAqc3RyaW5nKTsKICAKIC0jaWZuZGVmIF9XSU4zMgogKyNpZiBub3QgZGVmaW5lZChfV0lOMzIpICYmIGRlZmluZWQoX19HTElCQ19fKQogIAkvLwogIAkvLyBQcmludCB0aGUgY2FsbCBzdGFjawogIAkvLwotLS0gCi0yLjYuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc3lzZGlnL3N5c2RpZy8wMDAxLWZpeC1idWlsZC13aXRoLUx1YUpJVC0yLjEtYmV0YXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc3lzZGlnL3N5c2RpZy8wMDAxLWZpeC1idWlsZC13aXRoLUx1YUpJVC0yLjEtYmV0YXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiMGI4YwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zeXNkaWcvc3lzZGlnLzAwMDEtZml4LWJ1aWxkLXdpdGgtTHVhSklULTIuMS1iZXRhcy5wYXRjaApAQCAtMCwwICsxLDk2IEBACitGcm9tIGFlODJkZTY2NGE2YmE2YWIyNjU0YWRmOWJlZDgxZjIyYjZmZGMxOWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFdmdlbmkgR29sb3YgPGV2Z2VuaUBnb2xvdi5kZT4KK0RhdGU6IFN1biwgMjcgQXVnIDIwMTcgMTM6NTE6MTkgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGJ1aWxkIHdpdGggTHVhSklUIDIuMSBiZXRhcworCitMdWFKSVQgMi4xIGRyb3BzIHNvbWUgY29tcGF0IHN5bWJvbHMgWzFdLiBBbmQgd2hpbGUgSSB0aGluayB0aGF0IHRoaXMgaXMKK3dyb25nLCBhcyBpdCBicmVha3MgY29tcGF0aWJpbGl0eSB3aXRoIEx1YSA1LjEgWzJdLCBpdCBpcyBxdWl0ZSBlYXN5IHRvCithZG9wdCB0aGUgY29kZSB0byB3b3JrIHdpdGggYm90aCB2ZXJzaW9ucyAoMi4wIGFuZCAyLjEpIG9mIEx1YUpJVCBhbmQKK3JlbWFpbiBMdWEgNS4xIGNvbXBhdGlibGUuCisKK1sxXSBodHRwczovL2dpdGh1Yi5jb20vTHVhSklUL0x1YUpJVC9jb21taXQvZGMzMjBjYTcwZjJjNWJiMzk3N2I4Mjg1M2JjZWU2ZGFkMjUyM2QwMQorWzJdIGh0dHBzOi8vZ2l0aHViLmNvbS9MdWFKSVQvTHVhSklUL2lzc3Vlcy8zMjUKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9MdWFKSVQvTHVhSklUL2lzc3Vlcy8zMjVdCitTaWduZWQtb2ZmLWJ5OiBFdmdlbmkgR29sb3YgPGV2Z2VuaUBnb2xvdi5kZT4KK3N5c2RpZy1DTEEtMS4wLXNpZ25lZC1vZmYtYnk6IEV2Z2VuaSBHb2xvdiA8ZXZnZW5pQGdvbG92LmRlPgorLS0tCisgQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB1c2Vyc3BhY2UvbGlic2luc3AvY2hpc2VsLmNwcCAgICAgICAgIHwgNiArKystLS0KKyB1c2Vyc3BhY2UvbGlic2luc3AvbHVhX3BhcnNlci5jcHAgICAgIHwgMiArLQorIHVzZXJzcGFjZS9saWJzaW5zcC9sdWFfcGFyc2VyX2FwaS5jcHAgfCAyICstCisgNCBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCBkNzAyMDQ5My4uMzNlNTI0ZjUgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC0xNDAsNyArMTQwLDcgQEAgb3B0aW9uKFVTRV9CVU5ETEVEX0RFUFMgIkVuYWJsZSBidW5kbGVkIGRlcGVuZGVuY2llcyBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBzeXN0ZW0KKyBvcHRpb24oVVNFX0JVTkRMRURfTFVBSklUICJFbmFibGUgYnVpbGRpbmcgb2YgdGhlIGJ1bmRsZWQgTHVhSklUIiAke1VTRV9CVU5ETEVEX0RFUFN9KQorIAorIGlmKE5PVCBVU0VfQlVORExFRF9MVUFKSVQpCistCWZpbmRfcGF0aChMVUFKSVRfSU5DTFVERSBsdWFqaXQuaCBQQVRIX1NVRkZJWEVTIGx1YWppdC0yLjAgbHVhaml0KQorKwlmaW5kX3BhdGgoTFVBSklUX0lOQ0xVREUgbHVhaml0LmggUEFUSF9TVUZGSVhFUyBsdWFqaXQtMi4xIGx1YWppdC0yLjAgbHVhaml0KQorIAlmaW5kX2xpYnJhcnkoTFVBSklUX0xJQiBOQU1FUyBsdWFqaXQgbHVhaml0LTUuMSkKKyAJaWYoTFVBSklUX0lOQ0xVREUgQU5EIExVQUpJVF9MSUIpCisgCQltZXNzYWdlKFNUQVRVUyAiRm91bmQgTHVhSklUOiBpbmNsdWRlOiAke0xVQUpJVF9JTkNMVURFfSwgbGliOiAke0xVQUpJVF9MSUJ9IikKK2RpZmYgLS1naXQgYS91c2Vyc3BhY2UvbGlic2luc3AvY2hpc2VsLmNwcCBiL3VzZXJzcGFjZS9saWJzaW5zcC9jaGlzZWwuY3BwCitpbmRleCAwYTZlM2NmOC4uMGMyZTI1NWEgMTAwNjQ0CistLS0gYS91c2Vyc3BhY2UvbGlic2luc3AvY2hpc2VsLmNwcAorKysrIGIvdXNlcnNwYWNlL2xpYnNpbnNwL2NoaXNlbC5jcHAKK0BAIC05OCw3ICs5OCw3IEBAIHZvaWQgbHVhX3N0YWNrZHVtcChsdWFfU3RhdGUgKkwpCisgLy8gTHVhIGNhbGxiYWNrcworIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAjaWZkZWYgSEFTX0xVQV9DSElTRUxTCistY29uc3Qgc3RhdGljIHN0cnVjdCBsdWFMX3JlZyBsbF9zeXNkaWcgW10gPQorK2NvbnN0IHN0YXRpYyBzdHJ1Y3QgbHVhTF9SZWcgbGxfc3lzZGlnIFtdID0KKyB7CisgCXsic2V0X2ZpbHRlciIsICZsdWFfY2JhY2tzOjpzZXRfZ2xvYmFsX2ZpbHRlcn0sCisgCXsic2V0X3NuYXBsZW4iLCAmbHVhX2NiYWNrczo6c2V0X3NuYXBsZW59LAorQEAgLTEzNCw3ICsxMzQsNyBAQCBjb25zdCBzdGF0aWMgc3RydWN0IGx1YUxfcmVnIGxsX3N5c2RpZyBbXSA9CisgCXtOVUxMLE5VTEx9CisgfTsKKyAKKy1jb25zdCBzdGF0aWMgc3RydWN0IGx1YUxfcmVnIGxsX2NoaXNlbCBbXSA9CisrY29uc3Qgc3RhdGljIHN0cnVjdCBsdWFMX1JlZyBsbF9jaGlzZWwgW10gPQorIHsKKyAJeyJyZXF1ZXN0X2ZpZWxkIiwgJmx1YV9jYmFja3M6OnJlcXVlc3RfZmllbGR9LAorIAl7InNldF9maWx0ZXIiLCAmbHVhX2NiYWNrczo6c2V0X2ZpbHRlcn0sCitAQCAtMTQ2LDcgKzE0Niw3IEBAIGNvbnN0IHN0YXRpYyBzdHJ1Y3QgbHVhTF9yZWcgbGxfY2hpc2VsIFtdID0KKyAJe05VTEwsTlVMTH0KKyB9OworIAorLWNvbnN0IHN0YXRpYyBzdHJ1Y3QgbHVhTF9yZWcgbGxfZXZ0IFtdID0KKytjb25zdCBzdGF0aWMgc3RydWN0IGx1YUxfUmVnIGxsX2V2dCBbXSA9CisgeworIAl7ImZpZWxkIiwgJmx1YV9jYmFja3M6OmZpZWxkfSwKKyAJeyJnZXRfbnVtIiwgJmx1YV9jYmFja3M6OmdldF9udW19LAorZGlmZiAtLWdpdCBhL3VzZXJzcGFjZS9saWJzaW5zcC9sdWFfcGFyc2VyLmNwcCBiL3VzZXJzcGFjZS9saWJzaW5zcC9sdWFfcGFyc2VyLmNwcAoraW5kZXggMGUyNjYxN2QuLjc4ODEwZDk2IDEwMDY0NAorLS0tIGEvdXNlcnNwYWNlL2xpYnNpbnNwL2x1YV9wYXJzZXIuY3BwCisrKysgYi91c2Vyc3BhY2UvbGlic2luc3AvbHVhX3BhcnNlci5jcHAKK0BAIC0zMiw3ICszMiw3IEBAIGV4dGVybiAiQyIgeworICNpbmNsdWRlICJsYXV4bGliLmgiCisgfQorIAorLWNvbnN0IHN0YXRpYyBzdHJ1Y3QgbHVhTF9yZWcgbGxfZmlsdGVyIFtdID0KKytjb25zdCBzdGF0aWMgc3RydWN0IGx1YUxfUmVnIGxsX2ZpbHRlciBbXSA9CisgeworIAl7InJlbF9leHByIiwgJmx1YV9wYXJzZXJfY2JhY2tzOjpyZWxfZXhwcn0sCisgCXsiYm9vbF9vcCIsICZsdWFfcGFyc2VyX2NiYWNrczo6Ym9vbF9vcH0sCitkaWZmIC0tZ2l0IGEvdXNlcnNwYWNlL2xpYnNpbnNwL2x1YV9wYXJzZXJfYXBpLmNwcCBiL3VzZXJzcGFjZS9saWJzaW5zcC9sdWFfcGFyc2VyX2FwaS5jcHAKK2luZGV4IGM4OWU5MTI2Li5lMDE2OWZlMSAxMDA2NDQKKy0tLSBhL3VzZXJzcGFjZS9saWJzaW5zcC9sdWFfcGFyc2VyX2FwaS5jcHAKKysrKyBiL3VzZXJzcGFjZS9saWJzaW5zcC9sdWFfcGFyc2VyX2FwaS5jcHAKK0BAIC0yNjYsNyArMjY2LDcgQEAgaW50IGx1YV9wYXJzZXJfY2JhY2tzOjpyZWxfZXhwcihsdWFfU3RhdGUgKmxzKQorIAkJCQkJc3RyaW5nIGVyciA9ICJHb3Qgbm9uLXRhYmxlIGFzIGluLWV4cHJlc3Npb24gb3BlcmFuZFxuIjsKKyAJCQkJCXRocm93IHNpbnNwX2V4Y2VwdGlvbigicGFyc2VyIEFQSSBlcnJvciIpOworIAkJCQl9CistCQkJCWludCBuID0gbHVhTF9nZXRuKGxzLCA0KTsgIC8qIGdldCBzaXplIG9mIHRhYmxlICovCisrCQkJCWludCBuID0gKGludClsdWFfb2JqbGVuKGxzLCA0KTsgIC8qIGdldCBzaXplIG9mIHRhYmxlICovCisgCQkJCWZvciAoaT0xOyBpPD1uOyBpKyspCisgCQkJCXsKKyAJCQkJCWx1YV9yYXdnZXRpKGxzLCA0LCBpKTsKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zeXNkaWcvc3lzZGlnLzAwMDEtbGlic2luc3AtUG9ydC10by1idWlsZC13aXRoLWx1YS01LjIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc3lzZGlnL3N5c2RpZy8wMDAxLWxpYnNpbnNwLVBvcnQtdG8tYnVpbGQtd2l0aC1sdWEtNS4yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmVjMGNhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zeXNkaWcvc3lzZGlnLzAwMDEtbGlic2luc3AtUG9ydC10by1idWlsZC13aXRoLWx1YS01LjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotRnJvbSBjMjc4MmE2Y2E5NjgxOTBlMjIxYzI1YjA4OTA2MDBiYThjZDQzNzk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjMgT2N0IDIwMTUgMDA6MjM6MTUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gbGlic2luc3A6IFBvcnQgdG8gYnVpbGQgd2l0aCBsdWEgPj0gNS4yCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSB1c2Vyc3BhY2UvbGlic2luc3AvY2hpc2VsLmNwcCB8IDQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS91c2Vyc3BhY2UvbGlic2luc3AvY2hpc2VsLmNwcCBiL3VzZXJzcGFjZS9saWJzaW5zcC9jaGlzZWwuY3BwCi1pbmRleCAzY2ZiZDhkLi4yZGI5MzQ4IDEwMDY0NAotLS0tIGEvdXNlcnNwYWNlL2xpYnNpbnNwL2NoaXNlbC5jcHAKLSsrKyBiL3VzZXJzcGFjZS9saWJzaW5zcC9jaGlzZWwuY3BwCi1AQCAtOTQsNyArOTQsNyBAQCB2b2lkIGx1YV9zdGFja2R1bXAobHVhX1N0YXRlICpMKQotIC8vIEx1YSBjYWxsYmFja3MKLSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gI2lmZGVmIEhBU19MVUFfQ0hJU0VMUwotLWNvbnN0IHN0YXRpYyBzdHJ1Y3QgbHVhTF9yZWcgbGxfc3lzZGlnIFtdID0gCi0rY29uc3Qgc3RhdGljIHN0cnVjdCBsdWFMX1JlZyBsbF9zeXNkaWcgW10gPQotIHsKLSAJeyJzZXRfZmlsdGVyIiwgJmx1YV9jYmFja3M6OnNldF9nbG9iYWxfZmlsdGVyfSwKLSAJeyJzZXRfc25hcGxlbiIsICZsdWFfY2JhY2tzOjpzZXRfc25hcGxlbn0sCi1AQCAtMTIwLDcgKzEyMCw3IEBAIGNvbnN0IHN0YXRpYyBzdHJ1Y3QgbHVhTF9yZWcgbGxfc3lzZGlnIFtdID0KLSAJe05VTEwsTlVMTH0KLSB9OwotIAotLWNvbnN0IHN0YXRpYyBzdHJ1Y3QgbHVhTF9yZWcgbGxfY2hpc2VsIFtdID0gCi0rY29uc3Qgc3RhdGljIHN0cnVjdCBsdWFMX1JlZyBsbF9jaGlzZWwgW10gPQotIHsKLSAJeyJyZXF1ZXN0X2ZpZWxkIiwgJmx1YV9jYmFja3M6OnJlcXVlc3RfZmllbGR9LAotIAl7InNldF9maWx0ZXIiLCAmbHVhX2NiYWNrczo6c2V0X2ZpbHRlcn0sCi1AQCAtMTMxLDcgKzEzMSw3IEBAIGNvbnN0IHN0YXRpYyBzdHJ1Y3QgbHVhTF9yZWcgbGxfY2hpc2VsIFtdID0KLSAJe05VTEwsTlVMTH0KLSB9OwotIAotLWNvbnN0IHN0YXRpYyBzdHJ1Y3QgbHVhTF9yZWcgbGxfZXZ0IFtdID0gCi0rY29uc3Qgc3RhdGljIHN0cnVjdCBsdWFMX1JlZyBsbF9ldnQgW10gPQotIHsKLSAJeyJmaWVsZCIsICZsdWFfY2JhY2tzOjpmaWVsZH0sCi0gCXsiZ2V0X251bSIsICZsdWFfY2JhY2tzOjpnZXRfbnVtfSwKLUBAIC04NTMsMTAgKzg1MywyOCBAQCBib29sIHNpbnNwX2NoaXNlbDo6cGFyc2Vfdmlld19pbmZvKGx1YV9TdGF0ZSAqbHMsIE9VVCBjaGlzZWxfZGVzYyogY2QpCi0gCi0gCi0gI2lmZGVmIEhBU19MVUFfQ0hJU0VMUwotK3N0YXRpYyB2b2lkIGNoaXNlbF9sdWFfcmVnaXN0ZXJsaWIobHVhX1N0YXRlICpMLCBjb25zdCBjaGFyICpsaWJuYW1lLAotKwkJCQljb25zdCBsdWFMX1JlZyAqbCwgaW50IGluZCkKLSt7Ci0rI2lmIExVQV9WRVJTSU9OX05VTSA+PSA1MDIKLSsJaWYgKGxpYm5hbWUpCi0rCXsKLSsJCWx1YV9uZXd0YWJsZShMKTsKLSsJCWx1YUxfc2V0ZnVuY3MoTCwgbCwgaW5kKTsKLSsJCWx1YV9wdXNodmFsdWUoTCwgLTEpOwotKwkJbHVhX3NldGdsb2JhbChMLCBsaWJuYW1lKTsKLSsJfQotKwllbHNlCi0rCQlsdWFMX3NldGZ1bmNzKEwsIGwsIGluZCk7Ci0rI2Vsc2UKLSsJbHVhTF9yZWdpc3RlcihMLCBsaWJuYW1lLCBsKTsKLSsjZW5kaWYKLSt9Ci0rCi0gLy8gSW5pdGlhbGl6ZXMgYSBsdWEgY2hpc2VsCi0gYm9vbCBzaW5zcF9jaGlzZWw6OmluaXRfbHVhX2NoaXNlbChjaGlzZWxfZGVzYyAmY2QsIHN0cmluZyBjb25zdCAmZnBhdGgpCi0gewotLQlsdWFfU3RhdGUqIGxzID0gbHVhX29wZW4oKTsKLSsJbHVhX1N0YXRlKiBscyA9IGx1YUxfbmV3c3RhdGUoKTsKLSAJaWYobHMgPT0gTlVMTCkKLSAJewotIAkJcmV0dXJuIGZhbHNlOwotQEAgLTg2Nyw5ICs4ODUsOSBAQCBib29sIHNpbnNwX2NoaXNlbDo6aW5pdF9sdWFfY2hpc2VsKGNoaXNlbF9kZXNjICZjZCwgc3RyaW5nIGNvbnN0ICZmcGF0aCkKLSAJLy8KLSAJLy8gTG9hZCBvdXIgb3duIGx1YSBsaWJzCi0gCS8vCi0tCWx1YUxfb3BlbmxpYihscywgInN5c2RpZyIsIGxsX3N5c2RpZywgMCk7Ci0tCWx1YUxfb3BlbmxpYihscywgImNoaXNlbCIsIGxsX2NoaXNlbCwgMCk7Ci0tCWx1YUxfb3BlbmxpYihscywgImV2dCIsIGxsX2V2dCwgMCk7Ci0rCWNoaXNlbF9sdWFfcmVnaXN0ZXJsaWIobHMsICJzeXNkaWciLCBsbF9zeXNkaWcsIDApOwotKwljaGlzZWxfbHVhX3JlZ2lzdGVybGliKGxzLCAiY2hpc2VsIiwgbGxfY2hpc2VsLCAwKTsKLSsJY2hpc2VsX2x1YV9yZWdpc3RlcmxpYihscywgImV2dCIsIGxsX2V2dCwgMCk7Ci0gCi0gCS8vCi0gCS8vIEFkZCBvdXIgY2hpc2VsIHBhdGhzIHRvIHBhY2thZ2UucGF0aAotQEAgLTExMTEsMTYgKzExMjksMTYgQEAgdm9pZCBzaW5zcF9jaGlzZWw6OmxvYWQoc3RyaW5nIGNtZHN0cikKLSAJLy8KLSAJLy8gT3BlbiB0aGUgc2NyaXB0Ci0gCS8vCi0tCW1fbHMgPSBsdWFfb3BlbigpOwotKwltX2xzID0gbHVhTF9uZXdzdGF0ZSgpOwotICAKLSAJbHVhTF9vcGVubGlicyhtX2xzKTsKLSAKLSAJLy8KLSAJLy8gTG9hZCBvdXIgb3duIGx1YSBsaWJzCi0gCS8vCi0tCWx1YUxfb3BlbmxpYihtX2xzLCAic3lzZGlnIiwgbGxfc3lzZGlnLCAwKTsKLS0JbHVhTF9vcGVubGliKG1fbHMsICJjaGlzZWwiLCBsbF9jaGlzZWwsIDApOwotLQlsdWFMX29wZW5saWIobV9scywgImV2dCIsIGxsX2V2dCwgMCk7Ci0rCWNoaXNlbF9sdWFfcmVnaXN0ZXJsaWIobV9scywgInN5c2RpZyIsIGxsX3N5c2RpZywgMCk7Ci0rCWNoaXNlbF9sdWFfcmVnaXN0ZXJsaWIobV9scywgImNoaXNlbCIsIGxsX2NoaXNlbCwgMCk7Ci0rCWNoaXNlbF9sdWFfcmVnaXN0ZXJsaWIobV9scywgImV2dCIsIGxsX2V2dCwgMCk7Ci0gCi0gCS8vCi0gCS8vIEFkZCBvdXIgY2hpc2VsIHBhdGhzIHRvIHBhY2thZ2UucGF0aAotLS0gCi0yLjYuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc3lzZGlnL3N5c2RpZy9hYXJjaDY0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3N5c2RpZy9zeXNkaWcvYWFyY2g2NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTZiMGVjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3N5c2RpZy9zeXNkaWcvYWFyY2g2NC5wYXRjaApAQCAtMCwwICsxLDM1OSBAQAorQ2hlY2sgaWYgbGVnYWN5IHN5c2NhbGxzIGV4aXN0CisKK0EgbG90IG9mIGxlZ2FjeSBzeXNjYWxscyBhcmUgcmVwbGFjZWQgd2l0aCAqYXQgYW5kIGFyZSBub3QgaW1wbGVtZW50ZWQgaW4gbmV3ZXIKK2FyY2hpdGVjdHVyZXMgbGlrZSBhYXJjaDY0CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vZHJhaW9zL3N5c2RpZy9wdWxsLzE2MDFdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tIGEvZHJpdmVyL3N5c2NhbGxfdGFibGUuYworKysrIGIvZHJpdmVyL3N5c2NhbGxfdGFibGUuYworQEAgLTQyLDI2ICs0Miw0NiBAQCBvciBHUEwyLnR4dCBmb3IgZnVsbCBjb3BpZXMgb2YgdGhlIGxpY2VuCisgICogU1lTQ0FMTCBUQUJMRQorICAqLworIGNvbnN0IHN0cnVjdCBzeXNjYWxsX2V2dF9wYWlyIGdfc3lzY2FsbF90YWJsZVtTWVNDQUxMX1RBQkxFX1NJWkVdID0geworKyNpZmRlZiBfX05SX29wZW4KKyAJW19fTlJfb3BlbiAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX05FVkVSX0RST1AsIFBQTUVfU1lTQ0FMTF9PUEVOX0UsIFBQTUVfU1lTQ0FMTF9PUEVOX1h9LAorKyNlbmRpZgorKyNpZmRlZiBfX05SX2NyZWF0CisgCVtfX05SX2NyZWF0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9ORVZFUl9EUk9QLCBQUE1FX1NZU0NBTExfQ1JFQVRfRSwgUFBNRV9TWVNDQUxMX0NSRUFUX1h9LAorKyNlbmRpZgorIAlbX19OUl9jbG9zZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfTkVWRVJfRFJPUCB8IFVGX1NJTVBMRURSSVZFUl9LRUVQLCBQUE1FX1NZU0NBTExfQ0xPU0VfRSwgUFBNRV9TWVNDQUxMX0NMT1NFX1h9LAorIAlbX19OUl9icmsgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfQUxXQVlTX0RST1AsIFBQTUVfU1lTQ0FMTF9CUktfNF9FLCBQUE1FX1NZU0NBTExfQlJLXzRfWH0sCisgCVtfX05SX3JlYWQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQsIFBQTUVfU1lTQ0FMTF9SRUFEX0UsIFBQTUVfU1lTQ0FMTF9SRUFEX1h9LAorIAlbX19OUl93cml0ZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfV1JJVEVfRSwgUFBNRV9TWVNDQUxMX1dSSVRFX1h9LAorIAlbX19OUl9leGVjdmUgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfTkVWRVJfRFJPUCB8IFVGX1NJTVBMRURSSVZFUl9LRUVQLCBQUE1FX1NZU0NBTExfRVhFQ1ZFXzE5X0UsIFBQTUVfU1lTQ0FMTF9FWEVDVkVfMTlfWH0sCisgCVtfX05SX2Nsb25lIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9ORVZFUl9EUk9QIHwgVUZfU0lNUExFRFJJVkVSX0tFRVAsIFBQTUVfU1lTQ0FMTF9DTE9ORV8yMF9FLCBQUE1FX1NZU0NBTExfQ0xPTkVfMjBfWH0sCisrI2lmZGVmIF9fTlJfZm9yaworIAlbX19OUl9mb3JrIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfTkVWRVJfRFJPUCB8IFVGX1NJTVBMRURSSVZFUl9LRUVQLCBQUE1FX1NZU0NBTExfRk9SS18yMF9FLCBQUE1FX1NZU0NBTExfRk9SS18yMF9YfSwKKysjZW5kaWYKKysjaWZkZWYgX19OUl92Zm9yaworIAlbX19OUl92Zm9yayAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfTkVWRVJfRFJPUCB8IFVGX1NJTVBMRURSSVZFUl9LRUVQLCBQUE1FX1NZU0NBTExfVkZPUktfMjBfRSwgUFBNRV9TWVNDQUxMX1ZGT1JLXzIwX1h9LAorKyNlbmRpZgorKyNpZmRlZiBfX05SX3BpcGUKKyAJW19fTlJfcGlwZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX05FVkVSX0RST1AsIFBQTUVfU1lTQ0FMTF9QSVBFX0UsIFBQTUVfU1lTQ0FMTF9QSVBFX1h9LAorKyNlbmRpZgorIAlbX19OUl9waXBlMiAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfTkVWRVJfRFJPUCwgUFBNRV9TWVNDQUxMX1BJUEVfRSwgUFBNRV9TWVNDQUxMX1BJUEVfWH0sCisrI2lmZGVmIF9fTlJfZXZlbnRmZAorIAlbX19OUl9ldmVudGZkIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfTkVWRVJfRFJPUCwgUFBNRV9TWVNDQUxMX0VWRU5URkRfRSwgUFBNRV9TWVNDQUxMX0VWRU5URkRfWH0sCisrI2VuZGlmCisgCVtfX05SX2V2ZW50ZmQyIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9ORVZFUl9EUk9QLCBQUE1FX1NZU0NBTExfRVZFTlRGRF9FLCBQUE1FX1NZU0NBTExfRVZFTlRGRF9YfSwKKyAJW19fTlJfZnV0ZXggLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX0FMV0FZU19EUk9QLCBQUE1FX1NZU0NBTExfRlVURVhfRSwgUFBNRV9TWVNDQUxMX0ZVVEVYX1h9LAorKyNpZmRlZiBfX05SX3N0YXQKKyAJW19fTlJfc3RhdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX0FMV0FZU19EUk9QLCBQUE1FX1NZU0NBTExfU1RBVF9FLCBQUE1FX1NZU0NBTExfU1RBVF9YfSwKKysjZW5kaWYKKysjaWZkZWYgX19OUl9sc3RhdAorIAlbX19OUl9sc3RhdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfQUxXQVlTX0RST1AsIFBQTUVfU1lTQ0FMTF9MU1RBVF9FLCBQUE1FX1NZU0NBTExfTFNUQVRfWH0sCisrI2VuZGlmCisgCVtfX05SX2ZzdGF0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9BTFdBWVNfRFJPUCwgUFBNRV9TWVNDQUxMX0ZTVEFUX0UsIFBQTUVfU1lTQ0FMTF9GU1RBVF9YfSwKKysjaWZkZWYgX19OUl9lcG9sbF93YWl0CisgCVtfX05SX2Vwb2xsX3dhaXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9BTFdBWVNfRFJPUCwgUFBNRV9TWVNDQUxMX0VQT0xMV0FJVF9FLCBQUE1FX1NZU0NBTExfRVBPTExXQUlUX1h9LAorKyNlbmRpZgorKyNpZmRlZiBfX05SX3BvbGwKKyAJW19fTlJfcG9sbCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX0FMV0FZU19EUk9QLCBQUE1FX1NZU0NBTExfUE9MTF9FLCBQUE1FX1NZU0NBTExfUE9MTF9YfSwKKysjZW5kaWYKKyAjaWZkZWYgX19OUl9zZWxlY3QKKyAJW19fTlJfc2VsZWN0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX0FMV0FZU19EUk9QLCBQUE1FX1NZU0NBTExfU0VMRUNUX0UsIFBQTUVfU1lTQ0FMTF9TRUxFQ1RfWH0sCisgI2VuZGlmCitAQCAtNzAsMTMgKzkwLDIxIEBAIGNvbnN0IHN0cnVjdCBzeXNjYWxsX2V2dF9wYWlyIGdfc3lzY2FsbF8KKyAJW19fTlJfZ2V0Y3dkIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX0FMV0FZU19EUk9QLCBQUE1FX1NZU0NBTExfR0VUQ1dEX0UsIFBQTUVfU1lTQ0FMTF9HRVRDV0RfWH0sCisgCVtfX05SX2NoZGlyIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9ORVZFUl9EUk9QIHwgVUZfU0lNUExFRFJJVkVSX0tFRVAsIFBQTUVfU1lTQ0FMTF9DSERJUl9FLCBQUE1FX1NZU0NBTExfQ0hESVJfWH0sCisgCVtfX05SX2ZjaGRpciAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9ORVZFUl9EUk9QIHwgVUZfU0lNUExFRFJJVkVSX0tFRVAsIFBQTUVfU1lTQ0FMTF9GQ0hESVJfRSwgUFBNRV9TWVNDQUxMX0ZDSERJUl9YfSwKKysjaWZkZWYgX19OUl9ta2RpcgorIAlbX19OUl9ta2RpciAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfTUtESVJfMl9FLCBQUE1FX1NZU0NBTExfTUtESVJfMl9YfSwKKysjZW5kaWYKKysjaWZkZWYgX19OUl9ybWRpcgorIAlbX19OUl9ybWRpciAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfUk1ESVJfMl9FLCBQUE1FX1NZU0NBTExfUk1ESVJfMl9YfSwKKysjZW5kaWYKKyAJW19fTlJfb3BlbmF0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX05FVkVSX0RST1AsIFBQTUVfU1lTQ0FMTF9PUEVOQVRfMl9FLCBQUE1FX1NZU0NBTExfT1BFTkFUXzJfWH0sCisgCVtfX05SX21rZGlyYXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQsIFBQTUVfU1lTQ0FMTF9NS0RJUkFUX0UsIFBQTUVfU1lTQ0FMTF9NS0RJUkFUX1h9LAorKyNpZmRlZiBfX05SX2xpbmsKKyAJW19fTlJfbGluayAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCwgUFBNRV9TWVNDQUxMX0xJTktfMl9FLCBQUE1FX1NZU0NBTExfTElOS18yX1h9LAorKyNlbmRpZgorIAlbX19OUl9saW5rYXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfTElOS0FUXzJfRSwgUFBNRV9TWVNDQUxMX0xJTktBVF8yX1h9LAorKyNpZmRlZiBfX05SX3VubGluaworIAlbX19OUl91bmxpbmsgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfVU5MSU5LXzJfRSwgUFBNRV9TWVNDQUxMX1VOTElOS18yX1h9LAorKyNlbmRpZgorIAlbX19OUl91bmxpbmthdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfVU5MSU5LQVRfMl9FLCBQUE1FX1NZU0NBTExfVU5MSU5LQVRfMl9YfSwKKyAJW19fTlJfcHJlYWQ2NCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCwgUFBNRV9TWVNDQUxMX1BSRUFEX0UsIFBQTUVfU1lTQ0FMTF9QUkVBRF9YfSwKKyAJW19fTlJfcHdyaXRlNjQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCwgUFBNRV9TWVNDQUxMX1BXUklURV9FLCBQUE1FX1NZU0NBTExfUFdSSVRFX1h9LAorQEAgLTg1LDE2ICsxMTMsMjIgQEAgY29uc3Qgc3RydWN0IHN5c2NhbGxfZXZ0X3BhaXIgZ19zeXNjYWxsXworIAlbX19OUl9wcmVhZHYgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfUFJFQURWX0UsIFBQTUVfU1lTQ0FMTF9QUkVBRFZfWH0sCisgCVtfX05SX3B3cml0ZXYgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQsIFBQTUVfU1lTQ0FMTF9QV1JJVEVWX0UsIFBQTUVfU1lTQ0FMTF9QV1JJVEVWX1h9LAorIAlbX19OUl9kdXAgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfTkVWRVJfRFJPUCB8IFVGX1NJTVBMRURSSVZFUl9LRUVQLCBQUE1FX1NZU0NBTExfRFVQX0UsIFBQTUVfU1lTQ0FMTF9EVVBfWH0sCisrI2lmZGVmIF9fTlJfZHVwMgorIAlbX19OUl9kdXAyIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfTkVWRVJfRFJPUCB8IFVGX1NJTVBMRURSSVZFUl9LRUVQLCBQUE1FX1NZU0NBTExfRFVQX0UsIFBQTUVfU1lTQ0FMTF9EVVBfWH0sCisrI2VuZGlmCisgCVtfX05SX2R1cDMgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9ORVZFUl9EUk9QIHwgVUZfU0lNUExFRFJJVkVSX0tFRVAsIFBQTUVfU1lTQ0FMTF9EVVBfRSwgUFBNRV9TWVNDQUxMX0RVUF9YfSwKKysjaWZkZWYgX19OUl9zaWduYWxmZAorIAlbX19OUl9zaWduYWxmZCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfTkVWRVJfRFJPUCwgUFBNRV9TWVNDQUxMX1NJR05BTEZEX0UsIFBQTUVfU1lTQ0FMTF9TSUdOQUxGRF9YfSwKKysjZW5kaWYKKyAJW19fTlJfc2lnbmFsZmQ0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX05FVkVSX0RST1AsIFBQTUVfU1lTQ0FMTF9TSUdOQUxGRF9FLCBQUE1FX1NZU0NBTExfU0lHTkFMRkRfWH0sCisgCVtfX05SX2tpbGwgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQsIFBQTUVfU1lTQ0FMTF9LSUxMX0UsIFBQTUVfU1lTQ0FMTF9LSUxMX1h9LAorIAlbX19OUl90a2lsbCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfVEtJTExfRSwgUFBNRV9TWVNDQUxMX1RLSUxMX1h9LAorIAlbX19OUl90Z2tpbGwgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfVEdLSUxMX0UsIFBQTUVfU1lTQ0FMTF9UR0tJTExfWH0sCisgCVtfX05SX25hbm9zbGVlcCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9BTFdBWVNfRFJPUCwgUFBNRV9TWVNDQUxMX05BTk9TTEVFUF9FLCBQUE1FX1NZU0NBTExfTkFOT1NMRUVQX1h9LAorIAlbX19OUl90aW1lcmZkX2NyZWF0ZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfTkVWRVJfRFJPUCwgUFBNRV9TWVNDQUxMX1RJTUVSRkRfQ1JFQVRFX0UsIFBQTUVfU1lTQ0FMTF9USU1FUkZEX0NSRUFURV9YfSwKKysjaWZkZWYgX19OUl9pbm90aWZ5X2luaXQKKyAJW19fTlJfaW5vdGlmeV9pbml0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX05FVkVSX0RST1AsIFBQTUVfU1lTQ0FMTF9JTk9USUZZX0lOSVRfRSwgUFBNRV9TWVNDQUxMX0lOT1RJRllfSU5JVF9YfSwKKysjZW5kaWYKKyAJW19fTlJfaW5vdGlmeV9pbml0MSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX05FVkVSX0RST1AsIFBQTUVfU1lTQ0FMTF9JTk9USUZZX0lOSVRfRSwgUFBNRV9TWVNDQUxMX0lOT1RJRllfSU5JVF9YfSwKKyAJW19fTlJfZmNobW9kYXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCwgUFBNRV9TWVNDQUxMX0ZDSE1PREFUX0UsIFBQTUVfU1lTQ0FMTF9GQ0hNT0RBVF9YfSwKKyAJW19fTlJfZmNobW9kIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCwgUFBNRV9TWVNDQUxMX0ZDSE1PRF9FLCBQUE1FX1NZU0NBTExfRkNITU9EX1h9LAorQEAgLTExNCwxNCArMTQ4LDIyIEBAIGNvbnN0IHN0cnVjdCBzeXNjYWxsX2V2dF9wYWlyIGdfc3lzY2FsbF8KKyAjZW5kaWYKKyAvKiBbX19OUl9vbGRfc2VsZWN0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0Je1VGX1VTRUQsIFBQTUVfR0VORVJJQ19FLCBQUE1FX0dFTkVSSUNfWH0sICovCisgCVtfX05SX3BzZWxlY3Q2IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9BTFdBWVNfRFJPUCwgUFBNRV9HRU5FUklDX0UsIFBQTUVfR0VORVJJQ19YfSwKKysjaWZkZWYgX19OUl9lcG9sbF9jcmVhdGUKKyAJW19fTlJfZXBvbGxfY3JlYXRlIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX0FMV0FZU19EUk9QLCBQUE1FX0dFTkVSSUNfRSwgUFBNRV9HRU5FUklDX1h9LAorKyNlbmRpZgorIAlbX19OUl9lcG9sbF9jdGwgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfQUxXQVlTX0RST1AsIFBQTUVfR0VORVJJQ19FLCBQUE1FX0dFTkVSSUNfWH0sCisrI2lmZGVmIF9fTlJfdXNlbGliCisgCVtfX05SX3VzZWxpYiAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9BTFdBWVNfRFJPUCwgUFBNRV9HRU5FUklDX0UsIFBQTUVfR0VORVJJQ19YfSwKKysjZW5kaWYKKyAJW19fTlJfc2NoZWRfc2V0cGFyYW0gLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX0FMV0FZU19EUk9QLCBQUE1FX0dFTkVSSUNfRSwgUFBNRV9HRU5FUklDX1h9LAorIAlbX19OUl9zY2hlZF9nZXRwYXJhbSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfQUxXQVlTX0RST1AsIFBQTUVfR0VORVJJQ19FLCBQUE1FX0dFTkVSSUNfWH0sCisgCVtfX05SX3N5c2xvZyAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9BTFdBWVNfRFJPUCwgUFBNRV9HRU5FUklDX0UsIFBQTUVfR0VORVJJQ19YfSwKKysjaWZkZWYgX19OUl9jaG1vZAorIAlbX19OUl9jaG1vZCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfQ0hNT0RfRSwgUFBNRV9TWVNDQUxMX0NITU9EX1h9LAorKyNlbmRpZgorKyNpZmRlZiBfX05SX2xjaG93bgorIAlbX19OUl9sY2hvd24gLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX0dFTkVSSUNfRSwgUFBNRV9HRU5FUklDX1h9LAorKyNlbmRpZgorICNpZmRlZiBfX05SX3V0aW1lCisgCVtfX05SX3V0aW1lIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9BTFdBWVNfRFJPUCwgUFBNRV9HRU5FUklDX0UsIFBQTUVfR0VORVJJQ19YfSwKKyAjZW5kaWYKK0BAIC0xMzEsOCArMTczLDkgQEAgY29uc3Qgc3RydWN0IHN5c2NhbGxfZXZ0X3BhaXIgZ19zeXNjYWxsXworICNpZmRlZiBfX05SX2FsYXJtCisgCVtfX05SX2FsYXJtIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9BTFdBWVNfRFJPUCwgUFBNRV9HRU5FUklDX0UsIFBQTUVfR0VORVJJQ19YfSwKKyAjZW5kaWYKKysjaWZkZWYgX19OUl9wYXVzZQorIAlbX19OUl9wYXVzZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfQUxXQVlTX0RST1AsIFBQTUVfR0VORVJJQ19FLCBQUE1FX0dFTkVSSUNfWH0sCistCisrI2VuZGlmCisgI2lmbmRlZiBfX05SX3NvY2tldGNhbGwKKyAJW19fTlJfc29ja2V0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX05FVkVSX0RST1AgfCBVRl9TSU1QTEVEUklWRVJfS0VFUCwgUFBNRV9TT0NLRVRfU09DS0VUX0UsIFBQTUVfU09DS0VUX1NPQ0tFVF9YfSwKKyAJW19fTlJfYmluZCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX05FVkVSX0RST1AsIFBQTUVfU09DS0VUX0JJTkRfRSwgIFBQTUVfU09DS0VUX0JJTkRfWH0sCitAQCAtMTg0LDkgKzIyNywxMyBAQCBjb25zdCBzdHJ1Y3Qgc3lzY2FsbF9ldnRfcGFpciBnX3N5c2NhbGxfCisgCVtfX05SX3Byb2Nlc3Nfdm1fd3JpdGV2IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAge1VGX1VTRUQsIFBQTUVfR0VORVJJQ19FLCBQUE1FX0dFTkVSSUNfWH0sCisgI2VuZGlmCisgCisrI2lmZGVmIF9fTlJfcmVuYW1lCisgCVtfX05SX3JlbmFtZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQsIFBQTUVfU1lTQ0FMTF9SRU5BTUVfRSwgUFBNRV9TWVNDQUxMX1JFTkFNRV9YfSwKKysjZW5kaWYKKyAJW19fTlJfcmVuYW1lYXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCwgUFBNRV9TWVNDQUxMX1JFTkFNRUFUX0UsIFBQTUVfU1lTQ0FMTF9SRU5BTUVBVF9YfSwKKysjaWZkZWYgX19OUl9zeW1saW5rCisgCVtfX05SX3N5bWxpbmsgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQsIFBQTUVfU1lTQ0FMTF9TWU1MSU5LX0UsIFBQTUVfU1lTQ0FMTF9TWU1MSU5LX1h9LAorKyNlbmRpZgorIAlbX19OUl9zeW1saW5rYXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfU1lNTElOS0FUX0UsIFBQTUVfU1lTQ0FMTF9TWU1MSU5LQVRfWH0sCisgCVtfX05SX3NlbmRmaWxlIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAge1VGX1VTRUQsIFBQTUVfU1lTQ0FMTF9TRU5ERklMRV9FLCBQUE1FX1NZU0NBTExfU0VOREZJTEVfWH0sCisgI2lmZGVmIF9fTlJfc2VuZGZpbGU2NAorQEAgLTI1NSw3ICszMDIsOSBAQCBjb25zdCBzdHJ1Y3Qgc3lzY2FsbF9ldnRfcGFpciBnX3N5c2NhbGxfCisgI2lmZGVmIF9fTlJfZ2V0cmVzZ2lkMzIKKyAJW19fTlJfZ2V0cmVzZ2lkMzIgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICB7VUZfVVNFRCwgUFBNRV9TWVNDQUxMX0dFVFJFU0dJRF9FLCBQUE1FX1NZU0NBTExfR0VUUkVTR0lEX1ggfSwKKyAjZW5kaWYKKysjaWZkZWYgX19OUl9nZXRkZW50cworIAlbX19OUl9nZXRkZW50cyAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfQUxXQVlTX0RST1AsIFBQTUVfU1lTQ0FMTF9HRVRERU5UU19FLCBQUE1FX1NZU0NBTExfR0VUREVOVFNfWH0sCisrI2VuZGlmCisgCVtfX05SX2dldGRlbnRzNjQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9BTFdBWVNfRFJPUCwgUFBNRV9TWVNDQUxMX0dFVERFTlRTNjRfRSwgUFBNRV9TWVNDQUxMX0dFVERFTlRTNjRfWH0sCisgI2lmZGVmIF9fTlJfc2V0bnMKKyAJW19fTlJfc2V0bnMgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCwgUFBNRV9TWVNDQUxMX1NFVE5TX0UsIFBQTUVfU1lTQ0FMTF9TRVROU19YfSwKK0BAIC0yOTgsMTkgKzM0NywzMyBAQCBjb25zdCBlbnVtIHBwbV9zeXNjYWxsX2NvZGUgZ19zeXNjYWxsX2NvCisgCVtfX05SX2V4aXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfRVhJVCwKKyAJW19fTlJfcmVhZCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19SRUFELAorIAlbX19OUl93cml0ZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19XUklURSwKKysjaWZkZWYgX19OUl9vcGVuCisgCVtfX05SX29wZW4gLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfT1BFTiwKKysjZW5kaWYKKyAJW19fTlJfY2xvc2UgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfQ0xPU0UsCisrI2lmZGVmIF9fTlJfY3JlYXQKKyAJW19fTlJfY3JlYXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfQ1JFQVQsCisrI2VuZGlmCisrI2lmZGVmIF9fTlJfbGluaworIAlbX19OUl9saW5rIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0xJTkssCisrI2VuZGlmCisrI2lmZGVmIF9fTlJfdW5saW5rCisgCVtfX05SX3VubGluayAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19VTkxJTkssCisrI2VuZGlmCisgCVtfX05SX2NoZGlyIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0NIRElSLAorICNpZmRlZiBfX05SX3RpbWUKKyAJW19fTlJfdGltZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19USU1FLAorICNlbmRpZgorKyNpZmRlZiBfX05SX21rbm9kCisgCVtfX05SX21rbm9kIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX01LTk9ELAorKyNlbmRpZgorKyNpZmRlZiBfX05SX2NobW9kCisgCVtfX05SX2NobW9kIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0NITU9ELAorKyNlbmRpZgorIC8qIFtfX05SX2xjaG93bjE2IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX05SX0xDSE9XTjE2LCAqLworKyNpZmRlZiBfX05SX3N0YXQKKyAJW19fTlJfc3RhdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19TVEFULAorKyNlbmRpZgorIAlbX19OUl9sc2VlayAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19MU0VFSywKKyAJW19fTlJfZ2V0cGlkIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0dFVFBJRCwKKyAJW19fTlJfbW91bnQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfTU9VTlQsCitAQCAtMzIyLDE3ICszODUsMjcgQEAgY29uc3QgZW51bSBwcG1fc3lzY2FsbF9jb2RlIGdfc3lzY2FsbF9jbworIAlbX19OUl9hbGFybSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19BTEFSTSwKKyAjZW5kaWYKKyAJW19fTlJfZnN0YXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfRlNUQVQsCisrI2lmZGVmIF9fTlJfcGF1c2UKKyAJW19fTlJfcGF1c2UgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfUEFVU0UsCisrI2VuZGlmCisgI2lmZGVmIF9fTlJfdXRpbWUKKyAJW19fTlJfdXRpbWUgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfVVRJTUUsCisgI2VuZGlmCisgCVtfX05SX3N5bmMgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfU1lOQywKKyAJW19fTlJfa2lsbCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19LSUxMLAorKyNpZmRlZiBfX05SX3JlbmFtZQorIAlbX19OUl9yZW5hbWUgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfUkVOQU1FLAorKyNlbmRpZgorKyNpZmRlZiBfX05SX21rZGlyCisgCVtfX05SX21rZGlyIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX01LRElSLAorKyNlbmRpZgorKyNpZmRlZiBfX05SX3JtZGlyCisgCVtfX05SX3JtZGlyIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1JNRElSLAorKyNlbmRpZgorIAlbX19OUl9kdXAgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfRFVQLAorKyNpZmRlZiBfX05SX3BpcGUKKyAJW19fTlJfcGlwZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19QSVBFLAorKyNlbmRpZgorIAlbX19OUl90aW1lcyAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19USU1FUywKKyAJW19fTlJfYnJrIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0JSSywKKyAvKiBbX19OUl9zZXRnaWQxNiAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19OUl9TRVRHSUQxNiwgKi8KK0BAIC0zNDUsMTAgKzQxOCwxNiBAQCBjb25zdCBlbnVtIHBwbV9zeXNjYWxsX2NvZGUgZ19zeXNjYWxsX2NvCisgCVtfX05SX3NldHBnaWQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfU0VUUEdJRCwKKyAJW19fTlJfdW1hc2sgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfVU1BU0ssCisgCVtfX05SX2Nocm9vdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19DSFJPT1QsCisrI2lmZGVmIF9fTlJfdXN0YXQKKyAJW19fTlJfdXN0YXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfVVNUQVQsCisrI2VuZGlmCisrI2lmZGVmIF9fTlJfZHVwMgorIAlbX19OUl9kdXAyIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0RVUDIsCisrI2VuZGlmCisgCVtfX05SX2dldHBwaWQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfR0VUUFBJRCwKKysjaWZkZWYgX19OUl9nZXRwZ3JwCisgCVtfX05SX2dldHBncnAgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfR0VUUEdSUCwKKysjZW5kaWYKKyAJW19fTlJfc2V0c2lkIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1NFVFNJRCwKKyAJW19fTlJfc2V0aG9zdG5hbWUgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfU0VUSE9TVE5BTUUsCisgCVtfX05SX3NldHJsaW1pdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19TRVRSTElNSVQsCitAQCAtMzU5LDEwICs0MzgsMTggQEAgY29uc3QgZW51bSBwcG1fc3lzY2FsbF9jb2RlIGdfc3lzY2FsbF9jbworIC8qIFtfX05SX2dldGdyb3VwczE2IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX05SX0dFVEdST1VQUzE2LCAqLworIC8qIFtfX05SX3NldGdyb3VwczE2IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX05SX1NFVEdST1VQUzE2LCAqLworIC8qIFtfX05SX29sZF9zZWxlY3QgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfTlJfT0xEX1NFTEVDVCwgKi8KKysjaWZkZWYgX19OUl9zeW1saW5rCisgCVtfX05SX3N5bWxpbmsgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfU1lNTElOSywKKysjZW5kaWYKKysjaWZkZWYgX19OUl9sc3RhdAorIAlbX19OUl9sc3RhdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19MU1RBVCwKKysjZW5kaWYKKysjaWZkZWYgX19OUl9yZWFkbGluaworIAlbX19OUl9yZWFkbGluayAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19SRUFETElOSywKKysjZW5kaWYKKysjaWZkZWYgX19OUl91c2VsaWIKKyAJW19fTlJfdXNlbGliIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1VTRUxJQiwKKysjZW5kaWYKKyAJW19fTlJfc3dhcG9uIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1NXQVBPTiwKKyAJW19fTlJfcmVib290IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1JFQk9PVCwKKyAvKiBbX19OUl9vbGRfcmVhZGRpciAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19OUl9PTERfUkVBRERJUiwgKi8KK0BAIC0zOTksMTIgKzQ4NiwxNiBAQCBjb25zdCBlbnVtIHBwbV9zeXNjYWxsX2NvZGUgZ19zeXNjYWxsX2NvCisgCVtfX05SX2RlbGV0ZV9tb2R1bGUgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfREVMRVRFX01PRFVMRSwKKyAJW19fTlJfZ2V0cGdpZCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19HRVRQR0lELAorIAlbX19OUl9mY2hkaXIgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfRkNIRElSLAorKyNpZmRlZiBfX05SX3N5c2ZzCisgCVtfX05SX3N5c2ZzIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1NZU0ZTLAorKyNlbmRpZgorIAlbX19OUl9wZXJzb25hbGl0eSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19QRVJTT05BTElUWSwKKyAvKiBbX19OUl9zZXRmc3VpZDE2IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX05SX1NFVEZTVUlEMTYsICovCisgLyogW19fTlJfc2V0ZnNnaWQxNiAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19OUl9TRVRGU0dJRDE2LCAqLworIC8qIFtfX05SX2xsc2VlayAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19OUl9MTFNFRUssICovCisrI2lmZGVmIF9fTlJfZ2V0ZGVudHMKKyAJW19fTlJfZ2V0ZGVudHMgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfR0VUREVOVFMsCisrI2VuZGlmCisgI2lmZGVmIF9fTlJfc2VsZWN0CisgCVtfX05SX3NlbGVjdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19TRUxFQ1QsCisgI2VuZGlmCitAQCAtNDMxLDcgKzUyMiw5IEBAIGNvbnN0IGVudW0gcHBtX3N5c2NhbGxfY29kZSBnX3N5c2NhbGxfY28KKyAJW19fTlJfbXJlbWFwIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX01SRU1BUCwKKyAvKiBbX19OUl9zZXRyZXN1aWQxNiAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19OUl9TRVRSRVNVSUQxNiwgKi8KKyAvKiBbX19OUl9nZXRyZXN1aWQxNiAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19OUl9HRVRSRVNVSUQxNiwgKi8KKysjaWZkZWYgX19OUl9wb2xsCisgCVtfX05SX3BvbGwgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfUE9MTCwKKysjZW5kaWYKKyAvKiBbX19OUl9zZXRyZXNnaWQxNiAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19OUl9TRVRSRVNHSUQxNiwgKi8KKyAvKiBbX19OUl9nZXRyZXNnaWQxNiAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19OUl9HRVRSRVNHSUQxNiwgKi8KKyAJW19fTlJfcHJjdGwgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfUFJDVEwsCitAQCAtNDUzLDEzICs1NDYsMTcgQEAgY29uc3QgZW51bSBwcG1fc3lzY2FsbF9jb2RlIGdfc3lzY2FsbF9jbworIAlbX19OUl9nZXRybGltaXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfR0VUUkxJTUlULAorICNlbmRpZgorIC8qIFtfX05SX21tYXBfcGdvZmYgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfTlJfTU1BUF9QR09GRiwgKi8KKysjaWZkZWYgX19OUl9sY2hvd24KKyAJW19fTlJfbGNob3duIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0xDSE9XTiwKKysjZW5kaWYKKyAJW19fTlJfc2V0cmV1aWQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfU0VUUkVVSUQsCisgCVtfX05SX3NldHJlZ2lkIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1NFVFJFR0lELAorIAlbX19OUl9nZXRncm91cHMgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfR0VUR1JPVVBTLAorIAlbX19OUl9zZXRncm91cHMgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfU0VUR1JPVVBTLAorIAlbX19OUl9mY2hvd24gLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfRkNIT1dOLAorKyNpZmRlZiBfX05SX2Nob3duCisgCVtfX05SX2Nob3duIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0NIT1dOLAorKyNlbmRpZgorIAlbX19OUl9zZXRmc3VpZCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19TRVRGU1VJRCwKKyAJW19fTlJfc2V0ZnNnaWQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfU0VURlNHSUQsCisgCVtfX05SX3Bpdm90X3Jvb3QgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfUElWT1RfUk9PVCwKK0BAIC00OTQsOSArNTkxLDEzIEBAIGNvbnN0IGVudW0gcHBtX3N5c2NhbGxfY29kZSBnX3N5c2NhbGxfY28KKyAJW19fTlJfaW9fc3VibWl0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0lPX1NVQk1JVCwKKyAJW19fTlJfaW9fY2FuY2VsIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0lPX0NBTkNFTCwKKyAJW19fTlJfZXhpdF9ncm91cCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19FWElUX0dST1VQLAorKyNpZmRlZiBfX05SX2Vwb2xsX2NyZWF0ZQorIAlbX19OUl9lcG9sbF9jcmVhdGUgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfRVBPTExfQ1JFQVRFLAorKyNlbmRpZgorIAlbX19OUl9lcG9sbF9jdGwgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfRVBPTExfQ1RMLAorKyNpZmRlZiBfX05SX2Vwb2xsX3dhaXQKKyAJW19fTlJfZXBvbGxfd2FpdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19FUE9MTF9XQUlULAorKyNlbmRpZgorIAlbX19OUl9yZW1hcF9maWxlX3BhZ2VzIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1JFTUFQX0ZJTEVfUEFHRVMsCisgCVtfX05SX3NldF90aWRfYWRkcmVzcyAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19TRVRfVElEX0FERFJFU1MsCisgCVtfX05SX3RpbWVyX2NyZWF0ZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19USU1FUl9DUkVBVEUsCitAQCAtNTA5LDcgKzYxMCw5IEBAIGNvbnN0IGVudW0gcHBtX3N5c2NhbGxfY29kZSBnX3N5c2NhbGxfY28KKyAJW19fTlJfY2xvY2tfZ2V0cmVzIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0NMT0NLX0dFVFJFUywKKyAJW19fTlJfY2xvY2tfbmFub3NsZWVwIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0NMT0NLX05BTk9TTEVFUCwKKyAJW19fTlJfdGdraWxsIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1RHS0lMTCwKKysjaWZkZWYgX19OUl91dGltZXMKKyAJW19fTlJfdXRpbWVzIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1VUSU1FUywKKysjZW5kaWYKKyAJW19fTlJfbXFfb3BlbiAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19NUV9PUEVOLAorIAlbX19OUl9tcV91bmxpbmsgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfTVFfVU5MSU5LLAorIAlbX19OUl9tcV90aW1lZHNlbmQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfTVFfVElNRURTRU5ELAorQEAgLTUyMywxNCArNjI2LDE4IEBAIGNvbnN0IGVudW0gcHBtX3N5c2NhbGxfY29kZSBnX3N5c2NhbGxfY28KKyAJW19fTlJfa2V5Y3RsIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0tFWUNUTCwKKyAJW19fTlJfaW9wcmlvX3NldCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19JT1BSSU9fU0VULAorIAlbX19OUl9pb3ByaW9fZ2V0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0lPUFJJT19HRVQsCisrI2lmZGVmIF9fTlJfaW5vdGlmeV9pbml0CisgCVtfX05SX2lub3RpZnlfaW5pdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19JTk9USUZZX0lOSVQsCisrI2VuZGlmCisgCVtfX05SX2lub3RpZnlfYWRkX3dhdGNoIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0lOT1RJRllfQUREX1dBVENILAorIAlbX19OUl9pbm90aWZ5X3JtX3dhdGNoIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0lOT1RJRllfUk1fV0FUQ0gsCisgCVtfX05SX29wZW5hdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19PUEVOQVQsCisgCVtfX05SX21rZGlyYXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfTUtESVJBVCwKKyAJW19fTlJfbWtub2RhdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19NS05PREFULAorIAlbX19OUl9mY2hvd25hdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19GQ0hPV05BVCwKKysjaWZkZWYgX19OUl9mdXRpbWVzYXQKKyAJW19fTlJfZnV0aW1lc2F0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0ZVVElNRVNBVCwKKysjZW5kaWYKKyAJW19fTlJfdW5saW5rYXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfVU5MSU5LQVQsCisgCVtfX05SX3JlbmFtZWF0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1JFTkFNRUFULAorIAlbX19OUl9saW5rYXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfTElOS0FULAorQEAgLTU1MSw5ICs2NTgsMTMgQEAgY29uc3QgZW51bSBwcG1fc3lzY2FsbF9jb2RlIGdfc3lzY2FsbF9jbworICNlbmRpZgorIAlbX19OUl9lcG9sbF9wd2FpdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19FUE9MTF9QV0FJVCwKKyAJW19fTlJfdXRpbWVuc2F0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1VUSU1FTlNBVCwKKysjaWZkZWYgX19OUl9zaWduYWxmZAorIAlbX19OUl9zaWduYWxmZCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19TSUdOQUxGRCwKKysjZW5kaWYKKyAJW19fTlJfdGltZXJmZF9jcmVhdGUgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfVElNRVJGRF9DUkVBVEUsCisrI2lmZGVmIF9fTlJfZXZlbnRmZAorIAlbX19OUl9ldmVudGZkIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0VWRU5URkQsCisrI2VuZGlmCisgCVtfX05SX3RpbWVyZmRfc2V0dGltZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19USU1FUkZEX1NFVFRJTUUsCisgCVtfX05SX3RpbWVyZmRfZ2V0dGltZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19USU1FUkZEX0dFVFRJTUUsCisgCVtfX05SX3NpZ25hbGZkNCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19TSUdOQUxGRDQsCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc3lzZGlnL3N5c2RpZy9maXgtdWludDY0LWNvbnN0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3N5c2RpZy9zeXNkaWcvZml4LXVpbnQ2NC1jb25zdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Yzc1NjI5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3N5c2RpZy9zeXNkaWcvZml4LXVpbnQ2NC1jb25zdC5wYXRjaApAQCAtMCwwICsxLDE2IEBACitGaXggeDg2IGJ1aWxkCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworLS0tIGEvdXNlcnNwYWNlL2xpYnNpbnNwL2Nncm91cF9saW1pdHMuY3BwCisrKysgYi91c2Vyc3BhY2UvbGlic2luc3AvY2dyb3VwX2xpbWl0cy5jcHAKK0BAIC05LDcgKzksNyBAQCBuYW1lc3BhY2UgeworIC8vIFRoaXMgcmVwb3J0cyBleHRyZW1lbHkgbGFyZ2UgdmFsdWVzIChlLmcuIGFsbW9zdC1idXQtbm90LXF1aXRlIDlFaUIgYXMgc2V0IGJ5IGs4cykgYXMgdW5saW1pdGVkLgorIC8vIE5vdGU6IHdlIHVzZSB0aGUgc2FtZSBtYXhpbXVtIHZhbHVlIGZvciBjcHUgc2hhcmVzL3F1b3RhcyBhcyB3ZWxsOyB0aGUgdHlwaWNhbCB2YWx1ZXMgYXJlIG11Y2ggbG93ZXIKKyAvLyBhbmQgc28gc2hvdWxkIG5ldmVyIGV4Y2VlZCBDR1JPVVBfVkFMX01BWCBlaXRoZXIKKy1jb25zdGV4cHIgY29uc3QgaW50NjRfdCBDR1JPVVBfVkFMX01BWCA9ICgxVUwgPDwgNDJ1KSAtIDE7CisrY29uc3RleHByIGNvbnN0IGludDY0X3QgQ0dST1VQX1ZBTF9NQVggPSAoMVVMTCA8PCA0MnUpIC0gMTsKKyAKKyAvKioKKyAgKiBcYnJpZWYgUmVhZCBhIHNpbmdsZSBpbnQ2NF90IHZhbHVlIGZyb20gY2dyb3VwZnMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zeXNkaWcvc3lzZGlnX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zeXNkaWcvc3lzZGlnX2dpdC5iYgppbmRleCA0ZjU4MjgxLi4wNGEwMjJhIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc3lzZGlnL3N5c2RpZ19naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3N5c2RpZy9zeXNkaWdfZ2l0LmJiCkBAIC0zLDM5ICszLDUyIEBACiBzeXN0ZW0gc3RhdGUgYW5kIGFjdGl2aXR5IGZyb20gYSBydW5uaW5nIExpbnV4IGluc3RhbmNlLCB0aGVuIHNhdmUsIFwKIGZpbHRlciBhbmQgYW5hbHl6ZS4iCiBIT01FUEFHRSA9ICJodHRwOi8vd3d3LnN5c2RpZy5vcmcvIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wICYgKE1JVCB8IEdQTC0yLjApIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjhmZWUzZDU5Nzk3NTQ2Y2ZmYWIwNGYzYjg4YjJkNDQiCiAKIGluaGVyaXQgY21ha2UgcGtnY29uZmlnCiAKLU9FQ01BS0VfR0VORVJBVE9SID0gIlVuaXggTWFrZWZpbGVzIgorI09FQ01BS0VfR0VORVJBVE9SID0gIlVuaXggTWFrZWZpbGVzIgorSklUID89ICJqaXQiCitKSVRfbWlwc2FyY2huMzIgPSAiIgorSklUX21pcHNhcmNobjY0ID0gIiIKK0pJVF9yaXNjdjY0ID0gIiIKK0pJVF9yaXNjdjMyID0gIiIKIAotREVQRU5EUyA9ICJsdWFqaXQgemxpYiBuY3Vyc2VzIgorREVQRU5EUyArPSAibHVhJHtKSVR9IHpsaWIgYy1hcmVzIGdycGMtbmF0aXZlIGdycGMgY3VybCBuY3Vyc2VzIGpzb25jcHAgdGJiIGpxIG9wZW5zc2wgZWxmdXRpbHMgcHJvdG9idWYgcHJvdG9idWYtbmF0aXZlIGpxLW5hdGl2ZSIKIFJERVBFTkRTXyR7UE59ID0gImJhc2giCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9kcmFpb3Mvc3lzZGlnLmdpdDticmFuY2g9bWFzdGVyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGlic2luc3AtUG9ydC10by1idWlsZC13aXRoLWx1YS01LjIucGF0Y2ggXAorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2RyYWlvcy9zeXNkaWcuZ2l0O2JyYW5jaD1kZXYgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtYnVpbGQtd2l0aC1MdWFKSVQtMi4xLWJldGFzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1iYWNrdHJhY2UtQVBJcy1hcmUtZ2xpYmMtc3BlY2lmaS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtdWludDY0LWNvbnN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FhcmNoNjQucGF0Y2ggXAogICAgICAgICAgICIKLVNSQ1JFViA9ICI4NWQxNmYzM2E4MmExN2Y4N2NjZGJjMDg4NzQ5MjcxYzcxZDg3MDEzIgotUFYgPSAiMC4xLjEwMitnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICI4ZGFlZWY4ZGE3NTJjNWYwN2Y0MzkzOTFiYzIwYzU5NDhlYjExNDcwIgorUFYgPSAiMC4yNi42IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1ESVJfRVRDPSIvZXRjIgotRVhUUkFfT0VDTUFLRSA9ICcgLURVU0VfQlVORExFRF9MVUFKSVQ9Ik9GRiIgXAotICAgICAgICAgICAgICAgICAgLURVU0VfQlVORExFRF9aTElCPSJPRkYiIFwKLSAgICAgICAgICAgICAgICAgIC1EQlVJTERfRFJJVkVSPSJPRkYiIFwKLSAgICAgICAgICAgICAgICAgIC1EVVNFX0JVTkRMRURfTkNVUlNFUz0iT0ZGIiBcCi0gICAgICAgICAgICAgICAgICAtRERJUl9FVEM9IiR7RElSX0VUQ30iIFwKLSAgICAgICAgICAgICAgICAnCitFWFRSQV9PRUNNQUtFID0gIlwKKyAgICAgICAgICAgICAgICAtREJVSUxEX0RSSVZFUj1PRkYgXAorICAgICAgICAgICAgICAgIC1EVVNFX0JVTkRMRURfREVQUz1PRkYgXAorICAgICAgICAgICAgICAgIC1EVVNFX0JVTkRMRURfQjY0PU9OIFwKKyAgICAgICAgICAgICAgICAtRENSRUFURV9URVNUX1RBUkdFVFM9T0ZGIFwKKyAgICAgICAgICAgICAgICAtRERJUl9FVEM9JHtzeXNjb25mZGlyfSBcCisgICAgICAgICAgICAgICAgLURMVUFfSU5DTFVERV9ESVI9JHtTVEFHSU5HX0lOQ0RJUn0vbHVhaml0LTIuMSBcCisgICAgICAgICAgICAgICAgLURMVUFfTElCUkFSWT1saWJsdWFqaXQtNS4xLnNvIFwKKyIKIAogRklMRVNfJHtQTn0gKz0gIiBcCiAgICAgJHtESVJfRVRDfS8qIFwKICAgICAke2RhdGFkaXJ9L3pzaC8qIFwKICAgICAke3ByZWZpeH0vc3JjLyogIFwKICIKLQotIyBsdWFqaXQgbm90IHN1cHBvcnRlZCBvbiBBYXJjaDY0Ci1DT01QQVRJQkxFX0hPU1QgPSAiXig/IWFhcmNoNjQpLioiCi0KKyMgVXNlIGdldGFkZHJpbmZvX2EgaXMgYSBHTlUgZXh0ZW5zaW9uIGluIGxpYnNpbnNwCisjIEl0IHNob3VsZCBiZSBmaXhlZCBpbiBzeXNkaWcsIHVudGlsIHRoZW4gZGlzYWJsZQorIyBvbiBtdXNsCisjIFNvbWV0aGluZyBsaWtlIHRoaXMgaHR0cHM6Ly9jb2RlLnZpZGVvbGFuLm9yZy9lUGlyYXQvdmxjLy0vY29tbWl0LzAxZmQ5ZmU0YzdmNmM1NTU4ZjczNDVmMzhhYmYwMTUyZTE3ODUzYWIgIGlzIG5lZWRlZCB0byBmaXggaXQKK0NPTVBBVElCTEVfSE9TVF9saWJjLW11c2wgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9taXBzID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfcmlzY3Y2NCA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX3Jpc2N2MzIgPSAibnVsbCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90bXV4L3RtdXhfMi42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RtdXgvdG11eF8yLjYuYmIKaW5kZXggZmJhNTE1Ni4uMTdjMmZiYSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RtdXgvdG11eF8yLjYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RtdXgvdG11eF8yLjYuYmIKQEAgLTExLDYgKzExLDggQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJkNTQxZmYzOTIyNDlmOTRjNGYzNjM1NzkzNTU2ZjgyNyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMTdjZDE3MGE5NGQ3YjU4YzA2OTg3NTJlMWY0ZjI2M2FiNmRjNDc0MjUyMzBkZjdlNTNhNjQzNWNjN2NkN2U4IgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3RtdXgvdG11eC9yZWxlYXNlcyIKKwogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCiAKIFBBQ0tBR0VDT05GSUcgPz89ICIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdHJpZ2dlcmhhcHB5L3RyaWdnZXJoYXBweV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdHJpZ2dlcmhhcHB5L3RyaWdnZXJoYXBweV9naXQuYmIKaW5kZXggMjRkZjc1MC4uMzhjZTRmNSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RyaWdnZXJoYXBweS90cmlnZ2VyaGFwcHlfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90cmlnZ2VyaGFwcHkvdHJpZ2dlcmhhcHB5X2dpdC5iYgpAQCAtMTEsNyArMTEsNyBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIHVwZGF0ZS1yYy5kIHN5c3RlbWQKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgcGVybG5hdGl2ZSB1cGRhdGUtcmMuZCBzeXN0ZW1kCiAKIFBBQ0tBR0VDT05GSUcgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCdzeXN0ZW1kJywnJyxkKX0iCiBQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIiwsc3lzdGVtZCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC91cG0vdXBtLzAwMDEtY21ha2UtRGlzYWJsZS11c2luZy1Xbm8tbWF5YmUtdW5pbml0aWFsaXplZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC91cG0vdXBtLzAwMDEtY21ha2UtRGlzYWJsZS11c2luZy1Xbm8tbWF5YmUtdW5pbml0aWFsaXplZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjU4MTg1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3VwbS91cG0vMDAwMS1jbWFrZS1EaXNhYmxlLXVzaW5nLVduby1tYXliZS11bmluaXRpYWxpemVkLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gMTY5ZjYyNzcwZjYzYTQzYjE1ZDRkNGM4MjMzNmZkNTdjODQ2N2NmZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDQgQXByIDIwMjAgMjE6NDM6NTEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gY21ha2U6IERpc2FibGUgdXNpbmcgLVduby1tYXliZS11bmluaXRpYWxpemVkCisKK1RoaXMgd2FybmluZyBjYXVzZXMgY2xhbmcgYnVpbGRzIHRvIGZhaWwgYmVjYXVzZSB0aGlzIGlzIG5vdCBhCityZWNvZ25pc2VkIHdhcm5pbmcgd2l0aCBjbGFuZworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9DTWFrZUxpc3RzLnR4dCB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKKy0tLSBhL3NyYy9DTWFrZUxpc3RzLnR4dAorKysrIGIvc3JjL0NNYWtlTGlzdHMudHh0CitAQCAtNiw3ICs2LDYgQEAKKyBzZXQgKFNXSUdfQ1hYX0RJU0FCTEVfV0FSTklOR1MgLVduby1lcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtV25vLWRlbGV0ZS1ub24tdmlydHVhbC1kdG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1Xbm8tdW51c2VkLWZ1bmN0aW9uCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1Xbm8tbWF5YmUtdW5pbml0aWFsaXplZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtV25vLXN0cmljdC1hbGlhc2luZykKKyAKKyAjIElmIGJ1aWxkaW5nIHVuZGVyIGFuZHJvaWQsIG1ha2Ugc3VyZSBzd2lnIGdldHMgYW4gQU5EUk9JRCBmbGFnCistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC0xMTUsOCArMTE1LDcgQEAgZW5kaWYgKFdFUlJPUikKKyB1cG1fYWRkX2NvbXBpbGVfZmxhZ3MoQyAke0NfQ1hYX1dBUk5JTkdfRkxBR1N9CisgICAtV2luaXQtc2VsZgorICAgLVdpbXBsaWNpdAorLSAgLVdzaWduLWNvbXBhcmUKKy0gIC1XbWlzc2luZy1wYXJhbWV0ZXItdHlwZSkKKysgIC1Xc2lnbi1jb21wYXJlKQorIAorICMgU2V0IENYWCBjb21waWxlciB3YXJuaW5nIGZsYWdzIGF0IHRvcC1sZXZlbCBzY29wZSBhbmQgZW1pdCBhIHdhcm5pbmcgYWJvdXQKKyAjIHVuc3VwcG9ydGVkIGZsYWdzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL3VwbV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL3VwbV9naXQuYmIKaW5kZXggNmRiOGY4OC4uNWIzNTg1YyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3VwbS91cG1fZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC91cG0vdXBtX2dpdC5iYgpAQCAtMTAsMTEgKzEwLDEyIEBACiBTUkNSRVYgPSAiNWNmMjBkZjk2YzZiMzVjMTlkNWI4NzFiYTRlMzE5ZTk2YjRkZjcyZCIKIFBWID0gIjIuMC4wK2dpdCR7U1JDUFZ9IgogCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaW50ZWwtaW90LWRldmtpdC8ke0JQTn0uZ2l0O3Byb3RvY29sPWh0dHAgXAorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2VjbGlwc2UvJHtCUE59LmdpdDtwcm90b2NvbD1odHRwIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQ01ha2VMaXN0cy50eHQtVXNlLVNXSUdfU1VQUE9SVF9GSUxFUy10by1maW5kLXRoZS1saS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1zdGRpbnQtdHlwZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1pbml0aWFsaXplLWxvY2FsLXZhcmlhYmxlcy1iZWZvcmUtdXNlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY21ha2UtRGlzYWJsZS1Xbm8tbWlzbGVhZGluZy1pbmRlbnRhdGlvbi13aXRoLWNsYW5nLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNtYWtlLURpc2FibGUtdXNpbmctV25vLW1heWJlLXVuaW5pdGlhbGl6ZWQucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ19VUklfYXBwZW5kX3Rvb2xjaGFpbi1jbGFuZ194ODYgPSAiIGZpbGU6Ly8wMDAxLW5tZWFfZ3BzLUxpbmstd2l0aC1sYXRvbWljLnBhdGNoICIKQEAgLTI2LDYgKzI3LDggQEAKIAogaW5oZXJpdCBkaXN0dXRpbHMzLWJhc2UgY21ha2UgcGtnY29uZmlnCiAKK0VYVFJBX09FQ01BS0UgKz0gIi1VUFlUSE9OX0VYRUNVVEFCTEUgLURXRVJST1I9b2ZmIgorCiAjIG92ZXJyaWRlIHRoaXMgaW4gbG9jYWwuY29uZiB0byBnZXQgbmVlZGVkIGJpbmRpbmdzLgogIyBCSU5ESU5HU19wbi11cG09InB5dGhvbiIKICMgd2lsbCByZXN1bHQgaW4gb25seSB0aGUgcHl0aG9uIGJpbmRpbmdzIGJlaW5nIGJ1aWx0L3BhY2thZ2VkLgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3d4d2lkZ2V0cy93eHdpZGdldHNfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3d4d2lkZ2V0cy93eHdpZGdldHNfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MzM3YjcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvd3h3aWRnZXRzL3d4d2lkZ2V0c19naXQuYmIKQEAgLTAsMCArMSw4MiBAQAorU1VNTUFSWSA9ICJDcm9zcy1QbGF0dGZvcm0gR1VJIExpYnJhcnkiCitERVNDUklQVElPTSA9ICJ3eFdpZGdldHMgaXMgYSBmcmVlIGFuZCBvcGVuIHNvdXJjZSBjcm9zcy1wbGF0Zm9ybSBDKysgZnJhbWV3b3JrIGZvciB3cml0aW5nIGFkdmFuY2VkIEdVSSBhcHBsaWNhdGlvbnMgdXNpbmcgbmF0aXZlIGNvbnRyb2xzLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3Lnd4d2lkZ2V0cy5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL3RyYWMud3h3aWRnZXRzLm9yZy8iCisKKyMgd3hXaWRnZXRzIGxpY2VuY2UgaXMgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIExHUEwgZXhwbGljaXRseSBhbGxvd2luZyBub3QKKyMgZGlzdHJpYnV0aW5nIHRoZSBzb3VyY2VzIG9mIGFuIGFwcGxpY2F0aW9uIHVzaW5nIHRoZSBsaWJyYXJ5IGV2ZW4gaW4gdGhlCisjIGNhc2Ugb2Ygc3RhdGljIGxpbmtpbmcuCitMSUNFTlNFID0gInd4V2lkZ2V0cyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvbGljZW5jZS50eHQ7bWQ1PTk4MWY1MGE5MzQ4Mjg2MjBiMDhmNDRkNzVkYjU1N2M2IgorCitpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3F0JywgJ2NtYWtlX3F0NScsICdjbWFrZScsIGQpfQoraW5oZXJpdCBmZWF0dXJlc19jaGVjayBsaWJfcGFja2FnZQorCisjIEFsbCB0b29sa2l0LWNvbmZpZ3MgZXhjZXB0ICdub19ndWknIHJlcXVpcmUgeDExIGV4cGxpY2l0bHkgKHNlZSB0b29sa2l0LmNtYWtlKQorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ25vX2d1aScsICcnLCAneDExJywgZCl9IgorCitERVBFTkRTICs9ICIgXAorICAgIGpwZWcgXAorICAgIGxpYnBuZyBcCisgICAgdGlmZiBcCisiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS93eFdpZGdldHMvd3hXaWRnZXRzLmdpdCIKK1BWID0gIjMuMS4zIgorU1JDUkVWPSAiOGE0MGQyM2IyN2VkMWM4MGI1YTJjYTlmN2U4NDYxZGY0ZmJjMWEzMSIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKKyMgVGhlc2UgY2FuIGJlIGVpdGhlciAnYnVpbHRpbicgb3IgJ3N5cycgYW5kIGJ1aWx0aW4gbWVhbnMgY2xvbmVkIHNvdXJlcyBhcmUKKyMgYnVpbGQuIFNvIHRoZXNlIGNhbm5vdCBiZSBQQUNLQUdFQ09ORklHcyBhbmQgbGV0J3MgdXNlIGxpYnMgd2hlcmUgd2UgY2FuIChzZWUKKyMgREVQRU5EUykKK0VYVFJBX09FQ01BS0UgKz0gIiBcCisgICAgLUR3eFVTRV9MSUJKUEVHPXN5cyBcCisgICAgLUR3eFVTRV9MSUJQTkc9c3lzIFwKKyAgICAtRHd4VVNFX0xJQlRJRkY9c3lzIFwKKyAgICAtRHd4VVNFX1JFR0VYPWJ1aWx0aW4gXAorIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCisgICAgLURIQVZFX0xPQ0FMRV9UPU9GRiBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz0gImd0ayIKKworIyBOb3RlIG9uIHRvb2xraXQtUEFDS0FHRUNPTkZJR3M6IHNlbGVjdCBleGFjdGx5IG9uZSBvZiAnbm9fZ3VpJyAvICdndGsnIC8gJ3F0JworUEFDS0FHRUNPTkZJR1tub19ndWldID0gIi1Ed3hVU0VfR1VJPU9GRiwsLCwscXQgZ3RrIgorUEFDS0FHRUNPTkZJR1tndGtdID0gIi1Ed3hCVUlMRF9UT09MS0lUPWd0azMgLUR3eFVTRV9HVUk9T04sLGd0ayszLCwsbm9fZ3VpIHF0IgorUEFDS0FHRUNPTkZJR1txdF0gPSAiLUR3eEJVSUxEX1RPT0xLSVQ9cXQgIC1Ed3hVU0VfR1VJPU9OLCxxdGJhc2UsLCxub19ndWkgZ3RrIgorcHl0aG9uICgpIHsKKyAgICBwa2djb25maWcgPSBkLmdldFZhcignUEFDS0FHRUNPTkZJRycpCisgICAgaWYgKG5vdCAnbm9fZ3VpJyBpbiBwa2djb25maWcpIGFuZCAobm90ICdndGsnIGluIHBrZ2NvbmZpZykgYW5kIChub3QgJ3F0JyBpbiBwa2djb25maWcpOgorICAgICAgICBiYi5lcnJvcigiUEFDS0FHRUNPTkZJRyBtdXN0IHNlbGVjdCBhIHRvb2xraXQuIEFkZCBvbmUgb2Ygbm9fZ3VpIC8gZ3RrIC8gcXQhIikKK30KKworIyBOb3RlcyBvbiBvdGhlciBQQUNLQUdFQ09ORklHczoKKyMgKiAnbm9fZ3VpJyBvdmVycmlkZXMgc29tZSBjb25maWdzIGJlbG93IHNvIHRoZXkgYXJlIG1hcmtlZCBhcyBjb25mbGljdGluZworIyAgIHdpdGggJ25vX2d1aScgdG8gYXZvaWQgc3VycHJpc2VzCisjICogcXQrZ3N0cmVhbWVyIGlzIGJyb2tlbiBkdWUgdG8gaW5jb3JyZWN0IHJlZmVyZW5jZXMgb24gZ2xpYi0yLjAgLT4gbWFyaworIyAgIGFzIGNvbmZsaWN0aW5nCisjICogd3hVU0VfTElCR05PTUVWRlMgaXMgZm9yIGd0azIgKHNlZSBpbml0LmNtYWtlKSB3aGljaCB3ZSBkb24ndCBzdXBwb3J0CisjICAgLT4gbm8gZ3ZmcyBQQUNLQUdFQ09ORklHCisjICogbGlibXNwYWNrIGlzIGluIG1ldGEtc2VjdXJpdHkKK1BBQ0tBR0VDT05GSUdbZ3N0cmVhbWVyXSA9ICItRHd4VVNFX01FRElBQ1RSTD1PTiwtRHd4VVNFX01FRElBQ1RSTD1PRkYsZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSwsLG5vX2d1aSBxdCIKK1BBQ0tBR0VDT05GSUdbbGlic2VjcmV0XSA9ICItRHd4VVNFX1NFQ1JFVFNUT1JFPU9OLC1Ed3hVU0VfU0VDUkVUU1RPUkU9T0ZGLGxpYnNlY3JldCwsLG5vX2d1aSIKK1BBQ0tBR0VDT05GSUdbbHptYV0gPSAiLUR3eFVTRV9MSUJMWk1BPU9OLC1Ed3hVU0VfTElCTFpNQT1PRkYseHoiCitQQUNLQUdFQ09ORklHW21zcGFja10gPSAiLUR3eFVTRV9MSUJNU1BBQ0s9T04sLUR3eFVTRV9MSUJNU1BBQ0s9T0ZGLGxpYm1zcGFjayIKK1BBQ0tBR0VDT05GSUdbc2RsX2F1ZGlvXSA9ICItRHd4VVNFX0xJQlNETD1PTiwtRHd4VVNFX0xJQlNETD1PRkYsbGlic2RsMiIKK1BBQ0tBR0VDT05GSUdbd2Via2l0XSA9ICItRHd4VVNFX1dFQlZJRVdfV0VCS0lUPU9OLC1Ed3hVU0VfV0VCVklFV19XRUJLSVQ9T0ZGLHdlYmtpdGd0aywsLG5vX2d1aSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBkbyBub3Qgc2hpcCBiaW5kaXIgaWYgZW1wdHkKKyAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtiaW5kaXJ9Cit9CisKKyMgbGliIG5hbWVzIGFyZSBub3QgY2Fub25pY2FsCitGSUxFU19TT0xJQlNERVYgPSAiIgorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2xpYmRpcn0vbGlid3hfKi5zbyBcCisgICAgJHtsaWJkaXJ9L3d4LyBcCisiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3d4L2luY2x1ZGUvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2dtaW1lL2dtaW1lXzMuMi41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2dtaW1lL2dtaW1lXzMuMi41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjgwODNiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9nbWltZS9nbWltZV8zLjIuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLUxJQ0VOU0UgPSAiTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYmMwOTM5MDE4NTdmY2QxMThmMDY1ZjkwMDk4MmMyNCIKLURFU0NSSVBUSU9OID0gIlJ1bnRpbWUgbGlicmFyaWVzIGZvciBwYXJzaW5nIGFuZCBjcmVhdGluZyBNSU1FIG1haWwiCi1TRUNUSU9OID0gImxpYnMiCi1ERVBFTkRTID0gImdsaWItMi4wIHpsaWIiCi0KLWluaGVyaXQgZ25vbWViYXNlIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TUkNfVVJJICs9ICJmaWxlOi8vaWNvbnYtZGV0ZWN0LmggXAotICAgICAgICAgICAgZmlsZTovL25vZG9sdC5wYXRjaCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiOTg5NzBlMzk5NWU2N2FjM2YyMzgyN2ZmNTIzMDhmOWUiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJmYjc1NTY1MDFmODVjM2JmM2U2NWZkZDgyNjk3Y2JjNGZhNGI1NWRjY2QzM2FkMTQyMzljZTAxOTdlNzhiYTU5IgotCi1leHBvcnQgYWNfY3ZfaGF2ZV9pY29udl9kZXRlY3RfaD0ieWVzIgotZG9fY29uZmlndXJlX2FwcGVuZCA9ICJjcCAke1dPUktESVJ9L2ljb252LWRldGVjdC5oICR7U30iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvZ21pbWUvZ21pbWVfMy4yLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvZ21pbWUvZ21pbWVfMy4yLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQxYmI3ZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9nbWltZS9nbWltZV8zLjIuNi5iYgpAQCAtMCwwICsxLDE2IEBACitMSUNFTlNFID0gIkxHUEwtMi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmJjMDkzOTAxODU3ZmNkMTE4ZjA2NWY5MDA5ODJjMjQiCitERVNDUklQVElPTiA9ICJSdW50aW1lIGxpYnJhcmllcyBmb3IgcGFyc2luZyBhbmQgY3JlYXRpbmcgTUlNRSBtYWlsIgorU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJnbGliLTIuMCB6bGliIgorCitpbmhlcml0IGdub21lYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworU1JDX1VSSSArPSAiZmlsZTovL2ljb252LWRldGVjdC5oIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ub2RvbHQucGF0Y2giCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjY1NjU0OGRjNDMxMDA0ZDFlYmY5NWU1ZDBiYjRiOWM4IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYWJmZjE5NGM3YzQ4MDJmYmEyZTIzMzg5MGQwOWRkZThiZjcxNzBjM2FkNWUxMzAwMDYwMWM4ZDViM2M0NDcxNyIKKworZXhwb3J0IGFjX2N2X2hhdmVfaWNvbnZfZGV0ZWN0X2g9InllcyIKK2RvX2NvbmZpZ3VyZV9hcHBlbmQgPSAiY3AgJHtXT1JLRElSfS9pY29udi1kZXRlY3QuaCAke1N9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYnBlYXMvbGlicGVhc18xLjI0LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvbGlicGVhcy9saWJwZWFzXzEuMjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM4ZTBlMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvbGlicGVhcy9saWJwZWFzXzEuMjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAibGlicGVhcyBpcyBhIGdvYmplY3QtYmFzZWQgcGx1Z2lucyBlbmdpbmUiCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL1Byb2plY3RzL0xpYnBlYXMiCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRiNTRhMWZkNTVhNDQ4ODY1YTBiMzJkNDE1OTg3NTlkIgotCi1ERVBFTkRTID0gImd0ayszIgotCi1HTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgotR1RLRE9DX01FU09OX09QVElPTiA9ICJndGtfZG9jIgotCi1pbmhlcml0IGdub21lYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBndGstaWNvbi1jYWNoZQotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJiYmVjZjMzNGE3MzMzZDBhNWQ0ZDY1NWJhMzhiZTliNCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjljM2FjZjdhNTY3Y2JiNGY4YmY2MmIwOTZlMDEzZjEyYzM5MTFjYzg1MGMzZmE5OTAwY2JkNWFhNGY2ZWMyODQiCi0KLVBBQ0tBR0VDT05GSUdbcHl0aG9uM10gPSAiLURweXRob24zPXRydWUsLURweXRob24zPWZhbHNlLHB5dGhvbjMtcHlnb2JqZWN0IgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZGVtbyAke1BOfS1weXRob24zIgotRklMRVNfJHtQTn0tZGVtbyA9ICIgXAotICAgICR7YmluZGlyfS9wZWFzLWRlbW8gXAotICAgICR7bGliZGlyfS9wZWFzLWRlbW8gXAotIgotCi1SREVQRU5EU18ke1BOfS1weXRob24zID0gInB5dGhvbjMtcHlnb2JqZWN0IgotRklMRVNfJHtQTn0tcHl0aG9uMyA9ICIke2xpYmRpcn0vbGlicGVhcy0xLjAvbG9hZGVycy9saWJweXRob24zbG9hZGVyLnNvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYnBlYXMvbGlicGVhc18xLjI1LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvbGlicGVhcy9saWJwZWFzXzEuMjUuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzQxOWE0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYnBlYXMvbGlicGVhc18xLjI1LjMuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJsaWJwZWFzIGlzIGEgZ29iamVjdC1iYXNlZCBwbHVnaW5zIGVuZ2luZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvTGlicGVhcyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGI1NGExZmQ1NWE0NDg4NjVhMGIzMmQ0MTU5ODc1OWQiCisKK0RFUEVORFMgPSAiZ3RrKzMiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitHVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCisKK2luaGVyaXQgZ25vbWViYXNlIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIGd0ay1pY29uLWNhY2hlCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjA4YmZmZjhmOTY4OGNmNjMwZGNiMGY5NTA2MTc2NjFmIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMWM5YmJiMjk3NDBjMjljZDZlMWRkMGM5OTY0NzIyZmYwOGNkNWU2ZjY4ZjFiNWMxMzViYzM5MWE2Y2U5NzYzOSIKKworUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICItRHB5dGhvbjM9dHJ1ZSwtRHB5dGhvbjM9ZmFsc2UscHl0aG9uMy1weWdvYmplY3QiCisKK1BBQ0tBR0VTID0rICIke1BOfS1kZW1vICR7UE59LXB5dGhvbjMiCitGSUxFU18ke1BOfS1kZW1vID0gIiBcCisgICAgJHtiaW5kaXJ9L3BlYXMtZGVtbyBcCisgICAgJHtsaWJkaXJ9L3BlYXMtZGVtbyBcCisiCisKK1JERVBFTkRTXyR7UE59LXB5dGhvbjMgPSAicHl0aG9uMy1weWdvYmplY3QiCitGSUxFU18ke1BOfS1weXRob24zID0gIiR7bGliZGlyfS9saWJwZWFzLTEuMC9sb2FkZXJzL2xpYnB5dGhvbjNsb2FkZXIuc28iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvcHl4ZGcvcHl4ZGdfMC4yNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9weXhkZy9weXhkZ18wLjI2LmJiCmluZGV4IDAxMjhhN2MuLmE5NTdjMWQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9weXhkZy9weXhkZ18wLjI2LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9weXhkZy9weXhkZ18wLjI2LmJiCkBAIC03LDYgKzcsNiBAQAogU1JDUkVWID0gIjdkYjE0ZGNmNGM0MzA1YzM4NTlhMmQ5ZmNmOWY1ZGEyZGIzMjgzMzAiCiBTUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL3hkZy9weXhkZyIKIAotaW5oZXJpdCBkaXN0dXRpbHMKK2luaGVyaXQgZGlzdHV0aWxzMwogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2JhYmwvYmFibF8wLjEuNjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvYmFibC9iYWJsXzAuMS42Mi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE3ZGJjYS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvYmFibC9iYWJsXzAuMS42Mi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiQmFibCBpcyBhIGR5bmFtaWMsIGFueSB0byBhbnksIHBpeGVsIGZvcm1hdCBjb252ZXJzaW9uIGxpYnJhcnkiCi1MSUNFTlNFID0gIkxHUEwtMy4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYiCi0KLWluaGVyaXQgZ25vbWViYXNlCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5naW1wLm9yZy9wdWIvJHtCUE59LzAuMS8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gIjI4ZmE5ZDQzNTQ5Mzc4Y2VlYmUyODcxZDc3MjFkZDQ2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRjMjc5ZjE3NGVkYmNiMDg4MjFjZjM3ZTRhYjBiYzAyZTY5NDkzNjliMDBiMTUwYzc1OWE2YzI0YmZkM2Y1MTAiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vYmFibC0qLyouc28iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9iYWJsLSovKi5sYSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2JhYmwtKi8uZGVidWcvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS8wMDAxLURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS8wMDAxLURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoCmluZGV4IDQ2ZDRkYmQuLjZhN2IxYmYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmEvMDAwMS1Eby1ub3Qtc2V0LVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXB5dGhvbi5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhLzAwMDEtRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2gKQEAgLTksMTIgKzksMTIgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDdjNjZiMzkuLjE0ODllZjYgMTAwNjQ0CitpbmRleCAyMzBjODdiLi5lNjk5ZTgzIDEwMDY0NAogLS0tIGEvQ01ha2VMaXN0cy50eHQKICsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtMTksNyArMTksNyBAQCBlbHNlKE5PVCBTUEhJTlhfRVhFQ1VUQUJMRS1OT1RGT1VORCkKLSAJbWVzc2FnZShTVEFUVVMgIkNvdWxkIE5PVCBmaW5kIHNwaGlueC1idWlsZC4iKQotIGVuZGlmKE5PVCBTUEhJTlhfRVhFQ1VUQUJMRS1OT1RGT1VORCkKK0BAIC0xOSw3ICsxOSw3IEBAIGVsc2UoU1BISU5YX0VYRUNVVEFCTEUgU1RSRVFVQUwgIlNQSElOWF9FWEVDVVRBQkxFLU5PVEZPVU5EIikKKyAJbWVzc2FnZShTVEFUVVMgIkZvdW5kIHNwaGlueC1idWlsZDogJHtTUEhJTlhfRVhFQ1VUQUJMRX0iKQorIGVuZGlmKFNQSElOWF9FWEVDVVRBQkxFIFNUUkVRVUFMICJTUEhJTlhfRVhFQ1VUQUJMRS1OT1RGT1VORCIpCiAgCiAtZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgImZyb20gZGlzdHV0aWxzLnN5c2NvbmZpZyBpbXBvcnQgZ2V0X3B5dGhvbl9saWI7IHByaW50KGdldF9weXRob25fbGliKCksIGVuZD0nJykiIE9VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCiArI2V4ZWN1dGVfcHJvY2VzcyhDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9IC1jICJmcm9tIGRpc3R1dGlscy5zeXNjb25maWcgaW1wb3J0IGdldF9weXRob25fbGliOyBwcmludChnZXRfcHl0aG9uX2xpYigpLCBlbmQ9JycpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQpAQCAtMjIsNSArMjIsNSBAQAogIGV4ZWN1dGVfcHJvY2VzcyhDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9IC1jICJpbXBvcnQgc3lzOyBzeXMuc3Rkb3V0LndyaXRlKCclcy4lcycgJSAoc3lzLnZlcnNpb25faW5mby5tYWpvciwgc3lzLnZlcnNpb25faW5mby5taW5vcikpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX01BSk9SX0RPVF9NSU5PUl9WRVJTSU9OKQogIG1lc3NhZ2UoU1RBVFVTICJQeXRob24gaW5zdGFsbCBkaXIgaXMgJHtQWVRIT05fSU5TVEFMTF9ESVJ9IikKIC0tIAotMi43LjQKKzIuMTcuMQogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhLzAwMDEtUnVuLXB5dGhvbi1zY3JpcHRzLXVzaW5nLWVudi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmEvMDAwMS1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWI2YjhmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmEvMDAwMS1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotRnJvbSAxNWQwYWZjZmE0ODY4YjdiMDcyYjM0MzRiYWMwMDY0NjE3ZDYxZjk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgotRGF0ZTogVHVlLCAxOSBEZWMgMjAxNyAxNDo1MzoxNCArMDkwMAotU3ViamVjdDogW1BBVENIXSBSdW4gcHl0aG9uIHNjcmlwdHMgdXNpbmcgZW52Ci0KLU90aGVyd2lzZSB0aGUgYnVpbGQgdG9vbHMgaGFyZGNvZGUgdGhlIHB5dGhvbiBwYXRoIGludG8gdGhlbS4KLQotU2lnbmVkLW9mZi1ieTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgotLS0tCi0gYmluL2RuZmRyYWdvcmEgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9iaW4vZG5mZHJhZ29yYSBiL2Jpbi9kbmZkcmFnb3JhCi1pbmRleCBiOGUwNTUwLi5jZDgwZjdmIDEwMDc1NQotLS0tIGEvYmluL2RuZmRyYWdvcmEKLSsrKyBiL2Jpbi9kbmZkcmFnb3JhCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL2VudiBweXRob24zCi0gIyB2aW06IHNldCBldCB0cz00IHN3PTQ6Ci0gIyAgICBDb3B5cmlnaHQgMjAxNi0yMDE3IEFuZ2VsbyBOYXNlbGxpIDxhbmFzZWxsaUBsaW51eC5pdD4KLSAjCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmEvMDAwMS1Uby1maXgtZXJyb3Itd2hlbi1kb19wYWNrYWdlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS8wMDAxLVRvLWZpeC1lcnJvci13aGVuLWRvX3BhY2thZ2UucGF0Y2gKaW5kZXggOTBjZTFkMC4uYmVmNDcxMSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS8wMDAxLVRvLWZpeC1lcnJvci13aGVuLWRvX3BhY2thZ2UucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS8wMDAxLVRvLWZpeC1lcnJvci13aGVuLWRvX3BhY2thZ2UucGF0Y2gKQEAgLTMsNyArMyw4IEBACiBEYXRlOiBUdWUsIDE5IERlYyAyMDE3IDExOjE1OjI5ICswOTAwCiBTdWJqZWN0OiBbUEFUQ0hdIFRvIGZpeCBlcnJvciB3aGVuIGRvX3BhY2thZ2UKIAotUUEgSXNzdWU6IG5hdGl2ZXNkay1kbmZkcmFnb3JhOiBGaWxlcy9kaXJlY3RvcmllcyB3ZXJlIGluc3RhbGxlZCBidXQgbm90IHNoaXBwZWQgaW4gYW55IHBhY2thZ2U6CitRQSBJc3N1ZTogbmF0aXZlc2RrLWRuZmRyYWdvcmE6IEZpbGVzL2RpcmVjdG9yaWVzIHdlcmUgaW5zdGFsbGVkIGJ1dCBub3QKK3NoaXBwZWQgaW4gYW55IHBhY2thZ2U6CiAgIC9ldGMKICAgL2V0Yy9kbmZkcmFnb3JhCiAgIC9ldGMvZG5mZHJhZ29yYS9kbmZkcmFnb3JhLnlhbWwKQEAgLTE0LDE4ICsxNSwxOCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAotaW5kZXggN2M2NmIzOS4uYTU2NTlmNyAxMDA2NDQKK2luZGV4IDIzMGM4N2IuLjFiOGQ4MDAgMTAwNjQ0CiAtLS0gYS9DTWFrZUxpc3RzLnR4dAogKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC01Miw3ICs1Miw3IEBAIGVuZGlmKEVOQUJMRV9DT01QUykKK0BAIC02OCw3ICs2OCw3IEBAIGVuZGlmKEVOQUJMRV9DT01QUykKICBzZXQoQ01BS0VfSU5TVEFMTF9CSU5ESVIgIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L2JpbiIpCiAgc2V0KENNQUtFX0lOU1RBTExfREFUQVJPT1RESVIgIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L3NoYXJlIikKICBzZXQoQ01BS0VfSU5TVEFMTF9MT0NBTEVESVIgIiR7Q01BS0VfSU5TVEFMTF9EQVRBUk9PVERJUn0vbG9jYWxlIikKLS1zZXQoQ01BS0VfSU5TVEFMTF9GVUxMX1NZU0NPTkZESVIgIi9ldGMiKQotK3NldChDTUFLRV9JTlNUQUxMX0ZVTExfU1lTQ09ORkRJUiAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vLi4vZXRjIikKKy1zZXQoQ01BS0VfSU5TVEFMTF9GVUxMX1NZU0NPTkZESVIgIi9ldGMiIENBQ0hFIFBBVEggInN5c2NvbmZpZyBkaXJlY3RvcnkgKGRlZmF1bHQgL2V0YykiKQorK3NldChDTUFLRV9JTlNUQUxMX0ZVTExfU1lTQ09ORkRJUiAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vLi4vZXRjIiBDQUNIRSBQQVRIICJzeXNjb25maWcgZGlyZWN0b3J5IChkZWZhdWx0IC9ldGMpIikKICAKICAjIENvbmZpZ3VyZSBmaWxlcwogIGNvbmZpZ3VyZV9maWxlKCR7Q01BS0VfU09VUkNFX0RJUn0vZXRjL2RuZmRyYWdvcmEueWFtbC5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9L2V0Yy9kbmZkcmFnb3JhLnlhbWwgQE9OTFkpCiAtLSAKLTIuNy40CisyLjE3LjEKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS8wMDAxLWRpc2FibGUtYnVpbGQtbWFucGFnZXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhLzAwMDEtZGlzYWJsZS1idWlsZC1tYW5wYWdlcy5wYXRjaAppbmRleCA4OGJiNjM0Li5jOGIxMDVlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhLzAwMDEtZGlzYWJsZS1idWlsZC1tYW5wYWdlcy5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhLzAwMDEtZGlzYWJsZS1idWlsZC1tYW5wYWdlcy5wYXRjaApAQCAtOSwxNyArOSwxNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCA3YzY2YjM5Li5mYzMyNzUwIDEwMDY0NAoraW5kZXggMjMwYzg3Yi4uMTYyNDk5OCAxMDA2NDQKIC0tLSBhL0NNYWtlTGlzdHMudHh0CiArKysgYi9DTWFrZUxpc3RzLnR4dAotQEAgLTY1LDcgKzY1LDYgQEAgZW5kaWYoR0VUVEVYVF9GT1VORCkKK0BAIC04MSw3ICs4MSw2IEBAIGVuZGlmKEdFVFRFWFRfRk9VTkQpCiAgCiAgIyBCdWlsZCBhbmQgaW5zdGFsbCB0aGUgbWFuLXBhZ2VzCi0gaWYoTk9UIFNQSElOWF9FWEVDVVRBQkxFLU5PVEZPVU5EKQorIGlmKE5PVCBTUEhJTlhfRVhFQ1VUQUJMRSBTVFJFUVVBTCAiU1BISU5YX0VYRUNVVEFCTEUtTk9URk9VTkQiKQogLQlhZGRfc3ViZGlyZWN0b3J5KG1hbikKLSBlbmRpZihOT1QgU1BISU5YX0VYRUNVVEFCTEUtTk9URk9VTkQpCisgZW5kaWYoTk9UIFNQSElOWF9FWEVDVVRBQkxFIFNUUkVRVUFMICJTUEhJTlhfRVhFQ1VUQUJMRS1OT1RGT1VORCIpCiAgCiAgIyBJbnN0YWxsaW5nIGFwcGxpY2F0aW9uIGNvZGUKIC0tIAotMi43LjQKKzIuMTcuMQogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmFfZ2l0LmJiCmluZGV4IDljZDFlZmIuLjAwNzM4NTEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmFfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmFfZ2l0LmJiCkBAIC03LDE1ICs3LDE0IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc2FibGUtYnVpbGQtbWFucGFnZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3Qtc2V0LVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXB5dGhvbi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVRvLWZpeC1lcnJvci13aGVuLWRvX3BhY2thZ2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoIFwKICAgICAgICAgICAgIgogCi1QViA9ICIxLjAuMStnaXQke1NSQ1BWfSIKLVNSQ1JFViA9ICI0ZmVmNGNlODg5YjhlNGZhMDMxOTFkNDE0ZjYzYmZkNTA3OTYxNTJhIgorUFYgPSAiMS4xLjIrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiMTllMTIzMTMyY2ZkNGVmZDg2MGU1MjA0MjYxYzNjMjI4YmZlODBhOCIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotaW5oZXJpdCBjbWFrZSBnZXR0ZXh0IHBrZ2NvbmZpZyBweXRob24zLWRpciBweXRob24zbmF0aXZlIGRpc3R1dGlsczMtYmFzZQoraW5oZXJpdCBjbWFrZSBnZXR0ZXh0IHBrZ2NvbmZpZyBweXRob24zLWRpciBweXRob24zbmF0aXZlIGRpc3R1dGlsczMtYmFzZSBtaW1lLXhkZwogCiBERVBFTkRTICs9ICJkbmYgcHl0aG9uMyAiCiAjREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgKz0gIm5hdGl2ZXNkay1weXRob24zIgpAQCAtMjcsNCArMjYsNyBAQAogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKIAotRklMRVNfJHtQTn0gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vICR7ZGF0YWRpcn0vICR7YmluZGlyfS8gJHtzeXNjb25mZGlyfS9kbmZkcmFnb3JhICIKK0ZJTEVTXyR7UE59ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyAke2RhdGFkaXJ9LyAke2JpbmRpcn0vICR7c3lzY29uZmRpcn0vZG5mZHJhZ29yYSAke3N5c2NvbmZkaXJ9L3hkZyIKKworUE5CTEFDS0xJU1RbZG5mZHJhZ29yYV0gPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFX0NMQVNTRVMnLCAncGFja2FnZV9ycG0nLCAnJywgJ2RvZXMgbm90IGJ1aWxkIGNvcnJlY3RseSB3aXRob3V0IHBhY2thZ2VfcnBtIGluIFBBQ0tBR0VfQ0xBU1NFUycsIGQpfSIKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZiZ3JhYi9mYmdyYWJfMS4zLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZmJncmFiL2ZiZ3JhYl8xLjMuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2RmZjkxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZiZ3JhYi9mYmdyYWJfMS4zLjMuYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJGQkdyYWIgaXMgYSBmcmFtZWJ1ZmZlciBzY3JlZW5zaG90IHByb2dyYW0iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vR3VubmFyTW9uZWxsL2ZiZ3JhYiIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYTViZWQyZjYwZDM1NzYxOGNhMTYxYWQ1MzlmN2MwYSIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0RFUEVORFMgPSAibGlicG5nIHpsaWIiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vR3VubmFyTW9uZWxsL2ZiZ3JhYi5naXQ7cHJvdG9jb2w9aHR0cHMiCisKK1NSQ1JFViA9ICJiMTc5ZTJhNDJiOGE1ZDcyNTE2YjljOGQ5MTcxM2M5MDI1Y2Y2MDQ0IgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIHNlZCAtaSAnc3wkKERFU1RESVIpL3Vzci9tYW4vfCQoREVTVERJUikke21hbmRpcn0vfGcnICR7U30vTWFrZWZpbGUKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mYmdyYWIvZmJncmFiXzEuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mYmdyYWIvZmJncmFiXzEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTEyYmMwOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZmJncmFiL2ZiZ3JhYl8xLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TVU1NQVJZID0gIkZCR3JhYiBpcyBhIGZyYW1lYnVmZmVyIHNjcmVlbnNob3QgcHJvZ3JhbSIKLUhPTUVQQUdFID0gImh0dHA6Ly9mYmdyYWIubW9uZWxscy5zZS8iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWE1YmVkMmY2MGQzNTc2MThjYTE2MWFkNTM5ZjdjMGEiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1ERVBFTkRTID0gImxpYnBuZyB6bGliIgotU1JDX1VSSSA9ICJodHRwOi8vZmJncmFiLm1vbmVsbHMuc2UvJHtCUH0udGFyLmd6IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotU1JDX1VSSVttZDVzdW1dID0gIjdkOGMyNDA4MWM2ODFkZmJiYTIxZjI5MzRjMWFjNjU2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVmYWI0NzhjYmY4NzMxZmJhY2VmYWE3NjIzNmE4ZjhiMzhjY2ZmOTIwYzUzYjNhODI1M2JjMzU1MDlmYmE4ZWQiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAnc3wkKERFU1RESVIpL3Vzci9tYW4vfCQoREVTVERJUikke21hbmRpcn0vfGcnICR7U30vTWFrZWZpbGUKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mb250Zm9yZ2UvZm9udGZvcmdlXzIwMTkwODAxLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRmb3JnZS9mb250Zm9yZ2VfMjAxOTA4MDEuYmIKaW5kZXggYjg0ODA2Zi4uMTg2M2Y5NSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRmb3JnZS9mb250Zm9yZ2VfMjAxOTA4MDEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRmb3JnZS9mb250Zm9yZ2VfMjAxOTA4MDEuYmIKQEAgLTYsMTAgKzYsMTAgQEAKICAgICBmaWxlOi8vTElDRU5TRTttZDU9ZDA0MmYzZDJhOGZkNzIwOGI3MDRhNDk5MTY4ZTNjODkgXAogIgogCi1ERVBFTkRTID0gImdsaWItMi4wIHBhbmdvIGdpZmxpYiB0aWZmIGxpYnhtbDIganBlZyBsaWJ0b29sIHV0aGFzaCBnZXR0ZXh0LW5hdGl2ZSIKK0RFUEVORFMgPSAicHl0aG9uMyBnbGliLTIuMCBwYW5nbyBnaWZsaWIgdGlmZiBsaWJ4bWwyIGpwZWcgbGlidG9vbCB1dGhhc2ggZ2V0dGV4dC1uYXRpdmUiCiBERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGxpYnhpIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHl0aG9uM25hdGl2ZSBmZWF0dXJlc19jaGVjayBnZXR0ZXh0IGd0ay1pY29uLWNhY2hlIG1pbWUKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBweXRob24zbmF0aXZlIGZlYXR1cmVzX2NoZWNrIGdldHRleHQgZ3RrLWljb24tY2FjaGUgbWltZSBtaW1lLXhkZwogCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgeDExIgogCkBAIC0yMCw5ICsyMCwxMiBAQAogIgogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbGlidW5pbmFtZXNsaXN0IgorRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbGlidW5pbmFtZXNsaXN0ICAtLWVuYWJsZS1weXRob24tc2NyaXB0aW5nIC0tZW5hYmxlLXB5dGhvbi1leHRlbnNpb24iCiBFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgd2l0aF94PW5vIgogCitMREZMQUdTICs9ICItbHB5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSR7UFlUSE9OX0FCSX0iCitCVUlMRF9MREZMQUdTICs9ICItbHB5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSR7UFlUSE9OX0FCSX0iCisKICNkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKICMgdXRoYXNoIHNvdXJjZXMgYXJlIGV4cGVjdGVkIGluIHV0aGFzaC9zcmMKICMgICAgbWtkaXIgLXAgJHtTfS91dGhhc2gvc3JjCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZWdsdXQvZnJlZWdsdXRfMy4wLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZWdsdXQvZnJlZWdsdXRfMy4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNTQwYmIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWVnbHV0L2ZyZWVnbHV0XzMuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiRnJlZUdMVVQgaXMgYSBmcmVlLXNvZnR3YXJlL29wZW4tc291cmNlIGFsdGVybmF0aXZlIHRvIHRoZSBPcGVuR0wgXAotICAgICAgICAgICAgICAgVXRpbGl0eSBUb29sa2l0IChHTFVUKSBsaWJyYXJ5IgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04OWMwYjU4YTNlMDFjZTNkODI1NGM5ZjU5ZTc4YWRmYiIKLQotU1JDX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy8ke0JQTn0vZmlsZXMvJHtCUE59LyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiOTBjM2NhNGRkOWQ1MWNmMzIyNzZiYzUzNDRlYzk3NTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmE0M2JlODUxNWIwMWVhODJiY2ZhMTdkMjlhZTBkNDBiZDEyODM0MmYwOTMwY2QxZjM3NWYxZmY5OTlmNzZhMiIKLQotaW5oZXJpdCBjbWFrZSBmZWF0dXJlc19jaGVjawotCi0jIGRlcGVuZHMgb24gdmlydHVhbC9saWJ4MTEsIHZpcnR1YWwvbGliZ2wKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgb3BlbmdsIgotCi1QUk9WSURFUyArPSAibWVzYS1nbHV0IgotCi1ERVBFTkRTID0gInZpcnR1YWwvbGlieDExIGxpYnhtdSBsaWJ4aSB2aXJ0dWFsL2xpYmdsIGxpYmdsdSBsaWJ4cmFuZHIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZWdsdXQvZnJlZWdsdXRfMy4yLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZWdsdXQvZnJlZWdsdXRfMy4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUxNjQxYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mcmVlZ2x1dC9mcmVlZ2x1dF8zLjIuMS5iYgpAQCAtMCwwICsxLDE3IEBACitERVNDUklQVElPTiA9ICJGcmVlR0xVVCBpcyBhIGZyZWUtc29mdHdhcmUvb3Blbi1zb3VyY2UgYWx0ZXJuYXRpdmUgdG8gdGhlIE9wZW5HTCBcCisgICAgICAgICAgICAgICBVdGlsaXR5IFRvb2xraXQgKEdMVVQpIGxpYnJhcnkiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTg5YzBiNThhM2UwMWNlM2Q4MjU0YzlmNTllNzhhZGZiIgorCitTUkNfVVJJID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzLyR7QlBOfS9maWxlcy8ke0JQTn0vJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjZDVjNjcwYzEwODYzNTg1OThhNmQ0YTlkMTY2OTQ5ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNDAwMGUwMjEwMmFjYWYyNTk5OThjODcwZTI1MjE0NzM5ZDFmMTZmNjdmOTljYjM1ZTRmNDY4NDEzOTlkYTY4IgorCitpbmhlcml0IGNtYWtlIGZlYXR1cmVzX2NoZWNrCisKKyMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMSwgdmlydHVhbC9saWJnbAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSBvcGVuZ2wiCisKK1BST1ZJREVTICs9ICJtZXNhLWdsdXQiCisKK0RFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlieG11IGxpYnhpIHZpcnR1YWwvbGliZ2wgbGliZ2x1IGxpYnhyYW5kciIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mdndtL2Z2d21fMi42LjkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZnZ3bS9mdndtXzIuNi45LmJiCmluZGV4IGQxYmE0ODIuLjUxZjVhNGUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mdndtL2Z2d21fMi42LjkuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2Z2d20vZnZ3bV8yLjYuOS5iYgpAQCAtNDAsNyArNDAsNyBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcGtnY29uZmlnIHB5dGhvbm5hdGl2ZSBwZXJsbmF0aXZlIGZlYXR1cmVzX2NoZWNrCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcGtnY29uZmlnIHB5dGhvbjNuYXRpdmUgcGVybG5hdGl2ZSBmZWF0dXJlc19jaGVjawogIyBkZXBlbmRzIG9uIHZpcnR1YWwvbGlieDExCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2VnbC9nZWdsL3BrZ2NvbmZpZy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nZWdsL2dlZ2wvcGtnY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTQ1YjYyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nZWdsL2dlZ2wvcGtnY29uZmlnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotSW5kZXg6IGdlZ2wtMC4yLjAvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2VnbC0wLjIuMC5vcmlnL2NvbmZpZ3VyZS5hYwkyMDEyLTA0LTAyIDIxOjU2OjQ5LjAwMDAwMDAwMCArMDAwMAotKysrIGdlZ2wtMC4yLjAvY29uZmlndXJlLmFjCTIwMTQtMDctMTcgMjE6MzQ6MTUuMzEyNTQ2NjAyICswMDAwCi1AQCAtNzY1LDE1ICs3NjUsNyBAQAotIAotIGhhdmVfc2RsPSJubyIKLSBpZiB0ZXN0ICJ4JHdpdGhfc2RsIiAhPSAieG5vIjsgdGhlbgotLSAgQUNfUEFUSF9QUk9HKFNETF9DT05GSUcsIHNkbC1jb25maWcsIG5vKQotLSAgaWYgdGVzdCAiJFNETF9DT05GSUciID0gIm5vIjsgdGhlbgotLSAgICBoYXZlX3NkbD0ibm8gIChTREwgbGlicmFyeSBub3QgZm91bmQpIgotLSAgICBBQ19NU0dfUkVTVUxUKFsqKiogQ2hlY2sgZm9yIFNETCBsaWJyYXJ5IGZhaWxlZC5dKQotLSAgZWxzZQotLSAgICBoYXZlX3NkbD0ieWVzIgotLSAgICBTRExfQ0ZMQUdTPWAkU0RMX0NPTkZJRyAtLWNmbGFnc2AKLS0gICAgU0RMX0xJQlM9YCRTRExfQ09ORklHIC0tbGlic2AKLS0gIGZpCi0rICBQS0dfQ0hFQ0tfTU9EVUxFUyhbU0RMXSwgW3NkbF0sIFtoYXZlX3NkbD0ieWVzIl0sIFtoYXZlX3NkbD0ibm8gIChTREwgbGlicmFyeSBub3QgZm91bmQpIl0pCi0gZmkKLSAKLSBBTV9DT05ESVRJT05BTChIQVZFX1NETCwgdGVzdCAiJGhhdmVfc2RsIiA9ICJ5ZXMiKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dlZ2wvZ2VnbF8wLjMuMTguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2VnbC9nZWdsXzAuMy4xOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGRiMGY3OS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2VnbC9nZWdsXzAuMy4xOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLVNVTU1BUlkgPSAiR0VHTCAoR2VuZXJpYyBHcmFwaGljcyBMaWJyYXJ5KSBpcyBhIGdyYXBoIGJhc2VkIGltYWdlIHByb2Nlc3NpbmcgZnJhbWV3b3JrIgotTElDRU5TRSA9ICJMR1BMLTMuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotREVQRU5EUyA9ICJiYWJsIGxpYnJzdmcgZ2xpYi0yLjAgZ3RrKyBwYW5nbyBjYWlybyBleHBhdCB6bGliIGxpYnBuZyBqcGVnIHZpcnR1YWwvbGlic2RsIGpzb24tZ2xpYiBpbnRsdG9vbC1uYXRpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jcyIKLQotaW5oZXJpdCBmZWF0dXJlc19jaGVjayBnbm9tZWJhc2UgdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbamFzcGVyXSA9ICItLXdpdGgtamFzcGVyLC0td2l0aG91dC1qYXNwZXIsamFzcGVyIgotUEFDS0FHRUNPTkZJR1thdmZvcm1hdF0gPSAiLS13aXRoLWxpYmF2Zm9ybWF0LC0td2l0aG91dC1saWJhdmZvcm1hdCxsaWJhdiIKLVBBQ0tBR0VDT05GSUdbbGNtc10gPSAiLS13aXRoLWxjbXMsLS13aXRob3V0LWxjbXMsbGNtcyIKLVBBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLS13aXRoLWxpYnRpZmYsLS13aXRob3V0LWxpYnRpZmYsdGlmZiIKLVBBQ0tBR0VDT05GSUdbd2VicF0gPSAiLS13aXRoLXdlYnAsLS13aXRob3V0LXdlYnAsd2VicCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdpbXAub3JnL3B1Yi8ke0JQTn0vMC4zLyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZTVjNmYyMjkyNjE0NzhkYzQzNmEzOGM4NDQwNWIyYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkNzg1OGVmMjZlZGUxMzZkMTRlM2RlMTg4YTllOWMwZGU3NzA3MDYxYTlmYjk2ZDdkNjE1ZmFiNDk1ODQ5MWZiIgotCi1MREZMQUdTICs9ICItbG0iCi0KLSMgVGhlcmUgYXJlIGEgY291cGxlIG9mIG5vbi1zeW1saW5rIC5zbyBmaWxlcyBpbnN0YWxsZWQgaW50byBsaWJkaXIsIHdoaWNoIG5lZWQgdG8gZ28gaW50byBtYWluIHBhY2thZ2UKLUZJTEVTXyR7UE59X2FwcGVuZCA9ICIgJHtsaWJkaXJ9L2dlZ2wtMC4zLyouc28gJHtsaWJkaXJ9L2dlZ2wtMC4zLyouanNvbiAke2xpYmRpcn0vbGliZ2VnbC1ucGQtMC4zLnNvICR7bGliZGlyfS9saWJnZWdsLXNjLTAuMy5zbyIKLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7bGliZGlyfS9nZWdsLTAuMy8qLmxhICR7bGliZGlyfS9saWJnZWdsLTAuMy5zbyIKLUZJTEVTXyR7UE59LWRldl9yZW1vdmUgPSAiJHtsaWJkaXJ9L2xpYiouc28iCi0KLSMgRmFpbHMgdG8gYnVpbGQgd2l0aCB0aHVtYi0xIChxZW11YXJtKQotIyBnZWdsLTAuMi4wL29wZXJhdGlvbnMvY29tbW9uL21hdHRpbmctZ2xvYmFsLmM6IEluIGZ1bmN0aW9uICdtYXR0aW5nX3Byb2Nlc3MnOgotIyBnZWdsLTAuMi4wL29wZXJhdGlvbnMvY29tbW9uL21hdHRpbmctZ2xvYmFsLmM6NDYzOjE6IGludGVybmFsIGNvbXBpbGVyIGVycm9yOiBpbiBwYXRjaF9qdW1wX2luc24sIGF0IGNmZ3J0bC5jOjEyNzUKLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dpbXAvZ2ltcC8wMDAxLWNvbmZpZ3VyZS1hYy1kby1ub3QtY2hlY2stZm9yLWZyZWV0eXBlLWNvbmZpZy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9naW1wL2dpbXAvMDAwMS1jb25maWd1cmUtYWMtZG8tbm90LWNoZWNrLWZvci1mcmVldHlwZS1jb25maWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlY2QwMTIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dpbXAvZ2ltcC8wMDAxLWNvbmZpZ3VyZS1hYy1kby1ub3QtY2hlY2stZm9yLWZyZWV0eXBlLWNvbmZpZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gNzJhZDc2ODQxZDg3ZTg1NzQyODY5M2Q4MTJhOTYxOTM1Mjg0YWM2MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLURhdGU6IFRodSwgMTIgRmViIDIwMTUgMTU6NTc6NDcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLWFjOiBkbyBub3QgY2hlY2sgZm9yIGZyZWV0eXBlLWNvbmZpZwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1mcmVldHlwZS1jb25maWcgaXMgbm90IGFsbG93ZWQgaW4gb3VyIGVudmlyb25tZW50IC0gc2VlIGFsc28gYmluY29uZmlnLWRpc2FibGVkCi0KLVVwc3RyZWFtLVN0YXR1czogaW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDcgLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyNjgxMmI2Li5hYmVjNzE0IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02NDcsMTMgKzY0Nyw2IEBAIGlmIHRlc3QgIngkZm9udGNvbmZpZ19vayIgPSB4bm87IHRoZW4KLSBmaQotIAotIAotLUFDX1BBVEhfUFJPRyhGUkVFVFlQRV9DT05GSUcsIGZyZWV0eXBlLWNvbmZpZywgbm8pCi0taWYgdGVzdCAieCRGUkVFVFlQRV9DT05GSUciICE9ICJ4bm8iIDsgdGhlbgotLSAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgZnJlZXR5cGUgbGlicmFyaWVzXSkKLS0gIEZSRUVUWVBFX0xJQlM9YCRGUkVFVFlQRV9DT05GSUcgLS1saWJzYAotLSAgQUNfTVNHX1JFU1VMVCgkRlJFRVRZUEVfTElCUykKLS1maQotLUFDX1NVQlNUKEZSRUVUWVBFX0xJQlMpCi0gCi0gCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0tLSAKLTEuOS4zCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9naW1wL2dpbXAvMDAwMy1GaXgtdXNlLW9mLWdlZ2wtQVBJLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dpbXAvZ2ltcC8wMDAzLUZpeC11c2Utb2YtZ2VnbC1BUEkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYTc4ZTIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dpbXAvZ2ltcC8wMDAzLUZpeC11c2Utb2YtZ2VnbC1BUEkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGUxYzhmNGI4MzIzZTM5NjUyNzFhOTM1MjllYWI1Nzc0YzFhNzA4M2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAyOSBKdW4gMjAxNyAxMDozMjoxNCAtMDcwMAotU3ViamVjdDogW1BBVENIIDMvM10gRml4IHVzZSBvZiBnZWdsIEFQSQotCi1uZXdlciB2ZXJzaW9uIG9mIGdlZ2wgZG9lcyBub3QgZGVmaW5lIEdFR0xfSVNfUEFSQU1fU1BFQ19NVUxUSUxJTkUKLQotfCBjb3JlL2xpYmFwcGNvcmUuYShnaW1wcGFyYW1zcGVjcy1kdXBsaWNhdGUubyk6IEluIGZ1bmN0aW9uIGBnaW1wX3BhcmFtX3NwZWNfZHVwbGljYXRlJzoKLXwgL3Vzci9zcmMvZGVidWcvZ2ltcC8yLjguMjItcjAvZ2ltcC0yLjguMjIvYXBwL2NvcmUvLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vd29ya3NwYWNlL3NvdXJjZXMvZ2ltcC9hcHAvY29yZS9naW1wcGFyYW1zcGVjcy1kdXBsaWNhdGUuYzo3MDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgR0VHTF9JU19QQVJBTV9TUEVDX01VTFRJTElORScKLXwgY29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gYXBwL2NvcmUvZ2ltcHBhcmFtc3BlY3MtZHVwbGljYXRlLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9hcHAvY29yZS9naW1wcGFyYW1zcGVjcy1kdXBsaWNhdGUuYyBiL2FwcC9jb3JlL2dpbXBwYXJhbXNwZWNzLWR1cGxpY2F0ZS5jCi1pbmRleCBjMGI3NDI2Li4yZWZhZjIzIDEwMDY0NAotLS0tIGEvYXBwL2NvcmUvZ2ltcHBhcmFtc3BlY3MtZHVwbGljYXRlLmMKLSsrKyBiL2FwcC9jb3JlL2dpbXBwYXJhbXNwZWNzLWR1cGxpY2F0ZS5jCi1AQCAtNjcsNyArNjcsNyBAQCBnaW1wX3BhcmFtX3NwZWNfZHVwbGljYXRlIChHUGFyYW1TcGVjICpwc3BlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYy0+ZGVmYXVsdF92YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHNwZWMtPmZsYWdzKTsKLSAKLS0gICAgICAgICAgaWYgKEdFR0xfSVNfUEFSQU1fU1BFQ19NVUxUSUxJTkUgKHBzcGVjKSkKLSsgICAgICAgICAgaWYgKGdlZ2xfcGFyYW1fc3BlY19nZXRfcHJvcGVydHlfa2V5KHBzcGVjLCAibXVsdGlsaW5lIikpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3NldF9xZGF0YSAobmV3LCBtdWx0aWxpbmVfcXVhcmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHSU5UX1RPX1BPSU5URVIgKFRSVUUpKTsKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9naW1wL2dpbXAvYnVtcF9CYWJsLUdFR0xfdmVyc2lvbnMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2ltcC9naW1wL2J1bXBfQmFibC1HRUdMX3ZlcnNpb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzFiZjMyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9naW1wL2dpbXAvYnVtcF9CYWJsLUdFR0xfdmVyc2lvbnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1CdW1wIGFjY2VwdGFibGUgdmVyc2lvbnMgb2YgYmFibCBhbmQgZ2VnbC4KLQotUGF0Y2ggaXMgdGFrZW4gZnJvbSBkZWJpYW46Ci1odHRwczovL3BhY2thZ2VzLmRlYmlhbi5vcmcvc3RyZXRjaC9naW1wCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLWRpZmYgLS1naXQgYS9hcHAvc2FuaXR5LmMgYi9hcHAvc2FuaXR5LmMKLWluZGV4IGZlYmRkZmIuLjg1ZmVhNTUgMTAwNjQ0Ci0tLS0gYS9hcHAvc2FuaXR5LmMKLSsrKyBiL2FwcC9zYW5pdHkuYwotQEAgLTM1MSw3ICszNTEsNyBAQCBzYW5pdHlfY2hlY2tfYmFibCAodm9pZCkKLSAKLSAjZGVmaW5lIEJBQkxfUkVRVUlSRURfTUFKT1IgMAotICNkZWZpbmUgQkFCTF9SRVFVSVJFRF9NSU5PUiAxCi0tI2RlZmluZSBCQUJMX1JFUVVJUkVEX01JQ1JPIDEwCi0rI2RlZmluZSBCQUJMX1JFUVVJUkVEX01JQ1JPIDEyCi0gCi0gICBiYWJsX2dldF92ZXJzaW9uICgmYmFibF9tYWpvcl92ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgJmJhYmxfbWlub3JfdmVyc2lvbiwKLUBAIC0zODgsNyArMzg4LDcgQEAgc2FuaXR5X2NoZWNrX2dlZ2wgKHZvaWQpCi0gICBnaW50IGdlZ2xfbWljcm9fdmVyc2lvbjsKLSAKLSAjZGVmaW5lIEdFR0xfUkVRVUlSRURfTUFKT1IgMAotLSNkZWZpbmUgR0VHTF9SRVFVSVJFRF9NSU5PUiAyCi0rI2RlZmluZSBHRUdMX1JFUVVJUkVEX01JTk9SIDMKLSAjZGVmaW5lIEdFR0xfUkVRVUlSRURfTUlDUk8gMAotIAotICAgZ2VnbF9nZXRfdmVyc2lvbiAoJmdlZ2xfbWFqb3JfdmVyc2lvbiwKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDI2ODEyYjYuLjQyNTJmZTkgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTQwLDggKzQwLDggQEAgbTRfZGVmaW5lKFtnaW1wX3N0YWJsZV0sCi0gbTRfZGVmaW5lKFtnaW1wX2Z1bGxfbmFtZV0sIFtHTlUgSW1hZ2UgTWFuaXB1bGF0aW9uIFByb2dyYW1dKQotIAotICMgcmVxdWlyZWQgdmVyc2lvbnMgb2Ygb3RoZXIgcGFja2FnZXMKLS1tNF9kZWZpbmUoW2JhYmxfcmVxdWlyZWRfdmVyc2lvbl0sIFswLjEuMTBdKQotLW00X2RlZmluZShbZ2VnbF9yZXF1aXJlZF92ZXJzaW9uXSwgWzAuMi4wXSkKLSttNF9kZWZpbmUoW2JhYmxfcmVxdWlyZWRfdmVyc2lvbl0sIFswLjEuMTJdKQotK200X2RlZmluZShbZ2VnbF9yZXF1aXJlZF92ZXJzaW9uXSwgWzAuMy4wXSkKLSBtNF9kZWZpbmUoW2dsaWJfcmVxdWlyZWRfdmVyc2lvbl0sIFsyLjMwLjJdKQotIG00X2RlZmluZShbYXRrX3JlcXVpcmVkX3ZlcnNpb25dLCBbMi4yLjBdKQotIG00X2RlZmluZShbZ3RrX3JlcXVpcmVkX3ZlcnNpb25dLCBbMi4yNC4xMF0pCi1AQCAtNTE5LDcgKzUxOSw3IEBAIEFDX1NVQlNUKElTT19DT0RFU19MT0NBTEVESVIpCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIAotIFBLR19DSEVDS19NT0RVTEVTKEJBQkwsIGJhYmwgPj0gYmFibF9yZXF1aXJlZF92ZXJzaW9uKQotLVBLR19DSEVDS19NT0RVTEVTKEdFR0wsIGdlZ2wtMC4yID49IGdlZ2xfcmVxdWlyZWRfdmVyc2lvbikKLStQS0dfQ0hFQ0tfTU9EVUxFUyhHRUdMLCBnZWdsLTAuMyA+PSBnZWdsX3JlcXVpcmVkX3ZlcnNpb24pCi0gUEtHX0NIRUNLX01PRFVMRVMoQVRLLCBhdGsgPj0gYXRrX3JlcXVpcmVkX3ZlcnNpb24pCi0gCi0gQU1fUEFUSF9HTElCXzJfMChnbGliX3JlcXVpcmVkX3ZlcnNpb24sIDosCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2ltcC9naW1wXzIuOC4yMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9naW1wL2dpbXBfMi44LjIyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjQ1MzQ1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9naW1wL2dpbXBfMi44LjIyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgR0lNUCBpcyB0aGUgR05VIEltYWdlIE1hbmlwdWxhdGlvbiBQcm9ncmFtIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5naW1wLm9yZyIKLVNFQ1RJT04gPSAieDExL2dyYXBoaWNzIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1ERVBFTkRTID0gIiBcCi0gICAgZ2RrLXBpeGJ1Zi1uYXRpdmUgXAotICAgIGludGx0b29sLW5hdGl2ZSBcCi0gICAgbGlieHNsdC1uYXRpdmUgXAotICAgIGRidXMtZ2xpYiBcCi0gICAgZ3RrKyBcCi0gICAgYmFibCBcCi0gICAgZ2VnbCBcCi0gICAganBlZyBcCi0gICAgbGlicG5nIFwKLSAgICBsaWJleGlmIFwKLSAgICB0aWZmIFwKLSAgICBsY21zIFwKLSAgICBwb3BwbGVyIFwKLSAgICBqYXNwZXIgXAotICAgIGJ6aXAyIFwKLSAgICBsaWJndWRldiBcCi0gICAgbGlibW5nIFwKLSIKLURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2xpYnhtdSBsaWJ4cG0nLCAnJywgZCl9IgotCi1pbmhlcml0IGZlYXR1cmVzX2NoZWNrIGdub21lYmFzZSBndGstaWNvbi1jYWNoZSBndGstZG9jCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5naW1wLm9yZy9wdWIvZ2ltcC92Mi44L2dpbXAtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1hYy1kby1ub3QtY2hlY2stZm9yLWZyZWV0eXBlLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idW1wX0JhYmwtR0VHTF92ZXJzaW9ucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUZpeC11c2Utb2YtZ2VnbC1BUEkucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiN2U0ZmQ3YTUzYjFkM2MzMmRmZjY0MmFiMWE5NGI0NGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTE4N2EzNWNjNTJiMTEwZDc4MTI0ZDdiMjdiNjhhNjhhZGUxNGE3OTRjMjcyMTMxNGJhYzYxMzRkMmE1NjM4YSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1weXRob24gXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC13ZWJraXQgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC13bWYiCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0gICAgZmluZCAke0J9IC1uYW1lIE1ha2VmaWxlIHwgeGFyZ3Mgc2VkIC1pIHM6Jy1JJChpbmNsdWRlZGlyKSc6Jy1JLic6ZwotICAgIGZpbmQgJHtCfSAtbmFtZSBNYWtlZmlsZSB8IHhhcmdzIHNlZCAtaSBzOictSS91c3IvaW5jbHVkZSc6Jy1JJHtTVEFHSU5HX0lOQ0RJUn0nOmcKLX0KLQotQ0ZMQUdTICs9ICItZlBJQyIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ2ltcC8yLjAvKi8uZGVidWciCi1GSUxFU18ke1BOfSAgKz0gIiR7ZGF0YWRpcn0vYXBwZGF0YSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzJfMi41LjIzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMl8yLjUuMjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzYmRmOWMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMl8yLjUuMjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gImxpYmdwaG90bzIgYWxsb3dzIHlvdSB0byBhY2Nlc3MgZGlnaXRhbCBjYW1lcmFzIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA0NDhkMzY3NmJjMGRlMDA0MDZhZjIyN2QzNDFhNGQxIgotCi1ERVBFTkRTID0gImxpYnRvb2wganBlZyB2aXJ0dWFsL2xpYnVzYjAgbGliZXhpZiB6bGliIGxpYnhtbDIiCi0KLSMgVGhlIC5mZGkgYW5kIC5ydWxlcyBmaWxlcyB3ZXJlIGdlbmVyYXRlZCB3aXRoOgotIyAgbGliZ3Bob3RvMi0yLjUuOC9wYWNrYWdpbmcvZ2VuZXJpYyQgcWVtdS1hcm0gLXMgMTA0ODU3NiAtciAyLjYuMjQgLUwgL09FL2FuZ3N0cm9tLWRldi9zdGFnaW5nL2FybXY1dGUtYW5nc3Ryb20tbGludXgtZ251ZWFiaS8gLmxpYnMvcHJpbnQtY2FtZXJhLWxpc3QKLSMgVGhleSBhcmUgcmVsZWFzZSBzcGVjaWZpYywgc28gcGxlYXNlIHJlZ2VuIHdoZW4gYWRkaW5nIG5ldyByZWxlYXNlcwotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9ncGhvdG8vbGliZ3Bob3RvMi0ke1BWfS50YXIuYnoyO25hbWU9bGliZ3Bob3RvMiBcCi0gICAgICAgICAgIGZpbGU6Ly80MC1saWJncGhvdG8yLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLXJlbW92ZS1BTV9QT19TVUJESVJTLnBhdGNoIFwKLSIKLQotU1JDX1VSSVtsaWJncGhvdG8yLm1kNXN1bV0gPSAiYmYwNTJjZTgxNWU2MDdkYzc4MWM1YjBmM2M1Y2E1YzAiCi1TUkNfVVJJW2xpYmdwaG90bzIuc2hhMjU2c3VtXSA9ICJkOGFmMjMzNjRhYTQwZmQ4NjA3ZjdlMDczZGY3NGU3YWNlMDU1ODJmNGJhMTNmMTcyNGQxMmQzYzk3ZTg4NTJkIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBsaWJfcGFja2FnZQotCi1FWFRSQV9PRUNPTkYgPSAiIC0td2l0aC1kcml2ZXJzPWFsbCB1ZGV2c2NyaXB0ZGlyPSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldiBhY19jdl9saWJfbHRkbF9sdF9kbGNhbGxlcl9yZWdpc3Rlcj15ZXMiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2dkXSA9ICIsLS13aXRob3V0LWdkbGliLGdkIgotUEFDS0FHRUNPTkZJR1tzZXJpYWxdID0gIi0tZW5hYmxlLXNlcmlhbCwtLWRpc2FibGUtc2VyaWFsLGxvY2tkZXYiCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0gICAgY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluICR7U30vbGliZ3Bob3RvMl9wb3J0L3BvLwotICAgIGNkICR7U30vbGliZ3Bob3RvMl9wb3J0LwotICAgIGF1dG9yZWNvbmYgLVdjcm9zcyAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgJHtFWFRSQV9BVVRPUkVDT05GfSAkYWNwYXRocwotICAgIGNkICR7U30KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vKi5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCi19Ci0KLVBBQ0tBR0VTID0rICJsaWJncGhvdG9wb3J0IGxpYmdwaG90bzItY2FtbGlicyIKLUZJTEVTX2xpYmdwaG90bzItY2FtbGlicyA9ICIke2xpYmRpcn0vbGliZ3Bob3RvMiovKi8qLnNvKiIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImxpYmdwaG90bzItY2FtbGlicyIKLQotRklMRVNfbGliZ3Bob3RvcG9ydCA9ICIke2xpYmRpcn0vbGliZ3Bob3RvMl9wb3J0LnNvLioiCi0KLUZJTEVTXyR7UE59ICs9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvKiIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9LyovKi8uZGVidWciCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8qLyovKi5sYSIKLUZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9saWJncGhvdG8yX3BvcnQvMC4xMi4wL3ZjYW1lcmEvUkVBRE1FLnR4dCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzJfMi41LjI0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMl8yLjUuMjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ5YjBjNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzJfMi41LjI0LmJiCkBAIC0wLDAgKzEsNDkgQEAKK1NVTU1BUlkgPSAibGliZ3Bob3RvMiBhbGxvd3MgeW91IHRvIGFjY2VzcyBkaWdpdGFsIGNhbWVyYXMiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDQ0OGQzNjc2YmMwZGUwMDQwNmFmMjI3ZDM0MWE0ZDEiCisKK0RFUEVORFMgPSAibGlidG9vbCBqcGVnIHZpcnR1YWwvbGlidXNiMCBsaWJleGlmIHpsaWIgbGlieG1sMiIKKworIyBUaGUgLmZkaSBhbmQgLnJ1bGVzIGZpbGVzIHdlcmUgZ2VuZXJhdGVkIHdpdGg6CisjICBsaWJncGhvdG8yLTIuNS44L3BhY2thZ2luZy9nZW5lcmljJCBxZW11LWFybSAtcyAxMDQ4NTc2IC1yIDIuNi4yNCAtTCAvT0UvYW5nc3Ryb20tZGV2L3N0YWdpbmcvYXJtdjV0ZS1hbmdzdHJvbS1saW51eC1nbnVlYWJpLyAubGlicy9wcmludC1jYW1lcmEtbGlzdAorIyBUaGV5IGFyZSByZWxlYXNlIHNwZWNpZmljLCBzbyBwbGVhc2UgcmVnZW4gd2hlbiBhZGRpbmcgbmV3IHJlbGVhc2VzCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2dwaG90by9saWJncGhvdG8yLSR7UFZ9LnRhci5iejI7bmFtZT1saWJncGhvdG8yIFwKKyAgICAgICAgICAgZmlsZTovLzQwLWxpYmdwaG90bzIucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtcmVtb3ZlLUFNX1BPX1NVQkRJUlMucGF0Y2ggXAorIgorCitTUkNfVVJJW2xpYmdwaG90bzIubWQ1c3VtXSA9ICIwNjM2MzJkODM5YjcxNjk4ZTk5ZGEwY2NkMTliYzlmNiIKK1NSQ19VUklbbGliZ3Bob3RvMi5zaGEyNTZzdW1dID0gImZkM2M1Nzg3NjlmMGZhMzg5YzFlNjgxMjBmMjI0YmQ5ODQ3N2FhM2Q4MmQxNmI4Mjc0NmMxMjY2YzBkNGZiMzEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IGxpYl9wYWNrYWdlCisKK0VYVFJBX09FQ09ORiA9ICIgLS13aXRoLWRyaXZlcnM9YWxsIHVkZXZzY3JpcHRkaXI9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2IGFjX2N2X2xpYl9sdGRsX2x0X2RsY2FsbGVyX3JlZ2lzdGVyPXllcyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbZ2RdID0gIiwtLXdpdGhvdXQtZ2RsaWIsZ2QiCitQQUNLQUdFQ09ORklHW3NlcmlhbF0gPSAiLS1lbmFibGUtc2VyaWFsLC0tZGlzYWJsZS1zZXJpYWwsbG9ja2RldiIKKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKyAgICBjcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4gJHtTfS9saWJncGhvdG8yX3BvcnQvcG8vCisgICAgY2QgJHtTfS9saWJncGhvdG8yX3BvcnQvCisgICAgYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAke0VYVFJBX0FVVE9SRUNPTkZ9ICRhY3BhdGhzCisgICAgY2QgJHtTfQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8qLnJ1bGVzICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC8KK30KKworUEFDS0FHRVMgPSsgImxpYmdwaG90b3BvcnQgbGliZ3Bob3RvMi1jYW1saWJzIgorRklMRVNfbGliZ3Bob3RvMi1jYW1saWJzID0gIiR7bGliZGlyfS9saWJncGhvdG8yKi8qLyouc28qIgorUlJFQ09NTUVORFNfJHtQTn0gPSAibGliZ3Bob3RvMi1jYW1saWJzIgorCitGSUxFU19saWJncGhvdG9wb3J0ID0gIiR7bGliZGlyfS9saWJncGhvdG8yX3BvcnQuc28uKiIKKworRklMRVNfJHtQTn0gKz0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi8qIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vKi8qLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyovKi8qLmxhIgorRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L2xpYmdwaG90bzJfcG9ydC8wLjEyLjAvdmNhbWVyYS9SRUFETUUudHh0IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dyYXBodml6L2dyYXBodml6XzIuNDAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncmFwaHZpei9ncmFwaHZpel8yLjQwLjEuYmIKaW5kZXggMTc2Y2Y0NC4uMTJlY2I5OSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dyYXBodml6L2dyYXBodml6XzIuNDAuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3JhcGh2aXovZ3JhcGh2aXpfMi40MC4xLmJiCkBAIC02Niw4ICs2Niw4IEBACiBGSUxFU18ke1BOfS1kZW1vICs9ICIke2RhdGFkaXJ9L2dyYXBodml6L2RlbW8vIgogCiBSREVQRU5EU18ke1BOfS1wZXJsICs9ICJwZXJsIgotUkRFUEVORFNfJHtQTn0tcHl0aG9uICs9ICJweXRob24iCi1SREVQRU5EU18ke1BOfS1kZW1vICs9ICJweXRob24gcGVybCIKK1JERVBFTkRTXyR7UE59LXB5dGhvbiArPSAicHl0aG9uMyIKK1JERVBFTkRTXyR7UE59LWRlbW8gKz0gInB5dGhvbjMgcGVybCIKIAogSU5TQU5FX1NLSVBfJHtQTn0tcGVybCA9ICJkZXYtc28iCiBJTlNBTkVfU0tJUF8ke1BOfS1weXRob24gPSAiZGV2LXNvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2d0a3dhdmUvZ3Rrd2F2ZV8zLjMuMTAzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2d0a3dhdmUvZ3Rrd2F2ZV8zLjMuMTAzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODZkOWFhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ndGt3YXZlL2d0a3dhdmVfMy4zLjEwMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiVkNEIChWYWx1ZSBDaGFuZ2UgRHVtcCkgZmlsZSB3YXZlZm9ybSB2aWV3ZXIiCi1ERVNDUklQVElPTiA9ICJndGt3YXZlIGlzIGEgdmlld2VyIGZvciBWQ0QgKFZhbHVlIENoYW5nZSBEdW1wKSBmaWxlcyB3aGljaCBhcmUgdXN1YWxseSBjcmVhdGVkIGJ5IGRpZ2l0YWwgY2lyY3VpdCBzaW11bGF0b3JzLiAoVGhlc2UgZmlsZXMgaGF2ZSBubyBjb25uZWN0aW9uIHRvIHZpZGVvIENEcyEpICIKLUhPTUVQQUdFID0gImh0dHA6Ly9ndGt3YXZlLnNvdXJjZWZvcmdlLm5ldC8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTg1OTk4OTU0NWUzNzk2OGE5OWI2MzFlZjQyNzIyZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZ3Rrd2F2ZS5zb3VyY2Vmb3JnZS5uZXQvJHtCUH0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWE5YTU5MTNmOWEwMmEzMzNiMmIyMzYyNmYxNTNmZDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzMyNWFiZjdjZjI2YzUzMzA5YTY3YzBlY2FhZjE5Njc3NGZhOTgyYTcxN2ExMDJjNTk5YWM4YTUxNmVlZWFmNyIKLQotaW5oZXJpdCBwa2djb25maWcgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbwotREVQRU5EUyA9ICJ0Y2wgdGsgZ3BlcmYtbmF0aXZlIGJ6aXAyIHh6IHBhbmdvIHpsaWIgZ3RrKyBnZGstcGl4YnVmIGdsaWItMi4wIgotUkRFUEVORFNfJHtQTn0gPSAidGstbGliIgotCi0jIGRlcGVuZHMgb24gZ3RrKyB3aGljaCBoYXMgdGhpcyByZXN0cmljdGlvbgotaW5oZXJpdCBmZWF0dXJlc19jaGVjawotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzJESVNUUk9GRUFUVVJFU30iCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtdGNsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IC0td2l0aC10az0ke1NUQUdJTkdfQklORElSX0NST1NTfSAtLXdpdGgtdGlycGMiCi0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfSAke2RhdGFkaXJ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2d0a3dhdmUvZ3Rrd2F2ZV8zLjMuMTA0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2d0a3dhdmUvZ3Rrd2F2ZV8zLjMuMTA0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjMDZjMzAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Rrd2F2ZS9ndGt3YXZlXzMuMy4xMDQuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJWQ0QgKFZhbHVlIENoYW5nZSBEdW1wKSBmaWxlIHdhdmVmb3JtIHZpZXdlciIKK0RFU0NSSVBUSU9OID0gImd0a3dhdmUgaXMgYSB2aWV3ZXIgZm9yIFZDRCAoVmFsdWUgQ2hhbmdlIER1bXApIGZpbGVzIHdoaWNoIGFyZSB1c3VhbGx5IGNyZWF0ZWQgYnkgZGlnaXRhbCBjaXJjdWl0IHNpbXVsYXRvcnMuIChUaGVzZSBmaWxlcyBoYXZlIG5vIGNvbm5lY3Rpb24gdG8gdmlkZW8gQ0RzISkgIgorSE9NRVBBR0UgPSAiaHR0cDovL2d0a3dhdmUuc291cmNlZm9yZ2UubmV0LyIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1ODU5OTg5NTQ1ZTM3OTY4YTk5YjYzMWVmNDI3MjJlIgorCitTUkNfVVJJID0gImh0dHA6Ly9ndGt3YXZlLnNvdXJjZWZvcmdlLm5ldC8ke0JQfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMzg3OTY4OWVjZjdlMmNkZDJjZDVhOTFjNWM2MDFkYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMjBkZDFhOTMwN2I5MDg0MzljNjgxMjJhOWY4MWQzZmY0MzRhNmJmYTU0MzlmMGNiMDEzOThmZWM2NTA4OTRmIgorCitpbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIG1pbWUgbWltZS14ZGcKK0RFUEVORFMgKz0gInRjbCB0ayBncGVyZi1uYXRpdmUgYnppcDIgeHogcGFuZ28gemxpYiBndGsrIGdkay1waXhidWYgZ2xpYi0yLjAiCitSREVQRU5EU18ke1BOfSArPSAidGstbGliIgorCisjIGRlcGVuZHMgb24gZ3RrKyB3aGljaCBoYXMgdGhpcyByZXN0cmljdGlvbgoraW5oZXJpdCBmZWF0dXJlc19jaGVjaworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzJESVNUUk9GRUFUVVJFU30iCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtdGNsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IC0td2l0aC10az0ke1NUQUdJTkdfQklORElSX0NST1NTfSAtLXdpdGgtdGlycGMiCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfSAke2RhdGFkaXJ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXJfMC45LjEyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXJfMC45LjEyLmJiCmluZGV4IDIyZmM4M2EuLmRmZGY4MjQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ2bmNzZXJ2ZXIvbGlidm5jc2VydmVyXzAuOS4xMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlidm5jc2VydmVyL2xpYnZuY3NlcnZlcl8wLjkuMTIuYmIKQEAgLTE3LDcgKzE3LDYgQEAKICAgICBwdGhyZWFkIFwKICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3N5c3RlbWQnLCcnLGQpfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ2lwdjYnLCAnJyxkKX0gXAotICAgIHNhc2wgXAogICAgIHNkbCBcCiAgICAgd2Vic29ja2V0cyBcCiAgICAgemxpYiBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS1uY3Vyc2VzXzIuNTIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLW5jdXJzZXNfMi41Mi4wLmJiCmluZGV4IGRhZTVjMzQuLjFhMzc2YTQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLW5jdXJzZXNfMi41Mi4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLW5jdXJzZXNfMi41Mi4wLmJiCkBAIC0yNSw4ICsyNSwxMCBAQAogICAgIGdpdCBjaGVja291dCBib290c3RyYXAuc2gKICAgICBzZWQgLWkgInMjL3VzciMke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9JHtiYXNlX3ByZWZpeH0mIyIgYm9vdHN0cmFwLnNoCiAgICAgLi9ib290c3RyYXAuc2gKLSAgICBta2RpciAtcCAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9JHtiYXNlX3ByZWZpeH0vdXNyL2xpYjY0LwotICAgIGNwICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2Jhc2VfcHJlZml4fS91c3IvbGliL2xpYnl1aS5zbyogJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSR7YmFzZV9wcmVmaXh9L3Vzci9saWI2NC8KKyAgICBpZiBbIC1lICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2Jhc2VfcHJlZml4fS91c3IvbGliL2xpYnl1aS5zbyBdOyB0aGVuCisgICAgICAgIG1rZGlyIC1wICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2Jhc2VfcHJlZml4fS91c3IvbGliNjQvCisgICAgICAgIGNwICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2Jhc2VfcHJlZml4fS91c3IvbGliL2xpYnl1aS5zbyogJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSR7YmFzZV9wcmVmaXh9L3Vzci9saWI2NC8KKyAgICBmaQogICAgIGNkIC0KICAgICBzZWQgLWkgLWUgInMjXCR7WVBSRUZJWH0jXCR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2Jhc2VfcHJlZml4fSYjIiAke1N9L0NNYWtlTGlzdHMudHh0CiAgICAgc2VkIC1pIC1lICJzIy91c3IjJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSR7YmFzZV9wcmVmaXh9JiMiICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2xpYmRpcn0vY21ha2UvbGlieXVpL0xpYnl1aUxpYnJhcnlEZXBlbmRzLXJlbGVhc2UuY21ha2UKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuYm94L2ZpbGVzLzAwMDEtb3BlbmJveC14ZGctYXV0b3N0YXJ0LWNvbnZlcnQtdG8tcHl0aG9uMy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuYm94L2ZpbGVzLzAwMDEtb3BlbmJveC14ZGctYXV0b3N0YXJ0LWNvbnZlcnQtdG8tcHl0aG9uMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWJlYjAxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5ib3gvZmlsZXMvMDAwMS1vcGVuYm94LXhkZy1hdXRvc3RhcnQtY29udmVydC10by1weXRob24zLnBhdGNoCkBAIC0wLDAgKzEsMTM4IEBACitGcm9tIGI3ZGU5Y2ZmMmE5NTc4ZGQ5MmQxOTEyNDFjMjg0MzdjZDZiYmI1OTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXggS3J1bW1lbmFjaGVyIDxtYXgua3J1bW1lbmFjaGVyQHRvcmFkZXguY29tPgorRGF0ZTogU3VuLCAyIEZlYiAyMDIwIDE0OjM5OjIxICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIG9wZW5ib3gteGRnLWF1dG9zdGFydDogY29udmVydCB0byBweXRob24zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNYXggS3J1bW1lbmFjaGVyIDxtYXgua3J1bW1lbmFjaGVyQHRvcmFkZXguY29tPgorLS0tCisgZGF0YS9hdXRvc3RhcnQvb3BlbmJveC14ZGctYXV0b3N0YXJ0IHwgNzIgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RhdGEvYXV0b3N0YXJ0L29wZW5ib3gteGRnLWF1dG9zdGFydCBiL2RhdGEvYXV0b3N0YXJ0L29wZW5ib3gteGRnLWF1dG9zdGFydAoraW5kZXggMDRhMTdhMS4uNTJkNzYzZiAxMDA3NTUKKy0tLSBhL2RhdGEvYXV0b3N0YXJ0L29wZW5ib3gteGRnLWF1dG9zdGFydAorKysrIGIvZGF0YS9hdXRvc3RhcnQvb3BlbmJveC14ZGctYXV0b3N0YXJ0CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgCisgIyBvcGVuYm94LXhkZy1hdXRvc3RhcnQgcnVucyB0aGluZ3MgYmFzZWQgb24gdGhlIFhERyBhdXRvc3RhcnQgc3BlY2lmaWNhdGlvbgorICMgQ29weXJpZ2h0IChDKSAyMDA4ICAgICAgIERhbmEgSmFuc2VucworQEAgLTI4LDkgKzI4LDkgQEAgdHJ5OgorICAgICBmcm9tIHhkZy5EZXNrdG9wRW50cnkgaW1wb3J0IERlc2t0b3BFbnRyeQorICAgICBmcm9tIHhkZy5FeGNlcHRpb25zIGltcG9ydCBQYXJzaW5nRXJyb3IKKyBleGNlcHQgSW1wb3J0RXJyb3I6CistICAgIHByaW50CistICAgIHByaW50ID4+c3lzLnN0ZGVyciwgIkVSUk9SOiIsIE1FLCAicmVxdWlyZXMgUHlYREcgdG8gYmUgaW5zdGFsbGVkIgorLSAgICBwcmludAorKyAgICBwcmludCgpCisrICAgIHByaW50KCJFUlJPUjoiLCBNRSwgInJlcXVpcmVzIFB5WERHIHRvIGJlIGluc3RhbGxlZCIsIGZpbGU9c3lzLnN0ZGVycikKKysgICAgcHJpbnQoKQorICAgICBzeXMuZXhpdCgxKQorIAorIGRlZiBtYWluKGFyZ3Y9c3lzLmFyZ3YpOgorQEAgLTUxLDcgKzUxLDcgQEAgZGVmIG1haW4oYXJndj1zeXMuYXJndik6CisgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICBhdXRvZmlsZSA9IEF1dG9zdGFydEZpbGUocGF0aCkKKyAgICAgICAgICAgICBleGNlcHQgUGFyc2luZ0Vycm9yOgorLSAgICAgICAgICAgICAgICBwcmludCAiSW52YWxpZCAuZGVza3RvcCBmaWxlOiAiICsgcGF0aAorKyAgICAgICAgICAgICAgICBwcmludCgiSW52YWxpZCAuZGVza3RvcCBmaWxlOiAiICsgcGF0aCkKKyAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICBpZiBub3QgYXV0b2ZpbGUgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgICAgICBmaWxlcy5hcHBlbmQoYXV0b2ZpbGUpCitAQCAtOTksOSArOTksOSBAQCBjbGFzcyBBdXRvc3RhcnRGaWxlOgorIAorICAgICBkZWYgX2FsZXJ0KHNlbGYsIHN0ciwgaW5mbz1GYWxzZSk6CisgICAgICAgICBpZiBpbmZvOgorLSAgICAgICAgICAgIHByaW50ICJcdCAiLCBzdHIKKysgICAgICAgICAgICBwcmludCgiXHQgIiwgc3RyKQorICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICBwcmludCAiXHQqIiwgc3RyCisrICAgICAgICAgICAgcHJpbnQoIlx0KiIsIHN0cikKKyAKKyAgICAgZGVmIF9zaG93SW5FbnZpcm9ubWVudChzZWxmLCBlbnZzLCB2ZXJib3NlPUZhbHNlKToKKyAgICAgICAgIGRlZmF1bHQgPSBub3Qgc2VsZi5kZS5nZXRPbmx5U2hvd0luKCkKK0BAIC0xNDYsMTQgKzE0NiwxNCBAQCBjbGFzcyBBdXRvc3RhcnRGaWxlOgorIAorICAgICBkZWYgZGlzcGxheShzZWxmLCBlbnZzKToKKyAgICAgICAgIGlmIHNlbGYuX3Nob3VsZFJ1bihlbnZzKToKKy0gICAgICAgICAgICBwcmludCAiWypdICIgKyBzZWxmLmRlLmdldE5hbWUoKQorKyAgICAgICAgICAgIHByaW50KCJbKl0gIiArIHNlbGYuZGUuZ2V0TmFtZSgpKQorICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICBwcmludCAiWyBdICIgKyBzZWxmLmRlLmdldE5hbWUoKQorKyAgICAgICAgICAgIHByaW50KCJbIF0gIiArIHNlbGYuZGUuZ2V0TmFtZSgpKQorICAgICAgICAgc2VsZi5fYWxlcnQoIkZpbGU6ICIgKyBzZWxmLnBhdGgsIGluZm89VHJ1ZSkKKyAgICAgICAgIGlmIHNlbGYuZGUuZ2V0RXhlYygpOgorICAgICAgICAgICAgIHNlbGYuX2FsZXJ0KCJFeGVjdXRlczogIiArIHNlbGYuZGUuZ2V0RXhlYygpLCBpbmZvPVRydWUpCisgICAgICAgICBzZWxmLl9zaG91bGRSdW4oZW52cywgVHJ1ZSkKKy0gICAgICAgIHByaW50CisrICAgICAgICBwcmludCgpCisgCisgICAgIGRlZiBydW4oc2VsZiwgZW52cyk6CisgICAgICAgICBoZXJlID0gb3MuZ2V0Y3dkKCkKK0BAIC0xNjUsMzQgKzE2NSwzNCBAQCBjbGFzcyBBdXRvc3RhcnRGaWxlOgorICAgICAgICAgb3MuY2hkaXIoaGVyZSkKKyAKKyBkZWYgc2hvd19oZWxwKCk6CistICAgIHByaW50ICJVc2FnZToiLCBNRSwgIltPUFRJT05dLi4uIFtFTlZJUk9OTUVOVF0uLi4iCistICAgIHByaW50CistICAgIHByaW50ICJUaGlzIHRvb2wgd2lsbCBydW4geGRnIGF1dG9zdGFydCAuZGVza3RvcCBmaWxlcyIKKy0gICAgcHJpbnQKKy0gICAgcHJpbnQgIk9QVElPTlMiCistICAgIHByaW50ICIgIC0tbGlzdCAgICAgICAgU2hvdyBhIGxpc3Qgb2YgdGhlIGZpbGVzIHdoaWNoIHdvdWxkIGJlIHJ1biIKKy0gICAgcHJpbnQgIiAgICAgICAgICAgICAgICBGaWxlcyB3aGljaCB3b3VsZCBiZSBydW4gYXJlIG1hcmtlZCB3aXRoIGFuIGFzdGVyaXgiCistICAgIHByaW50ICIgICAgICAgICAgICAgICAgc3ltYm9sIFsqXS4gIEZvciBmaWxlcyB3aGljaCB3b3VsZCBub3QgYmUgcnVuLCIKKy0gICAgcHJpbnQgIiAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBpcyBnaXZlbiBmb3Igd2h5IHRoZXkgYXJlIGV4Y2x1ZGVkIgorLSAgICBwcmludCAiICAtLWhlbHAgICAgICAgIFNob3cgdGhpcyBoZWxwIGFuZCBleGl0IgorLSAgICBwcmludCAiICAtLXZlcnNpb24gICAgIFNob3cgdmVyc2lvbiBhbmQgY29weXJpZ2h0IGluZm9ybWF0aW9uIgorLSAgICBwcmludAorLSAgICBwcmludCAiRU5WSVJPTk1FTlQgc3BlY2lmaWVzIGEgbGlzdCBvZiBlbnZpcm9ubWVudHMgZm9yIHdoaWNoIHRvIHJ1biBhdXRvc3RhcnQiCistICAgIHByaW50ICJhcHBsaWNhdGlvbnMuICBJZiBub25lIGFyZSBzcGVjaWZpZWQsIG9ubHkgYXBwbGljYXRpb25zIHdoaWNoIGRvIG5vdCAiCistICAgIHByaW50ICJsaW1pdCB0aGVtc2VsdmVzIHRvIGNlcnRhaW4gZW52aXJvbm1lbnRzIHdpbGwgYmUgcnVuLiIKKy0gICAgcHJpbnQKKy0gICAgcHJpbnQgIkVOVklST05NRU5UIGNhbiBiZSBvbmUgb3IgbW9yZSBvZjoiCistICAgIHByaW50ICIgIEdOT01FICAgICAgICAgR25vbWUgRGVza3RvcCIKKy0gICAgcHJpbnQgIiAgS0RFICAgICAgICAgICBLREUgRGVza3RvcCIKKy0gICAgcHJpbnQgIiAgUk9YICAgICAgICAgICBST1ggRGVza3RvcCIKKy0gICAgcHJpbnQgIiAgWEZDRSAgICAgICAgICBYRkNFIERlc2t0b3AiCistICAgIHByaW50ICIgIE9sZCAgICAgICAgICAgTGVnYWN5IHN5c3RlbXMiCistICAgIHByaW50CisrICAgIHByaW50KCJVc2FnZToiLCBNRSwgIltPUFRJT05dLi4uIFtFTlZJUk9OTUVOVF0uLi4iKQorKyAgICBwcmludCgpCisrICAgIHByaW50KCJUaGlzIHRvb2wgd2lsbCBydW4geGRnIGF1dG9zdGFydCAuZGVza3RvcCBmaWxlcyIpCisrICAgIHByaW50KCkKKysgICAgcHJpbnQoIk9QVElPTlMiKQorKyAgICBwcmludCgiICAtLWxpc3QgICAgICAgIFNob3cgYSBsaXN0IG9mIHRoZSBmaWxlcyB3aGljaCB3b3VsZCBiZSBydW4iKQorKyAgICBwcmludCgiICAgICAgICAgICAgICAgIEZpbGVzIHdoaWNoIHdvdWxkIGJlIHJ1biBhcmUgbWFya2VkIHdpdGggYW4gYXN0ZXJpeCIpCisrICAgIHByaW50KCIgICAgICAgICAgICAgICAgc3ltYm9sIFsqXS4gIEZvciBmaWxlcyB3aGljaCB3b3VsZCBub3QgYmUgcnVuLCIpCisrICAgIHByaW50KCIgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gaXMgZ2l2ZW4gZm9yIHdoeSB0aGV5IGFyZSBleGNsdWRlZCIpCisrICAgIHByaW50KCIgIC0taGVscCAgICAgICAgU2hvdyB0aGlzIGhlbHAgYW5kIGV4aXQiKQorKyAgICBwcmludCgiICAtLXZlcnNpb24gICAgIFNob3cgdmVyc2lvbiBhbmQgY29weXJpZ2h0IGluZm9ybWF0aW9uIikKKysgICAgcHJpbnQoKQorKyAgICBwcmludCgiRU5WSVJPTk1FTlQgc3BlY2lmaWVzIGEgbGlzdCBvZiBlbnZpcm9ubWVudHMgZm9yIHdoaWNoIHRvIHJ1biBhdXRvc3RhcnQiKQorKyAgICBwcmludCgiYXBwbGljYXRpb25zLiAgSWYgbm9uZSBhcmUgc3BlY2lmaWVkLCBvbmx5IGFwcGxpY2F0aW9ucyB3aGljaCBkbyBub3QgIikKKysgICAgcHJpbnQoImxpbWl0IHRoZW1zZWx2ZXMgdG8gY2VydGFpbiBlbnZpcm9ubWVudHMgd2lsbCBiZSBydW4uIikKKysgICAgcHJpbnQoKQorKyAgICBwcmludCgiRU5WSVJPTk1FTlQgY2FuIGJlIG9uZSBvciBtb3JlIG9mOiIpCisrICAgIHByaW50KCIgIEdOT01FICAgICAgICAgR25vbWUgRGVza3RvcCIpCisrICAgIHByaW50KCIgIEtERSAgICAgICAgICAgS0RFIERlc2t0b3AiKQorKyAgICBwcmludCgiICBST1ggICAgICAgICAgIFJPWCBEZXNrdG9wIikKKysgICAgcHJpbnQoIiAgWEZDRSAgICAgICAgICBYRkNFIERlc2t0b3AiKQorKyAgICBwcmludCgiICBPbGQgICAgICAgICAgIExlZ2FjeSBzeXN0ZW1zIikKKysgICAgcHJpbnQoKQorIAorIGRlZiBzaG93X3ZlcnNpb24oKToKKy0gICAgcHJpbnQgTUUsIFZFUlNJT04KKy0gICAgcHJpbnQgIkNvcHlyaWdodCAoYykgMjAwOCAgICAgICAgRGFuYSBKYW5zZW5zIgorLSAgICBwcmludAorKyAgICBwcmludChNRSwgVkVSU0lPTikKKysgICAgcHJpbnQoIkNvcHlyaWdodCAoYykgMjAwOCAgICAgICAgRGFuYSBKYW5zZW5zIikKKysgICAgcHJpbnQoKQorIAorIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgICAgICBzeXMuZXhpdChtYWluKCkpCistLSAKKzIuMjAuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmJveC9vcGVuYm94XzMuNi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5ib3gvb3BlbmJveF8zLjYuMS5iYgppbmRleCAzM2YzNGU0Li5lMjY5YTI2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmJveC9vcGVuYm94XzMuNi4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuYm94L29wZW5ib3hfMy42LjEuYmIKQEAgLTcsNiArNyw3IEBACiBTUkNfVVJJID0gIiBcCiAgICAgaHR0cDovL2ljY3VsdXMub3JnL29wZW5ib3gvcmVsZWFzZXMvb3BlbmJveC0ke1BWfS50YXIuZ3ogXAogICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLWF2b2lkLXJhY2Utd2hlbi1jcmVhdGluZy1hdXRvc3RhcnQtZGlyZWMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLW9wZW5ib3gteGRnLWF1dG9zdGFydC1jb252ZXJ0LXRvLXB5dGhvbjMucGF0Y2ggXAogIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiYjcyNzk0OTk2YzZhM2FkOTQ2MzQ3MjdiOTVmOWQyMDQiCkBAIC01NCw0ICs1NSw0IEBACiAKIEZJTEVTXyR7UE59LWNvbmZpZyArPSAiJHtzeXNjb25mZGlyfSIKIAotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWNvcmUgJHtQTn0tY29uZmlnICR7UE59LXRoZW1lLWNsZWFybG9va3MgcHl0aG9uIHB5dGhvbi1zaGVsbCBweXhkZyIKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1jb3JlICR7UE59LWNvbmZpZyAke1BOfS10aGVtZS1jbGVhcmxvb2tzIHB5dGhvbjMgcHl0aG9uMy1zaGVsbCBweXhkZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuanBlZy9vcGVuanBlZy9DVkUtMjAyMC02ODUxLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5qcGVnL29wZW5qcGVnL0NWRS0yMDIwLTY4NTEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWYyZmM5MAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuanBlZy9vcGVuanBlZy9DVkUtMjAyMC02ODUxLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gMDI0Yjg0MDczOTJjYjBiODJiMDRiNThlZDI1NjA5NGVkNTc5OWUwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0QHNwYXRpYWx5cy5jb20+CitEYXRlOiBTYXQsIDExIEphbiAyMDIwIDAxOjUxOjE5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIG9wal9qMmtfdXBkYXRlX2ltYWdlX2RpbWVuc2lvbnMoKTogcmVqZWN0IGltYWdlcyB3aG9zZQorIGNvb3JkaW5hdGVzIGFyZSBiZXlvbmQgSU5UX01BWCAoZml4ZXMgIzEyMjgpCisKKy0tLQorIHNyYy9saWIvb3BlbmpwMi9qMmsuYyB8IDggKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvbGliL29wZW5qcDIvajJrLmMgYi9zcmMvbGliL29wZW5qcDIvajJrLmMKK2luZGV4IDE0ZjZmZjQxLi45MjI1NTBlYiAxMDA2NDQKKy0tLSBhL3NyYy9saWIvb3BlbmpwMi9qMmsuYworKysrIGIvc3JjL2xpYi9vcGVuanAyL2oyay5jCitAQCAtOTIzNiw2ICs5MjM2LDE0IEBAIHN0YXRpYyBPUEpfQk9PTCBvcGpfajJrX3VwZGF0ZV9pbWFnZV9kaW0KKyAgICAgbF9pbWdfY29tcCA9IHBfaW1hZ2UtPmNvbXBzOworICAgICBmb3IgKGl0X2NvbXAgPSAwOyBpdF9jb21wIDwgcF9pbWFnZS0+bnVtY29tcHM7ICsraXRfY29tcCkgeworICAgICAgICAgT1BKX0lOVDMyIGxfaCwgbF93OworKyAgICAgICAgaWYgKHBfaW1hZ2UtPngwID4gKE9QSl9VSU5UMzIpSU5UX01BWCB8fAorKyAgICAgICAgICAgICAgICBwX2ltYWdlLT55MCA+IChPUEpfVUlOVDMyKUlOVF9NQVggfHwKKysgICAgICAgICAgICAgICAgcF9pbWFnZS0+eDEgPiAoT1BKX1VJTlQzMilJTlRfTUFYIHx8CisrICAgICAgICAgICAgICAgIHBfaW1hZ2UtPnkxID4gKE9QSl9VSU5UMzIpSU5UX01BWCkgeworKyAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAiSW1hZ2UgY29vcmRpbmF0ZXMgYWJvdmUgSU5UX01BWCBhcmUgbm90IHN1cHBvcnRlZFxuIik7CisrICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKysgICAgICAgIH0KKyAKKyAgICAgICAgIGxfaW1nX2NvbXAtPngwID0gKE9QSl9VSU5UMzIpb3BqX2ludF9jZWlsZGl2KChPUEpfSU5UMzIpcF9pbWFnZS0+eDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIChPUEpfSU5UMzIpbF9pbWdfY29tcC0+ZHgpOworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5qcGVnL29wZW5qcGVnL0NWRS0yMDIwLTgxMTIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmpwZWcvb3BlbmpwZWcvQ1ZFLTIwMjAtODExMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjI1MDUzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5qcGVnL29wZW5qcGVnL0NWRS0yMDIwLTgxMTIucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSAwNWY5YjkxZTYwZGViZGEwZTgzOTc3ZTVlNjNiMmU2NjQ4NmY3MDc0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHRAc3BhdGlhbHlzLmNvbT4KK0RhdGU6IFRodSwgMzAgSmFuIDIwMjAgMDA6NTk6NTcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gb3BqX3RjZF9pbml0X3RpbGUoKTogYXZvaWQgaW50ZWdlciBvdmVyZmxvdworCitUaGF0IGNvdWxkIGxlYWQgdG8gbGF0ZXIgYXNzZXJ0aW9uIGZhaWx1cmVzLgorCitGaXhlcyAjMTIzMSAvIENWRS0yMDIwLTgxMTIKKy0tLQorIHNyYy9saWIvb3BlbmpwMi90Y2QuYyB8IDIwICsrKysrKysrKysrKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbGliL29wZW5qcDIvdGNkLmMgYi9zcmMvbGliL29wZW5qcDIvdGNkLmMKK2luZGV4IGRlZWNjNGRmLi5hYTQxOTAzMCAxMDA2NDQKKy0tLSBhL3NyYy9saWIvb3BlbmpwMi90Y2QuYworKysrIGIvc3JjL2xpYi9vcGVuanAyL3RjZC5jCitAQCAtOTA1LDggKzkwNSwyNCBAQCBzdGF0aWMgSU5MSU5FIE9QSl9CT09MIG9wal90Y2RfaW5pdF90aWxlKG9wal90Y2RfdCAqcF90Y2QsIE9QSl9VSU5UMzIgcF90aWxlX25vLAorICAgICAgICAgICAgIC8qIHAuIDY0LCBCLjYsIElTTy9JRUMgRkRJUzE1NDQ0LTEgOiAyMDAwICgxOCBhdWd1c3QgMjAwMCkgICovCisgICAgICAgICAgICAgbF90bF9wcmNfeF9zdGFydCA9IG9wal9pbnRfZmxvb3JkaXZwb3cyKGxfcmVzLT54MCwgKE9QSl9JTlQzMilsX3BkeCkgPDwgbF9wZHg7CisgICAgICAgICAgICAgbF90bF9wcmNfeV9zdGFydCA9IG9wal9pbnRfZmxvb3JkaXZwb3cyKGxfcmVzLT55MCwgKE9QSl9JTlQzMilsX3BkeSkgPDwgbF9wZHk7CistICAgICAgICAgICAgbF9icl9wcmNfeF9lbmQgPSBvcGpfaW50X2NlaWxkaXZwb3cyKGxfcmVzLT54MSwgKE9QSl9JTlQzMilsX3BkeCkgPDwgbF9wZHg7CistICAgICAgICAgICAgbF9icl9wcmNfeV9lbmQgPSBvcGpfaW50X2NlaWxkaXZwb3cyKGxfcmVzLT55MSwgKE9QSl9JTlQzMilsX3BkeSkgPDwgbF9wZHk7CisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHRtcCA9ICgoT1BKX1VJTlQzMilvcGpfaW50X2NlaWxkaXZwb3cyKGxfcmVzLT54MSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE9QSl9JTlQzMilsX3BkeCkpIDw8IGxfcGR4OworKyAgICAgICAgICAgICAgICBpZiAodG1wID4gKE9QSl9VSU5UMzIpSU5UX01BWCkgeworKyAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhtYW5hZ2VyLCBFVlRfRVJST1IsICJJbnRlZ2VyIG92ZXJmbG93XG4iKTsKKysgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgbF9icl9wcmNfeF9lbmQgPSAoT1BKX0lOVDMyKXRtcDsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHRtcCA9ICgoT1BKX1VJTlQzMilvcGpfaW50X2NlaWxkaXZwb3cyKGxfcmVzLT55MSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE9QSl9JTlQzMilsX3BkeSkpIDw8IGxfcGR5OworKyAgICAgICAgICAgICAgICBpZiAodG1wID4gKE9QSl9VSU5UMzIpSU5UX01BWCkgeworKyAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhtYW5hZ2VyLCBFVlRfRVJST1IsICJJbnRlZ2VyIG92ZXJmbG93XG4iKTsKKysgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgbF9icl9wcmNfeV9lbmQgPSAoT1BKX0lOVDMyKXRtcDsKKysgICAgICAgICAgICB9CisgICAgICAgICAgICAgLypmcHJpbnRmKHN0ZGVyciwgIlx0XHRcdHByY194X3N0YXJ0PSVkLCBwcmNfeV9zdGFydD0lZCwgYnJfcHJjX3hfZW5kPSVkLCBicl9wcmNfeV9lbmQ9JWQgXG4iLCBsX3RsX3ByY194X3N0YXJ0LCBsX3RsX3ByY195X3N0YXJ0LCBsX2JyX3ByY194X2VuZCAsbF9icl9wcmNfeV9lbmQgKTsqLworIAorICAgICAgICAgICAgIGxfcmVzLT5wdyA9IChsX3Jlcy0+eDAgPT0gbF9yZXMtPngxKSA/IDBVIDogKE9QSl9VSU5UMzIpKCgKKy0tIAorMi4yMC4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuanBlZy9vcGVuanBlZ18yLjMuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuanBlZy9vcGVuanBlZ18yLjMuMS5iYgppbmRleCBmZmQ0MDk5Li40MjAxMWVmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmpwZWcvb3BlbmpwZWdfMi4zLjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5qcGVnL29wZW5qcGVnXzIuMy4xLmJiCkBAIC04LDYgKzgsOCBAQAogU1JDX1VSSSA9ICIgXAogICAgIGdpdDovL2dpdGh1Yi5jb20vdWNsb3V2YWluL29wZW5qcGVnLmdpdCBcCiAgICAgZmlsZTovLzAwMDItRG8tbm90LWFzay1jbWFrZS10by1leHBvcnQtYmluYXJpZXMtdGhleS1kb24tdC1tYWtlLS5wYXRjaCBcCisgICAgZmlsZTovL0NWRS0yMDIwLTY4NTEucGF0Y2ggXAorICAgIGZpbGU6Ly9DVkUtMjAyMC04MTEyLnBhdGNoIFwKICIKIFNSQ1JFViA9ICI1NzA5NjMyNTQ1N2Y5NmQ4Y2QwN2JkM2FmMDRmZTgxZDdhMmJhNzg4IgogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb21tXzIuNDIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb21tXzIuNDIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVlNzFhYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29tbV8yLjQyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIkMrKyBiaW5kaW5ncyBmb3IgdGhlIHBhbmdvIGxpYnJhcnkiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kODA0NWYzYjhmOTI5YzFjYjI5YTFlM2ZkNzM3YjQ5OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLnRvb2xzO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotREVQRU5EUyA9ICJtbS1jb21tb24gY2Fpcm9tbSBnbGlibW0gcGFuZ28iCi0KLVNIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL3BhbmdvbW0vJHtTSFJUX1ZFUn0vcGFuZ29tbS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiNmNmZmVkZjIyMjVjNGU3MjY0NWE3ZDc1N2ZiNWI4MzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2E2ZGEwNjdmZjkzYTY0NDU3ODBjMGI0YjIyNmViODRmNDg0YWIxMDRiODM5MWZiNzQ0YTQ1Y2JjN2VkYmY1NiIKLQotaW5oZXJpdCBmZWF0dXJlc19jaGVjayBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLUVYVFJBX09FQ09ORiA9ICIgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gIgotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKi5zby4qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vKi9pbmNsdWRlLyAke2xpYmRpcn0vcGFuZ29tbS0qLyIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvbW1fMi40Mi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvbW1fMi40Mi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ZDlmZjkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29tbV8yLjQyLjEuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJDKysgYmluZGluZ3MgZm9yIHRoZSBwYW5nbyBsaWJyYXJ5IgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDgwNDVmM2I4ZjkyOWMxY2IyOWExZTNmZDczN2I0OTkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy50b29sczttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK0RFUEVORFMgPSAibW0tY29tbW9uIGNhaXJvbW0gZ2xpYm1tIHBhbmdvIgorCitTSFJUX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfS4ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9wYW5nb21tLyR7U0hSVF9WRVJ9L3BhbmdvbW0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjMzOWM0OGRkOTJlYmQzYTk5MTFiMjMxNzA4ZjdhODE5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE0YmYwNDkzOTkzMDg3MGQ1Y2ZhOTY4NjBlZDk1M2FkMmNlMDdjM2ZkODcxM2FkZDRhMWJmZTU4NTU4OWY0MGYiCisKK2luaGVyaXQgZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitFWFRSQV9PRUNPTkYgPSAiIC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uICIKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyovaW5jbHVkZS8gJHtsaWJkaXJ9L3BhbmdvbW0tKi8iCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9yZW5kZXJkb2MvcmVuZGVyZG9jXzEuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9yZW5kZXJkb2MvcmVuZGVyZG9jXzEuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWY4MWU4NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvcmVuZGVyZG9jL3JlbmRlcmRvY18xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1TVU1NQVJZID0gIlJlbmRlckRvYyByZWNpcGUgcHJvdmlkaW5nIHJlbmRlcmRvY2NtZCIKLURFU0NSSVBUSU9OID0gIlJlbmRlckRvYyBpcyBhIGZyYW1lLWNhcHR1cmUgYmFzZWQgZ3JhcGhpY3MgZGVidWdnZXIiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYmFsZHVyay9yZW5kZXJkb2MiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PTk3NTNiMWI0ZmJhMzI2MWMyN2QxY2U1YzFhY2VmNjY3IgotCi1TUkNSRVYgPSAiYTk0ZjIzOGUzN2NmZTJmMTQyMDkzZWI4ZTVkYTc3NzVhYmFhODhjNiIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9iYWxkdXJrLyR7QlBOfS5naXQ7cHJvdG9jb2w9aHR0cDticmFuY2g9djEueCBcCi0JICAgZmlsZTovLzAwMDEtcmVuZGVyZG9jLXVzZS14eGQtaW5zdGVhZC1vZi1jcm9zcy1jb21waWxpbmctc2hpbS1iaS5wYXRjaCBcCi0JICAgZmlsZTovLzAwMDEtUmVtb3ZlLWdsc2xhbmctcG9vbF9hbGxvY2F0b3Itc2V0QWxsb2NhdG9yLnBhdGNoIFwKLSIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLURFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIHZpcnR1YWwvbGliZ2wgbGlieGNiIHhjYi11dGlsLWtleXN5bXMgdmltLW5hdGl2ZSIKLQotUkRFUEVORFNfJHtQTn0gPSAibGlieGNiIHhjYi11dGlsLWtleXN5bXMiCi0KLWluaGVyaXQgY21ha2UgcHl0aG9uM25hdGl2ZSBmZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIG9wZW5nbCIKLQotcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKLSAgICAjIG9ubHkgd29ya3Mgb24gZ2xpYmMgc3lzdGVtcwotICAgIGlmIGQuZ2V0VmFyKCdUQ0xJQkMnKSAhPSAiZ2xpYmMiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJpbmNvbXBhdGlibGUgd2l0aCAlcyBDIGxpYnJhcnkiICUgZC5nZXRWYXIoJ1RDTElCQycpKQotfQotCi1DT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NHxpLjg2fGFybXxhYXJjaDY0KS4qLWxpbnV4IgotCi1FWFRSQV9PRUNNQUtFICs9ICJcCi0gICAgLURFTkFCTEVfUVJFTkRFUkRPQz1PRkYgXAotICAgIC1ERU5BQkxFX1BZUkVOREVSRE9DPU9GRiBcCi0gICAgLURFTkFCTEVfUkVOREVSRE9DQ01EPU9OIFwKLSAgICAtRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSBcCi0iCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0iCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9yZW5kZXJkb2MvcmVuZGVyZG9jXzEuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9yZW5kZXJkb2MvcmVuZGVyZG9jXzEuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWE2MzJkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3JlbmRlcmRvYy9yZW5kZXJkb2NfMS43LmJiCkBAIC0wLDAgKzEsMzggQEAKK1NVTU1BUlkgPSAiUmVuZGVyRG9jIHJlY2lwZSBwcm92aWRpbmcgcmVuZGVyZG9jY21kIgorREVTQ1JJUFRJT04gPSAiUmVuZGVyRG9jIGlzIGEgZnJhbWUtY2FwdHVyZSBiYXNlZCBncmFwaGljcyBkZWJ1Z2dlciIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iYWxkdXJrL3JlbmRlcmRvYyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5tZDttZDU9ZGY3ZWE5ZTE5NmVmYzcwMTRjMTI0NzQ3YTBlZjk3NzIiCisKK1NSQ1JFViA9ICJhNTZhZjU4OWQ5NGRjODUxODA5ZmQ1MzQ0ZDBhZTQ0MWRhNzBjMWYyIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2JhbGR1cmsvJHtCUE59LmdpdDtwcm90b2NvbD1odHRwO2JyYW5jaD12MS54IFwKKwkgICBmaWxlOi8vMDAwMS1yZW5kZXJkb2MtdXNlLXh4ZC1pbnN0ZWFkLW9mLWNyb3NzLWNvbXBpbGluZy1zaGltLWJpLnBhdGNoIFwKKwkgICBmaWxlOi8vMDAwMS1SZW1vdmUtZ2xzbGFuZy1wb29sX2FsbG9jYXRvci1zZXRBbGxvY2F0b3IucGF0Y2ggXAorIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEgdmlydHVhbC9saWJnbCBsaWJ4Y2IgeGNiLXV0aWwta2V5c3ltcyB2aW0tbmF0aXZlIgorCitSREVQRU5EU18ke1BOfSA9ICJsaWJ4Y2IgeGNiLXV0aWwta2V5c3ltcyIKKworaW5oZXJpdCBjbWFrZSBweXRob24zbmF0aXZlIGZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgb3BlbmdsIgorCitweXRob24gX19hbm9ueW1vdXMgKCkgeworICAgICMgb25seSB3b3JrcyBvbiBnbGliYyBzeXN0ZW1zCisgICAgaWYgZC5nZXRWYXIoJ1RDTElCQycpICE9ICJnbGliYyI6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoImluY29tcGF0aWJsZSB3aXRoICVzIEMgbGlicmFyeSIgJSBkLmdldFZhcignVENMSUJDJykpCit9CisKK0NPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0fGkuODZ8YXJtfGFhcmNoNjQpLiotbGludXgiCisKK0VYVFJBX09FQ01BS0UgKz0gIlwKKyAgICAtREVOQUJMRV9RUkVOREVSRE9DPU9GRiBcCisgICAgLURFTkFCTEVfUFlSRU5ERVJET0M9T0ZGIFwKKyAgICAtREVOQUJMRV9SRU5ERVJET0NDTUQ9T04gXAorICAgIC1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfSIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL3RpZ2Vydm5jXzEuMTAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90aWdlcnZuYy90aWdlcnZuY18xLjEwLjEuYmIKaW5kZXggMTY5Mzc3OS4uZjk3YzJiMiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL3RpZ2Vydm5jXzEuMTAuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGlnZXJ2bmMvdGlnZXJ2bmNfMS4xMC4xLmJiCkBAIC0zLDcgKzMsNyBAQAogTElDRU5TRSA9ICJHUEx2MisiCiBTRUNUSU9OID0gIngxMS91dGlscyIKIERFUEVORFMgPSAieHNlcnZlci14b3JnIGdudXRscyBqcGVnIGxpYnh0c3QgZ2V0dGV4dC1uYXRpdmUgZmx0ayIKLVJERVBFTkRTXyR7UE59ID0gImNoa2NvbmZpZyBjb3JldXRpbHMgaGljb2xvci1pY29uLXRoZW1lIHBlcmwiCitSREVQRU5EU18ke1BOfSA9ICJjb3JldXRpbHMgaGljb2xvci1pY29uLXRoZW1lIHBlcmwiCiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0UuVFhUO21kNT03NWIwMmMyODcyNDIxMzgwYmJkNDc3ODFkMmJkNzVkMyIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliLzAwMDEtRml4LWJ1aWxkLWVycm9yLXdpdGgtaW5wdXRfZXZlbnRfc2VjLWZvci1vbGQta2VybmVsLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliLzAwMDEtRml4LWJ1aWxkLWVycm9yLXdpdGgtaW5wdXRfZXZlbnRfc2VjLWZvci1vbGQta2VybmVsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhOGE5ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWIvMDAwMS1GaXgtYnVpbGQtZXJyb3Itd2l0aC1pbnB1dF9ldmVudF9zZWMtZm9yLW9sZC1rZXJuZWwucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSAwNTBiZjI0YzE2ZTk1ZjYzYTc2ZTEzMTU2MzQ2YTA3MjAzNWQ0NWI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRXZhbiBIYXJ2ZXkgPGV2YW53b3JrMTIzNEBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDE5IE1hciAyMDIwIDAxOjMyOjAzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCBlcnJvciB3aXRoIGlucHV0X2V2ZW50X3NlYyBmb3Igb2xkIGtlcm5lbAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGlidHMvdHNsaWIvY29tbWl0LzA1MGJmMjRjMTZlOTVmNjNhNzZlMTMxNTYzNDZhMDcyMDM1ZDQ1YjRdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgdG9vbHMvdHNfdWlucHV0LmMgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvdG9vbHMvdHNfdWlucHV0LmMgYi90b29scy90c191aW5wdXQuYworaW5kZXggMTgzMmEwNy4uOWM0MGJiMyAxMDA2NDQKKy0tLSBhL3Rvb2xzL3RzX3VpbnB1dC5jCisrKysgYi90b29scy90c191aW5wdXQuYworQEAgLTUxLDYgKzUxLDExIEBACisgI2luY2x1ZGUgPGxpbnV4L2ZiLmg+CisgI2VuZGlmCisgCisrI2lmbmRlZiBpbnB1dF9ldmVudF9zZWMKKysjZGVmaW5lIGlucHV0X2V2ZW50X3NlYyB0aW1lLnR2X3NlYworKyNkZWZpbmUgaW5wdXRfZXZlbnRfdXNlYyB0aW1lLnR2X3VzZWMKKysjZW5kaWYKKysKKyAjZGVmaW5lIFJFU0VUICAgIlwwMzNbMG0iCisgI2RlZmluZSBSRUQgICAgICJcMDMzWzMxbSIKKyAjZGVmaW5lIEdSRUVOICAgIlwwMzNbMzJtIgorLS0gCisyLjI2LjIKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliXzEuMjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWJfMS4yMS5iYgppbmRleCBiYjI4ZWU0Li43NmM0MjMxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWJfMS4yMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWJfMS4yMS5iYgpAQCAtMTUsNiArMTUsNyBAQAogCiBTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9rZXJnb3RoL3RzbGliL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9L3RzbGliLSR7UFZ9LnRhci54ejtkb3dubG9hZGZpbGVuYW1lPXRzbGliLSR7UFZ9LnRhci54eiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1vbi0zMmJpdC1hcmNoZXMtd2l0aC02NGJpdC10aW1lX3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtZXJyb3Itd2l0aC1pbnB1dF9ldmVudF9zZWMtZm9yLW9sZC1rZXJuZWwucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vdHMuY29uZiBcCiAgICAgICAgICAgIGZpbGU6Ly90c2xpYi5zaCBcCiAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL3R0Zi1odW5reWZvbnRzXzAuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3R0Zi1mb250cy90dGYtaHVua3lmb250c18wLjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQ1NTJjMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL3R0Zi1odW5reWZvbnRzXzAuMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotcmVxdWlyZSB0dGYuaW5jCi0KLVNVTU1BUlkgPSAiSHVua3kgZm9udHMgLSBUVEYgVmVyc2lvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvaHVua3lmb250cyIKLUxJQ0VOU0UgPSAiTEdQTC0yLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vTElDRU5TRTttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQiCi1QUiA9ICJyNyIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vaHVua3lmb250cy9odW5reWZvbnRzLSR7UFZ9LnRhci5iejIiCi0KLVMgPSAiJHtXT1JLRElSfS9odW5reWZvbnRzLSR7UFZ9L1RURi8iCi0KLVBBQ0tBR0VTID0gInR0Zi1odW5reS1zYW5zIHR0Zi1odW5reS1zZXJpZiIKLUZPTlRfUEFDS0FHRVMgPSAidHRmLWh1bmt5LXNhbnMgdHRmLWh1bmt5LXNlcmlmIgotCi1GSUxFU190dGYtaHVua3ktc2FucyA9ICIke2RhdGFkaXJ9L2ZvbnRzL3RydWV0eXBlL0h1bmt5U2FucyoudHRmIgotRklMRVNfdHRmLWh1bmt5LXNlcmlmID0gIiR7ZGF0YWRpcn0vZm9udHMvdHJ1ZXR5cGUvSHVua3lTZXJpZioudHRmIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzY0NDQ3OTVhMzU2ZmI4YTU2YzYzYjI4NDA3MjliYWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTBiMTg0OWM1NDViNmFmMjc2NDA3ZDkzMDI1YzczMDk0ZGQ3NGZjMjU5YjA3YzFkOTE1OTRmZGJiOWEwYjgyOSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWh1bmt5Zm9udHNfMC4zLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL3R0Zi1odW5reWZvbnRzXzAuMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkZjBjM2EKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL3R0Zi1odW5reWZvbnRzXzAuMy4xLmJiCkBAIC0wLDAgKzEsMjAgQEAKK3JlcXVpcmUgdHRmLmluYworCitTVU1NQVJZID0gIkh1bmt5IGZvbnRzIC0gVFRGIFZlcnNpb24iCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2h1bmt5Zm9udHMiCitMSUNFTlNFID0gIkxHUEwtMi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0NPUFlSSUdIVC5UWFQ7bWQ1PTcwZDM0NDc4ZTM4YjFhZDk5OTUwNzlmOTkyMWY5ZWY3IgorUFIgPSAicjciCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2h1bmt5Zm9udHMvaHVua3lmb250cy0ke1BWfS50YXIuYnoyIgorCitTID0gIiR7V09SS0RJUn0vaHVua3lmb250cy0ke1BWfS9UVEYvIgorCitQQUNLQUdFUyA9ICJ0dGYtaHVua3ktc2FucyB0dGYtaHVua3ktc2VyaWYiCitGT05UX1BBQ0tBR0VTID0gInR0Zi1odW5reS1zYW5zIHR0Zi1odW5reS1zZXJpZiIKKworRklMRVNfdHRmLWh1bmt5LXNhbnMgPSAiJHtkYXRhZGlyfS9mb250cy90cnVldHlwZS9IdW5reVNhbnMqLnR0ZiIKK0ZJTEVTX3R0Zi1odW5reS1zZXJpZiA9ICIke2RhdGFkaXJ9L2ZvbnRzL3RydWV0eXBlL0h1bmt5U2VyaWYqLnR0ZiIKKworU1JDX1VSSVttZDVzdW1dID0gImI5MzMzMTI5Njc4NDJlNTczN2I1NDE1ZmEyMmQ2ODJhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNmYzUyODczN2NjZDEyZWMzYzA5YzRhOTE0NDdkMjQxZDNjNWJjZWVlYjRkMjRiN2YyYzI5YjE1Yzk3MzUzMjgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL3R0Zi1pbmNvbnNvbGF0YV8yMDEwMDUyNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWluY29uc29sYXRhXzIwMTAwNTI2LmJiCmluZGV4IDIwMDQxYmIuLmJmMzJmZWQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWluY29uc29sYXRhXzIwMTAwNTI2LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWluY29uc29sYXRhXzIwMTAwNTI2LmJiCkBAIC0xNCw3ICsxNCw3IEBACiAgICAgJHtkYXRhZGlyfS9kb2MvdHRmLWluY29uc29sYXRhLyoiCiAKIGRvX2NvbmZpZ3VyZSgpIHsKLSAgICBtdiAke1dPUktESVJ9L0luY29uc29sYXRhLm90ZiAke1N9L0luY29uc29sYXRhLnR0ZgorICAgIGNwIC1mciAke1dPUktESVJ9L0luY29uc29sYXRhLm90ZiAke1N9L0luY29uc29sYXRhLnR0ZgogfQogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWxvaGl0XzIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL3R0Zi1sb2hpdF8yLmJiCmluZGV4IGY5Njc5ZDYuLjBhZjBlOTEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWxvaGl0XzIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3R0Zi1mb250cy90dGYtbG9oaXRfMi5iYgpAQCAtMTUsNyArMTUsNyBAQAogRk9OVF9QQUNLQUdFUyA9ICIke1BOfSIKIEZJTEVTXyR7UE59ID0gIiR7ZGF0YWRpcn0iCiAKLWluaGVyaXQgcHl0aG9ubmF0aXZlCitpbmhlcml0IHB5dGhvbjNuYXRpdmUKIAogZG9fY29tcGlsZSgpIHsKICAgICBjZCAke1N9OyBtYWtlIHR0ZjsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLW5vdG8tZW1vamlfMjAxOTA4MTUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL3R0Zi1ub3RvLWVtb2ppXzIwMTkwODE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NGY3YTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL3R0Zi1ub3RvLWVtb2ppXzIwMTkwODE1LmJiCkBAIC0wLDAgKzEsMTkgQEAKK3JlcXVpcmUgdHRmLmluYworCitTVU1NQVJZID0gIkdvb2dsZSBub3RvIGVtb2ppIGZvbnQgcGFjayIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGVmb250cy9ub3RvLWVtb2ppIgorTElDRU5TRSA9ICJPRkwtMS4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZm9udHMvTElDRU5TRTttZDU9NTU3MTlmYWEwMTEyNzA4ZTk0NmI4MjBiMjRiMTQwOTciCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9nb29nbGVmb250cy9ub3RvLWVtb2ppO3Byb3RvY29sPWh0dHBzIgorU1JDUkVWID0gIjgzM2E0M2QwMzI0NmE5MzI1ZTc0OGEyZDc4MzAwNjQ1NGQ3NmZmNjYiCisKK1BBQ0tBR0VTID0gIiR7UE59LWNvbG9yICR7UE59LXJlZ3VsYXIiCitGT05UX1BBQ0tBR0VTID0gIiR7UE59LWNvbG9yICR7UE59LXJlZ3VsYXIiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0ZJTEVTXyR7UE59LWNvbG9yID0gIiR7ZGF0YWRpcn0vZm9udHMvdHJ1ZXR5cGUvTm90b0NvbG9yRW1vamkudHRmIgorRklMRVNfJHtQTn0tcmVndWxhciA9ICIke2RhdGFkaXJ9L2ZvbnRzL3RydWV0eXBlL05vdG9FbW9qaS1SZWd1bGFyLnR0ZiIKKworZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveGRvdG9vbC94ZG90b29sXzEuMjAxMDA0MTYuMjgwOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94ZG90b29sL3hkb3Rvb2xfMS4yMDEwMDQxNi4yODA5LmJiCmluZGV4IGFlYWUwNzEuLjI1OWM2NDAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94ZG90b29sL3hkb3Rvb2xfMS4yMDEwMDQxNi4yODA5LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94ZG90b29sL3hkb3Rvb2xfMS4yMDEwMDQxNi4yODA5LmJiCkBAIC03LDcgKzcsNyBAQAogCiBQUiA9ICJyMSIKIAotaW5oZXJpdCBmZWF0dXJlc19jaGVjayBwa2djb25maWcKK2luaGVyaXQgZmVhdHVyZXNfY2hlY2sgcGtnY29uZmlnIHBlcmxuYXRpdmUKICMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h0ZXJtXzM1MS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94dGVybV8zNTEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwZWU1NTUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h0ZXJtXzM1MS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94b3JnLWFwcC1jb21tb24uaW5jCi1TVU1NQVJZID0gInh0ZXJtIGlzIHRoZSBzdGFuZGFyZCB0ZXJtaW5hbCBlbXVsYXRvciBmb3IgdGhlIFggV2luZG93IFN5c3RlbSIKLURFUEVORFMgPSAibGlieGF3IHhvcmdwcm90byBsaWJ4ZXh0IGxpYnhhdSBsaWJ4aW5lcmFtYSBsaWJ4cG0gbmN1cnNlcyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8veHRlcm0uaDtiZWdpbmxpbmU9MztlbmRsaW5lPTMxO21kNT1jN2ZhY2ViODcyZDkwMTE1ZTdjMGFkOTBlOTBjMzkwZCIKLQotU1JDX1VSSSA9ICJodHRwOi8vaW52aXNpYmxlLW1pcnJvci5uZXQvYXJjaGl2ZXMvJHtCUE59LyR7QlB9LnRneiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1jb25maWd1cmUtdGltZS1jaGVjay1mb3Itc2V0c2lkLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhMDdlZGZiZWUyZTJmNGM2YTlkZGJmODM0ZmE0YmJlYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NjBhOGExMDIyMWM5Yzk3NDRhZmQ4NmRiODdjN2FkOTViYmY5YmU0ZjVmNTI1ZmVjZjM5MTI1ZjBkMmE2ZTE2IgotUEFDS0FHRUNPTkZJRyA/PSAiIgotUEFDS0FHRUNPTkZJR1t4ZnRdID0gIi0tZW5hYmxlLWZyZWV0eXBlLC0tZGlzYWJsZS1mcmVldHlwZSxsaWJ4ZnQgZm9udGNvbmZpZyBmcmVldHlwZS1uYXRpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICIgLS14LWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgICAgICAgICAgLS14LWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgIEZSRUVUWVBFX0NPTkZJRz0ke1NUQUdJTkdfQklORElSX0NST1NTfS9mcmVldHlwZS1jb25maWcgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtaW1ha2UgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtcnBhdGgtaGFjayBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zZXR1aWQgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtYXBwLWRlZmF1bHRzPSR7ZGF0YWRpcn0vWDExL2FwcC1kZWZhdWx0cyBcCi0gICAgICAgICAgICAgICAgICIKLQotQiA9ICIke1N9IgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgZ251LWNvbmZpZ2l6ZSAtLWZvcmNlCi0gICAgc2VkIC1lICJzJS91c3IvY29udHJpYi9YMTFSNiUke1NUQUdJTkdfTElCRElSfSVnIiAtaSBjb25maWd1cmUKLSAgICBvZV9ydW5jb25mCi19Ci0KLSMgYnVzeWJveCBjYW4gc3VwcGx5IHJlc2l6ZSB0b28KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJyZXNpemUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHRlcm1fMzUzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h0ZXJtXzM1My5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGU3MDRkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h0ZXJtXzM1My5iYgpAQCAtMCwwICsxLDM2IEBACityZXF1aXJlIHJlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveG9yZy1hcHAtY29tbW9uLmluYworU1VNTUFSWSA9ICJ4dGVybSBpcyB0aGUgc3RhbmRhcmQgdGVybWluYWwgZW11bGF0b3IgZm9yIHRoZSBYIFdpbmRvdyBTeXN0ZW0iCitERVBFTkRTID0gImxpYnhhdyB4b3JncHJvdG8gbGlieGV4dCBsaWJ4YXUgbGlieGluZXJhbWEgbGlieHBtIG5jdXJzZXMiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3h0ZXJtLmg7YmVnaW5saW5lPTM7ZW5kbGluZT0zMTttZDU9OTk2YjFjZTA1ODRjMDc0N2IxN2I1NzY1NGNjODFlOGUiCisKK1NSQ19VUkkgPSAiaHR0cDovL2ludmlzaWJsZS1taXJyb3IubmV0L2FyY2hpdmVzLyR7QlBOfS8ke0JQfS50Z3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtY29uZmlndXJlLXRpbWUtY2hlY2stZm9yLXNldHNpZC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjQ3YzMwZWJmYTQ0NjIzZjNhMmQxMDBlMGNhZTVjN2YiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTUyMWQzZWU5ZGVmNjFmNWQ1YzkxMWFmYzc0ZGQ1YzNhNTZjZTE0N2M3MDcxYzc0MDIzZWEyNGNhYzliYjc2OCIKK1BBQ0tBR0VDT05GSUcgPz0gIiIKK1BBQ0tBR0VDT05GSUdbeGZ0XSA9ICItLWVuYWJsZS1mcmVldHlwZSwtLWRpc2FibGUtZnJlZXR5cGUsbGlieGZ0IGZvbnRjb25maWcgZnJlZXR5cGUtbmF0aXZlIgorCitFWFRSQV9PRUNPTkYgPSAiIC0teC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgICAgICAgICAgICAgIC0teC1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0gXAorICAgICAgICAgICAgICAgICBGUkVFVFlQRV9DT05GSUc9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vZnJlZXR5cGUtY29uZmlnIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWltYWtlIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoLWhhY2sgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtc2V0dWlkIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWFwcC1kZWZhdWx0cz0ke2RhdGFkaXJ9L1gxMS9hcHAtZGVmYXVsdHMgXAorICAgICAgICAgICAgICAgICAiCisKK0IgPSAiJHtTfSIKKworZG9fY29uZmlndXJlKCkgeworICAgIGdudS1jb25maWdpemUgLS1mb3JjZQorICAgIHNlZCAtZSAicyUvdXNyL2NvbnRyaWIvWDExUjYlJHtTVEFHSU5HX0xJQkRJUn0lZyIgLWkgY29uZmlndXJlCisgICAgb2VfcnVuY29uZgorfQorCisjIGJ1c3lib3ggY2FuIHN1cHBseSByZXNpemUgdG9vCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfJHtQTn0gPSAicmVzaXplIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hjYi11dGlsLWN1cnNvcl8wLjEuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94Y2ItdXRpbC1jdXJzb3JfMC4xLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkzNWVkZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94Y2ItdXRpbC1jdXJzb3JfMC4xLjMuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSByZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hjYi11dGlsLmluYworCitTVU1NQVJZID0gIlhDQiBwb3J0IG9mIGxpYlhjdXJzb3IiCisKK0RFUEVORFMgKz0gInhjYi11dGlsIHhjYi11dGlsLXJlbmRlcnV0aWwgeGNiLXV0aWwtaW1hZ2UiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Y2U0NjliNjFjNzBmZjhkN2NjZTA1NDc0NzY4OTE5NzQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2YWMzYjE3Y2JhNTFhYWFhMzZiYTAzNWE1MzUyNzIxNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwNWExMGEwNzA2YTFhNzg5YTA3OGJlMjk3YjVmYjY2M2Y2NmE3MWZiN2Y3ZjFiOTk2NTgyNjRjMzU5MjYzOTRmIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3lhZC95YWRfNS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3lhZC95YWRfNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTNjMDRiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy95YWQveWFkXzUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiWWV0IEFub3RoZXIgRGlhbG9nIgotREVTQ1JJUFRJT04gPSAiUHJvZ3JhbSBhbGxvd2luZyB5b3UgdG8gZGlzcGxheSBHVEsrIGRpYWxvZyBib3hlcyBmcm9tIGNvbW1hbmQgbGluZSBvciBzaGVsbCBzY3JpcHRzLiIKLUFVVEhPUiA9ICJWaWN0b3IgQW5hbmpldnNreSIKLQotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdjFjb250L3lhZC5naXQiCi1TUkNSRVYgPSAiYzhlYWM4OWNjMjBkOTE1Y2I1ZWQxODVmNDIzMDkxYTI5MWM4YWYyNCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ3NldHRpbmdzCi0KLURFUEVORFMgPSAiZ3RrKzMgZ2xpYi0yLjAtbmF0aXZlIGludGx0b29sLW5hdGl2ZSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vaWNvbnMvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3lhZC95YWRfNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3lhZC95YWRfNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NjBhMzcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveWFkL3lhZF82LjAuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJZZXQgQW5vdGhlciBEaWFsb2ciCitERVNDUklQVElPTiA9ICJQcm9ncmFtIGFsbG93aW5nIHlvdSB0byBkaXNwbGF5IEdUSysgZGlhbG9nIGJveGVzIGZyb20gY29tbWFuZCBsaW5lIG9yIHNoZWxsIHNjcmlwdHMuIgorQVVUSE9SID0gIlZpY3RvciBBbmFuamV2c2t5IgorCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS92MWNvbnQveWFkLmdpdCIKK1NSQ1JFViA9ICJhNWIxYTdhMzg2N2JjN2RmZmJiYzUzOWY1ODZmMzAxNjg3YjZlYzAyIgorCitpbmhlcml0IGF1dG90b29scyBnc2V0dGluZ3MgZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworREVQRU5EUyA9ICJndGsrMyBnbGliLTIuMC1uYXRpdmUgaW50bHRvb2wtbmF0aXZlIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucy8iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoXzcuMi43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaF83LjIuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA5OGQwOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoXzcuMi43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLVNVTU1BUlkgPSAiS2VybmVsIGFuYWx5c2lzIHV0aWxpdHkgZm9yIGxpdmUgc3lzdGVtcywgbmV0ZHVtcCwgZGlza2R1bXAsIGtkdW1wLCBMS0NEIG9yIG1jb3JlIGR1bXBmaWxlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBjb3JlIGFuYWx5c2lzIHN1aXRlIGlzIGEgc2VsZi1jb250YWluZWQgdG9vbCB0aGF0IGNhbiBiZSB1c2VkIHRvXAotaW52ZXN0aWdhdGUgZWl0aGVyIGxpdmUgc3lzdGVtcywga2VybmVsIGNvcmUgZHVtcHMgY3JlYXRlZCBmcm9tIHRoZVwKLW5ldGR1bXAsIGRpc2tkdW1wIGFuZCBrZHVtcCBwYWNrYWdlcyBmcm9tIFJlZCBIYXQgTGludXgsIHRoZSBtY29yZSBrZXJuZWwgcGF0Y2hcCi1vZmZlcmVkIGJ5IE1pc3Npb24gQ3JpdGljYWwgTGludXgsIG9yIHRoZSBMS0NEIGtlcm5lbCBwYXRjaC4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9wZW9wbGUucmVkaGF0LmNvbS9hbmRlcnNvbiIKLVNFQ1RJT04gPSAiZGV2ZWwiCi0KLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLURFUEVORFMgPSAiemxpYiByZWFkbGluZSBjb3JldXRpbHMtbmF0aXZlIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2NyYXNoLXV0aWxpdHkvJHtCUE59LmdpdCBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vZ2RiL2dkYi03LjYudGFyLmd6O25hbWU9Z2RiO3N1YmRpcj1naXQgXAotICAgICAgICAgICBmaWxlOi8vNzAwMWZvcmNlX2RlZmluZV9hcmNoaXRlY3R1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vNzAwM2Nyb3NzX3JhbmxpYi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNyb3NzX2FkZF9jb25maWd1cmVfb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NpbS1wcGMtZHJvcC1MSUJTLWZyb20tcHNpbS1kZXBlbmRlbmN5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NpbS1jb21tb24tc2ltLWFyYW5nZS1maXgtZXh0ZXJuLWlubGluZS1oYW5kbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kb25ub3QtZXh0cmFjdC1nZGItZHVyaW5nLWRvLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2RiX2J1aWxkX2pvYnNfYW5kX25vdF93cml0ZV9jcmFzaF90YXJnZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXVucmVjb2duaXplZC1nY2Mtb3B0aW9uLW0zMi1mb3ItbWlwcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWNyYXNoLWZpeC1idWlsZC1lcnJvci11bmtub3duLXR5cGUtbmFtZS1nZGJfZnByZWdzZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1jcmFzaC1kZXRlY3QtdGhlLXN5c3Jvb3Qtcy1nbGliYy1oZWFkZXItZmlsZS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ1JFViA9ICI1YjBlMzc3N2NjYmI1NzE2Nzg3OTE5MDNlOTM0NDZjY2QwYWJhMDNhIgotCi1TUkNfVVJJW2dkYi5tZDVzdW1dID0gImE5ODM2NzA3MzM3ZTVmN2JmNzZhMDA5YTg5MDRmNDcwIgotU1JDX1VSSVtnZGIuc2hhMjU2c3VtXSA9ICI4MDcwMzg5YTVkY2MxMDRlYjBiZTQ4M2Q1ODI3MjlmOThlZDRkNzYxYWQxOWNlZGQzZjE3YjVkMjUwMmZhYTM2IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2NyYXNoLXV0aWxpdHkvY3Jhc2gvcmVsZWFzZXMiCi0KLWluaGVyaXQgZ2V0dGV4dAotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBjcm9zcyIKLVRBUkdFVF9DQ19BUkNIX2FwcGVuZCA9ICIgJHtTRUxFQ1RFRF9PUFRJTUlaQVRJT059IgotCi0jIGNyYXNoIDcuMS4zIGFuZCBiZWZvcmUgZG9uJ3Qgc3VwcG9ydCBtaXBzNjQKLUNPTVBBVElCTEVfSE9TVCA9ICJeKD8hbWlwczY0KS4qIgotCi1FWFRSQV9PRU1BS0UgPSAnUlBNUEtHPSIke1BWfSIgXAotICAgICAgICAgICAgICAgIEdEQl9UQVJHRVQ9IiR7VEFSR0VUX1NZU30iIFwKLSAgICAgICAgICAgICAgICBHREJfSE9TVD0iJHtCVUlMRF9TWVN9IiBcCi0gICAgICAgICAgICAgICAgR0RCX01BS0VfSk9CUz0iJHtQQVJBTExFTF9NQUtFfSIgXAotICAgICAgICAgICAgICAgIExERkxBR1M9IiR7TERGTEFHU30iIFwKLSAgICAgICAgICAgICAgICAnCi0KLUVYVFJBX09FTUFLRV9jbGFzcy1jcm9zcyA9ICdSUE1QS0c9IiR7UFZ9IiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCX1RBUkdFVD0iJHtCVUlMRF9TWVN9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcJHtHREJfQ09ORl9GTEFHU30gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tdGFyZ2V0PSR7VEFSR0VUX1NZU30iIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJfSE9TVD0iJHtCVUlMRF9TWVN9IiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCX01BS0VfSk9CUz0iJHtQQVJBTExFTF9NQUtFfSIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKLQotRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIExERkxBR1M9JyR7QlVJTERfTERGTEFHU30nIgotRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy1jcm9zcyA9ICIgTERGTEFHUz0nJHtCVUlMRF9MREZMQUdTfSciCi0KLVJFTU9WRV9NMzIgPSAic2VkIC1pIC1lICdzLyNkZWZpbmUgVEFSR0VUX0NGTEFHU19BUk1fT05fWDg2XzY0LiovI2RlZmluZSBUQVJHRVRfQ0ZMQUdTX0FSTV9PTl9YODZfNjRcdFwiVEFSR0VUX0NGTEFHUz0tRF9GSUxFX09GRlNFVF9CSVRTPTY0XCIvZycgJHtTfS9jb25maWd1cmUuYyIKLQotUkVNT1ZFX00zMl9jbGFzcy1jcm9zcyA9ICIiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICA6Ci19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBjYXNlICR7VEFSR0VUX0FSQ0h9IGluCi0gICAgICAgIGFhcmNoNjQqKSAgICBBUkNIPUFSTTY0IDs7Ci0gICAgICAgIGFybSopICAgICAgICBBUkNIPUFSTSA7OwotICAgICAgICBpKjg2KikgICAgICAgQVJDSD1YODYgOzsKLSAgICAgICAgeDg2XzY0KikgICAgIEFSQ0g9WDg2XzY0IDs7Ci0gICAgICAgIHBvd2VycGM2NCopICBBUkNIPVBQQzY0IDs7Ci0gICAgICAgIHBvd2VycGMqKSAgICBBUkNIPVBQQyA7OwotICAgICAgICBtaXBzKikgICAgICAgQVJDSD1NSVBTIDs7Ci0gICAgZXNhYwotCi0gICAgc2VkIC1pIHMvRk9SQ0VfREVGSU5FX0FSQ0gvIiR7QVJDSH0iL2cgJHtTfS9jb25maWd1cmUuYwotICAgICR7UkVNT1ZFX00zMn0KLSAgICBzZWQgLWkgJ3MvJmd0Oy8+L2cnICR7U30vTWFrZWZpbGUKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICBvZV9ydW5tYWtlICR7RVhUUkFfT0VNQUtFfSBSRUNJUEVfU1lTUk9PVD0ke1JFQ0lQRV9TWVNST09UfQotfQotCi1kb19pbnN0YWxsX3ByZXBlbmQgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotICAgIGluc3RhbGwgLWQgJHtEfS8ke21hbmRpcn0vbWFuOAotICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vY3Jhc2gKLQotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2NyYXNoLjggJHtEfS8ke21hbmRpcn0vbWFuOC8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9kZWZzLmggJHtEfSR7aW5jbHVkZWRpcn0vY3Jhc2gKLX0KLQotZG9faW5zdGFsbF9jbGFzcy10YXJnZXQgKCkgewotICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgewotICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9JHtTVEFHSU5HX0RJUl9OQVRJVkV9IGluc3RhbGwKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1jcm9zcyAoKSB7Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vY3Jhc2ggJHtEfS8ke2JpbmRpcn0KLX0KLQotUkRFUEVORFNfJHtQTn0gKz0gImxpYmx6bWEiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtY3Jvc3MgPSAiIgotCi0jIENhdXNlcyBnY2MgdG8gZ2V0IHN0dWNrIGFuZCBlYXQgYWxsIGF2YWlsYWJsZSBtZW1vcnkgaW4gcWVtdWFybSBidWlsZHMKLSMgamVua2lucyAgMTUxNjEgIDEwMCAxMi41IDEwMzg5NTk2IDEwMzIxMjg0ID8gICBSICAgIDExOjQwICAyODoxNyAvaG9tZS9qZW5raW5zL29lL3dvcmxkL3Noci1jb3JlL3RtcC1nbGliYy9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYmV4ZWMvYXJtLW9lLWxpbnV4LWdudWVhYmkvZ2NjL2FybS1vZS1saW51eC1nbnVlYWJpLzQuOS4yL2NjMSAtcXVpZXQgLUkgLiAtSSAuIC1JIC4vY29tbW9uIC1JIC4vY29uZmlnIC1JIC4vLi4vaW5jbHVkZS9vcGNvZGUgLUkgLi8uLi9vcGNvZGVzLy4uIC1JIC4vLi4vcmVhZGxpbmUvLi4gLUkgLi4vYmZkIC1JIC4vLi4vYmZkIC1JIC4vLi4vaW5jbHVkZSAtSSAuLi9saWJkZWNudW1iZXIgLUkgLi8uLi9saWJkZWNudW1iZXIgLUkgLi9nbnVsaWIvaW1wb3J0IC1JIGJ1aWxkLWdudWxpYi9pbXBvcnQgLWlzeXNyb290IC9ob21lL2plbmtpbnMvb2Uvd29ybGQvc2hyLWNvcmUvdG1wLWdsaWJjL3N5c3Jvb3RzL3FlbXVhcm0gLU1NRCBldmFsLmQgLU1GIC5kZXBzL2V2YWwuVHBvIC1NUCAtTVQgZXZhbC5vIC1EIExPQ0FMRURJUj0iL3Vzci9sb2NhbC9zaGFyZS9sb2NhbGUiIC1EIENSQVNIX01FUkdFIC1EIEhBVkVfQ09ORklHX0ggLUQgVFVJPTEgZXZhbC5jIC1xdWlldCAtZHVtcGJhc2UgZXZhbC5jIC1tYXJjaD1hcm12NXRlIC1tdGh1bWIgLW10aHVtYi1pbnRlcndvcmsgLW10bHMtZGlhbGVjdD1nbnUgLWF1eGJhc2Utc3RyaXAgZXZhbC5vIC1nIC1PMiAtV2FsbCAtV3BvaW50ZXItYXJpdGggLVdmb3JtYXQtbm9ubGl0ZXJhbCAtV25vLXBvaW50ZXItc2lnbiAtV25vLXVudXNlZCAtV3VudXNlZC12YWx1ZSAtV3VudXNlZC1mdW5jdGlvbiAtV25vLXN3aXRjaCAtV25vLWNoYXItc3Vic2NyaXB0cyAtV21pc3NpbmctcHJvdG90eXBlcyAtV2RlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCAtV2VtcHR5LWJvZHkgLWZlbGltaW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzIC1vIC0KLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xODY5NjQvCi1DT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsID0gJ251bGwnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoXzcuMi44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaF83LjIuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzRjOTJjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaF83LjIuOC5iYgpAQCAtMCwwICsxLDExOCBAQAorU1VNTUFSWSA9ICJLZXJuZWwgYW5hbHlzaXMgdXRpbGl0eSBmb3IgbGl2ZSBzeXN0ZW1zLCBuZXRkdW1wLCBkaXNrZHVtcCwga2R1bXAsIExLQ0Qgb3IgbWNvcmUgZHVtcGZpbGVzIgorREVTQ1JJUFRJT04gPSAiVGhlIGNvcmUgYW5hbHlzaXMgc3VpdGUgaXMgYSBzZWxmLWNvbnRhaW5lZCB0b29sIHRoYXQgY2FuIGJlIHVzZWQgdG9cCitpbnZlc3RpZ2F0ZSBlaXRoZXIgbGl2ZSBzeXN0ZW1zLCBrZXJuZWwgY29yZSBkdW1wcyBjcmVhdGVkIGZyb20gdGhlXAorbmV0ZHVtcCwgZGlza2R1bXAgYW5kIGtkdW1wIHBhY2thZ2VzIGZyb20gUmVkIEhhdCBMaW51eCwgdGhlIG1jb3JlIGtlcm5lbCBwYXRjaFwKK29mZmVyZWQgYnkgTWlzc2lvbiBDcml0aWNhbCBMaW51eCwgb3IgdGhlIExLQ0Qga2VybmVsIHBhdGNoLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3Blb3BsZS5yZWRoYXQuY29tL2FuZGVyc29uIgorU0VDVElPTiA9ICJkZXZlbCIKKworTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworREVQRU5EUyA9ICJ6bGliIHJlYWRsaW5lIGNvcmV1dGlscy1uYXRpdmUgbmN1cnNlcy1uYXRpdmUiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY3Jhc2gtdXRpbGl0eS8ke0JQTn0uZ2l0IFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9nZGIvZ2RiLTcuNi50YXIuZ3o7bmFtZT1nZGI7c3ViZGlyPWdpdCBcCisgICAgICAgICAgIGZpbGU6Ly83MDAxZm9yY2VfZGVmaW5lX2FyY2hpdGVjdHVyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly83MDAzY3Jvc3NfcmFubGliLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY3Jvc3NfYWRkX2NvbmZpZ3VyZV9vcHRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2ltLXBwYy1kcm9wLUxJQlMtZnJvbS1wc2ltLWRlcGVuZGVuY3kucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2ltLWNvbW1vbi1zaW0tYXJhbmdlLWZpeC1leHRlcm4taW5saW5lLWhhbmRsaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Rvbm5vdC1leHRyYWN0LWdkYi1kdXJpbmctZG8tY29tcGlsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9nZGJfYnVpbGRfam9ic19hbmRfbm90X3dyaXRlX2NyYXNoX3RhcmdldC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtdW5yZWNvZ25pemVkLWdjYy1vcHRpb24tbTMyLWZvci1taXBzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItY3Jhc2gtZml4LWJ1aWxkLWVycm9yLXVua25vd24tdHlwZS1uYW1lLWdkYl9mcHJlZ3NldC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWNyYXNoLWRldGVjdC10aGUtc3lzcm9vdC1zLWdsaWJjLWhlYWRlci1maWxlLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDUkVWID0gIjI0ZjQ4MDFmOGM4ODcxYTJlM2U2NjBmZTlmYThmZGQ4NmJiMjk4NzYiCisKK1NSQ19VUklbZ2RiLm1kNXN1bV0gPSAiYTk4MzY3MDczMzdlNWY3YmY3NmEwMDlhODkwNGY0NzAiCitTUkNfVVJJW2dkYi5zaGEyNTZzdW1dID0gIjgwNzAzODlhNWRjYzEwNGViMGJlNDgzZDU4MjcyOWY5OGVkNGQ3NjFhZDE5Y2VkZDNmMTdiNWQyNTAyZmFhMzYiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vY3Jhc2gtdXRpbGl0eS9jcmFzaC9yZWxlYXNlcyIKKworaW5oZXJpdCBnZXR0ZXh0CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIGNyb3NzIgorVEFSR0VUX0NDX0FSQ0hfYXBwZW5kID0gIiAke1NFTEVDVEVEX09QVElNSVpBVElPTn0iCisKKyMgY3Jhc2ggNy4xLjMgYW5kIGJlZm9yZSBkb24ndCBzdXBwb3J0IG1pcHM2NC9yaXNjdjY0CitDT01QQVRJQkxFX0hPU1RfcmlzY3Y2NCA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX3Jpc2N2MzIgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9taXBzYXJjaG42NCA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjMyID0gIm51bGwiCisKKworRVhUUkFfT0VNQUtFID0gJ1JQTVBLRz0iJHtQVn0iIFwKKyAgICAgICAgICAgICAgICBHREJfVEFSR0VUPSIke1RBUkdFVF9TWVN9IiBcCisgICAgICAgICAgICAgICAgR0RCX0hPU1Q9IiR7QlVJTERfU1lTfSIgXAorICAgICAgICAgICAgICAgIEdEQl9NQUtFX0pPQlM9IiR7UEFSQUxMRUxfTUFLRX0iIFwKKyAgICAgICAgICAgICAgICBMREZMQUdTPSIke0xERkxBR1N9IiBcCisgICAgICAgICAgICAgICAgJworCitFWFRSQV9PRU1BS0VfY2xhc3MtY3Jvc3MgPSAnUlBNUEtHPSIke1BWfSIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQl9UQVJHRVQ9IiR7QlVJTERfU1lTfSAtLXRhcmdldD0ke1RBUkdFVF9TWVN9IiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCX0hPU1Q9IiR7QlVJTERfU1lTfSIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQl9NQUtFX0pPQlM9IiR7UEFSQUxMRUxfTUFLRX0iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisKK0VYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBMREZMQUdTPScke0JVSUxEX0xERkxBR1N9JyIKK0VYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtY3Jvc3MgPSAiIExERkxBR1M9JyR7QlVJTERfTERGTEFHU30nIgorCitkb19jb25maWd1cmUoKSB7CisgICAgOgorfQorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgY2FzZSAke1RBUkdFVF9BUkNIfSBpbgorICAgICAgICBhYXJjaDY0KikgICAgQVJDSD1BUk02NCA7OworICAgICAgICBhcm0qKSAgICAgICAgQVJDSD1BUk0gOzsKKyAgICAgICAgaSo4NiopICAgICAgIEFSQ0g9WDg2IDs7CisgICAgICAgIHg4Nl82NCopICAgICBBUkNIPVg4Nl82NCA7OworICAgICAgICBwb3dlcnBjNjQqKSAgQVJDSD1QUEM2NCA7OworICAgICAgICBwb3dlcnBjKikgICAgQVJDSD1QUEMgOzsKKyAgICAgICAgbWlwcyopICAgICAgIEFSQ0g9TUlQUyA7OworICAgIGVzYWMKKworICAgIHNlZCAtaSBzL0ZPUkNFX0RFRklORV9BUkNILyIke0FSQ0h9Ii9nICR7U30vY29uZmlndXJlLmMKKyAgICBzZWQgLWkgLWUgJ3MvI2RlZmluZSBUQVJHRVRfQ0ZMQUdTX0FSTV9PTl9YODZfNjQuKi8jZGVmaW5lIFRBUkdFVF9DRkxBR1NfQVJNX09OX1g4Nl82NFx0XCJUQVJHRVRfQ0ZMQUdTPS1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjRcIi9nJyAke1N9L2NvbmZpZ3VyZS5jCisgICAgc2VkIC1pICdzLyZndDsvPi9nJyAke1N9L01ha2VmaWxlCit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgb2VfcnVubWFrZSAke0VYVFJBX09FTUFLRX0gUkVDSVBFX1NZU1JPT1Q9JHtSRUNJUEVfU1lTUk9PVH0KK30KKworZG9faW5zdGFsbF9wcmVwZW5kICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1kICR7RH0vJHttYW5kaXJ9L21hbjgKKyAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2NyYXNoCisKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9jcmFzaC44ICR7RH0vJHttYW5kaXJ9L21hbjgvCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZGVmcy5oICR7RH0ke2luY2x1ZGVkaXJ9L2NyYXNoCit9CisKK2RvX2luc3RhbGxfY2xhc3MtdGFyZ2V0ICgpIHsKKyAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsCit9CisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlICgpIHsKKyAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSR7U1RBR0lOR19ESVJfTkFUSVZFfSBpbnN0YWxsCit9CisKK2RvX2luc3RhbGxfY2xhc3MtY3Jvc3MgKCkgeworICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2NyYXNoICR7RH0vJHtiaW5kaXJ9Cit9CisKK1JERVBFTkRTXyR7UE59ICs9ICJsaWJsem1hIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKK1JERVBFTkRTXyR7UE59X2NsYXNzLWNyb3NzID0gIiIKKworIyBDYXVzZXMgZ2NjIHRvIGdldCBzdHVjayBhbmQgZWF0IGFsbCBhdmFpbGFibGUgbWVtb3J5IGluIHFlbXVhcm0gYnVpbGRzCisjIGplbmtpbnMgIDE1MTYxICAxMDAgMTIuNSAxMDM4OTU5NiAxMDMyMTI4NCA/ICAgUiAgICAxMTo0MCAgMjg6MTcgL2hvbWUvamVua2lucy9vZS93b3JsZC9zaHItY29yZS90bXAtZ2xpYmMvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWJleGVjL2FybS1vZS1saW51eC1nbnVlYWJpL2djYy9hcm0tb2UtbGludXgtZ251ZWFiaS80LjkuMi9jYzEgLXF1aWV0IC1JIC4gLUkgLiAtSSAuL2NvbW1vbiAtSSAuL2NvbmZpZyAtSSAuLy4uL2luY2x1ZGUvb3Bjb2RlIC1JIC4vLi4vb3Bjb2Rlcy8uLiAtSSAuLy4uL3JlYWRsaW5lLy4uIC1JIC4uL2JmZCAtSSAuLy4uL2JmZCAtSSAuLy4uL2luY2x1ZGUgLUkgLi4vbGliZGVjbnVtYmVyIC1JIC4vLi4vbGliZGVjbnVtYmVyIC1JIC4vZ251bGliL2ltcG9ydCAtSSBidWlsZC1nbnVsaWIvaW1wb3J0IC1pc3lzcm9vdCAvaG9tZS9qZW5raW5zL29lL3dvcmxkL3Noci1jb3JlL3RtcC1nbGliYy9zeXNyb290cy9xZW11YXJtIC1NTUQgZXZhbC5kIC1NRiAuZGVwcy9ldmFsLlRwbyAtTVAgLU1UIGV2YWwubyAtRCBMT0NBTEVESVI9Ii91c3IvbG9jYWwvc2hhcmUvbG9jYWxlIiAtRCBDUkFTSF9NRVJHRSAtRCBIQVZFX0NPTkZJR19IIC1EIFRVST0xIGV2YWwuYyAtcXVpZXQgLWR1bXBiYXNlIGV2YWwuYyAtbWFyY2g9YXJtdjV0ZSAtbXRodW1iIC1tdGh1bWItaW50ZXJ3b3JrIC1tdGxzLWRpYWxlY3Q9Z251IC1hdXhiYXNlLXN0cmlwIGV2YWwubyAtZyAtTzIgLVdhbGwgLVdwb2ludGVyLWFyaXRoIC1XZm9ybWF0LW5vbmxpdGVyYWwgLVduby1wb2ludGVyLXNpZ24gLVduby11bnVzZWQgLVd1bnVzZWQtdmFsdWUgLVd1bnVzZWQtZnVuY3Rpb24gLVduby1zd2l0Y2ggLVduby1jaGFyLXN1YnNjcmlwdHMgLVdtaXNzaW5nLXByb3RvdHlwZXMgLVdkZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQgLVdlbXB0eS1ib2R5IC1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy10eXBlcyAtbyAtCitBUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTg2OTY0LworQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbCA9ICdudWxsJwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdG9vbC9pcG1pdG9vbC8wMDAxLWZydS1GaXgtYnVmZmVyLW92ZXJmbG93LWluLWlwbWlfc3BkX3ByaW50X2ZydS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2wvMDAwMS1mcnUtRml4LWJ1ZmZlci1vdmVyZmxvdy1pbi1pcG1pX3NwZF9wcmludF9mcnUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFkZmI3ZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2wvMDAwMS1mcnUtRml4LWJ1ZmZlci1vdmVyZmxvdy1pbi1pcG1pX3NwZF9wcmludF9mcnUucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSAyNGFlZDkzZWZiMzBhOGY1NTdhZWRjMmYwM2I2Y2NlYzc1OGNjYmY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyb3N0b3BlciBFcnRsIDxjaGVydGxAbWljcm9zb2Z0LmNvbT4KK0RhdGU6IFRodSwgMjggTm92IDIwMTkgMTY6NDQ6MTggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzVdIGZydTogRml4IGJ1ZmZlciBvdmVyZmxvdyBpbiBpcG1pX3NwZF9wcmludF9mcnUKKworUGFydGlhbCBmaXggZm9yIENWRS0yMDIwLTUyMDgsIHNlZQoraHR0cHM6Ly9naXRodWIuY29tL2lwbWl0b29sL2lwbWl0b29sL3NlY3VyaXR5L2Fkdmlzb3JpZXMvR0hTQS1nNjU5LTlxeHctcDdjcAorCitUaGUgYGlwbWlfc3BkX3ByaW50X2ZydWAgZnVuY3Rpb24gaGFzIGEgc2ltaWxhciBpc3N1ZSBhcyB0aGUgb25lIGZpeGVkCitieSB0aGUgcHJldmlvdXMgY29tbWl0IGluIGByZWFkX2ZydV9hcmVhX3NlY3Rpb25gLiBBbiBpbml0aWFsIHJlcXVlc3QgaXMKK21hZGUgdG8gZ2V0IHRoZSBgZnJ1LnNpemVgLCB3aGljaCBpcyB1c2VkIGFzIHRoZSBzaXplIGZvciB0aGUgYWxsb2NhdGlvbgorb2YgYHNwZF9kYXRhYC4gSW5zaWRlIGEgbG9vcCwgZnVydGhlciByZXF1ZXN0cyBhcmUgcGVyZm9ybWVkIHRvIGdldCB0aGUKK2NvcHkgc2l6ZXMgd2hpY2ggYXJlIG5vdCBjaGVja2VkIGJlZm9yZSBiZWluZyB1c2VkIGFzIHRoZSBzaXplIGZvciBhCitjb3B5IGludG8gdGhlIGJ1ZmZlci4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydFtodHRwczovL2dpdGh1Yi5jb20vaXBtaXRvb2wvaXBtaXRvb2wvY29tbWl0Lzg0MGZiMWNiYjRmYjM2NWNiOTc5NzMwMGUzMzc0ZDRmYWVmY2RiMTBdCitDVkU6IENWRS0yMDIwLTUyMDgKKworU2lnbmVkLW9mZi1ieTogV2VubGluIEthbmcgPHdlbmxpbi5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWIvZGltbV9zcGQuYyB8IDkgKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliL2RpbW1fc3BkLmMgYi9saWIvZGltbV9zcGQuYworaW5kZXggOTFhZTExNy4uNGM5YzIxZCAxMDA2NDQKKy0tLSBhL2xpYi9kaW1tX3NwZC5jCisrKysgYi9saWIvZGltbV9zcGQuYworQEAgLTEwMTQsNyArMTAxNCw3IEBAIGlwbWlfc3BkX3ByaW50X2ZydShzdHJ1Y3QgaXBtaV9pbnRmICogaW50ZiwgdWludDhfdCBpZCkKKyAJc3RydWN0IGlwbWlfcnEgcmVxOworIAlzdHJ1Y3QgZnJ1X2luZm8gZnJ1OworIAl1aW50OF90ICpzcGRfZGF0YSwgbXNnX2RhdGFbNF07CistCWludCBsZW4sIG9mZnNldDsKKysJdWludDMyX3QgbGVuLCBvZmZzZXQ7CisgCisgCW1zZ19kYXRhWzBdID0gaWQ7CisgCitAQCAtMTA5MSw2ICsxMDkxLDEzIEBAIGlwbWlfc3BkX3ByaW50X2ZydShzdHJ1Y3QgaXBtaV9pbnRmICogaW50ZiwgdWludDhfdCBpZCkKKyAJCX0KKyAKKyAJCWxlbiA9IHJzcC0+ZGF0YVswXTsKKysJCWlmKHJzcC0+ZGF0YV9sZW4gPCAxCisrCQkgICB8fCBsZW4gPiByc3AtPmRhdGFfbGVuIC0gMQorKwkJICAgfHwgbGVuID4gZnJ1LnNpemUgLSBvZmZzZXQpCisrCQl7CisrCQkJcHJpbnRmKCIgTm90IGVub3VnaCBidWZmZXIgc2l6ZSIpOworKwkJCXJldHVybiAtMTsKKysJCX0KKyAJCW1lbWNweSgmc3BkX2RhdGFbb2Zmc2V0XSwgcnNwLT5kYXRhICsgMSwgbGVuKTsKKyAJCW9mZnNldCArPSBsZW47CisgCX0gd2hpbGUgKG9mZnNldCA8IGZydS5zaXplKTsKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdG9vbC9pcG1pdG9vbC8wMDAxLWZydS1GaXgtYnVmZmVyLW92ZXJmbG93LXZ1bG5lcmFiaWxpdGllcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2wvMDAwMS1mcnUtRml4LWJ1ZmZlci1vdmVyZmxvdy12dWxuZXJhYmlsaXRpZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY1ZTNlZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2wvMDAwMS1mcnUtRml4LWJ1ZmZlci1vdmVyZmxvdy12dWxuZXJhYmlsaXRpZXMucGF0Y2gKQEAgLTAsMCArMSwxMzMgQEAKK0Zyb20gZTgyNGMyMzMxNmFlNTBiZWI3Zjc0ODhmMjA1NWFjNjVlOGIzNDFmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENocm9zdG9wZXIgRXJ0bCA8Y2hlcnRsQG1pY3Jvc29mdC5jb20+CitEYXRlOiBUaHUsIDI4IE5vdiAyMDE5IDE2OjMzOjU5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGZydTogRml4IGJ1ZmZlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXRpZXMKKworUGFydGlhbCBmaXggZm9yIENWRS0yMDIwLTUyMDgsIHNlZQoraHR0cHM6Ly9naXRodWIuY29tL2lwbWl0b29sL2lwbWl0b29sL3NlY3VyaXR5L2Fkdmlzb3JpZXMvR0hTQS1nNjU5LTlxeHctcDdjcAorCitUaGUgYHJlYWRfZnJ1X2FyZWFfc2VjdGlvbmAgZnVuY3Rpb24gb25seSBwZXJmb3JtcyBzaXplIHZhbGlkYXRpb24gb2YKK3JlcXVlc3RlZCByZWFkIHNpemUsIGFuZCBmYWxzZWx5IGFzc3VtZXMgdGhhdCB0aGUgSVBNSSBtZXNzYWdlIHdpbGwgbm90CityZXNwb25kIHdpdGggbW9yZSB0aGFuIHRoZSByZXF1ZXN0ZWQgYW1vdW50IG9mIGRhdGE7IGl0IHVzZXMgdGhlCit1bnZhbGlkYXRlZCByZXNwb25zZSBzaXplIHRvIGNvcHkgaW50byBgZnJ1YnVmYC4gSWYgdGhlIHJlc3BvbnNlIGlzCitsYXJnZXIgdGhhbiB0aGUgcmVxdWVzdCwgdGhpcyBjYW4gcmVzdWx0IGluIG92ZXJmbG93aW5nIHRoZSBidWZmZXIuCisKK1RoZSBzYW1lIGlzc3VlIGFmZmVjdHMgdGhlIGByZWFkX2ZydV9hcmVhYCBmdW5jdGlvbi4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydFtodHRwczovL2dpdGh1Yi5jb20vaXBtaXRvb2wvaXBtaXRvb2wvY29tbWl0L2U4MjRjMjMzMTZhZTUwYmViN2Y3NDg4ZjIwNTVhYzY1ZThiMzQxZjJdCitDVkU6IENWRS0yMDIwLTUyMDgKKworU2lnbmVkLW9mZi1ieTogV2VubGluIEthbmcgPHdlbmxpbi5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWIvaXBtaV9mcnUuYyB8IDMzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL2lwbWlfZnJ1LmMgYi9saWIvaXBtaV9mcnUuYworaW5kZXggYzJhMTM5ZC4uMmUzMjNmZiAxMDA2NDQKKy0tLSBhL2xpYi9pcG1pX2ZydS5jCisrKysgYi9saWIvaXBtaV9mcnUuYworQEAgLTY2Myw3ICs2NjMsMTAgQEAgaW50CisgcmVhZF9mcnVfYXJlYShzdHJ1Y3QgaXBtaV9pbnRmICogaW50Ziwgc3RydWN0IGZydV9pbmZvICpmcnUsIHVpbnQ4X3QgaWQsCisgCQkJdWludDMyX3Qgb2Zmc2V0LCB1aW50MzJfdCBsZW5ndGgsIHVpbnQ4X3QgKmZydWJ1ZikKKyB7CistCXVpbnQzMl90IG9mZiA9IG9mZnNldCwgdG1wLCBmaW5pc2g7CisrCXVpbnQzMl90IG9mZiA9IG9mZnNldDsKKysJdWludDMyX3QgdG1wOworKwl1aW50MzJfdCBmaW5pc2g7CisrCXVpbnQzMl90IHNpemVfbGVmdF9pbl9idWZmZXI7CisgCXN0cnVjdCBpcG1pX3JzICogcnNwOworIAlzdHJ1Y3QgaXBtaV9ycSByZXE7CisgCXVpbnQ4X3QgbXNnX2RhdGFbNF07CitAQCAtNjc2LDEwICs2NzksMTIgQEAgcmVhZF9mcnVfYXJlYShzdHJ1Y3QgaXBtaV9pbnRmICogaW50Ziwgc3RydWN0IGZydV9pbmZvICpmcnUsIHVpbnQ4X3QgaWQsCisgCisgCWZpbmlzaCA9IG9mZnNldCArIGxlbmd0aDsKKyAJaWYgKGZpbmlzaCA+IGZydS0+c2l6ZSkgeworKwkJbWVtc2V0KGZydWJ1ZiArIGZydS0+c2l6ZSwgMCwgbGVuZ3RoIC0gZnJ1LT5zaXplKTsKKyAJCWZpbmlzaCA9IGZydS0+c2l6ZTsKKyAJCWxwcmludGYoTE9HX05PVElDRSwgIlJlYWQgRlJVIEFyZWEgbGVuZ3RoICVkIHRvbyBsYXJnZSwgIgorIAkJCSJBZGp1c3RpbmcgdG8gJWQiLAorIAkJCW9mZnNldCArIGxlbmd0aCwgZmluaXNoIC0gb2Zmc2V0KTsKKysJCWxlbmd0aCA9IGZpbmlzaCAtIG9mZnNldDsKKyAJfQorIAorIAltZW1zZXQoJnJlcSwgMCwgc2l6ZW9mKHJlcSkpOworQEAgLTcxNSw2ICs3MjAsNyBAQCByZWFkX2ZydV9hcmVhKHN0cnVjdCBpcG1pX2ludGYgKiBpbnRmLCBzdHJ1Y3QgZnJ1X2luZm8gKmZydSwgdWludDhfdCBpZCwKKyAJCX0KKyAJfQorIAorKwlzaXplX2xlZnRfaW5fYnVmZmVyID0gbGVuZ3RoOworIAlkbyB7CisgCQl0bXAgPSBmcnUtPmFjY2VzcyA/IG9mZiA+PiAxIDogb2ZmOworIAkJbXNnX2RhdGFbMF0gPSBpZDsKK0BAIC03NTYsOSArNzYyLDE4IEBAIHJlYWRfZnJ1X2FyZWEoc3RydWN0IGlwbWlfaW50ZiAqIGludGYsIHN0cnVjdCBmcnVfaW5mbyAqZnJ1LCB1aW50OF90IGlkLAorIAkJfQorIAorIAkJdG1wID0gZnJ1LT5hY2Nlc3MgPyByc3AtPmRhdGFbMF0gPDwgMSA6IHJzcC0+ZGF0YVswXTsKKysJCWlmKHJzcC0+ZGF0YV9sZW4gPCAxCisrCQkgICB8fCB0bXAgPiByc3AtPmRhdGFfbGVuIC0gMQorKwkJICAgfHwgdG1wID4gc2l6ZV9sZWZ0X2luX2J1ZmZlcikKKysJCXsKKysJCQlwcmludGYoIiBOb3QgZW5vdWdoIGJ1ZmZlciBzaXplIik7CisrCQkJcmV0dXJuIC0xOworKwkJfQorKworIAkJbWVtY3B5KGZydWJ1ZiwgcnNwLT5kYXRhICsgMSwgdG1wKTsKKyAJCW9mZiArPSB0bXA7CisgCQlmcnVidWYgKz0gdG1wOworKwkJc2l6ZV9sZWZ0X2luX2J1ZmZlciAtPSB0bXA7CisgCQkvKiBzb21ldGltZXMgdGhlIHNpemUgcmV0dXJuZWQgaW4gdGhlIEluZm8gY29tbWFuZAorIAkJKiBpcyB0b28gbGFyZ2UuICByZXR1cm4gMCBzbyBoaWdoZXIgbGV2ZWwgZnVuY3Rpb24KKyAJCSogc3RpbGwgYXR0ZW1wdHMgdG8gcGFyc2Ugd2hhdCB3YXMgcmV0dXJuZWQgKi8KK0BAIC03OTEsNyArODA2LDkgQEAgcmVhZF9mcnVfYXJlYV9zZWN0aW9uKHN0cnVjdCBpcG1pX2ludGYgKiBpbnRmLCBzdHJ1Y3QgZnJ1X2luZm8gKmZydSwgdWludDhfdCBpZCwKKyAJCQl1aW50MzJfdCBvZmZzZXQsIHVpbnQzMl90IGxlbmd0aCwgdWludDhfdCAqZnJ1YnVmKQorIHsKKyAJc3RhdGljIHVpbnQzMl90IGZydV9kYXRhX3Jxc3Rfc2l6ZSA9IDIwOworLQl1aW50MzJfdCBvZmYgPSBvZmZzZXQsIHRtcCwgZmluaXNoOworKwl1aW50MzJfdCBvZmYgPSBvZmZzZXQ7CisrCXVpbnQzMl90IHRtcCwgZmluaXNoOworKwl1aW50MzJfdCBzaXplX2xlZnRfaW5fYnVmZmVyOworIAlzdHJ1Y3QgaXBtaV9ycyAqIHJzcDsKKyAJc3RydWN0IGlwbWlfcnEgcmVxOworIAl1aW50OF90IG1zZ19kYXRhWzRdOworQEAgLTgwNCwxMCArODIxLDEyIEBAIHJlYWRfZnJ1X2FyZWFfc2VjdGlvbihzdHJ1Y3QgaXBtaV9pbnRmICogaW50Ziwgc3RydWN0IGZydV9pbmZvICpmcnUsIHVpbnQ4X3QgaWQsCisgCisgCWZpbmlzaCA9IG9mZnNldCArIGxlbmd0aDsKKyAJaWYgKGZpbmlzaCA+IGZydS0+c2l6ZSkgeworKwkJbWVtc2V0KGZydWJ1ZiArIGZydS0+c2l6ZSwgMCwgbGVuZ3RoIC0gZnJ1LT5zaXplKTsKKyAJCWZpbmlzaCA9IGZydS0+c2l6ZTsKKyAJCWxwcmludGYoTE9HX05PVElDRSwgIlJlYWQgRlJVIEFyZWEgbGVuZ3RoICVkIHRvbyBsYXJnZSwgIgorIAkJCSJBZGp1c3RpbmcgdG8gJWQiLAorIAkJCW9mZnNldCArIGxlbmd0aCwgZmluaXNoIC0gb2Zmc2V0KTsKKysJCWxlbmd0aCA9IGZpbmlzaCAtIG9mZnNldDsKKyAJfQorIAorIAltZW1zZXQoJnJlcSwgMCwgc2l6ZW9mKHJlcSkpOworQEAgLTgyMiw2ICs4NDEsOCBAQCByZWFkX2ZydV9hcmVhX3NlY3Rpb24oc3RydWN0IGlwbWlfaW50ZiAqIGludGYsIHN0cnVjdCBmcnVfaW5mbyAqZnJ1LCB1aW50OF90IGlkLAorIAlpZiAoZnJ1LT5hY2Nlc3MgJiYgZnJ1X2RhdGFfcnFzdF9zaXplID4gMTYpCisgI2VuZGlmCisgCQlmcnVfZGF0YV9ycXN0X3NpemUgPSAxNjsKKysKKysJc2l6ZV9sZWZ0X2luX2J1ZmZlciA9IGxlbmd0aDsKKyAJZG8geworIAkJdG1wID0gZnJ1LT5hY2Nlc3MgPyBvZmYgPj4gMSA6IG9mZjsKKyAJCW1zZ19kYXRhWzBdID0gaWQ7CitAQCAtODUzLDggKzg3NCwxNiBAQCByZWFkX2ZydV9hcmVhX3NlY3Rpb24oc3RydWN0IGlwbWlfaW50ZiAqIGludGYsIHN0cnVjdCBmcnVfaW5mbyAqZnJ1LCB1aW50OF90IGlkLAorIAkJfQorIAorIAkJdG1wID0gZnJ1LT5hY2Nlc3MgPyByc3AtPmRhdGFbMF0gPDwgMSA6IHJzcC0+ZGF0YVswXTsKKysJCWlmKHJzcC0+ZGF0YV9sZW4gPCAxCisrCQkgICB8fCB0bXAgPiByc3AtPmRhdGFfbGVuIC0gMQorKwkJICAgfHwgdG1wID4gc2l6ZV9sZWZ0X2luX2J1ZmZlcikKKysJCXsKKysJCQlwcmludGYoIiBOb3QgZW5vdWdoIGJ1ZmZlciBzaXplIik7CisrCQkJcmV0dXJuIC0xOworKwkJfQorIAkJbWVtY3B5KChmcnVidWYgKyBvZmYpLW9mZnNldCwgcnNwLT5kYXRhICsgMSwgdG1wKTsKKyAJCW9mZiArPSB0bXA7CisrCQlzaXplX2xlZnRfaW5fYnVmZmVyIC09IHRtcDsKKyAKKyAJCS8qIHNvbWV0aW1lcyB0aGUgc2l6ZSByZXR1cm5lZCBpbiB0aGUgSW5mbyBjb21tYW5kCisgCQkqIGlzIHRvbyBsYXJnZS4gIHJldHVybiAwIHNvIGhpZ2hlciBsZXZlbCBmdW5jdGlvbgorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdG9vbC9pcG1pdG9vbC8wMDAyLXNlc3Npb24tRml4LWJ1ZmZlci1vdmVyZmxvdy1pbi1pcG1pX2dldF9zZXNzaW9uX2luZm8ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2lwbWl0b29sL2lwbWl0b29sLzAwMDItc2Vzc2lvbi1GaXgtYnVmZmVyLW92ZXJmbG93LWluLWlwbWlfZ2V0X3Nlc3Npb25faW5mby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODc0MmIxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdG9vbC9pcG1pdG9vbC8wMDAyLXNlc3Npb24tRml4LWJ1ZmZlci1vdmVyZmxvdy1pbi1pcG1pX2dldF9zZXNzaW9uX2luZm8ucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSA4MTE0NGNmYmExMzFiNGRkYmZjZjljNTMwMjc0YjIzYmZjN2UwZWE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyb3N0b3BlciBFcnRsIDxjaGVydGxAbWljcm9zb2Z0LmNvbT4KK0RhdGU6IFRodSwgMjggTm92IDIwMTkgMTY6NTE6NDkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzVdIHNlc3Npb246IEZpeCBidWZmZXIgb3ZlcmZsb3cgaW4gaXBtaV9nZXRfc2Vzc2lvbl9pbmZvCisKK1BhcnRpYWwgZml4IGZvciBDVkUtMjAyMC01MjA4LCBzZWUKK2h0dHBzOi8vZ2l0aHViLmNvbS9pcG1pdG9vbC9pcG1pdG9vbC9zZWN1cml0eS9hZHZpc29yaWVzL0dIU0EtZzY1OS05cXh3LXA3Y3AKKworVGhlIGBpcG1pX2dldF9zZXNzaW9uX2luZm9gIGZ1bmN0aW9uIGRvZXMgbm90IHByb3Blcmx5IGNoZWNrIHRoZQorcmVzcG9uc2UgYGRhdGFfbGVuYCwgd2hpY2ggaXMgdXNlZCBhcyBhIGNvcHkgc2l6ZSwgYWxsb3dpbmcgc3RhY2sgYnVmZmVyCitvdmVyZmxvdy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydFtodHRwczovL2dpdGh1Yi5jb20vaXBtaXRvb2wvaXBtaXRvb2wvY29tbWl0LzQxZDcwMjY5NDZmYWZiZDRkMWVjMGJjYWNhM2VhMzBhNmU4ZWVkMjJdCitDVkU6IENWRS0yMDIwLTUyMDgKKworU2lnbmVkLW9mZi1ieTogV2VubGluIEthbmcgPHdlbmxpbi5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWIvaXBtaV9zZXNzaW9uLmMgfCAxMiArKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL2lwbWlfc2Vzc2lvbi5jIGIvbGliL2lwbWlfc2Vzc2lvbi5jCitpbmRleCA0ODU1YmM0Li43MWJlZjRjIDEwMDY0NAorLS0tIGEvbGliL2lwbWlfc2Vzc2lvbi5jCisrKysgYi9saWIvaXBtaV9zZXNzaW9uLmMKK0BAIC0zMTksOCArMzE5LDEwIEBAIGlwbWlfZ2V0X3Nlc3Npb25faW5mbyhzdHJ1Y3QgaXBtaV9pbnRmICAgICAgICAgKiBpbnRmLAorIAkJfQorIAkJZWxzZQorIAkJeworLQkJCW1lbWNweSgmc2Vzc2lvbl9pbmZvLCAgcnNwLT5kYXRhLCByc3AtPmRhdGFfbGVuKTsKKy0JCQlwcmludF9zZXNzaW9uX2luZm8oJnNlc3Npb25faW5mbywgcnNwLT5kYXRhX2xlbik7CisrCQkJbWVtY3B5KCZzZXNzaW9uX2luZm8sICByc3AtPmRhdGEsCisrCQkJICAgICAgIF9fbWluKHJzcC0+ZGF0YV9sZW4sIHNpemVvZihzZXNzaW9uX2luZm8pKSk7CisrCQkJcHJpbnRfc2Vzc2lvbl9pbmZvKCZzZXNzaW9uX2luZm8sCisrCQkJICAgICAgICAgICAgICAgICAgIF9fbWluKHJzcC0+ZGF0YV9sZW4sIHNpemVvZihzZXNzaW9uX2luZm8pKSk7CisgCQl9CisgCQlicmVhazsKKyAJCQorQEAgLTM1MSw4ICszNTMsMTAgQEAgaXBtaV9nZXRfc2Vzc2lvbl9pbmZvKHN0cnVjdCBpcG1pX2ludGYgICAgICAgICAqIGludGYsCisgCQkJCWJyZWFrOworIAkJCX0KKyAKKy0JCQltZW1jcHkoJnNlc3Npb25faW5mbywgIHJzcC0+ZGF0YSwgcnNwLT5kYXRhX2xlbik7CistCQkJcHJpbnRfc2Vzc2lvbl9pbmZvKCZzZXNzaW9uX2luZm8sIHJzcC0+ZGF0YV9sZW4pOworKwkJCW1lbWNweSgmc2Vzc2lvbl9pbmZvLCAgcnNwLT5kYXRhLAorKwkJCSAgICAgICBfX21pbihyc3AtPmRhdGFfbGVuLCBzaXplb2Yoc2Vzc2lvbl9pbmZvKSkpOworKwkJCXByaW50X3Nlc3Npb25faW5mbygmc2Vzc2lvbl9pbmZvLAorKwkJCSAgICAgICAgICAgICAgICAgICBfX21pbihyc3AtPmRhdGFfbGVuLCBzaXplb2Yoc2Vzc2lvbl9pbmZvKSkpOworIAkJCQorIAkJfSB3aGlsZSAoaSA8PSBzZXNzaW9uX2luZm8uc2Vzc2lvbl9zbG90X2NvdW50KTsKKyAJCWJyZWFrOworLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2lwbWl0b29sL2lwbWl0b29sLzAwMDMtY2hhbm5lbC1GaXgtYnVmZmVyLW92ZXJmbG93LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdG9vbC9pcG1pdG9vbC8wMDAzLWNoYW5uZWwtRml4LWJ1ZmZlci1vdmVyZmxvdy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWViZDM1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdG9vbC9pcG1pdG9vbC8wMDAzLWNoYW5uZWwtRml4LWJ1ZmZlci1vdmVyZmxvdy5wYXRjaApAQCAtMCwwICsxLDY5IEBACitGcm9tIDUwNTc3NjFlMzBlM2E3NjgyZWRhYjYwZjk4ZjYzMTYxNjM5MmRkYzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaHJvc3RvcGVyIEVydGwgPGNoZXJ0bEBtaWNyb3NvZnQuY29tPgorRGF0ZTogVGh1LCAyOCBOb3YgMjAxOSAxNjo1NjozOCArMDAwMAorU3ViamVjdDogW1BBVENIIDMvM10gY2hhbm5lbDogRml4IGJ1ZmZlciBvdmVyZmxvdworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitQYXJ0aWFsIGZpeCBmb3IgQ1ZFLTIwMjAtNTIwOCwgc2VlCitodHRwczovL2dpdGh1Yi5jb20vaXBtaXRvb2wvaXBtaXRvb2wvc2VjdXJpdHkvYWR2aXNvcmllcy9HSFNBLWc2NTktOXF4dy1wN2NwCisKK1RoZSBgaXBtaV9nZXRfY2hhbm5lbF9jaXBoZXJfc3VpdGVzYCBmdW5jdGlvbiBkb2VzIG5vdCBwcm9wZXJseSBjaGVjawordGhlIGZpbmFsIHJlc3BvbnNl4oCZcyBgZGF0YV9sZW5gLCB3aGljaCBjYW4gbGVhZCB0byBzdGFjayBidWZmZXIgb3ZlcmZsb3cKK29uIHRoZSBmaW5hbCBjb3B5LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0W2h0dHBzOi8vZ2l0aHViLmNvbS9pcG1pdG9vbC9pcG1pdG9vbC9jb21taXQvOTQ1MmJlODcxODFhNmU4M2NmY2M3NjhiM2VkODMyMTc2M2RiNTBlNF0KK0NWRTogQ1ZFLTIwMjAtNTIwOAorCitbTWFrZSBzb21lIGNoYW5nZXMgdG8gYXBwbHkgaXRdCitTaWduZWQtb2ZmLWJ5OiBXZW5saW4gS2FuZyA8d2VubGluLmthbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGluY2x1ZGUvaXBtaXRvb2wvaXBtaV9jaGFubmVsLmggfCAgMiArKworIGxpYi9pcG1pX2NoYW5uZWwuYyAgICAgICAgICAgICAgfCAxMCArKysrKysrKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9pcG1pdG9vbC9pcG1pX2NoYW5uZWwuaCBiL2luY2x1ZGUvaXBtaXRvb2wvaXBtaV9jaGFubmVsLmgKK2luZGV4IGIxMzhjMjYuLmQ3Y2NlNWUgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2lwbWl0b29sL2lwbWlfY2hhbm5lbC5oCisrKysgYi9pbmNsdWRlL2lwbWl0b29sL2lwbWlfY2hhbm5lbC5oCitAQCAtNzcsNiArNzcsOCBAQCBzdHJ1Y3QgY2hhbm5lbF9hY2Nlc3NfdCB7CisgCXVpbnQ4X3QgdXNlcl9sZXZlbF9hdXRoOworIH07CisgCisrI2RlZmluZSBNQVhfQ0lQSEVSX1NVSVRFX0RBVEFfTEVOIDB4MTAKKysKKyAvKgorICAqIFRoZSBHZXQgQXV0aGVudGljYXRpb24gQ2FwYWJpbGl0aWVzIHJlc3BvbnNlIHN0cnVjdHVyZQorICAqIEZyb20gdGFibGUgMjItMTUgb2YgdGhlIElQTUkgdjIuMCBzcGVjCitkaWZmIC0tZ2l0IGEvbGliL2lwbWlfY2hhbm5lbC5jIGIvbGliL2lwbWlfY2hhbm5lbC5jCitpbmRleCBmYWIyZTU0Li43NmVjZGNkIDEwMDY0NAorLS0tIGEvbGliL2lwbWlfY2hhbm5lbC5jCisrKysgYi9saWIvaXBtaV9jaGFubmVsLmMKK0BAIC0zNzgsNyArMzc4LDEwIEBAIGlwbWlfZ2V0X2NoYW5uZWxfY2lwaGVyX3N1aXRlcyhzdHJ1Y3QgaXBtaV9pbnRmICppbnRmLCBjb25zdCBjaGFyICpwYXlsb2FkX3R5cGUsCisgCQlscHJpbnRmKExPR19FUlIsICJVbmFibGUgdG8gR2V0IENoYW5uZWwgQ2lwaGVyIFN1aXRlcyIpOworIAkJcmV0dXJuIC0xOworIAl9CistCWlmIChyc3AtPmNjb2RlID4gMCkgeworKwlpZiAocnNwLT5jY29kZQorKwkgICAgfHwgcnNwLT5kYXRhX2xlbiA8IDEKKysJICAgIHx8IHJzcC0+ZGF0YV9sZW4gPiBzaXplb2YodWludDhfdCkgKyBNQVhfQ0lQSEVSX1NVSVRFX0RBVEFfTEVOKQorKwl7CisgCQlscHJpbnRmKExPR19FUlIsICJHZXQgQ2hhbm5lbCBDaXBoZXIgU3VpdGVzIGZhaWxlZDogJXMiLAorIAkJCXZhbDJzdHIocnNwLT5jY29kZSwgY29tcGxldGlvbl9jb2RlX3ZhbHMpKTsKKyAJCXJldHVybiAtMTsKK0BAIC00MTMsNyArNDE2LDEwIEBAIGlwbWlfZ2V0X2NoYW5uZWxfY2lwaGVyX3N1aXRlcyhzdHJ1Y3QgaXBtaV9pbnRmICppbnRmLCBjb25zdCBjaGFyICpwYXlsb2FkX3R5cGUsCisgCQkJbHByaW50ZihMT0dfRVJSLCAiVW5hYmxlIHRvIEdldCBDaGFubmVsIENpcGhlciBTdWl0ZXMiKTsKKyAJCQlyZXR1cm4gLTE7CisgCQl9CistCQlpZiAocnNwLT5jY29kZSA+IDApIHsKKysJCWlmIChyc3AtPmNjb2RlCisrCQkgICAgfHwgcnNwLT5kYXRhX2xlbiA8IDEKKysJCSAgICB8fCByc3AtPmRhdGFfbGVuID4gc2l6ZW9mKHVpbnQ4X3QpICsgTUFYX0NJUEhFUl9TVUlURV9EQVRBX0xFTikKKysJCXsKKyAJCQlscHJpbnRmKExPR19FUlIsICJHZXQgQ2hhbm5lbCBDaXBoZXIgU3VpdGVzIGZhaWxlZDogJXMiLAorIAkJCQkJdmFsMnN0cihyc3AtPmNjb2RlLCBjb21wbGV0aW9uX2NvZGVfdmFscykpOworIAkJCXJldHVybiAtMTsKKy0tIAorMi4xOC4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2wvMDAwNC1sYW5wLUZpeC1idWZmZXItb3ZlcmZsb3dzLWluLWdldF9sYW5fcGFyYW1fc2VsZWN0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdG9vbC9pcG1pdG9vbC8wMDA0LWxhbnAtRml4LWJ1ZmZlci1vdmVyZmxvd3MtaW4tZ2V0X2xhbl9wYXJhbV9zZWxlY3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVjZTllOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2wvMDAwNC1sYW5wLUZpeC1idWZmZXItb3ZlcmZsb3dzLWluLWdldF9sYW5fcGFyYW1fc2VsZWN0LnBhdGNoCkBAIC0wLDAgKzEsOTQgQEAKK0Zyb20gZTZhYTYwNzZmNjVlNzE1NDRiZDY0NTBkMjBkOTQzZDdiYWFjY2I5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENocm9zdG9wZXIgRXJ0bCA8Y2hlcnRsQG1pY3Jvc29mdC5jb20+CitEYXRlOiBUaHUsIDI4IE5vdiAyMDE5IDE3OjA2OjM5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggNC81XSBsYW5wOiBGaXggYnVmZmVyIG92ZXJmbG93cyBpbiBnZXRfbGFuX3BhcmFtX3NlbGVjdAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitQYXJ0aWFsIGZpeCBmb3IgQ1ZFLTIwMjAtNTIwOCwgc2VlCitodHRwczovL2dpdGh1Yi5jb20vaXBtaXRvb2wvaXBtaXRvb2wvc2VjdXJpdHkvYWR2aXNvcmllcy9HSFNBLWc2NTktOXF4dy1wN2NwCisKK1RoZSBgZ2V0X2xhbl9wYXJhbV9zZWxlY3RgIGZ1bmN0aW9uIGlzIG1pc3NpbmcgYSB2YWxpZGF0aW9uIGNoZWNrIG9uIHRoZQorcmVzcG9uc2XigJlzIGBkYXRhX2xlbmAsIHdoaWNoIGl0IHRoZW4gcmV0dXJucyB0byBjYWxsZXIgZnVuY3Rpb25zLCB3aGVyZQorc3RhY2sgYnVmZmVyIG92ZXJmbG93IGNhbiBvY2N1ci4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydFtodHRwczovL2dpdGh1Yi5jb20vaXBtaXRvb2wvaXBtaXRvb2wvY29tbWl0L2Q0NTU3MmQ3MWU3MDg0MGUwZDRjNTBiZjQ4MjE4NDkyYjc5YzFhMTBdCitDVkU6IENWRS0yMDIwLTUyMDgKKworW01ha2Ugc29tZSBjaGFuZ2VzIHRvIGFwcGx5IGl0XQorU2lnbmVkLW9mZi1ieTogV2VubGluIEthbmcgPHdlbmxpbi5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWIvaXBtaV9sYW5wLmMgfCAxNCArKysrKysrLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvaXBtaV9sYW5wLmMgYi9saWIvaXBtaV9sYW5wLmMKK2luZGV4IDA2MGU3NTMuLmRlZTIxZWUgMTAwNjQ0CistLS0gYS9saWIvaXBtaV9sYW5wLmMKKysrKyBiL2xpYi9pcG1pX2xhbnAuYworQEAgLTE5MTcsNyArMTkxNyw3IEBAIGlwbWlfbGFuX2FsZXJ0X3NldChzdHJ1Y3QgaXBtaV9pbnRmICogaW50ZiwgdWludDhfdCBjaGFuLCB1aW50OF90IGFsZXJ0LAorIAkJaWYgKHAgPT0gTlVMTCkgeworIAkJCXJldHVybiAoLTEpOworIAkJfQorLQkJbWVtY3B5KGRhdGEsIHAtPmRhdGEsIHAtPmRhdGFfbGVuKTsKKysJCW1lbWNweShkYXRhLCBwLT5kYXRhLCBfX21pbihwLT5kYXRhX2xlbiwgc2l6ZW9mKGRhdGEpKSk7CisgCQkvKiBzZXQgbmV3IGlwYWRkciAqLworIAkJbWVtY3B5KGRhdGErMywgdGVtcCwgNCk7CisgCQlwcmludGYoIlNldHRpbmcgTEFOIEFsZXJ0ICVkIElQIEFkZHJlc3MgdG8gJWQuJWQuJWQuJWRcbiIsIGFsZXJ0LAorQEAgLTE5MzIsNyArMTkzMiw3IEBAIGlwbWlfbGFuX2FsZXJ0X3NldChzdHJ1Y3QgaXBtaV9pbnRmICogaW50ZiwgdWludDhfdCBjaGFuLCB1aW50OF90IGFsZXJ0LAorIAkJaWYgKHAgPT0gTlVMTCkgeworIAkJCXJldHVybiAoLTEpOworIAkJfQorLQkJbWVtY3B5KGRhdGEsIHAtPmRhdGEsIHAtPmRhdGFfbGVuKTsKKysJCW1lbWNweShkYXRhLCBwLT5kYXRhLCBfX21pbihwLT5kYXRhX2xlbiwgc2l6ZW9mKGRhdGEpKSk7CisgCQkvKiBzZXQgbmV3IG1hY2FkZHIgKi8KKyAJCW1lbWNweShkYXRhKzcsIHRlbXAsIDYpOworIAkJcHJpbnRmKCJTZXR0aW5nIExBTiBBbGVydCAlZCBNQUMgQWRkcmVzcyB0byAiCitAQCAtMTk0Nyw3ICsxOTQ3LDcgQEAgaXBtaV9sYW5fYWxlcnRfc2V0KHN0cnVjdCBpcG1pX2ludGYgKiBpbnRmLCB1aW50OF90IGNoYW4sIHVpbnQ4X3QgYWxlcnQsCisgCQlpZiAocCA9PSBOVUxMKSB7CisgCQkJcmV0dXJuICgtMSk7CisgCQl9CistCQltZW1jcHkoZGF0YSwgcC0+ZGF0YSwgcC0+ZGF0YV9sZW4pOworKwkJbWVtY3B5KGRhdGEsIHAtPmRhdGEsIF9fbWluKHAtPmRhdGFfbGVuLCBzaXplb2YoZGF0YSkpKTsKKyAKKyAJCWlmIChzdHJuY2FzZWNtcChhcmd2WzFdLCAiZGVmIiwgMykgPT0gMCB8fAorIAkJICAgIHN0cm5jYXNlY21wKGFyZ3ZbMV0sICJkZWZhdWx0IiwgNykgPT0gMCkgeworQEAgLTE5NzMsNyArMTk3Myw3IEBAIGlwbWlfbGFuX2FsZXJ0X3NldChzdHJ1Y3QgaXBtaV9pbnRmICogaW50ZiwgdWludDhfdCBjaGFuLCB1aW50OF90IGFsZXJ0LAorIAkJaWYgKHAgPT0gTlVMTCkgeworIAkJCXJldHVybiAoLTEpOworIAkJfQorLQkJbWVtY3B5KGRhdGEsIHAtPmRhdGEsIHAtPmRhdGFfbGVuKTsKKysJCW1lbWNweShkYXRhLCBwLT5kYXRhLCBfX21pbihwLT5kYXRhX2xlbiwgc2l6ZW9mKGRhdGEpKSk7CisgCisgCQlpZiAoc3RybmNhc2VjbXAoYXJndlsxXSwgIm9uIiwgMikgPT0gMCB8fAorIAkJICAgIHN0cm5jYXNlY21wKGFyZ3ZbMV0sICJ5ZXMiLCAzKSA9PSAwKSB7CitAQCAtMTk5OCw3ICsxOTk4LDcgQEAgaXBtaV9sYW5fYWxlcnRfc2V0KHN0cnVjdCBpcG1pX2ludGYgKiBpbnRmLCB1aW50OF90IGNoYW4sIHVpbnQ4X3QgYWxlcnQsCisgCQlpZiAocCA9PSBOVUxMKSB7CisgCQkJcmV0dXJuICgtMSk7CisgCQl9CistCQltZW1jcHkoZGF0YSwgcC0+ZGF0YSwgcC0+ZGF0YV9sZW4pOworKwkJbWVtY3B5KGRhdGEsIHAtPmRhdGEsIF9fbWluKHAtPmRhdGFfbGVuLCBzaXplb2YoZGF0YSkpKTsKKyAKKyAJCWlmIChzdHJuY2FzZWNtcChhcmd2WzFdLCAicGV0IiwgMykgPT0gMCkgeworIAkJCXByaW50ZigiU2V0dGluZyBMQU4gQWxlcnQgJWQgZGVzdGluYXRpb24gdG8gUEVUIFRyYXBcbiIsIGFsZXJ0KTsKK0BAIC0yMDI2LDcgKzIwMjYsNyBAQCBpcG1pX2xhbl9hbGVydF9zZXQoc3RydWN0IGlwbWlfaW50ZiAqIGludGYsIHVpbnQ4X3QgY2hhbiwgdWludDhfdCBhbGVydCwKKyAJCWlmIChwID09IE5VTEwpIHsKKyAJCQlyZXR1cm4gKC0xKTsKKyAJCX0KKy0JCW1lbWNweShkYXRhLCBwLT5kYXRhLCBwLT5kYXRhX2xlbik7CisrCQltZW1jcHkoZGF0YSwgcC0+ZGF0YSwgX19taW4ocC0+ZGF0YV9sZW4sIHNpemVvZihkYXRhKSkpOworIAorIAkJaWYgKHN0cjJ1Y2hhcihhcmd2WzFdLCAmZGF0YVsyXSkgIT0gMCkgeworIAkJCWxwcmludGYoTE9HX0VSUiwgIkludmFsaWQgdGltZTogJXMiLCBhcmd2WzFdKTsKK0BAIC0yMDQyLDcgKzIwNDIsNyBAQCBpcG1pX2xhbl9hbGVydF9zZXQoc3RydWN0IGlwbWlfaW50ZiAqIGludGYsIHVpbnQ4X3QgY2hhbiwgdWludDhfdCBhbGVydCwKKyAJCWlmIChwID09IE5VTEwpIHsKKyAJCQlyZXR1cm4gKC0xKTsKKyAJCX0KKy0JCW1lbWNweShkYXRhLCBwLT5kYXRhLCBwLT5kYXRhX2xlbik7CisrCQltZW1jcHkoZGF0YSwgcC0+ZGF0YSwgX19taW4ocC0+ZGF0YV9sZW4sIHNpemVvZihkYXRhKSkpOworIAorIAkJaWYgKHN0cjJ1Y2hhcihhcmd2WzFdLCAmZGF0YVszXSkgIT0gMCkgeworIAkJCWxwcmludGYoTE9HX0VSUiwgIkludmFsaWQgcmV0cnk6ICVzIiwgYXJndlsxXSk7CistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2wvMDAwNS1mcnUtc2RyLUZpeC1pZF9zdHJpbmctYnVmZmVyLW92ZXJmbG93cy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2wvMDAwNS1mcnUtc2RyLUZpeC1pZF9zdHJpbmctYnVmZmVyLW92ZXJmbG93cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjhiOTI1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdG9vbC9pcG1pdG9vbC8wMDA1LWZydS1zZHItRml4LWlkX3N0cmluZy1idWZmZXItb3ZlcmZsb3dzLnBhdGNoCkBAIC0wLDAgKzEsMTQyIEBACitGcm9tIDI2ZTY0Y2E3OGFlODQ0YzVjZWVkZGU4OTUzMWUyOTI0ZDdkNDU5NGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaHJvc3RvcGVyIEVydGwgPGNoZXJ0bEBtaWNyb3NvZnQuY29tPgorRGF0ZTogVGh1LCAyOCBOb3YgMjAxOSAxNzoxMzo0NSArMDAwMAorU3ViamVjdDogW1BBVENIIDUvNV0gZnJ1LCBzZHI6IEZpeCBpZF9zdHJpbmcgYnVmZmVyIG92ZXJmbG93cworCitGaW5hbCBwYXJ0IG9mIHRoZSBmaXhlcyBmb3IgQ1ZFLTIwMjAtNTIwOCwgc2VlCitodHRwczovL2dpdGh1Yi5jb20vaXBtaXRvb2wvaXBtaXRvb2wvc2VjdXJpdHkvYWR2aXNvcmllcy9HSFNBLWc2NTktOXF4dy1wN2NwCisKKzkgdmFyaWFudHMgb2Ygc3RhY2sgYnVmZmVyIG92ZXJmbG93IHdoZW4gcGFyc2luZyBgaWRfc3RyaW5nYCBmaWVsZCBvZgorU0RSIHJlY29yZHMgcmV0dXJuZWQgZnJvbSBgQ01EX0dFVF9TRFJgIGNvbW1hbmQuCisKK1NEUiByZWNvcmQgc3RydWN0cyBoYXZlIGFuIGBpZF9jb2RlYCBmaWVsZCwgYW5kIGFuIGBpZF9zdHJpbmdgIGBjaGFyYAorYXJyYXkuCisKK1RoZSBsZW5ndGggb2YgYGlkX3N0cmluZ2AgaXMgY2FsY3VsYXRlZCBhcyBgKGlkX2NvZGUgJiAweDFmKSArIDFgLAord2hpY2ggY2FuIGJlIGxhcmdlciB0aGFuIGV4cGVjdGVkIDE2IGNoYXJhY3RlcnMgKGlmIGBpZF9jb2RlID0gMHhmZmAsCit0aGVuIGxlbmd0aCB3aWxsIGJlIGAoMHhmZiAmIDB4MWYpICsgMSA9IDMyYCkuCisKK0luIG51bWVyb3VzIHBsYWNlcywgdGhpcyBjYW4gY2F1c2Ugc3RhY2sgYnVmZmVyIG92ZXJmbG93IHdoZW4gY29weWluZworaW50byBmaXhlZCBidWZmZXIgb2Ygc2l6ZSBgMTdgIGJ5dGVzIGZyb20gdGhpcyBjYWxjdWxhdGVkIGxlbmd0aC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydFtodHRwczovL2dpdGh1Yi5jb20vaXBtaXRvb2wvaXBtaXRvb2wvY29tbWl0LzdjY2VhMjgzZGQ2MmEwNWEzMjBjMTkyMWUzZDhkNzFhODc3NzI2MzddCitDVkU6IENWRS0yMDIwLTUyMDgKKworU2lnbmVkLW9mZi1ieTogV2VubGluIEthbmcgPHdlbmxpbi5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWIvaXBtaV9mcnUuYyB8ICAyICstCisgbGliL2lwbWlfc2RyLmMgfCA0MCArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi9pcG1pX2ZydS5jIGIvbGliL2lwbWlfZnJ1LmMKK2luZGV4IGI3MWVhMjMuLjFkZWNlYTIgMTAwNjQ0CistLS0gYS9saWIvaXBtaV9mcnUuYworKysrIGIvbGliL2lwbWlfZnJ1LmMKK0BAIC0zMDM4LDcgKzMwMzgsNyBAQCBpcG1pX2ZydV9wcmludChzdHJ1Y3QgaXBtaV9pbnRmICogaW50Ziwgc3RydWN0IHNkcl9yZWNvcmRfZnJ1X2xvY2F0b3IgKiBmcnUpCisgCQlyZXR1cm4gMDsKKyAKKyAJbWVtc2V0KGRlc2MsIDAsIHNpemVvZihkZXNjKSk7CistCW1lbWNweShkZXNjLCBmcnUtPmlkX3N0cmluZywgZnJ1LT5pZF9jb2RlICYgMHgwMWYpOworKwltZW1jcHkoZGVzYywgZnJ1LT5pZF9zdHJpbmcsIF9fbWluKGZydS0+aWRfY29kZSAmIDB4MDFmLCBzaXplb2YoZGVzYykpKTsKKyAJZGVzY1tmcnUtPmlkX2NvZGUgJiAweDAxZl0gPSAwOworIAlwcmludGYoIkZSVSBEZXZpY2UgRGVzY3JpcHRpb24gOiAlcyAoSUQgJWQpXG4iLCBkZXNjLCBmcnUtPmRldmljZV9pZCk7CisgCitkaWZmIC0tZ2l0IGEvbGliL2lwbWlfc2RyLmMgYi9saWIvaXBtaV9zZHIuYworaW5kZXggZmE3YjA4Mi4uMTc1YTg2ZiAxMDA2NDQKKy0tLSBhL2xpYi9pcG1pX3Nkci5jCisrKysgYi9saWIvaXBtaV9zZHIuYworQEAgLTIxMTMsNyArMjExMyw3IEBAIGlwbWlfc2RyX3ByaW50X3NlbnNvcl9ldmVudG9ubHkoc3RydWN0IGlwbWlfaW50ZiAqaW50ZiwKKyAJCXJldHVybiAtMTsKKyAKKyAJbWVtc2V0KGRlc2MsIDAsIHNpemVvZiAoZGVzYykpOworLQlzbnByaW50ZihkZXNjLCAoc2Vuc29yLT5pZF9jb2RlICYgMHgxZikgKyAxLCAiJXMiLCBzZW5zb3ItPmlkX3N0cmluZyk7CisrCXNucHJpbnRmKGRlc2MsIHNpemVvZihkZXNjKSwgIiUuKnMiLCAoc2Vuc29yLT5pZF9jb2RlICYgMHgxZikgKyAxLCBzZW5zb3ItPmlkX3N0cmluZyk7CisgCisgCWlmICh2ZXJib3NlKSB7CisgCQlwcmludGYoIlNlbnNvciBJRCAgICAgICAgICAgICAgOiAlcyAoMHgleClcbiIsCitAQCAtMjE2NCw3ICsyMTY0LDcgQEAgaXBtaV9zZHJfcHJpbnRfc2Vuc29yX21jX2xvY2F0b3Ioc3RydWN0IGlwbWlfaW50ZiAqaW50ZiwKKyAJCXJldHVybiAtMTsKKyAKKyAJbWVtc2V0KGRlc2MsIDAsIHNpemVvZiAoZGVzYykpOworLQlzbnByaW50ZihkZXNjLCAobWMtPmlkX2NvZGUgJiAweDFmKSArIDEsICIlcyIsIG1jLT5pZF9zdHJpbmcpOworKwlzbnByaW50ZihkZXNjLCBzaXplb2YoZGVzYyksICIlLipzIiwgKG1jLT5pZF9jb2RlICYgMHgxZikgKyAxLCBtYy0+aWRfc3RyaW5nKTsKKyAKKyAJaWYgKHZlcmJvc2UgPT0gMCkgeworIAkJaWYgKGNzdl9vdXRwdXQpCitAQCAtMjI1Nyw3ICsyMjU3LDcgQEAgaXBtaV9zZHJfcHJpbnRfc2Vuc29yX2dlbmVyaWNfbG9jYXRvcihzdHJ1Y3QgaXBtaV9pbnRmICppbnRmLAorIAljaGFyIGRlc2NbMTddOworIAorIAltZW1zZXQoZGVzYywgMCwgc2l6ZW9mIChkZXNjKSk7CistCXNucHJpbnRmKGRlc2MsIChkZXYtPmlkX2NvZGUgJiAweDFmKSArIDEsICIlcyIsIGRldi0+aWRfc3RyaW5nKTsKKysJc25wcmludGYoZGVzYywgc2l6ZW9mKGRlc2MpLCAiJS4qcyIsIChkZXYtPmlkX2NvZGUgJiAweDFmKSArIDEsIGRldi0+aWRfc3RyaW5nKTsKKyAKKyAJaWYgKCF2ZXJib3NlKSB7CisgCQlpZiAoY3N2X291dHB1dCkKK0BAIC0yMzE0LDcgKzIzMTQsNyBAQCBpcG1pX3Nkcl9wcmludF9zZW5zb3JfZnJ1X2xvY2F0b3Ioc3RydWN0IGlwbWlfaW50ZiAqaW50ZiwKKyAJY2hhciBkZXNjWzE3XTsKKyAKKyAJbWVtc2V0KGRlc2MsIDAsIHNpemVvZiAoZGVzYykpOworLQlzbnByaW50ZihkZXNjLCAoZnJ1LT5pZF9jb2RlICYgMHgxZikgKyAxLCAiJXMiLCBmcnUtPmlkX3N0cmluZyk7CisrCXNucHJpbnRmKGRlc2MsIHNpemVvZihkZXNjKSwgIiUuKnMiLCAoZnJ1LT5pZF9jb2RlICYgMHgxZikgKyAxLCBmcnUtPmlkX3N0cmluZyk7CisgCisgCWlmICghdmVyYm9zZSkgeworIAkJaWYgKGNzdl9vdXRwdXQpCitAQCAtMjUxOCwzNSArMjUxOCw0MyBAQCBpcG1pX3Nkcl9wcmludF9uYW1lX2Zyb21fcmF3ZW50cnkoc3RydWN0IGlwbWlfaW50ZiAqaW50Zix1aW50MTZfdCBpZCwKKyAKKyAgICBpbnQgcmMgPTA7CisgICAgY2hhciBkZXNjWzE3XTsKKysgICBjb25zdCBjaGFyICppZF9zdHJpbmc7CisrICAgdWludDhfdCBpZF9jb2RlOworICAgIG1lbXNldChkZXNjLCAnICcsIHNpemVvZiAoZGVzYykpOworIAorICAgIHN3aXRjaCAoIHR5cGUpIHsKKyAgICAgICBjYXNlIFNEUl9SRUNPUkRfVFlQRV9GVUxMX1NFTlNPUjoKKyAgICAgICByZWNvcmQuZnVsbCA9IChzdHJ1Y3Qgc2RyX3JlY29yZF9mdWxsX3NlbnNvciAqKSByYXc7CistICAgICAgc25wcmludGYoZGVzYywgKHJlY29yZC5mdWxsLT5pZF9jb2RlICYgMHgxZikgKzEsICIlcyIsCistICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKilyZWNvcmQuZnVsbC0+aWRfc3RyaW5nKTsKKysgICAgICBpZF9jb2RlID0gcmVjb3JkLmZ1bGwtPmlkX2NvZGU7CisrICAgICAgaWRfc3RyaW5nID0gcmVjb3JkLmZ1bGwtPmlkX3N0cmluZzsKKyAgICAgICBicmVhazsKKysKKyAgICAgICBjYXNlIFNEUl9SRUNPUkRfVFlQRV9DT01QQUNUX1NFTlNPUjoKKyAgICAgICByZWNvcmQuY29tcGFjdCA9IChzdHJ1Y3Qgc2RyX3JlY29yZF9jb21wYWN0X3NlbnNvciAqKSByYXcJOworLSAgICAgIHNucHJpbnRmKGRlc2MsIChyZWNvcmQuY29tcGFjdC0+aWRfY29kZSAmIDB4MWYpICArMSwgIiVzIiwKKy0gICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKXJlY29yZC5jb21wYWN0LT5pZF9zdHJpbmcpOworKyAgICAgIGlkX2NvZGUgPSByZWNvcmQuY29tcGFjdC0+aWRfY29kZTsKKysgICAgICBpZF9zdHJpbmcgPSByZWNvcmQuY29tcGFjdC0+aWRfc3RyaW5nOworICAgICAgIGJyZWFrOworKworICAgICAgIGNhc2UgU0RSX1JFQ09SRF9UWVBFX0VWRU5UT05MWV9TRU5TT1I6CisgICAgICAgcmVjb3JkLmV2ZW50b25seSAgPSAoc3RydWN0IHNkcl9yZWNvcmRfZXZlbnRvbmx5X3NlbnNvciAqKSByYXcgOworLSAgICAgIHNucHJpbnRmKGRlc2MsIChyZWNvcmQuZXZlbnRvbmx5LT5pZF9jb2RlICYgMHgxZikgICsxLCAiJXMiLAorLSAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopcmVjb3JkLmV2ZW50b25seS0+aWRfc3RyaW5nKTsKKy0gICAgICBicmVhazsgICAgICAgICAgICAKKysgICAgICBpZF9jb2RlID0gcmVjb3JkLmV2ZW50b25seS0+aWRfY29kZTsKKysgICAgICBpZF9zdHJpbmcgPSByZWNvcmQuZXZlbnRvbmx5LT5pZF9zdHJpbmc7CisrICAgICAgYnJlYWs7CisrCisgICAgICAgY2FzZSBTRFJfUkVDT1JEX1RZUEVfTUNfREVWSUNFX0xPQ0FUT1I6CisgICAgICAgcmVjb3JkLm1jbG9jICA9IChzdHJ1Y3Qgc2RyX3JlY29yZF9tY19sb2NhdG9yICopIHJhdyA7CistICAgICAgc25wcmludGYoZGVzYywgKHJlY29yZC5tY2xvYy0+aWRfY29kZSAmIDB4MWYpICArMSwgIiVzIiwKKy0gICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKXJlY29yZC5tY2xvYy0+aWRfc3RyaW5nKTsJCQorKyAgICAgIGlkX2NvZGUgPSByZWNvcmQubWNsb2MtPmlkX2NvZGU7CisrICAgICAgaWRfc3RyaW5nID0gcmVjb3JkLm1jbG9jLT5pZF9zdHJpbmc7CisgICAgICAgYnJlYWs7CisrCisgICAgICAgZGVmYXVsdDoKKyAgICAgICByYyA9IC0xOworLSAgICAgIGJyZWFrOworLSAgIH0gICAKKysgICB9CisrICAgaWYgKCFyYykgeworKyAgICAgICBzbnByaW50ZihkZXNjLCBzaXplb2YoZGVzYyksICIlLipzIiwgKGlkX2NvZGUgJiAweDFmKSArIDEsIGlkX3N0cmluZyk7CisrICAgfQorIAorLSAgICAgIGxwcmludGYoTE9HX0lORk8sICJJRDogMHglMDR4ICwgTkFNRTogJS0xNnMiLCBpZCwgZGVzYyk7CisrICAgbHByaW50ZihMT0dfSU5GTywgIklEOiAweCUwNHggLCBOQU1FOiAlLTE2cyIsIGlkLCBkZXNjKTsKKyAgICByZXR1cm4gcmM7CisgfQorIAorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2lwbWl0b29sL2lwbWl0b29sXzEuOC4xOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2xfMS44LjE4LmJiCmluZGV4IGI3ZjFhYTkuLjNkZTlhOTIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2xfMS44LjE4LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2xfMS44LjE4LmJiCkBAIC0yNCw2ICsyNCwxMiBAQAogCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9pcG1pdG9vbC9pcG1pdG9vbC0ke1BWfS50YXIuYnoyIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtTWlncmF0ZS10by1vcGVuc3NsLTEuMS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZydS1GaXgtYnVmZmVyLW92ZXJmbG93LXZ1bG5lcmFiaWxpdGllcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZydS1GaXgtYnVmZmVyLW92ZXJmbG93LWluLWlwbWlfc3BkX3ByaW50X2ZydS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXNlc3Npb24tRml4LWJ1ZmZlci1vdmVyZmxvdy1pbi1pcG1pX2dldF9zZXNzaW9uX2luZm8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1jaGFubmVsLUZpeC1idWZmZXItb3ZlcmZsb3cucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1sYW5wLUZpeC1idWZmZXItb3ZlcmZsb3dzLWluLWdldF9sYW5fcGFyYW1fc2VsZWN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtZnJ1LXNkci1GaXgtaWRfc3RyaW5nLWJ1ZmZlci1vdmVyZmxvd3MucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiYmFiN2VhMTA0YzdiODU1MjljM2VmNjVjNTQ0MjdhYTMiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGMxYmEzYjE1NTVlZGVmYjdjMzJhZThjZDZhM2UwNDMyMjA1NmJjMDg3OTE4ZjA3MTg5ZWVlZGZjOGI4MWUwMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXV0aWwvaXBtaXV0aWwvMDAwMS1QcmV2ZW50LWFjY2Vzcy10aW1lcy1mcm9tLWNoYW5naW5nLXJlc3VsdGluZy1nemlwLW1kLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdXRpbC9pcG1pdXRpbC8wMDAxLVByZXZlbnQtYWNjZXNzLXRpbWVzLWZyb20tY2hhbmdpbmctcmVzdWx0aW5nLWd6aXAtbWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhjMDVlZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXV0aWwvaXBtaXV0aWwvMDAwMS1QcmV2ZW50LWFjY2Vzcy10aW1lcy1mcm9tLWNoYW5naW5nLXJlc3VsdGluZy1nemlwLW1kLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0Zyb20gZGE2NjhlNWJmMWE3MjE3OTczNjFhYjg2NmQwOTkxM2VlOGUxNTdjNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorRGF0ZTogU2F0LCAyMiBGZWIgMjAyMCAwNDozNzowNCArMDAwMAorU3ViamVjdDogW1BBVENIXSBQcmV2ZW50IGFjY2VzcyB0aW1lcyBmcm9tIGNoYW5naW5nIHJlc3VsdGluZyBnemlwIG1kNXN1bQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK2h0dHBzOi8vZ2l0aHViLmNvbS9pcG1pdG9vbC9pcG1pdG9vbC9wdWxsLzE4NgorLS0tCisgZG9jL01ha2VmaWxlLmFtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZG9jL01ha2VmaWxlLmFtIGIvZG9jL01ha2VmaWxlLmFtCitpbmRleCBiNzkyNzYyLi4yYzUyY2U2IDEwMDY0NAorLS0tIGEvZG9jL01ha2VmaWxlLmFtCisrKysgYi9kb2MvTWFrZWZpbGUuYW0KK0BAIC01OSw1ICs1OSw1IEBAIGluc3RhbGw6CisgCSR7SU5TVEFMTF9EQVRBX1NIfSBpdXNlci44IAkgJHttYW50b30KKyAJJHtJTlNUQUxMX0RBVEFfU0h9IGlzZWx0aW1lLjggCSAke21hbnRvfQorIAkke0lOU1RBTExfREFUQV9TSH0gYm1jbGFucGV0Lm1pYiAke2RhdGF0b30KKy0JY2QgJHttYW50b307IGd6aXAgLWYgKi44CisrCWNkICR7bWFudG99OyBnemlwIC1uZiAqLjgKKyAJCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2lwbWl1dGlsL2lwbWl1dGlsXzMuMS41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdXRpbC9pcG1pdXRpbF8zLjEuNS5iYgppbmRleCAzZTI2MzQwLi5kMGYzNjg4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2lwbWl1dGlsL2lwbWl1dGlsXzMuMS41LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXV0aWwvaXBtaXV0aWxfMy4xLjUuYmIKQEAgLTIxLDYgKzIxLDcgQEAKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vaXBtaXV0aWwvaXBtaXV0aWwtJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL2ZpeF9zeXN0ZW1kX3BhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1QcmV2ZW50LWFjY2Vzcy10aW1lcy1mcm9tLWNoYW5naW5nLXJlc3VsdGluZy1nemlwLW1kLnBhdGNoIFwKICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiMjkyZDZkZjI1Y2FkNjc4YmIyN2U1YzhjZGM2NzQ4ZjkiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNThjY2RiZDU3NTVkN2RkNzI0Nzg3NTY3MTVhZjA5ZTljNzMzMzBkZmFkMmI5MWRiZjAzZDJhYzUwNGIzMDFhMyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva2VybmVsLXNlbGZ0ZXN0L2tlcm5lbC1zZWxmdGVzdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva2VybmVsLXNlbGZ0ZXN0L2tlcm5lbC1zZWxmdGVzdC5iYgppbmRleCAwMmM1NmJlLi4zNjg3YzI2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2tlcm5lbC1zZWxmdGVzdC9rZXJuZWwtc2VsZnRlc3QuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rZXJuZWwtc2VsZnRlc3Qva2VybmVsLXNlbGZ0ZXN0LmJiCkBAIC0xOCwxMSArMTgsMTYgQEAKICMgd2Ugd2lsbCBhcHBlbmQgb3RoZXIga2VybmVsIHNlbGZ0ZXN0IGluIHRoZSBmdXR1cmUKICMgYnBmIHdhcyBhZGRlZCBpbiA0LjEwIHdpdGg6IGh0dHBzOi8vZ2l0aHViLmNvbS90b3J2YWxkcy9saW51eC9jb21taXQvNWFhNWJkMTRjNWY4NjYwYzY0Y2VlZGYxNGE1NDk3ODFiZTQ3ZTUzZAogIyBpZiB5b3UgaGF2ZSBvbGRlciBrZXJuZWwgdGhhbiB0aGF0IHlvdSBuZWVkIHRvIHJlbW92ZSBpdCBmcm9tIFBBQ0tBR0VDT05GSUcKLVBBQ0tBR0VDT05GSUcgPz89ICJicGYgdm0iCitQQUNLQUdFQ09ORklHID8/PSAiYnBmIGZpcm13YXJlIHZtIgogUEFDS0FHRUNPTkZJR19yZW1vdmVfeDg2ID0gImJwZiIKIFBBQ0tBR0VDT05GSUdfcmVtb3ZlX2FybSA9ICJicGYiCisjIGhvc3QgcHRyYWNlLmggaXMgdXNlZCB0byBjb21waWxlIEJQRiB0YXJnZXQgYnV0IG1pcHMgcHRyYWNlLmggaXMgbmVlZGVkCisjIHByb2dzL2xvb3AxLmM6MjE6OTogZXJyb3I6IGluY29tcGxldGUgZGVmaW5pdGlvbiBvZiB0eXBlICdzdHJ1Y3QgdXNlcl9wdF9yZWdzJworIyBtID0gUFRfUkVHU19SQyhjdHgpOworUEFDS0FHRUNPTkZJR19yZW1vdmVfcWVtdW1pcHMgPSAiYnBmIgogCiBQQUNLQUdFQ09ORklHW2JwZl0gPSAiLCxlbGZ1dGlscyBsaWJjYXAgbGliY2FwLW5nIHJzeW5jLW5hdGl2ZSwiCitQQUNLQUdFQ09ORklHW2Zpcm13YXJlXSA9ICIsLGxpYmNhcCwgYmFzaCIKIFBBQ0tBR0VDT05GSUdbdm1dID0gIiwsbGliY2FwLGxpYmdjYyBiYXNoIgogCiBkb19wYXRjaFtkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fc2hhcmVkX3dvcmtkaXIiCkBAIC0zMiw3ICszNyw3IEBACiBTID0gIiR7V09SS0RJUn0vJHtCUH0iCiAKIFRFU1RfTElTVCA9ICJcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ2JwZiB2bScsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ2JwZiBmaXJtd2FyZSB2bScsIGQpfSBcCiAgICAgcnRjIFwKICIKIApAQCAtNDAsNyArNDUsNyBAQAogICAgIENST1NTX0NPTVBJTEU9JHtUQVJHRVRfUFJFRklYfSBcCiAgICAgQVJDSD0ke0FSQ0h9IFwKICAgICBDQz0iJHtDQ30iIFwKLSAgICBDTEFORz0iY2xhbmcgLWZuby1zdGFjay1wcm90ZWN0b3IiIFwKKyAgICBDTEFORz0iY2xhbmcgLWZuby1zdGFjay1wcm90ZWN0b3IgLXRhcmdldCAke1RBUkdFVF9BUkNIfSAke1RPT0xDSEFJTl9PUFRJT05TfSIgXAogICAgIEFSPSIke0FSfSIgXAogICAgIExEPSIke0xEfSIgXAogICAgIERFU1RESVI9IiR7RH0iIFwKQEAgLTU1LDEwICs2MCwxMyBAQAogIgogCiBkb19jb21waWxlKCkgeworICAgIGlmIFsgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYnBmJywgJ1RydWUnLCAnRmFsc2UnLCBkKX0gPSAnVHJ1ZScgXTsgdGhlbgogICAgIGlmIFsgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RFUEVORFMnLCAnY2xhbmctbmF0aXZlJywgJ1RydWUnLCAnRmFsc2UnLCBkKX0gPSAnRmFsc2UnIF07IHRoZW4KICAgICAgICAgYmJ3YXJuICJjbGFuZyA+PSA2LjAgd2l0aCBicGYgc3VwcG9ydCBpcyBuZWVkZWQgd2l0aCBrZXJuZWwgNC4xOCsgc28KIGVpdGhlciBpbnN0YWxsIGl0IGFuZCBhZGQgaXQgdG8gSE9TVFRPT0xTLCBvciBhZGQgY2xhbmctbmF0aXZlIGZyb20gbWV0YS1jbGFuZyB0byBkZXBlbmRlbmN5IgogICAgIGZpCisgICAgZmkKKwogICAgIGZvciBpIGluICR7VEVTVF9MSVNUfQogICAgIGRvCiAgICAgICAgIG9lX3J1bm1ha2UgLUMgJHtTfS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8ke2l9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2twYXRjaC9rcGF0Y2gvMDAwMi1rcGF0Y2gtYnVpbGQtYWxsb3ctb3ZlcnJpZGluZy1vZi1kaXN0cm8tbmFtZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaC8wMDAyLWtwYXRjaC1idWlsZC1hbGxvdy1vdmVycmlkaW5nLW9mLWRpc3Ryby1uYW1lLnBhdGNoCmluZGV4IDYwM2ExNDcuLjBjYzM2ODQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaC8wMDAyLWtwYXRjaC1idWlsZC1hbGxvdy1vdmVycmlkaW5nLW9mLWRpc3Ryby1uYW1lLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaC8wMDAyLWtwYXRjaC1idWlsZC1hbGxvdy1vdmVycmlkaW5nLW9mLWRpc3Ryby1uYW1lLnBhdGNoCkBAIC00OCwxMCArNDgsMTAgQEAKICAJLS1za2lwLWNsZWFudXApCiAgCQllY2hvICJTa2lwcGluZyBjbGVhbnVwIgogIAkJU0tJUENMRUFOVVA9MQotQEAgLTU3MSw3ICs1NzYsNyBAQCBmaQorQEAgLTYxMyw3ICs2MTMsNyBAQCBmaQogICMgRG9uJ3QgY2hlY2sgZXh0ZXJuYWwgZmlsZS4KLSAjIHNoZWxsY2hlY2sgZGlzYWJsZT1TQzEwOTEKLSBzb3VyY2UgL2V0Yy9vcy1yZWxlYXNlCisgIyBzaGVsbGNoZWNrIGRpc2FibGU9U0MxMDkwCisgW1sgLWYgIiRSRUxFQVNFX0ZJTEUiIF1dICYmIHNvdXJjZSAiJFJFTEVBU0VfRklMRSIKIC1ESVNUUk89IiRJRCIKICtESVNUUk89IiR7RElTVFJPOi0ke0lEfX0iCiAgaWYgW1sgIiRESVNUUk8iID0gZmVkb3JhIF1dIHx8IFtbICIkRElTVFJPIiA9IHJoZWwgXV0gfHwgW1sgIiRESVNUUk8iID0gb2wgXV0gfHwgW1sgIiRESVNUUk8iID0gY2VudG9zIF1dOyB0aGVuCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2twYXRjaC9rcGF0Y2hfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoX2dpdC5iYgppbmRleCA2MzI2YTI1Li5iYTM5ODNlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2twYXRjaC9rcGF0Y2hfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaF9naXQuYmIKQEAgLTIsOSArMiw5IEBACiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgogCi1TUkNSRVYgPSAiMmEyOWJjN2RlYTlhN2RhMTI3MDVjN2I1MDMxNWVlZTFhY2RkOTE1NiIKK1NSQ1JFViA9ICIwYzNjMjE5MzA4OTVmNjU4MmE1YzlkOWQ3OTdmN2UxMWZmNDFmZmIyIgogCi1QViA9ICIwLjguMCIKK1BWID0gIjAuOS4xIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2xpYnBmbS9saWJwZm00XzQuMTAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbGlicGZtL2xpYnBmbTRfNC4xMC4xLmJiCmluZGV4IDliNDNiNGEuLmZmNTZkNDggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbGlicGZtL2xpYnBmbTRfNC4xMC4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbGlicGZtL2xpYnBmbTRfNC4xMC4xLmJiCkBAIC0yMyw2ICsyMyw3IEBACiBFWFRSQV9PRU1BS0UgPSAiREVTVERJUj1cIiR7RH1cIiBQUkVGSVg9XCIke3ByZWZpeH1cIiBMSUJESVI9XCIke2xpYmRpcn1cIiBMRENPTkZJRz1cInRydWVcIiIKIEVYVFJBX09FTUFLRV9hcHBlbmRfcG93ZXJwYyA9ICIgQVJDSD1cInBvd2VycGNcIiIKIEVYVFJBX09FTUFLRV9hcHBlbmRfcG93ZXJwYzY0ID0gIiBBUkNIPVwicG93ZXJwY1wiIEJJVE1PREU9XCI2NFwiIgorRVhUUkFfT0VNQUtFX2FwcGVuZF9wb3dlcnBjNjRsZSA9ICIgQVJDSD1cInBvd2VycGNcIiBCSVRNT0RFPVwiNjRcIiIKIAogUyA9ICIke1dPUktESVJ9L2xpYnBmbS0ke1BWfSIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlLzAwMDEtbWFrZWR1bXBmaWxlLXJlcGxhY2UtaGFyZGNvZGUtQ0ZMQUdTLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlLzAwMDEtbWFrZWR1bXBmaWxlLXJlcGxhY2UtaGFyZGNvZGUtQ0ZMQUdTLnBhdGNoCmluZGV4IGMwZjgyZjMuLmZmMDkzYTcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWFrZWR1bXBmaWxlL21ha2VkdW1wZmlsZS8wMDAxLW1ha2VkdW1wZmlsZS1yZXBsYWNlLWhhcmRjb2RlLUNGTEFHUy5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21ha2VkdW1wZmlsZS9tYWtlZHVtcGZpbGUvMDAwMS1tYWtlZHVtcGZpbGUtcmVwbGFjZS1oYXJkY29kZS1DRkxBR1MucGF0Y2gKQEAgLTgzLDcgKzgzLDcgQEAKICBPQkpfUEFSVD0kKHBhdHN1YnN0ICUuYywlLm8sJChTUkNfUEFSVCkpCiBAQCAtNTIsMTcgKzUzLDE3IEBAIE9CSl9BUkNIPSQocGF0c3Vic3QgJS5jLCUubywkKFNSQ19BUkNIKSkKICAKLSBMSUJTID0gLWxkdyAtbGJ6MiAtbGVibCAtbGRsIC1sZWxmIC1segorIExJQlMgPSAtbGR3IC1sYnoyIC1sZGwgLWxlbGYgLWx6CiAgaWZuZXEgKCQoTElOS1RZUEUpLCBkeW5hbWljKQogLUxJQlMgOj0gLXN0YXRpYyAkKExJQlMpCiArTElCUyA6PSAkKExJQlMpCkBAIC0xMDIsNyArMTAyLDcgQEAKICBlbmRpZgogIAogIExJQlMgOj0gLWxwdGhyZWFkICQoTElCUykKLUBAIC04MiwxNCArODMsMTQgQEAgTElCUyA6PSAkKExJQlMpICQoY2FsbCB0cnktcnVuLFwKK0BAIC04NywxNCArODgsMTQgQEAgTElCUyA6PSAkKExJQlMpICQoY2FsbCB0cnktcnVuLFwKICBhbGw6IG1ha2VkdW1wZmlsZQogIAogICQoT0JKX1BBUlQpOiAkKFNSQ19QQVJUKQpAQCAtMTE5LDcgKzExOSw3IEBACiAgCWVjaG8gLlRIIE1BS0VEVU1QRklMRSA4IFwiJChEQVRFKVwiIFwibWFrZWR1bXBmaWxlIHYkKFZFUlNJT04pXCIgXCJMaW51eCBTeXN0ZW0gQWRtaW5pc3RyYXRvclwncyBNYW51YWxcIiA+IHRlbXAuOAogIAlncmVwIC12ICJeLlRIIE1BS0VEVU1QRklMRSA4IiAkKFZQQVRIKW1ha2VkdW1wZmlsZS44ID4+IHRlbXAuOAogIAltdiB0ZW1wLjggbWFrZWR1bXBmaWxlLjgKLUBAIC0xMDAsNyArMTAxLDcgQEAgbWFrZWR1bXBmaWxlOiAkKFNSQ19CQVNFKSAkKE9CSl9QQVJUKSAkKE9CSl9BUkNIKQorQEAgLTEwNSw3ICsxMDYsNyBAQCBtYWtlZHVtcGZpbGU6ICQoU1JDX0JBU0UpICQoT0JKX1BBUlQpICQoT0JKX0FSQ0gpCiAgCWd6aXAgLWMgLi9tYWtlZHVtcGZpbGUuY29uZi41ID4gLi9tYWtlZHVtcGZpbGUuY29uZi41Lmd6CiAgCiAgZXBwaWNfbWFrZWR1bXBmaWxlLnNvOiBleHRlbnNpb25fZXBwaWMuYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlLzAwMDMtYnVpbGQtRGVsZXRlLWxpYmVibC1mcm9tLXJlcXVpcmVkLWxpYnJhcmllcy1kdXJpbmctbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWFrZWR1bXBmaWxlL21ha2VkdW1wZmlsZS8wMDAzLWJ1aWxkLURlbGV0ZS1saWJlYmwtZnJvbS1yZXF1aXJlZC1saWJyYXJpZXMtZHVyaW5nLWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwOTU2NDMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlLzAwMDMtYnVpbGQtRGVsZXRlLWxpYmVibC1mcm9tLXJlcXVpcmVkLWxpYnJhcmllcy1kdXJpbmctbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gNDYwODUxYzE1ZTgwN2QxYTI1MTVkZmI5ODU0MjNmOGE2NjI0ZjRhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDggSmFuIDIwMjAgMTk6MTQ6MTkgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzNdIGJ1aWxkOiBEZWxldGUgbGliZWJsIGZyb20gcmVxdWlyZWQgbGlicmFyaWVzIGR1cmluZyBsaW5rCi0KLVRoaXMgaXMgYSBzdGF0aWMgbGlicmFyeSBmcm9tIGVsZnV0aWxzLCB3aGljaCBpcyBub3QgbWFkZSBhdmFpbGFibGUgd2hlbgotc3RhdGljIGFyY2hpdmVzIGFyZSBkaXNhYmxlZCwgdGhpcyBjYW4gcmVzdWx0IGluIGxpbmsgZmFpbHVyZXMgZS5nLgotCi1hYXJjaDY0LXlvZS1saW51eC1tdXNsLzkuMi4wL2xkOiBjYW5ub3QgZmluZCAtbGVibAotY29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCi1NYWtlZmlsZTo5MzogcmVjaXBlIGZvciB0YXJnZXQgJ21ha2VkdW1wZmlsZScgZmFpbGVkCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggNWRjZTU4OS4uYzNhNDA1NCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTUxLDcgKzUxLDcgQEAgT0JKX1BBUlQ9JChwYXRzdWJzdCAlLmMsJS5vLCQoU1JDX1BBUlQpKQotIFNSQ19BUkNIID0gYXJjaC9hcm0uYyBhcmNoL2FybTY0LmMgYXJjaC94ODYuYyBhcmNoL3g4Nl82NC5jIGFyY2gvaWE2NC5jIGFyY2gvcHBjNjQuYyBhcmNoL3MzOTB4LmMgYXJjaC9wcGMuYyBhcmNoL3NwYXJjNjQuYwotIE9CSl9BUkNIPSQocGF0c3Vic3QgJS5jLCUubywkKFNSQ19BUkNIKSkKLSAKLS1MSUJTID0gLWxkdyAtbGJ6MiAtbGVibCAtbGRsIC1sZWxmIC1segotK0xJQlMgPSAtbGR3IC1sYnoyIC1sZGwgLWxlbGYgLWx6Ci0gaWZuZXEgKCQoTElOS1RZUEUpLCBkeW5hbWljKQotIExJQlMgOj0gJChMSUJTKQotIGVuZGlmCi0tLSAKLTIuMjQuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21ha2VkdW1wZmlsZS9tYWtlZHVtcGZpbGVfMS42LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21ha2VkdW1wZmlsZS9tYWtlZHVtcGZpbGVfMS42LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5MjRlMzkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlXzEuNi42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotU1VNTUFSWSA9ICJWTWNvcmUgZXh0cmFjdGlvbiB0b29sIgotREVTQ1JJUFRJT04gPSAiXAotICAgIFRoaXMgcHJvZ3JhbSBpcyB1c2VkIHRvIGV4dHJhY3QgYSBzdWJzZXQgb2YgdGhlIG1lbW9yeSBhdmFpbGFibGUgZWl0aGVyIFwKLSAgICB2aWEgL2Rldi9tZW0gb3IgL3Byb2Mvdm1jb3JlIChmb3IgY3Jhc2hkdW1wcykuIEl0IGlzIHVzZWQgdG8gZ2V0IG1lbW9yeSBcCi0gICAgaW1hZ2VzIHdpdGhvdXQgZXh0cmEgdW5lZWRlZCBpbmZvcm1hdGlvbiAoemVybyBwYWdlcywgdXNlcnNwYWNlIHByb2dyYW1zLCBcCi0gICAgZXRjKS4gXAotIgotSE9NRVBBR0UgPSAiaHR0cDovL21ha2VkdW1wZmlsZS5zb3VyY2Vmb3JnZS5uZXQiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotTElDRU5TRSA9ICJHUEx2Mi4wIgotCi1ERVBFTkRTID0gImJ6aXAyIHpsaWIgZWxmdXRpbHMiCi1SREVQRU5EU18ke1BOfS10b29scyA9ICJwZXJsICR7UE59IgotCi0jIGFybSBhbmQgYWFyY2g2NCB3b3VsZCBjb21waWxlIGJ1dCBoYXMgbmV2ZXIgYmVlbiB0ZXN0ZWQgdXBzdHJlYW0uICBtaXBzIHdvdWxkIG5vdCBjb21waWxlLgotIwotQ09NUEFUSUJMRV9IT1NUID0gIih4ODZfNjR8aS44Nnxwb3dlcnBjfGFybXxhYXJjaDY0KS4qLWxpbnV4IgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMiCi1GSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKi5wbCIKLQotU1JDX1VSSSA9ICJcCi0gICAgJHtTT1VSQ0VGT1JHRV9NSVJST1J9L21ha2VkdW1wZmlsZS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICBmaWxlOi8vMDAwMS1tYWtlZHVtcGZpbGUtcmVwbGFjZS1oYXJkY29kZS1DRkxBR1MucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLW1lbV9zZWN0aW9uLVN1cHBvcnQtb25seS00Ni1iaXQtZm9yLU1BWF9QSFlTTUVNX0JJVFMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLWJ1aWxkLURlbGV0ZS1saWJlYmwtZnJvbS1yZXF1aXJlZC1saWJyYXJpZXMtZHVyaW5nLWwucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjZmZDYzMmI5N2FkNzhkOWEwYTNiMGYwOTg5MDk0MDY0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQwMDdlZWMwNWNiMTRmMDE1NWYyZDA2YTBkNGRjNzBkMzIxZGJiMmFlYzY1ZmNjZGNlOTUzMTQ1YzgyMzAzMjQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9tYWtlZHVtcGZpbGUvZmlsZXMvbWFrZWR1bXBmaWxlLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIm1ha2VkdW1wZmlsZS8oP1A8cHZlcj5cZCsoXC5cZCspKykvIgotCi1TRUNUSU9OID0gImJhc2UiCi0KLSMgSWYgd2UgZG8gbm90IHNwZWNpZnkgVEFSR0VULCBtYWtlZHVtcGZpbGUgd2lsbCBidWlsZCBmb3IgdGhlIGhvc3QgYnV0IHVzZSB0aGUKLSMgdGFyZ2V0IGdjYy4KLSMKLUVYVFJBX09FTUFLRSA9ICJcCi0gICAgTElOS1RZUEU9c3RhdGljIFwKLSAgICBUQVJHRVQ9JHtUQVJHRVRfQVJDSH0gXAotIgotCi1kb19pbnN0YWxsICgpIHsKLSAgICBta2RpciAtcCAke0R9L3Vzci9iaW4KLSAgICBpbnN0YWxsIC1tIDc1NSAke1N9L21ha2VkdW1wZmlsZSAke0R9L3Vzci9iaW4KLSAgICBpbnN0YWxsIC1tIDc1NSAke1N9L21ha2VkdW1wZmlsZS1SLnBsICR7RH0vdXNyL2JpbgotCi0gICAgbWtkaXIgLXAgJHtEfS91c3Ivc2hhcmUvbWFuL21hbjgKLSAgICBpbnN0YWxsIC1tIDY0NCAke1N9L21ha2VkdW1wZmlsZS44Lmd6ICR7RH0vdXNyL3NoYXJlL21hbi9tYW44Ci0KLSAgICBta2RpciAtcCAke0R9L3Vzci9zaGFyZS9tYW4vbWFuNQotICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vbWFrZWR1bXBmaWxlLmNvbmYuNS5neiAke0R9L3Vzci9zaGFyZS9tYW4vbWFuNQotCi0gICAgbWtkaXIgLXAgJHtEfS9ldGMvCi0gICAgaW5zdGFsbCAtbSA2NDQgJHtTfS9tYWtlZHVtcGZpbGUuY29uZiAke0R9L2V0Yy9tYWtlZHVtcGZpbGUuY29uZi5zYW1wbGUKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWFrZWR1bXBmaWxlL21ha2VkdW1wZmlsZV8xLjYuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWFrZWR1bXBmaWxlL21ha2VkdW1wZmlsZV8xLjYuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDE2NzZhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlXzEuNi43LmJiCkBAIC0wLDAgKzEsNTcgQEAKK1NVTU1BUlkgPSAiVk1jb3JlIGV4dHJhY3Rpb24gdG9vbCIKK0RFU0NSSVBUSU9OID0gIlwKKyAgICBUaGlzIHByb2dyYW0gaXMgdXNlZCB0byBleHRyYWN0IGEgc3Vic2V0IG9mIHRoZSBtZW1vcnkgYXZhaWxhYmxlIGVpdGhlciBcCisgICAgdmlhIC9kZXYvbWVtIG9yIC9wcm9jL3ZtY29yZSAoZm9yIGNyYXNoZHVtcHMpLiBJdCBpcyB1c2VkIHRvIGdldCBtZW1vcnkgXAorICAgIGltYWdlcyB3aXRob3V0IGV4dHJhIHVuZWVkZWQgaW5mb3JtYXRpb24gKHplcm8gcGFnZXMsIHVzZXJzcGFjZSBwcm9ncmFtcywgXAorICAgIGV0YykuIFwKKyIKK0hPTUVQQUdFID0gImh0dHA6Ly9tYWtlZHVtcGZpbGUuc291cmNlZm9yZ2UubmV0IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKK0xJQ0VOU0UgPSAiR1BMdjIuMCIKKworREVQRU5EUyA9ICJiemlwMiB6bGliIGVsZnV0aWxzIgorUkRFUEVORFNfJHtQTn0tdG9vbHMgPSAicGVybCAke1BOfSIKKworIyBhcm0gYW5kIGFhcmNoNjQgd291bGQgY29tcGlsZSBidXQgaGFzIG5ldmVyIGJlZW4gdGVzdGVkIHVwc3RyZWFtLiAgbWlwcyB3b3VsZCBub3QgY29tcGlsZS4KKyMKK0NPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0fGkuODZ8cG93ZXJwY3xhcm18YWFyY2g2NCkuKi1saW51eCIKKworUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzIgorRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9LyoucGwiCisKK1NSQ19VUkkgPSAiXAorICAgICR7U09VUkNFRk9SR0VfTUlSUk9SfS9tYWtlZHVtcGZpbGUvJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgZmlsZTovLzAwMDEtbWFrZWR1bXBmaWxlLXJlcGxhY2UtaGFyZGNvZGUtQ0ZMQUdTLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1tZW1fc2VjdGlvbi1TdXBwb3J0LW9ubHktNDYtYml0LWZvci1NQVhfUEhZU01FTV9CSVRTLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MDhlZjg0MGNhNDljYTZiZmRlNzdjMDk3Y2Y0MjlmNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlNzAyZmJkZjYyYjRjZDgyOWE3NmU0NmYzZTI0ZWIzZmM3NTAxOTE4Yjg1ZWJkY2Q4YmFlZjRmNTNkNmVlMmM4IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbWFrZWR1bXBmaWxlL2ZpbGVzL21ha2VkdW1wZmlsZS8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJtYWtlZHVtcGZpbGUvKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKKworU0VDVElPTiA9ICJiYXNlIgorCisjIElmIHdlIGRvIG5vdCBzcGVjaWZ5IFRBUkdFVCwgbWFrZWR1bXBmaWxlIHdpbGwgYnVpbGQgZm9yIHRoZSBob3N0IGJ1dCB1c2UgdGhlCisjIHRhcmdldCBnY2MuCisjCitFWFRSQV9PRU1BS0UgPSAiXAorICAgIExJTktUWVBFPXN0YXRpYyBcCisgICAgVEFSR0VUPSR7VEFSR0VUX0FSQ0h9IFwKKyIKKworZG9faW5zdGFsbCAoKSB7CisgICAgbWtkaXIgLXAgJHtEfS91c3IvYmluCisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9tYWtlZHVtcGZpbGUgJHtEfS91c3IvYmluCisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9tYWtlZHVtcGZpbGUtUi5wbCAke0R9L3Vzci9iaW4KKworICAgIG1rZGlyIC1wICR7RH0vdXNyL3NoYXJlL21hbi9tYW44CisgICAgaW5zdGFsbCAtbSA2NDQgJHtTfS9tYWtlZHVtcGZpbGUuOC5neiAke0R9L3Vzci9zaGFyZS9tYW4vbWFuOAorCisgICAgbWtkaXIgLXAgJHtEfS91c3Ivc2hhcmUvbWFuL21hbjUKKyAgICBpbnN0YWxsIC1tIDY0NCAke1N9L21ha2VkdW1wZmlsZS5jb25mLjUuZ3ogJHtEfS91c3Ivc2hhcmUvbWFuL21hbjUKKworICAgIG1rZGlyIC1wICR7RH0vZXRjLworICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vbWFrZWR1bXBmaWxlLmNvbmYgJHtEfS9ldGMvbWFrZWR1bXBmaWxlLmNvbmYuc2FtcGxlCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUuaW5jCmluZGV4IGE5ZWU3NzUuLjBlMWUyZWQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUuaW5jCkBAIC0yNSw2ICsyNSw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9yb290LWhvbWUtZGlyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLXJtYi1kZWZpbml0aW9uLWZvci1OSU9TMi1hcmNoaXRlY3R1cmUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1yZXBsYWNlLXN5bV9pdGVyYXRvci0wLXdpdGgtc3ltX2l0ZXJhdG9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLW5ldy1iZmQtQVBJcy1mcm9tLTIuMzQucGF0Y2ggXAogIgogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAib3Byb2ZpbGUtKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9vcHJvZmlsZS9maWxlcy9vcHJvZmlsZS8iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLzAwMDEtVXNlLW5ldy1iZmQtQVBJcy1mcm9tLTIuMzQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLzAwMDEtVXNlLW5ldy1iZmQtQVBJcy1mcm9tLTIuMzQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFmNTZkMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvMDAwMS1Vc2UtbmV3LWJmZC1BUElzLWZyb20tMi4zNC5wYXRjaApAQCAtMCwwICsxLDc5IEBACitGcm9tIDM0NzQ1ZmIwNjZhMjY2YWU2YmJiMTVkMDg0NjZkNGQyY2I2YTIxMTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAyMCBGZWIgMjAyMCAwODoxMTowNCAtMDgwMAorU3ViamVjdDogW1BBVENIXSBVc2UgbmV3IGJmZCBBUElzIGZyb20gMi4zNCsKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGlidXRpbCsrL2JmZF9zdXBwb3J0LmNwcCB8IDEwICsrKysrLS0tLS0KKyBvcGppdGNvbnYvY3JlYXRlX2JmZC5jICAgIHwgIDYgKysrLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJ1dGlsKysvYmZkX3N1cHBvcnQuY3BwIGIvbGlidXRpbCsrL2JmZF9zdXBwb3J0LmNwcAoraW5kZXggZmE5MDQ4MzkuLmU1M2ExNTMwIDEwMDY0NAorLS0tIGEvbGlidXRpbCsrL2JmZF9zdXBwb3J0LmNwcAorKysrIGIvbGlidXRpbCsrL2JmZF9zdXBwb3J0LmNwcAorQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgYm9vbCBnZXRfYnVpbGRfaWQoYmZkICogaWJmZCwgdW5zaWduZWQgY2hhciAqIGJ1aWxkX2lkKQorIAkJfQorIAl9CisgCistCWJmZF9zaXplX3R5cGUgYnVpbGRpZF9zZWN0X3NpemUgPSBiZmRfc2VjdGlvbl9zaXplKGliZmQsIHNlY3QpOworKwliZmRfc2l6ZV90eXBlIGJ1aWxkaWRfc2VjdF9zaXplID0gYmZkX3NlY3Rpb25fc2l6ZShzZWN0KTsKKyAJY2hhciAqIGNvbnRlbnRzID0gKGNoYXIgKikgeG1hbGxvYyhidWlsZGlkX3NlY3Rfc2l6ZSk7CisgCWVycm5vID0gMDsKKyAJaWYgKCFiZmRfZ2V0X3NlY3Rpb25fY29udGVudHMoaWJmZCwgc2VjdCwKK0BAIC0xODgsNyArMTg4LDcgQEAgYm9vbCBnZXRfZGVidWdfbGlua19pbmZvKGJmZCAqIGliZmQsIHN0cmluZyAmIGZpbGVuYW1lLCB1bnNpZ25lZCBsb25nICYgY3JjMzIpCisgCWlmIChzZWN0ID09IE5VTEwpCisgCQlyZXR1cm4gZmFsc2U7CisgCQorLQliZmRfc2l6ZV90eXBlIGRlYnVnbGlua19zaXplID0gYmZkX3NlY3Rpb25fc2l6ZShpYmZkLCBzZWN0KTsgIAorKwliZmRfc2l6ZV90eXBlIGRlYnVnbGlua19zaXplID0gYmZkX3NlY3Rpb25fc2l6ZShzZWN0KTsgIAorIAljaGFyICogY29udGVudHMgPSAoY2hhciAqKSB4bWFsbG9jKGRlYnVnbGlua19zaXplKTsKKyAJY3ZlcmIgPDwgdmJmZAorIAkgICAgICA8PCAiLmdudV9kZWJ1Z2xpbmsgc2VjdGlvbiBoYXMgc2l6ZSAiIDw8IGRlYnVnbGlua19zaXplIDw8IGVuZGw7CitAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgZml4dXBfbGluZW5yKGJmZCAqIGFiZmQsIGFzZWN0aW9uICogc2VjdGlvbiwgYXN5bWJvbCAqKiBzeW1zLAorIAkvLyBmaXJzdCByZXN0cmljdCB0aGUgc2VhcmNoIG9uIGEgc2Vuc2libGUgcmFuZ2Ugb2Ygdm1hLCAxNiBpcworIAkvLyBhbiBpbnR1aXRpdmUgdmFsdWUgYmFzZWQgb24gZXBpbG9nIGNvZGUgbG9vaworIAlzaXplX3QgbWF4X3NlYXJjaCA9IDE2OworLQlzaXplX3Qgc2VjdGlvbl9zaXplID0gYmZkX3NlY3Rpb25fc2l6ZShhYmZkLCBzZWN0aW9uKTsKKysJc2l6ZV90IHNlY3Rpb25fc2l6ZSA9IGJmZF9zZWN0aW9uX3NpemUoc2VjdGlvbik7CisgCWlmIChwYyArIG1heF9zZWFyY2ggPiBzZWN0aW9uX3NpemUpCisgCQltYXhfc2VhcmNoID0gc2VjdGlvbl9zaXplIC0gcGM7CisgCitAQCAtODE5LDEwICs4MTksMTAgQEAgZmluZF9uZWFyZXN0X2xpbmUoYmZkX2luZm8gY29uc3QgJiBiLCBvcF9iZmRfc3ltYm9sIGNvbnN0ICYgc3ltLAorIAllbHNlCisgCQlwYyA9IChzeW0udmFsdWUoKSArIG9mZnNldCkgLSBzeW0uZmlsZXBvcygpOworIAorLQlpZiAoKGJmZF9nZXRfc2VjdGlvbl9mbGFncyhhYmZkLCBzZWN0aW9uKSAmIFNFQ19BTExPQykgPT0gMCkKKysJaWYgKChiZmRfc2VjdGlvbl9mbGFncyhzZWN0aW9uKSAmIFNFQ19BTExPQykgPT0gMCkKKyAJCWdvdG8gZmFpbDsKKyAKKy0JaWYgKHBjID49IGJmZF9zZWN0aW9uX3NpemUoYWJmZCwgc2VjdGlvbikpCisrCWlmIChwYyA+PSBiZmRfc2VjdGlvbl9zaXplKHNlY3Rpb24pKQorIAkJZ290byBmYWlsOworIAorIAlyZXQgPSBiZmRfZmluZF9uZWFyZXN0X2xpbmUoYWJmZCwgc2VjdGlvbiwgc3ltcywgcGMsICZjZmlsZW5hbWUsCitkaWZmIC0tZ2l0IGEvb3BqaXRjb252L2NyZWF0ZV9iZmQuYyBiL29waml0Y29udi9jcmVhdGVfYmZkLmMKK2luZGV4IDQ4ZGIxNDNiLi41YzBlOTE1MiAxMDA2NDQKKy0tLSBhL29waml0Y29udi9jcmVhdGVfYmZkLmMKKysrKyBiL29waml0Y29udi9jcmVhdGVfYmZkLmMKK0BAIC04NiwxMiArODYsMTIgQEAgYXNlY3Rpb24gKiBjcmVhdGVfc2VjdGlvbihiZmQgKiBhYmZkLCBjaGFyIGNvbnN0ICogc2VjdGlvbl9uYW1lLAorIAkJYmZkX3BlcnJvcigiYmZkX21ha2Vfc2VjdGlvbiIpOworIAkJZ290byBlcnJvcjsKKyAJfQorLQliZmRfc2V0X3NlY3Rpb25fdm1hKGFiZmQsIHNlY3Rpb24sIHZtYSk7CistCWlmIChiZmRfc2V0X3NlY3Rpb25fc2l6ZShhYmZkLCBzZWN0aW9uLCBzaXplKSA9PSBGQUxTRSkgeworKwliZmRfc2V0X3NlY3Rpb25fdm1hKHNlY3Rpb24sIHZtYSk7CisrCWlmIChiZmRfc2V0X3NlY3Rpb25fc2l6ZShzZWN0aW9uLCBzaXplKSA9PSBGQUxTRSkgeworIAkJYmZkX3BlcnJvcigiYmZkX3NldF9zZWN0aW9uX3NpemUiKTsKKyAJCWdvdG8gZXJyb3I7CisgCX0KKy0JaWYgKGJmZF9zZXRfc2VjdGlvbl9mbGFncyhhYmZkLCBzZWN0aW9uLCBmbGFncykgPT0gRkFMU0UpIHsKKysJaWYgKGJmZF9zZXRfc2VjdGlvbl9mbGFncyhzZWN0aW9uLCBmbGFncykgPT0gRkFMU0UpIHsKKyAJCWJmZF9wZXJyb3IoImJmZF9zZXRfc2VjdGlvbl9mbGFncyIpOworIAkJZ290byBlcnJvcjsKKyAJfQorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZV8xLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGVfMS4zLjAuYmIKaW5kZXggNGU1YjZjYS4uODI0MmE4MyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZV8xLjMuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlXzEuMy4wLmJiCkBAIC0xLDYgKzEsMTAgQEAKIHJlcXVpcmUgb3Byb2ZpbGUuaW5jCiAKK0NPTVBBVElCTEVfSE9TVF9yaXNjdjY0ID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfcmlzY3YzMiA9ICJudWxsIgorCiBERVBFTkRTX2FwcGVuZF9wb3dlcnBjNjQgPSAiIGxpYnBmbTQiCitERVBFTkRTX2FwcGVuZF9wb3dlcnBjNjRsZSA9ICIgbGlicGZtNCIKIAogU1JDX1VSSVttZDVzdW1dID0gImJkOTk4ZGY1NTIxZWJlZGFlMzFlNzFjZDNmYjYyMDBiIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk1ZGVkOGJkZTFlYzM5OTIyZjBhZjAxNTk4MWE2N2FlYzYzZTAyNWE1MDFlNGRjMDRjZDY1ZDM4ZjczNjQ3ZTYiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL3BtLWdyYXBoL3BtLWdyYXBoXzUuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvcG0tZ3JhcGgvcG0tZ3JhcGhfNS41LmJiCmluZGV4IDYzYTlmYTguLmExMzc4ODYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvcG0tZ3JhcGgvcG0tZ3JhcGhfNS41LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvcG0tZ3JhcGgvcG0tZ3JhcGhfNS41LmJiCkBAIC0xMiwxMSArMTIsMjIgQEAKICIKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKKyMgQXBhcnQgZnJvbSB0aGUgbGlzdGVkIFJERVBFTkRTLCBhbmFseXplLXN1c3BlbmQgZGVwZW5kcyBvbiBzb21lIGZlYXR1cmVzCisjIHByb3ZpZGVkIGJ5IHRoZSBrZXJuZWwuIFRoZXNlIG9wdGlvbnMgYXJlOgorIyAgIC0gQ09ORklHX1BNX0RFQlVHPXkKKyMgICAtIENPTkZJR19QTV9TTEVFUF9ERUJVRz15CisjICAgLSBDT05GSUdfRlRSQUNFPXkKKyMgICAtIENPTkZJR19GVU5DVElPTl9UUkFDRVI9eQorIyAgIC0gQ09ORklHX0ZVTkNUSU9OX0dSQVBIX1RSQUNFUj15CisKIENPTVBBVElCTEVfSE9TVD0nKGkuODZ8eDg2XzY0KS4qJwogRVhUUkFfT0VNQUtFID0gIlBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IEJBU0VMSUI9JHtiYXNlbGlifSIKIAogZG9faW5zdGFsbCgpIHsKICAgICAgICAgb2VfcnVubWFrZSBpbnN0YWxsCisgICAgICAgIGluc3RhbGwgLURtIDA3NTUgJHtTfS9hbmFseXplX3N1c3BlbmQucHkgJHtEfSR7YmluZGlyfS9hbmFseXplX3N1c3BlbmQucHkKIH0KIAogUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtY29yZSBweXRob24zLXRocmVhZGluZyBweXRob24zLWRhdGV0aW1lIHB5dGhvbjMtY29tcHJlc3Npb24iCitSUFJPVklERVNfJHtQTn0gPSAiYW5hbHl6ZS1zdXNwZW5kIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9zcGlkZXYtdGVzdC9zcGlkZXYtdGVzdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvc3BpZGV2LXRlc3Qvc3BpZGV2LXRlc3QuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYyNjMwMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvc3BpZGV2LXRlc3Qvc3BpZGV2LXRlc3QuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJUZXN0IFNQSSBkZXZpY2VzIgorREVTQ1JJUFRJT04gPSAiU1BJIHRlc3RpbmcgdXRpbGl0eSB1c2luZyB0aGUgc3BpZGV2IGRyaXZlciIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vR1BMLTIuMDttZDU9ODAxZjgwOTgwZDE3MWRkNjQyNTYxMDgzM2EyMmRiZTYiCitQUk9WSURFUyA9ICJ2aXJ0dWFsL3NwaWRldi10ZXN0IgorCitpbmhlcml0IGJhc2gtY29tcGxldGlvbiBrZXJuZWxzcmMga2VybmVsLWFyY2gKKworZG9fcG9wdWxhdGVfbGljW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19wYXRjaCIKKworRVhUUkFfT0VNQUtFID0gIi1DICR7U30vdG9vbHMvc3BpIE89JHtCfSBDUk9TUz0ke1RBUkdFVF9QUkVGSVh9IENDPSIke0NDfSIgTEQ9IiR7TER9IiBBUj0ke0FSfSBBUkNIPSR7QVJDSH0iCisKK2RvX2NvbmZpZ3VyZVtkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fc2hhcmVkX3dvcmtkaXIiCisKK2RvX2NvbXBpbGUoKSB7CisgICAgb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwKK30KKworUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKKworcHl0aG9uIGRvX3BhY2thZ2VfcHJlcGVuZCgpIHsKKyAgICBkLnNldFZhcignUEtHVicsIGQuZ2V0VmFyKCJLRVJORUxfVkVSU0lPTiIsIFRydWUpLnNwbGl0KCItIilbMF0pCit9CisKK0IgPSAiJHtXT1JLRElSfS8ke0JQTn0tJHtQVn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL3R1cmJvc3RhdC90dXJib3N0YXRfMy40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC90dXJib3N0YXQvdHVyYm9zdGF0XzMuNC5iYgppbmRleCA1ZjY1ODhkLi42MDA0MGE0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL3R1cmJvc3RhdC90dXJib3N0YXRfMy40LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvdHVyYm9zdGF0L3R1cmJvc3RhdF8zLjQuYmIKQEAgLTIxLDcgKzIxLDcgQEAKICAgICAgICAgICAgICIKIAogUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKLURFUEVORFMgPSAidmlydHVhbC9rZXJuZWwiCitERVBFTkRTID0gImxpYmNhcCIKIAogIyBUaGlzIGxvb2tzIGluIFMsIHNvIHdlIGJldHRlciBtYWtlIHN1cmUgdGhlcmUncwogIyBzb21ldGhpbmcgaW4gdGhlIGRpcmVjdG9yeS4KQEAgLTMwLDI1ICszMCwyOCBAQAogCiAKIEVYVFJBX09FTUFLRSA9ICdcCi0gICAgICAgICAgICAgICAgQ0M9IiR7Q0N9IiBcCi0JCSdDRkxBR1M9LVdhbGwgLUkke1NUQUdJTkdfS0VSTkVMX0RJUn0vYXJjaC94ODYvaW5jbHVkZS91YXBpICR7TERGTEFHU30nIFwKKyAgICAgICAgICAgICAgICBDQz0iJHtDQ30iICdDRkxBR1M9LVdhbGwgJHtMREZMQUdTfScgXAogICAgICAgICAgICAgICAgJwogCiAjIElmIHdlIGJ1aWxkIHVuZGVyIFNUQUdJTkdfS0VSTkVMX0RJUiwgc291cmNlIHdpbGwgbm90IGJlIHB1dAogIyBpbnRvIHRoZSBkYmcgcnBtLiAgU1RBR0lOR19LRVJORUxfRElSIHdpbGwgZXhpc3QgYnkgdGhlIHRpbWUKICMgZG9fY29uZmlndXJlKCkgaXMgaW52b2tlZCBzbyB3ZSBjYW4gc2FmZWx5IGNvcHkgZnJvbSBpdC4KICMKK2RvX2NvbmZpZ3VyZVtkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fc2hhcmVkX3dvcmtkaXIiCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKIAlta2RpciAtcCAke1N9CiAJY3AgLXIgJHtTVEFHSU5HX0tFUk5FTF9ESVJ9L2FyY2gveDg2L2luY2x1ZGUvYXNtL21zci1pbmRleC5oICR7U30KIAljcCAtciAke1NUQUdJTkdfS0VSTkVMX0RJUn0vYXJjaC94ODYvaW5jbHVkZS9hc20vaW50ZWwtZmFtaWx5LmggJHtTfQogCWNwIC1yICR7U1RBR0lOR19LRVJORUxfRElSfS9pbmNsdWRlL2xpbnV4L2JpdHMuaCAke1N9CisJY3AgLXIgJHtTVEFHSU5HX0tFUk5FTF9ESVJ9L2luY2x1ZGUvbGludXgvY29uc3QuaCAke1N9CiAJY3AgLXIgJHtTVEFHSU5HX0tFUk5FTF9ESVJ9L3Rvb2xzL3Bvd2VyL3g4Ni90dXJib3N0YXQvKiAke1N9CiAJY3AgLXIgJHtXT1JLRElSfS9DT1BZSU5HICR7U30KIH0KIAogZG9fY29tcGlsZSgpIHsKIAlzZWQgLWkgJ3MjPGxpbnV4L2JpdHMuaD4jImJpdHMuaCIjJyBtc3ItaW5kZXguaAorCXNlZCAtaSAncyM8bGludXgvY29uc3QuaD4jImNvbnN0LmgiIycgYml0cy5oCisJc2VkIC1pIC1lICdzIzx1YXBpL2xpbnV4L2NvbnN0Lmg+IzxsaW51eC9jb25zdC5oPiMnIC1lICdzI19MSU5VWF9DT05TVF9II19MSU5VWF9DT05TVF9IX0tFUk5FTCMnIGNvbnN0LmgKIAlzZWQgLWkgJ3MjTVNSSEVBREVSIyJtc3ItaW5kZXguaCIjJyB0dXJib3N0YXQuYwogCXNlZCAtaSAncyNJTlRFTF9GQU1JTFlfSEVBREVSIyJpbnRlbC1mYW1pbHkuaCIjJyB0dXJib3N0YXQuYwogCXNlZCAtaSAncyNcJChDQykgXCQoQ0ZMQUdTKSBcJDwgLW8gXCQoQlVJTERfT1VUUFVUKS9cJEAjXCQoQ0MpIFwkKENGTEFHUykgXCQoTERGTEFHUykgXCQ8IC1vIFwkKEJVSUxEX09VVFBVVCkvXCRAIycgTWFrZWZpbGUKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2lkM2xpYi9pZDNsaWJfMy44LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9pZDNsaWIvaWQzbGliXzMuOC4zLmJiCmluZGV4IDlkMzExNjAuLjIxZmEwYmQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2lkM2xpYi9pZDNsaWJfMy44LjMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvaWQzbGliL2lkM2xpYl8zLjguMy5iYgpAQCAtMjEsNiArMjEsNyBAQAogIyBwYXRjaGVzIG1haW50YWluZWQgYnkgcXVpbHQuIFNvIG1hbnVhbGx5IGFwcGx5IHRoZW0gYmVmb3JlIGFwcGx5aW5nIG90aGVyIGxvY2FsCiAjIHBhdGNoZXMuIEFsc28gcmVtb3ZlIGFsbCB0ZW1wIGZpbGVzIGJlZm9yZSBsZWF2aW5nLCBiZWNhdXNlIGRvX3BhdGNoKCkgd2lsbCBwb3AKICMgdXAgYWxsIHByZXZpb3VzbHkgYXBwbGllZCBwYXRjaGVzIGluIHRoZSBzdGFydAorZG9fcGF0Y2hbZGVwZW5kc10gKz0gInF1aWx0LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogaWQzbGliX2RvX3BhdGNoKCkgewogICAgIGNkICR7U30KICAgICAjIGl0J3MgaW1wb3J0YW50IHRoYXQgd2Ugb25seSBwb3AgdGhlIGV4aXN0aW5nIHBhdGNoZXMgd2hlbiB0aGV5J3ZlCkBAIC0zMywxNCArMzQsMTQgQEAKICAgICAgICAgIyB0aGUgdGVzdCBpbnNpZGUgd2hpY2ggd2Ugb3BlcmF0ZQogICAgICAgICBRVUlMVF9QQVRDSEVTPSR7U30vcGF0Y2hlcyBxdWlsdCBwb3AgLWEKICAgICBmaQotICAgIGlmIFsgLWQgJHtTfS8ucGMtaWQzbGliIF07IHRoZW4KKyAgICBpZiBbIC1kICR7U30vLnBjLSR7QlBOfSBdOyB0aGVuCiAgICAgICAgIHJtIC1yZiAke1N9Ly5wYwotICAgICAgICBtdiAke1N9Ly5wYy1pZDNsaWIgJHtTfS8ucGMKKyAgICAgICAgbXYgJHtTfS8ucGMtJHtCUE59ICR7U30vLnBjCiAgICAgICAgIFFVSUxUX1BBVENIRVM9JHtTfS9kZWJpYW4vcGF0Y2hlcyBxdWlsdCBwb3AgLWEKICAgICAgICAgcm0gLXJmICR7U30vLnBjICR7U30vZGViaWFuCiAgICAgZmkKICAgICBRVUlMVF9QQVRDSEVTPSR7U30vZGViaWFuL3BhdGNoZXMgcXVpbHQgcHVzaCAtYQotICAgIG12ICR7U30vLnBjICR7U30vLnBjLWlkM2xpYgorICAgIG12ICR7U30vLnBjICR7U30vLnBjLSR7QlBOfQogfQogCiBkb191bnBhY2tbY2xlYW5kaXJzXSArPSAiJHtTfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmR2ZHJlYWQvbGliZHZkcmVhZF82LjAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmR2ZHJlYWQvbGliZHZkcmVhZF82LjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmNhNzRmNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJkdmRyZWFkL2xpYmR2ZHJlYWRfNi4wLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1TVU1NQVJZID0gIkRWRCBhY2Nlc3MgbXVsdGltZWRhIGxpYnJhcnkiCi1TRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NjRlNzUzZmE3ZDFjYTMxNjMyYmMzODNkYTNiNTdjMjciCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLnZpZGVvbGFuLm9yZy9wdWIvdmlkZW9sYW4vbGliZHZkcmVhZC8ke1BWfS9saWJkdmRyZWFkLSR7UFZ9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiNDk5OTA5MzUxNzRiZjZiMmZhNTAxZTc4OWM1NzgxMzUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjkxNDAxYWYyMTNiMjE5Y2RkZTI0YjQ2YzUwYTU3ZjI5MzAxZmViN2Y5NjU2NzhmMWQ3ZWQ0NjMyY2M2ZmViMCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgYmluY29uZmlnIHBrZ2NvbmZpZwotCi1DT05GSUdVUkVPUFRTX3JlbW92ZSA9ICItLWRpc2FibGUtc2lsZW50LXJ1bGVzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGliZHZkcmVhZC9saWJkdmRyZWFkXzYuMS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGliZHZkcmVhZC9saWJkdmRyZWFkXzYuMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1ZjViNmEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJkdmRyZWFkL2xpYmR2ZHJlYWRfNi4xLjEuYmIKQEAgLTAsMCArMSwxMiBAQAorU1VNTUFSWSA9ICJEVkQgYWNjZXNzIG11bHRpbWVkYSBsaWJyYXJ5IgorU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY0ZTc1M2ZhN2QxY2EzMTYzMmJjMzgzZGEzYjU3YzI3IgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC52aWRlb2xhbi5vcmcvcHViL3ZpZGVvbGFuL2xpYmR2ZHJlYWQvJHtQVn0vbGliZHZkcmVhZC0ke1BWfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gIjA5Yzc0MjM1NjhmYjY3OTI3OWZkMmEyYmM2YjEwYjZlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNlMzU3MzA5YTE3YzViZTM3MzEzODViOWVhYmRhNmI3ZTNmYTAxMGY0NjAyMmEwNmYxMDQ1NTNiZjhlMjE3OTYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlIGJpbmNvbmZpZyBwa2djb25maWcKKworQ09ORklHVVJFT1BUU19yZW1vdmUgPSAiLS1kaXNhYmxlLXNpbGVudC1ydWxlcyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21wbGF5ZXIvbXB2XzAuMjYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21wbGF5ZXIvbXB2XzAuMjYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzMyN2M0NS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wdl8wLjI2LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi1TVU1NQVJZID0gIk9wZW4gU291cmNlIG11bHRpbWVkaWEgcGxheWVyIgotREVTQ1JJUFRJT04gPSAibXB2IGlzIGEgZm9yayBvZiBtcGxheWVyMiBhbmQgTVBsYXllci4gSXQgc2hhcmVzIHNvbWUgZmVhdHVyZXMgd2l0aCB0aGUgZm9ybWVyIHByb2plY3RzIHdoaWxlIGludHJvZHVjaW5nIG1hbnkgbW9yZS4iCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1wdi5pby8iCi1ERVBFTkRTID0gInpsaWIgZmZtcGVnIGpwZWcgdmlydHVhbC9saWJ4MTEgeHNwIGxpYnh2IFwKLSAgICAgICAgICAgbGlieHNjcm5zYXZlciBsaWJ2NGwgbGlieGluZXJhbWEgXAotIgotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTkxZjFjYjg3MGMxY2MyZDMxMzUxYTRkMjU5NTQ0MWNiIgotCi0jIFdoaWxlIHRoaXMgaXRlbSBkb2VzIG5vdCByZXF1aXJlIGl0LCBpdCBkZXBlbmRzIG9uIGZmbXBlZyB3aGljaCBkb2VzCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi0KLVNSQ1JFVl9tcHYgPSAiNGRiODJmMDQ1MDJjYmNkMjBkOWE5NzVkZjlkZmRlOTFkOGMzODllMyIKLVNSQ19VUkkgPSAiIFwKLSAgICBnaXQ6Ly9naXRodWIuY29tL21wdi1wbGF5ZXIvbXB2O25hbWU9bXB2IFwKLSAgICBodHRwOi8vd3d3LmZyZWVoYWNrZXJzLm9yZy9+dG5hZ3kvcmVsZWFzZS93YWYtMS44LjEyO25hbWU9d2FmO2Rvd25sb2FkZmlsZW5hbWU9d2FmO3N1YmRpcj1naXQgXAotIgotU1JDX1VSSVt3YWYubWQ1c3VtXSA9ICJjZWY0ZWU4MjIwNmIxODQzZGIwODJkMGIwNTA2YmY3MSIKLVNSQ19VUklbd2FmLnNoYTI1NnN1bV0gPSAiMDFiZjJiZWFiMjEwNmQxNTU4ODAwYzg3MDliYzJjOGU0OTZkM2RhNGEyY2EzNDNmZTA5MWYyMmZjYTYwYzk4YiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCB3YWYgcGtnY29uZmlnIHB5dGhvbm5hdGl2ZSBmZWF0dXJlc19jaGVjawotCi1MVUEgPz0gImx1YSIKLUxVQV9taXBzNjQgID0gIiIKLUxVQV9hYXJjaDY0ICA9ICIiCi1MVUFfcG93ZXJwYzY0ICA9ICIiCi1MVUFfcG93ZXJwYyAgPSAiIgotCi0jIE5vdGU6IGJvdGggbHVhIGFuZCBsaWJhc3MgYXJlIHJlcXVpcmVkIHRvIGdldCBvbi1zY3JlZW4tZGlzcGxheSAoY29udHJvbHMpCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICAke0xVQX0gXAotICAgIGxpYmFzcyBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsIGQpfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2FhcmNoNjQgPSAibHVhIgotUEFDS0FHRUNPTkZJR1tkcm1dID0gIi0tZW5hYmxlLWRybSwtLWRpc2FibGUtZHJtLGxpYmRybSIKLVBBQ0tBR0VDT05GSUdbZ2JtXSA9ICItLWVuYWJsZS1nYm0sLS1kaXNhYmxlLWdibSx2aXJ0dWFsL21lc2EiCi1QQUNLQUdFQ09ORklHW2x1YV0gPSAiLS1lbmFibGUtbHVhLC0tZGlzYWJsZS1sdWEsbHVhIGx1YWppdCIKLVBBQ0tBR0VDT05GSUdbbGliYXNzXSA9ICItLWVuYWJsZS1saWJhc3MsLS1kaXNhYmxlLWxpYmFzcyxsaWJhc3MiCi1QQUNLQUdFQ09ORklHW2xpYmFyY2hpdmVdID0gIi0tZW5hYmxlLWxpYmFyY2hpdmUsLS1kaXNhYmxlLWxpYmFyY2hpdmUsbGliYXJjaGl2ZSIKLVBBQ0tBR0VDT05GSUdbamFja10gPSAiLS1lbmFibGUtamFjaywgLS1kaXNhYmxlLWphY2ssIGphY2siCi1QQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItLWVuYWJsZS12YWFwaSwgLS1kaXNhYmxlLXZhYXBpLGxpYnZhIgotUEFDS0FHRUNPTkZJR1t2ZHBhdV0gPSAiLS1lbmFibGUtdmRwYXUsIC0tZGlzYWJsZS12ZHBhdSxsaWJ2ZHBhdSIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZCwgLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZCBsaWJ4a2Jjb21tb24iCi0KLVNJTVBMRV9UQVJHRVRfU1lTID0gIiR7QCcke1RBUkdFVF9TWVN9Jy5yZXBsYWNlKCcke1RBUkdFVF9WRU5ET1J9JywgJycpfSIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1wcmVmaXg9JHtwcmVmaXh9IFwKLSAgICAtLXRhcmdldD0ke1NJTVBMRV9UQVJHRVRfU1lTfSBcCi0gICAgLS1jb25mZGlyPSR7c3lzY29uZmRpcn0gXAotICAgIC0tZGF0YWRpcj0ke2RhdGFkaXJ9IFwKLSAgICAtLWRpc2FibGUtbWFucGFnZS1idWlsZCBcCi0gICAgLS1kaXNhYmxlLWdsIFwKLSAgICAtLWRpc2FibGUtbGlic21iY2xpZW50IFwKLSAgICAtLWRpc2FibGUtZW5jb2RpbmcgXAotICAgIC0tZGlzYWJsZS1saWJibHVyYXkgXAotICAgIC0tZGlzYWJsZS1kdmRyZWFkIFwKLSAgICAtLWRpc2FibGUtZHZkbmF2IFwKLSAgICAtLWRpc2FibGUtY2RkYSBcCi0gICAgLS1kaXNhYmxlLXVjaGFyZGV0IFwKLSAgICAtLWRpc2FibGUtcnViYmVyYmFuZCBcCi0gICAgLS1kaXNhYmxlLWxjbXMyIFwKLSAgICAtLWRpc2FibGUtdmFwb3Vyc3ludGggXAotICAgIC0tZGlzYWJsZS12YXBvdXJzeW50aC1sYXp5IFwKLSAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKLSIKLQotYWRqdXN0X3dhZl9wZXJtcygpIHsKLSAgICBjaG1vZCAreCAke1N9L3dhZgotfQotCi1kb19wYXRjaFtwb3N0ZnVuY3NdICs9ICJhZGp1c3Rfd2FmX3Blcm1zIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21wbGF5ZXIvbXB2XzAuMzIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21wbGF5ZXIvbXB2XzAuMzIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mN2IwZjMwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbXBsYXllci9tcHZfMC4zMi4wLmJiCkBAIC0wLDAgKzEsMTE3IEBACitTVU1NQVJZID0gIk9wZW4gU291cmNlIG11bHRpbWVkaWEgcGxheWVyIgorREVTQ1JJUFRJT04gPSAibXB2IGlzIGEgZm9yayBvZiBtcGxheWVyMiBhbmQgTVBsYXllci4gSXQgc2hhcmVzIHNvbWUgZmVhdHVyZXMgd2l0aCB0aGUgZm9ybWVyIHByb2plY3RzIHdoaWxlIGludHJvZHVjaW5nIG1hbnkgbW9yZS4iCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1wdi5pby8iCisKK0RFUEVORFMgPSAiemxpYiBmZm1wZWcganBlZyBsaWJ2NGwiCisKK0RFUEVORFMgKz0gIiBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnIHZpcnR1YWwvbGlieDExIHhzcCBsaWJ4diBsaWJ4c2NybnNhdmVyIGxpYnhpbmVyYW1hJywgJycsIGQpfSBcCisiCisKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5HUEw7bWQ1PTkxZjFjYjg3MGMxY2MyZDMxMzUxYTRkMjU5NTQ0MWNiIgorCisjIFdoaWxlIHRoaXMgaXRlbSBkb2VzIG5vdCByZXF1aXJlIGl0LCBpdCBkZXBlbmRzIG9uIGZmbXBlZyB3aGljaCBkb2VzCitMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCisKK1NSQ1JFVl9tcHYgPSAiNzBiOTkxNzQ5ZGYzODliY2MwYTRlMTQ1YjU2ODcyMzNhMDNiNGVkNyIKK1NSQ19VUkkgPSAiIFwKKyAgICBnaXQ6Ly9naXRodWIuY29tL21wdi1wbGF5ZXIvbXB2O25hbWU9bXB2IFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCB3YWYgcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrIG1pbWUteGRnCisKK0xVQSA/PSAibHVhIgorTFVBX21pcHM2NCAgPSAiIgorTFVBX2FhcmNoNjQgID0gIiIKK0xVQV9wb3dlcnBjNjQgID0gIiIKK0xVQV9wb3dlcnBjNjRsZSAgPSAiIgorTFVBX3Jpc2N2NjQgID0gIiIKK0xVQV9yaXNjdjMyICA9ICIiCitMVUFfcG93ZXJwYyAgPSAiIgorCisjIE5vdGU6IGJvdGggbHVhIGFuZCBsaWJhc3MgYXJlIHJlcXVpcmVkIHRvIGdldCBvbi1zY3JlZW4tZGlzcGxheSAoY29udHJvbHMpCitQQUNLQUdFQ09ORklHID8/PSAiIFwKKyAgICAke0xVQX0gXAorICAgIGxpYmFzcyBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHX3JlbW92ZV9hYXJjaDY0ID0gImx1YSIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSx2aXJ0dWFsL2xpYngxMSIKK1BBQ0tBR0VDT05GSUdbeHZdID0gIi0tZW5hYmxlLXh2LC0tZGlzYWJsZS14dixsaWJ4diIKK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICItLWVuYWJsZS1nbCwtLWRpc2FibGUtZ2wsdmlydHVhbC9saWJnbCIKK1BBQ0tBR0VDT05GSUdbZWdsXSA9ICItLWVuYWJsZS1lZ2wsLS1kaXNhYmxlLWVnbCwiCitQQUNLQUdFQ09ORklHW2RybV0gPSAiLS1lbmFibGUtZHJtLC0tZGlzYWJsZS1kcm0sbGliZHJtIgorUEFDS0FHRUNPTkZJR1tnYm1dID0gIi0tZW5hYmxlLWdibSwtLWRpc2FibGUtZ2JtLHZpcnR1YWwvbGliZ2JtIgorUEFDS0FHRUNPTkZJR1tsdWFdID0gIi0tZW5hYmxlLWx1YSwtLWRpc2FibGUtbHVhLGx1YSBsdWFqaXQiCitQQUNLQUdFQ09ORklHW2xpYmFzc10gPSAiLS1lbmFibGUtbGliYXNzLC0tZGlzYWJsZS1saWJhc3MsbGliYXNzIgorUEFDS0FHRUNPTkZJR1tsaWJhcmNoaXZlXSA9ICItLWVuYWJsZS1saWJhcmNoaXZlLC0tZGlzYWJsZS1saWJhcmNoaXZlLGxpYmFyY2hpdmUiCitQQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWphY2ssIC0tZGlzYWJsZS1qYWNrLCBqYWNrIgorUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGksLS1kaXNhYmxlLXZhYXBpLGxpYnZhIgorUEFDS0FHRUNPTkZJR1t2ZHBhdV0gPSAiLS1lbmFibGUtdmRwYXUsLS1kaXNhYmxlLXZkcGF1LGxpYnZkcGF1IgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQgd2F5bGFuZC1uYXRpdmUgbGlieGtiY29tbW9uIgorCitweXRob24gX19hbm9ueW1vdXMoKSB7CisgICAgcGFja2FnZWNvbmZpZyA9IChkLmdldFZhcigiUEFDS0FHRUNPTkZJRyIpIG9yICIiKS5zcGxpdCgpCisgICAgZXh0cmFzID0gW10KKyAgICBpZiAieDExIiBpbiBwYWNrYWdlY29uZmlnIGFuZCAib3BlbmdsIiBpbiBwYWNrYWdlY29uZmlnOgorICAgICAgICBleHRyYXMuYXBwZW5kKCIgLS1lbmFibGUtZ2wteDExIikKKyAgICBpZiAieDExIiBpbiBwYWNrYWdlY29uZmlnIGFuZCAiZWdsIiBpbiBwYWNrYWdlY29uZmlnOgorICAgICAgICBleHRyYXMuYXBwZW5kKCIgLS1lbmFibGUtZWdsLXgxMSIpCisgICAgaWYgImVnbCIgaW4gcGFja2FnZWNvbmZpZyBhbmQgImRybSIgaW4gcGFja2FnZWNvbmZpZzoKKyAgICAgICAgZXh0cmFzLmFwcGVuZCgiIC0tZW5hYmxlLWVnbC1kcm0iKQorICAgIGlmICJ2YWFwaSIgaW4gcGFja2FnZWNvbmZpZyBhbmQgIngxMSIgaW4gcGFja2FnZWNvbmZpZzoKKyAgICAgICAgZXh0cmFzLmFwcGVuZCgiIC0tZW5hYmxlLXZhYXBpLXgxMSIpCisgICAgaWYgInZhYXBpIiBpbiBwYWNrYWdlY29uZmlnIGFuZCAiZHJtIiBpbiBwYWNrYWdlY29uZmlnOgorICAgICAgICBleHRyYXMuYXBwZW5kKCIgLS1lbmFibGUtdmFhcGktZHJtIikKKyAgICBpZiAidmFhcGkiIGluIHBhY2thZ2Vjb25maWcgYW5kICJ4MTEiIGluIHBhY2thZ2Vjb25maWcgYW5kICJlZ2wiIGluIHBhY2thZ2Vjb25maWc6CisgICAgICAgIGV4dHJhcy5hcHBlbmQoIiAtLWVuYWJsZS12YWFwaS14LWVnbCIpCisgICAgaWYgInZkcGF1IiBpbiBwYWNrYWdlY29uZmlnIGFuZCAib3BlbmdsIiBpbiBwYWNrYWdlY29uZmlnIGFuZCAieDExIiBpbiBwYWNrYWdlY29uZmlnOgorICAgICAgICBleHRyYXMuYXBwZW5kKCIgLS1lbmFibGUtdmRwYXUtZ2wteDExIikKKyAgICBpZiAid2F5bGFuZCIgaW4gcGFja2FnZWNvbmZpZyBhbmQgIm9wZW5nbCIgaW4gcGFja2FnZWNvbmZpZzoKKyAgICAgICAgZXh0cmFzLmFwcGVuZCgiIC0tZW5hYmxlLWdsLXdheWxhbmQiKQorICAgIGlmICJ3YXlsYW5kIiBpbiBwYWNrYWdlY29uZmlnIGFuZCAidmFhcGkiIGluIHBhY2thZ2Vjb25maWc6CisgICAgICAgIGV4dHJhcy5hcHBlbmQoIiAtLWVuYWJsZS12YWFwaS13YXlsYW5kIikKKyAgICBpZiBleHRyYXM6CisgICAgICAgIGQuYXBwZW5kVmFyKCJFWFRSQV9PRUNPTkYiLCAiIi5qb2luKGV4dHJhcykpCit9CisKK1NJTVBMRV9UQVJHRVRfU1lTID0gIiR7QCcke1RBUkdFVF9TWVN9Jy5yZXBsYWNlKCcke1RBUkdFVF9WRU5ET1J9JywgJycpfSIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1wcmVmaXg9JHtwcmVmaXh9IFwKKyAgICAtLXRhcmdldD0ke1NJTVBMRV9UQVJHRVRfU1lTfSBcCisgICAgLS1jb25mZGlyPSR7c3lzY29uZmRpcn0gXAorICAgIC0tZGF0YWRpcj0ke2RhdGFkaXJ9IFwKKyAgICAtLWRpc2FibGUtbWFucGFnZS1idWlsZCBcCisgICAgLS1kaXNhYmxlLWxpYnNtYmNsaWVudCBcCisgICAgLS1kaXNhYmxlLWxpYmJsdXJheSBcCisgICAgLS1kaXNhYmxlLWR2ZG5hdiBcCisgICAgLS1kaXNhYmxlLWNkZGEgXAorICAgIC0tZGlzYWJsZS11Y2hhcmRldCBcCisgICAgLS1kaXNhYmxlLXJ1YmJlcmJhbmQgXAorICAgIC0tZGlzYWJsZS1sY21zMiBcCisgICAgLS1kaXNhYmxlLXZhcG91cnN5bnRoIFwKKyAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKKyIKKworZG9fcGF0Y2hbcG9zdGZ1bmNzXSArPSAiZ2V0X3dhZiIKKworZ2V0X3dhZigpIHsKKyAgICBjZCAke1N9CisgICAgLi9ib290c3RyYXAucHkKKyAgICBzZWQgLWkgLWUgJ3N8L3Vzci9iaW4vZW52IHB5dGhvbnwvdXNyL2Jpbi9lbnYgcHl0aG9uM3xnJyAke1N9L3dhZgorICAgIGNkIC0KK30KKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9pY29ucyBcCisgICAgJHtkYXRhZGlyfS96c2ggXAorICAgICR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uIFwKKyAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9waXBld2lyZS9waXBld2lyZS0wLjJfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvcGlwZXdpcmUvcGlwZXdpcmUtMC4yX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2IzMDE1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvcGlwZXdpcmUvcGlwZXdpcmUtMC4yX2dpdC5iYgpAQCAtMCwwICsxLDY1IEBACitTVU1NQVJZID0gIk11bHRpbWVkaWEgcHJvY2Vzc2luZyBzZXJ2ZXIgZm9yIExpbnV4IgorQVVUSE9SID0gIldpbSBUYXltYW5zIDx3dGF5bWFuc0ByZWRoYXQuY29tPiIKK0hPTUVQQUdFID0gImh0dHBzOi8vcGlwZXdpcmUub3JnIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorTElDRU5TRSA9ICJMR1BMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiIFwKKyAgICBmaWxlOi8vTElDRU5TRTttZDU9ZDgxNTNjNmU2NTk4NmY4NjJhMDU1MGNhNzRhM2VkNzMgXAorICAgIGZpbGU6Ly9MR1BMO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCisiCitERVBFTkRTID0gImFsc2EtbGliIGRidXMgdWRldiIKK1NSQ1JFViA9ICIxNGMxMWMwZmU0ZDM2NmJhZDRjZmVjZGVlOTdiNjY1MmZmOWVkNjNkIgorUFYgPSAiMC4yLjciCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9QaXBlV2lyZS9waXBld2lyZSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgc3lzdGVtZCBtYW5wYWdlcworCitQQUNLQUdFQ09ORklHID8/PSAiXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0gXAorICAgIGdzdHJlYW1lciBcCisiCisKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLURzeXN0ZW1kPXRydWUsLURzeXN0ZW1kPWZhbHNlLHN5c3RlbWQiCitQQUNLQUdFQ09ORklHW2dzdHJlYW1lcl0gPSAiLURnc3RyZWFtZXI9ZW5hYmxlZCwtRGdzdHJlYW1lcj1kaXNhYmxlZCxnbGliLTIuMCBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi1EbWFuPXRydWUsLURtYW49ZmFsc2UsbGlieG1sLXBhcnNlci1wZXJsLW5hdGl2ZSIKKworUEFDS0FHRVMgPSsgIlwKKyAgICAke1BOfS1zcGEtcGx1Z2lucyBcCisgICAgJHtQTn0tYWxzYSBcCisgICAgJHtQTn0tY29uZmlnIFwKKyAgICBnc3RyZWFtZXIxLjAtJHtQTn0gXAorICAgIGxpYiR7UE59IFwKKyAgICBsaWIke1BOfS1tb2R1bGVzIFwKKyIKKworUkRFUEVORFNfbGliJHtQTn0gKz0gImxpYiR7UE59LW1vZHVsZXMgJHtQTn0tc3BhLXBsdWdpbnMiCisKK0ZJTEVTXyR7UE59ID0gIlwKKyAgICAke3N5c2NvbmZkaXJ9L3BpcGV3aXJlL3BpcGV3aXJlLmNvbmYgXAorICAgICR7YmluZGlyfS9waXBld2lyZSogXAorICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9LyogXAorIgorRklMRVNfbGliJHtQTn0gPSAiXAorICAgICR7bGliZGlyfS9saWJwaXBld2lyZS0qLnNvLiogXAorIgorRklMRVNfbGliJHtQTn0tbW9kdWxlcyA9ICJcCisgICAgJHtsaWJkaXJ9L3BpcGV3aXJlLSovKiBcCisiCitGSUxFU18ke1BOfS1zcGEtcGx1Z2lucyA9ICJcCisgICAgJHtiaW5kaXJ9L3NwYS0qIFwKKyAgICAke2xpYmRpcn0vc3BhLyogXAorIgorRklMRVNfJHtQTn0tYWxzYSA9ICJcCisgICAgJHtsaWJkaXJ9L2Fsc2EtbGliLyogXAorICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1waXBld2lyZS5jb25mIFwKKyIKK0ZJTEVTX2dzdHJlYW1lcjEuMC0ke1BOfSA9ICJcCisgICAgJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKiBcCisiCisKK0NPTkZGSUxFU18ke1BOfSA9ICJcCisgICAgJHtzeXNjb25mZGlyfS9waXBld2lyZS9waXBld2lyZS5jb25mIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3BpcGV3aXJlL3BpcGV3aXJlX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3BpcGV3aXJlL3BpcGV3aXJlX2dpdC5iYgppbmRleCBiY2IzMDE1Li4xYTQxNWMxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9waXBld2lyZS9waXBld2lyZV9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvcGlwZXdpcmUvcGlwZXdpcmVfZ2l0LmJiCkBAIC0yLDE0ICsyLDE0IEBACiBBVVRIT1IgPSAiV2ltIFRheW1hbnMgPHd0YXltYW5zQHJlZGhhdC5jb20+IgogSE9NRVBBR0UgPSAiaHR0cHM6Ly9waXBld2lyZS5vcmciCiBTRUNUSU9OID0gIm11bHRpbWVkaWEiCi1MSUNFTlNFID0gIkxHUEwtMi4xIgorTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gIiBcCi0gICAgZmlsZTovL0xJQ0VOU0U7bWQ1PWQ4MTUzYzZlNjU5ODZmODYyYTA1NTBjYTc0YTNlZDczIFwKLSAgICBmaWxlOi8vTEdQTDttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAorICAgIGZpbGU6Ly9MSUNFTlNFO21kNT1lMmMwYjdkODZkMDRlNzE2YTNjNGM5YWIzNDI2MGU2OSBcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTk3YmU5NmNhNGZhYjIzZTk2NTdmZmE1OTBiOTMxYzFhIFwKICIKIERFUEVORFMgPSAiYWxzYS1saWIgZGJ1cyB1ZGV2IgotU1JDUkVWID0gIjE0YzExYzBmZTRkMzY2YmFkNGNmZWNkZWU5N2I2NjUyZmY5ZWQ2M2QiCi1QViA9ICIwLjIuNyIKK1NSQ1JFViA9ICI3NGExNjMyZjA3MjA4ODZkNWIzYjZjMjNlZThmY2Q2YzAzY2E3YWFjIgorUFYgPSAiMC4zLjEiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9QaXBlV2lyZS9waXBld2lyZSIKIApAQCAtMTgsMTMgKzE4LDIxIEBACiBpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBzeXN0ZW1kIG1hbnBhZ2VzCiAKIFBBQ0tBR0VDT05GSUcgPz89ICJcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSBcCi0gICAgZ3N0cmVhbWVyIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV0b290aCcsICdibHVleicsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8gc3lzdGVtZCB2dWxrYW4nLCBkKX0gXAorICAgIGphY2sgZ3N0cmVhbWVyIFwKICIKIAotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItRHN5c3RlbWQ9dHJ1ZSwtRHN5c3RlbWQ9ZmFsc2Usc3lzdGVtZCIKLVBBQ0tBR0VDT05GSUdbZ3N0cmVhbWVyXSA9ICItRGdzdHJlYW1lcj1lbmFibGVkLC1EZ3N0cmVhbWVyPWRpc2FibGVkLGdsaWItMi4wIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgorUEFDS0FHRUNPTkZJR1tibHVlel0gPSAiLURibHVlejU9dHJ1ZSwtRGJsdWV6NT1mYWxzZSxibHVlejUgc2JjIgorUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItRGphY2s9dHJ1ZSwtRGphY2s9ZmFsc2UsamFjayIKK1BBQ0tBR0VDT05GSUdbZ3N0cmVhbWVyXSA9ICItRGdzdHJlYW1lcj10cnVlLC1EZ3N0cmVhbWVyPWZhbHNlLGdsaWItMi4wIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgogUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLURtYW49dHJ1ZSwtRG1hbj1mYWxzZSxsaWJ4bWwtcGFyc2VyLXBlcmwtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItRHBpcGV3aXJlLXB1bHNlYXVkaW89dHJ1ZSwtRHBpcGV3aXJlLXB1bHNlYXVkaW89ZmFsc2UscHVsc2VhdWRpbyIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLURzeXN0ZW1kPXRydWUsLURzeXN0ZW1kPWZhbHNlLHN5c3RlbWQiCitQQUNLQUdFQ09ORklHW3Z1bGthbl0gPSAiLUR2dWxrYW49dHJ1ZSwtRHZ1bGthbj1mYWxzZSx2dWxrYW4tbG9hZGVyIgorCitMREZMQUdTX2FwcGVuZF9taXBzYXJjaCA9ICIgLWxhdG9taWMiCitMREZMQUdTX2FwcGVuZF94ODYgPSAiIC1sYXRvbWljIgogCiBQQUNLQUdFUyA9KyAiXAogICAgICR7UE59LXNwYS1wbHVnaW5zIFwKQEAgLTMzLDI4ICs0MSwzMSBAQAogICAgIGdzdHJlYW1lcjEuMC0ke1BOfSBcCiAgICAgbGliJHtQTn0gXAogICAgIGxpYiR7UE59LW1vZHVsZXMgXAorICAgIGxpYiR7UE59LWphY2sgXAogIgogCiBSREVQRU5EU19saWIke1BOfSArPSAibGliJHtQTn0tbW9kdWxlcyAke1BOfS1zcGEtcGx1Z2lucyIKIAogRklMRVNfJHtQTn0gPSAiXAogICAgICR7c3lzY29uZmRpcn0vcGlwZXdpcmUvcGlwZXdpcmUuY29uZiBcCisgICAgJHtiaW5kaXJ9L3B3LSogXAogICAgICR7YmluZGlyfS9waXBld2lyZSogXAogICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9LyogXAogIgogRklMRVNfbGliJHtQTn0gPSAiXAogICAgICR7bGliZGlyfS9saWJwaXBld2lyZS0qLnNvLiogXAorICAgICR7bGliZGlyfS9saWJqYWNrLSouc28uKiBcCisgICAgJHtsaWJkaXJ9L2xpYnB1bHNlLSouc28uKiBcCiAiCiBGSUxFU19saWIke1BOfS1tb2R1bGVzID0gIlwKICAgICAke2xpYmRpcn0vcGlwZXdpcmUtKi8qIFwKICIKIEZJTEVTXyR7UE59LXNwYS1wbHVnaW5zID0gIlwKICAgICAke2JpbmRpcn0vc3BhLSogXAotICAgICR7bGliZGlyfS9zcGEvKiBcCisgICAgJHtsaWJkaXJ9L3NwYS0qLyogXAogIgogRklMRVNfJHtQTn0tYWxzYSA9ICJcCiAgICAgJHtsaWJkaXJ9L2Fsc2EtbGliLyogXAotICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1waXBld2lyZS5jb25mIFwKICIKIEZJTEVTX2dzdHJlYW1lcjEuMC0ke1BOfSA9ICJcCiAgICAgJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKiBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2RfMy4xOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZF8zLjE5LmJiCmluZGV4IDlmZGJiZjIuLmY3NGViZGEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZF8zLjE5LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZF8zLjE5LmJiCkBAIC0yLDcgKzIsNyBAQAogU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCiBMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTAxNzY0YzM1YWUzNGQ5NTIxOTQ0YmI2YWIzMTJhZjUzIgotREVQRU5EUyA9ICJkYnVzIG5jdXJzZXMgcHl0aG9uIHB5dGhvbjMgcHBzLXRvb2xzIgorREVQRU5EUyA9ICJkYnVzIG5jdXJzZXMgcHl0aG9uMyBwcHMtdG9vbHMiCiBQUk9WSURFUyA9ICJ2aXJ0dWFsL2dwc2QiCiAKIFNSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmd6IFwKQEAgLTEyLDcgKzEyLDcgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJiM2JmODg3MDY3OTRlYjhlNWYyYzI1NDNiZjdiYTg3YiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIyN2RkMjRkNDViMmFjNjliYWFiNzkzM2RhMmJmNmFlNWZiMGJlOTAxMzBmNjdlNzUzYzExMGEzNDc3MTU1ZjM5IgogCi1pbmhlcml0IHNjb25zIHVwZGF0ZS1yYy5kIHB5dGhvbi1kaXIgcHl0aG9ubmF0aXZlIHN5c3RlbWQgdXBkYXRlLWFsdGVybmF0aXZlcworaW5oZXJpdCBzY29ucyB1cGRhdGUtcmMuZCBweXRob24zLWRpciBweXRob24zbmF0aXZlIHN5c3RlbWQgdXBkYXRlLWFsdGVybmF0aXZlcwogCiBJTklUU0NSSVBUX1BBQ0tBR0VTID0gImdwc2QtY29uZiIKIElOSVRTQ1JJUFRfTkFNRSA9ICJncHNkIgpAQCAtODQsNyArODQsNyBAQAogICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3N5c3RlbWQvJHtCUE59LnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8ke0JQTn0uc29ja2V0CiB9CiAKLVBBQ0tBR0VTID0rICJsaWJncHMgbGliZ3BzZCBweXRob24tcHlncHMgZ3BzZC11ZGV2IGdwc2QtY29uZiBncHNkLWdwc2N0bCBncHMtdXRpbHMiCitQQUNLQUdFUyA9KyAibGliZ3BzIGxpYmdwc2QgcHl0aG9uMy1weWdwcyBncHNkLXVkZXYgZ3BzZC1jb25mIGdwc2QtZ3BzY3RsIGdwcy11dGlscyIKIAogUlBST1ZJREVTXyR7UE59LWRiZyArPSAicHl0aG9uLXB5Z3BzLWRiZyIKIApAQCAtMTE0LDE3ICsxMTQsMTcgQEAKIFNVTU1BUllfZ3BzLXV0aWxzID0gIlV0aWxzIHVzZWQgZm9yIHNpbXVsYXRpbmcsIG1vbml0b3JpbmcsLi4uIGEgR1BTIgogIyBQeXRob24gZmlsZXMgYXJlIHJlcXVpcmVkIGZvciBncHMvZmFrZSwgcmVxdWlyZWQgZm9yIGdwc2Zha2UuCiBGSUxFU19ncHMtdXRpbHMgPSAiJHtiaW5kaXJ9LyogJHtsaWJkaXJ9L2dwcy8qLnB5ICR7bGliZGlyfS9ncHMvKi5zbyIKLVJERVBFTkRTX2dwcy11dGlscyA9ICJweXRob24tcHlncHMiCitSREVQRU5EU19ncHMtdXRpbHMgPSAicHl0aG9uMy1weWdwcyIKIAotU1VNTUFSWV9weXRob24tcHlncHMgPSAiUHl0aG9uIGJpbmRpbmdzIHRvIGdwc2QiCi1GSUxFU19weXRob24tcHlncHMgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiAke2xpYmRpcn0vZ3BzLyoucHkgJHtsaWJkaXJ9LyouZWdnLWluZm8iCi1SREVQRU5EU19weXRob24tcHlncHMgPSAiIFwKLSAgICBweXRob24tY29yZSBcCi0gICAgcHl0aG9uLWlvIFwKLSAgICBweXRob24tdGhyZWFkaW5nIFwKLSAgICBweXRob24tdGVybWluYWwgXAorU1VNTUFSWV9weXRob24zLXB5Z3BzID0gIlB5dGhvbiBiaW5kaW5ncyB0byBncHNkIgorRklMRVNfcHl0aG9uMy1weWdwcyA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qICR7bGliZGlyfS9ncHMvKi5weSAke2xpYmRpcn0vKi5lZ2ctaW5mbyIKK1JERVBFTkRTX3B5dGhvbjMtcHlncHMgPSAiIFwKKyAgICBweXRob24zLWNvcmUgXAorICAgIHB5dGhvbjMtaW8gXAorICAgIHB5dGhvbjMtdGhyZWFkaW5nIFwKKyAgICBweXRob24zLXRlcm1pbmFsIFwKICAgICBncHNkIFwKLSAgICBweXRob24tanNvbiIKKyAgICBweXRob24zLWpzb24iCiAKIFJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKIFJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL3Byb2ovcHJval82LjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL3Byb2ovcHJval82LjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmEyNjlkMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9wcm9qL3Byb2pfNi4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TVU1NQVJZID0gIlBST0ouNCAtIENhcnRvZ3JhcGhpYyBQcm9qZWN0aW9ucyBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3RyYWMub3NnZW8ub3JnL3Byb2ovIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc0ZDlhYWVjNWZhMGNkNzM0MzQxZThjNGRjOTFiNjA4IgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5vc2dlby5vcmcvJHtCUE59LyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1Y2RlNTU2NTQ1ODI4YmVhZmZiZTUwYjFiYjAzODQ4MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMzAwYzBmODcyZjYzMmFkN2Y4ZWI2MDcyNWVkYmYxNGYwZjhmNTJkYjc0MGEzYWIyM2U3Yjk0ZjFjZDIyYTUwIgotCi1ERVBFTkRTID0gInNxbGl0ZTMgc3FsaXRlMy1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wcm9qIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vcHJvai9wcm9qXzcuMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vcHJvai9wcm9qXzcuMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0Njc0MjQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9wcm9qL3Byb2pfNy4wLjAuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJQUk9KLjQgLSBDYXJ0b2dyYXBoaWMgUHJvamVjdGlvbnMgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly90cmFjLm9zZ2VvLm9yZy9wcm9qLyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NGQ5YWFlYzVmYTBjZDczNDM0MWU4YzRkYzkxYjYwOCIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQub3NnZW8ub3JnLyR7QlBOfS8ke0JQfS50YXIuZ3oiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWUwZTE0YzFiZDJmOTQyOWIxYTI4OTk5MjQwMzA0YzAzNDJlZDczOWViYWVhM2Q0ZmY0NGM1ODViMTA5N2JlOCIKKworREVQRU5EUyA9ICJzcWxpdGUzIHNxbGl0ZTMtbmF0aXZlIHRpZmYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQorCitQQUNLQUdFQ09ORklHID89ICJjdXJsIgorCitQQUNLQUdFQ09ORklHW2N1cmxdID0gIiwtLXdpdGhvdXQtY3VybCxjdXJsIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wcm9qIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXByaW50aW5nL2N1cHMvY3Vwcy1maWx0ZXJzXzEuMjYuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1wcmludGluZy9jdXBzL2N1cHMtZmlsdGVyc18xLjI2LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3NmVmMDkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXByaW50aW5nL2N1cHMvY3Vwcy1maWx0ZXJzXzEuMjYuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotaW5jbHVkZSBjdXBzLWZpbHRlcnMuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5NzAwOTU1OTZiZjJiOGNmZTkxYWM5MWMwYjUxMjk3YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMDY5YWVmMTM1ODUyMmYxOTAxYTY0NzQ5ZWM3NTNkMjhhMmQ2YTgzMjc1OGJjZTU4ZmZjZDcyMmIyOGMwZTY2IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXByaW50aW5nL2N1cHMvY3Vwcy1maWx0ZXJzXzEuMjcuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1wcmludGluZy9jdXBzL2N1cHMtZmlsdGVyc18xLjI3LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVjNGE5MgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1wcmludGluZy9jdXBzL2N1cHMtZmlsdGVyc18xLjI3LjIuYmIKQEAgLTAsMCArMSw0IEBACitpbmNsdWRlIGN1cHMtZmlsdGVycy5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gIjkwZWJjYWUzMWYyZWFiZDgwMjIzNjQwODY0NmIxZGQ5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE3NGEyYTVjOTE5YmY4OGM2M2NlZDY5MmEyMTcwYWRkNmMyY2Q3MGZmMDZjNDliY2VhMzJlOWNmNTY5NjA0OTIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2VjdXJpdHkvbm1hcC9maWxlcy8wMDAxLU1ha2UtbmRpZmYtc3VwcG9ydC1weXRob24zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L25tYXAvZmlsZXMvMDAwMS1NYWtlLW5kaWZmLXN1cHBvcnQtcHl0aG9uMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2ExOGIwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L25tYXAvZmlsZXMvMDAwMS1NYWtlLW5kaWZmLXN1cHBvcnQtcHl0aG9uMy5wYXRjaApAQCAtMCwwICsxLDE3MjAgQEAKK0Zyb20gYmJiZjQ3NGIyZWJkYmRhYzRkNTU3ZTMzNTEyMTBmM2ZlMjE3NWMzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pbmdsaSBZdSA8bWluZ2xpLnl1QHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDE0IEZlYiAyMDIwIDEwOjA5OjU1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2UgbmRpZmYgc3VwcG9ydCBweXRob24zCisKK0JhY2twb3J0IGEgcGF0Y2ggZnJvbSBkZWJpYW4gdG8gbWFrZSBuZGlmZiBzdXBwb3J0CitweXRob24zLgorCitSZWZlciB0byBodHRwczovL3NvdXJjZXMuZGViaWFuLm9yZy9kYXRhL21haW4vbi9ubWFwLzcuODArZGZzZzEtMi9kZWJpYW4vcGF0Y2hlcy8wMDA0LVB5dGhvbjMtcG9ydC1vZi1uZGlmZi5wYXRjaAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWluZ2xpIFl1IDxtaW5nbGkueXVAd2luZHJpdmVyLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluICAgICAgICAgICAgICAgICAgIHwgIDEyICstCisgbmRpZmYvbmRpZmYucHkgICAgICAgICAgICAgICAgfCA0OTUgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQorIG5kaWZmL25kaWZmdGVzdC5weSAgICAgICAgICAgIHwgIDk0ICsrKy0tLS0KKyBuZGlmZi9zY3JpcHRzL25kaWZmICAgICAgICAgICB8ICAxNCArLQorIG5kaWZmL3NldHVwLnB5ICAgICAgICAgICAgICAgIHwgIDM0ICstLQorIG5kaWZmL3Rlc3Qtc2NhbnMvYW5vbnltaXplLnB5IHwgIDE4ICstCisgNiBmaWxlcyBjaGFuZ2VkLCAzMzMgaW5zZXJ0aW9ucygrKSwgMzM0IGRlbGV0aW9ucygtKQorIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgbmRpZmYvc2V0dXAucHkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IGVlZTg4NjMuLjMyZjg2YmEgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC0zNSw2ICszNSw3IEBAIFpFTk1BUERJUiA9IEBaRU5NQVBESVJACisgTkRJRkZESVIgPSBATkRJRkZESVJACisgTlBJTkdESVIgPSBATlBJTkdESVJACisgUFlUSE9OID0gQFBZVEhPTkAKKytQWVRIT04zID0gL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBERUZTID0gQERFRlNAIC1ETk1BUF9QTEFURk9STT1cIiQoTk1BUF9QTEFURk9STSlcIiAtRE5NQVBEQVRBRElSPVwiJChubWFwZGF0YWRpcilcIgorICMgV2l0aCBHQ0MsIGFkZCBleHRyYSBzZWN1cml0eSBjaGVja3MgdG8gc291cmNlIGNvZGUuCisgIyBodHRwOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLXBhdGNoZXMvMjAwNC0wOS9tc2cwMjA1NS5odG1sCitAQCAtMjYwLDcgKzI2MSw3IEBAIGNsZWFuLXplbm1hcDoKKyAJcm0gLWYgJChaRU5NQVBESVIpL3plbm1hcENvcmUvTmFtZS5weWMKKyAKKyBjbGVhbi1uZGlmZjoKKy0JLWNkICQoTkRJRkZESVIpICYmICQoUFlUSE9OKSBzZXR1cC5weSBjbGVhbiAtLWFsbAorKwktY2QgJChORElGRkRJUikgJiYgJChQWVRIT04zKSBzZXR1cC5weSBjbGVhbiAtLWFsbAorIAorIGNsZWFuLW5waW5nOgorIAktY2QgJChOUElOR0RJUikgJiYgJChNQUtFKSBjbGVhbgorQEAgLTM2OCw2ICszNjksNyBAQCB0ZXN0cy9jaGVja19kbnM6ICQoT0JKUykKKyAjIHRoaXMgYXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBpbnRlcnByZXRlciB3aGVuZXZlciB3ZSdyZSBub3QgZG9pbmcgYQorICMgbG9jYWwgaW5zdGFsbGF0aW9uLgorIERFRkFVTFRfUFlUSE9OX1BBVEggPSAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrREVGQVVMVF9QWVRIT04zX1BBVEggPSAvdXNyL2Jpbi9lbnYgcHl0aG9uMworIAorIGJ1aWxkLXplbm1hcDogJChaRU5NQVBESVIpL3NldHVwLnB5ICQoWkVOTUFQRElSKS96ZW5tYXBDb3JlL1ZlcnNpb24ucHkKKyAjIFdoZW4gREVTVERJUiBpcyBkZWZpbmVkLCBhc3N1bWUgd2UncmUgYnVpbGRpbmcgYW4gZXhlY3V0YWJsZQorQEAgLTM4OCwxMyArMzkwLDEzIEBAIGluc3RhbGwtemVubWFwOiAkKFpFTk1BUERJUikvc2V0dXAucHkKKyAJbG4gLXNmIHplbm1hcCAkKERFU1RESVIpJChiaW5kaXIpL3hubWFwCisgCisgYnVpbGQtbmRpZmY6CistCWNkICQoTkRJRkZESVIpICYmICQoUFlUSE9OKSBzZXR1cC5weSBidWlsZCAkKGlmICQoREVTVERJUiksLS1leGVjdXRhYmxlICIkKERFRkFVTFRfUFlUSE9OX1BBVEgpIikKKysJY2QgJChORElGRkRJUikgJiYgJChQWVRIT04zKSBzZXR1cC5weSBidWlsZCAkKGlmICQoREVTVERJUiksLS1leGVjdXRhYmxlICIkKERFRkFVTFRfUFlUSE9OM19QQVRIKSIpCisgCisgYnVpbGQtbnBpbmc6ICQoTlBJTkdESVIpL01ha2VmaWxlIGJ1aWxkLW5iYXNlIGJ1aWxkLW5zb2NrIGJ1aWxkLW5ldHV0aWwgJChOUElOR0RJUikvbnBpbmcuaCBARE5FVF9CVUlMREAgQFBDQVBfQlVJTERACisgCUBjZCAkKE5QSU5HRElSKSAmJiAkKE1BS0UpCisgCisgaW5zdGFsbC1uZGlmZjoKKy0JY2QgJChORElGRkRJUikgJiYgJChQWVRIT04pIHNldHVwLnB5IGluc3RhbGwgLS1wcmVmaXggIiQocHJlZml4KSIgLS1pbnN0YWxsLWxpYj0iJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iICQoaWYgJChERVNURElSKSwtLXJvb3QgIiQoREVTVERJUikiKQorKwljZCAkKE5ESUZGRElSKSAmJiAkKFBZVEhPTjMpIHNldHVwLnB5IGluc3RhbGwgLS1wcmVmaXggIiQocHJlZml4KSIgLS1pbnN0YWxsLWxpYj0iJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iICQoaWYgJChERVNURElSKSwtLXJvb3QgIiQoREVTVERJUikiKQorIAorIE5TRV9GSUxFUyA9IHNjcmlwdHMvc2NyaXB0LmRiIHNjcmlwdHMvKi5uc2UKKyBOU0VfTElCX0xVQV9GSUxFUyA9IG5zZWxpYi8qLmx1YSBuc2VsaWIvKi5sdWFkb2MKK0BAIC00NDMsNyArNDQ1LDcgQEAgdW5pbnN0YWxsLXplbm1hcDoKKyAJcm0gLWYgJChERVNURElSKSQoYmluZGlyKS94bm1hcAorIAorIHVuaW5zdGFsbC1uZGlmZjoKKy0JY2QgJChORElGRkRJUikgJiYgJChQWVRIT04pIHNldHVwLnB5IHVuaW5zdGFsbAorKwljZCAkKE5ESUZGRElSKSAmJiAkKFBZVEhPTjMpIHNldHVwLnB5IHVuaW5zdGFsbAorIAorIHVuaW5zdGFsbC1uY2F0OgorIAlAY2QgJChOQ0FURElSKSAmJiAkKE1BS0UpIHVuaW5zdGFsbAorQEAgLTQ1OCw3ICs0NjAsNyBAQCBjaGVjay1uY2F0OgorIAlAY2QgJChOQ0FURElSKSAmJiAkKE1BS0UpIGNoZWNrCisgCisgY2hlY2stbmRpZmY6CistCUBjZCAkKE5ESUZGRElSKSAmJiAkKFBZVEhPTikgbmRpZmZ0ZXN0LnB5CisrCUBjZCAkKE5ESUZGRElSKSAmJiAkKFBZVEhPTjMpIG5kaWZmdGVzdC5weQorIAorIGNoZWNrLW5zb2NrOgorIAlAY2QgJChOU09DS0RJUikvc3JjICYmICQoTUFLRSkgY2hlY2sKK2RpZmYgLS1naXQgYS9uZGlmZi9uZGlmZi5weSBiL25kaWZmL25kaWZmLnB5CitpbmRleCAwNDMyNzNmLi5hYmJkMWM1IDEwMDc1NQorLS0tIGEvbmRpZmYvbmRpZmYucHkKKysrKyBiL25kaWZmL25kaWZmLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgCisgIyBOZGlmZgorICMKK0BAIC0yNiwxMSArMjYsMTEgQEAgeG1sLl9fcGF0aF9fID0gW3ggZm9yIHggaW4geG1sLl9fcGF0aF9fIGlmICJfeG1scGx1cyIgbm90IGluIHhdCisgaW1wb3J0IHhtbC5zYXgKKyBpbXBvcnQgeG1sLnNheC5zYXh1dGlscworIGltcG9ydCB4bWwuZG9tLm1pbmlkb20KKy1mcm9tIFN0cmluZ0lPIGltcG9ydCBTdHJpbmdJTworK2Zyb20gaW8gaW1wb3J0IFN0cmluZ0lPCisgCisgdmVyYm9zZSA9IEZhbHNlCisgCistTkRJRkZfWE1MX1ZFUlNJT04gPSB1IjEiCisrTkRJRkZfWE1MX1ZFUlNJT04gPSAiMSIKKyAKKyAKKyBjbGFzcyBPdmVycmlkZUVudGl0eVJlc29sdmVyKHhtbC5zYXguaGFuZGxlci5FbnRpdHlSZXNvbHZlcik6CitAQCAtNzgsMzUgKzc4LDM1IEBAIGNsYXNzIFNjYW4ob2JqZWN0KToKKyAgICAgZGVmIHdyaXRlX25tYXBydW5fb3BlbihzZWxmLCB3cml0ZXIpOgorICAgICAgICAgYXR0cnMgPSB7fQorICAgICAgICAgaWYgc2VsZi5zY2FubmVyIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgIGF0dHJzW3Uic2Nhbm5lciJdID0gc2VsZi5zY2FubmVyCisrICAgICAgICAgICAgYXR0cnNbInNjYW5uZXIiXSA9IHNlbGYuc2Nhbm5lcgorICAgICAgICAgaWYgc2VsZi5hcmdzIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgIGF0dHJzW3UiYXJncyJdID0gc2VsZi5hcmdzCisrICAgICAgICAgICAgYXR0cnNbImFyZ3MiXSA9IHNlbGYuYXJncworICAgICAgICAgaWYgc2VsZi5zdGFydF9kYXRlIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgIGF0dHJzW3Uic3RhcnQiXSA9ICIlZCIgJSB0aW1lLm1rdGltZShzZWxmLnN0YXJ0X2RhdGUudGltZXR1cGxlKCkpCistICAgICAgICAgICAgYXR0cnNbdSJzdGFydHN0ciJdID0gc2VsZi5zdGFydF9kYXRlLnN0cmZ0aW1lKAorKyAgICAgICAgICAgIGF0dHJzWyJzdGFydCJdID0gIiVkIiAlIHRpbWUubWt0aW1lKHNlbGYuc3RhcnRfZGF0ZS50aW1ldHVwbGUoKSkKKysgICAgICAgICAgICBhdHRyc1sic3RhcnRzdHIiXSA9IHNlbGYuc3RhcnRfZGF0ZS5zdHJmdGltZSgKKyAgICAgICAgICAgICAgICAgICAgICIlYSAlYiAlZCAlSDolTTolUyAlWSIpCisgICAgICAgICBpZiBzZWxmLnZlcnNpb24gaXMgbm90IE5vbmU6CistICAgICAgICAgICAgYXR0cnNbdSJ2ZXJzaW9uIl0gPSBzZWxmLnZlcnNpb24KKy0gICAgICAgIHdyaXRlci5zdGFydEVsZW1lbnQodSJubWFwcnVuIiwgYXR0cnMpCisrICAgICAgICAgICAgYXR0cnNbInZlcnNpb24iXSA9IHNlbGYudmVyc2lvbgorKyAgICAgICAgd3JpdGVyLnN0YXJ0RWxlbWVudCgibm1hcHJ1biIsIGF0dHJzKQorIAorICAgICBkZWYgd3JpdGVfbm1hcHJ1bl9jbG9zZShzZWxmLCB3cml0ZXIpOgorLSAgICAgICAgd3JpdGVyLmVuZEVsZW1lbnQodSJubWFwcnVuIikKKysgICAgICAgIHdyaXRlci5lbmRFbGVtZW50KCJubWFwcnVuIikKKyAKKyAgICAgZGVmIG5tYXBydW5fdG9fZG9tX2ZyYWdtZW50KHNlbGYsIGRvY3VtZW50KToKKyAgICAgICAgIGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkKKy0gICAgICAgIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUibm1hcHJ1biIpCisrICAgICAgICBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibm1hcHJ1biIpCisgICAgICAgICBpZiBzZWxmLnNjYW5uZXIgaXMgbm90IE5vbmU6CistICAgICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUodSJzY2FubmVyIiwgc2VsZi5zY2FubmVyKQorKyAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCJzY2FubmVyIiwgc2VsZi5zY2FubmVyKQorICAgICAgICAgaWYgc2VsZi5hcmdzIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKHUiYXJncyIsIHNlbGYuYXJncykKKysgICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgiYXJncyIsIHNlbGYuYXJncykKKyAgICAgICAgIGlmIHNlbGYuc3RhcnRfZGF0ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgKKy0gICAgICAgICAgICAgICAgICAgIHUic3RhcnQiLCAiJWQiICUgdGltZS5ta3RpbWUoc2VsZi5zdGFydF9kYXRlLnRpbWV0dXBsZSgpKSkKKysgICAgICAgICAgICAgICAgICAgICJzdGFydCIsICIlZCIgJSB0aW1lLm1rdGltZShzZWxmLnN0YXJ0X2RhdGUudGltZXR1cGxlKCkpKQorICAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKAorLSAgICAgICAgICAgICAgICAgICAgdSJzdGFydHN0ciIsCisrICAgICAgICAgICAgICAgICAgICAic3RhcnRzdHIiLAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kYXRlLnN0cmZ0aW1lKCIlYSAlYiAlZCAlSDolTTolUyAlWSIpKQorICAgICAgICAgaWYgc2VsZi52ZXJzaW9uIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKHUidmVyc2lvbiIsIHNlbGYudmVyc2lvbikKKysgICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgidmVyc2lvbiIsIHNlbGYudmVyc2lvbikKKyAgICAgICAgIGZyYWcuYXBwZW5kQ2hpbGQoZWxlbSkKKyAgICAgICAgIHJldHVybiBmcmFnCisgCitAQCAtMTM2LDE3ICsxMzYsMTcgQEAgY2xhc3MgSG9zdChvYmplY3QpOgorIAorICAgICBkZWYgZm9ybWF0X25hbWUoc2VsZik6CisgICAgICAgICAiIiJSZXR1cm4gYSBodW1hbi1yZWFkYWJsZSBpZGVudGlmaWVyIGZvciB0aGlzIGhvc3QuIiIiCistICAgICAgICBhZGRyZXNzX3MgPSB1IiwgIi5qb2luKGEucyBmb3IgYSBpbiBzb3J0ZWQoc2VsZi5hZGRyZXNzZXMpKQorLSAgICAgICAgaG9zdG5hbWVfcyA9IHUiLCAiLmpvaW4oc29ydGVkKHNlbGYuaG9zdG5hbWVzKSkKKysgICAgICAgIGFkZHJlc3NfcyA9ICIsICIuam9pbihhLnMgZm9yIGEgaW4gc29ydGVkKHNlbGYuYWRkcmVzc2VzKSkKKysgICAgICAgIGhvc3RuYW1lX3MgPSAiLCAiLmpvaW4oc29ydGVkKHNlbGYuaG9zdG5hbWVzKSkKKyAgICAgICAgIGlmIGxlbihob3N0bmFtZV9zKSA+IDA6CisgICAgICAgICAgICAgaWYgbGVuKGFkZHJlc3NfcykgPiAwOgorLSAgICAgICAgICAgICAgICByZXR1cm4gdSIlcyAoJXMpIiAlIChob3N0bmFtZV9zLCBhZGRyZXNzX3MpCisrICAgICAgICAgICAgICAgIHJldHVybiAiJXMgKCVzKSIgJSAoaG9zdG5hbWVfcywgYWRkcmVzc19zKQorICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIHJldHVybiBob3N0bmFtZV9zCisgICAgICAgICBlbGlmIGxlbihhZGRyZXNzX3MpID4gMDoKKyAgICAgICAgICAgICByZXR1cm4gYWRkcmVzc19zCisgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIHJldHVybiB1IjxubyBuYW1lPiIKKysgICAgICAgICAgICByZXR1cm4gIjxubyBuYW1lPiIKKyAKKyAgICAgZGVmIGFkZF9wb3J0KHNlbGYsIHBvcnQpOgorICAgICAgICAgc2VsZi5wb3J0c1twb3J0LnNwZWNdID0gcG9ydAorQEAgLTE2Myw0NiArMTYzLDQ2IEBAIGNsYXNzIEhvc3Qob2JqZWN0KToKKyAgICAgICAgIHJldHVybiBzdGF0ZSBpcyBOb25lIG9yIHN0YXRlIGluIHNlbGYuZXh0cmFwb3J0cworIAorICAgICBkZWYgZXh0cmFwb3J0c19zdHJpbmcoc2VsZik6CistICAgICAgICBsaXN0ID0gWyhjb3VudCwgc3RhdGUpIGZvciAoc3RhdGUsIGNvdW50KSBpbiBzZWxmLmV4dHJhcG9ydHMuaXRlbXMoKV0KKysgICAgICAgIGxvY2FsbGlzdCA9IFsoY291bnQsIHN0YXRlKSBmb3IgKHN0YXRlLCBjb3VudCkgaW4gbGlzdChzZWxmLmV4dHJhcG9ydHMuaXRlbXMoKSldCisgICAgICAgICAjIFJldmVyc2Utc29ydCBieSBjb3VudC4KKy0gICAgICAgIGxpc3Quc29ydChyZXZlcnNlPVRydWUpCistICAgICAgICByZXR1cm4gdSIsICIuam9pbigKKy0gICAgICAgICAgICAgICAgW3UiJWQgJXMgcG9ydHMiICUgKGNvdW50LCBzdGF0ZSkgZm9yIChjb3VudCwgc3RhdGUpIGluIGxpc3RdKQorKyAgICAgICAgbG9jYWxsaXN0LnNvcnQocmV2ZXJzZT1UcnVlKQorKyAgICAgICAgcmV0dXJuICIsICIuam9pbigKKysgICAgICAgICAgICAgICAgWyIlZCAlcyBwb3J0cyIgJSAoY291bnQsIHN0YXRlKSBmb3IgKGNvdW50LCBzdGF0ZSkgaW4gbG9jYWxsaXN0XSkKKyAKKyAgICAgZGVmIHN0YXRlX3RvX2RvbV9mcmFnbWVudChzZWxmLCBkb2N1bWVudCk6CisgICAgICAgICBmcmFnID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpCisgICAgICAgICBpZiBzZWxmLnN0YXRlIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUic3RhdHVzIikKKy0gICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSh1InN0YXRlIiwgc2VsZi5zdGF0ZSkKKysgICAgICAgICAgICBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3RhdHVzIikKKysgICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgic3RhdGUiLCBzZWxmLnN0YXRlKQorICAgICAgICAgICAgIGZyYWcuYXBwZW5kQ2hpbGQoZWxlbSkKKyAgICAgICAgIHJldHVybiBmcmFnCisgCisgICAgIGRlZiBob3N0bmFtZV90b19kb21fZnJhZ21lbnQoc2VsZiwgZG9jdW1lbnQsIGhvc3RuYW1lKToKKyAgICAgICAgIGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkKKy0gICAgICAgIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUiaG9zdG5hbWUiKQorLSAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUodSJuYW1lIiwgaG9zdG5hbWUpCisrICAgICAgICBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaG9zdG5hbWUiKQorKyAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCBob3N0bmFtZSkKKyAgICAgICAgIGZyYWcuYXBwZW5kQ2hpbGQoZWxlbSkKKyAgICAgICAgIHJldHVybiBmcmFnCisgCisgICAgIGRlZiBleHRyYXBvcnRzX3RvX2RvbV9mcmFnbWVudChzZWxmLCBkb2N1bWVudCk6CisgICAgICAgICBmcmFnID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpCistICAgICAgICBmb3Igc3RhdGUsIGNvdW50IGluIHNlbGYuZXh0cmFwb3J0cy5pdGVtcygpOgorLSAgICAgICAgICAgIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUiZXh0cmFwb3J0cyIpCistICAgICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUodSJzdGF0ZSIsIHN0YXRlKQorLSAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKHUiY291bnQiLCB1bmljb2RlKGNvdW50KSkKKysgICAgICAgIGZvciBzdGF0ZSwgY291bnQgaW4gbGlzdChzZWxmLmV4dHJhcG9ydHMuaXRlbXMoKSk6CisrICAgICAgICAgICAgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImV4dHJhcG9ydHMiKQorKyAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCJzdGF0ZSIsIHN0YXRlKQorKyAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCJjb3VudCIsIHN0cihjb3VudCkpCisgICAgICAgICAgICAgZnJhZy5hcHBlbmRDaGlsZChlbGVtKQorICAgICAgICAgcmV0dXJuIGZyYWcKKyAKKyAgICAgZGVmIG9zX3RvX2RvbV9mcmFnbWVudChzZWxmLCBkb2N1bWVudCwgb3MpOgorICAgICAgICAgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQorLSAgICAgICAgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJvc21hdGNoIikKKy0gICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKHUibmFtZSIsIG9zKQorKyAgICAgICAgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9zbWF0Y2giKQorKyAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCBvcykKKyAgICAgICAgIGZyYWcuYXBwZW5kQ2hpbGQoZWxlbSkKKyAgICAgICAgIHJldHVybiBmcmFnCisgCisgICAgIGRlZiB0b19kb21fZnJhZ21lbnQoc2VsZiwgZG9jdW1lbnQpOgorICAgICAgICAgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQorLSAgICAgICAgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJob3N0IikKKysgICAgICAgIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJob3N0IikKKyAKKyAgICAgICAgIGlmIHNlbGYuc3RhdGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgZWxlbS5hcHBlbmRDaGlsZChzZWxmLnN0YXRlX3RvX2RvbV9mcmFnbWVudChkb2N1bWVudCkpCitAQCAtMjExLDEzICsyMTEsMTMgQEAgY2xhc3MgSG9zdChvYmplY3QpOgorICAgICAgICAgICAgIGVsZW0uYXBwZW5kQ2hpbGQoYWRkci50b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorIAorICAgICAgICAgaWYgbGVuKHNlbGYuaG9zdG5hbWVzKSA+IDA6CistICAgICAgICAgICAgaG9zdG5hbWVzX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUiaG9zdG5hbWVzIikKKysgICAgICAgICAgICBob3N0bmFtZXNfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImhvc3RuYW1lcyIpCisgICAgICAgICAgICAgZm9yIGhvc3RuYW1lIGluIHNlbGYuaG9zdG5hbWVzOgorICAgICAgICAgICAgICAgICBob3N0bmFtZXNfZWxlbS5hcHBlbmRDaGlsZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvc3RuYW1lX3RvX2RvbV9mcmFnbWVudChkb2N1bWVudCwgaG9zdG5hbWUpKQorICAgICAgICAgICAgIGVsZW0uYXBwZW5kQ2hpbGQoaG9zdG5hbWVzX2VsZW0pCisgCistICAgICAgICBwb3J0c19lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1InBvcnRzIikKKysgICAgICAgIHBvcnRzX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwb3J0cyIpCisgICAgICAgICBwb3J0c19lbGVtLmFwcGVuZENoaWxkKHNlbGYuZXh0cmFwb3J0c190b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgZm9yIHBvcnQgaW4gc29ydGVkKHNlbGYucG9ydHMudmFsdWVzKCkpOgorICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2V4dHJhcG9ydHMocG9ydC5zdGF0ZSk6CitAQCAtMjI2LDEzICsyMjYsMTMgQEAgY2xhc3MgSG9zdChvYmplY3QpOgorICAgICAgICAgICAgIGVsZW0uYXBwZW5kQ2hpbGQocG9ydHNfZWxlbSkKKyAKKyAgICAgICAgIGlmIGxlbihzZWxmLm9zKSA+IDA6CistICAgICAgICAgICAgb3NfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJvcyIpCisrICAgICAgICAgICAgb3NfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9zIikKKyAgICAgICAgICAgICBmb3Igb3MgaW4gc2VsZi5vczoKKyAgICAgICAgICAgICAgICAgb3NfZWxlbS5hcHBlbmRDaGlsZChzZWxmLm9zX3RvX2RvbV9mcmFnbWVudChkb2N1bWVudCwgb3MpKQorICAgICAgICAgICAgIGVsZW0uYXBwZW5kQ2hpbGQob3NfZWxlbSkKKyAKKyAgICAgICAgIGlmIGxlbihzZWxmLnNjcmlwdF9yZXN1bHRzKSA+IDA6CistICAgICAgICAgICAgaG9zdHNjcmlwdF9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1Imhvc3RzY3JpcHQiKQorKyAgICAgICAgICAgIGhvc3RzY3JpcHRfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImhvc3RzY3JpcHQiKQorICAgICAgICAgICAgIGZvciBzciBpbiBzZWxmLnNjcmlwdF9yZXN1bHRzOgorICAgICAgICAgICAgICAgICBob3N0c2NyaXB0X2VsZW0uYXBwZW5kQ2hpbGQoc3IudG9fZG9tX2ZyYWdtZW50KGRvY3VtZW50KSkKKyAgICAgICAgICAgICBlbGVtLmFwcGVuZENoaWxkKGhvc3RzY3JpcHRfZWxlbSkKK0BAIC0yNDYsNyArMjQ2LDcgQEAgY2xhc3MgQWRkcmVzcyhvYmplY3QpOgorICAgICAgICAgc2VsZi5zID0gcworIAorICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKy0gICAgICAgIHJldHVybiBzZWxmLl9fY21wX18ob3RoZXIpID09IDAKKysgICAgICAgIHJldHVybiBzZWxmLnNvcnRfa2V5KCkgPT0gb3RoZXIuc29ydF9rZXkoKQorIAorICAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgIHJldHVybiBub3Qgc2VsZi5fX2VxX18ob3RoZXIpCitAQCAtMjU0LDggKzI1NCw4IEBAIGNsYXNzIEFkZHJlc3Mob2JqZWN0KToKKyAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5zb3J0X2tleSgpKQorIAorLSAgICBkZWYgX19jbXBfXyhzZWxmLCBvdGhlcik6CistICAgICAgICByZXR1cm4gY21wKHNlbGYuc29ydF9rZXkoKSwgb3RoZXIuc29ydF9rZXkoKSkKKysgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisrICAgICAgICByZXR1cm4gc2VsZi5zb3J0X2tleSgpIDwgb3RoZXIuc29ydF9rZXkoKQorIAorICAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgIHJldHVybiBzdHIoc2VsZi5zKQorQEAgLTI2NCwyMSArMjY0LDIxIEBAIGNsYXNzIEFkZHJlc3Mob2JqZWN0KToKKyAgICAgICAgIHJldHVybiBzZWxmLnMKKyAKKyAgICAgZGVmIG5ldyh0eXBlLCBzKToKKy0gICAgICAgIGlmIHR5cGUgPT0gdSJpcHY0IjoKKysgICAgICAgIGlmIHR5cGUgPT0gImlwdjQiOgorICAgICAgICAgICAgIHJldHVybiBJUHY0QWRkcmVzcyhzKQorLSAgICAgICAgZWxpZiB0eXBlID09IHUiaXB2NiI6CisrICAgICAgICBlbGlmIHR5cGUgPT0gImlwdjYiOgorICAgICAgICAgICAgIHJldHVybiBJUHY2QWRkcmVzcyhzKQorLSAgICAgICAgZWxpZiB0eXBlID09IHUibWFjIjoKKysgICAgICAgIGVsaWYgdHlwZSA9PSAibWFjIjoKKyAgICAgICAgICAgICByZXR1cm4gTUFDQWRkcmVzcyhzKQorICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKHUiVW5rbm93biBhZGRyZXNzIHR5cGUgJXMuIiAlIHR5cGUpCisrICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVW5rbm93biBhZGRyZXNzIHR5cGUgJXMuIiAlIHR5cGUpCisgICAgIG5ldyA9IHN0YXRpY21ldGhvZChuZXcpCisgCisgICAgIGRlZiB0b19kb21fZnJhZ21lbnQoc2VsZiwgZG9jdW1lbnQpOgorICAgICAgICAgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQorLSAgICAgICAgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJhZGRyZXNzIikKKy0gICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKHUiYWRkciIsIHNlbGYucykKKy0gICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKHUiYWRkcnR5cGUiLCBzZWxmLnR5cGUpCisrICAgICAgICBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYWRkcmVzcyIpCisrICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgiYWRkciIsIHNlbGYucykKKysgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCJhZGRydHlwZSIsIHNlbGYudHlwZSkKKyAgICAgICAgIGZyYWcuYXBwZW5kQ2hpbGQoZWxlbSkKKyAgICAgICAgIHJldHVybiBmcmFnCisgCitAQCAtMjg3LDIxICsyODcsMjEgQEAgY2xhc3MgQWRkcmVzcyhvYmplY3QpOgorIAorIAorIGNsYXNzIElQdjRBZGRyZXNzKEFkZHJlc3MpOgorLSAgICB0eXBlID0gcHJvcGVydHkobGFtYmRhIHNlbGY6IHUiaXB2NCIpCisrICAgIHR5cGUgPSBwcm9wZXJ0eShsYW1iZGEgc2VsZjogImlwdjQiKQorIAorICAgICBkZWYgc29ydF9rZXkoc2VsZik6CisgICAgICAgICByZXR1cm4gKDAsIHNlbGYucykKKyAKKyAKKyBjbGFzcyBJUHY2QWRkcmVzcyhBZGRyZXNzKToKKy0gICAgdHlwZSA9IHByb3BlcnR5KGxhbWJkYSBzZWxmOiB1ImlwdjYiKQorKyAgICB0eXBlID0gcHJvcGVydHkobGFtYmRhIHNlbGY6ICJpcHY2IikKKyAKKyAgICAgZGVmIHNvcnRfa2V5KHNlbGYpOgorICAgICAgICAgcmV0dXJuICgxLCBzZWxmLnMpCisgCisgCisgY2xhc3MgTUFDQWRkcmVzcyhBZGRyZXNzKToKKy0gICAgdHlwZSA9IHByb3BlcnR5KGxhbWJkYSBzZWxmOiB1Im1hYyIpCisrICAgIHR5cGUgPSBwcm9wZXJ0eShsYW1iZGEgc2VsZjogIm1hYyIpCisgCisgICAgIGRlZiBzb3J0X2tleShzZWxmKToKKyAgICAgICAgIHJldHVybiAoMiwgc2VsZi5zKQorQEAgLTMyMCwyOCArMzIwLDI1IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKKyAKKyAgICAgZGVmIHN0YXRlX3N0cmluZyhzZWxmKToKKyAgICAgICAgIGlmIHNlbGYuc3RhdGUgaXMgTm9uZToKKy0gICAgICAgICAgICByZXR1cm4gdSJ1bmtub3duIgorKyAgICAgICAgICAgIHJldHVybiAidW5rbm93biIKKyAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgcmV0dXJuIHVuaWNvZGUoc2VsZi5zdGF0ZSkKKysgICAgICAgICAgICByZXR1cm4gc3RyKHNlbGYuc3RhdGUpCisgCisgICAgIGRlZiBzcGVjX3N0cmluZyhzZWxmKToKKy0gICAgICAgIHJldHVybiB1IiVkLyVzIiAlIHNlbGYuc3BlYworKyAgICAgICAgcmV0dXJuICIlZC8lcyIgJSBzZWxmLnNwZWMKKyAKKy0gICAgZGVmIF9fY21wX18oc2VsZiwgb3RoZXIpOgorLSAgICAgICAgZCA9IGNtcChzZWxmLnNwZWMsIG90aGVyLnNwZWMpCistICAgICAgICBpZiBkICE9IDA6CistICAgICAgICAgICAgcmV0dXJuIGQKKy0gICAgICAgIHJldHVybiBjbXAoKHNlbGYuc3BlYywgc2VsZi5zZXJ2aWNlLCBzZWxmLnNjcmlwdF9yZXN1bHRzKSwKKy0gICAgICAgICAgICAob3RoZXIuc3BlYywgb3RoZXIuc2VydmljZSwgb3RoZXIuc2NyaXB0X3Jlc3VsdHMpKQorKyAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKKysgICAgICAgIHJldHVybiAoc2VsZi5zcGVjLCBzZWxmLnNlcnZpY2UsIHNlbGYuc2NyaXB0X3Jlc3VsdHMpIDwgKAorKyAgICAgICAgICAgIG90aGVyLnNwZWMsIG90aGVyLnNlcnZpY2UsIG90aGVyLnNjcmlwdF9yZXN1bHRzKQorIAorICAgICBkZWYgdG9fZG9tX2ZyYWdtZW50KHNlbGYsIGRvY3VtZW50KToKKyAgICAgICAgIGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkKKy0gICAgICAgIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUicG9ydCIpCistICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSh1InBvcnRpZCIsIHVuaWNvZGUoc2VsZi5zcGVjWzBdKSkKKy0gICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKHUicHJvdG9jb2wiLCBzZWxmLnNwZWNbMV0pCisrICAgICAgICBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicG9ydCIpCisrICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgicG9ydGlkIiwgc3RyKHNlbGYuc3BlY1swXSkpCisrICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgicHJvdG9jb2wiLCBzZWxmLnNwZWNbMV0pCisgICAgICAgICBpZiBzZWxmLnN0YXRlIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgIHN0YXRlX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUic3RhdGUiKQorLSAgICAgICAgICAgIHN0YXRlX2VsZW0uc2V0QXR0cmlidXRlKHUic3RhdGUiLCBzZWxmLnN0YXRlKQorKyAgICAgICAgICAgIHN0YXRlX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdGF0ZSIpCisrICAgICAgICAgICAgc3RhdGVfZWxlbS5zZXRBdHRyaWJ1dGUoInN0YXRlIiwgc2VsZi5zdGF0ZSkKKyAgICAgICAgICAgICBlbGVtLmFwcGVuZENoaWxkKHN0YXRlX2VsZW0pCisgICAgICAgICBlbGVtLmFwcGVuZENoaWxkKHNlbGYuc2VydmljZS50b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgZm9yIHNyIGluIHNlbGYuc2NyaXB0X3Jlc3VsdHM6CitAQCAtMzg1LDcgKzM4Miw3IEBAIGNsYXNzIFNlcnZpY2Uob2JqZWN0KToKKyAgICAgICAgIGlmIGxlbihwYXJ0cykgPT0gMDoKKyAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICByZXR1cm4gdSIvIi5qb2luKHBhcnRzKQorKyAgICAgICAgICAgIHJldHVybiAiLyIuam9pbihwYXJ0cykKKyAKKyAgICAgZGVmIHZlcnNpb25fc3RyaW5nKHNlbGYpOgorICAgICAgICAgIiIiR2V0IGEgc3RyaW5nIGxpa2UgaW4gdGhlIFZFUlNJT04gY29sdW1uIG9mIE5tYXAgb3V0cHV0LiIiIgorQEAgLTM5NSwxNyArMzkyLDE3IEBAIGNsYXNzIFNlcnZpY2Uob2JqZWN0KToKKyAgICAgICAgIGlmIHNlbGYudmVyc2lvbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoc2VsZi52ZXJzaW9uKQorICAgICAgICAgaWYgc2VsZi5leHRyYWluZm8gaXMgbm90IE5vbmU6CistICAgICAgICAgICAgcGFydHMuYXBwZW5kKHUiKCVzKSIgJSBzZWxmLmV4dHJhaW5mbykKKysgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoIiglcykiICUgc2VsZi5leHRyYWluZm8pCisgCisgICAgICAgICBpZiBsZW4ocGFydHMpID09IDA6CisgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgcmV0dXJuIHUiICIuam9pbihwYXJ0cykKKysgICAgICAgICAgICByZXR1cm4gIiAiLmpvaW4ocGFydHMpCisgCisgICAgIGRlZiB0b19kb21fZnJhZ21lbnQoc2VsZiwgZG9jdW1lbnQpOgorICAgICAgICAgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQorLSAgICAgICAgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJzZXJ2aWNlIikKKy0gICAgICAgIGZvciBhdHRyIGluICh1Im5hbWUiLCB1InByb2R1Y3QiLCB1InZlcnNpb24iLCB1ImV4dHJhaW5mbyIsIHUidHVubmVsIik6CisrICAgICAgICBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VydmljZSIpCisrICAgICAgICBmb3IgYXR0ciBpbiAoIm5hbWUiLCAicHJvZHVjdCIsICJ2ZXJzaW9uIiwgImV4dHJhaW5mbyIsICJ0dW5uZWwiKToKKyAgICAgICAgICAgICB2ID0gZ2V0YXR0cihzZWxmLCBhdHRyKQorICAgICAgICAgICAgIGlmIHYgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgY29udGludWUKK0BAIC00MzUsNTMgKzQzMiw1MyBAQCBjbGFzcyBTY3JpcHRSZXN1bHQob2JqZWN0KToKKyAgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgICBsaW5lcyA9IHNlbGYub3V0cHV0LnNwbGl0bGluZXMoKQorICAgICAgICAgaWYgbGVuKGxpbmVzKSA+IDA6CistICAgICAgICAgICAgbGluZXNbMF0gPSBzZWxmLmlkICsgdSI6ICIgKyBsaW5lc1swXQorKyAgICAgICAgICAgIGxpbmVzWzBdID0gc2VsZi5pZCArICI6ICIgKyBsaW5lc1swXQorICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXNbOi0xXToKKy0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHUifCAgIiArIGxpbmUpCisrICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgifCAgIiArIGxpbmUpCisgICAgICAgICBpZiBsZW4obGluZXMpID4gMDoKKy0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHUifF8gIiArIGxpbmVzWy0xXSkKKysgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJ8XyAiICsgbGluZXNbLTFdKQorICAgICAgICAgcmV0dXJuIHJlc3VsdAorIAorICAgICBkZWYgdG9fZG9tX2ZyYWdtZW50KHNlbGYsIGRvY3VtZW50KToKKyAgICAgICAgIGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkKKy0gICAgICAgIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUic2NyaXB0IikKKy0gICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKHUiaWQiLCBzZWxmLmlkKQorLSAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUodSJvdXRwdXQiLCBzZWxmLm91dHB1dCkKKysgICAgICAgIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKQorKyAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoImlkIiwgc2VsZi5pZCkKKysgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCJvdXRwdXQiLCBzZWxmLm91dHB1dCkKKyAgICAgICAgIGZyYWcuYXBwZW5kQ2hpbGQoZWxlbSkKKyAgICAgICAgIHJldHVybiBmcmFnCisgCisgCisgZGVmIGZvcm1hdF9iYW5uZXIoc2Nhbik6CisgICAgICIiIkZvcm1hdCBhIHN0YXJ0dXAgYmFubmVyIG1vcmUgb3IgbGVzcyBsaWtlIE5tYXAgZG9lcy4iIiIKKy0gICAgc2Nhbm5lciA9IHUiTm1hcCIKKy0gICAgaWYgc2Nhbi5zY2FubmVyIGlzIG5vdCBOb25lIGFuZCBzY2FuLnNjYW5uZXIgIT0gdSJubWFwIjoKKysgICAgc2Nhbm5lciA9ICJObWFwIgorKyAgICBpZiBzY2FuLnNjYW5uZXIgaXMgbm90IE5vbmUgYW5kIHNjYW4uc2Nhbm5lciAhPSAibm1hcCI6CisgICAgICAgICBzY2FubmVyID0gc2Nhbi5zY2FubmVyCisgICAgIHBhcnRzID0gW3NjYW5uZXJdCisgICAgIGlmIHNjYW4udmVyc2lvbiBpcyBub3QgTm9uZToKKyAgICAgICAgIHBhcnRzLmFwcGVuZChzY2FuLnZlcnNpb24pCistICAgIHBhcnRzLmFwcGVuZCh1InNjYW4iKQorKyAgICBwYXJ0cy5hcHBlbmQoInNjYW4iKQorICAgICBpZiBzY2FuLnN0YXJ0X2RhdGUgaXMgbm90IE5vbmU6CistICAgICAgICBwYXJ0cy5hcHBlbmQodSJpbml0aWF0ZWQgJXMiICUgc2Nhbi5zdGFydF9kYXRlLnN0cmZ0aW1lKAorKyAgICAgICAgcGFydHMuYXBwZW5kKCJpbml0aWF0ZWQgJXMiICUgc2Nhbi5zdGFydF9kYXRlLnN0cmZ0aW1lKAorICAgICAgICAgICAgICIlYSAlYiAlZCAlSDolTTolUyAlWSIpKQorICAgICBpZiBzY2FuLmFyZ3MgaXMgbm90IE5vbmU6CistICAgICAgICBwYXJ0cy5hcHBlbmQodSJhczogJXMiICUgc2Nhbi5hcmdzKQorLSAgICByZXR1cm4gdSIgIi5qb2luKHBhcnRzKQorKyAgICAgICAgcGFydHMuYXBwZW5kKCJhczogJXMiICUgc2Nhbi5hcmdzKQorKyAgICByZXR1cm4gIiAiLmpvaW4ocGFydHMpCisgCisgCisgZGVmIHByaW50X3NjcmlwdF9yZXN1bHRfZGlmZnNfdGV4dCh0aXRsZSwgc2NyaXB0X3Jlc3VsdHNfYSwgc2NyaXB0X3Jlc3VsdHNfYiwKKyAgICAgICAgIHNjcmlwdF9yZXN1bHRfZGlmZnMsIGY9c3lzLnN0ZG91dCk6CistICAgIHRhYmxlID0gVGFibGUodSIqIikKKysgICAgdGFibGUgPSBUYWJsZSgiKiIpCisgICAgIGZvciBzcl9kaWZmIGluIHNjcmlwdF9yZXN1bHRfZGlmZnM6CisgICAgICAgICBzcl9kaWZmLmFwcGVuZF90b19wb3J0X3RhYmxlKHRhYmxlKQorICAgICBpZiBsZW4odGFibGUpID4gMDoKKy0gICAgICAgIHByaW50ID4+IGYKKysgICAgICAgIHByaW50KGZpbGU9ZikKKyAgICAgICAgIGlmIGxlbihzY3JpcHRfcmVzdWx0c19iKSA9PSAwOgorLSAgICAgICAgICAgIHByaW50ID4+IGYsIHUiLSVzOiIgJSB0aXRsZQorKyAgICAgICAgICAgIHByaW50KCItJXM6IiAlIHRpdGxlLCBmaWxlPWYpCisgICAgICAgICBlbGlmIGxlbihzY3JpcHRfcmVzdWx0c19hKSA9PSAwOgorLSAgICAgICAgICAgIHByaW50ID4+IGYsIHUiKyVzOiIgJSB0aXRsZQorKyAgICAgICAgICAgIHByaW50KCIrJXM6IiAlIHRpdGxlLCBmaWxlPWYpCisgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIHByaW50ID4+IGYsIHUiICVzOiIgJSB0aXRsZQorLSAgICAgICAgcHJpbnQgPj4gZiwgdGFibGUKKysgICAgICAgICAgICBwcmludCgiICVzOiIgJSB0aXRsZSwgZmlsZT1mKQorKyAgICAgICAgcHJpbnQodGFibGUsIGZpbGU9ZikKKyAKKyAKKyBkZWYgc2NyaXB0X3Jlc3VsdF9kaWZmc190b19kb21fZnJhZ21lbnQoZWxlbSwgc2NyaXB0X3Jlc3VsdHNfYSwKK0BAIC00ODksMTMgKzQ4NiwxMyBAQCBkZWYgc2NyaXB0X3Jlc3VsdF9kaWZmc190b19kb21fZnJhZ21lbnQoZWxlbSwgc2NyaXB0X3Jlc3VsdHNfYSwKKyAgICAgaWYgbGVuKHNjcmlwdF9yZXN1bHRzX2EpID09IDAgYW5kIGxlbihzY3JpcHRfcmVzdWx0c19iKSA9PSAwOgorICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQorICAgICBlbGlmIGxlbihzY3JpcHRfcmVzdWx0c19iKSA9PSAwOgorLSAgICAgICAgYV9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1ImEiKQorKyAgICAgICAgYV9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpCisgICAgICAgICBmb3Igc3IgaW4gc2NyaXB0X3Jlc3VsdHNfYToKKyAgICAgICAgICAgICBlbGVtLmFwcGVuZENoaWxkKHNyLnRvX2RvbV9mcmFnbWVudChkb2N1bWVudCkpCisgICAgICAgICBhX2VsZW0uYXBwZW5kQ2hpbGQoZWxlbSkKKyAgICAgICAgIHJldHVybiBhX2VsZW0KKyAgICAgZWxpZiBsZW4oc2NyaXB0X3Jlc3VsdHNfYSkgPT0gMDoKKy0gICAgICAgIGJfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJiIikKKysgICAgICAgIGJfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImIiKQorICAgICAgICAgZm9yIHNyIGluIHNjcmlwdF9yZXN1bHRzX2I6CisgICAgICAgICAgICAgZWxlbS5hcHBlbmRDaGlsZChzci50b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgYl9lbGVtLmFwcGVuZENoaWxkKGVsZW0pCitAQCAtNTgxLDEwICs1NzgsMTAgQEAgY2xhc3MgU2NhbkRpZmZUZXh0KFNjYW5EaWZmKToKKyAgICAgICAgIGJhbm5lcl9hID0gZm9ybWF0X2Jhbm5lcihzZWxmLnNjYW5fYSkKKyAgICAgICAgIGJhbm5lcl9iID0gZm9ybWF0X2Jhbm5lcihzZWxmLnNjYW5fYikKKyAgICAgICAgIGlmIGJhbm5lcl9hICE9IGJhbm5lcl9iOgorLSAgICAgICAgICAgIHByaW50ID4+IHNlbGYuZiwgdSItJXMiICUgYmFubmVyX2EKKy0gICAgICAgICAgICBwcmludCA+PiBzZWxmLmYsIHUiKyVzIiAlIGJhbm5lcl9iCisrICAgICAgICAgICAgcHJpbnQoIi0lcyIgJSBiYW5uZXJfYSwgZmlsZT1zZWxmLmYpCisrICAgICAgICAgICAgcHJpbnQoIislcyIgJSBiYW5uZXJfYiwgZmlsZT1zZWxmLmYpCisgICAgICAgICBlbGlmIHZlcmJvc2U6CistICAgICAgICAgICAgcHJpbnQgPj4gc2VsZi5mLCB1IiAlcyIgJSBiYW5uZXJfYQorKyAgICAgICAgICAgIHByaW50KCIgJXMiICUgYmFubmVyX2EsIGZpbGU9c2VsZi5mKQorIAorICAgICBkZWYgb3V0cHV0X3ByZV9zY3JpcHRzKHNlbGYsIHByZV9zY3JpcHRfcmVzdWx0X2RpZmZzKToKKyAgICAgICAgIHByaW50X3NjcmlwdF9yZXN1bHRfZGlmZnNfdGV4dCgiUHJlLXNjYW4gc2NyaXB0IHJlc3VsdHMiLAorQEAgLTU5Nyw3ICs1OTQsNyBAQCBjbGFzcyBTY2FuRGlmZlRleHQoU2NhbkRpZmYpOgorICAgICAgICAgICAgIHBvc3Rfc2NyaXB0X3Jlc3VsdF9kaWZmcywgc2VsZi5mKQorIAorICAgICBkZWYgb3V0cHV0X2hvc3RfZGlmZihzZWxmLCBoX2RpZmYpOgorLSAgICAgICAgcHJpbnQgPj4gc2VsZi5mCisrICAgICAgICBwcmludChmaWxlPXNlbGYuZikKKyAgICAgICAgIGhfZGlmZi5wcmludF90ZXh0KHNlbGYuZikKKyAKKyAgICAgZGVmIG91dHB1dF9lbmRpbmcoc2VsZik6CitAQCAtNjIyLDggKzYxOSw4IEBAIGNsYXNzIFNjYW5EaWZmWE1MKFNjYW5EaWZmKToKKyAKKyAgICAgZGVmIG91dHB1dF9iZWdpbm5pbmcoc2VsZik6CisgICAgICAgICBzZWxmLndyaXRlci5zdGFydERvY3VtZW50KCkKKy0gICAgICAgIHNlbGYud3JpdGVyLnN0YXJ0RWxlbWVudCh1Im5tYXBkaWZmIiwge3UidmVyc2lvbiI6IE5ESUZGX1hNTF9WRVJTSU9OfSkKKy0gICAgICAgIHNlbGYud3JpdGVyLnN0YXJ0RWxlbWVudCh1InNjYW5kaWZmIiwge30pCisrICAgICAgICBzZWxmLndyaXRlci5zdGFydEVsZW1lbnQoIm5tYXBkaWZmIiwgeyJ2ZXJzaW9uIjogTkRJRkZfWE1MX1ZFUlNJT059KQorKyAgICAgICAgc2VsZi53cml0ZXIuc3RhcnRFbGVtZW50KCJzY2FuZGlmZiIsIHt9KQorIAorICAgICAgICAgaWYgc2VsZi5ubWFwcnVuX2RpZmZlcnMoKToKKyAgICAgICAgICAgICBzZWxmLndyaXRlci5mcmFnX2EoCitAQCAtNjM2LDcgKzYzMyw3IEBAIGNsYXNzIFNjYW5EaWZmWE1MKFNjYW5EaWZmKToKKyAKKyAgICAgZGVmIG91dHB1dF9wcmVfc2NyaXB0cyhzZWxmLCBwcmVfc2NyaXB0X3Jlc3VsdF9kaWZmcyk6CisgICAgICAgICBpZiBsZW4ocHJlX3NjcmlwdF9yZXN1bHRfZGlmZnMpID4gMCBvciB2ZXJib3NlOgorLSAgICAgICAgICAgIHByZXNjcmlwdF9lbGVtID0gc2VsZi5kb2N1bWVudC5jcmVhdGVFbGVtZW50KHUicHJlc2NyaXB0IikKKysgICAgICAgICAgICBwcmVzY3JpcHRfZWxlbSA9IHNlbGYuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicHJlc2NyaXB0IikKKyAgICAgICAgICAgICBmcmFnID0gc2NyaXB0X3Jlc3VsdF9kaWZmc190b19kb21fZnJhZ21lbnQoCisgICAgICAgICAgICAgICAgIHByZXNjcmlwdF9lbGVtLCBzZWxmLnNjYW5fYS5wcmVfc2NyaXB0X3Jlc3VsdHMsCisgICAgICAgICAgICAgICAgIHNlbGYuc2Nhbl9iLnByZV9zY3JpcHRfcmVzdWx0cywgcHJlX3NjcmlwdF9yZXN1bHRfZGlmZnMsCitAQCAtNjQ2LDcgKzY0Myw3IEBAIGNsYXNzIFNjYW5EaWZmWE1MKFNjYW5EaWZmKToKKyAKKyAgICAgZGVmIG91dHB1dF9wb3N0X3NjcmlwdHMoc2VsZiwgcG9zdF9zY3JpcHRfcmVzdWx0X2RpZmZzKToKKyAgICAgICAgIGlmIGxlbihwb3N0X3NjcmlwdF9yZXN1bHRfZGlmZnMpID4gMCBvciB2ZXJib3NlOgorLSAgICAgICAgICAgIHBvc3RzY3JpcHRfZWxlbSA9IHNlbGYuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1InBvc3RzY3JpcHQiKQorKyAgICAgICAgICAgIHBvc3RzY3JpcHRfZWxlbSA9IHNlbGYuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicG9zdHNjcmlwdCIpCisgICAgICAgICAgICAgZnJhZyA9IHNjcmlwdF9yZXN1bHRfZGlmZnNfdG9fZG9tX2ZyYWdtZW50KAorICAgICAgICAgICAgICAgICBwb3N0c2NyaXB0X2VsZW0sIHNlbGYuc2Nhbl9hLnBvc3Rfc2NyaXB0X3Jlc3VsdHMsCisgICAgICAgICAgICAgICAgIHNlbGYuc2Nhbl9iLnBvc3Rfc2NyaXB0X3Jlc3VsdHMsIHBvc3Rfc2NyaXB0X3Jlc3VsdF9kaWZmcywKK0BAIC02NjAsOCArNjU3LDggQEAgY2xhc3MgU2NhbkRpZmZYTUwoU2NhbkRpZmYpOgorICAgICAgICAgZnJhZy51bmxpbmsoKQorIAorICAgICBkZWYgb3V0cHV0X2VuZGluZyhzZWxmKToKKy0gICAgICAgIHNlbGYud3JpdGVyLmVuZEVsZW1lbnQodSJzY2FuZGlmZiIpCistICAgICAgICBzZWxmLndyaXRlci5lbmRFbGVtZW50KHUibm1hcGRpZmYiKQorKyAgICAgICAgc2VsZi53cml0ZXIuZW5kRWxlbWVudCgic2NhbmRpZmYiKQorKyAgICAgICAgc2VsZi53cml0ZXIuZW5kRWxlbWVudCgibm1hcGRpZmYiKQorICAgICAgICAgc2VsZi53cml0ZXIuZW5kRG9jdW1lbnQoKQorIAorIAorQEAgLTcxOSw5ICs3MTYsOSBAQCBjbGFzcyBIb3N0RGlmZihvYmplY3QpOgorICAgICAgICAgc2VsZi5jb3N0ICs9IG9zX2Nvc3QKKyAKKyAgICAgICAgIGV4dHJhcG9ydHNfYSA9IHR1cGxlKChjb3VudCwgc3RhdGUpCistICAgICAgICAgICAgICAgIGZvciAoc3RhdGUsIGNvdW50KSBpbiBzZWxmLmhvc3RfYS5leHRyYXBvcnRzLml0ZW1zKCkpCisrICAgICAgICAgICAgICAgIGZvciAoc3RhdGUsIGNvdW50KSBpbiBsaXN0KHNlbGYuaG9zdF9hLmV4dHJhcG9ydHMuaXRlbXMoKSkpCisgICAgICAgICBleHRyYXBvcnRzX2IgPSB0dXBsZSgoY291bnQsIHN0YXRlKQorLSAgICAgICAgICAgICAgICBmb3IgKHN0YXRlLCBjb3VudCkgaW4gc2VsZi5ob3N0X2IuZXh0cmFwb3J0cy5pdGVtcygpKQorKyAgICAgICAgICAgICAgICBmb3IgKHN0YXRlLCBjb3VudCkgaW4gbGlzdChzZWxmLmhvc3RfYi5leHRyYXBvcnRzLml0ZW1zKCkpKQorICAgICAgICAgaWYgZXh0cmFwb3J0c19hICE9IGV4dHJhcG9ydHNfYjoKKyAgICAgICAgICAgICBzZWxmLmV4dHJhcG9ydHNfY2hhbmdlZCA9IFRydWUKKyAgICAgICAgICAgICBzZWxmLmNvc3QgKz0gMQorQEAgLTc0Nyw2OSArNzQ0LDY5IEBAIGNsYXNzIEhvc3REaWZmKG9iamVjdCk6CisgICAgICAgICAjIE5hbWVzIGFuZCBhZGRyZXNzZXMuCisgICAgICAgICBpZiBzZWxmLmlkX2NoYW5nZWQ6CisgICAgICAgICAgICAgaWYgaG9zdF9hLnN0YXRlIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgICAgICBwcmludCA+PiBmLCB1Ii0lczoiICUgaG9zdF9hLmZvcm1hdF9uYW1lKCkKKysgICAgICAgICAgICAgICAgcHJpbnQoIi0lczoiICUgaG9zdF9hLmZvcm1hdF9uYW1lKCksIGZpbGU9ZikKKyAgICAgICAgICAgICBpZiBzZWxmLmhvc3RfYi5zdGF0ZSBpcyBub3QgTm9uZToKKy0gICAgICAgICAgICAgICAgcHJpbnQgPj4gZiwgdSIrJXM6IiAlIGhvc3RfYi5mb3JtYXRfbmFtZSgpCisrICAgICAgICAgICAgICAgIHByaW50KCIrJXM6IiAlIGhvc3RfYi5mb3JtYXRfbmFtZSgpLCBmaWxlPWYpCisgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIHByaW50ID4+IGYsIHUiICVzOiIgJSBob3N0X2EuZm9ybWF0X25hbWUoKQorKyAgICAgICAgICAgIHByaW50KCIgJXM6IiAlIGhvc3RfYS5mb3JtYXRfbmFtZSgpLCBmaWxlPWYpCisgCisgICAgICAgICAjIFN0YXRlLgorICAgICAgICAgaWYgc2VsZi5zdGF0ZV9jaGFuZ2VkOgorICAgICAgICAgICAgIGlmIGhvc3RfYS5zdGF0ZSBpcyBub3QgTm9uZToKKy0gICAgICAgICAgICAgICAgcHJpbnQgPj4gZiwgdSItSG9zdCBpcyAlcy4iICUgaG9zdF9hLnN0YXRlCisrICAgICAgICAgICAgICAgIHByaW50KCItSG9zdCBpcyAlcy4iICUgaG9zdF9hLnN0YXRlLCBmaWxlPWYpCisgICAgICAgICAgICAgaWYgaG9zdF9iLnN0YXRlIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgICAgICBwcmludCA+PiBmLCB1IitIb3N0IGlzICVzLiIgJSBob3N0X2Iuc3RhdGUKKysgICAgICAgICAgICAgICAgcHJpbnQoIitIb3N0IGlzICVzLiIgJSBob3N0X2Iuc3RhdGUsIGZpbGU9ZikKKyAgICAgICAgIGVsaWYgdmVyYm9zZToKKy0gICAgICAgICAgICBwcmludCA+PiBmLCB1IiBIb3N0IGlzICVzLiIgJSBob3N0X2Iuc3RhdGUKKysgICAgICAgICAgICBwcmludCgiIEhvc3QgaXMgJXMuIiAlIGhvc3RfYi5zdGF0ZSwgZmlsZT1mKQorIAorICAgICAgICAgIyBFeHRyYXBvcnRzLgorICAgICAgICAgaWYgc2VsZi5leHRyYXBvcnRzX2NoYW5nZWQ6CisgICAgICAgICAgICAgaWYgbGVuKGhvc3RfYS5leHRyYXBvcnRzKSA+IDA6CistICAgICAgICAgICAgICAgIHByaW50ID4+IGYsIHUiLU5vdCBzaG93bjogJXMiICUgaG9zdF9hLmV4dHJhcG9ydHNfc3RyaW5nKCkKKysgICAgICAgICAgICAgICAgcHJpbnQoIi1Ob3Qgc2hvd246ICVzIiAlIGhvc3RfYS5leHRyYXBvcnRzX3N0cmluZygpLCBmaWxlPWYpCisgICAgICAgICAgICAgaWYgbGVuKGhvc3RfYi5leHRyYXBvcnRzKSA+IDA6CistICAgICAgICAgICAgICAgIHByaW50ID4+IGYsIHUiK05vdCBzaG93bjogJXMiICUgaG9zdF9iLmV4dHJhcG9ydHNfc3RyaW5nKCkKKysgICAgICAgICAgICAgICAgcHJpbnQoIitOb3Qgc2hvd246ICVzIiAlIGhvc3RfYi5leHRyYXBvcnRzX3N0cmluZygpLCBmaWxlPWYpCisgICAgICAgICBlbGlmIHZlcmJvc2U6CisgICAgICAgICAgICAgaWYgbGVuKGhvc3RfYS5leHRyYXBvcnRzKSA+IDA6CistICAgICAgICAgICAgICAgIHByaW50ID4+IGYsIHUiIE5vdCBzaG93bjogJXMiICUgaG9zdF9hLmV4dHJhcG9ydHNfc3RyaW5nKCkKKysgICAgICAgICAgICAgICAgcHJpbnQoIiBOb3Qgc2hvd246ICVzIiAlIGhvc3RfYS5leHRyYXBvcnRzX3N0cmluZygpLCBmaWxlPWYpCisgCisgICAgICAgICAjIFBvcnQgdGFibGUuCistICAgICAgICBwb3J0X3RhYmxlID0gVGFibGUodSIqKiAqICogKiIpCisrICAgICAgICBwb3J0X3RhYmxlID0gVGFibGUoIioqICogKiAqIikKKyAgICAgICAgIGlmIGhvc3RfYS5zdGF0ZSBpcyBOb25lOgorLSAgICAgICAgICAgIG1hcmsgPSB1IisiCisrICAgICAgICAgICAgbWFyayA9ICIrIgorICAgICAgICAgZWxpZiBob3N0X2Iuc3RhdGUgaXMgTm9uZToKKy0gICAgICAgICAgICBtYXJrID0gdSItIgorKyAgICAgICAgICAgIG1hcmsgPSAiLSIKKyAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgbWFyayA9IHUiICIKKy0gICAgICAgIHBvcnRfdGFibGUuYXBwZW5kKChtYXJrLCB1IlBPUlQiLCB1IlNUQVRFIiwgdSJTRVJWSUNFIiwgdSJWRVJTSU9OIikpCisrICAgICAgICAgICAgbWFyayA9ICIgIgorKyAgICAgICAgcG9ydF90YWJsZS5hcHBlbmQoKG1hcmssICJQT1JUIiwgIlNUQVRFIiwgIlNFUlZJQ0UiLCAiVkVSU0lPTiIpKQorIAorICAgICAgICAgZm9yIHBvcnQgaW4gc2VsZi5wb3J0czoKKyAgICAgICAgICAgICBwb3J0X2RpZmYgPSBzZWxmLnBvcnRfZGlmZnNbcG9ydF0KKyAgICAgICAgICAgICBwb3J0X2RpZmYuYXBwZW5kX3RvX3BvcnRfdGFibGUocG9ydF90YWJsZSwgaG9zdF9hLCBob3N0X2IpCisgCisgICAgICAgICBpZiBsZW4ocG9ydF90YWJsZSkgPiAxOgorLSAgICAgICAgICAgIHByaW50ID4+IGYsIHBvcnRfdGFibGUKKysgICAgICAgICAgICBwcmludChwb3J0X3RhYmxlLCBmaWxlPWYpCisgCisgICAgICAgICAjIE9TIGNoYW5nZXMuCisgICAgICAgICBpZiBzZWxmLm9zX2NoYW5nZWQgb3IgdmVyYm9zZToKKyAgICAgICAgICAgICBpZiBsZW4oaG9zdF9hLm9zKSA+IDA6CisgICAgICAgICAgICAgICAgIGlmIGxlbihob3N0X2Iub3MpID4gMDoKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ID4+IGYsIHUiIE9TIGRldGFpbHM6IgorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiBPUyBkZXRhaWxzOiIsIGZpbGU9ZikKKyAgICAgICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ID4+IGYsIHUiLU9TIGRldGFpbHM6IgorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIi1PUyBkZXRhaWxzOiIsIGZpbGU9ZikKKyAgICAgICAgICAgICBlbGlmIGxlbihob3N0X2Iub3MpID4gMDoKKy0gICAgICAgICAgICAgICAgcHJpbnQgPj4gZiwgdSIrT1MgZGV0YWlsczoiCisrICAgICAgICAgICAgICAgIHByaW50KCIrT1MgZGV0YWlsczoiLCBmaWxlPWYpCisgICAgICAgICAgICAgIyBvc19kaWZmcyBpcyBhIGxpc3Qgb2YgNS10dXBsZXMgcmV0dXJuZWQgYnkKKyAgICAgICAgICAgICAjIGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyLgorICAgICAgICAgICAgIGZvciBvcCwgaTEsIGkyLCBqMSwgajIgaW4gc2VsZi5vc19kaWZmczoKKyAgICAgICAgICAgICAgICAgaWYgb3AgPT0gInJlcGxhY2UiIG9yIG9wID09ICJkZWxldGUiOgorICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoaTEsIGkyKToKKy0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCA+PiBmLCAiLSAgJXMiICUgaG9zdF9hLm9zW2ldCisrICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIi0gICVzIiAlIGhvc3RfYS5vc1tpXSwgZmlsZT1mKQorICAgICAgICAgICAgICAgICBpZiBvcCA9PSAicmVwbGFjZSIgb3Igb3AgPT0gImluc2VydCI6CisgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShqMSwgajIpOgorLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ID4+IGYsICIrICAlcyIgJSBob3N0X2Iub3NbaV0KKysgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiKyAgJXMiICUgaG9zdF9iLm9zW2ldLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgIGlmIG9wID09ICJlcXVhbCI6CisgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShpMSwgaTIpOgorLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ID4+IGYsICIgICAlcyIgJSBob3N0X2Eub3NbaV0KKysgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgJXMiICUgaG9zdF9hLm9zW2ldLCBmaWxlPWYpCisgCisgICAgICAgICBwcmludF9zY3JpcHRfcmVzdWx0X2RpZmZzX3RleHQoIkhvc3Qgc2NyaXB0IHJlc3VsdHMiLAorICAgICAgICAgICAgIGhvc3RfYS5zY3JpcHRfcmVzdWx0cywgaG9zdF9iLnNjcmlwdF9yZXN1bHRzLAorQEAgLTgyMCwzMiArODE3LDMyIEBAIGNsYXNzIEhvc3REaWZmKG9iamVjdCk6CisgICAgICAgICBob3N0X2IgPSBzZWxmLmhvc3RfYgorIAorICAgICAgICAgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQorLSAgICAgICAgaG9zdGRpZmZfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJob3N0ZGlmZiIpCisrICAgICAgICBob3N0ZGlmZl9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaG9zdGRpZmYiKQorICAgICAgICAgZnJhZy5hcHBlbmRDaGlsZChob3N0ZGlmZl9lbGVtKQorIAorICAgICAgICAgaWYgaG9zdF9hLnN0YXRlIGlzIE5vbmUgb3IgaG9zdF9iLnN0YXRlIGlzIE5vbmU6CisgICAgICAgICAgICAgIyBUaGUgaG9zdCBpcyBtaXNzaW5nIGluIG9uZSBzY2FuLiBPdXRwdXQgdGhlIHdob2xlIHRoaW5nLgorICAgICAgICAgICAgIGlmIGhvc3RfYS5zdGF0ZSBpcyBub3QgTm9uZToKKy0gICAgICAgICAgICAgICAgYV9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1ImEiKQorKyAgICAgICAgICAgICAgICBhX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIikKKyAgICAgICAgICAgICAgICAgYV9lbGVtLmFwcGVuZENoaWxkKGhvc3RfYS50b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgICAgICAgICBob3N0ZGlmZl9lbGVtLmFwcGVuZENoaWxkKGFfZWxlbSkKKyAgICAgICAgICAgICBlbGlmIGhvc3RfYi5zdGF0ZSBpcyBub3QgTm9uZToKKy0gICAgICAgICAgICAgICAgYl9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1ImIiKQorKyAgICAgICAgICAgICAgICBiX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiIikKKyAgICAgICAgICAgICAgICAgYl9lbGVtLmFwcGVuZENoaWxkKGhvc3RfYi50b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgICAgICAgICBob3N0ZGlmZl9lbGVtLmFwcGVuZENoaWxkKGJfZWxlbSkKKyAgICAgICAgICAgICByZXR1cm4gZnJhZworIAorLSAgICAgICAgaG9zdF9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1Imhvc3QiKQorKyAgICAgICAgaG9zdF9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaG9zdCIpCisgCisgICAgICAgICAjIFN0YXRlLgorICAgICAgICAgaWYgaG9zdF9hLnN0YXRlID09IGhvc3RfYi5zdGF0ZToKKyAgICAgICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgICAgICBob3N0X2VsZW0uYXBwZW5kQ2hpbGQoaG9zdF9hLnN0YXRlX3RvX2RvbV9mcmFnbWVudChkb2N1bWVudCkpCisgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJhIikKKysgICAgICAgICAgICBhX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIikKKyAgICAgICAgICAgICBhX2VsZW0uYXBwZW5kQ2hpbGQoaG9zdF9hLnN0YXRlX3RvX2RvbV9mcmFnbWVudChkb2N1bWVudCkpCisgICAgICAgICAgICAgaG9zdF9lbGVtLmFwcGVuZENoaWxkKGFfZWxlbSkKKy0gICAgICAgICAgICBiX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUiYiIpCisrICAgICAgICAgICAgYl9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYiIpCisgICAgICAgICAgICAgYl9lbGVtLmFwcGVuZENoaWxkKGhvc3RfYi5zdGF0ZV90b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgICAgIGhvc3RfZWxlbS5hcHBlbmRDaGlsZChiX2VsZW0pCisgCitAQCAtODU0LDMxICs4NTEsMzEgQEAgY2xhc3MgSG9zdERpZmYob2JqZWN0KToKKyAgICAgICAgIGFkZHJzZXRfYiA9IHNldChob3N0X2IuYWRkcmVzc2VzKQorICAgICAgICAgZm9yIGFkZHIgaW4gc29ydGVkKGFkZHJzZXRfYS5pbnRlcnNlY3Rpb24oYWRkcnNldF9iKSk6CisgICAgICAgICAgICAgaG9zdF9lbGVtLmFwcGVuZENoaWxkKGFkZHIudG9fZG9tX2ZyYWdtZW50KGRvY3VtZW50KSkKKy0gICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJhIikKKysgICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKQorICAgICAgICAgZm9yIGFkZHIgaW4gc29ydGVkKGFkZHJzZXRfYSAtIGFkZHJzZXRfYik6CisgICAgICAgICAgICAgYV9lbGVtLmFwcGVuZENoaWxkKGFkZHIudG9fZG9tX2ZyYWdtZW50KGRvY3VtZW50KSkKKyAgICAgICAgIGlmIGFfZWxlbS5oYXNDaGlsZE5vZGVzKCk6CisgICAgICAgICAgICAgaG9zdF9lbGVtLmFwcGVuZENoaWxkKGFfZWxlbSkKKy0gICAgICAgIGJfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJiIikKKysgICAgICAgIGJfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImIiKQorICAgICAgICAgZm9yIGFkZHIgaW4gc29ydGVkKGFkZHJzZXRfYiAtIGFkZHJzZXRfYSk6CisgICAgICAgICAgICAgYl9lbGVtLmFwcGVuZENoaWxkKGFkZHIudG9fZG9tX2ZyYWdtZW50KGRvY3VtZW50KSkKKyAgICAgICAgIGlmIGJfZWxlbS5oYXNDaGlsZE5vZGVzKCk6CisgICAgICAgICAgICAgaG9zdF9lbGVtLmFwcGVuZENoaWxkKGJfZWxlbSkKKyAKKyAgICAgICAgICMgSG9zdCBuYW1lcy4KKy0gICAgICAgIGhvc3RuYW1lc19lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1Imhvc3RuYW1lcyIpCisrICAgICAgICBob3N0bmFtZXNfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImhvc3RuYW1lcyIpCisgICAgICAgICBob3N0bmFtZXNldF9hID0gc2V0KGhvc3RfYS5ob3N0bmFtZXMpCisgICAgICAgICBob3N0bmFtZXNldF9iID0gc2V0KGhvc3RfYi5ob3N0bmFtZXMpCisgICAgICAgICBmb3IgaG9zdG5hbWUgaW4gc29ydGVkKGhvc3RuYW1lc2V0X2EuaW50ZXJzZWN0aW9uKGhvc3RuYW1lc2V0X2IpKToKKyAgICAgICAgICAgICBob3N0bmFtZXNfZWxlbS5hcHBlbmRDaGlsZCgKKyAgICAgICAgICAgICAgICAgICAgIGhvc3RfYS5ob3N0bmFtZV90b19kb21fZnJhZ21lbnQoZG9jdW1lbnQsIGhvc3RuYW1lKSkKKy0gICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJhIikKKysgICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKQorICAgICAgICAgZm9yIGhvc3RuYW1lIGluIHNvcnRlZChob3N0bmFtZXNldF9hIC0gaG9zdG5hbWVzZXRfYik6CisgICAgICAgICAgICAgYV9lbGVtLmFwcGVuZENoaWxkKAorICAgICAgICAgICAgICAgICAgICAgaG9zdF9hLmhvc3RuYW1lX3RvX2RvbV9mcmFnbWVudChkb2N1bWVudCwgaG9zdG5hbWUpKQorICAgICAgICAgaWYgYV9lbGVtLmhhc0NoaWxkTm9kZXMoKToKKyAgICAgICAgICAgICBob3N0bmFtZXNfZWxlbS5hcHBlbmRDaGlsZChhX2VsZW0pCistICAgICAgICBiX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUiYiIpCisrICAgICAgICBiX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiIikKKyAgICAgICAgIGZvciBob3N0bmFtZSBpbiBzb3J0ZWQoaG9zdG5hbWVzZXRfYiAtIGhvc3RuYW1lc2V0X2EpOgorICAgICAgICAgICAgIGJfZWxlbS5hcHBlbmRDaGlsZCgKKyAgICAgICAgICAgICAgICAgICAgIGhvc3RfYi5ob3N0bmFtZV90b19kb21fZnJhZ21lbnQoZG9jdW1lbnQsIGhvc3RuYW1lKSkKK0BAIC04ODcsMTUgKzg4NCwxNSBAQCBjbGFzcyBIb3N0RGlmZihvYmplY3QpOgorICAgICAgICAgaWYgaG9zdG5hbWVzX2VsZW0uaGFzQ2hpbGROb2RlcygpOgorICAgICAgICAgICAgIGhvc3RfZWxlbS5hcHBlbmRDaGlsZChob3N0bmFtZXNfZWxlbSkKKyAKKy0gICAgICAgIHBvcnRzX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUicG9ydHMiKQorKyAgICAgICAgcG9ydHNfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInBvcnRzIikKKyAgICAgICAgICMgRXh0cmFwb3J0cy4KKyAgICAgICAgIGlmIGhvc3RfYS5leHRyYXBvcnRzID09IGhvc3RfYi5leHRyYXBvcnRzOgorICAgICAgICAgICAgIHBvcnRzX2VsZW0uYXBwZW5kQ2hpbGQoaG9zdF9hLmV4dHJhcG9ydHNfdG9fZG9tX2ZyYWdtZW50KGRvY3VtZW50KSkKKyAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgYV9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1ImEiKQorKyAgICAgICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKQorICAgICAgICAgICAgIGFfZWxlbS5hcHBlbmRDaGlsZChob3N0X2EuZXh0cmFwb3J0c190b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgICAgIHBvcnRzX2VsZW0uYXBwZW5kQ2hpbGQoYV9lbGVtKQorLSAgICAgICAgICAgIGJfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJiIikKKysgICAgICAgICAgICBiX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiIikKKyAgICAgICAgICAgICBiX2VsZW0uYXBwZW5kQ2hpbGQoaG9zdF9iLmV4dHJhcG9ydHNfdG9fZG9tX2ZyYWdtZW50KGRvY3VtZW50KSkKKyAgICAgICAgICAgICBwb3J0c19lbGVtLmFwcGVuZENoaWxkKGJfZWxlbSkKKyAgICAgICAgICMgUG9ydCBsaXN0LgorQEAgLTkxMSwxOCArOTA4LDE4IEBAIGNsYXNzIEhvc3REaWZmKG9iamVjdCk6CisgCisgICAgICAgICAjIE9TIGNoYW5nZXMuCisgICAgICAgICBpZiBzZWxmLm9zX2NoYW5nZWQgb3IgdmVyYm9zZToKKy0gICAgICAgICAgICBvc19lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1Im9zIikKKysgICAgICAgICAgICBvc19lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3MiKQorICAgICAgICAgICAgICMgb3NfZGlmZnMgaXMgYSBsaXN0IG9mIDUtdHVwbGVzIHJldHVybmVkIGJ5CisgICAgICAgICAgICAgIyBkaWZmbGliLlNlcXVlbmNlTWF0Y2hlci4KKyAgICAgICAgICAgICBmb3Igb3AsIGkxLCBpMiwgajEsIGoyIGluIHNlbGYub3NfZGlmZnM6CisgICAgICAgICAgICAgICAgIGlmIG9wID09ICJyZXBsYWNlIiBvciBvcCA9PSAiZGVsZXRlIjoKKy0gICAgICAgICAgICAgICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJhIikKKysgICAgICAgICAgICAgICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKQorICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoaTEsIGkyKToKKyAgICAgICAgICAgICAgICAgICAgICAgICBhX2VsZW0uYXBwZW5kQ2hpbGQoaG9zdF9hLm9zX3RvX2RvbV9mcmFnbWVudCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQsIGhvc3RfYS5vc1tpXSkpCisgICAgICAgICAgICAgICAgICAgICBvc19lbGVtLmFwcGVuZENoaWxkKGFfZWxlbSkKKyAgICAgICAgICAgICAgICAgaWYgb3AgPT0gInJlcGxhY2UiIG9yIG9wID09ICJpbnNlcnQiOgorLSAgICAgICAgICAgICAgICAgICAgYl9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1ImIiKQorKyAgICAgICAgICAgICAgICAgICAgYl9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYiIpCisgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShqMSwgajIpOgorICAgICAgICAgICAgICAgICAgICAgICAgIGJfZWxlbS5hcHBlbmRDaGlsZChob3N0X2Iub3NfdG9fZG9tX2ZyYWdtZW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudCwgaG9zdF9iLm9zW2ldKSkKK0BAIC05MzYsNyArOTMzLDcgQEAgY2xhc3MgSG9zdERpZmYob2JqZWN0KToKKyAKKyAgICAgICAgICMgSG9zdCBzY3JpcHQgY2hhbmdlcy4KKyAgICAgICAgIGlmIGxlbihzZWxmLnNjcmlwdF9yZXN1bHRfZGlmZnMpID4gMCBvciB2ZXJib3NlOgorLSAgICAgICAgICAgIGhvc3RzY3JpcHRfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJob3N0c2NyaXB0IikKKysgICAgICAgICAgICBob3N0c2NyaXB0X2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJob3N0c2NyaXB0IikKKyAgICAgICAgICAgICBob3N0X2VsZW0uYXBwZW5kQ2hpbGQoc2NyaXB0X3Jlc3VsdF9kaWZmc190b19kb21fZnJhZ21lbnQoCisgICAgICAgICAgICAgICAgIGhvc3RzY3JpcHRfZWxlbSwgaG9zdF9hLnNjcmlwdF9yZXN1bHRzLAorICAgICAgICAgICAgICAgICBob3N0X2Iuc2NyaXB0X3Jlc3VsdHMsIHNlbGYuc2NyaXB0X3Jlc3VsdF9kaWZmcywKK0BAIC05ODksMzggKzk4NiwzOCBAQCBjbGFzcyBQb3J0RGlmZihvYmplY3QpOgorICAgICAgICAgICAgIHNlbGYucG9ydF9iLnNlcnZpY2UudmVyc2lvbl9zdHJpbmcoKV0KKyAgICAgICAgIGlmIGFfY29sdW1ucyA9PSBiX2NvbHVtbnM6CisgICAgICAgICAgICAgaWYgdmVyYm9zZSBvciBzZWxmLnNjcmlwdF9yZXN1bHRfZGlmZnMgPiAwOgorLSAgICAgICAgICAgICAgICB0YWJsZS5hcHBlbmQoW3UiICJdICsgYV9jb2x1bW5zKQorKyAgICAgICAgICAgICAgICB0YWJsZS5hcHBlbmQoWyIgIl0gKyBhX2NvbHVtbnMpCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIGlmIG5vdCBob3N0X2EuaXNfZXh0cmFwb3J0cyhzZWxmLnBvcnRfYS5zdGF0ZSk6CistICAgICAgICAgICAgICAgIHRhYmxlLmFwcGVuZChbdSItIl0gKyBhX2NvbHVtbnMpCisrICAgICAgICAgICAgICAgIHRhYmxlLmFwcGVuZChbIi0iXSArIGFfY29sdW1ucykKKyAgICAgICAgICAgICBpZiBub3QgaG9zdF9iLmlzX2V4dHJhcG9ydHMoc2VsZi5wb3J0X2Iuc3RhdGUpOgorLSAgICAgICAgICAgICAgICB0YWJsZS5hcHBlbmQoW3UiKyJdICsgYl9jb2x1bW5zKQorKyAgICAgICAgICAgICAgICB0YWJsZS5hcHBlbmQoWyIrIl0gKyBiX2NvbHVtbnMpCisgCisgICAgICAgICBmb3Igc3JfZGlmZiBpbiBzZWxmLnNjcmlwdF9yZXN1bHRfZGlmZnM6CisgICAgICAgICAgICAgc3JfZGlmZi5hcHBlbmRfdG9fcG9ydF90YWJsZSh0YWJsZSkKKyAKKyAgICAgZGVmIHRvX2RvbV9mcmFnbWVudChzZWxmLCBkb2N1bWVudCk6CisgICAgICAgICBmcmFnID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpCistICAgICAgICBwb3J0ZGlmZl9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1InBvcnRkaWZmIikKKysgICAgICAgIHBvcnRkaWZmX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwb3J0ZGlmZiIpCisgICAgICAgICBmcmFnLmFwcGVuZENoaWxkKHBvcnRkaWZmX2VsZW0pCisgICAgICAgICBpZiAoc2VsZi5wb3J0X2Euc3BlYyA9PSBzZWxmLnBvcnRfYi5zcGVjIGFuZAorICAgICAgICAgICAgICAgICBzZWxmLnBvcnRfYS5zdGF0ZSA9PSBzZWxmLnBvcnRfYi5zdGF0ZSk6CistICAgICAgICAgICAgcG9ydF9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1InBvcnQiKQorLSAgICAgICAgICAgIHBvcnRfZWxlbS5zZXRBdHRyaWJ1dGUodSJwb3J0aWQiLCB1bmljb2RlKHNlbGYucG9ydF9hLnNwZWNbMF0pKQorLSAgICAgICAgICAgIHBvcnRfZWxlbS5zZXRBdHRyaWJ1dGUodSJwcm90b2NvbCIsIHNlbGYucG9ydF9hLnNwZWNbMV0pCisrICAgICAgICAgICAgcG9ydF9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicG9ydCIpCisrICAgICAgICAgICAgcG9ydF9lbGVtLnNldEF0dHJpYnV0ZSgicG9ydGlkIiwgc3RyKHNlbGYucG9ydF9hLnNwZWNbMF0pKQorKyAgICAgICAgICAgIHBvcnRfZWxlbS5zZXRBdHRyaWJ1dGUoInByb3RvY29sIiwgc2VsZi5wb3J0X2Euc3BlY1sxXSkKKyAgICAgICAgICAgICBpZiBzZWxmLnBvcnRfYS5zdGF0ZSBpcyBub3QgTm9uZToKKy0gICAgICAgICAgICAgICAgc3RhdGVfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJzdGF0ZSIpCistICAgICAgICAgICAgICAgIHN0YXRlX2VsZW0uc2V0QXR0cmlidXRlKHUic3RhdGUiLCBzZWxmLnBvcnRfYS5zdGF0ZSkKKysgICAgICAgICAgICAgICAgc3RhdGVfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0YXRlIikKKysgICAgICAgICAgICAgICAgc3RhdGVfZWxlbS5zZXRBdHRyaWJ1dGUoInN0YXRlIiwgc2VsZi5wb3J0X2Euc3RhdGUpCisgICAgICAgICAgICAgICAgIHBvcnRfZWxlbS5hcHBlbmRDaGlsZChzdGF0ZV9lbGVtKQorICAgICAgICAgICAgIGlmIHNlbGYucG9ydF9hLnNlcnZpY2UgPT0gc2VsZi5wb3J0X2Iuc2VydmljZToKKyAgICAgICAgICAgICAgICAgcG9ydF9lbGVtLmFwcGVuZENoaWxkKAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucG9ydF9hLnNlcnZpY2UudG9fZG9tX2ZyYWdtZW50KGRvY3VtZW50KSkKKyAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICBhX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUiYSIpCisrICAgICAgICAgICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKQorICAgICAgICAgICAgICAgICBhX2VsZW0uYXBwZW5kQ2hpbGQoCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3J0X2Euc2VydmljZS50b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgICAgICAgICBwb3J0X2VsZW0uYXBwZW5kQ2hpbGQoYV9lbGVtKQorLSAgICAgICAgICAgICAgICBiX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUiYiIpCisrICAgICAgICAgICAgICAgIGJfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImIiKQorICAgICAgICAgICAgICAgICBiX2VsZW0uYXBwZW5kQ2hpbGQoCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3J0X2Iuc2VydmljZS50b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgICAgICAgICBwb3J0X2VsZW0uYXBwZW5kQ2hpbGQoYl9lbGVtKQorQEAgLTEwMjgsMTAgKzEwMjUsMTAgQEAgY2xhc3MgUG9ydERpZmYob2JqZWN0KToKKyAgICAgICAgICAgICAgICAgcG9ydF9lbGVtLmFwcGVuZENoaWxkKHNyX2RpZmYudG9fZG9tX2ZyYWdtZW50KGRvY3VtZW50KSkKKyAgICAgICAgICAgICBwb3J0ZGlmZl9lbGVtLmFwcGVuZENoaWxkKHBvcnRfZWxlbSkKKyAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgYV9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1ImEiKQorKyAgICAgICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKQorICAgICAgICAgICAgIGFfZWxlbS5hcHBlbmRDaGlsZChzZWxmLnBvcnRfYS50b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgICAgIHBvcnRkaWZmX2VsZW0uYXBwZW5kQ2hpbGQoYV9lbGVtKQorLSAgICAgICAgICAgIGJfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJiIikKKysgICAgICAgICAgICBiX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiIikKKyAgICAgICAgICAgICBiX2VsZW0uYXBwZW5kQ2hpbGQoc2VsZi5wb3J0X2IudG9fZG9tX2ZyYWdtZW50KGRvY3VtZW50KSkKKyAgICAgICAgICAgICBwb3J0ZGlmZl9lbGVtLmFwcGVuZENoaWxkKGJfZWxlbSkKKyAKK0BAIC0xMDg2LDEzICsxMDgzLDEzIEBAIGNsYXNzIFNjcmlwdFJlc3VsdERpZmYob2JqZWN0KToKKyAgICAgICAgICAgICBmb3Igb3AsIGkxLCBpMiwgajEsIGoyIGluIGRpZmZzLmdldF9vcGNvZGVzKCk6CisgICAgICAgICAgICAgICAgIGlmIG9wID09ICJyZXBsYWNlIiBvciBvcCA9PSAiZGVsZXRlIjoKKyAgICAgICAgICAgICAgICAgICAgIGZvciBrIGluIHJhbmdlKGkxLCBpMik6CistICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuYXBwZW5kX3Jhdyh1Ii0iICsgYV9saW5lc1trXSkKKysgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS5hcHBlbmRfcmF3KCItIiArIGFfbGluZXNba10pCisgICAgICAgICAgICAgICAgIGlmIG9wID09ICJyZXBsYWNlIiBvciBvcCA9PSAiaW5zZXJ0IjoKKyAgICAgICAgICAgICAgICAgICAgIGZvciBrIGluIHJhbmdlKGoxLCBqMik6CistICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuYXBwZW5kX3Jhdyh1IisiICsgYl9saW5lc1trXSkKKysgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS5hcHBlbmRfcmF3KCIrIiArIGJfbGluZXNba10pCisgICAgICAgICAgICAgICAgIGlmIG9wID09ICJlcXVhbCI6CisgICAgICAgICAgICAgICAgICAgICBmb3IgayBpbiByYW5nZShpMSwgaTIpOgorLSAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLmFwcGVuZF9yYXcodSIgIiArIGFfbGluZXNba10pCisrICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuYXBwZW5kX3JhdygiICIgKyBhX2xpbmVzW2tdKQorIAorICAgICBkZWYgdG9fZG9tX2ZyYWdtZW50KHNlbGYsIGRvY3VtZW50KToKKyAgICAgICAgIGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkKK0BAIC0xMTAyLDExICsxMDk5LDExIEBAIGNsYXNzIFNjcmlwdFJlc3VsdERpZmYob2JqZWN0KToKKyAgICAgICAgICAgICBmcmFnLmFwcGVuZENoaWxkKHNlbGYuc3JfYS50b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICBpZiBzZWxmLnNyX2EgaXMgbm90IE5vbmU6CistICAgICAgICAgICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJhIikKKysgICAgICAgICAgICAgICAgYV9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpCisgICAgICAgICAgICAgICAgIGFfZWxlbS5hcHBlbmRDaGlsZChzZWxmLnNyX2EudG9fZG9tX2ZyYWdtZW50KGRvY3VtZW50KSkKKyAgICAgICAgICAgICAgICAgZnJhZy5hcHBlbmRDaGlsZChhX2VsZW0pCisgICAgICAgICAgICAgaWYgc2VsZi5zcl9iIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgICAgICBiX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUiYiIpCisrICAgICAgICAgICAgICAgIGJfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImIiKQorICAgICAgICAgICAgICAgICBiX2VsZW0uYXBwZW5kQ2hpbGQoc2VsZi5zcl9iLnRvX2RvbV9mcmFnbWVudChkb2N1bWVudCkpCisgICAgICAgICAgICAgICAgIGZyYWcuYXBwZW5kQ2hpbGQoYl9lbGVtKQorICAgICAgICAgcmV0dXJuIGZyYWcKK0BAIC0xMTIwLDcgKzExMTcsNyBAQCBjbGFzcyBUYWJsZShvYmplY3QpOgorICAgICAgICAgY29waWVkIHRvIHRoZSBvdXRwdXQuIiIiCisgICAgICAgICBzZWxmLndpZHRocyA9IFtdCisgICAgICAgICBzZWxmLnJvd3MgPSBbXQorLSAgICAgICAgc2VsZi5wcmVmaXggPSB1IiIKKysgICAgICAgIHNlbGYucHJlZml4ID0gIiIKKyAgICAgICAgIHNlbGYucGFkZGluZyA9IFtdCisgICAgICAgICBqID0gMAorICAgICAgICAgd2hpbGUgaiA8IGxlbih0ZW1wbGF0ZSkgYW5kIHRlbXBsYXRlW2pdICE9ICIqIjoKK0BAIC0xMTQ1LDcgKzExNDIsNyBAQCBjbGFzcyBUYWJsZShvYmplY3QpOgorIAorICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHJvdykpOgorICAgICAgICAgICAgIGlmIHJvd1tpXSBpcyBOb25lOgorLSAgICAgICAgICAgICAgICBzID0gdSIiCisrICAgICAgICAgICAgICAgIHMgPSAiIgorICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIHMgPSBzdHIocm93W2ldKQorICAgICAgICAgICAgIGlmIGkgPT0gbGVuKHNlbGYud2lkdGhzKToKK0BAIC0xMTY3LDcgKzExNjQsNyBAQCBjbGFzcyBUYWJsZShvYmplY3QpOgorICAgICAgICAgZm9yIHJvdyBpbiBzZWxmLnJvd3M6CisgICAgICAgICAgICAgcGFydHMgPSBbc2VsZi5wcmVmaXhdCisgICAgICAgICAgICAgaSA9IDAKKy0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJvdywgYmFzZXN0cmluZyk6CisrICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShyb3csIHN0cik6CisgICAgICAgICAgICAgICAgICMgQSByYXcgc3RyaW5nLgorICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQocm93KQorICAgICAgICAgICAgIGVsc2U6CitAQCAtMTE3NiwxMyArMTE3MywxMyBAQCBjbGFzcyBUYWJsZShvYmplY3QpOgorICAgICAgICAgICAgICAgICAgICAgaWYgaSA8IGxlbihzZWxmLnBhZGRpbmcpOgorICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChzZWxmLnBhZGRpbmdbaV0pCisgICAgICAgICAgICAgICAgICAgICBpICs9IDEKKy0gICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKHUiIi5qb2luKHBhcnRzKS5yc3RyaXAoKSkKKy0gICAgICAgIHJldHVybiB1IlxuIi5qb2luKGxpbmVzKQorKyAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiIuam9pbihwYXJ0cykucnN0cmlwKCkpCisrICAgICAgICByZXR1cm4gIlxuIi5qb2luKGxpbmVzKQorIAorIAorIGRlZiB3YXJuKHN0cik6CisgICAgICIiIlByaW50IGEgd2FybmluZyB0byBzdGRlcnIuIiIiCistICAgIHByaW50ID4+IHN5cy5zdGRlcnIsIHN0cgorKyAgICBwcmludChzdHIsIGZpbGU9c3lzLnN0ZGVycikKKyAKKyAKKyBjbGFzcyBObWFwQ29udGVudEhhbmRsZXIoeG1sLnNheC5oYW5kbGVyLkNvbnRlbnRIYW5kbGVyKToKK0BAIC0xMjAwLDIyICsxMTk3LDIyIEBAIGNsYXNzIE5tYXBDb250ZW50SGFuZGxlcih4bWwuc2F4LmhhbmRsZXIuQ29udGVudEhhbmRsZXIpOgorICAgICAgICAgc2VsZi5jdXJyZW50X3BvcnQgPSBOb25lCisgCisgICAgICAgICBzZWxmLl9zdGFydF9lbGVtX2hhbmRsZXJzID0geworLSAgICAgICAgICAgIHUibm1hcHJ1biI6IHNlbGYuX3N0YXJ0X25tYXBydW4sCistICAgICAgICAgICAgdSJob3N0Ijogc2VsZi5fc3RhcnRfaG9zdCwKKy0gICAgICAgICAgICB1InN0YXR1cyI6IHNlbGYuX3N0YXJ0X3N0YXR1cywKKy0gICAgICAgICAgICB1ImFkZHJlc3MiOiBzZWxmLl9zdGFydF9hZGRyZXNzLAorLSAgICAgICAgICAgIHUiaG9zdG5hbWUiOiBzZWxmLl9zdGFydF9ob3N0bmFtZSwKKy0gICAgICAgICAgICB1ImV4dHJhcG9ydHMiOiBzZWxmLl9zdGFydF9leHRyYXBvcnRzLAorLSAgICAgICAgICAgIHUicG9ydCI6IHNlbGYuX3N0YXJ0X3BvcnQsCistICAgICAgICAgICAgdSJzdGF0ZSI6IHNlbGYuX3N0YXJ0X3N0YXRlLAorLSAgICAgICAgICAgIHUic2VydmljZSI6IHNlbGYuX3N0YXJ0X3NlcnZpY2UsCistICAgICAgICAgICAgdSJzY3JpcHQiOiBzZWxmLl9zdGFydF9zY3JpcHQsCistICAgICAgICAgICAgdSJvc21hdGNoIjogc2VsZi5fc3RhcnRfb3NtYXRjaCwKKy0gICAgICAgICAgICB1ImZpbmlzaGVkIjogc2VsZi5fc3RhcnRfZmluaXNoZWQsCisrICAgICAgICAgICAgIm5tYXBydW4iOiBzZWxmLl9zdGFydF9ubWFwcnVuLAorKyAgICAgICAgICAgICJob3N0Ijogc2VsZi5fc3RhcnRfaG9zdCwKKysgICAgICAgICAgICAic3RhdHVzIjogc2VsZi5fc3RhcnRfc3RhdHVzLAorKyAgICAgICAgICAgICJhZGRyZXNzIjogc2VsZi5fc3RhcnRfYWRkcmVzcywKKysgICAgICAgICAgICAiaG9zdG5hbWUiOiBzZWxmLl9zdGFydF9ob3N0bmFtZSwKKysgICAgICAgICAgICAiZXh0cmFwb3J0cyI6IHNlbGYuX3N0YXJ0X2V4dHJhcG9ydHMsCisrICAgICAgICAgICAgInBvcnQiOiBzZWxmLl9zdGFydF9wb3J0LAorKyAgICAgICAgICAgICJzdGF0ZSI6IHNlbGYuX3N0YXJ0X3N0YXRlLAorKyAgICAgICAgICAgICJzZXJ2aWNlIjogc2VsZi5fc3RhcnRfc2VydmljZSwKKysgICAgICAgICAgICAic2NyaXB0Ijogc2VsZi5fc3RhcnRfc2NyaXB0LAorKyAgICAgICAgICAgICJvc21hdGNoIjogc2VsZi5fc3RhcnRfb3NtYXRjaCwKKysgICAgICAgICAgICAiZmluaXNoZWQiOiBzZWxmLl9zdGFydF9maW5pc2hlZCwKKyAgICAgICAgIH0KKyAgICAgICAgIHNlbGYuX2VuZF9lbGVtX2hhbmRsZXJzID0geworLSAgICAgICAgICAgIHUnaG9zdCc6IHNlbGYuX2VuZF9ob3N0LAorLSAgICAgICAgICAgIHUncG9ydCc6IHNlbGYuX2VuZF9wb3J0LAorKyAgICAgICAgICAgICdob3N0Jzogc2VsZi5fZW5kX2hvc3QsCisrICAgICAgICAgICAgJ3BvcnQnOiBzZWxmLl9lbmRfcG9ydCwKKyAgICAgICAgIH0KKyAKKyAgICAgZGVmIHBhcmVudF9lbGVtZW50KHNlbGYpOgorQEAgLTEyNDUsNjggKzEyNDIsNjggQEAgY2xhc3MgTm1hcENvbnRlbnRIYW5kbGVyKHhtbC5zYXguaGFuZGxlci5Db250ZW50SGFuZGxlcik6CisgICAgIGRlZiBfc3RhcnRfbm1hcHJ1bihzZWxmLCBuYW1lLCBhdHRycyk6CisgICAgICAgICBhc3NlcnQgc2VsZi5wYXJlbnRfZWxlbWVudCgpIGlzIE5vbmUKKyAgICAgICAgIGlmICJzdGFydCIgaW4gYXR0cnM6CistICAgICAgICAgICAgc3RhcnRfdGltZXN0YW1wID0gaW50KGF0dHJzLmdldCh1InN0YXJ0IikpCisrICAgICAgICAgICAgc3RhcnRfdGltZXN0YW1wID0gaW50KGF0dHJzLmdldCgic3RhcnQiKSkKKyAgICAgICAgICAgICBzZWxmLnNjYW4uc3RhcnRfZGF0ZSA9IGRhdGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAoCisgICAgICAgICAgICAgICAgICAgICBzdGFydF90aW1lc3RhbXApCistICAgICAgICBzZWxmLnNjYW4uc2Nhbm5lciA9IGF0dHJzLmdldCh1InNjYW5uZXIiKQorLSAgICAgICAgc2VsZi5zY2FuLmFyZ3MgPSBhdHRycy5nZXQodSJhcmdzIikKKy0gICAgICAgIHNlbGYuc2Nhbi52ZXJzaW9uID0gYXR0cnMuZ2V0KHUidmVyc2lvbiIpCisrICAgICAgICBzZWxmLnNjYW4uc2Nhbm5lciA9IGF0dHJzLmdldCgic2Nhbm5lciIpCisrICAgICAgICBzZWxmLnNjYW4uYXJncyA9IGF0dHJzLmdldCgiYXJncyIpCisrICAgICAgICBzZWxmLnNjYW4udmVyc2lvbiA9IGF0dHJzLmdldCgidmVyc2lvbiIpCisgCisgICAgIGRlZiBfc3RhcnRfaG9zdChzZWxmLCBuYW1lLCBhdHRycyk6CistICAgICAgICBhc3NlcnQgc2VsZi5wYXJlbnRfZWxlbWVudCgpID09IHUibm1hcHJ1biIKKysgICAgICAgIGFzc2VydCBzZWxmLnBhcmVudF9lbGVtZW50KCkgPT0gIm5tYXBydW4iCisgICAgICAgICBzZWxmLmN1cnJlbnRfaG9zdCA9IEhvc3QoKQorICAgICAgICAgc2VsZi5zY2FuLmhvc3RzLmFwcGVuZChzZWxmLmN1cnJlbnRfaG9zdCkKKyAKKyAgICAgZGVmIF9zdGFydF9zdGF0dXMoc2VsZiwgbmFtZSwgYXR0cnMpOgorLSAgICAgICAgYXNzZXJ0IHNlbGYucGFyZW50X2VsZW1lbnQoKSA9PSB1Imhvc3QiCisrICAgICAgICBhc3NlcnQgc2VsZi5wYXJlbnRfZWxlbWVudCgpID09ICJob3N0IgorICAgICAgICAgYXNzZXJ0IHNlbGYuY3VycmVudF9ob3N0IGlzIG5vdCBOb25lCistICAgICAgICBzdGF0ZSA9IGF0dHJzLmdldCh1InN0YXRlIikKKysgICAgICAgIHN0YXRlID0gYXR0cnMuZ2V0KCJzdGF0ZSIpCisgICAgICAgICBpZiBzdGF0ZSBpcyBOb25lOgorICAgICAgICAgICAgIHdhcm4odSclcyBlbGVtZW50IG9mIGhvc3QgJXMgaXMgbWlzc2luZyB0aGUgInN0YXRlIiBhdHRyaWJ1dGU7ICcKKy0gICAgICAgICAgICAgICAgICAgICdhc3N1bWluZyBcdW5rbm93blwuJyAlICgKKysgICAgICAgICAgICAgICAgICAgIHInYXNzdW1pbmcgXHVua25vd25cLicgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc2VsZi5jdXJyZW50X2hvc3QuZm9ybWF0X25hbWUoKSkpCisgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICBzZWxmLmN1cnJlbnRfaG9zdC5zdGF0ZSA9IHN0YXRlCisgCisgICAgIGRlZiBfc3RhcnRfYWRkcmVzcyhzZWxmLCBuYW1lLCBhdHRycyk6CistICAgICAgICBhc3NlcnQgc2VsZi5wYXJlbnRfZWxlbWVudCgpID09IHUiaG9zdCIKKysgICAgICAgIGFzc2VydCBzZWxmLnBhcmVudF9lbGVtZW50KCkgPT0gImhvc3QiCisgICAgICAgICBhc3NlcnQgc2VsZi5jdXJyZW50X2hvc3QgaXMgbm90IE5vbmUKKy0gICAgICAgIGFkZHIgPSBhdHRycy5nZXQodSJhZGRyIikKKysgICAgICAgIGFkZHIgPSBhdHRycy5nZXQoImFkZHIiKQorICAgICAgICAgaWYgYWRkciBpcyBOb25lOgorLSAgICAgICAgICAgIHdhcm4odSclcyBlbGVtZW50IG9mIGhvc3QgJXMgaXMgbWlzc2luZyB0aGUgImFkZHIiICcKKysgICAgICAgICAgICB3YXJuKCclcyBlbGVtZW50IG9mIGhvc3QgJXMgaXMgbWlzc2luZyB0aGUgImFkZHIiICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGU7IHNraXBwaW5nLicgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc2VsZi5jdXJyZW50X2hvc3QuZm9ybWF0X25hbWUoKSkpCisgICAgICAgICAgICAgcmV0dXJuCistICAgICAgICBhZGRydHlwZSA9IGF0dHJzLmdldCh1ImFkZHJ0eXBlIiwgdSJpcHY0IikKKysgICAgICAgIGFkZHJ0eXBlID0gYXR0cnMuZ2V0KCJhZGRydHlwZSIsICJpcHY0IikKKyAgICAgICAgIHNlbGYuY3VycmVudF9ob3N0LmFkZF9hZGRyZXNzKEFkZHJlc3MubmV3KGFkZHJ0eXBlLCBhZGRyKSkKKyAKKyAgICAgZGVmIF9zdGFydF9ob3N0bmFtZShzZWxmLCBuYW1lLCBhdHRycyk6CistICAgICAgICBhc3NlcnQgc2VsZi5wYXJlbnRfZWxlbWVudCgpID09IHUiaG9zdG5hbWVzIgorKyAgICAgICAgYXNzZXJ0IHNlbGYucGFyZW50X2VsZW1lbnQoKSA9PSAiaG9zdG5hbWVzIgorICAgICAgICAgYXNzZXJ0IHNlbGYuY3VycmVudF9ob3N0IGlzIG5vdCBOb25lCistICAgICAgICBob3N0bmFtZSA9IGF0dHJzLmdldCh1Im5hbWUiKQorKyAgICAgICAgaG9zdG5hbWUgPSBhdHRycy5nZXQoIm5hbWUiKQorICAgICAgICAgaWYgaG9zdG5hbWUgaXMgTm9uZToKKy0gICAgICAgICAgICB3YXJuKHUnJXMgZWxlbWVudCBvZiBob3N0ICVzIGlzIG1pc3NpbmcgdGhlICJuYW1lIiAnCisrICAgICAgICAgICAgd2FybignJXMgZWxlbWVudCBvZiBob3N0ICVzIGlzIG1pc3NpbmcgdGhlICJuYW1lIiAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlOyBza2lwcGluZy4nICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHNlbGYuY3VycmVudF9ob3N0LmZvcm1hdF9uYW1lKCkpKQorICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgc2VsZi5jdXJyZW50X2hvc3QuYWRkX2hvc3RuYW1lKGhvc3RuYW1lKQorIAorICAgICBkZWYgX3N0YXJ0X2V4dHJhcG9ydHMoc2VsZiwgbmFtZSwgYXR0cnMpOgorLSAgICAgICAgYXNzZXJ0IHNlbGYucGFyZW50X2VsZW1lbnQoKSA9PSB1InBvcnRzIgorKyAgICAgICAgYXNzZXJ0IHNlbGYucGFyZW50X2VsZW1lbnQoKSA9PSAicG9ydHMiCisgICAgICAgICBhc3NlcnQgc2VsZi5jdXJyZW50X2hvc3QgaXMgbm90IE5vbmUKKy0gICAgICAgIHN0YXRlID0gYXR0cnMuZ2V0KHUic3RhdGUiKQorKyAgICAgICAgc3RhdGUgPSBhdHRycy5nZXQoInN0YXRlIikKKyAgICAgICAgIGlmIHN0YXRlIGlzIE5vbmU6CistICAgICAgICAgICAgd2Fybih1JyVzIGVsZW1lbnQgb2YgaG9zdCAlcyBpcyBtaXNzaW5nIHRoZSAic3RhdGUiICcKKysgICAgICAgICAgICB3YXJuKCclcyBlbGVtZW50IG9mIGhvc3QgJXMgaXMgbWlzc2luZyB0aGUgInN0YXRlIiAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlOyBhc3N1bWluZyAidW5rbm93biIuJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBzZWxmLmN1cnJlbnRfaG9zdC5mb3JtYXRfbmFtZSgpKSkKKyAgICAgICAgICAgICBzdGF0ZSA9IE5vbmUKKyAgICAgICAgIGlmIHN0YXRlIGluIHNlbGYuY3VycmVudF9ob3N0LmV4dHJhcG9ydHM6CistICAgICAgICAgICAgd2Fybih1J0R1cGxpY2F0ZSBleHRyYXBvcnRzIHN0YXRlICIlcyIgaW4gaG9zdCAlcy4nICUgKAorKyAgICAgICAgICAgIHdhcm4oJ0R1cGxpY2F0ZSBleHRyYXBvcnRzIHN0YXRlICIlcyIgaW4gaG9zdCAlcy4nICUgKAorICAgICAgICAgICAgICAgICBzdGF0ZSwgc2VsZi5jdXJyZW50X2hvc3QuZm9ybWF0X25hbWUoKSkpCisgCistICAgICAgICBjb3VudCA9IGF0dHJzLmdldCh1ImNvdW50IikKKysgICAgICAgIGNvdW50ID0gYXR0cnMuZ2V0KCJjb3VudCIpCisgICAgICAgICBpZiBjb3VudCBpcyBOb25lOgorLSAgICAgICAgICAgIHdhcm4odSclcyBlbGVtZW50IG9mIGhvc3QgJXMgaXMgbWlzc2luZyB0aGUgImNvdW50IiAnCisrICAgICAgICAgICAgd2FybignJXMgZWxlbWVudCBvZiBob3N0ICVzIGlzIG1pc3NpbmcgdGhlICJjb3VudCIgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZTsgYXNzdW1pbmcgMC4nICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHNlbGYuY3VycmVudF9ob3N0LmZvcm1hdF9uYW1lKCkpKQorICAgICAgICAgICAgIGNvdW50ID0gMAorQEAgLTEzMTQsOTkgKzEzMTEsOTkgQEAgY2xhc3MgTm1hcENvbnRlbnRIYW5kbGVyKHhtbC5zYXguaGFuZGxlci5Db250ZW50SGFuZGxlcik6CisgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICBjb3VudCA9IGludChjb3VudCkKKyAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKy0gICAgICAgICAgICAgICAgd2Fybih1IkNhbid0IGNvbnZlcnQgZXh0cmFwb3J0cyBjb3VudCBcIiVzXCIgIgorKyAgICAgICAgICAgICAgICB3YXJuKCJDYW4ndCBjb252ZXJ0IGV4dHJhcG9ydHMgY291bnQgXCIlc1wiICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAidG8gYW4gaW50ZWdlciBpbiBob3N0ICVzOyBhc3N1bWluZyAwLiIgJSAoCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzW3UiY291bnQiXSwgc2VsZi5jdXJyZW50X2hvc3QuZm9ybWF0X25hbWUoKSkpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzWyJjb3VudCJdLCBzZWxmLmN1cnJlbnRfaG9zdC5mb3JtYXRfbmFtZSgpKSkKKyAgICAgICAgICAgICAgICAgY291bnQgPSAwCisgICAgICAgICBzZWxmLmN1cnJlbnRfaG9zdC5leHRyYXBvcnRzW3N0YXRlXSA9IGNvdW50CisgCisgICAgIGRlZiBfc3RhcnRfcG9ydChzZWxmLCBuYW1lLCBhdHRycyk6CistICAgICAgICBhc3NlcnQgc2VsZi5wYXJlbnRfZWxlbWVudCgpID09IHUicG9ydHMiCisrICAgICAgICBhc3NlcnQgc2VsZi5wYXJlbnRfZWxlbWVudCgpID09ICJwb3J0cyIKKyAgICAgICAgIGFzc2VydCBzZWxmLmN1cnJlbnRfaG9zdCBpcyBub3QgTm9uZQorLSAgICAgICAgcG9ydGlkX3N0ciA9IGF0dHJzLmdldCh1InBvcnRpZCIpCisrICAgICAgICBwb3J0aWRfc3RyID0gYXR0cnMuZ2V0KCJwb3J0aWQiKQorICAgICAgICAgaWYgcG9ydGlkX3N0ciBpcyBOb25lOgorLSAgICAgICAgICAgIHdhcm4odSclcyBlbGVtZW50IG9mIGhvc3QgJXMgbWlzc2luZyB0aGUgInBvcnRpZCIgJworKyAgICAgICAgICAgIHdhcm4oJyVzIGVsZW1lbnQgb2YgaG9zdCAlcyBtaXNzaW5nIHRoZSAicG9ydGlkIiAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlOyBza2lwcGluZy4nICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHNlbGYuY3VycmVudF9ob3N0LmZvcm1hdF9uYW1lKCkpKQorICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgdHJ5OgorICAgICAgICAgICAgIHBvcnRpZCA9IGludChwb3J0aWRfc3RyKQorICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CistICAgICAgICAgICAgd2Fybih1IkNhbid0IGNvbnZlcnQgcG9ydGlkIFwiJXNcIiB0byBhbiBpbnRlZ2VyICIKKysgICAgICAgICAgICB3YXJuKCJDYW4ndCBjb252ZXJ0IHBvcnRpZCBcIiVzXCIgdG8gYW4gaW50ZWdlciAiCisgICAgICAgICAgICAgICAgICAgICAiaW4gaG9zdCAlczsgc2tpcHBpbmcgcG9ydC4iICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRpZF9zdHIsIHNlbGYuY3VycmVudF9ob3N0LmZvcm1hdF9uYW1lKCkpKQorICAgICAgICAgICAgIHJldHVybgorLSAgICAgICAgcHJvdG9jb2wgPSBhdHRycy5nZXQodSJwcm90b2NvbCIpCisrICAgICAgICBwcm90b2NvbCA9IGF0dHJzLmdldCgicHJvdG9jb2wiKQorICAgICAgICAgaWYgcHJvdG9jb2wgaXMgTm9uZToKKy0gICAgICAgICAgICB3YXJuKHUnJXMgZWxlbWVudCBvZiBob3N0ICVzIG1pc3NpbmcgdGhlICJwcm90b2NvbCIgJworKyAgICAgICAgICAgIHdhcm4oJyVzIGVsZW1lbnQgb2YgaG9zdCAlcyBtaXNzaW5nIHRoZSAicHJvdG9jb2wiICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGU7IHNraXBwaW5nLicgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc2VsZi5jdXJyZW50X2hvc3QuZm9ybWF0X25hbWUoKSkpCisgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICBzZWxmLmN1cnJlbnRfcG9ydCA9IFBvcnQoKHBvcnRpZCwgcHJvdG9jb2wpKQorIAorICAgICBkZWYgX3N0YXJ0X3N0YXRlKHNlbGYsIG5hbWUsIGF0dHJzKToKKy0gICAgICAgIGFzc2VydCBzZWxmLnBhcmVudF9lbGVtZW50KCkgPT0gdSJwb3J0IgorKyAgICAgICAgYXNzZXJ0IHNlbGYucGFyZW50X2VsZW1lbnQoKSA9PSAicG9ydCIKKyAgICAgICAgIGFzc2VydCBzZWxmLmN1cnJlbnRfaG9zdCBpcyBub3QgTm9uZQorICAgICAgICAgaWYgc2VsZi5jdXJyZW50X3BvcnQgaXMgTm9uZToKKyAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgIGlmICJzdGF0ZSIgbm90IGluIGF0dHJzOgorLSAgICAgICAgICAgIHdhcm4odSclcyBlbGVtZW50IG9mIHBvcnQgJXMgaXMgbWlzc2luZyB0aGUgInN0YXRlIiAnCisrICAgICAgICAgICAgd2FybignJXMgZWxlbWVudCBvZiBwb3J0ICVzIGlzIG1pc3NpbmcgdGhlICJzdGF0ZSIgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZTsgYXNzdW1pbmcgInVua25vd24iLicgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc2VsZi5jdXJyZW50X3BvcnQuc3BlY19zdHJpbmcoKSkpCisgICAgICAgICAgICAgcmV0dXJuCistICAgICAgICBzZWxmLmN1cnJlbnRfcG9ydC5zdGF0ZSA9IGF0dHJzW3Uic3RhdGUiXQorKyAgICAgICAgc2VsZi5jdXJyZW50X3BvcnQuc3RhdGUgPSBhdHRyc1sic3RhdGUiXQorICAgICAgICAgc2VsZi5jdXJyZW50X2hvc3QuYWRkX3BvcnQoc2VsZi5jdXJyZW50X3BvcnQpCisgCisgICAgIGRlZiBfc3RhcnRfc2VydmljZShzZWxmLCBuYW1lLCBhdHRycyk6CistICAgICAgICBhc3NlcnQgc2VsZi5wYXJlbnRfZWxlbWVudCgpID09IHUicG9ydCIKKysgICAgICAgIGFzc2VydCBzZWxmLnBhcmVudF9lbGVtZW50KCkgPT0gInBvcnQiCisgICAgICAgICBhc3NlcnQgc2VsZi5jdXJyZW50X2hvc3QgaXMgbm90IE5vbmUKKyAgICAgICAgIGlmIHNlbGYuY3VycmVudF9wb3J0IGlzIE5vbmU6CisgICAgICAgICAgICAgcmV0dXJuCistICAgICAgICBzZWxmLmN1cnJlbnRfcG9ydC5zZXJ2aWNlLm5hbWUgPSBhdHRycy5nZXQodSJuYW1lIikKKy0gICAgICAgIHNlbGYuY3VycmVudF9wb3J0LnNlcnZpY2UucHJvZHVjdCA9IGF0dHJzLmdldCh1InByb2R1Y3QiKQorLSAgICAgICAgc2VsZi5jdXJyZW50X3BvcnQuc2VydmljZS52ZXJzaW9uID0gYXR0cnMuZ2V0KHUidmVyc2lvbiIpCistICAgICAgICBzZWxmLmN1cnJlbnRfcG9ydC5zZXJ2aWNlLmV4dHJhaW5mbyA9IGF0dHJzLmdldCh1ImV4dHJhaW5mbyIpCistICAgICAgICBzZWxmLmN1cnJlbnRfcG9ydC5zZXJ2aWNlLnR1bm5lbCA9IGF0dHJzLmdldCh1InR1bm5lbCIpCisrICAgICAgICBzZWxmLmN1cnJlbnRfcG9ydC5zZXJ2aWNlLm5hbWUgPSBhdHRycy5nZXQoIm5hbWUiKQorKyAgICAgICAgc2VsZi5jdXJyZW50X3BvcnQuc2VydmljZS5wcm9kdWN0ID0gYXR0cnMuZ2V0KCJwcm9kdWN0IikKKysgICAgICAgIHNlbGYuY3VycmVudF9wb3J0LnNlcnZpY2UudmVyc2lvbiA9IGF0dHJzLmdldCgidmVyc2lvbiIpCisrICAgICAgICBzZWxmLmN1cnJlbnRfcG9ydC5zZXJ2aWNlLmV4dHJhaW5mbyA9IGF0dHJzLmdldCgiZXh0cmFpbmZvIikKKysgICAgICAgIHNlbGYuY3VycmVudF9wb3J0LnNlcnZpY2UudHVubmVsID0gYXR0cnMuZ2V0KCJ0dW5uZWwiKQorIAorICAgICBkZWYgX3N0YXJ0X3NjcmlwdChzZWxmLCBuYW1lLCBhdHRycyk6CisgICAgICAgICByZXN1bHQgPSBTY3JpcHRSZXN1bHQoKQorLSAgICAgICAgcmVzdWx0LmlkID0gYXR0cnMuZ2V0KHUiaWQiKQorKyAgICAgICAgcmVzdWx0LmlkID0gYXR0cnMuZ2V0KCJpZCIpCisgICAgICAgICBpZiByZXN1bHQuaWQgaXMgTm9uZToKKy0gICAgICAgICAgICB3YXJuKHUnJXMgZWxlbWVudCBtaXNzaW5nIHRoZSAiaWQiIGF0dHJpYnV0ZTsgc2tpcHBpbmcuJyAlIG5hbWUpCisrICAgICAgICAgICAgd2FybignJXMgZWxlbWVudCBtaXNzaW5nIHRoZSAiaWQiIGF0dHJpYnV0ZTsgc2tpcHBpbmcuJyAlIG5hbWUpCisgICAgICAgICAgICAgcmV0dXJuCisgCistICAgICAgICByZXN1bHQub3V0cHV0ID0gYXR0cnMuZ2V0KHUib3V0cHV0IikKKysgICAgICAgIHJlc3VsdC5vdXRwdXQgPSBhdHRycy5nZXQoIm91dHB1dCIpCisgICAgICAgICBpZiByZXN1bHQub3V0cHV0IGlzIE5vbmU6CistICAgICAgICAgICAgd2Fybih1JyVzIGVsZW1lbnQgbWlzc2luZyB0aGUgIm91dHB1dCIgYXR0cmlidXRlOyBza2lwcGluZy4nCisrICAgICAgICAgICAgd2FybignJXMgZWxlbWVudCBtaXNzaW5nIHRoZSAib3V0cHV0IiBhdHRyaWJ1dGU7IHNraXBwaW5nLicKKyAgICAgICAgICAgICAgICAgICAgICUgbmFtZSkKKyAgICAgICAgICAgICByZXR1cm4KKy0gICAgICAgIGlmIHNlbGYucGFyZW50X2VsZW1lbnQoKSA9PSB1InByZXNjcmlwdCI6CisrICAgICAgICBpZiBzZWxmLnBhcmVudF9lbGVtZW50KCkgPT0gInByZXNjcmlwdCI6CisgICAgICAgICAgICAgc2VsZi5zY2FuLnByZV9zY3JpcHRfcmVzdWx0cy5hcHBlbmQocmVzdWx0KQorLSAgICAgICAgZWxpZiBzZWxmLnBhcmVudF9lbGVtZW50KCkgPT0gdSJwb3N0c2NyaXB0IjoKKysgICAgICAgIGVsaWYgc2VsZi5wYXJlbnRfZWxlbWVudCgpID09ICJwb3N0c2NyaXB0IjoKKyAgICAgICAgICAgICBzZWxmLnNjYW4ucG9zdF9zY3JpcHRfcmVzdWx0cy5hcHBlbmQocmVzdWx0KQorLSAgICAgICAgZWxpZiBzZWxmLnBhcmVudF9lbGVtZW50KCkgPT0gdSJob3N0c2NyaXB0IjoKKysgICAgICAgIGVsaWYgc2VsZi5wYXJlbnRfZWxlbWVudCgpID09ICJob3N0c2NyaXB0IjoKKyAgICAgICAgICAgICBzZWxmLmN1cnJlbnRfaG9zdC5zY3JpcHRfcmVzdWx0cy5hcHBlbmQocmVzdWx0KQorLSAgICAgICAgZWxpZiBzZWxmLnBhcmVudF9lbGVtZW50KCkgPT0gdSJwb3J0IjoKKysgICAgICAgIGVsaWYgc2VsZi5wYXJlbnRfZWxlbWVudCgpID09ICJwb3J0IjoKKyAgICAgICAgICAgICBzZWxmLmN1cnJlbnRfcG9ydC5zY3JpcHRfcmVzdWx0cy5hcHBlbmQocmVzdWx0KQorICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICB3YXJuKHUiJXMgZWxlbWVudCBub3QgaW5zaWRlIHByZXNjcmlwdCwgcG9zdHNjcmlwdCwgaG9zdHNjcmlwdCwgIgorKyAgICAgICAgICAgIHdhcm4oIiVzIGVsZW1lbnQgbm90IGluc2lkZSBwcmVzY3JpcHQsIHBvc3RzY3JpcHQsIGhvc3RzY3JpcHQsICIKKyAgICAgICAgICAgICAgICAgICAgICJvciBwb3J0IGVsZW1lbnQ7IGlnbm9yaW5nLiIgJSBuYW1lKQorICAgICAgICAgICAgIHJldHVybgorIAorICAgICBkZWYgX3N0YXJ0X29zbWF0Y2goc2VsZiwgbmFtZSwgYXR0cnMpOgorLSAgICAgICAgYXNzZXJ0IHNlbGYucGFyZW50X2VsZW1lbnQoKSA9PSB1Im9zIgorKyAgICAgICAgYXNzZXJ0IHNlbGYucGFyZW50X2VsZW1lbnQoKSA9PSAib3MiCisgICAgICAgICBhc3NlcnQgc2VsZi5jdXJyZW50X2hvc3QgaXMgbm90IE5vbmUKKyAgICAgICAgIGlmICJuYW1lIiBub3QgaW4gYXR0cnM6CistICAgICAgICAgICAgd2Fybih1JyVzIGVsZW1lbnQgb2YgaG9zdCAlcyBpcyBtaXNzaW5nIHRoZSAibmFtZSIgJworKyAgICAgICAgICAgIHdhcm4oJyVzIGVsZW1lbnQgb2YgaG9zdCAlcyBpcyBtaXNzaW5nIHRoZSAibmFtZSIgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZTsgc2tpcHBpbmcuJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBzZWxmLmN1cnJlbnRfaG9zdC5mb3JtYXRfbmFtZSgpKSkKKyAgICAgICAgICAgICByZXR1cm4KKy0gICAgICAgIHNlbGYuY3VycmVudF9ob3N0Lm9zLmFwcGVuZChhdHRyc1t1Im5hbWUiXSkKKysgICAgICAgIHNlbGYuY3VycmVudF9ob3N0Lm9zLmFwcGVuZChhdHRyc1sibmFtZSJdKQorIAorICAgICBkZWYgX3N0YXJ0X2ZpbmlzaGVkKHNlbGYsIG5hbWUsIGF0dHJzKToKKy0gICAgICAgIGFzc2VydCBzZWxmLnBhcmVudF9lbGVtZW50KCkgPT0gdSJydW5zdGF0cyIKKysgICAgICAgIGFzc2VydCBzZWxmLnBhcmVudF9lbGVtZW50KCkgPT0gInJ1bnN0YXRzIgorICAgICAgICAgaWYgInRpbWUiIGluIGF0dHJzOgorLSAgICAgICAgICAgIGVuZF90aW1lc3RhbXAgPSBpbnQoYXR0cnMuZ2V0KHUidGltZSIpKQorKyAgICAgICAgICAgIGVuZF90aW1lc3RhbXAgPSBpbnQoYXR0cnMuZ2V0KCJ0aW1lIikpCisgICAgICAgICAgICAgc2VsZi5zY2FuLmVuZF9kYXRlID0gZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChlbmRfdGltZXN0YW1wKQorIAorICAgICBkZWYgX2VuZF9ob3N0KHNlbGYsIG5hbWUpOgorQEAgLTE0MjUsMjMgKzE0MjIsMjMgQEAgY2xhc3MgWE1MV3JpdGVyICh4bWwuc2F4LnNheHV0aWxzLlhNTEdlbmVyYXRvcik6CisgCisgICAgIGRlZiBmcmFnKHNlbGYsIGZyYWcpOgorICAgICAgICAgZm9yIG5vZGUgaW4gZnJhZy5jaGlsZE5vZGVzOgorLSAgICAgICAgICAgIG5vZGUud3JpdGV4bWwoc2VsZi5mLCBuZXdsPXUiXG4iKQorKyAgICAgICAgICAgIG5vZGUud3JpdGV4bWwoc2VsZi5mLCBuZXdsPSJcbiIpCisgCisgICAgIGRlZiBmcmFnX2Eoc2VsZiwgZnJhZyk6CistICAgICAgICBzZWxmLnN0YXJ0RWxlbWVudCh1ImEiLCB7fSkKKysgICAgICAgIHNlbGYuc3RhcnRFbGVtZW50KCJhIiwge30pCisgICAgICAgICBmb3Igbm9kZSBpbiBmcmFnLmNoaWxkTm9kZXM6CistICAgICAgICAgICAgbm9kZS53cml0ZXhtbChzZWxmLmYsIG5ld2w9dSJcbiIpCistICAgICAgICBzZWxmLmVuZEVsZW1lbnQodSJhIikKKysgICAgICAgICAgICBub2RlLndyaXRleG1sKHNlbGYuZiwgbmV3bD0iXG4iKQorKyAgICAgICAgc2VsZi5lbmRFbGVtZW50KCJhIikKKyAKKyAgICAgZGVmIGZyYWdfYihzZWxmLCBmcmFnKToKKy0gICAgICAgIHNlbGYuc3RhcnRFbGVtZW50KHUiYiIsIHt9KQorKyAgICAgICAgc2VsZi5zdGFydEVsZW1lbnQoImIiLCB7fSkKKyAgICAgICAgIGZvciBub2RlIGluIGZyYWcuY2hpbGROb2RlczoKKy0gICAgICAgICAgICBub2RlLndyaXRleG1sKHNlbGYuZiwgbmV3bD11IlxuIikKKy0gICAgICAgIHNlbGYuZW5kRWxlbWVudCh1ImIiKQorKyAgICAgICAgICAgIG5vZGUud3JpdGV4bWwoc2VsZi5mLCBuZXdsPSJcbiIpCisrICAgICAgICBzZWxmLmVuZEVsZW1lbnQoImIiKQorIAorIAorIGRlZiB1c2FnZSgpOgorLSAgICBwcmludCB1IiIiXAorKyAgICBwcmludCgiIiJcCisgVXNhZ2U6ICVzIFtvcHRpb25dIEZJTEUxIEZJTEUyCisgQ29tcGFyZSB0d28gTm1hcCBYTUwgZmlsZXMgYW5kIGRpc3BsYXkgYSBsaXN0IG9mIHRoZWlyIGRpZmZlcmVuY2VzLgorIERpZmZlcmVuY2VzIGluY2x1ZGUgaG9zdCBzdGF0ZSBjaGFuZ2VzLCBwb3J0IHN0YXRlIGNoYW5nZXMsIGFuZCBjaGFuZ2VzIHRvCitAQCAtMTQ1MSw3ICsxNDQ4LDcgQEAgc2VydmljZSBhbmQgT1MgZGV0ZWN0aW9uLgorICAgLXYsIC0tdmVyYm9zZSAgYWxzbyBzaG93IGhvc3RzIGFuZCBwb3J0cyB0aGF0IGhhdmVuJ3QgY2hhbmdlZC4KKyAgIC0tdGV4dCAgICAgICAgIGRpc3BsYXkgb3V0cHV0IGluIHRleHQgZm9ybWF0IChkZWZhdWx0KQorICAgLS14bWwgICAgICAgICAgZGlzcGxheSBvdXRwdXQgaW4gWE1MIGZvcm1hdFwKKy0iIiIgJSBzeXMuYXJndlswXQorKyIiIiAlIHN5cy5hcmd2WzBdKQorIAorIEVYSVRfRVFVQUwgPSAwCisgRVhJVF9ESUZGRVJFTlQgPSAxCitAQCAtMTQ1OSw4ICsxNDU2LDggQEAgRVhJVF9FUlJPUiA9IDIKKyAKKyAKKyBkZWYgdXNhZ2VfZXJyb3IobXNnKToKKy0gICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgdSIlczogJXMiICUgKHN5cy5hcmd2WzBdLCBtc2cpCistICAgIHByaW50ID4+IHN5cy5zdGRlcnIsIHUiVHJ5ICclcyAtaCcgZm9yIGhlbHAuIiAlIHN5cy5hcmd2WzBdCisrICAgIHByaW50KCIlczogJXMiICUgKHN5cy5hcmd2WzBdLCBtc2cpLCBmaWxlPXN5cy5zdGRlcnIpCisrICAgIHByaW50KCJUcnkgJyVzIC1oJyBmb3IgaGVscC4iICUgc3lzLmFyZ3ZbMF0sIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgc3lzLmV4aXQoRVhJVF9FUlJPUikKKyAKKyAKK0BAIC0xNDcxLDcgKzE0NjgsNyBAQCBkZWYgbWFpbigpOgorICAgICB0cnk6CisgICAgICAgICBvcHRzLCBpbnB1dF9maWxlbmFtZXMgPSBnZXRvcHQuZ251X2dldG9wdCgKKyAgICAgICAgICAgICAgICAgc3lzLmFyZ3ZbMTpdLCAiaHYiLCBbImhlbHAiLCAidGV4dCIsICJ2ZXJib3NlIiwgInhtbCJdKQorLSAgICBleGNlcHQgZ2V0b3B0LkdldG9wdEVycm9yLCBlOgorKyAgICBleGNlcHQgZ2V0b3B0LkdldG9wdEVycm9yIGFzIGU6CisgICAgICAgICB1c2FnZV9lcnJvcihlLm1zZykKKyAgICAgZm9yIG8sIGEgaW4gb3B0czoKKyAgICAgICAgIGlmIG8gPT0gIi1oIiBvciBvID09ICItLWhlbHAiOgorQEAgLTE0ODEsMTUgKzE0NzgsMTUgQEAgZGVmIG1haW4oKToKKyAgICAgICAgICAgICB2ZXJib3NlID0gVHJ1ZQorICAgICAgICAgZWxpZiBvID09ICItLXRleHQiOgorICAgICAgICAgICAgIGlmIG91dHB1dF9mb3JtYXQgaXMgbm90IE5vbmUgYW5kIG91dHB1dF9mb3JtYXQgIT0gInRleHQiOgorLSAgICAgICAgICAgICAgICB1c2FnZV9lcnJvcih1ImNvbnRyYWRpY3Rvcnkgb3V0cHV0IGZvcm1hdCBvcHRpb25zLiIpCisrICAgICAgICAgICAgICAgIHVzYWdlX2Vycm9yKCJjb250cmFkaWN0b3J5IG91dHB1dCBmb3JtYXQgb3B0aW9ucy4iKQorICAgICAgICAgICAgIG91dHB1dF9mb3JtYXQgPSAidGV4dCIKKyAgICAgICAgIGVsaWYgbyA9PSAiLS14bWwiOgorICAgICAgICAgICAgIGlmIG91dHB1dF9mb3JtYXQgaXMgbm90IE5vbmUgYW5kIG91dHB1dF9mb3JtYXQgIT0gInhtbCI6CistICAgICAgICAgICAgICAgIHVzYWdlX2Vycm9yKHUiY29udHJhZGljdG9yeSBvdXRwdXQgZm9ybWF0IG9wdGlvbnMuIikKKysgICAgICAgICAgICAgICAgdXNhZ2VfZXJyb3IoImNvbnRyYWRpY3Rvcnkgb3V0cHV0IGZvcm1hdCBvcHRpb25zLiIpCisgICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdCA9ICJ4bWwiCisgCisgICAgIGlmIGxlbihpbnB1dF9maWxlbmFtZXMpICE9IDI6CistICAgICAgICB1c2FnZV9lcnJvcih1Im5lZWQgZXhhY3RseSB0d28gaW5wdXQgZmlsZW5hbWVzLiIpCisrICAgICAgICB1c2FnZV9lcnJvcigibmVlZCBleGFjdGx5IHR3byBpbnB1dCBmaWxlbmFtZXMuIikKKyAKKyAgICAgaWYgb3V0cHV0X2Zvcm1hdCBpcyBOb25lOgorICAgICAgICAgb3V0cHV0X2Zvcm1hdCA9ICJ0ZXh0IgorQEAgLTE1MDIsOCArMTQ5OSw4IEBAIGRlZiBtYWluKCk6CisgICAgICAgICBzY2FuX2EubG9hZF9mcm9tX2ZpbGUoZmlsZW5hbWVfYSkKKyAgICAgICAgIHNjYW5fYiA9IFNjYW4oKQorICAgICAgICAgc2Nhbl9iLmxvYWRfZnJvbV9maWxlKGZpbGVuYW1lX2IpCistICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgorLSAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgdSJDYW4ndCBvcGVuIGZpbGU6ICVzIiAlIHN0cihlKQorKyAgICBleGNlcHQgSU9FcnJvciBhcyBlOgorKyAgICAgICAgcHJpbnQoIkNhbid0IG9wZW4gZmlsZTogJXMiICUgc3RyKGUpLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICBzeXMuZXhpdChFWElUX0VSUk9SKQorIAorICAgICBpZiBvdXRwdXRfZm9ybWF0ID09ICJ0ZXh0IjoKK2RpZmYgLS1naXQgYS9uZGlmZi9uZGlmZnRlc3QucHkgYi9uZGlmZi9uZGlmZnRlc3QucHkKK2luZGV4IDJmYTRhZTAuLjI3ZmM1MjUgMTAwNzU1CistLS0gYS9uZGlmZi9uZGlmZnRlc3QucHkKKysrKyBiL25kaWZmL25kaWZmdGVzdC5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIAorICMgVW5pdCB0ZXN0cyBmb3IgTmRpZmYuCisgCitAQCAtMjIsNyArMjIsNyBAQCBmb3IgeCBpbiBkaXIobmRpZmYpOgorIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gZG9udF93cml0ZV9ieXRlY29kZQorIGRlbCBkb250X3dyaXRlX2J5dGVjb2RlCisgCistaW1wb3J0IFN0cmluZ0lPCisraW1wb3J0IGlvCisgCisgCisgY2xhc3Mgc2Nhbl90ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKK0BAIC01Miw3ICs1Miw3IEBAIGNsYXNzIHNjYW5fdGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBzY2FuLmxvYWRfZnJvbV9maWxlKCJ0ZXN0LXNjYW5zL3NpbmdsZS54bWwiKQorICAgICAgICAgaG9zdCA9IHNjYW4uaG9zdHNbMF0KKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGhvc3QucG9ydHMpLCA1KQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChob3N0LmV4dHJhcG9ydHMuaXRlbXMoKSwgWygiZmlsdGVyZWQiLCA5NSldKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGhvc3QuZXh0cmFwb3J0cy5pdGVtcygpKSwgWygiZmlsdGVyZWQiLCA5NSldKQorIAorICAgICBkZWYgdGVzdF9leHRyYXBvcnRzX211bHRpKHNlbGYpOgorICAgICAgICAgIiIiVGVzdCB0aGF0IHRoZSBjb3JyZWN0IG51bWJlciBvZiBrbm93biBwb3J0cyBpcyByZXR1cm5lZCB3aGVuIHRoZXJlCitAQCAtNjgsOSArNjgsOSBAQCBjbGFzcyBzY2FuX3Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgIiIiVGVzdCB0aGF0IG5tYXBydW4gaW5mb3JtYXRpb24gaXMgcmVjb3JkZWQuIiIiCisgICAgICAgICBzY2FuID0gU2NhbigpCisgICAgICAgICBzY2FuLmxvYWRfZnJvbV9maWxlKCJ0ZXN0LXNjYW5zL2VtcHR5LnhtbCIpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjYW4uc2Nhbm5lciwgdSJubWFwIikKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Nhbi52ZXJzaW9uLCB1IjQuOTBSQzIiKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY2FuLmFyZ3MsIHUibm1hcCAtb1ggZW1wdHkueG1sIC1wIDEtMTAwIikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Nhbi5zY2FubmVyLCAibm1hcCIpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjYW4udmVyc2lvbiwgIjQuOTBSQzIiKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY2FuLmFyZ3MsICJubWFwIC1vWCBlbXB0eS54bWwgLXAgMS0xMDAiKQorIAorICAgICBkZWYgdGVzdF9hZGRyZXNzZXMoc2VsZik6CisgICAgICAgICAiIiJUZXN0IHRoYXQgYWRkcmVzc2VzIGFyZSByZWNvcmRlZC4iIiIKK0BAIC04NCw3ICs4NCw3IEBAIGNsYXNzIHNjYW5fdGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBzY2FuID0gU2NhbigpCisgICAgICAgICBzY2FuLmxvYWRfZnJvbV9maWxlKCJ0ZXN0LXNjYW5zL3NpbXBsZS54bWwiKQorICAgICAgICAgaG9zdCA9IHNjYW4uaG9zdHNbMF0KKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaG9zdC5ob3N0bmFtZXMsIFt1InNjYW5tZS5ubWFwLm9yZyJdKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChob3N0Lmhvc3RuYW1lcywgWyJzY2FubWUubm1hcC5vcmciXSkKKyAKKyAgICAgZGVmIHRlc3Rfb3Moc2VsZik6CisgICAgICAgICAiIiJUZXN0IHRoYXQgT1MgaW5mb3JtYXRpb24gaXMgcmVjb3JkZWQuIiIiCitAQCAtOTksNyArOTksNyBAQCBjbGFzcyBzY2FuX3Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgc2Nhbi5sb2FkX2Zyb21fZmlsZSgidGVzdC1zY2Fucy9jb21wbGV4LnhtbCIpCisgICAgICAgICBob3N0ID0gc2Nhbi5ob3N0c1swXQorICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihob3N0LnNjcmlwdF9yZXN1bHRzKSA+IDApCistICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGhvc3QucG9ydHNbKDIyLCB1InRjcCIpXS5zY3JpcHRfcmVzdWx0cykgPiAwKQorKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihob3N0LnBvcnRzWygyMiwgInRjcCIpXS5zY3JpcHRfcmVzdWx0cykgPiAwKQorIAorICMgVGhpcyB0ZXN0IGlzIGNvbW1lbnRlZCBvdXQgYmVjYXVzZSBObWFwIFhNTCBkb2Vzbid0IHN0b3JlIGFueSBpbmZvcm1hdGlvbgorICMgYWJvdXQgZG93biBob3N0cywgbm90IGV2ZW4gdGhlIGZhY3QgdGhhdCB0aGV5IGFyZSBkb3duLiBSZWNvdmVyaW5nIHRoZSBsaXN0CitAQCAtMTI4LDE2ICsxMjgsMTYgQEAgY2xhc3MgaG9zdF90ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAKKyAgICAgZGVmIHRlc3RfZm9ybWF0X25hbWUoc2VsZik6CisgICAgICAgICBoID0gSG9zdCgpCistICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShoLmZvcm1hdF9uYW1lKCksIGJhc2VzdHJpbmcpKQorLSAgICAgICAgaC5hZGRfYWRkcmVzcyhJUHY0QWRkcmVzcyh1IjEyNy4wLjAuMSIpKQorLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHUiMTI3LjAuMC4xIiBpbiBoLmZvcm1hdF9uYW1lKCkpCisrICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShoLmZvcm1hdF9uYW1lKCksIHN0cikpCisrICAgICAgICBoLmFkZF9hZGRyZXNzKElQdjRBZGRyZXNzKCIxMjcuMC4wLjEiKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiMTI3LjAuMC4xIiBpbiBoLmZvcm1hdF9uYW1lKCkpCisgICAgICAgICBoLmFkZF9hZGRyZXNzKElQdjZBZGRyZXNzKCI6OjEiKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh1IjEyNy4wLjAuMSIgaW4gaC5mb3JtYXRfbmFtZSgpKQorLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHUiOjoxIiBpbiBoLmZvcm1hdF9uYW1lKCkpCistICAgICAgICBoLmFkZF9ob3N0bmFtZSh1ImxvY2FsaG9zdCIpCistICAgICAgICBzZWxmLmFzc2VydFRydWUodSIxMjcuMC4wLjEiIGluIGguZm9ybWF0X25hbWUoKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh1Ijo6MSIgaW4gaC5mb3JtYXRfbmFtZSgpKQorLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHUibG9jYWxob3N0IiBpbiBoLmZvcm1hdF9uYW1lKCkpCisrICAgICAgICBzZWxmLmFzc2VydFRydWUoIjEyNy4wLjAuMSIgaW4gaC5mb3JtYXRfbmFtZSgpKQorKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCI6OjEiIGluIGguZm9ybWF0X25hbWUoKSkKKysgICAgICAgIGguYWRkX2hvc3RuYW1lKCJsb2NhbGhvc3QiKQorKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCIxMjcuMC4wLjEiIGluIGguZm9ybWF0X25hbWUoKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiOjoxIiBpbiBoLmZvcm1hdF9uYW1lKCkpCisrICAgICAgICBzZWxmLmFzc2VydFRydWUoImxvY2FsaG9zdCIgaW4gaC5mb3JtYXRfbmFtZSgpKQorIAorICAgICBkZWYgdGVzdF9lbXB0eV9nZXRfcG9ydChzZWxmKToKKyAgICAgICAgIGggPSBIb3N0KCkKK0BAIC0xOTcsOCArMTk3LDggQEAgY2xhc3MgaG9zdF90ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIGggPSBzLmhvc3RzWzBdCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoLnBvcnRzKSwgNSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguZXh0cmFwb3J0cyksIDEpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZXh0cmFwb3J0cy5rZXlzKClbMF0sIHUiZmlsdGVyZWQiKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmV4dHJhcG9ydHMudmFsdWVzKClbMF0sIDk1KQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGguZXh0cmFwb3J0cy5rZXlzKCkpWzBdLCAiZmlsdGVyZWQiKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGguZXh0cmFwb3J0cy52YWx1ZXMoKSlbMF0sIDk1KQorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLnN0YXRlLCAidXAiKQorIAorIAorQEAgLTI0MSwxMyArMjQxLDEzIEBAIGNsYXNzIHBvcnRfdGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICIiIlRlc3QgdGhlIFBvcnQgY2xhc3MuIiIiCisgICAgIGRlZiB0ZXN0X3NwZWNfc3RyaW5nKHNlbGYpOgorICAgICAgICAgcCA9IFBvcnQoKDEwLCAidGNwIikpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3BlY19zdHJpbmcoKSwgdSIxMC90Y3AiKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnNwZWNfc3RyaW5nKCksICIxMC90Y3AiKQorICAgICAgICAgcCA9IFBvcnQoKDEwMCwgImlwIikpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3BlY19zdHJpbmcoKSwgdSIxMDAvaXAiKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnNwZWNfc3RyaW5nKCksICIxMDAvaXAiKQorIAorICAgICBkZWYgdGVzdF9zdGF0ZV9zdHJpbmcoc2VsZik6CisgICAgICAgICBwID0gUG9ydCgoMTAsICJ0Y3AiKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGF0ZV9zdHJpbmcoKSwgdSJ1bmtub3duIikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGF0ZV9zdHJpbmcoKSwgInVua25vd24iKQorIAorIAorIGNsYXNzIHNlcnZpY2VfdGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitAQCAtMjU1LDQ3ICsyNTUsNDcgQEAgY2xhc3Mgc2VydmljZV90ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgZGVmIHRlc3RfY29tcGFyZShzZWxmKToKKyAgICAgICAgICIiIlRlc3QgdGhhdCBzZXJ2aWNlcyB3aXRoIHRoZSBzYW1lIGNvbnRlbnRzIGNvbXBhcmUgZXF1YWwuIiIiCisgICAgICAgICBhID0gU2VydmljZSgpCistICAgICAgICBhLm5hbWUgPSB1ImZ0cCIKKy0gICAgICAgIGEucHJvZHVjdCA9IHUiRm9vQmFyIEZUUCIKKy0gICAgICAgIGEudmVyc2lvbiA9IHUiMS4xLjEiCistICAgICAgICBhLnR1bm5lbCA9IHUic3NsIgorKyAgICAgICAgYS5uYW1lID0gImZ0cCIKKysgICAgICAgIGEucHJvZHVjdCA9ICJGb29CYXIgRlRQIgorKyAgICAgICAgYS52ZXJzaW9uID0gIjEuMS4xIgorKyAgICAgICAgYS50dW5uZWwgPSAic3NsIgorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBhKQorICAgICAgICAgYiA9IFNlcnZpY2UoKQorLSAgICAgICAgYi5uYW1lID0gdSJmdHAiCistICAgICAgICBiLnByb2R1Y3QgPSB1IkZvb0JhciBGVFAiCistICAgICAgICBiLnZlcnNpb24gPSB1IjEuMS4xIgorLSAgICAgICAgYi50dW5uZWwgPSB1InNzbCIKKysgICAgICAgIGIubmFtZSA9ICJmdHAiCisrICAgICAgICBiLnByb2R1Y3QgPSAiRm9vQmFyIEZUUCIKKysgICAgICAgIGIudmVyc2lvbiA9ICIxLjEuMSIKKysgICAgICAgIGIudHVubmVsID0gInNzbCIKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYikKKy0gICAgICAgIGIubmFtZSA9IHUiaHR0cCIKKysgICAgICAgIGIubmFtZSA9ICJodHRwIgorICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhLCBiKQorICAgICAgICAgYyA9IFNlcnZpY2UoKQorICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhLCBjKQorIAorICAgICBkZWYgdGVzdF90dW5uZWwoc2VsZik6CisgICAgICAgICBzZXJ2ID0gU2VydmljZSgpCistICAgICAgICBzZXJ2Lm5hbWUgPSB1Imh0dHAiCistICAgICAgICBzZXJ2LnR1bm5lbCA9IHUic3NsIgorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2Lm5hbWVfc3RyaW5nKCksIHUic3NsL2h0dHAiKQorKyAgICAgICAgc2Vydi5uYW1lID0gImh0dHAiCisrICAgICAgICBzZXJ2LnR1bm5lbCA9ICJzc2wiCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnYubmFtZV9zdHJpbmcoKSwgInNzbC9odHRwIikKKyAKKyAgICAgZGVmIHRlc3RfdmVyc2lvbl9zdHJpbmcoc2VsZik6CisgICAgICAgICBzZXJ2ID0gU2VydmljZSgpCistICAgICAgICBzZXJ2LnByb2R1Y3QgPSB1IkZvb0JhciIKKysgICAgICAgIHNlcnYucHJvZHVjdCA9ICJGb29CYXIiCisgICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHNlcnYudmVyc2lvbl9zdHJpbmcoKSkgPiAwKQorICAgICAgICAgc2VydiA9IFNlcnZpY2UoKQorLSAgICAgICAgc2Vydi52ZXJzaW9uID0gdSIxLjIuMyIKKysgICAgICAgIHNlcnYudmVyc2lvbiA9ICIxLjIuMyIKKyAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oc2Vydi52ZXJzaW9uX3N0cmluZygpKSA+IDApCisgICAgICAgICBzZXJ2ID0gU2VydmljZSgpCistICAgICAgICBzZXJ2LmV4dHJhaW5mbyA9IHUibWlzY29uZmlndXJlZCIKKysgICAgICAgIHNlcnYuZXh0cmFpbmZvID0gIm1pc2NvbmZpZ3VyZWQiCisgICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHNlcnYudmVyc2lvbl9zdHJpbmcoKSkgPiAwKQorICAgICAgICAgc2VydiA9IFNlcnZpY2UoKQorLSAgICAgICAgc2Vydi5wcm9kdWN0ID0gdSJGb29CYXIiCistICAgICAgICBzZXJ2LnZlcnNpb24gPSB1IjEuMi4zIgorKyAgICAgICAgc2Vydi5wcm9kdWN0ID0gIkZvb0JhciIKKysgICAgICAgIHNlcnYudmVyc2lvbiA9ICIxLjIuMyIKKyAgICAgICAgICMgTXVzdCBtYXRjaCBObWFwIG91dHB1dC4KKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vydi52ZXJzaW9uX3N0cmluZygpLAorLSAgICAgICAgICAgICAgICB1IiVzICVzIiAlIChzZXJ2LnByb2R1Y3QsIHNlcnYudmVyc2lvbikpCistICAgICAgICBzZXJ2LmV4dHJhaW5mbyA9IHUibWlzY29uZmlndXJlZCIKKysgICAgICAgICAgICAgICAgIiVzICVzIiAlIChzZXJ2LnByb2R1Y3QsIHNlcnYudmVyc2lvbikpCisrICAgICAgICBzZXJ2LmV4dHJhaW5mbyA9ICJtaXNjb25maWd1cmVkIgorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2LnZlcnNpb25fc3RyaW5nKCksCistICAgICAgICAgICAgICAgIHUiJXMgJXMgKCVzKSIgJSAoc2Vydi5wcm9kdWN0LCBzZXJ2LnZlcnNpb24sIHNlcnYuZXh0cmFpbmZvKSkKKysgICAgICAgICAgICAgICAgIiVzICVzICglcykiICUgKHNlcnYucHJvZHVjdCwgc2Vydi52ZXJzaW9uLCBzZXJ2LmV4dHJhaW5mbykpCisgCisgCisgY2xhc3MgU2NhbkRpZmZTdWIoU2NhbkRpZmYpOgorQEAgLTcwMyw3ICs3MDMsNyBAQCBjbGFzcyBzY2FuX2RpZmZfeG1sX3Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgYS5sb2FkX2Zyb21fZmlsZSgidGVzdC1zY2Fucy9lbXB0eS54bWwiKQorICAgICAgICAgYiA9IFNjYW4oKQorICAgICAgICAgYi5sb2FkX2Zyb21fZmlsZSgidGVzdC1zY2Fucy9zaW1wbGUueG1sIikKKy0gICAgICAgIGYgPSBTdHJpbmdJTy5TdHJpbmdJTygpCisrICAgICAgICBmID0gaW8uU3RyaW5nSU8oKQorICAgICAgICAgc2VsZi5zY2FuX2RpZmYgPSBTY2FuRGlmZlhNTChhLCBiLCBmKQorICAgICAgICAgc2VsZi5zY2FuX2RpZmYub3V0cHV0KCkKKyAgICAgICAgIHNlbGYueG1sID0gZi5nZXR2YWx1ZSgpCitAQCAtNzEyLDggKzcxMiw4IEBAIGNsYXNzIHNjYW5fZGlmZl94bWxfdGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIGRlZiB0ZXN0X3dlbGxfZm9ybWVkKHNlbGYpOgorICAgICAgICAgdHJ5OgorICAgICAgICAgICAgIGRvY3VtZW50ID0geG1sLmRvbS5taW5pZG9tLnBhcnNlU3RyaW5nKHNlbGYueG1sKQorLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKKy0gICAgICAgICAgICBzZWxmLmZhaWwodSJQYXJzaW5nIFhNTCBkaWZmIG91dHB1dCBjYXVzZWQgdGhlIGV4Y2VwdGlvbjogJXMiCisrICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisrICAgICAgICAgICAgc2VsZi5mYWlsKCJQYXJzaW5nIFhNTCBkaWZmIG91dHB1dCBjYXVzZWQgdGhlIGV4Y2VwdGlvbjogJXMiCisgICAgICAgICAgICAgICAgICAgICAlIHN0cihlKSkKKyAKKyAKK0BAIC03MzksOCArNzM5LDggQEAgZGVmIGhvc3RfYXBwbHlfZGlmZihob3N0LCBkaWZmKToKKyAgICAgICAgIGhvc3Qub3MgPSBkaWZmLmhvc3RfYi5vc1s6XQorIAorICAgICBpZiBkaWZmLmV4dHJhcG9ydHNfY2hhbmdlZDoKKy0gICAgICAgIGZvciBzdGF0ZSBpbiBob3N0LmV4dHJhcG9ydHMua2V5cygpOgorLSAgICAgICAgICAgIGZvciBwb3J0IGluIGhvc3QucG9ydHMudmFsdWVzKCk6CisrICAgICAgICBmb3Igc3RhdGUgaW4gbGlzdChob3N0LmV4dHJhcG9ydHMua2V5cygpKToKKysgICAgICAgICAgICBmb3IgcG9ydCBpbiBsaXN0KGhvc3QucG9ydHMudmFsdWVzKCkpOgorICAgICAgICAgICAgICAgICBpZiBwb3J0LnN0YXRlID09IHN0YXRlOgorICAgICAgICAgICAgICAgICAgICAgZGVsIGhvc3QucG9ydHNbcG9ydC5zcGVjXQorICAgICAgICAgaG9zdC5leHRyYXBvcnRzID0gZGlmZi5ob3N0X2IuZXh0cmFwb3J0cy5jb3B5KCkKK2RpZmYgLS1naXQgYS9uZGlmZi9zY3JpcHRzL25kaWZmIGIvbmRpZmYvc2NyaXB0cy9uZGlmZgoraW5kZXggODUxN2MwNy4uNDY3MWU3MyAxMDA3NTUKKy0tLSBhL25kaWZmL3NjcmlwdHMvbmRpZmYKKysrKyBiL25kaWZmL3NjcmlwdHMvbmRpZmYKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAKKyAjIE5kaWZmCisgIworQEAgLTY3LDE1ICs2NywxNSBAQCBpZiBJTlNUQUxMX0xJQiBpcyBub3QgTm9uZSBhbmQgaXNfc2VjdXJlX2RpcihJTlNUQUxMX0xJQik6CisgCisgdHJ5OgorICAgICBpbXBvcnQgbmRpZmYKKy1leGNlcHQgSW1wb3J0RXJyb3IsIGU6CistICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICIiIlwKKytleGNlcHQgSW1wb3J0RXJyb3IgYXMgZToKKysgICAgcHJpbnQoIiIiXAorIENvdWxkIG5vdCBpbXBvcnQgdGhlIG5kaWZmIG1vZHVsZTogJXMuCistSSBjaGVja2VkIGluIHRoZXNlIGRpcmVjdG9yaWVzOiIiIiAlIHJlcHIoZS5tZXNzYWdlKQorK0kgY2hlY2tlZCBpbiB0aGVzZSBkaXJlY3RvcmllczoiIiIgJSByZXByKGUpLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgIGZvciBkaXIgaW4gc3lzLnBhdGg6CistICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAiICAgICVzIiAlIGRpcgorLSAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAiIiJcCisrICAgICAgICBwcmludCgiICAgICVzIiAlIGRpciwgZmlsZT1zeXMuc3RkZXJyKQorKyAgICBwcmludCgiIiJcCisgSWYgeW91IGluc3RhbGxlZCBOZGlmZiBpbiBhbm90aGVyIGRpcmVjdG9yeSwgeW91IG1heSBoYXZlIHRvIGFkZCB0aGUKKy1tb2R1bGVzIGRpcmVjdG9yeSB0byB0aGUgUFlUSE9OUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZS4iIiIKKyttb2R1bGVzIGRpcmVjdG9yeSB0byB0aGUgUFlUSE9OUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZS4iIiIsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgc3lzLmV4aXQoMSkKKyAKKyBpbXBvcnQgbmRpZmYKK2RpZmYgLS1naXQgYS9uZGlmZi9zZXR1cC5weSBiL25kaWZmL3NldHVwLnB5CitvbGQgbW9kZSAxMDA2NDQKK25ldyBtb2RlIDEwMDc1NQoraW5kZXggYjVlMjU0Yy4uYzQ5YmNmMworLS0tIGEvbmRpZmYvc2V0dXAucHkKKysrKyBiL25kaWZmL3NldHVwLnB5CitAQCAtOTQsNyArOTQsNyBAQCBjbGFzcyBjaGVja2VkX2luc3RhbGwoZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbC5pbnN0YWxsKToKKyAgICAgICAgIHNlbGYuc2F2ZWRfcHJlZml4ID0gc3lzLnByZWZpeAorICAgICAgICAgdHJ5OgorICAgICAgICAgICAgIGRpc3R1dGlscy5jb21tYW5kLmluc3RhbGwuaW5zdGFsbC5maW5hbGl6ZV9vcHRpb25zKHNlbGYpCistICAgICAgICBleGNlcHQgZGlzdHV0aWxzLmVycm9ycy5EaXN0dXRpbHNQbGF0Zm9ybUVycm9yLCBlOgorKyAgICAgICAgZXhjZXB0IGRpc3R1dGlscy5lcnJvcnMuRGlzdHV0aWxzUGxhdGZvcm1FcnJvciBhcyBlOgorICAgICAgICAgICAgIHJhaXNlIGRpc3R1dGlscy5lcnJvcnMuRGlzdHV0aWxzUGxhdGZvcm1FcnJvcihzdHIoZSkgKyAiIiIKKyBJbnN0YWxsaW5nIHlvdXIgZGlzdHJpYnV0aW9uJ3MgcHl0aG9uLWRldiBwYWNrYWdlIG1heSBzb2x2ZSB0aGlzIHByb2JsZW0uIiIiKQorIAorQEAgLTE1NSwxMyArMTU1LDEzIEBAIEluc3RhbGxpbmcgeW91ciBkaXN0cmlidXRpb24ncyBweXRob24tZGV2IHBhY2thZ2UgbWF5IHNvbHZlIHRoaXMgcHJvYmxlbS4iIiIpCisgIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisgaW1wb3J0IGVycm5vLCBvcywgb3MucGF0aCwgc3lzCisgCistcHJpbnQgJ1VuaW5zdGFsbCAlKG5hbWUpcycKKytwcmludCgnVW5pbnN0YWxsICUobmFtZSlzJykKKyAKKyBhbnN3ZXIgPSByYXdfaW5wdXQoJ0FyZSB5b3Ugc3VyZSB0aGF0IHlvdSB3YW50IHRvIHVuaW5zdGFsbCAnCisgICAgICclKG5hbWUpcyAoeWVzL25vKSAnKQorIAorIGlmIGFuc3dlciAhPSAneWVzJyBhbmQgYW5zd2VyICE9ICd5JzoKKy0gICAgcHJpbnQgJ05vdCB1bmluc3RhbGxpbmcuJworKyAgICBwcmludCgnTm90IHVuaW5zdGFsbGluZy4nKQorICAgICBzeXMuZXhpdCgwKQorIAorICIiIiAlIHsnbmFtZSc6IEFQUF9OQU1FfQorQEAgLTE3Nyw4ICsxNzcsOCBAQCBpZiBhbnN3ZXIgIT0gJ3llcycgYW5kIGFuc3dlciAhPSAneSc6CisgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiAoZXZlcnl0aGluZyBnZXRzIGluc3RhbGxlZAorICAgICAgICAgICAgICAgICAgICAgIyBpbnNpZGUgdGhlIHJvb3QpLCBidXQgaWYgaXQgZG9lcywgYmUgc2FmZSBhbmQgZG9uJ3QKKyAgICAgICAgICAgICAgICAgICAgICMgZGVsZXRlIGFueXRoaW5nLgorLSAgICAgICAgICAgICAgICAgICAgdW5pbnN0YWxsZXIgKz0gKCJwcmludCAnJXMgd2FzIG5vdCBpbnN0YWxsZWQgaW5zaWRlICIKKy0gICAgICAgICAgICAgICAgICAgICAgICAidGhlIHJvb3QgJXM7IHNraXBwaW5nLidcbiIgJSAob3V0cHV0LCBzZWxmLnJvb3QpKQorKyAgICAgICAgICAgICAgICAgICAgdW5pbnN0YWxsZXIgKz0gKCJwcmludCgnJXMgd2FzIG5vdCBpbnN0YWxsZWQgaW5zaWRlICIKKysgICAgICAgICAgICAgICAgICAgICAgICAidGhlIHJvb3QgJXM7IHNraXBwaW5nLicpXG4iICUgKG91dHB1dCwgc2VsZi5yb290KSkKKyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgIG91dHB1dCA9IHBhdGhfc3RyaXBfcHJlZml4KG91dHB1dCwgc2VsZi5yb290KQorICAgICAgICAgICAgICAgICBhc3NlcnQgb3MucGF0aC5pc2FicyhvdXRwdXQpCitAQCAtMjAyLDI0ICsyMDIsMjQgQEAgZm9yIHBhdGggaW4gSU5TVEFMTEVEX0ZJTEVTOgorICAgICAgICAgZGlycy5hcHBlbmQocGF0aCkKKyAjIERlbGV0ZSB0aGUgZmlsZXMuCisgZm9yIGZpbGUgaW4gZmlsZXM6CistICAgIHByaW50ICJSZW1vdmluZyAnJXMnLiIgJSBmaWxlCisrICAgIHByaW50KCJSZW1vdmluZyAnJXMnLiIgJSBmaWxlKQorICAgICB0cnk6CisgICAgICAgICBvcy5yZW1vdmUoZmlsZSkKKy0gICAgZXhjZXB0IE9TRXJyb3IsIGU6CistICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAnICBFcnJvcjogJXMuJyAlIHN0cihlKQorKyAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorKyAgICAgICAgcHJpbnQoJyAgRXJyb3I6ICVzLicgJSBzdHIoZSksIGZpbGU9c3lzLnN0ZGVycikKKyAjIERlbGV0ZSB0aGUgZGlyZWN0b3JpZXMuIEZpcnN0IHJldmVyc2Utc29ydCB0aGUgbm9ybWFsaXplZCBwYXRocyBieQorICMgbGVuZ3RoIHNvIHRoYXQgY2hpbGQgZGlyZWN0b3JpZXMgYXJlIGRlbGV0ZWQgYmVmb3JlIHRoZWlyIHBhcmVudHMuCisgZGlycyA9IFtvcy5wYXRoLm5vcm1wYXRoKGRpcikgZm9yIGRpciBpbiBkaXJzXQorIGRpcnMuc29ydChrZXkgPSBsZW4sIHJldmVyc2UgPSBUcnVlKQorIGZvciBkaXIgaW4gZGlyczoKKyAgICAgdHJ5OgorLSAgICAgICAgcHJpbnQgIlJlbW92aW5nIHRoZSBkaXJlY3RvcnkgJyVzJy4iICUgZGlyCisrICAgICAgICBwcmludCgiUmVtb3ZpbmcgdGhlIGRpcmVjdG9yeSAnJXMnLiIgJSBkaXIpCisgICAgICAgICBvcy5ybWRpcihkaXIpCistICAgIGV4Y2VwdCBPU0Vycm9yLCBlOgorKyAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FTk9URU1QVFk6CistICAgICAgICAgICAgcHJpbnQgIkRpcmVjdG9yeSAnJXMnIG5vdCBlbXB0eTsgbm90IHJlbW92aW5nLiIgJSBkaXIKKysgICAgICAgICAgICBwcmludCgiRGlyZWN0b3J5ICclcycgbm90IGVtcHR5OyBub3QgcmVtb3ZpbmcuIiAlIGRpcikKKyAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgc3RyKGUpCisrICAgICAgICAgICAgcHJpbnQoc3RyKGUpLCBmaWxlPXN5cy5zdGRlcnIpCisgIiIiCisgCisgICAgICAgICB1bmluc3RhbGxlcl9maWxlID0gb3Blbih1bmluc3RhbGxlcl9maWxlbmFtZSwgJ3cnKQorQEAgLTIyNyw3ICsyMjcsNyBAQCBmb3IgZGlyIGluIGRpcnM6CisgICAgICAgICB1bmluc3RhbGxlcl9maWxlLmNsb3NlKCkKKyAKKyAgICAgICAgICMgU2V0IGV4ZWMgYml0IGZvciB1bmluc3RhbGxlcgorLSAgICAgICAgbW9kZSA9ICgob3Muc3RhdCh1bmluc3RhbGxlcl9maWxlbmFtZSlbU1RfTU9ERV0pIHwgMDU1NSkgJiAwNzc3NworKyAgICAgICAgbW9kZSA9ICgob3Muc3RhdCh1bmluc3RhbGxlcl9maWxlbmFtZSlbU1RfTU9ERV0pIHwgMG81NTUpICYgMG83Nzc3CisgICAgICAgICBvcy5jaG1vZCh1bmluc3RhbGxlcl9maWxlbmFtZSwgbW9kZSkKKyAKKyAgICAgZGVmIHdyaXRlX2luc3RhbGxlZF9maWxlcyhzZWxmKToKK0BAIC0yNDIsNyArMjQyLDcgQEAgZm9yIGRpciBpbiBkaXJzOgorICAgICAgICAgdHJ5OgorICAgICAgICAgICAgIGZvciBvdXRwdXQgaW4gc2VsZi5nZXRfaW5zdGFsbGVkX2ZpbGVzKCk6CisgICAgICAgICAgICAgICAgIGFzc2VydCAiXG4iIG5vdCBpbiBvdXRwdXQKKy0gICAgICAgICAgICAgICAgcHJpbnQgPj4gZiwgb3V0cHV0CisrICAgICAgICAgICAgICAgIHByaW50KG91dHB1dCwgZmlsZT1mKQorICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICBmLmNsb3NlKCkKKyAKK0BAIC0yNjYsNyArMjY2LDcgQEAgY2xhc3MgbXlfdW5pbnN0YWxsKGRpc3R1dGlscy5jbWQuQ29tbWFuZCk6CisgICAgICAgICAjIFJlYWQgdGhlIGxpc3Qgb2YgaW5zdGFsbGVkIGZpbGVzLgorICAgICAgICAgdHJ5OgorICAgICAgICAgICAgIGYgPSBvcGVuKElOU1RBTExFRF9GSUxFU19OQU1FLCAiciIpCistICAgICAgICBleGNlcHQgSU9FcnJvciwgZToKKysgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FTk9FTlQ6CisgICAgICAgICAgICAgICAgIGxvZy5lcnJvcigiQ291bGRuJ3Qgb3BlbiB0aGUgaW5zdGFsbGF0aW9uIHJlY29yZCAnJXMnLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIkhhdmUgeW91IGluc3RhbGxlZCB5ZXQ/IiAlIElOU1RBTExFRF9GSUxFU19OQU1FKQorQEAgLTI4OSw3ICsyODksNyBAQCBjbGFzcyBteV91bmluc3RhbGwoZGlzdHV0aWxzLmNtZC5Db21tYW5kKToKKyAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmRyeV9ydW46CisgICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZmlsZSkKKy0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciwgZToKKysgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICBsb2cuZXJyb3Ioc3RyKGUpKQorICAgICAgICAgIyBEZWxldGUgdGhlIGRpcmVjdG9yaWVzLiBGaXJzdCByZXZlcnNlLXNvcnQgdGhlIG5vcm1hbGl6ZWQgcGF0aHMgYnkKKyAgICAgICAgICMgbGVuZ3RoIHNvIHRoYXQgY2hpbGQgZGlyZWN0b3JpZXMgYXJlIGRlbGV0ZWQgYmVmb3JlIHRoZWlyIHBhcmVudHMuCitAQCAtMzAwLDcgKzMwMCw3IEBAIGNsYXNzIG15X3VuaW5zdGFsbChkaXN0dXRpbHMuY21kLkNvbW1hbmQpOgorICAgICAgICAgICAgICAgICBsb2cuaW5mbygiUmVtb3ZpbmcgdGhlIGRpcmVjdG9yeSAnJXMnLiIgJSBkaXIpCisgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmRyeV9ydW46CisgICAgICAgICAgICAgICAgICAgICBvcy5ybWRpcihkaXIpCistICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IsIGU6CisrICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FTk9URU1QVFk6CisgICAgICAgICAgICAgICAgICAgICBsb2cuaW5mbygiRGlyZWN0b3J5ICclcycgbm90IGVtcHR5OyBub3QgcmVtb3ZpbmcuIiAlIGRpcikKKyAgICAgICAgICAgICAgICAgZWxzZToKK2RpZmYgLS1naXQgYS9uZGlmZi90ZXN0LXNjYW5zL2Fub255bWl6ZS5weSBiL25kaWZmL3Rlc3Qtc2NhbnMvYW5vbnltaXplLnB5CitpbmRleCA5YmE2MTJhLi5mZDI1MWZlIDEwMDc1NQorLS0tIGEvbmRpZmYvdGVzdC1zY2Fucy9hbm9ueW1pemUucHkKKysrKyBiL25kaWZmL3Rlc3Qtc2NhbnMvYW5vbnltaXplLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgCisgIyBBbm9ueW1pemUgYW4gTm1hcCBYTUwgZmlsZSwgcmVwbGFjaW5nIGhvc3QgbmFtZSBhbmQgSVAgYWRkcmVzc2VzIHdpdGggcmFuZG9tCisgIyBhbm9ueW1vdXMgb25lcy4gQW5vbnltaXplZCBuYW1lcyB3aWxsIGJlIGNvbnNpc3RlbnQgYmV0d2VlbiBydW5zIG9mIHRoZQorQEAgLTIwLDIwICsyMCwyMCBAQCByID0gcmFuZG9tLlJhbmRvbSgpCisgCisgCisgZGVmIGhhc2gocyk6CistICAgIGRpZ2VzdCA9IGhhc2hsaWIuc2hhNTEyKHMpLmhleGRpZ2VzdCgpCisrICAgIGRpZ2VzdCA9IGhhc2hsaWIuc2hhNTEyKHMuZW5jb2RlKCkpLmhleGRpZ2VzdCgpCisgICAgIHJldHVybiBpbnQoZGlnZXN0LCAxNikKKyAKKyAKKyBkZWYgYW5vbnltaXplX21hY19hZGRyZXNzKGFkZHIpOgorICAgICByLnNlZWQoaGFzaChhZGRyKSkKKyAgICAgbnVtcyA9ICgwLCAwLCAwKSArIHR1cGxlKHIucmFuZHJhbmdlKDI1NikgZm9yIGkgaW4gcmFuZ2UoMykpCistICAgIHJldHVybiB1IjoiLmpvaW4odSIlMDJYIiAlIHggZm9yIHggaW4gbnVtcykKKysgICAgcmV0dXJuICI6Ii5qb2luKCIlMDJYIiAlIHggZm9yIHggaW4gbnVtcykKKyAKKyAKKyBkZWYgYW5vbnltaXplX2lwdjRfYWRkcmVzcyhhZGRyKToKKyAgICAgci5zZWVkKGhhc2goYWRkcikpCisgICAgIG51bXMgPSAoMTAsKSArIHR1cGxlKHIucmFuZHJhbmdlKDI1NikgZm9yIGkgaW4gcmFuZ2UoMykpCistICAgIHJldHVybiB1Ii4iLmpvaW4odW5pY29kZSh4KSBmb3IgeCBpbiBudW1zKQorKyAgICByZXR1cm4gIi4iLmpvaW4oc3RyKHgpIGZvciB4IGluIG51bXMpCisgCisgCisgZGVmIGFub255bWl6ZV9pcHY2X2FkZHJlc3MoYWRkcik6CitAQCAtNDEsNyArNDEsNyBAQCBkZWYgYW5vbnltaXplX2lwdjZfYWRkcmVzcyhhZGRyKToKKyAgICAgIyBSRkMgNDE5My4KKyAgICAgbnVtcyA9ICgweEZEMDAgKyByLnJhbmRyYW5nZSgyNTYpLCkKKyAgICAgbnVtcyA9IG51bXMgKyB0dXBsZShyLnJhbmRyYW5nZSg2NTUzNikgZm9yIGkgaW4gcmFuZ2UoNykpCistICAgIHJldHVybiB1IjoiLmpvaW4oIiUwNFgiICUgeCBmb3IgeCBpbiBudW1zKQorKyAgICByZXR1cm4gIjoiLmpvaW4oIiUwNFgiICUgeCBmb3IgeCBpbiBudW1zKQorIAorICMgTWFwcyB0byBtZW1vaXplIGFkZHJlc3MgYW5kIGhvc3QgbmFtZSBjb252ZXJzaW9ucy4KKyBob3N0bmFtZV9tYXAgPSB7fQorQEAgLTU0LDExICs1NCwxMSBAQCBkZWYgYW5vbnltaXplX2hvc3RuYW1lKG5hbWUpOgorICAgICBMRVRURVJTID0gImFjYmRlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IgorICAgICByLnNlZWQoaGFzaChuYW1lKSkKKyAgICAgbGVuZ3RoID0gci5yYW5kcmFuZ2UoNSwgMTApCistICAgIHByZWZpeCA9IHUiIi5qb2luKHIuc2FtcGxlKExFVFRFUlMsIGxlbmd0aCkpCisrICAgIHByZWZpeCA9ICIiLmpvaW4oci5zYW1wbGUoTEVUVEVSUywgbGVuZ3RoKSkKKyAgICAgbnVtID0gci5yYW5kcmFuZ2UoMTAwMCkKKy0gICAgaG9zdG5hbWVfbWFwW25hbWVdID0gdSIlcy0lZC5leGFtcGxlLmNvbSIgJSAocHJlZml4LCBudW0pCisrICAgIGhvc3RuYW1lX21hcFtuYW1lXSA9ICIlcy0lZC5leGFtcGxlLmNvbSIgJSAocHJlZml4LCBudW0pCisgICAgIGlmIFZFUkJPU0U6CistICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAiUmVwbGFjZSAlcyB3aXRoICVzIiAlIChuYW1lLCBob3N0bmFtZV9tYXBbbmFtZV0pCisrICAgICAgICBwcmludCgiUmVwbGFjZSAlcyB3aXRoICVzIiAlIChuYW1lLCBob3N0bmFtZV9tYXBbbmFtZV0pLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgIHJldHVybiBob3N0bmFtZV9tYXBbbmFtZV0KKyAKKyBtYWNfcmUgPSByZS5jb21waWxlKHInXGIoWzAtOWEtZkEtRl17Mn06KXs1fVswLTlhLWZBLUZdezJ9XGInKQorQEAgLTc4LDcgKzc4LDcgQEAgZGVmIGFub255bWl6ZV9hZGRyZXNzKGFkZHIpOgorICAgICBlbHNlOgorICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgIGlmIFZFUkJPU0U6CistICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAiUmVwbGFjZSAlcyB3aXRoICVzIiAlIChhZGRyLCBhZGRyZXNzX21hcFthZGRyXSkKKysgICAgICAgIHByaW50KCJSZXBsYWNlICVzIHdpdGggJXMiICUgKGFkZHIsIGFkZHJlc3NfbWFwW2FkZHJdKSwgZmlsZT1zeXMuc3RkZXJyKQorICAgICByZXR1cm4gYWRkcmVzc19tYXBbYWRkcl0KKyAKKyAKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zZWN1cml0eS9ubWFwL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLW1ha2UtbmRpZmYtZGVwZW5kLW9uLXB5dGhvbjMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2VjdXJpdHkvbm1hcC9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1tYWtlLW5kaWZmLWRlcGVuZC1vbi1weXRob24zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0M2ZmOWYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2VjdXJpdHkvbm1hcC9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1tYWtlLW5kaWZmLWRlcGVuZC1vbi1weXRob24zLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gNTYyODkzZTY2NWE2YzllMWI2MGM4YjMyNDJiYWI2ZmU3ODMxOGIzYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pbmdsaSBZdSA8bWluZ2xpLnl1QHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDE0IEZlYiAyMDIwIDA4OjE5OjU0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogbWFrZSBuZGlmZiBkZXBlbmQgb24gcHl0aG9uMworCitQeXRob24gMiBjZWFzZWQgYmVpbmcgbWFpbnRhaW5lZCBvbiB0aGUgMXN0IEphbnVhcnkgMjAyMC4KK1dlJ3ZlIGFscmVhZHkgcmVtb3ZlZCBhbGwgdXNlcnMgb2YgaXQgZnJvbSBvZS1jb3JlLCBzbworbGV0IG5kaWZmIGRlcGVuZCBvbiBweXRob24zLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWluZ2xpIFl1IDxtaW5nbGkueXVAd2luZHJpdmVyLmNvbT4KKy0tLQorIC4uLi9ubWFwLzcuODAtcjAvbm1hcC03LjgwL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgIHwgMTEgKysrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA5ZDJmZmY4Li41ZmZkZDU1IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0yMzcsMTYgKzIzNywyMSBAQCBpZiB0ZXN0ICRIQVZFX1BZVEhPTiAmJiB0ZXN0ICJ4JHtQWVRIT05fVkVSU0lPTiUlLip9IiA9ICJ4MiI7IHRoZW4KKyAgICAgSEFWRV9QWVRIT04yPXRydWUKKyBmaQorIAorK0hBVkVfUFlUSE9OMz1mYWxzZQorK2lmIHRlc3QgJEhBVkVfUFlUSE9OICYmIHRlc3QgIngke1BZVEhPTl9WRVJTSU9OJSUuKn0iID0gIngzIjsgdGhlbgorKyAgICBIQVZFX1BZVEhPTjM9dHJ1ZQorK2ZpCisrCisgTkRJRkZESVI9bmRpZmYKKyAKKyAjIERvIHRoZXkgd2FudCBOZGlmZj8KKyBBQ19BUkdfV0lUSChuZGlmZiwgQUNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1uZGlmZl0sIFtTa2lwIGluc3RhbGxhdGlvbiBvZiB0aGUgTmRpZmYgdXRpbGl0eV0pLCBbXSwgW3dpdGhfbmRpZmY9Y2hlY2tdKQorLWlmICRIQVZFX1BZVEhPTjIgOyB0aGVuIDogOworK2lmICRIQVZFX1BZVEhPTjMgOyB0aGVuIDogOworIGVsc2UKKyAgIGlmIHRlc3QgIiR3aXRoX25kaWZmIiA9ICJjaGVjayIgOyB0aGVuCistICAgIEFDX01TR19XQVJOKFtOb3QgYnVpbGRpbmcgTmRpZmYgYmVjYXVzZSBQeXRob24gMi54IHdpdGggeD49NCB3YXMgbm90IGZvdW5kXSkKKysgICAgQUNfTVNHX1dBUk4oW05vdCBidWlsZGluZyBOZGlmZiBiZWNhdXNlIFB5dGhvbjMgd2FzIG5vdCBmb3VuZF0pCisgICBlbGlmIHRlc3QgIiR3aXRoX25kaWZmIiA9ICJ5ZXMiOyB0aGVuCistICAgIEFDX01TR19GQUlMVVJFKFstLXdpdGgtbmRpZmYgcmVxdWlyZXMgUHl0aG9uIDIueCB3aXRoIHg+PTRdKQorKyAgICBBQ19NU0dfRkFJTFVSRShbLS13aXRoLW5kaWZmIHJlcXVpcmVzIFB5dGhvbjNdKQorICAgZmkKKyAgIHdpdGhfbmRpZmY9bm8KKyBmaQorLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L25tYXAvbm1hcF83LjgwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L25tYXAvbm1hcF83LjgwLmJiCmluZGV4IGYyNDE5NGQuLmM3NmQyMzIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zZWN1cml0eS9ubWFwL25tYXBfNy44MC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2VjdXJpdHkvbm1hcC9ubWFwXzcuODAuYmIKQEAgLTEwLDEyICsxMCwxNCBAQAogICAgICAgICAgICBmaWxlOi8vbm1hcC1yZXBsYWNlLXNodG9vbC1ta2Rpci13aXRoLWNvcmV1dGlscy1ta2Rpci1jb21tYW5kLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS10aW1lLmgtaGVhZGVyLXRvLXBhc3MtY2xhbmctY29tcGlsYXRpb24ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXgtYnVpbGRpbmctd2l0aC1saWJjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS1uZGlmZi1zdXBwb3J0LXB5dGhvbjMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtbWFrZS1uZGlmZi1kZXBlbmQtb24tcHl0aG9uMy5wYXRjaCBcCiAgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gImQzN2I3NWIwNmQxZDQwZjI3Yjc2ZDYwZGI0MjBhMWY1IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImZjZmE1YTBlNDIwOTllMTJlNGJmN2E2OGViZTZmZGUwNTU1MzM4M2E2ODJlODE2YTdlYzkyNTZhYjQ3NzNmYWEiCiAKLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgcHl0aG9ubmF0aXZlCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIHB5dGhvbjNuYXRpdmUKIAogUEFDS0FHRUNPTkZJRyA/PSAibmNhdCBucGluZyBuZGlmZiBwY2FwIgogCkBAIC0yOCw3ICszMCw3IEBACiAjZGlzYWJsZS9lbmFibGUgcGFja2FnZXMKIFBBQ0tBR0VDT05GSUdbbnBpbmddID0gIiwtLXdpdGhvdXQtbnBpbmcsIgogUEFDS0FHRUNPTkZJR1tuY2F0XSA9ICIsLS13aXRob3V0LW5jYXQsIgotUEFDS0FHRUNPTkZJR1tuZGlmZl0gPSAiLC0td2l0aG91dC1uZGlmZixweXRob24iCitQQUNLQUdFQ09ORklHW25kaWZmXSA9ICItLXdpdGgtbmRpZmY9eWVzLC0td2l0aG91dC1uZGlmZixweXRob24zIgogUEFDS0FHRUNPTkZJR1t1cGRhdGVdID0gIiwtLXdpdGhvdXQtbm1hcC11cGRhdGUsIgogCiBFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWxpYmRuZXQ9aW5jbHVkZWQgLS13aXRoLWxpYmxpbmVhcj1pbmNsdWRlZCAtLXdpdGhvdXQtc3VidmVyc2lvbiAtLXdpdGgtbGlibHVhPWluY2x1ZGVkIgpAQCAtNDcsNiArNDksMTIgQEAKICAgICBvZV9ydW5jb25mCiB9CiAKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGlmIFsgLWYgIiR7RH0ke2JpbmRpcn0vbmRpZmYiIF07IHRoZW4KKyAgICAgICBzZWQgLWkgJ3NAXiMhLiokQCMhL3Vzci9iaW4vZW52IHB5dGhvbjNAZycgICAke0R9JHtiaW5kaXJ9L25kaWZmCisgICAgZmkKK30KKwogRklMRVNfJHtQTn0gKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9ICR7ZGF0YWRpcn0vbmNhdCIKIAotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uIgorUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtY29yZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvbWtzaC9ta3NoXzU3LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy9ta3NoL21rc2hfNTcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlOWMxOGUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy9ta3NoL21rc2hfNTcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGUgTWlyQlNEIEtvcm4gU2hlbGwgLSBhbiBlbmhhbmNlZCB2ZXJzaW9uIG9mIHRoZSBwdWJsaWMgZG9tYWluIGtzaCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubWlyYnNkLm9yZy9ta3NoLmh0bSIKLVNFQ1RJT04gPSAiYmFzZS9zaGVsbCIKLQotTElDRU5TRSA9ICIke0BiYi51dGlscy5jb250YWlucygiVENMSUJDIiwgImdsaWJjIiwgIk1pck9TICYgSVNDIiwgIk1pck9TIiwgZCl9IgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbWFpbi5jO2JlZ2lubGluZT02O2VuZGxpbmU9MjY7bWQ1PTA2NTFlNTc1ZTM5ZDFhM2U4ODQ1NjJlMjVkNDkxZmM3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3N0cmxjcHkuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE3O21kNT1kOTUzZjI4ZjBjNDNlZTI5ZTIzOGVjOWJjMTVkZjJhMCBcCi0gICAgICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubWlyYnNkLm9yZy9NaXJPUy9kaXN0L21pci9ta3NoL21rc2gtUjU3LnRneiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRkMjY4NjUzNTI1MmVhNmE1N2JkZWM1MzE0OTgyMzlhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkMTAxMTU0MTgyZDUyYWU1NGVmMjZlMTM2MGM5NWJjODljOTI5ZDI4ODU5ZDM3OGNjMWM4NGYzNDM5ZGJlNzUiCi0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59IgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJzaCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzaF0gPSAiJHtiYXNlX2JpbmRpcn0vc2giCi1BTFRFUk5BVElWRV9UQVJHRVRbc2hdID0gIiR7YmFzZV9iaW5kaXJ9LyR7QlBOfSIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotZG9fY29tcGlsZSgpIHsKLSAgICBzaCAke1N9L0J1aWxkLnNoIC1yCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9ta3NoICR7RH0ke2Jhc2VfYmluZGlyfS9ta3NoCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NrZWwKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9kb3QubWtzaHJjICR7RH0ke3N5c2NvbmZkaXJ9L3NrZWwvLm1rc2hyYwotfQotCi1SUFJPVklERVNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndXNybWVyZ2UnLCAnL2Jpbi9zaCcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2hlbGxzL21rc2gvbWtzaF81OC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvbWtzaC9ta3NoXzU4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5OTQwZjgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2hlbGxzL21rc2gvbWtzaF81OC5iYgpAQCAtMCwwICsxLDM2IEBACitERVNDUklQVElPTiA9ICJUaGUgTWlyQlNEIEtvcm4gU2hlbGwgLSBhbiBlbmhhbmNlZCB2ZXJzaW9uIG9mIHRoZSBwdWJsaWMgZG9tYWluIGtzaCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubWlyYnNkLm9yZy9ta3NoLmh0bSIKK1NFQ1RJT04gPSAiYmFzZS9zaGVsbCIKKworTElDRU5TRSA9ICIke0BiYi51dGlscy5jb250YWlucygiVENMSUJDIiwgImdsaWJjIiwgIk1pck9TICYgSVNDIiwgIk1pck9TIiwgZCl9IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbWFpbi5jO2JlZ2lubGluZT02O2VuZGxpbmU9MjY7bWQ1PTA2NTFlNTc1ZTM5ZDFhM2U4ODQ1NjJlMjVkNDkxZmM3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3N0cmxjcHkuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE3O21kNT1kOTUzZjI4ZjBjNDNlZTI5ZTIzOGVjOWJjMTVkZjJhMCBcCisgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubWlyYnNkLm9yZy9NaXJPUy9kaXN0L21pci9ta3NoL21rc2gtUjU4LnRneiIKKworU1JDX1VSSVttZDVzdW1dID0gIjY5MjJhM2UyMjI4ZGUyZjBlNzhmZjI1Mzk4Y2NmOGRmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYwOGJlYjdiNzE4NzBiMjMzMDliYTFkYThjYTgyOGRhMGU0NTQwZjJiOWJkOTgxZWIzOWUwNGY4YjdmYzY3OGMiCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitTID0gIiR7V09SS0RJUn0vJHtCUE59IgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJzaCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzaF0gPSAiJHtiYXNlX2JpbmRpcn0vc2giCitBTFRFUk5BVElWRV9UQVJHRVRbc2hdID0gIiR7YmFzZV9iaW5kaXJ9LyR7QlBOfSIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworZG9fY29tcGlsZSgpIHsKKyAgICBzaCAke1N9L0J1aWxkLnNoIC1yCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9ta3NoICR7RH0ke2Jhc2VfYmluZGlyfS9ta3NoCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NrZWwKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9kb3QubWtzaHJjICR7RH0ke3N5c2NvbmZkaXJ9L3NrZWwvLm1rc2hyYworfQorCitSUFJPVklERVNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndXNybWVyZ2UnLCAnL2Jpbi9zaCcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2hlbGxzL3Rjc2gvdGNzaF82LjIxLjAwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy90Y3NoL3Rjc2hfNi4yMS4wMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc4YWIwNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2hlbGxzL3Rjc2gvdGNzaF82LjIxLjAwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVEVORVggQyBTaGVsbCwgYW4gZW5oYW5jZWQgdmVyc2lvbiBvZiBCZXJrZWxleSBjc2ggXAotICAgIFRoZSBURU5FWCBDIFNoZWxsIGlzIGFuIGVuaGFuY2VkIHZlcnNpb24gb2YgdGhlIEJlcmtlbGV5IFVuaXggQyBzaGVsbC4gXAotICAgIEl0IGluY2x1ZGVzIGFsbCBmZWF0dXJlcyBvZiA0LjRCU0QgQyBzaGVsbCwgcGx1cyBhIGNvbW1hbmQtbGluZSBlZGl0b3IsIFwKLSAgICBwcm9ncmFtbWFibGUgd29yZCBjb21wbGV0aW9uLCBzcGVsbGluZyBjb3JyZWN0aW9uIGFuZCBtb3JlLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy50Y3NoLm9yZy8iCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NvcHlyaWdodDttZDU9NTc1Y2YyNzE1YzNiZjg5NGUxZjc5YWVjMWQ0ZWFhZjUiCi1TRUNUSU9OID0gImJhc2UiCi1ERVBFTkRTID0gIm5jdXJzZXMgdmlydHVhbC9jcnlwdCBnZXR0ZXh0LW5hdGl2ZSIKLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZnRwLmZ1bmV0LmZpL3B1Yi9taXJyb3JzL2Z0cC5hc3Ryb24uY29tL3B1Yi90Y3NoLyR7QlB9LnRhci5neiBcCi0gICAgZmlsZTovLzAwMDEtRW5hYmxlLXN5c3RlbS1tYWxsb2Mtb24tYWxsLWxpbnV4LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1BZGQtZGViaWFuLWNzaC1zY3JpcHRzLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1YmQ1ZjExNTE1Y2M1Y2NhOTI3Nzc3ZmE5MmY5ZDRiOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNDM4MzI1NDQ4MzcxZjU5YjEyYTRjOTNiZmQzZjY5ODJlNmY3OWY4YzVhZWY0YmM4M2FhYzhmNjI3NjZlOTcyIgotCi1FWFRSQV9PRU1BS0UgKz0gIkNDX0ZPUl9HRVRIT1NUPScke0JVSUxEX0NDfSciCi1pbmhlcml0IGF1dG90b29scwotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgb2VfcnVubWFrZSBDQ19GT1JfR0VUSE9TVD0nJHtCVUlMRF9DQ30nIENGTEFHUz0nJHtCVUlMRF9DRkxBR1N9JyBnZXRob3N0Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwubWFuIERFU1RESVI9JHtEfQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLSAgICBsbiAtcyAvdXNyL2Jpbi90Y3NoICR7RH0ke2Jhc2VfYmluZGlyfS90Y3NoCi0gICAgbG4gLXMgL3Vzci9iaW4vdGNzaCAke0R9JHtiYXNlX2JpbmRpcn0vY3NoCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9jc2gvbG9naW4uZAotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2NzaC5jc2hyYyAke1N9L2NzaC5sb2dpbiAke1N9L2NzaC5sb2dvdXQgJHtTfS9jb21wbGV0ZS50Y3NoICR7RH0ke3N5c2NvbmZkaXJ9Ci0gICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7U30vY3NoLW1vZGUuZWwgJHtEfSR7ZGF0YWRpcn0vZW1hY3Mvc2l0ZS1saXNwL2NzaC1tb2RlLmVsCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2VtYWNzL3NpdGUtbGlzcC9jc2gtbW9kZS5lbCIKLQotCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotIyEvYmluL3NoIC1lCi1lY2hvIC91c3IvYmluL3Rjc2ggPj4gJEQvZXRjL3NoZWxscwotZWNobyAvdXNyL2Jpbi9jc2ggPj4gJEQvZXRjL3NoZWxscwotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy90Y3NoL3Rjc2hfNi4yMi4wMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvdGNzaC90Y3NoXzYuMjIuMDIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjMwYzM0MwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvdGNzaC90Y3NoXzYuMjIuMDIuYmIKQEAgLTAsMCArMSw0NCBAQAorREVTQ1JJUFRJT04gPSAiVEVORVggQyBTaGVsbCwgYW4gZW5oYW5jZWQgdmVyc2lvbiBvZiBCZXJrZWxleSBjc2ggXAorICAgIFRoZSBURU5FWCBDIFNoZWxsIGlzIGFuIGVuaGFuY2VkIHZlcnNpb24gb2YgdGhlIEJlcmtlbGV5IFVuaXggQyBzaGVsbC4gXAorICAgIEl0IGluY2x1ZGVzIGFsbCBmZWF0dXJlcyBvZiA0LjRCU0QgQyBzaGVsbCwgcGx1cyBhIGNvbW1hbmQtbGluZSBlZGl0b3IsIFwKKyAgICBwcm9ncmFtbWFibGUgd29yZCBjb21wbGV0aW9uLCBzcGVsbGluZyBjb3JyZWN0aW9uIGFuZCBtb3JlLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3d3dy50Y3NoLm9yZy8iCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NvcHlyaWdodDttZDU9NTc1Y2YyNzE1YzNiZjg5NGUxZjc5YWVjMWQ0ZWFhZjUiCitTRUNUSU9OID0gImJhc2UiCitERVBFTkRTID0gIm5jdXJzZXMgdmlydHVhbC9jcnlwdCBnZXR0ZXh0LW5hdGl2ZSIKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwczovL2FzdHJvbi5jb20vcHViLyR7QlBOfS8ke0JQfS50YXIuZ3ogXAorICAgIGZpbGU6Ly8wMDAxLUVuYWJsZS1zeXN0ZW0tbWFsbG9jLW9uLWFsbC1saW51eC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItQWRkLWRlYmlhbi1jc2gtc2NyaXB0cy5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiZjM0OTA5ZWFiMzM3MzNhZWNjMDVkMjdhZGM4MjI3N2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWQyODcxNThjYTFiMDBiYTQ3N2U4ZWE1N2JhYzUzNjA5ODM4ZWJjZmQwNWZjYjA1Y2E5NTAyMWI3ZWJlODg1YiIKKworRVhUUkFfT0VNQUtFICs9ICJDQ19GT1JfR0VUSE9TVD0nJHtCVUlMRF9DQ30nIgoraW5oZXJpdCBhdXRvdG9vbHMKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIG9lX3J1bm1ha2UgQ0NfRk9SX0dFVEhPU1Q9JyR7QlVJTERfQ0N9JyBDRkxBR1M9JyR7QlVJTERfQ0ZMQUdTfScgZ2V0aG9zdAorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgb2VfcnVubWFrZSBpbnN0YWxsLm1hbiBERVNURElSPSR7RH0KKworICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisgICAgbG4gLXMgL3Vzci9iaW4vdGNzaCAke0R9JHtiYXNlX2JpbmRpcn0vdGNzaAorICAgIGxuIC1zIC91c3IvYmluL3Rjc2ggJHtEfSR7YmFzZV9iaW5kaXJ9L2NzaAorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vY3NoL2xvZ2luLmQKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9jc2guY3NocmMgJHtTfS9jc2gubG9naW4gJHtTfS9jc2gubG9nb3V0ICR7U30vY29tcGxldGUudGNzaCAke0R9JHtzeXNjb25mZGlyfQorICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1N9L2NzaC1tb2RlLmVsICR7RH0ke2RhdGFkaXJ9L2VtYWNzL3NpdGUtbGlzcC9jc2gtbW9kZS5lbAorfQorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9lbWFjcy9zaXRlLWxpc3AvY3NoLW1vZGUuZWwiCisKKworcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKyMhL2Jpbi9zaCAtZQorZWNobyAvdXNyL2Jpbi90Y3NoID4+ICREL2V0Yy9zaGVsbHMKK2VjaG8gL3Vzci9iaW4vY3NoID4+ICREL2V0Yy9zaGVsbHMKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F2cm8vYXZyby1jLzAwMDEtQWxsb3ctYXZyby1DLXRvLWJlLWJ1aWx0LW9uLW11c2wtYmFzZWQtc3lzdGVtcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F2cm8vYXZyby1jLzAwMDEtQWxsb3ctYXZyby1DLXRvLWJlLWJ1aWx0LW9uLW11c2wtYmFzZWQtc3lzdGVtcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODk2NGQ2Yi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdnJvL2F2cm8tYy8wMDAxLUFsbG93LWF2cm8tQy10by1iZS1idWlsdC1vbi1tdXNsLWJhc2VkLXN5c3RlbXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDliMzlhOTg1YmNkNmNkMzRmMDgyMGYzNjgwZjE0NWQ0NmMwZTU2YmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUaXRvdWFuIENocmlzdG9waGUgPHRpdG91YW4uY2hyaXN0b3BoZUByYWlsbm92YS5ldT4KLURhdGU6IFN1biwgOCBEZWMgMjAxOSAwMTo1NTo1OSArMDEwMAotU3ViamVjdDogW1BBVENIXSBBbGxvdyBhdnJvIEMgdG8gYmUgYnVpbHQgb24gbXVzbCBiYXNlZCBzeXN0ZW1zLgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1UaGUgdHlwZSBgc3NpemVfdGAgaXMgZGVmaW5lZCBpbiBzeXMvdHlwZXMuaCwgYW5kIG5vd2hlcmUgZWxzZQotaW4gdGhlIG11c2wgc3RhbmRhcmQgQyBsaWJyYXJ5LCBzbyBpdCBzaG91bGQgYmUgaW5jbHVkZWQgZm9yIHRoZQotY29tcGlsYXRpb24gdG8gc3VjY2VlZC4KLQotVGhpcyBmaXhlcyBzZXZlcmFsIGVycm9ycyBsaWtlOgotCi0gICAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHNyYy9nZW5lcmljLmM6Mjk6MDoKLSAgICBzcmMvZ2VuZXJpYy5jOiBJbiBmdW5jdGlvbiDigJhhdnJvX2dlbmVyaWNfdmFsdWVfbmV34oCZOgotICAgIHNyYy9hdnJvX2dlbmVyaWNfaW50ZXJuYWwuaDo2MzozOToKLSAgICAgICAgZXJyb3I6IOKAmHNzaXplX3TigJkgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOwotICAgICAgICAgICAgICAgZGlkIHlvdSBtZWFuIOKAmHNpemVfdOKAmT8KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogVGl0b3VhbiBDaHJpc3RvcGhlIDx0aXRvdWFuLmNocmlzdG9waGVAcmFpbG5vdmEuZXU+Ci0tLS0KLSBsYW5nL2Mvc3JjL2F2cm9fZ2VuZXJpY19pbnRlcm5hbC5oIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xhbmcvYy9zcmMvYXZyb19nZW5lcmljX2ludGVybmFsLmggYi9sYW5nL2Mvc3JjL2F2cm9fZ2VuZXJpY19pbnRlcm5hbC5oCi1pbmRleCA3MDk0MDNjMDMuLjk4NDNlZDY1MiAxMDA2NDQKLS0tLSBhL2xhbmcvYy9zcmMvYXZyb19nZW5lcmljX2ludGVybmFsLmgKLSsrKyBiL2xhbmcvYy9zcmMvYXZyb19nZW5lcmljX2ludGVybmFsLmgKLUBAIC0yNCw2ICsyNCw4IEBAIGV4dGVybiAiQyIgewotICNkZWZpbmUgQ0xPU0VfRVhURVJOCi0gI2VuZGlmCi0gCi0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKwotICNpbmNsdWRlICJhdnJvL2dlbmVyaWMuaCIKLSAjaW5jbHVkZSAiYXZyby9zY2hlbWEuaCIKLSAjaW5jbHVkZSAiYXZyby92YWx1ZS5oIgotLS0gCi0yLjI0LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXZyby9hdnJvLWNfMS45LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdnJvL2F2cm8tY18xLjkuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODk1NGM5OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdnJvL2F2cm8tY18xLjkuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiQXBhY2hlIEF2cm8gZGF0YSBzZXJpYWxpemF0aW9uIHN5c3RlbS4iCi1IT01FUEFHRSA9ICJodHRwOi8vYXByLmFwYWNoZS5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02ZDUwMmI0MWY3NjE3OWZjODRlNTM2MjM2ZjM1OWNhZSIKLQotREVQRU5EUyA9ICJqYW5zc29uIHpsaWIgeHoiCi0KLUJSQU5DSCA9ICJicmFuY2gtMS45IgotU1JDUkVWID0gIjg5MjE4MjYyY2RlNjJlOThmY2IzNzc4Yjg2Y2QzZjAzMDU2YzU0ZjMiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYXBhY2hlL2F2cm87YnJhbmNoPSR7QlJBTkNIfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFsbG93LWF2cm8tQy10by1iZS1idWlsdC1vbi1tdXNsLWJhc2VkLXN5c3RlbXMucGF0Y2g7cGF0Y2hkaXI9Li4vLi4vIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY21ha2UtVXNlLUdOVUluc3RhbGxEaXJzLWluc3RlYWQtb2YtaGFyZC1jb2RlZC1wYXRocy5wYXRjaDtwYXRjaGRpcj0uLi8uLi8gXAotICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L2dpdC9sYW5nL2MiCi0KLWluaGVyaXQgY21ha2UKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F2cm8vYXZyby1jXzEuOS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXZyby9hdnJvLWNfMS45LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY0MjE3OQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F2cm8vYXZyby1jXzEuOS4yLmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiQXBhY2hlIEF2cm8gZGF0YSBzZXJpYWxpemF0aW9uIHN5c3RlbS4iCitIT01FUEFHRSA9ICJodHRwOi8vYXByLmFwYWNoZS5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02ZDUwMmI0MWY3NjE3OWZjODRlNTM2MjM2ZjM1OWNhZSIKKworREVQRU5EUyA9ICJqYW5zc29uIHpsaWIgeHoiCisKK0JSQU5DSCA9ICJicmFuY2gtMS45IgorU1JDUkVWID0gImJmMjAxMjhjYTYxMzhhODMwYjJlYTEzZTA0OTBmM2RmNmIwMzU2MzkiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYXBhY2hlL2F2cm87YnJhbmNoPSR7QlJBTkNIfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNtYWtlLVVzZS1HTlVJbnN0YWxsRGlycy1pbnN0ZWFkLW9mLWhhcmQtY29kZWQtcGF0aHMucGF0Y2g7cGF0Y2hkaXI9Li4vLi4vIFwKKyAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQvbGFuZy9jIgorCitpbmhlcml0IGNtYWtlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9iZHdnYy9iZHdnY184LjAuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djXzguMC40LmJiCmluZGV4IGY0ZWExNzMuLjQwN2RlMjEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djXzguMC40LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djXzguMC40LmJiCkBAIC0yOCw4ICsyOCw2IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIAogRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1jcGx1c2NwbHVzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlcy8wMDAxLWZpeC1jb25maWd1cmUtZXJyb3ItbXYtbGliY2FyZXMucGMuY21ha2Vpbi10by1saWJjYXIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jLWFyZXMvYy1hcmVzLzAwMDEtZml4LWNvbmZpZ3VyZS1lcnJvci1tdi1saWJjYXJlcy5wYy5jbWFrZWluLXRvLWxpYmNhci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjE1Zjg0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlcy8wMDAxLWZpeC1jb25maWd1cmUtZXJyb3ItbXYtbGliY2FyZXMucGMuY21ha2Vpbi10by1saWJjYXIucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBmMmYxZTEzNGJmNWQ5ZDA3ODk5NDI4NDhlMDMwMDZhZjhkOTI2Y2Y4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogV2FuZyBNaW5neXUgPHdhbmdteUBjbi5mdWppdHN1LmNvbT4KK0RhdGU6IFR1ZSwgMTcgTWFyIDIwMjAgMTI6NTM6MzUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGNvbmZpZ3VyZSBlcnJvciA6IG12IGxpYmNhcmVzLnBjLmNtYWtlaW4gdG8KKyBsaWJjYXJlcy5wYy5jbWFrZQorCitTaWduZWQtb2ZmLWJ5OiBXYW5nIE1pbmd5dSA8d2FuZ215QGNuLmZ1aml0c3UuY29tPgorLS0tCisgQ01ha2VMaXN0cy50eHQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCAzYTU4NzhkLi5jMmU1NzQwIDEwMDY0NAorLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtNTYzLDcgKzU2Myw3IEBAIElGIChDQVJFU19TVEFUSUMpCisgRU5ESUYoKQorIAorICMgV3JpdGUgYXJlc19jb25maWcuaCBjb25maWd1cmF0aW9uIGZpbGUuICBUaGlzIGlzIHVzZWQgb25seSBmb3IgdGhlIGJ1aWxkLgorLUNPTkZJR1VSRV9GSUxFIChsaWJjYXJlcy5wYy5jbWFrZWluICR7UFJPSkVDVF9CSU5BUllfRElSfS9saWJjYXJlcy5wYyBAT05MWSkKKytDT05GSUdVUkVfRklMRSAobGliY2FyZXMucGMuY21ha2UgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2xpYmNhcmVzLnBjIEBPTkxZKQorIAorIAorIAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlcy9jbWFrZS1pbnN0YWxsLWxpYmNhcmVzLnBjLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlcy9jbWFrZS1pbnN0YWxsLWxpYmNhcmVzLnBjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlYjdlNGIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jLWFyZXMvYy1hcmVzL2NtYWtlLWluc3RhbGwtbGliY2FyZXMucGMucGF0Y2gKQEAgLTAsMCArMSw4NCBAQAorRnJvbSAxMjQxNDMwNDI0NWNjZTZlZjBlOGI5NTQ3OTQ5YmU1MTA5ODQ1MzUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjQgSnVsIDIwMTggMTM6MzM6MzMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gY21ha2U6IEluc3RhbGwgbGliY2FyZXMucGMKKworUHJlcGFyZSBhbmQgaW5zdGFsbCBsaWJjYXJlcy5wYyBmaWxlIGR1cmluZyBjbWFrZSBidWlsZCwgc28gbGlicmFyaWVzCit1c2luZyBwa2ctY29uZmlnIHRvIGZpbmQgbGliY2FyZXMgd2lsbCBub3QgZmFpbC4KKworU2lnbmVkLW9mZi1ieTogQWxleGV5IEZpcmFnbyA8YWxleGV5X2ZpcmFnb0BtZW50b3IuY29tPgorCit1cGRhdGUgdG8gMS4xNC4wLCBmaXggcGF0Y2ggd2FybmluZworCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgQ01ha2VMaXN0cy50eHQgfCAyOCArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCBmZDEyM2UxLi4zYTU4NzhkIDEwMDY0NAorLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtMjE0LDIyICsyMTQsMjUgQEAgQUREX0RFRklOSVRJT05TKCR7U1lTRkxBR1N9KQorIAorIAorICMgVGVsbCBDLUFyZXMgYWJvdXQgbGlicmFyaWVzIHRvIGRlcGVuZCBvbgorKyMgQWxzbyBwYXNzIHRoZXNlIGxpYnJhcmllcyB0byBwa2ctY29uZmlnIGZpbGUKKytTRVQoQ0FSRVNfUFJJVkFURV9MSUJTX0xJU1QpCisgSUYgKEhBVkVfTElCUkVTT0xWKQorLQlMSVNUIChBUFBFTkQgQ0FSRVNfREVQRU5ERU5UX0xJQlMgcmVzb2x2KQorKwlMSVNUIChBUFBFTkQgQ0FSRVNfUFJJVkFURV9MSUJTX0xJU1QgIi1scmVzb2x2IikKKyBFTkRJRiAoKQorIElGIChIQVZFX0xJQk5TTCkKKy0JTElTVCAoQVBQRU5EIENBUkVTX0RFUEVOREVOVF9MSUJTIG5zbCkKKysJTElTVCAoQVBQRU5EIENBUkVTX1BSSVZBVEVfTElCU19MSVNUICItbG5zbCIpCisgRU5ESUYgKCkKKyBJRiAoSEFWRV9MSUJTT0NLRVQpCistCUxJU1QgKEFQUEVORCBDQVJFU19ERVBFTkRFTlRfTElCUyBzb2NrZXQpCisrCUxJU1QgKEFQUEVORCBDQVJFU19QUklWQVRFX0xJQlNfTElTVCAiLWxzb2NrZXQiKQorIEVORElGICgpCisgSUYgKEhBVkVfTElCUlQpCistCUxJU1QgKEFQUEVORCBDQVJFU19ERVBFTkRFTlRfTElCUyBydCkKKysJTElTVCAoQVBQRU5EIENBUkVTX1BSSVZBVEVfTElCU19MSVNUICItbHJ0IikKKyBFTkRJRiAoKQorIElGIChXSU4zMikKKy0JTElTVCAoQVBQRU5EIENBUkVTX0RFUEVOREVOVF9MSUJTIHdzMl8zMiBBZHZhcGkzMikKKysJTElTVCAoQVBQRU5EIENBUkVTX1BSSVZBVEVfTElCU19MSVNUICItbHdzMl8zMiIpCisgRU5ESUYgKCkKKyAKKytzdHJpbmcgKFJFUExBQ0UgIjsiICIgIiBDQVJFU19QUklWQVRFX0xJQlMgIiR7Q0FSRVNfUFJJVkFURV9MSUJTX0xJU1R9IikKKyAKKyAjIFdoZW4gY2hlY2tpbmcgZm9yIHN5bWJvbHMsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHNldCB0aGUgcHJvcGVyCisgIyBoZWFkZXJzLCBsaWJyYXJpZXMsIGFuZCBkZWZpbml0aW9ucyBmb3IgdGhlIGRldGVjdGlvbiB0byB3b3JrIHByb3Blcmx5CitAQCAtNTU0LDYgKzU1NywxNSBAQCBDT05GSUdVUkVfRklMRSAoYXJlc19idWlsZC5oLmNtYWtlICR7UFJPSkVDVF9CSU5BUllfRElSfS9hcmVzX2J1aWxkLmgpCisgIyBXcml0ZSBhcmVzX2NvbmZpZy5oIGNvbmZpZ3VyYXRpb24gZmlsZS4gIFRoaXMgaXMgdXNlZCBvbmx5IGZvciB0aGUgYnVpbGQuCisgQ09ORklHVVJFX0ZJTEUgKGFyZXNfY29uZmlnLmguY21ha2UgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2FyZXNfY29uZmlnLmgpCisgCisrIyBQYXNzIHJlcXVpcmVkIENGTEFHUyB0byBwa2ctY29uZmlnIGluIGNhc2Ugb2Ygc3RhdGljIGxpYnJhcnkKKytJRiAoQ0FSRVNfU1RBVElDKQorKyAgICAgICBTRVQgKENQUEZMQUdfQ0FSRVNfU1RBVElDTElCICItRENBUkVTX1NUQVRJQ0xJQiIpCisrRU5ESUYoKQorKworKyMgV3JpdGUgYXJlc19jb25maWcuaCBjb25maWd1cmF0aW9uIGZpbGUuICBUaGlzIGlzIHVzZWQgb25seSBmb3IgdGhlIGJ1aWxkLgorK0NPTkZJR1VSRV9GSUxFIChsaWJjYXJlcy5wYy5jbWFrZWluICR7UFJPSkVDVF9CSU5BUllfRElSfS9saWJjYXJlcy5wYyBAT05MWSkKKysKKysKKyAKKyAjIFRSQU5TRk9STV9NQUtFRklMRV9JTkMKKyAjCitAQCAtNzI4LDYgKzc0MCwxMiBAQCBJRiAoQ0FSRVNfSU5TVEFMTCkKKyAJSU5TVEFMTCAoRklMRVMgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9saWJjYXJlcy5wYyIgQ09NUE9ORU5UIERldmVsIERFU1RJTkFUSU9OICIke0NNQUtFX0lOU1RBTExfTElCRElSfS9wa2djb25maWciKQorIEVORElGICgpCisgCisrIyBwa2ctY29uZmlnIGZpbGUKKytJRiAoQ0FSRVNfSU5TVEFMTCkKKysgICAgICAgU0VUIChQS0dDT05GSUdfSU5TVEFMTF9ESVIgIiR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9L3BrZ2NvbmZpZyIpCisrICAgICAgIElOU1RBTEwgKEZJTEVTICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vbGliY2FyZXMucGMiIERFU1RJTkFUSU9OICR7UEtHQ09ORklHX0lOU1RBTExfRElSfSkKKytFTkRJRiAoKQorKworICMgTGVnYWN5IGNoYWluLWJ1aWxkaW5nIHZhcmlhYmxlcyAocHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgY29kZSkuCisgIyBEb24ndCB1c2UgdGhlc2UsIGV4dGVybmFsIGNvZGUgc2hvdWxkIGJlIHVwZGF0ZWQgdG8gcmVmZXIgdG8gdGhlIGFsaWFzZXMgZGlyZWN0bHkgKGUuZy4sIENhcmVzOjpjYXJlcykuCisgU0VUIChDQVJFU19GT1VORCAxIENBQ0hFIElOVEVSTkFMICJDQVJFUyBMSUJSQVJZIEZPVU5EIikKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2MtYXJlcy9jLWFyZXNfMS4xNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlc18xLjE2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIzNWI5YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2MtYXJlcy9jLWFyZXNfMS4xNi4wLmJiCkBAIC0wLDAgKzEsMjcgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEyLTIwMTQgTEcgRWxlY3Ryb25pY3MsIEluYy4KK1NVTU1BUlkgPSAiYy1hcmVzIGlzIGEgQyBsaWJyYXJ5IHRoYXQgcmVzb2x2ZXMgbmFtZXMgYXN5bmNocm9ub3VzbHkuIgorSE9NRVBBR0UgPSAiaHR0cDovL2RhbmllbC5oYXh4LnNlL3Byb2plY3RzL2MtYXJlcy8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PWZiOTk3NDU0YzhkNjJhYTZhNDdmMDdhOGNkNDhiMDA2IgorCitQViA9ICIxLjE2LjArZ2l0ciR7U1JDUFZ9IgorCitTUkNfVVJJID0gIlwKKyAgICBnaXQ6Ly9naXRodWIuY29tL2MtYXJlcy9jLWFyZXMuZ2l0IFwKKyAgICBmaWxlOi8vY21ha2UtaW5zdGFsbC1saWJjYXJlcy5wYy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtZml4LWNvbmZpZ3VyZS1lcnJvci1tdi1saWJjYXJlcy5wYy5jbWFrZWluLXRvLWxpYmNhci5wYXRjaCBcCisiCitTUkNSRVYgPSAiMDc3YTU4N2RjY2JlMmYwZDhhMTk4N2ZiZDM1MjUzMzM3MDVjMjI0OSIKKworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiY2FyZXMtKD9QPHB2ZXI+XGQrXyhcZF8/KSspIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZworCitQQUNLQUdFUyA9KyAiJHtQTn0tdXRpbHMiCisKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY2Fub25pY2FsLW11bHRpdG91Y2gvZnJhbWVfMi41LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jYW5vbmljYWwtbXVsdGl0b3VjaC9mcmFtZV8yLjUuMC5iYgppbmRleCBkYTFhMmEzLi4yMmI5ZDBiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jYW5vbmljYWwtbXVsdGl0b3VjaC9mcmFtZV8yLjUuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jYW5vbmljYWwtbXVsdGl0b3VjaC9mcmFtZV8yLjUuMC5iYgpAQCAtMTIsNiArMTIsOSBAQAogCiBTUkNfVVJJID0gImh0dHBzOi8vbGF1bmNocGFkLm5ldC8ke0JQTn0vdHJ1bmsvdiR7UFZ9Lytkb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL3Blc3NpbWl6aW5nLW1vdmUucGF0Y2giCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvZnJhbWUvdHJ1bmsiCisKIFNSQ19VUklbbWQ1c3VtXSA9ICIwMmJhYTk0MTA5MWM1ZDE5OGNkMTYyM2IzYWQzNmU2OCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJjZmI5YWI1MmNkY2NkOTI2ZjE4MjJhNDU3MjY0ZDAwMTRjN2ViOWY0NjAwYTcyNjI2MDYzZGQwNzNiMjYyNTZmIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jYW5vbmljYWwtbXVsdGl0b3VjaC9nZWlzXzIuMi4xNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Nhbm9uaWNhbC1tdWx0aXRvdWNoL2dlaXNfMi4yLjE3LmJiCmluZGV4IDkzNjJhNWMuLmI5ODU4ZDIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Nhbm9uaWNhbC1tdWx0aXRvdWNoL2dlaXNfMi4yLjE3LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Nhbm9uaWNhbC1tdWx0aXRvdWNoL2dlaXNfMi4yLjE3LmJiCkBAIC0yMyw2ICsyMyw5IEBACiAgICAgICAgICAgIGZpbGU6Ly9maXgtaW5kZW50YXRpb24tZm9yLWdjYzYucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJnZWlzLUNvbXBhcmUtdGhlLWZpcnN0LWNoYXJhY3Rlci1vZi1zdHJpbmctdG8tbnVsLnBhdGNoIFwKICAgICAgICAgICAgIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9sYXVuY2hwYWQubmV0L2dlaXMvdHJ1bmsiCisKIFNSQ19VUklbbWQ1c3VtXSA9ICIyZmY5ZDc2YTNlYTU3OTQ1MTZiYjAyYzlkMTkyNGZhZiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI4YTYwZjU2ODM4NTIwOTQwMzg5MDRlNjkwZDIzY2M1YTkwYTk4MGZjNTJkYTY3ZjBmMjg4OTBiYWEyNWM3MGViIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jYW5vbmljYWwtbXVsdGl0b3VjaC9ncmFpbF8zLjEuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Nhbm9uaWNhbC1tdWx0aXRvdWNoL2dyYWlsXzMuMS4xLmJiCmluZGV4IDIyZmQwZjQuLmUxZDM3NzcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Nhbm9uaWNhbC1tdWx0aXRvdWNoL2dyYWlsXzMuMS4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Nhbm9uaWNhbC1tdWx0aXRvdWNoL2dyYWlsXzMuMS4xLmJiCkBAIC0xMyw2ICsxMyw5IEBACiBERVBFTkRTID0gImZyYW1lIgogQ1hYRkxBR1NfYXBwZW5kX3Rvb2xjaGFpbi1jbGFuZyA9ICIgLVduby1wZXNzaW1pemluZy1tb3ZlIgogU1JDX1VSSSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvJHtCUE59L3RydW5rLyR7UFZ9Lytkb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vbGF1bmNocGFkLm5ldC9ncmFpbC90cnVuayIKKwogU1JDX1VSSVttZDVzdW1dID0gIjBkZjFiM2VjNjE2NzkyMGYzMTBlMmVmZmU2ZTJhZDQ0IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVlZWQxZjY1MGYwNDI0ODFkYWEzYTJkZTVlN2Q0MzI2MWZlMzQzYjJhMWIxZTI0MGYzYjdmYzI2NTcyYzlkZjMiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdC9kaXNhYmxlLW91dHNpZGUtdGVzdHMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHByZXN0L2NwcHJlc3QvZGlzYWJsZS1vdXRzaWRlLXRlc3RzLnBhdGNoCmluZGV4IDUyMzJlMmEuLmUxMDhlMDIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdC9kaXNhYmxlLW91dHNpZGUtdGVzdHMucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3BwcmVzdC9jcHByZXN0L2Rpc2FibGUtb3V0c2lkZS10ZXN0cy5wYXRjaApAQCAtNTQsNyArNTQsNyBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGNwcHJlc3Qub3JpZy9SZWxlYXNlL3Rlc3RzL2Z1bmN0aW9uYWwvd2Vic29ja2V0cy9jbGllbnQvYXV0aGVudGljYXRpb25fdGVzdHMuY3BwCiArKysgY3BwcmVzdC9SZWxlYXNlL3Rlc3RzL2Z1bmN0aW9uYWwvd2Vic29ja2V0cy9jbGllbnQvYXV0aGVudGljYXRpb25fdGVzdHMuY3BwCi1AQCAtOTMsNiArOTMsNyBAQAorQEAgLTkzLDYgKzkzLDcgQEAgU1VJVEUoYXV0aGVudGljYXRpb25fdGVzdHMpCiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAKQEAgLTYyLDQ2ICs2MiwxNSBAQAogICAgICBURVNUKHNzbF90ZXN0KQogICAgICB7CiAgICAgICAgICB3ZWJzb2NrZXRfY2xpZW50IGNsaWVudDsKLUBAIC0xMjcsNiArMTI4LDcgQEAKK0BAIC0xMjcsNiArMTI4LDcgQEAgU1VJVEUoYXV0aGVudGljYXRpb25fdGVzdHMpCiAgICAgICAgICAgICAgdGhyb3c7CiAgICAgICAgICB9CiAgICAgIH0KICsgICAgKi8KICAKLSAvLyBUaGVzZSB0ZXN0cyBhcmUgc3BlY2lmaWMgdG8gb3VyIHdlYnNvY2tldHBwIGJhc2VkIGltcGxlbWVudGF0aW9uLgotICNpZiAhZGVmaW5lZChfX2NwbHVzcGx1c193aW5ydCkKLUBAIC0xNTksMTIgKzE2MSwxNCBAQAotICAgICAgICAgfQotICAgICB9Ci0gCi0rICAgIC8qCi0gICAgIC8vIFRlc3Qgc3BlY2lmaWNhbGx5IGZvciBzZXJ2ZXIgU2lnbmFsUiB0ZWFtIGhpdCBpbnRlcmVzdGluZyBjYXNlcyB3aXRoLgotICAgICBURVNUKHNuaV93aXRoX29sZGVyX3NlcnZlcl90ZXN0KQotICAgICB7Ci0gICAgICAgICB3ZWJzb2NrZXRfY2xpZW50IGNsaWVudDsKLSAgICAgICAgIHNuaV90ZXN0X2ltcGwoY2xpZW50KTsKLSAgICAgfQotKyAgICAqLwotIAotICAgICAvLyBXaW5SVCBkb2Vzbid0IGV4cG9zZSBvcHRpb24gZm9yIGRpc2FibGluZy4KLSAgICAgLy8gTm8gc3RhYmxlIHNlcnZlciBpcyBhdmFpbGFibGUgdG8gcmVsaWFibHkgdGVzdCB0aGlzLgotQEAgLTE5NCw2ICsxOTgsNyBAQAotICAgICAgICAgfQotICAgICB9Ci0gCi0rICAgIC8qCi0gICAgIC8vIFdpbnJ0IGRvZXNuJ3QgYWxsb3cgZXhwbGljaXRseSBzZXR0aW5nIHNlcnZlciBob3N0IGZvciBTTkkuCi0gICAgIFRFU1Qoc25pX2V4cGxpY2l0X2hvc3RuYW1lKQotICAgICB7Ci1AQCAtMjA0LDYgKzIwOSw3IEBACi0gICAgICAgICB3ZWJzb2NrZXRfY2xpZW50IGNsaWVudChjb25maWcpOwotICAgICAgICAgc25pX3Rlc3RfaW1wbChjbGllbnQpOwotICAgICB9Ci0rICAgICovCi0gCiAgICAgIHZvaWQgaGFuZHNoYWtlX2Vycm9yX3Rlc3RfaW1wbChjb25zdCA6OnV0aWxpdHk6OnN0cmluZ190JiBob3N0KQogICAgICB7Ci1AQCAtMjI1LDExICsyMzEsMTEgQEAKK0BAIC0xNDgsMTEgKzE1MCwxMSBAQCBTVUlURShhdXRoZW50aWNhdGlvbl90ZXN0cykKICAgICAgICAgIH0KICAgICAgfQogIApAQCAtMTE0LDEzICs4MywxMyBAQAogLSAgICBURVNUKGNlcnRfZXhwaXJlZCkgeyBoYW5kc2hha2VfZXJyb3JfdGVzdF9pbXBsKFUoIndzczovL2V4cGlyZWQuYmFkc3NsLmNvbS8iKSk7IH0KICsgICAgLy9URVNUKGNlcnRfZXhwaXJlZCkgeyBoYW5kc2hha2VfZXJyb3JfdGVzdF9pbXBsKFUoIndzczovL2V4cGlyZWQuYmFkc3NsLmNvbS8iKSk7IH0KICAKLSAjZW5kaWYKKyB9IC8vIFNVSVRFKGF1dGhlbnRpY2F0aW9uX3Rlc3RzKQogIAogSW5kZXg6IGNwcHJlc3QvUmVsZWFzZS90ZXN0cy9mdW5jdGlvbmFsL2h0dHAvY2xpZW50L2Nvbm5lY3Rpb25zX2FuZF9lcnJvcnMuY3BwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gY3BwcmVzdC5vcmlnL1JlbGVhc2UvdGVzdHMvZnVuY3Rpb25hbC9odHRwL2NsaWVudC9jb25uZWN0aW9uc19hbmRfZXJyb3JzLmNwcAogKysrIGNwcHJlc3QvUmVsZWFzZS90ZXN0cy9mdW5jdGlvbmFsL2h0dHAvY2xpZW50L2Nvbm5lY3Rpb25zX2FuZF9lcnJvcnMuY3BwCi1AQCAtNDA2LDYgKzQwNiw3IEBACitAQCAtNDA4LDYgKzQwOCw3IEBACiAgICAgIH0KICAjZW5kaWYKICAKQEAgLTEyOCw3ICs5Nyw3IEBACiAgICAgIC8vIFRyeSB0byBjb25uZWN0IHRvIGEgc2VydmVyIG9uIGEgY2xvc2VkIHBvcnQgYW5kIGNhbmNlbCB0aGUgb3BlcmF0aW9uLgogICAgICBURVNUX0ZJWFRVUkUodXJpX2FkZHJlc3MsIGNhbmNlbF9iYWRfcG9ydCkKICAgICAgewotQEAgLTQzNyw2ICs0MzgsNyBAQAorQEAgLTQzOSw2ICs0NDAsNyBAQAogIAogICAgICAgICAgVkVSSUZZX1RIUk9XU19IVFRQX0VSUk9SX0NPREUodC5nZXQoKSwgc3RkOjplcnJjOjpvcGVyYXRpb25fY2FuY2VsZWQpOwogICAgICB9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHByZXN0L2NwcHJlc3RfMi4xMC4xNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdF8yLjEwLjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWM4ZWFiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdF8yLjEwLjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJNaWNyb3NvZnQgcHJvamVjdCBmb3IgY2xvdWQtYmFzZWQgY2xpZW50LXNlcnZlciBjb21tdW5pY2F0aW9uIGluIG5hdGl2ZSBjb2RlIHVzaW5nIGEgbW9kZXJuIGFzeW5jaHJvbm91cyBDKysgQVBJIGRlc2lnbi4iCi1TRUNUSU9OID0gImxpYnMvbmV0d29yayIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvY3BwcmVzdHNkay8iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7U30vbGljZW5zZS50eHQ7bWQ1PWEyZTE1Yjk1NDc2OTIxOGZmOTEyNDY4ZWVjZDZhMDJmIgotREVQRU5EUyA9ICJvcGVuc3NsIHdlYnNvY2tldHBwIHpsaWIgYm9vc3QgYnJvdGxpIgotCi1FWFRSQV9PRUNNQUtFID0gIi1EQ1BQUkVTVF9FWFBPUlRfRElSPWNtYWtlL2NwcHJlc3RzZGsgLURDUFBSRVNUX0VYQ0xVREVfQlJPVExJPU9GRiAtRFdFUlJPUj1PRkYiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvY3BwcmVzdHNkay5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPW1hc3RlciBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWZsb2F0LXRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtb3V0c2lkZS10ZXN0cy5wYXRjaCAiCi0KLSMgdGFnIDIuMTAuMTQKLVNSQ1JFVj0gIjZmNjAyYmVlNjdiMDg4YTI5OWQ3OTAxNTM0YWYzYmNlNjMzNGFiMzgiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHByZXN0L2NwcHJlc3RfMi4xMC4xNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdF8yLjEwLjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlZTVhZTIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHByZXN0L2NwcHJlc3RfMi4xMC4xNS5iYgpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIk1pY3Jvc29mdCBwcm9qZWN0IGZvciBjbG91ZC1iYXNlZCBjbGllbnQtc2VydmVyIGNvbW11bmljYXRpb24gaW4gbmF0aXZlIGNvZGUgdXNpbmcgYSBtb2Rlcm4gYXN5bmNocm9ub3VzIEMrKyBBUEkgZGVzaWduLiIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9jcHByZXN0c2RrLyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtTfS9saWNlbnNlLnR4dDttZDU9YTJlMTViOTU0NzY5MjE4ZmY5MTI0NjhlZWNkNmEwMmYiCitERVBFTkRTID0gIm9wZW5zc2wgd2Vic29ja2V0cHAgemxpYiBib29zdCBicm90bGkiCisKK0VYVFJBX09FQ01BS0UgPSAiLURDUFBSRVNUX0VYUE9SVF9ESVI9Y21ha2UvY3BwcmVzdHNkayAtRENQUFJFU1RfRVhDTFVERV9CUk9UTEk9T0ZGIC1EV0VSUk9SPU9GRiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL01pY3Jvc29mdC9jcHByZXN0c2RrLmdpdDtwcm90b2NvbD1odHRwczticmFuY2g9bWFzdGVyIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtZmxvYXQtdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1vdXRzaWRlLXRlc3RzLnBhdGNoICIKKworIyB0YWcgMi4xMC4xNQorU1JDUkVWPSAiYjk0YmMzMmZmODRlODE1YmE0NGM1NjdmNmZlNGFmNWY1ZjZiMzA0OCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZSBwa2djb25maWcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RhZW1vbnRvb2xzL2RhZW1vbnRvb2xzLzAwMDEtZGFlbW9udG9vbHMtbmF0aXZlLUZpeC1hLXdhcm5pbmcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kYWVtb250b29scy9kYWVtb250b29scy8wMDAxLWRhZW1vbnRvb2xzLW5hdGl2ZS1GaXgtYS13YXJuaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDk1NzdkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RhZW1vbnRvb2xzL2RhZW1vbnRvb2xzLzAwMDEtZGFlbW9udG9vbHMtbmF0aXZlLUZpeC1hLXdhcm5pbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1Gcm9tIGE0M2EzMzI3Y2NkNGIwNmEzYmNmMGM4N2Q1MThhOTdjNmIzOWFjMDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMZWkgTWFvaHVpIDxsZWltYW9odWlAY24uZnVqaXRzdS5jb20+Ci1EYXRlOiBTYXQsIDYgQXVnIDIwMTYgMDI6MDk6NTMgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gZGFlbW9udG9vbHM6IEZpeCBhIHdhcm5pbmcKLQotVG8gZml4IHRoZSB3YXJuaW5nIGFzIGZvbGxvd2luZzoKLQotV0FSTklORzogZGFlbW9udG9vbHMtbmF0aXZlLTAuNzYtcjAgZG9fcG9wdWxhdGVfc3lzcm9vdDogRmlsZSAnL2J1aWxkLXBva3kvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvYmluL2Noa3Noc2dyJyBmcm9tIGRhZW1vbnRvb2xzLW5hdGl2ZSB3YXMgYWxyZWFkeSBzdHJpcHBlZCwgdGhpcyB3aWxsIHByZXZlbnQgZnV0dXJlIGRlYnVnZ2luZyEKLQotU2lnbmVkLW9mZi1ieTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgotLS0tCi0gc3JjL2NvbmYtbGQgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY29uZi1sZCBiL3NyYy9jb25mLWxkCi1pbmRleCA1OWEwZGU3Li4xZDA1MThhIDEwMDY0NAotLS0tIGEvc3JjL2NvbmYtbGQKLSsrKyBiL3NyYy9jb25mLWxkCi1AQCAtMSwzICsxLDMgQEAKLS1nY2MgLXMKLStnY2MKLSAKLSBUaGlzIHdpbGwgYmUgdXNlZCB0byBsaW5rIC5vIGZpbGVzIGludG8gYW4gZXhlY3V0YWJsZS4KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGFlbW9udG9vbHMvZGFlbW9udG9vbHMvY3Jvc3MtY29tcGlsZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RhZW1vbnRvb2xzL2RhZW1vbnRvb2xzL2Nyb3NzLWNvbXBpbGUucGF0Y2gKaW5kZXggZjE2NGMyZC4uOWMwN2Q3NSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGFlbW9udG9vbHMvZGFlbW9udG9vbHMvY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kYWVtb250b29scy9kYWVtb250b29scy9jcm9zcy1jb21waWxlLnBhdGNoCkBAIC0zMCw3ICszMCw3IEBACiAgaGFzc2hzZ3IuaDogY2hrc2hzZ3IgY2hvb3NlIGNvbXBpbGUgaGFzc2hzZ3IuaDEgaGFzc2hzZ3IuaDIgbG9hZCBcCiAgdHJ5c2hzZ3IuYyB3YXJuLXNoc2dyCiAtCS4vY2hrc2hzZ3IgfHwgKCBjYXQgd2Fybi1zaHNncjsgZXhpdCAxICkKLSsJY2hrc2hzZ3IgfHwgKCBjYXQgd2Fybi1zaHNncjsgZXhpdCAxICkKKysJZWNobyAiV2FybmluZzogV2UgY2FuIG5vdCBydW4gdGVzdCBvbiBjcm9zcyB0YXJnZXQuIC0gaWdub3JpbmcgLi9jaGtzaHNnciB8fCAoIGNhdCB3YXJuLXNoc2dyOyBleGl0IDEgKSIKICAJLi9jaG9vc2UgY2xyIHRyeXNoc2dyIGhhc3Noc2dyLmgxIGhhc3Noc2dyLmgyID4gaGFzc2hzZ3IuaAogIAogIGhhc3dhaXRwLmg6IGNob29zZSBjb21waWxlIGhhc3dhaXRwLmgxIGhhc3dhaXRwLmgyIGxvYWQgdHJ5d2FpdHAuYwpAQCAtMzksNyArMzksNyBAQAogIHJlYWRwcm9jdGl0bGUgcnRzLnRlc3RzIHNldGxvY2sgc2V0dWlkZ2lkIHNvZnRsaW1pdCBzdXBlcnZpc2Ugc3ZjIFwKICBzdm9rIHN2c2NhbiBzdnNjYW5ib290IHN2c3RhdCB0YWk2NG4gdGFpNjRubG9jYWwKIC0JZW52IC0gL2Jpbi9zaCBydHMudGVzdHMgMj4mMSB8IGNhdCAtdiA+IHJ0cwotKwllY2hvICJXYXJuaW5nOiBXZSBjYW4gbm90IHJ1biB0ZXN0IG9uIGNyb3NzIHRhcmdldC4iCisrCWVjaG8gIldhcm5pbmc6IFdlIGNhbiBub3QgcnVuIHRlc3Qgb24gY3Jvc3MgdGFyZ2V0LiAtIGlnbm9yaW5nIGVudiAtIC9iaW4vc2ggcnRzLnRlc3RzIDI+JjEgfCBjYXQgLXYgPiBydHMiCiAgCiAgc2Nhbl91bG9uZy5vOiBjb21waWxlIHNjYW4uaCBzY2FuX3Vsb25nLmMKICAJLi9jb21waWxlIHNjYW5fdWxvbmcuYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGFlbW9udG9vbHMvZGFlbW9udG9vbHNfMC43Ni5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RhZW1vbnRvb2xzL2RhZW1vbnRvb2xzXzAuNzYuYmIKaW5kZXggMzUyNTFjYi4uZjBjNWY3ZCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGFlbW9udG9vbHMvZGFlbW9udG9vbHNfMC43Ni5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kYWVtb250b29scy9kYWVtb250b29sc18wLjc2LmJiCkBAIC0xNiwyMSArMTYsMTYgQEAKIExJQ0VOU0UgPSAiUEQiCiAKIFNSQ19VUkkgPSAiaHR0cDovL2NyLnlwLnRvL2RhZW1vbnRvb2xzLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1lcnJvci5oLWluY2x1ZGUtZXJybm8uaC1pbnN0ZWFkLW9mLWV4dGVybi1pbnQuZGlmZiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXN1cGVydmlzZS5jLS4tc3VwZXJ2aXNlLW1heS1iZS1hLXN5bWxpbmstaWYtaXQtcy1kYS5kaWZmICIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gImZpbGU6Ly9jcm9zcy1jb21waWxlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMS1kYWVtb250b29scy1GaXgtUUEtSXNzdWUucGF0Y2ggIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiZmlsZTovLzAwMDEtZGFlbW9udG9vbHMtbmF0aXZlLUZpeC1hLXdhcm5pbmcucGF0Y2ggIgorICAgIGZpbGU6Ly8wMDAxLWVycm9yLmgtaW5jbHVkZS1lcnJuby5oLWluc3RlYWQtb2YtZXh0ZXJuLWludC5kaWZmIFwKKyAgICBmaWxlOi8vMDAwMi1zdXBlcnZpc2UuYy0uLXN1cGVydmlzZS1tYXktYmUtYS1zeW1saW5rLWlmLWl0LXMtZGEuZGlmZiBcCisgICAgZmlsZTovL2Nyb3NzLWNvbXBpbGUucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWRhZW1vbnRvb2xzLUZpeC1RQS1Jc3N1ZS5wYXRjaCBcCisiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIxODcxYWYyNDUzZDZlNDY0MDM0OTY4YTBmYmNiMmJmYyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJhNTU1MzUwMTJiMmJlN2E1MmRjZDllY2NhYmI5YTE5OGIxM2JlNTBkMDM4NDE0M2JkM2IzMmI4NzEwZGY0YzFmIgogCi1TID0gIiR7V09SS0RJUn0vYWRtaW4vJHtCUE59LSR7UFZ9IgotCi1ERVBFTkRTICs9ICJkYWVtb250b29scy1uYXRpdmUiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICIiCitTID0gIiR7V09SS0RJUn0vYWRtaW4vJHtCUH0iCiAKIGRvX2NvbXBpbGUoKSB7CiAgICAgLi9wYWNrYWdlL2NvbXBpbGUKQEAgLTQwLDEyICszNSwxMCBAQAogICAgIGluc3RhbGwgLWQgJHtEfS8ke2JpbmRpcn0KIH0KIAotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vY29tcGlsZS9jaGtzaHNnciAke0R9LyR7YmluZGlyfQotfQotCiBkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CiAgICAgaW5zdGFsbCAtbTc1NSAke1N9L2NvbW1hbmQvKiAke0R9LyR7YmluZGlyfQogfQogCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAic3ZjIHN2b2siCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kZWJzdW1zL2RlYnN1bXNfMi4yLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kZWJzdW1zL2RlYnN1bXNfMi4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzZjIwZWIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGVic3Vtcy9kZWJzdW1zXzIuMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotU1VNTUFSWSA9ICJNaXNjZWxsYW5lb3VzIHV0aWxpdGllcyBzcGVjaWZpYyB0byBEZWJpYW4iCi1TVU1NQVJZXyR7UE59LWNyb24gPSAiQ3JvbiBzY3JpcHRzIHRvIGNvbnRyb2wgYXV0b21hdGljIGRlYnN1bSBjaGVja2luZyIKLURFU0NSSVBUSU9OID0gIkEgdG9vbCBmb3IgdmVyaWZpY2F0aW9uIG9mIGluc3RhbGxlZCBwYWNrYWdlIGZpbGVzIGFnYWluc3QgXAotTUQ1IGNoZWNrc3VtcyBkZWJzdW1zIGNhbiB2ZXJpZnkgdGhlIGludGVncml0eSBvZiBpbnN0YWxsZWQgcGFja2FnZSBmaWxlcyBcCi1hZ2FpbnN0IE1ENSBjaGVja3N1bXMgaW5zdGFsbGVkIGJ5IHRoZSBwYWNrYWdlLCBvciBnZW5lcmF0ZWQgZnJvbSBhIC5kZWIgXAotYXJjaGl2ZS4iCi1ERVNDUklQVElPTl8ke1BOfS1jcm9uID0gIkNyb24gc2NyaXB0cyB0byBjb250cm9sIGF1dG9tYXRpYyBzeXN0ZW0gaW50ZWdyaXR5IFwKLWNoZWNraW5nIHZpYSBkZWJzdW1zLiIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT03NzBkNzUxNTUzZTY1NTllOWVhZWZkMmUxMWNjZjdlOSIKLQotU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE3MDUzMFQyMTIxMDhaL3Bvb2wvbWFpbi9kL2RlYnN1bXMvZGVic3Vtc18yLjIuMi50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiODJiMDcxMDg1NWE3ZTUyMTJkNDM1ODE2M2EyNjllNzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWE2MTg5NmY5M2E2YmJmZTAxNjFjMjFkY2Q2NzUyOWFlOGUxZWM4YzNjY2YyNDQ1MjNjNTJjNGFkODI1M2Q5NyIKLQotIyB0aGUgcGFja2FnZSBpcyB0YWtlbiBmcm9tIHNuYXBzaG90cy5kZWJpYW4ub3JnOyB0aGF0IHNvdXJjZSBpcyBzdGF0aWMgYW5kIGdvZXMgc3RhbGUKLSMgc28gd2UgY2hlY2sgdGhlIGxhdGVzdCB1cHN0cmVhbSBmcm9tIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBnZXQgdXBkYXRlZAotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9kLyR7QlBOfS8iCi0KLWluaGVyaXQgcGVybG5hdGl2ZSBnZXR0ZXh0Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nyb24ud2Vla2x5Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nyb24ubW9udGhseSAke0R9JHtzYmluZGlyfSAke0R9JHtiaW5kaXJ9Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW4xICR7RH0ke21hbmRpcn0vbWFuOAotICAgICAgICBpbnN0YWxsIC1tIDA3NTUgZGVic3VtcyAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsIC1tIDA3NTUgcmRlYnN1bXMgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1IGRlYnN1bXNfaW5pdCAke0R9JHtzYmluZGlyfQotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgbWFuL2RlYnN1bXMuMSAke0R9JHttYW5kaXJ9L21hbjEvCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCBtYW4vcmRlYnN1bXMuMSAke0R9JHttYW5kaXJ9L21hbjEvCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCBtYW4vZGVic3Vtc19pbml0LjggJHtEfSR7bWFuZGlyfS9tYW44LwotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgZGViaWFuL2Nyb24uZGFpbHkgXAotICAgICAgICAgICAgICAgICR7RH0vJHtzeXNjb25mZGlyfS9jcm9uLmRhaWx5L2RlYnN1bXMKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IGRlYmlhbi9jcm9uLndlZWtseSBcCi0gICAgICAgICAgICAgICAgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nyb24ud2Vla2x5L2RlYnN1bXMKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IGRlYmlhbi9jcm9uLm1vbnRobHkgXAotICAgICAgICAgICAgICAgICR7RH0vJHtzeXNjb25mZGlyfS9jcm9uLm1vbnRobHkvZGVic3VtcwotICAgICAgICAjIE11c3QgZXhpc3QsIGRlZmF1bHRzIHRvIGVtcHR5LgotICAgICAgICB0b3VjaCAke0R9LyR7c3lzY29uZmRpcn0vZGVic3Vtcy1pZ25vcmUKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LWNyb24iCi0KLVJERVBFTkRTXyR7UE59ID0gImRwa2cgZHBrZy1wZXJsIGxpYmZpbGUtZm5tYXRjaC1wZXJsIHBlcmwgXAotICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtY29uc3RhbnQgcGVybC1tb2R1bGUtZGlnZXN0LW1kNSBcCi0gICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1lcnJubyBwZXJsLW1vZHVsZS1mY250bCBcCi0gICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLWJhc2VuYW1lIHBlcmwtbW9kdWxlLWZpbGUtY29weSBcCi0gICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLWZpbmQgcGVybC1tb2R1bGUtZmlsZS1nbG9iIFwKLSAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtcGF0aCBwZXJsLW1vZHVsZS1maWxlLXNwZWMgXAotICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS10ZW1wIHBlcmwtbW9kdWxlLWdldG9wdC1sb25nIFwKLSAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXBvc2l4IgotCi1GSUxFU18ke1BOfS1jcm9uID0gIiR7c3lzY29uZmRpcn0vY3Jvbi4qIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZHN0YXQvZHN0YXRfMC43LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kc3RhdC9kc3RhdF8wLjcuNC5iYgppbmRleCA4ZWI3MTU3Li4yZTM3ZGQ3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kc3RhdC9kc3RhdF8wLjcuNC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kc3RhdC9kc3RhdF8wLjcuNC5iYgpAQCAtMTksNCArMTksNCBAQAogICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAogfQogCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWNvcmUgcHl0aG9uLW1pc2MgcHl0aG9uLXJlc291cmNlIHB5dGhvbi1zaGVsbCBweXRob24tdW5peGFkbWluIgorUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtY29yZSBweXRob24zLW1pc2MgcHl0aG9uMy1yZXNvdXJjZSBweXRob24zLXNoZWxsIHB5dGhvbjMtdW5peGFkbWluIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXBlZy9lcGVnX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VwZWcvZXBlZ19naXQuYmIKaW5kZXggNmIyM2JiZi4uOGNhNTc0MCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXBlZy9lcGVnX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lcGVnL2VwZWdfZ2l0LmJiCkBAIC02LDcgKzYsNyBAQAogREVQRU5EUyA9ICJqcGVnIGxpYmV4aWYiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9tYXR0ZXMvZXBlZy5naXQiCi1TUkNSRVYgPSAiMzM3ZjU1MzQ2NDI1ZmJmMmQyODNlNzk0YjcwMjMxOGVmMmE3NGJjYiIKK1NSQ1JFViA9ICI5YTE3NWNkNjdlYWE2MWZlNDU0MTNkOGRhODJkYTcyOTM2NTY3MDQ3IgogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbHRrL2ZsdGsuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbHRrL2ZsdGsuYmIKaW5kZXggMGQwMzNmMy4uMDkzNDRjZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmx0ay9mbHRrLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsdGsvZmx0ay5iYgpAQCAtMiw3ICsyLDcgQEAKIAogREVQRU5EUyA9ICJhbHNhLWxpYiB6bGliIGpwZWcgbGlicG5nIGxpYnhleHQgbGlieGZ0IgogCi1pbmhlcml0IGZlYXR1cmVzX2NoZWNrIGJpbmNvbmZpZyBsaWJfcGFja2FnZSBndGstaWNvbi1jYWNoZSBtaW1lCitpbmhlcml0IGZlYXR1cmVzX2NoZWNrIGJpbmNvbmZpZyBsaWJfcGFja2FnZSBndGstaWNvbi1jYWNoZSBtaW1lIG1pbWUteGRnCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBTUkNfVVJJICs9ICIgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZm10L2ZtdF82LjAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZtdC9mbXRfNi4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzNWM3N2IuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZm10L2ZtdF82LjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAib3Blbi1zb3VyY2UgZm9ybWF0dGluZyBsaWJyYXJ5IGZvciBDKysiCi1ERVNDUklQVElPTiA9ICJ7Zm10fSBpcyBhbiBvcGVuLXNvdXJjZSBmb3JtYXR0aW5nIGxpYnJhcnkgZm9yIEMrKy4gSXQgY2FuIGJlIHVzZWQgYXMgYSBzYWZlIGFuZCBmYXN0IGFsdGVybmF0aXZlIHRvIChzKXByaW50ZiBhbmQgaW9zdHJlYW1zLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZm10LmRldiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5yc3Q7bWQ1PWFmODhkNzU4Zjc1ZjNjNWM0OGE5Njc1MDFmMjQzODRiIgotCi1TUkNfVVJJICs9ICJnaXQ6Ly9naXRodWIuY29tL2ZtdGxpYi9mbXQiCi1TUkNSRVYgPSAiNzUxMmE1NWFhM2FlMzA5NTg3Y2E4OTY2OGVmOWVjNDA3NGE1MWExZiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBjbWFrZQotaW5oZXJpdCBwdGVzdAotCi1FWFRSQV9PRUNNQUtFICs9ICItREJVSUxEX1NIQVJFRF9MSUJTPU9OIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZm10L2ZtdF82LjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZtdC9mbXRfNi4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVkYzk0YQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZtdC9mbXRfNi4yLjAuYmIKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJvcGVuLXNvdXJjZSBmb3JtYXR0aW5nIGxpYnJhcnkgZm9yIEMrKyIKK0RFU0NSSVBUSU9OID0gIntmbXR9IGlzIGFuIG9wZW4tc291cmNlIGZvcm1hdHRpbmcgbGlicmFyeSBmb3IgQysrLiBJdCBjYW4gYmUgdXNlZCBhcyBhIHNhZmUgYW5kIGZhc3QgYWx0ZXJuYXRpdmUgdG8gKHMpcHJpbnRmIGFuZCBpb3N0cmVhbXMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9mbXQuZGV2IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnJzdDttZDU9YWY4OGQ3NThmNzVmM2M1YzQ4YTk2NzUwMWYyNDM4NGIiCisKK1NSQ19VUkkgKz0gImdpdDovL2dpdGh1Yi5jb20vZm10bGliL2ZtdCIKK1NSQ1JFViA9ICI5YmRkMTU5NmNlZjFiNTdiOTU1NmY4YmVmMzJkYzRhMzIzMjJlZjNlIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlCitpbmhlcml0IHB0ZXN0CisKK0VYVFJBX09FQ01BS0UgKz0gIi1EQlVJTERfU0hBUkVEX0xJQlM9T04iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mcmVlcmRwL2ZyZWVyZHBfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwX2dpdC5iYgppbmRleCAzNzNjNDk3Li43Y2FmYmI3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mcmVlcmRwL2ZyZWVyZHBfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZyZWVyZHAvZnJlZXJkcF9naXQuYmIKQEAgLTEwLDExICsxMCwxMiBAQAogCiBpbmhlcml0IHBrZ2NvbmZpZyBjbWFrZSBnaXRwa2d2CiAKK1BFID0gIjEiCiBQViA9ICIyLjAuMCtnaXRyJHtTUkNQVn0iCiBQS0dWID0gIiR7R0lUUEtHVlRBR30iCiAKLSMgMi4wLjAtcmM0Ci1TUkNSRVYgPSAiZTIxYjcyYzk1Zjg1NzgxN2I0YjMyYjVlZjU0MDYzNTVjMDA1YTllOCIKKyMgMi4wLjAgcmVsZWFzZQorU1JDUkVWID0gIjVhYjJiZWQ4NzQ5NzQ3YjhlNGIyZWQ0MzFmZDEwMmJjNzI2YmU2ODQiCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vRnJlZVJEUC9GcmVlUkRQLmdpdCBcCiAgICAgZmlsZTovL3dpbnByLW1ha2VjZXJ0LUJ1aWxkLXdpdGgtaW5zdGFsbC1SUEFUSC5wYXRjaCBcCiAiCkBAIC0zOSw3ICs0MCw3IEBACiAKIFgxMV9ERVBTID0gInZpcnR1YWwvbGlieDExIGxpYnhpbmVyYW1hIGxpYnhleHQgbGlieGN1cnNvciBsaWJ4diBsaWJ4aSBsaWJ4cmVuZGVyIGxpYnhmaXhlcyBsaWJ4ZGFtYWdlIGxpYnhyYW5kciBsaWJ4a2JmaWxlIgogUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EV0lUSF9YMTE9T04gLURXSVRIX1hJTkVSQU1BPU9OIC1EV0lUSF9YRVhUPU9OIC1EV0lUSF9YQ1VSU09SPU9OIC1EV0lUSF9YVj1PTiAtRFdJVEhfWEk9T04gLURXSVRIX1hSRU5ERVI9T04gLURXSVRIX1hGSVhFUz1PTiAtRFdJVEhfWERBTUFHRT1PTiAtRFdJVEhfWFJBTkRSPU9OIC1EV0lUSF9YS0JGSUxFPU9OLC1EV0lUSF9YMTE9T0ZGLCR7WDExX0RFUFN9IgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItRFdJVEhfV0FZTEFORD1PTiwtRFdJVEhfV0FZTEFORD1PRkYsd2F5bGFuZCIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURXSVRIX1dBWUxBTkQ9T04sLURXSVRIX1dBWUxBTkQ9T0ZGLHdheWxhbmQgd2F5bGFuZC1uYXRpdmUiCiBQQUNLQUdFQ09ORklHW2RpcmVjdGZiXSA9ICItRFdJVEhfRElSRUNURkI9T04sLURXSVRIX0RJUkVDVEZCPU9GRixkaXJlY3RmYiIKIFBBQ0tBR0VDT05GSUdbcGFtXSA9ICItRFdJVEhfUEFNPU9OLC1EV0lUSF9QQU09T0ZGLGxpYnBhbSIKIFBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLURXSVRIX1BVTFNFQVVESU89T04sLURXSVRIX1BVTFNFQVVESU89T0ZGLHB1bHNlYXVkaW8iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC8wMDAxLWFubm90YXRlLmMtZ2RmdC5jLVJlcGxhY2Utc3RybmNweS13aXRoLW1lbWNjcHktdG8tZmkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC8wMDAxLWFubm90YXRlLmMtZ2RmdC5jLVJlcGxhY2Utc3RybmNweS13aXRoLW1lbWNjcHktdG8tZmkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzNzdiMzcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvMDAwMS1hbm5vdGF0ZS5jLWdkZnQuYy1SZXBsYWNlLXN0cm5jcHktd2l0aC1tZW1jY3B5LXRvLWZpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSA4NWM3Njk0YTVjZjM0NTk3OTA5YmRkMWNhNjkzMWIwZjk5OTA0YzJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDE5IEp1biAyMDE4IDAwOjQwOjQ5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFubm90YXRlLmMvZ2RmdC5jOiBSZXBsYWNlIHN0cm5jcHkgd2l0aCBtZW1jY3B5IHRvIGZpeAotIC1Xc3RyaW5nb3AtdHJ1bmNhdGlvbi4KLQotRml4ZWQgZm9yIGdjYzg6Ci1naXQvc3JjL2dkZnQuYzoxNjk5OjI6IGVycm9yOiAnc3RybmNweScgb3V0cHV0IHRydW5jYXRlZCBiZWZvcmUgdGVybWluYXRpbmcgbnVsIGNvcHlpbmcgYXMgbWFueSBieXRlcyBmcm9tIGEgc3RyaW5nIGFzIGl0cyBsZW5ndGggWy1XZXJyb3I9c3RyaW5nb3AtdHJ1bmNhdGlvbl0KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJnZC9saWJnZC9wdWxsLzQ0Ml0KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvYW5ub3RhdGUuYyB8IDIgKy0KLSBzcmMvZ2RmdC5jICAgICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9hbm5vdGF0ZS5jIGIvc3JjL2Fubm90YXRlLmMKLWluZGV4IDAwYWFmNDkuLjE3ZGY4MTMgMTAwNjQ0Ci0tLS0gYS9zcmMvYW5ub3RhdGUuYwotKysrIGIvc3JjL2Fubm90YXRlLmMKLUBAIC0xMDQsNyArMTA0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJCQkJCWZwcmludGYoc3RkZXJyLCAiRm9udCBtYXhpbXVtIGxlbmd0aCBpcyAxMDI0LCAlZCBnaXZlblxuIiwgZm9udF9sZW4pOwotIAkJCQkJZ290byBiYWRMaW5lOwotIAkJCQl9Ci0tCQkJCXN0cm5jcHkoZm9udCwgc3QsIGZvbnRfbGVuKTsKLSsJCQkJbWVtY3B5KGZvbnQsIHN0LCBmb250X2xlbik7Ci0gCQkJfQotIAkJfSBlbHNlIGlmKCFzdHJjbXAoc3QsICJhbGlnbiIpKSB7Ci0gCQkJY2hhciAqc3QgPSBzdHJ0b2soMCwgIiBcdFxyXG4iKTsKLWRpZmYgLS1naXQgYS9zcmMvZ2RmdC5jIGIvc3JjL2dkZnQuYwotaW5kZXggOWZhODI5NS4uODFkYmU0MSAxMDA2NDQKLS0tLSBhL3NyYy9nZGZ0LmMKLSsrKyBiL3NyYy9nZGZ0LmMKLUBAIC0xNjk2LDcgKzE2OTYsNyBAQCBzdGF0aWMgY2hhciAqIGZvbnRfcGF0aChjaGFyICoqZm9udHBhdGgsIGNoYXIgKm5hbWVfbGlzdCkKLSAJCWdkRnJlZShwYXRoKTsKLSAJCXJldHVybiAiY291bGQgbm90IGFsbG9jIGZ1bGwgbGlzdCBvZiBmb250cyI7Ci0gCX0KLS0Jc3RybmNweShmb250bGlzdCwgbmFtZV9saXN0LCBuYW1lX2xpc3RfbGVuKTsKLSsJbWVtY3B5KGZvbnRsaXN0LCBuYW1lX2xpc3QsIG5hbWVfbGlzdF9sZW4pOwotIAlmb250bGlzdFtuYW1lX2xpc3RfbGVuXSA9IDA7Ci0gCi0gCS8qCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC9DVkUtMjAxOC0xMDAwMjIyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvQ1ZFLTIwMTgtMTAwMDIyMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU5MjRkMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC9DVkUtMjAxOC0xMDAwMjIyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotRnJvbSA0YjFlMThhMDBjZTdjNGI3ZTY5MTljM2IzMTA5YTAzNDM5M2I4MDVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZTogU2F0LCAxNCBKdWwgMjAxOCAxMzo1NDowOCAtMDQwMAotU3ViamVjdDogW1BBVENIXSBibXA6IGNoZWNrIHJldHVybiB2YWx1ZSBpbiBnZEltYWdlQm1wUHRyCi0KLUNsb3NlcyAjNDQ3LgotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBhYzE2YmRmMmQ0MTcyNGI1YTY1MjU1ZDRjMjhmYjBlYzQ2YmM0MmY1KQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGliZ2QvbGliZ2QvY29tbWl0LzRiMWUxOGEwMGNlN2M0YjdlNjkxOWMzYjMxMDlhMDM0MzkzYjgwNWFdCi1DVkU6IENWRS0yMDE4LTEwMDAyMjIKLVNpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvZ2RfYm1wLmMgfCAxNyArKysrKysrKysrKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2dkX2JtcC5jIGIvc3JjL2dkX2JtcC5jCi1pbmRleCBjY2FmZGNkLi5kNjI1ZGExIDEwMDY0NAotLS0tIGEvc3JjL2dkX2JtcC5jCi0rKysgYi9zcmMvZ2RfYm1wLmMKLUBAIC00OCw2ICs0OCw4IEBAIHN0YXRpYyBpbnQgYm1wX3JlYWRfNGJpdChnZEltYWdlUHRyIGltLCBnZElPQ3R4UHRyIGluZmlsZSwgYm1wX2luZm9fdCAqaW5mbywgYm1wCi0gc3RhdGljIGludCBibXBfcmVhZF84Yml0KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHhQdHIgaW5maWxlLCBibXBfaW5mb190ICppbmZvLCBibXBfaGRyX3QgKmhlYWRlcik7Ci0gc3RhdGljIGludCBibXBfcmVhZF9ybGUoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBpbmZpbGUsIGJtcF9pbmZvX3QgKmluZm8pOwotIAotK3N0YXRpYyBpbnQgX2dkSW1hZ2VCbXBDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQsIGludCBjb21wcmVzc2lvbik7Ci0rCi0gI2RlZmluZSBCTVBfREVCVUcocykKLSAKLSBzdGF0aWMgaW50IGdkQk1QUHV0V29yZChnZElPQ3R4ICpvdXQsIGludCB3KQotQEAgLTg4LDggKzkwLDEwIEBAIEJHRF9ERUNMQVJFKHZvaWQgKikgZ2RJbWFnZUJtcFB0cihnZEltYWdlUHRyIGltLCBpbnQgKnNpemUsIGludCBjb21wcmVzc2lvbikKLSAJdm9pZCAqcnY7Ci0gCWdkSU9DdHggKm91dCA9IGdkTmV3RHluYW1pY0N0eCgyMDQ4LCBOVUxMKTsKLSAJaWYgKG91dCA9PSBOVUxMKSByZXR1cm4gTlVMTDsKLS0JZ2RJbWFnZUJtcEN0eChpbSwgb3V0LCBjb21wcmVzc2lvbik7Ci0tCXJ2ID0gZ2REUEV4dHJhY3REYXRhKG91dCwgc2l6ZSk7Ci0rCWlmICghX2dkSW1hZ2VCbXBDdHgoaW0sIG91dCwgY29tcHJlc3Npb24pKQotKwkJcnYgPSBnZERQRXh0cmFjdERhdGEob3V0LCBzaXplKTsKLSsJZWxzZQotKwkJcnYgPSBOVUxMOwotIAlvdXQtPmdkX2ZyZWUob3V0KTsKLSAJcmV0dXJuIHJ2OwotIH0KLUBAIC0xNDIsNiArMTQ2LDExIEBAIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VCbXAoZ2RJbWFnZVB0ciBpbSwgRklMRSAqb3V0RmlsZSwgaW50IGNvbXByZXNzaW9uKQotIAkJY29tcHJlc3Npb24gLSB3aGV0aGVyIHRvIGFwcGx5IFJMRSBvciBub3QuCi0gKi8KLSBCR0RfREVDTEFSRSh2b2lkKSBnZEltYWdlQm1wQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHhQdHIgb3V0LCBpbnQgY29tcHJlc3Npb24pCi0rewotKwlfZ2RJbWFnZUJtcEN0eChpbSwgb3V0LCBjb21wcmVzc2lvbik7Ci0rfQotKwotK3N0YXRpYyBpbnQgX2dkSW1hZ2VCbXBDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQsIGludCBjb21wcmVzc2lvbikKLSB7Ci0gCWludCBiaXRtYXBfc2l6ZSA9IDAsIGluZm9fc2l6ZSwgdG90YWxfc2l6ZSwgcGFkZGluZzsKLSAJaW50IGksIHJvdywgeHBvcywgcGl4ZWw7Ci1AQCAtMTQ5LDYgKzE1OCw3IEBAIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VCbXBDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQsIGludCBjb21wcmVzc2lvbikKLSAJdW5zaWduZWQgY2hhciAqdW5jb21wcmVzc2VkX3JvdyA9IE5VTEwsICp1bmNvbXByZXNzZWRfcm93X3N0YXJ0ID0gTlVMTDsKLSAJRklMRSAqdG1wZmlsZV9mb3JfY29tcHJlc3Npb24gPSBOVUxMOwotIAlnZElPQ3R4UHRyIG91dF9vcmlnaW5hbCA9IE5VTEw7Ci0rCWludCByZXQgPSAxOwotIAotIAkvKiBObyBjb21wcmVzc2lvbiBpZiBpdHMgdHJ1ZSBjb2xvdXIgb3Igd2UgZG9uJ3Qgc3VwcG9ydCBzZWVrICovCi0gCWlmIChpbS0+dHJ1ZUNvbG9yKSB7Ci1AQCAtMzI2LDYgKzMzNiw3IEBAIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VCbXBDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQsIGludCBjb21wcmVzc2lvbikKLSAJCW91dF9vcmlnaW5hbCA9IE5VTEw7Ci0gCX0KLSAKLSsJcmV0ID0gMDsKLSBjbGVhbnVwOgotIAlpZiAodG1wZmlsZV9mb3JfY29tcHJlc3Npb24pIHsKLSAjaWZkZWYgX1dJTjMyCi1AQCAtMzM5LDcgKzM1MCw3IEBAIGNsZWFudXA6Ci0gCWlmIChvdXRfb3JpZ2luYWwpIHsKLSAJCW91dF9vcmlnaW5hbC0+Z2RfZnJlZShvdXRfb3JpZ2luYWwpOwotIAl9Ci0tCXJldHVybjsKLSsJcmV0dXJuIHJldDsKLSB9Ci0gCi0gc3RhdGljIGludCBjb21wcmVzc19yb3codW5zaWduZWQgY2hhciAqcm93LCBpbnQgbGVuZ3RoKQotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvQ1ZFLTIwMTktNjk3OC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkL0NWRS0yMDE5LTY5NzgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliZWIyM2UuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvQ1ZFLTIwMTktNjk3OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5OSArMCwwIEBACi1Gcm9tIDU1MzcwMjk4MGFlODljODNmMmQ2ZTI1NGQ2MmNmODJlMjA0OTU2ZDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiQ2hyaXN0b3BoIE0uIEJlY2tlciIgPGNtYmVja2VyNjlAZ214LmRlPgotRGF0ZTogVGh1LCAxNyBKYW4gMjAxOSAxMTo1NDo1NSArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggIzQ5MjogUG90ZW50aWFsIGRvdWJsZS1mcmVlIGluIGdkSW1hZ2UqUHRyKCkKLQotV2hlbmV2ZXIgYGdkSW1hZ2UqUHRyKClgIGNhbGxzIGBnZEltYWdlKkN0eCgpYCBhbmQgdGhlIGxhdHRlciBmYWlscywgd2UKLW11c3Qgbm90IGNhbGwgYGdkRFBFeHRyYWN0RGF0YSgpYDsgb3RoZXJ3aXNlIGEgZG91YmxlLWZyZWUgd291bGQKLWhhcHBlbi4gIFNpbmNlIGBnZEltYWdlKkN0eCgpYCBhcmUgdm9pZCBmdW5jdGlvbnMsIGFuZCB3ZSBjYW4ndCBjaGFuZ2UKLXRoYXQgZm9yIEJDIHJlYXNvbnMsIHdlJ3JlIGludHJvZHVjaW5nIHN0YXRpYyBoZWxwZXJzIHdoaWNoIGFyZSB1c2VkCi1pbnRlcm5hbGx5LgotCi1XZSdyZSBhZGRpbmcgYSByZWdyZXNzaW9uIHRlc3QgZm9yIGBnZEltYWdlSnBlZ1B0cigpYCwgYnV0IG5vdCBmb3IKLWBnZEltYWdlR2lmUHRyKClgIGFuZCBgZ2RJbWFnZVdibXBQdHIoKWAgc2luY2Ugd2UgZG9uJ3Qga25vdyBob3cgdG8KLXRyaWdnZXIgZmFpbHVyZSBvZiB0aGUgcmVzcGVjdGl2ZSBgZ2RJbWFnZSpDdHgoKWAgY2FsbHMuCi0KLVRoaXMgcG90ZW50aWFsIHNlY3VyaXR5IGlzc3VlIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IFNvbG1heiBTYWxpbWkgKGFrYS4KLVJvb25leSkuCi0tLS0KLSBzcmMvZ2RfZ2lmX291dC5jICAgICAgICAgICAgICAgICAgfCAxOCArKysrKysrKysrKysrKystLS0KLSBzcmMvZ2RfanBlZy5jICAgICAgICAgICAgICAgICAgICAgfCAyMCArKysrKysrKysrKysrKysrLS0tLQotIHNyYy9nZF93Ym1wLmMgICAgICAgICAgICAgICAgICAgICB8IDIxICsrKysrKysrKysrKysrKysrKy0tLQotIHRlc3RzL2pwZWcvLmdpdGlnbm9yZSAgICAgICAgICAgICB8ICAxICsKLSB0ZXN0cy9qcGVnL0NNYWtlTGlzdHMudHh0ICAgICAgICAgfCAgMSArCi0gdGVzdHMvanBlZy9NYWtlbW9kdWxlLmFtICAgICAgICAgIHwgIDMgKystCi0gdGVzdHMvanBlZy9qcGVnX3B0cl9kb3VibGVfZnJlZS5jIHwgMzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDcgZmlsZXMgY2hhbmdlZCwgODQgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2pwZWcvanBlZ19wdHJfZG91YmxlX2ZyZWUuYwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGliZ2QvbGliZ2QvY29tbWl0LzU1MzcwMjk4MGFlODljODNmMmQ2ZTI1NGQ2MmNmODJlMjA0OTU2ZDBdCi1DVkU6IENWRS0yMDE5LTY5NzgKLQotU2lnbmVkLW9mZi1ieTogVHJldm9yIEdhbWJsaW4gPHRyZXZvci5nYW1ibGluQHdpbmRyaXZlci5jb20+Ci0KLQotZGlmZiAtLWdpdCBhL3NyYy9nZF9naWZfb3V0LmMgYi9zcmMvZ2RfZ2lmX291dC5jCi1pbmRleCAyOThhNTgxLi5kNWE5NTM0IDEwMDY0NAotLS0tIGEvc3JjL2dkX2dpZl9vdXQuYwotKysrIGIvc3JjL2dkX2dpZl9vdXQuYwotQEAgLTk5LDYgKzk5LDcgQEAgc3RhdGljIHZvaWQgY2hhcl9pbml0KEdpZkN0eCAqY3R4KTsKLSBzdGF0aWMgdm9pZCBjaGFyX291dChpbnQgYywgR2lmQ3R4ICpjdHgpOwotIHN0YXRpYyB2b2lkIGZsdXNoX2NoYXIoR2lmQ3R4ICpjdHgpOwotIAotK3N0YXRpYyBpbnQgX2dkSW1hZ2VHaWZDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQpOwotIAotIAotIAotQEAgLTEzMSw4ICsxMzIsMTEgQEAgQkdEX0RFQ0xBUkUodm9pZCAqKSBnZEltYWdlR2lmUHRyKGdkSW1hZ2VQdHIgaW0sIGludCAqc2l6ZSkKLSAJdm9pZCAqcnY7Ci0gCWdkSU9DdHggKm91dCA9IGdkTmV3RHluYW1pY0N0eCgyMDQ4LCBOVUxMKTsKLSAJaWYgKG91dCA9PSBOVUxMKSByZXR1cm4gTlVMTDsKLS0JZ2RJbWFnZUdpZkN0eChpbSwgb3V0KTsKLS0JcnYgPSBnZERQRXh0cmFjdERhdGEob3V0LCBzaXplKTsKLSsJaWYgKCFfZ2RJbWFnZUdpZkN0eChpbSwgb3V0KSkgewotKwkJcnYgPSBnZERQRXh0cmFjdERhdGEob3V0LCBzaXplKTsKLSsJfSBlbHNlIHsKLSsJCXJ2ID0gTlVMTDsKLSsJfQotIAlvdXQtPmdkX2ZyZWUob3V0KTsKLSAJcmV0dXJuIHJ2OwotIH0KLUBAIC0yMjAsNiArMjI0LDEyIEBAIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VHaWYoZ2RJbWFnZVB0ciBpbSwgRklMRSAqb3V0RmlsZSkKLSAKLSAqLwotIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VHaWZDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQpCi0rewotKwlfZ2RJbWFnZUdpZkN0eChpbSwgb3V0KTsKLSt9Ci0rCi0rLyogcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIDEgb24gZmFpbHVyZSAqLwotK3N0YXRpYyBpbnQgX2dkSW1hZ2VHaWZDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQpCi0gewotIAlnZEltYWdlUHRyIHBpbSA9IDAsIHRpbSA9IGltOwotIAlpbnQgaW50ZXJsYWNlLCBCaXRzUGVyUGl4ZWw7Ci1AQCAtMjMxLDcgKzI0MSw3IEBAIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VHaWZDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQpCi0gCQliYXNlZCB0ZW1wb3JhcnkgaW1hZ2UuICovCi0gCQlwaW0gPSBnZEltYWdlQ3JlYXRlUGFsZXR0ZUZyb21UcnVlQ29sb3IoaW0sIDEsIDI1Nik7Ci0gCQlpZighcGltKSB7Ci0tCQkJcmV0dXJuOwotKwkJCXJldHVybiAxOwotIAkJfQotIAkJdGltID0gcGltOwotIAl9Ci1AQCAtMjQ3LDYgKzI1Nyw4IEBAIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VHaWZDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQpCi0gCQkvKiBEZXN0cm95IHBhbGV0dGUgYmFzZWQgdGVtcG9yYXJ5IGltYWdlLiAqLwotIAkJZ2RJbWFnZURlc3Ryb3koCXBpbSk7Ci0gCX0KLSsKLSsJcmV0dXJuIDA7Ci0gfQotIAotIAotZGlmZiAtLWdpdCBhL3NyYy9nZF9qcGVnLmMgYi9zcmMvZ2RfanBlZy5jCi1pbmRleCBmYzA1ODQyLi45NmVmNDMwIDEwMDY0NAotLS0tIGEvc3JjL2dkX2pwZWcuYwotKysrIGIvc3JjL2dkX2pwZWcuYwotQEAgLTExNyw2ICsxMTcsOCBAQCBzdGF0aWMgdm9pZCBmYXRhbF9qcGVnX2Vycm9yKGpfY29tbW9uX3B0ciBjaW5mbykKLSAJZXhpdCg5OSk7Ci0gfQotIAotK3N0YXRpYyBpbnQgX2dkSW1hZ2VKcGVnQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHggKm91dGZpbGUsIGludCBxdWFsaXR5KTsKLSsKLSAvKgotICAqIFdyaXRlIElNIHRvIE9VVEZJTEUgYXMgYSBKRklGLWZvcm1hdHRlZCBKUEVHIGltYWdlLCB1c2luZyBxdWFsaXR5Ci0gICogUVVBTElUWS4gIElmIFFVQUxJVFkgaXMgaW4gdGhlIHJhbmdlIDAtMTAwLCBpbmNyZWFzaW5nIHZhbHVlcwotQEAgLTIzMSw4ICsyMzMsMTEgQEAgQkdEX0RFQ0xBUkUodm9pZCAqKSBnZEltYWdlSnBlZ1B0cihnZEltYWdlUHRyIGltLCBpbnQgKnNpemUsIGludCBxdWFsaXR5KQotIAl2b2lkICpydjsKLSAJZ2RJT0N0eCAqb3V0ID0gZ2ROZXdEeW5hbWljQ3R4KDIwNDgsIE5VTEwpOwotIAlpZiAob3V0ID09IE5VTEwpIHJldHVybiBOVUxMOwotLQlnZEltYWdlSnBlZ0N0eChpbSwgb3V0LCBxdWFsaXR5KTsKLS0JcnYgPSBnZERQRXh0cmFjdERhdGEob3V0LCBzaXplKTsKLSsJaWYgKCFfZ2RJbWFnZUpwZWdDdHgoaW0sIG91dCwgcXVhbGl0eSkpIHsKLSsJCXJ2ID0gZ2REUEV4dHJhY3REYXRhKG91dCwgc2l6ZSk7Ci0rCX0gZWxzZSB7Ci0rCQlydiA9IE5VTEw7Ci0rCX0KLSAJb3V0LT5nZF9mcmVlKG91dCk7Ci0gCXJldHVybiBydjsKLSB9Ci1AQCAtMjUzLDYgKzI1OCwxMiBAQCB2b2lkIGpwZWdfZ2RJT0N0eF9kZXN0KGpfY29tcHJlc3NfcHRyIGNpbmZvLCBnZElPQ3R4ICpvdXRmaWxlKTsKLSAKLSAqLwotIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VKcGVnQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHggKm91dGZpbGUsIGludCBxdWFsaXR5KQotK3sKLSsJX2dkSW1hZ2VKcGVnQ3R4KGltLCBvdXRmaWxlLCBxdWFsaXR5KTsKLSt9Ci0rCi0rLyogcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIDEgb24gZmFpbHVyZSAqLwotK3N0YXRpYyBpbnQgX2dkSW1hZ2VKcGVnQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHggKm91dGZpbGUsIGludCBxdWFsaXR5KQotIHsKLSAJc3RydWN0IGpwZWdfY29tcHJlc3Nfc3RydWN0IGNpbmZvOwotIAlzdHJ1Y3QganBlZ19lcnJvcl9tZ3IgamVycjsKLUBAIC0yODcsNyArMjk4LDcgQEAgQkdEX0RFQ0xBUkUodm9pZCkgZ2RJbWFnZUpwZWdDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eCAqb3V0ZmlsZSwgaW50IHF1YWxpdHkpCi0gCQlpZihyb3cpIHsKLSAJCQlnZEZyZWUocm93KTsKLSAJCX0KLS0JCXJldHVybjsKLSsJCXJldHVybiAxOwotIAl9Ci0gCi0gCWNpbmZvLmVyci0+ZW1pdF9tZXNzYWdlID0ganBlZ19lbWl0X21lc3NhZ2U7Ci1AQCAtMzI4LDcgKzMzOSw3IEBAIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VKcGVnQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHggKm91dGZpbGUsIGludCBxdWFsaXR5KQotIAlpZihyb3cgPT0gMCkgewotIAkJZ2RfZXJyb3IoImdkLWpwZWc6IGVycm9yOiB1bmFibGUgdG8gYWxsb2NhdGUgSlBFRyByb3cgc3RydWN0dXJlOiBnZENhbGxvYyByZXR1cm5zIE5VTExcbiIpOwotIAkJanBlZ19kZXN0cm95X2NvbXByZXNzKCZjaW5mbyk7Ci0tCQlyZXR1cm47Ci0rCQlyZXR1cm4gMTsKLSAJfQotIAotIAlyb3dwdHJbMF0gPSByb3c7Ci1AQCAtNDA1LDYgKzQxNiw3IEBAIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VKcGVnQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHggKm91dGZpbGUsIGludCBxdWFsaXR5KQotIAlqcGVnX2ZpbmlzaF9jb21wcmVzcygmY2luZm8pOwotIAlqcGVnX2Rlc3Ryb3lfY29tcHJlc3MoJmNpbmZvKTsKLSAJZ2RGcmVlKHJvdyk7Ci0rCXJldHVybiAwOwotIH0KLSAKLSAKLWRpZmYgLS1naXQgYS9zcmMvZ2Rfd2JtcC5jIGIvc3JjL2dkX3dibXAuYwotaW5kZXggZjE5YTFjOS4uYTQ5YmRiZSAxMDA2NDQKLS0tLSBhL3NyYy9nZF93Ym1wLmMKLSsrKyBiL3NyYy9nZF93Ym1wLmMKLUBAIC04OCw2ICs4OCw4IEBAIGludCBnZF9nZXRpbih2b2lkICppbikKLSAJcmV0dXJuIChnZEdldEMoKGdkSU9DdHggKilpbikpOwotIH0KLSAKLStzdGF0aWMgaW50IF9nZEltYWdlV0JNUEN0eChnZEltYWdlUHRyIGltYWdlLCBpbnQgZmcsIGdkSU9DdHggKm91dCk7Ci0rCi0gLyoKLSAJRnVuY3Rpb246IGdkSW1hZ2VXQk1QQ3R4Ci0gCi1AQCAtMTAwLDYgKzEwMiwxMiBAQCBpbnQgZ2RfZ2V0aW4odm9pZCAqaW4pCi0gCQlvdXQgICAtIHRoZSBzdHJlYW0gd2hlcmUgdG8gd3JpdGUKLSAqLwotIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VXQk1QQ3R4KGdkSW1hZ2VQdHIgaW1hZ2UsIGludCBmZywgZ2RJT0N0eCAqb3V0KQotK3sKLSsJX2dkSW1hZ2VXQk1QQ3R4KGltYWdlLCBmZywgb3V0KTsKLSt9Ci0rCi0rLyogcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIDEgb24gZmFpbHVyZSAqLwotK3N0YXRpYyBpbnQgX2dkSW1hZ2VXQk1QQ3R4KGdkSW1hZ2VQdHIgaW1hZ2UsIGludCBmZywgZ2RJT0N0eCAqb3V0KQotIHsKLSAJaW50IHgsIHksIHBvczsKLSAJV2JtcCAqd2JtcDsKLUBAIC0xMDcsNyArMTE1LDcgQEAgQkdEX0RFQ0xBUkUodm9pZCkgZ2RJbWFnZVdCTVBDdHgoZ2RJbWFnZVB0ciBpbWFnZSwgaW50IGZnLCBnZElPQ3R4ICpvdXQpCi0gCS8qIGNyZWF0ZSB0aGUgV0JNUCAqLwotIAlpZigod2JtcCA9IGNyZWF0ZXdibXAoZ2RJbWFnZVNYKGltYWdlKSwgZ2RJbWFnZVNZKGltYWdlKSwgV0JNUF9XSElURSkpID09IE5VTEwpIHsKLSAJCWdkX2Vycm9yKCJDb3VsZCBub3QgY3JlYXRlIFdCTVBcbiIpOwotLQkJcmV0dXJuOwotKwkJcmV0dXJuIDE7Ci0gCX0KLSAKLSAJLyogZmlsbCB1cCB0aGUgV0JNUCBzdHJ1Y3R1cmUgKi8KLUBAIC0xMjMsMTEgKzEzMSwxNSBAQCBCR0RfREVDTEFSRSh2b2lkKSBnZEltYWdlV0JNUEN0eChnZEltYWdlUHRyIGltYWdlLCBpbnQgZmcsIGdkSU9DdHggKm91dCkKLSAKLSAJLyogd3JpdGUgdGhlIFdCTVAgdG8gYSBnZCBmaWxlIGRlc2NyaXB0b3IgKi8KLSAJaWYod3JpdGV3Ym1wKHdibXAsICZnZF9wdXRvdXQsIG91dCkpIHsKLSsJCWZyZWV3Ym1wKHdibXApOwotIAkJZ2RfZXJyb3IoIkNvdWxkIG5vdCBzYXZlIFdCTVBcbiIpOwotKwkJcmV0dXJuIDE7Ci0gCX0KLSAKLSAJLyogZGVzIHN1Ym1pdHRlZCB0aGlzIGJ1Z2ZpeDogZ2RGcmVlIHRoZSBtZW1vcnkuICovCi0gCWZyZWV3Ym1wKHdibXApOwotKwotKwlyZXR1cm4gMDsKLSB9Ci0gCi0gLyoKLUBAIC0yNzEsOCArMjgzLDExIEBAIEJHRF9ERUNMQVJFKHZvaWQgKikgZ2RJbWFnZVdCTVBQdHIoZ2RJbWFnZVB0ciBpbSwgaW50ICpzaXplLCBpbnQgZmcpCi0gCXZvaWQgKnJ2OwotIAlnZElPQ3R4ICpvdXQgPSBnZE5ld0R5bmFtaWNDdHgoMjA0OCwgTlVMTCk7Ci0gCWlmIChvdXQgPT0gTlVMTCkgcmV0dXJuIE5VTEw7Ci0tCWdkSW1hZ2VXQk1QQ3R4KGltLCBmZywgb3V0KTsKLS0JcnYgPSBnZERQRXh0cmFjdERhdGEob3V0LCBzaXplKTsKLSsJaWYgKCFfZ2RJbWFnZVdCTVBDdHgoaW0sIGZnLCBvdXQpKSB7Ci0rCQlydiA9IGdkRFBFeHRyYWN0RGF0YShvdXQsIHNpemUpOwotKwl9IGVsc2UgewotKwkJcnYgPSBOVUxMOwotKwl9Ci0gCW91dC0+Z2RfZnJlZShvdXQpOwotIAlyZXR1cm4gcnY7Ci0gfQotZGlmZiAtLWdpdCBhL3Rlc3RzL2pwZWcvLmdpdGlnbm9yZSBiL3Rlc3RzL2pwZWcvLmdpdGlnbm9yZQotaW5kZXggYzI4YWE4Ny4uMTNiY2YwNCAxMDA2NDQKLS0tLSBhL3Rlc3RzL2pwZWcvLmdpdGlnbm9yZQotKysrIGIvdGVzdHMvanBlZy8uZ2l0aWdub3JlCi1AQCAtMyw1ICszLDYgQEAKLSAvanBlZ19lbXB0eV9maWxlCi0gL2pwZWdfaW0yaW0KLSAvanBlZ19udWxsCi0rL2pwZWdfcHRyX2RvdWJsZV9mcmVlCi0gL2pwZWdfcmVhZAotIC9qcGVnX3Jlc29sdXRpb24KLWRpZmYgLS1naXQgYS90ZXN0cy9qcGVnL0NNYWtlTGlzdHMudHh0IGIvdGVzdHMvanBlZy9DTWFrZUxpc3RzLnR4dAotaW5kZXggMTk5NjRiMC4uYThkODE2MiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2pwZWcvQ01ha2VMaXN0cy50eHQKLSsrKyBiL3Rlc3RzL2pwZWcvQ01ha2VMaXN0cy50eHQKLUBAIC0yLDYgKzIsNyBAQCBJRihKUEVHX0ZPVU5EKQotIExJU1QoQVBQRU5EIFRFU1RTX0ZJTEVTCi0gCWpwZWdfZW1wdHlfZmlsZQotIAlqcGVnX2ltMmltCi0rCWpwZWdfcHRyX2RvdWJsZV9mcmVlCi0gCWpwZWdfbnVsbAotICkKLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9qcGVnL01ha2Vtb2R1bGUuYW0gYi90ZXN0cy9qcGVnL01ha2Vtb2R1bGUuYW0KLWluZGV4IDdlNWQzMTcuLmI4OWUxNjkgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9qcGVnL01ha2Vtb2R1bGUuYW0KLSsrKyBiL3Rlc3RzL2pwZWcvTWFrZW1vZHVsZS5hbQotQEAgLTIsNyArMiw4IEBAIGlmIEhBVkVfTElCSlBFRwotIGxpYmdkX3Rlc3RfcHJvZ3JhbXMgKz0gXAotIAlqcGVnL2pwZWdfZW1wdHlfZmlsZSBcCi0gCWpwZWcvanBlZ19pbTJpbSBcCi0tCWpwZWcvanBlZ19udWxsCi0rCWpwZWcvanBlZ19udWxsIFwKLSsJanBlZy9qcGVnX3B0cl9kb3VibGVfZnJlZQotIAotIGlmIEhBVkVfTElCUE5HCi0gbGliZ2RfdGVzdF9wcm9ncmFtcyArPSBcCi1kaWZmIC0tZ2l0IGEvdGVzdHMvanBlZy9qcGVnX3B0cl9kb3VibGVfZnJlZS5jIGIvdGVzdHMvanBlZy9qcGVnX3B0cl9kb3VibGVfZnJlZS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZGY1YTUxMAotLS0tIC9kZXYvbnVsbAotKysrIGIvdGVzdHMvanBlZy9qcGVnX3B0cl9kb3VibGVfZnJlZS5jCi1AQCAtMCwwICsxLDMxIEBACi0rLyoqCi0rICogVGVzdCB0aGF0IGZhaWx1cmUgdG8gY29udmVydCB0byBKUEVHIHJldHVybnMgTlVMTAotKyAqCi0rICogV2UgYXJlIGNyZWF0aW5nIGFuIGltYWdlLCBzZXQgaXRzIHdpZHRoIHRvIHplcm8sIGFuZCBwYXNzIHRoaXMgaW1hZ2UgdG8KLSsgKiBgZ2RJbWFnZUpwZWdQdHIoKWAgd2hpY2ggaXMgc3VwcG9zZWQgdG8gZmFpbCwgYW5kIGFzIHN1Y2ggc2hvdWxkIHJldHVybiBOVUxMLgotKyAqCi0rICogU2VlIGFsc28gPGh0dHBzOi8vZ2l0aHViLmNvbS9saWJnZC9saWJnZC9pc3N1ZXMvMzgxPgotKyAqLwotKwotKwotKyNpbmNsdWRlICJnZC5oIgotKyNpbmNsdWRlICJnZHRlc3QuaCIKLSsKLSsKLStpbnQgbWFpbigpCi0rewotKyAgICBnZEltYWdlUHRyIHNyYywgZHN0OwotKyAgICBpbnQgc2l6ZTsKLSsKLSsgICAgc3JjID0gZ2RJbWFnZUNyZWF0ZVRydWVDb2xvcigxLCAxMCk7Ci0rICAgIGdkVGVzdEFzc2VydChzcmMgIT0gTlVMTCk7Ci0rCi0rICAgIHNyYy0+c3ggPSAwOyAvKiB0aGlzIGhhY2sgZm9yY2VzIGdkSW1hZ2VKcGVnUHRyKCkgdG8gZmFpbCAqLwotKwotKyAgICBkc3QgPSBnZEltYWdlSnBlZ1B0cihzcmMsICZzaXplLCAwKTsKLSsgICAgZ2RUZXN0QXNzZXJ0KGRzdCA9PSBOVUxMKTsKLSsKLSsgICAgZ2RJbWFnZURlc3Ryb3koc3JjKTsKLSsKLSsgICAgcmV0dXJuIGdkTnVtRmFpbHVyZXMoKTsKLSt9Ci0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZF8yLjIuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkXzIuMi41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWY5YmIyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkXzIuMi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotU1VNTUFSWSA9ICJnZCBpcyBhIGxpYnJhcnkgdXNlZCB0byBjcmVhdGUgUE5HLCBKUEVHLCBvciBXQk1QIGltYWdlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBnZCBncmFwaGljcyBsaWJyYXJ5IGFsbG93cyB5b3VyIGNvZGUgdG8gcXVpY2tseSBkcmF3IGltYWdlcyBcCi1jb21wbGV0ZSB3aXRoIGxpbmVzLCBhcmNzLCB0ZXh0LCBtdWx0aXBsZSBjb2xvcnMsIGN1dCBhbmQgcGFzdGUgZnJvbSBvdGhlciBcCi1pbWFnZXMsIGFuZCBmbG9vZCBmaWxscywgYW5kIHRvIHdyaXRlIG91dCB0aGUgcmVzdWx0IGFzIGEgUE5HIG9yIEpQRUcgZmlsZS4gXAotVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGluIFdlYiBhcHBsaWNhdGlvbnMsIHdoZXJlIFBORyBhbmQgSlBFRyBhcmUgdHdvIFwKLW9mIHRoZSBmb3JtYXRzIGFjY2VwdGVkIGZvciBpbmxpbmUgaW1hZ2VzIGJ5IG1vc3QgYnJvd3NlcnMuIE5vdGUgdGhhdCBnZCBpcyBub3QgXAotYSBwYWludCBwcm9ncmFtLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9saWJnZC5iaXRidWNrZXQub3JnLyIKLQotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJHRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA3Mzg0YjNhYTJlMGQzOWFmY2EwZDZjNDAyODZmNTQ1IgotCi1ERVBFTkRTID0gImZyZWV0eXBlIGxpYnBuZyBqcGVnIHpsaWIgdGlmZiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpYmdkL2xpYmdkLmdpdDticmFuY2g9R0QtMi4yIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYW5ub3RhdGUuYy1nZGZ0LmMtUmVwbGFjZS1zdHJuY3B5LXdpdGgtbWVtY2NweS10by1maS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xMDAwMjIyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTY5NzgucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDUkVWID0gIjgyNTUyMzFiNjg4ODk1OTdkMDRkNDUxYTcyNDM4YWI5MmE0MDVhYmEiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgKz0gIiAtLWRpc2FibGUtcnBhdGggXAotICAgICAgICAgICAgICAgICAgLS13aXRoLWpwZWc9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotICAgICAgICAgICAgICAgICAgLS13aXRoLWZyZWV0eXBlPXllcyBcCi0gICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZm9udGNvbmZpZyBcCi0gICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtd2VicCBcCi0gICAgICAgICAgICAgICAgICAtLXdpdGhvdXQteHBtIFwKLSAgICAgICAgICAgICAgICAgIC0td2l0aG91dC14IFwKLSAgICAgICAgICAgICAgICAiCi0KLUVYVFJBX09FTUFLRSA9ICdMREZMQUdTPSIke0xERkxBR1N9IicKLQotREVCVUdfT1BUSU1JWkFUSU9OX2FwcGVuZCA9ICIgLVduby1lcnJvcj1tYXliZS11bmluaXRpYWxpemVkIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIGNsZWFudXAgYnVpbGRwYXRocyBmcm9tIGdkbGliLnBjCi0gICAgc2VkIC1pIC1lICdzIyR7U1RBR0lOR19ESVJfSE9TVH0jI2cnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2dkbGliLnBjCi19Ci0KLVBBQ0tBR0VTICs9ICIke1BOfS10b29scyIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30iCi1GSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKLQotUFJPVklERVMgKz0gIiR7UE59LXRvb2xzIgotUlBST1ZJREVTXyR7UE59LXRvb2xzID0gIiR7UE59LXRvb2xzIgotUkRFUEVORFNfJHtQTn0tdG9vbHMgPSAicGVybCBwZXJsLW1vZHVsZS1zdHJpY3QiCi0KLUNWRV9QUk9EVUNUID0gImxpYmdkIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2RfMi4zLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZF8yLjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWM4YTA1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2RfMi4zLjAuYmIKQEAgLTAsMCArMSw1MiBAQAorU1VNTUFSWSA9ICJnZCBpcyBhIGxpYnJhcnkgdXNlZCB0byBjcmVhdGUgUE5HLCBKUEVHLCBvciBXQk1QIGltYWdlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBnZCBncmFwaGljcyBsaWJyYXJ5IGFsbG93cyB5b3VyIGNvZGUgdG8gcXVpY2tseSBkcmF3IGltYWdlcyBcCitjb21wbGV0ZSB3aXRoIGxpbmVzLCBhcmNzLCB0ZXh0LCBtdWx0aXBsZSBjb2xvcnMsIGN1dCBhbmQgcGFzdGUgZnJvbSBvdGhlciBcCitpbWFnZXMsIGFuZCBmbG9vZCBmaWxscywgYW5kIHRvIHdyaXRlIG91dCB0aGUgcmVzdWx0IGFzIGEgUE5HIG9yIEpQRUcgZmlsZS4gXAorVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGluIFdlYiBhcHBsaWNhdGlvbnMsIHdoZXJlIFBORyBhbmQgSlBFRyBhcmUgdHdvIFwKK29mIHRoZSBmb3JtYXRzIGFjY2VwdGVkIGZvciBpbmxpbmUgaW1hZ2VzIGJ5IG1vc3QgYnJvd3NlcnMuIE5vdGUgdGhhdCBnZCBpcyBub3QgXAorYSBwYWludCBwcm9ncmFtLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJnZC5naXRodWIuaW8vIgorCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkdEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGU1YmM4NjI3Yjk0OTQ3NDFjOTA1ZDY1MjM4YzY2YjciCisKK0RFUEVORFMgPSAiZnJlZXR5cGUgbGlicG5nIGpwZWcgemxpYiB0aWZmIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGliZ2QvbGliZ2QuZ2l0O2JyYW5jaD1tYXN0ZXIgXAorICAgICAgICAgICIKKworU1JDUkVWID0gImIwNzlmYTA2MjIzYzNhYjg2MmM4ZjBlZWE1OGE5Njg3Mjc5NzE5ODgiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZyBnZXR0ZXh0IHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgKz0gIiAtLWRpc2FibGUtcnBhdGggXAorICAgICAgICAgICAgICAgICAgLS13aXRoLWpwZWc9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAorICAgICAgICAgICAgICAgICAgLS13aXRoLWZyZWV0eXBlPXllcyBcCisgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZm9udGNvbmZpZyBcCisgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtd2VicCBcCisgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQteHBtIFwKKyAgICAgICAgICAgICAgICAgIC0td2l0aG91dC14IFwKKyAgICAgICAgICAgICAgICAiCisKK0VYVFJBX09FTUFLRSA9ICdMREZMQUdTPSIke0xERkxBR1N9IicKKworREVCVUdfT1BUSU1JWkFUSU9OX2FwcGVuZCA9ICIgLVduby1lcnJvcj1tYXliZS11bmluaXRpYWxpemVkIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIGNsZWFudXAgYnVpbGRwYXRocyBmcm9tIGdkbGliLnBjCisgICAgc2VkIC1pIC1lICdzIyR7U1RBR0lOR19ESVJfSE9TVH0jI2cnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2dkbGliLnBjCit9CisKK1BBQ0tBR0VTICs9ICIke1BOfS10b29scyIKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30iCitGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKKworUFJPVklERVMgKz0gIiR7UE59LXRvb2xzIgorUlBST1ZJREVTXyR7UE59LXRvb2xzID0gIiR7UE59LXRvb2xzIgorUkRFUEVORFNfJHtQTn0tdG9vbHMgPSAicGVybCBwZXJsLW1vZHVsZS1zdHJpY3QiCisKK0NWRV9QUk9EVUNUID0gImxpYmdkIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2VuZ2V0b3B0L2dlbmdldG9wdF8yLjIzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2VuZ2V0b3B0L2dlbmdldG9wdF8yLjIzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExOGUzYzUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZW5nZXRvcHQvZ2VuZ2V0b3B0XzIuMjMuYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJza2VsZXRvbiBtYWluLmMgZ2VuZXJhdG9yIgorREVTQ1JJUFRJT04gPSAiR2VuZ2V0b3B0IGlzIGEgdG9vbCB0byB3cml0ZSBjb21tYW5kIGxpbmUgb3B0aW9uIHBhcnNpbmcgY29kZSBmb3IgQyBwcm9ncmFtcy4iCitTRUNUSU9OID0gInV0aWxzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZW5nZXRvcHQvZ2VuZ2V0b3B0Lmh0bWwiCisKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmY5NWJmZTAxOWZlYWY5MmY1MjRiNzNkZDc5ZTc2ZWIiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nZW5nZXRvcHQvJHtCUE59LSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gImVhMTY1ZDYxODY0MGRiZGVjYjQyYWU0NDkxMzM3OTY1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI5NDFhZWM5MDExODY0OTc4ZGQ3ZmRlYjA1MmIxOTQzNTM1ODI0MTY5ZDJhYTJiMGU3ZWFlOWFiODA3NTg0YWMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2xvZy9nbG9nXzAuMy41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2xvZy9nbG9nXzAuMy41LmJiCmluZGV4IDcwZWVmNzIuLjlhODMzMjggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dsb2cvZ2xvZ18wLjMuNS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nbG9nL2dsb2dfMC4zLjUuYmIKQEAgLTYsOCArNiw2IEBACiBMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRjOWRiMzYwZTBiYmQ0ZTQ2NjcyZjNmZDkxZGQ2YzRiIgogCi1ERVBFTkRTID0gImxpYnVud2luZCIKLQogU1JDX1VSSSA9ICIgXAogICAgIGdpdDovL2dpdGh1Yi5jb20vZ29vZ2xlL2dsb2cuZ2l0O25vYnJhbmNoPTEgXAogICAgIGZpbGU6Ly8wMDAxLVJld29yay1DTWFrZS1nbG9nLVZFUlNJT04tbWFuYWdlbWVudC5wYXRjaCBcCkBAIC0yMSw2ICsxOSw5IEBACiAKIGluaGVyaXQgY21ha2UKIAotUkRFUEVORFNfJHtQTn0gKz0gImxpYnVud2luZCIKK1BBQ0tBR0VDT05GSUcgPz0gInNoYXJlZCB1bndpbmQiCitQQUNLQUdFQ09ORklHX3JlbW92ZV9yaXNjdjY0ID0gInVud2luZCIKK1BBQ0tBR0VDT05GSUdfcmVtb3ZlX3Jpc2N2MzIgPSAidW53aW5kIgogCi1FWFRSQV9PRUNNQUtFICs9ICItREJVSUxEX1NIQVJFRF9MSUJTPU9OIgorUEFDS0FHRUNPTkZJR1t1bndpbmRdID0gIi1EV0lUSF9VTldJTkQ9T04sLURXSVRIX1VOV0lORD1PRkYsbGlidW53aW5kLGxpYnVud2luZCIKK1BBQ0tBR0VDT05GSUdbc2hhcmVkXSA9ICItREJVSUxEX1NIQVJFRF9MSUJTPU9OLC1EQlVJTERfU0hBUkVEX0xJQlM9T0ZGLCwiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2gKaW5kZXggNDlkNWMyMS4uY2I0ZWFkMyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtZml4LWJ1aWxkLXdpdGgtbXVzbC1saWJjLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaApAQCAtNiwyNiArNiwxMiBAQAogUGF0Y2ggZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZ3BlcmZ0b29scy9ncGVyZnRvb2xzL3B1bGwvNzY1LwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCiAtLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgIHwgMSArCi0gc3JjL21hbGxvY19ob29rX21tYXBfbGludXguaCB8IDggKysrKysrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKyBzcmMvbWFsbG9jX2hvb2tfbW1hcF9saW51eC5oIHwgNiArKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDQ5NzEwM2UuLmY5ZWZjM2UgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE4OCw2ICsxODgsNyBAQCBBQ19IRUFERVJfU1REQwotIEFDX0NIRUNLX1RZUEVTKFtfX2ludDY0XSkgICAgICAgIyBkZWZpbmVkIGluIHNvbWUgd2luZG93cyBwbGF0Zm9ybXMKLSBBQ19DSEVDS19UWVBFUyhbc3RydWN0IG1hbGxpbmZvXSwsLCBbI2luY2x1ZGUgPG1hbGxvYy5oPl0pCi0gQUNfQ0hFQ0tfVFlQRVMoW0VsZjMyX1ZlcnN5bV0sLCwgWyNpbmNsdWRlIDxlbGYuaD5dKSAgICMgZm9yIHZkc29fc3VwcG9ydC5oCi0rQUNfQ0hFQ0tfRlVOQ1MoX19zYnJrKSAgICAgICAgICAjIGZvciBpbnRlcmNlcHRpbmcgZ2xpYmMgbWVtb3J5IGFsbG9jYXRvcgotIEFDX0NIRUNLX0ZVTkNTKHNicmspICAgICAgICAgICAgIyBmb3IgdGNtYWxsb2MgdG8gZ2V0IG1lbW9yeQotIEFDX0NIRUNLX0ZVTkNTKGdldGV1aWQpICAgICAgICAgIyBmb3IgdHVybmluZyBvZmYgc2VydmljZXMgd2hlbiBydW4gYXMgcm9vdAotIEFDX0NIRUNLX0ZVTkNTKGZvcmspICAgICAgICAgICAgIyBmb3IgdGhlIHB0aHJlYWRfYXRmb3JrIHNldHVwCiBkaWZmIC0tZ2l0IGEvc3JjL21hbGxvY19ob29rX21tYXBfbGludXguaCBiL3NyYy9tYWxsb2NfaG9va19tbWFwX2xpbnV4LmgKLWluZGV4IDJmNjExNmYuLjA2MDU4NTUgMTAwNzU1CitpbmRleCBlMmVmYjA1Li42NmIzMTEwIDEwMDY0NAogLS0tIGEvc3JjL21hbGxvY19ob29rX21tYXBfbGludXguaAogKysrIGIvc3JjL21hbGxvY19ob29rX21tYXBfbGludXguaAogQEAgLTQ2LDYgKzQ2LDEwIEBACkBAIC0zOSw3ICsyNSw3IEBACiAgLy8gVGhlIHg4Ni0zMiBjYXNlIGFuZCB0aGUgeDg2LTY0IGNhc2UgZGlmZmVyOgogIC8vIDMyYiBoYXMgYSBtbWFwMigpIHN5c2NhbGwsIDY0YiBkb2VzIG5vdC4KICAvLyA2NGIgYW5kIDMyYiBoYXZlIGRpZmZlcmVudCBjYWxsaW5nIGNvbnZlbnRpb25zIGZvciBtbWFwKCkuCi1AQCAtMTY4LDcgKzE3Miw3IEBAIGV4dGVybiAiQyIgdm9pZCogbW1hcDY0KHZvaWQgKnN0YXJ0LCBzaXplX3QgbGVuZ3RoLCBpbnQgcHJvdCwgaW50IGZsYWdzLAorQEAgLTE3NSw3ICsxNzksNyBAQCBleHRlcm4gIkMiIHZvaWQqIG1tYXA2NCh2b2lkICpzdGFydCwgc2l6ZV90IGxlbmd0aCwgaW50IHByb3QsIGludCBmbGFncywKICAgIHJldHVybiByZXN1bHQ7CiAgfQogIApAQCAtNDgsMTIgKzM0LDYgQEAKICAKICBleHRlcm4gIkMiIHZvaWQqIG1tYXAodm9pZCAqc3RhcnQsIHNpemVfdCBsZW5ndGgsIGludCBwcm90LCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCBmZCwgb2ZmX3Qgb2Zmc2V0KSBfX1RIUk9XIHsKLUBAIC0yMDYsNyArMjEwLDcgQEAgZXh0ZXJuICJDIiB2b2lkKiBtcmVtYXAodm9pZCogb2xkX2FkZHIsIHNpemVfdCBvbGRfc2l6ZSwgc2l6ZV90IG5ld19zaXplLAotICAgcmV0dXJuIHJlc3VsdDsKLSB9Ci0gCi0tI2lmbmRlZiBfX1VDTElCQ19fCi0rI2lmIEhBVkVfX19TQlJLCi0gLy8gbGliYydzIHZlcnNpb246Ci0gZXh0ZXJuICJDIiB2b2lkKiBfX3NicmsoaW50cHRyX3QgaW5jcmVtZW50KTsKLSAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29sc18yLjcuOTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHNfMi43LjkwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3Yjc4MzkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHNfMi43LjkwLmJiCkBAIC0wLDAgKzEsNDkgQEAKK1NVTU1BUlkgPSAiRmFzdCwgbXVsdGktdGhyZWFkZWQgbWFsbG9jKCkgYW5kIG5pZnR5IHBlcmZvcm1hbmNlIGFuYWx5c2lzIHRvb2xzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dwZXJmdG9vbHMvZ3BlcmZ0b29scyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzYyNzMyNzQyYzczZGM2YzdmYmU4NjMyZjA2YzA1OWEiCisKK1NSQ1JFViA9ICJkYjdhYTU0N2FiYjVhYmRkNTU4NTg3YTE1NTAyNTg0Y2JjODI1NDM4IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dwZXJmdG9vbHMvZ3BlcmZ0b29scyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVN1cHBvcnQtQXRvbWljLW9wcy1vbi1jbGFuZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc2JhbGUtaGVhcC1jaGVja2Vycy1hbmQtZGVidWctYWxsb2NhdG9yLW9uLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV9saWJ1bndpbmRfYWFyY2g2NC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zZ2lkZWYucGF0Y2ggXAorICAgICAgICAgICAiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKKyMgT24gbWlwcywgd2UgaGF2ZSB0aGUgZm9sbG93aW5nIGVycm9yLgorIyAgIGRvX3BhZ2VfZmF1bHQoKTogc2VuZGluZyBTSUdTRUdWIHRvIGxzIGZvciBpbnZhbGlkIHJlYWQgYWNjZXNzIGZyb20gMDAwMDAwMDgKKyMgICBTZWdtZW50YXRpb24gZmF1bHQgKGNvcmUgZHVtcGVkKQorQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNoID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfcmlzY3Y2NCA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX3Jpc2N2MzIgPSAibnVsbCIKKworIyBEaXNhYmxlIHRodW1iMQorIyB7c3RhbmRhcmQgaW5wdXR9OiBBc3NlbWJsZXIgbWVzc2FnZXM6CisjIHtzdGFuZGFyZCBpbnB1dH06NDM0OiBFcnJvcjogbG8gcmVnaXN0ZXIgcmVxdWlyZWQgLS0gYGxkciBwYyxbc3BdJworIyBNYWtlZmlsZTo0NTM4OiByZWNpcGUgZm9yIHRhcmdldCAnc3JjL2Jhc2UvbGlidGNtYWxsb2NfbGEtbGludXh0aHJlYWRzLmxvJyBmYWlsZWQKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF90b29sY2hhaW4tY2xhbmdfYXJtID0gImFybSIKKworUEFDS0FHRUNPTkZJRyA/PSAibGlidW53aW5kIHN0YXRpYyIKK1BBQ0tBR0VDT05GSUdfcmVtb3ZlX2FybV9saWJjLW11c2wgPSAibGlidW53aW5kIgorUEFDS0FHRUNPTkZJR19yZW1vdmVfcmlzY3Y2NCA9ICJsaWJ1bndpbmQiCitQQUNLQUdFQ09ORklHX3JlbW92ZV9yaXNjdjMyID0gImxpYnVud2luZCIKKworUEFDS0FHRUNPTkZJR1tsaWJ1bndpbmRdID0gIi0tZW5hYmxlLWxpYnVud2luZCwtLWRpc2FibGUtbGlidW53aW5kLGxpYnVud2luZCIKK1BBQ0tBR0VDT05GSUdbc3RhdGljXSA9ICItLWVuYWJsZS1zdGF0aWMsLS1kaXNhYmxlLXN0YXRpYywiCisKK1BBQ0tBR0VfQkVGT1JFX1BOICs9ICJsaWJ0Y21hbGxvYy1taW5pbWFsIgorRklMRVNfbGlidGNtYWxsb2MtbWluaW1hbCA9ICIke2xpYmRpcn0vbGlidGNtYWxsb2NfbWluaW1hbCoke1NPTElCU30gJHtsaWJkaXJ9L2xpYnRjbWFsbG9jX21pbmltYWxfZGVidWcqJHtTT0xJQlN9IgorCisjIHBwcm9mIHRvb2wgcmVxdWlyZXMgR2V0b3B0Ojpsb25nIGFuZCBQT1NJWCBwZXJsNSBtb2R1bGVzLgorIyBBbHNvIHJ1bnMgYG9iamR1bXBgIG9uIGVhY2ggY3B1cHJvZmlsZSBkYXRhIGZpbGUKK1JERVBFTkRTXyR7UE59ICs9ICJiaW51dGlscyBwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyBwZXJsLW1vZHVsZS1wb3NpeCIKKworUkRFUEVORFNfJHtQTn0gKz0gImxpYnRjbWFsbG9jLW1pbmltYWwgKD0gJHtFWFRFTkRQS0dWfSkiCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29sc18yLjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHNfMi43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTM0YWNlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29sc18yLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIkZhc3QsIG11bHRpLXRocmVhZGVkIG1hbGxvYygpIGFuZCBuaWZ0eSBwZXJmb3JtYW5jZSBhbmFseXNpcyB0b29scyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ncGVyZnRvb2xzL2dwZXJmdG9vbHMiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc2MjczMjc0MmM3M2RjNmM3ZmJlODYzMmYwNmMwNTlhIgotCi1TUkNSRVYgPSAiOTYwOGZhM2JjZjgwMjBkMzVmNTlmYmY3MGNkM2NiZTRiMDE1Yjk3MiIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ncGVyZnRvb2xzL2dwZXJmdG9vbHMgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1TdXBwb3J0LUF0b21pYy1vcHMtb24tY2xhbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1kaXNiYWxlLWhlYXAtY2hlY2tlcnMtYW5kLWRlYnVnLWFsbG9jYXRvci1vbi1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfbGlidW53aW5kX2FhcmNoNjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2dpZGVmLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1pbmhlcml0IGF1dG90b29scwotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi0jIE9uIG1pcHMsIHdlIGhhdmUgdGhlIGZvbGxvd2luZyBlcnJvci4KLSMgICBkb19wYWdlX2ZhdWx0KCk6IHNlbmRpbmcgU0lHU0VHViB0byBscyBmb3IgaW52YWxpZCByZWFkIGFjY2VzcyBmcm9tIDAwMDAwMDA4Ci0jICAgU2VnbWVudGF0aW9uIGZhdWx0IChjb3JlIGR1bXBlZCkKLUNPTVBBVElCTEVfSE9TVF9taXBzYXJjaCA9ICJudWxsIgotIyBEaXNhYmxlIHRodW1iMQotIyB7c3RhbmRhcmQgaW5wdXR9OiBBc3NlbWJsZXIgbWVzc2FnZXM6Ci0jIHtzdGFuZGFyZCBpbnB1dH06NDM0OiBFcnJvcjogbG8gcmVnaXN0ZXIgcmVxdWlyZWQgLS0gYGxkciBwYyxbc3BdJwotIyBNYWtlZmlsZTo0NTM4OiByZWNpcGUgZm9yIHRhcmdldCAnc3JjL2Jhc2UvbGlidGNtYWxsb2NfbGEtbGludXh0aHJlYWRzLmxvJyBmYWlsZWQKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF90b29sY2hhaW4tY2xhbmdfYXJtID0gImFybSIKLQotUEFDS0FHRUNPTkZJRyA/PSAibGlidW53aW5kIHN0YXRpYyIKLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2FybV9saWJjLW11c2wgPSAibGlidW53aW5kIgotCi1QQUNLQUdFQ09ORklHW2xpYnVud2luZF0gPSAiLS1lbmFibGUtbGlidW53aW5kLC0tZGlzYWJsZS1saWJ1bndpbmQsbGlidW53aW5kIgotUEFDS0FHRUNPTkZJR1tzdGF0aWNdID0gIi0tZW5hYmxlLXN0YXRpYywtLWRpc2FibGUtc3RhdGljLCIKLQotUEFDS0FHRV9CRUZPUkVfUE4gKz0gImxpYnRjbWFsbG9jLW1pbmltYWwiCi1GSUxFU19saWJ0Y21hbGxvYy1taW5pbWFsID0gIiR7bGliZGlyfS9saWJ0Y21hbGxvY19taW5pbWFsKiR7U09MSUJTfSAke2xpYmRpcn0vbGlidGNtYWxsb2NfbWluaW1hbF9kZWJ1Zyoke1NPTElCU30iCi0KLSMgcHByb2YgdG9vbCByZXF1aXJlcyBHZXRvcHQ6OmxvbmcgYW5kIFBPU0lYIHBlcmw1IG1vZHVsZXMuCi0jIEFsc28gcnVucyBgb2JqZHVtcGAgb24gZWFjaCBjcHVwcm9maWxlIGRhdGEgZmlsZQotUkRFUEVORFNfJHtQTn0gKz0gImJpbnV0aWxzIHBlcmwtbW9kdWxlLWdldG9wdC1sb25nIHBlcmwtbW9kdWxlLXBvc2l4IgotCi1SREVQRU5EU18ke1BOfSArPSAibGlidGNtYWxsb2MtbWluaW1hbCAoPSAke0VYVEVORFBLR1Z9KSIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BtL2dwbV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncG0vZ3BtX2dpdC5iYgppbmRleCA3MDM0ZDMzLi4zODAwZDE0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncG0vZ3BtX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncG0vZ3BtX2dpdC5iYgpAQCAtMjEsNyArMjEsNyBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQgc3lzdGVtZAoraW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQgdGV4aW5mbwogCiBJTklUU0NSSVBUX05BTUUgPSAiZ3BtIgogSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nc29hcC9nc29hcF8yLjguMTAwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3NvYXAvZ3NvYXBfMi44LjEwMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjRlYWM4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3NvYXAvZ3NvYXBfMi44LjEwMC5iYgpAQCAtMCwwICsxLDQyIEBACitERVNDUklQVElPTiA9ICJUaGUgZ1NPQVAgdG9vbGtpdCBwcm92aWRlcyBhIHVuaXF1ZSBTT0FQLXRvLUMvQysrIGxhbmd1YWdlIGJpbmRpbmcgXAorZm9yIHRoZSBkZXZlbG9wbWVudCBvZiBTT0FQIFdlYiBTZXJ2aWNlcyBhbmQgY2xpZW50cy4iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJHUEwtMi4wLXdpdGgtT3BlblNTTC1leGNlcHRpb24iCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NGY0MGE5NDEzNzkxNDMxODZmOTYwMjI0MmMzZmI3MjkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vR1BMdjJfbGljZW5zZS50eHQ7bWQ1PWEzMzY3MmRiZTQ5MWI2NTE3NzUwYTAzODkwNjM1MDhiIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0yLyR7QlBOfV8ke1BWfS56aXAgXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZjBmYzUzOTQyODY3NTNlZmY2NTdjZjYyYjQ2ZDAyNGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTFiNGY5OWQyODM5MmUzZTFhZWIyOWJmZDAwNmE0ZjFmNDBlN2ZkZDdhM2YzNDQ0ZWU2OTAxNGQ0MTVmMDlmMiIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0tMi44IgorCitQQVJBTExFTF9NQUtFID0gIiIKKworRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJTT0FQPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9zb2FwY3BwMiIKKworREVQRU5EUyA9ICJvcGVuc3NsIHpsaWIgZmxleCBiaXNvbiBiaXNvbi1uYXRpdmUiCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGdzb2FwLW5hdGl2ZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9CisgICAgZm9yIGxpYiBpbiBsaWJnc29hcHNzbCBsaWJnc29hcHNzbCsrIGxpYmdzb2FwIGxpYmdzb2FwY2srKyBsaWJnc29hcCsrIGxpYmdzb2FwY2sKKyAgICBkbworICAgICAgICBvZV9saWJpbnN0YWxsIC1DIGdzb2FwICRsaWIgJHtEfSR7bGliZGlyfQorICAgIGRvbmUKK30KKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7CisgICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gQklORElSPSR7RH0ke2JpbmRpcn0gaW5zdGFsbAorfQorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vd3NkbDJoICR7YmluZGlyfS9zb2FwY3BwMiIKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9IgorRklMRVNfJHtQTn0tc3RhdGljZGV2ID0gIiR7bGliZGlyfSIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9IgorUlJFQ09NTUVORFNfJHtQTn0tZGV2ID0gIiR7UE59LXN0YXRpY2RldiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dzb2FwL2dzb2FwXzIuOC45NS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dzb2FwL2dzb2FwXzIuOC45NS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJhMDQ5OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nc29hcC9nc29hcF8yLjguOTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGUgZ1NPQVAgdG9vbGtpdCBwcm92aWRlcyBhIHVuaXF1ZSBTT0FQLXRvLUMvQysrIGxhbmd1YWdlIGJpbmRpbmcgXAotZm9yIHRoZSBkZXZlbG9wbWVudCBvZiBTT0FQIFdlYiBTZXJ2aWNlcyBhbmQgY2xpZW50cy4iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJHUEwtMi4wLXdpdGgtT3BlblNTTC1leGNlcHRpb24iCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NGY0MGE5NDEzNzkxNDMxODZmOTYwMjI0MmMzZmI3MjkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vR1BMdjJfbGljZW5zZS50eHQ7bWQ1PWEzMzY3MmRiZTQ5MWI2NTE3NzUwYTAzODkwNjM1MDhiIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0yLyR7QlBOfV8ke1BWfS56aXAgXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiODgwMzE2NDYwMThkNjA4NTdmMjEyNDY5NjJkMTAwMTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmUwN2FhMTUyY2Q5NDZlZjhlYmQzZjg3NjUzZjE0YzFkMzhlZmU3YzZlNmZjZThjNmY3NzNjNDgxNGY3OWJhZiIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0tMi44IgotCi1QQVJBTExFTF9NQUtFID0gIiIKLQotRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJTT0FQPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9zb2FwY3BwMiIKLQotREVQRU5EUyA9ICJvcGVuc3NsIHpsaWIgZmxleCBiaXNvbiBiaXNvbi1uYXRpdmUiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGdzb2FwLW5hdGl2ZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0gICAgZm9yIGxpYiBpbiBsaWJnc29hcHNzbCBsaWJnc29hcHNzbCsrIGxpYmdzb2FwIGxpYmdzb2FwY2srKyBsaWJnc29hcCsrIGxpYmdzb2FwY2sKLSAgICBkbwotICAgICAgICBvZV9saWJpbnN0YWxsIC1DIGdzb2FwICRsaWIgJHtEfSR7bGliZGlyfQotICAgIGRvbmUKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gQklORElSPSR7RH0ke2JpbmRpcn0gaW5zdGFsbAotfQotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vd3NkbDJoICR7YmluZGlyfS9zb2FwY3BwMiIKLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9IgotRklMRVNfJHtQTn0tc3RhdGljZGV2ID0gIiR7bGliZGlyfSIKLUZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9IgotUlJFQ09NTUVORFNfJHtQTn0tZGV2ID0gIiR7UE59LXN0YXRpY2RldiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h3ZGF0YS9od2RhdGFfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHdkYXRhL2h3ZGF0YV9naXQuYmIKaW5kZXggZTIwYmVjNS4uNWYzZTNmNiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHdkYXRhL2h3ZGF0YV9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHdkYXRhL2h3ZGF0YV9naXQuYmIKQEAgLTUsOCArNSw4IEBACiBMSUNFTlNFID0gIkdQTC0yLjArIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTU1NjU0NzcxMWU4MjQ2OTkyYjk5OWVkZDk0NDVhNTciCiAKLVBWID0gIjAuMzMwIgotU1JDUkVWID0gIjMzNWY3MmY4ZWQ0YWQwY2YzMzU1MjZkM2M2YzQ3MDFmN2U1OGY0NWIiCitQViA9ICIwLjMzMyIKK1NSQ1JFViA9ICIyZGU1MmJlMGQwMDAxNWZhNmNkZTcwYmI4NDVmYTliODZjZjZmNDIwIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3ZjcmhvbmVrLyR7QlBOfS5naXQiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pa3NlbWVsL2lrc2VtZWxfMS41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaWtzZW1lbC9pa3NlbWVsXzEuNS5iYgppbmRleCAwOTAzZTkwLi45ODY5ODRkIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pa3NlbWVsL2lrc2VtZWxfMS41LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lrc2VtZWwvaWtzZW1lbF8xLjUuYmIKQEAgLTEzLDcgKzEzLDcgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGxpYl9wYWNrYWdlCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbGliX3BhY2thZ2UgdGV4aW5mbwogCiAjIFRMUyBzdXBwb3J0IHJlcXVpcmVzIGVpdGhlciBvcGVuc3NsIG9yIGdudXRscyAoaWYgYm90aCBhcmUgZW5hYmxlZCBvcGVuc3NsIHdpbGwgYmUgdXNlZCkuCiBQQUNLQUdFQ09ORklHID89ICJnbnV0bHMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbmloL2xpYmluaWhfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaW5paC9saWJpbmloX2dpdC5iYgppbmRleCA4N2IxMTQyLi4yMjdlMmE3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbmloL2xpYmluaWhfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2luaWgvbGliaW5paF9naXQuYmIKQEAgLTEyLDYgKzEyLDggQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9PU1N5c3RlbXMvaW5paC5naXQgXAogICAgICAgICAgICIKIAorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgorCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBpbmhlcml0IGdpdHBrZ3YgY21ha2UKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lub3RpZnktdG9vbHMvaW5vdGlmeS10b29scy8wMDAxLU1ha2VmaWxlLmFtLWFkZC1idWlsZC1ydWxlLWZvci1SRUFETUUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbm90aWZ5LXRvb2xzL2lub3RpZnktdG9vbHMvMDAwMS1NYWtlZmlsZS5hbS1hZGQtYnVpbGQtcnVsZS1mb3ItUkVBRE1FLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjN2NkOTkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbm90aWZ5LXRvb2xzL2lub3RpZnktdG9vbHMvMDAwMS1NYWtlZmlsZS5hbS1hZGQtYnVpbGQtcnVsZS1mb3ItUkVBRE1FLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gMjJiZmY1MDllMmEwZTU2NDA5OTRiYzkyZGVkNjJjMzgzZDk5YmMzNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBpZXJyZS1KZWFuIFRleGllciA8cGp0ZXhpZXJAa29uY2VwdG8uaW8+CitEYXRlOiBNb24sIDI0IEZlYiAyMDIwIDIxOjQ0OjQ1ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiBhZGQgYnVpbGQgcnVsZSBmb3IgUkVBRE1FCisKK0ZpeGVzOgorCit8IGNvbmZpZ3VyZS5hYzoxNzogaW5zdGFsbGluZyAnY29uZmlnL2NvbmZpZy5zdWInCit8IGNvbmZpZ3VyZS5hYzoxNjogaW5zdGFsbGluZyAnY29uZmlnL2luc3RhbGwtc2gnCit8IGNvbmZpZ3VyZS5hYzoxNjogaW5zdGFsbGluZyAnY29uZmlnL21pc3NpbmcnCit8IE1ha2VmaWxlLmFtOiBlcnJvcjogcmVxdWlyZWQgZmlsZSAnLi9SRUFETUUnIG5vdCBmb3VuZAorfCBsaWJpbm90aWZ5dG9vbHMvc3JjL01ha2VmaWxlLmFtOiBpbnN0YWxsaW5nICdjb25maWcvZGVwY29tcCcKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9pbm90aWZ5LXRvb2xzL2lub3RpZnktdG9vbHMvcHVsbC8xMTFdCisKK1NpZ25lZC1vZmYtYnk6IFBpZXJyZS1KZWFuIFRleGllciA8cGp0ZXhpZXJAa29uY2VwdG8uaW8+CistLS0KKyBNYWtlZmlsZS5hbSB8IDIgKysKKyBhdXRvZ2VuLnNoICB8IDEgLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA1NmU0NTMxLi5kMDhjOGZlIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMiw2ICsyLDggQEAgQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQKKyAKKyBTVUJESVJTID0gbGliaW5vdGlmeXRvb2xzIHNyYyBtYW4KKyAKKytSRUFETUU6IFJFQURNRS5tZAorKworIGRpc3QtaG9vazoKKyAjIEF1dG9tYWtlIG9mZmljaWFsIGRvY3VtZW50YXRpb24gc3RhdGVzIHRoYXQgZGlzdC1ob29rIHNob3VsZCBhc3N1bWUgZmlsZXMKKyAjIGFyZSBub3Qgd3JpdGFibGUuCitkaWZmIC0tZ2l0IGEvYXV0b2dlbi5zaCBiL2F1dG9nZW4uc2gKK2luZGV4IDQ4ZWIyMWQuLjMxNTcyYzIgMTAwNzU1CistLS0gYS9hdXRvZ2VuLnNoCisrKysgYi9hdXRvZ2VuLnNoCitAQCAtMSw0ICsxLDMgQEAKKyAjIS9iaW4vc2gKKyAKKy1jcCBSRUFETUUubWQgUkVBRE1FCisgYXV0b3JlY29uZiAtLWluc3RhbGwgIiRAIiB8fCBleGl0IDEKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaW5vdGlmeS10b29scy9pbm90aWZ5LXRvb2xzL2lub3RpZnktbm9zeXMtZml4LXN5c3RlbS1jYWxsLW51bWJlci5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lub3RpZnktdG9vbHMvaW5vdGlmeS10b29scy9pbm90aWZ5LW5vc3lzLWZpeC1zeXN0ZW0tY2FsbC1udW1iZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5Yjg5MGQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaW5vdGlmeS10b29scy9pbm90aWZ5LXRvb2xzL2lub3RpZnktbm9zeXMtZml4LXN5c3RlbS1jYWxsLW51bWJlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLWlub3RpZnktdG9vbHM6IGZpeCBfX05SX2lub3RpZnlfYWRkX3dhdGNoIHN5c3RlbSBjYWxsIG51bWJlciBvbiBfTUlQU19TSU1fQUJJNjQKLQotVGhlIGNvcnJlY3QgdmFsdWUgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIGRlZmluZWQgaW4KLWxpbnV4L2FyY2gvbWlwcy9pbmNsdWRlL3VhcGkvYXNtL3VuaXN0ZC5oCi0KLVVwc3RyZWFtLVN0YXR1czogU3VtbWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnZvaWNpbGFzL2lub3RpZnktdG9vbHMvcHVsbC83MV0KLQotU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmlub3RpZnl0b29scy9zcmMvaW5vdGlmeXRvb2xzL2lub3RpZnktbm9zeXMuaCB8ICAgIDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJpbm90aWZ5dG9vbHMvc3JjL2lub3RpZnl0b29scy9pbm90aWZ5LW5vc3lzLmggYi9saWJpbm90aWZ5dG9vbHMvc3JjL2lub3RpZnl0b29scy9pbm90aWZ5LW5vc3lzLmgKLWluZGV4IGRiNzZiMmMuLjVmN2IxMWIgMTAwNjQ0Ci0tLS0gYS9saWJpbm90aWZ5dG9vbHMvc3JjL2lub3RpZnl0b29scy9pbm90aWZ5LW5vc3lzLmgKLSsrKyBiL2xpYmlub3RpZnl0b29scy9zcmMvaW5vdGlmeXRvb2xzL2lub3RpZnktbm9zeXMuaAotQEAgLTEwMCw4ICsxMDAsOCBAQCBzdHJ1Y3QgaW5vdGlmeV9ldmVudCB7Ci0gIyBlbmRpZgotICMgaWYgX01JUFNfU0lNID09IF9NSVBTX1NJTV9BQkk2NAotICMgIGRlZmluZSBfX05SX2lub3RpZnlfaW5pdCAoX19OUl9MaW51eCArIDI0MykKLS0jICBkZWZpbmUgX19OUl9pbm90aWZ5X2FkZF93YXRjaCAoX19OUl9MaW51eCArIDI0MykKLS0jICBkZWZpbmUgX19OUl9pbm90aWZ5X3JtX3dhdGNoIChfX05SX0xpbnV4ICsgMjQzKQotKyMgIGRlZmluZSBfX05SX2lub3RpZnlfYWRkX3dhdGNoIChfX05SX0xpbnV4ICsgMjQ0KQotKyMgIGRlZmluZSBfX05SX2lub3RpZnlfcm1fd2F0Y2ggKF9fTlJfTGludXggKyAyNDUpCi0gIyBlbmRpZgotICMgaWYgX01JUFNfU0lNID09IF9NSVBTX1NJTV9OQUJJMzIKLSAjICBkZWZpbmUgX19OUl9pbm90aWZ5X2luaXQgKF9fTlJfTGludXggKyAyNDcpCi0tLSAKLTEuNy4xMC40Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lub3RpZnktdG9vbHMvaW5vdGlmeS10b29sc19naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbm90aWZ5LXRvb2xzL2lub3RpZnktdG9vbHNfZ2l0LmJiCmluZGV4IDA1Y2E0YjQuLmY0MmFiZWIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lub3RpZnktdG9vbHMvaW5vdGlmeS10b29sc19naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaW5vdGlmeS10b29scy9pbm90aWZ5LXRvb2xzX2dpdC5iYgpAQCAtNSwxMiArNSwxMiBAQAogTElDRU5TRSA9ICJHUEwtMi4wIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YWM2YzI2ZTUyYWVhNDI4ZWU3ZjU2ZGMyYzU2NDI0YzYiCiAKLVNSQ1JFViA9ICJlMjAzOTM0ZTQ2Nzg0YmIzNGMyMTMwNzg0MjNiYTE2NzhlMGM0OTM2IgotUFYgPSAiMy4yMC4xIgorU1JDUkVWID0gImNmYTkzYWExOWY4MWQ4NWI2M2NkNjRkYTMwYzc0OTk4OTBkNGMwN2QiCitQViA9ICIzLjIwLjIuMiIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3J2b2ljaWxhcy8ke0JQTn0gXAotICAgICAgICAgICBmaWxlOi8vaW5vdGlmeS1ub3N5cy1maXgtc3lzdGVtLWNhbGwtbnVtYmVyLnBhdGNoIFwKLSAgICAgICAgICAiCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLWFkZC1idWlsZC1ydWxlLWZvci1SRUFETUUucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2l0c3Rvb2wvaXRzdG9vbF8yLjAuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2l0c3Rvb2wvaXRzdG9vbF8yLjAuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI5MGM1ZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pdHN0b29sL2l0c3Rvb2xfMi4wLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIklUUyBUb29sIGFsbG93cyB5b3UgdG8gdHJhbnNsYXRlIHlvdXIgWE1MIGRvY3VtZW50cyB3aXRoIFBPIGZpbGVzIgotSE9NRVBBR0UgPSAiaHR0cDovL2l0c3Rvb2wub3JnLyIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OWM1N2I5NWZkN2QwZTllMjM4ZWJiYzdhZDQ3YzVhNSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcHl0aG9uM25hdGl2ZQotCi1ERVBFTkRTID0gImxpYnhtbDItbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9maWxlcy5pdHN0b29sLm9yZy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly8wMDAxLU5hdGl2ZS1Eb24tdC11c2UtYnVpbGQtdGltZS1oYXJkY29kZWQtcHl0aG9uLWJpbmFyeS0ucGF0Y2giCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGZpbGU6Ly8wMDAyLURvbi10LXVzZS1idWlsZC10aW1lLWhhcmRjb2RlZC1weXRob24tYmluYXJ5LXBhdGgucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MzA2ZWViYTRmNGFlZTZiMzkzZDE0ZjljM2M1N2NhMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MjMzY2MyMjcyNmE5YTVhODM2NjRiZjY3ZDFhZjc5NTQ5YTI5OGMyMzE4NWQ5MjZjMzY3N2FmYTkxN2I5MmE5IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotUkRFUEVORFNfJHtQTn0gKz0gImxpYnhtbDItcHl0aG9uIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2pvZS9qb2VfNC42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvam9lL2pvZV80LjYuYmIKaW5kZXggYjc5ZTAyOC4uNjc0NzM2YSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvam9lL2pvZV80LjYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvam9lL2pvZV80LjYuYmIKQEAgLTksNyArOSw3IEBACiBQQUNLQUdFQ09ORklHID8/PSAiY3Vyc2VzIgogUEFDS0FHRUNPTkZJR1tjdXJzZXNdID0gIi0tZW5hYmxlLWN1cnNlcywtLWRpc2FibGUtY3Vyc2VzLG5jdXJzZXMsbmN1cnNlcy10ZXJtaW5mbyIKIAotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgbWltZS14ZGcKIAogU1JDX1VSSVttZDVzdW1dID0gIjkwMTc0ODRlNjExNjgzMGQ4NDY2NzhiNjI1ZWE1YzQzIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ5NWEwYTYxZjI2NDA0MDcwZmU4YTcxOWQ4MDQwNmRjN2YzMzc2MjM3ODhlNDQ1YjkyYTlmNmRlNTEyYWI5ZGUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sY292L2ZpbGVzLzAwMDEtZ2VuaW5mby1BZGQtaW50ZXJtZWRpYXRlLXRleHQtZm9ybWF0LXN1cHBvcnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sY292L2ZpbGVzLzAwMDEtZ2VuaW5mby1BZGQtaW50ZXJtZWRpYXRlLXRleHQtZm9ybWF0LXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFjMDc3MAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xjb3YvZmlsZXMvMDAwMS1nZW5pbmZvLUFkZC1pbnRlcm1lZGlhdGUtdGV4dC1mb3JtYXQtc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDg5OCBAQAorRnJvbSBlYzNlMWY0MTFjMzMyY2JjMmYyYmM3YWI3ZTIxNzVlYmY5MThiMzdhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGV0ZXIgT2JlcnBhcmxlaXRlciA8b2JlcnBhckBsaW51eC5pYm0uY29tPgorRGF0ZTogRnJpLCAyNCBNYXkgMjAxOSAxNjo1Njo1MiArMDIwMAorU3ViamVjdDogW1BBVENIIDEvMl0gZ2VuaW5mbzogQWRkIGludGVybWVkaWF0ZSB0ZXh0IGZvcm1hdCBzdXBwb3J0CisKK1RoaXMgY2hhbmdlIGFkZHMgc3VwcG9ydCBmb3IgcGFyc2luZyB0aGUgb3V0cHV0IG9mIGdjb3YncyBpbnRlcm1lZGlhdGUKK3RleHQgZmlsZSBmb3JtYXQgYXMgaW1wbGVtZW50ZWQgYnkgR0NDIHZlcnNpb25zIDUgdG8gOC4gIFRoZSB1c2Ugb2YgdGhlCitnY292IGludGVybWVkaWF0ZSBmb3JtYXQgc2hvdWxkIGluY3JlYXNlIHByb2Nlc3Npbmcgc3BlZWQuIEl0IGFsc28KK3Byb3ZpZGVzIGJyYW5jaCBjb3ZlcmFnZSBkYXRhIHdoZW4gdXNpbmcgdGhlIC0taW5pdGlhbCBjb21tYW5kIGxpbmUKK29wdGlvbi4KKworVXNlcnMgY2FuIGNvbnRyb2wgd2hldGhlciBnZW5pbmZvIHVzZXMgdGhlIGludGVybWVkaWF0ZSBmb3JtYXQgdmlhIHRoZQorZ2VuaW5mb19pbnRlcm1lZGlhdGUgY29uZmlndXJhdGlvbiBmaWxlIG9wdGlvbi4gVmFsaWQgdmFsdWVzIGFyZToKKworICAgICAwOiBVc2Ugbm9ybWFsIHRleHQgZm9ybWF0CisgICAgIDE6IFVzZSBpbnRlcm1lZGlhdGUgZm9ybWF0CisgIGF1dG86IFVzZSBpbnRlcm1lZGlhdGUgZm9ybWF0IGlmIGF2YWlsYWJsZS4gVGhpcyBpcyB0aGUgZGVmYXVsdC4KKworU2lnbmVkLW9mZi1ieTogUGV0ZXIgT2JlcnBhcmxlaXRlciA8b2JlcnBhckBsaW51eC5pYm0uY29tPgorLS0tCisgYmluL2dlbmluZm8gIHwgNTY3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQorIGxjb3ZyYyAgICAgICB8ICAgMyArCisgbWFuL2xjb3ZyYy41IHwgIDI0ICsrKworIDMgZmlsZXMgY2hhbmdlZCwgNTIxIGluc2VydGlvbnMoKyksIDczIGRlbGV0aW9ucygtKQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitEb3dubG9hZCBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbGNvdi9jb21taXQvZWJmZWIzZTE3OWU0NTBjNjljMzUzMmY5OGNkNWVhMWZiZjZjY2JhNworCitkaWZmIC0tZ2l0IGEvYmluL2dlbmluZm8gYi9iaW4vZ2VuaW5mbworaW5kZXggZjQxZWFlYy4uMDI3NjY2NiAxMDA3NTUKKy0tLSBhL2Jpbi9nZW5pbmZvCisrKysgYi9iaW4vZ2VuaW5mbworQEAgLTU0LDYgKzU0LDggQEAgdXNlIHdhcm5pbmdzOworIHVzZSBGaWxlOjpCYXNlbmFtZTsgCisgdXNlIEZpbGU6OlNwZWM6OkZ1bmN0aW9ucyBxdyAvYWJzMnJlbCBjYXRkaXIgZmlsZV9uYW1lX2lzX2Fic29sdXRlIHNwbGl0ZGlyCisgCQkJICAgICAgc3BsaXRwYXRoIGNhdHBhdGgvOworK3VzZSBGaWxlOjpUZW1wIHF3KHRlbXBmaWxlIHRlbXBkaXIpOworK3VzZSBGaWxlOjpDb3B5IHF3KGNvcHkpOworIHVzZSBHZXRvcHQ6Okxvbmc7CisgdXNlIERpZ2VzdDo6TUQ1IHF3KG1kNV9iYXNlNjQpOworIHVzZSBDd2QgcXcvYWJzX3BhdGgvOworQEAgLTE2MywxMyArMTY1LDEzIEBAIHN1YiBzb2x2ZV9yZWxhdGl2ZV9wYXRoKCQkKTsKKyBzdWIgcmVhZF9nY292X2hlYWRlcigkKTsKKyBzdWIgcmVhZF9nY292X2ZpbGUoJCk7Cisgc3ViIGluZm8oQCk7Cisrc3ViIHByb2Nlc3NfaW50ZXJtZWRpYXRlKCQkJCk7Cisgc3ViIG1hcF9sbHZtX3ZlcnNpb24oJCk7Cisgc3ViIHZlcnNpb25fdG9fc3RyKCQpOworIHN1YiBnZXRfZ2Nvdl92ZXJzaW9uKCk7Cisgc3ViIHN5c3RlbV9ub19vdXRwdXQoJEApOworIHN1YiByZWFkX2NvbmZpZygkKTsKKyBzdWIgYXBwbHlfY29uZmlnKCQpOworLXN1YiBnZXRfZXhjbHVzaW9uX2RhdGEoJCk7Cisgc3ViIGFwcGx5X2V4Y2x1c2lvbl9kYXRhKCQkKTsKKyBzdWIgcHJvY2Vzc19ncmFwaGZpbGUoJCQpOworIHN1YiBmaWx0ZXJfZm5fbmFtZSgkKTsKK0BAIC0yNjQsNiArMjY2LDggQEAgb3VyICRnY25vX3NwbGl0X2NyYzsKKyBvdXIgJGZ1bmNfY292ZXJhZ2UgPSAxOworIG91ciAkYnJfY292ZXJhZ2UgPSAwOworIG91ciAkcmNfYXV0b19iYXNlID0gMTsKKytvdXIgJHJjX2ludGVybWVkaWF0ZSA9ICJhdXRvIjsKKytvdXIgJGludGVybWVkaWF0ZTsKKyBvdXIgJGV4Y2xfbGluZSA9ICJMQ09WX0VYQ0xfTElORSI7Cisgb3VyICRleGNsX2JyX2xpbmUgPSAiTENPVl9FWENMX0JSX0xJTkUiOworIAorQEAgLTMzMSw2ICszMzUsNyBAQCBpZiAoJGNvbmZpZyB8fCAlb3B0X3JjKQorIAkJImdlbmluZm9fY29tcGF0IgkJPT4gXCRvcHRfY29tcGF0LAorIAkJImdlbmluZm9fYWRqdXN0X3NyY19wYXRoIgk9PiBcJHJjX2FkanVzdF9zcmNfcGF0aCwKKyAJCSJnZW5pbmZvX2F1dG9fYmFzZSIJCT0+IFwkcmNfYXV0b19iYXNlLAorKwkJImdlbmluZm9faW50ZXJtZWRpYXRlIgkJPT4gXCRyY19pbnRlcm1lZGlhdGUsCisgCQkibGNvdl9mdW5jdGlvbl9jb3ZlcmFnZSIJPT4gXCRmdW5jX2NvdmVyYWdlLAorIAkJImxjb3ZfYnJhbmNoX2NvdmVyYWdlIgkJPT4gXCRicl9jb3ZlcmFnZSwKKyAJCSJsY292X2V4Y2xfbGluZSIJCT0+IFwkZXhjbF9saW5lLAorQEAgLTQ2MCwxNSArNDY1LDM4IEBAIGlmIChzeXN0ZW1fbm9fb3V0cHV0KDMsICRnY292X3Rvb2wsICItLWhlbHAiKSA9PSAtMSkKKyB9CisgCisgKCRnY292X3ZlcnNpb24sICRnY292X3ZlcnNpb25fc3RyaW5nKSA9IGdldF9nY292X3ZlcnNpb24oKTsKKyskZ2Nvdl9jYXBzID0gZ2V0X2djb3ZfY2FwYWJpbGl0aWVzKCk7CisrCisrIyBEZXRlcm1pbmUgaW50ZXJtZWRpYXRlIG1vZGUKKytpZiAoJHJjX2ludGVybWVkaWF0ZSBlcSAiMCIpIHsKKysJJGludGVybWVkaWF0ZSA9IDA7CisrfSBlbHNpZiAoJHJjX2ludGVybWVkaWF0ZSBlcSAiMSIpIHsKKysJJGludGVybWVkaWF0ZSA9IDE7CisrfSBlbHNpZiAobGMoJHJjX2ludGVybWVkaWF0ZSkgZXEgImF1dG8iKSB7CisrCSMgVXNlIGludGVybWVkaWF0ZSBmb3JtYXQgaWYgc3VwcG9ydGVkIGJ5IGdjb3YKKysJJGludGVybWVkaWF0ZSA9ICRnY292X2NhcHMtPnsnaW50ZXJtZWRpYXRlLWZvcm1hdCd9ID8gMSA6IDA7CisrfSBlbHNlIHsKKysJZGllKCJFUlJPUjogaW52YWxpZCB2YWx1ZSBmb3IgZ2VuaW5mb19pbnRlcm1lZGlhdGU6ICIuCisrCSAgICAiJyRyY19pbnRlcm1lZGlhdGUnXG4iKTsKKyt9CisrCisraWYgKCRpbnRlcm1lZGlhdGUpIHsKKysJaW5mbygiVXNpbmcgaW50ZXJtZWRpYXRlIGdjb3YgZm9ybWF0XG4iKTsKKysJaWYgKCRvcHRfZGVyaXZlX2Z1bmNfZGF0YSkgeworKwkJd2FybigiV0FSTklORzogLS1kZXJpdmUtZnVuYy1kYXRhIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggIi4KKysJCSAgICAgImludGVybWVkaWF0ZSBmb3JtYXQgLSBpZ25vcmluZ1xuIik7CisrCQkkb3B0X2Rlcml2ZV9mdW5jX2RhdGEgPSAwOworKwl9CisrfQorIAorICMgRGV0ZXJtaW5lIGdjb3Ygb3B0aW9ucworLSRnY292X2NhcHMgPSBnZXRfZ2Nvdl9jYXBhYmlsaXRpZXMoKTsKKyBwdXNoKEBnY292X29wdGlvbnMsICItYiIpIGlmICgkZ2Nvdl9jYXBzLT57J2JyYW5jaC1wcm9iYWJpbGl0aWVzJ30gJiYKKyAJCQkgICAgICAoJGJyX2NvdmVyYWdlIHx8ICRmdW5jX2NvdmVyYWdlKSk7CisgcHVzaChAZ2Nvdl9vcHRpb25zLCAiLWMiKSBpZiAoJGdjb3ZfY2Fwcy0+eydicmFuY2gtY291bnRzJ30gJiYKKyAJCQkgICAgICAkYnJfY292ZXJhZ2UpOworIHB1c2goQGdjb3Zfb3B0aW9ucywgIi1hIikgaWYgKCRnY292X2NhcHMtPnsnYWxsLWJsb2Nrcyd9ICYmCistCQkJICAgICAgJG9wdF9nY292X2FsbF9ibG9ja3MgJiYgJGJyX2NvdmVyYWdlKTsKKysJCQkgICAgICAkb3B0X2djb3ZfYWxsX2Jsb2NrcyAmJiAkYnJfY292ZXJhZ2UgJiYKKysJCQkgICAgICAhJGludGVybWVkaWF0ZSk7CisgaWYgKCRnY292X2NhcHMtPnsnaGFzaC1maWxlbmFtZXMnfSkKKyB7CisgCXB1c2goQGdjb3Zfb3B0aW9ucywgIi14Iik7CitAQCAtNTk5LDcgKzYyNyw3IEBAIGZvcmVhY2ggbXkgJGVudHJ5IChAZGF0YV9kaXJlY3RvcnkpIHsKKyAJZ2VuX2luZm8oJGVudHJ5KTsKKyB9CisgCistaWYgKCRpbml0aWFsICYmICRicl9jb3ZlcmFnZSkgeworK2lmICgkaW5pdGlhbCAmJiAkYnJfY292ZXJhZ2UgJiYgISRpbnRlcm1lZGlhdGUpIHsKKyAJd2FybigiTm90ZTogLS1pbml0aWFsIGRvZXMgbm90IGdlbmVyYXRlIGJyYW5jaCBjb3ZlcmFnZSAiLgorIAkgICAgICJkYXRhXG4iKTsKKyB9CitAQCAtNzY4LDYgKzc5Niw3IEBAIHN1YiBnZW5faW5mbygkKQorIAlteSAkcHJlZml4OworIAlteSAkdHlwZTsKKyAJbXkgJGV4dDsKKysJbXkgJHRlbXBkaXI7CisgCisgCWlmICgkaW5pdGlhbCkgeworIAkJJHR5cGUgPSAiZ3JhcGgiOworQEAgLTc5OCwxNiArODI3LDIyIEBAIHN1YiBnZW5faW5mbygkKQorIAkJJHByZWZpeCA9ICIiOworIAl9CisgCisrCSR0ZW1wZGlyID0gdGVtcGRpcihDTEVBTlVQID0+IDEpOworKworIAkjIFByb2Nlc3MgYWxsIGZpbGVzIGluIGxpc3QKKyAJZm9yZWFjaCAkZmlsZSAoQGZpbGVfbGlzdCkgeworIAkJIyBQcm9jZXNzIGZpbGUKKy0JCWlmICgkaW5pdGlhbCkgeworKwkJaWYgKCRpbnRlcm1lZGlhdGUpIHsKKysJCQlwcm9jZXNzX2ludGVybWVkaWF0ZSgkZmlsZSwgJHByZWZpeCwgJHRlbXBkaXIpOworKwkJfSBlbHNpZiAoJGluaXRpYWwpIHsKKyAJCQlwcm9jZXNzX2dyYXBoZmlsZSgkZmlsZSwgJHByZWZpeCk7CisgCQl9IGVsc2UgeworIAkJCXByb2Nlc3NfZGFmaWxlKCRmaWxlLCAkcHJlZml4KTsKKyAJCX0KKyAJfQorIAorKwl1bmxpbmsoJHRlbXBkaXIpOworKworIAkjIFJlcG9ydCB3aGV0aGVyIGZpbGVzIHdlcmUgZXhjbHVkZWQuCisgCWlmICglZXhjbHVkZWRfZmlsZXMpIHsKKyAJCWluZm8oIkV4Y2x1ZGVkIGRhdGEgZm9yICVkIGZpbGVzIGR1ZSB0byBpbmNsdWRlL2V4Y2x1ZGUgb3B0aW9uc1xuIiwKK0BAIC0xMDU4LDEwICsxMDkzLDEyIEBAIHN1YiBwcm9jZXNzX2RhZmlsZSgkJCkKKyAKKyAJIyBUcnkgdG8gZmluZCBiYXNlIGRpcmVjdG9yeSBhdXRvbWF0aWNhbGx5IGlmIHJlcXVlc3RlZCBieSB1c2VyCisgCWlmICgkcmNfYXV0b19iYXNlKSB7CistCQkkYmFzZV9kaXIgPSBmaW5kX2Jhc2VfZnJvbV9ncmFwaCgkYmFzZV9kaXIsICRpbnN0ciwgJGdyYXBoKTsKKysJCSRiYXNlX2RpciA9IGZpbmRfYmFzZV9mcm9tX3NvdXJjZSgkYmFzZV9kaXIsCisrCQkJWyBrZXlzKCV7JGluc3RyfSksIGtleXMoJXskZ3JhcGh9KSBdKTsKKyAJfQorIAorLQkoJGluc3RyLCAkZ3JhcGgpID0gYWRqdXN0X2dyYXBoX2ZpbGVuYW1lcygkYmFzZV9kaXIsICRpbnN0ciwgJGdyYXBoKTsKKysJYWRqdXN0X3NvdXJjZV9maWxlbmFtZXMoJGluc3RyLCAkYmFzZV9kaXIpOworKwlhZGp1c3Rfc291cmNlX2ZpbGVuYW1lcygkZ3JhcGgsICRiYXNlX2Rpcik7CisgCisgCSMgU2V0ICRvYmplY3RfZGlyIHRvIHJlYWwgbG9jYXRpb24gb2Ygb2JqZWN0IGZpbGVzLiBUaGlzIG1heSBkaWZmZXIKKyAJIyBmcm9tICRkYV9kaXIgaWYgdGhlIGdyYXBoIGZpbGUgaXMganVzdCBhIGxpbmsgdG8gdGhlICJyZWFsIiBvYmplY3QKK0BAIC0yMDE3LDYgKzIwNTQsMjk5IEBAIHN1YiByZWFkX2djb3ZfZmlsZSgkKQorIH0KKyAKKyAKKysjCisrIyByZWFkX2ludGVybWVkaWF0ZV90ZXh0KGdjb3ZfZmlsZW5hbWUsIGRhdGEpCisrIworKyMgUmVhZCBnY292IGludGVybWVkaWF0ZSB0ZXh0IGZvcm1hdCBpbiBHQ09WX0ZJTEVOQU1FIGFuZCBhZGQgdGhlIHJlc3VsdGluZworKyMgZGF0YSB0byBEQVRBIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0OgorKyMKKysjIGRhdGE6ICAgICAgc291cmNlX2ZpbGVuYW1lIC0+IGZpbGVfZGF0YQorKyMgZmlsZV9kYXRhOiBjb25jYXRlbmF0ZWQgbGluZXMgb2YgaW50ZXJtZWRpYXRlIHRleHQgZGF0YQorKyMKKysKKytzdWIgcmVhZF9pbnRlcm1lZGlhdGVfdGV4dCgkJCkKKyt7CisrCW15ICgkZ2Nvdl9maWxlbmFtZSwgJGRhdGEpID0gQF87CisrCW15ICRmZDsKKysJbXkgJGZpbGVuYW1lOworKworKwlvcGVuKCRmZCwgIjwiLCAkZ2Nvdl9maWxlbmFtZSkgb3IKKysJCWRpZSgiRVJST1I6IENvdWxkIG5vdCByZWFkICRnY292X2ZpbGVuYW1lOiAkIVxuIik7CisrCXdoaWxlIChteSAkbGluZSA9IDwkZmQ+KSB7CisrCQlpZiAoJGxpbmUgPX4gL15maWxlOiguKikkLykgeworKwkJCSRmaWxlbmFtZSA9ICQxOworKwkJCWNob21wKCRmaWxlbmFtZSk7CisrCQl9IGVsc2lmIChkZWZpbmVkKCRmaWxlbmFtZSkpIHsKKysJCQkkZGF0YS0+eyRmaWxlbmFtZX0gLj0gJGxpbmU7CisrCQl9CisrCX0KKysJY2xvc2UoJGZkKTsKKyt9CisrCisrCisrIworKyMgaW50ZXJtZWRpYXRlX3RleHRfdG9faW5mbyhmZCwgZGF0YSwgc3JjZGF0YSkKKysjCisrIyBXcml0ZSBEQVRBIGluIGluZm8gZm9ybWF0IHRvIGZpbGUgZGVzY3JpcHRvciBGRC4KKysjCisrIyBkYXRhOiAgICAgIGZpbGVuYW1lIC0+IGZpbGVfZGF0YToKKysjIGZpbGVfZGF0YTogY29uY2F0ZW5hdGVkIGxpbmVzIG9mIGludGVybWVkaWF0ZSB0ZXh0IGRhdGEKKysjCisrIyBzcmNkYXRhOiAgIGZpbGVuYW1lIC0+IFsgZXhjbCwgYnJleGNsLCBjaGVja3N1bXMgXQorKyMgZXhjbDogICAgICBsaW5lbm8gLT4gMSBmb3IgYWxsIGxpbmVzIGZvciB3aGljaCB0byBleGNsdWRlIGFsbCBkYXRhCisrIyBicmV4Y2w6ICAgIGxpbmVubyAtPiAxIGZvciBhbGwgbGluZXMgZm9yIHdoaWNoIHRvIGV4Y2x1ZGUgYnJhbmNoIGRhdGEKKysjIGNoZWNrc3VtczogbGluZW5vIC0+IHNvdXJjZSBjb2RlIGNoZWNrc3VtCisrIworKyMgTm90ZTogVG8gc2ltcGxpZnkgcHJvY2Vzc2luZywgZ2NvdiBkYXRhIGlzIG5vdCBjb21iaW5lZCBoZXJlLCB0aGF0IGlzIGNvdW50cworKyMgICAgICAgdGhhdCBhcHBlYXIgbXVsdGlwbGUgdGltZXMgZm9yIHRoZSBzYW1lIGxpbmVzL2JyYW5jaGVzIGFyZSBub3QgYWRkZWQuCisrIyAgICAgICBUaGlzIGlzIGRvbmUgYnkgbGNvdi9nZW5odG1sIHdoZW4gcmVhZGluZyB0aGUgZGF0YSBmaWxlcy4KKysjCisrCisrc3ViIGludGVybWVkaWF0ZV90ZXh0X3RvX2luZm8oJCQkKQorK3sKKysJbXkgKCRmZCwgJGRhdGEsICRzcmNkYXRhKSA9IEBfOworKwlteSAkYnJhbmNoX251bSA9IDA7CisrCW15ICRjOworKworKwlyZXR1cm4gaWYgKCEleyRkYXRhfSk7CisrCisrCXByaW50KCRmZCAiVE46JHRlc3RfbmFtZVxuIik7CisrCWZvciBteSAkZmlsZW5hbWUgKGtleXMoJXskZGF0YX0pKSB7CisrCQlteSAoJGV4Y2wsICRicmV4Y2wsICRjaGVja3N1bXMpOworKworKwkJaWYgKGRlZmluZWQoJHNyY2RhdGEtPnskZmlsZW5hbWV9KSkgeworKwkJCSgkZXhjbCwgJGJyZXhjbCwgJGNoZWNrc3VtcykgPSBAeyRzcmNkYXRhLT57JGZpbGVuYW1lfX07CisrCQl9CisrCisrCQlwcmludCgkZmQgIlNGOiRmaWxlbmFtZVxuIik7CisrCQlmb3IgbXkgJGxpbmUgKHNwbGl0KC9cbi8sICRkYXRhLT57JGZpbGVuYW1lfSkpIHsKKysJCQlpZiAoJGxpbmUgPX4gL15sY291bnQ6KFxkKyksKFxkKyksPy8pIHsKKysJCQkJIyBsY291bnQ6PGxpbmU+LDxjb3VudD4KKysJCQkJIyBsY291bnQ6PGxpbmU+LDxjb3VudD4sPGhhc191bmV4ZWN1dGVkX2Jsb2Nrcz4KKysJCQkJaWYgKCRjaGVja3N1bSAmJiBleGlzdHMoJGNoZWNrc3Vtcy0+eyQxfSkpIHsKKysJCQkJCSRjID0gIiwiLiRjaGVja3N1bXMtPnskMX07CisrCQkJCX0gZWxzZSB7CisrCQkJCQkkYyA9ICIiOworKwkJCQl9CisrCQkJCXByaW50KCRmZCAiREE6JDEsJDIkY1xuIikgaWYgKCEkZXhjbC0+eyQxfSk7CisrCisrCQkJCSMgSW50ZXJtZWRpYXRlIHRleHQgZm9ybWF0IGRvZXMgbm90IHByb3ZpZGUKKysJCQkJIyBicmFuY2ggbnVtYmVycywgYW5kIHRoZSBzYW1lIGJyYW5jaCBtYXkgYXBwZWFyCisrCQkJCSMgbXVsdGlwbGUgdGltZXMgb24gdGhlIHNhbWUgbGluZSAoZS5nLiBpbgorKwkJCQkjIHRlbXBsYXRlIGluc3RhbmNlcykuIFN5bnRoZXNpemUgYSBicmFuY2gKKysJCQkJIyBudW1iZXIgYmFzZWQgb24gdGhlIGFzc3VtcHRpb25zOgorKwkJCQkjIGEpIHRoZSBvcmRlciBvZiBicmFuY2hlcyBpcyBmaXhlZCBhY3Jvc3MKKysJCQkJIyAgICBpbnN0YW5jZXMKKysJCQkJIyBiKSBhbiBpbnN0YW5jZSBzdGFydHMgd2l0aCBhbiBsY291bnQgbGluZQorKwkJCQkkYnJhbmNoX251bSA9IDA7CisrCQkJfSBlbHNpZiAoJGxpbmUgPX4gL15mdW5jdGlvbjooXGQrKSwoXGQrKSwoW14sXSspJC8pIHsKKysJCQkJbmV4dCBpZiAoISRmdW5jX2NvdmVyYWdlIHx8ICRleGNsLT57JDF9KTsKKysKKysJCQkJIyBmdW5jdGlvbjo8bGluZT4sPGNvdW50Piw8bmFtZT4KKysJCQkJcHJpbnQoJGZkICJGTjokMSwkM1xuIik7CisrCQkJCXByaW50KCRmZCAiRk5EQTokMiwkM1xuIik7CisrCQkJfSBlbHNpZiAoJGxpbmUgPX4gL15mdW5jdGlvbjooXGQrKSxcZCssKFxkKyksKFteLF0rKSQvKSB7CisrCQkJCW5leHQgaWYgKCEkZnVuY19jb3ZlcmFnZSB8fCAkZXhjbC0+eyQxfSk7CisrCisrCQkJCSMgZnVuY3Rpb246PHN0YXJ0X2xpbmU+LDxlbmRfbGluZT4sPGNvdW50PiwKKysJCQkJIyAgICAgICAgICA8bmFtZT4KKysJCQkJcHJpbnQoJGZkICJGTjokMSwkM1xuIik7CisrCQkJCXByaW50KCRmZCAiRk5EQTokMiwkM1xuIik7CisrCQkJfSBlbHNpZiAoJGxpbmUgPX4gL15icmFuY2g6KFxkKyksKHRha2VufG5vdHRha2VufG5vdGV4ZWMpLykgeworKwkJCQluZXh0IGlmICghJGJyX2NvdmVyYWdlIHx8ICRleGNsLT57JDF9IHx8CisrCQkJCQkgJGJyZXhjbC0+eyQxfSk7CisrCisrCQkJCSMgYnJhbmNoOjxsaW5lPix0YWtlbnxub3R0YWtlbnxub3RleGVjCisrCQkJCWlmICgkMiBlcSAidGFrZW4iKSB7CisrCQkJCQkkYyA9IDE7CisrCQkJCX0gZWxzaWYgKCQyIGVxICJub3R0YWtlbiIpIHsKKysJCQkJCSRjID0gMDsKKysJCQkJfSBlbHNlIHsKKysJCQkJCSRjID0gIi0iOworKwkJCQl9CisrCQkJCXByaW50KCRmZCAiQlJEQTokMSwwLCRicmFuY2hfbnVtLCRjXG4iKTsKKysJCQkJJGJyYW5jaF9udW0rKzsKKysJCQl9CisrCQl9CisrCQlwcmludCgkZmQgImVuZF9vZl9yZWNvcmRcbiIpOworKwl9CisrfQorKworKworK3N1YiBnZXRfb3V0cHV0X2ZkKCQkKQorK3sKKysJbXkgKCRvdXRmaWxlLCAkZmlsZSkgPSBAXzsKKysJbXkgJGZkOworKworKwlpZiAoIWRlZmluZWQoJG91dGZpbGUpKSB7CisrCQlvcGVuKCRmZCwgIj4iLCAiJGZpbGUuaW5mbyIpIG9yCisrCQkJZGllKCJFUlJPUjogQ2Fubm90IGNyZWF0ZSBmaWxlICRmaWxlLmluZm86ICQhXG4iKTsKKysJfSBlbHNpZiAoJG91dGZpbGUgZXEgIi0iKSB7CisrCQlvcGVuKCRmZCwgIj4mU1RET1VUIikgb3IKKysJCQlkaWUoIkVSUk9SOiBDYW5ub3QgZHVwbGljYXRlIHN0ZG91dDogJCFcbiIpOworKwl9IGVsc2UgeworKwkJb3BlbigkZmQsICI+PiIsICRvdXRmaWxlKSBvcgorKwkJCWRpZSgiRVJST1I6IENhbm5vdCB3cml0ZSB0byBmaWxlICRvdXRmaWxlOiAkIVxuIik7CisrCX0KKysKKysJcmV0dXJuICRmZDsKKyt9CisrCisrCisrIworKyMgcHJpbnRfZ2Nvdl93YXJuaW5ncyhzdGRlcnJfZmlsZSwgaXNfZ3JhcGgsIG1hcCkKKysjCisrIyBQcmludCBHQ09WIHdhcm5pbmdzIGluIGZpbGUgU1RERVJSX0ZJTEUgdG8gU1RERVJSLiBJZiBJU19HUkFQSCBpcyBub24temVybywKKysjIHN1cHByZXNzIHdhcm5pbmdzIGFib3V0IG1pc3NpbmcgYXMgdGhlc2UgYXJlIGV4cGVjdGVkLiBSZXBsYWNlIGtleXMgZm91bmQKKysjIGluIE1BUCB3aXRoIHRoZWlyIHZhbHVlcy4KKysjCisrCisrc3ViIHByaW50X2djb3Zfd2FybmluZ3MoJCQkKQorK3sKKysJbXkgKCRzdGRlcnJfZmlsZSwgJGlzX2dyYXBoLCAkbWFwKSA9IEBfOworKwlteSAkZmQ7CisrCisrCWlmICghb3BlbigkZmQsICI8IiwgJHN0ZGVycl9maWxlKSkgeworKwkJd2FybigiV0FSTklORzogQ291bGQgbm90IG9wZW4gR0NPViBzdGRlcnIgZmlsZSAiLgorKwkJICAgICAiJHN0ZGVycl9maWxlOiAkIVxuIik7CisrCQlyZXR1cm47CisrCX0KKysJd2hpbGUgKG15ICRsaW5lID0gPCRmZD4pIHsKKysJCW5leHQgaWYgKCRpc19ncmFwaCAmJiAkbGluZSA9fiAvY2Fubm90IG9wZW4gZGF0YSBmaWxlLyk7CisrCisrCQlmb3IgbXkgJGtleSAoa2V5cygleyRtYXB9KSkgeworKwkJCSRsaW5lID1+IHMvXFEka2V5XEUvJG1hcC0+eyRrZXl9L2c7CisrCQl9CisrCisrCQlwcmludChTVERFUlIgJGxpbmUpOworKwl9CisrCWNsb3NlKCRmZCk7CisrfQorKworKworKyMKKysjIHByb2Nlc3NfaW50ZXJtZWRpYXRlKGZpbGUsIGRpciwgdGVtcGRpcikKKysjCisrIyBDcmVhdGUgb3V0cHV0IGZvciBhIHNpbmdsZSBmaWxlIChlaXRoZXIgYSBkYXRhIGZpbGUgb3IgYSBncmFwaCBmaWxlKSB1c2luZworKyMgZ2NvdidzIGludGVybWVkaWF0ZSBvcHRpb24uCisrIworKworK3N1YiBwcm9jZXNzX2ludGVybWVkaWF0ZSgkJCQpCisreworKwlteSAoJGZpbGUsICRkaXIsICR0ZW1wZGlyKSA9IEBfOworKwlteSAoJGZkaXIsICRmYmFzZSwgJGZleHQpOworKwlteSAkZGF0YV9maWxlOworKwlteSAkZXJybXNnOworKwlteSAlZGF0YTsKKysJbXkgJGZkOworKwlteSAkYmFzZTsKKysJbXkgJHNyY2RhdGE7CisrCW15ICRpc19ncmFwaCA9IDA7CisrCW15ICgkb3V0LCAkZXJyLCAkcmMpOworKworKwlpbmZvKCJQcm9jZXNzaW5nICVzXG4iLCBhYnMycmVsKCRmaWxlLCAkZGlyKSk7CisrCisrCSRmaWxlID0gc29sdmVfcmVsYXRpdmVfcGF0aCgkY3dkLCAkZmlsZSk7CisrCSgkZmRpciwgJGZiYXNlLCAkZmV4dCkgPSBzcGxpdF9maWxlbmFtZSgkZmlsZSk7CisrCisrCSRpc19ncmFwaCA9IDEgaWYgKCIuJGZleHQiIGVxICRncmFwaF9maWxlX2V4dGVuc2lvbik7CisrCisrCWlmICgkaXNfZ3JhcGgpIHsKKysJCSMgUHJvY2VzcyBncmFwaCBmaWxlIC0gY29weSB0byB0ZW1wIGRpcmVjdG9yeSB0byBwcmV2ZW50CisrCQkjIGFjY2lkZW50YWwgcHJvY2Vzc2luZyBvZiBhc3NvY2lhdGVkIGRhdGEgZmlsZQorKwkJJGRhdGFfZmlsZSA9ICIkdGVtcGRpci8kZmJhc2UkZ3JhcGhfZmlsZV9leHRlbnNpb24iOworKwkJaWYgKCFjb3B5KCRmaWxlLCAkZGF0YV9maWxlKSkgeworKwkJCSRlcnJtc2cgPSAiRVJST1I6IENvdWxkIG5vdCBjb3B5IGZpbGUgJGZpbGUiOworKwkJCWdvdG8gZXJyOworKwkJfQorKwl9IGVsc2UgeworKwkJIyBQcm9jZXNzIGRhdGEgZmlsZSBpbiBwbGFjZQorKwkJJGRhdGFfZmlsZSA9ICRmaWxlOworKwl9CisrCisrCSMgQ2hhbmdlIGRpcmVjdG9yeQorKwlpZiAoIWNoZGlyKCR0ZW1wZGlyKSkgeworKwkJJGVycm1zZyA9ICJDb3VsZCBub3QgY2hhbmdlIHRvIGRpcmVjdG9yeSAkdGVtcGRpcjogJCEiOworKwkJZ290byBlcnI7CisrCX0KKysKKysJIyBSdW4gZ2NvdiBvbiBkYXRhIGZpbGUKKysJKCRvdXQsICRlcnIsICRyYykgPSBzeXN0ZW1fbm9fb3V0cHV0KDEgKyAyICsgNCwgJGdjb3ZfdG9vbCwKKysJCQkJCSAgICAgJGRhdGFfZmlsZSwgQGdjb3Zfb3B0aW9ucywgIi1pIik7CisrCWRlZmluZWQoJG91dCkgJiYgdW5saW5rKCRvdXQpOworKwlpZiAoZGVmaW5lZCgkZXJyKSkgeworKwkJcHJpbnRfZ2Nvdl93YXJuaW5ncygkZXJyLCAkaXNfZ3JhcGgsIHsKKysJCQkkZGF0YV9maWxlID0+ICRmaWxlLAorKwkJfSk7CisrCQl1bmxpbmsoJGVycik7CisrCX0KKysJaWYgKCRyYykgeworKwkJJGVycm1zZyA9ICJHQ09WIGZhaWxlZCBmb3IgJGZpbGUiOworKwkJZ290byBlcnI7CisrCX0KKysKKysJaWYgKCRpc19ncmFwaCkgeworKwkJIyBSZW1vdmUgZ3JhcGggZmlsZSBjb3B5CisrCQl1bmxpbmsoJGRhdGFfZmlsZSk7CisrCX0KKysKKysJIyBQYXJzZSByZXN1bHRpbmcgZmlsZShzKQorKwlmb3IgbXkgJGdjb3ZfZmlsZW5hbWUgKGdsb2IoIiouZ2NvdiIpKSB7CisrCQlyZWFkX2ludGVybWVkaWF0ZV90ZXh0KCRnY292X2ZpbGVuYW1lLCBcJWRhdGEpOworKwkJdW5saW5rKCRnY292X2ZpbGVuYW1lKTsKKysJfQorKworKwlpZiAoISVkYXRhKSB7CisrCQl3YXJuKCJXQVJOSU5HOiBHQ09WIGRpZCBub3QgcHJvZHVjZSBhbnkgZGF0YSBmb3IgJGZpbGVcbiIpOworKwkJcmV0dXJuOworKwl9CisrCisrCSMgRGV0ZXJtaW5lIGJhc2UgZGlyZWN0b3J5CisrCWlmIChkZWZpbmVkKCRiYXNlX2RpcmVjdG9yeSkpIHsKKysJCSRiYXNlID0gJGJhc2VfZGlyZWN0b3J5OworKwl9IGVsc2UgeworKwkJJGJhc2UgPSAkZmRpcjsKKysKKysJCWlmIChpc19jb21wYXQoJENPTVBBVF9NT0RFX0xJQlRPT0wpKSB7CisrCQkJIyBBdm9pZCBmaWxlcyBmcm9tIC5saWJzIGRpcnMKKysJCQkkYmFzZSA9fiBzL1wubGlicyQvLzsKKysJCX0KKysKKysJCSMgVHJ5IHRvIGZpbmQgYmFzZSBkaXJlY3RvcnkgYXV0b21hdGljYWxseSBpZiByZXF1ZXN0ZWQgYnkgdXNlcgorKwkJaWYgKCRyY19hdXRvX2Jhc2UpIHsKKysJCQkkYmFzZSA9IGZpbmRfYmFzZV9mcm9tX3NvdXJjZSgkYmFzZSwgWyBrZXlzKCVkYXRhKSBdKTsKKysJCX0KKysJfQorKworKwkjIEFwcGx5IGJhc2UgZmlsZSBuYW1lIHRvIHJlbGF0aXZlIHNvdXJjZSBmaWxlcworKwlhZGp1c3Rfc291cmNlX2ZpbGVuYW1lcyhcJWRhdGEsICRiYXNlKTsKKysKKysJIyBSZW1vdmUgZXhjbHVkZWQgc291cmNlIGZpbGVzCisrCWZpbHRlcl9zb3VyY2VfZmlsZXMoXCVkYXRhKTsKKysKKysJIyBHZXQgZGF0YSBvbiBleGNsdXNpb24gbWFya2VycyBhbmQgY2hlY2tzdW1zIGlmIHJlcXVlc3RlZAorKwlpZiAoISRub19tYXJrZXJzIHx8ICRjaGVja3N1bSkgeworKwkJJHNyY2RhdGEgPSBnZXRfYWxsX3NvdXJjZV9kYXRhKGtleXMoJWRhdGEpKTsKKysJfQorKworKwkjIEdlbmVyYXRlIG91dHB1dAorKwkkZmQgPSBnZXRfb3V0cHV0X2ZkKCRvdXRwdXRfZmlsZW5hbWUsICRmaWxlKTsKKysJaW50ZXJtZWRpYXRlX3RleHRfdG9faW5mbygkZmQsIFwlZGF0YSwgJHNyY2RhdGEpOworKwljbG9zZSgkZmQpOworKworKwljaGRpcigkY3dkKTsKKysKKysJcmV0dXJuOworKworK2VycjoKKysJaWYgKCRpZ25vcmVbJEVSUk9SX0dDT1ZdKSB7CisrCQl3YXJuKCJXQVJOSU5HOiAkZXJybXNnIVxuIik7CisrCX0gZWxzZSB7CisrCQlkaWUoIkVSUk9SOiAkZXJybXNnIVxuIikKKysJfQorK30KKysKKysKKyAjIE1hcCBMTFZNIHZlcnNpb25zIHRvIHRoZSB2ZXJzaW9uIG9mIEdDQyBnY292IHdoaWNoIHRoZXkgZW11bGF0ZS4KKyAKKyBzdWIgbWFwX2xsdm1fdmVyc2lvbigkKQorQEAgLTIxNTEsOCArMjQ4MSwxMiBAQCBzdWIgaW50X2hhbmRsZXIoKQorICMKKyAjICAgTU9ERSAmIDE6IHN1cHByZXNzIFNURE9VVAorICMgICBNT0RFICYgMjogc3VwcHJlc3MgU1RERVJSCisrIyAgIE1PREUgJiA0OiByZWRpcmVjdCB0byB0ZW1wb3JhcnkgZmlsZXMgaW5zdGVhZCBvZiBzdXBwcmVzc2luZworICMKKy0jIFJldHVybiAwIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIG90aGVyd2lzZS4KKysjIFJldHVybiAoc3Rkb3V0LCBzdGRlcnIsIHJjKToKKysjICAgIHN0ZG91dDogcGF0aCB0byB0ZW1wZmlsZSBjb250YWluaW5nIHN0ZG91dCBvciB1bmRlZgorKyMgICAgc3RkZXJyOiBwYXRoIHRvIHRlbXBmaWxlIGNvbnRhaW5pbmcgc3RkZXJyIG9yIHVuZGVmCisrIyAgICAwIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIG90aGVyd2lzZQorICMKKyAKKyBzdWIgc3lzdGVtX25vX291dHB1dCgkQCkKK0BAIC0yMTYxLDE0ICsyNDk1LDMxIEBAIHN1YiBzeXN0ZW1fbm9fb3V0cHV0KCRAKQorIAlteSAkcmVzdWx0OworIAlsb2NhbCAqT0xEX1NUREVSUjsKKyAJbG9jYWwgKk9MRF9TVERPVVQ7CisrCW15ICRzdGRvdXRfZmlsZTsKKysJbXkgJHN0ZGVycl9maWxlOworKwlteSAkZmQ7CisgCisgCSMgU2F2ZSBvbGQgc3Rkb3V0IGFuZCBzdGRlcnIgaGFuZGxlcworIAkoJG1vZGUgJiAxKSAmJiBvcGVuKE9MRF9TVERPVVQsICI+PiYiLCAiU1RET1VUIik7CisgCSgkbW9kZSAmIDIpICYmIG9wZW4oT0xEX1NUREVSUiwgIj4+JiIsICJTVERFUlIiKTsKKyAKKy0JIyBSZWRpcmVjdCB0byAvZGV2L251bGwKKy0JKCRtb2RlICYgMSkgJiYgb3BlbihTVERPVVQsICI+IiwgIi9kZXYvbnVsbCIpOworLQkoJG1vZGUgJiAyKSAmJiBvcGVuKFNUREVSUiwgIj4iLCAiL2Rldi9udWxsIik7CisrCWlmICgkbW9kZSAmIDQpIHsKKysJCSMgUmVkaXJlY3QgdG8gdGVtcG9yYXJ5IGZpbGVzCisrCQlpZiAoJG1vZGUgJiAxKSB7CisrCQkJKCRmZCwgJHN0ZG91dF9maWxlKSA9IHRlbXBmaWxlKFVOTElOSyA9PiAxKTsKKysJCQlvcGVuKFNURE9VVCwgIj4iLCAkc3Rkb3V0X2ZpbGUpIHx8IHdhcm4oIiQhXG4iKTsKKysJCQljbG9zZSgkZmQpOworKwkJfQorKwkJaWYgKCRtb2RlICYgMikgeworKwkJCSgkZmQsICRzdGRlcnJfZmlsZSkgPSB0ZW1wZmlsZShVTkxJTksgPT4gMSk7CisrCQkJb3BlbihTVERFUlIsICI+IiwgJHN0ZGVycl9maWxlKSB8fCB3YXJuKCIkIVxuIik7CisrCQkJY2xvc2UoJGZkKTsKKysJCX0KKysJfSBlbHNlIHsKKysJCSMgUmVkaXJlY3QgdG8gL2Rldi9udWxsCisrCQkoJG1vZGUgJiAxKSAmJiBvcGVuKFNURE9VVCwgIj4iLCAiL2Rldi9udWxsIik7CisrCQkoJG1vZGUgJiAyKSAmJiBvcGVuKFNUREVSUiwgIj4iLCAiL2Rldi9udWxsIik7CisrCX0KKyAgCisgCWRlYnVnKCJzeXN0ZW0oIi5qb2luKCcgJywgQF8pLiIpXG4iKTsKKyAJc3lzdGVtKEBfKTsKK0BAIC0yMTgxLDggKzI1MzIsMTggQEAgc3ViIHN5c3RlbV9ub19vdXRwdXQoJEApCisgCSMgUmVzdG9yZSBvbGQgaGFuZGxlcworIAkoJG1vZGUgJiAxKSAmJiBvcGVuKFNURE9VVCwgIj4+JiIsICJPTERfU1RET1VUIik7CisgCSgkbW9kZSAmIDIpICYmIG9wZW4oU1RERVJSLCAiPj4mIiwgIk9MRF9TVERFUlIiKTsKKysKKysJIyBSZW1vdmUgZW1wdHkgb3V0cHV0IGZpbGVzCisrCWlmIChkZWZpbmVkKCRzdGRvdXRfZmlsZSkgJiYgLXogJHN0ZG91dF9maWxlKSB7CisrCQl1bmxpbmsoJHN0ZG91dF9maWxlKTsKKysJCSRzdGRvdXRfZmlsZSA9IHVuZGVmOworKwl9CisrCWlmIChkZWZpbmVkKCRzdGRlcnJfZmlsZSkgJiYgLXogJHN0ZGVycl9maWxlKSB7CisrCQl1bmxpbmsoJHN0ZGVycl9maWxlKTsKKysJCSRzdGRlcnJfZmlsZSA9IHVuZGVmOworKwl9CisgIAorLQlyZXR1cm4gJHJlc3VsdDsKKysJcmV0dXJuICgkc3Rkb3V0X2ZpbGUsICRzdGRlcnJfZmlsZSwgJHJlc3VsdCk7CisgfQorIAorIAorQEAgLTIyNjAsMjMgKzI2MjEsMjggQEAgc3ViIGFwcGx5X2NvbmZpZygkKQorIAorIAorICMKKy0jIGdldF9leGNsdXNpb25fZGF0YShmaWxlbmFtZSkKKysjIGdldF9zb3VyY2VfZGF0YShmaWxlbmFtZSkKKyAjCistIyBTY2FuIHNwZWNpZmllZCBzb3VyY2UgY29kZSBmaWxlIGZvciBleGNsdXNpb24gbWFya2VycyBhbmQgcmV0dXJuCistIyAgIGxpbmVudW1iZXIgLT4gMQorLSMgZm9yIGFsbCBsaW5lcyB3aGljaCBzaG91bGQgYmUgZXhjbHVkZWQuCisrIyBTY2FuIHNwZWNpZmllZCBzb3VyY2UgY29kZSBmaWxlIGZvciBleGNsdXNpb24gbWFya2VycyBhbmQgY2hlY2tzdW1zLiBSZXR1cm4KKysjICAgKCBleGNsLCBicmV4Y2wsIGNoZWNrc3VtcyApIHdoZXJlCisrIyAgIGV4Y2w6ICAgICAgbGluZW5vIC0+IDEgZm9yIGFsbCBsaW5lcyBmb3Igd2hpY2ggdG8gZXhjbHVkZSBhbGwgZGF0YQorKyMgICBicmV4Y2w6ICAgIGxpbmVubyAtPiAxIGZvciBhbGwgbGluZXMgZm9yIHdoaWNoIHRvIGV4Y2x1ZGUgYnJhbmNoIGRhdGEKKysjICAgY2hlY2tzdW1zOiBsaW5lbm8gLT4gc291cmNlIGNvZGUgY2hlY2tzdW0KKyAjCisgCistc3ViIGdldF9leGNsdXNpb25fZGF0YSgkKQorK3N1YiBnZXRfc291cmNlX2RhdGEoJCkKKyB7CisgCW15ICgkZmlsZW5hbWUpID0gQF87CisgCW15ICVsaXN0OworIAlteSAkZmxhZyA9IDA7CisrCW15ICVicmRhdGE7CisrCW15ICRicmZsYWcgPSAwOworKwlteSAlY2hlY2tzdW1zOworIAlsb2NhbCAqSEFORExFOworIAorIAlpZiAoIW9wZW4oSEFORExFLCAiPCIsICRmaWxlbmFtZSkpIHsKKyAJCXdhcm4oIldBUk5JTkc6IGNvdWxkIG5vdCBvcGVuICRmaWxlbmFtZVxuIik7CistCQlyZXR1cm4gdW5kZWY7CisrCQlyZXR1cm47CisgCX0KKyAJd2hpbGUgKDxIQU5ETEU+KSB7CisgCQlpZiAoLyRFWENMX1NUT1AvKSB7CitAQCAtMjI4NywxNCArMjY1Myw2MiBAQCBzdWIgZ2V0X2V4Y2x1c2lvbl9kYXRhKCQpCisgCQlpZiAoLyRleGNsX2xpbmUvIHx8ICRmbGFnKSB7CisgCQkJJGxpc3R7JC59ID0gMTsKKyAJCX0KKysJCWlmICgvJEVYQ0xfQlJfU1RPUC8pIHsKKysJCQkkYnJmbGFnID0gMDsKKysJCX0gZWxzaWYgKC8kRVhDTF9CUl9TVEFSVC8pIHsKKysJCQkkYnJmbGFnID0gMTsKKysJCX0KKysJCWlmICgvJGV4Y2xfYnJfbGluZS8gfHwgJGJyZmxhZykgeworKwkJCSRicmRhdGF7JC59ID0gMTsKKysJCX0KKysJCWlmICgkY2hlY2tzdW0pIHsKKysJCQljaG9tcCgpOworKwkJCSRjaGVja3N1bXN7JC59ID0gbWQ1X2Jhc2U2NCgkXyk7CisrCQl9CisgCX0KKyAJY2xvc2UoSEFORExFKTsKKyAKKy0JaWYgKCRmbGFnKSB7CisrCWlmICgkZmxhZyB8fCAkYnJmbGFnKSB7CisgCQl3YXJuKCJXQVJOSU5HOiB1bnRlcm1pbmF0ZWQgZXhjbHVzaW9uIHNlY3Rpb24gaW4gJGZpbGVuYW1lXG4iKTsKKyAJfQorIAorLQlyZXR1cm4gXCVsaXN0OworKwlyZXR1cm4gKFwlbGlzdCwgXCVicmRhdGEsIFwlY2hlY2tzdW1zKTsKKyt9CisrCisrCisrIworKyMgZ2V0X2FsbF9zb3VyY2VfZGF0YShmaWxlbmFtZXMpCisrIworKyMgU2NhbiBzcGVjaWZpZWQgc291cmNlIGNvZGUgZmlsZXMgZm9yIGV4Y2x1c2lvbiBtYXJrZXJzIGFuZCByZXR1cm4KKysjICAgZmlsZW5hbWUgLT4gWyBleGNsLCBicmV4Y2wsIGNoZWNrc3VtcyBdCisrIyAgIGV4Y2w6ICAgICAgbGluZW5vIC0+IDEgZm9yIGFsbCBsaW5lcyBmb3Igd2hpY2ggdG8gZXhjbHVkZSBhbGwgZGF0YQorKyMgICBicmV4Y2w6ICAgIGxpbmVubyAtPiAxIGZvciBhbGwgbGluZXMgZm9yIHdoaWNoIHRvIGV4Y2x1ZGUgYnJhbmNoIGRhdGEKKysjICAgY2hlY2tzdW1zOiBsaW5lbm8gLT4gc291cmNlIGNvZGUgY2hlY2tzdW0KKysjCisrCisrc3ViIGdldF9hbGxfc291cmNlX2RhdGEoQCkKKyt7CisrCW15IEBmaWxlbmFtZXMgPSBAXzsKKysJbXkgJWRhdGE7CisrCW15ICRmYWlsZWQgPSAwOworKworKwlmb3IgbXkgJGZpbGVuYW1lIChAZmlsZW5hbWVzKSB7CisrCQlteSBAZDsKKysJCW5leHQgaWYgKGV4aXN0cygkZGF0YXskZmlsZW5hbWV9KSk7CisrCisrCQlAZCA9IGdldF9zb3VyY2VfZGF0YSgkZmlsZW5hbWUpOworKwkJaWYgKEBkKSB7CisrCQkJJGRhdGF7JGZpbGVuYW1lfSA9IFsgQGQgXTsKKysJCX0gZWxzZSB7CisrCQkJJGZhaWxlZCA9IDE7CisrCQl9CisrCX0KKysKKysJaWYgKCRmYWlsZWQpIHsKKysJCXdhcm4oIldBUk5JTkc6IHNvbWUgZXhjbHVzaW9uIG1hcmtlcnMgbWF5IGJlIGlnbm9yZWRcbiIpOworKwl9CisrCisrCXJldHVybiBcJWRhdGE7CisgfQorIAorIAorQEAgLTIzMTgsMzUgKzI3MzIsMTcgQEAgc3ViIGFwcGx5X2V4Y2x1c2lvbl9kYXRhKCQkKQorIHsKKyAJbXkgKCRpbnN0ciwgJGdyYXBoKSA9IEBfOworIAlteSAkZmlsZW5hbWU7CistCW15ICVleGNsX2RhdGE7CistCW15ICRleGNsX3JlYWRfZmFpbGVkID0gMDsKKysJbXkgJGV4Y2xfZGF0YTsKKyAKKy0JIyBDb2xsZWN0IGV4Y2x1c2lvbiBtYXJrZXIgZGF0YQorLQlmb3JlYWNoICRmaWxlbmFtZSAoc29ydF91bmlxX2xleChrZXlzKCV7JGdyYXBofSksIGtleXMoJXskaW5zdHJ9KSkpIHsKKy0JCW15ICRleGNsID0gZ2V0X2V4Y2x1c2lvbl9kYXRhKCRmaWxlbmFtZSk7CistCistCQkjIFNraXAgYW5kIG5vdGUgaWYgZmlsZSBjb3VsZCBub3QgYmUgcmVhZAorLQkJaWYgKCFkZWZpbmVkKCRleGNsKSkgeworLQkJCSRleGNsX3JlYWRfZmFpbGVkID0gMTsKKy0JCQluZXh0OworLQkJfQorLQorLQkJIyBBZGQgdG8gY29sbGVjdGlvbiBpZiB0aGVyZSBhcmUgbWFya2VycworLQkJJGV4Y2xfZGF0YXskZmlsZW5hbWV9ID0gJGV4Y2wgaWYgKGtleXMoJXskZXhjbH0pID4gMCk7CistCX0KKy0KKy0JIyBXYXJuIGlmIG5vdCBhbGwgc291cmNlIGZpbGVzIGNvdWxkIGJlIHJlYWQKKy0JaWYgKCRleGNsX3JlYWRfZmFpbGVkKSB7CistCQl3YXJuKCJXQVJOSU5HOiBzb21lIGV4Y2x1c2lvbiBtYXJrZXJzIG1heSBiZSBpZ25vcmVkXG4iKTsKKy0JfQorKwkoJGV4Y2xfZGF0YSkgPSBnZXRfYWxsX3NvdXJjZV9kYXRhKGtleXMoJXskZ3JhcGh9KSwga2V5cygleyRpbnN0cn0pKTsKKyAKKyAJIyBTa2lwIGlmIG5vIG1hcmtlcnMgd2VyZSBmb3VuZAorLQlyZXR1cm4gKCRpbnN0ciwgJGdyYXBoKSBpZiAoa2V5cyglZXhjbF9kYXRhKSA9PSAwKTsKKysJcmV0dXJuICgkaW5zdHIsICRncmFwaCkgaWYgKCElJGV4Y2xfZGF0YSk7CisgCisgCSMgQXBwbHkgZXhjbHVzaW9uIG1hcmtlciBkYXRhIHRvIGdyYXBoCistCWZvcmVhY2ggJGZpbGVuYW1lIChrZXlzKCVleGNsX2RhdGEpKSB7CisrCWZvcmVhY2ggJGZpbGVuYW1lIChrZXlzKCUkZXhjbF9kYXRhKSkgeworIAkJbXkgJGZ1bmN0aW9uX2RhdGEgPSAkZ3JhcGgtPnskZmlsZW5hbWV9OworLQkJbXkgJGV4Y2wgPSAkZXhjbF9kYXRheyRmaWxlbmFtZX07CisrCQlteSAkZXhjbCA9ICRleGNsX2RhdGEtPnskZmlsZW5hbWV9LT5bMF07CisgCQlteSAkZnVuY3Rpb247CisgCisgCQluZXh0IGlmICghZGVmaW5lZCgkZnVuY3Rpb25fZGF0YSkpOworQEAgLTIzODQsOSArMjc4MCw5IEBAIHN1YiBhcHBseV9leGNsdXNpb25fZGF0YSgkJCkKKyAJfQorIAorIAkjIEFwcGx5IGV4Y2x1c2lvbiBtYXJrZXIgZGF0YSB0byBpbnN0cgorLQlmb3JlYWNoICRmaWxlbmFtZSAoa2V5cyglZXhjbF9kYXRhKSkgeworKwlmb3JlYWNoICRmaWxlbmFtZSAoa2V5cyglJGV4Y2xfZGF0YSkpIHsKKyAJCW15ICRsaW5lX2RhdGEgPSAkaW5zdHItPnskZmlsZW5hbWV9OworLQkJbXkgJGV4Y2wgPSAkZXhjbF9kYXRheyRmaWxlbmFtZX07CisrCQlteSAkZXhjbCA9ICRleGNsX2RhdGEtPnskZmlsZW5hbWV9LT5bMF07CisgCQlteSAkbGluZTsKKyAJCW15IEBuZXdfZGF0YTsKKyAKK0BAIC0yNDY4LDEwICsyODY0LDEyIEBAIHN1YiBwcm9jZXNzX2dyYXBoZmlsZSgkJCkKKyAKKyAJIyBUcnkgdG8gZmluZCBiYXNlIGRpcmVjdG9yeSBhdXRvbWF0aWNhbGx5IGlmIHJlcXVlc3RlZCBieSB1c2VyCisgCWlmICgkcmNfYXV0b19iYXNlKSB7CistCQkkYmFzZV9kaXIgPSBmaW5kX2Jhc2VfZnJvbV9ncmFwaCgkYmFzZV9kaXIsICRpbnN0ciwgJGdyYXBoKTsKKysJCSRiYXNlX2RpciA9IGZpbmRfYmFzZV9mcm9tX3NvdXJjZSgkYmFzZV9kaXIsCisrCQkJWyBrZXlzKCV7JGluc3RyfSksIGtleXMoJXskZ3JhcGh9KSBdKTsKKyAJfQorIAorLQkoJGluc3RyLCAkZ3JhcGgpID0gYWRqdXN0X2dyYXBoX2ZpbGVuYW1lcygkYmFzZV9kaXIsICRpbnN0ciwgJGdyYXBoKTsKKysJYWRqdXN0X3NvdXJjZV9maWxlbmFtZXMoJGluc3RyLCAkYmFzZV9kaXIpOworKwlhZGp1c3Rfc291cmNlX2ZpbGVuYW1lcygkZ3JhcGgsICRiYXNlX2Rpcik7CisgCisgCWlmICghJG5vX21hcmtlcnMpIHsKKyAJCSMgQXBwbHkgZXhjbHVzaW9uIG1hcmtlciBkYXRhIHRvIGdyYXBoIGZpbGUgZGF0YQorQEAgLTI3NjcsMTEgKzMxNjUsMTEgQEAgc3ViIHBhcmVudF9kaXIoJCkKKyB9CisgCisgIworLSMgZmluZF9iYXNlX2Zyb21fZ3JhcGgoYmFzZV9kaXIsIGluc3RyLCBncmFwaCkKKysjIGZpbmRfYmFzZV9mcm9tX3NvdXJjZShiYXNlX2Rpciwgc291cmNlX2ZpbGVzKQorICMKKy0jIFRyeSB0byBkZXRlcm1pbmUgdGhlIGJhc2UgZGlyZWN0b3J5IG9mIHRoZSBncmFwaCBmaWxlIHNwZWNpZmllZCBieSBJTlNUUgorLSMgYW5kIEdSQVBILiBUaGUgYmFzZSBkaXJlY3RvcnkgaXMgdGhlIGJhc2UgZm9yIGFsbCByZWxhdGl2ZSBmaWxlbmFtZXMgaW4KKy0jIHRoZSBncmFwaCBmaWxlLiBJdCBpcyBkZWZpbmVkIGJ5IHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGF0IHRpbWUKKysjIFRyeSB0byBkZXRlcm1pbmUgdGhlIGJhc2UgZGlyZWN0b3J5IG9mIHRoZSBvYmplY3QgZmlsZSBidWlsdCBmcm9tCisrIyBTT1VSQ0VfRklMRVMuIFRoZSBiYXNlIGRpcmVjdG9yeSBpcyB0aGUgYmFzZSBmb3IgYWxsIHJlbGF0aXZlIGZpbGVuYW1lcyBpbgorKyMgdGhlIGdjb3YgZGF0YS4gSXQgaXMgZGVmaW5lZCBieSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBhdCB0aW1lCisgIyBvZiBjb21waWxpbmcgdGhlIHNvdXJjZSBmaWxlLgorICMKKyAjIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyBhIGhldXJpc3RpYyB3aGljaCByZWxpZXMgb24gdGhlIGZvbGxvd2luZworQEAgLTI3ODEsMTYgKzMxNzksMTYgQEAgc3ViIHBhcmVudF9kaXIoJCkKKyAjIC0gZmlsZXMgYnkgdGhlIHNhbWUgbmFtZSBhcmUgbm90IHByZXNlbnQgaW4gbXVsdGlwbGUgcGFyZW50IGRpcmVjdG9yaWVzCisgIworIAorLXN1YiBmaW5kX2Jhc2VfZnJvbV9ncmFwaCgkJCQpCisrc3ViIGZpbmRfYmFzZV9mcm9tX3NvdXJjZSgkJCkKKyB7CistCW15ICgkYmFzZV9kaXIsICRpbnN0ciwgJGdyYXBoKSA9IEBfOworKwlteSAoJGJhc2VfZGlyLCAkc291cmNlX2ZpbGVzKSA9IEBfOworIAlteSAkb2xkX2Jhc2U7CisgCW15ICRiZXN0X21pc3M7CisgCW15ICRiZXN0X2Jhc2U7CisgCW15ICVyZWxfZmlsZXM7CisgCisgCSMgRGV0ZXJtaW5lIGxpc3Qgb2YgcmVsYXRpdmUgcGF0aHMKKy0JZm9yZWFjaCBteSAkZmlsZW5hbWUgKGtleXMoJXskaW5zdHJ9KSwga2V5cygleyRncmFwaH0pKSB7CisrCWZvcmVhY2ggbXkgJGZpbGVuYW1lIChAJHNvdXJjZV9maWxlcykgeworIAkJbmV4dCBpZiAoZmlsZV9uYW1lX2lzX2Fic29sdXRlKCRmaWxlbmFtZSkpOworIAorIAkJJHJlbF9maWxlc3skZmlsZW5hbWV9ID0gMTsKK0BAIC0yODI5LDE3ICszMjI3LDE3IEBAIHN1YiBmaW5kX2Jhc2VfZnJvbV9ncmFwaCgkJCQpCisgfQorIAorICMKKy0jIGFkanVzdF9ncmFwaF9maWxlbmFtZXMoYmFzZV9kaXIsIGluc3RyLCBncmFwaCkKKysjIGFkanVzdF9zb3VyY2VfZmlsZW5hbWVzKGhhc2gsIGJhc2VfZGlyKQorICMKKy0jIE1ha2UgcmVsYXRpdmUgcGF0aHMgaW4gSU5TVFIgYW5kIEdSQVBIIGFic29sdXRlIGFuZCBhcHBseQorLSMgZ2VuaW5mb19hZGp1c3Rfc3JjX3BhdGggc2V0dGluZyB0byBncmFwaCBmaWxlIGRhdGEuCisrIyBUcmFuc2Zvcm0gYWxsIGtleXMgb2YgSEFTSCB0byBhYnNvbHV0ZSBmb3JtIGFuZCBhcHBseSByZXF1ZXN0ZWQKKysjIHRyYW5zZm9ybWF0aW9ucy4KKyAjCisgCistc3ViIGFkanVzdF9ncmFwaF9maWxlbmFtZXMoJCQkKQorK3N1YiBhZGp1c3Rfc291cmNlX2ZpbGVuYW1lcygkJCQpCisgeworLQlteSAoJGJhc2VfZGlyLCAkaW5zdHIsICRncmFwaCkgPSBAXzsKKysJbXkgKCRoYXNoLCAkYmFzZV9kaXIpID0gQF87CisgCistCWZvcmVhY2ggbXkgJGZpbGVuYW1lIChrZXlzKCV7JGluc3RyfSkpIHsKKysJZm9yZWFjaCBteSAkZmlsZW5hbWUgKGtleXMoJXskaGFzaH0pKSB7CisgCQlteSAkb2xkX2ZpbGVuYW1lID0gJGZpbGVuYW1lOworIAorIAkJIyBDb252ZXJ0IHRvIGFic29sdXRlIGNhbm9uaWNhbCBmb3JtCitAQCAtMjg1MSwyOCArMzI0OSw1MCBAQCBzdWIgYWRqdXN0X2dyYXBoX2ZpbGVuYW1lcygkJCQpCisgCQl9CisgCisgCQlpZiAoJGZpbGVuYW1lIG5lICRvbGRfZmlsZW5hbWUpIHsKKy0JCQkkaW5zdHItPnskZmlsZW5hbWV9ID0gZGVsZXRlKCRpbnN0ci0+eyRvbGRfZmlsZW5hbWV9KTsKKysJCQkkaGFzaC0+eyRmaWxlbmFtZX0gPSBkZWxldGUoJGhhc2gtPnskb2xkX2ZpbGVuYW1lfSk7CisgCQl9CisgCX0KKyt9CisgCistCWZvcmVhY2ggbXkgJGZpbGVuYW1lIChrZXlzKCV7JGdyYXBofSkpIHsKKy0JCW15ICRvbGRfZmlsZW5hbWUgPSAkZmlsZW5hbWU7CisgCistCQkjIE1ha2UgYWJzb2x1dGUKKy0JCSMgQ29udmVydCB0byBhYnNvbHV0ZSBjYW5vbmljYWwgZm9ybQorLQkJJGZpbGVuYW1lID0gc29sdmVfcmVsYXRpdmVfcGF0aCgkYmFzZV9kaXIsICRmaWxlbmFtZSk7CisrIworKyMgZmlsdGVyX3NvdXJjZV9maWxlcyhoYXNoKQorKyMKKysjIFJlbW92ZSB1bndhbnRlZCBzb3VyY2UgZmlsZSBkYXRhIGZyb20gSEFTSC4KKysjCisgCistCQkjIEFwcGx5IGFkanVzdG1lbnQKKy0JCWlmIChkZWZpbmVkKCRhZGp1c3Rfc3JjX3BhdHRlcm4pKSB7CistCQkJJGZpbGVuYW1lID1+IHMvJGFkanVzdF9zcmNfcGF0dGVybi8kYWRqdXN0X3NyY19yZXBsYWNlL2c7Cisrc3ViIGZpbHRlcl9zb3VyY2VfZmlsZXMoJCkKKyt7CisrCW15ICgkaGFzaCkgPSBAXzsKKysKKysJZm9yZWFjaCBteSAkZmlsZW5hbWUgKGtleXMoJXskaGFzaH0pKSB7CisrCQkjIFNraXAgZXh0ZXJuYWwgZmlsZXMgaWYgcmVxdWVzdGVkCisrCQlnb3RvIGRlbCBpZiAoISRvcHRfZXh0ZXJuYWwgJiYgaXNfZXh0ZXJuYWwoJGZpbGVuYW1lKSk7CisrCisrCQkjIEFwcGx5IGluY2x1ZGUgcGF0dGVybnMKKysJCWlmIChAaW5jbHVkZV9wYXR0ZXJucykgeworKwkJCW15ICRrZWVwOworKworKwkJCWZvcmVhY2ggbXkgJHBhdHRlcm4gKEBpbmNsdWRlX3BhdHRlcm5zKSB7CisrCQkJCWlmICgkZmlsZW5hbWUgPX4gKC9eJHBhdHRlcm4kLykpIHsKKysJCQkJCSRrZWVwID0gMTsKKysJCQkJCWxhc3Q7CisrCQkJCX0KKysJCQl9CisrCQkJZ290byBkZWwgaWYgKCEka2VlcCk7CisgCQl9CisgCistCQlpZiAoJGZpbGVuYW1lIG5lICRvbGRfZmlsZW5hbWUpIHsKKy0JCQkkZ3JhcGgtPnskZmlsZW5hbWV9ID0gZGVsZXRlKCRncmFwaC0+eyRvbGRfZmlsZW5hbWV9KTsKKysJCSMgQXBwbHkgZXhjbHVkZSBwYXR0ZXJucworKwkJZm9yZWFjaCBteSAkcGF0dGVybiAoQGV4Y2x1ZGVfcGF0dGVybnMpIHsKKysJCQlnb3RvIGRlbCBpZiAoJGZpbGVuYW1lID1+ICgvXiRwYXR0ZXJuJC8pKTsKKyAJCX0KKy0JfQorKwkJbmV4dDsKKyAKKy0JcmV0dXJuICgkaW5zdHIsICRncmFwaCk7CisrZGVsOgorKwkJIyBSZW1vdmUgZmlsZSBkYXRhCisrCQlkZWxldGUoJGhhc2gtPnskZmlsZW5hbWV9KTsKKysJCSRleGNsdWRlZF9maWxlc3skZmlsZW5hbWV9ID0gMTsKKysJfQorIH0KKyAKKyAjCitAQCAtMzc4NCw2ICs0MjA0LDcgQEAgc3ViIGdldF9nY292X2NhcGFiaWxpdGllcygpCisgCQknYycgPT4gJ2JyYW5jaC1jb3VudHMnLAorIAkJJ2YnID0+ICdmdW5jdGlvbi1zdW1tYXJpZXMnLAorIAkJJ2gnID0+ICdoZWxwJywKKysJCSdpJyA9PiAnaW50ZXJtZWRpYXRlLWZvcm1hdCcsCisgCQknbCcgPT4gJ2xvbmctZmlsZS1uYW1lcycsCisgCQknbicgPT4gJ25vLW91dHB1dCcsCisgCQknbycgPT4gJ29iamVjdC1kaXJlY3RvcnknLAorZGlmZiAtLWdpdCBhL2xjb3ZyYyBiL2xjb3ZyYworaW5kZXggNDBmMzY0Zi4uYmQ0YmMzYiAxMDA2NDQKKy0tLSBhL2xjb3ZyYworKysrIGIvbGNvdnJjCitAQCAtMTM0LDYgKzEzNCw5IEBAIGdlbmh0bWxfZGVzY19odG1sPTAKKyAjIHdoZW4gY29sbGVjdGluZyBjb3ZlcmFnZSBkYXRhLgorIGdlbmluZm9fYXV0b19iYXNlID0gMQorIAorKyMgVXNlIGdjb3YgaW50ZXJtZWRpYXRlIGZvcm1hdD8gVmFsaWQgdmFsdWVzIGFyZSAwLCAxLCBhdXRvCisrZ2VuaW5mb19pbnRlcm1lZGlhdGUgPSBhdXRvCisrCisgIyBEaXJlY3RvcnkgY29udGFpbmluZyBnY292IGtlcm5lbCBmaWxlcworICMgbGNvdl9nY292X2RpciA9IC9wcm9jL2djb3YKKyAKK2RpZmYgLS1naXQgYS9tYW4vbGNvdnJjLjUgYi9tYW4vbGNvdnJjLjUKK2luZGV4IGYyMGQyNzMuLmJmMGNlN2EgMTAwNjQ0CistLS0gYS9tYW4vbGNvdnJjLjUKKysrKyBiL21hbi9sY292cmMuNQorQEAgLTIyMyw2ICsyMjMsMTEgQEAgZ2VuaW5mb19jb21wYXRfbGlidG9vbCA9IDAKKyBnZW5pbmZvX2F1dG9fYmFzZSA9IDEKKyAuYnIKKyAKKysjIFVzZSBnY292IGludGVybWVkaWF0ZSBmb3JtYXQ/IFZhbGlkIHZhbHVlcyBhcmUgMCwgMSwgYXV0bworKy5icgorK2dlbmluZm9faW50ZXJtZWRpYXRlID0gYXV0bworKy5icgorKworICMgRGlyZWN0b3J5IGNvbnRhaW5pbmcgZ2NvdiBrZXJuZWwgZmlsZXMKKyAuYnIKKyBsY292X2djb3ZfZGlyID0gL3Byb2MvZ2NvdgorQEAgLTc4OSw2ICs3OTQsMjUgQEAgbG9jYXRlZCwgYW5kIGluIGFkZGl0aW9uLCBpcyBkaWZmZXJlbnQgYmV0d2VlbiBmaWxlcyBvZiB0aGUgc2FtZSBwcm9qZWN0LgorIERlZmF1bHQgaXMgMS4KKyAuUFAKKyAKKysuQlIgZ2VuaW5mb19pbnRlcm1lZGlhdGUgIiA9IgorKy5JUiAwIHwgMSB8IGF1dG8KKysuSVAKKytTcGVjaWZ5IHdoZXRoZXIgdG8gdXNlIGdjb3YgaW50ZXJtZWRpYXRlIGZvcm1hdAorKy5icgorKworK1VzZSB0aGlzIG9wdGlvbiB0byBjb250cm9sIHdoZXRoZXIgZ2VuaW5mbyBzaG91bGQgdXNlIHRoZSBnY292IGludGVybWVkaWF0ZQorK2Zvcm1hdCB3aGlsZSBjb2xsZWN0aW5nIGNvdmVyYWdlIGRhdGEuIFRoZSB1c2Ugb2YgdGhlIGdjb3YgaW50ZXJtZWRpYXRlIGZvcm1hdAorK3Nob3VsZCBpbmNyZWFzZSBwcm9jZXNzaW5nIHNwZWVkLiBJdCBhbHNvIHByb3ZpZGVzIGJyYW5jaCBjb3ZlcmFnZSBkYXRhIHdoZW4KKyt1c2luZyB0aGUgXC1cLWluaXRpYWwgY29tbWFuZCBsaW5lIG9wdGlvbi4KKysuYnIKKysKKytWYWxpZCB2YWx1ZXMgYXJlIDAgZm9yIG9mZiwgMSBmb3Igb24sIGFuZCAiYXV0byIgdG8gbGV0IGdlbmluZm8gYXV0b21hdGljYWxseQorK3VzZSBpbW1lZGlhdGUgZm9ybWF0IHdoZW4gc3VwcG9ydGVkIGJ5IGdjb3YuCisrLmJyCisrCisrRGVmYXVsdCBpcyAiYXV0byIuCisrLlBQCisrCisgLkJSIGxjb3ZfZ2Nvdl9kaXIgIiA9IgorIC5JIHBhdGhfdG9fa2VybmVsX2NvdmVyYWdlX2RhdGEKKyAuSVAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xjb3YvZmlsZXMvMDAwMi1nZW5pbmZvLUFkZC1pbnRlcm1lZGlhdGUtSlNPTi1mb3JtYXQtc3VwcG9ydC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xjb3YvZmlsZXMvMDAwMi1nZW5pbmZvLUFkZC1pbnRlcm1lZGlhdGUtSlNPTi1mb3JtYXQtc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjE4MDYzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGNvdi9maWxlcy8wMDAyLWdlbmluZm8tQWRkLWludGVybWVkaWF0ZS1KU09OLWZvcm1hdC1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsMjQ3IEBACitGcm9tIGUxM2IyYjZmODQ0M2RhNjYwY2FmYTA2NzljM2IxNjI0MDg0M2NlOWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQZXRlciBPYmVycGFybGVpdGVyIDxvYmVycGFyQGxpbnV4LmlibS5jb20+CitEYXRlOiBGcmksIDI0IE1heSAyMDE5IDE3OjE2OjU2ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBnZW5pbmZvOiBBZGQgaW50ZXJtZWRpYXRlIEpTT04gZm9ybWF0IHN1cHBvcnQKKworVGhpcyBjaGFuZ2UgYWRkcyBzdXBwb3J0IGZvciBwYXJzaW5nIHRoZSBvdXRwdXQgb2YgZ2NvdidzIGludGVybWVkaWF0ZQorSlNPTiBmaWxlIGZvcm1hdCBhcyBpbXBsZW1lbnRlZCBieSBHQ0MgdmVyc2lvbiA5LgorCitOb3RlOiBUaGUgd2F5IHRoYXQgdGhlIGludGVybWVkaWF0ZSBmaWxlIGZvcm1hdCBzdXBwb3J0IGlzIGltcGxlbWVudGVkCitpbiBnZW5pbmZvIHJlbW92ZXMgdGhlIG5lZWQgdG8gcGFyc2UgLmdjbm8gZmlsZXMgZGlyZWN0bHkuIFNpbmNlIGdlbmluZm8KK2RvZXMgbm90IGluY2x1ZGUgc3VwcG9ydCBmb3IgcGFyc2luZyBHQ0MgOSAuZ2NubyBmaWxlcywgdXNpbmcgdGhlCitpbnRlcm1lZGlhdGUgZm9ybWF0IGlzIHRoZSBvbmx5IG9wdGlvbiBmb3IgZ2VuaW5mbyB0byBjb2xsZWN0IGNvdmVyYWdlCitkYXRhIGdlbmVyYXRlZCBieSBHQ0MgdmVyc2lvbiA5LgorCitTaWduZWQtb2ZmLWJ5OiBQZXRlciBPYmVycGFybGVpdGVyIDxvYmVycGFyQGxpbnV4LmlibS5jb20+CistLS0KKyBiaW4vZ2VuaW5mbyB8IDE2MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDE2MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitEb3dubG9hZCBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbGNvdi9jb21taXQvNzVmYmFlMWNmYzUwMjdmODE4YTBiYjg2NWJmNmY5NmZhYjMyMDJkYQorCitkaWZmIC0tZ2l0IGEvYmluL2dlbmluZm8gYi9iaW4vZ2VuaW5mbworaW5kZXggMDI3NjY2Ni4uY2NlYjc4MiAxMDA3NTUKKy0tLSBhL2Jpbi9nZW5pbmZvCisrKysgYi9iaW4vZ2VuaW5mbworQEAgLTU5LDYgKzU5LDkgQEAgdXNlIEZpbGU6OkNvcHkgcXcoY29weSk7CisgdXNlIEdldG9wdDo6TG9uZzsKKyB1c2UgRGlnZXN0OjpNRDUgcXcobWQ1X2Jhc2U2NCk7CisgdXNlIEN3ZCBxdy9hYnNfcGF0aC87CisrdXNlIFBlcmxJTzo6Z3ppcDsKKyt1c2UgSlNPTiBxdyhkZWNvZGVfanNvbik7CisrCisgaWYoICReTyBlcSAibXN5cyIgKQorIHsKKyAJcmVxdWlyZSBGaWxlOjpTcGVjOjpXaW4zMjsKK0BAIC00NzQsNyArNDc3LDggQEAgaWYgKCRyY19pbnRlcm1lZGlhdGUgZXEgIjAiKSB7CisgCSRpbnRlcm1lZGlhdGUgPSAxOworIH0gZWxzaWYgKGxjKCRyY19pbnRlcm1lZGlhdGUpIGVxICJhdXRvIikgeworIAkjIFVzZSBpbnRlcm1lZGlhdGUgZm9ybWF0IGlmIHN1cHBvcnRlZCBieSBnY292CistCSRpbnRlcm1lZGlhdGUgPSAkZ2Nvdl9jYXBzLT57J2ludGVybWVkaWF0ZS1mb3JtYXQnfSA/IDEgOiAwOworKwkkaW50ZXJtZWRpYXRlID0gKCRnY292X2NhcHMtPnsnaW50ZXJtZWRpYXRlLWZvcm1hdCd9IHx8CisrCQkJICRnY292X2NhcHMtPnsnanNvbi1mb3JtYXQnfSkgPyAxIDogMDsKKyB9IGVsc2UgeworIAlkaWUoIkVSUk9SOiBpbnZhbGlkIHZhbHVlIGZvciBnZW5pbmZvX2ludGVybWVkaWF0ZTogIi4KKyAJICAgICInJHJjX2ludGVybWVkaWF0ZSdcbiIpOworQEAgLTIwODQsNiArMjA4OCw0OCBAQCBzdWIgcmVhZF9pbnRlcm1lZGlhdGVfdGV4dCgkJCkKKyB9CisgCisgCisrIworKyMgcmVhZF9pbnRlcm1lZGlhdGVfanNvbihnY292X2ZpbGVuYW1lLCBkYXRhLCBiYXNlZGlyX3JlZikKKysjCisrIyBSZWFkIGdjb3YgaW50ZXJtZWRpYXRlIEpTT04gZm9ybWF0IGluIEdDT1ZfRklMRU5BTUUgYW5kIGFkZCB0aGUgcmVzdWx0aW5nCisrIyBkYXRhIHRvIERBVEEgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6CisrIworKyMgZGF0YTogICAgICBzb3VyY2VfZmlsZW5hbWUgLT4gZmlsZV9kYXRhCisrIyBmaWxlX2RhdGE6IEdDT1YgSlNPTiBkYXRhIGZvciBmaWxlCisrIworKyMgQWxzbyBzdG9yZSB0aGUgdmFsdWUgZm9yIGN1cnJlbnRfd29ya2luZ19kaXJlY3RvcnkgdG8gQkFTRURJUl9SRUYuCisrIworKworK3N1YiByZWFkX2ludGVybWVkaWF0ZV9qc29uKCQkJCkKKyt7CisrCW15ICgkZ2Nvdl9maWxlbmFtZSwgJGRhdGEsICRiYXNlZGlyX3JlZikgPSBAXzsKKysJbXkgJGZkOworKwlteSAkdGV4dDsKKysJbXkgJGpzb247CisrCisrCW9wZW4oJGZkLCAiPDpnemlwIiwgJGdjb3ZfZmlsZW5hbWUpIG9yCisrCQlkaWUoIkVSUk9SOiBDb3VsZCBub3QgcmVhZCAkZ2Nvdl9maWxlbmFtZTogJCFcbiIpOworKwlsb2NhbCAkLzsKKysJJHRleHQgPSA8JGZkPjsKKysJY2xvc2UoJGZkKTsKKysKKysJJGpzb24gPSBkZWNvZGVfanNvbigkdGV4dCk7CisrCWlmICghZGVmaW5lZCgkanNvbikgfHwgIWV4aXN0cygkanNvbi0+eyJmaWxlcyJ9KSB8fAorKwkgICAgcmVmKCRqc29uLT57ImZpbGVzIn0gbmUgIkFSUkFZIikpIHsKKysJCWRpZSgiRVJST1I6IFVucmVjb2duaXplZCBKU09OIG91dHB1dCBmb3JtYXQgaW4gIi4KKysJCSAgICAiJGdjb3ZfZmlsZW5hbWVcbiIpOworKwl9CisrCisrCSQkYmFzZWRpcl9yZWYgPSAkanNvbi0+eyJjdXJyZW50X3dvcmtpbmdfZGlyZWN0b3J5In07CisrCisrCWZvciBteSAkZmlsZSAoQHskanNvbi0+eyJmaWxlcyJ9fSkgeworKwkJbXkgJGZpbGVuYW1lID0gJGZpbGUtPnsiZmlsZSJ9OworKworKwkJJGRhdGEtPnskZmlsZW5hbWV9ID0gJGZpbGU7CisrCX0KKyt9CisrCisrCisgIworICMgaW50ZXJtZWRpYXRlX3RleHRfdG9faW5mbyhmZCwgZGF0YSwgc3JjZGF0YSkKKyAjCitAQCAtMjE3Myw2ICsyMjE5LDEwNCBAQCBzdWIgaW50ZXJtZWRpYXRlX3RleHRfdG9faW5mbygkJCQpCisgfQorIAorIAorKyMKKysjIGludGVybWVkaWF0ZV9qc29uX3RvX2luZm8oZmQsIGRhdGEsIHNyY2RhdGEpCisrIworKyMgV3JpdGUgREFUQSBpbiBpbmZvIGZvcm1hdCB0byBmaWxlIGRlc2NyaXB0b3IgRkQuCisrIworKyMgZGF0YTogICAgICBmaWxlbmFtZSAtPiBmaWxlX2RhdGE6CisrIyBmaWxlX2RhdGE6IEdDT1YgSlNPTiBkYXRhIGZvciBmaWxlCisrIworKyMgc3JjZGF0YTogICBmaWxlbmFtZSAtPiBbIGV4Y2wsIGJyZXhjbCwgY2hlY2tzdW1zIF0KKysjIGV4Y2w6ICAgICAgbGluZW5vIC0+IDEgZm9yIGFsbCBsaW5lcyBmb3Igd2hpY2ggdG8gZXhjbHVkZSBhbGwgZGF0YQorKyMgYnJleGNsOiAgICBsaW5lbm8gLT4gMSBmb3IgYWxsIGxpbmVzIGZvciB3aGljaCB0byBleGNsdWRlIGJyYW5jaCBkYXRhCisrIyBjaGVja3N1bXM6IGxpbmVubyAtPiBzb3VyY2UgY29kZSBjaGVja3N1bQorKyMKKysjIE5vdGU6IFRvIHNpbXBsaWZ5IHByb2Nlc3NpbmcsIGdjb3YgZGF0YSBpcyBub3QgY29tYmluZWQgaGVyZSwgdGhhdCBpcyBjb3VudHMKKysjICAgICAgIHRoYXQgYXBwZWFyIG11bHRpcGxlIHRpbWVzIGZvciB0aGUgc2FtZSBsaW5lcy9icmFuY2hlcyBhcmUgbm90IGFkZGVkLgorKyMgICAgICAgVGhpcyBpcyBkb25lIGJ5IGxjb3YvZ2VuaHRtbCB3aGVuIHJlYWRpbmcgdGhlIGRhdGEgZmlsZXMuCisrIworKworK3N1YiBpbnRlcm1lZGlhdGVfanNvbl90b19pbmZvKCQkJCkKKyt7CisrCW15ICgkZmQsICRkYXRhLCAkc3JjZGF0YSkgPSBAXzsKKysJbXkgJGJyYW5jaF9udW0gPSAwOworKworKwlyZXR1cm4gaWYgKCEleyRkYXRhfSk7CisrCisrCXByaW50KCRmZCAiVE46JHRlc3RfbmFtZVxuIik7CisrCWZvciBteSAkZmlsZW5hbWUgKGtleXMoJXskZGF0YX0pKSB7CisrCQlteSAoJGV4Y2wsICRicmV4Y2wsICRjaGVja3N1bXMpOworKwkJbXkgJGZpbGVfZGF0YSA9ICRkYXRhLT57JGZpbGVuYW1lfTsKKysKKysJCWlmIChkZWZpbmVkKCRzcmNkYXRhLT57JGZpbGVuYW1lfSkpIHsKKysJCQkoJGV4Y2wsICRicmV4Y2wsICRjaGVja3N1bXMpID0gQHskc3JjZGF0YS0+eyRmaWxlbmFtZX19OworKwkJfQorKworKwkJcHJpbnQoJGZkICJTRjokZmlsZW5hbWVcbiIpOworKworKwkJIyBGdW5jdGlvbiBkYXRhCisrCQlpZiAoJGZ1bmNfY292ZXJhZ2UpIHsKKysJCQlmb3IgbXkgJGQgKEB7JGZpbGVfZGF0YS0+eyJmdW5jdGlvbnMifX0pIHsKKysJCQkJbXkgJGxpbmUgPSAkZC0+eyJzdGFydF9saW5lIn07CisrCQkJCW15ICRjb3VudCA9ICRkLT57ImV4ZWN1dGlvbl9jb3VudCJ9OworKwkJCQlteSAkbmFtZSA9ICRkLT57Im5hbWUifTsKKysKKysJCQkJbmV4dCBpZiAoIWRlZmluZWQoJGxpbmUpIHx8ICFkZWZpbmVkKCRjb3VudCkgfHwKKysJCQkJCSAhZGVmaW5lZCgkbmFtZSkgfHwgJGV4Y2wtPnskbGluZX0pOworKworKwkJCQlwcmludCgkZmQgIkZOOiRsaW5lLCRuYW1lXG4iKTsKKysJCQkJcHJpbnQoJGZkICJGTkRBOiRjb3VudCwkbmFtZVxuIik7CisrCQkJfQorKwkJfQorKworKwkJIyBMaW5lIGRhdGEKKysJCWZvciBteSAkZCAoQHskZmlsZV9kYXRhLT57ImxpbmVzIn19KSB7CisrCQkJbXkgJGxpbmUgPSAkZC0+eyJsaW5lX251bWJlciJ9OworKwkJCW15ICRjb3VudCA9ICRkLT57ImNvdW50In07CisrCQkJbXkgJGM7CisrCQkJbXkgJGJyYW5jaGVzID0gJGQtPnsiYnJhbmNoZXMifTsKKysJCQlteSAkdW5leGVjID0gJGQtPnsidW5leGVjdXRlZF9ibG9jayJ9OworKworKwkJCW5leHQgaWYgKCFkZWZpbmVkKCRsaW5lKSB8fCAhZGVmaW5lZCgkY291bnQpIHx8CisrCQkJCSAkZXhjbC0+eyRsaW5lfSk7CisrCisrCQkJaWYgKGRlZmluZWQoJHVuZXhlYykgJiYgJHVuZXhlYyAmJiAkY291bnQgPT0gMCkgeworKwkJCQkkdW5leGVjID0gMTsKKysJCQl9IGVsc2UgeworKwkJCQkkdW5leGVjID0gMDsKKysJCQl9CisrCisrCQkJaWYgKCRjaGVja3N1bSAmJiBleGlzdHMoJGNoZWNrc3Vtcy0+eyRsaW5lfSkpIHsKKysJCQkJJGMgPSAiLCIuJGNoZWNrc3Vtcy0+eyRsaW5lfTsKKysJCQl9IGVsc2UgeworKwkJCQkkYyA9ICIiOworKwkJCX0KKysJCQlwcmludCgkZmQgIkRBOiRsaW5lLCRjb3VudCRjXG4iKTsKKysKKysJCQkkYnJhbmNoX251bSA9IDA7CisrCQkJIyBCcmFuY2ggZGF0YQorKwkJCWlmICgkYnJfY292ZXJhZ2UgJiYgISRicmV4Y2wtPnskbGluZX0pIHsKKysJCQkJZm9yIG15ICRiIChAJGJyYW5jaGVzKSB7CisrCQkJCQlteSAkYnJjb3VudCA9ICRiLT57ImNvdW50In07CisrCisrCQkJCQlpZiAoIWRlZmluZWQoJGJyY291bnQpIHx8ICR1bmV4ZWMpIHsKKysJCQkJCQkkYnJjb3VudCA9ICItIjsKKysJCQkJCX0KKysJCQkJCXByaW50KCRmZCAiQlJEQTokbGluZSwwLCRicmFuY2hfbnVtLCIuCisrCQkJCQkgICAgICAiJGJyY291bnRcbiIpOworKworKwkJCQkJJGJyYW5jaF9udW0rKzsKKysJCQkJfQorKwkJCX0KKysKKysJCX0KKysKKysJCXByaW50KCRmZCAiZW5kX29mX3JlY29yZFxuIik7CisrCX0KKyt9CisrCisrCisgc3ViIGdldF9vdXRwdXRfZmQoJCQpCisgeworIAlteSAoJG91dGZpbGUsICRmaWxlKSA9IEBfOworQEAgLTIyNDMsNiArMjM4Nyw4IEBAIHN1YiBwcm9jZXNzX2ludGVybWVkaWF0ZSgkJCQpCisgCW15ICRzcmNkYXRhOworIAlteSAkaXNfZ3JhcGggPSAwOworIAlteSAoJG91dCwgJGVyciwgJHJjKTsKKysJbXkgJGpzb25fYmFzZWRpcjsKKysJbXkgJGpzb25fZm9ybWF0OworIAorIAlpbmZvKCJQcm9jZXNzaW5nICVzXG4iLCBhYnMycmVsKCRmaWxlLCAkZGlyKSk7CisgCitAQCAtMjI5Niw2ICsyNDQyLDEyIEBAIHN1YiBwcm9jZXNzX2ludGVybWVkaWF0ZSgkJCQpCisgCQl1bmxpbmsoJGdjb3ZfZmlsZW5hbWUpOworIAl9CisgCisrCWZvciBteSAkZ2Nvdl9maWxlbmFtZSAoZ2xvYigiKi5nY292Lmpzb24uZ3oiKSkgeworKwkJcmVhZF9pbnRlcm1lZGlhdGVfanNvbigkZ2Nvdl9maWxlbmFtZSwgXCVkYXRhLCBcJGpzb25fYmFzZWRpcik7CisrCQl1bmxpbmsoJGdjb3ZfZmlsZW5hbWUpOworKwkJJGpzb25fZm9ybWF0ID0gMTsKKysJfQorKworIAlpZiAoISVkYXRhKSB7CisgCQl3YXJuKCJXQVJOSU5HOiBHQ09WIGRpZCBub3QgcHJvZHVjZSBhbnkgZGF0YSBmb3IgJGZpbGVcbiIpOworIAkJcmV0dXJuOworQEAgLTIzMDQsNiArMjQ1Niw4IEBAIHN1YiBwcm9jZXNzX2ludGVybWVkaWF0ZSgkJCQpCisgCSMgRGV0ZXJtaW5lIGJhc2UgZGlyZWN0b3J5CisgCWlmIChkZWZpbmVkKCRiYXNlX2RpcmVjdG9yeSkpIHsKKyAJCSRiYXNlID0gJGJhc2VfZGlyZWN0b3J5OworKwl9IGVsc2lmIChkZWZpbmVkKCRqc29uX2Jhc2VkaXIpKSB7CisrCQkkYmFzZSA9ICRqc29uX2Jhc2VkaXI7CisgCX0gZWxzZSB7CisgCQkkYmFzZSA9ICRmZGlyOworIAorQEAgLTIzMzEsNyArMjQ4NSwxMSBAQCBzdWIgcHJvY2Vzc19pbnRlcm1lZGlhdGUoJCQkKQorIAorIAkjIEdlbmVyYXRlIG91dHB1dAorIAkkZmQgPSBnZXRfb3V0cHV0X2ZkKCRvdXRwdXRfZmlsZW5hbWUsICRmaWxlKTsKKy0JaW50ZXJtZWRpYXRlX3RleHRfdG9faW5mbygkZmQsIFwlZGF0YSwgJHNyY2RhdGEpOworKwlpZiAoJGpzb25fZm9ybWF0KSB7CisrCQlpbnRlcm1lZGlhdGVfanNvbl90b19pbmZvKCRmZCwgXCVkYXRhLCAkc3JjZGF0YSk7CisrCX0gZWxzZSB7CisrCQlpbnRlcm1lZGlhdGVfdGV4dF90b19pbmZvKCRmZCwgXCVkYXRhLCAkc3JjZGF0YSk7CisrCX0KKyAJY2xvc2UoJGZkKTsKKyAKKyAJY2hkaXIoJGN3ZCk7CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sY292L2xjb3ZfMS4xNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xjb3YvbGNvdl8xLjE0LmJiCmluZGV4IDI2ZTc5N2EuLjE0NzE4MTggMTAwNzU1Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xjb3YvbGNvdl8xLjE0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xjb3YvbGNvdl8xLjE0LmJiCkBAIC0xMCw2ICsxMCw5IEBACiAKIFJERVBFTkRTXyR7UE59ICs9ICIgXAogICAgIGdjb3YgXAorICAgIGdjb3Ytc3ltbGlua3MgXAorICAgIGxpYmpzb24tcGVybCBcCisgICAgbGlicGVybGlvLWd6aXAtcGVybCBcCiAgICAgcGVybCBcCiAgICAgcGVybC1tb2R1bGUtZmlsZWhhbmRsZSBcCiAgICAgcGVybC1tb2R1bGUtZ2V0b3B0LXN0ZCBcCkBAIC0xOSw2ICsyMiw3IEBACiAgICAgcGVybC1tb2R1bGUtY3dkIFwKICAgICBwZXJsLW1vZHVsZS1lcnJubyBcCiAgICAgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1jb3B5IFwKICAgICBwZXJsLW1vZHVsZS1maWxlLWZpbmQgXAogICAgIHBlcmwtbW9kdWxlLWZpbGUtcGF0aCBcCiAgICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKQEAgLTQyLDcgKzQ2LDExIEBACiAgICAgcGVybC1tb2R1bGUtdGllLWhhc2ggXAogIgogCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L2x0cC8ke0JQfS50YXIuZ3oiCitTUkNfVVJJID0gIiBcCisgICAgICAgICAgIGh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L2x0cC8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1nZW5pbmZvLUFkZC1pbnRlcm1lZGlhdGUtdGV4dC1mb3JtYXQtc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWdlbmluZm8tQWRkLWludGVybWVkaWF0ZS1KU09OLWZvcm1hdC1zdXBwb3J0LnBhdGNoIFwKKwkgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIwMjIwZDAxNzUzNDY5ZjgzOTIxZjhmNDFhZTUwNTRjMSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIxNDk5NTY5OTE4NzQ0MGUwYWU0ZGE1N2ZlM2E2NGFkYzBhM2M1Y2YxNGZlYWI5NzFmOGRiMzhmYjdkOGYwNzFhIgpAQCAtNTEsMyArNTksNCBAQAogICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBQUkVGSVg9JHtEfSR7cHJlZml4fSBDRkdfRElSPSR7RH0ke3N5c2NvbmZkaXJ9CiB9CiAKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmJ5dGVzaXplL2xpYmJ5dGVzaXplXzIuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmJ5dGVzaXplL2xpYmJ5dGVzaXplXzIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE1YzE4NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJieXRlc2l6ZS9saWJieXRlc2l6ZV8yLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGUgZ29hbCBvZiB0aGlzIHByb2plY3QgaXMgdG8gcHJvdmlkZSBhIHRpbnkgbGlicmFyeSB0aGF0IHdvdWxkIFwKLWZhY2lsaXRhdGUgdGhlIGNvbW1vbiBvcGVyYXRpb25zIHdpdGggc2l6ZXMgaW4gYnl0ZXMuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL2xpYmJ5dGVzaXplIgotTElDRU5TRSA9ICJMR1BMdjIrIgotU0VDVElPTiA9ICJkZXZlbC9saWIiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWMwN2NiNDk5ZDI1OTQ1MmYzMjRiYjkwYzMwNjdkODVjIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotQiA9ICIke1N9IgotCi1TUkNSRVYgPSAiOWVjYzEwNDIxMDk1MjgwNTE5ODMyNjFmZmQ0OTFkNDVlN2M0NzFlMSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9saWJieXRlc2l6ZTticmFuY2g9bWFzdGVyIgotCi1pbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzIHB5dGhvbjNuYXRpdmUKLQotREVQRU5EUyArPSAiIFwKLSAgICBsaWJwY3JlMiBcCi0gICAgZ21wIFwKLSAgICBtcGZyIFwKLSAgICBnZXR0ZXh0LW5hdGl2ZSBcCi0iCi0KLUZJTEVTXyR7UE59ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9ieXRlc2l6ZSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbjMiCi1QQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIi0td2l0aC1weXRob24zLCAtLXdpdGhvdXQtcHl0aG9uMywscHl0aG9uMy1jb3JlIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWd0ay1kb2MiCi1FWFRSQV9PRU1BS0UgPSAicHkzbGliZGlyPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliYnl0ZXNpemUvbGliYnl0ZXNpemVfMi4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliYnl0ZXNpemUvbGliYnl0ZXNpemVfMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5NTQ0OTkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJieXRlc2l6ZS9saWJieXRlc2l6ZV8yLjIuYmIKQEAgLTAsMCArMSwzMCBAQAorREVTQ1JJUFRJT04gPSAiVGhlIGdvYWwgb2YgdGhpcyBwcm9qZWN0IGlzIHRvIHByb3ZpZGUgYSB0aW55IGxpYnJhcnkgdGhhdCB3b3VsZCBcCitmYWNpbGl0YXRlIHRoZSBjb21tb24gb3BlcmF0aW9ucyB3aXRoIHNpemVzIGluIGJ5dGVzLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9saWJieXRlc2l6ZSIKK0xJQ0VOU0UgPSAiTEdQTHYyKyIKK1NFQ1RJT04gPSAiZGV2ZWwvbGliIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jMDdjYjQ5OWQyNTk0NTJmMzI0YmI5MGMzMDY3ZDg1YyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK0IgPSAiJHtTfSIKKworU1JDUkVWID0gImU2NGU3NTJhMjhhNGE0MWIwYTQzY2JhM2JlZGY5NTcxYzIyYWY4MDciCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvbGliYnl0ZXNpemU7YnJhbmNoPW1hc3RlciIKKworaW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scyBweXRob24zbmF0aXZlCisKK0RFUEVORFMgKz0gIiBcCisgICAgbGlicGNyZTIgXAorICAgIGdtcCBcCisgICAgbXBmciBcCisgICAgZ2V0dGV4dC1uYXRpdmUgXAorIgorCitGSUxFU18ke1BOfSArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vYnl0ZXNpemUiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJweXRob24zIgorUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICItLXdpdGgtcHl0aG9uMywgLS13aXRob3V0LXB5dGhvbjMsLHB5dGhvbjMtY29yZSIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1ndGstZG9jIgorRVhUUkFfT0VNQUtFID0gInB5M2xpYmRpcj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmNhbmJlcnJhL2ZpbGVzLzAwMDEtZ3RrLURvbi10LWFzc3VtZS1hbGwtR2RrRGlzcGxheXMtYXJlLUdka1gxMURpc3BsYXlzLS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmNhbmJlcnJhL2ZpbGVzLzAwMDEtZ3RrLURvbi10LWFzc3VtZS1hbGwtR2RrRGlzcGxheXMtYXJlLUdka1gxMURpc3BsYXlzLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTZmYTJjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliY2FuYmVycmEvZmlsZXMvMDAwMS1ndGstRG9uLXQtYXNzdW1lLWFsbC1HZGtEaXNwbGF5cy1hcmUtR2RrWDExRGlzcGxheXMtLnBhdGNoCkBAIC0wLDAgKzEsNjMgQEAKK0Zyb20gYzA2MjBlNDMyNjUwZTgxMDYyYzE5NjdjYzY2OTgyOWRiZDI5YjMxMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pY2hhZWwgTWVla3MgPG1pY2hhZWwubWVla3NAc3VzZS5jb20+CitEYXRlOiBGcmksIDkgTm92IDIwMTIgMTY6MTY6NDAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZ3RrOiBEb24ndCBhc3N1bWUgYWxsIEdka0Rpc3BsYXlzIGFyZSBHZGtYMTFEaXNwbGF5czoKKyBicm9hZHdheS93YXlsYW5kCisKKy0tLQorIHNyYy9jYW5iZXJyYS1ndGstbW9kdWxlLmMgfCAxNSArKysrKysrKysrKysrKysKKyBzcmMvY2FuYmVycmEtZ3RrLmMgICAgICAgIHwgIDUgKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKykKKworLS0tIGEvc3JjL2NhbmJlcnJhLWd0ay1tb2R1bGUuYworKysrIGIvc3JjL2NhbmJlcnJhLWd0ay1tb2R1bGUuYworQEAgLTMwNyw2ICszMDcsMTEgQEAgc3RhdGljIGdpbnQgd2luZG93X2dldF9kZXNrdG9wKEdka0Rpc3BsYQorICAgICAgICAgZ3VjaGFyICpkYXRhID0gTlVMTDsKKyAgICAgICAgIGdpbnQgcmV0ID0gLTE7CisgCisrI2lmZGVmIEdES19JU19YMTFfRElTUExBWQorKyAgICAgICAgaWYgKCFHREtfSVNfWDExX0RJU1BMQVkoZCkpCisrICAgICAgICAgICAgICAgIHJldHVybiAwOworKyNlbmRpZgorKworICAgICAgICAgaWYgKFhHZXRXaW5kb3dQcm9wZXJ0eShHREtfRElTUExBWV9YRElTUExBWShkKSwgR0RLX1dJTkRPV19YSUQodyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdka194MTFfZ2V0X3hhdG9tX2J5X25hbWVfZm9yX2Rpc3BsYXkoZCwgIl9ORVRfV01fREVTS1RPUCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBHX01BWExPTkcsIEZhbHNlLCBYQV9DQVJESU5BTCwgJnR5cGVfcmV0dXJuLAorQEAgLTMzNSw2ICszNDAsMTEgQEAgc3RhdGljIGdpbnQgZGlzcGxheV9nZXRfZGVza3RvcChHZGtEaXNwbAorICAgICAgICAgZ3VjaGFyICpkYXRhID0gTlVMTDsKKyAgICAgICAgIGdpbnQgcmV0ID0gLTE7CisgCisrI2lmZGVmIEdES19JU19YMTFfRElTUExBWQorKyAgICAgICAgaWYgKCFHREtfSVNfWDExX0RJU1BMQVkoZCkpCisrICAgICAgICAgICAgICAgIHJldHVybiAwOworKyNlbmRpZgorKworICAgICAgICAgaWYgKFhHZXRXaW5kb3dQcm9wZXJ0eShHREtfRElTUExBWV9YRElTUExBWShkKSwgRGVmYXVsdFJvb3RXaW5kb3coR0RLX0RJU1BMQVlfWERJU1BMQVkoZCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtfeDExX2dldF94YXRvbV9ieV9uYW1lX2Zvcl9kaXNwbGF5KGQsICJfTkVUX0NVUlJFTlRfREVTS1RPUCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBHX01BWExPTkcsIEZhbHNlLCBYQV9DQVJESU5BTCwgJnR5cGVfcmV0dXJuLAorQEAgLTM2NSw2ICszNzUsMTEgQEAgc3RhdGljIGdib29sZWFuIHdpbmRvd19pc194ZW1iZWQoR2RrRGlzcAorICAgICAgICAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisgICAgICAgICBBdG9tIHhlbWJlZDsKKyAKKysjaWZkZWYgR0RLX0lTX1gxMV9ESVNQTEFZCisrICAgICAgICBpZiAoIUdES19JU19YMTFfRElTUExBWShkKSkKKysgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworKyNlbmRpZgorKworICAgICAgICAgLyogR25vbWUgUGFuZWwgYXBwbGV0cyBhcmUgWEVNQkVEIHdpbmRvd3MuIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlCisgICAgICAgICAgKiBpZ25vcmUgdGhlbSAqLworIAorLS0tIGEvc3JjL2NhbmJlcnJhLWd0ay5jCisrKysgYi9zcmMvY2FuYmVycmEtZ3RrLmMKK0BAIC0xODUsNiArMTg1LDExIEBAIHN0YXRpYyBnaW50IHdpbmRvd19nZXRfZGVza3RvcChHZGtEaXNwbGEKKyAgICAgICAgIGd1Y2hhciAqZGF0YSA9IE5VTEw7CisgICAgICAgICBnaW50IHJldCA9IC0xOworIAorKyNpZmRlZiBHREtfSVNfWDExX0RJU1BMQVkKKysgICAgICAgIGlmICghR0RLX0lTX1gxMV9ESVNQTEFZKGQpKQorKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKysjZW5kaWYKKysKKyAgICAgICAgIGlmIChYR2V0V2luZG93UHJvcGVydHkoR0RLX0RJU1BMQVlfWERJU1BMQVkoZCksIEdES19XSU5ET1dfWElEKHcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtfeDExX2dldF94YXRvbV9ieV9uYW1lX2Zvcl9kaXNwbGF5KGQsICJfTkVUX1dNX0RFU0tUT1AiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgR19NQVhMT05HLCBGYWxzZSwgWEFfQ0FSRElOQUwsICZ0eXBlX3JldHVybiwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmNhbmJlcnJhL2xpYmNhbmJlcnJhXzAuMzAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJjYW5iZXJyYS9saWJjYW5iZXJyYV8wLjMwLmJiCmluZGV4IDcyYzkzYWIuLjE0OTUwNTEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmNhbmJlcnJhL2xpYmNhbmJlcnJhXzAuMzAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliY2FuYmVycmEvbGliY2FuYmVycmFfMC4zMC5iYgpAQCAtMTEsNiArMTEsNyBAQAogU1JDX1VSSSA9ICIgXAogICAgIGh0dHA6Ly8wcG9pbnRlci5kZS9sZW5uYXJ0L3Byb2plY3RzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKICAgICBmaWxlOi8vMDAwMS1idWlsZC1ndGstYW5kLWd0azMtdmVyc2lvbi1mb3ItY2FuYmVycmFfZ3RrX3BsYXkucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWd0ay1Eb24tdC1hc3N1bWUtYWxsLUdka0Rpc3BsYXlzLWFyZS1HZGtYMTFEaXNwbGF5cy0ucGF0Y2ggXAogIgogU1JDX1VSSVttZDVzdW1dID0gIjM0Y2I3ZTQ0MzBhZmFmNmY0NDdjNGViZGI5YjQyMDcyIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImMyYjY3MWU2N2UwYzI4OGE2OWZjMzNkYzFiNmYxYjUzNGQwNzg4MmMyYWNlZWQzNzAwNGJmNDhjNjAxYWZhNzIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJjZXJlYWwvbGliY2VyZWFsXzEuMi4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliY2VyZWFsL2xpYmNlcmVhbF8xLjIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY1YjQwYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJjZXJlYWwvbGliY2VyZWFsXzEuMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJBIEMrKzExIGxpYnJhcnkgZm9yIHNlcmlhbGl6YXRpb24iCi1IT01FUEFHRSA9ICJodHRwczovL3VzY2lsYWIuZ2l0aHViLmlvL2NlcmVhbC8iCi0KLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNjEyNjkwYWYyZjU3NWRmZDAyZTJlOTE0NDNjZWEyMyIKLQotU1JDUkVWID0gIjUxY2JkYTVmMzBlNTZjODAxYzA3ZmUzZDNhYmE1ZDdmYjllNmNjYTQiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vVVNDaUxhYi9jZXJlYWwuZ2l0IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlCi0KLUVYVFJBX09FQ01BS0UgPSAiLURKVVNUX0lOU1RBTExfQ0VSRUFMPU9OIgotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJjZXJlYWwvbGliY2VyZWFsXzEuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliY2VyZWFsL2xpYmNlcmVhbF8xLjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmM1ODgxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliY2VyZWFsL2xpYmNlcmVhbF8xLjMuMC5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIkEgQysrMTEgbGlicmFyeSBmb3Igc2VyaWFsaXphdGlvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vdXNjaWxhYi5naXRodWIuaW8vY2VyZWFsLyIKKworU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU2MTI2OTBhZjJmNTc1ZGZkMDJlMmU5MTQ0M2NlYTIzIgorCitTUkNSRVYgPSAiMDJlYWNlMTlhOTljZTNjZDU2NGNhNGUzNzk3NTNkNjlhZjA4YzJjOCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9VU0NpTGFiL2NlcmVhbC5naXQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworRVhUUkFfT0VDTUFLRSA9ICItREpVU1RfSU5TVEFMTF9DRVJFQUw9T04iCisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmdwaW9kL2xpYmdwaW9kXzEuNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ3Bpb2QvbGliZ3Bpb2RfMS40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzOTFkZWIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ3Bpb2QvbGliZ3Bpb2RfMS40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1yZXF1aXJlIGxpYmdwaW9kLmluYwotCi1ERVBFTkRTICs9ICJhdXRvY29uZi1hcmNoaXZlLW5hdGl2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjU4NWI0YmI0MzFmOTljNGJhOWIzZWU1OGI5ZDQ5NGMxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIxYWU4ZmQxZjhkYWZjMmViMmJhNTBlNjUyMzkwY2Y1MzNkMjEzNTE0MTlhNzQyNjI1NTg5NWNiNTJlMjFiMWMiCi0KLSMgZW5hYmxlIGN4eCBiaW5kaW5ncwotUEFDS0FHRUNPTkZJRyA/PSAiY3h4IgotCi1QQUNLQUdFQ09ORklHW2N4eF0gPSAiLS1lbmFibGUtYmluZGluZ3MtY3h4LC0tZGlzYWJsZS1iaW5kaW5ncy1jeHgiCi1QQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItLWVuYWJsZS10ZXN0cywtLWRpc2FibGUtdGVzdHMsa21vZCB1ZGV2IgotCi1QQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIi0tZW5hYmxlLWJpbmRpbmdzLXB5dGhvbiwtLWRpc2FibGUtYmluZGluZ3MtcHl0aG9uLHB5dGhvbjMiCi0KLWluaGVyaXQgcHl0aG9uM25hdGl2ZQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tcHl0aG9uIgotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotUlJFQ09NTUVORFNfUFlUSE9OID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAnJHtQTn0tcHl0aG9uJywgJycsZCl9IgotUlJFQ09NTUVORFNfJHtQTn0tcHl0aG9uICs9ICIke1JSRUNPTU1FTkRTX1BZVEhPTn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZF8xLjQuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmdwaW9kL2xpYmdwaW9kXzEuNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2MzIwZGEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZF8xLjQuMy5iYgpAQCAtMCwwICsxLDIxIEBACityZXF1aXJlIGxpYmdwaW9kLmluYworCitERVBFTkRTICs9ICJhdXRvY29uZi1hcmNoaXZlLW5hdGl2ZSIKKworU1JDX1VSSVttZDVzdW1dID0gImQ0ODI2NzIwYThkZTEzMzc5NDM2ZjljMjA3MjM3YmMwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBhZDA4MGQxZWI4OWM0MjJjZjEzMDAxMjkzZmZhNzI4NjljYTEzMDI4ZTg1ZGFiNWY2YjNiYTkwZjg4ZGE0NmQiCisKKyMgZW5hYmxlIGN4eCBiaW5kaW5ncworUEFDS0FHRUNPTkZJRyA/PSAiY3h4IgorCitQQUNLQUdFQ09ORklHW2N4eF0gPSAiLS1lbmFibGUtYmluZGluZ3MtY3h4LC0tZGlzYWJsZS1iaW5kaW5ncy1jeHgiCitQQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItLWVuYWJsZS10ZXN0cywtLWRpc2FibGUtdGVzdHMsa21vZCB1ZGV2IgorCitQQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIi0tZW5hYmxlLWJpbmRpbmdzLXB5dGhvbiwtLWRpc2FibGUtYmluZGluZ3MtcHl0aG9uLHB5dGhvbjMiCisKK2luaGVyaXQgcHl0aG9uM25hdGl2ZQorCitQQUNLQUdFUyA9KyAiJHtQTn0tcHl0aG9uIgorRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorUlJFQ09NTUVORFNfUFlUSE9OID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAnJHtQTn0tcHl0aG9uJywgJycsZCl9IgorUlJFQ09NTUVORFNfJHtQTn0tcHl0aG9uICs9ICIke1JSRUNPTU1FTkRTX1BZVEhPTn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJoYXJ1L2xpYmhhcnUvbGliaGFydS1SRUxFQVNFXzJfM18wX2NtYWtlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliaGFydS9saWJoYXJ1L2xpYmhhcnUtUkVMRUFTRV8yXzNfMF9jbWFrZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzJiZTFiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliaGFydS9saWJoYXJ1L2xpYmhhcnUtUkVMRUFTRV8yXzNfMF9jbWFrZS5wYXRjaApAQCAtMCwwICsxLDUyIEBACitCYWNrcG9ydCBmcm9tIEZlZG9yYSBQcm9qZWN0LgoraHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9saWJoYXJ1CisKK0ZpeCB0aGUgaW5zdGFsbCBkZXN0aW5hdGlvbiBvZiBzb21lIGZpbGVzLgorCitVcHN0cmVhbS1TdGF0dXM6IGluYXBwcm9wcmlhdGUKKworU2lnbmVkLW9mZi1ieTogWmhlbmcgUnVvcWluIDx6aGVuZ3JxLmZuc3RAY24uZnVqaXRzdS5jb20+CisKK2RpZmYgLXVycCBsaWJoYXJ1LVJFTEVBU0VfMl8zXzAvQ01ha2VMaXN0cy50eHQgbGliaGFydS1SRUxFQVNFXzJfM18wX2NtYWtlL0NNYWtlTGlzdHMudHh0CistLS0gbGliaGFydS1SRUxFQVNFXzJfM18wL0NNYWtlTGlzdHMudHh0CTIwMTMtMTAtMzAgMjA6MTE6NTkuMDAwMDAwMDAwICswNzAwCisrKysgbGliaGFydS1SRUxFQVNFXzJfM18wX2NtYWtlL0NNYWtlTGlzdHMudHh0CTIwMTctMDYtMDEgMTU6NTY6MDYuNTMzNTUyNzk1ICswNzAwCitAQCAtMjUsNyArMjUsNyBAQCBlbmRpZihNU1ZDKQorIAorICMgaW5mb3JtYXRpb24gYWJvdXQgbGliaGFydQorIHNldChMSUJIUERGX01BSk9SIDIpCistc2V0KExJQkhQREZfTUlOT1IgMikKKytzZXQoTElCSFBERl9NSU5PUiAzKQorIHNldChMSUJIUERGX1BBVENIIDApCisgc2V0KExJQkhQREZfVkVSU0lPTiAke0xJQkhQREZfTUFKT1J9LiR7TElCSFBERl9NSU5PUn0uJHtMSUJIUERGX1BBVENIfSkKKyBzZXQoTElCSFBERl9ERVNDUklQVElPTiAibGliSGFydSBpcyBhIGZyZWUsIGNyb3NzIHBsYXRmb3JtLCBvcGVuIHNvdXJjZSBsaWJyYXJ5IGZvciBnZW5lcmF0aW5nIFBERiBmaWxlcy4iKQorQEAgLTIxMCw5ICsyMTAsOSBAQCBzZXQoCisgaW5zdGFsbChGSUxFUyAke2hhcnVfSERSU30gREVTVElOQVRJT04gaW5jbHVkZSkKKyAKKyAjIGluc3RhbGwgdmFyaW91cyBmaWxlcworLWluc3RhbGwoRklMRVMgUkVBRE1FIENIQU5HRVMgSU5TVEFMTCBERVNUSU5BVElPTiAuKQorK2luc3RhbGwoRklMRVMgUkVBRE1FIENIQU5HRVMgSU5TVEFMTCBERVNUSU5BVElPTiAke1NIQVJFX0lOU1RBTExfUFJFRklYfS9saWJoYXJ1KQorIGlmKE5PVCBERVZQQUspCistICBpbnN0YWxsKERJUkVDVE9SWSBpZiBERVNUSU5BVElPTiAuKQorKyAgaW5zdGFsbChESVJFQ1RPUlkgaWYgREVTVElOQVRJT04gJHtTSEFSRV9JTlNUQUxMX1BSRUZJWH0vbGliaGFydSkKKyBlbmRpZihOT1QgREVWUEFLKQorIGlmKERFVlBBSykKKyAgIGluc3RhbGwoRklMRVMgJHtDTUFLRV9CSU5BUllfRElSfS9saWJoYXJ1LkRldlBhY2thZ2UgREVTVElOQVRJT04gLikKK2RpZmYgLXVycCBsaWJoYXJ1LVJFTEVBU0VfMl8zXzAvc3JjL0NNYWtlTGlzdHMudHh0IGxpYmhhcnUtUkVMRUFTRV8yXzNfMF9jbWFrZS9zcmMvQ01ha2VMaXN0cy50eHQKKy0tLSBsaWJoYXJ1LVJFTEVBU0VfMl8zXzAvc3JjL0NNYWtlTGlzdHMudHh0CTIwMTMtMTAtMzAgMjA6MTE6NTkuMDAwMDAwMDAwICswNzAwCisrKysgbGliaGFydS1SRUxFQVNFXzJfM18wX2NtYWtlL3NyYy9DTWFrZUxpc3RzLnR4dAkyMDE3LTA2LTAxIDE2OjA4OjQ1LjQyNTEwNTc0NiArMDcwMAorQEAgLTkwLDExICs5MCwxMyBAQCBpZihMSUJIUERGX1NIQVJFRCkKKyAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke0xJQkhQREZfTkFNRX0gJHtBRERJVElPTkFMX0xJQlJBUklFU30pCisgICBpZihXSU4zMiBBTkQgTk9UIENZR1dJTikKKyAgIAlzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtMSUJIUERGX05BTUV9IFBST1BFUlRJRVMgREVGSU5FX1NZTUJPTCBIUERGX0RMTF9NQUtFKQorKyAgZWxzZShXSU4zMiBBTkQgTk9UIENZR1dJTikKKysgIAlzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtMSUJIUERGX05BTUV9IFBST1BFUlRJRVMgU09WRVJTSU9OICR7TElCSFBERl9WRVJTSU9OfSkKKyAgIGVuZGlmKFdJTjMyIEFORCBOT1QgQ1lHV0lOKQorICAgaW5zdGFsbCgKKyAgICAgVEFSR0VUUyAke0xJQkhQREZfTkFNRX0KKy0gICAgQVJDSElWRSBERVNUSU5BVElPTiBsaWIKKy0gICAgTElCUkFSWSBERVNUSU5BVElPTiBsaWIKKysgICAgQVJDSElWRSBERVNUSU5BVElPTiAke0xJQl9JTlNUQUxMX0RJUn0KKysgICAgTElCUkFSWSBERVNUSU5BVElPTiAke0xJQl9JTlNUQUxMX0RJUn0KKyAgICAgUlVOVElNRSBERVNUSU5BVElPTiBiaW4KKyAgICkKKyBlbmRpZihMSUJIUERGX1NIQVJFRCkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmhhcnUvbGliaGFydV8yLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmhhcnUvbGliaGFydV8yLjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDFhMzdjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliaGFydS9saWJoYXJ1XzIuMy4wLmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiZnJlZSBQREYgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJoYXJ1Lm9yZyIKK0RFU0NSSVBUSU9OID0gImxpYkhhcnUgaXMgYSBsaWJyYXJ5IGZvciBnZW5lcmF0aW5nIFBERiBmaWxlcy4gXAorICAgICAgICAgICAgICAgSXQgaXMgZnJlZSwgb3BlbiBzb3VyY2UsIHdyaXR0ZW4gaW4gQU5TSSBDIGFuZCBjcm9zcyBwbGF0Zm9ybS4gIgorCitMSUNFTlNFID0gIlpsaWIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PTNlZTZiYzFmNjRkOWNjNzkwN2Y0NDg0MGM4ZTUwY2IxIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGliaGFydS9saWJoYXJ1LmdpdDticmFuY2g9Ml8zIFwKKyAgICAgICAgICAgZmlsZTovL2xpYmhhcnUtUkVMRUFTRV8yXzNfMF9jbWFrZS5wYXRjaCBcCisJICAgIgorCitTUkNSRVYgPSAiNGFlMWQ1ZjRjODQ0NTlmMTMwYmYxYjFlZjRjNWMzMzBhZjhlY2E1ZCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorREVQRU5EUyArPSAibGlicG5nIHpsaWIiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICBta2RpciAtcCAke0R9LyR7ZGF0YWRpcn0vbGliaGFydQorICAgICBtdiAke0R9L2xpYmhhcnUgJHtEfS8ke2RhdGFkaXJ9Cit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJpaW8vbGliaWlvX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmlpby9saWJpaW9fZ2l0LmJiCmluZGV4IGI1M2JhNDYuLmY4M2Q5YzkgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmlpby9saWJpaW9fZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmlpby9saWJpaW9fZ2l0LmJiCkBAIC00LDExICs0LDExIEBACiBMSUNFTlNFID0gIkxHUEx2Mi4xKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT03YzEzYjMzNzZjZWEwY2U2OGQyZDJkYTBhMWIzYTcyYyIKIAotIyB2MC4xOCArIGEgc2luZ2xlIGNvbW1pdCBmaXhpbmcgdGhlIGJ1aWxkCi1TUkNSRVYgPSAiNTA5MDYwM2QwMTc3OWJiMTcxN2ZiMGM1MDk1MzMzMGU4NzcwNTUwZiIKLVBWID0gIjAuMTgrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiNWY1YWYyZTQxNzEyOWFkOGY0ZTA1ZmM1YzFiNzMwZjA2OTRkY2ExMiIKK1BWID0gIjAuMTkrZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9hbmFsb2dkZXZpY2VzaW5jL2xpYmlpby5naXQ7cHJvdG9jb2w9aHR0cHMiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+XGQrKFwuXGQrKSspIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaWNyb2h0dHBkL2xpYm1pY3JvaHR0cGRfMC45LjY5LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWljcm9odHRwZC9saWJtaWNyb2h0dHBkXzAuOS42OS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRhZWFmNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaWNyb2h0dHBkL2xpYm1pY3JvaHR0cGRfMC45LjY5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQSBzbWFsbCBDIGxpYnJhcnkgdGhhdCBpcyBzdXBwb3NlZCB0byBtYWtlIGl0IGVhc3kgdG8gcnVuIGFuIEhUVFAgc2VydmVyIGFzIHBhcnQgb2YgYW5vdGhlciBhcHBsaWNhdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJtaWNyb2h0dHBkLyIKLUxJQ0VOU0UgPSAiTEdQTC0yLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTdkMDkyODVmZWFjOGE2NGVmYTg3OGU2OTJiMTRmMzYiCi1TRUNUSU9OID0gIm5ldCIKLQotREVQRU5EUyA9ICJmaWxlIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGlibWljcm9odHRwZC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIzY2UwM2RiMWYxMDAwNzUxN2NlY2YwNWUwNDAwNjlhZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmYjliNmIxNDhiNzg3NDkzZTYzN2QzMDgzNTg4NzExZTY1Y2JjYjcyNmZhMDJjZWUyY2Q1NDNjNWRlMjdlMzdlIgotCi1pbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBwa2djb25maWcgZ2V0dGV4dAotCi1DRkxBR1MgKz0gIi1wdGhyZWFkIC1EX1JFRU5UUkFOVCIKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtc3RhdGljIC0td2l0aC1nbnV0bHM9JHtTVEFHSU5HX0xJQkRJUn0vLi4vIgotCi1QQUNLQUdFQ09ORklHID89ICJjdXJsIGh0dHBzIgotUEFDS0FHRUNPTkZJR19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKLSAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnbGFyZ2VmaWxlJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbbGFyZ2VmaWxlXSA9ICItLWVuYWJsZS1sYXJnZWZpbGUsLS1kaXNhYmxlLWxhcmdlZmlsZSwsIgotUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLWVuYWJsZS1jdXJsLC0tZGlzYWJsZS1jdXJsLGN1cmwsIgotUEFDS0FHRUNPTkZJR1todHRwc10gPSAiLS1lbmFibGUtaHR0cHMsLS1kaXNhYmxlLWh0dHBzLGxpYmdjcnlwdCBnbnV0bHMsIgotCi1kb19jb21waWxlX2FwcGVuZCgpIHsKLSAgICBzZWQgLWkgczotTCR7U1RBR0lOR19MSUJESVJ9OjpnIGxpYm1pY3JvaHR0cGQucGMKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm1pY3JvaHR0cGQvbGlibWljcm9odHRwZF8wLjkuNzAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaWNyb2h0dHBkL2xpYm1pY3JvaHR0cGRfMC45LjcwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0OTc2ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaWNyb2h0dHBkL2xpYm1pY3JvaHR0cGRfMC45LjcwLmJiCkBAIC0wLDAgKzEsMzAgQEAKK0RFU0NSSVBUSU9OID0gIkEgc21hbGwgQyBsaWJyYXJ5IHRoYXQgaXMgc3VwcG9zZWQgdG8gbWFrZSBpdCBlYXN5IHRvIHJ1biBhbiBIVFRQIHNlcnZlciBhcyBwYXJ0IG9mIGFub3RoZXIgYXBwbGljYXRpb24iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlibWljcm9odHRwZC8iCitMSUNFTlNFID0gIkxHUEwtMi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU3ZDA5Mjg1ZmVhYzhhNjRlZmE4NzhlNjkyYjE0ZjM2IgorU0VDVElPTiA9ICJuZXQiCisKK0RFUEVORFMgPSAiZmlsZSIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2xpYm1pY3JvaHR0cGQvJHtCUE59LSR7UFZ9LnRhci5neiBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiZGNkNjA0NWVjYjRlYTE4YzEyMGFmZWRjY2JkMWRhNzQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTBkMGEzZDM5NmY5NmY5YmM0MWViMGY3ZTgxODc3OTYwNDkyODVmYWJlZjgyNjA0YWNkNDg3OTU5MDk3NzMwNyIKKworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgcGtnY29uZmlnIGdldHRleHQKKworQ0ZMQUdTICs9ICItcHRocmVhZCAtRF9SRUVOVFJBTlQiCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXN0YXRpYyAtLXdpdGgtZ251dGxzPSR7U1RBR0lOR19MSUJESVJ9Ly4uLyIKKworUEFDS0FHRUNPTkZJRyA/PSAiY3VybCBodHRwcyIKK1BBQ0tBR0VDT05GSUdfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCisgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2xhcmdlZmlsZScsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2xhcmdlZmlsZV0gPSAiLS1lbmFibGUtbGFyZ2VmaWxlLC0tZGlzYWJsZS1sYXJnZWZpbGUsLCIKK1BBQ0tBR0VDT05GSUdbY3VybF0gPSAiLS1lbmFibGUtY3VybCwtLWRpc2FibGUtY3VybCxjdXJsLCIKK1BBQ0tBR0VDT05GSUdbaHR0cHNdID0gIi0tZW5hYmxlLWh0dHBzLC0tZGlzYWJsZS1odHRwcyxsaWJnY3J5cHQgZ251dGxzLCIKKworZG9fY29tcGlsZV9hcHBlbmQoKSB7CisgICAgc2VkIC1pIHM6LUwke1NUQUdJTkdfTElCRElSfTo6ZyBsaWJtaWNyb2h0dHBkLnBjCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaW1ldGljL2xpYm1pbWV0aWMvMDAwMS1saWJtaW1ldGljLVJlbW92aW5nLXRlc3QtZGlyZWN0b3J5LWZyb20tdGhlLU1ha2VmaWxlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWltZXRpYy9saWJtaW1ldGljLzAwMDEtbGlibWltZXRpYy1SZW1vdmluZy10ZXN0LWRpcmVjdG9yeS1mcm9tLXRoZS1NYWtlZmlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGNkNGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWltZXRpYy9saWJtaW1ldGljLzAwMDEtbGlibWltZXRpYy1SZW1vdmluZy10ZXN0LWRpcmVjdG9yeS1mcm9tLXRoZS1NYWtlZmlsZS5wYXRjaApAQCAtMCwwICsxLDY3IEBACitGcm9tIDY0ZmQyNWFmNWZlYTNhM2M5YzEyMTIyYTJmZDBmYWIzY2Q0MjBmNzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBhc21pdGswMS1pbiA8YXNtaXRrMDFAaW4uaWJtLmNvbT4KK0RhdGU6IFdlZCwgNSBGZWIgMjAyMCAwMDoxNDo0MiAtMDYwMAorU3ViamVjdDogW1BBVENIXSBsaWJtaW1ldGljOiBSZW1vdmluZyB0ZXN0IGRpcmVjdG9yeSBmcm9tIHRoZSBNYWtlZmlsZQorCitUaGUgdGVzdCBkaXJlY3RvcnkgaXMgcmVtb3ZlZCBhcyB0aGVyZSB3ZXJlIGVycm9ycyAocmVsb2NhdGlvbiBlcnJvcnMpCitzaW5jZSB0aGUgc2hhcmVkIG9iamVjdCBmaWxlcyBvZiBsaWJjKysgYW5kIGxpYmMgd2VyZSBub3QgdGFrZW4gZnJvbSB0aGUKK3N5c3Jvb3QgcGF0aCBidXQgZnJvbSB0aGUgc3lzdGVtJ3MgbGlicmFyeSBwYXRoIHdoZXJlIHRoZSByZXF1aXJlZAordmVyc2lvbiBvZiB0aGUgLnNvIGlzIG5vdCBwcmVzZW50LgorCitUaGUgZmlsZXMgJ21pbWV0aWMvY29kZWMvb3RoZXJfY29kZWNzLmgnIGFuZCAnbWltZXRpYy9jb250ZW50dHlwZS5jeHgnCitjb250YWlucyBjaGFuZ2VzIHRoYXQgcmVzb2x2ZXMgZXJyb3JzIHdoZW4gY29tcGlsaW5nIG9uIHRhcmdldCBzeXN0ZW0KK2FhcmNoNjQteW9lLWxpbnV4LW11c2wuCisKK1NpZ25lZC1vZmYtYnk6IGFzbWl0azAxLWluIDxhc21pdGswMUBpbi5pYm0uY29tPgorQ2hhbmdlLUlkOiBJMTgyMmIzNmFkNGExZmE1ZTdiMTY1ZDhjYWMzYTZlOTZhY2ExMWMzNQorLS0tCisgTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICB8IDIgKy0KKyBtaW1ldGljL2NvZGVjL290aGVyX2NvZGVjcy5oIHwgNCArKysrCisgbWltZXRpYy9jb250ZW50dHlwZS5jeHggICAgICB8IDQgKysrKworIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA2MzRiZDRjLi5jN2NiYWU3IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMSw2ICsxLDYgQEAKKyBNQUlOVEFJTkVSQ0xFQU5GSUxFUyA9IE1ha2VmaWxlIE1ha2VmaWxlLmluIGNvbmZpZy5jYWNoZQorIEVYVFJBX0RJU1Q9TElDRU5TRSBtNAorLVNVQkRJUlMgPSBtaW1ldGljIGRvYyBleGFtcGxlcyB0ZXN0IHdpbjMyCisrU1VCRElSUyA9IG1pbWV0aWMgZG9jIGV4YW1wbGVzIHdpbjMyCisgSU5DTFVERVM9LUkkKHRvcF9zcmNkaXIpCisgQUNMT0NBTF9BTUZMQUdTPS1JIG00CisKK2RpZmYgLS1naXQgYS9taW1ldGljL2NvZGVjL290aGVyX2NvZGVjcy5oIGIvbWltZXRpYy9jb2RlYy9vdGhlcl9jb2RlY3MuaAoraW5kZXggYzRjY2YzZi4uMGZjODhmZCAxMDA2NDQKKy0tLSBhL21pbWV0aWMvY29kZWMvb3RoZXJfY29kZWNzLmgKKysrKyBiL21pbWV0aWMvY29kZWMvb3RoZXJfY29kZWNzLmgKK0BAIC04LDYgKzgsMTAgQEAKKyAjZGVmaW5lIF9NSU1FVElDX0NPREVDX09USEVSX0NPREVDU19IXworICNpbmNsdWRlIDxtaW1ldGljL2NvZGVjL2NvZGVjX2Jhc2UuaD4KKworKyNpZm5kZWYgX19HTElCQ19fCisrICAgIHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CisrI2VuZGlmCisrCisgbmFtZXNwYWNlIG1pbWV0aWMKKyB7CisKK2RpZmYgLS1naXQgYS9taW1ldGljL2NvbnRlbnR0eXBlLmN4eCBiL21pbWV0aWMvY29udGVudHR5cGUuY3h4CitpbmRleCA1MjIwODJkLi4wNTc3ZDQ0IDEwMDY0NAorLS0tIGEvbWltZXRpYy9jb250ZW50dHlwZS5jeHgKKysrKyBiL21pbWV0aWMvY29udGVudHR5cGUuY3h4CitAQCAtMTMsNiArMTMsMTAgQEAKKyAjaW5jbHVkZSA8bWltZXRpYy90b2tlbml6ZXIuaD4KKyAjaW5jbHVkZSA8bWltZXRpYy91dGlscy5oPgorCisrI2lmbmRlZiBfX0dMSUJDX18KKysgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKKysjZW5kaWYKKysKKyBuYW1lc3BhY2UgbWltZXRpYworIHsKKyB1c2luZyBuYW1lc3BhY2Ugc3RkOworLS0gCisyLjkuMworCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaW1ldGljL2xpYm1pbWV0aWMvMDAwMS1taW1ldGljLUNoZWNrLWZvci1NTUFQX0ZBSUxFRC1yZXR1cm4tZnJvbS1tbWFwLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWltZXRpYy9saWJtaW1ldGljLzAwMDEtbWltZXRpYy1DaGVjay1mb3ItTU1BUF9GQUlMRUQtcmV0dXJuLWZyb20tbW1hcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jN2M4ZDYyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWltZXRpYy9saWJtaW1ldGljLzAwMDEtbWltZXRpYy1DaGVjay1mb3ItTU1BUF9GQUlMRUQtcmV0dXJuLWZyb20tbW1hcC5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIGY4YWIyYjFhYWEzN2Y2YmE5ZDUyN2E5OWNiMzdiNmFjMjE3MWUxMjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNCBGZWIgMjAyMCAxNzowMzoxMiAtMDgwMAorU3ViamVjdDogW1BBVENIXSBtaW1ldGljOiBDaGVjayBmb3IgTU1BUF9GQUlMRUQgcmV0dXJuIGZyb20gbW1hcCgpCisKK0F2b2lkcyB1c2luZyBncmVhdGVyIHRoYW4gemVybyBjb21wYXJpc2lvbiBvbiBwb2ludGVycworCitGaXhlcworbWltZXRpYy9vcy9tbWZpbGUuY3h4OjYwOjE0OiBlcnJvcjogb3JkZXJlZCBjb21wYXJpc29uIGJldHdlZW4gcG9pbnRlciBhbmQgemVybyAoJ2NoYXIgKicgYW5kICdpbnQnKQorCitpZihtX2JlZyA+IDApCit+fn5+IF4gfgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBtaW1ldGljL29zL21tZmlsZS5jeHggfCAxNiArKysrKysrLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21pbWV0aWMvb3MvbW1maWxlLmN4eCBiL21pbWV0aWMvb3MvbW1maWxlLmN4eAoraW5kZXggZGZjOTViNy4uZWQ0ZmY1NSAxMDA2NDQKKy0tLSBhL21pbWV0aWMvb3MvbW1maWxlLmN4eAorKysrIGIvbWltZXRpYy9vcy9tbWZpbGUuY3h4CitAQCAtNTcsMTUgKzU3LDEzIEBAIGJvb2wgTU1GaWxlOjpvcGVuKGludCBtb2RlKQorIGJvb2wgTU1GaWxlOjptYXAoKQorIHsKKyAgICAgbV9iZWcgPSAoY2hhciopIG1tYXAoMCwgbV9zdC5zdF9zaXplLCBQUk9UX1JFQUQsIE1BUF9TSEFSRUQsbV9mZCwwKTsKKy0gICAgaWYobV9iZWcgPiAwKQorLSAgICB7CistICAgICAgICBtX2VuZCA9IG1fYmVnICsgbV9zdC5zdF9zaXplOworLSAgICAgICAgI2lmIEhBVkVfTUFEVklTRQorLSAgICAgICAgbWFkdmlzZShtX2JlZywgbV9zdC5zdF9zaXplLCBNQURWX1NFUVVFTlRJQUwpOworLSAgICAgICAgI2VuZGlmCistICAgICAgICByZXR1cm4gdHJ1ZTsKKy0gICAgfQorLSAgICByZXR1cm4gZmFsc2U7CisrICAgIGlmKG1fYmVnID09IE1BUF9GQUlMRUQpCisrICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgIG1fZW5kID0gbV9iZWcgKyBtX3N0LnN0X3NpemU7CisrICAgICNpZiBIQVZFX01BRFZJU0UKKysgICAgbWFkdmlzZShtX2JlZywgbV9zdC5zdF9zaXplLCBNQURWX1NFUVVFTlRJQUwpOworKyAgICAjZW5kaWYKKysgICAgcmV0dXJuIHRydWU7CisgfQorIAorIE1NRmlsZTo6fk1NRmlsZSgpCistLSAKKzIuMjUuMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaW1ldGljL2xpYm1pbWV0aWNfMC45LjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaW1ldGljL2xpYm1pbWV0aWNfMC45LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkwYzRlYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm1pbWV0aWMvbGlibWltZXRpY18wLjkuOC5iYgpAQCAtMCwwICsxLDI0IEBACisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KKworU1VNTUFSWSA9ICJNaW1ldGljIExpYnJhcnkgZm9yIG11bHRpLXBhcnQgcGFyc2luZyIKK0RFU0NSSVBUSU9OID0gIkVtYWlsIGxpYnJhcnkgKE1JTUUpIHdyaXR0ZW4gaW4gQysrIGRlc2lnbmVkIHRvIGJlIGVhc3kgdG8gdXNlIGFuZCBpbnRlZ3JhdGUgYnV0IHlldCBmYXN0IGFuZCBlZmZpY2llbnQuIgorQVVUSE9SID0gIlN0ZWZhbm8gQmFyYmF0byA8c3RlZmFub0Bjb2Rlc2luay5vcmc+IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5jb2Rlc2luay5vcmcvbWltZXRpY19taW1lX2xpYnJhcnkuaHRtbCIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0xhZGlzbGF2U29wa28vbWltZXRpYy9pc3N1ZXMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjQ5ZGE3ZGYwY2E0NzllZjAxZmY3ZjJkNzk5ZWFiZWUiCisKK1NSQ1JFViA9ICI1MDQ4NmFmOTliNGY5YjM1NTIyZDdiM2RlNDBiNmNlMTA3NTA1Mjc5IgorU1JDX1VSSSArPSAiZ2l0Oi8vZ2l0aHViLmNvbS9MYWRpc2xhdlNvcGtvL21pbWV0aWMvIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYm1pbWV0aWMtUmVtb3ZpbmctdGVzdC1kaXJlY3RvcnktZnJvbS10aGUtTWFrZWZpbGUucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtbWltZXRpYy1DaGVjay1mb3ItTU1BUF9GQUlMRUQtcmV0dXJuLWZyb20tbW1hcC5wYXRjaCBcCisgICAgICAgICAgICIKKworVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitDWFhGTEFHUyArPSAiLVduby1uYXJyb3dpbmciCisKK2luaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJwMTEvbGlicDExXzAuNC4xMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnAxMS9saWJwMTFfMC40LjEwLmJiCmluZGV4IDY1NWRiNDkuLjdmZTA2NDAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnAxMS9saWJwMTFfMC40LjEwLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnAxMS9saWJwMTFfMC40LjEwLmJiCkBAIC0xMiw2ICsxMiw4IEBACiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vT3BlblNDL2xpYnAxMS5naXQiCiBTUkNSRVYgPSAiOTczZDMxZjNmNThkNTU0OWRkZDhiMWY4MjJjZThmNzIxODZmOWQ2OCIKIAorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAibGlicDExLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKKwogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJyc3luYy9saWJyc3luY18yLjIuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnJzeW5jL2xpYnJzeW5jXzIuMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmYyOGZlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnJzeW5jL2xpYnJzeW5jXzIuMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJSZW1vdGUgZGVsdGEtY29tcHJlc3Npb24gbGlicmFyeS4iCi1BVVRIT1IgPSAiTWFydGluIFBvb2wsIEFuZHJldyBUcmlkZ2VsbCwgRG9ub3ZhbiBCYWFyZGEsIEFkYW0gU2NodWJlcnQiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDgwNDVmM2I4ZjkyOWMxY2IyOWExZTNmZDczN2I0OTkiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saWJyc3luYy9saWJyc3luYy5naXQiCi1TUkNSRVYgPSAiNTkxNzY5MjQxODY1N2RjNzhjOWNiZGUzYThkYjRjODVmMjViOWM4ZCIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLURFUEVORFMgPSAicG9wdCIKLQotaW5oZXJpdCBjbWFrZQotCi1QQUNLQUdFUyA9KyAicmRpZmYiCi1GSUxFU19yZGlmZiA9ICIke2JpbmRpcn0vcmRpZmYiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnJzeW5jL2xpYnJzeW5jXzIuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlicnN5bmMvbGlicnN5bmNfMi4zLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlkMzRlZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnJzeW5jL2xpYnJzeW5jXzIuMy4wLmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiUmVtb3RlIGRlbHRhLWNvbXByZXNzaW9uIGxpYnJhcnkuIgorQVVUSE9SID0gIk1hcnRpbiBQb29sLCBBbmRyZXcgVHJpZGdlbGwsIERvbm92YW4gQmFhcmRhLCBBZGFtIFNjaHViZXJ0IgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ4MDQ1ZjNiOGY5MjljMWNiMjlhMWUzZmQ3MzdiNDk5IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGlicnN5bmMvbGlicnN5bmMuZ2l0IgorU1JDUkVWID0gIjAyOGQ5NDMyZDA1YmE0Yjc1MjM5ZTBiYTM1YmNiMzZmYmZjMTdlMzUiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitERVBFTkRTID0gInBvcHQiCisKK2luaGVyaXQgY21ha2UKKworUEFDS0FHRVMgPSsgInJkaWZmIgorRklMRVNfcmRpZmYgPSAiJHtiaW5kaXJ9L3JkaWZmIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzc2gvbGlic3NoXzAuOC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic3NoL2xpYnNzaF8wLjguNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjA0MGVjOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzc2gvbGlic3NoXzAuOC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJNdWx0aXBsYXRmb3JtIEMgbGlicmFyeSBpbXBsZW1lbnRpbmcgdGhlIFNTSHYyIGFuZCBTU0h2MSBwcm90b2NvbCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGlic3NoLm9yZyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zODhhNGZiMWRlYThjZWFlMGJlNzhiYTliMDFmYzEzOSIKLQotREVQRU5EUyA9ICJ6bGliIG9wZW5zc2wgbGliZ2NyeXB0IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5saWJzc2gub3JnL3Byb2plY3RzL2xpYnNzaC5naXQ7YnJhbmNoPXN0YWJsZS0wLjgiCi1TUkNSRVYgPSAiNzg5ZGYwYjdkMGM3YWJkNmI4NWRiOWZjNTI0N2UxNDZlM2Q0ZGRiYSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBjbWFrZQotCi1QQUNLQUdFQ09ORklHID8/PSIiCi1QQUNLQUdFQ09ORklHW2dzc2FwaV0gPSAiLURXSVRIX0dTU0FQST0xLCAtRFdJVEhfR1NTQVBJPTAsIGtyYjUsICIKLQotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi0KLUVYVFJBX09FQ01BS0UgPSAiIFwKLSAgICAtRFdJVEhfR0NSWVBUPTEgXAotICAgIC1EV0lUSF9QQ0FQPTEgXAotICAgIC1EV0lUSF9TRlRQPTEgXAotICAgIC1EV0lUSF9aTElCPTEgXAotICAgIC1ETElCX1NVRkZJWD0ke0BkLmdldFZhcignYmFzZWxpYicpLnJlcGxhY2UoJ2xpYicsICcnKX0gXAotICAgICIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgICMgRGlzYWJsZSBidWlsZGluZyBvZiBleGFtcGxlcwotICAgIHNlZCAtaSAtZSAnL2FkZF9zdWJkaXJlY3RvcnkoZXhhbXBsZXMpL3MvXi8jRE9OT1RXQU5ULycgJHtTfS9DTWFrZUxpc3RzLnR4dCBcCi0gICAgICAgIHx8IGJiZmF0YWwgIkZhaWxlZCB0byBkaXNhYmxlIGV4YW1wbGVzIgotfQotCi1UT09MQ0hBSU4gPSAiZ2NjIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic3NoL2xpYnNzaF8wLjguOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNzaC9saWJzc2hfMC44LjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzllZDhhOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNzaC9saWJzc2hfMC44LjkuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJNdWx0aXBsYXRmb3JtIEMgbGlicmFyeSBpbXBsZW1lbnRpbmcgdGhlIFNTSHYyIGFuZCBTU0h2MSBwcm90b2NvbCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGlic3NoLm9yZyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kYWJiNDk1OGI4MzBlNWRmMTFkMmIwZWQ4ZWEyNTVhMCIKKworREVQRU5EUyA9ICJ6bGliIG9wZW5zc2wgbGliZ2NyeXB0IgorCitTUkNfVVJJID0gImdpdDovL2dpdC5saWJzc2gub3JnL3Byb2plY3RzL2xpYnNzaC5naXQ7YnJhbmNoPXN0YWJsZS0wLjgiCitTUkNSRVYgPSAiMDQ2ODVhNzRkZjljZTFkYjFiYzExNmE4M2EwZGE3OGI0ZjRmYTFmOCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorCitQQUNLQUdFQ09ORklHID8/PSIiCitQQUNLQUdFQ09ORklHW2dzc2FwaV0gPSAiLURXSVRIX0dTU0FQST0xLCAtRFdJVEhfR1NTQVBJPTAsIGtyYjUsICIKKworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCisKK0VYVFJBX09FQ01BS0UgPSAiIFwKKyAgICAtRFdJVEhfR0NSWVBUPTEgXAorICAgIC1EV0lUSF9QQ0FQPTEgXAorICAgIC1EV0lUSF9TRlRQPTEgXAorICAgIC1EV0lUSF9aTElCPTEgXAorICAgIC1ETElCX1NVRkZJWD0ke0BkLmdldFZhcignYmFzZWxpYicpLnJlcGxhY2UoJ2xpYicsICcnKX0gXAorICAgICIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgICMgRGlzYWJsZSBidWlsZGluZyBvZiBleGFtcGxlcworICAgIHNlZCAtaSAtZSAnL2FkZF9zdWJkaXJlY3RvcnkoZXhhbXBsZXMpL3MvXi8jRE9OT1RXQU5ULycgJHtTfS9DTWFrZUxpc3RzLnR4dCBcCisgICAgICAgIHx8IGJiZmF0YWwgIkZhaWxlZCB0byBkaXNhYmxlIGV4YW1wbGVzIgorfQorCitUT09MQ0hBSU4gPSAiZ2NjIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtLzAwMDEtdGVhbV9iYXNpY190ZXN0LnB5LXVzZS1weXRob24zLWludGVycHJldGVyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtLzAwMDEtdGVhbV9iYXNpY190ZXN0LnB5LXVzZS1weXRob24zLWludGVycHJldGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyN2U0ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW0vMDAwMS10ZWFtX2Jhc2ljX3Rlc3QucHktdXNlLXB5dGhvbjMtaW50ZXJwcmV0ZXIucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA1NzFjMTQxYjQzNGRmZjEzNDk0YzZhM2FmZTYyMWY2M2E4ZTYxMGU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmV5IFpoaXpoaWtpbiA8YW5kcmV5LnpAZ21haWwuY29tPgorRGF0ZTogTW9uLCAyNyBKYW4gMjAyMCAxNDoyOTozNCArMDAwMAorU3ViamVjdDogW1BBVENIXSB0ZWFtX2Jhc2ljX3Rlc3QucHk6IHVzZSBweXRob24zIGludGVycHJldGVyCisKK1VzZSBweXRob24zIHNpbmNlIHB5dGhvbjIgaXMgRU9MIGFuZCBoYXMgYmVlbiByZW1vdmVkIGZyb20gc2V2ZXJhbAorZGlzdHJpYnV0aW9ucy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJleSBaaGl6aGlraW4gPGFuZHJleS56QGdtYWlsLmNvbT4KKy0tLQorIHNjcmlwdHMvdGVhbV9iYXNpY190ZXN0LnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc2NyaXB0cy90ZWFtX2Jhc2ljX3Rlc3QucHkgYi9zY3JpcHRzL3RlYW1fYmFzaWNfdGVzdC5weQoraW5kZXggYjA1YmU5ZS4uYWQ5ODBlOCAxMDA3NTUKKy0tLSBhL3NjcmlwdHMvdGVhbV9iYXNpY190ZXN0LnB5CisrKysgYi9zY3JpcHRzL3RlYW1fYmFzaWNfdGVzdC5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhIC91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgQmFzaWMgdGVzdC4KKyAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbS9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW0vcnVuLXB0ZXN0CmluZGV4IDRiYTVhY2YuLmI1YzZmNGUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbS9ydW4tcHRlc3QKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtL3J1bi1wdGVzdApAQCAtMSwzICsxLDMgQEAKICMhL2Jpbi9zaAogCi1weXRob24gJChkaXJuYW1lICQwKS90ZWFtX2Jhc2ljX3Rlc3QucHkKK3B5dGhvbjMgJChkaXJuYW1lICQwKS90ZWFtX2Jhc2ljX3Rlc3QucHkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbV8xLjI5LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtXzEuMjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMWNhMTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtXzEuMjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIGNvbnRyb2xsaW5nIHRlYW0gbmV0d29yayBkZXZpY2UiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYnRlYW0ub3JnLyIKLVNFQ1RJT04gPSAibGlicy9uZXR3b3JrIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLURFUEVORFMgPSAibGlibmwgbGliZGFlbW9uIGphbnNzb24iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9qcGlya28vbGlidGVhbSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXNlbGVjdC5oLWZvci1mZF9zZXQtZGVmaW5pdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXRlYW1kLVJlLWFkanVzdC1pbmNsdWRlLWhlYWRlci1vcmRlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlYW1fYmFzaWNfdGVzdC5weS1kaXNhYmxlLVJlZEhhdC1zcGVjaWZpYy10ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICIKLVNSQ1JFViA9ICJlODk3ZjAyYmYyNDAzZDQ4NTlhOTllMDkwZTM0ZWE3NjhiNGMwNTQwIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHRlc3QKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYnRlYW0ke1NPTElCU30gXAotIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tZGN0bCAke1BOfS11dGlscyIKLUZJTEVTXyR7UE59LWRjdGwgPSAiJHtsaWJkaXJ9L2xpYnRlYW1kY3RsJHtTT0xJQlN9IFwKLSIKLUZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS9ib25kMnRlYW0gXAotICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3RlYW1kIFwKLSAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS90ZWFtZGN0bCBcCi0gICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vdGVhbW5sIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tdXRpbHMgPSAiYmFzaCIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ID0gInB5dGhvbiIKLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQlpbnN0YWxsICR7U30vc2NyaXB0cy90ZWFtX2Jhc2ljX3Rlc3QucHkgJHtEfSR7UFRFU1RfUEFUSH0vCi19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW1fMS4zMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbV8xLjMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljZDAyYjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW1fMS4zMC5iYgpAQCAtMCwwICsxLDQwIEBACitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIGNvbnRyb2xsaW5nIHRlYW0gbmV0d29yayBkZXZpY2UiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYnRlYW0ub3JnLyIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK0RFUEVORFMgPSAibGlibmwgbGliZGFlbW9uIGphbnNzb24iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9qcGlya28vbGlidGVhbSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXNlbGVjdC5oLWZvci1mZF9zZXQtZGVmaW5pdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXRlYW1kLVJlLWFkanVzdC1pbmNsdWRlLWhlYWRlci1vcmRlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlYW1fYmFzaWNfdGVzdC5weS1kaXNhYmxlLVJlZEhhdC1zcGVjaWZpYy10ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVhbV9iYXNpY190ZXN0LnB5LXVzZS1weXRob24zLWludGVycHJldGVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICIKK1NSQ1JFViA9ICI0NzFmYjUwZDIwNmU1YTNmMmVlZjllNDI0NzMyOWI1MWVkYzVjNDkzIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHRlc3QKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYnRlYW0ke1NPTElCU30gXAorIgorCitQQUNLQUdFUyArPSAiJHtQTn0tZGN0bCAke1BOfS11dGlscyIKK0ZJTEVTXyR7UE59LWRjdGwgPSAiJHtsaWJkaXJ9L2xpYnRlYW1kY3RsJHtTT0xJQlN9IFwKKyIKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS9ib25kMnRlYW0gXAorICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3RlYW1kIFwKKyAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS90ZWFtZGN0bCBcCisgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vdGVhbW5sIFwKKyIKKworUkRFUEVORFNfJHtQTn0tdXRpbHMgPSAiYmFzaCIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gInB5dGhvbjMtY29yZSIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpbnN0YWxsICR7U30vc2NyaXB0cy90ZWFtX2Jhc2ljX3Rlc3QucHkgJHtEfSR7UFRFU1RfUEFUSH0vCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0aW55eG1sMi9saWJ0aW55eG1sMl83LjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRpbnl4bWwyL2xpYnRpbnl4bWwyXzcuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTE5N2E5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRpbnl4bWwyL2xpYnRpbnl4bWwyXzcuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJUaW55WE1MLTIgaXMgYSBzaW1wbGUsIHNtYWxsLCBlZmZpY2llbnQsIEMrKyBYTUwgcGFyc2VyIHRoYXQgY2FuIGJlIGVhc2lseSBpbnRlZ3JhdGluZyBpbnRvIG90aGVyIHByb2dyYW1zIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ncmlubmluZ2xpemFyZC5jb20vdGlueXhtbDIvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJabGliIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTEzNTYyNGVlZjAzZTFmMTEwMWI5YmE5YWM5YjVmZmZkIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGVldGhvbWFzb24vdGlueXhtbDIuZ2l0IgotCi1TUkNSRVYgPSAiOWM3NDBlOGQyMzQxYmQ0NmRiZThlODcwNTNjZGI0ZDkzMTk3MTk2NyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBjbWFrZQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRpbnl4bWwyL2xpYnRpbnl4bWwyXzguMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGlueXhtbDIvbGlidGlueXhtbDJfOC4wLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI0OTFjZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRpbnl4bWwyL2xpYnRpbnl4bWwyXzguMC4wLmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiVGlueVhNTC0yIGlzIGEgc2ltcGxlLCBzbWFsbCwgZWZmaWNpZW50LCBDKysgWE1MIHBhcnNlciB0aGF0IGNhbiBiZSBlYXNpbHkgaW50ZWdyYXRpbmcgaW50byBvdGhlciBwcm9ncmFtcyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3Jpbm5pbmdsaXphcmQuY29tL3Rpbnl4bWwyLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiWmxpYiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0xMzU2MjRlZWYwM2UxZjExMDFiOWJhOWFjOWI1ZmZmZCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xlZXRob21hc29uL3Rpbnl4bWwyLmdpdCIKKworU1JDUkVWID0gImJmMTUyMzNhZDg4MzkwNDYxZjZhYjBkYmNmMDQ2Y2NlNjQzYzVmY2IiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saW8tdXRpbHMvbGlvLXV0aWxzXzQuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpby11dGlscy9saW8tdXRpbHNfNC4xLmJiCmluZGV4IGVhNTRlNzUuLjBmYjRhNmUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpby11dGlscy9saW8tdXRpbHNfNC4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpby11dGlscy9saW8tdXRpbHNfNC4xLmJiCkBAIC0xMiw3ICsxMiw3IEBACiBTUkNSRVYgPSAiMGFjOTA5MWMxZmY3YTUyZDU0MzVhNGY0NDQ5ZTgyNjM3MTQyZTA2ZSIKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWluaGVyaXQgZGlzdHV0aWxzCitpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJCQkZJTEVfQ09MTEVDVElPTlMiLCAibWV0YS1weXRob24yIiwgImRpc3R1dGlscyIsICIiLCBkKX0KIAogRVhUUkFfT0VNQUtFICs9ICJERVNURElSPSR7RH0iCiAKQEAgLTY0LDMgKzY0LDEwIEBACiAjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xODQ3MTIvCiAjIHB5dGhvbi1uYXRpdmUvcHl0aG9uOiBjYW4ndCBvcGVuIGZpbGUgJ3NldHVwLnB5JzogW0Vycm5vIDJdIE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKIENMRUFOQlJPS0VOID0gIjEiCisKK3B5dGhvbigpIHsKKyAgICBpZiAnbWV0YS1weXRob24yJyBub3QgaW4gZC5nZXRWYXIoJ0JCRklMRV9DT0xMRUNUSU9OUycpLnNwbGl0KCk6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoJ1JlcXVpcmVzIG1ldGEtcHl0aG9uMiB0byBiZSBwcmVzZW50LicpCit9CisKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG9nNGNwcC9sb2c0Y3BwXzEuMS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG9nNGNwcC9sb2c0Y3BwXzEuMS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWI5NDQ2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xvZzRjcHAvbG9nNGNwcF8xLjEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkEgbGlicmFyeSBvZiBDKysgY2xhc3NlcyBmb3IgZmxleGlibGUgbG9nZ2luZyB0byBmaWxlcywgc3lzbG9nLCBJRFNBIGFuZCBvdGhlciBkZXN0aW5hdGlvbnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9sb2c0Y3BwLyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCIKLQotUFJDID0gInJjNSIKLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvJHtCUE59LyR7QlB9JHtQUkN9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtcGMucGF0Y2g7c3RyaXBsZXZlbD0yIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNThiNDU5MWEyZjNlN2VmM2Q1ZTNlN2NmYjNhODFhNjIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTYxMWQ5OWEyMGFmNjY3NmM2MDIxOTc2Mjc3MWMwYmZhYzkwZjQ4NzliYmRlNzAwMzhlY2U3NTMzOGI1ODhlYyIKLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgLS1lbmFibGUtZG94eWdlbj1ubyBcCi0gICAgLS1lbmFibGUtZG90PW5vIFwKLSAgICAtLWVuYWJsZS1odG1sLWRvY3M9bm8gXAotICAgIC0tZW5hYmxlLWxhdGV4LWRvY3M9bm8gXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG9nNGNwcC9sb2c0Y3BwXzEuMS4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG9nNGNwcC9sb2c0Y3BwXzEuMS4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2Zjk0MDQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sb2c0Y3BwL2xvZzRjcHBfMS4xLjMuYmIKQEAgLTAsMCArMSwyMSBAQAorREVTQ1JJUFRJT04gPSAiQSBsaWJyYXJ5IG9mIEMrKyBjbGFzc2VzIGZvciBmbGV4aWJsZSBsb2dnaW5nIHRvIGZpbGVzLCBzeXNsb2csIElEU0EgYW5kIG90aGVyIGRlc3RpbmF0aW9ucy4iCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xvZzRjcHAvIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0LyR7QlBOfS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZml4LXBjLnBhdGNoO3N0cmlwbGV2ZWw9MiBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImI5ZTJjZWU5MzJkYTk4NzIxMmYyYzc0Yjc2N2I0ZDhiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJjYmJlYTU1YTVkNjg5NWM5ZjAxMTZhOWE5Y2UzYWZiODZkZjM4M2NkMDVjOWQ2YzFhNDIzOGU1ZTVjOGY1MWQiCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiXAorICAgIC0tZW5hYmxlLWRveHlnZW49bm8gXAorICAgIC0tZW5hYmxlLWRvdD1ubyBcCisgICAgLS1lbmFibGUtaHRtbC1kb2NzPW5vIFwKKyAgICAtLWVuYWJsZS1sYXRleC1kb2NzPW5vIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21jZWxvZy9tY2UtdGVzdC8wMDAxLWdjb3ZfbWVyZ2UucHktc2Nvdl9tZXJnZS5weS1zd2l0Y2gtdG8tcHl0aG9uMy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21jZWxvZy9tY2UtdGVzdC8wMDAxLWdjb3ZfbWVyZ2UucHktc2Nvdl9tZXJnZS5weS1zd2l0Y2gtdG8tcHl0aG9uMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjliZmMxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbWNlbG9nL21jZS10ZXN0LzAwMDEtZ2Nvdl9tZXJnZS5weS1zY292X21lcmdlLnB5LXN3aXRjaC10by1weXRob24zLnBhdGNoCkBAIC0wLDAgKzEsMTEwIEBACitGcm9tIDQzMDk4MjM3NmE1NDRiYmNjYWVmNTAwNmZhYjk0YmJjMmYxZDE3MTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaW5nbGkgWXUgPG1pbmdsaS55dUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAxMyBBcHIgMjAyMCAwNzoxMjo0NCArMDAwMAorU3ViamVjdDogW1BBVENIXSBnY292X21lcmdlLnB5L3Njb3ZfbWVyZ2UucHk6IHN3aXRjaCB0byBweXRob24zCisKK01ha2UgZ2Nvdl9tZXJnZS5weSBhbmQgc2Nvdl9tZXJnZS5weSBwb3J0IHRvIHB5dGhvbjMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPG1pbmdsaS55dUB3aW5kcml2ZXIuY29tPgorLS0tCisgdG9vbHMvc2NyaXB0cy9nY292X21lcmdlLnB5IHwgMTIgKysrKysrLS0tLS0tCisgdG9vbHMvc2NyaXB0cy9zY292X21lcmdlLnB5IHwgMTIgKysrKysrLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rvb2xzL3NjcmlwdHMvZ2Nvdl9tZXJnZS5weSBiL3Rvb2xzL3NjcmlwdHMvZ2Nvdl9tZXJnZS5weQoraW5kZXggMGFjOWJlZC4uOWYxY2I4YyAxMDA2NDQKKy0tLSBhL3Rvb2xzL3NjcmlwdHMvZ2Nvdl9tZXJnZS5weQorKysrIGIvdG9vbHMvc2NyaXB0cy9nY292X21lcmdlLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIworICMgTWVyZ2UgZ2NvdiBncmFwaCBmcm9tIHNldmVyYWwgdGVzdCBjYXNlcy4gVGhpcyBjYW4gYmUgdXNlZCB0byBjaGVjaworICMgdGhlIGNvdmVyYWdlIG9mIHNldmVyYWwgdGVzdCBjYXNlcy4KK0BAIC0xMSw3ICsxMSw3IEBACisgaW1wb3J0IHN5cworIAorIGRlZiBkaWUoc3RyKToKKy0gICAgcHJpbnQgc3RyCisrICAgIHByaW50KHN0cikKKyAgICAgc3lzLmV4aXQoLTEpCisgCisgZGVmIGRpZV9vbihjb25kLCBzdHIpOgorQEAgLTU1LDExICs1NSwxMSBAQCBkZWYgbWVyZ2UoZ2NsczEsIGdjbHMyKToKKyAgICAgICAgIGdjbDEubWVyZ2UoZ2NsMikKKyAKKyBkZWYgZ2Nvdl9tZXJnZShmbnMsIG9mKToKKy0gICAgZiA9IGZpbGUoZm5zWzBdKQorKyAgICBmID0gb3BlbihmbnNbMF0pCisgICAgIGdjbHNfYmFzZSA9IHBhcnNlKGYpCisgCisgICAgIGZvciBmbiBpbiBmbnNbMTpdOgorLSAgICAgICAgZiA9IGZpbGUoZm4pCisrICAgICAgICBmID0gb3BlbihmbikKKyAgICAgICAgIGdjbHMgPSBwYXJzZShmKQorICAgICAgICAgbWVyZ2UoZ2Nsc19iYXNlLCBnY2xzKQorIAorQEAgLTY3LDEwICs2NywxMCBAQCBkZWYgZ2Nvdl9tZXJnZShmbnMsIG9mKToKKyAgICAgICAgIGdjbC53cml0ZShvZikKKyAKKyBkZWYgdXNhZ2UoKToKKy0gICAgcHJpbnQgJ1VzYWdlOiAlcyA8Z2NvdiBncmFwaCBmaWxlcz4nICUgKHN5cy5hcmd2WzBdKQorKyAgICBwcmludCgnVXNhZ2U6ICVzIDxnY292IGdyYXBoIGZpbGVzPicgJSAoc3lzLmFyZ3ZbMF0pKQorIAorIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgIGlmIGxlbihzeXMuYXJndikgPD0gMToKKyAgICAgICAgIHVzYWdlKCkKKy0gICAgICAgIGV4aXQgLTEKKysgICAgICAgIHN5cy5leGl0KC0xKQorICAgICBnY292X21lcmdlKHN5cy5hcmd2WzE6XSwgc3lzLnN0ZG91dCkKK2RpZmYgLS1naXQgYS90b29scy9zY3JpcHRzL3Njb3ZfbWVyZ2UucHkgYi90b29scy9zY3JpcHRzL3Njb3ZfbWVyZ2UucHkKK2luZGV4IGY4M2I5MjIuLmJiY2Y3NjAgMTAwNjQ0CistLS0gYS90b29scy9zY3JpcHRzL3Njb3ZfbWVyZ2UucHkKKysrKyBiL3Rvb2xzL3NjcmlwdHMvc2Nvdl9tZXJnZS5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMKKyAjIE1lcmdlIG1jZSBzZXJ2ZXJpdHkgY292ZXJhZ2UgZmlsZSBmcm9tIHNldmVyYWwgdGVzdCBjYXNlcy4gVGhpcyBjYW4KKyAjIGJlIHVzZWQgdG8gY2hlY2sgdGhlIGNvdmVyYWdlIG9mIHNldmVyYWwgdGVzdCBjYXNlcy4KK0BAIC0xMSw3ICsxMSw3IEBACisgaW1wb3J0IHN5cworIAorIGRlZiBkaWUoc3RyKToKKy0gICAgcHJpbnQgc3RyCisrICAgIHByaW50KHN0cikKKyAgICAgc3lzLmV4aXQoLTEpCisgCisgZGVmIGRpZV9vbihjb25kLCBzdHIpOgorQEAgLTQ3LDExICs0NywxMSBAQCBkZWYgbWVyZ2UoZ2NsczEsIGdjbHMyKToKKyAgICAgICAgIGdjbDEubWVyZ2UoZ2NsMikKKyAKKyBkZWYgc2Nvdl9tZXJnZShmbnMsIG9mKToKKy0gICAgZiA9IGZpbGUoZm5zWzBdKQorKyAgICBmID0gb3BlbihmbnNbMF0pCisgICAgIGdjbHNfYmFzZSA9IHBhcnNlKGYpCisgCisgICAgIGZvciBmbiBpbiBmbnNbMTpdOgorLSAgICAgICAgZiA9IGZpbGUoZm4pCisrICAgICAgICBmID0gb3BlbihmbikKKyAgICAgICAgIGdjbHMgPSBwYXJzZShmKQorICAgICAgICAgbWVyZ2UoZ2Nsc19iYXNlLCBnY2xzKQorIAorQEAgLTU5LDEwICs1OSwxMCBAQCBkZWYgc2Nvdl9tZXJnZShmbnMsIG9mKToKKyAgICAgICAgIGdjbC53cml0ZShvZikKKyAKKyBkZWYgdXNhZ2UoKToKKy0gICAgcHJpbnQgJ1VzYWdlOiAlcyA8c2V2ZXJpdGllcyBjb3ZlcmFnZSBmaWxlcz4nICUgKHN5cy5hcmd2WzBdKQorKyAgICBwcmludCgnVXNhZ2U6ICVzIDxzZXZlcml0aWVzIGNvdmVyYWdlIGZpbGVzPicgJSAoc3lzLmFyZ3ZbMF0pKQorIAorIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgIGlmIGxlbihzeXMuYXJndikgPD0gMToKKyAgICAgICAgIHVzYWdlKCkKKy0gICAgICAgIGV4aXQgLTEKKysgICAgICAgIHN5cy5leGl0KC0xKQorICAgICBzY292X21lcmdlKHN5cy5hcmd2WzE6XSwgc3lzLnN0ZG91dCkKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21jZWxvZy9tY2UtdGVzdF9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tY2Vsb2cvbWNlLXRlc3RfZ2l0LmJiCmluZGV4IDAwN2IzOTQuLjM1ZmI5NDQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21jZWxvZy9tY2UtdGVzdF9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbWNlbG9nL21jZS10ZXN0X2dpdC5iYgpAQCAtMTIsNiArMTIsNyBAQAogCiBTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vdXRpbHMvY3B1L21jZS9tY2UtdGVzdC5naXQ7cHJvdG9jb2w9Z2l0IFwKICAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLXJlbW92ZS1sZGZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZ2Nvdl9tZXJnZS5weS1zY292X21lcmdlLnB5LXN3aXRjaC10by1weXRob24zLnBhdGNoIFwKICAgICAgICAgICAiCiBTUkNSRVYgPSAiNzY0M2JhZjZjMzkxOWIzZDcyN2U2YmE2YzJlNTQ1ZGM2YTY1MzMwNyIKIFBWID0gIjIwMTkwOTE3K2dpdCR7U1JDUFZ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbWNlbG9nL21jZWxvZ18xNjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tY2Vsb2cvbWNlbG9nXzE2Ni5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I0ZWExZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tY2Vsb2cvbWNlbG9nXzE2Ni5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAibWNlbG9nIGRhZW1vbiBhY2NvdW50cyBtZW1vcnkgYW5kIHNvbWUgb3RoZXIgZXJyb3JzIGluIHZhcmlvdXMgd2F5cy4iCi1ERVNDUklQVElPTiA9ICJtY2Vsb2cgaXMgcmVxdWlyZWQgYnkgYm90aCAzMmJpdCB4ODYgTGludXgga2VybmVscyAoc2luY2UgMi42LjMwKSBcCi1hbmQgNjRiaXQgTGludXgga2VybmVscyAoc2luY2UgZWFybHkgMi42IGtlcm5lbCByZWxlYXNlcykgdG8gbG9nIG1hY2hpbmUgY2hlY2tzIFwKLWFuZCBzaG91bGQgcnVuIG9uIGFsbCBMaW51eCBzeXN0ZW1zIHRoYXQgbmVlZCBlcnJvciBoYW5kbGluZy4iCi1IT01FUEFHRSA9ICJodHRwOi8vbWNlbG9nLm9yZy8iCi1TRUNUSU9OID0gIlN5c3RlbSBFbnZpcm9ubWVudC9CYXNlIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vdXRpbHMvY3B1L21jZS9tY2Vsb2cuZ2l0O3Byb3RvY29sPWh0dHA7IFwKLSAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKLQotU1JDUkVWID0gImVlOTBmZjIwY2U2YTRkNWUwMTZhYTI0OWNlOGIzN2YzNTlmOWZkYTQiCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUubWQ7bWQ1PTc0YmI0N2I5YTY4ODUwY2IzOTg2NjVjZjc4YjMxZGU2IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcHRlc3QKLQotQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjQuKnxpLjg2LiopLWxpbnV4JwotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uaG91cmx5Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vbWNlbG9nLmNyb24gJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5ob3VybHkvCi0gICAgc2VkIC1pICdzL2Jhc2gvc2gvJyAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmhvdXJseS9tY2Vsb2cuY3JvbgotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0KLSAgICBjcCAtciAke1N9L3Rlc3RzICR7U30vaW5wdXQgJHtEfSR7UFRFU1RfUEFUSH0KLSAgICBzZWQgLWkgJ3MjLi4vLi4vbWNlbG9nI21jZWxvZyMnICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3Rlc3QKLX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgYmFzaCBtY2UtaW5qZWN0IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbWNlbG9nL21jZWxvZ18xNjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tY2Vsb2cvbWNlbG9nXzE2OC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmVmNmVhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbWNlbG9nL21jZWxvZ18xNjguYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJtY2Vsb2cgZGFlbW9uIGFjY291bnRzIG1lbW9yeSBhbmQgc29tZSBvdGhlciBlcnJvcnMgaW4gdmFyaW91cyB3YXlzLiIKK0RFU0NSSVBUSU9OID0gIm1jZWxvZyBpcyByZXF1aXJlZCBieSBib3RoIDMyYml0IHg4NiBMaW51eCBrZXJuZWxzIChzaW5jZSAyLjYuMzApIFwKK2FuZCA2NGJpdCBMaW51eCBrZXJuZWxzIChzaW5jZSBlYXJseSAyLjYga2VybmVsIHJlbGVhc2VzKSB0byBsb2cgbWFjaGluZSBjaGVja3MgXAorYW5kIHNob3VsZCBydW4gb24gYWxsIExpbnV4IHN5c3RlbXMgdGhhdCBuZWVkIGVycm9yIGhhbmRsaW5nLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9tY2Vsb2cub3JnLyIKK1NFQ1RJT04gPSAiU3lzdGVtIEVudmlyb25tZW50L0Jhc2UiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS91dGlscy9jcHUvbWNlL21jZWxvZy5naXQ7cHJvdG9jb2w9aHR0cDsgXAorICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitTUkNSRVYgPSAiMDc4ZDU5M2I4YjBjN2Q0NGFmZGQ0MzlhYWNmYWQ2NjgyOTEzMDM4ZiIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5tZDttZDU9NzRiYjQ3YjlhNjg4NTBjYjM5ODY2NWNmNzhiMzFkZTYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAorCitDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NC4qfGkuODYuKiktbGludXgnCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5ob3VybHkKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9tY2Vsb2cuY3JvbiAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmhvdXJseS8KKyAgICBzZWQgLWkgJ3MvYmFzaC9zaC8nICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uaG91cmx5L21jZWxvZy5jcm9uCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfQorICAgIGNwIC1yICR7U30vdGVzdHMgJHtTfS9pbnB1dCAke0R9JHtQVEVTVF9QQVRIfQorICAgIHNlZCAtaSAncyMuLi8uLi9tY2Vsb2cjbWNlbG9nIycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdAorfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBiYXNoIG1jZS1pbmplY3QiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25pdC9tb25pdC9tb25pdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbml0L21vbml0L21vbml0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NDcwNGUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25pdC9tb25pdC9tb25pdApAQCAtMCwwICsxLDQyIEBACisjISAvYmluL3NoIAorIworIyBUaGlzIGlzIGFuIGluaXQgc2NyaXB0IGZvciBvcGVuZW1iZWRkZWQKKyMgQ29weSBpdCB0byAvZXRjL2luaXQuZC9tb25pdCBhbmQgdHlwZQorIyA+IHVwZGF0ZS1yYy5kIG1vbml0IGRlZmF1bHRzIDg5CisjCittb25pdD0vdXNyL2Jpbi9tb25pdAorcGlkZmlsZT0vdmFyL3J1bi9tb25pdC5waWQKK21vbml0X2FyZ3M9Ii1jIC9ldGMvbW9uaXRyYyIKKwordGVzdCAteCAiJG1vbml0IiB8fCBleGl0IDAKKworY2FzZSAiJDEiIGluCisgIHN0YXJ0KQorICAgIGVjaG8gLW4gIlN0YXJ0aW5nIE1vbml0IgorICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1xdWlldCAtLWV4ZWMgJG1vbml0IC0tICRtb25pdF9hcmdzCisgICAgUkVUVkFMPSQ/CisgICAgZWNobyAiLiIKKyAgICA7OworICBzdG9wKQorICAgIGVjaG8gLW4gIlN0b3BwaW5nIE1vbml0IgorICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tcGlkZmlsZSAkcGlkZmlsZQorICAgIFJFVFZBTD0kPworICAgIGVjaG8gIi4iCisgICAgOzsKKyAgcmVzdGFydCkKKyAgICAkMCBzdG9wCisgICAgJDAgc3RhcnQKKyAgICBSRVRWQUw9JD8KKyAgICA7OworICBzdGF0dXMpCisgICAgJG1vbml0ICRtb25pdF9hcmdzIHN0YXR1cworICAgIFJFVFZBTD0kPworICAgIGVjaG8gIi4iCisgICAgOzsKKyAgKikKKyAgICBlY2hvICJVc2FnZTogJDAge3N0YXJ0fHN0b3B8cmVzdGFydHxzdGF0dXN9IgorICAgIGV4aXQgMQorZXNhYworCitleGl0ICRSRVRWQUwKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uaXQvbW9uaXQvbW9uaXRyYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbml0L21vbml0L21vbml0cmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhkNmE0MwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbml0L21vbml0L21vbml0cmMKQEAgLTAsMCArMSw0NCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMgTW9uaXQgY29udHJvbCBmaWxlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyMgQ29tbWVudHMgYmVnaW4gd2l0aCBhICcjJyBhbmQgZXh0ZW5kIHRocm91Z2ggdGhlIGVuZCBvZiB0aGUgbGluZS4gS2V5d29yZHMKKyMjIGFyZSBjYXNlIGluc2Vuc2l0aXZlLiBBbGwgcGF0aCdzIE1VU1QgQkUgRlVMTFkgUVVBTElGSUVELCBzdGFydGluZyB3aXRoICcvJy4KKyMjCisjIyBCZWxvdyB5b3Ugd2lsbCBmaW5kIGV4YW1wbGVzIG9mIHNvbWUgZnJlcXVlbnRseSB1c2VkIHN0YXRlbWVudHMuIEZvcgorIyMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbnRyb2wgZmlsZSBhbmQgYSBjb21wbGV0ZSBsaXN0IG9mIHN0YXRlbWVudHMgYW5kCisjIyBvcHRpb25zLCBwbGVhc2UgaGF2ZSBhIGxvb2sgaW4gdGhlIE1vbml0IG1hbnVhbC4KKyMjCisjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMgR2xvYmFsIHNlY3Rpb24KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjCisjIyBTdGFydCBNb25pdCBpbiB0aGUgYmFja2dyb3VuZCAocnVuIGFzIGEgZGFlbW9uKToKKyMKK3NldCBkYWVtb24gIDMwICAgICAgICAgICAgICAjIGNoZWNrIHNlcnZpY2VzIGF0IDMwIHNlY29uZHMgaW50ZXJ2YWxzCisjICAgd2l0aCBzdGFydCBkZWxheSAyNDAgICAgIyBvcHRpb25hbDogZGVsYXkgdGhlIGZpcnN0IGNoZWNrIGJ5IDQtbWludXRlcyAoYnkKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGRlZmF1bHQgTW9uaXQgY2hlY2sgaW1tZWRpYXRlbHkgYWZ0ZXIgTW9uaXQgc3RhcnQpCisjCisjCisjIyBTZXQgc3lzbG9nIGxvZ2dpbmcuIElmIHlvdSB3YW50IHRvIGxvZyB0byBhIHN0YW5kYWxvbmUgbG9nIGZpbGUgaW5zdGVhZCwKKyMjIHNwZWNpZnkgdGhlIGZ1bGwgcGF0aCB0byB0aGUgbG9nIGZpbGUKKyMKK3NldCBsb2cgc3lzbG9nCisKK3NldCBodHRwZCBwb3J0IDI4MTIKKyAgICBhbGxvdyAwLjAuMC4wLzAgICAgICAgICMgYWxsb3cgbG9jYWxob3N0IHRvIGNvbm5lY3QgdG8gdGhlIHNlcnZlciBhbmQKKyAgICBhbGxvdyBhZG1pbjptb25pdCAgICAgICMgcmVxdWlyZSB1c2VyICdhZG1pbicgd2l0aCBwYXNzd29yZCAnbW9uaXQnCisgICAgI3dpdGggc3NsIHsgICAgICAgICAgICAjIGVuYWJsZSBTU0wvVExTIGFuZCBzZXQgcGF0aCB0byBzZXJ2ZXIgY2VydGlmaWNhdGUKKyAgICAjICAgIHBlbWZpbGU6IC9ldGMvc3NsL2NlcnRzL21vbml0LnBlbQorICAgICN9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIEluY2x1ZGVzCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyMgSXQgaXMgcG9zc2libGUgdG8gaW5jbHVkZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gcGFydHMgZnJvbSBvdGhlciBmaWxlcyBvcgorIyMgZGlyZWN0b3JpZXMuCisjCitpbmNsdWRlIC9ldGMvbW9uaXQuZC8qCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbml0L21vbml0XzUuMjYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbml0L21vbml0XzUuMjYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTU0NjgyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uaXQvbW9uaXRfNS4yNi4wLmJiCkBAIC0wLDAgKzEsNTMgQEAKK0RFU0NSSVBUSU9OID0gIk1vbml0IGlzIGEgZnJlZSBvcGVuIHNvdXJjZSB1dGlsaXR5IGZvciBtYW5hZ2luZyBhbmQgbW9uaXRvcmluZywgXAorcHJvY2Vzc2VzLCBwcm9ncmFtcywgZmlsZXMsIGRpcmVjdG9yaWVzIGFuZCBmaWxlc3lzdGVtcyBvbiBhIFVOSVggc3lzdGVtLiBcCitNb25pdCBjb25kdWN0cyBhdXRvbWF0aWMgbWFpbnRlbmFuY2UgYW5kIHJlcGFpciBhbmQgY2FuIGV4ZWN1dGUgbWVhbmluZ2Z1bCBcCitjYXVzYWwgYWN0aW9ucyBpbiBlcnJvciBzaXR1YXRpb25zLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL21tb25pdC5jb20vbW9uaXQvIgorCitMSUNFTlNFID0gIkFHUEwtMy4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWExMTZhN2RlZmFmMGU5M2IzYmI3M2IyYTM0YTNmNTEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlibW9uaXQvQ09QWUlORzttZDU9MjQwNWYxYzU5ZWQxYmYzNzE0Y2ViZGI0MDE2MmNlOTIiCisKK1NSQ19VUkkgPSAiIFwKKwlodHRwczovL21tb25pdC5jb20vbW9uaXQvZGlzdC9tb25pdC0ke1BWfS50YXIuZ3ogXAorCWZpbGU6Ly9tb25pdCBcCisJZmlsZTovL21vbml0cmMgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOWY3ZGM2NWU5MDJjMTAzZTRjNTg5MTM1NDk5NGMzZGYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODdmYzQ1NjhhM2FmOWEyYmU4OTA0MGVmYjE2OWUzYTJlNDdiMjYyZjk5ZTc4ZDVkZGRlOTlkZDg5ZjAyZjNjMiIKKworREVQRU5EUyA9ICJ6bGliIGJpc29uLW5hdGl2ZSBsaWJuc2wyIGZsZXgtbmF0aXZlIG9wZW5zc2wgdmlydHVhbC9jcnlwdCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHN5c3RlbWQgdXBkYXRlLXJjLmQKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICItLXdpdGgtcGFtLC0td2l0aG91dC1wYW0sbGlicGFtIgorCitFWFRSQV9PRUNPTkYgPSAiXAorICAgIGxpYm1vbml0X2N2X3NldGptcF9hdmFpbGFibGU9bm8gXAorICAgIGxpYm1vbml0X2N2X3ZzbnByaW50Zl9jOTlfY29uZm9ybWFudD1ubyBcCisgICAgLS13aXRoLXNzbC1saWItZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgICAtLXdpdGgtc3NsLWluY2wtZGlyPSR7U1RBR0lOR19JTkNESVJ9IFwKKyIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm1vbml0LnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImVuYWJsZSIKKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfSIKK0lOSVRTQ1JJUFRfTkFNRV8ke1BOfSA9ICJtb25pdCIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59ID0gImRlZmF1bHRzIDg5IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKworICAgICMgQ29uZmlndXJhdGlvbiBmaWxlCisgICAgaW5zdGFsbCAtRG0gMDYwMCAke1dPUktESVJ9L21vbml0cmMgJHtEfSR7c3lzY29uZmRpcn0vbW9uaXRyYworCisgICAgIyBTeXN0ZW1ECisgICAgaW5zdGFsbCAtRG0gMDY0NCAke1N9L3N5c3RlbS9zdGFydHVwL21vbml0LnNlcnZpY2UuaW4gJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbW9uaXQuc2VydmljZQorICAgIHNlZCAtaSAtZSAncyxAcHJlZml4QCwke2V4ZWNfcHJlZml4fSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tb25pdC5zZXJ2aWNlCisKKyAgICAjIFN5c1YKKyAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vbW9uaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL21vbml0Cit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uYW5vL25hbm9fNC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmFuby9uYW5vXzQuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgxMjFiZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uYW5vL25hbm9fNC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiR05VIG5hbm8gKE5hbm8ncyBBTk90aGVyIGVkaXRvciwgb3IgXAotTm90IEFOT3RoZXIgZWRpdG9yKSBpcyBhbiBlbmhhbmNlZCBjbG9uZSBvZiB0aGUgXAotUGljbyB0ZXh0IGVkaXRvci4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5hbm8tZWRpdG9yLm9yZy8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjI3ZGVmZTFlOTZjMmUxZWNkNGUwYzliZTg5Njc5NDkiCi0KLURFUEVORFMgPSAibmN1cnNlcyBmaWxlIgotUkRFUEVORFNfJHtQTn0gPSAibmN1cnNlcy10ZXJtaW5mby1iYXNlIgotCi1QVl9NQUpPUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfSIKLQotU1JDX1VSSSA9ICJodHRwczovL25hbm8tZWRpdG9yLm9yZy9kaXN0L3Yke1BWX01BSk9SfS9uYW5vLSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5NjUwZGQzZWIwYWRiYWI2YWFhNzQ4YTZmMTM5OGNjYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYWYyMjJlMDM1NDg0OGZmYWEzYWYzMWI1Y2QwYTc3OTE3ZTljYjc3NDJjZDA3M2Q3NjJmM2MzMmYwZjU4MmM3IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHW3RpbnldID0gIi0tZW5hYmxlLXRpbnksIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmFuby9uYW5vXzQuOS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmFuby9uYW5vXzQuOS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiMjM2YmEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uYW5vL25hbm9fNC45LjIuYmIKQEAgLTAsMCArMSwyMiBAQAorREVTQ1JJUFRJT04gPSAiR05VIG5hbm8gKE5hbm8ncyBBTk90aGVyIGVkaXRvciwgb3IgXAorTm90IEFOT3RoZXIgZWRpdG9yKSBpcyBhbiBlbmhhbmNlZCBjbG9uZSBvZiB0aGUgXAorUGljbyB0ZXh0IGVkaXRvci4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5hbm8tZWRpdG9yLm9yZy8iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjI3ZGVmZTFlOTZjMmUxZWNkNGUwYzliZTg5Njc5NDkiCisKK0RFUEVORFMgPSAibmN1cnNlcyBmaWxlIgorUkRFUEVORFNfJHtQTn0gPSAibmN1cnNlcy10ZXJtaW5mby1iYXNlIgorCitQVl9NQUpPUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfSIKKworU1JDX1VSSSA9ICJodHRwczovL25hbm8tZWRpdG9yLm9yZy9kaXN0L3Yke1BWX01BSk9SfS9uYW5vLSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxMGRmMDEwMGViZjRhYTdiYjQ4MDY0MjhjMTE3NTFlYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkOGEyNWVlYTk0MmVjZWUyZDU3YjhlMDM3ZWI0YjI4ZjAzMGY4MThiNzg3NzNiOGZjYjk5NGVkNTgzNWQyZWY2IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9mdHAuZ251Lm9yZy9nbnUvbmFubyIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcKKworUEFDS0FHRUNPTkZJR1t0aW55XSA9ICItLWVuYWJsZS10aW55LCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci8wMDAxLW1kLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwMS1tZC1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYjliZjYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwMS1tZC1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gMTQ3ZjNjMmFjYmQ5NmQ0NDAyNWNlYzExODAwZGVkMDI4MjMyNzc2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDE4IFNlcCAyMDE3IDE3OjIyOjQzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIG1kOiBGaXggYnVpbGQgd2l0aCBtdXNsCisKK1RoZSBNSVBTIHNwZWNpZmljIGhlYWRlciA8c2dpZGVmcy5oPiBpcyBub3QgcHJvdmlkZWQgYnkgbXVzbAorbGludXgga2VybmVsIGhlYWRlcnMgcHJvdmlkZSA8YXNtL3NnaWRlZnMuaD4gd2hpY2ggaGFzIHNhbWUgZGVmaW5pdGlvbnMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBwci9pbmNsdWRlL21kL19saW51eC5jZmcgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKKy0tLSBhL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZworKysrIGIvcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnCitAQCAtNDk5LDcgKzQ5OSw3IEBACisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKyAKKyAvKiBGb3IgX0FCSTY0ICovCistI2luY2x1ZGUgPHNnaWRlZnMuaD4KKysjaW5jbHVkZSA8YXNtL3NnaWRlZnMuaD4KKyAKKyAjaWZkZWYgX19NSVBTRUJfXworICNkZWZpbmUgSVNfQklHX0VORElBTiAxCitAQCAtNTExLDcgKzUxMSw3IEBACisgI2Vycm9yICJVbmtub3duIE1JUFMgZW5kaWFubmVzcy4iCisgI2VuZGlmCisgCistI2lmIF9NSVBTX1NJTSA9PSBfQUJJNjQKKysjaWYgX01JUFNfU0lNID09IF9NSVBTX1NJTV9BQkk2NAorIAorICNkZWZpbmUgSVNfNjQKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDItQWRkLW5pb3MyLXN1cHBvcnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwMi1BZGQtbmlvczItc3VwcG9ydC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwMi1BZGQtbmlvczItc3VwcG9ydC5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDItQWRkLW5pb3MyLXN1cHBvcnQucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL01ha2VmaWxlLmluLXJlbW92ZS1fQlVJTERfU1RSSU5HLWFuZC1fQlVJTERfVElNRS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9NYWtlZmlsZS5pbi1yZW1vdmUtX0JVSUxEX1NUUklORy1hbmQtX0JVSUxEX1RJTUUucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL01ha2VmaWxlLmluLXJlbW92ZS1fQlVJTERfU1RSSU5HLWFuZC1fQlVJTERfVElNRS5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL01ha2VmaWxlLmluLXJlbW92ZS1fQlVJTERfU1RSSU5HLWFuZC1fQlVJTERfVElNRS5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvZml4LWJ1aWxkLW9uLXg4Nl82NC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9maXgtYnVpbGQtb24teDg2XzY0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9maXgtYnVpbGQtb24teDg2XzY0LnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvZml4LWJ1aWxkLW9uLXg4Nl82NC5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL25zcHIucGMuaW4gYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvbnNwci5wYy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjE1ZDE5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL25zcHIucGMuaW4KQEAgLTAsMCArMSwxMSBAQAorb3NfbGlicz0tbHB0aHJlYWQgLWxkbAorcHJlZml4PU9FUFJFRklYCitleGVjX3ByZWZpeD1PRUVYRUNQUkVGSVgKK2xpYmRpcj1PRUxJQkRJUgoraW5jbHVkZWRpcj1PRUlOQ0RJUgorCitOYW1lOiBOU1BSCitEZXNjcmlwdGlvbjogVGhlIE5ldHNjYXBlIFBvcnRhYmxlIFJ1bnRpbWUKK1ZlcnNpb246IE5TUFJWRVJTSU9OCitMaWJzOiAtTCR7bGliZGlyfSAtbHBsZHM0IC1scGxjNCAtbG5zcHI0IC1scHRocmVhZCAtbGRsCitDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9uc3ByCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvcmVtb3ZlLXJwYXRoLWZyb20tdGVzdHMucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvcmVtb3ZlLXNyY2Rpci1mcm9tLWNvbmZpZ3VyZS1pbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9yZW1vdmUtc3JjZGlyLWZyb20tY29uZmlndXJlLWluLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9yZW1vdmUtc3JjZGlyLWZyb20tY29uZmlndXJlLWluLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvcmVtb3ZlLXNyY2Rpci1mcm9tLWNvbmZpZ3VyZS1pbi5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4yNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGUyNmUxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMjUuYmIKQEAgLTAsMCArMSwxOTcgQEAKK1NVTU1BUlkgPSAiTmV0c2NhcGUgUG9ydGFibGUgUnVudGltZSBMaWJyYXJ5IgorSE9NRVBBR0UgPSAgImh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvbnNwci8iCitMSUNFTlNFID0gIkdQTC0yLjAgfCBNUEwtMi4wIHwgTEdQTC0yLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jb25maWd1cmUuaW47YmVnaW5saW5lPTM7ZW5kbGluZT02O21kNT05MGMyZmRlZTM4ZTQ1ZDYzMDJhYmNmZTQ3NWM4YjVjNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5pbjtiZWdpbmxpbmU9NDtlbmRsaW5lPTM4O21kNT1iZWRhMWRiYjk4YTUxNWY1NTdkM2U1OGVmMDZiY2E5OSIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCitTUkNfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL25zcHIvcmVsZWFzZXMvdiR7UFZ9L3NyYy9uc3ByLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtYnVpbGQtb24teDg2XzY0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS1zcmNkaXItZnJvbS1jb25maWd1cmUtaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtbmlvczItc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1kLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUuaW4tcmVtb3ZlLV9CVUlMRF9TVFJJTkctYW5kLV9CVUlMRF9USU1FLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25zcHIucGMuaW4gXAorIgorCitDQUNIRURfQ09ORklHVVJFVkFSU19hcHBlbmRfbGliYy1tdXNsID0gIiBDRkxBR1M9JyR7Q0ZMQUdTfSAtRF9QUl9QT0xMX0FWQUlMQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRF9QUl9IQVZFX09GRjY0X1QgLURfUFJfSU5FVDYgLURfUFJfSEFWRV9JTkVUX05UT1AgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLURfUFJfSEFWRV9HRVRIT1NUQllOQU1FMiAtRF9QUl9IQVZFX0dFVEFERFJJTkZPIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EX1BSX0lORVQ2X1BST0JFIC1ETk9fRExPUEVOX05VTEwnIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbnNwci9yZWxlYXNlcy8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJ2KD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKKworU1JDX1VSSVttZDVzdW1dID0gIjRjYTRkNzVhNDI0ZjMwZmNkYzc2NjI5NmJiMTAzZDE3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBiYzMwOWJlMjFmOTFkYTQ0NzRjNTZkZjkwNDE1MTAxYzdmMGM3YzdjYWIyOTQzY2Q5NDNjZDc4OTY5ODUyNTYiCisKK0NWRV9QUk9EVUNUID0gIm5ldHNjYXBlX3BvcnRhYmxlX3J1bnRpbWUiCisKK1MgPSAiJHtXT1JLRElSfS9uc3ByLSR7UFZ9L25zcHIiCisKK1JERVBFTkRTXyR7UE59LWRldiArPSAicGVybCIKK1RBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgorCitURVNUUyA9ICIgXAorICAgIGFjY2VwdCBcCisgICAgYWNjZXB0cmVhZCBcCisgICAgYWNjZXB0cmVhZGVtdSBcCisgICAgYWZmaW5pdHkgXAorICAgIGFsYXJtIFwKKyAgICBhbm9uZm0gXAorICAgIGF0b21pYyBcCisgICAgYXR0YWNoIFwKKyAgICBiaWdmaWxlIFwKKyAgICBjbGVhbnVwIFwKKyAgICBjbHRzcnYgIFwKKyAgICBjb25jdXIgXAorICAgIGN2YXIgXAorICAgIGN2YXIyIFwKKyAgICBkbGx0ZXN0IFwKKyAgICBkdG9hIFwKKyAgICBlcnJjb2RlcyBcCisgICAgZXhpdCBcCisgICAgZmRjYWNoIFwKKyAgICBmaWxlaW8gXAorICAgIGZvcmVpZ24gXAorICAgIGZvcm1hdHRtIFwKKyAgICBmc3luYyBcCisgICAgZ2V0aG9zdCBcCisgICAgZ2V0cHJvdG8gXAorICAgIGkybCBcCisgICAgaW5pdGNsayBcCisgICAgaW5ydmFsIFwKKyAgICBpbnN0cnVtdCBcCisgICAgaW50cmlvIFwKKyAgICBpbnRydXB0IFwKKyAgICBpb190aW1lb3V0IFwKKyAgICBpb2NvbnRociBcCisgICAgam9pbiBcCisgICAgam9pbmtrIFwKKyAgICBqb2lua3UgXAorICAgIGpvaW51ayBcCisgICAgam9pbnV1IFwKKyAgICBsYXllciBcCisgICAgbGF6eWluaXQgXAorICAgIGxpYmZpbGVuYW1lIFwKKyAgICBsbHRlc3QgXAorICAgIGxvY2sgXAorICAgIGxvY2tmaWxlIFwKKyAgICBsb2dmaWxlIFwKKyAgICBsb2dnZXIgXAorICAgIG1hbnlfY3YgXAorICAgIG11bHRpd2FpdCBcCisgICAgbmFtZXNobTEgXAorICAgIG5ibGF5ZXIgXAorICAgIG5vbmJsb2NrIFwKKyAgICBudGlvdG8gXAorICAgIG50b2ggXAorICAgIG9wXzJsb25nIFwKKyAgICBvcF9leGNsIFwKKyAgICBvcF9maWxuZiBcCisgICAgb3BfZmlsb2sgXAorICAgIG9wX25vZmlsIFwKKyAgICBwYXJlbnQgXAorICAgIHBhcnNldG0gXAorICAgIHBlZWsgXAorICAgIHBlcmYgXAorICAgIHBpcGVwaW5nIFwKKyAgICBwaXBlcGluZzIgXAorICAgIHBpcGVzZWxmIFwKKyAgICBwb2xsX25tIFwKKyAgICBwb2xsX3RvIFwKKyAgICBwb2xsYWJsZSBcCisgICAgcHJmdGVzdCBcCisgICAgcHJpbWJsb2sgXAorICAgIHByb3ZpZGVyIFwKKyAgICBwcnBvbGxtbCBcCisgICAgcmFuZmlsZSBcCisgICAgcmFuZHNlZWQgXAorICAgIHJlaW5pdCBcCisgICAgcndsb2NrdGVzdCBcCisgICAgc2VsX3NwZCBcCisgICAgc2VsY3RfZXIgXAorICAgIHNlbGN0X25tIFwKKyAgICBzZWxjdF90byBcCisgICAgc2VsaW50ciBcCisgICAgc2VtYSBcCisgICAgc2VtYWVyciBcCisgICAgc2VtYXBpbmcgXAorICAgIHNlbmR6bGYgXAorICAgIHNlcnZlcl90ZXN0IFwKKyAgICBzZXJ2cl9rayBcCisgICAgc2VydnJfdWsgXAorICAgIHNlcnZyX2t1IFwKKyAgICBzZXJ2cl91dSBcCisgICAgc2hvcnRfdGhyZWFkIFwKKyAgICBzaWdwaXBlIFwKKyAgICBzb2NrZXQgXAorICAgIHNvY2tvcHQgXAorICAgIHNvY2twaW5nIFwKKyAgICBzcHJpbnRmIFwKKyAgICBzdGFjayBcCisgICAgc3RkaW8gXAorICAgIHN0cjJhZGRyIFwKKyAgICBzdHJvZCBcCisgICAgc3dpdGNoIFwKKyAgICBzeXN0ZW0gXAorICAgIHRlc3RiaXQgXAorICAgIHRlc3RmaWxlIFwKKyAgICB0aHJlYWRzIFwKKyAgICB0aW1lbWFjIFwKKyAgICB0aW1ldGVzdCBcCisgICAgdHBkIFwKKyAgICB1ZHBzcnYgXAorICAgIHZlcmNoZWNrIFwKKyAgICB2ZXJzaW9uIFwKKyAgICB3cml0ZXYgXAorICAgIHhub3RpZnkgXAorICAgIHplcm9sZW4iCisKK2luaGVyaXQgYXV0b3Rvb2xzIG11bHRpbGliX3NjcmlwdAorCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWRldjoke2JpbmRpcn0vbnNwci1jb25maWciCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKKworIyBEbyBub3QgaW5zdGFsbCBuc3ByIGluIHVzci9pbmNsdWRlLCBidXQgaW4gdXNyL2luY2x1ZGUvbnNwciwgdGhlCisjIHByZWZlcnJlZCBwYXRoIHVwc3RyZWFtLgorRVhUUkFfT0VDT05GICs9ICItLWluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfS9uc3ByIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJb2VfcnVubWFrZSBDUk9TU19DT01QSUxFPTEgQ0ZMQUdTPSItRFhQX1VOSVggJHtCVUlMRF9DRkxBR1N9IiBMREZMQUdTPSIiIENDPSIke0JVSUxEX0NDfSIgLUMgY29uZmlnIGV4cG9ydAorfQorCitkb19jb21waWxlX2FwcGVuZCgpIHsKKwlvZV9ydW5tYWtlIC1DIHByL3Rlc3RzCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLUQgJHtXT1JLRElSfS9uc3ByLnBjLmluICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcHIucGMKKyAgICBzZWQgLWkgIFwKKyAgICAtZSAnczpOU1BSVkVSU0lPTjoke1BWfTpnJyBcCisgICAgLWUgJ3M6T0VQUkVGSVg6JHtwcmVmaXh9OmcnIFwKKyAgICAtZSAnczpPRUxJQkRJUjoke2xpYmRpcn06ZycgXAorICAgIC1lICdzOk9FSU5DRElSOiR7aW5jbHVkZWRpcn06ZycgXAorICAgIC1lICdzOk9FRVhFQ1BSRUZJWDoke2V4ZWNfcHJlZml4fTpnJyBcCisgICAgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNwci5wYworCisgICAgbWtkaXIgLXAgJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vcHIvdGVzdHMvcnVudGVzdHMucGwgJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vcHIvdGVzdHMvcnVudGVzdHMuc2ggJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCisgICAgY2QgJHtCfS9wci90ZXN0cworICAgIGluc3RhbGwgLW0gMDc1NSAke1RFU1RTfSAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKKworICAgICMgZGVsZXRlIGNvbXBpbGUtZXQucGwgYW5kIHBlcnIucHJvcGVydGllcyBmcm9tICR7YmluZGlyfSBiZWNhdXNlIHRoZXNlIGFyZQorICAgICMgb25seSB1c2VkIHRvIGdlbmVyYXRlIHByZXJyLmMgYW5kIHByZXJyLmggZmlsZXMgZnJvbSBwcmVyci5ldCBhdCBjb21waWxlCisgICAgIyB0aW1lCisgICAgcm0gJHtEfSR7YmluZGlyfS9jb21waWxlLWV0LnBsICR7RH0ke2JpbmRpcn0vcHJlcnIucHJvcGVydGllcworfQorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKi5zbyIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2JpbmRpcn0vKiAke2xpYmRpcn0vbnNwci90ZXN0cy8qICR7bGliZGlyfS9wa2djb25maWcgXAorICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vKiAke2RhdGFkaXJ9L2FjbG9jYWwvKiAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvMDAwMS1mcmVlYmwtYWRkLWEtY29uZmlndXJlLW9wdGlvbi10by1kaXNhYmxlLUFSTS1IVy1jcnlwLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy8wMDAxLWZyZWVibC1hZGQtYS1jb25maWd1cmUtb3B0aW9uLXRvLWRpc2FibGUtQVJNLUhXLWNyeXAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM4MGMxNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvMDAwMS1mcmVlYmwtYWRkLWEtY29uZmlndXJlLW9wdGlvbi10by1kaXNhYmxlLUFSTS1IVy1jcnlwLnBhdGNoCkBAIC0wLDAgKzEsNTIgQEAKK0Zyb20gNTU5NWU5NjUxYWNhMzlhZjk0NTkzMWM3M2ViNTI0YTBmOGJkMTMwZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBEZWMgMjAxOSAxMjoyOTo1MCArMDEwMAorU3ViamVjdDogW1BBVENIXSBmcmVlYmw6IGFkZCBhIGNvbmZpZ3VyZSBvcHRpb24gdG8gZGlzYWJsZSBBUk0gSFcgY3J5cHRvCisKK05vdCBhbGwgY3VycmVudCBoYXJkd2FyZSBzdXBwb3J0cyBpdCwgcGFydGljdWxhcmx5IGFueXRoaW5nCitwcmlvciB0byBhcm12OCBkb2VzIG5vdC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIG5zcy9saWIvZnJlZWJsL01ha2VmaWxlIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKKy0tLSBhL25zcy9saWIvZnJlZWJsL01ha2VmaWxlCisrKysgYi9uc3MvbGliL2ZyZWVibC9NYWtlZmlsZQorQEAgLTEyNSw2ICsxMjUsOSBAQCBlbHNlCisgICAgICAgICBERUZJTkVTICs9IC1ETlNTX1g4NgorIGVuZGlmCisgZW5kaWYKKysKKytpZmRlZiBOU1NfVVNFX0FSTV9IV19DUllQVE8KKysgICAgREVGSU5FUyArPSAtRE5TU19VU0VfQVJNX0hXX0NSWVBUTworIGlmZXEgKCQoQ1BVX0FSQ0gpLGFhcmNoNjQpCisgICAgIERFRklORVMgKz0gLURVU0VfSFdfQUVTCisgICAgIEVYVFJBX1NSQ1MgKz0gYWVzLWFybXY4LmMgZ2NtLWFhcmNoNjQuYworQEAgLTE0Niw2ICsxNDksNyBAQCBpZmVxICgkKENQVV9BUkNIKSxhcm0pCisgICAgICAgICBlbmRpZgorICAgICBlbmRpZgorIGVuZGlmCisrZW5kaWYKKyAKKyBpZmVxICgkKE9TX1RBUkdFVCksT1NGMSkKKyAgICAgREVGSU5FUyArPSAtRE1QX0FTU0VNQkxZX01VTFRJUExZIC1ETVBfTk9fTVBfV09SRAorLS0tIGEvbnNzL2xpYi9mcmVlYmwvZ2NtLmMKKysrKyBiL25zcy9saWIvZnJlZWJsL2djbS5jCitAQCAtMTcsNiArMTcsNyBAQAorIAorICNpbmNsdWRlIDxsaW1pdHMuaD4KKyAKKysjaWZkZWYgTlNTX1VTRV9BUk1fSFdfQ1JZUFRPCisgLyogb2xkIGdjYyBkb2Vzbid0IHN1cHBvcnQgc29tZSBwb2x5NjR4Ml90IGludHJpbnNpYyAqLworICNpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKElTX0xJVFRMRV9FTkRJQU4pICYmIFwKKyAgICAgKGRlZmluZWQoX19jbGFuZ19fKSB8fCBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA+IDYpCitAQCAtMjUsNiArMjYsNyBAQAorIC8qIFdlIGRvbid0IHRlc3Qgb24gYmlnIGVuZGlhbiBwbGF0Zm9ybSwgc28gZGlzYWJsZSB0aGlzIG9uIGJpZyBlbmRpYW4uICovCisgI2RlZmluZSBVU0VfQVJNX0dDTQorICNlbmRpZgorKyNlbmRpZgorIAorIC8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovCisgU0VDU3RhdHVzIGdjbV9IYXNoSW5pdF9odyhnY21IYXNoQ29udGV4dCAqZ2hhc2gpOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzLzAwMDEtbnNzLWZpeC1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvMDAwMS1uc3MtZml4LXN1cHBvcnQtY3Jvc3MtY29tcGlsaW5nLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvMDAwMS1uc3MtZml4LXN1cHBvcnQtY3Jvc3MtY29tcGlsaW5nLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzLzAwMDEtbnNzLWZpeC1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2JsYW5rLWNlcnQ5LmRiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9ibGFuay1jZXJ0OS5kYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2JsYW5rLWNlcnQ5LmRiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2JsYW5rLWNlcnQ5LmRiCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9ibGFuay1rZXk0LmRiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9ibGFuay1rZXk0LmRiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvYmxhbmsta2V5NC5kYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9ibGFuay1rZXk0LmRiCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9kaXNhYmxlLVd2YXJhcmdzLXdpdGgtY2xhbmcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2Rpc2FibGUtV3ZhcmFyZ3Mtd2l0aC1jbGFuZy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2Rpc2FibGUtV3ZhcmFyZ3Mtd2l0aC1jbGFuZy5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9kaXNhYmxlLVd2YXJhcmdzLXdpdGgtY2xhbmcucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3MtZml4LWluY29ycmVjdC1zaGViYW5nLW9mLXBlcmwucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1maXgtaW5jb3JyZWN0LXNoZWJhbmctb2YtcGVybC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1maXgtaW5jb3JyZWN0LXNoZWJhbmctb2YtcGVybC5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3MtZml4LWluY29ycmVjdC1zaGViYW5nLW9mLXBlcmwucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1maXgtbnNpbnN0YWxsLWJ1aWxkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzYzA5ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1maXgtbnNpbnN0YWxsLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0ZpeCBuc3MgbXVsdGlsaWIgYnVpbGQgb24gb3BlblNVU0UgMTEueCAzMmJpdAorCitXaGlsZSBidWlsZGluZyBsaWI2NC1uc3Mgb24gb3BlblNVU0UgMTEueCAzMmJpdCwgdGhlIG5zaW5zdGFsbCB3aWxsCitmYWlsIHdpdGggZXJyb3I6CisKKyogbnNpbnN0YWxsLmM6MTowOiBzb3JyeSwgdW5pbXBsZW1lbnRlZDogNjQtYml0IG1vZGUgbm90IGNvbXBpbGVkCisKK0l0IGNhdXNlZCBieSB0aGUgJy1tNjQnIG9wdGlvbiB3aGljaCBwYXNzZWQgdG8gaG9zdCBnY2MuCisKK1RoZSBuc2luc3RhbGwgd2FzIGJ1aWx0IGZpcnN0IHdoaWxlIG5zcyBzdGFydGluZyB0byBidWlsZCwgaXQgb25seSBydW5zCitvbiBob3N0IHRvIGluc3RhbGwgYnVpbHQgZmlsZXMsIGl0IGRvZXNuJ3QgbmVlZCBhbnkgY3Jvc3MtY29tcGxpbmcgb3IKK211bHRpbGliIGJ1aWxkIG9wdGlvbnMuIEp1c3QgY2xlYW4gdGhlIEFSQ0hGTEFHIGFuZCBMREZMQUdTIHRvIGZpeCB0aGlzCitlcnJvci4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitJbmRleDogbnNzLTMuMjQvbnNzL2NvcmVjb25mL25zaW5zdGFsbC9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5zcy0zLjI0Lm9yaWcvbnNzL2NvcmVjb25mL25zaW5zdGFsbC9NYWtlZmlsZQorKysrIG5zcy0zLjI0L25zcy9jb3JlY29uZi9uc2luc3RhbGwvTWFrZWZpbGUKK0BAIC0xOCw2ICsxOCwxMyBAQCBJTlRFUk5BTF9UT09MUyAgPSAxCisgCisgaW5jbHVkZSAkKERFUFRIKS9jb3JlY29uZi9jb25maWcubWsKKyAKKysjIG5zaW5zdGFsbCBpcyB1bmZpdCBmb3IgY3Jvc3MtY29tcGlsaW5nL211bHRpbGliLWJ1aWxkIHNpbmNlIGl0IHdhcworKyMgYWx3YXlzIHJ1biBvbiBsb2NhbCBob3N0IHRvIGluc3RhbGwgYnVpbHQgZmlsZXMuIFRoaXMgY2hhbmdlIGludGVuZHMKKysjIHRvIGNsZWFuIHRoZSAnLW02NCcgZnJvbSBBUkNIRkxBRyBhbmQgTERGTEFHUy4KKytBUkNIRkxBRyA9CisrTERGTEFHUyA9CisrIyBDRkxBR1MgPQorKworIGlmZXEgKCwkKGZpbHRlci1vdXQgT1MyIFdJTiUsJChPU19UQVJHRVQpKSkKKyBQUk9HUkFNCQk9CisgZWxzZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1uby1ycGF0aC1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3Mtbm8tcnBhdGgtZm9yLWNyb3NzLWNvbXBpbGluZy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1uby1ycGF0aC1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1uby1ycGF0aC1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy5wYy5pbiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvbnNzLnBjLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwMmI0ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy5wYy5pbgpAQCAtMCwwICsxLDExIEBACitwcmVmaXg9T0VQUkVGSVgKK2V4ZWNfcHJlZml4PU9FRVhFQ1BSRUZJWAorbGliZGlyPU9FTElCRElSCitpbmNsdWRlZGlyPU9FSU5DRElSCisKK05hbWU6IE5TUworRGVzY3JpcHRpb246IE5ldHdvcmsgU2VjdXJpdHkgU2VydmljZXMKK1ZlcnNpb246ICVOU1NfVkVSU0lPTiUKK1JlcXVpcmVzOiBuc3ByID49ICVOU1BSX1ZFUlNJT04lCitMaWJzOiAtTCR7bGliZGlyfSAtbHNzbDMgLWxzbWltZTMgLWxuc3MzIC1sc29mdG9rbjMgLWxuc3N1dGlsMworQ2ZsYWdzOiAtSU9FSU5DRElSCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvcHFnLmMtVUxMX2FkZGVuZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvcHFnLmMtVUxMX2FkZGVuZC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL3BxZy5jLVVMTF9hZGRlbmQucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvcHFnLmMtVUxMX2FkZGVuZC5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9yaXNjdi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvcmlzY3YucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVmOTFhNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvcmlzY3YucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRW5hYmxlIHVpbnQxMjggb24gcmlzY3Y2NAorCitGaXhlcworfCB2ZXJpZmllZC9rcmVtbGluL2tyZW1saWIvZGlzdC9taW5pbWFsL0xvd1N0YXJfRW5kaWFubmVzcy5oOjI5OjM3OiBlcnJvcjogJ2xvYWQxMjhfYmUnIGRlY2xhcmVkICdzdGF0aWMnIGJ1dCBuZXZlciBkZWZpbmVkIFstV2Vycm9yPXVudXNlZC1mdW5jdGlvbl0KK3wgICAgMjkgfCBpbmxpbmUgc3RhdGljIEZTdGFyX1VJbnQxMjhfdWludDEyOCBsb2FkMTI4X2JlKHVpbnQ4X3QgKngwKTsKK3wgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLSBhL25zcy9saWIvZnJlZWJsL3ZlcmlmaWVkL2tyZW1saW4vaW5jbHVkZS9rcmVtbGluL2ludGVybmFsL3R5cGVzLmgKKysrKyBiL25zcy9saWIvZnJlZWJsL3ZlcmlmaWVkL2tyZW1saW4vaW5jbHVkZS9rcmVtbGluL2ludGVybmFsL3R5cGVzLmgKK0BAIC01Niw3ICs1Niw4IEBAIHR5cGVkZWYgY29uc3QgY2hhciAqUHJpbXNfc3RyaW5nOworICNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KKyB0eXBlZGVmIF9fbTEyOGkgRlN0YXJfVUludDEyOF91aW50MTI4OworICNlbGlmICFkZWZpbmVkKEtSTUxfVkVSSUZJRURfVUlOVDEyOCkgJiYgIWRlZmluZWQoX01TQ19WRVIpICYmIFwKKy0gICAgKGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykpCisrICAgIChkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFwKKysgICAgIChkZWZpbmVkKF9fcmlzY3YpICYmIF9fcmlzY3ZfeGxlbiA9PSA2NCkpCisgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDEyOCBGU3Rhcl9VSW50MTI4X3VpbnQxMjg7CisgI2Vsc2UKKyB0eXBlZGVmIHN0cnVjdCBGU3Rhcl9VSW50MTI4X3VpbnQxMjhfcyB7CistLS0gYS9uc3MvbGliL2ZyZWVibC92ZXJpZmllZC9rcmVtbGluL2tyZW1saWIvZGlzdC9taW5pbWFsL2ZzdGFyX3VpbnQxMjhfZ2NjNjQuaAorKysrIGIvbnNzL2xpYi9mcmVlYmwvdmVyaWZpZWQva3JlbWxpbi9rcmVtbGliL2Rpc3QvbWluaW1hbC9mc3Rhcl91aW50MTI4X2djYzY0LmgKK0BAIC0yMyw5ICsyMywxMCBAQAorICNpbmNsdWRlICJGU3Rhcl9VSW50MTI4LmgiCisgI2luY2x1ZGUgIkZTdGFyX1VJbnRfOF8xNl8zMl82NC5oIgorICNpbmNsdWRlICJMb3dTdGFyX0VuZGlhbm5lc3MuaCIKKy0KKysjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2lmICFkZWZpbmVkKEtSTUxfVkVSSUZJRURfVUlOVDEyOCkgJiYgIWRlZmluZWQoX01TQ19WRVIpICYmIFwKKy0gICAgKGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykpCisrICAgIChkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFwKKysgICAgIChkZWZpbmVkKF9fcmlzY3YpICYmIF9fcmlzY3ZfeGxlbiA9PSA2NCkpCisgCisgLyogR0NDICsgdXNpbmcgbmF0aXZlIHVuc2lnbmVkIF9faW50MTI4IHN1cHBvcnQgKi8KKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9zaWdubGlicy5zaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3Mvc2lnbmxpYnMuc2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9zaWdubGlicy5zaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9zaWdubGlicy5zaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL3N5c3RlbS1wa2NzMTEudHh0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9zeXN0ZW0tcGtjczExLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL3N5c3RlbS1wa2NzMTEudHh0CnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL3N5c3RlbS1wa2NzMTEudHh0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuNTEuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3NfMy41MS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwMTEyNDAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuNTEuMS5iYgpAQCAtMCwwICsxLDI3NCBAQAorU1VNTUFSWSA9ICJNb3ppbGxhJ3MgU1NMIGFuZCBUTFMgaW1wbGVtZW50YXRpb24iCitERVNDUklQVElPTiA9ICJOZXR3b3JrIFNlY3VyaXR5IFNlcnZpY2VzIChOU1MpIGlzIGEgc2V0IG9mIGxpYnJhcmllcyBcCitkZXNpZ25lZCB0byBzdXBwb3J0IGNyb3NzLXBsYXRmb3JtIGRldmVsb3BtZW50IG9mIFwKK3NlY3VyaXR5LWVuYWJsZWQgY2xpZW50IGFuZCBzZXJ2ZXIgYXBwbGljYXRpb25zLiBcCitBcHBsaWNhdGlvbnMgYnVpbHQgd2l0aCBOU1MgY2FuIHN1cHBvcnQgU1NMIHYyIGFuZCB2MywgXAorVExTLCBQS0NTIDUsIFBLQ1MgNywgUEtDUyAxMSwgUEtDUyAxMiwgUy9NSU1FLCBYLjUwOSBcCit2MyBjZXJ0aWZpY2F0ZXMsIGFuZCBvdGhlciBzZWN1cml0eSBzdGFuZGFyZHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9zZWN1cml0eS9wa2kvbnNzLyIKK1NFQ1RJT04gPSAibGlicyIKKworREVQRU5EUyA9ICJzcWxpdGUzIG5zcHIgemxpYiBuc3MtbmF0aXZlIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAic3FsaXRlMy1uYXRpdmUgbnNwci1uYXRpdmUgemxpYi1uYXRpdmUiCisKK0xJQ0VOU0UgPSAiTVBMLTIuMCB8IChNUEwtMi4wICYgR1BMLTIuMCspIHwgKE1QTC0yLjAgJiBMR1BMLTIuMSspIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9uc3MvQ09QWUlORzttZDU9M2IxZTg4ZTFiOWMwYjVhNGIyODgxZDQ2Y2NlMDZhMTggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbnNzL2xpYi9mcmVlYmwvbXBpL2RvYy9MSUNFTlNFO21kNT00OTFmMTU4ZDA5ZDk0ODQ2NmFmY2U4NWQ2ZjFmZTE4ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0UtTVBMO21kNT01ZDQyNWM4ZjMxNTdkYmYyMTJkYjJlYzUzZDllNTEzMiIKKworVkVSU0lPTl9ESVIgPSAiJHtAZC5nZXRWYXIoJ0JQJykudXBwZXIoKS5yZXBsYWNlKCctJywgJ18nKS5yZXBsYWNlKCcuJywgJ18nKSArICdfUlRNJ30iCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbW96aWxsYS5vcmcvc2VjdXJpdHkvbnNzL3JlbGVhc2VzLyR7VkVSU0lPTl9ESVJ9L3NyYy8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbnNzLnBjLmluIFwKKyAgICAgICAgICAgZmlsZTovL3NpZ25saWJzLnNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbnNzLWZpeC1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uc3Mtbm8tcnBhdGgtZm9yLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uc3MtZml4LWluY29ycmVjdC1zaGViYW5nLW9mLXBlcmwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1XdmFyYXJncy13aXRoLWNsYW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BxZy5jLVVMTF9hZGRlbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYmxhbmstY2VydDkuZGIgXAorICAgICAgICAgICBmaWxlOi8vYmxhbmsta2V5NC5kYiBcCisgICAgICAgICAgIGZpbGU6Ly9zeXN0ZW0tcGtjczExLnR4dCBcCisgICAgICAgICAgIGZpbGU6Ly9uc3MtZml4LW5zaW5zdGFsbC1idWlsZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZyZWVibC1hZGQtYS1jb25maWd1cmUtb3B0aW9uLXRvLWRpc2FibGUtQVJNLUhXLWNyeXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmlzY3YucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2YWNhZjFkZGZmNjkzMDZhZTMwYTkwODg4MWM2ZjIzMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwODVjNWVhY2VlZjA0MGVkZGVhNjM5ZTJlMDY4ZTcwZjBlMzY4Zjg0MDMyN2E2NzhlZjc0YWUzZDZjMTVjYTc4IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb3ppbGxhL1Byb2plY3RzL05TUy9OU1NfUmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJOU1NfKD9QPHB2ZXI+LispX3JlbGVhc2Vfbm90ZXMiCisKK2luaGVyaXQgc2l0ZWluZm8KKworVEQgPSAiJHtTfS90ZW50YXRpdmUtZGlzdCIKK1REUyA9ICIke1N9L3RlbnRhdGl2ZS1kaXN0LXN0YWdpbmciCisKK1RBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgorCitkb19jb25maWd1cmVfcHJlcGVuZF9saWJjLW11c2wgKCkgeworICAgIHNlZCAtaSAtZSAnLy1ESEFWRV9TWVNfQ0RFRlNfSC9kJyAke1N9L25zcy9saWIvZGJtL2NvbmZpZy9jb25maWcubWsKK30KKworZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICBleHBvcnQgTlNQUl9JTkNMVURFX0RJUj0ke1NUQUdJTkdfSU5DRElSX05BVElWRX0vbnNwcgorICAgIGV4cG9ydCBOU1BSX0xJQl9ESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9CisgICAgZXhwb3J0IE5TU19FTkFCTEVfV0VSUk9SPTAKK30KKworZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKyAgICBleHBvcnQgTERGTEFHUz0iIgorfQorCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgICMgTmVlZCB0byBzZXQgUlBBVEggc28gdGhhdCBjaHJwYXRoIHdpbGwgZG8gaXRzIGpvYiBjb3JyZWN0bHkKKyAgICBSUEFUSD0iLVdsLC1ycGF0aC1saW5rLCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0JBU0VfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFfSIKK30KKworZG9fY29tcGlsZSgpIHsKKyAgICBleHBvcnQgTlNQUl9JTkNMVURFX0RJUj0ke1NUQUdJTkdfSU5DRElSfS9uc3ByCisKKyAgICBleHBvcnQgQ1JPU1NfQ09NUElMRT0xCisgICAgZXhwb3J0IE5BVElWRV9DQz0iJHtCVUlMRF9DQ30iCisgICAgIyBBZGRpdGlvbmFsIGRlZmluZXMgbmVlZGVkIG9uIENlbnRvcyA3CisgICAgZXhwb3J0IE5BVElWRV9GTEFHUz0iJHtCVUlMRF9DRkxBR1N9IC1ETElOVVggLURsaW51eCIKKyAgICBleHBvcnQgQlVJTERfT1BUPTEKKworICAgIGV4cG9ydCBGUkVFQkxfTk9fREVQRU5EPTEKKyAgICBleHBvcnQgRlJFRUJMX0xPV0hBU0g9MQorCisgICAgZXhwb3J0IExJQkRJUj0ke2xpYmRpcn0KKyAgICBleHBvcnQgTU9aSUxMQV9DTElFTlQ9MQorICAgIGV4cG9ydCBOU19VU0VfR0NDPTEKKyAgICBleHBvcnQgTlNTX1VTRV9TWVNURU1fU1FMSVRFPTEKKyAgICBleHBvcnQgTlNTX0VOQUJMRV9FQ0M9MQorCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiY3J5cHRvIiwgImV4cG9ydCBOU1NfVVNFX0FSTV9IV19DUllQVE89MSIsICIiLCBkKX0KKworICAgIGV4cG9ydCBPU19SRUxFQVNFPTMuNAorICAgIGV4cG9ydCBPU19UQVJHRVQ9TGludXgKKyAgICBleHBvcnQgT1NfQVJDSD1MaW51eAorCisgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1wcGMKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1wcGM2NAorICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHMiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwc2VsIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjRlbCIgXTsgdGhlbgorICAgICAgICBPU19URVNUPW1pcHMKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJhYXJjaDY0X2JlIiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9ImFhcmNoNjQiCisgICAgZWxzZQorICAgICAgICBPU19URVNUPSIke1RBUkdFVF9BUkNIfSIKKyAgICBmaQorCisgICAgaWYgWyAiJHtTSVRFSU5GT19CSVRTfSIgPSAiNjQiIF07IHRoZW4KKyAgICAgICAgZXhwb3J0IFVTRV82ND0xCisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiAtYSAiJHtTSVRFSU5GT19CSVRTfSIgPSAiMzIiIF07IHRoZW4KKyAgICAgICAgZXhwb3J0IFVTRV9YMzI9MQorICAgIGZpCisKKyAgICBleHBvcnQgTlNTX0RJU0FCTEVfR1RFU1RTPTEKKworICAgICMgV2UgY2FuIG1vZGlmeSBDQyBpbiB0aGUgZW52aXJvbm1lbnQsIGJ1dCBpZiB3ZSBzZXQgaXQgdmlhIGFuCisgICAgIyBhcmd1bWVudCB0byBtYWtlLCBuc2luc3RhbGwsIGEgaG9zdCBwcm9ncmFtLCB3aWxsIGFsc28gYnVpbGQgd2l0aCBpdCEKKyAgICAjCisgICAgIyBuc3MgcHJldHR5IG11Y2ggZG9lcyBpdHMgb3duIHRoaW5nIHdpdGggQ0ZMQUdTLCBzbyB3ZSBwdXQgdGhlbSBpbnRvIENDLgorICAgICMgT3B0aW1pemF0aW9uIHdpbGwgZ2V0IGNsb2JiZXJlZCwgYnV0IG1vc3Qgb2YgdGhlIHN0dWZmIHdpbGwgc3Vydml2ZS4KKyAgICAjIFRoZSBtb3RpdmF0aW9uIGZvciB0aGlzIGlzIHRvIHBvaW50IHRvIHRoZSBjb3JyZWN0IHBsYWNlIGZvciBkZWJ1ZworICAgICMgc291cmNlIGZpbGVzIGFuZCBDRkxBR1MgZG9lcyB0aGF0LiAgTm90aGluZyB1c2VzIENDQy4KKyAgICAjCisgICAgZXhwb3J0IENDPSIke0NDfSAke0NGTEFHU30iCisgICAgbWFrZSAtQyAuL25zcyBDQ0M9IiR7Q1hYfSAtZyIgXAorICAgICAgICBPU19URVNUPSR7T1NfVEVTVH0gXAorICAgICAgICBSUEFUSD0iJHtSUEFUSH0iCit9CisKK2RvX2NvbXBpbGVbdmFyZGVwc2V4Y2x1ZGVdICs9ICJTSVRFSU5GT19CSVRTIgorCitkb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgIGV4cG9ydCBMREZMQUdTPSIiCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgZXhwb3J0IENST1NTX0NPTVBJTEU9MQorICAgIGV4cG9ydCBOQVRJVkVfQ0M9IiR7QlVJTERfQ0N9IgorICAgIGV4cG9ydCBCVUlMRF9PUFQ9MQorCisgICAgZXhwb3J0IEZSRUVCTF9OT19ERVBFTkQ9MQorCisgICAgZXhwb3J0IExJQkRJUj0ke2xpYmRpcn0KKyAgICBleHBvcnQgTU9aSUxMQV9DTElFTlQ9MQorICAgIGV4cG9ydCBOU19VU0VfR0NDPTEKKyAgICBleHBvcnQgTlNTX1VTRV9TWVNURU1fU1FMSVRFPTEKKyAgICBleHBvcnQgTlNTX0VOQUJMRV9FQ0M9MQorCisgICAgZXhwb3J0IE9TX1JFTEVBU0U9My40CisgICAgZXhwb3J0IE9TX1RBUkdFVD1MaW51eAorICAgIGV4cG9ydCBPU19BUkNIPUxpbnV4CisKKyAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgorICAgICAgICBPU19URVNUPXBwYworICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgorICAgICAgICBPU19URVNUPXBwYzY0CisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAibWlwcyIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzZWwiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0IiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NGVsIiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9bWlwcworICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gImFhcmNoNjRfYmUiIF07IHRoZW4KKyAgICAgICAgQ1BVX0FSQ0g9YWFyY2g2NAorICAgICAgICBPU19URVNUPSJhYXJjaDY0IgorICAgIGVsc2UKKyAgICAgICAgT1NfVEVTVD0iJHtUQVJHRVRfQVJDSH0iCisgICAgZmkKKyAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFXzY0PTEKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIC1hICIke1NJVEVJTkZPX0JJVFN9IiA9ICIzMiIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFX1gzMj0xCisgICAgZmkKKworICAgIGV4cG9ydCBOU1NfRElTQUJMRV9HVEVTVFM9MQorCisgICAgbWFrZSAtQyAuL25zcyBcCisgICAgICAgIENDQz0iJHtDWFh9IiBcCisgICAgICAgIE9TX1RFU1Q9JHtPU19URVNUfSBcCisgICAgICAgIFNPVVJDRV9MSUJfRElSPSIke1REfS8ke2xpYmRpcn0iIFwKKyAgICAgICAgU09VUkNFX0JJTl9ESVI9IiR7VER9LyR7YmluZGlyfSIgXAorICAgICAgICBpbnN0YWxsCisKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9LworICAgIGZvciBmaWxlIGluICR7U30vZGlzdC8qLk9CSi9saWIvKi5zbzsgZG8KKyAgICAgICAgZWNobyAiSW5zdGFsbGluZyBgYmFzZW5hbWUgJGZpbGVgLi4uIgorICAgICAgICBjcCAkZmlsZSAgJHtEfS8ke2xpYmRpcn0vCisgICAgZG9uZQorCisgICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc28uKjsgZG8KKyAgICAgICAgaWYgWyAtZiAkc2hhcmVkX2xpYiBdOyB0aGVuCisgICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQorICAgICAgICAgICAgbG4gLXNmICQoYmFzZW5hbWUgJHNoYXJlZF9saWIpICR7RH0vJHtsaWJkaXJ9LyQoYmFzZW5hbWUgJHNoYXJlZF9saWIgLjFvZSkKKyAgICAgICAgZmkKKyAgICBkb25lCisgICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc287IGRvCisgICAgICAgIGlmIFsgLWYgJHNoYXJlZF9saWIgLWEgISAtZSAke0R9LyR7bGliZGlyfS8kc2hhcmVkX2xpYiBdOyB0aGVuCisgICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQorICAgICAgICBmaQorICAgIGRvbmUKKworICAgIGluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9L25zczMKKyAgICBpbnN0YWxsIC1tIDY0NCAtdCAke0R9LyR7aW5jbHVkZWRpcn0vbnNzMyBkaXN0L3B1YmxpYy9uc3MvKgorCisgICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQorICAgIGZvciBiaW5hcnkgaW4gJHtURH0vJHtiaW5kaXJ9Lyo7IGRvCisgICAgICAgIGluc3RhbGwgLW0gNzU1IC10ICR7RH0vJHtiaW5kaXJ9ICRiaW5hcnkKKyAgICBkb25lCit9CisKK2RvX2luc3RhbGxbdmFyZGVwc2V4Y2x1ZGVdICs9ICJTSVRFSU5GT19CSVRTIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIENyZWF0ZSBlbXB0eSAuY2hrIGZpbGVzIGZvciB0aGUgTlNTIGxpYnJhcmllcyBhdCBidWlsZCB0aW1lLiBUaGV5IGNvdWxkCisgICAgIyBiZSByZWdlbmVyYXRlZCBhdCB0YXJnZXQncyBib290IHRpbWUuCisgICAgZm9yIGZpbGUgaW4gbGlic29mdG9rbjMuY2hrIGxpYmZyZWVibDMuY2hrIGxpYm5zc2RibTMuY2hrOyBkbworICAgICAgICB0b3VjaCAke0R9LyR7bGliZGlyfS8kZmlsZQorICAgICAgICBjaG1vZCA3NTUgJHtEfS8ke2xpYmRpcn0vJGZpbGUKKyAgICBkb25lCisgICAgaW5zdGFsbCAtRCAtbSA3NTUgJHtXT1JLRElSfS9zaWdubGlicy5zaCAke0R9LyR7YmluZGlyfS9zaWdubGlicy5zaAorCisgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy8KKyAgICBzZWQgJ3MvJU5TU19WRVJTSU9OJS8ke1BWfS8nICR7V09SS0RJUn0vbnNzLnBjLmluIHwgc2VkICdzLyVOU1BSX1ZFUlNJT04lLzQuOS4yLycgPiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRVBSRUZJWDoke3ByZWZpeH06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRUVYRUNQUkVGSVg6JHtleGVjX3ByZWZpeH06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRUxJQkRJUjoke2xpYmRpcn06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRUlOQ0RJUjoke2luY2x1ZGVkaXJ9L25zczM6ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICMgSXQgdXNlZCB0byBjYWxsIGNlcnR1dGlsIHRvIGNyZWF0ZSBhIGJsYW5rIGNlcnRpZmljYXRlIHdpdGggZW1wdHkgcGFzc3dvcmQgYXQKKyAgICAjIGJ1aWxkIHRpbWUsIGJ1dCB0aGUgY2hlY2tzdW0gb2Yga2V5NC5kYiBjaGFuZ2VzIGV2ZXJ5IHRpbWUgd2hlbiBjZXJ0dXRpbCBpcyBjYWxsZWQuCisgICAgIyBJdCBjYXVzZXMgbm9uLWRldGVybWluaXNtIGlzc3VlLCBzbyBwcm92aWRlIGRhdGFiYXNlcyB3aXRoIGEgYmxhbmsgY2VydGlmaWNhdGUKKyAgICAjIHdoaWNoIGFyZSBvcmlnaW5hbGx5IGZyb20gb3V0cHV0IG9mIG5zcyBpbiBxZW11eDg2LTY0IGJ1aWxkLiBZb3UgY2FuIGdldCB0aGVzZQorICAgICMgZGF0YWJhc2VzIGJ5OgorICAgICMgY2VydHV0aWwgLU4gLWQgc3FsOi9kYXRhYmFzZS9wYXRoLyAtLWVtcHR5LXBhc3N3b3JkCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYmxhbmstY2VydDkuZGIgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiL2NlcnQ5LmRiCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYmxhbmsta2V5NC5kYiAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIva2V5NC5kYgorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3N5c3RlbS1wa2NzMTEudHh0ICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi9wa2NzMTEudHh0Cit9CisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAibnNzLW5hdGl2ZSIKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisgICAgaWYgWyAtbiAiJEQiIF07IHRoZW4KKyAgICAgICAgZm9yIEkgaW4gJEQke2xpYmRpcn0vbGliKi5jaGs7IGRvCisgICAgICAgICAgICBETj1gZGlybmFtZSAkSWAKKyAgICAgICAgICAgIEJOPWBiYXNlbmFtZSAkSSAuY2hrYAorICAgICAgICAgICAgRk49JEROLyRCTi5zbworICAgICAgICAgICAgc2hsaWJzaWduIC1pICRGTgorICAgICAgICAgICAgaWYgWyAkPyAtbmUgMCBdOyB0aGVuCisgICAgICAgICAgICAgICAgZXhpdCAxCisgICAgICAgICAgICBmaQorICAgICAgICBkb25lCisgICAgZWxzZQorICAgICAgICBzaWdubGlicy5zaAorICAgIGZpCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1zbWltZSIKK0ZJTEVTXyR7UE59LXNtaW1lID0gIlwKKyAgICAke2JpbmRpcn0vc21pbWUgXAorIgorCitGSUxFU18ke1BOfSA9ICJcCisgICAgJHtzeXNjb25mZGlyfSBcCisgICAgJHtiaW5kaXJ9IFwKKyAgICAke2xpYmRpcn0vbGliKi5jaGsgXAorICAgICR7bGliZGlyfS9saWIqLnNvIFwKKyAgICAiCisKK0ZJTEVTXyR7UE59LWRldiA9ICJcCisgICAgJHtsaWJkaXJ9L25zcyBcCisgICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy8qIFwKKyAgICAke2luY2x1ZGVkaXJ9LyogXAorICAgICIKKworUkRFUEVORFNfJHtQTn0tc21pbWUgPSAicGVybCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb25pZy9vbmlnXzYuOS40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb25pZy9vbmlnXzYuOS40LmJiCmluZGV4IGNmYTg2ZjAuLjUwZDlmNTIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29uaWcvb25pZ182LjkuNC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vbmlnL29uaWdfNi45LjQuYmIKQEAgLTI4LDUgKzI4LDYgQEAKIH0KIAogZG9faW5zdGFsbF9wdGVzdCgpIHsKLSAgICBpbnN0YWxsIC1EbTA3NTUgLXQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvICR7Qn0vdGVzdC8ubGlicy8qCisgICAgbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBpbnN0YWxsIC1tIDA3NTUgLXQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvICR7Qn0vdGVzdC8ubGlicy8qCiB9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubGRhcC9vcGVubGRhcC9raWxsLWljdS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5sZGFwL29wZW5sZGFwL2tpbGwtaWN1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWU0NjQ2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5sZGFwL29wZW5sZGFwL2tpbGwtaWN1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbTogTWFyY2luIEp1c3praWV3aWN6IDxtYXJjaW4uanVzemtpZXdpY3pAbGluYXJvLm9yZz4KLQotc2xhcGQgZGVwZW5kcyBvbiBJQ1UgaWYgaXQgd2FzIGJ1aWx0IGZpcnN0LgotCi1VcHN0cmVhbS1TdGF0dXM6IGluYXBwcm9waWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0tLS0KLSBjb25maWd1cmUuaW4gfCAgICA4IC0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDggZGVsZXRpb25zKC0pCi0KLS0tLSBvcGVubGRhcC0yLjQuMjMub3JpZy9jb25maWd1cmUuaW4KLSsrKyBvcGVubGRhcC0yLjQuMjMvY29uZmlndXJlLmluCi1AQCAtMjA0NSwxOCArMjA0NSwxMCBAQCBpZiB0ZXN0ICRvbF9lbmFibGVfbmRiICE9IG5vIDsgdGhlbgotIAkJU0xBUERfTElCUz0iJFNMQVBEX0xJQlMgXCQoU0xBUERfTkRCX0xJQlMpIgotIAlmaQotIGZpCi0gCi0gZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS1kbmwgSW50ZXJuYXRpb25hbCBDb21wb25lbnRzIGZvciBVbmljb2RlCi0tT0xfSUNVCi0taWYgdGVzdCAiJG9sX2ljdSIgPSBubyA7IHRoZW4KLS0JQUNfTVNHX1dBUk4oW0lDVSBub3QgYXZhaWxhYmxlXSkKLS1lbHNlCi0tCUlDVV9MSUJTPSIkb2xfaWN1IgotLWZpCi0tZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBkbmwKLSBkbmwgQ2hlY2sgZm9yIEN5cnVzIFNBU0wKLSBkbmwKLSBXSVRIX1NBU0w9bm8KLSBvbF9saW5rX3Nhc2w9bm8KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5sZGFwL29wZW5sZGFwXzIuNC40OC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5sZGFwL29wZW5sZGFwXzIuNC40OC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNjMjE5ZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubGRhcC9vcGVubGRhcF8yLjQuNDguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNTUgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuTERBUCBEaXJlY3RvcnkgU2VydmljZSIKLURFU0NSSVBUSU9OID0gIk9wZW5MREFQIFNvZnR3YXJlIGlzIGFuIG9wZW4gc291cmNlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBMaWdodHdlaWdodCBEaXJlY3RvcnkgQWNjZXNzIFByb3RvY29sLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuT3BlbkxEQVAub3JnL2xpY2Vuc2UuaHRtbCIKLSMgVGhlIE9wZW5MREFQIFB1YmxpYyBMaWNlbnNlIC0gc2VlIHRoZSBIT01FUEFHRSAtIGRlZmluZXMKLSMgdGhlIGxpY2Vuc2UuICB3d3cub3BlbmxkYXAub3JnIGNsYWltcyB0aGlzIGlzIE9wZW4gU291cmNlCi0jIChzZWUgaHR0cDovL3d3dy5vcGVubGRhcC5vcmcpLCB0aGUgbGljZW5zZSBhcHBlYXJzIHRvIGJlCi0jIGJhc2ljYWxseSBCU0QuICBvcGVuc291cmNlLm9yZyBkb2VzIG5vdCByZWNvcmQgdGhpcyBsaWNlbnNlCi0jIGF0IHByZXNlbnQgKHNvIGl0IGlzIGFwcGFyZW50bHkgbm90IE9TSSBjZXJ0aWZpZWQpLgotTElDRU5TRSA9ICJPcGVuTERBUCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9YWQ5MTRjMzVmOTdiNDY4ZjQyMWY4YWMwZjNkODIxZjQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRTttZDU9MTUzZDA3ZWYwNTJjNGEzN2E4ZmFjMjNiYzYwMzE5NzIgXAotICAgICAgICAgICAgICAgICAgICAiCi1TRUNUSU9OID0gImxpYnMiCi0KLUxEQVBfVkVSID0gIiR7QCcuJy5qb2luKGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMDoyXSl9IgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cub3BlbmxkYXAub3JnL3NvZnR3YXJlL2Rvd25sb2FkL09wZW5MREFQL29wZW5sZGFwLXJlbGVhc2UvJHtCUH0udGd6IFwKLSAgICBmaWxlOi8vb3BlbmxkYXAtbTQtcHRocmVhZC5wYXRjaCBcCi0gICAgZmlsZTovL2tpbGwtaWN1LnBhdGNoIFwKLSAgICBmaWxlOi8vb3BlbmxkYXAtMi40LjI4LWdudXRscy1nY3J5cHQucGF0Y2ggXAotICAgIGZpbGU6Ly91c2UtdXJhbmRvbS5wYXRjaCBcCi0gICAgZmlsZTovL2luaXRzY3JpcHQgXAotICAgIGZpbGU6Ly9zbGFwZC5zZXJ2aWNlIFwKLSAgICBmaWxlOi8vdGhyZWFkX3N0dWIucGF0Y2ggXAotICAgIGZpbGU6Ly9vcGVubGRhcC1DVkUtMjAxNS0zMjc2LnBhdGNoIFwKLSAgICBmaWxlOi8vcmVtb3ZlLXVzZXItaG9zdC1wd2QtZnJvbS12ZXJzaW9uLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA3MjlhMDcxMWZlMDk2ODMxZGVkYzE1OWUwYmJlNzNmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5NTIzZmZjYWI1Y2QxNGI3MDlmY2YzY2I0ZDA0ZThiYzc2YmI4OTcwMTEzMjU1ZjM3MmJjNzQ5NTRjNjA3NGQiCi0KLURFUEVORFMgPSAidXRpbC1saW51eCBncm9mZi1uYXRpdmUiCi0KLSMgVGhlIG9yaWdpbmFsIHRvcC5tayB1c2VkIElOU1RBTEwsIG5vdCBJTlNUQUxMX1NUUklQX1BST0dSQU0gd2hlbgotIyBpbnN0YWxsaW5nIC5zbyBhbmQgZXhlY3V0YWJsZXMsIHRoaXMgZmFpbHMgaW4gY3Jvc3MgY29tcGlsYXRpb24KLSMgZW52aXJvbm1lbnRzCi1TUkNfVVJJICs9ICJmaWxlOi8vaW5zdGFsbC1zdHJpcC5wYXRjaCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQKLQotIyBDViBTRVRUSU5HUwotIyBSZXF1aXJlZCB0byB3b3JrIHJvdW5kIEFDX0ZVTkNfTUVNQ01QIHdoaWNoIGdldHMgdGhlIHdyb25nIGFuc3dlcgotIyB3aGVuIGNyb3NzIGNvbXBpbGluZyAoc2hvdWxkIGJlIGluIHNpdGU/KQotRVhUUkFfT0VDT05GICs9ICJhY19jdl9mdW5jX21lbWNtcF93b3JraW5nPXllcyIKLQotIyBDT05GSUcgREVGSU5JVElPTlMKLSMgVGhlIGZvbGxvd2luZyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBmb3IgYQotIyBjcm9zcyBjb21waWxlIGF1dG9tYWdpY2FsbHkuICBTZWxlY3Qgc2hvdWxkIHlpZWxkIGZpbmUgb24gYWxsIE9FCi0jIHN5c3RlbXMuLi4KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLXlpZWxkaW5nLXNlbGVjdD15ZXMiCi0jIFNoYXJlZCBsaWJyYXJpZXMgYXJlIG5pY2UuLi4KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtZHluYW1pYyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyBtb2R1bGVzIFwKLSAgICAgICAgICAgICAgICAgICBtZGIgbGRhcCBtZXRhIG1vbml0b3IgbnVsbCBwYXNzd2Qgc2hlbGwgcHJveHljYWNoZSBkbnNzcnYgXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAotIgotIy0td2l0aC10bHMgICAgICAgICAgICAgIHdpdGggVExTL1NTTCBzdXBwb3J0IGF1dG98b3BlbnNzbHxnbnV0bHMgW2F1dG9dCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLXRscz1nbnV0bHMsLGdudXRscyBsaWJnY3J5cHQiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC10bHM9b3BlbnNzbCwsb3BlbnNzbCIKLQotUEFDS0FHRUNPTkZJR1tzYXNsXSA9ICItLXdpdGgtY3lydXMtc2FzbCwtLXdpdGhvdXQtY3lydXMtc2FzbCxjeXJ1cy1zYXNsIgotUEFDS0FHRUNPTkZJR1ttb2R1bGVzXSA9ICJsdF9jdl9kbG9wZW5fc2VsZj15ZXMgLS1lbmFibGUtbW9kdWxlcywtLWRpc2FibGUtbW9kdWxlcyxsaWJ0b29sIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2IgotCi0jIFNMQVBEIG9wdGlvbnMKLSMKLSMgVU5JWCBjcnlwdCgzKSBwYXNzd2Qgc3VwcG9ydDoKLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtY3J5cHQiCi0KLSMgU0xBUEQgQkFDS0VORAotIwotIyBUaGUgYmFja2VuZCBtdXN0IGJlIHNldCBieSB0aGUgY29uZmlndXJhdGlvbi4gIFRoaXMgY29udHJvbHMgdGhlCi0jIHJlcXVpcmVkIGRhdGFiYXNlLgotIwotIyBCYWNrZW5kcz0iYmRiIGRuc3NydiBoZGIgbGRhcCBtZGIgbWV0YSBtb25pdG9yIG5kYiBudWxsIHBhc3N3ZCBwZXJsIHJlbGF5IHNoZWxsIHNvY2sgc3FsIgotIwotIyBOb3RlIHRoYXQgbXVsdGlwbGUgYmFja2VuZHMgY2FuIGJlIGJ1aWx0LiAgVGhlIGxkYm0gYmFja2VuZCByZXF1aXJlcyBhCi0jIGJ1aWxkLXRpbWUgY2hvaWNlIG9mIGRhdGFiYXNlIEFQSS4gIFRoZSBiZGIgYmFja2VuZCBmb3JjZXMgdGhpcyB0byBiZQotIyBEQjQuICBUbyB1c2UgdGhlIGdkYm0gKG9yIG90aGVyKSBBUEkgdGhlIEJlcmtlbHkgZGF0YWJhc2UgbW9kdWxlIG11c3QKLSMgYmUgcmVtb3ZlZCBmcm9tIHRoZSBidWlsZC4KLW1kID0gIiR7bGliZXhlY2Rpcn0vb3BlbmxkYXAiCi0jCi0jLS1lbmFibGUtYmRiICAgICAgICAgIGVuYWJsZSBCZXJrZWxleSBEQiBiYWNrZW5kIG5vfHllc3xtb2QgeWVzCi0jIFRoZSBCZXJrZWx5IERCIGlzIHRoZSBzdGFuZGFyZCBjaG9pY2UuICBUaGlzIHZlcnNpb24gb2YgT3BlbkxEQVAgcmVxdWlyZXMKLSMgdGhlIHZlcnNpb24gNCBpbXBsZW1lbnRhdGlvbiBvciBiZXR0ZXIuCi1QQUNLQUdFQ09ORklHW2JkYl0gPSAiLS1lbmFibGUtYmRiPXllcywtLWVuYWJsZS1iZGI9bm8sZGIiCi0KLSMtLWVuYWJsZS1kbnNzcnYgICAgICAgZW5hYmxlIGRuc3NydiBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KLVBBQ0tBR0VDT05GSUdbZG5zc3J2XSA9ICItLWVuYWJsZS1kbnNzcnY9bW9kLC0tZW5hYmxlLWRuc3Nydj1ubyIKLQotIy0tZW5hYmxlLWhkYiAgICAgICAgICBlbmFibGUgSGllcmFyY2hpY2FsIERCIGJhY2tlbmQgbm98eWVzfG1vZCBubwotUEFDS0FHRUNPTkZJR1toZGJdID0gIi0tZW5hYmxlLWhkYj15ZXMsLS1lbmFibGUtaGRiPW5vLGRiIgotCi0jLS1lbmFibGUtbGRhcCAgICAgICAgIGVuYWJsZSBsZGFwIGJhY2tlbmQgbm98eWVzfG1vZCBubwotUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLWVuYWJsZS1sZGFwPW1vZCwtLWVuYWJsZS1sZGFwPW5vLCIKLQotIy0tZW5hYmxlLW1kYiAgICAgICAgICBlbmFibGUgbWRiIGRhdGFiYXNlIGJhY2tlbmQgbm98eWVzfG1vZCBbeWVzXQotUEFDS0FHRUNPTkZJR1ttZGJdID0gIi0tZW5hYmxlLW1kYj15ZXMsLS1lbmFibGUtbWRiPW5vLCIKLQotIy0tZW5hYmxlLW1ldGEgICAgICAgICBlbmFibGUgbWV0YWRpcmVjdG9yeSBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KLVBBQ0tBR0VDT05GSUdbbWV0YV0gPSAiLS1lbmFibGUtbWV0YT1tb2QsLS1lbmFibGUtbWV0YT1ubywiCi0KLSMtLWVuYWJsZS1tb25pdG9yICAgICAgZW5hYmxlIG1vbml0b3IgYmFja2VuZCBub3x5ZXN8bW9kIHllcwotUEFDS0FHRUNPTkZJR1ttb25pdG9yXSA9ICItLWVuYWJsZS1tb25pdG9yPW1vZCwtLWVuYWJsZS1tb25pdG9yPW5vLCIKLQotIy0tZW5hYmxlLW5kYiAgICAgICAgICBlbmFibGUgTXlTUUwgTkRCIENsdXN0ZXIgYmFja2VuZCBub3x5ZXN8bW9kIFtub10KLVBBQ0tBR0VDT05GSUdbbmRiXSA9ICItLWVuYWJsZS1uZGI9bW9kLC0tZW5hYmxlLW5kYj1ubywiCi0KLSMtLWVuYWJsZS1udWxsICAgICAgICAgZW5hYmxlIG51bGwgYmFja2VuZCBub3x5ZXN8bW9kIG5vCi1QQUNLQUdFQ09ORklHW251bGxdID0gIi0tZW5hYmxlLW51bGw9bW9kLC0tZW5hYmxlLW51bGw9bm8sIgotCi0jLS1lbmFibGUtcGFzc3dkICAgICAgIGVuYWJsZSBwYXNzd2QgYmFja2VuZCBub3x5ZXN8bW9kIG5vCi1QQUNLQUdFQ09ORklHW3Bhc3N3ZF0gPSAiLS1lbmFibGUtcGFzc3dkPW1vZCwtLWVuYWJsZS1wYXNzd2Q9bm8sIgotCi0jLS1lbmFibGUtcGVybCAgICAgICAgIGVuYWJsZSBwZXJsIGJhY2tlbmQgbm98eWVzfG1vZCBubwotIyAgVGhpcyByZXF1aXJlcyBhIGxvYWRhYmxlIHBlcmwgZHluYW1pYyBsaWJyYXJ5LCBpZiBlbmFibGVkIHdpdGhvdXQKLSMgIGRvaW5nIHNvbWV0aGluZyBhcHByb3ByaWF0ZSAoYnVpbGRpbmcgcGVybD8pIHRoZSBidWlsZCB3aWxsIHBpY2sKLSMgIHVwIHRoZSBidWlsZCBtYWNoaW5lIHBlcmwgLSBub3QgZ29vZCAoaW5oZXJpdCBwZXJsbmF0aXZlPykKLVBBQ0tBR0VDT05GSUdbcGVybF0gPSAiLS1lbmFibGUtcGVybD1tb2QsLS1lbmFibGUtcGVybD1ubyxwZXJsIgotCi0jLS1lbmFibGUtcmVsYXkgICAgICAgIGVuYWJsZSByZWxheSBiYWNrZW5kIG5vfHllc3xtb2QgW3llc10KLVBBQ0tBR0VDT05GSUdbcmVsYXldID0gIi0tZW5hYmxlLXJlbGF5PW1vZCwtLWVuYWJsZS1yZWxheT1ubywiCi0KLSMtLWVuYWJsZS1zaGVsbCAgICAgICAgZW5hYmxlIHNoZWxsIGJhY2tlbmQgbm98eWVzfG1vZCBubwotIyBjb25maWd1cmU6IFdBUk5JTkc6IFVzZSBvZiAtLXdpdGhvdXQtdGhyZWFkcyBpcyByZWNvbW1lbmRlZCB3aXRoIGJhY2stc2hlbGwKLVBBQ0tBR0VDT05GSUdbc2hlbGxdID0gIi0tZW5hYmxlLXNoZWxsPW1vZCAtLXdpdGhvdXQtdGhyZWFkcywtLWVuYWJsZS1zaGVsbD1ubywiCi0KLSMtLWVuYWJsZS1zb2NrICAgICAgICAgZW5hYmxlIHNvY2sgYmFja2VuZCBub3x5ZXN8bW9kIFtub10KLVBBQ0tBR0VDT05GSUdbc29ja10gPSAiLS1lbmFibGUtc29jaz1tb2QsLS1lbmFibGUtc29jaz1ubywiCi0KLSMtLWVuYWJsZS1zcWwgICAgICAgICAgZW5hYmxlIHNxbCBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KLSMgc3FsIHJlcXVpcmVzIHNvbWUgc3FsIGJhY2tlbmQgd2hpY2ggcHJvdmlkZXMgc3FsLmgsIHNxbGl0ZSogcHJvdmlkZXMKLSMgc3FsaXRlLmggKHdoaWNoIG1heSBiZSBjb21wYXRpYmxlIGJ1dCBoYXNuJ3QgYmVlbiB0cmllZC4pCi1QQUNLQUdFQ09ORklHW3NxbF0gPSAiLS1lbmFibGUtc3FsPW1vZCwtLWVuYWJsZS1zcWw9bm8sc3FsaXRlMyIKLQotIy0tZW5hYmxlLWR5bmdyb3VwICAgICBEeW5hbWljIEdyb3VwIG92ZXJsYXkgbm98eWVzfG1vZCBubwotIyAgVGhpcyBpcyBhIGRlbW8sIFByb3h5IENhY2hlIGRlZmluZXMgaW5pdF9tb2R1bGUgd2hpY2ggY29uZmxpY3RzIHdpdGggdGhlCi0jICBzYW1lIHN5bWJvbCBpbiBkeW5ncm91cAotUEFDS0FHRUNPTkZJR1tkeW5ncm91cF0gPSAiLS1lbmFibGUtZHluZ3JvdXA9bW9kLC0tZW5hYmxlLWR5bmdyb3VwPW5vLCIKLQotIy0tZW5hYmxlLXByb3h5Y2FjaGUgICBQcm94eSBDYWNoZSBvdmVybGF5IG5vfHllc3xtb2Qgbm8KLVBBQ0tBR0VDT05GSUdbcHJveHljYWNoZV0gPSAiLS1lbmFibGUtcHJveHljYWNoZT1tb2QsLS1lbmFibGUtcHJveHljYWNoZT1ubywiCi1GSUxFU18ke1BOfS1vdmVybGF5LXByb3h5Y2FjaGUgPSAiJHttZH0vcGNhY2hlLSouc28uKiIKLVBBQ0tBR0VTICs9ICIke1BOfS1vdmVybGF5LXByb3h5Y2FjaGUiCi0KLSMgQXBwZW5kIFVSQU5ET01fREVWSUNFPScvZGV2L3VyYW5kb20nIHRvIENQUEZMQUdTOgotIyBUaGlzIGFsbG93cyB0bHMgdG8gb2J0YWluIHJhbmRvbSBiaXRzIGZyb20gL2Rldi91cmFuZG9tLCBieSBkZWZhdWx0Ci0jIGl0IHdhcyBkaXNhYmxlZCBmb3IgY3Jvc3MtY29tcGlsaW5nLgotQ1BQRkxBR1NfYXBwZW5kID0gIiAtRF9HTlVfU09VUkNFIC1EVVJBTkRPTV9ERVZJQ0U9XCcvZGV2L3VyYW5kb21cJyAtZlBJQyIKLQotTERGTEFHU19hcHBlbmQgPSAiIC1wdGhyZWFkIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9saWJ0b29sL2J1aWxkLWF1eC9sdG1haW4uc2ggJHtTfS9idWlsZAotICAgIHJtIC1mICR7U30vbGlidG9vbAotICAgIGFjbG9jYWwKLSAgICBsaWJ0b29saXplIC0tZm9yY2UgLS1jb3B5Ci0gICAgZ251LWNvbmZpZ2l6ZQotICAgIGF1dG9jb25mCi0gICAgb2VfcnVuY29uZgotfQotCi1MRUFEX1NPTkFNRSA9ICJsaWJsZGFwLSR7TERBUF9WRVJ9LnNvLioiCi0KLSMgVGhlIGV4ZWN1dGFibGVzIGdvIGluIGEgc2VwYXJhdGUgcGFja2FnZS4gIFRoaXMgYWxsb3dzIHRoZQotIyBpbnN0YWxsYXRpb24gb2YgdGhlIGxpYnJhcmllcyB3aXRoIG5vIGRhZW1vbiBzdXBwb3J0LgotIyBFYWNoIG1vZHVsZSBhbHNvIGhhcyBpdHMgb3duIHBhY2thZ2UgLSBzZWUgYWJvdmUuCi1QQUNLQUdFUyArPSAiJHtQTn0tc2xhcGQgJHtQTn0tc2x1cnBkICR7UE59LWJpbiIKLQotIyBQYWNrYWdlIGNvbnRlbnRzIC0gc2hpZnQgbW9zdCBzdGFuZGFyZCBjb250ZW50cyB0byAtYmluCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKi5zby4qICR7c3lzY29uZmRpcn0vb3BlbmxkYXAvbGRhcC4qICR7bG9jYWxzdGF0ZWRpcn0vJHtCUE59L2RhdGEiCi1GSUxFU18ke1BOfS1zbGFwZCA9ICIke3N5c2NvbmZkaXJ9L2luaXQuZCAke2xpYmV4ZWNkaXJ9L3NsYXBkICR7c2JpbmRpcn0gJHtsb2NhbHN0YXRlZGlyfS9ydW4gJHtsb2NhbHN0YXRlZGlyfS92b2xhdGlsZS9ydW4gXAotICAgICR7c3lzY29uZmRpcn0vb3BlbmxkYXAvc2xhcGQuKiAke3N5c2NvbmZkaXJ9L29wZW5sZGFwL3NjaGVtYSBcCi0gICAgJHtzeXNjb25mZGlyfS9vcGVubGRhcC9EQl9DT05GSUcuZXhhbXBsZSAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyoiCi1GSUxFU18ke1BOfS1zbHVycGQgPSAiJHtsaWJleGVjZGlyfS9zbHVycGQgJHtsb2NhbHN0YXRlZGlyfS9vcGVubGRhcC1zbHVycCAke2xvY2Fsc3RhdGVkaXJ9L3J1biAke2xvY2Fsc3RhdGVkaXJ9L3ZvbGF0aWxlL3J1biIKLUZJTEVTXyR7UE59LWJpbiA9ICIke2JpbmRpcn0iCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vbGliKi5zbyAke2xpYmRpcn0vKi5sYSAke2xpYmRpcn0vKi5hICR7bGliZXhlY2Rpcn0vb3BlbmxkYXAvKi5hICR7bGliZXhlY2Rpcn0vb3BlbmxkYXAvKi5sYSAke2xpYmV4ZWNkaXJ9L29wZW5sZGFwLyouc28iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZXhlY2Rpcn0vb3BlbmxkYXAvLmRlYnVnIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGNhdCAke1dPUktESVJ9L2luaXRzY3JpcHQgPiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvb3BlbmxkYXAKLSAgICBjaG1vZCA3NTUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL29wZW5sZGFwCi0gICAgIyBUaGlzIGlzIGR1cGxpY2F0ZWQgaW4gL2V0Yy9vcGVubGRhcCBhbmQgaXMgZm9yIHNsYXBkCi0gICAgcm0gLWYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vb3BlbmxkYXAtZGF0YS9EQl9DT05GSUcuZXhhbXBsZQotCi0gICAgIyBJbnN0YWxsaW5nIHNsYXBkIHVuZGVyICR7c2Jpbn0gaXMgbW9yZSBGSFMgYW5kIExTQiBjb21wbGlhbmNlCi0gICAgbXYgJHtEfSR7bGliZXhlY2Rpcn0vc2xhcGQgJHtEfS8ke3NiaW5kaXJ9L3NsYXBkCi0gICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7bGliZXhlY2Rpcn0KLSAgICBTTEFQVE9PTFM9InNsYXBhZGQgc2xhcGNhdCBzbGFwZG4gc2xhcGluZGV4IHNsYXBwYXNzd2Qgc2xhcHRlc3Qgc2xhcGF1dGggc2xhcGFjbCBzbGFwc2NoZW1hIgotICAgIGNkICR7RH0vJHtzYmluZGlyfS8KLSAgICBybSAtZiAke1NMQVBUT09MU30KLSAgICBmb3IgaSBpbiAke1NMQVBUT09MU307IGRvIGxuIC1zZiBzbGFwZCAkaTsgZG9uZQotCi0gICAgcm1kaXIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKLSAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NsYXBkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyouc2VydmljZQotCi0gICAgIyBVc2VzIG1kbSBhcyB0aGUgZGF0YWJhc2UKLSAgICAjICBhbmQgbG9jYWxzdGF0ZWRpciBhcyBkYXRhIGRpcmVjdG9yeSAuLi4KLSAgICBzZWQgLWUgJ3MvIyBtb2R1bGVwYXRoL21vZHVsZXBhdGgvJyBcCi0gICAgICAgIC1lICdzLyMgbW9kdWxlbG9hZFxzKmJhY2tfYmRiLiovbW9kdWxlbG9hZCAgICBiYWNrX21kYi8nIFwKLSAgICAgICAgLWUgJ3MvZGF0YWJhc2VccypiZGIvZGF0YWJhc2UgICAgICAgIG1kYi8nIFwKLSAgICAgICAgLWUgJ3MlXmRpcmVjdG9yeVxzKi4qJWRpcmVjdG9yeSAgICR7bG9jYWxzdGF0ZWRpcn0vJHtCUE59L2RhdGEvJScgXAotICAgICAgICAtaSAke0R9JHtzeXNjb25mZGlyfS9vcGVubGRhcC9zbGFwZC5jb25mCi0KLSAgICBta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS8ke0JQTn0vZGF0YQotCi0KLX0KLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1zbGFwZCIKLUlOSVRTQ1JJUFRfTkFNRV8ke1BOfS1zbGFwZCA9ICJvcGVubGRhcCIKLUlOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXNsYXBkID0gImRlZmF1bHRzIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNsYXBkID0gImhvc3RhcGQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0tc2xhcGQgPz0gImRpc2FibGUiCi0KLQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7UE59LWJhY2tlbmRzLiogXiR7UE59LWJhY2tlbmQtLioiCi0KLSMgVGhlIG1vZHVsZXMgcmVxdWlyZSB0aGVpciAuc28gdG8gYmUgZHluYW1pY2FseSBsb2FkZWQKLUlOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtZG5zc3J2ICArPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1sZGFwICAgICs9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLW1ldGEgICAgKz0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtbWRiICAgICArPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1tb25pdG9yICs9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLW51bGwgICAgKz0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtcGFzc3dkICArPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1zaGVsbCAgICs9ICJkZXYtc28iCi0KLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGJhY2tlbmRfZGlyICAgID0gZC5leHBhbmQoJyR7bGliZXhlY2Rpcn0vb3BlbmxkYXAnKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGJhY2tlbmRfZGlyLCAnYmFja18oW2Etel0qKVwuc28kJywgJ29wZW5sZGFwLWJhY2tlbmQtJXMnLCAnT3BlbkxEQVAgJXMgYmFja2VuZCcsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBiYWNrZW5kX2RpciwgJ2JhY2tfKFthLXpdKilcLS4qXC5zb1wuLiokJywgJ29wZW5sZGFwLWJhY2tlbmQtJXMnLCAnT3BlbkxEQVAgJXMgYmFja2VuZCcsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCi0KLSAgICBtZXRhcGtnID0gIiR7UE59LWJhY2tlbmRzIgotICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8nICsgbWV0YXBrZywgIjEiKQotICAgIGQuc2V0VmFyKCdGSUxFU18nICsgbWV0YXBrZywgIiIpCi0gICAgbWV0YXBrZ19yZGVwZW5kcyA9IFtdCi0gICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCi0gICAgZm9yIHBrZyBpbiBwYWNrYWdlc1sxOl06Ci0gICAgICAgIGlmIHBrZy5jb3VudCgib3BlbmxkYXAtYmFja2VuZC0iKSBhbmQgbm90IHBrZyBpbiBtZXRhcGtnX3JkZXBlbmRzIGFuZCBub3QgcGtnLmNvdW50KCItZGV2IikgYW5kIG5vdCBwa2cuY291bnQoIi1kYmciKSBhbmQgbm90IHBrZy5jb3VudCgic3RhdGljIikgYW5kIG5vdCBwa2cuY291bnQoImxvY2FsZSIpOgotICAgICAgICAgICAgbWV0YXBrZ19yZGVwZW5kcy5hcHBlbmQocGtnKQotICAgIGQuc2V0VmFyKCdSREVQRU5EU18nICsgbWV0YXBrZywgJyAnLmpvaW4obWV0YXBrZ19yZGVwZW5kcykpCi0gICAgZC5zZXRWYXIoJ0RFU0NSSVBUSU9OXycgKyBtZXRhcGtnLCAnT3BlbkxEQVAgYmFja2VuZHMgbWV0YSBwYWNrYWdlJykKLSAgICBwYWNrYWdlcy5hcHBlbmQobWV0YXBrZykKLSAgICBkLnNldFZhcignUEFDS0FHRVMnLCAnICcuam9pbihwYWNrYWdlcykpCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmxkYXAvb3BlbmxkYXBfMi40LjQ5LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmxkYXAvb3BlbmxkYXBfMi40LjQ5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MGM3MDQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubGRhcC9vcGVubGRhcF8yLjQuNDkuYmIKQEAgLTAsMCArMSwyNTQgQEAKK1NVTU1BUlkgPSAiT3BlbkxEQVAgRGlyZWN0b3J5IFNlcnZpY2UiCitERVNDUklQVElPTiA9ICJPcGVuTERBUCBTb2Z0d2FyZSBpcyBhbiBvcGVuIHNvdXJjZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTGlnaHR3ZWlnaHQgRGlyZWN0b3J5IEFjY2VzcyBQcm90b2NvbC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lk9wZW5MREFQLm9yZy9saWNlbnNlLmh0bWwiCisjIFRoZSBPcGVuTERBUCBQdWJsaWMgTGljZW5zZSAtIHNlZSB0aGUgSE9NRVBBR0UgLSBkZWZpbmVzCisjIHRoZSBsaWNlbnNlLiAgd3d3Lm9wZW5sZGFwLm9yZyBjbGFpbXMgdGhpcyBpcyBPcGVuIFNvdXJjZQorIyAoc2VlIGh0dHA6Ly93d3cub3BlbmxkYXAub3JnKSwgdGhlIGxpY2Vuc2UgYXBwZWFycyB0byBiZQorIyBiYXNpY2FsbHkgQlNELiAgb3BlbnNvdXJjZS5vcmcgZG9lcyBub3QgcmVjb3JkIHRoaXMgbGljZW5zZQorIyBhdCBwcmVzZW50IChzbyBpdCBpcyBhcHBhcmVudGx5IG5vdCBPU0kgY2VydGlmaWVkKS4KK0xJQ0VOU0UgPSAiT3BlbkxEQVAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTUzOTFiNTU5ZDIzYTIyMzdiZGIyMWU3YTYyZGFlN2MzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTE1M2QwN2VmMDUyYzRhMzdhOGZhYzIzYmM2MDMxOTcyIFwKKyAgICAgICAgICAgICAgICAgICAgIgorU0VDVElPTiA9ICJsaWJzIgorCitMREFQX1ZFUiA9ICIke0AnLicuam9pbihkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzA6Ml0pfSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm9wZW5sZGFwLm9yZy9zb2Z0d2FyZS9kb3dubG9hZC9PcGVuTERBUC9vcGVubGRhcC1yZWxlYXNlLyR7QlB9LnRneiBcCisgICAgZmlsZTovL29wZW5sZGFwLW00LXB0aHJlYWQucGF0Y2ggXAorICAgIGZpbGU6Ly9vcGVubGRhcC0yLjQuMjgtZ251dGxzLWdjcnlwdC5wYXRjaCBcCisgICAgZmlsZTovL3VzZS11cmFuZG9tLnBhdGNoIFwKKyAgICBmaWxlOi8vaW5pdHNjcmlwdCBcCisgICAgZmlsZTovL3NsYXBkLnNlcnZpY2UgXAorICAgIGZpbGU6Ly90aHJlYWRfc3R1Yi5wYXRjaCBcCisgICAgZmlsZTovL29wZW5sZGFwLUNWRS0yMDE1LTMyNzYucGF0Y2ggXAorICAgIGZpbGU6Ly9yZW1vdmUtdXNlci1ob3N0LXB3ZC1mcm9tLXZlcnNpb24ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmE0N2E2YmI0MzE5MzU3ZWE3YjAzMmM0NTI4M2U3OWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTNiMTE3OTQ0YjQxODBmMjNiZWZlODdkMGRjZjQ3ZjI5ZGU3NzViZWZiYzQ2OWRjZjRhYzNkYWIzMzExZTU2ZSIKKworREVQRU5EUyA9ICJ1dGlsLWxpbnV4IGdyb2ZmLW5hdGl2ZSIKKworIyBUaGUgb3JpZ2luYWwgdG9wLm1rIHVzZWQgSU5TVEFMTCwgbm90IElOU1RBTExfU1RSSVBfUFJPR1JBTSB3aGVuCisjIGluc3RhbGxpbmcgLnNvIGFuZCBleGVjdXRhYmxlcywgdGhpcyBmYWlscyBpbiBjcm9zcyBjb21waWxhdGlvbgorIyBlbnZpcm9ubWVudHMKK1NSQ19VUkkgKz0gImZpbGU6Ly9pbnN0YWxsLXN0cmlwLnBhdGNoIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQgc3lzdGVtZAorCisjIENWIFNFVFRJTkdTCisjIFJlcXVpcmVkIHRvIHdvcmsgcm91bmQgQUNfRlVOQ19NRU1DTVAgd2hpY2ggZ2V0cyB0aGUgd3JvbmcgYW5zd2VyCisjIHdoZW4gY3Jvc3MgY29tcGlsaW5nIChzaG91bGQgYmUgaW4gc2l0ZT8pCitFWFRSQV9PRUNPTkYgKz0gImFjX2N2X2Z1bmNfbWVtY21wX3dvcmtpbmc9eWVzIgorCisjIENPTkZJRyBERUZJTklUSU9OUworIyBUaGUgZm9sbG93aW5nIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IGNhbm5vdCBiZSBkZXRlcm1pbmVkIGZvciBhCisjIGNyb3NzIGNvbXBpbGUgYXV0b21hZ2ljYWxseS4gIFNlbGVjdCBzaG91bGQgeWllbGQgZmluZSBvbiBhbGwgT0UKKyMgc3lzdGVtcy4uLgorRVhUUkFfT0VDT05GICs9ICItLXdpdGgteWllbGRpbmctc2VsZWN0PXllcyIKKyMgU2hhcmVkIGxpYnJhcmllcyBhcmUgbmljZS4uLgorRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1keW5hbWljIgorCitQQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIG1vZHVsZXMgXAorICAgICAgICAgICAgICAgICAgIG1kYiBsZGFwIG1ldGEgbW9uaXRvciBudWxsIHBhc3N3ZCBzaGVsbCBwcm94eWNhY2hlIGRuc3NydiBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCisiCisjLS13aXRoLXRscyAgICAgICAgICAgICAgd2l0aCBUTFMvU1NMIHN1cHBvcnQgYXV0b3xvcGVuc3NsfGdudXRscyBbYXV0b10KK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtdGxzPWdudXRscywsZ251dGxzIGxpYmdjcnlwdCIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLXRscz1vcGVuc3NsLCxvcGVuc3NsIgorCitQQUNLQUdFQ09ORklHW3Nhc2xdID0gIi0td2l0aC1jeXJ1cy1zYXNsLC0td2l0aG91dC1jeXJ1cy1zYXNsLGN5cnVzLXNhc2wiCitQQUNLQUdFQ09ORklHW21vZHVsZXNdID0gImx0X2N2X2Rsb3Blbl9zZWxmPXllcyAtLWVuYWJsZS1tb2R1bGVzLC0tZGlzYWJsZS1tb2R1bGVzLGxpYnRvb2wiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYiCisKKyMgU0xBUEQgb3B0aW9ucworIworIyBVTklYIGNyeXB0KDMpIHBhc3N3ZCBzdXBwb3J0OgorRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1jcnlwdCIKKworIyBTTEFQRCBCQUNLRU5ECisjCisjIFRoZSBiYWNrZW5kIG11c3QgYmUgc2V0IGJ5IHRoZSBjb25maWd1cmF0aW9uLiAgVGhpcyBjb250cm9scyB0aGUKKyMgcmVxdWlyZWQgZGF0YWJhc2UuCisjCisjIEJhY2tlbmRzPSJiZGIgZG5zc3J2IGhkYiBsZGFwIG1kYiBtZXRhIG1vbml0b3IgbmRiIG51bGwgcGFzc3dkIHBlcmwgcmVsYXkgc2hlbGwgc29jayBzcWwiCisjCisjIE5vdGUgdGhhdCBtdWx0aXBsZSBiYWNrZW5kcyBjYW4gYmUgYnVpbHQuICBUaGUgbGRibSBiYWNrZW5kIHJlcXVpcmVzIGEKKyMgYnVpbGQtdGltZSBjaG9pY2Ugb2YgZGF0YWJhc2UgQVBJLiAgVGhlIGJkYiBiYWNrZW5kIGZvcmNlcyB0aGlzIHRvIGJlCisjIERCNC4gIFRvIHVzZSB0aGUgZ2RibSAob3Igb3RoZXIpIEFQSSB0aGUgQmVya2VseSBkYXRhYmFzZSBtb2R1bGUgbXVzdAorIyBiZSByZW1vdmVkIGZyb20gdGhlIGJ1aWxkLgorbWQgPSAiJHtsaWJleGVjZGlyfS9vcGVubGRhcCIKKyMKKyMtLWVuYWJsZS1iZGIgICAgICAgICAgZW5hYmxlIEJlcmtlbGV5IERCIGJhY2tlbmQgbm98eWVzfG1vZCB5ZXMKKyMgVGhlIEJlcmtlbHkgREIgaXMgdGhlIHN0YW5kYXJkIGNob2ljZS4gIFRoaXMgdmVyc2lvbiBvZiBPcGVuTERBUCByZXF1aXJlcworIyB0aGUgdmVyc2lvbiA0IGltcGxlbWVudGF0aW9uIG9yIGJldHRlci4KK1BBQ0tBR0VDT05GSUdbYmRiXSA9ICItLWVuYWJsZS1iZGI9eWVzLC0tZW5hYmxlLWJkYj1ubyxkYiIKKworIy0tZW5hYmxlLWRuc3NydiAgICAgICBlbmFibGUgZG5zc3J2IGJhY2tlbmQgbm98eWVzfG1vZCBubworUEFDS0FHRUNPTkZJR1tkbnNzcnZdID0gIi0tZW5hYmxlLWRuc3Nydj1tb2QsLS1lbmFibGUtZG5zc3J2PW5vIgorCisjLS1lbmFibGUtaGRiICAgICAgICAgIGVuYWJsZSBIaWVyYXJjaGljYWwgREIgYmFja2VuZCBub3x5ZXN8bW9kIG5vCitQQUNLQUdFQ09ORklHW2hkYl0gPSAiLS1lbmFibGUtaGRiPXllcywtLWVuYWJsZS1oZGI9bm8sZGIiCisKKyMtLWVuYWJsZS1sZGFwICAgICAgICAgZW5hYmxlIGxkYXAgYmFja2VuZCBub3x5ZXN8bW9kIG5vCitQQUNLQUdFQ09ORklHW2xkYXBdID0gIi0tZW5hYmxlLWxkYXA9bW9kLC0tZW5hYmxlLWxkYXA9bm8sIgorCisjLS1lbmFibGUtbWRiICAgICAgICAgIGVuYWJsZSBtZGIgZGF0YWJhc2UgYmFja2VuZCBub3x5ZXN8bW9kIFt5ZXNdCitQQUNLQUdFQ09ORklHW21kYl0gPSAiLS1lbmFibGUtbWRiPXllcywtLWVuYWJsZS1tZGI9bm8sIgorCisjLS1lbmFibGUtbWV0YSAgICAgICAgIGVuYWJsZSBtZXRhZGlyZWN0b3J5IGJhY2tlbmQgbm98eWVzfG1vZCBubworUEFDS0FHRUNPTkZJR1ttZXRhXSA9ICItLWVuYWJsZS1tZXRhPW1vZCwtLWVuYWJsZS1tZXRhPW5vLCIKKworIy0tZW5hYmxlLW1vbml0b3IgICAgICBlbmFibGUgbW9uaXRvciBiYWNrZW5kIG5vfHllc3xtb2QgeWVzCitQQUNLQUdFQ09ORklHW21vbml0b3JdID0gIi0tZW5hYmxlLW1vbml0b3I9bW9kLC0tZW5hYmxlLW1vbml0b3I9bm8sIgorCisjLS1lbmFibGUtbmRiICAgICAgICAgIGVuYWJsZSBNeVNRTCBOREIgQ2x1c3RlciBiYWNrZW5kIG5vfHllc3xtb2QgW25vXQorUEFDS0FHRUNPTkZJR1tuZGJdID0gIi0tZW5hYmxlLW5kYj1tb2QsLS1lbmFibGUtbmRiPW5vLCIKKworIy0tZW5hYmxlLW51bGwgICAgICAgICBlbmFibGUgbnVsbCBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KK1BBQ0tBR0VDT05GSUdbbnVsbF0gPSAiLS1lbmFibGUtbnVsbD1tb2QsLS1lbmFibGUtbnVsbD1ubywiCisKKyMtLWVuYWJsZS1wYXNzd2QgICAgICAgZW5hYmxlIHBhc3N3ZCBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KK1BBQ0tBR0VDT05GSUdbcGFzc3dkXSA9ICItLWVuYWJsZS1wYXNzd2Q9bW9kLC0tZW5hYmxlLXBhc3N3ZD1ubywiCisKKyMtLWVuYWJsZS1wZXJsICAgICAgICAgZW5hYmxlIHBlcmwgYmFja2VuZCBub3x5ZXN8bW9kIG5vCisjICBUaGlzIHJlcXVpcmVzIGEgbG9hZGFibGUgcGVybCBkeW5hbWljIGxpYnJhcnksIGlmIGVuYWJsZWQgd2l0aG91dAorIyAgZG9pbmcgc29tZXRoaW5nIGFwcHJvcHJpYXRlIChidWlsZGluZyBwZXJsPykgdGhlIGJ1aWxkIHdpbGwgcGljaworIyAgdXAgdGhlIGJ1aWxkIG1hY2hpbmUgcGVybCAtIG5vdCBnb29kIChpbmhlcml0IHBlcmxuYXRpdmU/KQorUEFDS0FHRUNPTkZJR1twZXJsXSA9ICItLWVuYWJsZS1wZXJsPW1vZCwtLWVuYWJsZS1wZXJsPW5vLHBlcmwiCisKKyMtLWVuYWJsZS1yZWxheSAgICAgICAgZW5hYmxlIHJlbGF5IGJhY2tlbmQgbm98eWVzfG1vZCBbeWVzXQorUEFDS0FHRUNPTkZJR1tyZWxheV0gPSAiLS1lbmFibGUtcmVsYXk9bW9kLC0tZW5hYmxlLXJlbGF5PW5vLCIKKworIy0tZW5hYmxlLXNoZWxsICAgICAgICBlbmFibGUgc2hlbGwgYmFja2VuZCBub3x5ZXN8bW9kIG5vCisjIGNvbmZpZ3VyZTogV0FSTklORzogVXNlIG9mIC0td2l0aG91dC10aHJlYWRzIGlzIHJlY29tbWVuZGVkIHdpdGggYmFjay1zaGVsbAorUEFDS0FHRUNPTkZJR1tzaGVsbF0gPSAiLS1lbmFibGUtc2hlbGw9bW9kIC0td2l0aG91dC10aHJlYWRzLC0tZW5hYmxlLXNoZWxsPW5vLCIKKworIy0tZW5hYmxlLXNvY2sgICAgICAgICBlbmFibGUgc29jayBiYWNrZW5kIG5vfHllc3xtb2QgW25vXQorUEFDS0FHRUNPTkZJR1tzb2NrXSA9ICItLWVuYWJsZS1zb2NrPW1vZCwtLWVuYWJsZS1zb2NrPW5vLCIKKworIy0tZW5hYmxlLXNxbCAgICAgICAgICBlbmFibGUgc3FsIGJhY2tlbmQgbm98eWVzfG1vZCBubworIyBzcWwgcmVxdWlyZXMgc29tZSBzcWwgYmFja2VuZCB3aGljaCBwcm92aWRlcyBzcWwuaCwgc3FsaXRlKiBwcm92aWRlcworIyBzcWxpdGUuaCAod2hpY2ggbWF5IGJlIGNvbXBhdGlibGUgYnV0IGhhc24ndCBiZWVuIHRyaWVkLikKK1BBQ0tBR0VDT05GSUdbc3FsXSA9ICItLWVuYWJsZS1zcWw9bW9kLC0tZW5hYmxlLXNxbD1ubyxzcWxpdGUzIgorCisjLS1lbmFibGUtZHluZ3JvdXAgICAgIER5bmFtaWMgR3JvdXAgb3ZlcmxheSBub3x5ZXN8bW9kIG5vCisjICBUaGlzIGlzIGEgZGVtbywgUHJveHkgQ2FjaGUgZGVmaW5lcyBpbml0X21vZHVsZSB3aGljaCBjb25mbGljdHMgd2l0aCB0aGUKKyMgIHNhbWUgc3ltYm9sIGluIGR5bmdyb3VwCitQQUNLQUdFQ09ORklHW2R5bmdyb3VwXSA9ICItLWVuYWJsZS1keW5ncm91cD1tb2QsLS1lbmFibGUtZHluZ3JvdXA9bm8sIgorCisjLS1lbmFibGUtcHJveHljYWNoZSAgIFByb3h5IENhY2hlIG92ZXJsYXkgbm98eWVzfG1vZCBubworUEFDS0FHRUNPTkZJR1twcm94eWNhY2hlXSA9ICItLWVuYWJsZS1wcm94eWNhY2hlPW1vZCwtLWVuYWJsZS1wcm94eWNhY2hlPW5vLCIKK0ZJTEVTXyR7UE59LW92ZXJsYXktcHJveHljYWNoZSA9ICIke21kfS9wY2FjaGUtKi5zby4qIgorUEFDS0FHRVMgKz0gIiR7UE59LW92ZXJsYXktcHJveHljYWNoZSIKKworIyBBcHBlbmQgVVJBTkRPTV9ERVZJQ0U9Jy9kZXYvdXJhbmRvbScgdG8gQ1BQRkxBR1M6CisjIFRoaXMgYWxsb3dzIHRscyB0byBvYnRhaW4gcmFuZG9tIGJpdHMgZnJvbSAvZGV2L3VyYW5kb20sIGJ5IGRlZmF1bHQKKyMgaXQgd2FzIGRpc2FibGVkIGZvciBjcm9zcy1jb21waWxpbmcuCitDUFBGTEFHU19hcHBlbmQgPSAiIC1EX0dOVV9TT1VSQ0UgLURVUkFORE9NX0RFVklDRT1cJy9kZXYvdXJhbmRvbVwnIC1mUElDIgorCitMREZMQUdTX2FwcGVuZCA9ICIgLXB0aHJlYWQiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICBjcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2xpYnRvb2wvYnVpbGQtYXV4L2x0bWFpbi5zaCAke1N9L2J1aWxkCisgICAgcm0gLWYgJHtTfS9saWJ0b29sCisgICAgYWNsb2NhbAorICAgIGxpYnRvb2xpemUgLS1mb3JjZSAtLWNvcHkKKyAgICBnbnUtY29uZmlnaXplCisgICAgYXV0b2NvbmYKKyAgICBvZV9ydW5jb25mCit9CisKK0xFQURfU09OQU1FID0gImxpYmxkYXAtJHtMREFQX1ZFUn0uc28uKiIKKworIyBUaGUgZXhlY3V0YWJsZXMgZ28gaW4gYSBzZXBhcmF0ZSBwYWNrYWdlLiAgVGhpcyBhbGxvd3MgdGhlCisjIGluc3RhbGxhdGlvbiBvZiB0aGUgbGlicmFyaWVzIHdpdGggbm8gZGFlbW9uIHN1cHBvcnQuCisjIEVhY2ggbW9kdWxlIGFsc28gaGFzIGl0cyBvd24gcGFja2FnZSAtIHNlZSBhYm92ZS4KK1BBQ0tBR0VTICs9ICIke1BOfS1zbGFwZCAke1BOfS1zbHVycGQgJHtQTn0tYmluIgorCisjIFBhY2thZ2UgY29udGVudHMgLSBzaGlmdCBtb3N0IHN0YW5kYXJkIGNvbnRlbnRzIHRvIC1iaW4KK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWIqLnNvLiogJHtzeXNjb25mZGlyfS9vcGVubGRhcC9sZGFwLiogJHtsb2NhbHN0YXRlZGlyfS8ke0JQTn0vZGF0YSIKK0ZJTEVTXyR7UE59LXNsYXBkID0gIiR7c3lzY29uZmRpcn0vaW5pdC5kICR7bGliZXhlY2Rpcn0vc2xhcGQgJHtzYmluZGlyfSAke2xvY2Fsc3RhdGVkaXJ9L3J1biAke2xvY2Fsc3RhdGVkaXJ9L3ZvbGF0aWxlL3J1biBcCisgICAgJHtzeXNjb25mZGlyfS9vcGVubGRhcC9zbGFwZC4qICR7c3lzY29uZmRpcn0vb3BlbmxkYXAvc2NoZW1hIFwKKyAgICAke3N5c2NvbmZkaXJ9L29wZW5sZGFwL0RCX0NPTkZJRy5leGFtcGxlICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKiIKK0ZJTEVTXyR7UE59LXNsdXJwZCA9ICIke2xpYmV4ZWNkaXJ9L3NsdXJwZCAke2xvY2Fsc3RhdGVkaXJ9L29wZW5sZGFwLXNsdXJwICR7bG9jYWxzdGF0ZWRpcn0vcnVuICR7bG9jYWxzdGF0ZWRpcn0vdm9sYXRpbGUvcnVuIgorRklMRVNfJHtQTn0tYmluID0gIiR7YmluZGlyfSIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS9saWIqLnNvICR7bGliZGlyfS8qLmxhICR7bGliZGlyfS8qLmEgJHtsaWJleGVjZGlyfS9vcGVubGRhcC8qLmEgJHtsaWJleGVjZGlyfS9vcGVubGRhcC8qLmxhICR7bGliZXhlY2Rpcn0vb3BlbmxkYXAvKi5zbyIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJleGVjZGlyfS9vcGVubGRhcC8uZGVidWciCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgY2F0ICR7V09SS0RJUn0vaW5pdHNjcmlwdCA+ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9vcGVubGRhcAorICAgIGNobW9kIDc1NSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvb3BlbmxkYXAKKyAgICAjIFRoaXMgaXMgZHVwbGljYXRlZCBpbiAvZXRjL29wZW5sZGFwIGFuZCBpcyBmb3Igc2xhcGQKKyAgICBybSAtZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9vcGVubGRhcC1kYXRhL0RCX0NPTkZJRy5leGFtcGxlCisKKyAgICAjIEluc3RhbGxpbmcgc2xhcGQgdW5kZXIgJHtzYmlufSBpcyBtb3JlIEZIUyBhbmQgTFNCIGNvbXBsaWFuY2UKKyAgICBtdiAke0R9JHtsaWJleGVjZGlyfS9zbGFwZCAke0R9LyR7c2JpbmRpcn0vc2xhcGQKKyAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsaWJleGVjZGlyfQorICAgIFNMQVBUT09MUz0ic2xhcGFkZCBzbGFwY2F0IHNsYXBkbiBzbGFwaW5kZXggc2xhcHBhc3N3ZCBzbGFwdGVzdCBzbGFwYXV0aCBzbGFwYWNsIHNsYXBzY2hlbWEiCisgICAgY2QgJHtEfS8ke3NiaW5kaXJ9LworICAgIHJtIC1mICR7U0xBUFRPT0xTfQorICAgIGZvciBpIGluICR7U0xBUFRPT0xTfTsgZG8gbG4gLXNmIHNsYXBkICRpOyBkb25lCisKKyAgICBybWRpciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgorICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc2xhcGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKyAgICBzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCisKKyAgICAjIFVzZXMgbWRtIGFzIHRoZSBkYXRhYmFzZQorICAgICMgIGFuZCBsb2NhbHN0YXRlZGlyIGFzIGRhdGEgZGlyZWN0b3J5IC4uLgorICAgIHNlZCAtZSAncy8jIG1vZHVsZXBhdGgvbW9kdWxlcGF0aC8nIFwKKyAgICAgICAgLWUgJ3MvIyBtb2R1bGVsb2FkXHMqYmFja19iZGIuKi9tb2R1bGVsb2FkICAgIGJhY2tfbWRiLycgXAorICAgICAgICAtZSAncy9kYXRhYmFzZVxzKmJkYi9kYXRhYmFzZSAgICAgICAgbWRiLycgXAorICAgICAgICAtZSAncyVeZGlyZWN0b3J5XHMqLiolZGlyZWN0b3J5ICAgJHtsb2NhbHN0YXRlZGlyfS8ke0JQTn0vZGF0YS8lJyBcCisgICAgICAgIC1pICR7RH0ke3N5c2NvbmZkaXJ9L29wZW5sZGFwL3NsYXBkLmNvbmYKKworICAgIG1rZGlyIC1wICR7RH0ke2xvY2Fsc3RhdGVkaXJ9LyR7QlBOfS9kYXRhCisKKworfQorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59LXNsYXBkIgorSU5JVFNDUklQVF9OQU1FXyR7UE59LXNsYXBkID0gIm9wZW5sZGFwIgorSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0tc2xhcGQgPSAiZGVmYXVsdHMiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tc2xhcGQgPSAiaG9zdGFwZC5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfS1zbGFwZCA/PSAiZGlzYWJsZSIKKworCitQQUNLQUdFU19EWU5BTUlDICs9ICJeJHtQTn0tYmFja2VuZHMuKiBeJHtQTn0tYmFja2VuZC0uKiIKKworIyBUaGUgbW9kdWxlcyByZXF1aXJlIHRoZWlyIC5zbyB0byBiZSBkeW5hbWljYWx5IGxvYWRlZAorSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1kbnNzcnYgICs9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLWxkYXAgICAgKz0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtbWV0YSAgICArPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1tZGIgICAgICs9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLW1vbml0b3IgKz0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtbnVsbCAgICArPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1wYXNzd2QgICs9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLXNoZWxsICAgKz0gImRldi1zbyIKKworCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgYmFja2VuZF9kaXIgICAgPSBkLmV4cGFuZCgnJHtsaWJleGVjZGlyfS9vcGVubGRhcCcpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgYmFja2VuZF9kaXIsICdiYWNrXyhbYS16XSopXC5zbyQnLCAnb3BlbmxkYXAtYmFja2VuZC0lcycsICdPcGVuTERBUCAlcyBiYWNrZW5kJywgcHJlcGVuZD1UcnVlLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGJhY2tlbmRfZGlyLCAnYmFja18oW2Etel0qKVwtLipcLnNvXC4uKiQnLCAnb3BlbmxkYXAtYmFja2VuZC0lcycsICdPcGVuTERBUCAlcyBiYWNrZW5kJywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKKworICAgIG1ldGFwa2cgPSAiJHtQTn0tYmFja2VuZHMiCisgICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZXycgKyBtZXRhcGtnLCAiMSIpCisgICAgZC5zZXRWYXIoJ0ZJTEVTXycgKyBtZXRhcGtnLCAiIikKKyAgICBtZXRhcGtnX3JkZXBlbmRzID0gW10KKyAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKKyAgICBmb3IgcGtnIGluIHBhY2thZ2VzWzE6XToKKyAgICAgICAgaWYgcGtnLmNvdW50KCJvcGVubGRhcC1iYWNrZW5kLSIpIGFuZCBub3QgcGtnIGluIG1ldGFwa2dfcmRlcGVuZHMgYW5kIG5vdCBwa2cuY291bnQoIi1kZXYiKSBhbmQgbm90IHBrZy5jb3VudCgiLWRiZyIpIGFuZCBub3QgcGtnLmNvdW50KCJzdGF0aWMiKSBhbmQgbm90IHBrZy5jb3VudCgibG9jYWxlIik6CisgICAgICAgICAgICBtZXRhcGtnX3JkZXBlbmRzLmFwcGVuZChwa2cpCisgICAgZC5zZXRWYXIoJ1JERVBFTkRTXycgKyBtZXRhcGtnLCAnICcuam9pbihtZXRhcGtnX3JkZXBlbmRzKSkKKyAgICBkLnNldFZhcignREVTQ1JJUFRJT05fJyArIG1ldGFwa2csICdPcGVuTERBUCBiYWNrZW5kcyBtZXRhIHBhY2thZ2UnKQorICAgIHBhY2thZ2VzLmFwcGVuZChtZXRhcGtnKQorICAgIGQuc2V0VmFyKCdQQUNLQUdFUycsICcgJy5qb2luKHBhY2thZ2VzKSkKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wY3NjLWxpdGUvcGNzYy1saXRlLzAwMDEtcGNzYy1zcHktdXNlLXB5dGhvbjMtb25seS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bjc2MtbGl0ZS9wY3NjLWxpdGUvMDAwMS1wY3NjLXNweS11c2UtcHl0aG9uMy1vbmx5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlN2IwYWQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wY3NjLWxpdGUvcGNzYy1saXRlLzAwMDEtcGNzYy1zcHktdXNlLXB5dGhvbjMtb25seS5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIDc1ZGQ5ODg3Njk1MWQ4Njg5MGNlYjMwYmU1MjFkZTU3ZmQzMWUzYzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZXkgWmhpemhpa2luIDxhbmRyZXkuekBnbWFpbC5jb20+CitEYXRlOiBNb24sIDI3IEphbiAyMDIwIDEzOjI3OjEyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHBjc2Mtc3B5OiB1c2UgcHl0aG9uMyBvbmx5CisKK1B5dGhvbjIgaGFzIGJlZW4gRU9MIGFuZCBtb3N0IGRpc3RyaWJ1dGlvbnMgd291bGQgbm90IHByb3ZpZGUgYW55CitzdXBwb3J0IGZvciBpdCBhbnltb3JlLiBTaW5jZSBQeXRob24zIGlzIGF2YWlsYWJsZSBpbiBhbGwgZGlzdHJpYnV0aW9ucworbm93LCBzd2l0Y2ggcGNzYy1zcHkgdG8gdXNlIGl0IGV4Y2x1c2l2ZWx5LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQW5kcmV5IFpoaXpoaWtpbiA8YW5kcmV5LnpAZ21haWwuY29tPgorLS0tCisgc3JjL3NweS9wY3NjLXNweSB8IDkgKystLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9zcHkvcGNzYy1zcHkgYi9zcmMvc3B5L3Bjc2Mtc3B5CitpbmRleCA4NTIyMmM2Li45NjUxMzhlIDEwMDc1NQorLS0tIGEvc3JjL3NweS9wY3NjLXNweQorKysrIGIvc3JjL3NweS9wY3NjLXNweQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIAorICIiIgorICMgICAgRGlzcGxheSBQQy9TQyBmdW5jdGlvbnMgYXJndW1lbnRzCitAQCAtMjIsMTIgKzIyLDcgQEAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgorIGltcG9ydCBvcworIGltcG9ydCBzaWduYWwKKyBpbXBvcnQgdGltZQorLXRyeToKKy0gICAgIyBmb3IgUHl0aG9uMworLSAgICBmcm9tIHF1ZXVlIGltcG9ydCBRdWV1ZQorLWV4Y2VwdCBJbXBvcnRFcnJvcjoKKy0gICAgIyBmb3IgUHl0aG9uMgorLSAgICBmcm9tIFF1ZXVlIGltcG9ydCBRdWV1ZQorK2Zyb20gcXVldWUgaW1wb3J0IFF1ZXVlCisgZnJvbSB0aHJlYWRpbmcgaW1wb3J0IFRocmVhZAorIGZyb20gb3BlcmF0b3IgaW1wb3J0IGF0dHJnZXR0ZXIKKyAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bjc2MtbGl0ZS9wY3NjLWxpdGVfMS44LjI2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGNzYy1saXRlL3Bjc2MtbGl0ZV8xLjguMjYuYmIKaW5kZXggNWU2MDg0Ni4uOTFkNzdhYyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGNzYy1saXRlL3Bjc2MtbGl0ZV8xLjguMjYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGNzYy1saXRlL3Bjc2MtbGl0ZV8xLjguMjYuYmIKQEAgLTEwLDExICsxMCwxNCBAQAogTElDRU5TRV8ke1BOfS1zcHktZGV2ID0gIkdQTHYzKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTYyOGMwMWJhOTg1ZWNmYTIxNjc3ZjVlZTJkNTIwMmY2IgogCi1TUkNfVVJJID0gImh0dHBzOi8vcGNzY2xpdGUuYXBkdS5mci9maWxlcy8ke0JQfS50YXIuYnoyIgorU1JDX1VSSSA9ICJcCisJaHR0cHM6Ly9wY3NjbGl0ZS5hcGR1LmZyL2ZpbGVzLyR7QlB9LnRhci5iejIgXAorCWZpbGU6Ly8wMDAxLXBjc2Mtc3B5LXVzZS1weXRob24zLW9ubHkucGF0Y2ggXAorIgogU1JDX1VSSVttZDVzdW1dID0gIjlkMzY4ODI5OTg0NDlkYWNlZWMyNjdjNjhhMjFmZjBkIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNlYjdiZTdkNmVmNjE4YzBhNDQ0MzE2Y2Y1YzFmMmY5ZDcyMjdhZWRiYTdhMTkyZjM4OWZlM2U3YzBkZmJiZDkiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQgcGtnY29uZmlnCitpbmhlcml0IGF1dG90b29scyBzeXN0ZW1kIHBrZ2NvbmZpZyBwZXJsbmF0aXZlCiAKIEVYVFJBX09FQ09ORiA9ICIgXAogICAgIC0tZGlzYWJsZS1saWJ1c2IgXApAQCAtNTAsNiArNTMsNiBAQAogUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgogUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKIFNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJwY3NjZC5zb2NrZXQiCi1SREVQRU5EU18ke1BOfS1zcHkgKz0icHl0aG9uIgorUkRFUEVORFNfJHtQTn0tc3B5ICs9InB5dGhvbjMiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9jby9wb2NvXzEuOS40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9jby9wb2NvXzEuOS40LmJiCmluZGV4IGYxZGFiY2QuLmZjZDUyMTkgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvY28vcG9jb18xLjkuNC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb2NvL3BvY29fMS45LjQuYmIKQEAgLTE2LDYgKzE2LDggQEAKICAgICIKIFNSQ1JFViA9ICJiOTUzOTNkY2MzNjQwODA3ODM4ZTgzMjNiNGU2MDBlNTRkMmU4MTE2IgogCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJwb2NvLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKKwogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogaW5oZXJpdCBjbWFrZSBwdGVzdApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyXzAuODQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlcl8wLjg0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxNTM4NjguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyXzAuODQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLVNVTU1BUlkgPSAiUG9wcGxlciBpcyBhIFBERiByZW5kZXJpbmcgbGlicmFyeSBiYXNlZCBvbiB0aGUgeHBkZi0zLjAgY29kZSBiYXNlIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9wb3BwbGVyLmZyZWVkZXNrdG9wLm9yZy8iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3BvcHBsZXIuZnJlZWRlc2t0b3Aub3JnLyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1vdmVyd3JpdGUtYWxsLW91ci1idWlsZC1mbGFncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9iYXNlbmFtZS1pbmNsdWRlLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImUxNGE4YWNhODgwOTkwOGFkNDM2NGMzMmMxN2JjYjkyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM3YTEzMGRhNzQzYjM4YTU0OGY3YTIxZmU1OTQwNTA2ZmIxOTQ5ZjRlYmRkMzIwOWYwZTViMzAyZmExMzk3MzEiCi0KLURFUEVORFMgPSAiZm9udGNvbmZpZyB6bGliIGNhaXJvIGxjbXMgZ2xpYi0yLjAiCi0KLWluaGVyaXQgY21ha2UgcGtnY29uZmlnIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1QQUNLQUdFQ09ORklHID8/PSAianBlZyBvcGVuanBlZyBwbmcgdGlmZiBuc3MgJHtAYmIudXRpbHMuY29udGFpbnMoJ0JCRklMRV9DT0xMRUNUSU9OUycsICdxdDUtbGF5ZXInLCAncXQ1JywgJycsIGQpfSIKLVBBQ0tBR0VDT05GSUdbanBlZ10gPSAiLURXSVRIX0pQRUc9T04gLURFTkFCTEVfRENUREVDT0RFUj1saWJqcGVnLC1EV0lUSF9KUEVHPU9GRiAtREVOQUJMRV9EQ1RERUNPREVSPW5vbmUsanBlZyIKLVBBQ0tBR0VDT05GSUdbcG5nXSA9ICItRFdJVEhfUE5HPU9OLC1EV0lUSF9QTkc9T0ZGLGxpYnBuZyIKLVBBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLURXSVRIX1RJRkY9T04sLURXSVRIX1RJRkY9T0ZGLHRpZmYiCi1QQUNLQUdFQ09ORklHW2N1cmxdID0gIi1ERU5BQkxFX0xJQkNVUkw9T04sLURFTkFCTEVfTElCQ1VSTD1PRkYsY3VybCIKLVBBQ0tBR0VDT05GSUdbb3BlbmpwZWddID0gIi1ERU5BQkxFX0xJQk9QRU5KUEVHPW9wZW5qcGVnMiwtREVOQUJMRV9MSUJPUEVOSlBFRz1ub25lLG9wZW5qcGVnIgotUEFDS0FHRUNPTkZJR1txdDVdID0gIi1ERU5BQkxFX1FUNT1PTiwtREVOQUJMRV9RVDU9T0ZGLHF0YmFzZSBxdHRvb2xzLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbbnNzXSA9ICItRFdJVEhfTlNTMz1PTiwtRFdJVEhfTlNTMz1PRkYsbnNzIgotCi0jIHN1cnByaXNlIC0gZGlkIG5vdCBleHBlY3QgdGhpcyB0byB3b3JrIDopCi1pbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3F0NScsICdjbWFrZV9xdDUnLCAnJywgZCl9Ci0KLVNFQ1VSSVRZX0NGTEFHUyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotCi1FWFRSQV9PRUNNQUtFICs9ICIgXAotICAgIC1ERU5BQkxFX0NNUz1sY21zMiBcCi0gICAgLURFTkFCTEVfVU5TVEFCTEVfQVBJX0FCSV9IRUFERVJTPU9OIFwKLSAgICAtREJVSUxEX0dUS19URVNUUz1PRkYgXAotICAgIC1ERU5BQkxFX1pMSUI9T04gXAotICAgIC1EQ01BS0VfQ1hYX0lNUExJQ0lUX0lOQ0xVREVfRElSRUNUT1JJRVM6UEFUSD0nJHtTVEFHSU5HX0lOQ0RJUn0nIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLURFTkFCTEVfR09CSkVDVF9JTlRST1NQRUNUSU9OPU9OJywgJy1ERU5BQkxFX0dPQkpFQ1RfSU5UUk9TUEVDVElPTj1PRkYnLCBkKX0gXAotIgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotICAgICMgcG9wcGxlciBtYWNybyB1c2VzIHBrZy1jb25maWcgdG8gY2hlY2sgZm9yIGctaXIgcnVudGltZXMuIFNvbWV0aGluZwotICAgICMgbWFrZXMgdGhlbSBwb2ludCB0byAvdXNyL2Jpbi4gQWxpZ24gdGhlbSB0byBzeXNyb290IC0gdGhhdCdzIHdoZXJlIHRoZQotICAgICMgZ2lyLXdyYXBwZXJzIGFyZToKLSAgICBzZWQgLWkgJ3M6ICR7YmluZGlyfS9nLWlyOiAke1NUQUdJTkdfQklORElSfS9nLWlyOicgJHtCfS9idWlsZC5uaW5qYQotfQotCi1QQUNLQUdFUyA9KyAibGlicG9wcGxlciBsaWJwb3BwbGVyLWdsaWIiCi1GSUxFU19saWJwb3BwbGVyID0gIiR7bGliZGlyfS9saWJwb3BwbGVyLnNvLioiCi1GSUxFU19saWJwb3BwbGVyLWdsaWIgPSAiJHtsaWJkaXJ9L2xpYnBvcHBsZXItZ2xpYi5zby4qIgotCi1SREVQRU5EU19saWJwb3BwbGVyID0gInBvcHBsZXItZGF0YSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlcl8wLjg2LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXJfMC44Ni4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2MDY3ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXJfMC44Ni4xLmJiCkBAIC0wLDAgKzEsNTIgQEAKK1NVTU1BUlkgPSAiUG9wcGxlciBpcyBhIFBERiByZW5kZXJpbmcgbGlicmFyeSBiYXNlZCBvbiB0aGUgeHBkZi0zLjAgY29kZSBiYXNlIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9wb3BwbGVyLmZyZWVkZXNrdG9wLm9yZy8iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3BvcHBsZXIuZnJlZWRlc2t0b3Aub3JnLyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1vdmVyd3JpdGUtYWxsLW91ci1idWlsZC1mbGFncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9iYXNlbmFtZS1pbmNsdWRlLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjJhNjM4NzM5ZjI5ZTgyYTBhNTdiNjMzZWEzOWM4N2YzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFmNjMwYTI3N2M4ZTE5NGMzMTMzOWM1NDQ2MjQxODM0YWVkNmVkM2Q0YjRkYzcwODAzMTFlNTFjNjYyNTdmNmMiCisKK0RFUEVORFMgPSAiZm9udGNvbmZpZyB6bGliIGNhaXJvIGxjbXMgZ2xpYi0yLjAiCisKK2luaGVyaXQgY21ha2UgcGtnY29uZmlnIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitQQUNLQUdFQ09ORklHID8/PSAianBlZyBvcGVuanBlZyBwbmcgdGlmZiBuc3Mgc3BsYXNoIgorUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItRFdJVEhfSlBFRz1PTiAtREVOQUJMRV9EQ1RERUNPREVSPWxpYmpwZWcsLURXSVRIX0pQRUc9T0ZGIC1ERU5BQkxFX0RDVERFQ09ERVI9bm9uZSxqcGVnIgorUEFDS0FHRUNPTkZJR1twbmddID0gIi1EV0lUSF9QTkc9T04sLURXSVRIX1BORz1PRkYsbGlicG5nIgorUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItRFdJVEhfVElGRj1PTiwtRFdJVEhfVElGRj1PRkYsdGlmZiIKK1BBQ0tBR0VDT05GSUdbY3VybF0gPSAiLURFTkFCTEVfTElCQ1VSTD1PTiwtREVOQUJMRV9MSUJDVVJMPU9GRixjdXJsIgorUEFDS0FHRUNPTkZJR1tvcGVuanBlZ10gPSAiLURFTkFCTEVfTElCT1BFTkpQRUc9b3BlbmpwZWcyLC1ERU5BQkxFX0xJQk9QRU5KUEVHPW5vbmUsb3BlbmpwZWciCitQQUNLQUdFQ09ORklHW3F0NV0gPSAiLURFTkFCTEVfUVQ1PU9OLC1ERU5BQkxFX1FUNT1PRkYscXRiYXNlIHF0dG9vbHMtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1tuc3NdID0gIi1EV0lUSF9OU1MzPU9OLC1EV0lUSF9OU1MzPU9GRixuc3MiCitQQUNLQUdFQ09ORklHW3NwbGFzaF0gPSAiLURFTkFCTEVfU1BMQVNIPU9OLC1ERU5BQkxFX1NQTEFTSD1PRkYsYm9vc3QiCisKKyMgc3VycHJpc2UgLSBkaWQgbm90IGV4cGVjdCB0aGlzIHRvIHdvcmsgOikKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncXQ1JywgJ2NtYWtlX3F0NScsICcnLCBkKX0KKworU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCisKK0VYVFJBX09FQ01BS0UgKz0gIiBcCisgICAgLURFTkFCTEVfQ01TPWxjbXMyIFwKKyAgICAtREVOQUJMRV9VTlNUQUJMRV9BUElfQUJJX0hFQURFUlM9T04gXAorICAgIC1EQlVJTERfR1RLX1RFU1RTPU9GRiBcCisgICAgLURFTkFCTEVfWkxJQj1PTiBcCisgICAgLURDTUFLRV9DWFhfSU1QTElDSVRfSU5DTFVERV9ESVJFQ1RPUklFUzpQQVRIPScke1NUQUdJTkdfSU5DRElSfScgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICctREVOQUJMRV9HT0JKRUNUX0lOVFJPU1BFQ1RJT049T04nLCAnLURFTkFCTEVfR09CSkVDVF9JTlRST1NQRUNUSU9OPU9GRicsIGQpfSBcCisiCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisgICAgIyBwb3BwbGVyIG1hY3JvIHVzZXMgcGtnLWNvbmZpZyB0byBjaGVjayBmb3IgZy1pciBydW50aW1lcy4gU29tZXRoaW5nCisgICAgIyBtYWtlcyB0aGVtIHBvaW50IHRvIC91c3IvYmluLiBBbGlnbiB0aGVtIHRvIHN5c3Jvb3QgLSB0aGF0J3Mgd2hlcmUgdGhlCisgICAgIyBnaXItd3JhcHBlcnMgYXJlOgorICAgIHNlZCAtaSAnczogJHtiaW5kaXJ9L2ctaXI6ICR7U1RBR0lOR19CSU5ESVJ9L2ctaXI6JyAke0J9L2J1aWxkLm5pbmphCit9CisKK1BBQ0tBR0VTID0rICJsaWJwb3BwbGVyIGxpYnBvcHBsZXItZ2xpYiIKK0ZJTEVTX2xpYnBvcHBsZXIgPSAiJHtsaWJkaXJ9L2xpYnBvcHBsZXIuc28uKiIKK0ZJTEVTX2xpYnBvcHBsZXItZ2xpYiA9ICIke2xpYmRpcn0vbGlicG9wcGxlci1nbGliLnNvLioiCisKK1JERVBFTkRTX2xpYnBvcHBsZXIgPSAicG9wcGxlci1kYXRhIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcHYvcHZfMS42LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wdi9wdl8xLjYuNi5iYgppbmRleCA5NjQ5NTU1Li4wZWVmODJiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wdi9wdl8xLjYuNi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wdi9wdl8xLjYuNi5iYgpAQCAtNyw2ICs3LDkgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJmZjM1NjRmZGRjYzJiOWJkNGE5YzFkMTQzYWJhNGI0YyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MDhlZjkzNWY3YTM3N2UxNDM5YzE4MWM0ZmMxODhkMjQ3ZGExMGQ1MWExOWVmNzliY2RlZTUwNDNiMDk3M2YxIgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pdmFyY2guY29tL3Byb2dyYW1zL3B2LnNodG1sIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicHYtKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhci5iejIiCisKIGluaGVyaXQgYXV0b3Rvb2xzCiAKIExERU1VTEFUSU9OX21pcHNhcmNobjMyID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2JpZ2VuZGlhbicsICdlbGYzMmJ0c21pcG4zMicsICdlbGYzMmx0c21pcG4zMicsIGQpfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3JlbW1pbmEvcmVtbWluYV8xLjMuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3JlbW1pbmEvcmVtbWluYV8xLjMuNi5iYgppbmRleCAxNGZiYzk0Li41YjY2MzQ4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9yZW1taW5hL3JlbW1pbmFfMS4zLjYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcmVtbWluYS9yZW1taW5hXzEuMy42LmJiCkBAIC0zLDEwICszLDggQEAKIFNFQ1RJT04gPSAiU3VwcG9ydCIKIExJQ0VOU0UgPSAiR1BMdjIgJiBvcGVuc3NsIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZGFiNzIxNTUxMjA0NGQ0OTAzNzI3MmNlMWFjNGVhOGYgZmlsZTovL0xJQ0VOU0UuT3BlblNTTDttZDU9YzFlYjNjZWUwYTRkZWEyNzUwM2M1MzEyNjdhNjk3NjkiCi1ERVBFTkRTICs9ICJvcGVuc3NsIGZyZWVyZHAgZ3RrKzMgZ2RrLXBpeGJ1ZiBhdGsgbGliZ2NyeXB0IGF2YWhpLXVpIGxpYnNvZGl1bSBsaWJzc2ggdnRlIGpzb24tZ2xpYiBsaWJzb3VwLTIuNCBsaWJ2bmNzZXJ2ZXIgbGlic2VjcmV0IgorREVQRU5EUyArPSAib3BlbnNzbCBmcmVlcmRwIGd0ayszIGdkay1waXhidWYgYXRrIGxpYmdjcnlwdCBhdmFoaS11aSBsaWJzb2RpdW0gbGlic3NoIHZ0ZSBqc29uLWdsaWIgbGlic291cC0yLjQgbGlidm5jc2VydmVyIGxpYnNlY3JldCBsaWJ4a2JmaWxlIgogCi1ERVBFTkRTX2FwcGVuZF94ODYgPSAiIHNwaWNlIHNwaWNlLXByb3RvY29sIgotREVQRU5EU19hcHBlbmRfeDg2LTY0ID0gIiBzcGljZSBzcGljZS1wcm90b2NvbCIKIAogREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJleGVjaW5mbyIKIExERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWxleGVjaW5mbyIKQEAgLTE4LDE2ICsxNiwxMCBAQAogCiBTID0gIiR7V09SS0RJUn0vUmVtbWluYS12JHtQVn0iCiAKLWluaGVyaXQgY21ha2UgZmVhdHVyZXNfY2hlY2sKK2luaGVyaXQgY21ha2UgZmVhdHVyZXNfY2hlY2sgbWltZS14ZGcKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKLSMgZGVwZW5kcyBvbiBhdmFoaS11aSB3aXRoIHRoaXMgcmVzdHJpY3Rpb24KLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEszRElTVFJPRkVBVFVSRVN9IgotCi1FWFRSQV9PRUNNQUtFICs9ICItRFdJVEhfQVBQSU5ESUNBVE9SPU9GRiAtRFdJVEhfR0VUVEVYVD1PRkYgLURXSVRIX1RSQU5TTEFUSU9OUz1PRkYgLURXSVRIX1NQSUNFPU9GRiIKLQotRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2ID0gIiAtRFdJVEhfU1BJQ0U9T04iCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF94ODYtNjQgPSAiIC1EV0lUSF9TUElDRT1PTiIKLQorRVhUUkFfT0VDTUFLRSArPSAiLURXSVRIX0FQUElORElDQVRPUj1PRkYgLURXSVRIX0dFVFRFWFQ9T0ZGIC1EV0lUSF9UUkFOU0xBVElPTlM9T0ZGIgogCiBkb19pbnN0YWxsX2FwcGVuZCgpewogICAgICMgV2UgZG9udCBuZWVkIHRoZSBleHRyYSBzdHVmZiBmb3JtIG90aGVyIGRlc2t0b3AgZW52aXJvbm1lbnRzCkBAIC0zNiw2ICsyOCw4IEBACiAgICAgcm0gLXJmICR7RH0vJHtkYXRhZGlyfS9nbm9tZS1zZXNzaW9uCiB9CiAKK1BBQ0tBR0VDT05GSUdbc3BpY2VdID0gIi1EV0lUSF9TUElDRT1PTiwgLURXSVRIX1NQSUNFPU9GRiwgc3BpY2Ugc3BpY2UtcHJvdG9jb2wiCisKIFJERVBFTkRTXyR7UE59ID0gImJhc2giCiAKIEZJTEVTXyR7UE59X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLyoiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9yc25hcHNob3QvcnNuYXBzaG90X2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3JzbmFwc2hvdC9yc25hcHNob3RfZ2l0LmJiCmluZGV4IGFlZmUzNjIuLmVmZTk1YjEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3JzbmFwc2hvdC9yc25hcHNob3RfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3JzbmFwc2hvdC9yc25hcHNob3RfZ2l0LmJiCkBAIC0yOSw3ICsyOSw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWluaGVyaXQgYXV0b3Rvb2xzCitpbmhlcml0IGF1dG90b29scyBwZXJsbmF0aXZlCiAKICMgRml4IHJzbmFwc2hvdC5jb25mLmRlZmF1bHQ6CiAjIGRvbid0IGluamVjdCB0aGUgaG9zdCBwYXRoIGludG8gdGFyZ2V0IGNvbmZpZ3MuCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYW1zdW5nLXNvYy11dGlscy9maWxlcy8wMDAxLXBwdC5jLURvLW5vdC1pbmNsdWRlLXN5cy1pby5oLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2Ftc3VuZy1zb2MtdXRpbHMvZmlsZXMvMDAwMS1wcHQuYy1Eby1ub3QtaW5jbHVkZS1zeXMtaW8uaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU2YzI1MC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYW1zdW5nLXNvYy11dGlscy9maWxlcy8wMDAxLXBwdC5jLURvLW5vdC1pbmNsdWRlLXN5cy1pby5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSBmZDI0NGFlNjQ4Nzg5NTkxZjBmYjc5ZTc0ZDJiOGY2YzViMTVkNmU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgNiBBdWcgMjAxOSAwMDo0NzoxNCArMDAwMAotU3ViamVjdDogW1BBVENIXSBwcHQuYzogRG8gbm90IGluY2x1ZGUgc3lzL2lvLmgKLQotbmV3ZXIgdmVyc2lvbnMgb2YgZ2xpYmMgaGFzIHJlbW92ZWQgaXQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gcHB0LmMgfCAxIC0KLSAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcHB0LmMgYi9wcHQuYwotaW5kZXggMGJhZTJkMC4uMGVmMjc5ZiAxMDA2NDQKLS0tLSBhL3BwdC5jCi0rKysgYi9wcHQuYwotQEAgLTUsNyArNSw2IEBACi0gI2Vsc2UNCi0gI2luY2x1ZGUgPHVuaXN0ZC5oPg0KLSAjaW5jbHVkZSA8c3RkbGliLmg+DQotLSNpbmNsdWRlIDxzeXMvaW8uaD4NCi0gI2luY2x1ZGUgPGxpbnV4L3BhcnBvcnQuaD4NCi0gI2luY2x1ZGUgPGxpbnV4L3BwZGV2Lmg+DQotICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4NCi0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYW1zdW5nLXNvYy11dGlscy9zM2MyNHh4LWdwaW9fc3ZuLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2Ftc3VuZy1zb2MtdXRpbHMvczNjMjR4eC1ncGlvX3N2bi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU1NzU0ZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYW1zdW5nLXNvYy11dGlscy9zM2MyNHh4LWdwaW9fc3ZuLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHVzZXItc3BhY2UgdG9vbCB0byBzaG93IGFuZCBtb2RpZnkgdGhlIHN0YXRlIG9mIEdQSU9zIG9uIHRoZSBTM2MyNHh4IHBsYXRmb3JtIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotQVVUSE9SID0gIldlcm5lciBBbG1lc2JlcmdlciA8d2VybmVyQG9wZW5tb2tvLm9yZz4iCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2dwaW8uYztlbmRsaW5lPTEyO21kNT1jZmI5MWM2ODY4NTdiMmU2MDg1MmI0OTI1ZDkwYTNlMSIKLVNSQ1JFViA9ICI0OTQ5IgotUFYgPSAiMS4wK3N2bnIke1NSQ1BWfSIKLVBSID0gInIyIgotCi1TUkNfVVJJID0gInN2bjovL3N2bi5vcGVubW9rby5vcmcvdHJ1bmsvc3JjL3RhcmdldDttb2R1bGU9Z3Bpbztwcm90b2NvbD1odHRwIgotUyA9ICIke1dPUktESVJ9L2dwaW8iCi0KLUNMRUFOQlJPS0VOID0gIjEiCi0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30gLW8gJHtQTn0gZ3Bpby5jCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSAke1BOfSAke0R9JHtzYmluZGlyfQotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2Ftc3VuZy1zb2MtdXRpbHMvczNjNjR4eC1ncGlvX3N2bi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NhbXN1bmctc29jLXV0aWxzL3MzYzY0eHgtZ3Bpb19zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3NmE0ZjEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2Ftc3VuZy1zb2MtdXRpbHMvczNjNjR4eC1ncGlvX3N2bi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiQSB1c2VyLXNwYWNlIHRvb2wgdG8gc2hvdyBhbmQgbW9kaWZ5IHRoZSBzdGF0ZSBvZiBHUElPcyBvbiB0aGUgUzNjNjR4eCBwbGF0Zm9ybSIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUFVVEhPUiA9ICJXZXJuZXIgQWxtZXNiZXJnZXIgPHdlcm5lckBvcGVubW9rby5vcmc+IgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9ncGlvLXMzYzY0MTAuYztlbmRsaW5lPTEyO21kNT0wNjBjZGExYmU5NDVhZDkxOTQ1OTNmMTFkNTZkNTVjNyIKLVNSQ1JFViA9ICI0OTQ5IgotUFYgPSAiMS4wK3N2bnIke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJzdm46Ly9zdm4ub3Blbm1va28ub3JnL3RydW5rL3NyYy90YXJnZXQ7bW9kdWxlPWdwaW87cHJvdG9jb2w9aHR0cCIKLVMgPSAiJHtXT1JLRElSfS9ncGlvIgotCi1DTEVBTkJST0tFTiA9ICIxIgotCi1kb19jb21waWxlKCkgewotICAgICR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IC1vICR7UE59IGdwaW8tczNjNjQxMC5jCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSAke1BOfSAke0R9JHtzYmluZGlyfQotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2Ftc3VuZy1zb2MtdXRpbHMvc2pmMjQxMC1saW51eC1uYXRpdmVfc3ZuLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2Ftc3VuZy1zb2MtdXRpbHMvc2pmMjQxMC1saW51eC1uYXRpdmVfc3ZuLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTUxNzJlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NhbXN1bmctc29jLXV0aWxzL3NqZjI0MTAtbGludXgtbmF0aXZlX3N2bi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLVNVTU1BUlkgPSAiSlRBRyB1dGlsaXR5IHRvIGludGVyZmFjZSB3LyBhIFMzQzI0MTAgZGV2aWNlIgotU0VDVElPTiA9ICJkZXZlbCIKLUFVVEhPUiA9ICJIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAb3Blbm1va28ub3JnPiIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcGFycG9ydC5jO2VuZGxpbmU9MTk7bWQ1PWI1NjgxMDkxYjBmZDhjNWY3MDY4ODM1YzQ0MWJmMGM4IgotU1JDUkVWID0gIjQyNjgiCi1QViA9ICIwLjErc3ZuciR7U1JDUFZ9IgotUFIgPSAicjEiCi0KLVNSQ19VUkkgPSAic3ZuOi8vc3ZuLm9wZW5tb2tvLm9yZy90cnVuay9zcmMvaG9zdC87bW9kdWxlPXNqZjI0MTAtbGludXg7cHJvdG9jb2w9aHR0cCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXBwdC5jLURvLW5vdC1pbmNsdWRlLXN5cy1pby5oLnBhdGNoIFwKLSAgICAgICAgICAiCi1TID0gIiR7V09SS0RJUn0vc2pmMjQxMC1saW51eCIKLQotaW5oZXJpdCBuYXRpdmUgZGVwbG95Ci0KLUNGTEFHUyArPSAiLURMSU5VWF9QUERFViIKLQotZG9fY29tcGlsZSgpIHsKLSAgICBvZV9ydW5tYWtlCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSBzamYyNDEwICR7RH0vJHtiaW5kaXJ9Ci19Ci0KLWRvX2RlcGxveSgpIHsKLSAgICBpbnN0YWxsIC1tIDA3NTUgc2pmMjQxMCAke0RFUExPWURJUn0vc2pmMjQxMC0ke1BWfQotfQotCi1hZGR0YXNrIGRlcGxveSBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9faW5zdGFsbAotCi1kb19kZXBsb3lbc3N0YXRlLW91dHB1dGRpcnNdID0gIiR7REVQTE9ZX0RJUl9UT09MU30iCi0jIGNsZWFuZGlycyBzaG91bGQgcG9zc2libHkgYmUgaW4gZGVwbG95LmJiY2xhc3MgYnV0IHdlIG5lZWQgaXQKLWRvX2RlcGxveVtjbGVhbmRpcnNdID0gIiR7REVQTE9ZRElSfSIKLSMgY2xlYXIgc3RhbXAtZXh0cmEtaW5mbyBzaW5jZSBNQUNISU5FX0FSQ0ggaXMgbm9ybWFsbHkgcHV0IHRoZXJlIGJ5Ci0jIGRlcGxveS5iYmNsYXNzCi1kb19kZXBsb3lbc3RhbXAtZXh0cmEtaW5mb10gPSAiIgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYXNzL3Nhc3NjX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Nhc3Mvc2Fzc2NfZ2l0LmJiCmluZGV4IDA0NGMwYzcuLjNjN2E1NWMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Nhc3Mvc2Fzc2NfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Nhc3Mvc2Fzc2NfZ2l0LmJiCkBAIC03LDggKzcsOCBAQAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zYXNzL3Nhc3NjLmdpdCIKLVNSQ1JFViA9ICJhYTZkNWM2MzVlYThmYWY0NGQ1NDJhMjNhYWY4NWQyN2U1Nzc3ZDQ4IgorU1JDUkVWID0gIjQ2NzQ4MjE2YmEwYjYwNTQ1ZTgxNGMwNzg0NmNhMTBjOWZlZmM1YjYiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgotUFYgPSAiMy41LjAiCitQViA9ICIzLjYuMSIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZHBhcm0vZmlsZXMvbWFrZS1zeXNyb290LXdvcmsucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZHBhcm0vZmlsZXMvbWFrZS1zeXNyb290LXdvcmsucGF0Y2gKaW5kZXggM2ZkODVkOS4uZjU4MDkxYSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2RwYXJtL2ZpbGVzL21ha2Utc3lzcm9vdC13b3JrLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NkcGFybS9maWxlcy9tYWtlLXN5c3Jvb3Qtd29yay5wYXRjaApAQCAtMTcsMTMgKzE3LDEzIEBACiBpbmRleCA2MWRkOWY4Li40MmM5MTFmIDEwMDY0NAogLS0tIGEvc3JjL01ha2VmaWxlLmFtCiArKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC00MSw3ICs0MSw3IEBAIHNnbGliX1NPVVJDRVMgPQkJLi4vbGliL3NnX2xpYi5jIFwKK0BAIC01Myw3ICs1Myw3IEBAIHNnbGliX1NPVVJDRVMgPQkJLi4vbGliL3NnX2xpYi5jIFwKICAJCQkuLi9saWIvc2dfcHRfY29tbW9uLmMKICAKICBpZiBIQVZFX1NHVVRJTFMKIC1JTkNMVURFUyA9IC1JL3Njc2kKICtJTkNMVURFUyA9IC1JPUBpbmNsdWRlZGlyQC9zY3NpCi0gc2RwYXJtX0xEQUREID0gQEdFVE9QVF9PX0ZJTEVTQCBAb3NfbGlic0AgQFNHVVRJTFNfTElCU0AKKyBzZHBhcm1fTERBREQgPSBAR0VUT1BUX09fRklMRVNAIEBTR1VUSUxTX0xJQlNACiAgc2RwYXJtX0RFUEVOREVOQ0lFUyA9IEBHRVRPUFRfT19GSUxFU0AKICBlbHNlCiAtLSAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NkcGFybS9zZHBhcm1fMS4xMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NkcGFybS9zZHBhcm1fMS4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzA5YjQ5NS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZHBhcm0vc2RwYXJtXzEuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gImZldGNoIGFuZCBjaGFuZ2UgU0NTSSBtb2RlIHBhZ2VzIgotREVTQ1JJUFRJT04gPSAiVGhlIHNkcGFybSB1dGlsaXR5IGFjY2Vzc2VzIGFuZCBvcHRpb25hbGx5IG1vZGlmaWVzIFwKLVNDU0kgZGV2aWNlcycgbW9kZSBwYWdlIGFuZCBpbnF1aXJ5IGRhdGEuIgotSE9NRVBBR0UgPSAiaHR0cDovL3NnLmRhbm55LmN6L3NnL3NkcGFybS5odG1sIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lY2FiNmMzNmI3YmE4MmM2NzU1ODFkZDBhZmRlMzZmNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvQlNEX0xJQ0VOU0U7bWQ1PTFkNTJmNGE2NmYxZTBlZDk2Nzc2YmYzNTRhYjdhMmVkIgotREVQRU5EUz0ic2czLXV0aWxzIgotU1JDX1VSSSA9ICJodHRwOi8vc2cuZGFubnkuY3ovc2cvcC8ke0JQTn0tJHtQVn0udGd6IFwKLSAgICAgICAgICAgZmlsZTovL21ha2Utc3lzcm9vdC13b3JrLnBhdGNoIFwKLSAgICAgICAgICAgIgotTUlSUk9SUyArPSAiaHR0cDovL3NnLmRhbm55LmN6L3NnL3AgaHR0cHM6Ly9mb3NzaWVzLm9yZy9saW51eC9taXNjIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJzZHBhcm0tKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50Z3oiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1zY3JpcHRzIgotUkRFUEVORFNfJHtQTn0tc2NyaXB0cyArPSAiYmFzaCAke1BOfSIKLQotU1JDX1VSSVttZDVzdW1dID0gImJkYWU2NDM3NTM3NmNlOGZlNGJmOTUyMWMxZGI4NThmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFlYTFlZDFiYjFlZTJhZWY2MjM5MjYxOGZhNDJkYTllZDAyN2Q1ZTY1NWYxNzQ1MjVjMzkyMzU3NzgyOTJhYjMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLSMgUHV0IHRoZSBiYXNoIHNjcmlwdHMgdG8gJHtQTn0tc2NyaXB0cwotRklMRVNfJHtQTn0tc2NyaXB0cyA9ICIke2JpbmRpcn0vc2FzX2Rpc2tfYmxpbmsgJHtiaW5kaXJ9L3Njc2lfY2hfc3dwIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2RwYXJtL3NkcGFybV8xLjExLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2RwYXJtL3NkcGFybV8xLjExLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmYzg3ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZHBhcm0vc2RwYXJtXzEuMTEuYmIKQEAgLTAsMCArMSwyNiBAQAorU1VNTUFSWSA9ICJmZXRjaCBhbmQgY2hhbmdlIFNDU0kgbW9kZSBwYWdlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBzZHBhcm0gdXRpbGl0eSBhY2Nlc3NlcyBhbmQgb3B0aW9uYWxseSBtb2RpZmllcyBcCitTQ1NJIGRldmljZXMnIG1vZGUgcGFnZSBhbmQgaW5xdWlyeSBkYXRhLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zZy5kYW5ueS5jei9zZy9zZHBhcm0uaHRtbCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWNhYjZjMzZiN2JhODJjNjc1NTgxZGQwYWZkZTM2ZjcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL0JTRF9MSUNFTlNFO21kNT0xMmNkZTE3YTA0YzMwZGVjZTI3NTJmMzZiNzE5MmM2NCIKK0RFUEVORFM9InNnMy11dGlscyIKK1NSQ19VUkkgPSAiaHR0cDovL3NnLmRhbm55LmN6L3NnL3AvJHtCUE59LSR7UFZ9LnRneiBcCisgICAgICAgICAgIGZpbGU6Ly9tYWtlLXN5c3Jvb3Qtd29yay5wYXRjaCBcCisgICAgICAgICAgICIKK01JUlJPUlMgKz0gImh0dHA6Ly9zZy5kYW5ueS5jei9zZy9wIGh0dHBzOi8vZm9zc2llcy5vcmcvbGludXgvbWlzYyIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAic2RwYXJtLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGd6IgorCitQQUNLQUdFUyA9KyAiJHtQTn0tc2NyaXB0cyIKK1JERVBFTkRTXyR7UE59LXNjcmlwdHMgKz0gImJhc2ggJHtQTn0iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjZDk5OGQxYzEyYTRlYzExNjUyZDBhZjU4MGYwNmI0ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MzJmZGJmZTkwZjBjNTE2NDAyOTFmYWY3NjAyNDg5YjBhZTU2ZGZiOTZkMGMwMmVkMDIzMDg3OTJhZGM3ZmIwIgorCitpbmhlcml0IGF1dG90b29scworCisjIFB1dCB0aGUgYmFzaCBzY3JpcHRzIHRvICR7UE59LXNjcmlwdHMKK0ZJTEVTXyR7UE59LXNjcmlwdHMgPSAiJHtiaW5kaXJ9L3Nhc19kaXNrX2JsaW5rICR7YmluZGlyfS9zY3NpX2NoX3N3cCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NnMy11dGlscy9zZzMtdXRpbHNfMS40NC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NnMy11dGlscy9zZzMtdXRpbHNfMS40NC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDkwOTAzNS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZzMtdXRpbHMvc2czLXV0aWxzXzEuNDQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1TVU1NQVJZID0gIlV0aWxpdGllcyBmb3Igd29ya2luZyB3aXRoIGdlbmVyaWMgU0NTSSBkZXZpY2VzIgotCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgY29udGFpbnMgbG93IGxldmVsIHV0aWxpdGllcyBmb3IgZGV2aWNlcyB0aGF0IHVzZSB0aGUgU0NTSSBjb21tYW5kIHNldCIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3NnLmRhbm55LmN6L3NnL3NnM191dGlscy5odG1sIgotU0VDVElPTiA9ICJjb25zb2xlL2FkbWluIgotCi1MSUNFTlNFID0gIkdQTHYyKyAmIEJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY5MGRhN2ZjNTIxNzI1OTlkYmYwODJkNzYyMGYxOGNhIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zZy5kYW5ueS5jei9zZy9wL3NnM191dGlscy0ke1BWfS50Z3ogXAotIgotTUlSUk9SUyArPSAiaHR0cDovL3NnLmRhbm55LmN6L3NnL3AgaHR0cHM6Ly9mb3NzaWVzLm9yZy9saW51eC9taXNjIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJzZzNfdXRpbHMtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50Z3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjMTFkMmIzY2E0Y2MyZmQwMTc5NjQ3M2U1MzMwYWZlZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZGFlNjg0ZDIyZTcxYjExMzUzYTQ4YjE2Yzk1NTk3YWY5MGYwY2JlOWJiZDU3Zjk4ZDdmNTU0NGRhNWNhZTdiIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotUyA9ICIke1dPUktESVJ9L3NnM191dGlscy0ke1BWfSIKLQotUkRFUEVORFNfJHtQTn0gKz0gImJhc2giCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZzMtdXRpbHMvc2czLXV0aWxzXzEuNDUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZzMtdXRpbHMvc2czLXV0aWxzXzEuNDUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI5OTViNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NnMy11dGlscy9zZzMtdXRpbHNfMS40NS5iYgpAQCAtMCwwICsxLDI0IEBACitTVU1NQVJZID0gIlV0aWxpdGllcyBmb3Igd29ya2luZyB3aXRoIGdlbmVyaWMgU0NTSSBkZXZpY2VzIgorCitERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgY29udGFpbnMgbG93IGxldmVsIHV0aWxpdGllcyBmb3IgZGV2aWNlcyB0aGF0IHVzZSB0aGUgU0NTSSBjb21tYW5kIHNldCIKKworSE9NRVBBR0UgPSAiaHR0cDovL3NnLmRhbm55LmN6L3NnL3NnM191dGlscy5odG1sIgorU0VDVElPTiA9ICJjb25zb2xlL2FkbWluIgorCitMSUNFTlNFID0gIkdQTHYyKyAmIEJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY5MGRhN2ZjNTIxNzI1OTlkYmYwODJkNzYyMGYxOGNhIgorCitTUkNfVVJJID0gImh0dHA6Ly9zZy5kYW5ueS5jei9zZy9wL3NnM191dGlscy0ke1BWfS50Z3ogXAorIgorTUlSUk9SUyArPSAiaHR0cDovL3NnLmRhbm55LmN6L3NnL3AgaHR0cHM6Ly9mb3NzaWVzLm9yZy9saW51eC9taXNjIgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJzZzNfdXRpbHMtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50Z3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZTcxZDdjZDkyNWRjYzQ4YWNiMjRhZmFhYWFjNzk5MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwYjg3Yzk3MWFmNTJhZjdjZWJlYmNjZTM0M2VhYzZiZDNkNzNmZWJiM2M3MmFmOWNlNDFhNDU1MmYxNjA1YTYxIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKKworUyA9ICIke1dPUktESVJ9L3NnM191dGlscy0ke1BWfSIKKworUkRFUEVORFNfJHtQTn0gKz0gImJhc2giCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zbWVtL3NtZW1fMS40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc21lbS9zbWVtXzEuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzAyMjE3YS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zbWVtL3NtZW1fMS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJSZXBvcnQgYXBwbGljYXRpb24gbWVtb3J5IHVzYWdlIGluIGEgbWVhbmluZ2Z1bCB3YXkiCi1ERVNDUklQVElPTiA9ICJzbWVtIGlzIGEgdG9vbCB0aGF0IGNhbiBnaXZlIG51bWVyb3VzIHJlcG9ydHMgb24gbWVtb3J5IHVzYWdlIG9uIExpbnV4IFwKLXN5c3RlbXMuIFVubGlrZSBleGlzdGluZyB0b29scywgc21lbSBjYW4gcmVwb3J0IHByb3BvcnRpb25hbCBzZXQgc2l6ZSAoUFNTKSwgXAotd2hpY2ggaXMgYSBtb3JlIG1lYW5pbmdmdWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGFtb3VudCBvZiBtZW1vcnkgdXNlZCBieSBcCi1saWJyYXJpZXMgYW5kIGFwcGxpY2F0aW9ucyBpbiBhIHZpcnR1YWwgbWVtb3J5IHN5c3RlbS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnNlbGVuaWMuY29tL3NtZW0vIgotU0VDVElPTiA9ICJBcHBsaWNhdGlvbnMvU3lzdGVtIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuc2VsZW5pYy5jb20vJHtCUE59L2Rvd25sb2FkLyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmZTc5NDM1YzM5MzAzODliZmRiNTYwMjU1YzgwMjE2MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyZWE5Zjg3OGY0Y2YzYzI3Njc3NGMzZjdlMmE0MTk3N2ExZjJkNjRmOThkMmRjYjZhMTVmMWYzZDg0ZGY2MWVjIgotCi1kb19jb21waWxlKCkgewotICAgICAgICAke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSBzbWVtY2FwLmMgLW8gc21lbWNhcAotfQotCi1kb19pbnN0YWxsKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHttYW5kaXJ9L21hbjgKLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vc21lbSAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9zbWVtY2FwICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3NtZW0uOCAke0R9LyR7bWFuZGlyfS9tYW44LwotfQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi10ZXh0dXRpbHMgcHl0aG9uLWNvbXByZXNzaW9uIHB5dGhvbi1zaGVsbCBweXRob24tY29kZWNzIgotCi1QQUNLQUdFUyA9KyAic21lbWNhcCIKLQotRklMRVNfc21lbWNhcCA9ICIke2JpbmRpcn0vc21lbWNhcCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NwYW4tbGl0ZS9zcGFuLWxpdGVfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3Bhbi1saXRlL3NwYW4tbGl0ZV9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZlYzgyOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NwYW4tbGl0ZS9zcGFuLWxpdGVfZ2l0LmJiCkBAIC0wLDAgKzEsMTIgQEAKK1NVTU1BUlkgPSAic2luZ2xlLWZpbGUgaGVhZGVyLW9ubHkgdmVyc2lvbiBvZiBhIEMrKzIwLWxpa2Ugc3BhbiBmb3IgQysrOTgsIEMrKzExIGFuZCBsYXRlciIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tYXJ0aW5tb2VuZS9zcGFuLWxpdGUiCitMSUNFTlNFID0gIkJTTC0xLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZTQyMjRjY2FlY2IxNGQ5NDJjNzFkMzFiZWYyMGQ3OGMiCisKK1NSQ19VUkkgKz0gImdpdDovL2dpdGh1Yi5jb20vbWFydGlubW9lbmUvc3Bhbi1saXRlIgorU1JDUkVWID0gImUwM2QxMTY2Y2NjODQ4MWQ5OTNkYzAyYWFlNzAzOTY2MzAxYTVlNmUiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKK2luaGVyaXQgcHRlc3QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NwZGxvZy9zcGRsb2dfMS4zLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcGRsb2cvc3BkbG9nXzEuMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MWUzZjY3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NwZGxvZy9zcGRsb2dfMS4zLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJWZXJ5IGZhc3QsIGhlYWRlciBvbmx5LCBDKysgbG9nZ2luZyBsaWJyYXJ5LiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nYWJpbWUvc3BkbG9nL3dpa2kiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCi0KLVNSQ1JFViA9ICJhNzE0OGI3MThlYTJmYWJiODM4N2NiOTBhZWU5YmY0NDhkYTYzZTY1IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dhYmltZS9zcGRsb2cuZ2l0O3Byb3RvY29sPWdpdDticmFuY2g9djEueDsiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotIyBubyBuZWVkIHRvIGJ1aWxkIGV4YW1wbGUmdGV4dCZiZW5jaG1hcmtzIG9uIHB1cmUgeW9jdG8KLUVYVFJBX09FQ01BS0UgKz0gIi1EU1BETE9HX0lOU1RBTEw9b24gLURTUERMT0dfQlVJTERfRVhBTVBMRVM9b2ZmIC1EU1BETE9HX0JVSUxEX1RFU1RTPW9mZiAtRFNQRExPR19CVUlMRF9CRU5DSD1vZmYiCi0KLWluaGVyaXQgY21ha2UKLQotIyBIZWFkZXItb25seSBsaWJyYXJ5Ci1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotUlJFQ09NTUVORFNfJHtQTn0tZGJnID0gIiR7UE59LWRldiAoPSAke0VYVEVORFBLR1Z9KSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NwZGxvZy9zcGRsb2dfMS41LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcGRsb2cvc3BkbG9nXzEuNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NjI5Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcGRsb2cvc3BkbG9nXzEuNS4wLmJiCkBAIC0wLDAgKzEsMTkgQEAKK0RFU0NSSVBUSU9OID0gIlZlcnkgZmFzdCwgaGVhZGVyIG9ubHksIEMrKyBsb2dnaW5nIGxpYnJhcnkuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dhYmltZS9zcGRsb2cvd2lraSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKKworU1JDUkVWID0gImNmNmYxZGQwMWU2NjBkNTg2NWQ2OGJmNWZhNzhmNjM3NmI4OTQ3MGEiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZ2FiaW1lL3NwZGxvZy5naXQ7cHJvdG9jb2w9Z2l0O2JyYW5jaD12MS54OyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisjIG5vIG5lZWQgdG8gYnVpbGQgZXhhbXBsZSZ0ZXh0JmJlbmNobWFya3Mgb24gcHVyZSB5b2N0bworRVhUUkFfT0VDTUFLRSArPSAiLURTUERMT0dfSU5TVEFMTD1vbiAtRFNQRExPR19CVUlMRF9FWEFNUExFUz1vZmYgLURTUERMT0dfQlVJTERfVEVTVFM9b2ZmIC1EU1BETE9HX0JVSUxEX0JFTkNIPW9mZiIKKworaW5oZXJpdCBjbWFrZQorCisjIEhlYWRlci1vbmx5IGxpYnJhcnkKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCitSUkVDT01NRU5EU18ke1BOfS1kYmcgPSAiJHtQTn0tZGV2ICg9ICR7RVhURU5EUEtHVn0pIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3JlY29yZC9zcmVjb3JkXzEuNjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcmVjb3JkL3NyZWNvcmRfMS42NC5iYgppbmRleCBkMzQ4OGRmLi40YzM0ZmExIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcmVjb3JkL3NyZWNvcmRfMS42NC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcmVjb3JkL3NyZWNvcmRfMS42NC5iYgpAQCAtMTEsNiArMTEsOCBAQAogU1JDX1VSSVttZDVzdW1dID0gIjRkZTRhNzQ5NzQ3MmQ3OTcyNjQ1YzJhZjkxMzEzNzY5IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ5YTQ0MTg3MzNjNTA4YzAzYWQ3OWEyOWU5NWFjZWM5YTJmYmM0YzczMDYxMzFkMmE4ZjVlZjMyMDEyZTY3ZTIiCiAKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3NyZWNvcmQvZmlsZXMvcmVsZWFzZXMiCisKIERFUEVORFMgPSAibGlidG9vbC1uYXRpdmUgYm9vc3QgZ3JvZmYtbmF0aXZlIgogCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9zeXNsb2ctbmcuY29uZi5zeXN0ZW1kIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL2ZpbGVzL3N5c2xvZy1uZy5jb25mLnN5c3RlbWQKaW5kZXggOTY1YWJmNy4uNmE4NjI3NiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL2ZpbGVzL3N5c2xvZy1uZy5jb25mLnN5c3RlbWQKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL2ZpbGVzL3N5c2xvZy1uZy5jb25mLnN5c3RlbWQKQEAgLTEsNCArMSw0IEBACi1AdmVyc2lvbjogMy4xOQorQHZlcnNpb246IDMuMjQKICMKICMgU3lzbG9nLW5nIGNvbmZpZ3VyYXRpb24gZmlsZSwgY29tcGF0aWJsZSB3aXRoIGRlZmF1bHQgRGViaWFuIHN5c2xvZ2QKICMgaW5zdGFsbGF0aW9uLiBPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgYW5vbnltb3VzIChJIGNhbid0IGZpbmQgaGlzIG5hbWUpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvc3lzbG9nLW5nLmNvbmYuc3lzdmluaXQgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvc3lzbG9nLW5nLmNvbmYuc3lzdmluaXQKaW5kZXggMmIzOWI4Yy4uMzJiOTg2MSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL2ZpbGVzL3N5c2xvZy1uZy5jb25mLnN5c3Zpbml0CisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9zeXNsb2ctbmcuY29uZi5zeXN2aW5pdApAQCAtMSw0ICsxLDQgQEAKLUB2ZXJzaW9uOiAzLjE5CitAdmVyc2lvbjogMy4yNAogIwogIyBTeXNsb2ctbmcgY29uZmlndXJhdGlvbiBmaWxlLCBjb21wYXRpYmxlIHdpdGggZGVmYXVsdCBEZWJpYW4gc3lzbG9nZAogIyBpbnN0YWxsYXRpb24uIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBhbm9ueW1vdXMgKEkgY2FuJ3QgZmluZCBoaXMgbmFtZSkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9zeXNsb2ctbmcuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL3N5c2xvZy1uZy5pbmMKaW5kZXggOGU1MzY4OS4uZmY2ZDlkMiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL3N5c2xvZy1uZy5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL3N5c2xvZy1uZy5pbmMKQEAgLTczLDI2ICs3MywyNiBAQAogfQogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2luaXRzY3JpcHQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXNsb2cKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfQorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9pbml0c2NyaXB0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXNsb2cKIAotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLwotICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vdm9sYXRpbGVzLjAzX3N5c2xvZy1uZyAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvMDNfc3lzbG9nLW5nCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KLSAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L3N5c2xvZy1uZy10bXAuY29uZiAke0R9LyR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9zeXNsb2ctbmcuY29uZgorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMuMDNfc3lzbG9nLW5nICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzAzX3N5c2xvZy1uZworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3N5c2xvZy1uZy10bXAuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3N5c2xvZy1uZy5jb25mCiAKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIvJHtCUE59CisgICAgaW5zdGFsbCAtZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvJHtCUE59CiAgICAgIyBSZW1vdmUgL3Zhci9ydW4gYXMgaXQgaXMgY3JlYXRlZCBvbiBzdGFydHVwCiAgICAgcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgogCiAgICAgIyBzdXBwb3J0IGZvciBzeXN0ZW1kCiAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsICR7V09SS0RJUn0vc3lzbG9nLW5nLmNvbmYuc3lzdGVtZCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vJHtCUE59LmNvbmYKKyAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9zeXNsb2ctbmcuY29uZi5zeXN0ZW1kICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS8ke0JQTn0uY29uZgogCiAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2NvbnRyaWIvc3lzdGVtZC8ke0JQTn1ALnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJHtCUE59QC5zZXJ2aWNlCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2NvbnRyaWIvc3lzdGVtZC8ke0JQTn1AZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0LyR7QlBOfUBkZWZhdWx0CisgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vY29udHJpYi9zeXN0ZW1kLyR7QlBOfUAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8ke0JQTn1ALnNlcnZpY2UKKyAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtTfS9jb250cmliL3N5c3RlbWQvJHtCUE59QGRlZmF1bHQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC8ke0JQTn1AZGVmYXVsdAogCiAgICAgICAgIHNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8ke0JQTn1ALnNlcnZpY2UgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC8ke0JQTn1AZGVmYXVsdAogICAgICAgICBzZWQgLWkgLWUgJ3MsQExPQ0FMU1RBVEVESVJALCR7bG9jYWxzdGF0ZWRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJHtCUE59QC5zZXJ2aWNlICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvJHtCUE59QGRlZmF1bHQKQEAgLTEwMSw3ICsxMDEsNyBAQAogICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzCiAgICAgICAgIGxuIC1zZiAuLi8ke0JQTn1ALnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbXVsdGktdXNlci50YXJnZXQud2FudHMvJHtCUE59QGRlZmF1bHQuc2VydmljZQogICAgIGVsc2UKLSAgICAgICAgaW5zdGFsbCAke1dPUktESVJ9L3N5c2xvZy1uZy5jb25mLnN5c3Zpbml0ICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS8ke0JQTn0uY29uZgorICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3N5c2xvZy1uZy5jb25mLnN5c3Zpbml0ICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS8ke0JQTn0uY29uZgogICAgIGZpCiAKICAgICBvZV9tdWx0aWxpYl9oZWFkZXIgc3lzbG9nLW5nL3N5c2xvZy1uZy1jb25maWcuaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzdGVtLWNvbmZpZy1rZXlib2FyZC9zeXN0ZW0tY29uZmlnLWtleWJvYXJkXzEuNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzdGVtLWNvbmZpZy1rZXlib2FyZC9zeXN0ZW0tY29uZmlnLWtleWJvYXJkXzEuNC4wLmJiCmluZGV4IDI2YjQ0MTIuLjFjZTNjOGUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c3RlbS1jb25maWcta2V5Ym9hcmQvc3lzdGVtLWNvbmZpZy1rZXlib2FyZF8xLjQuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXN0ZW0tY29uZmlnLWtleWJvYXJkL3N5c3RlbS1jb25maWcta2V5Ym9hcmRfMS40LjAuYmIKQEAgLTYsNyArNiw3IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiYzI2N2RiMGVlN2EyMTMxYmE0MTgzOTlkYzE3ZjllNzIiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjE4Yzg4M2U0ZTJiZmNjODJiZmUwN2U3ODU3MDdiNWMyZWNlMjhkZjc3MmYyMTU1ZmQwNDRiOWJiMTYxNDI4NCIKIAotaW5oZXJpdCBweXRob24tZGlyIGdldHRleHQKK2luaGVyaXQgcHl0aG9uMy1kaXIgZ2V0dGV4dAogREVQRU5EUyArPSAiaW50bHRvb2wtbmF0aXZlIGdldHRleHQtbmF0aXZlIgogCiBFWFRSQV9PRU1BS0UgPSAiIFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RiYi90YmIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90YmIvdGJiLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODcwMTA0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RiYi90YmIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJQYXJhbGxlbGlzbSBsaWJyYXJ5IGZvciBDKysgLSBydW50aW1lIGZpbGVzIFwKLSAgICBUQkIgaXMgYSBsaWJyYXJ5IHRoYXQgaGVscHMgeW91IGxldmVyYWdlIG11bHRpLWNvcmUgcHJvY2Vzc29yIFwKLSAgICBwZXJmb3JtYW5jZSB3aXRob3V0IGhhdmluZyB0byBiZSBhIHRocmVhZGluZyBleHBlcnQuIEl0IHJlcHJlc2VudHMgYSBcCi0gICAgaGlnaGVyLWxldmVsLCB0YXNrLWJhc2VkIHBhcmFsbGVsaXNtIHRoYXQgYWJzdHJhY3RzIHBsYXRmb3JtIGRldGFpbHMgXAotICAgIGFuZCB0aHJlYWRpbmcgbWVjaGFuaXNtIGZvciBwZXJmb3JtYW5jZSBhbmQgc2NhbGFiaWxpdHkuIgotSE9NRVBBR0UgPSAiaHR0cDovL3RocmVhZGluZ2J1aWxkaW5nYmxvY2tzLm9yZy8iCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04NmQzZjNhOTVjMzI0Yzk0NzliZDg5ODY5NjhmNDMyNyIKLVBSREFURSA9ICIyMDE3MDQxMiIKLUJSQU5DSCA9ICJ0YmJfMjAxNyIKLVNSQ1JFViA9ICJhMmNmZGZlOTQ2OTMzY2JlMzhiZmZlMWQ4MDg2YWUzNmYwNjY5MWEzIgotUFYgPSAiJHtQUkRBVEV9KyR7U1JDUFZ9IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tLzAxb3JnL3RiYjticmFuY2g9JHtCUkFOQ0h9IFwKLSAgICAgICAgICAgZmlsZTovL2Nyb3NzLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWxsaW5mby1pcy1nbGliYy1zcGVjaWZpYy1BUEktbWFyay1pdC1zby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWxpbnV4LUZpeC1nY2MtdmVyc2lvbi1jaGVjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90YmIucGMgXAotIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1DT01QSUxFUiA/PSAiZ2NjIgotQ09NUElMRVJfdG9vbGNoYWluLWNsYW5nID0gImNsYW5nIgotCi1kb19jb21waWxlKCkgewotICAgIG9lX3J1bm1ha2UgY29tcGlsZXI9JHtDT01QSUxFUn0gYXJjaD0ke0hPU1RfQVJDSH0gcnVudGltZT1jYzQKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9ICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCi0gICAgcm0gJHtTfS9pbmNsdWRlL3RiYi9pbmRleC5odG1sIC1mCi0gICAgY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgJHtTfS9pbmNsdWRlL3RiYiAke0R9JHtpbmNsdWRlZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSAke0J9L2J1aWxkL2xpbnV4XypfcmVsZWFzZS9saWIqLnNvKiAke0R9JHtsaWJkaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdGJiLnBjICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCi19Ci0KLSMgZmFpbHMgd2l0aCB0aHVtYiBlbmFibGVkOgotIyB8IGFybS1vZS1saW51eC1nbnVlYWJpLWcrKyAgLW1hcmNoPWFybXY3LWEgLW10aHVtYiAtbXRodW1iLWludGVyd29yayAtbWZsb2F0LWFiaT1zb2Z0ZnAgLW1mcHU9bmVvbiAtbXR1bmU9Y29ydGV4LWE5IC1tY3B1PWNvcnRleC1hOSAtRF9fQVJNX18gLURfX0xJTlVYX0FSTV9BUkNIX189NyAtZnVud2luZC10YWJsZXMgLW12ZWN0b3JpemUtd2l0aC1uZW9uLXF1YWQgLXJkeW5hbWljIC0tc3lzcm9vdD0vT0Uvc3lzcm9vdHMvbTE0dHYgLWMgLU1NRCAtRFRCQl9VU0VfREVCVUcgIC1nIC1PMCAtRFVTRV9QVEhSRUFEIC1mUElDIC1EX19UQkJfQlVJTEQ9MSAtV2FsbCAtV25vLXBhcmVudGhlc2VzIC1Xbm8tbm9uLXZpcnR1YWwtZHRvciAtTzIgLXBpcGUgLWcgLWZlbGltaW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzIC1mcGVybWlzc2l2ZSAtZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4gICAtSS4uLy4uL3NyYyAtSS4uLy4uL3NyYy9ybWwvaW5jbHVkZSAtSS4uLy4uL2luY2x1ZGUgLi4vLi4vc3JjL3RiYi9jb25jdXJyZW50X3F1ZXVlLmNwcAotIyB8IHtzdGFuZGFyZCBpbnB1dH06IEFzc2VtYmxlciBtZXNzYWdlczoKLSMgfCB7c3RhbmRhcmQgaW5wdXR9OjI1MDogRXJyb3I6IHRodW1iIGNvbmRpdGlvbmFsIGluc3RydWN0aW9uIHNob3VsZCBiZSBpbiBJVCBibG9jayAtLSBgc3RyZXhlcSByMixyMyxbcjRdJwotIyAuLi4KLSMgfCBtYWtlWzFdOiAqKiogW2NvbmN1cnJlbnRfcXVldWUub10gRXJyb3IgMQotQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCi1TRUNVUklUWV9DRkxBR1NfYXBwZW5kID0gIiAtZlBJQyIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGJiL3RiYi8wMDAyLWxpbnV4LUZpeC1nY2MtdmVyc2lvbi1jaGVjay5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RiYi90YmIvMDAwMi1saW51eC1GaXgtZ2NjLXZlcnNpb24tY2hlY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4MjRiNjEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGJiL3RiYi8wMDAyLWxpbnV4LUZpeC1nY2MtdmVyc2lvbi1jaGVjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLUZyb20gYWVlMDk4ZjFiZjA1MTFjNmI1NTQ0ZGUzMTcwYTllOGI1MTY3M2I2MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBpZXJyZSBMZSBNYWdvdXJvdSA8cGxlbWFnb3Vyb3VAc29mdGJhbmtyb2JvdGljcy5jb20+Ci1EYXRlOiBUdWUsIDIzIEphbiAyMDE4IDE1OjI1OjUwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGxpbnV4LmdjYzogRml4IGNyb3NzIGNvbXBpbGF0aW9uIGVycm9yLgotCi1XaGVuIGNyb3NzIGNvbXBpbGluZyBvbiBsaW51eCB3aXRoIGdjYywgdGhlIGhvc3QgZ2NjIHdhcyB1c2VkIGluc3RlYWQgb2YKLXRoZSBjcm9zcyBnY2MgdG8gc2V0IGNvbXBpbGF0aW9uIGZsYWdzIGFjY29yZGluZyB0byBnY2MgdmVyc2lvbi4KLQotV2hlbiB0aGUgY3Jvc3MgZ2NjIHdhcyBpbiB2ZXJzaW9uIDUuWCBhbmQgdGhlIGhvc3QgZ2NjIGluIHZlcnNpb24gNy5YLAotdGJiIHdhcyBjb21waWxlZCB3aXRoIHRoZSAtZmxpZmV0aW1lLWRzZT0xIGZsYWcgdGhhdCBkb2VzIG5vdCBleGlzdCBvbgotZ2NjIDUuWC4KLS0tLQotIGJ1aWxkL2xpbnV4LmdjYy5pbmMgfCAxMCArKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2J1aWxkL2xpbnV4LmdjYy5pbmMgYi9idWlsZC9saW51eC5nY2MuaW5jCi1pbmRleCA1YzE4ODljLi5hNGQ2Njk4IDEwMDY0NAotLS0tIGEvYnVpbGQvbGludXguZ2NjLmluYwotKysrIGIvYnVpbGQvbGludXguZ2NjLmluYwotQEAgLTQxLDI5ICs0MSwyOSBAQCBMSU5LX0ZMQUdTID0gLVdsLC1ycGF0aC1saW5rPS4gLXJkeW5hbWljCi0gQ19GTEFHUyA9ICQoQ1BMVVNfRkxBR1MpCi0gCi0gIyBnY2MgNC4yIGFuZCBoaWdoZXIgc3VwcG9ydCBPcGVuTVAKLS1pZm5lcSAoLCQoc2hlbGwgZ2NjIC1kdW1wdmVyc2lvbiB8IGVncmVwICAiXig0XC5bMi05XXxbNS05XSkiKSkKLStpZm5lcSAoLCQoc2hlbGwgJChDQykgLWR1bXB2ZXJzaW9uIHwgZWdyZXAgICJeKDRcLlsyLTldfFs1LTldKSIpKQotICAgICBPUEVOTVBfRkxBRyA9IC1mb3Blbm1wCi0gZW5kaWYKLSAKLSAjIGdjYyA0LjggYW5kIGxhdGVyIHN1cHBvcnQgUlRNIGludHJpbnNpY3MsIGJ1dCByZXF1aXJlIGNvbW1hbmQgbGluZSBzd2l0Y2ggdG8gZW5hYmxlIHRoZW0KLS1pZm5lcSAoLCQoc2hlbGwgZ2NjIC1kdW1wdmVyc2lvbiB8IGVncmVwICAiXig0XC5bOC05XXxbNS05XSkiKSkKLStpZm5lcSAoLCQoc2hlbGwgJChDQykgLWR1bXB2ZXJzaW9uIHwgZWdyZXAgICJeKDRcLls4LTldfFs1LTldKSIpKQotICAgICBSVE1fS0VZID0gLW1ydG0KLSBlbmRpZgotIAotICMgZ2NjIDQuMCBhbmQgbGF0ZXIgaGF2ZSAtV2V4dHJhIHRoYXQgaXMgdXNlZCBieSBzb21lIG91ciBjdXN0b21lcnMuCi0taWZuZXEgKCwkKHNoZWxsIGdjYyAtZHVtcHZlcnNpb24gfCBlZ3JlcCAgIl4oWzQtOV0pIikpCi0raWZuZXEgKCwkKHNoZWxsICQoQ0MpIC1kdW1wdmVyc2lvbiB8IGVncmVwICAiXihbNC05XSkiKSkKLSAgICAgVEVTVF9XQVJOSU5HX0tFWSArPSAtV2V4dHJhCi0gZW5kaWYKLSAKLSAjIGdjYyA1LjAgYW5kIGxhdGVyIGhhdmUgLVdzdWdnZXN0LW92ZXJyaWRlIG9wdGlvbgotICMgZW5hYmxlIGl0IHZpYSBhIHByZS1pbmNsdWRlZCBoZWFkZXIgaW4gb3JkZXIgdG8gbGltaXQgdG8gQysrMTEgYW5kIGFib3ZlCi0taWZuZXEgKCwkKHNoZWxsIGdjYyAtZHVtcHZlcnNpb24gfCBlZ3JlcCAgIl4oWzUtOV0pIikpCi0raWZuZXEgKCwkKHNoZWxsICQoQ0MpIC1kdW1wdmVyc2lvbiB8IGVncmVwICAiXihbNS05XSkiKSkKLSAgICAgSU5DTFVERV9URVNUX0hFQURFUlMgPSAtaW5jbHVkZSAkKHRiYl9yb290KS9zcmMvdGVzdC9oYXJuZXNzX3ByZWxvYWQuaAotIGVuZGlmCi0gCi0gIyBnY2MgNi4wIGFuZCBsYXRlciBoYXZlIC1mbGlmZXRpbWUtZHNlIG9wdGlvbiB0aGF0IGNvbnRyb2xzCi0gIyBlbGltaW5hdGlvbiBvZiBzdG9yZXMgZG9uZSBvdXRzaWRlIHRoZSBvYmplY3QgbGlmZXRpbWUKLS1pZm5lcSAoLCQoc2hlbGwgZ2NjIC1kdW1wdmVyc2lvbiB8IGVncmVwICAiXihbNi05XSkiKSkKLStpZm5lcSAoLCQoc2hlbGwgJChDQykgLWR1bXB2ZXJzaW9uIHwgZWdyZXAgICJeKFs2LTldKSIpKQotICAgICAjIGtlZXAgcHJlLWNvbnRydWN0aW9uIHN0b3JlcyBmb3IgemVybyBpbml0aWFsaXphdGlvbgotICAgICBEU0VfS0VZID0gLWZsaWZldGltZS1kc2U9MQotIGVuZGlmCi0tLSAKLTIuMTUuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90YmIvdGJiL0dMSUJDLVBSRVJFUS1pcy1ub3QtZGVmaW5lZC1vbi1tdXNsLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGJiL3RiYi9HTElCQy1QUkVSRVEtaXMtbm90LWRlZmluZWQtb24tbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjI4ZjZmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGJiL3RiYi9HTElCQy1QUkVSRVEtaXMtbm90LWRlZmluZWQtb24tbXVzbC5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIDI3OTU2ZDRjNWZiNjE1MDk4MjMxY2ViZmI4ZWVmMTEwNTc2MzlkM2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGYWJyaWNlIEZvbnRhaW5lIDxmb250YWluZS5mYWJyaWNlQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgOCBEZWMgMjAxOSAxODoxNDozOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBzcmMvdGJibWFsbG9jL3Byb3h5LmNwcDogX19HTElCQ19QUkVSRVEgaXMgbm90IGRlZmluZWQgb24KKyBtdXNsCisKK0RvIG5vdCBjYWxsIF9fR0xJQkNfUFJFUkVRIGlmIGl0IGlzIG5vdCBkZWZpbmVkIG90aGVyd2lzZSBidWlsZCB3aWxsCitmYWlsIG9uIG11c2wKKworU2lnbmVkLW9mZi1ieTogRmFicmljZSBGb250YWluZSA8Zm9udGFpbmUuZmFicmljZUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vb25lYXBpLXNyYy9vbmVUQkIvcHVsbC8yMDNdCisKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CistLS0KKyBzcmMvdGJibWFsbG9jL3Byb3h5LmNwcCB8IDYgKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy90YmJtYWxsb2MvcHJveHkuY3BwIGIvc3JjL3RiYm1hbGxvYy9wcm94eS5jcHAKK2luZGV4IGQ5NmFlN2EwLi43MDlhZTgzOSAxMDA2NDQKKy0tLSBhL3NyYy90YmJtYWxsb2MvcHJveHkuY3BwCisrKysgYi9zcmMvdGJibWFsbG9jL3Byb3h5LmNwcAorQEAgLTI0LDcgKzI0LDggQEAKKyAvLyBvZiBhbGlnbmVkX2FsbG9jIGFzIHJlcXVpcmVkIGJ5IG5ldyBDKysgc3RhbmRhcmQsIHRoaXMgbWFrZXMgaXQgaGFyZCB0bworIC8vIHJlZGVmaW5lIGFsaWduZWRfYWxsb2MgaGVyZS4gSG93ZXZlciwgcnVubmluZyBvbiBzeXN0ZW1zIHdpdGggbmV3IGxpYmMKKyAvLyB2ZXJzaW9uLCBpdCBzdGlsbCBuZWVkcyBpdCB0byBiZSByZWRlZmluZWQsIHRodXMgdHJpY2tpbmcgc3lzdGVtIGhlYWRlcnMKKy0jaWYgZGVmaW5lZChfX0dMSUJDX1BSRVJFUSkgJiYgIV9fR0xJQkNfUFJFUkVRKDIsIDE2KSAmJiBfR0xJQkNYWF9IQVZFX0FMSUdORURfQUxMT0MKKysjaWYgZGVmaW5lZChfX0dMSUJDX1BSRVJFUSkKKysjaWYgIV9fR0xJQkNfUFJFUkVRKDIsIDE2KSAmJiBfR0xJQkNYWF9IQVZFX0FMSUdORURfQUxMT0MKKyAvLyB0ZWxsIDxjc3RkbGliPiB0aGF0IHRoZXJlIGlzIG5vIGFsaWduZWRfYWxsb2MKKyAjdW5kZWYgX0dMSUJDWFhfSEFWRV9BTElHTkVEX0FMTE9DCisgLy8gdHJpY2sgPHN0ZGxpYi5oPiB0byBkZWZpbmUgYW5vdGhlciBzeW1ib2wgaW5zdGVhZAorQEAgLTMyLDcgKzMzLDggQEAKKyAvLyBGaXggdGhlIHN0YXRlIGFuZCB1bmRlZmluZSB0aGUgdHJpY2sKKyAjaW5jbHVkZSA8Y3N0ZGxpYj4KKyAjdW5kZWYgYWxpZ25lZF9hbGxvYworLSNlbmRpZiAvLyBkZWZpbmVkKF9fR0xJQkNfUFJFUkVRKSYmIV9fR0xJQkNfUFJFUkVRKDIsIDE2KSYmX0dMSUJDWFhfSEFWRV9BTElHTkVEX0FMTE9DCisrI2VuZGlmIC8vIGRlZmluZWQoX19HTElCQ19QUkVSRVEpCisrI2VuZGlmIC8vICFfX0dMSUJDX1BSRVJFUSgyLCAxNikmJl9HTElCQ1hYX0hBVkVfQUxJR05FRF9BTExPQworICNlbmRpZiAvLyBfX2xpbnV4X18gJiYgIV9fQU5EUk9JRF9fCisgCisgI2luY2x1ZGUgInByb3h5LmgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90YmIvdGJiL2Nyb3NzLWNvbXBpbGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90YmIvdGJiL2Nyb3NzLWNvbXBpbGUucGF0Y2gKaW5kZXggZDU0YjMwNy4uMzY1Nzg1NCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGJiL3RiYi9jcm9zcy1jb21waWxlLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RiYi90YmIvY3Jvc3MtY29tcGlsZS5wYXRjaApAQCAtMSwzOSArMSwzNSBAQAogQXV0aG9yOiBNYXJjaW4gSnVzemtpZXdpY3ogPG1hcmNpbi5qdXN6a2lld2ljekBsaW5hcm8ub3JnPgotCisgIAogVXBzdHJlYW0tU3RhdHVzOiB1bnN1aXRhYmxlCiAtLS0KLSBidWlsZC9saW51eC5nY2MuaW5jIHwgICAgNSArKystLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKLUluZGV4OiB0YmIyMDE3XzIwMTcwMTE4b3NzL2J1aWxkL2xpbnV4LmdjYy5pbmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0YmIyMDE3XzIwMTcwMTE4b3NzLm9yaWcvYnVpbGQvbGludXguZ2NjLmluYwotKysrIHRiYjIwMTdfMjAxNzAxMThvc3MvYnVpbGQvbGludXguZ2NjLmluYwotQEAgLTMyLDggKzMyLDkgQEAgRFlMSUJfS0VZID0gLXNoYXJlZAotIEVYUE9SVF9LRVkgPSAtV2wsLS12ZXJzaW9uLXNjcmlwdCwKLSBMSUJETCA9IC1sZGwKK2RpZmYgLS1naXQgYS9idWlsZC9saW51eC5jbGFuZy5pbmMgYi9idWlsZC9saW51eC5jbGFuZy5pbmMKK2luZGV4IGZlOWI1Yzk4Li5iMGRjZDY4YiAxMDA2NDQKKy0tLSBhL2J1aWxkL2xpbnV4LmNsYW5nLmluYworKysrIGIvYnVpbGQvbGludXguY2xhbmcuaW5jCitAQCAtMTIsOCArMTIsOCBAQAorICMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAgCi0tQ1BMVVMgPSBnKysKLS1DT05MWSA9IGdjYwotK0NQTFVTID0gJChDWFgpCi0rQ09OTFkgPSAkKENDKQotK0NQTFVTX0ZMQUdTID0gJChDWFhGTEFHUykKLSBMSUJfTElOS19GTEFHUyA9ICQoRFlMSUJfS0VZKSAtV2wsLXNvbmFtZT0kKEJVSUxESU5HX0xJQlJBUlkpCi0gTElCUyArPSAtbHB0aHJlYWQgLWxydAotIExJTktfRkxBR1MgPSAtV2wsLXJwYXRoLWxpbms9LiAtcmR5bmFtaWMKLUluZGV4OiB0YmIyMDE3XzIwMTcwMTE4b3NzL2J1aWxkL2xpbnV4LmNsYW5nLmluYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRiYjIwMTdfMjAxNzAxMThvc3Mub3JpZy9idWlsZC9saW51eC5jbGFuZy5pbmMKLSsrKyB0YmIyMDE3XzIwMTcwMTE4b3NzL2J1aWxkL2xpbnV4LmNsYW5nLmluYwotQEAgLTMxLDggKzMxLDkgQEAgRFlMSUJfS0VZID0gLXNoYXJlZAotIEVYUE9SVF9LRVkgPSAtV2wsLS12ZXJzaW9uLXNjcmlwdCwKLSBMSUJETCA9IC1sZGwKKy1DUExVUyA/PSBjbGFuZysrCistQ09OTFkgPz0gY2xhbmcKKytDUExVUyA/PSAkKENYWCkKKytDT05MWSA/PSAkKENDKQorIENPTVBJTEVfT05MWSA9IC1jIC1NTUQKKyBQUkVQUk9DX09OTFkgPSAtRSAteCBjKysKKyBJTkNMVURFX0tFWSA9IC1JCitkaWZmIC0tZ2l0IGEvYnVpbGQvbGludXguZ2NjLmluYyBiL2J1aWxkL2xpbnV4LmdjYy5pbmMKK2luZGV4IGQ4MjBjMTVkLi42MmM3NmFmZCAxMDA2NDQKKy0tLSBhL2J1aWxkL2xpbnV4LmdjYy5pbmMKKysrKyBiL2J1aWxkL2xpbnV4LmdjYy5pbmMKK0BAIC0xMiw4ICsxMiw4IEBACisgIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICAKLS1DUExVUyA9IGNsYW5nKysKLS1DT05MWSA9IGNsYW5nCi0rQ1BMVVMgPSAkKENYWCkKLStDT05MWSA9ICQoQ0MpCi0rQ1BMVVNfRkxBR1MgPSAkKENYWEZMQUdTKQotIExJQl9MSU5LX0ZMQUdTID0gJChEWUxJQl9LRVkpIC1XbCwtc29uYW1lPSQoQlVJTERJTkdfTElCUkFSWSkKLSBMSUJTICs9IC1scHRocmVhZCAtbHJ0Ci0gTElOS19GTEFHUyA9IC1XbCwtcnBhdGgtbGluaz0uIC1yZHluYW1pYworLUNQTFVTID89IGcrKworLUNPTkxZID89IGdjYworK0NQTFVTID89ICQoQ1hYKQorK0NPTkxZID89ICQoQ0MpCisgQ09NUElMRV9PTkxZID0gLWMgLU1NRAorIFBSRVBST0NfT05MWSA9IC1FIC14IGMrKworIElOQ0xVREVfS0VZID0gLUkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RiYi90YmIvdGJiLnBjIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGJiL3RiYi90YmIucGMKaW5kZXggNjQ0YjY0Zi4uNGY5ZGExMSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGJiL3RiYi90YmIucGMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGJiL3RiYi90YmIucGMKQEAgLTUsNyArNSw3IEBACiAKIE5hbWU6IFRocmVhZGluZyBCdWlsZGluZyBCbG9ja3MKIERlc2NyaXB0aW9uOiBJbnRlbCdzIHBhcmFsbGVsaXNtIGxpYnJhcnkgZm9yIEMrKwotVVJMOiBodHRwOi8vd3d3LnRocmVhZGluZ2J1aWxkaW5nYmxvY2tzLm9yZy8KLVZlcnNpb246IDMuMCtyMDE4CitVUkw6IGh0dHBzOi8vc29mdHdhcmUuaW50ZWwuY29tL2VuLXVzL3RiYgorVmVyc2lvbjogMjAyMC4yCiBMaWJzOiAtTCR7bGliZGlyfSAtbHRiYgogQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90YmIvdGJiXzIwMjAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RiYi90YmJfMjAyMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmOWZkN2YKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90YmIvdGJiXzIwMjAuMi5iYgpAQCAtMCwwICsxLDQ1IEBACitERVNDUklQVElPTiA9ICJQYXJhbGxlbGlzbSBsaWJyYXJ5IGZvciBDKysgLSBydW50aW1lIGZpbGVzIFwKKyAgICBUQkIgaXMgYSBsaWJyYXJ5IHRoYXQgaGVscHMgeW91IGxldmVyYWdlIG11bHRpLWNvcmUgcHJvY2Vzc29yIFwKKyAgICBwZXJmb3JtYW5jZSB3aXRob3V0IGhhdmluZyB0byBiZSBhIHRocmVhZGluZyBleHBlcnQuIEl0IHJlcHJlc2VudHMgYSBcCisgICAgaGlnaGVyLWxldmVsLCB0YXNrLWJhc2VkIHBhcmFsbGVsaXNtIHRoYXQgYWJzdHJhY3RzIHBsYXRmb3JtIGRldGFpbHMgXAorICAgIGFuZCB0aHJlYWRpbmcgbWVjaGFuaXNtIGZvciBwZXJmb3JtYW5jZSBhbmQgc2NhbGFiaWxpdHkuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9zb2Z0d2FyZS5pbnRlbC5jb20vZW4tdXMvdGJiIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ODZkM2YzYTk1YzMyNGM5NDc5YmQ4OTg2OTY4ZjQzMjciCitCUkFOQ0ggPSAidGJiXzIwMjAiCitTUkNSRVYgPSAiNjBiN2QwYTc4Zjg5MTA5NzY2NzhiYTYzYTE5ZmRhZWUyMmMwZWY2NSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vbmVhcGktc3JjL29uZVRCQi5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPSR7QlJBTkNIfSBcCisgICAgICAgICAgIGZpbGU6Ly9jcm9zcy1jb21waWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWFsbGluZm8taXMtZ2xpYmMtc3BlY2lmaWMtQVBJLW1hcmstaXQtc28ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vR0xJQkMtUFJFUkVRLWlzLW5vdC1kZWZpbmVkLW9uLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdGJiLnBjIFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK1BFID0gIjEiCisKK0NPTVBJTEVSID89ICJnY2MiCitDT01QSUxFUl90b29sY2hhaW4tY2xhbmcgPSAiY2xhbmciCisKK2RvX2NvbXBpbGUoKSB7CisgICAgb2VfcnVubWFrZSBjb21waWxlcj0ke0NPTVBJTEVSfSBhcmNoPSR7SE9TVF9BUkNIfQorfQorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0gJHtEfSR7bGliZGlyfQorICAgIHJtICR7U30vaW5jbHVkZS90YmIvaW5kZXguaHRtbCAtZgorICAgIGNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12ICR7U30vaW5jbHVkZS90YmIgJHtEfSR7aW5jbHVkZWRpcn0KKyAgICBmb3IgZiBpbiAke0J9L2J1aWxkL2xpbnV4XypfcmVsZWFzZS9saWIqLnNvKgorICAgIGRvCisgICAgICAgIGluc3RhbGwgLURtIDA3NTUgJGYgJHtEfSR7bGliZGlyfS8KKyAgICBkb25lCisgICAgaW5zdGFsbCAtRG0gMDY0NCAke1dPUktESVJ9L3RiYi5wYyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy90YmIucGMKK30KKworIyBmYWlscyB3aXRoIHRodW1iIGVuYWJsZWQ6CisjIHwgYXJtLW9lLWxpbnV4LWdudWVhYmktZysrICAtbWFyY2g9YXJtdjctYSAtbXRodW1iIC1tdGh1bWItaW50ZXJ3b3JrIC1tZmxvYXQtYWJpPXNvZnRmcCAtbWZwdT1uZW9uIC1tdHVuZT1jb3J0ZXgtYTkgLW1jcHU9Y29ydGV4LWE5IC1EX19BUk1fXyAtRF9fTElOVVhfQVJNX0FSQ0hfXz03IC1mdW53aW5kLXRhYmxlcyAtbXZlY3Rvcml6ZS13aXRoLW5lb24tcXVhZCAtcmR5bmFtaWMgLS1zeXNyb290PS9PRS9zeXNyb290cy9tMTR0diAtYyAtTU1EIC1EVEJCX1VTRV9ERUJVRyAgLWcgLU8wIC1EVVNFX1BUSFJFQUQgLWZQSUMgLURfX1RCQl9CVUlMRD0xIC1XYWxsIC1Xbm8tcGFyZW50aGVzZXMgLVduby1ub24tdmlydHVhbC1kdG9yIC1PMiAtcGlwZSAtZyAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMgLWZwZXJtaXNzaXZlIC1mdmlzaWJpbGl0eS1pbmxpbmVzLWhpZGRlbiAgIC1JLi4vLi4vc3JjIC1JLi4vLi4vc3JjL3JtbC9pbmNsdWRlIC1JLi4vLi4vaW5jbHVkZSAuLi8uLi9zcmMvdGJiL2NvbmN1cnJlbnRfcXVldWUuY3BwCisjIHwge3N0YW5kYXJkIGlucHV0fTogQXNzZW1ibGVyIG1lc3NhZ2VzOgorIyB8IHtzdGFuZGFyZCBpbnB1dH06MjUwOiBFcnJvcjogdGh1bWIgY29uZGl0aW9uYWwgaW5zdHJ1Y3Rpb24gc2hvdWxkIGJlIGluIElUIGJsb2NrIC0tIGBzdHJleGVxIHIyLHIzLFtyNF0nCisjIC4uLgorIyB8IG1ha2VbMV06ICoqKiBbY29uY3VycmVudF9xdWV1ZS5vXSBFcnJvciAxCitBUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VpbS91aW1fMS44LjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91aW0vdWltXzEuOC44LmJiCmluZGV4IGMxMTM2Y2QuLjAzNjZhZDggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VpbS91aW1fMS44LjguYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWltL3VpbV8xLjguOC5iYgpAQCAtMTMsNiArMTMsOCBAQAogU1JDX1VSSVttZDVzdW1dID0gIjAxYzdiZDVkMGQ0ZjNhOWY2ZjViZWZlNmY1N2E0NzBiIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM0NTk5YmJjYzRlNWFiODc4MzIzNzA3NjNlMzhiZTUxMDA5ODRhNjQyMzc1NTVlOTIzNGExZWEyMjVhMGZhZGMiCiAKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcyIKKwogREVQRU5EUyA9ICJhbnRoeSBmb250Y29uZmlnIGxpYnhmdCBsaWJ4dCBnbGliLTIuMCBuY3Vyc2VzIGludGx0b29sIGxpYmVkaXQiCiBERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGludGx0b29sLW5hdGl2ZSBndGsrIGd0ayszIHVpbS1uYXRpdmUgdGFrYW8tZm9udHMiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VyaXBhcnNlci91cmlwYXJzZXJfMC45LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91cmlwYXJzZXIvdXJpcGFyc2VyXzAuOS4zLmJiCmluZGV4IDhjMjhjOWQuLmRhNTJiYjUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VyaXBhcnNlci91cmlwYXJzZXJfMC45LjMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXJpcGFyc2VyL3VyaXBhcnNlcl8wLjkuMy5iYgpAQCAtOCw2ICs4LDggQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICI5ODc0YjY0ZjZmNGZmNjU2ZjNmNjk1OThlMzhmMTJiNyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI2Y2VmMzlkNmVhZjFhNDg1MDRlZTAyNjRjZTg1ZjA3ODc1ODA1N2RhZmIxZWRkMGE4OTgxODNiNTVmZjc2MDE0IgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMiCisKIGluaGVyaXQgY21ha2UKIAogRVhUUkFfT0VDTUFLRSArPSAiLURVUklQQVJTRVJfQlVJTERfRE9DUzpCT09MPU9GRiAtRFVSSVBBUlNFUl9CVUlMRF9URVNUUzpCT09MPU9GRiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VzYi1tb2Rlc3dpdGNoL3VzYi1tb2Rlc3dpdGNoLWRhdGFfMjAxNzA4MDYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91c2ItbW9kZXN3aXRjaC91c2ItbW9kZXN3aXRjaC1kYXRhXzIwMTcwODA2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWJkOTQxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VzYi1tb2Rlc3dpdGNoL3VzYi1tb2Rlc3dpdGNoLWRhdGFfMjAxNzA4MDYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIkRhdGEgZmlsZXMgZm9yIHVzYm1vZGVzd2l0Y2giCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi0KLWluaGVyaXQgYWxsYXJjaAotCi1ERVBFTkRTICs9ICJ0Y2wtbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZHJhaXNiZXJnaG9mLmRlL3VzYl9tb2Rlc3dpdGNoLyR7QlB9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiZmI1MGQxNWI1MmU5MDlkNzQyZGQxNmYwYTk4ODIzMTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2U0MTNlZjJhNTBlNjQ4ZTljODFiYzNlYTYxMTBlNzMyNGE4YmY5ODEwMzRmYzllYzQ0NjdkMzU2MjU2M2MyYyIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci19Ci0KLVJERVBFTkRTXyR7UE59ID0gInVzYi1tb2Rlc3dpdGNoICg+PSAyLjQuMCkiCi1GSUxFU18ke1BOfSArPSAiJHtiYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS91c2JfbW9kZXN3aXRjaCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VzYi1tb2Rlc3dpdGNoL3VzYi1tb2Rlc3dpdGNoLWRhdGFfMjAxOTExMjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91c2ItbW9kZXN3aXRjaC91c2ItbW9kZXN3aXRjaC1kYXRhXzIwMTkxMTI4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzOGMwZjkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91c2ItbW9kZXN3aXRjaC91c2ItbW9kZXN3aXRjaC1kYXRhXzIwMTkxMTI4LmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiRGF0YSBmaWxlcyBmb3IgdXNibW9kZXN3aXRjaCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKKworaW5oZXJpdCBhbGxhcmNoCisKK0RFUEVORFMgKz0gInRjbC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5kcmFpc2Jlcmdob2YuZGUvdXNiX21vZGVzd2l0Y2gvJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlOGZjZTdlYjk0OWNiZTE2YzYxZmI3MWJhZGU0Y2MxNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZjAzOWI2MDc5MWMyMWM3Y2IxNWM3OTg2Y2FjODk2NTBmMDc2ZGMyNzQ3OThmYTI0MjIzMWI5MTA3ODVlYWY5IgorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KK30KKworUkRFUEVORFNfJHtQTn0gPSAidXNiLW1vZGVzd2l0Y2ggKD49IDIuNC4wKSIKK0ZJTEVTXyR7UE59ICs9ICIke2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3VzYl9tb2Rlc3dpdGNoIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXNiLW1vZGVzd2l0Y2gvdXNiLW1vZGVzd2l0Y2hfMi41LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91c2ItbW9kZXN3aXRjaC91c2ItbW9kZXN3aXRjaF8yLjUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNlNDBiMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91c2ItbW9kZXN3aXRjaC91c2ItbW9kZXN3aXRjaF8yLjUuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBtb2RlIHN3aXRjaGluZyB0b29sIGZvciBjb250cm9sbGluZyAnZmxpcCBmbG9wJyAobXVsdGlwbGUgZGV2aWNlKSBVU0IgZ2VhciIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotREVQRU5EUyA9ICJsaWJ1c2IxIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZHJhaXNiZXJnaG9mLmRlL3VzYl9tb2Rlc3dpdGNoLyR7QlB9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiMTZiOWE4ZWZhMWJmOGZiZDdkNTYxMjc1N2VhZTRmMjYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWJmZmFjMDljODdlYWNkNzhlMTAxNTQ1OTY3ZGMyNWFmN2U5ODk3NDViNDI3Njc1NmQ0NWRiZjQwMDhhMmVhNiIKLQotaW5oZXJpdCBwa2djb25maWcgc3lzdGVtZAotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAidXNiX21vZGVzd2l0Y2hALnNlcnZpY2UiCi0KLUVYVFJBX09FTUFLRSA9ICJUQ0w9JHtiaW5kaXJ9L3RjbHNoIgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0gJHtzeXNjb25mZGlyfSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvdXNiX21vZGVzd2l0Y2ggJHtzYmluZGlyfSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi91c2JfbW9kZXN3aXRjaCIKLVJERVBFTkRTXyR7UE59ID0gInRjbCIKLVJSRUNPTU1FTkRTXyR7UE59ID0gInVzYi1tb2Rlc3dpdGNoLWRhdGEiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbAotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtTfS91c2JfbW9kZXN3aXRjaEAuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBmaQotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXNiLW1vZGVzd2l0Y2gvdXNiLW1vZGVzd2l0Y2hfMi42LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91c2ItbW9kZXN3aXRjaC91c2ItbW9kZXN3aXRjaF8yLjYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWFkMzQwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXNiLW1vZGVzd2l0Y2gvdXNiLW1vZGVzd2l0Y2hfMi42LjAuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJBIG1vZGUgc3dpdGNoaW5nIHRvb2wgZm9yIGNvbnRyb2xsaW5nICdmbGlwIGZsb3AnIChtdWx0aXBsZSBkZXZpY2UpIFVTQiBnZWFyIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA5MTU1NmJkNmQwMTU0Y2Q0YzJkMTdhMWJmYzczODBhIgorCitERVBFTkRTID0gImxpYnVzYjEiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5kcmFpc2Jlcmdob2YuZGUvdXNiX21vZGVzd2l0Y2gvJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZTczZGNjODQwMjU3OTQwODFhMWQ0ZDRlNWE3NWU0YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMjE1MjM2ZTZiYWRhNmU2NTlmYzE5NWEzMWQ2MTFlYTI5OGE0YmRiNGQ1N2EwZDY4YzU1M2I1NjU4NWY4YmEzIgorCitpbmhlcml0IHBrZ2NvbmZpZyBzeXN0ZW1kCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ1c2JfbW9kZXN3aXRjaEAuc2VydmljZSIKKworRVhUUkFfT0VNQUtFID0gIlRDTD0ke2JpbmRpcn0vdGNsc2giCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfSAke3N5c2NvbmZkaXJ9ICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi91c2JfbW9kZXN3aXRjaCAke3NiaW5kaXJ9ICR7bG9jYWxzdGF0ZWRpcn0vbGliL3VzYl9tb2Rlc3dpdGNoIgorUkRFUEVORFNfJHtQTn0gPSAidGNsIgorUlJFQ09NTUVORFNfJHtQTn0gPSAidXNiLW1vZGVzd2l0Y2gtZGF0YSIKKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1N9L3VzYl9tb2Rlc3dpdGNoQC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGZpCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91c2JwYXRoL3VzYnBhdGgvY29uZmlndXJlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXNicGF0aC91c2JwYXRoL2NvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjcxZTZhNS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91c2JwYXRoL3VzYnBhdGgvY29uZmlndXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotSW5kZXg6IHVzYnBhdGgvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdXNicGF0aC5vcmlnL2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE3IDIwOjQwOjI2LjAwMDAwMDAwMCArMDAwMAotKysrIHVzYnBhdGgvY29uZmlndXJlLmFjCTIwMTQtMDctMTggMDc6MDE6NDAuOTMzNDc0NDIwICswMDAwCi1AQCAtMSw1ICsxLDUgQEAKLSBBQ19JTklUKFt1c2JwYXRoXSxbMC4xXSkKLS1BTV9JTklUX0FVVE9NQUtFKEFDX1BBQ0tBR0VfTkFNRSwgQUNfUEFDS0FHRV9WRVJTSU9OKQotK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ25dKQotIAotIEFDX1BST0dfQ0MKLSBBQ19QUk9HX1JBTkxJQgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXNicGF0aC91c2JwYXRoX3N2bi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VzYnBhdGgvdXNicGF0aF9zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjOWNkMDQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXNicGF0aC91c2JwYXRoX3N2bi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiQ29udmVydCB0aGUgcGh5c2ljYWwgbG9jYXRpb25zIG9mIGEgVVNCIGRldmljZSB0by9mcm9tIGl0cyBudW1iZXIiCi1BVVRIT1IgPSAiV2VybmVyIEFsbWVzYmVyZ2VyIDx3ZXJuZXJAb3Blbm1va28ub3JnPiIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vdXNicGF0aC5jO2VuZGxpbmU9MjA7bWQ1PTBhYThjN2QyYWY5MTEwYzc4YTk5ZmJmOWE1MDRkYzNmIgotREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYnVzYjAiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJ2aXJ0dWFsL2xpYnVzYjAtbmF0aXZlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotU1JDUkVWID0gIjMxNzIiCi1QViA9ICIwLjArc3ZuciR7U1JDUFZ9IgotCi1TUkNfVVJJID0gInN2bjovL3N2bi5vcGVubW9rby5vcmcvdHJ1bmsvc3JjL2hvc3Q7bW9kdWxlPXVzYnBhdGg7cHJvdG9jb2w9aHR0cCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUucGF0Y2giCi0KLVMgPSAiJHtXT1JLRElSfS91c2JwYXRoIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUkRFUEVORFNfJHtQTn0gKz0gInBlcmwiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91dG91Y2gvdXRvdWNoLWV2ZW11LzAwMDEtRml4LWJ1aWxkLW9uLTMyYml0LWFyY2hlcy13aXRoLTY0Yml0LXRpbWVfdC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3V0b3VjaC91dG91Y2gtZXZlbXUvMDAwMS1GaXgtYnVpbGQtb24tMzJiaXQtYXJjaGVzLXdpdGgtNjRiaXQtdGltZV90LnBhdGNoCmluZGV4IDcxYmY1NzIuLjdjZmQ0NzAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3V0b3VjaC91dG91Y2gtZXZlbXUvMDAwMS1GaXgtYnVpbGQtb24tMzJiaXQtYXJjaGVzLXdpdGgtNjRiaXQtdGltZV90LnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3V0b3VjaC91dG91Y2gtZXZlbXUvMDAwMS1GaXgtYnVpbGQtb24tMzJiaXQtYXJjaGVzLXdpdGgtNjRiaXQtdGltZV90LnBhdGNoCkBAIC0xMiw4ICsxMiw4IEBACiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogLS0tCiAgc3JjL2V2ZW11LWltcGwuaCB8ICA1ICsrKysrCi0gc3JjL2V2ZW11LmMgICAgICB8IDE2ICsrKysrKysrKy0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisgc3JjL2V2ZW11LmMgICAgICB8IDIwICsrKysrKysrKysrKy0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2V2ZW11LWltcGwuaCBiL3NyYy9ldmVtdS1pbXBsLmgKIGluZGV4IGFjZjI5NzYuLmMwOGQ4NjEgMTAwNjQ0CkBAIC0zMiw3ICszMiw3IEBACiAgI2RlZmluZSBFVlBMQVlfTkJZVEVTCSgoRVZQTEFZX05CSVRTICsgNykgLyA4KQogIAogZGlmZiAtLWdpdCBhL3NyYy9ldmVtdS5jIGIvc3JjL2V2ZW11LmMKLWluZGV4IDIxMTg3YWYuLjE2MGM5MTUgMTAwNjQ0CitpbmRleCAyMTE4N2FmLi43NDg5NDQ5IDEwMDY0NAogLS0tIGEvc3JjL2V2ZW11LmMKICsrKyBiL3NyYy9ldmVtdS5jCiBAQCAtMzYzLDcgKzM2Myw3IEBAIGludCBldmVtdV9yZWFkKHN0cnVjdCBldmVtdV9kZXZpY2UgKmRldiwgRklMRSAqZnApCkBAIC01NSwxNiArNTUsMTkgQEAKICAJZXYtPnR5cGUgPSB0eXBlOwogIAlldi0+Y29kZSA9IGNvZGU7CiAgCWV2LT52YWx1ZSA9IHZhbHVlOwotQEAgLTQxMSwxMiArNDExLDE0IEBAIGludCBldmVtdV9yZWFkX2V2ZW50X3JlYWx0aW1lKEZJTEUgKmZwLCBzdHJ1Y3QgaW5wdXRfZXZlbnQgKmV2LAorQEAgLTQxMCwxMyArNDExLDE2IEBAIGludCBldmVtdV9yZWFkX2V2ZW50X3JlYWx0aW1lKEZJTEUgKmZwLCBzdHJ1Y3QgaW5wdXRfZXZlbnQgKmV2LAorIAkJcmV0dXJuIHJldDsKICAKICAJaWYgKGV2dGltZSkgewotIAkJaWYgKCFldnRpbWUtPnR2X3NlYykKKy0JCWlmICghZXZ0aW1lLT50dl9zZWMpCiAtCQkJKmV2dGltZSA9IGV2LT50aW1lOwogLQkJdXNlYyA9IDEwMDAwMDBMICogKGV2LT50aW1lLnR2X3NlYyAtIGV2dGltZS0+dHZfc2VjKTsKIC0JCXVzZWMgKz0gZXYtPnRpbWUudHZfdXNlYyAtIGV2dGltZS0+dHZfdXNlYzsKKysJCWlmICghZXZ0aW1lLT50dl9zZWMpIHsKICsJCQlldnRpbWUtPnR2X3NlYyA9IGV2LT5pbnB1dF9ldmVudF9zZWM7CiArCQkJZXZ0aW1lLT50dl91c2VjID0gZXYtPmlucHV0X2V2ZW50X3VzZWM7Ci0rCQl1c2VjID0gMTAwMDAwMEwgKiAoZXYtPmlucHV0X2V2ZW50X3NlYyAtIGV2dGltZS0+dHZfc2VjKTsKKysJCX0KKysJCXVzZWMgPSAoZXYtPmlucHV0X2V2ZW50X3NlYyAtIGV2dGltZS0+dHZfc2VjKSAqIDEwMDAwMDBMOwogKwkJdXNlYyArPSBldi0+aW5wdXRfZXZlbnRfdXNlYyAtIGV2dGltZS0+dHZfdXNlYzsKICAJCWlmICh1c2VjID4gNTAwKSB7CiAgCQkJdXNsZWVwKHVzZWMpOwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXRvdWNoL3V0b3VjaC1ldmVtdV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91dG91Y2gvdXRvdWNoLWV2ZW11X2dpdC5iYgppbmRleCA0MWQxY2JmLi43YzVhNzM0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91dG91Y2gvdXRvdWNoLWV2ZW11X2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91dG91Y2gvdXRvdWNoLWV2ZW11X2dpdC5iYgpAQCAtMTIsNyArMTIsNyBAQAogICAgICAgICAgICAiCiBTUkNSRVYgPSAiOTc1MmI1MGU5MjI1NzJlNGNkMjE0YWM0NWVkOTVlNGVlNDEwZmUyNCIKIAotUFYgPSAiMS4wLjUrZ2l0JHtTUkNQVn0iCitQViA9ICIxLjAuNitnaXQke1NSQ1BWfSIKIAogUyA9ICIke1dPUktESVJ9L2dpdC8iCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Zib3hndWVzdGRyaXZlcnMvdmJveGd1ZXN0ZHJpdmVyc182LjEuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Zib3hndWVzdGRyaXZlcnMvdmJveGd1ZXN0ZHJpdmVyc182LjEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJjMmI1MC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92Ym94Z3Vlc3Rkcml2ZXJzL3Zib3hndWVzdGRyaXZlcnNfNi4xLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi1TVU1NQVJZID0gIlZpcnR1YWxCb3ggTGludXggR3Vlc3QgRHJpdmVycyIKLVNFQ1RJT04gPSAiY29yZSIKLUxJQ0VOU0UgPSAiR1BMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7V09SS0RJUn0vJHtWQk9YX05BTUV9L0NPUFlJTkc7bWQ1PWUxOTdkNTY0MWJiMzViMjlkNDZjYThjNGJmN2YyNjYwIgotCi1ERVBFTkRTID0gInZpcnR1YWwva2VybmVsIgotCi1pbmhlcml0IG1vZHVsZSBrZXJuZWwtbW9kdWxlLXNwbGl0Ci0KLUNPTVBBVElCTEVfTUFDSElORSA9ICIocWVtdXg4NnxxZW11eDg2LTY0KSIKLQotVkJPWF9OQU1FID0gIlZpcnR1YWxCb3gtJHtQVn0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLnZpcnR1YWxib3gub3JnL3ZpcnR1YWxib3gvJHtQVn0vJHtWQk9YX05BTUV9LnRhci5iejIgXAotICAgIGZpbGU6Ly9NYWtlZmlsZS51dGlscyBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZjRmNDJmZDA5ODU3NTU2YjA0YjgwM2ZiOTljYzY5MDUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDMyNjU3NmU4NDI4ZWEzNjI2MTk0ZmM4MjY0NjM0NzU3NmU5NGM2MWYxMWQ0MTJhNjY5ZmM4YTEwYzJhMWU2NyIKLQotUyA9ICIke1dPUktESVJ9L3Zib3hfbW9kdWxlIgotCi1leHBvcnQgQlVJTERfVEFSR0VUX0FSQ0g9IiR7QVJDSH0iCi1leHBvcnQgQlVJTERfVEFSR0VUX0FSQ0hfeDg2LTY0PSJhbWQ2NCIKLQotRVhUUkFfT0VNQUtFICs9ICJLRVJOX0RJUj0nJHtXT1JLRElSfS8ke0tFUk5FTF9WRVJTSU9OfS9idWlsZCcgS0JVSUxEX1ZFUkJPU0U9MSIKLQotIyBvdGhlcndpc2UgNS4yLjIyIGJ1aWxkcyBqdXN0IHZib3hndWVzdAotTUFLRV9UQVJHRVRTID0gImFsbCIKLQotYWRkdGFzayBleHBvcnRfc291cmNlcyBhZnRlciBkb19wYXRjaCBiZWZvcmUgZG9fY29uZmlndXJlCi0KLWRvX2V4cG9ydF9zb3VyY2VzKCkgewotICAgIG1rZGlyIC1wICIke1N9IgotICAgICR7V09SS0RJUn0vJHtWQk9YX05BTUV9L3NyYy9WQm94L0FkZGl0aW9ucy9saW51eC9leHBvcnRfbW9kdWxlcy5zaCAke1R9L3Zib3hfbW9kdWxlcy50YXIuZ3oKLSAgICB0YXIgLUMgIiR7U30iIC14emYgJHtUfS92Ym94X21vZHVsZXMudGFyLmd6Ci0KLSAgICAjIGFkZCBhIG1vdW50IHV0aWxpdHkgdG8gdXNlIHNoYXJlZCBmb2xkZXIgZnJvbSBWQm94IEFkZGl0aW9uIFNvdXJjZSBDb2RlCi0gICAgbWtkaXIgLXAgIiR7U30vdXRpbHMiCi0gICAgaW5zdGFsbCAke1dPUktESVJ9LyR7VkJPWF9OQU1FfS9zcmMvVkJveC9BZGRpdGlvbnMvbGludXgvc2hhcmVkZm9sZGVycy9tb3VudC52Ym94c2YuYyAke1N9L3V0aWxzCi0gICAgaW5zdGFsbCAke1dPUktESVJ9LyR7VkJPWF9OQU1FfS9zcmMvVkJveC9BZGRpdGlvbnMvbGludXgvc2hhcmVkZm9sZGVycy92YnNmbW91bnQuYyAke1N9L3V0aWxzCi0gICAgaW5zdGFsbCAke1N9Ly4uL01ha2VmaWxlLnV0aWxzICR7U30vdXRpbHMvTWFrZWZpbGUKLQotfQotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAjIHZib3hndWVzdGRyaXZlcnMvNS4yLjYtcjAvdmJveF9tb2R1bGUvdmJveGd1ZXN0L01ha2VmaWxlLmluY2x1ZGUuaGVhZGVyOjk5OiAqKiogVGhlIHZhcmlhYmxlIEtFUk5fRElSIG11c3QgYmUgYSBrZXJuZWwgYnVpbGQgZm9sZGVyIGFuZCBlbmQgd2l0aCAvYnVpbGQgd2l0aG91dCBhIHRyYWlsaW5nIHNsYXNoLCBvciBLRVJOX1ZFUiBtdXN0IGJlIHNldC4gIFN0b3AuCi0gICAgIyB2Ym94Z3Vlc3Rkcml2ZXJzLzUuMi42LXIwL3Zib3hfbW9kdWxlL3Zib3hndWVzdC9NYWtlZmlsZS5pbmNsdWRlLmhlYWRlcjoxMDg6ICoqKiBUaGUga2VybmVsIGJ1aWxkIGZvbGRlciBwYXRoIG11c3QgZW5kIGluIDx2ZXJzaW9uPi9idWlsZCwgb3IgdGhlIHZhcmlhYmxlIEtFUk5fVkVSIG11c3QgYmUgc2V0LiAgU3RvcC4KLSAgICBta2RpciAtcCAke1dPUktESVJ9LyR7S0VSTkVMX1ZFUlNJT059Ci0gICAgbG4gLXNuZiAke1NUQUdJTkdfS0VSTkVMX0RJUn0gJHtXT1JLRElSfS8ke0tFUk5FTF9WRVJTSU9OfS9idWlsZAotfQotCi0jIGNvbXBpbGUgYW5kIGluc3RhbGwgbW91bnQgdXRpbGl0eQotZG9fY29tcGlsZSgpIHsKLSAgICBvZV9ydW5tYWtlIGFsbAotICAgIG9lX3J1bm1ha2UgJ0xEPSR7Q0N9JyAnTERGTEFHUz0ke0xERkxBR1N9JyAtQyAke1N9L3V0aWxzCi0gICAgaWYgISBbIC1lIHZib3hndWVzdC5rbyAtYSAtZSB2Ym94c2Yua28gLWEgLWUgdmJveHZpZGVvLmtvIF0gOyB0aGVuCi0gICAgICAgIGVjaG8gIkVSUk9SOiBPbmUgb2YgdmJveCoua28gbW9kdWxlcyB3YXNuJ3QgYnVpbHQiCi0gICAgICAgIGV4aXQgMQotICAgIGZpCi19Ci0KLW1vZHVsZV9kb19pbnN0YWxsKCkgewotICAgIE1PRFVMRV9ESVI9JHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbW9kdWxlcy8ke0tFUk5FTF9WRVJTSU9OfS9rZXJuZWwvbWlzYwotICAgIGluc3RhbGwgLWQgJE1PRFVMRV9ESVIKLSAgICBpbnN0YWxsIC1tIDY0NCB2Ym94Z3Vlc3Qua28gJE1PRFVMRV9ESVIKLSAgICBpbnN0YWxsIC1tIDY0NCB2Ym94c2Yua28gJE1PRFVMRV9ESVIKLSAgICBpbnN0YWxsIC1tIDY0NCB2Ym94dmlkZW8ua28gJE1PRFVMRV9ESVIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX3NiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSA3NTUgJHtTfS91dGlscy9tb3VudC52Ym94c2YgJHtEfSR7YmFzZV9zYmluZGlyfQotfQotCi1QQUNLQUdFUyArPSAia2VybmVsLW1vZHVsZS12Ym94Z3Vlc3Qga2VybmVsLW1vZHVsZS12Ym94c2Yga2VybmVsLW1vZHVsZS12Ym94dmlkZW8iCi1SUkVDT01NRU5EU18ke1BOfSArPSAia2VybmVsLW1vZHVsZS12Ym94Z3Vlc3Qga2VybmVsLW1vZHVsZS12Ym94c2Yga2VybmVsLW1vZHVsZS12Ym94dmlkZW8iCi0KLUZJTEVTXyR7UE59ID0gIiR7YmFzZV9zYmluZGlyfSIKLQotIyBhdXRvbG9hZCBpZiBpbnN0YWxsZWQKLUtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gInZib3hndWVzdCB2Ym94c2YgdmJveHZpZGVvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmJveGd1ZXN0ZHJpdmVycy92Ym94Z3Vlc3Rkcml2ZXJzXzYuMS42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmJveGd1ZXN0ZHJpdmVycy92Ym94Z3Vlc3Rkcml2ZXJzXzYuMS42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5YjFlZTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92Ym94Z3Vlc3Rkcml2ZXJzL3Zib3hndWVzdGRyaXZlcnNfNi4xLjYuYmIKQEAgLTAsMCArMSw4MSBAQAorU1VNTUFSWSA9ICJWaXJ0dWFsQm94IExpbnV4IEd1ZXN0IERyaXZlcnMiCitTRUNUSU9OID0gImNvcmUiCitMSUNFTlNFID0gIkdQTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9LyR7VkJPWF9OQU1FfS9DT1BZSU5HO21kNT1lMTk3ZDU2NDFiYjM1YjI5ZDQ2Y2E4YzRiZjdmMjY2MCIKKworREVQRU5EUyA9ICJ2aXJ0dWFsL2tlcm5lbCIKKworaW5oZXJpdCBtb2R1bGUga2VybmVsLW1vZHVsZS1zcGxpdAorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXV4ODZ8cWVtdXg4Ni02NCkiCisKK1ZCT1hfTkFNRSA9ICJWaXJ0dWFsQm94LSR7UFZ9IgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC52aXJ0dWFsYm94Lm9yZy92aXJ0dWFsYm94LyR7UFZ9LyR7VkJPWF9OQU1FfS50YXIuYnoyIFwKKyAgICBmaWxlOi8vTWFrZWZpbGUudXRpbHMgXAorIgorU1JDX1VSSVttZDVzdW1dID0gImZlNjMyOGQyMmRmYjIwZWEzNzJkYWE0YjU4YjEyMzc0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImIwMzFjMzBkNzcwZjI4YzVmODg0MDcxYWQ5MzNlOGMxZjgzZTY1YjkzYWFiYTAzYTQwMTIwNzdjMWQ5MGE1NGYiCisKK1MgPSAiJHtXT1JLRElSfS92Ym94X21vZHVsZSIKKworZXhwb3J0IEJVSUxEX1RBUkdFVF9BUkNIPSIke0FSQ0h9IgorZXhwb3J0IEJVSUxEX1RBUkdFVF9BUkNIX3g4Ni02ND0iYW1kNjQiCisKK0VYVFJBX09FTUFLRSArPSAiS0VSTl9ESVI9JyR7V09SS0RJUn0vJHtLRVJORUxfVkVSU0lPTn0vYnVpbGQnIEtCVUlMRF9WRVJCT1NFPTEiCisKKyMgb3RoZXJ3aXNlIDUuMi4yMiBidWlsZHMganVzdCB2Ym94Z3Vlc3QKK01BS0VfVEFSR0VUUyA9ICJhbGwiCisKK2FkZHRhc2sgZXhwb3J0X3NvdXJjZXMgYWZ0ZXIgZG9fcGF0Y2ggYmVmb3JlIGRvX2NvbmZpZ3VyZQorCitkb19leHBvcnRfc291cmNlcygpIHsKKyAgICBta2RpciAtcCAiJHtTfSIKKyAgICAke1dPUktESVJ9LyR7VkJPWF9OQU1FfS9zcmMvVkJveC9BZGRpdGlvbnMvbGludXgvZXhwb3J0X21vZHVsZXMuc2ggJHtUfS92Ym94X21vZHVsZXMudGFyLmd6CisgICAgdGFyIC1DICIke1N9IiAteHpmICR7VH0vdmJveF9tb2R1bGVzLnRhci5negorCisgICAgIyBhZGQgYSBtb3VudCB1dGlsaXR5IHRvIHVzZSBzaGFyZWQgZm9sZGVyIGZyb20gVkJveCBBZGRpdGlvbiBTb3VyY2UgQ29kZQorICAgIG1rZGlyIC1wICIke1N9L3V0aWxzIgorICAgIGluc3RhbGwgJHtXT1JLRElSfS8ke1ZCT1hfTkFNRX0vc3JjL1ZCb3gvQWRkaXRpb25zL2xpbnV4L3NoYXJlZGZvbGRlcnMvbW91bnQudmJveHNmLmMgJHtTfS91dGlscworICAgIGluc3RhbGwgJHtXT1JLRElSfS8ke1ZCT1hfTkFNRX0vc3JjL1ZCb3gvQWRkaXRpb25zL2xpbnV4L3NoYXJlZGZvbGRlcnMvdmJzZm1vdW50LmMgJHtTfS91dGlscworICAgIGluc3RhbGwgJHtTfS8uLi9NYWtlZmlsZS51dGlscyAke1N9L3V0aWxzL01ha2VmaWxlCisKK30KKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgIyB2Ym94Z3Vlc3Rkcml2ZXJzLzUuMi42LXIwL3Zib3hfbW9kdWxlL3Zib3hndWVzdC9NYWtlZmlsZS5pbmNsdWRlLmhlYWRlcjo5OTogKioqIFRoZSB2YXJpYWJsZSBLRVJOX0RJUiBtdXN0IGJlIGEga2VybmVsIGJ1aWxkIGZvbGRlciBhbmQgZW5kIHdpdGggL2J1aWxkIHdpdGhvdXQgYSB0cmFpbGluZyBzbGFzaCwgb3IgS0VSTl9WRVIgbXVzdCBiZSBzZXQuICBTdG9wLgorICAgICMgdmJveGd1ZXN0ZHJpdmVycy81LjIuNi1yMC92Ym94X21vZHVsZS92Ym94Z3Vlc3QvTWFrZWZpbGUuaW5jbHVkZS5oZWFkZXI6MTA4OiAqKiogVGhlIGtlcm5lbCBidWlsZCBmb2xkZXIgcGF0aCBtdXN0IGVuZCBpbiA8dmVyc2lvbj4vYnVpbGQsIG9yIHRoZSB2YXJpYWJsZSBLRVJOX1ZFUiBtdXN0IGJlIHNldC4gIFN0b3AuCisgICAgbWtkaXIgLXAgJHtXT1JLRElSfS8ke0tFUk5FTF9WRVJTSU9OfQorICAgIGxuIC1zbmYgJHtTVEFHSU5HX0tFUk5FTF9ESVJ9ICR7V09SS0RJUn0vJHtLRVJORUxfVkVSU0lPTn0vYnVpbGQKK30KKworIyBjb21waWxlIGFuZCBpbnN0YWxsIG1vdW50IHV0aWxpdHkKK2RvX2NvbXBpbGUoKSB7CisgICAgb2VfcnVubWFrZSBhbGwKKyAgICBvZV9ydW5tYWtlICdMRD0ke0NDfScgJ0xERkxBR1M9JHtMREZMQUdTfScgLUMgJHtTfS91dGlscworICAgIGlmICEgWyAtZSB2Ym94Z3Vlc3Qua28gLWEgLWUgdmJveHNmLmtvIC1hIC1lIHZib3h2aWRlby5rbyBdIDsgdGhlbgorICAgICAgICBlY2hvICJFUlJPUjogT25lIG9mIHZib3gqLmtvIG1vZHVsZXMgd2Fzbid0IGJ1aWx0IgorICAgICAgICBleGl0IDEKKyAgICBmaQorfQorCittb2R1bGVfZG9faW5zdGFsbCgpIHsKKyAgICBNT0RVTEVfRElSPSR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L21vZHVsZXMvJHtLRVJORUxfVkVSU0lPTn0va2VybmVsL21pc2MKKyAgICBpbnN0YWxsIC1kICRNT0RVTEVfRElSCisgICAgaW5zdGFsbCAtbSA2NDQgdmJveGd1ZXN0LmtvICRNT0RVTEVfRElSCisgICAgaW5zdGFsbCAtbSA2NDQgdmJveHNmLmtvICRNT0RVTEVfRElSCisgICAgaW5zdGFsbCAtbSA2NDQgdmJveHZpZGVvLmtvICRNT0RVTEVfRElSCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9zYmluZGlyfQorICAgIGluc3RhbGwgLW0gNzU1ICR7U30vdXRpbHMvbW91bnQudmJveHNmICR7RH0ke2Jhc2Vfc2JpbmRpcn0KK30KKworUEFDS0FHRVMgKz0gImtlcm5lbC1tb2R1bGUtdmJveGd1ZXN0IGtlcm5lbC1tb2R1bGUtdmJveHNmIGtlcm5lbC1tb2R1bGUtdmJveHZpZGVvIgorUlJFQ09NTUVORFNfJHtQTn0gKz0gImtlcm5lbC1tb2R1bGUtdmJveGd1ZXN0IGtlcm5lbC1tb2R1bGUtdmJveHNmIGtlcm5lbC1tb2R1bGUtdmJveHZpZGVvIgorCitGSUxFU18ke1BOfSA9ICIke2Jhc2Vfc2JpbmRpcn0iCisKKyMgYXV0b2xvYWQgaWYgaW5zdGFsbGVkCitLRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJ2Ym94Z3Vlc3QgdmJveHNmIHZib3h2aWRlbyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4xLzAwMDEtQ29ycmVjdC1jbGFuZy1jb21waWxlci1mbGFncy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4xLzAwMDEtQ29ycmVjdC1jbGFuZy1jb21waWxlci1mbGFncy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjFkMDM3Zi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMS8wMDAxLUNvcnJlY3QtY2xhbmctY29tcGlsZXItZmxhZ3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDVjY2FmZjM1MTI5N2JjYTBlMjU0YmJmZDY2ZTNmMDNmZWY5ZDljNzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAxMCBKYW4gMjAyMCAyMTo1NDozOSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBDb3JyZWN0IGNsYW5nIGNvbXBpbGVyIGZsYWdzCi0KLUZpeCBtaXNwbGFjZWQgcXVvdGVzLCB0aGlzIHdhcyBsZWFkaW5nIHRvIHNwdXJpb3VzIDsgaW4gY29tcGlsZXIgY21kbGluZQotUmVtb3ZlIGRlbWFuZGluZyBsaWJjKyssIGNsYW5nIGNhbiBsaW5rIHdpdGggYm90aCBsaWJjKysgYW5kIGxpYnN0ZGMrKwotYW5kIHBsYXRmb3JtcyBoYXZlIHRoZWlyIG93biBkZWZhdWx0cywgdXNlciBjYW4gZGVtYW5kIG5vbiBkZWZhdWx0cyB2aWEKLWFkZGluZyBpdCB0byBjbWFrZSBmbGFncwotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3phcGhveWQvd2Vic29ja2V0cHAvcHVsbC84NTldCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gQ01ha2VMaXN0cy50eHQgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCAyZDEzMTE3Li5jMTczNTRhIDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtMTUwLDcgKzE1MCw3IEBAIGlmIChCVUlMRF9URVNUUyBPUiBCVUlMRF9FWEFNUExFUykKLSAgICAgICAgIGVuZGlmKCkKLSAgICAgICAgIHNldCAoV0VCU09DS0VUUFBfUExBVEZPUk1fVExTX0xJQlMgc3NsIGNyeXB0bykKLSAgICAgICAgIHNldCAoV0VCU09DS0VUUFBfQk9PU1RfTElCUyBzeXN0ZW0gdGhyZWFkKQotLSAgICAgICAgc2V0IChDTUFLRV9DWFhfRkxBR1MgJHtDTUFLRV9DWFhfRkxBR1N9ICItc3RkPWMrKzB4IC1zdGRsaWI9bGliYysrIikgIyB0b2RvOiBpcyBsaWJjKysgcmVhbGx5IG5lZWRlZCBoZXJlPwotKyAgICAgICAgc2V0IChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtc3RkPWMrKzB4IikKLSAgICAgICAgIGlmIChOT1QgQVBQTEUpCi0gICAgICAgICAgICAgYWRkX2RlZmluaXRpb25zICgtRE5ERUJVRyAtV2FsbCAtV25vLXBhZGRlZCkgIyB0b2RvOiBzaG91bGQgd2UgdXNlIENNQUtFX0NfRkxBR1MgZm9yIHRoZXNlPwotICAgICAgICAgZW5kaWYgKCkKLS0tIAotMi4yNC4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4xLzAwMDEtUmVwbGFjZS1tYWtlX3NoYXJlZC13aXRoLW5ldy1pbi1zb21lLWNhc2VzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC44LjEvMDAwMS1SZXBsYWNlLW1ha2Vfc2hhcmVkLXdpdGgtbmV3LWluLXNvbWUtY2FzZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjODI4NWQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC44LjEvMDAwMS1SZXBsYWNlLW1ha2Vfc2hhcmVkLXdpdGgtbmV3LWluLXNvbWUtY2FzZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi1Gcm9tIDA4MGZjMzc5NDkxMTQxODRkNDgzMmY3YWNmZmUyNjEzNzQ1ODMzZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTdGVmYW4gRmxvZXJlbiA8NDI3MzE5MDYrc3RlZmFuLWZsb2VyZW5AdXNlcnMubm9yZXBseS5naXRodWIuY29tPgotRGF0ZTogVHVlLCAxNiBBcHIgMjAxOSAwODozODowMSArMDIwMAotU3ViamVjdDogW1BBVENIIDEvMl0gUmVwbGFjZSBtYWtlX3NoYXJlZCB3aXRoIG5ldyBpbiBzb21lIGNhc2VzCi0KLVJlcGxhY2UgbWFrZV9zaGFyZWQgZm9yIGFzaW8gdHlwZXMgdGhhdCB0YWtlIGEgbGliOjpyZWYgYXMgYSBwYXJhbWV0ZXIuCi1UaGlzIHNob3VsZCBmaXggdGhlIEFTSU8gY2hhbmdlIChib29zdG9yZy9hc2lvQDU5MDY2ZDgpIGZvciAxLjcwLAotd2hpbGUga2VlcGluZyBpdCBiYWNrd2FyZHMgY29tcGF0aWJsZSB0byBvbGRlciBib29zdCB2ZXJzaW9ucy4KLS0tLQotIHdlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL2Nvbm5lY3Rpb24uaHBwICAgIHwgNyArKysrLS0tCi0gd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vZW5kcG9pbnQuaHBwICAgICAgfCAzICstLQotIHdlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL3NlY3VyaXR5L25vbmUuaHBwIHwgMyArLS0KLSB3ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9zZWN1cml0eS90bHMuaHBwICB8IDMgKy0tCi0gNCBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS93ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9jb25uZWN0aW9uLmhwcCBiL3dlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL2Nvbm5lY3Rpb24uaHBwCi1pbmRleCA2MGY4OGE3Li4xY2NkYThmIDEwMDY0NAotLS0tIGEvd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vY29ubmVjdGlvbi5ocHAKLSsrKyBiL3dlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL2Nvbm5lY3Rpb24uaHBwCi1AQCAtMzExLDkgKzMxMSwxMCBAQCBwdWJsaWM6Ci0gICAgICAqIG5lZWRlZC4KLSAgICAgICovCi0gICAgIHRpbWVyX3B0ciBzZXRfdGltZXIobG9uZyBkdXJhdGlvbiwgdGltZXJfaGFuZGxlciBjYWxsYmFjaykgewotLSAgICAgICAgdGltZXJfcHRyIG5ld190aW1lciA9IGxpYjo6bWFrZV9zaGFyZWQ8bGliOjphc2lvOjpzdGVhZHlfdGltZXI+KAotLSAgICAgICAgICAgIGxpYjo6cmVmKCptX2lvX3NlcnZpY2UpLAotLSAgICAgICAgICAgIGxpYjo6YXNpbzo6bWlsbGlzZWNvbmRzKGR1cmF0aW9uKQotKyAgICAgICAgdGltZXJfcHRyIG5ld190aW1lcigKLSsgICAgICAgICAgICBuZXcgbGliOjphc2lvOjpzdGVhZHlfdGltZXIoCi0rICAgICAgICAgICAgICAgICptX2lvX3NlcnZpY2UsCi0rICAgICAgICAgICAgICAgIGxpYjo6YXNpbzo6bWlsbGlzZWNvbmRzKGR1cmF0aW9uKSkKLSAgICAgICAgICk7Ci0gCi0gICAgICAgICBpZiAoY29uZmlnOjplbmFibGVfbXVsdGl0aHJlYWRpbmcpIHsKLWRpZmYgLS1naXQgYS93ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9lbmRwb2ludC5ocHAgYi93ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9lbmRwb2ludC5ocHAKLWluZGV4IGRkYWIyYzcuLjRiNzE5YTkgMTAwNjQ0Ci0tLS0gYS93ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9lbmRwb2ludC5ocHAKLSsrKyBiL3dlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL2VuZHBvaW50LmhwcAotQEAgLTE5NSw4ICsxOTUsNyBAQCBwdWJsaWM6Ci0gCi0gICAgICAgICBtX2lvX3NlcnZpY2UgPSBwdHI7Ci0gICAgICAgICBtX2V4dGVybmFsX2lvX3NlcnZpY2UgPSB0cnVlOwotLSAgICAgICAgbV9hY2NlcHRvciA9IGxpYjo6bWFrZV9zaGFyZWQ8bGliOjphc2lvOjppcDo6dGNwOjphY2NlcHRvcj4oCi0tICAgICAgICAgICAgbGliOjpyZWYoKm1faW9fc2VydmljZSkpOwotKyAgICAgICAgbV9hY2NlcHRvci5yZXNldChuZXcgbGliOjphc2lvOjppcDo6dGNwOjphY2NlcHRvcigqbV9pb19zZXJ2aWNlKSk7Ci0gCi0gICAgICAgICBtX3N0YXRlID0gUkVBRFk7Ci0gICAgICAgICBlYyA9IGxpYjo6ZXJyb3JfY29kZSgpOwotZGlmZiAtLWdpdCBhL3dlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL3NlY3VyaXR5L25vbmUuaHBwIGIvd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vc2VjdXJpdHkvbm9uZS5ocHAKLWluZGV4IDVjODI5M2QuLjZjN2QzNTIgMTAwNjQ0Ci0tLS0gYS93ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9zZWN1cml0eS9ub25lLmhwcAotKysrIGIvd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vc2VjdXJpdHkvbm9uZS5ocHAKLUBAIC0xNjgsOCArMTY4LDcgQEAgcHJvdGVjdGVkOgotICAgICAgICAgICAgIHJldHVybiBzb2NrZXQ6Om1ha2VfZXJyb3JfY29kZShzb2NrZXQ6OmVycm9yOjppbnZhbGlkX3N0YXRlKTsKLSAgICAgICAgIH0KLSAKLS0gICAgICAgIG1fc29ja2V0ID0gbGliOjptYWtlX3NoYXJlZDxsaWI6OmFzaW86OmlwOjp0Y3A6OnNvY2tldD4oCi0tICAgICAgICAgICAgbGliOjpyZWYoKnNlcnZpY2UpKTsKLSsgICAgICAgIG1fc29ja2V0LnJlc2V0KG5ldyBsaWI6OmFzaW86OmlwOjp0Y3A6OnNvY2tldCgqc2VydmljZSkpOwotIAotICAgICAgICAgaWYgKG1fc29ja2V0X2luaXRfaGFuZGxlcikgewotICAgICAgICAgICAgIG1fc29ja2V0X2luaXRfaGFuZGxlcihtX2hkbCwgKm1fc29ja2V0KTsKLWRpZmYgLS1naXQgYS93ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9zZWN1cml0eS90bHMuaHBwIGIvd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vc2VjdXJpdHkvdGxzLmhwcAotaW5kZXggYzc2ZmQ5YS4uMDRhYzM3OSAxMDA2NDQKLS0tLSBhL3dlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL3NlY3VyaXR5L3Rscy5ocHAKLSsrKyBiL3dlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL3NlY3VyaXR5L3Rscy5ocHAKLUBAIC0xOTMsOCArMTkzLDcgQEAgcHJvdGVjdGVkOgotICAgICAgICAgaWYgKCFtX2NvbnRleHQpIHsKLSAgICAgICAgICAgICByZXR1cm4gc29ja2V0OjptYWtlX2Vycm9yX2NvZGUoc29ja2V0OjplcnJvcjo6aW52YWxpZF90bHNfY29udGV4dCk7Ci0gICAgICAgICB9Ci0tICAgICAgICBtX3NvY2tldCA9IGxpYjo6bWFrZV9zaGFyZWQ8c29ja2V0X3R5cGU+KAotLSAgICAgICAgICAgIF9XRUJTT0NLRVRQUF9SRUYoKnNlcnZpY2UpLGxpYjo6cmVmKCptX2NvbnRleHQpKTsKLSsgICAgICAgIG1fc29ja2V0LnJlc2V0KG5ldyBzb2NrZXRfdHlwZSgqc2VydmljZSwgKm1fY29udGV4dCkpOwotIAotICAgICAgICAgaWYgKG1fc29ja2V0X2luaXRfaGFuZGxlcikgewotICAgICAgICAgICAgIG1fc29ja2V0X2luaXRfaGFuZGxlcihtX2hkbCwgZ2V0X3NvY2tldCgpKTsKLS0tIAotMi4yMy4wCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4xLzAwMDItRml4LW1pc3NlZC1lbnRyaWVzLWZpeC10ZXN0aW5nLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC44LjEvMDAwMi1GaXgtbWlzc2VkLWVudHJpZXMtZml4LXRlc3RpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2MmQwODkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC44LjEvMDAwMi1GaXgtbWlzc2VkLWVudHJpZXMtZml4LXRlc3RpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi1Gcm9tIDEyYWI2MDNjYTk2MmU4MzU5MTk4NWE1ODU0NTFkMzM1NDRkNzVkNTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTdGVmYW4gRmxvZXJlbiA8NDI3MzE5MDYrc3RlZmFuLWZsb2VyZW5AdXNlcnMubm9yZXBseS5naXRodWIuY29tPgotRGF0ZTogV2VkLCAxNyBBcHIgMjAxOSAxMDowNjoxOCArMDAwMAotU3ViamVjdDogW1BBVENIIDIvMl0gRml4IG1pc3NlZCBlbnRyaWVzOyBmaXggdGVzdGluZwotCi0tLS0KLSBDTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSB3ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9jb25uZWN0aW9uLmhwcCB8IDMgKy0tCi0gd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vZW5kcG9pbnQuaHBwICAgfCA3ICsrLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDI3ODZhYmEuLjk1MWRlOTcgMTAwNjQ0Ci0tLS0gYS9DTWFrZUxpc3RzLnR4dAotKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC0yMDIsNyArMjAyLDcgQEAgaWYgKEJVSUxEX1RFU1RTIE9SIEJVSUxEX0VYQU1QTEVTKQotIAllbmRpZiAoKQotIAotICAgICBpZiAoTk9UIEJvb3N0X1VTRV9TVEFUSUNfTElCUykKLS0gICAgICAgIGFkZF9kZWZpbml0aW9ucyAoL0RCT09TVF9URVNUX0RZTl9MSU5LKQotKyAgICAgICAgYWRkX2RlZmluaXRpb25zICgtREJPT1NUX1RFU1RfRFlOX0xJTkspCi0gICAgIGVuZGlmICgpCi0gCi0gICAgIHNldCAoQm9vc3RfRklORF9SRVFVSVJFRCBUUlVFKQotZGlmZiAtLWdpdCBhL3dlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL2Nvbm5lY3Rpb24uaHBwIGIvd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vY29ubmVjdGlvbi5ocHAKLWluZGV4IDFjY2RhOGYuLjU3ZGRhNzQgMTAwNjQ0Ci0tLS0gYS93ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9jb25uZWN0aW9uLmhwcAotKysrIGIvd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vY29ubmVjdGlvbi5ocHAKLUBAIC00NjIsOCArNDYyLDcgQEAgcHJvdGVjdGVkOgotICAgICAgICAgbV9pb19zZXJ2aWNlID0gaW9fc2VydmljZTsKLSAKLSAgICAgICAgIGlmIChjb25maWc6OmVuYWJsZV9tdWx0aXRocmVhZGluZykgewotLSAgICAgICAgICAgIG1fc3RyYW5kID0gbGliOjptYWtlX3NoYXJlZDxsaWI6OmFzaW86OmlvX3NlcnZpY2U6OnN0cmFuZD4oCi0tICAgICAgICAgICAgICAgIGxpYjo6cmVmKCppb19zZXJ2aWNlKSk7Ci0rICAgICAgICAgICAgbV9zdHJhbmQucmVzZXQobmV3IGxpYjo6YXNpbzo6aW9fc2VydmljZTo6c3RyYW5kKCppb19zZXJ2aWNlKSk7Ci0gICAgICAgICB9Ci0gCi0gICAgICAgICBsaWI6OmVycm9yX2NvZGUgZWMgPSBzb2NrZXRfY29uX3R5cGU6OmluaXRfYXNpbyhpb19zZXJ2aWNlLCBtX3N0cmFuZCwKLWRpZmYgLS1naXQgYS93ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9lbmRwb2ludC5ocHAgYi93ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9lbmRwb2ludC5ocHAKLWluZGV4IDRiNzE5YTkuLjk0NTA5YWQgMTAwNjQ0Ci0tLS0gYS93ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9lbmRwb2ludC5ocHAKLSsrKyBiL3dlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL2VuZHBvaW50LmhwcAotQEAgLTY4Nyw5ICs2ODcsNyBAQCBwdWJsaWM6Ci0gICAgICAqIEBzaW5jZSAwLjMuMAotICAgICAgKi8KLSAgICAgdm9pZCBzdGFydF9wZXJwZXR1YWwoKSB7Ci0tICAgICAgICBtX3dvcmsgPSBsaWI6Om1ha2Vfc2hhcmVkPGxpYjo6YXNpbzo6aW9fc2VydmljZTo6d29yaz4oCi0tICAgICAgICAgICAgbGliOjpyZWYoKm1faW9fc2VydmljZSkKLS0gICAgICAgICk7Ci0rICAgICAgICBtX3dvcmsucmVzZXQobmV3IGxpYjo6YXNpbzo6aW9fc2VydmljZTo6d29yaygqbV9pb19zZXJ2aWNlKSk7Ci0gICAgIH0KLSAKLSAgICAgLy8vIENsZWFycyB0aGUgZW5kcG9pbnQncyBwZXJwZXR1YWwgZmxhZywgYWxsb3dpbmcgaXQgdG8gZXhpdCB3aGVuIGVtcHR5Ci1AQCAtODUzLDggKzg1MSw3IEBAIHByb3RlY3RlZDoKLSAKLSAgICAgICAgIC8vIENyZWF0ZSBhIHJlc29sdmVyCi0gICAgICAgICBpZiAoIW1fcmVzb2x2ZXIpIHsKLS0gICAgICAgICAgICBtX3Jlc29sdmVyID0gbGliOjptYWtlX3NoYXJlZDxsaWI6OmFzaW86OmlwOjp0Y3A6OnJlc29sdmVyPigKLS0gICAgICAgICAgICAgICAgbGliOjpyZWYoKm1faW9fc2VydmljZSkpOwotKyAgICAgICAgICAgIG1fcmVzb2x2ZXIucmVzZXQobmV3IGxpYjo6YXNpbzo6aXA6OnRjcDo6cmVzb2x2ZXIoKm1faW9fc2VydmljZSkpOwotICAgICAgICAgfQotIAotICAgICAgICAgdGNvbi0+c2V0X3VyaSh1KTsKLS0tIAotMi4yMy4wCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4xLzc3MS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4xLzc3MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM2NWVmYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMS83NzEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1Gcm9tIDRiY2NmYjA0YTI2NDcwNGVjOWI4MGJhMzMyZWUxY2YxMTNjZTdmMWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/V29sZmdhbmc9MjBTdD1DMz1CNmdnbD89IDxjNzI1NzhAeWFob28uZGU+Ci1EYXRlOiBUaHUsIDEgTm92IDIwMTggMjA6NTg6MTAgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gVXBkYXRlIHZlcnNpb24gbnVtYmVyIGluIENNYWtlTGlzdHMudHh0IHRvIDAuOC4xCi0KLS0tLQotIENNYWtlTGlzdHMudHh0IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAotaW5kZXggMjc4NmFiYTkuLjJkMTMxMTdiIDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtMjQsNyArMjQsNyBAQCBlbmRpZiAoKQotICMjIyMjIyMjIyMjIyBQcm9qZWN0IG5hbWUgYW5kIHZlcnNpb24KLSBzZXQgKFdFQlNPQ0tFVFBQX01BSk9SX1ZFUlNJT04gMCkKLSBzZXQgKFdFQlNPQ0tFVFBQX01JTk9SX1ZFUlNJT04gOCkKLS1zZXQgKFdFQlNPQ0tFVFBQX1BBVENIX1ZFUlNJT04gMCkKLStzZXQgKFdFQlNPQ0tFVFBQX1BBVENIX1ZFUlNJT04gMSkKLSBzZXQgKFdFQlNPQ0tFVFBQX1ZFUlNJT04gJHtXRUJTT0NLRVRQUF9NQUpPUl9WRVJTSU9OfS4ke1dFQlNPQ0tFVFBQX01JTk9SX1ZFUlNJT059LiR7V0VCU09DS0VUUFBfUEFUQ0hfVkVSU0lPTn0pCi0gCi0gaWYoUE9MSUNZIENNUDAwNDgpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMS84NDIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMS84NDIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzNjUxZTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC44LjEvODQyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSA3ZjdlMmJlMDFiNGZhNjU4MGNlMjdmNjY4ZTYxYWRmMzc4NTNhZDY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU2NocmlqdmVycyBMdWMgPGJlZ2FzdXNAZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBTZXAgMjAxOSAxMTozNTo0MyArMDIwMAotU3ViamVjdDogW1BBVENIXSBGaXggImluY2x1ZGUiIGRpcmVjdG9yeSBpbnN0YWxsYXRpb24uIHRoZSB2YXJpYWJsZQotIElOU1RBTExfSU5DTFVERV9ESVIgYWxyZWFkeSBleGlzdHMsIGFuZCBkZWZhdWx0cyB0byBpbmNsdWRlIGlmIG5vdAotIHNwZWNpZmljaWVkIG90aGVyd2lzZS4gVXNpbmcgaXQgYWxsb3dzIHBlb3BsZSB0byBjdXN0b21pemUgdGhlIGluc3RhbGxhdGlvbgotIGZyb20gb3V0c2lkZSwgZml4aW5nIGlzc3VlcyB3aXRoIG90aGVyIE9TIGxpa2UgSGFpa3UKLQotU2lnbmVkLW9mZi1ieTogR2lhbmZyYW5jbyBDb3N0YW1hZ25hIDxjb3N0YW1hZ25hZ2lhbmZyYW5jb0B5YWhvby5pdD4KLVNpZ25lZC1vZmYtYnk6IEdpYW5mcmFuY28gQ29zdGFtYWduYSA8bG9jdXR1c29mYm9yZ0BkZWJpYW4ub3JnPgotLS0tCi0gY21ha2UvQ01ha2VIZWxwZXJzLmNtYWtlIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY21ha2UvQ01ha2VIZWxwZXJzLmNtYWtlIGIvY21ha2UvQ01ha2VIZWxwZXJzLmNtYWtlCi1pbmRleCAxNDc4ZjRiLi5mNjAzNjMyIDEwMDY0NAotLS0tIGEvY21ha2UvQ01ha2VIZWxwZXJzLmNtYWtlCi0rKysgYi9jbWFrZS9DTWFrZUhlbHBlcnMuY21ha2UKLUBAIC04MCw3ICs4MCw3IEBAIG1hY3JvIChmaW5hbF90YXJnZXQpCi0gICAgIGVuZGlmICgpCi0gCi0gICAgIGluc3RhbGwgKERJUkVDVE9SWSAke0NNQUtFX1NPVVJDRV9ESVJ9LyR7VEFSR0VUX05BTUV9Ci0tICAgICAgICAgICAgIERFU1RJTkFUSU9OIGluY2x1ZGUvCi0rICAgICAgICAgICAgIERFU1RJTkFUSU9OICR7SU5TVEFMTF9JTkNMVURFX0RJUn0vCi0gICAgICAgICAgICAgIEZJTEVTX01BVENISU5HIFBBVFRFUk4gIiouaHBwKiIpCi0gZW5kbWFjcm8gKCkKLSAKLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4xLzg1NS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4xLzg1NS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFlZTYyNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMS84NTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1Gcm9tIDM1OTBkNzdiYjk3NTNmYmJmMDc2MDI4ZTIzOTUxODJjZWQ2NDY2YmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBHaWFuZnJhbmNvIENvc3RhbWFnbmEgPGNvc3RhbWFnbmFnaWFuZnJhbmNvQHlhaG9vLml0PgotRGF0ZTogV2VkLCA4IEphbiAyMDIwIDE3OjU5OjQ4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBjbWFrZSBmaW5kIGJvb3N0IHdpdGggdmVyc2lvbiA+PSAxLjcxCi0KLUZvciBzb21lIHJlYXNvbnMgInN5c3RlbTt0aHJlYWQ7cmFuZG9tO3VuaXRfdGVzdF9mcmFtZXdvcmsiIHdhcyBzZWVuIGFzIGEgc2luZ2xlIG1vZHVsZSwgYmVjYXVzZSBvZiB0aGUgcXVvdGVzLgotLS0tCi0gQ01ha2VMaXN0cy50eHQgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCAyZDEzMTE3Yi4uOWE0NmJjMTAgMTAwNjQ0Ci0tLS0gYS9DTWFrZUxpc3RzLnR4dAotKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC0yMTMsNyArMjEzLDcgQEAgaWYgKEJVSUxEX1RFU1RTIE9SIEJVSUxEX0VYQU1QTEVTKQotICAgICBzZXQgKEJvb3N0X1VTRV9NVUxUSVRIUkVBREVEIFRSVUUpCi0gICAgIHNldCAoQm9vc3RfQURESVRJT05BTF9WRVJTSU9OUyAiMS4zOS4wIiAiMS40MC4wIiAiMS40MS4wIiAiMS40Mi4wIiAiMS40My4wIiAiMS40NC4wIiAiMS40Ni4xIikgIyB0b2RvOiBzb21lb25lIHdobyBrbm93cyBiZXR0ZXIgc3Blc2lmeSB0aGVzZSEKLSAKLS0gICAgZmluZF9wYWNrYWdlIChCb29zdCAxLjM5LjAgQ09NUE9ORU5UUyAiJHtXRUJTT0NLRVRQUF9CT09TVF9MSUJTfSIpCi0rICAgIGZpbmRfcGFja2FnZSAoQm9vc3QgMS4zOS4wIENPTVBPTkVOVFMgJHtXRUJTT0NLRVRQUF9CT09TVF9MSUJTfSkKLSAKLSAgICAgaWYgKEJvb3N0X0ZPVU5EKQotICAgICAgICAgIyBCb29zdCBpcyBhIHByb2plY3Qgd2lkZSBnbG9iYWwgZGVwZW5kZW5jeS4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4yLzAwMDEtQ29ycmVjdC1jbGFuZy1jb21waWxlci1mbGFncy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4yLzAwMDEtQ29ycmVjdC1jbGFuZy1jb21waWxlci1mbGFncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTk5ZGFmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC44LjIvMDAwMS1Db3JyZWN0LWNsYW5nLWNvbXBpbGVyLWZsYWdzLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gNWNjYWZmMzUxMjk3YmNhMGUyNTRiYmZkNjZlM2YwM2ZlZjlkOWM3NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDEwIEphbiAyMDIwIDIxOjU0OjM5IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIENvcnJlY3QgY2xhbmcgY29tcGlsZXIgZmxhZ3MKKworRml4IG1pc3BsYWNlZCBxdW90ZXMsIHRoaXMgd2FzIGxlYWRpbmcgdG8gc3B1cmlvdXMgOyBpbiBjb21waWxlciBjbWRsaW5lCitSZW1vdmUgZGVtYW5kaW5nIGxpYmMrKywgY2xhbmcgY2FuIGxpbmsgd2l0aCBib3RoIGxpYmMrKyBhbmQgbGlic3RkYysrCithbmQgcGxhdGZvcm1zIGhhdmUgdGhlaXIgb3duIGRlZmF1bHRzLCB1c2VyIGNhbiBkZW1hbmQgbm9uIGRlZmF1bHRzIHZpYQorYWRkaW5nIGl0IHRvIGNtYWtlIGZsYWdzCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vemFwaG95ZC93ZWJzb2NrZXRwcC9wdWxsLzg1OV0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBDTWFrZUxpc3RzLnR4dCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IDJkMTMxMTcuLmMxNzM1NGEgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC0xNTQsNyArMTU0LDcgQEAgaWYgKEJVSUxEX1RFU1RTIE9SIEJVSUxEX0VYQU1QTEVTKQorICAgICAgICAgZW5kaWYoKQorICAgICAgICAgc2V0IChXRUJTT0NLRVRQUF9QTEFURk9STV9UTFNfTElCUyBzc2wgY3J5cHRvKQorICAgICAgICAgc2V0IChXRUJTT0NLRVRQUF9CT09TVF9MSUJTIHN5c3RlbSB0aHJlYWQpCistICAgICAgICBzZXQgKENNQUtFX0NYWF9GTEFHUyAke0NNQUtFX0NYWF9GTEFHU30gIi1zdGQ9YysrMHggLXN0ZGxpYj1saWJjKysiKSAjIHRvZG86IGlzIGxpYmMrKyByZWFsbHkgbmVlZGVkIGhlcmU/CisrICAgICAgICBzZXQgKENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1zdGQ9YysrMHgiKQorICAgICAgICAgaWYgKE5PVCBBUFBMRSkKKyAgICAgICAgICAgICBhZGRfZGVmaW5pdGlvbnMgKC1ETkRFQlVHIC1XYWxsIC1Xbm8tcGFkZGVkKSAjIHRvZG86IHNob3VsZCB3ZSB1c2UgQ01BS0VfQ19GTEFHUyBmb3IgdGhlc2U/CisgICAgICAgICBlbmRpZiAoKQorLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC44LjEvMDAwMS1jbWFrZS1Vc2UtR05VSW5zdGFsbERpcnMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMi8wMDAxLWNtYWtlLVVzZS1HTlVJbnN0YWxsRGlycy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC44LjEvMDAwMS1jbWFrZS1Vc2UtR05VSW5zdGFsbERpcnMucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4yLzAwMDEtY21ha2UtVXNlLUdOVUluc3RhbGxEaXJzLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMi84NTUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMi84NTUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI0NWQ5NAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4yLzg1NS5wYXRjaApAQCAtMCwwICsxLDIzIEBACitGcm9tIDM1OTBkNzdiYjk3NTNmYmJmMDc2MDI4ZTIzOTUxODJjZWQ2NDY2YmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBHaWFuZnJhbmNvIENvc3RhbWFnbmEgPGNvc3RhbWFnbmFnaWFuZnJhbmNvQHlhaG9vLml0PgorRGF0ZTogV2VkLCA4IEphbiAyMDIwIDE3OjU5OjQ4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBjbWFrZSBmaW5kIGJvb3N0IHdpdGggdmVyc2lvbiA+PSAxLjcxCisKK0ZvciBzb21lIHJlYXNvbnMgInN5c3RlbTt0aHJlYWQ7cmFuZG9tO3VuaXRfdGVzdF9mcmFtZXdvcmsiIHdhcyBzZWVuIGFzIGEgc2luZ2xlIG1vZHVsZSwgYmVjYXVzZSBvZiB0aGUgcXVvdGVzLgorLS0tCisgQ01ha2VMaXN0cy50eHQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCAyZDEzMTE3Yi4uOWE0NmJjMTAgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC0yMTcsNyArMjE3LDcgQEAgaWYgKEJVSUxEX1RFU1RTIE9SIEJVSUxEX0VYQU1QTEVTKQorICAgICBzZXQgKEJvb3N0X1VTRV9NVUxUSVRIUkVBREVEIFRSVUUpCisgICAgIHNldCAoQm9vc3RfQURESVRJT05BTF9WRVJTSU9OUyAiMS4zOS4wIiAiMS40MC4wIiAiMS40MS4wIiAiMS40Mi4wIiAiMS40My4wIiAiMS40NC4wIiAiMS40Ni4xIikgIyB0b2RvOiBzb21lb25lIHdobyBrbm93cyBiZXR0ZXIgc3Blc2lmeSB0aGVzZSEKKyAKKy0gICAgZmluZF9wYWNrYWdlIChCb29zdCAxLjM5LjAgQ09NUE9ORU5UUyAiJHtXRUJTT0NLRVRQUF9CT09TVF9MSUJTfSIpCisrICAgIGZpbmRfcGFja2FnZSAoQm9vc3QgMS4zOS4wIENPTVBPTkVOVFMgJHtXRUJTT0NLRVRQUF9CT09TVF9MSUJTfSkKKyAKKyAgICAgaWYgKEJvb3N0X0ZPVU5EKQorICAgICAgICAgIyBCb29zdCBpcyBhIHByb2plY3Qgd2lkZSBnbG9iYWwgZGVwZW5kZW5jeS4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4xLzg1Ny5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4yLzg1Ny5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC44LjEvODU3LnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMi84NTcucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwXzAuOC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHBfMC44LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmNmQzMGEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHBfMC44LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1TVU1NQVJZID0gIkMrKy9Cb29zdCBBc2lvIGJhc2VkIHdlYnNvY2tldCBjbGllbnQvc2VydmVyIGxpYnJhcnkuIgotU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vemFwaG95ZC93ZWJzb2NrZXRwcCIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtTfS9DT1BZSU5HO21kNT00ZDE2OGQ3NjNjMTExZjRmZmM2MjI0OTg3MGU0ZTBlYSIKLQotREVQRU5EUyA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICdvcGVuc3NsIGJvb3N0IHpsaWInLCAnJywgZCl9ICIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3phcGhveWQvd2Vic29ja2V0cHAuZ2l0O3Byb3RvY29sPWh0dHBzIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmVwbGFjZS1tYWtlX3NoYXJlZC13aXRoLW5ldy1pbi1zb21lLWNhc2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItRml4LW1pc3NlZC1lbnRyaWVzLWZpeC10ZXN0aW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY21ha2UtVXNlLUdOVUluc3RhbGxEaXJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzg0Mi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly83NzEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vODU1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzg1Ny5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUNvcnJlY3QtY2xhbmctY29tcGlsZXItZmxhZ3MucGF0Y2ggXAotICAgICAgICAgICIKLQotRVhUUkFfT0VDTUFLRSA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJy1EQlVJTERfRVhBTVBMRVM9T04gLURCVUlMRF9URVNUUz1PTicsICcnLCBkKX0gIgotCi0jIHRoaXMgaXMgYW4gaGVhZGVyIG9ubHkgbGlicmFyeSwgZG8gbm90IGRlcGVuZCBvbiB0aGUgbWFpbiBwYWNrYWdlCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotCi0jIHRvIGFkZCB0aGlzIHBhY2thZ2UgdG8gYW4gU0RLLCBzaW5jZSBpdCBpc24ndCBhIHJldmVyc2UtZGVwZW5kZW5jeSBvZiBhbnl0aGluZywganVzdCB1c2Ugc29tZXRoaW5nIGxpa2UgdGhpczoKLSMgVE9PTENIQUlOX1RBUkdFVF9UQVNLX2FwcGVuZCA9ICIgd2Vic29ja2V0cHAtZGV2IgotCi0jIHRhZyAwLjguMQotU1JDUkVWPSAiYzZkN2UyOTViZjVhMGFiOWI1Zjg5NjcyMGNjMWEwZTBmZGMzOTdhNyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBjbWFrZQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZXhhbXBsZXMiCi0KLUZJTEVTXyR7UE59LWV4YW1wbGVzID0gIiR7ZG9jZGlyfSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtkb2NkaXJ9LyR7QlBOfQotCWNwIC1SICR7U30vZXhhbXBsZXMgJHtEfSR7ZG9jZGlyfS8ke0JQTn0KLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwXzAuOC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHBfMC44LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzlhNWFjNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwXzAuOC4yLmJiCkBAIC0wLDAgKzEsMzggQEAKK1NVTU1BUlkgPSAiQysrL0Jvb3N0IEFzaW8gYmFzZWQgd2Vic29ja2V0IGNsaWVudC9zZXJ2ZXIgbGlicmFyeS4iCitTRUNUSU9OID0gImxpYnMvbmV0d29yayIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS96YXBob3lkL3dlYnNvY2tldHBwIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1N9L0NPUFlJTkc7bWQ1PTRkMTY4ZDc2M2MxMTFmNGZmYzYyMjQ5ODcwZTRlMGVhIgorCitERVBFTkRTID0gIiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJ29wZW5zc2wgYm9vc3QgemxpYicsICcnLCBkKX0gIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vemFwaG95ZC93ZWJzb2NrZXRwcC5naXQ7cHJvdG9jb2w9aHR0cHMgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jbWFrZS1Vc2UtR05VSW5zdGFsbERpcnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vODU1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzg1Ny5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUNvcnJlY3QtY2xhbmctY29tcGlsZXItZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICIKKworRVhUUkFfT0VDTUFLRSA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJy1EQlVJTERfRVhBTVBMRVM9T04gLURCVUlMRF9URVNUUz1PTicsICcnLCBkKX0gIgorCisjIHRoaXMgaXMgYW4gaGVhZGVyIG9ubHkgbGlicmFyeSwgZG8gbm90IGRlcGVuZCBvbiB0aGUgbWFpbiBwYWNrYWdlCitSREVQRU5EU18ke1BOfS1kZXYgPSAiIgorCisjIHRvIGFkZCB0aGlzIHBhY2thZ2UgdG8gYW4gU0RLLCBzaW5jZSBpdCBpc24ndCBhIHJldmVyc2UtZGVwZW5kZW5jeSBvZiBhbnl0aGluZywganVzdCB1c2Ugc29tZXRoaW5nIGxpa2UgdGhpczoKKyMgVE9PTENIQUlOX1RBUkdFVF9UQVNLX2FwcGVuZCA9ICIgd2Vic29ja2V0cHAtZGV2IgorCisjIHRhZyAwLjguMgorU1JDUkVWPSAiNTYxMjNjODc1OThmOGIxZGQ0NzFiZTgzY2E4NDFjZWFlMDdmOTViYSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorCitQQUNLQUdFUyA9KyAiJHtQTn0tZXhhbXBsZXMiCisKK0ZJTEVTXyR7UE59LWV4YW1wbGVzID0gIiR7ZG9jZGlyfSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtkb2NkaXJ9LyR7QlBOfQorCWNwIC1SICR7U30vZXhhbXBsZXMgJHtEfSR7ZG9jZGlyfS8ke0JQTn0KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dtaWNvbmZpZy93bWljb25maWcvMDAwMS1tYWtlZmlsZS1QYXNzLUNGTEFHUy10by1jb21waWxlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd21pY29uZmlnL3dtaWNvbmZpZy8wMDAxLW1ha2VmaWxlLVBhc3MtQ0ZMQUdTLXRvLWNvbXBpbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwZWZmNWIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd21pY29uZmlnL3dtaWNvbmZpZy8wMDAxLW1ha2VmaWxlLVBhc3MtQ0ZMQUdTLXRvLWNvbXBpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1Gcm9tIDAzNzhjYmIzMjNjNjYyYTU2NWY3ZjNkZTJkZWUzZDhhNjQ2ZTdiZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyNyBKdW4gMjAxNyAwOTozMjo0MiAtMDcwMAotU3ViamVjdDogW1BBVENIIDEvMl0gbWFrZWZpbGU6IFBhc3MgQ0ZMQUdTIHRvIGNvbXBpbGUKLQotU2V0IENDIGlmIG5vdCBhbHJlYWR5IHNldAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gaG9zdC90b29scy93bWljb25maWcvTWFrZWZpbGUgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaG9zdC90b29scy93bWljb25maWcvTWFrZWZpbGUgYi9ob3N0L3Rvb2xzL3dtaWNvbmZpZy9NYWtlZmlsZQotaW5kZXggYzY3MzhjNS4uMzI1M2E3ZSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTEsNCArMSw0IEBACi0tQ0MgOj0kKEFUSF9DUk9TU19DT01QSUxFX1RZUEUpZ2NjCi0rQ0MgPz0gJChBVEhfQ1JPU1NfQ09NUElMRV9UWVBFKWdjYwotIAotIGFsbDoKLS0JJChDQykgLVdhbGwgLURVU0VSX0tFWVMgLWcgJChMREZMQUdTKSAtSS4uLy4uL2luY2x1ZGUgLUkuLi8uLi8uLi9pbmNsdWRlIC1JLi4vLi4vd2xhbi9pbmNsdWRlIC1JLi4vLi4vb3MvbGludXgvaW5jbHVkZSB3bWljb25maWcuYyAtbyB3bWljb25maWcKLSsJJChDQykgLVdhbGwgLURVU0VSX0tFWVMgLWcgJChDRkxBR1MpICQoTERGTEFHUykgLUkuLi8uLi9pbmNsdWRlIC1JLi4vLi4vLi4vaW5jbHVkZSAtSS4uLy4uL3dsYW4vaW5jbHVkZSAtSS4uLy4uL29zL2xpbnV4L2luY2x1ZGUgd21pY29uZmlnLmMgLW8gd21pY29uZmlnCi0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93bWljb25maWcvd21pY29uZmlnLzAwMDItZml4LWVyci1BUEktdG8taGF2ZS1mb3JtYXQtc3RyaW5nLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd21pY29uZmlnL3dtaWNvbmZpZy8wMDAyLWZpeC1lcnItQVBJLXRvLWhhdmUtZm9ybWF0LXN0cmluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY3Zjc4NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93bWljb25maWcvd21pY29uZmlnLzAwMDItZml4LWVyci1BUEktdG8taGF2ZS1mb3JtYXQtc3RyaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjU2ICswLDAgQEAKLUZyb20gOTA5ZWJkZGU0ZWUyMjMzZDY1ZGU4ZmEwMWZkZThlOWEzYmVjMTJiNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI3IEp1biAyMDE3IDA5OjMzOjI2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBmaXggZXJyKCkgQVBJIHRvIGhhdmUgZm9ybWF0IHN0cmluZwotCi1GaXhlcyBlcnJvcnMgd2l0aCBoYXJkZW5pbmcgZmxhZ3MKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGhvc3QvdG9vbHMvd21pY29uZmlnL3dtaWNvbmZpZy5jIHwgMTQ4ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspLCA3NCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2hvc3QvdG9vbHMvd21pY29uZmlnL3dtaWNvbmZpZy5jIGIvaG9zdC90b29scy93bWljb25maWcvd21pY29uZmlnLmMKLWluZGV4IDIxYzlkY2QuLmE2ZWM0ODEgMTAwNjQ0Ci0tLS0gYS93bWljb25maWcuYwotKysrIGIvd21pY29uZmlnLmMKLUBAIC00ODMsNyArNDgzLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICBzdHJjcHkoaWZuYW1lLCBldGhJZik7Ci0gICAgIHMgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7Ci0gICAgIGlmIChzIDwgMCkgewotLSAgICAgICAgZXJyKDEsICJzb2NrZXQiKTsKLSsgICAgICAgIGVycigxLCAiJXMiLCAic29ja2V0Iik7Ci0gICAgIH0KLSAKLSAgICAgd2hpbGUgKDEpIHsKLUBAIC0xNTA2LDI4ICsxNTA2LDI4IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9ICh2b2lkICopZmlsdGVyQ21kOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9XTUlfU0VUQlNTRklMVEVSLCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX1BPV0VSX01PREU6Ci0gICAgICAgICBpZnIuaWZyX2RhdGEgPSAodm9pZCAqKXB3ckNtZDsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfV01JX1NFVFBXUiwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9QTV9QQVJBTVM6Ci0gICAgICAgICBpZnIuaWZyX2RhdGEgPSAodm9pZCAqKXBtUGFyYW1DbWQ7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX1dNSV9TRVRfUE1QQVJBTVMsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9TRVRfSUJTU19QTV9DQVBTOgotICAgICAgICAgaWZyLmlmcl9kYXRhID0gKHZvaWQgKilhZGhvY1BtQ21kOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9XTUlfU0VUX0lCU1NfUE1fQ0FQUywgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9FUlJPUl9ERVRFQ1RJT046Ci1AQCAtMTUzNSw3ICsxNTM1LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX0dFVF9IQl9DSEFMTEVOR0VfUkVTUDoKLUBAIC0xNTQzLDcgKzE1NDMsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAjaWZkZWYgVVNFUl9LRVlTCi1AQCAtMTU1NCw3ICsxNTU0LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAotICAgICAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkKLSAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgICAgICB9Ci0gCi0gICAgICAgICAgICAgYnJlYWs7Ci1AQCAtMTU3NSw3ICsxNTc1LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gKHZvaWQgKilzUGFyYW1DbWQ7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX1dNSV9TRVRTQ0FOLCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfR0VUX1ZFUlNJT046Ci1AQCAtMTU4Niw3ICsxNTg2LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gKHZvaWQgKilyZXZpbmZvOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9XTUlfR0VUUkVWLCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBwcmludGYoIkhvc3QgUmV2ID0gMHgleCgldS4ldS4ldS4ldSksIFRhcmdldCBSZXYgPSAweCV4KCV1LiV1LiV1LiV1KVxuIiwKLSAgICAgICAgICAgICAgIHJldmluZm8tPmhvc3RfdmVyLAotQEAgLTE2MDYsMTQgKzE2MDYsMTQgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gKHZvaWQgKilsaXN0ZW5DbWQ7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX1dNSV9TRVRMSVNURU5JTlQsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9TRVRfQk1JU1NfVElNRToKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9ICh2b2lkICopYm1pc3NDbWQ7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX1dNSV9TRVRfQk1JU1NfVElNRSwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9SU1NJX1RIUkVTSE9MRFM6Ci1AQCAtMTYyMSwxNCArMTYyMSwxNCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX1NOUl9USFJFU0hPTERTOgotICAgICAgICAgaWZyLmlmcl9kYXRhID0gKHZvaWQgKilzbnJUaHJlc2hvbGRQYXJhbTsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfV01JX1NFVF9TTlJUSFJFU0hPTEQsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9DTFJfUlNTSVNOUjoKLUBAIC0xNjM2LDcgKzE2MzYsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX0xRX1RIUkVTSE9MRFM6Ci1AQCAtMTY0NCw3ICsxNjQ0LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9DSEFOTkVMOgotQEAgLTE2OTMsMTggKzE2OTMsMTggQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfV01JX1NFVF9DSEFOTkVMUEFSQU1TLCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX1NTSUQ6Ci0gICAgICAgICBpZiAoaW5kZXggPiBNQVhfUFJPQkVEX1NTSURfSU5ERVgpIHsKLSAgICAgICAgICAgICBwcmludGYoIm51bSBvcHRpb24gZm9yIHNzaWQgY29tbWFuZCB0b28gbGFyZ2VcbiIpOwotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgaWYgKHN0cmxlbigoY2hhciAqKXNzaWQpID4gc2l6ZW9mIChzc2lkQ21kLT5zc2lkKSkgewotICAgICAgICAgICAgIHByaW50Zigic3NpZCBuYW1lIHRvbyBsYXJnZVxuIik7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICAgICBzc2lkQ21kLT5lbnRyeUluZGV4ID0gaW5kZXg7Ci1AQCAtMTcyMiw3ICsxNzIyLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gKHZvaWQgKilzc2lkQ21kOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9XTUlfU0VUX1BST0JFRFNTSUQsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9TRVRfQkFEQVA6Ci1AQCAtMTczNSw3ICsxNzM1LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gKHZvaWQgKiliYWRBcENtZDsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfV01JX1NFVF9CQURBUCwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX0NSRUFURV9RT1M6Ci1AQCAtMTc5NCw3ICsxNzk0LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gKHZvaWQgKiljcmVQU3RyZWFtQ21kOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9XTUlfQ1JFQVRFX1FPUywgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX0dFVF9UQVJHRVRfU1RBVFM6Ci1AQCAtMTgwNyw3ICsxODA3LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gKHZvaWQgKikmdGd0U3RhdHNDbWQ7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX1dNSV9HRVRfVEFSR0VUX1NUQVRTLCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBwcmludFRhcmdldFN0YXRzKCYodGd0U3RhdHNDbWQudGFyZ2V0U3RhdHMpKTsKLSAgICAgICAgIGJyZWFrOwotQEAgLTE4MTUsNyArMTgxNSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9ICh2b2lkICopcEJpdE1hc2s7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX1dNSV9TRVRfRVJST1JfUkVQT1JUX0JJVE1BU0ssICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9ERUxFVEVfUU9TOgotQEAgLTE4MjQsNyArMTgyNCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9ICh2b2lkICopZGVsUFN0cmVhbUNtZDsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfV01JX0RFTEVURV9RT1MsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9HRVRfUU9TX1FVRVVFOgotQEAgLTE4NDAsNyArMTg0MCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9ICh2b2lkICopZ2V0UW9zUXVldWVDbWQ7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX1dNSV9HRVRfUU9TX1FVRVVFLCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gCi0gICAgICAgICBwcmludGYoIkFjdGl2ZSBUU0lEcyBcbiIpOwotQEAgLTE4NTUsNyArMTg1NSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9ICh2b2lkICopaWVJbmZvOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9XTUlfU0VUX0FTU09DX0lORk8sICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9TRVRfQUNfUEFSQU1TOgotQEAgLTE4NzEsMTQgKzE4NzEsMTQgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gKHZvaWQgKilhY1BhcmFtc0NtZDsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfV01JX1NFVF9BQ0NFU1NfUEFSQU1TLCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX0RJU0NfVElNRU9VVDoKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9ICh2b2lkICopZGlzY0NtZDsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfV01JX1NFVF9ESVNDX1RJTUVPVVQsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBXTUlfU0VUX0FESE9DX0JTU0lEOgotQEAgLTE4ODcsNyArMTg4Nyw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBwcmludGYoImZhaWwgdG8gc2V0IGFkaG9jIGJzc2lkIFxuIik7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX09QVF9NT0RFOgotQEAgLTE4OTUsNyArMTg5NSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9PUFRfU0VORF9GUkFNRToKLUBAIC0xOTAzLDcgKzE5MDMsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX0JFQUNPTl9JTlQ6Ci1AQCAtMTkxMSw3ICsxOTExLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9WT0lDRV9QS1RfU0laRToKLUBAIC0xOTE5LDcgKzE5MTksNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX01BWF9TUDoKLUBAIC0xOTI3LDcgKzE5MjcsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfR0VUX1JPQU1fVEJMOgotQEAgLTE5MzUsNyArMTkzNSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9TRVRfUk9BTV9DVFJMOgotQEAgLTE5NDMsNyArMTk0Myw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9TRVRfUE9XRVJTQVZFX1RJTUVSUzoKLUBAIC0xOTUxLDcgKzE5NTEsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfR0VUX1BPV0VSX01PREU6Ci1AQCAtMTk1OSw3ICsxOTU5LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgcHJpbnRmKCJQb3dlciBtb2RlIGlzICVzXG4iLAotICAgICAgICAgICAgICAgIChnZXRQb3dlck1vZGUtPnBvd2VyTW9kZSA9PSBNQVhfUEVSRl9QT1dFUikgPyAibWF4cGVyZiIgOiAicmVjIik7Ci1AQCAtMTk2OSw3ICsxOTY5LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX0dFVF9ST0FNX0RBVEE6Ci1AQCAtMTk3Nyw3ICsxOTc3LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9CVF9TVEFUVVM6Ci1AQCAtMTk4NSw3ICsxOTg1LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9CVF9QQVJBTVM6Ci1AQCAtMTk5Myw3ICsxOTkzLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7ICAgCi0gICAgIGNhc2UgV01JX1NFVF9SRVRSWUxJTUlUUzoKLUBAIC0yMDAxLDE0ICsyMDAxLDE0IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9TVEFSVF9TQ0FOOgotICAgICAgICAgKChpbnQgKilidWYpWzBdID0gQVI2MDAwX1hJT0NUTF9XTUlfU1RBUlRTQ0FOOwotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX0ZJWF9SQVRFUzoKLUBAIC0yMDMxLDE0ICsyMDMxLDE0IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9HRVRfRklYX1JBVEVTOgotICAgICAgICAgKChpbnQgKilidWYpWzBdID0gQVI2MDAwX1hJT0NUTF9XTUlfR0VURklYUkFURVM7Ci0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgaW50IGk7Ci0gICAgICAgICAgICAgcHJpbnRmKCJGaXggcmF0ZSBzZXQgaW5kZXg6Iik7Ci1AQCAtMjA1Nyw3ICsyMDU3LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaW5kZXgtLTsKLSAgICAgICAgIHNldEF1dGhNb2RlLT5tb2RlID0gYXRvaShhcmd2W2luZGV4XSk7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9TRVRfUkVBU1NPQ19NT0RFOgotQEAgLTIwNjcsNDIgKzIwNjcsNDIgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaW5kZXgtLTsKLSAgICAgICAgIHNldFJlYXNzb2NNb2RlLT5tb2RlID0gYXRvaShhcmd2W2luZGV4XSk7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9TRVRfTFBSRUFNQkxFOgotICAgICAgICAgKChpbnQgKilidWYpWzBdID0gQVI2MDAwX1hJT0NUTF9XTUlfU0VUX0xQUkVBTUJMRTsKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9SVFM6Ci0gICAgICAgICAoKGludCAqKWJ1ZilbMF0gPSBBUjYwMDBfWElPQ1RMX1dNSV9TRVRfUlRTOwotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX1dNTToKLSAgICAgICAgICgoaW50ICopYnVmKVswXSA9IEFSNjAwMF9YSU9DVExfV01JX1NFVF9XTU07Ci0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9TRVRfVFhPUDoKLSAgICAgICAgICgoaW50ICopYnVmKVswXSA9IEFSNjAwMF9YSU9DVExfV01JX1NFVF9UWE9QOwotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBESUFHX1JFQUQ6Ci0gICAgICAgICAoKGludCAqKWJ1ZilbMF0gPSBBUjYwMDBfWElPQ1RMX0RJQUdfUkVBRDsKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgcHJpbnRmKCJkaWFnZGF0YTogMHgleFxuIiwgKmRpYWdkYXRhKTsKLSAgICAgICAgIGJyZWFrOwotQEAgLTIxMTAsNyArMjExMCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgICgoaW50ICopYnVmKVswXSA9IEFSNjAwMF9YSU9DVExfRElBR19XUklURTsKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX0dFVF9SRDoKLUBAIC0yMTE4LDcgKzIxMTgsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci1AQCAtMjEzOSwxNCArMjEzOSwxNCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBpbmRleC0tOwotICAgICAgICAgc2V0S2VlcEFsaXZlLT5rZWVwYWxpdmVJbnRlcnZhbCA9IGF0b2koYXJndltpbmRleF0pOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfR0VUX0tFRVBBTElWRToKLSAgICAgICAgICgoaW50ICopYnVmKVswXSA9IEFSNjAwMF9YSU9DVExfV01JX0dFVF9LRUVQQUxJVkU7Ci0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIHByaW50ZigiS2VlcGFsaXZlIGludGVydmFsIGlzICVkIHNlY3MgYW5kIEFQIGlzICVzXG4iLAotICAgICAgICAgICAgICAgIGdldEtlZXBBbGl2ZS0+a2VlcGFsaXZlSW50ZXJ2YWwsIChnZXRLZWVwQWxpdmUtPmNvbmZpZ3VyZWQgPwotQEAgLTIxNTYsNjMgKzIxNTYsNjMgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgKChpbnQgKilidWYpWzBdID0gQVI2MDAwX1hJT0NUTF9XTUlfU0VUX0FQUElFOwotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX01HTVRfRlJNX1JYX0ZJTFRFUjoKLSAgICAgICAgICgoaW50ICopYnVmKVswXSA9IEFSNjAwMF9YSU9DVExfV01JX1NFVF9NR01UX0ZSTV9SWF9GSUxURVI7Ci0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9EQkdMT0dfQ0ZHX01PRFVMRToKLSAgICAgICAgICgoaW50ICopYnVmKVswXSA9IEFSNjAwMF9YSU9DVExfREJHTE9HX0NGR19NT0RVTEU7Ci0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9EQkdMT0dfR0VUX0RFQlVHX0xPR1M6Ci0gICAgICAgICAoKGludCAqKWJ1ZilbMF0gPSBBUjYwMDBfWElPQ1RMX0RCR0xPR19HRVRfREVCVUdfTE9HUzsKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9IT1NUX1NMRUVQX01PREU6Ci0gICAgICAgICAoKGludCAqKWJ1ZilbMF0gPSBBUjYwMDBfWElPQ1RMX1dNSV9TRVRfSE9TVF9TTEVFUF9NT0RFOwotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX1dPV19NT0RFOgotICAgICAgICAgKChpbnQgKilidWYpWzBdID0gQVI2MDAwX1hJT0NUTF9XTUlfU0VUX1dPV19NT0RFOwotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfQUREX1dPV19QQVRURVJOOgotICAgICAgICAgKChpbnQgKilidWYpWzBdID0gQVI2MDAwX1hJT0NUTF9XTUlfQUREX1dPV19QQVRURVJOOwotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfREVMX1dPV19QQVRURVJOOgotICAgICAgICAgKChpbnQgKilidWYpWzBdID0gQVI2MDAwX1hJT0NUTF9XTUlfREVMX1dPV19QQVRURVJOOwotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfR0VUX1dPV19MSVNUOgotICAgICAgICAgKChpbnQgKilidWYpWzBdID0gQVI2MDAwX1hJT0NUTF9XTUlfR0VUX1dPV19MSVNUOwotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBESUFHX0RVTVBfQ0hJUF9NRU06Ci1AQCAtMjIyNSw3ICsyMjI1LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgICAgICAgICAoKGludCAqKWJ1ZilbMF0gPSBBUjYwMDBfWElPQ1RMX0RJQUdfUkVBRDsKLSAgICAgICAgICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApIHsKLS0gICAgICAgICAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgcHJpbnRmKCIweCUwNHg6MHglMDR4XG4iLCAqZGlhZ2FkZHIsICpkaWFnZGF0YSk7Ci0gICAgICAgICAgICAgfQotQEAgLTIyMzcsMjEgKzIyMzcsMjEgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaW5kZXggPSBvcHRpbmQgLSAxOwotICAgICAgICAgKmNvbm5lY3RDdHJsRmxhZ3MgPSBzdHJ0b3VsKGFyZ3ZbaW5kZXhdLCBOVUxMLCAwKTsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgRFVNUF9IVENfQ1JFRElUUzogICAgICAgIAotICAgICAgICAgKChpbnQgKilidWYpWzBdID0gQVI2MDAwX1hJT0NUTF9EVU1QX0hUQ19DUkVESVRfU1RBVEU7Ci0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9TRVRfQUtNUF9JTkZPOgotICAgICAgICAgKChpbnQgKilidWYpWzBdID0gQVI2MDAwX1hJT0NUTF9XTUlfU0VUX0FLTVBfUEFSQU1TOwotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX1BNS0lEX0xJU1Q6Ci1AQCAtMjI1OSw3ICsyMjU5LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgICAgICgoaW50ICopYnVmKVswXSA9IEFSNjAwMF9YSU9DVExfV01JX1NFVF9QTUtJRF9MSVNUOwotICAgICAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApIHsKLS0gICAgICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgcHJpbnRmKCJObyBQTUtJRHMgZW50ZXJlZFxuIik7Ci1AQCAtMjI2OSw3ICsyMjY5LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgKChpbnQgKilidWYpWzBdID0gQVI2MDAwX1hJT0NUTF9XTUlfR0VUX1BNS0lEX0xJU1Q7Ci0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9TRVRfQlNTX1BNS0lEX0lORk86Ci1AQCAtMjI3Nyw3ICsyMjc3LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaXdyLnUuZGF0YS5sZW5ndGggPSBzaXplb2YoKnBpX2NtZCk7Ci0gICAgICAgICBpZiAoaW9jdGwocywgSUVFRTgwMjExX0lPQ1RMX0FERFBNS0lELCAmaXdyKSA8IDApIHsKLSAgICAgICAgICAgICBwcmludGYoIkFERFBNS0lEIElPQ1RMIEVycm9yXG4iKTsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBkZWZhdWx0OgotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd21pY29uZmlnL3dtaWNvbmZpZ19zdm4uYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93bWljb25maWcvd21pY29uZmlnX3N2bi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY2NTcyYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93bWljb25maWcvd21pY29uZmlnX3N2bi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiQXRoZXJvcyA2SyBXaWZpIGNvbmZpZ3VyYXRpb24gdXRpbGl0eSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly93bWljb25maWcuYztlbmRsaW5lPTE5O21kNT00Mzk0YTU2YmNhMWM1YjI0NDZjOWY4ZTQwNmM4MjkxMSIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotU1JDUkVWID0gIjUzOTQiCi1QViA9ICIwLjAuMCtzdm5yJHtTUkNQVn0iCi1QUiA9ICJyMiIKLQotU1JDX1VSSSA9ICJzdm46Ly9zdm4ub3Blbm1va28ub3JnL3RydW5rL3NyYy90YXJnZXQ7bW9kdWxlPUFSNmtTREsuYnVpbGRfc3cuMTg7cHJvdG9jb2w9aHR0cCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1ha2VmaWxlLVBhc3MtQ0ZMQUdTLXRvLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1maXgtZXJyLUFQSS10by1oYXZlLWZvcm1hdC1zdHJpbmcucGF0Y2ggXAotICAgICAgICAgICAiCi1TID0gIiR7V09SS0RJUn0vQVI2a1NESy5idWlsZF9zdy4xOC9ob3N0L3Rvb2xzL3dtaWNvbmZpZyIKLQotQ0xFQU5CUk9LRU4gPSAiMSIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCi0KLVRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSB3bWljb25maWcgJHtEfSR7YmluZGlyfQotfQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94bWxzZWMxL3htbHNlYzEvMDAwMS1uc3MtbnNwci1maXgtZm9yLW11bHRpbGliLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveG1sc2VjMS94bWxzZWMxLzAwMDEtbnNzLW5zcHItZml4LWZvci1tdWx0aWxpYi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2MxMTk3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveG1sc2VjMS94bWxzZWMxLzAwMDEtbnNzLW5zcHItZml4LWZvci1tdWx0aWxpYi5wYXRjaApAQCAtMCwwICsxLDUyIEBACitGcm9tIDllZDNiNGU2MjhmOTI1NGQ1Yzg2MDA2ZmU2M2MzM2ExZWIwMmFlZTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDQgRmViIDIwMjAgMjM6Mzk6NDkgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbnNzL25zcHI6IGZpeCBmb3IgbXVsdGlsaWIKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDE2ICsrKysrKysrLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBiNDZkOTdkLi4zOWY0MzE4IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC05MjAsMjQgKzkyMCwyNCBAQCBmaQorIGRubCBQcmlvcml0eSAxOiBVc2VyIHNwZWNpZmllcyB0aGUgcGF0aCB0byBpbnN0YWxsYXRpb24KKyBpZiB0ZXN0ICJ6JE5TUFJfRk9VTkQiID0gInpubyIgLWEgInokd2l0aF9uc3ByIiAhPSAieiIgLWEgInokd2l0aF9uc3ByIiAhPSAienllcyIgOyB0aGVuCisgICAgIEFDX01TR19DSEVDS0lORyhmb3IgbnNwciBsaWJyYXJ5IGluc3RhbGxhdGlvbiBpbiAiJHdpdGhfbnNwciIgZm9sZGVyKQorLSAgICBpZiB0ZXN0IC1mICIkd2l0aF9uc3ByL2luY2x1ZGUvJE5TUFJfSU5DTFVERV9NQVJLRVIiIC1hIC1mICIkd2l0aF9uc3ByL2xpYi8kTlNQUl9MSUJfTUFSS0VSIiA7IHRoZW4KKy0gICAgICAgIE5TUFJfSU5DTFVERV9QQVRIPSIkd2l0aF9uc3ByL2luY2x1ZGUiCistICAgICAgICBOU1BSX0xJQl9QQVRIPSIkd2l0aF9uc3ByL2xpYiIKKysgICAgaWYgdGVzdCAtZiAiJHdpdGhfbnNwci8ke2luY2x1ZGVkaXJ9LyROU1BSX0lOQ0xVREVfTUFSS0VSIiAtYSAtZiAiJHdpdGhfbnNwci8ke2xpYmRpcn0vJE5TUFJfTElCX01BUktFUiIgOyB0aGVuCisrICAgICAgICBOU1BSX0lOQ0xVREVfUEFUSD0iJHdpdGhfbnNwci8ke2luY2x1ZGVkaXJ9IgorKyAgICAgICAgTlNQUl9MSUJfUEFUSD0iJHdpdGhfbnNwci8ke2xpYmRpcn0iCisgICAgICAgICBOU1BSX0ZPVU5EPSJ5ZXMiCisgICAgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQorICAgICBlbHNlCistICAgICAgICBBQ19NU0dfRVJST1IoW25vdCBmb3VuZDogIiR3aXRoX25zcHIvaW5jbHVkZS8kTlNQUl9JTkNMVURFX01BUktFUiIgYW5kL29yICIkd2l0aF9uc3ByL2xpYi8kTlNQUl9MSUJfTUFSS0VSIiBmaWxlcyBkb24ndCBleGlzdCksIHR5cG8/XSkKKysgICAgICAgIEFDX01TR19FUlJPUihbbm90IGZvdW5kOiAiJHdpdGhfbnNwci8ke2luY2x1ZGVkaXJ9LyROU1BSX0lOQ0xVREVfTUFSS0VSIiBhbmQvb3IgIiR3aXRoX25zcHIvJHtsaWJkaXJ9LyROU1BSX0xJQl9NQVJLRVIiIGZpbGVzIGRvbid0IGV4aXN0KSwgdHlwbz9dKQorICAgICBmaQorIGZpCisgaWYgdGVzdCAieiROU1NfRk9VTkQiID0gInpubyIgLWEgInokd2l0aF9uc3MiICE9ICJ6IiAtYSAieiR3aXRoX25zcyIgIT0gInp5ZXMiIDsgdGhlbgorICAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG5zcyBsaWJyYXJ5IGluc3RhbGxhdGlvbiBpbiAiJHdpdGhfbnNzIiBmb2xkZXIpCistICAgIGlmIHRlc3QgLWYgIiR3aXRoX25zcy9pbmNsdWRlLyROU1NfSU5DTFVERV9NQVJLRVIiIC1hIC1mICIkd2l0aF9uc3MvbGliLyROU1NfTElCX01BUktFUiIgOyB0aGVuCistICAgICAgICBOU1NfSU5DTFVERV9QQVRIPSIkd2l0aF9uc3MvaW5jbHVkZSIKKy0gICAgICAgIE5TU19MSUJfUEFUSD0iJHdpdGhfbnNzL2xpYiIKKysgICAgaWYgdGVzdCAtZiAiJHdpdGhfbnNzLyR7aW5jbHVkZWRpcn0vJE5TU19JTkNMVURFX01BUktFUiIgLWEgLWYgIiR3aXRoX25zcy8ke2xpYmRpcn0vJE5TU19MSUJfTUFSS0VSIiA7IHRoZW4KKysgICAgICAgIE5TU19JTkNMVURFX1BBVEg9IiR3aXRoX25zcy8ke2luY2x1ZGVkaXJ9IgorKyAgICAgICAgTlNTX0xJQl9QQVRIPSIkd2l0aF9uc3MvJHtsaWJkaXJ9IgorICAgICAgICAgTlNTX0ZPVU5EPSJ5ZXMiCisgICAgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQorICAgICBlbHNlCistICAgICAgICBBQ19NU0dfRVJST1IoW25vdCBmb3VuZDogIiR3aXRoX25zcy9pbmNsdWRlLyROU1NfSU5DTFVERV9NQVJLRVIiIGFuZC9vciAiJHdpdGhfbnNzL2xpYi8kTlNTX0xJQl9NQVJLRVIiIGZpbGVzIGRvbid0IGV4aXN0KSwgdHlwbz9dKQorKyAgICAgICAgQUNfTVNHX0VSUk9SKFtub3QgZm91bmQ6ICIkd2l0aF9uc3MvJHtpbmNsdWRlZGlyfS8kTlNTX0lOQ0xVREVfTUFSS0VSIiBhbmQvb3IgIiR3aXRoX25zcy8ke2xpYmRpcn0vJE5TU19MSUJfTUFSS0VSIiBmaWxlcyBkb24ndCBleGlzdCksIHR5cG8/XSkKKyAgICAgZmkKKyBmaQorIAorLS0gCisyLjIxLjAKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveG1sc2VjMS94bWxzZWMxL2NoYW5nZS1maW5kaW5nLXBhdGgtb2YtbnNzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveG1sc2VjMS94bWxzZWMxL2NoYW5nZS1maW5kaW5nLXBhdGgtb2YtbnNzLnBhdGNoCmluZGV4IDFjZWM0N2YuLjE0NTFmZjUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3htbHNlYzEveG1sc2VjMS9jaGFuZ2UtZmluZGluZy1wYXRoLW9mLW5zcy5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94bWxzZWMxL3htbHNlYzEvY2hhbmdlLWZpbmRpbmctcGF0aC1vZi1uc3MucGF0Y2gKQEAgLTE2LDEyICsxNiw4IEBACiBpbmRleCA5NTFiM2ViLi4xZmRlYjBmIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC04NjYsMTAgKzg2NiwxMCBAQCBNT1pJTExBX01JTl9WRVJTSU9OPSIxLjQiCi0gTlNTX0NSWVBUT19MSUI9IiRYTUxTRUNfUEFDS0FHRS1uc3MiCi0gTlNQUl9QQUNLQUdFPW1vemlsbGEtbnNwcgotIE5TU19QQUNLQUdFPW1vemlsbGEtbnNzCi0tTlNQUl9JTkNMVURFX01BUktFUj0ibnNwci9uc3ByLmgiCi0rTlNQUl9JTkNMVURFX01BUktFUj0ibnNwci5oIgorQEAgLTg2Niw3ICs4NjYsNyBAQCBNT1pJTExBX01JTl9WRVJTSU9OPSIxLjQiCisgTlNQUl9JTkNMVURFX01BUktFUj0ibnNwci9uc3ByLmgiCiAgTlNQUl9MSUJfTUFSS0VSPSJsaWJuc3ByNCRzaHJleHQiCiAgTlNQUl9MSUJTX0xJU1Q9Ii1sbnNwcjQgLWxwbGRzNCAtbHBsYzQiCiAtTlNTX0lOQ0xVREVfTUFSS0VSPSJuc3MvbnNzLmgiCkBAIC0yOSwzOSArMjUsMyBAQAogIE5TU19MSUJfTUFSS0VSPSJsaWJuc3MzJHNocmV4dCIKICBOU1NfTElCU19MSVNUPSItbG5zczMgLWxzbWltZTMiCiAgCi1AQCAtODk4LDI0ICs4OTgsMjQgQEAgZmkKLSBkbmwgUHJpb3JpdHkgMTogVXNlciBzcGVjaWZpZXMgdGhlIHBhdGggdG8gaW5zdGFsbGF0aW9uCi0gaWYgdGVzdCAieiROU1BSX0ZPVU5EIiA9ICJ6bm8iIC1hICJ6JHdpdGhfbnNwciIgIT0gInoiIC1hICJ6JHdpdGhfbnNwciIgIT0gInp5ZXMiIDsgdGhlbgotICAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG5zcHIgbGlicmFyeSBpbnN0YWxsYXRpb24gaW4gIiR3aXRoX25zcHIiIGZvbGRlcikKLS0gICAgaWYgdGVzdCAtZiAiJHdpdGhfbnNwci9pbmNsdWRlLyROU1BSX0lOQ0xVREVfTUFSS0VSIiAtYSAtZiAiJHdpdGhfbnNwci9saWIvJE5TUFJfTElCX01BUktFUiIgOyB0aGVuCi0tICAgICAgICBOU1BSX0lOQ0xVREVfUEFUSD0iJHdpdGhfbnNwci9pbmNsdWRlIgotLSAgICAgICAgTlNQUl9MSUJfUEFUSD0iJHdpdGhfbnNwci9saWIiCi0rICAgIGlmIHRlc3QgLWYgIiR3aXRoX25zcHIvdXNyL2luY2x1ZGUvJE5TUFJfSU5DTFVERV9NQVJLRVIiIC1hIC1mICIkd2l0aF9uc3ByLyR7bGliZGlyfS8kTlNQUl9MSUJfTUFSS0VSIiA7IHRoZW4KLSsgICAgICAgIE5TUFJfSU5DTFVERV9QQVRIPSIkd2l0aF9uc3ByL3Vzci9pbmNsdWRlIgotKyAgICAgICAgTlNQUl9MSUJfUEFUSD0iJHdpdGhfbnNwci8ke2xpYmRpcn0iCi0gICAgICAgICBOU1BSX0ZPVU5EPSJ5ZXMiCi0gICAgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQotICAgICBlbHNlCi0tICAgICAgICBBQ19NU0dfRVJST1IoW25vdCBmb3VuZDogIiR3aXRoX25zcHIvaW5jbHVkZS8kTlNQUl9JTkNMVURFX01BUktFUiIgYW5kL29yICIkd2l0aF9uc3ByL2xpYi8kTlNQUl9MSUJfTUFSS0VSIiBmaWxlcyBkb24ndCBleGlzdCksIHR5cG8/XSkKLSsgICAgICAgIEFDX01TR19FUlJPUihbbm90IGZvdW5kOiAiJHdpdGhfbnNwci91c3IvaW5jbHVkZS8kTlNQUl9JTkNMVURFX01BUktFUiIgYW5kL29yICIkd2l0aF9uc3ByLyR7bGliZGlyfS8kTlNQUl9MSUJfTUFSS0VSIiBmaWxlcyBkb24ndCBleGlzdCksIHR5cG8/XSkKLSAgICAgZmkKLSBmaQotIGlmIHRlc3QgInokTlNTX0ZPVU5EIiA9ICJ6bm8iIC1hICJ6JHdpdGhfbnNzIiAhPSAieiIgLWEgInokd2l0aF9uc3MiICE9ICJ6eWVzIiA7IHRoZW4KLSAgICAgQUNfTVNHX0NIRUNLSU5HKGZvciBuc3MgbGlicmFyeSBpbnN0YWxsYXRpb24gaW4gIiR3aXRoX25zcyIgZm9sZGVyKQotLSAgICBpZiB0ZXN0IC1mICIkd2l0aF9uc3MvaW5jbHVkZS8kTlNTX0lOQ0xVREVfTUFSS0VSIiAtYSAtZiAiJHdpdGhfbnNzL2xpYi8kTlNTX0xJQl9NQVJLRVIiIDsgdGhlbgotLSAgICAgICAgTlNTX0lOQ0xVREVfUEFUSD0iJHdpdGhfbnNzL2luY2x1ZGUiCi0tICAgICAgICBOU1NfTElCX1BBVEg9IiR3aXRoX25zcy9saWIiCi0rICAgIGlmIHRlc3QgLWYgIiR3aXRoX25zcy91c3IvaW5jbHVkZS8kTlNTX0lOQ0xVREVfTUFSS0VSIiAtYSAtZiAiJHdpdGhfbnNzLyR7bGliZGlyfS8kTlNTX0xJQl9NQVJLRVIiIDsgdGhlbgotKyAgICAgICAgTlNTX0lOQ0xVREVfUEFUSD0iJHdpdGhfbnNzL3Vzci9pbmNsdWRlL25zczMiCi0rICAgICAgICBOU1NfTElCX1BBVEg9IiR3aXRoX25zcy8ke2xpYmRpcn0iCi0gICAgICAgICBOU1NfRk9VTkQ9InllcyIKLSAgICAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCi0gICAgIGVsc2UKLS0gICAgICAgIEFDX01TR19FUlJPUihbbm90IGZvdW5kOiAiJHdpdGhfbnNzL2luY2x1ZGUvJE5TU19JTkNMVURFX01BUktFUiIgYW5kL29yICIkd2l0aF9uc3MvbGliLyROU1NfTElCX01BUktFUiIgZmlsZXMgZG9uJ3QgZXhpc3QpLCB0eXBvP10pCi0rICAgICAgICBBQ19NU0dfRVJST1IoW25vdCBmb3VuZDogIiR3aXRoX25zcy91c3IvaW5jbHVkZS8kTlNTX0lOQ0xVREVfTUFSS0VSIiBhbmQvb3IgIiR3aXRoX25zcy8ke2xpYmRpcn0vJE5TU19MSUJfTUFSS0VSIiBmaWxlcyBkb24ndCBleGlzdCksIHR5cG8/XSkKLSAgICAgZmkKLSBmaQotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94bWxzZWMxL3htbHNlYzFfMS4yLjI5LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveG1sc2VjMS94bWxzZWMxXzEuMi4yOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBjNTg1ZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94bWxzZWMxL3htbHNlYzFfMS4yLjI5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotU1VNTUFSWSA9ICJYTUwgU2VjdXJpdHkgTGlicmFyeSBpcyBhIEMgbGlicmFyeSBiYXNlZCBvbiBMaWJYTUwyIgotREVTQ1JJUFRJT04gPSAiXAotICAgIFhNTCBTZWN1cml0eSBMaWJyYXJ5IGlzIGEgQyBsaWJyYXJ5IGJhc2VkIG9uIFwKLSAgICBMaWJYTUwyIGFuZCBPcGVuU1NMLiBUaGUgbGlicmFyeSB3YXMgY3JlYXRlZCB3aXRoIGEgZ29hbCB0byBzdXBwb3J0IG1ham9yIFwKLSAgICBYTUwgc2VjdXJpdHkgc3RhbmRhcmRzICJYTUwgRGlnaXRhbCBTaWduYXR1cmUiIGFuZCAiWE1MIEVuY3J5cHRpb24iLiBcCi0gICAgIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbGVrc2V5LmNvbS94bWxzZWMvIgotREVQRU5EUyA9ICJsaWJ0b29sIGxpYnhtbDIgbGlieHNsdCB6bGliIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM1Mjc5MWQ2MjA5MmVhODEwNGYwODUwNDJkZTdmNGQwIgotCi1TRUNUSU9OID0gImxpYnMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5hbGVrc2V5LmNvbS94bWxzZWMvZG93bmxvYWQvJHtCUH0udGFyLmd6IFwKLSAgICBmaWxlOi8vZml4LWx0bWFpbi5zaC5wYXRjaCBcCi0gICAgZmlsZTovL2NoYW5nZS1maW5kaW5nLXBhdGgtb2YtbnNzLnBhdGNoIFwKLSAgICBmaWxlOi8vbWFrZWZpbGUtcHRlc3QucGF0Y2ggXAotICAgIGZpbGU6Ly94bWxzZWMxLWV4YW1wbGVzLWFsbG93LWJ1aWxkLWluLXNlcGFyYXRlLWRpci5wYXRjaCBcCi0gICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDc1NTYyMWZmMmE3MTUwZTIwOGRlNmJkN2RlY2NhMTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjFkMWRlYmE5NjYwMTk5MzBmNjA4ZDFmMmI5NWM0MGNhMzQ1MGYxMzkzYmNkM2EzYzAwMWE4YmExZDI4MzlhYiIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHB0ZXN0IHBrZ2NvbmZpZwotCi1DRkxBR1MgKz0gIi1JJHtTVEFHSU5HX0lOQ0RJUn0vbnNwcjQgLUkke1NUQUdJTkdfSU5DRElSfS9uc3MzIgotQ1BQRkxBR1MgKz0gIi1JJHtTVEFHSU5HX0lOQ0RJUn0vbnNwcjQgLUkke1NUQUdJTkdfSU5DRElSfS9uc3MzIgotCi1QQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIGxpYmdjcnlwdCBuc3Mgb3BlbnNzbCBkZXMiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLCxnbnV0bHMiCi1QQUNLQUdFQ09ORklHW2xpYmdjcnlwdF0gPSAiLCxsaWJnY3J5cHQiCi1QQUNLQUdFQ09ORklHW25zc10gPSAiLS13aXRoLW5zcz0ke1NUQUdJTkdfTElCRElSfS8uLi8uLiAtLXdpdGgtbnNwcj0ke1NUQUdJTkdfTElCRElSfS8uLi8uLiwsbnNzIG5zcHIiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIiwsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbZGVzXSA9ICIsLS1kaXNhYmxlLWRlcywsIgotCi0jIHRoZXNlIGNhbiBiZSBkeW5hbWljYWxseSBsb2FkZWQgd2l0aCB4bWxTZWNDcnlwdG9ETExvYWRMaWJyYXJ5KCkKLUZJTEVTX1NPTElCU0RFViA9ICIke2xpYmRpcn0vbGlieG1sc2VjMS5zbyIKLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGlieG1sc2VjMS0qLnNvIgotSU5TQU5FX1NLSVBfJHtQTn0gPSAiZGV2LXNvIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS94bWxzZWMxQ29uZi5zaCIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtQVEVTVF9QQVRIfS8uZGVidWcvKiIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59LWRldiIKLUlOU0FORV9TS0lQXyR7UE59LXB0ZXN0ICs9ICJkZXYtZGVwcyIKLQotUFRFU1RfRVhUUkFfQVJHUyA9ICJ0b3Bfc3JjZGlyPSR7U30gdG9wX2J1aWxkZGlyPSR7Qn0iCi0KLWRvX2NvbXBpbGVfcHRlc3QgKCkgewotICAgIG9lX3J1bm1ha2UgLUMgJHtTfS9leGFtcGxlcyAke1BURVNUX0VYVFJBX0FSR1N9IGFsbAotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBmb3IgaSBpbiAke2JpbmRpcn0veG1sc2VjMS1jb25maWcgJHtsaWJkaXJ9L3htbHNlYzFDb25mLnNoIFwKLSAgICAgICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy94bWxzZWMxLW9wZW5zc2wucGM7IGRvCi0gICAgICAgIHNlZCAtaSAtZSAic0Ake1JFQ0lQRV9TWVNST09UfUBAZyIgJHtEfSRpCi0gICAgZG9uZQotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLSAgICBvZV9ydW5tYWtlIC1DICR7U30vZXhhbXBsZXMgREVTVERJUj0ke0R9JHtQVEVTVF9QQVRIfSAke1BURVNUX0VYVFJBX0FSR1N9IGluc3RhbGwtcHRlc3QKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3htbHNlYzEveG1sc2VjMV8xLjIuMzAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94bWxzZWMxL3htbHNlYzFfMS4yLjMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwYzdiMmQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94bWxzZWMxL3htbHNlYzFfMS4yLjMwLmJiCkBAIC0wLDAgKzEsNjUgQEAKK1NVTU1BUlkgPSAiWE1MIFNlY3VyaXR5IExpYnJhcnkgaXMgYSBDIGxpYnJhcnkgYmFzZWQgb24gTGliWE1MMiIKK0RFU0NSSVBUSU9OID0gIlwKKyAgICBYTUwgU2VjdXJpdHkgTGlicmFyeSBpcyBhIEMgbGlicmFyeSBiYXNlZCBvbiBcCisgICAgTGliWE1MMiBhbmQgT3BlblNTTC4gVGhlIGxpYnJhcnkgd2FzIGNyZWF0ZWQgd2l0aCBhIGdvYWwgdG8gc3VwcG9ydCBtYWpvciBcCisgICAgWE1MIHNlY3VyaXR5IHN0YW5kYXJkcyAiWE1MIERpZ2l0YWwgU2lnbmF0dXJlIiBhbmQgIlhNTCBFbmNyeXB0aW9uIi4gXAorICAgICIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjLyIKK0RFUEVORFMgPSAibGlidG9vbCBsaWJ4bWwyIGxpYnhzbHQgemxpYiIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zNTI3OTFkNjIwOTJlYTgxMDRmMDg1MDQyZGU3ZjRkMCIKKworU0VDVElPTiA9ICJsaWJzIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjL2Rvd25sb2FkLyR7QlB9LnRhci5neiBcCisgICAgZmlsZTovL2ZpeC1sdG1haW4uc2gucGF0Y2ggXAorICAgIGZpbGU6Ly9jaGFuZ2UtZmluZGluZy1wYXRoLW9mLW5zcy5wYXRjaCBcCisgICAgZmlsZTovL21ha2VmaWxlLXB0ZXN0LnBhdGNoIFwKKyAgICBmaWxlOi8veG1sc2VjMS1leGFtcGxlcy1hbGxvdy1idWlsZC1pbi1zZXBhcmF0ZS1kaXIucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLW5zcy1uc3ByLWZpeC1mb3ItbXVsdGlsaWIucGF0Y2ggXAorICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImI2NmVjMjFlMGEwYWMzMzFhZmI0YjFiYzVjOWVmOTY2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJkODQzNjBiMDMwNDIxNzhkZWYxZDlmZjUzOGFjYWNhZWQyYjNhMjc0MTFkYjdiMjg3NGYxNjEyZWQ3MWFiYzgiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdCBwa2djb25maWcKKworI0NGTEFHUyArPSAiLUkke1NUQUdJTkdfSU5DRElSfS9uc3MzIgorI0NQUEZMQUdTICs9ICItSSR7U1RBR0lOR19JTkNESVJ9L25zczMiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJnbnV0bHMgbGliZ2NyeXB0IG5zcyBvcGVuc3NsIGRlcyIKK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICIsLGdudXRscyIKK1BBQ0tBR0VDT05GSUdbbGliZ2NyeXB0XSA9ICIsLGxpYmdjcnlwdCIKK1BBQ0tBR0VDT05GSUdbbnNzXSA9ICItLXdpdGgtbnNzPSR7U1RBR0lOR19ESVJfSE9TVH0gLS13aXRoLW5zcHI9JHtTVEFHSU5HX0RJUl9IT1NUfSwsbnNzIG5zcHIiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIiwsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbZGVzXSA9ICIsLS1kaXNhYmxlLWRlcywsIgorCisjIHRoZXNlIGNhbiBiZSBkeW5hbWljYWxseSBsb2FkZWQgd2l0aCB4bWxTZWNDcnlwdG9ETExvYWRMaWJyYXJ5KCkKK0ZJTEVTX1NPTElCU0RFViA9ICIke2xpYmRpcn0vbGlieG1sc2VjMS5zbyIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGlieG1sc2VjMS0qLnNvIgorSU5TQU5FX1NLSVBfJHtQTn0gPSAiZGV2LXNvIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS94bWxzZWMxQ29uZi5zaCIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtQVEVTVF9QQVRIfS8uZGVidWcvKiIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59LWRldiIKK0lOU0FORV9TS0lQXyR7UE59LXB0ZXN0ICs9ICJkZXYtZGVwcyIKKworUFRFU1RfRVhUUkFfQVJHUyA9ICJ0b3Bfc3JjZGlyPSR7U30gdG9wX2J1aWxkZGlyPSR7Qn0iCisKK2RvX2NvbXBpbGVfcHRlc3QgKCkgeworICAgIG9lX3J1bm1ha2UgLUMgJHtTfS9leGFtcGxlcyAke1BURVNUX0VYVFJBX0FSR1N9IGFsbAorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBmb3IgaSBpbiAke2JpbmRpcn0veG1sc2VjMS1jb25maWcgJHtsaWJkaXJ9L3htbHNlYzFDb25mLnNoIFwKKyAgICAgICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy94bWxzZWMxLW9wZW5zc2wucGM7IGRvCisgICAgICAgIHNlZCAtaSAtZSAic0Ake1JFQ0lQRV9TWVNST09UfUBAZyIgJHtEfSRpCisgICAgZG9uZQorfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKyAgICBvZV9ydW5tYWtlIC1DICR7U30vZXhhbXBsZXMgREVTVERJUj0ke0R9JHtQVEVTVF9QQVRIfSAke1BURVNUX0VYVFJBX0FSR1N9IGluc3RhbGwtcHRlc3QKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3h4aGFzaC94eGhhc2hfMC43LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94eGhhc2gveHhoYXNoXzAuNy4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2NWFkYzUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94eGhhc2gveHhoYXNoXzAuNy4zLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiRXh0cmVtZWx5IGZhc3Qgbm9uLWNyeXB0b2dyYXBoaWMgaGFzaCBhbGdvcml0aG0iCitERVNDUklQVElPTiA9ICJ4eEhhc2ggaXMgYW4gZXh0cmVtZWx5IGZhc3Qgbm9uLWNyeXB0b2dyYXBoaWMgaGFzaCBhbGdvcml0aG0sIFwKK3dvcmtpbmcgYXQgc3BlZWRzIGNsb3NlIHRvIFJBTSBsaW1pdHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy54eGhhc2guY29tLyIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlICYgR1BMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTAxYTdlYmE0MjEyZWYxZTg4Mjc3N2EzODU4NWU3YTliIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vQ3lhbjQ5NzMveHhIYXNoLmdpdCIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj5cZCsoXC5cZCspKykiCisKK1NSQ1JFViA9ICJkNDA4ZTliMDYwNmQwN2IxZGRjNTQ1MmZmYzBlYzg1MTIyMTFiMTc0IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitkb19jb21waWxlICgpIHsKKwlvZV9ydW5tYWtlIGFsbAorfQorCitkb19pbnN0YWxsICgpIHsKKwlvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC96Y2h1bmsvemNodW5rLzAwMDEtemNrLmgtZml4LWJ1aWxkLW9uLW11c2wucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC96Y2h1bmsvemNodW5rLzAwMDEtemNrLmgtZml4LWJ1aWxkLW9uLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRlMGU4ZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3pjaHVuay96Y2h1bmsvMDAwMS16Y2suaC1maXgtYnVpbGQtb24tbXVzbC5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDc4MjQ3ZDQ3OGNlYzI1NGJhZDI3ZjRlZDk3YjUzMmY0ZjU0YmYxYjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQaWVycmUtSmVhbiBUZXhpZXIgPHBqdGV4aWVyQGtvbmNlcHRvLmlvPgorRGF0ZTogVGh1LCAyMyBKYW4gMjAyMCAxOToxNDo0MCArMDEwMAorU3ViamVjdDogW1BBVENIIDEvMl0gemNrLmg6IGZpeCBidWlsZCBvbiBtdXNsCisKK1RoZSBzc2l6ZV90IHR5cGUgcmVxdWlyZXMgdGhlIDxzeXMvdHlwZXMuaD4gaGVhZGVyLiBUaGlzIGZpeGVzIGJ1aWxkIHdpdGggbXVzbAorbGliYzoKKworaW5jbHVkZS96Y2suaDo2ODoxOiBlcnJvcjogdW5rbm93biB0eXBlIG5hbWUgJ3NzaXplX3QnOyBkaWQgeW91IG1lYW4gJ3NpemVfdCc/CisgICA2OCB8IHNzaXplX3QgemNrX3JlYWQoemNrQ3R4ICp6Y2ssIGNoYXIgKmRzdCwgc2l6ZV90IGRzdF9zaXplKQorICAgICAgfCBefn5+fn5+CisgICAgICB8IHNpemVfdAoraW5jbHVkZS96Y2suaDo4MToxOiBlcnJvcjogdW5rbm93biB0eXBlIG5hbWUgJ3NzaXplX3QnOyBkaWQgeW91IG1lYW4gJ3NpemVfdCc/CisgICA4MSB8IHNzaXplX3QgemNrX3dyaXRlKHpja0N0eCAqemNrLCBjb25zdCBjaGFyICpzcmMsIGNvbnN0IHNpemVfdCBzcmNfc2l6ZSkKKyAgICAgIHwgXn5+fn5+fgorICAgICAgfCBzaXplX3QKKyAgICAgIAorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS96Y2h1bmsvemNodW5rL3B1bGwvMjNdCisKK1NpZ25lZC1vZmYtYnk6IFBpZXJyZS1KZWFuIFRleGllciA8cGp0ZXhpZXJAa29uY2VwdG8uaW8+CistLS0KKyBpbmNsdWRlL3pjay5oLmluIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3pjay5oLmluIGIvaW5jbHVkZS96Y2suaC5pbgoraW5kZXggOTFkMjU1Ny4uYjg0NzU3NiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvemNrLmguaW4KKysrKyBiL2luY2x1ZGUvemNrLmguaW4KK0BAIC01LDYgKzUsNyBAQAorIAorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RkYm9vbC5oPgorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAKKyB0eXBlZGVmIGVudW0gemNrX2hhc2ggeworICAgICBaQ0tfSEFTSF9TSEExLAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC96Y2h1bmsvemNodW5rLzAwMDItdW56Y2stZml4LWJ1aWxkLXdpdGgtbXVzbC1saWJjLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvemNodW5rL3pjaHVuay8wMDAyLXVuemNrLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWM5NWJmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvemNodW5rL3pjaHVuay8wMDAyLXVuemNrLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaApAQCAtMCwwICsxLDYxIEBACitGcm9tIDcyYzU1ZTNkYTU5ZWNjZGZlYTM3NzhkMTFmODM4NjJiNThhZjcyM2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQaWVycmUtSmVhbiBUZXhpZXIgPHBqdGV4aWVyQGtvbmNlcHRvLmlvPgorRGF0ZTogVGh1LCAyMyBKYW4gMjAyMCAyMjo0Mjo0MCArMDEwMAorU3ViamVjdDogW1BBVENIIDIvMl0gdW56Y2s6IGZpeCBidWlsZCB3aXRoIG11c2wgbGliYworCitPbiBtdXNsIGxpYmMgInN0ZG91dCIgaXMgYSBwcmVwcm9jZXNzb3IgbWFjcm8gd2hvc2UgZXhwYW5zaW9uIGxlYWRzIHRvCitjb21waWxhdGlvbiBlcnJvcnMuCisKK0ZpeGVzOgorCit8IEluIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi9naXQvc3JjL3VuemNrLmM6MzE6Cit8IC4uL2dpdC9zcmMvdW56Y2suYzogSW4gZnVuY3Rpb24gJ3BhcnNlX29wdCc6Cit8IC4uL2dpdC9zcmMvdW56Y2suYzo3ODoyNDogZXJyb3I6IGV4cGVjdGVkIGlkZW50aWZpZXIgYmVmb3JlICcoJyB0b2tlbgorfCAgICA3OCB8ICAgICAgICAgICAgIGFyZ3VtZW50cy0+c3Rkb3V0ID0gdHJ1ZTsKK3wgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fgorfCAuLi9naXQvc3JjL3VuemNrLmM6IEluIGZ1bmN0aW9uICdtYWluJzoKK3wgLi4vZ2l0L3NyYy91bnpjay5jOjE0MToyMDogZXJyb3I6IGV4cGVjdGVkIGlkZW50aWZpZXIgYmVmb3JlICcoJyB0b2tlbgorfCAgIDE0MSB8ICAgICBpZighKGFyZ3VtZW50cy5zdGRvdXQpKSB7Cit8ICAgICAgIHwgICAgICAgICAgICAgICAgICAgIF5+fn5+fgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3pjaHVuay96Y2h1bmsvcHVsbC8yM10KKworU2lnbmVkLW9mZi1ieTogUGllcnJlLUplYW4gVGV4aWVyIDxwanRleGllckBrb25jZXB0by5pbz4KKy0tLQorIHNyYy91bnpjay5jIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3VuemNrLmMgYi9zcmMvdW56Y2suYworaW5kZXggOGQ2YzYyYS4uMDAyNDkyYyAxMDA2NDQKKy0tLSBhL3NyYy91bnpjay5jCisrKysgYi9zcmMvdW56Y2suYworQEAgLTU4LDcgKzU4LDcgQEAgc3RydWN0IGFyZ3VtZW50cyB7CisgICBjaGFyICphcmdzWzFdOworICAgemNrX2xvZ190eXBlIGxvZ19sZXZlbDsKKyAgIGJvb2wgZGljdDsKKy0gIGJvb2wgc3Rkb3V0OworKyAgYm9vbCBzdGRPdXQ7CisgICBib29sIGV4aXQ7CisgfTsKKyAKK0BAIC03NSw3ICs3NSw3IEBAIHN0YXRpYyBlcnJvcl90IHBhcnNlX29wdCAoaW50IGtleSwgY2hhciAqYXJnLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqc3RhdGUpIHsKKyAgICAgICAgICAgICAgICAgYXJndW1lbnRzLT5sb2dfbGV2ZWwgPSBaQ0tfTE9HX0RERUJVRzsKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIGNhc2UgJ2MnOgorLSAgICAgICAgICAgIGFyZ3VtZW50cy0+c3Rkb3V0ID0gdHJ1ZTsKKysgICAgICAgICAgICBhcmd1bWVudHMtPnN0ZE91dCA9IHRydWU7CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICBjYXNlICdWJzoKKyAgICAgICAgICAgICB2ZXJzaW9uKCk7CitAQCAtMTM4LDcgKzEzOCw3IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CisgICAgICAgICBzbnByaW50ZihvdXRfbmFtZSArIHN0cmxlbihiYXNlX25hbWUpIC0gNCwgNywgIi56ZGljdCIpOworIAorICAgICBpbnQgZHN0X2ZkID0gU1RET1VUX0ZJTEVOTzsKKy0gICAgaWYoIWFyZ3VtZW50cy5zdGRvdXQpIHsKKysgICAgaWYoIWFyZ3VtZW50cy5zdGRPdXQpIHsKKyAgICAgICAgIGRzdF9mZCA9IG9wZW4ob3V0X25hbWUsIE9fVFJVTkMgfCBPX1dST05MWSB8IE9fQ1JFQVQsIDA2NjYpOworICAgICAgICAgaWYoZHN0X2ZkIDwgMCkgeworICAgICAgICAgICAgIGRwcmludGYoU1RERVJSX0ZJTEVOTywgIlVuYWJsZSB0byBvcGVuICVzIiwgb3V0X25hbWUpOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC96Y2h1bmsvemNodW5rXzEuMS41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvemNodW5rL3pjaHVua18xLjEuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzU0MTJmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvemNodW5rL3pjaHVua18xLjEuNS5iYgpAQCAtMCwwICsxLDI2IEBACitERVNDUklQVElPTiA9ICJBIGZpbGUgZm9ybWF0IGRlc2lnbmVkIGZvciBoaWdobHkgZWZmaWNpZW50IGRlbHRhcyB3aGlsZSBtYWludGFpbmluZyBnb29kIGNvbXByZXNzaW9uIgorQVVUSE9SID0gIkpvbmF0aGFuIERpZXRlciIKKworTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jZDZlNTkwMjgyMDEwY2U5MGE5NGVmMjVkZDMxNDEwZiIKKworU1JDX1VSSSA9ICIgXAorCWdpdDovL2dpdGh1Yi5jb20vemNodW5rL3pjaHVuay5naXQ7cHJvdG9jb2w9aHR0cHMgXAorCWZpbGU6Ly8wMDAxLXpjay5oLWZpeC1idWlsZC1vbi1tdXNsLnBhdGNoIFwKKwlmaWxlOi8vMDAwMi11bnpjay1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2ggXAorCSIKKworU1JDUkVWID0gImMwMWJmMTJmZWVkZTc5Mjk4MmYxNjVmNTJmNGE2YzU3M2UzYThjMTciCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitERVBFTkRTID0gIlwKKyAgICBjdXJsIFwKKyAgICB6c3RkIFwKKyAgICAiCisKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIgorTERGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbGFyZ3AiCisKK2luaGVyaXQgbWVzb24KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvY3VuaXQvY3VuaXRfMi4xLTMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9jdW5pdC9jdW5pdF8yLjEtMy5iYgppbmRleCA5OGYyY2FjLi5iYWJmODA0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9jdW5pdC9jdW5pdF8yLjEtMy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9jdW5pdC9jdW5pdF8yLjEtMy5iYgpAQCAtMTEsNiArMTEsOCBAQAogU1JDX1VSSVttZDVzdW1dID0gImI1ZjFhOWY2MDkzODY5YzA3MGM2ZTRhOTQ1MGNjMTBjIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImY1YjI5MTM3Zjg0NWJiMDhiNzdlYzYwNTg0ZmRiNzI4YjRlNThmMTAyM2U2ZjI0OWE0NjRlZmE0OWE0MGYyMTQiCiAKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2N1bml0L2ZpbGVzL3JlbGVhc2VzIgorCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcmVtb3ZlLWxpYnRvb2wKIAogRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLW1lbXRyYWNlIC0tZW5hYmxlLWF1dG9tYXRlZCAtLWVuYWJsZS1iYXNpYyAtLWVuYWJsZS1jb25zb2xlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvY3h4dGVzdC9jeHh0ZXN0XzQuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2N4eHRlc3QvY3h4dGVzdF80LjQuYmIKaW5kZXggMzQyZmNjZi4uMjUyZWVhMyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvY3h4dGVzdC9jeHh0ZXN0XzQuNC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9jeHh0ZXN0L2N4eHRlc3RfNC40LmJiCkBAIC0xMCw3ICsxMCw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9jeHh0ZXN0LSR7UFZ9L3B5dGhvbiIKIAotaW5oZXJpdCBkaXN0dXRpbHMKK2luaGVyaXQgZGlzdHV0aWxzMwogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKICAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvY29uZi9sYXllci5jb25mIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL2NvbmYvbGF5ZXIuY29uZgppbmRleCAyYzczMGU0Li4xMzYxZmUwIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvY29uZi9sYXllci5jb25mCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9jb25mL2xheWVyLmNvbmYKQEAgLTE1LDQgKzE1LDQgQEAKIAogTEFZRVJERVBFTkRTX3BlcmwtbGF5ZXIgPSAiY29yZSBvcGVuZW1iZWRkZWQtbGF5ZXIiCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF9wZXJsLWxheWVyID0gInRodWQgd2FycmlvciB6ZXVzIgorTEFZRVJTRVJJRVNfQ09NUEFUX3BlcmwtbGF5ZXIgPSAidGh1ZCB3YXJyaW9yIHpldXMgZHVuZmVsbCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY2dpL2xpYmNnaS1wZXJsXzQuNDQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmNnaS9saWJjZ2ktcGVybF80LjQ0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGUxODdkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY2dpL2xpYmNnaS1wZXJsXzQuNDQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJDR0kucG0gaXMgYSBzdGFibGUsIGNvbXBsZXRlIGFuZCBtYXR1cmUgc29sdXRpb24gZm9yIHByb2Nlc3NpbmcgYW5kIHByZXBhcmluZyBcCi1IVFRQIHJlcXVlc3RzIGFuZCByZXNwb25zZXMuIE1ham9yIGZlYXR1cmVzIGluY2x1ZGluZyBwcm9jZXNzaW5nIGZvcm0gXAotc3VibWlzc2lvbnMsIGZpbGUgdXBsb2FkcywgcmVhZGluZyBhbmQgd3JpdGluZyBjb29raWVzLCBxdWVyeSBzdHJpbmcgZ2VuZXJhdGlvbiBcCi1hbmQgbWFuaXB1bGF0aW9uLCBhbmQgcHJvY2Vzc2luZyBhbmQgcHJlcGFyaW5nIEhUVFAgaGVhZGVycy4iCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35sZWVqby9DR0ktNC4yOC9saWIvQ0dJLnBvZCIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMi4wIHwgR1BMLTIuMCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NDE1ZmM0OWFiZWQyNzI4Zjk0ODBjZDMyYzhkNjdiZWIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvTC9MRS9MRUVKTy9DR0ktJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmNiZTU2MGZkYWRiYjhiOTIzNzc0NGUzOWJiZmMzZWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTI0MzVmYjdlYmQzNTg1YzQ3YjZkNjBlZTRmNWM3ZDZhN2MxMTRhMjgyN2QyYjVhY2YzZDYyYWE5ZmNmMTIwOCIKLQotUyA9ICIke1dPUktESVJ9L0NHSS0ke1BWfSIKLQotaW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICBsaWJodG1sLXBhcnNlci1wZXJsIFwKLSAgICBwZXJsLW1vZHVsZS1iYXNlIFwKLSAgICBwZXJsLW1vZHVsZS1kZXByZWNhdGUgXAotICAgIHBlcmwtbW9kdWxlLWlmIFwKLSIKLQotZG9faW5zdGFsbF9wcmVwZW5kKCkgewotICAgICMgcmVxdWlyZXMgIi1UIiAodGFpbnQpIGNvbW1hbmQgbGluZSBvcHRpb24KLSAgICBybSAtcmYgJHtCfS90L3B1c2gudAotICAgIHJtIC1yZiAke0J9L3QvdXRmOC50Ci0gICAgIyB0ZXN0cyBidWlsZGluZyBvZiBkb2NzCi0gICAgcm0gLXJmICR7Qn0vdC9jb21waWxlc19wb2QudAotfQotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKLSAgICBsaWJ0ZXN0LWRlZXAtcGVybCBcCi0gICAgbGlidGVzdC13YXJuLXBlcmwgXAotICAgIHBlcmwtbW9kdWxlLWJ5dGVzIFwKLSAgICBwZXJsLW1vZHVsZS1maWxlLWZpbmQgXAotICAgIHBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgXAotICAgIHBlcmwtbW9kdWxlLWZpbmRiaW4gXAotICAgIHBlcmwtbW9kdWxlLWxpYiBcCi0gICAgcGVybC1tb2R1bGUtcGVybGlvIFwKLSAgICBwZXJsLW1vZHVsZS1wZXJsaW8tc2NhbGFyIFwKLSAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAotICAgIHBlcmwtbW9kdWxlLXV0ZjggXAotIgotCi1SUFJPVklERVNfJHtQTn0gKz0gInBlcmwtbW9kdWxlLWNnaSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmNnaS9saWJjZ2ktcGVybF80LjQ2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjZ2kvbGliY2dpLXBlcmxfNC40Ni5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2VjNzM3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjZ2kvbGliY2dpLXBlcmxfNC40Ni5iYgpAQCAtMCwwICsxLDUxIEBACitERVNDUklQVElPTiA9ICJDR0kucG0gaXMgYSBzdGFibGUsIGNvbXBsZXRlIGFuZCBtYXR1cmUgc29sdXRpb24gZm9yIHByb2Nlc3NpbmcgYW5kIHByZXBhcmluZyBcCitIVFRQIHJlcXVlc3RzIGFuZCByZXNwb25zZXMuIE1ham9yIGZlYXR1cmVzIGluY2x1ZGluZyBwcm9jZXNzaW5nIGZvcm0gXAorc3VibWlzc2lvbnMsIGZpbGUgdXBsb2FkcywgcmVhZGluZyBhbmQgd3JpdGluZyBjb29raWVzLCBxdWVyeSBzdHJpbmcgZ2VuZXJhdGlvbiBcCithbmQgbWFuaXB1bGF0aW9uLCBhbmQgcHJvY2Vzc2luZyBhbmQgcHJlcGFyaW5nIEhUVFAgaGVhZGVycy4iCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35sZWVqby9DR0ktNC4yOC9saWIvQ0dJLnBvZCIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMi4wIHwgR1BMLTIuMCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NDE1ZmM0OWFiZWQyNzI4Zjk0ODBjZDMyYzhkNjdiZWIiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvTC9MRS9MRUVKTy9DR0ktJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzJhZTQ0M2RlNzhhNjlkODVlMzkzMWM4YzI5NTk2ZDEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzg4OTk4ZGRjMzNjYTM4MmU1ZDdjZTcyYzZjMGVhMWQ4MzY2YzkzMDY3MzcxZmUyZjE0MjM5ZGRlYTJlNDI5OCIKKworUyA9ICIke1dPUktESVJ9L0NHSS0ke1BWfSIKKworaW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICBsaWJodG1sLXBhcnNlci1wZXJsIFwKKyAgICBwZXJsLW1vZHVsZS1iYXNlIFwKKyAgICBwZXJsLW1vZHVsZS1kZXByZWNhdGUgXAorICAgIHBlcmwtbW9kdWxlLWlmIFwKKyIKKworZG9faW5zdGFsbF9wcmVwZW5kKCkgeworICAgICMgcmVxdWlyZXMgIi1UIiAodGFpbnQpIGNvbW1hbmQgbGluZSBvcHRpb24KKyAgICBybSAtcmYgJHtCfS90L3B1c2gudAorICAgIHJtIC1yZiAke0J9L3QvdXRmOC50CisgICAgIyB0ZXN0cyBidWlsZGluZyBvZiBkb2NzCisgICAgcm0gLXJmICR7Qn0vdC9jb21waWxlc19wb2QudAorfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKyAgICBsaWJ0ZXN0LWRlZXAtcGVybCBcCisgICAgbGlidGVzdC13YXJuLXBlcmwgXAorICAgIHBlcmwtbW9kdWxlLWJ5dGVzIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLWZpbmQgXAorICAgIHBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgXAorICAgIHBlcmwtbW9kdWxlLWZpbmRiaW4gXAorICAgIHBlcmwtbW9kdWxlLWxpYiBcCisgICAgcGVybC1tb2R1bGUtcGVybGlvIFwKKyAgICBwZXJsLW1vZHVsZS1wZXJsaW8tc2NhbGFyIFwKKyAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAorICAgIHBlcmwtbW9kdWxlLXV0ZjggXAorIgorCitSUFJPVklERVNfJHtQTn0gKz0gInBlcmwtbW9kdWxlLWNnaSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmNvbmZpZy9saWJjb25maWctYXV0b2NvbmYtcGVybF8wLjMxOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY29uZmlnL2xpYmNvbmZpZy1hdXRvY29uZi1wZXJsXzAuMzE4LmJiCmluZGV4IGU0ZjhmZTcuLmFmZDI2ZmEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY29uZmlnL2xpYmNvbmZpZy1hdXRvY29uZi1wZXJsXzAuMzE4LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY29uZmlnL2xpYmNvbmZpZy1hdXRvY29uZi1wZXJsXzAuMzE4LmJiCkBAIC0zNiw2ICszNiw2IEBACiAKIFMgPSAiJHtXT1JLRElSfS9Db25maWctQXV0b0NvbmYtJHtQVn0iCiAKLWluaGVyaXQgY3BhbiBwdGVzdC1wZXJsIGFsbGFyY2gKK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZW5jb2RlL2xpYmVuY29kZS1wZXJsXzMuMDIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmVuY29kZS9saWJlbmNvZGUtcGVybF8zLjAyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzJiYzAyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZW5jb2RlL2xpYmVuY29kZS1wZXJsXzMuMDIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotIyBOT1RFOgotIyAgICBZb3Ugc2hvdWxkIHVzZSBwZXJsLW1vZHVsZS1lbmNvZGUgcmF0aGVyIHRoYW4gdGhpcyBwYWNrYWdlCi0jICAgIHVubGVzcyB5b3Ugc3BlY2lmaWNhbGx5IG5lZWQgYSB2ZXJzaW9uIG5ld2VyIHRoYW4gd2hhdCBpcwotIyAgICBwcm92aWRlZCBieSBwZXJsLgotCi1TVU1NQVJZID0gIkVuY29kZSAtIGNoYXJhY3RlciBlbmNvZGluZ3MiCi1ERVNDUklQVElPTiA9ICJUaGUgXCJFbmNvZGVcIiBtb2R1bGUgcHJvdmlkZXMgdGhlIGludGVyZmFjZXMgYmV0d2VlbiBcCi1QZXJsJ3Mgc3RyaW5ncyBhbmQgdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gIFBlcmwgc3RyaW5ncyBhcmUgc2VxdWVuY2VzIFwKLW9mIGNoYXJhY3RlcnMuIgotCi1BVVRIT1IgPSAiRGFuIEtvZ2FpIDxkYW5rb2dhaStjcGFuQGdtYWlsLmNvbT4iCi1IT01FUEFHRSA9ICJodHRwczovL21ldGFjcGFuLm9yZy9yZWxlYXNlL0VuY29kZSIKLVNFQ1RJT04gPSAibGliIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL01FVEEuanNvbjtiZWdpbmxpbmU9ODtlbmRsaW5lPTEwO21kNT1iMTJlM2JlMWUxN2E3ZTk5Y2E0ZjQyOWZmMzJjMjhiNSIKLQotU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0QvREEvREFOS09HQUkvRW5jb2RlLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZWIwN2JhNmRiMDJkNWI5ODIzMTZlMWRkMDVmNjhiZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ODY1YmU0OTUxODcwZjYyZjQzNzIyODE4ZDA3NmQ3NzI0MzA2Yzc1YzhmMjY4MzQ2YjI4MjM1MWNiYzgyMGE4IgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJFbmNvZGVcLSg/UDxwdmVyPihcZCtcLlxkKykpKD8hX1xkKykudGFyIgotCi1TID0gIiR7V09SS0RJUn0vRW5jb2RlLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4gcHRlc3QtcGVybAotCi1kb19pbnN0YWxsX3ByZXBlbmQoKSB7Ci0gICAgIyBSZXF1aXJlcyAiLVQiICh0YWludCkgb3B0aW9uIG9uIGNvbW1hbmQgbGluZQotICAgIHJtIC1yZiAke0J9L3QvdGFpbnQudAotICAgICMgQ2lyY3VsYXIgZGVwZW5kZW5jeSBvZiBwZXJsLW1vZHVsZS1vcGVuIG9uIHBlcmwtbW9kdWxlLWVuY29kZQotICAgICMgYW5kIHdlIGNhbm5vdCBsb2FkIHBlcmwtbW9kdWxlLWVuY29kZSBiZWNhdXNlIHdlIGFyZSBwcm92aWRpbmcKLSAgICAjIGFuIGFsdGVybmF0aXZlCi0gICAgcm0gLXJmICR7Qn0vdC91c2UtRW5jb2RlLUFsaWFzLnQKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLSAgICBta2RpciAke0R9JHtQVEVTVF9QQVRIfS9iaW4KLSAgICBjcCAtciAke0J9L2Jpbi9waWNvbnYgJHtEfSR7UFRFU1RfUEFUSH0vYmluCi0gICAgY3AgLXIgJHtCfS9ibGliICR7RH0ke1BURVNUX1BBVEh9Ci0gICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke1BURVNUX1BBVEh9Ci19Ci0KLSMgIGZpbGUgL3Vzci9iaW4vZW5jMnhzIGZyb20gaW5zdGFsbCBvZiBwZXJsLW1pc2MtNS4yNC4xLXIwLmk1ODYgY29uZmxpY3RzIHdpdGggZmlsZSBmcm9tIHBhY2thZ2UgbGliZW5jb2RlLXBlcmwtMi45NC1yMC5pNTg2Ci0jICBmaWxlIC91c3IvYmluL2VuY2d1ZXNzIGZyb20gaW5zdGFsbCBvZiBwZXJsLW1pc2MtNS4yNC4xLXIwLmk1ODYgY29uZmxpY3RzIHdpdGggZmlsZSBmcm9tIHBhY2thZ2UgbGliZW5jb2RlLXBlcmwtMi45NC1yMC5pNTg2Ci0jICBmaWxlIC91c3IvYmluL3BpY29udiBmcm9tIGluc3RhbGwgb2YgcGVybC1taXNjLTUuMjQuMS1yMC5pNTg2IGNvbmZsaWN0cyB3aXRoIGZpbGUgZnJvbSBwYWNrYWdlIGxpYmVuY29kZS1wZXJsLTIuOTQtcjAuaTU4NgotUkNPTkZMSUNUU18ke1BOfSA9ICJwZXJsLW1pc2MgcGVybC1tb2R1bGUtZW5jb2RlIgotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICBwZXJsLW1vZHVsZS1ieXRlcyBcCi0gICAgcGVybC1tb2R1bGUtY29uc3RhbnQgXAotICAgIHBlcmwtbW9kdWxlLXBhcmVudCBcCi0gICAgcGVybC1tb2R1bGUtc3RvcmFibGUgXAotICAgIHBlcmwtbW9kdWxlLXhzbG9hZGVyIFwKLSAgICAiCi0KLVJQUk9WSURFU18ke1BOfSArPSAiIFwKLSAgICBsaWJlbmNvZGUtYWxpYXMtcGVybCBcCi0gICAgbGliZW5jb2RlLWJ5dGUtcGVybCBcCi0gICAgbGliZW5jb2RlLWNqa2NvbnN0YW50cy1wZXJsIFwKLSAgICBsaWJlbmNvZGUtY24tcGVybCBcCi0gICAgbGliZW5jb2RlLWNuLWh6LXBlcmwgXAotICAgIGxpYmVuY29kZS1jb25maWctcGVybCBcCi0gICAgbGliZW5jb2RlLWViY2RpYy1wZXJsIFwKLSAgICBsaWJlbmNvZGUtZW5jb2Rlci1wZXJsIFwKLSAgICBsaWJlbmNvZGUtZW5jb2RpbmctcGVybCBcCi0gICAgbGliZW5jb2RlLWdzbTAzMzgtcGVybCBcCi0gICAgbGliZW5jb2RlLWd1ZXNzLXBlcmwgXAotICAgIGxpYmVuY29kZS1qcC1wZXJsIFwKLSAgICBsaWJlbmNvZGUtanAtaDJ6LXBlcmwgXAotICAgIGxpYmVuY29kZS1qcC1qaXM3LXBlcmwgXAotICAgIGxpYmVuY29kZS1rci1wZXJsIFwKLSAgICBsaWJlbmNvZGUta3ItMjAyMl9rci1wZXJsIFwKLSAgICBsaWJlbmNvZGUtbWltZS1oZWFkZXItcGVybCBcCi0gICAgbGliZW5jb2RlLW1pbWUtbmFtZS1wZXJsIFwKLSAgICBsaWJlbmNvZGUtc3ltYm9sLXBlcmwgXAotICAgIGxpYmVuY29kZS10dy1wZXJsIFwKLSAgICBsaWJlbmNvZGUtdW5pY29kZS1wZXJsIFwKLSAgICBsaWJlbmNvZGUtdW5pY29kZS11dGY3LXBlcmwgXAotICAgIGxpYmVuY29kaW5nLXBlcmwgXAotICAgIGxpYmVuY29kZS1pbnRlcm5hbC1wZXJsIFwKLSAgICBsaWJlbmNvZGUtbWltZS1oZWFkZXItaXNvXzIwMjJfanAtcGVybCBcCi0gICAgbGliZW5jb2RlLXV0ZjgtcGVybCBcCi0gICAgbGliZW5jb2RlLXV0Zl9lYmNkaWMtcGVybCBcCi0gICAgIgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKLSAgICBwZXJsLW1vZHVsZS1ibGliIFwKLSAgICBwZXJsLW1vZHVsZS1jaGFybmFtZXMgXAotICAgIHBlcmwtbW9kdWxlLWZpbGUtY29tcGFyZSBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1jb3B5IFwKLSAgICBwZXJsLW1vZHVsZS1maWxlaGFuZGxlIFwKLSAgICBwZXJsLW1vZHVsZS1maW5kYmluIFwKLSAgICBwZXJsLW1vZHVsZS1pbnRlZ2VyIFwKLSAgICBwZXJsLW1vZHVsZS1pby1zZWxlY3QgXAotICAgIHBlcmwtbW9kdWxlLWlwYy1vcGVuMyBcCi0gICAgcGVybC1tb2R1bGUtbWltZS1iYXNlNjQgXAotICAgIHBlcmwtbW9kdWxlLXBlcmxpbyBcCi0gICAgcGVybC1tb2R1bGUtcGVybGlvLWVuY29kaW5nIFwKLSAgICBwZXJsLW1vZHVsZS1wZXJsaW8tc2NhbGFyIFwKLSAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAotICAgIHBlcmwtbW9kdWxlLXRpZS1zY2FsYXIgXAotICAgIHBlcmwtbW9kdWxlLXVuaWNvcmUgXAotICAgIHBlcmwtbW9kdWxlLXV0ZjggXAotICAgICIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmVuY29kZS9saWJlbmNvZGUtcGVybF8zLjA1LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJlbmNvZGUvbGliZW5jb2RlLXBlcmxfMy4wNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjQzMGU5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJlbmNvZGUvbGliZW5jb2RlLXBlcmxfMy4wNS5iYgpAQCAtMCwwICsxLDEwNiBAQAorIyBOT1RFOgorIyAgICBZb3Ugc2hvdWxkIHVzZSBwZXJsLW1vZHVsZS1lbmNvZGUgcmF0aGVyIHRoYW4gdGhpcyBwYWNrYWdlCisjICAgIHVubGVzcyB5b3Ugc3BlY2lmaWNhbGx5IG5lZWQgYSB2ZXJzaW9uIG5ld2VyIHRoYW4gd2hhdCBpcworIyAgICBwcm92aWRlZCBieSBwZXJsLgorCitTVU1NQVJZID0gIkVuY29kZSAtIGNoYXJhY3RlciBlbmNvZGluZ3MiCitERVNDUklQVElPTiA9ICJUaGUgXCJFbmNvZGVcIiBtb2R1bGUgcHJvdmlkZXMgdGhlIGludGVyZmFjZXMgYmV0d2VlbiBcCitQZXJsJ3Mgc3RyaW5ncyBhbmQgdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gIFBlcmwgc3RyaW5ncyBhcmUgc2VxdWVuY2VzIFwKK29mIGNoYXJhY3RlcnMuIgorCitBVVRIT1IgPSAiRGFuIEtvZ2FpIDxkYW5rb2dhaStjcGFuQGdtYWlsLmNvbT4iCitIT01FUEFHRSA9ICJodHRwczovL21ldGFjcGFuLm9yZy9yZWxlYXNlL0VuY29kZSIKK1NFQ1RJT04gPSAibGliIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL01FVEEuanNvbjtiZWdpbmxpbmU9ODtlbmRsaW5lPTEwO21kNT1iMTJlM2JlMWUxN2E3ZTk5Y2E0ZjQyOWZmMzJjMjhiNSIKKworU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0QvREEvREFOS09HQUkvRW5jb2RlLSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxMzdhZWYwMGJmYzNkNWNiOTcwOTZhZDk4NWQzMTUzYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMGY1MWUwM2NkNzg3YTNlMjYwMjY1MDNlODA2YWZkYzAzZjM4MjNhZTM1NTFjNzExYTliMDRhZDkwMWE4Nzk0IgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJFbmNvZGVcLSg/UDxwdmVyPihcZCtcLlxkKykpKD8hX1xkKykudGFyIgorCitTID0gIiR7V09SS0RJUn0vRW5jb2RlLSR7UFZ9IgorCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAorCitkb19pbnN0YWxsX3ByZXBlbmQoKSB7CisgICAgIyBSZXF1aXJlcyAiLVQiICh0YWludCkgb3B0aW9uIG9uIGNvbW1hbmQgbGluZQorICAgIHJtIC1yZiAke0J9L3QvdGFpbnQudAorICAgICMgQ2lyY3VsYXIgZGVwZW5kZW5jeSBvZiBwZXJsLW1vZHVsZS1vcGVuIG9uIHBlcmwtbW9kdWxlLWVuY29kZQorICAgICMgYW5kIHdlIGNhbm5vdCBsb2FkIHBlcmwtbW9kdWxlLWVuY29kZSBiZWNhdXNlIHdlIGFyZSBwcm92aWRpbmcKKyAgICAjIGFuIGFsdGVybmF0aXZlCisgICAgcm0gLXJmICR7Qn0vdC91c2UtRW5jb2RlLUFsaWFzLnQKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICBta2RpciAke0R9JHtQVEVTVF9QQVRIfS9iaW4KKyAgICBjcCAtciAke0J9L2Jpbi9waWNvbnYgJHtEfSR7UFRFU1RfUEFUSH0vYmluCisgICAgY3AgLXIgJHtCfS9ibGliICR7RH0ke1BURVNUX1BBVEh9CisgICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke1BURVNUX1BBVEh9Cit9CisKKyMgIGZpbGUgL3Vzci9iaW4vZW5jMnhzIGZyb20gaW5zdGFsbCBvZiBwZXJsLW1pc2MtNS4yNC4xLXIwLmk1ODYgY29uZmxpY3RzIHdpdGggZmlsZSBmcm9tIHBhY2thZ2UgbGliZW5jb2RlLXBlcmwtMi45NC1yMC5pNTg2CisjICBmaWxlIC91c3IvYmluL2VuY2d1ZXNzIGZyb20gaW5zdGFsbCBvZiBwZXJsLW1pc2MtNS4yNC4xLXIwLmk1ODYgY29uZmxpY3RzIHdpdGggZmlsZSBmcm9tIHBhY2thZ2UgbGliZW5jb2RlLXBlcmwtMi45NC1yMC5pNTg2CisjICBmaWxlIC91c3IvYmluL3BpY29udiBmcm9tIGluc3RhbGwgb2YgcGVybC1taXNjLTUuMjQuMS1yMC5pNTg2IGNvbmZsaWN0cyB3aXRoIGZpbGUgZnJvbSBwYWNrYWdlIGxpYmVuY29kZS1wZXJsLTIuOTQtcjAuaTU4NgorUkNPTkZMSUNUU18ke1BOfSA9ICJwZXJsLW1pc2MgcGVybC1tb2R1bGUtZW5jb2RlIgorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICBwZXJsLW1vZHVsZS1ieXRlcyBcCisgICAgcGVybC1tb2R1bGUtY29uc3RhbnQgXAorICAgIHBlcmwtbW9kdWxlLXBhcmVudCBcCisgICAgcGVybC1tb2R1bGUtc3RvcmFibGUgXAorICAgIHBlcmwtbW9kdWxlLXhzbG9hZGVyIFwKKyAgICAiCisKK1JQUk9WSURFU18ke1BOfSArPSAiIFwKKyAgICBsaWJlbmNvZGUtYWxpYXMtcGVybCBcCisgICAgbGliZW5jb2RlLWJ5dGUtcGVybCBcCisgICAgbGliZW5jb2RlLWNqa2NvbnN0YW50cy1wZXJsIFwKKyAgICBsaWJlbmNvZGUtY24tcGVybCBcCisgICAgbGliZW5jb2RlLWNuLWh6LXBlcmwgXAorICAgIGxpYmVuY29kZS1jb25maWctcGVybCBcCisgICAgbGliZW5jb2RlLWViY2RpYy1wZXJsIFwKKyAgICBsaWJlbmNvZGUtZW5jb2Rlci1wZXJsIFwKKyAgICBsaWJlbmNvZGUtZW5jb2RpbmctcGVybCBcCisgICAgbGliZW5jb2RlLWdzbTAzMzgtcGVybCBcCisgICAgbGliZW5jb2RlLWd1ZXNzLXBlcmwgXAorICAgIGxpYmVuY29kZS1qcC1wZXJsIFwKKyAgICBsaWJlbmNvZGUtanAtaDJ6LXBlcmwgXAorICAgIGxpYmVuY29kZS1qcC1qaXM3LXBlcmwgXAorICAgIGxpYmVuY29kZS1rci1wZXJsIFwKKyAgICBsaWJlbmNvZGUta3ItMjAyMl9rci1wZXJsIFwKKyAgICBsaWJlbmNvZGUtbWltZS1oZWFkZXItcGVybCBcCisgICAgbGliZW5jb2RlLW1pbWUtbmFtZS1wZXJsIFwKKyAgICBsaWJlbmNvZGUtc3ltYm9sLXBlcmwgXAorICAgIGxpYmVuY29kZS10dy1wZXJsIFwKKyAgICBsaWJlbmNvZGUtdW5pY29kZS1wZXJsIFwKKyAgICBsaWJlbmNvZGUtdW5pY29kZS11dGY3LXBlcmwgXAorICAgIGxpYmVuY29kaW5nLXBlcmwgXAorICAgIGxpYmVuY29kZS1pbnRlcm5hbC1wZXJsIFwKKyAgICBsaWJlbmNvZGUtbWltZS1oZWFkZXItaXNvXzIwMjJfanAtcGVybCBcCisgICAgbGliZW5jb2RlLXV0ZjgtcGVybCBcCisgICAgbGliZW5jb2RlLXV0Zl9lYmNkaWMtcGVybCBcCisgICAgIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKyAgICBwZXJsLW1vZHVsZS1ibGliIFwKKyAgICBwZXJsLW1vZHVsZS1jaGFybmFtZXMgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtY29tcGFyZSBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1jb3B5IFwKKyAgICBwZXJsLW1vZHVsZS1maWxlaGFuZGxlIFwKKyAgICBwZXJsLW1vZHVsZS1maW5kYmluIFwKKyAgICBwZXJsLW1vZHVsZS1pbnRlZ2VyIFwKKyAgICBwZXJsLW1vZHVsZS1pby1zZWxlY3QgXAorICAgIHBlcmwtbW9kdWxlLWlwYy1vcGVuMyBcCisgICAgcGVybC1tb2R1bGUtbWltZS1iYXNlNjQgXAorICAgIHBlcmwtbW9kdWxlLXBlcmxpbyBcCisgICAgcGVybC1tb2R1bGUtcGVybGlvLWVuY29kaW5nIFwKKyAgICBwZXJsLW1vZHVsZS1wZXJsaW8tc2NhbGFyIFwKKyAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAorICAgIHBlcmwtbW9kdWxlLXRpZS1zY2FsYXIgXAorICAgIHBlcmwtbW9kdWxlLXVuaWNvcmUgXAorICAgIHBlcmwtbW9kdWxlLXV0ZjggXAorICAgICIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmV4dHV0aWxzL2xpYmV4dHV0aWxzLWNwcGd1ZXNzLXBlcmxfMC4yMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZXh0dXRpbHMvbGliZXh0dXRpbHMtY3BwZ3Vlc3MtcGVybF8wLjIwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTQ4OTliLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZXh0dXRpbHMvbGliZXh0dXRpbHMtY3BwZ3Vlc3MtcGVybF8wLjIwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJFeHRVdGlsczo6Q3BwR3Vlc3MgLSBndWVzcyBDKysgY29tcGlsZXIgYW5kIGZsYWdzIgotREVTQ1JJUFRJT04gPSAiRXh0VXRpbHM6OkNwcEd1ZXNzIGF0dGVtcHRzIHRvIGd1ZXNzIHRoZSBzeXN0ZW0ncyBDKysgXAotY29tcGlsZXIgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIEMgY29tcGlsZXIgdGhhdCB5b3VyIHBlcmwgd2FzIGJ1aWx0IFwKLXdpdGguIFwKLUl0IGNhbiBnZW5lcmF0ZSB0aGUgbmVjZXNzYXJ5IG9wdGlvbnMgdG8gdGhlIE1vZHVsZTo6QnVpbGQgY29uc3RydWN0b3Igb3IgXAotdG8gRXh0VXRpbHM6Ok1ha2VNYWtlcidzIFdyaXRlTWFrZWZpbGUgZnVuY3Rpb24uIgotU0VDVElPTiA9ICJsaWJzIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35zbXVlbGxlci9FeHRVdGlscy1DcHBHdWVzcy8iCi0KLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTgxO2VuZGxpbmU9ODQ7bWQ1PTg0YzAzOTBiOTBlYThjNjcwMmNlNjU5YjY3YmVkNjk5IgotCi1TUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvRS9FVC9FVEovRXh0VXRpbHMtQ3BwR3Vlc3MtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImQ2ZGRkNTU2OGM4NGY0YzdiMTFiOTk2YjY1ZjJlYTNiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEyYmY5MTQ3MDg4ODUyNjViNWMzYjBiOGJmYjBhOTI5NGNmMTMyZDVjYTMwZDU0YmRhMGUwMDMzNWZiNDNlNjEiCi0KLVMgPSAiJHtXT1JLRElSfS9FeHRVdGlscy1DcHBHdWVzcy0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCi0KLWRvX2luc3RhbGwgKCkgewotICAgICAgICBjcGFuX2RvX2luc3RhbGwKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAiIGxpYmNhcHR1cmUtdGlueS1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1zY2FsYXItdXRpbCBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtaW8tZmlsZSBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtbWFrZW1ha2VyIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXNwZWMgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jYXJwIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXRlbXAgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWxpYiBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJleHR1dGlscy9saWJleHR1dGlscy1jcHBndWVzcy1wZXJsXzAuMjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmV4dHV0aWxzL2xpYmV4dHV0aWxzLWNwcGd1ZXNzLXBlcmxfMC4yMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTFiNGQyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJleHR1dGlscy9saWJleHR1dGlscy1jcHBndWVzcy1wZXJsXzAuMjEuYmIKQEAgLTAsMCArMSwzNyBAQAorU1VNTUFSWSA9ICJFeHRVdGlsczo6Q3BwR3Vlc3MgLSBndWVzcyBDKysgY29tcGlsZXIgYW5kIGZsYWdzIgorREVTQ1JJUFRJT04gPSAiRXh0VXRpbHM6OkNwcEd1ZXNzIGF0dGVtcHRzIHRvIGd1ZXNzIHRoZSBzeXN0ZW0ncyBDKysgXAorY29tcGlsZXIgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIEMgY29tcGlsZXIgdGhhdCB5b3VyIHBlcmwgd2FzIGJ1aWx0IFwKK3dpdGguIFwKK0l0IGNhbiBnZW5lcmF0ZSB0aGUgbmVjZXNzYXJ5IG9wdGlvbnMgdG8gdGhlIE1vZHVsZTo6QnVpbGQgY29uc3RydWN0b3Igb3IgXAordG8gRXh0VXRpbHM6Ok1ha2VNYWtlcidzIFdyaXRlTWFrZWZpbGUgZnVuY3Rpb24uIgorU0VDVElPTiA9ICJsaWJzIgorCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35zbXVlbGxlci9FeHRVdGlscy1DcHBHdWVzcy8iCisKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTgxO2VuZGxpbmU9ODQ7bWQ1PTg0YzAzOTBiOTBlYThjNjcwMmNlNjU5YjY3YmVkNjk5IgorCitTUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvRS9FVC9FVEovRXh0VXRpbHMtQ3BwR3Vlc3MtJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjYyYmRmNzMxYmNiZTk4OGQwNzQ4NjgzNmUxMTU4NWY3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZmNjI5MTc4MzIxYTFlNTkxYjgzZjgwOTcxMjU5M2VhZTQ0MDhhNDEzYWE0NDg2NTRiY2U1OWIxNTZmMjQxNTMiCisKK1MgPSAiJHtXT1JLRElSfS9FeHRVdGlscy1DcHBHdWVzcy0ke1BWfSIKKworaW5oZXJpdCBjcGFuCisKK2RvX2luc3RhbGwgKCkgeworICAgICAgICBjcGFuX2RvX2luc3RhbGwKK30KKworUkRFUEVORFNfJHtQTn0gPSAiIGxpYmNhcHR1cmUtdGlueS1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1zY2FsYXItdXRpbCBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtaW8tZmlsZSBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtbWFrZW1ha2VyIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXNwZWMgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jYXJwIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXRlbXAgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWxpYiBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJmaWxlL2xpYmZpbGUtc2x1cnBlci1wZXJsXzAuMDEyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJmaWxlL2xpYmZpbGUtc2x1cnBlci1wZXJsXzAuMDEyLmJiCmluZGV4IGI2ODRhYmQuLjM2NzhhZDcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZmlsZS9saWJmaWxlLXNsdXJwZXItcGVybF8wLjAxMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmZpbGUvbGliZmlsZS1zbHVycGVyLXBlcmxfMC4wMTIuYmIKQEAgLTMxLDYgKzMxLDYgQEAKIAogUyA9ICIke1dPUktESVJ9L0ZpbGUtU2x1cnBlci0ke1BWfSIKIAotaW5oZXJpdCBjcGFuIGFsbGFyY2ggcHRlc3QtcGVybAoraW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmlvL2xpYmlvLXNvY2tldC1zc2wtcGVybF8yLjA2Ni5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliaW8vbGliaW8tc29ja2V0LXNzbC1wZXJsXzIuMDY2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjA5ODQ2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliaW8vbGliaW8tc29ja2V0LXNzbC1wZXJsXzIuMDY2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotU1VNTUFSWSA9ICJQZXJsIGxpYnJhcnkgZm9yIHRyYW5zcGFyZW50IFNTTCIKLURFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIGlzIGEgdHJ1ZSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciBJTzo6U29ja2V0OjpJTkVUIHRoYXQgXAotdXNlcyBTU0wgdG8gZW5jcnlwdCBkYXRhIGJlZm9yZSBpdCBpcyB0cmFuc2ZlcnJlZCB0byBhIHJlbW90ZSBzZXJ2ZXIgXAotb3IgY2xpZW50LiBJTzo6U29ja2V0OjpTU0wgc3VwcG9ydHMgYWxsIHRoZSBleHRyYSBmZWF0dXJlcyB0aGF0IG9uZSBcCi1uZWVkcyB0byB3cml0ZSBhIGZ1bGwtZmVhdHVyZWQgU1NMIGNsaWVudCBvciBzZXJ2ZXIgYXBwbGljYXRpb246IFwKLW11bHRpcGxlIFNTTCBjb250ZXh0cywgY2lwaGVyIHNlbGVjdGlvbiwgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uLCBhbmQgXAotU1NMIHZlcnNpb24gc2VsZWN0aW9uLiBBcyBhbiBleHRyYSBib251cywgaXQgd29ya3MgcGVyZmVjdGx5IHdpdGggXAotbW9kX3BlcmwuIgotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9kaXN0L0lPLVNvY2tldC1TU0wvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMHxHUEx2MSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9NRVRBLnltbDtiZWdpbmxpbmU9MTI7ZW5kbGluZT0xMjttZDU9OTYzY2UyODIyODM0Nzg3NWFjZTY4MmRlNTZlZWY4ZTgiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgbGlibmV0LXNzbGVheS1wZXJsIFwKLSAgICBwZXJsLW1vZHVsZS1hdXRvbG9hZGVyIFwKLSAgICBwZXJsLW1vZHVsZS1zY2FsYXItdXRpbCBcCi0gICAgcGVybC1tb2R1bGUtaW8tc29ja2V0IFwKLSIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9TL1NVL1NVTExSL0lPLVNvY2tldC1TU0wtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImVjZjk2Y2UyZmY5ZTA0YTAzYTJkMTAxYzc2Y2UxMDIwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBkNDcwNjQ3ODFhNTQ1MzA0ZDVkY2VhNWRmY2VlM2FjYzJlOTVhMzJlMWI0ODg0ZDgwNTA1Y2RlOGVlNmViY2QiCi0KLVMgPSAiJHtXT1JLRElSfS9JTy1Tb2NrZXQtU1NMLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4gcHRlc3QKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIG1rZGlyIC1wICR7RH0ke2RvY2Rpcn0vJHtQTn0vCi0gICAgY3AgJHtTfS9CVUdTICR7RH0ke2RvY2Rpcn0vJHtQTn0vCi0gICAgY3AgJHtTfS9DaGFuZ2VzICR7RH0ke2RvY2Rpcn0vJHtQTn0vCi0gICAgY3AgJHtTfS9SRUFETUUgJHtEfSR7ZG9jZGlyfS8ke1BOfS8KLSAgICBjcCAtcFJQICR7U30vZG9jcyAke0R9JHtkb2NkaXJ9LyR7UE59LwotICAgIGNwIC1wUlAgJHtTfS9jZXJ0cyAke0R9JHtkb2NkaXJ9LyR7UE59LwotICAgIGNwIC1wUlAgJHtTfS9leGFtcGxlICR7RH0ke2RvY2Rpcn0vJHtQTn0vCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotICAgIGNwIC1yICR7Qn0vdCAke0R9JHtQVEVTVF9QQVRIfQotICAgIGNwIC1yICR7Qn0vY2VydHMgJHtEfSR7UFRFU1RfUEFUSH0KLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmlvL2xpYmlvLXNvY2tldC1zc2wtcGVybF8yLjA2OC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliaW8vbGliaW8tc29ja2V0LXNzbC1wZXJsXzIuMDY4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjOTc4NmIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmlvL2xpYmlvLXNvY2tldC1zc2wtcGVybF8yLjA2OC5iYgpAQCAtMCwwICsxLDQ3IEBACitTVU1NQVJZID0gIlBlcmwgbGlicmFyeSBmb3IgdHJhbnNwYXJlbnQgU1NMIgorREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgaXMgYSB0cnVlIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIElPOjpTb2NrZXQ6OklORVQgdGhhdCBcCit1c2VzIFNTTCB0byBlbmNyeXB0IGRhdGEgYmVmb3JlIGl0IGlzIHRyYW5zZmVycmVkIHRvIGEgcmVtb3RlIHNlcnZlciBcCitvciBjbGllbnQuIElPOjpTb2NrZXQ6OlNTTCBzdXBwb3J0cyBhbGwgdGhlIGV4dHJhIGZlYXR1cmVzIHRoYXQgb25lIFwKK25lZWRzIHRvIHdyaXRlIGEgZnVsbC1mZWF0dXJlZCBTU0wgY2xpZW50IG9yIHNlcnZlciBhcHBsaWNhdGlvbjogXAorbXVsdGlwbGUgU1NMIGNvbnRleHRzLCBjaXBoZXIgc2VsZWN0aW9uLCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24sIGFuZCBcCitTU0wgdmVyc2lvbiBzZWxlY3Rpb24uIEFzIGFuIGV4dHJhIGJvbnVzLCBpdCB3b3JrcyBwZXJmZWN0bHkgd2l0aCBcCittb2RfcGVybC4iCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvSU8tU29ja2V0LVNTTC8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wfEdQTHYxKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL01FVEEueW1sO2JlZ2lubGluZT0xMjtlbmRsaW5lPTEyO21kNT05NjNjZTI4MjI4MzQ3ODc1YWNlNjgyZGU1NmVlZjhlOCIKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICBsaWJuZXQtc3NsZWF5LXBlcmwgXAorICAgIHBlcmwtbW9kdWxlLWF1dG9sb2FkZXIgXAorICAgIHBlcmwtbW9kdWxlLXNjYWxhci11dGlsIFwKKyAgICBwZXJsLW1vZHVsZS1pby1zb2NrZXQgXAorIgorCitTUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL1MvU1UvU1VMTFIvSU8tU29ja2V0LVNTTC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNDIzMGM4MjljODg3NTg4OTg0ODA5M2IyYjQ2YTcyODQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDQyMGZjMDA1NmYxODI3YjRkZDEyNDVlYWNjYTBkYTU2ZTIxODJiNGVmNmZjMDc4ZjEwN2RjNDNjM2ZiOGZmOSIKKworUyA9ICIke1dPUktESVJ9L0lPLVNvY2tldC1TU0wtJHtQVn0iCisKK2luaGVyaXQgY3BhbiBwdGVzdAorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgbWtkaXIgLXAgJHtEfSR7ZG9jZGlyfS8ke1BOfS8KKyAgICBjcCAke1N9L0JVR1MgJHtEfSR7ZG9jZGlyfS8ke1BOfS8KKyAgICBjcCAke1N9L0NoYW5nZXMgJHtEfSR7ZG9jZGlyfS8ke1BOfS8KKyAgICBjcCAke1N9L1JFQURNRSAke0R9JHtkb2NkaXJ9LyR7UE59LworICAgIGNwIC1wUlAgJHtTfS9kb2NzICR7RH0ke2RvY2Rpcn0vJHtQTn0vCisgICAgY3AgLXBSUCAke1N9L2NlcnRzICR7RH0ke2RvY2Rpcn0vJHtQTn0vCisgICAgY3AgLXBSUCAke1N9L2V4YW1wbGUgJHtEfSR7ZG9jZGlyfS8ke1BOfS8KK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICAgY3AgLXIgJHtCfS90ICR7RH0ke1BURVNUX1BBVEh9CisgICAgY3AgLXIgJHtCfS9jZXJ0cyAke0R9JHtQVEVTVF9QQVRIfQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibW9vL2xpYm1vby1wZXJsXzIuMDAzMDA2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtb28vbGlibW9vLXBlcmxfMi4wMDMwMDYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiZDBlYWUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtb28vbGlibW9vLXBlcmxfMi4wMDMwMDYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIk1vbyAtIE1pbmltYWxpc3QgT2JqZWN0IE9yaWVudGF0aW9uICh3aXRoIE1vb3NlIGNvbXBhdGliaWxpdHkpIgotREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgdXMgYW4gZXh0cmVtZWx5IGxpZ2h0LXdlaWdodCBzdWJzZXQgb2YgXCJNb29zZVwiIFwKLW9wdGltaXNlZCBmb3IgcmFwaWQgc3RhcnR1cCBhbmQgXCJwYXkgb25seSBmb3Igd2hhdCB5b3UgdXNlXCIuIgotCi1TRUNUSU9OID0gImxpYnMiCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9tZXRhcGFuLm9yZy9yZWxlYXNlL01vby8iCi0KLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTc0MjtlbmRsaW5lPTc4NzttZDU9MmVlNmE2MjhhMDRhZjA4ZDc1YmM3M2E4NmRhODZkNGEiCi0KLVNSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9IL0hBL0hBQVJHL01vby0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiNTNhZjdlNzg0OTQ5MmE4ZTM5OTRlZTM3OWQxMmUzNDgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmNiMjA5MmFiMThhNDUwMDViNWUyZTg0NDY1ZWJmM2E0OTk5ZDhlODJhNDNhMDlmNWE5NGQ4NTlhZTdmMjQ3MiIKLQotUyA9ICIke1dPUktESVJ9L01vby0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCi0KLVJERVBFTkRTXyR7UE59ID0gIiBsaWJjbGFzcy1tZXRob2QtbW9kaWZpZXJzLXBlcmwgXAotICAgICAgICAgICAgICAgICAgIGxpYmRldmVsLWdsb2JhbGRlc3RydWN0aW9uLXBlcmwgXAotICAgICAgICAgICAgICAgICAgIGxpYm1vZHVsZS1ydW50aW1lLXBlcmwgXAotICAgICAgICAgICAgICAgICAgIGxpYnJvbGUtdGlueS1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jb25zdGFudCBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXhwb3J0ZXIgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLW1ybyBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtc2NhbGFyLXV0aWwgXAotIgotCi1SUFJPVklERVNfJHtQTn0gPSAiIGxpYm1ldGhvZC1pbmxpbmVyLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJtZXRob2QtZ2VuZXJhdGUtYWNjZXNzb3ItcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYm1ldGhvZC1nZW5lcmF0ZS1idWlsZGFsbC1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlibWV0aG9kLWdlbmVyYXRlLWNvbnN0cnVjdG9yLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJtZXRob2QtZ2VuZXJhdGUtZGVtb2xpc2hhbGwtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYm1vby1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlibW9vLWhhbmRsZW1vb3NlLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJtb28taGFuZGxlbW9vc2UtZmFrZW1ldGFjbGFzcy1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlibW9vLW9iamVjdC1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlibW9vLXJvbGUtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnN1Yi1kZWZlci1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlic3ViLXF1b3RlLXBlcmwgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibW9vL2xpYm1vby1wZXJsXzIuMDA0MDAwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJtb28vbGlibW9vLXBlcmxfMi4wMDQwMDAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJhZDc0ZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibW9vL2xpYm1vby1wZXJsXzIuMDA0MDAwLmJiCkBAIC0wLDAgKzEsNDQgQEAKK1NVTU1BUlkgPSAiTW9vIC0gTWluaW1hbGlzdCBPYmplY3QgT3JpZW50YXRpb24gKHdpdGggTW9vc2UgY29tcGF0aWJpbGl0eSkiCitERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSB1cyBhbiBleHRyZW1lbHkgbGlnaHQtd2VpZ2h0IHN1YnNldCBvZiBcIk1vb3NlXCIgXAorb3B0aW1pc2VkIGZvciByYXBpZCBzdGFydHVwIGFuZCBcInBheSBvbmx5IGZvciB3aGF0IHlvdSB1c2VcIi4iCisKK1NFQ1RJT04gPSAibGlicyIKKworSE9NRVBBR0UgPSAiaHR0cDovL21ldGFwYW4ub3JnL3JlbGVhc2UvTW9vLyIKKworTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9NzQyO2VuZGxpbmU9Nzg3O21kNT0wZTdlZTQ0ZjVjZTVlOWI4NDYxOWNkMTk4Y2FhZDFkNiIKKworU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0gvSEEvSEFBUkcvTW9vLSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlNTQyMTA0NTUzZDYxNmIxNTYzMWI1YzY2Y2NlZTkwNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzMjMyNDBkMDAwMzk0Y2YzOGVjNDJlODY1YjA1Y2I4OTI4ZjYyNWM4MmM5MzkxY2QyY2RjNzJiMzNjNTFiODM0IgorCitTID0gIiR7V09SS0RJUn0vTW9vLSR7UFZ9IgorCitpbmhlcml0IGNwYW4KKworUkRFUEVORFNfJHtQTn0gPSAiIGxpYmNsYXNzLW1ldGhvZC1tb2RpZmllcnMtcGVybCBcCisgICAgICAgICAgICAgICAgICAgbGliZGV2ZWwtZ2xvYmFsZGVzdHJ1Y3Rpb24tcGVybCBcCisgICAgICAgICAgICAgICAgICAgbGlibW9kdWxlLXJ1bnRpbWUtcGVybCBcCisgICAgICAgICAgICAgICAgICAgbGlicm9sZS10aW55LXBlcmwgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWNvbnN0YW50IFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHBvcnRlciBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtbXJvIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1zY2FsYXItdXRpbCBcCisiCisKK1JQUk9WSURFU18ke1BOfSA9ICIgbGlibWV0aG9kLWlubGluZXItcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYm1ldGhvZC1nZW5lcmF0ZS1hY2Nlc3Nvci1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlibWV0aG9kLWdlbmVyYXRlLWJ1aWxkYWxsLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJtZXRob2QtZ2VuZXJhdGUtY29uc3RydWN0b3ItcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYm1ldGhvZC1nZW5lcmF0ZS1kZW1vbGlzaGFsbC1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlibW9vLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJtb28taGFuZGxlbW9vc2UtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYm1vby1oYW5kbGVtb29zZS1mYWtlbWV0YWNsYXNzLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJtb28tb2JqZWN0LXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJtb28tcm9sZS1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlic3ViLWRlZmVyLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJzdWItcXVvdGUtcGVybCBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LWRucy1wZXJsXzEuMjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm5ldC9saWJuZXQtZG5zLXBlcmxfMS4yMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThiOGVlYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm5ldC9saWJuZXQtZG5zLXBlcmxfMS4yMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgRE5TLnBtIG1vZHVsZSB3aXRoIGZyaWVuZHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5uZXQtZG5zLm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIk1JVCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0yNTI7ZW5kbGluZT0yNjk7bWQ1PTI3ZGIzN2I0MmNkMWE1MTczYTUzOTIyZDY3MDcyYmNiIgotCi1ERVBFTkRTICs9ICJwZXJsIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL04vTkwvTkxORVRMQUJTL05ldC1ETlMtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTFlODU5M2ViNmVlZDQxOTk1ZTZlZGM1NjdmYjZmZWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGRlZmUxM2IyODA4NGZmY2M4ZjEwYTk2YjNjMTNjNTk0NDlkYmY2ZmMzNzFjMDA2ZDEyOTYzMGVhMGNlNzY3YSIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiTmV0XC1ETlNcLSg/UDxwdmVyPihcZCtcLlxkKykpKD8hX1xkKykudGFyIgotCi1TID0gIiR7V09SS0RJUn0vTmV0LUROUy0ke1BWfSIKLQotRVhUUkFfQ1BBTkZMQUdTID0gIkVYUEFUTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBFWFBBVElOQ1BBVEg9JHtTVEFHSU5HX0lOQ0RJUn0iCi0KLWluaGVyaXQgY3BhbiBwdGVzdC1wZXJsCi0KLVJERVBFTkRTXyR7UE59ID0gIiBcCi0gICAgbGliZGlnZXN0LWhtYWMtcGVybCBcCi0gICAgcGVybC1tb2R1bGUtYmFzZSBcCi0gICAgcGVybC1tb2R1bGUtY29uc3RhbnQgXAotICAgIHBlcmwtbW9kdWxlLWRpZ2VzdC1tZDUgXAotICAgIHBlcmwtbW9kdWxlLWRpZ2VzdC1zaGEgXAotICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYyBcCi0gICAgcGVybC1tb2R1bGUtaW50ZWdlciBcCi0gICAgcGVybC1tb2R1bGUtaW8tZmlsZSBcCi0gICAgcGVybC1tb2R1bGUtaW8tc2VsZWN0IFwKLSAgICBwZXJsLW1vZHVsZS1pby1zb2NrZXQgXAotICAgIHBlcmwtbW9kdWxlLWlvLXNvY2tldC1pcCBcCi0gICAgcGVybC1tb2R1bGUtbWltZS1iYXNlNjQgXAotICAgIHBlcmwtbW9kdWxlLXNjYWxhci11dGlsIFwKLSAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAotICAgIHBlcmwtbW9kdWxlLXRpbWUtbG9jYWwgXAotIgotCi1SUkVDT01NRU5EU18ke1BOfSArPSAiIFwKLSAgICBsaWJuZXQtZG5zLXNlYy1wZXJsIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCi0gICAgcGVybC1tb2R1bGUtZW5jb2RlIFwKLSAgICBwZXJsLW1vZHVsZS1lbmNvZGUtYnl0ZSBcCi0gICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtbW0gXAotICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLW1tLXVuaXggXAotICAgIHBlcmwtbW9kdWxlLW92ZXJsb2FkIFwKLSIKLQotcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKLSAgICAjIHJhdGhlciB0aGFuIHVzZSAiZmluZCIgdG8gZGV0ZXJtaW5lIGxpYmMtKi5zbywKLSAgICAjIHN0YXRpY2FsbHkgZXhwb3J0IHRoZSBrbm93biBwYXRocyBmb3IgZ2xpYmMgYW5kIG11c2wKLSAgICBpbXBvcnQgb3MKLSAgICBpZiBkLmdldFZhcignVENMSUJDJykgPT0gImdsaWJjIjoKLSAgICAgICAgb3MuZW52aXJvblsiTElCQyJdID0gIiR7U1RBR0lOR19CQVNFTElCRElSfS9saWJjLnNvLjYiCi0gICAgZWxpZiBkLmdldFZhcignVENMSUJDJykgPT0gIm11c2wiOgotICAgICAgICBvcy5lbnZpcm9uWyJMSUJDIl0gPSAiJHtTVEFHSU5HX0xJQkRJUn0vbGliYy5zbyIKLSAgICBlbHNlOgotICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoImluY29tcGF0aWJsZSB3aXRoICVzIEMgbGlicmFyeSIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignVENMSUJDJykpCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LWRucy1wZXJsXzEuMjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm5ldC9saWJuZXQtZG5zLXBlcmxfMS4yMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTBkYWYyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LWRucy1wZXJsXzEuMjMuYmIKQEAgLTAsMCArMSw2NiBAQAorREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBETlMucG0gbW9kdWxlIHdpdGggZnJpZW5kcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5ldC1kbnMub3JnLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTUlUIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTI1MjtlbmRsaW5lPTI2OTttZDU9MjdkYjM3YjQyY2QxYTUxNzNhNTM5MjJkNjcwNzJiY2IiCisKK0RFUEVORFMgKz0gInBlcmwiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvTi9OTC9OTE5FVExBQlMvTmV0LUROUy0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxMDU1MTcxMzliMzk2NTBmNzhjMjFiMmU0NjFhYzk3ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjZjMyN2YzMTA2M2I5NmNkMzQyMWJlNDNhMWQ2Y2I0MWVhYTYxZDA1OTU0NTAwMzJlNTc5MDViMWJkNmIyYzNlIgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJOZXRcLUROU1wtKD9QPHB2ZXI+KFxkK1wuXGQrKSkoPyFfXGQrKS50YXIiCisKK1MgPSAiJHtXT1JLRElSfS9OZXQtRE5TLSR7UFZ9IgorCitFWFRSQV9DUEFORkxBR1MgPSAiRVhQQVRMSUJQQVRIPSR7U1RBR0lOR19MSUJESVJ9IEVYUEFUSU5DUEFUSD0ke1NUQUdJTkdfSU5DRElSfSIKKworaW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKKworUkRFUEVORFNfJHtQTn0gPSAiIFwKKyAgICBsaWJkaWdlc3QtaG1hYy1wZXJsIFwKKyAgICBwZXJsLW1vZHVsZS1iYXNlIFwKKyAgICBwZXJsLW1vZHVsZS1jb25zdGFudCBcCisgICAgcGVybC1tb2R1bGUtZGlnZXN0LW1kNSBcCisgICAgcGVybC1tb2R1bGUtZGlnZXN0LXNoYSBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKKyAgICBwZXJsLW1vZHVsZS1pbnRlZ2VyIFwKKyAgICBwZXJsLW1vZHVsZS1pby1maWxlIFwKKyAgICBwZXJsLW1vZHVsZS1pby1zZWxlY3QgXAorICAgIHBlcmwtbW9kdWxlLWlvLXNvY2tldCBcCisgICAgcGVybC1tb2R1bGUtaW8tc29ja2V0LWlwIFwKKyAgICBwZXJsLW1vZHVsZS1taW1lLWJhc2U2NCBcCisgICAgcGVybC1tb2R1bGUtc2NhbGFyLXV0aWwgXAorICAgIHBlcmwtbW9kdWxlLXRlc3QtbW9yZSBcCisgICAgcGVybC1tb2R1bGUtdGltZS1sb2NhbCBcCisiCisKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICIgXAorICAgIGxpYm5ldC1kbnMtc2VjLXBlcmwgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKyAgICBwZXJsLW1vZHVsZS1lbmNvZGUgXAorICAgIHBlcmwtbW9kdWxlLWVuY29kZS1ieXRlIFwKKyAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1tbSBcCisgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtbW0tdW5peCBcCisgICAgcGVybC1tb2R1bGUtb3ZlcmxvYWQgXAorIgorCitweXRob24gX19hbm9ueW1vdXMgKCkgeworICAgICMgcmF0aGVyIHRoYW4gdXNlICJmaW5kIiB0byBkZXRlcm1pbmUgbGliYy0qLnNvLAorICAgICMgc3RhdGljYWxseSBleHBvcnQgdGhlIGtub3duIHBhdGhzIGZvciBnbGliYyBhbmQgbXVzbAorICAgIGltcG9ydCBvcworICAgIGlmIGQuZ2V0VmFyKCdUQ0xJQkMnKSA9PSAiZ2xpYmMiOgorICAgICAgICBvcy5lbnZpcm9uWyJMSUJDIl0gPSAiJHtTVEFHSU5HX0JBU0VMSUJESVJ9L2xpYmMuc28uNiIKKyAgICBlbGlmIGQuZ2V0VmFyKCdUQ0xJQkMnKSA9PSAibXVzbCI6CisgICAgICAgIG9zLmVudmlyb25bIkxJQkMiXSA9ICIke1NUQUdJTkdfTElCRElSfS9saWJjLnNvIgorICAgIGVsc2U6CisgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiaW5jb21wYXRpYmxlIHdpdGggJXMgQyBsaWJyYXJ5IiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdUQ0xJQkMnKSkKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnRlc3QvbGlidGVzdC1kZWVwLXBlcmxfMS4xMjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnRlc3QvbGlidGVzdC1kZWVwLXBlcmxfMS4xMjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0YTkxNWMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ0ZXN0L2xpYnRlc3QtZGVlcC1wZXJsXzEuMTI4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotU1VNTUFSWSA9ICJUZXN0OjpEZWVwIC0gRXh0cmVtZWx5IGZsZXhpYmxlIGRlZXAgY29tcGFyaXNvbiIKLURFU0NSSVBUSU9OID0gIklmIHlvdSBkb24ndCBrbm93IGFueXRoaW5nIGFib3V0IGF1dG9tYXRlZCB0ZXN0aW5nIGluIFBlcmwgXAotdGhlbiB5b3Ugc2hvdWxkIHByb2JhYmx5IHJlYWQgYWJvdXQgVGVzdDo6U2ltcGxlIGFuZCBUZXN0OjpNb3JlIGJlZm9yZSBcCi1wcmVjZWRpbmcuIFRlc3Q6OkRlZXAgdXNlcyB0aGUgVGVzdDo6QnVpbGRlciBmcmFtZXdvcmsuIFwKLVwgCi1UZXN0OjpEZWVwIGdpdmVzIHlvdSB2ZXJ5IGZsZXhpYmxlIHdheXMgdG8gY2hlY2sgdGhhdCB0aGUgcmVzdWx0IHlvdSBnb3QgaXMgXAotdGhlIHJlc3VsdCB5b3Ugd2VyZSBleHBlY3RpbmcuIEF0IGl0cyBzaW1wbGVzdCBpdCBjb21wYXJlcyB0d28gc3RydWN0dXJlcyBcCi1ieSBnb2luZyB0aHJvdWdoIGVhY2ggbGV2ZWwsIGVuc3VyaW5nIHRoYXQgdGhlIHZhbHVlcyBtYXRjaCwgdGhhdCBhcnJheXMgYW5kIFwKLWhhc2hlcyBoYXZlIHRoZSBzYW1lIGVsZW1lbnRzIGFuZCB0aGF0IHJlZmVyZW5jZXMgYXJlIGJsZXNzZWQgaW50byB0aGUgXAotY29ycmVjdCBjbGFzcy4gSXQgYWxzbyBoYW5kbGVzIGNpcmN1bGFyIGRhdGEgc3RydWN0dXJlcyB3aXRob3V0IGdldHRpbmcgXAotY2F1Z2h0IGluIGFuIGluZmluaXRlIGxvb3AuIFwKLVwKLVdoZXJlIGl0IGJlY29tZXMgbW9yZSBpbnRlcmVzdGluZyBpcyBpbiBhbGxvd2luZyB5b3UgdG8gZG8gc29tZXRoaW5nIGJlc2lkZXMgXAotc2ltcGxlIGV4YWN0IGNvbXBhcmlzb25zLiBXaXRoIHN0cmluZ3MsIHRoZSBcJ2VxXCcgb3BlcmF0b3IgY2hlY2tzIHRoYXQgMiBcCi1zdHJpbmdzIGFyZSBleGFjdGx5IGVxdWFsIGJ1dCBzb21ldGltZXMgdGhhdCdzIG5vdCB3aGF0IHlvdSB3YW50LiBXaGVuIHlvdSBcCi1kb24ndCBrbm93IGV4YWN0bHkgd2hhdCB0aGUgc3RyaW5nIHNob3VsZCBiZSBidXQgeW91IGRvIGtub3cgc29tZSB0aGluZ3MgXAotYWJvdXQgaG93IGl0IHNob3VsZCBsb29rLCBcJ2VxXCcgaXMgbm8gZ29vZCBhbmQgeW91IG11c3QgdXNlIHBhdHRlcm4gbWF0Y2hpbmcgXAotaW5zdGVhZC4gVGVzdDo6RGVlcCBwcm92aWRlcyBwYXR0ZXJuIG1hdGNoaW5nIGZvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBcCi1kaXN0cmlidXRpb24uIgotCi1TRUNUSU9OID0gImxpYnMiCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL3JqYnMvVGVzdC1EZWVwLyIKLQotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xpYi9UZXN0L0RlZXAucG07YmVnaW5saW5lPTE4MTc7ZW5kbGluZT0xODI2O21kNT1hZWJjNzkzYzg3YTNkODc3MWZlOThkNWQzNjk4OThlNyIKLQotU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL1IvUkovUkpCUy9UZXN0LURlZXAtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjliYzQ3MTQ3ZWE3MjBmYzAxYmM2YjIxNGFmYjg4NGZmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg1MmQ3ZTgzNmZiYTgyNjliMGI3NTUwODIwNTFhMjRhMWEzMDlkMDE1YThiNzY4Mzg3OTBhZjllMzc2MDA5MmYiCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIlRlc3RcLURlZXBcLSg/UDxwdmVyPihcZCtcLlxkKykpKD8hX1xkKykudGFyIgotCi1TID0gIiR7V09SS0RJUn0vVGVzdC1EZWVwLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4gcHRlc3QtcGVybAotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICBwZXJsLW1vZHVsZS1keW5hbG9hZGVyIFwKLSAgICBwZXJsLW1vZHVsZS1leHBvcnRlciBcCi0gICAgcGVybC1tb2R1bGUtZmNudGwgXAotICAgIHBlcmwtbW9kdWxlLWxpc3QtdXRpbCBcCi0gICAgcGVybC1tb2R1bGUtc2NhbGFyLXV0aWwgXAotICAgIHBlcmwtbW9kdWxlLXN0cmljdCBcCi0gICAgcGVybC1tb2R1bGUtdmFycyBcCi0gICAgcGVybC1tb2R1bGUtd2FybmluZ3MgXAotIgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKLSAgICBwZXJsLW1vZHVsZS1pZiBcCi0gICAgcGVybC1tb2R1bGUtbGliIFwKLSAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAotICAgIHBlcmwtbW9kdWxlLXRlc3QtdGVzdGVyIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnRlc3QvbGlidGVzdC1kZWVwLXBlcmxfMS4xMzAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnRlc3QvbGlidGVzdC1kZWVwLXBlcmxfMS4xMzAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgyYTFhMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlidGVzdC9saWJ0ZXN0LWRlZXAtcGVybF8xLjEzMC5iYgpAQCAtMCwwICsxLDU2IEBACitTVU1NQVJZID0gIlRlc3Q6OkRlZXAgLSBFeHRyZW1lbHkgZmxleGlibGUgZGVlcCBjb21wYXJpc29uIgorREVTQ1JJUFRJT04gPSAiSWYgeW91IGRvbid0IGtub3cgYW55dGhpbmcgYWJvdXQgYXV0b21hdGVkIHRlc3RpbmcgaW4gUGVybCBcCit0aGVuIHlvdSBzaG91bGQgcHJvYmFibHkgcmVhZCBhYm91dCBUZXN0OjpTaW1wbGUgYW5kIFRlc3Q6Ok1vcmUgYmVmb3JlIFwKK3ByZWNlZGluZy4gVGVzdDo6RGVlcCB1c2VzIHRoZSBUZXN0OjpCdWlsZGVyIGZyYW1ld29yay4gXAorXCAKK1Rlc3Q6OkRlZXAgZ2l2ZXMgeW91IHZlcnkgZmxleGlibGUgd2F5cyB0byBjaGVjayB0aGF0IHRoZSByZXN1bHQgeW91IGdvdCBpcyBcCit0aGUgcmVzdWx0IHlvdSB3ZXJlIGV4cGVjdGluZy4gQXQgaXRzIHNpbXBsZXN0IGl0IGNvbXBhcmVzIHR3byBzdHJ1Y3R1cmVzIFwKK2J5IGdvaW5nIHRocm91Z2ggZWFjaCBsZXZlbCwgZW5zdXJpbmcgdGhhdCB0aGUgdmFsdWVzIG1hdGNoLCB0aGF0IGFycmF5cyBhbmQgXAoraGFzaGVzIGhhdmUgdGhlIHNhbWUgZWxlbWVudHMgYW5kIHRoYXQgcmVmZXJlbmNlcyBhcmUgYmxlc3NlZCBpbnRvIHRoZSBcCitjb3JyZWN0IGNsYXNzLiBJdCBhbHNvIGhhbmRsZXMgY2lyY3VsYXIgZGF0YSBzdHJ1Y3R1cmVzIHdpdGhvdXQgZ2V0dGluZyBcCitjYXVnaHQgaW4gYW4gaW5maW5pdGUgbG9vcC4gXAorXAorV2hlcmUgaXQgYmVjb21lcyBtb3JlIGludGVyZXN0aW5nIGlzIGluIGFsbG93aW5nIHlvdSB0byBkbyBzb21ldGhpbmcgYmVzaWRlcyBcCitzaW1wbGUgZXhhY3QgY29tcGFyaXNvbnMuIFdpdGggc3RyaW5ncywgdGhlIFwnZXFcJyBvcGVyYXRvciBjaGVja3MgdGhhdCAyIFwKK3N0cmluZ3MgYXJlIGV4YWN0bHkgZXF1YWwgYnV0IHNvbWV0aW1lcyB0aGF0J3Mgbm90IHdoYXQgeW91IHdhbnQuIFdoZW4geW91IFwKK2Rvbid0IGtub3cgZXhhY3RseSB3aGF0IHRoZSBzdHJpbmcgc2hvdWxkIGJlIGJ1dCB5b3UgZG8ga25vdyBzb21lIHRoaW5ncyBcCithYm91dCBob3cgaXQgc2hvdWxkIGxvb2ssIFwnZXFcJyBpcyBubyBnb29kIGFuZCB5b3UgbXVzdCB1c2UgcGF0dGVybiBtYXRjaGluZyBcCitpbnN0ZWFkLiBUZXN0OjpEZWVwIHByb3ZpZGVzIHBhdHRlcm4gbWF0Y2hpbmcgZm9yIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIFwKK2Rpc3RyaWJ1dGlvbi4iCisKK1NFQ1RJT04gPSAibGlicyIKKworSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vcmpicy9UZXN0LURlZXAvIgorCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbGliL1Rlc3QvRGVlcC5wbTtiZWdpbmxpbmU9MTgxNztlbmRsaW5lPTE4MjY7bWQ1PWE4OTdhNDJiYWZjMzQyMmNhYjE3YzJlYjk0Zjg3YTdjIgorCitTUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvUi9SSi9SSkJTL1Rlc3QtRGVlcC0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiZDQ2NmU0NzExMDhmN2Y3YTVkZjM4MDJjYjEzNzYxYWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDA2NGY0OTRmNWY2MjU4N2QwYWU1MDFjYTQzOTEwNTgyMWVlNTg0NmM2ODdkYzY1MDMyMzNmNTUzMDBhN2M1NiIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiVGVzdFwtRGVlcFwtKD9QPHB2ZXI+KFxkK1wuXGQrKSkoPyFfXGQrKS50YXIiCisKK1MgPSAiJHtXT1JLRElSfS9UZXN0LURlZXAtJHtQVn0iCisKK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgIHBlcmwtbW9kdWxlLWR5bmFsb2FkZXIgXAorICAgIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKKyAgICBwZXJsLW1vZHVsZS1mY250bCBcCisgICAgcGVybC1tb2R1bGUtbGlzdC11dGlsIFwKKyAgICBwZXJsLW1vZHVsZS1zY2FsYXItdXRpbCBcCisgICAgcGVybC1tb2R1bGUtc3RyaWN0IFwKKyAgICBwZXJsLW1vZHVsZS12YXJzIFwKKyAgICBwZXJsLW1vZHVsZS13YXJuaW5ncyBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorICAgIHBlcmwtbW9kdWxlLWlmIFwKKyAgICBwZXJsLW1vZHVsZS1saWIgXAorICAgIHBlcmwtbW9kdWxlLXRlc3QtbW9yZSBcCisgICAgcGVybC1tb2R1bGUtdGVzdC10ZXN0ZXIgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlidGVzdC9saWJ0ZXN0LXdhcm5pbmdzLXBlcmxfMC4wMjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnRlc3QvbGlidGVzdC13YXJuaW5ncy1wZXJsXzAuMDI4LmJiCmluZGV4IGI0MGE1NDUuLmYyZGRhMTkgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlidGVzdC9saWJ0ZXN0LXdhcm5pbmdzLXBlcmxfMC4wMjguYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ0ZXN0L2xpYnRlc3Qtd2FybmluZ3MtcGVybF8wLjAyOC5iYgpAQCAtMjQsNiArMjQsNiBAQAogCiBTID0gIiR7V09SS0RJUn0vVGVzdC1XYXJuaW5ncy0ke1BWfSIKIAotaW5oZXJpdCBjcGFuIGFsbGFyY2ggcHRlc3QtcGVybAoraW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLXBlcmwuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtcGVybC5iYgppbmRleCA5ZDBlMzNiLi45YjI0MDZiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtcGVybC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtcGVybC5iYgpAQCAtMTYsNyArMTYsNyBAQAogICAgIGxpYnRleHQtd3JhcGkxOG4tcGVybCBsaWJsb2NhbGUtZ2V0dGV4dC1wZXJsIGxpYmRhdGEtaGV4ZHVtcC1wZXJsIFwKICAgICBsaWJleHR1dGlscy1pbnN0YWxscGF0aHMtcGVybCBsaWJleHR1dGlscy1oZWxwZXJzLXBlcmwgbGliZXh0dXRpbHMtcGFyc2V4cy1wZXJsIFwKICAgICBsaWJleHR1dGlscy1jb25maWctcGVybCBsaWJleHR1dGlscy1jcHBndWVzcy1wZXJsIGxpYmltcG9ydC1pbnRvLXBlcmwgXAotICAgIGxpYmNyeXB0LW9wZW5zc2wtcnNhLXBlcmwgbGliY3J5cHQtb3BlbnNzbC1ndWVzcyBsaWJjcnlwdC1vcGVuc3NsLXJhbmRvbS1wZXJsIFwKKyAgICBsaWJjcnlwdC1vcGVuc3NsLXJzYS1wZXJsIGxpYmNyeXB0LW9wZW5zc2wtZ3Vlc3MtcGVybCBsaWJjcnlwdC1vcGVuc3NsLXJhbmRvbS1wZXJsIFwKICAgICBsaWJ4bWwtc2F4LXdyaXRlci1wZXJsIGxpYnhtbC1saWJ4bWwtcGVybCBsaWJ4bWwtZmlsdGVyLWJ1ZmZlcnRleHQtcGVybCBcCiAgICAgYWRkdXNlciBcCiAgICAgbGliYXV0aGVuLXNhc2wtcGVybCBsaWJuZXQtbGRhcC1wZXJsIGxpYm5ldC1kbnMtcGVybCBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9jb25mL2xheWVyLmNvbmYgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9jb25mL2xheWVyLmNvbmYKaW5kZXggZGI2NTk0My4uN2NmZWFmZSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vY29uZi9sYXllci5jb25mCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL2NvbmYvbGF5ZXIuY29uZgpAQCAtMTQsNiArMTQsNiBAQAogCiBMQVlFUkRFUEVORFNfbWV0YS1weXRob24gPSAiY29yZSBvcGVuZW1iZWRkZWQtbGF5ZXIiCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF9tZXRhLXB5dGhvbiA9ICJ0aHVkIHdhcnJpb3IgemV1cyIKK0xBWUVSU0VSSUVTX0NPTVBBVF9tZXRhLXB5dGhvbiA9ICJ0aHVkIHdhcnJpb3IgemV1cyBkdW5mZWxsIgogCiBMSUNFTlNFX1BBVEggKz0gIiR7TEFZRVJESVJ9L2xpY2Vuc2VzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvZ2F0ZW9uZS9nYXRlb25lX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2dhdGVvbmUvZ2F0ZW9uZV9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkMmNhMDAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvZ2F0ZW9uZS9nYXRlb25lX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLVNVTU1BUlkgPSAiSFRNTDUgKHBsdWdpbi1mcmVlKSB3ZWItYmFzZWQgdGVybWluYWwgZW11bGF0b3IgYW5kIFNTSCBjbGllbnQiCi1MSUNFTlNFID0gIkFHUEwtMy4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTgzNGNiYzY5OTVkYjg4NDMzZGIxN2NkZjg5NTNhNDI4IgotSE9NRVBBR0UgPSAiaHR0cDovL2xpZnRvZmZzb2Z0d2FyZS5jb20vUHJvZHVjdHMvR2F0ZU9uZSIKLQotUFYgPSAiMS4yK2dpdCR7U1JDUFZ9IgotU1JDUkVWID0gImY3YTliZTQ2Y2I5MGY1NzQ1OWViZDM2M2QyNDcwMmRlMGU2NTEwMzQiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGlmdG9mZi9HYXRlT25lLmdpdDticmFuY2g9bWFzdGVyIFwKLSAgICAgICAgICAgZmlsZTovL2dhdGVvbmUtYXZhaGkuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly84MG9lLmNvbmYuaW4gXAotICAgICAgICAgICBmaWxlOi8vZ2F0ZW9uZS5zZXJ2aWNlLmluIFwKLSAgICAgICAgICAgZmlsZTovL2dhdGVvbmUtaW5pdC5pbiBcCi0iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgc2V0dXB0b29scyBweXRob24tZGlyIHN5c3RlbWQgdXBkYXRlLXJjLmQKLQotRElTVFVUSUxTX0lOU1RBTExfQVJHUyArPSAiIFwKLSAgICAtLWluc3RhbGwtZGF0YT0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCi0gICAgLS1pbnN0YWxsLXNjcmlwdHM9JHtiaW5kaXJ9IFwKLSAgICAtLXNraXBfaW5pdF9zY3JpcHRzIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQotICAgICMgZml4IHVwIGhhcmRjb2RlZCBwYXRocwotICAgIGZvciBmaWxlIGluIGdhdGVvbmUuc2VydmljZSBnYXRlb25lLWluaXQgODBvZS5jb25mOyBkbwotICAgICAgICBzZWQgLWUgczpAYmluZGlyQDoke2JpbmRpcn06ZyBcCi0gICAgICAgICAgICAtZSBzOkBsb2NhbHN0YXRlQDoke2xvY2Fsc3RhdGVkaXJ9OmcgXAotICAgICAgICAgICAgPCAke1dPUktESVJ9LyRmaWxlLmluIFwKLSAgICAgICAgICAgID4gJHtXT1JLRElSfS8kZmlsZQotICAgIGRvbmUKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9nYXRlb25lLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZ2F0ZW9uZS1pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9nYXRlb25lCi0KLSAgICBpbnN0YWxsIC1tIDA3NTUgLWQgJHtEfSR7c3lzY29uZmRpcn0vYXZhaGkvc2VydmljZXMvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZ2F0ZW9uZS1hdmFoaS5zZXJ2aWNlICR7RH0ke3N5c2NvbmZkaXJ9L2F2YWhpL3NlcnZpY2VzLwotCi0gICAgaW5zdGFsbCAtbSAwNzU1IC1kICR7RH0ke3N5c2NvbmZkaXJ9L2dhdGVvbmUvY29uZi5kLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9Lzgwb2UuY29uZiAke0R9JHtzeXNjb25mZGlyfS9nYXRlb25lL2NvbmYuZC84MG9lLmNvbmYKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2dhdGVvbmUKLX0KLQotRklMRVNfJHtQTn0gPSAiJHtsb2NhbHN0YXRlZGlyfS9saWIgJHtiaW5kaXJ9ICR7YmFzZV9saWJkaXJ9ICR7c3lzY29uZmRpcn0gJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCi1SREVQRU5EU18ke1BOfSA9ICJtaW1lLXN1cHBvcnQgXAotICAgICAgICAgICAgICAgICAgb3BlbnNzaC1zc2ggXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWNvbXByZXNzaW9uIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1jb250ZXh0bGliIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1jcnlwdCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tZGF0ZXRpbWUgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWVtYWlsIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1mY250bCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tZnV0dXJlcyBcCi0gICAgICAgICAgICAgICAgICBweXRob24taHRtbCBcCi0gICAgICAgICAgICAgICAgICBweXRob24taW1hZ2luZyBcCi0gICAgICAgICAgICAgICAgICBweXRob24taW8gXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWpzb24gXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWxvZ2dpbmcgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLW1pc2MgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLW11bHRpcHJvY2Vzc2luZyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tbmV0Y2xpZW50IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1wa2d1dGlsIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1weW9wZW5zc2wgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXJlIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1zZXR1cHRvb2xzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1zaGVsbCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tc2ltcGxlanNvbiBcCi0gICAgICAgICAgICAgICAgICBweXRob24tc3VicHJvY2VzcyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tc3lzbG9nIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi10ZXJtaW5hbCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tdGV4dHV0aWxzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi10b3JuYWRvIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi11bml4YWRtaW4gXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXhtbCBcCi0gICAgICAgICAgICAgICAgICBweXRob24taHRtbDVsaWIgXAotICAgICAgICAgICAgICAgICAgYmFzaCBcCi0iCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJnYXRlb25lLnNlcnZpY2UiCi1JTklUU0NSSVBUX05BTUUgPSAiZ2F0ZW9uZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1nc29ja2V0cG9vbC9weXRob24tZ3NvY2tldHBvb2xfMC4xLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tZ3NvY2tldHBvb2wvcHl0aG9uLWdzb2NrZXRwb29sXzAuMS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTZhZDFjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1nc29ja2V0cG9vbC9weXRob24tZ3NvY2tldHBvb2xfMC4xLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLWdzb2NrZXRwb29sLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24taDIvcHl0aG9uLWgyLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1oMi9weXRob24taDIuaW5jCmluZGV4IDQyNjI5YzIuLmM0NTc4MzYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1oMi9weXRob24taDIuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1oMi9weXRob24taDIuaW5jCkBAIC04LDMgKzgsNSBAQAogU1JDX1VSSVtzaGEyNTZzdW1dID0gImI4YTMyYmQyODI1OTQ0MjRjMGFjNTU4NDUzNzdlZWExM2ZhNTRmZTRhOGRiMDEyZjNhMTk4ZWQ5MjNkYzNhYjQiCiAKIGluaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWhwYWNrICR7UFlUSE9OX1BOfS1oeXBlcmZyYW1lIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLWgyL3B5dGhvbi1oMl8zLjEuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1oMi9weXRob24taDJfMy4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4NDEyOTcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLWgyL3B5dGhvbi1oMl8zLjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotcmVxdWlyZSBweXRob24taDIuaW5jCi0KLWluaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLWhwYWNrL3B5dGhvbi1ocGFja18zLjAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1ocGFjay9weXRob24taHBhY2tfMy4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYWViODUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLWhwYWNrL3B5dGhvbi1ocGFja18zLjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotcmVxdWlyZSBweXRob24taHBhY2suaW5jCi0KLWluaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLWh5cGVyZnJhbWUvcHl0aG9uLWh5cGVyZnJhbWVfNS4yLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24taHlwZXJmcmFtZS9weXRob24taHlwZXJmcmFtZV81LjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGYwYzk5Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24taHlwZXJmcmFtZS9weXRob24taHlwZXJmcmFtZV81LjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotcmVxdWlyZSBweXRob24taHlwZXJmcmFtZS5pbmMKLQotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbXBycGMvcHl0aG9uLW1wcnBjXzAuMS4xNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1tcHJwYy9weXRob24tbXBycGNfMC4xLjE3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjJlYTIxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1tcHJwYy9weXRob24tbXBycGNfMC4xLjE3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1tcHJwYy5pbmMKLWluaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXByaW9yaXR5L3B5dGhvbi1wcmlvcml0eV8xLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1wcmlvcml0eS9weXRob24tcHJpb3JpdHlfMS4zLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiZTI2MjUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXByaW9yaXR5L3B5dGhvbi1wcmlvcml0eV8xLjMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotcmVxdWlyZSBweXRob24tcHJpb3JpdHkuaW5jCi0KLWluaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5Y29ubm1hbi9weXRob24tcHljb25ubWFuXzAuMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5Y29ubm1hbi9weXRob24tcHljb25ubWFuXzAuMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzEyZGI5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weWNvbm5tYW4vcHl0aG9uLXB5Y29ubm1hbl8wLjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotcmVxdWlyZSBweXRob24tcHljb25ubWFuLmluYwotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1kYnVzIHB5dGhvbi1wcHJpbnQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHlybzQvcHl0aG9uLXB5cm80XzQuNzcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHlybzQvcHl0aG9uLXB5cm80XzQuNzcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczOGNmODYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5cm80L3B5dGhvbi1weXJvNF80Ljc3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gUmVtb3RlIE9iamVjdHMiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWNkMTNkYWZkNGVlYjA4MDJiYjZlZmVhNmI0YTRiZGJjIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjFmMDE1YWU5M2NmOWVhMmJiYmM0MThhMjI2N2U5ZmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmJmZTEyYTIyZjM5NjQ3NGIwZTU3Yzg5OGM3ZTJjNTYxYThmODUwYmYyMDU1ZDhjZjBmNzExOWYwYzdhNTIzZiIKLQotUFlQSV9QQUNLQUdFID0gIlB5cm80IgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCi0gICAgJHtQWVRIT05fUE59LXNlbGVjdG9yczM0IFwKLSAgICAke1BZVEhPTl9QTn0tc2VycGVudCBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0gICAgJHtQWVRIT05fUE59LXpsaWIgXAotICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXJvNC9weXRob24zLXB5cm80XzQuNzcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHlybzQvcHl0aG9uMy1weXJvNF80Ljc3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmZTU4ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHlybzQvcHl0aG9uMy1weXJvNF80Ljc3LmJiCkBAIC0wLDAgKzEsMTYgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIFJlbW90ZSBPYmplY3RzIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jZDEzZGFmZDRlZWIwODAyYmI2ZWZlYTZiNGE0YmRiYyIKKworU1JDX1VSSVttZDVzdW1dID0gIjIxZjAxNWFlOTNjZjllYTJiYmJjNDE4YTIyNjdlOWZiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJiZmUxMmEyMmYzOTY0NzRiMGU1N2M4OThjN2UyYzU2MWE4Zjg1MGJmMjA1NWQ4Y2YwZjcxMTlmMGM3YTUyM2YiCisKK1BZUElfUEFDS0FHRSA9ICJQeXJvNCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tc2VycGVudCBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisgICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5dHVuL3B5dGhvbi1weXR1bl8yLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXR1bi9weXRob24tcHl0dW5fMi4zLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmYzU4N2YuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5dHVuL3B5dGhvbi1weXR1bl8yLjMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSBweXRob24tcHl0dW4uaW5jCi1pbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi10aHJpZnQvcHl0aG9uLXRocmlmdF8wLjEzLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tdGhyaWZ0L3B5dGhvbi10aHJpZnRfMC4xMy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDUxNjE5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi10aHJpZnQvcHl0aG9uLXRocmlmdF8wLjEzLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIEFwYWNoZSBUaHJpZnQgUlBDIHN5c3RlbSIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT1lOTVjZDJmMTdjNzBkMzE4MGEyYjM2MTMzMjMxOWZlMCIKLQotU1JDX1VSSVttZDVzdW1dID0gImMzYmM4ZDlhOTEwZDJjOWNlMjZmMmFkMWY3Yzk2NzYyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlhZjFjODZiZjczNDMzYWZjNjAxMGVkMzc2YTZjNmFjYTJiNTQwOTljYzBkNjE4OTVmNjQwODcwYTlhZTdkODkiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLSMgVXNlIGRpZmZlcmVudCBmaWxlbmFtZSB0byBwcmV2ZW50IGNvbmZsaWN0cyB3aXRoIHRocmlmdCBpdHNlbGYKLVBZUElfU1JDX1VSSV9hcHBlbmQgPSAiO2Rvd25sb2FkZmlsZW5hbWU9JHtCUH0uJHtQWVBJX1BBQ0tBR0VfRVhUfSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCi0gICAgJHtQWVRIT05fUE59LXNpeCBcCi0gICAgJHtQWVRIT05fUE59LXN0cmluZ29sZCBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tdGhyaWZ0L3B5dGhvbjMtdGhyaWZ0XzAuMTMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi10aHJpZnQvcHl0aG9uMy10aHJpZnRfMC4xMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZjFhNTAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tdGhyaWZ0L3B5dGhvbjMtdGhyaWZ0XzAuMTMuMC5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIEFwYWNoZSBUaHJpZnQgUlBDIHN5c3RlbSIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT1lOTVjZDJmMTdjNzBkMzE4MGEyYjM2MTMzMjMxOWZlMCIKKworU1JDX1VSSVttZDVzdW1dID0gImMzYmM4ZDlhOTEwZDJjOWNlMjZmMmFkMWY3Yzk2NzYyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlhZjFjODZiZjczNDMzYWZjNjAxMGVkMzc2YTZjNmFjYTJiNTQwOTljYzBkNjE4OTVmNjQwODcwYTlhZTdkODkiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCisjIFVzZSBkaWZmZXJlbnQgZmlsZW5hbWUgdG8gcHJldmVudCBjb25mbGljdHMgd2l0aCB0aHJpZnQgaXRzZWxmCitQWVBJX1NSQ19VUklfYXBwZW5kID0gIjtkb3dubG9hZGZpbGVuYW1lPSR7QlB9LiR7UFlQSV9QQUNLQUdFX0VYVH0iCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXR4d3MvcHl0aG9uLXR4d3NfMC45LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tdHh3cy9weXRob24tdHh3c18wLjkuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM2MzFjZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tdHh3cy9weXRob24tdHh3c18wLjkuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiVHdpc3RlZCBXZWIgU29ja2V0cyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9Nb3N0QXdlc29tZUR1ZGUvdHhXUyIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzY2OTk4MzBkYjdmYTllODk3ZjZhMWFkMDVmOThlYzgiCi0KLURFUEVORFMgPSAicHl0aG9uLXR3aXN0ZWQgcHl0aG9uLXNpeCBweXRob24tdmN2ZXJzaW9uZXIgcHl0aG9uLXNpeC1uYXRpdmUgcHl0aG9uLXZjdmVyc2lvbmVyLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL01vc3RBd2Vzb21lRHVkZS90eFdTLmdpdCIKLVNSQ1JFVj0gIjg4Y2Y2ZDliOWI2ODVmZmExNzIwNjQ0YmQ1M2M3NDJhZmIxMGE0MTQiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgc2V0dXB0b29scwotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tdHh3cy9weXRob24zLXR4d3NfMC45LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tdHh3cy9weXRob24zLXR4d3NfMC45LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIzNTY4MgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi10eHdzL3B5dGhvbjMtdHh3c18wLjkuMS5iYgpAQCAtMCwwICsxLDE1IEBACitTVU1NQVJZID0gIlR3aXN0ZWQgV2ViIFNvY2tldHMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vTW9zdEF3ZXNvbWVEdWRlL3R4V1MiCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc2Njk5ODMwZGI3ZmE5ZTg5N2Y2YTFhZDA1Zjk4ZWM4IgorCitERVBFTkRTID0gInB5dGhvbjMtdHdpc3RlZCBweXRob24zLXNpeCBweXRob24zLXZjdmVyc2lvbmVyIHB5dGhvbjMtc2l4LW5hdGl2ZSBweXRob24zLXZjdmVyc2lvbmVyLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL01vc3RBd2Vzb21lRHVkZS90eFdTLmdpdCIKK1NSQ1JFVj0gIjg4Y2Y2ZDliOWI2ODVmZmExNzIwNjQ0YmQ1M2M3NDJhZmIxMGE0MTQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgc2V0dXB0b29sczMKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24tMC4xNS4xOS9wYXJhbGxlbF9tYWtlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24zLTAuMTUuMTkvcGFyYWxsZWxfbWFrZS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24tMC4xNS4xOS9wYXJhbGxlbF9tYWtlLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LXB5dGhvbjMtMC4xNS4xOS9wYXJhbGxlbF9tYWtlLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LXB5dGhvbi0wLjE1LjE5L3JlbW92ZV9kdXBsaWNhdGVfaW5zdGFsbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uMy0wLjE1LjE5L3JlbW92ZV9kdXBsaWNhdGVfaW5zdGFsbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24tMC4xNS4xOS9yZW1vdmVfZHVwbGljYXRlX2luc3RhbGwucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uMy0wLjE1LjE5L3JlbW92ZV9kdXBsaWNhdGVfaW5zdGFsbC5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24tMC4xNS4xOS90ZWxlcGF0aHktcHl0aG9uX2ZpeF9mb3JfYXV0b21ha2VfMS4xMi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uMy0wLjE1LjE5L3RlbGVwYXRoeS1weXRob25fZml4X2Zvcl9hdXRvbWFrZV8xLjEyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LXB5dGhvbi0wLjE1LjE5L3RlbGVwYXRoeS1weXRob25fZml4X2Zvcl9hdXRvbWFrZV8xLjEyLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LXB5dGhvbjMtMC4xNS4xOS90ZWxlcGF0aHktcHl0aG9uX2ZpeF9mb3JfYXV0b21ha2VfMS4xMi5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24zXzAuMTUuMTkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LXB5dGhvbjNfMC4xNS4xOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTJlNjU3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24zXzAuMTUuMTkuYmIKQEAgLTAsMCArMSwzNCBAQAorU1VNTUFSWSA9ICJUZWxlcGF0aHkgSU0gZnJhbWV3b3JrIC0gUHl0aG9uIHBhY2thZ2UiCitIT01FUEFHRSA9ICJodHRwOi8vdGVsZXBhdGh5LmZyZWVkZXNrdG9wLm9yZy93aWtpLyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3V0aWxzLnB5O2JlZ2lubGluZT0xO2VuZGxpbmU9MTc7bWQ1PTlhMDdkMWE5NzkxYTc0MjlhMTRlN2IyNWM2Yzg2ODIyIgorCitERVBFTkRTID0gImxpYnhzbHQtbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHA6Ly90ZWxlcGF0aHkuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL3RlbGVwYXRoeS1weXRob24vdGVsZXBhdGh5LXB5dGhvbi0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWxfbWFrZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmVfZHVwbGljYXRlX2luc3RhbGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdGVsZXBhdGh5LXB5dGhvbl9maXhfZm9yX2F1dG9tYWtlXzEuMTIucGF0Y2giCisKK1BSID0gInI2IgorCitTID0gIiR7V09SS0RJUn0vdGVsZXBhdGh5LXB5dGhvbi0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHl0aG9uM25hdGl2ZQorCitTUkNfVVJJW21kNXN1bV0gPSAiZjdjYTI1YWIzYzg4ODc0MDE1YjdlOTcyOGY3ZjMwMTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjQ0YzBlMWJmNGJiZDc4YWUyOThlYTY1OWZlMTBiZjNhNzM3MzhkYjU1MDE1Njc2N2NjMjQ3N2FlZGY3MjM3NiIKKworRklMRVNfJHtQTn0gKz0gIlwKKyAgICAke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL3RlbGVwYXRoeS8qLnB5IFwKKyAgICAke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL3RlbGVwYXRoeS8qLyoucHkgXAorIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgcm0gLWZyICR7RH0ke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL3RlbGVwYXRoeS9fX3B5Y2FjaGVfXworICAgIHJtIC1mciAke0R9JHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy90ZWxlcGF0aHkvX19weWNhY2hlX18KKyAgICBybSAtZnIgJHtEfSR7bGliZGlyfS9weXRob24qL3NpdGUtcGFja2FnZXMvdGVsZXBhdGh5LyovX19weWNhY2hlX18KKyAgICBybSAtZnIgJHtEfSR7bGliZGlyfS9weXRob24qL3NpdGUtcGFja2FnZXMvdGVsZXBhdGh5LyovX19weWNhY2hlX18KK30KK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zLWRidXMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LXB5dGhvbl8wLjE1LjE5LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob25fMC4xNS4xOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjdhZWEyNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LXB5dGhvbl8wLjE1LjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJUZWxlcGF0aHkgSU0gZnJhbWV3b3JrIC0gUHl0aG9uIHBhY2thZ2UiCi1IT01FUEFHRSA9ICJodHRwOi8vdGVsZXBhdGh5LmZyZWVkZXNrdG9wLm9yZy93aWtpLyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3V0aWxzLnB5O2JlZ2lubGluZT0xO2VuZGxpbmU9MTc7bWQ1PTlhMDdkMWE5NzkxYTc0MjlhMTRlN2IyNWM2Yzg2ODIyIgotCi1ERVBFTkRTID0gImxpYnhzbHQtbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1kYnVzIgotCi1TUkNfVVJJID0gImh0dHA6Ly90ZWxlcGF0aHkuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3BhcmFsbGVsX21ha2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlX2R1cGxpY2F0ZV9pbnN0YWxsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3RlbGVwYXRoeS1weXRob25fZml4X2Zvcl9hdXRvbWFrZV8xLjEyLnBhdGNoIgotCi1QUiA9ICJyNiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcHl0aG9ubmF0aXZlCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmN2NhMjVhYjNjODg4NzQwMTViN2U5NzI4ZjdmMzAxNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyNDRjMGUxYmY0YmJkNzhhZTI5OGVhNjU5ZmUxMGJmM2E3MzczOGRiNTUwMTU2NzY3Y2MyNDc3YWVkZjcyMzc2IgotCi1GSUxFU18ke1BOfSArPSAiXAotICAgICR7bGliZGlyfS9weXRob24qL3NpdGUtcGFja2FnZXMvdGVsZXBhdGh5LyoucHkgXAotICAgICR7bGliZGlyfS9weXRob24qL3NpdGUtcGFja2FnZXMvdGVsZXBhdGh5LyovKi5weSBcCi0iCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBybSAtZiAke0R9JHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy90ZWxlcGF0aHkvKi5weWMKLSAgICBybSAtZiAke0R9JHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy90ZWxlcGF0aHkvKi5weW8KLSAgICBybSAtZiAke0R9JHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy90ZWxlcGF0aHkvKi8qLnB5YwotICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL3RlbGVwYXRoeS8qLyoucHlvCi19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS1weXRob24uYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS1weXRob24uYmIKaW5kZXggYmIwNWRlMS4uMTJhMDU2MiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtcHl0aG9uLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLXB5dGhvbi5iYgpAQCAtNCw2OCArNCwxNCBAQAogCiBQUk9WSURFUyA9ICIke1BBQ0tBR0VTfSIKIFBBQ0tBR0VTID0gJyBcCi0gICAgcGFja2FnZWdyb3VwLW1ldGEtcHl0aG9uIFwKICAgICBwYWNrYWdlZ3JvdXAtbWV0YS1weXRob24zIFwKICcKIAotUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtcHl0aG9uID0gIlwKLSAgICBwYWNrYWdlZ3JvdXAtbWV0YS1weXRob24tZXh0ZW5kZWQgXAotICAgIHBhY2thZ2Vncm91cC1tZXRhLXB5dGhvbi1jb25uZWN0aXZpdHkgXAotIgotCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1weXRob24zID0gIlwKICAgICBwYWNrYWdlZ3JvdXAtbWV0YS1weXRob24zLWV4dGVuZGVkIFwKICAgICBwYWNrYWdlZ3JvdXAtbWV0YS1weXRob24zLWNvbm5lY3Rpdml0eSBcCiAiCiAKLVJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLXB5dGhvbiA9ICJcCi0gICAgcHl0aG9uLXBzdXRpbCBweXRob24tY2VydGlmaSBweXRob24tZmxhc2sgcHl0aG9uLXB5cm91dGUyIHB5dGhvbi1weW9wZW5zc2wgcHl0aG9uLXB5bGludCBcCi0gICAgcHl0aG9uLXNlbXZlciBweXRob24td3JhcHQgcHl0aG9uLW5ldHdvcmt4IHB5dGhvbi1iZWhhdmUgcHl0aG9uLWRvbWluYXRlIHB5dGhvbi1mbGFzay11c2VyIFwKLSAgICBweXRob24tYXR0cnMgcHl0aG9uLWh1bWFuaXplIHB5dGhvbi1zaXggcHl0aG9uLWZsYXNrLWxvZ2luIHB5dGhvbi16b3BlaW50ZXJmYWNlIHB5dGhvbi1zaWpheCBcCi0gICAgcHl0aG9uLXB5aW5vdGlmeSBweXRob24tc3RldmVkb3JlIHB5dGhvbi1weWp3dCBweXRob24td2ViZGF2IHB5dGhvbi10d2lzdGVkIHB5dGhvbi1mbGFzay1zaWpheCBcCi0gICAgcHl0aG9uLWZ1bmN0b29sczMyIHB5dGhvbi1qYXZhb2JqLXB5MyBweXRob24tcHlncGdtZSBweXRob24tZnV0dXJlIHB5dGhvbi1hdHRyIFwKLSAgICBweXRob24tZmxhc2steHN0YXRpYyBweXRob24tbTJjcnlwdG8gcHl0aG9uLWh5cGVybGluayBweXRob24taW1hZ2luZyBweXRob24taWRuYSBweXRob24tamluamEyIFwKLSAgICBweXRob24tY2FuIHB5dGhvbi1mbGFzay1iY3J5cHQgcHl0aG9uLXJlcXVlc3RzIHB5dGhvbi1wYXN0ZSBweXRob24tZmxhc2stc2NyaXB0IHB5dGhvbi1zZXJwZW50IFwKLSAgICBweXRob24tY3J5cHRvZ3JhcGh5IHB5dGhvbi1weXNtaSBweXRob24teGxyZCBweXRob24tYXBwZGlycyBweXRob24tanNvbnBhdGNoIHB5dGhvbi1iY3J5cHQgXAotICAgIHB5dGhvbi1uZGctaHR0cHNjbGllbnQgcHl0aG9uLXB5dGVzdCBweXRob24tbGluZWNhY2hlMiBweXRob24tdmlzaXRvciBweXRob24tYmFja3BvcnRzLWFiYyBcCi0gICAgcHl0aG9uLXNldHVwdG9vbHMtc2NtIHB5dGhvbi1ldmRldiBweXRob24tcHlqa3MgcHl0aG9uLWpzb25wb2ludGVyIHB5dGhvbi1jaGVldGFoIHB5dGhvbi1nZXZlbnQgXAotICAgIHB5dGhvbi1zbWJ1cyBweXRob24tc3FsYWxjaGVteSBweXRob24tc2NyeXB0IHB5dGhvbi13ZXJremV1ZyBweXRob24tYW55anNvbiBweXRob24tcGV4cGVjdCBcCi0gICAgcHl0aG9uLXJvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnkgcHl0aG9uLXB5YWxzYWF1ZGlvIHB5dGhvbi1weXRlc3QtaGVscGVycy1uYW1lc3BhY2UgXAotICAgIHB5dGhvbi1hbGVtYmljIHB5dGhvbi1mbGFzay1weW1vbmdvIHB5dGhvbi1zbGlwLWRidXMgcHl0aG9uLXB5ZGJ1cyBweXRob24tYXV0b21hdCBweXRob24tcmZjMzk4NyBcCi0gICAgcHl0aG9uLXR6bG9jYWwgcHl0aG9uLWJhY2twb3J0cy1zc2wgcHl0aG9uLXN1YnByb2Nlc3MzMiBweXRob24tYXNuMWNyeXB0byBweXRob24tcHliaW5kMTEgXAotICAgIHB5dGhvbi1wdHlwcm9jZXNzIHB5dGhvbi1iYWJlbCBweXRob24tcGFzc2xpYiBweXRob24tc2Rub3RpZnkgXAotICAgIHB5dGhvbi1sYXp5LW9iamVjdC1wcm94eSBweXRob24tY3J5cHRvZ3JhcGh5LXZlY3RvcnMgcHl0aG9uLWNyY21vZCBweXRob24tcHl1c2IgcHl0aG9uLXZvYmplY3QgXAotICAgIHB5dGhvbi13ZWJjb2xvcnMgcHl0aG9uLXB5cGFyc2luZyBweXRob24tYmVhdXRpZnVsc291cDQgcHl0aG9uLWNmZmkgcHl0aG9uLXRvcm5hZG8tcmVkaXMgXAotICAgIHB5dGhvbi1pdHNkYW5nZXJvdXMgcHl0aG9uLXB5YXNuMS1tb2R1bGVzIHB5dGhvbi1uZXRhZGRyIHB5dGhvbi12Y3ZlcnNpb25lciBcCi0gICAgcHl0aG9uLXNoIHB5dGhvbi1ncmVlbmxldCBweXRob24tcGFoby1tcXR0IHB5dGhvbi10cmFjZWJhY2syIHB5dGhvbi1nZGF0YSBweXRob24tZGJ1c21vY2sgXAotICAgIHB5dGhvbi13aG9vc2ggcHl0aG9uLWxvY2tmaWxlIHB5dGhvbi1pc29ydCBweXRob24td3Rmb3JtcyBweXRob24tZmVlZHBhcnNlciBweXRob24tZmxhc2stcmVzdGZ1bCBcCi0gICAgcHl0aG9uLXB5c25tcCBweXRob24tZmxhc2stYmFiZWwgcHl0aG9uLXB5dGVzdC10ZW1wZGlyIHB5dGhvbi1mbGFzay1uYXYgcHl0aG9uLXB5em1xIHB5dGhvbi1weXlhbWwgXAotICAgIHB5dGhvbi1wcm90b2J1ZiBweXRob24tcGx1Z2d5IHB5dGhvbi1qc29uc2NoZW1hIHB5dGhvbi1tc2dwYWNrIFwKLSAgICBweXRob24tcGVyaXBoZXJ5IHB5dGhvbi1waW50IHB5dGhvbi1weWNyeXB0b2RvbWUgcHl0aG9uLXlhcHBpIHB5dGhvbi1weWNyeXB0byBweXRob24tcHJldGVuZCBcCi0gICAgcHl0aG9uLXB5c2VyaWFsIHB5dGhvbi1weWlmYWNlIHB5dGhvbi1kb2N1dGlscyBweXRob24tZ3JwY2lvLXRvb2xzIHB5dGhvbi1kamFuZ28tc291dGggXAotICAgIHB5dGhvbi1iYWNrcG9ydHMtZnVuY3Rvb2xzLWxydS1jYWNoZSBweXRob24tcHkgcHl0aG9uLWNsaWNrIHB5dGhvbi1mbGFzay1taWdyYXRlIFwKLSAgICBweXRob24tcHl1ZGV2IHB5dGhvbi1weXN0YWNoZSBweXRob24tYmxpbmtlciBweXRob24tcHJvbXB0LXRvb2xraXQgcHl0aG9uLWx4bWwgXAotICAgIHB5dGhvbi11bmlkaWZmIHB5dGhvbi1pbmZsZWN0aW9uIHB5dGhvbi10d29maXNoIHB5dGhvbi1wcmV0dHl0YWJsZSBweXRob24td2ViZW5jb2RpbmdzIFwKLSAgICBweXRob24tbW9jayBweXRob24tcHlleHBlY3QgcHl0aG9uLWRuc3B5dGhvbiBweXRob24tcHlzb2NrcyBweXRob24tcHluZXRsaW51eCBcCi0gICAgcHl0aG9uLWRhZW1vbiBweXRob24tZGphbmdvcmVzdGZyYW1ld29yayBweXRob24tdHlwaW5nIHB5dGhvbi1tb25vdG9uaWMgcHl0aG9uLXNwYXJ0cyBcCi0gICAgcHl0aG9uLWVudW0zNCBweXRob24tcHlwZXJjbGlwIHB5dGhvbi1mbGFzay11cGxvYWRzIHB5dGhvbi1wYnIgcHl0aG9uLXBhcnNlIHB5dGhvbi1weWZsYWtlcyBcCi0gICAgcHl0aG9uLXB5aGFtY3Jlc3QgcHl0aG9uLW1ha28gcHl0aG9uLWluY3JlbWVudGFsIHB5dGhvbi10b3JuYWRvIHB5dGhvbi14c3RhdGljLWZvbnQtYXdlc29tZSBcCi0gICAgcHl0aG9uLWNtZDIgcHl0aG9uLXN0cmljdC1yZmMzMzM5IHB5dGhvbi1weWNvZGVzdHlsZSBweXRob24teHN0YXRpYyBweXRob24tc25ha2Vmb29kIFwKLSAgICBweXRob24tcHlibHVleiBweXRob24tZmxhc2stbmF2aWdhdGlvbiBweXRob24tcHlmaXJtYXRhIHB5dGhvbi1weW1vbmdvIHB5dGhvbi1weXNxbGl0ZSBcCi0gICAgcHl0aG9uLXByb2dyZXNzIHB5dGhvbi1mbGFzay1zcWxhbGNoZW15IHB5dGhvbi1weW1pc3AgcHl0aG9uLXBpcCBweXRob24tdWpzb24gcHl0aG9uLXBseSBcCi0gICAgcHl0aG9uLXBlcDggcHl0aG9uLWRhdGV1dGlsIHB5dGhvbi1weWNwYXJzZXIgcHl0aG9uLWRhZW1vbml6ZSBweXRob24tYXN0cm9pZCBweXRob24tcHlyZXggXAotICAgIHB5dGhvbi1tYXJrdXBzYWZlIHB5dGhvbi1weXRlc3QtcnVubmVyIHB5dGhvbi1ncnBjaW8gcHl0aG9uLW1jY2FiZSBweXRob24tcHl0eiBweXRob24tc2VsZWN0b3JzMzQgXAotICAgIHB5dGhvbi1jeXRob24gcHl0aG9uLWNoYXJkZXQgcHl0aG9uLWVkaXRvciBweXRob24tZmxhc2stYm9vdHN0cmFwIHB5dGhvbi1odG1sNWxpYiBcCi0gICAgcHl0aG9uLXNpbmdsZWRpc3BhdGNoIHB5dGhvbi1yZWRpcyBweXRob24tZmxhc2stbWFpbCBweXRob24tZnVuY3NpZ3MgcHl0aG9uLXNuaW1weSBweXRob24tcHlhc24xIFwKLSAgICBweXRob24tZGVjb3JhdG9yIHB5dGhvbi11cmxsaWIzIHB5dGhvbi1mZWVkZm9ybWF0dGVyIHB5dGhvbi1pc284NjAxIFwKLSAgICBweXRob24tbnVtZXJpYyBweXRob24tcm9ib3RmcmFtZXdvcmsgcHl0aG9uLWRqYW5nbyBweXRob24tc2ltcGxlanNvbiBweXRob24td2N3aWR0aCBcCi0gICAgcHl0aG9uLWNvbmZpZ3BhcnNlciBweXRob24tZXB5ZG9jIHB5dGhvbi1pbnRlcnZhbHMgcHl0aG9uLXNwZWFrbGF0ZXIgXAotICAgIHB5dGhvbi1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uIHB5dGhvbi1jb25zdGFudGx5IHB5dGhvbi1iaXRhcnJheSBweXRob24tZmxhc2std3RmIFwKLSAgICBweXRob24tcGFyc2UtdHlwZSBweXRob24taXBhZGRyZXNzIHB5dGhvbi1kYnVzIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInBhbSIsICJweXRob24tcGFtIHBhbWVsYSIsICIiLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAic3lzdGVtZCIsICJweXRob24tc3lzdGVtZCIsICIiLCBkKX0gXAotIgotCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1weXRob24zID0gIlwKICAgICBweXRob24zLXB5c2VyaWFsIHB5dGhvbjMtZ2V2ZW50IHB5dGhvbjMtYWxlbWJpYyBweXRob24zLXJvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnkgXAogICAgIHB5dGhvbjMtcmZjMzk4NyBweXRob24zLXhscmQgcHl0aG9uMy1iYW5kaXQgcHl0aG9uMy1jb25zdGFudGx5IHB5dGhvbjMtaW5mbGVjdGlvbiBcCkBAIC0xMDUsMTMgKzUxLDYgQEAKICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInN5c3RlbWQiLCAicHl0aG9uMy1zeXN0ZW1kIiwgIiIsIGQpfSBcCiAiCiAKLVJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLXB5dGhvbi1leHRlbmRlZCA9ICJcCi0gICAgcHl0aG9uLXB5ZXBoZW0gXAotICAgIHB5dGhvbi1jc29uIFwKLSAgICBweXRob24tcHl3YmVtIFwKLSAgICBweXRob24tcHlwYXJ0ZWQgXAotIgotCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1weXRob24zLWV4dGVuZGVkID0gIlwKICAgICBweXRob24zLXB5a2lja3N0YXJ0IFwKICAgICBweXRob24zLW1laCBcCkBAIC0xMjEsMTYgKzYwLDYgQEAKICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSIsICJweXRob24zLWJsaXZldGd1aSIsICIiLCBkKX0gXAogIgogCi1SREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1weXRob24tY29ubmVjdGl2aXR5ID0gIlwKLSAgICBweXRob24tcHlybzQgXAotICAgIHB5dGhvbi1weXR1biBcCi0gICAgcHl0aG9uLW1wcnBjIFwKLSAgICBweXRob24tdGhyaWZ0IFwKLSAgICBweXRob24tdHh3cyBcCi0gICAgcHl0aG9uLXB5Y29ubm1hbiBcCi0gICAgcHl0aG9uLWdzb2NrZXRwb29sIFwKLSIKLQogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtcHl0aG9uMy1jb25uZWN0aXZpdHkgPSAiXAogICAgIHB5dGhvbjMtcHl0dW4gXAogICAgIHB5dGhvbjMtbXBycGMgXApAQCAtMTM4LDExICs2Nyw2IEBACiAgICAgcHl0aG9uMy1nc29ja2V0cG9vbCBcCiAiCiAKLVJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLXB5dGhvbi1wdGVzdCA9ICJcCi0gICAgcHl0aG9uLXB5Z3BnbWUgXAotICAgIHB5dGhvbi1jcnlwdG9ncmFwaHkgXAotICAgICIKLQogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtcHl0aG9uMy1wdGVzdCA9ICJcCiAgICAgcHl0aG9uMy1jcnlwdG9ncmFwaHkgXAogICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvZ3lwL2d5cC1weTJfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9neXAvZ3lwLXB5Ml9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2OWI5MmMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9neXAvZ3lwLXB5Ml9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBneXAuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1qc29ucmVmL3B5dGhvbi1qc29ucmVmLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLWpzb25yZWYvcHl0aG9uLWpzb25yZWYuaW5jCmluZGV4IDBlNjllNDUuLjQ1ZGViMDkgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLWpzb25yZWYvcHl0aG9uLWpzb25yZWYuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLWpzb25yZWYvcHl0aG9uLWpzb25yZWYuaW5jCkBAIC02LDYgKzYsNiBAQAogU1JDX1VSSVttZDVzdW1dID0gIjQyYjUxOGI5Y2NkNjg1MmQxZDcwOTc0OWJjOTZjYjcwIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImYzYzQ1YjEyMWNmNjI1N2VhZmFiZGMzYTgwMDg3NjNhZWQxY2Q3ZGEwNmRiYWJjNTlhOWU0ZDJhNWU0ZTY2OTciCiAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24tanNvbnJlZi9weXRob24tanNvbnJlZl8wLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1qc29ucmVmL3B5dGhvbjMtanNvbnJlZl8wLjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLWpzb25yZWYvcHl0aG9uLWpzb25yZWZfMC4yLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1qc29ucmVmL3B5dGhvbjMtanNvbnJlZl8wLjIuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3BhbWVsYV8wLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3BhbWVsYV8wLjMuMC5iYgppbmRleCAwMzBjMjJmLi5iNmJlZTBjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9wYW1lbGFfMC4zLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcGFtZWxhXzAuMy4wLmJiCkBAIC03LDcgKzcsNyBAQAogCiBQWVBJX1BBQ0tBR0UgPSAicGFtZWxhIgogCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCiAKIFJERVBFTkRTXyR7UE59ID0gImxpYnBhbSIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHlydG1fMC40LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXJ0bV8wLjQuMi5iYgppbmRleCA5ZDg1MWFiLi43OThkYWViIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXJ0bV8wLjQuMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXJ0bV8wLjQuMi5iYgpAQCAtOCw3ICs4LDcgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICI3Yzg3ZGE5NDY1NmI2MjBkZmU1MzJjYTYzZDY0MmViOCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMmQ3MDFiMjVhZDNmOWExNTQyMDU3ZjNlYjQ5MmM1YzFkN2RiZTJiOGQxZThmNzYzMDQzZGNjMTRlZTFkOTMzIgogCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCiAKIFBBQ0tBR0VTID0rICIke1BOfS10ZXN0cyAke1BOfS1zYW1wbGVzIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYWlvZmlsZXMuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFpb2ZpbGVzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2VjYjIxYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYWlvZmlsZXMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJGaWxlIHN1cHBvcnQgZm9yIGFzeW5jaW8iCi1ERVNDUklQVElPTiA9ICJBc3luY2hyb25vdXMgbG9jYWwgZmlsZSBJTyBsaWJyYXJ5IGZvciBhc3luY2lvIGFuZCBQeXRob24iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYWlvLWxpYnMvYWlvaHR0cCIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQyNzk0YzBkZjViOTA3ZmRhY2UyMzVhNjE5ZDgwMzE0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiY2IzM2NmOTZjMzcxZmJkNTZmYzI3YWIwYmQ4MWJkNjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDIxZWEwYmEzMTRhODYwMjdjMTY2ZWNjNGI0YzA3ZjJkNDBmYzBmNGIzYTk1MGQxODY4YTBmMjU3MWMyYmJlZSIKLQotUFlQSV9QQUNLQUdFID0gImFpb2ZpbGVzIgotaW5oZXJpdCBweXBpCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgJHtQWVRIT05fUE59LWFzeW5jaW8gXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFpb2h0dHAuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFpb2h0dHAuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzExYWQ3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1haW9odHRwLmluYworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiQXN5bmMgaHR0cCBjbGllbnQvc2VydmVyIGZyYW1ld29yayIKLURFU0NSSVBUSU9OID0gIkFzeW5jaHJvbm91cyBIVFRQIGNsaWVudC9zZXJ2ZXIgZnJhbWV3b3JrIGZvciBhc3luY2lvIGFuZCBQeXRob24iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYWlvLWxpYnMvYWlvaHR0cCIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1jZjA1NmU4ZTdhMGE1NDc3NDUxYWYxOGI3YjVhYTk4YyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg1ZmU1YzkwMzcyNTZjNThkNDY3ODE0OGJkOTFiM2YzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljNGM4M2Y0ZmExOTM4Mzc3ZGEzMmJjMmQ1OTM3OTAyNWNlZWVlOGUyNGI4OWY3MmZjYmNjZDhjYTIyZGM5YmYiCi0KLVBZUElfUEFDS0FHRSA9ICJhaW9odHRwIgotaW5oZXJpdCBweXBpCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgJHtQWVRIT05fUE59LWFzeW5jLXRpbWVvdXQgXAotICAgICR7UFlUSE9OX1BOfS1jaGFyZGV0IFwKLSAgICAke1BZVEhPTl9QTn0taWRuYS1zc2wgXAotICAgICR7UFlUSE9OX1BOfS1tdWx0aWRpY3QgXAotICAgICR7UFlUSE9OX1BOfS15YXJsIFwKLSAgICAke1BZVEhPTl9QTn0tdHlwaW5nIFwKLSAgICAke1BZVEhPTl9QTn0tbWlzYyBcCi0gICAgJHtQWVRIT05fUE59LWF0dHJzIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hbGVtYmljLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hbGVtYmljLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk0YzE0Mi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYWxlbWJpYy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJBIGRhdGFiYXNlIG1pZ3JhdGlvbiB0b29sIGZvciBTUUxBbGNoZW15IgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yOGFhZjE0YTY1OTJkMTRkYmZiMmY0YWJkNTk3YWEyNyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNkNzU4NGE4ZmIwMjAzZWM4MmI5MGJhYTcyNmQyYmQ5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNiMGNiMTk0ODgzM2UwNjJmNDA0ODk5MmZiYzk3ZWNmYWFhYWMyNGFhYTBkODNhMTIwMmE5OWZiNThhZjhjNmQiCi0KLVBZUElfUEFDS0FHRSA9ICJhbGVtYmljIgotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1kYXRldXRpbCBcCi0gICAgJHtQWVRIT05fUE59LWVkaXRvciBcCi0gICAgJHtQWVRIT05fUE59LW1ha28gXAotICAgICR7UFlUSE9OX1BOfS1zcWxhbGNoZW15IFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hbGVtYmljXzEuMy4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFsZW1iaWNfMS4zLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmY2IyYjEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFsZW1iaWNfMS4zLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1hbGVtYmljLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFueWpzb24uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFueWpzb24uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMGQyMGZmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hbnlqc29uLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiV3JhcHMgdGhlIGJlc3QgYXZhaWxhYmxlIEpTT04gaW1wbGVtZW50YXRpb24gYXZhaWxhYmxlIGluIGEgY29tbW9uIGludGVyZmFjZSIKLURFU0NSSVBUSU9OID0gIkFueWpzb24gbG9hZHMgd2hpY2hldmVyIGlzIHRoZSBmYXN0ZXN0IEpTT04gbW9kdWxlIGluc3RhbGxlZCBhbmQgIFwKLXByb3ZpZGVzIGEgdW5pZm9ybSBBUEkgcmVnYXJkbGVzcyBvZiB3aGljaCBKU09OIGltcGxlbWVudGF0aW9uIGlzIHVzZWQuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9iaXRidWNrZXQub3JnL3J1bmVoL2FueWpzb24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTk4OWFhOTdlNzNjOTEyYTgzYTNjODczZmExMWRlYjA4IgotCi1pbmhlcml0IHB5cGkKLQotU1JDX1VSSVttZDVzdW1dID0gIjJlYTI4ZDZlYzMxMWFlZWViYWY5OTNjYjMwMDhiMjdjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM3ODEyZDg2M2M5YWQzZTM1YzA3MzRjNDJlMGJmMDMyMGNlOGMzYmVkODJjZDIwYWQ1NGNiMzRkMTU4MTU3YmEiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tc2ltcGxlanNvbiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hbnlqc29uXzAuMy4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFueWpzb25fMC4zLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxYjg3NDkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFueWpzb25fMC4zLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tYW55anNvbi5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hcHBkaXJzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hcHBkaXJzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ4MjY3Mi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXBwZGlycy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBzbWFsbCBQeXRob24gbW9kdWxlIGZvciBkZXRlcm1pbmluZyBhcHByb3ByaWF0ZSArIHBsYXRmb3JtLXNwZWNpZmljIGRpcnMsIGUuZy4gYSB1c2VyIGRhdGEgZGlyLiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTMxNjI1MzYzYzQ1ZWIwYzY3YzYzMGEyZjczZTQzOGU0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDRjNjc5OTA0MDgyYTIxMzNmNTU2NmM4YTBkM2FiNDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWU1ODk2ZDEzNzI4NThmOGRkMzM0NGZhZjRlNTAxNGQyMTg0OWM3NTZjOGQ1NzAxZjc4ZjhhMTAzYjM3MmQ5MiIKLQotaW5oZXJpdCBweXBpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXBwZGlyc18xLjQuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hcHBkaXJzXzEuNC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOWZmOWIzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hcHBkaXJzXzEuNC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWFwcGRpcnMuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXNuMWNyeXB0by5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXNuMWNyeXB0by5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNmUxYTUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzbjFjcnlwdG8uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQSBmYXN0LCBwdXJlIFB5dGhvbiBsaWJyYXJ5IGZvciBwYXJzaW5nIGFuZCBzZXJpYWxpemluZyBBU04uMSBzdHJ1Y3R1cmVzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3dib25kL2FzbjFjcnlwdG8iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzQzOWUzOGY1ZTA0ZmY2MmZhZTQzNjE4NDc4NmI3Y2EiCi0KLVBZUElfUEFDS0FHRSA9ICJhc24xY3J5cHRvIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZGFhZDExMjk0MDE4MTkxN2UzZmYxNjliNDdiOWJkOWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWEyMTVjYjhkYzEyZjg5MjI0NGUzYTExM2ZlMDUzOTdlZTIzYzVjNGNhN2E2OWNkNmU2OTgxMTc1NWVmYzQyZCIKLQotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tY29kZWNzIFwKLSAgICAke1BZVEhPTl9QTn0tY3J5cHQgXAotICAgICR7UFlUSE9OX1BOfS1jdHlwZXMgXAotICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCi0gICAgJHtQWVRIT05fUE59LWlvIFwKLSAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzbjFjcnlwdG9fMS4zLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXNuMWNyeXB0b18xLjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDZhYWNlMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXNuMWNyeXB0b18xLjMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1hc24xY3J5cHRvLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCi0gICAgJHtQWVRIT05fUE59LXRleHR1dGlscyBcIAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzdHJvaWQuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzdHJvaWQuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOWE2ODc4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3Ryb2lkLmluYworKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiQW4gYWJzdHJhY3Qgc3ludGF4IHRyZWUgZm9yIFB5dGhvbiB3aXRoIGluZmVyZW5jZSBzdXBwb3J0LiIKLUhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvYXN0cm9pZCIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJMR1BMLTIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWYzZDczZDgyZDE3NTNiNTliYjQ5YTZiYzYwNDZkZWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzFlYTA3ZjQ0ZGY5NTY4YTc1ZDBmMzU0YzQ5MTQzYTQ1NzVkOTA2NDVlOWZlYWQ2ZGZiNTJjMjZhODVlZDEzYSIKLQotaW5oZXJpdCBweXBpCi0KLURFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1weXRlc3QtcnVubmVyLW5hdGl2ZSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgotCi1GSUxFU18ke1BOfS10ZXN0cyArPSAiIFwKLSAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9hc3Ryb2lkL3Rlc3QqIFwKLSAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9hc3Ryb2lkL19fcHljYWNoZV9fL3Rlc3QqIFwKLSIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWRpc3R1dGlscyBcCi0gICAgJHtQWVRIT05fUE59LWxhenktb2JqZWN0LXByb3h5IFwKLSAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCi0gICAgJHtQWVRIT05fUE59LXNpeCBcCi0gICAgJHtQWVRIT05fUE59LXdyYXB0IFwKLSAgICAke1BZVEhPTl9QTn0tc2V0dXB0b29scyBcCi0iCi0KLVJERVBFTkRTXyR7UE59LXRlc3RzX2NsYXNzLXRhcmdldCArPSAiXAotICAgICR7UFlUSE9OX1BOfS11bml0dGVzdCBcCi0gICAgJHtQWVRIT05fUE59LXhtbCBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN0cm9pZF8yLjMuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3Ryb2lkXzIuMy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODczOTRkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3Ryb2lkXzIuMy4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1hc3Ryb2lkLmluYwotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWVudW0zNCBcCi0gICAgJHtQWVRIT05fUE59LWJhY2twb3J0cy1mdW5jdG9vbHMtbHJ1LWNhY2hlIFwKLSAgICAke1BZVEhPTl9QTn0tcmUgXAotICAgICR7UFlUSE9OX1BOfS1zaW5nbGVkaXNwYXRjaCBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzeW5jLXRpbWVvdXQuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzeW5jLXRpbWVvdXQuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzFhMDAyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3luYy10aW1lb3V0LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiYXN5bmNpby1jb21wYXRpYmxlIHRpbWVvdXQgY29udGV4dCBtYW5hZ2VyIgotREVTQ1JJUFRJT04gPSAiXAotVGhlIGNvbnRleHQgbWFuYWdlciBpcyB1c2VmdWwgaW4gY2FzZXMgd2hlbiB5b3Ugd2FudCB0byBhcHBseSBcCi10aW1lb3V0IGxvZ2ljIGFyb3VuZCBibG9jayBvZiBjb2RlIG9yIGluIGNhc2VzIHdoZW4gYXN5bmNpby53YWl0X2ZvcigpIFwKLWlzIG5vdCBzdWl0YWJsZS4gQWxzbyBpdCdzIG11Y2ggZmFzdGVyIHRoYW4gYXN5bmNpby53YWl0X2ZvcigpIGJlY2F1c2UgXAotdGltZW91dCBkb2Vzbid0IGNyZWF0ZSBhIG5ldyB0YXNrLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9haW8tbGlicy9hc3luYy10aW1lb3V0IgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTNmYzUwYTg4ZDBhMzY0MzEzZGY0YjIxZWYyMGMyOWUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzMDVjNGZhNTI5ZjI0ODVjNDAzZDBkYmUxNDM5MDE3NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwYzNjODE2YTAyOGQ0N2Y2NTlkNmZmNWM3NDVjYjJhY2YxZjk2NmRhMWZlNWMxOWM3N2E3MDI4MmIyNWY0YzVmIgotCi1QWVBJX1BBQ0tBR0UgPSAiYXN5bmMtdGltZW91dCIKLWluaGVyaXQgcHlwaQotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgJHtQWVRIT05fUE59LWFzeW5jaW8gXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF0b21pY3dyaXRlcy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXRvbWljd3JpdGVzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzczZTlkZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXRvbWljd3JpdGVzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiUG93ZXJmdWwgUHl0aG9uIGxpYnJhcnkgZm9yIGF0b21pYyBmaWxlIHdyaXRlcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS91bnRpdGFrZXIvcHl0aG9uLWF0b21pY3dyaXRlcyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTFjYzM2Y2ZhZmVlZmI3ODYzNjczYmNmY2IxZDRkYTQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjZTExZjc4MGE0Y2UwZmNlOGE1NWQ2NDQ5NGE4ODE3OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NWE5NDQ1YmFjMDJkOGQwNThkNWUxZmU2ODk2NTRiYTVhNjU1NmExZGZkOGNlNmVjNTVhMGVkNzk4NjZjZmE2IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF0b21pY3dyaXRlc18xLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdG9taWN3cml0ZXNfMS4zLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3YjQxZDYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF0b21pY3dyaXRlc18xLjMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWF0b21pY3dyaXRlcy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdHRyLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdHRyLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ5M2RkNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXR0ci5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlNpbXBsZSBkZWNvcmF0b3IgdG8gc2V0IGF0dHJpYnV0ZXMgb2YgdGFyZ2V0IGZ1bmN0aW9uIG9yIGNsYXNzIGluIGEgRFJZIHdheSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9kZW5pcy1yeXpoa292L2F0dHIiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT01OTgwNWEwMjg1ZjRkMmI2YWJkZWRhZTczZGI0ZjVjMSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjY4YjlhNTAzOTkxMjQxZmIyZGYyODQ4ODY4NmIwZTFlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkwOTE1NDgwNThkMTdmMTMyNTk2ZTYxZmE3NTE4ZTUwNGY3NmI5YTRjNjFjYTdkODZlMWY5NmRiZjdkNDc3NWQiCi0KLWluaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF0dHJfMC4zLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXR0cl8wLjMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc5ZDZjYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXR0cl8wLjMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1hdHRyLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF0dHJzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdHRycy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1ZDI4YTQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF0dHJzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkNsYXNzZXMgV2l0aG91dCBCb2lsZXJwbGF0ZSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYXR0cnMub3JnLyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDRhYjI1OTQ5YTczZmU3ZDRmZGVlOTNiY2JkYmY4ZmYiCi0KLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmN2I3Y2UxNjU3MGZlOTk2NWFjZDZkMzAxMDFhMjhmNjJmYjRhN2Y5ZTkyNmIzYmJjOWI2MWY4YjA0MjQ3ZTcyIgotU1JDX1VSSVttZDVzdW1dID0gIjViMmRiNTBmY2MzMWJlMzRkMzI3OTgxODNjOWJkMDYyIgotCi1pbmhlcml0IHB5cGkKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1jcnlwdCBcCi0gICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF0dHJzXzE5LjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdHRyc18xOS4zLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzYmVjMGYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF0dHJzXzE5LjMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1hdHRycy5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXV0b21hdC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXV0b21hdC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjMzkyMjEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF1dG9tYXQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiU2VsZi1zZXJ2aWNlIGZpbml0ZS1zdGF0ZSBtYWNoaW5lcyBmb3IgdGhlIHByb2dyYW1tZXIgb24gdGhlIGdvIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dseXBoL0F1dG9tYXQiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTRhZDIxM2JjY2E4MTY4OGU5NDU5M2U1ZjYwYzg3NDc3IgotCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tYXV0b21hdDoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0N2U5ODBhNDgyMDFhMWRhYmUzN2ZhMTFmMDE4NzAxMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyNjlhMDlkZmIwNjNhM2IwNzg5ODNmNDk3NmQ4M2YwYTBkM2U2ZTdhYWY4ZTI3ZDhkZjEwOTVlMDlkYzRhNDg0IgotCi1QWVBJX1BBQ0tBR0UgPSAiQXV0b21hdCIKLQotaW5oZXJpdCBweXBpCi0KLVNSQ19VUklfYXBwZW5kID0gIiBcCi0gICAgZmlsZTovLzAwMDEtc2V0dXAucHktcmVtb3ZlLXRoZS1kZXBlbmRlbmN5LW9uLW0yci5wYXRjaCBcCi0iCi0KLURFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzLXNjbS1uYXRpdmUiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAke1BZVEhPTl9QTn0tYXR0cnMgXAotICAgJHtQWVRIT05fUE59LXNpeCBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXV0b21hdF8wLjguMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdXRvbWF0XzAuOC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWM4YzljLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdXRvbWF0XzAuOC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWF1dG9tYXQuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbi5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwNDkzZTEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob24uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiU0RLIGZvciBjb25uZWN0aW5nIHRvIEFXUyBJb1QgdXNpbmcgUHl0aG9uLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbiIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCAmIChFUEwtMS4wIHwgRURMLTEuMCkiCi1MSUNFTlNFXyR7UE59LWV4YW1wbGVzID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gIlwKLSAgICBmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTlhYzQ5OTAxYjgzM2U3NjljN2Q2ZjIxZThkYmQ3YjMwIFwKLSAgICBmaWxlOi8vQVdTSW9UUHl0aG9uU0RLL2NvcmUvcHJvdG9jb2wvcGFoby9jbGllbnQucHk7ZW5kbGluZT0xNDttZDU9NWEzYzhhMWE0YmI3MWJkOTM0ZjQ1MGVjZmY5NzJhZDkgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmIzZGY2Mjk4MjdkOGJjMThjYTRkOTI3YjQ4ODVhMTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2U2N2M4Y2ZlZWU4YTFjOGZkMjUxYmNjNDE4ZGU5ZDRkY2E2OTc3NTM1NjVjOWE5ZTYxNDUyNTE3OWQ5NTU1ZCIKLQotaW5oZXJpdCBweXBpCi0KLVBZUElfUEFDS0FHRSA9ICJBV1NJb1RQeXRob25TREsiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICAgICBpbnN0YWxsIC1kIC1tMDc1NSAke0R9JHtkYXRhZGlyfS8ke0JQTn0vZXhhbXBsZXMKLSAgICAgICAgY3AgLS1wcmVzZXJ2ZT1tb2RlLHRpbWVzdGFtcHMgLVIgJHtTfS9zYW1wbGVzLyogJHtEfSR7ZGF0YWRpcn0vJHtCUE59L2V4YW1wbGVzCi0gICAgICAgICMgdGhpcyByZXF1aXJlcyB0aGUgZnVsbCBibG93biBBV1MgUHl0aG9uIFNESwotICAgICAgICBybSAtciAke0R9JHtkYXRhZGlyfS8ke0JQTn0vZXhhbXBsZXMvYmFzaWNQdWJTdWIKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LWV4YW1wbGVzIgotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tY3J5cHQgXAotICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCi0gICAgJHtQWVRIT05fUE59LWlvIFwKLSAgICAke1BZVEhPTl9QTn0tanNvbiBcCi0gICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAotICAgICR7UFlUSE9OX1BOfS1tYXRoIFwKLSAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKLSAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0iCi1SREVQRU5EU18ke1BOfS1leGFtcGxlcyArPSAiJHtQTn0iCi0KLUZJTEVTXyR7UE59LWV4YW1wbGVzID0gIiR7ZGF0YWRpcn0vJHtCUE59L2V4YW1wbGVzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbl8xLjQuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uXzEuNC43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTBlOTczLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uXzEuNC43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob24uaW5jCi0KLVJERVBFTkRTXyR7UE59LWV4YW1wbGVzICs9ICIke1BZVEhPTl9QTn0tYXJncGFyc2UiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFiZWwuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhYmVsLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzU1YjQ1OS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFiZWwuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQSBjb2xsZWN0aW9uIG9mIHRvb2xzIGZvciBpbnRlcm5hdGlvbmFsaXppbmcgUHl0aG9uIGFwcGxpY2F0aW9ucyIKLUhPTUVQQUdFID0gImh0dHA6Ly9iYWJlbC5lZGdld2FsbC5vcmcvIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05NDI0NjlkZjkzMDVhYmIxYzU5ZTk1Zjc3ODMxMDM4NCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjgzYzE1OGI3ZGFlOTEzNTc1MGE3Y2YyMDRlNmUyZWVhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4NjEzNWFlMTAxZTMxZTJjOGVjMjBhNGUwYzUyMjBmNGVlZDEyNDg3ZDVjZjNmNzhiZTdlOThkM2E1N2ZjMjgiCi0KLVBZUElfUEFDS0FHRSA9ICJCYWJlbCIKLQotaW5oZXJpdCBweXBpCi0KLUNMRUFOQlJPS0VOID0gIjEiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1jb2RlY3MgXAotICAgICR7UFlUSE9OX1BOfS1kaWZmbGliIFwKLSAgICAke1BZVEhPTl9QTn0tZGlzdHV0aWxzIFwKLSAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKLSAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCi0gICAgJHtQWVRIT05fUE59LXBpY2tsZSBcCi0gICAgJHtQWVRIT05fUE59LXB5dHogXAotICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWJlbF8yLjcuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWJlbF8yLjcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdjMTY2ZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFiZWxfMi43LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tYmFiZWwuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWNrcG9ydHMtYWJjXzAuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWNrcG9ydHMtYWJjXzAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU4OGEzMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFja3BvcnRzLWFiY18wLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1TVU1NQVJZID0gImNvbGxlY3Rpb25zLmFiYyBmcm9tIFB5dGhvbiAzLjUiCi1ERVNDUklQVElPTiA9ICJBIGJhY2twb3J0IG9mIHJlY2VudCBhZGRpdGlvbnMgdG8gdGhlICdjb2xsZWN0aW9ucy5hYmMnIG1vZHVsZSIKLUxJQ0VOU0UgPSAiUFNGIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZGQ5OGQwMWQ0NzFmYWM4ZDhkYmRkOTc1MjI5ZGJhMDMiCi0KLVBZUElfUEFDS0FHRSA9ICJiYWNrcG9ydHNfYWJjIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2QxOTM2ZWMxODNhMzU4NjI5MGFkZjYwZjZmOTY3NjQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDMzYmU1NDUxNGEwM2UyNTVkZjc1YzVhZWU4ZjllNjcyZjY2M2Y5M2FiYjcyMzQ0NGNhZWM4ZmU0MzQzN2JkZSIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWNrcG9ydHMtZnVuY3Rvb2xzLWxydS1jYWNoZS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFja3BvcnRzLWZ1bmN0b29scy1scnUtY2FjaGUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2U0NGEyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWNrcG9ydHMtZnVuY3Rvb2xzLWxydS1jYWNoZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIkJhY2twb3J0IG9mIGZ1bmN0b29scy5scnVfY2FjaGUgZnJvbSBQeXRob24gMy4zIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2phcmFjby9iYWNrcG9ydHMuZnVuY3Rvb2xzX2xydV9jYWNoZSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zZXR1cC5weTtiZWdpbmxpbmU9NTc7ZW5kbGluZT01NzttZDU9OThmYzM2NThlNTk3MGQyNmY2YjIxMDk4MDhjNzY2YmUiCi0KLVBZUElfUEFDS0FHRSA9ICJiYWNrcG9ydHMuZnVuY3Rvb2xzX2xydV9jYWNoZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjIwZjUzZjU0Y2QzZjA0YjMzNDZjZTc1YTU0OTU5NzU0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlkOTg2OTdmMDg4ZWIxYjBmYTQ1MTM5MWY5MWFmYjVlM2ViZGUxNmJiZGIyNzI4MTlmZDA5MTE1MWZkYTRmMWEiCi0KLURFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzLXNjbS1uYXRpdmUiCi0KLWluaGVyaXQgcHlwaQotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1waWNrbGUgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWNrcG9ydHMtZnVuY3Rvb2xzLWxydS1jYWNoZV8xLjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFja3BvcnRzLWZ1bmN0b29scy1scnUtY2FjaGVfMS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTBmMmYxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWNrcG9ydHMtZnVuY3Rvb2xzLWxydS1jYWNoZV8xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLWJhY2twb3J0cy1mdW5jdG9vbHMtbHJ1LWNhY2hlLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFja3BvcnRzLXNzbF8zLjcuMC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhY2twb3J0cy1zc2xfMy43LjAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTAzMmE3Yy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFja3BvcnRzLXNzbF8zLjcuMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgc3NsLm1hdGNoX2hvc3RuYW1lKCkgZnVuY3Rpb24gZnJvbSBQeXRob24gMy40IgotREVTQ1JJUFRJT04gPSAiVGhlIFNlY3VyZSBTb2NrZXRzIGxheWVyIGlzIG9ubHkgYWN0dWFsbHkgc2VjdXJlIGlmIHlvdSBjaGVjayB0aGUgaG9zdG5hbWUgaW4gdGhlIFwKLWNlcnRpZmljYXRlIHJldHVybmVkIGJ5IHRoZSBzZXJ2ZXIgdG8gd2hpY2ggeW91IGFyZSBjb25uZWN0aW5nLCBhbmQgdmVyaWZ5IHRoYXQgaXQgbWF0Y2hlcyB0byBob3N0bmFtZSBcCi10aGF0IHlvdSBhcmUgdHJ5aW5nIHRvIHJlYWNoLiBCdXQgdGhlIG1hdGNoaW5nIGxvZ2ljLCBkZWZpbmVkIGluIFJGQzI4MTgsIGNhbiBiZSBhIGJpdCB0cmlja3kgdG8gaW1wbGVtZW50IFwKLW9uIHlvdXIgb3duLiBTbyB0aGUgc3NsIHBhY2thZ2UgaW4gdGhlIFN0YW5kYXJkIExpYnJhcnkgb2YgUHl0aG9uIDMuMiBhbmQgZ3JlYXRlciBub3cgaW5jbHVkZXMgYSBcCi1tYXRjaF9ob3N0bmFtZSgpIGZ1bmN0aW9uIGZvciBwZXJmb3JtaW5nIHRoaXMgY2hlY2sgaW5zdGVhZCBvZiByZXF1aXJpbmcgZXZlcnkgYXBwbGljYXRpb24gdG8gXAotaW1wbGVtZW50IHRoZSBjaGVjayBzZXBhcmF0ZWx5LiBUaGlzIGJhY2twb3J0IGJyaW5ncyBtYXRjaF9ob3N0bmFtZSgpIHRvIHVzZXJzIG9mIGVhcmxpZXIgdmVyc2lvbnMgb2YgUHl0aG9uIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PWIyYWRiZThiZmRlYjYyNWM5YTAxYWZkOWFhYTY2NjE5IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzJkMmY1OTNhZjAxYTA0NmJlYzNkMmY1MTgxYTQyMGEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmI4MmU2MGY5ZmJmNGMwODBlYWJkOTU3YzM5ZjA2NDFmMGZjMjQ3ZDlhMTZlMzFlMjZkNTk0ZDhmNDJiOWZkMiIKLQotUFlQSV9QQUNLQUdFID0gImJhY2twb3J0cy5zc2xfbWF0Y2hfaG9zdG5hbWUiCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXBrZ3V0aWwiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmNyeXB0LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iY3J5cHQuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjY0MDAzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iY3J5cHQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiTW9kZXJuIHBhc3N3b3JkIGhhc2hpbmcgZm9yIHlvdXIgc29mdHdhcmUgYW5kIHlvdXIgc2VydmVycy4iCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04ZjdiYjA5NGM3MjMyYjA1OGM3ZTlmMmU0MzFmMzg5YyIKLQotREVQRU5EUyArPSAiJHtQWVRIT05fUE59LWNmZmktbmF0aXZlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWQ2ZjkzYjU3NWNlNTI0NzBhZjM3YThlN2RjZTc2ZmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGIwMDY5Yzc1MmVjMTQxNzJjNWY3ODIwOGYxODYzZDdhZDY3NTVhNmZhZTZmZTc2ZWMyYzgwZDEzYmU0MWU0MiIKLQotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAotICAgICR7UFlUSE9OX1BOfS1jZmZpIFwKLSAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKLSAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAotICAgICR7UFlUSE9OX1BOfS1zaXggXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJjcnlwdF8zLjEuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iY3J5cHRfMy4xLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxMzZhYTQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJjcnlwdF8zLjEuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1iY3J5cHQuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJlYXV0aWZ1bHNvdXA0LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iZWF1dGlmdWxzb3VwNC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlOTViYjcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJlYXV0aWZ1bHNvdXA0LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiU2NyZWVuLXNjcmFwaW5nIGxpYnJhcnkiCi1IT01FUEFHRSA9ICIgaHR0cHM6Ly93d3cuY3J1bW15LmNvbS9zb2Z0d2FyZS9CZWF1dGlmdWxTb3VwL2JzNCIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PWYyZDM4ZDhhNDBiZjczZmQ0YjNkMTZjYTJlNTg4MmQxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWRiZGI1NmMwMDllNDYzMmJhZTdiZWQxYjM4NTgwNGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDVmZDgyNWViMDFjMjkwODc3NjU3YTU2ZGY0YzZlNGMzMTFiMzk2NWJkYTc5MGM2MTNhM2Q2ZmIwMWE1NDYyYSIKLQotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgICAke1BZVEhPTl9QTn0taHRtbDVsaWIgXAotICAgICR7UFlUSE9OX1BOfS1seG1sIFwKLSAgICAke1BZVEhPTl9QTn0tc291cHNpZXZlIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJlYXV0aWZ1bHNvdXA0XzQuOC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJlYXV0aWZ1bHNvdXA0XzQuOC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDcyODVhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iZWF1dGlmdWxzb3VwNF80LjguMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1iZWF1dGlmdWxzb3VwNC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iZWhhdmUuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJlaGF2ZS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlZDc1ODAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJlaGF2ZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gIkEgYmVoYXZpb3ItZHJpdmVuIGRldmVsb3BtZW50IGZyYW1ld29yaywgUHl0aG9uIHN0eWxlIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2JlaGF2ZS9iZWhhdmUiCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQ5NTA0MzllOGVhNmVkMjMzZTQyODhmNWUxYTQ5YzA2IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiM2YwNWM4NTlhMWM0NWY1ZWQzM2U5MjU4MTdhZDg4N2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjk2NjIzMjdhYTUzMjk0YzEzNTFiMGE5YzM2OTA5M2NjZWMxZDIxMDI2ZjA1MGMzYmQ5YjNlNWNjY2Y4MWE4NiIKLQotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1wYXJzZS10eXBlIFwKLSAgICAke1BZVEhPTl9QTn0tc2V0dXB0b29scyBcCi0gICAgJHtQWVRIT05fUE59LXNpeCBcCi0gICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJlaGF2ZV8xLjIuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iZWhhdmVfMS4yLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2MjIxNjguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJlaGF2ZV8xLjIuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1iZWhhdmUuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1hcmdwYXJzZSBcCi0gICAgJHtQWVRIT05fUE59LWVudW0zNCBcCi0gICAgJHtQWVRIT05fUE59LXRyYWNlYmFjazIgXAotICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iaXRhcnJheS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYml0YXJyYXkuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMmRhMzQ4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iaXRhcnJheS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1TVU1NQVJZID0gIkEgaGlnaC1sZXZlbCBQeXRob24gZWZmaWNpZW50IGFycmF5cyBvZiBib29sZWFucyAtLSBDIGV4dGVuc2lvbiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbGFuc2NobmVsbC9iaXRhcnJheSIKLUxJQ0VOU0UgPSAiUFNGIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PWRjMzAxYTI1ZWJlMjEwZGNjNTNiMGEyZDVhMDM4ZWFlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTQ2YmY4NjlmNmFkZjM0ZjViMGRjODJiNDY5NzkzYjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmVkNjc1ZjQ2MGJiMGQzZDY2ZmQ4MDQyYTZmMWYwZDM2Y2YyMTNlNTJlNzJhNzQ1MjgzZGRiMjQ1ZGE3YjljZiIKLQotaW5oZXJpdCBweXBpCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iaXRhcnJheV8xLjIuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iaXRhcnJheV8xLjIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc4YzdhYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYml0YXJyYXlfMS4yLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tYml0YXJyYXkuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmxpbmtlci5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmxpbmtlci5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhZjM5MDguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJsaW5rZXIuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1ERVNDUklQVElPTiA9ICJGYXN0LCBzaW1wbGUgb2JqZWN0LXRvLW9iamVjdCBhbmQgYnJvYWRjYXN0IHNpZ25hbGluZy4iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT05NDZkN2U4OWFmNmY3NzMzYWVhZWJlZDU2MzVkMjY4MiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjhiMzcyMjM4MWY4M2MyODEzYzUyZGUzMDE2YjY4ZDMzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ3MWFlZTI1ZjM5OTJiZDMyNWFmYTM3NzJmMTA2M2RiZGJiY2E5NDdhMDQxYjhiODk0NjZkYzAwZDYwNmY4YjYiCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ibGlua2VyXzEuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ibGlua2VyXzEuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM0MTY0ZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmxpbmtlcl8xLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1ibGlua2VyLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJvb2xlYW5weS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYm9vbGVhbnB5LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM1ZDdkMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYm9vbGVhbnB5LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVNVTU1BUlkgPSAiRGVmaW5lIGJvb2xlYW4gYWxnZWJyYXMsIGNyZWF0ZSBhbmQgcGFyc2UgYm9vbGVhbiBleHByZXNzaW9ucyBhbmQgY3JlYXRlIGN1c3RvbSBib29sZWFuIERTTCIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iYXN0aWtyL2Jvb2xlYW4ucHkiCi0KLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWUzMTk3NDdhNWViOTRjZGRmNjQ2MDM3YzAxZGRiYTQ3IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTE4OWQxMTVhMzhmODRmNWRmNzQzMDE0OTI2YTkxNTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmQxOWI0MTI0MzU2MTFlY2M3MTI2MDNkMGZkN2QwZTI4MGUyNDY5OGU3YTZlM2Q1ZjYxMDQ3Mzg3MGM1ZGQxZSIKLQotUFlQSV9QQUNLQUdFID0gImJvb2xlYW4ucHkiCi0KLWluaGVyaXQgcHlwaQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2FjaGV0b29scy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2FjaGV0b29scy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZDNiYzYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhY2hldG9vbHMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotU1VNTUFSWSA9ICJFeHRlbnNpYmxlIG1lbW9pemluZyBjb2xsZWN0aW9ucyBhbmQgZGVjb3JhdG9ycyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS90a2VtL2NhY2hldG9vbHMiCi1ERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSBwcm92aWRlcyB2YXJpb3VzIG1lbW9pemluZyBcCi1jb2xsZWN0aW9ucyBhbmQgZGVjb3JhdG9ycywgaW5jbHVkaW5nIHZhcmlhbnRzIG9mIHRoZSBcCi1QeXRob24gMyBTdGFuZGFyZCBMaWJyYXJ5IEBscnVfY2FjaGUgZnVuY3Rpb24gZGVjb3JhdG9yLiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTI3Zjc1MThlYjZmN2RjNjg2ZDBmOTUzYjJmMjhkYWU1IgotCi1pbmhlcml0IHB5cGkKLQotU1JDX1VSSVttZDVzdW1dID0gIjZhODhkZjEzNDY3ZTgwZWI2MWRkMmJlZGFkMTliODNjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlhNTJkZDk3YTg1ZjI1N2Y0ZTQxMjdmMTU4MThlNzFhMGM3ODk5ZjEyMWIzNDU5MWZjYzExNzNlYTc5YTAxOTgiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYWNoZXRvb2xzXzQuMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhY2hldG9vbHNfNC4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjMTJhZDAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhY2hldG9vbHNfNC4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tY2FjaGV0b29scy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYW4uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhbi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkMDEwMGQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhbi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIkNvbnRyb2xsZXIgQXJlYSBOZXR3b3JrIChDQU4pIGludGVyZmFjZSBtb2R1bGUgZm9yIFB5dGhvbiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJMR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiNzI0NTUzYTMzMDQ3ODI3MDI2NzM4MGI0ODg4YTE4ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZmVmYjVjMWU3ZTdmMDdmYWVmYzAyYzZlYWM3OWY5YjU4Mzc2ZjAwNzA0OGEwNGQ4ZTdmMzI1ZDQ4ZWM2YjJlIgotCi1QWVBJX1BBQ0tBR0U9InB5dGhvbi1jYW4iCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAotICAgICR7UFlUSE9OX1BOfS1jdHlwZXMgXAotICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKLSAgICAke1BZVEhPTl9QTn0tbWlzYyBcCi0gICAgJHtQWVRIT05fUE59LW5ldHNlcnZlciBcCi0gICAgJHtQWVRIT05fUE59LXNxbGl0ZTMgXAotICAgICR7UFlUSE9OX1BOfS13cmFwdCBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2FuXzMuMy4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhbl8zLjMuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBlZGI2NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2FuXzMuMy4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1jYW4uaW5jCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tYXJncGFyc2UgXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKLSAgICAke1BZVEhPTl9QTn0temxpYiBcCi0iICAgIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhc3NhbmRyYS1kcml2ZXIuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhc3NhbmRyYS1kcml2ZXIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2ViZmVjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYXNzYW5kcmEtZHJpdmVyLmluYworKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiRGF0YVN0YXggUHl0aG9uIERyaXZlciBmb3IgQXBhY2hlIENhc3NhbmRyYSIKLURFU0NSSVBUSU9OID0gIkEgbW9kZXJuLCBmZWF0dXJlLXJpY2ggYW5kIGhpZ2hseS10dW5hYmxlIFB5dGhvbiBjbGllbnQgXAotbGlicmFyeSBmb3IgQXBhY2hlIENhc3NhbmRyYSAoMS4yKykgYW5kIERhdGFTdGF4IEVudGVycHJpc2UgKDMuMSspIHVzaW5nIFwKLWV4Y2x1c2l2ZWx5IENhc3NhbmRyYSdzIGJpbmFyeSBwcm90b2NvbCBhbmQgQ2Fzc2FuZHJhIFF1ZXJ5IExhbmd1YWdlIHYzLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9kYXRhc3RheC9weXRob24tZHJpdmVyIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZWU0MTExMmE0NGZlNzAxNGRjZTMzZTI2NDY4YmE5MyIKLVNSQ05BTUUgPSAiY2Fzc2FuZHJhLWRyaXZlciIKLQotU1JDX1VSSVttZDVzdW1dID0gImM1YmVkMDI2YmY0OGM4MjE0MjRjMWY2Mjk2MTkzOTA4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI2NTIxOGUyNTgyMjc3ZjViNzdkMTQzNmU0MjBkYjg2MTZmNjNlMzQzN2E5ZTgzOWNkY2Q3MTcyZDc2MGU4NjEiCi0KLURJU1RVVElMU19CVUlMRF9BUkdTICs9ICIgXAotICAgIC0tbm8tbGliZXYgXAotIgotRElTVFVUSUxTX0lOU1RBTExfQVJHUyArPSAiIFwKLSAgICAtLW5vLWxpYmV2IFwKLSIKLQotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWN5dGhvbiBcCi0gICAgJHtQWVRIT05fUE59LW11bHRpcHJvY2Vzc2luZyBcCi0gICAgJHtQWVRIT05fUE59LXNpeCBcCi0gICAgJHtQWVRIT05fUE59LWpzb24gXAotICAgIGxpYmV2ZW50IFwKLSIKLQotREVQRU5EUyArPSAiXAotICAgICR7UFlUSE9OX1BOfS1jeXRob24gXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNlcnRpZmkuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNlcnRpZmkuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGZhMWYyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZXJ0aWZpLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIHBhY2thZ2UgZm9yIHByb3ZpZGluZyBNb3ppbGxhJ3MgQ0EgQnVuZGxlLiIKLURFU0NSSVBUSU9OID0gIlRoaXMgaW5zdGFsbGFibGUgUHl0aG9uIHBhY2thZ2UgY29udGFpbnMgYSBDQSBCdW5kbGUgdGhhdCB5b3UgY2FuIHJlZmVyZW5jZSBpbiB5b3VyIFwKLVB5dGhvbiBjb2RlLiBUaGlzIGlzIHVzZWZ1bCBmb3IgdmVyaWZ5aW5nIEhUVFAgcmVxdWVzdHMsIGZvciBleGFtcGxlLiAgVGhpcyBpcyB0aGUgc2FtZSBDQSBCdW5kbGUgXAotd2hpY2ggc2hpcHMgd2l0aCB0aGUgUmVxdWVzdHMgY29kZWJhc2UsIGFuZCBpcyBkZXJpdmVkIGZyb20gTW96aWxsYSBGaXJlZm94J3MgY2Fub25pY2FsIHNldC4iCi1IT01FUEFHRSA9ICIgaHR0cDovL2NlcnRpZmkuaW8vIgotCi1MSUNFTlNFID0gIklTQyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWY3N2Y2MWQxNGVlNmZlYWM0MjI4ZDNlYmQyNmNjMWYxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGQ1MjI5YzRkOWYwYTRhNzkxMDZmOWUyYzJjZmQzODEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjViNjRjN2RhNGNkNzQ3OTU5NGQwMzVjMDhjMmQ4MDllYjRhYWIzYTI2ZTVhOTkwZWE5OGNjNDUwYzMyMGYxZiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNlcnRpZmlfMjAxOS4xMS4yOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZXJ0aWZpXzIwMTkuMTEuMjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkZmU2MjMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNlcnRpZmlfMjAxOS4xMS4yOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWNlcnRpZmkuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2ZmaS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2ZmaS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyYjBjM2IuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNmZmkuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSA9ICJGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSBmb3IgUHl0aG9uIGNhbGxpbmcgQyBjb2RlIgotSE9NRVBBR0UgPSAiaHR0cDovL2NmZmkucmVhZHRoZWRvY3Mub3JnLyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTY3N2UyZmRiZjdjZGRhNjFkNmRkMmI1N2RmNTQ3YmYiCi1ERVBFTkRTICs9ICJsaWJmZmkgJHtQWVRIT05fUE59LXB5Y3BhcnNlciIKLQotU1JDX1VSSVttZDVzdW1dID0gIjY1MjIwM2NmOTlmYWEyNTRlZmZmN2ZhYjIzYzJmM2EyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU5OWExZThmZjA1N2FjNTMwYzlhZDE3NzgyOTNjNjY1Y2I4MWE3OTE0MjFmNDY5MjJkODBhODY0NzNjMTMzNDYiCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICIgXAotICAgICR7UFlUSE9OX1BOfS1jdHlwZXMgXAotICAgICR7UFlUSE9OX1BOfS1pbyBcCi0gICAgJHtQWVRIT05fUE59LXB5Y3BhcnNlciBcCi0gICAgJHtQWVRIT05fUE59LXNoZWxsIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNmZmlfMS4xMy4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNmZmlfMS4xMy4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzY2N2I4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZmZpXzEuMTMuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotcmVxdWlyZSBweXRob24tY2ZmaS5pbmMKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jaGFyZGV0LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jaGFyZGV0LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjMwNTI5OS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2hhcmRldC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIlVuaXZlcnNhbCBlbmNvZGluZyBkZXRlY3RvciBmb3IgUHl0aG9uIDIgYW5kIDMiCi1MSUNFTlNFID0gIkxHUEwtMi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMiCi0KLWluaGVyaXQgcHlwaQotCi0jIHNldHVwLnB5IG9mIGNoYXJkZXQgbmVlZHMgdGhpcy4KLURFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1weXRlc3QtcnVubmVyLW5hdGl2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdkZDFiYTdmOWM3N2UzMjM1MWIwYTBjZmFjZjQwNTVjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg0YWI5MmVkMWM0ZDRmMTY5MTZlMDU5MDZiNmI3NWE2YzBmYjVkYjgyMWNjNjVlNzBjYmQ2NGEzZTJhNWVhYWUiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWNsaSIKLVJERVBFTkRTXyR7UE59LWNsaSA9ICIke1BOfSAiCi1GSUxFU18ke1BOfS1jbGkgKz0gIiBcCi0gICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vY2hhcmRldC9jbGkgXAotIgotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNoYXJkZXRfMy4wLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2hhcmRldF8zLjAuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I2ZmVlZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2hhcmRldF8zLjAuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1jaGFyZGV0LmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWFyZ3BhcnNlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNoZWV0YWhfMi40LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2hlZXRhaF8yLjQuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjBmYzJmZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2hlZXRhaF8yLjQuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIHRlbXBsYXRlIGVuZ2luZSBhbmQgY29kZSBnZW5lcmF0aW9uIHRvb2wiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWFmZjExMDc1MTRhYTZhYWU5NDhmOWZlNzFmZGMzOTNiIgotCi1QUiA9ICJyMyIKLQotUFlQSV9QQUNLQUdFID0gIkNoZWV0YWgiCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24tcGlja2xlIHB5dGhvbi1wcHJpbnQiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4NTM5MTcxMTZlNzMxYWZiYzhjOGE0M2MzN2U2ZGRiYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiZTMwODIyOWYwYzFlNWU1YWY0ZjI3ZDdlZTA2ZDkwYmIxOWU2YWYzMDU5Nzk0ZTVmZDUzNmE2ZjI5YTliNTUwIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNsaWNrLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jbGljay5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5ZGZkNTYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNsaWNrLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBzaW1wbGUgd3JhcHBlciBhcm91bmQgb3B0cGFyc2UgZm9yIHBvd2VyZnVsIGNvbW1hbmQgbGluZSB1dGlsaXRpZXMuIgotREVTQ1JJUFRJT04gPSAiXAotQ2xpY2sgaXMgYSBQeXRob24gcGFja2FnZSBmb3IgY3JlYXRpbmcgYmVhdXRpZnVsIGNvbW1hbmQgbGluZSBpbnRlcmZhY2VzIFwKLWluIGEgY29tcG9zYWJsZSB3YXkgd2l0aCBhcyBsaXR0bGUgY29kZSBhcyBuZWNlc3NhcnkuIEl0J3MgdGhlICJDb21tYW5kIFwKLUxpbmUgSW50ZXJmYWNlIENyZWF0aW9uIEtpdCIuIEl0J3MgaGlnaGx5IGNvbmZpZ3VyYWJsZSBidXQgY29tZXMgd2l0aCBcCi1zZW5zaWJsZSBkZWZhdWx0cyBvdXQgb2YgdGhlIGJveC4iCi1IT01FUEFHRSA9ICJodHRwOi8vY2xpY2sucG9jb28ub3JnLyIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5yc3Q7bWQ1PWMxM2VkODkwYjIxMGE4ODJjMTc3ODIxNjY5NGM5OGM3IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2Y1M2Q1MGY3YjczNzNlYmM3OTYzZjlmZjY5NzQ1MGEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWI5NGI0OTUyMWY2NDU2NjcwZmRiMzBjZDgyYTRlY2E5NDEyNzg4YTkzZmE2ZGQ2ZGY3MmM5NGQ1YThmZjJkNyIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiY2xpY2svKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKLQotQ0xFQU5CUk9LRU4gPSAiMSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0taW8gXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotICAgICIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1QWVBJX1BBQ0tBR0UgPSAiQ2xpY2siCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2xpY2tfNy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNsaWNrXzcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjYzZTI3Yy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2xpY2tfNy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tY2xpY2suaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tY29udGV4dGxpYiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jbWQyLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jbWQyLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjgzODFhZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY21kMi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIkV4dHJhIGZlYXR1cmVzIGZvciBzdGFuZGFyZCBsaWJyYXJ5J3MgY21kIG1vZHVsZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9wYWNrYWdlcy5weXRob24ub3JnL2NtZDIvIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05NzkxY2QyNGNhN2QxODA3Mzg4Y2NkNTVjZDA2NmRlZiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjZkYjY2YTA2MjEwZDVmMWVkYjQ0NjkzYjg4N2VkNjJiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhhZDEyZWYzY2M0NmQwMzA3M2M1NDViNmU4MGEzZjg0YTU5MjFmNjY1MzA3M2E2MGU3ZDlhN2ZmM2IzNTJjOWUiCi0KLWluaGVyaXQgcHlwaQotCi1ERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tc2V0dXB0b29scy1zY20tbmF0aXZlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY21kMl8wLjkuMjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY21kMl8wLjkuMjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3YjZhZTIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNtZDJfMC45LjIzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1jbWQyLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1kb2N0ZXN0IFwKLSAgICAke1BZVEhPTl9QTn0tcHlwYXJzaW5nIFwKLSAgICAke1BZVEhPTl9QTn0tcHlwZXJjbGlwIFwKLSAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAotICAgICR7UFlUSE9OX1BOfS1zaXggXAotICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSAgICAke1BZVEhPTl9QTn0tdGV4dHV0aWxzIFwKLSAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY29sb3JlZGxvZ3MuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbG9yZWRsb2dzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRiMWQ3NS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY29sb3JlZGxvZ3MuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQ29sb3JlZCB0ZXJtaW5hbCBvdXRwdXQgZm9yIFB5dGhvbidzIGxvZ2dpbmcgbW9kdWxlIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9jb2xvcmVkbG9ncy5yZWFkdGhlZG9jcy5pbyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NjkwZGEyOThhNDM4MDU3OTdhNGZhN2JiZTE4MGIzYzYiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwYTE4Njk2NmExOTU1ZmZmOGNmOTQ4OTM3M2U2OTFkOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiODY5YTJkZGEzZmE4ODE1NGI5ZGQ4NTBlMjc4MjhkODc1NWJmYWI1YTgzOGExYzk3ZmJjODUwYzZlMzc3YzM2IgotCi1pbmhlcml0IHB5cGkKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaWUgInMvZmluZF9wdGhfZGlyZWN0b3J5KCksLycnLC9nIiAke1N9L3NldHVwLnB5Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIHJtIC1yZiAke0R9JHtkYXRhZGlyfQotfQotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1odW1hbmZyaWVuZGx5IFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY29sb3JlZGxvZ3NfMTAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb2xvcmVkbG9nc18xMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmMxYjI1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb2xvcmVkbG9nc18xMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWNvbG9yZWRsb2dzLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbmZpZ2FyZ3BhcnNlLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb25maWdhcmdwYXJzZS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3ZDI5NmYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbmZpZ2FyZ3BhcnNlLmluYworKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiQSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciBhcmdwYXJzZSB0aGF0IGFsbG93cyBvcHRpb25zIHRvIGFsc28gYmUgc2V0IHZpYSBjb25maWcgZmlsZXMgYW5kL29yIGVudmlyb25tZW50IHZhcmlhYmxlcy4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYncyL0NvbmZpZ0FyZ1BhcnNlIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kYTc0NjQ2MzcxNGNjMzU5OTllZDlhNDIzMzlmMjk0MyIKLQotU1JDX1VSSVttZDVzdW1dID0gImFiYTE1Yjc5NzNiN2E3MGJlYTg2ZmQ2OTI4OWY4ZmUzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJhYWYwZmQyYzFjMTA4ZDAwN2Y0MDJkYWI1NDgxYWM1ZjEyZDc3ZDAzNDgyNWJmNWEyN2Y4MjI0NzU3YmQwYWMiCi0KLVBZUElfUEFDS0FHRSA9ICJDb25maWdBcmdQYXJzZSIKLQotaW5oZXJpdCBweXBpCi0KLVBBQ0tBR0VDT05GSUcgPz0gInlhbWwiCi1QQUNLQUdFQ09ORklHW3lhbWxdID0gIiwsLCR7UFlUSE9OX1BOfS1weXlhbWwiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWNvcmUgXAotICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbmZpZ2FyZ3BhcnNlXzAuMTUuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb25maWdhcmdwYXJzZV8wLjE1LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkNjRiOGQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbmZpZ2FyZ3BhcnNlXzAuMTUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1jb25maWdhcmdwYXJzZS5pbmMKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbmZpZ3BhcnNlci5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY29uZmlncGFyc2VyLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGVjZmUyMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY29uZmlncGFyc2VyLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiVGhpcyBtb2R1bGUgcHJvdmlkZXMgdGhlIENvbmZpZ1BhcnNlciBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIGEgYmFzaWMgY29uZmlndXJhdGlvbiBsYW5ndWFnZSB3aGljaCBwcm92aWRlcyBhIHN0cnVjdHVyZSBzaW1pbGFyIHRvIHdoYXQncyBmb3VuZCBpbiBNaWNyb3NvZnQgV2luZG93cyBJTkkgZmlsZXMuIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1IT01FUEFHRSA9ICJodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvY29uZmlncGFyc2VyLmh0bWwiCi1MSUNFTlNFID0gIk1JVCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTEwO2VuZGxpbmU9MTA7bWQ1PTIzZjlhZDVjYWQzZDhjYzAzMzZlMmE1ZDhhODdlMWZhIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmMxNTU4ZWQ5NDFjYjFhY2I4MGZmNjUwNzI2ZDVhZjgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmMzNzg1MGYwY2M0MmExNzI1YTc5NmVmN2Q5MjY5MDY1MWJmMWFmMzdkNzQ0Y2M2MzE2MWRhYzYyY2FiZWUxNyIKLQotaW5oZXJpdCBweXBpCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY29uZmlncGFyc2VyXzMuOC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbmZpZ3BhcnNlcl8zLjguMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYThlZDFlOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY29uZmlncGFyc2VyXzMuOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWNvbmZpZ3BhcnNlci5pbmMKLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tcGtndXRpbCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb25zdGFudGx5LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb25zdGFudGx5LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE1MzUwNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY29uc3RhbnRseS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJTeW1ib2xpYyBjb25zdGFudHMgaW4gUHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3R3aXN0ZWQvY29uc3RhbnRseSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTM5M2U0ZGRkMjIzZTNhNzQ5ODJlZmE3ODRmODlmZDciCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmMDc2MmYwODNkODMwMzk3NThlNTNmOGNmMDA4NmVlZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ODYzNzJlYjkyMDU5ODczZTI5ZWJhNGY5ZGVjODM4MTU0MWI0ZDM4MzQ2NjA3MDdmYWY4YmE1OTE0NmRmYzM1IgotCi1pbmhlcml0IHB5cGkKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1qc29uIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbnN0YW50bHlfMTUuMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbnN0YW50bHlfMTUuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWIxNWViLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb25zdGFudGx5XzE1LjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1jb25zdGFudGx5LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbnRleHRsaWIyLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb250ZXh0bGliMi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1MDcyMWYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbnRleHRsaWIyLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkJhY2twb3J0cyBhbmQgZW5oYW5jZW1lbnRzIGZvciB0aGUgY29udGV4dGxpYiBtb2R1bGUiCi1IT01FUEFHRSA9ICJodHRwOi8vY29udGV4dGxpYjIucmVhZHRoZWRvY3Mub3JnLyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJQU0YiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NDNkMWM3ODI3ZThmYWQ2NDU0YjU1M2NhZjBlMWQ3MzQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkMDNhNjMxMDczYjQwMDczYjVjNDEzNjRhZDhmNTk3OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MTk3YWE3MzY3NzdjYWFjNTEzZGJkODAwOTQ0YzIwOWE0OTc2NWJmMTk3OWIxMmIwMzdkY2UwMjc3MDc3ZWQzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbnRleHRsaWIyXzAuNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbnRleHRsaWIyXzAuNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2NmZmI5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb250ZXh0bGliMl8wLjYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWNvbnRleHRsaWIyLmluYwotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3JjbW9kLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcmNtb2QuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWRhN2NiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcmNtb2QuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJBIFB5dGhvbiBtb2R1bGUgZm9yIGdlbmVyYXRpbmcgb2JqZWN0cyB0aGF0IGNvbXB1dGUgdGhlIEN5Y2xpYyBSZWR1bmRhbmN5IENoZWNrLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9jcmNtb2QiCi1MSUNFTlNFID0gIk1JVCIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZjlhMTkyOTE2MjdjYWQyZDFkZmJmY2YzYzlmYjg1YzIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyZDViOTIxMTdkOTU4ZGNlYWQ5NGY5ZTE3ZjU0Y2QzMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYzcwNTFhMGRiNWYyYmQ0ODY2NWE5OTBkM2VjMWNjMzA1YTQ2NmE3NzM1OGNhNDQ5MjgyNmY0MWYyODM2MDFlIgotCi1pbmhlcml0IHB5cGkKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS11bml0dGVzdCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyY21vZF8xLjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3JjbW9kXzEuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDViOWEyYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3JjbW9kXzEuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1jcmNtb2QuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5LXZlY3RvcnMuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS12ZWN0b3JzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBhZjQ4Yy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5LXZlY3RvcnMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJUZXN0IHZlY3RvcnMgZm9yIHRoZSBjcnlwdG9ncmFwaHkgcGFja2FnZS4iCi1IT01FUEFHRSA9ICJodHRwczovL2NyeXB0b2dyYXBoeS5pby8iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCB8IEJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PThjMzYxN2RiNGZiNmZhZTAxZjFkMjUzYWI5MTUxMWU0IgotCi1ERVBFTkRTICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1jcnlwdG9ncmFwaHkgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTc0NGVkMjliYjllZjU2YjNhNTAzMTdmZWEzYjIxOGUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmNkMzIxNzRjNTZhM2VjYTcyZjY0YWY0M2MxZGFhY2FhZTc1OGNmYTVmZjlkMjgwZGZjZjgxOGZhMTFlZjExNiIKLQotUFlQSV9QQUNLQUdFID0gImNyeXB0b2dyYXBoeV92ZWN0b3JzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHktdmVjdG9yc18yLjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5LXZlY3RvcnNfMi44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTc1Mjc4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHktdmVjdG9yc18yLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1jcnlwdG9ncmFwaHktdmVjdG9ycy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHkuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhY2QwMmQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1TVU1NQVJZID0gIlByb3ZpZGVzIGNyeXB0b2dyYXBoaWMgcmVjaXBlcyBhbmQgcHJpbWl0aXZlcyB0byBweXRob24gZGV2ZWxvcGVycyIKLUhPTUVQQUdFID0gImh0dHBzOi8vY3J5cHRvZ3JhcGh5LmlvLyIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCB8IEJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTA5N2Y4MDU4Mzc3MDBjZmFjNTcyYWMyNzRjZDM4MTI0IgotCi1MRFNIQVJFRCArPSAiLXB0aHJlYWQiCi0KLURFUEVORFMgKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWNmZmkgXAotICAgICR7UFlUSE9OX1BOfS1jZmZpLW5hdGl2ZSBcCi0gICAgJHtQWVRIT05fUE59LWFzbjFjcnlwdG8gXAotICAgICR7UFlUSE9OX1BOfS1zaXggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzc3MzAwNThiNTU2YzZkOTgzODY3OWE5NGM2MjI5Y2UiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2NkYTFmMGVkODc0NzMzOWJiZGY3MWI5ZjM4Y2E3NGM3YjU5MmYyNGY2NWNkYjNhYjM3NjVlNGIwMjg3MTY1MSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWNmZmkgXAotICAgICR7UFlUSE9OX1BOfS1pZG5hIFwKLSAgICAke1BZVEhPTl9QTn0tYXNuMWNyeXB0byBcCi0gICAgJHtQWVRIT05fUE59LXNldHVwdG9vbHMgXAotICAgICR7UFlUSE9OX1BOfS1zaXggXAotIgotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWNmZmkgXAotICAgICR7UFlUSE9OX1BOfS1pZG5hIFwKLSAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCi0gICAgJHtQWVRIT05fUE59LWFzbjFjcnlwdG8gXAotICAgICR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzIFwKLSAgICAke1BZVEhPTl9QTn0tc2l4IFwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCi0gICAgJHtQTn0gXAotICAgICR7UFlUSE9OX1BOfS1jcnlwdG9ncmFwaHktdmVjdG9ycyBcCi0gICAgJHtQWVRIT05fUE59LWlzbzg2MDEgXAotICAgICR7UFlUSE9OX1BOfS1wcmV0ZW5kIFwKLSAgICAke1BZVEhPTl9QTn0tcHl0ZXN0IFwKLSAgICAke1BZVEhPTl9QTn0tcHl0eiBcCi0iCi0KLWluaGVyaXQgcHRlc3QKLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCi0gICAgY3AgLXJmICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KLSAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2hhem1hdAotICAgIGNwIC1yZiAke1N9L3Rlc3RzL2hhem1hdC8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2hhem1hdC8KLX0KLQotRklMRVNfJHtQTn0tZGJnICs9ICIgXAotICAgICR7bGliZGlyfS8ke1BZVEhPTl9QTn0yLjcvc2l0ZS1wYWNrYWdlcy8ke1NSQ05BTUV9L2hhem1hdC9iaW5kaW5ncy8uZGVidWcgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5L3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHkvcnVuLXB0ZXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmEyMzljLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHkvcnVuLXB0ZXN0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi0jIS9iaW4vc2gKLXB5LnRlc3QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHlfMi44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeV8yLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljMmY4ODQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeV8yLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tY3J5cHRvZ3JhcGh5LmluYwotCi1TUkNfVVJJICs9ICIgXAotICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotIgotCi1ERVBFTkRTICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1lbnVtMzQgXAotIgotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tZW51bTM0IFwKLSAgICAke1BZVEhPTl9QTn0taXBhZGRyZXNzIFwKLSIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1lbnVtMzQgXAotICAgICR7UFlUSE9OX1BOfS1pcGFkZHJlc3MgXAotICAgICR7UFlUSE9OX1BOfS1jb250ZXh0bGliIFwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3l0aG9uXzAuMjkuMTQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3l0aG9uXzAuMjkuMTQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4MDNhNmUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWN5dGhvbl8wLjI5LjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1jeXRob24uaW5jCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL0N5dGhvbi8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvQ3l0aG9uLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tZGlzdHJpYnV0ZSBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhZW1vbl8yLjEuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYWVtb25fMi4xLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMmRhMDQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhZW1vbl8yLjEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkxpYnJhcnkgdG8gaW1wbGVtZW50IGEgd2VsbC1iZWhhdmVkIFVuaXggZGFlbW9uIHByb2Nlc3MiCi1IT01FUEFHRSA9ICJodHRwczovL3BhZ3VyZS5pby9weXRob24tZGFlbW9uLyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotCi1ERVBFTkRTICs9ICJweXRob24tZG9jdXRpbHMtbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLWRvY3V0aWxzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1sb2NrZmlsZSAoPj0gMC4xMCkgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXJlc291cmNlIFwKLSIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wICYgR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PTI2OTVjODUzYTJjYWZjMzNlNjhhMWQ5NzI4ODllYmQyIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWM1NzM0M2Q4MWYyYTk2YzUxY2ZmZWFiOTgyYjA0ZDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjYxYzg1OWJlNWMxMmFlN2Q0Mjg2ZGM2OTUxZTg3ZTllMWE3MGE4ODJhOGI0MWZkOTI2ZWZjMWVjNDIxNGY3MyIKLQotIyBGaXggZm9yIGJ1aWxkIGVycm9yIGluIFlvY3RvOgotIyAgICAgaSA9IHAucmZpbmQoJy8nKSArIDEKLSMgQXR0cmlidXRlRXJyb3I6ICdOb25lVHlwZScgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ3JmaW5kJwotI1MgPSAiJHtXT1JLRElSfS9weXRob24tZGFlbW9uIgotU1JDX1VSSV9hcHBlbmQgPSAiIFwKLSAgICAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVdvcmthcm91bmQtZm9yLWlzc3VlLTItMS5wYXRjaCBcCi0iCi0KLVBZUElfUEFDS0FHRSA9ICJweXRob24tZGFlbW9uIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhZW1vbml6ZV8yLjUuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYWVtb25pemVfMi41LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwZjY0ZmMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhZW1vbml6ZV8yLjUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSB0byBlbmFibGUgeW91ciBjb2RlIHJ1biBhcyBhIGRhZW1vbiBwcm9jZXNzIG9uIFVuaXgtbGlrZSBzeXN0ZW1zIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xM2U5ODJiZjFiN2IxNjRiOWQ2ZDE2NjVkYWM4Mzg3MyIKLVNSQ05BTUUgPSAiZGFlbW9uaXplIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgICAgICAgICAgICBweXRob24tZmNudGwgXAotICAgICAgICAgICAgICAgcHl0aG9uLXVuaXhhZG1pbiBcCi0gICAgICAgICAgICAgICBweXRob24tbG9nZ2luZyBcCi0gICAgICAgICAgICAgICBweXRob24tcmVzb3VyY2UgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiM2Q2NGU3YTAyMTlhZDIyZTNmY2E2MjQ2MGY4OTNiNmEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGQwMjZlNGZmOGQyMmNiMDE2ZWQyMTMwYmM3MzhiN2Q0YjFkYTU5N2VmOTNjMDc0ZDJhZGI5ZTRkZWEwOGJjMyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYXRldXRpbC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGF0ZXV0aWwuaW5jCmluZGV4IDNjODljZDYuLmU3MGU5NjMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYXRldXRpbC5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhdGV1dGlsLmluYwpAQCAtMTUsNyArMTUsNyBAQAogCiBERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tc2V0dXB0b29scy1zY20tbmF0aXZlIgogCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiXAorUkRFUEVORFNfJHtQTn0gPSAiXAogICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCiAgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAogICAgICR7UFlUSE9OX1BOfS1zaXggXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhdGV1dGlsXzIuOC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhdGV1dGlsXzIuOC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMmFlNGMzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYXRldXRpbF8yLjguMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1kYXRldXRpbC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYnVzXzEuMi4xNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYnVzXzEuMi4xNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg5ZDdkMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGJ1c18xLjIuMTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIERCdXMgaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIHN5c3RlbSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvU29mdHdhcmUvZGJ1cyIKLUxJQ0VOU0UgPSAiTUlUICYgQUZMLTIuMSB8IEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjAzMjQwNTE4OTk0ZGY2ZDhjOTc0Njc1Njc1ZTVjYTQgXAotCQkgICAgZmlsZTovL2RidXMtZ21haW4vQ09QWUlORzttZDU9OTlmZWNlNjcyOGE4MDczN2M4ZmQzZTdjNzM0YzE3YzQgIgotREVQRU5EUyA9ICJleHBhdCBkYnVzIGRidXMtZ2xpYiB2aXJ0dWFsL2xpYmludGwgcHl0aG9uLXB5cmV4LW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy1weXRob24vZGJ1cy1weXRob24tJHtQVn0udGFyLmd6IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImM4NzM5MjM0ZmNhOWZiYTI2MzY4ZDFhMzM3YWJlODMwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIxMDIwNmJhM2RkNjQxZTRlNDY0MTFhYjkxNDcxYzg4ZTBlZWMxNzQ5ODYwZTQyODUxOTNlZTY4ZGY4NGFjMzEiCi1TID0gIiR7V09SS0RJUn0vZGJ1cy1weXRob24tJHtQVn0iCi0KLWluaGVyaXQgZGlzdHV0aWxzLWJhc2UgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi0jIGRvY3VtZW50YXRpb24gbmVlZHMgcHl0aG9uLXNwaGlueCwgd2hpY2ggaXMgbm90IGluIG9lLWNvcmUgb3IgbWV0YS1weXRob24gZm9yIG5vdwotIyBjaGFuZ2UgdG8gdXNlIFBBQ0tBR0VDT05GSUcgd2hlbiBweXRob24tc3BoaW54IGlzIGFkZGVkIHRvIG9lLWNvcmUgb3IgbWV0YS1weXRob24KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWRvY3VtZW50YXRpb24iCi0KLWV4cG9ydCBTVEFHSU5HX0xJQkRJUgotZXhwb3J0IFNUQUdJTkdfSU5DRElSCi0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbi1pbyBweXRob24tbG9nZ2luZyBweXRob24tc3RyaW5nb2xkIHB5dGhvbi10aHJlYWRpbmcgcHl0aG9uLXhtbCIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGtnY29uZmlnIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIFJlbW92ZSBmaWxlcyB0aGF0IGNsYXNoIHdpdGggcHl0aG9uMy1kYnVzOyB0aGVpciBjb250ZW50IGlzIHNhbWUKLSAgICBybSAke0R9JHtpbmNsdWRlZGlyfS9kYnVzLTEuMC9kYnVzL2RidXMtcHl0aG9uLmggJHtEfSR7bGliZGlyfS9wa2djb25maWcvZGJ1cy1weXRob24ucGMKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYnVzbW9ja18wLjE2LjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGJ1c21vY2tfMC4xNi43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzhjNTRhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYnVzbW9ja18wLjE2LjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0jIENvcHlyaWdodCAoYykgMjAxNCBMRyBFbGVjdHJvbmljcywgSW5jLgotCi1TVU1NQVJZID0gIldpdGggdGhpcyBwcm9ncmFtL1B5dGhvbiBsaWJyYXJ5IHlvdSBjYW4gZWFzaWx5IGNyZWF0ZSBtb2NrIG9iamVjdHMgb24gRC1CdXMiCi1BVVRIT1IgPSAiTWFydGluIFBpdHQgPG1hcnRpbi5waXR0QHVidW50dS5jb20+IgotCi1MSUNFTlNFID0gIkdQTC0zLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjgwZjhjYWE4MzhmYWQ5NjQ4M2E4NzUxZTExZDM4NGY5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJkMmVhODkyZmE0NjMzYzNlYzZhYzFlOTEyMTIwZWM0OTMwNDdhNWM2NTIyODQ5YjdkMWM5NWFkNzU1YmNlNzUiCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgZmlsZTovLzAwMDEtQWRkLWZ1bmN0aW9uYWxpdHktdG8tYWRkLW93bi1vYmplY3RzLXRvLWludGVybmFsLW9iai5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItQWRkLXBvc3NpYmlsaXR5LXRvLWltcG9ydC10ZW1wbGF0ZXMtZnJvbS1wYWNrYWdlcy5wYXRjaCBcCi0iCi0KLVBZUElfUEFDS0FHRSA9ICJweXRob24tZGJ1c21vY2siCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWRidXMgXAotICAgICR7UFlUSE9OX1BOfS1weWdvYmplY3QgXAotICAgICR7UFlUSE9OX1BOfS14bWwgXAotICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kZWNvcmF0b3IuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRlY29yYXRvci5pbmMKaW5kZXggNjVkYjFhOS4uM2ZhZWUzOSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRlY29yYXRvci5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRlY29yYXRvci5pbmMKQEAgLTksOCArOSw4IEBACiBMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1iZTJmZDIwMDc5NzJiZjk2YzA4YWYzMjkzZDcyOGIyMiIKIAotU1JDX1VSSVttZDVzdW1dID0gIjkzMzk4MWYyODhjNDIzMDgxNmI1YmVlZThkNDBlNmVhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU0YzM4MDUwMDM5MjMyZTFkYjRhZDczNzVjZmNlNjc0OGQ3YjQxYzI5ZTk1YTA4MWM4YTZkMmMzMDM2NGEyY2UiCitTUkNfVVJJW21kNXN1bV0gPSAiZDgzYzYyNGNjZTkzZTZiZGZhYjE0NDgyMWI1MjZlMWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTNhNjJmMDUyMDE3MjQ0MGNhMGRjYzgyMzc0OTMxOTM4MmUzNzdmMzdmMTQwYTBiOTllZjQ1ZmVjYjg0YmZlNyIKIAogaW5oZXJpdCBweXBpCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kZWNvcmF0b3JfNC40LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGVjb3JhdG9yXzQuNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTJiNDU1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kZWNvcmF0b3JfNC40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tZGVjb3JhdG9yLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWNvbnRleHRsaWIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvLXNvdXRoXzEuMC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nby1zb3V0aF8xLjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU3Yjc2Ni4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvLXNvdXRoXzEuMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1kamFuZ28tc291dGguaW5jCi1pbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ28uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nby5pbmMKaW5kZXggNjNkMDI1ZC4uNTRjNzdjOCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nby5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nby5pbmMKQEAgLTYsNyArNiw3IEBACiBQWVBJX1BBQ0tBR0UgPSAiRGphbmdvIgogaW5oZXJpdCBweXBpCiAKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPjEoXC5cZCspKykiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykvIgogCiBGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kamFuZ28iCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ29fMS4xMS4xNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ29fMS4xMS4xNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZlMjNkYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvXzEuMTEuMTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1kamFuZ28uaW5jCi1pbmhlcml0IHNldHVwdG9vbHMKLQotU1JDX1VSSVttZDVzdW1dID0gIjM4ZTgyYjU5YTFjMjdiYmY5OGNjZjA1NjRlYWQ3NDI2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImViOTI3MWYwODc0ZjUzMTA2YTI3MTljMGMzNWNlNjc2MzFmNmNjMjdjZjgxYTYwYzZmOGM5ODE3YjM1YTNmNmUiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1hcmdwYXJzZSBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotICAgICR7UFlUSE9OX1BOfS16bGliIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ29yZXN0ZnJhbWV3b3JrXzMuOS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nb3Jlc3RmcmFtZXdvcmtfMy45LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0MGQxMmQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nb3Jlc3RmcmFtZXdvcmtfMy45LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLWRqYW5nb3Jlc3RmcmFtZXdvcmsuaW5jCi1pbmhlcml0IHNldHVwdG9vbHMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZG5zcHl0aG9uXzEuMTYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kbnNweXRob25fMS4xNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGJjZDBmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kbnNweXRob25fMS4xNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWRuc3B5dGhvbi5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kb2N1dGlsc18wLjE1LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZG9jdXRpbHNfMC4xNS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjZlODE5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kb2N1dGlsc18wLjE1LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gIlRleHQgcHJvY2Vzc2luZyBzeXN0ZW0gZm9yIGRvY3VtZW50YXRpb24iCi1IT01FUEFHRSA9ICJodHRwOi8vZG9jdXRpbHMuc291cmNlZm9yZ2UubmV0IgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIlBTRiAmIEJTRC0yLUNsYXVzZSAmIEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PTdhNDY0NjkwN2FiOTA4M2M4MjYyODBiMTllMTAzMTA2IgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1QWVBJX1BBQ0tBR0UgPSAiZG9jdXRpbHMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlMjZhMzA4ZDgwMDBiMGJlZDc0MTZhNjMzMjE3YzY3NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhMmFlZWExMjkwODhkYTQwMjY2NWU5MmUwYjI1YjA0YjA3M2MwNGIyZGNlNGFiNjVjYWFhMzhiN2NlMmUxYTk5IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRvbWluYXRlLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kb21pbmF0ZS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlNDk5YTYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRvbWluYXRlLmluYworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLVNVTU1BUlkgPSAiRG9taW5hdGUgaXMgYSBQeXRob24gbGlicmFyeSBmb3IgY3JlYXRpbmcgYW5kIG1hbmlwdWxhdGluZyBIVE1MIGRvY3VtZW50cyB1c2luZyBhbiBlbGVnYW50IERPTSBBUEkuIgotTElDRU5TRSA9ICJMR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9YjUyZjJkNTdkMTBjNGY3ZWU2N2E3ZWI5NjE1ZDVkMjQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyN2QzYWE3ZTBkNjc5MDJjNTA1ZTI0OGU3MDVlNWUyZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhOTI0NzRiNDMxMmJkOGI0YzE3ODk3OTJmM2VjOGM1NzFjZDhhZmE4ZTc1MDJhMmIxYzY0ZGQ0OGNkNjdlNTljIgotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZG9taW5hdGVfMi40LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZG9taW5hdGVfMi40LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxOTQ0NWUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRvbWluYXRlXzIuNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tZG9taW5hdGUuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZWRpdG9yXzEuMC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWVkaXRvcl8xLjAuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdhOWE4Yy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZWRpdG9yXzEuMC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tZWRpdG9yLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWVuZ2luZWlvLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lbmdpbmVpby5pbmMKaW5kZXggOWMwNjdjOS4uOTY1ZjQyMCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWVuZ2luZWlvLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZW5naW5laW8uaW5jCkBAIC05LDUgKzksNSBAQAogCiBQWVBJX1BBQ0tBR0UgPSAicHl0aG9uLWVuZ2luZWlvIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMTMzNDU0NTJiZTI1YzNiNjNkMDQxZjhmODllNjYyZDEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDdhZTRhOWIzYjRmMmU4YTY4OTI5ZjM3YTUxODMzODgzOGUxMTlmMjRjOWE5MTIxYWY5MmM0OWY4YmVhNTVjMyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlNmVhOGIzZjJmMzJlZWViMDIwMTRjNDYwOTJmMmFkYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNDgxNzMyZDkzNjQ2OTk4ZjczNzJlZjBlY2YwMDNhZjc4MTdiODI3MjBiODgxZGIxNzNjM2Q1MGI0ODg3OTE2IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWVuZ2luZWlvXzMuMTEuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lbmdpbmVpb18zLjExLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkZDZlYzAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWVuZ2luZWlvXzMuMTEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1lbmdpbmVpby5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lbnVtMzRfMS4xLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZW51bTM0XzEuMS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTBiNWM3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lbnVtMzRfMS4xLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1TVU1NQVJZID0gImJhY2twb3J0IG9mIFB5dGhvbiAzLjQncyBlbnVtIHBhY2thZ2UiCi1IT01FUEFHRSA9ICJodHRwczovL2JpdGJ1Y2tldC5vcmcvc3RvbmVsZWFmL2VudW0zNCIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZW51bS9MSUNFTlNFO21kNT0wYTk3YTUzYTUxNDU2NGMyMGVmZDdiMmU4OTc2Yzg3ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjVmMTNhMDg0MWE2MWY3ZmMyOTVjNTE0NDkwZDEyMGQwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhhZDhjNDc4M2JmNjFkZWQ3NDUyN2JmZmI0OGVkOWI1NDE2NjY4NWU0MjMwMzg2YTllZDliMTI3OWUyZGY1YjEiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lcHlkb2NfMy4wLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZXB5ZG9jXzMuMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDk3OTlmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lcHlkb2NfMy4wLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJFcHlkb2MgaXMgYSB0b29sIGZvciBnZW5lcmF0aW5nIEFQSSBkb2N1bWVudGF0aW9uIGZvciBQeXRob24gbW9kdWxlcywgYmFzZWQgb24gdGhlaXIgZG9jc3RyaW5ncyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTAxMWMwZDc4ZWI2MDU0ZDczMWM4NzkxMzJkNzMxM2YwIgotSE9NRVBBR0UgPSAiaHR0cDovL2VweWRvYy5zb3VyY2Vmb3JnZS5uZXQvIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiY2RkNmY2Yzc2ZGQ4YmFiNWU2NTNhMzQzYTA1NDQyOTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDRlNWM4ZDkwOTM3ZDAxYjA1MTcwZjU5MmMxZmE5YjI5ZTllZDA0OThkZmU3ZjBlYjJhM2FmNjE3MjViNmFkMSIKLQotaW5oZXJpdCBweXBpIGRpc3R1dGlscwotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1jb2RlY3MgXAotICAgICR7UFlUSE9OX1BOfS1waWNrbGUgXAotICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAotICAgICR7UFlUSE9OX1BOfS1yZSBcCi0gICAgJHtQWVRIT05fUE59LXhtbCBcCi0gICAgIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ldmRldi5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZXZkZXYuaW5jCmluZGV4IGE1MzY4MTUuLjVmNTQyNmEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ldmRldi5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWV2ZGV2LmluYwpAQCAtNSwxMCArNSwxMCBAQAogCiBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tZXZkZXY6IgogCi1TUkNfVVJJICs9ICIgZmlsZTovLzAwMDEtRml4LWJ1aWxkLW9uLTMyYml0LWFyY2hlcy13aXRoLTY0Yml0LXRpbWVfdC5wYXRjaCIKK1NSQ19VUkkgPSAiJHtQWVBJX1NSQ19VUkl9IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNTNlNDQwOTQzZGZhMjUxNGY5NWIzYzQ0OGQ2YTM2Y2IiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjAzZjVlMWJlNWI0YTUzMjc0OTRhOTgxYjgzMWQyNTFhMTQyYjA5ZTg3NzhlZGExYThiNTNlYmE5MTEwMDE2NiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNWY5ZTkwMGQ2ZTExZTE2NzQ0NzVkMmRkMjY2OGYwZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMWM2NDliNGZlZDcyNTI3MTEwMTFkYTIzNTc4MmIyYzI2MGIzMmUwMDQwNThkNjI0NzM0NzFlNWNkMzA2MzRkIgogCiBkb19jb21waWxlX3ByZXBlbmQoKSB7CiAgICAgcm0gLXJmICR7U30vZXZkZXYvZWNvZGVzLmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ldmRldi8wMDAxLUZpeC1idWlsZC1vbi0zMmJpdC1hcmNoZXMtd2l0aC02NGJpdC10aW1lX3QucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZXZkZXYvMDAwMS1GaXgtYnVpbGQtb24tMzJiaXQtYXJjaGVzLXdpdGgtNjRiaXQtdGltZV90LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTQxNzJjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ldmRldi8wMDAxLUZpeC1idWlsZC1vbi0zMmJpdC1hcmNoZXMtd2l0aC02NGJpdC10aW1lX3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi1Gcm9tIDQzNWU3OGFhZjY3NDVlNGRhMGZlM2Q0NDU1NDczMDExNjI2Yzc3ZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAzMCBOb3YgMjAxOSAxMToyMToyMCAtMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgb24gMzJiaXQgYXJjaGVzIHdpdGggNjRiaXQgdGltZV90Ci0KLXRpbWUgZWxlbWVudCBpcyBkZXByZWNhdGVkIG9uIG5ldyBpbnB1dF9ldmVudCBzdHJ1Y3R1cmUgaW4ga2VybmVsJ3MKLWlucHV0LmggWzFdCi0KLVsxXSBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQvY29tbWl0P2lkPTE1MjE5NGZlOWMzZgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2d2YWxrb3YvcHl0aG9uLWV2ZGV2L3B1bGwvMTEyXQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGV2ZGV2L2lucHV0LmMgIHwgMTMgKysrKysrKysrLS0tLQotIGV2ZGV2L3VpbnB1dC5jIHwgIDkgKysrKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZXZkZXYvaW5wdXQuYyBiL2V2ZGV2L2lucHV0LmMKLWluZGV4IDY3YjkzNDguLjQzMmRiOTIgMTAwNjQ0Ci0tLS0gYS9ldmRldi9pbnB1dC5jCi0rKysgYi9ldmRldi9pbnB1dC5jCi1AQCAtMjQsNiArMjQsMTEgQEAKLSAjaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KLSAjZW5kaWYKLSAKLSsjaWZuZGVmIGlucHV0X2V2ZW50X3NlYwotKyNkZWZpbmUgaW5wdXRfZXZlbnRfc2VjIHRpbWUudHZfc2VjCi0rI2RlZmluZSBpbnB1dF9ldmVudF91c2VjIHRpbWUudHZfdXNlYwotKyNlbmRpZgotKwotICNkZWZpbmUgTUFYX05BTUVfU0laRSAyNTYKLSAKLSBleHRlcm4gY2hhciogIEVWX05BTUVbRVZfQ05UXTsKLUBAIC02MCw4ICs2NSw4IEBAIGRldmljZV9yZWFkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLSAgICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIFB5T2JqZWN0KiBzZWMgID0gUHlMb25nX0Zyb21Mb25nKGV2ZW50LnRpbWUudHZfc2VjKTsKLS0gICAgUHlPYmplY3QqIHVzZWMgPSBQeUxvbmdfRnJvbUxvbmcoZXZlbnQudGltZS50dl91c2VjKTsKLSsgICAgUHlPYmplY3QqIHNlYyAgPSBQeUxvbmdfRnJvbUxvbmcoZXZlbnQuaW5wdXRfZXZlbnRfc2VjKTsKLSsgICAgUHlPYmplY3QqIHVzZWMgPSBQeUxvbmdfRnJvbUxvbmcoZXZlbnQuaW5wdXRfZXZlbnRfdXNlYyk7Ci0gICAgIFB5T2JqZWN0KiB2YWwgID0gUHlMb25nX0Zyb21Mb25nKGV2ZW50LnZhbHVlKTsKLSAgICAgUHlPYmplY3QqIHB5X2lucHV0X2V2ZW50ID0gTlVMTDsKLSAKLUBAIC0xMDIsOCArMTA3LDggQEAgZGV2aWNlX3JlYWRfbWFueShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi0gCi0gICAgIC8vIENvbnN0cnVjdCBhIGxpc3Qgb2YgZXZlbnQgdHVwbGVzLCB3aGljaCB3ZSdsbCBtYWtlIHNlbnNlIG9mIGluIFB5dGhvbgotICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwIDsgaSA8IG5yZWFkL2V2ZW50X3NpemUgOyBpKyspIHsKLS0gICAgICAgIHNlYyAgPSBQeUxvbmdfRnJvbUxvbmcoZXZlbnRbaV0udGltZS50dl9zZWMpOwotLSAgICAgICAgdXNlYyA9IFB5TG9uZ19Gcm9tTG9uZyhldmVudFtpXS50aW1lLnR2X3VzZWMpOwotKyAgICAgICAgc2VjICA9IFB5TG9uZ19Gcm9tTG9uZyhldmVudFtpXS5pbnB1dF9ldmVudF9zZWMpOwotKyAgICAgICAgdXNlYyA9IFB5TG9uZ19Gcm9tTG9uZyhldmVudFtpXS5pbnB1dF9ldmVudF91c2VjKTsKLSAgICAgICAgIHZhbCAgPSBQeUxvbmdfRnJvbUxvbmcoZXZlbnRbaV0udmFsdWUpOwotIAotICAgICAgICAgcHlfaW5wdXRfZXZlbnQgPSBQeV9CdWlsZFZhbHVlKCJPT2hoTyIsIHNlYywgdXNlYywgZXZlbnRbaV0udHlwZSwgZXZlbnRbaV0uY29kZSwgdmFsKTsKLWRpZmYgLS1naXQgYS9ldmRldi91aW5wdXQuYyBiL2V2ZGV2L3VpbnB1dC5jCi1pbmRleCAxOTI1NjhkLi41NmZlODZjIDEwMDY0NAotLS0tIGEvZXZkZXYvdWlucHV0LmMKLSsrKyBiL2V2ZGV2L3VpbnB1dC5jCi1AQCAtMTYsNiArMTYsMTAgQEAKLSAjaW5jbHVkZSA8bGludXgvdWlucHV0Lmg+Ci0gI2VuZGlmCi0gCi0rI2lmbmRlZiBpbnB1dF9ldmVudF9zZWMKLSsjZGVmaW5lIGlucHV0X2V2ZW50X3NlYyB0aW1lLnR2X3NlYwotKyNkZWZpbmUgaW5wdXRfZXZlbnRfdXNlYyB0aW1lLnR2X3VzZWMKLSsjZW5kaWYKLSAKLSAvLyBXb3JrYXJvdW5kIGZvciBpbnN0YWxsaW5nIG9uIGtlcm5lbHMgbmV3ZXIgdGhhbiA0LjQuCi0gI2lmbmRlZiBGRl9NQVhfRUZGRUNUUwotQEAgLTIzMiw4ICsyMzYsMTEgQEAgdWlucHV0X3dyaXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLSAgICAgaWYgKCFyZXQpIHJldHVybiBOVUxMOwotIAotICAgICBzdHJ1Y3QgaW5wdXRfZXZlbnQgZXZlbnQ7Ci0rICAgIHN0cnVjdCB0aW1ldmFsIHR2YWw7Ci0gICAgIG1lbXNldCgmZXZlbnQsIDAsIHNpemVvZihldmVudCkpOwotLSAgICBnZXR0aW1lb2ZkYXkoJmV2ZW50LnRpbWUsIDApOwotKyAgICBnZXR0aW1lb2ZkYXkoJnR2YWwsIDApOwotKyAgICBldmVudC5pbnB1dF9ldmVudF91c2VjID0gdHZhbC50dl91c2VjOwotKyAgICBldmVudC5pbnB1dF9ldmVudF9zZWMgPSB0dmFsLnR2X3NlYzsKLSAgICAgZXZlbnQudHlwZSA9IHR5cGU7Ci0gICAgIGV2ZW50LmNvZGUgPSBjb2RlOwotICAgICBldmVudC52YWx1ZSA9IHZhbHVlOwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWV2ZGV2XzEuMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWV2ZGV2XzEuMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzU0MTM2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ldmRldl8xLjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWV2ZGV2LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZlZWRmb3JtYXR0ZXJfMC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZlZWRmb3JtYXR0ZXJfMC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzVmOTQ0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mZWVkZm9ybWF0dGVyXzAuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1mZWVkZm9ybWF0dGVyLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZlZWRwYXJzZXJfNS4yLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmVlZHBhcnNlcl81LjIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjhlZTcwMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmVlZHBhcnNlcl81LjIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIEF0b20gYW5kIFJTUyBmZWVkIHBhcnNlciIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzIxYTc3MTNlZjZkYzFiOTk2NDQwNjFjMzk3ZTdjMmEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkNTUyZjdhMmE1NWU4ZTMzYjJhM2ZlMTA4MjUwNWI0MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiZDAzMDY1MmMyZDA4NTMyYzAzNGMyN2ZjZDdjODU4NjhlN2ZhM2NiMmIxN2YyMzBhNDRhNmJiYzkyNTE5YmY5IgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1jb2RlY3MgXAotICAgICR7UFlUSE9OX1BOfS1lbWFpbCBcCi0gICAgJHtQWVRIT05fUE59LWh0bWwgXAotICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAotICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAotICAgICIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLWJhYmVsXzAuMTIuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1iYWJlbF8wLjEyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4ZTc4YzcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLWJhYmVsXzAuMTIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWZsYXNrLWJhYmVsLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLWJjcnlwdF8wLjcuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1iY3J5cHRfMC43LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwOTBiMzQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLWJjcnlwdF8wLjcuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkJjcnlwdCBoYXNoaW5nIGZvciBGbGFzay4iCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTBlZTJlZTViZWU3ZmU5NjU5Nzc3MGU5MmRiNTcxOWE4IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDM0NWMzNmFjNjYzN2QzY2E5ZmE5NDJlMjM4ZDAwY2EiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDcxYzg1ODViMmVlMWM2MjAyNDM5MmViZGJjNDQ3NDM4NTY0ZTJjOGMwMmI0ZTU3YjU2YTRjYWZkOGQxM2M1ZiIKLQotUFlQSV9QQUNLQUdFID0gIkZsYXNrLUJjcnlwdCIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1iY3J5cHQgJHtQWVRIT05fUE59LWZsYXNrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLWJvb3RzdHJhcF8zLjMuNy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLWJvb3RzdHJhcF8zLjMuNy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZWFhZGU5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1ib290c3RyYXBfMy4zLjcuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWZsYXNrLWJvb3RzdHJhcC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1sb2dpbl8wLjQuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1sb2dpbl8wLjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEwY2VkZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stbG9naW5fMC40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1mbGFzay1sb2dpbi5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1tYWlsXzAuOS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLW1haWxfMC45LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzMjRkYTguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLW1haWxfMC45LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1mbGFzay1tYWlsLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLW1pZ3JhdGVfMi41LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stbWlncmF0ZV8yLjUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNlNTE2Zi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stbWlncmF0ZV8yLjUuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWZsYXNrLW1pZ3JhdGUuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stbmF2XzAuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1uYXZfMC42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGI1YjNiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1uYXZfMC42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tZmxhc2stbmF2LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLW5hdmlnYXRpb25fMC4yLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stbmF2aWdhdGlvbl8wLjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJkYzk2ZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stbmF2aWdhdGlvbl8wLjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlRoZSBuYXZpZ2F0aW9uIG9mIEZsYXNrIGFwcGxpY2F0aW9uLiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PWFmMmVjNjk1ZGMxZjNlYjdiZDc0Zjc5YTY4YTBkNzg5IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDEwNzVlZTAyYTNmNjlkYTM3ZTVjYWRhZDMzOTVmMzEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzQyZDMwZWZhOTg5Y2E4Nzc0NDRhNDEwZThhMWNkMjU2MzU0NmY5ZWZmZTNkOWZlMzg4ZWVkZjdhNmM2OTI4NSIKLQotUFlQSV9QQUNLQUdFID0gIkZsYXNrLU5hdmlnYXRpb24iCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWJsaW5rZXIgXAotICAgICR7UFlUSE9OX1BOfS1mbGFzayBcCi0gICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXB5bW9uZ29fMi4zLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stcHltb25nb18yLjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQxZDAyMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stcHltb25nb18yLjMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWZsYXNrLXB5bW9uZ28uaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stcmVzdGZ1bF8wLjMuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1yZXN0ZnVsXzAuMy43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTY4ZDFkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1yZXN0ZnVsXzAuMy43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWZsYXNrLXJlc3RmdWwuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stc2NyaXB0XzIuMC42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNjcmlwdF8yLjAuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjdkNTVhZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stc2NyaXB0XzIuMC42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tZmxhc2stc2NyaXB0LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNpamF4XzAuNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNpamF4XzAuNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDczOGZjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1zaWpheF8wLjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWZsYXNrLXNpamF4LmluYwotCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmIyYmYyZDRmNzU0MDgxODUxMDIxOTUwNTVkNzU1NDlmZWU4ZDljOWU5NTRkY2EyNDI3MTg2OTI1Y2RjNDI5ZiIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stc29ja2V0aW9fNC4yLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stc29ja2V0aW9fNC4yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiOWFkMzMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNvY2tldGlvXzQuMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWZsYXNrLXNvY2tldGlvLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNxbGFsY2hlbXlfMi40LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stc3FsYWxjaGVteV8yLjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RjMzU1Yy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stc3FsYWxjaGVteV8yLjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWZsYXNrLXNxbGFsY2hlbXkuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stdXBsb2Fkc18wLjIuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay11cGxvYWRzXzAuMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzliMDdmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay11cGxvYWRzXzAuMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tZmxhc2stdXBsb2Fkcy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay11c2VyXzAuNi4xOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay11c2VyXzAuNi4xOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjU0ZDM3Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stdXNlcl8wLjYuMTkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1mbGFzay11c2VyLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXd0Zl8wLjE0LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2std3RmXzAuMTQuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGJmMDkxYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2std3RmXzAuMTQuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWZsYXNrLXd0Zi5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay14c3RhdGljXzAuMC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXhzdGF0aWNfMC4wLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmZjE0YTguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXhzdGF0aWNfMC4wLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1mbGFzay14c3RhdGljLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrXzEuMS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrXzEuMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMGEyOGFiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFza18xLjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWZsYXNrLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZ1bmNzaWdzXzEuMC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZ1bmNzaWdzXzEuMC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWQxNWVlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mdW5jc2lnc18xLjAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGZ1bmN0aW9uIHNpZ25hdHVyZXMgZnJvbSBQRVAzNjIgZm9yIFB5dGhvbiAyLjYsIDIuNyBhbmQgMy4yKyIKLURFU0NSUFRJT04gPSAiIFwKLWZ1bmNzaWdzIGlzIGEgYmFja3BvcnQgb2YgdGhlIGBQRVAgMzYyYF8gZnVuY3Rpb24gc2lnbmF0dXJlIGZlYXR1cmVzIGZyb20gXAotUHl0aG9uIDMuMydzIGBpbnNwZWN0YF8gbW9kdWxlLiBUaGUgYmFja3BvcnQgaXMgY29tcGF0aWJsZSB3aXRoIFB5dGhvbiAyLjYsIFwKLTIuNyBhcyB3ZWxsIGFzIDMuMyBhbmQgdXAuIDMuMiB3YXMgc3VwcG9ydGVkIGJ5IHZlcnNpb24gMC40LCBidXQgd2l0aCBcCi1zZXR1cHRvb2xzIGFuZCBwaXAgbm8gbG9uZ2VyIHN1cHBvcnRpbmcgMy4yLCB3ZSBjYW5ub3QgbWFrZSBhbnkgc3RhdGVtZW50IFwKLWFib3V0IDMuMiBjb21wYXRpYmlsaXR5LiBcCi0iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9mdW5jc2lncy5yZWFkdGhlZG9jcy5vcmciCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQ2YmM5MWRjOGU1NzkzODkyMTg5ZmU3NDgxYTJkMzU0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2U1ODMyODViMWZiOGE3NjMwNWQ2ZDY4ZjRjY2MxNGUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTdiYjBmMmNmM2EzZmQxYWIyNzMyY2I0OWViYTQyNTJjMmFmNDI0MDQ0MjQxNWI0YWJjZTNiODcwMjJhOGY1MCIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mdW5jdG9vbHMzMl8zLjIuMy0yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZ1bmN0b29sczMyXzMuMi4zLTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiNGJiYTQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZ1bmN0b29sczMyXzMuMi4zLTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1TVU1NQVJZID0gIkJhY2twb3J0IG9mIHRoZSBmdW5jdG9vbHMgbW9kdWxlIGZyb20gUHl0aG9uIDMuMi4zIGZvciB1c2Ugb24gMi43IGFuZCBQeVB5LiIKLUxJQ0VOU0UgPSAiUFNGIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjdjZjIzNDU5NjllZDE4ZTY3MzBlOTBmYjAwNjNhMTAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwOWYyNGZmZDlhZjlmNmNkMGY2M2NiOWY0ZTIzZDRiMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNjI1M2RmYmUwNTM4YWQyZTM4N2JkOGZkZmQ5MjkzYzkyNWQ2MzU1M2Y1ODEzYzRlNTg3NzQ1NDE2NTAxZTZkIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZnV0dXJlXzAuMTguMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mdXR1cmVfMC4xOC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTVlMWJhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mdXR1cmVfMC4xOC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWZ1dHVyZS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1nZGF0YV8yLjAuMTguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2RhdGFfMi4wLjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTc1ODFmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1nZGF0YV8yLjAuMTguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIkdvb2dsZSBEYXRhIEFQSXMgUHl0aG9uIENsaWVudCBMaWJyYXJ5IgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLnR4dDttZDU9NGM4ZjBlNjg0NmU1MmE3ZmU0OTQzYWNmNDYyZDgwOGQiCi1IT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ2RhdGEtcHl0aG9uLWNsaWVudC8iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxM2I2ZTZkZDhmOWUzZTlhOGUwMDVlMDVhODMyOTQwOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1NmU3ZDIyZGU4MTljMjJiMTNjZWIwZmUxODY5NzI5YjQyODdmODllYmJkNGJiNTUzODBkN2JjZjYxYTFmZGI2IgotCi1TID0gIiR7V09SS0RJUn0vZ2RhdGEucHktJHtQVn0iCi0KLWluaGVyaXQgcHlwaSBkaXN0dXRpbHMKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0iCi0KLVJERVBFTkRTXyR7UE59ID0gIiBcCi0gICAgJHtQWVRIT05fUE59LWRpc3R1dGlscyBcCi0gICAgJHtQWVRIT05fUE59LWpzb24gXAotICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAotICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAotICAgICR7UFlUSE9OX1BOfS14bWwgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdldmVudF8xLjQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1nZXZlbnRfMS40LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxM2JmZDcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdldmVudF8xLjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotcmVxdWlyZSBweXRob24tZ2V2ZW50LmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tcmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JlZW5sZXRfMC40LjE1LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdyZWVubGV0XzAuNC4xNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE0OTc2ZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JlZW5sZXRfMC40LjE1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IGRpc3R1dGlscwotcmVxdWlyZSBweXRob24tZ3JlZW5sZXQuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvLXRvb2xzXzEuMTQuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8tdG9vbHNfMS4xNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjE5YmViLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8tdG9vbHNfMS4xNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWdycGNpby10b29scy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1NzYyYjIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJHb29nbGUgZ1JQQyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3JwYy5pby8iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLQotREVQRU5EU19hcHBlbmQgPSAiJHtQWVRIT05fUE59LXByb3RvYnVmIgotCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tZ3JwY2lvOiIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vMDAwMS1zZXR1cC5weS1Eby1ub3QtbWl4LUMtYW5kLUMtY29tcGlsZXItb3B0aW9ucy5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wcGMtYm9yaW5nc3NsLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcmlzY3Y2NF9zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dldHRpZC5wYXRjaCBcCi0iCi0KLVJERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1wcm90b2J1ZiBcCi0gICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tc2V0dXB0b29scyBcCi0gICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tc2l4IFwKLSIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCi0KLWluaGVyaXQgcHlwaQotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTg4NTY1ZjE1MGYzNGQxOTI3Yjg3ZTAxNGYwZjRiNzMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmRkYmNhMTZjMmU3YjNmMmZmYzZlMzRjN2NmYTY4ODZmYjAxZGU5ZjE1NmFkM2Y3N2I3MmFkNjUyZDYzMjA5NyIKLQotQ0xFQU5CUk9LRU4gPSAiMSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby8wMDAxLXNldHVwLnB5LURvLW5vdC1taXgtQy1hbmQtQy1jb21waWxlci1vcHRpb25zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby8wMDAxLXNldHVwLnB5LURvLW5vdC1taXgtQy1hbmQtQy1jb21waWxlci1vcHRpb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTdmMDQ4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8vMDAwMS1zZXR1cC5weS1Eby1ub3QtbWl4LUMtYW5kLUMtY29tcGlsZXItb3B0aW9ucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gYjAyYmU3NGEyZWZmOGFiYzYxMmVmODRmMzBlMGZiY2U2YTdmNjVmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDQgQXVnIDIwMTcgMDk6MDQ6MDcgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gc2V0dXAucHk6IERvIG5vdCBtaXggQyBhbmQgQysrIGNvbXBpbGVyIG9wdGlvbnMKLQotRVhUUkFfRU5WX0NPTVBJTEVfQVJHUyBpcyB1c2VkIGJvdGggd2l0aCBDQyBhbmQgQ1hYCi1zbyB1c2luZyAtc3RkPWMrKzExIG9yIC1zdGQ9Z251OTkgdG9nZXRoZXIgd2lsbCBjYXVzZQotYnVpbGQgdGltZSBlcnJvcnMgZXNwY2lhbGx5IHdpdGggY2xhbmcKLQotZXJyb3I6IGludmFsaWQgYXJndW1lbnQgJy1zdGQ9Z251OTknIG5vdCBhbGxvd2VkIHdpdGggJ0MrKycKLQotZ2NjNyAoIGRlZmF1bHRzIGFyZSAtc3RkPWdudTExIGFuZCAtc3RkPWdudSsrMTQgKQotIGFzIHdlbGwgY2xhbmcgZGVmYXVsdCB0byB0aGVzZSBzdGFuZGFyZHMgbW9kZSBvciBuZXdlcgotYW55d2F5Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzZXR1cC5weSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotLS0tIGEvc2V0dXAucHkKLSsrKyBiL3NldHVwLnB5Ci1AQCAtMTQ1LDcgKzE0NSw3IEBAIEVOQUJMRV9ET0NVTUVOVEFUSU9OX0JVSUxEID0gb3MuZW52aXJvbi4KLSBFWFRSQV9FTlZfQ09NUElMRV9BUkdTID0gb3MuZW52aXJvbi5nZXQoJ0dSUENfUFlUSE9OX0NGTEFHUycsIE5vbmUpCi0gRVhUUkFfRU5WX0xJTktfQVJHUyA9IG9zLmVudmlyb24uZ2V0KCdHUlBDX1BZVEhPTl9MREZMQUdTJywgTm9uZSkKLSBpZiBFWFRSQV9FTlZfQ09NUElMRV9BUkdTIGlzIE5vbmU6Ci0tICBFWFRSQV9FTlZfQ09NUElMRV9BUkdTID0gJyAtc3RkPWMrKzExJwotKyAgRVhUUkFfRU5WX0NPTVBJTEVfQVJHUyA9ICIiCi0gICBpZiAnd2luMzInIGluIHN5cy5wbGF0Zm9ybSBhbmQgc3lzLnZlcnNpb25faW5mbyA8ICgzLCA1KToKLSAgICAgRVhUUkFfRU5WX0NPTVBJTEVfQVJHUyArPSAnIC1EX2h5cG90PWh5cG90JwotICAgICAjIFdlIHVzZSBkZWZpbmUgZmxhZ3MgaGVyZSBhbmQgZG9uJ3QgZGlyZWN0bHkgYWRkIHRvIERFRklORV9NQUNST1MgYmVsb3cgdG8KLUBAIC0xNTcsNyArMTU3LDcgQEAgaWYgRVhUUkFfRU5WX0NPTVBJTEVfQVJHUyBpcyBOb25lOgotICAgICBlbHNlOgotICAgICAgIEVYVFJBX0VOVl9DT01QSUxFX0FSR1MgKz0gJyAtRF9mdGltZT1fZnRpbWU2NCAtRF90aW1lYj1fX3RpbWViNjQnCi0gICBlbGlmICJsaW51eCIgaW4gc3lzLnBsYXRmb3JtOgotLSAgICBFWFRSQV9FTlZfQ09NUElMRV9BUkdTICs9ICcgLXN0ZD1nbnU5OSAtZnZpc2liaWxpdHk9aGlkZGVuIC1mbm8td3JhcHYgLWZuby1leGNlcHRpb25zJwotKyAgICBFWFRSQV9FTlZfQ09NUElMRV9BUkdTICs9ICcgLWZ2aXNpYmlsaXR5PWhpZGRlbiAtZm5vLXdyYXB2IC1mbm8tZXhjZXB0aW9ucycKLSAgIGVsaWYgImRhcndpbiIgaW4gc3lzLnBsYXRmb3JtOgotICAgICBFWFRSQV9FTlZfQ09NUElMRV9BUkdTICs9ICcgLWZ2aXNpYmlsaXR5PWhpZGRlbiAtZm5vLXdyYXB2IC1mbm8tZXhjZXB0aW9ucycKLSBFWFRSQV9FTlZfQ09NUElMRV9BUkdTICs9ICcgLURQQl9GSUVMRF8zMkJJVCcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8vZ2V0dGlkLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby9nZXR0aWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiMTVjZjcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby9nZXR0aWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi11c2UgZ2xpYmMgcHJvdmlkZWQgZ2V0dGlkIEFQSSBmb3IgZ2xpYmMgMi4zMCsKLQotZ2xpYmMgMi4zMCBpbnRyb2R1Y2VkIHRoaXMgZnVuY3Rpb24gc2VlIFsxXQotc28gaXQncyBiZXN0IHRvIGRldGVjdCBpdAotYW5kIHByb3ZpZGUgZmFsbGJhY2sgb25seSBpZiBpdCdzIG5vdCBwcmVzZW50Ci0KLVsxXSBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD02Mzk5Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLSBhL3NyYy9jb3JlL2xpYi9ncHIvbG9nX2xpbnV4LmNjCi0rKysgYi9zcmMvY29yZS9saWIvZ3ByL2xvZ19saW51eC5jYwotQEAgLTQwLDcgKzQwLDEzIEBACi0gI2luY2x1ZGUgPHRpbWUuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gCi0rI2lmICBkZWZpbmVkKF9fR0xJQkNfXykKLSsjaWYgIV9fR0xJQkNfUFJFUkVRKDIsMjkpCi0gc3RhdGljIGxvbmcgZ2V0dGlkKHZvaWQpIHsgcmV0dXJuIHN5c2NhbGwoX19OUl9nZXR0aWQpOyB9Ci0rI2VuZGlmCi0rI2Vsc2UKLStzdGF0aWMgbG9uZyBnZXR0aWQodm9pZCkgeyByZXR1cm4gc3lzY2FsbChfX05SX2dldHRpZCk7IH0KLSsjZW5kaWYKLSAKLSB2b2lkIGdwcl9sb2coY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGdwcl9sb2dfc2V2ZXJpdHkgc2V2ZXJpdHksCi0gICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKSB7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvL3BwYy1ib3Jpbmdzc2wtc3VwcG9ydC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8vcHBjLWJvcmluZ3NzbC1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDM1YWJiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8vcHBjLWJvcmluZ3NzbC1zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotTGV0IGJvcmluZ1NTTCBjb21waWxlIG9uIHBwYzMyIGJpdAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLS0tLSBhL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9pbmNsdWRlL29wZW5zc2wvYmFzZS5oCi0rKysgYi90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvaW5jbHVkZS9vcGVuc3NsL2Jhc2UuaAotQEAgLTk1LDYgKzk1LDkgQEAgZXh0ZXJuICJDIiB7Ci0gI2VsaWYgKGRlZmluZWQoX19QUEM2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pKSAmJiBkZWZpbmVkKF9MSVRUTEVfRU5ESUFOKQotICNkZWZpbmUgT1BFTlNTTF82NF9CSVQKLSAjZGVmaW5lIE9QRU5TU0xfUFBDNjRMRQotKyNlbGlmIChkZWZpbmVkKF9fUFBDX18pIHx8IGRlZmluZWQoX19wb3dlcnBjX18pKQotKyNkZWZpbmUgT1BFTlNTTF8zMl9CSVQKLSsjZGVmaW5lIE9QRU5TU0xfUFBDCi0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykgJiYgIWRlZmluZWQoX19MUDY0X18pCi0gI2RlZmluZSBPUEVOU1NMXzMyX0JJVAotICNkZWZpbmUgT1BFTlNTTF9NSVBTCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvL3Jpc2N2NjRfc3VwcG9ydC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8vcmlzY3Y2NF9zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWY3ZDllLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8vcmlzY3Y2NF9zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotQWRkIFJJU0MtViA2NGJpdCBzdXBwb3J0Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLSBhL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9pbmNsdWRlL29wZW5zc2wvYmFzZS5oCi0rKysgYi90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvaW5jbHVkZS9vcGVuc3NsL2Jhc2UuaAotQEAgLTEwNCw2ICsxMDQsOSBAQCBleHRlcm4gIkMiIHsKLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQotICNkZWZpbmUgT1BFTlNTTF82NF9CSVQKLSAjZGVmaW5lIE9QRU5TU0xfTUlQUzY0Ci0rI2VsaWYgZGVmaW5lZChfX3Jpc2N2KSAmJiBkZWZpbmVkKF9fcmlzY3ZfeGxlbikKLSsjZGVmaW5lIE9QRU5TU0xfNjRfQklUCi0rI2RlZmluZSBPUEVOU1NMX1JJU0NWNjQKLSAjZWxpZiBkZWZpbmVkKF9fcG5hY2xfXykKLSAjZGVmaW5lIE9QRU5TU0xfMzJfQklUCi0gI2RlZmluZSBPUEVOU1NMX1BOQUNMCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvXzEuMTkuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW9fMS4xOS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjBiZWE0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW9fMS4xOS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWdycGNpby5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBweXRob24tZW51bTM0IFwKLSAgICAgICAgICAgICAgICAgICAgcHl0aG9uLWZ1dHVyZXMgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWh0bWw1bGliXzEuMC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWh0bWw1bGliXzEuMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTk0MWEyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1odG1sNWxpYl8xLjAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1odG1sNWxpYi5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1odW1hbmZyaWVuZGx5XzQuMTguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taHVtYW5mcmllbmRseV80LjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTAzYTY1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1odW1hbmZyaWVuZGx5XzQuMTguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24taHVtYW5mcmllbmRseS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1odW1hbml6ZV8wLjUuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1odW1hbml6ZV8wLjUuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc2OTMwOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taHVtYW5pemVfMC41LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1odW1hbml6ZS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1oeXBlcmxpbmtfMTkuMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWh5cGVybGlua18xOS4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5YTlhNWMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWh5cGVybGlua18xOS4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24taHlwZXJsaW5rLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlkbmFfMi44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlkbmFfMi44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGNmNzJhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pZG5hXzIuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWlkbmEuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taW1hZ2luZ18xLjEuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbWFnaW5nXzEuMS43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MGRkN2QwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbWFnaW5nXzEuMS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gSW1hZ2luZyBMaWJyYXJ5IChQSUwpIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9OTI7ZW5kbGluZT0xMjA7bWQ1PWM0MzcxYWY0NTc5ZjFlNDg5Y2Y4ODFjMTQ0M2RkNGVjIgotREVQRU5EUyA9ICJmcmVldHlwZSBqcGVnIHRpZmYiCi1TUkNOQU1FID0gIkltYWdpbmciCi1QUiA9ICJyNSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZWZmYm90Lm9yZy9kb3dubG9hZHMvSW1hZ2luZy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1weXRob24taW1hZ2luZy1zZXR1cC5weS1mb3JjZS1wYXRocy1mb3ItemxpYi1mcmVldHlwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FsbG93LnRvLmRpc2FibGUuc29tZS5mZWF0dXJlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtZnJlZXR5cGUtaW5jbHVkZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWhvc3QtbGliZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3B5dGhvbi1pbWFnaW5nLUNWRS0yMDE2LTI1MzMucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZmMxNGE1NGUxY2UwMmEwMjI1YmU4ODU0YmZiYTQ3OGUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODk1YmM3YzI0OThjOGUxZjliOTk5MzhmMWE0MGRjODZiM2YxNDk3NDFmMTA1Y2Y3YzdiZDJlMDcyNTQwNTIxMSIKLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi0jIFRoZXJlIGlzbid0IGVuYWJsZS9kaXNhYmxlIG9wdGlvbiwgYW5kIGxjbXMgaXMgaW4gbWV0YS1vZSwgYXQgbGVhc3QgbWFrZSBpdCBleHBsaWNpdCB3aGVuIGVuYWJsZWQKLSMgc2V0dXAucHkgYWxyZWFkeSBoYXMgRklYTUU6IGFkZCBtZWNoYW5pc20gdG8gZXhwbGljaXRseSAqZGlzYWJsZSogdGhlIHVzZSBvZiBhIGxpYnJhcnkKLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2xjbXNdID0gIiwsbGNtcyIKLQotaW5oZXJpdCBkaXN0dXRpbHMKLQotZG9fY29tcGlsZSgpIHsKLSAgICBleHBvcnQgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0KLSAgICBleHBvcnQgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0KLSAgICBleHBvcnQgTENNU19FTkFCTEVEPSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2xjbXMnLCAnVHJ1ZScsICdGYWxzZScsIGQpfQotICAgIGRpc3R1dGlsc19kb19jb21waWxlCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgZXhwb3J0IFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9Ci0gICAgZXhwb3J0IFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9Ci0gICAgZXhwb3J0IExDTVNfRU5BQkxFRD0ke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdsY21zJywgJ1RydWUnLCAnRmFsc2UnLCBkKX0KLSAgICBkaXN0dXRpbHNfZG9faW5zdGFsbAotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS9odG1sLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L1JFQURNRSAke0R9JHtkYXRhZGlyfS9kb2MvJHtCUE59LwotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L0RvY3MvKiAke0R9JHtkYXRhZGlyfS9kb2MvJHtCUE59L2h0bWwvCi0KLSAgICAjIGdldCByaWQgb2YgIyEvdXNyL2xvY2FsL2Jpbi9weXRob24KLSAgICBzZWQgLWkgLWUgJ3M6L3Vzci9sb2NhbC9iaW4vOiR7YmluZGlyfS9lbnYgOmcnICR7RH0ke2JpbmRpcn0vKgotfQotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWxhbmcgcHl0aG9uLXN0cmluZ29sZCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbXBvcnRsaWItbWV0YWRhdGEuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWltcG9ydGxpYi1tZXRhZGF0YS5pbmMKaW5kZXggYTUzNTM3YS4uYjYxNjVkYyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWltcG9ydGxpYi1tZXRhZGF0YS5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWltcG9ydGxpYi1tZXRhZGF0YS5pbmMKQEAgLTMsMTAgKzMsMTAgQEAKIExJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU4OGFlMTIyZjM5MjVkOGJkZTgzMTkwNjBmMmRkYjhlIgogCi1TUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy81ZC80NC82MzZiY2QxNTY5Nzc5MTk0M2UyZGVkZGEwZGJlMDk4ZDg1MzBhMzhkMTEzYjIwMjgxNzEzM2UwYjA2YzAvaW1wb3J0bGliX21ldGFkYXRhLTAuMjMudGFyLmd6IgorU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvZDcvY2QvM2IxZGZmYTQ2YjE5ZGFjMjY5ZDU4NmI5ZDQ1MDkwNTg4YThiZDdhNTc0MTYwMmEzNjlkNDVlMWJkZjY1L2ltcG9ydGxpYl9tZXRhZGF0YS0xLjUuMi50YXIuZ3oiCiBTID0gIiR7V09SS0RJUn0vaW1wb3J0bGliX21ldGFkYXRhLSR7UFZ9IgotU1JDX1VSSVttZDVzdW1dID0gIjgwZDY3N2Q3NDQ5OTUzMzZjOWMyMmQyMWE4NWRkZWI4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFhMThkNzM3OGIwMGI0MDg0Nzc5MGU3YzI3ZTExNjczZDdmZWQyMTkzNTQxMDlkMGU3YjllNWIyNWRjM2FkMjYiCitTUkNfVVJJW21kNXN1bV0gPSAiMzVhODVhODFjN2Q4NjYwNWY0ZjQ5Mzk3ZjRlN2UzOWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGZjODM2ODg1NTNhOTFhNzg2YzZjOTFlZWI1ZjNiMWQzMWYyNGQ3MTg3N2JiZDk0ZWNiZjU0ODRlNTc2OTBhMiIKIAogREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXNldHVwdG9vbHMtc2NtLW5hdGl2ZSIKIFJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0temlwcCAke1BZVEhPTl9QTn0tcGF0aGxpYjIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taW1wb3J0bGliLW1ldGFkYXRhXzAuMjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taW1wb3J0bGliLW1ldGFkYXRhXzAuMjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5YzU3MDAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWltcG9ydGxpYi1tZXRhZGF0YV8wLjIzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24taW1wb3J0bGliLW1ldGFkYXRhLmluYwotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1jb25maWdwYXJzZXIgXAotICAgICAgICAgICAgICAgICAgIHB5dGhvbi1jb250ZXh0bGliMiBcCi0gICAgICAgICAgICAgICAgICAgcHl0aG9uLXBhdGhsaWIyIFwKLSAgICAgICAgICAgICAgICAgICBweXRob24tY29tcHJlc3Npb24gXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWluY3JlbWVudGFsXzE3LjUuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbmNyZW1lbnRhbF8xNy41LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzOWFjMGMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWluY3JlbWVudGFsXzE3LjUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1pbmNyZW1lbnRhbC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbmZsZWN0aW9uXzAuMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWluZmxlY3Rpb25fMC4zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhOWQ0OTcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWluZmxlY3Rpb25fMC4zLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24taW5mbGVjdGlvbi5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1jb2RlY3MiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taW50ZXJ2YWxzXzEuMTAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbnRlcnZhbHNfMS4xMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzJhMzNiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbnRlcnZhbHNfMS4xMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWludGVydmFscy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pcGFkZHJlc3MuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlwYWRkcmVzcy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyOWNmMjIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlwYWRkcmVzcy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiAzLjMrJ3MgaXBhZGRyZXNzIGZvciBQeXRob24gMi42LCAyLjcsIDMuMi4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcGhpaGFnL2lwYWRkcmVzcyIKLUxJQ0VOU0UgPSAiUHl0aG9uLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTdmNTM4NTg0Y2MzNDA3YmY3NjA0MmRlZjcxNjg1NDhhIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYWFlZTY3YTgwMjY3ODJhZjE4MzExNDhiZWIwZDkwNjAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjdmOGUwMzY5NTgwYmI0YTI0ZDViYTFkN2NjMjk2NjBhNGE2OTg3NzYzZmFmMWQ4YTgwNDY4MzBlMDIwZTdlMiIKLQotaW5oZXJpdCBweXBpCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pcGFkZHJlc3NfMS4wLjIzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlwYWRkcmVzc18xLjAuMjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkNGU2Y2IuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlwYWRkcmVzc18xLjAuMjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24taXBhZGRyZXNzLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlweV8xLjAwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlweV8xLjAwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODdhNTE3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pcHlfMS4wMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1pcHkuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXNvODYwMV8wLjEuMTIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXNvODYwMV8wLjEuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1NDNjZjkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzbzg2MDFfMC4xLjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24taXNvODYwMS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pc29kYXRlXzAuNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzb2RhdGVfMC42LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0OGUxMjMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzb2RhdGVfMC42LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24taXNvZGF0ZS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pc29ydF80LjMuMjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXNvcnRfNC4zLjIxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTQ2ZDg5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pc29ydF80LjMuMjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24taXNvcnQuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXRzZGFuZ2Vyb3VzXzEuMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWl0c2Rhbmdlcm91c18xLjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGM5OWNiNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXRzZGFuZ2Vyb3VzXzEuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24taXRzZGFuZ2Vyb3VzLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0temxpYiBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tamF2YW9iai1weTNfMC40LjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qYXZhb2JqLXB5M18wLjQuMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDM0NzQwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qYXZhb2JqLXB5M18wLjQuMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1qYXZhb2JqLXB5My5pbmMKLWluaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWppbmphMi5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tamluamEyLmluYwppbmRleCA2YTZhYWQ5Li45MjcyMzA1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tamluamEyLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tamluamEyLmluYwpAQCAtNCw4ICs0LDggQEAKIAogUFlQSV9QQUNLQUdFID0gIkppbmphMiIKIAotU1JDX1VSSVttZDVzdW1dID0gIjc4ODM1NTliYzVjYzNlMjc4MWQ5NGI0YmU2MWNmZGNkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlmZTk1ZjE5Mjg2Y2ZlZmFhOTE3NjU2NTgzZDAyMGJlMTRlNzg1OWM2YjAyNTI1ODgzOTFlNDdkYjM0NTI3ZGUiCitTUkNfVVJJW21kNXN1bV0gPSAiNWQ4OGM3ZTc3YWE2M2ZjODUyYTA0ZjY1ZGJmZTU1OTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTMxODdmZmJjNzgwODA3OTY3M2VmNTI3NzFiYWE5NTA0MjZmZDY2NGQzYWFkMWQwZmEzZTk1NjQ0MzYwZTI1MCIKIAogUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1pbyAke1BZVEhPTl9QTn0tcGlja2xlICR7UFlUSE9OX1BOfS1jcnlwdCBcCiAgICAgJHtQWVRIT05fUE59LW1hdGggJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCkBAIC0xNSwzICsxNSwxOSBAQAogQ0xFQU5CUk9LRU4gPSAiMSIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitpbmhlcml0IHB0ZXN0CisKK1NSQ19VUkkgKz0gIiBcCisJZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorCSR7UFlUSE9OX1BOfS1weXRlc3QgXAorCSR7UFlUSE9OX1BOfS11bml4YWRtaW4gXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKwljcCAtcmYgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWppbmphMl8yLjEwLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tamluamEyXzIuMTAuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTIzM2NmNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tamluamEyXzIuMTAuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWppbmphMi5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWxhbmcgXAotICAgICR7UFlUSE9OX1BOfS1yZSBcCi0gICAgJHtQWVRIT05fUE59LXRleHR1dGlscyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBhdGNoLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucGF0Y2guaW5jCmluZGV4IGIyMzE0MmQuLmUyM2Y5NmIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucGF0Y2guaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucGF0Y2guaW5jCkBAIC01LDggKzUsOCBAQAogCiBpbmhlcml0IHB5cGkKIAotU1JDX1VSSVttZDVzdW1dID0gImU4NjUwM2YwNWZhMTkyZmE4NzBkNzAwNGI4Y2U5MjlhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNiYjcyZjhiZjM1MjYwNjI4YWVhNmI1MDhhMTA3MjQ1Zjc1N2QxZWM4MzlhMTljMzQzNDk5ODVlMmMwNTY0NWEiCitTUkNfVVJJW21kNXN1bV0gPSAiZmNjNTQ2ODkyNDE0YmVmMmY3Zjg5ZjBlMmE2MThhOWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGRjMGY3NjI4YjhiZmRkNjJlM2NiZmJjMjRjYTY2NzFiMGI2MjY1YjUwZDE4NmMyY2YzNjU5ZGMwZjc4ZmQ2YSIKIAogUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1qc29uICR7UFlUSE9OX1BOfS1qc29ucG9pbnRlciAke1BZVEhPTl9QTn0tbmV0Y2xpZW50ICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucGF0Y2hfMS4yNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucGF0Y2hfMS4yNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBjZDMxOC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBhdGNoXzEuMjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tanNvbnBhdGNoLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXJlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25wb2ludGVyLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucG9pbnRlci5pbmMKaW5kZXggYjZlNDgzNi4uM2U0MWI3MCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25wb2ludGVyLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBvaW50ZXIuaW5jCkBAIC0zLDcgKzMsNyBAQAogTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MzJiMTVjODQzYjdhMzI5MTMwZjRlMjY2YTI4MWViYjMiCiAKLWluaGVyaXQgcHlwaQoraW5oZXJpdCBweXBpIHB0ZXN0CiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI3NDFiOThkMGU2OTNiMDhiNWU0NGUwYTlkYTVhN2JiNyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJjMTkyYmE4NjY0OGUwNWZkYWU0ZjA4YTE3ZWMyNTE4MGE5YWVmNTAwOGQ5NzM0MDdiNTgxNzk4YTgzOTc1MzYyIgpAQCAtMTMsMyArMTMsMTUgQEAKICIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJICs9ICIgXAorCWZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKwkke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAtZiAke1N9L3Rlc3RzLnB5ICR7RH0ke1BURVNUX1BBVEh9LworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25wb2ludGVyXzIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucG9pbnRlcl8yLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxM2E3NzYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25wb2ludGVyXzIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1qc29ucG9pbnRlci5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1yZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29uc2NoZW1hXzMuMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25zY2hlbWFfMy4yLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2NzdjNjQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25zY2hlbWFfMy4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tanNvbnNjaGVtYS5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWFyZ3BhcnNlIFwKLSAgICAke1BZVEhPTl9QTn0tY29udGV4dGxpYiBcCi0gICAgJHtQWVRIT05fUE59LWZ1bmN0b29sczMyIFwKLSAgICAke1BZVEhPTl9QTn0tbGFuZyBcCi0gICAgJHtQWVRIT05fUE59LXJlIFwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCi0gICAgJHtQWVRIT05fUE59LXRleHR1dGlscyBcIAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWtjb25maWdsaWIuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWtjb25maWdsaWIuaW5jCmluZGV4IGM4MmIyNmIuLjNkYzQ5NjEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1rY29uZmlnbGliLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24ta2NvbmZpZ2xpYi5pbmMKQEAgLTIsNyArMiw3IEBACiBMSUNFTlNFID0gIklTQyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT03MTIxNzdhNzJhMzkzNzkwOTU0M2VkYTNhZDFiZmI3YyIKIAotU1JDX1VSSVttZDVzdW1dID0gIjc4NzlhYTEzZDMwNjI2M2U5NTE0NjQzOWQzOTU5ZjIzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhkYmI5NDZkNDFhMzNjZWMyYjYzNDMyMzkzYTQ5MjA0NzljOGM5ZmE4ZDViYmNhNDY4YzRlOGE2NzNiZTZlMzYiCitTUkNfVVJJW21kNXN1bV0gPSAiNGFkNjg2MTg4MjRkNGJhZDFkMWRlMWQ3ZWI4MzhiYmEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmVkMmNjMjIxNmY1MzhlY2E0MjU1YTgzYTQ1ODhkODgyMzU2M2NkZDUwMTE0Zjg2Y2YxYTI2NzRlNjAyYzkzYyIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxhenktb2JqZWN0LXByb3h5XzEuNC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxhenktb2JqZWN0LXByb3h5XzEuNC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjRkNjBiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sYXp5LW9iamVjdC1wcm94eV8xLjQuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1sYXp5LW9iamVjdC1wcm94eS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1saWNlbnNlLWV4cHJlc3Npb24uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxpY2Vuc2UtZXhwcmVzc2lvbi5pbmMKaW5kZXggNGMzNWU4ZC4uYWRkMjU4MSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxpY2Vuc2UtZXhwcmVzc2lvbi5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxpY2Vuc2UtZXhwcmVzc2lvbi5pbmMKQEAgLTcsMTAgKzcsMjMgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICI4MTQ3N2Y3NzkwOTlmNTUwNzFjNmE3Yjg4YTI5YmIwMSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI4YWFhNDU1YzViOTdjNGYyMTc0MDkwMTc4YjE5NzkyYjJhMWM2MjBlODA1OTFhYWZkNGUwYTk5YjcxM2Y5ZThkIgogCi1pbmhlcml0IHB5cGkKK2luaGVyaXQgcHlwaSBwdGVzdAogCiBSREVQRU5EU18ke1BOfSArPSAiXAogICAgICR7UFlUSE9OX1BOfS1ib29sZWFucHkgXAogICAgICIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJICs9ICIgXAorCWZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKwkke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisJY3AgLXJmICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1saW5lY2FjaGUyXzEuMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxpbmVjYWNoZTJfMS4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4NmRhMmQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxpbmVjYWNoZTJfMS4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIkEgYmFja3BvcnQgb2YgbGluZWNhY2hlIHRvIG9sZGVyIHN1cHBvcnRlZCBQeXRob25zIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Rlc3RpbmctY2FiYWwvbGluZWNhY2hlMiIKLUxJQ0VOU0UgPSAiUHl0aG9uLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT0xOTtlbmRsaW5lPTE5O21kNT0zNjhkZGM4NTg4NDMxYzE4MGFlN2MzM2Y0ZmI1NzUxOSIKLQotREVQRU5EUyA9ICIke1BZVEhPTl9QTn0tcGJyLW5hdGl2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdiMjVkMDI4OWVjMzZiZmYxZjllNjNjNDMyOWNlNjVjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRiMjZmZjRlNzExMGRiNzZlZWI2ZjVhN2I2NGE4MjYyMzgzOWQ1OTVjMjAzOGVlZGE2NjJmMmEyZGI3OGU5N2MiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLUNMRUFOX0JST0tFTiA9ICIxIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxvY2tmaWxlXzAuMTIuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sb2NrZmlsZV8wLjEyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwZWEwMTguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxvY2tmaWxlXzAuMTIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlBsYXRmb3JtLWluZGVwZW5kZW50IGZpbGUgbG9ja2luZyBtb2R1bGUiCi1IT01FUEFHRSA9ICJodHRwOi8vbGF1bmNocGFkLm5ldC9weWxvY2tmaWxlIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbi10aHJlYWRpbmciCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjM0MGRmZmJiZmVhNTM0YjU4ZjEzNDk5ODRlZWVmNzIiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhNmExYTgyOTU3YTIzYWZkZjQ0Y2ZkZDAzOWI2NWZmOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2YWVkMDJkZTAzY2JhMjRlZmFiY2Q2MDBiMzA1NDAxNDA2MzRmYzA2Y2ZhNjAzODIyZDUwOGQ1MzYxZTlmNzk5IgotCi0jIFNhdGlzZnkgc2V0dXAucHkgJ3NldHVwX3JlcXVpcmVzJwotREVQRU5EUyArPSAiIFwKLSAgICAgICAgcHl0aG9uLXBici1uYXRpdmUgXAotICAgICAgICAiCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1scnBhcnNpbmdfMS4wLjE2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxycGFyc2luZ18xLjAuMTYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjZmUzMDEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxycGFyc2luZ18xLjAuMTYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tbHJwYXJzaW5nLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWx4bWwuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWx4bWwuaW5jCmluZGV4IGRmOTU3M2IuLjA1YjVlYWUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1seG1sLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbHhtbC5pbmMKQEAgLTE4LDggKzE4LDggQEAKIAogREVQRU5EUyArPSAibGlieG1sMiBsaWJ4c2x0IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMjM1YzFhMjJkOTdhMTc0MTQ0ZTc2YjY2Y2U2MmFlNDYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWZmNjlkZGJmM2FkODYzNzVjMzQ0MzM5MzcxMTY4NjQwOTUxYzMwMjQ1MGM1ZDNlOTkzNmU5OGQ2NDU5ZGIwNiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJmMDg4ZTQ1MmVkNDViMDMwYjZmODQyNjlmMWU4NGQxMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4NjIwY2U4MGY1MGQwMjNkNDE0MTgzYmY5MGNjMjU3NmMyODM3Yjg4ZTAwYmVhM2YzM2FkMjYzMDEzM2JiYjYwIgogCiBESVNUVVRJTFNfQlVJTERfQVJHUyArPSAiIFwKICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC14c2x0LWNvbmZpZz0ncGtnLWNvbmZpZyBsaWJ4c2x0JyBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbHhtbF80LjQuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1seG1sXzQuNC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MWNjYjEyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1seG1sXzQuNC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWx4bWwuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG8uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvLmluYwppbmRleCA1ZjU0NDRmLi43NmRkNThjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG8uaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0by5pbmMKQEAgLTE3LDcgKzE3LDcgQEAKIGluaGVyaXQgcHlwaSBzaXRlaW5mbwogCiBERVBFTkRTICs9ICJvcGVuc3NsIHN3aWctbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi10eXBpbmciCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXR5cGluZyIKIAogRElTVFVUSUxTX0JVSUxEX0FSR1MgKz0gImJ1aWxkX2V4dCAtLW9wZW5zc2w9JHtTVEFHSU5HX0VYRUNQUkVGSVhESVJ9IC1JJHtTVEFHSU5HX0lOQ0RJUn0iCiBESVNUVVRJTFNfSU5TVEFMTF9BUkdTICs9ICJidWlsZF9leHQgLS1vcGVuc3NsPSR7U1RBR0lOR19FWEVDUFJFRklYRElSfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0b18wLjMwLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG9fMC4zMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjEyZmNkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0b18wLjMwLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tbTJjcnlwdG8uaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFrb18xLjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYWtvXzEuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzcyZWViLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYWtvXzEuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLW1ha28uaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFya3Vwc2FmZS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFya3Vwc2FmZS5pbmMKaW5kZXggMzNkNjNiMy4uNDgwODc2MiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hcmt1cHNhZmUuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXJrdXBzYWZlLmluYwpAQCAtNyw4ICs3LDIxIEBACiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjk4NzJlOTI4Mzk3NjVlNTQ2ODI4YmI3NzU0YTY4YzQxOGQ5MjdjZDA2NGZkNDcwOGZhYjlmZTljOGJiMTE2YiIKIAogUFlQSV9QQUNLQUdFID0gIk1hcmt1cFNhZmUiCi1pbmhlcml0IHB5cGkKK2luaGVyaXQgcHlwaSBwdGVzdAogCiBSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXN0cmluZ29sZCIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJICs9ICIgXAorCWZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKwkke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisJY3AgLWYgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hcmt1cHNhZmVfMS4xLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFya3Vwc2FmZV8xLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDViYmU4YS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFya3Vwc2FmZV8xLjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1tYXJrdXBzYWZlLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXJlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXRwbG90bGliL2ZpeF9zZXR1cGV4dC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXRwbG90bGliL2ZpeF9zZXR1cGV4dC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFiOTA5NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWF0cGxvdGxpYi9maXhfc2V0dXBleHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotVGhpcyBmaXhlcyB0aGUgbnVtcHkgaW1wb3J0IHByb2JsZW0gaW4gc2V0dXBleHQucHkgdXNpbmcgYSBoYXJkLWNvZGVkIHBhdGguCi0KLUluZGV4OiBtYXRwbG90bGliLTIuMC4yL3NldHVwZXh0LnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbWF0cGxvdGxpYi0yLjAuMi5vcmlnL3NldHVwZXh0LnB5Ci0rKysgbWF0cGxvdGxpYi0yLjAuMi9zZXR1cGV4dC5weQotQEAgLTE0OCw2ICsxNDgsNyBAQCBkZWYgaGFzX2luY2x1ZGVfZmlsZShpbmNsdWRlX2RpcnMsIGZpbGVuCi0gICAgIFJldHVybnMgYFRydWVgIGlmIGBmaWxlbmFtZWAgY2FuIGJlIGZvdW5kIGluIG9uZSBvZiB0aGUKLSAgICAgZGlyZWN0b3JpZXMgaW4gYGluY2x1ZGVfZGlyc2AuCi0gICAgICIiIgotKyAgICByZXR1cm4gVHJ1ZQotICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICAgICAgIGluY2x1ZGVfZGlycyArPSBvcy5lbnZpcm9uLmdldCgnSU5DTFVERScsICcuJykuc3BsaXQoJzsnKQotICAgICBmb3IgZGlyIGluIGluY2x1ZGVfZGlyczoKLUBAIC0xNzIsNyArMTczLDcgQEAgZGVmIGdldF9iYXNlX2RpcnMoKToKLSAgICAgUmV0dXJucyBhIGxpc3Qgb2Ygc3RhbmRhcmQgYmFzZSBkaXJlY3RvcmllcyBvbiB0aGlzIHBsYXRmb3JtLgotICAgICAiIiIKLSAgICAgaWYgb3B0aW9uc1snYmFzZWRpcmxpc3QnXToKLS0gICAgICAgIHJldHVybiBvcHRpb25zWydiYXNlZGlybGlzdCddCi0rICAgICAgICByZXR1cm4gW29zLmVudmlyb25bJ1NUQUdJTkdfTElCRElSJ11dCi0gCi0gICAgIGJhc2VkaXJfbWFwID0gewotICAgICAgICAgJ3dpbjMyJzogWyd3aW4zMl9zdGF0aWMnLCBdLAotQEAgLTI2MCwxNCArMjYxLDYgQEAgZGVmIG1ha2VfZXh0ZW5zaW9uKG5hbWUsIGZpbGVzLCAqYXJncywgKgotICAgICBgZGlzdHV0aWxzLmNvcmUuRXh0ZW5zaW9uYCBjb25zdHJ1Y3Rvci4KLSAgICAgIiIiCi0gICAgIGV4dCA9IERlbGF5ZWRFeHRlbnNpb24obmFtZSwgZmlsZXMsICphcmdzLCAqKmt3YXJncykKLS0gICAgZm9yIGRpciBpbiBnZXRfYmFzZV9kaXJzKCk6Ci0tICAgICAgICBpbmNsdWRlX2RpciA9IG9zLnBhdGguam9pbihkaXIsICdpbmNsdWRlJykKLS0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGluY2x1ZGVfZGlyKToKLS0gICAgICAgICAgICBleHQuaW5jbHVkZV9kaXJzLmFwcGVuZChpbmNsdWRlX2RpcikKLS0gICAgICAgIGZvciBsaWIgaW4gKCdsaWInLCAnbGliNjQnKToKLS0gICAgICAgICAgICBsaWJfZGlyID0gb3MucGF0aC5qb2luKGRpciwgbGliKQotLSAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGxpYl9kaXIpOgotLSAgICAgICAgICAgICAgICBleHQubGlicmFyeV9kaXJzLmFwcGVuZChsaWJfZGlyKQotICAgICBleHQuaW5jbHVkZV9kaXJzLmFwcGVuZCgnLicpCi0gCi0gICAgIHJldHVybiBleHQKLUBAIC0zMTQsNiArMzA3LDcgQEAgY2xhc3MgUGtnQ29uZmlnKG9iamVjdCk6Ci0gICAgICAgICAgICAgICAgICAgICAiICAgIG1hdHBsb3RsaWIgbWF5IG5vdCBiZSBhYmxlIHRvIGZpbmQgc29tZSBvZiBpdHMgZGVwZW5kZW5jaWVzIikKLSAKLSAgICAgZGVmIHNldF9wa2djb25maWdfcGF0aChzZWxmKToKLSsgICAgICAgIHJldHVybgotICAgICAgICAgcGtnY29uZmlnX3BhdGggPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0xJQkRJUicpCi0gICAgICAgICBpZiBwa2djb25maWdfcGF0aCBpcyBOb25lOgotICAgICAgICAgICAgIHJldHVybgotQEAgLTg3NSwxNCArODY5LDE0IEBAIGNsYXNzIE51bXB5KFNldHVwUGFja2FnZSk6Ci0gICAgICAgICAgICAgcmVsb2FkKG51bXB5KQotIAotICAgICAgICAgZXh0ID0gRXh0ZW5zaW9uKCd0ZXN0JywgW10pCi0tICAgICAgICBleHQuaW5jbHVkZV9kaXJzLmFwcGVuZChudW1weS5nZXRfaW5jbHVkZSgpKQotKyAgICAgICAgZXh0LmluY2x1ZGVfZGlycy5hcHBlbmQob3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1NUQUdJTkdfTElCRElSJ10sICdweXRob24yLjcvc2l0ZS1wYWNrYWdlcy9udW1weS9jb3JlL2luY2x1ZGUvJykpCi0gICAgICAgICBpZiBub3QgaGFzX2luY2x1ZGVfZmlsZSgKLSAgICAgICAgICAgICAgICAgZXh0LmluY2x1ZGVfZGlycywgb3MucGF0aC5qb2luKCJudW1weSIsICJhcnJheW9iamVjdC5oIikpOgotICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCi0gICAgICAgICAgICAgICAgICJUaGUgQyBoZWFkZXJzIGZvciBudW1weSBjb3VsZCBub3QgYmUgZm91bmQuICIKLSAgICAgICAgICAgICAgICAgIllvdSBtYXkgbmVlZCB0byBpbnN0YWxsIHRoZSBkZXZlbG9wbWVudCBwYWNrYWdlIikKLSAKLS0gICAgICAgIHJldHVybiBbbnVtcHkuZ2V0X2luY2x1ZGUoKV0KLSsgICAgICAgIHJldHVybiBbb3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1NUQUdJTkdfTElCRElSJ10sICdweXRob24yLjcvc2l0ZS1wYWNrYWdlcy9udW1weS9jb3JlL2luY2x1ZGUvJyldCi0gCi0gICAgIGRlZiBjaGVjayhzZWxmKToKLSAgICAgICAgIG1pbl92ZXJzaW9uID0gZXh0cmFjdF92ZXJzaW9ucygpWydfX3ZlcnNpb25fX251bXB5X18nXQotSW5kZXg6IG1hdHBsb3RsaWItMi4wLjIvc2V0dXAucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBtYXRwbG90bGliLTIuMC4yLm9yaWcvc2V0dXAucHkKLSsrKyBtYXRwbG90bGliLTIuMC4yL3NldHVwLnB5Ci1AQCAtNjYsMjggKzY2LDYgQEAgbXBsX3BhY2thZ2VzID0gWwotICAgICBzZXR1cGV4dC5QeXRob24oKSwKLSAgICAgc2V0dXBleHQuUGxhdGZvcm0oKSwKLSAgICAgJ1JlcXVpcmVkIGRlcGVuZGVuY2llcyBhbmQgZXh0ZW5zaW9ucycsCi0tICAgIHNldHVwZXh0Lk51bXB5KCksCi0tICAgIHNldHVwZXh0LlNpeCgpLAotLSAgICBzZXR1cGV4dC5EYXRldXRpbCgpLAotLSAgICBzZXR1cGV4dC5GdW5jVG9vbHMzMigpLAotLSAgICBzZXR1cGV4dC5TdWJwcm9jZXNzMzIoKSwKLS0gICAgc2V0dXBleHQuUHl0eigpLAotLSAgICBzZXR1cGV4dC5DeWNsZXIoKSwKLS0gICAgc2V0dXBleHQuVG9ybmFkbygpLAotLSAgICBzZXR1cGV4dC5QeXBhcnNpbmcoKSwKLS0gICAgc2V0dXBleHQuTGliQWdnKCksCi0tICAgIHNldHVwZXh0LkZyZWVUeXBlKCksCi0tICAgIHNldHVwZXh0LkZUMkZvbnQoKSwKLS0gICAgc2V0dXBleHQuUG5nKCksCi0tICAgIHNldHVwZXh0LlFodWxsKCksCi0tICAgIHNldHVwZXh0LkltYWdlKCksCi0tICAgIHNldHVwZXh0LlRUQ29udigpLAotLSAgICBzZXR1cGV4dC5QYXRoKCksCi0tICAgIHNldHVwZXh0LkNvbnRvdXJMZWdhY3koKSwKLS0gICAgc2V0dXBleHQuQ29udG91cigpLAotLSAgICBzZXR1cGV4dC5EZWxhdW5heSgpLAotLSAgICBzZXR1cGV4dC5RaHVsbFdyYXAoKSwKLS0gICAgc2V0dXBleHQuVHJpKCksCi0gICAgICdPcHRpb25hbCBzdWJwYWNrYWdlcycsCi0gICAgIHNldHVwZXh0LlNhbXBsZURhdGEoKSwKLSAgICAgc2V0dXBleHQuVG9vbGtpdHMoKSwKLUBAIC0xMDAsMTMgKzc4LDggQEAgbXBsX3BhY2thZ2VzID0gWwotICAgICBzZXR1cGV4dC5CYWNrZW5kTWFjT1NYKCksCi0gICAgIHNldHVwZXh0LkJhY2tlbmRRdDUoKSwKLSAgICAgc2V0dXBleHQuQmFja2VuZFF0NCgpLAotLSAgICBzZXR1cGV4dC5CYWNrZW5kR3RrM0FnZygpLAotICAgICBzZXR1cGV4dC5CYWNrZW5kR3RrM0NhaXJvKCksCi0tICAgIHNldHVwZXh0LkJhY2tlbmRHdGtBZ2coKSwKLS0gICAgc2V0dXBleHQuQmFja2VuZFRrQWdnKCksCi0tICAgIHNldHVwZXh0LkJhY2tlbmRXeEFnZygpLAotICAgICBzZXR1cGV4dC5CYWNrZW5kR3RrKCksCi0tICAgIHNldHVwZXh0LkJhY2tlbmRBZ2coKSwKLSAgICAgc2V0dXBleHQuQmFja2VuZENhaXJvKCksCi0gICAgIHNldHVwZXh0LldpbmRvd2luZygpLAotICAgICAnT3B0aW9uYWwgTGFUZVggZGVwZW5kZW5jaWVzJywKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tY2NhYmVfMC40LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWNjYWJlXzAuNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjYzY2Q3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tY2NhYmVfMC40LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIk1jQ2FiZSBjaGVja2VyLCBwbHVnaW4gZm9yIGZsYWtlOCIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9kcmVhbWhvc3QvY2xpZmYiCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUucnN0O21kNT1mOGI1MGZiYTE3MTFlY2FjNmJjZGI2MzI0Zjg1YTY2ZCIKLQotU1JDX1VSSSArPSAiIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcHl0aG9uLW1jY2FiZS1yZW1vdmUtdW5uZWNlc3Nhcnktc2V0dXBfcmVxdWlyZXMtcHl0ZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4YzQyNWRiMDVmMzEwYWRjZDRiYjE3NGI5OTFmMjZmNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5YTJiMTJlYmQ4NzZlNzdjNzJlNDFlYmY0MDFjYzJlN2M1YjU2NjY0OWQ1MDEwNWNhNDk4MjI2ODg2NDIyMDdiIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICBweXRob24tcHJldHR5dGFibGUgXAotICAgIHB5dGhvbi1jbWQyIFwKLSAgICBweXRob24tcHlwYXJzaW5nIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbW9ja18zLjAuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tb2NrXzMuMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjcxMDY2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tb2NrXzMuMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJBIFB5dGhvbiBNb2NraW5nIGFuZCBQYXRjaGluZyBMaWJyYXJ5IGZvciBUZXN0aW5nIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZGU5ZGZiZjc4MDQ0NmIxOGFhYjExZjAwYmFhZjViN2UiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkODM0YTQ2ZDlhMTI5YmUzZTc2ZmRjYzk5NzUxZTgyYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4MzY1N2Q4OTRjOTBkNTY4MWQ2MjE1NWM4MmJkYTljMTE4NzgyNzUyNTg4MGVkYThmZjVkZjRlYzgxMzQzN2MzIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1ERVBFTkRTICs9ICIgXAotICAgIHB5dGhvbi1wYnItbmF0aXZlIgotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICBweXRob24tcHJldHR5dGFibGUgXAotICAgIHB5dGhvbi1jbWQyIFwKLSAgICBweXRob24tcHlwYXJzaW5nIFwKLSAgICBweXRob24tbWNjYWJlIFwKLSAgICBweXRob24tcGVwOCBcCi0gICAgcHl0aG9uLXB5Zmxha2VzIFwKLSAgICBweXRob24tcGJyIFwKLSAgICBweXRob24tZnVuY3NpZ3MgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1vbm90b25pY18xLjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbW9ub3RvbmljXzEuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDFlN2IxYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbW9ub3RvbmljXzEuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLVNVTU1BUlkgPSAiQW4gaW1wbGVtZW50YXRpb24gb2YgdGltZS5tb25vdG9uaWMoKSBmb3IgUHl0aG9uIDIuMCB0aHJvdWdoIDMuMiIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQyNzk0YzBkZjViOTA3ZmRhY2UyMzVhNjE5ZDgwMzE0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWY4MWNiMGU1OTY2NDc5NzU0NDUzZGVhMmI2ODIyZjQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjM5NTNkNTUwNzZkZjAzODU0MWU2NDhhNTM2NzZmYjI0OTgwZjdhMWJlMjkwY2RkYTIxMzAwYjNiYzIxZGZiMCIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1jdHlwZXMgJHtQWVRIT05fUE59LWlvICR7UFlUSE9OX1BOfS1yZSAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1vcmUtaXRlcnRvb2xzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tb3JlLWl0ZXJ0b29scy5pbmMKaW5kZXggOGRjZjAwYi4uMGI2ODRjMSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1vcmUtaXRlcnRvb2xzLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbW9yZS1pdGVydG9vbHMuaW5jCkBAIC00LDMgKzQsMTggQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTMzOTZlYTMwZjlkMjEzODlkNzg1NzcxOTgxNmY4M2I1IgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK2luaGVyaXQgcHRlc3QKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworCWNwIC1yZiAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbW9yZS1pdGVydG9vbHNfNS4wLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbW9yZS1pdGVydG9vbHNfNS4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjNDRkZjQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1vcmUtaXRlcnRvb2xzXzUuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tbW9yZS1pdGVydG9vbHMuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmMmVhNThhYTMzNmNlNmMxM2I3YjIyNWIzYmJlMzA1ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzOGE5MzZjMGE2ZDk4YTM4YmNjMmQwM2ZkYWFlZGFiYTlmNDEyODc5NDYxZGQyY2VmZjhkMzc1NjRkNjUyMmU0IgotCi1QRSA9ICIxIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1zZ3BhY2suaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1zZ3BhY2suaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGY1YzNlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tc2dwYWNrLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiTWVzc2FnZVBhY2sgKGRlKXNlcmlhbGl6ZXIiCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jZDk1MjMxODFkOWQ0ZmJmN2ZmY2E1MmVhYTJhNTc1MSIKLQotUFlQSV9QQUNLQUdFID0gIm1zZ3BhY2siCi1pbmhlcml0IHB5cGkKLQotU1JDX1VSSVttZDVzdW1dID0gImJhNDZmZGVlOTk1NTY1ZjQwZTMzMmJkN2VlYTg4MmYxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVhM2MyZjg1OTM0NmZjZDU1ZmM0NmU5Njg4NTMwMWQ5YzJmN2EzNmQ0NTNmNWQ4ZjI5Njc4NDBlZmExZTE4MzAiCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAotICAgICR7UFlUSE9OX1BOfS1pbyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbXNncGFja18wLjYuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tc2dwYWNrXzAuNi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzJjOGYyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tc2dwYWNrXzAuNi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1tc2dwYWNrLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmRnLWh0dHBzY2xpZW50XzAuNS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5kZy1odHRwc2NsaWVudF8wLjUuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNkODgxYS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmRnLWh0dHBzY2xpZW50XzAuNS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1uZGctaHR0cHNjbGllbnQuaW5jCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gIm5kZ19odHRwY2xpZW50IgotQUxURVJOQVRJVkVfTElOS19OQU1FW25kZ19odHRwY2xpZW50XSA9ICIke2JpbmRpcn0vbmRnX2h0dHBjbGllbnQiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIyMCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZXRhZGRyXzAuNy4xOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZXRhZGRyXzAuNy4xOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E1YTc5YS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0YWRkcl8wLjcuMTkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLW5ldGFkZHIuaW5jCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LXRleHR1dGlscyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0aWZhY2VzXzAuMTAuOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZXRpZmFjZXNfMC4xMC45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGFhODQ5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZXRpZmFjZXNfMC4xMC45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1uZXRpZmFjZXMuaW5jCi1pbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZXR3b3JreC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0d29ya3guaW5jCmluZGV4IGE0YzMxYjIuLjRiY2E2MzYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZXR3b3JreC5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5ldHdvcmt4LmluYwpAQCAtMyw4ICszLDYgQEAKIAogaW5oZXJpdCBweXBpCiAKLVBZUElfUEFDS0FHRV9FWFQgPSAiemlwIgotCiBSREVQRU5EU18ke1BOfSArPSAiXAogICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1kZWNvcmF0b3IgXAogICAgICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZXR3b3JreF8yLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0d29ya3hfMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDhmMDMxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZXR3b3JreF8yLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLW5ldHdvcmt4LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MzM3NmZmN2M5YzU4MDQ4YzYyZDkxNDMxZjdmMDhjZGUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4MjYwOGEzNjg2ZmIzZTYxZjIwY2YxM2JmZDNjMWI0YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NWU1NmY3YWI2ZmU4MTY1MmZiNGJjOWY0NGZhZGRiMGU5MDI1ZjQ2OWY2MDJkZjE0ZTNiMjU1MWMyZWE1YzhiIgotCi1pbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1lcmljXzI0LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtZXJpY18yNC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTFkNzdjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1udW1lcmljXzI0LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TVU1NQVJZID0gIkEgc29waGlzdGljYXRlZCBOdW1lcmljIFByb2Nlc3NpbmcgUGFja2FnZSBmb3IgUHl0aG9uIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIlBTRiAmIExMTkwiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MZWdhbC5odG07bWQ1PWUzY2U3NWRlZGQ0MDQzOTE4ZDE1OTc5YWU0M2UzMTJlIgotCi1QUiA9ICJtbDMiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L251bXB5L051bWVyaWMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaXQtdHJpZXMtdG8tZGVmaW5lLXRoaXMtZnVuY3Rpb24tZGlmZmVyZW50bHktdGhhbi1pdC5wYXRjaCBcCi0iCi1TID0gIiR7V09SS0RJUn0vTnVtZXJpYy0ke1BWfSIKLQotaW5oZXJpdCBkaXN0dXRpbHMKLQotU1JDX1VSSVttZDVzdW1dID0gIjJhZTY3MjY1NmUwNjcxNmExNDlhY2IwNDhjY2EzMDkzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVmNzJlNzI5ZWI2ZmY1NzQ0MmYyYTM4YmZjOTkzMTczOGI1OWU1MDc3OTI4ZTJlNzBkMjJiNDYxMGZmMTUyNTgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tb2JkLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1vYmQuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWU2NjNiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1vYmQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQSBweXRob24gbW9kdWxlIGZvciBoYW5kbGluZyByZWFsdGltZSBzZW5zb3IgZGF0YSBmcm9tIE9CRC1JSSB2ZWhpY2xlIHBvcnRzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2JyZW5kYW4tdy9weXRob24tT0JEIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5tZDttZDU9NThiYTg5NmZhMDg2Yzk2YWQyMzMxN2NlYmZlYWIyNzciCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzMDVlZmNiNmM2NTBkYjdiOTU4MzUzMjM1NWViZWI3YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4YjgxZWE1ODk2MTU3YjZlODYxYWYxMmUxNzNjMTBiMDAxY2I2Y2NhNmViYjA0ZGIyYzAxZDMyNjgxMmFkNzdiIgotCi1pbmhlcml0IHB5cGkKLQotUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LXB5c2VyaWFsICR7UFlUSE9OX1BOfS1waW50IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhY2thZ2luZy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFja2FnaW5nLmluYwppbmRleCA3Y2VkYWRmLi40MTg0ODNmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFja2FnaW5nLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFja2FnaW5nLmluYwpAQCAtMyw4ICszLDggQEAKIExJQ0VOU0UgPSAiQXBhY2hlLTIuMCAmIEJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWZhYWRhZWRjYTkyNTFhOTBiMjA1YzkxNjc1NzhjZTkxIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiOTNkNmNjYmRmY2I1Yjc2OTdiNmVjZWE1M2VjYzI5NGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmUxZDgzMzFkZmE3Y2MwYTg4M2I0OWQ3NWZjNzYzODBiMmFiMjczNGIyMjBmYmI4N2Q3NzRlNGZkNGI4NTFmOCIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxOWUwZDFmODJhOTAwN2I0NDg2NTBjY2ZlZmZkMGEyNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzYzI5MmI0NzRmZGExNjcxZWM1N2Q0NmQ3MzlkMDcyYmZkNDk1YTRmNTFhZDAxYTA1NTEyMWQ4MWU5NTJiN2EzIgogCiBERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tc2V0dXB0b29scy1zY20tbmF0aXZlIgogUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1zaXggJHtQWVRIT05fUE59LXB5cGFyc2luZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYWNrYWdpbmdfMjAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYWNrYWdpbmdfMjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTVkMDc0Ni4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFja2FnaW5nXzIwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1wYWNrYWdpbmcuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFoby1tcXR0LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYWhvLW1xdHQuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTBlNjEwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYWhvLW1xdHQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJNUVRUIHZlcnNpb24gMy4xLzMuMS4xIGNsaWVudCBsaWJyYXJ5IgotTElDRU5TRSA9ICJFUEwtMS4wIHwgRURMLTEuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1lYjQ4YzZlZTJjYjlmNWI4YjlmZTc1ZTZmODE3YmRmYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lcGwtdjEwO21kNT04ZDM4M2MzNzllOTFkMjBiYTE4YTUyYzNlN2QzYTk3OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lZGwtdjEwO21kNT1jMDlmMTIxOTM5ZjA2M2FlYjUyMzU5NzJiZThjNzIyYyBcCi0iCi1TUkNOQU1FID0gInBhaG8tbXF0dCIKLQotaW5oZXJpdCBweXBpCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0NWU4MGQ5YjgwNjZhOGQwYmExZWNmZmZlMjcxYmQzZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlM2QyODYxOThiYWFlYTE5NWM4YjNiYzIyMTk0MWQyNWEzYWIwZTE1MDdmYzE3NzliZGI3NDczODA2Mzk0YmU0IgotCi1ERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tcHl0ZXN0LXJ1bm5lci1uYXRpdmUiCi0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgICAke1BZVEhPTl9QTn0taW8gXAotICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKLSAgICAke1BZVEhPTl9QTn0tbWF0aCBcCi0gICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFoby1tcXR0XzEuNS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhaG8tbXF0dF8xLjUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTEwMzExNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFoby1tcXR0XzEuNS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXBhaG8tbXF0dC5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhbV8xLjguMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYW1fMS44LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhYzM0OTYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhbV8xLjguMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlB5dGhvbiBQQU0gbW9kdWxlIHVzaW5nIGN0eXBlcywgcHkzL3B5Mi4iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT02NDMyNmQ0MjQ3MWI0OTNjNWMwODgzMDUzNjRhZDVkYSIKLQotU1JDX1VSSVttZDVzdW1dID0gImRiNzFiNmI5OTkyNDZmYjA1ZDc4ZWNmYmUxNjY2MjlkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI2ZWZlNGU3OWI4NjliMTBmOTdjZDhjNGE2YmJiMDRhNGU1NGQ0MTE4NjM2NGU5NzViNDEwOGM5YzA3MTgxMmMiCi0KLVBZUElfUEFDS0FHRSA9ICJweXRob24tcGFtIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSA9ICJsaWJwYW0iCi0KLWluaGVyaXQgZmVhdHVyZXNfY2hlY2sKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwYW0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFuZGFzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYW5kYXMuaW5jCmluZGV4IGQ2Y2EyNDMuLjkzNDJjZWQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYW5kYXMuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYW5kYXMuaW5jCkBAIC02LDggKzYsOCBAQAogTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lZTA0NzBmMmRlMzM2YzM3MGE3MWMyZjhkNWU4MWMxMSIKIAotU1JDX1VSSVttZDVzdW1dID0gIjdiNTk3YzdmOTg5NjUyZTBjOWFmNWYwOWExNTdlM2FlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjViMjRjYTQ3YWNmNjkyMjJlODI1MzBlODkxMTFkZDlkMTRmOWI5NzBhYjJjZDNhMWMyYzc4ZjBjNGZiYmE0ZjQiCitTUkNfVVJJW21kNXN1bV0gPSAiNjI4ZmZhMWRkNTc2OGUwYmU3MDIzNjU5NmNlZThkNmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2MwNzc2NTMwOGYwOTFkODFiNjczNWQ0ZjIyNDJiYjQzYzMzMmNjMzQ2MWNhZTYwNTQzZGY2YjEwOTY3ZmUyNyIKIAogaW5oZXJpdCBweXBpCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXJzZS10eXBlLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXJzZS10eXBlLmluYwppbmRleCA0NTQ5ZWM5Li4xNDdlYTY0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2UtdHlwZS5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlLXR5cGUuaW5jCkBAIC03LDYgKzcsMTkgQEAKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNTk2YmRjNzVkM2RkOTMwMzZmYmZlM2QwNDEyN2RhOWY2ZGYwYzI2YzM2ZTAxZTc2ZGE4NWFkZWY0MzM2YjNjIgogCiBQWVBJX1BBQ0tBR0UgPSAicGFyc2VfdHlwZSIKLWluaGVyaXQgcHlwaQoraW5oZXJpdCBweXBpIHB0ZXN0CiAKIFJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tcGFyc2UiCisKK1NSQ19VUkkgKz0gIiBcCisJZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorCSR7UFlUSE9OX1BOfS1weXRlc3QgXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKwljcCAtcmYgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlLXR5cGVfMC40LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2UtdHlwZV8wLjQuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUxMGU4MC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2UtdHlwZV8wLjQuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1wYXJzZS10eXBlLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXJzZS5pbmMKaW5kZXggNWNlNjdmMS4uZWNmZDY3MSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2UuaW5jCkBAIC0xLDE0ICsxLDI2IEBACiBTVU1NQVJZID0gIlBhcnNlIHN0cmluZ3MgdXNpbmcgYSBzcGVjaWZpY2F0aW9uIGJhc2VkIG9uIHRoZSBQeXRob24gZm9ybWF0KCkgc3ludGF4IgogSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3IxY2hhcmRqMG4zcy9wYXJzZSIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcGFyc2UucHk7YmVnaW5saW5lPTEzMjU7ZW5kbGluZT0xMzQ1O21kNT1mYTAzYmFlM2Y1MWEyZGIyNWUyMzllODY5YzY0NzQzNyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BhcnNlLnB5O2JlZ2lubGluZT0xMzI1O2VuZGxpbmU9MTM0NTttZDU9M2Q5ODdiMmU3Mzg4MWJiY2U3NjhhODBmOWNkZDIzZDkiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIwN2NiYjViYTEwMjVjYmZlOTJmYzMzNzZjMzcyZGRhNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NWE0ZjQ0NjllMzdjNTdiNWU5MjQ2MjlhYzk5OTI2ZjI4YmVlN2RhNTk1MTVkYzViODA3OGM0YzNlNzc5MjQ5IgorU1JDX1VSSVttZDVzdW1dID0gImE1YWE4MmIyYjhiNGQ3MzNkMjI3ZTNjOTlkN2QwMWI0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE2ZDRlMmMyZjFmYmRlNjcxN2QyODA4NGExOTFhMDUyOTUwZjc1OGMwY2JkODM4MDUzNTdlNjU3NWMyYjk1YzAiCiAKLWluaGVyaXQgcHlwaQoraW5oZXJpdCBweXBpIHB0ZXN0CiAKIFJERVBFTkRTXyR7UE59ICs9ICJcCiAgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKICAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCiAgICAgIgorCitTUkNfVVJJICs9ICIgXAorCWZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKwkke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAtZiAke1N9L3Rlc3RfcGFyc2UucHkgJHtEfSR7UFRFU1RfUEFUSH0vCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2VfMS4xNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlXzEuMTQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDMxY2NjNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2VfMS4xNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXBhcnNlLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhc3NsaWJfMS43LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFzc2xpYl8xLjcuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFjNTk4YS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFzc2xpYl8xLjcuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXBhc3NsaWIuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFzdGVfMy4yLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFzdGVfMy4yLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzZDRmZGQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhc3RlXzMuMi4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSA9ICJUb29scyBmb3IgdXNpbmcgYSBXZWIgU2VydmVyIEdhdGV3YXkgSW50ZXJmYWNlIHN0YWNrIgotSE9NRVBBR0UgPSAiaHR0cDovL3B5dGhvbnBhc3RlLm9yZy8iCi1MSUNFTlNFID0gIk1JVCIKLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbi1zaXgiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvbGljZW5zZS50eHQ7bWQ1PTE3OThmMjlkNTUwODBjNjAzNjVlNjI4M2NiNDk3NzljIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2RjNmRiZDIwZTM1OGRkOTViZDQyZWVmNWM2Y2M4NGMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGJkYzdmNmJlOTA3ZWVkN2NkNjM4NjhjNzlkODhhZjJiODdkMDJkODQwZmI1YWNmYzkzZDRiZGE1NzJiMTU2NyIKLQotUFlQSV9QQUNLQUdFID0gIlBhc3RlIgotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotRklMRVNfJHtQTn0gKz0gIi91c3IvbGliLyoiCi0KLURFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1weXRlc3QtcnVubmVyLW5hdGl2ZSIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhdGhsaWIyXzIuMy41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhdGhsaWIyXzIuMy41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzE3ZTFjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXRobGliMl8yLjMuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXBhdGhsaWIyLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLXNjYW5kaXIgXAotICAgICAgICAgICAgICAgICAgIHB5dGhvbi1taXNjIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYnJfNS40LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGJyXzUuNC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDdkOGQ3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYnJfNS40LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLSMgVGhlIGluYyBmaWxlIGlzIGluIG9lLWNvcmUKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBici5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gIjY1Y2RjMzJlMWExZmY1NmQ0ODFmYzE1YWE4Y2FmOTg4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEzOWQyNjI1NTQ3ZGJmYTVmYjBiODFkYWViYjM5NjAxYzQ3OGMyMTk1NmRjNTdlMmUwN2I3NDQ1MGE4YzUwNmIiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICAgICBpZiBbIC1mICR7RH0ke2JpbmRpcn0vcGJyIF07IHRoZW4KLSAgICAgICAgICAgICAgICBtdiAke0R9JHtiaW5kaXJ9L3BiciAke0R9JHtiaW5kaXJ9L3Bici0yCi0gICAgICAgIGZpCi19Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXA4XzEuNy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBlcDhfMS43LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0Y2U5NzguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBlcDhfMS43LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBzdHlsZSBndWlkZSBjaGVja2VyIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2RyZWFtaG9zdC9jbGlmZiIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5yc3Q7bWQ1PWQ4ZWJiYmU4MzEyNTljZTAxMDE3OWQyZjMxMGIwZjNlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjAzODIxZDA2ZGI5NDVjNzFkODExYjVhOGQ3ODQyM2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmUyNDliNTJlMjA0OThlNTllMGI1YzUyNTZhYTUyZWU5OWZjMjk1YjI2ZWM5ZWFhODU3NzZmZmRiOWZlNjM3NCIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgcHl0aG9uLXByZXR0eXRhYmxlIFwKLSAgICBweXRob24tY21kMiBcCi0gICAgcHl0aG9uLXB5cGFyc2luZyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBlcmlwaGVyeV8yLjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXJpcGhlcnlfMi4wLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkMDI0MGEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBlcmlwaGVyeV8yLjAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXBlcmlwaGVyeS5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gIjFkOTU4ZjAyNTc1ZDRhMTk3MzRlZTJkZDkyMzM2MTU3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVkYTRkNWY0MGZmODk3NGNmNmM3MjQ1ODdiYWE2NzRkN2UwNTkzZjA3YjZmNmVlODk2MTA0ZjExYzFiZTE4ZWMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGV4cGVjdC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGV4cGVjdC5pbmMKaW5kZXggNmQ3OGViOS4uYzYyMzBiMiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3QuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXhwZWN0LmluYwpAQCAtNCw4ICs0LDEwIEBACiBMSUNFTlNFID0gIklTQyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFjN2E3MjUyNTE4ODBhZjhjNmExNDgxODE2NjUzODViIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiZWQwMDMyNDJjYmYzMDhhZWUxYjFlYWVjZGVmNTllNDMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWUyYzFmZDBlNmVlM2E0OWIyOGY5NWQ0YjMzYmMzODljODliMjBhZjZhMTI1NTkwNmU5MGZmMTI2MmNlNjJlYiIKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLUZTTS5weS1jaGFuZ2Utc2hlYmFuZy1mcm9tLXB5dGhvbi10by1weXRob24zLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTUzZWIyNTE4NDI0OWQ2YTg1ZmRlOWFjZjQ4MDQwODUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmM2NWE0Mzk1OWQxNTNkMDExNGFmZTEzOTk3ZDQzOWMyMjgyM2EyN2NlZmNlYjVmZjM1YzIxNzhjNjc4NGMwYyIKIAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcGV4cGVjdCIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3RfNC43LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGV4cGVjdF80LjcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM0NmI0Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGV4cGVjdF80LjcuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSBweXRob24tcGV4cGVjdC5pbmMKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGlrYV8xLjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1waWthXzEuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2UwMTk4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1waWthXzEuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXBpa2EuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGludC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGludC5pbmMKaW5kZXggMDkwMGQ5MS4uNWMzNDgxMCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBpbnQuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1waW50LmluYwpAQCAtNyw5ICs3LDI0IEBACiAKIFBZUElfUEFDS0FHRSA6PSAiUGludCIKIAotaW5oZXJpdCBweXBpCitpbmhlcml0IHB5cGkgcHRlc3QKIAotU1JDX1VSSVttZDVzdW1dID0gImQwNjgxY2I3Y2ZhY2E5ZmM2OGNlN2VkYWIwZDA4ZDg4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMyZDhhOWE5ZDYzZjRmODExOTRjMDAxNGIzYjc0MjY3OWRjZTgxYTI2ZDQ1MTI3ZDk4MTBhNjhhNTYxZmU0ZTIiCitTUkNfVVJJW21kNXN1bV0gPSAiM2E4ZjI5YzJhMzBlZmQzNWFmNGI1YzVhMjI0ZWY5NjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzA4ZjEwNzA1MDBlMTAyZjgzYjZhZGZjYTZkYjUzZGViZmNlMmZmYzVkM2NiZTNmNmMzNjdkYTM1OWI1Y2Y0ZCIKIAotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitERVBFTkRTICs9ICJweXRob24zLXNldHVwdG9vbHMtc2NtLW5hdGl2ZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJICs9ICIgXAorCWZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKwkke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzdWl0ZQorCWNwIC1yZiAke1N9L3BpbnQvdGVzdHN1aXRlLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHN1aXRlLworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBpbnRfMC45LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBpbnRfMC45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODBmMDg4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1waW50XzAuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1waW50LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBpcF8xOS4zLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGlwXzE5LjMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjgyN2ExMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGlwXzE5LjMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVNVTU1BUlkgPSAiUElQIGlzIGEgdG9vbCBmb3IgaW5zdGFsbGluZyBhbmQgbWFuYWdpbmcgUHl0aG9uIHBhY2thZ2VzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9waXAucHlwYS5pby8iCi1MSUNFTlNFID0gIk1JVCAmIExHUEwtMi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PThiYTA2ZDUyOWM5NTUwNDhlNWRkZDdjNDU0NTllYjJlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWFhYWY5MGZiYWZjNTBlN2JhMWU2NmZmY2ViMDA5NjAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjEyMDdkNzZjMTAzMWU1MTc2Njg4OThhNmI0NmE5ZmIxNTAxYzdhNDcxMGVmNWRmZDZhNDBhZDllNjc1N2VhNyIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotIyBTaW5jZSBQSVAgaXMgbGlrZSBDUEFOIGZvciBQRVJMIHdlIG5lZWQgdG8gZHJhZyBpbiBhbGwgcHl0aG9uIG1vZHVsZXMgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgd29ya3MKLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJweXRob24tbW9kdWxlcyBweXRob24tZGlzdHJpYnV0ZSBweXRob24tbWlzYyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBsdWdneS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGx1Z2d5LmluYwppbmRleCA3NTg1OTg0Li4xMTk4ZDVmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGx1Z2d5LmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGx1Z2d5LmluYwpAQCAtMTEsNCArMTEsMTcgQEAKICAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbW9yZS1pdGVydG9vbHMgXAogIgogCi1pbmhlcml0IHB5cGkKK2luaGVyaXQgcHlwaSBwdGVzdAorCitTUkNfVVJJICs9ICIgXAorCWZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKwkke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RpbmcKKwljcCAtcmYgJHtTfS90ZXN0aW5nLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdGluZy8KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wbHVnZ3lfMC4xMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBsdWdneV8wLjEzLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkY2Q0ZjUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBsdWdneV8wLjEzLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcGx1Z2d5LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBseV8zLjExLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBseV8zLjExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjYxNjVjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wbHlfMy4xMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSBweXRob24tcGx5LmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJldGVuZF8xLjAuOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcmV0ZW5kXzEuMC45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2I4ZWQ0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcmV0ZW5kXzEuMC45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHJldGVuZC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcmV0dHl0YWJsZS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJldHR5dGFibGUuaW5jCmluZGV4IDA3ZTg5NmQuLjA5Mzg0ZGEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcmV0dHl0YWJsZS5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByZXR0eXRhYmxlLmluYwpAQCAtMjMsMyArMjMsMTYgQEAKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9QcmV0dHlUYWJsZS8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKK2luaGVyaXQgcHRlc3QKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgLWYgJHtTfS9wcmV0dHl0YWJsZV90ZXN0LnB5ICR7RH0ke1BURVNUX1BBVEh9LworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByZXR0eXRhYmxlXzAuNy4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByZXR0eXRhYmxlXzAuNy4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OWZmMjU5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcmV0dHl0YWJsZV8wLjcuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1wcmV0dHl0YWJsZS5pbmMKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb2dyZXNzXzEuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9ncmVzc18xLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwNjA4NjIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb2dyZXNzXzEuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXByb2dyZXNzLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb21wdC10b29sa2l0XzIuMC4xMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9tcHQtdG9vbGtpdF8yLjAuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyN2M5MDUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb21wdC10b29sa2l0XzIuMC4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXByb21wdC10b29sa2l0LmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvdG9idWYuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb3RvYnVmLmluYwppbmRleCA0MDYxMzExLi41NzE2ODk0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvdG9idWYuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm90b2J1Zi5pbmMKQEAgLTcsOCArNyw4IEBACiAKIGluaGVyaXQgcHlwaQogCi1TUkNfVVJJW21kNXN1bV0gPSAiZDYzNDY2NmM4OTgxNDhlNDU2NWFjNjJmM2JhNGEyY2EiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODQzZjQ5OGU5OGFkMTQ2OWFkNTRlY2I0YTdjY2Y0ODYwNWExYzVkMmJkMjZhZTc5OWM3YTJjZGRhYjRhMzdlYyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZWRhN2RlYTY1ZmM5NGU1NjBmYzlhODE4MGViMTg3MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNzdjOTc0ZDFkYWRmMjQ2ZDc4OWY2ZGFkMWMyNDQyNjEzN2M5MDkxZTkzMGRiZjUwZTBhMjljMWZjZjAwYjFmIgogCiAjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xODQ3MTUvCiAjIENhbid0IGZpbmQgcmVxdWlyZWQgZmlsZTogLi4vc3JjL2dvb2dsZS9wcm90b2J1Zi9kZXNjcmlwdG9yLnByb3RvCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvdG9idWZfMy45LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvdG9idWZfMy45LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwNGZjNDguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb3RvYnVmXzMuOS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXByb3RvYnVmLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBzdXRpbC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHN1dGlsLmluYwppbmRleCBiZjQ5ZDk4Li5kZmIzM2U4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHN1dGlsLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHN1dGlsLmluYwpAQCAtMiw4ICsyLDggQEAKIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTM1ZmQ5ZjI3MWQxOWQ1Zjc0MmYyMGE5ZDFmOGJiOGIiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJiMmM5NGUwMzY4ZmM2ZTZmMjM3YTcyNTJmOGU4NWNhMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZmFkOGViMmFjNjE0NTE4YmJlM2MwYjhlYjlkZmZkYjNhOGQyZTNhN2Q1ZGE1MWM1Yjk3NGZiNzIzYTVjNWFhIgorU1JDX1VSSVttZDVzdW1dID0gImVkN2IwZjExZWQyMTRiY2FiYmU3NmI3Y2Y1MmYzYWUzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY4NWVjMTZjYTE0ZDA3OTQ1NTg5MmYyNWJkMTI0ZGYyNmZmOTEzNzY2NGFmNDQ1NTYzYzFiZDM2NjI5YjVlMGUiCiAKIFBBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBzdXRpbF81LjYuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wc3V0aWxfNS42LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhYWJmYjIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBzdXRpbF81LjYuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXBzdXRpbC5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB0eXByb2Nlc3MuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB0eXByb2Nlc3MuaW5jCmluZGV4IDQ5Y2M1YTQuLjBjYzkxMTQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wdHlwcm9jZXNzLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHR5cHJvY2Vzcy5pbmMKQEAgLTE4LDMgKzE4LDIxIEBACiAiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworaW5oZXJpdCBwdGVzdAorCitTUkNfVVJJICs9ICIgXAorCWZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKwkke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKwkke1BZVEhPTl9QTn0tZmNudGwgXAorCSR7UFlUSE9OX1BOfS10ZXJtaW5hbCBcCisJJHtQWVRIT05fUE59LXJlc291cmNlIFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisJY3AgLXJmICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wdHlwcm9jZXNzXzAuNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB0eXByb2Nlc3NfMC42LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjYTQ1ODcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB0eXByb2Nlc3NfMC42LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXB0eXByb2Nlc3MuaW5jCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNDhhYmUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5LmluYworKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSB3aXRoIGNyb3NzLXB5dGhvbiBwYXRoLCBpbmktcGFyc2luZywgaW8sIGNvZGUsIGxvZyBmYWNpbGl0aWVzIgotSE9NRVBBR0UgPSAiaHR0cDovL3B5LnJlYWR0aGVkb2NzLmlvLyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTZiYjAzMjBiMDRhMGE1MDNmMTJmNjlmZWE0NzlkZTkiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MmM2N2RlODRiMDdhYzljYzg2N2I4YjcwODQzYTQ1YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZTI3MDgxNDAxMjYyMTU3NDY3YWQ2ZTdmODUxYjdhYTQwMmM1ODUyZGJjYjNkYWUwNjc2ODQzNGRlNTc1MmFhIgotCi1ERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tc2V0dXB0b29scy1zY20tbmF0aXZlIgotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5XzEuOC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5XzEuOC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWQyYzE5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weV8xLjguMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXB5LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YWxzYWF1ZGlvXzAuOC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YWxzYWF1ZGlvXzAuOC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTE1MzQyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFsc2FhdWRpb18wLjguNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSBweXRob24tcHlhbHNhYXVkaW8uaW5jCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMS1tb2R1bGVzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEtbW9kdWxlcy5pbmMKaW5kZXggZmNiMTQwYS4uY2U5NzkxOSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMS1tb2R1bGVzLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlhc24xLW1vZHVsZXMuaW5jCkBAIC05LDggKzksMjEgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICIxOGM3N2Q1NmFiZWVmNjMxZDk0Zjk1ZmYyZDY1Mjg1OSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIwYzM1YTUyZTAwYjY3MmY4MzJlNTg0NjgyNmYxZmI3NTA3OTA3ZjdkNTJmYmE2ZmFhOWUzYzRjYmU4NzRmZTRiIgogCi1pbmhlcml0IHB5cGkKK2luaGVyaXQgcHlwaSBwdGVzdAogCiBSREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0tcHlhc24xIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUkkgKz0gIiBcCisJZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorCSR7UFlUSE9OX1BOfS1weXRlc3QgXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKwljcCAtcmYgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMS1tb2R1bGVzXzAuMi43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMS1tb2R1bGVzXzAuMi43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjc4ODg0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEtbW9kdWxlc18wLjIuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSBweXRob24tcHlhc24xLW1vZHVsZXMuaW5jCi1pbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMS5pbmMKaW5kZXggZDc0YzJmZS4uZDk1NTc2NCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMS5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMS5pbmMKQEAgLTE0LDMgKzE0LDE4IEBACiAiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworaW5oZXJpdCBwdGVzdAorCitTUkNfVVJJICs9ICIgXAorCWZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKwkke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisJY3AgLXJmICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjFfMC40LjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlhc24xXzAuNC44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTNjNzRkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjFfMC40LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1weWFzbjEuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWxhbmcgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YmluZDExXzIuNC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YmluZDExXzIuNC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTY3NDMwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJpbmQxMV8yLjQuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXB5YmluZDExLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Ymx1ZXouaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Ymx1ZXouaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTlmZTU3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJsdWV6LmluYworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkJsdWV0b290aCBQeXRob24gZXh0ZW5zaW9uIG1vZHVsZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9rYXJ1bGlzLmdpdGh1Yi5pby9weWJsdWV6LyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotCi1ERVBFTkRTID0gImJsdWV6NSIKLQotTElDRU5TRSA9ICJHUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGE3MWQwNDc1ZDA4ZWVlNzZkOGI2ZDBjNmRiZWM1NDMiCi0KLWluaGVyaXQgcHlwaQotCi1TUkNfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL2MxLzk4LzMxNDk0ODFkNTA4YmVlMTc0MzM1YmU2NzI1ODgwZjAwZDI5N2FmZWJlNzVjMTVlOTE3YWY4ZjZmZTE2OS9QeUJsdWV6LTAuMjIuemlwIgotU1JDX1VSSVttZDVzdW1dID0gIjQ5ZGFiOWQ1YThmMGI3OThjODEyNWM3ZjY0OWJlM2NkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRjZTAwNjcxNmE1NGQ5ZDE4ZTgxODZhM2YxYzhiMTJhOGU2YmVmZWNmZmU4ZmQ1ODI4YTI5MWZiNjk0Y2U0OWQiCi0KLVMgPSAiJHtXT1JLRElSfS9QeUJsdWV6LSR7UFZ9IgotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgIGJsdWV6NSBcCi0gICAgJHtQWVRIT05fUE59LWZjbnRsIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJsdWV6XzAuMjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlibHVlel8wLjIyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTU4ZjRiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJsdWV6XzAuMjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXB5Ymx1ZXouaW5jCi1pbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNvZGVzdHlsZS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljb2Rlc3R5bGUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmNkYzVkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNvZGVzdHlsZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBzdHlsZSBndWlkZSBjaGVja2VyIChmb3JtbHkgY2FsbGVkIHBlcDgpIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3B5Y29kZXN0eWxlIgotTElDRU5TRSA9ICJNSVQiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTAxODMxZGRiYWYzOTg0NzFkYTNjYzg3ZjUwMzdlODIyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDBlN2E3NmYzNjRhMThmNTMxYWFiYTExYTQ0NzZlMjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTQwYTkzNmM5YTQ1MGFkODFkZjM3ZjU0OWQ2NzZkMTI3YjFiNjYwMDBhNmM1MDBjYWEyYjA4NWJjMGNhOTc2YyIKLQotaW5oZXJpdCBweXBpCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNvZGVzdHlsZV8yLjUuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNvZGVzdHlsZV8yLjUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM2YzEyZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljb2Rlc3R5bGVfMi41LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXB5Y29kZXN0eWxlLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWxhbmciCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICAgICAgaWYgWyAtZiAke0R9JHtiaW5kaXJ9L3B5Y29kZXN0eWxlIF07IHRoZW4KLSAgICAgICAgICAgICAgICBtdiAke0R9JHtiaW5kaXJ9L3B5Y29kZXN0eWxlICR7RH0ke2JpbmRpcn0vcHljb2Rlc3R5bGUtMgotICAgICAgICBmaQotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3BhcnNlci5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcGFyc2VyLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdhMGUwZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcGFyc2VyLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiUGFyc2VyIG9mIHRoZSBDIGxhbmd1YWdlLCB3cml0dGVuIGluIHB1cmUgUHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2VsaWJlbi9weWNwYXJzZXIiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTg2ZjFjZWRiNGU2NDEwYTg4Y2U4ZTMwYjkxMDc5MTY5IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzYzOTY3NjJhZGMzZmE3NjljODNkOGUyMDJkMzZiNmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTk4ODcxOGFiZmFkODBiNmIxNTdhY2NlN2JmMTMwYTMwODc2ZDI3NjAzNzM4YWMzOWYxNDA5OTMyNDZiMjViMyIKLQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAotICAgICR7UFlUSE9OX1BOfS1wbHkgXAotICAgICR7UFlUSE9OX1BOfS1wcHJpbnQgXAotICAgIGNwcCBcCi0gICAgY3BwLXN5bWxpbmtzIFwKLSAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcGFyc2VyXzIuMTkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcGFyc2VyXzIuMTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4NzQyNzMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3BhcnNlcl8yLjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHljcGFyc2VyLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcnlwdG9fMi42LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcnlwdG9fMi42LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxM2RiMDEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3J5cHRvXzIuNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1pbmhlcml0IGRpc3R1dGlscwotcmVxdWlyZSBweXRob24tcHljcnlwdG8uaW5jCi0KLSMgV2UgZXhwbGljaXRseSBjYWxsIGRpc3R1dGlsc19kb19pbnN0YWxsLCBzaW5jZSB3ZSB3YW50IGl0IHRvIHJ1biwgYnV0Ci0jICpkb24ndCogd2FudCB0aGUgYXV0b3Rvb2xzIGluc3RhbGwgdG8gcnVuLCBzaW5jZSB0aGlzIHBhY2thZ2UgZG9lc24ndAotIyBwcm92aWRlIGEgIm1ha2UgaW5zdGFsbCIgdGFyZ2V0LgotZG9faW5zdGFsbCgpIHsKLSAgICAgICBkaXN0dXRpbHNfZG9faW5zdGFsbAotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3J5cHRvZG9tZS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcnlwdG9kb21lLmluYwppbmRleCAzMWQxMzY4Li42M2I0YTRhIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcnlwdG9kb21lLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcnlwdG9kb21lLmluYwpAQCAtMjEsNyArMjEsNyBAQAogCiBQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMiCiAKLUZJTEVTXyR7UE59LXRlc3RzICs9ICIgXAorRklMRVNfJHtQTn0tdGVzdHMgPSAiIFwKICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9DcnlwdG8vU2VsZlRlc3QvIFwKICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9DcnlwdG8vU2VsZlRlc3QvX19weWNhY2hlX18vIFwKICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNyeXB0b2RvbWVfMy45LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcnlwdG9kb21lXzMuOS40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzcwMWViLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNyeXB0b2RvbWVfMy45LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXB5Y3J5cHRvZG9tZS5pbmMKLWluaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3VybC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljdXJsLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWM5YTM3MC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljdXJsLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBQeXRob24gSW50ZXJmYWNlIFRvIFRoZSBjVVJMIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJcCi1QeWNVUkwgaXMgYSBQeXRob24gaW50ZXJmYWNlIHRvIGxpYmN1cmwsIHRoZSBtdWx0aXByb3RvY29sIGZpbGUgXAotdHJhbnNmZXIgbGlicmFyeS4gU2ltaWxhcmx5IHRvIHRoZSB1cmxsaWIgUHl0aG9uIG1vZHVsZSwgUHljVVJMIGNhbiBcCi1iZSB1c2VkIHRvIGZldGNoIG9iamVjdHMgaWRlbnRpZmllZCBieSBhIFVSTCBmcm9tIGEgUHl0aG9uIHByb2dyYW0gXAotIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1IT01FUEFHRSA9ICJodHRwOi8vcHljdXJsLmlvLyIKLQotTElDRU5TRSA9ICJMR1BMdjIgfCBNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gIiBcCi0gICAgZmlsZTovL0NPUFlJTkctTEdQTDttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgIGZpbGU6Ly9DT1BZSU5HLU1JVDttZDU9MmRmNzY3ZWQzNWQ4ZWE4M2RlNGE5M2ZlYjU1ZTc4MTUgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjBlZDRjODA1ZThiZWM3MzQ5OTBlMmUwZWU3ODU2OGUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmYwODMzMGM1Y2Y3OWZhOGVmNjhiOTkxMmI5OTAxZGI3ZmZkMzRiNjNlMjI1ZGNlNzRkYjU2YmIyMWRlZGE4ZSIKLQotaW5oZXJpdCBweXBpCi0KLVBZUElfUEFDS0FHRSA9ICJweWN1cmwiCi0KLURFUEVORFMgPSAiXAotICAgIGN1cmwgXAotICAgICR7UFlUSE9OX1BOfVwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWN1cmxfNy40My4wLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljdXJsXzcuNDMuMC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YWIyNTkyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWN1cmxfNy40My4wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHljdXJsLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZGJ1cy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlkYnVzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDc3M2I3Zi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlkYnVzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlB5dGhvbmljIERCdXMgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHlkYnVzLyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyIKLQotU1JDX1VSSVttZDVzdW1dID0gImM2YWJkNDQ4NjIzMjI2NzliZDRlOTA3YmViYzNlMGQwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQyMDcxNjJlZmY1NDIyMzgyMmMxODVkYTA2YzFiYThhMzQxMzdhOTYwMmYzZGE1YTUyOGVlZGYzZjc4ZDBmMmMiCi0KLVMgPSAiJHtXT1JLRElSfS9weWRidXMtJHtQVn0iCi0KLVJERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1weWdvYmplY3QiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlkYnVzXzAuNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZGJ1c18wLjYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTcyMmE4MC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlkYnVzXzAuNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1weWRidXMuaW5jCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZWxmdG9vbHMuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZWxmdG9vbHMuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDRmNzYzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWVsZnRvb2xzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLURFU0NSSVBUSU9OID0gInB5ZWxmdG9vbHMgaXMgYSBwdXJlLVB5dGhvbiBsaWJyYXJ5IGZvciBwYXJzaW5nIGFuZCBhbmFseXppbmcgRUxGIGZpbGVzIGFuZCBEV0FSRiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZWxpYmVuL3B5ZWxmdG9vbHMiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiUEQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01Y2UyYTJiMDdmY2EzMjZiYzdjMTQ2ZDEwMTA1Y2NmYyIKLQotU1JDX1VSSVttZDVzdW1dID0gImM1NjI5YjlhNWQxOWM4MjEwN2E5NDZjY2U1MmVlZWMyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg5YzZkYTZmNTYyODBjMzdhNWZmMzM0Njg1OTFiYTlhMTI0ZTE3ZDcxZmU0MmRlOTcxODE4Y2JmZjQ2YzFiMjQiCi0KLVBZUElfUEFDS0FHRSA9ICJweWVsZnRvb2xzIgotCi1pbmhlcml0IHB5cGkKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHllbGZ0b29sc18wLjI1LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZWxmdG9vbHNfMC4yNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGU0MjAyNS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHllbGZ0b29sc18wLjI1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXB5ZWxmdG9vbHMuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlleHBlY3QuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZXhwZWN0LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVkOTU4OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlleHBlY3QuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gZXhwZWN0YXRvbiBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiTWluaW1hbCBidXQgdmVyeSBmbGV4aWJsZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZXhwZWN0IHBhdHRlcm4iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUhPTUVQQUdFID0gIiBodHRwczovL2JpdGJ1Y2tldC5vcmcvZHd0L3B5ZXhwZWN0IgotTElDRU5TRSA9ICJJU0MiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUubWQ7bWQ1PTUwMGI4ODRlOWRjZDVmNjc3YTUzY2JiZWU4YWNlOTM5IgotCi1pbmhlcml0IHB5cGkKLQotU1JDX1VSSVttZDVzdW1dID0gImRjNzQ0Mjg5ODU4MDAxOTI1Yzc1ZDIxZTI2ZjEyNjBmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJmZjQ2NTRiMTEzZGFjNmMyMjMxZTQ4NmUxMWRjYjIzMjgxZGRjMDc0MmE1NDA0NDY3MzAzZmU3NjM4ODI5ZWYiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlleHBlY3RfMS4wLjE5LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZXhwZWN0XzEuMC4xOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI2YmViNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlleHBlY3RfMS4wLjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXB5ZXhwZWN0LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZmlybWF0YS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlmaXJtYXRhLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmE1MzU3NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlmaXJtYXRhLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiQSBQeXRob24gaW50ZXJmYWNlIGZvciB0aGUgRmlybWF0YSBwcm90b2NvbCIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ODRkZGNlZjQzMGI3YzQ0Y2FhMjJiMmZmNGIzN2EzZGYiCi1QWVBJX1BBQ0tBR0UgPSAicHlGaXJtYXRhIgotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgJHtQWVRIT05fUE59LXB5c2VyaWFsIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE1OTY3M2NmYjU2YzcyY2VhZmMzMGZlOTFlZWRkODQ3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNjMTgwZDFiMzBjODVhMmJiY2E2MmMxNWZlZjFiODcxZGIwNDhjZGNmYTgwOTU5OTY4MzU2ZDk3YmQzZmYwOGUiCi0KLWluaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZmlybWF0YV8xLjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWZpcm1hdGFfMS4xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3N2UwZjMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZmlybWF0YV8xLjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1weWZpcm1hdGEuaW5jCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWZsYWtlc18yLjEuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWZsYWtlc18yLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWMwM2YzOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlmbGFrZXNfMi4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TVU1NQVJZID0gInBhc3NpdmUgY2hlY2tlciBvZiBQeXRob24gcHJvZ3JhbXMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZHJlYW1ob3N0L2NsaWZmIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLnJzdDttZDU9NTEyNzMxNTExN2E4NTYxYTE1MDQzNDNkNTk2MjA2NDciCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhMGY3MWExNTcyNGU1NTNjNDZlMDNiYTVlZDU2NzAzYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkOTc2ODM1ODg2ZjhjNWIzMWQ0Nzk3MGVkNjg5OTQ0YTAyNjJiNWYzYWZhMDBhNWE3YjRkYzgxZTU0NDlmOGEyIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tcHJldHR5dGFibGUgXAotICAgICR7UFlUSE9OX1BOfS1jbWQyIFwKLSAgICAke1BZVEhPTl9QTn0tcHlwYXJzaW5nIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlmbGFtZS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlmbGFtZS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4ZDgzNDkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZmxhbWUuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJQeWZsYW1lOiBBIFB0cmFjaW5nIFByb2ZpbGVyIEZvciBQeXRob24iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vdWJlci9weWZsYW1lIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1N9L0xJQ0VOU0U7bWQ1PTJlZTQxMTEyYTQ0ZmU3MDE0ZGNlMzNlMjY0NjhiYTkzIgotREVQRU5EUyA9ICJweXRob24iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS91YmVyL3B5ZmxhbWUuZ2l0O3Byb3RvY29sPWh0dHBzO25vYnJhbmNoPTEiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMKLQotQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbF9jbGFzcy10YXJnZXQgPSAibnVsbCIKLUNPTVBBVElCTEVfSE9TVF9taXBzYXJjaF9jbGFzcy10YXJnZXQgPSAibnVsbCIKLUNPTVBBVElCTEVfSE9TVF9hYXJjaDY0X2NsYXNzLXRhcmdldCA9ICJudWxsIgotQ09NUEFUSUJMRV9IT1NUX3Bvd2VycGNfY2xhc3MtdGFyZ2V0ID0gIm51bGwiCi1DT01QQVRJQkxFX0hPU1RfcmlzY3Y2NF9jbGFzcy10YXJnZXQgPSAibnVsbCIKLUNPTVBBVElCTEVfSE9TVF9yaXNjdjMyX2NsYXNzLXRhcmdldCA9ICJudWxsIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZmxhbWVfMS42LjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlmbGFtZV8xLjYuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2IwOGYzMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlmbGFtZV8xLjYuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotcmVxdWlyZSBweXRob24tcHlmbGFtZS5pbmMKLQotIyB2MS42LjcKLVNSQ1JFViA9ICJjMTUxZDJmMzQ3MzdmMjhhMWY1MjY2YTAwM2IyYjA3MjBiYmQ5Zjk2IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Z3BnbWVfMC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Z3BnbWVfMC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGU5NjdkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdwZ21lXzAuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBQeXRob24gbW9kdWxlIGZvciB3b3JraW5nIHdpdGggT3BlblBHUCBtZXNzYWdlcyIKLURFU0NSSVBUSU9OID0gIlB5R1BHTUUgaXMgYSBQeXRob24gbW9kdWxlIHRoYXQgbGV0cyB5b3Ugc2lnbiwgdmVyaWZ5LCBcCi0gICAgICAgICAgICAgICBlbmNyeXB0IGFuZCBkZWNyeXB0IG1lc3NhZ2VzIHVzaW5nIHRoZSBPcGVuUEdQIGZvcm1hdC4iCi1IT01FUEFHRSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvcHlncGdtZSIKLQotTElDRU5TRSA9ICJMR1BMLTIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9NjUxN2JkYzhmMjQxNmYyN2FiNzI1ZDQ3MDJmN2FhYzMiCi0KLVNSQ19VUkkgPSAiZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlZmxlY3QtMi4xLXJlcG9ydGluZy1mb3Ita2V5LWltcG9ydHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1wYXNzcGhyYXNlX2NiLWlzLWRlcHJlY2F0ZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1oYW5kbGUtZ2VuZXJpYy1lcnJvci13aGVuLW5vLXBhc3NwaHJhc2UtY2FsbGJhY2stcHJlLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImQzODM1NWFmNzNmMDM1MmNkZTNkNDEwYjI1ZjM0ZmQwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVmZDg4N2M0MDcwMTUyOTZhOGZkM2Y0Yjg2N2ZlMGZjY2EzMTc5ZGU5N2NjZGU5MDQ0OTg1M2EzZGZiODAyZTEiCi0KLURFUEVORFMgKz0gImdwZ21lIgotUkRFUEVORFNfJHtQTn0gKz0gImdudXBnIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scyBwdGVzdAotCi1kb19pbnN0YWxsX3B0ZXN0KCl7Ci0gICAgaW5zdGFsbCAke1N9L3Rlc3RfYWxsLnB5ICR7RH0ke1BURVNUX1BBVEh9Ci0gICAgY3AgLXIgJHtTfS90ZXN0cyAke0R9JHtQVEVTVF9QQVRIfQotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5aGFtY3Jlc3RfMS45LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHloYW1jcmVzdF8xLjkuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRiYjc5YS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHloYW1jcmVzdF8xLjkuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLVNVTU1BUlkgPSAiSGFtY3Jlc3QgZnJhbWV3b3JrIGZvciBtYXRjaGVyIG9iamVjdHMiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1mNmRmMTMxOGM2MDcxZGQxNzA3ZjVlM2I2YzExZjI0ZiIKLQotUFlQSV9QQUNLQUdFID0gIlB5SGFtY3Jlc3QiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4YjgzM2EzZmEzMDE5NzQ1NWRmNzk0MjRmMzBjOGMzZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZmZhYTBhNTNkYTU3ZTg5ZGUxNGNlZDcxODVhYzc0NjIyN2E4ODk0ZGJkNWEzYzcxOGJmMDVkZGJkMWQ1NmNkIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5aWZhY2UuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5aWZhY2UuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTM5OGZjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWlmYWNlLmluYworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLVNVTU1BUlkgPSAiUHlpZmFjZSBpcyBhIHBhY2thZ2UgdGhhdCBleHBvc2VzIHRoZSBuZXR3b3JrIGludGVyZmFjZXMgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaW4gYSBlYXN5IHRvIHVzZSBhbmQgdHJhbnNwYXJlbnQgd2F5IgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1IT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B5aWZhY2UvIgotTElDRU5TRSA9ICJHUEx2MysiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT00ZmU4NjllZTk4N2EzNDAxOThmYjBkNTRjNTVjNDdmMSIKLQotU1JDX1VSSVttZDVzdW1dID0gImIwNjZhYTk4NDY1Njc0MjczODEyN2M5Yzc1NDM2YWI0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUyMzFlNTczNWQzMjljNWIyZDRmYzg4NTRmMDY5ZmRhYTU0MzZkM2VmOTFlZDY0ZWU0OWU0MWUzZjVlOGEzZjUiCi0KLWluaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5aWZhY2VfMC4wLjExLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5aWZhY2VfMC4wLjExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTRjYjMwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWlmYWNlXzAuMC4xMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1weWlmYWNlLmluYwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWlub3RpZnkuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5aW5vdGlmeS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxYWJkYjguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5aW5vdGlmeS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJQeXRob24gcHlpbm90aWZ5OiBMaW51eCBmaWxlc3lzdGVtIGV2ZW50cyBtb25pdG9yaW5nIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hYjE3M2NhZGU3OTY1YjQxMTUyODQ2NDU4OWEwODM4MiIKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSAgICAke1BZVEhPTl9QTn0taW8gXAotICAgICR7UFlUSE9OX1BOfS1taXNjIFwKLSAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAotICAgICR7UFlUSE9OX1BOfS1zbXRwZCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4ZTU4MGZhMWZmMzk3MWY5NGE2ZjgxNjcyYjc2YzQwNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5Yzk5OGE1ZDc2MDZjYTgzNTA2NWNkYWJjMDEzYWU2YzY2ZWI5ZWE3NmEwMGExZTNiYzZlMGNmZTJiNGY3MWY0IgotCi1pbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWlub3RpZnlfMC45LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlpbm90aWZ5XzAuOS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzlhMmM3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWlub3RpZnlfMC45LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHlpbm90aWZ5LmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWprcy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlqa3MuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTA2NmY3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWprcy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIlB1cmUtUHl0aG9uIEphdmEgS2V5c3RvcmUgKEpLUykgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIlB5SktTIGVuYWJsZXMgUHl0aG9uIHByb2plY3RzIHRvIGxvYWQgYW5kIG1hbmlwdWxhdGVcCi0gSmF2YSBLZXlTdG9yZSAoSktTKSBkYXRhIHdpdGhvdXQgYSBKVk0gZGVwZW5kZW5jeS4gUHlKS1Mgc3VwcG9ydHMgSktTLFwKLSBKQ0VLUywgQktTIGFuZCBVQkVSIChCb3VuY3lDYXN0bGUpIGtleXN0b3Jlcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9rdXJ0YnJvc2UvcHlqa3MiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTk2OTRkNmNjNzI0Y2FmN2Y3Mzg2YmU4OGE0YTgxOTU4IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjZlOGYzYjkxYmUzNTVkMTVlM2JhOTlkZTJjY2NmOWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWNlNWI0MDI4OWJjZGZmY2Q2YThlNzExOGIzMzNiYThiYTJlYzRjOWViYzVlMzI0ODg1Y2M4YTY5NzY3MDExYSIKLQotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgICAke1BZVEhPTl9QTn0tamF2YW9iai1weTMgXAotICAgICR7UFlUSE9OX1BOfS1weWFzbjEgXAotICAgICR7UFlUSE9OX1BOfS1weWFzbjEtbW9kdWxlcyBcCi0gICAgJHtQWVRIT05fUE59LXB5Y3J5cHRvZG9tZSBcCi0gICAgJHtQWVRIT05fUE59LXR3b2Zpc2hcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWprc18xOS4wLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlqa3NfMTkuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTk5ZjI4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWprc18xOS4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXB5amtzLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlqd3QuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5and0LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWI4OTM4NS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlqd3QuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSA9ICJKU09OIFdlYiBUb2tlbiBpbXBsZW1lbnRhdGlvbiBpbiBQeXRob24iCi1TVU1NQVJZID0gIkpTT04gV2ViIFRva2VuIGltcGxlbWVudGF0aW9uIGluIFB5dGhvbiIKLURFU0NSSVBUSU9OID0gIkEgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIEpTT04gV2ViIFRva2VuIGRyYWZ0IDMyLlwKLSBPcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiB3YXMgd3JpdHRlbiBieSBodHRwczovL2dpdGh1Yi5jb20vcHJvZ3JpdW0iCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9qcGFkaWxsYS9weWp3dCIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Njg2MjY3MDVhN2I1MTNjYThkNWY0NGEzZTIwMGVkMGMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhNDcxMmY5ODBjMDA4Njk2ZTEzZTA5NTA0MTIwYjJhMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZDU5YTk3NmZiNzczZjNlNmEzOWM4NTYzNjM1N2M0ZjBlMjQyNzA3Mzk0Y2FkYWRkOTgxNGY1Y2JhYTIwZTk2IgotCi1QWVBJX1BBQ0tBR0UgPSAiUHlKV1QiCi1pbmhlcml0IHB5cGkKLQotUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LWNyeXB0b2dyYXBoeSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5and0XzEuNy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5and0XzEuNy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGE3N2I2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWp3dF8xLjcuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSBweXRob24tcHlqd3QuaW5jCi1pbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWxpbnQuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bGludC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhODViOTguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bGludC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1TVU1NQVJZPSJQeWxpbnQgaXMgYSBQeXRob24gc291cmNlIGNvZGUgYW5hbHl6ZXIiCi1IT01FUEFHRT0gImh0dHA6Ly93d3cucHlsaW50Lm9yZy8iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDMyNWFmZDM5NmZlYmNiNjU5YzM2YjQ5NTMzMTM1ZDQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyZWI1ZjNjYjhmZTU2N2VhZjU0MjBkZDQxNTAxMjIwMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNzczMTE4NTllMGMyZDc5MzIwOTVmMzBkMmIxYmZkYzRiNmZlMTExZjUzNDQ1MGJhNzI3YTUyZWFlMzMwZWYyIgotCi1pbmhlcml0IHB5cGkKLQotREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXB5dGVzdC1ydW5uZXItbmF0aXZlIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpewotICAgIHJtICR7RH0ke2JpbmRpcn0vcHlsaW50Ci0gICAgY2F0ID4+ICR7RH0ke2JpbmRpcn0vcHlsaW50IDw8RU9GCi0jIS91c3IvYmluL2VudiAke1BZVEhPTl9QTn0KLWZyb20gcHlsaW50IGltcG9ydCBydW5fcHlsaW50Ci1ydW5fcHlsaW50KCkKLUVPRgotICAgIGNobW9kIDc1NSAke0R9JHtiaW5kaXJ9L3B5bGludAotICAgIHNlZCAtaSAtZSAnczpeIyEvdXNyL2Jpbi9weXRob246IyEvdXNyL2Jpbi9lbnZcICR7UFlUSE9OX1BOfTpnJyAke0R9LyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3B5bGludC90ZXN0L2RhdGEvYXNjcmlwdAotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMiCi1GSUxFU18ke1BOfS10ZXN0cys9ICIgXAotICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3B5bGludC90ZXN0LyBcCi0gICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vcHlsaW50L3Rlc3R1dGlscy5weSBcCi0iCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tYXN0cm9pZCBcCi0gICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWlzb3J0IFwKLSAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCi0gICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKLSAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tanNvbiBcCi0gICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXBrZ3V0aWwgXAotICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1kaWZmbGliIFwKLSAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKLSAgICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWxpbnRfMS44LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlsaW50XzEuOC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjUxZDNmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWxpbnRfMS44LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scyBweXRob24tZGlyCi1yZXF1aXJlIHB5dGhvbi1weWxpbnQuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tYmFja3BvcnRzLWZ1bmN0b29scy1scnUtY2FjaGUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltaXNwLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1pc3AuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzQ3NDkyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1pc3AuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiUHl0aG9uIEFQSSBmb3IgTUlTUCIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9NSVNQL1B5TUlTUCIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTM2MzljZjU3ODBmNzFiMTI1ZDNlOWQxZGMxMjdjMjAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1NzE4NDc4NTM0MGUyNTQ2OWU0YTgwZmY5ZGRjZTA5ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1OTRlYTBhOWUxNTAwNTIyMzI0MjUwMDllYWM2ZGQxMDRhODBmNDk0ZDBlMjczY2M0OGRkMTE0ZDdlYTg0ODJiIgotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tZGF0ZXV0aWwgXAotICAgICR7UFlUSE9OX1BOfS1qc29uIFwKLSAgICAke1BZVEhPTl9QTn0tanNvbnNjaGVtYSBcCi0gICAgJHtQWVRIT05fUE59LXJlcXVlc3RzIFwKLSAgICAke1BZVEhPTl9QTn0tc2l4IFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1pc3BfMi40LjExOS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bWlzcF8yLjQuMTE5LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiMWZiZTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bWlzcF8yLjQuMTE5LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1weW1pc3AuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltb25nby5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltb25nby5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjNzhiMTAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bW9uZ28uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gZHJpdmVyIGZvciBNb25nb0RCIDxodHRwOi8vd3d3Lm1vbmdvZGIub3JnPiIKLURFU0NSSVBUSU9OID0gIlwKLVRoZSBQeU1vbmdvIGRpc3RyaWJ1dGlvbiBjb250YWlucyB0b29scyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBNb25nb0RCIFwKLWRhdGFiYXNlIGZyb20gUHl0aG9uLiBUaGUgYnNvbiBwYWNrYWdlIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBCU09OIFwKLWZvcm1hdCBmb3IgUHl0aG9uLiBUaGUgcHltb25nbyBwYWNrYWdlIGlzIGEgbmF0aXZlIFB5dGhvbiBkcml2ZXIgZm9yIFwKLU1vbmdvREIuIFRoZSBncmlkZnMgcGFja2FnZSBpcyBhIGdyaWRmcyBpbXBsZW1lbnRhdGlvbiBvbiB0b3Agb2YgcHltb25nby4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9tb25nb2RiL21vbmdvLXB5dGhvbi1kcml2ZXIiCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04NmQzZjNhOTVjMzI0Yzk0NzliZDg5ODY5NjhmNDMyNyIKLQotU1JDX1VSSVttZDVzdW1dID0gImZiOThkODk2ZjBlYjE0ZDliNGZlOWJhYWMyNGQ3NzJhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM0Mzg3OWZlNDI3ZWE2YWE2ZTg0ZGFlOWZiZGM1YWExNDQyOGE0Y2ZlNjEzZmUwZmVlMmNjMDA0YmYzZjMwN2MiCi0KLVBBQ0tBR0VTID0rICIke1BZVEhPTl9QTn0tYnNvbiIKLQotRklMRVNfJHtQWVRIT05fUE59LWJzb24gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vYnNvbi8qIgotCi1SREVQRU5EU18ke1BZVEhPTl9QTn0tYnNvbiArPSAiIFwKLSAgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKLSAgICAgJHtQWVRIT05fUE59LWpzb24gXAotICAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKLSAgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAotICAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWJzb24gXAotICAgICR7UFlUSE9OX1BOfS1wcHJpbnQgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bW9uZ29fMy4xMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bW9uZ29fMy4xMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTc3OGIyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1vbmdvXzMuMTAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXB5bW9uZ28uaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlteXNxbC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlteXNxbC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjN2Y0NTUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bXlzcWwuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJBIHB1cmUtUHl0aG9uIE15U1FMIGNsaWVudCBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiIFwKLSAgVGhpcyBwYWNrYWdlIGNvbnRhaW5zIGEgcHVyZS1QeXRob24gTXlTUUwgY2xpZW50IGxpYnJhcnksIGJhc2VkIG9uIFBFUCAyNDkgXAotICBNb3N0IHB1YmxpYyBBUElzIGFyZSBjb21wYXRpYmxlIHdpdGggbXlzcWxjbGllbnQgYW5kIE15U1FMZGIuIFwKLSAgIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1IT01FUEFHRSA9ICJodHRwczovL3B5bXlzcWwucmVhZHRoZWRvY3MuaW8iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTUyODE3NWM4NDE2M2JiODAwZDIzYWQ4MzVjN2ZhMGZjIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTVkOTE4M2NjMGE3NzVhYzI5ZjllMDM2NWNjYTY1NTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDhjMDU5ZGNkODFkZWRiODVhOWYwMzRkNWUyMmRjYjQ0NDJjMGIyMDE5MDhiZWRlOTllMzA2ZDY1ZWE3YzhlNyIKLQotaW5oZXJpdCBweXBpCi0KLVBZUElfUEFDS0FHRSA9ICJQeU15U1FMIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWNyeXB0b2dyYXBoeSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW15c3FsXzAuOS4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bXlzcWxfMC45LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3ZDA5N2UuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bXlzcWxfMC45LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHlteXNxbC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW5ldGxpbnV4LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW5ldGxpbnV4LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzc1NWMwYS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHluZXRsaW51eC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1TVU1NQVJZID0gIkxpbnV4IG5ldHdvcmsgY29uZmlndXJhdGlvbiBsaWJyYXJ5IGZvciBQeXRob24iCi1ERVNDUklQVElPTiA9ICJUaGlzIGxpYnJhcnkgY29udGFpbnMgUHl0aG9uIGJpbmRpbmdzIHRvIGlvY3RsIGNhbGxzIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9ybGlzYWdvci9weW5ldGxpbnV4IgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NzRlMTg2MTczNmVlOTU5ODI0ZmU3NTQyMzIzYzEyZTkiCi0KLWluaGVyaXQgcHlwaQotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzMzNmU1ZDRhNDc4YWNjYTRlMzViZjMxMjViNGY4ODMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGFkMDgyOThjOWY1YmExNWExMWNkZGM2MzliYTg3NzhjYWJkZmM0MDJiNTEwNjZkOWUwYTMyNWU1YTViMzkxYyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW5ldGxpbnV4XzEuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW5ldGxpbnV4XzEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ1YWQ2YS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHluZXRsaW51eF8xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHluZXRsaW51eC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW9wZW5zc2wuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5b3BlbnNzbC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2YTQwMDUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5b3BlbnNzbC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIlNpbXBsZSBQeXRob24gd3JhcHBlciBhcm91bmQgdGhlIE9wZW5TU0wgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHBzOi8vcHlvcGVuc3NsLm9yZy8iCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKLQotREVQRU5EUyArPSAib3BlbnNzbCAke1BZVEhPTl9QTn0tY3J5cHRvZ3JhcGh5IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDk4MDRmZWRiZDFlYjBjN2Q5MjQzMzk3YjFmYmY5NzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWEyNDQ5NGIyNjAyYWFmNDAyYmU1YzllMzBhMGI4MmQ0YTVjNjc1MjhmZThmYjQ3NWUzZjNiYzAwZGQ2OTUwNyIKLQotUFlQSV9QQUNLQUdFID0gInB5T3BlblNTTCIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgotRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9PcGVuU1NML3Rlc3QiCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICIgXAotICAgICR7UFlUSE9OX1BOfS1jcnlwdG9ncmFwaHkgXAotICAgICR7UFlUSE9OX1BOfS1zaXggXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotIgotUkRFUEVORFNfJHtQTn0tdGVzdHMgPSAiJHtQTn0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW9wZW5zc2xfMTkuMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5b3BlbnNzbF8xOS4xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3ZDUxNDYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5b3BlbnNzbF8xOS4xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXB5b3BlbnNzbC5pbmMKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwYXJzaW5nLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXBhcnNpbmcuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjk5MjVmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXBhcnNpbmcuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gcGFyc2luZyBtb2R1bGUiCi1IT01FUEFHRSA9ICJodHRwOi8vcHlwYXJzaW5nLndpa2lzcGFjZXMuY29tLyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NjU3YTU2NjIzMzg4ODUxM2UxZjA3YmExM2UyZjQ3ZjEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyOTczM2VhOGNiZWUwMjkxYWFkMTIxYzY5YzZlNTFhMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YzgzMDU4MmE4NGZiMDIyNDAwYjg1NDI5NzkxYmM1NTFmMWY0ODcxYzMzZjIzZTQ0ZjM1MzExOWU5MmY5NjlmIgotCi1pbmhlcml0IHB5cGkKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKLSAgICAke1BZVEhPTl9QTn0tZGVidWdnZXIgXAotICAgICR7UFlUSE9OX1BOfS1qc29uIFwKLSAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKLSAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKLSAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGFyc2luZ18yLjQuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXBhcnNpbmdfMi40LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwMjE3ZjMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGFyc2luZ18yLjQuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1weXBhcnNpbmcuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwZXJjbGlwLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXBlcmNsaXAuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWE0MzEyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXBlcmNsaXAuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQSBjcm9zcy1wbGF0Zm9ybSBjbGlwYm9hcmQgbW9kdWxlIGZvciBQeXRob24uIChvbmx5IGhhbmRsZXMgcGxhaW4gdGV4dCBmb3Igbm93KSIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PWE0MjgzNTZhZGE3NzM3YjQxNmVjNGI2M2RjNjVkNTgxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmJiYjg1OTg1NzljYzNlZTUwNTU0YjRjNTlkMGNmYWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTc5MzI1NDY4Y2NmNjgyMTA0ZDVkY2FmNzUzZjg2OTg2ODEwMDYzMTMwMWQzZTcyZjQ3YmFiZGVhNTcwMGQxYyIKLQotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1jdHlwZXMgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwZXJjbGlwXzEuNy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGVyY2xpcF8xLjcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM5ZmNiZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwZXJjbGlwXzEuNy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXB5cGVyY2xpcC5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWNvbnRleHRsaWIgXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXBlcmYuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGVyZi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlNjMwNGIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGVyZi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIkEgdG9vbGtpdCB0byB3cml0ZSwgcnVuIGFuZCBhbmFseXplIGJlbmNobWFya3MiCi1ERVNDUklQVElPTiA9ICIgXAotVGhlIFB5dGhvbiBweXBlcmYgbW9kdWxlIGlzIGEgdG9vbGtpdCB0byB3cml0ZSwgcnVuIGFuZCBhbmFseXplIGJlbmNobWFya3MuIFwKLUZlYXR1cmVzOiBcCi0gICAgKiBTaW1wbGUgQVBJIHRvIHJ1biByZWxpYWJsZSBiZW5jaG1hcmtzIFwKLSAgICAqIEF1dG9tYXRpY2FsbHkgY2FsaWJyYXRlIGEgYmVuY2htYXJrIGZvciBhIHRpbWUgYnVkZ2V0LiBcCi0gICAgKiBTcGF3biBtdWx0aXBsZSB3b3JrZXIgcHJvY2Vzc2VzLiBcCi0gICAgKiBDb21wdXRlIHRoZSBtZWFuIGFuZCBzdGFuZGFyZCBkZXZpYXRpb24uIFwKLSAgICAqIERldGVjdCBpZiBhIGJlbmNobWFyayByZXN1bHQgc2VlbXMgdW5zdGFibGUuIFwKLSAgICAqIEpTT04gZm9ybWF0IHRvIHN0b3JlIGJlbmNobWFyayByZXN1bHRzLiBcCi0gICAgKiBTdXBwb3J0IG11bHRpcGxlIHVuaXRzOiBzZWNvbmRzLCBieXRlcyBhbmQgaW50ZWdlci4gXAotIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03OGJjMmU2ZTg3YzhjNjEyNzI5MzdiODc5ZTZkYzJmOCIKLQotU1JDX1VSSVttZDVzdW1dID0gImUzMGI2N2I2MmE0ZTMwZTQ1MDQzNTJkMDc3OGM2MjJjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBkMjE0YWE2NWUwODVkM2U0MTA4YTM2MTUyY2IxMmY3Y2QwZjRlN2ZkYTkzYjUxMzRiNDNhOTY4N2M5NzU3ODYiCi0KLWluaGVyaXQgcHlwaQotCi1QWVBJX1BBQ0tBR0UgPSAicHlwZXJmIgotCi1ERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tc2l4LW5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXBlcmZfMS43LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwZXJmXzEuNy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWQ1Yzc0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXBlcmZfMS43LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHlwZXJmLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXN0YXRpc3RpY3MiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyZXgtbmF0aXZlXzAuOS45LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cmV4LW5hdGl2ZV8wLjkuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThlZjFhYS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyZXgtbmF0aXZlXzAuOS45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1weXJleF8ke1BWfS5iYgotaW5oZXJpdCBuYXRpdmUgcHl0aG9ubmF0aXZlCi1ERVBFTkRTID0gInB5dGhvbi1uYXRpdmUiCi1SREVQRU5EU18ke1BOfSA9ICIiCi1QUiA9ICJyMyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJleF8wLjkuOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJleF8wLjkuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRkZDJlNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyZXhfMC45LjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIkxhbmd1YWdlIGZvciB3cml0aW5nIFB5dGhvbiBleHRlbnNpb24gbW9kdWxlcyIKLURFU0NSSVBUSU9OID0gIlB5cmV4IGlzIGEgbGFuZ3VhZ2Ugc3BlY2lhbGx5IGRlc2lnbmVkIGZvciB3cml0aW5nIFB5dGhvbiBleHRlbnNpb24gbW9kdWxlcy4gXAotSXQncyBkZXNpZ25lZCB0byBicmlkZ2UgdGhlIGdhcCBiZXR3ZWVuIHRoZSBuaWNlLCBoaWdoLWxldmVsLCBlYXN5LXRvLXVzZSB3b3JsZCBvZiBQeXRob24gXAotYW5kIHRoZSBtZXNzeSwgbG93LWxldmVsIHdvcmxkIG9mIEMuIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NzcxZDQ3MmY1M2Y5MzMwMzNmNTdlZWVlNzgwOGU1YmQiCi1TUkNOQU1FID0gIlB5cmV4IgotUFIgPSAicjQiCi0KLVNSQ19VUkkgPSAiXAotICBodHRwOi8vd3d3LmNvc2MuY2FudGVyYnVyeS5hYy5uei9ncmVnLmV3aW5nL3B5dGhvbi8ke1NSQ05BTUV9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IFwKLSAgZmlsZTovL3B5cmV4LWZpeC1vcHRpbWl6ZWQtbW9kZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1MTVkZWU2N2QxNWQ0MzkzODQxZTJkNjBlODM0MTk0NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1Zjg3ZGYwNjgzMWQwYjM0MTJlYjRiYzlkM2ZjMmVlN2JmYWUxYjkxM2Q3ZGE4YzIzYWIyYmY1Njk5ZmI2YjUwIgotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCi0KLWluaGVyaXQgZGlzdHV0aWxzCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9JHtiYXNlX2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL1B5cmV4L0NvbXBpbGVyL0xleGljb24ucGlja2xlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cm91dGUyLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJvdXRlMi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhMTRiOWUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cm91dGUyLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBwdXJlIFB5dGhvbiBuZXRsaW5rIGFuZCBMaW51eCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gbGlicmFyeSIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5HUEwudjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuQXBhY2hlLnYyO21kNT0zNDI4MWUzMTIxNjVmODQzYTJiN2QxZjExNGZlNjVjZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjM3MTY4M2I2MjMxNDIxMWI4YmM5ODA3YWM4ZWYxMTQ0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk2M2ZjZTA3ZGEyODQxNDU2ZDM5ZTNiOTMyYjA3MWY2ZGUyOGQyM2RhZGZhZTAxNDAyMmQ2N2E3NTI5MTZmOTgiCi0KLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L3B5dGhvbi1weXJvdXRlMjoiCi0KLWluaGVyaXQgcHlwaQotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKLSAgICAke1BZVEhPTl9QTn0tZGlzdHV0aWxzIFwKLSAgICAke1BZVEhPTl9QTn0taW8gXAotICAgICR7UFlUSE9OX1BOfS1qc29uIFwKLSAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCi0gICAgJHtQWVRIT05fUE59LW11bHRpcHJvY2Vzc2luZyBcCi0gICAgJHtQWVRIT05fUE59LXBpY2tsZSBcCi0gICAgJHtQWVRIT05fUE59LXBrZ3V0aWwgXAotICAgICR7UFlUSE9OX1BOfS1wcHJpbnQgXAotICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCi0gICAgJHtQWVRIT05fUE59LXVuaXhhZG1pbiBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyb3V0ZTJfMC41LjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyb3V0ZTJfMC41LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNWYxYjQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cm91dGUyXzAuNS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1weXJvdXRlMi5pbmMKLWluaGVyaXQgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJzaXN0ZW50LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJzaXN0ZW50LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWU0ZjIxYS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyc2lzdGVudC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIlBlcnNpc3RlbnQvSW1tdXRhYmxlL0Z1bmN0aW9uYWwgZGF0YSBzdHJ1Y3R1cmVzIGZvciBQeXRob24iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vdG9iZ3UvcHlyc2lzdGVudCIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRS5taXQ7bWQ1PWNhNTc0ZjI4OTFjZjUyOGIzZTdhMmVlNTcwMzM3ZTdjIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZGE5NDg2ZDAwZWY1YjIxM2Y0MGQ1Y2YzYzViY2E4MmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2RjN2I1ZTNlZDc3YmVkNjEyNzBhNDdkMzU0MzRhMzA2MTdiOWJlY2RmMjQ3OGFmNzZhZDJjNmFkZTMwNzI4MCIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LXNpeCBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJzaXN0ZW50XzAuMTUuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJzaXN0ZW50XzAuMTUuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODMyZWI4MC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyc2lzdGVudF8wLjE1LjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1weXJzaXN0ZW50LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c2VyaWFsLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNlcmlhbC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5NTgwZGUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c2VyaWFsLmluYworKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLVNVTU1BUlkgPSAiU2VyaWFsIFBvcnQgU3VwcG9ydCBmb3IgUHl0aG9uIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZDQ3NmQ5NDkyNmRiNmUwMDA4YTViMzg2MGQxZjVjMGQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlZDYxODNiMTU1MTlhMGFlOTY2NzVlOWMzMzMwYzY5YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZTJkNDAxZmRlZTBlYWI5OTZjZjczNGU2Nzc3M2EwMTQzYjkzMjc3MmNhOGI0MjQ1MTQ0MGNmZWQ5NDJjNjI3IgotCi1pbmhlcml0IHB5cGkKLQotUEFDS0FHRVMgPSsgIiR7UE59LWphdmEgJHtQTn0tb3N4ICR7UE59LXdpbjMyICR7UE59LXRvb2xzIgotCi1GSUxFU18ke1BOfS1qYXZhID0gIiBcCi0gICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsLypqYXZhKiBcCi0gICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsL19fcHljYWNoZV9fLypqYXZhKiBcCi0iCi0KLUZJTEVTXyR7UE59LW9zeCA9ICIgXAotICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NlcmlhbC90b29scy8qb3N4KiBcCi0gICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsL3Rvb2xzL19fcHljYWNoZV9fLypvc3gqIFwKLSIKLQotRklMRVNfJHtQTn0td2luMzIgPSAiIFwKLSAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvKnNlcmlhbGNsaSogXAotICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NlcmlhbC9fX3B5Y2FjaGVfXy8qc2VyaWFsY2xpKiBcCi0gICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsLyp3aW4zMiogXAotICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NlcmlhbC9fX3B5Y2FjaGVfXy8qd2luMzIqIFwKLSAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvdG9vbHMvbWluaXRlcm0qIFwKLSAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvdG9vbHMvX19weWNhY2hlX18vbWluaXRlcm0qIFwKLSAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvdG9vbHMvKndpbmRvd3MqIFwKLSAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvdG9vbHMvX19weWNhY2hlX18vKndpbmRvd3MqIFwKLSIKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgICR7UFlUSE9OX1BOfS1mY250bCBcCi0gICAgJHtQWVRIT05fUE59LWlvIFwKLSAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCi0gICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCi0gICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAotICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCi0gICAgJHtQWVRIT05fUE59LXN0cmluZ29sZCBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNlcmlhbF8zLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzZXJpYWxfMy40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDg1MmEyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNlcmlhbF8zLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHlzZXJpYWwuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tYXJncGFyc2UiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzbWlfMC4zLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzbWlfMC4zLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzYWE0YjguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c21pXzAuMy40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotU1VNTUFSWSA9ICJTTk1QIFNNSS9NSUIgUGFyc2VyIgotREVTQ1JJUFRJT04gPSAiQSBwdXJlLVB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBTTk1QL1NNSSBNSUIgXAotICBwYXJzaW5nIGFuZCBjb252ZXJzaW9uIGxpYnJhcnkuIENhbiBwcm9kdWNlIFB5U05NUCBNSUIgbW9kdWxlcy4gXAotIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9weXNtaSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UucnN0O21kNT1hMDg4YjVjNzJiNTlkNTFhNTM2OGFkM2IxOGUyMTliZiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjEwYTlkZDE0MGFkNTEyZWVkOWYzNzM0NGRmODNjZTlkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJkMTVhMTUwMjBhZWU4Mzc2Y2FiNWJlMjY0YzI2MzMwODI0YThiODE2NGVkMDE5NWJkNDAyZGQ1OWU0ZThmN2MiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbi1wbHkiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzbm1wXzQuNC45LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c25tcF80LjQuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg4M2RmOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzbm1wXzQuNC45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHB1cmUtUHl0aG9uIFNOTVB2MS92MmMvdjMgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIlNOTVAgdjEvdjJjL3YzIGVuZ2luZSBhbmQgYXBwcyB3cml0dGVuIGluIHB1cmUtUHl0aG9uLiBcCi0gIFN1cHBvcnRzIE1hbmFnZXIvQWdlbnQvUHJveHkgcm9sZXMsIHNjcmlwdGFibGUgTUlCcywgYXN5bmNocm9ub3VzIFwKLSAgb3BlcmF0aW9uIChhc3luY2lvLCB0d2lzdGVkLCBhc3luY29yZSkgYW5kIG11bHRpcGxlIHRyYW5zcG9ydHMuXAotIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9weXNubXAiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5yc3Q7bWQ1PWIxNWQyOWY1MDBmNzQ4ZDFjMmExNTcwOTc2OTA5MGE4IgotCi1TUkNOQU1FID0gInB5c25tcCIKLQotU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL3AvJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjZkMWI1MTQ5OTczMjZiZWQxOGYxYWUxNTEwZjZiMWM5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ1ZDFlNTk3ODAxMjZlOTYzZGQ5MmUyNTk5M2I3ODMyOTU3MzRlNzFiZWYxODFmNjAyZTUxZjczOTMyNjA0NDEiCi0KLQotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLXB5Y3J5cHRvIFwKLSAgICAgICAgICAgICAgICAgICBweXRob24tcHlhc24xIFwKLSAgICAgICAgICAgICAgICAgICBweXRob24tcHlzbWkgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c29ja3MuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c29ja3MuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODM2ZTUyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNvY2tzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkEgUHl0aG9uIFNPQ0tTIGNsaWVudCBtb2R1bGUiCi1IT01FUEFHRSA9ICJodHRwOi8vcHl0aG9uLXJlcXVlc3RzLm9yZyIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MWQ0NTdiY2ZmYjk2NjFiNDVmNzk5ZDRlZmVlNzJmMTYiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4OWIxYTY4NjVjNjFiYWU2N2EzMjQxNzUxNzYxMmVlNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzZjg4MDQ1NzFlYmUxNTljMzgwYWM2ZGUzNzY0M2JiNDY4NTk3MDY1NWQzYmJhMjQzNTMwZDY1NThiNzk5YWEwIgotCi1QWVBJX1BBQ0tBR0UgPSAiUHlTb2NrcyIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWVtYWlsIFwKLSAgICAke1BZVEhPTl9QTn0taW8gXAotICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAotICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNvY2tzXzEuNy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c29ja3NfMS43LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMjRlNGMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c29ja3NfMS43LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1weXNvY2tzLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c3FsaXRlLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNxbGl0ZS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4NDU1NjUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c3FsaXRlLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkRCLUFQSSAyLjAgaW50ZXJmYWNlIGZvciBTUUxpdGUgMy54IgotSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vZ2hhZXJpbmcvcHlzcWxpdGUiCi1MSUNFTlNFID0gIlpsaWIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yOGFkNGYxMTVlMDZjODhiZDczNzM3MmE0NTMzNjlkOCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjAzM2YxN2I4NjQ0NTc3NzE1YWVlNTVlODgzMmFjOWZjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE3ZDMzMzU4NjNlOGNmODM5MmVlYTcxYWRkMzNkYWIzZjk2ZDA2MDY2NmZlNjhhYjczODI0NjlkMzA3ZjQ0OTAiCi0KLWluaGVyaXQgcHlwaQotCi1ERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tcGlwIgotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAotICAgIHNxbGl0ZTMgXAotIgotCi1GSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzcWxpdGVfMi44LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzcWxpdGVfMi44LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1OTM4ZjIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c3FsaXRlXzIuOC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXB5c3FsaXRlLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c3RhY2hlLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXN0YWNoZS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkYmM5OWYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c3RhY2hlLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIE11c3RhY2hlIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2RlZnVua3QvcHlzdGFjaGUiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWViNDQxNzgwMmM1NjM4NGFhYzcxYjM0NTA1NTI4YTYwIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDg1ODg1ZTY3YTBmNjQxMWQ1MjUyZTY5YjIwYTM1Y2EiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjdiYmMyNjVmYjk1N2I0ZDZjN2MwNDJiMzM2NTYzMTc5NDQ0YWIzMTNmYjkzYTcxOTc1OTExMWVhYmQzYjg1YSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LW5ldHNlcnZlciBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXN0YWNoZV8wLjUuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXN0YWNoZV8wLjUuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ1NTAxMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzdGFjaGVfMC41LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1weXN0YWNoZS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtYXN5bmNpby5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LWFzeW5jaW8uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTMyYzc0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtYXN5bmNpby5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1ERVNDUklQVElPTiA9ICJweXRlc3QtYXN5bmNpbyBpcyBhbiBBcGFjaGUyIGxpY2Vuc2VkIGxpYnJhcnksIHdyaXR0ZW4gaW4gUHl0aG9uLCBmb3IgdGVzdGluZyBhc3luY2lvIGNvZGUgd2l0aCBweXRlc3QiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtYXN5bmNpbyIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5yc3Q7bWQ1PWFlNjIyNjhkMjA3YzczYjYxNWZiZWZkZGFmOTFhODgxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjQ3YTdlYzMyZjI0YTE4NTM0MTMyN2M0MmEwZjg1YmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWZhYzUxMDBmZDcxNmNiZWNmNmVmODkyMzNlODU5MGE0YWQ2MWQ3MjlkMTczMmUwYTk2Yjg0MTgyZGYxZGFhZiIKLQotaW5oZXJpdCBweXBpCi0KLURFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1weXRlc3QtbmF0aXZlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtaGVscGVycy1uYW1lc3BhY2UuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1oZWxwZXJzLW5hbWVzcGFjZS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwOTFhYjkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1oZWxwZXJzLW5hbWVzcGFjZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGlzIHBsdWdpbiBkb2VzIG5vdCBwcm92aWRlIGFueSBoZWxwZXJzIHRvIHB5dGVzdCwgaXQgZG9lcywgaG93ZXZlciwgcHJvdmlkZSBhIGhlbHBlcnMgbmFtZXNwYWNlIGluIHB5dGVzdCB3aGljaCBlbmFibGVzIHlvdSB0byByZWdpc3RlciBoZWxwZXIgZnVuY3Rpb25zIGluIHlvdXIgY29uZnRlc3QucHkgdG8gYmUgdXNlZCB3aXRoaW4geW91ciB0ZXN0cyB3aXRob3V0IGhhdmluZyB0byBpbXBvcnQgdGhlbS4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2FsdHN0YWNrL3B5dGVzdC1oZWxwZXJzLW5hbWVzcGFjZSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PWNjOTk1MDhjNDNkOWQxNGZkNTFjN2ZhYzYyMmZmZDIzIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDRlYzFkODc1MGY5YjE1NGU3ODJhNDdjZjhiMzA3MzYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGVmZjIzYTE5ZjkyNDEwYzAxNjZmNmRmZmJmYTg5MDFkM2UxNGE4MGU5N2Q3MGNkMDg0MjhiNmQ1OTc3NzFjZSIKLQotaW5oZXJpdCBweXBpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LWhlbHBlcnMtbmFtZXNwYWNlXzIwMTkuMS44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1oZWxwZXJzLW5hbWVzcGFjZV8yMDE5LjEuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI2ZWU4NS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LWhlbHBlcnMtbmFtZXNwYWNlXzIwMTkuMS44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1weXRlc3QtaGVscGVycy1uYW1lc3BhY2UuaW5jCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICBweXRob24tcHl0ZXN0IFwKLSAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LXJ1bm5lci5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LXJ1bm5lci5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiNDQzYjMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1ydW5uZXIuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotU1VNTUFSWSA9ICJJbnZva2UgcHkudGVzdCBhcyBkaXN0dXRpbHMgY29tbWFuZCB3aXRoIGRlcGVuZGVuY3kgcmVzb2x1dGlvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTMzZjM4YmJmNDdkNDhjNzBmZTBkNDBlNWY3NzQ5OGUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlNWY2NmI4ZThlODdmNjJjNTk2MzFjMzVjOTE5ZDMyMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NmM3ZTczZWFkN2I5M2UzODhjNWQ2MTQ3NzBkMmJhZTY1MjZlZmQ5OTc3NTdkMzU0M2ZlMTdiNTU3YTA5NDJiIgotCi1pbmhlcml0IHB5cGkKLQotREVQRU5EUyArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tc2V0dXB0b29scy1zY20tbmF0aXZlIgotCi1SREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0tcHkgJHtQWVRIT05fUE59LXNldHVwdG9vbHMgJHtQWVRIT05fUE59LWRlYnVnZ2VyICR7UFlUSE9OX1BOfS1qc29uIFwKLSAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1pbyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1ydW5uZXJfNS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1ydW5uZXJfNS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzY1YTczLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtcnVubmVyXzUuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1weXRlc3QtcnVubmVyLmluYwotCi0jIERlcGVuZGVuY3kgb25seSBleGlzdHMgZm9yIHB5dGhvbjIKLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tYXJncGFyc2UgcHl0aG9uLWNvbXBpbGVyIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC10ZW1wZGlyLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtdGVtcGRpci5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmMzU1YTMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC10ZW1wZGlyLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkFkZHMgc3VwcG9ydCBmb3IgYSBwcmVkaWN0YWJsZSBhbmQgcmVwZWF0YWJsZSB0ZW1wb3JhcnkgZGlyZWN0b3J5LiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zYWx0c3RhY2svcHl0ZXN0LXRlbXBkaXIiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT05ODcyYzNhMzdjYzliYWY3OWE0NjRjZDE2ODI4MmJlNSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjc5Yjk5N2Q0MThmYjg1YzI1MjlhYjUwY2Q0MzMzNjg5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU3ZDkxODEzYTlhYTk5MWRiODdkYWNkZWY4Y2ZkM2YxNjU3NjMyZDczMWQ1NmQwNjIzOGM1ZmZiNjNhYjM2ZDgiCi0KLWluaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC10ZW1wZGlyXzIwMTkuMTAuMTIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LXRlbXBkaXJfMjAxOS4xMC4xMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE5YjgzZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LXRlbXBkaXJfMjAxOS4xMC4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSBweXRob24tcHl0ZXN0LXRlbXBkaXIuaW5jCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICBweXRob24tcHl0ZXN0IFwKLSAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTJkNjdlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotU1VNTUFSWSA9ICJTaW1wbGUgcG93ZXJmdWwgdGV0aW5nIHdpdGggcHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cDovL3B5dGVzdC5vcmciCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTY0MDA2MWI4Y2VlNjRiMzA4YTRkMmY5ZjU1NmMxMmYyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzFhOGViMmFiNWVmYjc2NTEyZDlhNjliZDY0NzcwMzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmI1NzEyMTViNWE3OTBmOWI0MWYxOWYzNTMxYzUzYTQ1Y2Y2YmI4ZWYyOTg4YmMxZmY5YWZiMzgyNzBiMjVmYSIKLQotU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly8wMDAxLXNldHVwLnB5LXJlbW92ZS10aGUtc2V0dXBfcmVxdWlyZXMtZm9yLXNldHVwdG9vbHMtc2NtLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAiCi0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWF0dHJzIFwKLSAgICAke1BZVEhPTl9QTn0tZGVidWdnZXIgXAotICAgICR7UFlUSE9OX1BOfS1kb2N0ZXN0IFwKLSAgICAke1BZVEhPTl9QTn0tanNvbiBcCi0gICAgJHtQWVRIT05fUE59LXBsdWdneSBcCi0gICAgJHtQWVRIT05fUE59LXB5IFwKLSAgICAke1BZVEhPTl9QTn0tc2V0dXB0b29scyBcCi0gICAgJHtQWVRIT05fUE59LXNpeCBcCi0gICAgJHtQWVRIT05fUE59LWF0b21pY3dyaXRlcyBcCi0gICAgJHtQWVRIT05fUE59LWltcG9ydGxpYi1tZXRhZGF0YSBcCi0gICAgJHtQWVRIT05fUE59LXBhdGhsaWIyIFwKLSAgICAke1BZVEhPTl9QTn0td2N3aWR0aCBcCi0gICAgJHtQWVRIT05fUE59LW1vcmUtaXRlcnRvb2xzIFwKLSAgICAke1BZVEhPTl9QTn0tcGFja2FnaW5nIFwKLSIKLQotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vcHl0aG9uLXB5dGVzdDoiCi0KLUFMVEVSTkFUSVZFXyR7UE59ICs9ICJweS50ZXN0IHB5dGVzdCIKLQotTkFUSVZFX0xJTktfTkFNRVtweXRlc3RdID0gIiR7YmluZGlyfS9weXRlc3QiCi1BTFRFUk5BVElWRV9UQVJHRVRbcHl0ZXN0XSA9ICIke2JpbmRpcn0vcHl0ZXN0IgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcHkudGVzdF0gPSAiJHtiaW5kaXJ9L3B5LnRlc3QiCi1BTFRFUk5BVElWRV9UQVJHRVRbcHkudGVzdF0gPSAiJHtiaW5kaXJ9L3B5LnRlc3QiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3RfNS4zLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0XzUuMy4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWU1MGFjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3RfNS4zLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1weXRlc3QuaW5jCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tYXJncGFyc2UgXAotICAgICR7UFlUSE9OX1BOfS1jb21waWxlciBcCi0gICAgJHtQWVRIT05fUE59LWZ1bmNzaWdzIFwKLSIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dHouaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dHouaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNGVkZWEwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXR6LmluYworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiV29ybGQgdGltZXpvbmUgZGVmaW5pdGlvbnMsIG1vZGVybiBhbmQgaGlzdG9yaWNhbCIKLUhPTUVQQUdFID0gImh0dHA6Ly9weXRob25ob3N0ZWQub3JnL3B5dHoiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT00ODc4YTkxNTcwOTIyNWJjZWFiNzM5YmRjMmExOGU4ZCIKLQotaW5oZXJpdCBweXBpCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjM2Q4NGE0NjVmYzU2YTRlZGQ1MmNjYTg4NzNhYzBkZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMDJjMDZkYjZjZjA5YzEyZGQyNTEzN2U1NjNiMzE3MDBkM2I4MGZjYzRhZDIzYWJiN2EzMTVmMjc4OTgxOWJlIgotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAotICAgICR7UFlUSE9OX1BOfS1kb2N0ZXN0IFwKLSAgICAke1BZVEhPTl9QTn0taW8gXAotICAgICR7UFlUSE9OX1BOfS1waWNrbGUgXAotICAgICR7UFlUSE9OX1BOfS1wcHJpbnQgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0el8yMDE5LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0el8yMDE5LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGYyZmZjNTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dHpfMjAxOS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXB5dHouaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1ZGV2LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVkZXYuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODNhNzVjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVkZXYuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGxpYnVkZXYgYmluZGluZyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjZjRkOWRiN2Q3NzI2MjIxNDRjYTFiZTZiNWQ5MzUzYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwOTRiN2ExMDAxNTAxMTQ3NDhhYWEzYjcwNjYzNDg1ZGQzNjA0NTdhNzA5YmZhYWFmZTVhOTc3MzcxMDMzZjJiIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgIi9pbXBvcnQgcHl1ZGV2L2QiICR7U30vc2V0dXAucHkKLSAgICBzZWQgLWkgInMvc3RyKHB5dWRldi5fX3ZlcnNpb25fXykvJyR7UFZ9Jy9nIiAke1N9L3NldHVwLnB5Ci19Ci0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKLSAgICAke1BZVEhPTl9QTn0tbWlzYyBcCi0gICAgJHtQWVRIT05fUE59LXNpeCBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0gICAgbGlidWRldiBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1ZGV2XzAuMjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVkZXZfMC4yMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2UxNTAxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVkZXZfMC4yMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1weXVkZXYuaW5jCi0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgICAke1BZVEhPTl9QTn0tY29udGV4dGxpYiBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1c2IuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dXNiLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTc4M2RkNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1c2IuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotU1VNTUFSWSA9ICJQeVVTQiBwcm92aWRlcyBVU0IgYWNjZXNzIG9uIHRoZSBQeXRob24gbGFuZ3VhZ2UiCi1IT01FUEFHRSA9ICJodHRwOi8vcHl1c2Iuc291cmNlZm9yZ2UubmV0LyIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTE2OTFlZDExY2MyYzdhZTkzZTM4M2Y2MGVkNDliMGYiCi1ERVBFTkRTICs9ICJsaWJ1c2IxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODYyYjU2NDUyYzY0OTQ4Yzc4N2FkOGVmOTQ5ODU5MGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGU5YjcyY2M0YTQyMDVjYTY0ZmJmMWYzZmZmMzlhMzM1NTEyMTY2YzE1MWFkMTAzZTU1YzgyMjNhYzE0NzM2MiIKLQotaW5oZXJpdCBweXBpCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVzYl8xLjAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVzYl8xLjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTlhNzk1Yi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1c2JfMS4wLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHl1c2IuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl5YW1sLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXlhbWwuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGViZjczLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXlhbWwuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gc3VwcG9ydCBmb3IgWUFNTCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucHl5YW1sLm9yZyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNzZiNGM2OWJmY2Y4MjMxM2JiZGMwMzkzYjA0NDM4YSIKLURFUEVORFMgPSAibGlieWFtbCAke1BZVEhPTl9QTn0tY3l0aG9uLW5hdGl2ZSAke1BZVEhPTl9QTn0iCi0KLVBZUElfUEFDS0FHRSA9ICJQeVlBTUwiCi1pbmhlcml0IHB5cGkKLQotU1JDX1VSSVttZDVzdW1dID0gImQ3ZTQ1ZTkzMmQ2ZTY2NDlhYzU3NGExZWQ3N2I0MjY5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImMwZWU4ZWNhMmM1ODJkMjljM2MyZWM2ZTJjNGY3MDNkMWI3ZjFmYjEwYmM3MjMxNzM1NWE3NDYwNTdlNzM0NmMiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5eWFtbF81LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl5YW1sXzUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWE0YzkyZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl5YW1sXzUuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSBweXRob24tcHl5YW1sLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl6bXEuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5em1xLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQ0N2MyZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl6bXEuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXptcSBwcm92aWRlcyBaZXJvIG1lc3NhZ2UgcXVldWUgYWNjZXNzIGZvciB0aGUgUHl0aG9uIGxhbmd1YWdlIgotSE9NRVBBR0UgPSAiaHR0cDovL3plcm9tcS5vcmcvYmluZGluZ3M6cHl0aG9uIgotTElDRU5TRSA9ICJCU0QgJiBMR1BMLTMuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuQlNEO21kNT0xMWM2NTY4MGY2MzdjM2RmN2Y1OGJiYzhkMTMzZTk2ZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9MTJjNTkyZmEwYmNmZmYzZmIwOTc3YjA2NmU5Y2I2OWUiCi1ERVBFTkRTID0gInplcm9tcSIKLQotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vcHl0aG9uLXB5em1xOiIKLQotU1JDX1VSSSArPSAiZmlsZTovL2NsdWItcnBhdGgtb3V0LnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gImFlY2RmYzMyODE5M2ZiZDgxZjZkYzIzMjI4MzE5OTQzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIxOTlmNzUzYTIzMGUyNmFlYzUyMzhiMDUxOGIwMzY3ODA3MDhhNGM4ODdkNDk0NDUxOTY4MWE5MjBiOWRlZTQiCi0KLWluaGVyaXQgcHlwaSBwa2djb25maWcKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1tdWx0aXByb2Nlc3NpbmciCi0KLUZJTEVTXyR7UE59LWRiZyA9KyAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vem1xL2JhY2tlbmQvY3l0aG9uLy5kZWJ1ZyIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIGVjaG8gW2dsb2JhbF0gPiAke1N9L3NldHVwLmNmZwotICAgIGVjaG8gem1xX3ByZWZpeCA9ICR7U1RBR0lOR19ESVJfSE9TVH0gPj4gJHtTfS9zZXR1cC5jZmcKLSAgICBlY2hvIGhhdmVfc3lzX3VuX2ggPSBUcnVlID4+ICR7U30vc2V0dXAuY2ZnCi0gICAgZWNobyBza2lwX2NoZWNrX3ptcSA9IFRydWUgPj4gJHtTfS9zZXR1cC5jZmcKLSAgICBlY2hvIGxpYnptcV9leHRlbnNpb24gPSBGYWxzZSA+PiAke1N9L3NldHVwLmNmZwotICAgIGVjaG8gbm9fbGliem1xX2V4dGVuc2lvbiA9IFRydWUgPj4gJHtTfS9zZXR1cC5jZmcKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXptcV8xNy4xLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl6bXFfMTcuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjkwMTA2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXptcV8xNy4xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXB5em1xLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmF2ZW4uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJhdmVuLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM2NWUxMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmF2ZW4uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotU1VNTUFSWSA9ICJSYXZlbiBpcyB0aGUgbGVnYWN5IFB5dGhvbiBjbGllbnQgZm9yIFNlbnRyeSAoZ2V0c2VudHJ5LmNvbSkiCi1ERVNDUklQVElPTiA9ICJcCi1SYXZlbiBpcyB0aGUgb2ZmaWNpYWwgbGVnYWN5IFB5dGhvbiBjbGllbnQgZm9yIFNlbnRyeSwgb2ZmaWNpYWxseSBcCi1zdXBwb3J0cyBQeXRob24gMi424oCTMi43ICYgMy4z4oCTMy43LCBhbmQgcnVucyBvbiBQeVB5IGFuZCBHb29nbGUgQXBwIEVuZ2luZS4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ2V0c2VudHJ5L3JhdmVuLXB5dGhvbiIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjlhNDQxNGUwOGYwNTcxZDU1MTg0NTMxY2VmYzEzMWIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzNjc2ZjMxZGFkZmE2MTUyNjQ0NGRkMDI0NWM3OGEzOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzZmE2ZGU2ZWZhMjQ5M2E3YzgyNzQ3MmU5ODRjZTliMDIwNzk3ZDBkYTE2ZjFkYjY3MTk3YmNjMjNjOGZhZTU0IgotCi1QWVBJX1BBQ0tBR0UgPSAicmF2ZW4iCi1pbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZGZsaWIuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJkZmxpYi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmYTZkOTguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJkZmxpYi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gIlJERkxpYiBpcyBhIHB1cmUgUHl0aG9uIHBhY2thZ2UgZm9yIHdvcmtpbmcgd2l0aCBSREYiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTY4YzFhM2JiNjg3YmQ2M2I4ZTU1NTJmM2VhMjQ5ODQwIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTM0ZmUzNWIxM2M1ODU3ZDUzZmExYWM1YTQxZWNhNjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGExZGYxNDU1MjU1NWM1Yzc3MTVkOGNlNzFjMDhmNDA0Yzk4OGM1OGExZWNkMzg1NTJkMGRhNGZjMjYxMjgwZCIKLQotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1pc29kYXRlIFwKLSAgICAke1BZVEhPTl9QTn0tcHlwYXJzaW5nIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJkZmxpYl80LjIuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZGZsaWJfNC4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlZDBmNWYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJkZmxpYl80LjIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1yZGZsaWIuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVkaXMuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlZGlzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE2NWQ3My4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVkaXMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gY2xpZW50IGZvciBSZWRpcyBrZXktdmFsdWUgc3RvcmUiCi1ERVNDUklQVElPTiA9ICJUaGUgUHl0aG9uIGludGVyZmFjZSB0byB0aGUgUmVkaXMga2V5LXZhbHVlIHN0b3JlLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2FuZHltY2N1cmR5L3JlZGlzLXB5IgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01MWQ5YWQ1NjI5OWFiNjBiYTdiZTY1YTYyMTAwNGYyNyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA0ODM0OGQ4Y2ZlMGI1ZDBiYmEyZjRkODM1MDA1YzNiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEyMmNhOTkzY2VhMjk2MmRiYjU4OGY5ZjMwZDAwMTVhYzRhZmNjNDViZWUyN2QzOTc4YzBkYmU5ZTk3YzZjMGYiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZWRpc18yLjEwLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVkaXNfMi4xMC42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzNjYTg1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZWRpc18yLjEwLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1yZWRpcy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0cy1vYXV0aGxpYi5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVxdWVzdHMtb2F1dGhsaWIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzRkODVmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0cy1vYXV0aGxpYi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLUxJQ0VOU0UgPSAiSVNDIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjJkMTE3YTg0OWRmMTBkMDQ3ZWQ5Yjc5MjgzOGU4NjMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxZWJjZDU1ZjFiMWI5MjgxOTQwYjRiYzMzMDEwZTJiYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNDI2MTYwMWE3MWZkNzIxYThiZDZkN2FhMWNjMWQ2YThhOTNiNGE5ZjVlOTY2MjZmOGU0ZDkxZThiZWVhYTZhIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXJlcXVlc3RzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlcXVlc3RzLW9hdXRobGliXzEuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlcXVlc3RzLW9hdXRobGliXzEuMy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzE4OTE1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0cy1vYXV0aGxpYl8xLjMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotcmVxdWlyZSBweXRob24tcmVxdWVzdHMtb2F1dGhsaWIuaW5jCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVxdWVzdHMuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlcXVlc3RzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZlNWRjMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVxdWVzdHMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiUHl0aG9uIEhUVFAgZm9yIEh1bWFucy4iCi1IT01FUEFHRSA9ICJodHRwOi8vcHl0aG9uLXJlcXVlc3RzLm9yZyIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE4ZDVhMWQxYzJkNTMwMjVlMjI4MmM1MTEwMzNmNmY3IgotCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tcmVxdWVzdHM6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWUyOGJlZTJkZTc2ZTkxOThmYzQxZTQ4ZjNhN2RkNDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTFlMDA3YThhMmFhMDMyM2Y1YTkyMWU5ZTZhMmQ3ZTRlNjdkOTg3N2U4NTc3M2ZiYTliYTY0MTkwMjVjYmViNCIKLQotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1lbWFpbCBcCi0gICAgJHtQWVRIT05fUE59LWpzb24gXAotICAgICR7UFlUSE9OX1BOfS1uZGctaHR0cHNjbGllbnQgXAotICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAotICAgICR7UFlUSE9OX1BOfS1weWFzbjEgXAotICAgICR7UFlUSE9OX1BOfS1weW9wZW5zc2wgXAotICAgICR7UFlUSE9OX1BOfS1weXNvY2tzIFwKLSAgICAke1BZVEhPTl9QTn0tdXJsbGliMyBcCi0gICAgJHtQWVRIT05fUE59LWNoYXJkZXQgXAotICAgICR7UFlUSE9OX1BOfS1pZG5hIFwKLSIKLQotQ1ZFX1BST0RVQ1QgPSAicmVxdWVzdHMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0c18yLjIyLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVxdWVzdHNfMi4yMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDdhMjlmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0c18yLjIyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcmVxdWVzdHMuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0temxpYiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZmMzMzM5LXZhbGlkYXRvci5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmZjMzMzOS12YWxpZGF0b3IuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGEwODI5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZmMzMzM5LXZhbGlkYXRvci5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIkEgcHVyZSBweXRob24gUkZDMzMzOSB2YWxpZGF0b3IiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbmFpbWV0dGkvcmZjMzMzOS12YWxpZGF0b3IiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWEyMWIxM2I1YTk5NmYwOGY3ZTBiMDg4YWEzOGNlOWM2IgotCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tcmZjMzMzOS12YWxpZGF0b3I6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWQ4ODk5MDQxZDgzZjk4MTgwYmRkZDhiNjJlZTdlOTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjBhNjAwZDAxZmJiMWY3OTNjYmI2ZjRlYzRlYmIyMTA0ZjRjOWU4MGQ3NGQ1Zjc4MzUwYjYzZWNjNmNjY2QwOCIKLQotUFlQSV9QQUNLQUdFID0gInJmYzMzMzlfdmFsaWRhdG9yIgotCi1pbmhlcml0IHB5cGkKLQotU1JDX1VSSV9hcHBlbmQgPSAiIFwKLSAgICBmaWxlOi8vMDAwMS1zZXR1cC5weS1tb3ZlLXB5dGVzdC1ydW5uZXItdG8tdGVzdF9yZXF1aXJlbWVudHMucGF0Y2ggXAotIgotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1jb3JlIFwKLSAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAotICAgICR7UFlUSE9OX1BOfS1zaXggXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmZjMzMzOS12YWxpZGF0b3JfMC4xLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmZjMzMzOS12YWxpZGF0b3JfMC4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5YjhhNmUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJmYzMzMzktdmFsaWRhdG9yXzAuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXJmYzMzMzktdmFsaWRhdG9yLmluYwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZmMzOTg2LXZhbGlkYXRvci5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmZjMzk4Ni12YWxpZGF0b3IuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWY3YTc5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZmMzOTg2LXZhbGlkYXRvci5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIlB1cmUgcHl0aG9uIHJmYzM5ODYgdmFsaWRhdG9yIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL25haW1ldHRpL3JmYzM5ODYtdmFsaWRhdG9yIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hMjFiMTNiNWE5OTZmMDhmN2UwYjA4OGFhMzhjZTljNiIKLQotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vcHl0aG9uLXJmYzM5ODYtdmFsaWRhdG9yOiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQ3Zjc2NTdiNzkwYWFmNjAxMWExYWIzZDg2YzZiZTk1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkNDRiZGU3OTIxYjNiOWVjM2FlNGUzYWRjYTM3MDQzOGVjY2ViYzY3NjQ1NjQ0OWIxNDVkNTMzYjI0MGQwNTUiCi0KLVBZUElfUEFDS0FHRSA9ICJyZmMzOTg2X3ZhbGlkYXRvciIKLQotaW5oZXJpdCBweXBpCi0KLVNSQ19VUklfYXBwZW5kID0gIiBcCi0gICAgZmlsZTovLzAwMDEtc2V0dXAucHktbW92ZS1weXRlc3QtcnVubmVyLXRvLXRlc3RfcmVxdWlyZW1lbnRzLnBhdGNoIFwKLSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICBweXRob24zLWNvcmUgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmZjMzk4Ni12YWxpZGF0b3JfMC4xLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmZjMzk4Ni12YWxpZGF0b3JfMC4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZGRiYjQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJmYzM5ODYtdmFsaWRhdG9yXzAuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXJmYzM5ODYtdmFsaWRhdG9yLmluYwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZmMzOTg3LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZmMzOTg3LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNmYTA3ZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmZjMzk4Ny5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLVNVTU1BUlkgPSAiUGFyc2luZyBhbmQgdmFsaWRhdGlvbiBvZiBVUklzIChSRkMgMzk4NikgYW5kIElSSXMgKFJGQyAzOTg3KSIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTg7ZW5kbGluZT05O21kNT0yYjcyM2VkZjY3YjJmMzA4OGJjNWUzMzliMWNlZGEyZCIKLQotU1JDX1VSSVttZDVzdW1dID0gImI2YzQwMjhhY2RjNzg4YTliYTY5N2UxYzFkNmI4OTZjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQzYzRkMjU3YTU2MGQ1NDRlOTgyNmIzOGJjODFkYjY3Njg5MGM3OWFiOWQ3YWM5MmIzOWM3YTI1M2Q1Y2E3MzMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZmMzOTg3XzEuMy44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJmYzM5ODdfMS4zLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjZGE1YWEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJmYzM5ODdfMS4zLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1yZmMzOTg3LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnkuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnkuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmNiMDIzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiUm9ib3QgRnJhbWV3b3JrIHRlc3QgbGlicmFyeSBmb3Igc2VyaWFsIGNvbm5lY3Rpb24iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vd2hvc2F5c25pL3JvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnkiCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9ODtlbmRsaW5lPTg7bWQ1PTcxNDVmN2NkZDI2MzM1OWI2MmQzNDJhMDJmMDA1NTE1IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjdjOTU2NWQ1NGMzMGRmN2NkM2YzYzBlMjlhZGZmYTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjU2YWQ2MGZjMGI3ZGY0YmU0NGQ4MmMzMDJmNWVkOGZhZDQ5MzVjZGE5OWU0YjQ1OTQyZTNjODgxNzlkMWUxOSIKLQotU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvY2UvZTEvMWUzMzdkYzg0YTIwYjlkOTJkN2IyNDNkMTZiYjlmNmZjMDA4NDk2N2VjYTc0NTQyMjhiYjU0NmVmZWM3L3JvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnktMC4zLjEudGFyLmd6IgotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LXB5c2VyaWFsIFwKLSAgICAke1BZVEhPTl9QTn0tcm9ib3RmcmFtZXdvcmsgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcm9ib3RmcmFtZXdvcmstc2VyaWFsbGlicmFyeV8wLjMuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5XzAuMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDBmNjljLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5XzAuMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcm9ib3RmcmFtZXdvcmstc2VyaWFsbGlicmFyeS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yb2JvdGZyYW1ld29yay5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcm9ib3RmcmFtZXdvcmsuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTIwYzUxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yb2JvdGZyYW1ld29yay5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIkEgUHl0aG9uIGdlbmVyaWMgdGVzdCBhdXRvbWF0aW9uIGZyYW1ld29yayIKLURFU0NSSVBUSU9OID0gIkdlbmVyaWMgb3BlbiBzb3VyY2UgdGVzdCBhdG9tYXRpb24gZnJhbWV3b3JrIGZvciBhY2NlcHRhbmNlXAotdGVzdGluZyBhbmQgYWNjZXB0YW5jZSB0ZXN0LWRyaXZlbiBkZXZlbG9wbWVudCAoQVRERCkuIEl0IGhhcyBlYXN5LXRvLXVzZVwKLXRhYnVsYXIgdGVzdCBkYXRhIHN5bnRheCBhbmQgaXQgdXRpbGl6ZXMgdGhlIGtleXdvcmQtZHJpdmVuIHRlc3RpbmcgYXBwcm9hY2guXAotSXRzIHRlc3RpbmcgY2FwYWJpbGl0aWVzIGNhbiBiZSBleHRlbmRlZCBieSB0ZXN0IGxpYnJhcmllcyBpbXBsZW1lbnRlZCBlaXRoZXJcCi13aXRoIFB5dGhvbiBvciBKYXZhLCBhbmQgdXNlcnMgY2FuIGNyZWF0ZSBuZXcgaGlnaGVyLWxldmVsIGtleXdvcmRzIGZyb21cCi1leGlzdGluZyBvbmVzIHVzaW5nIHRoZSBzYW1lIHN5bnRheCB0aGF0IGlzIHVzZWQgZm9yIGNyZWF0aW5nIHRlc3QgY2FzZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3JvYm90ZnJhbWV3b3JrLm9yZyIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKLQotaW5oZXJpdCBweXBpCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlZTc1MzQxNTY0NWZmNDgzMWZmMGQzNjZhMDQ2N2ZlNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhYjk0MjU3Y2JkODQ4ZGZjYTcxNDhlMDkyZDIzM2ExMjg1M2NjN2U4NDBjZTgyMzFhZjljYmI1ZTdmNTFhYTQ3IgotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAotICAgICR7UFlUSE9OX1BOfS1wcHJpbnQgXAotICAgICR7UFlUSE9OX1BOfS14bWwgXAotICAgICR7UFlUSE9OX1BOfS1kaWZmbGliIFwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSAgICAke1BZVEhPTl9QTn0taHRtbCBcCi0gICAgJHtQWVRIT05fUE59LWRvY3V0aWxzIFwKLSAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yb2JvdGZyYW1ld29ya18zLjAuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yb2JvdGZyYW1ld29ya18zLjAuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY3ZGVkYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcm9ib3RmcmFtZXdvcmtfMy4wLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcm9ib3RmcmFtZXdvcmsuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS16bGliIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY2FuZGlyXzEuMTAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY2FuZGlyXzEuMTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRlMjcyNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NhbmRpcl8xLjEwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1TVU1NQVJZID0gIkEgYmV0dGVyIGRpcmVjdG9yeSBpdGVyYXRvciBhbmQgZmFzdGVyIG9zLndhbGsoKSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iZW5ob3l0L3NjYW5kaXIiCi1BVVRIT1IgPSAiQmVuIEhveXQiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT00ODJlZTYyZGE1MTgwNjQwOWQ0MzJhODBlZWQ0ZTNlYSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2JlbmhveXQvc2NhbmRpci5naXQiCi1TUkNSRVYgPSAiOTgyZTZiYTYwZTcxNjVlZjk2NTU2N2VhY2Q3MTM4MTQ5YzljZTI5MiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBzZXR1cHRvb2xzCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NyeXB0LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY3J5cHQuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmY4NmE1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY3J5cHQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQmluZGluZ3MgZm9yIHRoZSBzY3J5cHQga2V5IGRlcml2YXRpb24gZnVuY3Rpb24gbGlicmFyeSIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTY4ZmY3NTQxN2Y3NWE4M2U2M2M4ODc1MjkyZDQ0ZGMiCi1IT01FUEFHRT0iaHR0cHM6Ly9iaXRidWNrZXQub3JnL21oYWxsaW4vcHktc2NyeXB0L292ZXJ2aWV3IgotCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tc2NyeXB0OiIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtcHktc2NyeXB0LXJlbW92ZS10aGUtaGFyZC1jb2RlZC1pbmNsdWRlLXBhdGhzLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYWU4ZTMyNjNhYTMxYjA0MGMxZjljN2YxZTE4NDNhNTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjgyMzliMmQ0N2ZhMWQ0MGJjMjdlZmQyMzFkYzcwODM2OTVkMTBjMWMyYWM1MWE5OTM4MDM2MDc0MWUwMzYyZCIKLQotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNjcnlwdF8wLjguNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY3J5cHRfMC44LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmYmQwMGUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNjcnlwdF8wLjguNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzIHB5dGhvbi1kaXIKLXJlcXVpcmUgcHl0aG9uLXNjcnlwdC5pbmMKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNkbm90aWZ5LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZG5vdGlmeS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhMGU1NzUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNkbm90aWZ5LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iYjQyNDIvc2Rub3RpZnkiCi1TVU1NQVJZID0gIkEgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2Ygc3lzdGVtZCdzIHNlcnZpY2Ugbm90aWZpY2F0aW9uIHByb3RvY29sIChzZF9ub3RpZnkpIgotCi1ERVNDUklQVElPTiA9ICJcCi0gIHNkbm90aWZ5IGlzIGEgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgdGhlIHN5c3RlbWQgc2Rfbm90aWZ5IHByb3RvY29sLiBcCi0gIFRoaXMgcHJvdG9jb2wgY2FuIGJlIHVzZWQgdG8gaW5mb3JtIHN5c3RlbWQgYWJvdXQgc2VydmljZSBzdGFydC11cCBjb21wbGV0aW9uLCBcCi0gIHdhdGNoZG9nIGV2ZW50cywgYW5kIG90aGVyIHNlcnZpY2Ugc3RhdHVzIGNoYW5nZXMuIFwKLSAgVGh1cywgdGhpcyBwYWNrYWdlIGNhbiBiZSB1c2VkIHRvIHdyaXRlIHN5c3RlbSBzZXJ2aWNlcyBpbiBQeXRob24gdGhhdCBwbGF5IG5pY2VseSB3aXRoIHN5c3RlbWQuIFwKLSAgIgotCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWNjNTcyY2NjNGIxOGE0YjdkMTNiZTVkMDFiYzgyMTNlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzQ5ZGRjYTFjNzBiZTE2OTdmZWNjNDQzZmIxZmRiMTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzM5NzdmYzc0NmIzNmNjNDExODRkZDQzYzNmZTgxMzIzZTdiOGIwNmMyYmIwODI2YzRmNTlhMjBjNTZiYjlmMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZG5vdGlmeV8wLjMuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZG5vdGlmeV8wLjMuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzlhZTNmYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2Rub3RpZnlfMC4zLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scyBweXBpCi1yZXF1aXJlIHB5dGhvbi1zZG5vdGlmeS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZWxlY3RvcnMzNF8xLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VsZWN0b3JzMzRfMS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTU0NWViLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZWxlY3RvcnMzNF8xLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1TVU1NQVJZID0gIkJhY2twb3J0IG9mIHRoZSBzZWxlY3RvcnMgbW9kdWxlIGZyb20gUHl0aG9uIDMuNCIKLUxJQ0VOU0UgPSAiUFNGIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTJmYWUwMjIyYzMxZDZjMTA0ODhkNGFiOTNhODYzYWY3IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmM4NTVhMWM4ODM5YTgxMTQ3NmMwMTlkYzA3ZDkyZGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDlmNTA2NjMzN2Y4YTc2ZmI1MjMzZjI2Nzg3M2Y4OWEyN2ExN2MxMGJmNzk1NzU5NTQ4OTRiYjcxNjg2NDUxYyIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tc2l4IFwKLSAgICAiICAgIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlbXZlci5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VtdmVyLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M5NWMwNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VtdmVyLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlB5dGhvbiBtb2R1bGUgZm9yIFNlbWFudGljIFZlcnNpb25pbmciCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vay1ieC9weXRob24tc2VtdmVyIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vay1ieC9weXRob24tc2VtdmVyL2lzc3VlcyIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTg7ZW5kbGluZT04O21kNT1lOTEwYjM1YjBlZjRlMWY2NjViOWE3NWQ2YWZiNzcwOSIKLQotU1JDX1VSSVttZDVzdW1dID0gImRjNTc5YmE5ZDBiYjIxMzdiYWQ1MzI0ZDRiZGI3ZTQwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjViMDkwMTBhNjZkOWEzODM3MjExYmI3YWU1YTIwZDEwYmE4OGY4Y2I0OWU5MmNiMTM5YTY5ZWY5MGQ1MDYwZDgiCi0KLWluaGVyaXQgcHlwaQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VtdmVyXzIuOC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlbXZlcl8yLjguMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU3MmZlYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VtdmVyXzIuOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXNlbXZlci5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZW50cnktc2RrLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZW50cnktc2RrLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMxMjNjZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VudHJ5LXNkay5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBuZXcgUHl0aG9uIFNESyBmb3IgU2VudHJ5LmlvIgotREVTQ1JJUFRJT04gPSAiVGhpcyBpcyB0aGUgbmV4dCBsaW5lIG9mIHRoZSBQeXRob24gU0RLIFwKLWZvciBTZW50cnksIGludGVuZGVkIHRvIHJlcGxhY2UgdGhlIHJhdmVuIHBhY2thZ2Ugb24gUHlQSS4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ2V0c2VudHJ5L3NlbnRyeS1weXRob24iCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTBjNzlmOGQzYzkxZmM4NDczNTBlZmQyOGJmZTBhMzQxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZmVmMDE2ZDA3NTEzN2M0ZmI4NzI0NTU5Y2FkMjhiODYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTgxODI4OTg2ODc1NWNmZWE3NGU2MWU1MzJiNGIwZDExZDUyMzkwMTA0MTMzOGQ0NzMyNzdkYjkxZDRkODE3MyIKLQotUFlQSV9QQUNLQUdFID0gInNlbnRyeS1zZGsiCi1pbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXJwZW50LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXJwZW50LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWEzYWFjMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VycGVudC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIlNlcmlhbGl6YXRpb24gYmFzZWQgb24gYXN0LmxpdGVyYWxfZXZhbCIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTVjZDcwNjMyYjZjZGI5NmRmOWRkYWY2YTRjZTYxOWU2IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTVlZjhiNjdjNzZhNmQxOWJhYzljMTY3MzFhMWU2MmEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjMwNjMzNmNhMDlhYTM4ZTUyNmYzYjAzY2FiNThlYjdlNDVhZjA5OTgxMjY3MjMzMTY3YmNmM2JmZDY0MzZhYiIKLQotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCi0gICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAotICAgICIgICAgCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VycGVudF8xLjI4LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlcnBlbnRfMS4yOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGRiM2NmOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VycGVudF8xLjI4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXNlcnBlbnQuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy1zY20uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMtc2NtLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTdlMWJmNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy1zY20uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJ0aGUgYmxlc3NlZCBwYWNrYWdlIHRvIG1hbmFnZSB5b3VyIHZlcnNpb25zIGJ5IHNjbSB0YWdzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9ODtlbmRsaW5lPTg7bWQ1PTgyMjcxODAxMjY3OTdhMDE0OGY5NGY0ODNmM2UxNDg5IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTBiMjE5OTA4MmZlODA4ZDAzMmVjMTcxMGM5ZDc0MTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmQyNWUxZmI1ZTRkNjAzZGNmNDkwZjFmZGU0MGZiNGM1OTViMzU3Nzk1Njc0YzNlNWNiN2Y2MjE3YWIzOWVhNSIKLQotUFlQSV9QQUNLQUdFID0gInNldHVwdG9vbHNfc2NtIgotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICIke1BZVEhPTl9QTn0tcHkgJHtQWVRIT05fUE59LXNldHVwdG9vbHMgJHtQWVRIT05fUE59LWRlYnVnZ2VyICR7UFlUSE9OX1BOfS1qc29uIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzLW5hdGl2ZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy1zY21fMy4zLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy1zY21fMy4zLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0YjM2ZTMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMtc2NtXzMuMy4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXNldHVwdG9vbHMtc2NtLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWFyZ3BhcnNlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNoLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyZmQ1NjIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNoLmluYworKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIHN1YnByb2Nlc3MgcmVwbGFjZW1lbnQiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW1vZmZhdC9zaCIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTUzMTcwOTQyOTIyOTZmMDM0MDVmNTlhZTVmNjU0NGI2IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTgzNTFhZWYyNWQyNWY3MDdjMTdlMGE3YTYyODAyNTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjUyYmY1ODMzZWQwMWM3YjVjNWZiNzNhN2Y3MWIzZDk4ZDQ4ZTliOWI4NzY0MjM2MjM3YmRjN2VjYWU4NTBmYyIKLQotUFlQSV9QQUNLQUdFID0gInNoIgotCi1pbmhlcml0IHB5cGkKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWNvZGVjcyBcCi0gICAgJHtQWVRIT05fUE59LWNvcmUgXAotICAgICR7UFlUSE9OX1BOfS1pbyBcCi0gICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAotICAgICR7UFlUSE9OX1BOfS1yZXNvdXJjZSBcCi0gICAgJHtQWVRIT05fUE59LXNoZWxsIFwKLSAgICAke1BZVEhPTl9QTn0tdGVybWluYWwgXAotICAgICR7UFlUSE9OX1BOfS10ZXN0cyBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0gICAgJHtQWVRIT05fUE59LXVuaXhhZG1pbiBcCi0iCi0KLSMgV0FSTklORzogV2Ugd2VyZSB1bmFibGUgdG8gbWFwIHRoZSBmb2xsb3dpbmcgcHl0aG9uIHBhY2thZ2UvbW9kdWxlCi0jIGRlcGVuZGVuY2llcyB0byB0aGUgYml0YmFrZSBwYWNrYWdlcyB3aGljaCBpbmNsdWRlIHRoZW06Ci0jICAgIGNvdmVyYWdlIC0gb25seSB1c2VkIGluIHRlc3QgYW5kIHRoZXJlIGlzIGEgY2hlY2sgdG8gc2VlIGlmIGl0IGlzCi0jICAgICAgICAgICAgICAgYXZhaWxhYmxlIGJlZm9yZSBpbXBvcnRpbmcuCi0jICAgIHF1ZXVlIC0gcGFydCBvZiB0aHJlYWRpbmcKLSMgICAgc2lnbmFsIC0gcGFydCBvZiBjb3JlIGluIHB5dGhvbjMuIG5vdCBzdXJlIGhvdyBpdCBpcyBpbXBvcnRlZCBpbiBweXRob24yLgotIyAgICAgICAgICAgICBObyBjb21wbGFudHMgaW4gY29tcGlsaW5nLgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNoXzEuMTIuMTQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2hfMS4xMi4xNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2NiNTE0MC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2hfMS4xMi4xNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSBweXRob24tc2guaW5jCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWNvbnRleHRsaWIgXAotICAgICR7UFlUSE9OX1BOfS1sYW5nIFwKLSAgICAke1BZVEhPTl9QTn0tdGV4dHV0aWxzIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaWpheC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2lqYXguaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTQ2ODkzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaWpheC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkFuIGVhc3kgdG8gdXNlIEFKQVggbGlicmFyeSBmb3IgUHl0aG9uIGJhc2VkIG9uIGpRdWVyeS5hamF4IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3NwYW50YWxlZXYvc2lqYXgtcHl0aG9uIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0xNmUyMTNkNzU2NDFhMzkyNDc4ZGY1MGNmMDg0MTkwMyIKLQotUFlQSV9QQUNLQUdFID0gIlNpamF4IgotaW5oZXJpdCBweXBpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpamF4XzAuMy4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpamF4XzAuMy4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjI2YzQyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaWpheF8wLjMuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkFuIGVhc3kgdG8gdXNlIEFKQVggbGlicmFyeSBmb3IgUHl0aG9uIGJhc2VkIG9uIGpRdWVyeS5hamF4IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3NwYW50YWxlZXYvc2lqYXgtcHl0aG9uIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0xNmUyMTNkNzU2NDFhMzkyNDc4ZGY1MGNmMDg0MTkwMyIKLQotUFlQSV9QQUNLQUdFID0gIlNpamF4IgotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1zaWpheC5pbmMKLQotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjExYjA2MmY0YThiMmFhZDk1Yzg3ZTdjMDllNWRhZjVhNmIwZDBmMDhhYmY5ZWZlNWY5MWEwMDc1YzZiZTdjMGQiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpbXBsZWpzb24uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpbXBsZWpzb24uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYThkMzkwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiU2ltcGxlLCBmYXN0LCBleHRlbnNpYmxlIEpTT04gZW5jb2Rlci9kZWNvZGVyIGZvciBQeXRob24iCi1IT01FUEFHRSA9ICJodHRwOi8vY2hlZXNlc2hvcC5weXRob24ub3JnL3B5cGkvc2ltcGxlanNvbiIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9YzYzMzhkN2FiZDMyMWMwYjUwYTJhNTQ3ZTQ0MWM1MmUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4YTVlZDc1YzM2N2I5MGZlZGMzZDY4NTc0MmUyYTFjNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYjRiMmI3MzhiM2I5OTgxOWExN2ZlYWYxMTgyNjVkMDc1M2Q1NTM2MDQ5ZWE1NzBiM2M0M2I1MWM0NzAxZTgxIgotCi1pbmhlcml0IHB5cGkKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0taW8gXAotICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAotICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKLSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgotUkRFUEVORFNfJHtQTn0tdGVzdHMgPSAiJHtQTn0gJHtQWVRIT05fUE59LXVuaXR0ZXN0IgotRklMRVNfJHtQTn0tdGVzdHMrPSAiIFwKLSAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zaW1wbGVqc29uL3Rlc3RzIFwKLSAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zaW1wbGVqc29uL3Rvb2wucHkqIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpbXBsZWpzb25fMy4xNy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpbXBsZWpzb25fMy4xNy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGFkOWE5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uXzMuMTcuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1zaW1wbGVqc29uLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXJlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpbmdsZWRpc3BhdGNoXzMuNC4wLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2luZ2xlZGlzcGF0Y2hfMy40LjAuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRjOTUwNS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2luZ2xlZGlzcGF0Y2hfMy40LjAuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLVNVTU1BUlkgPSAiZnVuY3Rvb2xzLnNpbmdsZWRpc3BhdGNoIGZyb20gUHl0aG9uIDMuNCIKLURFU0NSSVBUSU9OID0gIlBFUCA0NDMgcHJvcG9zZWQgdG8gZXhwb3NlIGEgbWVjaGFuaXNtIGluIHRoZSBmdW5jdG9vbHMgc3RhbmRhcmQgbGlicmFyeSBtb2R1bGUgXAotaW4gUHl0aG9uIDMuNCB0aGF0IHByb3ZpZGVzIGEgc2ltcGxlIGZvcm0gb2YgZ2VuZXJpYyBwcm9ncmFtbWluZyBrbm93biBhcyBzaW5nbGUtZGlzcGF0Y2ggXAotZ2VuZXJpYyBmdW5jdGlvbnMuICBUaGlzIGxpYnJhcnkgaXMgYSBiYWNrcG9ydCBvZiB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gUHl0aG9uIDIuNiAtIDMuMyIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLnJzdDttZDU9ZWUzY2Q2NzI2NGFkYzdlYjA3OTgxZjM2NDRkYzE3ZGMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhZjJmYzZhM2Q2Y2M1YTAyZDBiZjU0ZDkwOTc4NWZjYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1YjA2YWY4N2RmMTM4MThkMTRmMDhhMDI4ZTQyZjU2NjY0MGFlZjgwODA1YzNiNTBjNTA1NmIwODZlM2MyYjljIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNsaXAtZGJ1cy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2xpcC1kYnVzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI3YjFiYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2xpcC1kYnVzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAiQ29udmVuaWVuY2UgZnVuY3Rpb25zIGZvciBkYnVzIHNlcnZpY2VzIGluIFB5dGhvbiAyLngiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbnBoaWxpcHAvcHl0aG9uLXNsaXAiCi1ERVNDUklQVElPTiA9ICJcCi1UaGUgU2ltcGxlIExpYnJhcnkgZm9yIFB5dGhvbiAyLnggcGFja2FnZXMgY29udGFpbiBtaXNjZWxsYW5lb3VzIGNvZGUgZm9yIFwKLWNvbnZlbmllbmNlLCBleHRlbnNpb24gYW5kIHdvcmthcm91bmQgcHVycG9zZXMuIFwKLVwKLVRoaXMgcGFja2FnZSBwcm92aWRlcyBzbGlwLmRidXMuc2VydmljZS5PYmplY3QsIHdoaWNoIGlzIGEgZGJ1cy5zZXJ2aWNlLk9iamVjdCBcCi1kZXJpdmF0aXZlIHRoYXQgZW5kcyBpdHNlbGYgYWZ0ZXIgYSBjZXJ0YWluIHRpbWUgd2l0aG91dCBiZWluZyB1c2VkIGFuZC9vciBpZiBcCi10aGVyZSBhcmUgbm8gY2xpZW50cyBhbnltb3JlIG9uIHRoZSBtZXNzYWdlIGJ1cywgYXMgd2VsbCBhcyBjb252ZW5pZW5jZSBcCi1mdW5jdGlvbnMgYW5kIGRlY29yYXRvcnMgZm9yIGludGVncmF0aW5nIGEgZGJ1cyBzZXJ2aWNlIHdpdGggUG9saWN5S2l0LiIKLQotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1NzRjNjk2NWFlNWY1ODNlNTU4ODBlMzk3ZmJiMDE4IgotU1JDTkFNRSA9ICJweXRob24tc2xpcCIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbnBoaWxpcHAvJHtTUkNOQU1FfS9yZWxlYXNlcy9kb3dubG9hZC8ke1NSQ05BTUV9LSR7UFZ9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmJ6MiIKLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjhhZTVmOTM4NTM0NjZjNDRlYzk2NzA2YmEyYTFlYjQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzcyNmMwODZmMGRkOTNhMGFjN2EwMTc2ZjM4M2ExMmFmOTFiNjY1N2I3OGEzMDFlM2Y1YjI1ZDlmOGQ0ZDEwYiIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIHNlZCAtZSAncy9AVkVSU0lPTkAvJHtQVn0vZycgJHtTfS9zZXR1cC5weS5pbiA+ICR7U30vc2V0dXAucHkKLX0KLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSR7UFlUSE9OX1BOfS1zaXggXAotIgotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTg0NzEzLwotIyBweXRob24tbmF0aXZlL3B5dGhvbjogY2FuJ3Qgb3BlbiBmaWxlICdzZXR1cC5weSc6IFtFcnJubyAyXSBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci1DTEVBTkJST0tFTiA9ICIxIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNsaXAtZGJ1c18wLjYuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbGlwLWRidXNfMC42LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzMGZhMWIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNsaXAtZGJ1c18wLjYuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1zbGlwLWRidXMuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21idXMuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtYnVzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGJhMWFiMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21idXMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotU1VNTUFSWSA9ICJTZXQgb2YgaTJjIHRvb2xzIGZvciBsaW51eCAtIFB5dGhvbiBtb2R1bGUiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc21idXNtb2R1bGUuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE4O21kNT00NmU0MjRmYjA0NTkwMWFiMjVlMGY5MmMyOGM4MDA1NSIKLVBSID0gInIxIgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvdXRpbHMvaTJjLXRvb2xzL2kyYy10b29scy0ke1BWfS50YXIuZ3ogIgotU1JDX1VSSVttZDVzdW1dID0gIjM1MzYyMzdhNmI1MWZiMTBjYWFjZGMzYjhhNDk2MjM3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVmOGY3N2FmYzcwZTdkYmZkMTE3MWJmZWFlODdhOGE3ZjEwMDc0ODI5MzcwY2U4ZDljY2Q1ODVhMDE0ZTAwNzMiCi0KLURFUEVORFMgKz0gImkyYy10b29scyIKLQotUyA9ICIke1dPUktESVJ9L2kyYy10b29scy0ke1BWfS9weS1zbWJ1cy8iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21idXNfNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtYnVzXzQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI5NTc3OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21idXNfNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IGRpc3R1dGlscwotcmVxdWlyZSBweXRob24tc21idXMuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc25ha2Vmb29kXzEuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbmFrZWZvb2RfMS40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNGE2ZDc2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbmFrZWZvb2RfMS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotU1VNTUFSWSA9ICJEZXBlbmRlbmN5IGdyYXBoaW5nIGZvciBQeXRob24iCi1ERVNDUklQVElPTiA9ICIgR2VuZXJhdGUgZGVwZW5kZW5jeSBncmFwaHMgZnJvbSBQeXRob24gY29kZS4gVGhpcyBcCi1kZXBlbmRlbmN5IHRyYWNrZXIgcGFja2FnZSBoYXMgYSBmZXcgZGlzdGluZ3Vpc2hpbmcgY2hhcmFjdGVyaXN0aWNzIFwKLVwKLSAgICAqIEl0IHVzZXMgdGhlIEFTVCB0byBwYXJzZSB0aGUgUHl0aG9uIGZpbGVzLiBUaGlzIGlzIHZlcnkgcmVsaWFibGUsIFwKLSAgICAgIGl0IGFsd2F5cyBydW5zLlwKLSAgICAqIE5vIG1vZHVsZSBpcyBsb2FkZWQuIExvYWRpbmcgbW9kdWxlcyB0byBmaWd1cmUgb3V0IGRlcGVuZGVuY2llcyBpcyBcCi0gICAgICBhbG1vc3QgYWx3YXlzIHByb2JsZW0sIGJlY2F1c2UgYSBsb3Qgb2YgY29kZWJhc2VzIHJ1biBpbml0aWFsaXphdGlvbiBcCi0gICAgICBjb2RlIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLCB3aGljaCBvZnRlbiByZXF1aXJlcyBhZGRpdGlvbmFsIHNldHVwLiBcCi0gICAgICBTbmFrZWZvb2QgaXMgZ3VhcmFudGVlZCBub3QgdG8gaGF2ZSB0aGlzIHByb2JsZW0gKGl0IGp1c3QgcnVucywgbm8gXAotICAgICAgbWF0dGVyIHdoYXQpLlwKLSAgICAqIEl0IHdvcmtzIG9uIGEgc2V0IG9mIGZpbGVzLCBpLmUuIHlvdSBkbyBub3QgaGF2ZSB0byBzcGVjaWZ5IGEgc2luZ2xlIFwKLSAgICAgIHNjcmlwdCwgeW91IGNhbiBzZWxlY3QgYSBkaXJlY3RvcnkgKHBhY2thZ2Ugb3IgZWxzZSkgb3IgYSBzZXQgb2YgZmlsZXMuXAotICAgICAgSXQgZmluZHMgYWxsIHRoZSBQeXRob24gZmlsZXMgcmVjdXJzaXZlbHkgYXV0b21hdGljYWxseS5cCi0gICAgKiBBdXRvbWF0aWMvbm8gY29uZmlndXJhdGlvbjogeW91ciBQWVRIT05QQVRIIGlzIGF1dG9tYXRpY2FsbHkgYWRqdXN0ZWQgXAotICAgICAgdG8gaW5jbHVkZSB0aGUgcmVxdWlyZWQgcGFja2FnZSByb290cy4gSXQgZmlndXJlcyBvdXQgdGhlIHBhdGhzIHRoYXQgXAotICAgICAgYXJlIHJlcXVpcmVkIGZyb20gdGhlIGZpbGVzL2RpcmVjdG9yaWVzIGdpdmVuIGFzIGlucHV0LiBZb3Ugc2hvdWxkIG5vdCBcCi0gICAgICBoYXZlIHRvIHNldHVwIEFOWVRISU5HLlwKLSAgICAqIEl0IGRvZXMgbm90IGhhdmUgdG8gYXV0b21hdGljYWxseSAnZm9sbG93JyBkZXBlbmRlbmNpZXMgYmV0d2VlbiBtb2R1bGVzLFwKLSAgICAgIGkuZS4gYnkgZGVmYXVsdCBpdCBvbmx5IGNvbnNpZGVycyB0aGUgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHlvdSBzcGVjaWZ5IFwKLSAgICAgIG9uIHRoZSBjb21tYW5kLWxpbmUgYW5kIHRoZWlyIGltbWVkaWF0ZSBkZXBlbmRlbmNpZXMuIEl0IGFsc28gaGFzIGFuIFwKLSAgICAgIG9wdGlvbiB0byBhdXRvbWF0aWNhbGx5IGluY2x1ZGUgb25seSB0aGUgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGUgXAotICAgICAgcGFja2FnZXMgb2YgdGhlIGZpbGVzIHlvdSBzcGVjaWZ5LlwKLSAgICAqIEl0IGZvbGxvd3MgdGhlIFVOSVggcGhpbG9zb3BoeSBvZiBzbWFsbCBwcm9ncmFtcyB0aGF0IGRvIG9uZSB0aGluZyB3ZWxsOlwKLSAgICAgIGl0IGNvbnNpc3RzIG9mIGEgZmV3IHNpbXBsZSBwcm9ncmFtcyB3aG9zZSBvdXRwdXRzIHlvdSBjb21iaW5lIHZpYSBcCi0gICAgICBwaXBlcy4gR3JhcGhpbmcgZGVwZW5kZW5jaWVzIGFsd2F5cyByZXF1aXJlcyB0aGUgdXNlciB0byBmaWx0ZXIgYW5kIFwKLSAgICAgIGNsdXN0ZXIgdGhlIGZpbGVuYW1lcywgc28gdGhpcyBpcyBhcHByb3ByaWF0ZS4gWW91IGNhbiBjb21iaW5lIGl0IHdpdGggXAotICAgICAgeW91ciBmYXZvdXJpdGUgdG9vbHMsIGdyZXAsIHNlZCwgZXRjLlwKLVwKLUEgcHJvYmxlbSB3aXRoIGRlcGVuZGVuY3kgdHJhY2tlcnMgdGhhdCBydW4gY29kZSBpcyB0aGF0IHRoZXkgYXJlIHVucmVsaWFibGUsIFwKLWR1ZSB0byB0aGUgZHluYW1pYyBuYXR1cmUgb2YgUHl0aG9uICh0aGUgcHJlc2VuY2Ugb2YgaW1wb3J0cyB3aXRoaW4gZnVuY3Rpb24gXAotY2FsbHMgYW5kIF9faW1wb3J0X18gaG9va3MgbWFrZXMgaXQgYWxtb3N0IGltcG9zc2libGUgdG8gYWx3YXlzIGRvIHRoZSByaWdodCBcCi10aGluZykuIFRoaXMgc2NyaXB0IGFpbXMgYXQgYmVpbmcgcmlnaHQgOTklIG9mIHRoZSB0aW1lLCBhbmQgd2UgdGhpbmsgdGhhdCBcCi1naXZlbiB0aGUgdHJhZGUtb2ZmcywgOTklIGlzIGdvb2QgZW5vdWdoIGZvciA5OSUgb2YgdGhlIHVzZXMuXAotIgotQVVUSE9SID0gIk1hcnRpbiBCbGFpcyA8YmxhaXNAZnVyaXVzLmNhPiIKLUhPTUVQQUdFID0gImh0dHA6Ly9mdXJpdXMuY2Evc25ha2Vmb29kIgotTElDRU5TRSA9ICJHUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1NmM4ODY2N2EzM2Q4OTA5YjBhYWJmMmFiNjkwM2JkZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyOTU3ODQ2NjgwMzIyNTRlNzM5MWNhOTliYTcwNjBlZGQzYWU0ZWNhMWEzMzBhYzExNjI3YjE4YWI1OTIzYjc3IgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSA9ICIgcHl0aG9uLWxvZ2dpbmcgcHl0aG9uLWNvbXBpbGVyIHB5dGhvbi1zaGVsbCIKLSMgdGhlIGFib3ZlIG1vZHVsZXMgZG8gbm90IGhhdmUgYSAtbmF0aXZlIGNvdW50ZXJwYXJ0Ci1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNuaW1weV8wLjguMTMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc25pbXB5XzAuOC4xMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg4NWE3Zi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc25pbXB5XzAuOC4xMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiSW50ZXJhY3RpdmUgU05NUCB0b29sIgotREVTQ1JJUFRJT04gPSAiU25pbXB5IGlzIGEgUHl0aG9uLWJhc2VkIHRvb2wgcHJvdmlkaW5nIGEgc2ltcGxlIGludGVyZmFjZSB0byBidWlsZCBTTk1QIHF1ZXJ5IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9zbmltcHkiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLQotREVQRU5EUyArPSAibGlic21pIHB5dGhvbi1jZmZpLW5hdGl2ZSBweXRob24tdmN2ZXJzaW9uZXItbmF0aXZlIgotCi1MSUNFTlNFID0gIklTQyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvbGljZW5zZS5yc3Q7bWQ1PTdjNTNhYjJkMTI0MDgyODYyNWMzZTA5M2QwNDlkNGY0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2M1N2FjYWMxMDIyNmRmNWJmNDNlMTBiOTI5OTQyZGYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOThiMTc5MDk3N2I0MzUzMzJjMDNhYjI2MDNmNjYyMWVlZWVlNjlhNTA0NTNhYzAxY2E1NWRjNzY5NmQwODUzNSIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLWNmZmkgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXB5Y3BhcnNlciBcCi0gICAgICAgICAgICAgICAgICBweXRob24tcHlzbm1wIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1zZXR1cHRvb2xzIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zb2NrZXRpby5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc29ja2V0aW8uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWU5OWY4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zb2NrZXRpby5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIlNvY2tldC5JTyBzZXJ2ZXIiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbWlndWVsZ3JpbmJlcmcvcHl0aG9uLXNvY2tldGlvLyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTQyZDBhOWU3Mjg5NzhmMGVlYjc1OWMzYmU5MTUzNmI4IgotCi1pbmhlcml0IHB5cGkKLQotUFlQSV9QQUNLQUdFID0gInB5dGhvbi1zb2NrZXRpbyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg2Y2Q0N2RkZGVhMTc4NWNlN2E2YzcyZjU1YzkzZmU3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUwNmIyY2Y3YTUyMGI0MGVhMGIzZjI1ZTEyNzJlZmY4ZGUxMzRkY2U2ZjQ3MWMxZjZiYzBkZThjOTBmZThjNTciCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiIKLVBBQ0tBR0VDT05GSUdbYXN5bmNpb19jbGllbnRdID0gIiwsLCR7UFlUSE9OX1BOfS1haW9odHRwICR7UFlUSE9OX1BOfS13ZWJzb2NrZXRzIgotUEFDS0FHRUNPTkZJR1tjbGllbnRdID0gIiwsLCR7UFlUSE9OX1BOfS1yZXF1ZXN0cyAke1BZVEhPTl9QTn0td2Vic29ja2V0LWNsaWVudCIKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tZW5naW5laW8gXAotICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKLSAgICAke1BZVEhPTl9QTn0tbWF0aCBcCi0gICAgJHtQWVRIT05fUE59LXBpY2tsZSBcCi0gICAgJHtQWVRIT05fUE59LWpzb24gXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotICAgICR7UFlUSE9OX1BOfS1zaXggXAotICAgICR7UFlUSE9OX1BOfS1hdHRycyBcCi0gICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNvY2tldGlvXzQuMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNvY2tldGlvXzQuMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjVhNmIzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zb2NrZXRpb180LjMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1zb2NrZXRpby5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zb3Vwc2lldmUuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNvdXBzaWV2ZS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjYjA0ZjQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNvdXBzaWV2ZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1TVU1NQVJZID0gIkNTUyBzZWxlY3RvciBsaWJyYXJ5IGZvciBweXRob24tYmVhdXRpZnVsc291cDQiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZmFjZWxlc3N1c2VyL3NvdXBzaWV2ZSIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLm1kO21kNT01YTZmZDNiMGMyNGZjNWEwNDFhM2QxYmJiMjJjODFiNSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQzZDhlYTIwYzU4NDk0NDQ2YWE2NWJhNWNjNjMyMGZlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYwNWY4OWFkNWZkYmZlZmUzMGNkYzI5MzMwMzY2NWVmZjJkMTg4ODY1ZDRkYmU0ZWI1MTBiYmExZWRmYmZjZTMiCi0KLWluaGVyaXQgcHlwaQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc291cHNpZXZlXzEuOS40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNvdXBzaWV2ZV8xLjkuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTVhNjczZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc291cHNpZXZlXzEuOS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXNvdXBzaWV2ZS5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1iYWNrcG9ydHMtZnVuY3Rvb2xzLWxydS1jYWNoZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcGFydHNfMC43LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3BhcnRzXzAuNy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTI1MzExLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcGFydHNfMC43LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIHJhcGlkIHNlcnZpY2UgcHJvdG90eXBpbmcgd2l0aCBtaW5pbWFsIGJvaWxlcnBsYXRlIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wYzE1NTQ2MzZhNTY0ZGEzYmFmMDM3YWM2NTJmYzgzMSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjZhYTg4MTU2NTJjNmY1ZTVlOGU1YjJhYzE4MTNkZDg3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIyNTcwN2MzNDkwNzlhN2M4ODgxNTVlN2ZkZmQ4Mzk0ZGYyZGE5YWNhOWM4ZWVlNGUyMDU1MjhjYjE2Yjc2NjIiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgICAgICAgICAgICAgIHB5dGhvbi1zdWJwcm9jZXNzIFwKLSAgICAgICAgICAgICAgIHB5dGhvbi1zaXggXAotICAgICAgICAgICAgICAgcHl0aG9uLWFyZ3BhcnNlIFwKLSAgICAgICAgICAgICAgIHB5dGhvbi1yZSBcCi0gICAgICAgICAgICAgICBweXRob24tc2hlbGwgXAotICAgICAgICAgICAgICAgcHl0aG9uLXRocmVhZGluZyBcCi0gICAgICAgICAgICAgICBweXRob24tbG9nZ2luZyBcCi0gICAgICAgICAgICAgICBweXRob24tdW5peGFkbWluIFwKLSAgICAgICAgICAgICAgIHB5dGhvbi1kaXN0dXRpbHMgXAotICAgICAgICAgICAgICAgcHl0aG9uLWRhZW1vbml6ZSBcCi0gICAgICAgICAgICAgICBweXRob24tZnV0dXJlcyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3BlYWtsYXRlci5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3BlYWtsYXRlci5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyNTM0ZTQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNwZWFrbGF0ZXIuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJNZWRpYSBhc3NldCBtYW5hZ2VtZW50IGZvciBQeXRob24sIHdpdGggZ2x1ZSBjb2RlIGZvciB2YXJpb3VzIGZyYW1ld29ya3MiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI4MTA3NzAwNzVhMjliZjQ0Yjk2NjA3NDQwZTdjODAxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZThkNWRiZTM2ZTUzZDVhMzVjZmYyMjdlNzk1ZThiYmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTlmZWEzMzZkMGVlZDM4YzFmMGJmMzE4MWVlMTIyMmQwZWY0NWYzYTlkZDM0ZWJlNjVlNmJmZmZkZDZhNjVhOSIKLQotUFlQSV9QQUNLQUdFID0gInNwZWFrbGF0ZXIiCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcGVha2xhdGVyXzEuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcGVha2xhdGVyXzEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZmZDU1NS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3BlYWtsYXRlcl8xLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1zcGVha2xhdGVyLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNwaWRldi5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3BpZGV2LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI5Mzc2My4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3BpZGV2LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciBMaW51eCBTUEkgYWNjZXNzIHRocm91Z2ggc3BpZGV2IgotREVTQ1JJUFRJT04gPSAiVGhpcyBwcm9qZWN0IGNvbnRhaW5zIGEgcHl0aG9uIG1vZHVsZSBmb3IgaW50ZXJmYWNpbmcgd2l0aCBTUElcCi1kZXZpY2VzIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIHNwaWRldiBsaW51eCBrZXJuZWwgZHJpdmVyLlwKLVRoaXMgaXMgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBjb2RlIG9yaWdpbmFsbHkgZm91bmRcCi1baGVyZV0oaHR0cDovL2Vsay5pbmZvcm1hdGlrLmZoLWF1Z3NidXJnLmRlL2RhL2RhLTQ5L3RyZWVzL3B5YXA3ay9sYW5nL3B5LXNwaSlcCi1BbGwgY29kZSBpcyBHUEx2MiBsaWNlbnNlZCB1bmxlc3MgZXhwbGljaXRseSBzdGF0ZWQgb3RoZXJ3aXNlLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2RvY2VtZS9weS1zcGlkZXYiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLm1kO21kNT01NGJkYjkwMjJlYmI3NWFiNjgzOTljZGFhYjk3ZGE2MCIKLVNSQ05BTUUgPSAic3BpZGV2IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjYwMTY3NmYxYmI0OGI5YWEzYjM4OTdmOTUyMTYzNjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDlkMmI1MTIyZjBkZDc5OTEwNzEzYTExZjlhMDAyMGY3MTUzNzIyNGJmODI5OTE2ZGVmNGZmZmMwZWE1OTQ1NiIKLQotCi1pbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcWxhbGNoZW15LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcWxhbGNoZW15LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc2M2EzOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3FsYWxjaGVteS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJQeXRob24gU1FMIHRvb2xraXQgYW5kIE9iamVjdCBSZWxhdGlvbmFsIE1hcHBlciB0aGF0IGdpdmVzIFwKLWFwcGxpY2F0aW9uIGRldmVsb3BlcnMgdGhlIGZ1bGwgcG93ZXIgYW5kIGZsZXhpYmlsaXR5IG9mIFNRTCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuc3FsYWxjaGVteS5vcmcvIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZjVlYjAzMGM0ODk3NWQ1Mjk0YmFmMGY1ZDAxYWYxYyIKLQotUFlQSV9QQUNLQUdFID0gIlNRTEFsY2hlbXkiCi1pbmhlcml0IHB5cGkKLQotU1JDX1VSSVttZDVzdW1dID0gIjAyYTQ2YmU4NDE5MDNiNjBjNTJhODMzNDJkM2NlZDhlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJmYjhmNDY0YTUwMDBiNTY3YWMxZDM1MGI5MDkwY2YwODExODBlYzFhYjRhYTg3ZTdiY2ExMmRhYjI1MzIwZWMiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1qc29uIFwKLSAgICAke1BZVEhPTl9QTn0tcGlja2xlIFwKLSAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCi0gICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCi0gICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNxbGFsY2hlbXlfMS4zLjEyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNxbGFsY2hlbXlfMS4zLjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2M4ZmVjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcWxhbGNoZW15XzEuMy4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1zcWxhbGNoZW15LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNxbHBhcnNlLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcWxwYXJzZS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3MWY4MTUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNxbHBhcnNlLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLURFU0NSSVBUSU9OID0gIk5vbi12YWxpZGF0aW5nIFNRTCBwYXJzZXIgbW9kdWxlIgotSE9NRVBBR0UgPSAiaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NxbHBhcnNlIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJiMTM2ZjU3M2Y1Mzg2MDAxZWEzYjdiOTAxNjIyMmZjIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmNlMzQxODFkNmI3YjIzNGM5ZjNjMGVjZDFmZmI5M2UiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2MzZGNhMjljMDIyNzQ0ZTk1YjU0N2U4NjdjZWU4OWY0ZmNlNDM3M2YzNTQ5Y2NkODc5N2Q4ZWI1MmNkYjg3MyIKLQotZXhwb3J0IEJVSUxEX1NZUwotZXhwb3J0IEhPU1RfU1lTCi0KLWluaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNxbHBhcnNlXzAuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNxbHBhcnNlXzAuMy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjc3NzNmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcWxwYXJzZV8wLjMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1zcWxwYXJzZS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zdGF0aXN0aWNzXzEuMC4zLjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3RhdGlzdGljc18xLjAuMy41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTNiODIyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zdGF0aXN0aWNzXzEuMC4zLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gIkEgcG9ydCBvZiBQeXRob24gMy40IHN0YXRpc3RpY3MgbW9kdWxlIHRvIFB5dGhvbiAyLngiCi1ERVNDUklQVElPTiA9ICIgXAotQSBwb3J0IG9mIFB5dGhvbiAzLjQgc3RhdGlzdGljcyBtb2R1bGUgdG8gUHl0aG9uIDIuKiwgaW5pdGlhbGx5IGRvbmUgXAotdGhyb3VnaCB0aGUgM3RvMiB0b29sLiBUaGlzIG1vZHVsZSBwcm92aWRlcyBmdW5jdGlvbnMgZm9yIGNhbGN1bGF0aW5nIFwKLW1hdGhlbWF0aWNhbCBzdGF0aXN0aWNzIG9mIG51bWVyaWMgKFJlYWwtdmFsdWVkKSBkYXRhLiBcCi0iCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zdGF0aXN0aWNzL19faW5pdF9fLnB5O2JlZ2lubGluZT02O2VuZGxpbmU9MTY7bWQ1PWI3Njk2MGVlNzc3YTE1MjlmNjBkYjQ3YWRhMmE4ZTZlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDZkOTdmM2ExYTdiMzE5MmNmZjk5ZTBmMmI1OTU2YzMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmRjMzc5YjgwYjA3YmYyZGRkNTQ4OGNhZDA2YjJiOTUzMWRhNGRkMzFlZGIwNGRjOWVjMGRjMjI2NDg2YzEzOCIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUFlQSV9QQUNLQUdFID0gInN0YXRpc3RpY3MiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3RldmVkb3JlLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zdGV2ZWRvcmUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWE5ZmI0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zdGV2ZWRvcmUuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiTWFuYWdlIGR5bmFtaWMgcGx1Z2lucyBmb3IgUHl0aG9uIGFwcGxpY2F0aW9ucyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9kcmVhbWhvc3Qvc3RldmVkb3JlIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MmZhMmJmMDI1MWM5NmI1NDM3NjVjNWNlMTNmMzdjOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMDczOWY5NzM5YTY4MWM3YTFmZGE3NmExMDJiNjUyOTVlOTZhMTQ0Y2NkYjU1MmYyYWUwM2M1ZjBhYmU4YTE0IgotCi1pbmhlcml0IHB5cGkKLQotREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXBici1uYXRpdmUiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tcGJyICR7UFlUSE9OX1BOfS1zaXgiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN0ZXZlZG9yZV8xLjMxLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3RldmVkb3JlXzEuMzEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBhMDBjMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3RldmVkb3JlXzEuMzEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1zdGV2ZWRvcmUuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3RyaWN0LXJmYzMzMzkuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN0cmljdC1yZmMzMzM5LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNhOWVhOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3RyaWN0LXJmYzMzMzkuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1TVU1NQVJZID0gIlN0cmljdCwgc2ltcGxlLCBsaWdodHdlaWdodCBSRkMzMzM5IGZ1bmN0aW9uLnMiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OGYwZTJjZDQwZTA1MTg5ZWM4MTIzMmRhODRiZDZlMWEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZDliNjM1YjRkZjg4NWJjMzdiYzExODlkNjZjOWFiYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1Y2FkMTdiZWRmYzNhZjU3YjM5OWRiMGZlZDMyNzcxZjE4ZmM1NGJiZDkxN2U4NTU0NjA4ODYwN2FjNWUxMjc3IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3RyaWN0LXJmYzMzMzlfMC43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN0cmljdC1yZmMzMzM5XzAuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjAxZWE5OS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3RyaWN0LXJmYzMzMzlfMC43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tc3RyaWN0LXJmYzMzMzkuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3VicHJvY2VzczMyXzMuMi43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN1YnByb2Nlc3MzMl8zLjIuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQzNzA2OS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3VicHJvY2VzczMyXzMuMi43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGJhY2twb3J0IG9mIHRoZSBzdWJwcm9jZXNzIG1vZHVsZSBmcm9tIFB5dGhvbiAzLjIgZm9yIHVzZSBvbiAyLngiCi1ERVNDUklQVElPTiA9ICJUaGlzIGlzIGEgYmFja3BvcnQgb2YgdGhlIHN1YnByb2Nlc3Mgc3RhbmRhcmQgbGlicmFyeSBtb2R1bGUgXAotZnJvbSBQeXRob24gMy4yIC0gMy41IGZvciB1c2Ugb24gUHl0aG9uIDIuIEl0IGluY2x1ZGVzIGJ1Z2ZpeGVzIGFuZCBzb21lIG5ldyBcCi1mZWF0dXJlcy4gIE9uIFBPU0lYIHN5c3RlbXMgaXQgaXMgZ3VhcmFudGVlZCB0byBiZSByZWxpYWJsZSB3aGVuIHVzZWQgaW4gXAotdGhyZWFkZWQgYXBwbGljYXRpb25zLiBJdCBpbmNsdWRlcyB0aW1lb3V0IHN1cHBvcnQgZnJvbSBQeXRob24gMy4zIGFuZCB0aGUgXAotcnVuKCkgQVBJIGZyb20gMy41IGJ1dCBvdGhlcndpc2UgbWF0Y2hlcyAzLjIncyBBUEkuIgotTElDRU5TRSA9ICJQeXRob24tMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDNlNjJiYWE4ZmI5NmIxMWE1OWQzZjJjZDMzNWQ1YzAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4MjRjODAxZTQ3OWQzZTkxNjg3OWFhZTNlOWMxNWUxNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZTQ1MGE0YTRjNTNiZjE5N2FkNjQwMmM1NjRiOWY3YTUzNTM5Mzg1OTE4ZWY4ZjEyYmRmNDMwYTYxMDM2NTkwIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3VwZXJ2aXNvci5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3VwZXJ2aXNvci5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhYzE4YmIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN1cGVydmlzb3IuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJTdXBlcnZpc29yOiBBIFByb2Nlc3MgQ29udHJvbCBTeXN0ZW0iCi1ERVNDUklQVElPTiA9ICJcCi1TdXBlcnZpc29yIGlzIGEgY2xpZW50L3NlcnZlciBzeXN0ZW0gdGhhdCBhbGxvd3MgaXRzIHVzZXJzIFwKLXRvIG1vbml0b3JhbmQgY29udHJvbCBhIG51bWJlciBvZiBwcm9jZXNzZXMgb24gVU5JWC1saWtlIFwKLW9wZXJhdGluZyBzeXN0ZW1zLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9TdXBlcnZpc29yL3N1cGVydmlzb3IiCi1MSUNFTlNFID0gIkJTRC00LUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0VTLnR4dDttZDU9NWI0ZTNhMjE3MmJiYTRjNDdjZGVkNTg4NWU3ZTUwN2UiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlY2VhOTRlZWRjNzBiYTUxMjdmZGViMDY2NWJjY2EwZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyZGM4NmZlMDQ3NmU5NDVlNjE0ODNkNjE0Y2ViMmNmNGY5M2I5NTI4MmViMjQzYmRmNzkyNjIxOTk0MzYwMzgzIgotCi1QWVBJX1BBQ0tBR0UgPSAic3VwZXJ2aXNvciIKLWluaGVyaXQgcHlwaSBzeXN0ZW1kCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgJHtQWVRIT05fUE59LW1lbGQzIFwKLSIKLQotU1JDX1VSSSArPSAiZmlsZTovL3N1cGVydmlzb3JkLmNvbmYgXAotCSAgICBmaWxlOi8vc3VwZXJ2aXNvci5zZXJ2aWNlIFwKLQkiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAic3VwZXJ2aXNvci5zZXJ2aWNlIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N1cGVydmlzb3IKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Ci0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zdXBlcnZpc29yZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N1cGVydmlzb3IKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zdXBlcnZpc29yLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zeXN0ZW1kXzIzNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zeXN0ZW1kXzIzNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBmMjkwMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3lzdGVtZF8yMzQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXN5c3RlbWQuaW5jCi1pbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10ZXJtLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10ZXJtLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGEyZGYwZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdGVybS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLVNVTU1BUlkgPSAiQW4gZW5oYW5jZWQgdmVyc2lvbiBvZiB0aGUgdHR5IG1vZHVsZSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJQeXRob24tMiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQ5MGUyZDI4MGE0ODM2YzYwNzUyMDM4M2QxNjM5YmUxIgotCi1QWVBJX1BBQ0tBR0VfRVhUID0gInppcCIKLQotU1JDX1VSSVttZDVzdW1dID0gImFiMGMxYmNlMzgxYjExMDlmZTQzOTBjNTZhYTA2MjM3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkY2M4YzIxMmUwNDcwMDc4NGU1YzFjNWI2MDE5MTZiYTA1NDlhZTYwMjViMzViNjRmZDYyMTQ0ODk5ZTcxODAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdGlueXJlY29yZC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdGlueXJlY29yZC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4MWRjMDcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRpbnlyZWNvcmQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJ0cmFuc2FjdGlvbiBzdXBwb3J0IGZvciBUaW55REIiCi1ERVNDUklQVElPTiA9ICJcCi1UaW55cmVjb3JkIGlzIGEgbGlicmFyeSB3aGljaCBpbXBsZW1lbnRzIGF0b21pYyB0cmFuc2FjdGlvbiBcCi1zdXBwb3J0IGZvciB0aGUgVGlueURCIE5vU1FMIGRhdGFiYXNlLiBJdCB1c2VzIGEgcmVjb3JkLWZpcnN0IFwKLXRoZW4gZXhlY3V0ZSBhcmNoaXRlY3R1cmUgd2hpY2ggYWxsb3dzIHVzIHRvIG1pbmltaXplIHRoZSB0aW1lIFwKLXRoYXQgd2UgYXJlIHdpdGhpbiBhIHRocmVhZCBsb2NrLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ldWdlbmUtZWVvL3RpbnlyZWNvcmQiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9MzFjMWRjMTFiNGFlODM1NDY1MzhkZTRjMTZiY2VhYmMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlNDdkY2ZlMjk5Njg2Y2QzZmE3ZmZhYTdjYjJlZThiMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiYzdlNmE4ZTc4NjAwZGYyMzRkN2E4NWMyZjVkNTg0MTMwZjJjNmZmZDdjZDMxMGY5ZDNhMWQ5NzZkMzM3M2M4IgotCi1QWVBJX1BBQ0tBR0UgPSAidGlueXJlY29yZCIKLWluaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvbWwuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvbWwuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2IzZGZjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10b21sLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIExpYnJhcnkgZm9yIFRvbSdzIE9idmlvdXMsIE1pbmltYWwgTGFuZ3VhZ2UiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vdWlyaS90b21sIgotTElDRU5TRSA9ICJNSVQiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTZkNjAxMmVlYTQ3NzExN2FiZjUxYzMxMjYyYTE1MmY4IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjNmZmZiZTJkNjMyODY1ZWMyOWNkNjliZmRmMzY2ODIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjI5ZjgxYzU3NzkxYTQxZDY1ZTM5OWZjMDZiZjA4NDhiYWI1NTBhOWRmZDVlZDY2ZGYxOGNlNWYwNWU3M2Q1YyIKLQotaW5oZXJpdCBweXBpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdG9tbF8wLjEwLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdG9tbF8wLjEwLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjNGFjY2UuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvbWxfMC4xMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXRvbWwuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdG9ybmFkby1yZWRpc18yLjQuMTguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdG9ybmFkby1yZWRpc18yLjQuMTguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2YTIwYTUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvcm5hZG8tcmVkaXNfMi40LjE4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSAgPSAiVG9ybmFkby1SZWRpcyBpcyBhbiBhc3luY3Jvbm91cyBSZWRpcyBjbGllbnQgZm9yIHRoZSBUb3JuYWRvIFdlYiBTZXJ2ZXIiCi1ERVNDUklQVElPTiA9ICJUb3JuYWRvLVJlZGlzIGlzIGEgUmVkaXMgY2xpZW50IHRoYXQgdXNlcyBUb3JuYWRvJ3MgbmF0aXZlICd0b3JuYWRvLWdlbicgaW50ZXJmYWNlLiBcCi1JdCBjYW4gYmUgdXNlZCBhbG9uZ3NpZGUgcmVkaXMtcHkgaW4gVG9ybmFkbyBhcHBsaWNhdGlvbnM6IFwKLXRvcm5hZG8tcmVkaXMgdG8gc3Vic2NyaWJlIHRvIFB1Yi9TdWIgbm90aWZpY2F0aW9ucyBhbmQgZm9yIGJsb2NraW5nIGNvbW1hbmRzIChzdWNoIGFzIEJMUE9QLCBCUlBPUCwgQlJQT1BMUFVTSCk7IFwKLXJlZGlzLXB5IGZvciBvdGhlciBjb21tYW5kcy4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGVwb3JvL3Rvcm5hZG8tcmVkaXMiCi0KLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9Y2EzMDdlOGYzN2I1ZmE3ZjhkYmJlYzAzM2Y3ZGI3ZGUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxYzdlYzBmNjQ1ZDE1NDAwODcxMTQxYzExNDllNjkzNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZmQzYjMyNDE1ODI5MWFkNWZiN2Y1ZjhkYzJlODc2M2IyODk1NTU2YmQyYTQ0ZjJkZDcyMWI3MDNjNjY5MDQ2IgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLXRvcm5hZG8iCi0KLVJERVBFTkRTXyR7UE59LXRlc3QgKz0gIiR7UE59IHB5dGhvbi10b3JuYWRvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvcm5hZG9fNi4wLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdG9ybmFkb182LjAuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkzYTRkYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdG9ybmFkb182LjAuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXRvcm5hZG8uaW5jCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tYmFja3BvcnRzLWFiYyBcCi0gICAgJHtQWVRIT05fUE59LWJhY2twb3J0cy1zc2wgXAotICAgICR7UFlUSE9OX1BOfS1zaW5nbGVkaXNwYXRjaCBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRxZG0uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRxZG0uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTA1MzRmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10cWRtLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiRmFzdCwgRXh0ZW5zaWJsZSBQcm9ncmVzcyBNZXRlciIKLUhPTUVQQUdFID0gImh0dHA6Ly90cWRtLmdpdGh1Yi5pby8iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLQotTElDRU5TRSA9ICJNSVQgJiBNUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9MDU0ZWY3MTA1Y2JhMDUwMDE3ZDEzNjgyNjJhMTYyM2MiCi0KLWluaGVyaXQgcHlwaQotCi1TUkNfVVJJW21kNXN1bV0gPSAiYWEzZDVmZDE3M2M5ZmVhNzQwOGNhZDE0YzBlNzNkNWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDc4OWNjYmI2ZmMxMjJiNWE2YTg1ZDUxMmU0ZTQxZmM1YWNhZDc3MjE2NTMzYTZmMmI4Y2U1MWUwZjI2NWMyMyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRxZG1fNC40MS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRxZG1fNC40MS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzgxMDA5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10cWRtXzQuNDEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi10cWRtLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRyYWNlYmFjazJfMS40LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHJhY2ViYWNrMl8xLjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk2Yzg3NS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHJhY2ViYWNrMl8xLjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBiYWNrcG9ydCBvZiB0cmFjZWJhY2sgdG8gb2xkZXIgc3VwcG9ydGVkIFB5dGhvbnMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vdGVzdGluZy1jYWJhbC90cmFjZWJhY2syIgotTElDRU5TRSA9ICJQeXRob24tMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTMxO2VuZGxpbmU9MzE7bWQ1PTM2OGRkYzg1ODg0MzFjMTgwYWU3YzMzZjRmYjU3NTE5IgotCi1ERVBFTkRTID0gIiR7UFlUSE9OX1BOfS1wYnItbmF0aXZlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWU5NzIzZjRkNzBiZmM2MzA4ZmE5OTJkZDE5M2M0MDAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDVhY2M2N2EwOTk4MGMyZWNmZWRkMzQyM2Y3YWUwMTA0ODM5ZWNjYjU1ZmM2NDU3NzNlMWNhYTA5NTFjMzAzMCIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotQ0xFQU5CUk9LRU4gPSAiMSIKLQotUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LWxpbmVjYWNoZTIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpbmUuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aW5lLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmJjNzc4ZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpbmUuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiU2l4IGlzIGEgUHl0aG9uIDIgYW5kIDMgY29tcGF0aWJpbGl0eSBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2JlbmphbWlucC9zaXgiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5yc3Q7bWQ1PTM5NjNiZGNlZTc1NjJiZWRhZTFlZmZhMDllNzU0MmIyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmZiNGRhMGM3ZDgxZGRmZDQ4ZjYxOWI4Y2FhMTQ5M2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDZjMjljOTMzZWNmYzc0ZTliMWQ5ZmExM2FhMWY4N2M1ZDU3NzBlMTE5ZjVhNGNlMDMyMDkyZjBmZjViMTRkYyIKLQotaW5oZXJpdCBweXBpCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWQuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWQuaW5jCmluZGV4IGQwMDVhMmEuLjc1MzdiYWYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2lzdGVkLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpc3RlZC5pbmMKQEAgLTYxLDcgKzYxLDE4IEBACiAgICAgJHtQTn0tenNoIFwKICIKIAotUkRFUEVORFNfJHtQTn0tY29yZSA9ICIke1BZVEhPTl9QTn0tY29yZSAke1BZVEhPTl9QTn0tem9wZWludGVyZmFjZSAke1BZVEhPTl9QTn0taW5jcmVtZW50YWwgJHtQWVRIT05fUE59LWNvbnN0YW50bHkgJHtQWVRIT05fUE59LWh5cGVybGluayAke1BZVEhPTl9QTn0tYXV0b21hdCAke1BZVEhPTl9QTn0tcHlzZXJpYWwiCitSREVQRU5EU18ke1BOfS1jb3JlID0gIiR7UFlUSE9OX1BOfS1hcHBkaXJzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWF1dG9tYXQgXAorICAgICAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tY29uc3RhbnRseSBcCisgICAgICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1jb3JlIFwgCisgICAgICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1kZWJ1Z2dlciBcCisgICAgICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1oeXBlcmxpbmsgXAorICAgICAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0taW5jcmVtZW50YWwgXAorICAgICAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tcHloYW1jcmVzdCBcCisgICAgICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1weXNlcmlhbCBcCisgICAgICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS11bml4YWRtaW4gXAorICAgICAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tem9wZWludGVyZmFjZSBcCisiCiBSREVQRU5EU18ke1BOfS10ZXN0ID0gIiR7UE59IgogUkRFUEVORFNfJHtQTn0tY29uY2ggPSAiJHtQTn0tY29yZSAke1BOfS1wcm90b2NvbHMgJHtQWVRIT05fUE59LWJjcnlwdCAke1BZVEhPTl9QTn0tY3J5cHRvZ3JhcGh5ICR7UFlUSE9OX1BOfS1weWFzbjEgJHtQWVRIT05fUE59LXBpY2tsZSIKIFJERVBFTkRTXyR7UE59LW1haWwgPSAiJHtQTn0tY29yZSAke1BOfS1wcm90b2NvbHMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpc3RlZF8xOS4xMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWRfMTkuMTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTkwM2RiMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpc3RlZF8xOS4xMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tdHdpc3RlZC5pbmMKLQotUkRFUEVORFNfJHtQTn0tY29yZSArPSAiJHtQWVRIT05fUE59LWNvbnRleHRsaWIiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UE59LW5ld3MgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXR0ZXIuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXR0ZXIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzNmNjUyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2l0dGVyLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiVHdpdHRlciBmb3IgUHl0aG9uIgotREVTQ1JJUFRJT04gPSAiUHl0aG9uIG1vZHVsZSB0byBzdXBwb3J0IHR3aXR0ZXIgQVBJIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT04ZjcwMmI0ODlhY2I2ODYzY2VjOGIyNjFhNTU5MzFkOCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjhhZWZmMjc4YjdjZWZjZDM4NGM2NTkyOWJjOTIxZTJjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhhYmQ4MjhiYTUxYTg1YTJiNWJiNzM3MzcxNWQ2ZDNiYjMyZDE4YWM2MjRlM2E0ZGIwMmU0ZWY4YWI0ODMxNmIiCi0KLVBZUElfUEFDS0FHRSA9ICJ0d2VlcHkiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgICAgICR7UFlUSE9OX1BOfS1waXAgXAotICAgICAgICAke1BZVEhPTl9QTn0tcHlzb2NrcyBcCi0gICAgICAgICR7UFlUSE9OX1BOfS1yZXF1ZXN0cyBcCi0gICAgICAgICR7UFlUSE9OX1BOfS1zaXggXAotICAgICAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpdHRlcl8zLjguMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2l0dGVyXzMuOC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTI4YjA4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2l0dGVyXzMuOC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi10d2l0dGVyLmluYwotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3b2Zpc2guaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3b2Zpc2guaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWFiMjg1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d29maXNoLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiQmluZGluZ3MgZm9yIHRoZSBUd29maXNoIGltcGxlbWVudGF0aW9uIGJ5IE5pZWxzIEZlcmd1c29uIgotREVTQ1JJUFRJT04gPSAiQmluZGluZ3MgZm9yIHRoZSBUd29maXNoIGltcGxlbWVudGF0aW9uIGJ5IE5pZWxzIEZlcmd1c29uXAotIGxpYnR3b2Zpc2gtZGV2LiIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2tleWJhc2UvcHl0aG9uLXR3b2Zpc2giCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTMzYTYzYWJmNmQ3NTY3YjE2ODlkOGNlNjlmMDBlNDNiIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDdkMjJmMTZkYzRmZmEwZTNhZTIyMDA2NTQwMzNhYmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjA5ZDhiYjUwZDMzYjIzZmYzNGNhZmIxZjkyMDlmODU4Zjc1MjkzNWM2YTVjOTAxZWZiOTJhNDFhY2I4MzBmYSIKLQotaW5oZXJpdCBweXBpCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d29maXNoXzAuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3b2Zpc2hfMC4zLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1YjAyMTUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3b2Zpc2hfMC4zLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXR3b2Zpc2guaW5jCi1pbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10eXBpbmcuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR5cGluZy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiOGVlODEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR5cGluZy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLVNVTU1BUlkgPSAiU2ltcGxlIFB5dGhvbiBtb2R1bGUgZGVmaW5lZCBieSBQRVAgNDg0LiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vdHlwaW5nIgotTElDRU5TRSA9ICJQU0YiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02NGZjMmIzMGI2N2QwYTg0MjNjMjUwZTAzODZlZDcyZiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjBhMWViZDRhZjY1YjQ3NjllMzM0NTkwMDRlYjIwMzQ1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkxZGZlNmYzZjcwNmVlOGNjMzJkMzhlZGJiZjMwNGU5Yjc1ODNmYjM3MTA4ZmVmMzgyMjk2MTdmOGIzZWJhMjMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10eXBpbmdfMy43LjQuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10eXBpbmdfMy43LjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDRjZTA2My4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHlwaW5nXzMuNy40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi10eXBpbmcuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHpsb2NhbC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHpsb2NhbC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlNDIzZDIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR6bG9jYWwuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgdG8gcmV0dXJuIHR6aW5mbyB3aXRoIHRoZSBsb2NhbCB0aW1lem9uZSBpbmZvcm1hdGlvbiIKLUhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC90emxvY2FsLyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTU3ZTBiZDYxNjQzZDgxZDA1NjgzY2RjZTY1YjExZDEwIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjE0MjYyY2VjY2ExNmVjOTIyMGNhOGRmZjJjYTdjNWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTQ5YjlkZDViYTRiZTE3MTkwYTgwYzAyNjgxNjdkN2U2YzkyYzYyYjMwMDI2Y2Y5NzY0Y2FmM2UzMDhlNTU5MCIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR6bG9jYWxfMi4wLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHpsb2NhbF8yLjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjc5ODBkZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHpsb2NhbF8yLjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXR6bG9jYWwuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdWpzb24uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVqc29uLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE4ZGRmNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdWpzb24uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSAgPSAiVWx0cmEgZmFzdCBKU09OIGVuY29kZXIgYW5kIGRlY29kZXIgZm9yIFB5dGhvbiIKLURFU0NSSVBUSU9OID0gIlVsdHJhSlNPTiBpcyBhbiB1bHRyYSBmYXN0IEpTT04gZW5jb2RlciBhbmQgZGVjb2RlciB3cml0dGVuIGluIHB1cmUgQyB3aXRoIGJpbmRpbmdzIGZvciBQeXRob24gMi41KyBhbmQgMy4iCi0KLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTg7ZW5kbGluZT04O21kNT04OGRmOGU3OGI5ZWRmZDc0NDk1Mzg2MjE3OWYyZDE0ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQyZjc3YjBjY2U2ODZkZmE0ZGEyZTY4NDgwYjFkZDI0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY2NjA3M2U1NTA2ZTkxZDIwNGFiMGM2MTRhMTQ4ZDVhYTkzOGJkYmYxMDQ3NTFiZTY2ZjhhZDdhMjIyZjVmODYiCi0KLWluaGVyaXQgcHlwaQotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCi0gICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAotICAgICIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVqc29uXzEuMzUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdWpzb25fMS4zNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNjNmFlNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdWpzb25fMS4zNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi11anNvbi5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11bmlkaWZmLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11bmlkaWZmLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmMxMjA2Mi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdW5pZGlmZi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1TVU1NQVJZID0gIlVuaWZpZWQgZGlmZiBwYXJzaW5nL21ldGFkYXRhIGV4dHJhY3Rpb24gbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL21hdGlhc2IvcHl0aG9uLXVuaWRpZmYiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTRjNDM0YjA4ZWY0MmZlYTIzNWJiMDE5YjVlNWE5N2IzIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDdmNjY5ZDcyNzM1NDFmZWM0NWU0Y2MwZmJhOGQ4ZTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWM5YWI1ZmI5NmI2OTg4YjRjZDVkZWY2YjI3NTQ5MjQ0MmMwNGE1NzA5MDBkMzNhYTYzNzMxMDU3ODAwMjViYyIKLQotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1jb2RlY3MgXAotICAgICR7UFlUSE9OX1BOfS1pbyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdW5pZGlmZl8wLjUuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11bmlkaWZmXzAuNS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZGIzZDI3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11bmlkaWZmXzAuNS41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi11bmlkaWZmLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdXJsbGliMy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdXJsbGliMy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3ZWRjMDMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVybGxpYjMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gSFRUUCBsaWJyYXJ5IHdpdGggdGhyZWFkLXNhZmUgY29ubmVjdGlvbiBwb29saW5nLCBmaWxlIHBvc3Qgc3VwcG9ydCwgc2FuaXR5IGZyaWVuZGx5LCBhbmQgbW9yZSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zaGF6b3cvdXJsbGliMyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTY1NzE1YzJlYjk2MTMxM2Q3MWIyOTdkZDVhMDRmODVlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODVlMWUzOTI1ZjhjMTA5NTE3MmJmZjM0M2YzMzEyZWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjNjNWZkNTE3NDdkNDUwZDRkY2Y2ZjkyM2M4MWY3OGY4MTFhYWI4MjA1ZmRhNjRiMGFiYTM0YTRlNDhiMDc0NSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tY2VydGlmaSBcCi0gICAgJHtQWVRIT05fUE59LWNyeXB0b2dyYXBoeSBcCi0gICAgJHtQWVRIT05fUE59LWVtYWlsIFwKLSAgICAke1BZVEhPTl9QTn0taWRuYSBcCi0gICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCi0gICAgJHtQWVRIT05fUE59LXB5b3BlbnNzbCBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0iCi0KLUNWRV9QUk9EVUNUID0gInVybGxpYjMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11cmxsaWIzXzEuMjUuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11cmxsaWIzXzEuMjUuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM4MWYxZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdXJsbGliM18xLjI1LjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi11cmxsaWIzLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZjdmVyc2lvbmVyXzIuMTYuMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZjdmVyc2lvbmVyXzIuMTYuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmNjNGFjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi12Y3ZlcnNpb25lcl8yLjE2LjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIHZjdmVyc2lvbmVyLCBhdXRvbWFnaWNhbGx5IHVwZGF0ZSB0aGUgcHJvamVjdCdzIHZlcnNpb24iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vaGFibmFiaXQvdmN2ZXJzaW9uZXIiCi0KLUxJQ0VOU0UgPSAiSVNDIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTgyN2E3YTkxYThkMjBkM2M2NjZiNjY1Y2Q5NmRiOGUzIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYWFiNmVmNWUwY2Y4NjE0YTFiMTE0MGVkNWI3ZjEwN2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGFlNjBjMTdhNDc5NzgxZjQ0YTQwMTA3MDE4MzNmMTgyOTE0MGIxZWVjY2QyNTg3NjJhNzQ5NzRhYTA2ZTE5YiIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCi0gICAgIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdmVyc2lvbnRvb2xzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi12ZXJzaW9udG9vbHMuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGU2OTZmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi12ZXJzaW9udG9vbHMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotU1VNTUFSWSA9ICJTbWFydCByZXBsYWNlbWVudCBmb3IgcGxhaW4gdHVwbGUgdXNlZCBpbiBfX3ZlcnNpb25fXyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9sYXVuY2hwYWQubmV0L3ZlcnNpb250b29scyIKLUxJQ0VOU0UgPSAiTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc2V0dXAucHk7YmVnaW5saW5lPTM7ZW5kbGluZT0yMDttZDU9MDIxOTM3MjFhMzhmZDhhMDVhNGRkZWI3ZGY4ZTI5NGQiCi0KLWluaGVyaXQgcHlwaQotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjAyYjdkYjhlZWEzMGRkMjlhMWQ0NTE5OTdhZGYyNTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTk2OTMzMjg4N2ExOGE5Yzk4YjBkZjBlYTRkNGNhNzU5NzJmMjRjYTk0ZjA2ZmI4N2Q1OTEzNzdlODM0MTRmNiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi12ZXJzaW9udG9vbHNfMS45LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdmVyc2lvbnRvb2xzXzEuOS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmZlODJlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi12ZXJzaW9udG9vbHNfMS45LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tdmVyc2lvbnRvb2xzLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZpc2l0b3IuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZpc2l0b3IuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzIyODhjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi12aXNpdG9yLmluYworKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHRpbnkgcHl0aG9uaWMgdmlzaXRvciBpbXBsZW1lbnRhdGlvbi4iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ODIyNzE4MDEyNjc5N2EwMTQ4Zjk0ZjQ4M2YzZTE0ODkiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5NGEwMjRlZDBlYzFiMDJiNDQ5N2MxNTI2N2QzMTljYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYzczNzkwM2IyYjY4NjRlYmM2MTY3ZWVmN2NmM2I5OTcxMjZmMWFhOTRiZGY1OTBmOTBmMTQzNmQyM2U0ODBhIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZpc2l0b3JfMC4xLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdmlzaXRvcl8wLjEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWVlMjVhNS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdmlzaXRvcl8wLjEuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXZpc2l0b3IuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdm9iamVjdF8wLjkuNi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZvYmplY3RfMC45LjYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDMxZjJmNS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdm9iamVjdF8wLjkuNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gcGFja2FnZSBmb3IgcGFyc2luZyBhbmQgZ2VuZXJhdGluZyB2Q2FyZCBhbmQgdkNhbGVuZGFyIGZpbGVzIgotSE9NRVBBR0UgPSAiaHR0cDovL3ZvYmplY3Quc2t5aG91c2Vjb25zdWx0aW5nLmNvbS8iCi0KLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UtMi4wLnR4dDttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwNjM1N2U5NmE4NGQ1NWRlMmE3MWIzNmQzOWY2ODUzZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NjUxMmFlYzc0YjkwYWJiNzFmNmI1Mzg5OGRkN2ZlNDczMDBjYzk0MDEwNGM0Zjc5MTQ4ZjA2NzFmNzkwMTAxIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1kYXRldXRpbCBcCi0gICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAotICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13YWl0cmVzcy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2FpdHJlc3MuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzI4OGQ1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13YWl0cmVzcy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1TVU1NQVJZID0gIkEgV1NHSSBzZXJ2ZXIgZm9yIFB5dGhvbiIKLURFU0NSSVBUSU9OID0gIldhaXRyZXNzIGlzIG1lYW50IHRvIGJlIGEgcHJvZHVjdGlvbi1xdWFsaXR5IHB1cmUtUHl0aG9uIFdTR0kgXAotICAgIHNlcnZlciB3aXRoIHZlcnkgYWNjZXB0YWJsZSBwZXJmb3JtYW5jZS4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vUHlsb25zL3dhaXRyZXNzIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIlpQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NzhjY2IzNjQwZGM4NDFlMWJhZWNiM2UyN2E2OTY2YjIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmZGVlZDdlYzMyYmJiYTAxMWU5MDgwMTIwODM3OGM4OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2N2E2MGEzNzZmMGViMzM1ZWQ4ODk2N2M0MmI3Mzk4M2E1OGQ2NmEyYTcyZWI5MDA5YTQyNzI1Zjc0NTNiMTQyIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdhaXRyZXNzXzEuNC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdhaXRyZXNzXzEuNC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNmE2MjhlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13YWl0cmVzc18xLjQuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzIHB5cGkKLXJlcXVpcmUgcHl0aG9uLXdhaXRyZXNzLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdjd2lkdGguaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdjd2lkdGguaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmQwZDUwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13Y3dpZHRoLmluYworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBidWlsZGluZyBwb3dlcmZ1bCBpbnRlcmFjdGl2ZSBjb21tYW5kIGxpbmVzIGluIFB5dGhvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTExZmJhNDcyODYyNTg3NDRhNmJjNmU0MzUzMGMzMmExIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZGM2Njc3ZDA5OWU2ZjQ5YzBmNmZiYzMxMGRlMjYxZTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjI4YjNlOGE2NDgzZTVkNDllN2Y4OTQ5YWMxYTc4MzE0ZTc0MDMzM2FlMzA1YjRiYTVkZWZkM2U3NGZiMzdhOCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdjd2lkdGhfMC4xLjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2N3aWR0aF8wLjEuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWYxMDdjMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2N3aWR0aF8wLjEuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXdjd2lkdGguaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2ViY29sb3JzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJjb2xvcnMuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjI1NGUzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJjb2xvcnMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotU1VNTUFSWSA9ICJTaW1wbGUgUHl0aG9uIG1vZHVsZSBmb3Igd29ya2luZyB3aXRoIEhUTUwvQ1NTIGNvbG9yIGRlZmluaXRpb25zLiIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTk3YWRkMDE2MDg3ZTY4ODRhMDEyYjBmMTg1ZDQ0YWQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MDg5MGRiMzhiMmE4NTZlNTI2YTU2ODg2NDAyNWZlNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMzA1NjJmNjI0NDY3YTk5MDFmMGI0NTVmZWYwNTQ4NmE4OGNmYjVkYWExZTM1NmJkNGFhY2VhMDQzODUwYjU5IgotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiXAotICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2ViY29sb3JzXzEuOC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYmNvbG9yc18xLjguMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBiNjcwOC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2ViY29sb3JzXzEuOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24td2ViY29sb3JzLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYmRhdl8wLjEuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJkYXZfMC4xLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhNjQzN2QuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYmRhdl8wLjEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlRoaXMgcHJvamVjdCBhaW1zIHRvIHByb3ZpZGUgYW4gb2JqZWN0LW9yaWVudGVkIFB5dGhvbiBXZWJEQVYgY2xpZW50LXNpZGUgbGlicmFyeVwKLSAgICAgICAgICAgICAgIGJhc2VkIG9uIFB5dGhvbmBzIHN0YW5kYXJkIGh0dHBsaWIgYW5kIEdyZWcgU3RlaW5gcyBkYXZsaWIuXAotICAgICAgICAgICAgICAgVGhlIGNsaWVudCBzaGFsbCBmdWxseSBzdXBwb3J0IFJGQ3MgNDkxOCAoYmFzaWMgc3BlY2lmaWNhdGlvbiksXAotICAgICAgICAgICAgICAgMzc0NCAoYWNjZXNzIGNvbnRyb2wpLCBhbmQgMzI1MyAodmVyc2lvbmluZykuIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvd2ViZGF2L1dlYmRhdkNsaWVudC5weTtlbmRsaW5lPTE1O21kNT1hMTUyMGZhZDg1OWZlYjdiMGQ3ZjA1Mjc3YmM2Y2U0OCIKLUhPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvcHl0aG9ud2ViZGF2bGliLyIKLVNSQ05BTUUgPSAiUHl0aG9uX1dlYkRBVl9MaWJyYXJ5IgotREVQRU5EUyA9ICJweXRob24iCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3B5dGhvbndlYmRhdmxpYi9QeXRob24lMjBXZWJEQVYlMjBMaWJyYXJ5JTIwLSUyMCR7UFZ9LyR7U1JDTkFNRX0tJHtQVn0uemlwIgotU1JDX1VSSVttZDVzdW1dID0gIjhlNDllMGVjYzViNDMyN2M0Zjc1MmE1NDRlZTEwZTFhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcyYzAyOWFkMWUyNWRlOTUwZjU5YzJmMTgxMmQwMDlkMmMxNjkxYjcwZTRiNWIwOWYxYWY5MDA2ZThmZDVmMjMiCi0KLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi1pbmhlcml0IGRpc3R1dGlscwotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2ViZW5jb2RpbmdzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJlbmNvZGluZ3MuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMmI4NDEwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJlbmNvZGluZ3MuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJDaGFyYWN0ZXIgZW5jb2RpbmcgYWxpYXNlcyBmb3IgbGVnYWN5IHdlYiBjb250ZW50IgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9ODtlbmRsaW5lPTg7bWQ1PWU5MTBiMzViMGVmNGUxZjY2NWI5YTc1ZDZhZmI3NzA5IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzJmNmUyNjFkNTJlNTdiZjdlMWM0ZDQxNTQ2ZDE1YjgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjM2YTFjMjQ1ZjJkMzA0OTY1ZWI0ZTBhODI4NDgzNzkyNDFkYzA0Yjg2NWFmY2M0YWFiMTY3NDg1ODdlMTkyMyIKLQotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1jb2RlY3MgXAotICAgICR7UFlUSE9OX1BOfS1qc29uIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYmVuY29kaW5nc18wLjUuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJlbmNvZGluZ3NfMC41LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkZTJlZDEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYmVuY29kaW5nc18wLjUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi13ZWJlbmNvZGluZ3MuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2Vic29ja2V0LWNsaWVudC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2Vic29ja2V0LWNsaWVudC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0MjE0YjIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYnNvY2tldC1jbGllbnQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJ3ZWJzb2NrZXQgY2xpZW50IGZvciBweXRob24iCi1ERVNDUklQVElPTiA9ICJcCi13ZWJzb2NrZXQtY2xpZW50IG1vZHVsZSBpcyBXZWJTb2NrZXQgY2xpZW50IGZvciBweXRob24uIFwKLVRoaXMgcHJvdmlkZSB0aGUgbG93IGxldmVsIEFQSXMgZm9yIFdlYlNvY2tldC4gQWxsIEFQSXMgXAotYXJlIHRoZSBzeW5jaHJvbm91cyBmdW5jdGlvbnMuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3dlYnNvY2tldC1jbGllbnQvd2Vic29ja2V0LWNsaWVudCIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzRjNGE5OGZiYzQ4MzZiODFjOGM2NGQ2ZWNiMDFmYzEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4OTQ4NGJkNWRhYzcxMTIzYWU2YTA5YjJmOTBmZTYyYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZmQ1NTIwODc4YjY4Yjg0YjU3NDhiYjMwZTU5MmIxMGQwYTkxNTI5ZDUzODNmNzRmNDk2NGU3MmIyOTdmZDNhIgotCi1QWVBJX1BBQ0tBR0UgPSAid2Vic29ja2V0X2NsaWVudCIKLWluaGVyaXQgcHlwaQotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgJHtQWVRIT05fUE59LXNpeCBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2Vya3pldWcuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlcmt6ZXVnLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI5MmQ5My4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2Vya3pldWcuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgU3dpc3MgQXJteSBrbmlmZSBvZiBQeXRob24gd2ViIGRldmVsb3BtZW50IgotREVTQ1JJUFRJT04gPSAiXAotV2Vya3pldWcgc3RhcnRlZCBhcyBzaW1wbGUgY29sbGVjdGlvbiBvZiB2YXJpb3VzIHV0aWxpdGllcyBmb3IgV1NHSSBcCi1hcHBsaWNhdGlvbnMgYW5kIGhhcyBiZWNvbWUgb25lIG9mIHRoZSBtb3N0IGFkdmFuY2VkIFdTR0kgdXRpbGl0eSBtb2R1bGVzLiBcCi1JdCBpbmNsdWRlcyBhIHBvd2VyZnVsIGRlYnVnZ2VyLCBmdWxsIGZlYXR1cmVkIHJlcXVlc3QgYW5kIHJlc3BvbnNlIG9iamVjdHMsIFwKLUhUVFAgdXRpbGl0aWVzIHRvIGhhbmRsZSBlbnRpdHkgdGFncywgY2FjaGUgY29udHJvbCBoZWFkZXJzLCBIVFRQIGRhdGVzLCBcCi1jb29raWUgaGFuZGxpbmcsIGZpbGUgdXBsb2FkcywgYSBwb3dlcmZ1bCBVUkwgcm91dGluZyBzeXN0ZW0gYW5kIGEgYnVuY2ggXAotb2YgY29tbXVuaXR5IGNvbnRyaWJ1dGVkIGFkZG9uIG1vZHVsZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3dlcmt6ZXVnLnBvY29vLm9yZy8iCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UucnN0O21kNT01ZGM4ODMwMDc4NmYxYzIxNGMxZTk4MjdhNTIyOTQ2MiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjViMjNiNDk1M2VmYzRmNTJiMWQwYjMzYWY2ZjdjZDJkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcyODA5MjQ3NDdiNTczM2IyNDZmZTIzOTcyMTg2YzZiMzQ4ZjlhZTI5NzI0MTM1YTZkZmMxZTUzY2VhNDMzZTciCi0KLVBZUElfUEFDS0FHRSA9ICJXZXJremV1ZyIKLQotQ0xFQU5CUk9LRU4gPSAiMSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgotRklMRVNfJHtQTn0tdGVzdHMrPSAiIFwKLSAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS93ZXJremV1Zy90ZXN0KiBcCi0gICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vd2Vya3pldWcvX19weWNhY2hlX18vdGVzdCogXAotICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3dlcmt6ZXVnL2NvbnRyaWIvdGVzdCogXAotICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3dlcmt6ZXVnL2NvbnRyaWIvX19weWNhY2hlX18vdGVzdCogXAotIgotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAotICAgICR7UFlUSE9OX1BOfS1kaWZmbGliIFwKLSAgICAke1BZVEhPTl9QTn0tZW1haWwgXAotICAgICR7UFlUSE9OX1BOfS1odG1sIFwKLSAgICAke1BZVEhPTl9QTn0taW8gXAotICAgICR7UFlUSE9OX1BOfS1qc29uIFwKLSAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKLSAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKLSAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCi0gICAgJHtQWVRIT05fUE59LXBrZ3V0aWwgXAotICAgICR7UFlUSE9OX1BOfS1wcHJpbnQgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotICAgICR7UFlUSE9OX1BOfS11bml4YWRtaW4gXAotIgotCi1SREVQRU5EU18ke1BOfS10ZXN0cyA9ICIgXAotICAgICR7UE59IFwKLSAgICAke1BZVEhPTl9QTn0tdW5pdHRlc3QgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlcmt6ZXVnXzAuMTYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZXJremV1Z18wLjE2LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiNDExNjEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlcmt6ZXVnXzAuMTYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXdlcmt6ZXVnLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCi0gICAgJHtQWVRIT05fUE59LXpsaWIgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdob29zaC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2hvb3NoLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQwYjMyNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2hvb3NoLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVNVTU1BUlkgPSAiRmFzdCwgcHVyZS1QeXRob24gZnVsbCB0ZXh0IGluZGV4aW5nLCBzZWFyY2gsIGFuZCBzcGVsbCBjaGVja2luZyBsaWJyYXJ5LiIKLURFU0NSSVBUSU9OID0gIlwKLVdob29zaCBpcyBhIGZhc3QsIGZlYXR1cmVmdWwgZnVsbC10ZXh0IGluZGV4aW5nIGFuZCBzZWFyY2hpbmcgbGlicmFyeSBcCi1pbXBsZW1lbnRlZCBpbiBwdXJlIFB5dGhvbi4gUHJvZ3JhbW1lcnMgY2FuIHVzZSBpdCB0byBlYXNpbHkgYWRkIHNlYXJjaCBcCi1mdW5jdGlvbmFsaXR5IHRvIHRoZWlyIGFwcGxpY2F0aW9ucyBhbmQgd2Vic2l0ZXMuIEV2ZXJ5IHBhcnQgb2YgaG93IFwKLVdob29zaCB3b3JrcyBjYW4gYmUgZXh0ZW5kZWQgb3IgcmVwbGFjZWQgdG8gbWVldCB5b3VyIG5lZWRzIGV4YWN0bHkuIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MDUzMDMxODZkZWZjNjE0MTE0MzYyOTk2MWM3YzhhNjAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4OTM0MzNlOWMwNTI1YWMwNDNkZjMzZTZlMDRjYWFiMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMDg1NzM3NWY2M2U5MDQxZTAzZmVkZDViNzU0MWY5N2NmNzg5MTdhYzFiNmIwNmMxZmNjOWI0NTM3NWRkYTY5IgotCi1QWVBJX1BBQ0tBR0UgPSAiV2hvb3NoIgotUFlQSV9QQUNLQUdFX0VYVCA9ICJ6aXAiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1lbWFpbCBcCi0gICAgJHtQWVRIT05fUE59LW11bHRpcHJvY2Vzc2luZyBcCi0gICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCi0gICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAotICAgICR7UFlUSE9OX1BOfS1waWNrbGUgXAotICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCi0gICAgJHtQWVRIT05fUE59LXN0cmluZ29sZCBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2hvb3NoXzIuNy40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdob29zaF8yLjcuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I0MjkxZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2hvb3NoXzIuNy40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24td2hvb3NoLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td3JhcHQuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdyYXB0LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk2YzczZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td3JhcHQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJBIFB5dGhvbiBtb2R1bGUgZm9yIGRlY29yYXRvcnMsIHdyYXBwZXJzIGFuZCBtb25rZXkgcGF0Y2hpbmcuIgotSE9NRVBBR0UgPSAiaHR0cDovL3dyYXB0LnJlYWR0aGVkb2NzLm9yZy8iCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZmRmYzAxOWI1N2FmZmJlMWQ3YTMyZTNkMzRlODNkYjQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjYzE1YzAwMWIxMjlmODFlYjJmNzliMTVlYjk5ZmZlNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1NjVhMDIxZmQxOTQxOTQ3NmI5MzYyYjA1ZWVhYTA5NDE3OGRlNjRmODM2MWU0NDQ2OGY5ZTlkNzg0MzkwMWUxIgotCi1pbmhlcml0IHB5cGkKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LXN0cmluZ29sZCBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td3JhcHRfMS4xMS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdyYXB0XzEuMTEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmI0MjQ3Ni4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td3JhcHRfMS4xMS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXdyYXB0LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXd0Zm9ybXMuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXd0Zm9ybXMuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2M1YmM0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13dGZvcm1zLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkEgZmxleGlibGUgZm9ybXMgdmFsaWRhdGlvbiBhbmQgcmVuZGVyaW5nIGxpYnJhcnkgZm9yIHB5dGhvbiB3ZWIgZGV2ZWxvcG1lbnQuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9XVEZvcm1zIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT1jNDY2MGMxMzI3NzBkNWQwYTU3NTc1NDFmNmI3OTQ5MyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQxYzAwMDhkYmU3YmQ5ODg5MmM1OGY3NDU3YTQ2YTRhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBjZGJhYzNlN2Y2ODc4MDg2YzMzNGFhMjVkYzVhMzM4NjlhMzk1NGU5ZDFlMDE1MTMwZDY1YTY5MzA5YjNiNjEiCi0KLVBZUElfUEFDS0FHRSA9ICJXVEZvcm1zIgotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAotICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKLSAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td3Rmb3Jtc18yLjIuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13dGZvcm1zXzIuMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZGIwMTVlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13dGZvcm1zXzIuMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24td3Rmb3Jtcy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14bHJkLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14bHJkLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg3ZDJhYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teGxyZC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIGRldmVsb3BlcnMgdG8gZXh0cmFjdCBkYXRhIGZyb20gTWljcm9zb2Z0IEV4Y2VsICh0bSkgc3ByZWFkc2hlZXQgZmlsZXMiCi1ERVNDUklQVElPTiA9ICJFeHRyYWN0IGRhdGEgZnJvbSBFeGNlbCBzcHJlYWRzaGVldHMgKC54bHMgYW5kIC54bHN4LFwKLSB2ZXJzaW9ucyAyLjAgb253YXJkcykgb24gYW55IHBsYXRmb3JtLiBQdXJlIFB5dGhvbiAoMi42LCAyLjcsIDMuMispLiBcCi1TdHJvbmcgc3VwcG9ydCBmb3IgRXhjZWwgZGF0ZXMuIFVuaWNvZGUtYXdhcmUuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5weXRob24tZXhjZWwub3JnLyIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTVmNDI0NGQ1MWZjYzFlN2NjMmQ0M2U5Njg5MWIyZjgwIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTVkNWI5NjkyNGQ3OTFiMjI4OThiNjIyZWIzZTkxOGUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTQ2ZWIzNmNlZThkYjQwYzNlYWE0NmMzNTFlNjdmZmVlNmVlYjVmYTI2NTBiNzFiYzRjNzU4YTI5YTFiMjliMiIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1jb21wcmVzc2lvbiAke1BZVEhPTl9QTn0taW8gJHtQWVRIT05fUE59LXBwcmludCAke1BZVEhPTl9QTn0tc2hlbGwiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14bHJkXzEuMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhscmRfMS4yLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhNGQ3MDkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhscmRfMS4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi14bHJkLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhzdGF0aWMtZm9udC1hd2Vzb21lLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14c3RhdGljLWZvbnQtYXdlc29tZS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxM2NiODMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhzdGF0aWMtZm9udC1hd2Vzb21lLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkZvbnQgQXdlc29tZSBpY29ucyBwYWNrYWdlZCBmb3Igc2V0dXB0b29scyAoZWFzeV9pbnN0YWxsKSAvIHBpcC4iCi1IT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL1hTdGF0aWMtRm9udC1Bd2Vzb21lIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkFwYWNoZS0yIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTMxM2QwMjE4OTg2OTRjZDJiMGVhNjUwOGJkZmU1MWEyIgotCi1QWVBJX1BBQ0tBR0UgPSAiWFN0YXRpYy1Gb250LUF3ZXNvbWUiCi0KLWluaGVyaXQgcHlwaQotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTQxYTBlOWE3ZTIxZTgyZjkyMjU3M2EwMGFlMGMxNjYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTAxZmI0ODBjYWFhN2M3OTYzZGNiMzMyOGE0NzAwZTYzMWJlZjYwNzBkYjBlOGI2ODU4MTZkMjIwZTY4NWY2YyIKLQotREVQRU5EUyArPSAiIFwKLSAgICAgICAgJHtQWVRIT05fUE59LXhzdGF0aWMgXAotICAgICAgICAke1BZVEhPTl9QTn0tcGlwIFwKLSAgICAgICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhzdGF0aWMtZm9udC1hd2Vzb21lXzQuNy4wLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teHN0YXRpYy1mb250LWF3ZXNvbWVfNC43LjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFlODVmNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teHN0YXRpYy1mb250LWF3ZXNvbWVfNC43LjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXhzdGF0aWMtZm9udC1hd2Vzb21lLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhzdGF0aWMuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhzdGF0aWMuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDRkNjY4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14c3RhdGljLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlhTdGF0aWMgYmFzZSBwYWNrYWdlIHdpdGggbWluaW1hbCBzdXBwb3J0IGNvZGUiCi1IT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL1hTdGF0aWMiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLnR4dDttZDU9MTQxODY4NDI3MmY4NWY0MDBjZWJmMWIxYTI1NWM1Y2QiCi0KLVBZUElfUEFDS0FHRSA9ICJYU3RhdGljIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZGVhMTcyYjdiMTRiMGRiY2Q1ZWQ2MzA3NTIyMWFmNGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODBiNzhkZmUzN2JjZTZkZWU0MzQzZDY0YzY1Mzc1YTgwYmNmMzk5YjQ2ZGQ0N2MwYzdkNTYxNjE1NjhhMjNhOCIKLQotREVQRU5EUyArPSAiIFwKLSAgICAgICAgJHtQWVRIT05fUE59LXBpcCBcCi0gICAgICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14c3RhdGljXzEuMC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhzdGF0aWNfMS4wLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwNzMwMzcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhzdGF0aWNfMS4wLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi14c3RhdGljLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXh4aGFzaC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teHhoYXNoLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBmNWU5Yy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teHhoYXNoLmluYworKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotU1VNTUFSWSA9ICJ4eGhhc2ggaXMgYSBQeXRob24gYmluZGluZyBmb3IgdGhlIHh4SGFzaCBsaWJyYXJ5IGJ5IFlhbm4gQ29sbGV0LiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01YThkNzYyODM1MTRhMWI3ZTZhNDE0YWJhMzg2MjliNSIKLQotU1JDX1VSSVttZDVzdW1dID0gImNlOWNiYmNjODk2MjBmZDQ3YTI0NjhiYWRkMDhkY2YwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhiNmIxYWZlNzczMWQ3ZDljYmIwMzk4YjRhODExZWJiNWU2YmU1YzE3NGY3MmM2OGFiZjgxZjkxOWE0MzVkZTkiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teWFwcGkuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXlhcHBpLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRkNDA4Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teWFwcGkuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotU1VNTUFSWSAgPSAiWWV0IEFub3RoZXIgUHl0aG9uIFByb2ZpbGVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3lhcHBpLmdvb2dsZWNvZGUuY29tLyIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9OWExOTNjMTNmMzQ2ODg0ZTU5N2FjZGNhYzdmZTlhYzgiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhNTQ1MTAxYWE4YTQzNWIwNzgwZjA2ZjQ3MjNmNThjOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZjgxNDEzMTUxNWQ1MWRiNjJiMWEzNDY4YmNiODRkZTMwNDk5MTI0NzUyODA2YTVhNmUxMWNhZjBiNDM0NGJmIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCi0gICAgJHtQWVRIT05fUE59LXBpY2tsZSBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0gICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXlhcHBpXzEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi15YXBwaV8xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzYmRkZTUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXlhcHBpXzEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSBweXRob24teWFwcGkuaW5jCi1pbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi15YXJsLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi15YXJsLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTgwNjZkNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teWFybC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBtb2R1bGUgcHJvdmlkZXMgaGFuZHkgVVJMIGNsYXNzIGZvciB1cmwgcGFyc2luZyBhbmQgY2hhbmdpbmciCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYWlvLWxpYnMveWFybC8iCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMzM0ZmM5MGQ0NTk4M2RiMzE4ZjU0ZmQ1YmY2YzkwYiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA4YmEwZDZlMThmNDYwYjQ0ZDllNTQ1OWYzZDIxN2JhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU4Y2Q5YzQ2OWVjZWQ1NThjZDgxYWEzZjQ4NGIyOTI0ZTg4OTcwNDllMDY4ODllOGZmMjUxMDQzNWI3ZWY3NGIiCi0KLVBZUElfUEFDS0FHRSA9ICJ5YXJsIgotaW5oZXJpdCBweXBpCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgJHtQWVRIT05fUE59LW11bHRpZGljdCBcCi0gICAgJHtQWVRIT05fUE59LWlkbmEgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXppcHAuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXppcHAuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjYzODUyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi16aXBwLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkJhY2twb3J0IG9mIHBhdGhsaWItY29tcGF0aWJsZSBvYmplY3Qgd3JhcHBlciBmb3IgemlwIGZpbGVzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2phcmFjby96aXBwIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hMzNmMzhiYmY0N2Q0OGM3MGZlMGQ0MGU1Zjc3NDk4ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ0NDUxYTc0OWQ4YTdjM2MzOTJhOWVkZDE4NjRhOTM3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM3MThiMWNiY2Q5NjNjN2Q0YzU1MTFhODI0MDgxMjkwNDE2NGI3ZjM4MWI2NDcxNDNhODlkM2I5OGY5YmNkOGUiCi0KLURFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzLXNjbS1uYXRpdmUiCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LW1vcmUtaXRlcnRvb2xzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24temlwcF8wLjYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi16aXBwXzAuNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTk0OWEyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi16aXBwXzAuNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24temlwcC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi16b3BlaW50ZXJmYWNlLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi16b3BlaW50ZXJmYWNlLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY4ZjFmZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tem9wZWludGVyZmFjZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIkludGVyZmFjZSBkZWZpbml0aW9ucyBmb3IgWm9wZSBwcm9kdWN0cyIKLUxJQ0VOU0UgPSAiWlBMLTIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ZTU0ZmQ3NzYyNzRjMWI3NDIzZWMxMjg5NzRiZDlkNDYiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxYmM2Njc1ODI3NWM1ZWI2NmQxNjlhY2JhM2M4ZTUwZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YmI5MzdlOTk4YmU5ZDVlMzQ1ZjQ4NjY5M2U0NzdiYTc5ZTQzNDQ2NzQ0ODQwMDFhMGI2NDZiZTFkNTMwNDg3IgotCi1QWVBJX1BBQ0tBR0UgPSAiem9wZS5pbnRlcmZhY2UiCi0KLVBBQ0tBR0VTID0uICIke1BOfS10ZXN0ICIKLQotUlBST1ZJREVTXyR7UE59ICs9ICJ6b3BlLWludGVyZmFjZXMiCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiJHtQWVRIT05fUE59LWRhdGV0aW1lIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyouZWdnLyovKi8uZGVidWciCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3pvcGUvaW50ZXJmYWNlLyouYyIKLUZJTEVTXyR7UE59LWRvYyArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vem9wZS9pbnRlcmZhY2UvKi50eHQiCi1GSUxFU18ke1BOfS10ZXN0ICs9ICIgXAotICAgICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS96b3BlL2ludGVyZmFjZS90ZXN0cyBcCi0gICAgICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3pvcGUvaW50ZXJmYWNlL2NvbW1vbi90ZXN0cyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tem9wZWludGVyZmFjZV80LjcuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi16b3BlaW50ZXJmYWNlXzQuNy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmRmZDRkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi16b3BlaW50ZXJmYWNlXzQuNy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tem9wZWludGVyZmFjZS5pbmMKLQotUkRFUEVORFNfJHtQTn0tdGVzdCArPSAicHl0aG9uLXVuaXR0ZXN0IHB5dGhvbi1kb2N0ZXN0IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hZW51bV8yLjIuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYWVudW1fMi4yLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZkMmE4OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYWVudW1fMi4yLjMuYmIKQEAgLTAsMCArMSwxMSBAQAorU1VNTUFSWSA9ICJBZHZhbmNlZCBFbnVtZXJhdGlvbnMgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9hZW51bS8iCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2FlbnVtL0xJQ0VOU0U7bWQ1PWM2YTg1NDc3NTQzZjhiODU5MWI5YzFmODJhYmViYmU5IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDI2Nzg2ZGJiMzdjMTVjMmM4ZGM5MWZiZjU4MjhlOTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTQzMzRjYWJmNDdjMTY3ZDQ0YWI1YTYxOTg4MzdiODBkZWVjNWQ1YmFkMWI1Y2Y3MGM5NjZjM2EzMzAyNjBlOCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYWlvZmlsZXNfMC40LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFpb2ZpbGVzXzAuNC4wLmJiCmluZGV4IGI0ZDE4OGIuLmIyMWNhZGUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYWlvZmlsZXNfMC40LjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1haW9maWxlc18wLjQuMC5iYgpAQCAtMSwyICsxLDE2IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1haW9maWxlcy5pbmMKK1NVTU1BUlkgPSAiRmlsZSBzdXBwb3J0IGZvciBhc3luY2lvIgorREVTQ1JJUFRJT04gPSAiQXN5bmNocm9ub3VzIGxvY2FsIGZpbGUgSU8gbGlicmFyeSBmb3IgYXN5bmNpbyBhbmQgUHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Fpby1saWJzL2Fpb2h0dHAiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kMjc5NGMwZGY1YjkwN2ZkYWNlMjM1YTYxOWQ4MDMxNCIKKworU1JDX1VSSVttZDVzdW1dID0gImNiMzNjZjk2YzM3MWZiZDU2ZmMyN2FiMGJkODFiZDYxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAyMWVhMGJhMzE0YTg2MDI3YzE2NmVjYzRiNGMwN2YyZDQwZmMwZjRiM2E5NTBkMTg2OGEwZjI1NzFjMmJiZWUiCisKK1BZUElfUEFDS0FHRSA9ICJhaW9maWxlcyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgICAke1BZVEhPTl9QTn0tYXN5bmNpbyBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFpb2h0dHBfMy41LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFpb2h0dHBfMy41LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMDMwM2YuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1haW9odHRwXzMuNS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1haW9odHRwLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1haW9odHRwXzMuNi4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1haW9odHRwXzMuNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMTQ0N2MKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFpb2h0dHBfMy42LjIuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJBc3luYyBodHRwIGNsaWVudC9zZXJ2ZXIgZnJhbWV3b3JrIgorREVTQ1JJUFRJT04gPSAiQXN5bmNocm9ub3VzIEhUVFAgY2xpZW50L3NlcnZlciBmcmFtZXdvcmsgZm9yIGFzeW5jaW8gYW5kIFB5dGhvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9haW8tbGlicy9haW9odHRwIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWNmMDU2ZThlN2EwYTU0Nzc0NTFhZjE4YjdiNWFhOThjIgorCitTUkNfVVJJW21kNXN1bV0gPSAiY2E0MDE0NGMxOTlhMDlmYzFhMTQxOTYwY2Y2Mjk1ZjAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjU5YWI4MDlmZjA3MjdkMGU4MzRhYzVlOGEyODNkYzVlM2UwZWNjMzBjNGQ4MGIzY2QxN2E0MTM5Y2UxZjMyNiIKKworUFlQSV9QQUNLQUdFID0gImFpb2h0dHAiCitpbmhlcml0IHNldHVwdG9vbHMzIHB5cGkKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgICAke1BZVEhPTl9QTn0tYXN5bmMtdGltZW91dCBcCisgICAgJHtQWVRIT05fUE59LWF0dHJzIFwKKyAgICAke1BZVEhPTl9QTn0tY2hhcmRldCBcCisgICAgJHtQWVRIT05fUE59LWlkbmEtc3NsIFwKKyAgICAke1BZVEhPTl9QTn0tbWlzYyBcCisgICAgJHtQWVRIT05fUE59LW11bHRpZGljdCBcCisgICAgJHtQWVRIT05fUE59LXR5cGluZyBcCisgICAgJHtQWVRIT05fUE59LXlhcmwgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hbGVtYmljXzEuMy4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hbGVtYmljXzEuMy4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjQ4ZmU3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYWxlbWJpY18xLjMuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1hbGVtYmljLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hbGVtYmljXzEuNC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hbGVtYmljXzEuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyNjMwNjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFsZW1iaWNfMS40LjIuYmIKQEAgLTAsMCArMSwxNyBAQAorREVTQ1JJUFRJT04gPSAiQSBkYXRhYmFzZSBtaWdyYXRpb24gdG9vbCBmb3IgU1FMQWxjaGVteSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YmQ2NGFiYTFiOTY4YzJiZmJjMmI1MjVhMTgxY2U4NWMiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiMWQ2N2JkYmQzYWJkMzNmMDMxOWFmY2QyOWJjNTk2ODYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDM1YWIwMDQ5NzIxNzYyOGJmNWQwYmU4MmQ2NjRkODcxM2FiMTNkMzdiNjMwMDg0ZGE4ZTFmOThmYWNmNGRiZiIKKworUFlQSV9QQUNLQUdFID0gImFsZW1iaWMiCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWRhdGV1dGlsIFwKKyAgICAke1BZVEhPTl9QTn0tZWRpdG9yIFwKKyAgICAke1BZVEhPTl9QTn0tbWFrbyBcCisgICAgJHtQWVRIT05fUE59LXNxbGFsY2hlbXkgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hbnNpMmh0bWxfMS41LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFuc2kyaHRtbF8xLjUuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTU4NmVhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hbnNpMmh0bWxfMS41LjIuYmIKQEAgLTAsMCArMSwxMyBAQAorREVTQ1JQVElPTiA9ICJhbnNpMmh0bWwgLSBDb252ZXJ0IHRleHQgd2l0aCBBTlNJIGNvbG9yIGNvZGVzIHRvIEhUTUwgb3IgdG8gTGFUZVgiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcmFscGhiZWFuL2Fuc2kyaHRtbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTMwMDAyMDhkNTM5ZWMwNjFiODk5YmNlMWQ5Y2U5NDA0IgorTElDRU5TRSA9ICJHUEx2MyIKKworUFlQSV9QQUNLQUdFID0gImFuc2kyaHRtbCIKKworU1JDX1VSSVttZDVzdW1dID0gIjUyZDYwODVhZDFjNTk3MDA4MmVhNTMwNWEyNmFmOTgxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk2YWU4NWFlN2IyNmI3ZGE2NzRkODdkZTI4NzBiYTRkMTk2NGJjYTczM2FlNDYxNDU4NzA4MGI2MzU4YzNiYTkiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0tc2l4IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hbnlqc29uXzAuMy4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hbnlqc29uXzAuMy4zLmJiCmluZGV4IDE5OWUyMjUuLjkxYzY2NzIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYW55anNvbl8wLjMuMy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFueWpzb25fMC4zLjMuYmIKQEAgLTEsMiArMSwxMyBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tYW55anNvbi5pbmMKK1NVTU1BUlkgPSAiV3JhcHMgdGhlIGJlc3QgYXZhaWxhYmxlIEpTT04gaW1wbGVtZW50YXRpb24gYXZhaWxhYmxlIGluIGEgY29tbW9uIGludGVyZmFjZSIKK0RFU0NSSVBUSU9OID0gIkFueWpzb24gbG9hZHMgd2hpY2hldmVyIGlzIHRoZSBmYXN0ZXN0IEpTT04gbW9kdWxlIGluc3RhbGxlZCBhbmQgIFwKK3Byb3ZpZGVzIGEgdW5pZm9ybSBBUEkgcmVnYXJkbGVzcyBvZiB3aGljaCBKU09OIGltcGxlbWVudGF0aW9uIGlzIHVzZWQuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9iaXRidWNrZXQub3JnL3J1bmVoL2FueWpzb24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTk4OWFhOTdlNzNjOTEyYTgzYTNjODczZmExMWRlYjA4IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSVttZDVzdW1dID0gIjJlYTI4ZDZlYzMxMWFlZWViYWY5OTNjYjMwMDhiMjdjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM3ODEyZDg2M2M5YWQzZTM1YzA3MzRjNDJlMGJmMDMyMGNlOGMzYmVkODJjZDIwYWQ1NGNiMzRkMTU4MTU3YmEiCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tc2ltcGxlanNvbiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXBwZGlycy9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFwcGRpcnMvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyODdmM2UKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFwcGRpcnMvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGVzdCB8IHNlZCAtZSAncy9cWzEwMCVcXS8vZycgfCBzZWQgLWUgJ3MvXC5cLkYvOiBGQUlML2cnIHwgc2VkIC1lICdzL1wuXC5cLi86IFBBU1MvZycKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXBwZGlyc18xLjQuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXBwZGlyc18xLjQuMy5iYgppbmRleCBkMjRlMWQ4Li4yZTE4M2Q4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFwcGRpcnNfMS40LjMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hcHBkaXJzXzEuNC4zLmJiCkBAIC0xLDIgKzEsMjEgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWFwcGRpcnMuaW5jCitTVU1NQVJZID0gIkEgc21hbGwgUHl0aG9uIG1vZHVsZSBmb3IgZGV0ZXJtaW5pbmcgYXBwcm9wcmlhdGUgKyBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJzLCBlLmcuIGEgdXNlciBkYXRhIGRpci4iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zMTYyNTM2M2M0NWViMGM2N2M2MzBhMmY3M2U0MzhlNCIKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjQ0YzY3OTkwNDA4MmEyMTMzZjU1NjZjOGEwZDNhYjQyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjllNTg5NmQxMzcyODU4ZjhkZDMzNDRmYWY0ZTUwMTRkMjE4NDljNzU2YzhkNTcwMWY3OGY4YTEwM2IzNzJkOTIiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMyBwdGVzdAorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKwkke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwljcCAtcmYgJHtTfS90ZXN0LyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC8KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXJwZWdnaW9fMS45LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFycGVnZ2lvXzEuOS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwMmE1YjIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFycGVnZ2lvXzEuOS4yLmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiQXJwZWdnaW8gaXMgYSByZWN1cnNpdmUgZGVzY2VudCBwYXJzZXIgd2l0aCBtZW1vaXphdGlvbiBiYXNlZCBvbiBQRUcgZ3JhbW1hcnMgKGFrYSBQYWNrcmF0IHBhcnNlcikiCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkub3JnL3Byb2plY3QvQXJwZWdnaW8vIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zM2I4ZDFiYTQ1OWEyZmE0ZDgwMWFjZmQxZDFiN2NlYiIKKworU1JDX1VSSVttZDVzdW1dID0gIjM5NjY3YTYyNjIxN2M2NzBiYzYzNDQ0NGJlNmU5MDRhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk0OGNlMDYxNjNhNDhhNzJjOTdmNGZlNzlhZDNkMWMxMzMwYjZmZWM0ZjIyZWNlMTgyZmI2MGVmNjBiZDAyMmIiCisKK1BZUElfUEFDS0FHRSA9ICJBcnBlZ2dpbyIKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCisjIHNldHVwLnB5IG9mIEFycGVnZ2lvIG5lZWRzIHRoaXMuCitERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tcHl0ZXN0LXJ1bm5lci1uYXRpdmUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXNuMWNyeXB0b18xLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXNuMWNyeXB0b18xLjMuMC5iYgppbmRleCBjZmJlNTc1Li4wZDM4ZGE5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFzbjFjcnlwdG9fMS4zLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hc24xY3J5cHRvXzEuMy4wLmJiCkBAIC0xLDYgKzEsMjUgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWFzbjFjcnlwdG8uaW5jCitERVNDUklQVElPTiA9ICJBIGZhc3QsIHB1cmUgUHl0aG9uIGxpYnJhcnkgZm9yIHBhcnNpbmcgYW5kIHNlcmlhbGl6aW5nIEFTTi4xIHN0cnVjdHVyZXMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vd2JvbmQvYXNuMWNyeXB0byIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03NDM5ZTM4ZjVlMDRmZjYyZmFlNDM2MTg0Nzg2YjdjYSIKKworUFlQSV9QQUNLQUdFID0gImFzbjFjcnlwdG8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkYWFkMTEyOTQwMTgxOTE3ZTNmZjE2OWI0N2I5YmQ5YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1YTIxNWNiOGRjMTJmODkyMjQ0ZTNhMTEzZmUwNTM5N2VlMjNjNWM0Y2E3YTY5Y2Q2ZTY5ODExNzU1ZWZjNDJkIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKIAogUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1jb2RlY3MgXAorICAgICR7UFlUSE9OX1BOfS1jcnlwdCBcCisgICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCisgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKKyAgICAke1BZVEhPTl9QTn0taW8gXAorICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKICAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAogIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFzdHJvaWRfMi4zLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFzdHJvaWRfMi4zLjMuYmIKaW5kZXggNmUzMmMyOC4uZGMxY2UwZSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hc3Ryb2lkXzIuMy4zLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXN0cm9pZF8yLjMuMy5iYgpAQCAtMSwyICsxLDMzIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1hc3Ryb2lkLmluYworU1VNTUFSWSA9ICJBbiBhYnN0cmFjdCBzeW50YXggdHJlZSBmb3IgUHl0aG9uIHdpdGggaW5mZXJlbmNlIHN1cHBvcnQuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9hc3Ryb2lkIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkxHUEwtMi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1ZjNkNzNkODJkMTc1M2I1OWJiNDlhNmJjNjA0NmRlZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3MWVhMDdmNDRkZjk1NjhhNzVkMGYzNTRjNDkxNDNhNDU3NWQ5MDY0NWU5ZmVhZDZkZmI1MmMyNmE4NWVkMTNhIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXB5dGVzdC1ydW5uZXItbmF0aXZlIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMiCisKK0ZJTEVTXyR7UE59LXRlc3RzICs9ICIgXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2FzdHJvaWQvdGVzdCogXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2FzdHJvaWQvX19weWNhY2hlX18vdGVzdCogXAorIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tZGlzdHV0aWxzIFwKKyAgICAke1BZVEhPTl9QTn0tbGF6eS1vYmplY3QtcHJveHkgXAorICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyAgICAke1BZVEhPTl9QTn0td3JhcHQgXAorICAgICR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzIFwKKyIKKworUkRFUEVORFNfJHtQTn0tdGVzdHNfY2xhc3MtdGFyZ2V0ICs9ICJcCisgICAgJHtQWVRIT05fUE59LXVuaXR0ZXN0IFwKKyAgICAke1BZVEhPTl9QTn0teG1sIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXN5bmMtdGltZW91dF8zLjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXN5bmMtdGltZW91dF8zLjAuMS5iYgppbmRleCA3ZTJmZmRiLi4yMmRmZmU2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFzeW5jLXRpbWVvdXRfMy4wLjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hc3luYy10aW1lb3V0XzMuMC4xLmJiCkBAIC0xLDIgKzEsMTkgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWFzeW5jLXRpbWVvdXQuaW5jCitTVU1NQVJZID0gImFzeW5jaW8tY29tcGF0aWJsZSB0aW1lb3V0IGNvbnRleHQgbWFuYWdlciIKK0RFU0NSSVBUSU9OID0gIlwKK1RoZSBjb250ZXh0IG1hbmFnZXIgaXMgdXNlZnVsIGluIGNhc2VzIHdoZW4geW91IHdhbnQgdG8gYXBwbHkgXAordGltZW91dCBsb2dpYyBhcm91bmQgYmxvY2sgb2YgY29kZSBvciBpbiBjYXNlcyB3aGVuIGFzeW5jaW8ud2FpdF9mb3IoKSBcCitpcyBub3Qgc3VpdGFibGUuIEFsc28gaXQncyBtdWNoIGZhc3RlciB0aGFuIGFzeW5jaW8ud2FpdF9mb3IoKSBiZWNhdXNlIFwKK3RpbWVvdXQgZG9lc24ndCBjcmVhdGUgYSBuZXcgdGFzay4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYWlvLWxpYnMvYXN5bmMtdGltZW91dCIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWUzZmM1MGE4OGQwYTM2NDMxM2RmNGIyMWVmMjBjMjllIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzA1YzRmYTUyOWYyNDg1YzQwM2QwZGJlMTQzOTAxNzUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGMzYzgxNmEwMjhkNDdmNjU5ZDZmZjVjNzQ1Y2IyYWNmMWY5NjZkYTFmZTVjMTljNzdhNzAyODJiMjVmNGM1ZiIKKworUFlQSV9QQUNLQUdFID0gImFzeW5jLXRpbWVvdXQiCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAgICR7UFlUSE9OX1BOfS1hc3luY2lvIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXRvbWljd3JpdGVzXzEuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hdG9taWN3cml0ZXNfMS4zLjAuYmIKaW5kZXggOWYzMDZlNi4uMDRiYmVkNyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hdG9taWN3cml0ZXNfMS4zLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hdG9taWN3cml0ZXNfMS4zLjAuYmIKQEAgLTEsMiArMSw5IEBACitERVNDUklQVElPTiA9ICJQb3dlcmZ1bCBQeXRob24gbGlicmFyeSBmb3IgYXRvbWljIGZpbGUgd3JpdGVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3VudGl0YWtlci9weXRob24tYXRvbWljd3JpdGVzIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05MWNjMzZjZmFmZWVmYjc4NjM2NzNiY2ZjYjFkNGRhNCIKKworU1JDX1VSSVttZDVzdW1dID0gImNlMTFmNzgwYTRjZTBmY2U4YTU1ZDY0NDk0YTg4MTc4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc1YTk0NDViYWMwMmQ4ZDA1OGQ1ZTFmZTY4OTY1NGJhNWE2NTU2YTFkZmQ4Y2U2ZWM1NWEwZWQ3OTg2NmNmYTYiCisKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tYXRvbWljd3JpdGVzLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hdHRyXzAuMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hdHRyXzAuMy4xLmJiCmluZGV4IGU4MDY0OGMuLjIyYzUyMTggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXR0cl8wLjMuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF0dHJfMC4zLjEuYmIKQEAgLTEsMiArMSw5IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1hdHRyLmluYworREVTQ1JJUFRJT04gPSAiU2ltcGxlIGRlY29yYXRvciB0byBzZXQgYXR0cmlidXRlcyBvZiB0YXJnZXQgZnVuY3Rpb24gb3IgY2xhc3MgaW4gYSBEUlkgd2F5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2RlbmlzLXJ5emhrb3YvYXR0ciIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTU5ODA1YTAyODVmNGQyYjZhYmRlZGFlNzNkYjRmNWMxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNjhiOWE1MDM5OTEyNDFmYjJkZjI4NDg4Njg2YjBlMWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTA5MTU0ODA1OGQxN2YxMzI1OTZlNjFmYTc1MThlNTA0Zjc2YjlhNGM2MWNhN2Q4NmUxZjk2ZGJmN2Q0Nzc1ZCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF0dHJzXzE5LjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXR0cnNfMTkuMy4wLmJiCmluZGV4IGMzNDY5M2YuLmIzNzM5ZmQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXR0cnNfMTkuMy4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXR0cnNfMTkuMy4wLmJiCkBAIC0xLDIgKzEsMTYgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWF0dHJzLmluYworREVTQ1JJUFRJT04gPSAiQ2xhc3NlcyBXaXRob3V0IEJvaWxlcnBsYXRlIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hdHRycy5vcmcvIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kNGFiMjU5NDlhNzNmZTdkNGZkZWU5M2JjYmRiZjhmZiIKKworU1JDX1VSSVtzaGEyNTZzdW1dID0gImY3YjdjZTE2NTcwZmU5OTY1YWNkNmQzMDEwMWEyOGY2MmZiNGE3ZjllOTI2YjNiYmM5YjYxZjhiMDQyNDdlNzIiCitTUkNfVVJJW21kNXN1bV0gPSAiNWIyZGI1MGZjYzMxYmUzNGQzMjc5ODE4M2M5YmQwNjIiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWNyeXB0IFwKKyAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXV0b21hdC8wMDAxLXNldHVwLnB5LXJlbW92ZS10aGUtZGVwZW5kZW5jeS1vbi1tMnIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF1dG9tYXQvMDAwMS1zZXR1cC5weS1yZW1vdmUtdGhlLWRlcGVuZGVuY3ktb24tbTJyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXV0b21hdC8wMDAxLXNldHVwLnB5LXJlbW92ZS10aGUtZGVwZW5kZW5jeS1vbi1tMnIucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXV0b21hdC8wMDAxLXNldHVwLnB5LXJlbW92ZS10aGUtZGVwZW5kZW5jeS1vbi1tMnIucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXV0b21hdF8wLjguMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXV0b21hdF8wLjguMC5iYgppbmRleCAyYzc0NzY0Li5mODk4MWJjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF1dG9tYXRfMC44LjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hdXRvbWF0XzAuOC4wLmJiCkBAIC0xLDIgKzEsMjEgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWF1dG9tYXQuaW5jCitERVNDUklQVElPTiA9ICJTZWxmLXNlcnZpY2UgZmluaXRlLXN0YXRlIG1hY2hpbmVzIGZvciB0aGUgcHJvZ3JhbW1lciBvbiB0aGUgZ28iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ2x5cGgvQXV0b21hdCIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NGFkMjEzYmNjYTgxNjg4ZTk0NTkzZTVmNjBjODc0NzciCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0N2U5ODBhNDgyMDFhMWRhYmUzN2ZhMTFmMDE4NzAxMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNjlhMDlkZmIwNjNhM2IwNzg5ODNmNDk3NmQ4M2YwYTBkM2U2ZTdhYWY4ZTI3ZDhkZjEwOTVlMDlkYzRhNDg0IgorCitERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tc2V0dXB0b29scy1zY20tbmF0aXZlIgorCitTUkNfVVJJX2FwcGVuZCA9ICIgXAorICAgIGZpbGU6Ly8wMDAxLXNldHVwLnB5LXJlbW92ZS10aGUtZGVwZW5kZW5jeS1vbi1tMnIucGF0Y2ggXAorIgorCitQWVBJX1BBQ0tBR0UgPSAiQXV0b21hdCIKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgJHtQWVRIT05fUE59LWF0dHJzIFwKKyAgICR7UFlUSE9OX1BOfS1zaXggXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uXzEuNC43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uXzEuNC43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDM2NDlkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbl8xLjQuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbi5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbl8xLjQuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbl8xLjQuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzYzMDY3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uXzEuNC44LmJiCkBAIC0wLDAgKzEsNDEgQEAKK0RFU0NSSVBUSU9OID0gIlNESyBmb3IgY29ubmVjdGluZyB0byBBV1MgSW9UIHVzaW5nIFB5dGhvbi4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1pb3QtZGV2aWNlLXNkay1weXRob24iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAgJiAoRVBMLTEuMCB8IEVETC0xLjApIgorTElDRU5TRV8ke1BOfS1leGFtcGxlcyA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJcCisgICAgZmlsZTovL0xJQ0VOU0UudHh0O21kNT05YWM0OTkwMWI4MzNlNzY5YzdkNmYyMWU4ZGJkN2IzMCBcCisgICAgZmlsZTovL0FXU0lvVFB5dGhvblNESy9jb3JlL3Byb3RvY29sL3BhaG8vY2xpZW50LnB5O2VuZGxpbmU9MTQ7bWQ1PTVhM2M4YTFhNGJiNzFiZDkzNGY0NTBlY2ZmOTcyYWQ5IFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImQwNTU5NmYwMjc3NGVhMzk1MTc3NjVjNWRjZWQ4NzRhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJjZDY4Y2I3ZmRiMDQ0ZGJkNWU1ZDNhMDJjMzExYjI1NzE3YzAzNzYxNjhlN2M5OTI5ODIxMzBmMTljNTFiMDMiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitQWVBJX1BBQ0tBR0UgPSAiQVdTSW9UUHl0aG9uU0RLIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAtbTA3NTUgJHtEfSR7ZGF0YWRpcn0vJHtCUE59L2V4YW1wbGVzCisgICAgICAgIGNwIC0tcHJlc2VydmU9bW9kZSx0aW1lc3RhbXBzIC1SICR7U30vc2FtcGxlcy8qICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS9leGFtcGxlcworICAgICAgICAjIHRoaXMgcmVxdWlyZXMgdGhlIGZ1bGwgYmxvd24gQVdTIFB5dGhvbiBTREsKKyAgICAgICAgcm0gLXIgJHtEfSR7ZGF0YWRpcn0vJHtCUE59L2V4YW1wbGVzL2Jhc2ljUHViU3ViCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1leGFtcGxlcyIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWNyeXB0IFwKKyAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICR7UFlUSE9OX1BOfS1pbyBcCisgICAgJHtQWVRIT05fUE59LWpzb24gXAorICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tbWF0aCBcCisgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCisgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorIgorUkRFUEVORFNfJHtQTn0tZXhhbXBsZXMgKz0gIiR7UE59IgorCitGSUxFU18ke1BOfS1leGFtcGxlcyA9ICIke2RhdGFkaXJ9LyR7QlBOfS9leGFtcGxlcyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iYWJlbF8yLjcuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmFiZWxfMi43LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3MTVkNTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iYWJlbF8yLjcuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tYmFiZWwuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJhYmVsXzIuOC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iYWJlbF8yLjguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjkwOThiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iYWJlbF8yLjguMC5iYgpAQCAtMCwwICsxLDI3IEBACitERVNDUklQVElPTiA9ICJBIGNvbGxlY3Rpb24gb2YgdG9vbHMgZm9yIGludGVybmF0aW9uYWxpemluZyBQeXRob24gYXBwbGljYXRpb25zIgorSE9NRVBBR0UgPSAiaHR0cDovL2JhYmVsLmVkZ2V3YWxsLm9yZy8iCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTk0MjQ2OWRmOTMwNWFiYjFjNTllOTVmNzc4MzEwMzg0IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNmZhZDk3NzJlNzU0MjE5NjlkZGI0MTk3NTQ4M2FiZGYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWFhYzJhZTJkMGQ4ZWEzNjhmYTkwOTA2NTY3ZjVjMDg0NjNkOThhZGUxNTVjMGM0YmZlZGQ2YTBmNzE2MGUzOCIKKworUFlQSV9QQUNLQUdFID0gIkJhYmVsIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworQ0xFQU5CUk9LRU4gPSAiMSIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWNvZGVjcyBcCisgICAgJHtQWVRIT05fUE59LWRpZmZsaWIgXAorICAgICR7UFlUSE9OX1BOfS1kaXN0dXRpbHMgXAorICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAorICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKKyAgICAke1BZVEhPTl9QTn0tcGlja2xlIFwKKyAgICAke1BZVEhPTl9QTn0tcHl0eiBcCisgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iYWNrcG9ydHMtZnVuY3Rvb2xzLWxydS1jYWNoZV8xLjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJhY2twb3J0cy1mdW5jdG9vbHMtbHJ1LWNhY2hlXzEuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFmY2M0MS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJhY2twb3J0cy1mdW5jdG9vbHMtbHJ1LWNhY2hlXzEuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSBweXRob24tYmFja3BvcnRzLWZ1bmN0b29scy1scnUtY2FjaGUuaW5jCi1pbmhlcml0IHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJhY2twb3J0cy1mdW5jdG9vbHMtbHJ1LWNhY2hlXzEuNi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iYWNrcG9ydHMtZnVuY3Rvb2xzLWxydS1jYWNoZV8xLjYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTVhNzU5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iYWNrcG9ydHMtZnVuY3Rvb2xzLWxydS1jYWNoZV8xLjYuMS5iYgpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIkJhY2twb3J0IG9mIGZ1bmN0b29scy5scnVfY2FjaGUgZnJvbSBQeXRob24gMy4zIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2phcmFjby9iYWNrcG9ydHMuZnVuY3Rvb2xzX2xydV9jYWNoZSIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hMzNmMzhiYmY0N2Q0OGM3MGZlMGQ0MGU1Zjc3NDk4ZSIKKworUFlQSV9QQUNLQUdFID0gImJhY2twb3J0cy5mdW5jdG9vbHNfbHJ1X2NhY2hlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTAzMDAwYjIxYThlNjgzNjQ3ZTJjZTQxOTI5ZjJhOWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGZkZTVmMTg4ZGEyZDU5M2JkNWJjMGJlOThkOWFiYzQ2Yzk1YmI4YTlkZGU5MzQyOTU3MDE5MmVlNmNjMmQ0YSIKKworREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXNldHVwdG9vbHMtc2NtLW5hdGl2ZSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LXBpY2tsZSBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisgICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iY3J5cHRfMy4xLjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJjcnlwdF8zLjEuNy5iYgppbmRleCBkMmVjOWUzLi4wZjJkMzFmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJjcnlwdF8zLjEuNy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJjcnlwdF8zLjEuNy5iYgpAQCAtMSwyICsxLDE3IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1iY3J5cHQuaW5jCitERVNDUklQVElPTiA9ICJNb2Rlcm4gcGFzc3dvcmQgaGFzaGluZyBmb3IgeW91ciBzb2Z0d2FyZSBhbmQgeW91ciBzZXJ2ZXJzLiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PThmN2JiMDk0YzcyMzJiMDU4YzdlOWYyZTQzMWYzODljIgorCitERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tY2ZmaS1uYXRpdmUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1ZDZmOTNiNTc1Y2U1MjQ3MGFmMzdhOGU3ZGNlNzZmZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwYjAwNjljNzUyZWMxNDE3MmM1Zjc4MjA4ZjE4NjNkN2FkNjc1NWE2ZmFlNmZlNzZlYzJjODBkMTNiZTQxZTQyIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWNmZmkgXAorICAgICR7UFlUSE9OX1BOfS1jdHlwZXMgXAorICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICAgJHtQWVRIT05fUE59LXNpeCBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJlYXV0aWZ1bHNvdXA0XzQuOC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iZWF1dGlmdWxzb3VwNF80LjguMi5iYgppbmRleCBkOThkZjExLi42M2ZiZDA5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJlYXV0aWZ1bHNvdXA0XzQuOC4yLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmVhdXRpZnVsc291cDRfNC44LjIuYmIKQEAgLTEsMiArMSwxNyBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tYmVhdXRpZnVsc291cDQuaW5jCitTVU1NQVJZID0gIlNjcmVlbi1zY3JhcGluZyBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiIGh0dHBzOi8vd3d3LmNydW1teS5jb20vc29mdHdhcmUvQmVhdXRpZnVsU291cC9iczQiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT1mMmQzOGQ4YTQwYmY3M2ZkNGIzZDE2Y2EyZTU4ODJkMSIKKworU1JDX1VSSVttZDVzdW1dID0gIjVkYmRiNTZjMDA5ZTQ2MzJiYWU3YmVkMWIzODU4MDRiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA1ZmQ4MjVlYjAxYzI5MDg3NzY1N2E1NmRmNGM2ZTRjMzExYjM5NjViZGE3OTBjNjEzYTNkNmZiMDFhNTQ2MmEiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgJHtQWVRIT05fUE59LWh0bWw1bGliIFwKKyAgICAke1BZVEhPTl9QTn0tbHhtbCBcCisgICAgJHtQWVRIT05fUE59LXNvdXBzaWV2ZSBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmVoYXZlXzEuMi42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iZWhhdmVfMS4yLjYuYmIKaW5kZXggMWM1NTg3MS4uYTI4ZTUyNyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iZWhhdmVfMS4yLjYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iZWhhdmVfMS4yLjYuYmIKQEAgLTEsMiArMSwxNSBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tYmVoYXZlLmluYworU1VNTUFSWSA9ICJBIGJlaGF2aW9yLWRyaXZlbiBkZXZlbG9wbWVudCBmcmFtZXdvcmssIFB5dGhvbiBzdHlsZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iZWhhdmUvYmVoYXZlIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kOTUwNDM5ZThlYTZlZDIzM2U0Mjg4ZjVlMWE0OWMwNiIKKworU1JDX1VSSVttZDVzdW1dID0gIjNmMDVjODU5YTFjNDVmNWVkMzNlOTI1ODE3YWQ4ODdkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI5NjYyMzI3YWE1MzI5NGMxMzUxYjBhOWMzNjkwOTNjY2VjMWQyMTAyNmYwNTBjM2JkOWIzZTVjY2NmODFhODYiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tcGFyc2UtdHlwZSBcCisgICAgJHtQWVRIT05fUE59LXNldHVwdG9vbHMgXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYml0YXJyYXlfMS4yLjEuYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYml0YXJyYXlfMS4yLjEuYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VlNDQ0ZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJpdGFycmF5XzEuMi4xLmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWJpdGFycmF5LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iaXRhcnJheV8xLjIuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYml0YXJyYXlfMS4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJmMjkzNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYml0YXJyYXlfMS4yLjEuYmIKQEAgLTAsMCArMSwxMSBAQAorU1VNTUFSWSA9ICJBIGhpZ2gtbGV2ZWwgUHl0aG9uIGVmZmljaWVudCBhcnJheXMgb2YgYm9vbGVhbnMgLS0gQyBleHRlbnNpb24iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vaWxhbnNjaG5lbGwvYml0YXJyYXkiCitMSUNFTlNFID0gIlBTRiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT1kYzMwMWEyNWViZTIxMGRjYzUzYjBhMmQ1YTAzOGVhZSIKKworU1JDX1VSSVttZDVzdW1dID0gImE0NmJmODY5ZjZhZGYzNGY1YjBkYzgyYjQ2OTc5M2I3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJlZDY3NWY0NjBiYjBkM2Q2NmZkODA0MmE2ZjFmMGQzNmNmMjEzZTUyZTcyYTc0NTI4M2RkYjI0NWRhN2I5Y2YiCisKK2luaGVyaXQgc2V0dXB0b29sczMgcHlwaQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJsaW5rZXJfMS40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ibGlua2VyXzEuNC5iYgppbmRleCA5MjRiM2NmLi5lMmY3NmMzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJsaW5rZXJfMS40LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmxpbmtlcl8xLjQuYmIKQEAgLTEsMiArMSw4IEBACitERVNDUklQVElPTiA9ICJGYXN0LCBzaW1wbGUgb2JqZWN0LXRvLW9iamVjdCBhbmQgYnJvYWRjYXN0IHNpZ25hbGluZy4iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT05NDZkN2U4OWFmNmY3NzMzYWVhZWJlZDU2MzVkMjY4MiIKKworU1JDX1VSSVttZDVzdW1dID0gIjhiMzcyMjM4MWY4M2MyODEzYzUyZGUzMDE2YjY4ZDMzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ3MWFlZTI1ZjM5OTJiZDMyNWFmYTM3NzJmMTA2M2RiZGJiY2E5NDdhMDQxYjhiODk0NjZkYzAwZDYwNmY4YjYiCisKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tYmxpbmtlci5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYm9vbGVhbnB5XzMuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYm9vbGVhbnB5XzMuNy5iYgppbmRleCA1Zjg2MDJkLi5lYmY3YmE0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJvb2xlYW5weV8zLjcuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ib29sZWFucHlfMy43LmJiCkBAIC0xLDIgKzEsMTQgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWJvb2xlYW5weS5pbmMKK1NVTU1BUlkgPSAiRGVmaW5lIGJvb2xlYW4gYWxnZWJyYXMsIGNyZWF0ZSBhbmQgcGFyc2UgYm9vbGVhbiBleHByZXNzaW9ucyBhbmQgY3JlYXRlIGN1c3RvbSBib29sZWFuIERTTCIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iYXN0aWtyL2Jvb2xlYW4ucHkiCisKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWUzMTk3NDdhNWViOTRjZGRmNjQ2MDM3YzAxZGRiYTQ3IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTE4OWQxMTVhMzhmODRmNWRmNzQzMDE0OTI2YTkxNTkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmQxOWI0MTI0MzU2MTFlY2M3MTI2MDNkMGZkN2QwZTI4MGUyNDY5OGU3YTZlM2Q1ZjYxMDQ3Mzg3MGM1ZGQxZSIKKworUFlQSV9QQUNLQUdFID0gImJvb2xlYW4ucHkiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhY2hlY29udHJvbF8wLjEyLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhY2hlY29udHJvbF8wLjEyLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M0NWVkMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2FjaGVjb250cm9sXzAuMTIuNi5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZID0gImh0dHBsaWIyIGNhY2hpbmcgZm9yIHJlcXVlc3RzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L0NhY2hlQ29udHJvbC8iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NmRjN2UxYjQyOGVkYTAzZDg1MDIwOWZkYmQ2YzcxZjEiCisKKyMgT24gUHlQaSwgdGhpcyBpcyAiQ2FjaGVDb250cm9sIiwgcmF0aGVyIHRoYW4gImNhY2hlY29udHJvbCIsIHNvIHdlIG5lZWQgdG8KKyMgb3ZlcnJpZGUgUFlQSV9QQUNLQUdFIHNvIGZldGNoIHN1Y2NlZWRzLgorUFlQSV9QQUNLQUdFID0gIkNhY2hlQ29udHJvbCIKKworU1JDX1VSSVttZDVzdW1dID0gIjU4OTBiNzk3ZjliNDhiMmI0Y2QxNDQ4Y2NhODllMzk2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJlOWFhNDU0NzdhMTM0YWVlNTZjOGZhYzUxODYyN2UxMTU0ZGYwNjNlODVmNjdkNGY4M2NlMGNjYzIzNjg4ZTgiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgIHB5dGhvbjMtY3J5cHQgXAorICAgIHB5dGhvbjMtZGF0ZXRpbWUgXAorICAgIHB5dGhvbjMtZW1haWwgXAorICAgIHB5dGhvbjMtbG9ja2ZpbGUgXAorICAgIHB5dGhvbjMtanNvbiBcCisgICAgcHl0aG9uMy1sb2dnaW5nIFwKKyAgICBweXRob24zLW1zZ3BhY2sgXAorICAgIHB5dGhvbjMtbmV0Y2xpZW50IFwKKyAgICBweXRob24zLXBpY2tsZSBcCisgICAgcHl0aG9uMy1yZXF1ZXN0cyBcCisgICAgcHl0aG9uMy11cmxsaWIzIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYWNoZXRvb2xzXzQuMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYWNoZXRvb2xzXzQuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmIyZjY3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2FjaGV0b29sc180LjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tY2FjaGV0b29scy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2FjaGV0b29sc180LjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2FjaGV0b29sc180LjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDExYTc0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYWNoZXRvb2xzXzQuMS4wLmJiCkBAIC0wLDAgKzEsMTYgQEAKK1NVTU1BUlkgPSAiRXh0ZW5zaWJsZSBtZW1vaXppbmcgY29sbGVjdGlvbnMgYW5kIGRlY29yYXRvcnMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vdGtlbS9jYWNoZXRvb2xzIgorREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgcHJvdmlkZXMgdmFyaW91cyBtZW1vaXppbmcgXAorY29sbGVjdGlvbnMgYW5kIGRlY29yYXRvcnMsIGluY2x1ZGluZyB2YXJpYW50cyBvZiB0aGUgXAorUHl0aG9uIDMgU3RhbmRhcmQgTGlicmFyeSBAbHJ1X2NhY2hlIGZ1bmN0aW9uIGRlY29yYXRvci4iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZDFlMWJmMGNjYjI2MTI2YTIzMGM1MWY5OTdjZTM2MiIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0NDY4ZGE0MzQ0MzExNWEwMGMwMmMxMjZjZjYwMWFlMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxZDA1NzY0NWRiMTZjYTdmZTFmM2JkOTUzNTU4ODk3NjAzZDZmMGI5YzUxZWQ5ZDExZWI0ZDA3MWVjNGUyYWFiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhbl8zLjMuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2FuXzMuMy4yLmJiCmluZGV4IGFhYTllODEuLjY5OGVhZjUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2FuXzMuMy4yLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2FuXzMuMy4yLmJiCkBAIC0xLDcgKzEsMjYgQEAKLXJlcXVpcmUgcHl0aG9uLWNhbi5pbmMKK1NVTU1BUlkgPSAiQ29udHJvbGxlciBBcmVhIE5ldHdvcmsgKENBTikgaW50ZXJmYWNlIG1vZHVsZSBmb3IgUHl0aG9uIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkxHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKKworU1JDX1VSSVttZDVzdW1dID0gImI3MjQ1NTNhMzMwNDc4MjcwMjY3MzgwYjQ4ODhhMThlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVmZWZiNWMxZTdlN2YwN2ZhZWZjMDJjNmVhYzc5ZjliNTgzNzZmMDA3MDQ4YTA0ZDhlN2YzMjVkNDhlYzZiMmUiCisKK1BZUElfUEFDS0FHRT0icHl0aG9uLWNhbiIKKwogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCiAKIFJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAorICAgICR7UFlUSE9OX1BOfS1hZW51bSBcCisgICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCiAgICAgJHtQWVRIT05fUE59LWNvZGVjcyBcCiAgICAgJHtQWVRIT05fUE59LWNvbXByZXNzaW9uIFwKKyAgICAke1BZVEhPTl9QTn0tZmNudGwgXAorICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tbWlzYyBcCisgICAgJHtQWVRIT05fUE59LW5ldHNlcnZlciBcCisgICAgJHtQWVRIT05fUE59LXNxbGl0ZTMgXAorICAgICR7UFlUSE9OX1BOfS13cmFwdCBcCiAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2Fzc2FuZHJhLWRyaXZlcl8zLjE0LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhc3NhbmRyYS1kcml2ZXJfMy4xNC4wLmJiCmluZGV4IDM0ZjE0OWQuLjc2OGU1NTcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2Fzc2FuZHJhLWRyaXZlcl8zLjE0LjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYXNzYW5kcmEtZHJpdmVyXzMuMTQuMC5iYgpAQCAtMSw4ICsxLDM1IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1jYXNzYW5kcmEtZHJpdmVyLmluYworU1VNTUFSWSA9ICJEYXRhU3RheCBQeXRob24gRHJpdmVyIGZvciBBcGFjaGUgQ2Fzc2FuZHJhIgorREVTQ1JJUFRJT04gPSAiQSBtb2Rlcm4sIGZlYXR1cmUtcmljaCBhbmQgaGlnaGx5LXR1bmFibGUgUHl0aG9uIGNsaWVudCBcCitsaWJyYXJ5IGZvciBBcGFjaGUgQ2Fzc2FuZHJhICgxLjIrKSBhbmQgRGF0YVN0YXggRW50ZXJwcmlzZSAoMy4xKykgdXNpbmcgXAorZXhjbHVzaXZlbHkgQ2Fzc2FuZHJhJ3MgYmluYXJ5IHByb3RvY29sIGFuZCBDYXNzYW5kcmEgUXVlcnkgTGFuZ3VhZ2UgdjMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2RhdGFzdGF4L3B5dGhvbi1kcml2ZXIiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJlZTQxMTEyYTQ0ZmU3MDE0ZGNlMzNlMjY0NjhiYTkzIgorU1JDTkFNRSA9ICJjYXNzYW5kcmEtZHJpdmVyIgogCi0jIFJlcXVpcmVzIGNvbmN1cnJlbnQgd2hpY2ggaXMgY3VycmVudGx5IGluIC1taXNjCi1SREVQRU5EU18ke1BOfSArPSAiIFwKK1NSQ19VUklbbWQ1c3VtXSA9ICJjNWJlZDAyNmJmNDhjODIxNDI0YzFmNjI5NjE5MzkwOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNjUyMThlMjU4MjI3N2Y1Yjc3ZDE0MzZlNDIwZGI4NjE2ZjYzZTM0MzdhOWU4MzljZGNkNzE3MmQ3NjBlODYxIgorCitESVNUVVRJTFNfQlVJTERfQVJHUyArPSAiIFwKKyAgICAtLW5vLWxpYmV2IFwKKyIKK0RJU1RVVElMU19JTlNUQUxMX0FSR1MgKz0gIiBcCisgICAgLS1uby1saWJldiBcCisiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1jeXRob24gXAorICAgICR7UFlUSE9OX1BOfS1qc29uIFwKICAgICAke1BZVEhPTl9QTn0tbWlzYyBcCisgICAgJHtQWVRIT05fUE59LW11bHRpcHJvY2Vzc2luZyBcCiAgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorICAgIGxpYmV2ZW50IFwKKyIKKworREVQRU5EUyArPSAiXAorICAgICR7UFlUSE9OX1BOfS1jeXRob24gXAogIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jZXJ0aWZpXzIwMTkuMTEuMjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNlcnRpZmlfMjAxOS4xMS4yOC5iYgppbmRleCA3MGY2NzRiLi5jOWU5NDVmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNlcnRpZmlfMjAxOS4xMS4yOC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNlcnRpZmlfMjAxOS4xMS4yOC5iYgpAQCAtMSwyICsxLDE1IEBACitTVU1NQVJZID0gIlB5dGhvbiBwYWNrYWdlIGZvciBwcm92aWRpbmcgTW96aWxsYSdzIENBIEJ1bmRsZS4iCitERVNDUklQVElPTiA9ICJUaGlzIGluc3RhbGxhYmxlIFB5dGhvbiBwYWNrYWdlIGNvbnRhaW5zIGEgQ0EgQnVuZGxlIHRoYXQgeW91IGNhbiByZWZlcmVuY2UgaW4geW91ciBcCitQeXRob24gY29kZS4gVGhpcyBpcyB1c2VmdWwgZm9yIHZlcmlmeWluZyBIVFRQIHJlcXVlc3RzLCBmb3IgZXhhbXBsZS4gIFRoaXMgaXMgdGhlIHNhbWUgQ0EgQnVuZGxlIFwKK3doaWNoIHNoaXBzIHdpdGggdGhlIFJlcXVlc3RzIGNvZGViYXNlLCBhbmQgaXMgZGVyaXZlZCBmcm9tIE1vemlsbGEgRmlyZWZveCdzIGNhbm9uaWNhbCBzZXQuIgorSE9NRVBBR0UgPSAiIGh0dHA6Ly9jZXJ0aWZpLmlvLyIKKworTElDRU5TRSA9ICJJU0MiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mNzdmNjFkMTRlZTZmZWFjNDIyOGQzZWJkMjZjYzFmMSIKKworU1JDX1VSSVttZDVzdW1dID0gIjRkNTIyOWM0ZDlmMGE0YTc5MTA2ZjllMmMyY2ZkMzgxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI1YjY0YzdkYTRjZDc0Nzk1OTRkMDM1YzA4YzJkODA5ZWI0YWFiM2EyNmU1YTk5MGVhOThjYzQ1MGMzMjBmMWYiCisKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tY2VydGlmaS5pbmMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jZmZpXzEuMTMuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2ZmaV8xLjEzLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4ODgwODQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jZmZpXzEuMTMuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1jZmZpLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jZmZpXzEuMTQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2ZmaV8xLjE0LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNjOGVlMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2ZmaV8xLjE0LjAuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSBmb3IgUHl0aG9uIGNhbGxpbmcgQyBjb2RlIgorSE9NRVBBR0UgPSAiaHR0cDovL2NmZmkucmVhZHRoZWRvY3Mub3JnLyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTY3N2UyZmRiZjdjZGRhNjFkNmRkMmI1N2RmNTQ3YmYiCitERVBFTkRTICs9ICJsaWJmZmkgJHtQWVRIT05fUE59LXB5Y3BhcnNlciIKKworU1JDX1VSSVttZDVzdW1dID0gIjc0ODQ1ZjhkMmI3YjU4M2RkOWEzNTc0ZjQwMmVkZjM5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJkMzg0ZjRhMTI3YTE1YmE3MDEyMDdmNzYzOWQ5NDEwNjY5M2I2Y2Q2NDE3M2Q2Yzg5ODhlMmMyNWYzYWMyYjYiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKKyAgICAke1BZVEhPTl9QTn0taW8gXAorICAgICR7UFlUSE9OX1BOfS1weWNwYXJzZXIgXAorICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2hhcmRldF8zLjAuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2hhcmRldF8zLjAuNC5iYgppbmRleCAzOGQ4MTIyLi44MDc4NWI4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNoYXJkZXRfMy4wLjQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jaGFyZGV0XzMuMC40LmJiCkBAIC0xLDcgKzEsMjQgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWNoYXJkZXQuaW5jCitTVU1NQVJZID0gIlVuaXZlcnNhbCBlbmNvZGluZyBkZXRlY3RvciBmb3IgUHl0aG9uIDIgYW5kIDMiCitMSUNFTlNFID0gIkxHUEwtMi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMiCiAKLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICAjIHJlbmFtZSBzY3JpcHRzIHRoYXQgd291bGQgY29uZmxpY3Qgd2l0aCB0aGUgUHl0aG9uIDIgYnVpbGQgb2YgY2hhcmRldAotICAgIG12ICR7RH0ke2JpbmRpcn0vY2hhcmRldGVjdCAke0R9JHtiaW5kaXJ9L2NoYXJkZXRlY3QzCi19CitTUkNfVVJJW21kNXN1bV0gPSAiN2RkMWJhN2Y5Yzc3ZTMyMzUxYjBhMGNmYWNmNDA1NWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODRhYjkyZWQxYzRkNGYxNjkxNmUwNTkwNmI2Yjc1YTZjMGZiNWRiODIxY2M2NWU3MGNiZDY0YTNlMmE1ZWFhZSIKKworIyBzZXR1cC5weSBvZiBjaGFyZGV0IG5lZWRzIHRoaXMuCitERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tcHl0ZXN0LXJ1bm5lci1uYXRpdmUiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitQQUNLQUdFUyA9KyAiJHtQTn0tY2xpIgorRklMRVNfJHtQTn0tY2xpICs9ICIgXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2NoYXJkZXQvY2xpIFwKKyIKKworUkRFUEVORFNfJHtQTn0tY2xpID0gIiR7UE59ICIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jbGlja183LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNsaWNrXzcuMC5iYgppbmRleCAxOTIwNjQ0Li5jZmEzZTBmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNsaWNrXzcuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNsaWNrXzcuMC5iYgpAQCAtMSwyICsxLDI2IEBACitTVU1NQVJZID0gIkEgc2ltcGxlIHdyYXBwZXIgYXJvdW5kIG9wdHBhcnNlIGZvciBwb3dlcmZ1bCBjb21tYW5kIGxpbmUgdXRpbGl0aWVzLiIKK0RFU0NSSVBUSU9OID0gIlwKK0NsaWNrIGlzIGEgUHl0aG9uIHBhY2thZ2UgZm9yIGNyZWF0aW5nIGJlYXV0aWZ1bCBjb21tYW5kIGxpbmUgaW50ZXJmYWNlcyBcCitpbiBhIGNvbXBvc2FibGUgd2F5IHdpdGggYXMgbGl0dGxlIGNvZGUgYXMgbmVjZXNzYXJ5LiBJdCdzIHRoZSAiQ29tbWFuZCBcCitMaW5lIEludGVyZmFjZSBDcmVhdGlvbiBLaXQiLiBJdCdzIGhpZ2hseSBjb25maWd1cmFibGUgYnV0IGNvbWVzIHdpdGggXAorc2Vuc2libGUgZGVmYXVsdHMgb3V0IG9mIHRoZSBib3guIgorSE9NRVBBR0UgPSAiaHR0cDovL2NsaWNrLnBvY29vLm9yZy8iCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UucnN0O21kNT1jMTNlZDg5MGIyMTBhODgyYzE3NzgyMTY2OTRjOThjNyIKKworU1JDX1VSSVttZDVzdW1dID0gIjdmNTNkNTBmN2I3MzczZWJjNzk2M2Y5ZmY2OTc0NTBhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjViOTRiNDk1MjFmNjQ1NjY3MGZkYjMwY2Q4MmE0ZWNhOTQxMjc4OGE5M2ZhNmRkNmRmNzJjOTRkNWE4ZmYyZDciCisKK1BZUElfUEFDS0FHRSA9ICJDbGljayIKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tY2xpY2suaW5jCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImNsaWNrLyg/UDxwdmVyPlxkKyhcLlxkKykrKS8iCisKK0NMRUFOQlJPS0VOID0gIjEiCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWlvIFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgICAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY21kMl8wLjkuMjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNtZDJfMC45LjIzLmJiCmluZGV4IGY1YzVjN2UuLmEyYmYwYzQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY21kMl8wLjkuMjMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jbWQyXzAuOS4yMy5iYgpAQCAtMSw5ICsxLDIxIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1jbWQyLmluYworU1VNTUFSWSA9ICJFeHRyYSBmZWF0dXJlcyBmb3Igc3RhbmRhcmQgbGlicmFyeSdzIGNtZCBtb2R1bGUiCitIT01FUEFHRSA9ICJodHRwOi8vcGFja2FnZXMucHl0aG9uLm9yZy9jbWQyLyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTc5MWNkMjRjYTdkMTgwNzM4OGNjZDU1Y2QwNjZkZWYiCisKK0RFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzLXNjbS1uYXRpdmUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ZGI2NmEwNjIxMGQ1ZjFlZGI0NDY5M2I4ODdlZDYyYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4YWQxMmVmM2NjNDZkMDMwNzNjNTQ1YjZlODBhM2Y4NGE1OTIxZjY2NTMwNzNhNjBlN2Q5YTdmZjNiMzUyYzllIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKIAogUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tYXR0cnMgXAorICAgICR7UFlUSE9OX1BOfS1jb2xvcmFtYSBcCiAgICAgJHtQWVRIT05fUE59LXB5cGVyY2xpcCBcCiAgICAgJHtQWVRIT05fUE59LWNvbG9yYW1hIFwKLSAgICAke1BZVEhPTl9QTn0tYXR0cnMgXAogICAgICR7UFlUSE9OX1BOfS13Y3dpZHRoIFwKLSAgICAiCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29sb3JlZGxvZ3NfMTAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29sb3JlZGxvZ3NfMTAuMC5iYgppbmRleCAzODcyMzk5Li44OGZhYzg3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbG9yZWRsb2dzXzEwLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb2xvcmVkbG9nc18xMC4wLmJiCkBAIC0xLDIgKzEsMjQgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWNvbG9yZWRsb2dzLmluYworREVTQ1JJUFRJT04gPSAiQ29sb3JlZCB0ZXJtaW5hbCBvdXRwdXQgZm9yIFB5dGhvbidzIGxvZ2dpbmcgbW9kdWxlIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9jb2xvcmVkbG9ncy5yZWFkdGhlZG9jcy5pbyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NjkwZGEyOThhNDM4MDU3OTdhNGZhN2JiZTE4MGIzYzYiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwYTE4Njk2NmExOTU1ZmZmOGNmOTQ4OTM3M2U2OTFkOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiODY5YTJkZGEzZmE4ODE1NGI5ZGQ4NTBlMjc4MjhkODc1NWJmYWI1YTgzOGExYzk3ZmJjODUwYzZlMzc3YzM2IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIHNlZCAtaWUgInMvZmluZF9wdGhfZGlyZWN0b3J5KCksLycnLC9nIiAke1N9L3NldHVwLnB5Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIHJtIC1yZiAke0R9JHtkYXRhZGlyfQorfQorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1odW1hbmZyaWVuZGx5IFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbG9ybG9nXzQuMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb2xvcmxvZ180LjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTRjNTc1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb2xvcmxvZ180LjEuMC5iYgpAQCAtMCwwICsxLDExIEBACitERVNDUklQVElPTiA9ICJBIGNvbG9yZWQgZm9ybWF0dGVyIGZvciB0aGUgcHl0aG9uIGxvZ2dpbmcgbW9kdWxlIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Jvcm50eXBpbmcvcHl0aG9uLWNvbG9ybG9nIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUubWQ7bWQ1PTA1NTkyZjdhNWI4M2JmYzc1NmY2MmRiZDcwYTliOWI1IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUFlQSV9QQUNLQUdFID0gImNvbG9ybG9nIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjVmNzliNzY0MjExMzJlMmE5ZTA4ZGExNWU0ZTBhNzMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzBhYWVmNWFiMmExODczZGVjNWRhMzhmZDZiYTU2OGZhNzYxYzlmYTEwYjQwMjQxMDI3ZmEzZWRlYTQ3ZjNkMiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29uZmlnYXJncGFyc2VfMC4xNS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb25maWdhcmdwYXJzZV8wLjE1LjEuYmIKaW5kZXggNjk4ZWNjZi4uMDc5Nzg5OCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb25maWdhcmdwYXJzZV8wLjE1LjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb25maWdhcmdwYXJzZV8wLjE1LjEuYmIKQEAgLTEsMyArMSwyMiBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tY29uZmlnYXJncGFyc2UuaW5jCitTVU1NQVJZID0gIkEgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgYXJncGFyc2UgdGhhdCBhbGxvd3Mgb3B0aW9ucyB0byBhbHNvIGJlIHNldCB2aWEgY29uZmlnIGZpbGVzIGFuZC9vciBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2J3Mi9Db25maWdBcmdQYXJzZSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZGE3NDY0NjM3MTRjYzM1OTk5ZWQ5YTQyMzM5ZjI5NDMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhYmExNWI3OTczYjdhNzBiZWE4NmZkNjkyODlmOGZlMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiYWFmMGZkMmMxYzEwOGQwMDdmNDAyZGFiNTQ4MWFjNWYxMmQ3N2QwMzQ4MjViZjVhMjdmODIyNDc1N2JkMGFjIgorCitQWVBJX1BBQ0tBR0UgPSAiQ29uZmlnQXJnUGFyc2UiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitQQUNLQUdFQ09ORklHID89ICJ5YW1sIgorUEFDS0FHRUNPTkZJR1t5YW1sXSA9ICIsLCwke1BZVEhPTl9QTn0tcHl5YW1sIgorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1jb3JlIFwKKyAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29uZmlncGFyc2VyXzMuOC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb25maWdwYXJzZXJfMy44LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3MGNiYTUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb25maWdwYXJzZXJfMy44LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWNvbmZpZ3BhcnNlci5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29uZmlncGFyc2VyXzQuMC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb25maWdwYXJzZXJfNC4wLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk2NjYwOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29uZmlncGFyc2VyXzQuMC4yLmJiCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAiVGhpcyBtb2R1bGUgcHJvdmlkZXMgdGhlIENvbmZpZ1BhcnNlciBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIGEgYmFzaWMgY29uZmlndXJhdGlvbiBsYW5ndWFnZSB3aGljaCBwcm92aWRlcyBhIHN0cnVjdHVyZSBzaW1pbGFyIHRvIHdoYXQncyBmb3VuZCBpbiBNaWNyb3NvZnQgV2luZG93cyBJTkkgZmlsZXMuIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitIT01FUEFHRSA9ICJodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvY29uZmlncGFyc2VyLmh0bWwiCitMSUNFTlNFID0gIk1JVCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTEwO2VuZGxpbmU9MTA7bWQ1PTIzZjlhZDVjYWQzZDhjYzAzMzZlMmE1ZDhhODdlMWZhIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzU5MjZjYzRiOTEzM2YxZjljYTcwYTFmZDJmZGYyMzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzdkMjgyNjg3YTUzMDgzMTliZjNkMmU3NzA2ZTU3NWM2MzViMGE0NzAzNDI2NDFjOTNiZWEwZWEzYjUzMzFkZiIKKworREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXNldHVwdG9vbHMtc2NtLW5hdGl2ZSIKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbmZpZ3NoZWxsLWZiXzEuMS4yOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29uZmlnc2hlbGwtZmJfMS4xLjI4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkOWVjMDcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbmZpZ3NoZWxsLWZiXzEuMS4yOC5iYgpAQCAtMCwwICsxLDE2IEBACitTVU1NQVJZID0gIkEgUHl0aG9uIGxpYnJhcnkgZm9yIGJ1aWxkaW5nIGNvbmZpZ3VyYXRpb24gc2hlbGxzIgorREVTQ1JJUFRJT04gPSAiY29uZmlnc2hlbGwtZmIgaXMgYSBQeXRob24gbGlicmFyeSB0aGF0IHByb3ZpZGVzIGEgZnJhbWV3b3JrIGZvciBcCitidWlsZGluZyBzaW1wbGUgYnV0IG5pY2UgQ0xJLWJhc2VkIGFwcGxpY2F0aW9ucy4gVGhpcyBydW5zIHdpdGggUHl0aG9uIDIgYW5kIFwKKzJ0bzMgaXMgcnVuIGJ5IHNldHVwLnB5IHRvIHJ1biBvbiBQeXRob24gMy4iCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFkZWNlNzgyMWJmM2ZkNzBmZTEzMDllYWEzN2Q1MmEyIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3Blbi1pc2NzaS9jb25maWdzaGVsbC1mYi5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPW1hc3RlciIKK1NSQ1JFViA9ICJkYThmMGNlZjExNGU3MzQzYTdhZTk2ZmYxZGI3YzhjNTc0ZjgxOWJlIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zLW1vZHVsZXMgcHl0aG9uMy1mY250bCBweXRob24zLXNpeCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29uc3RhbnRseV8xNS4xLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbnN0YW50bHlfMTUuMS4wLmJiCmluZGV4IDNmNjY3NTQuLmFkMjRmNmQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29uc3RhbnRseV8xNS4xLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb25zdGFudGx5XzE1LjEuMC5iYgpAQCAtMSwyICsxLDExIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1jb25zdGFudGx5LmluYworREVTQ1JJUFRJT04gPSAiU3ltYm9saWMgY29uc3RhbnRzIGluIFB5dGhvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS90d2lzdGVkL2NvbnN0YW50bHkiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWUzOTNlNGRkZDIyM2UzYTc0OTgyZWZhNzg0Zjg5ZmQ3IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjA3NjJmMDgzZDgzMDM5NzU4ZTUzZjhjZjAwODZlZWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTg2MzcyZWI5MjA1OTg3M2UyOWViYTRmOWRlYzgzODE1NDFiNGQzODM0NjYwNzA3ZmFmOGJhNTkxNDZkZmMzNSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tanNvbiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29udGV4dGxpYjJfMC42LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbnRleHRsaWIyXzAuNi4wLmJiCmluZGV4IDFjMGI1NjAuLjYwNzRlZmEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29udGV4dGxpYjJfMC42LjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb250ZXh0bGliMl8wLjYuMC5iYgpAQCAtMSwzICsxLDEyIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWNvbnRleHRsaWIyLmluYworREVTQ1JJUFRJT04gPSAiQmFja3BvcnRzIGFuZCBlbmhhbmNlbWVudHMgZm9yIHRoZSBjb250ZXh0bGliIG1vZHVsZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9jb250ZXh0bGliMi5yZWFkdGhlZG9jcy5vcmcvIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIlBTRiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT00M2QxYzc4MjdlOGZhZDY0NTRiNTUzY2FmMGUxZDczNCIKIAorU1JDX1VSSVttZDVzdW1dID0gImQwM2E2MzEwNzNiNDAwNzNiNWM0MTM2NGFkOGY1OTc5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcxOTdhYTczNjc3N2NhYWM1MTNkYmQ4MDA5NDRjMjA5YTQ5NzY1YmYxOTc5YjEyYjAzN2RjZTAyNzcwNzdlZDMiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNyY21vZF8xLjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNyY21vZF8xLjcuYmIKaW5kZXggNjk5NmIxMy4uMTRhMzQ0ZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcmNtb2RfMS43LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3JjbW9kXzEuNy5iYgpAQCAtMSwyICsxLDE0IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1jcmNtb2QuaW5jCitTVU1NQVJZID0gIkEgUHl0aG9uIG1vZHVsZSBmb3IgZ2VuZXJhdGluZyBvYmplY3RzIHRoYXQgY29tcHV0ZSB0aGUgQ3ljbGljIFJlZHVuZGFuY3kgQ2hlY2suIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2NyY21vZCIKK0xJQ0VOU0UgPSAiTUlUIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mOWExOTI5MTYyN2NhZDJkMWRmYmZjZjNjOWZiODVjMiIKKworU1JDX1VSSVttZDVzdW1dID0gIjJkNWI5MjExN2Q5NThkY2VhZDk0ZjllMTdmNTRjZDMyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRjNzA1MWEwZGI1ZjJiZDQ4NjY1YTk5MGQzZWMxY2MzMDVhNDY2YTc3MzU4Y2E0NDkyODI2ZjQxZjI4MzYwMWUiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXVuaXR0ZXN0IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNyeXB0b2dyYXBoeS12ZWN0b3JzXzIuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3J5cHRvZ3JhcGh5LXZlY3RvcnNfMi44LmJiCmluZGV4IDU4OTk0ZmYuLjk0OGFhYjkgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3J5cHRvZ3JhcGh5LXZlY3RvcnNfMi44LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3J5cHRvZ3JhcGh5LXZlY3RvcnNfMi44LmJiCkBAIC0xLDIgKzEsMjAgQEAKK1NVTU1BUlkgPSAiVGVzdCB2ZWN0b3JzIGZvciB0aGUgY3J5cHRvZ3JhcGh5IHBhY2thZ2UuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9jcnlwdG9ncmFwaHkuaW8vIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAgfCBCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04YzM2MTdkYjRmYjZmYWUwMWYxZDI1M2FiOTE1MTFlNCIKKworU1JDX1VSSVttZDVzdW1dID0gImE3NDRlZDI5YmI5ZWY1NmIzYTUwMzE3ZmVhM2IyMThlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjZDMyMTc0YzU2YTNlY2E3MmY2NGFmNDNjMWRhYWNhYWU3NThjZmE1ZmY5ZDI4MGRmY2Y4MThmYTExZWYxMTYiCisKK1BZUElfUEFDS0FHRSA9ICJjcnlwdG9ncmFwaHlfdmVjdG9ycyIKKwogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1jcnlwdG9ncmFwaHktdmVjdG9ycy5pbmMKKworREVQRU5EUyArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tY3J5cHRvZ3JhcGh5IFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNyeXB0b2dyYXBoeV8yLjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNyeXB0b2dyYXBoeV8yLjguYmIKaW5kZXggMTk1OTIzMy4uYzc1ZGFiYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcnlwdG9ncmFwaHlfMi44LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3J5cHRvZ3JhcGh5XzIuOC5iYgpAQCAtMSw4ICsxLDY1IEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWNyeXB0b2dyYXBoeS5pbmMKK1NVTU1BUlkgPSAiUHJvdmlkZXMgY3J5cHRvZ3JhcGhpYyByZWNpcGVzIGFuZCBwcmltaXRpdmVzIHRvIHB5dGhvbiBkZXZlbG9wZXJzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9jcnlwdG9ncmFwaHkuaW8vIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAgfCBCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wOTdmODA1ODM3NzAwY2ZhYzU3MmFjMjc0Y2QzODEyNCIKIAogTERTSEFSRUQgKz0gIi1wdGhyZWFkIgogCitTUkNfVVJJW21kNXN1bV0gPSAiNzc3MzAwNThiNTU2YzZkOTgzODY3OWE5NGM2MjI5Y2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2NkYTFmMGVkODc0NzMzOWJiZGY3MWI5ZjM4Y2E3NGM3YjU5MmYyNGY2NWNkYjNhYjM3NjVlNGIwMjg3MTY1MSIKKwogU1JDX1VSSSArPSAiIFwKICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKICIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK0RFUEVORFMgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWNmZmkgXAorICAgICR7UFlUSE9OX1BOfS1jZmZpLW5hdGl2ZSBcCisgICAgJHtQWVRIT05fUE59LWFzbjFjcnlwdG8gXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorIgorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tY2ZmaSBcCisgICAgJHtQWVRIT05fUE59LWlkbmEgXAorICAgICR7UFlUSE9OX1BOfS1hc24xY3J5cHRvIFwKKyAgICAke1BZVEhPTl9QTn0tc2V0dXB0b29scyBcCisgICAgJHtQWVRIT05fUE59LXNpeCBcCisiCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tY2ZmaSBcCisgICAgJHtQWVRIT05fUE59LWlkbmEgXAorICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKKyAgICAke1BZVEhPTl9QTn0tYXNuMWNyeXB0byBcCisgICAgJHtQWVRIT05fUE59LXNldHVwdG9vbHMgXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKyAgICAke1BOfSBcCisgICAgJHtQWVRIT05fUE59LWNyeXB0b2dyYXBoeS12ZWN0b3JzIFwKKyAgICAke1BZVEhPTl9QTn0taXNvODYwMSBcCisgICAgJHtQWVRIT05fUE59LXByZXRlbmQgXAorICAgICR7UFlUSE9OX1BOfS1weXRlc3QgXAorICAgICR7UFlUSE9OX1BOfS1weXR6IFwKKyIKKworaW5oZXJpdCBwdGVzdAorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBjcCAtcmYgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvaGF6bWF0CisgICAgY3AgLXJmICR7U30vdGVzdHMvaGF6bWF0LyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvaGF6bWF0LworfQorCitGSUxFU18ke1BOfS1kYmcgKz0gIiBcCisgICAgJHtsaWJkaXJ9LyR7UFlUSE9OX1BOfTIuNy9zaXRlLXBhY2thZ2VzLyR7U1JDTkFNRX0vaGF6bWF0L2JpbmRpbmdzLy5kZWJ1ZyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3ljbGVyXzAuMTAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3ljbGVyXzAuMTAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDIxYmU4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jeWNsZXJfMC4xMC4wLmJiCkBAIC0wLDAgKzEsMTYgQEAKK1NVTU1BUlkgPSAiQ29tcG9zYWJsZSBzdHlsZSBjeWNsZXMiCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9tYXRwbG90bGliL2N5Y2xlciIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzcxM2ZlNDJjZDc2NmIxNWM3MTBlMTkzOTJiZmE4MTEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0Y2I0MjkxN2FjNTAwN2QxY2RmZjZjY2NmZTJkMDE2YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjZDdiMmQxMDE4MjU4ZDcyNDdhNzE0MjVlOWYyNjQ2M2RmYjQ0NGQ0MTFjMzk1Njk5NzJmNGNlNTg2YjBjOWQ4IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICBweXRob24zLWNvcmUgXAorICAgIHB5dGhvbjMtc2l4IFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kZWNvcmF0b3JfNC40LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRlY29yYXRvcl80LjQuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kZWNvcmF0b3JfNC40LjEuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGVjb3JhdG9yXzQuNC4yLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvbWluYXRlXzIuNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb21pbmF0ZV8yLjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTMwNGNjYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvbWluYXRlXzIuNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWRvbWluYXRlLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb21pbmF0ZV8yLjUuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9taW5hdGVfMi41LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ4YzU5NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9taW5hdGVfMi41LjEuYmIKQEAgLTAsMCArMSwxMyBAQAorU1VNTUFSWSA9ICJEb21pbmF0ZSBpcyBhIFB5dGhvbiBsaWJyYXJ5IGZvciBjcmVhdGluZyBhbmQgbWFuaXB1bGF0aW5nIEhUTUwgZG9jdW1lbnRzIHVzaW5nIGFuIGVsZWdhbnQgRE9NIEFQSS4iCitMSUNFTlNFID0gIkxHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1iNTJmMmQ1N2QxMGM0ZjdlZTY3YTdlYjk2MTVkNWQyNCIKKworU1JDX1VSSVttZDVzdW1dID0gIjM1ZWViNmI1NTg3YzhjOWE1MWNkMjJjODNlMDdhYzQ5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjliMDU0ODE2MDVlYThjMGFmZDBhOThjMDE1NmE5ZmI3OGQ5YzQwNjM2OGQ2NmIzZTZmZWRmMzY5MjBmYjlkNzgiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWVuZ2luZWlvXzMuMTEuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZW5naW5laW9fMy4xMi4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWVuZ2luZWlvXzMuMTEuMi5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1lbmdpbmVpb18zLjEyLjEuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZXQteG1sZmlsZV8xLjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZXQteG1sZmlsZV8xLjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmZmMTUwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ldC14bWxmaWxlXzEuMC4xLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiZXRfeG1sZmlsZSBpcyBhIGxvdyBtZW1vcnkgbGlicmFyeSBmb3IgY3JlYXRpbmcgbGFyZ2UgWE1MIGZpbGVzIgorREVTQ1JJUFRJT04gPSAiSXQgaXMgYmFzZWQgdXBvbiB0aGUgeG1sZmlsZSBtb2R1bGUgZnJvbSBseG1sIHdpdGggdGhlIGFpbSBvZiBhbGxvd2luZyBjb2RlIFwKK3RvIGJlIGRldmVsb3BlZCB0aGF0IHdpbGwgd29yayB3aXRoIGJvdGggbGlicmFyaWVzLiBJdCB3YXMgZGV2ZWxvcGVkIGluaXRpYWxseSBmb3IgXAordGhlIG9wZW5weXhsIHByb2plY3QgYnV0IGlzIG5vdyBhIHN0YW5kYWxvbmUgbW9kdWxlLiIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9iaXRidWNrZXQub3JnL29wZW5weXhsL2V0X3htbGZpbGUvc3JjL2RlZmF1bHQvIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9YjNkODljYWU2NmYyNmMzYTA3OTliZThhOTZmMzE3OGIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmNDc5NDBmZDlkNTU2Mzc1NDIwYjJlMjc2NDc2Y2ZhZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MTRkOTcyMmQ1NzJmNjI0NjMwMmM0NDkxODQ2ZDJjMzkzYzE5OWNmYTRlZGM5YWY1OTM0Mzc2OTE2ODMzMzViIgorCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWNvbXByZXNzaW9uICR7UFlUSE9OX1BOfS1pbyAke1BZVEhPTl9QTn0tcHByaW50ICR7UFlUSE9OX1BOfS1zaGVsbCIKKworaW5oZXJpdCBzZXR1cHRvb2xzMworUFlQSV9QQUNLQUdFID89ICJldF94bWxmaWxlIgorUFlQSV9TUkNfVVJJID89ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL2UvZXRfeG1sZmlsZS9ldF94bWxmaWxlLTEuMC4xLnRhci5neiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorU1JDX1VSSSArPSAiJHtQWVBJX1NSQ19VUkl9IgorUyA9ICIke1dPUktESVJ9LyR7UFlQSV9QQUNLQUdFfS0ke1BWfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZXZkZXZfMS4yLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWV2ZGV2XzEuMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTkyYjZlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZXZkZXZfMS4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tZXZkZXYuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWV2ZGV2XzEuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ldmRldl8xLjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODdiZjJmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ldmRldl8xLjMuMC5iYgpAQCAtMCwwICsxLDMgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tZXZkZXYuaW5jCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2stanNvbnBpZnlfMS41LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrLWpzb25waWZ5XzEuNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkN2U5YjUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrLWpzb25waWZ5XzEuNS4wLmJiCkBAIC0wLDAgKzEsMTQgQEAKK0RFU0NSSVBUSU9OID0gIkEgRmxhc2sgZXh0ZW5zaW9uIGFkZGluZyBhIGRlY29yYXRvciBmb3IgSlNPTlAgc3VwcG9ydCIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9Db3J5RG9scGhpbi9mbGFzay1qc29ucGlmeSIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUucnN0O21kNT1iZDU5NDQ1YTIzNGEwYzgyNTBiMzkxNzhkNDJlMzE0OCIKKworUFlQSV9QQUNLQUdFID0gIkZsYXNrLUpzb25waWZ5IgorCitTUkNfVVJJW21kNXN1bV0gPSAiOGExMGUzNzk0MmM0M2Q5M2QxMDc2NDRhM2ZlNzdkOTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGFjNGM3MzJhYTViMTFkOWY2YzJkZTU4MDY1ZDNiNjY5ZjEzOTUxOGNhOGY1MjliY2U5NDM4MTdlMmZlZGJmYiIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tZmxhc2siCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrLWp3dF8wLjMuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2stand0XzAuMy4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3OWEyZTIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrLWp3dF8wLjMuMi5iYgpAQCAtMCwwICsxLDE0IEBACitERVNDUklQVElPTiA9ICJKV1QgdG9rZW4gYXV0aGVudGljYXRpb24gZm9yIEZsYXNrIGFwcHMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbWF0dHVwc3RhdGUvZmxhc2stand0IgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWZmMDBkYjQxYzQ3ZWM4NGI0NTY3YThiM2MyNDZhOTU5IgorCitQWVBJX1BBQ0tBR0UgPSAiRmxhc2stSldUIgorCitTUkNfVVJJW21kNXN1bV0gPSAiODc4YWQ3OWExMmFmYTcwYWQzOGExMmQ1ZmZkMmRjMWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDljMDY3MmZiZGUwZjFjZDMzNzRiZDgzNDkxOGQyODk1NmUzYzUyMWM3ZTAwMDg5Y2RjNTM4MGQzMjNiZDBhZCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tcHlqd3QgJHtQWVRIT05fUE59LWZsYXNrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1nZW9qc29uXzIuNS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1nZW9qc29uXzIuNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjM2MyM2IKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdlb2pzb25fMi41LjAuYmIKQEAgLTAsMCArMSwxMyBAQAorU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgYW5kIHV0aWxpdGllcyBmb3IgR2VvSlNPTiIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9nZW9qc29uLyIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5yc3Q7bWQ1PWY0ODk3MmFiZTVjZGRlZTc5ZTMwMTU3NDc0MmVkNzQ1IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTQ3NTNlZDI4Njc4ODI4YjFkZTczZjY4YjA0ZTIzMjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmU0YmI3YWNlNDIyNmE0NWQ5YzhjOGIxMzQ4YjNmYzQzNTQwNjU4MzU5ZjkzYzNmN2UwM2VmYTlmMTVmNjU4YSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zLXNpbXBsZWpzb24gcHl0aG9uMy1tYXRoIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdtcXR0XzAuNC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1nbXF0dF8wLjQuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY4OTA4Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdtcXR0XzAuNC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJDbGllbnQgZm9yIE1RVFQgcHJvdG9jb2wiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vd2lhbG9uL2dtcXR0IgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05MDNmMTc5MjYyMWEzYjM1ZWU1NDZkYTc1ZDEzOTE3NyIKLQotU1JDX1VSSVttZDVzdW1dID0gImFmM2EyYzZjMmY4ZTNjOTM0YjMxMTU5ZmZkY2U1ZmQ2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI5NmJjYThhNTRiOGFmMDU3ZDRjYzQyYTc5ZjllMmI0MGNkYmI1YTJiZmViYmM1ZjA1ZWUzNTU3NWQzZTMwODkiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgIHB5dGhvbjMtYXN5bmNpbyBcCi0gICAgcHl0aG9uMy1jb3JlIFwKLSAgICBweXRob24zLWRhdGV0aW1lIFwKLSAgICBweXRob24zLWpzb24gXAotICAgIHB5dGhvbjMtbG9nZ2luZyBcCi0gICAgcHl0aG9uMy1uZXRjbGllbnQgXAotICAgIHB5dGhvbjMtdHlwaW5nIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1nbXF0dF8wLjYuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ21xdHRfMC42LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ0YWM4OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ21xdHRfMC42LjIuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJDbGllbnQgZm9yIE1RVFQgcHJvdG9jb2wiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vd2lhbG9uL2dtcXR0IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05MDNmMTc5MjYyMWEzYjM1ZWU1NDZkYTc1ZDEzOTE3NyIKKworU1JDX1VSSVttZDVzdW1dID0gImY3NjNmMTJjNWU2YmE2ZjBmYTBlYzRhNmRjOGMzZmQ5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNiM2MxMmNiNjJiYmMzZWUwYmQ4MWRhM2Q5ZmJkNzhjNTQxNDA5OGFhZjU4MjM2YzM2NjNlZGZlZGE1MjM3ZTAiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgIHB5dGhvbjMtYXN5bmNpbyBcCisgICAgcHl0aG9uMy1jb3JlIFwKKyAgICBweXRob24zLWRhdGV0aW1lIFwKKyAgICBweXRob24zLWpzb24gXAorICAgIHB5dGhvbjMtbG9nZ2luZyBcCisgICAgcHl0aG9uMy1uZXRjbGllbnQgXAorICAgIHB5dGhvbjMtdHlwaW5nIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ncnBjaW8vMDAwMS1zZXR1cC5weS1Eby1ub3QtbWl4LUMtYW5kLUMtY29tcGlsZXItb3B0aW9ucy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3JwY2lvLzAwMDEtc2V0dXAucHktRG8tbm90LW1peC1DLWFuZC1DLWNvbXBpbGVyLW9wdGlvbnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZmNTBhMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3JwY2lvLzAwMDEtc2V0dXAucHktRG8tbm90LW1peC1DLWFuZC1DLWNvbXBpbGVyLW9wdGlvbnMucGF0Y2gKQEAgLTAsMCArMSw3NCBAQAorRnJvbSAyZWY4YTg1OTMzZjNhYzM2YjI4OTk3OWZmOWVkZDQ5ZGQxMmQwZDE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgNCBBdWcgMjAxNyAwOTowNDowNyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBzZXR1cC5weTogRG8gbm90IG1peCBDIGFuZCBDKysgY29tcGlsZXIgb3B0aW9ucworCitFWFRSQV9FTlZfQ09NUElMRV9BUkdTIGlzIHVzZWQgYm90aCB3aXRoIENDIGFuZCBDWFgKK3NvIHVzaW5nIC1zdGQ9YysrMTEgb3IgLXN0ZD1nbnU5OSB0b2dldGhlciB3aWxsIGNhdXNlCitidWlsZCB0aW1lIGVycm9ycyBlc3BjaWFsbHkgd2l0aCBjbGFuZworCitlcnJvcjogaW52YWxpZCBhcmd1bWVudCAnLXN0ZD1nbnU5OScgbm90IGFsbG93ZWQgd2l0aCAnQysrJworCitnY2M3ICggZGVmYXVsdHMgYXJlIC1zdGQ9Z251MTEgYW5kIC1zdGQ9Z251KysxNCApCisgYXMgd2VsbCBjbGFuZyBkZWZhdWx0IHRvIHRoZXNlIHN0YW5kYXJkcyBtb2RlIG9yIG5ld2VyCithbnl3YXkKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworMS4gS2VlcCAnLXN0ZD1jKysxMScgYW5kICctc3RkPWdudTk5JyB0byBmaXggbmF0aXZlIGJ1aWxkIGVycm9yCit3aXRoIG9sZCBnY2MgKHN1Y2ggYXMgZ2NjIDUuNC4wIG9uIHVidW50dSAxNi4wNCksIGZvciBjbGFuZword2Ugd2lsbCByZW1vdmUgdGhlbSB0aHJvdWdoIEdSUENfUFlUSE9OX0NGTEFHUyBhdCBkb19jb21waWxlCitpbiBiYiByZWNpcGUuCisKKzIuIFdoaWxlIGV4cG9ydCBDQz0iZ2NjICIsIGNjX2FyZ3MgaXMgTm9uZSwgaXQgd2lsbAorY2F1c2Ugc3VicHJvY2Vzcy5Qb3BlbiBhbHdheXMgcmV0dXJuIDEuIE9uIGNlbnRvcyA4LCBpZiB5b3UgZG9uJ3QKK2luc3RhbGwgcGFja2FnZSBsaWJhdG9taWMsIHRoZXJlIHdpbGwgYmUgYSBuYXRpdmUgYnVpbGQgZXJyb3IKK2BjYW5ub3QgZmluZCAvdXNyL2xpYjY0L2xpYmF0b21pYy5zby4xLjIuMCcuCisKK0FkZCBubyBoYXJtICctZycgdG8gY2NfYXJncyBpZiBjY19hcmdzIGlzIGVtcHR5LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgc2V0dXAucHkgICAgICAgICAgICAgICAgICAgICAgfCA2ICsrKysrLQorIHNyYy9weXRob24vZ3JwY2lvL2NvbW1hbmRzLnB5IHwgNSArKysrLQorIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQoraW5kZXggZTk1MDA1Ny4uMWI2ODIyMSAxMDA2NDQKKy0tLSBhL3NldHVwLnB5CisrKysgYi9zZXR1cC5weQorQEAgLTE0NCw5ICsxNDQsMTMgQEAgRU5BQkxFX0RPQ1VNRU5UQVRJT05fQlVJTEQgPSBvcy5lbnZpcm9uLmdldCgKKyAKKyBkZWYgY2hlY2tfbGlua2VyX25lZWRfbGliYXRvbWljKCk6CisgICAiIiJUZXN0IGlmIGxpbmtlciBvbiBzeXN0ZW0gbmVlZHMgbGliYXRvbWljLiIiIgorKyAgY29tcGlsZXIsIGNjX2FyZ3MgPSBvcy5lbnZpcm9uLmdldCgnQ0MnKS5zcGxpdCgnICcsIDEpIG9yICdnY2MnCisrICBpZiBub3QgY2NfYXJnczoKKysgICAgICBjY19hcmdzID0gIi1nIgorKworICAgY29kZV90ZXN0ID0gKGInI2luY2x1ZGUgPGF0b21pYz5cbicgKworICAgICAgICAgICAgICAgIGInaW50IG1haW4oKSB7IHJldHVybiBzdGQ6OmF0b21pYzxpbnQ2NF90Pnt9OyB9JykKKy0gIGNjX3Rlc3QgPSBzdWJwcm9jZXNzLlBvcGVuKFsnY2MnLCAnLXgnLCAnYysrJywgJy1zdGQ9YysrMTEnLCAnLSddLAorKyAgY2NfdGVzdCA9IHN1YnByb2Nlc3MuUG9wZW4oW2NvbXBpbGVyLCBjY19hcmdzLCAnLXgnLCAnYysrJywgJy1zdGQ9YysrMTEnLCAnLSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49UElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPVBJUEUpCitkaWZmIC0tZ2l0IGEvc3JjL3B5dGhvbi9ncnBjaW8vY29tbWFuZHMucHkgYi9zcmMvcHl0aG9uL2dycGNpby9jb21tYW5kcy5weQoraW5kZXggMDY0ZGRhOS4uYTc1ZDhiOSAxMDA2NDQKKy0tLSBhL3NyYy9weXRob24vZ3JwY2lvL2NvbW1hbmRzLnB5CisrKysgYi9zcmMvcHl0aG9uL2dycGNpby9jb21tYW5kcy5weQorQEAgLTIxNiw3ICsyMTYsMTAgQEAgY2xhc3MgQnVpbGRFeHQoYnVpbGRfZXh0LmJ1aWxkX2V4dCk6CisgICAgICAgICAgICAgd2hlbiBpbnZva2VkIGluIEMgbW9kZS4gR0NDIGlzIG9rYXkgd2l0aCB0aGlzLCB3aGlsZSBjbGFuZyBpcyBub3QuCisgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgIyBUT0RPKGxpZGl6KSBSZW1vdmUgdGhlIGdlbmVyYXRlZCBhLm91dCBmb3Igc3VjY2VzcyB0ZXN0cy4KKy0gICAgICAgICAgICBjY190ZXN0ID0gc3VicHJvY2Vzcy5Qb3BlbihbJ2NjJywgJy14JywgJ2MnLCAnLXN0ZD1jKysxMScsICctJ10sCisrICAgICAgICAgICAgY29tcGlsZXIsIGNjX2FyZ3MgPSBvcy5lbnZpcm9uLmdldCgnQ0MnKS5zcGxpdCgnICcsIDEpIG9yICdnY2MnCisrICAgICAgICAgICAgaWYgbm90IGNjX2FyZ3M6CisrICAgICAgICAgICAgICAgIGNjX2FyZ3MgPSAiLWciCisrICAgICAgICAgICAgY2NfdGVzdCA9IHN1YnByb2Nlc3MuUG9wZW4oW2NvbXBpbGVyLCBjY19hcmdzLCAnLXgnLCAnYycsICctc3RkPWMrKzExJywgJy0nXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdycGNpby9wcGMtYm9yaW5nc3NsLXN1cHBvcnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdycGNpby9wcGMtYm9yaW5nc3NsLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFjMmFlZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3JwY2lvL3BwYy1ib3Jpbmdzc2wtc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDE3IEBACitMZXQgYm9yaW5nU1NMIGNvbXBpbGUgb24gcHBjMzIgYml0CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworLS0tIGEvdGhpcmRfcGFydHkvYm9yaW5nc3NsL2luY2x1ZGUvb3BlbnNzbC9iYXNlLmgKKysrKyBiL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9pbmNsdWRlL29wZW5zc2wvYmFzZS5oCitAQCAtOTksNiArOTksOSBAQCBleHRlcm4gIkMiIHsKKyAjZWxpZiAoZGVmaW5lZChfX1BQQzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykpICYmIGRlZmluZWQoX0xJVFRMRV9FTkRJQU4pCisgI2RlZmluZSBPUEVOU1NMXzY0X0JJVAorICNkZWZpbmUgT1BFTlNTTF9QUEM2NExFCisrI2VsaWYgKGRlZmluZWQoX19QUENfXykgfHwgZGVmaW5lZChfX3Bvd2VycGNfXykpCisrI2RlZmluZSBPUEVOU1NMXzMyX0JJVAorKyNkZWZpbmUgT1BFTlNTTF9QUEMKKyAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKSAmJiAhZGVmaW5lZChfX0xQNjRfXykKKyAjZGVmaW5lIE9QRU5TU0xfMzJfQklUCisgI2RlZmluZSBPUEVOU1NMX01JUFMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3JwY2lvL3Jpc2N2NjRfc3VwcG9ydC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3JwY2lvL3Jpc2N2NjRfc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTVkNTBiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ncnBjaW8vcmlzY3Y2NF9zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsMTYgQEAKK0FkZCBSSVNDLVYgNjRiaXQgc3VwcG9ydAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0gYS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvaW5jbHVkZS9vcGVuc3NsL2Jhc2UuaAorKysrIGIvdGhpcmRfcGFydHkvYm9yaW5nc3NsL2luY2x1ZGUvb3BlbnNzbC9iYXNlLmgKK0BAIC0xMDgsNiArMTA4LDkgQEAgZXh0ZXJuICJDIiB7CisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykgJiYgZGVmaW5lZChfX0xQNjRfXykKKyAjZGVmaW5lIE9QRU5TU0xfNjRfQklUCisgI2RlZmluZSBPUEVOU1NMX01JUFM2NAorKyNlbGlmIGRlZmluZWQoX19yaXNjdikgJiYgZGVmaW5lZChfX3Jpc2N2X3hsZW4pCisrI2RlZmluZSBPUEVOU1NMXzY0X0JJVAorKyNkZWZpbmUgT1BFTlNTTF9SSVNDVjY0CisgI2VsaWYgZGVmaW5lZChfX3BuYWNsX18pCisgI2RlZmluZSBPUEVOU1NMXzMyX0JJVAorICNkZWZpbmUgT1BFTlNTTF9QTkFDTApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ncnBjaW9fMS4xOS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ncnBjaW9fMS4xOS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDcyMGI0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3JwY2lvXzEuMTkuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tZ3JwY2lvLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ncnBjaW9fMS4yNy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ncnBjaW9fMS4yNy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzZDM2NzEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdycGNpb18xLjI3LjEuYmIKQEAgLTAsMCArMSwzNCBAQAorREVTQ1JJUFRJT04gPSAiR29vZ2xlIGdSUEMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdycGMuaW8vIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKKworREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXByb3RvYnVmIgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1zZXR1cC5weS1Eby1ub3QtbWl4LUMtYW5kLUMtY29tcGlsZXItb3B0aW9ucy5wYXRjaCIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZmlsZTovL3BwYy1ib3Jpbmdzc2wtc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9yaXNjdjY0X3N1cHBvcnQucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImNjYWY0ZTdlYjRmMDMxZDkyNmZiODAwMzVkMTkzYjk4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE4OTk3MjVkMzQ3NjlhNDk4ZWNkM2JlMTU0MDIxYzQzNjhkZDIyYmRjNjk0NzNmNmVjNDY3Nzk2OTZmNjI2YzQiCisKK1JERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1wcm90b2J1ZiBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tc2V0dXB0b29scyBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyIKKworaW5oZXJpdCBzZXR1cHRvb2xzMworaW5oZXJpdCBweXBpCisKK2V4cG9ydCBHUlBDX1BZVEhPTl9ESVNBQkxFX0xJQkNfQ09NUEFUSUJJTElUWSA9ICIxIgorCitkb19jb21waWxlX3ByZXBlbmRfdG9vbGNoYWluLWNsYW5nKCkgeworICAgIGV4cG9ydCBHUlBDX1BZVEhPTl9DRkxBR1M9Jy1mdmlzaWJpbGl0eT1oaWRkZW4gLWZuby13cmFwdiAtZm5vLWV4Y2VwdGlvbnMnCit9CisKK0NMRUFOQlJPS0VOID0gIjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworQ0NBQ0hFX0RJU0FCTEUgPSAiMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3VuaWNvcm5fMjAuMC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ndW5pY29ybl8yMC4wLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJkOGQ1MQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3VuaWNvcm5fMjAuMC40LmJiCkBAIC0wLDAgKzEsMTEgQEAKK1NVTU1BUlkgPSAiV1NHSSBIVFRQIFNlcnZlciBmb3IgVU5JWCIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mNzVmM2ZiOTRjZGVhYjFkNjA3ZTJhZGFhNjA3Nzc1MiIKKworU1JDX1VSSVttZDVzdW1dID0gIjU0MzY2OWZjYmI1NzM5ZWUyYWY3NzE4NGM1ZTU3MWExIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE5MDRiYjJiOGE0MzY1ODgwNzEwOGQ1OWMzZjNkNTZjMmI2MTIxYTcwMTE2MWRlMGRkZjlhZDE0MDA3M2M2MjYiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXNldHVwdG9vbHMgJHtQWVRIT05fUE59LWZjbnRsIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1oYXZlcnNpbmVfMi4yLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWhhdmVyc2luZV8yLjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzJjYzdkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1oYXZlcnNpbmVfMi4yLjAuYmIKQEAgLTAsMCArMSwxMiBAQAorU1VNTUFSWSA9ICJDYWxjdWxhdGUgdGhlIGRpc3RhbmNlIGJldHdlZW4gMiBwb2ludHMgb24gRWFydGgiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9NSVQ7bWQ1PTA4MzVhZGU2OThlMGJjZjg1MDZlY2RhMmY3YjRmMzAyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNmIxYmFkZWI2M2FhYzYyMTRjOTc4ZDA3YTRlY2QxNzEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjcxMGFhZjMyYzQ0MmE2ZDA0YWE4OTY3OGJlNTVlM2Y2YzExZjk3NTJmYzAxYzIxNmU4OWIxMzEyMGIzNjI2OSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zLW51bXB5IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWh0dHBsaWIyXzAuMTcuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaHR0cGxpYjJfMC4xNy4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MDQ3YzkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWh0dHBsaWIyXzAuMTcuMy5iYgpAQCAtMCwwICsxLDEwIEBACitTVU1NQVJZID0gIkEgY29tcHJlaGVuc2l2ZSBIVFRQIGNsaWVudCBsaWJyYXJ5LCBodHRwbGliMiBzdXBwb3J0cyBtYW55IGZlYXR1cmVzIGxlZnQgb3V0IG9mIG90aGVyIEhUVFAgbGlicmFyaWVzLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9odHRwbGliMi9odHRwbGliMiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9NGVkYjNmMDcyYTlkODE1NzM0NTMwZjYwODAzOWExNjciCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1NzMwNDkwY2ZlODMzNTA0NzdiNTRiMGE4YTE5MGM4YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzOWRkMTVhMzMzZjY3YmZiNzA3OThmYWE5ZGU4YTZlOTljODE5ZGE2YWQ4MmI3N2Y5YTI1OWE1YzdiMTIyNWEyIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaW1hZ2Vpb18yLjYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaW1hZ2Vpb18yLjYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmU0Yjk4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1pbWFnZWlvXzIuNi4wLmJiCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIGxpYnJhcnkgdGhhdCBwcm92aWRlcyBhbiBlYXN5IGludGVyZmFjZSB0byByZWFkIGFuZCBcCit3cml0ZSBhIHdpZGUgcmFuZ2Ugb2YgaW1hZ2UgZGF0YSwgaW5jbHVkaW5nIGFuaW1hdGVkIGltYWdlcywgdmlkZW8sIFwKK3ZvbHVtZXRyaWMgZGF0YSwgYW5kIHNjaWVudGlmaWMgZm9ybWF0cy4iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDhiN2ZkZDBkZmYwZmQxOGYzNWMwNTM2NWQzZDdiZjciCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9pbWFnZWlvL2ltYWdlaW8uZ2l0O3Byb3RvY29sPWh0dHBzIgorU1JDUkVWID0gIjBiMTYxNjQ5YjNlZTEwOGY4MGJkOTk0NjZhZWFiMmU2NWNmODJjZDgiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtbnVtcHkgcHl0aG9uMy1waWxsb3ciCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWltcG9ydGxpYi1tZXRhZGF0YV8wLjIzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1pbXBvcnRsaWItbWV0YWRhdGFfMS41LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaW1wb3J0bGliLW1ldGFkYXRhXzAuMjMuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaW1wb3J0bGliLW1ldGFkYXRhXzEuNS4yLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWlwYWRkcmVzc18xLjAuMjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWlwYWRkcmVzc18xLjAuMjMuYmIKaW5kZXggNzdlOTc4Ny4uNzk2MjEzZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1pcGFkZHJlc3NfMS4wLjIzLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaXBhZGRyZXNzXzEuMC4yMy5iYgpAQCAtMSwyICsxLDExIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1pcGFkZHJlc3MuaW5jCitTVU1NQVJZID0gIlB5dGhvbiAzLjMrJ3MgaXBhZGRyZXNzIGZvciBQeXRob24gMi42LCAyLjcsIDMuMi4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcGhpaGFnL2lwYWRkcmVzcyIKK0xJQ0VOU0UgPSAiUHl0aG9uLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTdmNTM4NTg0Y2MzNDA3YmY3NjA0MmRlZjcxNjg1NDhhIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYWFlZTY3YTgwMjY3ODJhZjE4MzExNDhiZWIwZDkwNjAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjdmOGUwMzY5NTgwYmI0YTI0ZDViYTFkN2NjMjk2NjBhNGE2OTg3NzYzZmFmMWQ4YTgwNDY4MzBlMDIwZTdlMiIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaXNvMzE2Nl8xLjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaXNvMzE2Nl8xLjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2ZjNGViCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1pc28zMTY2XzEuMC4xLmJiCkBAIC0wLDAgKzEsMTMgQEAKK1NVTU1BUlkgPSAiU2VsZi1jb250YWluZWQgSVNPIDMxNjYtMSBjb3VudHJ5IGRlZmluaXRpb25zIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2lzbzMxNjYvIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NWUyZjRlZGM3ZTc0MDhhODJlNGExZDA1ZjIyOWI2OTUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1M2MzMTNjN2FlODcyMWU0MGRkZDVlN2EwMWJiY2I3ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMWU1OGRiY2Y1MGZiYjJjOWM0MThlYzdhNjA1N2YwY2RiMzBiOGY4MjJhYzg1MmY3MmU3MWJhNzY5ZGFlOGM1IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtbnVtYmVycyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qZGNhbC9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWpkY2FsL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2VjNzExCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qZGNhbC9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworcHl0ZXN0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWpkY2FsXzEuNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qZGNhbF8xLjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmRlZWFlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qZGNhbF8xLjQuMS5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIlRoaXMgbW9kdWxlIGNvbnRhaW5zIGZ1bmN0aW9ucyBmb3IgY29udmVydGluZyBiZXR3ZWVuIEp1bGlhbiBkYXRlcyBhbmQgY2FsZW5kYXIgZGF0ZXMiCitERVNDUklQVElPTiA9ICJBIGZ1bmN0aW9uIGZvciBjb252ZXJ0aW5nIEdyZWdvcmlhbiBjYWxlbmRhciBkYXRlcyB0byBKdWxpYW4gZGF0ZXMsIFwKK2FuZCBhbm90aGVyIGZ1bmN0aW9uIGZvciBjb252ZXJ0aW5nIEp1bGlhbiBjYWxlbmRhciBkYXRlcyB0byBKdWxpYW4gZGF0ZXMgYXJlIGRlZmluZWQuIFwKK1R3byBmdW5jdGlvbnMgZm9yIHRoZSByZXZlcnNlIGNhbGN1bGF0aW9ucyBhcmUgYWxzbyBkZWZpbmVkLiIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Bobi9qZGNhbCIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PWJkMjM2ZTFmNTkwOTczNDY3YTQyN2JiMzU0YmUwZjQ2IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMgcHRlc3QKKworU1JDX1VSSVttZDVzdW1dID0gImUwNWJkYjYwZmE4MGYyNWJjNjBlNzNlMGM2YjdjNWRjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ3Mjg3MmUwOTZlYjhkZjIxOWMyM2YyNjg5ZmMzMzY2NjhiZGI0M2QxOTQwOTRiNWNjMTcwN2UxNjQwYWNmYzgiCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tY29tcHJlc3Npb24gJHtQWVRIT05fUE59LWlvICR7UFlUSE9OX1BOfS1wcHJpbnQgJHtQWVRIT05fUE59LXNoZWxsIgorCitTUkNfVVJJICs9ICIgXAorCWZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKwkke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAtZiAke1N9L3Rlc3RfamRjYWwucHkgJHtEfSR7UFRFU1RfUEFUSH0vCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWppbmphMi9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWppbmphMi9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNlYzcxMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtamluamEyL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRlc3QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtamluamEyXzIuMTAuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtamluamEyXzIuMTEuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qaW5qYTJfMi4xMC4zLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWppbmphMl8yLjExLjEuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtanNtaW4vcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qc21pbi9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JjZmZmZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtanNtaW4vcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGhvbjMgdGVzdC5weQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qc21pbl8yLjIuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtanNtaW5fMi4yLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI3YTgyNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtanNtaW5fMi4yLjIuYmIKQEAgLTAsMCArMSwyMyBAQAorREVTQ1JJUFRJT04gPSAiSmF2YVNjcmlwdCBtaW5pZmllci4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vdGlraXR1L2pzbWluLyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9M2EzMzAxY2UyYWQ2NDdlMTcyZjRhMTAxNmM2NzMyNGQiCisKK2luaGVyaXQgc2V0dXB0b29sczMgcHlwaSBwdGVzdAorU1JDX1VSSVttZDVzdW1dID0gIjAwZTdhMzE3OWE0NTkxYWFiMmVlNzA3YjMyMTRlMmZkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI2ZGY5OWIyY2QxYzc1ZDlkMzQyZTQzMzViNTM1Nzg5YjhkYTkxMDdlYzc0ODIxMjcwNmVmN2JiZTVjMjU1M2IiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgLWYgJHtTfS9qc21pbi90ZXN0LnB5ICR7RH0ke1BURVNUX1BBVEh9LworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qc29ucGF0Y2hfMS4yNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtanNvbnBhdGNoXzEuMjUuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtanNvbnBhdGNoXzEuMjQuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtanNvbnBhdGNoXzEuMjUuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtanNvbnBvaW50ZXIvcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qc29ucG9pbnRlci9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFlNjA5ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtanNvbnBvaW50ZXIvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGhvbjMgdGVzdHMucHkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMta2NvbmZpZ2xpYl8xMy43LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWtjb25maWdsaWJfMTQuMS4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWtjb25maWdsaWJfMTMuNy4wLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWtjb25maWdsaWJfMTQuMS4wLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWtpd2lzb2x2ZXJfMS4xLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWtpd2lzb2x2ZXJfMS4xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTEwODMwMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMta2l3aXNvbHZlcl8xLjEuMC5iYgpAQCAtMCwwICsxLDE2IEBACitTVU1NQVJZID0gIkEgZmFzdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQ2Fzc293YXJ5IGNvbnN0cmFpbnQgc29sdmVyIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL251Y2xlaWMva2l3aSIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc2V0dXAucHk7ZW5kbGluZT03O21kNT0xYzE3N2QxNjlkYjA1MDM0MWQzYjg5MGM2OWZiODBlMyIKKworU1JDX1VSSVttZDVzdW1dID0gImZjOGE2MTQzNjdmN2JhMGQzNGEwMmZkMDhjNTM1YWZjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUzZWFlZDQxMjQ3N2M4MzZlMWI5NTIyYzE5ODU4YTg1NTdkNmU1OTUwNzc4MzAxNDYxODIyMjU2MTNiMTFhNzUiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgIHB5dGhvbjMtY29yZSBcCisgICAgcHl0aG9uMy1zZXR1cHRvb2xzIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1saWNlbnNlLWV4cHJlc3Npb24vcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1saWNlbnNlLWV4cHJlc3Npb24vcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZWM3MTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWxpY2Vuc2UtZXhwcmVzc2lvbi9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworcHl0ZXN0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWxvY2tmaWxlXzAuMTIuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbG9ja2ZpbGVfMC4xMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwYjEyOTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWxvY2tmaWxlXzAuMTIuMi5iYgpAQCAtMCwwICsxLDE3IEBACisjIFRoaXMgcmVjaXBlIGlzIG9yaWdpbmFsbHkgZnJvbSBtZXRhLW9wZW5zdGFjazoKKyMgaHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL21ldGEtY2xvdWQtc2VydmljZXMvdHJlZS9tZXRhLW9wZW5zdGFjay9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbG9ja2ZpbGVfMC4xMi4yLmJiCisKK1NVTU1BUlkgPSAiUGxhdGZvcm0taW5kZXBlbmRlbnQgZmlsZSBsb2NraW5nIG1vZHVsZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9sb2NrZmlsZS8iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIzNDBkZmZiYmZlYTUzNGI1OGYxMzQ5OTg0ZWVlZjcyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTZhMWE4Mjk1N2EyM2FmZGY0NGNmZGQwMzliNjVmZjkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmFlZDAyZGUwM2NiYTI0ZWZhYmNkNjAwYjMwNTQwMTQwNjM0ZmMwNmNmYTYwMzgyMmQ1MDhkNTM2MWU5Zjc5OSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK0RFUEVORFMgKz0gInB5dGhvbjMtZGlzdHV0aWxzLWV4dHJhLW5hdGl2ZSBweXRob24zLXBici1uYXRpdmUiCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1zcWxpdGUzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWx1bWEtY29yZV8xLjEyLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWx1bWEtY29yZV8xLjEyLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RiMWFjOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbHVtYS1jb3JlXzEuMTIuMC5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIkEgY29tcG9uZW50IGxpYnJhcnkgdG8gc3VwcG9ydCBTQkMgZGlzcGxheSBkcml2ZXJzIgorREVTQ1JJUFRJT04gPSAiQSBjb21wb25lbnQgbGlicmFyeSB0byBzdXBwb3J0IFNCQyBkaXNwbGF5IGRyaXZlcnMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcm0taHVsbC9sdW1hLmNvcmUiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UucnN0O21kNT1lZGE4MDQwNjBiYTIzMTJlNDFmZTk2YjZmYTMzNGZkNyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0Mzc4ZWRiOTljZDEyNTQwYjRlNGE1ODg5Njk1NjdlZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4NjRhNDI3ZGU3OGJjYzE2NzU4ZjRmNDQwMmE5ZTYxZjMxY2M4ODU3YmZhZTlhYmE4MDQxMTU5YWFlYzNhNDkxIgorCitDTEVBTkJST0tFTiA9ICIxIgorCitQWVBJX1BBQ0tBR0UgPSAibHVtYS5jb3JlIgorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKwkke1BZVEhPTl9QTn0tcGlsbG93IFwKKwkke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKwkke1BZVEhPTl9QTn0tc21idXMyIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbHVtYS1vbGVkXzMuNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1sdW1hLW9sZWRfMy40LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWUzYjAwZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbHVtYS1vbGVkXzMuNC4wLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiQSBzbWFsbCBsaWJyYXJ5IHRvIGRyaXZlIGFuIE9MRUQgZGV2aWNlIgorREVTQ1JJUFRJT04gPSAiXAorQSBzbWFsbCBsaWJyYXJ5IHRvIGRyaXZlIGFuIE9MRUQgZGV2aWNlIHdpdGggZWl0aGVyIFNTRDEzMDYgLCBTU0QxMzA5LCBTU0QxMzIyLCBcCitTU0QxMzI1LCBTU0QxMzI3LCBTU0QxMzMxLCBTU0QxMzUxIG9yIFNIMTEwNiBjaGlwc2V0IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JtLWh1bGwvbHVtYS5vbGVkIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnJzdDttZDU9YzMyOGM4NjJjMzMzNWFkNDY0ZTFjOWEzYmE1NzQyNDkiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiMjk0NDE1NWIyMjQyYjlkMmRkZWI2ZTEzOWM2MDgzYjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmVhMmI1MzVlN2UyZjA1NmE1MWE4YzU0YWQ3OGFhMWYwMGQ1Njk5ZmM0MzljMDFiYzdjMjkwMjgyMzg4OTU1MiIKKworQ0xFQU5CUk9LRU4gPSAiMSIKKworUFlQSV9QQUNLQUdFID0gImx1bWEub2xlZCIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisJJHtQWVRIT05fUE59LWx1bWEtY29yZSBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWx4bWxfNC40LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWx4bWxfNC41LjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbHhtbF80LjQuMi5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1seG1sXzQuNS4wLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1hcmt1cHNhZmUvcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYXJrdXBzYWZlL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2VjNzExCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYXJrdXBzYWZlL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRlc3QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWF0cGxvdGxpYl8zLjEuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWF0cGxvdGxpYl8zLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWI4NmNjYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1hdHBsb3RsaWJfMy4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIm1hdHBsb3RsaWI6IHBsb3R0aW5nIHdpdGggUHl0aG9uIgotREVTQ1JJUFRJT04gPSAiXAotTWF0cGxvdGxpYiBpcyBhIFB5dGhvbiAyRCBwbG90dGluZyBsaWJyYXJ5IHdoaWNoIHByb2R1Y2VzIFwKLXB1YmxpY2F0aW9uLXF1YWxpdHkgZmlndXJlcyBpbiBhIHZhcmlldHkgb2YgaGFyZGNvcHkgZm9ybWF0cyBcCi1hbmQgaW50ZXJhY3RpdmUgZW52aXJvbm1lbnRzIGFjcm9zcyBwbGF0Zm9ybXMuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL21hdHBsb3RsaWIvbWF0cGxvdGxpYiIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS9MSUNFTlNFO21kNT1hZmVjNjE0OThhYTVmMGM0NTkzNjY4N2RhOWE1M2Q3NCIKLQotREVQRU5EUyA9ICJweXRob24zLW51bXB5LW5hdGl2ZSBweXRob24zLW51bXB5IGZyZWV0eXBlIGxpYnBuZyBweXRob24zLWRhdGV1dGlsIHB5dGhvbjMtcHl0eiIKLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtbnVtcHkgZnJlZXR5cGUgbGlicG5nIHB5dGhvbjMtZGF0ZXV0aWwgcHl0aG9uMy1weXR6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjg5NGFmNTU2NGE1ODhlODgwNjQ0MTIzMjM3MjUxYjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWZlYmQyMmFmZTE0ODliMTNjNjc0OWVhMDU5ZDM5MmMwMzI2MWIyOTUwZDFkNDVjMTdlM2FlZDgxMjA4MGM5MyIKLQotUFlQSV9QQUNLQUdFID0gIm1hdHBsb3RsaWIiCi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWF0cGxvdGxpYl8zLjIuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWF0cGxvdGxpYl8zLjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmQ4YzUzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYXRwbG90bGliXzMuMi4xLmJiCkBAIC0wLDAgKzEsMzcgQEAKK1NVTU1BUlkgPSAibWF0cGxvdGxpYjogcGxvdHRpbmcgd2l0aCBQeXRob24iCitERVNDUklQVElPTiA9ICJcCitNYXRwbG90bGliIGlzIGEgUHl0aG9uIDJEIHBsb3R0aW5nIGxpYnJhcnkgd2hpY2ggcHJvZHVjZXMgXAorcHVibGljYXRpb24tcXVhbGl0eSBmaWd1cmVzIGluIGEgdmFyaWV0eSBvZiBoYXJkY29weSBmb3JtYXRzIFwKK2FuZCBpbnRlcmFjdGl2ZSBlbnZpcm9ubWVudHMgYWNyb3NzIHBsYXRmb3Jtcy4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbWF0cGxvdGxpYi9tYXRwbG90bGliIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIlBTRiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9zZXR1cC5weTtiZWdpbmxpbmU9MjUwO2VuZGxpbmU9MjUwO21kNT0yYTExNDYyMGU0ZTY4NDNhYTc1NjhkNTkwMjUwMTc1MyBcCisgICAgZmlsZTovL0xJQ0VOU0UvTElDRU5TRTttZDU9YWZlYzYxNDk4YWE1ZjBjNDU5MzY2ODdkYTlhNTNkNzQgXAorIgorREVQRU5EUyA9ICJcCisgICAgZnJlZXR5cGUgXAorICAgIGxpYnBuZyBcCisgICAgcHl0aG9uMy1udW1weS1uYXRpdmUgXAorICAgIHB5dGhvbjMtZGF0ZXV0aWwtbmF0aXZlIFwKKyAgICBweXRob24zLXB5dHotbmF0aXZlIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjZjMDE4YTY0NGE4ODEyMDg4NmNjNzIxMWY3YzgyNmYwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZmZTJmOWNkY2VhMTA4NmZjNDE0ZTgyZjQyMjcxZWNmMTk3NjcwMGI4ZWRkMTZjYTlkMzc2MTg5YzZkOTNhZWUiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMyBwa2djb25maWcKKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAgIGZyZWV0eXBlIFwKKyAgICBsaWJwbmcgXAorICAgIHB5dGhvbjMtbnVtcHkgXAorICAgIHB5dGhvbjMtcHlwYXJzaW5nIFwKKyAgICBweXRob24zLWN5Y2xlciBcCisgICAgcHl0aG9uMy1kYXRldXRpbCBcCisgICAgcHl0aG9uMy1raXdpc29sdmVyIFwKKyAgICBweXRob24zLXB5dHogXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbW9yZS1pdGVydG9vbHMvcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tb3JlLWl0ZXJ0b29scy9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM4NWQ2OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbW9yZS1pdGVydG9vbHMvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGVzdCAtbyBsb2dfY2xpPXRydWUgLW8gbG9nX2NsaV9sZXZlbD1JTkZPIHwgc2VkIC1lICdzL1xbLi4uJVxdLy9nJ3wgc2VkIC1lICdzL1BBU1NFRC9QQVNTL2cnfCBzZWQgLWUgJ3MvRkFJTEVEL0ZBSUwvZyd8c2VkIC1lICdzL1NLSVBFRC9TS0lQL2cnfCBhd2sgJ3tpZiAoJE5GPT0iUEFTUyIgfHwgJE5GPT0iRkFJTCIgfHwgJE5GPT0iU0tJUCIgfHwgJE5GPT0iWEZBSUwiIHx8ICRORj09IlhQQVNTIil7cHJpbnRmICIlczogJXNcbiIsICRORiwgJDB9ZWxzZXtwcmludH19J3wgYXdrICd7aWYgKCRORj09IlBBU1MiIHx8ICRORj09IkZBSUwiIHx8ICRORj09IlNLSVAiIHx8ICRORj09IlhGQUlMIiB8fCAkTkY9PSJYUEFTUyIpIHskTkY9IiI7cHJpbnQgJDB9ZWxzZXtwcmludH19JwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tb3JlLWl0ZXJ0b29sc184LjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbW9yZS1pdGVydG9vbHNfOC4xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMDljMTAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tb3JlLWl0ZXJ0b29sc184LjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1tb3JlLWl0ZXJ0b29scy5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gImE1NTJiMDZjZWMxYmRmMDFkNjBmOTUyZGJjYzlhMDIxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM0NjhhZGVjNTc4MzgwYjYyODFhMTE0Y2I4YTVkYjM0ZWIxMTE2Mjc3ZGE5MmQ3YzQ2ZjkwNGYwYjUyZDMyODgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1vcmUtaXRlcnRvb2xzXzguMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tb3JlLWl0ZXJ0b29sc184LjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2IzNGQzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tb3JlLWl0ZXJ0b29sc184LjIuMC5iYgpAQCAtMCwwICsxLDUgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tbW9yZS1pdGVydG9vbHMuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1NWU3ZTBhNWVhYmM1YTU3YmM4MzUzYzY1YzZmOTk2NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMWRkYjkzMjE4NmQ4YTZhYzQ1MWUxZDk1ODQ0YjM4MmY1NWUxMjY4NmQ1MWNhMGM2OGI2ZjYxZjJhYjdhNTA3IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tcG1hdGhfMS4xLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1wbWF0aF8xLjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODc5YTg1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tcG1hdGhfMS4xLjAuYmIKQEAgLTAsMCArMSwxNiBAQAorIyBUaGlzIHJlY2lwZSBpcyBhZGFwdGVkIGZyb20gb25lIGluIG1ldGEtanVweXRlcjoKKyMgaHR0cHM6Ly9naXRodWIuY29tL1hpbGlueC9tZXRhLWp1cHl0ZXIvYmxvYi9tYXN0ZXIvcmVjaXBlcy1weXRob24vcHl0aG9uMy1tcG1hdGhfMC4xOS5iYgorCitTVU1NQVJZID0gIlB5dGhvbiBsaWJyYXJ5IGZvciBhcmJpdHJhcnktcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMiCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkub3JnL3Byb2plY3QvbXBtYXRoLyIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZWZlOWZlYjAwZGYwYjc2Mzk0MWYyYjFiYmFjN2M0MDIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhY2IxY2RkZGYzOGUxNjA4NDYyODA2NWIxNzRkZGJmZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmYzE3YWJlMDVmYmFiMzM4MmI2MWExMjNjMzk4NTA4MTgzNDA2ZmExMzJlMDIyMzg3NDU3OGUyMDk0NjQ5OWY2IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtaW1hZ2UiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbXNncGFjay9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1zZ3BhY2svcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZWM3MTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1zZ3BhY2svcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGVzdApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tc2dwYWNrXzAuNi4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tc2dwYWNrXzAuNi4yLmJiCmluZGV4IDA5NmQ3ZGQuLjZkN2U3YTAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbXNncGFja18wLjYuMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1zZ3BhY2tfMC42LjIuYmIKQEAgLTEsMiArMSwyOCBAQAotcmVxdWlyZSBweXRob24tbXNncGFjay5pbmMKLWluaGVyaXQgc2V0dXB0b29sczMKK1NVTU1BUlkgPSAiTWVzc2FnZVBhY2sgKGRlKXNlcmlhbGl6ZXIiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jZDk1MjMxODFkOWQ0ZmJmN2ZmY2E1MmVhYTJhNTc1MSIKKworUFlQSV9QQUNLQUdFID0gIm1zZ3BhY2siCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMgcHRlc3QKKworU1JDX1VSSVttZDVzdW1dID0gImJhNDZmZGVlOTk1NTY1ZjQwZTMzMmJkN2VlYTg4MmYxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVhM2MyZjg1OTM0NmZjZDU1ZmM0NmU5Njg4NTMwMWQ5YzJmN2EzNmQ0NTNmNWQ4ZjI5Njc4NDBlZmExZTE4MzAiCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAorICAgICR7UFlUSE9OX1BOfS1pbyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJY3AgLXJmICR7U30vdGVzdC8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW11bHRpZGljdC9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW11bHRpZGljdC9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNlYzcxMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbXVsdGlkaWN0L3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRlc3QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbXVsdGlkaWN0XzQuNy40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tdWx0aWRpY3RfNC43LjQuYmIKaW5kZXggZjE2YTdiZS4uMDYzNjk3MiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tdWx0aWRpY3RfNC43LjQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tdWx0aWRpY3RfNC43LjQuYmIKQEAgLTMsNyArMywyMCBAQAogTElDRU5TRSA9ICJBcGFjaGUtMi4wIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTc0Yzk4YWJlMGRlOGY3OThjYTYwOTEzN2Y5Y2VmNGEiCiAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzIHB0ZXN0CiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIyMmI0NmY3NTljZjJjYzNjYTFkMmM5ZjgyY2M5YmI3OSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJkN2Q0Mjg0ODhjNjdiMDliMjY5Mjg5NTBhMzk1ZTQxY2M3MmJiOWMzZDVhYmZlOWYwNTIxOTQwZWU0Zjc5NmQ0IgorCitTUkNfVVJJICs9ICIgXAorCWZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKwkke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisJY3AgLXJmICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmV0d29ya3hfMi4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uZXR3b3JreF8yLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmZWI2ZGEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uZXR3b3JreF8yLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLW5ldHdvcmt4LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9YjY4MjkwZWUxMDI2YjIwNDE3MGEyM2JiZGIyN2E0ZmQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzMjBkM2Y2Yzc4NzI3MzJiYWE2M2NlZGFmZGRhZGVhOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4MzExZGRlZjYzY2Y1YzVjNWU3YzFkMDIxMmRkMTQxZDlhMWZlM2Y0NzQ5MTUyODFiNzM1OTdlZDVmMWQ0ZTNkIgotCi1pbmhlcml0IHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5ldHdvcmt4XzIuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmV0d29ya3hfMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmYTgyZTIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5ldHdvcmt4XzIuNC5iYgpAQCAtMCwwICsxLDggQEAKK3JlcXVpcmUgcHl0aG9uLW5ldHdvcmt4LmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9YjY4MjkwZWUxMDI2YjIwNDE3MGEyM2JiZGIyN2E0ZmQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2M2UzZmRjOWQzYTQ2YmNhYmM3NzZhY2M1ZWE1ZmU0OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmOGY0ZmYwYjZmOTZlNGY5YjE2YWY2Yjg0NjIyNTk3YjUzMzRiZjljYWU4Y2Y5YjJlNDJlNzk4NWQ1Yzk1YzY0IgorCitpbmhlcml0IHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5tYXBfMS40LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5tYXBfMS40LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODAzODQ4NAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbm1hcF8xLjQuMS5iYgpAQCAtMCwwICsxLDE2IEBACitERVNDUklQVElPTiA9ICJweXRob24tbm1hcCBpcyBhIHB5dGhvbiBsaWJyYXJ5IHdoaWNoIGhlbHBzIGluIHVzaW5nIG5tYXAgcG9ydCBzY2FubmVyIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cubm1tYXBwZXIuY29tLyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKKworREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXdoZWVsLW5hdGl2ZSIKKworUFlQSV9QQUNLQUdFID0gInB5dGhvbjMtbm1hcCIKKworU1JDX1VSSVttZDVzdW1dID0gIjY0YTM4MmM4NzBlMTRiNTNmMmY1MmI3NDU1OTk2MzIxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjliNjRjNTk1Njc4OWY0Y2FjOWU4ZWEyZTBkZTY3NjNkZWExY2VjZGUxYTIwYWU1MGE0YjRkYzVhYjBhYjZlNDIiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAibm1hcCAke1BZVEhPTl9QTn0tcmVxdWVzdHMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW9iZF8wLjcuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtb2JkXzAuNy4xLmJiCmluZGV4IDU3OGUzOGQuLmViOGE1YTcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtb2JkXzAuNy4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtb2JkXzAuNy4xLmJiCkBAIC0xLDIgKzEsMTAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLW9iZC5pbmMKK0RFU0NSSVBUSU9OID0gIkEgcHl0aG9uIG1vZHVsZSBmb3IgaGFuZGxpbmcgcmVhbHRpbWUgc2Vuc29yIGRhdGEgZnJvbSBPQkQtSUkgdmVoaWNsZSBwb3J0cyJIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYnJlbmRhbi13L3B5dGhvbi1PQkQiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLm1kO21kNT01OGJhODk2ZmEwODZjOTZhZDIzMzE3Y2ViZmVhYjI3NyIKKworU1JDX1VSSVttZDVzdW1dID0gIjMwNWVmY2I2YzY1MGRiN2I5NTgzNTMyMzU1ZWJlYjdjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhiODFlYTU4OTYxNTdiNmU4NjFhZjEyZTE3M2MxMGIwMDFjYjZjY2E2ZWJiMDRkYjJjMDFkMzI2ODEyYWQ3N2IiCisKK2luaGVyaXQgc2V0dXB0b29sczMgcHlwaQorCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXB5c2VyaWFsICR7UFlUSE9OX1BOfS1waW50ICR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1vcGVucHl4bF8yLjYuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtb3BlbnB5eGxfMi42LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdjYjQ2ZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtb3BlbnB5eGxfMi42LjMuYmIKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJvcGVucHl4bCBpcyBhIFB5dGhvbiBsaWJyYXJ5IHRvIHJlYWQvd3JpdGUgRXhjZWwgMjAxMCB4bHN4L3hsc20veGx0eC94bHRtIGZpbGVzIgorREVTQ1JJUFRJT04gPSAiSXQgd2FzIGJvcm4gZnJvbSBsYWNrIG9mIGV4aXN0aW5nIGxpYnJhcnkgdG8gcmVhZC93cml0ZSBuYXRpdmVseSBcCitmcm9tIFB5dGhvbiB0aGUgT2ZmaWNlIE9wZW4gWE1MIGZvcm1hdC4gQWxsIGt1ZG9zIHRvIHRoZSBQSFBFeGNlbCB0ZWFtIGFzIG9wZW5weXhsIFwKK3dhcyBpbml0aWFsbHkgYmFzZWQgb24gUEhQRXhjZWwuIgorCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnB5dGhvbi1leGNlbC5vcmcvIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9M2JhZjI2ZDhhYmYwODYzMmJlYWY5MTNlYTk3M2NiOGEiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiYjA2Nzc1MGU1MWYxN2ExYTljYzZiYWNmZGQ2NjgyMTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzJkMWVkMjQzOTcyY2FkMGIzYzIzNjIzMDA4M2NhYzAwZDljNzI4MDRlNjRhMmFlOTNkNzkwMWFlYzFhOGYxYyIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1jb21wcmVzc2lvbiAke1BZVEhPTl9QTn0taW8gJHtQWVRIT05fUE59LXBwcmludCAke1BZVEhPTl9QTn0tc2hlbGwgJHtQWVRIT05fUE59LWpkY2FsICR7UFlUSE9OX1BOfS1ldC14bWxmaWxlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1vcmRlcmVkLXNldC9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW9yZGVyZWQtc2V0L3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mN2I5ZDA5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1vcmRlcmVkLXNldC9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworcHl0ZXN0IHRlc3QucHkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtb3JkZXJlZC1zZXRfMy4xLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW9yZGVyZWQtc2V0XzMuMS4xLmJiCmluZGV4IDAxM2EyZTcuLmJmMzYyZGEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtb3JkZXJlZC1zZXRfMy4xLjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1vcmRlcmVkLXNldF8zLjEuMS5iYgpAQCAtNiw2ICs2LDE4IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiNmUxMjMxMmM4ZGM0YzkwZmU4NDBlODZlOGEzNTI2NDQiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTdiZmE4NTg3NDhjNzNiMDk2ZTQzZGIxNGViMjNlMmJjNzE0YTUwM2Y5OTBjODlmYWM4ZmFiOWIwZWU3OTcyNCIKIAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMgcHRlc3QKIAogREVQRU5EUyArPSAicHl0aG9uMy1weXRlc3QtcnVubmVyLW5hdGl2ZSIKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgLWYgJHtTfS90ZXN0LnB5ICR7RH0ke1BURVNUX1BBVEh9LworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYWNrYWdpbmdfMjAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFja2FnaW5nXzIwLjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFja2FnaW5nXzIwLjAuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFja2FnaW5nXzIwLjMuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFoby1tcXR0XzEuNS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYWhvLW1xdHRfMS41LjAuYmIKaW5kZXggNDk4MWU2MS4uY2M2ZjRkYyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYWhvLW1xdHRfMS41LjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYWhvLW1xdHRfMS41LjAuYmIKQEAgLTEsMyArMSwyMiBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcGFoby1tcXR0LmluYworU1VNTUFSWSA9ICJNUVRUIHZlcnNpb24gMy4xLzMuMS4xIGNsaWVudCBsaWJyYXJ5IgorTElDRU5TRSA9ICJFUEwtMS4wIHwgRURMLTEuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1lYjQ4YzZlZTJjYjlmNWI4YjlmZTc1ZTZmODE3YmRmYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lcGwtdjEwO21kNT04ZDM4M2MzNzllOTFkMjBiYTE4YTUyYzNlN2QzYTk3OSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lZGwtdjEwO21kNT1jMDlmMTIxOTM5ZjA2M2FlYjUyMzU5NzJiZThjNzIyYyBcCisiCitTUkNOQU1FID0gInBhaG8tbXF0dCIKIAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0NWU4MGQ5YjgwNjZhOGQwYmExZWNmZmZlMjcxYmQzZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlM2QyODYxOThiYWFlYTE5NWM4YjNiYzIyMTk0MWQyNWEzYWIwZTE1MDdmYzE3NzliZGI3NDczODA2Mzk0YmU0IgorCitERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tcHl0ZXN0LXJ1bm5lci1uYXRpdmUiCisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgICAke1BZVEhPTl9QTn0taW8gXAorICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tbWF0aCBcCisgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhbmRhc18wLjIzLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhbmRhc18xLjAuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYW5kYXNfMC4yMy40LmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhbmRhc18xLjAuMS5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYXJhbGxheF8xLjAuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFyYWxsYXhfMS4wLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY1OGJkNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFyYWxsYXhfMS4wLjUuYmIKQEAgLTAsMCArMSwxMSBAQAorU1VNTUFSWSA9ICJFeGVjdXRlIGNvbW1hbmRzIGFuZCBjb3B5IGZpbGVzIG92ZXIgU1NIIHRvIG11bHRpcGxlIG1hY2hpbmVzIGF0IG9uY2UuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2tyaWcvcGFyYWxsYXgvIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01MmM2N2ZmYTYxMDJmMjg4YTAzNDdmOGM1ODAyZmQxOCIKKworU1JDX1VSSVttZDVzdW1dID0gImY4ZDA0ZTllMjQ2MjkxNTM2YjcwNWRmN2Y2MGE1NWM5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU5ZTRkYzUwMGYxMzA2YTYzOGRmMGYxOWQ0ZWY5NzZhNjIzYjI2MGZjNjE0YzU1Y2IxZmQwZDg0MTBiM2M0YmEiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhcnNlLXR5cGUvcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYXJzZS10eXBlL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2VjNzExCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYXJzZS10eXBlL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRlc3QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFyc2UvcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYXJzZS9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBjMjg0NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFyc2UvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMiBAQAorIyEvYmluL3NoCitweXRlc3QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFyc2VfMS4xNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYXJzZV8xLjE1LjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFyc2VfMS4xNC4wLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhcnNlXzEuMTUuMC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wZXhwZWN0LzAwMDEtRlNNLnB5LWNoYW5nZS1zaGViYW5nLWZyb20tcHl0aG9uLXRvLXB5dGhvbjMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBleHBlY3QvMDAwMS1GU00ucHktY2hhbmdlLXNoZWJhbmctZnJvbS1weXRob24tdG8tcHl0aG9uMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWU3NzJkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wZXhwZWN0LzAwMDEtRlNNLnB5LWNoYW5nZS1zaGViYW5nLWZyb20tcHl0aG9uLXRvLXB5dGhvbjMucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSAzNTQ2MmQ3Yjc3OGVlYTMyZmQwY2MwYmJjNzlkNmU2ZjUzZDk0MmI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjMgQXByIDIwMjAgMDg6MDE6NDIgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gRlNNLnB5OiBjaGFuZ2Ugc2hlYmFuZyBmcm9tIHB5dGhvbiB0byBweXRob24zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgcGV4cGVjdC9GU00ucHkgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9wZXhwZWN0L0ZTTS5weSBiL3BleHBlY3QvRlNNLnB5CitpbmRleCA0NmIzOTJlLi40ZTc3NjU0IDEwMDY0NAorLS0tIGEvcGV4cGVjdC9GU00ucHkKKysrKyBiL3BleHBlY3QvRlNNLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgCisgJycnVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBhIEZpbml0ZSBTdGF0ZSBNYWNoaW5lIChGU00pLiBJbiBhZGRpdGlvbiB0byBzdGF0ZQorIHRoaXMgRlNNIGFsc28gbWFpbnRhaW5zIGEgdXNlciBkZWZpbmVkICJtZW1vcnkiLiBTbyB0aGlzIEZTTSBjYW4gYmUgdXNlZCBhcyBhCistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBleHBlY3RfNC43LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBleHBlY3RfNC44LjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGV4cGVjdF80LjcuMC5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wZXhwZWN0XzQuOC4wLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpbnQvcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waW50L3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2VjNzExCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waW50L3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRlc3QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGludF8wLjkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpbnRfMC4xMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waW50XzAuOS5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waW50XzAuMTEuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGx1Z2d5L3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGx1Z2d5L3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGMyODQ3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wbHVnZ3kvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMiBAQAorIyEvYmluL3NoCitweXRlc3QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcG9seWxpbmUvcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wb2x5bGluZS9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNlYzcxMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcG9seWxpbmUvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGVzdApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wb2x5bGluZV8xLjQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcG9seWxpbmVfMS40LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDgxZWU1NAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcG9seWxpbmVfMS40LjAuYmIKQEAgLTAsMCArMSwyNiBAQAorU1VNTUFSWSA9ICJBIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBHb29nbGUncyBFbmNvZGVkIFBvbHlsaW5lIEFsZ29yaXRobSBGb3JtYXQiCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkub3JnL3Byb2plY3QvcG9seWxpbmUvIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wZmJkMTM1MDBjYWJkMDZkZDc1MWJhNmIyYmUzMDRjNiIKKworU1JDX1VSSVttZDVzdW1dID0gImI5N2M1NzM3ODYwNWM0YTg1NmM0Mzc1NjlmOTVhMGNiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdjN2Y4OWQwOWEwOWM3YjYxNjFiZGJmYjRmZDMwNGIxODZmYzdhMjA2MGZhNGYzMWNiM2Y2MWM2NDZhNWMwNzQiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMyBwdGVzdAorCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1zaXgiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJY3AgLXJmICR7U30vdGVzdC8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByZWNpc2UtcnVubmVyL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJlY2lzZS1ydW5uZXIvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZWM3MTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByZWNpc2UtcnVubmVyL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRlc3QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJlY2lzZS1ydW5uZXJfMC4zLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByZWNpc2UtcnVubmVyXzAuMy4xLmJiCmluZGV4IDk4YjYyZDguLjYxNTViNzkgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJlY2lzZS1ydW5uZXJfMC4zLjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcmVjaXNlLXJ1bm5lcl8wLjMuMS5iYgpAQCAtNiw0ICs2LDE3IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiYTI0MzRiZTExMDQ0NDE5MmU4MDRmNGRhZGEwY2NlY2YiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWE0NjQyMDlmYjRiZjBhM2Y1ZDVhNDI4MzEwY2IyYTcwNDg3YTAxYTZiYzNhOTYwZDFkZGE5MGFmODk2YjgwZCIKIAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMgcHRlc3QKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJY3AgLXJmICR7U30vdGVzdC8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByZXR0eXRhYmxlL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJldHR5dGFibGUvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZWM3MTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByZXR0eXRhYmxlL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRlc3QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJvdG9idWZfMy45LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByb3RvYnVmXzMuMTEuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcm90b2J1Zl8zLjkuMi5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcm90b2J1Zl8zLjExLjMuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHN1dGlsXzUuNi43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wc3V0aWxfNS43LjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHN1dGlsXzUuNi43LmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBzdXRpbF81LjcuMC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wdHlwcm9jZXNzL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHR5cHJvY2Vzcy9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdjOWU1OQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHR5cHJvY2Vzcy9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2ggCisKK3B5dGVzdApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wdWxzZWN0bF8yMC4xLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB1bHNlY3RsXzIwLjEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FjM2FhZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB1bHNlY3RsXzIwLjEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uICgzLnggYW5kIDIueCkgaGlnaC1sZXZlbCBpbnRlcmZhY2UgYW5kIGN0eXBlcy1iYXNlZCBiaW5kaW5ncyBmb3IgUHVsc2VBdWRpbyAobGlicHVsc2UpLCBtb3N0bHkgZm9jdXNlZCBvbiBtaXhlci1saWtlIGNvbnRyb2xzIGFuZCBpbnRyb3NwZWN0aW9uLXJlbGF0ZWQgb3BlcmF0aW9ucyAoYXMgb3Bwb3NlZCB0byBlLmcuIHN1Ym1pdHRpbmcgc291bmQgc2FtcGxlcyB0byBwbGF5LCBwbGF5ZXItbGlrZSBjbGllbnQpLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tay1mZy9weXRob24tcHVsc2UtY29udHJvbCIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjFkMTAwNDg0NjlmZjkwMTIzMjYzZWI1ZTIxNDA2MWQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5MGQwMjIwNGQ2NWY2ODRhZjJmZDc3YTc3ZDUwZWMwMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YTk3YTRmN2ZjZDhkYmU1NjM4MDk4MGU4Yzk1MTlmZjRlMjY1NTI2MDQ3NzZjYmM3NTU1ZTZhMTRmZjAyMDJmIgotCi1SREVQRU5EU18ke1BOfSArPSAicHVsc2VhdWRpbyIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB1bHNlY3RsXzIwLjIuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHVsc2VjdGxfMjAuMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwZGI5NjgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB1bHNlY3RsXzIwLjIuNC5iYgpAQCAtMCwwICsxLDExIEBACitTVU1NQVJZID0gIlB5dGhvbiAoMy54IGFuZCAyLngpIGhpZ2gtbGV2ZWwgaW50ZXJmYWNlIGFuZCBjdHlwZXMtYmFzZWQgYmluZGluZ3MgZm9yIFB1bHNlQXVkaW8gKGxpYnB1bHNlKSwgbW9zdGx5IGZvY3VzZWQgb24gbWl4ZXItbGlrZSBjb250cm9scyBhbmQgaW50cm9zcGVjdGlvbi1yZWxhdGVkIG9wZXJhdGlvbnMgKGFzIG9wcG9zZWQgdG8gZS5nLiBzdWJtaXR0aW5nIHNvdW5kIHNhbXBsZXMgdG8gcGxheSwgcGxheWVyLWxpa2UgY2xpZW50KS4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbWstZmcvcHl0aG9uLXB1bHNlLWNvbnRyb2wiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYxZDEwMDQ4NDY5ZmY5MDEyMzI2M2ViNWUyMTQwNjFkIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDdkN2E1ZmRkYzQ5ZjVkYTIyNjM0NDY0YWEwMDgwMDMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmNhOWVkNTAxYmVmMmVmZDU1MWIzNTc3M2ZkMjRiYmEzNmJiZDIxYmM0NDhmNDAyY2Y4ZWUxM2MxMjQyM2MxOSIKKworUkRFUEVORFNfJHtQTn0gKz0gInB1bHNlYXVkaW8iCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weV8xLjguMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlfMS44LjEuYmIKaW5kZXggMGVlMzczZC4uNzNhYWY5ZSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weV8xLjguMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5XzEuOC4xLmJiCkBAIC0xLDIgKzEsMTMgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSB3aXRoIGNyb3NzLXB5dGhvbiBwYXRoLCBpbmktcGFyc2luZywgaW8sIGNvZGUsIGxvZyBmYWNpbGl0aWVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3B5LnJlYWR0aGVkb2NzLmlvLyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTZiYjAzMjBiMDRhMGE1MDNmMTJmNjlmZWE0NzlkZTkiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MmM2N2RlODRiMDdhYzljYzg2N2I4YjcwODQzYTQ1YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZTI3MDgxNDAxMjYyMTU3NDY3YWQ2ZTdmODUxYjdhYTQwMmM1ODUyZGJjYjNkYWUwNjc2ODQzNGRlNTc1MmFhIgorCitERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tc2V0dXB0b29scy1zY20tbmF0aXZlIgorCiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXB5LmluYworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5YXNuMS1tb2R1bGVzL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlhc24xLW1vZHVsZXMvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZWM3MTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5YXNuMS1tb2R1bGVzL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRlc3QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlhc24xL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlhc24xL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2VjNzExCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWFzbjEvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGVzdApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWF0c3BpXzIuMzIuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlhdHNwaV8yLjMyLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmNTJhYzcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWF0c3BpXzIuMzIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciBEQnVzIEFULVNQSTIgYWNjZXNzaWJpbGl0eSIKLURFU0NSSVBUSU9OID0gIkFULVNQSTIgaXMgYSBwcm90b2NvbCBvdmVyIERCdXMsIHRvb2xraXQgd2lkZ2V0cyB1c2UgdG8gcHJvdmlkZSBjb250ZW50IHRvIHNjcmVlbiByZWFkZXJzIHN1Y2ggYXMgT3JjYSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvQWNjZXNzaWJpbGl0eS9BVC1TUEkyLyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lOWYyODhiYTk4MmQ2MDUxOGYzNzViNTg5ODI4Mzg4NiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi1ERVBFTkRTID0gInB5dGhvbjMtZGJ1cy1uYXRpdmUgZ2xpYi0yLjAgZGJ1cy1nbGliIGxpYnhtbDIgYXRrIGd0aysgcHl0aG9uMy1weWdvYmplY3QiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9HTk9NRS9weWF0c3BpMi5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPWdub21lLTMtMzIiCi1TUkNSRVYgPSAiZGM0NTY1MjA4ZmNhMDBkYTA2Yjk3MjkxNWEwODBhZDNjNjNmNjQwZCIKLVMgPSAiJHtXT1JLRElSfS9naXQiIAotCi0jIFNhbWUgcmVzdHJpY3Rpb24gYXMgZ3RrKwotaW5oZXJpdCBmZWF0dXJlc19jaGVjawotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzJESVNUUk9GRUFUVVJFU30iCi0KLWluaGVyaXQgcGtnY29uZmlnIGF1dG90b29scyBweXRob24zbmF0aXZlCi0KLUZJTEVTXyR7UE59ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9weWF0c3BpLyoiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5YXRzcGlfMi4zNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWF0c3BpXzIuMzQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmRiODZiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWF0c3BpXzIuMzQuMC5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgREJ1cyBBVC1TUEkyIGFjY2Vzc2liaWxpdHkiCitERVNDUklQVElPTiA9ICJBVC1TUEkyIGlzIGEgcHJvdG9jb2wgb3ZlciBEQnVzLCB0b29sa2l0IHdpZGdldHMgdXNlIHRvIHByb3ZpZGUgY29udGVudCB0byBzY3JlZW4gcmVhZGVycyBzdWNoIGFzIE9yY2EiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL0FjY2Vzc2liaWxpdHkvQVQtU1BJMi8iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGIyOTIxOGU2YmEzNzk0YzU2ZGY3ZDQ5ODdkYzdlNGQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorREVQRU5EUyA9ICJweXRob24zLWRidXMtbmF0aXZlIGdsaWItMi4wIGRidXMtZ2xpYiBsaWJ4bWwyIGF0ayBndGsrIHB5dGhvbjMtcHlnb2JqZWN0IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vR05PTUUvcHlhdHNwaTIuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD1tYWlubGluZSIKK1NSQ1JFViA9ICJjYzk5ZDY4ZGI2NjE3NGY0NDk5YjliMzI1YmM3ODgzOTNiOTcyZWRkIgorUyA9ICIke1dPUktESVJ9L2dpdCIgCisKKyMgU2FtZSByZXN0cmljdGlvbiBhcyBndGsrCitpbmhlcml0IGZlYXR1cmVzX2NoZWNrCitBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLMkRJU1RST0ZFQVRVUkVTfSIKKworaW5oZXJpdCBwa2djb25maWcgYXV0b3Rvb2xzIHB5dGhvbjNuYXRpdmUKKworRklMRVNfJHtQTn0gKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3B5YXRzcGkvKiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlibHVlel8wLjIyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWJsdWV6XzAuMjIuYmIKaW5kZXggOTcxMmE3Ni4uMjY5MDJlMSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWJsdWV6XzAuMjIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWJsdWV6XzAuMjIuYmIKQEAgLTEsMiArMSwyMCBAQAotcmVxdWlyZSBweXRob24tcHlibHVlei5pbmMKLWluaGVyaXQgc2V0dXB0b29sczMKK0RFU0NSSVBUSU9OID0gIkJsdWV0b290aCBQeXRob24gZXh0ZW5zaW9uIG1vZHVsZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9rYXJ1bGlzLmdpdGh1Yi5pby9weWJsdWV6LyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorCitERVBFTkRTID0gImJsdWV6NSIKKworTElDRU5TRSA9ICJHUEwtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGE3MWQwNDc1ZDA4ZWVlNzZkOGI2ZDBjNmRiZWM1NDMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0OWRhYjlkNWE4ZjBiNzk4YzgxMjVjN2Y2NDliZTNjZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0Y2UwMDY3MTZhNTRkOWQxOGU4MTg2YTNmMWM4YjEyYThlNmJlZmVjZmZlOGZkNTgyOGEyOTFmYjY5NGNlNDlkIgorCitQWVBJX1BBQ0tBR0UgPSAiUHlCbHVleiIKK1BZUElfUEFDS0FHRV9FWFQgPSAiemlwIgoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgYmx1ZXo1IFwKKyAgICAke1BZVEhPTl9QTn0tZmNudGwgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNocm9tZWNhc3RfNC4wLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y2hyb21lY2FzdF80LjAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI5MzAxZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y2hyb21lY2FzdF80LjAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmb3IgUHl0aG9uIDMuNisgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgR29vZ2xlIENocm9tZWNhc3QuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2JhbGxvb2IvcHljaHJvbWVjYXN0IgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMWRiZDRlODVmNDdiMzg5YmRhZGVlOWM2OTQ2NjlmNSIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ2Zjk2ZDQ3OGZkNzY4Njk2YTBlNDQwY2IwZWE5MDNiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5OGRmMjhmMzQwYmIxNGEwNzIzNjg0NjUxOGRhYWQ3MTA3YjY2NTgxNTEyYzMzZGE5MjE2NjNkZjYxYWM4MTkiCi0KLVBZUElfUEFDS0FHRSA9ICJQeUNocm9tZWNhc3QiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNocm9tZWNhc3RfNC4yLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y2hyb21lY2FzdF80LjIuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTYxNzUzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNocm9tZWNhc3RfNC4yLjMuYmIKQEAgLTAsMCArMSwxMSBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBQeXRob24gMy42KyB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBHb29nbGUgQ2hyb21lY2FzdC4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYmFsbG9vYi9weWNocm9tZWNhc3QiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIxZGJkNGU4NWY0N2IzODliZGFkZWU5YzY5NDY2OWY1IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTY2MzJlMGQ5NGYyNjQ4YTI5ZDg5YWZmZGRkZGFhZWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDdiN2IzNTI1NDIwM2FiNDYxNzM4OTA2MWJlZTI1YjBmYTY3YzY2MjhjNDhiZDZhNzVjY2ZlZmVmNzRmMWVkYiIKKworUFlQSV9QQUNLQUdFID0gIlB5Q2hyb21lY2FzdCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y29kZXN0eWxlXzIuNS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNvZGVzdHlsZV8yLjUuMC5iYgppbmRleCBjZWRjZGIzLi43ZjAwYWI2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y29kZXN0eWxlXzIuNS4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljb2Rlc3R5bGVfMi41LjAuYmIKQEAgLTEsMiArMSwxMiBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcHljb2Rlc3R5bGUuaW5jCitTVU1NQVJZID0gIlB5dGhvbiBzdHlsZSBndWlkZSBjaGVja2VyIChmb3JtbHkgY2FsbGVkIHBlcDgpIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3B5Y29kZXN0eWxlIgorTElDRU5TRSA9ICJNSVQiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTAxODMxZGRiYWYzOTg0NzFkYTNjYzg3ZjUwMzdlODIyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDBlN2E3NmYzNjRhMThmNTMxYWFiYTExYTQ0NzZlMjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTQwYTkzNmM5YTQ1MGFkODFkZjM3ZjU0OWQ2NzZkMTI3YjFiNjYwMDBhNmM1MDBjYWEyYjA4NWJjMGNhOTc2YyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljcGFyc2VyXzIuMTkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3BhcnNlcl8yLjE5LmJiCmluZGV4IDdjYzAyNGUuLjM1ZWQ5M2UgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljcGFyc2VyXzIuMTkuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNwYXJzZXJfMi4xOS5iYgpAQCAtMSw2ICsxLDE5IEBACitTVU1NQVJZID0gIlBhcnNlciBvZiB0aGUgQyBsYW5ndWFnZSwgd3JpdHRlbiBpbiBwdXJlIFB5dGhvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9lbGliZW4vcHljcGFyc2VyIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04NmYxY2VkYjRlNjQxMGE4OGNlOGUzMGI5MTA3OTE2OSIKKworU1JDX1VSSVttZDVzdW1dID0gIjc2Mzk2NzYyYWRjM2ZhNzY5YzgzZDhlMjAyZDM2YjZmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE5ODg3MThhYmZhZDgwYjZiMTU3YWNjZTdiZjEzMGEzMDg3NmQyNzYwMzczOGFjMzlmMTQwOTkzMjQ2YjI1YjMiCisKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcHljcGFyc2VyLmluYworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCiAKIFJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAogICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAotICAgICIgCisgICAgJHtQWVRIT05fUE59LXBseSBcCisgICAgJHtQWVRIT05fUE59LXBwcmludCBcCisgICAgY3BwIFwKKyAgICBjcHAtc3ltbGlua3MgXAorICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljcnlwdG8vMDAwMS1SZXBsYWNlLXRpbWUuY2xvY2std2l0aC10aW1lLnByb2Nlc3NfdGltZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljcnlwdG8vMDAwMS1SZXBsYWNlLXRpbWUuY2xvY2std2l0aC10aW1lLnByb2Nlc3NfdGltZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODJmZGQzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNyeXB0by8wMDAxLVJlcGxhY2UtdGltZS5jbG9jay13aXRoLXRpbWUucHJvY2Vzc190aW1lLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gMWQ5MDcyN2ZmMjM2ODAxMmQ2ZTJmOTFiMWEzMTk4ZjYyNjQ5NWI3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pbmcgTGl1IDxsaXUubWluZzUwQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjUgSmFuIDIwMjAgMTQ6MzY6MTYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVwbGFjZSB0aW1lLmNsb2NrKCkgd2l0aCB0aW1lLnByb2Nlc3NfdGltZSgpCisKK1RoZSB1c2Ugb2YgdGltZS5jbG9jaygpIGlzIGRlcHJlY2F0ZWQgaW4gcHl0aG9uIDMuOCwgY2hhbmdlIHRvIHVzZQordGltZS5wcm9jZXNzX3RpbWUoKS4KKworUmVmZXJlbmNlOgoraHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy4zL2xpYnJhcnkvdGltZS5odG1sI3RpbWUuY2xvY2sKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxsaXUubWluZzUwQGdtYWlsLmNvbT4KKy0tLQorIGxpYi9DcnlwdG8vUmFuZG9tL19Vc2VyRnJpZW5kbHlSTkcucHkgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWIvQ3J5cHRvL1JhbmRvbS9fVXNlckZyaWVuZGx5Uk5HLnB5IGIvbGliL0NyeXB0by9SYW5kb20vX1VzZXJGcmllbmRseVJORy5weQoraW5kZXggOTU3ZTAwNi4uZDJhMDI1OSAxMDA2NDQKKy0tLSBhL2xpYi9DcnlwdG8vUmFuZG9tL19Vc2VyRnJpZW5kbHlSTkcucHkKKysrKyBiL2xpYi9DcnlwdG8vUmFuZG9tL19Vc2VyRnJpZW5kbHlSTkcucHkKK0BAIC03NCw3ICs3NCw3IEBAIGNsYXNzIF9FbnRyb3B5Q29sbGVjdG9yKG9iamVjdCk6CisgICAgICAgICBzZWxmLl90aW1lX2VzLmZlZWQoc3RydWN0LnBhY2soIkBJIiwgaW50KDIqKjMwICogKHQgLSBmbG9vcih0KSkpKSkKKyAKKyAgICAgICAgICMgQWRkIHRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgdGltZS5jbG9jaygpCistICAgICAgICB0ID0gdGltZS5jbG9jaygpCisrICAgICAgICB0ID0gdGltZS5wcm9jZXNzX3RpbWUoKQorICAgICAgICAgc2VsZi5fY2xvY2tfZXMuZmVlZChzdHJ1Y3QucGFjaygiQEkiLCBpbnQoMioqMzAgKiAodCAtIGZsb29yKHQpKSkpKQorIAorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3J5cHRvXzIuNi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNyeXB0b18yLjYuMS5iYgppbmRleCAwMmQ2MzRjLi5hMjBlYWZlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3J5cHRvXzIuNi4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljcnlwdG9fMi42LjEuYmIKQEAgLTEsNiArMSw4IEBACiBpbmhlcml0IGRpc3R1dGlsczMKIHJlcXVpcmUgcHl0aG9uLXB5Y3J5cHRvLmluYwogCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1SZXBsYWNlLXRpbWUuY2xvY2std2l0aC10aW1lLnByb2Nlc3NfdGltZS5wYXRjaCIKKwogIyBXZSBleHBsaWNpdGx5IGNhbGwgZGlzdHV0aWxzX2RvX2luc3RhbGwsIHNpbmNlIHdlIHdhbnQgaXQgdG8gcnVuLCBidXQKICMgKmRvbid0KiB3YW50IHRoZSBhdXRvdG9vbHMgaW5zdGFsbCB0byBydW4sIHNpbmNlIHRoaXMgcGFja2FnZSBkb2Vzbid0CiAjIHByb3ZpZGUgYSAibWFrZSBpbnN0YWxsIiB0YXJnZXQuCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3J5cHRvZG9tZXhfMy45LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3J5cHRvZG9tZXhfMy45LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQxYzE0YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljcnlwdG9kb21leF8zLjkuNC5iYgpAQCAtMCwwICsxLDEwIEBACityZXF1aXJlIHB5dGhvbi1weWNyeXB0b2RvbWUuaW5jCitpbmhlcml0IHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0NmJhNTEzZDk1YjZlMzIzNzM0MDc0ZDk2MGE3ZDU3YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMmQ5NzBjZWU1YzA5NmI5MTIzNDE1ZTE4M2FlMDM3MDJiMmNkNGQzYmEzZjBjZWQyNWM0ZTFhYmEzOTY3MTY3IgorCitGSUxFU18ke1BOfS10ZXN0cyA9ICIgXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L0NyeXB0b2RvbWUvU2VsZlRlc3QvIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9DcnlwdG9kb21lL1NlbGZUZXN0L19fcHljYWNoZV9fLyBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3VybF83LjQzLjAuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljdXJsXzcuNDMuMC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWQzMTlhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljdXJsXzcuNDMuMC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1weWN1cmwuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3VybF83LjQzLjAuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljdXJsXzcuNDMuMC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMWMxNzkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3VybF83LjQzLjAuNS5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIkEgUHl0aG9uIEludGVyZmFjZSBUbyBUaGUgY1VSTCBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiXAorUHljVVJMIGlzIGEgUHl0aG9uIGludGVyZmFjZSB0byBsaWJjdXJsLCB0aGUgbXVsdGlwcm90b2NvbCBmaWxlIFwKK3RyYW5zZmVyIGxpYnJhcnkuIFNpbWlsYXJseSB0byB0aGUgdXJsbGliIFB5dGhvbiBtb2R1bGUsIFB5Y1VSTCBjYW4gXAorYmUgdXNlZCB0byBmZXRjaCBvYmplY3RzIGlkZW50aWZpZWQgYnkgYSBVUkwgZnJvbSBhIFB5dGhvbiBwcm9ncmFtIFwKKyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3B5Y3VybC5pby8iCisKK0xJQ0VOU0UgPSAiTEdQTHYyIHwgTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy1MR1BMO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLU1JVDttZDU9NjA4NzJhMTEyNTk1MDA0MjMzYjc2OWI2Y2JmZDY1YjYgXAorICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwYjM4N2Q0NjA5ZWQyMGM4OGJhZWRlODU3OWE0ZDQyNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlYzdkZDI5MTU0NTg0MjI5NWI3YjU2YzEyYzkwZmZhZDI5NzZjYzcwNzBjOThkN2IxNTE3YjdiNmNkNTk5NGIzIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworREVQRU5EUyA9ICJcCisgICAgY3VybCBcCisgICAgJHtQWVRIT05fUE59XAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWRidXNfMC42LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5ZGJ1c18wLjYuMC5iYgppbmRleCBhZGFhODZkLi45MzFiYzZmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5ZGJ1c18wLjYuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5ZGJ1c18wLjYuMC5iYgpAQCAtMSw2ICsxLDE3IEBACi1yZXF1aXJlIHB5dGhvbi1weWRidXMuaW5jCi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKK0RFU0NSSVBUSU9OID0gIlB5dGhvbmljIERCdXMgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHlkYnVzLyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyIKIAogU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtU3VwcG9ydC1hc3luY2hyb25vdXMtY2FsbHMtNTgucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovLzAwMDItU3VwcG9ydC10cmFuc2Zvcm1hdGlvbi1iZXR3ZWVuLUQtQnVzLWVycm9ycy1hbmQtZXhjZS5wYXRjaCBcCiAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjNmFiZDQ0ODYyMzIyNjc5YmQ0ZTkwN2JlYmMzZTBkMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MjA3MTYyZWZmNTQyMjM4MjJjMTg1ZGEwNmMxYmE4YTM0MTM3YTk2MDJmM2RhNWE1MjhlZWRmM2Y3OGQwZjJjIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUyA9ICIke1dPUktESVJ9L3B5ZGJ1cy0ke1BWfSIKKworUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LXB5Z29iamVjdCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHllbGZ0b29sc18wLjI1LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWVsZnRvb2xzXzAuMjUuYmIKaW5kZXggNTZlYjhjNC4uMDNkOTZkYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWVsZnRvb2xzXzAuMjUuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWVsZnRvb2xzXzAuMjUuYmIKQEAgLTEsMiArMSwxNCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcHllbGZ0b29scy5pbmMKK0RFU0NSSVBUSU9OID0gInB5ZWxmdG9vbHMgaXMgYSBwdXJlLVB5dGhvbiBsaWJyYXJ5IGZvciBwYXJzaW5nIGFuZCBhbmFseXppbmcgRUxGIGZpbGVzIGFuZCBEV0FSRiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZWxpYmVuL3B5ZWxmdG9vbHMiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiUEQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01Y2UyYTJiMDdmY2EzMjZiYzdjMTQ2ZDEwMTA1Y2NmYyIKKworU1JDX1VSSVttZDVzdW1dID0gImM1NjI5YjlhNWQxOWM4MjEwN2E5NDZjY2U1MmVlZWMyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg5YzZkYTZmNTYyODBjMzdhNWZmMzM0Njg1OTFiYTlhMTI0ZTE3ZDcxZmU0MmRlOTcxODE4Y2JmZjQ2YzFiMjQiCisKK1BZUElfUEFDS0FHRSA9ICJweWVsZnRvb2xzIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5ZXhwZWN0XzEuMC4xOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlleHBlY3RfMS4wLjE5LmJiCmluZGV4IGJmZDU4NDAuLmVhM2MwMTggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlleHBlY3RfMS4wLjE5LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlleHBlY3RfMS4wLjE5LmJiCkBAIC0xLDIgKzEsMTEgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXB5ZXhwZWN0LmluYworU1VNTUFSWSA9ICJQeXRob24gZXhwZWN0YXRvbiBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiTWluaW1hbCBidXQgdmVyeSBmbGV4aWJsZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZXhwZWN0IHBhdHRlcm4iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0hPTUVQQUdFID0gIiBodHRwczovL2JpdGJ1Y2tldC5vcmcvZHd0L3B5ZXhwZWN0IgorTElDRU5TRSA9ICJJU0MiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUubWQ7bWQ1PTUwMGI4ODRlOWRjZDVmNjc3YTUzY2JiZWU4YWNlOTM5IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSVttZDVzdW1dID0gImRjNzQ0Mjg5ODU4MDAxOTI1Yzc1ZDIxZTI2ZjEyNjBmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJmZjQ2NTRiMTEzZGFjNmMyMjMxZTQ4NmUxMWRjYjIzMjgxZGRjMDc0MmE1NDA0NDY3MzAzZmU3NjM4ODI5ZWYiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5ZmlybWF0YV8xLjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlmaXJtYXRhXzEuMS4wLmJiCmluZGV4IDI1YWYxYjUuLmM2ZTk1ZWIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlmaXJtYXRhXzEuMS4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlmaXJtYXRhXzEuMS4wLmJiCkBAIC0xLDMgKzEsMTMgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXB5ZmlybWF0YS5pbmMKK1NVTU1BUlkgPSAiQSBQeXRob24gaW50ZXJmYWNlIGZvciB0aGUgRmlybWF0YSBwcm90b2NvbCIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ODRkZGNlZjQzMGI3YzQ0Y2FhMjJiMmZmNGIzN2EzZGYiCitQWVBJX1BBQ0tBR0UgPSAicHlGaXJtYXRhIgogCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgJHtQWVRIT05fUE59LXB5c2VyaWFsIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjE1OTY3M2NmYjU2YzcyY2VhZmMzMGZlOTFlZWRkODQ3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNjMTgwZDFiMzBjODVhMmJiY2E2MmMxNWZlZjFiODcxZGIwNDhjZGNmYTgwOTU5OTY4MzU2ZDk3YmQzZmYwOGUiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWZsYWtlc18yLjEuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlmbGFrZXNfMi4xLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzEzODgyMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlmbGFrZXNfMi4xLjEuYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJwYXNzaXZlIGNoZWNrZXIgb2YgUHl0aG9uIHByb2dyYW1zIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2RyZWFtaG9zdC9jbGlmZiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5yc3Q7bWQ1PTUxMjczMTUxMTdhODU2MWExNTA0MzQzZDU5NjIwNjQ3IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTBmNzFhMTU3MjRlNTUzYzQ2ZTAzYmE1ZWQ1NjcwM2MiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDk3NjgzNTg4NmY4YzViMzFkNDc5NzBlZDY4OTk0NGEwMjYyYjVmM2FmYTAwYTVhN2I0ZGM4MWU1NDQ5ZjhhMiIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1wcmV0dHl0YWJsZSBcCisgICAgJHtQWVRIT05fUE59LWNtZDIgXAorICAgICR7UFlUSE9OX1BOfS1weXBhcnNpbmciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHloYW1jcmVzdF8xLjkuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHloYW1jcmVzdF8xLjkuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGFhOWI0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWhhbWNyZXN0XzEuOS4wLmJiCkBAIC0wLDAgKzEsMTAgQEAKK1NVTU1BUlkgPSAiSGFtY3Jlc3QgZnJhbWV3b3JrIGZvciBtYXRjaGVyIG9iamVjdHMiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1mNmRmMTMxOGM2MDcxZGQxNzA3ZjVlM2I2YzExZjI0ZiIKKworUFlQSV9QQUNLQUdFID0gIlB5SGFtY3Jlc3QiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4YjgzM2EzZmEzMDE5NzQ1NWRmNzk0MjRmMzBjOGMzZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZmZhYTBhNTNkYTU3ZTg5ZGUxNGNlZDcxODVhYzc0NjIyN2E4ODk0ZGJkNWEzYzcxOGJmMDVkZGJkMWQ1NmNkIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlpZmFjZV8wLjAuMTEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5aWZhY2VfMC4wLjExLmJiCmluZGV4IDcyMWU3YjEuLjMwMjJkMDggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlpZmFjZV8wLjAuMTEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWlmYWNlXzAuMC4xMS5iYgpAQCAtMSwyICsxLDExIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1weWlmYWNlLmluYworU1VNTUFSWSA9ICJQeWlmYWNlIGlzIGEgcGFja2FnZSB0aGF0IGV4cG9zZXMgdGhlIG5ldHdvcmsgaW50ZXJmYWNlcyBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpbiBhIGVhc3kgdG8gdXNlIGFuZCB0cmFuc3BhcmVudCB3YXkiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHlpZmFjZS8iCitMSUNFTlNFID0gIkdQTHYzKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTRmZTg2OWVlOTg3YTM0MDE5OGZiMGQ1NGM1NWM0N2YxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjA2NmFhOTg0NjU2NzQyNzM4MTI3YzljNzU0MzZhYjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTIzMWU1NzM1ZDMyOWM1YjJkNGZjODg1NGYwNjlmZGFhNTQzNmQzZWY5MWVkNjRlZTQ5ZTQxZTNmNWU4YTNmNSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5aW5vdGlmeV8wLjkuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlpbm90aWZ5XzAuOS42LmJiCmluZGV4IGIzYmFiOTguLmFiMzM5NTMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlpbm90aWZ5XzAuOS42LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlpbm90aWZ5XzAuOS42LmJiCkBAIC0xLDIgKzEsMTYgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXB5aW5vdGlmeS5pbmMKK0RFU0NSSVBUSU9OID0gIlB5dGhvbiBweWlub3RpZnk6IExpbnV4IGZpbGVzeXN0ZW0gZXZlbnRzIG1vbml0b3JpbmciCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWFiMTczY2FkZTc5NjViNDExNTI4NDY0NTg5YTA4MzgyIgorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorICAgICR7UFlUSE9OX1BOfS1pbyBcCisgICAgJHtQWVRIT05fUE59LW1pc2MgXAorICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICAgJHtQWVRIT05fUE59LXNtdHBkIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjhlNTgwZmExZmYzOTcxZjk0YTZmODE2NzJiNzZjNDA2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljOTk4YTVkNzYwNmNhODM1MDY1Y2RhYmMwMTNhZTZjNjZlYjllYTc2YTAwYTFlM2JjNmUwY2ZlMmI0ZjcxZjQiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWprc18xOS4wLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5amtzXzE5LjAuMC5iYgppbmRleCA4OTgyZmNlLi5lZTJmMzA3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5amtzXzE5LjAuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5amtzXzE5LjAuMC5iYgpAQCAtMSwyICsxLDIyIEBACi1yZXF1aXJlIHB5dGhvbi1weWprcy5pbmMKLWluaGVyaXQgc2V0dXB0b29sczMKK1NVTU1BUlkgPSAiUHVyZS1QeXRob24gSmF2YSBLZXlzdG9yZSAoSktTKSBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiUHlKS1MgZW5hYmxlcyBQeXRob24gcHJvamVjdHMgdG8gbG9hZCBhbmQgbWFuaXB1bGF0ZVwKKyBKYXZhIEtleVN0b3JlIChKS1MpIGRhdGEgd2l0aG91dCBhIEpWTSBkZXBlbmRlbmN5LiBQeUpLUyBzdXBwb3J0cyBKS1MsXAorIEpDRUtTLCBCS1MgYW5kIFVCRVIgKEJvdW5jeUNhc3RsZSkga2V5c3RvcmVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2t1cnRicm9zZS9weWprcyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTY5NGQ2Y2M3MjRjYWY3ZjczODZiZTg4YTRhODE5NTgiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiNmU4ZjNiOTFiZTM1NWQxNWUzYmE5OWRlMmNjY2Y5YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5Y2U1YjQwMjg5YmNkZmZjZDZhOGU3MTE4YjMzM2JhOGJhMmVjNGM5ZWJjNWUzMjQ4ODVjYzhhNjk3NjcwMTFhIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAgICR7UFlUSE9OX1BOfS1qYXZhb2JqLXB5MyBcCisgICAgJHtQWVRIT05fUE59LXB5YXNuMSBcCisgICAgJHtQWVRIT05fUE59LXB5YXNuMS1tb2R1bGVzIFwKKyAgICAke1BZVEhPTl9QTn0tcHljcnlwdG9kb21lIFwKKyAgICAke1BZVEhPTl9QTn0tdHdvZmlzaFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWp3dF8xLjcuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlqd3RfMS43LjEuYmIKaW5kZXggZGMxNmQyMi4uZDJmN2JlNCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWp3dF8xLjcuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5and0XzEuNy4xLmJiCkBAIC0xLDIgKzEsMTYgQEAKLXJlcXVpcmUgcHl0aG9uLXB5and0LmluYwotaW5oZXJpdCBzZXR1cHRvb2xzMworU1VNTUFSWSA9ICJKU09OIFdlYiBUb2tlbiBpbXBsZW1lbnRhdGlvbiBpbiBQeXRob24iCitERVNDUklQVElPTiA9ICJBIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBKU09OIFdlYiBUb2tlbiBkcmFmdCAzMi5cCisgT3JpZ2luYWwgaW1wbGVtZW50YXRpb24gd2FzIHdyaXR0ZW4gYnkgaHR0cHM6Ly9naXRodWIuY29tL3Byb2dyaXVtIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vanBhZGlsbGEvcHlqd3QiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTY4NjI2NzA1YTdiNTEzY2E4ZDVmNDRhM2UyMDBlZDBjIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTQ3MTJmOTgwYzAwODY5NmUxM2UwOTUwNDEyMGIyYTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGQ1OWE5NzZmYjc3M2YzZTZhMzljODU2MzYzNTdjNGYwZTI0MjcwNzM5NGNhZGFkZDk4MTRmNWNiYWEyMGU5NiIKKworUFlQSV9QQUNLQUdFID0gIlB5SldUIgoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1jcnlwdG9ncmFwaHkiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlrd2FsaWZ5XzEuNy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWt3YWxpZnlfMS43LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQwMjliZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlrd2FsaWZ5XzEuNy4wLmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiWUFNTC9KU09OIHZhbGlkYXRpb24gbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gInB5a3dhbGlmeSBpcyBhIHNjaGVtYSB2YWxpZGF0b3IgZm9yIFlBTUwgYW5kIEpTT04iCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkub3JnL3Byb2plY3QvcHlrd2FsaWZ5LyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTcyZWE1MTU5MzY0YTJjZDdmNDVjNmRjYmVlMzc4NzIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1ODM1N2YxZDBmNzdkZTk3NmU3M2RiZDM2NjBhZjc1YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZThiMzljNWEzYTEwYmMxNzY2ODJiM2JkOWE3NDIyYzM5Y2EyNDc0ODJkZjE5OGI0MDJlODAxNWRlZmNjZWIyIgorCitQWVBJX1BBQ0tBR0UgPSAicHlrd2FsaWZ5IgoraW5oZXJpdCBzZXR1cHRvb2xzMyBweXBpCit1bnNldCBfUFlUSE9OX1NZU0NPTkZJR0RBVEFfTkFNRQorCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgJHtQWVRIT05fUE59LWRhdGV1dGlsIFwKKyAgICAke1BZVEhPTl9QTn0tcHl5YW1sIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bGludF8xLjguMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlsaW50XzEuOC4zLmJiCmluZGV4IDU2M2U4MzEuLjdhODczYTEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlsaW50XzEuOC4zLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlsaW50XzEuOC4zLmJiCkBAIC0xLDIgKzEsMzggQEAKLWluaGVyaXQgc2V0dXB0b29sczMgcHl0aG9uMy1kaXIKLXJlcXVpcmUgcHl0aG9uLXB5bGludC5pbmMKK1NVTU1BUlk9IlB5bGludCBpcyBhIFB5dGhvbiBzb3VyY2UgY29kZSBhbmFseXplciIKK0hPTUVQQUdFPSAiaHR0cDovL3d3dy5weWxpbnQub3JnLyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00MzI1YWZkMzk2ZmViY2I2NTljMzZiNDk1MzMxMzVkNCIKKworU1JDX1VSSVttZDVzdW1dID0gIjJlYjVmM2NiOGZlNTY3ZWFmNTQyMGRkNDE1MDEyMjAyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM3NzMxMTg1OWUwYzJkNzkzMjA5NWYzMGQyYjFiZmRjNGI2ZmUxMTFmNTM0NDUwYmE3MjdhNTJlYWUzMzBlZjIiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMyBweXRob24zLWRpcgorCitERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tcHl0ZXN0LXJ1bm5lci1uYXRpdmUiCisKK2RvX2luc3RhbGxfYXBwZW5kKCl7CisgICAgcm0gJHtEfSR7YmluZGlyfS9weWxpbnQKKyAgICBjYXQgPj4gJHtEfSR7YmluZGlyfS9weWxpbnQgPDxFT0YKKyMhL3Vzci9iaW4vZW52ICR7UFlUSE9OX1BOfQorZnJvbSBweWxpbnQgaW1wb3J0IHJ1bl9weWxpbnQKK3J1bl9weWxpbnQoKQorRU9GCisgICAgY2htb2QgNzU1ICR7RH0ke2JpbmRpcn0vcHlsaW50CisgICAgc2VkIC1pIC1lICdzOl4jIS91c3IvYmluL3B5dGhvbjojIS91c3IvYmluL2VudlwgJHtQWVRIT05fUE59OmcnICR7RH0vJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vcHlsaW50L3Rlc3QvZGF0YS9hc2NyaXB0Cit9CisKK1BBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKK0ZJTEVTXyR7UE59LXRlc3RzKz0gIiBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vcHlsaW50L3Rlc3QvIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9weWxpbnQvdGVzdHV0aWxzLnB5IFwKKyIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1hc3Ryb2lkIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0taXNvcnQgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1qc29uIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tcGtndXRpbCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWRpZmZsaWIgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAorICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1pc3BfMi40LjExOS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1pc3BfMi40LjExOS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTIzZDllLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHltaXNwXzIuNC4xMTkuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1weW1pc3AuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bWlzcF8yLjQuMTIyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1pc3BfMi40LjEyMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjJkYTAwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1pc3BfMi40LjEyMi5iYgpAQCAtMCwwICsxLDIxIEBACitERVNDUklQVElPTiA9ICJQeXRob24gQVBJIGZvciBNSVNQIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL01JU1AvUHlNSVNQIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hMzYzOWNmNTc4MGY3MWIxMjVkM2U5ZDFkYzEyN2MyMCIKKworU1JDX1VSSVttZDVzdW1dID0gImVmNDExODVkNGMyNzUzZGMyYzFhOWFiOTM3ZTM2MTRhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVjZGMzNjJiNGJiNWRkNTAwYTVmMGI5ZTc5NWIzNWVkNzUwMzdkZTY0ZjhkY2YzOWMyNGQwMjllNzY1N2FkN2YiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tZGF0ZXV0aWwgXAorICAgICR7UFlUSE9OX1BOfS1qc29uIFwKKyAgICAke1BZVEhPTl9QTn0tanNvbnNjaGVtYSBcCisgICAgJHtQWVRIT05fUE59LXJlcXVlc3RzIFwKKyAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyIKKworIyBGaXhlczogcHl0aG9uMy1weW1pc3AgcmVxdWlyZXMgL2Jpbi9iYXNoLCBidXQgbm8KKyMgcHJvdmlkZXJzIGZvdW5kIGluIFJERVBFTkRTX3B5dGhvbjMtcHltaXNwPyBbZmlsZS1yZGVwCitSREVQRU5EU18ke1BOfSArPSAiYmFzaCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHltb25nb18zLjEwLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bW9uZ29fMy4xMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTY0YjE4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHltb25nb18zLjEwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcHltb25nby5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHltb25nb18zLjEwLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bW9uZ29fMy4xMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2OWNhNTMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bW9uZ29fMy4xMC4xLmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIGRyaXZlciBmb3IgTW9uZ29EQiA8aHR0cDovL3d3dy5tb25nb2RiLm9yZz4iCitERVNDUklQVElPTiA9ICJcCitUaGUgUHlNb25nbyBkaXN0cmlidXRpb24gY29udGFpbnMgdG9vbHMgZm9yIGludGVyYWN0aW5nIHdpdGggTW9uZ29EQiBcCitkYXRhYmFzZSBmcm9tIFB5dGhvbi4gVGhlIGJzb24gcGFja2FnZSBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQlNPTiBcCitmb3JtYXQgZm9yIFB5dGhvbi4gVGhlIHB5bW9uZ28gcGFja2FnZSBpcyBhIG5hdGl2ZSBQeXRob24gZHJpdmVyIGZvciBcCitNb25nb0RCLiBUaGUgZ3JpZGZzIHBhY2thZ2UgaXMgYSBncmlkZnMgaW1wbGVtZW50YXRpb24gb24gdG9wIG9mIHB5bW9uZ28uIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vbW9uZ29kYi9tb25nby1weXRob24tZHJpdmVyIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ODZkM2YzYTk1YzMyNGM5NDc5YmQ4OTg2OTY4ZjQzMjciCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMzFiOWMwMTkwYzllYWYxZjc5MmQwMjc3YjJhOGViZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5OTMyNTdmNmNhM2NkZTU1MzMyYWYxZjYyYWYzZTA0Y2E4OWNlNjNjMDhiNTZhMzg3Y2RkNDYxMzZjNzJmMmZhIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUEFDS0FHRVMgPSsgIiR7UFlUSE9OX1BOfS1ic29uIgorCitGSUxFU18ke1BZVEhPTl9QTn0tYnNvbiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9ic29uLyoiCisKK1JERVBFTkRTXyR7UFlUSE9OX1BOfS1ic29uICs9ICIgXAorICAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICAke1BZVEhPTl9QTn0tanNvbiBcCisgICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCisgICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorIgorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tYnNvbiBcCisgICAgJHtQWVRIT05fUE59LXBwcmludCBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bXlzcWxfMC45LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bXlzcWxfMC45LjMuYmIKaW5kZXggMTM3NzRiZC4uNmE2NGNjYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW15c3FsXzAuOS4zLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlteXNxbF8wLjkuMy5iYgpAQCAtMSwyICsxLDE3IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1weW15c3FsLmluYworU1VNTUFSWSA9ICJBIHB1cmUtUHl0aG9uIE15U1FMIGNsaWVudCBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiIFwKKyAgVGhpcyBwYWNrYWdlIGNvbnRhaW5zIGEgcHVyZS1QeXRob24gTXlTUUwgY2xpZW50IGxpYnJhcnksIGJhc2VkIG9uIFBFUCAyNDkgXAorICBNb3N0IHB1YmxpYyBBUElzIGFyZSBjb21wYXRpYmxlIHdpdGggbXlzcWxjbGllbnQgYW5kIE15U1FMZGIuIFwKKyAgIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitIT01FUEFHRSA9ICJodHRwczovL3B5bXlzcWwucmVhZHRoZWRvY3MuaW8iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTUyODE3NWM4NDE2M2JiODAwZDIzYWQ4MzVjN2ZhMGZjIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTVkOTE4M2NjMGE3NzVhYzI5ZjllMDM2NWNjYTY1NTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDhjMDU5ZGNkODFkZWRiODVhOWYwMzRkNWUyMmRjYjQ0NDJjMGIyMDE5MDhiZWRlOTllMzA2ZDY1ZWE3YzhlNyIKKworUFlQSV9QQUNLQUdFID0gIlB5TXlTUUwiCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1jcnlwdG9ncmFwaHkiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bmV0bGludXhfMS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW5ldGxpbnV4XzEuMS5iYgppbmRleCBmNmQ5ZTNjLi5jODBhMTY2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bmV0bGludXhfMS4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHluZXRsaW51eF8xLjEuYmIKQEAgLTEsMiArMSwxMSBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcHluZXRsaW51eC5pbmMKK1NVTU1BUlkgPSAiTGludXggbmV0d29yayBjb25maWd1cmF0aW9uIGxpYnJhcnkgZm9yIFB5dGhvbiIKK0RFU0NSSVBUSU9OID0gIlRoaXMgbGlicmFyeSBjb250YWlucyBQeXRob24gYmluZGluZ3MgdG8gaW9jdGwgY2FsbHMiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL3JsaXNhZ29yL3B5bmV0bGludXgiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT03NGUxODYxNzM2ZWU5NTk4MjRmZTc1NDIzMjNjMTJlOSIKKworU1JDX1VSSVttZDVzdW1dID0gIjMzMzZlNWQ0YTQ3OGFjY2E0ZTM1YmYzMTI1YjRmODgzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRhZDA4Mjk4YzlmNWJhMTVhMTFjZGRjNjM5YmE4Nzc4Y2FiZGZjNDAyYjUxMDY2ZDllMGEzMjVlNWE1YjM5MWMiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW9wZW5zc2xfMTkuMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW9wZW5zc2xfMTkuMS4wLmJiCmluZGV4IDBmMGY4M2UuLmRhNzgzZWEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlvcGVuc3NsXzE5LjEuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5b3BlbnNzbF8xOS4xLjAuYmIKQEAgLTEsMiArMSwyNCBAQAorU1VNTUFSWSA9ICJTaW1wbGUgUHl0aG9uIHdyYXBwZXIgYXJvdW5kIHRoZSBPcGVuU1NMIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL3B5b3BlbnNzbC5vcmcvIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCisKK0RFUEVORFMgKz0gIm9wZW5zc2wgJHtQWVRIT05fUE59LWNyeXB0b2dyYXBoeSIKKworU1JDX1VSSVttZDVzdW1dID0gImQ5ODA0ZmVkYmQxZWIwYzdkOTI0MzM5N2IxZmJmOTcyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlhMjQ0OTRiMjYwMmFhZjQwMmJlNWM5ZTMwYTBiODJkNGE1YzY3NTI4ZmU4ZmI0NzVlM2YzYmMwMGRkNjk1MDciCisKK1BZUElfUEFDS0FHRSA9ICJweU9wZW5TU0wiCiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXB5b3BlbnNzbC5pbmMKKworUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgorRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9PcGVuU1NML3Rlc3QiCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICIgXAorICAgICR7UFlUSE9OX1BOfS1jcnlwdG9ncmFwaHkgXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorIgorUkRFUEVORFNfJHtQTn0tdGVzdHMgPSAiJHtQTn0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlwYXJzaW5nXzIuNC42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXBhcnNpbmdfMi40LjYuYmIKaW5kZXggMDgwNWZlZS4uYTZlYzFjYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXBhcnNpbmdfMi40LjYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXBhcnNpbmdfMi40LjYuYmIKQEAgLTEsMiArMSwyMSBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcHlwYXJzaW5nLmluYworU1VNTUFSWSA9ICJQeXRob24gcGFyc2luZyBtb2R1bGUiCitIT01FUEFHRSA9ICJodHRwOi8vcHlwYXJzaW5nLndpa2lzcGFjZXMuY29tLyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NjU3YTU2NjIzMzg4ODUxM2UxZjA3YmExM2UyZjQ3ZjEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyOTczM2VhOGNiZWUwMjkxYWFkMTIxYzY5YzZlNTFhMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0YzgzMDU4MmE4NGZiMDIyNDAwYjg1NDI5NzkxYmM1NTFmMWY0ODcxYzMzZjIzZTQ0ZjM1MzExOWU5MmY5NjlmIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKKyAgICAke1BZVEhPTl9QTn0tZGVidWdnZXIgXAorICAgICR7UFlUSE9OX1BOfS1qc29uIFwKKyAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKKyAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKKyAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXBlcmNsaXBfMS43LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cGVyY2xpcF8xLjcuMC5iYgppbmRleCBlZTZmODhiLi41MmQxMDlhIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cGVyY2xpcF8xLjcuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cGVyY2xpcF8xLjcuMC5iYgpAQCAtMSwyICsxLDE0IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1weXBlcmNsaXAuaW5jCitERVNDUklQVElPTiA9ICJBIGNyb3NzLXBsYXRmb3JtIGNsaXBib2FyZCBtb2R1bGUgZm9yIFB5dGhvbi4gKG9ubHkgaGFuZGxlcyBwbGFpbiB0ZXh0IGZvciBub3cpIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9YTQyODM1NmFkYTc3MzdiNDE2ZWM0YjYzZGM2NWQ1ODEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2YmJiODU5ODU3OWNjM2VlNTA1NTRiNGM1OWQwY2ZhZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NzkzMjU0NjhjY2Y2ODIxMDRkNWRjYWY3NTNmODY5ODY4MTAwNjMxMzAxZDNlNzJmNDdiYWJkZWE1NzAwZDFjIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlwZXJmXzEuNy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXBlcmZfMS43LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViYTVlZmIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXBlcmZfMS43LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXB5cGVyZi5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1taXNjIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXBlcmZfMS43LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cGVyZl8xLjcuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODFlOTA0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXBlcmZfMS43LjEuYmIKQEAgLTAsMCArMSwyNCBAQAorU1VNTUFSWSA9ICJBIHRvb2xraXQgdG8gd3JpdGUsIHJ1biBhbmQgYW5hbHl6ZSBiZW5jaG1hcmtzIgorREVTQ1JJUFRJT04gPSAiIFwKK1RoZSBQeXRob24gcHlwZXJmIG1vZHVsZSBpcyBhIHRvb2xraXQgdG8gd3JpdGUsIHJ1biBhbmQgYW5hbHl6ZSBiZW5jaG1hcmtzLiBcCitGZWF0dXJlczogXAorICAgICogU2ltcGxlIEFQSSB0byBydW4gcmVsaWFibGUgYmVuY2htYXJrcyBcCisgICAgKiBBdXRvbWF0aWNhbGx5IGNhbGlicmF0ZSBhIGJlbmNobWFyayBmb3IgYSB0aW1lIGJ1ZGdldC4gXAorICAgICogU3Bhd24gbXVsdGlwbGUgd29ya2VyIHByb2Nlc3Nlcy4gXAorICAgICogQ29tcHV0ZSB0aGUgbWVhbiBhbmQgc3RhbmRhcmQgZGV2aWF0aW9uLiBcCisgICAgKiBEZXRlY3QgaWYgYSBiZW5jaG1hcmsgcmVzdWx0IHNlZW1zIHVuc3RhYmxlLiBcCisgICAgKiBKU09OIGZvcm1hdCB0byBzdG9yZSBiZW5jaG1hcmsgcmVzdWx0cy4gXAorICAgICogU3VwcG9ydCBtdWx0aXBsZSB1bml0czogc2Vjb25kcywgYnl0ZXMgYW5kIGludGVnZXIuIFwKKyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzhiYzJlNmU4N2M4YzYxMjcyOTM3Yjg3OWU2ZGMyZjgiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkOWU4OTRkYzg0M2JiN2YwYWJmZjEwOTkzMWEyOTg5NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMzc2OTBlODEwMTE2YTgzYTI0NGRmZWVjNDc4ODVlMmYwNDc1YjRjNDUwMzEzOTA0YmUzYmMyY2RhZjZkNTBhIgorCitERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tc2l4LW5hdGl2ZSIKKworUFlQSV9QQUNLQUdFID0gInB5cGVyZiIKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LW1pc2MiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cm91dGUyL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlyb3V0ZTIvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZWM3MTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cm91dGUyL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRlc3QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlyb3V0ZTJfMC41LjExLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXJvdXRlMl8wLjUuMTEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRiOGFhMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlyb3V0ZTJfMC41LjExLmJiCkBAIC0wLDAgKzEsMzcgQEAKK1NVTU1BUlkgPSAiQSBwdXJlIFB5dGhvbiBuZXRsaW5rIGFuZCBMaW51eCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gbGlicmFyeSIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5HUEwudjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuQXBhY2hlLnYyO21kNT0zNDI4MWUzMTIxNjVmODQzYTJiN2QxZjExNGZlNjVjZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjcwMDVkYjAxNjA0NjYzZmMyZWNjMDg5OTI1OTgwZTA1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA1ZTk1OWYxYTg5ZDcxNTE1OGI5MWZlODNiNjc5NDZhNDQ0MWU1ZTA5OGNjMjI1ZjRkZjc4YTM3NjVhYzRhZjIiCisKK2luaGVyaXQgc2V0dXB0b29sczMgcHlwaSBwdGVzdAorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKKyAgICAke1BZVEhPTl9QTn0tZGlzdHV0aWxzIFwKKyAgICAke1BZVEhPTl9QTn0taW8gXAorICAgICR7UFlUSE9OX1BOfS1qc29uIFwKKyAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisgICAgJHtQWVRIT05fUE59LW11bHRpcHJvY2Vzc2luZyBcCisgICAgJHtQWVRIT05fUE59LXBpY2tsZSBcCisgICAgJHtQWVRIT05fUE59LXBrZ3V0aWwgXAorICAgICR7UFlUSE9OX1BOfS1wcHJpbnQgXAorICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICAgJHtQWVRIT05fUE59LXVuaXhhZG1pbiBcCisiCisKK1NSQ19VUkkgKz0gIiBcCisJZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorCSR7UFlUSE9OX1BOfS1weXRlc3QgXAorCSR7UFlUSE9OX1BOfS1mY250bCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworCWNwIC1yZiAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cm91dGUyXzAuNS43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXJvdXRlMl8wLjUuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTIzZTcyYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cm91dGUyXzAuNS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1weXJvdXRlMi5pbmMKLWluaGVyaXQgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlyc2lzdGVudF8wLjE1LjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cnNpc3RlbnRfMC4xNS43LmJiCmluZGV4IDJlNTY3ZTkuLjVlZjcxNDAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlyc2lzdGVudF8wLjE1LjcuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXJzaXN0ZW50XzAuMTUuNy5iYgpAQCAtMSwyICsxLDE1IEBACitTVU1NQVJZID0gIlBlcnNpc3RlbnQvSW1tdXRhYmxlL0Z1bmN0aW9uYWwgZGF0YSBzdHJ1Y3R1cmVzIGZvciBQeXRob24iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vdG9iZ3UvcHlyc2lzdGVudCIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRS5taXQ7bWQ1PWNhNTc0ZjI4OTFjZjUyOGIzZTdhMmVlNTcwMzM3ZTdjIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZGE5NDg2ZDAwZWY1YjIxM2Y0MGQ1Y2YzYzViY2E4MmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2RjN2I1ZTNlZDc3YmVkNjEyNzBhNDdkMzU0MzRhMzA2MTdiOWJlY2RmMjQ3OGFmNzZhZDJjNmFkZTMwNzI4MCIKKwogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1weXJzaXN0ZW50LmluYworCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXNjYWZmb2xkXzMuMi4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXNjYWZmb2xkXzMuMi4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiZDIyMmYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5c2NhZmZvbGRfMy4yLjMuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJQeXRob24gcHJvamVjdCB0ZW1wbGF0ZSBnZW5lcmF0b3Igd2l0aCBiYXR0ZXJpZXMgaW5jbHVkZWQiCitERVNDUklQVElPTiA9ICJQeVNjYWZmb2xkIHBhY2thZ2UgaGVscHMgdG8gc2V0dXAgYSBuZXcgUHl0aG9uIHByb2plY3QuIFwKK0FmdGVyIGluc3RhbGxhdGlvbiwgaXQgcHJvdmlkZXMgYSBuZXcgY29tbWFuZCBbcHV0dXBdLCB3aGljaCBjb3VsZCBiZSBcCit1c2VkIHRvIGNyZWF0ZSB0ZW1wbGF0ZSBQcm9qZWN0cy4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9weXNjYWZmb2xkL3B5c2NhZmZvbGQiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTg7ZW5kbGluZT04O21kNT04MjI3MTgwMTI2Nzk3YTAxNDhmOTRmNDgzZjNlMTQ4OSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1BZUElfUEFDS0FHRSA9ICJQeVNjYWZmb2xkIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNjc2OWQyYTI2YTlkMWYzMDM4OTQ0YjhmYmZlNzI4ZmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTZjM2U3ZjU1MjlkZjBiNWIzNTFlODc5YTE0MWUxZTVjOWYyNjIxMWYzMGQ0OTNjMjNkOGMwOWQ5ZDYxMGE2ZiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXNlcmlhbC9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5c2VyaWFsL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2VjNzExCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXNlcmlhbC9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworcHl0ZXN0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5c2VyaWFsXzMuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlzZXJpYWxfMy40LmJiCmluZGV4IDE3ZWQzZjguLmQ2NWM5YTggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlzZXJpYWxfMy40LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlzZXJpYWxfMy40LmJiCkBAIC0xLDcgKzEsNjIgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXB5c2VyaWFsLmluYworU1VNTUFSWSA9ICJTZXJpYWwgUG9ydCBTdXBwb3J0IGZvciBQeXRob24iCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1kNDc2ZDk0OTI2ZGI2ZTAwMDhhNWIzODYwZDFmNWMwZCIKKworU1JDX1VSSVttZDVzdW1dID0gImVkNjE4M2IxNTUxOWEwYWU5NjY3NWU5YzMzMzBjNjliIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZlMmQ0MDFmZGVlMGVhYjk5NmNmNzM0ZTY3NzczYTAxNDNiOTMyNzcyY2E4YjQyNDUxNDQwY2ZlZDk0MmM2MjciCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMyBwdGVzdAogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKICAgICBybSAtZiAke0R9JHtiaW5kaXJ9L21pbml0ZXJtLnB5CiAgICAgcm1kaXIgJHtEfSR7YmluZGlyfQogfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tamF2YSAke1BOfS1vc3ggJHtQTn0td2luMzIgJHtQTn0tdG9vbHMiCisKK0ZJTEVTXyR7UE59LWphdmEgPSAiIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvKmphdmEqIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvX19weWNhY2hlX18vKmphdmEqIFwKKyIKKworRklMRVNfJHtQTn0tb3N4ID0gIiBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsL3Rvb2xzLypvc3gqIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvdG9vbHMvX19weWNhY2hlX18vKm9zeCogXAorIgorCitGSUxFU18ke1BOfS13aW4zMiA9ICIgXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NlcmlhbC8qc2VyaWFsY2xpKiBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsL19fcHljYWNoZV9fLypzZXJpYWxjbGkqIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvKndpbjMyKiBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsL19fcHljYWNoZV9fLyp3aW4zMiogXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NlcmlhbC90b29scy9taW5pdGVybSogXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NlcmlhbC90b29scy9fX3B5Y2FjaGVfXy9taW5pdGVybSogXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NlcmlhbC90b29scy8qd2luZG93cyogXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NlcmlhbC90b29scy9fX3B5Y2FjaGVfXy8qd2luZG93cyogXAorIgorCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgJHtQWVRIT05fUE59LWZjbnRsIFwKKyAgICAke1BZVEhPTl9QTn0taW8gXAorICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKKyAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCisgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKKyAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJICs9ICIgXAorCWZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKwkke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwljcCAtcmYgJHtTfS90ZXN0LyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC8KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlzb2Nrc18xLjcuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlzb2Nrc18xLjcuMS5iYgppbmRleCBiYmRhMDVhLi5lMzExOTA0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5c29ja3NfMS43LjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXNvY2tzXzEuNy4xLmJiCkBAIC0xLDYgKzEsMTkgQEAKK0RFU0NSSVBUSU9OID0gIkEgUHl0aG9uIFNPQ0tTIGNsaWVudCBtb2R1bGUiCitIT01FUEFHRSA9ICJodHRwOi8vcHl0aG9uLXJlcXVlc3RzLm9yZyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MWQ0NTdiY2ZmYjk2NjFiNDVmNzk5ZDRlZmVlNzJmMTYiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4OWIxYTY4NjVjNjFiYWU2N2EzMjQxNzUxNzYxMmVlNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZjg4MDQ1NzFlYmUxNTljMzgwYWM2ZGUzNzY0M2JiNDY4NTk3MDY1NWQzYmJhMjQzNTMwZDY1NThiNzk5YWEwIgorCitQWVBJX1BBQ0tBR0UgPSAiUHlTb2NrcyIKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcHlzb2Nrcy5pbmMKIAogUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWVtYWlsIFwKKyAgICAke1BZVEhPTl9QTn0taW8gXAogICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCiAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlzdGFjaGVfMC41LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5c3RhY2hlXzAuNS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlYjQ5ODYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5c3RhY2hlXzAuNS40LmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIE11c3RhY2hlIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2RlZnVua3QvcHlzdGFjaGUiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWViNDQxNzgwMmM1NjM4NGFhYzcxYjM0NTA1NTI4YTYwIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDg1ODg1ZTY3YTBmNjQxMWQ1MjUyZTY5YjIwYTM1Y2EiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjdiYmMyNjVmYjk1N2I0ZDZjN2MwNDJiMzM2NTYzMTc5NDQ0YWIzMTNmYjkzYTcxOTc1OTExMWVhYmQzYjg1YSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC1hc3luY2lvXzAuMTAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LWFzeW5jaW9fMC4xMC4wLmJiCmluZGV4IDA5ZjI2ZjguLmE3ZTk2M2IgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LWFzeW5jaW9fMC4xMC4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LWFzeW5jaW9fMC4xMC4wLmJiCkBAIC0xLDIgKzEsMTMgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXB5dGVzdC1hc3luY2lvLmluYworREVTQ1JJUFRJT04gPSAicHl0ZXN0LWFzeW5jaW8gaXMgYW4gQXBhY2hlMiBsaWNlbnNlZCBsaWJyYXJ5LCB3cml0dGVuIGluIFB5dGhvbiwgZm9yIHRlc3RpbmcgYXN5bmNpbyBjb2RlIHdpdGggcHl0ZXN0IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUucnN0O21kNT1hZTYyMjY4ZDIwN2M3M2I2MTVmYmVmZGRhZjkxYTg4MSIKKworU1JDX1VSSVttZDVzdW1dID0gIjI0N2E3ZWMzMmYyNGExODUzNDEzMjdjNDJhMGY4NWJmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlmYWM1MTAwZmQ3MTZjYmVjZjZlZjg5MjMzZTg1OTBhNGFkNjFkNzI5ZDE3MzJlMGE5NmI4NDE4MmRmMWRhYWYiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tcHl0ZXN0LW5hdGl2ZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC1oZWxwZXJzLW5hbWVzcGFjZV8yMDE5LjEuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LWhlbHBlcnMtbmFtZXNwYWNlXzIwMTkuMS44LmJiCmluZGV4IGYwM2Y1ZDQuLmIzYWNlZDQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LWhlbHBlcnMtbmFtZXNwYWNlXzIwMTkuMS44LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LWhlbHBlcnMtbmFtZXNwYWNlXzIwMTkuMS44LmJiCkBAIC0xLDcgKzEsMTQgQEAKLXJlcXVpcmUgcHl0aG9uLXB5dGVzdC1oZWxwZXJzLW5hbWVzcGFjZS5pbmMKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGx1Z2luIGRvZXMgbm90IHByb3ZpZGUgYW55IGhlbHBlcnMgdG8gcHl0ZXN0LCBpdCBkb2VzLCBob3dldmVyLCBwcm92aWRlIGEgaGVscGVycyBuYW1lc3BhY2UgaW4gcHl0ZXN0IHdoaWNoIGVuYWJsZXMgeW91IHRvIHJlZ2lzdGVyIGhlbHBlciBmdW5jdGlvbnMgaW4geW91ciBjb25mdGVzdC5weSB0byBiZSB1c2VkIHdpdGhpbiB5b3VyIHRlc3RzIHdpdGhvdXQgaGF2aW5nIHRvIGltcG9ydCB0aGVtLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zYWx0c3RhY2svcHl0ZXN0LWhlbHBlcnMtbmFtZXNwYWNlIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9Y2M5OTUwOGM0M2Q5ZDE0ZmQ1MWM3ZmFjNjIyZmZkMjMiCiAKLWluaGVyaXQgc2V0dXB0b29sczMKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNGVjMWQ4NzUwZjliMTU0ZTc4MmE0N2NmOGIzMDczNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZWZmMjNhMTlmOTI0MTBjMDE2NmY2ZGZmYmZhODkwMWQzZTE0YTgwZTk3ZDcwY2QwODQyOGI2ZDU5Nzc3MWNlIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKIAogUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgcHl0aG9uMy1weXRlc3QgXAotICAgICIKKyAgICAke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LWh0bWxfMS42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3QtaHRtbF8xLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFjZTI5ZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LWh0bWxfMS42LmJiCkBAIC0wLDAgKzEsMTkgQEAKK0RFU0NSSVBUSU9OID0gInB5dGVzdCBwbHVnaW4gZm9yIGdlbmVyYXRpbmcgaHRtbCByZXBvcnRzIGZyb20gdGVzdCByZXN1bHRzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWh0bWwiCitMSUNFTlNFID0gIk1QTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9weXRlc3QtaHRtbC5MSUNFTlNFO21kNT01ZDQyNWM4ZjMxNTdkYmYyMTJkYjJlYzUzZDllNTEzMiIKKworIyBQZXIgUkVBRE1FLnJzdCB0aGUgbGljZW5zZSBzdGF0ZW1lbnQgaXMgZmV0Y2hlZCBmcm9tCisjIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9kYXZlaHVudC9weXRlc3QtaHRtbC9tYXN0ZXIvTElDRU5TRQorU1JDX1VSSSArPSAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2RhdmVodW50L3B5dGVzdC1odG1sL21hc3Rlci9MSUNFTlNFO25hbWU9bGljZW5zZTtkb3dubG9hZGZpbGVuYW1lPXB5dGVzdC1odG1sLkxJQ0VOU0UiCisKK1BZUElfUEFDS0FHRSA9ICJweXRlc3QtaHRtbCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhYzk1Njg2NGE5YjMzOTIyMDNkYWNkMjg3YWU0NTBmMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhMzU5ZGUwNDI3MzIzOTU4N2JkMWExNWIyOWIyMjY2ZGFlYWY1NmI3YTEzZjgyMjRiYzRmYjNhZTBiYTcyYzNmIgorU1JDX1VSSVtsaWNlbnNlLm1kNXN1bV0gPSAiNWQ0MjVjOGYzMTU3ZGJmMjEyZGIyZWM1M2Q5ZTUxMzIiCitTUkNfVVJJW2xpY2Vuc2Uuc2hhMjU2c3VtXSA9ICIyYmZkY2E2MGFkZjgwMzEwOGQ0YzdmMDA5MDAwYmVhNzZhZDAwZTYyMWUxNjMxOTc4ODFiMGVhYWU5MWI1MzBlIgorCitSREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0tcHl0ZXN0IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3QtbWV0YWRhdGFfMS44LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC1tZXRhZGF0YV8xLjguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDdiMGNlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3QtbWV0YWRhdGFfMS44LjAuYmIKQEAgLTAsMCArMSwxNSBAQAorREVTQ1JJUFRJT04gPSAicHl0ZXN0LW1ldGFkYXRhIGlzIGEgcGx1Z2luIHRoYXQgYWxsb3dlZCBmb3IgYWNjZXNzaW5nIHB5dGVzdCBtZXRhZGF0YSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1tZXRhZGF0YSIKK0xJQ0VOU0UgPSAiTVBMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTVkNDI1YzhmMzE1N2RiZjIxMmRiMmVjNTNkOWU1MTMyIgorCitQWVBJX1BBQ0tBR0UgPSAicHl0ZXN0LW1ldGFkYXRhIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSVttZDVzdW1dID0gIjk1Njc0YzIzOTBiNThlMDEzOGNhYmFjNTEwMWQxOTA4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIwNzFhNTkyODVkZTQwZDc1NDFmZGUxZWI5ZjFkZGVhMWM5ZGIxNjU4ODJkZjgyNzgxMzY3NDcxMjM4YjY2YmEiCisKK0RFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzLXNjbS1uYXRpdmUiCisKK1JERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1weXRlc3QiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC1ydW5uZXJfNS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3QtcnVubmVyXzUuMi5iYgppbmRleCBkZjU2YmE2Li5kMDBjZDQ4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC1ydW5uZXJfNS4yLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LXJ1bm5lcl81LjIuYmIKQEAgLTEsMiArMSwxNiBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcHl0ZXN0LXJ1bm5lci5pbmMKK1NVTU1BUlkgPSAiSW52b2tlIHB5LnRlc3QgYXMgZGlzdHV0aWxzIGNvbW1hbmQgd2l0aCBkZXBlbmRlbmN5IHJlc29sdXRpb24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWEzM2YzOGJiZjQ3ZDQ4YzcwZmUwZDQwZTVmNzc0OThlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTVmNjZiOGU4ZTg3ZjYyYzU5NjMxYzM1YzkxOWQzMjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTZjN2U3M2VhZDdiOTNlMzg4YzVkNjE0NzcwZDJiYWU2NTI2ZWZkOTk3NzU3ZDM1NDNmZTE3YjU1N2EwOTQyYiIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK0RFUEVORFMgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LXNldHVwdG9vbHMtc2NtLW5hdGl2ZSIKKworUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LXB5ICR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzICR7UFlUSE9OX1BOfS1kZWJ1Z2dlciAke1BZVEhPTl9QTn0tanNvbiBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0taW8iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LXRlbXBkaXJfMjAxOS4xMC4xMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LXRlbXBkaXJfMjAxOS4xMC4xMi5iYgppbmRleCAwMmU4MjE1Li43YTQ4ZmQ1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC10ZW1wZGlyXzIwMTkuMTAuMTIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3QtdGVtcGRpcl8yMDE5LjEwLjEyLmJiCkBAIC0xLDcgKzEsMTQgQEAKLXJlcXVpcmUgcHl0aG9uLXB5dGVzdC10ZW1wZGlyLmluYworREVTQ1JJUFRJT04gPSAiQWRkcyBzdXBwb3J0IGZvciBhIHByZWRpY3RhYmxlIGFuZCByZXBlYXRhYmxlIHRlbXBvcmFyeSBkaXJlY3RvcnkuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3NhbHRzdGFjay9weXRlc3QtdGVtcGRpciIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTk4NzJjM2EzN2NjOWJhZjc5YTQ2NGNkMTY4MjgyYmU1IgogCi1pbmhlcml0IHNldHVwdG9vbHMzCitTUkNfVVJJW21kNXN1bV0gPSAiNzliOTk3ZDQxOGZiODVjMjUyOWFiNTBjZDQzMzM2ODkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTdkOTE4MTNhOWFhOTkxZGI4N2RhY2RlZjhjZmQzZjE2NTc2MzJkNzMxZDU2ZDA2MjM4YzVmZmI2M2FiMzZkOCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCiAKIFJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgIHB5dGhvbjMtcHl0ZXN0IFwKLSAgICAiCisgICAgJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC10aW1lb3V0XzEuMy40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3QtdGltZW91dF8xLjMuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzU5OTY5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3QtdGltZW91dF8xLjMuNC5iYgpAQCAtMCwwICsxLDEzIEBACitTVU1NQVJZID0gInB5LnRlc3QgcGx1Z2luIHRvIGFib3J0IGhhbmdpbmcgdGVzdHMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtdGltZW91dC8iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQ4MDQ4Y2QxNTZlZGEzZGYyZTdmMTExYjBhZTljZWZmIgorCitQWVBJX1BBQ0tBR0UgPSAicHl0ZXN0LXRpbWVvdXQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxNTk0NzYyYWU3N2VkN2M2YzI3MjdhYThiNGFhOGJmYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4MGZhYTE5Y2QyNDVhNDJiODdhNTE2OTlkNjQwYzAwZDkzN2MwMmI3NDkwNTJiZmNhNmJhZThiZGJlMTJjNDhlIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LXB5dGVzdCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QvMDAwMS1zZXR1cC5weS1yZW1vdmUtdGhlLXNldHVwX3JlcXVpcmVzLWZvci1zZXR1cHRvb2xzLXNjbS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LzAwMDEtc2V0dXAucHktcmVtb3ZlLXRoZS1zZXR1cF9yZXF1aXJlcy1mb3Itc2V0dXB0b29scy1zY20ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QvMDAwMS1zZXR1cC5weS1yZW1vdmUtdGhlLXNldHVwX3JlcXVpcmVzLWZvci1zZXR1cHRvb2xzLXNjbS5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3QvMDAwMS1zZXR1cC5weS1yZW1vdmUtdGhlLXNldHVwX3JlcXVpcmVzLWZvci1zZXR1cHRvb2xzLXNjbS5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3RfNS4zLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdF81LjMuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJhNjYzMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdF81LjMuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1weXRlc3QuaW5jCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0XzUuMy41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3RfNS4zLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRhZDEzYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0XzUuMy41LmJiCkBAIC0wLDAgKzEsMzggQEAKK1NVTU1BUlkgPSAiU2ltcGxlIHBvd2VyZnVsIHRlc3Rpbmcgd2l0aCBweXRob24iCitIT01FUEFHRSA9ICJodHRwOi8vcHl0ZXN0Lm9yZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ODFlYjlmNzFkMDA2YzZiMjY4Y2Y0Mzg4ZTNjOThmN2IiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNWVmNDUzZjcyM2JlNDZkOTNlMDc5NWYzYmU4NmM4OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwZDVmZTkxODlhMTQ4YWNjM2MzZWIyYWM4ZTFhYzA3NDJjYjc2MThjMDg0ZjNkMjI4YmFhZWMwYzI1NGIzMThkIgorCitTUkNfVVJJX2FwcGVuZCA9ICIgZmlsZTovLzAwMDEtc2V0dXAucHktcmVtb3ZlLXRoZS1zZXR1cF9yZXF1aXJlcy1mb3Itc2V0dXB0b29scy1zY20ucGF0Y2ggIgorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWF0dHJzIFwKKyAgICAke1BZVEhPTl9QTn0tZGVidWdnZXIgXAorICAgICR7UFlUSE9OX1BOfS1kb2N0ZXN0IFwKKyAgICAke1BZVEhPTl9QTn0tanNvbiBcCisgICAgJHtQWVRIT05fUE59LXBsdWdneSBcCisgICAgJHtQWVRIT05fUE59LXB5IFwKKyAgICAke1BZVEhPTl9QTn0tc2V0dXB0b29scyBcCisgICAgJHtQWVRIT05fUE59LXNpeCBcCisgICAgJHtQWVRIT05fUE59LWF0b21pY3dyaXRlcyBcCisgICAgJHtQWVRIT05fUE59LWltcG9ydGxpYi1tZXRhZGF0YSBcCisgICAgJHtQWVRIT05fUE59LXBhdGhsaWIyIFwKKyAgICAke1BZVEhPTl9QTn0td2N3aWR0aCBcCisgICAgJHtQWVRIT05fUE59LW1vcmUtaXRlcnRvb2xzIFwKKyAgICAke1BZVEhPTl9QTn0tcGFja2FnaW5nIFwKKyIKKworQUxURVJOQVRJVkVfJHtQTn0gKz0gInB5LnRlc3QgcHl0ZXN0IgorCitOQVRJVkVfTElOS19OQU1FW3B5dGVzdF0gPSAiJHtiaW5kaXJ9L3B5dGVzdCIKK0FMVEVSTkFUSVZFX1RBUkdFVFtweXRlc3RdID0gIiR7YmluZGlyfS9weXRlc3QiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtweS50ZXN0XSA9ICIke2JpbmRpcn0vcHkudGVzdCIKK0FMVEVSTkFUSVZFX1RBUkdFVFtweS50ZXN0XSA9ICIke2JpbmRpcn0vcHkudGVzdCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRvbWwvcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRvbWwvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZWM3MTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dG9tbC9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworcHl0ZXN0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dG9tbF8wLjEuMjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dG9tbF8wLjEuMjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA5MDA1ZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0b21sXzAuMS4yMS5iYgpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIkEgVE9NTC0wLjQuMCBwYXJzZXIvd3JpdGVyIGZvciBQeXRob24iCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B5dG9tbC8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Y2ZmZjQyMzY5OWJkYWVmMjQzMzE5MzNhYzRmNTYwNzgiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlNTlkZDM2YTU1OWRkMmE4NzZlNGMxNDljNjllOTQ3YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZWVjZjdjOGQwYWRjZmYzYjM3NWIwOWZlNDAzNDA3YWE5YjY0NWM0OTllNWFiOGNhYzY3MGFjNGEzNWY2MWU3IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMgcHRlc3QKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJICs9ICIgXAorCWZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKwkke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwljcCAtcmYgJHtTfS90ZXN0LyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC8KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ei9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dHovcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZWM3MTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dHovcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGVzdApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXR6XzIwMTkuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0el8yMDE5LjMuYmIKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCAxOWE4OWRjLi5jMjhhMDE0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0el8yMDE5LjMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXR6XzIwMTkuMy5iYgpAQCAtMSwyICsxLDM2IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1weXR6LmluYworU1VNTUFSWSA9ICJXb3JsZCB0aW1lem9uZSBkZWZpbml0aW9ucywgbW9kZXJuIGFuZCBoaXN0b3JpY2FsIgorSE9NRVBBR0UgPSAiaHR0cDovL3B5dGhvbmhvc3RlZC5vcmcvcHl0eiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTQ4NzhhOTE1NzA5MjI1YmNlYWI3MzliZGMyYTE4ZThkIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMgcHRlc3QKKworU1JDX1VSSVttZDVzdW1dID0gImMzZDg0YTQ2NWZjNTZhNGVkZDUyY2NhODg3M2FjMGRmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImIwMmMwNmRiNmNmMDljMTJkZDI1MTM3ZTU2M2IzMTcwMGQzYjgwZmNjNGFkMjNhYmI3YTMxNWYyNzg5ODE5YmUiCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAorICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCisgICAgJHtQWVRIT05fUE59LWRvY3Rlc3QgXAorICAgICR7UFlUSE9OX1BOfS1pbyBcCisgICAgJHtQWVRIT05fUE59LXBpY2tsZSBcCisgICAgJHtQWVRIT05fUE59LXBwcmludCBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9weXR6CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9weXR6L3Rlc3RzCisJY3AgLXJmICR7U30vcHl0ei90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3B5dHovdGVzdHMvCisJY3AgLWYgJHtTfS9SRUFETUUudHh0ICR7RH0ke1BURVNUX1BBVEh9LworCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dWRldl8wLjIxLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dWRldl8wLjIxLjAuYmIKaW5kZXggYTYyZDk0NC4uZjM5ODQ3ZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXVkZXZfMC4yMS4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl1ZGV2XzAuMjEuMC5iYgpAQCAtMSwyICsxLDIxIEBACi1yZXF1aXJlIHB5dGhvbi1weXVkZXYuaW5jCitTVU1NQVJZID0gIkEgbGlidWRldiBiaW5kaW5nIgorTElDRU5TRSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKKworU1JDX1VSSVttZDVzdW1dID0gImNmNGQ5ZGI3ZDc3MjYyMjE0NGNhMWJlNmI1ZDkzNTNiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA5NGI3YTEwMDE1MDExNDc0OGFhYTNiNzA2NjM0ODVkZDM2MDQ1N2E3MDliZmFhYWZlNWE5NzczNzEwMzNmMmIiCisKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBzZWQgLWkgIi9pbXBvcnQgcHl1ZGV2L2QiICR7U30vc2V0dXAucHkKKyAgICBzZWQgLWkgInMvc3RyKHB5dWRldi5fX3ZlcnNpb25fXykvJyR7UFZ9Jy9nIiAke1N9L3NldHVwLnB5Cit9CisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKKyAgICAke1BZVEhPTl9QTn0tbWlzYyBcCisgICAgJHtQWVRIT05fUE59LXNpeCBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisgICAgbGlidWRldiBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dXNiXzEuMC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXVzYl8xLjAuMi5iYgppbmRleCAxZWNlZGU3Li40NGMyNGY0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dXNiXzEuMC4yLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl1c2JfMS4wLjIuYmIKQEAgLTEsMiArMSwxMiBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcHl1c2IuaW5jCitTVU1NQVJZID0gIlB5VVNCIHByb3ZpZGVzIFVTQiBhY2Nlc3Mgb24gdGhlIFB5dGhvbiBsYW5ndWFnZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9weXVzYi5zb3VyY2Vmb3JnZS5uZXQvIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01MTY5MWVkMTFjYzJjN2FlOTNlMzgzZjYwZWQ0OWIwZiIKK0RFUEVORFMgKz0gImxpYnVzYjEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4NjJiNTY0NTJjNjQ5NDhjNzg3YWQ4ZWY5NDk4NTkwYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZTliNzJjYzRhNDIwNWNhNjRmYmYxZjNmZmYzOWEzMzU1MTIxNjZjMTUxYWQxMDNlNTVjODIyM2FjMTQ3MzYyIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXlhbWxfNS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXlhbWxfNS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzBhY2E2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl5YW1sXzUuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcHl5YW1sLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXlhbWxfNS4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXlhbWxfNS4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1NDI1YjgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5eWFtbF81LjMuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJQeXRob24gc3VwcG9ydCBmb3IgWUFNTCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucHl5YW1sLm9yZyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNzZiNGM2OWJmY2Y4MjMxM2JiZGMwMzkzYjA0NDM4YSIKK0RFUEVORFMgPSAibGlieWFtbCAke1BZVEhPTl9QTn0tY3l0aG9uLW5hdGl2ZSAke1BZVEhPTl9QTn0iCisKK1BZUElfUEFDS0FHRSA9ICJQeVlBTUwiCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSVttZDVzdW1dID0gImFkYmIwZDMzNmI1MDlkNjQ3MmQzYjA5NWEwZjFjZjMwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU5ZjQ1YmQ1YjkyYzc5NzRlNTliY2QyZGNjODYzMWE2YjZjYzM4MGE5MDQ3MjVmY2U3YmMwODg3MmU2OTE2MTUiCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXptcV8xNy4xLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5em1xXzE3LjEuMC5iYgppbmRleCAwNTBmNTNhLi4yMzY5ZjA2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5em1xXzE3LjEuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5em1xXzE3LjEuMC5iYgpAQCAtMSwyICsxLDI3IEBACi1yZXF1aXJlIHB5dGhvbi1weXptcS5pbmMKLWluaGVyaXQgc2V0dXB0b29sczMKK1NVTU1BUlkgPSAiUHl6bXEgcHJvdmlkZXMgWmVybyBtZXNzYWdlIHF1ZXVlIGFjY2VzcyBmb3IgdGhlIFB5dGhvbiBsYW5ndWFnZSIKK0hPTUVQQUdFID0gImh0dHA6Ly96ZXJvbXEub3JnL2JpbmRpbmdzOnB5dGhvbiIKK0xJQ0VOU0UgPSAiQlNEICYgTEdQTC0zLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkJTRDttZDU9MTFjNjU2ODBmNjM3YzNkZjdmNThiYmM4ZDEzM2U5NmUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PTEyYzU5MmZhMGJjZmZmM2ZiMDk3N2IwNjZlOWNiNjllIgorREVQRU5EUyA9ICJ6ZXJvbXEiCisKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L3B5dGhvbi1weXptcToiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9jbHViLXJwYXRoLW91dC5wYXRjaCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhZWNkZmMzMjgxOTNmYmQ4MWY2ZGMyMzIyODMxOTk0MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMTk5Zjc1M2EyMzBlMjZhZWM1MjM4YjA1MThiMDM2NzgwNzA4YTRjODg3ZDQ5NDQ1MTk2ODFhOTIwYjlkZWU0IgorCitpbmhlcml0IHB5cGkgcGtnY29uZmlnIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tbXVsdGlwcm9jZXNzaW5nIgorCitGSUxFU18ke1BOfS1kYmcgPSsgIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3ptcS9iYWNrZW5kL2N5dGhvbi8uZGVidWciCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBlY2hvIFtnbG9iYWxdID4gJHtTfS9zZXR1cC5jZmcKKyAgICBlY2hvIHptcV9wcmVmaXggPSAke1NUQUdJTkdfRElSX0hPU1R9ID4+ICR7U30vc2V0dXAuY2ZnCisgICAgZWNobyBoYXZlX3N5c191bl9oID0gVHJ1ZSA+PiAke1N9L3NldHVwLmNmZworICAgIGVjaG8gc2tpcF9jaGVja196bXEgPSBUcnVlID4+ICR7U30vc2V0dXAuY2ZnCisgICAgZWNobyBsaWJ6bXFfZXh0ZW5zaW9uID0gRmFsc2UgPj4gJHtTfS9zZXR1cC5jZmcKKyAgICBlY2hvIG5vX2xpYnptcV9leHRlbnNpb24gPSBUcnVlID4+ICR7U30vc2V0dXAuY2ZnCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJhdmVuXzYuMTAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmF2ZW5fNi4xMC4wLmJiCmluZGV4IDBmMzQ2ZTQuLmIwZDE5YzMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmF2ZW5fNi4xMC4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmF2ZW5fNi4xMC4wLmJiCkBAIC0xLDIgKzEsMTMgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXJhdmVuLmluYworU1VNTUFSWSA9ICJSYXZlbiBpcyB0aGUgbGVnYWN5IFB5dGhvbiBjbGllbnQgZm9yIFNlbnRyeSAoZ2V0c2VudHJ5LmNvbSkiCitERVNDUklQVElPTiA9ICJcCitSYXZlbiBpcyB0aGUgb2ZmaWNpYWwgbGVnYWN5IFB5dGhvbiBjbGllbnQgZm9yIFNlbnRyeSwgb2ZmaWNpYWxseSBcCitzdXBwb3J0cyBQeXRob24gMi424oCTMi43ICYgMy4z4oCTMy43LCBhbmQgcnVucyBvbiBQeVB5IGFuZCBHb29nbGUgQXBwIEVuZ2luZS4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ2V0c2VudHJ5L3JhdmVuLXB5dGhvbiIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjlhNDQxNGUwOGYwNTcxZDU1MTg0NTMxY2VmYzEzMWIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNjc2ZjMxZGFkZmE2MTUyNjQ0NGRkMDI0NWM3OGEzOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZmE2ZGU2ZWZhMjQ5M2E3YzgyNzQ3MmU5ODRjZTliMDIwNzk3ZDBkYTE2ZjFkYjY3MTk3YmNjMjNjOGZhZTU0IgorCitQWVBJX1BBQ0tBR0UgPSAicmF2ZW4iCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmRmbGliXzQuMi4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZGZsaWJfNC4yLjIuYmIKaW5kZXggNjUxMWRmMy4uZjdlN2Y2MyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZGZsaWJfNC4yLjIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZGZsaWJfNC4yLjIuYmIKQEAgLTEsMiArMSwxNSBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcmRmbGliLmluYworU1VNTUFSWSA9ICJSREZMaWIgaXMgYSBwdXJlIFB5dGhvbiBwYWNrYWdlIGZvciB3b3JraW5nIHdpdGggUkRGIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02OGMxYTNiYjY4N2JkNjNiOGU1NTUyZjNlYTI0OTg0MCIKKworU1JDX1VSSVttZDVzdW1dID0gIjUzNGZlMzViMTNjNTg1N2Q1M2ZhMWFjNWE0MWVjYTY3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRhMWRmMTQ1NTI1NTVjNWM3NzE1ZDhjZTcxYzA4ZjQwNGM5ODhjNThhMWVjZDM4NTUyZDBkYTRmYzI2MTI4MGQiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0taXNvZGF0ZSBcCisgICAgJHtQWVRIT05fUE59LXB5cGFyc2luZyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVkaXNfMi4xMC42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZWRpc18yLjEwLjYuYmIKaW5kZXggYjE5MmVkOC4uM2FjYzJmZCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZWRpc18yLjEwLjYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZWRpc18yLjEwLjYuYmIKQEAgLTEsMiArMSwxNCBAQAorU1VNTUFSWSA9ICJQeXRob24gY2xpZW50IGZvciBSZWRpcyBrZXktdmFsdWUgc3RvcmUiCitERVNDUklQVElPTiA9ICJUaGUgUHl0aG9uIGludGVyZmFjZSB0byB0aGUgUmVkaXMga2V5LXZhbHVlIHN0b3JlLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2FuZHltY2N1cmR5L3JlZGlzLXB5IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01MWQ5YWQ1NjI5OWFiNjBiYTdiZTY1YTYyMTAwNGYyNyIKKworU1JDX1VSSVttZDVzdW1dID0gIjA0ODM0OGQ4Y2ZlMGI1ZDBiYmEyZjRkODM1MDA1YzNiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEyMmNhOTkzY2VhMjk2MmRiYjU4OGY5ZjMwZDAwMTVhYzRhZmNjNDViZWUyN2QzOTc4YzBkYmU5ZTk3YzZjMGYiCisKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcmVkaXMuaW5jCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVnZXhfMjAxOS4wOC4xOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVnZXhfMjAxOS4wOC4xOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggODAxOTRkNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlZ2V4XzIwMTkuMDguMTkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1TVU1NQVJZID0gIiIKLUhPTUVQQUdFID0gImh0dHA6Ly9weXRob25ob3N0ZWQub3JnL3JlZ2V4IgotTElDRU5TRSA9ICJQU0YiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9NTFjYjEyNDEyOWZhNGQxNTdiNGFlYmI3N2RmNzM2MjkiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDMxZWMzOTJhYjc1Yjg5NDQwNGQ4ZGI3NmRhY2QxOTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTg3YjYyZDQ4Y2EzNTlkMmQ0ZjAyZDQ4NmYxZjBhYTlhMjBmYmFmMjNhOWQ0MTk4YzRiZWQ3MmFiMmY2Yzg0OSIKLQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlZ2V4XzIwMjAuMS44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZWdleF8yMDIwLjEuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmRjMDM5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZWdleF8yMDIwLjEuOC5iYgpAQCAtMCwwICsxLDEyIEBACitTVU1NQVJZID0gIiIKK0hPTUVQQUdFID0gImh0dHA6Ly9weXRob25ob3N0ZWQub3JnL3JlZ2V4IgorTElDRU5TRSA9ICJQU0YiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9M2Q5ZWRiODRiMjkzYWI1YTllZDViY2FmMWI3NjlhYjYiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiNzNhYmMzZDdlOTAyZTk0YjQyODFmZDI2NTJmNWE5NGYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDBmNDI0MzI4Zjk4MjJiMDMyM2IzYjZmMmU0YjljOTA5NjBiMjQ3NDNkMjIwNzYzYzdmMDcwNzFlMDc3ODM1MSIKKworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlcXVlc3RzLW9hdXRobGliXzEuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZXF1ZXN0cy1vYXV0aGxpYl8xLjMuMC5iYgppbmRleCAxMjk0NjYxLi5mZDQ4Y2QzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlcXVlc3RzLW9hdXRobGliXzEuMy4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVxdWVzdHMtb2F1dGhsaWJfMS4zLjAuYmIKQEAgLTEsMyArMSw5IEBACi1yZXF1aXJlIHB5dGhvbi1yZXF1ZXN0cy1vYXV0aGxpYi5pbmMKK0xJQ0VOU0UgPSAiSVNDIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjJkMTE3YTg0OWRmMTBkMDQ3ZWQ5Yjc5MjgzOGU4NjMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxZWJjZDU1ZjFiMWI5MjgxOTQwYjRiYzMzMDEwZTJiYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNDI2MTYwMWE3MWZkNzIxYThiZDZkN2FhMWNjMWQ2YThhOTNiNGE5ZjVlOTY2MjZmOGU0ZDkxZThiZWVhYTZhIgorCiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKIAorUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1yZXF1ZXN0cyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVxdWVzdHNfMi4yMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZXF1ZXN0c18yLjIyLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhMjQxMGYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZXF1ZXN0c18yLjIyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXJlcXVlc3RzLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZXF1ZXN0c18yLjIzLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlcXVlc3RzXzIuMjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjNmYjdkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZXF1ZXN0c18yLjIzLjAuYmIKQEAgLTAsMCArMSwyOCBAQAorREVTQ1JJUFRJT04gPSAiUHl0aG9uIEhUVFAgZm9yIEh1bWFucy4iCitIT01FUEFHRSA9ICJodHRwOi8vcHl0aG9uLXJlcXVlc3RzLm9yZyIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE5YjZiZTY2ZWQ0NjNkOTNmYTg4YzI5Zjc4NjBiY2Q3IgorCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tcmVxdWVzdHM6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYWJmZGMyOGRiMTA2NWJiZDBiYzMyNTkyYWM5ZDI3YTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjNmNDNkNDk2YzZkYWJhNDQ5M2U3YzQzMTcyMmFlYjdkYmM2Mjg4ZjUyYTZlMDRlN2I2MDIzYjAyNDc4MTdlNiIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1lbWFpbCBcCisgICAgJHtQWVRIT05fUE59LWpzb24gXAorICAgICR7UFlUSE9OX1BOfS1uZGctaHR0cHNjbGllbnQgXAorICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAorICAgICR7UFlUSE9OX1BOfS1weWFzbjEgXAorICAgICR7UFlUSE9OX1BOfS1weW9wZW5zc2wgXAorICAgICR7UFlUSE9OX1BOfS1weXNvY2tzIFwKKyAgICAke1BZVEhPTl9QTn0tdXJsbGliMyBcCisgICAgJHtQWVRIT05fUE59LWNoYXJkZXQgXAorICAgICR7UFlUSE9OX1BOfS1pZG5hIFwKKyIKKworQ1ZFX1BST0RVQ1QgPSAicmVxdWVzdHMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmZjMzMzOS12YWxpZGF0b3JfMC4xLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJmYzMzMzktdmFsaWRhdG9yXzAuMS4xLmJiCmluZGV4IGY0ZWU4ZmUuLjFmNWQ5MWQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmZjMzMzOS12YWxpZGF0b3JfMC4xLjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZmMzMzM5LXZhbGlkYXRvcl8wLjEuMS5iYgpAQCAtMSwyICsxLDI1IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1yZmMzMzM5LXZhbGlkYXRvci5pbmMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitTVU1NQVJZID0gIkEgcHVyZSBweXRob24gUkZDMzMzOSB2YWxpZGF0b3IiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbmFpbWV0dGkvcmZjMzMzOS12YWxpZGF0b3IiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWEyMWIxM2I1YTk5NmYwOGY3ZTBiMDg4YWEzOGNlOWM2IgorCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tcmZjMzMzOS12YWxpZGF0b3I6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiOWQ4ODk5MDQxZDgzZjk4MTgwYmRkZDhiNjJlZTdlOTkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjBhNjAwZDAxZmJiMWY3OTNjYmI2ZjRlYzRlYmIyMTA0ZjRjOWU4MGQ3NGQ1Zjc4MzUwYjYzZWNjNmNjY2QwOCIKKworUFlQSV9QQUNLQUdFID0gInJmYzMzMzlfdmFsaWRhdG9yIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSV9hcHBlbmQgPSAiIFwKKyAgICBmaWxlOi8vMDAwMS1zZXR1cC5weS1tb3ZlLXB5dGVzdC1ydW5uZXItdG8tdGVzdF9yZXF1aXJlbWVudHMucGF0Y2ggXAorIgorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1jb3JlIFwKKyAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJmYzM5ODYtdmFsaWRhdG9yXzAuMS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZmMzOTg2LXZhbGlkYXRvcl8wLjEuMS5iYgppbmRleCA2NDkxMzA4Li5lZDY2OGZiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJmYzM5ODYtdmFsaWRhdG9yXzAuMS4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmZjMzk4Ni12YWxpZGF0b3JfMC4xLjEuYmIKQEAgLTEsMiArMSwyMyBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcmZjMzk4Ni12YWxpZGF0b3IuaW5jClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorU1VNTUFSWSA9ICJQdXJlIHB5dGhvbiByZmMzOTg2IHZhbGlkYXRvciIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9uYWltZXR0aS9yZmMzOTg2LXZhbGlkYXRvciIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTIxYjEzYjVhOTk2ZjA4ZjdlMGIwODhhYTM4Y2U5YzYiCisKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L3B5dGhvbi1yZmMzOTg2LXZhbGlkYXRvcjoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0N2Y3NjU3Yjc5MGFhZjYwMTFhMWFiM2Q4NmM2YmU5NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZDQ0YmRlNzkyMWIzYjllYzNhZTRlM2FkY2EzNzA0MzhlY2NlYmM2NzY0NTY0NDliMTQ1ZDUzM2IyNDBkMDU1IgorCitQWVBJX1BBQ0tBR0UgPSAicmZjMzk4Nl92YWxpZGF0b3IiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJX2FwcGVuZCA9ICIgXAorICAgIGZpbGU6Ly8wMDAxLXNldHVwLnB5LW1vdmUtcHl0ZXN0LXJ1bm5lci10by10ZXN0X3JlcXVpcmVtZW50cy5wYXRjaCBcCisiCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgcHl0aG9uMy1jb3JlIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZmMzOTg3XzEuMy44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZmMzOTg3XzEuMy44LmJiCmluZGV4IGNkMTUzNmIuLjgwZTJhYTUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmZjMzk4N18xLjMuOC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJmYzM5ODdfMS4zLjguYmIKQEAgLTEsMiArMSwxMCBAQAorU1VNTUFSWSA9ICJQYXJzaW5nIGFuZCB2YWxpZGF0aW9uIG9mIFVSSXMgKFJGQyAzOTg2KSBhbmQgSVJJcyAoUkZDIDM5ODcpIgorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9ODtlbmRsaW5lPTk7bWQ1PTJiNzIzZWRmNjdiMmYzMDg4YmM1ZTMzOWIxY2VkYTJkIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjZjNDAyOGFjZGM3ODhhOWJhNjk3ZTFjMWQ2Yjg5NmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDNjNGQyNTdhNTYwZDU0NGU5ODI2YjM4YmM4MWRiNjc2ODkwYzc5YWI5ZDdhYzkyYjM5YzdhMjUzZDVjYTczMyIKKwogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1yZmMzOTg3LmluYworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnkvZTMxZDVmZGYyZWEwMGFjNjM0OWU2NDU4MGEyMDgxNjc4MzA2NGRkNC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcm9ib3RmcmFtZXdvcmstc2VyaWFsbGlicmFyeS9lMzFkNWZkZjJlYTAwYWM2MzQ5ZTY0NTgwYTIwODE2NzgzMDY0ZGQ0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxZTk3ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnkvZTMxZDVmZGYyZWEwMGFjNjM0OWU2NDU4MGEyMDgxNjc4MzA2NGRkNC5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tIGUzMWQ1ZmRmMmVhMDBhYzYzNDllNjQ1ODBhMjA4MTY3ODMwNjRkZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIaWRla2kgVGFrZW9rYSA8aGlkZWtpLnRha2Vva2FAc21hcnRmcm9nLmNvbT4KK0RhdGU6IFN1biwgMjUgQXVnIDIwMTkgMTk6MjU6MDAgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gVXBkYXRlIHNldHVwLnB5IGZvciBweXRob24zLjcrIHN1cHBvcnQKKworLS0tCisgc2V0dXAucHkgICAgICAgICAgICAgICAgICAgICB8IDkgKysrKystLS0tCisgc3JjL1NlcmlhbExpYnJhcnkvdmVyc2lvbi5weSB8IDMgKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5CitpbmRleCA0YzM0NzA1Li43MGJiMWFmIDEwMDY0NAorLS0tIGEvc2V0dXAucHkKKysrKyBiL3NldHVwLnB5CitAQCAtMSw2ICsxLDUgQEAKKyAjIS91c3IvYmluL2VudiBweXRob24KKyAKKy1mcm9tIGltcCBpbXBvcnQgbG9hZF9zb3VyY2UKKyBmcm9tIG9zLnBhdGggaW1wb3J0IGFic3BhdGgsIGRpcm5hbWUsIGpvaW4KKyBmcm9tIHN5cyBpbXBvcnQgcGxhdGZvcm0KKyAKK0BAIC0xOCw5ICsxNywxMSBAQAorIAorIAorIENVUkRJUiA9IGRpcm5hbWUoYWJzcGF0aChfX2ZpbGVfXykpCistVkVSU0lPTiA9IGxvYWRfc291cmNlKAorLSAgICAndmVyc2lvbicsICd2ZXJzaW9uJywKKy0gICAgb3Blbihqb2luKENVUkRJUiwgJ3NyYycsICdTZXJpYWxMaWJyYXJ5JywgJ3ZlcnNpb24ucHknKSkpLlZFUlNJT04KKysKKyt3aXRoIG9wZW4oam9pbihDVVJESVIsICdzcmMnLCAnU2VyaWFsTGlicmFyeScsICd2ZXJzaW9uLnB5JykpIGFzIGY6CisrICAgIGV4ZWMoZi5yZWFkKCkpCisrICAgIFZFUlNJT04gPSBnZXRfdmVyc2lvbigpCisrCisgUkVBRE1FID0gb3Blbihqb2luKENVUkRJUiwgJ1JFQURNRS5yc3QnKSkucmVhZCgpCisgQ0xBU1NJRklFUlMgPSAnXG4nLmpvaW4oCisgICAgIG1hcCgnIDo6ICcuam9pbiwgWworZGlmZiAtLWdpdCBhL3NyYy9TZXJpYWxMaWJyYXJ5L3ZlcnNpb24ucHkgYi9zcmMvU2VyaWFsTGlicmFyeS92ZXJzaW9uLnB5CitpbmRleCA2Y2U2NWM0Li4xOTgzMWJjIDEwMDY0NAorLS0tIGEvc3JjL1NlcmlhbExpYnJhcnkvdmVyc2lvbi5weQorKysrIGIvc3JjL1NlcmlhbExpYnJhcnkvdmVyc2lvbi5weQorQEAgLTEgKzEsNCBAQAorIFZFUlNJT04gPSAoMCwgMywgMSkKKysKKytkZWYgZ2V0X3ZlcnNpb24oKToKKysgICAgcmV0dXJuIFZFUlNJT047CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnlfMC4zLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnlfMC4zLjEuYmIKaW5kZXggNDQwZjY5Yy4uYjZkZTQyZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5XzAuMy4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcm9ib3RmcmFtZXdvcmstc2VyaWFsbGlicmFyeV8wLjMuMS5iYgpAQCAtMSwyICsxLDIwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcm9ib3RmcmFtZXdvcmstc2VyaWFsbGlicmFyeS5pbmMKK1NVTU1BUlkgPSAiUm9ib3QgRnJhbWV3b3JrIHRlc3QgbGlicmFyeSBmb3Igc2VyaWFsIGNvbm5lY3Rpb24iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vd2hvc2F5c25pL3JvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnkiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9ODtlbmRsaW5lPTg7bWQ1PTcxNDVmN2NkZDI2MzM1OWI2MmQzNDJhMDJmMDA1NTE1IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjdjOTU2NWQ1NGMzMGRmN2NkM2YzYzBlMjlhZGZmYTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjU2YWQ2MGZjMGI3ZGY0YmU0NGQ4MmMzMDJmNWVkOGZhZDQ5MzVjZGE5OWU0YjQ1OTQyZTNjODgxNzlkMWUxOSIKKworUFlQSV9QQUNLQUdFID0gInJvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnkiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJICs9ICJmaWxlOi8vZTMxZDVmZGYyZWEwMGFjNjM0OWU2NDU4MGEyMDgxNjc4MzA2NGRkNC5wYXRjaCIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LXB5c2VyaWFsIFwKKyAgICAke1BZVEhPTl9QTn0tcm9ib3RmcmFtZXdvcmsgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJvYm90ZnJhbWV3b3JrXzMuMC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yb2JvdGZyYW1ld29ya18zLjAuNC5iYgppbmRleCA4ZjYxM2MzLi4wNjI4ZjkyIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJvYm90ZnJhbWV3b3JrXzMuMC40LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcm9ib3RmcmFtZXdvcmtfMy4wLjQuYmIKQEAgLTEsMiArMSwyNiBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcm9ib3RmcmFtZXdvcmsuaW5jCitTVU1NQVJZID0gIkEgUHl0aG9uIGdlbmVyaWMgdGVzdCBhdXRvbWF0aW9uIGZyYW1ld29yayIKK0RFU0NSSVBUSU9OID0gIkdlbmVyaWMgb3BlbiBzb3VyY2UgdGVzdCBhdG9tYXRpb24gZnJhbWV3b3JrIGZvciBhY2NlcHRhbmNlXAordGVzdGluZyBhbmQgYWNjZXB0YW5jZSB0ZXN0LWRyaXZlbiBkZXZlbG9wbWVudCAoQVRERCkuIEl0IGhhcyBlYXN5LXRvLXVzZVwKK3RhYnVsYXIgdGVzdCBkYXRhIHN5bnRheCBhbmQgaXQgdXRpbGl6ZXMgdGhlIGtleXdvcmQtZHJpdmVuIHRlc3RpbmcgYXBwcm9hY2guXAorSXRzIHRlc3RpbmcgY2FwYWJpbGl0aWVzIGNhbiBiZSBleHRlbmRlZCBieSB0ZXN0IGxpYnJhcmllcyBpbXBsZW1lbnRlZCBlaXRoZXJcCit3aXRoIFB5dGhvbiBvciBKYXZhLCBhbmQgdXNlcnMgY2FuIGNyZWF0ZSBuZXcgaGlnaGVyLWxldmVsIGtleXdvcmRzIGZyb21cCitleGlzdGluZyBvbmVzIHVzaW5nIHRoZSBzYW1lIHN5bnRheCB0aGF0IGlzIHVzZWQgZm9yIGNyZWF0aW5nIHRlc3QgY2FzZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3JvYm90ZnJhbWV3b3JrLm9yZyIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZTc1MzQxNTY0NWZmNDgzMWZmMGQzNjZhMDQ2N2ZlNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhYjk0MjU3Y2JkODQ4ZGZjYTcxNDhlMDkyZDIzM2ExMjg1M2NjN2U4NDBjZTgyMzFhZjljYmI1ZTdmNTFhYTQ3IgorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAorICAgICR7UFlUSE9OX1BOfS1wcHJpbnQgXAorICAgICR7UFlUSE9OX1BOfS14bWwgXAorICAgICR7UFlUSE9OX1BOfS1kaWZmbGliIFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgICAke1BZVEhPTl9QTn0taHRtbCBcCisgICAgJHtQWVRIT05fUE59LWRvY3V0aWxzIFwKKyAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY3J5cHQvMDAwMS1weS1zY3J5cHQtcmVtb3ZlLXRoZS1oYXJkLWNvZGVkLWluY2x1ZGUtcGF0aHMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjcnlwdC8wMDAxLXB5LXNjcnlwdC1yZW1vdmUtdGhlLWhhcmQtY29kZWQtaW5jbHVkZS1wYXRocy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNjcnlwdC8wMDAxLXB5LXNjcnlwdC1yZW1vdmUtdGhlLWhhcmQtY29kZWQtaW5jbHVkZS1wYXRocy5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY3J5cHQvMDAwMS1weS1zY3J5cHQtcmVtb3ZlLXRoZS1oYXJkLWNvZGVkLWluY2x1ZGUtcGF0aHMucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NyeXB0L3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NyeXB0L3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGMyODQ3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY3J5cHQvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMiBAQAorIyEvYmluL3NoCitweXRlc3QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NyeXB0XzAuOC42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY3J5cHRfMC44LjYuYmIKaW5kZXggZjQ5NjY1My4uNzU4OGZjNSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY3J5cHRfMC44LjYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY3J5cHRfMC44LjYuYmIKQEAgLTEsMyArMSwyNCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMyBweXRob24zLWRpcgotcmVxdWlyZSBweXRob24tc2NyeXB0LmluYworREVTQ1JJUFRJT04gPSAiQmluZGluZ3MgZm9yIHRoZSBzY3J5cHQga2V5IGRlcml2YXRpb24gZnVuY3Rpb24gbGlicmFyeSIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTY4ZmY3NTQxN2Y3NWE4M2U2M2M4ODc1MjkyZDQ0ZGMiCitIT01FUEFHRT0iaHR0cHM6Ly9iaXRidWNrZXQub3JnL21oYWxsaW4vcHktc2NyeXB0L292ZXJ2aWV3IgogCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1weS1zY3J5cHQtcmVtb3ZlLXRoZS1oYXJkLWNvZGVkLWluY2x1ZGUtcGF0aHMucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhZThlMzI2M2FhMzFiMDQwYzFmOWM3ZjFlMTg0M2E1NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmODIzOWIyZDQ3ZmExZDQwYmMyN2VmZDIzMWRjNzA4MzY5NWQxMGMxYzJhYzUxYTk5MzgwMzYwNzQxZTAzNjJkIgorCitpbmhlcml0IHB5cGkgcHRlc3Qgc2V0dXB0b29sczMKKworU1JDX1VSSSArPSAiIFwKKyAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgIGNwIC1yZiAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNkbm90aWZ5XzAuMy4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZG5vdGlmeV8wLjMuMi5iYgppbmRleCAzNzdhZjEyLi4yMjFhOGM4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNkbm90aWZ5XzAuMy4yLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2Rub3RpZnlfMC4zLjIuYmIKQEAgLTEsMiArMSwxOCBAQAorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2JiNDI0Mi9zZG5vdGlmeSIKK1NVTU1BUlkgPSAiQSBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBzeXN0ZW1kJ3Mgc2VydmljZSBub3RpZmljYXRpb24gcHJvdG9jb2wgKHNkX25vdGlmeSkiCisKK0RFU0NSSVBUSU9OID0gIlwKKyAgc2Rub3RpZnkgaXMgYSBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3lzdGVtZCBzZF9ub3RpZnkgcHJvdG9jb2wuIFwKKyAgVGhpcyBwcm90b2NvbCBjYW4gYmUgdXNlZCB0byBpbmZvcm0gc3lzdGVtZCBhYm91dCBzZXJ2aWNlIHN0YXJ0LXVwIGNvbXBsZXRpb24sIFwKKyAgd2F0Y2hkb2cgZXZlbnRzLCBhbmQgb3RoZXIgc2VydmljZSBzdGF0dXMgY2hhbmdlcy4gXAorICBUaHVzLCB0aGlzIHBhY2thZ2UgY2FuIGJlIHVzZWQgdG8gd3JpdGUgc3lzdGVtIHNlcnZpY2VzIGluIFB5dGhvbiB0aGF0IHBsYXkgbmljZWx5IHdpdGggc3lzdGVtZC4gXAorICAiCisKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9Y2M1NzJjY2M0YjE4YTRiN2QxM2JlNWQwMWJjODIxM2UiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3NDlkZGNhMWM3MGJlMTY5N2ZlY2M0NDNmYjFmZGIxNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3Mzk3N2ZjNzQ2YjM2Y2M0MTE4NGRkNDNjM2ZlODEzMjNlN2I4YjA2YzJiYjA4MjZjNGY1OWEyMGM1NmJiOWYxIgorCiBpbmhlcml0IHNldHVwdG9vbHMzIHB5cGkKLXJlcXVpcmUgcHl0aG9uLXNkbm90aWZ5LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZW12ZXJfMi44LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNlbXZlcl8yLjguMS5iYgppbmRleCA3NzkyNWFlLi5hNDY5YjIzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNlbXZlcl8yLjguMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNlbXZlcl8yLjguMS5iYgpAQCAtMSwyICsxLDEyIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1zZW12ZXIuaW5jCitERVNDUklQVElPTiA9ICJQeXRob24gbW9kdWxlIGZvciBTZW1hbnRpYyBWZXJzaW9uaW5nIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2stYngvcHl0aG9uLXNlbXZlciIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2stYngvcHl0aG9uLXNlbXZlci9pc3N1ZXMiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ZTkxMGIzNWIwZWY0ZTFmNjY1YjlhNzVkNmFmYjc3MDkiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkYzU3OWJhOWQwYmIyMTM3YmFkNTMyNGQ0YmRiN2U0MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1YjA5MDEwYTY2ZDlhMzgzNzIxMWJiN2FlNWEyMGQxMGJhODhmOGNiNDllOTJjYjEzOWE2OWVmOTBkNTA2MGQ4IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZW50cnktc2RrXzAuMTQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2VudHJ5LXNka18wLjE0LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk0ZTFmOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2VudHJ5LXNka18wLjE0LjAuYmIKQEAgLTAsMCArMSwxMiBAQAorU1VNTUFSWSA9ICJUaGUgbmV3IFB5dGhvbiBTREsgZm9yIFNlbnRyeS5pbyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgaXMgdGhlIG5leHQgbGluZSBvZiB0aGUgUHl0aG9uIFNESyBcCitmb3IgU2VudHJ5LCBpbnRlbmRlZCB0byByZXBsYWNlIHRoZSByYXZlbiBwYWNrYWdlIG9uIFB5UEkuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9zZW50cnktcHl0aG9uIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wYzc5ZjhkM2M5MWZjODQ3MzUwZWZkMjhiZmUwYTM0MSIKKworU1JDX1VSSVttZDVzdW1dID0gIjJkNWNjNDNjOGExNzgxMzRiNzM5Yzc3NDM5ZDFmMjZiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhlMmQzOGRjNThkYzk5MjI4MDQ4N2U1NTNlYzNkOTdhNDI0ZTRkMTc5ZjRmYWQ4MDJlZjNiMDhmNjRjY2Y0ZDgiCisKK1BZUElfUEFDS0FHRSA9ICJzZW50cnktc2RrIgoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNlbnRyeS1zZGtfMC43LjE0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZW50cnktc2RrXzAuNy4xNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQwZGY5My4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNlbnRyeS1zZGtfMC43LjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1zZW50cnktc2RrLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXJwZW50L3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2VycGVudC9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBjMjg0NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2VycGVudC9ydW4tcHRlc3QKQEAgLTAsMCArMSwyIEBACisjIS9iaW4vc2gKK3B5dGVzdApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXJwZW50XzEuMjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNlcnBlbnRfMS4yOC5iYgppbmRleCAxZTA0ZGVmLi5hZjJkNGFhIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNlcnBlbnRfMS4yOC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNlcnBlbnRfMS4yOC5iYgpAQCAtMSwyICsxLDI3IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1zZXJwZW50LmluYworU1VNTUFSWSA9ICJTZXJpYWxpemF0aW9uIGJhc2VkIG9uIGFzdC5saXRlcmFsX2V2YWwiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT01Y2Q3MDYzMmI2Y2RiOTZkZjlkZGFmNmE0Y2U2MTllNiIKKworU1JDX1VSSVttZDVzdW1dID0gIjE1ZWY4YjY3Yzc2YTZkMTliYWM5YzE2NzMxYTFlNjJhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImYzMDYzMzZjYTA5YWEzOGU1MjZmM2IwM2NhYjU4ZWI3ZTQ1YWYwOTk4MTI2NzIzMzE2N2JjZjNiZmQ2NDM2YWIiCisKK2luaGVyaXQgcHlwaSBwdGVzdCBzZXR1cHRvb2xzMworCitTUkNfVVJJICs9ICIgXAorICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyAgICAke1BZVEhPTl9QTn0tcHl0eiBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgIGNwIC1yZiAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCit9CisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCisgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAorIiAgICAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29scy1zY21fMy4zLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHMtc2NtXzMuMy4zLmJiCmluZGV4IDViZjU5ODMuLmY4ZDI4YjMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29scy1zY21fMy4zLjMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzLXNjbV8zLjMuMy5iYgpAQCAtMSwyICsxLDE0IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1zZXR1cHRvb2xzLXNjbS5pbmMKK1NVTU1BUlkgPSAidGhlIGJsZXNzZWQgcGFja2FnZSB0byBtYW5hZ2UgeW91ciB2ZXJzaW9ucyBieSBzY20gdGFncyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTg7ZW5kbGluZT04O21kNT04MjI3MTgwMTI2Nzk3YTAxNDhmOTRmNDgzZjNlMTQ4OSIKKworU1JDX1VSSVttZDVzdW1dID0gIjUwYjIxOTkwODJmZTgwOGQwMzJlYzE3MTBjOWQ3NDE1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJkMjVlMWZiNWU0ZDYwM2RjZjQ5MGYxZmRlNDBmYjRjNTk1YjM1Nzc5NTY3NGMzZTVjYjdmNjIxN2FiMzllYTUiCisKK1BZUElfUEFDS0FHRSA9ICJzZXR1cHRvb2xzX3NjbSIKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiJHtQWVRIT05fUE59LXB5ICR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzICR7UFlUSE9OX1BOfS1kZWJ1Z2dlciAke1BZVEhPTl9QTn0tanNvbiIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIke1BZVEhPTl9QTn0tc2V0dXB0b29scy1uYXRpdmUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaF8xLjEyLjE0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaF8xLjEyLjE0LmJiCmluZGV4IDgxMmJkNGIuLmI3ODU4NzMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2hfMS4xMi4xNC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNoXzEuMTIuMTQuYmIKQEAgLTEsNSArMSwyNCBAQAotcmVxdWlyZSBweXRob24tc2guaW5jCi1pbmhlcml0IHNldHVwdG9vbHMzCitTVU1NQVJZID0gIlB5dGhvbiBzdWJwcm9jZXNzIHJlcGxhY2VtZW50IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Ftb2ZmYXQvc2giCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT01MzE3MDk0MjkyMjk2ZjAzNDA1ZjU5YWU1ZjY1NDRiNiIKKworU1JDX1VSSVttZDVzdW1dID0gImE4MzUxYWVmMjVkMjVmNzA3YzE3ZTBhN2E2MjgwMjUxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI1MmJmNTgzM2VkMDFjN2I1YzVmYjczYTdmNzFiM2Q5OGQ0OGU5YjliODc2NDIzNjIzN2JkYzdlY2FlODUwZmMiCisKK1BZUElfUEFDS0FHRSA9ICJzaCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCiAKIFJERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1jb2RlY3MgXAorICAgICR7UFlUSE9OX1BOfS1jb3JlIFwKKyAgICAke1BZVEhPTl9QTn0taW8gXAorICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tcmVzb3VyY2UgXAorICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICAgJHtQWVRIT05fUE59LXRlcm1pbmFsIFwKKyAgICAke1BZVEhPTl9QTn0tdGVzdHMgXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorICAgICR7UFlUSE9OX1BOfS11bml4YWRtaW4gXAogIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaWpheF8wLjMuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2lqYXhfMC4zLjIuYmIKaW5kZXggMjRlNjgzMy4uOWEyOGZjNSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaWpheF8wLjMuMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpamF4XzAuMy4yLmJiCkBAIC0xLDQgKzEsMTAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXNpamF4LmluYworREVTQ1JJUFRJT04gPSAiQW4gZWFzeSB0byB1c2UgQUpBWCBsaWJyYXJ5IGZvciBQeXRob24gYmFzZWQgb24galF1ZXJ5LmFqYXgiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc3BhbnRhbGVldi9zaWpheC1weXRob24iCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKIAotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjExYjA2MmY0YThiMmFhZDk1Yzg3ZTdjMDllNWRhZjVhNmIwZDBmMDhhYmY5ZWZlNWY5MWEwMDc1YzZiZTdjMGQiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTE2ZTIxM2Q3NTY0MWEzOTI0NzhkZjUwY2YwODQxOTAzIgorCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTFiMDYyZjRhOGIyYWFkOTVjODdlN2MwOWU1ZGFmNWE2YjBkMGYwOGFiZjllZmU1ZjkxYTAwNzVjNmJlN2MwZCIKKworUFlQSV9QQUNLQUdFID0gIlNpamF4IgoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpbXBsZWV2YWwvcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaW1wbGVldmFsL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzg1ZDY4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaW1wbGVldmFsL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRlc3QgLW8gbG9nX2NsaT10cnVlIC1vIGxvZ19jbGlfbGV2ZWw9SU5GTyB8IHNlZCAtZSAncy9cWy4uLiVcXS8vZyd8IHNlZCAtZSAncy9QQVNTRUQvUEFTUy9nJ3wgc2VkIC1lICdzL0ZBSUxFRC9GQUlML2cnfHNlZCAtZSAncy9TS0lQRUQvU0tJUC9nJ3wgYXdrICd7aWYgKCRORj09IlBBU1MiIHx8ICRORj09IkZBSUwiIHx8ICRORj09IlNLSVAiIHx8ICRORj09IlhGQUlMIiB8fCAkTkY9PSJYUEFTUyIpe3ByaW50ZiAiJXM6ICVzXG4iLCAkTkYsICQwfWVsc2V7cHJpbnR9fSd8IGF3ayAne2lmICgkTkY9PSJQQVNTIiB8fCAkTkY9PSJGQUlMIiB8fCAkTkY9PSJTS0lQIiB8fCAkTkY9PSJYRkFJTCIgfHwgJE5GPT0iWFBBU1MiKSB7JE5GPSIiO3ByaW50ICQwfWVsc2V7cHJpbnR9fScKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2ltcGxlZXZhbF8wLjkuMTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpbXBsZWV2YWxfMC45LjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYWNmOWEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpbXBsZWV2YWxfMC45LjEwLmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiQSBzaW1wbGUsIHNhZmUgc2luZ2xlIGV4cHJlc3Npb24gZXZhbHVhdG9yIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkub3JnL3Byb2plY3Qvc2ltcGxlZXZhbC8iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWRjOTI3NzQ4MmVmZmU1OWI3MzRiMDA0Y2JjYzFmZWU3IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjE3NWZjMTJkNDA4NDg3Y2EyNmZhMzkwNWUwYTY2OTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjkyMDU1NDg4YzI4NjQ2MzdmNmMyZWRiNWZhNDgxNzU5NzhhMmEwNzMxODAwOWU3Y2YwM2M5NzkwY2ExN2JlYSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzIHB0ZXN0CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgLWYgJHtTfS90ZXN0X3NpbXBsZWV2YWwucHkgJHtEfSR7UFRFU1RfUEFUSH0vCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpbXBsZWpzb25fMy4xNy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaW1wbGVqc29uXzMuMTcuMC5iYgppbmRleCAzOGY0MDZjLi5iNzZhZTUyIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpbXBsZWpzb25fMy4xNy4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2ltcGxlanNvbl8zLjE3LjAuYmIKQEAgLTEsMiArMSwyNSBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tc2ltcGxlanNvbi5pbmMKK1NVTU1BUlkgPSAiU2ltcGxlLCBmYXN0LCBleHRlbnNpYmxlIEpTT04gZW5jb2Rlci9kZWNvZGVyIGZvciBQeXRob24iCitIT01FUEFHRSA9ICJodHRwOi8vY2hlZXNlc2hvcC5weXRob24ub3JnL3B5cGkvc2ltcGxlanNvbiIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9YzYzMzhkN2FiZDMyMWMwYjUwYTJhNTQ3ZTQ0MWM1MmUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4YTVlZDc1YzM2N2I5MGZlZGMzZDY4NTc0MmUyYTFjNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyYjRiMmI3MzhiM2I5OTgxOWExN2ZlYWYxMTgyNjVkMDc1M2Q1NTM2MDQ5ZWE1NzBiM2M0M2I1MWM0NzAxZTgxIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0taW8gXAorICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAorICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKKyIKKworUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgorUkRFUEVORFNfJHtQTn0tdGVzdHMgPSAiJHtQTn0gJHtQWVRIT05fUE59LXVuaXR0ZXN0IgorRklMRVNfJHtQTn0tdGVzdHMrPSAiIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zaW1wbGVqc29uL3Rlc3RzIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zaW1wbGVqc29uL3Rvb2wucHkqIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zbGlwLWRidXNfMC42LjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNsaXAtZGJ1c18wLjYuNS5iYgppbmRleCAyNDAyYTdhLi4yMzA5OWYzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNsaXAtZGJ1c18wLjYuNS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNsaXAtZGJ1c18wLjYuNS5iYgpAQCAtMSwyICsxLDM0IEBACitTVU1NQVJZID0gIkNvbnZlbmllbmNlIGZ1bmN0aW9ucyBmb3IgZGJ1cyBzZXJ2aWNlcyBpbiBQeXRob24gMi54IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL25waGlsaXBwL3B5dGhvbi1zbGlwIgorREVTQ1JJUFRJT04gPSAiXAorVGhlIFNpbXBsZSBMaWJyYXJ5IGZvciBQeXRob24gMi54IHBhY2thZ2VzIGNvbnRhaW4gbWlzY2VsbGFuZW91cyBjb2RlIGZvciBcCitjb252ZW5pZW5jZSwgZXh0ZW5zaW9uIGFuZCB3b3JrYXJvdW5kIHB1cnBvc2VzLiBcCitcCitUaGlzIHBhY2thZ2UgcHJvdmlkZXMgc2xpcC5kYnVzLnNlcnZpY2UuT2JqZWN0LCB3aGljaCBpcyBhIGRidXMuc2VydmljZS5PYmplY3QgXAorZGVyaXZhdGl2ZSB0aGF0IGVuZHMgaXRzZWxmIGFmdGVyIGEgY2VydGFpbiB0aW1lIHdpdGhvdXQgYmVpbmcgdXNlZCBhbmQvb3IgaWYgXAordGhlcmUgYXJlIG5vIGNsaWVudHMgYW55bW9yZSBvbiB0aGUgbWVzc2FnZSBidXMsIGFzIHdlbGwgYXMgY29udmVuaWVuY2UgXAorZnVuY3Rpb25zIGFuZCBkZWNvcmF0b3JzIGZvciBpbnRlZ3JhdGluZyBhIGRidXMgc2VydmljZSB3aXRoIFBvbGljeUtpdC4iCisKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01NTc0YzY5NjVhZTVmNTgzZTU1ODgwZTM5N2ZiYjAxOCIKK1NSQ05BTUUgPSAicHl0aG9uLXNsaXAiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL25waGlsaXBwLyR7U1JDTkFNRX0vcmVsZWFzZXMvZG93bmxvYWQvJHtTUkNOQU1FfS0ke1BWfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5iejIiCitTID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKKworU1JDX1VSSVttZDVzdW1dID0gIjI4YWU1ZjkzODUzNDY2YzQ0ZWM5NjcwNmJhMmExZWI0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM3MjZjMDg2ZjBkZDkzYTBhYzdhMDE3NmYzODNhMTJhZjkxYjY2NTdiNzhhMzAxZTNmNWIyNWQ5ZjhkNGQxMGIiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBzZWQgLWUgJ3MvQFZFUlNJT05ALyR7UFZ9L2cnICR7U30vc2V0dXAucHkuaW4gPiAke1N9L3NldHVwLnB5Cit9CisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LXNpeCBcCisiCisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xODQ3MTMvCisjIHB5dGhvbi1uYXRpdmUvcHl0aG9uOiBjYW4ndCBvcGVuIGZpbGUgJ3NldHVwLnB5JzogW0Vycm5vIDJdIE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKK0NMRUFOQlJPS0VOID0gIjEiCisKIGluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXNsaXAtZGJ1cy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc21idXMyXzAuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zbWJ1czJfMC4zLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVlNzBhMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc21idXMyXzAuMy4wLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiRHJvcC1pbiByZXBsYWNlbWVudCBmb3Igc21idXMtY2ZmaS9zbWJ1cy1weXRob24gaW4gcHVyZSBQeXRob24iCitERVNDUklQVElPTiA9ICJzbWJ1czIgaXMgYSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciBzbWJ1cy1jZmZpL3NtYnVzLXB5dGhvbiBpbiBwdXJlIFB5dGhvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9rcGxpbmRlZ2FhcmQvc21idXMyIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNWVkNWFjYzg4OWI0NzcwYTg0Y2M5MzI4NTNlZDIwYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMTBlNjZlZWJlNGQwYjFmZTgzNmIzZWMyNzUxODQxOTQyZTFjNDkxOGMwYjQyOWIyMGEwZTIwYTIyMjIyOGI0IgorCitDTEVBTkJST0tFTiA9ICIxIgorCitQWVBJX1BBQ0tBR0UgPSAic21idXMyIgorCitSREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0tY3R5cGVzICR7UFlUSE9OX1BOfS1mY250bCIKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAgICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCisgICAgICAgICR7UFlUSE9OX1BOfS1mY250bCBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNtYnVzXzQuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc21idXNfNC4xLmJiCmluZGV4IGIzNTdiY2QuLjFiZTc3MzkgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc21idXNfNC4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc21idXNfNC4xLmJiCkBAIC0xLDIgKzEsMTMgQEAKK1NVTU1BUlkgPSAiU2V0IG9mIGkyYyB0b29scyBmb3IgbGludXggLSBQeXRob24gbW9kdWxlIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NtYnVzbW9kdWxlLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xODttZDU9NDZlNDI0ZmIwNDU5MDFhYjI1ZTBmOTJjMjhjODAwNTUiCitQUiA9ICJyMSIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L3NvZnR3YXJlL3V0aWxzL2kyYy10b29scy9pMmMtdG9vbHMtJHtQVn0udGFyLmd6ICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNTM2MjM3YTZiNTFmYjEwY2FhY2RjM2I4YTQ5NjIzNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlZjhmNzdhZmM3MGU3ZGJmZDExNzFiZmVhZTg3YThhN2YxMDA3NDgyOTM3MGNlOGQ5Y2NkNTg1YTAxNGUwMDczIgorCitERVBFTkRTICs9ICJpMmMtdG9vbHMiCisKK1MgPSAiJHtXT1JLRElSfS9pMmMtdG9vbHMtJHtQVn0vcHktc21idXMvIgogaW5oZXJpdCBkaXN0dXRpbHMzCi1yZXF1aXJlIHB5dGhvbi1zbWJ1cy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc29ja2V0aW9fNC4zLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNvY2tldGlvXzQuMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmY1OTBiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc29ja2V0aW9fNC4zLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLQotUEFDS0FHRUNPTkZJRyA/PSAiYXN5bmNpb19jbGllbnQgY2xpZW50IgotcmVxdWlyZSBweXRob24tc29ja2V0aW8uaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNvY2tldGlvXzQuNS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zb2NrZXRpb180LjUuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGVjYmJhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zb2NrZXRpb180LjUuMS5iYgpAQCAtMCwwICsxLDI4IEBACitTVU1NQVJZID0gIlNvY2tldC5JTyBzZXJ2ZXIiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbWlndWVsZ3JpbmJlcmcvcHl0aG9uLXNvY2tldGlvLyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTQyZDBhOWU3Mjg5NzhmMGVlYjc1OWMzYmU5MTUzNmI4IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUFlQSV9QQUNLQUdFID0gInB5dGhvbi1zb2NrZXRpbyIKKworU1JDX1VSSVttZDVzdW1dID0gIjNkYmQwYTJlYmNmMzQ2MzJmNjczMjdiNjY1Y2JiOTUxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE0OWI5OGMzM2Y4YzNkMDkyNzNmYjRlYmViODM3ODFlNGRjOTQxMWI1NmIyN2Q5ZjA1OGJlYzFiZDFlZDc0YjciCisKK1BBQ0tBR0VDT05GSUcgPz0gImFzeW5jaW9fY2xpZW50IGNsaWVudCIKK1BBQ0tBR0VDT05GSUdbYXN5bmNpb19jbGllbnRdID0gIiwsLCR7UFlUSE9OX1BOfS1haW9odHRwICR7UFlUSE9OX1BOfS13ZWJzb2NrZXRzIgorUEFDS0FHRUNPTkZJR1tjbGllbnRdID0gIiwsLCR7UFlUSE9OX1BOfS1yZXF1ZXN0cyAke1BZVEhPTl9QTn0td2Vic29ja2V0LWNsaWVudCIKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tZW5naW5laW8gXAorICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tbWF0aCBcCisgICAgJHtQWVRIT05fUE59LXBpY2tsZSBcCisgICAgJHtQWVRIT05fUE59LWpzb24gXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorICAgICR7UFlUSE9OX1BOfS1hdHRycyBcCisgICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zb3Vwc2lldmVfMS45LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNvdXBzaWV2ZV8xLjkuNC5iYgppbmRleCAxYjk2NjM2Li5kZjY5ZTAwIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNvdXBzaWV2ZV8xLjkuNC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNvdXBzaWV2ZV8xLjkuNC5iYgpAQCAtMSwyICsxLDEyIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1zb3Vwc2lldmUuaW5jCitTVU1NQVJZID0gIkNTUyBzZWxlY3RvciBsaWJyYXJ5IGZvciBweXRob24tYmVhdXRpZnVsc291cDQiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZmFjZWxlc3N1c2VyL3NvdXBzaWV2ZSIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLm1kO21kNT01YTZmZDNiMGMyNGZjNWEwNDFhM2QxYmJiMjJjODFiNSIKKworU1JDX1VSSVttZDVzdW1dID0gIjQzZDhlYTIwYzU4NDk0NDQ2YWE2NWJhNWNjNjMyMGZlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYwNWY4OWFkNWZkYmZlZmUzMGNkYzI5MzMwMzY2NWVmZjJkMTg4ODY1ZDRkYmU0ZWI1MTBiYmExZWRmYmZjZTMiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNwZWFrbGF0ZXJfMS4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcGVha2xhdGVyXzEuMy5iYgppbmRleCBhYTRmNjk5Li41OTQ4ZGM4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNwZWFrbGF0ZXJfMS4zLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3BlYWtsYXRlcl8xLjMuYmIKQEAgLTEsMiArMSw5IEBACitERVNDUklQVElPTiA9ICJNZWRpYSBhc3NldCBtYW5hZ2VtZW50IGZvciBQeXRob24sIHdpdGggZ2x1ZSBjb2RlIGZvciB2YXJpb3VzIGZyYW1ld29ya3MiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI4MTA3NzAwNzVhMjliZjQ0Yjk2NjA3NDQwZTdjODAxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZThkNWRiZTM2ZTUzZDVhMzVjZmYyMjdlNzk1ZThiYmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTlmZWEzMzZkMGVlZDM4YzFmMGJmMzE4MWVlMTIyMmQwZWY0NWYzYTlkZDM0ZWJlNjVlNmJmZmZkZDZhNjVhOSIKKworUFlQSV9QQUNLQUdFID0gInNwZWFrbGF0ZXIiCiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXNwZWFrbGF0ZXIuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNwZWVkdGVzdC1jbGlfMi4xLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNwZWVkdGVzdC1jbGlfMi4xLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTkwMWJiYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3BlZWR0ZXN0LWNsaV8yLjEuMi5iYgpAQCAtMCwwICsxLDExIEBACitTVU1NQVJZID0gIkNvbW1hbmQgbGluZSBpbnRlcmZhY2UgZm9yIHRlc3RpbmcgaW50ZXJuZXQgYmFuZHdpZHRoIHVzaW5nIHNwZWVkdGVzdC5uZXQiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2l2ZWwvc3BlZWR0ZXN0LWNsaSIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTQzZDM4Zjg5MzllMTcxNjY0MWNjN2MwMDE2OWNhMDMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2YxZDM4NjIyMmY5NGMzMjRlMzEyNWJhOWEwZDE4N2U0NmQ0YTEzZGNhMDhjMDIzYmRiOWEyMzA5NmJlMmU1NCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1taXNjIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcGlkZXZfMy4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcGlkZXZfMy4yLmJiCmluZGV4IDYxMDYxMWUuLjY1Njc5NTkgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3BpZGV2XzMuMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNwaWRldl8zLjIuYmIKQEAgLTEsMiArMSwxNiBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tc3BpZGV2LmluYworU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIExpbnV4IFNQSSBhY2Nlc3MgdGhyb3VnaCBzcGlkZXYiCitERVNDUklQVElPTiA9ICJUaGlzIHByb2plY3QgY29udGFpbnMgYSBweXRob24gbW9kdWxlIGZvciBpbnRlcmZhY2luZyB3aXRoIFNQSVwKK2RldmljZXMgZnJvbSB1c2VyIHNwYWNlIHZpYSB0aGUgc3BpZGV2IGxpbnV4IGtlcm5lbCBkcml2ZXIuXAorVGhpcyBpcyBhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIGNvZGUgb3JpZ2luYWxseSBmb3VuZFwKK1toZXJlXShodHRwOi8vZWxrLmluZm9ybWF0aWsuZmgtYXVnc2J1cmcuZGUvZGEvZGEtNDkvdHJlZXMvcHlhcDdrL2xhbmcvcHktc3BpKVwKK0FsbCBjb2RlIGlzIEdQTHYyIGxpY2Vuc2VkIHVubGVzcyBleHBsaWNpdGx5IHN0YXRlZCBvdGhlcndpc2UuIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vZG9jZW1lL3B5LXNwaWRldiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PTU0YmRiOTAyMmViYjc1YWI2ODM5OWNkYWFiOTdkYTYwIgorU1JDTkFNRSA9ICJzcGlkZXYiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmNjAxNjc2ZjFiYjQ4YjlhYTNiMzg5N2Y5NTIxNjM2NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwOWQyYjUxMjJmMGRkNzk5MTA3MTNhMTFmOWEwMDIwZjcxNTM3MjI0YmY4Mjk5MTZkZWY0ZmZmYzBlYTU5NDU2IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3BpZGV2XzMuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3BpZGV2XzMuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzRkNjU4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcGlkZXZfMy40LmJiCkBAIC0wLDAgKzEsMTYgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciBMaW51eCBTUEkgYWNjZXNzIHRocm91Z2ggc3BpZGV2IgorREVTQ1JJUFRJT04gPSAiVGhpcyBwcm9qZWN0IGNvbnRhaW5zIGEgcHl0aG9uIG1vZHVsZSBmb3IgaW50ZXJmYWNpbmcgd2l0aCBTUElcCitkZXZpY2VzIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIHNwaWRldiBsaW51eCBrZXJuZWwgZHJpdmVyLlwKK1RoaXMgaXMgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBjb2RlIG9yaWdpbmFsbHkgZm91bmRcCitbaGVyZV0oaHR0cDovL2Vsay5pbmZvcm1hdGlrLmZoLWF1Z3NidXJnLmRlL2RhL2RhLTQ5L3RyZWVzL3B5YXA3ay9sYW5nL3B5LXNwaSlcCitBbGwgY29kZSBpcyBHUEx2MiBsaWNlbnNlZCB1bmxlc3MgZXhwbGljaXRseSBzdGF0ZWQgb3RoZXJ3aXNlLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2RvY2VtZS9weS1zcGlkZXYiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKK1NSQ05BTUUgPSAic3BpZGV2IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmJhYjYzNTI0NDlmMWQ1NzJjYzllZWZlYWZjNThiZDEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDMxNGU1MmY1NzNkOTUyMzNjOTA3ZjMwNzU1ODg5MzMxM2E4YTYwNmUxOTdlNzdiYjcxMTUyNmIwZTE3OWU4MCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNxbGFsY2hlbXlfMS4zLjEyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcWxhbGNoZW15XzEuMy4xMi5iYgppbmRleCA4NmNmOWVkLi5lMjliNTcyIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNxbGFsY2hlbXlfMS4zLjEyLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3FsYWxjaGVteV8xLjMuMTIuYmIKQEAgLTEsMiArMSwyMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tc3FsYWxjaGVteS5pbmMKK0RFU0NSSVBUSU9OID0gIlB5dGhvbiBTUUwgdG9vbGtpdCBhbmQgT2JqZWN0IFJlbGF0aW9uYWwgTWFwcGVyIHRoYXQgZ2l2ZXMgXAorYXBwbGljYXRpb24gZGV2ZWxvcGVycyB0aGUgZnVsbCBwb3dlciBhbmQgZmxleGliaWxpdHkgb2YgU1FMIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zcWxhbGNoZW15Lm9yZy8iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJmNWViMDMwYzQ4OTc1ZDUyOTRiYWYwZjVkMDFhZjFjIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDJhNDZiZTg0MTkwM2I2MGM1MmE4MzM0MmQzY2VkOGUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmZiOGY0NjRhNTAwMGI1NjdhYzFkMzUwYjkwOTBjZjA4MTE4MGVjMWFiNGFhODdlN2JjYTEyZGFiMjUzMjBlYyIKKworUFlQSV9QQUNLQUdFID0gIlNRTEFsY2hlbXkiCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWpzb24gXAorICAgICR7UFlUSE9OX1BOfS1waWNrbGUgXAorICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKKyAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNxbHBhcnNlLzAwMDEtc3FscGFyc2UtY2hhbmdlLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3FscGFyc2UvMDAwMS1zcWxwYXJzZS1jaGFuZ2Utc2hlYmFuZy10by1weXRob24zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkNmM1MGYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNxbHBhcnNlLzAwMDEtc3FscGFyc2UtY2hhbmdlLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaApAQCAtMCwwICsxLDUxIEBACitGcm9tIDEwYzlkMzM0MWQ2NGQ2OTdmNjc4YTY0YWU3MDdmNmJkYTIxNTY1YmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCA5IE1hciAyMDIwIDEzOjEwOjM3ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHNxbHBhcnNlOiBjaGFuZ2Ugc2hlYmFuZyB0byBweXRob24zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitEb24ndCBzZW5kIHVwc3RyZWFtIHNpbmNlIHVwc3RyZWFtIHN0aWxsIHN1cHBvcnQgcHl0aG9uMiwKK3dlIGNhbiBvbmx5IG1ha2UgdGhpcyBjaGFuZ2UgYWZ0ZXIgcHl0aG9uMiBpcyBvZmZjaWFsbHkKK2Ryb3BwZWQuCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBzZXR1cC5weSAgICAgICAgICAgICB8IDIgKy0KKyBzcWxwYXJzZS9fX21haW5fXy5weSB8IDIgKy0KKyBzcWxwYXJzZS9jbGkucHkgICAgICB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKK2luZGV4IDM0NWQwY2UuLmNlM2FiYzMgMTAwNjQ0CistLS0gYS9zZXR1cC5weQorKysrIGIvc2V0dXAucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorICMKKyAjIENvcHlyaWdodCAoQykgMjAwOS0yMDE4IHRoZSBzcWxwYXJzZSBhdXRob3JzIGFuZCBjb250cmlidXRvcnMKK2RpZmYgLS1naXQgYS9zcWxwYXJzZS9fX21haW5fXy5weSBiL3NxbHBhcnNlL19fbWFpbl9fLnB5CitpbmRleCA4NjdkNzVkLi5kZDBjMDc0IDEwMDY0NAorLS0tIGEvc3FscGFyc2UvX19tYWluX18ucHkKKysrKyBiL3NxbHBhcnNlL19fbWFpbl9fLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyAjCisgIyBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCB0aGUgc3FscGFyc2UgYXV0aG9ycyBhbmQgY29udHJpYnV0b3JzCitkaWZmIC0tZ2l0IGEvc3FscGFyc2UvY2xpLnB5IGIvc3FscGFyc2UvY2xpLnB5CitpbmRleCAyNTU1NWE1Li44YmYwNTBhIDEwMDc1NQorLS0tIGEvc3FscGFyc2UvY2xpLnB5CisrKysgYi9zcWxwYXJzZS9jbGkucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorICMKKyAjIENvcHlyaWdodCAoQykgMjAwOS0yMDE4IHRoZSBzcWxwYXJzZSBhdXRob3JzIGFuZCBjb250cmlidXRvcnMKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcWxwYXJzZS9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNxbHBhcnNlL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzg1ZDY4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcWxwYXJzZS9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworcHl0ZXN0IC1vIGxvZ19jbGk9dHJ1ZSAtbyBsb2dfY2xpX2xldmVsPUlORk8gfCBzZWQgLWUgJ3MvXFsuLi4lXF0vL2cnfCBzZWQgLWUgJ3MvUEFTU0VEL1BBU1MvZyd8IHNlZCAtZSAncy9GQUlMRUQvRkFJTC9nJ3xzZWQgLWUgJ3MvU0tJUEVEL1NLSVAvZyd8IGF3ayAne2lmICgkTkY9PSJQQVNTIiB8fCAkTkY9PSJGQUlMIiB8fCAkTkY9PSJTS0lQIiB8fCAkTkY9PSJYRkFJTCIgfHwgJE5GPT0iWFBBU1MiKXtwcmludGYgIiVzOiAlc1xuIiwgJE5GLCAkMH1lbHNle3ByaW50fX0nfCBhd2sgJ3tpZiAoJE5GPT0iUEFTUyIgfHwgJE5GPT0iRkFJTCIgfHwgJE5GPT0iU0tJUCIgfHwgJE5GPT0iWEZBSUwiIHx8ICRORj09IlhQQVNTIikgeyRORj0iIjtwcmludCAkMH1lbHNle3ByaW50fX0nCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNxbHBhcnNlXzAuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcWxwYXJzZV8wLjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY0NmFjNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNxbHBhcnNlXzAuMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1zcWxwYXJzZS5pbmMKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3FscGFyc2VfMC4zLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNxbHBhcnNlXzAuMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhZWYyOGIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNxbHBhcnNlXzAuMy4xLmJiCkBAIC0wLDAgKzEsMjkgQEAKK0RFU0NSSVBUSU9OID0gIk5vbi12YWxpZGF0aW5nIFNRTCBwYXJzZXIgbW9kdWxlIgorSE9NRVBBR0UgPSAiaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NxbHBhcnNlIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJiMTM2ZjU3M2Y1Mzg2MDAxZWEzYjdiOTAxNjIyMmZjIgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1zcWxwYXJzZS1jaGFuZ2Utc2hlYmFuZy10by1weXRob24zLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorCSAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MjMwNDc4ODdhMzU5MGIwNGRkMThmOGNhZjg0M2EyZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMTYyMjAzNzM3NzEyMzA3ZGZlNzg4NjBjYzU2YzhkYThhODUyYWIyZWUzMzc1MGUzM2FlYWRmMzhkMTJjNTQ4IgorCitleHBvcnQgQlVJTERfU1lTCitleHBvcnQgSE9TVF9TWVMKKworaW5oZXJpdCBweXBpIHB0ZXN0IHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1weXRlc3QgXAorICAgICR7UFlUSE9OX1BOfS11bml4YWRtaW4gXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBjcCAtcmYgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXN0ZXZlZG9yZV8xLjMxLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXN0ZXZlZG9yZV8xLjMxLjAuYmIKaW5kZXggM2Y1NTdmMi4uYjk4NWNhNSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zdGV2ZWRvcmVfMS4zMS4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3RldmVkb3JlXzEuMzEuMC5iYgpAQCAtMSwyICsxLDE1IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1zdGV2ZWRvcmUuaW5jCitERVNDUklQVElPTiA9ICJNYW5hZ2UgZHluYW1pYyBwbHVnaW5zIGZvciBQeXRob24gYXBwbGljYXRpb25zIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2RyZWFtaG9zdC9zdGV2ZWRvcmUiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKKworU1JDX1VSSVttZDVzdW1dID0gIjQyZmEyYmYwMjUxYzk2YjU0Mzc2NWM1Y2UxM2YzN2M5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImUwNzM5Zjk3MzlhNjgxYzdhMWZkYTc2YTEwMmI2NTI5NWU5NmExNDRjY2RiNTUyZjJhZTAzYzVmMGFiZThhMTQiCisKK0RFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1wYnItbmF0aXZlIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1wYnIgJHtQWVRIT05fUE59LXNpeCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXN0cmljdC1yZmMzMzM5XzAuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3RyaWN0LXJmYzMzMzlfMC43LmJiCmluZGV4IDllMzcwNTIuLjUyYWU5ZWIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3RyaWN0LXJmYzMzMzlfMC43LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3RyaWN0LXJmYzMzMzlfMC43LmJiCkBAIC0xLDIgKzEsMTAgQEAKK1NVTU1BUlkgPSAiU3RyaWN0LCBzaW1wbGUsIGxpZ2h0d2VpZ2h0IFJGQzMzMzkgZnVuY3Rpb24ucyIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04ZjBlMmNkNDBlMDUxODllYzgxMjMyZGE4NGJkNmUxYSIKKworU1JDX1VSSVttZDVzdW1dID0gIjRkOWI2MzViNGRmODg1YmMzN2JjMTE4OWQ2NmM5YWJjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVjYWQxN2JlZGZjM2FmNTdiMzk5ZGIwZmVkMzI3NzFmMThmYzU0YmJkOTE3ZTg1NTQ2MDg4NjA3YWM1ZTEyNzciCisKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tc3RyaWN0LXJmYzMzMzkuaW5jCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3VwZXJ2aXNvcl80LjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3VwZXJ2aXNvcl80LjEuMC5iYgppbmRleCBkMjllMWQ2Li41NmFiMjdlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXN1cGVydmlzb3JfNC4xLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zdXBlcnZpc29yXzQuMS4wLmJiCkBAIC0xLDIgKzEsMzAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXN1cGVydmlzb3IuaW5jCitTVU1NQVJZID0gIlN1cGVydmlzb3I6IEEgUHJvY2VzcyBDb250cm9sIFN5c3RlbSIKK0RFU0NSSVBUSU9OID0gIlwKK1N1cGVydmlzb3IgaXMgYSBjbGllbnQvc2VydmVyIHN5c3RlbSB0aGF0IGFsbG93cyBpdHMgdXNlcnMgXAordG8gbW9uaXRvcmFuZCBjb250cm9sIGEgbnVtYmVyIG9mIHByb2Nlc3NlcyBvbiBVTklYLWxpa2UgXAorb3BlcmF0aW5nIHN5c3RlbXMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL1N1cGVydmlzb3Ivc3VwZXJ2aXNvciIKK0xJQ0VOU0UgPSAiQlNELTQtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRVMudHh0O21kNT01YjRlM2EyMTcyYmJhNGM0N2NkZWQ1ODg1ZTdlNTA3ZSIKKworU1JDX1VSSVttZDVzdW1dID0gImVjZWE5NGVlZGM3MGJhNTEyN2ZkZWIwNjY1YmNjYTBkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJkYzg2ZmUwNDc2ZTk0NWU2MTQ4M2Q2MTRjZWIyY2Y0ZjkzYjk1MjgyZWIyNDNiZGY3OTI2MjE5OTQzNjAzODMiCisKK1BZUElfUEFDS0FHRSA9ICJzdXBlcnZpc29yIgoraW5oZXJpdCBweXBpIHN5c3RlbWQgc2V0dXB0b29sczMKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgICAke1BZVEhPTl9QTn0tbWVsZDMgXAorIgorCitTUkNfVVJJICs9ICJmaWxlOi8vc3VwZXJ2aXNvcmQuY29uZiBcCisJICAgIGZpbGU6Ly9zdXBlcnZpc29yLnNlcnZpY2UgXAorCSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJzdXBlcnZpc29yLnNlcnZpY2UiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3VwZXJ2aXNvcgorCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3N1cGVydmlzb3JkLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3VwZXJ2aXNvcgorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3N1cGVydmlzb3Iuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zeW1weV8xLjUuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3ltcHlfMS41LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBjMzgyYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3ltcHlfMS41LjEuYmIKQEAgLTAsMCArMSwxNiBAQAorIyBUaGlzIHJlY2lwZSBpcyBhZGFwdGVkIGZyb20gb25lIGluIG1ldGEtanVweXRlcjoKKyMgaHR0cHM6Ly9naXRodWIuY29tL1hpbGlueC9tZXRhLWp1cHl0ZXIvYmxvYi9tYXN0ZXIvcmVjaXBlcy1weXRob24vcHl0aG9uMy1zeW1weV8xLjEuYmIKKworU1VNTUFSWSA9ICJDb21wdXRlciBhbGdlYnJhIHN5c3RlbSAoQ0FTKSBpbiBQeXRob24iCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkub3JnL3Byb2plY3Qvc3ltcHkvIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02MTFiNDE1MzRkYmY1YWEwMWQ3YzgyN2JmNjY3ZWY2NiIKKworU1JDX1VSSVttZDVzdW1dID0gImIxMWIzMTBjM2UxNjQyYmY2NmU1MTAzOGNiM2MwMDIxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ3NzkwMWQ3NDgyODdkMTUyODFmNWZmZTViMGZlZjYyZGQzOGYzNTdjMmI4MjdjNDRmZjA3ZjM1Njk1ZjRlN2UiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1tcG1hdGgiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdGVybV8yLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRlcm1fMi4zLmJiCmluZGV4IDM3MmNmZmUuLjcyM2YxZGIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdGVybV8yLjMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10ZXJtXzIuMy5iYgpAQCAtMSwyICsxLDExIEBACi1yZXF1aXJlIHB5dGhvbi10ZXJtLmluYworU1VNTUFSWSA9ICJBbiBlbmhhbmNlZCB2ZXJzaW9uIG9mIHRoZSB0dHkgbW9kdWxlIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIlB5dGhvbi0yIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDkwZTJkMjgwYTQ4MzZjNjA3NTIwMzgzZDE2MzliZTEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhYjBjMWJjZTM4MWIxMTA5ZmU0MzkwYzU2YWEwNjIzNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZGNjOGMyMTJlMDQ3MDA3ODRlNWMxYzViNjAxOTE2YmEwNTQ5YWU2MDI1YjM1YjY0ZmQ2MjE0NDg5OWU3MTgwIgorCitQWVBJX1BBQ0tBR0VfRVhUID0gInppcCIKKwogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRpbnlyZWNvcmRfMC4xLjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRpbnlyZWNvcmRfMC4xLjUuYmIKaW5kZXggM2YxYjMxZi4uNjVkZjJlMSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10aW55cmVjb3JkXzAuMS41LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdGlueXJlY29yZF8wLjEuNS5iYgpAQCAtMSwyICsxLDE1IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi10aW55cmVjb3JkLmluYworU1VNTUFSWSA9ICJ0cmFuc2FjdGlvbiBzdXBwb3J0IGZvciBUaW55REIiCitERVNDUklQVElPTiA9ICJcCitUaW55cmVjb3JkIGlzIGEgbGlicmFyeSB3aGljaCBpbXBsZW1lbnRzIGF0b21pYyB0cmFuc2FjdGlvbiBcCitzdXBwb3J0IGZvciB0aGUgVGlueURCIE5vU1FMIGRhdGFiYXNlLiBJdCB1c2VzIGEgcmVjb3JkLWZpcnN0IFwKK3RoZW4gZXhlY3V0ZSBhcmNoaXRlY3R1cmUgd2hpY2ggYWxsb3dzIHVzIHRvIG1pbmltaXplIHRoZSB0aW1lIFwKK3RoYXQgd2UgYXJlIHdpdGhpbiBhIHRocmVhZCBsb2NrLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ldWdlbmUtZWVvL3RpbnlyZWNvcmQiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9MzFjMWRjMTFiNGFlODM1NDY1MzhkZTRjMTZiY2VhYmMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlNDdkY2ZlMjk5Njg2Y2QzZmE3ZmZhYTdjYjJlZThiMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiYzdlNmE4ZTc4NjAwZGYyMzRkN2E4NWMyZjVkNTg0MTMwZjJjNmZmZDdjZDMxMGY5ZDNhMWQ5NzZkMzM3M2M4IgorCitQWVBJX1BBQ0tBR0UgPSAidGlueXJlY29yZCIKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10b21sXzAuMTAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdG9tbF8wLjEwLjAuYmIKaW5kZXggY2ViYjQxYS4uNWE3YjA0YyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10b21sXzAuMTAuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRvbWxfMC4xMC4wLmJiCkBAIC0xLDUgKzEsMTMgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXRvbWwuaW5jCitTVU1NQVJZID0gIlB5dGhvbiBMaWJyYXJ5IGZvciBUb20ncyBPYnZpb3VzLCBNaW5pbWFsIExhbmd1YWdlIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3VpcmkvdG9tbCIKK0xJQ0VOU0UgPSAiTUlUIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02ZDYwMTJlZWE0NzcxMTdhYmY1MWMzMTI2MmExNTJmOCIKKworU1JDX1VSSVttZDVzdW1dID0gIjYzZmZmYmUyZDYzMjg2NWVjMjljZDY5YmZkZjM2NjgyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIyOWY4MWM1Nzc5MWE0MWQ2NWUzOTlmYzA2YmYwODQ4YmFiNTUwYTlkZmQ1ZWQ2NmRmMThjZTVmMDVlNzNkNWMiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwogCiBSREVQRU5EU18ke1BOfSArPSAiIFwKICAgICAke1BZVEhPTl9QTn0tbWlzYyBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRxZG1fNC40MS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10cWRtXzQuNDEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ4MzM3Zi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRxZG1fNC40MS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi10cWRtLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10cWRtXzQuNDMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHFkbV80LjQzLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQyMjQ2YwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHFkbV80LjQzLjAuYmIKQEAgLTAsMCArMSwxMyBAQAorU1VNTUFSWSA9ICJGYXN0LCBFeHRlbnNpYmxlIFByb2dyZXNzIE1ldGVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3RxZG0uZ2l0aHViLmlvLyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorCitMSUNFTlNFID0gIk1JVCAmIE1QTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT03ZWE1NzU4NGUzZjhiYmRlMmFlM2UxNTM3NTUxZGUyNSIKKworU1JDX1VSSVttZDVzdW1dID0gIjgxNDU0YzI2NTcyZTRlNDc5MTE1OTZlYTA2NWViMWI3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImYzNWZiMTIxYmFmYTAzMGJkOTRlNzRmY2ZkNDRmM2MyODMwMDM5YTJkZGVmN2ZjODdlZjFjMmQyMDUyMzdiMjQiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR3aW5lXzEuMTMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHdpbmVfMS4xMy4wLmJiCmluZGV4IDA0NTZlYzkuLmY1Y2M3MGYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHdpbmVfMS4xMy4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHdpbmVfMS4xMy4wLmJiCkBAIC0xLDIgKzEsMTEgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXR3aW5lLmluYworREVTQ1JJUFRJT04gPSAiU2l4IGlzIGEgUHl0aG9uIDIgYW5kIDMgY29tcGF0aWJpbGl0eSBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2JlbmphbWlucC9zaXgiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5yc3Q7bWQ1PTM5NjNiZGNlZTc1NjJiZWRhZTFlZmZhMDllNzU0MmIyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNmZiNGRhMGM3ZDgxZGRmZDQ4ZjYxOWI4Y2FhMTQ5M2MiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDZjMjljOTMzZWNmYzc0ZTliMWQ5ZmExM2FhMWY4N2M1ZDU3NzBlMTE5ZjVhNGNlMDMyMDkyZjBmZjViMTRkYyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10d2l0dGVyXzMuOC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10d2l0dGVyXzMuOC4wLmJiCmluZGV4IGMyZTRkMmUuLjc4ZjY2YTQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHdpdHRlcl8zLjguMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR3aXR0ZXJfMy44LjAuYmIKQEAgLTEsMyArMSwxOSBAQAotcmVxdWlyZSBweXRob24tdHdpdHRlci5pbmMKK1NVTU1BUlkgPSAiVHdpdHRlciBmb3IgUHl0aG9uIgorREVTQ1JJUFRJT04gPSAiUHl0aG9uIG1vZHVsZSB0byBzdXBwb3J0IHR3aXR0ZXIgQVBJIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT04ZjcwMmI0ODlhY2I2ODYzY2VjOGIyNjFhNTU5MzFkOCIKKworU1JDX1VSSVttZDVzdW1dID0gIjhhZWZmMjc4YjdjZWZjZDM4NGM2NTkyOWJjOTIxZTJjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhhYmQ4MjhiYTUxYTg1YTJiNWJiNzM3MzcxNWQ2ZDNiYjMyZDE4YWM2MjRlM2E0ZGIwMmU0ZWY4YWI0ODMxNmIiCisKK1BZUElfUEFDS0FHRSA9ICJ0d2VlcHkiCisKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwogCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1waXAgXAorICAgICR7UFlUSE9OX1BOfS1weXNvY2tzIFwKKyAgICAke1BZVEhPTl9QTn0tcmVxdWVzdHMgXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10d29maXNoXzAuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10d29maXNoXzAuMy4wLmJiCmluZGV4IDdiOGViMmUuLjk0ZmI3MTAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHdvZmlzaF8wLjMuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR3b2Zpc2hfMC4zLjAuYmIKQEAgLTEsNCArMSwxNSBAQAotcmVxdWlyZSBweXRob24tdHdvZmlzaC5pbmMKLWluaGVyaXQgc2V0dXB0b29sczMKK1NVTU1BUlkgPSAiQmluZGluZ3MgZm9yIHRoZSBUd29maXNoIGltcGxlbWVudGF0aW9uIGJ5IE5pZWxzIEZlcmd1c29uIgorREVTQ1JJUFRJT04gPSAiQmluZGluZ3MgZm9yIHRoZSBUd29maXNoIGltcGxlbWVudGF0aW9uIGJ5IE5pZWxzIEZlcmd1c29uXAorIGxpYnR3b2Zpc2gtZGV2LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2tleWJhc2UvcHl0aG9uLXR3b2Zpc2giCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTMzYTYzYWJmNmQ3NTY3YjE2ODlkOGNlNjlmMDBlNDNiIgogCiBTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1GaXgtbWlzc2luZy1yZXR1cm4tc3RhdGVtZW50cy1pbi1tb2R1bGUtc3R1YnMucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkN2QyMmYxNmRjNGZmYTBlM2FlMjIwMDY1NDAzM2FiZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMDlkOGJiNTBkMzNiMjNmZjM0Y2FmYjFmOTIwOWY4NThmNzUyOTM1YzZhNWM5MDFlZmI5MmE0MWFjYjgzMGZhIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10eXBlZ3VhcmRfMi43LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR5cGVndWFyZF8yLjcuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjJiNjA1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10eXBlZ3VhcmRfMi43LjEuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJSdW4tdGltZSB0eXBlIGNoZWNrZXIgZm9yIFB5dGhvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC90eXBlZ3VhcmQvIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mMGU0MjNlZWE1YzkxZTdhYTIxYmRiNzAxODRiM2U1MyIKKworU1JDX1VSSVttZDVzdW1dID0gImVmNzQzMzU5ZGU1OWY4ZmUxN2U3YzVlM2FmNzBlMmM1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJkNTQ1YzcxZTk0MzljMjFiY2Q3YzI4ZjVmNTViMzYwNmU2MTA2ZjcwMzFhYjU4Mzc1NjU2YTFhZWQ0ODNlZjIiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitERVBFTkRTICs9ICJcCisgICAgcHl0aG9uMy1kaXN0dXRpbHMtZXh0cmEtbmF0aXZlIFwKKyAgICBweXRob24zLXNldHVwdG9vbHMtc2NtLW5hdGl2ZSBcCisiCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zLXR5cGluZyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10eXBpbmctZXh0ZW5zaW9uc18zLjcuNC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10eXBpbmctZXh0ZW5zaW9uc18zLjcuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxZTllZGEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR5cGluZy1leHRlbnNpb25zXzMuNy40LjIuYmIKQEAgLTAsMCArMSwxMyBAQAorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi90eXBpbmciCitMSUNFTlNFID0gIlBTRiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTY0ZmMyYjMwYjY3ZDBhODQyM2MyNTBlMDM4NmVkNzJmIgorCisjIFRoZSBuYW1lIG9uIFB5UGkgaXMgc2xpZ2h0bHkgZGlmZmVyZW50LgorUFlQSV9QQUNLQUdFID0gInR5cGluZ19leHRlbnNpb25zIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjI2NzQyODI5NjZkYzA4OGQxMDE3MGMyMzQ3NDMxY2MiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzllZTU4OWEzY2FjYTY0OWE5YmZkMmE4ZGU0NzA5ODM3NDAwZGZhMDBiNmNjODE5NjJhMWU2YTE4MTU5NjlhZSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHpsb2NhbF8yLjAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHpsb2NhbF8yLjAuMC5iYgppbmRleCA4MTM5MzRjLi4zNTczYjI5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR6bG9jYWxfMi4wLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10emxvY2FsXzIuMC4wLmJiCkBAIC0xLDIgKzEsOSBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IHRvIHJldHVybiB0emluZm8gd2l0aCB0aGUgbG9jYWwgdGltZXpvbmUgaW5mb3JtYXRpb24iCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkub3JnL3Byb2plY3QvdHpsb2NhbC8iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT01N2UwYmQ2MTY0M2Q4MWQwNTY4M2NkY2U2NWIxMWQxMCIKKworU1JDX1VSSVttZDVzdW1dID0gImIxNDI2MmNlY2NhMTZlYzkyMjBjYThkZmYyY2E3YzVkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk0OWI5ZGQ1YmE0YmUxNzE5MGE4MGMwMjY4MTY3ZDdlNmM5MmM2MmIzMDAyNmNmOTc2NGNhZjNlMzA4ZTU1OTAiCisKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tdHpsb2NhbC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdWpzb24vcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11anNvbi9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIzOTE0NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdWpzb24vcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGhvbjMgdGVzdHMvdGVzdHMucHkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdWpzb25fMS4zNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdWpzb25fMS4zNS5iYgppbmRleCBhZTRjYzBhLi4zNmFiYjdlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXVqc29uXzEuMzUuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11anNvbl8xLjM1LmJiCkBAIC0xLDIgKzEsMzAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXVqc29uLmluYworU1VNTUFSWSAgPSAiVWx0cmEgZmFzdCBKU09OIGVuY29kZXIgYW5kIGRlY29kZXIgZm9yIFB5dGhvbiIKK0RFU0NSSVBUSU9OID0gIlVsdHJhSlNPTiBpcyBhbiB1bHRyYSBmYXN0IEpTT04gZW5jb2RlciBhbmQgZGVjb2RlciB3cml0dGVuIGluIHB1cmUgQyB3aXRoIGJpbmRpbmdzIGZvciBQeXRob24gMi41KyBhbmQgMy4iCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTg7ZW5kbGluZT04O21kNT04OGRmOGU3OGI5ZWRmZDc0NDk1Mzg2MjE3OWYyZDE0ZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjQyZjc3YjBjY2U2ODZkZmE0ZGEyZTY4NDgwYjFkZDI0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImY2NjA3M2U1NTA2ZTkxZDIwNGFiMGM2MTRhMTQ4ZDVhYTkzOGJkYmYxMDQ3NTFiZTY2ZjhhZDdhMjIyZjVmODYiCisKK2luaGVyaXQgcHlwaSBwdGVzdCBzZXR1cHRvb2xzMworCitTUkNfVVJJICs9ICIgXAorICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCisgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tcHl0eiBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgIGNwIC1yZiAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdW5pZGlmZl8wLjUuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdW5pZGlmZl8wLjUuNS5iYgppbmRleCAwZGRjN2UyLi5kZWQ2NmYwIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXVuaWRpZmZfMC41LjUuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11bmlkaWZmXzAuNS41LmJiCkBAIC0xLDIgKzEsMTQgQEAKLXJlcXVpcmUgcHl0aG9uLXVuaWRpZmYuaW5jCi1pbmhlcml0IHNldHVwdG9vbHMzCitTVU1NQVJZID0gIlVuaWZpZWQgZGlmZiBwYXJzaW5nL21ldGFkYXRhIGV4dHJhY3Rpb24gbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL21hdGlhc2IvcHl0aG9uLXVuaWRpZmYiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTRjNDM0YjA4ZWY0MmZlYTIzNWJiMDE5YjVlNWE5N2IzIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDdmNjY5ZDcyNzM1NDFmZWM0NWU0Y2MwZmJhOGQ4ZTkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWM5YWI1ZmI5NmI2OTg4YjRjZDVkZWY2YjI3NTQ5MjQ0MmMwNGE1NzA5MDBkMzNhYTYzNzMxMDU3ODAwMjViYyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1jb2RlY3MgXAorICAgICR7UFlUSE9OX1BOfS1pbyBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXVyaXRlbXBsYXRlXzMuMC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11cml0ZW1wbGF0ZV8zLjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTJlOTU0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11cml0ZW1wbGF0ZV8zLjAuMS5iYgpAQCAtMCwwICsxLDE0IEBACisjIFRoaXMgcmVjaXBlIGlzIG9yaWdpbmFsbHkgZnJvbSBtZXRhLW9wZW5zdGFjazoKKyMgaHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL21ldGEtY2xvdWQtc2VydmljZXMvdHJlZS9tZXRhLW9wZW5zdGFjay9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXVyaXRlbXBsYXRlXzMuMC4wLmJiP2g9bWFzdGVyCisKK1NVTU1BUlkgPSAiU2ltcGxlIHB5dGhvbiBsaWJyYXJ5IHRvIGRlYWwgd2l0aCBVUkkgVGVtcGxhdGVzLiIKK0FVVEhPUiA9ICJJYW4gQ29yZGFzY28iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAgfCBCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wZjZkNzY5YmRjZmFjYWMzYzFhMWZmYTU2ODkzN2ZlMCIKKworU1JDX1VSSVttZDVzdW1dID0gIjg2OWZiNDRmYmQ1NjcxMzQ5MGRiNzI3MmViMzZjOGFlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVhZjhhZDEwY2VjOTRmMjE1ZTNmNDgxMTJkZTIwMjJlMWQ1YTM3ZWQ0MjdmYmQ4ODY1MmZhOTA4ZjJhYjdjYWUiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXVybGxpYjNfMS4yNS43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11cmxsaWIzXzEuMjUuNy5iYgppbmRleCAxOWViNzAyLi4zNGMxNWI2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXVybGxpYjNfMS4yNS43LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdXJsbGliM18xLjI1LjcuYmIKQEAgLTEsMiArMSwyMyBAQAorU1VNTUFSWSA9ICJQeXRob24gSFRUUCBsaWJyYXJ5IHdpdGggdGhyZWFkLXNhZmUgY29ubmVjdGlvbiBwb29saW5nLCBmaWxlIHBvc3Qgc3VwcG9ydCwgc2FuaXR5IGZyaWVuZGx5LCBhbmQgbW9yZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zaGF6b3cvdXJsbGliMyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTY1NzE1YzJlYjk2MTMxM2Q3MWIyOTdkZDVhMDRmODVlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiODVlMWUzOTI1ZjhjMTA5NTE3MmJmZjM0M2YzMzEyZWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjNjNWZkNTE3NDdkNDUwZDRkY2Y2ZjkyM2M4MWY3OGY4MTFhYWI4MjA1ZmRhNjRiMGFiYTM0YTRlNDhiMDc0NSIKKwogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi11cmxsaWIzLmluYworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1jZXJ0aWZpIFwKKyAgICAke1BZVEhPTl9QTn0tY3J5cHRvZ3JhcGh5IFwKKyAgICAke1BZVEhPTl9QTn0tZW1haWwgXAorICAgICR7UFlUSE9OX1BOfS1pZG5hIFwKKyAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKKyAgICAke1BZVEhPTl9QTn0tcHlvcGVuc3NsIFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyIKKworQ1ZFX1BST0RVQ1QgPSAidXJsbGliMyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy12ZXJzaW9udG9vbHNfMS45LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXZlcnNpb250b29sc18xLjkuMS5iYgppbmRleCBlOGQ2YjdkLi5jZjBmYTMwIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXZlcnNpb250b29sc18xLjkuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXZlcnNpb250b29sc18xLjkuMS5iYgpAQCAtMSwyICsxLDEwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi12ZXJzaW9udG9vbHMuaW5jCitTVU1NQVJZID0gIlNtYXJ0IHJlcGxhY2VtZW50IGZvciBwbGFpbiB0dXBsZSB1c2VkIGluIF9fdmVyc2lvbl9fIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitIT01FUEFHRSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvdmVyc2lvbnRvb2xzIgorTElDRU5TRSA9ICJMR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zZXR1cC5weTtiZWdpbmxpbmU9MztlbmRsaW5lPTIwO21kNT0wMjE5MzcyMWEzOGZkOGEwNWE0ZGRlYjdkZjhlMjk0ZCIKKworU1JDX1VSSVttZDVzdW1dID0gIjYwMmI3ZGI4ZWVhMzBkZDI5YTFkNDUxOTk3YWRmMjUxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE5NjkzMzI4ODdhMThhOWM5OGIwZGYwZWE0ZDRjYTc1OTcyZjI0Y2E5NGYwNmZiODdkNTkxMzc3ZTgzNDE0ZjYiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy12aXNpdG9yXzAuMS4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy12aXNpdG9yXzAuMS4zLmJiCmluZGV4IGI5YmM1MWQuLmFjM2E5MGUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdmlzaXRvcl8wLjEuMy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXZpc2l0b3JfMC4xLjMuYmIKQEAgLTEsMiArMSw4IEBACitTVU1NQVJZID0gIkEgdGlueSBweXRob25pYyB2aXNpdG9yIGltcGxlbWVudGF0aW9uLiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTg7ZW5kbGluZT04O21kNT04MjI3MTgwMTI2Nzk3YTAxNDhmOTRmNDgzZjNlMTQ4OSIKKworU1JDX1VSSVttZDVzdW1dID0gIjk0YTAyNGVkMGVjMWIwMmI0NDk3YzE1MjY3ZDMxOWNhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJjNzM3OTAzYjJiNjg2NGViYzYxNjdlZWY3Y2YzYjk5NzEyNmYxYWE5NGJkZjU5MGY5MGYxNDM2ZDIzZTQ4MGEiCisKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tdmlzaXRvci5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2FpdHJlc3NfMS40LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdhaXRyZXNzXzEuNC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2M4YjY2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2FpdHJlc3NfMS40LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMgcHlwaQotcmVxdWlyZSBweXRob24td2FpdHJlc3MuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdhaXRyZXNzXzEuNC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13YWl0cmVzc18xLjQuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWMzZTkyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13YWl0cmVzc18xLjQuMy5iYgpAQCAtMCwwICsxLDEyIEBACitTVU1NQVJZID0gIkEgV1NHSSBzZXJ2ZXIgZm9yIFB5dGhvbiIKK0RFU0NSSVBUSU9OID0gIldhaXRyZXNzIGlzIG1lYW50IHRvIGJlIGEgcHJvZHVjdGlvbi1xdWFsaXR5IHB1cmUtUHl0aG9uIFdTR0kgXAorICAgIHNlcnZlciB3aXRoIHZlcnkgYWNjZXB0YWJsZSBwZXJmb3JtYW5jZS4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vUHlsb25zL3dhaXRyZXNzIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIlpQTC0yLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NzhjY2IzNjQwZGM4NDFlMWJhZWNiM2UyN2E2OTY2YjIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0YmZmYWQ3MDA5ZDM4MjRhZTYxZWE2YzA2OTZlNDVmNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwNDViM2VmYzNkOTdjOTMzNjIxNzNhYjFkZmMxNTliNTJjZmEyMmI0NmMzMzM0ZmZjODA1ZGJkYmYwZTQzMDllIgorCitpbmhlcml0IHNldHVwdG9vbHMzIHB5cGkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2N3aWR0aF8wLjEuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2N3aWR0aF8wLjEuOC5iYgppbmRleCA1ZjYyNTliLi5mOWY2NDc0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdjd2lkdGhfMC4xLjguYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13Y3dpZHRoXzAuMS44LmJiCkBAIC0xLDIgKzEsMTAgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgYnVpbGRpbmcgcG93ZXJmdWwgaW50ZXJhY3RpdmUgY29tbWFuZCBsaW5lcyBpbiBQeXRob24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0xMWZiYTQ3Mjg2MjU4NzQ0YTZiYzZlNDM1MzBjMzJhMSIKKworU1JDX1VSSVttZDVzdW1dID0gImRjNjY3N2QwOTllNmY0OWMwZjZmYmMzMTBkZTI2MWU5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImYyOGIzZThhNjQ4M2U1ZDQ5ZTdmODk0OWFjMWE3ODMxNGU3NDAzMzNhZTMwNWI0YmE1ZGVmZDNlNzRmYjM3YTgiCisKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24td2N3aWR0aC5pbmMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZWJjb2xvcnMvcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZWJjb2xvcnMvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzODVkNjgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlYmNvbG9ycy9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworcHl0ZXN0IC1vIGxvZ19jbGk9dHJ1ZSAtbyBsb2dfY2xpX2xldmVsPUlORk8gfCBzZWQgLWUgJ3MvXFsuLi4lXF0vL2cnfCBzZWQgLWUgJ3MvUEFTU0VEL1BBU1MvZyd8IHNlZCAtZSAncy9GQUlMRUQvRkFJTC9nJ3xzZWQgLWUgJ3MvU0tJUEVEL1NLSVAvZyd8IGF3ayAne2lmICgkTkY9PSJQQVNTIiB8fCAkTkY9PSJGQUlMIiB8fCAkTkY9PSJTS0lQIiB8fCAkTkY9PSJYRkFJTCIgfHwgJE5GPT0iWFBBU1MiKXtwcmludGYgIiVzOiAlc1xuIiwgJE5GLCAkMH1lbHNle3ByaW50fX0nfCBhd2sgJ3tpZiAoJE5GPT0iUEFTUyIgfHwgJE5GPT0iRkFJTCIgfHwgJE5GPT0iU0tJUCIgfHwgJE5GPT0iWEZBSUwiIHx8ICRORj09IlhQQVNTIikgeyRORj0iIjtwcmludCAkMH1lbHNle3ByaW50fX0nCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlYmNvbG9yc18xLjguMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2ViY29sb3JzXzEuOC4xLmJiCmluZGV4IGZjZDlmNzAuLjY1ZWVkOWUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2ViY29sb3JzXzEuOC4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2ViY29sb3JzXzEuOC4xLmJiCkBAIC0xLDIgKzEsMjcgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24td2ViY29sb3JzLmluYworU1VNTUFSWSA9ICJTaW1wbGUgUHl0aG9uIG1vZHVsZSBmb3Igd29ya2luZyB3aXRoIEhUTUwvQ1NTIGNvbG9yIGRlZmluaXRpb25zLiIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTk3YWRkMDE2MDg3ZTY4ODRhMDEyYjBmMTg1ZDQ0YWQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MDg5MGRiMzhiMmE4NTZlNTI2YTU2ODg2NDAyNWZlNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMzA1NjJmNjI0NDY3YTk5MDFmMGI0NTVmZWYwNTQ4NmE4OGNmYjVkYWExZTM1NmJkNGFhY2VhMDQzODUwYjU5IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMgcHRlc3QKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gIlwKKyAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKKyIKKworU1JDX1VSSSArPSAiIFwKKyAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgIGNwIC1yZiAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2ViZW5jb2RpbmdzXzAuNS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZWJlbmNvZGluZ3NfMC41LjEuYmIKaW5kZXggNzFmZTc0MS4uYWE1YjhjNyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZWJlbmNvZGluZ3NfMC41LjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZWJlbmNvZGluZ3NfMC41LjEuYmIKQEAgLTEsMiArMSwxNSBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24td2ViZW5jb2RpbmdzLmluYworU1VNTUFSWSA9ICJDaGFyYWN0ZXIgZW5jb2RpbmcgYWxpYXNlcyBmb3IgbGVnYWN5IHdlYiBjb250ZW50IgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9ODtlbmRsaW5lPTg7bWQ1PWU5MTBiMzViMGVmNGUxZjY2NWI5YTc1ZDZhZmI3NzA5IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzJmNmUyNjFkNTJlNTdiZjdlMWM0ZDQxNTQ2ZDE1YjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjM2YTFjMjQ1ZjJkMzA0OTY1ZWI0ZTBhODI4NDgzNzkyNDFkYzA0Yjg2NWFmY2M0YWFiMTY3NDg1ODdlMTkyMyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1jb2RlY3MgXAorICAgICR7UFlUSE9OX1BOfS1qc29uIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZWJzb2NrZXQtY2xpZW50XzAuNTYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2Vic29ja2V0LWNsaWVudF8wLjU2LjAuYmIKaW5kZXggOWI2Njk2ZS4uYTNlMWJjZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZWJzb2NrZXQtY2xpZW50XzAuNTYuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlYnNvY2tldC1jbGllbnRfMC41Ni4wLmJiCkBAIC0xLDIgKzEsMTggQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXdlYnNvY2tldC1jbGllbnQuaW5jCitTVU1NQVJZID0gIndlYnNvY2tldCBjbGllbnQgZm9yIHB5dGhvbiIKK0RFU0NSSVBUSU9OID0gIlwKK3dlYnNvY2tldC1jbGllbnQgbW9kdWxlIGlzIFdlYlNvY2tldCBjbGllbnQgZm9yIHB5dGhvbi4gXAorVGhpcyBwcm92aWRlIHRoZSBsb3cgbGV2ZWwgQVBJcyBmb3IgV2ViU29ja2V0LiBBbGwgQVBJcyBcCithcmUgdGhlIHN5bmNocm9ub3VzIGZ1bmN0aW9ucy4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vd2Vic29ja2V0LWNsaWVudC93ZWJzb2NrZXQtY2xpZW50IgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNGM0YTk4ZmJjNDgzNmI4MWM4YzY0ZDZlY2IwMWZjMSIKKworU1JDX1VSSVttZDVzdW1dID0gIjg5NDg0YmQ1ZGFjNzExMjNhZTZhMDliMmY5MGZlNjJjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFmZDU1MjA4NzhiNjhiODRiNTc0OGJiMzBlNTkyYjEwZDBhOTE1MjlkNTM4M2Y3NGY0OTY0ZTcyYjI5N2ZkM2EiCisKK1BZUElfUEFDS0FHRSA9ICJ3ZWJzb2NrZXRfY2xpZW50IgoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2Vya3pldWdfMC4xNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZXJremV1Z18wLjE2LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0NWExZGUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZXJremV1Z18wLjE2LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24td2Vya3pldWcuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tbWlzYyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2Vya3pldWdfMS4wLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlcmt6ZXVnXzEuMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNDM3NGUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlcmt6ZXVnXzEuMC4wLmJiCkBAIC0wLDAgKzEsNTAgQEAKK1NVTU1BUlkgPSAiVGhlIFN3aXNzIEFybXkga25pZmUgb2YgUHl0aG9uIHdlYiBkZXZlbG9wbWVudCIKK0RFU0NSSVBUSU9OID0gIlwKK1dlcmt6ZXVnIHN0YXJ0ZWQgYXMgc2ltcGxlIGNvbGxlY3Rpb24gb2YgdmFyaW91cyB1dGlsaXRpZXMgZm9yIFdTR0kgXAorYXBwbGljYXRpb25zIGFuZCBoYXMgYmVjb21lIG9uZSBvZiB0aGUgbW9zdCBhZHZhbmNlZCBXU0dJIHV0aWxpdHkgbW9kdWxlcy4gXAorSXQgaW5jbHVkZXMgYSBwb3dlcmZ1bCBkZWJ1Z2dlciwgZnVsbCBmZWF0dXJlZCByZXF1ZXN0IGFuZCByZXNwb25zZSBvYmplY3RzLCBcCitIVFRQIHV0aWxpdGllcyB0byBoYW5kbGUgZW50aXR5IHRhZ3MsIGNhY2hlIGNvbnRyb2wgaGVhZGVycywgSFRUUCBkYXRlcywgXAorY29va2llIGhhbmRsaW5nLCBmaWxlIHVwbG9hZHMsIGEgcG93ZXJmdWwgVVJMIHJvdXRpbmcgc3lzdGVtIGFuZCBhIGJ1bmNoIFwKK29mIGNvbW11bml0eSBjb250cmlidXRlZCBhZGRvbiBtb2R1bGVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93ZXJremV1Zy5wb2Nvby5vcmcvIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnJzdDttZDU9NWRjODgzMDA3ODZmMWMyMTRjMWU5ODI3YTUyMjk0NjIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMDVmNzVjNGE4OGM5NmRjZGM1NjU0YmYyZDAxYmMwNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxNjliYThhMzM3ODg0NzYyOTJkMDQxODZhYjMzYjAxZDZhZGQ0NzUwMzNkZmMwNzIxNWU2ZDIxOWNjMDc3MDk2IgorCitQWVBJX1BBQ0tBR0UgPSAiV2Vya3pldWciCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitDTEVBTkJST0tFTiA9ICIxIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMiCitGSUxFU18ke1BOfS10ZXN0cys9ICIgXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3dlcmt6ZXVnL3Rlc3QqIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS93ZXJremV1Zy9fX3B5Y2FjaGVfXy90ZXN0KiBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vd2Vya3pldWcvY29udHJpYi90ZXN0KiBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vd2Vya3pldWcvY29udHJpYi9fX3B5Y2FjaGVfXy90ZXN0KiBcCisiCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCisgICAgJHtQWVRIT05fUE59LWRpZmZsaWIgXAorICAgICR7UFlUSE9OX1BOfS1lbWFpbCBcCisgICAgJHtQWVRIT05fUE59LWh0bWwgXAorICAgICR7UFlUSE9OX1BOfS1pbyBcCisgICAgJHtQWVRIT05fUE59LWpzb24gXAorICAgICR7UFlUSE9OX1BOfS1taXNjIFwKKyAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKKyAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKKyAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCisgICAgJHtQWVRIT05fUE59LXBrZ3V0aWwgXAorICAgICR7UFlUSE9OX1BOfS1wcHJpbnQgXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorICAgICR7UFlUSE9OX1BOfS11bml4YWRtaW4gXAorIgorCitSREVQRU5EU18ke1BOfS10ZXN0cyA9ICIgXAorICAgICR7UE59IFwKKyAgICAke1BZVEhPTl9QTn0tdW5pdHRlc3QgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZXJremV1Z18xLjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2Vya3pldWdfMS4wLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU0Mzk5ZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2Vya3pldWdfMS4wLjEuYmIKQEAgLTAsMCArMSwzOCBAQAorU1VNTUFSWSA9ICJUaGUgU3dpc3MgQXJteSBrbmlmZSBvZiBQeXRob24gd2ViIGRldmVsb3BtZW50IgorREVTQ1JJUFRJT04gPSAiXAorV2Vya3pldWcgc3RhcnRlZCBhcyBzaW1wbGUgY29sbGVjdGlvbiBvZiB2YXJpb3VzIHV0aWxpdGllcyBmb3IgV1NHSSBcCithcHBsaWNhdGlvbnMgYW5kIGhhcyBiZWNvbWUgb25lIG9mIHRoZSBtb3N0IGFkdmFuY2VkIFdTR0kgdXRpbGl0eSBtb2R1bGVzLiBcCitJdCBpbmNsdWRlcyBhIHBvd2VyZnVsIGRlYnVnZ2VyLCBmdWxsIGZlYXR1cmVkIHJlcXVlc3QgYW5kIHJlc3BvbnNlIG9iamVjdHMsIFwKK0hUVFAgdXRpbGl0aWVzIHRvIGhhbmRsZSBlbnRpdHkgdGFncywgY2FjaGUgY29udHJvbCBoZWFkZXJzLCBIVFRQIGRhdGVzLCBcCitjb29raWUgaGFuZGxpbmcsIGZpbGUgdXBsb2FkcywgYSBwb3dlcmZ1bCBVUkwgcm91dGluZyBzeXN0ZW0gYW5kIGEgYnVuY2ggXAorb2YgY29tbXVuaXR5IGNvbnRyaWJ1dGVkIGFkZG9uIG1vZHVsZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3dlcmt6ZXVnLnBvY29vLm9yZy8iCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UucnN0O21kNT01ZGM4ODMwMDc4NmYxYzIxNGMxZTk4MjdhNTIyOTQ2MiIKKworUFlQSV9QQUNLQUdFID0gIldlcmt6ZXVnIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNWQ0OTljZmRkMzBkZTVkOWM5NDY5OTQ3ODM3NzJlZmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmM4MGIxZTVhZDM2NjUyOTBlYTM5MzIwYjkxZTFiZTFlMGQ1ZjYwNjUyYjk2NGEzMDcwMjE2ZGU4M2QyZTQ3YyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK0NMRUFOQlJPS0VOID0gIjEiCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCisgICAgJHtQWVRIT05fUE59LWRpZmZsaWIgXAorICAgICR7UFlUSE9OX1BOfS1lbWFpbCBcCisgICAgJHtQWVRIT05fUE59LWh0bWwgXAorICAgICR7UFlUSE9OX1BOfS1pbyBcCisgICAgJHtQWVRIT05fUE59LWpzb24gXAorICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAorICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKKyAgICAke1BZVEhPTl9QTn0tcGtndXRpbCBcCisgICAgJHtQWVRIT05fUE59LXBwcmludCBcCisgICAgJHtQWVRIT05fUE59LXNpbXBsZWpzb24gXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorICAgICR7UFlUSE9OX1BOfS11bml4YWRtaW4gXAorICAgICR7UFlUSE9OX1BOfS1taXNjIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2hvb3NoL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2hvb3NoL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzg1ZDY4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13aG9vc2gvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGVzdCAtbyBsb2dfY2xpPXRydWUgLW8gbG9nX2NsaV9sZXZlbD1JTkZPIHwgc2VkIC1lICdzL1xbLi4uJVxdLy9nJ3wgc2VkIC1lICdzL1BBU1NFRC9QQVNTL2cnfCBzZWQgLWUgJ3MvRkFJTEVEL0ZBSUwvZyd8c2VkIC1lICdzL1NLSVBFRC9TS0lQL2cnfCBhd2sgJ3tpZiAoJE5GPT0iUEFTUyIgfHwgJE5GPT0iRkFJTCIgfHwgJE5GPT0iU0tJUCIgfHwgJE5GPT0iWEZBSUwiIHx8ICRORj09IlhQQVNTIil7cHJpbnRmICIlczogJXNcbiIsICRORiwgJDB9ZWxzZXtwcmludH19J3wgYXdrICd7aWYgKCRORj09IlBBU1MiIHx8ICRORj09IkZBSUwiIHx8ICRORj09IlNLSVAiIHx8ICRORj09IlhGQUlMIiB8fCAkTkY9PSJYUEFTUyIpIHskTkY9IiI7cHJpbnQgJDB9ZWxzZXtwcmludH19JwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13aG9vc2hfMi43LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdob29zaF8yLjcuNC5iYgppbmRleCA1ZDhhZjMwLi4zYWU0ZjkxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdob29zaF8yLjcuNC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdob29zaF8yLjcuNC5iYgpAQCAtMSwyICsxLDQwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXdob29zaC5pbmMKK1NVTU1BUlkgPSAiRmFzdCwgcHVyZS1QeXRob24gZnVsbCB0ZXh0IGluZGV4aW5nLCBzZWFyY2gsIGFuZCBzcGVsbCBjaGVja2luZyBsaWJyYXJ5LiIKK0RFU0NSSVBUSU9OID0gIlwKK1dob29zaCBpcyBhIGZhc3QsIGZlYXR1cmVmdWwgZnVsbC10ZXh0IGluZGV4aW5nIGFuZCBzZWFyY2hpbmcgbGlicmFyeSBcCitpbXBsZW1lbnRlZCBpbiBwdXJlIFB5dGhvbi4gUHJvZ3JhbW1lcnMgY2FuIHVzZSBpdCB0byBlYXNpbHkgYWRkIHNlYXJjaCBcCitmdW5jdGlvbmFsaXR5IHRvIHRoZWlyIGFwcGxpY2F0aW9ucyBhbmQgd2Vic2l0ZXMuIEV2ZXJ5IHBhcnQgb2YgaG93IFwKK1dob29zaCB3b3JrcyBjYW4gYmUgZXh0ZW5kZWQgb3IgcmVwbGFjZWQgdG8gbWVldCB5b3VyIG5lZWRzIGV4YWN0bHkuIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MDUzMDMxODZkZWZjNjE0MTE0MzYyOTk2MWM3YzhhNjAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4OTM0MzNlOWMwNTI1YWMwNDNkZjMzZTZlMDRjYWFiMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMDg1NzM3NWY2M2U5MDQxZTAzZmVkZDViNzU0MWY5N2NmNzg5MTdhYzFiNmIwNmMxZmNjOWI0NTM3NWRkYTY5IgorCitQWVBJX1BBQ0tBR0UgPSAiV2hvb3NoIgorUFlQSV9QQUNLQUdFX0VYVCA9ICJ6aXAiCisKK2luaGVyaXQgcHRlc3QgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tZW1haWwgXAorICAgICR7UFlUSE9OX1BOfS1tdWx0aXByb2Nlc3NpbmcgXAorICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKKyAgICAke1BZVEhPTl9QTn0tcGlja2xlIFwKKyAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAorICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAorIgorCitTUkNfVVJJICs9ICIgXAorICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyAgICAke1BZVEhPTl9QTn0tZmNudGwgXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBjcCAtcmYgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13cmFwdF8xLjExLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdyYXB0XzEuMTEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVmNDQ2ZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdyYXB0XzEuMTEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24td3JhcHQuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdyYXB0XzEuMTIuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd3JhcHRfMS4xMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5ZmRlMTAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdyYXB0XzEuMTIuMS5iYgpAQCAtMCwwICsxLDE1IEBACitTVU1NQVJZID0gIkEgUHl0aG9uIG1vZHVsZSBmb3IgZGVjb3JhdG9ycywgd3JhcHBlcnMgYW5kIG1vbmtleSBwYXRjaGluZy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3JhcHQucmVhZHRoZWRvY3Mub3JnLyIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mZGZjMDE5YjU3YWZmYmUxZDdhMzJlM2QzNGU4M2RiNCIKKworU1JDX1VSSVttZDVzdW1dID0gIjZkNTZlZDBkZTQzMzY0NjJhNzMzNTAzNDE0NjJmNDVlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI2MmZmYTgxZmI4NWY0MzMyYTRmNjA5Y2FiNGFjNDA3MDk0NzBkYTA1NjQzYTA4MmVjMWViODhlNmQ5Yjk3ZDciCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMyAKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCisgICAgJHtQWVRIT05fUE59LXN0cmluZ29sZCBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXd0Zm9ybXNfMi4yLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXd0Zm9ybXNfMi4yLjEuYmIKaW5kZXggYWRkNTljZi4uMmI3YWY2MiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13dGZvcm1zXzIuMi4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd3Rmb3Jtc18yLjIuMS5iYgpAQCAtMSwyICsxLDE3IEBACitERVNDUklQVElPTiA9ICJBIGZsZXhpYmxlIGZvcm1zIHZhbGlkYXRpb24gYW5kIHJlbmRlcmluZyBsaWJyYXJ5IGZvciBweXRob24gd2ViIGRldmVsb3BtZW50LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvV1RGb3JtcyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9YzQ2NjBjMTMyNzcwZDVkMGE1NzU3NTQxZjZiNzk0OTMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MWMwMDA4ZGJlN2JkOTg4OTJjNThmNzQ1N2E0NmE0YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwY2RiYWMzZTdmNjg3ODA4NmMzMzRhYTI1ZGM1YTMzODY5YTM5NTRlOWQxZTAxNTEzMGQ2NWE2OTMwOWIzYjYxIgorCitQWVBJX1BBQ0tBR0UgPSAiV1RGb3JtcyIKKwogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi13dGZvcm1zLmluYworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAorICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKKyAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhscmQvcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy14bHJkL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzg1ZDY4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy14bHJkL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRlc3QgLW8gbG9nX2NsaT10cnVlIC1vIGxvZ19jbGlfbGV2ZWw9SU5GTyB8IHNlZCAtZSAncy9cWy4uLiVcXS8vZyd8IHNlZCAtZSAncy9QQVNTRUQvUEFTUy9nJ3wgc2VkIC1lICdzL0ZBSUxFRC9GQUlML2cnfHNlZCAtZSAncy9TS0lQRUQvU0tJUC9nJ3wgYXdrICd7aWYgKCRORj09IlBBU1MiIHx8ICRORj09IkZBSUwiIHx8ICRORj09IlNLSVAiIHx8ICRORj09IlhGQUlMIiB8fCAkTkY9PSJYUEFTUyIpe3ByaW50ZiAiJXM6ICVzXG4iLCAkTkYsICQwfWVsc2V7cHJpbnR9fSd8IGF3ayAne2lmICgkTkY9PSJQQVNTIiB8fCAkTkY9PSJGQUlMIiB8fCAkTkY9PSJTS0lQIiB8fCAkTkY9PSJYRkFJTCIgfHwgJE5GPT0iWFBBU1MiKSB7JE5GPSIiO3ByaW50ICQwfWVsc2V7cHJpbnR9fScKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteGxyZF8xLjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteGxyZF8xLjIuMC5iYgppbmRleCBiN2JkOTY5Li41NzFkYmE2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhscmRfMS4yLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy14bHJkXzEuMi4wLmJiCkBAIC0xLDIgKzEsMzEgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24teGxyZC5pbmMKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgZGV2ZWxvcGVycyB0byBleHRyYWN0IGRhdGEgZnJvbSBNaWNyb3NvZnQgRXhjZWwgKHRtKSBzcHJlYWRzaGVldCBmaWxlcyIKK0RFU0NSSVBUSU9OID0gIkV4dHJhY3QgZGF0YSBmcm9tIEV4Y2VsIHNwcmVhZHNoZWV0cyAoLnhscyBhbmQgLnhsc3gsXAorIHZlcnNpb25zIDIuMCBvbndhcmRzKSBvbiBhbnkgcGxhdGZvcm0uIFB1cmUgUHl0aG9uICgyLjYsIDIuNywgMy4yKykuIFwKK1N0cm9uZyBzdXBwb3J0IGZvciBFeGNlbCBkYXRlcy4gVW5pY29kZS1hd2FyZS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnB5dGhvbi1leGNlbC5vcmcvIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9NWY0MjQ0ZDUxZmNjMWU3Y2MyZDQzZTk2ODkxYjJmODAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlNWQ1Yjk2OTI0ZDc5MWIyMjg5OGI2MjJlYjNlOTE4ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1NDZlYjM2Y2VlOGRiNDBjM2VhYTQ2YzM1MWU2N2ZmZWU2ZWViNWZhMjY1MGI3MWJjNGM3NThhMjlhMWIyOWIyIgorCitTUkNfVVJJICs9ICIgXAorICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitpbmhlcml0IHB0ZXN0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1jb21wcmVzc2lvbiAke1BZVEhPTl9QTn0taW8gJHtQWVRIT05fUE59LXBwcmludCAke1BZVEhPTl9QTn0tc2hlbGwiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1weXRlc3QgXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBjcCAtcmYgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vZXhhbXBsZXMKKyAgICBjcCAtcmYgJHtTfS9leGFtcGxlcy8qICR7RH0ke1BURVNUX1BBVEh9L2V4YW1wbGVzLworfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhtbHRvZGljdC9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhtbHRvZGljdC9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM4NWQ2OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteG1sdG9kaWN0L3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRlc3QgLW8gbG9nX2NsaT10cnVlIC1vIGxvZ19jbGlfbGV2ZWw9SU5GTyB8IHNlZCAtZSAncy9cWy4uLiVcXS8vZyd8IHNlZCAtZSAncy9QQVNTRUQvUEFTUy9nJ3wgc2VkIC1lICdzL0ZBSUxFRC9GQUlML2cnfHNlZCAtZSAncy9TS0lQRUQvU0tJUC9nJ3wgYXdrICd7aWYgKCRORj09IlBBU1MiIHx8ICRORj09IkZBSUwiIHx8ICRORj09IlNLSVAiIHx8ICRORj09IlhGQUlMIiB8fCAkTkY9PSJYUEFTUyIpe3ByaW50ZiAiJXM6ICVzXG4iLCAkTkYsICQwfWVsc2V7cHJpbnR9fSd8IGF3ayAne2lmICgkTkY9PSJQQVNTIiB8fCAkTkY9PSJGQUlMIiB8fCAkTkY9PSJTS0lQIiB8fCAkTkY9PSJYRkFJTCIgfHwgJE5GPT0iWFBBU1MiKSB7JE5GPSIiO3ByaW50ICQwfWVsc2V7cHJpbnR9fScKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteG1sdG9kaWN0XzAuMTIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteG1sdG9kaWN0XzAuMTIuMC5iYgppbmRleCAwMGFhODE4Li5kMDc4ODgzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhtbHRvZGljdF8wLjEyLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy14bWx0b2RpY3RfMC4xMi4wLmJiCkBAIC05LDQgKzksMTcgQEAKIAogUFlQSV9QQUNLQUdFID0gInhtbHRvZGljdCIKIAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMgcHRlc3QKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworCWNwIC1yZiAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhzdGF0aWMtZm9udC1hd2Vzb21lXzQuNy4wLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhzdGF0aWMtZm9udC1hd2Vzb21lXzQuNy4wLjAuYmIKaW5kZXggNjM5ZjgwZC4uYjQ1ZTk2ZCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy14c3RhdGljLWZvbnQtYXdlc29tZV80LjcuMC4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteHN0YXRpYy1mb250LWF3ZXNvbWVfNC43LjAuMC5iYgpAQCAtMSwyICsxLDE3IEBACitERVNDUklQVElPTiA9ICJGb250IEF3ZXNvbWUgaWNvbnMgcGFja2FnZWQgZm9yIHNldHVwdG9vbHMgKGVhc3lfaW5zdGFsbCkgLyBwaXAuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9YU3RhdGljLUZvbnQtQXdlc29tZSIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJBcGFjaGUtMiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT0zMTNkMDIxODk4Njk0Y2QyYjBlYTY1MDhiZGZlNTFhMiIKKworUFlQSV9QQUNLQUdFID0gIlhTdGF0aWMtRm9udC1Bd2Vzb21lIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTQxYTBlOWE3ZTIxZTgyZjkyMjU3M2EwMGFlMGMxNjYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTAxZmI0ODBjYWFhN2M3OTYzZGNiMzMyOGE0NzAwZTYzMWJlZjYwNzBkYjBlOGI2ODU4MTZkMjIwZTY4NWY2YyIKKworREVQRU5EUyArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0teHN0YXRpYyBcCisgICAgJHtQWVRIT05fUE59LXBpcCBcCisiCisKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24teHN0YXRpYy1mb250LWF3ZXNvbWUuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhzdGF0aWNfMS4wLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhzdGF0aWNfMS4wLjIuYmIKaW5kZXggNzZjYjcwMi4uOGRlMzk1OSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy14c3RhdGljXzEuMC4yLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteHN0YXRpY18xLjAuMi5iYgpAQCAtMSwyICsxLDE2IEBACitERVNDUklQVElPTiA9ICJYU3RhdGljIGJhc2UgcGFja2FnZSB3aXRoIG1pbmltYWwgc3VwcG9ydCBjb2RlIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9YU3RhdGljIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS50eHQ7bWQ1PTE0MTg2ODQyNzJmODVmNDAwY2ViZjFiMWEyNTVjNWNkIgorCitQWVBJX1BBQ0tBR0UgPSAiWFN0YXRpYyIKKworU1JDX1VSSVttZDVzdW1dID0gImRlYTE3MmI3YjE0YjBkYmNkNWVkNjMwNzUyMjFhZjRiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgwYjc4ZGZlMzdiY2U2ZGVlNDM0M2Q2NGM2NTM3NWE4MGJjZjM5OWI0NmRkNDdjMGM3ZDU2MTYxNTY4YTIzYTgiCisKK0RFUEVORFMgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LXBpcCBcCisiCisKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24teHN0YXRpYy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteHhoYXNoL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteHhoYXNoL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzk4ZmE4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy14eGhhc2gvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGVzdCB0ZXN0cy90ZXN0LnB5IC1vIGxvZ19jbGk9dHJ1ZSAtbyBsb2dfY2xpX2xldmVsPUlORk8gfCBzZWQgLWUgJ3MvXFsuLi4lXF0vL2cnfCBzZWQgLWUgJ3MvUEFTU0VEL1BBU1MvZyd8IHNlZCAtZSAncy9GQUlMRUQvRkFJTC9nJ3xzZWQgLWUgJ3MvU0tJUEVEL1NLSVAvZyd8IGF3ayAne2lmICgkTkY9PSJQQVNTIiB8fCAkTkY9PSJGQUlMIiB8fCAkTkY9PSJTS0lQIiB8fCAkTkY9PSJYRkFJTCIgfHwgJE5GPT0iWFBBU1MiKXtwcmludGYgIiVzOiAlc1xuIiwgJE5GLCAkMH1lbHNle3ByaW50fX0nfCBhd2sgJ3tpZiAoJE5GPT0iUEFTUyIgfHwgJE5GPT0iRkFJTCIgfHwgJE5GPT0iU0tJUCIgfHwgJE5GPT0iWEZBSUwiIHx8ICRORj09IlhQQVNTIikgeyRORj0iIjtwcmludCAkMH1lbHNle3ByaW50fX0nCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXh4aGFzaF8xLjQuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteHhoYXNoXzEuNC4zLmJiCmluZGV4IDc2YmM0MWEuLmMxMTRhNmMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteHhoYXNoXzEuNC4zLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteHhoYXNoXzEuNC4zLmJiCkBAIC0xLDIgKzEsMjIgQEAKLXJlcXVpcmUgcHl0aG9uLXh4aGFzaC5pbmMKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworU1VNTUFSWSA9ICJ4eGhhc2ggaXMgYSBQeXRob24gYmluZGluZyBmb3IgdGhlIHh4SGFzaCBsaWJyYXJ5IGJ5IFlhbm4gQ29sbGV0LiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01YThkNzYyODM1MTRhMWI3ZTZhNDE0YWJhMzg2MjliNSIKKworU1JDX1VSSVttZDVzdW1dID0gImNlOWNiYmNjODk2MjBmZDQ3YTI0NjhiYWRkMDhkY2YwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhiNmIxYWZlNzczMWQ3ZDljYmIwMzk4YjRhODExZWJiNWU2YmU1YzE3NGY3MmM2OGFiZjgxZjkxOWE0MzVkZTkiCisKK1NSQ19VUkkgKz0gIiBcCisgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMyBwdGVzdAorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgY3AgLXJmICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteWFwcGkvcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy15YXBwaS9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM4NWQ2OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteWFwcGkvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGVzdCAtbyBsb2dfY2xpPXRydWUgLW8gbG9nX2NsaV9sZXZlbD1JTkZPIHwgc2VkIC1lICdzL1xbLi4uJVxdLy9nJ3wgc2VkIC1lICdzL1BBU1NFRC9QQVNTL2cnfCBzZWQgLWUgJ3MvRkFJTEVEL0ZBSUwvZyd8c2VkIC1lICdzL1NLSVBFRC9TS0lQL2cnfCBhd2sgJ3tpZiAoJE5GPT0iUEFTUyIgfHwgJE5GPT0iRkFJTCIgfHwgJE5GPT0iU0tJUCIgfHwgJE5GPT0iWEZBSUwiIHx8ICRORj09IlhQQVNTIil7cHJpbnRmICIlczogJXNcbiIsICRORiwgJDB9ZWxzZXtwcmludH19J3wgYXdrICd7aWYgKCRORj09IlBBU1MiIHx8ICRORj09IkZBSUwiIHx8ICRORj09IlNLSVAiIHx8ICRORj09IlhGQUlMIiB8fCAkTkY9PSJYUEFTUyIpIHskTkY9IiI7cHJpbnQgJDB9ZWxzZXtwcmludH19JwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy15YXBwaV8xLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXlhcHBpXzEuMC5iYgppbmRleCAwN2RhNWI2Li43NWRlNGRmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXlhcHBpXzEuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXlhcHBpXzEuMC5iYgpAQCAtMSwyICsxLDMyIEBACi1yZXF1aXJlIHB5dGhvbi15YXBwaS5pbmMKLWluaGVyaXQgc2V0dXB0b29sczMKK1NVTU1BUlkgID0gIllldCBBbm90aGVyIFB5dGhvbiBQcm9maWxlciIKK0hPTUVQQUdFID0gImh0dHA6Ly95YXBwaS5nb29nbGVjb2RlLmNvbS8iCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTlhMTkzYzEzZjM0Njg4NGU1OTdhY2RjYWM3ZmU5YWM4IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTU0NTEwMWFhOGE0MzViMDc4MGYwNmY0NzIzZjU4YzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2Y4MTQxMzE1MTVkNTFkYjYyYjFhMzQ2OGJjYjg0ZGUzMDQ5OTEyNDc1MjgwNmE1YTZlMTFjYWYwYjQzNDRiZiIKKworU1JDX1VSSSArPSAiIFwKKyAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzIHB0ZXN0CisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKKyAgICAke1BZVEhPTl9QTn0tcGlja2xlIFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LXB5dGVzdCBcCisgICAgJHtQWVRIT05fUE59LW11bHRpcHJvY2Vzc2luZyBcCisgICAgJHtQWVRIT05fUE59LXByb2ZpbGUgXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBjcCAtcmYgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworICAgIGNwIC1mICR7U30veWFwcGkucHkgJHtEfS8ke1BURVNUX1BBVEh9LworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy15YXJsL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteWFybC9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM4NWQ2OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteWFybC9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworcHl0ZXN0IC1vIGxvZ19jbGk9dHJ1ZSAtbyBsb2dfY2xpX2xldmVsPUlORk8gfCBzZWQgLWUgJ3MvXFsuLi4lXF0vL2cnfCBzZWQgLWUgJ3MvUEFTU0VEL1BBU1MvZyd8IHNlZCAtZSAncy9GQUlMRUQvRkFJTC9nJ3xzZWQgLWUgJ3MvU0tJUEVEL1NLSVAvZyd8IGF3ayAne2lmICgkTkY9PSJQQVNTIiB8fCAkTkY9PSJGQUlMIiB8fCAkTkY9PSJTS0lQIiB8fCAkTkY9PSJYRkFJTCIgfHwgJE5GPT0iWFBBU1MiKXtwcmludGYgIiVzOiAlc1xuIiwgJE5GLCAkMH1lbHNle3ByaW50fX0nfCBhd2sgJ3tpZiAoJE5GPT0iUEFTUyIgfHwgJE5GPT0iRkFJTCIgfHwgJE5GPT0iU0tJUCIgfHwgJE5GPT0iWEZBSUwiIHx8ICRORj09IlhQQVNTIikgeyRORj0iIjtwcmludCAkMH1lbHNle3ByaW50fX0nCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXlhcmxfMS40LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXlhcmxfMS40LjIuYmIKaW5kZXggYzVkZjQ0Mi4uMTVkOTIwNiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy15YXJsXzEuNC4yLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteWFybF8xLjQuMi5iYgpAQCAtMSwyICsxLDI5IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi15YXJsLmluYworU1VNTUFSWSA9ICJUaGUgbW9kdWxlIHByb3ZpZGVzIGhhbmR5IFVSTCBjbGFzcyBmb3IgdXJsIHBhcnNpbmcgYW5kIGNoYW5naW5nIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Fpby1saWJzL3lhcmwvIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjMzNGZjOTBkNDU5ODNkYjMxOGY1NGZkNWJmNmM5MGIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwOGJhMGQ2ZTE4ZjQ2MGI0NGQ5ZTU0NTlmM2QyMTdiYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1OGNkOWM0NjllY2VkNTU4Y2Q4MWFhM2Y0ODRiMjkyNGU4ODk3MDQ5ZTA2ODg5ZThmZjI1MTA0MzViN2VmNzRiIgorCitTUkNfVVJJICs9ICIgXAorICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitQWVBJX1BBQ0tBR0UgPSAieWFybCIKKworaW5oZXJpdCBweXBpIHB0ZXN0IHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgICAke1BZVEhPTl9QTn0tbXVsdGlkaWN0IFwKKyAgICAke1BZVEhPTl9QTn0taWRuYSBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1weXRlc3QgXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBjcCAtcmYgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy16aXBwXzAuNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy16aXBwXzAuNi4wLmJiCmluZGV4IGI3ODY2M2YuLjEwMTkwODEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtemlwcF8wLjYuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXppcHBfMC42LjAuYmIKQEAgLTEsMiArMSwxNSBAQAorREVTQ1JJUFRJT04gPSAiQmFja3BvcnQgb2YgcGF0aGxpYi1jb21wYXRpYmxlIG9iamVjdCB3cmFwcGVyIGZvciB6aXAgZmlsZXMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vamFyYWNvL3ppcHAiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWEzM2YzOGJiZjQ3ZDQ4YzcwZmUwZDQwZTVmNzc0OThlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDQ0NTFhNzQ5ZDhhN2MzYzM5MmE5ZWRkMTg2NGE5MzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzcxOGIxY2JjZDk2M2M3ZDRjNTUxMWE4MjQwODEyOTA0MTY0YjdmMzgxYjY0NzE0M2E4OWQzYjk4ZjliY2Q4ZSIKKworREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXNldHVwdG9vbHMtc2NtLW5hdGl2ZSIKKwogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi16aXBwLmluYworCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LW1vcmUtaXRlcnRvb2xzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXpvcGVpbnRlcmZhY2VfNC43LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXpvcGVpbnRlcmZhY2VfNC43LjEuYmIKaW5kZXggYmUxMTg1OC4uNmI2NTkyNCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy16b3BlaW50ZXJmYWNlXzQuNy4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtem9wZWludGVyZmFjZV80LjcuMS5iYgpAQCAtMSw0ICsxLDI1IEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXpvcGVpbnRlcmZhY2UuaW5jCitTVU1NQVJZID0gIkludGVyZmFjZSBkZWZpbml0aW9ucyBmb3IgWm9wZSBwcm9kdWN0cyIKK0xJQ0VOU0UgPSAiWlBMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ZTU0ZmQ3NzYyNzRjMWI3NDIzZWMxMjg5NzRiZDlkNDYiCiAKK1NSQ19VUklbbWQ1c3VtXSA9ICIxYmM2Njc1ODI3NWM1ZWI2NmQxNjlhY2JhM2M4ZTUwZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0YmI5MzdlOTk4YmU5ZDVlMzQ1ZjQ4NjY5M2U0NzdiYTc5ZTQzNDQ2NzQ0ODQwMDFhMGI2NDZiZTFkNTMwNDg3IgorCitQWVBJX1BBQ0tBR0UgPSAiem9wZS5pbnRlcmZhY2UiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitQQUNLQUdFUyA9LiAiJHtQTn0tdGVzdCAiCisKK1JQUk9WSURFU18ke1BOfSArPSAiem9wZS1pbnRlcmZhY2VzIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiR7UFlUSE9OX1BOfS1kYXRldGltZSIKIFJERVBFTkRTXyR7UE59LXRlc3QgKz0gInB5dGhvbjMtdW5pdHRlc3QgcHl0aG9uMy1kb2N0ZXN0IgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyouZWdnLyovKi8uZGVidWciCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3pvcGUvaW50ZXJmYWNlLyouYyIKK0ZJTEVTXyR7UE59LWRvYyArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vem9wZS9pbnRlcmZhY2UvKi50eHQiCitGSUxFU18ke1BOfS10ZXN0ICs9ICIgXAorICAgICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS96b3BlL2ludGVyZmFjZS90ZXN0cyBcCisgICAgICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3pvcGUvaW50ZXJmYWNlL2NvbW1vbi90ZXN0cyBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1jc29uL3B5dGhvbi1jc29uX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWNzb24vcHl0aG9uLWNzb25fZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmIzMzhjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWNzb24vcHl0aG9uLWNzb25fZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTUgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLSMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKLQotREVTQ1JJUFRJT04gPSAiUHl0aG9uIGxpYnJhcnkgZm9yIENTT04gKHNjaGVtYS1jb21wcmVzc2VkIEpTT04pIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2d0MzM4OWIvcHl0aG9uLWNzb24vIgotTElDRU5TRSA9ICJNSVQiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc3MDlkMjYzNWU2M2FiOTY5NzMwNTVhMjNjMmE0Y2FjIgotCi1TUkNSRVYgPSAiZjNmMjg5OGM0NGJiMTZiOTUxZDNlOWYyZmJmNmQxYzQxNThlZGRhMiIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ndDMzODliL3B5dGhvbi1jc29uLmdpdCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLURFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgcHl0aG9uLW5hdGl2ZSAiCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tY3Nvbi9weXRob24zLWNzb25fZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tY3Nvbi9weXRob24zLWNzb25fZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjNzRjN2EKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1jc29uL3B5dGhvbjMtY3Nvbl9naXQuYmIKQEAgLTAsMCArMSwyMSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTUgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworREVTQ1JJUFRJT04gPSAiUHl0aG9uIGxpYnJhcnkgZm9yIENTT04gKHNjaGVtYS1jb21wcmVzc2VkIEpTT04pIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2d0MzM4OWIvcHl0aG9uLWNzb24vIgorTElDRU5TRSA9ICJNSVQiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc3MDlkMjYzNWU2M2FiOTY5NzMwNTVhMjNjMmE0Y2FjIgorCitTUkNSRVYgPSAiZjNmMjg5OGM0NGJiMTZiOTUxZDNlOWYyZmJmNmQxYzQxNThlZGRhMiIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ndDMzODliL3B5dGhvbi1jc29uLmdpdCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgcHl0aG9uLW5hdGl2ZSAiCisKK2luaGVyaXQgc2V0dXB0b29sczMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5ZXBoZW0vcHl0aG9uLXB5ZXBoZW1fMy43LjcuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5ZXBoZW0vcHl0aG9uLXB5ZXBoZW1fMy43LjcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDIyZjBkYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWVwaGVtL3B5dGhvbi1weWVwaGVtXzMuNy43LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIlB5RXBoZW0gYXN0cm9ub21pY2FsIGNhbGN1bGF0aW9ucyIKLUhPTUVQQUdFID0gImh0dHA6Ly9yaG9kZXNtaWxsLm9yZy9weWVwaGVtLyIKLQotTElDRU5TRSA9ICJMR1BMLTMuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYyODgzMDM3NjBmNmU1Y2VhYWZlM2FhYTMyMTg2YWIxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDZjMDM1YjRhOTAzZmYyNmUwZDhhZDBmMWZlNmNjMzUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjA3MTQ4NDI5Zjg1NDEyOTE1ZTMyMjY1Nzc5YzBjZjZkMDlmNzNhYTk3Y2YxZmYwZDEwMWFjMjJjNjljNDQzNiIKLQotUFlQSV9QQUNLQUdFID0gImVwaGVtIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCi0gICAgJHtQWVRIT05fUE59LW1hdGggXAotICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5ZXBoZW0vcHl0aG9uMy1weWVwaGVtXzMuNy43LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWVwaGVtL3B5dGhvbjMtcHllcGhlbV8zLjcuNy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4YjNjMGEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWVwaGVtL3B5dGhvbjMtcHllcGhlbV8zLjcuNy4wLmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiUHlFcGhlbSBhc3Ryb25vbWljYWwgY2FsY3VsYXRpb25zIgorSE9NRVBBR0UgPSAiaHR0cDovL3Job2Rlc21pbGwub3JnL3B5ZXBoZW0vIgorCitMSUNFTlNFID0gIkxHUEwtMy4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjI4ODMwMzc2MGY2ZTVjZWFhZmUzYWFhMzIxODZhYjEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0NmMwMzViNGE5MDNmZjI2ZTBkOGFkMGYxZmU2Y2MzNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MDcxNDg0MjlmODU0MTI5MTVlMzIyNjU3NzljMGNmNmQwOWY3M2FhOTdjZjFmZjBkMTAxYWMyMmM2OWM0NDM2IgorCitQWVBJX1BBQ0tBR0UgPSAiZXBoZW0iCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCisgICAgJHtQWVRIT05fUE59LW1hdGggXAorICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5cGFydGVkL3B5dGhvbi1weXBhcnRlZF8zLjExLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weXBhcnRlZC9weXRob24tcHlwYXJ0ZWRfMy4xMS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMmFhMzc4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5cGFydGVkL3B5dGhvbi1weXBhcnRlZF8zLjExLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXB5cGFydGVkLmluYwotCi1pbmhlcml0IGRpc3R1dGlscwotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLXN0cmluZ29sZCBweXRob24tY29kZWNzIHB5dGhvbi1tYXRoIHB5dGhvbi1zdWJwcm9jZXNzIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5d2JlbS9weXRob24tcHl3YmVtXzAuMTUuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl3YmVtL3B5dGhvbi1weXdiZW1fMC4xNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjk5ZjFjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl3YmVtL3B5dGhvbi1weXdiZW1fMC4xNS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotcmVxdWlyZSBweXRob24tcHl3YmVtLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotREVQRU5EUyArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tbTJjcnlwdG8tbmF0aXZlIFwKLSAgICAke1BZVEhPTl9QTn0tdHlwaW5nLW5hdGl2ZSBcCi0iCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAotICAgICR7UFlUSE9OX1BOfS1hcmdwYXJzZSBcCi0gICAgJHtQWVRIT05fUE59LW0yY3J5cHRvIFwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCi0iCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gIm1vZl9jb21waWxlciBweXdiZW1jbGkgd2JlbWNsaSIKLUFMVEVSTkFUSVZFX1RBUkdFVFttb2ZfY29tcGlsZXJdID0gIiR7YmluZGlyfS9tb2ZfY29tcGlsZXIiCi1BTFRFUk5BVElWRV9UQVJHRVRbcHl3YmVtY2xpXSA9ICIke2JpbmRpcn0vcHl3YmVtY2xpIgotQUxURVJOQVRJVkVfVEFSR0VUW3diZW1jbGldID0gIiR7YmluZGlyfS93YmVtY2xpIgotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIzMCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL2NvbmYvbGF5ZXIuY29uZiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL2NvbmYvbGF5ZXIuY29uZgppbmRleCAyYzZmYWQ0Li4yNDQ2OTExIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9jb25mL2xheWVyLmNvbmYKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvY29uZi9sYXllci5jb25mCkBAIC0xNyw3ICsxNyw3IEBACiAKIExBWUVSREVQRU5EU193ZWJzZXJ2ZXIgPSAiY29yZSBvcGVuZW1iZWRkZWQtbGF5ZXIiCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF93ZWJzZXJ2ZXIgPSAidGh1ZCB3YXJyaW9yIHpldXMiCitMQVlFUlNFUklFU19DT01QQVRfd2Vic2VydmVyID0gInRodWQgd2FycmlvciB6ZXVzIGR1bmZlbGwiCiAKIExJQ0VOU0VfUEFUSCArPSAiJHtMQVlFUkRJUn0vbGljZW5zZXMiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtY29yZS9wYWNrYWdlc2dyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS13ZWJzZXJ2ZXIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWNvcmUvcGFja2FnZXNncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtd2Vic2VydmVyLmJiCmluZGV4IGZjMTE3ODUuLmY1ZDVkZWIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtY29yZS9wYWNrYWdlc2dyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS13ZWJzZXJ2ZXIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1jb3JlL3BhY2thZ2VzZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLXdlYnNlcnZlci5iYgpAQCAtMTksOCArMTksOSBAQAogIgogCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS13ZWJzZXJ2ZXItaHR0cCA9ICJcCi0gICAgbmdpbnggbW9ua2V5IGNoZXJva2VlIGhpYXdhdGhhIG5vc3Ryb21vIGFwYWNoZS13ZWJzb2NrZXQgXAorICAgIG5naW54IG1vbmtleSBoaWF3YXRoYSBub3N0cm9tbyBhcGFjaGUtd2Vic29ja2V0IFwKICAgICBhcGFjaGUyIHN0aHR0cGQgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJCQkZJTEVfQ09MTEVDVElPTlMiLCAibWV0YS1weXRob24yIiwgImNoZXJva2VlIiwgIiIsIGQpfSBcCiAgICAgIgogCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS13ZWJzZXJ2ZXItcGhwID0gIlwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyLzAwMDEtc3VwcG9ydC1hcHhzLmluLWZvcmNlLWRlc3RkaXItdG8tYmUtZW1wdHktc3RyaW5nLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTIvMDAwMS1zdXBwb3J0LWFweHMuaW4tZm9yY2UtZGVzdGRpci10by1iZS1lbXB0eS1zdHJpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRlZGQxNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyLzAwMDEtc3VwcG9ydC1hcHhzLmluLWZvcmNlLWRlc3RkaXItdG8tYmUtZW1wdHktc3RyaW5nLnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gNzA1YzBhN2U5ZDljMWU2NGVlMDlmYzBiNTRmNmI1YTRlMjdkZTFjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRyZXZvciBHYW1ibGluIDx0cmV2b3IuZ2FtYmxpbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAxNyBBcHIgMjAyMCAwNjozMTozNSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBzdXBwb3J0L2FweHMuaW46IGZvcmNlIGRlc3RkaXIgdG8gYmUgZW1wdHkgc3RyaW5nCisKK0lmIGRlc3RkaXIgaXMgYXNzaWduZWQgdG8gYW55dGhpbmcgb3RoZXIgdGhhbiB0aGUgZW1wdHkgc3RyaW5nLCB0aGUgCitzZWFyY2ggcGF0aCBmb3IgYXBhY2hlMiBjb25maWcgZmlsZXMgaXMgYXBwZW5kZWQgdG8gaXRzZWxmLCBhbmQgCityZWxhdGVkIHBhY2thZ2VzIGxpa2UgYXBhY2hlLXdlYnNvY2tldCB3aWxsIGJlIHVuYWJsZSB0byBsb2NhdGUgdGhlbToKKworfCBjYW5ub3Qgb3BlbgorL2FsYS1scGdncDMxL3RnYW1ibGluL3lvY3RvL3Bva3kuZ2l0L2J1aWxkL3RtcC93b3JrL2NvcmUyLTY0LXBva3ktbGludXgvYXBhY2hlLXdlYnNvY2tldC8wLjEuMStnaXRBVVRPSU5DKzY5NjgwODMyNjQtcjAvcmVjaXBlLXN5c3Jvb3QvYWxhLWxwZ2dwMzEvdGdhbWJsaW4veW9jdG8vcG9reS5naXQvYnVpbGQvdG1wL3dvcmsvY29yZTItNjQtcG9reS1saW51eC9hcGFjaGUtd2Vic29ja2V0LzAuMS4xK2dpdEFVVE9JTkMrNjk2ODA4MzI2NC1yMC9yZWNpcGUtc3lzcm9vdC8vdXNyL3NoYXJlL2FwYWNoZTIvYnVpbGQvY29uZmlnX3ZhcnMubWs6CitObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IGF0CisvYWxhLWxwZ2dwMzEvdGdhbWJsaW4veW9jdG8vcG9reS5naXQvYnVpbGQvdG1wL3dvcmsvY29yZTItNjQtcG9reS1saW51eC9hcGFjaGUtd2Vic29ja2V0LzAuMS4xK2dpdEFVVE9JTkMrNjk2ODA4MzI2NC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvYmluL2Nyb3Nzc2NyaXB0cy9hcHhzCitsaW5lIDIxMy4KKworRW5zdXJlIHRoYXQgaXQgaXMgYWx3YXlzIHRoZSBlbXB0eSBzdHJpbmcgc28gdGhhdCBhcGFjaGUtd2Vic29ja2V0CitpcyBhYmxlIHRvIGZpbmQgdGhlIHJlcXVpcmVkIGNvbmZpZyBmaWxlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIChlbWJlZGRlZC1zcGVjaWZpYykKKworU2lnbmVkLW9mZi1ieTogVHJldm9yIEdhbWJsaW4gPHRyZXZvci5nYW1ibGluQHdpbmRyaXZlci5jb20+CistLS0KKyBzdXBwb3J0L2FweHMuaW4gfCAxMCArKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N1cHBvcnQvYXB4cy5pbiBiL3N1cHBvcnQvYXB4cy5pbgoraW5kZXggNjVlMTI4ODUyNy4uOWQ5NmUzMzcyOCAxMDA2NDQKKy0tLSBhL3N1cHBvcnQvYXB4cy5pbgorKysrIGIvc3VwcG9ydC9hcHhzLmluCitAQCAtMjgsMTAgKzI4LDEyIEBAIHBhY2thZ2UgYXB4czsKKyAjICAgaXMgdGhlIGVtcHR5IHN0cmluZy4KKyAKKyBteSAkZGVzdGRpciA9ICIiOworLW15ICRkZGkgPSByaW5kZXgoJDAsICJAZXhwX2JpbmRpckAiKTsKKy1pZiAoJGRkaSA+PSAwKSB7CistICAkZGVzdGRpciA9IHN1YnN0cigkMCwgMCwgJGRkaSk7CistfQorKyMgQ29tbWVudCBvdXQgYXNzaWdubWVudCBvZiBkZXN0ZGlyIHNvIHRoYXQgaXQgZG9lc24ndCBhZmZlY3QgYml0YmFrZQorKyMgY3Jvc3MtY29tcGlsYXRpb24gc2V0dXAKKysjbXkgJGRkaSA9IHJpbmRleCgkMCwgIkBleHBfYmluZGlyQCIpOworKyNpZiAoJGRkaSA+PSAwKSB7CisrIyAgJGRlc3RkaXIgPSBzdWJzdHIoJDAsIDAsICRkZGkpOworKyN9CisgCisgbXkgJWNvbmZpZ192YXJzID0gKCk7CisgCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMl8yLjQuNDEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMl8yLjQuNDEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzNDczNGMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTJfMi40LjQxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjE1ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlRoZSBBcGFjaGUgSFRUUCBTZXJ2ZXIgaXMgYSBwb3dlcmZ1bCwgZWZmaWNpZW50LCBhbmQgXAotZXh0ZW5zaWJsZSB3ZWIgc2VydmVyLiIKLVNVTU1BUlkgPSAiQXBhY2hlIEhUVFAgU2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIgotU0VDVElPTiA9ICJuZXQiCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi0KLVNSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS9odHRwZC9odHRwZC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLXVzZS1wa2ctY29uZmlnLWZvci1QQ1JFLWRldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWFwYWNoZTItYnVtcC11cC10aGUtY29yZS1zaXplLWxpbWl0LWlmLUNvcmVEdW1wRGlyZWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1hcGFjaGUyLWRvLW5vdC1leHBvcnQtYXByLWFwci11dGlsLXN5bWJvbHMtd2hlbi11c2luLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtYXBhY2hlMi1sb2ctdGhlLVNFTGludXgtY29udGV4dC1hdC1zdGFydHVwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtcmVwbGFjZS1seW54LXRvLWN1cmwtaW4tYXBhY2hlY3RsLXNjcmlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LWFwYWNoZTItZml4LXRoZS1yYWNlLWlzc3VlLW9mLXBhcmFsbGVsLWluc3RhbGxhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LWFwYWNoZTItYWxsb3ctdG8tZGlzYWJsZS1zZWxpbnV4LXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYXBhY2hlLWNvbmZpZ3VyZV9wZXJsYmluLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1hcGFjaGUyLWRvLW5vdC11c2UtcmVsYXRpdmUtcGF0aC1mb3ItZ2VuX3Rlc3RfY2hhci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0IFwKLSAgICAgICAgICAgZmlsZTovL2FwYWNoZTItdm9sYXRpbGUuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9hcGFjaGUyLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjA0X2FwYWNoZTIgXAotICAgICAgICAgICAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQ1MmQwZmQwYmM3ODhmMDY4ZTY0NzExNmMwMWRkZmNkIgotU1JDX1VSSVttZDVzdW1dID0gImRmYzY3NGY4ZjQ1NGUzYmMyZDRjY2Q3M2FkM2I1ZjFlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEzM2Q0ODI5OGZlNTMxNWFlOTM2NmEwZWM2NjI4MmZhNDA0MGVmYTVkNTY2MTc0NDgxMDc3YWRlN2QxOGVhNDAiCi0KLVMgPSAiJHtXT1JLRElSfS9odHRwZC0ke1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgcGtnY29uZmlnIHN5c3RlbWQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1ERVBFTkRTID0gIm9wZW5zc2wgZXhwYXQgcGNyZSBhcHIgYXByLXV0aWwgYXBhY2hlMi1uYXRpdmUgIgotCi1DVkVfUFJPRFVDVCA9ICJodHRwX3NlcnZlciIKLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gImFweHMgY29uZmlnX3ZhcnMubWsgY29uZmlnLm5pY2UiCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3NlbGludXgnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0tZW5hYmxlLXNlbGludXgsLS1kaXNhYmxlLXNlbGludXgsbGlic2VsaW51eCxsaWJzZWxpbnV4IgotUEFDS0FHRUNPTkZJR1tvcGVubGRhcF0gPSAiLS1lbmFibGUtbGRhcCAtLWVuYWJsZS1hdXRobnotbGRhcCwtLWRpc2FibGUtbGRhcCAtLWRpc2FibGUtYXV0aG56LWxkYXAsb3BlbmxkYXAiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0tZW5hYmxlLWRlZmxhdGUsLHpsaWIsemxpYiIKLQotQ0ZMQUdTX2FwcGVuZCA9ICIgLURQQVRIX01BWD00MDk2IgotCi1FWFRSQV9PRUNPTkZfY2xhc3MtdGFyZ2V0ID0gIlwKLSAgICAtLWVuYWJsZS1sYXlvdXQ9RGViaWFuIFwKLSAgICAtLXByZWZpeD0ke2Jhc2VfcHJlZml4fSBcCi0gICAgLS1leGVjX3ByZWZpeD0ke2V4ZWNfcHJlZml4fSBcCi0gICAgLS1pbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0vJHtCUE59IFwKLSAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS8ke0JQTn0gXAotICAgIC0tZGF0YWRpcj0ke2RhdGFkaXJ9LyR7QlBOfSBcCi0gICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKLSAgICAtLWxpYmV4ZWNkaXI9JHtsaWJleGVjZGlyfS8ke0JQTn0vbW9kdWxlcyBcCi0gICAgLS1sb2NhbHN0YXRlZGlyPSR7bG9jYWxzdGF0ZWRpcn0gXAotICAgIC0tZW5hYmxlLXNzbCBcCi0gICAgLS13aXRoLWRibT1zZGJtIFwKLSAgICAtLXdpdGgtZ2RibT1ubyBcCi0gICAgLS13aXRoLW5kYm09bm8gXAotICAgIC0td2l0aC1iZXJrZWxleS1kYj1ubyBcCi0gICAgLS1lbmFibGUtaW5mbyBcCi0gICAgLS1lbmFibGUtcmV3cml0ZSBcCi0gICAgLS1lbmFibGUtbXBtcy1zaGFyZWQgXAotICAgIGFwX2N2X3ZvaWRfcHRyX2x0X2xvbmc9bm8gXAotICAgIGFjX2N2X2hhdmVfdGhyZWFkc2FmZV9wb2xsc2V0PW5vIFwKLSAgICAiCi0KLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiXAotICAgIC0tcHJlZml4PSR7cHJlZml4fSBcCi0gICAgLS1pbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0vJHtCUE59IFwKLSAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS8ke0JQTn0gXAotICAgIC0tZGF0YWRpcj0ke2RhdGFkaXJ9LyR7QlBOfSBcCi0gICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKLSAgICAtLWxpYmV4ZWNkaXI9JHtsaWJkaXJ9LyR7QlBOfS9tb2R1bGVzIFwKLSAgICAtLWxvY2Fsc3RhdGVkaXI9JHtsb2NhbHN0YXRlZGlyfSBcCi0gICAgIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgJ3M6JCcne3ByZWZpeH0vdXNyL2xpYi9jZ2ktYmluOiQnJ3tsaWJleGVjZGlyfS9jZ2ktYmluOmcnICR7U30vY29uZmlnLmxheW91dAotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0KLSAgICBjYXQgJHtXT1JLRElSfS9pbml0IHwgXAotICAgICAgICBzZWQgLWUgJ3MsL3Vzci9zYmluLywke3NiaW5kaXJ9LyxnJyBcCi0gICAgICAgICAgICAtZSAncywvdXNyL2Jpbi8sJHtiaW5kaXJ9LyxnJyBcCi0gICAgICAgICAgICAtZSAncywvdXNyL2xpYi8sJHtsaWJkaXJ9LyxnJyBcCi0gICAgICAgICAgICAtZSAncywvZXRjLywke3N5c2NvbmZkaXJ9LyxnJyBcCi0gICAgICAgICAgICAtZSAncywvdXNyLywke3ByZWZpeH0vLGcnID4gJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC8ke0JQTn0KLQotICAgIGNobW9kIDc1NSAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kLyR7QlBOfQotCi0gICAgIyBSZW1vdmUgdGhlIGdvb2Z5IG9yaWdpbmFsIGZpbGVzLi4uCi0gICAgcm0gLXJmICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vb3JpZ2luYWwKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59L2NvbmYuZAotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59L21vZHVsZXMuZAotCi0gICAgIyBFbnN1cmUgY29uZmlndXJhdGlvbiBmaWxlIHB1bGxzIGluIGNvbmYuZCBhbmQgbW9kdWxlcy5kCi0gICAgcHJpbnRmICJcbkluY2x1ZGVPcHRpb25hbCAke3N5c2NvbmZkaXJ9LyR7QlBOfS9jb25mLmQvKi5jb25mIiA+PiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYKLSAgICBwcmludGYgIlxuSW5jbHVkZU9wdGlvbmFsICR7c3lzY29uZmRpcn0vJHtCUE59L21vZHVsZXMuZC8qLmxvYWQiID4+ICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZgotICAgIHByaW50ZiAiXG5JbmNsdWRlT3B0aW9uYWwgJHtzeXNjb25mZGlyfS8ke0JQTn0vbW9kdWxlcy5kLyouY29uZlxuXG4iID4+ICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZgotCi0gICAgIyBNYXRjaCB3aXRoIHRoYXQgaXMgaW4gaW5pdCBzY3JpcHQKLSAgICBwcmludGYgIlxuUGlkRmlsZSAvcnVuL2h0dHBkLnBpZCIgPj4gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCi0KLSAgICAjIFNldCAnU2VydmVyTmFtZScgdG8gZml4IGVycm9yIG1lc3NhZ2VzIHdoZW4gcmVzdGFydCBhcGFjaGUgc2VydmljZQotICAgIHNlZCAtaSAncy9eI1NlcnZlck5hbWUgd3d3LmV4YW1wbGUuY29tL1NlcnZlck5hbWUgbG9jYWxob3N0LycgJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCi0KLSAgICBzZWQgLWkgJ3MvXlNlcnZlclJvb3QvI1NlcnZlclJvb3QvJyAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYKLQotICAgIHNlZCAtaSAtZSAncywke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKLSAgICAgICAgICAgLWUgJ3MsJHtERUJVR19QUkVGSVhfTUFQfSwsZycgXAotICAgICAgICAgICAtZSAncywtZmRlYnVnLXByZWZpeC1tYXBbXiBdKiwsZzsgcywtZm1hY3JvLXByZWZpeC1tYXBbXiBdKiwsZycgXAotICAgICAgICAgICAtZSAncywke0hPU1RUT09MU19ESVJ9LywsZycgXAotICAgICAgICAgICAtZSAncyxBUFVfSU5DTFVERURJUiA9IC4qLEFQVV9JTkNMVURFRElSID0gLGcnIFwKLSAgICAgICAgICAgLWUgJ3MsQVBVX0NPTkZJRyA9IC4qLEFQVV9DT05GSUcgPSAsZycgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZC9jb25maWdfdmFycy5tawotCi0gICAgc2VkIC1pIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKLSAgICAgICAgICAgLWUgJ3MsJHtERUJVR19QUkVGSVhfTUFQfSwsZycgXAotICAgICAgICAgICAtZSAncywke1JFQ0lQRV9TWVNST09UfSwsZycgXAotICAgICAgICAgICAtZSAncywtZmRlYnVnLXByZWZpeC1tYXBbXiBdKiwsZzsgcywtZm1hY3JvLXByZWZpeC1tYXBbXiBdKiwsZycgXAotICAgICAgICAgICAtZSAncyxBUFVfSU5DTFVERURJUiA9IC4qLEFQVV9JTkNMVURFRElSID0gLGcnIFwKLSAgICAgICAgICAgLWUgJ3MsIi4qL2NvbmZpZ3VyZSIsImNvbmZpZ3VyZSIsZycgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZC9jb25maWcubmljZQotCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLwotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9hcGFjaGUyLXZvbGF0aWxlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KLQotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2FwYWNoZTIuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICAgICBzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vYXBhY2hlMi5zZXJ2aWNlCi0gICAgICAgIHNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2FwYWNoZTIuc2VydmljZQotICAgIGVsaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjA0X2FwYWNoZTIgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvMDRfYXBhY2hlMgotICAgIGZpCi0KLSAgICBybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0gJHtEfSR7c2JpbmRpcn0vZW52dmFycyoKLSAgICBjaG93biAtUiByb290OnJvb3QgJHtEfQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9ICR7RH0ke2xpYmRpcn0KLSAgICBpbnN0YWxsIC1tIDc1NSBzZXJ2ZXIvZ2VuX3Rlc3RfY2hhciAke0R9JHtiaW5kaXJ9Ci19Ci0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBhcGFjaGVfc3lzcm9vdF9wcmVwcm9jZXNzIgotCi1hcGFjaGVfc3lzcm9vdF9wcmVwcm9jZXNzKCkgewotICAgIGluc3RhbGwgLWQgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfQotICAgIGluc3RhbGwgLW0gNzU1ICR7RH0ke2JpbmRpcn0vYXB4cyAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9Ci0gICAgaW5zdGFsbCAtZCAke1NZU1JPT1RfREVTVERJUn0ke3NiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSA3NTUgJHtEfSR7c2JpbmRpcn0vYXBhY2hlY3RsICR7U1lTUk9PVF9ERVNURElSfSR7c2JpbmRpcn0KLSAgICBzZWQgLWkgJ3MhbXkgJGluc3RhbGxidWlsZGRpciA9IC4qIW15ICRpbnN0YWxsYnVpbGRkaXIgPSAiJHtTVEFHSU5HX0RJUl9IT1NUfS8ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZCI7IScgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS9hcHhzCi0gICAgc2VkIC1pICdzIW15ICRsaWJ0b29sID0gLiohbXkgJGxpYnRvb2wgPSAiJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vJHtIT1NUX1NZU30tbGlidG9vbCI7IScgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS9hcHhzCi0KLSAgICBzZWQgLWkgJ3MhXkFQUl9DT05GSUcgPSAuKiFBUFJfQ09ORklHID0gJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vYXByLTEtY29uZmlnIScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKLSAgICBzZWQgLWkgJ3MhXkFQVV9DT05GSUcgPSAuKiFBUFVfQ09ORklHID0gJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vYXB1LTEtY29uZmlnIScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKLSAgICBzZWQgLWkgJ3MhXmluY2x1ZGVkaXIgPSAuKiFpbmNsdWRlZGlyID0gJHtTVEFHSU5HX0lOQ0RJUn0vYXBhY2hlMiEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCi0gICAgc2VkIC1pICdzIV5DRkxBR1MgPSAtSVteIF0qIUNGTEFHUyA9IC1JJHtTVEFHSU5HX0lOQ0RJUn0vb3BlbnNzbCEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCi0gICAgc2VkIC1pICdzIV5FWFRSQV9MREZMQUdTID0gLiohRVhUUkFfTERGTEFHUyA9IC1MJHtTVEFHSU5HX0xJQkRJUn0hJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5tawotICAgIHNlZCAtaSAncyFeRVhUUkFfSU5DTFVERVMgPSAuKiFFWFRSQV9JTkNMVURFUyA9IC1JJChpbmNsdWRlZGlyKSAtSS4gLUkke1NUQUdJTkdfSU5DRElSfSEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCi0gICAgc2VkIC1pICdzIS0tc3lzcm9vdD1bXiBdKiEtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCi19Ci0KLSMgSW1wbGljYXRpb25zIC0gdXNlZCBieSB1cGRhdGUtcmMuZCBzY3JpcHRzCi1JTklUU0NSSVBUX05BTUUgPSAiYXBhY2hlMiIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDkxIDIwIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiYXBhY2hlMi5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfSA9ICJlbmFibGUiCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJodHBhc3N3ZC4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2h0cGFzc3dkLjFdID0gIiR7bWFuZGlyfS9tYW4xL2h0cGFzc3dkLjEiCi0KLVBBQ0tBR0VTID0gIiR7UE59LXNjcmlwdHMgJHtQTn0tZG9jICR7UE59LWRldiAke1BOfS1kYmcgJHtQTn0iCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9LyR7QlBOfS9tYWdpYyBcCi0gICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS8ke0JQTn0vbWltZS50eXBlcyBcCi0gICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS8ke0JQTn0vZXh0cmEvKiIKLQotIyBXZSBvdmVycmlkZSBoZXJlIHJhdGhlciB0aGFuIGFwcGVuZCBzbyB0aGF0IC5zbyBsaW5rcyBhcmUKLSMgaW5jbHVkZWQgaW4gdGhlIHJ1bnRpbWUgcGFja2FnZSByYXRoZXIgdGhhbiBoZXJlICgtZGV2KQotIyBhbmQgdG8gZ2V0IGJ1aWxkLCBpY29ucywgZXJyb3IgaW50byB0aGUgLWRldiBwYWNrYWdlCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQgXAotICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtCUE59L2ljb25zIFwKLSAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7QlBOfS9lcnJvciBcCi0gICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS8ke0JQTn0gXAotICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9hcHhzIFwKLSAgICAgICAgICAgICAgICAgICIKLQotIyBBZGQgdGhlIG1hbnVhbCB0byAtZG9jCi1GSUxFU18ke1BOfS1kb2MgKz0gIiAke2RhdGFkaXJ9LyR7QlBOfS9tYW51YWwiCi0KLUZJTEVTXyR7UE59LXNjcmlwdHMgKz0gIiR7YmluZGlyfS9kYm1tYW5hZ2UiCi0KLSMgT3ZlcnJpZGUgdGhpcyB0b28gLSBoZXJlIGlzIHRoZSBkZWZhdWx0LCBsZXNzIGRhdGFkaXIKLUZJTEVTXyR7UE59ID0gICIke2JpbmRpcn0gJHtzYmluZGlyfSAke2xpYmV4ZWNkaXJ9ICR7bGliZGlyfSBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfSAke2xpYmRpcn0vJHtCUE59IgotCi0jIFdlIHdhbnQgaHRkb2NzIGFuZCBjZ2ktYmluIHRvIGdvIHdpdGggdGhlIGJpbmFyeQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vJHtCUE59LyAke2xpYmRpcn0vY2dpLWJpbiIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vJHtCUE59L21vZHVsZXMvLmRlYnVnIgotCi1SREVQRU5EU18ke1BOfSArPSAib3BlbnNzbCBsaWJnY2MiCi1SREVQRU5EU18ke1BOfS1zY3JpcHRzICs9ICJwZXJsICR7UE59IgotUkRFUEVORFNfJHtQTn0tZGV2ID0gInBlcmwiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTJfMi40LjQzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTJfMi40LjQzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMDAxMTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMl8yLjQuNDMuYmIKQEAgLTAsMCArMSwyMTYgQEAKK0RFU0NSSVBUSU9OID0gIlRoZSBBcGFjaGUgSFRUUCBTZXJ2ZXIgaXMgYSBwb3dlcmZ1bCwgZWZmaWNpZW50LCBhbmQgXAorZXh0ZW5zaWJsZSB3ZWIgc2VydmVyLiIKK1NVTU1BUlkgPSAiQXBhY2hlIEhUVFAgU2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIgorU0VDVElPTiA9ICJuZXQiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCisKK1NSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS9odHRwZC9odHRwZC0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLXVzZS1wa2ctY29uZmlnLWZvci1QQ1JFLWRldGVjdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWFwYWNoZTItYnVtcC11cC10aGUtY29yZS1zaXplLWxpbWl0LWlmLUNvcmVEdW1wRGlyZWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1hcGFjaGUyLWRvLW5vdC1leHBvcnQtYXByLWFwci11dGlsLXN5bWJvbHMtd2hlbi11c2luLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtYXBhY2hlMi1sb2ctdGhlLVNFTGludXgtY29udGV4dC1hdC1zdGFydHVwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtcmVwbGFjZS1seW54LXRvLWN1cmwtaW4tYXBhY2hlY3RsLXNjcmlwdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LWFwYWNoZTItZml4LXRoZS1yYWNlLWlzc3VlLW9mLXBhcmFsbGVsLWluc3RhbGxhdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LWFwYWNoZTItYWxsb3ctdG8tZGlzYWJsZS1zZWxpbnV4LXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYXBhY2hlLWNvbmZpZ3VyZV9wZXJsYmluLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3VwcG9ydC1hcHhzLmluLWZvcmNlLWRlc3RkaXItdG8tYmUtZW1wdHktc3RyaW5nLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1hcGFjaGUyLWRvLW5vdC11c2UtcmVsYXRpdmUtcGF0aC1mb3ItZ2VuX3Rlc3RfY2hhci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgZmlsZTovL2FwYWNoZTItdm9sYXRpbGUuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9hcGFjaGUyLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjA0X2FwYWNoZTIgXAorICAgICAgICAgICAiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWJkZGVkZGZhYzgwYjJjOWE4ODIyNDFkMDA4YmI0MWMzIgorU1JDX1VSSVttZDVzdW1dID0gIjc5MWM5ODZiMWU3MGZlNjFlYjQ0MDYwYWFjYzg5YTY0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE0OTc2NTJhYjNmYzgxMzE4Y2RjMmEyMDMwOTBhOTk5MTUwZDg2NDYxYWNmZjk3YzEwNjVkYzkxMGZlMTBmNDMiCisKK1MgPSAiJHtXT1JLRElSfS9odHRwZC0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgcGtnY29uZmlnIHN5c3RlbWQgdXBkYXRlLWFsdGVybmF0aXZlcworCitERVBFTkRTID0gIm9wZW5zc2wgZXhwYXQgcGNyZSBhcHIgYXByLXV0aWwgYXBhY2hlMi1uYXRpdmUgIgorCitDVkVfUFJPRFVDVCA9ICJodHRwX3NlcnZlciIKKworU1NUQVRFX1NDQU5fRklMRVMgKz0gImFweHMgY29uZmlnX3ZhcnMubWsgY29uZmlnLm5pY2UiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3NlbGludXgnLCBkKX0iCitQQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0tZW5hYmxlLXNlbGludXgsLS1kaXNhYmxlLXNlbGludXgsbGlic2VsaW51eCxsaWJzZWxpbnV4IgorUEFDS0FHRUNPTkZJR1tvcGVubGRhcF0gPSAiLS1lbmFibGUtbGRhcCAtLWVuYWJsZS1hdXRobnotbGRhcCwtLWRpc2FibGUtbGRhcCAtLWRpc2FibGUtYXV0aG56LWxkYXAsb3BlbmxkYXAiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0tZW5hYmxlLWRlZmxhdGUsLHpsaWIsemxpYiIKKworQ0ZMQUdTX2FwcGVuZCA9ICIgLURQQVRIX01BWD00MDk2IgorCitFWFRSQV9PRUNPTkZfY2xhc3MtdGFyZ2V0ID0gIlwKKyAgICAtLWVuYWJsZS1sYXlvdXQ9RGViaWFuIFwKKyAgICAtLXByZWZpeD0ke2Jhc2VfcHJlZml4fSBcCisgICAgLS1leGVjX3ByZWZpeD0ke2V4ZWNfcHJlZml4fSBcCisgICAgLS1pbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0vJHtCUE59IFwKKyAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS8ke0JQTn0gXAorICAgIC0tZGF0YWRpcj0ke2RhdGFkaXJ9LyR7QlBOfSBcCisgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAtLWxpYmV4ZWNkaXI9JHtsaWJleGVjZGlyfS8ke0JQTn0vbW9kdWxlcyBcCisgICAgLS1sb2NhbHN0YXRlZGlyPSR7bG9jYWxzdGF0ZWRpcn0gXAorICAgIC0tZW5hYmxlLXNzbCBcCisgICAgLS13aXRoLWRibT1zZGJtIFwKKyAgICAtLXdpdGgtZ2RibT1ubyBcCisgICAgLS13aXRoLW5kYm09bm8gXAorICAgIC0td2l0aC1iZXJrZWxleS1kYj1ubyBcCisgICAgLS1lbmFibGUtaW5mbyBcCisgICAgLS1lbmFibGUtcmV3cml0ZSBcCisgICAgLS1lbmFibGUtbXBtcy1zaGFyZWQgXAorICAgIGFwX2N2X3ZvaWRfcHRyX2x0X2xvbmc9bm8gXAorICAgIGFjX2N2X2hhdmVfdGhyZWFkc2FmZV9wb2xsc2V0PW5vIFwKKyAgICAiCisKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiXAorICAgIC0tcHJlZml4PSR7cHJlZml4fSBcCisgICAgLS1pbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0vJHtCUE59IFwKKyAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS8ke0JQTn0gXAorICAgIC0tZGF0YWRpcj0ke2RhdGFkaXJ9LyR7QlBOfSBcCisgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAtLWxpYmV4ZWNkaXI9JHtsaWJkaXJ9LyR7QlBOfS9tb2R1bGVzIFwKKyAgICAtLWxvY2Fsc3RhdGVkaXI9JHtsb2NhbHN0YXRlZGlyfSBcCisgICAgIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBzZWQgLWkgLWUgJ3M6JCcne3ByZWZpeH0vdXNyL2xpYi9jZ2ktYmluOiQnJ3tsaWJleGVjZGlyfS9jZ2ktYmluOmcnICR7U30vY29uZmlnLmxheW91dAorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCisKKyAgICBjYXQgJHtXT1JLRElSfS9pbml0IHwgXAorICAgICAgICBzZWQgLWUgJ3MsL3Vzci9zYmluLywke3NiaW5kaXJ9LyxnJyBcCisgICAgICAgICAgICAtZSAncywvdXNyL2Jpbi8sJHtiaW5kaXJ9LyxnJyBcCisgICAgICAgICAgICAtZSAncywvdXNyL2xpYi8sJHtsaWJkaXJ9LyxnJyBcCisgICAgICAgICAgICAtZSAncywvZXRjLywke3N5c2NvbmZkaXJ9LyxnJyBcCisgICAgICAgICAgICAtZSAncywvdXNyLywke3ByZWZpeH0vLGcnID4gJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC8ke0JQTn0KKworICAgIGNobW9kIDc1NSAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kLyR7QlBOfQorCisgICAgIyBSZW1vdmUgdGhlIGdvb2Z5IG9yaWdpbmFsIGZpbGVzLi4uCisgICAgcm0gLXJmICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vb3JpZ2luYWwKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59L2NvbmYuZAorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59L21vZHVsZXMuZAorCisgICAgIyBFbnN1cmUgY29uZmlndXJhdGlvbiBmaWxlIHB1bGxzIGluIGNvbmYuZCBhbmQgbW9kdWxlcy5kCisgICAgcHJpbnRmICJcbkluY2x1ZGVPcHRpb25hbCAke3N5c2NvbmZkaXJ9LyR7QlBOfS9jb25mLmQvKi5jb25mIiA+PiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYKKyAgICBwcmludGYgIlxuSW5jbHVkZU9wdGlvbmFsICR7c3lzY29uZmRpcn0vJHtCUE59L21vZHVsZXMuZC8qLmxvYWQiID4+ICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZgorICAgIHByaW50ZiAiXG5JbmNsdWRlT3B0aW9uYWwgJHtzeXNjb25mZGlyfS8ke0JQTn0vbW9kdWxlcy5kLyouY29uZlxuXG4iID4+ICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZgorCisgICAgIyBNYXRjaCB3aXRoIHRoYXQgaXMgaW4gaW5pdCBzY3JpcHQKKyAgICBwcmludGYgIlxuUGlkRmlsZSAvcnVuL2h0dHBkLnBpZCIgPj4gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCisKKyAgICAjIFNldCAnU2VydmVyTmFtZScgdG8gZml4IGVycm9yIG1lc3NhZ2VzIHdoZW4gcmVzdGFydCBhcGFjaGUgc2VydmljZQorICAgIHNlZCAtaSAncy9eI1NlcnZlck5hbWUgd3d3LmV4YW1wbGUuY29tL1NlcnZlck5hbWUgbG9jYWxob3N0LycgJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCisKKyAgICBzZWQgLWkgJ3MvXlNlcnZlclJvb3QvI1NlcnZlclJvb3QvJyAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYKKworICAgIHNlZCAtaSAtZSAncywke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKyAgICAgICAgICAgLWUgJ3MsJHtERUJVR19QUkVGSVhfTUFQfSwsZycgXAorICAgICAgICAgICAtZSAncywtZmRlYnVnLXByZWZpeC1tYXBbXiBdKiwsZzsgcywtZm1hY3JvLXByZWZpeC1tYXBbXiBdKiwsZycgXAorICAgICAgICAgICAtZSAncywke0hPU1RUT09MU19ESVJ9LywsZycgXAorICAgICAgICAgICAtZSAncyxBUFVfSU5DTFVERURJUiA9IC4qLEFQVV9JTkNMVURFRElSID0gLGcnIFwKKyAgICAgICAgICAgLWUgJ3MsQVBVX0NPTkZJRyA9IC4qLEFQVV9DT05GSUcgPSAsZycgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZC9jb25maWdfdmFycy5taworCisgICAgc2VkIC1pIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKyAgICAgICAgICAgLWUgJ3MsJHtERUJVR19QUkVGSVhfTUFQfSwsZycgXAorICAgICAgICAgICAtZSAncywke1JFQ0lQRV9TWVNST09UfSwsZycgXAorICAgICAgICAgICAtZSAncywtZmRlYnVnLXByZWZpeC1tYXBbXiBdKiwsZzsgcywtZm1hY3JvLXByZWZpeC1tYXBbXiBdKiwsZycgXAorICAgICAgICAgICAtZSAncyxBUFVfSU5DTFVERURJUiA9IC4qLEFQVV9JTkNMVURFRElSID0gLGcnIFwKKyAgICAgICAgICAgLWUgJ3MsIi4qL2NvbmZpZ3VyZSIsImNvbmZpZ3VyZSIsZycgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZC9jb25maWcubmljZQorCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9hcGFjaGUyLXZvbGF0aWxlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KKworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2FwYWNoZTIuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vYXBhY2hlMi5zZXJ2aWNlCisgICAgICAgIHNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2FwYWNoZTIuc2VydmljZQorICAgIGVsaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjA0X2FwYWNoZTIgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvMDRfYXBhY2hlMgorICAgIGZpCisKKyAgICBybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0gJHtEfSR7c2JpbmRpcn0vZW52dmFycyoKKyAgICBjaG93biAtUiByb290OnJvb3QgJHtEfQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9ICR7RH0ke2xpYmRpcn0KKyAgICBpbnN0YWxsIC1tIDc1NSBzZXJ2ZXIvZ2VuX3Rlc3RfY2hhciAke0R9JHtiaW5kaXJ9Cit9CisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBhcGFjaGVfc3lzcm9vdF9wcmVwcm9jZXNzIgorCithcGFjaGVfc3lzcm9vdF9wcmVwcm9jZXNzKCkgeworICAgIGluc3RhbGwgLWQgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfQorICAgIGluc3RhbGwgLW0gNzU1ICR7RH0ke2JpbmRpcn0vYXB4cyAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9CisgICAgaW5zdGFsbCAtZCAke1NZU1JPT1RfREVTVERJUn0ke3NiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSA3NTUgJHtEfSR7c2JpbmRpcn0vYXBhY2hlY3RsICR7U1lTUk9PVF9ERVNURElSfSR7c2JpbmRpcn0KKyAgICBzZWQgLWkgJ3MhbXkgJGluc3RhbGxidWlsZGRpciA9IC4qIW15ICRpbnN0YWxsYnVpbGRkaXIgPSAiJHtTVEFHSU5HX0RJUl9IT1NUfS8ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZCI7IScgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS9hcHhzCisgICAgc2VkIC1pICdzIW15ICRsaWJ0b29sID0gLiohbXkgJGxpYnRvb2wgPSAiJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vJHtIT1NUX1NZU30tbGlidG9vbCI7IScgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS9hcHhzCisKKyAgICBzZWQgLWkgJ3MhXkFQUl9DT05GSUcgPSAuKiFBUFJfQ09ORklHID0gJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vYXByLTEtY29uZmlnIScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKKyAgICBzZWQgLWkgJ3MhXkFQVV9DT05GSUcgPSAuKiFBUFVfQ09ORklHID0gJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vYXB1LTEtY29uZmlnIScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKKyAgICBzZWQgLWkgJ3MhXmluY2x1ZGVkaXIgPSAuKiFpbmNsdWRlZGlyID0gJHtTVEFHSU5HX0lOQ0RJUn0vYXBhY2hlMiEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCisgICAgc2VkIC1pICdzIV5DRkxBR1MgPSAtSVteIF0qIUNGTEFHUyA9IC1JJHtTVEFHSU5HX0lOQ0RJUn0vb3BlbnNzbCEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCisgICAgc2VkIC1pICdzIV5FWFRSQV9MREZMQUdTID0gLiohRVhUUkFfTERGTEFHUyA9IC1MJHtTVEFHSU5HX0xJQkRJUn0hJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5taworICAgIHNlZCAtaSAncyFeRVhUUkFfSU5DTFVERVMgPSAuKiFFWFRSQV9JTkNMVURFUyA9IC1JJChpbmNsdWRlZGlyKSAtSS4gLUkke1NUQUdJTkdfSU5DRElSfSEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCisgICAgc2VkIC1pICdzIS0tc3lzcm9vdD1bXiBdKiEtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCit9CisKKyMgSW1wbGljYXRpb25zIC0gdXNlZCBieSB1cGRhdGUtcmMuZCBzY3JpcHRzCitJTklUU0NSSVBUX05BTUUgPSAiYXBhY2hlMiIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDkxIDIwIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiYXBhY2hlMi5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfSA9ICJlbmFibGUiCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJodHBhc3N3ZC4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2h0cGFzc3dkLjFdID0gIiR7bWFuZGlyfS9tYW4xL2h0cGFzc3dkLjEiCisKK1BBQ0tBR0VTID0gIiR7UE59LXNjcmlwdHMgJHtQTn0tZG9jICR7UE59LWRldiAke1BOfS1kYmcgJHtQTn0iCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9LyR7QlBOfS9tYWdpYyBcCisgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS8ke0JQTn0vbWltZS50eXBlcyBcCisgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS8ke0JQTn0vZXh0cmEvKiIKKworIyBXZSBvdmVycmlkZSBoZXJlIHJhdGhlciB0aGFuIGFwcGVuZCBzbyB0aGF0IC5zbyBsaW5rcyBhcmUKKyMgaW5jbHVkZWQgaW4gdGhlIHJ1bnRpbWUgcGFja2FnZSByYXRoZXIgdGhhbiBoZXJlICgtZGV2KQorIyBhbmQgdG8gZ2V0IGJ1aWxkLCBpY29ucywgZXJyb3IgaW50byB0aGUgLWRldiBwYWNrYWdlCitGSUxFU18ke1BOfS1kZXYgPSAiJHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQgXAorICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtCUE59L2ljb25zIFwKKyAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7QlBOfS9lcnJvciBcCisgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS8ke0JQTn0gXAorICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9hcHhzIFwKKyAgICAgICAgICAgICAgICAgICIKKworIyBBZGQgdGhlIG1hbnVhbCB0byAtZG9jCitGSUxFU18ke1BOfS1kb2MgKz0gIiAke2RhdGFkaXJ9LyR7QlBOfS9tYW51YWwiCisKK0ZJTEVTXyR7UE59LXNjcmlwdHMgKz0gIiR7YmluZGlyfS9kYm1tYW5hZ2UiCisKKyMgT3ZlcnJpZGUgdGhpcyB0b28gLSBoZXJlIGlzIHRoZSBkZWZhdWx0LCBsZXNzIGRhdGFkaXIKK0ZJTEVTXyR7UE59ID0gICIke2JpbmRpcn0gJHtzYmluZGlyfSAke2xpYmV4ZWNkaXJ9ICR7bGliZGlyfSBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfSAke2xpYmRpcn0vJHtCUE59IgorCisjIFdlIHdhbnQgaHRkb2NzIGFuZCBjZ2ktYmluIHRvIGdvIHdpdGggdGhlIGJpbmFyeQorRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vJHtCUE59LyAke2xpYmRpcn0vY2dpLWJpbiIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vJHtCUE59L21vZHVsZXMvLmRlYnVnIgorCitSREVQRU5EU18ke1BOfSArPSAib3BlbnNzbCBsaWJnY2MiCitSREVQRU5EU18ke1BOfS1zY3JpcHRzICs9ICJwZXJsICR7UE59IgorUkRFUEVORFNfJHtQTn0tZGV2ID0gInBlcmwiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9jaGVyb2tlZS9jaGVyb2tlZV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2NoZXJva2VlL2NoZXJva2VlX2dpdC5iYgppbmRleCA0OTBmYzUzLi43NDI0NDY3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2NoZXJva2VlL2NoZXJva2VlX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2NoZXJva2VlL2NoZXJva2VlX2dpdC5iYgpAQCAtMjAsNyArMjAsNyBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIGJpbmNvbmZpZyB1cGRhdGUtcmMuZCBzeXN0ZW1kIHB5dGhvbm5hdGl2ZQoraW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBiaW5jb25maWcgdXBkYXRlLXJjLmQgc3lzdGVtZCAke0BiYi51dGlscy5jb250YWlucygiQkJGSUxFX0NPTExFQ1RJT05TIiwgIm1ldGEtcHl0aG9uMiIsICJweXRob25uYXRpdmUiLCAiIiwgZCl9CiAKIFBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgogUEFDS0FHRUNPTkZJR1tmZm1wZWddID0gIi0td2l0aC1mZm1wZWcsLS13aXRob3V0LWZmbXBlZyxsaWJhdiIKQEAgLTcwLDMgKzcwLDggQEAKIFJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKIFJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCiBTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiY2hlcm9rZWUuc2VydmljZSIKKworcHl0aG9uKCkgeworICAgIGlmICdtZXRhLXB5dGhvbjInIG5vdCBpbiBkLmdldFZhcignQkJGSUxFX0NPTExFQ1RJT05TJykuc3BsaXQoKToKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgnUmVxdWlyZXMgbWV0YS1weXRob24yIHRvIGJlIHByZXNlbnQuJykKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvaGlhd2F0aGEvaGlhd2F0aGFfMTAuMTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2hpYXdhdGhhL2hpYXdhdGhhXzEwLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkM2RmMTkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2hpYXdhdGhhL2hpYXdhdGhhXzEwLjEwLmJiCkBAIC0wLDAgKzEsNjQgQEAKK1NVTU1BUlkgPSAiTGlnaHR3ZWlnaHQgc2VjdXJlIHdlYiBzZXJ2ZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmhpYXdhdGhhLXdlYnNlcnZlci5vcmciCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCitERVBFTkRTID0gImxpYnhtbDIgbGlieHNsdCB2aXJ0dWFsL2NyeXB0IgorCitTRUNUSU9OID0gIm5ldCIKKworU1JDX1VSSSA9ICJodHRwOi8vaGlhd2F0aGEtd2Vic2VydmVyLm9yZy9maWxlcy8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vaGlhd2F0aGEtaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9oaWF3YXRoYS5zZXJ2aWNlICIKKworU1JDX1VSSVttZDVzdW1dID0gIjNiZjJjMTJjNzAzN2VjYzNkZmRiZWM3MmU3YTJmMDRmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI1ZTQ2ZjU3NTdmYTY0N2U3N2QyMWQyNGY3ZWVhOTEyZDU5ZjI2YTc1NTU4Y2JhNzgwYjQ1YzFjM2EzM2E0ZDkiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJoaWF3YXRoYSIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDcwIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiaGlhd2F0aGEuc2VydmljZSIKKworaW5oZXJpdCBjbWFrZSB1cGRhdGUtcmMuZCBzeXN0ZW1kCisKK0VYVFJBX09FQ01BS0UgPSAiIC1ERU5BQkxFX0lQVjY9T0ZGIFwKKyAgICAgICAgICAgICAgICAgIC1ERU5BQkxFX0NBQ0hFPU9GRiBcCisgICAgICAgICAgICAgICAgICAtREVOQUJMRV9ERUJVRz1PRkYgXAorICAgICAgICAgICAgICAgICAgLURFTkFCTEVfVExTPU9GRiBcCisgICAgICAgICAgICAgICAgICAtREVOQUJMRV9UT09MS0lUPU9GRiBcCisgICAgICAgICAgICAgICAgICAtREVOQUJMRV9DSFJPT1Q9T0ZGIFwKKyAgICAgICAgICAgICAgICAgIC1ERU5BQkxFX1hTTFQ9T04gXAorICAgICAgICAgICAgICAgICAgLURFTkFCTEVfVE9NQUhBV0s9T0ZGIFwKKyAgICAgICAgICAgICAgICAgIC1EQ01BS0VfSU5TVEFMTF9NQU5ESVI9JHttYW5kaXJ9IFwKKyAgICAgICAgICAgICAgICAgIC1EQ01BS0VfSU5TVEFMTF9CSU5ESVI9JHtiaW5kaXJ9IFwKKyAgICAgICAgICAgICAgICAgIC1EQ01BS0VfSU5TVEFMTF9TQklORElSPSR7c2JpbmRpcn0gXAorICAgICAgICAgICAgICAgICAgLURDTUFLRV9JTlNUQUxMX1NZU0NPTkZESVI9JHtzeXNjb25mZGlyfSBcCisgICAgICAgICAgICAgICAgICAtRENNQUtFX0lOU1RBTExfTElCRElSPSR7bGliZGlyfSBcCisgICAgICAgICAgICAgICAgICAtRENNQUtFX0lOU1RBTExfRlVMTF9MT0NBTFNUQVRFRElSPSR7bG9jYWxzdGF0ZWRpcn0iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgQ29weSBvdmVyIGluaXQgc2NyaXB0IGFuZCBzZWQgaW4gdGhlIGNvcnJlY3Qgc2JpbiBwYXRoCisgICAgc2VkIC1pICdzLHNlZF9zYmluX3BhdGgsJHtzYmluZGlyfSwnICR7V09SS0RJUn0vaGlhd2F0aGEtaW5pdAorICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2hpYXdhdGhhLWluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2hpYXdhdGhhCisKKyAgICAjIGNvbmZpZ3VyZSBwaHAtZmNnaSB0byBoYXZlIGEgd29ya2luZyBjb25maWd1cmF0aW9uCisgICAgIyBieSBkZWZhdWx0IGlmIHBocCBpcyBpbnN0YWxsZWQKKyAgICBlY2hvICJTZXJ2ZXIgPSAke2JpbmRpcn0vcGhwLWNnaSA7IDIgOyAxMjcuMC4wLjE6MjAwNSA7IG5vYm9keTpub2JvZHkgOyAke3N5c2NvbmZkaXJ9L3BocC9oaWF3YXRoYS1waHA1L3BocC5pbmkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2hpYXdhdGhhL3BocC1mY2dpLmNvbmYKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9oaWF3YXRoYS5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGZpCisKKyAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCit9CisKK0NPTkZGSUxFU18ke1BOfSA9ICIgXAorICAgICR7c3lzY29uZmRpcn0vaGlhd2F0aGEvY2dpLXdyYXBwZXIuY29uZiBcCisgICAgJHtzeXNjb25mZGlyfS9oaWF3YXRoYS9oaWF3YXRoYS5jb25mIFwKKyAgICAke3N5c2NvbmZkaXJ9L2hpYXdhdGhhL2luZGV4LnhzbHQgXAorICAgICR7c3lzY29uZmRpcn0vaGlhd2F0aGEvbWltZXR5cGUuY29uZiBcCisgICAgJHtzeXNjb25mZGlyfS9oaWF3YXRoYS9waHAtZmNnaS5jb25mIFwKKyIKKworRklMRVNfJHtQTn0tZGV2ID0gIiR7bGliZGlyfS9oaWF3YXRoYS8qJHtTT0xJQlNERVZ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9oaWF3YXRoYS9oaWF3YXRoYV8xMC43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9oaWF3YXRoYS9oaWF3YXRoYV8xMC43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNmM0NDliLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvaGlhd2F0aGEvaGlhd2F0aGFfMTAuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlnaHR3ZWlnaHQgc2VjdXJlIHdlYiBzZXJ2ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmhpYXdhdGhhLXdlYnNlcnZlci5vcmciCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi1ERVBFTkRTID0gImxpYnhtbDIgbGlieHNsdCB2aXJ0dWFsL2NyeXB0IgotCi1TRUNUSU9OID0gIm5ldCIKLQotU1JDX1VSSSA9ICJodHRwOi8vaGlhd2F0aGEtd2Vic2VydmVyLm9yZy9maWxlcy8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vaGlhd2F0aGEtaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9oaWF3YXRoYS5zZXJ2aWNlICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjU4MWFhNzFjODMxMTcyYmEwNjkxMGRlZGE3MTczMDJmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM2M2U5OWQ4NGE4NWRhZmJiNzRiY2MzMGIzZTMwMjg2MDUzZWMyYWJiYzdhZmUwOGNkODcxOTM2MTE3MzVmNzQiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJoaWF3YXRoYSIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDcwIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiaGlhd2F0aGEuc2VydmljZSIKLQotaW5oZXJpdCBjbWFrZSB1cGRhdGUtcmMuZCBzeXN0ZW1kCi0KLUVYVFJBX09FQ01BS0UgPSAiIC1ERU5BQkxFX0lQVjY9T0ZGIFwKLSAgICAgICAgICAgICAgICAgIC1ERU5BQkxFX0NBQ0hFPU9GRiBcCi0gICAgICAgICAgICAgICAgICAtREVOQUJMRV9ERUJVRz1PRkYgXAotICAgICAgICAgICAgICAgICAgLURFTkFCTEVfVExTPU9GRiBcCi0gICAgICAgICAgICAgICAgICAtREVOQUJMRV9UT09MS0lUPU9GRiBcCi0gICAgICAgICAgICAgICAgICAtREVOQUJMRV9DSFJPT1Q9T0ZGIFwKLSAgICAgICAgICAgICAgICAgIC1ERU5BQkxFX1hTTFQ9T04gXAotICAgICAgICAgICAgICAgICAgLURFTkFCTEVfVE9NQUhBV0s9T0ZGIFwKLSAgICAgICAgICAgICAgICAgIC1EQ01BS0VfSU5TVEFMTF9NQU5ESVI9JHttYW5kaXJ9IFwKLSAgICAgICAgICAgICAgICAgIC1EQ01BS0VfSU5TVEFMTF9CSU5ESVI9JHtiaW5kaXJ9IFwKLSAgICAgICAgICAgICAgICAgIC1EQ01BS0VfSU5TVEFMTF9TQklORElSPSR7c2JpbmRpcn0gXAotICAgICAgICAgICAgICAgICAgLURDTUFLRV9JTlNUQUxMX1NZU0NPTkZESVI9JHtzeXNjb25mZGlyfSBcCi0gICAgICAgICAgICAgICAgICAtRENNQUtFX0lOU1RBTExfTElCRElSPSR7bGliZGlyfSBcCi0gICAgICAgICAgICAgICAgICAtRENNQUtFX0lOU1RBTExfRlVMTF9MT0NBTFNUQVRFRElSPSR7bG9jYWxzdGF0ZWRpcn0iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgQ29weSBvdmVyIGluaXQgc2NyaXB0IGFuZCBzZWQgaW4gdGhlIGNvcnJlY3Qgc2JpbiBwYXRoCi0gICAgc2VkIC1pICdzLHNlZF9zYmluX3BhdGgsJHtzYmluZGlyfSwnICR7V09SS0RJUn0vaGlhd2F0aGEtaW5pdAotICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2hpYXdhdGhhLWluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2hpYXdhdGhhCi0KLSAgICAjIGNvbmZpZ3VyZSBwaHAtZmNnaSB0byBoYXZlIGEgd29ya2luZyBjb25maWd1cmF0aW9uCi0gICAgIyBieSBkZWZhdWx0IGlmIHBocCBpcyBpbnN0YWxsZWQKLSAgICBlY2hvICJTZXJ2ZXIgPSAke2JpbmRpcn0vcGhwLWNnaSA7IDIgOyAxMjcuMC4wLjE6MjAwNSA7IG5vYm9keTpub2JvZHkgOyAke3N5c2NvbmZkaXJ9L3BocC9oaWF3YXRoYS1waHA1L3BocC5pbmkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2hpYXdhdGhhL3BocC1mY2dpLmNvbmYKLQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9oaWF3YXRoYS5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGZpCi0KLSAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCi19Ci0KLUNPTkZGSUxFU18ke1BOfSA9ICIgXAotICAgICR7c3lzY29uZmRpcn0vaGlhd2F0aGEvY2dpLXdyYXBwZXIuY29uZiBcCi0gICAgJHtzeXNjb25mZGlyfS9oaWF3YXRoYS9oaWF3YXRoYS5jb25mIFwKLSAgICAke3N5c2NvbmZkaXJ9L2hpYXdhdGhhL2luZGV4LnhzbHQgXAotICAgICR7c3lzY29uZmRpcn0vaGlhd2F0aGEvbWltZXR5cGUuY29uZiBcCi0gICAgJHtzeXNjb25mZGlyfS9oaWF3YXRoYS9waHAtZmNnaS5jb25mIFwKLSIKLQotRklMRVNfJHtQTn0tZGV2ID0gIiR7bGliZGlyfS9oaWF3YXRoYS8qJHtTT0xJQlNERVZ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9maWxlcy9uZ2lueC1maXgtcGlkZmlsZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvZmlsZXMvbmdpbngtZml4LXBpZGZpbGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTAxNTlhNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvZmlsZXMvbmdpbngtZml4LXBpZGZpbGUucGF0Y2gKQEAgLTAsMCArMSw5OSBAQAorRGVzY3JpcHRpb246IEZpeCBOR0lOWCBwaWRmaWxlIGhhbmRsaW5nICAgCitBdXRob3I6IFRqIDx1YnVudHVAaWFtLnRqPiAgICAgICAgICAgICAgICAgIAorQnVnLVVidW50dTogaHR0cHM6Ly9idWdzLmxhdW5jaHBhZC5uZXQvdWJ1bnR1Lytzb3VyY2UvbmdpbngvK2J1Zy8xNTgxODY0CitMYXN0LVVwZGF0ZTogMjAxOS0wNi0wNCAKKy0tLQorVGhpcyBwYXRjaCBoZWFkZXIgZm9sbG93cyBERVAtMzogaHR0cDovL2RlcC5kZWJpYW4ubmV0L2RlcHMvZGVwMy8KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1RoaXMgcGF0Y2ggaXMgZnJvbSB1YnVudHUsIGh0dHBzOi8vZ2l0aHViLmNvbS9hcm90aC1hcnNvZnQvcGtnLW5naW54L2Jsb2IKKy9tYXN0ZXIvZGViaWFuL3BhdGNoZXMvbmdpbngtZml4LXBpZGZpbGUucGF0Y2gsIGZvciBmaXggYmVsb3cKK2Vycm9yIGluZm86CituZ2lueC5zZXJ2aWNlOiBmYWlsZWQgdG8gcGFyc2UgcGlkIGZyb20gZmlsZSAvcnVuL25naW54L25naW54LnBpZDoKK2ludmFsaWQgYXJndW1lbnQKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL25naW54LmMgYi9zcmMvY29yZS9uZ2lueC5jCitpbmRleCA5ZmNiMGViMi4uMDgzZWJhMWQgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9uZ2lueC5jCisrKysgYi9zcmMvY29yZS9uZ2lueC5jCitAQCAtMzM4LDE0ICszMzgsMjEgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqY29uc3QgKmFyZ3YpCisgICAgICAgICBuZ3hfcHJvY2VzcyA9IE5HWF9QUk9DRVNTX01BU1RFUjsKKyAgICAgfQorIAorKyAgICAvKiB0ZWxsLXRhbGUgdG8gZGV0ZWN0IGlmIHRoaXMgaXMgcGFyZW50IG9yIGNoaWxkIHByb2Nlc3MgKi8KKysgICAgbmd4X2ludF90IGNoaWxkX3BpZCA9IE5HWF9CVVNZOworKworICNpZiAhKE5HWF9XSU4zMikKKyAKKyAgICAgaWYgKG5neF9pbml0X3NpZ25hbHMoY3ljbGUtPmxvZykgIT0gTkdYX09LKSB7CisgICAgICAgICByZXR1cm4gMTsKKyAgICAgfQorIAorKyAgICAvKiB0ZWxsLXRhbGUgdGhhdCB0aGlzIGNvZGUgaGFzIGJlZW4gZXhlY3V0ZWQgKi8KKysgICAgY2hpbGRfcGlkLS07CisrCisgICAgIGlmICghbmd4X2luaGVyaXRlZCAmJiBjY2YtPmRhZW1vbikgeworLSAgICAgICAgaWYgKG5neF9kYWVtb24oY3ljbGUtPmxvZykgIT0gTkdYX09LKSB7CisrICAgICAgICBjaGlsZF9waWQgPSBuZ3hfZGFlbW9uKGN5Y2xlLT5sb2cpOworKyAgICAgICAgaWYgKGNoaWxkX3BpZCA9PSBOR1hfRVJST1IpIHsKKyAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgIH0KKyAKK0BAIC0zNTgsOCArMzY1LDE5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2KQorIAorICNlbmRpZgorIAorLSAgICBpZiAobmd4X2NyZWF0ZV9waWRmaWxlKCZjY2YtPnBpZCwgY3ljbGUtPmxvZykgIT0gTkdYX09LKSB7CistICAgICAgICByZXR1cm4gMTsKKysgICAgLyogSWYgbmd4X2RhZW1vbigpIHJldHVybmVkIHRoZSBjaGlsZCdzIFBJRCBpbiB0aGUgcGFyZW50IHByb2Nlc3MKKysgICAgICogYWZ0ZXIgdGhlIGZvcmsoKSBzZXQgbmd4X3BpZCB0byB0aGUgY2hpbGRfcGlkLCB3aGljaCBnZXRzCisrICAgICAqIHdyaXR0ZW4gdG8gdGhlIFBJRCBmaWxlLCB0aGVuIGV4aXQuCisrICAgICAqIEZvciBOR1hfV0lOMzIgYWx3YXlzIHdyaXRlIHRoZSBQSUQgZmlsZQorKyAgICAgKiBGb3Igb3RoZXJzLCBvbmx5IHdyaXRlIGl0IGZyb20gdGhlIHBhcmVudCBwcm9jZXNzICovCisrICAgIGlmIChjaGlsZF9waWQgPCBOR1hfT0sgfHwgY2hpbGRfcGlkID4gTkdYX09LKSB7CisrCW5neF9waWQgPSBjaGlsZF9waWQgPiBOR1hfT0sgPyBjaGlsZF9waWQgOiBuZ3hfcGlkOworKyAgICAgICAgaWYgKG5neF9jcmVhdGVfcGlkZmlsZSgmY2NmLT5waWQsIGN5Y2xlLT5sb2cpICE9IE5HWF9PSykgeworKyAgICAgICAgICAgIHJldHVybiAxOworKwl9CisrICAgIH0KKysgICAgaWYgKGNoaWxkX3BpZCA+IE5HWF9PSykgeworKyAgICAgICAgZXhpdCgwKTsKKyAgICAgfQorIAorICAgICBpZiAobmd4X2xvZ19yZWRpcmVjdF9zdGRlcnIoY3ljbGUpICE9IE5HWF9PSykgeworZGlmZiAtLWdpdCBhL3NyYy9vcy91bml4L25neF9kYWVtb24uYyBiL3NyYy9vcy91bml4L25neF9kYWVtb24uYworaW5kZXggMzg1YzQ5YjYuLjM3MTk4NTRjIDEwMDY0NAorLS0tIGEvc3JjL29zL3VuaXgvbmd4X2RhZW1vbi5jCisrKysgYi9zcmMvb3MvdW5peC9uZ3hfZGFlbW9uLmMKK0BAIC03LDE0ICs3LDE3IEBACisgCisgI2luY2x1ZGUgPG5neF9jb25maWcuaD4KKyAjaW5jbHVkZSA8bmd4X2NvcmUuaD4KKysjaW5jbHVkZSA8dW5pc3RkLmg+CisgCisgCisgbmd4X2ludF90Cisgbmd4X2RhZW1vbihuZ3hfbG9nX3QgKmxvZykKKyB7CisgICAgIGludCAgZmQ7CisrICAgIC8qIHJldGFpbiB0aGUgcmV0dXJuIHZhbHVlIGZvciBwYXNzaW5nIGJhY2sgdG8gY2FsbGVyICovCisrICAgIHBpZF90IHBpZF9jaGlsZCA9IGZvcmsoKTsKKyAKKy0gICAgc3dpdGNoIChmb3JrKCkpIHsKKysgICAgc3dpdGNoIChwaWRfY2hpbGQpIHsKKyAgICAgY2FzZSAtMToKKyAgICAgICAgIG5neF9sb2dfZXJyb3IoTkdYX0xPR19FTUVSRywgbG9nLCBuZ3hfZXJybm8sICJmb3JrKCkgZmFpbGVkIik7CisgICAgICAgICByZXR1cm4gTkdYX0VSUk9SOworQEAgLTIzLDcgKzI2LDggQEAgbmd4X2RhZW1vbihuZ3hfbG9nX3QgKmxvZykKKyAgICAgICAgIGJyZWFrOworIAorICAgICBkZWZhdWx0OgorLSAgICAgICAgZXhpdCgwKTsKKysgICAgICAgIC8qIGxldCBjYWxsZXIgZG8gdGhlIGV4aXQoKSAqLworKyAgICAgICAgcmV0dXJuIHBpZF9jaGlsZDsKKyAgICAgfQorIAorICAgICBuZ3hfcGFyZW50ID0gbmd4X3BpZDsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnguaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueC5pbmMKaW5kZXggMGQyMjlmZi4uMjgyNGM2NiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueC5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueC5pbmMKQEAgLTIxLDYgKzIxLDcgQEAKICAgICBmaWxlOi8vbmdpbnguaW5pdCBcCiAgICAgZmlsZTovL25naW54LXZvbGF0aWxlLmNvbmYgXAogICAgIGZpbGU6Ly9uZ2lueC5zZXJ2aWNlIFwKKyAgICBmaWxlOi8vbmdpbngtZml4LXBpZGZpbGUucGF0Y2ggXAogIgogCiBpbmhlcml0IHNpdGVpbmZvIHVwZGF0ZS1yYy5kIHVzZXJhZGQgc3lzdGVtZApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjE2LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54XzEuMTYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FkMGRiNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54XzEuMTYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgbmdpbnguaW5jCi0KLSMgMS4xNi54IGJyYW5jaCBpcyB0aGUgY3VycmVudCBzdGFibGUgYnJhbmNoLCB0aGUgcmVjb21tZW5kZWQgZGVmYXVsdAotIyAxLjE3LnggaXMgdGhlIGN1cnJlbnQgbWFpbmxpbmUgYnJhbmNoZXMgY29udGFpbmluZyBhbGwgbmV3IGZlYXR1cmVzCi1ERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTUyZTM4NGFhYWM4NjhiNzU1YjkzYWQ1NTM1ZTJkMDc1IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTcyMDcyODNmMzBjZDkwY2RiYTYzOGMzZWEzMDMyM2EiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGZkMzc2YmFkNzg3OTdlN2YxODA5NGEwMGYwZjEwODgyNTkzMjY0MzZiNTM3ZWI1YWY2OWIwMWJlMmNhMTM0NSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xNi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjE2LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA3NjQyNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xNi4xLmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBuZ2lueC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTJlMzg0YWFhYzg2OGI3NTViOTNhZDU1MzVlMmQwNzUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0NWE4MGY3NTMzNmM5ODBkMjQwOTg3YmFkYzNkY2Y2MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMTFjMmE2ZGQxZDM1MTU3MzZmMDMyNDg1Nzk1N2RiMmRlOThiZTg2MjQ2MWI1YTU0MmEzYWM2MTg4ZGJlMzJiIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjE3LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54XzEuMTcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc3NGE4Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54XzEuMTcuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotcmVxdWlyZSBuZ2lueC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTJlMzg0YWFhYzg2OGI3NTViOTNhZDU1MzVlMmQwNzUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1Njc2N2ZkNjIzMDI1MDgyOTViMzFhZGM0OGI5OWE1OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMjFiNWQwNmNkNTNlODZhZmI5NGYwYjM2NzhlMGFiYjBjMGYwMTE0MzM0NzFmYTNkODk1Y2VmYTY1YWUwZmFiIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjE3LjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54XzEuMTcuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDJhNWVkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjE3LjguYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSBuZ2lueC5pbmMKKworIyAxLjE2LnggYnJhbmNoIGlzIHRoZSBjdXJyZW50IHN0YWJsZSBicmFuY2gsIHRoZSByZWNvbW1lbmRlZCBkZWZhdWx0CisjIDEuMTcueCBpcyB0aGUgY3VycmVudCBtYWlubGluZSBicmFuY2hlcyBjb250YWluaW5nIGFsbCBuZXcgZmVhdHVyZXMKK0RFRkFVTFRfUFJFRkVSRU5DRSA9ICItMSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTJlMzg0YWFhYzg2OGI3NTViOTNhZDU1MzVlMmQwNzUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyOWNkODYxYTEzYWFlNjlhMDU4Y2JhYmFhZTg2MTc3YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5N2QyM2VjZjZkNTE1MGIzMGUyODRiNDBlOGE2ZjdlM2JiNWJlNmI2MDFlMzczYTRkMDEzNzY4ZDVhMjU5NjViIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9ub3N0cm9tby9ub3N0cm9tb18xLjkuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbm9zdHJvbW8vbm9zdHJvbW9fMS45LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YjFmZjAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9ub3N0cm9tby9ub3N0cm9tb18xLjkuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBzaW1wbGUsIGZhc3QgYW5kIHNlY3VyZSBIVFRQIHNlcnZlciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubmF6Z3VsLmNoL2Rldl9ub3N0cm9tby5odG1sIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvbmh0dHBkL21haW4uYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE0O21kNT0wYmIzNzExYTg2N2I5NzA0ZDNiZmFiY2Y1NTI5YjY0ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm5hemd1bC5jaC9kZXYvJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUdOVW1ha2VmaWxlLWFkZC1wb3NzaWJpbGl0eS10by1vdmVycmlkZS12YXJpYWJsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbmh0dHBkLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzIFwKLSAgICAgICAgICAgZmlsZTovL3RtcGZpbGVzLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vbm9zdHJvbW8gXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjdhYTI0MWQ3OGZmNzg5MjAzNTRjM2UwM2E1MDI2ZWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTQxNDk0ZWNmZWFmZWM1OGMwODc2Y2NjOTBjYzIzYjA2ZTAxNDRmNmY0MjAyOWFmNDRjN2NkYjFmNDExZThlYiIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLURFUEVORFMgPSAib3BlbnNzbCBncm9mZi1uYXRpdmUgYmFzZS1wYXNzd2QgdmlydHVhbC9jcnlwdCIKLQotaW5oZXJpdCB1cGRhdGUtcmMuZAotCi1JTklUU0NSSVBUX05BTUUgPSAibm9zdHJvbW8iCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA3MCIKLQotZG9fY29tcGlsZSgpIHsKLSAgICBvZV9ydW5tYWtlCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgc3JjL25odHRwZC9uaHR0cGQgJHtEfS8ke3NiaW5kaXJ9L25odHRwZAotICAgIGluc3RhbGwgLW0gMDc1NSBzcmMvdG9vbHMvY3J5cHQgJHtEfS8ke3NiaW5kaXJ9L2NyeXB0Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7bWFuZGlyfS9tYW44Ci0gICAgaW5zdGFsbCAtbSAwNDQ0IHNyYy9uaHR0cGQvbmh0dHBkLjggJHtEfS8ke21hbmRpcn0vbWFuOC9uaHR0cGQuOAotICAgIGluc3RhbGwgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbm9zdHJvbW8vY29uZgotICAgIGluc3RhbGwgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbm9zdHJvbW8vaHRkb2NzL2NnaS1iaW4KLSAgICBpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L25vc3Ryb21vL2ljb25zCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1tIDA2NDQgY29uZi9taW1lcyAke0R9JHtsb2NhbHN0YXRlZGlyfS9ub3N0cm9tby9jb25mL21pbWVzCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmh0dHBkLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9ub3N0cm9tbyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvbm9zdHJvbW8KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS90bXBmaWxlcy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvbm9zdHJvbW8uY29uZgotICAgIGZpCi0gICAgaW5zdGFsbCAtbSAwNjQ0IGh0ZG9jcy9pbmRleC5odG1sICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L25vc3Ryb21vL2h0ZG9jcy9pbmRleC5odG1sCi0gICAgaW5zdGFsbCAtbSAwNjQ0IGh0ZG9jcy9ub3N0cm9tby5naWYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbm9zdHJvbW8vaHRkb2NzL25vc3Ryb21vLmdpZgotICAgIGluc3RhbGwgLW0gMDY0NCBpY29ucy9kaXIuZ2lmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L25vc3Ryb21vL2ljb25zL2Rpci5naWYKLSAgICBpbnN0YWxsIC1tIDA2NDQgaWNvbnMvZmlsZS5naWYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbm9zdHJvbW8vaWNvbnMvZmlsZS5naWYKLSAgICBjaG93biAtUiB3d3ctZGF0YTp3d3ctZGF0YSAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbm9zdHJvbW8KLX0KLQotQ09ORkZJTEVTXyR7UE59ICs9ICIvdmFyL25vc3Ryb21vL2NvbmYvbWltZXMgJHtzeXNjb25mZGlyfS9uaHR0cGQuY29uZiIKLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLSAgICBpZiBbIC16ICIkRCIgXTsgdGhlbgotICAgICAgICBpZiBbIC1lIC9zeXMvZnMvY2dyb3VwL3N5c3RlbWQgXTsgdGhlbgotICAgICAgICAgICAgc3lzdGVtZC10bXBmaWxlcyAtLWNyZWF0ZSAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvbm9zdHJvbW8uY29uZgotICAgICAgICBlbGlmIFsgLWUgJHtzeXNjb25mZGlyfS9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggXTsgdGhlbgotICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggdXBkYXRlCi0gICAgICAgIGZpCi0gICAgZmkKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbm9zdHJvbW8vbm9zdHJvbW9fMS45LjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25vc3Ryb21vL25vc3Ryb21vXzEuOS43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxM2VmNzQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25vc3Ryb21vL25vc3Ryb21vXzEuOS43LmJiCkBAIC0wLDAgKzEsNjQgQEAKK1NVTU1BUlkgPSAiQSBzaW1wbGUsIGZhc3QgYW5kIHNlY3VyZSBIVFRQIHNlcnZlciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubmF6Z3VsLmNoL2Rldl9ub3N0cm9tby5odG1sIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvbmh0dHBkL21haW4uYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE0O21kNT0wYmIzNzExYTg2N2I5NzA0ZDNiZmFiY2Y1NTI5YjY0ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm5hemd1bC5jaC9kZXYvJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUdOVW1ha2VmaWxlLWFkZC1wb3NzaWJpbGl0eS10by1vdmVycmlkZS12YXJpYWJsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbmh0dHBkLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzIFwKKyAgICAgICAgICAgZmlsZTovL3RtcGZpbGVzLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vbm9zdHJvbW8gXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNjE4OTcxNDg0NWIzYWQ1ZDBmYzQ5MGY4Y2Y0OGRhY2YiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzNjNjM1ZjMxN2ZiNDQxZTEwZDUyOTdiYjQyMThhZTBlYTYyYzQ4ZjJmYzMwMjljMDhmNWQyMTY3YzZjZGZjYSIKKworVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK0RFUEVORFMgPSAib3BlbnNzbCBncm9mZi1uYXRpdmUgYmFzZS1wYXNzd2QgdmlydHVhbC9jcnlwdCIKKworaW5oZXJpdCB1cGRhdGUtcmMuZAorCitJTklUU0NSSVBUX05BTUUgPSAibm9zdHJvbW8iCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA3MCIKKworZG9fY29tcGlsZSgpIHsKKyAgICBvZV9ydW5tYWtlCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9LyR7c2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgc3JjL25odHRwZC9uaHR0cGQgJHtEfS8ke3NiaW5kaXJ9L25odHRwZAorICAgIGluc3RhbGwgLW0gMDc1NSBzcmMvdG9vbHMvY3J5cHQgJHtEfS8ke3NiaW5kaXJ9L2NyeXB0CisgICAgaW5zdGFsbCAtZCAke0R9LyR7bWFuZGlyfS9tYW44CisgICAgaW5zdGFsbCAtbSAwNDQ0IHNyYy9uaHR0cGQvbmh0dHBkLjggJHtEfS8ke21hbmRpcn0vbWFuOC9uaHR0cGQuOAorICAgIGluc3RhbGwgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbm9zdHJvbW8vY29uZgorICAgIGluc3RhbGwgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbm9zdHJvbW8vaHRkb2NzL2NnaS1iaW4KKyAgICBpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L25vc3Ryb21vL2ljb25zCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDA2NDQgY29uZi9taW1lcyAke0R9JHtsb2NhbHN0YXRlZGlyfS9ub3N0cm9tby9jb25mL21pbWVzCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmh0dHBkLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9ub3N0cm9tbyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvbm9zdHJvbW8KKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS90bXBmaWxlcy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvbm9zdHJvbW8uY29uZgorICAgIGZpCisgICAgaW5zdGFsbCAtbSAwNjQ0IGh0ZG9jcy9pbmRleC5odG1sICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L25vc3Ryb21vL2h0ZG9jcy9pbmRleC5odG1sCisgICAgaW5zdGFsbCAtbSAwNjQ0IGh0ZG9jcy9ub3N0cm9tby5naWYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbm9zdHJvbW8vaHRkb2NzL25vc3Ryb21vLmdpZgorICAgIGluc3RhbGwgLW0gMDY0NCBpY29ucy9kaXIuZ2lmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L25vc3Ryb21vL2ljb25zL2Rpci5naWYKKyAgICBpbnN0YWxsIC1tIDA2NDQgaWNvbnMvZmlsZS5naWYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbm9zdHJvbW8vaWNvbnMvZmlsZS5naWYKKyAgICBjaG93biAtUiB3d3ctZGF0YTp3d3ctZGF0YSAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbm9zdHJvbW8KK30KKworQ09ORkZJTEVTXyR7UE59ICs9ICIvdmFyL25vc3Ryb21vL2NvbmYvbWltZXMgJHtzeXNjb25mZGlyfS9uaHR0cGQuY29uZiIKKworcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKyAgICBpZiBbIC16ICIkRCIgXTsgdGhlbgorICAgICAgICBpZiBbIC1lIC9zeXMvZnMvY2dyb3VwL3N5c3RlbWQgXTsgdGhlbgorICAgICAgICAgICAgc3lzdGVtZC10bXBmaWxlcyAtLWNyZWF0ZSAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvbm9zdHJvbW8uY29uZgorICAgICAgICBlbGlmIFsgLWUgJHtzeXNjb25mZGlyfS9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggXTsgdGhlbgorICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggdXBkYXRlCisgICAgICAgIGZpCisgICAgZmkKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3BocG15YWRtaW4vcGhwbXlhZG1pbl80LjkuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3BocG15YWRtaW4vcGhwbXlhZG1pbl80LjkuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ5NDNkZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXBocC9waHBteWFkbWluL3BocG15YWRtaW5fNC45LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1TVU1NQVJZID0gIldlYi1iYXNlZCBNeVNRTCBhZG1pbmlzdHJhdGlvbiBpbnRlcmZhY2UiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnBocG15YWRtaW4ubmV0IgotIyBNYWluIGNvZGUgaXMgR1BMdjIsIHZlbmRvci90ZWNuaWNrY29tL3RjcGRmIGlzIHVuZGVyIExHUEx2MywganMvanF1ZXJ5IGlzIHVuZGVyIE1JVAotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MyAmIE1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3ZlbmRvci90ZWNuaWNrY29tL3RjcGRmL0xJQ0VOU0UuVFhUO21kNT1kZDY0NzBiYmNkMzQzNmNhMzE3ZjgyZDM0YWJhZjY4OCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9qcy92ZW5kb3IvanF1ZXJ5L01JVC1MSUNFTlNFLnR4dDttZDU9ZTQzYWE0MzdhNmExYmE0MjE2NTNiZDUwMzQzMzNiZjkgXAotIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucGhwbXlhZG1pbi5uZXQvcGhwTXlBZG1pbi8ke1BWfS9waHBNeUFkbWluLSR7UFZ9LWFsbC1sYW5ndWFnZXMudGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2FwYWNoZS5jb25mIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjViNWQxZDg0YTA1NjI0NDMwYWM2NTllMzZhZjAwZjRlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNiYzNlMzdmZWZiZGZjYWYxMmZkNTlkNmQ3ZmRiZjExZmZjZmZlM2UyMTExNTViZjViODIyYjU0YTNjMjA0M2UiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3d3dy5waHBteWFkbWluLm5ldC9kb3dubG9hZHMvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicGhwTXlBZG1pbi0oP1A8cHZlcj5cZCsoXC5cZCspKyktYWxsLWxhbmd1YWdlcy50YXIueHoiCi0KLVMgPSAiJHtXT1JLRElSfS9waHBNeUFkbWluLSR7UFZ9LWFsbC1sYW5ndWFnZXMiCi0KLWluaGVyaXQgYWxsYXJjaAotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vJHtCUE59Ci0gICAgY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgKiAke0R9JHtkYXRhZGlyfS8ke0JQTn0KLSAgICBjaG93biAtUiByb290OnJvb3QgJHtEfSR7ZGF0YWRpcn0vJHtCUE59Ci0gICAgIyBEb24ndCBpbnN0YWxsIHBhdGNoZXMgdG8gdGFyZ2V0Ci0gICAgcm0gLXJmICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS9wYXRjaGVzCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYXBhY2hlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vYXBhY2hlMi9jb25mLmQvcGhwbXlhZG1pbi5jb25mCi0KLSAgICAjIFJlbW92ZSBhIGZldyBzY3JpcHRzIHRoYXQgZXhwbGljaXRseSByZXF1aXJlIGJhc2ggKCEpCi0gICAgcm0gLWYgJHtEfSR7ZGF0YWRpcn0vcGhwbXlhZG1pbi9saWJyYXJpZXMvdHJhbnNmb3JtYXRpb25zLyouc2gKLX0KLQotRklMRVNfJHtQTn0gPSAiJHtkYXRhZGlyfS8ke0JQTn0gXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9hcGFjaGUyL2NvbmYuZCIKLQotUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcGhwLWNsaSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3BocG15YWRtaW4vcGhwbXlhZG1pbl81LjAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3BocG15YWRtaW4vcGhwbXlhZG1pbl81LjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzg3OGM1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1waHAvcGhwbXlhZG1pbi9waHBteWFkbWluXzUuMC4yLmJiCkBAIC0wLDAgKzEsNDEgQEAKK1NVTU1BUlkgPSAiV2ViLWJhc2VkIE15U1FMIGFkbWluaXN0cmF0aW9uIGludGVyZmFjZSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucGhwbXlhZG1pbi5uZXQiCisjIE1haW4gY29kZSBpcyBHUEx2MiwgdmVuZG9yL3RlY25pY2tjb20vdGNwZGYgaXMgdW5kZXIgTEdQTHYzLCBqcy9qcXVlcnkgaXMgdW5kZXIgTUlUCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYzICYgTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdmVuZG9yL3RlY25pY2tjb20vdGNwZGYvTElDRU5TRS5UWFQ7bWQ1PWRkNjQ3MGJiY2QzNDM2Y2EzMTdmODJkMzRhYmFmNjg4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2pzL3ZlbmRvci9qcXVlcnkvTUlULUxJQ0VOU0UudHh0O21kNT1lNDNhYTQzN2E2YTFiYTQyMTY1M2JkNTAzNDMzM2JmOSBcCisiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5waHBteWFkbWluLm5ldC9waHBNeUFkbWluLyR7UFZ9L3BocE15QWRtaW4tJHtQVn0tYWxsLWxhbmd1YWdlcy50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vYXBhY2hlLmNvbmYgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDQyZWI4NTkxMmQzYTJhZDJmYzBiOWQ2YzIxYjE1MjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2JjYzc4ZDE0OTkzMDhkOTMyOTk1MGZjYmEyZWJhYTg0YzU1OWE5MzRmZTU0ZWZjMDI3ZDQ1OWQ4ZTQxNjFjOCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd3d3LnBocG15YWRtaW4ubmV0L2Rvd25sb2Fkcy8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJwaHBNeUFkbWluLSg/UDxwdmVyPlxkKyhcLlxkKykrKS1hbGwtbGFuZ3VhZ2VzLnRhci54eiIKKworUyA9ICIke1dPUktESVJ9L3BocE15QWRtaW4tJHtQVn0tYWxsLWxhbmd1YWdlcyIKKworaW5oZXJpdCBhbGxhcmNoCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS8ke0JQTn0KKyAgICBjcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAqICR7RH0ke2RhdGFkaXJ9LyR7QlBOfQorICAgIGNob3duIC1SIHJvb3Q6cm9vdCAke0R9JHtkYXRhZGlyfS8ke0JQTn0KKyAgICAjIERvbid0IGluc3RhbGwgcGF0Y2hlcyB0byB0YXJnZXQKKyAgICBybSAtcmYgJHtEfSR7ZGF0YWRpcn0vJHtCUE59L3BhdGNoZXMKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYXBhY2hlMi9jb25mLmQKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9hcGFjaGUuY29uZiAke0R9JHtzeXNjb25mZGlyfS9hcGFjaGUyL2NvbmYuZC9waHBteWFkbWluLmNvbmYKKworICAgICMgUmVtb3ZlIGEgZmV3IHNjcmlwdHMgdGhhdCBleHBsaWNpdGx5IHJlcXVpcmUgYmFzaCAoISkKKyAgICBybSAtZiAke0R9JHtkYXRhZGlyfS9waHBteWFkbWluL2xpYnJhcmllcy90cmFuc2Zvcm1hdGlvbnMvKi5zaAorfQorCitGSUxFU18ke1BOfSA9ICIke2RhdGFkaXJ9LyR7QlBOfSBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kIgorCitSREVQRU5EU18ke1BOfSArPSAiYmFzaCBwaHAtY2xpIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1waHAveGRlYnVnL3hkZWJ1Z18yLjcuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3hkZWJ1Zy94ZGVidWdfMi43LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyZDUyYTYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1waHAveGRlYnVnL3hkZWJ1Z18yLjcuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiRGVidWdnaW5nIGFuZCBwcm9maWxpbmcgZXh0ZW5zaW9uIGZvciBQSFAiCi1MSUNFTlNFID0gIlhkZWJ1ZyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTkyZDk0YTMzMGQzNGVlNmVkYzI2Mzg0NTA3MzZmMTE5IgotCi1ERVBFTkRTID0gInBocCByZTJjLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8veGRlYnVnLm9yZy9maWxlcy94ZGVidWctJHtQVn0udGd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWQxYThjYTMxMDFkZjkzOTM4ZDI4MzkzM2YyNTY0OTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjBmMzI4M2FhMTg1YzIzZmNkMDEzN2MzYWFhNTg1NTRkMzMwOTk1ZWY3YTM0MjFlOTgzZThkMDE4YjA1YTRhNiIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAieGRlYnVnLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGd6IgotCi1pbmhlcml0IGF1dG90b29scwotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLXhkZWJ1ZyAtd2l0aC1waHAtY29uZmlnPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L3BocC1jb25maWciCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICBjZCAke1N9Ci0gICAgJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vcGhwaXplCi0gICAgY2QgJHtCfQotCi0gICAgIyBSdW5uaW5nIGF1dG9yZWNvbmYgYXMgYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZSB3b3VsZCBkbyBoZXJlCi0gICAgIyBicmVha3MgdGhlIGxpYnRvb2wgY29uZmlndXJhdGlvbiByZXN1bHRpbmcgaW4gYSBmYWlsdXJlIGxhdGVyCi0gICAgIyBpbiBkb19jb21waWxlLiBJdCdzIHBvc3NpYmxlIHRoaXMgbWF5IGJlIGZpeGFibGUsIGhvd2V2ZXIgdGhlCi0gICAgIyBlYXNpZXN0IGNvdXJzZSBvZiBhY3Rpb24gZm9yIHRoZSBtb21lbnQgaXMgdG8gYXZvaWQgZG9pbmcgdGhhdC4KLSAgICBvZV9ydW5jb25mCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIElOU1RBTExfUk9PVD0ke0R9Ci19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vcGhwKi9leHRlbnNpb25zLyovKi5zbyIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3BocCovZXh0ZW5zaW9ucy8qLy5kZWJ1ZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3hkZWJ1Zy94ZGVidWdfMi45LjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXBocC94ZGVidWcveGRlYnVnXzIuOS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZDRkYTYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXBocC94ZGVidWcveGRlYnVnXzIuOS41LmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiRGVidWdnaW5nIGFuZCBwcm9maWxpbmcgZXh0ZW5zaW9uIGZvciBQSFAiCitMSUNFTlNFID0gIlhkZWJ1ZyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTkyZDk0YTMzMGQzNGVlNmVkYzI2Mzg0NTA3MzZmMTE5IgorCitERVBFTkRTID0gInBocCByZTJjLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8veGRlYnVnLm9yZy9maWxlcy94ZGVidWctJHtQVn0udGd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzA0YmUxYmYyMjViNzY4YmY2MjdkYzkyZTVhMWY5ZGYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzc1YjE3MDUxMDk2MTFiOTk2ZDZhNzEzZmUxNDExN2E2Nzg0NmUxNTdlYjdkYmYzNDliYzBiMDU1ZTg2MWExMCIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAieGRlYnVnLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGd6IgorCitpbmhlcml0IGF1dG90b29scworCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLXhkZWJ1ZyAtd2l0aC1waHAtY29uZmlnPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L3BocC1jb25maWciCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICBjZCAke1N9CisgICAgJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vcGhwaXplCisgICAgY2QgJHtCfQorCisgICAgIyBSdW5uaW5nIGF1dG9yZWNvbmYgYXMgYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZSB3b3VsZCBkbyBoZXJlCisgICAgIyBicmVha3MgdGhlIGxpYnRvb2wgY29uZmlndXJhdGlvbiByZXN1bHRpbmcgaW4gYSBmYWlsdXJlIGxhdGVyCisgICAgIyBpbiBkb19jb21waWxlLiBJdCdzIHBvc3NpYmxlIHRoaXMgbWF5IGJlIGZpeGFibGUsIGhvd2V2ZXIgdGhlCisgICAgIyBlYXNpZXN0IGNvdXJzZSBvZiBhY3Rpb24gZm9yIHRoZSBtb21lbnQgaXMgdG8gYXZvaWQgZG9pbmcgdGhhdC4KKyAgICBvZV9ydW5jb25mCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSBpbnN0YWxsIElOU1RBTExfUk9PVD0ke0R9Cit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vcGhwKi9leHRlbnNpb25zLyovKi5zbyIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3BocCovZXh0ZW5zaW9ucy8qLy5kZWJ1ZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vbmV0ZGF0YS9uZXRkYXRhX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vbmV0ZGF0YS9uZXRkYXRhX2dpdC5iYgppbmRleCBkMTc5ZTg0Li5kNmE1Y2UwIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL25ldGRhdGEvbmV0ZGF0YV9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi9uZXRkYXRhL25ldGRhdGFfZ2l0LmJiCkBAIC0yNiw2ICsyNiw4IEBACiBpbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMtYnJva2Vuc2VwIHVzZXJhZGQgc3lzdGVtZAogCiBMSUJTX3Rvb2xjaGFpbi1jbGFuZ194ODYgPSAiLWxhdG9taWMiCitMSUJTX3Jpc2N2NjQgPSAiLWxhdG9taWMiCitMSUJTX3Jpc2N2MzIgPSAiLWxhdG9taWMiCiBleHBvcnQgTElCUwogCiAjc3lzdGVtZApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL2NvbmYvbGF5ZXIuY29uZiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9jb25mL2xheWVyLmNvbmYKaW5kZXggMDcwZWE2YS4uMTk5YzY5ZSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL2NvbmYvbGF5ZXIuY29uZgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvY29uZi9sYXllci5jb25mCkBAIC0xOSw0ICsxOSw0IEBACiBMQVlFUkRFUEVORFNfeGZjZS1sYXllciArPSAibWV0YS1weXRob24iCiBMQVlFUkRFUEVORFNfeGZjZS1sYXllciArPSAibmV0d29ya2luZy1sYXllciIKIAotTEFZRVJTRVJJRVNfQ09NUEFUX3hmY2UtbGF5ZXIgPSAidGh1ZCB3YXJyaW9yIHpldXMiCitMQVlFUlNFUklFU19DT01QQVRfeGZjZS1sYXllciA9ICJ0aHVkIHdhcnJpb3IgemV1cyBkdW5mZWxsIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9jYXRmaXNoL2NhdGZpc2hfMS40LjExLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9jYXRmaXNoL2NhdGZpc2hfMS40LjExLmJiCmluZGV4IDQxNTJlMTUuLjI3YjVkNWUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvY2F0ZmlzaC9jYXRmaXNoXzEuNC4xMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL2NhdGZpc2gvY2F0ZmlzaF8xLjQuMTEuYmIKQEAgLTMsNyArMyw3IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDMyNWFmZDM5NmZlYmNiNjU5YzM2YjQ5NTMzMTM1ZDQiCiAKLWluaGVyaXQgeGZjZS1hcHAgZGlzdHV0aWxzMyBndGstaWNvbi1jYWNoZQoraW5oZXJpdCB4ZmNlLWFwcCBkaXN0dXRpbHMzIGd0ay1pY29uLWNhY2hlIG1pbWUteGRnCiAKIERFUEVORFMgKz0gInB5dGhvbjMtZGlzdHV0aWxzLWV4dHJhLW5hdGl2ZSIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9naWdvbG8vZ2lnb2xvXzAuNS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9naWdvbG8vZ2lnb2xvXzAuNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDQ2MjE0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvZ2lnb2xvL2dpZ29sb18wLjUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLVNVTU1BUlkgPSAiR2lnb2xvIGlzIGEgZnJvbnRlbmQgdG8gZWFzaWx5IG1hbmFnZSBjb25uZWN0aW9ucyB0byByZW1vdGUgZmlsZXN5c3RlbXMgdXNpbmcgR0lPL0dWZnMiCi1TRUNUSU9OID0gIngxMS9hcHBsaWNhdGlvbiIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotREVQRU5EUyA9ICJndGsrMyBpbnRsdG9vbC1uYXRpdmUgeGZjZTQtZGV2LXRvb2xzLW5hdGl2ZSIKLQotaW5oZXJpdCB4ZmNlLWFwcAotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjczMTExZjVkN2MyNjg5OGU1ZGRlYTdiOTdkNWRmZTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTdhMzAxYWZmMDEyYTE0M2QwYjk5ZTdlY2JiMjcwODRkMzg3MmFhMjAzYTc0NzQ1ZTgzNTdhYWIzYTE4ODBkYyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvZ2lnb2xvL2dpZ29sb18wLjUuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvZ2lnb2xvL2dpZ29sb18wLjUuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjMzZmUwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9naWdvbG8vZ2lnb2xvXzAuNS4xLmJiCkBAIC0wLDAgKzEsMTEgQEAKK1NVTU1BUlkgPSAiR2lnb2xvIGlzIGEgZnJvbnRlbmQgdG8gZWFzaWx5IG1hbmFnZSBjb25uZWN0aW9ucyB0byByZW1vdGUgZmlsZXN5c3RlbXMgdXNpbmcgR0lPL0dWZnMiCitTRUNUSU9OID0gIngxMS9hcHBsaWNhdGlvbiIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworREVQRU5EUyA9ICJndGsrMyBpbnRsdG9vbC1uYXRpdmUgeGZjZTQtZGV2LXRvb2xzLW5hdGl2ZSIKKworaW5oZXJpdCB4ZmNlLWFwcAorCitTUkNfVVJJW21kNXN1bV0gPSAiOTRlODlhZDNmYWJiYTcxNjc3NjAwMDRiNjQwNjJmNGEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2E4N2JhZGI1ODcxZTQ4NDQ1Nzk3MDQ3MDRlYTllNWVkZTQ0NGY3MTBhM2IyNjRjMTJiNjBiMmEwZTQ4ZTE0ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvbW91c2VwYWQvbW91c2VwYWRfMC40LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL21vdXNlcGFkL21vdXNlcGFkXzAuNC4yLmJiCmluZGV4IDRiZjEwYTQuLjI5MDM4YWMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvbW91c2VwYWQvbW91c2VwYWRfMC40LjIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9tb3VzZXBhZC9tb3VzZXBhZF8wLjQuMi5iYgpAQCAtNSw3ICs1LDcgQEAKIAogREVQRU5EUyA9ICJndGsrMyBndGtzb3VyY2V2aWV3MyB4ZmNvbmYgeGZjZTQtZGV2LXRvb2xzLW5hdGl2ZSIKIAotaW5oZXJpdCB4ZmNlLWFwcCBnc2V0dGluZ3MKK2luaGVyaXQgeGZjZS1hcHAgZ3NldHRpbmdzIG1pbWUteGRnCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI5OGQ5MDg4NDJkNGE5M2MzNTc1NmE2N2Q2ODFjMDhmZSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NGMwMmFkZmNhN2Y4YjMzYjk0NjZhMzA2ZGVkNzJmYjlmMzhmOTNjOWVkYjc4NjYwMzQzODU0YzRhM2FkZWQ3IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9vcmFnZS9vcmFnZV80LjEyLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL29yYWdlL29yYWdlXzQuMTIuMS5iYgppbmRleCA5NjYyYjYxLi5hZTgxODAyIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL29yYWdlL29yYWdlXzQuMTIuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL29yYWdlL29yYWdlXzQuMTIuMS5iYgpAQCAtNCw3ICs0LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTlhYzJlN2NmZjFkZGFmNDhiNmVhYjYwMjhmMjNlZjg4IgogREVQRU5EUyA9ICJndGsrIHhmY2U0LXBhbmVsIGxpYmljYWwgcG9wdCIKIAotaW5oZXJpdCB4ZmNlLWFwcAoraW5oZXJpdCB4ZmNlLWFwcCBtaW1lLXhkZwogCiBTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1kcm9wLXNldHRpbmctaXNfdXRjLW1lbWJlci1vZi1pY2FsdGltZXR5cGUucGF0Y2giCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvcmlzdHJldHRvL3Jpc3RyZXR0b18wLjEwLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3Jpc3RyZXR0by9yaXN0cmV0dG9fMC4xMC4wLmJiCmluZGV4IDljNWJiMTIuLmZiY2E5NmYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvcmlzdHJldHRvL3Jpc3RyZXR0b18wLjEwLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9yaXN0cmV0dG8vcmlzdHJldHRvXzAuMTAuMC5iYgpAQCAtNiw3ICs2LDcgQEAKIAogREVQRU5EUyA9ICJleG8gbGliZXhpZiBsaWJ4ZmNlNHVpIGxpYnhmY2U0dXRpbCB4ZmNvbmYgY2Fpcm8gZmlsZSIKIAotaW5oZXJpdCB4ZmNlLWFwcAoraW5oZXJpdCB4ZmNlLWFwcCBtaW1lLXhkZwogCiBSUkVDT01NRU5EU18ke1BOfSArPSAidHVtYmxlciIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94YXJjaGl2ZXIveGFyY2hpdmVyX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGFyY2hpdmVyL3hhcmNoaXZlcl9naXQuYmIKaW5kZXggZDY5OTA0Ny4uNjQ1ODJmMiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94YXJjaGl2ZXIveGFyY2hpdmVyX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hhcmNoaXZlci94YXJjaGl2ZXJfZ2l0LmJiCkBAIC0xMiw3ICsxMiw3IEBACiBQViA9ICIwLjUuNC4xNCIKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWluaGVyaXQgZ2V0dGV4dCBwa2djb25maWcgYXV0b3Rvb2xzIGd0ay1pY29uLWNhY2hlIGZlYXR1cmVzX2NoZWNrCitpbmhlcml0IGdldHRleHQgcGtnY29uZmlnIGF1dG90b29scyBndGstaWNvbi1jYWNoZSBmZWF0dXJlc19jaGVjayBtaW1lLXhkZwogCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LW5vdGlmeWQveGZjZTQtbm90aWZ5ZF8wLjQuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtbm90aWZ5ZC94ZmNlNC1ub3RpZnlkXzAuNC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNmFiMGRmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtbm90aWZ5ZC94ZmNlNC1ub3RpZnlkXzAuNC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotU1VNTUFSWSA9ICJFYXNpbHkgdGhlbWFibGUgbm90aWZpY2F0aW9uIGRhZW1vbiB3aXRoIHRyYW5zcGFyZW5jeSBlZmZlY3RzIgotSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvYXBwbGljYXRpb25zL3hmY2U0LW5vdGlmeWQiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi1ERVBFTkRTID0gIiBcCi0gICAgZGJ1cyBcCi0gICAgZGJ1cy1nbGliIFwKLSAgICBsaWJub3RpZnkgXAotICAgIGxpYnhmY2U0dXRpbCBcCi0gICAgbGlieGZjZTR1aSBcCi0gICAgeGZjb25mIFwKLSAgICB4ZmNlNC1wYW5lbCBcCi0iCi0KLWluaGVyaXQgeGZjZS1hcHAKLQotU1JDX1VSSVttZDVzdW1dID0gIjk2MTRkNGY3YzA3OTBlOGFiMjRlNTU4OTZhNDRhOGFjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA5MDU3MWFjZjk0YzQyMzAwMzQyNmNiNzc5ZmIyM2U4NTQ1YzY4YmFiNjQ4NTU2M2I1ODljN2RlZjhhMjFiNTUiCi0KLSMgQXZvaWQgdHJvdWJsZSB3aXRoIG90aGVyIGRlc2t0b3BzIGUuZyBLREUgd2hpY2ggYWxzbyBzaGlwcyBkYnVzIHNlcnZpY2UgbmFtZWQKLSMgb3JnLmZyZWVkZXNrdG9wLk5vdGlmaWNhdGlvbnMKLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZGJ1cy1zdGFydC1kYWVtb24iCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBta2RpciAtcCB4ZmNlNC1ub3RpZnlkIHhmY2U0LW5vdGlmeWQtY29uZmlnCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKLSAgICAke2RhdGFkaXJ9L3hmY2U0IFwKLSAgICAke2RhdGFkaXJ9L3RoZW1lcyBcCi0gICAgJHtkYXRhZGlyfS9kYnVzLTEgXAotICAgICR7bGliZGlyfS94ZmNlNCBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LW5vdGlmeWQveGZjZTQtbm90aWZ5ZF8wLjYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtbm90aWZ5ZC94ZmNlNC1ub3RpZnlkXzAuNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMGY0NGUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LW5vdGlmeWQveGZjZTQtbm90aWZ5ZF8wLjYuMC5iYgpAQCAtMCwwICsxLDM0IEBACitTVU1NQVJZID0gIkVhc2lseSB0aGVtYWJsZSBub3RpZmljYXRpb24gZGFlbW9uIHdpdGggdHJhbnNwYXJlbmN5IGVmZmVjdHMiCitIT01FUEFHRSA9ICJodHRwOi8vZ29vZGllcy54ZmNlLm9yZy9wcm9qZWN0cy9hcHBsaWNhdGlvbnMveGZjZTQtbm90aWZ5ZCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKK0RFUEVORFMgPSAiIFwKKyAgICBkYnVzIFwKKyAgICBkYnVzLWdsaWIgXAorICAgIGxpYm5vdGlmeSBcCisgICAgbGlieGZjZTR1dGlsIFwKKyAgICBsaWJ4ZmNlNHVpIFwKKyAgICB4ZmNvbmYgXAorICAgIHhmY2U0LXBhbmVsIFwKKyIKKworaW5oZXJpdCB4ZmNlLWFwcAorCitTUkNfVVJJW21kNXN1bV0gPSAiMTcyNGZjYjYzNWJiYWI0NGM5ZjYyYzY5NzM0ZTQ0NmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzFkMTI2YTgxNjA0ZmY5NjdlNDY1NWYwNjQyNzc2M2JmNTU5YzMzOGJhNjI5Yzk1Y2I5YWE3ZjVkNmRjOGJhNiIKKworIyBBdm9pZCB0cm91YmxlIHdpdGggb3RoZXIgZGVza3RvcHMgZS5nIEtERSB3aGljaCBhbHNvIHNoaXBzIGRidXMgc2VydmljZSBuYW1lZAorIyBvcmcuZnJlZWRlc2t0b3AuTm90aWZpY2F0aW9ucworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kYnVzLXN0YXJ0LWRhZW1vbiIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIG1rZGlyIC1wIHhmY2U0LW5vdGlmeWQgeGZjZTQtbm90aWZ5ZC1jb25maWcKK30KKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAorICAgICR7ZGF0YWRpcn0veGZjZTQgXAorICAgICR7ZGF0YWRpcn0vdGhlbWVzIFwKKyAgICAke2RhdGFkaXJ9L2RidXMtMSBcCisgICAgJHtsaWJkaXJ9L3hmY2U0IFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtcGFuZWwtcHJvZmlsZXMveGZjZTQtcGFuZWwtcHJvZmlsZXMvbm90LWNyZWF0ZS1saW5rLXRvLWxvY2FsZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtcGFuZWwtcHJvZmlsZXMveGZjZTQtcGFuZWwtcHJvZmlsZXMvbm90LWNyZWF0ZS1saW5rLXRvLWxvY2FsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGNkZmI5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1wYW5lbC1wcm9maWxlcy94ZmNlNC1wYW5lbC1wcm9maWxlcy9ub3QtY3JlYXRlLWxpbmstdG8tbG9jYWxlLnBhdGNoCkBAIC0wLDAgKzEsMjIgQEAKK0l0IGlzIHVzZWxlc3MgdG8gY3JlYXRlIGEgbGluayB0byAkKFBSRUZJWCkvc2hhcmUvbG9jYWxlIHRoYXQgdGhlcmUgaXMgbm8KK3JlZmVyZW5jZSB0byAkKFBSRUZJWCkvc2hhcmUvJChBUFBOQU1FKS9sb2NhbGUgaW4gc291cmNlIGNvZGUuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3ppbGxhLnhmY2Uub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY5M10KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZS5pbi5pbiB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbi5pbiBiL01ha2VmaWxlLmluLmluCitpbmRleCBjMGNlODY2Li5jMmYyNmZlIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4uaW4KKysrKyBiL01ha2VmaWxlLmluLmluCitAQCAtNjEsNyArNjEsNiBAQCBpbnN0YWxsOiBhbGwgeGZjZTQtcGFuZWwtcHJvZmlsZXMuMS5negorIAlpbnN0YWxsIGRhdGEvbWV0YWluZm8vKi54bWwgJChERVNURElSKS8kKFBSRUZJWCkvc2hhcmUvbWV0YWluZm8KKyAKKyAJY3AgLXJmIGxvY2FsZSAkKERFU1RESVIpLyQoUFJFRklYKS9zaGFyZQorLQlsbiAtc2YgJChQUkVGSVgpL3NoYXJlL2xvY2FsZSAkKERFU1RESVIpLyQoUFJFRklYKS9zaGFyZS8kKEFQUE5BTUUpL2xvY2FsZQorIAorIAlpbnN0YWxsIC1kICQoREVTVERJUikvJChQUkVGSVgpL3NoYXJlL21hbi9tYW4xCisgCWluc3RhbGwgeGZjZTQtcGFuZWwtcHJvZmlsZXMuMS5neiAkKERFU1RESVIpLyQoUFJFRklYKS9zaGFyZS9tYW4vbWFuMQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1wYW5lbC1wcm9maWxlcy94ZmNlNC1wYW5lbC1wcm9maWxlc18xLjAuMTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXBhbmVsLXByb2ZpbGVzL3hmY2U0LXBhbmVsLXByb2ZpbGVzXzEuMC4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjI2YjFhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1wYW5lbC1wcm9maWxlcy94ZmNlNC1wYW5lbC1wcm9maWxlc18xLjAuMTAuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJCYWNrdXAsIHJlc3RvcmUsIGltcG9ydCwgYW5kIGV4cG9ydCBwYW5lbCBsYXlvdXRzIgorU0VDVElPTiA9ICJ4MTEvYXBwbGljYXRpb24iCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK2luaGVyaXQgcHl0aG9uM25hdGl2ZSBnZXR0ZXh0IGZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK0RFUEVORFMgKz0gImludGx0b29sLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vYXJjaGl2ZS54ZmNlLm9yZy9zcmMvYXBwcy8ke0JQTn0vMS4wLyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vbm90LWNyZWF0ZS1saW5rLXRvLWxvY2FsZS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2MTkwNjc4YmM3MDFjMTk3YmFiY2IyMzg5YmE0NjE4MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhODRkNWU3NDhkNTNiYzVkYTI2OTk1NGNjM2FkN2Y1YWMwYzRmNTgxM2FjZmQzODkyZWE2ZjkwNjRmMTdmYjY4IgorCitkb19jb25maWd1cmUoKSB7CisgICAgIyBzcGVjaWFsIGNvbmZpZ3VyZSAtIG5vIGF1dG90b29scy4uLgorICAgIC4vY29uZmlndXJlIC0tcHJlZml4PSR7cHJlZml4fQorfQorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorICAgIHNlZCAtaSAnczoke1BZVEhPTn06cHl0aG9uMzpnJyAke0R9JHtiaW5kaXJ9L3hmY2U0LXBhbmVsLXByb2ZpbGVzCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L21ldGFpbmZvIgorCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1weWdvYmplY3QgcHl0aG9uMy1wZXhwZWN0IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1wYW5lbC1wcm9maWxlcy94ZmNlNC1wYW5lbC1wcm9maWxlc18xLjAuOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtcGFuZWwtcHJvZmlsZXMveGZjZTQtcGFuZWwtcHJvZmlsZXNfMS4wLjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljOWFlOTQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1wYW5lbC1wcm9maWxlcy94ZmNlNC1wYW5lbC1wcm9maWxlc18xLjAuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVNVTU1BUlkgPSAiQmFja3VwLCByZXN0b3JlLCBpbXBvcnQsIGFuZCBleHBvcnQgcGFuZWwgbGF5b3V0cyIKLVNFQ1RJT04gPSAieDExL2FwcGxpY2F0aW9uIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1pbmhlcml0IHB5dGhvbjNuYXRpdmUgZ2V0dGV4dCBmZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1ERVBFTkRTICs9ICJpbnRsdG9vbC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2FyY2hpdmUueGZjZS5vcmcvc3JjL2FwcHMvJHtCUE59LzEuMC8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gImJlZTNlMjUxZTQ1YWRlMGVhMzQ5MzY2NDYxZDZlMjAwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE4YzAwYWY4MzhlODVkMDA2MDBkYmY0NDJjODc0MWFhMjFhMzMyZmJjZWJhODQ5ZTA4MjA1NjA2MzBhNmUwY2UiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICAjIHNwZWNpYWwgY29uZmlndXJlIC0gbm8gYXV0b3Rvb2xzLi4uCi0gICAgLi9jb25maWd1cmUgLS1wcmVmaXg9JHtwcmVmaXh9Ci19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi0gICAgc2VkIC1pICdzOiR7UFlUSE9OfTpweXRob24zOmcnICR7RH0ke2JpbmRpcn0veGZjZTQtcGFuZWwtcHJvZmlsZXMKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vbWV0YWluZm8iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24zLXB5Z29iamVjdCBweXRob24zLXBleHBlY3QiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXNjcmVlbnNhdmVyL3hmY2U0LXNjcmVlbnNhdmVyXzAuMS4xMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtc2NyZWVuc2F2ZXIveGZjZTQtc2NyZWVuc2F2ZXJfMC4xLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyZjA2NDAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXNjcmVlbnNhdmVyL3hmY2U0LXNjcmVlbnNhdmVyXzAuMS4xMC5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIlhmY2Ugc2NyZWVuc2F2ZXIgQXBwbGljYXRpb24iCitERVNDUklQVElPTiA9ICJYZmNlIHNjcmVlbnNhdmVyIGlzIGEgc2NyZWVuIHNhdmVyIGFuZCBsb2NrZXIgdGhhdCBhaW1zIHRvIGhhdmUgc2ltcGxlLCBzYW5lLCBzZWN1cmUgZGVmYXVsdHMgYW5kIGJlIHdlbGwgaW50ZWdyYXRlZCB3aXRoIHRoZSBkZXNrdG9wLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0LnhmY2Uub3JnL2FwcHMveGZjZTQtc2NyZWVuc2F2ZXIvYWJvdXQvIgorU0VDVElPTiA9ICJ4MTEvYXBwbGljYXRpb24iCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEw7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyAgICAgICAgICAgICAgICAgICAgIgorCitERVBFTkRTID0gImRidXMtZ2xpYiBnYXJjb24gZ3RrKzMgbGlieGtsYXZpZXIgbGlieHNjcm5zYXZlciB2aXJ0dWFsL2xpYngxMSB4ZmNvbmYgbGlid25jazMiCisKK2luaGVyaXQgeGZjZS1hcHAKKworU1JDX1VSSV9hcHBlbmQgPSAiIFwKKyAgICBmaWxlOi8vZml4LWNyb3NzLWNvbXBpbGUucGF0Y2ggXAorICAgIGZpbGU6Ly9maXgtcGFtLWNvbmZpZy5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiMWYwOTNjZGU1YWYwOWU5ZmQ5YmUwMTc3NzRlMDMyZWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTg2ZjFjNzhkZDY3NDVhMjBlOWNlOWYxMmQwMTE3MTg5ZDU5N2JhN2FkMGM4ZmZjZmNkMjVjOWJiMDVmMWQ1NyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7U30vZGF0YS94ZmNlNC1zY3JlZW5zYXZlci5jb21tb24tYXV0aCAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC94ZmNlNC1zY3JlZW5zYXZlcgorfQorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEgJHtkYXRhZGlyfS9kZXNrdG9wLWRpcmVjdG9yaWVzIgorUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtY29yZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtc2NyZWVuc2F2ZXIveGZjZTQtc2NyZWVuc2F2ZXJfMC4xLjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXNjcmVlbnNhdmVyL3hmY2U0LXNjcmVlbnNhdmVyXzAuMS44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzljMzI3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtc2NyZWVuc2F2ZXIveGZjZTQtc2NyZWVuc2F2ZXJfMC4xLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIlhmY2Ugc2NyZWVuc2F2ZXIgQXBwbGljYXRpb24iCi1ERVNDUklQVElPTiA9ICJYZmNlIHNjcmVlbnNhdmVyIGlzIGEgc2NyZWVuIHNhdmVyIGFuZCBsb2NrZXIgdGhhdCBhaW1zIHRvIGhhdmUgc2ltcGxlLCBzYW5lLCBzZWN1cmUgZGVmYXVsdHMgYW5kIGJlIHdlbGwgaW50ZWdyYXRlZCB3aXRoIHRoZSBkZXNrdG9wLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0LnhmY2Uub3JnL2FwcHMveGZjZTQtc2NyZWVuc2F2ZXIvYWJvdXQvIgotU0VDVElPTiA9ICJ4MTEvYXBwbGljYXRpb24iCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEw7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgIgotCi1ERVBFTkRTID0gImRidXMtZ2xpYiBnYXJjb24gZ3RrKzMgbGlieGtsYXZpZXIgbGlieHNjcm5zYXZlciB2aXJ0dWFsL2xpYngxMSB4ZmNvbmYgbGlid25jazMiCi0KLWluaGVyaXQgeGZjZS1hcHAKLQotU1JDX1VSSV9hcHBlbmQgPSAiIFwKLSAgICBmaWxlOi8vZml4LWNyb3NzLWNvbXBpbGUucGF0Y2ggXAotICAgIGZpbGU6Ly9maXgtcGFtLWNvbmZpZy5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiMGZlYTdiNjc2ZTZlNTMzYTNmMzA1YzZmNjQyZmUwY2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDA1NjA0NWVhNWZkM2VjY2ZlMzI4Yjg2YWUyNDVlZTQ5NDliOWUzMDQ0ZTQyY2EyOWM0OTJjMGY0YWM4NjBkNyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7U30vZGF0YS94ZmNlNC1zY3JlZW5zYXZlci5jb21tb24tYXV0aCAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC94ZmNlNC1zY3JlZW5zYXZlcgotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEgJHtkYXRhZGlyfS9kZXNrdG9wLWRpcmVjdG9yaWVzIgotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtY29yZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtdGFza21hbmFnZXIveGZjZTQtdGFza21hbmFnZXJfMS4yLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXRhc2ttYW5hZ2VyL3hmY2U0LXRhc2ttYW5hZ2VyXzEuMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2E1OWM5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtdGFza21hbmFnZXIveGZjZTQtdGFza21hbmFnZXJfMS4yLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1TVU1NQVJZID0gIkVhc3kgdG8gdXNlIHRhc2sgbWFuYWdlciIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotaW5oZXJpdCB4ZmNlLWFwcAotCi1ERVBFTkRTICs9ICJndGsrMyBjYWlybyBsaWJ3bmNrIGxpYnhtdSB4ZmNlNC1kZXYtdG9vbHMtbmF0aXZlIGV4by1uYXRpdmUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2NTc4NjI1ZmZiZTA2OWIxMzg1MzNmZjVlNzdkZjczNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlNDlhNjFjODE5YTRmZDkyODZhNjVhZTYxNjA1OTg0ZjMyN2M4YjI2Y2Y5MzkyODlmNjQ0ZTY1NmJmYTIwZTEzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC10YXNrbWFuYWdlci94ZmNlNC10YXNrbWFuYWdlcl8xLjIuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtdGFza21hbmFnZXIveGZjZTQtdGFza21hbmFnZXJfMS4yLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU2MDA5NAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtdGFza21hbmFnZXIveGZjZTQtdGFza21hbmFnZXJfMS4yLjMuYmIKQEAgLTAsMCArMSwxMCBAQAorU1VNTUFSWSA9ICJFYXN5IHRvIHVzZSB0YXNrIG1hbmFnZXIiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCisKK2luaGVyaXQgeGZjZS1hcHAKKworREVQRU5EUyArPSAiZ3RrKzMgY2Fpcm8gbGlid25jayBsaWJ4bXUgeGZjZTQtZGV2LXRvb2xzLW5hdGl2ZSBleG8tbmF0aXZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjAyOTI4YzhmZjA2NzhhOWRmOTQ5ZDIyYTQzZjE2MTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGNmYzQ0ZGE3YzFmNjFkMDNlMmM0YmQxY2RjOGY5MmNlMGQ0OGIwMTNiZDBkMTQwYjM3NDVkNzliNzVkYzNjNCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtdGVybWluYWwveGZjZTQtdGVybWluYWxfMC44LjkuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtdGVybWluYWwveGZjZTQtdGVybWluYWxfMC44LjkuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJkZDRjYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXRlcm1pbmFsL3hmY2U0LXRlcm1pbmFsXzAuOC45LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1TVU1NQVJZID0gIlRlcm1pbmFsIGVtdWxhdG9yIGZvciB0aGUgWGZjZSBkZXNrdG9wIGVudmlyb25tZW50IgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotREVQRU5EUyA9ICJnbGliLTIuMCBndGsrMyB2dGUgbGlieGZjZTR1aSIKLQotaW5oZXJpdCB4ZmNlLWFwcAotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94ZmNlNCBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nbm9tZS1jb250cm9sLWNlbnRlciIKLQotU1JDX1VSSVttZDVzdW1dID0gImNiOTk1ZTQ4OTFhM2M1NDdiZjEzM2IzMWU0ODQwZDAxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBkZWIwZDA2ZTUwYThhNDFmYjAwZTJjMzc3M2YwNzkzODgyY2I5ZjA3M2FlMTZlYWQ4ODdiYjk2ODFjNTE0Y2QiCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJ2dGUtcHJvbXB0IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC10ZXJtaW5hbC94ZmNlNC10ZXJtaW5hbF8wLjguOS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC10ZXJtaW5hbC94ZmNlNC10ZXJtaW5hbF8wLjguOS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhMGYxMjcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXRlcm1pbmFsL3hmY2U0LXRlcm1pbmFsXzAuOC45LjIuYmIKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJUZXJtaW5hbCBlbXVsYXRvciBmb3IgdGhlIFhmY2UgZGVza3RvcCBlbnZpcm9ubWVudCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ3RrKzMgdnRlIGxpYnhmY2U0dWkiCisKK2luaGVyaXQgeGZjZS1hcHAKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veGZjZTQgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ25vbWUtY29udHJvbC1jZW50ZXIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMDMwODMxM2RlZjVkN2NjNTEwNzBhNmRiMWNmMjRkYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5YmEyM2JmODZkMzUwZWY4YTk1ZDJkZmI1MGJiZDFiYmIyMTQ0ZDgyOTg1YTc3OWVjMjhjYWY0N2ZhYWVlZWViIgorCitSUkVDT01NRU5EU18ke1BOfSArPSAidnRlLXByb21wdCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFydC9jdXJzb3ItdGhlbWVzL29wZW56b25lXzEuMi4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXJ0L2N1cnNvci10aGVtZXMvb3BlbnpvbmVfMS4yLjMuYmIKaW5kZXggZGYwZWQ1MC4uNWZmNDg1NiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXJ0L2N1cnNvci10aGVtZXMvb3BlbnpvbmVfMS4yLjMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXJ0L2N1cnNvci10aGVtZXMvb3BlbnpvbmVfMS4yLjMuYmIKQEAgLTI3LDUgKzI3LDcgQEAKICAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBpY29uZGlyLCAnXiguKiknLCAnJXMnLCAnT3BlbiBab25lIGN1cnNvcnMgJXMnLCBhbGxvd19kaXJzPVRydWUpCiB9CiAKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2ljb25zIgorCiBQQUNLQUdFU19EWU5BTUlDICs9ICJeb3BlbnpvbmUtLioiCiBBTExPV19FTVBUWV8ke1BOfSA9ICIxIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtbXVsdGltZWRpYS9wYXJvbGUvcGFyb2xlXzEuMC41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtbXVsdGltZWRpYS9wYXJvbGUvcGFyb2xlXzEuMC41LmJiCmluZGV4IGVmZWUxYWEuLmY1NWIxOTQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLW11bHRpbWVkaWEvcGFyb2xlL3Bhcm9sZV8xLjAuNS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Bhcm9sZS9wYXJvbGVfMS4wLjUuYmIKQEAgLTMsNyArMyw3IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCiAKLWluaGVyaXQgeGZjZS1hcHAgZ3RrLWRvYyBtaW1lCitpbmhlcml0IHhmY2UtYXBwIGd0ay1kb2MgbWltZSBtaW1lLXhkZwogCiBERVBFTkRTICs9ICIgXAogICAgIGRidXMtZ2xpYiBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2NsaXBtYW4veGZjZTQtY2xpcG1hbi1wbHVnaW5fMS40LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2NsaXBtYW4veGZjZTQtY2xpcG1hbi1wbHVnaW5fMS40LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExYWMwNTcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9jbGlwbWFuL3hmY2U0LWNsaXBtYW4tcGx1Z2luXzEuNC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSA9ICJDbGlwbWFuIGlzIGEgY2xpcGJvYXJkIG1hbmFnZXIgZm9yIFhmY2UiCi1IT01FUEFHRSA9ICJodHRwOi8vZ29vZGllcy54ZmNlLm9yZy9wcm9qZWN0cy9wYW5lbC1wbHVnaW5zL3hmY2U0LWNsaXBtYW4tcGx1Z2luIgotU0VDVElPTiA9ICJ4MTEvYXBwbGljYXRpb24iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLWluaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4KLQotREVQRU5EUyArPSAieGZjb25mIHhvcmdwcm90byBsaWJ4dHN0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZmEwYWNkNWY1ZTMyOThlNTZlYmQ0N2QyOTQ0Y2QwMmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjljZGI4NWVmYjU0YmQ1YzljMDRjYzY5NWI3YzQ5MTRkNmRmZjk3MmI5ZmQ5NjljYmZiNTUwNGU5YzYzMmFkMiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbcXJlbmNvZGVdID0gIi0tZW5hYmxlLWxpYnFyZW5jb2RlLC0tZGlzYWJsZS1saWJxcmVuY29kZSxxcmVuY29kZSIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYXBwZGF0YSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvY2xpcG1hbi94ZmNlNC1jbGlwbWFuLXBsdWdpbl8xLjYuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvY2xpcG1hbi94ZmNlNC1jbGlwbWFuLXBsdWdpbl8xLjYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmExNDVmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9jbGlwbWFuL3hmY2U0LWNsaXBtYW4tcGx1Z2luXzEuNi4xLmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiQ2xpcG1hbiBpcyBhIGNsaXBib2FyZCBtYW5hZ2VyIGZvciBYZmNlIgorSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvcGFuZWwtcGx1Z2lucy94ZmNlNC1jbGlwbWFuLXBsdWdpbiIKK1NFQ1RJT04gPSAieDExL2FwcGxpY2F0aW9uIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitpbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luCisKK0RFUEVORFMgKz0gInhmY29uZiB4b3JncHJvdG8gbGlieHRzdCIKKworU1JDX1VSSVttZDVzdW1dID0gImM5MzA2OTQwYzBjYTdhYmQ4MzhhMTRjOWQxOWIzYTdlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImIzZTgzMTc3OTYyODkxOTZmYTc4YzQ1MjY2MjZmZTA2MWZkMzVkMTFlODQ4Y2YzMDBjYTFhY2U0N2ZlYmNlYjQiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW3FyZW5jb2RlXSA9ICItLWVuYWJsZS1saWJxcmVuY29kZSwtLWRpc2FibGUtbGlicXJlbmNvZGUscXJlbmNvZGUiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2FwcGRhdGEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2Nsb3NlYnV0dG9uL3hmY2U0LWNsb3NlYnV0dG9uLXBsdWdpbl9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2Nsb3NlYnV0dG9uL3hmY2U0LWNsb3NlYnV0dG9uLXBsdWdpbl9naXQuYmIKaW5kZXggM2NkNGVlNi4uOGRmYjJlNiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9jbG9zZWJ1dHRvbi94ZmNlNC1jbG9zZWJ1dHRvbi1wbHVnaW5fZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvY2xvc2VidXR0b24veGZjZTQtY2xvc2VidXR0b24tcGx1Z2luX2dpdC5iYgpAQCAtNSwxMiArNSwxMiBAQAogCiBpbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luIHhmY2UtZ2l0IGd0ay1pY29uLWNhY2hlIHBlcmxuYXRpdmUKIAotREVQRU5EUyArPSAiZXhvLW5hdGl2ZSBsaWJ3bmNrIHhmY29uZiIKK0RFUEVORFMgKz0gImV4by1uYXRpdmUgbGlid25jazMgeGZjb25mIgogCiBQViA9ICIwLjEuMCtnaXRyJHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zY2huaXR6ZWx0b255L3hmY2U0LWNsb3NlYnV0dG9uLXBsdWdpbi5naXQ7YnJhbmNoPW1hc3RlciIKLVNSQ1JFViA9ICIwMmI3NGYxM2FkNmY2MzkyMzRjOGRiMTg1NDk2MzAzOGIyNzgwYTJjIgorU1JDUkVWID0gIjZlZDVjM2VlMWJhNzEwM2NhODU0YzVlODFmYjJjMTIyMGI5MTNhNDAiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLW1haW50YWluZXItbW9kZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvcHVsc2VhdWRpby94ZmNlNC1wdWxzZWF1ZGlvLXBsdWdpbl8wLjQuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvcHVsc2VhdWRpby94ZmNlNC1wdWxzZWF1ZGlvLXBsdWdpbl8wLjQuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmMzODBjMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3B1bHNlYXVkaW8veGZjZTQtcHVsc2VhdWRpby1wbHVnaW5fMC40LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIlB1bHNlYXVkaW8gbWl4ZXIgZm9yIHRoZSB4ZmNlIHBhbmVsIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY1ZWFjNmJiMGQ2ZWMwZGM2NTVlNDE3NzgxZDQwMTVmIgotCi1pbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luIGZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwdWxzZWF1ZGlvIHgxMSIKLQotREVQRU5EUyArPSAiZGJ1cy1nbGliIHB1bHNlYXVkaW8iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5YTM0ZWFkZjA2ZWQyMTdlYzA3MzJhMDk2ZjE3ODk4NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YWU4YWViYzI0NTg2NzVkNGY4ODViZjE2ZjczODI5YmUzNTllMTYzNzBhNjg0MzAxYmJlZjZhMjM3NThhMTIwIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tsaWJub3RpZnldID0gIi0tZW5hYmxlLWxpYm5vdGlmeSwtLWRpc2FibGUtbGlibm90aWZ5LGxpYm5vdGlmeSIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAicGF2dWNvbnRyb2wiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3B1bHNlYXVkaW8veGZjZTQtcHVsc2VhdWRpby1wbHVnaW5fMC40LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3B1bHNlYXVkaW8veGZjZTQtcHVsc2VhdWRpby1wbHVnaW5fMC40LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjNlNGRmMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvcHVsc2VhdWRpby94ZmNlNC1wdWxzZWF1ZGlvLXBsdWdpbl8wLjQuMy5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIlB1bHNlYXVkaW8gbWl4ZXIgZm9yIHRoZSB4ZmNlIHBhbmVsIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY1ZWFjNmJiMGQ2ZWMwZGM2NTVlNDE3NzgxZDQwMTVmIgorCitpbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luIGZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwdWxzZWF1ZGlvIHgxMSIKKworREVQRU5EUyArPSAiZGJ1cy1nbGliIHB1bHNlYXVkaW8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzZDg2MDMyYWNiOTM2NGQ0N2UwYTE0NDM1MGM2M2UxYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1YTUxODIzN2UyMTM3MzQxZDhjYTY1ODQ5Mzg5NTA1MjVlMjBjMjhhMDE3N2UzMGVjYWVhM2JhOGU3YTI2MTViIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tsaWJub3RpZnldID0gIi0tZW5hYmxlLWxpYm5vdGlmeSwtLWRpc2FibGUtbGlibm90aWZ5LGxpYm5vdGlmeSIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAicGF2dWNvbnRyb2wiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3NlbnNvcnMveGZjZTQtc2Vuc29ycy1wbHVnaW4vMDAwMS1Eby1ub3QtY2hlY2stZm9yLXN5cy1jbGFzcy1wb3dlcl9zdXBwbHktd2UtYXJlLWNyb3NzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9zZW5zb3JzL3hmY2U0LXNlbnNvcnMtcGx1Z2luLzAwMDEtRG8tbm90LWNoZWNrLWZvci1zeXMtY2xhc3MtcG93ZXJfc3VwcGx5LXdlLWFyZS1jcm9zcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzFkNjAzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9zZW5zb3JzL3hmY2U0LXNlbnNvcnMtcGx1Z2luLzAwMDEtRG8tbm90LWNoZWNrLWZvci1zeXMtY2xhc3MtcG93ZXJfc3VwcGx5LXdlLWFyZS1jcm9zcy5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIDliN2UxYmVjYTg3MmNhNGE1ZmNlODkzOGM1ODM3OTEwMzc4N2Y3OWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorRGF0ZTogU3VuLCAyMyBGZWIgMjAyMCAyMjowNjozMiArMDEwMAorU3ViamVjdDogW1BBVENIXSBEbyBub3QgY2hlY2sgZm9yIC9zeXMvY2xhc3MvcG93ZXJfc3VwcGx5IC0gd2UgYXJlIGNyb3NzCisgY29tcGlsaW5nCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Utc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAxMiArLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDExIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBjMjgxYWY5Li42MGJhMGMwIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0yMDksMTkgKzIwOSw5IEBAIGRubCBDaGVjayBmb3IgaW50ZXJmYWNlIGZvciAvc3lzL2NsYXNzL3Bvd2VyX3N1cHBseSB0byBiZSB1c2VkCisgQUNfQVJHX0VOQUJMRShbc3lzZnNhY3BpXSwgW0FDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1zeXNmc2FjcGldLCBbVXNlIC9zeXMvY2xhc3MvcG93ZXJfc3VwcGx5IHRvIHJlYWQgeW91ciBiYXR0ZXJ5IHZhbHVlIEA8OkBkZWZhdWx0PWF1dG9AOj5AXSldLAorIFtdLAorIFsKKy0gICAgZW5hYmxlX3N5c2ZzYWNwaT1hdXRvCisrICAgIGVuYWJsZV9zeXNmc2FjcGk9eWVzCisgXSkKKyAKKy1pZiB0ZXN0IHgiJGVuYWJsZV9zeXNmc2FjcGkiID0geCJhdXRvIjsgdGhlbgorLSAgICBBQ19DSEVDS19GSUxFKFsvc3lzL2NsYXNzL3Bvd2VyX3N1cHBseV0sCistICAgIFsKKy0gICAgICAgIGVuYWJsZV9zeXNmc2FjcGk9eWVzCistICAgIF0sCistICAgIFsKKy0gICAgICAgIGVuYWJsZV9zeXNmc2FjcGk9bm8KKy0gICAgXSkKKy1maQorLQorIGlmIHRlc3QgeCIkZW5hYmxlX3N5c2ZzYWNwaSIgPSB4InllcyI7IHRoZW4KKyAgICAgQUNfREVGSU5FKFtIQVZFX1NZU0ZTX0FDUEldLCBbMV0sIFtEZWZpbmUgdG8gMSBpZiAvc3lzL2NsYXNzL3Bvd2VyX3N1cHBseSBpcyBmb3VuZF0pCisgICAgIGVuYWJsZV9wcm9jYWNwaT15ZXMKKy0tIAorMi4yMS4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvc2Vuc29ycy94ZmNlNC1zZW5zb3JzLXBsdWdpbl8xLjIuOTcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3NlbnNvcnMveGZjZTQtc2Vuc29ycy1wbHVnaW5fMS4yLjk3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDc4YmIyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvc2Vuc29ycy94ZmNlNC1zZW5zb3JzLXBsdWdpbl8xLjIuOTcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIlNlbnNvcnMgcGx1Z2luIGZvciB0aGUgWGZjZSBQYW5lbCIKLUhPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL3BhbmVsLXBsdWdpbnMveGZjZTQtc2Vuc29ycy1wbHVnaW4iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yjk0Nzg5YmVkOWFlYzAzYjk2NTZhOWNjNTM5OGM3MDYiCi0KLWluaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4KLQotU1JDX1VSSVttZDVzdW1dID0gIjBjNzRjMzExMmM1ZTZlMDc2NDdjMTE2Y2Q0M2ZmNWE3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc1MjRlYzQ1MzRkZTllZjdmNjc2ZGUyODk1YTQxYmY3MGI3M2I5NGRhNWEyN2ZkNGEwMjJiMTZlZGE1NmQwZjQiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1wcm9jYWNwaSBcCi0gICAgLS1kaXNhYmxlLXN5c2ZzYWNwaSBcCi0gICAgLS1kaXNhYmxlLXhudmN0cmwgXAotIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgJ3M6TElCU0VOU09SU19DRkxBR1M9Lio6TElCU0VOU09SU19DRkxBR1M9LUkke1NUQUdJTkdfSU5DRElSfTpnJyAke1N9L2NvbmZpZ3VyZS5hYwotfQotCi1QQUNLQUdFQ09ORklHID8/PSAibGlic2Vuc29ycyIKLVBBQ0tBR0VDT05GSUdbbGlic2Vuc29yc10gPSAiLS1lbmFibGUtbGlic2Vuc29ycywtLWRpc2FibGUtbGlic2Vuc29ycywgbG1zZW5zb3JzIgotUEFDS0FHRUNPTkZJR1toZGR0ZW1wXSAgICA9ICItLWVuYWJsZS1oZGR0ZW1wLC0tZGlzYWJsZS1oZGR0ZW1wLCBoZGR0ZW1wIgotUEFDS0FHRUNPTkZJR1tuZXRjYXRdICAgICA9ICItLWVuYWJsZS1uZXRjYXQsLS1kaXNhYmxlLW5ldGNhdCwgbmV0Y2F0IgotUEFDS0FHRUNPTkZJR1tsaWJub3RpZnldICA9ICItLWVuYWJsZS1ub3RpZmljYXRpb24sLS1kaXNhYmxlLW5vdGlmaWNhdGlvbiwgbGlibm90aWZ5IgotCi1GSUxFU19TT0xJQlNERVYgPSAiJHtsaWJkaXJ9L3hmY2U0L21vZHVsZXMvbGliKiR7U09MSUJTREVWfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvc2Vuc29ycy94ZmNlNC1zZW5zb3JzLXBsdWdpbl8xLjMuOTIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3NlbnNvcnMveGZjZTQtc2Vuc29ycy1wbHVnaW5fMS4zLjkyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmZDBmZjYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3NlbnNvcnMveGZjZTQtc2Vuc29ycy1wbHVnaW5fMS4zLjkyLmJiCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiU2Vuc29ycyBwbHVnaW4gZm9yIHRoZSBYZmNlIFBhbmVsIgorSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvcGFuZWwtcGx1Z2lucy94ZmNlNC1zZW5zb3JzLXBsdWdpbiIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iOTQ3ODliZWQ5YWVjMDNiOTY1NmE5Y2M1Mzk4YzcwNiIKKworaW5oZXJpdCB4ZmNlLXBhbmVsLXBsdWdpbgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzMyN2M0YzMxNmViZDVkOTM2NjVlNzdiNDMyYjhkODkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2RjNjY0M2QyYzA2NGI3NzE4YmFkZmY0NGI5NDhmOGQ0MTBmMDBmMTNkYjE5NzgyMGIyNmFlMzgwNDVmNTExMiIKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLURvLW5vdC1jaGVjay1mb3Itc3lzLWNsYXNzLXBvd2VyX3N1cHBseS13ZS1hcmUtY3Jvc3MucGF0Y2giCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZGlzYWJsZS1wcm9jYWNwaSBcCisgICAgLS1kaXNhYmxlLXhudmN0cmwgXAorIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBzZWQgLWkgJ3M6TElCU0VOU09SU19DRkxBR1M9Lio6TElCU0VOU09SU19DRkxBR1M9LUkke1NUQUdJTkdfSU5DRElSfTpnJyAke1N9L2NvbmZpZ3VyZS5hYworfQorCitQQUNLQUdFQ09ORklHW2xpYnNlbnNvcnNdID0gIi0tZW5hYmxlLWxpYnNlbnNvcnMsLS1kaXNhYmxlLWxpYnNlbnNvcnMsIGxtc2Vuc29ycyIKK1BBQ0tBR0VDT05GSUdbaGRkdGVtcF0gICAgPSAiLS1lbmFibGUtaGRkdGVtcCwtLWRpc2FibGUtaGRkdGVtcCwgaGRkdGVtcCIKK1BBQ0tBR0VDT05GSUdbbmV0Y2F0XSAgICAgPSAiLS1lbmFibGUtbmV0Y2F0LC0tZGlzYWJsZS1uZXRjYXQsIG5ldGNhdCIKK1BBQ0tBR0VDT05GSUdbbGlibm90aWZ5XSAgPSAiLS1lbmFibGUtbm90aWZpY2F0aW9uLC0tZGlzYWJsZS1ub3RpZmljYXRpb24sIGxpYm5vdGlmeSIKKworRklMRVNfU09MSUJTREVWID0gIiR7bGliZGlyfS94ZmNlNC9tb2R1bGVzL2xpYioke1NPTElCU0RFVn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3dlYXRoZXIveGZjZTQtd2VhdGhlci1wbHVnaW5fMC4xMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy93ZWF0aGVyL3hmY2U0LXdlYXRoZXItcGx1Z2luXzAuMTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZjMjA0OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3dlYXRoZXIveGZjZTQtd2VhdGhlci1wbHVnaW5fMC4xMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotU1VNTUFSWSA9ICJQYW5lbCBwbHVnaW4gdG8gZGlzcGxheSBjdXJyZW50IHRlbXBlcmF0dXJlIGFuZCB3ZWF0aGVyIGNvbmRpdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL3BhbmVsLXBsdWdpbnMveGZjZTQtd2VhdGhlci1wbHVnaW4iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLWluaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4KLQotREVQRU5EUyArPSAibGlic291cC0yLjQgZGJ1cy1nbGliIHVwb3dlciIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdmZjRhYjYzNmY5M2FkZGJhMDgxN2JmNjQzNmQyOTY0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ0MjNhMGMyNzgzMGZkMWYwOGUwNjNhYWVmYmY3MGYzMWQ4OTIzNWQ3NTU0OWNhODQxZDY3N2FiMmU0MDk1NzIiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3hmY2U0L3dlYXRoZXIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3dlYXRoZXIveGZjZTQtd2VhdGhlci1wbHVnaW5fMC4xMC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy93ZWF0aGVyL3hmY2U0LXdlYXRoZXItcGx1Z2luXzAuMTAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDliNmU5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy93ZWF0aGVyL3hmY2U0LXdlYXRoZXItcGx1Z2luXzAuMTAuMS5iYgpAQCAtMCwwICsxLDEzIEBACitTVU1NQVJZID0gIlBhbmVsIHBsdWdpbiB0byBkaXNwbGF5IGN1cnJlbnQgdGVtcGVyYXR1cmUgYW5kIHdlYXRoZXIgY29uZGl0aW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvcGFuZWwtcGx1Z2lucy94ZmNlNC13ZWF0aGVyLXBsdWdpbiIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworaW5oZXJpdCB4ZmNlLXBhbmVsLXBsdWdpbgorCitERVBFTkRTICs9ICJsaWJzb3VwLTIuNCBkYnVzLWdsaWIgdXBvd2VyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjAzYWQxNmU3NGQ0ODIzZjZmYjZlOWExOGJiN2RmNTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWZiMmFmNWYzZWZmYzJlYTYxODE2MzZlZDBlODJlNmRhZmQ1NTZlYzFiODQ3ODEwMDgwMmY4NWE1ZDE2N2E4OSIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veGZjZTQvd2VhdGhlciIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvd2hpc2tlcm1lbnUveGZjZTQtd2hpc2tlcm1lbnUtcGx1Z2luXzIuMy40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy93aGlza2VybWVudS94ZmNlNC13aGlza2VybWVudS1wbHVnaW5fMi4zLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5NWUzYzguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy93aGlza2VybWVudS94ZmNlNC13aGlza2VybWVudS1wbHVnaW5fMi4zLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1TVU1NQVJZID0gIkFuIGFsdGVybmF0ZSBtZW51IGZvciB0aGUgWGZjZSBkZXNrdG9wIGVudmlyb25tZW50IgotSE9NRVBBR0UgPSAiaHR0cDovL2dvdHRjb2RlLm9yZy94ZmNlNC13aGlza2VybWVudS1wbHVnaW4vIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1pbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luIGNtYWtlCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlZTllMzc4ZmFlNzhiMjMwYTIzYjI0MWNmNzI3Yzg0YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NGQzZGUzNTY5NWEwMjNhYWIxODFmN2E5Yjc1ZjU5MDI5ZWIzYjA3YzNlNDdhNWUxMWU4YmQ3OWRiNjI1NzBlIgotCi1SUkVDT01NRU5EU18ke1BOfSArPSAibWVudWxpYnJlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy93aGlza2VybWVudS94ZmNlNC13aGlza2VybWVudS1wbHVnaW5fMi40LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3doaXNrZXJtZW51L3hmY2U0LXdoaXNrZXJtZW51LXBsdWdpbl8yLjQuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGE2MzFiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy93aGlza2VybWVudS94ZmNlNC13aGlza2VybWVudS1wbHVnaW5fMi40LjMuYmIKQEAgLTAsMCArMSwxMSBAQAorU1VNTUFSWSA9ICJBbiBhbHRlcm5hdGUgbWVudSBmb3IgdGhlIFhmY2UgZGVza3RvcCBlbnZpcm9ubWVudCIKK0hPTUVQQUdFID0gImh0dHA6Ly9nb3R0Y29kZS5vcmcveGZjZTQtd2hpc2tlcm1lbnUtcGx1Z2luLyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworaW5oZXJpdCB4ZmNlLXBhbmVsLXBsdWdpbiBjbWFrZQorCitTUkNfVVJJW21kNXN1bV0gPSAiN2I2NjQzODk5NjEyN2I3NTlhZDYzNGY2NTc5ZTAwM2MiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzlmYWVlZTkxY2ViM2NiNzI3ZjlkZTA5ZGJmMjBhOGM3M2U1MjQ4NTFhMmMzYjc2YTRiMTlhMDczMmRlNWZmMCIKKworUlJFQ09NTUVORFNfJHtQTn0gKz0gIm1lbnVsaWJyZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXRodW5hci1wbHVnaW5zL3NoYXJlcy90aHVuYXItc2hhcmVzLXBsdWdpbl8wLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXRodW5hci1wbHVnaW5zL3NoYXJlcy90aHVuYXItc2hhcmVzLXBsdWdpbl8wLjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg1MDYzNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy10aHVuYXItcGx1Z2lucy9zaGFyZXMvdGh1bmFyLXNoYXJlcy1wbHVnaW5fMC4zLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1TVU1NQVJZID0gIlF1aWNrbHkgc2hhcmUgYSBmb2xkZXIgdXNpbmcgU2FtYmEgZnJvbSBUaHVuYXIiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCi0KLWluaGVyaXQgdGh1bmFyLXBsdWdpbiBmZWF0dXJlc19jaGVjawotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInBhbSIKLQotU1JDX1VSSVttZDVzdW1dID0gImExNzczMTY4YzBiM2M3YzBmMjUzYTMzOWYwMmU1YWUyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2YWRjMDFjYTQ1YTNkMjU2N2EyYTk2OWEzYjE2ZDE3OTlhODk3NTQ1M2FiMTgwM2EwNjVmYTgyNDk2YjViNjUiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJzYW1iYS1zZXJ2ZXIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy10aHVuYXItcGx1Z2lucy9zaGFyZXMvdGh1bmFyLXNoYXJlcy1wbHVnaW5fMC4zLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy10aHVuYXItcGx1Z2lucy9zaGFyZXMvdGh1bmFyLXNoYXJlcy1wbHVnaW5fMC4zLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVhZTAzYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXRodW5hci1wbHVnaW5zL3NoYXJlcy90aHVuYXItc2hhcmVzLXBsdWdpbl8wLjMuMS5iYgpAQCAtMCwwICsxLDExIEBACitTVU1NQVJZID0gIlF1aWNrbHkgc2hhcmUgYSBmb2xkZXIgdXNpbmcgU2FtYmEgZnJvbSBUaHVuYXIiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCisKK2luaGVyaXQgdGh1bmFyLXBsdWdpbiBmZWF0dXJlc19jaGVjaworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInBhbSIKKworU1JDX1VSSVttZDVzdW1dID0gIjA4ODQ4NTVkNjBjZjEwMzFiOTAxM2I2ZjViMTI1MzcyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRjMWQ4YzdjYWE3MjdlNzZkMDMzZDQ2NTNkYzA3NDI2MTNmNTdhMTcxMWQwMDUwOTAwNjU5YzkwYTg0NDUyYTAiCisKK1JERVBFTkRTXyR7UE59ICs9ICJzYW1iYS1zZXJ2ZXIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2V4by9leG9fMC4xMi4xMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZXhvL2V4b18wLjEyLjExLmJiCmluZGV4IDRjMTY2ODkuLjRhNWE3NzIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZXhvL2V4b18wLjEyLjExLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZXhvL2V4b18wLjEyLjExLmJiCkBAIC01LDcgKzUsNyBAQAogREVQRU5EUyA9ICJndGsrMyBsaWJ4ZmNlNHVpIHZpcnR1YWwvbGlieDExIGxpYnVyaS1wZXJsLW5hdGl2ZSBjYWlybyIKIERFUEVORFNfY2xhc3MtbmF0aXZlID0gImdsaWItMi4wLW5hdGl2ZSB4ZmNlNC1kZXYtdG9vbHMtbmF0aXZlIGludGx0b29sLW5hdGl2ZSIKIAotaW5oZXJpdCB4ZmNlIHBlcmxuYXRpdmUgZ3RrLWRvYyBmZWF0dXJlc19jaGVjaworaW5oZXJpdCB4ZmNlIHBlcmxuYXRpdmUgZ3RrLWRvYyBmZWF0dXJlc19jaGVjayBtaW1lLXhkZwogCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTX2NsYXNzLW5hdGl2ZSA9ICIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3RodW5hci90aHVuYXJfMS44LjEwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS90aHVuYXIvdGh1bmFyXzEuOC4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjIzNzZhYS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3RodW5hci90aHVuYXJfMS44LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotU1VNTUFSWSA9ICJGaWxlIG1hbmFnZXIgZm9yIHRoZSBYZmNlIERlc2t0b3AgRW52aXJvbm1lbnQiCi1TRUNUSU9OID0gIngxMSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLURFUEVORFMgPSAiZXhvIGdkay1waXhidWYgbGlieGZjZTR1aSBsaWJzbSBzdGFydHVwLW5vdGlmaWNhdGlvbiBsaWJub3RpZnkgeGZjZTQtcGFuZWwgdWRldiIKLQotaW5oZXJpdCB4ZmNlIGdvYmplY3QtaW50cm9zcGVjdGlvbiBmZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODVjNzM5NGQ4MjU0MmQ1YTAyM2YxZjViYWVmMTA5ZDgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2Q0NDhkODFjMGU0OWVmYmFhNWFlNmJmMzRhYzNjODhhNjE0MTc4YTExMjdhZmFlZTZiM2ExYjVlZTEyZTcwOSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS1lbmFibGUtcGNyZSwtLWRpc2FibGUtcGNyZSxsaWJwY3JlIgotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2xpYmRpcn0vdGh1bmFyeC0zLyogXAotICAgICR7bGliZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zLyogXAotICAgICR7bGliZGlyfS9UaHVuYXIvW1R0XWh1bmFyKiBcCi0gICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAotICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKLSAgICAke2RhdGFkaXJ9L21ldGFpbmZvIFwKLSAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKLSAgICAke2RhdGFkaXJ9L1RodW5hciBcCi0gICAgJHtkYXRhZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zLyogXAotIgotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJndmZzIGd2ZnNkLXRyYXNoIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS90aHVuYXIvdGh1bmFyXzEuOC4xMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvdGh1bmFyL3RodW5hcl8xLjguMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQyYmVmZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvdGh1bmFyL3RodW5hcl8xLjguMTIuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJGaWxlIG1hbmFnZXIgZm9yIHRoZSBYZmNlIERlc2t0b3AgRW52aXJvbm1lbnQiCitTRUNUSU9OID0gIngxMSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKK0RFUEVORFMgPSAiZXhvIGdkay1waXhidWYgbGlieGZjZTR1aSBsaWJzbSBzdGFydHVwLW5vdGlmaWNhdGlvbiBsaWJub3RpZnkgeGZjZTQtcGFuZWwgdWRldiIKKworaW5oZXJpdCB4ZmNlIGdvYmplY3QtaW50cm9zcGVjdGlvbiBmZWF0dXJlc19jaGVjayBtaW1lLXhkZworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmViZDJkODNhZDJlZDExMWI5MDZjOTliNjVmYjMyZWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjkyOTViZWUwYjFmNWJmZDUyNWUzNzQwNWU1ZDMyYjQ5N2FlNTM5YjE1MTgzZGQxNGU2Y2E0OWUyNTIyMjVmOCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS1lbmFibGUtcGNyZSwtLWRpc2FibGUtcGNyZSxsaWJwY3JlIgorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2xpYmRpcn0vdGh1bmFyeC0zLyogXAorICAgICR7bGliZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zLyogXAorICAgICR7bGliZGlyfS9UaHVuYXIvW1R0XWh1bmFyKiBcCisgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAorICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKKyAgICAke2RhdGFkaXJ9L21ldGFpbmZvIFwKKyAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKKyAgICAke2RhdGFkaXJ9L1RodW5hciBcCisgICAgJHtkYXRhZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zLyogXAorIgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJndmZzIGd2ZnNkLXRyYXNoIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1wYW5lbC94ZmNlNC1wYW5lbF80LjE0LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXBhbmVsL3hmY2U0LXBhbmVsXzQuMTQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MzZjMyMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXBhbmVsL3hmY2U0LXBhbmVsXzQuMTQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVNVTU1BUlkgPSAiWGZjZTQgUGFuZWwiCi1TRUNUSU9OID0gIngxMSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNmE4YmQ3NWQ4Zjg0OThiZGJiZTY0YTI3NzkxZDRlZSIKLURFUEVORFMgPSAiZ2FyY29uIGV4byBndGsrMyBjYWlybyB2aXJ0dWFsL2xpYngxMSBsaWJ4bWwyIGxpYnduY2szIHZhbGEtbmF0aXZlIgotCi1pbmhlcml0IHhmY2UgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZmVhdHVyZXNfY2hlY2sgcmVtb3ZlLWxpYnRvb2wKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjMzMjM1ODhmMWMxOGYwNDg5MWUwMTMyNDNkYTFlMzU1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljM2M3OGI0OWRkZmFjN2Q0MmE4MDRlNmE2YWQ5ZDIyYWQ2NGVjNjBiYmUxN2Q4NzI0YmM1MmQzZTNmNmQxMTQiCi1TUkNfVVJJICs9ICIgXAotICAgIGZpbGU6Ly8wMDAxLXdpbmRvd21lbnUtZG8tbm90LWRpc3BsYXktZGVza3RvcC1pY29uLXdoZW4tbm8td2luZG8ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLXVzZS1seGRtLXRvLXJlcGxhY2UtZG0tdG9vbC5wYXRjaCBcCi0iCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kKCkgewotICAgIHBsdWdpbl9kaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvJykKLSAgICBwbHVnaW5fbmFtZSA9IGQuZXhwYW5kKCcke1BOfS1wbHVnaW4tJXMnKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBsdWdpbl9kaXIsICdebGliKC4qKS5zbyQnLCBwbHVnaW5fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAnJHtQTn0gcGx1Z2luIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycsIHByZXBlbmQ9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICBhdXhfZmlsZXNfcGF0dGVybj1bJyR7ZGF0YWRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucy8lcy5kZXNrdG9wJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR7c3lzY29uZmRpcn0veGRnL3hmY2UvcGFuZWwvJXMtKicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNDh4NDgvYXBwcy8qLSVzLnBuZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2JpbmRpcn0vKiVzKiddKQotfQotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJeJHtQTn0tcGx1Z2luLS4qIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZ3RrMyIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS94ZmNlNC9wYW5lbC9taWdyYXRlIFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0veGZjZTQvcGFuZWwvd3JhcHBlci0xLjAiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvKi5sYSIKLQotRklMRVNfJHtQTn0tZ3RrMyA9ICIgXAotICAgICR7bGliZGlyfS9saWJ4ZmNlNHBhbmVsLTIuMCR7U09MSUJTfSBcCi0gICAgJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3dyYXBwZXItMi4wIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcGFuZWwveGZjZTQtcGFuZWxfNC4xNC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1wYW5lbC94ZmNlNC1wYW5lbF80LjE0LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZhYmVmMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcGFuZWwveGZjZTQtcGFuZWxfNC4xNC4zLmJiCkBAIC0wLDAgKzEsNDEgQEAKK1NVTU1BUlkgPSAiWGZjZTQgUGFuZWwiCitTRUNUSU9OID0gIngxMSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNmE4YmQ3NWQ4Zjg0OThiZGJiZTY0YTI3NzkxZDRlZSIKK0RFUEVORFMgPSAiZ2FyY29uIGV4byBndGsrMyBjYWlybyB2aXJ0dWFsL2xpYngxMSBsaWJ4bWwyIGxpYnduY2szIHZhbGEtbmF0aXZlIgorCitpbmhlcml0IHhmY2UgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZmVhdHVyZXNfY2hlY2sgcmVtb3ZlLWxpYnRvb2wgbWltZS14ZGcKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSVttZDVzdW1dID0gIjE3NzgxOGQ0YTg0NjMzYzFkNDg5ZjcwM2ZmZmU5MDVkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVmMjIzMjRkMjZlNWFmNzM1MTM0YmIxMGY4NWI2ZTE2NTI1YWM5ZjQ4YmU4ZDJmNmI2MzQxNDJmYmZjYWJiYzkiCitTUkNfVVJJICs9ICIgXAorICAgIGZpbGU6Ly8wMDAxLXdpbmRvd21lbnUtZG8tbm90LWRpc3BsYXktZGVza3RvcC1pY29uLXdoZW4tbm8td2luZG8ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLXVzZS1seGRtLXRvLXJlcGxhY2UtZG0tdG9vbC5wYXRjaCBcCisiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kKCkgeworICAgIHBsdWdpbl9kaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvJykKKyAgICBwbHVnaW5fbmFtZSA9IGQuZXhwYW5kKCcke1BOfS1wbHVnaW4tJXMnKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBsdWdpbl9kaXIsICdebGliKC4qKS5zbyQnLCBwbHVnaW5fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAnJHtQTn0gcGx1Z2luIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycsIHByZXBlbmQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICBhdXhfZmlsZXNfcGF0dGVybj1bJyR7ZGF0YWRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucy8lcy5kZXNrdG9wJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR7c3lzY29uZmRpcn0veGRnL3hmY2UvcGFuZWwvJXMtKicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNDh4NDgvYXBwcy8qLSVzLnBuZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2JpbmRpcn0vKiVzKiddKQorfQorCitQQUNLQUdFU19EWU5BTUlDICs9ICJeJHtQTn0tcGx1Z2luLS4qIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tZ3RrMyIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS94ZmNlNC9wYW5lbC9taWdyYXRlIFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0veGZjZTQvcGFuZWwvd3JhcHBlci0xLjAiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvKi5sYSIKKworRklMRVNfJHtQTn0tZ3RrMyA9ICIgXAorICAgICR7bGliZGlyfS9saWJ4ZmNlNHBhbmVsLTIuMCR7U09MSUJTfSBcCisgICAgJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3dyYXBwZXItMi4wIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcG93ZXItbWFuYWdlci94ZmNlNC1wb3dlci1tYW5hZ2VyXzEuNi41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1wb3dlci1tYW5hZ2VyL3hmY2U0LXBvd2VyLW1hbmFnZXJfMS42LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NWUyZTQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1wb3dlci1tYW5hZ2VyL3hmY2U0LXBvd2VyLW1hbmFnZXJfMS42LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1TVU1NQVJZID0gIlBvd2VyIG1hbmFnZXIgZm9yIHRoZSBYZmNlIGRlc2t0b3AgZW52aXJvbm1lbnQiCi1IT01FUEFHRSA9ICJodHRwOi8vZ29vZGllcy54ZmNlLm9yZy9wcm9qZWN0cy9hcHBsaWNhdGlvbnMveGZjZTQtcG93ZXItbWFuYWdlciIKLVNFQ1RJT04gPSAieDExIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgotCi1pbmhlcml0IHhmY2UgZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotREVQRU5EUyArPSAibGlibm90aWZ5IGxpYnhyYW5kciB2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IHhmY2U0LXBhbmVsIHVwb3dlciBsaWJ4c2NybnNhdmVyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzA5ZWZiYzJkZTllZDg0YjQ4MzE4NDdmZjcwYmNkN2YiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTBhZGI2Nzg5OWIxODFjYTVmYzU3N2ZjOWJiN2E2OThmYjk0ZTQyMDczNTg1ZjdlMmJlNjQyYzdkYjEyN2E3NCIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1lbmFibGUtbmV0d29yay1tYW5hZ2VyIFwKLSAgICAtLWVuYWJsZS1wYW5lbC1wbHVnaW5zIFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BvbGtpdCcsIGQpfSIKLVBBQ0tBR0VDT05GSUdbcG9sa2l0XSA9ICItLWVuYWJsZS1wb2xraXQsIC0tZGlzYWJsZS1wb2xraXQsIHBvbGtpdCIKLQotUEFDS0FHRVMgKz0gInhmY2U0LXBvd2VybWFuYWdlci1wbHVnaW4iCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAotICAgICR7ZGF0YWRpcn0vbWV0YWluZm8gXAotIgotCi1GSUxFU194ZmNlNC1wb3dlcm1hbmFnZXItcGx1Z2luID0gIiBcCi0gICAgJHtsaWJkaXJ9L3hmY2U0IFwKLSAgICAke2RhdGFkaXJ9L3hmY2U0IFwKLSIKLQotUkRFUEVORFNfeGZjZTQtcG93ZXJtYW5hZ2VyLXBsdWdpbiA9ICIke1BOfSIKLVJERVBFTkRTXyR7UE59ID0gIm5ldHdvcmttYW5hZ2VyICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnJywnY29uc29sZWtpdCcsZCl9IgotCi0jIHhmY2U0LWJyaWdodG5lc3MtcGx1Z2luIHdhcyByZXBsYWNlZCBieSB4ZmNlNC1wb3dlcm1hbmFnZXItcGx1Z2luCi1SUFJPVklERVNfeGZjZTQtcG93ZXJtYW5hZ2VyLXBsdWdpbiArPSAieGZjZTQtYnJpZ2h0bmVzcy1wbHVnaW4iCi1SUkVQTEFDRVNfeGZjZTQtcG93ZXJtYW5hZ2VyLXBsdWdpbiArPSAieGZjZTQtYnJpZ2h0bmVzcy1wbHVnaW4iCi1SQ09ORkxJQ1RTX3hmY2U0LXBvd2VybWFuYWdlci1wbHVnaW4gKz0gInhmY2U0LWJyaWdodG5lc3MtcGx1Z2luIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1wb3dlci1tYW5hZ2VyL3hmY2U0LXBvd2VyLW1hbmFnZXJfMS42LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXBvd2VyLW1hbmFnZXIveGZjZTQtcG93ZXItbWFuYWdlcl8xLjYuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDg5OTBhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1wb3dlci1tYW5hZ2VyL3hmY2U0LXBvd2VyLW1hbmFnZXJfMS42LjYuYmIKQEAgLTAsMCArMSw0MyBAQAorU1VNTUFSWSA9ICJQb3dlciBtYW5hZ2VyIGZvciB0aGUgWGZjZSBkZXNrdG9wIGVudmlyb25tZW50IgorSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvYXBwbGljYXRpb25zL3hmY2U0LXBvd2VyLW1hbmFnZXIiCitTRUNUSU9OID0gIngxMSIKKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKKworaW5oZXJpdCB4ZmNlIGZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK0RFUEVORFMgKz0gImxpYm5vdGlmeSBsaWJ4cmFuZHIgdmlydHVhbC9saWJ4MTEgbGlieGV4dCB4ZmNlNC1wYW5lbCB1cG93ZXIgbGlieHNjcm5zYXZlciIKKworU1JDX1VSSVttZDVzdW1dID0gIjE5ODczZmM4YTZkZTVlMzdlZDU3MDM2YTAwMDJhNWNlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiN2JmMGQzZThhZjY5YjEwZjdiNmE1MTg0NTFlMDFmYzc4ODhlMGQ5ZDM2MGJjMzNmNmM4OTE3OWJiNjA4MGIiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZW5hYmxlLW5ldHdvcmstbWFuYWdlciBcCisgICAgLS1lbmFibGUtcGFuZWwtcGx1Z2lucyBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwb2xraXQnLCBkKX0iCitQQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLS1lbmFibGUtcG9sa2l0LCAtLWRpc2FibGUtcG9sa2l0LCBwb2xraXQiCisKK1BBQ0tBR0VTICs9ICJ4ZmNlNC1wb3dlcm1hbmFnZXItcGx1Z2luIgorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKKyAgICAke2RhdGFkaXJ9L21ldGFpbmZvIFwKKyIKKworRklMRVNfeGZjZTQtcG93ZXJtYW5hZ2VyLXBsdWdpbiA9ICIgXAorICAgICR7bGliZGlyfS94ZmNlNCBcCisgICAgJHtkYXRhZGlyfS94ZmNlNCBcCisiCisKK1JERVBFTkRTX3hmY2U0LXBvd2VybWFuYWdlci1wbHVnaW4gPSAiJHtQTn0iCitSREVQRU5EU18ke1BOfSA9ICJuZXR3b3JrbWFuYWdlciAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJycsJ2NvbnNvbGVraXQnLGQpfSIKKworIyB4ZmNlNC1icmlnaHRuZXNzLXBsdWdpbiB3YXMgcmVwbGFjZWQgYnkgeGZjZTQtcG93ZXJtYW5hZ2VyLXBsdWdpbgorUlBST1ZJREVTX3hmY2U0LXBvd2VybWFuYWdlci1wbHVnaW4gKz0gInhmY2U0LWJyaWdodG5lc3MtcGx1Z2luIgorUlJFUExBQ0VTX3hmY2U0LXBvd2VybWFuYWdlci1wbHVnaW4gKz0gInhmY2U0LWJyaWdodG5lc3MtcGx1Z2luIgorUkNPTkZMSUNUU194ZmNlNC1wb3dlcm1hbmFnZXItcGx1Z2luICs9ICJ4ZmNlNC1icmlnaHRuZXNzLXBsdWdpbiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtc2Vzc2lvbi94ZmNlNC1zZXNzaW9uXzQuMTQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtc2Vzc2lvbi94ZmNlNC1zZXNzaW9uXzQuMTQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc1NjBjMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXNlc3Npb24veGZjZTQtc2Vzc2lvbl80LjE0LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1TVU1NQVJZID0gInhmY2U0LXNlc3Npb24gaXMgYSBzZXNzaW9uIG1hbmFnZXIgZm9yIFhmY2UgNCBEZXNrdG9wIEVudmlyb25tZW50IgotU0VDVElPTiA9ICJ4MTEiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OWFjMmU3Y2ZmMWRkYWY0OGI2ZWFiNjAyOGYyM2VmODgiCi0KLURFUEVORFMgPSAibGlid25jazMgbGlic20gbGlieGZjZTR1aSB2aXJ0dWFsL2xpYngxMSIKLQotaW5oZXJpdCB4ZmNlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BvbGtpdCcsIGQpfSIKLVBBQ0tBR0VDT05GSUdbcG9sa2l0XSA9ICItLWVuYWJsZS1wb2xraXQsIC0tZGlzYWJsZS1wb2xraXQsIHBvbGtpdCIKLQotU1JDX1VSSSArPSAiIFwKLSAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuaW4taGFyZC1jb2RlLXBhdGgtdG8taWNlYXV0aC5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNjM1MzYxZjk5YTAxYjJkMjZjNDMwYTUyMGI2ZDEzMTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTRmYjZkYjc0ZWI2OWViNDAwNjczODU2YmEzMDdhMGU1N2Y1NzdjZjc3YzM1NjFhNTkxMDE1MWUzZDUyMDQzZiIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAieC1zZXNzaW9uLW1hbmFnZXIiCi1BTFRFUk5BVElWRV9UQVJHRVRbeC1zZXNzaW9uLW1hbmFnZXJdID0gIiR7YmluZGlyfS94ZmNlNC1zZXNzaW9uIgotQUxURVJOQVRJVkVfUFJJT1JJVFlfJHtQTn0gPSAiMTAwIgotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2xpYmRpcn0veGZjZTQvKi8qLyouc28gXAotICAgICR7bGliZGlyfS94ZmNlNC9zZXNzaW9uLyotKi0qIFwKLSAgICAke2RhdGFkaXJ9L3hzZXNzaW9ucyBcCi0gICAgJHtkYXRhZGlyfS90aGVtZXMvRGVmYXVsdC9iYWxvdS8qIFwKLSAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKLSIKLQotUkRFUEVORFNfJHtQTn0gPSAiIFwKLSAgICBkYnVzLXgxMSBcCi0gICAgaWNlYXV0aCBcCi0gICAgbmV0YmFzZSBcCi0gICAgdXBvd2VyIFwKLSAgICB4aW5pdCBcCi0gICAgeHJkYiBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXNlc3Npb24veGZjZTQtc2Vzc2lvbl80LjE0LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXNlc3Npb24veGZjZTQtc2Vzc2lvbl80LjE0LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ5N2I3NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtc2Vzc2lvbi94ZmNlNC1zZXNzaW9uXzQuMTQuMi5iYgpAQCAtMCwwICsxLDQwIEBACitTVU1NQVJZID0gInhmY2U0LXNlc3Npb24gaXMgYSBzZXNzaW9uIG1hbmFnZXIgZm9yIFhmY2UgNCBEZXNrdG9wIEVudmlyb25tZW50IgorU0VDVElPTiA9ICJ4MTEiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OWFjMmU3Y2ZmMWRkYWY0OGI2ZWFiNjAyOGYyM2VmODgiCisKK0RFUEVORFMgPSAibGlid25jazMgbGlic20gbGlieGZjZTR1aSB2aXJ0dWFsL2xpYngxMSIKKworaW5oZXJpdCB4ZmNlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BvbGtpdCcsIGQpfSIKK1BBQ0tBR0VDT05GSUdbcG9sa2l0XSA9ICItLWVuYWJsZS1wb2xraXQsIC0tZGlzYWJsZS1wb2xraXQsIHBvbGtpdCIKKworU1JDX1VSSSArPSAiIFwKKyAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuaW4taGFyZC1jb2RlLXBhdGgtdG8taWNlYXV0aC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNWFkMjMwNjJmZDA4ZWY1ZjVhZDliNDM4OWM3YjU0YzYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmJlM2E0YTYwYzkxNTg5YTIwMjRjZTEyYjJkMjY2NzYyNWE4ZmVkY2JjOTBlZjAzMTgzMWY1NjMxOWY1OTdhZiIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAieC1zZXNzaW9uLW1hbmFnZXIiCitBTFRFUk5BVElWRV9UQVJHRVRbeC1zZXNzaW9uLW1hbmFnZXJdID0gIiR7YmluZGlyfS94ZmNlNC1zZXNzaW9uIgorQUxURVJOQVRJVkVfUFJJT1JJVFlfJHtQTn0gPSAiMTAwIgorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2xpYmRpcn0veGZjZTQvKi8qLyouc28gXAorICAgICR7bGliZGlyfS94ZmNlNC9zZXNzaW9uLyotKi0qIFwKKyAgICAke2RhdGFkaXJ9L3hzZXNzaW9ucyBcCisgICAgJHtkYXRhZGlyfS90aGVtZXMvRGVmYXVsdC9iYWxvdS8qIFwKKyAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKKyIKKworUkRFUEVORFNfJHtQTn0gPSAiIFwKKyAgICBkYnVzLXgxMSBcCisgICAgaWNlYXV0aCBcCisgICAgbmV0YmFzZSBcCisgICAgdXBvd2VyIFwKKyAgICB4aW5pdCBcCisgICAgeHJkYiBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXNldHRpbmdzL3hmY2U0LXNldHRpbmdzXzQuMTQuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtc2V0dGluZ3MveGZjZTQtc2V0dGluZ3NfNC4xNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzI2ZjkyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtc2V0dGluZ3MveGZjZTQtc2V0dGluZ3NfNC4xNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJYZmNlNCBzZXR0aW5ncyIKLVNFQ1RJT04gPSAieDExL3dtIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotREVQRU5EUyA9ICJleG8gZXhvLW5hdGl2ZSBnYXJjb24gbGlieGkgdmlydHVhbC9saWJ4MTEgeHJhbmRyIGxpYnhjdXJzb3IgbGlieGtsYXZpZXIgdXBvd2VyIgotCi1pbmhlcml0IHhmY2UgZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSSArPSAiIFwKLSAgICBmaWxlOi8vMDAwMS14c2V0dGluZ3MueG1sLVNldC1kZWZhdWx0LXRoZW1lcy5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiMmY0MTcxYzIxZGI5MDVkOWJhMGNhOWJlZTNmYzdhNWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTg3M2U5ZjZiOGU4MDFmZDkzMDRlZTEwMGM0Yzc2ZWQ5OTg3NDQ2YzM4NDI5ZDAyNDc3YzA4NjQzMWMwYmY3YSIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1tYWludGFpbmVyLW1vZGUgLS1kaXNhYmxlLWRlYnVnIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnYWxzYScsJ3NvdW5kLXNldHRlcicsIGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdwdWxzZWF1ZGlvJywnc291bmQtc2V0dGVyJywnJyxkKSxkKX0gXAotIgotUEFDS0FHRUNPTkZJR1tub3RpZnldID0gIi0tZW5hYmxlLWxpYm5vdGlmeSwtLWRpc2FibGUtbGlibm90aWZ5LGxpYm5vdGlmeSIKLVBBQ0tBR0VDT05GSUdbc291bmQtc2V0dGVyXSA9ICItLWVuYWJsZS1zb3VuZC1zZXR0aW5ncywgLS1kaXNhYmxlLXNvdW5kLXNldHRpbmdzLCBsaWJjYW5iZXJyYSwgbGliY2FuYmVycmEtZ3RrMiBzb3VuZC10aGVtZS1mcmVlZGVza3RvcCIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtsaWJkaXJ9L3hmY2U0IFwKLSAgICAke2RhdGFkaXJ9L3hmY2U0IFwKLSIKLQotUlJFQ09NTUVORFNfJHtQTn0gKz0gImFkd2FpdGEtaWNvbi10aGVtZSIKLVJSRUNPTU1FTkRTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnYWxzYScsJ2xpYmNhbmJlcnJhLWFsc2EnLCcnLGQpfSIKLVJSRUNPTU1FTkRTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywncHVsc2VhdWRpbycsJ2xpYmNhbmJlcnJhLXB1bHNlJywnJyxkKX0iCi1SUkVDT01NRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd4ZmNlNC1kYXRldGltZS1zZXR0ZXInLCcnLGQpfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtc2V0dGluZ3MveGZjZTQtc2V0dGluZ3NfNC4xNC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1zZXR0aW5ncy94ZmNlNC1zZXR0aW5nc180LjE0LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhjNjEyYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtc2V0dGluZ3MveGZjZTQtc2V0dGluZ3NfNC4xNC4zLmJiCkBAIC0wLDAgKzEsMzMgQEAKK1NVTU1BUlkgPSAiWGZjZTQgc2V0dGluZ3MiCitTRUNUSU9OID0gIngxMS93bSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKK0RFUEVORFMgPSAiZXhvIGV4by1uYXRpdmUgZ2FyY29uIGxpYnhpIHZpcnR1YWwvbGlieDExIHhyYW5kciBsaWJ4Y3Vyc29yIGxpYnhrbGF2aWVyIHVwb3dlciIKKworaW5oZXJpdCB4ZmNlIGZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1NSQ19VUkkgKz0gIiBcCisgICAgZmlsZTovLzAwMDEteHNldHRpbmdzLnhtbC1TZXQtZGVmYXVsdC10aGVtZXMucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImZlOGY3ZDQyMjFiZTE0NjdiODVjODUzOTM0NGMzZjA3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNhYjFhNGQ1MzUxZjk4NzE1MzM3MDA1MjM1NzBmODZmOTJiYmU2ZTQwNTVmNDRlNWRmOTUwZWI0YjRmNDhiYjMiCisKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtbWFpbnRhaW5lci1tb2RlIC0tZGlzYWJsZS1kZWJ1ZyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ2Fsc2EnLCdzb3VuZC1zZXR0ZXInLCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywncHVsc2VhdWRpbycsJ3NvdW5kLXNldHRlcicsJycsZCksZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbbm90aWZ5XSA9ICItLWVuYWJsZS1saWJub3RpZnksLS1kaXNhYmxlLWxpYm5vdGlmeSxsaWJub3RpZnkiCitQQUNLQUdFQ09ORklHW3NvdW5kLXNldHRlcl0gPSAiLS1lbmFibGUtc291bmQtc2V0dGluZ3MsIC0tZGlzYWJsZS1zb3VuZC1zZXR0aW5ncywgbGliY2FuYmVycmEsIGxpYmNhbmJlcnJhLWd0azIgc291bmQtdGhlbWUtZnJlZWRlc2t0b3AiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7bGliZGlyfS94ZmNlNCBcCisgICAgJHtkYXRhZGlyfS94ZmNlNCBcCisiCisKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJhZHdhaXRhLWljb24tdGhlbWUiCitSUkVDT01NRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ2Fsc2EnLCdsaWJjYW5iZXJyYS1hbHNhJywnJyxkKX0iCitSUkVDT01NRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3B1bHNlYXVkaW8nLCdsaWJjYW5iZXJyYS1wdWxzZScsJycsZCl9IgorUlJFQ09NTUVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywneGZjZTQtZGF0ZXRpbWUtc2V0dGVyJywnJyxkKX0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmZGVza3RvcC94ZmRlc2t0b3BfNC4xNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmRlc2t0b3AveGZkZXNrdG9wXzQuMTQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU5ZjQwYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmZGVza3RvcC94ZmRlc2t0b3BfNC4xNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSA9ICJYZmNlNCBEZXNrdG9wIE1hbmFnZXIiCi1TRUNUSU9OID0gIngxMS9iYXNlIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotREVQRU5EUyA9ICJsaWJ4ZmNlNHVpIGxpYnduY2sgdGh1bmFyIGdhcmNvbiBleG8iCi0KLWluaGVyaXQgeGZjZSBmZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZGU0YjhmNjY4Nzg2MmFkNDZkYmU0ZTFjZWQ0NTNmNGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjcwNWEwMTYyNDZlYzU0YWIwYzY4OGQxYTA1NzdmNmMyYjQ1YTQ0NjY5MGFhOGQ5ZTVhN2FjMjNlZmViZjg4MiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbbm90aWZ5XSA9ICItLWVuYWJsZS1ub3RpZmljYXRpb25zLC0tZGlzYWJsZS1ub3RpZmljYXRpb25zLGxpYm5vdGlmeSIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYmFja2dyb3VuZHMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmZGVza3RvcC94ZmRlc2t0b3BfNC4xNC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmRlc2t0b3AveGZkZXNrdG9wXzQuMTQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTEyYTYyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmRlc2t0b3AveGZkZXNrdG9wXzQuMTQuMi5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIlhmY2U0IERlc2t0b3AgTWFuYWdlciIKK1NFQ1RJT04gPSAieDExL2Jhc2UiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCitERVBFTkRTID0gImxpYnhmY2U0dWkgbGlid25jayB0aHVuYXIgZ2FyY29uIGV4byIKKworaW5oZXJpdCB4ZmNlIGZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1ZGIwOWRmMzliMDgwOGYyNWJkM2EzMTI4ZjhjOWU3NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhMzA1MzQ0NjFmZWE5MDdmOTY5ZjYwOGExMWM4NGJlMGIxYWFhZDY4N2M1OTFjMzJjZDU2YTlkMjc0ZWEzZTc0IgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tub3RpZnldID0gIi0tZW5hYmxlLW5vdGlmaWNhdGlvbnMsLS1kaXNhYmxlLW5vdGlmaWNhdGlvbnMsbGlibm90aWZ5IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9iYWNrZ3JvdW5kcyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZ3bTQveGZ3bTRfNC4xNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZndtNC94ZndtNF80LjE0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3N2U2MTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZndtNC94ZndtNF80LjE0LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJYZmNlNCBXaW5kb3cgTWFuYWdlciIKLVNFQ1RJT04gPSAieDExL3dtIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3OTE3MjhhMDczYmMwMDliNGZmYWYwMGI3NTk5ODU1IgotREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSBsaWJ4ZmNlNHVpIGxpYnduY2szIGxpYnhpbmVyYW1hIGV4by1uYXRpdmUiCi0KLWluaGVyaXQgeGZjZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIGZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLVJldmVydC1jb21wb3NpdG9yLVJldmVydC10by1HTFgtYXMtZGVmYXVsdC12YmxhbmstbWUucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiYzMzODQ3ODM2OTU4ZDU0MGUzZWNkMGEyN2YxMzFjMGYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjQxODJiZjhkYzYzZDA5MmYxMjBhNTFmY2FlMGViNTRiOWJkNGFhNGY4NDg2ZjQ3ZTVhNjVhMTA4MzIyYjYxNSIKLQotUEFDS0FHRUNPTkZJRyA/PSAiIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdlcG94eScsICcnLCBkKX0gXAotICAgIHhwcmVzZW50IFwKLSAgICBzdGFydHVwLW5vdGlmaWNhdGlvbiBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbZXBveHldID0gIi0tZW5hYmxlLWVwb3h5LC0tZGlzYWJsZS1lcG94eSxsaWJlcG94eSIKLVBBQ0tBR0VDT05GSUdbeHByZXNlbnRdID0gIi0tZW5hYmxlLXhwcmVzZW50LC0tZGlzYWJsZS14cHJlc2VudCxsaWJ4cHJlc2VudCIKLVBBQ0tBR0VDT05GSUdbc3RhcnR1cC1ub3RpZmljYXRpb25dID0gIi0tZW5hYmxlLXN0YXJ0dXAtbm90aWZpY2F0aW9uLC0tZGlzYWJsZS1zdGFydHVwLW5vdGlmaWNhdGlvbixzdGFydHVwLW5vdGlmaWNhdGlvbiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIHRoZW1lZGlyID0gZC5leHBhbmQoJyR7ZGF0YWRpcn0vdGhlbWVzJykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCB0aGVtZWRpciwgJ14oLiopJywgJ3hmd200LXRoZW1lLSVzJywgJ1hGV000IHRoZW1lICVzJywgYWxsb3dfZGlycz1UcnVlKQotfQotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJeeGZ3bTQtdGhlbWUtLioiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gIngtd2luZG93LW1hbmFnZXIiCi1BTFRFUk5BVElWRV9UQVJHRVRbeC13aW5kb3ctbWFuYWdlcl0gPSAiJHtiaW5kaXJ9L3hmd200IgotQUxURVJOQVRJVkVfUFJJT1JJVFlbeC13aW5kb3ctbWFuYWdlcl0gPSAiMzAiCi0KLVJERVBFTkRTXyR7UE59ID0gInhmd200LXRoZW1lLWRlZmF1bHQiCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3hmY2U0L3hmd200L2hlbHBlci1kaWFsb2cgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0veGZ3bTQvZGVmYXVsdHMgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZndtNC94ZndtNF80LjE0LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmd200L3hmd200XzQuMTQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTdlMTRmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZndtNC94ZndtNF80LjE0LjEuYmIKQEAgLTAsMCArMSwzOSBAQAorREVTQ1JJUFRJT04gPSAiWGZjZTQgV2luZG93IE1hbmFnZXIiCitTRUNUSU9OID0gIngxMS93bSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzkxNzI4YTA3M2JjMDA5YjRmZmFmMDBiNzU5OTg1NSIKK0RFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlieGZjZTR1aSBsaWJ3bmNrMyBsaWJ4aW5lcmFtYSBleG8tbmF0aXZlIgorCitpbmhlcml0IHhmY2UgdXBkYXRlLWFsdGVybmF0aXZlcyBmZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1SZXZlcnQtY29tcG9zaXRvci1SZXZlcnQtdG8tR0xYLWFzLWRlZmF1bHQtdmJsYW5rLW1lLnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gImIyMGJkMjJiZGJlMWIxN2Y3NmExMzlmZDc0ZTA3MmE5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEwMDc4MWExODA3MDc2MmU4ZjM0YzFkNDUwZTc2NzU4NjU3Njc1M2Q1NjdmNzZhOGMzMjgxODI4NGY1MTE0MjgiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnZXBveHknLCAnJywgZCl9IFwKKyAgICB4cHJlc2VudCBcCisgICAgc3RhcnR1cC1ub3RpZmljYXRpb24gXAorIgorCitQQUNLQUdFQ09ORklHW2Vwb3h5XSA9ICItLWVuYWJsZS1lcG94eSwtLWRpc2FibGUtZXBveHksbGliZXBveHkiCitQQUNLQUdFQ09ORklHW3hwcmVzZW50XSA9ICItLWVuYWJsZS14cHJlc2VudCwtLWRpc2FibGUteHByZXNlbnQsbGlieHByZXNlbnQiCitQQUNLQUdFQ09ORklHW3N0YXJ0dXAtbm90aWZpY2F0aW9uXSA9ICItLWVuYWJsZS1zdGFydHVwLW5vdGlmaWNhdGlvbiwtLWRpc2FibGUtc3RhcnR1cC1ub3RpZmljYXRpb24sc3RhcnR1cC1ub3RpZmljYXRpb24iCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICB0aGVtZWRpciA9IGQuZXhwYW5kKCcke2RhdGFkaXJ9L3RoZW1lcycpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgdGhlbWVkaXIsICdeKC4qKScsICd4ZndtNC10aGVtZS0lcycsICdYRldNNCB0aGVtZSAlcycsIGFsbG93X2RpcnM9VHJ1ZSkKK30KKworUEFDS0FHRVNfRFlOQU1JQyArPSAiXnhmd200LXRoZW1lLS4qIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJ4LXdpbmRvdy1tYW5hZ2VyIgorQUxURVJOQVRJVkVfVEFSR0VUW3gtd2luZG93LW1hbmFnZXJdID0gIiR7YmluZGlyfS94ZndtNCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3gtd2luZG93LW1hbmFnZXJdID0gIjMwIgorCitSREVQRU5EU18ke1BOfSA9ICJ4ZndtNC10aGVtZS1kZWZhdWx0IgorRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS94ZmNlNC94ZndtNC9oZWxwZXItZGlhbG9nIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3hmd200L2RlZmF1bHRzIFwKKyIKZGlmZiAtLWdpdCBhL3Bva3kvLmdpdGlnbm9yZSBiL3Bva3kvLmdpdGlnbm9yZQppbmRleCBhZDFjYjgzLi42ZGRlNTQwIDEwMDY0NAotLS0gYS9wb2t5Ly5naXRpZ25vcmUKKysrIGIvcG9reS8uZ2l0aWdub3JlCkBAIC04LDYgKzgsNyBAQAogc2NyaXB0cy9vZS1naXQtcHJveHktc29ja3MKIHNvdXJjZXMvCiBtZXRhLSovCitidWlsZHRvb2xzLwogIW1ldGEtc2tlbGV0b24KICFtZXRhLXNlbGZ0ZXN0CiBob2ItaW1hZ2UtKi5iYgpkaWZmIC0tZ2l0IGEvcG9reS9NRU1PUklBTSBiL3Bva3kvTUVNT1JJQU0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzY2U0NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvTUVNT1JJQU0KQEAgLTAsMCArMSw1IEBACitTb21lIHByb2plY3QgY29udHJpYnV0b3JzIHdobyBhcmUgc2FkbHkgbm8gbG9uZ2VyIHdpdGggdXM6CisKK0dyZWcgR2lsYmVydCAodHJla2UpIC0gQWhlYWQgb2YgaGlzIHRpbWUgd2l0aCBsaWNlbnNpbmcKK1Rob21hcyBXb29kICh0aG9zKSAtIENyZWF0b3Igb2YgdGhlIG9yaWdpbmFsIHNhdG8KK1Njb3R0IFJpZmVuYmFyayAoc2NvdHRyaWYpIC0gT3VyIGxvbmcgc3RhbmRpbmcgdGVjaHdyaXRlciB3aG9zZSB3b3JkcyBsaXZlIG9uCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvYmluL2JpdGJha2UgYi9wb2t5L2JpdGJha2UvYmluL2JpdGJha2UKaW5kZXggNjZkMDhmOC4uNmM3MzcxMCAxMDA3NTUKLS0tIGEvcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlCisrKyBiL3Bva3kvYml0YmFrZS9iaW4vYml0YmFrZQpAQCAtMjYsNyArMjYsNyBAQAogaWYgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpICE9ICJ1dGYtOCI6CiAgICAgc3lzLmV4aXQoIlBsZWFzZSB1c2UgYSBsb2NhbGUgc2V0dGluZyB3aGljaCBzdXBwb3J0cyBVVEYtOCAoc3VjaCBhcyBMQU5HPWVuX1VTLlVURi04KS5cblB5dGhvbiBjYW4ndCBjaGFuZ2UgdGhlIGZpbGVzeXN0ZW0gbG9jYWxlIGFmdGVyIGxvYWRpbmcgc28gd2UgbmVlZCBhIFVURi04IHdoZW4gUHl0aG9uIHN0YXJ0cyBvciB0aGluZ3Mgd29uJ3Qgd29yay4iKQogCi1fX3ZlcnNpb25fXyA9ICIxLjQ0LjAiCitfX3ZlcnNpb25fXyA9ICIxLjQ2LjAiCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaWYgX192ZXJzaW9uX18gIT0gYmIuX192ZXJzaW9uX186CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvYmluL2JpdGJha2UtbGF5ZXJzIGIvcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLWxheWVycwppbmRleCBhODg0ZGMxLi4xNDlmMWIxIDEwMDc1NQotLS0gYS9wb2t5L2JpdGJha2UvYmluL2JpdGJha2UtbGF5ZXJzCisrKyBiL3Bva3kvYml0YmFrZS9iaW4vYml0YmFrZS1sYXllcnMKQEAgLTUyLDcgKzUyLDkgQEAKIAogICAgICMgTmVlZCB0byByZS1ydW4gbG9nZ2VyX2NyZWF0ZSB3aXRoIGNvbG9yIGFyZ3VtZW50CiAgICAgIyAod2lsbCBiZSB0aGUgc2FtZSBsb2dnZXIgc2luY2UgaXQgaGFzIHRoZSBzYW1lIG5hbWUpCi0gICAgYmIubXNnLmxvZ2dlcl9jcmVhdGUoJ2JpdGJha2UtbGF5ZXJzJywgb3V0cHV0PXN5cy5zdGRvdXQsIGNvbG9yPWdsb2JhbF9hcmdzLmNvbG9yKQorICAgIGJiLm1zZy5sb2dnZXJfY3JlYXRlKCdiaXRiYWtlLWxheWVycycsIG91dHB1dD1zeXMuc3Rkb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPWdsb2JhbF9hcmdzLmNvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPWxvZ2dlci5nZXRFZmZlY3RpdmVMZXZlbCgpKQogCiAgICAgcGx1Z2lucyA9IFtdCiAgICAgdGluZm9pbCA9IGJiLnRpbmZvaWwuVGluZm9pbCh0cmFja2luZz1UcnVlKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLXdvcmtlciBiL3Bva3kvYml0YmFrZS9iaW4vYml0YmFrZS13b3JrZXIKaW5kZXggMWU2NDFlOC4uOTdjYzBmZCAxMDA3NTUKLS0tIGEvcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLXdvcmtlcgorKysgYi9wb2t5L2JpdGJha2UvYmluL2JpdGJha2Utd29ya2VyCkBAIC02NSw3ICs2NSw2IEBACiAgICAgZm9ybWF0X3N0ciA9ICIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIKICAgICBjb25sb2dmb3JtYXQgPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIoZm9ybWF0X3N0cikKICAgICBjb25zb2xlbG9nID0gbG9nZ2luZy5GaWxlSGFuZGxlcihsb2dmaWxlbmFtZSkKLSAgICBiYi5tc2cuYWRkRGVmYXVsdGxvZ0ZpbHRlcihjb25zb2xlbG9nKQogICAgIGNvbnNvbGVsb2cuc2V0Rm9ybWF0dGVyKGNvbmxvZ2Zvcm1hdCkKICAgICBsb2dnZXIuYWRkSGFuZGxlcihjb25zb2xlbG9nKQogCkBAIC00MTQsNyArNDEzLDcgQEAKIAogICAgIGRlZiBoYW5kbGVfd29ya2VyZGF0YShzZWxmLCBkYXRhKToKICAgICAgICAgc2VsZi53b3JrZXJkYXRhID0gcGlja2xlLmxvYWRzKGRhdGEpCi0gICAgICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0RGVidWdMZXZlbCA9IHNlbGYud29ya2VyZGF0YVsibG9nZGVmYXVsdGRlYnVnIl0KKyAgICAgICAgYmIubXNnLmxvZ2dlckRlZmF1bHRMb2dMZXZlbCA9IHNlbGYud29ya2VyZGF0YVsibG9nZGVmYXVsdGxldmVsIl0KICAgICAgICAgYmIubXNnLmxvZ2dlckRlZmF1bHRWZXJib3NlID0gc2VsZi53b3JrZXJkYXRhWyJsb2dkZWZhdWx0dmVyYm9zZSJdCiAgICAgICAgIGJiLm1zZy5sb2dnZXJWZXJib3NlTG9ncyA9IHNlbGYud29ya2VyZGF0YVsibG9nZGVmYXVsdHZlcmJvc2Vsb2dzIl0KICAgICAgICAgYmIubXNnLmxvZ2dlckRlZmF1bHREb21haW5zID0gc2VsZi53b3JrZXJkYXRhWyJsb2dkZWZhdWx0ZG9tYWluIl0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9iaW4vdG9hc3RlciBiL3Bva3kvYml0YmFrZS9iaW4vdG9hc3RlcgppbmRleCBjMzQ3MmRmLi42YjkwZWUxIDEwMDc1NQotLS0gYS9wb2t5L2JpdGJha2UvYmluL3RvYXN0ZXIKKysrIGIvcG9reS9iaXRiYWtlL2Jpbi90b2FzdGVyCkBAIC04LDEyICs4LDEzIEBACiAjCiAKIEhFTFA9IgotVXNhZ2U6IHNvdXJjZSB0b2FzdGVyIHN0YXJ0fHN0b3AgW3dlYnBvcnQ9PGFkZHJlc3M6cG9ydD5dIFtub3dlYl0gW25vYnVpbGRdIFt0b2FzdGVyZGlyXQorVXNhZ2UgMTogc291cmNlIHRvYXN0ZXIgc3RhcnR8c3RvcCBbd2VicG9ydD08YWRkcmVzczpwb3J0Pl0gW25vd2ViXSBbbm9idWlsZF0gW3RvYXN0ZXJkaXJdCiAgICAgT3B0aW9uYWwgYXJndW1lbnRzOgogICAgICAgICBbbm9idWlsZF0gU2V0dXAgdGhlIGVudmlyb25tZW50IGZvciBjYXB0dXJpbmcgYnVpbGRzIHdpdGggdG9hc3RlciBidXQgZGlzYWJsZSBtYW5hZ2VkIGJ1aWxkcwogICAgICAgICBbbm93ZWJdIFNldHVwIHRoZSBlbnZpcm9ubWVudCBmb3IgY2FwdHVyaW5nIGJ1aWxkcyB3aXRoIHRvYXN0ZXIgYnV0IGRvbid0IHN0YXJ0IHRoZSB3ZWIgc2VydmVyCiAgICAgICAgIFt3ZWJwb3J0XSBTZXQgdGhlIGRldmVsb3BtZW50IHNlcnZlciAoZGVmYXVsdDogbG9jYWxob3N0OjgwMDApCiAgICAgICAgIFt0b2FzdGVyZGlyXSBTZXQgYWJzb2x1dGUgcGF0aCB0byBiZSB1c2VkIGFzIFRPQVNURVJfRElSIChkZWZhdWx0OiBCVUlMRERJUi8uLi8pCitVc2FnZSAyOiBzb3VyY2UgdG9hc3RlciBtYW5hZ2UgW2NyZWF0ZXN1cGVydXNlcnxsc3VwZGF0ZXN8bWlncmF0ZXxtYWtlbWlncmF0aW9uc3xjaGVja3NldHRpbmdzfGNvbGxlY3RzdGF0aWN8Li4uXQogIgogCiBjdXN0b21fZXh0ZW50aW9uKCkKQEAgLTIwOCwxMyArMjA5LDIxIEBACiAgICAgdG9hc3RlcmRpcj0qKQogICAgICAgICAgICAgVE9BU1RFUkRJUj0iJHtwYXJhbSMqPX0iCiAgICAgOzsKKyAgICBtYW5hZ2UgKQorICAgICAgICAgICAgQ01EPSRwYXJhbQorICAgICAgICAgICAgbWFuYWdlX2NtZD0iIgorICAgIDs7CiAgICAgLS1oZWxwKQogICAgICAgICAgICAgZWNobyAiJEhFTFAiCiAgICAgICAgICAgICByZXR1cm4gMAogICAgIDs7CiAgICAgKikKLSAgICAgICAgICAgIGVjaG8gIiRIRUxQIgotICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgICAgIGlmIFsgIm1hbmFnZSIgPT0gIiRDTUQiIF0gOyB0aGVuCisgICAgICAgICAgICAgICAgbWFuYWdlX2NtZD0iJG1hbmFnZV9jbWQgJHBhcmFtIgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVjaG8gIiRIRUxQIgorICAgICAgICAgICAgICAgIGV4aXQgMQorICAgICAgICAgICAgZmkKICAgICA7OwogCiAgICAgZXNhYwpAQCAtMzA2LDYgKzMxNSwxMCBAQAogICAgICAgICBzdG9wX3N5c3RlbQogICAgICAgICBlY2hvICJTdWNjZXNzZnVsICR7Q01EfS4iCiAgICAgOzsKKyAgICBtYW5hZ2UgKQorICAgICAgICBjZCAkQkJCQVNFRElSL2xpYi90b2FzdGVyCisgICAgICAgICRNQU5BR0UgJG1hbmFnZV9jbWQKKyAgICA7OwogZXNhYwogY3VzdG9tX2V4dGVudGlvbiB0b2FzdGVyX3Bvc3RwZW5kICRDTUQgJEFERFJfUE9SVAogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvY29udHJpYi9hdXRvYnVpbGRlcmxvZy5qc29uIGIvcG9reS9iaXRiYWtlL2NvbnRyaWIvYXV0b2J1aWxkZXJsb2cuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTNhNjc1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2NvbnRyaWIvYXV0b2J1aWxkZXJsb2cuanNvbgpAQCAtMCwwICsxLDEzIEBACit7CisgICAgInZlcnNpb24iOiAxLAorICAgICJsb2dnZXJzIjogeworICAgICAgICAiQml0QmFrZS5TaWdHZW4uSGFzaEVxdWl2IjogeworICAgICAgICAgICAgImxldmVsIjogIlZFUkJPU0UiLAorICAgICAgICAgICAgImhhbmRsZXJzIjogWyJCaXRCYWtlLnZlcmJjb25zb2xlIl0KKyAgICAgICAgfSwKKyAgICAgICAgIkJpdEJha2UuUnVuUXVldWUuSGFzaEVxdWl2IjogeworICAgICAgICAgICAgImxldmVsIjogIlZFUkJPU0UiLAorICAgICAgICAgICAgImhhbmRsZXJzIjogWyJCaXRCYWtlLnZlcmJjb25zb2xlIl0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWV4ZWN1dGlvbi54bWwgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1leGVjdXRpb24ueG1sCmluZGV4IDQ2ZGFmZWUuLjZjNTIzNGUgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWV4ZWN1dGlvbi54bWwKKysrIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtZXhlY3V0aW9uLnhtbApAQCAtMTEzLDcgKzExMyw3IEBACiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFByaW9yIHRvIHBhcnNpbmcgY29uZmlndXJhdGlvbiBmaWxlcywgQml0YmFrZSBsb29rcworICAgICAgICAgICAgUHJpb3IgdG8gcGFyc2luZyBjb25maWd1cmF0aW9uIGZpbGVzLCBCaXRCYWtlIGxvb2tzCiAgICAgICAgICAgICBhdCBjZXJ0YWluIHZhcmlhYmxlcywgaW5jbHVkaW5nOgogICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CkBAIC0zMzksNyArMzM5LDcgQEAKICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQl9IQVNIQ09ORklHX1dISVRFTElTVCc+PGZpbGVuYW1lPkJCX0hBU0hDT05GSUdfV0hJVEVMSVNUPC9maWxlbmFtZT48L2xpbms+KQogICAgICAgICAgICAgYW5kIHRoZW4gY2hlY2tpbmcgaWYgdGhlIGNoZWNrc3VtIG1hdGNoZXMuCiAgICAgICAgICAgICBJZiB0aGF0IGNoZWNrc3VtIG1hdGNoZXMgd2hhdCBpcyBpbiB0aGUgY2FjaGUgYW5kIHRoZSByZWNpcGUKLSAgICAgICAgICAgIGFuZCBjbGFzcyBmaWxlcyBoYXZlIG5vdCBjaGFuZ2VkLCBCaXRiYWtlIGlzIGFibGUgdG8gdXNlCisgICAgICAgICAgICBhbmQgY2xhc3MgZmlsZXMgaGF2ZSBub3QgY2hhbmdlZCwgQml0QmFrZSBpcyBhYmxlIHRvIHVzZQogICAgICAgICAgICAgdGhlIGNhY2hlLgogICAgICAgICAgICAgQml0QmFrZSB0aGVuIHJlbG9hZHMgdGhlIGNhY2hlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVjaXBlCiAgICAgICAgICAgICBpbnN0ZWFkIG9mIHJlcGFyc2luZyBpdCBmcm9tIHNjcmF0Y2guCkBAIC00MjksNyArNDI5LDcgQEAKICAgICAgICAgICAgIFRoZSBkZWZhdWx0CiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItUFJFRkVSUkVEX1BST1ZJREVSJz48ZmlsZW5hbWU+UFJFRkVSUkVEX1BST1ZJREVSPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICBpcyB0aGUgcHJvdmlkZXIgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSB0YXJnZXQuCi0gICAgICAgICAgICBCaXRiYWtlIGl0ZXJhdGVzIHRocm91Z2ggZWFjaCB0YXJnZXQgaXQgbmVlZHMgdG8gYnVpbGQgYW5kCisgICAgICAgICAgICBCaXRCYWtlIGl0ZXJhdGVzIHRocm91Z2ggZWFjaCB0YXJnZXQgaXQgbmVlZHMgdG8gYnVpbGQgYW5kCiAgICAgICAgICAgICByZXNvbHZlcyB0aGVtIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMgdXNpbmcgdGhpcyBwcm9jZXNzLgogICAgICAgICA8L3BhcmE+CiAKQEAgLTgyMSw3ICs4MjEsNyBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgSXQgaXMgd29ydGggbm90aW5nIHRoYXQgQml0QmFrZSdzICItUyIgb3B0aW9uIGxldHMgeW91Ci0gICAgICAgICAgICBkZWJ1ZyBCaXRiYWtlJ3MgcHJvY2Vzc2luZyBvZiBzaWduYXR1cmVzLgorICAgICAgICAgICAgZGVidWcgQml0QmFrZSdzIHByb2Nlc3Npbmcgb2Ygc2lnbmF0dXJlcy4KICAgICAgICAgICAgIFRoZSBvcHRpb25zIHBhc3NlZCB0byAtUyBhbGxvdyBkaWZmZXJlbnQgZGVidWdnaW5nIG1vZGVzCiAgICAgICAgICAgICB0byBiZSB1c2VkLCBlaXRoZXIgdXNpbmcgQml0QmFrZSdzIG93biBkZWJ1ZyBmdW5jdGlvbnMKICAgICAgICAgICAgIG9yIHBvc3NpYmx5IHRob3NlIGRlZmluZWQgaW4gdGhlIG1ldGFkYXRhL3NpZ25hdHVyZSBoYW5kbGVyCkBAIC05MjksNCArOTI5LDEwMSBAQAogICAgICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJsb2dnaW5nIj4KKyAgICAgICAgPHRpdGxlPkxvZ2dpbmc8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIGFkZGl0aW9uIHRvIHRoZSBzdGFuZGFyZCBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIGNvbnRyb2wgaG93CisgICAgICAgICAgICB2ZXJib3NlIGJ1aWxkcyBhcmUgd2hlbiBleGVjdXRlLCBiaXRiYWtlIGFsc28gc3VwcG9ydHMgdXNlciBkZWZpbmVkCisgICAgICAgICAgICBjb25maWd1cmF0aW9uIG9mIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2xvZ2dpbmcuaHRtbCc+UHl0aG9uIGxvZ2dpbmc8L3VsaW5rPgorICAgICAgICAgICAgZmFjaWxpdGllcyB0aHJvdWdoIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0idmFyLWJiLUJCX0xPR0NPTkZJRyI+PGZpbGVuYW1lPkJCX0xPR0NPTkZJRzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUuIFRoaXMgdmFyaWFibGUgZGVmaW5lcyBhIGpzb24gb3IgeWFtbAorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2xvZ2dpbmcuY29uZmlnLmh0bWwnPmxvZ2dpbmcgY29uZmlndXJhdGlvbjwvdWxpbms+CisgICAgICAgICAgICB0aGF0IHdpbGwgYmUgaW50ZWxsaWdlbnRseSBtZXJnZWQgaW50byB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgVGhlIGxvZ2dpbmcgY29uZmlndXJhdGlvbiBpcyBtZXJnZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBydWxlczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgdXNlciBkZWZpbmVkIGNvbmZpZ3VyYXRpb24gd2lsbCBjb21wbGV0ZWx5IHJlcGxhY2UgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBpZiB0b3AgbGV2ZWwga2V5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlX21lcmdlPC9maWxlbmFtZT4gaXMgc2V0IHRvIHRoZSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RmFsc2U8L2ZpbGVuYW1lPi4gSW4gdGhpcyBjYXNlLCBhbGwgb3RoZXIgcnVsZXMKKyAgICAgICAgICAgICAgICAgICAgYXJlIGlnbm9yZWQuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgdXNlciBjb25maWd1cmF0aW9uIG11c3QgaGF2ZSBhIHRvcCBsZXZlbAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dmVyc2lvbjwvZmlsZW5hbWU+IHdoaWNoIG11c3QgbWF0Y2ggdGhlIHZhbHVlIG9mCisgICAgICAgICAgICAgICAgICAgIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBbnkga2V5cyBkZWZpbmVkIGluIHRoZSA8ZmlsZW5hbWU+aGFuZGxlcnM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvcm1hdHRlcnM8L2ZpbGVuYW1lPiwgb3IgPGZpbGVuYW1lPmZpbHRlcnM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBtZXJnZWQgaW50byB0aGUgc2FtZSBzZWN0aW9uIGluIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24sIHdpdGggdGhlIHVzZXIgc3BlY2lmaWVkIGtleXMgdGFraW5nCisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2luZyBhIGRlZmF1bHQgb25lIGlmIHRoZXJlIGlzIGEgY29uZmxpY3QuIEluCisgICAgICAgICAgICAgICAgICAgIHByYWN0aWNlLCB0aGlzIG1lYW5zIHRoYXQgaWYgYm90aCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGFuZCB1c2VyIGNvbmZpZ3VyYXRpb24gc3BlY2lmeSBhIGhhbmRsZXIgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm15aGFuZGxlcjwvZmlsZW5hbWU+LCB0aGUgdXNlciBkZWZpbmVkIG9uZSB3aWxsCisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgdGhlIGRlZmF1bHQuIFRvIHByZXZlbnQgdGhlIHVzZXIgZnJvbSBpbmFkdmVydGVudGx5CisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2luZyBhIGRlZmF1bHQgaGFuZGxlciwgZm9ybWF0dGVyLCBvciBmaWx0ZXIsIGFsbCBvZgorICAgICAgICAgICAgICAgICAgICB0aGUgZGVmYXVsdCBvbmVzIGFyZSBuYW1lZCB3aXRoIGEgcHJlZml4IG9mCisgICAgICAgICAgICAgICAgICAgICI8ZmlsZW5hbWU+Qml0QmFrZS48L2ZpbGVuYW1lPiIKKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIElmIGEgbG9nZ2VyIGlzIGRlZmluZWQgYnkgdGhlIHVzZXIgd2l0aCB0aGUga2V5CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlX21lcmdlPC9maWxlbmFtZT4gc2V0IHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5GYWxzZTwvZmlsZW5hbWU+LCB0aGF0IGxvZ2dlciB3aWxsIGJlIGNvbXBsZXRlbHkKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZWQgYnkgdXNlciBjb25maWd1cmF0aW9uLiBJbiB0aGlzIGNhc2UsIG5vIG90aGVyCisgICAgICAgICAgICAgICAgICAgIHJ1bGVzIHdpbGwgYXBwbHkgdG8gdGhhdCBsb2dnZXIuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBbGwgdXNlciBkZWZpbmVkIDxmaWxlbmFtZT5maWx0ZXI8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmhhbmRsZXJzPC9maWxlbmFtZT4gcHJvcGVydGllcyBmb3IgYSBnaXZlbiBsb2dnZXIKKyAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBtZXJnZWQgd2l0aCBjb3JyZXNwb25kaW5nIHByb3BlcnRpZXMgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBsb2dnZXIuIEZvciBleGFtcGxlLCBpZiB0aGUgdXNlciBjb25maWd1cmF0aW9uIGFkZHMKKyAgICAgICAgICAgICAgICAgICAgYSBmaWx0ZXIgY2FsbGVkIDxmaWxlbmFtZT5teUZpbHRlcjwvZmlsZW5hbWU+IHRvIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Qml0QmFrZS5TaWdHZW48L2ZpbGVuYW1lPiwgYW5kIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gYWRkcyBhIGZpbHRlciBjYWxsZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJpdEJha2UuZGVmYXVsdEZpbHRlcjwvZmlsZW5hbWU+LCBib3RoIGZpbHRlcnMKKyAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBsb2dnZXIKKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIHVzZXIgbG9nZ2luZyBjb25maWd1cmF0aW9uCisgICAgICAgICAgICBmaWxlIHdoaWNoIGxvZ3MgYWxsIEhhc2ggRXF1aXZhbGVuY2UgcmVsYXRlZCBtZXNzYWdlcyBvZiBWRVJCT1NFIG9yCisgICAgICAgICAgICBoaWdoZXIgdG8gYSBmaWxlIGNhbGxlZCA8ZmlsZW5hbWU+aGFzaGVxdWl2LmxvZzwvZmlsZW5hbWU+CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgeworICAgICAgICAidmVyc2lvbiI6IDEsCisgICAgICAgICJoYW5kbGVycyI6IHsKKyAgICAgICAgICAgICJhdXRvYnVpbGRlcmxvZyI6IHsKKyAgICAgICAgICAgICAgICAiY2xhc3MiOiAibG9nZ2luZy5GaWxlSGFuZGxlciIsCisgICAgICAgICAgICAgICAgImZvcm1hdHRlciI6ICJsb2dmaWxlRm9ybWF0dGVyIiwKKyAgICAgICAgICAgICAgICAibGV2ZWwiOiAiREVCVUciLAorICAgICAgICAgICAgICAgICJmaWxlbmFtZSI6ICJoYXNoZXF1aXYubG9nIiwKKyAgICAgICAgICAgICAgICAibW9kZSI6ICJ3IgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZm9ybWF0dGVycyI6IHsKKyAgICAgICAgICAgICAgICAibG9nZmlsZUZvcm1hdHRlciI6IHsKKyAgICAgICAgICAgICAgICAgICAgImZvcm1hdCI6ICIlKG5hbWUpczogJShsZXZlbG5hbWUpczogJShtZXNzYWdlKXMiCisgICAgICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibG9nZ2VycyI6IHsKKyAgICAgICAgICAgICJCaXRCYWtlLlNpZ0dlbi5IYXNoRXF1aXYiOiB7CisgICAgICAgICAgICAgICAgImxldmVsIjogIlZFUkJPU0UiLAorICAgICAgICAgICAgICAgICJoYW5kbGVycyI6IFsiYXV0b2J1aWxkZXJsb2ciXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJCaXRCYWtlLlJ1blF1ZXVlLkhhc2hFcXVpdiI6IHsKKyAgICAgICAgICAgICAgICAibGV2ZWwiOiAiVkVSQk9TRSIsCisgICAgICAgICAgICAgICAgImhhbmRsZXJzIjogWyJhdXRvYnVpbGRlcmxvZyJdCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CiA8L2NoYXB0ZXI+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1mZXRjaGluZy54bWwgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1mZXRjaGluZy54bWwKaW5kZXggNjg0MDQwOC4uZDFiZmMyMyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtZmV0Y2hpbmcueG1sCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWZldGNoaW5nLnhtbApAQCAtMTM5LDcgKzEzOSw3IEBACiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFNpbmNlIG5ldHdvcmsgYWNjZXNzZXMgYXJlIHNsb3csIEJpdGJha2UgbWFpbnRhaW5zIGEKKyAgICAgICAgICAgIFNpbmNlIG5ldHdvcmsgYWNjZXNzZXMgYXJlIHNsb3csIEJpdEJha2UgbWFpbnRhaW5zIGEKICAgICAgICAgICAgIGNhY2hlIG9mIGZpbGVzIGRvd25sb2FkZWQgZnJvbSB0aGUgbmV0d29yay4KICAgICAgICAgICAgIEFueSBzb3VyY2UgZmlsZXMgdGhhdCBhcmUgbm90IGxvY2FsIChpLmUuCiAgICAgICAgICAgICBkb3dubG9hZGVkIGZyb20gdGhlIEludGVybmV0KSBhcmUgcGxhY2VkIGludG8gdGhlIGRvd25sb2FkCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1oZWxsby54bWwgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1oZWxsby54bWwKaW5kZXggMzkwNjZlNC4uMTFlYjM2YSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaGVsbG8ueG1sCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWhlbGxvLnhtbApAQCAtMTY2LDcgKzE2Niw3IEBACiAgICAgICAgICAgICAgICAgSGF2aW5nIGEgcHJvamVjdCBkaXJlY3RvcnkgaXMgYSBnb29kIHdheSB0byBpc29sYXRlIHlvdXIKICAgICAgICAgICAgICAgICBwcm9qZWN0LgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SdW4gQml0YmFrZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SdW4gQml0QmFrZTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgIEF0IHRoaXMgcG9pbnQsIHlvdSBoYXZlIG5vdGhpbmcgYnV0IGEgcHJvamVjdCBkaXJlY3RvcnkuCiAgICAgICAgICAgICAgICAgUnVuIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgYW5kIHNlZSB3aGF0CiAgICAgICAgICAgICAgICAgaXQgZG9lczoKQEAgLTE5Nyw3ICsxOTcsNyBAQAogICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQlBBVEgnPjxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyB3aGF0IHRlbGxzIEJpdEJha2Ugd2hlcmUgdG8gbG9vayBmb3IgdGhvc2UgZmlsZXMuCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+IGlzIG5vdCBzZXQgYW5kIHlvdSBuZWVkIHRvIHNldCBpdC4KLSAgICAgICAgICAgICAgICBXaXRob3V0IDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiwgQml0YmFrZSBjYW5ub3QKKyAgICAgICAgICAgICAgICBXaXRob3V0IDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiwgQml0QmFrZSBjYW5ub3QKICAgICAgICAgICAgICAgICBmaW5kIGFueSBjb25maWd1cmF0aW9uIGZpbGVzICg8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPikKICAgICAgICAgICAgICAgICBvciByZWNpcGUgZmlsZXMgKDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPikgYXQgYWxsLgogICAgICAgICAgICAgICAgIEJpdEJha2UgYWxzbyBjYW5ub3QgZmluZCB0aGUgPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+CkBAIC0yMjUsNyArMjI1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYXMgdGhlIHNoZWxsIHdvdWxkLgogICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdGJha2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdEJha2U6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBOb3cgdGhhdCB5b3UgaGF2ZSA8ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT4gZGVmaW5lZCwgcnVuCiAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gY29tbWFuZCBhZ2FpbjoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC0zMTMsNyArMzEzLDcgQEAKICAgICAgICAgICAgICAgICBleGFtcGxlLCBjbGljayBvbiB0aGUgbGlua3MgdG8gdGFrZSB5b3UgdG8gdGhlIGRlZmluaXRpb25zIGluCiAgICAgICAgICAgICAgICAgdGhlIGdsb3NzYXJ5LgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SdW4gQml0YmFrZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SdW4gQml0QmFrZTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgIEFmdGVyIG1ha2luZyBzdXJlIHRoYXQgdGhlIDxmaWxlbmFtZT5jb25mL2JpdGJha2UuY29uZjwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgZmlsZSBleGlzdHMsIHlvdSBjYW4gcnVuIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgY29tbWFuZCBhZ2FpbjoKQEAgLTM2NCw3ICszNjQsNyBAQAogICAgICAgICAgICAgICAgIG1vcmUgZGVwZW5kaW5nIG9uIHdoaWNoIGJ1aWxkIGVudmlyb25tZW50cyBCaXRCYWtlIGlzCiAgICAgICAgICAgICAgICAgc3VwcG9ydGluZy4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdGJha2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdEJha2U6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBBZnRlciBtYWtpbmcgc3VyZSB0aGF0IHRoZSA8ZmlsZW5hbWU+Y2xhc3Nlcy9iYXNlLmJiY2xhc3M8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgIGZpbGUgZXhpc3RzLCB5b3UgY2FuIHJ1biB0aGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgIGNvbW1hbmQgYWdhaW46CkBAIC00MzQsNyArNDM0LDcgQEAKICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGVzZSB2YXJpYWJsZXMsIGZvbGxvdyB0aGUgbGlua3MKICAgICAgICAgICAgICAgICB0byB0aGUgZ2xvc3NhcnkuCiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlJ1biBCaXRiYWtlIFdpdGggYSBUYXJnZXQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdEJha2UgV2l0aCBhIFRhcmdldDo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgIE5vdyB0aGF0IGEgQml0QmFrZSB0YXJnZXQgZXhpc3RzLCBydW4gdGhlIGNvbW1hbmQgYW5kIHByb3ZpZGUKICAgICAgICAgICAgICAgICB0aGF0IHRhcmdldDoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC00NjgsNyArNDY4LDcgQEAKICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBwcm92aWRlIHlvdXIgb3duIGluZm9ybWF0aW9uIGZvcgogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b3U8L2ZpbGVuYW1lPiBpbiB0aGUgZmlsZS4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdGJha2UgV2l0aCBhIFRhcmdldDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SdW4gQml0QmFrZSBXaXRoIGEgVGFyZ2V0OjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgTm93IHRoYXQgeW91IGhhdmUgc3VwcGxpZWQgdGhlIDxmaWxlbmFtZT5iYmxheWVycy5jb25mPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICBmaWxlLCBydW4gdGhlIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gY29tbWFuZCBhbmQgcHJvdmlkZQogICAgICAgICAgICAgICAgIHRoZSB0YXJnZXQ6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1pbnRyby54bWwgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1pbnRyby54bWwKaW5kZXggOGYyYTk2MC4uZjU1MjZjMCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaW50cm8ueG1sCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWludHJvLnhtbApAQCAtMTI3LDcgKzEyNyw3IEBACiAgICAgICAgICAgICAgICAgICAgIChlLmcuIEN5Z3dpbiwgdGhlIEJTRHMsIGFuZCBzbyBmb3J0aCkuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQmUgc2VsZiBjb250YWluZWQsIHJhdGhlciB0aGFuIHRpZ2h0bHkKKyAgICAgICAgICAgICAgICAgICAgQmUgc2VsZi1jb250YWluZWQsIHJhdGhlciB0aGFuIHRpZ2h0bHkKICAgICAgICAgICAgICAgICAgICAgaW50ZWdyYXRlZCBpbnRvIHRoZSBidWlsZCBtYWNoaW5lJ3Mgcm9vdAogICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTIyMSw2ICsyMjEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdGhlbTwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SG93IHRvIGNvbmZpZ3VyZSBhbmQgY29tcGlsZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBjb2RlPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5Ib3cgdG8gYXNzZW1ibGUgdGhlIGdlbmVyYXRlZCBhcnRpZmFjdHMgaW50bworICAgICAgICAgICAgICAgICAgICAgICAgb25lIG9yIG1vcmUgaW5zdGFsbGFibGUgcGFja2FnZXM8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPldoZXJlIG9uIHRoZSB0YXJnZXQgbWFjaGluZSB0byBpbnN0YWxsIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZSBvciBwYWNrYWdlcyBjcmVhdGVkPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CkBAIC0yMjksNyArMjMxLDcgQEAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFdpdGhpbiB0aGUgY29udGV4dCBvZiBCaXRCYWtlLCBvciBhbnkgcHJvamVjdCB1dGlsaXppbmcgQml0QmFrZQogICAgICAgICAgICAgICAgIGFzIGl0cyBidWlsZCBzeXN0ZW0sIGZpbGVzIHdpdGggdGhlIDxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgIGV4dGVuc2lvbiBhcmUgcmVmZXJyZWQgdG8gYXMgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICBleHRlbnNpb24gYXJlIHJlZmVycmVkIHRvIGFzIDxmaXJzdHRlcm0+cmVjaXBlczwvZmlyc3R0ZXJtPi4KICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgVGhlIHRlcm0gInBhY2thZ2UiIGlzIGFsc28gY29tbW9ubHkgdXNlZCB0byBkZXNjcmliZSByZWNpcGVzLgogICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBzaW5jZSB0aGUgc2FtZSB3b3JkIGlzIHVzZWQgdG8gZGVzY3JpYmUgcGFja2FnZWQKQEAgLTI1Miw5ICsyNTQsOSBAQAogICAgICAgICAgICAgICAgIHZhcmlvdXMgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgdGhhdCBnb3Zlcm4gdGhlIHByb2plY3QncyBidWlsZAogICAgICAgICAgICAgICAgIHByb2Nlc3MuCiAgICAgICAgICAgICAgICAgVGhlc2UgZmlsZXMgZmFsbCBpbnRvIHNldmVyYWwgYXJlYXMgdGhhdCBkZWZpbmUKLSAgICAgICAgICAgICAgICBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAgICAgICBvcHRpb25zLCBjb21waWxlciB0dW5pbmcgb3B0aW9ucywgZ2VuZXJhbCBjb21tb24KLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCB1c2VyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KKyAgICAgICAgICAgICAgICBtYWNoaW5lIGNvbmZpZ3VyYXRpb24sIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgIHBvc3NpYmxlIGNvbXBpbGVyIHR1bmluZywgZ2VuZXJhbCBjb21tb24KKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLCBhbmQgdXNlciBjb25maWd1cmF0aW9uLgogICAgICAgICAgICAgICAgIFRoZSBtYWluIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyB0aGUgc2FtcGxlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UuY29uZjwvZmlsZW5hbWU+IGZpbGUsIHdoaWNoIGlzCiAgICAgICAgICAgICAgICAgbG9jYXRlZCB3aXRoaW4gdGhlIEJpdEJha2Ugc291cmNlIHRyZWUKQEAgLTI5Miw3ICsyOTQsNyBAQAogICAgICAgICAgICAgICAgIExheWVycyBhbGxvdyB5b3UgdG8gaXNvbGF0ZSBkaWZmZXJlbnQgdHlwZXMgb2YKICAgICAgICAgICAgICAgICBjdXN0b21pemF0aW9ucyBmcm9tIGVhY2ggb3RoZXIuCiAgICAgICAgICAgICAgICAgV2hpbGUgeW91IG1pZ2h0IGZpbmQgaXQgdGVtcHRpbmcgdG8ga2VlcCBldmVyeXRoaW5nIGluIG9uZSBsYXllcgotICAgICAgICAgICAgICAgIHdoZW4gd29ya2luZyBvbiBhIHNpbmdsZSBwcm9qZWN0LCB0aGUgbW9yZSBtb2R1bGFyIHlvdSBvcmdhbml6ZQorICAgICAgICAgICAgICAgIHdoZW4gd29ya2luZyBvbiBhIHNpbmdsZSBwcm9qZWN0LCB0aGUgbW9yZSBtb2R1bGFyCiAgICAgICAgICAgICAgICAgeW91ciBtZXRhZGF0YSwgdGhlIGVhc2llciBpdCBpcyB0byBjb3BlIHdpdGggZnV0dXJlIGNoYW5nZXMuCiAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTMwMCw4ICszMDIsOCBAQAogICAgICAgICAgICAgICAgIFRvIGlsbHVzdHJhdGUgaG93IHlvdSBjYW4gdXNlIGxheWVycyB0byBrZWVwIHRoaW5ncyBtb2R1bGFyLAogICAgICAgICAgICAgICAgIGNvbnNpZGVyIGN1c3RvbWl6YXRpb25zIHlvdSBtaWdodCBtYWtlIHRvIHN1cHBvcnQgYSBzcGVjaWZpYyB0YXJnZXQgbWFjaGluZS4KICAgICAgICAgICAgICAgICBUaGVzZSB0eXBlcyBvZiBjdXN0b21pemF0aW9ucyB0eXBpY2FsbHkgcmVzaWRlIGluIGEgc3BlY2lhbCBsYXllciwKLSAgICAgICAgICAgICAgICByYXRoZXIgdGhhbiBhIGdlbmVyYWwgbGF5ZXIsIGNhbGxlZCBhIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKQotICAgICAgICAgICAgICAgIExheWVyLgorICAgICAgICAgICAgICAgIHJhdGhlciB0aGFuIGEgZ2VuZXJhbCBsYXllciwgY2FsbGVkIGEgPGZpcnN0dGVybT5Cb2FyZCBTdXBwb3J0IFBhY2thZ2U8L2ZpcnN0dGVybT4gKEJTUCkKKyAgICAgICAgICAgICAgICBsYXllci4KICAgICAgICAgICAgICAgICBGdXJ0aGVybW9yZSwgdGhlIG1hY2hpbmUgY3VzdG9taXphdGlvbnMgc2hvdWxkIGJlIGlzb2xhdGVkIGZyb20KICAgICAgICAgICAgICAgICByZWNpcGVzIGFuZCBtZXRhZGF0YSB0aGF0IHN1cHBvcnQgYSBuZXcgR1VJIGVudmlyb25tZW50LCBmb3IKICAgICAgICAgICAgICAgICBleGFtcGxlLgpAQCAtNDQ4LDcgKzQ1MCw3IEBACiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Vc2luZyB0aGUgQml0QmFrZSB0aGF0IENvbWVzIFdpdGggWW91cgogICAgICAgICAgICAgICAgICAgICBCdWlsZCBDaGVja291dDo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBBIGZpbmFsIHBvc3NpYmlsaXR5IGZvciBnZXR0aW5nIGEgY29weSBvZiBCaXRCYWtlIGlzIHRoYXQgaXQKLSAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBjb21lcyB3aXRoIHlvdXIgY2hlY2tvdXQgb2YgYSBsYXJnZXIgQml0YmFrZS1iYXNlZCBidWlsZAorICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IGNvbWVzIHdpdGggeW91ciBjaGVja291dCBvZiBhIGxhcmdlciBCaXRCYWtlLWJhc2VkIGJ1aWxkCiAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSwgc3VjaCBhcyBQb2t5LgogICAgICAgICAgICAgICAgICAgICBSYXRoZXIgdGhhbiBtYW51YWxseSBjaGVja2luZyBvdXQgaW5kaXZpZHVhbCBsYXllcnMgYW5kCiAgICAgICAgICAgICAgICAgICAgIGdsdWluZyB0aGVtIHRvZ2V0aGVyIHlvdXJzZWxmLCB5b3UgY2FuIGNoZWNrCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YS54bWwgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YS54bWwKaW5kZXggNDIxMzY0Yy4uMTBiNTg4MyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEueG1sCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnhtbApAQCAtNSw3ICs1LDcgQEAKICAgICA8dGl0bGU+U3ludGF4IGFuZCBPcGVyYXRvcnM8L3RpdGxlPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIEJpdGJha2UgZmlsZXMgaGF2ZSB0aGVpciBvd24gc3ludGF4LgorICAgICAgICBCaXRCYWtlIGZpbGVzIGhhdmUgdGhlaXIgb3duIHN5bnRheC4KICAgICAgICAgVGhlIHN5bnRheCBoYXMgc2ltaWxhcml0aWVzIHRvIHNldmVyYWwKICAgICAgICAgb3RoZXIgbGFuZ3VhZ2VzIGJ1dCBhbHNvIGhhcyBzb21lIHVuaXF1ZSBmZWF0dXJlcy4KICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgYXZhaWxhYmxlIHN5bnRheCBhbmQgb3BlcmF0b3JzCkBAIC0yOTQsMTcgKzI5NCwyMCBAQAogICAgICAgICAgICAgICAgIHJhdGhlciB0aGFuIHdoZW4gdGhlIHZhcmlhYmxlIGlzIGFjdHVhbGx5IHVzZWQ6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBUID0gIjEyMyIKLSAgICAgQSA6PSAiJHtCfSAke0F9IHRlc3QgJHtUfSIKKyAgICAgQSA6PSAidGVzdCAke1R9IgogICAgICBUID0gIjQ1NiIKLSAgICAgQiA9ICIke1R9IGJ2YWwiCisgICAgIEIgOj0gIiR7VH0gJHtDfSIKICAgICAgQyA9ICJjdmFsIgogICAgICBDIDo9ICIke0N9YXBwZW5kIgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIDxmaWxlbmFtZT5BPC9maWxlbmFtZT4gY29udGFpbnMKLSAgICAgICAgICAgICAgICAidGVzdCAxMjMiIGJlY2F1c2UgPGZpbGVuYW1lPiR7Qn08L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtBfTwvZmlsZW5hbWU+IGF0IHRoZSB0aW1lIG9mIHBhcnNpbmcgYXJlIHVuZGVmaW5lZCwKLSAgICAgICAgICAgICAgICB3aGljaCBsZWF2ZXMgInRlc3QgMTIzIi4KLSAgICAgICAgICAgICAgICBBbmQsIHRoZSB2YXJpYWJsZSA8ZmlsZW5hbWU+QzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgInRlc3QgMTIzIiwgZXZlbiB0aG91Z2ggdGhlIGZpbmFsIHZhbHVlIG9mIDxmaWxlbmFtZT5UPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICBpcyAiNDU2Ii4KKyAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgPGZpbGVuYW1lPkI8L2ZpbGVuYW1lPiB3aWxsIGVuZCB1cCBjb250YWluaW5nICI0NTYgY3ZhbGFwcGVuZCIuCisgICAgICAgICAgICAgICAgVGhpcyBpcyBiZWNhdXNlIHJlZmVyZW5jZXMgdG8gdW5kZWZpbmVkIHZhcmlhYmxlcyBhcmUgcHJlc2VydmVkIGFzIGlzCisgICAgICAgICAgICAgICAgZHVyaW5nIChpbW1lZGlhdGUpZXhwYW5zaW9uLiBUaGlzIGlzIGluIGNvbnRyYXN0IHRvIEdOVSBNYWtlLCB3aGVyZSB1bmRlZmluZWQKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgZXhwYW5kIHRvIG5vdGhpbmcuCisgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlIDxmaWxlbmFtZT5DPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICBjb250YWlucyAiY3ZhbGFwcGVuZCIgc2luY2UgPGZpbGVuYW1lPiR7Q308L2ZpbGVuYW1lPiBpbW1lZGlhdGVseQogICAgICAgICAgICAgICAgIGV4cGFuZHMgdG8gImN2YWwiLgogICAgICAgICAgICAgPC9wYXJhPgpAQCAtMTQxNCw3ICsxNDE3LDcgQEAKICAgICAgICAgPC9zZWN0aW9uPgogCiAgICAgICAgIDxzZWN0aW9uIGlkPSdiaXRiYWtlLXN0eWxlLXB5dGhvbi1mdW5jdGlvbnMtdmVyc3VzLXB5dGhvbi1mdW5jdGlvbnMnPgotICAgICAgICAgICAgPHRpdGxlPkJpdGJha2UtU3R5bGUgUHl0aG9uIEZ1bmN0aW9ucyBWZXJzdXMgUHl0aG9uIEZ1bmN0aW9uczwvdGl0bGU+CisgICAgICAgICAgICA8dGl0bGU+Qml0QmFrZS1TdHlsZSBQeXRob24gRnVuY3Rpb25zIFZlcnN1cyBQeXRob24gRnVuY3Rpb25zPC90aXRsZT4KIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgRm9sbG93aW5nIGFyZSBzb21lIGltcG9ydGFudCBkaWZmZXJlbmNlcyBiZXR3ZWVuCkBAIC0xODY0LDcgKzE4NjcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzaW5nIHlvdXIgPGZpbGVuYW1lPiRIT01FLy5jY2FjaGU8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kICJ3aGl0ZWxpc3RzIiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DQ0FDSEVfRElSPC9maWxlbmFtZT4gY2F1c2luZyBCaXRCYWNrIHRvIGFsbG93IHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5DQ0FDSEVfRElSPC9maWxlbmFtZT4gY2F1c2luZyBCaXRCYWtlIHRvIGFsbG93IHRoYXQKICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGludG8gdGhlIGRhdGFzdG9yZToKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgZXhwb3J0IEJCX0VOVl9FWFRSQVdISVRFPSIkQkJfRU5WX0VYVFJBV0hJVEUgQ0NBQ0hFX0RJUiIKQEAgLTE4OTUsNyArMTg5OCw3IEBACiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBTb21ldGltZXMsIGl0IGlzIHVzZWZ1bCB0byBiZSBhYmxlIHRvIG9idGFpbiBpbmZvcm1hdGlvbgogICAgICAgICAgICAgICAgIGZyb20gdGhlIG9yaWdpbmFsIGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgICAgICBCaXRiYWtlIHNhdmVzIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgZW52aXJvbm1lbnQgaW50bworICAgICAgICAgICAgICAgIEJpdEJha2Ugc2F2ZXMgYSBjb3B5IG9mIHRoZSBvcmlnaW5hbCBlbnZpcm9ubWVudCBpbnRvCiAgICAgICAgICAgICAgICAgYSBzcGVjaWFsIHZhcmlhYmxlIG5hbWVkCiAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLUJCX09SSUdFTlYnPjxmaWxlbmFtZT5CQl9PUklHRU5WPC9maWxlbmFtZT48L2xpbms+LgogICAgICAgICAgICAgPC9wYXJhPgpAQCAtMjYxNiw3ICsyNjE5LDcgQEAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIEl0IGlzIG9mdGVuIG5lY2Vzc2FyeSB0byBhY2Nlc3MgdmFyaWFibGVzIGluIHRoZQogICAgICAgICAgICAgICAgIEJpdEJha2UgZGF0YXN0b3JlIHVzaW5nIFB5dGhvbiBmdW5jdGlvbnMuCi0gICAgICAgICAgICAgICAgVGhlIEJpdGJha2UgZGF0YXN0b3JlIGhhcyBhbiBBUEkgdGhhdCBhbGxvd3MgeW91IHRoaXMKKyAgICAgICAgICAgICAgICBUaGUgQml0QmFrZSBkYXRhc3RvcmUgaGFzIGFuIEFQSSB0aGF0IGFsbG93cyB5b3UgdGhpcwogICAgICAgICAgICAgICAgIGFjY2Vzcy4KICAgICAgICAgICAgICAgICBIZXJlIGlzIGEgbGlzdCBvZiBhdmFpbGFibGUgb3BlcmF0aW9uczoKICAgICAgICAgICAgIDwvcGFyYT4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLXJlZi12YXJpYWJsZXMueG1sIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtcmVmLXZhcmlhYmxlcy54bWwKaW5kZXggYWNhNjc0MS4uYzRiZDFmMiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtcmVmLXZhcmlhYmxlcy54bWwKKysrIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtcmVmLXZhcmlhYmxlcy54bWwKQEAgLTUzOSw2ICs1MzksMTcgQEAKICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIAorICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX0xPR0NPTkZJRyc+PGdsb3NzdGVybT5CQl9MT0dDT05GSUc8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBuYW1lIG9mIGEgY29uZmlnIGZpbGUgdGhhdCBjb250YWlucyB0aGUgdXNlcgorICAgICAgICAgICAgICAgICAgICBsb2dnaW5nIGNvbmZpZ3VyYXRpb24uIFNlZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSJsb2dnaW5nIj5Mb2dnaW5nPC9saW5rPiBmb3IgYWRkaXRpb25hbAorICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKwogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLWJiLUJCX0xPR0ZNVCc+PGdsb3NzdGVybT5CQl9MT0dGTVQ8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTE3ODAsNyArMTc5MSw3IEBACiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEJpdGJha2Ugbm9ybWFsbHkgaXNzdWVzIGEgd2FybmluZyB3aGVuIGJ1aWxkaW5nIHR3bworICAgICAgICAgICAgICAgICAgICBCaXRCYWtlIG5vcm1hbGx5IGlzc3VlcyBhIHdhcm5pbmcgd2hlbiBidWlsZGluZyB0d28KICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50IHJlY2lwZXMgd2hlcmUgZWFjaCBwcm92aWRlcyB0aGUgc2FtZSBvdXRwdXQuCiAgICAgICAgICAgICAgICAgICAgIFRoaXMgc2NlbmFyaW8gaXMgdXN1YWxseSBzb21ldGhpbmcgdGhlIHVzZXIgZG9lcyBub3QKICAgICAgICAgICAgICAgICAgICAgd2FudC4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvQ09XLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9DT1cucHkKaW5kZXggZDI2ZTk4MS4uYmMyMGNlMyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9DT1cucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9DT1cucHkKQEAgLTEwLDcgKzEwLDYgQEAKIAogCiBpbXBvcnQgY29weQotaW1wb3J0IHR5cGVzCiBJbW11dGFibGVUeXBlcyA9ICgKICAgICBib29sLAogICAgIGNvbXBsZXgsCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL19faW5pdF9fLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9fX2luaXRfXy5weQppbmRleCBjMTQ0MzExLi5iOTY0NjZlIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL19faW5pdF9fLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvX19pbml0X18ucHkKQEAgLTksMTEgKzksMTEgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1fX3ZlcnNpb25fXyA9ICIxLjQ0LjAiCitfX3ZlcnNpb25fXyA9ICIxLjQ2LjAiCiAKIGltcG9ydCBzeXMKLWlmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgNCwgMCk6Ci0gICAgcmFpc2UgUnVudGltZUVycm9yKCJTb3JyeSwgcHl0aG9uIDMuNC4wIG9yIGxhdGVyIGlzIHJlcXVpcmVkIGZvciB0aGlzIHZlcnNpb24gb2YgYml0YmFrZSIpCitpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDUsIDApOgorICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiU29ycnksIHB5dGhvbiAzLjUuMCBvciBsYXRlciBpcyByZXF1aXJlZCBmb3IgdGhpcyB2ZXJzaW9uIG9mIGJpdGJha2UiKQogCiAKIGNsYXNzIEJCSGFuZGxlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgpAQCAtNDMsNyArNDMsMTMgQEAKICAgICAgICAgTG9nZ2VyLl9faW5pdF9fKHNlbGYsIG5hbWUpCiAKICAgICBkZWYgYmJkZWJ1ZyhzZWxmLCBsZXZlbCwgbXNnLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICByZXR1cm4gc2VsZi5sb2cobG9nZ2luZy5ERUJVRyAtIGxldmVsICsgMSwgbXNnLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgIGxvZ2xldmVsID0gbG9nZ2luZy5ERUJVRyAtIGxldmVsICsgMQorICAgICAgICBpZiBub3QgYmIuZXZlbnQud29ya2VyX3BpZDoKKyAgICAgICAgICAgIGlmIHNlbGYubmFtZSBpbiBiYi5tc2cubG9nZ2VyRGVmYXVsdERvbWFpbnMgYW5kIGxvZ2xldmVsID4gKGJiLm1zZy5sb2dnZXJEZWZhdWx0RG9tYWluc1tzZWxmLm5hbWVdKToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGlmIGxvZ2xldmVsID4gYmIubXNnLmxvZ2dlckRlZmF1bHRMb2dMZXZlbDoKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgcmV0dXJuIHNlbGYubG9nKGxvZ2xldmVsLCBtc2csICphcmdzLCAqKmt3YXJncykKIAogICAgIGRlZiBwbGFpbihzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIHJldHVybiBzZWxmLmxvZyhsb2dnaW5nLklORk8gKyAxLCBtc2csICphcmdzLCAqKmt3YXJncykKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvYnVpbGQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2J1aWxkLnB5CmluZGV4IDMwYTJiYTIuLjIzYjZlZTQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvYnVpbGQucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9idWlsZC5weQpAQCAtMTUsNyArMTUsNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IHNobGV4CiBpbXBvcnQgZ2xvYgogaW1wb3J0IHRpbWUKIGltcG9ydCBzdGF0CkBAIC01NywxNCArNTYsMTcgQEAKIGNsYXNzIFRhc2tCYXNlKGV2ZW50LkV2ZW50KToKICAgICAiIiJCYXNlIGNsYXNzIGZvciB0YXNrIGV2ZW50cyIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHQsIGxvZ2ZpbGUsIGQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0LCBmbiwgbG9nZmlsZSwgZCk6CiAgICAgICAgIHNlbGYuX3Rhc2sgPSB0CisgICAgICAgIHNlbGYuX2ZuID0gZm4KICAgICAgICAgc2VsZi5fcGFja2FnZSA9IGQuZ2V0VmFyKCJQRiIpCiAgICAgICAgIHNlbGYuX21jID0gZC5nZXRWYXIoIkJCX0NVUlJFTlRfTUMiKQogICAgICAgICBzZWxmLnRhc2tmaWxlID0gZC5nZXRWYXIoIkZJTEUiKQogICAgICAgICBzZWxmLnRhc2tuYW1lID0gc2VsZi5fdGFzawogICAgICAgICBzZWxmLmxvZ2ZpbGUgPSBsb2dmaWxlCiAgICAgICAgIHNlbGYudGltZSA9IHRpbWUudGltZSgpCisgICAgICAgIHNlbGYucG4gPSBkLmdldFZhcigiUE4iKQorICAgICAgICBzZWxmLnB2ID0gZC5nZXRWYXIoIlBWIikKICAgICAgICAgZXZlbnQuRXZlbnQuX19pbml0X18oc2VsZikKICAgICAgICAgc2VsZi5fbWVzc2FnZSA9ICJyZWNpcGUgJXM6IHRhc2sgJXM6ICVzIiAlIChkLmdldFZhcigiUEYiKSwgdCwgc2VsZi5nZXREaXNwbGF5TmFtZSgpKQogCkBAIC04MSw4ICs4Myw4IEBACiAKIGNsYXNzIFRhc2tTdGFydGVkKFRhc2tCYXNlKToKICAgICAiIiJUYXNrIGV4ZWN1dGlvbiBzdGFydGVkIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHQsIGxvZ2ZpbGUsIHRhc2tmbGFncywgZCk6Ci0gICAgICAgIHN1cGVyKFRhc2tTdGFydGVkLCBzZWxmKS5fX2luaXRfXyh0LCBsb2dmaWxlLCBkKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0LCBmbiwgbG9nZmlsZSwgdGFza2ZsYWdzLCBkKToKKyAgICAgICAgc3VwZXIoVGFza1N0YXJ0ZWQsIHNlbGYpLl9faW5pdF9fKHQsIGZuLCBsb2dmaWxlLCBkKQogICAgICAgICBzZWxmLnRhc2tmbGFncyA9IHRhc2tmbGFncwogCiBjbGFzcyBUYXNrU3VjY2VlZGVkKFRhc2tCYXNlKToKQEAgLTkxLDkgKzkzLDkgQEAKIGNsYXNzIFRhc2tGYWlsZWQoVGFza0Jhc2UpOgogICAgICIiIlRhc2sgZXhlY3V0aW9uIGZhaWxlZCIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhc2ssIGxvZ2ZpbGUsIG1ldGFkYXRhLCBlcnJwcmludGVkID0gRmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXNrLCBmbiwgbG9nZmlsZSwgbWV0YWRhdGEsIGVycnByaW50ZWQgPSBGYWxzZSk6CiAgICAgICAgIHNlbGYuZXJycHJpbnRlZCA9IGVycnByaW50ZWQKLSAgICAgICAgc3VwZXIoVGFza0ZhaWxlZCwgc2VsZikuX19pbml0X18odGFzaywgbG9nZmlsZSwgbWV0YWRhdGEpCisgICAgICAgIHN1cGVyKFRhc2tGYWlsZWQsIHNlbGYpLl9faW5pdF9fKHRhc2ssIGZuLCBsb2dmaWxlLCBtZXRhZGF0YSkKIAogY2xhc3MgVGFza0ZhaWxlZFNpbGVudChUYXNrQmFzZSk6CiAgICAgIiIiVGFzayBleGVjdXRpb24gZmFpbGVkIChzaWxlbnRseSkiIiIKQEAgLTEwMyw4ICsxMDUsOCBAQAogCiBjbGFzcyBUYXNrSW52YWxpZChUYXNrQmFzZSk6CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGFzaywgbWV0YWRhdGEpOgotICAgICAgICBzdXBlcihUYXNrSW52YWxpZCwgc2VsZikuX19pbml0X18odGFzaywgTm9uZSwgbWV0YWRhdGEpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhc2ssIGZuLCBtZXRhZGF0YSk6CisgICAgICAgIHN1cGVyKFRhc2tJbnZhbGlkLCBzZWxmKS5fX2luaXRfXyh0YXNrLCBmbiwgTm9uZSwgbWV0YWRhdGEpCiAgICAgICAgIHNlbGYuX21lc3NhZ2UgPSAiTm8gc3VjaCB0YXNrICclcyciICUgdGFzawogCiBjbGFzcyBUYXNrUHJvZ3Jlc3MoZXZlbnQuRXZlbnQpOgpAQCAtNTcyLDcgKzU3NCw3IEBACiAKICAgICB0cnk6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGV2ZW50LmZpcmUoVGFza1N0YXJ0ZWQodGFzaywgbG9nZm4sIGZsYWdzLCBsb2NhbGRhdGEpLCBsb2NhbGRhdGEpCisgICAgICAgICAgICBldmVudC5maXJlKFRhc2tTdGFydGVkKHRhc2ssIGZuLCBsb2dmbiwgZmxhZ3MsIGxvY2FsZGF0YSksIGxvY2FsZGF0YSkKICAgICAgICAgZXhjZXB0IChiYi5CQkhhbmRsZWRFeGNlcHRpb24sIFN5c3RlbUV4aXQpOgogICAgICAgICAgICAgcmV0dXJuIDEKIApAQCAtNTgzLDE1ICs1ODUsMTUgQEAKICAgICAgICAgICAgIGZvciBmdW5jIGluIChwb3N0ZnVuY3Mgb3IgJycpLnNwbGl0KCk6CiAgICAgICAgICAgICAgICAgZXhlY19mdW5jKGZ1bmMsIGxvY2FsZGF0YSkKICAgICAgICAgZXhjZXB0IGJiLkJCSGFuZGxlZEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIGV2ZW50LmZpcmUoVGFza0ZhaWxlZCh0YXNrLCBsb2dmbiwgbG9jYWxkYXRhLCBUcnVlKSwgbG9jYWxkYXRhKQorICAgICAgICAgICAgZXZlbnQuZmlyZShUYXNrRmFpbGVkKHRhc2ssIGZuLCBsb2dmbiwgbG9jYWxkYXRhLCBUcnVlKSwgbG9jYWxkYXRhKQogICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CiAgICAgICAgICAgICBpZiBxdWlldGVycjoKLSAgICAgICAgICAgICAgICBldmVudC5maXJlKFRhc2tGYWlsZWRTaWxlbnQodGFzaywgbG9nZm4sIGxvY2FsZGF0YSksIGxvY2FsZGF0YSkKKyAgICAgICAgICAgICAgICBldmVudC5maXJlKFRhc2tGYWlsZWRTaWxlbnQodGFzaywgZm4sIGxvZ2ZuLCBsb2NhbGRhdGEpLCBsb2NhbGRhdGEpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGVycnByaW50ZWQgPSBlcnJjaGsudHJpZ2dlcmVkCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHN0cihleGMpKQotICAgICAgICAgICAgICAgIGV2ZW50LmZpcmUoVGFza0ZhaWxlZCh0YXNrLCBsb2dmbiwgbG9jYWxkYXRhLCBlcnJwcmludGVkKSwgbG9jYWxkYXRhKQorICAgICAgICAgICAgICAgIGV2ZW50LmZpcmUoVGFza0ZhaWxlZCh0YXNrLCBmbiwgbG9nZm4sIGxvY2FsZGF0YSwgZXJycHJpbnRlZCksIGxvY2FsZGF0YSkKICAgICAgICAgICAgIHJldHVybiAxCiAgICAgZmluYWxseToKICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCkBAIC02MTQsNyArNjE2LDcgQEAKICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiWmVybyBzaXplIGxvZ2ZuICVzLCByZW1vdmluZyIsIGxvZ2ZuKQogICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKGxvZ2ZuKQogICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKGxvZ2xpbmspCi0gICAgZXZlbnQuZmlyZShUYXNrU3VjY2VlZGVkKHRhc2ssIGxvZ2ZuLCBsb2NhbGRhdGEpLCBsb2NhbGRhdGEpCisgICAgZXZlbnQuZmlyZShUYXNrU3VjY2VlZGVkKHRhc2ssIGZuLCBsb2dmbiwgbG9jYWxkYXRhKSwgbG9jYWxkYXRhKQogCiAgICAgaWYgbm90IGxvY2FsZGF0YS5nZXRWYXJGbGFnKHRhc2ssICdub3N0YW1wJywgRmFsc2UpIGFuZCBub3QgbG9jYWxkYXRhLmdldFZhckZsYWcodGFzaywgJ3NlbGZzdGFtcCcsIEZhbHNlKToKICAgICAgICAgbWFrZV9zdGFtcCh0YXNrLCBsb2NhbGRhdGEpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2NhY2hlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9jYWNoZS5weQppbmRleCBiNmY3ZGE1Li5kMWJlODM2IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2NhY2hlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvY2FjaGUucHkKQEAgLTE3LDExICsxNywxMSBAQAogIwogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcGlja2xlCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAogaW1wb3J0IGJiLnV0aWxzCitpbXBvcnQgcmUKIAogbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoIkJpdEJha2UuQ2FjaGUiKQogCkBAIC0yMDgsMTAgKzIwOCwxMCBAQAogCiAgICAgICAgICMgQ29sbGVjdCBmaWxlcyB3ZSBtYXkgbmVlZCBmb3IgcG9zc2libGUgd29ybGQtZGVwCiAgICAgICAgICMgY2FsY3VsYXRpb25zCi0gICAgICAgIGlmIHNlbGYubm90X3dvcmxkOgotICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJFWENMVURFIEZST00gV09STEQ6ICVzIiwgZm4pCi0gICAgICAgIGVsc2U6CisgICAgICAgIGlmIG5vdCBzZWxmLm5vdF93b3JsZDoKICAgICAgICAgICAgIGNhY2hlZGF0YS5wb3NzaWJsZV93b3JsZC5hcHBlbmQoZm4pCisgICAgICAgICNlbHNlOgorICAgICAgICAjICAgIGxvZ2dlci5kZWJ1ZygyLCAiRVhDTFVERSBGUk9NIFdPUkxEOiAlcyIsIGZuKQogCiAgICAgICAgICMgY3JlYXRlIGEgY29sbGVjdGlvbiBvZiBhbGwgdGFyZ2V0cyBmb3Igc2FuaXR5IGNoZWNraW5nCiAgICAgICAgICMgdGFza3MsIHN1Y2ggYXMgdXBzdHJlYW0gdmVyc2lvbnMsIGxpY2Vuc2UsIGFuZCB0b29scyBmb3IKQEAgLTM3MCw2ICszNzAsNyBAQAogICAgICAgICBzZWxmLmRhdGFfZm4gPSBOb25lCiAgICAgICAgIHNlbGYuY2FjaGVjbGVhbiA9IFRydWUKICAgICAgICAgc2VsZi5kYXRhX2hhc2ggPSBkYXRhX2hhc2gKKyAgICAgICAgc2VsZi5maWxlbGlzdF9yZWdleCA9IHJlLmNvbXBpbGUocicoPzooPzw9OlRydWUpfCg/PD06RmFsc2UpKVxzKycpCiAKICAgICAgICAgaWYgc2VsZi5jYWNoZWRpciBpbiBbTm9uZSwgJyddOgogICAgICAgICAgICAgc2VsZi5oYXNfY2FjaGUgPSBGYWxzZQpAQCAtNjA4LDIwICs2MDksMTIgQEAKICAgICAgICAgaWYgaGFzYXR0cihpbmZvX2FycmF5WzBdLCAnZmlsZV9jaGVja3N1bXMnKToKICAgICAgICAgICAgIGZvciBfLCBmbCBpbiBpbmZvX2FycmF5WzBdLmZpbGVfY2hlY2tzdW1zLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgZmwgPSBmbC5zdHJpcCgpCi0gICAgICAgICAgICAgICAgd2hpbGUgZmw6Ci0gICAgICAgICAgICAgICAgICAgICMgQSAuc3BsaXQoKSB3b3VsZCBiZSBzaW1wbGVyIGJ1dCBtZWFucyBzcGFjZXMgb3IgY29sb25zIGluIGZpbGVuYW1lcyB3b3VsZCBicmVhawotICAgICAgICAgICAgICAgICAgICBhID0gZmwuZmluZCgiOlRydWUiKQotICAgICAgICAgICAgICAgICAgICBiID0gZmwuZmluZCgiOkZhbHNlIikKLSAgICAgICAgICAgICAgICAgICAgaWYgKChhIDwgMCkgYW5kIGIpIG9yICgoYiA+IDApIGFuZCAoYiA8IGEpKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBmbFs6Yis2XQotICAgICAgICAgICAgICAgICAgICAgICAgZmwgPSBmbFtiKzc6XQotICAgICAgICAgICAgICAgICAgICBlbGlmICgoYiA8IDApIGFuZCBhKSBvciAoKGEgPiAwKSBhbmQgKGEgPCBiKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmID0gZmxbOmErNV0KLSAgICAgICAgICAgICAgICAgICAgICAgIGZsID0gZmxbYSs2Ol0KLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGZsID0gZmwuc3RyaXAoKQotICAgICAgICAgICAgICAgICAgICBpZiAiKiIgaW4gZjoKKyAgICAgICAgICAgICAgICBpZiBub3QgZmw6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgIyBIYXZlIHRvIGJlIGNhcmVmdWwgYWJvdXQgc3BhY2VzIGFuZCBjb2xvbnMgaW4gZmlsZW5hbWVzCisgICAgICAgICAgICAgICAgZmxpc3QgPSBzZWxmLmZpbGVsaXN0X3JlZ2V4LnNwbGl0KGZsKQorICAgICAgICAgICAgICAgIGZvciBmIGluIGZsaXN0OgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgZiBvciAiKiIgaW4gZjoKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgIGYsIGV4aXN0ID0gZi5zcGxpdCgiOiIpCiAgICAgICAgICAgICAgICAgICAgIGlmIChleGlzdCA9PSAiVHJ1ZSIgYW5kIG5vdCBvcy5wYXRoLmV4aXN0cyhmKSkgb3IgKGV4aXN0ID09ICJGYWxzZSIgYW5kIG9zLnBhdGguZXhpc3RzKGYpKToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvY2hlY2tzdW0ucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2NoZWNrc3VtLnB5CmluZGV4IDViYzhhOGYuLjFkNTBhMjYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvY2hlY2tzdW0ucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9jaGVja3N1bS5weQpAQCAtOSw3ICs5LDYgQEAKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IG9zCiBpbXBvcnQgc3RhdAotaW1wb3J0IHBpY2tsZQogaW1wb3J0IGJiLnV0aWxzCiBpbXBvcnQgbG9nZ2luZwogZnJvbSBiYi5jYWNoZSBpbXBvcnQgTXVsdGlQcm9jZXNzQ2FjaGUKQEAgLTc0LDcgKzczLDcgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZGVzdFswXVtoXSA9IHNvdXJjZVswXVtoXQogCi0gICAgZGVmIGdldF9jaGVja3N1bXMoc2VsZiwgZmlsZWxpc3QsIHBuKToKKyAgICBkZWYgZ2V0X2NoZWNrc3VtcyhzZWxmLCBmaWxlbGlzdCwgcG4sIGxvY2FsZGlyc2V4Y2x1ZGUpOgogICAgICAgICAiIiJHZXQgY2hlY2tzdW1zIGZvciBhIGxpc3Qgb2YgZmlsZXMiIiIKIAogICAgICAgICBkZWYgY2hlY2tzdW1fZmlsZShmKToKQEAgLTkwLDcgKzg5LDggQEAKICAgICAgICAgICAgIGlmIHB0aCA9PSAiLyI6CiAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIlJlZnVzaW5nIHRvIGNoZWNrc3VtIC8iKQogICAgICAgICAgICAgZGlyY2hlY2tzdW1zID0gW10KLSAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHB0aCk6CisgICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhwdGgsIHRvcGRvd249VHJ1ZSk6CisgICAgICAgICAgICAgICAgW2RpcnMucmVtb3ZlKGQpIGZvciBkIGluIGxpc3QoZGlycykgaWYgZCBpbiBsb2NhbGRpcnNleGNsdWRlXQogICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVzOgogICAgICAgICAgICAgICAgICAgICBmdWxscHRoID0gb3MucGF0aC5qb2luKHJvb3QsIG5hbWUpCiAgICAgICAgICAgICAgICAgICAgIGNoZWNrc3VtID0gY2hlY2tzdW1fZmlsZShmdWxscHRoKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9jb2RlcGFyc2VyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9jb2RlcGFyc2VyLnB5CmluZGV4IGZkMmM0NzMuLjI1YTdhYzYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvY29kZXBhcnNlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2NvZGVwYXJzZXIucHkKQEAgLTI1LDEzICsyNSwxMSBAQAogaW1wb3J0IHN5cwogaW1wb3J0IGNvZGVnZW4KIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcGlja2xlCiBpbXBvcnQgYmIucHlzaCBhcyBweXNoCi1pbXBvcnQgb3MucGF0aAogaW1wb3J0IGJiLnV0aWxzLCBiYi5kYXRhCiBpbXBvcnQgaGFzaGxpYgogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGNoYWluCi1mcm9tIGJiLnB5c2ggaW1wb3J0IHB5c2h5YWNjLCBweXNobGV4LCBzaGVycm9ycworZnJvbSBiYi5weXNoIGltcG9ydCBweXNoeWFjYywgcHlzaGxleAogZnJvbSBiYi5jYWNoZSBpbXBvcnQgTXVsdGlQcm9jZXNzQ2FjaGUKIAogbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ0JpdEJha2UuQ29kZVBhcnNlcicpCkBAIC01OCwzMCArNTYsMTAgQEAKIAogICAgIHJldHVybiBjb2Rlc3RyCiAKLQotIyBCYXNpY2FsbHkgcGlja2xlLCBpbiBweXRob24gMi43LjMgYXQgbGVhc3QsIGRvZXMgYmFkbHkgd2l0aCBkYXRhIGR1cGxpY2F0aW9uIAotIyB1cG9uIHBpY2tsaW5nIGFuZCB1bnBpY2tsaW5nLiBDb21iaW5lIHRoaXMgd2l0aCBkdXBsaWNhdGUgb2JqZWN0cyBhbmQgdGhpbmdzCi0jIGFyZSBhIG1lc3MuCi0jCi0jIFdoZW4gdGhlIHNldHMgYXJlIG9yaWdpbmFsbHkgY3JlYXRlZCwgcHl0aG9uIGNhbGxzIGludGVybigpIG9uIHRoZSBzZXQga2V5cwotIyB3aGljaCBzaWduaWZpY2FudGx5IGltcHJvdmVzIG1lbW9yeSB1c2FnZS4gU2FkbHkgdGhlIHBpY2tsZS91bnBpY2tsZSBwcm9jZXNzCi0jIGRvZXNuJ3QgY2FsbCBpbnRlcm4oKSBvbiB0aGUga2V5cyBhbmQgcmVzdWx0cyBpbiB0aGUgc2FtZSBzdHJpbmdzIGJlaW5nIGR1cGxpY2F0ZWQKLSMgaW4gbWVtb3J5LiBUaGlzIGFsc28gbWVhbnMgcGlja2xlIHdpbGwgc2F2ZSB0aGUgc2FtZSBzdHJpbmcgbXVsdGlwbGUgdGltZXMgaW4KLSMgdGhlIGNhY2hlIGZpbGUuCi0jCi0jIEJ5IGhhdmluZyBzaGVsbCBhbmQgcHl0aG9uIGNhY2hlbGluZSBvYmplY3RzIHdpdGggc2V0c3RhdGUvZ2V0c3RhdGUsIHdlIGZvcmNlCi0jIHRoZSBvYmplY3QgY3JlYXRpb24gdGhyb3VnaCBvdXIgb3duIHJvdXRpbmUgd2hlcmUgd2UgY2FuIGNhbGwgaW50ZXJuICh2aWEgaW50ZXJuU2V0KS4KLSMKLSMgV2UgYWxzbyB1c2UgaGFzaGFibGUgZnJvemVuc2V0cyBhbmQgZW5zdXJlIHdlIHVzZSByZWZlcmVuY2VzIHRvIHRoZXNlIHNvIHRoYXQKLSMgZHVwbGljYXRlcyBjYW4gYmUgcmVtb3ZlZCwgYm90aCBpbiBtZW1vcnkgYW5kIGluIHRoZSByZXN1bHRpbmcgcGlja2xlZCBkYXRhLgotIwotIyBCeSBwbGF5aW5nIHRoZXNlIGdhbWVzLCB0aGUgc2l6ZSBvZiB0aGUgY2FjaGUgZmlsZSBzaHJpbmtzIGRyYW1hdGljYWxseQotIyBtZWFuaW5nIGZhc3RlciBsb2FkIHRpbWVzIGFuZCB0aGUgcmVsb2FkZWQgY2FjaGUgZmlsZXMgYWxzbyBjb25zdW1lIG11Y2ggbGVzcwotIyBtZW1vcnkuIFNtYWxsZXIgY2FjaGUgZmlsZXMsIGZhc3RlciBsb2FkIHRpbWVzIGFuZCBsb3dlciBtZW1vcnkgdXNhZ2UgaXMgZ29vZC4KLSMKICMgQSBjdXN0b20gZ2V0c3RhdGUvc2V0c3RhdGUgdXNpbmcgdHVwbGVzIGlzIGFjdHVhbGx5IHdvcnRoIDE1JSBjYWNoZXNpemUgYnkKICMgYXZvaWRpbmcgZHVwbGljYXRpb24gb2YgdGhlIGF0dHJpYnV0ZSBuYW1lcyEKIAorCiBjbGFzcyBTZXRDYWNoZShvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5zZXRjYWNoZSA9IHt9CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2NvbW1hbmQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2NvbW1hbmQucHkKaW5kZXggMzc4ZjM4OS4uNmFiZjM4NiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9jb21tYW5kLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvY29tbWFuZC5weQpAQCAtNjUsNyArNjUsNyBAQAogICAgICAgICAgICAgIyBDYW4gcnVuIHN5bmNocm9ub3VzIGNvbW1hbmRzIHN0cmFpZ2h0IGF3YXkKICAgICAgICAgICAgIGNvbW1hbmRfbWV0aG9kID0gZ2V0YXR0cihzZWxmLmNtZHNfc3luYywgY29tbWFuZCkKICAgICAgICAgICAgIGlmIHJvX29ubHk6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoY29tbWFuZF9tZXRob2QsICdyZWFkb25seScpIG9yIEZhbHNlID09IGdldGF0dHIoY29tbWFuZF9tZXRob2QsICdyZWFkb25seScpOgorICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGNvbW1hbmRfbWV0aG9kLCAncmVhZG9ubHknKSBvciBub3QgZ2V0YXR0cihjb21tYW5kX21ldGhvZCwgJ3JlYWRvbmx5Jyk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCAiTm90IGFibGUgdG8gZXhlY3V0ZSBub3QgcmVhZG9ubHkgY29tbWFuZHMgaW4gcmVhZG9ubHkgbW9kZSIKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmNvb2tlci5wcm9jZXNzX2lub3RpZnlfdXBkYXRlcygpCkBAIC00MTQsNyArNDE0LDExIEBACiAgICAgZ2V0QWxsQXBwZW5kcy5yZWFkb25seSA9IFRydWUKIAogICAgIGRlZiBmaW5kUHJvdmlkZXJzKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6Ci0gICAgICAgIHJldHVybiBjb21tYW5kLmNvb2tlci5maW5kUHJvdmlkZXJzKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbWMgPSBwYXJhbXNbMF0KKyAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICBtYyA9ICcnCisgICAgICAgIHJldHVybiBjb21tYW5kLmNvb2tlci5maW5kUHJvdmlkZXJzKG1jKQogICAgIGZpbmRQcm92aWRlcnMucmVhZG9ubHkgPSBUcnVlCiAKICAgICBkZWYgZmluZEJlc3RQcm92aWRlcihzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgpAQCAtNDQ2LDU0ICs0NTAsMzggQEAKICAgICAgICAgcmV0dXJuIGFsbF9wLCBiZXN0CiAgICAgZ2V0UnVudGltZVByb3ZpZGVycy5yZWFkb25seSA9IFRydWUKIAotICAgIGRlZiBkYXRhU3RvcmVDb25uZWN0b3JGaW5kVmFyKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CisgICAgZGVmIGRhdGFTdG9yZUNvbm5lY3RvckNtZChzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgogICAgICAgICBkc2luZGV4ID0gcGFyYW1zWzBdCi0gICAgICAgIG5hbWUgPSBwYXJhbXNbMV0KLSAgICAgICAgZGF0YXN0b3JlID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzW2RzaW5kZXhdCi0gICAgICAgIHZhbHVlLCBvdmVycmlkZWRhdGEgPSBkYXRhc3RvcmUuX2ZpbmRWYXIobmFtZSkKKyAgICAgICAgbWV0aG9kID0gcGFyYW1zWzFdCisgICAgICAgIGFyZ3MgPSBwYXJhbXNbMl0KKyAgICAgICAga3dhcmdzID0gcGFyYW1zWzNdCiAKLSAgICAgICAgaWYgdmFsdWU6Ci0gICAgICAgICAgICBjb250ZW50ID0gdmFsdWUuZ2V0KCdfY29udGVudCcsIE5vbmUpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNvbnRlbnQsIGJiLmRhdGFfc21hcnQuRGF0YVNtYXJ0KToKLSAgICAgICAgICAgICAgICAjIFZhbHVlIGlzIGEgZGF0YXN0b3JlIChlLmcuIEJCX09SSUdFTlYpIC0gbmVlZCB0byBoYW5kbGUgdGhpcyBjYXJlZnVsbHkKLSAgICAgICAgICAgICAgICBpZHggPSBjb21tYW5kLnJlbW90ZWRhdGFzdG9yZXMuY2hlY2tfc3RvcmUoY29udGVudCwgVHJ1ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4geydfY29udGVudCc6IERhdGFTdG9yZUNvbm5lY3Rpb25IYW5kbGUoaWR4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdfY29ubmVjdG9yX29yaWd0eXBlJzogJ0RhdGFTdG9yZUNvbm5lY3Rpb25IYW5kbGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ19jb25uZWN0b3Jfb3ZlcnJpZGVzJzogb3ZlcnJpZGVkYXRhfQotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGNvbnRlbnQsIHNldCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHsnX2NvbnRlbnQnOiBsaXN0KGNvbnRlbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgJ19jb25uZWN0b3Jfb3JpZ3R5cGUnOiAnc2V0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdfY29ubmVjdG9yX292ZXJyaWRlcyc6IG92ZXJyaWRlZGF0YX0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdmFsdWVbJ19jb25uZWN0b3Jfb3ZlcnJpZGVzJ10gPSBvdmVycmlkZWRhdGEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHZhbHVlID0ge30KLSAgICAgICAgICAgIHZhbHVlWydfY29ubmVjdG9yX292ZXJyaWRlcyddID0gb3ZlcnJpZGVkYXRhCi0gICAgICAgIHJldHVybiB2YWx1ZQotICAgIGRhdGFTdG9yZUNvbm5lY3RvckZpbmRWYXIucmVhZG9ubHkgPSBUcnVlCisgICAgICAgIGQgPSBjb21tYW5kLnJlbW90ZWRhdGFzdG9yZXNbZHNpbmRleF0KKyAgICAgICAgcmV0ID0gZ2V0YXR0cihkLCBtZXRob2QpKCphcmdzLCAqKmt3YXJncykKIAotICAgIGRlZiBkYXRhU3RvcmVDb25uZWN0b3JHZXRLZXlzKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UocmV0LCBiYi5kYXRhX3NtYXJ0LkRhdGFTbWFydCk6CisgICAgICAgICAgICBpZHggPSBjb21tYW5kLnJlbW90ZWRhdGFzdG9yZXMuc3RvcmUocmV0KQorICAgICAgICAgICAgcmV0dXJuIERhdGFTdG9yZUNvbm5lY3Rpb25IYW5kbGUoaWR4KQorCisgICAgICAgIHJldHVybiByZXQKKworICAgIGRlZiBkYXRhU3RvcmVDb25uZWN0b3JWYXJIaXN0Q21kKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CiAgICAgICAgIGRzaW5kZXggPSBwYXJhbXNbMF0KLSAgICAgICAgZGF0YXN0b3JlID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzW2RzaW5kZXhdCi0gICAgICAgIHJldHVybiBsaXN0KGRhdGFzdG9yZS5rZXlzKCkpCi0gICAgZGF0YVN0b3JlQ29ubmVjdG9yR2V0S2V5cy5yZWFkb25seSA9IFRydWUKKyAgICAgICAgbWV0aG9kID0gcGFyYW1zWzFdCisgICAgICAgIGFyZ3MgPSBwYXJhbXNbMl0KKyAgICAgICAga3dhcmdzID0gcGFyYW1zWzNdCiAKLSAgICBkZWYgZGF0YVN0b3JlQ29ubmVjdG9yR2V0VmFySGlzdG9yeShzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgorICAgICAgICBkID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzW2RzaW5kZXhdLnZhcmhpc3RvcnkKKyAgICAgICAgcmV0dXJuIGdldGF0dHIoZCwgbWV0aG9kKSgqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgZGF0YVN0b3JlQ29ubmVjdG9ySW5jSGlzdENtZChzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgogICAgICAgICBkc2luZGV4ID0gcGFyYW1zWzBdCi0gICAgICAgIG5hbWUgPSBwYXJhbXNbMV0KLSAgICAgICAgZGF0YXN0b3JlID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzW2RzaW5kZXhdCi0gICAgICAgIHJldHVybiBkYXRhc3RvcmUudmFyaGlzdG9yeS52YXJpYWJsZShuYW1lKQotICAgIGRhdGFTdG9yZUNvbm5lY3RvckdldFZhckhpc3RvcnkucmVhZG9ubHkgPSBUcnVlCisgICAgICAgIG1ldGhvZCA9IHBhcmFtc1sxXQorICAgICAgICBhcmdzID0gcGFyYW1zWzJdCisgICAgICAgIGt3YXJncyA9IHBhcmFtc1szXQogCi0gICAgZGVmIGRhdGFTdG9yZUNvbm5lY3RvckV4cGFuZFB5dGhvblJlZihzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgotICAgICAgICBjb25maWdfZGF0YV9kaWN0ID0gcGFyYW1zWzBdCi0gICAgICAgIHZhcm5hbWUgPSBwYXJhbXNbMV0KLSAgICAgICAgZXhwciA9IHBhcmFtc1syXQotCi0gICAgICAgIGNvbmZpZ19kYXRhID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzLnJlY2VpdmVfZGF0YXN0b3JlKGNvbmZpZ19kYXRhX2RpY3QpCi0KLSAgICAgICAgdmFycGFyc2UgPSBiYi5kYXRhX3NtYXJ0LlZhcmlhYmxlUGFyc2UodmFybmFtZSwgY29uZmlnX2RhdGEpCi0gICAgICAgIHJldHVybiB2YXJwYXJzZS5weXRob25fc3ViKGV4cHIpCisgICAgICAgIGQgPSBjb21tYW5kLnJlbW90ZWRhdGFzdG9yZXNbZHNpbmRleF0uaW5jaGlzdG9yeQorICAgICAgICByZXR1cm4gZ2V0YXR0cihkLCBtZXRob2QpKCphcmdzLCAqKmt3YXJncykKIAogICAgIGRlZiBkYXRhU3RvcmVDb25uZWN0b3JSZWxlYXNlKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CiAgICAgICAgIGRzaW5kZXggPSBwYXJhbXNbMF0KQEAgLTUwMSwzMSArNDg5LDYgQEAKICAgICAgICAgICAgIHJhaXNlIENvbW1hbmRFcnJvcignZGF0YVN0b3JlQ29ubmVjdG9yUmVsZWFzZTogaW52YWxpZCBpbmRleCAlZCcgJSBkc2luZGV4KQogICAgICAgICBjb21tYW5kLnJlbW90ZWRhdGFzdG9yZXMucmVsZWFzZShkc2luZGV4KQogCi0gICAgZGVmIGRhdGFTdG9yZUNvbm5lY3RvclNldFZhckZsYWcoc2VsZiwgY29tbWFuZCwgcGFyYW1zKToKLSAgICAgICAgZHNpbmRleCA9IHBhcmFtc1swXQotICAgICAgICBuYW1lID0gcGFyYW1zWzFdCi0gICAgICAgIGZsYWcgPSBwYXJhbXNbMl0KLSAgICAgICAgdmFsdWUgPSBwYXJhbXNbM10KLSAgICAgICAgZGF0YXN0b3JlID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzW2RzaW5kZXhdCi0gICAgICAgIGRhdGFzdG9yZS5zZXRWYXJGbGFnKG5hbWUsIGZsYWcsIHZhbHVlKQotCi0gICAgZGVmIGRhdGFTdG9yZUNvbm5lY3RvckRlbFZhcihzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgotICAgICAgICBkc2luZGV4ID0gcGFyYW1zWzBdCi0gICAgICAgIG5hbWUgPSBwYXJhbXNbMV0KLSAgICAgICAgZGF0YXN0b3JlID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzW2RzaW5kZXhdCi0gICAgICAgIGlmIGxlbihwYXJhbXMpID4gMjoKLSAgICAgICAgICAgIGZsYWcgPSBwYXJhbXNbMl0KLSAgICAgICAgICAgIGRhdGFzdG9yZS5kZWxWYXJGbGFnKG5hbWUsIGZsYWcpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkYXRhc3RvcmUuZGVsVmFyKG5hbWUpCi0KLSAgICBkZWYgZGF0YVN0b3JlQ29ubmVjdG9yUmVuYW1lVmFyKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6Ci0gICAgICAgIGRzaW5kZXggPSBwYXJhbXNbMF0KLSAgICAgICAgbmFtZSA9IHBhcmFtc1sxXQotICAgICAgICBuZXduYW1lID0gcGFyYW1zWzJdCi0gICAgICAgIGRhdGFzdG9yZSA9IGNvbW1hbmQucmVtb3RlZGF0YXN0b3Jlc1tkc2luZGV4XQotICAgICAgICBkYXRhc3RvcmUucmVuYW1lVmFyKG5hbWUsIG5ld25hbWUpCi0KICAgICBkZWYgcGFyc2VSZWNpcGVGaWxlKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6CiAgICAgICAgICIiIgogICAgICAgICBQYXJzZSB0aGUgc3BlY2lmaWVkIHJlY2lwZSBmaWxlICh3aXRoIG9yIHdpdGhvdXQgYmJhcHBlbmRzKQpAQCAtNTM2LDggKzQ5OSw3IEBACiAgICAgICAgIGFwcGVuZHMgPSBwYXJhbXNbMV0KICAgICAgICAgYXBwZW5kbGlzdCA9IHBhcmFtc1syXQogICAgICAgICBpZiBsZW4ocGFyYW1zKSA+IDM6Ci0gICAgICAgICAgICBjb25maWdfZGF0YV9kaWN0ID0gcGFyYW1zWzNdCi0gICAgICAgICAgICBjb25maWdfZGF0YSA9IGNvbW1hbmQucmVtb3RlZGF0YXN0b3Jlcy5yZWNlaXZlX2RhdGFzdG9yZShjb25maWdfZGF0YV9kaWN0KQorICAgICAgICAgICAgY29uZmlnX2RhdGEgPSBjb21tYW5kLnJlbW90ZWRhdGFzdG9yZXNbcGFyYW1zWzNdXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY29uZmlnX2RhdGEgPSBOb25lCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvY29va2VyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXIucHkKaW5kZXggZTY0NDJiZi4uZTUyN2UyMyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXIucHkKQEAgLTEwLDcgKzEwLDYgQEAKICMKIAogaW1wb3J0IHN5cywgb3MsIGdsb2IsIG9zLnBhdGgsIHJlLCB0aW1lCi1pbXBvcnQgYXRleGl0CiBpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG11bHRpcHJvY2Vzc2luZwpAQCAtMTgsMTQgKzE3LDExIEBACiBpbXBvcnQgdGhyZWFkaW5nCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTywgVW5zdXBwb3J0ZWRPcGVyYXRpb24KIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY2xvc2luZwotZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdCwgbmFtZWR0dXBsZQogaW1wb3J0IGJiLCBiYi5leGNlcHRpb25zLCBiYi5jb21tYW5kCiBmcm9tIGJiIGltcG9ydCB1dGlscywgZGF0YSwgcGFyc2UsIGV2ZW50LCBjYWNoZSwgcHJvdmlkZXJzLCB0YXNrZGF0YSwgcnVucXVldWUsIGJ1aWxkCiBpbXBvcnQgcXVldWUKIGltcG9ydCBzaWduYWwKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgZXJybm8KIGltcG9ydCBwcnNlcnYuc2VydgogaW1wb3J0IHB5aW5vdGlmeQogaW1wb3J0IGpzb24KQEAgLTE2OSw4ICsxNjUsOCBAQAogICAgICAgICBiYi5kZWJ1ZygxLCAiQkJDb29rZXIgcHlpbm90aWZ5MSAlcyIgJSB0aW1lLnRpbWUoKSkKICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAKLSAgICAgICAgc2VsZi5jb25maWd3YXRjaGVyLmJic2VlbiA9IFtdCi0gICAgICAgIHNlbGYuY29uZmlnd2F0Y2hlci5iYndhdGNoZWRmaWxlcyA9IFtdCisgICAgICAgIHNlbGYuY29uZmlnd2F0Y2hlci5iYnNlZW4gPSBzZXQoKQorICAgICAgICBzZWxmLmNvbmZpZ3dhdGNoZXIuYmJ3YXRjaGVkZmlsZXMgPSBzZXQoKQogICAgICAgICBzZWxmLmNvbmZpZ25vdGlmaWVyID0gcHlpbm90aWZ5Lk5vdGlmaWVyKHNlbGYuY29uZmlnd2F0Y2hlciwgc2VsZi5jb25maWdfbm90aWZpY2F0aW9ucykKICAgICAgICAgYmIuZGVidWcoMSwgIkJCQ29va2VyIHB5aW5vdGlmeTIgJXMiICUgdGltZS50aW1lKCkpCiAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQpAQCAtMTgwLDggKzE3Niw4IEBACiAgICAgICAgIHNlbGYud2F0Y2hlciA9IHB5aW5vdGlmeS5XYXRjaE1hbmFnZXIoKQogICAgICAgICBiYi5kZWJ1ZygxLCAiQkJDb29rZXIgcHlpbm90aWZ5MyAlcyIgJSB0aW1lLnRpbWUoKSkKICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgIHNlbGYud2F0Y2hlci5iYnNlZW4gPSBbXQotICAgICAgICBzZWxmLndhdGNoZXIuYmJ3YXRjaGVkZmlsZXMgPSBbXQorICAgICAgICBzZWxmLndhdGNoZXIuYmJzZWVuID0gc2V0KCkKKyAgICAgICAgc2VsZi53YXRjaGVyLmJid2F0Y2hlZGZpbGVzID0gc2V0KCkKICAgICAgICAgc2VsZi5ub3RpZmllciA9IHB5aW5vdGlmeS5Ob3RpZmllcihzZWxmLndhdGNoZXIsIHNlbGYubm90aWZpY2F0aW9ucykKIAogICAgICAgICBiYi5kZWJ1ZygxLCAiQkJDb29rZXIgcHlpbm90aWZ5IGNvbXBsZXRlICVzIiAlIHRpbWUudGltZSgpKQpAQCAtMjc4LDE0ICsyNzQsMTQgQEAKICAgICAgICAgaWYgbm90IHdhdGNoZXI6CiAgICAgICAgICAgICB3YXRjaGVyID0gc2VsZi53YXRjaGVyCiAgICAgICAgIGZvciBpIGluIGRlcHM6Ci0gICAgICAgICAgICB3YXRjaGVyLmJid2F0Y2hlZGZpbGVzLmFwcGVuZChpWzBdKQorICAgICAgICAgICAgd2F0Y2hlci5iYndhdGNoZWRmaWxlcy5hZGQoaVswXSkKICAgICAgICAgICAgIGlmIGRpcnM6CiAgICAgICAgICAgICAgICAgZiA9IGlbMF0KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZiA9IG9zLnBhdGguZGlybmFtZShpWzBdKQogICAgICAgICAgICAgaWYgZiBpbiB3YXRjaGVyLmJic2VlbjoKICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgd2F0Y2hlci5iYnNlZW4uYXBwZW5kKGYpCisgICAgICAgICAgICB3YXRjaGVyLmJic2Vlbi5hZGQoZikKICAgICAgICAgICAgIHdhdGNodGFyZ2V0ID0gTm9uZQogICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICAjIFdlIHRyeSBhbmQgYWRkIHdhdGNoZXMgZm9yIGZpbGVzIHRoYXQgZG9uJ3QgZXhpc3QgYnV0IGlmIHRoZXkgZGlkLCB3b3VsZCBpbmZsdWVuY2UKQEAgLTI5NCw3ICsyOTAsNyBAQAogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgd2F0Y2hlci5hZGRfd2F0Y2goZiwgc2VsZi53YXRjaG1hc2ssIHF1aWV0PUZhbHNlKQogICAgICAgICAgICAgICAgICAgICBpZiB3YXRjaHRhcmdldDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHdhdGNoZXIuYmJ3YXRjaGVkZmlsZXMuYXBwZW5kKHdhdGNodGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgd2F0Y2hlci5iYndhdGNoZWRmaWxlcy5hZGQod2F0Y2h0YXJnZXQpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgZXhjZXB0IHB5aW5vdGlmeS5XYXRjaE1hbmFnZXJFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICBpZiAnRU5PRU5UJyBpbiBzdHIoZSk6CkBAIC0zMDIsNyArMjk4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBvcy5wYXRoLmRpcm5hbWUoZikKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGYgaW4gd2F0Y2hlci5iYnNlZW46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdhdGNoZXIuYmJzZWVuLmFwcGVuZChmKQorICAgICAgICAgICAgICAgICAgICAgICAgd2F0Y2hlci5iYnNlZW4uYWRkKGYpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICBpZiAnRU5PU1BDJyBpbiBzdHIoZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlcmxvZy5lcnJvcigiTm8gc3BhY2UgbGVmdCBvbiBkZXZpY2Ugb3IgZXhjZWVkcyBmcy5pbm90aWZ5Lm1heF91c2VyX3dhdGNoZXM/IikKQEAgLTEwMjcsMTYgKzEwMjMsMTYgQEAKICAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuRmlsZXNNYXRjaGluZ0ZvdW5kKGZpbGVwYXR0ZXJuLCBtYXRjaGVzKSwgc2VsZi5kYXRhKQogCiAgICAgZGVmIGZpbmRQcm92aWRlcnMoc2VsZiwgbWM9JycpOgotICAgICAgICByZXR1cm4gYmIucHJvdmlkZXJzLmZpbmRQcm92aWRlcnMoc2VsZi5kYXRhLCBzZWxmLnJlY2lwZWNhY2hlc1ttY10sIHNlbGYucmVjaXBlY2FjaGVzW21jXS5wa2dfcG4pCisgICAgICAgIHJldHVybiBiYi5wcm92aWRlcnMuZmluZFByb3ZpZGVycyhzZWxmLmRhdGFidWlsZGVyLm1jZGF0YVttY10sIHNlbGYucmVjaXBlY2FjaGVzW21jXSwgc2VsZi5yZWNpcGVjYWNoZXNbbWNdLnBrZ19wbikKIAogICAgIGRlZiBmaW5kQmVzdFByb3ZpZGVyKHNlbGYsIHBuLCBtYz0nJyk6CiAgICAgICAgIGlmIHBuIGluIHNlbGYucmVjaXBlY2FjaGVzW21jXS5wcm92aWRlcnM6CiAgICAgICAgICAgICBmaWxlbmFtZXMgPSBzZWxmLnJlY2lwZWNhY2hlc1ttY10ucHJvdmlkZXJzW3BuXQotICAgICAgICAgICAgZWxpZ2libGUsIGZvdW5kVW5pcXVlID0gYmIucHJvdmlkZXJzLmZpbHRlclByb3ZpZGVycyhmaWxlbmFtZXMsIHBuLCBzZWxmLmRhdGEsIHNlbGYucmVjaXBlY2FjaGVzW21jXSkKKyAgICAgICAgICAgIGVsaWdpYmxlLCBmb3VuZFVuaXF1ZSA9IGJiLnByb3ZpZGVycy5maWx0ZXJQcm92aWRlcnMoZmlsZW5hbWVzLCBwbiwgc2VsZi5kYXRhYnVpbGRlci5tY2RhdGFbbWNdLCBzZWxmLnJlY2lwZWNhY2hlc1ttY10pCiAgICAgICAgICAgICBmaWxlbmFtZSA9IGVsaWdpYmxlWzBdCiAgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgTm9uZSwgZmlsZW5hbWUKICAgICAgICAgZWxpZiBwbiBpbiBzZWxmLnJlY2lwZWNhY2hlc1ttY10ucGtnX3BuOgotICAgICAgICAgICAgcmV0dXJuIGJiLnByb3ZpZGVycy5maW5kQmVzdFByb3ZpZGVyKHBuLCBzZWxmLmRhdGEsIHNlbGYucmVjaXBlY2FjaGVzW21jXSwgc2VsZi5yZWNpcGVjYWNoZXNbbWNdLnBrZ19wbikKKyAgICAgICAgICAgIHJldHVybiBiYi5wcm92aWRlcnMuZmluZEJlc3RQcm92aWRlcihwbiwgc2VsZi5kYXRhYnVpbGRlci5tY2RhdGFbbWNdLCBzZWxmLnJlY2lwZWNhY2hlc1ttY10sIHNlbGYucmVjaXBlY2FjaGVzW21jXS5wa2dfcG4pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgTm9uZSwgTm9uZQogCkBAIC0xMjA4LDcgKzEyMDQsNyBAQAogICAgICAgICAgICAgZm9yIGMgaW4gY29sbGVjdGlvbl9saXN0OgogICAgICAgICAgICAgICAgIGNhbGNfbGF5ZXJfcHJpb3JpdHkoYykKICAgICAgICAgICAgICAgICByZWdleCA9IHNlbGYuZGF0YS5nZXRWYXIoIkJCRklMRV9QQVRURVJOXyVzIiAlIGMpCi0gICAgICAgICAgICAgICAgaWYgcmVnZXggPT0gTm9uZToKKyAgICAgICAgICAgICAgICBpZiByZWdleCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICBwYXJzZWxvZy5lcnJvcigiQkJGSUxFX1BBVFRFUk5fJXMgbm90IGRlZmluZWQiICUgYykKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtMTMxNCw3ICsxMzEwLDcgQEAKICAgICAgICAgc2VsZi5wYXJzZUNvbmZpZ3VyYXRpb24oKQogCiAgICAgICAgICMgSWYgd2UgYXJlIHRvbGQgdG8gZG8gdGhlIE5vbmUgdGFzayB0aGVuIHF1ZXJ5IHRoZSBkZWZhdWx0IHRhc2sKLSAgICAgICAgaWYgKHRhc2sgPT0gTm9uZSk6CisgICAgICAgIGlmIHRhc2sgaXMgTm9uZToKICAgICAgICAgICAgIHRhc2sgPSBzZWxmLmNvbmZpZ3VyYXRpb24uY21kCiAgICAgICAgIGlmIG5vdCB0YXNrLnN0YXJ0c3dpdGgoImRvXyIpOgogICAgICAgICAgICAgdGFzayA9ICJkb18lcyIgJSB0YXNrCkBAIC0xNDU4LDcgKzE0NTQsNyBAQAogICAgICAgICBzZWxmLmJ1aWxkU2V0VmFycygpCiAKICAgICAgICAgIyBJZiB3ZSBhcmUgdG9sZCB0byBkbyB0aGUgTm9uZSB0YXNrIHRoZW4gcXVlcnkgdGhlIGRlZmF1bHQgdGFzawotICAgICAgICBpZiAodGFzayA9PSBOb25lKToKKyAgICAgICAgaWYgdGFzayBpcyBOb25lOgogICAgICAgICAgICAgdGFzayA9IHNlbGYuY29uZmlndXJhdGlvbi5jbWQKIAogICAgICAgICBpZiBub3QgdGFzay5zdGFydHN3aXRoKCJkb18iKToKQEAgLTE2NjksNiArMTY2NSw4IEBACiAgICAgICAgIHNlbGYuY29tbWFuZC5yZXNldCgpCiAgICAgICAgIHNlbGYuZGF0YWJ1aWxkZXIucmVzZXQoKQogICAgICAgICBzZWxmLmRhdGEgPSBzZWxmLmRhdGFidWlsZGVyLmRhdGEKKyAgICAgICAgc2VsZi5wYXJzZWNhY2hlX3ZhbGlkID0gRmFsc2UKKyAgICAgICAgc2VsZi5iYXNlY29uZmlnX3ZhbGlkID0gRmFsc2UKIAogCiBjbGFzcyBDb29rZXJFeGl0KGJiLmV2ZW50LkV2ZW50KToKQEAgLTE2OTEsNyArMTY4OSw3IEBACiAgICAgZGVmIGNhbGNfYmJmaWxlX3ByaW9yaXR5KCBzZWxmLCBmaWxlbmFtZSwgbWF0Y2hlZCA9IE5vbmUgKToKICAgICAgICAgZm9yIF8sIF8sIHJlZ2V4LCBwcmkgaW4gc2VsZi5iYmZpbGVfY29uZmlnX3ByaW9yaXRpZXM6CiAgICAgICAgICAgICBpZiByZWdleC5tYXRjaChmaWxlbmFtZSk6Ci0gICAgICAgICAgICAgICAgaWYgbWF0Y2hlZCAhPSBOb25lOgorICAgICAgICAgICAgICAgIGlmIG1hdGNoZWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCByZWdleCBpbiBtYXRjaGVkOgogICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5hZGQocmVnZXgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHByaQpAQCAtMTc4OCw3ICsxNzg2LDcgQEAKICAgICAgICAgICAgICAgICAjIFdoZW4gY29uc3RydWN0aW5nIGFuIG9sZGVyIHN0eWxlIHNpbmdsZSByZWdleCwgaXQncyBwb3NzaWJsZSBmb3IgQkJNQVNLCiAgICAgICAgICAgICAgICAgIyB0byBlbmQgdXAgYmVnaW5uaW5nIHdpdGggJ3wnLCB3aGljaCBtYXRjaGVzIGFuZCBtYXNrcyBfZXZlcnl0aGluZ18uCiAgICAgICAgICAgICAgICAgaWYgbWFzay5zdGFydHN3aXRoKCJ8Iik6Ci0gICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rsb2cud2FybigiQkJNQVNLIGNvbnRhaW5zIHJlZ3VsYXIgZXhwcmVzc2lvbiBiZWdpbm5pbmcgd2l0aCAnfCcsIGZpeGluZzogJXMiICUgbWFzaykKKyAgICAgICAgICAgICAgICAgICAgY29sbGVjdGxvZy53YXJuaW5nKCJCQk1BU0sgY29udGFpbnMgcmVndWxhciBleHByZXNzaW9uIGJlZ2lubmluZyB3aXRoICd8JywgZml4aW5nOiAlcyIgJSBtYXNrKQogICAgICAgICAgICAgICAgICAgICBtYXNrID0gbWFza1sxOl0KICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHJlLmNvbXBpbGUobWFzaykKQEAgLTE5NDQsNyArMTk0Miw4IEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5wYXJzZSgqam9iKQotCisgICAgICAgICAgICAgICAgIyBDbGVhciB0aGUgc2lnZ2VuIGNhY2hlIGFmdGVyIHBhcnNpbmcgdG8gY29udHJvbCBtZW1vcnkgdXNhZ2UsIGl0cyBodWdlCisgICAgICAgICAgICAgICAgYmIucGFyc2Uuc2lnZ2VuLnBvc3RwYXJzaW5nX2NsZWFuX2NhY2hlKCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdHMucHV0KHJlc3VsdCwgdGltZW91dD0wLjI1KQogICAgICAgICAgICAgZXhjZXB0IHF1ZXVlLkZ1bGw6CkBAIC0xOTUyLDYgKzE5NTEsNyBAQAogCiAgICAgZGVmIHBhcnNlKHNlbGYsIGZpbGVuYW1lLCBhcHBlbmRzKToKICAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3JpZ2ZpbHRlciA9IGJiLmV2ZW50LkxvZ0hhbmRsZXIuZmlsdGVyCiAgICAgICAgICAgICAjIFJlY29yZCB0aGUgZmlsZW5hbWUgd2UncmUgcGFyc2luZyBpbnRvIGFueSBldmVudHMgZ2VuZXJhdGVkCiAgICAgICAgICAgICBkZWYgcGFyc2VfZmlsdGVyKHNlbGYsIHJlY29yZCk6CiAgICAgICAgICAgICAgICAgcmVjb3JkLnRhc2twaWQgPSBiYi5ldmVudC53b3JrZXJfcGlkCkBAIC0xOTc0LDYgKzE5NzQsOCBAQAogICAgICAgICAjIGEgU3lzdGVtRXhpdCBldmVudCBmb3IgZXhhbXBsZS4KICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXhjOgogICAgICAgICAgICAgcmV0dXJuIFRydWUsIFBhcnNpbmdGYWlsdXJlKGV4YywgZmlsZW5hbWUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBiYi5ldmVudC5Mb2dIYW5kbGVyLmZpbHRlciA9IG9yaWdmaWx0ZXIKIAogY2xhc3MgQ29va2VyUGFyc2VyKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvb2tlciwgZmlsZWxpc3QsIG1hc2tlZCk6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2RhdGEucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2RhdGEucHkKaW5kZXggMGQ3NWQwYy4uYjA2ODNjNSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9kYXRhLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZGF0YS5weQpAQCAtNzksNyArNzksNyBAQAogICAgIHJldHVybiBkLmV4cGFuZChzLCB2YXJuYW1lKQogCiBkZWYgZXhwYW5kS2V5cyhhbHRlcmRhdGEsIHJlYWRkYXRhID0gTm9uZSk6Ci0gICAgaWYgcmVhZGRhdGEgPT0gTm9uZToKKyAgICBpZiByZWFkZGF0YSBpcyBOb25lOgogICAgICAgICByZWFkZGF0YSA9IGFsdGVyZGF0YQogCiAgICAgdG9kb2xpc3QgPSB7fQpAQCAtMzY1LDcgKzM2NSw3IEBACiAgICAgI2JiLm5vdGUoIlZhcmlhYmxlICVzIHJlZmVyZW5jZXMgJXMgYW5kIGNhbGxzICVzIiAlIChrZXksIHN0cihkZXBzKSwgc3RyKGV4ZWNzKSkpCiAgICAgI2Quc2V0VmFyRmxhZyhrZXksICJ2YXJkZXBzIiwgZGVwcykKIAotZGVmIGdlbmVyYXRlX2RlcGVuZGVuY2llcyhkKToKK2RlZiBnZW5lcmF0ZV9kZXBlbmRlbmNpZXMoZCwgd2hpdGVsaXN0KToKIAogICAgIGtleXMgPSBzZXQoa2V5IGZvciBrZXkgaW4gZCBpZiBub3Qga2V5LnN0YXJ0c3dpdGgoIl9fIikpCiAgICAgc2hlbGxkZXBzID0gc2V0KGtleSBmb3Iga2V5IGluIGQuZ2V0VmFyKCJfX2V4cG9ydGxpc3QiLCBGYWxzZSkgaWYgZC5nZXRWYXJGbGFnKGtleSwgImV4cG9ydCIsIEZhbHNlKSBhbmQgbm90IGQuZ2V0VmFyRmxhZyhrZXksICJ1bmV4cG9ydCIsIEZhbHNlKSkKQEAgLTM4MCw3ICszODAsNyBAQAogICAgICAgICBuZXdkZXBzID0gZGVwc1t0YXNrXQogICAgICAgICBzZWVuID0gc2V0KCkKICAgICAgICAgd2hpbGUgbmV3ZGVwczoKLSAgICAgICAgICAgIG5leHRkZXBzID0gbmV3ZGVwcworICAgICAgICAgICAgbmV4dGRlcHMgPSBuZXdkZXBzIC0gd2hpdGVsaXN0CiAgICAgICAgICAgICBzZWVuIHw9IG5leHRkZXBzCiAgICAgICAgICAgICBuZXdkZXBzID0gc2V0KCkKICAgICAgICAgICAgIGZvciBkZXAgaW4gbmV4dGRlcHM6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2RhdGFfc21hcnQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2RhdGFfc21hcnQucHkKaW5kZXggZGQ1YzYxOC4uN2YxYjZkYyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9kYXRhX3NtYXJ0LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZGF0YV9zbWFydC5weQpAQCAtMTA3LDEwICsxMDcsNiBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjb2RlID0gbWF0Y2guZ3JvdXAoKVszOi0xXQogCi0gICAgICAgICAgICBpZiAiX3JlbW90ZV9kYXRhIiBpbiBzZWxmLmQ6Ci0gICAgICAgICAgICAgICAgY29ubmVjdG9yID0gc2VsZi5kWyJfcmVtb3RlX2RhdGEiXQotICAgICAgICAgICAgICAgIHJldHVybiBjb25uZWN0b3IuZXhwYW5kUHl0aG9uUmVmKHNlbGYudmFybmFtZSwgY29kZSwgc2VsZi5kKQotCiAgICAgICAgICAgICBpZiBzZWxmLnZhcm5hbWU6CiAgICAgICAgICAgICAgICAgdmFybmFtZSA9ICdWYXIgPCVzPicgJSBzZWxmLnZhcm5hbWUKICAgICAgICAgICAgIGVsc2U6CkBAIC0yNjgsMTIgKzI2NCw3IEBACiAgICAgICAgICAgICBzZWxmLnZhcmlhYmxlc1tuZXd2YXJdLmFwcGVuZChpLmNvcHkoKSkKIAogICAgIGRlZiB2YXJpYWJsZShzZWxmLCB2YXIpOgotICAgICAgICByZW1vdGVfY29ubmVjdG9yID0gc2VsZi5kYXRhcm9vdC5nZXRWYXIoJ19yZW1vdGVfZGF0YScsIEZhbHNlKQotICAgICAgICBpZiByZW1vdGVfY29ubmVjdG9yOgotICAgICAgICAgICAgdmFyaGlzdG9yeSA9IHJlbW90ZV9jb25uZWN0b3IuZ2V0VmFySGlzdG9yeSh2YXIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB2YXJoaXN0b3J5ID0gW10KLQorICAgICAgICB2YXJoaXN0b3J5ID0gW10KICAgICAgICAgaWYgdmFyIGluIHNlbGYudmFyaWFibGVzOgogICAgICAgICAgICAgdmFyaGlzdG9yeS5leHRlbmQoc2VsZi52YXJpYWJsZXNbdmFyXSkKICAgICAgICAgcmV0dXJuIHZhcmhpc3RvcnkKQEAgLTMzOCwxMSArMzI5LDEyIEBACiAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUpCiAgICAgICAgIHJldHVybiBsaW5lcwogCi0gICAgZGVmIGdldF92YXJpYWJsZV9pdGVtc19maWxlcyhzZWxmLCB2YXIsIGQpOgorICAgIGRlZiBnZXRfdmFyaWFibGVfaXRlbXNfZmlsZXMoc2VsZiwgdmFyKToKICAgICAgICAgIiIiCiAgICAgICAgIFVzZSB2YXJpYWJsZSBoaXN0b3J5IHRvIG1hcCBpdGVtcyBhZGRlZCB0byBhIGxpc3QgdmFyaWFibGUgYW5kCiAgICAgICAgIHRoZSBmaWxlcyBpbiB3aGljaCB0aGV5IHdlcmUgYWRkZWQuCiAgICAgICAgICIiIgorICAgICAgICBkID0gc2VsZi5kYXRhcm9vdAogICAgICAgICBoaXN0b3J5ID0gc2VsZi52YXJpYWJsZSh2YXIpCiAgICAgICAgIGZpbmFsaXRlbXMgPSAoZC5nZXRWYXIodmFyKSBvciAnJykuc3BsaXQoKQogICAgICAgICBmaWxlbWFwID0ge30KQEAgLTQ3MCwxMCArNDYyLDYgQEAKICAgICAgICAgICAgIGlmIHZhciBpbiBkZXN0OgogICAgICAgICAgICAgICAgIHJldHVybiBkZXN0W3Zhcl0sIHNlbGYub3ZlcnJpZGVkYXRhLmdldCh2YXIsIE5vbmUpCiAKLSAgICAgICAgICAgIGlmICJfcmVtb3RlX2RhdGEiIGluIGRlc3Q6Ci0gICAgICAgICAgICAgICAgY29ubmVjdG9yID0gZGVzdFsiX3JlbW90ZV9kYXRhIl1bIl9jb250ZW50Il0KLSAgICAgICAgICAgICAgICByZXR1cm4gY29ubmVjdG9yLmdldFZhcih2YXIpCi0KICAgICAgICAgICAgIGlmICJfZGF0YSIgbm90IGluIGRlc3Q6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGRlc3QgPSBkZXN0WyJfZGF0YSJdCkBAIC00OTgsMTIgKzQ4Niw2IEBACiAgICAgICAgIGlmICdwYXJzaW5nJyBpbiBsb2dpbmZvOgogICAgICAgICAgICAgcGFyc2luZz1UcnVlCiAKLSAgICAgICAgaWYgJ19yZW1vdGVfZGF0YScgaW4gc2VsZi5kaWN0OgotICAgICAgICAgICAgY29ubmVjdG9yID0gc2VsZi5kaWN0WyJfcmVtb3RlX2RhdGEiXVsiX2NvbnRlbnQiXQotICAgICAgICAgICAgcmVzID0gY29ubmVjdG9yLnNldFZhcih2YXIsIHZhbHVlKQotICAgICAgICAgICAgaWYgbm90IHJlczoKLSAgICAgICAgICAgICAgICByZXR1cm4KLQogICAgICAgICBpZiAnb3AnIG5vdCBpbiBsb2dpbmZvOgogICAgICAgICAgICAgbG9naW5mb1snb3AnXSA9ICJzZXQiCiAKQEAgLTYwNywxMSArNTg5LDkgQEAKICAgICAgICAgIiIiCiAgICAgICAgIFJlbmFtZSB0aGUgdmFyaWFibGUga2V5IHRvIG5ld2tleQogICAgICAgICAiIiIKLSAgICAgICAgaWYgJ19yZW1vdGVfZGF0YScgaW4gc2VsZi5kaWN0OgotICAgICAgICAgICAgY29ubmVjdG9yID0gc2VsZi5kaWN0WyJfcmVtb3RlX2RhdGEiXVsiX2NvbnRlbnQiXQotICAgICAgICAgICAgcmVzID0gY29ubmVjdG9yLnJlbmFtZVZhcihrZXksIG5ld2tleSkKLSAgICAgICAgICAgIGlmIG5vdCByZXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGtleSA9PSBuZXdrZXk6CisgICAgICAgICAgICBiYi53YXJuKCJDYWxsaW5nIHJlbmFtZVZhciB3aXRoIGVxdWl2YWxlbnQga2V5cyAoJXMpIGlzIGludmFsaWQiICUga2V5KQorICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgdmFsID0gc2VsZi5nZXRWYXIoa2V5LCAwLCBwYXJzaW5nPVRydWUpCiAgICAgICAgIGlmIHZhbCBpcyBub3QgTm9uZToKQEAgLTY1OCwxMSArNjM4LDYgQEAKIAogICAgIGRlZiBkZWxWYXIoc2VsZiwgdmFyLCAqKmxvZ2luZm8pOgogICAgICAgICBzZWxmLmV4cGFuZF9jYWNoZSA9IHt9Ci0gICAgICAgIGlmICdfcmVtb3RlX2RhdGEnIGluIHNlbGYuZGljdDoKLSAgICAgICAgICAgIGNvbm5lY3RvciA9IHNlbGYuZGljdFsiX3JlbW90ZV9kYXRhIl1bIl9jb250ZW50Il0KLSAgICAgICAgICAgIHJlcyA9IGNvbm5lY3Rvci5kZWxWYXIodmFyKQotICAgICAgICAgICAgaWYgbm90IHJlczoKLSAgICAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBsb2dpbmZvWydkZXRhaWwnXSA9ICIiCiAgICAgICAgIGxvZ2luZm9bJ29wJ10gPSAnZGVsJwpAQCAtNjkwLDExICs2NjUsNiBAQAogCiAgICAgZGVmIHNldFZhckZsYWcoc2VsZiwgdmFyLCBmbGFnLCB2YWx1ZSwgKipsb2dpbmZvKToKICAgICAgICAgc2VsZi5leHBhbmRfY2FjaGUgPSB7fQotICAgICAgICBpZiAnX3JlbW90ZV9kYXRhJyBpbiBzZWxmLmRpY3Q6Ci0gICAgICAgICAgICBjb25uZWN0b3IgPSBzZWxmLmRpY3RbIl9yZW1vdGVfZGF0YSJdWyJfY29udGVudCJdCi0gICAgICAgICAgICByZXMgPSBjb25uZWN0b3Iuc2V0VmFyRmxhZyh2YXIsIGZsYWcsIHZhbHVlKQotICAgICAgICAgICAgaWYgbm90IHJlczoKLSAgICAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBpZiAnb3AnIG5vdCBpbiBsb2dpbmZvOgogICAgICAgICAgICAgbG9naW5mb1snb3AnXSA9ICJzZXQiCkBAIC04NDUsMTEgKzgxNSw2IEBACiAKICAgICBkZWYgZGVsVmFyRmxhZyhzZWxmLCB2YXIsIGZsYWcsICoqbG9naW5mbyk6CiAgICAgICAgIHNlbGYuZXhwYW5kX2NhY2hlID0ge30KLSAgICAgICAgaWYgJ19yZW1vdGVfZGF0YScgaW4gc2VsZi5kaWN0OgotICAgICAgICAgICAgY29ubmVjdG9yID0gc2VsZi5kaWN0WyJfcmVtb3RlX2RhdGEiXVsiX2NvbnRlbnQiXQotICAgICAgICAgICAgcmVzID0gY29ubmVjdG9yLmRlbFZhckZsYWcodmFyLCBmbGFnKQotICAgICAgICAgICAgaWYgbm90IHJlczoKLSAgICAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBsb2NhbF92YXIsIF8gPSBzZWxmLl9maW5kVmFyKHZhcikKICAgICAgICAgaWYgbm90IGxvY2FsX3ZhcjoKQEAgLTk2Nyw3ICs5MzIsNyBAQAogCiAgICAgZGVmIGxvY2Fsa2V5cyhzZWxmKToKICAgICAgICAgZm9yIGtleSBpbiBzZWxmLmRpY3Q6Ci0gICAgICAgICAgICBpZiBrZXkgbm90IGluIFsnX2RhdGEnLCAnX3JlbW90ZV9kYXRhJ106CisgICAgICAgICAgICBpZiBrZXkgbm90IGluIFsnX2RhdGEnXToKICAgICAgICAgICAgICAgICB5aWVsZCBrZXkKIAogICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKQEAgLTk3Niw3ICs5NDEsNyBAQAogICAgICAgICBkZWYga2V5bGlzdChkKTogICAgICAgIAogICAgICAgICAgICAga2xpc3QgPSBzZXQoKQogICAgICAgICAgICAgZm9yIGtleSBpbiBkOgotICAgICAgICAgICAgICAgIGlmIGtleSBpbiBbIl9kYXRhIiwgIl9yZW1vdGVfZGF0YSJdOgorICAgICAgICAgICAgICAgIGlmIGtleSBpbiBbIl9kYXRhIl06CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgaWYga2V5IGluIGRlbGV0ZWQ6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC05OTAsMTMgKzk1NSw2IEBACiAgICAgICAgICAgICBpZiAiX2RhdGEiIGluIGQ6CiAgICAgICAgICAgICAgICAga2xpc3QgfD0ga2V5bGlzdChkWyJfZGF0YSJdKQogCi0gICAgICAgICAgICBpZiAiX3JlbW90ZV9kYXRhIiBpbiBkOgotICAgICAgICAgICAgICAgIGNvbm5lY3RvciA9IGRbIl9yZW1vdGVfZGF0YSJdWyJfY29udGVudCJdCi0gICAgICAgICAgICAgICAgZm9yIGtleSBpbiBjb25uZWN0b3IuZ2V0S2V5cygpOgotICAgICAgICAgICAgICAgICAgICBpZiBrZXkgaW4gZGVsZXRlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIGtsaXN0LmFkZChrZXkpCi0KICAgICAgICAgICAgIHJldHVybiBrbGlzdAogCiAgICAgICAgIHNlbGYubmVlZF9vdmVycmlkZXMoKQpAQCAtMTA0Miw3ICsxMDAwLDEwIEBACiAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgdmFsdWUgPSBkLmdldFZhcihrZXksIEZhbHNlKSBvciAiIgotICAgICAgICAgICAgZGF0YS51cGRhdGUoe2tleTp2YWx1ZX0pCisgICAgICAgICAgICBpZiB0eXBlKHZhbHVlKSBpcyB0eXBlKHNlbGYpOgorICAgICAgICAgICAgICAgIGRhdGEudXBkYXRlKHtrZXk6dmFsdWUuZ2V0X2hhc2goKX0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGEudXBkYXRlKHtrZXk6dmFsdWV9KQogCiAgICAgICAgICAgICB2YXJmbGFncyA9IGQuZ2V0VmFyRmxhZ3Moa2V5LCBpbnRlcm5hbGZsYWdzID0gVHJ1ZSkKICAgICAgICAgICAgIGlmIG5vdCB2YXJmbGFnczoKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZXZlbnQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2V2ZW50LnB5CmluZGV4IGQ0NDYyMWUuLmQxMzU5ZjAgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZXZlbnQucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9ldmVudC5weQpAQCAtMTAsOCArMTAsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWltcG9ydCBvcywgc3lzCi1pbXBvcnQgd2FybmluZ3MKK2ltcG9ydCBzeXMKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgYXRleGl0CkBAIC0zNDcsNyArMzQ2LDcgQEAKIAogZGVmIGdldE5hbWUoZSk6CiAgICAgIiIiUmV0dXJucyB0aGUgbmFtZSBvZiBhIGNsYXNzIG9yIGNsYXNzIGluc3RhbmNlIiIiCi0gICAgaWYgZ2V0YXR0cihlLCAiX19uYW1lX18iLCBOb25lKSA9PSBOb25lOgorICAgIGlmIGdldGF0dHIoZSwgIl9fbmFtZV9fIiwgTm9uZSkgaXMgTm9uZToKICAgICAgICAgcmV0dXJuIGUuX19jbGFzc19fLl9fbmFtZV9fCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIGUuX19uYW1lX18KQEAgLTUwOSw3ICs1MDgsNyBAQAogICAgICAgICBleHRyYSA9ICcnCiAgICAgICAgIGlmIG5vdCBzZWxmLl9yZWFzb25zOgogICAgICAgICAgICAgaWYgc2VsZi5fY2xvc2VfbWF0Y2hlczoKLSAgICAgICAgICAgICAgICBleHRyYSA9ICIuIENsb3NlIG1hdGNoZXM6XG4gICVzIiAlICdcbiAgJy5qb2luKHNlbGYuX2Nsb3NlX21hdGNoZXMpCisgICAgICAgICAgICAgICAgZXh0cmEgPSAiLiBDbG9zZSBtYXRjaGVzOlxuICAlcyIgJSAnXG4gICcuam9pbihzb3J0ZWQoc2V0KHNlbGYuX2Nsb3NlX21hdGNoZXMpKSkKIAogICAgICAgICBpZiBzZWxmLl9kZXBlbmRlZXM6CiAgICAgICAgICAgICBtc2cgPSAiTm90aGluZyAlc1BST1ZJREVTICclcycgKGJ1dCAlcyAlc0RFUEVORFMgb24gb3Igb3RoZXJ3aXNlIHJlcXVpcmVzIGl0KSVzIiAlIChyLCBzZWxmLl9pdGVtLCAiLCAiLmpvaW4oc2VsZi5fZGVwZW5kZWVzKSwgciwgZXh0cmEpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9fX2luaXRfXy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CmluZGV4IDA3ZGU2YzIuLmViMTEyZjAgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CkBAIC0zMyw2ICszMyw5IEBACiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlLkZldGNoZXIiKQogCitDSEVDS1NVTV9MSVNUID0gWyAibWQ1IiwgInNoYTI1NiIsICJzaGExIiwgInNoYTM4NCIsICJzaGE1MTIiIF0KK1NIT1dOX0NIRUNLU1VNX0xJU1QgPSBbInNoYTI1NiJdCisKIGNsYXNzIEJCRmV0Y2hFeGNlcHRpb24oRXhjZXB0aW9uKToKICAgICAiIiJDbGFzcyBhbGwgZmV0Y2ggZXhjZXB0aW9ucyBpbmhlcml0IGZyb20iIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSk6CkBAIC0xMzEsMTAgKzEzNCw5IEBACiAgICAgICAgIEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmKQogCiBjbGFzcyBNaXNzaW5nQ2hlY2tzdW1FdmVudChiYi5ldmVudC5FdmVudCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHVybCwgbWQ1c3VtLCBzaGEyNTZzdW0pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsICoqY2hlY2tzdW1zKToKICAgICAgICAgc2VsZi51cmwgPSB1cmwKLSAgICAgICAgc2VsZi5jaGVja3N1bXMgPSB7J21kNXN1bSc6IG1kNXN1bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYTI1NnN1bSc6IHNoYTI1NnN1bX0KKyAgICAgICAgc2VsZi5jaGVja3N1bXMgPSBjaGVja3N1bXMKICAgICAgICAgYmIuZXZlbnQuRXZlbnQuX19pbml0X18oc2VsZikKIAogCkBAIC00ODQsMTcgKzQ4NiwyMiBAQAogICAgIENhbGxlZCB0byBpbml0aWFsaXplIHRoZSBmZXRjaGVycyBvbmNlIHRoZSBjb25maWd1cmF0aW9uIGRhdGEgaXMga25vd24uCiAgICAgQ2FsbHMgYmVmb3JlIHRoaXMgbXVzdCBub3QgaGl0IHRoZSBjYWNoZS4KICAgICAiIiIKKworICAgIHJldnMgPSBiYi5wZXJzaXN0X2RhdGEucGVyc2lzdCgnQkJfVVJJX0hFQURSRVZTJywgZCkKKyAgICB0cnk6CisgICAgICAgICMgZmV0Y2hlcl9pbml0IGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcywgc28gbWFrZSBzdXJlIHdlIG9ubHkgc2F2ZSB0aGUKKyAgICAgICAgIyByZXZzIHRoZSBmaXJzdCB0aW1lIGl0IGlzIGNhbGxlZC4KKyAgICAgICAgaWYgbm90IGJiLmZldGNoMi5zYXZlZF9oZWFkcmV2czoKKyAgICAgICAgICAgIGJiLmZldGNoMi5zYXZlZF9oZWFkcmV2cyA9IGRpY3QocmV2cykKKyAgICBleGNlcHQ6CisgICAgICAgIHBhc3MKKwogICAgICMgV2hlbiB0byBkcm9wIFNDTSBoZWFkIHJldmlzaW9ucyBjb250cm9sbGVkIGJ5IHVzZXIgcG9saWN5CiAgICAgc3JjcmV2X3BvbGljeSA9IGQuZ2V0VmFyKCdCQl9TUkNSRVZfUE9MSUNZJykgb3IgImNsZWFyIgogICAgIGlmIHNyY3Jldl9wb2xpY3kgPT0gImNhY2hlIjoKICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJLZWVwaW5nIFNSQ1JFViBjYWNoZSBkdWUgdG8gY2FjaGUgcG9saWN5IG9mOiAlcyIsIHNyY3Jldl9wb2xpY3kpCiAgICAgZWxpZiBzcmNyZXZfcG9saWN5ID09ICJjbGVhciI6CiAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiQ2xlYXJpbmcgU1JDUkVWIGNhY2hlIGR1ZSB0byBjYWNoZSBwb2xpY3kgb2Y6ICVzIiwgc3JjcmV2X3BvbGljeSkKLSAgICAgICAgcmV2cyA9IGJiLnBlcnNpc3RfZGF0YS5wZXJzaXN0KCdCQl9VUklfSEVBRFJFVlMnLCBkKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBiYi5mZXRjaDIuc2F2ZWRfaGVhZHJldnMgPSByZXZzLml0ZW1zKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgcGFzcwogICAgICAgICByZXZzLmNsZWFyKCkKICAgICBlbHNlOgogICAgICAgICByYWlzZSBGZXRjaEVycm9yKCJJbnZhbGlkIFNSQ1JFViBjYWNoZSBwb2xpY3kgb2Y6ICVzIiAlIHNyY3Jldl9wb2xpY3kpCkBAIC01MTMsMjIgKzUyMCwxMiBAQAogCiBkZWYgZmV0Y2hlcl9jb21wYXJlX3JldmlzaW9ucyhkKToKICAgICAiIiIKLSAgICBDb21wYXJlIHRoZSByZXZpc2lvbnMgaW4gdGhlIHBlcnNpc3RhbnQgY2FjaGUgd2l0aCBjdXJyZW50IHZhbHVlcyBhbmQKLSAgICByZXR1cm4gdHJ1ZS9mYWxzZSBvbiB3aGV0aGVyIHRoZXkndmUgY2hhbmdlZC4KKyAgICBDb21wYXJlIHRoZSByZXZpc2lvbnMgaW4gdGhlIHBlcnNpc3RlbnQgY2FjaGUgd2l0aCB0aGUgc2F2ZWQgdmFsdWVzIGZyb20KKyAgICB3aGVuIGJpdGJha2Ugd2FzIHN0YXJ0ZWQgYW5kIHJldHVybiB0cnVlIGlmIHRoZXkgaGF2ZSBjaGFuZ2VkLgogICAgICIiIgogCi0gICAgZGF0YSA9IGJiLnBlcnNpc3RfZGF0YS5wZXJzaXN0KCdCQl9VUklfSEVBRFJFVlMnLCBkKS5pdGVtcygpCi0gICAgZGF0YTIgPSBiYi5mZXRjaDIuc2F2ZWRfaGVhZHJldnMKLQotICAgIGNoYW5nZWQgPSBGYWxzZQotICAgIGZvciBrZXkgaW4gZGF0YToKLSAgICAgICAgaWYga2V5IG5vdCBpbiBkYXRhMiBvciBkYXRhMltrZXldICE9IGRhdGFba2V5XToKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiJXMgY2hhbmdlZCIsIGtleSkKLSAgICAgICAgICAgIGNoYW5nZWQgPSBUcnVlCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICIlcyBkaWQgbm90IGNoYW5nZSIsIGtleSkKLSAgICByZXR1cm4gRmFsc2UKKyAgICBoZWFkcmV2cyA9IGRpY3QoYmIucGVyc2lzdF9kYXRhLnBlcnNpc3QoJ0JCX1VSSV9IRUFEUkVWUycsIGQpKQorICAgIHJldHVybiBoZWFkcmV2cyAhPSBiYi5mZXRjaDIuc2F2ZWRfaGVhZHJldnMKIAogZGVmIG1pcnJvcl9mcm9tX3N0cmluZyhkYXRhKToKICAgICBtaXJyb3JzID0gKGRhdGEgb3IgIiIpLnJlcGxhY2UoJ1xcbicsJyAnKS5zcGxpdCgpCkBAIC01NTIsNzEgKzU0OSw4NCBAQAogICAgIGRvd25sb2FkaW5nLiBTZWUgaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD01NTcxLgogICAgICIiIgogCi0gICAgX01ENV9LRVkgPSAibWQ1IgotICAgIF9TSEEyNTZfS0VZID0gInNoYTI1NiIKLQogICAgIGlmIHVkLmlnbm9yZV9jaGVja3N1bXMgb3Igbm90IHVkLm1ldGhvZC5zdXBwb3J0c19jaGVja3N1bSh1ZCk6CiAgICAgICAgIHJldHVybiB7fQogCi0gICAgaWYgX01ENV9LRVkgaW4gcHJlY29tcHV0ZWQ6Ci0gICAgICAgIG1kNWRhdGEgPSBwcmVjb21wdXRlZFtfTUQ1X0tFWV0KLSAgICBlbHNlOgotICAgICAgICBtZDVkYXRhID0gYmIudXRpbHMubWQ1X2ZpbGUodWQubG9jYWxwYXRoKQorICAgIGRlZiBjb21wdXRlX2NoZWNrc3VtX2luZm8oY2hlY2tzdW1faWQpOgorICAgICAgICBjaGVja3N1bV9uYW1lID0gZ2V0YXR0cih1ZCwgIiVzX25hbWUiICUgY2hlY2tzdW1faWQpCiAKLSAgICBpZiBfU0hBMjU2X0tFWSBpbiBwcmVjb21wdXRlZDoKLSAgICAgICAgc2hhMjU2ZGF0YSA9IHByZWNvbXB1dGVkW19TSEEyNTZfS0VZXQotICAgIGVsc2U6Ci0gICAgICAgIHNoYTI1NmRhdGEgPSBiYi51dGlscy5zaGEyNTZfZmlsZSh1ZC5sb2NhbHBhdGgpCisgICAgICAgIGlmIGNoZWNrc3VtX2lkIGluIHByZWNvbXB1dGVkOgorICAgICAgICAgICAgY2hlY2tzdW1fZGF0YSA9IHByZWNvbXB1dGVkW2NoZWNrc3VtX2lkXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2hlY2tzdW1fZGF0YSA9IGdldGF0dHIoYmIudXRpbHMsICIlc19maWxlIiAlIGNoZWNrc3VtX2lkKSh1ZC5sb2NhbHBhdGgpCiAKLSAgICBpZiB1ZC5tZXRob2QucmVjb21tZW5kc19jaGVja3N1bSh1ZCkgYW5kIG5vdCB1ZC5tZDVfZXhwZWN0ZWQgYW5kIG5vdCB1ZC5zaGEyNTZfZXhwZWN0ZWQ6Ci0gICAgICAgICMgSWYgc3RyaWN0IGNoZWNraW5nIGVuYWJsZWQgYW5kIG5laXRoZXIgc3VtIGRlZmluZWQsIHJhaXNlIGVycm9yCisgICAgICAgIGNoZWNrc3VtX2V4cGVjdGVkID0gZ2V0YXR0cih1ZCwgIiVzX2V4cGVjdGVkIiAlIGNoZWNrc3VtX2lkKQorCisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAiaWQiOiBjaGVja3N1bV9pZCwKKyAgICAgICAgICAgICJuYW1lIjogY2hlY2tzdW1fbmFtZSwKKyAgICAgICAgICAgICJkYXRhIjogY2hlY2tzdW1fZGF0YSwKKyAgICAgICAgICAgICJleHBlY3RlZCI6IGNoZWNrc3VtX2V4cGVjdGVkCisgICAgICAgIH0KKworICAgIGNoZWNrc3VtX2luZm9zID0gW10KKyAgICBmb3IgY2hlY2tzdW1faWQgaW4gQ0hFQ0tTVU1fTElTVDoKKyAgICAgICAgY2hlY2tzdW1faW5mb3MuYXBwZW5kKGNvbXB1dGVfY2hlY2tzdW1faW5mbyhjaGVja3N1bV9pZCkpCisKKyAgICBjaGVja3N1bV9kaWN0ID0ge2NpWyJpZCJdIDogY2lbImRhdGEiXSBmb3IgY2kgaW4gY2hlY2tzdW1faW5mb3N9CisgICAgY2hlY2tzdW1fZXZlbnQgPSB7IiVzc3VtIiAlIGNpWyJpZCJdIDogY2lbImRhdGEiXSBmb3IgY2kgaW4gY2hlY2tzdW1faW5mb3N9CisKKyAgICBmb3IgY2kgaW4gY2hlY2tzdW1faW5mb3M6CisgICAgICAgIGlmIGNpWyJpZCJdIGluIFNIT1dOX0NIRUNLU1VNX0xJU1Q6CisgICAgICAgICAgICBjaGVja3N1bV9saW5lcyA9IFsiU1JDX1VSSVslc10gPSBcIiVzXCIiICUgKGNpWyJuYW1lIl0sIGNpWyJkYXRhIl0pXQorCisgICAgIyBJZiBubyBjaGVja3N1bSBoYXMgYmVlbiBwcm92aWRlZAorICAgIGlmIHVkLm1ldGhvZC5yZWNvbW1lbmRzX2NoZWNrc3VtKHVkKSBhbmQgYWxsKGNpWyJleHBlY3RlZCJdIGlzIE5vbmUgZm9yIGNpIGluIGNoZWNrc3VtX2luZm9zKToKKyAgICAgICAgbWVzc2FnZXMgPSBbXQogICAgICAgICBzdHJpY3QgPSBkLmdldFZhcigiQkJfU1RSSUNUX0NIRUNLU1VNIikgb3IgIjAiCi0gICAgICAgIGlmIHN0cmljdCA9PSAiMSI6Ci0gICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ05vIGNoZWNrc3VtIHNwZWNpZmllZCBmb3IgJXMsIHBsZWFzZSBhZGQgYXQgbGVhc3Qgb25lIHRvIHRoZSByZWNpcGU6XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJWyVzXSA9ICIlcyJcblNSQ19VUklbJXNdID0gIiVzIicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWQubG9jYWxwYXRoLCB1ZC5tZDVfbmFtZSwgbWQ1ZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkLnNoYTI1Nl9uYW1lLCBzaGEyNTZkYXRhKSkKLSAgICAgICAgICAgIHJhaXNlIE5vQ2hlY2tzdW1FcnJvcignTWlzc2luZyBTUkNfVVJJIGNoZWNrc3VtJywgdWQudXJsKQogCi0gICAgICAgIGJiLmV2ZW50LmZpcmUoTWlzc2luZ0NoZWNrc3VtRXZlbnQodWQudXJsLCBtZDVkYXRhLCBzaGEyNTZkYXRhKSwgZCkKKyAgICAgICAgIyBJZiBzdHJpY3QgY2hlY2tpbmcgZW5hYmxlZCBhbmQgbmVpdGhlciBzdW0gZGVmaW5lZCwgcmFpc2UgZXJyb3IKKyAgICAgICAgaWYgc3RyaWN0ID09ICIxIjoKKyAgICAgICAgICAgIG1lc3NhZ2VzLmFwcGVuZCgiTm8gY2hlY2tzdW0gc3BlY2lmaWVkIGZvciAnJXMnLCBwbGVhc2UgYWRkIGF0ICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsZWFzdCBvbmUgdG8gdGhlIHJlY2lwZToiICUgdWQubG9jYWxwYXRoKQorICAgICAgICAgICAgbWVzc2FnZXMuZXh0ZW5kKGNoZWNrc3VtX2xpbmVzKQorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJcbiIuam9pbihtZXNzYWdlcykpCisgICAgICAgICAgICByYWlzZSBOb0NoZWNrc3VtRXJyb3IoIk1pc3NpbmcgU1JDX1VSSSBjaGVja3N1bSIsIHVkLnVybCkKKworICAgICAgICBiYi5ldmVudC5maXJlKE1pc3NpbmdDaGVja3N1bUV2ZW50KHVkLnVybCwgKipjaGVja3N1bV9ldmVudCksIGQpCiAKICAgICAgICAgaWYgc3RyaWN0ID09ICJpZ25vcmUiOgotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICBfTUQ1X0tFWTogbWQ1ZGF0YSwKLSAgICAgICAgICAgICAgICBfU0hBMjU2X0tFWTogc2hhMjU2ZGF0YQotICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGNoZWNrc3VtX2RpY3QKIAogICAgICAgICAjIExvZyBtaXNzaW5nIHN1bXMgc28gdXNlciBjYW4gbW9yZSBlYXNpbHkgYWRkIHRoZW0KLSAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ01pc3NpbmcgbWQ1IFNSQ19VUkkgY2hlY2tzdW0gZm9yICVzLCBjb25zaWRlciBhZGRpbmcgdG8gdGhlIHJlY2lwZTpcbicKLSAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUklbJXNdID0gIiVzIicsCi0gICAgICAgICAgICAgICAgICAgICAgIHVkLmxvY2FscGF0aCwgdWQubWQ1X25hbWUsIG1kNWRhdGEpCi0gICAgICAgIGxvZ2dlci53YXJuaW5nKCdNaXNzaW5nIHNoYTI1NiBTUkNfVVJJIGNoZWNrc3VtIGZvciAlcywgY29uc2lkZXIgYWRkaW5nIHRvIHRoZSByZWNpcGU6XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJWyVzXSA9ICIlcyInLAotICAgICAgICAgICAgICAgICAgICAgICB1ZC5sb2NhbHBhdGgsIHVkLnNoYTI1Nl9uYW1lLCBzaGEyNTZkYXRhKQorICAgICAgICBtZXNzYWdlcy5hcHBlbmQoIk1pc3NpbmcgY2hlY2tzdW0gZm9yICclcycsIGNvbnNpZGVyIGFkZGluZyBhdCAiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICJsZWFzdCBvbmUgdG8gdGhlIHJlY2lwZToiICUgdWQubG9jYWxwYXRoKQorICAgICAgICBtZXNzYWdlcy5leHRlbmQoY2hlY2tzdW1fbGluZXMpCisgICAgICAgIGxvZ2dlci53YXJuaW5nKCJcbiIuam9pbihtZXNzYWdlcykpCiAKICAgICAjIFdlIHdhbnQgdG8gYWxlcnQgdGhlIHVzZXIgaWYgYSBjaGVja3N1bSBpcyBkZWZpbmVkIGluIHRoZSByZWNpcGUgYnV0CiAgICAgIyBpdCBkb2VzIG5vdCBtYXRjaC4KLSAgICBtc2cgPSAiIgotICAgIG1pc21hdGNoID0gRmFsc2UKLSAgICBpZiB1ZC5tZDVfZXhwZWN0ZWQgYW5kIHVkLm1kNV9leHBlY3RlZCAhPSBtZDVkYXRhOgotICAgICAgICBtc2cgPSBtc2cgKyAiXG5GaWxlOiAnJXMnIGhhcyAlcyBjaGVja3N1bSAlcyB3aGVuICVzIHdhcyBleHBlY3RlZCIgJSAodWQubG9jYWxwYXRoLCAnbWQ1JywgbWQ1ZGF0YSwgdWQubWQ1X2V4cGVjdGVkKQotICAgICAgICBtaXNtYXRjaCA9IFRydWU7CisgICAgbWVzc2FnZXMgPSBbXQorICAgIG1lc3NhZ2VzLmFwcGVuZCgiQ2hlY2tzdW0gbWlzbWF0Y2ghIikKKyAgICBiYWRfY2hlY2tzdW0gPSBOb25lCiAKLSAgICBpZiB1ZC5zaGEyNTZfZXhwZWN0ZWQgYW5kIHVkLnNoYTI1Nl9leHBlY3RlZCAhPSBzaGEyNTZkYXRhOgotICAgICAgICBtc2cgPSBtc2cgKyAiXG5GaWxlOiAnJXMnIGhhcyAlcyBjaGVja3N1bSAlcyB3aGVuICVzIHdhcyBleHBlY3RlZCIgJSAodWQubG9jYWxwYXRoLCAnc2hhMjU2Jywgc2hhMjU2ZGF0YSwgdWQuc2hhMjU2X2V4cGVjdGVkKQotICAgICAgICBtaXNtYXRjaCA9IFRydWU7CisgICAgZm9yIGNpIGluIGNoZWNrc3VtX2luZm9zOgorICAgICAgICBpZiBjaVsiZXhwZWN0ZWQiXSBhbmQgY2lbImV4cGVjdGVkIl0gIT0gY2lbImRhdGEiXToKKyAgICAgICAgICAgIG1lc3NhZ2VzLmFwcGVuZCgiRmlsZTogJyVzJyBoYXMgJXMgY2hlY2tzdW0gJXMgd2hlbiAlcyB3YXMgIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIiAlICh1ZC5sb2NhbHBhdGgsIGNpWyJpZCJdLCBjaVsiZGF0YSJdLCBjaVsiZXhwZWN0ZWQiXSkpCisgICAgICAgICAgICBiYWRfY2hlY2tzdW0gPSBjaVsiZGF0YSJdCiAKLSAgICBpZiBtaXNtYXRjaDoKLSAgICAgICAgbXNnID0gbXNnICsgJ1xuSWYgdGhpcyBjaGFuZ2UgaXMgZXhwZWN0ZWQgKGUuZy4geW91IGhhdmUgdXBncmFkZWQgdG8gYSBuZXcgdmVyc2lvbiB3aXRob3V0IHVwZGF0aW5nIHRoZSBjaGVja3N1bXMpIHRoZW4geW91IGNhbiB1c2UgdGhlc2UgbGluZXMgd2l0aGluIHRoZSByZWNpcGU6XG5TUkNfVVJJWyVzXSA9ICIlcyJcblNSQ19VUklbJXNdID0gIiVzIlxuT3RoZXJ3aXNlIHlvdSBzaG91bGQgcmV0cnkgdGhlIGRvd25sb2FkIGFuZC9vciBjaGVjayB3aXRoIHVwc3RyZWFtIHRvIGRldGVybWluZSBpZiB0aGUgZmlsZSBoYXMgYmVjb21lIGNvcnJ1cHRlZCBvciBvdGhlcndpc2UgdW5leHBlY3RlZGx5IG1vZGlmaWVkLlxuJyAlICh1ZC5tZDVfbmFtZSwgbWQ1ZGF0YSwgdWQuc2hhMjU2X25hbWUsIHNoYTI1NmRhdGEpCisgICAgaWYgYmFkX2NoZWNrc3VtOgorICAgICAgICBtZXNzYWdlcy5hcHBlbmQoIklmIHRoaXMgY2hhbmdlIGlzIGV4cGVjdGVkIChlLmcuIHlvdSBoYXZlIHVwZ3JhZGVkICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgInRvIGEgbmV3IHZlcnNpb24gd2l0aG91dCB1cGRhdGluZyB0aGUgY2hlY2tzdW1zKSAiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aGVuIHlvdSBjYW4gdXNlIHRoZXNlIGxpbmVzIHdpdGhpbiB0aGUgcmVjaXBlOiIpCisgICAgICAgIG1lc3NhZ2VzLmV4dGVuZChjaGVja3N1bV9saW5lcykKKyAgICAgICAgbWVzc2FnZXMuYXBwZW5kKCJPdGhlcndpc2UgeW91IHNob3VsZCByZXRyeSB0aGUgZG93bmxvYWQgYW5kL29yICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgImNoZWNrIHdpdGggdXBzdHJlYW0gdG8gZGV0ZXJtaW5lIGlmIHRoZSBmaWxlIGhhcyAiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICJiZWNvbWUgY29ycnVwdGVkIG9yIG90aGVyd2lzZSB1bmV4cGVjdGVkbHkgbW9kaWZpZWQuIikKKyAgICAgICAgcmFpc2UgQ2hlY2tzdW1FcnJvcigiXG4iLmpvaW4obWVzc2FnZXMpLCB1ZC51cmwsIGJhZF9jaGVja3N1bSkKIAotICAgIGlmIGxlbihtc2cpOgotICAgICAgICByYWlzZSBDaGVja3N1bUVycm9yKCdDaGVja3N1bSBtaXNtYXRjaCElcycgJSBtc2csIHVkLnVybCwgbWQ1ZGF0YSkKLQotICAgIHJldHVybiB7Ci0gICAgICAgIF9NRDVfS0VZOiBtZDVkYXRhLAotICAgICAgICBfU0hBMjU2X0tFWTogc2hhMjU2ZGF0YQotICAgIH0KLQorICAgIHJldHVybiBjaGVja3N1bV9kaWN0CiAKIGRlZiB2ZXJpZnlfZG9uZXN0YW1wKHVkLCBkLCBvcmlndWQ9Tm9uZSk6CiAgICAgIiIiCkBAIC0xMDgxLDcgKzEwOTEsNyBAQAogCiAgICAgZm9yIGluZGV4LCB1cmkgaW4gZW51bWVyYXRlKHVyaXMpOgogICAgICAgICByZXQgPSB0cnlfbWlycm9yX3VybChmZXRjaCwgb3JpZ3VkLCB1ZHNbaW5kZXhdLCBsZCwgY2hlY2spCi0gICAgICAgIGlmIHJldCAhPSBGYWxzZToKKyAgICAgICAgaWYgcmV0OgogICAgICAgICAgICAgcmV0dXJuIHJldAogICAgIHJldHVybiBOb25lCiAKQEAgLTExOTcsMTQgKzEyMDcsMTQgQEAKIAogICAgIHJldHVybiAiICIuam9pbihmaWxlbGlzdCkKIAotZGVmIGdldF9maWxlX2NoZWNrc3VtcyhmaWxlbGlzdCwgcG4pOgorZGVmIGdldF9maWxlX2NoZWNrc3VtcyhmaWxlbGlzdCwgcG4sIGxvY2FsZGlyc2V4Y2x1ZGUpOgogICAgICIiIkdldCBhIGxpc3Qgb2YgdGhlIGNoZWNrc3VtcyBmb3IgYSBsaXN0IG9mIGxvY2FsIGZpbGVzCiAKICAgICBSZXR1cm5zIHRoZSBjaGVja3N1bXMgZm9yIGEgbGlzdCBvZiBsb2NhbCBmaWxlcywgY2FjaGluZyB0aGUgcmVzdWx0cyBhcwogICAgIGl0IHByb2NlZWRzCiAKICAgICAiIiIKLSAgICByZXR1cm4gX2NoZWNrc3VtX2NhY2hlLmdldF9jaGVja3N1bXMoZmlsZWxpc3QsIHBuKQorICAgIHJldHVybiBfY2hlY2tzdW1fY2FjaGUuZ2V0X2NoZWNrc3VtcyhmaWxlbGlzdCwgcG4sIGxvY2FsZGlyc2V4Y2x1ZGUpCiAKIAogY2xhc3MgRmV0Y2hEYXRhKG9iamVjdCk6CkBAIC0xMjMwLDI0ICsxMjQwLDI2IEBACiAgICAgICAgICAgICBzZWxmLnBzd2QgPSBzZWxmLnBhcm1bInBzd2QiXQogICAgICAgICBzZWxmLnNldHVwID0gRmFsc2UKIAotICAgICAgICBpZiAibmFtZSIgaW4gc2VsZi5wYXJtOgotICAgICAgICAgICAgc2VsZi5tZDVfbmFtZSA9ICIlcy5tZDVzdW0iICUgc2VsZi5wYXJtWyJuYW1lIl0KLSAgICAgICAgICAgIHNlbGYuc2hhMjU2X25hbWUgPSAiJXMuc2hhMjU2c3VtIiAlIHNlbGYucGFybVsibmFtZSJdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLm1kNV9uYW1lID0gIm1kNXN1bSIKLSAgICAgICAgICAgIHNlbGYuc2hhMjU2X25hbWUgPSAic2hhMjU2c3VtIgotICAgICAgICBpZiBzZWxmLm1kNV9uYW1lIGluIHNlbGYucGFybToKLSAgICAgICAgICAgIHNlbGYubWQ1X2V4cGVjdGVkID0gc2VsZi5wYXJtW3NlbGYubWQ1X25hbWVdCi0gICAgICAgIGVsaWYgc2VsZi50eXBlIG5vdCBpbiBbImh0dHAiLCAiaHR0cHMiLCAiZnRwIiwgImZ0cHMiLCAic2Z0cCIsICJzMyJdOgotICAgICAgICAgICAgc2VsZi5tZDVfZXhwZWN0ZWQgPSBOb25lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLm1kNV9leHBlY3RlZCA9IGQuZ2V0VmFyRmxhZygiU1JDX1VSSSIsIHNlbGYubWQ1X25hbWUpCi0gICAgICAgIGlmIHNlbGYuc2hhMjU2X25hbWUgaW4gc2VsZi5wYXJtOgotICAgICAgICAgICAgc2VsZi5zaGEyNTZfZXhwZWN0ZWQgPSBzZWxmLnBhcm1bc2VsZi5zaGEyNTZfbmFtZV0KLSAgICAgICAgZWxpZiBzZWxmLnR5cGUgbm90IGluIFsiaHR0cCIsICJodHRwcyIsICJmdHAiLCAiZnRwcyIsICJzZnRwIiwgInMzIl06Ci0gICAgICAgICAgICBzZWxmLnNoYTI1Nl9leHBlY3RlZCA9IE5vbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuc2hhMjU2X2V4cGVjdGVkID0gZC5nZXRWYXJGbGFnKCJTUkNfVVJJIiwgc2VsZi5zaGEyNTZfbmFtZSkKKyAgICAgICAgZGVmIGNvbmZpZ3VyZV9jaGVja3N1bShjaGVja3N1bV9pZCk6CisgICAgICAgICAgICBpZiAibmFtZSIgaW4gc2VsZi5wYXJtOgorICAgICAgICAgICAgICAgIGNoZWNrc3VtX25hbWUgPSAiJXMuJXNzdW0iICUgKHNlbGYucGFybVsibmFtZSJdLCBjaGVja3N1bV9pZCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY2hlY2tzdW1fbmFtZSA9ICIlc3N1bSIgJSBjaGVja3N1bV9pZAorCisgICAgICAgICAgICBzZXRhdHRyKHNlbGYsICIlc19uYW1lIiAlIGNoZWNrc3VtX2lkLCBjaGVja3N1bV9uYW1lKQorCisgICAgICAgICAgICBpZiBjaGVja3N1bV9uYW1lIGluIHNlbGYucGFybToKKyAgICAgICAgICAgICAgICBjaGVja3N1bV9leHBlY3RlZCA9IHNlbGYucGFybVtjaGVja3N1bV9uYW1lXQorICAgICAgICAgICAgZWxpZiBzZWxmLnR5cGUgbm90IGluIFsiaHR0cCIsICJodHRwcyIsICJmdHAiLCAiZnRwcyIsICJzZnRwIiwgInMzIl06CisgICAgICAgICAgICAgICAgY2hlY2tzdW1fZXhwZWN0ZWQgPSBOb25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNoZWNrc3VtX2V4cGVjdGVkID0gZC5nZXRWYXJGbGFnKCJTUkNfVVJJIiwgY2hlY2tzdW1fbmFtZSkKKworICAgICAgICAgICAgc2V0YXR0cihzZWxmLCAiJXNfZXhwZWN0ZWQiICUgY2hlY2tzdW1faWQsIGNoZWNrc3VtX2V4cGVjdGVkKQorCisgICAgICAgIGZvciBjaGVja3N1bV9pZCBpbiBDSEVDS1NVTV9MSVNUOgorICAgICAgICAgICAgY29uZmlndXJlX2NoZWNrc3VtKGNoZWNrc3VtX2lkKQorCiAgICAgICAgIHNlbGYuaWdub3JlX2NoZWNrc3VtcyA9IEZhbHNlCiAKICAgICAgICAgc2VsZi5uYW1lcyA9IHNlbGYucGFybS5nZXQoIm5hbWUiLCdkZWZhdWx0Jykuc3BsaXQoJywnKQpAQCAtMTM1MSw3ICsxMzYzLDcgQEAKICAgICAgICAgIiIiCiAKICAgICAgICAgIyBXZSBjYW5ub3QgY29tcHV0ZSBjaGVja3N1bXMgZm9yIGRpcmVjdG9yaWVzCi0gICAgICAgIGlmIG9zLnBhdGguaXNkaXIodXJsZGF0YS5sb2NhbHBhdGgpID09IFRydWU6CisgICAgICAgIGlmIG9zLnBhdGguaXNkaXIodXJsZGF0YS5sb2NhbHBhdGgpOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIHVybGRhdGEubG9jYWxwYXRoLmZpbmQoIioiKSAhPSAtMToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtMTM2NSw2ICsxMzc3LDE4IEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gRmFsc2UKIAorICAgIGRlZiB2ZXJpZnlfZG9uZXN0YW1wKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiCisgICAgICAgIFZlcmlmeSB0aGUgZG9uZXN0YW1wIGZpbGUKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiB2ZXJpZnlfZG9uZXN0YW1wKHVkLCBkKQorCisgICAgZGVmIHVwZGF0ZV9kb25lc3RhbXAoc2VsZiwgdWQsIGQpOgorICAgICAgICAiIiIKKyAgICAgICAgVXBkYXRlIHRoZSBkb25lc3RhbXAgZmlsZQorICAgICAgICAiIiIKKyAgICAgICAgdXBkYXRlX3N0YW1wKHVkLCBkKQorCiAgICAgZGVmIF9zdHJpcF9sZWFkaW5nX3NsYXNoZXMoc2VsZiwgcmVscGF0aCk6CiAgICAgICAgICIiIgogICAgICAgICBSZW1vdmUgbGVhZGluZyBzbGFzaCBhcyBvcy5wYXRoLmpvaW4gY2FuJ3QgY29wZQpAQCAtMTUzOSw2ICsxNTYzLDEyIEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gVHJ1ZQogCisgICAgZGVmIHRyeV9taXJyb3JzKHNlbGYsIGZldGNoLCB1cmxkYXRhLCBkLCBtaXJyb3JzLCBjaGVjaz1GYWxzZSk6CisgICAgICAgICIiIgorICAgICAgICBUcnkgdG8gdXNlIGEgbWlycm9yCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gYm9vbCh0cnlfbWlycm9ycyhmZXRjaCwgZCwgdXJsZGF0YSwgbWlycm9ycywgY2hlY2spKQorCiAgICAgZGVmIGNoZWNrc3RhdHVzKHNlbGYsIGZldGNoLCB1cmxkYXRhLCBkKToKICAgICAgICAgIiIiCiAgICAgICAgIENoZWNrIHRoZSBzdGF0dXMgb2YgYSBVUkwKQEAgLTE1NjcsOCArMTU5Nyw3IEBACiAgICAgICAgIHJldHVybiBUcnVlLCBzdHIobGF0ZXN0X3JldikKIAogICAgIGRlZiBnZW5lcmF0ZV9yZXZpc2lvbl9rZXkoc2VsZiwgdWQsIGQsIG5hbWUpOgotICAgICAgICBrZXkgPSBzZWxmLl9yZXZpc2lvbl9rZXkodWQsIGQsIG5hbWUpCi0gICAgICAgIHJldHVybiAiJXMtJXMiICUgKGtleSwgZC5nZXRWYXIoIlBOIikgb3IgIiIpCisgICAgICAgIHJldHVybiBzZWxmLl9yZXZpc2lvbl9rZXkodWQsIGQsIG5hbWUpCiAKICAgICBkZWYgbGF0ZXN0X3ZlcnNpb25zdHJpbmcoc2VsZiwgdWQsIGQpOgogICAgICAgICAiIiIKQEAgLTE1NzgsNiArMTYwNywxNiBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuICgnJywgJycpCiAKKyAgICBkZWYgZG9uZShzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIgorICAgICAgICBJcyB0aGUgZG93bmxvYWQgZG9uZSA/CisgICAgICAgICIiIgorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGgpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgdWQubG9jYWxwYXRoLmZpbmQoIioiKSAhPSAtMToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCiBjbGFzcyBGZXRjaChvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmxzLCBkLCBjYWNoZSA9IFRydWUsIGxvY2Fsb25seSA9IEZhbHNlLCBjb25uZWN0aW9uX2NhY2hlID0gTm9uZSk6CiAgICAgICAgIGlmIGxvY2Fsb25seSBhbmQgY2FjaGU6CkBAIC0xNTkyLDggKzE2MzEsMTEgQEAKIAogICAgICAgICBmbiA9IGQuZ2V0VmFyKCdGSUxFJykKICAgICAgICAgbWMgPSBkLmdldFZhcignX19CQk1VTFRJQ09ORklHJykgb3IgIiIKLSAgICAgICAgaWYgY2FjaGUgYW5kIGZuIGFuZCBtYyArIGZuIGluIHVybGRhdGFfY2FjaGU6Ci0gICAgICAgICAgICBzZWxmLnVkID0gdXJsZGF0YV9jYWNoZVttYyArIGZuICsgc3RyKGlkKGQpKV0KKyAgICAgICAga2V5ID0gTm9uZQorICAgICAgICBpZiBjYWNoZSBhbmQgZm46CisgICAgICAgICAgICBrZXkgPSBtYyArIGZuICsgc3RyKGlkKGQpKQorICAgICAgICBpZiBrZXkgaW4gdXJsZGF0YV9jYWNoZToKKyAgICAgICAgICAgIHNlbGYudWQgPSB1cmxkYXRhX2NhY2hlW2tleV0KIAogICAgICAgICBmb3IgdXJsIGluIHVybHM6CiAgICAgICAgICAgICBpZiB1cmwgbm90IGluIHNlbGYudWQ6CkBAIC0xNjA0LDggKzE2NDYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51ZFt1cmxdID0gTm9uZQogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogCi0gICAgICAgIGlmIGZuIGFuZCBjYWNoZToKLSAgICAgICAgICAgIHVybGRhdGFfY2FjaGVbbWMgKyBmbiArIHN0cihpZChkKSldID0gc2VsZi51ZAorICAgICAgICBpZiBrZXk6CisgICAgICAgICAgICB1cmxkYXRhX2NhY2hlW2tleV0gPSBzZWxmLnVkCiAKICAgICBkZWYgbG9jYWxwYXRoKHNlbGYsIHVybCk6CiAgICAgICAgIGlmIHVybCBub3QgaW4gc2VsZi51cmxzOgpAQCAtMTY0MSw3ICsxNjgzLDcgQEAKICAgICAgICAgICAgIHVkID0gc2VsZi51ZFt1XQogICAgICAgICAgICAgdWQuc2V0dXBfbG9jYWxwYXRoKHNlbGYuZCkKICAgICAgICAgICAgIG0gPSB1ZC5tZXRob2QKLSAgICAgICAgICAgIGxvY2FscGF0aCA9ICIiCisgICAgICAgICAgICBkb25lID0gRmFsc2UKIAogICAgICAgICAgICAgaWYgdWQubG9ja2ZpbGU6CiAgICAgICAgICAgICAgICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZSh1ZC5sb2NrZmlsZSkKQEAgLTE2NDksMjggKzE2OTEsMjggQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJCQl9OT19ORVRXT1JLIiwgbmV0d29yaykKIAotICAgICAgICAgICAgICAgIGlmIHZlcmlmeV9kb25lc3RhbXAodWQsIHNlbGYuZCkgYW5kIG5vdCBtLm5lZWRfdXBkYXRlKHVkLCBzZWxmLmQpOgotICAgICAgICAgICAgICAgICAgICBsb2NhbHBhdGggPSB1ZC5sb2NhbHBhdGgKKyAgICAgICAgICAgICAgICBpZiBtLnZlcmlmeV9kb25lc3RhbXAodWQsIHNlbGYuZCkgYW5kIG5vdCBtLm5lZWRfdXBkYXRlKHVkLCBzZWxmLmQpOgorICAgICAgICAgICAgICAgICAgICBkb25lID0gVHJ1ZQogICAgICAgICAgICAgICAgIGVsaWYgbS50cnlfcHJlbWlycm9yKHVkLCBzZWxmLmQpOgogICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIlRyeWluZyBQUkVNSVJST1JTIikKICAgICAgICAgICAgICAgICAgICAgbWlycm9ycyA9IG1pcnJvcl9mcm9tX3N0cmluZyhzZWxmLmQuZ2V0VmFyKCdQUkVNSVJST1JTJykpCi0gICAgICAgICAgICAgICAgICAgIGxvY2FscGF0aCA9IHRyeV9taXJyb3JzKHNlbGYsIHNlbGYuZCwgdWQsIG1pcnJvcnMsIEZhbHNlKQotICAgICAgICAgICAgICAgICAgICBpZiBsb2NhbHBhdGg6CisgICAgICAgICAgICAgICAgICAgIGRvbmUgPSBtLnRyeV9taXJyb3JzKHNlbGYsIHVkLCBzZWxmLmQsIG1pcnJvcnMpCisgICAgICAgICAgICAgICAgICAgIGlmIGRvbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBlYXJseSBjaGVja3N1bSB2ZXJpZmljYXRpb24gc28gdGhhdCBpZiB0aGUgY2hlY2tzdW0gb2YgdGhlIHByZW1pcnJvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY29udGVudHMgbWlzbWF0Y2ggdGhlIGZldGNoZXIgY2FuIHN0aWxsIHRyeSB1cHN0cmVhbSBhbmQgbWlycm9ycwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9zdGFtcCh1ZCwgc2VsZi5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0udXBkYXRlX2RvbmVzdGFtcCh1ZCwgc2VsZi5kKQogICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IENoZWNrc3VtRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygiQ2hlY2tzdW0gZmFpbHVyZSBlbmNvdW50ZXJlZCB3aXRoIHByZW1pcnJvciBkb3dubG9hZCBvZiAlcyAtIHdpbGwgYXR0ZW1wdCBvdGhlciBzb3VyY2VzLiIgJSB1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCBzdHIoZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxwYXRoID0gIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lID0gRmFsc2UKIAogICAgICAgICAgICAgICAgIGlmIHByZW1pcnJvcm9ubHk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIkJCX05PX05FVFdPUksiLCAiMSIpCiAKICAgICAgICAgICAgICAgICBmaXJzdGVyciA9IE5vbmUKLSAgICAgICAgICAgICAgICB2ZXJpZmllZF9zdGFtcCA9IHZlcmlmeV9kb25lc3RhbXAodWQsIHNlbGYuZCkKLSAgICAgICAgICAgICAgICBpZiBub3QgbG9jYWxwYXRoIGFuZCAobm90IHZlcmlmaWVkX3N0YW1wIG9yIG0ubmVlZF91cGRhdGUodWQsIHNlbGYuZCkpOgorICAgICAgICAgICAgICAgIHZlcmlmaWVkX3N0YW1wID0gbS52ZXJpZnlfZG9uZXN0YW1wKHVkLCBzZWxmLmQpCisgICAgICAgICAgICAgICAgaWYgbm90IGRvbmUgYW5kIChub3QgdmVyaWZpZWRfc3RhbXAgb3IgbS5uZWVkX3VwZGF0ZSh1ZCwgc2VsZi5kKSk6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCB0cnVzdGVkX25ldHdvcmsoc2VsZi5kLCB1ZC51cmwpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFVudHJ1c3RlZFVybCh1ZC51cmwpCkBAIC0xNjc4LDEwICsxNzIwLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBtLmRvd25sb2FkKHVkLCBzZWxmLmQpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKG0sICJidWlsZF9taXJyb3JfZGF0YSIpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0uYnVpbGRfbWlycm9yX2RhdGEodWQsIHNlbGYuZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FscGF0aCA9IHVkLmxvY2FscGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICMgZWFybHkgY2hlY2tzdW0gdmVyaWZ5LCBzbyB0aGF0IGlmIGNoZWNrc3VtIG1pc21hdGNoZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAjIGZldGNoZXIgc3RpbGwgaGF2ZSBjaGFuY2UgdG8gZmV0Y2ggZnJvbSBtaXJyb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9zdGFtcCh1ZCwgc2VsZi5kKQorICAgICAgICAgICAgICAgICAgICAgICAgbS51cGRhdGVfZG9uZXN0YW1wKHVkLCBzZWxmLmQpCiAKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IGJiLmZldGNoMi5OZXR3b3JrQWNjZXNzOgogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKQEAgLTE3MDMsMTQgKzE3NDUsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLmNsZWFuKHVkLCBzZWxmLmQpCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIlRyeWluZyBNSVJST1JTIikKICAgICAgICAgICAgICAgICAgICAgICAgIG1pcnJvcnMgPSBtaXJyb3JfZnJvbV9zdHJpbmcoc2VsZi5kLmdldFZhcignTUlSUk9SUycpKQotICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxwYXRoID0gdHJ5X21pcnJvcnMoc2VsZiwgc2VsZi5kLCB1ZCwgbWlycm9ycykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSBtLnRyeV9taXJyb3JzKHNlbGYsIHVkLCBzZWxmLmQsIG1pcnJvcnMpCiAKLSAgICAgICAgICAgICAgICBpZiBub3QgbG9jYWxwYXRoIG9yICgobm90IG9zLnBhdGguZXhpc3RzKGxvY2FscGF0aCkpIGFuZCBsb2NhbHBhdGguZmluZCgiKiIpID09IC0xKToKKyAgICAgICAgICAgICAgICBpZiBub3QgZG9uZSBvciBub3QgbS5kb25lKHVkLCBzZWxmLmQpOgogICAgICAgICAgICAgICAgICAgICBpZiBmaXJzdGVycjoKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihzdHIoZmlyc3RlcnIpKQogICAgICAgICAgICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCJVbmFibGUgdG8gZmV0Y2ggVVJMIGZyb20gYW55IHNvdXJjZS4iLCB1KQogCi0gICAgICAgICAgICAgICAgdXBkYXRlX3N0YW1wKHVkLCBzZWxmLmQpCisgICAgICAgICAgICAgICAgbS51cGRhdGVfZG9uZXN0YW1wKHVkLCBzZWxmLmQpCiAKICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyBpbiBbZXJybm8uRVNUQUxFXToKQEAgLTE3NDEsMTQgKzE3ODMsMTQgQEAKICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiVGVzdGluZyBVUkwgJXMiLCB1KQogICAgICAgICAgICAgIyBGaXJzdCB0cnkgY2hlY2tpbmcgdXJpLCB1LCBmcm9tIFBSRU1JUlJPUlMKICAgICAgICAgICAgIG1pcnJvcnMgPSBtaXJyb3JfZnJvbV9zdHJpbmcoc2VsZi5kLmdldFZhcignUFJFTUlSUk9SUycpKQotICAgICAgICAgICAgcmV0ID0gdHJ5X21pcnJvcnMoc2VsZiwgc2VsZi5kLCB1ZCwgbWlycm9ycywgVHJ1ZSkKKyAgICAgICAgICAgIHJldCA9IG0udHJ5X21pcnJvcnMoc2VsZiwgdWQsIHNlbGYuZCwgbWlycm9ycywgVHJ1ZSkKICAgICAgICAgICAgIGlmIG5vdCByZXQ6CiAgICAgICAgICAgICAgICAgIyBOZXh0IHRyeSBjaGVja2luZyBmcm9tIHRoZSBvcmlnaW5hbCB1cmksIHUKICAgICAgICAgICAgICAgICByZXQgPSBtLmNoZWNrc3RhdHVzKHNlbGYsIHVkLCBzZWxmLmQpCiAgICAgICAgICAgICAgICAgaWYgbm90IHJldDoKICAgICAgICAgICAgICAgICAgICAgIyBGaW5hbGx5LCB0cnkgY2hlY2tpbmcgdXJpLCB1LCBmcm9tIE1JUlJPUlMKICAgICAgICAgICAgICAgICAgICAgbWlycm9ycyA9IG1pcnJvcl9mcm9tX3N0cmluZyhzZWxmLmQuZ2V0VmFyKCdNSVJST1JTJykpCi0gICAgICAgICAgICAgICAgICAgIHJldCA9IHRyeV9taXJyb3JzKHNlbGYsIHNlbGYuZCwgdWQsIG1pcnJvcnMsIFRydWUpCisgICAgICAgICAgICAgICAgICAgIHJldCA9IG0udHJ5X21pcnJvcnMoc2VsZiwgdWQsIHNlbGYuZCwgbWlycm9ycywgVHJ1ZSkKIAogICAgICAgICAgICAgaWYgbm90IHJldDoKICAgICAgICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCJVUkwgJXMgZG9lc24ndCB3b3JrIiAlIHUsIHUpCkBAIC0xODUzLDYgKzE4OTUsNyBAQAogZnJvbSAuIGltcG9ydCByZXBvCiBmcm9tIC4gaW1wb3J0IGNsZWFyY2FzZQogZnJvbSAuIGltcG9ydCBucG0KK2Zyb20gLiBpbXBvcnQgbnBtc3cKIAogbWV0aG9kcy5hcHBlbmQobG9jYWwuTG9jYWwoKSkKIG1ldGhvZHMuYXBwZW5kKHdnZXQuV2dldCgpKQpAQCAtMTg3MSwzICsxOTE0LDQgQEAKIG1ldGhvZHMuYXBwZW5kKHJlcG8uUmVwbygpKQogbWV0aG9kcy5hcHBlbmQoY2xlYXJjYXNlLkNsZWFyQ2FzZSgpKQogbWV0aG9kcy5hcHBlbmQobnBtLk5wbSgpKQorbWV0aG9kcy5hcHBlbmQobnBtc3cuTnBtU2hyaW5rV3JhcCgpKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvYnpyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvYnpyLnB5CmluZGV4IGM1NmQ4NzUuLjU2NmFjZTkgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2J6ci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9ienIucHkKQEAgLTE0LDggKzE0LDYgQEAKICMKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgbG9nZ2luZwogaW1wb3J0IGJiCiBmcm9tIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hNZXRob2QKIGZyb20gYmIuZmV0Y2gyIGltcG9ydCBGZXRjaEVycm9yCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9jbGVhcmNhc2UucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9jbGVhcmNhc2UucHkKaW5kZXggZTI5MzRlZi4uNDlkN2FlMSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvY2xlYXJjYXNlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2NsZWFyY2FzZS5weQpAQCAtNDksNyArNDksNiBAQAogIwogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBiYgogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hNZXRob2QKQEAgLTIzOCw3ICsyMzcsNyBAQAogCiAgICAgICAgICMgQ2xlYW4gY2xlYXJjYXNlIG1ldGEtZGF0YSBiZWZvcmUgdGFyCiAKLSAgICAgICAgcnVuZmV0Y2hjbWQoJ3RhciAtY3pmICIlcyIgLicgJSAodWQubG9jYWxwYXRoKSwgZCwgY2xlYW51cCA9IFt1ZC5sb2NhbHBhdGhdKQorICAgICAgICBydW5mZXRjaGNtZCgndGFyIC1jemYgIiVzIiAuJyAlICh1ZC5sb2NhbHBhdGgpLCBkLCBjbGVhbnVwID0gW3VkLmxvY2FscGF0aF0sIHdvcmtkaXIgPSB1ZC52aWV3ZGlyKQogCiAgICAgICAgICMgQ2xlYW4gdXAgc28gd2UgY2FuIGNyZWF0ZSBhIG5ldyB2aWV3IG5leHQgdGltZQogICAgICAgICBzZWxmLmNsZWFuKHVkLCBkKTsKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2N2cy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2N2cy5weQppbmRleCAxYjM1YmE0Li4yOTEyM2E0IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9jdnMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvY3ZzLnB5CkBAIC0xNCw3ICsxNCw2IEBACiAjCiAKIGltcG9ydCBvcwotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBiYgogZnJvbSBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kLCBGZXRjaEVycm9yLCBNaXNzaW5nUGFyYW1ldGVyRXJyb3IsIGxvZ2dlcgogZnJvbSBiYi5mZXRjaDIgaW1wb3J0IHJ1bmZldGNoY21kCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXQucHkKaW5kZXggZmE0MWIwNy4uNWIzNzkzYSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2dpdC5weQpAQCAtNTk0LDcgKzU5NCw5IEBACiAgICAgICAgICIiIgogICAgICAgICBSZXR1cm4gYSB1bmlxdWUga2V5IGZvciB0aGUgdXJsCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gImdpdDoiICsgdWQuaG9zdCArIHVkLnBhdGgucmVwbGFjZSgnLycsICcuJykgKyB1ZC51bnJlc29sdmVkcmV2W25hbWVdCisgICAgICAgICMgQ29sbGFwc2UgYWRqYWNlbnQgc2xhc2hlcworICAgICAgICBzbGFzaF9yZSA9IHJlLmNvbXBpbGUociIvKyIpCisgICAgICAgIHJldHVybiAiZ2l0OiIgKyB1ZC5ob3N0ICsgc2xhc2hfcmUuc3ViKCIuIiwgdWQucGF0aCkgKyB1ZC51bnJlc29sdmVkcmV2W25hbWVdCiAKICAgICBkZWYgX2xzcmVtb3RlKHNlbGYsIHVkLCBkLCBzZWFyY2gpOgogICAgICAgICAiIiIKQEAgLTY3MSw3ICs2NzMsNyBAQAogCiAgICAgICAgICAgICAjIHNlYXJjaCBmb3IgdmVyc2lvbiBpbiB0aGUgbGluZQogICAgICAgICAgICAgdGFnID0gdGFncmVnZXguc2VhcmNoKHRhZ19oZWFkKQotICAgICAgICAgICAgaWYgdGFnID09IE5vbmU6CisgICAgICAgICAgICBpZiB0YWcgaXMgTm9uZToKICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICB0YWcgPSB0YWcuZ3JvdXAoJ3B2ZXInKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0YW5uZXgucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRhbm5leC5weQppbmRleCAxZDQ5N2RjLi44MGE4MDhkIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRhbm5leC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRhbm5leC5weQpAQCAtOCwxMSArOCw5IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotaW1wb3J0IG9zCiBpbXBvcnQgYmIKIGZyb20gICBiYi5mZXRjaDIuZ2l0IGltcG9ydCBHaXQKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IHJ1bmZldGNoY21kCi1mcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBsb2dnZXIKIAogY2xhc3MgR2l0QU5ORVgoR2l0KToKICAgICBkZWYgc3VwcG9ydHMoc2VsZiwgdWQsIGQpOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0c20ucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRzbS5weQppbmRleCBjNjIyNzcxLi5lNzA4MzAwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRzbS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRzbS5weQpAQCAtMjAsMTEgKzIwLDEyIEBACiBpbXBvcnQgb3MKIGltcG9ydCBiYgogaW1wb3J0IGNvcHkKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCB0ZW1wZmlsZQogZnJvbSAgIGJiLmZldGNoMi5naXQgaW1wb3J0IEdpdAogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgcnVuZmV0Y2hjbWQKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IGxvZ2dlcgogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2gKLWZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEJCRmV0Y2hFeGNlcHRpb24KIAogY2xhc3MgR2l0U00oR2l0KToKICAgICBkZWYgc3VwcG9ydHMoc2VsZiwgdWQsIGQpOgpAQCAtMTMxLDcgKzEzMiw3IEBACiAgICAgICAgICAgICBsZC5zZXRWYXIoJ1NSQ1BWJywgZC5nZXRWYXIoJ1NSQ1BWJykpCiAgICAgICAgICAgICBsZC5zZXRWYXIoJ1NSQ1JFVl9GT1JNQVQnLCBtb2R1bGUpCiAKLSAgICAgICAgICAgIGZ1bmN0aW9uKHVkLCB1cmwsIG1vZHVsZSwgcGF0aHNbbW9kdWxlXSwgbGQpCisgICAgICAgICAgICBmdW5jdGlvbih1ZCwgdXJsLCBtb2R1bGUsIHBhdGhzW21vZHVsZV0sIHdvcmtkaXIsIGxkKQogCiAgICAgICAgIHJldHVybiBzdWJtb2R1bGVzICE9IFtdCiAKQEAgLTE1Myw3ICsxNTQsNyBAQAogICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBkb3dubG9hZChzZWxmLCB1ZCwgZCk6Ci0gICAgICAgIGRlZiBkb3dubG9hZF9zdWJtb2R1bGUodWQsIHVybCwgbW9kdWxlLCBtb2RwYXRoLCBkKToKKyAgICAgICAgZGVmIGRvd25sb2FkX3N1Ym1vZHVsZSh1ZCwgdXJsLCBtb2R1bGUsIG1vZHBhdGgsIHdvcmtkaXIsIGQpOgogICAgICAgICAgICAgdXJsICs9ICI7YmFyZWNsb25lPTE7bm9icmFuY2g9MSIKIAogICAgICAgICAgICAgIyBJcyB0aGUgZm9sbG93aW5nIHN0aWxsIG5lZWRlZD8KQEAgLTE2NCwxNiArMTY1LDI1IEBACiAgICAgICAgICAgICAgICAgbmV3ZmV0Y2guZG93bmxvYWQoKQogICAgICAgICAgICAgICAgICMgRHJvcCBhIG51Z2dldCB0byBhZGQgZWFjaCBvZiB0aGUgc3JjcmV2cyB3ZSd2ZSBmZXRjaGVkICh1c2VkIGJ5IG5lZWRfdXBkYXRlKQogICAgICAgICAgICAgICAgIHJ1bmZldGNoY21kKCIlcyBjb25maWcgLS1hZGQgYml0YmFrZS5zcmNyZXYgJXMiICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1ZC5iYXNlY21kLCB1ZC5yZXZpc2lvbnNbdWQubmFtZXNbMF1dKSwgZCwgd29ya2Rpcj11ZC5jbG9uZWRpcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWQuYmFzZWNtZCwgdWQucmV2aXNpb25zW3VkLm5hbWVzWzBdXSksIGQsIHdvcmtkaXI9d29ya2RpcikKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ2dpdHNtOiBzdWJtb2R1bGUgZG93bmxvYWQgZmFpbGVkOiAlcyAlcycgJSAodHlwZShlKS5fX25hbWVfXywgc3RyKGUpKSkKICAgICAgICAgICAgICAgICByYWlzZQogCiAgICAgICAgIEdpdC5kb3dubG9hZChzZWxmLCB1ZCwgZCkKLSAgICAgICAgc2VsZi5wcm9jZXNzX3N1Ym1vZHVsZXModWQsIHVkLmNsb25lZGlyLCBkb3dubG9hZF9zdWJtb2R1bGUsIGQpCisKKyAgICAgICAgIyBJZiB3ZSdyZSB1c2luZyBhIHNoYWxsb3cgbWlycm9yIHRhcmJhbGwgaXQgbmVlZHMgdG8gYmUgdW5wYWNrZWQKKyAgICAgICAgIyB0ZW1wb3JhcmlseSBzbyB0aGF0IHdlIGNhbiBleGFtaW5lIHRoZSAuZ2l0bW9kdWxlcyBmaWxlCisgICAgICAgIGlmIHVkLnNoYWxsb3cgYW5kIG9zLnBhdGguZXhpc3RzKHVkLmZ1bGxzaGFsbG93KSBhbmQgc2VsZi5uZWVkX3VwZGF0ZSh1ZCwgZCk6CisgICAgICAgICAgICB0bXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKGRpcj1kLmdldFZhcigiRExfRElSIikpCisgICAgICAgICAgICBydW5mZXRjaGNtZCgidGFyIC14emYgJXMiICUgdWQuZnVsbHNoYWxsb3csIGQsIHdvcmtkaXI9dG1wZGlyKQorICAgICAgICAgICAgc2VsZi5wcm9jZXNzX3N1Ym1vZHVsZXModWQsIHRtcGRpciwgZG93bmxvYWRfc3VibW9kdWxlLCBkKQorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSh0bXBkaXIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnByb2Nlc3Nfc3VibW9kdWxlcyh1ZCwgdWQuY2xvbmVkaXIsIGRvd25sb2FkX3N1Ym1vZHVsZSwgZCkKIAogICAgIGRlZiB1bnBhY2soc2VsZiwgdWQsIGRlc3RkaXIsIGQpOgotICAgICAgICBkZWYgdW5wYWNrX3N1Ym1vZHVsZXModWQsIHVybCwgbW9kdWxlLCBtb2RwYXRoLCBkKToKKyAgICAgICAgZGVmIHVucGFja19zdWJtb2R1bGVzKHVkLCB1cmwsIG1vZHVsZSwgbW9kcGF0aCwgd29ya2RpciwgZCk6CiAgICAgICAgICAgICB1cmwgKz0gIjtiYXJlY2xvbmU9MTtub2JyYW5jaD0xIgogCiAgICAgICAgICAgICAjIEZpZ3VyZSBvdXQgd2hlcmUgd2UgY2xvbmUgb3ZlciB0aGUgYmFyZSBzdWJtb2R1bGVzLi4uCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9oZy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2hnLnB5CmluZGV4IGUyMTExNWQuLjhmNTAzNzAgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2hnLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2hnLnB5CkBAIC0xMyw4ICsxMyw2IEBACiAjCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBiYgogaW1wb3J0IGVycm5vCiBmcm9tIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hNZXRob2QKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL25wbS5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL25wbS5weQppbmRleCA5NzAwZTYxLi40Nzg5ODUwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9ucG0ucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvbnBtLnB5CkBAIC0xLDMwMSArMSwyOTYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIFNhdm9pci1GYWlyZSBMaW51eAogIwogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAiIiIKLUJpdEJha2UgJ0ZldGNoJyBOUE0gaW1wbGVtZW50YXRpb24KK0JpdEJha2UgJ0ZldGNoJyBucG0gaW1wbGVtZW50YXRpb24KIAotVGhlIE5QTSBmZXRjaGVyIGlzIHVzZWQgdG8gcmV0cmlldmUgZmlsZXMgZnJvbSB0aGUgbnBtanMgcmVwb3NpdG9yeQorbnBtIGZldGNoZXIgc3VwcG9ydCB0aGUgU1JDX1VSSSB3aXRoIGZvcm1hdCBvZjoKK1NSQ19VUkkgPSAibnBtOi8vc29tZS5yZWdpc3RyeS51cmw7T3B0aW9uQT14eHg7T3B0aW9uQj14eHg7Li4uIgogCi1Vc2FnZSBpbiB0aGUgcmVjaXBlOgorU3VwcG9ydGVkIFNSQ19VUkkgb3B0aW9ucyBhcmU6CiAKLSAgICBTUkNfVVJJID0gIm5wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy87bmFtZT0ke1BOfTt2ZXJzaW9uPSR7UFZ9IgotICAgIFN1cG9ydGVkIFNSQ19VUkkgb3B0aW9ucyBhcmU6CistIHBhY2thZ2UKKyAgIFRoZSBucG0gcGFja2FnZSBuYW1lLiBUaGlzIGlzIGEgbWFuZGF0b3J5IHBhcmFtZXRlci4KIAotICAgIC0gbmFtZQotICAgIC0gdmVyc2lvbgorLSB2ZXJzaW9uCisgICAgVGhlIG5wbSBwYWNrYWdlIHZlcnNpb24uIFRoaXMgaXMgYSBtYW5kYXRvcnkgcGFyYW1ldGVyLgogCi0gICAgbnBtOi8vcmVnaXN0cnkubnBtanMub3JnLyR7UE59Ly0vJHtQTn0tJHtQVn0udGd6ICB3b3VsZCBiZWNvbWUgbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO25hbWU9JHtQTn07dmVyc2lvbj0ke1BWfQotICAgIFRoZSBmZXRjaGVyIGFsbCB0cmlnZ2VycyBvZmYgdGhlIGV4aXN0ZW5jZSBvZiB1ZC5sb2NhbHBhdGguIElmIHRoYXQgZXhpc3RzIGFuZCBoYXMgdGhlICIuZG9uZSIgc3RhbXAsIGl0cyBhc3N1bWVkIHRoZSBmZXRjaCBpcyBnb29kL2RvbmUKKy0gZG93bmxvYWRmaWxlbmFtZQorICAgIFNwZWNpZmllcyB0aGUgZmlsZW5hbWUgdXNlZCB3aGVuIHN0b3JpbmcgdGhlIGRvd25sb2FkZWQgZmlsZS4KIAorLSBkZXN0c3VmZml4CisgICAgU3BlY2lmaWVzIHRoZSBkaXJlY3RvcnkgdG8gdXNlIHRvIHVucGFjayB0aGUgcGFja2FnZSAoZGVmYXVsdDogbnBtKS4KICIiIgogCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCB1cmxsaWIucmVxdWVzdCwgdXJsbGliLnBhcnNlLCB1cmxsaWIuZXJyb3IKK2ltcG9ydCBiYXNlNjQKIGltcG9ydCBqc29uCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHNpZ25hbAoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaGxleAoraW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgYmIKLWZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kCi1mcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBGZXRjaEVycm9yCi1mcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBDaGVja3N1bUVycm9yCi1mcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBydW5mZXRjaGNtZAotZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgbG9nZ2VyCi1mcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBVbnBhY2tFcnJvcgotZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgUGFyYW1ldGVyRXJyb3IKK2Zyb20gYmIuZmV0Y2gyIGltcG9ydCBGZXRjaAorZnJvbSBiYi5mZXRjaDIgaW1wb3J0IEZldGNoRXJyb3IKK2Zyb20gYmIuZmV0Y2gyIGltcG9ydCBGZXRjaE1ldGhvZAorZnJvbSBiYi5mZXRjaDIgaW1wb3J0IE1pc3NpbmdQYXJhbWV0ZXJFcnJvcgorZnJvbSBiYi5mZXRjaDIgaW1wb3J0IFBhcmFtZXRlckVycm9yCitmcm9tIGJiLmZldGNoMiBpbXBvcnQgVVJJCitmcm9tIGJiLmZldGNoMiBpbXBvcnQgY2hlY2tfbmV0d29ya19hY2Nlc3MKK2Zyb20gYmIuZmV0Y2gyIGltcG9ydCBydW5mZXRjaGNtZAorZnJvbSBiYi51dGlscyBpbXBvcnQgaXNfc2VtdmVyCiAKLWRlZiBzdWJwcm9jZXNzX3NldHVwKCk6Ci0gICAgIyBQeXRob24gaW5zdGFsbHMgYSBTSUdQSVBFIGhhbmRsZXIgYnkgZGVmYXVsdC4gVGhpcyBpcyB1c3VhbGx5IG5vdCB3aGF0Ci0gICAgIyBub24tUHl0aG9uIHN1YnByb2Nlc3NlcyBleHBlY3QuCi0gICAgIyBTSUdQSVBFIGVycm9ycyBhcmUga25vd24gaXNzdWVzIHdpdGggZ3ppcC9iYXNoCi0gICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHUElQRSwgc2lnbmFsLlNJR19ERkwpCitkZWYgbnBtX3BhY2thZ2UocGFja2FnZSk6CisgICAgIiIiQ29udmVydCB0aGUgbnBtIHBhY2thZ2UgbmFtZSB0byByZW1vdmUgdW5zdXBwb3J0ZWQgY2hhcmFjdGVyIiIiCisgICAgIyBTY29wZWQgcGFja2FnZSBuYW1lcyAod2l0aCB0aGUgQCkgdXNlIHRoZSBzYW1lIG5hbWluZyBjb252ZW50aW9uCisgICAgIyBhcyB0aGUgJ25wbSBwYWNrJyBjb21tYW5kLgorICAgIGlmIHBhY2thZ2Uuc3RhcnRzd2l0aCgiQCIpOgorICAgICAgICByZXR1cm4gcmUuc3ViKCIvIiwgIi0iLCBwYWNrYWdlWzE6XSkKKyAgICByZXR1cm4gcGFja2FnZQorCitkZWYgbnBtX2ZpbGVuYW1lKHBhY2thZ2UsIHZlcnNpb24pOgorICAgICIiIkdldCB0aGUgZmlsZW5hbWUgb2YgYSBucG0gcGFja2FnZSIiIgorICAgIHJldHVybiBucG1fcGFja2FnZShwYWNrYWdlKSArICItIiArIHZlcnNpb24gKyAiLnRneiIKKworZGVmIG5wbV9sb2NhbGZpbGUocGFja2FnZSwgdmVyc2lvbik6CisgICAgIiIiR2V0IHRoZSBsb2NhbCBmaWxlbmFtZSBvZiBhIG5wbSBwYWNrYWdlIiIiCisgICAgcmV0dXJuIG9zLnBhdGguam9pbigibnBtMiIsIG5wbV9maWxlbmFtZShwYWNrYWdlLCB2ZXJzaW9uKSkKKworZGVmIG5wbV9pbnRlZ3JpdHkoaW50ZWdyaXR5KToKKyAgICAiIiIKKyAgICBHZXQgdGhlIGNoZWNrc3VtIG5hbWUgYW5kIGV4cGVjdGVkIHZhbHVlIGZyb20gdGhlIHN1YnJlc291cmNlIGludGVncml0eQorICAgICAgICBodHRwczovL3d3dy53My5vcmcvVFIvU1JJLworICAgICIiIgorICAgIGFsZ28sIHZhbHVlID0gaW50ZWdyaXR5LnNwbGl0KCItIiwgbWF4c3BsaXQ9MSkKKyAgICByZXR1cm4gIiVzc3VtIiAlIGFsZ28sIGJhc2U2NC5iNjRkZWNvZGUodmFsdWUpLmhleCgpCisKK2RlZiBucG1fdW5wYWNrKHRhcmJhbGwsIGRlc3RkaXIsIGQpOgorICAgICIiIlVucGFjayBhIG5wbSB0YXJiYWxsIiIiCisgICAgYmIudXRpbHMubWtkaXJoaWVyKGRlc3RkaXIpCisgICAgY21kID0gInRhciAtLWV4dHJhY3QgLS1nemlwIC0tZmlsZT0lcyIgJSBzaGxleC5xdW90ZSh0YXJiYWxsKQorICAgIGNtZCArPSAiIC0tbm8tc2FtZS1vd25lciIKKyAgICBjbWQgKz0gIiAtLXN0cmlwLWNvbXBvbmVudHM9MSIKKyAgICBydW5mZXRjaGNtZChjbWQsIGQsIHdvcmtkaXI9ZGVzdGRpcikKKworY2xhc3MgTnBtRW52aXJvbm1lbnQob2JqZWN0KToKKyAgICAiIiIKKyAgICBVc2luZyBhIG5wbSBjb25maWcgZmlsZSBzZWVtcyBtb3JlIHJlbGlhYmxlIHRoYW4gdXNpbmcgY2xpIGFyZ3VtZW50cy4KKyAgICBUaGlzIGNsYXNzIGFsbG93cyB0byBjcmVhdGUgYSBjb250cm9sbGVkIGVudmlyb25tZW50IGZvciBucG0gY29tbWFuZHMuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGQsIGNvbmZpZ3M9Tm9uZSk6CisgICAgICAgIHNlbGYuZCA9IGQKKyAgICAgICAgc2VsZi5jb25maWdzID0gY29uZmlncworCisgICAgZGVmIHJ1bihzZWxmLCBjbWQsIGFyZ3M9Tm9uZSwgY29uZmlncz1Ob25lLCB3b3JrZGlyPU5vbmUpOgorICAgICAgICAiIiJSdW4gbnBtIGNvbW1hbmQgaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50IiIiCisgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdG1wZGlyOgorICAgICAgICAgICAgZCA9IGJiLmRhdGEuY3JlYXRlQ29weShzZWxmLmQpCisgICAgICAgICAgICBkLnNldFZhcigiSE9NRSIsIHRtcGRpcikKKworICAgICAgICAgICAgY2ZnZmlsZSA9IG9zLnBhdGguam9pbih0bXBkaXIsICJucG1yYyIpCisKKyAgICAgICAgICAgIGlmIG5vdCB3b3JrZGlyOgorICAgICAgICAgICAgICAgIHdvcmtkaXIgPSB0bXBkaXIKKworICAgICAgICAgICAgZGVmIF9ydW4oY21kKToKKyAgICAgICAgICAgICAgICBjbWQgPSAiTlBNX0NPTkZJR19VU0VSQ09ORklHPSVzICIgJSBjZmdmaWxlICsgY21kCisgICAgICAgICAgICAgICAgY21kID0gIk5QTV9DT05GSUdfR0xPQkFMQ09ORklHPSVzICIgJSBjZmdmaWxlICsgY21kCisgICAgICAgICAgICAgICAgcmV0dXJuIHJ1bmZldGNoY21kKGNtZCwgZCwgd29ya2Rpcj13b3JrZGlyKQorCisgICAgICAgICAgICBpZiBzZWxmLmNvbmZpZ3M6CisgICAgICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2VsZi5jb25maWdzOgorICAgICAgICAgICAgICAgICAgICBfcnVuKCJucG0gY29uZmlnIHNldCAlcyAlcyIgJSAoa2V5LCBzaGxleC5xdW90ZSh2YWx1ZSkpKQorCisgICAgICAgICAgICBpZiBjb25maWdzOgorICAgICAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGNvbmZpZ3M6CisgICAgICAgICAgICAgICAgICAgIF9ydW4oIm5wbSBjb25maWcgc2V0ICVzICVzIiAlIChrZXksIHNobGV4LnF1b3RlKHZhbHVlKSkpCisKKyAgICAgICAgICAgIGlmIGFyZ3M6CisgICAgICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gYXJnczoKKyAgICAgICAgICAgICAgICAgICAgY21kICs9ICIgLS0lcz0lcyIgJSAoa2V5LCBzaGxleC5xdW90ZSh2YWx1ZSkpCisKKyAgICAgICAgICAgIHJldHVybiBfcnVuKGNtZCkKIAogY2xhc3MgTnBtKEZldGNoTWV0aG9kKToKLQotICAgICIiIkNsYXNzIHRvIGZldGNoIHVybHMgdmlhICducG0nIiIiCi0gICAgZGVmIGluaXQoc2VsZiwgZCk6Ci0gICAgICAgIHBhc3MKKyAgICAiIiJDbGFzcyB0byBmZXRjaCBhIHBhY2thZ2UgZnJvbSBhIG5wbSByZWdpc3RyeSIiIgogCiAgICAgZGVmIHN1cHBvcnRzKHNlbGYsIHVkLCBkKToKLSAgICAgICAgIiIiCi0gICAgICAgIENoZWNrIHRvIHNlZSBpZiBhIGdpdmVuIHVybCBjYW4gYmUgZmV0Y2hlZCB3aXRoIG5wbQotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHVkLnR5cGUgaW4gWyducG0nXQotCi0gICAgZGVmIGRlYnVnKHNlbGYsIG1zZyk6Ci0gICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiTnBtRmV0Y2g6ICVzIiwgbXNnKQotCi0gICAgZGVmIGNsZWFuKHNlbGYsIHVkLCBkKToKLSAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJDYWxsaW5nIGNsZWFudXAgJXMiICUgdWQucGtnbmFtZSkKLSAgICAgICAgYmIudXRpbHMucmVtb3ZlKHVkLmxvY2FscGF0aCwgRmFsc2UpCi0gICAgICAgIGJiLnV0aWxzLnJlbW92ZSh1ZC5wa2dkYXRhZGlyLCBUcnVlKQotICAgICAgICBiYi51dGlscy5yZW1vdmUodWQuZnVsbG1pcnJvciwgRmFsc2UpCisgICAgICAgICIiIkNoZWNrIGlmIGEgZ2l2ZW4gdXJsIGNhbiBiZSBmZXRjaGVkIHdpdGggbnBtIiIiCisgICAgICAgIHJldHVybiB1ZC50eXBlIGluIFsibnBtIl0KIAogICAgIGRlZiB1cmxkYXRhX2luaXQoc2VsZiwgdWQsIGQpOgotICAgICAgICAiIiIKLSAgICAgICAgaW5pdCBOUE0gc3BlY2lmaWMgdmFyaWFibGUgd2l0aGluIHVybCBkYXRhCi0gICAgICAgICIiIgotICAgICAgICBpZiAnZG93bmxvYWRmaWxlbmFtZScgaW4gdWQucGFybToKLSAgICAgICAgICAgIHVkLmJhc2VuYW1lID0gdWQucGFybVsnZG93bmxvYWRmaWxlbmFtZSddCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB1ZC5iYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUodWQucGF0aCkKKyAgICAgICAgIiIiSW5pdCBucG0gc3BlY2lmaWMgdmFyaWFibGVzIHdpdGhpbiB1cmwgZGF0YSIiIgorICAgICAgICB1ZC5wYWNrYWdlID0gTm9uZQorICAgICAgICB1ZC52ZXJzaW9uID0gTm9uZQorICAgICAgICB1ZC5yZWdpc3RyeSA9IE5vbmUKIAotICAgICAgICAjIGNhbid0IGNhbGwgaXQgdWQubmFtZSBvdGhlcndpc2UgZmV0Y2hlciBiYXNlIGNsYXNzIHdpbGwgc3RhcnQgZG9pbmcgc2hhMXN0dWZmCi0gICAgICAgICMgVE9ETzogZmluZCBhIHdheSB0byBnZXQgYW4gc2hhMS9zaGEyNTYgbWFuaWZlc3Qgb2YgcGtnICYgYWxsIGRlcHMKLSAgICAgICAgdWQucGtnbmFtZSA9IHVkLnBhcm0uZ2V0KCJuYW1lIiwgTm9uZSkKLSAgICAgICAgaWYgbm90IHVkLnBrZ25hbWU6Ci0gICAgICAgICAgICByYWlzZSBQYXJhbWV0ZXJFcnJvcigiTlBNIGZldGNoZXIgcmVxdWlyZXMgYSBuYW1lIHBhcmFtZXRlciIsIHVkLnVybCkKLSAgICAgICAgdWQudmVyc2lvbiA9IHVkLnBhcm0uZ2V0KCJ2ZXJzaW9uIiwgTm9uZSkKKyAgICAgICAgIyBHZXQgdGhlICdwYWNrYWdlJyBwYXJhbWV0ZXIKKyAgICAgICAgaWYgInBhY2thZ2UiIGluIHVkLnBhcm06CisgICAgICAgICAgICB1ZC5wYWNrYWdlID0gdWQucGFybS5nZXQoInBhY2thZ2UiKQorCisgICAgICAgIGlmIG5vdCB1ZC5wYWNrYWdlOgorICAgICAgICAgICAgcmFpc2UgTWlzc2luZ1BhcmFtZXRlckVycm9yKCJQYXJhbWV0ZXIgJ3BhY2thZ2UnIHJlcXVpcmVkIiwgdWQudXJsKQorCisgICAgICAgICMgR2V0IHRoZSAndmVyc2lvbicgcGFyYW1ldGVyCisgICAgICAgIGlmICJ2ZXJzaW9uIiBpbiB1ZC5wYXJtOgorICAgICAgICAgICAgdWQudmVyc2lvbiA9IHVkLnBhcm0uZ2V0KCJ2ZXJzaW9uIikKKwogICAgICAgICBpZiBub3QgdWQudmVyc2lvbjoKLSAgICAgICAgICAgIHJhaXNlIFBhcmFtZXRlckVycm9yKCJOUE0gZmV0Y2hlciByZXF1aXJlcyBhIHZlcnNpb24gcGFyYW1ldGVyIiwgdWQudXJsKQotICAgICAgICB1ZC5iYm5wbW1hbmlmZXN0ID0gIiVzLSVzLmRlcHMuanNvbiIgJSAodWQucGtnbmFtZSwgdWQudmVyc2lvbikKLSAgICAgICAgdWQuYmJucG1tYW5pZmVzdCA9IHVkLmJibnBtbWFuaWZlc3QucmVwbGFjZSgnLycsICctJykKLSAgICAgICAgdWQucmVnaXN0cnkgPSAiaHR0cDovLyVzIiAlICh1ZC51cmwucmVwbGFjZSgnbnBtOi8vJywgJycsIDEpLnNwbGl0KCc7JykpWzBdCi0gICAgICAgIHByZWZpeGRpciA9ICJucG0vJXMiICUgdWQucGtnbmFtZQotICAgICAgICB1ZC5wa2dkYXRhZGlyID0gZC5leHBhbmQoIiR7RExfRElSfS8lcyIgJSBwcmVmaXhkaXIpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh1ZC5wa2dkYXRhZGlyKToKLSAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcih1ZC5wa2dkYXRhZGlyKQotICAgICAgICB1ZC5sb2NhbHBhdGggPSBkLmV4cGFuZCgiJHtETF9ESVJ9L25wbS8lcyIgJSB1ZC5iYm5wbW1hbmlmZXN0KQorICAgICAgICAgICAgcmFpc2UgTWlzc2luZ1BhcmFtZXRlckVycm9yKCJQYXJhbWV0ZXIgJ3ZlcnNpb24nIHJlcXVpcmVkIiwgdWQudXJsKQogCi0gICAgICAgIHNlbGYuYmFzZWNtZCA9IGQuZ2V0VmFyKCJGRVRDSENNRF93Z2V0Iikgb3IgIi91c3IvYmluL2VudiB3Z2V0IC1PIC10IDIgLVQgMzAgLW52IC0tcGFzc2l2ZS1mdHAgLS1uby1jaGVjay1jZXJ0aWZpY2F0ZSAiCi0gICAgICAgIHVkLnByZWZpeGRpciA9IHByZWZpeGRpcgorICAgICAgICBpZiBub3QgaXNfc2VtdmVyKHVkLnZlcnNpb24pIGFuZCBub3QgdWQudmVyc2lvbiA9PSAibGF0ZXN0IjoKKyAgICAgICAgICAgIHJhaXNlIFBhcmFtZXRlckVycm9yKCJJbnZhbGlkICd2ZXJzaW9uJyBwYXJhbWV0ZXIiLCB1ZC51cmwpCiAKLSAgICAgICAgdWQud3JpdGVfdGFyYmFsbHMgPSAoKGQuZ2V0VmFyKCJCQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMiKSBvciAiMCIpICE9ICIwIikKLSAgICAgICAgbWlycm9ydGFyYmFsbCA9ICducG1fJXMtJXMudGFyLnh6JyAlICh1ZC5wa2duYW1lLCB1ZC52ZXJzaW9uKQotICAgICAgICBtaXJyb3J0YXJiYWxsID0gbWlycm9ydGFyYmFsbC5yZXBsYWNlKCcvJywgJy0nKQotICAgICAgICB1ZC5mdWxsbWlycm9yID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCJETF9ESVIiKSwgbWlycm9ydGFyYmFsbCkKLSAgICAgICAgdWQubWlycm9ydGFyYmFsbHMgPSBbbWlycm9ydGFyYmFsbF0KKyAgICAgICAgIyBFeHRyYWN0IHRoZSAncmVnaXN0cnknIHBhcnQgb2YgdGhlIHVybAorICAgICAgICB1ZC5yZWdpc3RyeSA9IHJlLnN1YihyIl5ucG06Ly8iLCAiaHR0cDovLyIsIHVkLnVybC5zcGxpdCgiOyIpWzBdKQorCisgICAgICAgICMgVXNpbmcgdGhlICdkb3dubG9hZGZpbGVuYW1lJyBwYXJhbWV0ZXIgYXMgbG9jYWwgZmlsZW5hbWUKKyAgICAgICAgIyBvciB0aGUgbnBtIHBhY2thZ2UgbmFtZS4KKyAgICAgICAgaWYgImRvd25sb2FkZmlsZW5hbWUiIGluIHVkLnBhcm06CisgICAgICAgICAgICB1ZC5sb2NhbGZpbGUgPSBkLmV4cGFuZCh1ZC5wYXJtWyJkb3dubG9hZGZpbGVuYW1lIl0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB1ZC5sb2NhbGZpbGUgPSBucG1fbG9jYWxmaWxlKHVkLnBhY2thZ2UsIHVkLnZlcnNpb24pCisKKyAgICAgICAgIyBHZXQgdGhlIGJhc2UgJ25wbScgY29tbWFuZAorICAgICAgICB1ZC5iYXNlY21kID0gZC5nZXRWYXIoIkZFVENIQ01EX25wbSIpIG9yICJucG0iCisKKyAgICAgICAgIyBUaGlzIGZldGNoZXIgcmVzb2x2ZXMgYSBVUkkgZnJvbSBhIG5wbSBwYWNrYWdlIG5hbWUgYW5kIHZlcnNpb24gYW5kCisgICAgICAgICMgdGhlbiBmb3J3YXJkcyBpdCB0byBhIHByb3h5IGZldGNoZXIuIEEgcmVzb2x2ZSBmaWxlIGNvbnRhaW5pbmcgdGhlCisgICAgICAgICMgcmVzb2x2ZWQgVVJJIGlzIGNyZWF0ZWQgdG8gYXZvaWQgdW53YW50ZWQgbmV0d29yayBhY2Nlc3MgKGlmIHRoZSBmaWxlCisgICAgICAgICMgYWxyZWFkeSBleGlzdHMpLiBUaGUgbWFuYWdlbWVudCBvZiB0aGUgZG9uZXN0YW1wIGZpbGUsIHRoZSBsb2NrZmlsZQorICAgICAgICAjIGFuZCB0aGUgY2hlY2tzdW1zIGFyZSBmb3J3YXJkZWQgdG8gdGhlIHByb3h5IGZldGNoZXIuCisgICAgICAgIHVkLnByb3h5ID0gTm9uZQorICAgICAgICB1ZC5uZWVkZG9uZXN0YW1wID0gRmFsc2UKKyAgICAgICAgdWQucmVzb2x2ZWZpbGUgPSBzZWxmLmxvY2FscGF0aCh1ZCwgZCkgKyAiLnJlc29sdmVkIgorCisgICAgZGVmIF9yZXNvbHZlX3Byb3h5X3VybChzZWxmLCB1ZCwgZCk6CisgICAgICAgIGRlZiBfbnBtX3ZpZXcoKToKKyAgICAgICAgICAgIGNvbmZpZ3MgPSBbXQorICAgICAgICAgICAgY29uZmlncy5hcHBlbmQoKCJqc29uIiwgInRydWUiKSkKKyAgICAgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgicmVnaXN0cnkiLCB1ZC5yZWdpc3RyeSkpCisgICAgICAgICAgICBwa2d2ZXIgPSBzaGxleC5xdW90ZSh1ZC5wYWNrYWdlICsgIkAiICsgdWQudmVyc2lvbikKKyAgICAgICAgICAgIGNtZCA9IHVkLmJhc2VjbWQgKyAiIHZpZXcgJXMiICUgcGtndmVyCisgICAgICAgICAgICBlbnYgPSBOcG1FbnZpcm9ubWVudChkKQorICAgICAgICAgICAgY2hlY2tfbmV0d29ya19hY2Nlc3MoZCwgY21kLCB1ZC5yZWdpc3RyeSkKKyAgICAgICAgICAgIHZpZXdfc3RyaW5nID0gZW52LnJ1bihjbWQsIGNvbmZpZ3M9Y29uZmlncykKKworICAgICAgICAgICAgaWYgbm90IHZpZXdfc3RyaW5nOgorICAgICAgICAgICAgICAgIHJhaXNlIEZldGNoRXJyb3IoIlVuYXZhaWxhYmxlIHBhY2thZ2UgJXMiICUgcGtndmVyLCB1ZC51cmwpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB2aWV3ID0ganNvbi5sb2Fkcyh2aWV3X3N0cmluZykKKworICAgICAgICAgICAgICAgIGVycm9yID0gdmlldy5nZXQoImVycm9yIikKKyAgICAgICAgICAgICAgICBpZiBlcnJvciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRmV0Y2hFcnJvcihlcnJvci5nZXQoInN1bW1hcnkiKSwgdWQudXJsKQorCisgICAgICAgICAgICAgICAgaWYgdWQudmVyc2lvbiA9PSAibGF0ZXN0IjoKKyAgICAgICAgICAgICAgICAgICAgYmIud2FybigiVGhlIG5wbSBwYWNrYWdlICVzIGlzIHVzaW5nIHRoZSBsYXRlc3QgIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZlcnNpb24gYXZhaWxhYmxlLiBUaGlzIGNvdWxkIGxlYWQgdG8gIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi1yZXByb2R1Y2libGUgYnVpbGRzLiIgJSBwa2d2ZXIpCisgICAgICAgICAgICAgICAgZWxpZiB1ZC52ZXJzaW9uICE9IHZpZXcuZ2V0KCJ2ZXJzaW9uIik6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFBhcmFtZXRlckVycm9yKCJJbnZhbGlkICd2ZXJzaW9uJyBwYXJhbWV0ZXIiLCB1ZC51cmwpCisKKyAgICAgICAgICAgICAgICByZXR1cm4gdmlldworCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgcmFpc2UgRmV0Y2hFcnJvcigiSW52YWxpZCB2aWV3IGZyb20gbnBtOiAlcyIgJSBzdHIoZSksIHVkLnVybCkKKworICAgICAgICBkZWYgX2dldF91cmwodmlldyk6CisgICAgICAgICAgICB0YXJiYWxsX3VybCA9IHZpZXcuZ2V0KCJkaXN0Iiwge30pLmdldCgidGFyYmFsbCIpCisKKyAgICAgICAgICAgIGlmIHRhcmJhbGxfdXJsIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgRmV0Y2hFcnJvcigiSW52YWxpZCAnZGlzdC50YXJiYWxsJyBpbiB2aWV3IiwgdWQudXJsKQorCisgICAgICAgICAgICB1cmkgPSBVUkkodGFyYmFsbF91cmwpCisgICAgICAgICAgICB1cmkucGFyYW1zWyJkb3dubG9hZGZpbGVuYW1lIl0gPSB1ZC5sb2NhbGZpbGUKKworICAgICAgICAgICAgaW50ZWdyaXR5ID0gdmlldy5nZXQoImRpc3QiLCB7fSkuZ2V0KCJpbnRlZ3JpdHkiKQorICAgICAgICAgICAgc2hhc3VtID0gdmlldy5nZXQoImRpc3QiLCB7fSkuZ2V0KCJzaGFzdW0iKQorCisgICAgICAgICAgICBpZiBpbnRlZ3JpdHkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgY2hlY2tzdW1fbmFtZSwgY2hlY2tzdW1fZXhwZWN0ZWQgPSBucG1faW50ZWdyaXR5KGludGVncml0eSkKKyAgICAgICAgICAgICAgICB1cmkucGFyYW1zW2NoZWNrc3VtX25hbWVdID0gY2hlY2tzdW1fZXhwZWN0ZWQKKyAgICAgICAgICAgIGVsaWYgc2hhc3VtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHVyaS5wYXJhbXNbInNoYTFzdW0iXSA9IHNoYXN1bQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCJJbnZhbGlkICdkaXN0LmludGVncml0eScgaW4gdmlldyIsIHVkLnVybCkKKworICAgICAgICAgICAgcmV0dXJuIHN0cih1cmkpCisKKyAgICAgICAgdXJsID0gX2dldF91cmwoX25wbV92aWV3KCkpCisKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZSh1ZC5yZXNvbHZlZmlsZSkpCisgICAgICAgIHdpdGggb3Blbih1ZC5yZXNvbHZlZmlsZSwgInciKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh1cmwpCisKKyAgICBkZWYgX3NldHVwX3Byb3h5KHNlbGYsIHVkLCBkKToKKyAgICAgICAgaWYgdWQucHJveHkgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh1ZC5yZXNvbHZlZmlsZSk6CisgICAgICAgICAgICAgICAgc2VsZi5fcmVzb2x2ZV9wcm94eV91cmwodWQsIGQpCisKKyAgICAgICAgICAgIHdpdGggb3Blbih1ZC5yZXNvbHZlZmlsZSwgInIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHVybCA9IGYucmVhZCgpCisKKyAgICAgICAgICAgICMgQXZvaWQgY29uZmxpY3RzIGJldHdlZW4gdGhlIGVudmlyb25tZW50IGRhdGEgYW5kOgorICAgICAgICAgICAgIyAtIHRoZSBwcm94eSB1cmwgY2hlY2tzdW0KKyAgICAgICAgICAgIGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKKyAgICAgICAgICAgIGRhdGEuZGVsVmFyRmxhZ3MoIlNSQ19VUkkiKQorICAgICAgICAgICAgdWQucHJveHkgPSBGZXRjaChbdXJsXSwgZGF0YSkKKworICAgIGRlZiBfZ2V0X3Byb3h5X21ldGhvZChzZWxmLCB1ZCwgZCk6CisgICAgICAgIHNlbGYuX3NldHVwX3Byb3h5KHVkLCBkKQorICAgICAgICBwcm94eV91cmwgPSB1ZC5wcm94eS51cmxzWzBdCisgICAgICAgIHByb3h5X3VkID0gdWQucHJveHkudWRbcHJveHlfdXJsXQorICAgICAgICBwcm94eV9kID0gdWQucHJveHkuZAorICAgICAgICBwcm94eV91ZC5zZXR1cF9sb2NhbHBhdGgocHJveHlfZCkKKyAgICAgICAgcmV0dXJuIHByb3h5X3VkLm1ldGhvZCwgcHJveHlfdWQsIHByb3h5X2QKKworICAgIGRlZiB2ZXJpZnlfZG9uZXN0YW1wKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiVmVyaWZ5IHRoZSBkb25lc3RhbXAgZmlsZSIiIgorICAgICAgICBwcm94eV9tLCBwcm94eV91ZCwgcHJveHlfZCA9IHNlbGYuX2dldF9wcm94eV9tZXRob2QodWQsIGQpCisgICAgICAgIHJldHVybiBwcm94eV9tLnZlcmlmeV9kb25lc3RhbXAocHJveHlfdWQsIHByb3h5X2QpCisKKyAgICBkZWYgdXBkYXRlX2RvbmVzdGFtcChzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIlVwZGF0ZSB0aGUgZG9uZXN0YW1wIGZpbGUiIiIKKyAgICAgICAgcHJveHlfbSwgcHJveHlfdWQsIHByb3h5X2QgPSBzZWxmLl9nZXRfcHJveHlfbWV0aG9kKHVkLCBkKQorICAgICAgICBwcm94eV9tLnVwZGF0ZV9kb25lc3RhbXAocHJveHlfdWQsIHByb3h5X2QpCiAKICAgICBkZWYgbmVlZF91cGRhdGUoc2VsZiwgdWQsIGQpOgotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGgpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICIiIkZvcmNlIGEgZmV0Y2gsIGV2ZW4gaWYgbG9jYWxwYXRoIGV4aXN0cyA/IiIiCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh1ZC5yZXNvbHZlZmlsZSk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiB1ZC52ZXJzaW9uID09ICJsYXRlc3QiOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcHJveHlfbSwgcHJveHlfdWQsIHByb3h5X2QgPSBzZWxmLl9nZXRfcHJveHlfbWV0aG9kKHVkLCBkKQorICAgICAgICByZXR1cm4gcHJveHlfbS5uZWVkX3VwZGF0ZShwcm94eV91ZCwgcHJveHlfZCkKIAotICAgIGRlZiBfcnVucGFjayhzZWxmLCB1ZCwgZCwgcGtnZnVsbG5hbWU6IHN0ciwgcXVpZXQ9RmFsc2UpIC0+IHN0cjoKLSAgICAgICAgIiIiCi0gICAgICAgIFJ1bnMgbnBtIHBhY2sgb24gYSBmdWxsIHBhY2thZ2UgbmFtZS4KLSAgICAgICAgUmV0dXJucyB0aGUgZmlsZW5hbWUgb2YgdGhlIGRvd25sb2FkZWQgcGFja2FnZQotICAgICAgICAiIiIKLSAgICAgICAgYmIuZmV0Y2gyLmNoZWNrX25ldHdvcmtfYWNjZXNzKGQsIHBrZ2Z1bGxuYW1lLCB1ZC5yZWdpc3RyeSkKLSAgICAgICAgZGxkaXIgPSBkLmdldFZhcigiRExfRElSIikKLSAgICAgICAgZGxkaXIgPSBvcy5wYXRoLmpvaW4oZGxkaXIsIHVkLnByZWZpeGRpcikKLQotICAgICAgICBjb21tYW5kID0gIm5wbSBwYWNrIHt9IC0tcmVnaXN0cnkge30iLmZvcm1hdChwa2dmdWxsbmFtZSwgdWQucmVnaXN0cnkpCi0gICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiRmV0Y2hpbmcge30gdXNpbmcgY29tbWFuZCAne30nIGluIHt9Ii5mb3JtYXQocGtnZnVsbG5hbWUsIGNvbW1hbmQsIGRsZGlyKSkKLSAgICAgICAgZmlsZW5hbWUgPSBydW5mZXRjaGNtZChjb21tYW5kLCBkLCBxdWlldCwgd29ya2Rpcj1kbGRpcikKLSAgICAgICAgcmV0dXJuIGZpbGVuYW1lLnJzdHJpcCgpCi0KLSAgICBkZWYgX3VucGFja2RlcChzZWxmLCB1ZCwgcGtnLCBkYXRhLCBkZXN0ZGlyLCBkbGRpciwgZCk6Ci0gICAgICAgIGZpbGUgPSBkYXRhW3BrZ11bJ3RneiddCi0gICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiZmlsZSB0byBleHRyYWN0IGlzICVzIiAlIGZpbGUpCi0gICAgICAgIGlmIGZpbGUuZW5kc3dpdGgoJy50Z3onKSBvciBmaWxlLmVuZHN3aXRoKCcudGFyLmd6Jykgb3IgZmlsZS5lbmRzd2l0aCgnLnRhci5aJyk6Ci0gICAgICAgICAgICBjbWQgPSAndGFyIHh6IC0tc3RyaXAgMSAtLW5vLXNhbWUtb3duZXIgLS13YXJuaW5nPW5vLXVua25vd24ta2V5d29yZCAtZiAlcy8lcycgJSAoZGxkaXIsIGZpbGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBiYi5mYXRhbCgiTlBNIHBhY2thZ2UgJXMgZG93bmxvYWRlZCBub3QgYSB0YXJiYWxsISIgJSBmaWxlKQotCi0gICAgICAgICMgQ2hhbmdlIHRvIHN1YmRpciBiZWZvcmUgZXhlY3V0aW5nIGNvbW1hbmQKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRlc3RkaXIpOgotICAgICAgICAgICAgb3MubWFrZWRpcnMoZGVzdGRpcikKLSAgICAgICAgcGF0aCA9IGQuZ2V0VmFyKCdQQVRIJykKLSAgICAgICAgaWYgcGF0aDoKLSAgICAgICAgICAgIGNtZCA9ICJQQVRIPVwiJXNcIiAlcyIgJSAocGF0aCwgY21kKQotICAgICAgICBiYi5ub3RlKCJVbnBhY2tpbmcgJXMgdG8gJXMvIiAlIChmaWxlLCBkZXN0ZGlyKSkKLSAgICAgICAgcmV0ID0gc3VicHJvY2Vzcy5jYWxsKGNtZCwgcHJlZXhlY19mbj1zdWJwcm9jZXNzX3NldHVwLCBzaGVsbD1UcnVlLCBjd2Q9ZGVzdGRpcikKLQotICAgICAgICBpZiByZXQgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIFVucGFja0Vycm9yKCJVbnBhY2sgY29tbWFuZCAlcyBmYWlsZWQgd2l0aCByZXR1cm4gdmFsdWUgJXMiICUgKGNtZCwgcmV0KSwgdWQudXJsKQotCi0gICAgICAgIGlmICdkZXBzJyBub3QgaW4gZGF0YVtwa2ddOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGZvciBkZXAgaW4gZGF0YVtwa2ddWydkZXBzJ106Ci0gICAgICAgICAgICBzZWxmLl91bnBhY2tkZXAodWQsIGRlcCwgZGF0YVtwa2ddWydkZXBzJ10sICIlcy9ub2RlX21vZHVsZXMvJXMiICUgKGRlc3RkaXIsIGRlcCksIGRsZGlyLCBkKQotCi0KLSAgICBkZWYgdW5wYWNrKHNlbGYsIHVkLCBkZXN0ZGlyLCBkKToKLSAgICAgICAgZGxkaXIgPSBkLmdldFZhcigiRExfRElSIikKLSAgICAgICAgd2l0aCBvcGVuKCIlcy9ucG0vJXMiICUgKGRsZGlyLCB1ZC5iYm5wbW1hbmlmZXN0KSkgYXMgZGF0YWZpbGU6Ci0gICAgICAgICAgICB3b3Jrb2JqID0ganNvbi5sb2FkKGRhdGFmaWxlKQotICAgICAgICBkbGRpciA9ICIlcy8lcyIgJSAob3MucGF0aC5kaXJuYW1lKHVkLmxvY2FscGF0aCksIHVkLnBrZ25hbWUpCi0KLSAgICAgICAgaWYgJ3N1YmRpcicgaW4gdWQucGFybToKLSAgICAgICAgICAgIHVucGFja2RpciA9ICclcy8lcycgJSAoZGVzdGRpciwgdWQucGFybS5nZXQoJ3N1YmRpcicpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdW5wYWNrZGlyID0gJyVzL25wbXBrZycgJSBkZXN0ZGlyCi0KLSAgICAgICAgc2VsZi5fdW5wYWNrZGVwKHVkLCB1ZC5wa2duYW1lLCB3b3Jrb2JqLCB1bnBhY2tkaXIsIGRsZGlyLCBkKQotCi0gICAgZGVmIF9wYXJzZV92aWV3KHNlbGYsIG91dHB1dCk6Ci0gICAgICAgICcnJwotICAgICAgICBQYXJzZSB0aGUgb3V0cHV0IG9mIG5wbSB2aWV3IC0tanNvbjsgdGhlIGxhc3QgSlNPTiByZXN1bHQKLSAgICAgICAgaXMgYXNzdW1lZCB0byBiZSB0aGUgb25lIHRoYXQgd2UncmUgaW50ZXJlc3RlZCBpbi4KLSAgICAgICAgJycnCi0gICAgICAgIHBkYXRhID0ganNvbi5sb2FkcyhvdXRwdXQpOwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gcGRhdGFbLTFdCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHJldHVybiBwZGF0YQotCi0gICAgZGVmIF9nZXRkZXBlbmRlbmNpZXMoc2VsZiwgcGtnLCBkYXRhLCB2ZXJzaW9uLCBkLCB1ZCwgb3B0aW9uYWw9RmFsc2UsIGZldGNoZWRsaXN0PU5vbmUpOgotICAgICAgICBpZiBmZXRjaGVkbGlzdCBpcyBOb25lOgotICAgICAgICAgICAgZmV0Y2hlZGxpc3QgPSBbXQotICAgICAgICBwa2dmdWxsbmFtZSA9IHBrZwotICAgICAgICBpZiB2ZXJzaW9uICE9ICcqJyBhbmQgbm90ICcvJyBpbiB2ZXJzaW9uOgotICAgICAgICAgICAgcGtnZnVsbG5hbWUgKz0gIkAnJXMnIiAlIHZlcnNpb24KLSAgICAgICAgaWYgcGtnZnVsbG5hbWUgaW4gZmV0Y2hlZGxpc3Q6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBsb2dnZXIuZGVidWcoMiwgIkNhbGxpbmcgZ2V0ZGVwcyBvbiAlcyIgJSBwa2cpCi0gICAgICAgIGZldGNoY21kID0gIm5wbSB2aWV3ICVzIC0tanNvbiAtLXJlZ2lzdHJ5ICVzIiAlIChwa2dmdWxsbmFtZSwgdWQucmVnaXN0cnkpCi0gICAgICAgIG91dHB1dCA9IHJ1bmZldGNoY21kKGZldGNoY21kLCBkLCBUcnVlKQotICAgICAgICBwZGF0YSA9IHNlbGYuX3BhcnNlX3ZpZXcob3V0cHV0KQotICAgICAgICBpZiBub3QgcGRhdGE6Ci0gICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCJUaGUgY29tbWFuZCAnJXMnIHJldHVybmVkIG5vIG91dHB1dCIgJSBmZXRjaGNtZCkKLSAgICAgICAgaWYgb3B0aW9uYWw6Ci0gICAgICAgICAgICBwa2dfb3MgPSBwZGF0YS5nZXQoJ29zJywgTm9uZSkKLSAgICAgICAgICAgIGlmIHBrZ19vczoKLSAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwa2dfb3MsIGxpc3QpOgotICAgICAgICAgICAgICAgICAgICBwa2dfb3MgPSBbcGtnX29zXQotICAgICAgICAgICAgICAgIGJsYWNrbGlzdCA9IEZhbHNlCi0gICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gcGtnX29zOgotICAgICAgICAgICAgICAgICAgICBpZiBpdGVtLnN0YXJ0c3dpdGgoJyEnKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrbGlzdCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgaWYgKG5vdCBibGFja2xpc3QgYW5kICdsaW51eCcgbm90IGluIHBrZ19vcykgb3IgJyFsaW51eCcgaW4gcGtnX29zOgotICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMiwgIlNraXBwaW5nICVzIHNpbmNlIGl0J3MgaW5jb21wYXRpYmxlIHdpdGggTGludXgiICUgcGtnKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZmlsZW5hbWUgPSBzZWxmLl9ydW5wYWNrKHVkLCBkLCBwa2dmdWxsbmFtZSkKLSAgICAgICAgZGF0YVtwa2ddID0ge30KLSAgICAgICAgZGF0YVtwa2ddWyd0Z3onXSA9IGZpbGVuYW1lCi0gICAgICAgIGZldGNoZWRsaXN0LmFwcGVuZChwa2dmdWxsbmFtZSkKLQotICAgICAgICBkZXBlbmRlbmNpZXMgPSBwZGF0YS5nZXQoJ2RlcGVuZGVuY2llcycsIHt9KQotICAgICAgICBvcHRpb25hbERlcGVuZGVuY2llcyA9IHBkYXRhLmdldCgnb3B0aW9uYWxEZXBlbmRlbmNpZXMnLCB7fSkKLSAgICAgICAgZGVwZW5kZW5jaWVzLnVwZGF0ZShvcHRpb25hbERlcGVuZGVuY2llcykKLSAgICAgICAgZGVwc2ZvdW5kID0ge30KLSAgICAgICAgb3B0ZGVwc2ZvdW5kID0ge30KLSAgICAgICAgZGF0YVtwa2ddWydkZXBzJ10gPSB7fQotICAgICAgICBmb3IgZGVwIGluIGRlcGVuZGVuY2llczoKLSAgICAgICAgICAgIGlmIGRlcCBpbiBvcHRpb25hbERlcGVuZGVuY2llczoKLSAgICAgICAgICAgICAgICBvcHRkZXBzZm91bmRbZGVwXSA9IGRlcGVuZGVuY2llc1tkZXBdCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRlcHNmb3VuZFtkZXBdID0gZGVwZW5kZW5jaWVzW2RlcF0KLSAgICAgICAgZm9yIGRlcCwgdmVyc2lvbiBpbiBvcHRkZXBzZm91bmQuaXRlbXMoKToKLSAgICAgICAgICAgIHNlbGYuX2dldGRlcGVuZGVuY2llcyhkZXAsIGRhdGFbcGtnXVsnZGVwcyddLCB2ZXJzaW9uLCBkLCB1ZCwgb3B0aW9uYWw9VHJ1ZSwgZmV0Y2hlZGxpc3Q9ZmV0Y2hlZGxpc3QpCi0gICAgICAgIGZvciBkZXAsIHZlcnNpb24gaW4gZGVwc2ZvdW5kLml0ZW1zKCk6Ci0gICAgICAgICAgICBzZWxmLl9nZXRkZXBlbmRlbmNpZXMoZGVwLCBkYXRhW3BrZ11bJ2RlcHMnXSwgdmVyc2lvbiwgZCwgdWQsIGZldGNoZWRsaXN0PWZldGNoZWRsaXN0KQotCi0gICAgZGVmIF9nZXRzaHJpbmtlZGRlcGVuZGVuY2llcyhzZWxmLCBwa2csIGRhdGEsIHZlcnNpb24sIGQsIHVkLCBsb2NrZG93biwgbWFuaWZlc3QsIHRvcGxldmVsPVRydWUpOgotICAgICAgICBsb2dnZXIuZGVidWcoMiwgIk5QTSBzaHJpbmt3cmFwIGZpbGUgaXMgJXMiICUgZGF0YSkKLSAgICAgICAgaWYgdG9wbGV2ZWw6Ci0gICAgICAgICAgICBuYW1lID0gZGF0YS5nZXQoJ25hbWUnLCBOb25lKQotICAgICAgICAgICAgaWYgbmFtZSBhbmQgbmFtZSAhPSBwa2c6Ci0gICAgICAgICAgICAgICAgZm9yIG9iaiBpbiBkYXRhLmdldCgnZGVwZW5kZW5jaWVzJywgW10pOgotICAgICAgICAgICAgICAgICAgICBpZiBvYmogPT0gcGtnOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ2V0c2hyaW5rZWRkZXBlbmRlbmNpZXMob2JqLCBkYXRhWydkZXBlbmRlbmNpZXMnXVtvYmpdLCBkYXRhWydkZXBlbmRlbmNpZXMnXVtvYmpdWyd2ZXJzaW9uJ10sIGQsIHVkLCBsb2NrZG93biwgbWFuaWZlc3QsIEZhbHNlKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgcGtnbmFtZVdpdGhWZXJzaW9uID0gInt9QHt9Ii5mb3JtYXQocGtnLCB2ZXJzaW9uKQotICAgICAgICBsb2dnZXIuZGVidWcoMiwgIkdldCBkZXBlbmRlbmNpZXMgZm9yIHt9Ii5mb3JtYXQocGtnbmFtZVdpdGhWZXJzaW9uKSkKLSAgICAgICAgZmlsZW5hbWUgPSBzZWxmLl9ydW5wYWNrKHVkLCBkLCBwa2duYW1lV2l0aFZlcnNpb24pCi0gICAgICAgIG1hbmlmZXN0W3BrZ10gPSB7fQotICAgICAgICBtYW5pZmVzdFtwa2ddWyd0Z3onXSA9IGZpbGVuYW1lCi0gICAgICAgIG1hbmlmZXN0W3BrZ11bJ2RlcHMnXSA9IHt9Ci0KLSAgICAgICAgaWYgcGtnIGluIGxvY2tkb3duOgotICAgICAgICAgICAgc2hhMV9leHBlY3RlZCA9IGxvY2tkb3duW3BrZ11bdmVyc2lvbl0KLSAgICAgICAgICAgIHNoYTFfZGF0YSA9IGJiLnV0aWxzLnNoYTFfZmlsZSgibnBtLyVzLyVzIiAlICh1ZC5wa2duYW1lLCBtYW5pZmVzdFtwa2ddWyd0Z3onXSkpCi0gICAgICAgICAgICBpZiBzaGExX2V4cGVjdGVkICE9IHNoYTFfZGF0YToKLSAgICAgICAgICAgICAgICBtc2cgPSAiXG5GaWxlOiAnJXMnIGhhcyAlcyBjaGVja3N1bSAlcyB3aGVuICVzIHdhcyBleHBlY3RlZCIgJSAobWFuaWZlc3RbcGtnXVsndGd6J10sICdzaGExJywgc2hhMV9kYXRhLCBzaGExX2V4cGVjdGVkKQotICAgICAgICAgICAgICAgIHJhaXNlIENoZWNrc3VtRXJyb3IoJ0NoZWNrc3VtIG1pc21hdGNoISVzJyAlIG1zZykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiTm8gbG9ja2Rvd24gZGF0YSBmb3IgJXNAJXMiICUgKHBrZywgdmVyc2lvbikpCi0KLSAgICAgICAgaWYgJ2RlcGVuZGVuY2llcycgaW4gZGF0YToKLSAgICAgICAgICAgIGZvciBvYmogaW4gZGF0YVsnZGVwZW5kZW5jaWVzJ106Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJGb3VuZCBkZXAgaXMgJXMiICUgc3RyKG9iaikpCi0gICAgICAgICAgICAgICAgc2VsZi5fZ2V0c2hyaW5rZWRkZXBlbmRlbmNpZXMob2JqLCBkYXRhWydkZXBlbmRlbmNpZXMnXVtvYmpdLCBkYXRhWydkZXBlbmRlbmNpZXMnXVtvYmpdWyd2ZXJzaW9uJ10sIGQsIHVkLCBsb2NrZG93biwgbWFuaWZlc3RbcGtnXVsnZGVwcyddLCBGYWxzZSkKKyAgICBkZWYgdHJ5X21pcnJvcnMoc2VsZiwgZmV0Y2gsIHVkLCBkLCBtaXJyb3JzKToKKyAgICAgICAgIiIiVHJ5IHRvIHVzZSBhIG1pcnJvciIiIgorICAgICAgICBwcm94eV9tLCBwcm94eV91ZCwgcHJveHlfZCA9IHNlbGYuX2dldF9wcm94eV9tZXRob2QodWQsIGQpCisgICAgICAgIHJldHVybiBwcm94eV9tLnRyeV9taXJyb3JzKGZldGNoLCBwcm94eV91ZCwgcHJveHlfZCwgbWlycm9ycykKIAogICAgIGRlZiBkb3dubG9hZChzZWxmLCB1ZCwgZCk6CiAgICAgICAgICIiIkZldGNoIHVybCIiIgotICAgICAgICBqc29uZGVwb2JqID0ge30KLSAgICAgICAgc2hyaW5rb2JqID0ge30KLSAgICAgICAgbG9ja2Rvd24gPSB7fQorICAgICAgICBzZWxmLl9zZXR1cF9wcm94eSh1ZCwgZCkKKyAgICAgICAgdWQucHJveHkuZG93bmxvYWQoKQogCi0gICAgICAgIGlmIG5vdCBvcy5saXN0ZGlyKHVkLnBrZ2RhdGFkaXIpIGFuZCBvcy5wYXRoLmV4aXN0cyh1ZC5mdWxsbWlycm9yKToKLSAgICAgICAgICAgIGRlc3QgPSBkLmdldFZhcigiRExfRElSIikKLSAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihkZXN0KQotICAgICAgICAgICAgcnVuZmV0Y2hjbWQoInRhciAteEpmICVzIiAlICh1ZC5mdWxsbWlycm9yKSwgZCwgd29ya2Rpcj1kZXN0KQotICAgICAgICAgICAgcmV0dXJuCisgICAgZGVmIHVucGFjayhzZWxmLCB1ZCwgcm9vdGRpciwgZCk6CisgICAgICAgICIiIlVucGFjayB0aGUgZG93bmxvYWRlZCBhcmNoaXZlIiIiCisgICAgICAgIGRlc3RzdWZmaXggPSB1ZC5wYXJtLmdldCgiZGVzdHN1ZmZpeCIsICJucG0iKQorICAgICAgICBkZXN0ZGlyID0gb3MucGF0aC5qb2luKHJvb3RkaXIsIGRlc3RzdWZmaXgpCisgICAgICAgIG5wbV91bnBhY2sodWQubG9jYWxwYXRoLCBkZXN0ZGlyLCBkKQogCi0gICAgICAgIGlmIHVkLnBhcm0uZ2V0KCJub3ZlcmlmeSIsIE5vbmUpICE9ICcxJzoKLSAgICAgICAgICAgIHNod3JmID0gZC5nZXRWYXIoJ05QTV9TSFJJTktXUkFQJykKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiTlBNIHNocmlua3dyYXAgZmlsZSBpcyAlcyIgJSBzaHdyZikKLSAgICAgICAgICAgIGlmIHNod3JmOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHNod3JmKSBhcyBkYXRhZmlsZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNocmlua29iaiA9IGpzb24ubG9hZChkYXRhZmlsZSkKLSAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEZldGNoRXJyb3IoJ0Vycm9yIGxvYWRpbmcgTlBNX1NIUklOS1dSQVAgZmlsZSAiJXMiIGZvciAlczogJXMnICUgKHNod3JmLCB1ZC5wa2duYW1lLCBzdHIoZSkpKQotICAgICAgICAgICAgZWxpZiBub3QgdWQuaWdub3JlX2NoZWNrc3VtczoKLSAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygnTWlzc2luZyBzaHJpbmt3cmFwIGZpbGUgaW4gTlBNX1NIUklOS1dSQVAgZm9yICVzLCB0aGlzIHdpbGwgbGVhZCB0byB1bnJlbGlhYmxlIGJ1aWxkcyEnICUgdWQucGtnbmFtZSkKLSAgICAgICAgICAgIGxja2RmID0gZC5nZXRWYXIoJ05QTV9MT0NLRE9XTicpCi0gICAgICAgICAgICBsb2dnZXIuZGVidWcoMiwgIk5QTSBsb2NrZG93biBmaWxlIGlzICVzIiAlIGxja2RmKQotICAgICAgICAgICAgaWYgbGNrZGY6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4obGNrZGYpIGFzIGRhdGFmaWxlOgotICAgICAgICAgICAgICAgICAgICAgICAgbG9ja2Rvd24gPSBqc29uLmxvYWQoZGF0YWZpbGUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCdFcnJvciBsb2FkaW5nIE5QTV9MT0NLRE9XTiBmaWxlICIlcyIgZm9yICVzOiAlcycgJSAobGNrZGYsIHVkLnBrZ25hbWUsIHN0cihlKSkpCi0gICAgICAgICAgICBlbGlmIG5vdCB1ZC5pZ25vcmVfY2hlY2tzdW1zOgotICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdNaXNzaW5nIGxvY2tkb3duIGZpbGUgaW4gTlBNX0xPQ0tET1dOIGZvciAlcywgdGhpcyB3aWxsIGxlYWQgdG8gdW5yZXByb2R1Y2libGUgYnVpbGRzIScgJSB1ZC5wa2duYW1lKQorICAgIGRlZiBjbGVhbihzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIkNsZWFuIGFueSBleGlzdGluZyBmdWxsIG9yIHBhcnRpYWwgZG93bmxvYWQiIiIKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHModWQucmVzb2x2ZWZpbGUpOgorICAgICAgICAgICAgc2VsZi5fc2V0dXBfcHJveHkodWQsIGQpCisgICAgICAgICAgICB1ZC5wcm94eS5jbGVhbigpCisgICAgICAgICAgICBiYi51dGlscy5yZW1vdmUodWQucmVzb2x2ZWZpbGUpCiAKLSAgICAgICAgaWYgKCduYW1lJyBub3QgaW4gc2hyaW5rb2JqKToKLSAgICAgICAgICAgIHNlbGYuX2dldGRlcGVuZGVuY2llcyh1ZC5wa2duYW1lLCBqc29uZGVwb2JqLCB1ZC52ZXJzaW9uLCBkLCB1ZCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX2dldHNocmlua2VkZGVwZW5kZW5jaWVzKHVkLnBrZ25hbWUsIHNocmlua29iaiwgdWQudmVyc2lvbiwgZCwgdWQsIGxvY2tkb3duLCBqc29uZGVwb2JqKQotCi0gICAgICAgIHdpdGggb3Blbih1ZC5sb2NhbHBhdGgsICd3JykgYXMgb3V0ZmlsZToKLSAgICAgICAgICAgIGpzb24uZHVtcChqc29uZGVwb2JqLCBvdXRmaWxlKQotCi0gICAgZGVmIGJ1aWxkX21pcnJvcl9kYXRhKHNlbGYsIHVkLCBkKToKLSAgICAgICAgIyBHZW5lcmF0ZSBhIG1pcnJvciB0YXJiYWxsIGlmIG5lZWRlZAotICAgICAgICBpZiB1ZC53cml0ZV90YXJiYWxscyBhbmQgbm90IG9zLnBhdGguZXhpc3RzKHVkLmZ1bGxtaXJyb3IpOgotICAgICAgICAgICAgIyBpdCdzIHBvc3NpYmxlIHRoYXQgdGhpcyBzeW1saW5rIHBvaW50cyB0byByZWFkLW9ubHkgZmlsZXN5c3RlbSB3aXRoIFBSRU1JUlJPUgotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsodWQuZnVsbG1pcnJvcik6Ci0gICAgICAgICAgICAgICAgb3MudW5saW5rKHVkLmZ1bGxtaXJyb3IpCi0KLSAgICAgICAgICAgIGRsZGlyID0gZC5nZXRWYXIoIkRMX0RJUiIpCi0gICAgICAgICAgICBsb2dnZXIuaW5mbygiQ3JlYXRpbmcgdGFyYmFsbCBvZiBucG0gZGF0YSIpCi0gICAgICAgICAgICBydW5mZXRjaGNtZCgidGFyIC1jSmYgJXMgbnBtLyVzIG5wbS8lcyIgJSAodWQuZnVsbG1pcnJvciwgdWQuYmJucG1tYW5pZmVzdCwgdWQucGtnbmFtZSksIGQsCi0gICAgICAgICAgICAgICAgICAgICAgICB3b3JrZGlyPWRsZGlyKQotICAgICAgICAgICAgcnVuZmV0Y2hjbWQoInRvdWNoICVzLmRvbmUiICUgKHVkLmZ1bGxtaXJyb3IpLCBkLCB3b3JrZGlyPWRsZGlyKQorICAgIGRlZiBkb25lKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiSXMgdGhlIGRvd25sb2FkIGRvbmUgPyIiIgorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModWQucmVzb2x2ZWZpbGUpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHByb3h5X20sIHByb3h5X3VkLCBwcm94eV9kID0gc2VsZi5fZ2V0X3Byb3h5X21ldGhvZCh1ZCwgZCkKKyAgICAgICAgcmV0dXJuIHByb3h5X20uZG9uZShwcm94eV91ZCwgcHJveHlfZCkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL25wbXN3LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvbnBtc3cucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMzNTExZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL25wbXN3LnB5CkBAIC0wLDAgKzEsMjU1IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBTYXZvaXItRmFpcmUgTGludXgKKyMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQorIworIiIiCitCaXRCYWtlICdGZXRjaCcgbnBtIHNocmlua3dyYXAgaW1wbGVtZW50YXRpb24KKworbnBtIGZldGNoZXIgc3VwcG9ydCB0aGUgU1JDX1VSSSB3aXRoIGZvcm1hdCBvZjoKK1NSQ19VUkkgPSAibnBtc3c6Ly9zb21lLnJlZ2lzdHJ5LnVybDtPcHRpb25BPXh4eDtPcHRpb25CPXh4eDsuLi4iCisKK1N1cHBvcnRlZCBTUkNfVVJJIG9wdGlvbnMgYXJlOgorCistIGRldgorICAgU2V0IHRvIDEgdG8gYWxzbyBpbnN0YWxsIGRldkRlcGVuZGVuY2llcy4KKworLSBkZXN0c3VmZml4CisgICAgU3BlY2lmaWVzIHRoZSBkaXJlY3RvcnkgdG8gdXNlIHRvIHVucGFjayB0aGUgZGVwZW5kZW5jaWVzIChkZWZhdWx0OiAke1N9KS4KKyIiIgorCitpbXBvcnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBiYgorZnJvbSBiYi5mZXRjaDIgaW1wb3J0IEZldGNoCitmcm9tIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hNZXRob2QKK2Zyb20gYmIuZmV0Y2gyIGltcG9ydCBQYXJhbWV0ZXJFcnJvcgorZnJvbSBiYi5mZXRjaDIgaW1wb3J0IFVSSQorZnJvbSBiYi5mZXRjaDIubnBtIGltcG9ydCBucG1faW50ZWdyaXR5Citmcm9tIGJiLmZldGNoMi5ucG0gaW1wb3J0IG5wbV9sb2NhbGZpbGUKK2Zyb20gYmIuZmV0Y2gyLm5wbSBpbXBvcnQgbnBtX3VucGFjaworZnJvbSBiYi51dGlscyBpbXBvcnQgaXNfc2VtdmVyCisKK2RlZiBmb3JlYWNoX2RlcGVuZGVuY2llcyhzaHJpbmt3cmFwLCBjYWxsYmFjaz1Ob25lLCBkZXY9RmFsc2UpOgorICAgICIiIgorICAgICAgICBSdW4gYSBjYWxsYmFjayBmb3IgZWFjaCBkZXBlbmRlbmNpZXMgb2YgYSBzaHJpbmt3cmFwIGZpbGUuCisgICAgICAgIFRoZSBjYWxsYmFjayBpcyB1c2luZyB0aGUgZm9ybWF0OgorICAgICAgICAgICAgY2FsbGJhY2sobmFtZSwgcGFyYW1zLCBkZXB0cmVlKQorICAgICAgICB3aXRoOgorICAgICAgICAgICAgbmFtZSA9IHRoZSBwYWNrYWdlIG5hbWUgKHN0cmluZykKKyAgICAgICAgICAgIHBhcmFtcyA9IHRoZSBwYWNrYWdlIHBhcmFtZXRlcnMgKGRpY3Rpb25hcnkpCisgICAgICAgICAgICBkZXB0cmVlID0gdGhlIHBhY2thZ2UgZGVwZW5kZW5jeSB0cmVlIChhcnJheSBvZiBzdHJpbmdzKQorICAgICIiIgorICAgIGRlZiBfd2Fsa19kZXBzKGRlcHMsIGRlcHRyZWUpOgorICAgICAgICBmb3IgbmFtZSBpbiBkZXBzOgorICAgICAgICAgICAgc3VidHJlZSA9IFsqZGVwdHJlZSwgbmFtZV0KKyAgICAgICAgICAgIF93YWxrX2RlcHMoZGVwc1tuYW1lXS5nZXQoImRlcGVuZGVuY2llcyIsIHt9KSwgc3VidHJlZSkKKyAgICAgICAgICAgIGlmIGNhbGxiYWNrIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIGRlcHNbbmFtZV0uZ2V0KCJkZXYiLCBGYWxzZSkgYW5kIG5vdCBkZXY6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgZWxpZiBkZXBzW25hbWVdLmdldCgiYnVuZGxlZCIsIEZhbHNlKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhuYW1lLCBkZXBzW25hbWVdLCBzdWJ0cmVlKQorCisgICAgX3dhbGtfZGVwcyhzaHJpbmt3cmFwLmdldCgiZGVwZW5kZW5jaWVzIiwge30pLCBbXSkKKworY2xhc3MgTnBtU2hyaW5rV3JhcChGZXRjaE1ldGhvZCk6CisgICAgIiIiQ2xhc3MgdG8gZmV0Y2ggYWxsIHBhY2thZ2UgZnJvbSBhIHNocmlua3dyYXAgZmlsZSIiIgorCisgICAgZGVmIHN1cHBvcnRzKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiQ2hlY2sgaWYgYSBnaXZlbiB1cmwgY2FuIGJlIGZldGNoZWQgd2l0aCBucG1zdyIiIgorICAgICAgICByZXR1cm4gdWQudHlwZSBpbiBbIm5wbXN3Il0KKworICAgIGRlZiB1cmxkYXRhX2luaXQoc2VsZiwgdWQsIGQpOgorICAgICAgICAiIiJJbml0IG5wbXN3IHNwZWNpZmljIHZhcmlhYmxlcyB3aXRoaW4gdXJsIGRhdGEiIiIKKworICAgICAgICAjIEdldCB0aGUgJ3Nocmlua3dyYXAnIHBhcmFtZXRlcgorICAgICAgICB1ZC5zaHJpbmt3cmFwX2ZpbGUgPSByZS5zdWIociJebnBtc3c6Ly8iLCAiIiwgdWQudXJsLnNwbGl0KCI7IilbMF0pCisKKyAgICAgICAgIyBHZXQgdGhlICdkZXYnIHBhcmFtZXRlcgorICAgICAgICB1ZC5kZXYgPSBiYi51dGlscy50b19ib29sZWFuKHVkLnBhcm0uZ2V0KCJkZXYiKSwgRmFsc2UpCisKKyAgICAgICAgIyBSZXNvbHZlIHRoZSBkZXBlbmRlbmNpZXMKKyAgICAgICAgdWQuZGVwcyA9IFtdCisKKyAgICAgICAgZGVmIF9yZXNvbHZlX2RlcGVuZGVuY3kobmFtZSwgcGFyYW1zLCBkZXB0cmVlKToKKyAgICAgICAgICAgIHVybCA9IE5vbmUKKyAgICAgICAgICAgIGxvY2FscGF0aCA9IE5vbmUKKyAgICAgICAgICAgIGV4dHJhcGF0aHMgPSBbXQorICAgICAgICAgICAgZGVzdHN1YmRpcnMgPSBbb3MucGF0aC5qb2luKCJub2RlX21vZHVsZXMiLCBkZXApIGZvciBkZXAgaW4gZGVwdHJlZV0KKyAgICAgICAgICAgIGRlc3RzdWZmaXggPSBvcy5wYXRoLmpvaW4oKmRlc3RzdWJkaXJzKQorCisgICAgICAgICAgICBpbnRlZ3JpdHkgPSBwYXJhbXMuZ2V0KCJpbnRlZ3JpdHkiLCBOb25lKQorICAgICAgICAgICAgcmVzb2x2ZWQgPSBwYXJhbXMuZ2V0KCJyZXNvbHZlZCIsIE5vbmUpCisgICAgICAgICAgICB2ZXJzaW9uID0gcGFyYW1zLmdldCgidmVyc2lvbiIsIE5vbmUpCisKKyAgICAgICAgICAgICMgSGFuZGxlIHJlZ2lzdHJ5IHNvdXJjZXMKKyAgICAgICAgICAgIGlmIGlzX3NlbXZlcih2ZXJzaW9uKSBhbmQgcmVzb2x2ZWQgYW5kIGludGVncml0eToKKyAgICAgICAgICAgICAgICBsb2NhbGZpbGUgPSBucG1fbG9jYWxmaWxlKG5hbWUsIHZlcnNpb24pCisKKyAgICAgICAgICAgICAgICB1cmkgPSBVUkkocmVzb2x2ZWQpCisgICAgICAgICAgICAgICAgdXJpLnBhcmFtc1siZG93bmxvYWRmaWxlbmFtZSJdID0gbG9jYWxmaWxlCisKKyAgICAgICAgICAgICAgICBjaGVja3N1bV9uYW1lLCBjaGVja3N1bV9leHBlY3RlZCA9IG5wbV9pbnRlZ3JpdHkoaW50ZWdyaXR5KQorICAgICAgICAgICAgICAgIHVyaS5wYXJhbXNbY2hlY2tzdW1fbmFtZV0gPSBjaGVja3N1bV9leHBlY3RlZAorCisgICAgICAgICAgICAgICAgdXJsID0gc3RyKHVyaSkKKworICAgICAgICAgICAgICAgIGxvY2FscGF0aCA9IG9zLnBhdGguam9pbihkLmdldFZhcigiRExfRElSIiksIGxvY2FsZmlsZSkKKworICAgICAgICAgICAgICAgICMgQ3JlYXRlIGEgcmVzb2x2ZSBmaWxlIHRvIG1pbWljIHRoZSBucG0gZmV0Y2hlciBhbmQgYWxsb3cKKyAgICAgICAgICAgICAgICAjIHJlLXVzYWJpbGl0eSBvZiB0aGUgZG93bmxvYWRlZCBmaWxlLgorICAgICAgICAgICAgICAgIHJlc29sdmVmaWxlID0gbG9jYWxwYXRoICsgIi5yZXNvbHZlZCIKKworICAgICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUocmVzb2x2ZWZpbGUpKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihyZXNvbHZlZmlsZSwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKHVybCkKKworICAgICAgICAgICAgICAgIGV4dHJhcGF0aHMuYXBwZW5kKHJlc29sdmVmaWxlKQorCisgICAgICAgICAgICAjIEhhbmRsZSBodHRwIHRhcmJhbGwgc291cmNlcworICAgICAgICAgICAgZWxpZiB2ZXJzaW9uLnN0YXJ0c3dpdGgoImh0dHAiKSBhbmQgaW50ZWdyaXR5OgorICAgICAgICAgICAgICAgIGxvY2FsZmlsZSA9IG9zLnBhdGguam9pbigibnBtMiIsIG9zLnBhdGguYmFzZW5hbWUodmVyc2lvbikpCisKKyAgICAgICAgICAgICAgICB1cmkgPSBVUkkodmVyc2lvbikKKyAgICAgICAgICAgICAgICB1cmkucGFyYW1zWyJkb3dubG9hZGZpbGVuYW1lIl0gPSBsb2NhbGZpbGUKKworICAgICAgICAgICAgICAgIGNoZWNrc3VtX25hbWUsIGNoZWNrc3VtX2V4cGVjdGVkID0gbnBtX2ludGVncml0eShpbnRlZ3JpdHkpCisgICAgICAgICAgICAgICAgdXJpLnBhcmFtc1tjaGVja3N1bV9uYW1lXSA9IGNoZWNrc3VtX2V4cGVjdGVkCisKKyAgICAgICAgICAgICAgICB1cmwgPSBzdHIodXJpKQorCisgICAgICAgICAgICAgICAgbG9jYWxwYXRoID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCJETF9ESVIiKSwgbG9jYWxmaWxlKQorCisgICAgICAgICAgICAjIEhhbmRsZSBnaXQgc291cmNlcworICAgICAgICAgICAgZWxpZiB2ZXJzaW9uLnN0YXJ0c3dpdGgoImdpdCIpOgorICAgICAgICAgICAgICAgIHJlZ2V4ID0gcmUuY29tcGlsZShyIiIiCisgICAgICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgZ2l0XCsKKyAgICAgICAgICAgICAgICAgICAgKD9QPHByb3RvY29sPlthLXpdKykKKyAgICAgICAgICAgICAgICAgICAgOi8vCisgICAgICAgICAgICAgICAgICAgICg/UDx1cmw+W14jXSspCisgICAgICAgICAgICAgICAgICAgIFwjCisgICAgICAgICAgICAgICAgICAgICg/UDxyZXY+WzAtOWEtZl0rKQorICAgICAgICAgICAgICAgICAgICAkCisgICAgICAgICAgICAgICAgICAgICIiIiwgcmUuVkVSQk9TRSkKKworICAgICAgICAgICAgICAgIG1hdGNoID0gcmVnZXgubWF0Y2godmVyc2lvbikKKworICAgICAgICAgICAgICAgIGlmIG5vdCBtYXRjaDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUGFyYW1ldGVyRXJyb3IoIkludmFsaWQgZ2l0IHVybDogJXMiICUgdmVyc2lvbiwgdWQudXJsKQorCisgICAgICAgICAgICAgICAgZ3JvdXBzID0gbWF0Y2guZ3JvdXBkaWN0KCkKKworICAgICAgICAgICAgICAgIHVyaSA9IFVSSSgiZ2l0Oi8vIiArIHN0cihncm91cHNbInVybCJdKSkKKyAgICAgICAgICAgICAgICB1cmkucGFyYW1zWyJwcm90b2NvbCJdID0gc3RyKGdyb3Vwc1sicHJvdG9jb2wiXSkKKyAgICAgICAgICAgICAgICB1cmkucGFyYW1zWyJyZXYiXSA9IHN0cihncm91cHNbInJldiJdKQorICAgICAgICAgICAgICAgIHVyaS5wYXJhbXNbImRlc3RzdWZmaXgiXSA9IGRlc3RzdWZmaXgKKworICAgICAgICAgICAgICAgIHVybCA9IHN0cih1cmkpCisKKyAgICAgICAgICAgICMgbG9jYWwgdGFyYmFsbCBzb3VyY2VzIGFuZCBsb2NhbCBsaW5rIHNvdXJjZXMgYXJlIHVuc3VwcG9ydGVkCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFBhcmFtZXRlckVycm9yKCJVbnN1cHBvcnRlZCBkZXBlbmRlbmN5OiAlcyIgJSBuYW1lLCB1ZC51cmwpCisKKyAgICAgICAgICAgIHVkLmRlcHMuYXBwZW5kKHsKKyAgICAgICAgICAgICAgICAidXJsIjogdXJsLAorICAgICAgICAgICAgICAgICJsb2NhbHBhdGgiOiBsb2NhbHBhdGgsCisgICAgICAgICAgICAgICAgImV4dHJhcGF0aHMiOiBleHRyYXBhdGhzLAorICAgICAgICAgICAgICAgICJkZXN0c3VmZml4IjogZGVzdHN1ZmZpeCwKKyAgICAgICAgICAgIH0pCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBvcGVuKHVkLnNocmlua3dyYXBfZmlsZSwgInIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNocmlua3dyYXAgPSBqc29uLmxvYWQoZikKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmFpc2UgUGFyYW1ldGVyRXJyb3IoIkludmFsaWQgc2hyaW5rd3JhcCBmaWxlOiAlcyIgJSBzdHIoZSksIHVkLnVybCkKKworICAgICAgICBmb3JlYWNoX2RlcGVuZGVuY2llcyhzaHJpbmt3cmFwLCBfcmVzb2x2ZV9kZXBlbmRlbmN5LCB1ZC5kZXYpCisKKyAgICAgICAgIyBBdm9pZCBjb25mbGljdHMgYmV0d2VlbiB0aGUgZW52aXJvbm1lbnQgZGF0YSBhbmQ6CisgICAgICAgICMgLSB0aGUgcHJveHkgdXJsIHJldmlzaW9uCisgICAgICAgICMgLSB0aGUgcHJveHkgdXJsIGNoZWNrc3VtCisgICAgICAgIGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKKyAgICAgICAgZGF0YS5kZWxWYXIoIlNSQ1JFViIpCisgICAgICAgIGRhdGEuZGVsVmFyRmxhZ3MoIlNSQ19VUkkiKQorCisgICAgICAgICMgVGhpcyBmZXRjaGVyIHJlc29sdmVzIG11bHRpcGxlIFVSSXMgZnJvbSBhIHNocmlua3dyYXAgZmlsZSBhbmQgdGhlbgorICAgICAgICAjIGZvcndhcmRzIGl0IHRvIGEgcHJveHkgZmV0Y2hlci4gVGhlIG1hbmFnZW1lbnQgb2YgdGhlIGRvbmVzdGFtcCBmaWxlLAorICAgICAgICAjIHRoZSBsb2NrZmlsZSBhbmQgdGhlIGNoZWNrc3VtcyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBwcm94eSBmZXRjaGVyLgorICAgICAgICB1ZC5wcm94eSA9IEZldGNoKFtkZXBbInVybCJdIGZvciBkZXAgaW4gdWQuZGVwc10sIGRhdGEpCisgICAgICAgIHVkLm5lZWRkb25lc3RhbXAgPSBGYWxzZQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfZm9yZWFjaF9wcm94eV9tZXRob2QodWQsIGhhbmRsZSk6CisgICAgICAgIHJldHVybnMgPSBbXQorICAgICAgICBmb3IgcHJveHlfdXJsIGluIHVkLnByb3h5LnVybHM6CisgICAgICAgICAgICBwcm94eV91ZCA9IHVkLnByb3h5LnVkW3Byb3h5X3VybF0KKyAgICAgICAgICAgIHByb3h5X2QgPSB1ZC5wcm94eS5kCisgICAgICAgICAgICBwcm94eV91ZC5zZXR1cF9sb2NhbHBhdGgocHJveHlfZCkKKyAgICAgICAgICAgIHJldHVybnMuYXBwZW5kKGhhbmRsZShwcm94eV91ZC5tZXRob2QsIHByb3h5X3VkLCBwcm94eV9kKSkKKyAgICAgICAgcmV0dXJuIHJldHVybnMKKworICAgIGRlZiB2ZXJpZnlfZG9uZXN0YW1wKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiVmVyaWZ5IHRoZSBkb25lc3RhbXAgZmlsZSIiIgorICAgICAgICBkZWYgX2hhbmRsZShtLCB1ZCwgZCk6CisgICAgICAgICAgICByZXR1cm4gbS52ZXJpZnlfZG9uZXN0YW1wKHVkLCBkKQorICAgICAgICByZXR1cm4gYWxsKHNlbGYuX2ZvcmVhY2hfcHJveHlfbWV0aG9kKHVkLCBfaGFuZGxlKSkKKworICAgIGRlZiB1cGRhdGVfZG9uZXN0YW1wKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiVXBkYXRlIHRoZSBkb25lc3RhbXAgZmlsZSIiIgorICAgICAgICBkZWYgX2hhbmRsZShtLCB1ZCwgZCk6CisgICAgICAgICAgICBtLnVwZGF0ZV9kb25lc3RhbXAodWQsIGQpCisgICAgICAgIHNlbGYuX2ZvcmVhY2hfcHJveHlfbWV0aG9kKHVkLCBfaGFuZGxlKQorCisgICAgZGVmIG5lZWRfdXBkYXRlKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiRm9yY2UgYSBmZXRjaCwgZXZlbiBpZiBsb2NhbHBhdGggZXhpc3RzID8iIiIKKyAgICAgICAgZGVmIF9oYW5kbGUobSwgdWQsIGQpOgorICAgICAgICAgICAgcmV0dXJuIG0ubmVlZF91cGRhdGUodWQsIGQpCisgICAgICAgIHJldHVybiBhbGwoc2VsZi5fZm9yZWFjaF9wcm94eV9tZXRob2QodWQsIF9oYW5kbGUpKQorCisgICAgZGVmIHRyeV9taXJyb3JzKHNlbGYsIGZldGNoLCB1ZCwgZCwgbWlycm9ycyk6CisgICAgICAgICIiIlRyeSB0byB1c2UgYSBtaXJyb3IiIiIKKyAgICAgICAgZGVmIF9oYW5kbGUobSwgdWQsIGQpOgorICAgICAgICAgICAgcmV0dXJuIG0udHJ5X21pcnJvcnMoZmV0Y2gsIHVkLCBkLCBtaXJyb3JzKQorICAgICAgICByZXR1cm4gYWxsKHNlbGYuX2ZvcmVhY2hfcHJveHlfbWV0aG9kKHVkLCBfaGFuZGxlKSkKKworICAgIGRlZiBkb3dubG9hZChzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIkZldGNoIHVybCIiIgorICAgICAgICB1ZC5wcm94eS5kb3dubG9hZCgpCisKKyAgICBkZWYgdW5wYWNrKHNlbGYsIHVkLCByb290ZGlyLCBkKToKKyAgICAgICAgIiIiVW5wYWNrIHRoZSBkb3dubG9hZGVkIGRlcGVuZGVuY2llcyIiIgorICAgICAgICBkZXN0ZGlyID0gZC5nZXRWYXIoIlMiKQorICAgICAgICBkZXN0c3VmZml4ID0gdWQucGFybS5nZXQoImRlc3RzdWZmaXgiKQorICAgICAgICBpZiBkZXN0c3VmZml4OgorICAgICAgICAgICAgZGVzdGRpciA9IG9zLnBhdGguam9pbihyb290ZGlyLCBkZXN0c3VmZml4KQorCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihkZXN0ZGlyKQorICAgICAgICBiYi51dGlscy5jb3B5ZmlsZSh1ZC5zaHJpbmt3cmFwX2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihkZXN0ZGlyLCAibnBtLXNocmlua3dyYXAuanNvbiIpKQorCisgICAgICAgIGF1dG8gPSBbZGVwWyJ1cmwiXSBmb3IgZGVwIGluIHVkLmRlcHMgaWYgbm90IGRlcFsibG9jYWxwYXRoIl1dCisgICAgICAgIG1hbnVhbCA9IFtkZXAgZm9yIGRlcCBpbiB1ZC5kZXBzIGlmIGRlcFsibG9jYWxwYXRoIl1dCisKKyAgICAgICAgaWYgYXV0bzoKKyAgICAgICAgICAgIHVkLnByb3h5LnVucGFjayhkZXN0ZGlyLCBhdXRvKQorCisgICAgICAgIGZvciBkZXAgaW4gbWFudWFsOgorICAgICAgICAgICAgZGVwZGVzdGRpciA9IG9zLnBhdGguam9pbihkZXN0ZGlyLCBkZXBbImRlc3RzdWZmaXgiXSkKKyAgICAgICAgICAgIG5wbV91bnBhY2soZGVwWyJsb2NhbHBhdGgiXSwgZGVwZGVzdGRpciwgZCkKKworICAgIGRlZiBjbGVhbihzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIkNsZWFuIGFueSBleGlzdGluZyBmdWxsIG9yIHBhcnRpYWwgZG93bmxvYWQiIiIKKyAgICAgICAgdWQucHJveHkuY2xlYW4oKQorCisgICAgICAgICMgQ2xlYW4gZXh0cmEgZmlsZXMKKyAgICAgICAgZm9yIGRlcCBpbiB1ZC5kZXBzOgorICAgICAgICAgICAgZm9yIHBhdGggaW4gZGVwWyJleHRyYXBhdGhzIl06CisgICAgICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKHBhdGgpCisKKyAgICBkZWYgZG9uZShzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIklzIHRoZSBkb3dubG9hZCBkb25lID8iIiIKKyAgICAgICAgZGVmIF9oYW5kbGUobSwgdWQsIGQpOgorICAgICAgICAgICAgcmV0dXJuIG0uZG9uZSh1ZCwgZCkKKyAgICAgICAgcmV0dXJuIGFsbChzZWxmLl9mb3JlYWNoX3Byb3h5X21ldGhvZCh1ZCwgX2hhbmRsZSkpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9vc2MucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9vc2MucHkKaW5kZXggM2U1NjcxNS4uOGYwOTFlZiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvb3NjLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL29zYy5weQpAQCAtNyw4ICs3LDYgQEAKIAogIiIiCiAKLWltcG9ydCAgb3MKLWltcG9ydCAgc3lzCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0ICBiYgogZnJvbSAgICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kCkBAIC00Myw3ICs0MSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwdiA9IGQuZ2V0VmFyKCJQViIsIEZhbHNlKQogICAgICAgICAgICAgcmV2ID0gYmIuZmV0Y2gyLnNyY3Jldl9pbnRlcm5hbF9oZWxwZXIodWQsIGQpCi0gICAgICAgICAgICBpZiByZXYgYW5kIHJldiAhPSBUcnVlOgorICAgICAgICAgICAgaWYgcmV2OgogICAgICAgICAgICAgICAgIHVkLnJldmlzaW9uID0gcmV2CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHVkLnJldmlzaW9uID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3BlcmZvcmNlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvcGVyZm9yY2UucHkKaW5kZXggNTRkMDAxZS4uZjU3YzJhNCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvcGVyZm9yY2UucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvcGVyZm9yY2UucHkKQEAgLTExLDcgKzExLDYgQEAKICMgQmFzZWQgb24gZnVuY3Rpb25zIGZyb20gdGhlIGJhc2UgYmIgbW9kdWxlLCBDb3B5cmlnaHQgMjAwMyBIb2xnZXIgU2NodXJpZwogCiBpbXBvcnQgb3MKLWltcG9ydCBsb2dnaW5nCiBpbXBvcnQgYmIKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kCiBmcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBGZXRjaEVycm9yCkBAIC0xMDUsNyArMTA0LDcgQEAKICAgICAgICAgaWYgY29tbWFuZCA9PSAnY2hhbmdlcyc6CiAgICAgICAgICAgICBwNGNtZCA9ICclcyVzIGNoYW5nZXMgLW0gMSAvLyVzJyAlICh1ZC5iYXNlY21kLCBwNG9wdCwgcGF0aG5yZXYpCiAgICAgICAgIGVsaWYgY29tbWFuZCA9PSAncHJpbnQnOgotICAgICAgICAgICAgaWYgZGVwb3RfZmlsZW5hbWUgIT0gTm9uZToKKyAgICAgICAgICAgIGlmIGRlcG90X2ZpbGVuYW1lIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHA0Y21kID0gJyVzJXMgcHJpbnQgLW8gInA0LyVzIiAiJXMiJyAlICh1ZC5iYXNlY21kLCBwNG9wdCwgZmlsZW5hbWUsIGRlcG90X2ZpbGVuYW1lKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCdObyBkZXBvdCBmaWxlIG5hbWUgcHJvdmlkZWQgdG8gcDQgJXMnICUgY29tbWFuZCwgdWQudXJsKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvc3NoLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvc3NoLnB5CmluZGV4IGY1YmUwNjAuLjVlOTgyZWMgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3NzaC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9zc2gucHkKQEAgLTMyLDggKzMyLDYgQEAKIAogaW1wb3J0IHJlLCBvcwogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hNZXRob2QKLWZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoRXJyb3IKLWZyb20gICBiYi5mZXRjaDIgaW1wb3J0IGxvZ2dlcgogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgcnVuZmV0Y2hjbWQKIAogCkBAIC02MCw3ICs1OCw3IEBACiAgICAgJycnQ2xhc3MgdG8gZmV0Y2ggYSBtb2R1bGUgb3IgbW9kdWxlcyB2aWEgU2VjdXJlIFNoZWxsJycnCiAKICAgICBkZWYgc3VwcG9ydHMoc2VsZiwgdXJsZGF0YSwgZCk6Ci0gICAgICAgIHJldHVybiBfX3BhdHRlcm5fXy5tYXRjaCh1cmxkYXRhLnVybCkgIT0gTm9uZQorICAgICAgICByZXR1cm4gX19wYXR0ZXJuX18ubWF0Y2godXJsZGF0YS51cmwpIGlzIG5vdCBOb25lCiAKICAgICBkZWYgc3VwcG9ydHNfY2hlY2tzdW0oc2VsZiwgdXJsZGF0YSk6CiAgICAgICAgIHJldHVybiBGYWxzZQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvc3ZuLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvc3ZuLnB5CmluZGV4IDk2ZDY2NmIuLjk3MWE1YWQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3N2bi5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9zdm4ucHkKQEAgLTExLDggKzExLDYgQEAKICMgQmFzZWQgb24gZnVuY3Rpb25zIGZyb20gdGhlIGJhc2UgYmIgbW9kdWxlLCBDb3B5cmlnaHQgMjAwMyBIb2xnZXIgU2NodXJpZwogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCBsb2dnaW5nCiBpbXBvcnQgYmIKIGltcG9ydCByZQogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hNZXRob2QKQEAgLTQ5LDcgKzQ3LDcgQEAKICAgICAgICAgc3ZuZGlyID0gZC5nZXRWYXIoIlNWTkRJUiIpIG9yIChkLmdldFZhcigiRExfRElSIikgKyAiL3N2biIpCiAgICAgICAgIHJlbHBhdGggPSBzZWxmLl9zdHJpcF9sZWFkaW5nX3NsYXNoZXModWQucGF0aCkKICAgICAgICAgdWQucGtnZGlyID0gb3MucGF0aC5qb2luKHN2bmRpciwgdWQuaG9zdCwgcmVscGF0aCkKLSAgICAgICAgdWQubW9kZGlyID0gb3MucGF0aC5qb2luKHVkLnBrZ2RpciwgdWQubW9kdWxlKQorICAgICAgICB1ZC5tb2RkaXIgPSBvcy5wYXRoLmpvaW4odWQucGtnZGlyLCB1ZC5wYXRoX3NwZWMpCiAgICAgICAgICMgUHJvdGVjdHMgdGhlIHJlcG9zaXRvcnkgZnJvbSBjb25jdXJyZW50IHVwZGF0ZXMsIGUuZy4gZnJvbSB0d28KICAgICAgICAgIyByZWNpcGVzIGZldGNoaW5nIGRpZmZlcmVudCByZXZpc2lvbnMgYXQgdGhlIHNhbWUgdGltZQogICAgICAgICB1ZC5zdm5sb2NrID0gb3MucGF0aC5qb2luKHVkLnBrZ2RpciwgInN2bi5sb2NrIikKQEAgLTEyNCwzMCArMTIyLDMwIEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgb3MuYWNjZXNzKG9zLnBhdGguam9pbih1ZC5tb2RkaXIsICcuc3ZuJyksIG9zLlJfT0spOgotICAgICAgICAgICAgICAgIHN2bnVwZGF0ZWNtZCA9IHNlbGYuX2J1aWxkc3ZuY29tbWFuZCh1ZCwgZCwgInVwZGF0ZSIpCisgICAgICAgICAgICAgICAgc3ZuY21kID0gc2VsZi5fYnVpbGRzdm5jb21tYW5kKHVkLCBkLCAidXBkYXRlIikKICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiVXBkYXRlICIgKyB1ZC51cmwpCiAgICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGF0dGVtcHQgdG8gcnVuIHN2biB1cGdyYWRlIGZpcnN0IGluIGNhc2UgaXRzIGFuIG9sZGVyIHdvcmtpbmcgZm9ybWF0CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBydW5mZXRjaGNtZCh1ZC5iYXNlY21kICsgIiB1cGdyYWRlIiwgZCwgd29ya2Rpcj11ZC5tb2RkaXIpCiAgICAgICAgICAgICAgICAgZXhjZXB0IEZldGNoRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIlJ1bm5pbmcgJXMiLCBzdm51cGRhdGVjbWQpCi0gICAgICAgICAgICAgICAgYmIuZmV0Y2gyLmNoZWNrX25ldHdvcmtfYWNjZXNzKGQsIHN2bnVwZGF0ZWNtZCwgdWQudXJsKQotICAgICAgICAgICAgICAgIHJ1bmZldGNoY21kKHN2bnVwZGF0ZWNtZCwgZCwgd29ya2Rpcj11ZC5tb2RkaXIpCisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJSdW5uaW5nICVzIiwgc3ZuY21kKQorICAgICAgICAgICAgICAgIGJiLmZldGNoMi5jaGVja19uZXR3b3JrX2FjY2VzcyhkLCBzdm5jbWQsIHVkLnVybCkKKyAgICAgICAgICAgICAgICBydW5mZXRjaGNtZChzdm5jbWQsIGQsIHdvcmtkaXI9dWQubW9kZGlyKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzdm5mZXRjaGNtZCA9IHNlbGYuX2J1aWxkc3ZuY29tbWFuZCh1ZCwgZCwgImZldGNoIikKKyAgICAgICAgICAgICAgICBzdm5jbWQgPSBzZWxmLl9idWlsZHN2bmNvbW1hbmQodWQsIGQsICJmZXRjaCIpCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkZldGNoICIgKyB1ZC51cmwpCiAgICAgICAgICAgICAgICAgIyBjaGVjayBvdXQgc291cmNlcyB0aGVyZQogICAgICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcih1ZC5wa2dkaXIpCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJSdW5uaW5nICVzIiwgc3ZuZmV0Y2hjbWQpCi0gICAgICAgICAgICAgICAgYmIuZmV0Y2gyLmNoZWNrX25ldHdvcmtfYWNjZXNzKGQsIHN2bmZldGNoY21kLCB1ZC51cmwpCi0gICAgICAgICAgICAgICAgcnVuZmV0Y2hjbWQoc3ZuZmV0Y2hjbWQsIGQsIHdvcmtkaXI9dWQucGtnZGlyKQorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiUnVubmluZyAlcyIsIHN2bmNtZCkKKyAgICAgICAgICAgICAgICBiYi5mZXRjaDIuY2hlY2tfbmV0d29ya19hY2Nlc3MoZCwgc3ZuY21kLCB1ZC51cmwpCisgICAgICAgICAgICAgICAgcnVuZmV0Y2hjbWQoc3ZuY21kLCBkLCB3b3JrZGlyPXVkLnBrZ2RpcikKIAogICAgICAgICAgICAgaWYgbm90ICgiZXh0ZXJuYWxzIiBpbiB1ZC5wYXJtIGFuZCB1ZC5wYXJtWyJleHRlcm5hbHMiXSA9PSAibm93YXJuIik6CiAgICAgICAgICAgICAgICAgIyBXYXJuIHRoZSB1c2VyIGlmIHRoaXMgaGFkIGV4dGVybmFscyAod29uJ3QgY2F0Y2ggdGhlbSBhbGwpCiAgICAgICAgICAgICAgICAgb3V0cHV0ID0gcnVuZmV0Y2hjbWQoInN2biBwcm9wZ2V0IHN2bjpleHRlcm5hbHMgfHwgdHJ1ZSIsIGQsIHdvcmtkaXI9dWQubW9kZGlyKQogICAgICAgICAgICAgICAgIGlmIG91dHB1dDoKLSAgICAgICAgICAgICAgICAgICAgaWYgIi0taWdub3JlLWV4dGVybmFscyIgaW4gc3ZuZmV0Y2hjbWQuc3BsaXQoKToKKyAgICAgICAgICAgICAgICAgICAgaWYgIi0taWdub3JlLWV4dGVybmFscyIgaW4gc3ZuY21kLnNwbGl0KCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCIlcyBjb250YWlucyBzdm46ZXh0ZXJuYWxzLiIgJSB1ZC51cmwpCiAgICAgICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCJUaGVzZSBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIHJlY2lwZSBTUkNfVVJJIGFzIG5lY2Vzc2FyeS4iKQogICAgICAgICAgICAgICAgICAgICAgICAgYmIud2Fybigic3ZuIGZldGNoIGhhcyBpZ25vcmVkIGV4dGVybmFsczpcbiVzIiAlIG91dHB1dCkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3dnZXQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi93Z2V0LnB5CmluZGV4IDcyNTU4NmQuLmY3ZDFkZTIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3dnZXQucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvd2dldC5weQpAQCAtMTIsMTEgKzEyLDEwIEBACiAjCiAjIEJhc2VkIG9uIGZ1bmN0aW9ucyBmcm9tIHRoZSBiYXNlIGJiIG1vZHVsZSwgQ29weXJpZ2h0IDIwMDMgSG9sZ2VyIFNjaHVyaWcKIAoraW1wb3J0IHNobGV4CiBpbXBvcnQgcmUKIGltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBvcwotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBlcnJubwogaW1wb3J0IGJiCiBpbXBvcnQgYmIucHJvZ3Jlc3MKQEAgLTI3LDcgKzI2LDYgQEAKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoRXJyb3IKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IGxvZ2dlcgogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgcnVuZmV0Y2hjbWQKLWZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoQ29ubmVjdGlvbkNhY2hlCiBmcm9tICAgYmIudXRpbHMgaW1wb3J0IGV4cG9ydF9wcm94aWVzCiBmcm9tICAgYnM0IGltcG9ydCBCZWF1dGlmdWxTb3VwCiBmcm9tICAgYnM0IGltcG9ydCBTb3VwU3RyYWluZXIKQEAgLTk0LDkgKzkyLDkgQEAKICAgICAgICAgZmV0Y2hjbWQgPSBzZWxmLmJhc2VjbWQKIAogICAgICAgICBpZiAnZG93bmxvYWRmaWxlbmFtZScgaW4gdWQucGFybToKLSAgICAgICAgICAgIGRsZGlyID0gZC5nZXRWYXIoIkRMX0RJUiIpCi0gICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGRsZGlyICsgb3Muc2VwICsgdWQubG9jYWxmaWxlKSkKLSAgICAgICAgICAgIGZldGNoY21kICs9ICIgLU8gIiArIGRsZGlyICsgb3Muc2VwICsgdWQubG9jYWxmaWxlCisgICAgICAgICAgICBsb2NhbHBhdGggPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoIkRMX0RJUiIpLCB1ZC5sb2NhbGZpbGUpCisgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGxvY2FscGF0aCkpCisgICAgICAgICAgICBmZXRjaGNtZCArPSAiIC1PICVzIiAlIHNobGV4LnF1b3RlKGxvY2FscGF0aCkKIAogICAgICAgICBpZiB1ZC51c2VyIGFuZCB1ZC5wc3dkOgogICAgICAgICAgICAgZmV0Y2hjbWQgKz0gIiAtLXVzZXI9JXMgLS1wYXNzd29yZD0lcyAtLWF1dGgtbm8tY2hhbGxlbmdlIiAlICh1ZC51c2VyLCB1ZC5wc3dkKQpAQCAtMzAyLDYgKzMwMCw3IEBACiAgICAgICAgICAgICAjIFNvbWUgc2VydmVycyAoRnVzaW9uRm9yZ2UsIGFzIHVzZWQgb24gQWxpb3RoKSByZXF1aXJlIHRoYXQgdGhlCiAgICAgICAgICAgICAjIG9wdGlvbmFsIEFjY2VwdCBoZWFkZXIgaXMgc2V0LgogICAgICAgICAgICAgci5hZGRfaGVhZGVyKCJBY2NlcHQiLCAiKi8qIikKKyAgICAgICAgICAgIHIuYWRkX2hlYWRlcigiVXNlci1BZ2VudCIsICJNb3ppbGxhLzUuMCAoWDExOyBVOyBMaW51eCBpNjg2OyBlbi1VUzsgcnY6MS45LjIuMTIpIEdlY2tvLzIwMTAxMDI3IFVidW50dS85LjEwIChrYXJtaWMpIEZpcmVmb3gvMy42LjEyIikKICAgICAgICAgICAgIGRlZiBhZGRfYmFzaWNfYXV0aChsb2dpbl9zdHIsIHJlcXVlc3QpOgogICAgICAgICAgICAgICAgICcnJ0FkZHMgQmFzaWMgYXV0aCB0byBodHRwIHJlcXVlc3QsIHBhc3MgaW4gbG9naW46cGFzc3dvcmQgYXMgc3RyaW5nJycnCiAgICAgICAgICAgICAgICAgaW1wb3J0IGJhc2U2NApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9tb25pdG9yZGlzay5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvbW9uaXRvcmRpc2sucHkKaW5kZXggMWEyNWIwMC4uZTdjMDcyNiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9tb25pdG9yZGlzay5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL21vbml0b3JkaXNrLnB5CkBAIC00LDcgKzQsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWltcG9ydCBvcywgbG9nZ2luZywgcmUsIHN5cworaW1wb3J0IG9zLCBsb2dnaW5nLCByZQogaW1wb3J0IGJiCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiQml0QmFrZS5Nb25pdG9yIikKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9tc2cucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL21zZy5weQppbmRleCA2MjE2ZWIzLi5jMGIzNDRlIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL21zZy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL21zZy5weQpAQCAtMTMsOSArMTMsOCBAQAogaW1wb3J0IHN5cwogaW1wb3J0IGNvcHkKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBsb2dnaW5nLmNvbmZpZwogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGdyb3VwYnkKLWltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGJiCiBpbXBvcnQgYmIuZXZlbnQKIApAQCAtMTAwLDYgKzk5LDkgQEAKICAgICBkZWYgZW5hYmxlX2NvbG9yKHNlbGYpOgogICAgICAgICBzZWxmLmNvbG9yX2VuYWJsZWQgPSBUcnVlCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiJXMgZm10PSclcycgY29sb3I9JXMiICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLl9mbXQsICJUcnVlIiBpZiBzZWxmLmNvbG9yX2VuYWJsZWQgZWxzZSAiRmFsc2UiKQorCiBjbGFzcyBCQkxvZ0ZpbHRlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoYW5kbGVyLCBsZXZlbCwgZGVidWdfZG9tYWlucyk6CiAgICAgICAgIHNlbGYuc3RkbGV2ZWwgPSBsZXZlbApAQCAtMTE4LDYwICsxMjAsNTkgQEAKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBGYWxzZQogCi1jbGFzcyBCQkxvZ0ZpbHRlclN0ZEVycihCQkxvZ0ZpbHRlcik6Ci0gICAgZGVmIGZpbHRlcihzZWxmLCByZWNvcmQpOgotICAgICAgICBpZiBub3QgQkJMb2dGaWx0ZXIuZmlsdGVyKHNlbGYsIHJlY29yZCk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgcmVjb3JkLmxldmVsbm8gPj0gbG9nZ2luZy5FUlJPUjoKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQorY2xhc3MgTG9nRmlsdGVyR0VRTGV2ZWwobG9nZ2luZy5GaWx0ZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsZXZlbCk6CisgICAgICAgIHNlbGYuc3RybGV2ZWwgPSBzdHIobGV2ZWwpCisgICAgICAgIHNlbGYubGV2ZWwgPSBzdHJpbmdUb0xldmVsKGxldmVsKQogCi1jbGFzcyBCQkxvZ0ZpbHRlclN0ZE91dChCQkxvZ0ZpbHRlcik6CisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzIGxldmVsID49ICVzICglZCkiICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLnN0cmxldmVsLCBzZWxmLmxldmVsKQorCiAgICAgZGVmIGZpbHRlcihzZWxmLCByZWNvcmQpOgotICAgICAgICBpZiBub3QgQkJMb2dGaWx0ZXIuZmlsdGVyKHNlbGYsIHJlY29yZCk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgcmVjb3JkLmxldmVsbm8gPCBsb2dnaW5nLkVSUk9SOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiAocmVjb3JkLmxldmVsbm8gPj0gc2VsZi5sZXZlbCkKKworY2xhc3MgTG9nRmlsdGVyTFRMZXZlbChsb2dnaW5nLkZpbHRlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxldmVsKToKKyAgICAgICAgc2VsZi5zdHJsZXZlbCA9IHN0cihsZXZlbCkKKyAgICAgICAgc2VsZi5sZXZlbCA9IHN0cmluZ1RvTGV2ZWwobGV2ZWwpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiJXMgbGV2ZWwgPCAlcyAoJWQpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5zdHJsZXZlbCwgc2VsZi5sZXZlbCkKKworICAgIGRlZiBmaWx0ZXIoc2VsZiwgcmVjb3JkKToKKyAgICAgICAgcmV0dXJuIChyZWNvcmQubGV2ZWxubyA8IHNlbGYubGV2ZWwpCiAKICMgTWVzc2FnZSBjb250cm9sIGZ1bmN0aW9ucwogIwogCi1sb2dnZXJEZWZhdWx0RGVidWdMZXZlbCA9IDAKK2xvZ2dlckRlZmF1bHRMb2dMZXZlbCA9IEJCTG9nRm9ybWF0dGVyLk5PVEUKIGxvZ2dlckRlZmF1bHRWZXJib3NlID0gRmFsc2UKIGxvZ2dlclZlcmJvc2VMb2dzID0gRmFsc2UKLWxvZ2dlckRlZmF1bHREb21haW5zID0gW10KK2xvZ2dlckRlZmF1bHREb21haW5zID0ge30KIAogZGVmIGluaXRfbXNnY29uZmlnKHZlcmJvc2UsIGRlYnVnLCBkZWJ1Z19kb21haW5zPU5vbmUpOgogICAgICIiIgogICAgIFNldCBkZWZhdWx0IHZlcmJvc2l0eSBhbmQgZGVidWcgbGV2ZWxzIGNvbmZpZyB0aGUgbG9nZ2VyCiAgICAgIiIiCi0gICAgYmIubXNnLmxvZ2dlckRlZmF1bHREZWJ1Z0xldmVsID0gZGVidWcKICAgICBiYi5tc2cubG9nZ2VyRGVmYXVsdFZlcmJvc2UgPSB2ZXJib3NlCiAgICAgaWYgdmVyYm9zZToKICAgICAgICAgYmIubXNnLmxvZ2dlclZlcmJvc2VMb2dzID0gVHJ1ZQotICAgIGlmIGRlYnVnX2RvbWFpbnM6Ci0gICAgICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0RG9tYWlucyA9IGRlYnVnX2RvbWFpbnMKLSAgICBlbHNlOgotICAgICAgICBiYi5tc2cubG9nZ2VyRGVmYXVsdERvbWFpbnMgPSBbXQotCi1kZWYgY29uc3RydWN0TG9nT3B0aW9ucygpOgotICAgIGRlYnVnID0gbG9nZ2VyRGVmYXVsdERlYnVnTGV2ZWwKLSAgICB2ZXJib3NlID0gbG9nZ2VyRGVmYXVsdFZlcmJvc2UKLSAgICBkb21haW5zID0gbG9nZ2VyRGVmYXVsdERvbWFpbnMKIAogICAgIGlmIGRlYnVnOgotICAgICAgICBsZXZlbCA9IEJCTG9nRm9ybWF0dGVyLkRFQlVHIC0gZGVidWcgKyAxCisgICAgICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0TG9nTGV2ZWwgPSBCQkxvZ0Zvcm1hdHRlci5ERUJVRyAtIGRlYnVnICsgMQogICAgIGVsaWYgdmVyYm9zZToKLSAgICAgICAgbGV2ZWwgPSBCQkxvZ0Zvcm1hdHRlci5WRVJCT1NFCisgICAgICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0TG9nTGV2ZWwgPSBCQkxvZ0Zvcm1hdHRlci5WRVJCT1NFCiAgICAgZWxzZToKLSAgICAgICAgbGV2ZWwgPSBCQkxvZ0Zvcm1hdHRlci5OT1RFCisgICAgICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0TG9nTGV2ZWwgPSBCQkxvZ0Zvcm1hdHRlci5OT1RFCiAKLSAgICBkZWJ1Z19kb21haW5zID0ge30KLSAgICBmb3IgKGRvbWFpbmFyZywgaXRlcmF0b3IpIGluIGdyb3VwYnkoZG9tYWlucyk6Ci0gICAgICAgIGRsZXZlbCA9IGxlbih0dXBsZShpdGVyYXRvcikpCi0gICAgICAgIGRlYnVnX2RvbWFpbnNbIkJpdEJha2UuJXMiICUgZG9tYWluYXJnXSA9IGxvZ2dpbmcuREVCVUcgLSBkbGV2ZWwgKyAxCi0gICAgcmV0dXJuIGxldmVsLCBkZWJ1Z19kb21haW5zCisgICAgYmIubXNnLmxvZ2dlckRlZmF1bHREb21haW5zID0ge30KKyAgICBpZiBkZWJ1Z19kb21haW5zOgorICAgICAgICBmb3IgKGRvbWFpbmFyZywgaXRlcmF0b3IpIGluIGdyb3VwYnkoZGVidWdfZG9tYWlucyk6CisgICAgICAgICAgICBkbGV2ZWwgPSBsZW4odHVwbGUoaXRlcmF0b3IpKQorICAgICAgICAgICAgYmIubXNnLmxvZ2dlckRlZmF1bHREb21haW5zWyJCaXRCYWtlLiVzIiAlIGRvbWFpbmFyZ10gPSBsb2dnaW5nLkRFQlVHIC0gZGxldmVsICsgMQorCitkZWYgY29uc3RydWN0TG9nT3B0aW9ucygpOgorICAgIHJldHVybiBsb2dnZXJEZWZhdWx0TG9nTGV2ZWwsIGxvZ2dlckRlZmF1bHREb21haW5zCiAKIGRlZiBhZGREZWZhdWx0bG9nRmlsdGVyKGhhbmRsZXIsIGNscyA9IEJCTG9nRmlsdGVyLCBmb3JjZWxldmVsPU5vbmUpOgogICAgIGxldmVsLCBkZWJ1Z19kb21haW5zID0gY29uc3RydWN0TG9nT3B0aW9ucygpCkBAIC0xODEsNiArMTgyLDE5IEBACiAKICAgICBjbHMoaGFuZGxlciwgbGV2ZWwsIGRlYnVnX2RvbWFpbnMpCiAKK2RlZiBzdHJpbmdUb0xldmVsKGxldmVsKToKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBpbnQobGV2ZWwpCisgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgIHBhc3MKKworICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGdldGF0dHIobG9nZ2luZywgbGV2ZWwpCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBwYXNzCisKKyAgICByZXR1cm4gZ2V0YXR0cihCQkxvZ0Zvcm1hdHRlciwgbGV2ZWwpCisKICMKICMgTWVzc2FnZSBoYW5kbGluZyBmdW5jdGlvbnMKICMKQEAgLTIxNCwzICsyMjgsMTA1IEBACiAgICAgICAgICAgICBpZiBoYW5kbGVyLnN0cmVhbSBpbiBbc3lzLnN0ZGVyciwgc3lzLnN0ZG91dF06CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICByZXR1cm4gRmFsc2UKKworZGVmIG1lcmdlTG9nZ2luZ0NvbmZpZyhsb2djb25maWcsIHVzZXJjb25maWcpOgorICAgIGxvZ2NvbmZpZyA9IGNvcHkuZGVlcGNvcHkobG9nY29uZmlnKQorICAgIHVzZXJjb25maWcgPSBjb3B5LmRlZXBjb3B5KHVzZXJjb25maWcpCisKKyAgICAjIE1lcmdlIGNvbmZpZyB3aXRoIHRoZSBkZWZhdWx0IGNvbmZpZworICAgIGlmIHVzZXJjb25maWcuZ2V0KCd2ZXJzaW9uJykgIT0gbG9nY29uZmlnWyd2ZXJzaW9uJ106CisgICAgICAgIHJhaXNlIEJhc2VFeGNlcHRpb24oIkJhZCB1c2VyIGNvbmZpZ3VyYXRpb24gdmVyc2lvbi4gRXhwZWN0ZWQgJXIsIGdvdCAlciIgJSAobG9nY29uZmlnWyd2ZXJzaW9uJ10sIHVzZXJjb25maWcuZ2V0KCd2ZXJzaW9uJykpKQorCisgICAgIyBTZXQgc29tZSBkZWZhdWx0cyB0byBtYWtlIG1lcmdpbmcgZWFzaWVyCisgICAgdXNlcmNvbmZpZy5zZXRkZWZhdWx0KCJsb2dnZXJzIiwge30pCisKKyAgICAjIElmIGEgaGFuZGxlciwgZm9ybWF0dGVyLCBvciBmaWx0ZXIgaXMgZGVmaW5lZCBpbiB0aGUgdXNlcgorICAgICMgY29uZmlnLCBpdCB3aWxsIHJlcGxhY2UgYW4gZXhpc3Rpbmcgb25lIGluIHRoZSBkZWZhdWx0IGNvbmZpZworICAgIGZvciBrIGluICgiaGFuZGxlcnMiLCAiZm9ybWF0dGVycyIsICJmaWx0ZXJzIik6CisgICAgICAgIGxvZ2NvbmZpZy5zZXRkZWZhdWx0KGssIHt9KS51cGRhdGUodXNlcmNvbmZpZy5nZXQoaywge30pKQorCisgICAgc2Vlbl9sb2dnZXJzID0gc2V0KCkKKyAgICBmb3IgbmFtZSwgbCBpbiBsb2djb25maWdbImxvZ2dlcnMiXS5pdGVtcygpOgorICAgICAgICAjIElmIHRoZSBtZXJnZSBvcHRpb24gaXMgc2V0LCBtZXJnZSB0aGUgaGFuZGxlcnMgYW5kCisgICAgICAgICMgZmlsdGVycy4gT3RoZXJ3aXNlLCBpZiBpdCBpcyBGYWxzZSwgdGhpcyBsb2dnZXIgd29uJ3QgZ2V0CisgICAgICAgICMgYWRkIHRvIHRoZSBzZXQgb2Ygc2VlbiBsb2dnZXJzIGFuZCB3aWxsIHJlcGxhY2UgdGhlCisgICAgICAgICMgZXhpc3Rpbmcgb25lCisgICAgICAgIGlmIGwuZ2V0KCdiaXRiYWtlX21lcmdlJywgVHJ1ZSk6CisgICAgICAgICAgICB1bG9nZ2VyID0gdXNlcmNvbmZpZ1sibG9nZ2VycyJdLnNldGRlZmF1bHQobmFtZSwge30pCisgICAgICAgICAgICB1bG9nZ2VyLnNldGRlZmF1bHQoImhhbmRsZXJzIiwgW10pCisgICAgICAgICAgICB1bG9nZ2VyLnNldGRlZmF1bHQoImZpbHRlcnMiLCBbXSkKKworICAgICAgICAgICAgIyBNZXJnZSBsaXN0cworICAgICAgICAgICAgbC5zZXRkZWZhdWx0KCJoYW5kbGVycyIsIFtdKS5leHRlbmQodWxvZ2dlclsiaGFuZGxlcnMiXSkKKyAgICAgICAgICAgIGwuc2V0ZGVmYXVsdCgiZmlsdGVycyIsIFtdKS5leHRlbmQodWxvZ2dlclsiZmlsdGVycyJdKQorCisgICAgICAgICAgICAjIFJlcGxhY2Ugb3RoZXIgcHJvcGVydGllcyBpZiBwcmVzZW50CisgICAgICAgICAgICBpZiAibGV2ZWwiIGluIHVsb2dnZXI6CisgICAgICAgICAgICAgICAgbFsibGV2ZWwiXSA9IHVsb2dnZXJbImxldmVsIl0KKworICAgICAgICAgICAgaWYgInByb3BhZ2F0ZSIgaW4gdWxvZ2dlcjoKKyAgICAgICAgICAgICAgICBsWyJwcm9wYWdhdGUiXSA9IHVsb2dnZXJbInByb3BhZ2F0ZSJdCisKKyAgICAgICAgICAgIHNlZW5fbG9nZ2Vycy5hZGQobmFtZSkKKworICAgICMgQWRkIGFsbCBsb2dnZXJzIHByZXNlbnQgaW4gdGhlIHVzZXIgY29uZmlnLCBidXQgbm90IGFueSB0aGF0CisgICAgIyBoYXZlIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQKKyAgICBmb3IgbmFtZSBpbiBzZXQodXNlcmNvbmZpZ1sibG9nZ2VycyJdLmtleXMoKSkgLSBzZWVuX2xvZ2dlcnM6CisgICAgICAgIGxvZ2NvbmZpZ1sibG9nZ2VycyJdW25hbWVdID0gdXNlcmNvbmZpZ1sibG9nZ2VycyJdW25hbWVdCisKKyAgICByZXR1cm4gbG9nY29uZmlnCisKK2RlZiBzZXRMb2dnaW5nQ29uZmlnKGRlZmF1bHRjb25maWcsIHVzZXJjb25maWdmaWxlPU5vbmUpOgorICAgIGxvZ2NvbmZpZyA9IGNvcHkuZGVlcGNvcHkoZGVmYXVsdGNvbmZpZykKKworICAgIGlmIHVzZXJjb25maWdmaWxlOgorICAgICAgICB3aXRoIG9wZW4odXNlcmNvbmZpZ2ZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIGlmIHVzZXJjb25maWdmaWxlLmVuZHN3aXRoKCcueW1sJykgb3IgdXNlcmNvbmZpZ2ZpbGUuZW5kc3dpdGgoJy55YW1sJyk6CisgICAgICAgICAgICAgICAgaW1wb3J0IHlhbWwKKyAgICAgICAgICAgICAgICB1c2VyY29uZmlnID0geWFtbC5sb2FkKGYpCisgICAgICAgICAgICBlbGlmIHVzZXJjb25maWdmaWxlLmVuZHN3aXRoKCcuanNvbicpIG9yIHVzZXJjb25maWdmaWxlLmVuZHN3aXRoKCcuY2ZnJyk6CisgICAgICAgICAgICAgICAgaW1wb3J0IGpzb24KKyAgICAgICAgICAgICAgICB1c2VyY29uZmlnID0ganNvbi5sb2FkKGYpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIEJhc2VFeGNlcHRpb24oIlVucmVjb2duaXplZCBmaWxlIGZvcm1hdDogJXMiICUgdXNlcmNvbmZpZ2ZpbGUpCisKKyAgICAgICAgICAgIGlmIHVzZXJjb25maWcuZ2V0KCdiaXRiYWtlX21lcmdlJywgVHJ1ZSk6CisgICAgICAgICAgICAgICAgbG9nY29uZmlnID0gbWVyZ2VMb2dnaW5nQ29uZmlnKGxvZ2NvbmZpZywgdXNlcmNvbmZpZykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBSZXBsYWNlIHRoZSBlbnRpcmUgZGVmYXVsdCBjb25maWcKKyAgICAgICAgICAgICAgICBsb2djb25maWcgPSB1c2VyY29uZmlnCisKKyAgICAjIENvbnZlcnQgYWxsIGxldmVsIHBhcmFtZXRlcnMgdG8gaW50ZWdlcnMgaW4gY2FzZSB1c2VycyB3YW50IHRvIHVzZSB0aGUKKyAgICAjIGJpdGJha2UgZGVmaW5lZCBsZXZlbCBuYW1lcworICAgIGZvciBoIGluIGxvZ2NvbmZpZ1siaGFuZGxlcnMiXS52YWx1ZXMoKToKKyAgICAgICAgaWYgImxldmVsIiBpbiBoOgorICAgICAgICAgICAgaFsibGV2ZWwiXSA9IGJiLm1zZy5zdHJpbmdUb0xldmVsKGhbImxldmVsIl0pCisKKyAgICBmb3IgbCBpbiBsb2djb25maWdbImxvZ2dlcnMiXS52YWx1ZXMoKToKKyAgICAgICAgaWYgImxldmVsIiBpbiBsOgorICAgICAgICAgICAgbFsibGV2ZWwiXSA9IGJiLm1zZy5zdHJpbmdUb0xldmVsKGxbImxldmVsIl0pCisKKyAgICBjb25mID0gbG9nZ2luZy5jb25maWcuZGljdENvbmZpZ0NsYXNzKGxvZ2NvbmZpZykKKyAgICBjb25mLmNvbmZpZ3VyZSgpCisKKyAgICAjIFRoZSB1c2VyIG1heSBoYXZlIHNwZWNpZmllZCBsb2dnaW5nIGRvbWFpbnMgdGhleSB3YW50IGF0IGEgaGlnaGVyIGRlYnVnCisgICAgIyBsZXZlbCB0aGFuIHRoZSBzdGFuZGFyZC4KKyAgICBmb3IgbmFtZSwgbCBpbiBsb2djb25maWdbImxvZ2dlcnMiXS5pdGVtcygpOgorICAgICAgICBpZiBub3QgbmFtZS5zdGFydHN3aXRoKCJCaXRCYWtlLiIpOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBpZiBub3QgImxldmVsIiBpbiBsOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBjdXJsZXZlbCA9IGJiLm1zZy5sb2dnZXJEZWZhdWx0RG9tYWlucy5nZXQobmFtZSkKKyAgICAgICAgIyBOb3RlOiBsZXZlbCBwYXJhbWV0ZXIgc2hvdWxkIGFscmVhZHkgYmUgYSBpbnQgYmVjYXVzZSBvZiBjb252ZXJzaW9uCisgICAgICAgICMgYWJvdmUKKyAgICAgICAgbmV3bGV2ZWwgPSBpbnQobFsibGV2ZWwiXSkKKyAgICAgICAgaWYgY3VybGV2ZWwgaXMgTm9uZSBvciBuZXdsZXZlbCA8IGN1cmxldmVsOgorICAgICAgICAgICAgYmIubXNnLmxvZ2dlckRlZmF1bHREb21haW5zW25hbWVdID0gbmV3bGV2ZWwKKworICAgICAgICAjIFRPRE86IEkgZG9uJ3QgdGhpbmsgdGhhdCBzZXR0aW5nIHRoZSBnbG9iYWwgbG9nIGxldmVsIHNob3VsZCBiZSBuZWNlc3NhcnkKKyAgICAgICAgI2lmIG5ld2xldmVsIDwgYmIubXNnLmxvZ2dlckRlZmF1bHRMb2dMZXZlbDoKKyAgICAgICAgIyAgICBiYi5tc2cubG9nZ2VyRGVmYXVsdExvZ0xldmVsID0gbmV3bGV2ZWwKKworICAgIHJldHVybiBjb25mCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL2FzdC5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvYXN0LnB5CmluZGV4IGYwOTExZTYuLmViOGNmYTIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvYXN0LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvYXN0LnB5CkBAIC05LDExICs5LDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1pbXBvcnQgcmUKLWltcG9ydCBzdHJpbmcKLWltcG9ydCBsb2dnaW5nCiBpbXBvcnQgYmIKLWltcG9ydCBpdGVydG9vbHMKIGZyb20gYmIgaW1wb3J0IG1ldGhvZHBvb2wKIGZyb20gYmIucGFyc2UgaW1wb3J0IGxvZ2dlcgogCkBAIC05Myw3ICs4OSw3IEBACiAgICAgICAgIHNlbGYuZ3JvdXBkID0gZ3JvdXBkCiAKICAgICBkZWYgZ2V0RnVuYyhzZWxmLCBrZXksIGRhdGEpOgotICAgICAgICBpZiAnZmxhZycgaW4gc2VsZi5ncm91cGQgYW5kIHNlbGYuZ3JvdXBkWydmbGFnJ10gIT0gTm9uZToKKyAgICAgICAgaWYgJ2ZsYWcnIGluIHNlbGYuZ3JvdXBkIGFuZCBzZWxmLmdyb3VwZFsnZmxhZyddIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmV0dXJuIGRhdGEuZ2V0VmFyRmxhZyhrZXksIHNlbGYuZ3JvdXBkWydmbGFnJ10sIGV4cGFuZD1GYWxzZSwgbm93ZWFrZGVmYXVsdD1UcnVlKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIGRhdGEuZ2V0VmFyKGtleSwgRmFsc2UsIG5vd2Vha2RlZmF1bHQ9VHJ1ZSwgcGFyc2luZz1UcnVlKQpAQCAtMTA2LDM2ICsxMDIsMzYgQEAKICAgICAgICAgICAgICdmaWxlJzogc2VsZi5maWxlbmFtZSwKICAgICAgICAgICAgICdsaW5lJzogc2VsZi5saW5lbm8sCiAgICAgICAgIH0KLSAgICAgICAgaWYgImV4cCIgaW4gZ3JvdXBkIGFuZCBncm91cGRbImV4cCJdICE9IE5vbmU6CisgICAgICAgIGlmICJleHAiIGluIGdyb3VwZCBhbmQgZ3JvdXBkWyJleHAiXSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGRhdGEuc2V0VmFyRmxhZyhrZXksICJleHBvcnQiLCAxLCBvcCA9ICdleHBvcnRlZCcsICoqbG9naW5mbykKIAogICAgICAgICBvcCA9ICJzZXQiCi0gICAgICAgIGlmICJxdWVzIiBpbiBncm91cGQgYW5kIGdyb3VwZFsicXVlcyJdICE9IE5vbmU6CisgICAgICAgIGlmICJxdWVzIiBpbiBncm91cGQgYW5kIGdyb3VwZFsicXVlcyJdIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgdmFsID0gc2VsZi5nZXRGdW5jKGtleSwgZGF0YSkKICAgICAgICAgICAgIG9wID0gInNldD8iCi0gICAgICAgICAgICBpZiB2YWwgPT0gTm9uZToKKyAgICAgICAgICAgIGlmIHZhbCBpcyBOb25lOgogICAgICAgICAgICAgICAgIHZhbCA9IGdyb3VwZFsidmFsdWUiXQotICAgICAgICBlbGlmICJjb2xvbiIgaW4gZ3JvdXBkIGFuZCBncm91cGRbImNvbG9uIl0gIT0gTm9uZToKKyAgICAgICAgZWxpZiAiY29sb24iIGluIGdyb3VwZCBhbmQgZ3JvdXBkWyJjb2xvbiJdIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgZSA9IGRhdGEuY3JlYXRlQ29weSgpCiAgICAgICAgICAgICBvcCA9ICJpbW1lZGlhdGUiCiAgICAgICAgICAgICB2YWwgPSBlLmV4cGFuZChncm91cGRbInZhbHVlIl0sIGtleSArICJbOj1dIikKLSAgICAgICAgZWxpZiAiYXBwZW5kIiBpbiBncm91cGQgYW5kIGdyb3VwZFsiYXBwZW5kIl0gIT0gTm9uZToKKyAgICAgICAgZWxpZiAiYXBwZW5kIiBpbiBncm91cGQgYW5kIGdyb3VwZFsiYXBwZW5kIl0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBvcCA9ICJhcHBlbmQiCiAgICAgICAgICAgICB2YWwgPSAiJXMgJXMiICUgKChzZWxmLmdldEZ1bmMoa2V5LCBkYXRhKSBvciAiIiksIGdyb3VwZFsidmFsdWUiXSkKLSAgICAgICAgZWxpZiAicHJlcGVuZCIgaW4gZ3JvdXBkIGFuZCBncm91cGRbInByZXBlbmQiXSAhPSBOb25lOgorICAgICAgICBlbGlmICJwcmVwZW5kIiBpbiBncm91cGQgYW5kIGdyb3VwZFsicHJlcGVuZCJdIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgb3AgPSAicHJlcGVuZCIKICAgICAgICAgICAgIHZhbCA9ICIlcyAlcyIgJSAoZ3JvdXBkWyJ2YWx1ZSJdLCAoc2VsZi5nZXRGdW5jKGtleSwgZGF0YSkgb3IgIiIpKQotICAgICAgICBlbGlmICJwb3N0ZG90IiBpbiBncm91cGQgYW5kIGdyb3VwZFsicG9zdGRvdCJdICE9IE5vbmU6CisgICAgICAgIGVsaWYgInBvc3Rkb3QiIGluIGdyb3VwZCBhbmQgZ3JvdXBkWyJwb3N0ZG90Il0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBvcCA9ICJwb3N0ZG90IgogICAgICAgICAgICAgdmFsID0gIiVzJXMiICUgKChzZWxmLmdldEZ1bmMoa2V5LCBkYXRhKSBvciAiIiksIGdyb3VwZFsidmFsdWUiXSkKLSAgICAgICAgZWxpZiAicHJlZG90IiBpbiBncm91cGQgYW5kIGdyb3VwZFsicHJlZG90Il0gIT0gTm9uZToKKyAgICAgICAgZWxpZiAicHJlZG90IiBpbiBncm91cGQgYW5kIGdyb3VwZFsicHJlZG90Il0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBvcCA9ICJwcmVkb3QiCiAgICAgICAgICAgICB2YWwgPSAiJXMlcyIgJSAoZ3JvdXBkWyJ2YWx1ZSJdLCAoc2VsZi5nZXRGdW5jKGtleSwgZGF0YSkgb3IgIiIpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdmFsID0gZ3JvdXBkWyJ2YWx1ZSJdCiAKICAgICAgICAgZmxhZyA9IE5vbmUKLSAgICAgICAgaWYgJ2ZsYWcnIGluIGdyb3VwZCBhbmQgZ3JvdXBkWydmbGFnJ10gIT0gTm9uZToKKyAgICAgICAgaWYgJ2ZsYWcnIGluIGdyb3VwZCBhbmQgZ3JvdXBkWydmbGFnJ10gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBmbGFnID0gZ3JvdXBkWydmbGFnJ10KICAgICAgICAgZWxpZiBncm91cGRbImxhenlxdWVzIl06CiAgICAgICAgICAgICBmbGFnID0gIl9kZWZhdWx0dmFsIgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9wYXJzZV9weS9CQkhhbmRsZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0JCSGFuZGxlci5weQppbmRleCA2ZjdjZjgyLi42ZTIxNmVmIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0JCSGFuZGxlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0JCSGFuZGxlci5weQpAQCAtMTMsOSArMTMsNyBAQAogIwogCiBpbXBvcnQgcmUsIGJiLCBvcwotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBiYi5idWlsZCwgYmIudXRpbHMKLWZyb20gYmIgaW1wb3J0IGRhdGEKIAogZnJvbSAuIGltcG9ydCBDb25mSGFuZGxlcgogZnJvbSAuLiBpbXBvcnQgcmVzb2x2ZV9maWxlLCBhc3QsIGxvZ2dlciwgUGFyc2VFcnJvcgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9wZXJzaXN0X2RhdGEucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3BlcnNpc3RfZGF0YS5weQppbmRleCBkZThmODdhLi43MzU3YWIyIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3BlcnNpc3RfZGF0YS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3BlcnNpc3RfZGF0YS5weQpAQCAtMTc5LDYgKzE3OSw5IEBACiAgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ09ubHkgc3RyaW5nIHZhbHVlcyBhcmUgc3VwcG9ydGVkJykKIAorICAgICAgICAjIEVuc3VyZSB0aGUgZW50aXJlIHRyYW5zYWN0aW9uIChpbmNsdWRpbmcgU0VMRUNUKSBleGVjdXRlcyB1bmRlciB3cml0ZSBsb2NrCisgICAgICAgIGN1cnNvci5leGVjdXRlKCJCRUdJTiBFWENMVVNJVkUiKQorCiAgICAgICAgIGN1cnNvci5leGVjdXRlKCJTRUxFQ1QgKiBmcm9tICVzIHdoZXJlIGtleT0/OyIgJSBzZWxmLnRhYmxlLCBba2V5XSkKICAgICAgICAgcm93ID0gY3Vyc29yLmZldGNob25lKCkKICAgICAgICAgaWYgcm93IGlzIG5vdCBOb25lOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9wcm9ncmVzcy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvcHJvZ3Jlc3MucHkKaW5kZXggNDAyMmNhYS4uOWM3NTViNyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9wcm9ncmVzcy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Byb2dyZXNzLnB5CkBAIC03LDcgKzcsNiBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWltcG9ydCBzeXMKIGltcG9ydCByZQogaW1wb3J0IHRpbWUKIGltcG9ydCBpbnNwZWN0CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Byb3ZpZGVycy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvcHJvdmlkZXJzLnB5CmluZGV4IGY4MDk2M2MuLjgxNDU5YzMgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvcHJvdmlkZXJzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvcHJvdmlkZXJzLnB5CkBAIC05MiwxMSArOTIsMTEgQEAKICAgICBDaGVjayBpZiB0aGUgdmVyc2lvbiBwZSxwdixwciBpcyB0aGUgcHJlZmVycmVkIG9uZS4KICAgICBJZiB0aGVyZSBpcyBwcmVmZXJyZWQgdmVyc2lvbiBkZWZpbmVkIGFuZCBlbmRzIHdpdGggJyUnLCB0aGVuIHB2IGhhcyB0byBzdGFydCB3aXRoIHRoYXQgdmVyc2lvbiBhZnRlciByZW1vdmluZyB0aGUgJyUnCiAgICAgIiIiCi0gICAgaWYgKHByID09IHByZWZlcnJlZF9yIG9yIHByZWZlcnJlZF9yID09IE5vbmUpOgotICAgICAgICBpZiAocGUgPT0gcHJlZmVycmVkX2Ugb3IgcHJlZmVycmVkX2UgPT0gTm9uZSk6CisgICAgaWYgcHIgPT0gcHJlZmVycmVkX3Igb3IgcHJlZmVycmVkX3IgaXMgTm9uZToKKyAgICAgICAgaWYgcGUgPT0gcHJlZmVycmVkX2Ugb3IgcHJlZmVycmVkX2UgaXMgTm9uZToKICAgICAgICAgICAgIGlmIHByZWZlcnJlZF92ID09IHB2OgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICBpZiBwcmVmZXJyZWRfdiAhPSBOb25lIGFuZCBwcmVmZXJyZWRfdi5lbmRzd2l0aCgnJScpIGFuZCBwdi5zdGFydHN3aXRoKHByZWZlcnJlZF92WzpsZW4ocHJlZmVycmVkX3YpLTFdKToKKyAgICAgICAgICAgIGlmIHByZWZlcnJlZF92IGlzIG5vdCBOb25lIGFuZCBwcmVmZXJyZWRfdi5lbmRzd2l0aCgnJScpIGFuZCBwdi5zdGFydHN3aXRoKHByZWZlcnJlZF92WzpsZW4ocHJlZmVycmVkX3YpLTFdKToKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgIHJldHVybiBGYWxzZQogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3JlbW90ZWRhdGEucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3JlbW90ZWRhdGEucHkKaW5kZXggNzM5MWUxYi4uNmM5ODY0ZCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9yZW1vdGVkYXRhLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvcmVtb3RlZGF0YS5weQpAQCAtMTcsMTYgKzE3LDE2IEBACiAgICAgICAgIHNlbGYuY29va2VyID0gY29va2VyCiAgICAgICAgIHNlbGYuZGF0YXN0b3JlcyA9IHt9CiAgICAgICAgIHNlbGYubG9ja2VkID0gW10KKyAgICAgICAgc2VsZi5kYXRhc3RvcmVzWzBdID0gc2VsZi5jb29rZXIuZGF0YQogICAgICAgICBzZWxmLm5leHRpbmRleCA9IDEKIAogICAgIGRlZiBfX2xlbl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gbGVuKHNlbGYuZGF0YXN0b3JlcykKIAogICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgotICAgICAgICBpZiBrZXkgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmNvb2tlci5kYXRhCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5kYXRhc3RvcmVzW2tleV0KKyAgICAgICAgIyBDb29rZXIgY291bGQgaGF2ZSBjaGFuZ2VkIGl0cyBkYXRhc3RvcmUgZnJvbSB1bmRlciB1cworICAgICAgICBzZWxmLmRhdGFzdG9yZXNbMF0gPSBzZWxmLmNvb2tlci5kYXRhCisgICAgICAgIHJldHVybiBzZWxmLmRhdGFzdG9yZXNba2V5XQogCiAgICAgZGVmIGl0ZW1zKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5kYXRhc3RvcmVzLml0ZW1zKCkKQEAgLTYzLDQ0ICs2MywzIEBACiAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1RyaWVkIHRvIHJlbGVhc2UgbG9ja2VkIGRhdGFzdG9yZSAlZCcgJSBpZHgpCiAgICAgICAgIGRlbCBzZWxmLmRhdGFzdG9yZXNbaWR4XQogCi0gICAgZGVmIHJlY2VpdmVfZGF0YXN0b3JlKHNlbGYsIHJlbW90ZV9kYXRhKToKLSAgICAgICAgIiIiUmVjZWl2ZSBhIGRhdGFzdG9yZSBvYmplY3Qgc2VudCBmcm9tIHRoZSBjbGllbnQgKGFzIHByZXBhcmVkIGJ5IHRyYW5zbWl0X2RhdGFzdG9yZSgpKSIiIgotICAgICAgICBkY3QgPSBkaWN0KHJlbW90ZV9kYXRhKQotICAgICAgICBkID0gYmIuZGF0YV9zbWFydC5EYXRhU21hcnQoKQotICAgICAgICBkLmRpY3QgPSBkY3QKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGlmICdfcmVtb3RlX2RhdGEnIGluIGRjdDoKLSAgICAgICAgICAgICAgICBkc2luZGV4ID0gZGN0WydfcmVtb3RlX2RhdGEnXVsnX2NvbnRlbnQnXQotICAgICAgICAgICAgICAgIGRlbCBkY3RbJ19yZW1vdGVfZGF0YSddCi0gICAgICAgICAgICAgICAgaWYgZHNpbmRleCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBkY3RbJ19kYXRhJ10gPSBzZWxmLmNvb2tlci5kYXRhLmRpY3QKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBkY3RbJ19kYXRhJ10gPSBzZWxmLmRhdGFzdG9yZXNbZHNpbmRleF0uZGljdAotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBlbGlmICdfZGF0YScgaW4gZGN0OgotICAgICAgICAgICAgICAgIGlkY3QgPSBkaWN0KGRjdFsnX2RhdGEnXSkKLSAgICAgICAgICAgICAgICBkY3RbJ19kYXRhJ10gPSBpZGN0Ci0gICAgICAgICAgICAgICAgZGN0ID0gaWRjdAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICByZXR1cm4gZAotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiB0cmFuc21pdF9kYXRhc3RvcmUoZCk6Ci0gICAgICAgICIiIlByZXBhcmUgYSBkYXRhc3RvcmUgb2JqZWN0IGZvciBzZW5kaW5nIG92ZXIgSVBDIGZyb20gdGhlIGNsaWVudCBlbmQiIiIKLSAgICAgICAgIyBGSVhNRSBjb250ZW50IG1pZ2h0IGJlIGEgZGljdCwgbmVlZCB0byB0dXJuIHRoYXQgaW50byBhIGxpc3QgYXMgd2VsbAotICAgICAgICBkZWYgY29weV9kaWN0cyhkY3QpOgotICAgICAgICAgICAgaWYgJ19yZW1vdGVfZGF0YScgaW4gZGN0OgotICAgICAgICAgICAgICAgIGRzaW5kZXggPSBkY3RbJ19yZW1vdGVfZGF0YSddWydfY29udGVudCddLmRzaW5kZXgKLSAgICAgICAgICAgICAgICBuZXdkY3QgPSBkY3QuY29weSgpCi0gICAgICAgICAgICAgICAgbmV3ZGN0WydfcmVtb3RlX2RhdGEnXSA9IHsnX2NvbnRlbnQnOiBkc2luZGV4fQotICAgICAgICAgICAgICAgIHJldHVybiBsaXN0KG5ld2RjdC5pdGVtcygpKQotICAgICAgICAgICAgZWxpZiAnX2RhdGEnIGluIGRjdDoKLSAgICAgICAgICAgICAgICBuZXdkY3QgPSBkY3QuY29weSgpCi0gICAgICAgICAgICAgICAgbmV3ZGF0YSA9IGNvcHlfZGljdHMoZGN0WydfZGF0YSddKQotICAgICAgICAgICAgICAgIGlmIG5ld2RhdGE6Ci0gICAgICAgICAgICAgICAgICAgIG5ld2RjdFsnX2RhdGEnXSA9IG5ld2RhdGEKLSAgICAgICAgICAgICAgICByZXR1cm4gbGlzdChuZXdkY3QuaXRlbXMoKSkKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIG1haW5fZGljdCA9IGNvcHlfZGljdHMoZC5kaWN0KQotICAgICAgICByZXR1cm4gbWFpbl9kaWN0CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3J1bnF1ZXVlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9ydW5xdWV1ZS5weQppbmRleCAyNjQ5MmU3Li4xNmYwNzZmIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3J1bnF1ZXVlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvcnVucXVldWUucHkKQEAgLTEyLDE0ICsxMiwxMiBAQAogaW1wb3J0IGNvcHkKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN0YXQKLWltcG9ydCBmY250bAogaW1wb3J0IGVycm5vCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJlCiBpbXBvcnQgYmIKLWZyb20gYmIgaW1wb3J0IG1zZywgZGF0YSwgZXZlbnQKK2Zyb20gYmIgaW1wb3J0IG1zZywgZXZlbnQKIGZyb20gYmIgaW1wb3J0IG1vbml0b3JkaXNrCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHBpY2tsZQpAQCAtMjksNiArMjcsNyBAQAogCiBiYmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlIikKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlLlJ1blF1ZXVlIikKK2hhc2hlcXVpdl9sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiQml0QmFrZS5SdW5RdWV1ZS5IYXNoRXF1aXYiKQogCiBfX2ZpbmRfc2hhMjU2X18gPSByZS5jb21waWxlKCByJyg/aSkoPzwhW2EtejAtOV0pW2EtZjAtOV17NjR9KD8hW2EtejAtOV0pJyApCiAKQEAgLTE0OCw4ICsxNDcsOSBAQAogICAgICAgICAiIiIKICAgICAgICAgUmV0dXJuIHRoZSBpZCBvZiB0aGUgZmlyc3QgdGFzayB3ZSBmaW5kIHRoYXQgaXMgYnVpbGRhYmxlCiAgICAgICAgICIiIgorICAgICAgICAjIE9uY2UgdGFza3MgYXJlIHJ1bm5pbmcgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB0aGVtIGFnYWluCisgICAgICAgIHNlbGYuYnVpbGRhYmxlLmRpZmZlcmVuY2VfdXBkYXRlKHNlbGYucnEucnVucV9ydW5uaW5nKQogICAgICAgICBidWlsZGFibGUgPSBzZXQoc2VsZi5idWlsZGFibGUpCi0gICAgICAgIGJ1aWxkYWJsZS5kaWZmZXJlbmNlX3VwZGF0ZShzZWxmLnJxLnJ1bnFfcnVubmluZykKICAgICAgICAgYnVpbGRhYmxlLmRpZmZlcmVuY2VfdXBkYXRlKHNlbGYucnEuaG9sZG9mZl90YXNrcykKICAgICAgICAgYnVpbGRhYmxlLmludGVyc2VjdGlvbl91cGRhdGUoc2VsZi5ycS50YXNrc19jb3ZlcmVkIHwgc2VsZi5ycS50YXNrc19ub3Rjb3ZlcmVkKQogICAgICAgICBpZiBub3QgYnVpbGRhYmxlOgpAQCAtMjA3LDggKzIwNyw2IEBACiAKICAgICBkZWYgbmV3YnVpbGRhYmxlKHNlbGYsIHRhc2spOgogICAgICAgICBzZWxmLmJ1aWxkYWJsZS5hZGQodGFzaykKLSAgICAgICAgIyBPbmNlIHRhc2tzIGFyZSBydW5uaW5nIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlbSBhZ2FpbgotICAgICAgICBzZWxmLmJ1aWxkYWJsZS5kaWZmZXJlbmNlX3VwZGF0ZShzZWxmLnJxLnJ1bnFfcnVubmluZykKIAogICAgIGRlZiByZW1vdmVidWlsZGFibGUoc2VsZiwgdGFzayk6CiAgICAgICAgIHNlbGYuYnVpbGRhYmxlLnJlbW92ZSh0YXNrKQpAQCAtOTIzLDkgKzkyMSwxMSBAQAogICAgICAgICAgICAgcnVucV9idWlsZCA9IHt9CiAKICAgICAgICAgICAgIGZvciB0YXNrIGluIHNlbGYuY29va2VyLmNvbmZpZ3VyYXRpb24ucnVuYWxsOgorICAgICAgICAgICAgICAgIGlmIG5vdCB0YXNrLnN0YXJ0c3dpdGgoImRvXyIpOgorICAgICAgICAgICAgICAgICAgICB0YXNrID0gImRvX3swfSIuZm9ybWF0KHRhc2spCiAgICAgICAgICAgICAgICAgcnVuYWxsX3RpZHMgPSBzZXQoKQogICAgICAgICAgICAgICAgIGZvciB0aWQgaW4gbGlzdChzZWxmLnJ1bnRhc2tlbnRyaWVzKToKLSAgICAgICAgICAgICAgICAgICAgd2FudHRpZCA9IGZuX2Zyb21fdGlkKHRpZCkgKyAiOmRvXyVzIiAlIHRhc2sKKyAgICAgICAgICAgICAgICAgICAgd2FudHRpZCA9ICJ7MH06ezF9Ii5mb3JtYXQoZm5fZnJvbV90aWQodGlkKSwgdGFzaykKICAgICAgICAgICAgICAgICAgICAgaWYgd2FudHRpZCBpbiBkZWxjb3VudDoKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucnVudGFza2VudHJpZXNbd2FudHRpZF0gPSBkZWxjb3VudFt3YW50dGlkXQogICAgICAgICAgICAgICAgICAgICBpZiB3YW50dGlkIGluIHNlbGYucnVudGFza2VudHJpZXM6CkBAIC05NTIsNyArOTUyLDkgQEAKICAgICAgICAgICAgIHJ1bnFfYnVpbGQgPSB7fQogCiAgICAgICAgICAgICBmb3IgdGFzayBpbiBzZWxmLmNvb2tlci5jb25maWd1cmF0aW9uLnJ1bm9ubHk6Ci0gICAgICAgICAgICAgICAgcnVub25seV90aWRzID0geyBrOiB2IGZvciBrLCB2IGluIHNlbGYucnVudGFza2VudHJpZXMuaXRlbXMoKSBpZiB0YXNrbmFtZV9mcm9tX3RpZChrKSA9PSAiZG9fJXMiICUgdGFzayB9CisgICAgICAgICAgICAgICAgaWYgbm90IHRhc2suc3RhcnRzd2l0aCgiZG9fIik6CisgICAgICAgICAgICAgICAgICAgIHRhc2sgPSAiZG9fezB9Ii5mb3JtYXQodGFzaykKKyAgICAgICAgICAgICAgICBydW5vbmx5X3RpZHMgPSB7IGs6IHYgZm9yIGssIHYgaW4gc2VsZi5ydW50YXNrZW50cmllcy5pdGVtcygpIGlmIHRhc2tuYW1lX2Zyb21fdGlkKGspID09IHRhc2sgfQogCiAgICAgICAgICAgICAgICAgZm9yIHRpZCBpbiBsaXN0KHJ1bm9ubHlfdGlkcyk6CiAgICAgICAgICAgICAgICAgICAgIG1hcmtfYWN0aXZlKHRpZCwxKQpAQCAtMTEyNSwxNCArMTEyNywxNCBAQAogICAgICAgICBzZWxmLmluaXRfcHJvZ3Jlc3NfcmVwb3J0ZXIubmV4dF9zdGFnZSgpCiAKICAgICAgICAgIyBJdGVyYXRlIG92ZXIgdGhlIHRhc2sgbGlzdCBsb29raW5nIGZvciB0YXNrcyB3aXRoIGEgJ3NldHNjZW5lJyBmdW5jdGlvbgotICAgICAgICBzZWxmLnJ1bnFfc2V0c2NlbmVfdGlkcyA9IFtdCisgICAgICAgIHNlbGYucnVucV9zZXRzY2VuZV90aWRzID0gc2V0KCkKICAgICAgICAgaWYgbm90IHNlbGYuY29va2VyLmNvbmZpZ3VyYXRpb24ubm9zZXRzY2VuZToKICAgICAgICAgICAgIGZvciB0aWQgaW4gc2VsZi5ydW50YXNrZW50cmllczoKICAgICAgICAgICAgICAgICAobWMsIGZuLCB0YXNrbmFtZSwgXykgPSBzcGxpdF90aWRfbWNmbih0aWQpCiAgICAgICAgICAgICAgICAgc2V0c2NlbmV0aWQgPSB0aWQgKyAiX3NldHNjZW5lIgogICAgICAgICAgICAgICAgIGlmIHNldHNjZW5ldGlkIG5vdCBpbiB0YXNrRGF0YVttY10udGFza2VudHJpZXM6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgc2VsZi5ydW5xX3NldHNjZW5lX3RpZHMuYXBwZW5kKHRpZCkKKyAgICAgICAgICAgICAgICBzZWxmLnJ1bnFfc2V0c2NlbmVfdGlkcy5hZGQodGlkKQogCiAgICAgICAgIHNlbGYuaW5pdF9wcm9ncmVzc19yZXBvcnRlci5uZXh0X3N0YWdlKCkKIApAQCAtMTE4MiwxMCArMTE4NCw4IEBACiAgICAgICAgIHJldHVybiBsZW4oc2VsZi5ydW50YXNrZW50cmllcykKIAogICAgIGRlZiBwcmVwYXJlX3Rhc2tfaGFzaChzZWxmLCB0aWQpOgotICAgICAgICBwcm9jZGVwID0gW10KLSAgICAgICAgZm9yIGRlcCBpbiBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kczoKLSAgICAgICAgICAgIHByb2NkZXAuYXBwZW5kKGRlcCkKLSAgICAgICAgc2VsZi5ydW50YXNrZW50cmllc1t0aWRdLmhhc2ggPSBiYi5wYXJzZS5zaWdnZW4uZ2V0X3Rhc2toYXNoKHRpZCwgcHJvY2RlcCwgc2VsZi5kYXRhQ2FjaGVzW21jX2Zyb21fdGlkKHRpZCldKQorICAgICAgICBiYi5wYXJzZS5zaWdnZW4ucHJlcF90YXNraGFzaCh0aWQsIHNlbGYucnVudGFza2VudHJpZXNbdGlkXS5kZXBlbmRzLCBzZWxmLmRhdGFDYWNoZXNbbWNfZnJvbV90aWQodGlkKV0pCisgICAgICAgIHNlbGYucnVudGFza2VudHJpZXNbdGlkXS5oYXNoID0gYmIucGFyc2Uuc2lnZ2VuLmdldF90YXNraGFzaCh0aWQsIHNlbGYucnVudGFza2VudHJpZXNbdGlkXS5kZXBlbmRzLCBzZWxmLmRhdGFDYWNoZXNbbWNfZnJvbV90aWQodGlkKV0pCiAgICAgICAgIHNlbGYucnVudGFza2VudHJpZXNbdGlkXS51bmloYXNoID0gYmIucGFyc2Uuc2lnZ2VuLmdldF91bmloYXNoKHRpZCkKIAogICAgIGRlZiBkdW1wX2RhdGEoc2VsZik6CkBAIC0xMjU1LDcgKzEyNTUsNyBAQAogICAgICAgICAgICAgImZha2Vyb290ZGlycyIgOiBzZWxmLnJxZGF0YS5kYXRhQ2FjaGVzW21jXS5mYWtlcm9vdGRpcnMsCiAgICAgICAgICAgICAiZmFrZXJvb3Rub2VudiIgOiBzZWxmLnJxZGF0YS5kYXRhQ2FjaGVzW21jXS5mYWtlcm9vdG5vZW52LAogICAgICAgICAgICAgInNpZ2RhdGEiIDogYmIucGFyc2Uuc2lnZ2VuLmdldF90YXNrZGF0YSgpLAotICAgICAgICAgICAgImxvZ2RlZmF1bHRkZWJ1ZyIgOiBiYi5tc2cubG9nZ2VyRGVmYXVsdERlYnVnTGV2ZWwsCisgICAgICAgICAgICAibG9nZGVmYXVsdGxldmVsIiA6IGJiLm1zZy5sb2dnZXJEZWZhdWx0TG9nTGV2ZWwsCiAgICAgICAgICAgICAibG9nZGVmYXVsdHZlcmJvc2UiIDogYmIubXNnLmxvZ2dlckRlZmF1bHRWZXJib3NlLAogICAgICAgICAgICAgImxvZ2RlZmF1bHR2ZXJib3NlbG9ncyIgOiBiYi5tc2cubG9nZ2VyVmVyYm9zZUxvZ3MsCiAgICAgICAgICAgICAibG9nZGVmYXVsdGRvbWFpbiIgOiBiYi5tc2cubG9nZ2VyRGVmYXVsdERvbWFpbnMsCkBAIC0xNzExLDYgKzE3MTEsNyBAQAogICAgICAgICBzZWxmLnJ1bnFfYnVpbGRhYmxlID0gc2V0KCkKICAgICAgICAgc2VsZi5ydW5xX3J1bm5pbmcgPSBzZXQoKQogICAgICAgICBzZWxmLnJ1bnFfY29tcGxldGUgPSBzZXQoKQorICAgICAgICBzZWxmLnJ1bnFfdGFza3NydW4gPSBzZXQoKQogCiAgICAgICAgIHNlbGYuYnVpbGRfc3RhbXBzID0ge30KICAgICAgICAgc2VsZi5idWlsZF9zdGFtcHMyID0gW10KQEAgLTE4OTYsNiArMTg5Nyw3IEBACiAgICAgICAgIHNlbGYuc3RhdHMudGFza0NvbXBsZXRlZCgpCiAgICAgICAgIGJiLmV2ZW50LmZpcmUocnVuUXVldWVUYXNrQ29tcGxldGVkKHRhc2ssIHNlbGYuc3RhdHMsIHNlbGYucnEpLCBzZWxmLmNmZ0RhdGEpCiAgICAgICAgIHNlbGYudGFza19jb21wbGV0ZW91dHJpZ2h0KHRhc2spCisgICAgICAgIHNlbGYucnVucV90YXNrc3J1bi5hZGQodGFzaykKIAogICAgIGRlZiB0YXNrX2ZhaWwoc2VsZiwgdGFzaywgZXhpdGNvZGUpOgogICAgICAgICAiIiIKQEAgLTE5NjIsMTIgKzE5NjQsMTcgQEAKICAgICAgICAgIiIiCiAKICAgICAgICAgc2VsZi5ycS5yZWFkX3dvcmtlcnMoKQotICAgICAgICBzZWxmLnByb2Nlc3NfcG9zc2libGVfbWlncmF0aW9ucygpCisgICAgICAgIGlmIHNlbGYudXBkYXRlZF90YXNraGFzaF9xdWV1ZSBvciBzZWxmLnBlbmRpbmdfbWlncmF0aW9uczoKKyAgICAgICAgICAgIHNlbGYucHJvY2Vzc19wb3NzaWJsZV9taWdyYXRpb25zKCkKKworICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAic29ydGVkX3NldHNjZW5lX3RpZHMiKToKKyAgICAgICAgICAgICMgRG9uJ3Qgd2FudCB0byBzb3J0IHRoaXMgc2V0IGV2ZXJ5IGV4ZWN1dGlvbgorICAgICAgICAgICAgc2VsZi5zb3J0ZWRfc2V0c2NlbmVfdGlkcyA9IHNvcnRlZChzZWxmLnJxZGF0YS5ydW5xX3NldHNjZW5lX3RpZHMpCiAKICAgICAgICAgdGFzayA9IE5vbmUKICAgICAgICAgaWYgbm90IHNlbGYuc3Fkb25lIGFuZCBzZWxmLmNhbl9zdGFydF90YXNrKCk6CiAgICAgICAgICAgICAjIEZpbmQgdGhlIG5leHQgc2V0c2NlbmUgdG8gcnVuCi0gICAgICAgICAgICBmb3IgbmV4dHRhc2sgaW4gc29ydGVkKHNlbGYucnFkYXRhLnJ1bnFfc2V0c2NlbmVfdGlkcyk6CisgICAgICAgICAgICBmb3IgbmV4dHRhc2sgaW4gc2VsZi5zb3J0ZWRfc2V0c2NlbmVfdGlkczoKICAgICAgICAgICAgICAgICBpZiBuZXh0dGFzayBpbiBzZWxmLnNxX2J1aWxkYWJsZSBhbmQgbmV4dHRhc2sgbm90IGluIHNlbGYuc3FfcnVubmluZyBhbmQgc2VsZi5zcWRhdGEuc3RhbXBzW25leHR0YXNrXSBub3QgaW4gc2VsZi5idWlsZF9zdGFtcHMudmFsdWVzKCk6CiAgICAgICAgICAgICAgICAgICAgIGlmIG5leHR0YXNrIG5vdCBpbiBzZWxmLnNxZGF0YS51bnNraXBwYWJsZSBhbmQgbGVuKHNlbGYuc3FkYXRhLnNxX3JldmRlcHNbbmV4dHRhc2tdKSA+IDAgYW5kIHNlbGYuc3FkYXRhLnNxX3JldmRlcHNbbmV4dHRhc2tdLmlzc3Vic2V0KHNlbGYuc2NlbmVxdWV1ZV9jb3ZlcmVkKSBhbmQgc2VsZi5jaGVja19kZXBlbmRlbmNpZXMobmV4dHRhc2ssIHNlbGYuc3FkYXRhLnNxX3JldmRlcHNbbmV4dHRhc2tdKToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5leHR0YXNrIG5vdCBpbiBzZWxmLnJxZGF0YS50YXJnZXRfdGlkczoKQEAgLTIwNTIsNyArMjA1OSw3IEBACiAgICAgICAgIHNlbGYudXBkYXRlX2hvbGRvZmZ0YXNrcygpCiAKICAgICAgICAgaWYgbm90IHNlbGYuc3FfbGl2ZSBhbmQgbm90IHNlbGYuc3Fkb25lIGFuZCBub3Qgc2VsZi5zcV9kZWZlcnJlZCBhbmQgbm90IHNlbGYudXBkYXRlZF90YXNraGFzaF9xdWV1ZSBhbmQgbm90IHNlbGYuaG9sZG9mZl90YXNrczoKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJTZXRzY2VuZSB0YXNrcyBjb21wbGV0ZWQiKQorICAgICAgICAgICAgaGFzaGVxdWl2X2xvZ2dlci52ZXJib3NlKCJTZXRzY2VuZSB0YXNrcyBjb21wbGV0ZWQiKQogCiAgICAgICAgICAgICBlcnIgPSBzZWxmLnN1bW1hcmlzZV9zY2VuZXF1ZXVlX2Vycm9ycygpCiAgICAgICAgICAgICBpZiBlcnI6CkBAIC0yMDkwLDYgKzIwOTcsNyBAQAogICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiU3RhbXAgY3VycmVudCB0YXNrICVzIiwgdGFzaykKIAogICAgICAgICAgICAgICAgIHNlbGYudGFza19za2lwKHRhc2ssICJleGlzdGluZyIpCisgICAgICAgICAgICAgICAgc2VsZi5ydW5xX3Rhc2tzcnVuLmFkZCh0YXNrKQogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICAgICAgICAgIHRhc2tkZXAgPSBzZWxmLnJxZGF0YS5kYXRhQ2FjaGVzW21jXS50YXNrX2RlcHNbdGFza2ZuXQpAQCAtMjI0OCw2ICsyMjU2LDcgQEAKICAgICBkZWYgcHJvY2Vzc19wb3NzaWJsZV9taWdyYXRpb25zKHNlbGYpOgogCiAgICAgICAgIGNoYW5nZWQgPSBzZXQoKQorICAgICAgICB0b3Byb2Nlc3MgPSBzZXQoKQogICAgICAgICBmb3IgdGlkLCB1bmloYXNoIGluIHNlbGYudXBkYXRlZF90YXNraGFzaF9xdWV1ZS5jb3B5KCk6CiAgICAgICAgICAgICBpZiB0aWQgaW4gc2VsZi5ydW5xX3J1bm5pbmcgYW5kIHRpZCBub3QgaW4gc2VsZi5ydW5xX2NvbXBsZXRlOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC0yMjU1LDQyICsyMjY0LDYzIEBACiAgICAgICAgICAgICBzZWxmLnVwZGF0ZWRfdGFza2hhc2hfcXVldWUucmVtb3ZlKCh0aWQsIHVuaWhhc2gpKQogCiAgICAgICAgICAgICBpZiB1bmloYXNoICE9IHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0udW5paGFzaDoKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiVGFzayAlcyB1bmloYXNoIGNoYW5nZWQgdG8gJXMiICUgKHRpZCwgdW5paGFzaCkpCisgICAgICAgICAgICAgICAgaGFzaGVxdWl2X2xvZ2dlci52ZXJib3NlKCJUYXNrICVzIHVuaWhhc2ggY2hhbmdlZCB0byAlcyIgJSAodGlkLCB1bmloYXNoKSkKICAgICAgICAgICAgICAgICBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLnVuaWhhc2ggPSB1bmloYXNoCiAgICAgICAgICAgICAgICAgYmIucGFyc2Uuc2lnZ2VuLnNldF91bmloYXNoKHRpZCwgdW5paGFzaCkKKyAgICAgICAgICAgICAgICB0b3Byb2Nlc3MuYWRkKHRpZCkKIAotICAgICAgICAgICAgICAgICMgV29yayBvdXQgYWxsIHRhc2tzIHdoaWNoIGRlcGVuZCBvbiB0aGlzIG9uZQotICAgICAgICAgICAgICAgIHRvdGFsID0gc2V0KCkKLSAgICAgICAgICAgICAgICBuZXh0ID0gc2V0KHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0ucmV2ZGVwcykKLSAgICAgICAgICAgICAgICB3aGlsZSBuZXh0OgotICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gbmV4dC5jb3B5KCkKLSAgICAgICAgICAgICAgICAgICAgdG90YWwgPSB0b3RhbCB8bmV4dAotICAgICAgICAgICAgICAgICAgICBuZXh0ID0gc2V0KCkKLSAgICAgICAgICAgICAgICAgICAgZm9yIG50aWQgaW4gY3VycmVudDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgfD0gc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbbnRpZF0ucmV2ZGVwcwotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5kaWZmZXJlbmNlX3VwZGF0ZSh0b3RhbCkKKyAgICAgICAgIyBXb3JrIG91dCBhbGwgdGFza3Mgd2hpY2ggZGVwZW5kIHVwb24gdGhlc2UKKyAgICAgICAgdG90YWwgPSBzZXQoKQorICAgICAgICBuZXh0ID0gc2V0KCkKKyAgICAgICAgZm9yIHAgaW4gdG9wcm9jZXNzOgorICAgICAgICAgICAgbmV4dCB8PSBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1twXS5yZXZkZXBzCisgICAgICAgIHdoaWxlIG5leHQ6CisgICAgICAgICAgICBjdXJyZW50ID0gbmV4dC5jb3B5KCkKKyAgICAgICAgICAgIHRvdGFsID0gdG90YWwgfCBuZXh0CisgICAgICAgICAgICBuZXh0ID0gc2V0KCkKKyAgICAgICAgICAgIGZvciBudGlkIGluIGN1cnJlbnQ6CisgICAgICAgICAgICAgICAgbmV4dCB8PSBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1tudGlkXS5yZXZkZXBzCisgICAgICAgICAgICBuZXh0LmRpZmZlcmVuY2VfdXBkYXRlKHRvdGFsKQogCi0gICAgICAgICAgICAgICAgIyBOb3cgaXRlcmF0ZSB0aG9zZSB0YXNrcyBpbiBkZXBlbmRlbmN5IG9yZGVyIHRvIHJlZ2VuZXJhdGUgdGhlaXIgdGFza2hhc2gvdW5paGFzaAotICAgICAgICAgICAgICAgIGRvbmUgPSBzZXQoKQotICAgICAgICAgICAgICAgIG5leHQgPSBzZXQoc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS5yZXZkZXBzKQotICAgICAgICAgICAgICAgIHdoaWxlIG5leHQ6Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBuZXh0LmNvcHkoKQotICAgICAgICAgICAgICAgICAgICBuZXh0ID0gc2V0KCkKLSAgICAgICAgICAgICAgICAgICAgZm9yIHRpZCBpbiBjdXJyZW50OgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcy5pc2Rpc2pvaW50KHRvdGFsKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2RlcCA9IFtdCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgZGVwIGluIHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZGVwLmFwcGVuZChkZXApCi0gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaGFzaCA9IHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0uaGFzaAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS5oYXNoID0gYmIucGFyc2Uuc2lnZ2VuLmdldF90YXNraGFzaCh0aWQsIHByb2NkZXAsIHNlbGYucnFkYXRhLmRhdGFDYWNoZXNbbWNfZnJvbV90aWQodGlkKV0pCi0gICAgICAgICAgICAgICAgICAgICAgICBvcmlndW5pID0gc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS51bmloYXNoCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLnVuaWhhc2ggPSBiYi5wYXJzZS5zaWdnZW4uZ2V0X3VuaWhhc2godGlkKQotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJUYXNrICVzIGhhc2ggY2hhbmdlczogJXMtPiVzICVzLT4lcyIgJSAodGlkLCBvcmlnaGFzaCwgc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS5oYXNoLCBvcmlndW5pLCBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLnVuaWhhc2gpKQotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCB8PSBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLnJldmRlcHMKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQuYWRkKHRpZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsLnJlbW92ZSh0aWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0LmludGVyc2VjdGlvbl91cGRhdGUodG90YWwpCisgICAgICAgICMgTm93IGl0ZXJhdGUgdGhvc2UgdGFza3MgaW4gZGVwZW5kZW5jeSBvcmRlciB0byByZWdlbmVyYXRlIHRoZWlyIHRhc2toYXNoL3VuaWhhc2gKKyAgICAgICAgbmV4dCA9IHNldCgpCisgICAgICAgIGZvciBwIGluIHRvdGFsOgorICAgICAgICAgICAgaWYgbGVuKHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3BdLmRlcGVuZHMpID09IDA6CisgICAgICAgICAgICAgICAgbmV4dC5hZGQocCkKKyAgICAgICAgICAgIGVsaWYgc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbcF0uZGVwZW5kcy5pc2Rpc2pvaW50KHRvdGFsKToKKyAgICAgICAgICAgICAgICBuZXh0LmFkZChwKQorCisgICAgICAgICMgV2hlbiBhbiBpdGVtIGRvZXNuJ3QgaGF2ZSBkZXBlbmRlbmNpZXMgaW4gdG90YWwsIHdlIGNhbiBwcm9jZXNzIGl0LiBEcm9wIGl0ZW1zIGZyb20gdG90YWwgd2hlbiBoYW5kbGVkCisgICAgICAgIHdoaWxlIG5leHQ6CisgICAgICAgICAgICBjdXJyZW50ID0gbmV4dC5jb3B5KCkKKyAgICAgICAgICAgIG5leHQgPSBzZXQoKQorICAgICAgICAgICAgZm9yIHRpZCBpbiBjdXJyZW50OgorICAgICAgICAgICAgICAgIGlmIGxlbihzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1twXS5kZXBlbmRzKSBhbmQgbm90IHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcy5pc2Rpc2pvaW50KHRvdGFsKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBvcmlnaGFzaCA9IHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0uaGFzaAorICAgICAgICAgICAgICAgIG5ld2hhc2ggPSBiYi5wYXJzZS5zaWdnZW4uZ2V0X3Rhc2toYXNoKHRpZCwgc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS5kZXBlbmRzLCBzZWxmLnJxZGF0YS5kYXRhQ2FjaGVzW21jX2Zyb21fdGlkKHRpZCldKQorICAgICAgICAgICAgICAgIG9yaWd1bmkgPSBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLnVuaWhhc2gKKyAgICAgICAgICAgICAgICBuZXd1bmkgPSBiYi5wYXJzZS5zaWdnZW4uZ2V0X3VuaWhhc2godGlkKQorICAgICAgICAgICAgICAgICMgRklYTUUsIG5lZWQgdG8gY2hlY2sgaXQgY2FuIGNvbWUgZnJvbSBzc3RhdGUgYXQgYWxsIGZvciBkZXRlcm1pbmlzbT8KKyAgICAgICAgICAgICAgICByZW1hcHBlZCA9IEZhbHNlCisgICAgICAgICAgICAgICAgaWYgbmV3dW5pID09IG9yaWd1bmk6CisgICAgICAgICAgICAgICAgICAgICMgTm90aGluZyB0byBkbywgd2UgbWF0Y2gsIHNraXAgY29kZSBiZWxvdworICAgICAgICAgICAgICAgICAgICByZW1hcHBlZCA9IFRydWUKKyAgICAgICAgICAgICAgICBlbGlmIHRpZCBpbiBzZWxmLnNjZW5lcXVldWVfY292ZXJlZCBvciB0aWQgaW4gc2VsZi5zcV9saXZlOgorICAgICAgICAgICAgICAgICAgICAjIEFscmVhZHkgcmFuIHRoaXMgc2V0c2NlbmUgdGFzayBvciBpdCBydW5uaW5nLiBSZXBvcnQgdGhlIG5ldyB0YXNraGFzaAorICAgICAgICAgICAgICAgICAgICBiYi5wYXJzZS5zaWdnZW4ucmVwb3J0X3VuaWhhc2hfZXF1aXYodGlkLCBuZXdoYXNoLCBvcmlndW5pLCBuZXd1bmksIHNlbGYucnFkYXRhLmRhdGFDYWNoZXMpCisgICAgICAgICAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIudmVyYm9zZSgiQWxyZWFkeSBjb3ZlcmVkIHNldHNjZW5lIGZvciAlcyBzbyBpZ25vcmluZyByZWhhc2ggKHJlbWFwKSIgJSAodGlkKSkKKyAgICAgICAgICAgICAgICAgICAgcmVtYXBwZWQgPSBUcnVlCisKKyAgICAgICAgICAgICAgICBpZiBub3QgcmVtYXBwZWQ6CisgICAgICAgICAgICAgICAgICAgICNsb2dnZXIuZGVidWcoMSwgIlRhc2sgJXMgaGFzaCBjaGFuZ2VzOiAlcy0+JXMgJXMtPiVzIiAlICh0aWQsIG9yaWdoYXNoLCBuZXdoYXNoLCBvcmlndW5pLCBuZXd1bmkpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLmhhc2ggPSBuZXdoYXNoCisgICAgICAgICAgICAgICAgICAgIHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0udW5paGFzaCA9IG5ld3VuaQorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkLmFkZCh0aWQpCisKKyAgICAgICAgICAgICAgICBuZXh0IHw9IHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0ucmV2ZGVwcworICAgICAgICAgICAgICAgIHRvdGFsLnJlbW92ZSh0aWQpCisgICAgICAgICAgICAgICAgbmV4dC5pbnRlcnNlY3Rpb25fdXBkYXRlKHRvdGFsKQogCiAgICAgICAgIGlmIGNoYW5nZWQ6CiAgICAgICAgICAgICBmb3IgbWMgaW4gc2VsZi5ycS53b3JrZXI6CkBAIC0yMjk4LDcgKzIzMjgsNyBAQAogICAgICAgICAgICAgZm9yIG1jIGluIHNlbGYucnEuZmFrZXdvcmtlcjoKICAgICAgICAgICAgICAgICBzZWxmLnJxLmZha2V3b3JrZXJbbWNdLnByb2Nlc3Muc3RkaW4ud3JpdGUoYiI8bmV3dGFza2hhc2hlcz4iICsgcGlja2xlLmR1bXBzKGJiLnBhcnNlLnNpZ2dlbi5nZXRfdGFza2hhc2hlcygpKSArIGIiPC9uZXd0YXNraGFzaGVzPiIpCiAKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCBwcHJpbnQucGZvcm1hdCgiVGFza3MgY2hhbmdlZDpcbiVzIiAlIChjaGFuZ2VkKSkpCisgICAgICAgICAgICBoYXNoZXF1aXZfbG9nZ2VyLmRlYnVnKDEsIHBwcmludC5wZm9ybWF0KCJUYXNrcyBjaGFuZ2VkOlxuJXMiICUgKGNoYW5nZWQpKSkKIAogICAgICAgICBmb3IgdGlkIGluIGNoYW5nZWQ6CiAgICAgICAgICAgICBpZiB0aWQgbm90IGluIHNlbGYucnFkYXRhLnJ1bnFfc2V0c2NlbmVfdGlkczoKQEAgLTIzMDYsMjQgKzIzMzYsMTggQEAKICAgICAgICAgICAgIGlmIHRpZCBub3QgaW4gc2VsZi5wZW5kaW5nX21pZ3JhdGlvbnM6CiAgICAgICAgICAgICAgICAgc2VsZi5wZW5kaW5nX21pZ3JhdGlvbnMuYWRkKHRpZCkKIAorICAgICAgICB1cGRhdGVfdGFza3MgPSBbXQogICAgICAgICBmb3IgdGlkIGluIHNlbGYucGVuZGluZ19taWdyYXRpb25zLmNvcHkoKToKLSAgICAgICAgICAgIGlmIHRpZCBpbiBzZWxmLnJ1bnFfcnVubmluZzoKKyAgICAgICAgICAgIGlmIHRpZCBpbiBzZWxmLnJ1bnFfcnVubmluZyBvciB0aWQgaW4gc2VsZi5zcV9saXZlOgogICAgICAgICAgICAgICAgICMgVG9vIGxhdGUsIHRhc2sgYWxyZWFkeSBydW5uaW5nLCBub3QgbXVjaCB3ZSBjYW4gZG8gbm93CiAgICAgICAgICAgICAgICAgc2VsZi5wZW5kaW5nX21pZ3JhdGlvbnMucmVtb3ZlKHRpZCkKICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICBpZiB0aWQgaW4gc2VsZi5zY2VuZXF1ZXVlX2NvdmVyZWQgb3IgdGlkIGluIHNlbGYuc3FfbGl2ZToKLSAgICAgICAgICAgICAgICAjIEFscmVhZHkgcmFuIHRoaXMgc2V0c2NlbmUgdGFzayBvciBpdCBydW5uaW5nCi0gICAgICAgICAgICAgICAgIyBQb3RlbnRpYWxseSByaXNreSwgc2hvdWxkIHdlIHJlcG9ydCB0aGlzIGhhc2ggYXMgYSBtYXRjaD8KLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiQWxyZWFkeSBjb3ZlcmVkIHNldHNjZW5lIGZvciAlcyBzbyBpZ25vcmluZyByZWhhc2giICUgKHRpZCkpCi0gICAgICAgICAgICAgICAgc2VsZi5wZW5kaW5nX21pZ3JhdGlvbnMucmVtb3ZlKHRpZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCiAgICAgICAgICAgICB2YWxpZCA9IFRydWUKICAgICAgICAgICAgICMgQ2hlY2sgbm8gdGFza3MgdGhpcyBjb3ZlcnMgYXJlIHJ1bm5pbmcKICAgICAgICAgICAgIGZvciBkZXAgaW4gc2VsZi5zcWRhdGEuc3FfY292ZXJlZF90YXNrc1t0aWRdOgogICAgICAgICAgICAgICAgIGlmIGRlcCBpbiBzZWxmLnJ1bnFfcnVubmluZyBhbmQgZGVwIG5vdCBpbiBzZWxmLnJ1bnFfY29tcGxldGU6Ci0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiVGFzayAlcyBpcyBydW5uaW5nIHdoaWNoIGJsb2NrcyBzZXRzY2VuZSBmb3IgJXMgZnJvbSBydW5uaW5nIiAlIChkZXAsIHRpZCkpCisgICAgICAgICAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIuZGVidWcoMiwgIlRhc2sgJXMgaXMgcnVubmluZyB3aGljaCBibG9ja3Mgc2V0c2NlbmUgZm9yICVzIGZyb20gcnVubmluZyIgJSAoZGVwLCB0aWQpKQogICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBpZiBub3QgdmFsaWQ6CkBAIC0yMzM1LDYgKzIzNTksMTIgQEAKICAgICAgICAgICAgIGlmIHRpZCBpbiBzZWxmLnRhc2tzX3NjZW5lcXVldWVfZG9uZToKICAgICAgICAgICAgICAgICBzZWxmLnRhc2tzX3NjZW5lcXVldWVfZG9uZS5yZW1vdmUodGlkKQogICAgICAgICAgICAgZm9yIGRlcCBpbiBzZWxmLnNxZGF0YS5zcV9jb3ZlcmVkX3Rhc2tzW3RpZF06CisgICAgICAgICAgICAgICAgaWYgZGVwIGluIHNlbGYucnVucV9jb21wbGV0ZSBhbmQgZGVwIG5vdCBpbiBzZWxmLnJ1bnFfdGFza3NydW46CisgICAgICAgICAgICAgICAgICAgIGJiLmVycm9yKCJUYXNrICVzIG1hcmtlZCBhcyBjb21wbGV0ZWQgYnV0IG5vdyBuZWVkaW5nIHRvIHJlcnVuPyBBYm9ydGluZyBidWlsZC4iICUgZGVwKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWxlZF90aWRzLmFwcGVuZCh0aWQpCisgICAgICAgICAgICAgICAgICAgIHNlbGYucnEuc3RhdGUgPSBydW5RdWV1ZUNsZWFuVXAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgICAgICAgICBpZiBkZXAgbm90IGluIHNlbGYucnVucV9jb21wbGV0ZToKICAgICAgICAgICAgICAgICAgICAgaWYgZGVwIGluIHNlbGYudGFza3Nfc2NlbmVxdWV1ZV9kb25lIGFuZCBkZXAgbm90IGluIHNlbGYuc3FkYXRhLnVuc2tpcHBhYmxlOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50YXNrc19zY2VuZXF1ZXVlX2RvbmUucmVtb3ZlKGRlcCkKQEAgLTIzNDMsNyArMjM3MywxMiBAQAogICAgICAgICAgICAgICAgIHNlbGYuc3FfYnVpbGRhYmxlLnJlbW92ZSh0aWQpCiAgICAgICAgICAgICBpZiB0aWQgaW4gc2VsZi5zcV9ydW5uaW5nOgogICAgICAgICAgICAgICAgIHNlbGYuc3FfcnVubmluZy5yZW1vdmUodGlkKQotICAgICAgICAgICAgaWYgc2VsZi5zcWRhdGEuc3FfcmV2ZGVwc1t0aWRdLmlzc3Vic2V0KHNlbGYuc2NlbmVxdWV1ZV9jb3ZlcmVkIHwgc2VsZi5zY2VuZXF1ZXVlX25vdGNvdmVyZWQpOgorICAgICAgICAgICAgaGFyZGRlcGZhaWwgPSBGYWxzZQorICAgICAgICAgICAgZm9yIHQgaW4gc2VsZi5zcWRhdGEuc3FfaGFyZGRlcHM6CisgICAgICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYuc3FkYXRhLnNxX2hhcmRkZXBzW3RdIGFuZCB0IGluIHNlbGYuc2NlbmVxdWV1ZV9ub3Rjb3ZlcmVkOgorICAgICAgICAgICAgICAgICAgICBoYXJkZGVwZmFpbCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIG5vdCBoYXJkZGVwZmFpbCBhbmQgc2VsZi5zcWRhdGEuc3FfcmV2ZGVwc1t0aWRdLmlzc3Vic2V0KHNlbGYuc2NlbmVxdWV1ZV9jb3ZlcmVkIHwgc2VsZi5zY2VuZXF1ZXVlX25vdGNvdmVyZWQpOgogICAgICAgICAgICAgICAgIGlmIHRpZCBub3QgaW4gc2VsZi5zcV9idWlsZGFibGU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3FfYnVpbGRhYmxlLmFkZCh0aWQpCiAgICAgICAgICAgICBpZiBsZW4oc2VsZi5zcWRhdGEuc3FfcmV2ZGVwc1t0aWRdKSA9PSAwOgpAQCAtMjM2NywxMyArMjQwMiwxNyBAQAogICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYuYnVpbGRfc3RhbXBzOgogICAgICAgICAgICAgICAgIGRlbCBzZWxmLmJ1aWxkX3N0YW1wc1t0aWRdCiAKLSAgICAgICAgICAgIG9yaWd2YWxpZCA9IEZhbHNlCi0gICAgICAgICAgICBpZiB0aWQgaW4gc2VsZi5zcWRhdGEudmFsaWQ6Ci0gICAgICAgICAgICAgICAgb3JpZ3ZhbGlkID0gVHJ1ZQorICAgICAgICAgICAgdXBkYXRlX3Rhc2tzLmFwcGVuZCgodGlkLCBoYXJkZGVwZmFpbCwgdGlkIGluIHNlbGYuc3FkYXRhLnZhbGlkKSkKKworICAgICAgICBpZiB1cGRhdGVfdGFza3M6CiAgICAgICAgICAgICBzZWxmLnNxZG9uZSA9IEZhbHNlCi0gICAgICAgICAgICB1cGRhdGVfc2NlbmVxdWV1ZV9kYXRhKFt0aWRdLCBzZWxmLnNxZGF0YSwgc2VsZi5ycWRhdGEsIHNlbGYucnEsIHNlbGYuY29va2VyLCBzZWxmLnN0YW1wY2FjaGUsIHNlbGYsIHN1bW1hcnk9RmFsc2UpCisgICAgICAgICAgICB1cGRhdGVfc2NlbmVxdWV1ZV9kYXRhKFt0WzBdIGZvciB0IGluIHVwZGF0ZV90YXNrc10sIHNlbGYuc3FkYXRhLCBzZWxmLnJxZGF0YSwgc2VsZi5ycSwgc2VsZi5jb29rZXIsIHNlbGYuc3RhbXBjYWNoZSwgc2VsZiwgc3VtbWFyeT1GYWxzZSkKKworICAgICAgICBmb3IgKHRpZCwgaGFyZGRlcGZhaWwsIG9yaWd2YWxpZCkgaW4gdXBkYXRlX3Rhc2tzOgogICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYuc3FkYXRhLnZhbGlkIGFuZCBub3Qgb3JpZ3ZhbGlkOgotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJTZXRzY2VuZSB0YXNrICVzIGJlY2FtZSB2YWxpZCIgJSB0aWQpCisgICAgICAgICAgICAgICAgaGFzaGVxdWl2X2xvZ2dlci52ZXJib3NlKCJTZXRzY2VuZSB0YXNrICVzIGJlY2FtZSB2YWxpZCIgJSB0aWQpCisgICAgICAgICAgICBpZiBoYXJkZGVwZmFpbDoKKyAgICAgICAgICAgICAgICBzZWxmLnNxX3Rhc2tfZmFpbG91dHJpZ2h0KHRpZCkKIAogICAgICAgICBpZiBjaGFuZ2VkOgogICAgICAgICAgICAgc2VsZi5ob2xkb2ZmX25lZWRfdXBkYXRlID0gVHJ1ZQpAQCAtMjUxMCw2ICsyNTQ5LDggQEAKICAgICAgICAgICAgICAgICBtc2cgPSAnVGFzayAlcy4lcyBhdHRlbXB0ZWQgdG8gZXhlY3V0ZSB1bmV4cGVjdGVkbHkgYW5kIHNob3VsZCBoYXZlIGJlZW4gc2V0c2NlbmVkJyAlIChwbiwgdGFza25hbWUpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG1zZyA9ICdUYXNrICVzLiVzIGF0dGVtcHRlZCB0byBleGVjdXRlIHVuZXhwZWN0ZWRseScgJSAocG4sIHRhc2tuYW1lKQorICAgICAgICAgICAgZm9yIHQgaW4gc2VsZi5zY2VuZXF1ZXVlX25vdGNvdmVyZWQ6CisgICAgICAgICAgICAgICAgbXNnID0gbXNnICsgIlxuVGFzayAlcywgdW5paGFzaCAlcywgdGFza2hhc2ggJXMiICUgKHQsIHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RdLnVuaWhhc2gsIHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RdLmhhc2gpCiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IobXNnICsgJ1xuVGhpcyBpcyB1c3VhbGx5IGR1ZSB0byBtaXNzaW5nIHNldHNjZW5lIHRhc2tzLiBUaG9zZSBtaXNzaW5nIGluIHRoaXMgYnVpbGQgd2VyZTogJXMnICUgcHByaW50LnBmb3JtYXQoc2VsZi5zY2VuZXF1ZXVlX25vdGNvdmVyZWQpKQogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0yNzYwLDcgKzI4MDEsNyBAQAogICAgICAgICAgICAgICAgIHNxZGF0YS5oYXNoZXNbaF0gPSB0aWQKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc3FycS5zcV9kZWZlcnJlZFt0aWRdID0gc3FkYXRhLmhhc2hlc1toXQotICAgICAgICAgICAgICAgIGJiLndhcm4oIkRlZmVycmluZyAlcyBhZnRlciAlcyIgJSAodGlkLCBzcWRhdGEuaGFzaGVzW2hdKSkKKyAgICAgICAgICAgICAgICBiYi5ub3RlKCJEZWZlcnJpbmcgJXMgYWZ0ZXIgJXMiICUgKHRpZCwgc3FkYXRhLmhhc2hlc1toXSkpCiAKIAogY2xhc3MgVGFza0ZhaWx1cmUoRXhjZXB0aW9uKToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3htbHJwY2NsaWVudC5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3htbHJwY2NsaWVudC5weQppbmRleCBjMDU0YzNjLi40NDJlYTdiIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci94bWxycGNjbGllbnQucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIveG1scnBjY2xpZW50LnB5CkBAIC03LDkgKzcsNiBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgaHR0cC5jbGllbnQKIGltcG9ydCB4bWxycGMuY2xpZW50CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci94bWxycGNzZXJ2ZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci94bWxycGNzZXJ2ZXIucHkKaW5kZXggNTRmYTMyZi4uMmZhNzFiZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIveG1scnBjc2VydmVyLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3htbHJwY3NlcnZlci5weQpAQCAtNyw5ICs3LDYgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQogaW1wb3J0IGhhc2hsaWIKIGltcG9ydCB0aW1lCiBpbXBvcnQgaW5zcGVjdApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9zaWdnZW4ucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3NpZ2dlbi5weQppbmRleCBhNGJiMWZmLi40YzhkODFjIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3NpZ2dlbi5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3NpZ2dlbi5weQpAQCAtMTYsNiArMTYsNyBAQAogaW1wb3J0IGhhc2hzZXJ2CiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdCaXRCYWtlLlNpZ0dlbicpCitoYXNoZXF1aXZfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ0JpdEJha2UuU2lnR2VuLkhhc2hFcXVpdicpCiAKIGRlZiBpbml0KGQpOgogICAgIHNpZ2dlbnMgPSBbb2JqIGZvciBvYmogaW4gZ2xvYmFscygpLnZhbHVlcygpCkBAIC00MCwxOCArNDEsMjYgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YSk6CiAgICAgICAgIHNlbGYuYmFzZWhhc2ggPSB7fQogICAgICAgICBzZWxmLnRhc2toYXNoID0ge30KKyAgICAgICAgc2VsZi51bmloYXNoID0ge30KICAgICAgICAgc2VsZi5ydW50YXNrZGVwcyA9IHt9CiAgICAgICAgIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXMgPSB7fQogICAgICAgICBzZWxmLnRhaW50cyA9IHt9CiAgICAgICAgIHNlbGYudW5pdGFza2hhc2hlcyA9IHt9Ci0gICAgICAgIHNlbGYuc2V0c2NlbmV0YXNrcyA9IHt9CisgICAgICAgIHNlbGYudGlkdG9wbiA9IHt9CisgICAgICAgIHNlbGYuc2V0c2NlbmV0YXNrcyA9IHNldCgpCiAKICAgICBkZWYgZmluYWxpc2Uoc2VsZiwgZm4sIGQsIHZhcmllbnQpOgogICAgICAgICByZXR1cm4KIAorICAgIGRlZiBwb3N0cGFyc2luZ19jbGVhbl9jYWNoZShzZWxmKToKKyAgICAgICAgcmV0dXJuCisKICAgICBkZWYgZ2V0X3VuaWhhc2goc2VsZiwgdGlkKToKICAgICAgICAgcmV0dXJuIHNlbGYudGFza2hhc2hbdGlkXQogCisgICAgZGVmIHByZXBfdGFza2hhc2goc2VsZiwgdGlkLCBkZXBzLCBkYXRhQ2FjaGUpOgorICAgICAgICByZXR1cm4KKwogICAgIGRlZiBnZXRfdGFza2hhc2goc2VsZiwgdGlkLCBkZXBzLCBkYXRhQ2FjaGUpOgogICAgICAgICBzZWxmLnRhc2toYXNoW3RpZF0gPSBoYXNobGliLnNoYTI1Nih0aWQuZW5jb2RlKCJ1dGYtOCIpKS5oZXhkaWdlc3QoKQogICAgICAgICByZXR1cm4gc2VsZi50YXNraGFzaFt0aWRdCkBAIC03NiwxOSArODUsMTkgQEAKICAgICAgICAgcmV0dXJuCiAKICAgICBkZWYgZ2V0X3Rhc2tkYXRhKHNlbGYpOgotICAgICAgICByZXR1cm4gKHNlbGYucnVudGFza2RlcHMsIHNlbGYudGFza2hhc2gsIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXMsIHNlbGYudGFpbnRzLCBzZWxmLmJhc2VoYXNoLCBzZWxmLnVuaXRhc2toYXNoZXMsIHNlbGYuc2V0c2NlbmV0YXNrcykKKyAgICAgICAgcmV0dXJuIChzZWxmLnJ1bnRhc2tkZXBzLCBzZWxmLnRhc2toYXNoLCBzZWxmLnVuaWhhc2gsIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXMsIHNlbGYudGFpbnRzLCBzZWxmLmJhc2VoYXNoLCBzZWxmLnVuaXRhc2toYXNoZXMsIHNlbGYudGlkdG9wbiwgc2VsZi5zZXRzY2VuZXRhc2tzKQogCiAgICAgZGVmIHNldF90YXNrZGF0YShzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5ydW50YXNrZGVwcywgc2VsZi50YXNraGFzaCwgc2VsZi5maWxlX2NoZWNrc3VtX3ZhbHVlcywgc2VsZi50YWludHMsIHNlbGYuYmFzZWhhc2gsIHNlbGYudW5pdGFza2hhc2hlcywgc2VsZi5zZXRzY2VuZXRhc2tzID0gZGF0YQorICAgICAgICBzZWxmLnJ1bnRhc2tkZXBzLCBzZWxmLnRhc2toYXNoLCBzZWxmLnVuaWhhc2gsIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXMsIHNlbGYudGFpbnRzLCBzZWxmLmJhc2VoYXNoLCBzZWxmLnVuaXRhc2toYXNoZXMsIHNlbGYudGlkdG9wbiwgc2VsZi5zZXRzY2VuZXRhc2tzID0gZGF0YQogCiAgICAgZGVmIHJlc2V0KHNlbGYsIGRhdGEpOgogICAgICAgICBzZWxmLl9faW5pdF9fKGRhdGEpCiAKICAgICBkZWYgZ2V0X3Rhc2toYXNoZXMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRhc2toYXNoLCBzZWxmLnVuaXRhc2toYXNoZXMKKyAgICAgICAgcmV0dXJuIHNlbGYudGFza2hhc2gsIHNlbGYudW5paGFzaCwgc2VsZi51bml0YXNraGFzaGVzLCBzZWxmLnRpZHRvcG4KIAogICAgIGRlZiBzZXRfdGFza2hhc2hlcyhzZWxmLCBoYXNoZXMpOgotICAgICAgICBzZWxmLnRhc2toYXNoLCBzZWxmLnVuaXRhc2toYXNoZXMgPSBoYXNoZXMKKyAgICAgICAgc2VsZi50YXNraGFzaCwgc2VsZi51bmloYXNoLCBzZWxmLnVuaXRhc2toYXNoZXMsIHNlbGYudGlkdG9wbiA9IGhhc2hlcwogCiAgICAgZGVmIHNhdmVfdW5pdGFza2hhc2hlcyhzZWxmKToKICAgICAgICAgcmV0dXJuCkBAIC0xMDQsMTMgKzExMywxNCBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhKToKICAgICAgICAgc2VsZi5iYXNlaGFzaCA9IHt9CiAgICAgICAgIHNlbGYudGFza2hhc2ggPSB7fQorICAgICAgICBzZWxmLnVuaWhhc2ggPSB7fQogICAgICAgICBzZWxmLnRhc2tkZXBzID0ge30KICAgICAgICAgc2VsZi5ydW50YXNrZGVwcyA9IHt9CiAgICAgICAgIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXMgPSB7fQogICAgICAgICBzZWxmLnRhaW50cyA9IHt9CiAgICAgICAgIHNlbGYuZ2VuZGVwcyA9IHt9CiAgICAgICAgIHNlbGYubG9va3VwY2FjaGUgPSB7fQotICAgICAgICBzZWxmLnNldHNjZW5ldGFza3MgPSB7fQorICAgICAgICBzZWxmLnNldHNjZW5ldGFza3MgPSBzZXQoKQogICAgICAgICBzZWxmLmJhc2V3aGl0ZWxpc3QgPSBzZXQoKGRhdGEuZ2V0VmFyKCJCQl9IQVNIQkFTRV9XSElURUxJU1QiKSBvciAiIikuc3BsaXQoKSkKICAgICAgICAgc2VsZi50YXNrd2hpdGVsaXN0ID0gTm9uZQogICAgICAgICBzZWxmLmluaXRfcnVuZGVwY2hlY2soZGF0YSkKQEAgLTEyMSw4ICsxMzEsMTAgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuY2hlY2tzdW1fY2FjaGUgPSBOb25lCiAKLSAgICAgICAgc2VsZi51bmloYXNoX2NhY2hlID0gYmIuY2FjaGUuU2ltcGxlQ2FjaGUoIjEiKQorICAgICAgICBzZWxmLnVuaWhhc2hfY2FjaGUgPSBiYi5jYWNoZS5TaW1wbGVDYWNoZSgiMyIpCiAgICAgICAgIHNlbGYudW5pdGFza2hhc2hlcyA9IHNlbGYudW5paGFzaF9jYWNoZS5pbml0X2NhY2hlKGRhdGEsICJiYl91bmloYXNoZXMuZGF0Iiwge30pCisgICAgICAgIHNlbGYubG9jYWxkaXJzZXhjbHVkZSA9IChkYXRhLmdldFZhcigiQkJfU0lHTkFUVVJFX0xPQ0FMX0RJUlNfRVhDTFVERSIpIG9yICJDVlMgLmJ6ciAuZ2l0IC5oZyAub3NjIC5wNCAucmVwbyAuc3ZuIikuc3BsaXQoKQorICAgICAgICBzZWxmLnRpZHRvcG4gPSB7fQogCiAgICAgZGVmIGluaXRfcnVuZGVwY2hlY2soc2VsZiwgZGF0YSk6CiAgICAgICAgIHNlbGYudGFza3doaXRlbGlzdCA9IGRhdGEuZ2V0VmFyKCJCQl9IQVNIVEFTS19XSElURUxJU1QiKSBvciBOb25lCkBAIC0xMzQsNyArMTQ2LDcgQEAKICAgICBkZWYgX2J1aWxkX2RhdGEoc2VsZiwgZm4sIGQpOgogCiAgICAgICAgIGlnbm9yZV9taXNtYXRjaCA9ICgoZC5nZXRWYXIoIkJCX0hBU0hfSUdOT1JFX01JU01BVENIIikgb3IgJycpID09ICcxJykKLSAgICAgICAgdGFza2xpc3QsIGdlbmRlcHMsIGxvb2t1cGNhY2hlID0gYmIuZGF0YS5nZW5lcmF0ZV9kZXBlbmRlbmNpZXMoZCkKKyAgICAgICAgdGFza2xpc3QsIGdlbmRlcHMsIGxvb2t1cGNhY2hlID0gYmIuZGF0YS5nZW5lcmF0ZV9kZXBlbmRlbmNpZXMoZCwgc2VsZi5iYXNld2hpdGVsaXN0KQogCiAgICAgICAgIHRhc2tkZXBzLCBiYXNlaGFzaCA9IGJiLmRhdGEuZ2VuZXJhdGVfZGVwZW5kZW5jeV9oYXNoKHRhc2tsaXN0LCBnZW5kZXBzLCBsb29rdXBjYWNoZSwgc2VsZi5iYXNld2hpdGVsaXN0LCBmbikKIApAQCAtMTU3LDcgKzE2OSw3IEBACiAgICAgICAgIHJldHVybiB0YXNrZGVwcwogCiAgICAgZGVmIHNldF9zZXRzY2VuZV90YXNrcyhzZWxmLCBzZXRzY2VuZV90YXNrcyk6Ci0gICAgICAgIHNlbGYuc2V0c2NlbmV0YXNrcyA9IHNldHNjZW5lX3Rhc2tzCisgICAgICAgIHNlbGYuc2V0c2NlbmV0YXNrcyA9IHNldChzZXRzY2VuZV90YXNrcykKIAogICAgIGRlZiBmaW5hbGlzZShzZWxmLCBmbiwgZCwgdmFyaWFudCk6CiAKQEAgLTE4MCw2ICsxOTIsMTQgQEAKICAgICAgICAgZm9yIHRhc2sgaW4gdGFza2RlcHM6CiAgICAgICAgICAgICBkLnNldFZhcigiQkJfQkFTRUhBU0hfdGFzay0lcyIgJSB0YXNrLCBzZWxmLmJhc2VoYXNoW2ZuICsgIjoiICsgdGFza10pCiAKKyAgICBkZWYgcG9zdHBhcnNpbmdfY2xlYW5fY2FjaGUoc2VsZik6CisgICAgICAgICMKKyAgICAgICAgIyBBZnRlciBwYXJzaW5nIHdlIGNhbiByZW1vdmUgc29tZSB0aGluZ3MgZnJvbSBtZW1vcnkgdG8gcmVkdWNlIG91ciBtZW1vcnkgZm9vdHByaW50CisgICAgICAgICMKKyAgICAgICAgc2VsZi5nZW5kZXBzID0ge30KKyAgICAgICAgc2VsZi5sb29rdXBjYWNoZSA9IHt9CisgICAgICAgIHNlbGYudGFza2RlcHMgPSB7fQorCiAgICAgZGVmIHJ1bmRlcF9jaGVjayhzZWxmLCBmbiwgcmVjaXBlbmFtZSwgdGFzaywgZGVwLCBkZXBuYW1lLCBkYXRhQ2FjaGUpOgogICAgICAgICAjIFJldHVybiBUcnVlIGlmIHdlIHNob3VsZCBrZWVwIHRoZSBkZXBlbmRlbmN5LCBGYWxzZSB0byBkcm9wIGl0CiAgICAgICAgICMgV2Ugb25seSBtYW5pcHVsYXRlIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHBhY2thZ2VzIG5vdCBpbiB0aGUgd2hpdGVsaXN0CkBAIC0xOTgsMTUgKzIxOCwxNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICByZXR1cm4gdGFpbnQKIAotICAgIGRlZiBnZXRfdGFza2hhc2goc2VsZiwgdGlkLCBkZXBzLCBkYXRhQ2FjaGUpOgorICAgIGRlZiBwcmVwX3Rhc2toYXNoKHNlbGYsIHRpZCwgZGVwcywgZGF0YUNhY2hlKToKIAogICAgICAgICAobWMsIF8sIHRhc2ssIGZuKSA9IGJiLnJ1bnF1ZXVlLnNwbGl0X3RpZF9tY2ZuKHRpZCkKIAotICAgICAgICBkYXRhID0gZGF0YUNhY2hlLmJhc2V0YXNraGFzaFt0aWRdCi0gICAgICAgIHNlbGYuYmFzZWhhc2hbdGlkXSA9IGRhdGEKKyAgICAgICAgc2VsZi5iYXNlaGFzaFt0aWRdID0gZGF0YUNhY2hlLmJhc2V0YXNraGFzaFt0aWRdCiAgICAgICAgIHNlbGYucnVudGFza2RlcHNbdGlkXSA9IFtdCiAgICAgICAgIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXNbdGlkXSA9IFtdCiAgICAgICAgIHJlY2lwZW5hbWUgPSBkYXRhQ2FjaGUucGtnX2ZuW2ZuXQorCisgICAgICAgIHNlbGYudGlkdG9wblt0aWRdID0gcmVjaXBlbmFtZQorCiAgICAgICAgIGZvciBkZXAgaW4gc29ydGVkKGRlcHMsIGtleT1jbGVhbl9iYXNlcGF0aCk6CiAgICAgICAgICAgICAoZGVwbWMsIF8sIGRlcHRhc2tuYW1lLCBkZXBmbikgPSBiYi5ydW5xdWV1ZS5zcGxpdF90aWRfbWNmbihkZXApCiAgICAgICAgICAgICBpZiBtYyAhPSBkZXBtYzoKQEAgLTIxNiwzMyArMjM4LDU2IEBACiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGRlcCBub3QgaW4gc2VsZi50YXNraGFzaDoKICAgICAgICAgICAgICAgICBiYi5mYXRhbCgiJXMgaXMgbm90IGluIHRhc2toYXNoLCBjYWxsZXIgaXNuJ3QgY2FsbGluZyBpbiBkZXBlbmRlbmN5IG9yZGVyPyIgJSBkZXApCi0gICAgICAgICAgICBkYXRhID0gZGF0YSArIHNlbGYuZ2V0X3VuaWhhc2goZGVwKQogICAgICAgICAgICAgc2VsZi5ydW50YXNrZGVwc1t0aWRdLmFwcGVuZChkZXApCiAKICAgICAgICAgaWYgdGFzayBpbiBkYXRhQ2FjaGUuZmlsZV9jaGVja3N1bXNbZm5dOgogICAgICAgICAgICAgaWYgc2VsZi5jaGVja3N1bV9jYWNoZToKLSAgICAgICAgICAgICAgICBjaGVja3N1bXMgPSBzZWxmLmNoZWNrc3VtX2NhY2hlLmdldF9jaGVja3N1bXMoZGF0YUNhY2hlLmZpbGVfY2hlY2tzdW1zW2ZuXVt0YXNrXSwgcmVjaXBlbmFtZSkKKyAgICAgICAgICAgICAgICBjaGVja3N1bXMgPSBzZWxmLmNoZWNrc3VtX2NhY2hlLmdldF9jaGVja3N1bXMoZGF0YUNhY2hlLmZpbGVfY2hlY2tzdW1zW2ZuXVt0YXNrXSwgcmVjaXBlbmFtZSwgc2VsZi5sb2NhbGRpcnNleGNsdWRlKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjaGVja3N1bXMgPSBiYi5mZXRjaDIuZ2V0X2ZpbGVfY2hlY2tzdW1zKGRhdGFDYWNoZS5maWxlX2NoZWNrc3Vtc1tmbl1bdGFza10sIHJlY2lwZW5hbWUpCisgICAgICAgICAgICAgICAgY2hlY2tzdW1zID0gYmIuZmV0Y2gyLmdldF9maWxlX2NoZWNrc3VtcyhkYXRhQ2FjaGUuZmlsZV9jaGVja3N1bXNbZm5dW3Rhc2tdLCByZWNpcGVuYW1lLCBzZWxmLmxvY2FsZGlyc2V4Y2x1ZGUpCiAgICAgICAgICAgICBmb3IgKGYsY3MpIGluIGNoZWNrc3VtczoKICAgICAgICAgICAgICAgICBzZWxmLmZpbGVfY2hlY2tzdW1fdmFsdWVzW3RpZF0uYXBwZW5kKChmLGNzKSkKLSAgICAgICAgICAgICAgICBpZiBjczoKLSAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBjcwogCiAgICAgICAgIHRhc2tkZXAgPSBkYXRhQ2FjaGUudGFza19kZXBzW2ZuXQogICAgICAgICBpZiAnbm9zdGFtcCcgaW4gdGFza2RlcCBhbmQgdGFzayBpbiB0YXNrZGVwWydub3N0YW1wJ106CiAgICAgICAgICAgICAjIE5vc3RhbXAgdGFza3MgbmVlZCBhbiBpbXBsaWNpdCB0YWludCBzbyB0aGF0IHRoZXkgZm9yY2UgYW55IGRlcGVuZGVudCB0YXNrcyB0byBydW4KLSAgICAgICAgICAgIGltcG9ydCB1dWlkCi0gICAgICAgICAgICB0YWludCA9IHN0cih1dWlkLnV1aWQ0KCkpCi0gICAgICAgICAgICBkYXRhID0gZGF0YSArIHRhaW50Ci0gICAgICAgICAgICBzZWxmLnRhaW50c1t0aWRdID0gIm5vc3RhbXA6IiArIHRhaW50CisgICAgICAgICAgICBpZiB0aWQgaW4gc2VsZi50YWludHMgYW5kIHNlbGYudGFpbnRzW3RpZF0uc3RhcnRzd2l0aCgibm9zdGFtcDoiKToKKyAgICAgICAgICAgICAgICAjIERvbid0IHJlc2V0IHRhaW50IHZhbHVlIHVwb24gZXZlcnkgY2FsbAorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaW1wb3J0IHV1aWQKKyAgICAgICAgICAgICAgICB0YWludCA9IHN0cih1dWlkLnV1aWQ0KCkpCisgICAgICAgICAgICAgICAgc2VsZi50YWludHNbdGlkXSA9ICJub3N0YW1wOiIgKyB0YWludAogCiAgICAgICAgIHRhaW50ID0gc2VsZi5yZWFkX3RhaW50KGZuLCB0YXNrLCBkYXRhQ2FjaGUuc3RhbXBbZm5dKQogICAgICAgICBpZiB0YWludDoKLSAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgdGFpbnQKICAgICAgICAgICAgIHNlbGYudGFpbnRzW3RpZF0gPSB0YWludAogICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIiVzIGlzIHRhaW50ZWQgZnJvbSBhIGZvcmNlZCBydW4iICUgdGlkKQogCisgICAgICAgIHJldHVybgorCisgICAgZGVmIGdldF90YXNraGFzaChzZWxmLCB0aWQsIGRlcHMsIGRhdGFDYWNoZSk6CisKKyAgICAgICAgZGF0YSA9IHNlbGYuYmFzZWhhc2hbdGlkXQorICAgICAgICBmb3IgZGVwIGluIHNlbGYucnVudGFza2RlcHNbdGlkXToKKyAgICAgICAgICAgIGlmIGRlcCBpbiBzZWxmLnVuaWhhc2g6CisgICAgICAgICAgICAgICAgaWYgc2VsZi51bmloYXNoW2RlcF0gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBzZWxmLnRhc2toYXNoW2RlcF0KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSArIHNlbGYudW5paGFzaFtkZXBdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgc2VsZi5nZXRfdW5paGFzaChkZXApCisKKyAgICAgICAgZm9yIChmLCBjcykgaW4gc2VsZi5maWxlX2NoZWNrc3VtX3ZhbHVlc1t0aWRdOgorICAgICAgICAgICAgaWYgY3M6CisgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBjcworCisgICAgICAgIGlmIHRpZCBpbiBzZWxmLnRhaW50czoKKyAgICAgICAgICAgIGlmIHNlbGYudGFpbnRzW3RpZF0uc3RhcnRzd2l0aCgibm9zdGFtcDoiKToKKyAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSArIHNlbGYudGFpbnRzW3RpZF1bODpdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgc2VsZi50YWludHNbdGlkXQorCiAgICAgICAgIGggPSBoYXNobGliLnNoYTI1NihkYXRhLmVuY29kZSgidXRmLTgiKSkuaGV4ZGlnZXN0KCkKICAgICAgICAgc2VsZi50YXNraGFzaFt0aWRdID0gaAogICAgICAgICAjZC5zZXRWYXIoIkJCX1RBU0tIQVNIX3Rhc2stJXMiICUgdGFzaywgdGFza2hhc2hbdGFza10pCkBAIC0zNzEsNTAgKzQxNiw2NiBAQAogICAgICAgICBiYi5idWlsZC53cml0ZV90YWludCh0YXNrLCBkLCBmbikKIAogY2xhc3MgU2lnbmF0dXJlR2VuZXJhdG9yVW5pSGFzaE1peEluKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOgorICAgICAgICBzZWxmLmV4dHJhbWV0aG9kID0ge30KKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhkYXRhKQorCiAgICAgZGVmIGdldF90YXNrZGF0YShzZWxmKToKLSAgICAgICAgcmV0dXJuIChzZWxmLnNlcnZlciwgc2VsZi5tZXRob2QpICsgc3VwZXIoKS5nZXRfdGFza2RhdGEoKQorICAgICAgICByZXR1cm4gKHNlbGYuc2VydmVyLCBzZWxmLm1ldGhvZCwgc2VsZi5leHRyYW1ldGhvZCkgKyBzdXBlcigpLmdldF90YXNrZGF0YSgpCiAKICAgICBkZWYgc2V0X3Rhc2tkYXRhKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLnNlcnZlciwgc2VsZi5tZXRob2QgPSBkYXRhWzoyXQotICAgICAgICBzdXBlcigpLnNldF90YXNrZGF0YShkYXRhWzI6XSkKKyAgICAgICAgc2VsZi5zZXJ2ZXIsIHNlbGYubWV0aG9kLCBzZWxmLmV4dHJhbWV0aG9kID0gZGF0YVs6M10KKyAgICAgICAgc3VwZXIoKS5zZXRfdGFza2RhdGEoZGF0YVszOl0pCiAKICAgICBkZWYgY2xpZW50KHNlbGYpOgogICAgICAgICBpZiBnZXRhdHRyKHNlbGYsICdfY2xpZW50JywgTm9uZSkgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuX2NsaWVudCA9IGhhc2hzZXJ2LmNyZWF0ZV9jbGllbnQoc2VsZi5zZXJ2ZXIpCiAgICAgICAgIHJldHVybiBzZWxmLl9jbGllbnQKIAotICAgIGRlZiBfX2dldF90YXNrX3VuaWhhc2hfa2V5KHNlbGYsIHRpZCk6Ci0gICAgICAgICMgVE9ETzogVGhlIGtleSBvbmx5ICpuZWVkcyogdG8gYmUgdGhlIHRhc2toYXNoLCB0aGUgdGlkIGlzIGp1c3QKLSAgICAgICAgIyBjb252ZW5pZW50Ci0gICAgICAgIHJldHVybiAnJXM6JXMnICUgKHRpZC5yc3BsaXQoIi8iLCAxKVsxXSwgc2VsZi50YXNraGFzaFt0aWRdKQotCiAgICAgZGVmIGdldF9zdGFtcGZpbGVfaGFzaChzZWxmLCB0aWQpOgogICAgICAgICBpZiB0aWQgaW4gc2VsZi50YXNraGFzaDoKICAgICAgICAgICAgICMgSWYgYSB1bmlxdWUgaGFzaCBpcyByZXBvcnRlZCwgdXNlIGl0IGFzIHRoZSBzdGFtcGZpbGUgaGFzaC4gVGhpcwogICAgICAgICAgICAgIyBlbnN1cmVzIHRoYXQgaWYgYSB0YXNrIHdvbid0IGJlIHJlLXJ1biBpZiB0aGUgdGFza2hhc2ggY2hhbmdlcywKICAgICAgICAgICAgICMgYnV0IGl0IHdvdWxkIHJlc3VsdCBpbiB0aGUgc2FtZSBvdXRwdXQgaGFzaAotICAgICAgICAgICAgdW5paGFzaCA9IHNlbGYudW5pdGFza2hhc2hlcy5nZXQoc2VsZi5fX2dldF90YXNrX3VuaWhhc2hfa2V5KHRpZCksIE5vbmUpCisgICAgICAgICAgICB1bmloYXNoID0gc2VsZi5fZ2V0X3VuaWhhc2godGlkKQogICAgICAgICAgICAgaWYgdW5paGFzaCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByZXR1cm4gdW5paGFzaAogCiAgICAgICAgIHJldHVybiBzdXBlcigpLmdldF9zdGFtcGZpbGVfaGFzaCh0aWQpCiAKICAgICBkZWYgc2V0X3VuaWhhc2goc2VsZiwgdGlkLCB1bmloYXNoKToKLSAgICAgICAgc2VsZi51bml0YXNraGFzaGVzW3NlbGYuX19nZXRfdGFza191bmloYXNoX2tleSh0aWQpXSA9IHVuaWhhc2gKKyAgICAgICAgKG1jLCBmbiwgdGFza25hbWUsIHRhc2tmbikgPSBiYi5ydW5xdWV1ZS5zcGxpdF90aWRfbWNmbih0aWQpCisgICAgICAgIGtleSA9IG1jICsgIjoiICsgc2VsZi50aWR0b3BuW3RpZF0gKyAiOiIgKyB0YXNrbmFtZQorICAgICAgICBzZWxmLnVuaXRhc2toYXNoZXNba2V5XSA9IChzZWxmLnRhc2toYXNoW3RpZF0sIHVuaWhhc2gpCisgICAgICAgIHNlbGYudW5paGFzaFt0aWRdID0gdW5paGFzaAorCisgICAgZGVmIF9nZXRfdW5paGFzaChzZWxmLCB0aWQsIGNoZWNra2V5PU5vbmUpOgorICAgICAgICBpZiB0aWQgbm90IGluIHNlbGYudGlkdG9wbjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIChtYywgZm4sIHRhc2tuYW1lLCB0YXNrZm4pID0gYmIucnVucXVldWUuc3BsaXRfdGlkX21jZm4odGlkKQorICAgICAgICBrZXkgPSBtYyArICI6IiArIHNlbGYudGlkdG9wblt0aWRdICsgIjoiICsgdGFza25hbWUKKyAgICAgICAgaWYga2V5IG5vdCBpbiBzZWxmLnVuaXRhc2toYXNoZXM6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBpZiBub3QgY2hlY2trZXk6CisgICAgICAgICAgICBjaGVja2tleSA9IHNlbGYudGFza2hhc2hbdGlkXQorICAgICAgICAoa2V5LCB1bmloYXNoKSA9IHNlbGYudW5pdGFza2hhc2hlc1trZXldCisgICAgICAgIGlmIGtleSAhPSBjaGVja2tleToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiB1bmloYXNoCiAKICAgICBkZWYgZ2V0X3VuaWhhc2goc2VsZiwgdGlkKToKICAgICAgICAgdGFza2hhc2ggPSBzZWxmLnRhc2toYXNoW3RpZF0KIAogICAgICAgICAjIElmIGl0cyBub3QgYSBzZXRzY2VuZSB0YXNrIHdlIGNhbiByZXR1cm4KICAgICAgICAgaWYgc2VsZi5zZXRzY2VuZXRhc2tzIGFuZCB0aWQgbm90IGluIHNlbGYuc2V0c2NlbmV0YXNrczoKKyAgICAgICAgICAgIHNlbGYudW5paGFzaFt0aWRdID0gTm9uZQogICAgICAgICAgICAgcmV0dXJuIHRhc2toYXNoCiAKLSAgICAgICAga2V5ID0gc2VsZi5fX2dldF90YXNrX3VuaWhhc2hfa2V5KHRpZCkKLQogICAgICAgICAjIFRPRE86IFRoaXMgY2FjaGUgY2FuIGdyb3cgdW5ib3VuZGVkLiBJdCBwcm9iYWJseSBvbmx5IG5lZWRzIHRvIGtlZXAKICAgICAgICAgIyBmb3IgZWFjaCB0YXNrCi0gICAgICAgIHVuaWhhc2ggPSBzZWxmLnVuaXRhc2toYXNoZXMuZ2V0KGtleSwgTm9uZSkKKyAgICAgICAgdW5paGFzaCA9ICBzZWxmLl9nZXRfdW5paGFzaCh0aWQpCiAgICAgICAgIGlmIHVuaWhhc2ggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLnVuaWhhc2hbdGlkXSA9IHVuaWhhc2gKICAgICAgICAgICAgIHJldHVybiB1bmloYXNoCiAKICAgICAgICAgIyBJbiB0aGUgYWJzZW5jZSBvZiBiZWluZyBhYmxlIHRvIGRpc2NvdmVyIGEgdW5pcXVlIGhhc2ggZnJvbSB0aGUKQEAgLTQzMywxOSArNDk0LDIzIEBACiAgICAgICAgIHVuaWhhc2ggPSB0YXNraGFzaAogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLmNsaWVudCgpLmdldF91bmloYXNoKHNlbGYubWV0aG9kLCBzZWxmLnRhc2toYXNoW3RpZF0pCisgICAgICAgICAgICBtZXRob2QgPSBzZWxmLm1ldGhvZAorICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYuZXh0cmFtZXRob2Q6CisgICAgICAgICAgICAgICAgbWV0aG9kID0gbWV0aG9kICsgc2VsZi5leHRyYW1ldGhvZFt0aWRdCisgICAgICAgICAgICBkYXRhID0gc2VsZi5jbGllbnQoKS5nZXRfdW5paGFzaChtZXRob2QsIHNlbGYudGFza2hhc2hbdGlkXSkKICAgICAgICAgICAgIGlmIGRhdGE6CiAgICAgICAgICAgICAgICAgdW5paGFzaCA9IGRhdGEKICAgICAgICAgICAgICAgICAjIEEgdW5pcXVlIGhhc2ggZXF1YWwgdG8gdGhlIHRhc2toYXNoIGlzIG5vdCB2ZXJ5IGludGVyZXN0aW5nLAogICAgICAgICAgICAgICAgICMgc28gaXQgaXMgcmVwb3J0ZWQgaXQgYXQgZGVidWcgbGV2ZWwgMi4gSWYgdGhleSBkaWZmZXIsIHRoYXQKICAgICAgICAgICAgICAgICAjIGlzIG11Y2ggbW9yZSBpbnRlcmVzdGluZywgc28gaXQgaXMgcmVwb3J0ZWQgYXQgZGVidWcgbGV2ZWwgMQotICAgICAgICAgICAgICAgIGJiLmRlYnVnKCgxLCAyKVt1bmloYXNoID09IHRhc2toYXNoXSwgJ0ZvdW5kIHVuaWhhc2ggJXMgaW4gcGxhY2Ugb2YgJXMgZm9yICVzIGZyb20gJXMnICUgKHVuaWhhc2gsIHRhc2toYXNoLCB0aWQsIHNlbGYuc2VydmVyKSkKKyAgICAgICAgICAgICAgICBoYXNoZXF1aXZfbG9nZ2VyLmRlYnVnKCgxLCAyKVt1bmloYXNoID09IHRhc2toYXNoXSwgJ0ZvdW5kIHVuaWhhc2ggJXMgaW4gcGxhY2Ugb2YgJXMgZm9yICVzIGZyb20gJXMnICUgKHVuaWhhc2gsIHRhc2toYXNoLCB0aWQsIHNlbGYuc2VydmVyKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYmIuZGVidWcoMiwgJ05vIHJlcG9ydGVkIHVuaWhhc2ggZm9yICVzOiVzIGZyb20gJXMnICUgKHRpZCwgdGFza2hhc2gsIHNlbGYuc2VydmVyKSkKKyAgICAgICAgICAgICAgICBoYXNoZXF1aXZfbG9nZ2VyLmRlYnVnKDIsICdObyByZXBvcnRlZCB1bmloYXNoIGZvciAlczolcyBmcm9tICVzJyAlICh0aWQsIHRhc2toYXNoLCBzZWxmLnNlcnZlcikpCiAgICAgICAgIGV4Y2VwdCBoYXNoc2Vydi5jbGllbnQuSGFzaENvbm5lY3Rpb25FcnJvciBhcyBlOgogICAgICAgICAgICAgYmIud2FybignRXJyb3IgY29udGFjdGluZyBIYXNoIEVxdWl2YWxlbmNlIFNlcnZlciAlczogJXMnICUgKHNlbGYuc2VydmVyLCBzdHIoZSkpKQogCi0gICAgICAgIHNlbGYudW5pdGFza2hhc2hlc1trZXldID0gdW5paGFzaAorICAgICAgICBzZWxmLnNldF91bmloYXNoKHRpZCwgdW5paGFzaCkKKyAgICAgICAgc2VsZi51bmloYXNoW3RpZF0gPSB1bmloYXNoCiAgICAgICAgIHJldHVybiB1bmloYXNoCiAKICAgICBkZWYgcmVwb3J0X3VuaWhhc2goc2VsZiwgcGF0aCwgdGFzaywgZCk6CkBAIC00NTcsMTMgKzUyMiwxNyBAQAogICAgICAgICB0ZW1wZGlyID0gZC5nZXRWYXIoJ1QnKQogICAgICAgICBmbiA9IGQuZ2V0VmFyKCdCQl9GSUxFTkFNRScpCiAgICAgICAgIHRpZCA9IGZuICsgJzpkb18nICsgdGFzawotICAgICAgICBrZXkgPSB0aWQucnNwbGl0KCIvIiwgMSlbMV0gKyAnOicgKyB0YXNraGFzaAorICAgICAgICBrZXkgPSB0aWQgKyAnOicgKyB0YXNraGFzaAogCiAgICAgICAgIGlmIHNlbGYuc2V0c2NlbmV0YXNrcyBhbmQgdGlkIG5vdCBpbiBzZWxmLnNldHNjZW5ldGFza3M6CiAgICAgICAgICAgICByZXR1cm4KIAorICAgICAgICAjIFRoaXMgY2FuIGhhcHBlbiBpZiBsb2NrZWQgc2lncyBhcmUgaW4gYWN0aW9uLiBEZXRlY3QgYW5kIGp1c3QgYWJvcnQKKyAgICAgICAgaWYgdGFza2hhc2ggIT0gc2VsZi50YXNraGFzaFt0aWRdOgorICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgIyBTYW5pdHkgY2hlY2tzCi0gICAgICAgIGNhY2hlX3VuaWhhc2ggPSBzZWxmLnVuaXRhc2toYXNoZXMuZ2V0KGtleSwgTm9uZSkKKyAgICAgICAgY2FjaGVfdW5paGFzaCA9IHNlbGYuX2dldF91bmloYXNoKHRpZCwgY2hlY2trZXk9dGFza2hhc2gpCiAgICAgICAgIGlmIGNhY2hlX3VuaWhhc2ggaXMgTm9uZToKICAgICAgICAgICAgIGJiLmZhdGFsKCclcyBub3QgaW4gdW5paGFzaCBjYWNoZS4gUGxlYXNlIHJlcG9ydCB0aGlzIGVycm9yJyAlIGtleSkKIApAQCAtNTAyLDE0ICs1NzEsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgZXh0cmFfZGF0YVsndGFzayddID0gdGFzawogICAgICAgICAgICAgICAgICAgICBleHRyYV9kYXRhWydvdXRoYXNoX3NpZ2luZm8nXSA9IHNpZ2ZpbGUucmVhZCgpLmRlY29kZSgndXRmLTgnKQogCi0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuY2xpZW50KCkucmVwb3J0X3VuaWhhc2godGFza2hhc2gsIHNlbGYubWV0aG9kLCBvdXRoYXNoLCB1bmloYXNoLCBleHRyYV9kYXRhKQorICAgICAgICAgICAgICAgIG1ldGhvZCA9IHNlbGYubWV0aG9kCisgICAgICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYuZXh0cmFtZXRob2Q6CisgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9IG1ldGhvZCArIHNlbGYuZXh0cmFtZXRob2RbdGlkXQorCisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuY2xpZW50KCkucmVwb3J0X3VuaWhhc2godGFza2hhc2gsIG1ldGhvZCwgb3V0aGFzaCwgdW5paGFzaCwgZXh0cmFfZGF0YSkKICAgICAgICAgICAgICAgICBuZXdfdW5paGFzaCA9IGRhdGFbJ3VuaWhhc2gnXQogCiAgICAgICAgICAgICAgICAgaWYgbmV3X3VuaWhhc2ggIT0gdW5paGFzaDoKLSAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgJ1Rhc2sgJXMgdW5paGFzaCBjaGFuZ2VkICVzIC0+ICVzIGJ5IHNlcnZlciAlcycgJSAodGFza2hhc2gsIHVuaWhhc2gsIG5ld191bmloYXNoLCBzZWxmLnNlcnZlcikpCisgICAgICAgICAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIuZGVidWcoMSwgJ1Rhc2sgJXMgdW5paGFzaCBjaGFuZ2VkICVzIC0+ICVzIGJ5IHNlcnZlciAlcycgJSAodGFza2hhc2gsIHVuaWhhc2gsIG5ld191bmloYXNoLCBzZWxmLnNlcnZlcikpCiAgICAgICAgICAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIucnVucXVldWUudGFza1VuaUhhc2hVcGRhdGUoZm4gKyAnOmRvXycgKyB0YXNrLCBuZXdfdW5paGFzaCksIGQpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0X3VuaWhhc2godGlkLCBuZXdfdW5paGFzaCkKKyAgICAgICAgICAgICAgICAgICAgZC5zZXRWYXIoJ0JCX1VOSUhBU0gnLCBuZXdfdW5paGFzaCkKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAnUmVwb3J0ZWQgdGFzayAlcyBhcyB1bmloYXNoICVzIHRvICVzJyAlICh0YXNraGFzaCwgdW5paGFzaCwgc2VsZi5zZXJ2ZXIpKQorICAgICAgICAgICAgICAgICAgICBoYXNoZXF1aXZfbG9nZ2VyLmRlYnVnKDEsICdSZXBvcnRlZCB0YXNrICVzIGFzIHVuaWhhc2ggJXMgdG8gJXMnICUgKHRhc2toYXNoLCB1bmloYXNoLCBzZWxmLnNlcnZlcikpCiAgICAgICAgICAgICBleGNlcHQgaGFzaHNlcnYuY2xpZW50Lkhhc2hDb25uZWN0aW9uRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICBiYi53YXJuKCdFcnJvciBjb250YWN0aW5nIEhhc2ggRXF1aXZhbGVuY2UgU2VydmVyICVzOiAlcycgJSAoc2VsZi5zZXJ2ZXIsIHN0cihlKSkpCiAgICAgICAgIGZpbmFsbHk6CkBAIC01MjQsNiArNTk5LDM2IEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKIAorICAgIGRlZiByZXBvcnRfdW5paGFzaF9lcXVpdihzZWxmLCB0aWQsIHRhc2toYXNoLCB3YW50ZWRfdW5paGFzaCwgY3VycmVudF91bmloYXNoLCBkYXRhY2FjaGVzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZXh0cmFfZGF0YSA9IHt9CisgICAgICAgICAgICBtZXRob2QgPSBzZWxmLm1ldGhvZAorICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYuZXh0cmFtZXRob2Q6CisgICAgICAgICAgICAgICAgbWV0aG9kID0gbWV0aG9kICsgc2VsZi5leHRyYW1ldGhvZFt0aWRdCisKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLmNsaWVudCgpLnJlcG9ydF91bmloYXNoX2VxdWl2KHRhc2toYXNoLCBtZXRob2QsIHdhbnRlZF91bmloYXNoLCBleHRyYV9kYXRhKQorICAgICAgICAgICAgaGFzaGVxdWl2X2xvZ2dlci52ZXJib3NlKCdSZXBvcnRlZCB0YXNrICVzIGFzIHVuaWhhc2ggJXMgdG8gJXMgKCVzKScgJSAodGlkLCB3YW50ZWRfdW5paGFzaCwgc2VsZi5zZXJ2ZXIsIHN0cihkYXRhKSkpCisKKyAgICAgICAgICAgIGlmIGRhdGEgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBiYi53YXJuKCJTZXJ2ZXIgdW5hYmxlIHRvIGhhbmRsZSB1bmloYXNoIHJlcG9ydCIpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgICAgIGZpbmFsdW5paGFzaCA9IGRhdGFbJ3VuaWhhc2gnXQorCisgICAgICAgICAgICBpZiBmaW5hbHVuaWhhc2ggPT0gY3VycmVudF91bmloYXNoOgorICAgICAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIudmVyYm9zZSgnVGFzayAlcyB1bmloYXNoICVzIHVuY2hhbmdlZCBieSBzZXJ2ZXInICUgKHRpZCwgZmluYWx1bmloYXNoKSkKKyAgICAgICAgICAgIGVsaWYgZmluYWx1bmloYXNoID09IHdhbnRlZF91bmloYXNoOgorICAgICAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIudmVyYm9zZSgnVGFzayAlcyB1bmloYXNoIGNoYW5nZWQgJXMgLT4gJXMgYXMgd2FudGVkJyAlICh0aWQsIGN1cnJlbnRfdW5paGFzaCwgZmluYWx1bmloYXNoKSkKKyAgICAgICAgICAgICAgICBzZWxmLnNldF91bmloYXNoKHRpZCwgZmluYWx1bmloYXNoKQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgVE9ETzogV2hhdCB0byBkbyBoZXJlPworICAgICAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIudmVyYm9zZSgnVGFzayAlcyB1bmloYXNoIHJlcG9ydGVkIGFzIHVud2FudGVkIGhhc2ggJXMnICUgKHRpZCwgZmluYWx1bmloYXNoKSkKKworICAgICAgICBleGNlcHQgaGFzaHNlcnYuY2xpZW50Lkhhc2hDb25uZWN0aW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGJiLndhcm4oJ0Vycm9yIGNvbnRhY3RpbmcgSGFzaCBFcXVpdmFsZW5jZSBTZXJ2ZXIgJXM6ICVzJyAlIChzZWxmLnNlcnZlciwgc3RyKGUpKSkKKworICAgICAgICByZXR1cm4gRmFsc2UKIAogIwogIyBEdW1teSBjbGFzcyB1c2VkIGZvciBiaXRiYWtlLXNlbGZ0ZXN0CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rhc2tkYXRhLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90YXNrZGF0YS5weQppbmRleCA4YzI1ZTA5Li5kMTNhMTI0IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rhc2tkYXRhLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGFza2RhdGEucHkKQEAgLTM2Miw3ICszNjIsNyBAQAogICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Ob1Byb3ZpZGVyKGl0ZW0sIGRlcGVuZGVlcz1zZWxmLmdldF9kZXBlbmRlZXMoaXRlbSksIHJlYXNvbnM9WyJObyBlbGlnaWJsZSBQUk9WSURFUnMgZXhpc3QgZm9yICclcyciICUgaXRlbV0pLCBjZmdEYXRhKQogICAgICAgICAgICAgcmFpc2UgYmIucHJvdmlkZXJzLk5vUHJvdmlkZXIoaXRlbSkKIAotICAgICAgICBpZiBsZW4oZWxpZ2libGUpID4gMSBhbmQgZm91bmRVbmlxdWUgPT0gRmFsc2U6CisgICAgICAgIGlmIGxlbihlbGlnaWJsZSkgPiAxIGFuZCBub3QgZm91bmRVbmlxdWU6CiAgICAgICAgICAgICBpZiBpdGVtIG5vdCBpbiBzZWxmLmNvbnNpZGVyX21zZ3NfY2FjaGU6CiAgICAgICAgICAgICAgICAgcHJvdmlkZXJzX2xpc3QgPSBbXQogICAgICAgICAgICAgICAgIGZvciBmbiBpbiBlbGlnaWJsZToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvY29va2VyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9jb29rZXIucHkKaW5kZXggMDkwOTE2ZS4uNzRjOTAzZiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9jb29rZXIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9jb29rZXIucHkKQEAgLTUsNyArNSw2IEBACiAjCiAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgb3MKIGltcG9ydCBiYiwgYmIuY29va2VyCiBpbXBvcnQgcmUKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvY293LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9jb3cucHkKaW5kZXggYjRhZjRiYi4uYmY2ZTc5ZiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9jb3cucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9jb3cucHkKQEAgLTcsNyArNyw3IEBACiAjCiAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9zCisKIAogY2xhc3MgQ09XVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9kYXRhLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9kYXRhLnB5CmluZGV4IDNlNDk5ODQuLjVmMTk1MDQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZGF0YS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2RhdGEucHkKQEAgLTQ3Niw3ICs0NzYsNyBAQAogY2xhc3MgVGFza0hhc2godW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3Rhc2toYXNoZXMoc2VsZik6CiAgICAgICAgIGRlZiBnZXR0YXNrX2Jhc2hoYXNoKHRhc2tuYW1lLCBkKToKLSAgICAgICAgICAgIHRhc2tsaXN0LCBnZW5kZXBzLCBsb29rdXBjYWNoZSA9IGJiLmRhdGEuZ2VuZXJhdGVfZGVwZW5kZW5jaWVzKGQpCisgICAgICAgICAgICB0YXNrbGlzdCwgZ2VuZGVwcywgbG9va3VwY2FjaGUgPSBiYi5kYXRhLmdlbmVyYXRlX2RlcGVuZGVuY2llcyhkLCBzZXQoKSkKICAgICAgICAgICAgIHRhc2tkZXBzLCBiYXNlaGFzaCA9IGJiLmRhdGEuZ2VuZXJhdGVfZGVwZW5kZW5jeV9oYXNoKHRhc2tsaXN0LCBnZW5kZXBzLCBsb29rdXBjYWNoZSwgc2V0KCksICJzb21lZmlsZSIpCiAgICAgICAgICAgICBiYi53YXJuKHN0cihsb29rdXBjYWNoZSkpCiAgICAgICAgICAgICByZXR1cm4gYmFzZWhhc2hbInNvbWVmaWxlOiIgKyB0YXNrbmFtZV0KQEAgLTU0NCwxNDIgKzU0NCwzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZC5nZXRWYXJGbGFnKCdIRUxMTycsICdvdGhlcicpLCAncGxhbmV0JykKIAogCi0jIFJlbW90ZSBkYXRhc3RvcmUgdGVzdHMKLSMgVGhlc2UgcmVhbGx5IG9ubHkgdGVzdCB0aGUgaW50ZXJmYWNlLCBzaW5jZSBpbiBhY3R1YWwgdXNhZ2Ugd2UgaGF2ZSBhCi0jIHRpbmZvaWwgY29ubmVjdG9yIHRoYXQgZG9lcyBldmVyeXRoaW5nIG92ZXIgUlBDLCBhbmQgdGhpcyBkb2Vzbid0IHRlc3QKLSMgdGhhdC4KLQotY2xhc3MgVGVzdENvbm5lY3RvcjoKLSAgICBkID0gTm9uZQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkKToKLSAgICAgICAgc2VsZi5kID0gZAotICAgIGRlZiBnZXRWYXIoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLmQuX2ZpbmRWYXIobmFtZSkKLSAgICBkZWYgZ2V0S2V5cyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNldChzZWxmLmQua2V5cygpKQotICAgIGRlZiBnZXRWYXJIaXN0b3J5KHNlbGYsIG5hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi5kLnZhcmhpc3RvcnkudmFyaWFibGUobmFtZSkKLSAgICBkZWYgZXhwYW5kUHl0aG9uUmVmKHNlbGYsIHZhcm5hbWUsIGV4cHIsIGQpOgotICAgICAgICBsb2NhbGRhdGEgPSBzZWxmLmQuY3JlYXRlQ29weSgpCi0gICAgICAgIGZvciBrZXkgaW4gZC5sb2NhbGtleXMoKToKLSAgICAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoZC5nZXRWYXIoa2V5KSkKLSAgICAgICAgdmFycGFyc2UgPSBiYi5kYXRhX3NtYXJ0LlZhcmlhYmxlUGFyc2UodmFybmFtZSwgbG9jYWxkYXRhKQotICAgICAgICByZXR1cm4gdmFycGFyc2UucHl0aG9uX3N1YihleHByKQotICAgIGRlZiBzZXRWYXIoc2VsZiwgbmFtZSwgdmFsdWUpOgotICAgICAgICBzZWxmLmQuc2V0VmFyKG5hbWUsIHZhbHVlKQotICAgIGRlZiBzZXRWYXJGbGFnKHNlbGYsIG5hbWUsIGZsYWcsIHZhbHVlKToKLSAgICAgICAgc2VsZi5kLnNldFZhckZsYWcobmFtZSwgZmxhZywgdmFsdWUpCi0gICAgZGVmIGRlbFZhcihzZWxmLCBuYW1lKToKLSAgICAgICAgc2VsZi5kLmRlbFZhcihuYW1lKQotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICBkZWYgZGVsVmFyRmxhZyhzZWxmLCBuYW1lLCBmbGFnKToKLSAgICAgICAgc2VsZi5kLmRlbFZhckZsYWcobmFtZSwgZmxhZykKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgZGVmIHJlbmFtZVZhcihzZWxmLCBuYW1lLCBuZXduYW1lKToKLSAgICAgICAgc2VsZi5kLnJlbmFtZVZhcihuYW1lLCBuZXduYW1lKQotICAgICAgICByZXR1cm4gRmFsc2UKLQotY2xhc3MgUmVtb3RlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9yZW1vdGUoc2VsZik6Ci0KLSAgICAgICAgZDEgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBkMS5lbmFibGVUcmFja2luZygpCi0gICAgICAgIGQyID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgZDIuZW5hYmxlVHJhY2tpbmcoKQotICAgICAgICBjb25uZWN0b3IgPSBUZXN0Q29ubmVjdG9yKGQxKQotCi0gICAgICAgIGQyLnNldFZhcignX3JlbW90ZV9kYXRhJywgY29ubmVjdG9yKQotCi0gICAgICAgIGQxLnNldFZhcignSEVMTE8nLCAnd29ybGQnKQotICAgICAgICBkMS5zZXRWYXJGbGFnKCdPVEhFUicsICdmbGFnbmFtZScsICdmbGFndmFsdWUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQyLmdldFZhcignSEVMTE8nKSwgJ3dvcmxkJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMi5leHBhbmQoJyR7SEVMTE99JyksICd3b3JsZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDIuZXhwYW5kKCcke0BkLmdldFZhcigiSEVMTE8iKX0nKSwgJ3dvcmxkJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignZmxhZ25hbWUnLCBkMi5nZXRWYXJGbGFncygnT1RIRVInKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMi5nZXRWYXJGbGFnKCdPVEhFUicsICdmbGFnbmFtZScpLCAnZmxhZ3ZhbHVlJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMS52YXJoaXN0b3J5LnZhcmlhYmxlKCdIRUxMTycpLCBkMi52YXJoaXN0b3J5LnZhcmlhYmxlKCdIRUxMTycpKQotICAgICAgICAjIFRlc3Qgc2V0VmFyIG9uIGNsaWVudCBzaWRlIGFmZmVjdHMgc2VydmVyCi0gICAgICAgIGQyLnNldFZhcignSEVMTE8nLCAnb3RoZXItd29ybGQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQxLmdldFZhcignSEVMTE8nKSwgJ290aGVyLXdvcmxkJykKLSAgICAgICAgIyBUZXN0IHNldFZhckZsYWcgb24gY2xpZW50IHNpZGUgYWZmZWN0cyBzZXJ2ZXIKLSAgICAgICAgZDIuc2V0VmFyRmxhZygnSEVMTE8nLCAnZmxhZ25hbWUnLCAnZmxhZ3ZhbHVlJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMS5nZXRWYXJGbGFnKCdIRUxMTycsICdmbGFnbmFtZScpLCAnZmxhZ3ZhbHVlJykKLSAgICAgICAgIyBUZXN0IGNsaWVudCBzaWRlIGRhdGEgaXMgaW5jb3Jwb3JhdGVkIGluIHB5dGhvbiBleHBhbnNpb24gKHdoaWNoIGlzIGRvbmUgb24gc2VydmVyKQotICAgICAgICBkMi5zZXRWYXIoJ0ZPTycsICdiYXInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQyLmV4cGFuZCgnJHtAZC5nZXRWYXIoIkZPTyIpfScpLCAnYmFyJykKLSAgICAgICAgIyBUZXN0IG92ZXJyaWRlcyB3b3JrCi0gICAgICAgIGQxLnNldFZhcignRk9PX3Rlc3QnLCAnYmF6JykKLSAgICAgICAgZDEuYXBwZW5kVmFyKCdPVkVSUklERVMnLCAnOnRlc3QnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQyLmdldFZhcignRk9PJyksICdiYXonKQotCi0KLSMgUmVtb3RlIGVxdWl2YWxlbnRzIG9mIGxvY2FsIHRlc3QgY2xhc3NlcwotIyBOb3RlIHRoYXQgdGhlc2UgYXJlbid0IHBlcmZlY3Qgc2luY2Ugd2Ugb25seSB0ZXN0IGluIG9uZSBkaXJlY3Rpb24KLQotY2xhc3MgUmVtb3RlRGF0YUV4cGFuc2lvbnMoRGF0YUV4cGFuc2lvbnMpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5kMSA9IGJiLmRhdGEuaW5pdCgpCi0gICAgICAgIHNlbGYuZCA9IGJiLmRhdGEuaW5pdCgpCi0gICAgICAgIHNlbGYuZDFbImZvbyJdID0gInZhbHVlX29mX2ZvbyIKLSAgICAgICAgc2VsZi5kMVsiYmFyIl0gPSAidmFsdWVfb2ZfYmFyIgotICAgICAgICBzZWxmLmQxWyJ2YWx1ZV9vZl9mb28iXSA9ICJ2YWx1ZV9vZl8ndmFsdWVfb2ZfZm9vJyIKLSAgICAgICAgY29ubmVjdG9yID0gVGVzdENvbm5lY3RvcihzZWxmLmQxKQotICAgICAgICBzZWxmLmQuc2V0VmFyKCdfcmVtb3RlX2RhdGEnLCBjb25uZWN0b3IpCi0KLWNsYXNzIFRlc3RSZW1vdGVOZXN0ZWRFeHBhbnNpb25zKFRlc3ROZXN0ZWRFeHBhbnNpb25zKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuZDEgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBzZWxmLmQgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBzZWxmLmQxWyJmb28iXSA9ICJmb28iCi0gICAgICAgIHNlbGYuZDFbImJhciJdID0gImJhciIKLSAgICAgICAgc2VsZi5kMVsidmFsdWVfb2ZfZm9vYmFyIl0gPSAiMTg3IgotICAgICAgICBjb25uZWN0b3IgPSBUZXN0Q29ubmVjdG9yKHNlbGYuZDEpCi0gICAgICAgIHNlbGYuZC5zZXRWYXIoJ19yZW1vdGVfZGF0YScsIGNvbm5lY3RvcikKLQotY2xhc3MgVGVzdFJlbW90ZUNvbmNhdChUZXN0Q29uY2F0KToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuZDEgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBzZWxmLmQgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBzZWxmLmQxLnNldFZhcigiRk9PIiwgImZvbyIpCi0gICAgICAgIHNlbGYuZDEuc2V0VmFyKCJWQUwiLCAidmFsIikKLSAgICAgICAgc2VsZi5kMS5zZXRWYXIoIkJBUiIsICJiYXIiKQotICAgICAgICBjb25uZWN0b3IgPSBUZXN0Q29ubmVjdG9yKHNlbGYuZDEpCi0gICAgICAgIHNlbGYuZC5zZXRWYXIoJ19yZW1vdGVfZGF0YScsIGNvbm5lY3RvcikKLQotY2xhc3MgVGVzdFJlbW90ZUNvbmNhdE92ZXJyaWRlKFRlc3RDb25jYXRPdmVycmlkZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmQxID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kMS5zZXRWYXIoIkZPTyIsICJmb28iKQotICAgICAgICBzZWxmLmQxLnNldFZhcigiVkFMIiwgInZhbCIpCi0gICAgICAgIHNlbGYuZDEuc2V0VmFyKCJCQVIiLCAiYmFyIikKLSAgICAgICAgY29ubmVjdG9yID0gVGVzdENvbm5lY3RvcihzZWxmLmQxKQotICAgICAgICBzZWxmLmQuc2V0VmFyKCdfcmVtb3RlX2RhdGEnLCBjb25uZWN0b3IpCi0KLWNsYXNzIFRlc3RSZW1vdGVPdmVycmlkZXMoVGVzdE92ZXJyaWRlcyk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmQxID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kMS5zZXRWYXIoIk9WRVJSSURFUyIsICJmb286YmFyOmxvY2FsIikKLSAgICAgICAgc2VsZi5kMS5zZXRWYXIoIlRFU1QiLCAidGVzdHZhbHVlIikKLSAgICAgICAgY29ubmVjdG9yID0gVGVzdENvbm5lY3RvcihzZWxmLmQxKQotICAgICAgICBzZWxmLmQuc2V0VmFyKCdfcmVtb3RlX2RhdGEnLCBjb25uZWN0b3IpCi0KLWNsYXNzIFRlc3RSZW1vdGVLZXlFeHBhbnNpb24oVGVzdEtleUV4cGFuc2lvbik6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmQxID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kMS5zZXRWYXIoIkZPTyIsICJmb28iKQotICAgICAgICBzZWxmLmQxLnNldFZhcigiQkFSIiwgImZvbyIpCi0gICAgICAgIGNvbm5lY3RvciA9IFRlc3RDb25uZWN0b3Ioc2VsZi5kMSkKLSAgICAgICAgc2VsZi5kLnNldFZhcignX3JlbW90ZV9kYXRhJywgY29ubmVjdG9yKQotCi1jbGFzcyBUZXN0UmVtb3RlRmxhZ3MoVGVzdEZsYWdzKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuZDEgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBzZWxmLmQgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBzZWxmLmQxLnNldFZhcigiZm9vIiwgInZhbHVlIG9mIGZvbyIpCi0gICAgICAgIHNlbGYuZDEuc2V0VmFyRmxhZygiZm9vIiwgImZsYWcxIiwgInZhbHVlIG9mIGZsYWcxIikKLSAgICAgICAgc2VsZi5kMS5zZXRWYXJGbGFnKCJmb28iLCAiZmxhZzIiLCAidmFsdWUgb2YgZmxhZzIiKQotICAgICAgICBjb25uZWN0b3IgPSBUZXN0Q29ubmVjdG9yKHNlbGYuZDEpCi0gICAgICAgIHNlbGYuZC5zZXRWYXIoJ19yZW1vdGVfZGF0YScsIGNvbm5lY3RvcikKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvYXBwbGUvY3Vwcy9yZWxlYXNlcyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvYXBwbGUvY3Vwcy9yZWxlYXNlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODkzNGY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9hcHBsZS9jdXBzL3JlbGVhc2VzCkBAIC0wLDAgKzEsMjQwMCBAQAorCisKKworCisKKworPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+CisgIDxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20iPgorICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMC5naXRodWJ1c2VyY29udGVudC5jb20iPgorICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMS5naXRodWJ1c2VyY29udGVudC5jb20iPgorICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgorICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20iPgorICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9naXRodWItY2xvdWQuczMuYW1hem9uYXdzLmNvbSI+CisgIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgorCisKKworICA8bGluayBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiBtZWRpYT0iYWxsIiBpbnRlZ3JpdHk9InNoYTUxMi03bXR1bkhxcC9CdzBORDlha2pKTUU4WENoMFdQbTNIQVhPU2VYN3NrTDBxR0FocGRmemtRdlljdWpZY3dOUFRwV0tlS01GVUdaR3R2bkVrY2N6Rmd3UT09IiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20vYXNzZXRzL2ZyYW1ld29ya3MtOWI1MzE0MjEzZTM3MDU2ZWQ4N2IwNDE4MDU2YzRmMmMuY3NzIiAvPgorICA8bGluayBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiBtZWRpYT0iYWxsIiBpbnRlZ3JpdHk9InNoYTUxMi1DbW9lZ2l6V0NVUjFqQzk0WTJldWtWUUlGeEo5R3hZZXJ6OXE3ZEJ3SW1MbHg4T0R3WWtYQU1JaENmVG5BNDVFcDYrK3JjTy9adEtWTHZGQk04ZGFwQT09IiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20vYXNzZXRzL3NpdGUtNGU5ZjI3ZmEzMzM0MTc0M2Y3MzBhZTdiMGUzM2VmZjUuY3NzIiAvPgorICAgIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLUJ2bklDS0ZqSXZUNjlvNjFkeVlsbFh0YU9uR1ZiN0lmajVjM2xrM3dqN3RramF0MklDdU4rWFJ3eWs4dHFQM2RqN0lGaEVRenhEZHhTSGFKM3hqM013PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuZ2l0aHViYXNzZXRzLmNvbS9hc3NldHMvZ2l0aHViLWZmOTg2ODc0Y2Y3ZTI4Y2JjZDVkNDQ4Y2RjYTcyNDVkLmNzcyIgLz4KKyAgICAKKyAgICAKKyAgICAKKyAgICAKKworCisgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgorICAKKyAgPHRpdGxlPlJlbGVhc2VzIMK3IGFwcGxlL2N1cHMgwrcgR2l0SHViPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iT2ZmaWNpYWwgQ1VQUyBTb3VyY2VzLiBDb250cmlidXRlIHRvIGFwcGxlL2N1cHMgZGV2ZWxvcG1lbnQgYnkgY3JlYXRpbmcgYW4gYWNjb3VudCBvbiBHaXRIdWIuIj4KKyAgICA8bGluayByZWw9InNlYXJjaCIgdHlwZT0iYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCIgaHJlZj0iL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iR2l0SHViIj4KKyAgPGxpbmsgcmVsPSJmbHVpZC1pY29uIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZmx1aWRpY29uLnBuZyIgdGl0bGU9IkdpdEh1YiI+CisgIDxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE0MDE0ODg2OTM0MzY1MjgiPgorCisgICAgPG1ldGEgbmFtZT0idHdpdHRlcjppbWFnZTpzcmMiIGNvbnRlbnQ9Imh0dHBzOi8vYXZhdGFyczIuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTA2MzkxNDU/cz00MDAmYW1wO3Y9NCIgLz48bWV0YSBuYW1lPSJ0d2l0dGVyOnNpdGUiIGNvbnRlbnQ9IkBnaXRodWIiIC8+PG1ldGEgbmFtZT0idHdpdHRlcjpjYXJkIiBjb250ZW50PSJzdW1tYXJ5IiAvPjxtZXRhIG5hbWU9InR3aXR0ZXI6dGl0bGUiIGNvbnRlbnQ9ImFwcGxlL2N1cHMiIC8+PG1ldGEgbmFtZT0idHdpdHRlcjpkZXNjcmlwdGlvbiIgY29udGVudD0iT2ZmaWNpYWwgQ1VQUyBTb3VyY2VzLiBDb250cmlidXRlIHRvIGFwcGxlL2N1cHMgZGV2ZWxvcG1lbnQgYnkgY3JlYXRpbmcgYW4gYWNjb3VudCBvbiBHaXRIdWIuIiAvPgorICAgIDxtZXRhIHByb3BlcnR5PSJvZzppbWFnZSIgY29udGVudD0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20vdS8xMDYzOTE0NT9zPTQwMCZhbXA7dj00IiAvPjxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IkdpdEh1YiIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0ib2JqZWN0IiAvPjxtZXRhIHByb3BlcnR5PSJvZzp0aXRsZSIgY29udGVudD0iYXBwbGUvY3VwcyIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dXJsIiBjb250ZW50PSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3VwcyIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9Ik9mZmljaWFsIENVUFMgU291cmNlcy4gQ29udHJpYnV0ZSB0byBhcHBsZS9jdXBzIGRldmVsb3BtZW50IGJ5IGNyZWF0aW5nIGFuIGFjY291bnQgb24gR2l0SHViLiIgLz4KKworICA8bGluayByZWw9ImFzc2V0cyIgaHJlZj0iaHR0cHM6Ly9naXRodWIuZ2l0aHViYXNzZXRzLmNvbS8iPgorICAKKyAgCisKKyAgICA8bWV0YSBuYW1lPSJyZXF1ZXN0LWlkIiBjb250ZW50PSJFMENCOjIyMzQ4OjUwOEQ5Qjo3NEQ3QjA6NURGQTQzQzQiIGRhdGEtcGpheC10cmFuc2llbnQ+CisKKworCisgIAorCisgIDxtZXRhIG5hbWU9InNlbGVjdGVkLWxpbmsiIHZhbHVlPSJyZXBvX3JlbGVhc2VzIiBkYXRhLXBqYXgtdHJhbnNpZW50PgorCisgICAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9IktUNWdzOGgwd3ZhYWdMS0FWV3E4YmJlTnduWlpLMXIxWFF5c1gzeHVyTFUiPgorICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iWnpoVnlFRndiN3czZTAtdU9UbHRtOEpzY2syRjVTdFZpaEQwZXh3MmZzQSI+CisgICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJHWHM1S29VVWtOQ29hQVpuN3dQTi10MDFQeXdwOU0zc0VqbnRfM19aV1BjIj4KKworICAgIDxtZXRhIG5hbWU9Im9jdG9seXRpY3MtaG9zdCIgY29udGVudD0iY29sbGVjdG9yLmdpdGh1YmFwcC5jb20iIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1hcHAtaWQiIGNvbnRlbnQ9ImdpdGh1YiIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWV2ZW50LXVybCIgY29udGVudD0iaHR0cHM6Ly9jb2xsZWN0b3IuZ2l0aHViYXBwLmNvbS9naXRodWItZXh0ZXJuYWwvYnJvd3Nlcl9ldmVudCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXF1ZXN0X2lkIiBjb250ZW50PSJFMENCOjIyMzQ4OjUwOEQ5Qjo3NEQ3QjA6NURGQTQzQzQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVnaW9uX2VkZ2UiIGNvbnRlbnQ9ImFtcyIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZWdpb25fcmVuZGVyIiBjb250ZW50PSJpYWQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tZ2FfaWQiIGNvbnRlbnQ9IiIgY2xhc3M9ImpzLW9jdG8tZ2EtaWQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tdmlzaXRvcl9pZCIgY29udGVudD0iMzg2ODQ0MDEwODM2NTEzNjgzNyIgLz4KKworPG1ldGEgbmFtZT0iYW5hbHl0aWNzLWxvY2F0aW9uIiBjb250ZW50PSIvJmx0O3VzZXItbmFtZSZndDsvJmx0O3JlcG8tbmFtZSZndDsvcmVsZWFzZXMvaW5kZXgiIGRhdGEtcGpheC10cmFuc2llbnQ9InRydWUiIC8+CisKKworCisgICAgPG1ldGEgbmFtZT0iZ29vZ2xlLWFuYWx5dGljcyIgY29udGVudD0iVUEtMzc2OTY5MS0yIj4KKworCis8bWV0YSBjbGFzcz0ianMtZ2Etc2V0IiBuYW1lPSJkaW1lbnNpb24xIiBjb250ZW50PSJMb2dnZWQgT3V0Ij4KKworCisKKyAgCisKKyAgICAgIDxtZXRhIG5hbWU9Imhvc3RuYW1lIiBjb250ZW50PSJnaXRodWIuY29tIj4KKyAgICA8bWV0YSBuYW1lPSJ1c2VyLWxvZ2luIiBjb250ZW50PSIiPgorCisgICAgICA8bWV0YSBuYW1lPSJleHBlY3RlZC1ob3N0bmFtZSIgY29udGVudD0iZ2l0aHViLmNvbSI+CisKKyAgICAgIDxtZXRhIG5hbWU9ImpzLXByb3h5LXNpdGUtZGV0ZWN0aW9uLXBheWxvYWQiIGNvbnRlbnQ9Ik5tUTNNMkZqWW1aaU5ESm1aVGc0WWpnelptUmtPV0psTmpRellqVTJNR0ZtTkRRNU9UTTRaR1ZtTWpjeU1UTm1NR1pqT0dWbE9EZzFOV00wTkdKbU9IeDdJbkpsYlc5MFpWOWhaR1J5WlhOeklqb2lPRGN1T0RFdU1qUTBMakUyTVNJc0luSmxjWFZsYzNSZmFXUWlPaUpGTUVOQ09qSXlNelE0T2pVd09FUTVRam8zTkVRM1FqQTZOVVJHUVRRelF6UWlMQ0owYVcxbGMzUmhiWEFpT2pFMU56WTJPREkwTXpjc0ltaHZjM1FpT2lKbmFYUm9kV0l1WTI5dEluMD0iPgorCisgICAgPG1ldGEgbmFtZT0iZW5hYmxlZC1mZWF0dXJlcyIgY29udGVudD0iTUFSS0VUUExBQ0VfRkVBVFVSRURfQkxPR19QT1NUUyxNQVJLRVRQTEFDRV9JTlZPSUNFRF9CSUxMSU5HLE1BUktFVFBMQUNFX1NPQ0lBTF9QUk9PRl9DVVNUT01FUlMsTUFSS0VUUExBQ0VfVFJFTkRJTkdfU09DSUFMX1BST09GLE1BUktFVFBMQUNFX1JFQ09NTUVOREFUSU9OUyxNQVJLRVRQTEFDRV9QRU5ESU5HX0lOU1RBTExBVElPTlMiPgorCisgICAgPG1ldGEgbmFtZT0iaHRtbC1zYWZlLW5vbmNlIiBjb250ZW50PSI5OTc5OTA1MDQyNTAxMWZlNmJjNzE3OTFlODYwYmQ1MGI0NmNjNmE3Ij4KKworICA8bWV0YSBodHRwLWVxdWl2PSJ4LXBqYXgtdmVyc2lvbiIgY29udGVudD0iMmQyOWViMDExYzRlNTZiNTY4MjM5M2Q2ZjQ1Yzg2YjkiPgorICAKKworICAgICAgPGxpbmsgcmVsPSJhbHRlcm5hdGUiIHR5cGU9ImFwcGxpY2F0aW9uL2F0b20reG1sIiB0aXRsZT0iY3VwcyBSZWxlYXNlIE5vdGVzIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcy5hdG9tIiAvPgorICA8bGluayByZWw9ImFsdGVybmF0ZSIgdHlwZT0iYXBwbGljYXRpb24vYXRvbSt4bWwiIHRpdGxlPSJjdXBzIFRhZ3MiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3RhZ3MuYXRvbSIgLz4KKyAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvY29tbWl0cy9tYXN0ZXIuYXRvbSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJSZWNlbnQgQ29tbWl0cyB0byBjdXBzOm1hc3RlciIgdHlwZT0iYXBwbGljYXRpb24vYXRvbSt4bWwiPgorCisgIDxtZXRhIG5hbWU9ImdvLWltcG9ydCIgY29udGVudD0iZ2l0aHViLmNvbS9hcHBsZS9jdXBzIGdpdCBodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy5naXQiPgorCisgIDxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXVzZXJfaWQiIGNvbnRlbnQ9IjEwNjM5MTQ1IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXVzZXJfbG9naW4iIGNvbnRlbnQ9ImFwcGxlIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfaWQiIGNvbnRlbnQ9IjQ0MTM3ODUyIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbndvIiBjb250ZW50PSJhcHBsZS9jdXBzIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfcHVibGljIiBjb250ZW50PSJ0cnVlIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfaXNfZm9yayIgY29udGVudD0iZmFsc2UiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9uZXR3b3JrX3Jvb3RfaWQiIGNvbnRlbnQ9IjQ0MTM3ODUyIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbmV0d29ya19yb290X253byIgY29udGVudD0iYXBwbGUvY3VwcyIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2V4cGxvcmVfZ2l0aHViX21hcmtldHBsYWNlX2NpX2N0YV9zaG93biIgY29udGVudD0iZmFsc2UiIC8+CisKKworCisKKyAgPG1ldGEgbmFtZT0iYnJvd3Nlci1zdGF0cy11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vX3ByaXZhdGUvYnJvd3Nlci9zdGF0cyI+CisKKyAgPG1ldGEgbmFtZT0iYnJvd3Nlci1lcnJvcnMtdXJsIiBjb250ZW50PSJodHRwczovL2FwaS5naXRodWIuY29tL19wcml2YXRlL2Jyb3dzZXIvZXJyb3JzIj4KKworICA8bGluayByZWw9Im1hc2staWNvbiIgaHJlZj0iaHR0cHM6Ly9naXRodWIuZ2l0aHViYXNzZXRzLmNvbS9waW5uZWQtb2N0b2NhdC5zdmciIGNvbG9yPSIjMDAwMDAwIj4KKyAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGNsYXNzPSJqcy1zaXRlLWZhdmljb24iIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20vZmF2aWNvbi5pY28iPgorCis8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iIzFlMjMyNyI+CisKKworCisKKworICA8bGluayByZWw9Im1hbmlmZXN0IiBocmVmPSIvbWFuaWZlc3QuanNvbiIgY3Jvc3NPcmlnaW49InVzZS1jcmVkZW50aWFscyI+CisKKyAgPC9oZWFkPgorCisgIDxib2R5IGNsYXNzPSJsb2dnZWQtb3V0IGVudi1wcm9kdWN0aW9uIHBhZ2UtcmVzcG9uc2l2ZSI+CisgICAgCisKKyAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUganMtaGVhZGVyLXdyYXBwZXIgIj4KKyAgICA8YSBocmVmPSIjc3RhcnQtb2YtY29udGVudCIgdGFiaW5kZXg9IjEiIGNsYXNzPSJweC0yIHB5LTQgYmctYmx1ZSB0ZXh0LXdoaXRlIHNob3ctb24tZm9jdXMganMtc2tpcC10by1jb250ZW50Ij5Ta2lwIHRvIGNvbnRlbnQ8L2E+CisgICAgPHNwYW4gY2xhc3M9IlByb2dyZXNzIHByb2dyZXNzLXBqYXgtbG9hZGVyIHBvc2l0aW9uLWZpeGVkIHdpZHRoLWZ1bGwganMtcGpheC1sb2FkZXItYmFyIj4KKyAgICAgIDxzcGFuIGNsYXNzPSJwcm9ncmVzcy1wamF4LWxvYWRlci1iYXIgdG9wLTAgbGVmdC0wIiBzdHlsZT0id2lkdGg6IDAlOyI+PC9zcGFuPgorICAgIDwvc3Bhbj4KKworICAgIAorICAgIAorICAgIAorCisKKyAgICAgICAgPGhlYWRlciBjbGFzcz0iSGVhZGVyLW9sZCBoZWFkZXItbG9nZ2VkLW91dCBqcy1kZXRhaWxzLWNvbnRhaW5lciBEZXRhaWxzIHBvc2l0aW9uLXJlbGF0aXZlIGY0IHB5LTIiIHJvbGU9ImJhbm5lciI+CisgIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1sZyBkLWxnLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgcC1yZXNwb25zaXZlIj4KKyAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICA8YSBjbGFzcz0ibXItNCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tLyIgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIGhvbWVwYWdlLCBpY29uOmxvZ28td29yZG1hcmsiPgorICAgICAgICAgIDxzdmcgaGVpZ2h0PSIzMiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1tYXJrLWdpdGh1YiB0ZXh0LXdoaXRlIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjMyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOCAwQzMuNTggMCAwIDMuNTggMCA4YzAgMy41NCAyLjI5IDYuNTMgNS40NyA3LjU5LjQuMDcuNTUtLjE3LjU1LS4zOCAwLS4xOS0uMDEtLjgyLS4wMS0xLjQ5LTIuMDEuMzctMi41My0uNDktMi42OS0uOTQtLjA5LS4yMy0uNDgtLjk0LS44Mi0xLjEzLS4yOC0uMTUtLjY4LS41Mi0uMDEtLjUzLjYzLS4wMSAxLjA4LjU4IDEuMjMuODIuNzIgMS4yMSAxLjg3Ljg3IDIuMzMuNjYuMDctLjUyLjI4LS44Ny41MS0xLjA3LTEuNzgtLjItMy42NC0uODktMy42NC0zLjk1IDAtLjg3LjMxLTEuNTkuODItMi4xNS0uMDgtLjItLjM2LTEuMDIuMDgtMi4xMiAwIDAgLjY3LS4yMSAyLjIuODIuNjQtLjE4IDEuMzItLjI3IDItLjI3LjY4IDAgMS4zNi4wOSAyIC4yNyAxLjUzLTEuMDQgMi4yLS44MiAyLjItLjgyLjQ0IDEuMS4xNiAxLjkyLjA4IDIuMTIuNTEuNTYuODIgMS4yNy44MiAyLjE1IDAgMy4wNy0xLjg3IDMuNzUtMy42NSAzLjk1LjI5LjI1LjU0LjczLjU0IDEuNDggMCAxLjA3LS4wMSAxLjkzLS4wMSAyLjIgMCAuMjEuMTUuNDYuNTUuMzhBOC4wMTMgOC4wMTMgMCAwMDE2IDhjMC00LjQyLTMuNTgtOC04LTh6Ii8+PC9zdmc+CisgICAgICAgIDwvYT4KKworICAgICAgICAgIDxkaXYgY2xhc3M9ImQtbGctbm9uZSBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCB3aWR0aC1maXQgcC0yIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KKyAgICA8YSBjbGFzcz0iSGVhZGVyLWxpbmsiIGhyZWY9Ii9hcHBsZSI+YXBwbGU8L2E+CisgICAgLworICAgIDxhIGNsYXNzPSJIZWFkZXItbGluayIgaHJlZj0iL2FwcGxlL2N1cHMiPmN1cHM8L2E+CisKKworICAgICAgICAgIDwvZGl2PgorCisgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICA8YSBocmVmPSIvam9pbj9zb3VyY2U9aGVhZGVyLXJlcG8iCisgICAgICAgICAgICAgIGNsYXNzPSJkLWlubGluZS1ibG9jayBkLWxnLW5vbmUgZjUgdGV4dC13aGl0ZSBuby11bmRlcmxpbmUgYm9yZGVyIGJvcmRlci1ncmF5LWRhcmsgcm91bmRlZC0yIHB4LTIgcHktMSBtci0zIG1yLXNtLTUiCisgICAgICAgICAgICAgIGRhdGEtaHlkcm8tY2xpY2s9InsmcXVvdDtldmVudF90eXBlJnF1b3Q7OiZxdW90O2F1dGhlbnRpY2F0aW9uLmNsaWNrJnF1b3Q7LCZxdW90O3BheWxvYWQmcXVvdDs6eyZxdW90O2xvY2F0aW9uX2luX3BhZ2UmcXVvdDs6JnF1b3Q7c2l0ZSBoZWFkZXImcXVvdDssJnF1b3Q7cmVwb3NpdG9yeV9pZCZxdW90OzpudWxsLCZxdW90O2F1dGhfdHlwZSZxdW90OzomcXVvdDtTSUdOX1VQJnF1b3Q7LCZxdW90O2NsaWVudF9pZCZxdW90OzpudWxsLCZxdW90O29yaWdpbmF0aW5nX3JlcXVlc3RfaWQmcXVvdDs6JnF1b3Q7RTBDQjoyMjM0ODo1MDhEOUI6NzREN0IwOjVERkE0M0M0JnF1b3Q7LCZxdW90O29yaWdpbmF0aW5nX3VybCZxdW90OzomcXVvdDtodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcyZxdW90OywmcXVvdDtyZWZlcnJlciZxdW90OzpudWxsLCZxdW90O3VzZXJfaWQmcXVvdDs6bnVsbH19IiBkYXRhLWh5ZHJvLWNsaWNrLWhtYWM9IjI0NjM0NDVjMDQ1YzZiZTg2YTdiNDhlNmMwYWY5NmQwYmE3Nzc4OTJkNmQyMzZmMjc4MjYzMjNiMzVjZWY1ZDciCisgICAgICAgICAgICAgIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGNsaWNrZWQgU2lnbiB1cCwgdGV4dDpzaWduLXVwIj4KKyAgICAgICAgICAgICAgU2lnbiZuYnNwO3VwCisgICAgICAgICAgICA8L2E+CisKKyAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4tbGluayBkLWxnLW5vbmUgbXQtMSBqcy1kZXRhaWxzLXRhcmdldCIgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJUb2dnbGUgbmF2aWdhdGlvbiIgYXJpYS1leHBhbmRlZD0iZmFsc2UiPgorICAgICAgICAgICAgPHN2ZyBoZWlnaHQ9IjI0IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRocmVlLWJhcnMgdGV4dC13aGl0ZSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxOCIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjQxIDlILjU5QzAgOSAwIDguNTkgMCA4YzAtLjU5IDAtMSAuNTktMUgxMS40Yy41OSAwIC41OS40MS41OSAxIDAgLjU5IDAgMS0uNTkgMWguMDF6bTAtNEguNTlDMCA1IDAgNC41OSAwIDRjMC0uNTkgMC0xIC41OS0xSDExLjRjLjU5IDAgLjU5LjQxLjU5IDEgMCAuNTkgMCAxLS41OSAxaC4wMXpNLjU5IDExSDExLjRjLjU5IDAgLjU5LjQxLjU5IDEgMCAuNTkgMCAxLS41OSAxSC41OUMwIDEzIDAgMTIuNTkgMCAxMmMwLS41OSAwLTEgLjU5LTF6Ii8+PC9zdmc+CisgICAgICAgICAgPC9idXR0b24+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPGRpdiBjbGFzcz0iSGVhZGVyTWVudSBIZWFkZXJNZW51LS1sb2dnZWQtb3V0IHBvc2l0aW9uLWZpeGVkIHRvcC0wIHJpZ2h0LTAgYm90dG9tLTAgaGVpZ2h0LWZpdCBwb3NpdGlvbi1sZy1yZWxhdGl2ZSBkLWxnLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgZmxleC1hdXRvIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBkLWxnLW5vbmUgZmxleC1qdXN0aWZ5LWVuZCBib3JkZXItYm90dG9tIGJnLWdyYXktbGlnaHQgcC0zIj4KKyAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuLWxpbmsganMtZGV0YWlscy10YXJnZXQiIHR5cGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iVG9nZ2xlIG5hdmlnYXRpb24iIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIj4KKyAgICAgICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTgiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CisgICAgICAgIDwvYnV0dG9uPgorICAgICAgPC9kaXY+CisKKyAgICAgICAgPG5hdiBjbGFzcz0ibXQtMCBweC0zIHB4LWxnLTAgbWItNSBtYi1sZy0wIiBhcmlhLWxhYmVsPSJHbG9iYWwiPgorICAgICAgICAgIDx1bCBjbGFzcz0iZC1sZy1mbGV4IGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBkLWxnLWZsZXggZmxleC1sZy1ub3dyYXAgZmxleC1sZy1pdGVtcy1jZW50ZXIgYm9yZGVyLWJvdHRvbSBib3JkZXItbGctYm90dG9tLTAgbXItMCBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgorICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CisgICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCBkLWJsb2NrIGQtbGctaW5saW5lLWJsb2NrIj4KKyAgICAgICAgICAgICAgICAgICAgV2h5IEdpdEh1Yj8KKyAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tYWJzb2x1dGUgcG9zaXRpb24tbGctcmVsYXRpdmUiPgorICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgorICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KKyAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KKyAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIG10LTAgcGItNCBwLWxnLTQgcG9zaXRpb24tcmVsYXRpdmUgcG9zaXRpb24tbGctYWJzb2x1dGUgbGVmdC0wIGxlZnQtbGctbjQiPgorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvZmVhdHVyZXMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBGZWF0dXJlcyI+RmVhdHVyZXMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPgorICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBmNSBwYi0zIj4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9jb2RlLXJldmlldy8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvZGUgcmV2aWV3Ij5Db2RlIHJldmlldzwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL3Byb2plY3QtbWFuYWdlbWVudC8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFByb2plY3QgbWFuYWdlbWVudCI+UHJvamVjdCBtYW5hZ2VtZW50PC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvaW50ZWdyYXRpb25zIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBJbnRlZ3JhdGlvbnMiPkludGVncmF0aW9uczwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL2FjdGlvbnMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEFjdGlvbnMiPkFjdGlvbnM8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvcGFja2FnZXMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEdpdEh1YiBQYWNrYWdlcyI+UGFja2FnZXM8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9zZWN1cml0eSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gU2VjdXJpdHkiPlNlY3VyaXR5PC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjdGVhbS1tYW5hZ2VtZW50IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUZWFtIG1hbmFnZW1lbnQiPlRlYW0gbWFuYWdlbWVudDwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI2hvc3RpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvZGUgaG9zdGluZyI+SG9zdGluZzwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICA8L3VsPgorCisgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAgYm9yZGVyLWxnLXRvcCBwdC1sZy0zIj4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9jdXN0b21lci1zdG9yaWVzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEN1c3RvbWVyIHN0b3JpZXMiPkN1c3RvbWVyIHN0b3JpZXMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvc2VjdXJpdHkiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gU2VjdXJpdHkiPlNlY3VyaXR5IDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPC9kZXRhaWxzPgorICAgICAgICAgICAgICA8L2xpPgorICAgICAgICAgICAgICA8bGkgY2xhc3M9ImJvcmRlci1ib3R0b20gYm9yZGVyLWxnLWJvdHRvbS0wIG1yLTAgbXItbGctMyI+CisgICAgICAgICAgICAgICAgPGEgaHJlZj0iL2VudGVycHJpc2UiIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIHB5LTMgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRW50ZXJwcmlzZSI+RW50ZXJwcmlzZTwvYT4KKyAgICAgICAgICAgICAgPC9saT4KKworICAgICAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgZC1sZy1mbGV4IGZsZXgtbGctbm93cmFwIGZsZXgtbGctaXRlbXMtY2VudGVyIGJvcmRlci1ib3R0b20gYm9yZGVyLWxnLWJvdHRvbS0wIG1yLTAgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgorICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayI+CisgICAgICAgICAgICAgICAgICAgIEV4cGxvcmUKKyAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tYWJzb2x1dGUgcG9zaXRpb24tbGctcmVsYXRpdmUiPgorICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgorICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KKyAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KKworICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgcHQtMiBwYi0wIG10LTAgcGItNCBwLWxnLTQgcG9zaXRpb24tcmVsYXRpdmUgcG9zaXRpb24tbGctYWJzb2x1dGUgbGVmdC0wIGxlZnQtbGctbjQiPgorICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9leHBsb3JlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRXhwbG9yZSI+RXhwbG9yZSBHaXRIdWIgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgIDwvdWw+CisKKyAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LWdyYXktbGlnaHQgdGV4dC1ub3JtYWwgdGV4dC1tb25vIGY1IG1iLTIgYm9yZGVyLWxnLXRvcCBwdC1sZy0zIj5MZWFybiAmYW1wOyBjb250cmlidXRlPC9oND4KKyAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvdG9waWNzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUb3BpY3MiPlRvcGljczwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvY29sbGVjdGlvbnMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbGxlY3Rpb25zIj5Db2xsZWN0aW9uczwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3RyZW5kaW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUcmVuZGluZyI+VHJlbmRpbmc8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vbGFiLmdpdGh1Yi5jb20vIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBMZWFybmluZyBsYWIiPkxlYXJuaW5nIExhYjwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9vcGVuc291cmNlLmd1aWRlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBPcGVuIHNvdXJjZSBndWlkZXMiPk9wZW4gc291cmNlIGd1aWRlczwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICA8L3VsPgorCisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC1ncmF5LWxpZ2h0IHRleHQtbm9ybWFsIHRleHQtbW9ubyBmNSBtYi0yIGJvcmRlci1sZy10b3AgcHQtbGctMyI+Q29ubmVjdCB3aXRoIG90aGVyczwvaDQ+CisgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAiPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2V2ZW50cyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRXZlbnRzIj5FdmVudHM8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbW11bml0eSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29tbXVuaXR5IGZvcnVtIj5Db21tdW5pdHkgZm9ydW08L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZWR1Y2F0aW9uLmdpdGh1Yi5jb20iIGNsYXNzPSJweS0yIHBiLTAgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gR2l0SHViIEVkdWNhdGlvbiI+R2l0SHViIEVkdWNhdGlvbjwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPC9kZXRhaWxzPgorICAgICAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgICAgIDxsaSBjbGFzcz0iYm9yZGVyLWJvdHRvbSBib3JkZXItbGctYm90dG9tLTAgbXItMCBtci1sZy0zIj4KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIvbWFya2V0cGxhY2UiIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIHB5LTMgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTWFya2V0cGxhY2UiPk1hcmtldHBsYWNlPC9hPgorICAgICAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBkLWxnLWZsZXggZmxleC1sZy1ub3dyYXAgZmxleC1sZy1pdGVtcy1jZW50ZXIgYm9yZGVyLWJvdHRvbSBib3JkZXItbGctYm90dG9tLTAgbXItMCBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgorICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CisgICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCBkLWJsb2NrIGQtbGctaW5saW5lLWJsb2NrIj4KKyAgICAgICAgICAgICAgICAgICAgUHJpY2luZworICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1hYnNvbHV0ZSBwb3NpdGlvbi1sZy1yZWxhdGl2ZSI+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgorICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KKyAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KKworICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgcHQtMiBwYi00IG10LTAgcC1sZy00IHBvc2l0aW9uLXJlbGF0aXZlIHBvc2l0aW9uLWxnLWFic29sdXRlIGxlZnQtMCBsZWZ0LWxnLW40Ij4KKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3ByaWNpbmciIGNsYXNzPSJwYi0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBQcmljaW5nIj5QbGFucyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+CisKKyAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZyNmZWF0dXJlLWNvbXBhcmlzb24iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbXBhcmUgcGxhbnMiPkNvbXBhcmUgcGxhbnM8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZW50ZXJwcmlzZS5naXRodWIuY29tL2NvbnRhY3QiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbnRhY3QgU2FsZXMiPkNvbnRhY3QgU2FsZXM8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgPC91bD4KKworICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wIGJvcmRlci1sZy10b3AgcHQtbGctMyI+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvbm9ucHJvZml0IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE5vbnByb2ZpdHMiPk5vbnByb2ZpdCA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZWR1Y2F0aW9uLmdpdGh1Yi5jb20iIGNsYXNzPSJweS0yIHBiLTAgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiAgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRWR1Y2F0aW9uIj5FZHVjYXRpb24gPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2RldGFpbHM+CisgICAgICAgICAgICAgIDwvbGk+CisgICAgICAgICAgPC91bD4KKyAgICAgICAgPC9uYXY+CisKKyAgICAgIDxkaXYgY2xhc3M9ImQtbGctZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBweC0zIHB4LWxnLTAgdGV4dC1jZW50ZXIgdGV4dC1sZy1sZWZ0Ij4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWxnLWZsZXggbWItMyBtYi1sZy0wIj4KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci1zZWFyY2ggZmxleC1zZWxmLXN0cmV0Y2ggZmxleC1sZy1zZWxmLWF1dG8gbXItMCBtci1sZy0zIG1iLTMgbWItbGctMCBzY29wZWQtc2VhcmNoIHNpdGUtc2NvcGVkLXNlYXJjaCBqcy1zaXRlLXNlYXJjaCBwb3NpdGlvbi1yZWxhdGl2ZSBqcy1qdW1wLXRvIgorICByb2xlPSJjb21ib2JveCIKKyAgYXJpYS1vd25zPSJqdW1wLXRvLXJlc3VsdHMiCisgIGFyaWEtbGFiZWw9IlNlYXJjaCBvciBqdW1wIHRvIgorICBhcmlhLWhhc3BvcHVwPSJsaXN0Ym94IgorICBhcmlhLWV4cGFuZGVkPSJmYWxzZSIKKz4KKyAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUiPgorICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1zaXRlLXNlYXJjaC1mb3JtIiByb2xlPSJzZWFyY2giIGFyaWEtbGFiZWw9IlNpdGUiIGRhdGEtc2NvcGUtdHlwZT0iUmVwb3NpdG9yeSIgZGF0YS1zY29wZS1pZD0iNDQxMzc4NTIiIGRhdGEtc2NvcGVkLXNlYXJjaC11cmw9Ii9hcHBsZS9jdXBzL3NlYXJjaCIgZGF0YS11bnNjb3BlZC1zZWFyY2gtdXJsPSIvc2VhcmNoIiBhY3Rpb249Ii9hcHBsZS9jdXBzL3NlYXJjaCIgYWNjZXB0LWNoYXJzZXQ9IlVURi04IiBtZXRob2Q9ImdldCI+PGlucHV0IG5hbWU9InV0ZjgiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiYjeDI3MTM7IiAvPgorICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWNvbnRyb2wgaW5wdXQtc20gaGVhZGVyLXNlYXJjaC13cmFwcGVyIHAtMCBoZWFkZXItc2VhcmNoLXdyYXBwZXItanVtcC10byBwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIganMtY2hyb21lbGVzcy1pbnB1dC1jb250YWluZXIiPgorICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIKKyAgICAgICAgICBjbGFzcz0iZm9ybS1jb250cm9sIGlucHV0LXNtIGhlYWRlci1zZWFyY2gtaW5wdXQganVtcC10by1maWVsZCBqcy1qdW1wLXRvLWZpZWxkIGpzLXNpdGUtc2VhcmNoLWZvY3VzIGpzLXNpdGUtc2VhcmNoLWZpZWxkIGlzLWNsZWFyYWJsZSIKKyAgICAgICAgICBkYXRhLWhvdGtleT0icywvIgorICAgICAgICAgIG5hbWU9InEiCisgICAgICAgICAgdmFsdWU9IiIKKyAgICAgICAgICBwbGFjZWhvbGRlcj0iU2VhcmNoIgorICAgICAgICAgIGRhdGEtdW5zY29wZWQtcGxhY2Vob2xkZXI9IlNlYXJjaCBHaXRIdWIiCisgICAgICAgICAgZGF0YS1zY29wZWQtcGxhY2Vob2xkZXI9IlNlYXJjaCIKKyAgICAgICAgICBhdXRvY2FwaXRhbGl6ZT0ib2ZmIgorICAgICAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPSJsaXN0IgorICAgICAgICAgIGFyaWEtY29udHJvbHM9Imp1bXAtdG8tcmVzdWx0cyIKKyAgICAgICAgICBhcmlhLWxhYmVsPSJTZWFyY2giCisgICAgICAgICAgZGF0YS1qdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGg9Ii9fZ3JhcGhxbC9HZXRTdWdnZXN0ZWROYXZpZ2F0aW9uRGVzdGluYXRpb25zI2NzcmYtdG9rZW49MFFtTVN1WkhtODRjUE5WR1E3UllBWGdQUmlVZk9jak5PQzF2WE9oVm55em0yQjNKU0h6MWZjSUpCWnhNQUtXVWlCWGpsVndMa2NITEpQWnkyZ3krbWc9PSIKKyAgICAgICAgICBzcGVsbGNoZWNrPSJmYWxzZSIKKyAgICAgICAgICBhdXRvY29tcGxldGU9Im9mZiIKKyAgICAgICAgICA+CisgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgY2xhc3M9ImpzLXNpdGUtc2VhcmNoLXR5cGUtZmllbGQiIG5hbWU9InR5cGUiID4KKyAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2dpdGh1Yi5naXRodWJhc3NldHMuY29tL2ltYWdlcy9zZWFyY2gta2V5LXNsYXNoLnN2ZyIgYWx0PSIiIGNsYXNzPSJtci0yIGhlYWRlci1zZWFyY2gta2V5LXNsYXNoIj4KKworICAgICAgICAgICAgPGRpdiBjbGFzcz0iQm94IHBvc2l0aW9uLWFic29sdXRlIG92ZXJmbG93LWhpZGRlbiBkLW5vbmUganVtcC10by1zdWdnZXN0aW9ucyBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLWNvbnRhaW5lciI+CisgICAgICAgICAgICAgIAorPHVsIGNsYXNzPSJkLW5vbmUganMtanVtcC10by1zdWdnZXN0aW9ucy10ZW1wbGF0ZS1jb250YWluZXIiPgorICAKKworPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbiIgcm9sZT0ib3B0aW9uIj4KKyAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CisgICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KKyAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CisgICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMDAtMSAxdjE0YTEgMSAwIDAwMSAxaDEzYTEgMSAwIDAwMS0xVjFhMSAxIDAgMDAtMS0xeiIvPjwvc3ZnPgorICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMDAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMDAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgorICAgIDwvZGl2PgorCisgICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgorCisgICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CisgICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KKyAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CisgICAgICA8L3NwYW4+CisgICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KKyAgICAgICAgQWxsIEdpdEh1YgorICAgICAgPC9zcGFuPgorICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KKyAgICAgIEp1bXAgdG8KKyAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CisgICAgPC9kaXY+CisgIDwvYT4KKzwvbGk+CisKKzwvdWw+CisKKzx1bCBjbGFzcz0iZC1ub25lIGpzLWp1bXAtdG8tbm8tcmVzdWx0cy10ZW1wbGF0ZS1jb250YWluZXIiPgorICA8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIGZsZXgtaXRlbXMtY2VudGVyIGY1IGQtbm9uZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24gcC0yIj4KKyAgICA8c3BhbiBjbGFzcz0idGV4dC1ncmF5Ij5ObyBzdWdnZXN0ZWQganVtcCB0byByZXN1bHRzPC9zcGFuPgorICA8L2xpPgorPC91bD4KKworPHVsIGlkPSJqdW1wLXRvLXJlc3VsdHMiIHJvbGU9Imxpc3Rib3giIGNsYXNzPSJwLTAgbS0wIGpzLW5hdmlnYXRpb24tY29udGFpbmVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcmVzdWx0cy1jb250YWluZXIganMtanVtcC10by1zdWdnZXN0aW9ucy1yZXN1bHRzLWNvbnRhaW5lciI+CisgIAorCis8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1zY29wZWQtc2VhcmNoIGQtbm9uZSIgcm9sZT0ib3B0aW9uIj4KKyAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CisgICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KKyAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CisgICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMDAtMSAxdjE0YTEgMSAwIDAwMSAxaDEzYTEgMSAwIDAwMS0xVjFhMSAxIDAgMDAtMS0xeiIvPjwvc3ZnPgorICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMDAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMDAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgorICAgIDwvZGl2PgorCisgICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgorCisgICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CisgICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KKyAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CisgICAgICA8L3NwYW4+CisgICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KKyAgICAgICAgQWxsIEdpdEh1YgorICAgICAgPC9zcGFuPgorICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KKyAgICAgIEp1bXAgdG8KKyAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CisgICAgPC9kaXY+CisgIDwvYT4KKzwvbGk+CisKKyAgCisKKzxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLWdsb2JhbC1zZWFyY2ggZC1ub25lIiByb2xlPSJvcHRpb24iPgorICA8YSB0YWJpbmRleD0iLTEiIGNsYXNzPSJuby11bmRlcmxpbmUgZC1mbGV4IGZsZXgtYXV0byBmbGV4LWl0ZW1zLWNlbnRlciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGgganMtanVtcC10by1zdWdnZXN0aW9uLXBhdGgganMtbmF2aWdhdGlvbi1vcGVuIHAtMiIgaHJlZj0iIj4KKyAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgorICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KKyAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXByb2plY3QgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcHJvamVjdCBkLW5vbmUiIHRpdGxlPSJQcm9qZWN0IiBhcmlhLWxhYmVsPSJQcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxMmgzVjJoLTN2MTB6bS00LTJoM1YySDZ2OHptLTQgNGgzVjJIMnYxMnptLTEgMWgxM1YxSDF2MTR6TTE0IDBIMWExIDEgMCAwMC0xIDF2MTRhMSAxIDAgMDAxIDFoMTNhMSAxIDAgMDAxLTFWMWExIDEgMCAwMC0xLTF6Ii8+PC9zdmc+CisgICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwMDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwMDAtMS40MXYuMDF6TTcgMTAuN2MtMi41OSAwLTQuNy0yLjExLTQuNy00LjcgMC0yLjU5IDIuMTEtNC43IDQuNy00LjcgMi41OSAwIDQuNyAyLjExIDQuNyA0LjcgMCAyLjU5LTIuMTEgNC43LTQuNyA0Ljd6Ii8+PC9zdmc+CisgICAgPC9kaXY+CisKKyAgICA8aW1nIGNsYXNzPSJhdmF0YXIgbXItMiBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1hdmF0YXIgZC1ub25lIiBhbHQ9IiIgYXJpYS1sYWJlbD0iVGVhbSIgc3JjPSIiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CisKKyAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KKyAgICA8L2Rpdj4KKworICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KKyAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWRlZmF1bHQgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiB0aGlzIHJlcG9zaXRvcnkiPgorICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKKyAgICAgIDwvc3Bhbj4KKyAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWdsb2JhbCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIGFsbCBvZiBHaXRIdWIiPgorICAgICAgICBBbGwgR2l0SHViCisgICAgICA8L3NwYW4+CisgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KKyAgICA8L2Rpdj4KKworICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBkLW9uLW5hdi1mb2N1cyBqcy1qdW1wLXRvLWJhZGdlLWp1bXAiPgorICAgICAgSnVtcCB0bworICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KKyAgICA8L2Rpdj4KKyAgPC9hPgorPC9saT4KKworCis8L3VsPgorCisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgIDwvbGFiZWw+Cis8L2Zvcm0+ICA8L2Rpdj4KKzwvZGl2PgorCisgICAgICAgICAgPC9kaXY+CisKKyAgICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZhcHBsZSUyRmN1cHMlMkZyZWxlYXNlcyIKKyAgICAgICAgICBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBtci0zIgorICAgICAgICAgIGRhdGEtaHlkcm8tY2xpY2s9InsmcXVvdDtldmVudF90eXBlJnF1b3Q7OiZxdW90O2F1dGhlbnRpY2F0aW9uLmNsaWNrJnF1b3Q7LCZxdW90O3BheWxvYWQmcXVvdDs6eyZxdW90O2xvY2F0aW9uX2luX3BhZ2UmcXVvdDs6JnF1b3Q7c2l0ZSBoZWFkZXIgbWVudSZxdW90OywmcXVvdDtyZXBvc2l0b3J5X2lkJnF1b3Q7Om51bGwsJnF1b3Q7YXV0aF90eXBlJnF1b3Q7OiZxdW90O1NJR05fVVAmcXVvdDssJnF1b3Q7Y2xpZW50X2lkJnF1b3Q7Om51bGwsJnF1b3Q7b3JpZ2luYXRpbmdfcmVxdWVzdF9pZCZxdW90OzomcXVvdDtFMENCOjIyMzQ4OjUwOEQ5Qjo3NEQ3QjA6NURGQTQzQzQmcXVvdDssJnF1b3Q7b3JpZ2luYXRpbmdfdXJsJnF1b3Q7OiZxdW90O2h0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzJnF1b3Q7LCZxdW90O3JlZmVycmVyJnF1b3Q7Om51bGwsJnF1b3Q7dXNlcl9pZCZxdW90OzpudWxsfX0iIGRhdGEtaHlkcm8tY2xpY2staG1hYz0iZTRlMzQyNTVjODQ4NWQ2OTE1ZDE0NDhhODZlYTk3MjNjM2IyZTkyZTk1NzZlNzE4NDVhZjczNTg3MGRhOGQ3MCIKKyAgICAgICAgICBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBjbGlja2VkIFNpZ24gaW4sIHRleHQ6c2lnbi1pbiI+CisgICAgICAgICAgU2lnbiZuYnNwO2luCisgICAgICAgIDwvYT4KKyAgICAgICAgICA8YSBocmVmPSIvam9pbj9zb3VyY2U9aGVhZGVyLXJlcG8mYW1wO3NvdXJjZV9yZXBvPWFwcGxlJTJGY3VwcyIKKyAgICAgICAgICAgIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgZC1pbmxpbmUtYmxvY2sgbm8tdW5kZXJsaW5lIGJvcmRlciBib3JkZXItZ3JheS1kYXJrIHJvdW5kZWQtMSBweC0yIHB5LTEiCisgICAgICAgICAgICBkYXRhLWh5ZHJvLWNsaWNrPSJ7JnF1b3Q7ZXZlbnRfdHlwZSZxdW90OzomcXVvdDthdXRoZW50aWNhdGlvbi5jbGljayZxdW90OywmcXVvdDtwYXlsb2FkJnF1b3Q7OnsmcXVvdDtsb2NhdGlvbl9pbl9wYWdlJnF1b3Q7OiZxdW90O3NpdGUgaGVhZGVyIG1lbnUmcXVvdDssJnF1b3Q7cmVwb3NpdG9yeV9pZCZxdW90OzpudWxsLCZxdW90O2F1dGhfdHlwZSZxdW90OzomcXVvdDtTSUdOX1VQJnF1b3Q7LCZxdW90O2NsaWVudF9pZCZxdW90OzpudWxsLCZxdW90O29yaWdpbmF0aW5nX3JlcXVlc3RfaWQmcXVvdDs6JnF1b3Q7RTBDQjoyMjM0ODo1MDhEOUI6NzREN0IwOjVERkE0M0M0JnF1b3Q7LCZxdW90O29yaWdpbmF0aW5nX3VybCZxdW90OzomcXVvdDtodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcyZxdW90OywmcXVvdDtyZWZlcnJlciZxdW90OzpudWxsLCZxdW90O3VzZXJfaWQmcXVvdDs6bnVsbH19IiBkYXRhLWh5ZHJvLWNsaWNrLWhtYWM9ImU0ZTM0MjU1Yzg0ODVkNjkxNWQxNDQ4YTg2ZWE5NzIzYzNiMmU5MmU5NTc2ZTcxODQ1YWY3MzU4NzBkYThkNzAiCisgICAgICAgICAgICBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+CisgICAgICAgICAgICBTaWduJm5ic3A7dXAKKyAgICAgICAgICA8L2E+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kaXY+Cis8L2hlYWRlcj4KKworICA8L2Rpdj4KKworICA8ZGl2IGlkPSJzdGFydC1vZi1jb250ZW50IiBjbGFzcz0ic2hvdy1vbi1mb2N1cyI+PC9kaXY+CisKKworICAgIDxkaXYgaWQ9ImpzLWZsYXNoLWNvbnRhaW5lciI+CisKKzwvZGl2PgorCisKKworICA8ZGl2IGNsYXNzPSJhcHBsaWNhdGlvbi1tYWluICIgZGF0YS1jb21taXQtaG92ZXJjYXJkcy1lbmFibGVkPgorICAgICAgICA8ZGl2IGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvU29mdHdhcmVTb3VyY2VDb2RlIiBjbGFzcz0iIj4KKyAgICA8bWFpbiAgPgorICAgICAgCisKKworICAKKworCisKKyAgCisKKworCisKKworCisKKworCisgIDxkaXYgY2xhc3M9IiBwYWdlaGVhZCByZXBvaGVhZCByZWFkYWJpbGl0eS1tZW51IGV4cGVyaW1lbnQtcmVwby1uYXYgcHQtMCBwdC1sZy00ICI+CisgICAgPGRpdiBjbGFzcz0icmVwb2hlYWQtZGV0YWlscy1jb250YWluZXIgY2xlYXJmaXggY29udGFpbmVyLWxnIHAtcmVzcG9uc2l2ZSBkLW5vbmUgZC1sZy1ibG9jayI+CisKKyAgICAgIDx1bCBjbGFzcz0icGFnZWhlYWQtYWN0aW9ucyI+CisKKworCisKKyAgPGxpPgorICAgIAorICA8YSBjbGFzcz0idG9vbHRpcHBlZCB0b29sdGlwcGVkLXMgYnRuIGJ0bi1zbSBidG4td2l0aC1jb3VudCIgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHdhdGNoIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyIgZGF0YS1oeWRyby1jbGljaz0ieyZxdW90O2V2ZW50X3R5cGUmcXVvdDs6JnF1b3Q7YXV0aGVudGljYXRpb24uY2xpY2smcXVvdDssJnF1b3Q7cGF5bG9hZCZxdW90Ozp7JnF1b3Q7bG9jYXRpb25faW5fcGFnZSZxdW90OzomcXVvdDtub3RpZmljYXRpb24gc3Vic2NyaXB0aW9uIG1lbnUgd2F0Y2gmcXVvdDssJnF1b3Q7cmVwb3NpdG9yeV9pZCZxdW90OzpudWxsLCZxdW90O2F1dGhfdHlwZSZxdW90OzomcXVvdDtMT0dfSU4mcXVvdDssJnF1b3Q7Y2xpZW50X2lkJnF1b3Q7Om51bGwsJnF1b3Q7b3JpZ2luYXRpbmdfcmVxdWVzdF9pZCZxdW90OzomcXVvdDtFMENCOjIyMzQ4OjUwOEQ5Qjo3NEQ3QjA6NURGQTQzQzQmcXVvdDssJnF1b3Q7b3JpZ2luYXRpbmdfdXJsJnF1b3Q7OiZxdW90O2h0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzJnF1b3Q7LCZxdW90O3JlZmVycmVyJnF1b3Q7Om51bGwsJnF1b3Q7dXNlcl9pZCZxdW90OzpudWxsfX0iIGRhdGEtaHlkcm8tY2xpY2staG1hYz0iNTVlNjFjZTgwNzUyMDk0MjcyNGQzN2Q0OGQzZDE5YzNkYTRiYWVlY2IyZWM4OWJjZTRmNmRhMGNlYjkxYTYyZCIgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZhcHBsZSUyRmN1cHMiPgorICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1leWUgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguMDYgMkMzIDIgMCA4IDAgOHMzIDYgOC4wNiA2QzEzIDE0IDE2IDggMTYgOHMtMy02LTcuOTQtNnpNOCAxMmMtMi4yIDAtNC0xLjc4LTQtNCAwLTIuMiAxLjgtNCA0LTQgMi4yMiAwIDQgMS44IDQgNCAwIDIuMjItMS43OCA0LTQgNHptMi00YzAgMS4xMS0uODkgMi0yIDItMS4xMSAwLTItLjg5LTItMiAwLTEuMTEuODktMiAyLTIgMS4xMSAwIDIgLjg5IDIgMnoiLz48L3N2Zz4KKyAgICBXYXRjaAorPC9hPiAgICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IiBocmVmPSIvYXBwbGUvY3Vwcy93YXRjaGVycyIKKyAgICAgICBhcmlhLWxhYmVsPSI4OCB1c2VycyBhcmUgd2F0Y2hpbmcgdGhpcyByZXBvc2l0b3J5Ij4KKyAgICAgIDg4CisgICAgPC9hPgorCisgIDwvbGk+CisKKyAgPGxpPgorICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1zbSBidG4td2l0aC1jb3VudCB0b29sdGlwcGVkIHRvb2x0aXBwZWQtcyIgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHN0YXIgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93IiBkYXRhLWh5ZHJvLWNsaWNrPSJ7JnF1b3Q7ZXZlbnRfdHlwZSZxdW90OzomcXVvdDthdXRoZW50aWNhdGlvbi5jbGljayZxdW90OywmcXVvdDtwYXlsb2FkJnF1b3Q7OnsmcXVvdDtsb2NhdGlvbl9pbl9wYWdlJnF1b3Q7OiZxdW90O3N0YXIgYnV0dG9uJnF1b3Q7LCZxdW90O3JlcG9zaXRvcnlfaWQmcXVvdDs6NDQxMzc4NTIsJnF1b3Q7YXV0aF90eXBlJnF1b3Q7OiZxdW90O0xPR19JTiZxdW90OywmcXVvdDtjbGllbnRfaWQmcXVvdDs6bnVsbCwmcXVvdDtvcmlnaW5hdGluZ19yZXF1ZXN0X2lkJnF1b3Q7OiZxdW90O0UwQ0I6MjIzNDg6NTA4RDlCOjc0RDdCMDo1REZBNDNDNCZxdW90OywmcXVvdDtvcmlnaW5hdGluZ191cmwmcXVvdDs6JnF1b3Q7aHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcmVsZWFzZXMmcXVvdDssJnF1b3Q7cmVmZXJyZXImcXVvdDs6bnVsbCwmcXVvdDt1c2VyX2lkJnF1b3Q7Om51bGx9fSIgZGF0YS1oeWRyby1jbGljay1obWFjPSJmOTcwNGE3MTViZTQ2YTU2NzQ3OTk3MzU3MzQ3N2E1ODM1MDFhMTk3NmY5OWRlYjBjY2RkMGIxZWQzYjc0ZTViIiBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRmFwcGxlJTJGY3VwcyI+CisgICAgICA8c3ZnIGFyaWEtbGFiZWw9InN0YXIiIGhlaWdodD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc3RhciB2LWFsaWduLXRleHQtYm90dG9tIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE0IDZsLTQuOS0uNjRMNyAxIDQuOSA1LjM2IDAgNmwzLjYgMy4yNkwyLjY3IDE0IDcgMTEuNjcgMTEuMzMgMTRsLS45My00Ljc0TDE0IDZ6Ii8+PC9zdmc+CisKKyAgICAgIFN0YXIKKzwvYT4KKyAgICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IGpzLXNvY2lhbC1jb3VudCIgaHJlZj0iL2FwcGxlL2N1cHMvc3RhcmdhemVycyIKKyAgICAgIGFyaWEtbGFiZWw9Ijg4MyB1c2VycyBzdGFycmVkIHRoaXMgcmVwb3NpdG9yeSI+CisgICAgICA4ODMKKyAgICA8L2E+CisKKyAgPC9saT4KKworICA8bGk+CisgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1zbSBidG4td2l0aC1jb3VudCB0b29sdGlwcGVkIHRvb2x0aXBwZWQtcyIgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIGZvcmsgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93IiBkYXRhLWh5ZHJvLWNsaWNrPSJ7JnF1b3Q7ZXZlbnRfdHlwZSZxdW90OzomcXVvdDthdXRoZW50aWNhdGlvbi5jbGljayZxdW90OywmcXVvdDtwYXlsb2FkJnF1b3Q7OnsmcXVvdDtsb2NhdGlvbl9pbl9wYWdlJnF1b3Q7OiZxdW90O3JlcG8gZGV0YWlscyBmb3JrIGJ1dHRvbiZxdW90OywmcXVvdDtyZXBvc2l0b3J5X2lkJnF1b3Q7OjQ0MTM3ODUyLCZxdW90O2F1dGhfdHlwZSZxdW90OzomcXVvdDtMT0dfSU4mcXVvdDssJnF1b3Q7Y2xpZW50X2lkJnF1b3Q7Om51bGwsJnF1b3Q7b3JpZ2luYXRpbmdfcmVxdWVzdF9pZCZxdW90OzomcXVvdDtFMENCOjIyMzQ4OjUwOEQ5Qjo3NEQ3QjA6NURGQTQzQzQmcXVvdDssJnF1b3Q7b3JpZ2luYXRpbmdfdXJsJnF1b3Q7OiZxdW90O2h0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzJnF1b3Q7LCZxdW90O3JlZmVycmVyJnF1b3Q7Om51bGwsJnF1b3Q7dXNlcl9pZCZxdW90OzpudWxsfX0iIGRhdGEtaHlkcm8tY2xpY2staG1hYz0iYjUyN2IyZmVhMGNkOGU5NDg3MDA0Nzk3MmFjZDg3MzU4Y2Y2YTczNWRhMjU0YjAwZWIwNWMxNWQ2NzZmNzUwMyIgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZhcHBsZSUyRmN1cHMiPgorICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwby1mb3JrZWQgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDEwIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMWExLjk5MyAxLjk5MyAwIDAwLTEgMy43MlY2TDUgOCAzIDZWNC43MkExLjk5MyAxLjk5MyAwIDAwMiAxYTEuOTkzIDEuOTkzIDAgMDAtMSAzLjcyVjYuNWwzIDN2MS43OEExLjk5MyAxLjk5MyAwIDAwNSAxNWExLjk5MyAxLjk5MyAwIDAwMS0zLjcyVjkuNWwzLTNWNC43MkExLjk5MyAxLjk5MyAwIDAwOCAxek0yIDQuMkMxLjM0IDQuMi44IDMuNjUuOCAzYzAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yem0zIDEwYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6bTMtMTBjLS42NiAwLTEuMi0uNTUtMS4yLTEuMiAwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnoiLz48L3N2Zz4KKyAgICAgICAgRm9yaworPC9hPgorICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL25ldHdvcmsvbWVtYmVycyIgY2xhc3M9InNvY2lhbC1jb3VudCIKKyAgICAgICBhcmlhLWxhYmVsPSIyNjAgdXNlcnMgZm9ya2VkIHRoaXMgcmVwb3NpdG9yeSI+CisgICAgICAyNjAKKyAgICA8L2E+CisgIDwvbGk+Cis8L3VsPgorCisgICAgICA8aDEgY2xhc3M9InB1YmxpYyAiPgorICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgorICA8c3BhbiBjbGFzcz0iYXV0aG9yIiBpdGVtcHJvcD0iYXV0aG9yIj48YSBjbGFzcz0idXJsIGZuIiByZWw9ImF1dGhvciIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0ib3JnYW5pemF0aW9uIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9vcmdzL2FwcGxlL2hvdmVyY2FyZCIgaHJlZj0iL2FwcGxlIj5hcHBsZTwvYT48L3NwYW4+PCEtLQorLS0+PHNwYW4gY2xhc3M9InBhdGgtZGl2aWRlciI+Lzwvc3Bhbj48IS0tCistLT48c3Ryb25nIGl0ZW1wcm9wPSJuYW1lIj48YSBkYXRhLXBqYXg9IiNqcy1yZXBvLXBqYXgtY29udGFpbmVyIiBocmVmPSIvYXBwbGUvY3VwcyI+Y3VwczwvYT48L3N0cm9uZz4KKyAgCisKKzwvaDE+CisKKyAgICA8L2Rpdj4KKyAgICAKKzxuYXYgY2xhc3M9Imh4X3JlcG9uYXYgcmVwb25hdiBqcy1yZXBvLW5hdiBqcy1zaWRlbmF2LWNvbnRhaW5lci1wamF4IGNvbnRhaW5lci1sZyBwLXJlc3BvbnNpdmUgZC1ub25lIGQtbGctYmxvY2siCisgICAgIGl0ZW1zY29wZQorICAgICBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvQnJlYWRjcnVtYkxpc3QiCisgICAgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIKKyAgICAgZGF0YS1wamF4PSIjanMtcmVwby1wamF4LWNvbnRhaW5lciI+CisKKyAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CisgICAgPGEgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSBzZWxlY3RlZCByZXBvbmF2LWl0ZW0iIGl0ZW1wcm9wPSJ1cmwiIGRhdGEtaG90a2V5PSJnIGMiIGFyaWEtY3VycmVudD0icGFnZSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19zb3VyY2UgcmVwb19kb3dubG9hZHMgcmVwb19jb21taXRzIHJlcG9fcmVsZWFzZXMgcmVwb190YWdzIHJlcG9fYnJhbmNoZXMgcmVwb19wYWNrYWdlcyAvYXBwbGUvY3VwcyIgaHJlZj0iL2FwcGxlL2N1cHMiPgorICAgICAgPGRpdiBjbGFzcz0iZC1pbmxpbmUiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1jb2RlIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOS41IDNMOCA0LjUgMTEuNSA4IDggMTEuNSA5LjUgMTMgMTQgOCA5LjUgM3ptLTUgMEwwIDhsNC41IDVMNiAxMS41IDIuNSA4IDYgNC41IDQuNSAzeiIvPjwvc3ZnPjwvZGl2PgorICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPkNvZGU8L3NwYW4+CisgICAgICA8bWV0YSBpdGVtcHJvcD0icG9zaXRpb24iIGNvbnRlbnQ9IjEiPgorPC9hPiAgPC9zcGFuPgorCisgICAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CisgICAgICA8YSBpdGVtcHJvcD0idXJsIiBkYXRhLWhvdGtleT0iZyBpIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19pc3N1ZXMgcmVwb19sYWJlbHMgcmVwb19taWxlc3RvbmVzIC9hcHBsZS9jdXBzL2lzc3VlcyIgaHJlZj0iL2FwcGxlL2N1cHMvaXNzdWVzIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iZC1pbmxpbmUiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1pc3N1ZS1vcGVuZWQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03IDIuM2MzLjE0IDAgNS43IDIuNTYgNS43IDUuN3MtMi41NiA1LjctNS43IDUuN0E1LjcxIDUuNzEgMCAwMTEuMyA4YzAtMy4xNCAyLjU2LTUuNyA1LjctNS43ek03IDFDMy4xNCAxIDAgNC4xNCAwIDhzMy4xNCA3IDcgNyA3LTMuMTQgNy03LTMuMTQtNy03LTd6bTEgM0g2djVoMlY0em0wIDZINnYyaDJ2LTJ6Ii8+PC9zdmc+PC9kaXY+CisgICAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5Jc3N1ZXM8L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJDb3VudGVyIj4xMDwvc3Bhbj4KKyAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIyIj4KKzwvYT4gICAgPC9zcGFuPgorCisgIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgorICAgIDxhIGRhdGEtaG90a2V5PSJnIHAiIGRhdGEtc2tpcC1wamF4PSJ0cnVlIiBpdGVtcHJvcD0idXJsIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19wdWxscyBjaGVja3MgL2FwcGxlL2N1cHMvcHVsbHMiIGhyZWY9Ii9hcHBsZS9jdXBzL3B1bGxzIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtaW5saW5lIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LXB1bGwtcmVxdWVzdCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDExLjI4VjVjLS4wMy0uNzgtLjM0LTEuNDctLjk0LTIuMDZDOS40NiAyLjM1IDguNzggMi4wMyA4IDJIN1YwTDQgM2wzIDNWNGgxYy4yNy4wMi40OC4xMS42OS4zMS4yMS4yLjMuNDIuMzEuNjl2Ni4yOEExLjk5MyAxLjk5MyAwIDAwMTAgMTVhMS45OTMgMS45OTMgMCAwMDEtMy43MnptLTEgMi45MmMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yek00IDNjMC0xLjExLS44OS0yLTItMmExLjk5MyAxLjk5MyAwIDAwLTEgMy43MnY2LjU2QTEuOTkzIDEuOTkzIDAgMDAyIDE1YTEuOTkzIDEuOTkzIDAgMDAxLTMuNzJWNC43MmMuNTktLjM0IDEtLjk4IDEtMS43MnptLS44IDEwYzAgLjY2LS41NSAxLjItMS4yIDEuMi0uNjUgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMnpNMiA0LjJDMS4zNCA0LjIuOCAzLjY1LjggM2MwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnoiLz48L3N2Zz48L2Rpdj4KKyAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5QdWxsIHJlcXVlc3RzPC9zcGFuPgorICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiPjY8L3NwYW4+CisgICAgICA8bWV0YSBpdGVtcHJvcD0icG9zaXRpb24iIGNvbnRlbnQ9IjMiPgorPC9hPiAgPC9zcGFuPgorCisKKyAgICA8YSBkYXRhLWhvdGtleT0iZyBiIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19wcm9qZWN0cyBuZXdfcmVwb19wcm9qZWN0IHJlcG9fcHJvamVjdCAvYXBwbGUvY3Vwcy9wcm9qZWN0cyIgaHJlZj0iL2FwcGxlL2N1cHMvcHJvamVjdHMiPgorICAgICAgPGRpdiBjbGFzcz0iZC1pbmxpbmUiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMDAtMSAxdjE0YTEgMSAwIDAwMSAxaDEzYTEgMSAwIDAwMS0xVjFhMSAxIDAgMDAtMS0xeiIvPjwvc3ZnPjwvZGl2PgorICAgICAgUHJvamVjdHMKKyAgICAgIDxzcGFuIGNsYXNzPSJDb3VudGVyIiA+MDwvc3Bhbj4KKzwvYT4KKworICAgIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLWhvdGtleT0iZyB3IiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3dpa2kgL2FwcGxlL2N1cHMvd2lraSIgaHJlZj0iL2FwcGxlL2N1cHMvd2lraSI+CisgICAgICA8ZGl2IGNsYXNzPSJkLWlubGluZSI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWJvb2siIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zIDVoNHYxSDNWNXptMCAzaDRWN0gzdjF6bTAgMmg0VjlIM3Yxem0xMS01aC00djFoNFY1em0wIDJoLTR2MWg0Vjd6bTAgMmgtNHYxaDRWOXptMi02djljMCAuNTUtLjQ1IDEtMSAxSDkuNWwtMSAxLTEtMUgyYy0uNTUgMC0xLS40NS0xLTFWM2MwLS41NS40NS0xIDEtMWg1LjVsMSAxIDEtMUgxNWMuNTUgMCAxIC40NSAxIDF6bS04IC41TDcuNSAzSDJ2OWg2VjMuNXptNy0uNUg5LjVsLS41LjVWMTJoNlYzeiIvPjwvc3ZnPjwvZGl2PgorICAgICAgV2lraQorPC9hPgorICAgIDxhIGRhdGEtc2tpcC1wamF4PSJ0cnVlIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0ic2VjdXJpdHkgYWxlcnRzIHBvbGljeSBjb2RlX3NjYW5uaW5nIC9hcHBsZS9jdXBzL3NlY3VyaXR5L2Fkdmlzb3JpZXMiIGhyZWY9Ii9hcHBsZS9jdXBzL3NlY3VyaXR5L2Fkdmlzb3JpZXMiPgorICAgICAgPGRpdiBjbGFzcz0iZC1pbmxpbmUiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zaGllbGQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDJsNy0yIDcgMnY2LjAyQzE0IDEyLjY5IDguNjkgMTYgNyAxNmMtMS42OSAwLTctMy4zMS03LTcuOThWMnptMSAuNzVMNyAxbDYgMS43NXY1LjI2OEMxMyAxMi4xMDQgOC40NDkgMTUgNyAxNWMtMS40NDkgMC02LTIuODk2LTYtNi45ODJWMi43NXptMSAuNzVMNyAydjEyYy0xLjIwNyAwLTUtMi40ODItNS01Ljk4NVYzLjV6Ii8+PC9zdmc+PC9kaXY+CisgICAgICBTZWN1cml0eQorPC9hPgorICAgIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2dyYXBocyByZXBvX2NvbnRyaWJ1dG9ycyBkZXBlbmRlbmN5X2dyYXBoIHB1bHNlIHBlb3BsZSAvYXBwbGUvY3Vwcy9wdWxzZSIgaHJlZj0iL2FwcGxlL2N1cHMvcHVsc2UiPgorICAgICAgPGRpdiBjbGFzcz0iZC1pbmxpbmUiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1ncmFwaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE2IDE0djFIMFYwaDF2MTRoMTV6TTUgMTNIM1Y4aDJ2NXptNCAwSDdWM2gydjEwem00IDBoLTJWNmgydjd6Ii8+PC9zdmc+PC9kaXY+CisgICAgICBJbnNpZ2h0cworPC9hPgorCis8L25hdj4KKworICA8ZGl2IGNsYXNzPSJyZXBvbmF2LXdyYXBwZXIgcmVwb25hdi1zbWFsbCBkLWxnLW5vbmUiPgorICA8bmF2IGNsYXNzPSJyZXBvbmF2IGpzLXJlcG9uYXYgdGV4dC1jZW50ZXIgbm8td3JhcCIKKyAgICAgICBpdGVtc2NvcGUKKyAgICAgICBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvQnJlYWRjcnVtYkxpc3QiPgorCisgICAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CisgICAgICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHNlbGVjdGVkIHJlcG9uYXYtaXRlbSIgaXRlbXByb3A9InVybCIgYXJpYS1jdXJyZW50PSJwYWdlIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3NvdXJjZSByZXBvX2Rvd25sb2FkcyByZXBvX2NvbW1pdHMgcmVwb19yZWxlYXNlcyByZXBvX3RhZ3MgcmVwb19icmFuY2hlcyByZXBvX3BhY2thZ2VzIC9hcHBsZS9jdXBzIiBocmVmPSIvYXBwbGUvY3VwcyI+CisgICAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5Db2RlPC9zcGFuPgorICAgICAgICA8bWV0YSBpdGVtcHJvcD0icG9zaXRpb24iIGNvbnRlbnQ9IjEiPgorPC9hPiAgICA8L3NwYW4+CisKKyAgICAgIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgorICAgICAgICA8YSBpdGVtcHJvcD0idXJsIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19pc3N1ZXMgcmVwb19sYWJlbHMgcmVwb19taWxlc3RvbmVzIC9hcHBsZS9jdXBzL2lzc3VlcyIgaHJlZj0iL2FwcGxlL2N1cHMvaXNzdWVzIj4KKyAgICAgICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+SXNzdWVzPC9zcGFuPgorICAgICAgICAgIDxzcGFuIGNsYXNzPSJDb3VudGVyIj4xMDwvc3Bhbj4KKyAgICAgICAgICA8bWV0YSBpdGVtcHJvcD0icG9zaXRpb24iIGNvbnRlbnQ9IjIiPgorPC9hPiAgICAgIDwvc3Bhbj4KKworICAgIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgorICAgICAgPGEgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHVsbHMgY2hlY2tzIC9hcHBsZS9jdXBzL3B1bGxzIiBocmVmPSIvYXBwbGUvY3Vwcy9wdWxscyI+CisgICAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5QdWxsIHJlcXVlc3RzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+Njwvc3Bhbj4KKyAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIzIj4KKzwvYT4gICAgPC9zcGFuPgorCisgICAgICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KKyAgICAgICAgPGEgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHJvamVjdHMgbmV3X3JlcG9fcHJvamVjdCByZXBvX3Byb2plY3QgL2FwcGxlL2N1cHMvcHJvamVjdHMiIGhyZWY9Ii9hcHBsZS9jdXBzL3Byb2plY3RzIj4KKyAgICAgICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+UHJvamVjdHM8L3NwYW4+CisgICAgICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiPjA8L3NwYW4+CisgICAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSI0Ij4KKzwvYT4gICAgICA8L3NwYW4+CisKKyAgICAgIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgorICAgICAgICA8YSBpdGVtcHJvcD0idXJsIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb193aWtpIC9hcHBsZS9jdXBzL3dpa2kiIGhyZWY9Ii9hcHBsZS9jdXBzL3dpa2kiPgorICAgICAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5XaWtpPC9zcGFuPgorICAgICAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iNSI+Cis8L2E+ICAgICAgPC9zcGFuPgorCisgICAgICA8YSBpdGVtcHJvcD0idXJsIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0ic2VjdXJpdHkgYWxlcnRzIHBvbGljeSBjb2RlX3NjYW5uaW5nIC9hcHBsZS9jdXBzL3NlY3VyaXR5L2Fkdmlzb3JpZXMiIGhyZWY9Ii9hcHBsZS9jdXBzL3NlY3VyaXR5L2Fkdmlzb3JpZXMiPgorICAgICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+U2VjdXJpdHk8L3NwYW4+CisgICAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iNiI+Cis8L2E+CisgICAgICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icHVsc2UgL2FwcGxlL2N1cHMvcHVsc2UiIGhyZWY9Ii9hcHBsZS9jdXBzL3B1bHNlIj4KKyAgICAgICAgUHVsc2UKKzwvYT4KKworICA8L25hdj4KKzwvZGl2PgorCisKKyAgPC9kaXY+Cis8ZGl2IGNsYXNzPSJjb250YWluZXItbGcgY2xlYXJmaXggbmV3LWRpc2N1c3Npb24tdGltZWxpbmUgZXhwZXJpbWVudC1yZXBvLW5hdiAgcC1yZXNwb25zaXZlIj4KKyAgPGRpdiBjbGFzcz0icmVwb3NpdG9yeS1jb250ZW50ICI+CisKKyAgICAKKyAgICAKKyAgICAgICAgPGRpdiBjbGFzcz0ic2lnbnVwLXByb21wdC1iZyByb3VuZGVkLTEgaGlkZS1zbSI+CisgICAgICA8ZGl2IGNsYXNzPSJzaWdudXAtcHJvbXB0IHAtNCB0ZXh0LWNlbnRlciBtYi00IHJvdW5kZWQtMSI+CisgICAgICAgIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIj4KKyAgICAgICAgICA8IS0tICciYCAtLT48IS0tIDwvdGV4dGFyZWE+PC94bXA+IC0tPjwvb3B0aW9uPjwvZm9ybT48Zm9ybSBhY3Rpb249Ii9wcm9tcHRfZGlzbWlzc2Fscy9zaWdudXAiIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCIgbWV0aG9kPSJwb3N0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iX21ldGhvZCIgdmFsdWU9InB1dCIgLz48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhdXRoZW50aWNpdHlfdG9rZW4iIHZhbHVlPSJrRGFYL3NGM0FvU2cvM21HVGc3Tnc0RWdHb3hCQ3ZvcThhZGwwcmRXOFFmcFVRbm1wT2VxM0V4U1lrUVlRbDZVZmlSR0dRbGF5OUh6b1ZWblY5cGphUT09IiAvPgorICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtMCByaWdodC0wIGJ0bi1saW5rIGxpbmstZ3JheSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIFNpZ24gdXAgcHJvbXB0LCBjbGlja2VkIERpc21pc3MsIHRleHQ6ZGlzbWlzcyI+CisgICAgICAgICAgICAgIERpc21pc3MKKyAgICAgICAgICAgIDwvYnV0dG9uPgorPC9mb3JtPiAgICAgICAgICA8aDMgY2xhc3M9InB0LTIiPkJlIG5vdGlmaWVkIG9mIG5ldyByZWxlYXNlczwvaDM+CisgICAgICAgICAgPHAgY2xhc3M9ImNvbC04IG14LWF1dG8iPkNyZWF0ZSB5b3VyIGZyZWUgR2l0SHViIGFjY291bnQgdG9kYXkgdG8gc3Vic2NyaWJlIHRvIHRoaXMgcmVwb3NpdG9yeSBmb3IgbmV3IHJlbGVhc2VzIGFuZCBidWlsZCBzb2Z0d2FyZSBhbG9uZ3NpZGUgNDAgbWlsbGlvbiBkZXZlbG9wZXJzLjwvcD4KKyAgICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBkYXRhLWh5ZHJvLWNsaWNrPSJ7JnF1b3Q7ZXZlbnRfdHlwZSZxdW90OzomcXVvdDthdXRoZW50aWNhdGlvbi5jbGljayZxdW90OywmcXVvdDtwYXlsb2FkJnF1b3Q7OnsmcXVvdDtsb2NhdGlvbl9pbl9wYWdlJnF1b3Q7OiZxdW90O3JlbGVhc2VzIHNpZ251cCBwcm9tcHQmcXVvdDssJnF1b3Q7cmVwb3NpdG9yeV9pZCZxdW90OzpudWxsLCZxdW90O2F1dGhfdHlwZSZxdW90OzomcXVvdDtTSUdOX1VQJnF1b3Q7LCZxdW90O2NsaWVudF9pZCZxdW90OzpudWxsLCZxdW90O29yaWdpbmF0aW5nX3JlcXVlc3RfaWQmcXVvdDs6JnF1b3Q7RTBDQjoyMjM0ODo1MDhEOUI6NzREN0IwOjVERkE0M0M0JnF1b3Q7LCZxdW90O29yaWdpbmF0aW5nX3VybCZxdW90OzomcXVvdDtodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcyZxdW90OywmcXVvdDtyZWZlcnJlciZxdW90OzpudWxsLCZxdW90O3VzZXJfaWQmcXVvdDs6bnVsbH19IiBkYXRhLWh5ZHJvLWNsaWNrLWhtYWM9ImMyYTlmODcwZGRmOTk2OGNjNjk3ODI0NjRjNjgzOTFmOWU2YWU3NjQ2NTAxZDEzYmNmY2NlNjg0NThiZjgyZTUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBTaWduIHVwIHByb21wdCwgY2xpY2tlZCBTaWduIHVwLCB0ZXh0OnNpZ24tdXAiIGhyZWY9Ii9qb2luP3NvdXJjZT1wcm9tcHQtcmVsZWFzZXMiPlNpZ24gdXA8L2E+CisgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKworICA8ZGl2IGNsYXNzPSJzdWJuYXYiPgorICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LW1kLXJvdyBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LW1kLWl0ZW1zLWNlbnRlciI+CisgIDxkaXYgY2xhc3M9InN1Ym5hdi1saW5rcyBmbG9hdC1sZWZ0IiByb2xlPSJuYXZpZ2F0aW9uIj4KKyAgICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHNlbGVjdGVkIHN1Ym5hdi1pdGVtIiBhcmlhLWN1cnJlbnQ9InBhZ2UiIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcmVsZWFzZXMgL2FwcGxlL2N1cHMvcmVsZWFzZXMiIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzIj5SZWxlYXNlczwvYT4KKyAgICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHN1Ym5hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3RhZ3MgL2FwcGxlL2N1cHMvdGFncyIgaHJlZj0iL2FwcGxlL2N1cHMvdGFncyI+VGFnczwvYT4KKyAgPC9kaXY+Cis8L2Rpdj4KKworCisgIDwvZGl2PgorCisgIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlci10b3AgY2xlYXJmaXgiPgorCisKKworICAgICAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWVudHJ5Ij4KKyAgICAgICAgICAgIAorPGRpdiBjbGFzcz0icmVsZWFzZSBwdC0yIHB0LW1kLTAgcGItMyBwYi1tZC0wIGNsZWFyZml4IGxhYmVsLWxhdGVzdCI+CisgIDxkaXYgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIGZsZXgtd3JhcCBmbGV4LWl0ZW1zLWNlbnRlciBjb2wtMTIgY29sLW1kLTMgY29sLWxnLTIgcHgtbWQtMyBwYi0xIHBiLW1kLTQgcHQtbWQtNCBmbG9hdC1sZWZ0IHRleHQtbWQtcmlnaHQgdi1hbGlnbi10b3AiPgorICAgIDxkaXYgY2xhc3M9ImZsZXgtYXV0byBmbGV4LXNlbGYtc3RhcnQiPgorICAgICAgICA8c3BhbiBjbGFzcz0iZmxleC1zaHJpbmstMCBMYWJlbCBMYWJlbC0tb3V0bGluZSBtYi1tZC0yIG1yLTIgbXItbWQtMCBMYWJlbC0tb3V0bGluZS1ncmVlbiI+CisgICAgICAgICAgICA8YSBjbGFzcz0iYm9yZGVyLTAgTGFiZWwtLW91dGxpbmUtZ3JlZW4iIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2xhdGVzdCI+TGF0ZXN0IHJlbGVhc2U8L2E+CisgICAgICAgIDwvc3Bhbj4KKworCisgICAgPC9kaXY+CisKKyAgICAgIDx1bCBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgbXQtMiBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4zLjEiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjMuMSI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4zLjE8L3NwYW4+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvZWQxODFjMjRlNGIxMzBkMjk4MTc4NWQ0NDQ4OGJlZjhjZmRhNWY2ZCIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxjb2RlPmVkMTgxYzI8L2NvZGU+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorICAgICAgICAKKyAgICAgIDwvdWw+CisgICAgICAKKworICA8L2Rpdj48IS0tIC8ubWV0YSAtLT4KKworICA8ZGl2IGNsYXNzPSJjb2wtMTIgY29sLW1kLTkgY29sLWxnLTEwIHB4LW1kLTMgcHktbWQtNCByZWxlYXNlLW1haW4tc2VjdGlvbiBjb21taXQgb3BlbiBmbG9hdC1sZWZ0Ij4KKyAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWhlYWRlciI+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1zdGFydCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImYxIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LW5vcm1hbCI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvdGFnL3YyLjMuMSI+djIuMy4xPC9hPgorICAgICAgICA8L2Rpdj4KKworICAgICAgICAgIDxzcGFuIGNsYXNzPSJkLW1kLW5vbmUgZmxleC1zaHJpbmstMCBtbC0yIG10LTIgbXQtbWQtMCBMYWJlbCBMYWJlbC0tb3V0bGluZSBMYWJlbC0tb3V0bGluZS1ncmVlbiI+CisgICAgICAgICAgICAgIDxhIGNsYXNzPSJib3JkZXItMCBMYWJlbC0tb3V0bGluZS1ncmVlbiIgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvbGF0ZXN0Ij5MYXRlc3QgcmVsZWFzZTwvYT4KKyAgICAgICAgICA8L3NwYW4+CisKKyAgICAgIDwvZGl2PgorICAgICAgICA8dWwgY2xhc3M9ImQtZmxleCBkLW1kLW5vbmUgZmxleC1pdGVtcy1jZW50ZXIgbWItMSBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuMy4xIiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4zLjEiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjMuMTwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIgZmxleC1hdXRvIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC9lZDE4MWMyNGU0YjEzMGQyOTgxNzg1ZDQ0NDg4YmVmOGNmZGE1ZjZkIiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxjb2RlPmVkMTgxYzI8L2NvZGU+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKyAgICAgICAgICAKKworICAgICAgICAgIAorCisgICAgICAgIDwvdWw+CisgICAgICAKKzxwIGNsYXNzPSJmNSB0ZXh0LWdyYXkgbXQtMiBtdC1tZC0xIG1iLTIgbWItbWQtNCI+CisgICAgPGEgY2xhc3M9ImQtaW5saW5lLWJsb2NrIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+PGltZyBjbGFzcz0iYXZhdGFyIiBzcmM9Imh0dHBzOi8vYXZhdGFyczMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDg4MTAzP3M9NDAmYW1wO3Y9NCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBhbHQ9IkBtaWNoYWVscnN3ZWV0IiAvPjwvYT4KKyAgICA8YSBjbGFzcz0idGV4dC1ib2xkIHRleHQtZ3JheSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPm1pY2hhZWxyc3dlZXQ8L2E+CisgICAgcmVsZWFzZWQgdGhpcworICAgIDxyZWxhdGl2ZS10aW1lIGRhdGV0aW1lPSIyMDE5LTEyLTEzVDE0OjUxOjExWiIgY2xhc3M9Im5vLXdyYXAiPkRlYyAxMywgMjAxOTwvcmVsYXRpdmUtdGltZT4KKzwvcD4KKyAgICA8L2Rpdj4KKworICAgIAorCisgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWJvZHkiPgorICAgIDxwPkNVUFMgMi4zLjEgaXMgYSBnZW5lcmFsIGJ1ZyBmaXggcmVsZWFzZSwgaW5jbHVkaW5nIGEgZml4IGZvciBDVkUtMjAxOS0yMjI4LiAgQ2hhbmdlcyBpbmNsdWRlOjwvcD4KKzx1bD4KKzxsaT5Eb2N1bWVudGF0aW9uIHVwZGF0ZXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjUwNDY4MzQ1NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY2MSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjEvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY2MSI+IzU2NjE8L2E+LCA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MTQ5NzM4NTMiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NzQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81Njc0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NzQiPiM1Njc0PC9hPiwgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTIwNDcwMTg5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjgyIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY4Mi9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjgyIj4jNTY4MjwvYT4pPC9saT4KKzxsaT5DVkUtMjAxOS0yMjI4OiBUaGUgPGNvZGU+aXBwU2V0VmFsdWV0YWc8L2NvZGU+IGZ1bmN0aW9uIGRpZCBub3QgdmFsaWRhdGUgdGhlIGRlZmF1bHQ8YnI+CitsYW5ndWFnZSB2YWx1ZS48L2xpPgorPGxpPkZpeGVkIGEgY3Jhc2ggYnVnIGluIHRoZSB3ZWIgaW50ZXJmYWNlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NzM5MjU2MTMiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MjEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2MjEvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2MjEiPiM1NjIxPC9hPik8L2xpPgorPGxpPlRoZSBQUEQgY2FjaGUgY29kZSBub3cgbG9va3MgdXAgcGFnZSBzaXplcyB1c2luZyB0aGVpciBkaW1lbnNpb25zPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ3OTg3NzY4MCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzMyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2MzMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzMyI+IzU2MzM8L2E+KTwvbGk+Cis8bGk+UFBEIGZpbGVzIGNvbnRhaW5pbmcgImN1c3RvbSIgb3B0aW9uIGtleXdvcmRzIGRpZCBub3Qgd29yayAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDg2MDI0NTkxIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjM5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzOS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjM5Ij4jNTYzOTwvYT4pPC9saT4KKzxsaT5BZGRlZCBhIHdvcmthcm91bmQgZm9yIHRoZSBzY2hlZHVsZXIncyBzeXN0ZW1kIHN1cHBvcnQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ4NjAzNDQwNSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY0MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2NDAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY0MCI+IzU2NDA8L2E+KTwvbGk+Cis8bGk+T24gV2luZG93cywgVExTIGNlcnRpZmljYXRlcyBnZW5lcmF0ZWQgb24gRmVicnVhcnkgMjkgd291bGQgbGlrZWx5IGZhaWw8YnI+CisoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDg3MjE1OTcyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjQzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NjQzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NjQzIj4jNTY0MzwvYT4pPC9saT4KKzxsaT5BZGRlZCBhIERpZ2VzdE9wdGlvbnMgZGlyZWN0aXZlIGZvciB0aGUgPGNvZGU+Y2xpZW50LmNvbmY8L2NvZGU+IGZpbGUgdG8gY29udHJvbCB3aGV0aGVyPGJyPgorTUQ1LWJhc2VkIERpZ2VzdCBhdXRoZW50aWNhdGlvbiBpcyBhbGxvd2VkIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0ODk3MjU4ODciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NDciIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjQ3L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NDciPiM1NjQ3PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgYnVnIGluIHRoZSBoYW5kbGluZyBvZiBwcmludGVyIHJlc291cmNlIGZpbGVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0OTUyNjkzNDciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NTIiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjUyL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NTIiPiM1NjUyPC9hPik8L2xpPgorPGxpPlRoZSBsaWJ1c2ItYmFzZWQgVVNCIGJhY2tlbmQgbm93IHJlcG9ydHMgYW4gZXJyb3Igd2hlbiB0aGUgZGlzdHJpYnV0aW9uPGJyPgorcGVybWlzc2lvbnMgYXJlIHdyb25nIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MDA1OTQ1MTciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NTgiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjU4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NTgiPiM1NjU4PC9hPik8L2xpPgorPGxpPkFkZGVkIHBhaW50IGNhbiBsYWJlbHMgdG8gRHltbyBkcml2ZXIgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjUwNDc1NDI0OCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY2MiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjIvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY2MiI+IzU2NjI8L2E+KTwvbGk+Cis8bGk+VGhlIDxjb2RlPmlwcGV2ZXByaW50ZXI8L2NvZGU+IHByb2dyYW0gbm93IHN1cHBvcnRzIGF1dGhlbnRpY2F0aW9uIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MDU4MjkwOTUiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjY1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjUiPiM1NjY1PC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT5pcHBldmVwcmludGVyPC9jb2RlPiBwcm9ncmFtIG5vdyBhZHZlcnRpc2VzIEROUy1TRCBzZXJ2aWNlcyBvbiB0aGUgY29ycmVjdDxicj4KK2ludGVyZmFjZXMsIGFuZCBwcm92aWRlcyBhIHdheSB0byB0dXJuIHRoZW0gb2ZmIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MDU4MzAwNDciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjYiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjY2L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjYiPiM1NjY2PC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT4tLXdpdGgtZGJ1c2RpcjwvY29kZT4gb3B0aW9uIHdhcyBpZ25vcmVkIGJ5IHRoZSBjb25maWd1cmUgc2NyaXB0IChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MDk2MTE4MzgiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NzEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjcxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NzEiPiM1NjcxPC9hPik8L2xpPgorPGxpPlNhbmRib3hlZCBhcHBsaWNhdGlvbnMgd2VyZSBub3QgYWJsZSB0byBnZXQgdGhlIGRlZmF1bHQgcHJpbnRlciAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTE5MTc5NjAwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njc2IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY3Ni9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njc2Ij4jNTY3NjwvYT4pPC9saT4KKzxsaT5Mb2cgZmlsZSBhY2Nlc3MgY29udHJvbHMgd2VyZSBub3QgcHJlc2VydmVkIGJ5IDxjb2RlPmN1cHNjdGw8L2NvZGU+IChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MTkyMzAxNDciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NzciIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2NzcvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2NzciPiM1Njc3PC9hPik8L2xpPgorPGxpPkRlZmF1bHQgcHJpbnRlcnMgc2V0IHdpdGggPGNvZGU+bHBvcHRpb25zPC9jb2RlPiBkaWQgbm90IHdvcmsgaW4gYWxsIGNhc2VzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MjA0MTU5NjYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjgxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODEiPiM1NjgxPC9hPiw8YnI+CitJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MjIwNjUzNzYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjgzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODMiPiM1NjgzPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTIzMjAwMTQyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njg0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY4NC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njg0Ij4jNTY4NDwvYT4pPC9saT4KKzxsaT5GaXhlZCBhbiBlcnJvciBpbiB0aGUgam9icyB3ZWIgaW50ZXJmYWNlIHRlbXBsYXRlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1Mjk5ODkyODgiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2OTQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2OTQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2OTQiPiM1Njk0PC9hPik8L2xpPgorPGxpPkZpeGVkIGFuIG9mZi1ieS1vbmUgZXJyb3IgaW4gPGNvZGU+aXBwRW51bVN0cmluZzwvY29kZT4gKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjUzMjg2MjM0MSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY5NSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTY5NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTY5NSI+IzU2OTU8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgc29tZSBuZXcgY29tcGlsZXIgd2FybmluZ3MgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjUzNDU0NTQxOSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTcwMCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTcwMC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTcwMCI+IzU3MDA8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYSBmZXcgaXNzdWVzIHdpdGggdGhlIEFwcGxlIFJhc3RlciBzdXBwb3J0IChyZGFyOi8vNTUzMDExMTQpPC9saT4KKzxsaT5UaGUgSVBQIGJhY2tlbmQgZGlkIG5vdCBkZXRlY3QgYWxsIGNhc2VzIHdoZXJlIGEgam9iIHNob3VsZCBiZSByZXRyaWVkIHVzaW5nPGJyPgorYSByYXN0ZXIgZm9ybWF0IChyZGFyOi8vNTYwMjEwOTEpPC9saT4KKzxsaT5GaXhlZCBzcGVsbGluZyBvZiAiZm9sZC1hY2NvcmRpb24iLjwvbGk+Cis8bGk+Rml4ZWQgdGhlIGRlZmF1bHQgY29tbW9uIG5hbWUgZm9yIFRMUyBjZXJ0aWZpY2F0ZXMgdXNlZCBieSA8Y29kZT5pcHBldmVwcmludGVyPC9jb2RlPi48L2xpPgorPGxpPkZpeGVkIHRoZSBvcHRpb24gbmFtZXMgdXNlZCBmb3IgSVBQIEV2ZXJ5d2hlcmUgZmluaXNoaW5nIG9wdGlvbnMuPC9saT4KKzxsaT5BZGRlZCBzdXBwb3J0IGZvciB0aGUgc2Vjb25kIHJvbGwgb2YgdGhlIERZTU8gVHdpbi9EVU8gbGFiZWwgcHJpbnRlcnMuPC9saT4KKzwvdWw+Cis8cD5FbmpveSE8L3A+CisgIDwvZGl2PgorCisKKyAgPGRldGFpbHMKKyAgICBjbGFzcz0iZGV0YWlscy1yZXNldCBEZXRhaWxzLWVsZW1lbnQgYm9yZGVyLXRvcCBwdC0zIG10LTQgbWItMiBtYi1tZC00IgorICAgIG9wZW4KKyAgICAKKyAgICA+CisgICAgPHN1bW1hcnk+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLWNsb3NlZCI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLXJpZ2h0IiB2aWV3Qm94PSIwIDAgNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgMTRsNi02LTYtNnYxMnoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tb3BlbiI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLWRvd24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDVsNiA2IDYtNkgweiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtYm9sZCI+QXNzZXRzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibWwtMSBDb3VudGVyIj40PC9zcGFuPgorICAgICAgPC9kaXY+CisgICAgPC9zdW1tYXJ5PgorICAgIDxkaXYgY2xhc3M9IkJveCBCb3gtLWNvbmRlbnNlZCBtdC0zIj4KKyAgICAgIDxkaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjMuMS9jdXBzLTIuMy4xLXNvdXJjZS50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjMuMS1zb3VyY2UudGFyLmd6PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj43Ljc2IE1CPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuMy4xL2N1cHMtMi4zLjEtc291cmNlLnRhci5nei5zaWciIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjMuMS1zb3VyY2UudGFyLmd6LnNpZzwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+NTg1IEJ5dGVzPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKworCisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjMuMS56aXAiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAoemlwKQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4zLjEudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHRhci5neikKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2RldGFpbHM+CisKKworICA8L2Rpdj48IS0tIC8ucmVsZWFzZS1ib2R5IC0tPgorPC9kaXY+PCEtLSAvLnJlbGVhc2UgLS0+CisKKyAgICAgICAgPC9kaXY+CisKKworCisgICAgICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtZW50cnkiPgorICAgICAgICAgICAgCis8ZGl2IGNsYXNzPSJyZWxlYXNlIHB0LTIgcHQtbWQtMCBwYi0zIHBiLW1kLTAgY2xlYXJmaXggbGFiZWwtIj4KKyAgPGRpdiBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgZmxleC13cmFwIGZsZXgtaXRlbXMtY2VudGVyIGNvbC0xMiBjb2wtbWQtMyBjb2wtbGctMiBweC1tZC0zIHBiLTEgcGItbWQtNCBwdC1tZC00IGZsb2F0LWxlZnQgdGV4dC1tZC1yaWdodCB2LWFsaWduLXRvcCI+CisgICAgPGRpdiBjbGFzcz0iZmxleC1hdXRvIGZsZXgtc2VsZi1zdGFydCI+CisKKworICAgIDwvZGl2PgorCisgICAgICA8dWwgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIG10LTIgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuMi4xMyIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuMi4xMyI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4yLjEzPC9zcGFuPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0LzBhZDZhYzU1ZGEyNjg2YzZmYTI0YjA1YmRlNWU5MDM2ZmQ0ZGI1ZDEiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICA8Y29kZT4wYWQ2YWM1PC9jb2RlPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKyAgICAgICAgCisgICAgICA8L3VsPgorICAgICAgCisKKyAgPC9kaXY+PCEtLSAvLm1ldGEgLS0+CisKKyAgPGRpdiBjbGFzcz0iY29sLTEyIGNvbC1tZC05IGNvbC1sZy0xMCBweC1tZC0zIHB5LW1kLTQgcmVsZWFzZS1tYWluLXNlY3Rpb24gY29tbWl0IG9wZW4gZmxvYXQtbGVmdCI+CisgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1oZWFkZXIiPgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtc3RhcnQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJmMSBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ub3JtYWwiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL3RhZy92Mi4yLjEzIj52Mi4yLjEzPC9hPgorICAgICAgICA8L2Rpdj4KKworCisgICAgICA8L2Rpdj4KKyAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggZC1tZC1ub25lIGZsZXgtaXRlbXMtY2VudGVyIG1iLTEgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjIuMTMiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjIuMTMiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjIuMTM8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIGZsZXgtYXV0byI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvMGFkNmFjNTVkYTI2ODZjNmZhMjRiMDViZGU1ZTkwMzZmZDRkYjVkMSIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8Y29kZT4wYWQ2YWM1PC9jb2RlPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisgICAgICAgICAgCisKKyAgICAgICAgICAKKworICAgICAgICA8L3VsPgorICAgICAgCis8cCBjbGFzcz0iZjUgdGV4dC1ncmF5IG10LTIgbXQtbWQtMSBtYi0yIG1iLW1kLTQiPgorICAgIDxhIGNsYXNzPSJkLWlubGluZS1ibG9jayIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPjxpbWcgY2xhc3M9ImF2YXRhciIgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ4ODEwMz9zPTQwJmFtcDt2PTQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYWx0PSJAbWljaGFlbHJzd2VldCIgLz48L2E+CisgICAgPGEgY2xhc3M9InRleHQtYm9sZCB0ZXh0LWdyYXkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij5taWNoYWVscnN3ZWV0PC9hPgorICAgIHJlbGVhc2VkIHRoaXMKKyAgICA8cmVsYXRpdmUtdGltZSBkYXRldGltZT0iMjAxOS0xMi0xM1QxNDo0OTo1NVoiIGNsYXNzPSJuby13cmFwIj5EZWMgMTMsIDIwMTk8L3JlbGF0aXZlLXRpbWU+CisgICAgJm1pZGRvdDsKKyAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21wYXJlL3YyLjIuMTMuLi5tYXN0ZXIiPgorICAgIDc5MyBjb21taXRzPC9hPgorICAgIHRvIG1hc3RlcgorICAgIHNpbmNlIHRoaXMgcmVsZWFzZQorPC9wPgorICAgIDwvZGl2PgorCisgICAgCisKKyAgPGRpdiBjbGFzcz0ibWFya2Rvd24tYm9keSI+CisgICAgPHA+Q1VQUyAyLjIuMTMgaXMgdGhlIGxhc3QgZ2VuZXJhbCBidWcgZml4IHJlbGVhc2UgaW4gdGhlIDIuMi54IHNlcmllcyBhbmQgaW5jbHVkZXM8YnI+CithIGZpeCBmb3IgQ1ZFLTIwMTktMjIyOC4gIENoYW5nZXMgaW5jbHVkZTo8L3A+Cis8dWw+Cis8bGk+Q1ZFLTIwMTktMjIyODogVGhlIDxjb2RlPmlwcFNldFZhbHVldGFnPC9jb2RlPiBmdW5jdGlvbiBkaWQgbm90IHZhbGlkYXRlIHRoZSBkZWZhdWx0PGJyPgorbGFuZ3VhZ2UgdmFsdWUuPC9saT4KKzxsaT5BZGRlZCBhIHdvcmthcm91bmQgZm9yIHRoZSBzY2hlZHVsZXIncyBzeXN0ZW1kIHN1cHBvcnQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ4NjAzNDQwNSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY0MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2NDAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY0MCI+IzU2NDA8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgc3BlbGxpbmcgb2YgImZvbGQtYWNjb3JkaW9uIi48L2xpPgorPGxpPkZpeGVkIHRoZSBkZWZhdWx0IGNvbW1vbiBuYW1lIGZvciBUTFMgY2VydGlmaWNhdGVzIHVzZWQgYnkgPGNvZGU+aXBwc2VydmVyPC9jb2RlPi48L2xpPgorPGxpPlRoZSBsaWJ1c2ItYmFzZWQgVVNCIGJhY2tlbmQgbm93IHJlcG9ydHMgYW4gZXJyb3Igd2hlbiB0aGUgZGlzdHJpYnV0aW9uPGJyPgorcGVybWlzc2lvbnMgYXJlIHdyb25nIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MDA1OTQ1MTciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NTgiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjU4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NTgiPiM1NjU4PC9hPik8L2xpPgorPGxpPkRlZmF1bHQgcHJpbnRlcnMgc2V0IHdpdGggPGNvZGU+bHBvcHRpb25zPC9jb2RlPiBkaWQgbm90IHdvcmsgaW4gYWxsIGNhc2VzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MjA0MTU5NjYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjgxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODEiPiM1NjgxPC9hPiw8YnI+CitJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MjIwNjUzNzYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjgzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODMiPiM1NjgzPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTIzMjAwMTQyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njg0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY4NC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njg0Ij4jNTY4NDwvYT4pPC9saT4KKzxsaT5GaXhlZCBhbiBvZmYtYnktb25lIGVycm9yIGluIDxjb2RlPmlwcEVudW1TdHJpbmc8L2NvZGU+IChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MzI4NjIzNDEiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2OTUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2OTUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2OTUiPiM1Njk1PC9hPik8L2xpPgorPGxpPkZpeGVkIHNvbWUgbmV3IGNvbXBpbGVyIHdhcm5pbmdzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MzQ1NDU0MTkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU3MDAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU3MDAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU3MDAiPiM1NzAwPC9hPik8L2xpPgorPGxpPkZpeGVkIGEgZmV3IGlzc3VlcyB3aXRoIHRoZSBBcHBsZSBSYXN0ZXIgc3VwcG9ydCAocmRhcjovLzU1MzAxMTE0KTwvbGk+Cis8bGk+VGhlIElQUCBiYWNrZW5kIGRpZCBub3QgZGV0ZWN0IGFsbCBjYXNlcyB3aGVyZSBhIGpvYiBzaG91bGQgYmUgcmV0cmllZCB1c2luZzxicj4KK2EgcmFzdGVyIGZvcm1hdCAocmRhcjovLzU2MDIxMDkxKTwvbGk+Cis8L3VsPgorPHA+RW5qb3khPC9wPgorICA8L2Rpdj4KKworCisgIDxkZXRhaWxzCisgICAgY2xhc3M9ImRldGFpbHMtcmVzZXQgRGV0YWlscy1lbGVtZW50IGJvcmRlci10b3AgcHQtMyBtdC00IG1iLTIgbWItbWQtNCIKKyAgICAKKyAgICAKKyAgICA+CisgICAgPHN1bW1hcnk+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLWNsb3NlZCI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLXJpZ2h0IiB2aWV3Qm94PSIwIDAgNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgMTRsNi02LTYtNnYxMnoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tb3BlbiI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLWRvd24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDVsNiA2IDYtNkgweiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtYm9sZCI+QXNzZXRzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibWwtMSBDb3VudGVyIj40PC9zcGFuPgorICAgICAgPC9kaXY+CisgICAgPC9zdW1tYXJ5PgorICAgIDxkaXYgY2xhc3M9IkJveCBCb3gtLWNvbmRlbnNlZCBtdC0zIj4KKyAgICAgIDxkaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjIuMTMvY3Vwcy0yLjIuMTMtc291cmNlLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuMi4xMy1zb3VyY2UudGFyLmd6PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj45LjkzIE1CPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuMi4xMy9jdXBzLTIuMi4xMy1zb3VyY2UudGFyLmd6LnNpZyIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuMi4xMy1zb3VyY2UudGFyLmd6LnNpZzwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+NTg1IEJ5dGVzPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKworCisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjIuMTMuemlwIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHppcCkKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuMi4xMy50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAodGFyLmd6KQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGV0YWlscz4KKworCisgIDwvZGl2PjwhLS0gLy5yZWxlYXNlLWJvZHkgLS0+Cis8L2Rpdj48IS0tIC8ucmVsZWFzZSAtLT4KKworICAgICAgICA8L2Rpdj4KKworCisKKyAgICAgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1lbnRyeSI+CisgICAgICAgICAgICAKKzxkaXYgY2xhc3M9InJlbGVhc2UgcHQtMiBwdC1tZC0wIHBiLTMgcGItbWQtMCBjbGVhcmZpeCBsYWJlbC0iPgorICA8ZGl2IGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBmbGV4LXdyYXAgZmxleC1pdGVtcy1jZW50ZXIgY29sLTEyIGNvbC1tZC0zIGNvbC1sZy0yIHB4LW1kLTMgcGItMSBwYi1tZC00IHB0LW1kLTQgZmxvYXQtbGVmdCB0ZXh0LW1kLXJpZ2h0IHYtYWxpZ24tdG9wIj4KKyAgICA8ZGl2IGNsYXNzPSJmbGV4LWF1dG8gZmxleC1zZWxmLXN0YXJ0Ij4KKworCisgICAgPC9kaXY+CisKKyAgICAgIDx1bCBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgbXQtMiBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4zLjAiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjMuMCI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4zLjA8L3NwYW4+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvZWU2YmU5Y2Q3ZTg2M2FiZjM2YjliMTMxZmMzNzlkOTY3NDE0YWEyZSIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxjb2RlPmVlNmJlOWM8L2NvZGU+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorICAgICAgICAKKyAgICAgIDwvdWw+CisgICAgICAKKworICA8L2Rpdj48IS0tIC8ubWV0YSAtLT4KKworICA8ZGl2IGNsYXNzPSJjb2wtMTIgY29sLW1kLTkgY29sLWxnLTEwIHB4LW1kLTMgcHktbWQtNCByZWxlYXNlLW1haW4tc2VjdGlvbiBjb21taXQgb3BlbiBmbG9hdC1sZWZ0Ij4KKyAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWhlYWRlciI+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1zdGFydCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImYxIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LW5vcm1hbCI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvdGFnL3YyLjMuMCI+djIuMy4wPC9hPgorICAgICAgICA8L2Rpdj4KKworCisgICAgICA8L2Rpdj4KKyAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggZC1tZC1ub25lIGZsZXgtaXRlbXMtY2VudGVyIG1iLTEgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjMuMCIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuMy4wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4zLjA8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIGZsZXgtYXV0byI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvZWU2YmU5Y2Q3ZTg2M2FiZjM2YjliMTMxZmMzNzlkOTY3NDE0YWEyZSIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8Y29kZT5lZTZiZTljPC9jb2RlPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisgICAgICAgICAgCisKKyAgICAgICAgICAKKworICAgICAgICA8L3VsPgorICAgICAgCis8cCBjbGFzcz0iZjUgdGV4dC1ncmF5IG10LTIgbXQtbWQtMSBtYi0yIG1iLW1kLTQiPgorICAgIDxhIGNsYXNzPSJkLWlubGluZS1ibG9jayIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPjxpbWcgY2xhc3M9ImF2YXRhciIgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ4ODEwMz9zPTQwJmFtcDt2PTQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYWx0PSJAbWljaGFlbHJzd2VldCIgLz48L2E+CisgICAgPGEgY2xhc3M9InRleHQtYm9sZCB0ZXh0LWdyYXkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij5taWNoYWVscnN3ZWV0PC9hPgorICAgIHJlbGVhc2VkIHRoaXMKKyAgICA8cmVsYXRpdmUtdGltZSBkYXRldGltZT0iMjAxOS0wOC0yM1QxODoxNzoyMVoiIGNsYXNzPSJuby13cmFwIj5BdWcgMjMsIDIwMTk8L3JlbGF0aXZlLXRpbWU+CisgICAgJm1pZGRvdDsKKyAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21wYXJlL3YyLjMuMC4uLm1hc3RlciI+CisgICAgNjUgY29tbWl0czwvYT4KKyAgICB0byBtYXN0ZXIKKyAgICBzaW5jZSB0aGlzIHJlbGVhc2UKKzwvcD4KKyAgICA8L2Rpdj4KKworICAgIAorCisgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWJvZHkiPgorICAgIDxwPkNVUFMgMi4zLjAgaXMgbm93IGF2YWlsYWJsZSBmb3IgZG93bmxvYWQsIHdoaWNoIGFkb3B0cyB0aGUgbmV3IENVUFMgbGljZW5zZSwgYWRkcyBzdXBwb3J0IGZvciBJUFAgcHJlc2V0cyBhbmQgZmluaXNoaW5nIHRlbXBsYXRlcywgZml4ZXMgYSBudW1iZXIgb2YgYnVncyBhbmQgInBvbGlzaCIgaXNzdWVzLCBhbmQgaW5jbHVkZXMgdGhlIG5ldyBpcHBldmVwcmludGVyIHV0aWxpdHkuIENoYW5nZXMgaW5jbHVkZTo8L3A+Cis8dWw+Cis8bGk+Q1ZFLTIwMTktODY5NiBhbmQgQ1ZFLTIwMTktODY3NTogRml4ZWQgU05NUCBidWZmZXIgb3ZlcmZsb3dzIChyZGFyOi8vNTE2ODUyNTEpPC9saT4KKzxsaT5BZGRlZCBhIEdQTDIvTEdQTDIgZXhjZXB0aW9uIHRvIHRoZSBuZXcgQ1VQUyBsaWNlbnNlIHRlcm1zLjwvbGk+Cis8bGk+RG9jdW1lbnRhdGlvbiB1cGRhdGVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NTk1OTQ2NDQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjA0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDQiPiM1NjA0PC9hPik8L2xpPgorPGxpPkxvY2FsaXphdGlvbiB1cGRhdGVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0ODM2NDE4OTgiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MzciIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2MzcvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2MzciPiM1NjM3PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgYnVnIGluIHRoZSBzY2hlZHVsZXIgam9iIGNsZWFudXAgY29kZSAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDUwMjc5MjE2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTg4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTg4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTg4Ij4jNTU4ODwvYT4pPC9saT4KKzxsaT5GaXhlZCBidWlsZHMgd2hlbiB0aGVyZSBpcyBubyBUTFMgbGlicmFyeSAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDUxNTc4MTg2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTkwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTkwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTkwIj4jNTU5MDwvYT4pPC9saT4KKzxsaT5FbGltaW5hdGVkIHNvbWUgbmV3IEdDQyBjb21waWxlciB3YXJuaW5ncyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDUzMzI4NzQ3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTkxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTkxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTkxIj4jNTU5MTwvYT4pPC9saT4KKzxsaT5SZW1vdmVkIGRlYWQgY29kZSBmcm9tIHRoZSBzY2hlZHVsZXIgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ1MzMyOTg3MSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5MyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTU5My9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTU5MyI+IzU1OTM8L2E+KTwvbGk+Cis8bGk+Im1ha2UiIGZhaWxlZCB3aXRoIEdaSVAgb3B0aW9ucyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDU1MDE3OTM0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTk1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTk1Ij4jNTU5NTwvYT4pPC9saT4KKzxsaT5GaXhlZCBwb3RlbnRpYWwgZXhjZXNzIGxvZ2dpbmcgZnJvbSB0aGUgc2NoZWR1bGVyIHdoZW4gcmVtb3Zpbmcgam9iIGZpbGVzPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ1NjI4NDQwNiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5NyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1OTcvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5NyI+IzU1OTc8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYnVnIGluIDxjb2RlPmh0dHBHZXRTdWJGaWVsZDI8L2NvZGU+IChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NTY1MzQxMzciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1OTgiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTk4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1OTgiPiM1NTk4PC9hPik8L2xpPgorPGxpPkFkZGVkIEZJUFMtMTQwIHdvcmthcm91bmRzIGZvciBHTlUgVExTIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NTgwMTU5MjkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjAxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDEiPiM1NjAxPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDc0MTE3MjMxIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjIyIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NjIyL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NjIyIj4jNTYyMjwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIG5vIGxvbmdlciBwcm92aWRlcyBhIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBkZXNjcmlwdGlvbjxicj4KKyhJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NTkwNzQ3MzMiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjAzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDMiPiM1NjAzPC9hPik8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgbm93IGxvZ3Mgam9icyBoZWxkIGZvciBhdXRoZW50aWNhdGlvbiB1c2luZyB0aGUgZXJyb3IgbGV2ZWwgc288YnI+CitpdCBpcyBjbGVhciB3aGF0IGhhcHBlbmVkIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NTk1OTQ2NDQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjA0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDQiPiM1NjA0PC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT5scGFkbWluPC9jb2RlPiBjb21tYW5kIGRpZCBub3QgYWx3YXlzIHVwZGF0ZSB0aGUgUFBEIGZpbGUgZm9yIGNoYW5nZXMgdG8gdGhlPGJyPgorPGNvZGU+Y3Vwc0lQUFN1cHBsaWVzPC9jb2RlPiBhbmQgPGNvZGU+Y3Vwc1NOTVBTdXBwbGllczwvY29kZT4ga2V5d29yZHMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ2NTcyNzE5NSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYxMCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTYxMC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTYxMCI+IzU2MTA8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBub3cgdXNlcyBib3RoIHRoZSBncm91cCdzIG1lbWJlcnNoaXAgbGlzdCBhcyB3ZWxsIGFzIHRoZTxicj4KK3ZhcmlvdXMgT1Mtc3BlY2lmaWMgbWVtYmVyc2hpcCBmdW5jdGlvbnMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSB1c2VyIGJlbG9uZ3M8YnI+Cit0byBhIG5hbWVkIGdyb3VwIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0Njg0NjM2NzgiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MTMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2MTMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2MTMiPiM1NjEzPC9hPik8L2xpPgorPGxpPkFkZGVkIFVTQiBxdWlya3MgcnVsZSBmb3IgSFAgTGFzZXJKZXQgMTAxNSAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDcwNjU5MzEzIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjE3IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTYxNy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjE3Ij4jNTYxNzwvYT4pPC9saT4KKzxsaT5GaXhlZCBzb21lIFBQRCBwYXJzZXIgaXNzdWVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NzQzMTQwNzQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MjMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2MjMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2MjMiPiM1NjIzPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDc0MzE3MDkyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjI0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NjI0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NjI0Ij4jNTYyNDwvYT4pPC9saT4KKzxsaT5UaGUgSVBQIHBhcnNlciBubyBsb25nZXIgYWxsb3dzIGludmFsaWQgbWVtYmVyIGF0dHJpYnV0ZXMgaW4gY29sbGVjdGlvbnM8YnI+CisoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDc3OTc5ODg2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjMwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzMC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjMwIj4jNTYzMDwvYT4pPC9saT4KKzxsaT5UaGUgY29uZmlndXJlIHNjcmlwdCBub3cgdHJlYXRzIHRoZSAid2hlZWwiIGdyb3VwIGFzIGEgcG90ZW50aWFsIHN5c3RlbTxicj4KK2dyb3VwIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0ODQ1MzUxMzAiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MzgiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2MzgvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2MzgiPiM1NjM4PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgVVNCIHByaW50aW5nIGlzc3VlIG9uIG1hY09TIChyZGFyOi8vMzE0MzM5MzEpPC9saT4KKzxsaT5GaXhlZCBJUFAgYnVmZmVyIG92ZXJmbG93IChyZGFyOi8vNTAwMzU0MTEpPC9saT4KKzxsaT5GaXhlZCBtZW1vcnkgZGlzY2xvc3VyZSBpc3N1ZSBpbiB0aGUgc2NoZWR1bGVyIChyZGFyOi8vNTEzNzM4NTMpPC9saT4KKzxsaT5GaXhlZCBEb1MgaXNzdWVzIGluIHRoZSBzY2hlZHVsZXIgKHJkYXI6Ly81MTM3MzkyOSk8L2xpPgorPGxpPkZpeGVkIGFuIGlzc3VlIHdpdGggdW5zdXBwb3J0ZWQgInNpZGVzIiB2YWx1ZXMgaW4gdGhlIElQUCBiYWNrZW5kPGJyPgorKHJkYXI6Ly81MTc3NTMyMik8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgd291bGQgcmVzdGFydCBjb250aW51b3VzbHkgd2hlbiBpZGxlIGFuZCBwcmludGVycyB3ZXJlIG5vdDxicj4KK3NoYXJlZCAocmRhcjovLzUyNTYxMTk5KTwvbGk+Cis8bGk+Rml4ZWQgYW4gaXNzdWUgd2l0aCA8Y29kZT5FWFBFQ1QgIW5hbWUgV0lUSC1WQUxVRSAuLi48L2NvZGU+IHRlc3RzLjwvbGk+Cis8bGk+Rml4ZWQgYSBjb21tYW5kIG9yZGVyaW5nIGlzc3VlIGluIHRoZSBaZWJyYSBaUEwgZHJpdmVyLjwvbGk+Cis8bGk+Rml4ZWQgYSBtZW1vcnkgbGVhayBpbiA8Y29kZT5wcGRPcGVuPC9jb2RlPi48L2xpPgorPC91bD4KKzxwPkVuam95ITwvcD4KKyAgPC9kaXY+CisKKworICA8ZGV0YWlscworICAgIGNsYXNzPSJkZXRhaWxzLXJlc2V0IERldGFpbHMtZWxlbWVudCBib3JkZXItdG9wIHB0LTMgbXQtNCBtYi0yIG1iLW1kLTQiCisgICAgCisgICAgCisgICAgPgorICAgIDxzdW1tYXJ5PgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1jbG9zZWQiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1yaWdodCIgdmlld0JveD0iMCAwIDYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDE0bDYtNi02LTZ2MTJ6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLW9wZW4iPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1kb3duIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA1bDYgNiA2LTZIMHoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LWJvbGQiPkFzc2V0czwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1sLTEgQ291bnRlciI+NDwvc3Bhbj4KKyAgICAgIDwvZGl2PgorICAgIDwvc3VtbWFyeT4KKyAgICA8ZGl2IGNsYXNzPSJCb3ggQm94LS1jb25kZW5zZWQgbXQtMyI+CisgICAgICA8ZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4zLjAvY3Vwcy0yLjMuMC1zb3VyY2UudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4zLjAtc291cmNlLnRhci5nejwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+Ny43NSBNQjwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjMuMC9jdXBzLTIuMy4wLXNvdXJjZS50YXIuZ3ouc2lnIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4zLjAtc291cmNlLnRhci5nei5zaWc8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjU4NSBCeXRlczwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisKKworICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4zLjAuemlwIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHppcCkKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuMy4wLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh0YXIuZ3opCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kZXRhaWxzPgorCisKKyAgPC9kaXY+PCEtLSAvLnJlbGVhc2UtYm9keSAtLT4KKzwvZGl2PjwhLS0gLy5yZWxlYXNlIC0tPgorCisgICAgICAgIDwvZGl2PgorCisKKworICAgICAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWVudHJ5Ij4KKyAgICAgICAgICAgIAorPGRpdiBjbGFzcz0icmVsZWFzZSBwdC0yIHB0LW1kLTAgcGItMyBwYi1tZC0wIGNsZWFyZml4IGxhYmVsLSI+CisgIDxkaXYgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIGZsZXgtd3JhcCBmbGV4LWl0ZW1zLWNlbnRlciBjb2wtMTIgY29sLW1kLTMgY29sLWxnLTIgcHgtbWQtMyBwYi0xIHBiLW1kLTQgcHQtbWQtNCBmbG9hdC1sZWZ0IHRleHQtbWQtcmlnaHQgdi1hbGlnbi10b3AiPgorICAgIDxkaXYgY2xhc3M9ImZsZXgtYXV0byBmbGV4LXNlbGYtc3RhcnQiPgorCisKKyAgICA8L2Rpdj4KKworICAgICAgPHVsIGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBtdC0yIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjIuMTIiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjIuMTIiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuMi4xMjwvc3Bhbj4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC9jOGNiNjQwMGUzMTc2MzNmNjZjZGM4Nzg4NDkxNWQ1NDcxMGI1M2EwIiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgPGNvZGU+YzhjYjY0MDwvY29kZT4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisgICAgICAgIAorICAgICAgPC91bD4KKyAgICAgIAorCisgIDwvZGl2PjwhLS0gLy5tZXRhIC0tPgorCisgIDxkaXYgY2xhc3M9ImNvbC0xMiBjb2wtbWQtOSBjb2wtbGctMTAgcHgtbWQtMyBweS1tZC00IHJlbGVhc2UtbWFpbi1zZWN0aW9uIGNvbW1pdCBvcGVuIGZsb2F0LWxlZnQiPgorICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtaGVhZGVyIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLXN0YXJ0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iZjEgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtbm9ybWFsIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy90YWcvdjIuMi4xMiI+djIuMi4xMjwvYT4KKyAgICAgICAgPC9kaXY+CisKKworICAgICAgPC9kaXY+CisgICAgICAgIDx1bCBjbGFzcz0iZC1mbGV4IGQtbWQtbm9uZSBmbGV4LWl0ZW1zLWNlbnRlciBtYi0xIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4yLjEyIiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4yLjEyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4yLjEyPC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisKKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiBmbGV4LWF1dG8iPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0L2M4Y2I2NDAwZTMxNzYzM2Y2NmNkYzg3ODg0OTE1ZDU0NzEwYjUzYTAiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPGNvZGU+YzhjYjY0MDwvY29kZT4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorICAgICAgICAgIAorCisgICAgICAgICAgCisKKyAgICAgICAgPC91bD4KKyAgICAgIAorPHAgY2xhc3M9ImY1IHRleHQtZ3JheSBtdC0yIG10LW1kLTEgbWItMiBtYi1tZC00Ij4KKyAgICA8YSBjbGFzcz0iZC1pbmxpbmUtYmxvY2siIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij48aW1nIGNsYXNzPSJhdmF0YXIiIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20vdS80ODgxMDM/cz00MCZhbXA7dj00IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGFsdD0iQG1pY2hhZWxyc3dlZXQiIC8+PC9hPgorICAgIDxhIGNsYXNzPSJ0ZXh0LWJvbGQgdGV4dC1ncmF5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+bWljaGFlbHJzd2VldDwvYT4KKyAgICByZWxlYXNlZCB0aGlzCisgICAgPHJlbGF0aXZlLXRpbWUgZGF0ZXRpbWU9IjIwMTktMDgtMTVUMjI6NTI6NDRaIiBjbGFzcz0ibm8td3JhcCI+QXVnIDE1LCAyMDE5PC9yZWxhdGl2ZS10aW1lPgorICAgICZtaWRkb3Q7CisgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tcGFyZS92Mi4yLjEyLi4ubWFzdGVyIj4KKyAgICA3OTMgY29tbWl0czwvYT4KKyAgICB0byBtYXN0ZXIKKyAgICBzaW5jZSB0aGlzIHJlbGVhc2UKKzwvcD4KKyAgICA8L2Rpdj4KKworICAgIAorCisgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWJvZHkiPgorICAgIDxwPkNVUFMgMi4yLjEyIGlzIG5vdyBhdmFpbGFibGUgYW5kIGluY2x1ZGVzIHNlY3VyaXR5LCBjb21wYXRpYmlsaXR5LCBhbmQgZ2VuZXJhbCBidWcgZml4ZXMuIENoYW5nZXMgaW5jbHVkZTo8L3A+Cis8dWw+Cis8bGk+Q1ZFLTIwMTktODY5NiBhbmQgQ1ZFLTIwMTktODY3NTogRml4ZWQgU05NUCBidWZmZXIgb3ZlcmZsb3dzIChyZGFyOi8vNTE2ODUyNTEpPC9saT4KKzxsaT5UaGUgPGNvZGU+Y3Vwc2N0bDwvY29kZT4gY29tbWFuZCBub3cgcHJldmVudHMgc2V0dGluZyAiY3Vwcy1maWxlcy5jb25mIiBkaXJlY3RpdmVzPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxMzgyOTI1NCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMCI+IzU1MzA8L2E+KTwvbGk+Cis8bGk+VXBkYXRlZCB0aGUgc3lzdGVtZCBzZXJ2aWNlIGZpbGUgZm9yIGN1cHNkIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MjY0NzkwNDEiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NTEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU1NTEvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU1NTEiPiM1NTUxPC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT5jdXBzQ2hlY2tEZXN0U3VwcG9ydGVkPC9jb2RlPiBmdW5jdGlvbiBkaWQgbm90IGNoZWNrIG9jdGV0U3RyaW5nIHZhbHVlczxicj4KK2NvcnJlY3RseSAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDI5ODIwODYyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTU3IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTU3L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTU3Ij4jNTU1NzwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIGRpZCBub3QgZW5jb2RlIG9jdGV0U3RyaW5nIHZhbHVlcyBsaWtlICJqb2ItcGFzc3dvcmQiIGNvcnJlY3RseTxicj4KK2ZvciB0aGUgcHJpbnQgZmlsdGVycyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDI5ODI3MTI3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTU4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTU4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTU4Ij4jNTU1ODwvYT4pPC9saT4KKzxsaT5SZXN0b3JlZCBtaW5pbWFsIHN1cHBvcnQgZm9yIHRoZSA8Y29kZT5FbXVsYXRvcnM8L2NvZGU+IGtleXdvcmQgaW4gUFBEIGZpbGVzIHRvIGFsbG93PGJyPgorb2xkIFNhbXN1bmcgcHJpbnRlciBkcml2ZXJzIHRvIGNvbnRpbnVlIHRvIHdvcmsgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQzMjIxNDU2OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU2MiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1NjIvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU2MiI+IzU1NjI8L2E+KTwvbGk+Cis8bGk+VGltZWQgb3V0IGpvYiBzdWJtaXNzaW9uIG5vdyB5aWVsZHMgYW4gZXJyb3IgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQzNzM5MDU2NCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU3MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1NzAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU3MCI+IzU1NzA8L2E+KTwvbGk+Cis8bGk+VGhlIGZvb3RlciBpbiB0aGUgd2ViIGludGVyZmFjZSBjb3ZlcmVkIHNvbWUgY29udGVudCBvbiBzbWFsbCBkaXNwbGF5czxicj4KKyhJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NDAzNjU4MDEiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NzQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTc0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NzQiPiM1NTc0PC9hPik8L2xpPgorPGxpPlRoZSBsaWJ1c2ItYmFzZWQgVVNCIGJhY2tlbmQgbm93IGVuZm9yY2VzIHJlYWQgbGltaXRzLCBpbXByb3ZpbmcgcHJpbnQgc3BlZWQ8YnI+CitpbiBtYW55IGNhc2VzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NDUzMTUwNTUiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1ODMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTgzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1ODMiPiM1NTgzPC9hPik8L2xpPgorPGxpPkZpeGVkIHNvbWUgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBvbGQgcmVsZWFzZXMgb2YgQ1VQUyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDQ5MzYxMDY5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTg3IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU4Ny9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTg3Ij4jNTU4NzwvYT4pPC9saT4KKzxsaT5GaXhlZCBhIGJ1ZyBpbiB0aGUgc2NoZWR1bGVyIGpvYiBjbGVhbnVwIGNvZGUgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ1MDI3OTIxNiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU4OCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTU4OC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTU4OCI+IzU1ODg8L2E+KTwvbGk+Cis8bGk+Im1ha2UiIGZhaWxlZCB3aXRoIEdaSVAgb3B0aW9ucyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDU1MDE3OTM0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTk1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTk1Ij4jNTU5NTwvYT4pPC9saT4KKzxsaT5BZGRlZCBGSVBTLTE0MCB3b3JrYXJvdW5kcyBmb3IgR05VIFRMUyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDU4MDE1OTI5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjAxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTYwMS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjAxIj4jNTYwMTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ3NDExNzIzMSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYyMiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTYyMi9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTYyMiI+IzU2MjI8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBubyBsb25nZXIgcHJvdmlkZXMgYSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgZGVzY3JpcHRpb248YnI+CisoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDU5MDc0NzMzIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjAzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTYwMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjAzIj4jNTYwMzwvYT4pPC9saT4KKzxsaT5UaGUgPGNvZGU+bHBhZG1pbjwvY29kZT4gY29tbWFuZCBkaWQgbm90IGFsd2F5cyB1cGRhdGUgdGhlIFBQRCBmaWxlIGZvciBjaGFuZ2VzIHRvIHRoZTxicj4KKzxjb2RlPmN1cHNJUFBTdXBwbGllczwvY29kZT4gYW5kIDxjb2RlPmN1cHNTTk1QU3VwcGxpZXM8L2NvZGU+IGtleXdvcmRzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NjU3MjcxOTUiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MTAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2MTAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2MTAiPiM1NjEwPC9hPik8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgbm93IHVzZXMgYm90aCB0aGUgZ3JvdXAncyBtZW1iZXJzaGlwIGxpc3QgYXMgd2VsbCBhcyB0aGU8YnI+Cit2YXJpb3VzIE9TLXNwZWNpZmljIG1lbWJlcnNoaXAgZnVuY3Rpb25zIHRvIGRldGVybWluZSB3aGV0aGVyIGEgdXNlciBiZWxvbmdzPGJyPgordG8gYSBuYW1lZCBncm91cCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDY4NDYzNjc4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjEzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NjEzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NjEzIj4jNTYxMzwvYT4pPC9saT4KKzxsaT5BZGRlZCBVU0IgcXVpcmtzIHJ1bGUgZm9yIEhQIExhc2VySmV0IDEwMTUgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ3MDY1OTMxMyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYxNyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2MTcvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYxNyI+IzU2MTc8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgc29tZSBQUEQgcGFyc2VyIGlzc3VlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDc0MzE0MDc0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjIzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NjIzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NjIzIj4jNTYyMzwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ3NDMxNzA5MiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYyNCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTYyNC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTYyNCI+IzU2MjQ8L2E+KTwvbGk+Cis8bGk+VGhlIElQUCBwYXJzZXIgbm8gbG9uZ2VyIGFsbG93cyBpbnZhbGlkIG1lbWJlciBhdHRyaWJ1dGVzIGluIGNvbGxlY3Rpb25zPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ3Nzk3OTg4NiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzMCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2MzAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzMCI+IzU2MzA8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgSVBQIGJ1ZmZlciBvdmVyZmxvdyAocmRhcjovLzUwMDM1NDExKTwvbGk+Cis8bGk+Rml4ZWQgbWVtb3J5IGRpc2Nsb3N1cmUgaXNzdWUgaW4gdGhlIHNjaGVkdWxlciAocmRhcjovLzUxMzczODUzKTwvbGk+Cis8bGk+Rml4ZWQgRG9TIGlzc3VlcyBpbiB0aGUgc2NoZWR1bGVyIChyZGFyOi8vNTEzNzM5MjkpPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIHdvdWxkIHJlc3RhcnQgY29udGludW91c2x5IHdoZW4gaWRsZSBhbmQgcHJpbnRlcnMgd2VyZSBub3Q8YnI+CitzaGFyZWQgKHJkYXI6Ly81MjU2MTE5OSk8L2xpPgorPGxpPkZpeGVkIGEgY29tbWFuZCBvcmRlcmluZyBpc3N1ZSBpbiB0aGUgWmVicmEgWlBMIGRyaXZlci48L2xpPgorPGxpPkZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gPGNvZGU+cHBkT3BlbjwvY29kZT4uPC9saT4KKzwvdWw+Cis8cD5FbmpveSE8L3A+CisgIDwvZGl2PgorCisKKyAgPGRldGFpbHMKKyAgICBjbGFzcz0iZGV0YWlscy1yZXNldCBEZXRhaWxzLWVsZW1lbnQgYm9yZGVyLXRvcCBwdC0zIG10LTQgbWItMiBtYi1tZC00IgorICAgIAorICAgIAorICAgID4KKyAgICA8c3VtbWFyeT4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tY2xvc2VkIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtcmlnaHQiIHZpZXdCb3g9IjAgMCA2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCAxNGw2LTYtNi02djEyeiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1vcGVuIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtZG93biIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNWw2IDYgNi02SDB6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1ib2xkIj5Bc3NldHM8L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtbC0xIENvdW50ZXIiPjQ8L3NwYW4+CisgICAgICA8L2Rpdj4KKyAgICA8L3N1bW1hcnk+CisgICAgPGRpdiBjbGFzcz0iQm94IEJveC0tY29uZGVuc2VkIG10LTMiPgorICAgICAgPGRpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuMi4xMi9jdXBzLTIuMi4xMi1zb3VyY2UudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4yLjEyLXNvdXJjZS50YXIuZ3o8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjkuOTMgTUI8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4yLjEyL2N1cHMtMi4yLjEyLXNvdXJjZS50YXIuZ3ouc2lnIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4yLjEyLXNvdXJjZS50YXIuZ3ouc2lnPC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj41ODUgQnl0ZXM8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorCisKKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuMi4xMi56aXAiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAoemlwKQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4yLjEyLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh0YXIuZ3opCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kZXRhaWxzPgorCisKKyAgPC9kaXY+PCEtLSAvLnJlbGVhc2UtYm9keSAtLT4KKzwvZGl2PjwhLS0gLy5yZWxlYXNlIC0tPgorCisgICAgICAgIDwvZGl2PgorCisKKworICAgICAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWVudHJ5Ij4KKyAgICAgICAgICAgIAorPGRpdiBjbGFzcz0icmVsZWFzZSBwdC0yIHB0LW1kLTAgcGItMyBwYi1tZC0wIGNsZWFyZml4IGxhYmVsLXByZXJlbGVhc2UiPgorICA8ZGl2IGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBmbGV4LXdyYXAgZmxleC1pdGVtcy1jZW50ZXIgY29sLTEyIGNvbC1tZC0zIGNvbC1sZy0yIHB4LW1kLTMgcGItMSBwYi1tZC00IHB0LW1kLTQgZmxvYXQtbGVmdCB0ZXh0LW1kLXJpZ2h0IHYtYWxpZ24tdG9wIj4KKyAgICA8ZGl2IGNsYXNzPSJmbGV4LWF1dG8gZmxleC1zZWxmLXN0YXJ0Ij4KKyAgICAgICAgPHNwYW4gY2xhc3M9ImZsZXgtc2hyaW5rLTAgTGFiZWwgTGFiZWwtLW91dGxpbmUgbWItbWQtMiBtci0yIG1yLW1kLTAgTGFiZWwtLXByZXJlbGVhc2UiPgorICAgICAgICAgICAgUHJlLXJlbGVhc2UKKyAgICAgICAgPC9zcGFuPgorCisKKyAgICA8L2Rpdj4KKworICAgICAgPHVsIGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBtdC0yIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjNyYzEiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjNyYzEiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuM3JjMTwvc3Bhbj4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC80ZDAzYzRjYTkwZDhjMWMwZDUzMDM0Mjc4NThlNTM3ZmQzYzQxNWU0IiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgPGNvZGU+NGQwM2M0YzwvY29kZT4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisgICAgICAgIAorICAgICAgPC91bD4KKyAgICAgIAorCisgIDwvZGl2PjwhLS0gLy5tZXRhIC0tPgorCisgIDxkaXYgY2xhc3M9ImNvbC0xMiBjb2wtbWQtOSBjb2wtbGctMTAgcHgtbWQtMyBweS1tZC00IHJlbGVhc2UtbWFpbi1zZWN0aW9uIGNvbW1pdCBvcGVuIGZsb2F0LWxlZnQiPgorICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtaGVhZGVyIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLXN0YXJ0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iZjEgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtbm9ybWFsIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy90YWcvdjIuM3JjMSI+djIuM3JjMTwvYT4KKyAgICAgICAgPC9kaXY+CisKKyAgICAgICAgICA8c3BhbiBjbGFzcz0iZC1tZC1ub25lIGZsZXgtc2hyaW5rLTAgbWwtMiBtdC0yIG10LW1kLTAgTGFiZWwgTGFiZWwtLW91dGxpbmUgTGFiZWwtLXByZXJlbGVhc2UiPgorICAgICAgICAgICAgICBQcmUtcmVsZWFzZQorICAgICAgICAgIDwvc3Bhbj4KKworICAgICAgPC9kaXY+CisgICAgICAgIDx1bCBjbGFzcz0iZC1mbGV4IGQtbWQtbm9uZSBmbGV4LWl0ZW1zLWNlbnRlciBtYi0xIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4zcmMxIiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4zcmMxIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4zcmMxPC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisKKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiBmbGV4LWF1dG8iPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0LzRkMDNjNGNhOTBkOGMxYzBkNTMwMzQyNzg1OGU1MzdmZDNjNDE1ZTQiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPGNvZGU+NGQwM2M0YzwvY29kZT4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorICAgICAgICAgIAorCisgICAgICAgICAgCisKKyAgICAgICAgPC91bD4KKyAgICAgIAorPHAgY2xhc3M9ImY1IHRleHQtZ3JheSBtdC0yIG10LW1kLTEgbWItMiBtYi1tZC00Ij4KKyAgICA8YSBjbGFzcz0iZC1pbmxpbmUtYmxvY2siIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij48aW1nIGNsYXNzPSJhdmF0YXIiIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20vdS80ODgxMDM/cz00MCZhbXA7dj00IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGFsdD0iQG1pY2hhZWxyc3dlZXQiIC8+PC9hPgorICAgIDxhIGNsYXNzPSJ0ZXh0LWJvbGQgdGV4dC1ncmF5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+bWljaGFlbHJzd2VldDwvYT4KKyAgICByZWxlYXNlZCB0aGlzCisgICAgPHJlbGF0aXZlLXRpbWUgZGF0ZXRpbWU9IjIwMTktMDUtMjFUMTc6MDc6NTBaIiBjbGFzcz0ibm8td3JhcCI+TWF5IDIxLCAyMDE5PC9yZWxhdGl2ZS10aW1lPgorICAgICZtaWRkb3Q7CisgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tcGFyZS92Mi4zcmMxLi4ubWFzdGVyIj4KKyAgICAxMjIgY29tbWl0czwvYT4KKyAgICB0byBtYXN0ZXIKKyAgICBzaW5jZSB0aGlzIHJlbGVhc2UKKzwvcD4KKyAgICA8L2Rpdj4KKworICAgIAorCisgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWJvZHkiPgorICAgIDxwPkNVUFMgMi4zcmMxIGlzIG5vdyBhdmFpbGFibGUgZm9yIGRvd25sb2FkLiAgVGhpcyBpcyB0aGUgZmlyc3QgcmVsZWFzZSBjYW5kaWRhdGUgZm9yIENVUFMgMi4zLjAgd2hpY2ggYWRvcHRzIHRoZSBuZXcgQ1VQUyBsaWNlbnNlLCBhZGRzIHN1cHBvcnQgZm9yIElQUCBwcmVzZXRzIGFuZCBmaW5pc2hpbmcgdGVtcGxhdGVzLCBhbmQgZml4ZXMgYSBudW1iZXIgb2YgYnVncyBhbmQgInBvbGlzaCIgaXNzdWVzLiAgVGhpcyBiZXRhIGFsc28gaW5jbHVkZXMgdGhlIG5ldyBpcHBldmVwcmludGVyIHV0aWxpdHkuIENoYW5nZXMgaW5jbHVkZTo8L3A+Cis8dWw+Cis8bGk+VGhlIDxjb2RlPmN1cHMtY29uZmlnPC9jb2RlPiBzY3JpcHQgbm8gbG9uZ2VyIGFkZHMgZXh0cmEgbGlicmFyaWVzIHdoZW4gbGlua2luZyBhZ2FpbnN0PGJyPgorc2hhcmVkIGxpYnJhcmllcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzAzNjU2MTU4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MjYxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81MjYxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81MjYxIj4jNTI2MTwvYT4pPC9saT4KKzxsaT5UaGUgc3VwcGxpZWQgZXhhbXBsZSBwcmludCBkb2N1bWVudHMgaGF2ZSBiZWVuIG9wdGltaXplZCBmb3Igc2l6ZTxicj4KKyhJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTM4MTA0MDQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU1MjkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU1MjkiPiM1NTI5PC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT5jdXBzY3RsPC9jb2RlPiBjb21tYW5kIG5vdyBwcmV2ZW50cyBzZXR0aW5nICJjdXBzLWZpbGVzLmNvbmYiIGRpcmVjdGl2ZXM8YnI+CisoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDEzODI5MjU0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMwIj4jNTUzMDwvYT4pPC9saT4KKzxsaT5UaGUgImZvcmJpZGRlbiIgbWVzc2FnZSBpbiB0aGUgd2ViIGludGVyZmFjZSBpcyBub3cgZXhwbGFpbmVkIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MjQ1MzQzNDgiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NDciIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTQ3L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NDciPiM1NTQ3PC9hPik8L2xpPgorPGxpPlRoZSBmb290ZXIgaW4gdGhlIHdlYiBpbnRlcmZhY2UgY292ZXJlZCBzb21lIGNvbnRlbnQgb24gc21hbGwgZGlzcGxheXM8YnI+CisoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDQwMzY1ODAxIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTc0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU3NC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTc0Ij4jNTU3NDwvYT4pPC9saT4KKzxsaT5UaGUgbGlidXNiLWJhc2VkIFVTQiBiYWNrZW5kIG5vdyBlbmZvcmNlcyByZWFkIGxpbWl0cywgaW1wcm92aW5nIHByaW50IHNwZWVkPGJyPgoraW4gbWFueSBjYXNlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDQ1MzE1MDU1IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTgzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU4My9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTgzIj4jNTU4MzwvYT4pPC9saT4KKzxsaT5UaGUgPGNvZGU+aXBwZXZlcHJpbnRlcjwvY29kZT4gY29tbWFuZCBub3cgbG9va3MgZm9yIHByaW50IGNvbW1hbmRzIGluIHRoZSAiY29tbWFuZCI8YnI+CitzdWJkaXJlY3RvcnkuPC9saT4KKzxsaT5UaGUgPGNvZGU+aXBwdG9vbDwvY29kZT4gY29tbWFuZCBub3cgc3VwcG9ydHMgPGNvZGU+JGRhdGUtY3VycmVudDwvY29kZT4gYW5kIDxjb2RlPiRkYXRlLXN0YXJ0PC9jb2RlPiB2YXJpYWJsZXM8YnI+Cit0byBpbnNlcnQgdGhlIGN1cnJlbnQgYW5kIHN0YXJ0aW5nIGRhdGUgYW5kIHRpbWUgdmFsdWVzLCBhcyB3ZWxsIGFzIElTTy04NjAxPGJyPgorcmVsYXRpdmUgdGltZSB2YWx1ZXMgc3VjaCBhcyAiUFQzMFMiIGZvciAzMCBzZWNvbmRzIGluIHRoZSBmdXR1cmUuPC9saT4KKzwvdWw+Cis8cD5FbmpveSE8L3A+CisgIDwvZGl2PgorCisKKyAgPGRldGFpbHMKKyAgICBjbGFzcz0iZGV0YWlscy1yZXNldCBEZXRhaWxzLWVsZW1lbnQgYm9yZGVyLXRvcCBwdC0zIG10LTQgbWItMiBtYi1tZC00IgorICAgIAorICAgIAorICAgID4KKyAgICA8c3VtbWFyeT4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tY2xvc2VkIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtcmlnaHQiIHZpZXdCb3g9IjAgMCA2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCAxNGw2LTYtNi02djEyeiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1vcGVuIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtZG93biIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNWw2IDYgNi02SDB6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1ib2xkIj5Bc3NldHM8L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtbC0xIENvdW50ZXIiPjQ8L3NwYW4+CisgICAgICA8L2Rpdj4KKyAgICA8L3N1bW1hcnk+CisgICAgPGRpdiBjbGFzcz0iQm94IEJveC0tY29uZGVuc2VkIG10LTMiPgorICAgICAgPGRpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuM3JjMS9jdXBzLTIuM3JjMS1zb3VyY2UudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4zcmMxLXNvdXJjZS50YXIuZ3o8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjcuNTYgTUI8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4zcmMxL2N1cHMtMi4zcmMxLXNvdXJjZS50YXIuZ3ouc2lnIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4zcmMxLXNvdXJjZS50YXIuZ3ouc2lnPC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj41ODUgQnl0ZXM8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorCisKKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuM3JjMS56aXAiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAoemlwKQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4zcmMxLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh0YXIuZ3opCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kZXRhaWxzPgorCisKKyAgPC9kaXY+PCEtLSAvLnJlbGVhc2UtYm9keSAtLT4KKzwvZGl2PjwhLS0gLy5yZWxlYXNlIC0tPgorCisgICAgICAgIDwvZGl2PgorCisKKworICAgICAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWVudHJ5Ij4KKyAgICAgICAgICAgIAorPGRpdiBjbGFzcz0icmVsZWFzZSBwdC0yIHB0LW1kLTAgcGItMyBwYi1tZC0wIGNsZWFyZml4IGxhYmVsLXByZXJlbGVhc2UiPgorICA8ZGl2IGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBmbGV4LXdyYXAgZmxleC1pdGVtcy1jZW50ZXIgY29sLTEyIGNvbC1tZC0zIGNvbC1sZy0yIHB4LW1kLTMgcGItMSBwYi1tZC00IHB0LW1kLTQgZmxvYXQtbGVmdCB0ZXh0LW1kLXJpZ2h0IHYtYWxpZ24tdG9wIj4KKyAgICA8ZGl2IGNsYXNzPSJmbGV4LWF1dG8gZmxleC1zZWxmLXN0YXJ0Ij4KKyAgICAgICAgPHNwYW4gY2xhc3M9ImZsZXgtc2hyaW5rLTAgTGFiZWwgTGFiZWwtLW91dGxpbmUgbWItbWQtMiBtci0yIG1yLW1kLTAgTGFiZWwtLXByZXJlbGVhc2UiPgorICAgICAgICAgICAgUHJlLXJlbGVhc2UKKyAgICAgICAgPC9zcGFuPgorCisKKyAgICA8L2Rpdj4KKworICAgICAgPHVsIGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBtdC0yIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjNiOCIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuM2I4Ij4KKyAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10YWciIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjczIDEuNzNDNy4yNiAxLjI2IDYuNjIgMSA1Ljk2IDFIMy41QzIuMTMgMSAxIDIuMTMgMSAzLjV2Mi40N2MwIC42Ni4yNyAxLjMuNzMgMS43N2w2LjA2IDYuMDZjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDQuNTktNC41OWEuOTk2Ljk5NiAwIDAwMC0xLjQxTDcuNzMgMS43M3pNMi4zOCA3LjA5Yy0uMzEtLjMtLjQ3LS43LS40Ny0xLjEzVjMuNWMwLS44OC43Mi0xLjU5IDEuNTktMS41OWgyLjQ3Yy40MiAwIC44My4xNiAxLjEzLjQ3bDYuMTQgNi4xMy00LjczIDQuNzMtNi4xMy02LjE1ek0zLjAxIDNoMnYySDNWM2guMDF6Ii8+PC9zdmc+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjNiODwvc3Bhbj4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC8wNDUwZGRkNGYwMDNkZThhYThkOGU3YTU0ZDE4MWE5OTI2MDdkMDMxIiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgPGNvZGU+MDQ1MGRkZDwvY29kZT4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisgICAgICAgIAorICAgICAgPC91bD4KKyAgICAgIAorCisgIDwvZGl2PjwhLS0gLy5tZXRhIC0tPgorCisgIDxkaXYgY2xhc3M9ImNvbC0xMiBjb2wtbWQtOSBjb2wtbGctMTAgcHgtbWQtMyBweS1tZC00IHJlbGVhc2UtbWFpbi1zZWN0aW9uIGNvbW1pdCBvcGVuIGZsb2F0LWxlZnQiPgorICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtaGVhZGVyIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLXN0YXJ0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iZjEgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtbm9ybWFsIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy90YWcvdjIuM2I4Ij52Mi4zYjg8L2E+CisgICAgICAgIDwvZGl2PgorCisgICAgICAgICAgPHNwYW4gY2xhc3M9ImQtbWQtbm9uZSBmbGV4LXNocmluay0wIG1sLTIgbXQtMiBtdC1tZC0wIExhYmVsIExhYmVsLS1vdXRsaW5lIExhYmVsLS1wcmVyZWxlYXNlIj4KKyAgICAgICAgICAgICAgUHJlLXJlbGVhc2UKKyAgICAgICAgICA8L3NwYW4+CisKKyAgICAgIDwvZGl2PgorICAgICAgICA8dWwgY2xhc3M9ImQtZmxleCBkLW1kLW5vbmUgZmxleC1pdGVtcy1jZW50ZXIgbWItMSBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuM2I4IiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4zYjgiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjNiODwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIgZmxleC1hdXRvIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC8wNDUwZGRkNGYwMDNkZThhYThkOGU3YTU0ZDE4MWE5OTI2MDdkMDMxIiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxjb2RlPjA0NTBkZGQ8L2NvZGU+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKyAgICAgICAgICAKKworICAgICAgICAgIAorCisgICAgICAgIDwvdWw+CisgICAgICAKKzxwIGNsYXNzPSJmNSB0ZXh0LWdyYXkgbXQtMiBtdC1tZC0xIG1iLTIgbWItbWQtNCI+CisgICAgPGEgY2xhc3M9ImQtaW5saW5lLWJsb2NrIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+PGltZyBjbGFzcz0iYXZhdGFyIiBzcmM9Imh0dHBzOi8vYXZhdGFyczMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDg4MTAzP3M9NDAmYW1wO3Y9NCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBhbHQ9IkBtaWNoYWVscnN3ZWV0IiAvPjwvYT4KKyAgICA8YSBjbGFzcz0idGV4dC1ib2xkIHRleHQtZ3JheSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPm1pY2hhZWxyc3dlZXQ8L2E+CisgICAgcmVsZWFzZWQgdGhpcworICAgIDxyZWxhdGl2ZS10aW1lIGRhdGV0aW1lPSIyMDE5LTA1LTAyVDE3OjEwOjE2WiIgY2xhc3M9Im5vLXdyYXAiPk1heSAyLCAyMDE5PC9yZWxhdGl2ZS10aW1lPgorICAgICZtaWRkb3Q7CisgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tcGFyZS92Mi4zYjguLi5tYXN0ZXIiPgorICAgIDE2NSBjb21taXRzPC9hPgorICAgIHRvIG1hc3RlcgorICAgIHNpbmNlIHRoaXMgcmVsZWFzZQorPC9wPgorICAgIDwvZGl2PgorCisgICAgCisKKyAgPGRpdiBjbGFzcz0ibWFya2Rvd24tYm9keSI+CisgICAgPHA+Q1VQUyAyLjNiOCBpcyBub3cgYXZhaWxhYmxlIGZvciBkb3dubG9hZC4gIFRoaXMgaXMgdGhlIGVpZ2h0aCBiZXRhIG9mIHRoZSBDVVBTIDIuMyBzZXJpZXMgd2hpY2ggYWRvcHRzIHRoZSBuZXcgQ1VQUyBsaWNlbnNlLCBhZGRzIHN1cHBvcnQgZm9yIElQUCBwcmVzZXRzIGFuZCBmaW5pc2hpbmcgdGVtcGxhdGVzLCBhbmQgZml4ZXMgYSBudW1iZXIgb2YgYnVncyBhbmQgInBvbGlzaCIgaXNzdWVzLiAgVGhpcyBiZXRhIGFsc28gaW5jbHVkZXMgdGhlIG5ldyBpcHBldmVwcmludGVyIHV0aWxpdHkuICBDaGFuZ2VzIGluY2x1ZGU6PC9wPgorPHVsPgorPGxpPk1lZGlhIHNpemUgbWF0Y2hpbmcgbm93IHVzZXMgYSB0b2xlcmFuY2Ugb2YgMC41bW0gKHJkYXI6Ly8zMzgyMjAyNCk8L2xpPgorPGxpPlRoZSBscGFkbWluIGNvbW1hbmQgd291bGQgaGFuZyB3aXRoIGEgYmFkIFBQRCBmaWxlIChyZGFyOi8vNDE0OTUwMTYpPC9saT4KKzxsaT5GaXhlZCBhIHBvdGVudGlhbCBjcmFzaCBidWcgaW4gY3Vwcy1kcml2ZXJkIChyZGFyOi8vNDY2MjU1NzkpPC9saT4KKzxsaT5GaXhlZCBhIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gd2l0aCBsYXJnZSBQUERzIChyZGFyOi8vNDcwNDA3NTkpPC9saT4KKzxsaT5GaXhlZCBhIG1lbW9yeSByZWFsbG9jYXRpb24gYnVnIGluIEhUVFAgaGVhZGVyIHZhbHVlIGV4cGFuc2lvbjxicj4KKyhyZGFyOi8vcHJvYmxlbS81MDAwMDc0OSk8L2xpPgorPGxpPlRpbWVkIG91dCBqb2Igc3VibWlzc2lvbiBub3cgeWllbGRzIGFuIGVycm9yIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MzczOTA1NjQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NzAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTcwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NzAiPiM1NTcwPC9hPik8L2xpPgorPGxpPlJlc3RvcmVkIG1pbmltYWwgc3VwcG9ydCBmb3IgdGhlIDxjb2RlPkVtdWxhdG9yczwvY29kZT4ga2V5d29yZCBpbiBQUEQgZmlsZXMgdG8gYWxsb3c8YnI+CitvbGQgU2Ftc3VuZyBwcmludGVyIGRyaXZlcnMgdG8gY29udGludWUgdG8gd29yayAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDMyMjE0NTY5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTYyIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU2Mi9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTYyIj4jNTU2MjwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIGRpZCBub3QgZW5jb2RlIG9jdGV0U3RyaW5nIHZhbHVlcyBsaWtlICJqb2ItcGFzc3dvcmQiIGNvcnJlY3RseTxicj4KK2ZvciB0aGUgcHJpbnQgZmlsdGVycyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDI5ODI3MTI3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTU4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTU4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTU4Ij4jNTU1ODwvYT4pPC9saT4KKzxsaT5UaGUgPGNvZGU+Y3Vwc0NoZWNrRGVzdFN1cHBvcnRlZDwvY29kZT4gZnVuY3Rpb24gZGlkIG5vdCBjaGVjayBvY3RldFN0cmluZyB2YWx1ZXM8YnI+Citjb3JyZWN0bHkgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQyOTgyMDg2MiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU1NyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTU1Ny9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTU1NyI+IzU1NTc8L2E+KTwvbGk+Cis8bGk+QWRkZWQgc3VwcG9ydCBmb3IgPGNvZGU+VXNlckFnZW50VG9rZW5zPC9jb2RlPiBkaXJlY3RpdmUgaW4gImNsaWVudC5jb25mIiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDI5MDYyMzk5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTU1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU1NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTU1Ij4jNTU1NTwvYT4pPC9saT4KKzxsaT5VcGRhdGVkIHRoZSBzeXN0ZW1kIHNlcnZpY2UgZmlsZSBmb3IgY3Vwc2QgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQyNjQ3OTA0MSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU1MSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTU1MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTU1MSI+IzU1NTE8L2E+KTwvbGk+Cis8bGk+VGhlIDxjb2RlPmlwcFZhbGlkYXRlQXR0cmlidXRlPC9jb2RlPiBmdW5jdGlvbiBkaWQgbm90IGNhdGNoIGFsbCBpbnN0YW5jZXMgb2YgaW52YWxpZDxicj4KK1VURi04IHN0cmluZ3MgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwNjg1MTk3OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwOSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwOSI+IzU1MDk8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYW4gaXNzdWUgd2l0aCB0aGUgc2VsZi1zaWduZWQgY2VydGlmaWNhdGVzIGdlbmVyYXRlZCBieSBHTlUgVExTPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwNTg4MTM0NiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwNiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDYvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwNiI+IzU1MDY8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgd2hlbiByZWFkaW5nIGF0IHRoZSBlbmQgb2YgYSBmaWxlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzOTcxMjg5MjkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NzMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NzMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NzMiPiM1NDczPC9hPik8L2xpPgorPGxpPkZpeGVkIHBvdGVudGlhbCB1bmFsaWduZWQgYWNjZXNzZXMgaW4gdGhlIHN0cmluZyBwb29sIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzOTcxMjkzMzUiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NzQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NzQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NzQiPiM1NDc0PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIHdoZW4gbG9hZGluZyBhIFBQRCBmaWxlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzOTcxMjk1NDQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NzUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NzUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NzUiPiM1NDc1PC9hPik8L2xpPgorPGxpPkFkZGVkIGEgVVNCIHF1aXJrcyBydWxlIGZvciB0aGUgTGV4bWFyayBFMTIwbiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzk4MDAyMTEwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDc4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ3OC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDc4Ij4jNTQ3ODwvYT4pPC9saT4KKzxsaT5VcGRhdGVkIHRoZSBVU0IgcXVpcmtzIHJ1bGUgZm9yIFplYnJhIGxhYmVsIHByaW50ZXJzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNTc3MzMyODYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTUiPiM1Mzk1PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgY29tcGlsZSBlcnJvciBvbiBMaW51eCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDAwMjk3MzkyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDgzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4My9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDgzIj4jNTQ4MzwvYT4pPC9saT4KKzxsaT5UaGUgbHBhZG1pbiBjb21tYW5kLCB3ZWIgaW50ZXJmYWNlLCBhbmQgc2NoZWR1bGVyIGFsbCBxdWVyaWVkIGFuIElQUDxicj4KK0V2ZXJ5d2hlcmUgcHJpbnRlciBkaWZmZXJlbnRseSwgcmVzdWx0aW5nIGluIGRpZmZlcmVudCBQUERzIGZvciB0aGUgc2FtZTxicj4KK3ByaW50ZXIgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMDQ3NTQ3MSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4NCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0ODQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4NCI+IzU0ODQ8L2E+KTwvbGk+Cis8bGk+VGhlIHdlYiBpbnRlcmZhY2Ugbm8gbG9uZ2VyIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgbG9nIGZpbGVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDg5MjM2NDYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MTMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU1MTMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU1MTMiPiM1NTEzPC9hPik8L2xpPgorPGxpPk5vbi1LZXJiZXJpemVkIHByaW50aW5nIHRvIFdpbmRvd3MgdmlhIElQUCB3YXMgYnJva2VuIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDk3Nzk0MTQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MTUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTE1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MTUiPiM1NTE1PC9hPik8L2xpPgorPGxpPkVsaW1pbmF0ZWQgdXNlIG9mIHByaXZhdGUgaGVhZGVycyBhbmQgc29tZSBkZXByZWNhdGVkIG1hY09TIEFQSXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxMDI2MDEwNyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MTYvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNiI+IzU1MTY8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBubyBsb25nZXIgc3RvcHMgYSBwcmludGVyIGlmIGFuIGVycm9yIG9jY3VycyB3aGVuIGEgam9iIGlzPGJyPgorY2FuY2VsZWQgb3IgYWJvcnRlZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDEwMzU1MjcwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTE3IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTE3Ij4jNTUxNzwvYT4pPC9saT4KKzxsaT5BZGRlZCBhIFVTQiBxdWlya3MgcnVsZSBmb3IgdGhlIERZTU8gNDUwIFR1cmJvIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTE3MTExOTciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTIxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjEiPiM1NTIxPC9hPik8L2xpPgorPGxpPkFkZGVkIGEgVVNCIHF1aXJrcyBydWxlIGZvciBYZXJveCBwcmludGVycyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDExNzUzMjU4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTIzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTIzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTIzIj4jNTUyMzwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyJ3Mgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUgZGlkIG5vdCBpbmNsdWRlIGFsbCBvZiB0aGUgYWx0ZXJuYXRlPGJyPgorbmFtZXMgZm9yIHRoZSBzZXJ2ZXIgd2hlbiB1c2luZyBHTlUgVExTIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTIwMTY0NDkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTI1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjUiPiM1NTI1PC9hPik8L2xpPgorPGxpPkZpeGVkIGNvbXBpbGVyIHdhcm5pbmdzIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgR0NDIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTQwNDI5MzQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzIiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTMyL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzIiPiM1NTMyPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDE0MDY2NzA0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMzIj4jNTUzMzwvYT4pPC9saT4KKzxsaT5GaXhlZCBzb21lIFBQRCBjYWNoaW5nIGFuZCBJUFAgRXZlcnl3aGVyZSBQUEQgYWNjb3VudGluZy9wYXNzd29yZCBidWdzPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxNTI3MTQ3OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzNSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTUzNS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTUzNSI+IzU1MzU8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgPGNvZGU+UHJlc2VydmVKb2JIaXN0b3J5PC9jb2RlPiBidWcgd2l0aCB0aW1lIHZhbHVlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDE3MjM0MzIwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTM4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzOC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTM4Ij4jNTUzODwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIG5vIGxvbmdlciBhZHZlcnRpc2VzIHRoZSBIVFRQIG1ldGhvZHMgaXQgc3VwcG9ydHMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxODAxNjkxMSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU0MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1NDAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU0MCI+IzU1NDA8L2E+KTwvbGk+Cis8bGk+TG9jYWxpemF0aW9uIHVwZGF0ZXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM4OTkxMDExNyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ2MSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTQ2MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTQ2MSI+IzU0NjE8L2E+LCBJc3N1ZXMgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzk2MTA5NDc1IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDcxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDcxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDcxIj4jNTQ3MTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM5OTUxNTA3OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4MSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTQ4MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTQ4MSI+IzU0ODE8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDE0Nzc1NTMiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0ODYiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0ODYvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0ODYiPiM1NDg2PC9hPiw8YnI+CitJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDE1NjAyNjYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0ODkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0ODkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0ODkiPiM1NDg5PC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDAxNTgwNzU2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDkxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ5MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDkxIj4jNTQ5MTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMTU4MzE2NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ5MiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTQ5Mi9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTQ5MiI+IzU0OTI8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDE1ODcxMjAiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0OTMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0OTMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0OTMiPiM1NDkzPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDAxNTkxODkwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDk0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDk0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDk0Ij4jNTQ5NDwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMTk3NjE2NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ5NSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0OTUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ5NSI+IzU0OTU8L2E+LDxicj4KK0lzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMjUxNjMwNyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ5NyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0OTcvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ5NyI+IzU0OTc8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDI1NTIyMDYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0OTkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0OTkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0OTkiPiM1NDk5PC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDAyNTUyNjYxIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTAwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTAwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTAwIj4jNTUwMDwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMjU1Mzc2NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwMSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTUwMS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTUwMSI+IzU1MDE8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDMzOTYwMDMiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU1MDQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU1MDQiPiM1NTA0PC9hPik8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgZGlkIG5vdCBhbHdheXMgaWRsZSBleGl0IGFzIHF1aWNrbHkgYXMgaXQgY291bGQuPC9saT4KKzxsaT5BZGRlZCBhIG5ldyA8Y29kZT5pcHBldmVwcmludGVyPC9jb2RlPiBjb21tYW5kIGJhc2VkIG9uIHRoZSBvbGQgaXBwc2VydmVyIHNhbXBsZSBjb2RlLjwvbGk+Cis8L3VsPgorPHA+RW5qb3khPC9wPgorICA8L2Rpdj4KKworCisgIDxkZXRhaWxzCisgICAgY2xhc3M9ImRldGFpbHMtcmVzZXQgRGV0YWlscy1lbGVtZW50IGJvcmRlci10b3AgcHQtMyBtdC00IG1iLTIgbWItbWQtNCIKKyAgICAKKyAgICAKKyAgICA+CisgICAgPHN1bW1hcnk+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLWNsb3NlZCI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLXJpZ2h0IiB2aWV3Qm94PSIwIDAgNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgMTRsNi02LTYtNnYxMnoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tb3BlbiI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLWRvd24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDVsNiA2IDYtNkgweiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtYm9sZCI+QXNzZXRzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibWwtMSBDb3VudGVyIj40PC9zcGFuPgorICAgICAgPC9kaXY+CisgICAgPC9zdW1tYXJ5PgorICAgIDxkaXYgY2xhc3M9IkJveCBCb3gtLWNvbmRlbnNlZCBtdC0zIj4KKyAgICAgIDxkaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjNiOC9jdXBzLTIuM2I4LXNvdXJjZS50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjNiOC1zb3VyY2UudGFyLmd6PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj45Ljg5IE1CPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuM2I4L2N1cHMtMi4zYjgtc291cmNlLnRhci5nei5zaWciIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjNiOC1zb3VyY2UudGFyLmd6LnNpZzwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+NTg1IEJ5dGVzPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKworCisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjNiOC56aXAiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAoemlwKQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4zYjgudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHRhci5neikKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2RldGFpbHM+CisKKworICA8L2Rpdj48IS0tIC8ucmVsZWFzZS1ib2R5IC0tPgorPC9kaXY+PCEtLSAvLnJlbGVhc2UgLS0+CisKKyAgICAgICAgPC9kaXY+CisKKworCisgICAgICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtZW50cnkiPgorICAgICAgICAgICAgCis8ZGl2IGNsYXNzPSJyZWxlYXNlIHB0LTIgcHQtbWQtMCBwYi0zIHBiLW1kLTAgY2xlYXJmaXggbGFiZWwtIj4KKyAgPGRpdiBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgZmxleC13cmFwIGZsZXgtaXRlbXMtY2VudGVyIGNvbC0xMiBjb2wtbWQtMyBjb2wtbGctMiBweC1tZC0zIHBiLTEgcGItbWQtNCBwdC1tZC00IGZsb2F0LWxlZnQgdGV4dC1tZC1yaWdodCB2LWFsaWduLXRvcCI+CisgICAgPGRpdiBjbGFzcz0iZmxleC1hdXRvIGZsZXgtc2VsZi1zdGFydCI+CisKKworICAgIDwvZGl2PgorCisgICAgICA8dWwgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIG10LTIgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuMi4xMSIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuMi4xMSI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4yLjExPC9zcGFuPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0L2U0YTBhYTg2Yzk2YjVkZGRhMzc3MGM0NjcwOWY0ZGVlOWE1OTA3MWYiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICA8Y29kZT5lNGEwYWE4PC9jb2RlPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKyAgICAgICAgCisgICAgICA8L3VsPgorICAgICAgCisKKyAgPC9kaXY+PCEtLSAvLm1ldGEgLS0+CisKKyAgPGRpdiBjbGFzcz0iY29sLTEyIGNvbC1tZC05IGNvbC1sZy0xMCBweC1tZC0zIHB5LW1kLTQgcmVsZWFzZS1tYWluLXNlY3Rpb24gY29tbWl0IG9wZW4gZmxvYXQtbGVmdCI+CisgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1oZWFkZXIiPgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtc3RhcnQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJmMSBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ub3JtYWwiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL3RhZy92Mi4yLjExIj52Mi4yLjExPC9hPgorICAgICAgICA8L2Rpdj4KKworCisgICAgICA8L2Rpdj4KKyAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggZC1tZC1ub25lIGZsZXgtaXRlbXMtY2VudGVyIG1iLTEgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjIuMTEiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjIuMTEiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjIuMTE8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIGZsZXgtYXV0byI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvZTRhMGFhODZjOTZiNWRkZGEzNzcwYzQ2NzA5ZjRkZWU5YTU5MDcxZiIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8Y29kZT5lNGEwYWE4PC9jb2RlPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisgICAgICAgICAgCisKKyAgICAgICAgICAKKworICAgICAgICA8L3VsPgorICAgICAgCis8cCBjbGFzcz0iZjUgdGV4dC1ncmF5IG10LTIgbXQtbWQtMSBtYi0yIG1iLW1kLTQiPgorICAgIDxhIGNsYXNzPSJkLWlubGluZS1ibG9jayIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPjxpbWcgY2xhc3M9ImF2YXRhciIgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ4ODEwMz9zPTQwJmFtcDt2PTQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYWx0PSJAbWljaGFlbHJzd2VldCIgLz48L2E+CisgICAgPGEgY2xhc3M9InRleHQtYm9sZCB0ZXh0LWdyYXkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij5taWNoYWVscnN3ZWV0PC9hPgorICAgIHJlbGVhc2VkIHRoaXMKKyAgICA8cmVsYXRpdmUtdGltZSBkYXRldGltZT0iMjAxOS0wMy0yMlQyMDowNzowMloiIGNsYXNzPSJuby13cmFwIj5NYXIgMjIsIDIwMTk8L3JlbGF0aXZlLXRpbWU+CisgICAgJm1pZGRvdDsKKyAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21wYXJlL3YyLjIuMTEuLi5tYXN0ZXIiPgorICAgIDc5MyBjb21taXRzPC9hPgorICAgIHRvIG1hc3RlcgorICAgIHNpbmNlIHRoaXMgcmVsZWFzZQorPC9wPgorICAgIDwvZGl2PgorCisgICAgCisKKyAgPGRpdiBjbGFzcz0ibWFya2Rvd24tYm9keSI+CisgICAgPHA+Q1VQUyAyLjIuMTEgaXMgYSBidWcgZml4IHJlbGVhc2UgdGhhdCBhZGRyZXNzZXMgaXNzdWVzIGluIHRoZSBzY2hlZHVsZXIsPGJyPgorSVBQIEV2ZXJ5d2hlcmUgc3VwcG9ydCwgQ1VQUyBsaWJyYXJ5LCBhbmQgVVNCIHByaW50ZXIgc3VwcG9ydC4gIENoYW5nZXMgaW5jbHVkZTo8L3A+Cis8dWw+Cis8bGk+UnVubmluZyBwcGRtZXJnZSB3aXRoIHRoZSBzYW1lIGlucHV0IGFuZCBvdXRwdXQgZmlsZW5hbWVzIGRpZCBub3Qgd29yayBhczxicj4KK2FkdmVydGlzZWQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM4OTI4MzgwNiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ1NSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0NTUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ1NSI+IzU0NTU8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgd2hlbiByZWFkaW5nIGF0IHRoZSBlbmQgb2YgYSBmaWxlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzOTcxMjg5MjkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NzMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NzMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NzMiPiM1NDczPC9hPik8L2xpPgorPGxpPkZpeGVkIHBvdGVudGlhbCB1bmFsaWduZWQgYWNjZXNzZXMgaW4gdGhlIHN0cmluZyBwb29sIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzOTcxMjkzMzUiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NzQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NzQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NzQiPiM1NDc0PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIHdoZW4gbG9hZGluZyBhIFBQRCBmaWxlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzOTcxMjk1NDQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NzUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NzUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NzUiPiM1NDc1PC9hPik8L2xpPgorPGxpPkFkZGVkIGEgVVNCIHF1aXJrcyBydWxlIGZvciB0aGUgTGV4bWFyayBFMTIwbiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzk4MDAyMTEwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDc4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ3OC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDc4Ij4jNTQ3ODwvYT4pPC9saT4KKzxsaT5VcGRhdGVkIHRoZSBVU0IgcXVpcmtzIHJ1bGUgZm9yIFplYnJhIGxhYmVsIHByaW50ZXJzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNTc3MzMyODYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTUiPiM1Mzk1PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgY29tcGlsZSBlcnJvciBvbiBMaW51eCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDAwMjk3MzkyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDgzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4My9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDgzIj4jNTQ4MzwvYT4pPC9saT4KKzxsaT5UaGUgbHBhZG1pbiBjb21tYW5kLCB3ZWIgaW50ZXJmYWNlLCBhbmQgc2NoZWR1bGVyIGFsbCBxdWVyaWVkIGFuIElQUDxicj4KK0V2ZXJ5d2hlcmUgcHJpbnRlciBkaWZmZXJlbnRseSwgcmVzdWx0aW5nIGluIGRpZmZlcmVudCBQUERzIGZvciB0aGUgc2FtZTxicj4KK3ByaW50ZXIgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMDQ3NTQ3MSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4NCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0ODQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4NCI+IzU0ODQ8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYW4gaXNzdWUgd2l0aCB0aGUgc2VsZi1zaWduZWQgY2VydGlmaWNhdGVzIGdlbmVyYXRlZCBieSBHTlUgVExTPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwNTg4MTM0NiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwNiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDYvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwNiI+IzU1MDY8L2E+KTwvbGk+Cis8bGk+VGhlIDxjb2RlPmlwcFZhbGlkYXRlQXR0cmlidXRlPC9jb2RlPiBmdW5jdGlvbiBkaWQgbm90IGNhdGNoIGFsbCBpbnN0YW5jZXMgb2YgaW52YWxpZDxicj4KK1VURi04IHN0cmluZ3MgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwNjg1MTk3OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwOSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwOSI+IzU1MDk8L2E+KTwvbGk+Cis8bGk+Tm9uLUtlcmJlcml6ZWQgcHJpbnRpbmcgdG8gV2luZG93cyB2aWEgSVBQIHdhcyBicm9rZW4gKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwOTc3OTQxNCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MTUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNSI+IzU1MTU8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBubyBsb25nZXIgc3RvcHMgYSBwcmludGVyIGlmIGFuIGVycm9yIG9jY3VycyB3aGVuIGEgam9iIGlzPGJyPgorY2FuY2VsZWQgb3IgYWJvcnRlZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDEwMzU1MjcwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTE3IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTE3Ij4jNTUxNzwvYT4pPC9saT4KKzxsaT5BZGRlZCBhIFVTQiBxdWlya3MgcnVsZSBmb3IgdGhlIERZTU8gNDUwIFR1cmJvIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTE3MTExOTciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTIxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjEiPiM1NTIxPC9hPik8L2xpPgorPGxpPkFkZGVkIGEgVVNCIHF1aXJrcyBydWxlIGZvciBYZXJveCBwcmludGVycyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDExNzUzMjU4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTIzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTIzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTIzIj4jNTUyMzwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyJ3Mgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUgZGlkIG5vdCBpbmNsdWRlIGFsbCBvZiB0aGUgYWx0ZXJuYXRlPGJyPgorbmFtZXMgZm9yIHRoZSBzZXJ2ZXIgd2hlbiB1c2luZyBHTlUgVExTIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTIwMTY0NDkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTI1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MjUiPiM1NTI1PC9hPik8L2xpPgorPGxpPkZpeGVkIGNvbXBpbGVyIHdhcm5pbmdzIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgR0NDIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTQwNDI5MzQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzIiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTMyL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzIiPiM1NTMyPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDE0MDY2NzA0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMzIj4jNTUzMzwvYT4pPC9saT4KKzxsaT5GaXhlZCBzb21lIFBQRCBjYWNoaW5nIGFuZCBJUFAgRXZlcnl3aGVyZSBQUEQgYWNjb3VudGluZy9wYXNzd29yZCBidWdzPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxNTI3MTQ3OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzNSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTUzNS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTUzNSI+IzU1MzU8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgPGNvZGU+UHJlc2VydmVKb2JIaXN0b3J5PC9jb2RlPiBidWcgd2l0aCB0aW1lIHZhbHVlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDE3MjM0MzIwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTM4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzOC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTM4Ij4jNTUzODwvYT4pPC9saT4KKzxsaT5NZWRpYSBzaXplIG1hdGNoaW5nIG5vdyB1c2VzIGEgdG9sZXJhbmNlIG9mIDAuNW1tIChyZGFyOi8vMzM4MjIwMjQpPC9saT4KKzxsaT5UaGUgbHBhZG1pbiBjb21tYW5kIHdvdWxkIGhhbmcgd2l0aCBhIGJhZCBQUEQgZmlsZSAocmRhcjovLzQxNDk1MDE2KTwvbGk+Cis8bGk+Rml4ZWQgYSBwb3RlbnRpYWwgY3Jhc2ggYnVnIGluIGN1cHMtZHJpdmVyZCAocmRhcjovLzQ2NjI1NTc5KTwvbGk+Cis8bGk+Rml4ZWQgYSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIHdpdGggbGFyZ2UgUFBEcyAocmRhcjovLzQ3MDQwNzU5KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBkaWQgbm90IGFsd2F5cyBpZGxlIGV4aXQgYXMgcXVpY2tseSBhcyBpdCBjb3VsZC48L2xpPgorPC91bD4KKzxwPkVuam95ITwvcD4KKyAgPC9kaXY+CisKKworICA8ZGV0YWlscworICAgIGNsYXNzPSJkZXRhaWxzLXJlc2V0IERldGFpbHMtZWxlbWVudCBib3JkZXItdG9wIHB0LTMgbXQtNCBtYi0yIG1iLW1kLTQiCisgICAgCisgICAgCisgICAgPgorICAgIDxzdW1tYXJ5PgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1jbG9zZWQiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1yaWdodCIgdmlld0JveD0iMCAwIDYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDE0bDYtNi02LTZ2MTJ6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLW9wZW4iPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1kb3duIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA1bDYgNiA2LTZIMHoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LWJvbGQiPkFzc2V0czwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1sLTEgQ291bnRlciI+NDwvc3Bhbj4KKyAgICAgIDwvZGl2PgorICAgIDwvc3VtbWFyeT4KKyAgICA8ZGl2IGNsYXNzPSJCb3ggQm94LS1jb25kZW5zZWQgbXQtMyI+CisgICAgICA8ZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4yLjExL2N1cHMtMi4yLjExLXNvdXJjZS50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjIuMTEtc291cmNlLnRhci5nejwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+OS45MiBNQjwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjIuMTEvY3Vwcy0yLjIuMTEtc291cmNlLnRhci5nei5zaWciIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjIuMTEtc291cmNlLnRhci5nei5zaWc8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjU4NSBCeXRlczwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisKKworICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4yLjExLnppcCIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh6aXApCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjIuMTEudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHRhci5neikKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2RldGFpbHM+CisKKworICA8L2Rpdj48IS0tIC8ucmVsZWFzZS1ib2R5IC0tPgorPC9kaXY+PCEtLSAvLnJlbGVhc2UgLS0+CisKKyAgICAgICAgPC9kaXY+CisKKworCisgICAgICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtZW50cnkiPgorICAgICAgICAgICAgCis8ZGl2IGNsYXNzPSJyZWxlYXNlIHB0LTIgcHQtbWQtMCBwYi0zIHBiLW1kLTAgY2xlYXJmaXggbGFiZWwtcHJlcmVsZWFzZSI+CisgIDxkaXYgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIGZsZXgtd3JhcCBmbGV4LWl0ZW1zLWNlbnRlciBjb2wtMTIgY29sLW1kLTMgY29sLWxnLTIgcHgtbWQtMyBwYi0xIHBiLW1kLTQgcHQtbWQtNCBmbG9hdC1sZWZ0IHRleHQtbWQtcmlnaHQgdi1hbGlnbi10b3AiPgorICAgIDxkaXYgY2xhc3M9ImZsZXgtYXV0byBmbGV4LXNlbGYtc3RhcnQiPgorICAgICAgICA8c3BhbiBjbGFzcz0iZmxleC1zaHJpbmstMCBMYWJlbCBMYWJlbC0tb3V0bGluZSBtYi1tZC0yIG1yLTIgbXItbWQtMCBMYWJlbC0tcHJlcmVsZWFzZSI+CisgICAgICAgICAgICBQcmUtcmVsZWFzZQorICAgICAgICA8L3NwYW4+CisKKworICAgIDwvZGl2PgorCisgICAgICA8dWwgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIG10LTIgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuM2I3IiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4zYjciPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuM2I3PC9zcGFuPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0L2IxZTdhZmQ1OTY0Y2JlMWFlYWI2ZjBhMmQ1YjMzODg0NjkzYTE0M2EiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICA8Y29kZT5iMWU3YWZkPC9jb2RlPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKyAgICAgICAgCisgICAgICA8L3VsPgorICAgICAgCisKKyAgPC9kaXY+PCEtLSAvLm1ldGEgLS0+CisKKyAgPGRpdiBjbGFzcz0iY29sLTEyIGNvbC1tZC05IGNvbC1sZy0xMCBweC1tZC0zIHB5LW1kLTQgcmVsZWFzZS1tYWluLXNlY3Rpb24gY29tbWl0IG9wZW4gZmxvYXQtbGVmdCI+CisgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1oZWFkZXIiPgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtc3RhcnQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJmMSBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ub3JtYWwiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL3RhZy92Mi4zYjciPnYyLjNiNzwvYT4KKyAgICAgICAgPC9kaXY+CisKKyAgICAgICAgICA8c3BhbiBjbGFzcz0iZC1tZC1ub25lIGZsZXgtc2hyaW5rLTAgbWwtMiBtdC0yIG10LW1kLTAgTGFiZWwgTGFiZWwtLW91dGxpbmUgTGFiZWwtLXByZXJlbGVhc2UiPgorICAgICAgICAgICAgICBQcmUtcmVsZWFzZQorICAgICAgICAgIDwvc3Bhbj4KKworICAgICAgPC9kaXY+CisgICAgICAgIDx1bCBjbGFzcz0iZC1mbGV4IGQtbWQtbm9uZSBmbGV4LWl0ZW1zLWNlbnRlciBtYi0xIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4zYjciIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjNiNyI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10YWciIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjczIDEuNzNDNy4yNiAxLjI2IDYuNjIgMSA1Ljk2IDFIMy41QzIuMTMgMSAxIDIuMTMgMSAzLjV2Mi40N2MwIC42Ni4yNyAxLjMuNzMgMS43N2w2LjA2IDYuMDZjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDQuNTktNC41OWEuOTk2Ljk5NiAwIDAwMC0xLjQxTDcuNzMgMS43M3pNMi4zOCA3LjA5Yy0uMzEtLjMtLjQ3LS43LS40Ny0xLjEzVjMuNWMwLS44OC43Mi0xLjU5IDEuNTktMS41OWgyLjQ3Yy40MiAwIC44My4xNiAxLjEzLjQ3bDYuMTQgNi4xMy00LjczIDQuNzMtNi4xMy02LjE1ek0zLjAxIDNoMnYySDNWM2guMDF6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuM2I3PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisKKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiBmbGV4LWF1dG8iPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0L2IxZTdhZmQ1OTY0Y2JlMWFlYWI2ZjBhMmQ1YjMzODg0NjkzYTE0M2EiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPGNvZGU+YjFlN2FmZDwvY29kZT4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorICAgICAgICAgIAorCisgICAgICAgICAgCisKKyAgICAgICAgPC91bD4KKyAgICAgIAorPHAgY2xhc3M9ImY1IHRleHQtZ3JheSBtdC0yIG10LW1kLTEgbWItMiBtYi1tZC00Ij4KKyAgICA8YSBjbGFzcz0iZC1pbmxpbmUtYmxvY2siIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij48aW1nIGNsYXNzPSJhdmF0YXIiIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20vdS80ODgxMDM/cz00MCZhbXA7dj00IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGFsdD0iQG1pY2hhZWxyc3dlZXQiIC8+PC9hPgorICAgIDxhIGNsYXNzPSJ0ZXh0LWJvbGQgdGV4dC1ncmF5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+bWljaGFlbHJzd2VldDwvYT4KKyAgICByZWxlYXNlZCB0aGlzCisgICAgPHJlbGF0aXZlLXRpbWUgZGF0ZXRpbWU9IjIwMTgtMTItMTRUMTU6MjU6NDBaIiBjbGFzcz0ibm8td3JhcCI+RGVjIDE0LCAyMDE4PC9yZWxhdGl2ZS10aW1lPgorICAgICZtaWRkb3Q7CisgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tcGFyZS92Mi4zYjcuLi5tYXN0ZXIiPgorICAgIDM1MCBjb21taXRzPC9hPgorICAgIHRvIG1hc3RlcgorICAgIHNpbmNlIHRoaXMgcmVsZWFzZQorPC9wPgorICAgIDwvZGl2PgorCisgICAgCisKKyAgPGRpdiBjbGFzcz0ibWFya2Rvd24tYm9keSI+CisgICAgPHA+Q1VQUyAyLjNiNyBpcyBub3cgYXZhaWxhYmxlIGZvciBkb3dubG9hZC4gIFRoaXMgaXMgdGhlIHNpeHRoIGJldGEgb2YgdGhlIENVUFMgMi4zIHNlcmllcyB3aGljaCBhZG9wdHMgdGhlIG5ldyBDVVBTIGxpY2Vuc2UsIGFkZHMgc3VwcG9ydCBmb3IgSVBQIHByZXNldHMgYW5kIGZpbmlzaGluZyB0ZW1wbGF0ZXMsIGFuZCBmaXhlcyBhIG51bWJlciBvZiBidWdzIGFuZCAicG9saXNoIiBpc3N1ZXMuPC9wPgorPHA+Q2hhbmdlcyBpbmNsdWRlOjwvcD4KKzx1bD4KKzxsaT5GaXhlZCBzb21lIGJ1aWxkIGZhaWx1cmVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzODg5MTcwMjciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NTEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NTEvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NTEiPiM1NDUxPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzkxMTQzNTg0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDYzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDYzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDYzIj4jNTQ2MzwvYT4pPC9saT4KKzxsaT5SdW5uaW5nIHBwZG1lcmdlIHdpdGggdGhlIHNhbWUgaW5wdXQgYW5kIG91dHB1dCBmaWxlbmFtZXMgZGlkIG5vdCB3b3JrIGFzPGJyPgorYWR2ZXJ0aXNlZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzg5MjgzODA2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDU1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ1NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDU1Ij4jNTQ1NTwvYT4pPC9saT4KKzwvdWw+Cis8cD5FbmpveSE8L3A+CisgIDwvZGl2PgorCisKKyAgPGRldGFpbHMKKyAgICBjbGFzcz0iZGV0YWlscy1yZXNldCBEZXRhaWxzLWVsZW1lbnQgYm9yZGVyLXRvcCBwdC0zIG10LTQgbWItMiBtYi1tZC00IgorICAgIAorICAgIAorICAgID4KKyAgICA8c3VtbWFyeT4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tY2xvc2VkIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtcmlnaHQiIHZpZXdCb3g9IjAgMCA2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCAxNGw2LTYtNi02djEyeiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1vcGVuIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtZG93biIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNWw2IDYgNi02SDB6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1ib2xkIj5Bc3NldHM8L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtbC0xIENvdW50ZXIiPjQ8L3NwYW4+CisgICAgICA8L2Rpdj4KKyAgICA8L3N1bW1hcnk+CisgICAgPGRpdiBjbGFzcz0iQm94IEJveC0tY29uZGVuc2VkIG10LTMiPgorICAgICAgPGRpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuM2I3L2N1cHMtMi4zYjctc291cmNlLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuM2I3LXNvdXJjZS50YXIuZ3o8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjkuNzcgTUI8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4zYjcvY3Vwcy0yLjNiNy1zb3VyY2UudGFyLmd6LnNpZyIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuM2I3LXNvdXJjZS50YXIuZ3ouc2lnPC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj41ODUgQnl0ZXM8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorCisKKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuM2I3LnppcCIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh6aXApCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjNiNy50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAodGFyLmd6KQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGV0YWlscz4KKworCisgIDwvZGl2PjwhLS0gLy5yZWxlYXNlLWJvZHkgLS0+Cis8L2Rpdj48IS0tIC8ucmVsZWFzZSAtLT4KKworICAgICAgICA8L2Rpdj4KKworCisKKyAgICAgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1lbnRyeSI+CisgICAgICAgICAgICAKKzxkaXYgY2xhc3M9InJlbGVhc2UgcHQtMiBwdC1tZC0wIHBiLTMgcGItbWQtMCBjbGVhcmZpeCBsYWJlbC1wcmVyZWxlYXNlIj4KKyAgPGRpdiBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgZmxleC13cmFwIGZsZXgtaXRlbXMtY2VudGVyIGNvbC0xMiBjb2wtbWQtMyBjb2wtbGctMiBweC1tZC0zIHBiLTEgcGItbWQtNCBwdC1tZC00IGZsb2F0LWxlZnQgdGV4dC1tZC1yaWdodCB2LWFsaWduLXRvcCI+CisgICAgPGRpdiBjbGFzcz0iZmxleC1hdXRvIGZsZXgtc2VsZi1zdGFydCI+CisgICAgICAgIDxzcGFuIGNsYXNzPSJmbGV4LXNocmluay0wIExhYmVsIExhYmVsLS1vdXRsaW5lIG1iLW1kLTIgbXItMiBtci1tZC0wIExhYmVsLS1wcmVyZWxlYXNlIj4KKyAgICAgICAgICAgIFByZS1yZWxlYXNlCisgICAgICAgIDwvc3Bhbj4KKworCisgICAgPC9kaXY+CisKKyAgICAgIDx1bCBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgbXQtMiBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4zYjYiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjNiNiI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4zYjY8L3NwYW4+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvYzEzZTJmNDRlYjE1YmNkYmZmOTEyNmRmODZkMWVkOWE1MTA4ZTQ3YyIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxjb2RlPmMxM2UyZjQ8L2NvZGU+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorICAgICAgICAKKyAgICAgIDwvdWw+CisgICAgICAKKworICA8L2Rpdj48IS0tIC8ubWV0YSAtLT4KKworICA8ZGl2IGNsYXNzPSJjb2wtMTIgY29sLW1kLTkgY29sLWxnLTEwIHB4LW1kLTMgcHktbWQtNCByZWxlYXNlLW1haW4tc2VjdGlvbiBjb21taXQgb3BlbiBmbG9hdC1sZWZ0Ij4KKyAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWhlYWRlciI+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1zdGFydCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImYxIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LW5vcm1hbCI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvdGFnL3YyLjNiNiI+djIuM2I2PC9hPgorICAgICAgICA8L2Rpdj4KKworICAgICAgICAgIDxzcGFuIGNsYXNzPSJkLW1kLW5vbmUgZmxleC1zaHJpbmstMCBtbC0yIG10LTIgbXQtbWQtMCBMYWJlbCBMYWJlbC0tb3V0bGluZSBMYWJlbC0tcHJlcmVsZWFzZSI+CisgICAgICAgICAgICAgIFByZS1yZWxlYXNlCisgICAgICAgICAgPC9zcGFuPgorCisgICAgICA8L2Rpdj4KKyAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggZC1tZC1ub25lIGZsZXgtaXRlbXMtY2VudGVyIG1iLTEgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjNiNiIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuM2I2Ij4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4zYjY8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIGZsZXgtYXV0byI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvYzEzZTJmNDRlYjE1YmNkYmZmOTEyNmRmODZkMWVkOWE1MTA4ZTQ3YyIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8Y29kZT5jMTNlMmY0PC9jb2RlPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisgICAgICAgICAgCisKKyAgICAgICAgICAKKworICAgICAgICA8L3VsPgorICAgICAgCis8cCBjbGFzcz0iZjUgdGV4dC1ncmF5IG10LTIgbXQtbWQtMSBtYi0yIG1iLW1kLTQiPgorICAgIDxhIGNsYXNzPSJkLWlubGluZS1ibG9jayIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPjxpbWcgY2xhc3M9ImF2YXRhciIgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ4ODEwMz9zPTQwJmFtcDt2PTQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYWx0PSJAbWljaGFlbHJzd2VldCIgLz48L2E+CisgICAgPGEgY2xhc3M9InRleHQtYm9sZCB0ZXh0LWdyYXkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij5taWNoYWVscnN3ZWV0PC9hPgorICAgIHJlbGVhc2VkIHRoaXMKKyAgICA8cmVsYXRpdmUtdGltZSBkYXRldGltZT0iMjAxOC0xMi0wN1QxOTo1NToxNVoiIGNsYXNzPSJuby13cmFwIj5EZWMgNywgMjAxODwvcmVsYXRpdmUtdGltZT4KKyAgICAmbWlkZG90OworICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbXBhcmUvdjIuM2I2Li4ubWFzdGVyIj4KKyAgICAzNTggY29tbWl0czwvYT4KKyAgICB0byBtYXN0ZXIKKyAgICBzaW5jZSB0aGlzIHJlbGVhc2UKKzwvcD4KKyAgICA8L2Rpdj4KKworICAgIAorCisgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWJvZHkiPgorICAgIDxwPkNVUFMgMi4zYjYgaXMgbm93IGF2YWlsYWJsZSBmb3IgZG93bmxvYWQuIFRoaXMgaXMgdGhlIHNpeHRoIGJldGEgb2YgdGhlIENVUFMgMi4zIHNlcmllcyB3aGljaCBhZG9wdHMgdGhlIG5ldyBDVVBTIGxpY2Vuc2UsIGFkZHMgc3VwcG9ydCBmb3IgSVBQIHByZXNldHMgYW5kIGZpbmlzaGluZyB0ZW1wbGF0ZXMsIGFuZCBmaXhlcyBhIG51bWJlciBvZiBidWdzIGFuZCDigJxwb2xpc2jigJ0gaXNzdWVzLiBDaGFuZ2VzIGluY2x1ZGU6PC9wPgorPHVsPgorPGxpPkxvY2FsaXphdGlvbiB1cGRhdGUgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjMzMTQ4NzQ0OCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTMzOSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTMzOS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTMzOSI+IzUzMzk8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzMzgzNzEwNzAiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzNDgiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzUzNDgvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzUzNDgiPiM1MzQ4PC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzQ2MDMxMDM4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzYyIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM2Mi9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzYyIj4jNTM2MjwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM2Njc4NzIxMSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQwOCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTQwOC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTQwOCI+IzU0MDg8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNjgwNDUwNzQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MTAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0MTAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0MTAiPiM1NDEwPC9hPik8L2xpPgorPGxpPkRvY3VtZW50YXRpb24gdXBkYXRlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzQ4MzUzMjgyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzY5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81MzY5L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81MzY5Ij4jNTM2OTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM2MzQwNDQ4NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQwMiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0MDIvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQwMiI+IzU0MDI8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNjM0MDU3NjQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MDMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDAzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MDMiPiM1NDAzPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzY0NTUyNzcyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDA0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQwNC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDA0Ij4jNTQwNDwvYT4pPC9saT4KKzxsaT5DVkUtMjAxOC00NzAwOiBMaW51eCBzZXNzaW9uIGNvb2tpZXMgdXNlZCBhIHByZWRpY3RhYmxlIHJhbmRvbSBudW1iZXIgc2VlZC48L2xpPgorPGxpPkFsbCB1c2VyIGNvbW1hbmRzIG5vdyBzdXBwb3J0IHRoZSA8Y29kZT4tLWhlbHA8L2NvZGU+IG9wdGlvbiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzMwNTQwOTY1IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzI2IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81MzI2L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81MzI2Ij4jNTMyNjwvYT4pPC9saT4KKzxsaT5UaGUgPGNvZGU+bHBvcHRpb25zPC9jb2RlPiBjb21tYW5kIG5vdyB3b3JrcyB3aXRoIElQUCBFdmVyeXdoZXJlIHByaW50ZXJzIHRoYXQgaGF2ZSBub3QgeWV0IGJlZW4gYWRkZWQgYXMgbG9jYWwgcXVldWVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIyNDA0NzYzNjAiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUwNDUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81MDQ1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUwNDUiPiM1MDQ1PC9hPik8L2xpPgorPGxpPlRoZSBscGFkbWluIGNvbW1hbmQgd291bGQgY3JlYXRlIGEgbm9uLXdvcmtpbmcgcHJpbnRlciBpbiBzb21lIGVycm9yIGNhc2VzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzMTg5NDY1OTAiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzMDUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81MzA1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzMDUiPiM1MzA1PC9hPik8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgd291bGQgY3Jhc2ggaWYgYW4gZW1wdHkgPGNvZGU+QWNjZXNzTG9nPC9jb2RlPiBkaXJlY3RpdmUgd2FzIHNwZWNpZmllZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzIwMjA1ODIwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzA5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTMwOS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzA5Ij4jNTMwOTwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIGRpZCBub3QgaWRsZS1leGl0IG9uIHNvbWUgTGludXggZGlzdHJpYnV0aW9ucyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzI2NjgxNDgxIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzE5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTMxOS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzE5Ij4jNTMxOTwvYT4pPC9saT4KKzxsaT5GaXhlZCBhIHJlZ3Jlc3Npb24gaW4gdGhlIGNoYW5nZXMgdG8gaXBwVmFsaWRhdGVBdHRyaWJ1dGUgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjMyOTg0OTIyOCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTMyMiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzUzMjIvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTMyMiI+IzUzMjI8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzMzA3OTU5MTAiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzMzAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzUzMzAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzUzMzAiPiM1MzMwPC9hPik8L2xpPgorPGxpPkZpeGVkIGEgY3Jhc2ggYnVnIGluIHRoZSBFcHNvbiBkb3QgbWF0cml4IGRyaXZlciAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzI5OTMzNzAwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzIzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTMyMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzIzIj4jNTMyMzwvYT4pPC9saT4KKzxsaT5BdXRvbWF0aWMgZGVidWcgbG9nZ2luZyBvZiBqb2IgZXJyb3JzIGRpZCBub3Qgd29yayB3aXRoIHN5c3RlbWQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjMzMTI1MDUwNSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTMzNyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTMzNy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTMzNyI+IzUzMzc8L2E+KTwvbGk+Cis8bGk+VGhlIHdlYiBpbnRlcmZhY2UgZGlkIG5vdCBsaXN0IHRoZSBJUFAgRXZlcnl3aGVyZSAiZHJpdmVyIiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzMxMzEyNzEyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzM4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTMzOC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzM4Ij4jNTMzODwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIGRpZCBub3QgcmVwb3J0IGFsbCBvZiB0aGUgc3VwcG9ydGVkIGpvYiBvcHRpb25zIGFuZCB2YWx1ZXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjMzMzI3Njc4MyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM0MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzUzNDAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM0MCI+IzUzNDA8L2E+KTwvbGk+Cis8bGk+VGhlIElQUCBFdmVyeXdoZXJlICJkcml2ZXIiIG5vdyBwcm9wZXJseSBzdXBwb3J0cyBmYWNlLXVwIHByaW50ZXJzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzMzcwODM0NDkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzNDUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzUzNDUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzUzNDUiPiM1MzQ1PC9hPik8L2xpPgorPGxpPkZpeGVkIHNvbWUgdHlwb3MgaW4gdGhlIGxhYmVsIHByaW50ZXIgZHJpdmVycyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzM5MTg1NTY1IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzUwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81MzUwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81MzUwIj4jNTM1MDwvYT4pPC9saT4KKzxsaT5TZXR0aW5nIHRoZSA8Y29kZT5Db21tdW5pdHk8L2NvZGU+IG5hbWUgdG8gdGhlIGVtcHR5IHN0cmluZyBpbiA8Y29kZT5zbm1wLmNvbmY8L2NvZGU+IG5vdyBkaXNhYmxlcyBTTk1QIHN1cHBseSBsZXZlbCBtb25pdG9yaW5nIGJ5IGFsbCB0aGUgc3RhbmRhcmQgbmV0d29yayBiYWNrZW5kcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzQwNjI0MDkwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzU0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM1NC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzU0Ij4jNTM1NDwvYT4pPC9saT4KKzxsaT5NdWx0aS1maWxlIGpvYnMgY291bGQgZ2V0IHN0dWNrIGlmIHRoZSBiYWNrZW5kIGZhaWxlZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzQ1MDY5Nzg3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzU5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM1OS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzU5Ij4jNTM1OTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM3MTA5Mjk1NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQxMyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTQxMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTQxMyI+IzU0MTM8L2E+KTwvbGk+Cis8bGk+VGhlIElQUCBFdmVyeXdoZXJlICJkcml2ZXIiIG5vIGxvbmdlciBkb2VzIGxvY2FsIGZpbHRlcmluZyB3aGVuIHByaW50aW5nIHRvIGEgc2hhcmVkIENVUFMgcHJpbnRlciAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzQ1MzcxMDY0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzYxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM2MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzYxIj4jNTM2MTwvYT4pPC9saT4KKzxsaT5UaGUgbHBhZG1pbiBjb21tYW5kIG5vdyBjb3JyZWN0bHkgcmVwb3J0cyBJUFAgZXJyb3JzIHdoZW4gY29uZmlndXJpbmcgYW4gSVBQIEV2ZXJ5d2hlcmUgcHJpbnRlciAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzQ4NDU0NjY5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzcwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM3MC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzcwIj4jNTM3MDwvYT4pPC9saT4KKzxsaT5GaXhlZCBzb21lIG1lbW9yeSBsZWFrcyBkaXNjb3ZlcmVkIGJ5IENvdmVyaXR5IChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNTA4MTcwNTYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzNzUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzUzNzUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzUzNzUiPiM1Mzc1PC9hPik8L2xpPgorPGxpPlRoZSBQUEQgY29tcGlsZXIgaW5jb3JyZWN0bHkgdGVybWluYXRlZCBKQ0wgb3B0aW9ucyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzUzOTIzNDUzIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Mzc5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM3OS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Mzc5Ij4jNTM3OTwvYT4pPC9saT4KKzxsaT5UaGUgY3Vwc3Rlc3RwcGQgdXRpbGl0eSBkaWQgbm90IGdlbmVyYXRlIGVycm9ycyBmb3IgbWlzc2luZy9taXNtYXRjaGVkIENsb3NlVUkvSkNMQ2xvc2VVSSBrZXl3b3JkcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzU0MzY2MDE4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzgxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM4MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzgxIj4jNTM4MTwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIG5vdyByZXBvcnRzIHRoZSBhY3R1YWwgbG9jYXRpb24gb2YgdGhlIGxvZyBmaWxlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNjA4MzAzNjIiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTgiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzUzOTgvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzUzOTgiPiM1Mzk4PC9hPik8L2xpPgorPGxpPkFkZGVkIFVTQiBxdWlyayBydWxlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzU3NzMzMjg2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM5NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk1Ij4jNTM5NTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM3NDc4OTMxMiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQyMCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0MjAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQyMCI+IzU0MjA8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzODMzNTMxNDMiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDQzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDMiPiM1NDQzPC9hPik8L2xpPgorPGxpPlRoZSBnZW5lcmF0ZWQgUFBEIGZpbGVzIGZvciBJUFAgRXZlcnl3aGVyZSBwcmludGVycyBkaWQgbm90IGNvbnRhaW4gdGhlIGN1cHNNYW51YWxDb3BpZXMga2V5d29yZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzc5MTY4NzAwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDMzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDMzIj4jNTQzMzwvYT4pPC9saT4KKzxsaT5LZXJiZXJvcyBjcmVkZW50aWFscyBtaWdodCBiZSB0cnVuY2F0ZWQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM3OTk5MjU3MiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzNSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTQzNS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTQzNSI+IzU0MzU8L2E+KTwvbGk+Cis8bGk+VGhlIGhhbmRsaW5nIG9mIDxjb2RlPk1heEpvYlRpbWUgMDwvY29kZT4gZGlkIG5vdCBtYXRjaCB0aGUgZG9jdW1lbnRhdGlvbiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzgxMjQ3ODYzIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDM4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzOC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDM4Ij4jNTQzODwvYT4pPC9saT4KKzxsaT5GaXhlZCBhIGJ1ZyBhZGRpbmcgYSBxdWV1ZSB3aXRoIHRoZSA8Y29kZT4tRTwvY29kZT4gb3B0aW9uIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzODE5NDIwNjkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDQwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDAiPiM1NDQwPC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT5jdXBzYWRkc21iPC9jb2RlPiBwcm9ncmFtIGhhcyBiZWVuIHJlbW92ZWQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM4ODMwMjE0NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ0OSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ0OSI+IzU0NDk8L2E+KTwvbGk+Cis8bGk+VGhlIDxjb2RlPmN1cHN0ZXN0ZHNjPC9jb2RlPiBwcm9ncmFtIGhhcyBiZWVuIHJlbW92ZWQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM4ODMwNzUxNiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ1MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0NTAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ1MCI+IzU0NTA8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciB3YXMgYmVpbmcgYmFja2dyb3VuZGVkIG9uIG1hY09TLCBjYXVzaW5nIGFwcGxpY2F0aW9ucyB0byBzcGluIChyZGFyOi8vNDA0MzYwODApPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIGRpZCBub3QgdmFsaWRhdGUgdGhhdCByZXF1aXJlZCBpbml0aWFsIHJlcXVlc3QgYXR0cmlidXRlcyB3ZXJlIGluIHRoZSBvcGVyYXRpb24gZ3JvdXAgKHJkYXI6Ly80MTA5ODE3OCk8L2xpPgorPGxpPkF1dGhlbnRpY2F0aW9uIGluIHRoZSB3ZWIgaW50ZXJmYWNlIGRpZCBub3Qgd29yayBvbiBtYWNPUyAocmRhcjovLzQxNDQ0NDczKTwvbGk+Cis8bGk+Rml4ZWQgYW4gaXNzdWUgd2l0aCBIVFRQIERpZ2VzdCBhdXRoZW50aWNhdGlvbiAocmRhcjovLzQxNzA5MDg2KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBjb3VsZCBjcmFzaCB3aGVuIGpvYiBoaXN0b3J5IHdhcyBwdXJnZWQgKHJkYXI6Ly80MjE5ODA1Nyk8L2xpPgorPGxpPkZpeGVkIGEgY3Jhc2ggYnVnIHdoZW4gbWFwcGluZyBQUEQgZHVwbGV4IG9wdGlvbnMgdG8gSVBQIGF0dHJpYnV0ZXMgKHJkYXI6Ly80NjE4Mzk3Nik8L2xpPgorPGxpPkZpeGVkIGEgbWVtb3J5IGxlYWsgZm9yIHNvbWUgSVBQIChleHRlbnNpb24pIHN5bnRheGVzLjwvbGk+Cis8bGk+VGhlIDxjb2RlPmN1cHNjZ2k8L2NvZGU+LCA8Y29kZT5jdXBzbWltZTwvY29kZT4sIGFuZCA8Y29kZT5jdXBzcHBkYzwvY29kZT4gc3VwcG9ydCBsaWJyYXJpZXMgYXJlIG5vIGxvbmdlciBpbnN0YWxsZWQgYXMgc2hhcmVkIGxpYnJhcmllcy48L2xpPgorPGxpPlRoZSA8Y29kZT5zbm1wPC9jb2RlPiBiYWNrZW5kIGlzIG5vdyBkZXByZWNhdGVkLjwvbGk+Cis8L3VsPgorPHA+RW5qb3khPC9wPgorICA8L2Rpdj4KKworCisgIDxkZXRhaWxzCisgICAgY2xhc3M9ImRldGFpbHMtcmVzZXQgRGV0YWlscy1lbGVtZW50IGJvcmRlci10b3AgcHQtMyBtdC00IG1iLTIgbWItbWQtNCIKKyAgICAKKyAgICAKKyAgICA+CisgICAgPHN1bW1hcnk+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLWNsb3NlZCI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLXJpZ2h0IiB2aWV3Qm94PSIwIDAgNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgMTRsNi02LTYtNnYxMnoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tb3BlbiI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLWRvd24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDVsNiA2IDYtNkgweiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtYm9sZCI+QXNzZXRzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibWwtMSBDb3VudGVyIj40PC9zcGFuPgorICAgICAgPC9kaXY+CisgICAgPC9zdW1tYXJ5PgorICAgIDxkaXYgY2xhc3M9IkJveCBCb3gtLWNvbmRlbnNlZCBtdC0zIj4KKyAgICAgIDxkaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjNiNi9jdXBzLTIuM2I2LXNvdXJjZS50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjNiNi1zb3VyY2UudGFyLmd6PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj45Ljc3IE1CPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuM2I2L2N1cHMtMi4zYjYtc291cmNlLnRhci5nei5zaWciIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjNiNi1zb3VyY2UudGFyLmd6LnNpZzwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+NTg1IEJ5dGVzPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKworCisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjNiNi56aXAiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAoemlwKQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4zYjYudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHRhci5neikKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2RldGFpbHM+CisKKworICA8L2Rpdj48IS0tIC8ucmVsZWFzZS1ib2R5IC0tPgorPC9kaXY+PCEtLSAvLnJlbGVhc2UgLS0+CisKKyAgICAgICAgPC9kaXY+CisKKworCisgICAgICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtZW50cnkiPgorICAgICAgICAgICAgCis8ZGl2IGNsYXNzPSJyZWxlYXNlIHB0LTIgcHQtbWQtMCBwYi0zIHBiLW1kLTAgY2xlYXJmaXggbGFiZWwtIj4KKyAgPGRpdiBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgZmxleC13cmFwIGZsZXgtaXRlbXMtY2VudGVyIGNvbC0xMiBjb2wtbWQtMyBjb2wtbGctMiBweC1tZC0zIHBiLTEgcGItbWQtNCBwdC1tZC00IGZsb2F0LWxlZnQgdGV4dC1tZC1yaWdodCB2LWFsaWduLXRvcCI+CisgICAgPGRpdiBjbGFzcz0iZmxleC1hdXRvIGZsZXgtc2VsZi1zdGFydCI+CisKKworICAgIDwvZGl2PgorCisgICAgICA8dWwgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIG10LTIgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuMi4xMCIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuMi4xMCI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4yLjEwPC9zcGFuPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0LzI1YjIzMzgzNDZlZjNhYmJiOTNlYTg4NDc2ODg3Y2JhN2IyYjg2ZjgiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICA8Y29kZT4yNWIyMzM4PC9jb2RlPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKyAgICAgICAgCisgICAgICA8L3VsPgorICAgICAgCisKKyAgPC9kaXY+PCEtLSAvLm1ldGEgLS0+CisKKyAgPGRpdiBjbGFzcz0iY29sLTEyIGNvbC1tZC05IGNvbC1sZy0xMCBweC1tZC0zIHB5LW1kLTQgcmVsZWFzZS1tYWluLXNlY3Rpb24gY29tbWl0IG9wZW4gZmxvYXQtbGVmdCI+CisgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1oZWFkZXIiPgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtc3RhcnQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJmMSBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ub3JtYWwiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL3RhZy92Mi4yLjEwIj52Mi4yLjEwPC9hPgorICAgICAgICA8L2Rpdj4KKworCisgICAgICA8L2Rpdj4KKyAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggZC1tZC1ub25lIGZsZXgtaXRlbXMtY2VudGVyIG1iLTEgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjIuMTAiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjIuMTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjIuMTA8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIGZsZXgtYXV0byI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvMjViMjMzODM0NmVmM2FiYmI5M2VhODg0NzY4ODdjYmE3YjJiODZmOCIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8Y29kZT4yNWIyMzM4PC9jb2RlPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisgICAgICAgICAgCisKKyAgICAgICAgICAKKworICAgICAgICA8L3VsPgorICAgICAgCis8cCBjbGFzcz0iZjUgdGV4dC1ncmF5IG10LTIgbXQtbWQtMSBtYi0yIG1iLW1kLTQiPgorICAgIDxhIGNsYXNzPSJkLWlubGluZS1ibG9jayIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPjxpbWcgY2xhc3M9ImF2YXRhciIgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ4ODEwMz9zPTQwJmFtcDt2PTQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYWx0PSJAbWljaGFlbHJzd2VldCIgLz48L2E+CisgICAgPGEgY2xhc3M9InRleHQtYm9sZCB0ZXh0LWdyYXkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij5taWNoYWVscnN3ZWV0PC9hPgorICAgIHJlbGVhc2VkIHRoaXMKKyAgICA8cmVsYXRpdmUtdGltZSBkYXRldGltZT0iMjAxOC0xMi0wN1QxOTo1Nzo1NVoiIGNsYXNzPSJuby13cmFwIj5EZWMgNywgMjAxODwvcmVsYXRpdmUtdGltZT4KKyAgICAmbWlkZG90OworICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbXBhcmUvdjIuMi4xMC4uLm1hc3RlciI+CisgICAgNzkzIGNvbW1pdHM8L2E+CisgICAgdG8gbWFzdGVyCisgICAgc2luY2UgdGhpcyByZWxlYXNlCis8L3A+CisgICAgPC9kaXY+CisKKyAgICAKKworICA8ZGl2IGNsYXNzPSJtYXJrZG93bi1ib2R5Ij4KKyAgICA8cD5DVVBTIDIuMi4xMCBpcyBhIGJ1ZyBmaXggcmVsZWFzZSB0aGF0IGFkZHJlc3NlcyBpc3N1ZXMgaW4gdGhlIHNjaGVkdWxlciwgSVBQIEV2ZXJ5d2hlcmUgc3VwcG9ydCwgQ1VQUyBsaWJyYXJ5LCBhbmQgVVNCIHByaW50ZXIgc3VwcG9ydC4gQ2hhbmdlcyBpbmNsdWRlOjwvcD4KKzx1bD4KKzxsaT5DVkUtMjAxOC00MzAwOiBMaW51eCBzZXNzaW9uIGNvb2tpZXMgdXNlZCBhIHByZWRpY3RhYmxlIHJhbmRvbSBudW1iZXIgc2VlZC48L2xpPgorPGxpPlRoZSA8Y29kZT5scG9wdGlvbnM8L2NvZGU+IGNvbW1hbmQgbm93IHdvcmtzIHdpdGggSVBQIEV2ZXJ5d2hlcmUgcHJpbnRlcnMgdGhhdCBoYXZlIG5vdCB5ZXQgYmVlbiBhZGRlZCBhcyBsb2NhbCBxdWV1ZXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjI0MDQ3NjM2MCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTA0NSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzUwNDUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTA0NSI+IzUwNDU8L2E+KTwvbGk+Cis8bGk+QWRkZWQgVVNCIHF1aXJrIHJ1bGVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNTc3MzMyODYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTUiPiM1Mzk1PC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzgzMzUzMTQzIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDQzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ0My9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDQzIj4jNTQ0MzwvYT4pPC9saT4KKzxsaT5UaGUgZ2VuZXJhdGVkIFBQRCBmaWxlcyBmb3IgSVBQIEV2ZXJ5d2hlcmUgcHJpbnRlcnMgZGlkIG5vdCBjb250YWluIHRoZSBjdXBzTWFudWFsQ29waWVzIGtleXdvcmQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM3OTE2ODcwMCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzMyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzMyI+IzU0MzM8L2E+KTwvbGk+Cis8bGk+S2VyYmVyb3MgY3JlZGVudGlhbHMgbWlnaHQgYmUgdHJ1bmNhdGVkIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNzk5OTI1NzIiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0MzUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0MzUiPiM1NDM1PC9hPik8L2xpPgorPGxpPlRoZSBoYW5kbGluZyBvZiA8Y29kZT5NYXhKb2JUaW1lIDA8L2NvZGU+IGRpZCBub3QgbWF0Y2ggdGhlIGRvY3VtZW50YXRpb24gKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM4MTI0Nzg2MyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzOCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzgvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzOCI+IzU0Mzg8L2E+KTwvbGk+Cis8bGk+SW5jb3Jwb3JhdGVkIHRoZSBwYWdlIGFjY291bnRpbmcgY2hhbmdlcyBmcm9tIENVUFMgMi4zIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzODE1MzE1NzgiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDM5L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzkiPiM1NDM5PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgYnVnIGFkZGluZyBhIHF1ZXVlIHdpdGggdGhlIDxjb2RlPi1FPC9jb2RlPiBvcHRpb24gKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM4MTk0MjA2OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ0MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ0MCI+IzU0NDA8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYSBjcmFzaCBidWcgd2hlbiBtYXBwaW5nIFBQRCBkdXBsZXggb3B0aW9ucyB0byBJUFAgYXR0cmlidXRlcyAocmRhcjovLzQ2MTgzOTc2KTwvbGk+Cis8L3VsPgorPHA+RW5qb3khPC9wPgorICA8L2Rpdj4KKworCisgIDxkZXRhaWxzCisgICAgY2xhc3M9ImRldGFpbHMtcmVzZXQgRGV0YWlscy1lbGVtZW50IGJvcmRlci10b3AgcHQtMyBtdC00IG1iLTIgbWItbWQtNCIKKyAgICAKKyAgICAKKyAgICA+CisgICAgPHN1bW1hcnk+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLWNsb3NlZCI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLXJpZ2h0IiB2aWV3Qm94PSIwIDAgNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgMTRsNi02LTYtNnYxMnoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tb3BlbiI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLWRvd24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDVsNiA2IDYtNkgweiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtYm9sZCI+QXNzZXRzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibWwtMSBDb3VudGVyIj40PC9zcGFuPgorICAgICAgPC9kaXY+CisgICAgPC9zdW1tYXJ5PgorICAgIDxkaXYgY2xhc3M9IkJveCBCb3gtLWNvbmRlbnNlZCBtdC0zIj4KKyAgICAgIDxkaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjIuMTAvY3Vwcy0yLjIuMTAtc291cmNlLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuMi4xMC1zb3VyY2UudGFyLmd6PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj45LjkyIE1CPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuMi4xMC9jdXBzLTIuMi4xMC1zb3VyY2UudGFyLmd6LnNpZyIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuMi4xMC1zb3VyY2UudGFyLmd6LnNpZzwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+NTg1IEJ5dGVzPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKworCisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjIuMTAuemlwIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHppcCkKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuMi4xMC50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAodGFyLmd6KQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGV0YWlscz4KKworCisgIDwvZGl2PjwhLS0gLy5yZWxlYXNlLWJvZHkgLS0+Cis8L2Rpdj48IS0tIC8ucmVsZWFzZSAtLT4KKworICAgICAgICA8L2Rpdj4KKworICA8L2Rpdj4KKworICA8ZGl2IGRhdGEtcGpheCBjbGFzcz0icGFnaW5hdGUtY29udGFpbmVyIj4KKyAgICA8ZGl2IGNsYXNzPSJwYWdpbmF0aW9uIj48c3BhbiBjbGFzcz0iZGlzYWJsZWQiPlByZXZpb3VzPC9zcGFuPjxhIHJlbD0ibm9mb2xsb3ciIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzP2FmdGVyPXYyLjIuMTAiPk5leHQ8L2E+PC9kaXY+CisgIDwvZGl2PgorCisKKyAgPC9kaXY+Cis8L2Rpdj4KKworICAgIDwvbWFpbj4KKyAgPC9kaXY+CisgIAorCisgIDwvZGl2PgorCisgICAgICAgIAorPGRpdiBjbGFzcz0iZm9vdGVyIGNvbnRhaW5lci1sZyB3aWR0aC1mdWxsIHAtcmVzcG9uc2l2ZSIgcm9sZT0iY29udGVudGluZm8iPgorICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXggZmxleC1yb3ctcmV2ZXJzZSBmbGV4LWxnLXJvdyBmbGV4LXdyYXAgZmxleC1sZy1ub3dyYXAgZmxleC1qdXN0aWZ5LWNlbnRlciBmbGV4LWxnLWp1c3RpZnktYmV0d2VlbiBwdC02IHBiLTIgbXQtNiBmNiB0ZXh0LWdyYXkgYm9yZGVyLXRvcCBib3JkZXItZ3JheS1saWdodCAiPgorICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGQtZmxleCBmbGV4LXdyYXAgY29sLTEyIGNvbC1sZy01IGZsZXgtanVzdGlmeS1jZW50ZXIgZmxleC1sZy1qdXN0aWZ5LWJldHdlZW4gbWItMiBtYi1sZy0wIj4KKyAgICAgIDxsaSBjbGFzcz0ibXItMyBtci1sZy0wIj4mY29weTsgMjAxOSBHaXRIdWIsIEluYy48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Im1yLTMgbXItbGctMCI+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byB0ZXJtcywgdGV4dDp0ZXJtcyIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NpdGUvdGVybXMiPlRlcm1zPC9hPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0ibXItMyBtci1sZy0wIj48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHByaXZhY3ksIHRleHQ6cHJpdmFjeSIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NpdGUvcHJpdmFjeSI+UHJpdmFjeTwvYT48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Im1yLTMgbXItbGctMCI+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzZWN1cml0eSwgdGV4dDpzZWN1cml0eSIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3NlY3VyaXR5Ij5TZWN1cml0eTwvYT48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Im1yLTMgbXItbGctMCI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWJzdGF0dXMuY29tLyIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzdGF0dXMsIHRleHQ6c3RhdHVzIj5TdGF0dXM8L2E+PC9saT4KKyAgICAgICAgPGxpPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gaGVscCwgdGV4dDpoZWxwIiBocmVmPSJodHRwczovL2hlbHAuZ2l0aHViLmNvbSI+SGVscDwvYT48L2xpPgorICAgIDwvdWw+CisKKyAgICA8YSBhcmlhLWxhYmVsPSJIb21lcGFnZSIgdGl0bGU9IkdpdEh1YiIgY2xhc3M9ImZvb3Rlci1vY3RpY29uIGQtbm9uZSBkLWxnLWJsb2NrIG14LWxnLTQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbSI+CisgICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAwMTYgOGMwLTQuNDItMy41OC04LTgtOHoiLz48L3N2Zz4KKzwvYT4KKyAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGQtZmxleCBmbGV4LXdyYXAgY29sLTEyIGNvbC1sZy01IGZsZXgtanVzdGlmeS1jZW50ZXIgZmxleC1sZy1qdXN0aWZ5LWJldHdlZW4gbWItMiBtYi1sZy0wIj4KKyAgICAgICAgPGxpIGNsYXNzPSJtci0zIG1yLWxnLTAiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gY29udGFjdCwgdGV4dDpjb250YWN0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY29udGFjdCI+Q29udGFjdCBHaXRIdWI8L2E+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJtci0zIG1yLWxnLTAiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wcmljaW5nIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIFByaWNpbmcsIHRleHQ6UHJpY2luZyI+UHJpY2luZzwvYT48L2xpPgorICAgICAgPGxpIGNsYXNzPSJtci0zIG1yLWxnLTAiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYXBpLCB0ZXh0OmFwaSI+QVBJPC9hPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Im1yLTMgbXItbGctMCI+PGEgaHJlZj0iaHR0cHM6Ly90cmFpbmluZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRyYWluaW5nLCB0ZXh0OnRyYWluaW5nIj5UcmFpbmluZzwvYT48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Im1yLTMgbXItbGctMCI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuYmxvZyIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBibG9nLCB0ZXh0OmJsb2ciPkJsb2c8L2E+PC9saT4KKyAgICAgICAgPGxpPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYWJvdXQsIHRleHQ6YWJvdXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hYm91dCI+QWJvdXQ8L2E+PC9saT4KKworICAgIDwvdWw+CisgIDwvZGl2PgorICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWNlbnRlciBwYi02Ij4KKyAgICA8c3BhbiBjbGFzcz0iZjYgdGV4dC1ncmF5LWxpZ2h0Ij48L3NwYW4+CisgIDwvZGl2PgorPC9kaXY+CisKKworCisgIDxkaXYgaWQ9ImFqYXgtZXJyb3ItbWVzc2FnZSIgY2xhc3M9ImFqYXgtZXJyb3ItbWVzc2FnZSBmbGFzaCBmbGFzaC1lcnJvciI+CisgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMDAwIDEuMDAxYy4xOTMuMzEuNTMuNTAxLjg4Ni41MDFoMTMuOTY0Yy4zNjcgMCAuNzA0LS4xOS44NzctLjVhMS4wMyAxLjAzIDAgMDAuMDEtMS4wMDJMOC44OTMgMS41em0uMTMzIDExLjQ5N0g2Ljk4N3YtMi4wMDNoMi4wMzl2Mi4wMDN6bTAtMy4wMDRINi45ODdWNS45ODdoMi4wMzl2NC4wMDZ6Ii8+PC9zdmc+CisgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmbGFzaC1jbG9zZSBqcy1hamF4LWVycm9yLWRpc21pc3MiIGFyaWEtbGFiZWw9IkRpc21pc3MgZXJyb3IiPgorICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CisgICAgPC9idXR0b24+CisgICAgWW91IGNhbuKAmXQgcGVyZm9ybSB0aGF0IGFjdGlvbiBhdCB0aGlzIHRpbWUuCisgIDwvZGl2PgorCisKKyAgICA8c2NyaXB0IGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIGludGVncml0eT0ic2hhNTEyLW1kckJhc1lHK1FqZ1MzOTFQU3lWa1ByMDZpbzNnV3BsQ1ZiUHNjZ3VldE5FSHhJRXQrbVp3Q2VDeFBSOWVNTmZkYTZxTnVpYk5GcUJvNWFrMitPL2hnPT0iIHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9naXRodWIuZ2l0aHViYXNzZXRzLmNvbS9hc3NldHMvY29tcGF0LWJvb3RzdHJhcC05OWRhYzE2YS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiBpbnRlZ3JpdHk9InNoYTUxMi1ReGNJWjVwYTRqOFA1ZUw2RkxRYVUvRkFJZm9kV2t6VjJyZis3T2x5aWlpSU05WmFHM01PRHZnUW1lK0xWRFVQTUJkbWpZWVorc3ZTbEZ1NXlqRmhSdz09IiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20vYXNzZXRzL2ZyYW1ld29ya3MtNDMxNzA4NjcuanMiPjwvc2NyaXB0PgorICAgIAorICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgYXN5bmM9ImFzeW5jIiBpbnRlZ3JpdHk9InNoYTUxMi1wV2IrWEVSWjhCNzRwclc4eVBOZU9NZkZFZk1mbzhEdmJPNGtEQS9EelBrMTB1R2lWWVBDQjUxc1JSd2lzZ0tyUHlmWHRDK0lnYzVrOUJmVXBlcG10UT09IiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20vYXNzZXRzL2dpdGh1Yi1ib290c3RyYXAtYTU2NmZlNWMuanMiPjwvc2NyaXB0PgorICAgIAorICAgIAorICAgIAorICA8ZGl2IGNsYXNzPSJqcy1zdGFsZS1zZXNzaW9uLWZsYXNoIGZsYXNoIGZsYXNoLXdhcm4gZmxhc2gtYmFubmVyIiBoaWRkZW4KKyAgICA+CisgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMDAwIDEuMDAxYy4xOTMuMzEuNTMuNTAxLjg4Ni41MDFoMTMuOTY0Yy4zNjcgMCAuNzA0LS4xOS44NzctLjVhMS4wMyAxLjAzIDAgMDAuMDEtMS4wMDJMOC44OTMgMS41em0uMTMzIDExLjQ5N0g2Ljk4N3YtMi4wMDNoMi4wMzl2Mi4wMDN6bTAtMy4wMDRINi45ODdWNS45ODdoMi4wMzl2NC4wMDZ6Ii8+PC9zdmc+CisgICAgPHNwYW4gY2xhc3M9ImpzLXN0YWxlLXNlc3Npb24tZmxhc2gtc2lnbmVkLWluIiBoaWRkZW4+WW91IHNpZ25lZCBpbiB3aXRoIGFub3RoZXIgdGFiIG9yIHdpbmRvdy4gPGEgaHJlZj0iIj5SZWxvYWQ8L2E+IHRvIHJlZnJlc2ggeW91ciBzZXNzaW9uLjwvc3Bhbj4KKyAgICA8c3BhbiBjbGFzcz0ianMtc3RhbGUtc2Vzc2lvbi1mbGFzaC1zaWduZWQtb3V0IiBoaWRkZW4+WW91IHNpZ25lZCBvdXQgaW4gYW5vdGhlciB0YWIgb3Igd2luZG93LiA8YSBocmVmPSIiPlJlbG9hZDwvYT4gdG8gcmVmcmVzaCB5b3VyIHNlc3Npb24uPC9zcGFuPgorICA8L2Rpdj4KKyAgPHRlbXBsYXRlIGlkPSJzaXRlLWRldGFpbHMtZGlhbG9nIj4KKyAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIGxoLWRlZmF1bHQgdGV4dC1ncmF5LWRhcmsgaHhfcnNtIiBvcGVuPgorICAgIDxzdW1tYXJ5IHJvbGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iQ2xvc2UgZGlhbG9nIj48L3N1bW1hcnk+CisgICAgPGRldGFpbHMtZGlhbG9nIGNsYXNzPSJCb3ggQm94LS1vdmVybGF5IGQtZmxleCBmbGV4LWNvbHVtbiBhbmltLWZhZGUtaW4gZmFzdCBoeF9yc20tZGlhbG9nIGh4X3JzbS1tb2RhbCI+CisgICAgICA8YnV0dG9uIGNsYXNzPSJCb3gtYnRuLW9jdGljb24gbS0wIGJ0bi1vY3RpY29uIHBvc2l0aW9uLWFic29sdXRlIHJpZ2h0LTAgdG9wLTAiIHR5cGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iQ2xvc2UgZGlhbG9nIiBkYXRhLWNsb3NlLWRpYWxvZz4KKyAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CisgICAgICA8L2J1dHRvbj4KKyAgICAgIDxkaXYgY2xhc3M9Im9jdG9jYXQtc3Bpbm5lciBteS02IGpzLWRldGFpbHMtZGlhbG9nLXNwaW5uZXIiPjwvZGl2PgorICAgIDwvZGV0YWlscy1kaWFsb2c+CisgIDwvZGV0YWlscz4KKzwvdGVtcGxhdGU+CisKKyAgPGRpdiBjbGFzcz0iUG9wb3ZlciBqcy1ob3ZlcmNhcmQtY29udGVudCBwb3NpdGlvbi1hYnNvbHV0ZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IG91dGxpbmU6IG5vbmU7IiB0YWJpbmRleD0iMCI+CisgIDxkaXYgY2xhc3M9IlBvcG92ZXItbWVzc2FnZSBQb3BvdmVyLW1lc3NhZ2UtLWJvdHRvbS1sZWZ0IFBvcG92ZXItbWVzc2FnZS0tbGFyZ2UgQm94IGJveC1zaGFkb3ctbGFyZ2UiIHN0eWxlPSJ3aWR0aDozNjBweDsiPgorICA8L2Rpdj4KKzwvZGl2PgorCisgIDxkaXYgYXJpYS1saXZlPSJwb2xpdGUiIGNsYXNzPSJqcy1nbG9iYWwtc2NyZWVuLXJlYWRlci1ub3RpY2Ugc3Itb25seSI+PC9kaXY+CisKKyAgPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2RlYmlhbi9wb29sL21haW4vZC9kYjUuMy9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9kZWJpYW4vcG9vbC9tYWluL2QvZGI1LjMvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWE2ZjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9kZWJpYW4vcG9vbC9tYWluL2QvZGI1LjMvaW5kZXguaHRtbApAQCAtMCwwICsxLDUwOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZGViaWFuL3Bvb2wvbWFpbi9kL2RiNS4zPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2RlYmlhbi9wb29sL21haW4vZC9kYjUuMzwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjQiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZGViaWFuL3Bvb2wvbWFpbi9kLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1kb2NfNS4zLjI4K2Rmc2cxLTAuNV9hbGwuZGViIj5kYjUuMy1kb2NfNS4zLjI4K2Rmc2cxLTAuNV9hbGwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtZG9jXzUuMy4yOCtkZnNnMS0wLjZfYWxsLmRlYiI+ZGI1LjMtZG9jXzUuMy4yOCtkZnNnMS0wLjZfYWxsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLWRvY181LjMuMjgtOStkZWI4dTFfYWxsLmRlYiI+ZGI1LjMtZG9jXzUuMy4yOC05K2RlYjh1MV9hbGwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xOCAyMDoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtZG9jXzUuMy4yOC0xMitkZWI5dTFfYWxsLmRlYiI+ZGI1LjMtZG9jXzUuMy4yOC0xMitkZWI5dTFfYWxsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNzozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwNDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNzozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5kYjUuMy11dGlsXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0wMiAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5kYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViIj5kYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNS5kZWJpYW4udGFyLnh6Ij5kYjUuM181LjMuMjgrZGZzZzEtMC41LmRlYmlhbi50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA4OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuM181LjMuMjgrZGZzZzEtMC41LmRzYyI+ZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNS5kc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA4OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuM181LjMuMjgrZGZzZzEtMC42LmRlYmlhbi50YXIueHoiPmRiNS4zXzUuMy4yOCtkZnNnMS0wLjYuZGViaWFuLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDQ6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zXzUuMy4yOCtkZnNnMS0wLjYuZHNjIj5kYjUuM181LjMuMjgrZGZzZzEtMC42LmRzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDQ6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+My4xSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zXzUuMy4yOCtkZnNnMS5vcmlnLnRhci54eiI+ZGI1LjNfNS4zLjI4K2Rmc2cxLm9yaWcudGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAwMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjNfNS4zLjI4LTkrZGViOHUxLmRlYmlhbi50YXIueHoiPmRiNS4zXzUuMy4yOC05K2RlYjh1MS5kZWJpYW4udGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xOCAyMDoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjNfNS4zLjI4LTkrZGViOHUxLmRzYyI+ZGI1LjNfNS4zLjI4LTkrZGViOHUxLmRzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTggMjA6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+My4ySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zXzUuMy4yOC0xMitkZWI5dTEuZGViaWFuLnRhci54eiI+ZGI1LjNfNS4zLjI4LTEyK2RlYjl1MS5kZWJpYW4udGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yNCAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjNfNS4zLjI4LTEyK2RlYjl1MS5kc2MiPmRiNS4zXzUuMy4yOC0xMitkZWI5dTEuZHNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yNCAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4zLjJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjNfNS4zLjI4Lm9yaWcudGFyLnh6Ij5kYjUuM181LjMuMjgub3JpZy50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTI3IDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcyMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY2OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY5Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NDJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzczSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODAxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjkzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzU5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzIySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjY4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjkySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg0Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgwMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxNks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY5M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NDBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjQzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTAyIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY3Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzgwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzU3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njc2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjkwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzNks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NjhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43OTVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc4Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MDFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjkwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYyOEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NzZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjAwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NTVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU5NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcyM0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjkwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYyOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NzRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjAwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NTVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MjRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjIwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYiI+bGliZGI1LjMrK181LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42OTFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDA0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWIiPmxpYmRiNS4zKytfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViIj5saWJkYjUuMysrXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzQ5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY4N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViIj5saWJkYjUuMysrXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NzRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYiI+bGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTc1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWIiPmxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzUxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYiI+bGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OTNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjAxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjAySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYiI+bGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MThLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjM3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0M008L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NE08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQzTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X2kzODYuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDRNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzRNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwNDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0wMiAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzQzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MDdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY1NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njc3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODIySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzUzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzY5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzk3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NzlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc0M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzA3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY3N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgyMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzgwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc5N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njc5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzI1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjMwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjU5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzQySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NDhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY2MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njc2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzQ4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NzRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzY1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjgySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42OTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NTdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NjJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42ODhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODQwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc5NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxNEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY4OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc1Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcyMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY4OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NDBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43OTZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc4NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42ODhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzM3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDA0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYzN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0wMiAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NjZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc4MUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc1Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY1N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY3MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY4Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjkxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzExSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWdjal81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuMy1qYXZhLWdjal81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwNDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40NTVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYiI+bGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDUwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYiI+bGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41MDNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OTVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40NTNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40NDdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYiI+bGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTE4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQ2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWdjal81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQ3NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWdjal81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDcxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYxMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWdjal81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU3OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY5Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYzNUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwNks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTk2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjAzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzMySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjI0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njk2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjM2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTgxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwM0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjczM0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYyNUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42OTZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTgzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTAyIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYxMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzU0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njk1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTgwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc1OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OTNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwM0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MThLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NDFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YV81LjMuMjgrZGZzZzEtMC41X2FsbC5kZWIiPmxpYmRiNS4zLWphdmFfNS4zLjI4K2Rmc2cxLTAuNV9hbGwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NzVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YV81LjMuMjgrZGZzZzEtMC42X2FsbC5kZWIiPmxpYmRiNS4zLWphdmFfNS4zLjI4K2Rmc2cxLTAuNl9hbGwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NzVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YV81LjMuMjgtOStkZWI4dTFfYWxsLmRlYiI+bGliZGI1LjMtamF2YV81LjMuMjgtOStkZWI4dTFfYWxsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTggMjA6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmFfNS4zLjI4LTEyK2RlYjl1MV9hbGwuZGViIj5saWJkYjUuMy1qYXZhXzUuMy4yOC0xMitkZWI5dTFfYWxsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQ4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NjhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTAxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkyOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjFNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTM4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NjhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTAxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkyOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkzOEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwNDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NjlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTAyIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkwNks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODkxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkxMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45MjlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTM5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk2NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODg1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjczN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzY2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTI4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43OTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg4M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODA4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MzlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc4OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkyN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzk0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODgySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzQySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk1NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODc5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MzNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjczN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzY2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTU4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODQySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgwNEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NTFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45MjdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg1Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44ODVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NzRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkwMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NzNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODQySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgwNEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NTFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45MjdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODg2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45MDBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MjZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDA0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcyN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzU3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODY4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzOEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NDVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzU5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc3M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTIwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NTJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODgwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODcwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzk1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MTFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY1MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTkySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MThLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NzlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYyM0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NDZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYzOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzEySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NDlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU5Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjE4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjI0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzQ2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MzlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwNDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0wMiAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MjdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MDdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU5NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTkxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MTdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NzRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MTJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYyMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MjJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MzlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY1N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTU0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44OTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgwNUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODI2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTIxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NTJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTQxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk1NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODk0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgyNUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTUySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk0Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODUzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTcxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM008L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTQ5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgwOEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODIzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTE1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NDNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTM2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODcxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44ODVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NjdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NThLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41ODNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzMwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU3NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTg0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcwMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU5OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY2N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU1OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC42X2kzODYuZGViIj5saWJkYjUuM181LjMuMjgrZGZzZzEtMC42X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MzBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41ODNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViIj5saWJkYjUuM181LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViIj5saWJkYjUuM181LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MDFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OThLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYiI+bGliZGI1LjNfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjY0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWIiPmxpYmRiNS4zXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDA0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU2MUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuM181LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0wMiAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41ODdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViIj5saWJkYjUuM181LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcyMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU1MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU1Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4MUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuM181LjMuMjgtMTIrZGViOXUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MjVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTcySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViIj5saWJkYjUuM181LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTc5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41ODFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTk0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViIj5saWJkYjUuM181LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjE1SzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNCI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8YWRkcmVzcz5BcGFjaGUgU2VydmVyIGF0IGZ0cC5kZWJpYW4ub3JnIFBvcnQgODA8L2FkZHJlc3M+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9kb3dubG9hZHMvZW5jaGFudC8xLjYuMC9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9kb3dubG9hZHMvZW5jaGFudC8xLjYuMC9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3YmZiMWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2Rvd25sb2Fkcy9lbmNoYW50LzEuNi4wL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZG93bmxvYWRzL2VuY2hhbnQvMS42LjA8L3RpdGxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxoMT5JbmRleCBvZiAvZG93bmxvYWRzL2VuY2hhbnQvMS42LjA8L2gxPgorPHRhYmxlPjx0cj48dGg+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+PHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbRElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2Rvd25sb2Fkcy9lbmNoYW50LyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJNRDVTVU0iPk1ENVNVTTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjAxLUFwci0yMDEwIDIzOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJlbmNoYW50LTEuNi4wLnRhci5neiI+ZW5jaGFudC0xLjYuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wMS1BcHItMjAxMCAyMzowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OTNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzxhZGRyZXNzPkFwYWNoZS8yLjIuMTUgKEZlZG9yYSkgU2VydmVyIGF0IHd3dy5hYmlzb3VyY2UuY29tIFBvcnQgNDQzPC9hZGRyZXNzPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjIuOC9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92Mi44L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVhMDc3ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjIuOC9pbmRleC5odG1sCkBAIC0wLDAgKzEsNzc0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92Mi44PC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YyLjg8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9maWxlcy8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iLSoiPi0qPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNi0wNyAxMjowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIDAgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjAiPkNNYWtlQ2hhbmdlTG9nLTIuOC4wPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjEiPkNNYWtlQ2hhbmdlTG9nLTIuOC4xPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMy0xNyAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjIiPkNNYWtlQ2hhbmdlTG9nLTIuOC4yPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjMiPkNNYWtlQ2hhbmdlTG9nLTIuOC4zPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjQiPkNNYWtlQ2hhbmdlTG9nLTIuOC40PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNiAwOToxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjFLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjUiPkNNYWtlQ2hhbmdlTG9nLTIuOC41PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gODFLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjYiPkNNYWtlQ2hhbmdlTG9nLTIuOC42PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNTozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xMDBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjciPkNNYWtlQ2hhbmdlTG9nLTIuOC43PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNTozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xMTVLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjgiPkNNYWtlQ2hhbmdlTG9nLTIuOC44PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNzo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xNDRLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjkiPkNNYWtlQ2hhbmdlTG9nLTIuOC45PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xNjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjEwIj5DTWFrZUNoYW5nZUxvZy0yLjguMTA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDE1OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjE4NUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJDTWFrZUNoYW5nZUxvZy0yLjguMTAuMSI+Q01ha2VDaGFuZ2VMb2ctMi44LjEwLjE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjE4Nks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJDTWFrZUNoYW5nZUxvZy0yLjguMTAuMiI+Q01ha2VDaGFuZ2VMb2ctMi44LjEwLjI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjE4Nks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJDTWFrZUNoYW5nZUxvZy0yLjguMTEiPkNNYWtlQ2hhbmdlTG9nLTIuOC4xMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTYgMDk6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjE4SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9IkNNYWtlQ2hhbmdlTG9nLTIuOC4xMiI+Q01ha2VDaGFuZ2VMb2ctMi44LjEyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0xMSAwODo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yNDdLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjEyLjEiPkNNYWtlQ2hhbmdlTG9nLTIuOC4xMi4xPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wOCAxNDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yNDhLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VWUzEwRmluZE1ha2UuY21ha2UiPkNNYWtlVlMxMEZpbmRNYWtlLmNtYWtlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNS0yNyAwOTo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4wLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMi0wOCAxMDo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4wLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMi0wOCAxMDo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMC1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAyLTA4IDEwOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjAtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4wLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtSFAtVVgtOTAwMF83ODUuc2giPmNtYWtlLTIuOC4wLUhQLVVYLTkwMDBfNzg1LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtSFAtVVgtOTAwMF83ODUudGFyLloiPmNtYWtlLTIuOC4wLUhQLVVYLTkwMDBfNzg1LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtSFAtVVgtOTAwMF83ODUudGFyLmd6Ij5jbWFrZS0yLjguMC1IUC1VWC05MDAwXzc4NS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4wLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjAtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjAtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4wLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMC1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4wLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjAtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4wLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjAtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1TdW5PUy1zcGFyYy5zaCI+Y21ha2UtMi44LjAtU3VuT1Mtc3BhcmMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1TdW5PUy1zcGFyYy50YXIuWiI+Y21ha2UtMi44LjAtU3VuT1Mtc3BhcmMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1TdW5PUy1zcGFyYy50YXIuZ3oiPmNtYWtlLTIuOC4wLVN1bk9TLXNwYXJjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjAtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC50YXIuWiI+Y21ha2UtMi44LjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC50YXIuZ3oiPmNtYWtlLTIuOC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+My40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLnppcCI+Y21ha2UtMi44LjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMS1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtSFAtVVgtOTAwMF83ODUuc2giPmNtYWtlLTIuOC4xLUhQLVVYLTkwMDBfNzg1LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtSFAtVVgtOTAwMF83ODUudGFyLloiPmNtYWtlLTIuOC4xLUhQLVVYLTkwMDBfNzg1LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtSFAtVVgtOTAwMF83ODUudGFyLmd6Ij5jbWFrZS0yLjguMS1IUC1VWC05MDAwXzc4NS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjEtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMS1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1TdW5PUy1zcGFyYy5zaCI+Y21ha2UtMi44LjEtU3VuT1Mtc3BhcmMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1TdW5PUy1zcGFyYy50YXIuWiI+Y21ha2UtMi44LjEtU3VuT1Mtc3BhcmMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1TdW5PUy1zcGFyYy50YXIuZ3oiPmNtYWtlLTIuOC4xLVN1bk9TLXNwYXJjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS50YXIuWiI+Y21ha2UtMi44LjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS50YXIuZ3oiPmNtYWtlLTIuOC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+My40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLnppcCI+Y21ha2UtMi44LjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4yLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4yLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMi1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItSFAtVVgtOTAwMF83ODUuc2giPmNtYWtlLTIuOC4yLUhQLVVYLTkwMDBfNzg1LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItSFAtVVgtOTAwMF83ODUudGFyLloiPmNtYWtlLTIuOC4yLUhQLVVYLTkwMDBfNzg1LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItSFAtVVgtOTAwMF83ODUudGFyLmd6Ij5jbWFrZS0yLjguMi1IUC1VWC05MDAwXzc4NS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4yLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjItSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjItSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4yLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMi1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4yLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4yLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1TdW5PUy1zcGFyYy5zaCI+Y21ha2UtMi44LjItU3VuT1Mtc3BhcmMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1TdW5PUy1zcGFyYy50YXIuWiI+Y21ha2UtMi44LjItU3VuT1Mtc3BhcmMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1TdW5PUy1zcGFyYy50YXIuZ3oiPmNtYWtlLTIuOC4yLVN1bk9TLXNwYXJjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi50YXIuWiI+Y21ha2UtMi44LjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi50YXIuZ3oiPmNtYWtlLTIuOC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLnppcCI+Y21ha2UtMi44LjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4zLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4zLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMy1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjMtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4zLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMy1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4zLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4zLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMy1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjMtSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMy1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4zLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMy1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4zLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtU3VuT1Mtc3BhcmMuc2giPmNtYWtlLTIuOC4zLVN1bk9TLXNwYXJjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtU3VuT1Mtc3BhcmMudGFyLloiPmNtYWtlLTIuOC4zLVN1bk9TLXNwYXJjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtU3VuT1Mtc3BhcmMudGFyLmd6Ij5jbWFrZS0yLjguMy1TdW5PUy1zcGFyYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4zLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMudGFyLloiPmNtYWtlLTIuOC4zLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMudGFyLmd6Ij5jbWFrZS0yLjguMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy56aXAiPmNtYWtlLTIuOC4zLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguNC1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguNC1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjQtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC40LURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjQtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjQtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguNC1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguNC1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjQtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC40LUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjQtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguNC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjQtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguNC1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LVN1bk9TLXNwYXJjLnNoIj5jbWFrZS0yLjguNC1TdW5PUy1zcGFyYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LVN1bk9TLXNwYXJjLnRhci5aIj5jbWFrZS0yLjguNC1TdW5PUy1zcGFyYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LVN1bk9TLXNwYXJjLnRhci5neiI+Y21ha2UtMi44LjQtU3VuT1Mtc3BhcmMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguNC13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LnRhci5aIj5jbWFrZS0yLjguNC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LnRhci5neiI+Y21ha2UtMi44LjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQuemlwIj5jbWFrZS0yLjguNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS0xLXNyYy50YXIuYnoyIj5jbWFrZS0yLjguNS0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtMS50YXIuYnoyIj5jbWFrZS0yLjguNS0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjUtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjUtQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC41LUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguNS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC41LURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjUtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC41LUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjUtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjUtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC41LUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguNS1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC41LUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjUtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC41LUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjUtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1TdW5PUy1zcGFyYy5zaCI+Y21ha2UtMi44LjUtU3VuT1Mtc3BhcmMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1TdW5PUy1zcGFyYy50YXIuWiI+Y21ha2UtMi44LjUtU3VuT1Mtc3BhcmMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1TdW5PUy1zcGFyYy50YXIuZ3oiPmNtYWtlLTIuOC41LVN1bk9TLXNwYXJjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjUtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC41LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS50YXIuWiI+Y21ha2UtMi44LjUudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS50YXIuZ3oiPmNtYWtlLTIuOC41LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LnppcCI+Y21ha2UtMi44LjUuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMi44LjYtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LTEudGFyLmJ6MiI+Y21ha2UtMi44LjYtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC42LUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC42LUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguNi1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjYtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguNi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC42LURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjYtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjYtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjYtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjYtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguNi1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguNi1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjYtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC42LUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjYtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguNi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjYtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguNi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjYtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC42LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi50YXIuWiI+Y21ha2UtMi44LjYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi50YXIuZ3oiPmNtYWtlLTIuOC42LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LnppcCI+Y21ha2UtMi44LjYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctMS1zcmMudGFyLmJ6MiI+Y21ha2UtMi44LjctMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LTEudGFyLmJ6MiI+Y21ha2UtMi44LjctMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC43LUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMS0wMyAxNjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC43LUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMS0wMyAxNjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguNy1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAxLTAzIDE2OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjctRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguNy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC43LURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjctRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjctRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjctRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjctSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguNy1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguNy1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjctSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC43LUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjctSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguNy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjctTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguNy1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44Ljctd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44Ljctd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC43LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy50YXIuWiI+Y21ha2UtMi44LjcudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy50YXIuZ3oiPmNtYWtlLTIuOC43LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LnppcCI+Y21ha2UtMi44LjcuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC44LUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC44LUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguOC1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjgtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguOC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC44LURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjgtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjgtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjgtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjgtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguOC1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguOC1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjgtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC44LUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjgtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguOC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjgtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguOC1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguOC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4xSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjgtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguOC13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44Ljgtd2luMzIteDg2LnppcCI+Y21ha2UtMi44Ljgtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LnRhci5aIj5jbWFrZS0yLjguOC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LnRhci5neiI+Y21ha2UtMi44LjgudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjguemlwIj5jbWFrZS0yLjguOC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjktQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjktQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC45LUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguOS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC45LURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjktRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguOS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguOS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguOS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguOS1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC45LUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC45LUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguOS1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjktSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguOS1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC45LUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguOS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC45LUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC45LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjFLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguOS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC45LXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguOS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjkudGFyLloiPmNtYWtlLTIuOC45LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjkudGFyLmd6Ij5jbWFrZS0yLjguOS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS56aXAiPmNtYWtlLTIuOC45LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjEwLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTAtQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTAtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTAtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEwLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTAtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEwLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMTAtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjEwLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTAtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMTAtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTAtSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjEwLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4xMC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMC1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTAtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC4xMC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4xSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTAtcmMxLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjEwLXJjMS1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMxLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC1yYzEtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDUzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMC1yYzEtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMC1yYzEtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMxLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMC1yYzEtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjEwLXJjMS1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMS1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEwLXJjMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTAtcmMxLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMxLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEwLXJjMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTAtcmMxLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEudGFyLloiPmNtYWtlLTIuOC4xMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLnppcCI+Y21ha2UtMi44LjEwLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTAtcmMyLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjEwLXJjMi1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMyLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC1yYzItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTAtcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDUzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMC1yYzItSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMC1yYzItSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMyLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMC1yYzItSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjEwLXJjMi1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMi1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEwLXJjMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTAtcmMyLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMyLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEwLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTAtcmMyLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzIudGFyLloiPmNtYWtlLTIuOC4xMC1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLnppcCI+Y21ha2UtMi44LjEwLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTAtcmMzLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjEwLXJjMy1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMzLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC1yYzMtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDUzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMC1yYzMtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMC1yYzMtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMzLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMC1yYzMtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjEwLXJjMy1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMy1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEwLXJjMy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTAtcmMzLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMzLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEwLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTAtcmMzLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMudGFyLloiPmNtYWtlLTIuOC4xMC1yYzMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLnppcCI+Y21ha2UtMi44LjEwLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTAtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTAuMS1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTAuMS1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEwLjEtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC4xLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEwLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTAuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC4xLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMC4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDUzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMC4xLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjEwLjEtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEwLjEtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMC4xLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTAuMS1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMC4xLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEwLjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMC4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEwLjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEwLjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMC4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEwLjEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMC4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS50YXIuWiI+Y21ha2UtMi44LjEwLjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS50YXIuZ3oiPmNtYWtlLTIuOC4xMC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLnppcCI+Y21ha2UtMi44LjEwLjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMC4yLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMC4yLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTAuMi1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEwLjItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTAuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEwLjItRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEwLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEwLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjEwLjItSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTAuMi1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTAuMi1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjEwLjItSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMC4yLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjEwLjItSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTAuMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjEwLjItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTAuMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTAuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjEwLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTAuMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjEwLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLnRhci5aIj5jbWFrZS0yLjguMTAuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLnRhci5neiI+Y21ha2UtMi44LjEwLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjIuemlwIj5jbWFrZS0yLjguMTAuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAudGFyLloiPmNtYWtlLTIuOC4xMC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC50YXIuZ3oiPmNtYWtlLTIuOC4xMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuemlwIj5jbWFrZS0yLjguMTAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTEtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMS1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMS1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjExLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMS1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE1IDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTEtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMS1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMS1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMS1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTEtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE1IDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjExLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE1IDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjExLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE1IDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjExLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjRLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjExLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMS1yYzEtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTEtcmMxLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzEtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjExLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMS1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjExLXJjMS1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjExLXJjMS1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzEtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjExLXJjMS1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTEtcmMxLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMxLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTEtcmMxLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMS1yYzEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTEtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMS1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMS1yYzEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjExLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS50YXIuWiI+Y21ha2UtMi44LjExLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEuemlwIj5jbWFrZS0yLjguMTEtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMS1yYzItQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTEtcmMyLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzItQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjExLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMS1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjExLXJjMi1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjExLXJjMi1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzItSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjExLXJjMi1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTEtcmMyLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMyLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTEtcmMyLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMS1yYzItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTEtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMS1yYzItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMS1yYzItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjExLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi50YXIuWiI+Y21ha2UtMi44LjExLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzIudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzIuemlwIj5jbWFrZS0yLjguMTEtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMS1yYzMtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTEtcmMzLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzMtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjExLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMS1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjExLXJjMy1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjExLXJjMy1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzMtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjExLXJjMy1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTEtcmMzLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMzLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTEtcmMzLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMS1yYzMtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzMtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTEtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMS1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMS1yYzMtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjExLXJjMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy50YXIuWiI+Y21ha2UtMi44LjExLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMuemlwIj5jbWFrZS0yLjguMTEtcmMzLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMS1yYzQtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTEtcmM0LUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzQtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjExLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMS1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmM0LURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjExLXJjNC1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjExLXJjNC1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzQtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjExLXJjNC1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTEtcmM0LUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmM0LUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTEtcmM0LUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMS1yYzQtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzQtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTEtcmM0LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMS1yYzQtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMS1yYzQtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjExLXJjNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC50YXIuWiI+Y21ha2UtMi44LjExLXJjNC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmM0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQuemlwIj5jbWFrZS0yLjguMTEtcmM0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMS4xLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMS4xLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTEuMS1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLjEtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTEuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMS4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLjEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjExLjEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLjEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjExLjEtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTEuMS1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTEuMS1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjExLjEtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMS4xLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjExLjEtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTEuMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjExLjEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTEuMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTEuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjExLjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTEuMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjExLjEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLnRhci5aIj5jbWFrZS0yLjguMTEuMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLnRhci5neiI+Y21ha2UtMi44LjExLjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEuemlwIj5jbWFrZS0yLjguMTEuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjExLjItQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjExLjItQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMS4yLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTEuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMS4yLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTEuMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTEuMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTEuMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMTEuMi1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMS4yLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMS4yLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMTEuMi1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjExLjItSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTEuMi1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4xMS4yLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTEuMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMS4yLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC4xMS4yLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTEuMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMS4yLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTEuMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjIudGFyLloiPmNtYWtlLTIuOC4xMS4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjIudGFyLmd6Ij5jbWFrZS0yLjguMTEuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi56aXAiPmNtYWtlLTIuOC4xMS4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS50YXIuWiI+Y21ha2UtMi44LjExLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLnRhci5neiI+Y21ha2UtMi44LjExLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS56aXAiPmNtYWtlLTIuOC4xMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE1IDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMi1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjEyLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEyLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEyLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEyLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjEyLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMi1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEyLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjEyLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjEyLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMi1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEyLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjEyLXJjMS1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMi1yYzEtQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEyLXJjMS1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTItcmMxLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTItcmMxLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTItcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTItcmMxLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEyLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMTItcmMxLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTItcmMxLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEyLXJjMS1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMTItcmMxLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMi1yYzEtSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzEtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4xMi1yYzEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjEyLXJjMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEyLXJjMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC4xMi1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjEyLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEyLXJjMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTItcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLnRhci5aIj5jbWFrZS0yLjguMTItcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS56aXAiPmNtYWtlLTIuOC4xMi1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjEyLXJjMi1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMi1yYzItQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEyLXJjMi1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTItcmMyLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTItcmMyLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTItcmMyLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTItcmMyLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEyLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTItcmMyLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEyLXJjMi1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMTItcmMyLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMi1yYzItSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzItSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4xMi1yYzItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjEyLXJjMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEyLXJjMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC4xMi1yYzItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjEyLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEyLXJjMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTItcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLnRhci5aIj5jbWFrZS0yLjguMTItcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi56aXAiPmNtYWtlLTIuOC4xMi1yYzIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjEyLXJjMy1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDktMTAgMTU6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzMtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMi1yYzMtQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEyLXJjMy1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTItcmMzLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTItcmMzLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTItcmMzLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTItcmMzLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEyLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDktMTAgMTU6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzMtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEyLXJjMy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTItcmMzLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTItcmMzLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEyLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS43SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTItcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTItcmMzLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMi1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDktMTAgMTU6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzMudGFyLloiPmNtYWtlLTIuOC4xMi1yYzMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLnRhci5neiI+Y21ha2UtMi44LjEyLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLnppcCI+Y21ha2UtMi44LjEyLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTItcmM0LUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjEyLXJjNC1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTItcmM0LUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMi1yYzQtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMi1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMi1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTItcmM0LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEyLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMi1yYzQtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMi1yYzQtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTItcmM0LUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMi1yYzQtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjEyLXJjNC1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjEyLXJjNC1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEyLXJjNC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTItcmM0LUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTItcmM0LUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEyLXJjNC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTItcmM0LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTItcmM0LXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMi1yYzQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQudGFyLloiPmNtYWtlLTIuOC4xMi1yYzQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LnRhci5neiI+Y21ha2UtMi44LjEyLXJjNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LnppcCI+Y21ha2UtMi44LjEyLXJjNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTIuMS1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTIuMS1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEyLjEtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMi4xLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEyLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTIuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMi4xLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMi4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMi4xLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjEyLjEtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEyLjEtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMi4xLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTIuMS1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMi4xLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEyLjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMi4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEyLjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEyLjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMi4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEyLjEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMi4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS50YXIuWiI+Y21ha2UtMi44LjEyLjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS50YXIuZ3oiPmNtYWtlLTIuOC4xMi4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLnppcCI+Y21ha2UtMi44LjEyLjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMi4yLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMi4yLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTIuMi1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEyLjItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTIuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEyLjItRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEyLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEyLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjEyLjItSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTIuMi1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTIuMi1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjEyLjItSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMi4yLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjEyLjItSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTIuMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjEyLjItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTIuMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTIuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjEyLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTIuMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjEyLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLnRhci5aIj5jbWFrZS0yLjguMTIuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLnRhci5neiI+Y21ha2UtMi44LjEyLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjIuemlwIj5jbWFrZS0yLjguMTIuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIudGFyLloiPmNtYWtlLTIuOC4xMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi50YXIuZ3oiPmNtYWtlLTIuOC4xMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuemlwIj5jbWFrZS0yLjguMTIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjAvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMC9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1ODNkY2QKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjAvaW5kZXguaHRtbApAQCAtMCwwICsxLDIwOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZmlsZXMvdjMuMDwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My4wPC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMC4wLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC0xLnRhci5iejIiPmNtYWtlLTMuMC4wLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMTAgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMC1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMTAgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4wLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjAtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMC1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0xMCAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0xMCAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4wLjAtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMTAgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMC4wLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4wLjAtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4wLjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMC4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjAuMC1yYzEtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS0xLnRhci5iejIiPmNtYWtlLTMuMC4wLXJjMS0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtQUlYLXBvd2VycGMuc2giPmNtYWtlLTMuMC4wLXJjMS1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMy4wLjAtcmMxLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMy4wLjAtcmMxLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4wLjAtcmMxLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4wLjAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLUlSSVg2NC02NC5zaCI+Y21ha2UtMy4wLjAtcmMxLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1JUklYNjQtNjQudGFyLloiPmNtYWtlLTMuMC4wLXJjMS1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMy4wLjAtcmMxLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMy4wLjAtcmMxLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMy4wLjAtcmMxLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMS1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjAuMC1yYzEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjAuMC1yYzEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4wLjAtcmMxLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjAuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjAuMC1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4wLjAtcmMxLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4wLjAtcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEudGFyLloiPmNtYWtlLTMuMC4wLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEuemlwIj5jbWFrZS0zLjAuMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMC4wLXJjMi0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLTEudGFyLmJ6MiI+Y21ha2UtMy4wLjAtcmMyLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMy4wLjAtcmMyLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0zLjAuMC1yYzItQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzItQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMC1yYzItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4wLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjAtcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItSVJJWDY0LTY0LnNoIj5jbWFrZS0zLjAuMC1yYzItSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMy4wLjAtcmMyLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzItSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1JUklYNjQtbjMyLnNoIj5jbWFrZS0zLjAuMC1yYzItSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0zLjAuMC1yYzItSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMy4wLjAtcmMyLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMC4wLXJjMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMC4wLXJjMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuMC4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMC4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjAuMC1yYzItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjAuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi50YXIuWiI+Y21ha2UtMy4wLjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLnRhci5neiI+Y21ha2UtMy4wLjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi56aXAiPmNtYWtlLTMuMC4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4wLjAtcmMzLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEzOjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtMS50YXIuYnoyIj5jbWFrZS0zLjAuMC1yYzMtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMzowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0zLjAuMC1yYzMtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEzOjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTMuMC4wLXJjMy1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTM6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMy1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEzOjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTM6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTM6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjAtcmMzLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMzowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTI6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTI6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1JUklYNjQtNjQuc2giPmNtYWtlLTMuMC4wLXJjMy1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEyOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0zLjAuMC1yYzMtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMy1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLUlSSVg2NC1uMzIuc2giPmNtYWtlLTMuMC4wLXJjMy1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTMuMC4wLXJjMy1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzMtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEyOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMC4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS45SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMC4wLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjAuMC1yYzMtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTI6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjAuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTI6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy50YXIuWiI+Y21ha2UtMy4wLjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLnRhci5neiI+Y21ha2UtMy4wLjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTI6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy56aXAiPmNtYWtlLTMuMC4wLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEyOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4wLjAtcmM0LTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtMS50YXIuYnoyIj5jbWFrZS0zLjAuMC1yYzQtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0zLjAuMC1yYzQtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTMuMC4wLXJjNC1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjNC1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjAtcmM0LURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjAtcmM0LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1JUklYNjQtNjQuc2giPmNtYWtlLTMuMC4wLXJjNC1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0zLjAuMC1yYzQtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjNC1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LUlSSVg2NC1uMzIuc2giPmNtYWtlLTMuMC4wLXJjNC1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTMuMC4wLXJjNC1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzQtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4wLjAtcmM0LUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4wLjAtcmM0LUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjNC1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4wLjAtcmM0LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4wLjAtcmM0LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMC4wLXJjNC13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMC4wLXJjNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LnRhci5aIj5jbWFrZS0zLjAuMC1yYzQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LnppcCI+Y21ha2UtMy4wLjAtcmM0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjAuMC1yYzUtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS0xLnRhci5iejIiPmNtYWtlLTMuMC4wLXJjNS0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTEzIDE0OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjNS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1yYzUtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjAtcmM1LURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0xMyAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM1LURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjNS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0xMyAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM1LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjAtcmM1LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzUtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjAuMC1yYzUtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjAuMC1yYzUtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4wLjAtcmM1LUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0xMyAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM1LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjAuMC1yYzUtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjAuMC1yYzUtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4wLjAtcmM1LXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTEzIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUtd2luMzIteDg2LnppcCI+Y21ha2UtMy4wLjAtcmM1LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTEzIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUudGFyLloiPmNtYWtlLTMuMC4wLXJjNS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTEzIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUuemlwIj5jbWFrZS0zLjAuMC1yYzUuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0xMyAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMC4wLXJjNi0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LTEudGFyLmJ6MiI+Y21ha2UtMy4wLjAtcmM2LTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMjIgMTQ6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4wLjAtcmM2LURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4wLXJjNi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzYtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTIyIDE0OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzYtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4wLjAtcmM2LURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTIyIDE0OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzYtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1yYzYtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjNi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMC4wLXJjNi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMC4wLXJjNi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzYtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTIyIDE0OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzYtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMC4wLXJjNi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMC4wLXJjNi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjAuMC1yYzYtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMjIgMTQ6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjAuMC1yYzYtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMjIgMTQ6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi50YXIuWiI+Y21ha2UtMy4wLjAtcmM2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LnRhci5neiI+Y21ha2UtMy4wLjAtcmM2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMjIgMTQ6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi56aXAiPmNtYWtlLTMuMC4wLXJjNi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTIyIDE0OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMC4wLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjAuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0xMCAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAudGFyLloiPmNtYWtlLTMuMC4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0xMCAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAudGFyLmd6Ij5jbWFrZS0zLjAuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC56aXAiPmNtYWtlLTMuMC4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMTAgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4xLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMC4xLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS0xLnRhci5iejIiPmNtYWtlLTMuMC4xLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMDk6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4xLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMDk6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4xLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4xLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAwOToxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAwOToxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4wLjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMDk6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMC4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4wLjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4wLjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMC4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4wLjEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMDk6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMC4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS50YXIuWiI+Y21ha2UtMy4wLjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS50YXIuZ3oiPmNtYWtlLTMuMC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMDk6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4xLnppcCI+Y21ha2UtMy4wLjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAwOToxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjItMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4wLjItMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLTEudGFyLmJ6MiI+Y21ha2UtMy4wLjItMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjItRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4yLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjItRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjItRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4yLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMC4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDEyOjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjAuMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAxMjoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4wLjItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjAuMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjAuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4wLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjAuMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAxMjoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjItd2luMzIteDg2LnppcCI+Y21ha2UtMy4wLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLnRhci5aIj5jbWFrZS0zLjAuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLnRhci5neiI+Y21ha2UtMy4wLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAxMjoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjIuemlwIj5jbWFrZS0zLjAuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDEyOjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMS9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM1ZDM0YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMS9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTU2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92My4xPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjE8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9maWxlcy8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4xLjAtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLTEudGFyLmJ6MiI+Y21ha2UtMy4xLjAtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xNyAxMzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMS4wLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xNyAxMzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4xLjAtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjEuMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMS4wLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMS4wLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMS4wLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1EYXJ3aW42NC5kbWciPmNtYWtlLTMuMS4wLURhcndpbjY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTkgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLURhcndpbjY0LnRhci5aIj5jbWFrZS0zLjEuMC1EYXJ3aW42NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTkgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLURhcndpbjY0LnRhci5neiI+Y21ha2UtMy4xLjAtRGFyd2luNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xOSAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4xLjAtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMS4wLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4xLjAtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMS4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4xLjAtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xNyAxMzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xLjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEuMC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS45SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xLjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMS4wLXJjMS0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLTEudGFyLmJ6MiI+Y21ha2UtMy4xLjAtcmMxLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjggMTQ6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4xLjAtcmMxLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMS4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjEuMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEwLTI4IDE0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4xLjAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEwLTI4IDE0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjEuMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMS4wLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMS4wLXJjMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMS4wLXJjMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjEuMC1yYzEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEwLTI4IDE0OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMS4wLXJjMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMS4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjEuMC1yYzEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjggMTQ6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEuMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjggMTQ6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS50YXIuWiI+Y21ha2UtMy4xLjAtcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLnRhci5neiI+Y21ha2UtMy4xLjAtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjggMTQ6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS56aXAiPmNtYWtlLTMuMS4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEwLTI4IDE0OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4xLjAtcmMyLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItMS50YXIuYnoyIj5jbWFrZS0zLjEuMC1yYzItMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMyAxMTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjEuMC1yYzItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4xLjAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMS4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMTMgMTE6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjEuMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMTMgMTE6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMS4wLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4xLjAtcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4xLjAtcmMyLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4xLjAtcmMyLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMS4wLXJjMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMTMgMTE6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xLjAtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjRLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xLjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMS4wLXJjMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMyAxMTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMS4wLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMyAxMTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLnRhci5aIj5jbWFrZS0zLjEuMC1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjEuMC1yYzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMyAxMTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLnppcCI+Y21ha2UtMy4xLjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMTMgMTE6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjEuMC1yYzMtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy0xLnRhci5iejIiPmNtYWtlLTMuMS4wLXJjMy0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMS4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjEuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4xLjAtcmMzLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAxNjo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMS4wLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAxNjo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4xLjAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjEuMC1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjEuMC1yYzMtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjEuMC1yYzMtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4xLjAtcmMzLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAxNjo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMzLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xLjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMS4wLXJjMy1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xLjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMS4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMS4wLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjEuMC1yYzMtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy50YXIuWiI+Y21ha2UtMy4xLjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAxNjo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMzLnRhci5neiI+Y21ha2UtMy4xLjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy56aXAiPmNtYWtlLTMuMS4wLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMS4wLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xNyAxMzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAudGFyLloiPmNtYWtlLTMuMS4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xNyAxMzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAudGFyLmd6Ij5jbWFrZS0zLjEuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC56aXAiPmNtYWtlLTMuMS4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMS4xLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS0xLnRhci5iejIiPmNtYWtlLTMuMS4xLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjEuMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMS4xLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4xLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xLjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjEuMS1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMS4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4xLjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMS4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4xLjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMS4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4xLjEtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xLjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xLjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjEuMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xLjEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLnRhci5aIj5jbWFrZS0zLjEuMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLnRhci5neiI+Y21ha2UtMy4xLjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEuemlwIj5jbWFrZS0zLjEuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4xLjItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjEuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMS4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMS4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy4xLjItRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDUgMTA6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEuMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDUgMTA6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4yLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMS4yLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjEuMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMS4yLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEuMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMS4yLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDUgMTA6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMS4yLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xLjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMS4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4xLjItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDUgMTA6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMS4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi50YXIuWiI+Y21ha2UtMy4xLjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi50YXIuZ3oiPmNtYWtlLTMuMS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDUgMTA6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4yLnppcCI+Y21ha2UtMy4xLjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4xLjMtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLTEudGFyLmJ6MiI+Y21ha2UtMy4xLjMtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMS4zLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4xLjMtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjEuMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEuMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuMS4zLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xLjMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjEuMy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4xLjMtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjEuMy1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xLjMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjEuMy1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEuMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMS4zLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEuMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMS4zLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEuMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMudGFyLloiPmNtYWtlLTMuMS4zLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMudGFyLmd6Ij5jbWFrZS0zLjEuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy56aXAiPmNtYWtlLTMuMS4zLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMC9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMC9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNjU0YTMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjEwL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxMzEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjEwPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjEwPC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMC4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEwLjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEwLjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEwLjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMC4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDUgMTU6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMC4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDUgMTU6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTAuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMC4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTAuMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDUgMTU6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMC4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNSAxNTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjEwLjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTAuMC1yYzEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDUgMTU6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzEudGFyLloiPmNtYWtlLTMuMTAuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLnRhci5neiI+Y21ha2UtMy4xMC4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLnppcCI+Y21ha2UtMy4xMC4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEwLjAtcmMyLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxMjowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEwLjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxMjowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMC4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEwLjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMC4wLXJjMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxMjowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEwLjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTEyIDEyOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMyLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTAuMC1yYzItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzItd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMC4wLXJjMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxMjowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMi50YXIuWiI+Y21ha2UtMy4xMC4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjEwLjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzIuemlwIj5jbWFrZS0zLjEwLjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTAuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTE5IDEzOjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTAuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTE5IDEzOjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEwLjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTAuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEwLjAtcmMzLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTE5IDEzOjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTAuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTkgMTM6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMC4wLXJjMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjEwLjAtcmMzLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTE5IDEzOjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMzLnRhci5aIj5jbWFrZS0zLjEwLjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuMTAuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy56aXAiPmNtYWtlLTMuMTAuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMC4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDEgMTU6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMC4wLXJjNC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMC1yYzQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDEgMTU6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTAuMC1yYzQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMC4wLXJjNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTAuMC1yYzQtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDEgMTU6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzQtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMC4wLXJjNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMSAxNTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNC13aW42NC14NjQubXNpIj5jbWFrZS0zLjEwLjAtcmM0LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTAuMC1yYzQtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDEgMTU6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzQudGFyLloiPmNtYWtlLTMuMTAuMC1yYzQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LnRhci5neiI+Y21ha2UtMy4xMC4wLXJjNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LnppcCI+Y21ha2UtMy4xMC4wLXJjNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM1LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEwLjAtcmM1LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4wLXJjNS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEwLjAtcmM1LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4wLXJjNS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMC4wLXJjNS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEwLjAtcmM1LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMC4wLXJjNS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEwLjAtcmM1LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM1LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTAuMC1yYzUtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMC4wLXJjNS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNS50YXIuWiI+Y21ha2UtMy4xMC4wLXJjNS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUudGFyLmd6Ij5jbWFrZS0zLjEwLjAtcmM1LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUuemlwIj5jbWFrZS0zLjEwLjAtcmM1LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEwLjAtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEwLjAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC13aW42NC14NjQubXNpIj5jbWFrZS0zLjEwLjAtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC13aW42NC14NjQuemlwIj5jbWFrZS0zLjEwLjAtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC50YXIuWiI+Y21ha2UtMy4xMC4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLnRhci5neiI+Y21ha2UtMy4xMC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC56aXAiPmNtYWtlLTMuMTAuMC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTAuMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0xNCAwOToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4xLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMC4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMC4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0xNCAwOToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMC4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEwLjEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEwLjEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjEwLjEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjEwLjEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS50YXIuWiI+Y21ha2UtMy4xMC4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0xNCAwOTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4xLnRhci5neiI+Y21ha2UtMy4xMC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS56aXAiPmNtYWtlLTMuMTAuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTE0IDA5OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTAuMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMS0xOCAxMjowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4yLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMC4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMC4yLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMS0xOCAxMjowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMC4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEwLjItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEwLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjEwLjItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjEwLjItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi50YXIuWiI+Y21ha2UtMy4xMC4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMS0xOCAxMjowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4yLnRhci5neiI+Y21ha2UtMy4xMC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi56aXAiPmNtYWtlLTMuMTAuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAxLTE4IDEyOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTAuMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4zLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xNiAwOTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4zLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMC4zLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMC4zLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xNiAwOTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4zLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMC4zLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEwLjMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEwLjMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjEwLjMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjEwLjMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy50YXIuWiI+Y21ha2UtMy4xMC4zLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xNiAwOTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4zLnRhci5neiI+Y21ha2UtMy4xMC4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy56aXAiPmNtYWtlLTMuMTAuMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE2IDA5OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTEvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTEvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjlkNzQyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMS9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTMxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92My4xMTwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My4xMTwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2ZpbGVzLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTEuMC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMS4wLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMS4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMS4wLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMS4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTEuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTE1IDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTEuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTE1IDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjExLjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTEuMC1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjExLjAtcmMxLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTE1IDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMTUgMTE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMS4wLXJjMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjExLjAtcmMxLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTE1IDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMxLnRhci5aIj5jbWFrZS0zLjExLjAtcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuMTEuMC1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS56aXAiPmNtYWtlLTMuMTEuMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMS4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjcgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTEuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMS4wLXJjMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTEuMC1yYzItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjcgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTEuMC1yYzItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMS4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTEuMC1yYzItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjcgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMS4wLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0yNyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjExLjAtcmMyLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTEuMC1yYzItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjcgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzIudGFyLloiPmNtYWtlLTMuMTEuMC1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLnRhci5neiI+Y21ha2UtMy4xMS4wLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLnppcCI+Y21ha2UtMy4xMS4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMzLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjExLjAtcmMzLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0wOSAxMzo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMS4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjExLjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMS4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0wOSAxMzo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMS4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjExLjAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMS4wLXJjMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0wOSAxMzo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjExLjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTA5IDEzOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMzLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTEuMC1yYzMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMS4wLXJjMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0wOSAxMzo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMy50YXIuWiI+Y21ha2UtMy4xMS4wLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMudGFyLmd6Ij5jbWFrZS0zLjExLjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMuemlwIj5jbWFrZS0zLjExLjAtcmMzLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTEuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE5IDExOjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmM0LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjAtcmM0LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTEuMC1yYzQtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE5IDExOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmM0LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjExLjAtcmM0LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTEuMC1yYzQtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjExLjAtcmM0LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE5IDExOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmM0LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuMC1yYzQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTkgMTE6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzQtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMS4wLXJjNC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC13aW42NC14NjQuemlwIj5jbWFrZS0zLjExLjAtcmM0LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE5IDExOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmM0LnRhci5aIj5jbWFrZS0zLjExLjAtcmM0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC50YXIuZ3oiPmNtYWtlLTMuMTEuMC1yYzQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC56aXAiPmNtYWtlLTMuMTEuMC1yYzQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTEuMC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTEuMC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTEuMC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLnRhci5aIj5jbWFrZS0zLjExLjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTI4IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAudGFyLmd6Ij5jbWFrZS0zLjExLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLnppcCI+Y21ha2UtMy4xMS4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMS4xLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTE3IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjExLjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTEuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjExLjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTE3IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjExLjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTEuMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTEuMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTEuMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLnRhci5aIj5jbWFrZS0zLjExLjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTE3IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjEudGFyLmd6Ij5jbWFrZS0zLjExLjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLnppcCI+Y21ha2UtMy4xMS4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTcgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMS4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTE3IDEyOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjExLjItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTEuMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjExLjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTE3IDEyOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjExLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTEuMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTEuMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTEuMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLnRhci5aIj5jbWFrZS0zLjExLjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTE3IDEyOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjIudGFyLmd6Ij5jbWFrZS0zLjExLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLnppcCI+Y21ha2UtMy4xMS4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTcgMTI6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMS4zLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTMxIDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjExLjMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTEuMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjExLjMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTMxIDE1OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjExLjMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTEuMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTEuMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTEuMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLnRhci5aIj5jbWFrZS0zLjExLjMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTMxIDE1OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjMudGFyLmd6Ij5jbWFrZS0zLjExLjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLnppcCI+Y21ha2UtMy4xMS4zLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMzEgMTU6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMS40LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDEzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjQtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjExLjQtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTEuNC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjExLjQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDEzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjQtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjExLjQtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTEuNC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTEuNC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTEuNC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LnRhci5aIj5jbWFrZS0zLjExLjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDEzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjQudGFyLmd6Ij5jbWFrZS0zLjExLjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LnppcCI+Y21ha2UtMy4xMS40LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTM6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMi9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMi9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NzdlN2UKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjEyL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxMTggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjEyPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjEyPC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMi4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE3IDA5OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEyLjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEyLjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE3IDA5OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEyLjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMi4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTU6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMi4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTU6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTIuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMi4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTIuMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTU6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMi4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxNTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjEyLjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTIuMC1yYzEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTU6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzEudGFyLloiPmNtYWtlLTMuMTIuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLnRhci5neiI+Y21ha2UtMy4xMi4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLnppcCI+Y21ha2UtMy4xMi4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEyLjAtcmMyLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0yOSAxMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMi4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEyLjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMi4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0yOSAxMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMi4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEyLjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMi4wLXJjMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0yOSAxMzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEyLjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTI5IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMyLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTIuMC1yYzItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzItd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMi4wLXJjMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0yOSAxMzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMi50YXIuWiI+Y21ha2UtMy4xMi4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjEyLjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzIuemlwIj5jbWFrZS0zLjEyLjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTIuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTA5IDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTIuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTA5IDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEyLjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTIuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEyLjAtcmMzLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTA5IDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTIuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMDkgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMi4wLXJjMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjEyLjAtcmMzLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTA5IDExOjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMzLnRhci5aIj5jbWFrZS0zLjEyLjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuMTIuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy56aXAiPmNtYWtlLTMuMTIuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTIuMC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTIuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTIuMC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTIuMC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLnRhci5aIj5jbWFrZS0zLjEyLjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE3IDA5OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAudGFyLmd6Ij5jbWFrZS0zLjEyLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLnppcCI+Y21ha2UtMy4xMi4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTcgMDk6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMi4xLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA4LTA5IDExOjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEyLjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEyLjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA4LTA5IDExOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEyLjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTIuMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTIuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTIuMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTIuMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLnRhci5aIj5jbWFrZS0zLjEyLjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA4LTA5IDExOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjEudGFyLmd6Ij5jbWFrZS0zLjEyLjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLnppcCI+Y21ha2UtMy4xMi4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDgtMDkgMTE6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMi4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA5LTA3IDEyOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEyLjItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEyLjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA5LTA3IDEyOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEyLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTIuMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTIuMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTIuMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTIuMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLnRhci5aIj5jbWFrZS0zLjEyLjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA5LTA3IDEyOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjIudGFyLmd6Ij5jbWFrZS0zLjEyLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLnppcCI+Y21ha2UtMy4xMi4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDktMDcgMTI6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMi4zLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTAzIDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEyLjMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEyLjMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTAzIDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEyLjMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTIuMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTIuMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTIuMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTIuMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLnRhci5aIj5jbWFrZS0zLjEyLjMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTAzIDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjMudGFyLmd6Ij5jbWFrZS0zLjEyLjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLnppcCI+Y21ha2UtMy4xMi4zLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDMgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMi40LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTAyIDEzOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjQtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEyLjQtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuNC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEyLjQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTAyIDEzOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjQtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEyLjQtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTIuNC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTIuNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTIuNC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTIuNC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LnRhci5aIj5jbWFrZS0zLjEyLjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTAyIDEzOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjQudGFyLmd6Ij5jbWFrZS0zLjEyLjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LnppcCI+Y21ha2UtMy4xMi40LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDIgMTM6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMy9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMy9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1MGE3OTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjEzL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxMzEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjEzPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjEzPC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTIwIDE0OjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTIwIDE0OjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDkgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMy4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDkgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTMuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMy4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDkgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMy4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wOSAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjEzLjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuMC1yYzEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDkgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzEudGFyLloiPmNtYWtlLTMuMTMuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLnRhci5neiI+Y21ha2UtMy4xMy4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLnppcCI+Y21ha2UtMy4xMy4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEzLjAtcmMyLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0yNSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMy4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMy4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0yNSAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMy4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMy4wLXJjMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0yNSAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEzLjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTI1IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMyLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuMC1yYzItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzItd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMy4wLXJjMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0yNSAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMi50YXIuWiI+Y21ha2UtMy4xMy4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjEzLjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzIuemlwIj5jbWFrZS0zLjEzLjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTMuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTA3IDEyOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTMuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTA3IDEyOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTMuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEzLjAtcmMzLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTA3IDEyOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDcgMTI6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMy4wLXJjMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjEzLjAtcmMzLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTA3IDEyOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMzLnRhci5aIj5jbWFrZS0zLjEzLjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuMTMuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy56aXAiPmNtYWtlLTMuMTMuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuMC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuMC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuMC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLnRhci5aIj5jbWFrZS0zLjEzLjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTIwIDE0OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAudGFyLmd6Ij5jbWFrZS0zLjEzLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLnppcCI+Y21ha2UtMy4xMy4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjAgMTQ6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy4xLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTI4IDA4OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTI4IDA4OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLnRhci5aIj5jbWFrZS0zLjEzLjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTI4IDA4OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjEudGFyLmd6Ij5jbWFrZS0zLjEzLjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLnppcCI+Y21ha2UtMy4xMy4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjggMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEyLTEzIDA4OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEyLTEzIDA4OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLnRhci5aIj5jbWFrZS0zLjEzLjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEyLTEzIDA4OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjIudGFyLmd6Ij5jbWFrZS0zLjEzLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLnppcCI+Y21ha2UtMy4xMy4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTItMTMgMDg6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy4zLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAxLTE0IDA5OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAxLTE0IDA5OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLnRhci5aIj5jbWFrZS0zLjEzLjMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAxLTE0IDA5OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjMudGFyLmd6Ij5jbWFrZS0zLjEzLjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLnppcCI+Y21ha2UtMy4xMy4zLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDEtMTQgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy40LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTAxIDEzOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjQtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjQtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuNC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTAxIDEzOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjQtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjQtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuNC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuNC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuNC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LnRhci5aIj5jbWFrZS0zLjEzLjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTAxIDEzOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjQudGFyLmd6Ij5jbWFrZS0zLjEzLjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LnppcCI+Y21ha2UtMy4xMy40LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDEgMTM6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy41LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjUtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEyOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjUtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjUtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuNS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjUtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEyOjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjUtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjUtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuNS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuNS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuNS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuNS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LnRhci5aIj5jbWFrZS0zLjEzLjUudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEyOjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjUudGFyLmd6Ij5jbWFrZS0zLjEzLjUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LnppcCI+Y21ha2UtMy4xMy41LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTI6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xNC9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xNC9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlYzljMTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjE0L2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxNzAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjE0PC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjE0PC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNC4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xNCAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE0LjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTE0IDExOjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE0LjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xNCAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xNCAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE0LjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTIyIDExOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE0LjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0yMiAxMTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNC4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDcgMTA6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNC4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDcgMTA6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNC4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTQuMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDcgMTA6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wNyAxMDozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjE0LjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTQuMC1yYzEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDcgMTA6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzEudGFyLloiPmNtYWtlLTMuMTQuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLnRhci5neiI+Y21ha2UtMy4xNC4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLnppcCI+Y21ha2UtMy4xNC4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjAtcmMyLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0xNSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE0LjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0xNSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNC4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE0LjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC4wLXJjMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0xNSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE0LjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTE1IDEwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMyLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTQuMC1yYzItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzItd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC4wLXJjMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0xNSAxMDowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMi50YXIuWiI+Y21ha2UtMy4xNC4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjE0LjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzIuemlwIj5jbWFrZS0zLjE0LjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTQuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTAxIDExOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE0LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE0LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTAxIDExOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE0LjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE0LjAtcmMzLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTAxIDExOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTQuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDEgMTE6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC4wLXJjMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjE0LjAtcmMzLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTAxIDExOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMzLnRhci5aIj5jbWFrZS0zLjE0LjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuMTQuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy56aXAiPmNtYWtlLTMuMTQuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNC4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDggMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNC4wLXJjNC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMC1yYzQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDggMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuMC1yYzQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNC4wLXJjNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTQuMC1yYzQtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDggMTE6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzQtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC4wLXJjNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wOCAxMTowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjNC13aW42NC14NjQubXNpIj5jbWFrZS0zLjE0LjAtcmM0LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTQuMC1yYzQtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDggMTE6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzQudGFyLloiPmNtYWtlLTMuMTQuMC1yYzQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LnRhci5neiI+Y21ha2UtMy4xNC4wLXJjNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LnppcCI+Y21ha2UtMy4xNC4wLXJjNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC4wLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTE0IDExOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTE0IDExOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC4wLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTIyIDExOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC4wLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTIyIDExOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAudGFyLloiPmNtYWtlLTMuMTQuMC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTQgMTE6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC50YXIuZ3oiPmNtYWtlLTMuMTQuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTE0IDExOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAuemlwIj5jbWFrZS0zLjE0LjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xNCAxMTozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4xLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMjkgMTI6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC4xLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMjkgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC4xLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC4xLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC4xLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEudGFyLloiPmNtYWtlLTMuMTQuMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMjkgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMS50YXIuZ3oiPmNtYWtlLTMuMTQuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEuemlwIj5jbWFrZS0zLjE0LjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0yOSAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4yLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDQtMTIgMTA6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC4yLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDQtMTIgMTA6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC4yLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC4yLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC4yLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjIudGFyLloiPmNtYWtlLTMuMTQuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDQtMTIgMTA6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMi50YXIuZ3oiPmNtYWtlLTMuMTQuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjIuemlwIj5jbWFrZS0zLjE0LjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0xMiAxMDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4zLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDQtMjIgMTA6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC4zLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDQtMjIgMTA6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC4zLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC4zLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC4zLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC4zLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMudGFyLloiPmNtYWtlLTMuMTQuMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDQtMjIgMTA6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMy50YXIuZ3oiPmNtYWtlLTMuMTQuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMuemlwIj5jbWFrZS0zLjE0LjMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0yMiAxMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC40LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjQtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDE0OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuNC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTQ6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuNC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDE0OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC40LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuNC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC40LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC40LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC40LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC40LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQudGFyLloiPmNtYWtlLTMuMTQuNC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNC50YXIuZ3oiPmNtYWtlLTMuMTQuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQuemlwIj5jbWFrZS0zLjE0LjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC41LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjUtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuNS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMzEgMTI6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuNS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC41LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuNS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMzEgMTI6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuNS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC41LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC41LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC41LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC41LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUudGFyLloiPmNtYWtlLTMuMTQuNS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMzEgMTI6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNS50YXIuZ3oiPmNtYWtlLTMuMTQuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUuemlwIj5jbWFrZS0zLjE0LjUuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0zMSAxMjo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC42LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjYtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuNi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTYgMDk6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuNi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC42LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuNi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTYgMDk6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuNi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC42LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC42LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC42LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC42LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYudGFyLloiPmNtYWtlLTMuMTQuNi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTYgMDk6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNi50YXIuZ3oiPmNtYWtlLTMuMTQuNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYuemlwIj5jbWFrZS0zLjE0LjYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xNiAwOTozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC43LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjctRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjctRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuNy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuNy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjctTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC43LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjctU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuNy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuNy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0Ljctd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC43LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0Ljctd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC43LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0Ljctd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC43LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0Ljctd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC43LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjcudGFyLloiPmNtYWtlLTMuMTQuNy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNy50YXIuZ3oiPmNtYWtlLTMuMTQuNy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjcuemlwIj5jbWFrZS0zLjE0LjcuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjE1L2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjE1L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI3MjY3NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTUvaW5kZXguaHRtbApAQCAtMCwwICsxLDE1NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZmlsZXMvdjMuMTU8L3RpdGxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxoMT5JbmRleCBvZiAvZmlsZXMvdjMuMTU8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9maWxlcy8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE1LjAtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTUuMC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTUuMC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4wLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTUuMC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTUuMC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMxLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE1LjAtcmMxLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0wNCAxNDoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE1LjAtcmMxLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0wNCAxNDoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS4wLXJjMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE1LjAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNS4wLXJjMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0wNCAxNDoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjAtcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTA0IDE0OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMxLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTUuMC1yYzEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNS4wLXJjMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0wNCAxNDoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMS50YXIuWiI+Y21ha2UtMy4xNS4wLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEudGFyLmd6Ij5jbWFrZS0zLjE1LjAtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEuemlwIj5jbWFrZS0zLjE1LjAtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTE5IDEwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTUuMC1yYzItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTE5IDEwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMyLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE1LjAtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTUuMC1yYzItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjAtcmMyLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTE5IDEwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTUuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMTkgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNS4wLXJjMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjAtcmMyLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTE5IDEwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMyLnRhci5aIj5jbWFrZS0zLjE1LjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi50YXIuZ3oiPmNtYWtlLTMuMTUuMC1yYzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi56aXAiPmNtYWtlLTMuMTUuMC1yYzIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNS4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMjcgMTE6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTUuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS4wLXJjMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTUuMC1yYzMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMjcgMTE6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTUuMC1yYzMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS4wLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTUuMC1yYzMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMjcgMTE6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzMtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNS4wLXJjMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0yNyAxMTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjAtcmMzLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTUuMC1yYzMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMjcgMTE6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzMudGFyLloiPmNtYWtlLTMuMTUuMC1yYzMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLnRhci5neiI+Y21ha2UtMy4xNS4wLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLnppcCI+Y21ha2UtMy4xNS4wLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmM0LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE1LjAtcmM0LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xMCAxNTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE1LjAtcmM0LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4wLXJjNC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xMCAxNTowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS4wLXJjNC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE1LjAtcmM0LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNS4wLXJjNC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xMCAxNTowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjNC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjAtcmM0LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTEwIDE1OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmM0LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTUuMC1yYzQtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNS4wLXJjNC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xMCAxNTowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjNC50YXIuWiI+Y21ha2UtMy4xNS4wLXJjNC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQudGFyLmd6Ij5jbWFrZS0zLjE1LjAtcmM0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQuemlwIj5jbWFrZS0zLjE1LjAtcmM0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjAtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjAtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjAtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC50YXIuWiI+Y21ha2UtMy4xNS4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xNyAxMDozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLnRhci5neiI+Y21ha2UtMy4xNS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC56aXAiPmNtYWtlLTMuMTUuMC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0yNiAxMDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4xLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0yNiAxMDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS50YXIuWiI+Y21ha2UtMy4xNS4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0yNiAxMDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4xLnRhci5neiI+Y21ha2UtMy4xNS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS56aXAiPmNtYWtlLTMuMTUuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTI2IDEwOjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOC0wNyAxNTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4yLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS4yLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOC0wNyAxNTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi50YXIuWiI+Y21ha2UtMy4xNS4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOC0wNyAxNTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4yLnRhci5neiI+Y21ha2UtMy4xNS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi56aXAiPmNtYWtlLTMuMTUuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA4LTA3IDE1OjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4zLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOS0wNCAxMToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4zLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS4zLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS4zLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOS0wNCAxMToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4zLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS4zLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy50YXIuWiI+Y21ha2UtMy4xNS4zLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOS0wNCAxMToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4zLnRhci5neiI+Y21ha2UtMy4xNS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy56aXAiPmNtYWtlLTMuMTUuMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTA0IDExOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjQtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS40LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS40LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS40LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS40LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS40LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS40LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjQtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjQtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjQtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC50YXIuWiI+Y21ha2UtMy4xNS40LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS40LnRhci5neiI+Y21ha2UtMy4xNS40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC56aXAiPmNtYWtlLTMuMTUuNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjUtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuNS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS41LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMCAxMDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS41LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS41LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjUtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS41LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMCAxMDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS41LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS41LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjUtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjUtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjUtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjUtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS50YXIuWiI+Y21ha2UtMy4xNS41LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMCAxMDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS41LnRhci5neiI+Y21ha2UtMy4xNS41LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS56aXAiPmNtYWtlLTMuMTUuNS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTMwIDEwOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjYtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuNi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS42LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMi0xNiAxMTozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS42LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS42LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjYtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS42LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMi0xNiAxMTozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS42LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS42LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjYtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjYtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjYtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjYtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi50YXIuWiI+Y21ha2UtMy4xNS42LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMi0xNiAxMTozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS42LnRhci5neiI+Y21ha2UtMy4xNS42LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi56aXAiPmNtYWtlLTMuMTUuNi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTE2IDExOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTYvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTYvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGY5YjQwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xNi9pbmRleC5odG1sCkBAIC0wLDAgKzEsODYgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjE2PC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjE2PC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNi4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0yNiAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE2LjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTI2IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE2LjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0yNiAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTYuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0yNiAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE2LjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTI2IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkzMiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE2LjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0yNiAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNi4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTAgMTQ6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTYuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTEwIDE0OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNi4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTEwIDE0OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTYuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTAgMTQ6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTYuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTEwIDE0OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNi4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTEwIDE0OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMxLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTYuMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTAgMTQ6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNi4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xMCAxNDoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjE2LjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTEwIDE0OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMxLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTYuMC1yYzEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTAgMTQ6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzEudGFyLmd6Ij5jbWFrZS0zLjE2LjAtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTAgMTQ6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzEuemlwIj5jbWFrZS0zLjE2LjAtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTAgMTQ6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTYuMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTE4IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE2LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xOCAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTYuMC1yYzItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xOCAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE2LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTE4IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMyLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE2LjAtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xOCAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTYuMC1yYzItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xOCAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE2LjAtcmMyLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTE4IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTYuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTggMTA6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNi4wLXJjMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xOCAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjE2LjAtcmMyLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTE4IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMyLnRhci5neiI+Y21ha2UtMy4xNi4wLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTE4IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMyLnppcCI+Y21ha2UtMy4xNi4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTE4IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMzLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE2LjAtcmMzLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMSAxMjowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNi4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzEgMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE2LjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzEgMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNi4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMSAxMjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNi4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzEgMTI6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE2LjAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzEgMTI6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNi4wLXJjMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMSAxMjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE2LjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTMxIDEyOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMzLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTYuMC1yYzMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzEgMTI6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzMtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNi4wLXJjMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMSAxMjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuMTYuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMSAxMjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMy56aXAiPmNtYWtlLTMuMTYuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMSAxMjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNi4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMTggMTc6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTYuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTE4IDE3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmM0LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNi4wLXJjNC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTE4IDE3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTYuMC1yYzQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMTggMTc6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTYuMC1yYzQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTE4IDE3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmM0LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNi4wLXJjNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTE4IDE3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmM0LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTYuMC1yYzQtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMTggMTc6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzQtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNi4wLXJjNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0xOCAxNzowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjNC13aW42NC14NjQubXNpIj5jbWFrZS0zLjE2LjAtcmM0LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTE4IDE3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmM0LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTYuMC1yYzQtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMTggMTc6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzQudGFyLmd6Ij5jbWFrZS0zLjE2LjAtcmM0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMTggMTc6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzQuemlwIj5jbWFrZS0zLjE2LjAtcmM0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMTggMTc6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE2LjAtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMjYgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE2LjAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMjYgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC13aW42NC14NjQubXNpIj5jbWFrZS0zLjE2LjAtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMjYgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC13aW42NC14NjQuemlwIj5jbWFrZS0zLjE2LjAtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMjYgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC50YXIuZ3oiPmNtYWtlLTMuMTYuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTI2IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAuemlwIj5jbWFrZS0zLjE2LjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0yNiAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4xLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE2LjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTYuMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTAgMTA6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTYuMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNi4xLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTYuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTAgMTA6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTMyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTYuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNi4xLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNi4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNi4xLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNi4xLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEudGFyLmd6Ij5jbWFrZS0zLjE2LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMi0xMCAxMDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4xLnppcCI+Y21ha2UtMy4xNi4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTAgMTA6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4yL2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjIvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGM2YzdmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4yL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxMzIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjI8L3RpdGxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxoMT5JbmRleCBvZiAvZmlsZXMvdjMuMjwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2ZpbGVzLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjIuMC0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtMS50YXIuYnoyIj5jbWFrZS0zLjIuMC0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4yLjAtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjIuMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMi4wLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMi4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy4yLjAtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjIuMC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMi4wLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjIuMC1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMi4wLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjIuMC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMi4wLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMi4wLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4yLjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMi4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4yLjAtcmMxLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMi4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEzIDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Nk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMi4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjIuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4yLjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMi4wLXJjMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMi4wLXJjMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEzIDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjIuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4yLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4yLjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4yLjAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMi4wLXJjMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMi4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLnRhci5aIj5jbWFrZS0zLjIuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEzIDE1OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzEudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLnppcCI+Y21ha2UtMy4yLjAtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4yLjAtcmMyLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMi4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTI0IDA4OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Nk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMi4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjIuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4yLjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMi4wLXJjMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMi4wLXJjMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTI0IDA4OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjIuMC1yYzItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4yLjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4yLjAtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4yLjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMi4wLXJjMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMi4wLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLnRhci5aIj5jbWFrZS0zLjIuMC1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTI0IDA4OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjIuMC1yYzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLnppcCI+Y21ha2UtMy4yLjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4yLjAtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMi4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC50YXIuWiI+Y21ha2UtMy4yLjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC50YXIuZ3oiPmNtYWtlLTMuMi4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLnppcCI+Y21ha2UtMy4yLjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4yLjEtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLTEudGFyLmJ6MiI+Y21ha2UtMy4yLjEtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMi4xLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4yLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjIuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjIuMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuMi4xLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4yLjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjIuMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4yLjEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjIuMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4yLjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjIuMS1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjIuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMi4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjIuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMi4xLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjIuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEudGFyLloiPmNtYWtlLTMuMi4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEudGFyLmd6Ij5jbWFrZS0zLjIuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS56aXAiPmNtYWtlLTMuMi4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjIuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMi4yLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2Nk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4yLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Nk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4yLjItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjIuMi1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNC0xNCAxMzo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMi4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNC0xNCAxMzo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjItTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4yLjItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMi4yLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4yLjItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMi4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4yLjItTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNC0xNCAxMzo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4yLjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjIuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4yLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjIuMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNC0xNCAxMzo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjItd2luMzIteDg2LnppcCI+Y21ha2UtMy4yLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLnRhci5aIj5jbWFrZS0zLjIuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLnRhci5neiI+Y21ha2UtMy4yLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNC0xNCAxMzo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjIuemlwIj5jbWFrZS0zLjIuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4yLjMtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjIuMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMi4zLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMi4zLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy4yLjMtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDEgMTc6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4zLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjIuMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDEgMTc6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4zLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMi4zLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjIuMy1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMi4zLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjIuMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMi4zLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDEgMTc6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4zLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMi4zLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4yLjMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMi4zLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4yLjMtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDEgMTc6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMi4zLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy50YXIuWiI+Y21ha2UtMy4yLjMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy50YXIuZ3oiPmNtYWtlLTMuMi4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDEgMTc6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4zLnppcCI+Y21ha2UtMy4yLjMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjMvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMy9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwNTM3MzYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjMvaW5kZXguaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZmlsZXMvdjMuMzwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My4zPC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMy4wLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC0xLnRhci5iejIiPmNtYWtlLTMuMy4wLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjMuMC1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMy4wLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4zLjAtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4zLjAtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjMuMC1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0yMyAxNjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMy4wLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0yMyAxNjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4zLjAtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMy4wLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4zLjAtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMy4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4zLjAtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0yMyAxNjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjMuMC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4zLjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMy4wLXJjMS0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLTEucGF0Y2giPmNtYWtlLTMuMy4wLXJjMS0xLnBhdGNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIDAgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLTEuc2giPmNtYWtlLTMuMy4wLXJjMS0xLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjVLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLTEudGFyLmJ6MiI+Y21ha2UtMy4zLjAtcmMxLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4zLjAtcmMxLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMy4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTA1IDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMy4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjMuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMy4wLXJjMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMy4wLXJjMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTA1IDA5OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjMuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4zLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4zLjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4zLjAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMy4wLXJjMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMy4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLnRhci5aIj5jbWFrZS0zLjMuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTA1IDA5OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzEudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLnppcCI+Y21ha2UtMy4zLjAtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjMuMC1yYzItMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi0xLnRhci5iejIiPmNtYWtlLTMuMy4wLXJjMi0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMy4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjMuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4zLjAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0xMCAxNToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjMuMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy4zLjAtcmMyLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMy4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjMuMC1yYzItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjMuMC1yYzItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4zLjAtcmMyLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0xMCAxNToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4zLjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMy4wLXJjMi1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuMy4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMy4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjMuMC1yYzItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjMuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi50YXIuWiI+Y21ha2UtMy4zLjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0xMCAxNToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMyLnRhci5neiI+Y21ha2UtMy4zLjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi56aXAiPmNtYWtlLTMuMy4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4zLjAtcmMzLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtMS50YXIuYnoyIj5jbWFrZS0zLjMuMC1yYzMtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjMuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4zLjAtcmMzLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMy4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMjYgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4zLjAtcmMzLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuMy4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4zLjAtcmMzLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4zLjAtcmMzLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMy4wLXJjMy1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMjYgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMy4wLXJjMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjMuMC1yYzMtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMy4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjMuMC1yYzMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjMuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4zLjAtcmMzLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtd2luMzIteDg2LnppcCI+Y21ha2UtMy4zLjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMudGFyLloiPmNtYWtlLTMuMy4wLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMjYgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuMy4wLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMuemlwIj5jbWFrZS0zLjMuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMy4wLXJjNC0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LTEudGFyLmJ6MiI+Y21ha2UtMy4zLjAtcmM0LTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4zLjAtcmM0LURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMy4wLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMy4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjMuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjAtcmM0LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMy4wLXJjNC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMy4wLXJjNC1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzQtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzQtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjMuMC1yYzQtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4zLjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4zLjAtcmM0LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4zLjAtcmM0LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMy4wLXJjNC13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMy4wLXJjNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LnRhci5aIj5jbWFrZS0zLjMuMC1yYzQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzQudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LnppcCI+Y21ha2UtMy4zLjAtcmM0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4zLjAtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMy4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC50YXIuWiI+Y21ha2UtMy4zLjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC50YXIuZ3oiPmNtYWtlLTMuMy4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLnppcCI+Y21ha2UtMy4zLjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0yMyAxNjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4zLjEtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLTEudGFyLmJ6MiI+Y21ha2UtMy4zLjEtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMy4xLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4zLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjMuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjMuMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuMy4xLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjMuMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4zLjEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjMuMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4zLjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjMuMS1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjMuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMy4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjMuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMy4xLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjMuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEudGFyLloiPmNtYWtlLTMuMy4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEudGFyLmd6Ij5jbWFrZS0zLjMuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS56aXAiPmNtYWtlLTMuMy4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMy4yLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi0xLnRhci5iejIiPmNtYWtlLTMuMy4yLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjMuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMy4yLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4zLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4zLjItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjMuMi1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMy4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjItTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4zLjItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMy4yLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4zLjItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMy4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4zLjItTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjMuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4zLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjMuMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjItd2luMzIteDg2LnppcCI+Y21ha2UtMy4zLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLnRhci5aIj5jbWFrZS0zLjMuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLnRhci5neiI+Y21ha2UtMy4zLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjIuemlwIj5jbWFrZS0zLjMuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuNC9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My40L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdiNTZkYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuNC9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTI3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92My40PC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjQ8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9maWxlcy8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNC4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0xMiAxMzo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy40LjAtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNC4wLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjQuMC1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0xMiAxMzo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNC4wLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0xMiAxMzo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjQuMC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4wLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNC4wLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy40LjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNC4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy40LjAtcmMxLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMxLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy40LjAtcmMxLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy40LjAtcmMxLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNC4wLXJjMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMDYgMTE6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNC4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjQuMC1yYzEtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNC4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjQuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjQuMC1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy40LjAtcmMxLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy40LjAtcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEudGFyLloiPmNtYWtlLTMuNC4wLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMDYgMTE6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuNC4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEuemlwIj5jbWFrZS0zLjQuMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjQuMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy40LjAtcmMyLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNC4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjQuMC1yYzItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjQuMC1yYzItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy40LjAtcmMyLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0yMSAxNjoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy40LjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4wLXJjMi1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy40LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuNC4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNC4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjQuMC1yYzItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjQuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi50YXIuWiI+Y21ha2UtMy40LjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0yMSAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMyLnRhci5neiI+Y21ha2UtMy40LjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi56aXAiPmNtYWtlLTMuNC4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNC4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjQuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy40LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNC4wLXJjMy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNC4wLXJjMy1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjQuMC1yYzMtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTAzIDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjQuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy40LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMC1yYzMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy40LjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy40LjAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuNC4wLXJjMy13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNC4wLXJjMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLnRhci5aIj5jbWFrZS0zLjQuMC1yYzMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTAzIDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzMudGFyLmd6Ij5jbWFrZS0zLjQuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLnppcCI+Y21ha2UtMy40LjAtcmMzLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy40LjAtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNC4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC50YXIuWiI+Y21ha2UtMy40LjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC50YXIuZ3oiPmNtYWtlLTMuNC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLnppcCI+Y21ha2UtMy40LjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0xMiAxMzo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNC4xLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0wMiAxNDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjEtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy40LjEtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4xLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4xLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNC4xLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjQuMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0wMiAxNDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNC4xLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0wMiAxNDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjQuMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4xLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4xLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNC4xLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy40LjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNC4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy40LjEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNC4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS50YXIuWiI+Y21ha2UtMy40LjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS50YXIuZ3oiPmNtYWtlLTMuNC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4xLnppcCI+Y21ha2UtMy40LjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0wMiAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNC4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xOSAxNDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy40LjItRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4yLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNC4yLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjQuMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xOSAxNDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNC4yLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xOSAxNDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjQuMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4yLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNC4yLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy40LjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNC4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjItd2luMzIteDg2LmV4ZSI+Y21ha2UtMy40LjItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNC4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi50YXIuWiI+Y21ha2UtMy40LjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi50YXIuZ3oiPmNtYWtlLTMuNC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4yLnppcCI+Y21ha2UtMy40LjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xOSAxNDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNC4zLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yNSAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjMtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy40LjMtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4zLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4zLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNC4zLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjQuMy1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yNSAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjMtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNC4zLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yNSAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjQuMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4zLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4zLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNC4zLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy40LjMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNC4zLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjMtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy40LjMtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNC4zLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy50YXIuWiI+Y21ha2UtMy40LjMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy50YXIuZ3oiPmNtYWtlLTMuNC4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4zLnppcCI+Y21ha2UtMy40LjMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yNSAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9mb2xkZXIuZ2lmIiBhbHQ9IltESVJdIj48L3RkPjx0ZD48YSBocmVmPSJjeWd3aW4vIj5jeWd3aW4vPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yNSAxNDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjUvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuNS9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZDRmN2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjUvaW5kZXguaHRtbApAQCAtMCwwICsxLDExMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZmlsZXMvdjMuNTwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My41PC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjUuMC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMDggMTE6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuNS4wLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTA4IDExOjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy41LjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTA4IDExOjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjUuMC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy41LjAtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMDggMTE6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjUuMC1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMDggMTE6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy41LjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjUuMC1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTA4IDExOjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjUuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNS4wLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjUuMC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTA4IDExOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNS4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDIgMTU6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjUuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDIgMTU6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy41LjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wMiAxNTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMxLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNS4wLXJjMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wMiAxNTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMxLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNS4wLXJjMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wMiAxNTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMxLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjUuMC1yYzEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTAyIDE1OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjUuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wMiAxNTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy41LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDIgMTU6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjUuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDIgMTU6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy41LjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wMyAxMzoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy41LjAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDMgMTM6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjUuMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDMgMTM6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjUuMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDMgMTM6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS50YXIuWiI+Y21ha2UtMy41LjAtcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wMiAxNTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMxLnRhci5neiI+Y21ha2UtMy41LjAtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDIgMTU6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS56aXAiPmNtYWtlLTMuNS4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTAyIDE1OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNS4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjUuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy41LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xMCAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMyLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNS4wLXJjMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xMCAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMyLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNS4wLXJjMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xMCAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMyLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjUuMC1yYzItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTEwIDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjUuMC1yYzItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xMCAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy41LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjUuMC1yYzItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy41LjAtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xMCAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy41LjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjUuMC1yYzItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjUuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi50YXIuWiI+Y21ha2UtMy41LjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xMCAxNTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMyLnRhci5neiI+Y21ha2UtMy41LjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi56aXAiPmNtYWtlLTMuNS4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTEwIDE1OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNS4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjUuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy41LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xOCAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMzLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNS4wLXJjMy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xOCAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMzLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNS4wLXJjMy1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xOCAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMzLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjUuMC1yYzMtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTE4IDE1OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjUuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xOCAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy41LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjUuMC1yYzMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy41LjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xOCAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMzLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy41LjAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjUuMC1yYzMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjUuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy50YXIuWiI+Y21ha2UtMy41LjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xOCAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMzLnRhci5neiI+Y21ha2UtMy41LjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy56aXAiPmNtYWtlLTMuNS4wLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTE4IDE1OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjUuMC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtd2luMzIteDg2LnppcCI+Y21ha2UtMy41LjAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMDggMTE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLnRhci5aIj5jbWFrZS0zLjUuMC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMDggMTE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLnRhci5neiI+Y21ha2UtMy41LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAuemlwIj5jbWFrZS0zLjUuMC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTA4IDExOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy41LjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTI0IDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjUuMS1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0yNCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNS4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0yNCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy41LjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNS4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTI0IDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy41LjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTI0IDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNS4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy41LjEtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0yNCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy41LjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjUuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy41LjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0yNCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy41LjEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNS4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTI0IDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS50YXIuWiI+Y21ha2UtMy41LjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTI0IDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS50YXIuZ3oiPmNtYWtlLTMuNS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLnppcCI+Y21ha2UtMy41LjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0yNCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNS4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xNSAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy41LjItRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjUuMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4yLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNS4yLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjUuMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xNSAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNS4yLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xNSAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjUuMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNS4yLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNS4yLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy41LjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNS4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4yLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNS4yLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjUuMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xNSAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjIudGFyLloiPmNtYWtlLTMuNS4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xNSAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjIudGFyLmd6Ij5jbWFrZS0zLjUuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi56aXAiPmNtYWtlLTMuNS4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvZm9sZGVyLmdpZiIgYWx0PSJbRElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iY3lnd2luLyI+Y3lnd2luLzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My42L2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjYvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmNhM2E1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My42L2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxNTkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjY8L3RpdGxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxoMT5JbmRleCBvZiAvZmlsZXMvdjMuNjwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2ZpbGVzLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy42LjAtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjYuMC1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4wLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy42LjAtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNi4wLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjAtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNi4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjAtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjYuMC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy42LjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMxLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjYuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjAtcmMxLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMDMgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjYuMC1yYzEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMDMgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjYuMC1yYzEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMDMgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjAtcmMxLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0wMyAxNDo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy42LjAtcmMxLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMDMgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMS1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNi4wLXJjMS1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNi4wLXJjMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMDMgMTQ6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS41SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNi4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjAtcmMxLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy42LjAtcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy42LjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjAtcmMxLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEudGFyLloiPmNtYWtlLTMuNi4wLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMDMgMTQ6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEuemlwIj5jbWFrZS0zLjYuMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0wMyAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjYuMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjAtcmMyLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMTMgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjYuMC1yYzItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMTMgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjYuMC1yYzItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMTMgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjAtcmMyLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0xMyAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy42LjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMTMgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNi4wLXJjMi1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuNi4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMTMgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS41SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNi4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjAtcmMyLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMy42LjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy42LjAtcmMyLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjAtcmMyLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzIudGFyLloiPmNtYWtlLTMuNi4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMTMgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMi50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzIuemlwIj5jbWFrZS0zLjYuMC1yYzIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0xMyAxNDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMzLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjYuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjAtcmMzLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMy1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjYuMC1yYzMtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjYuMC1yYzMtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMy1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjAtcmMzLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAxMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMzLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy42LjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMy1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNi4wLXJjMy1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNi4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS41SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNi4wLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjAtcmMzLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtd2luMzIteDg2LnppcCI+Y21ha2UtMy42LjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy42LjAtcmMzLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjAtcmMzLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMudGFyLloiPmNtYWtlLTMuNi4wLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMuemlwIj5jbWFrZS0zLjYuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAxMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmM0LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjYuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjAtcmM0LURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjkgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjNC1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjYuMC1yYzQtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjkgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjNC1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjYuMC1yYzQtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjkgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjNC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjAtcmM0LUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yOSAxNDo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmM0LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy42LjAtcmM0LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjkgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjNC1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNi4wLXJjNC1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNi4wLXJjNC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjkgMTQ6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS41SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNi4wLXJjNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjAtcmM0LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtd2luMzIteDg2LnppcCI+Y21ha2UtMy42LjAtcmM0LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy42LjAtcmM0LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjAtcmM0LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQudGFyLloiPmNtYWtlLTMuNi4wLXJjNC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjkgMTQ6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjNC50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQuemlwIj5jbWFrZS0zLjYuMC1yYzQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yOSAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjAtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNi4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC13aW42NC14NjQubXNpIj5jbWFrZS0zLjYuMC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjAtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLnRhci5aIj5jbWFrZS0zLjYuMC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLnRhci5neiI+Y21ha2UtMy42LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAuemlwIj5jbWFrZS0zLjYuMC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy42LjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjYuMS1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy42LjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNi4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNi4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjEtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjYuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy42LjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNi4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjYuMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEtd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLnRhci5aIj5jbWFrZS0zLjYuMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLnRhci5neiI+Y21ha2UtMy42LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEuemlwIj5jbWFrZS0zLjYuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy42LjItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjYuMi1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjItTGludXgtaTM4Ni5zaCI+Y21ha2UtMy42LjItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNi4yLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNi4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjItTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjYuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy42LjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNi4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjYuMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjItd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLnRhci5aIj5jbWFrZS0zLjYuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLnRhci5neiI+Y21ha2UtMy42LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjIuemlwIj5jbWFrZS0zLjYuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy42LjMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjYuMy1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4zLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy42LjMtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNi4zLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy42LjMtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNi4zLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjMtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy42LjMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjYuMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy42LjMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDEgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy42LjMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNi4zLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjYuMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMtd2luNjQteDY0LnppcCI+Y21ha2UtMy42LjMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLnRhci5aIj5jbWFrZS0zLjYuMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLnRhci5neiI+Y21ha2UtMy42LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMuemlwIj5jbWFrZS0zLjYuMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2ZvbGRlci5naWYiIGFsdD0iW0RJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9ImN5Z3dpbi8iPmN5Z3dpbi88L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuNy9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My43L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDgxMmY5MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuNy9pbmRleC5odG1sCkBAIC0wLDAgKzEsOTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjc8L3RpdGxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxoMT5JbmRleCBvZiAvZmlsZXMvdjMuNzwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2ZpbGVzLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy43LjAtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy43LjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNy4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMTEgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNy4wLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy43LjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNy4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMTEgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODAxIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy43LjAtcmMxLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjcuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTA0IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjcuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNy4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjcuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTA0IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjcuMC1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDEgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNy4wLXJjMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNy4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuNy4wLXJjMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuNy4wLXJjMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLnRhci5aIj5jbWFrZS0zLjcuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTA0IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzEudGFyLmd6Ij5jbWFrZS0zLjcuMC1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLnppcCI+Y21ha2UtMy43LjAtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMDQgMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy43LjAtcmMyLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjcuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTE5IDE1OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjcuMC1yYzItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNy4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjcuMC1yYzItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTE5IDE1OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjcuMC1yYzItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDEgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNy4wLXJjMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNy4wLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuNy4wLXJjMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuNy4wLXJjMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLnRhci5aIj5jbWFrZS0zLjcuMC1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTE5IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjcuMC1yYzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLnppcCI+Y21ha2UtMy43LjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMTkgMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy43LjAtcmMzLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjcuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTA0IDE1OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjcuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNy4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjcuMC1yYzMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTA0IDE1OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjcuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDEgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNy4wLXJjMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNy4wLXJjMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuNy4wLXJjMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuNy4wLXJjMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLnRhci5aIj5jbWFrZS0zLjcuMC1yYzMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTA0IDE1OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzMudGFyLmd6Ij5jbWFrZS0zLjcuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLnppcCI+Y21ha2UtMy43LjAtcmMzLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDQgMTU6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNy4wLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjcuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xMSAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy43LjAtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMTEgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuNy4wLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC50YXIuWiI+Y21ha2UtMy43LjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC50YXIuZ3oiPmNtYWtlLTMuNy4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMTEgMTQ6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLnppcCI+Y21ha2UtMy43LjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xMSAxNDowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNy4xLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNy4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjcuMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTMwIDE0OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjcuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNy4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjcuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTMwIDE0OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjcuMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEtd2luMzIteDg2LnppcCI+Y21ha2UtMy43LjEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMzAgMTQ6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4xLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuNy4xLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTMwIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjcuMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEudGFyLloiPmNtYWtlLTMuNy4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEudGFyLmd6Ij5jbWFrZS0zLjcuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTMwIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMS56aXAiPmNtYWtlLTMuNy4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMzAgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjcuMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjcuMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy43LjItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMyAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy43LjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjcuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy43LjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMyAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy43LjItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNy4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTEzIDE0OjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjcuMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMyAxNDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjItd2luNjQteDY0LnppcCI+Y21ha2UtMy43LjItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLnRhci5aIj5jbWFrZS0zLjcuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLnRhci5neiI+Y21ha2UtMy43LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMyAxNDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjIuemlwIj5jbWFrZS0zLjcuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTEzIDE0OjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuOC9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My44L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZjOGNhYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuOC9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTA1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92My44PC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjg8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9maWxlcy8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOC4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOC4wLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjguMC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA0LTEwIDEzOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjguMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOC4wLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjguMC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA0LTEwIDEzOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOC4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMi0wNyAxMjo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy44LjAtcmMxLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjguMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy44LjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMi0wNyAxMjo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy44LjAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjguMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjguMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjguMC1yYzEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjguMC1yYzEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS50YXIuWiI+Y21ha2UtMy44LjAtcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMi0wNyAxMjo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMxLnRhci5neiI+Y21ha2UtMy44LjAtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS56aXAiPmNtYWtlLTMuOC4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAyLTA3IDEyOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOC4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMTA6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0wMyAxMDowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy44LjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMTA6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjguMC1yYzItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy44LjAtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0wMyAwOTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy44LjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjguMC1yYzItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjguMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjguMC1yYzItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjguMC1yYzItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi50YXIuWiI+Y21ha2UtMy44LjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0wMyAwOTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMyLnRhci5neiI+Y21ha2UtMy44LjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi56aXAiPmNtYWtlLTMuOC4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTAzIDA5OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOC4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0yNCAxMzo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMzLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy44LjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjguMC1yYzMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy44LjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0yNCAxMzo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMzLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy44LjAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjguMC1yYzMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjguMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjguMC1yYzMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjguMC1yYzMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy50YXIuWiI+Y21ha2UtMy44LjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0yNCAxMzo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMzLnRhci5neiI+Y21ha2UtMy44LjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy56aXAiPmNtYWtlLTMuOC4wLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTI0IDEzOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzQtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOC4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjAtcmM0LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0zMCAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmM0LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy44LjAtcmM0LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjguMC1yYzQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy44LjAtcmM0LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0zMCAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmM0LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy44LjAtcmM0LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjguMC1yYzQtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjguMC1yYzQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC13aW42NC14NjQubXNpIj5jbWFrZS0zLjguMC1yYzQtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC13aW42NC14NjQuemlwIj5jbWFrZS0zLjguMC1yYzQtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC50YXIuWiI+Y21ha2UtMy44LjAtcmM0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0zMCAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmM0LnRhci5neiI+Y21ha2UtMy44LjAtcmM0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC56aXAiPmNtYWtlLTMuOC4wLXJjNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTMwIDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjguMC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtd2luMzIteDg2LnppcCI+Y21ha2UtMy44LjAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDQtMTAgMTM6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuOC4wLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA0LTEwIDEzOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC13aW42NC14NjQuemlwIj5jbWFrZS0zLjguMC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAudGFyLloiPmNtYWtlLTMuOC4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAudGFyLmd6Ij5jbWFrZS0zLjguMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA0LTEwIDEzOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC56aXAiPmNtYWtlLTMuOC4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDQtMTAgMTM6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjguMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjguMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy44LjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0wMiAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjguMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy44LjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0wMiAxMTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy44LjEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuOC4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTAyIDExOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjguMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0wMiAxMTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjEtd2luNjQteDY0LnppcCI+Y21ha2UtMy44LjEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLnRhci5aIj5jbWFrZS0zLjguMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLnRhci5neiI+Y21ha2UtMy44LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0wMiAxMTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjEuemlwIj5jbWFrZS0zLjguMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTAyIDExOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy44LjItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOC4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMzEgMTI6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOC4yLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy44LjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOC4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMzEgMTI6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4yLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuOC4yLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjguMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0zMSAxMjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy44LjItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMzEgMTI6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4yLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuOC4yLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi50YXIuWiI+Y21ha2UtMy44LjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi50YXIuZ3oiPmNtYWtlLTMuOC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMzEgMTI6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4yLnppcCI+Y21ha2UtMy44LjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0zMSAxMjoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjkvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuOS9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MTgyYWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjkvaW5kZXguaHRtbApAQCAtMCwwICsxLDE4MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZmlsZXMvdjMuOTwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My45PC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuMC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy45LjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xOCAxMzozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjkuMC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy45LjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xOCAxMzozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMxLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMDUgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4wLXJjMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMDUgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjAtcmMxLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjAtcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjAtcmMxLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEudGFyLloiPmNtYWtlLTMuOS4wLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMDUgMTQ6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEuemlwIj5jbWFrZS0zLjkuMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNSAxNDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMDcgMTQ6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4wLXJjMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMDcgMTQ6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjAtcmMyLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjAtcmMyLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjAtcmMyLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzIudGFyLloiPmNtYWtlLTMuOS4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMDcgMTQ6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMi50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzIuemlwIj5jbWFrZS0zLjkuMC1yYzIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNyAxNDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMzLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMTMgMTQ6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4wLXJjMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMTMgMTQ6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4wLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjAtcmMzLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjAtcmMzLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjAtcmMzLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMudGFyLloiPmNtYWtlLTMuOS4wLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMTMgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMuemlwIj5jbWFrZS0zLjkuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0xMyAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM0LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMjIgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4wLXJjNC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4wLXJjNC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMjIgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4wLXJjNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjAtcmM0LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjAtcmM0LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjAtcmM0LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjAtcmM0LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQudGFyLloiPmNtYWtlLTMuOS4wLXJjNC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMjIgMTM6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQuemlwIj5jbWFrZS0zLjkuMC1yYzQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yMiAxMzoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM1LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMC1yYzUtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjNS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMjcgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4wLXJjNS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtcmM1LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4wLXJjNS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMjcgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4wLXJjNS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjAtcmM1LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjAtcmM1LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjAtcmM1LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjAtcmM1LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUudGFyLloiPmNtYWtlLTMuOS4wLXJjNS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMjcgMTM6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNS50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUuemlwIj5jbWFrZS0zLjkuMC1yYzUuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yNyAxMzo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM2LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMC1yYzYtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjNi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTIgMTE6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4wLXJjNi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtcmM2LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4wLXJjNi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTIgMTE6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4wLXJjNi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjAtcmM2LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjAtcmM2LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjAtcmM2LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjAtcmM2LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYudGFyLloiPmNtYWtlLTMuOS4wLXJjNi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTIgMTE6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNi50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYuemlwIj5jbWFrZS0zLjkuMC1yYzYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xMiAxMTo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjAtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuOS4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTE4IDEzOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC13aW42NC14NjQubXNpIj5jbWFrZS0zLjkuMC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xOCAxMzozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjAtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLnRhci5aIj5jbWFrZS0zLjkuMC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLnRhci5neiI+Y21ha2UtMy45LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xOCAxMzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAuemlwIj5jbWFrZS0zLjkuMC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTE4IDEzOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy45LjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDgtMTAgMTE6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4xLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4xLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy45LjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDgtMTAgMTE6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4xLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuOS4xLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjkuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOC0xMCAxMTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDgtMTAgMTE6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4xLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuOS4xLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS50YXIuWiI+Y21ha2UtMy45LjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS50YXIuZ3oiPmNtYWtlLTMuOS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDgtMTAgMTE6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4xLnppcCI+Y21ha2UtMy45LjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOC0xMCAxMTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOS4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjkuMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTA3IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjItU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4yLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjkuMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTA3IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjkuMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjItd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDcgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4yLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuOS4yLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTA3IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjkuMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjIudGFyLloiPmNtYWtlLTMuOS4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjIudGFyLmd6Ij5jbWFrZS0zLjkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTA3IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMi56aXAiPmNtYWtlLTMuOS4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDcgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy45LjMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yMCAxMTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjkuMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy45LjMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yMCAxMTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuOS4zLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTIwIDExOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjkuMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yMCAxMTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjMtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLnRhci5aIj5jbWFrZS0zLjkuMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLnRhci5neiI+Y21ha2UtMy45LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yMCAxMTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjMuemlwIj5jbWFrZS0zLjkuMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTIwIDExOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy45LjQtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS40LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDQgMDk6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS40LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS40LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy45LjQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS40LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDQgMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS40LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuOS40LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjkuNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjQtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjQtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDQgMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS40LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuOS40LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC50YXIuWiI+Y21ha2UtMy45LjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC50YXIuZ3oiPmNtYWtlLTMuOS40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDQgMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS40LnppcCI+Y21ha2UtMy45LjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOS41LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS41LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjkuNS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAzIDEwOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuNS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS41LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjkuNS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAzIDEwOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjkuNS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUtd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjUtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDMgMTA6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS41LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuOS41LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAzIDEwOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNS13aW42NC14NjQuemlwIj5jbWFrZS0zLjkuNS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUudGFyLloiPmNtYWtlLTMuOS41LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUudGFyLmd6Ij5jbWFrZS0zLjkuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAzIDEwOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNS56aXAiPmNtYWtlLTMuOS41LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDMgMTA6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuNi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuNi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy45LjYtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAwOToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjYtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjYtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjkuNi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy45LjYtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAwOToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjYtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjYtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuOS42LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDA5OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNi13aW42NC14NjQubXNpIj5jbWFrZS0zLjkuNi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAwOToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjYtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjYtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LnRhci5aIj5jbWFrZS0zLjkuNi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LnRhci5neiI+Y21ha2UtMy45LjYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAwOToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjYuemlwIj5jbWFrZS0zLjkuNi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDA5OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjMvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjMvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2Q5MjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yMy9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjMvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yMy88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTMgMTI6MzUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTMgMTI6MzkgICAgICAgLQ0KKzxhIGhyZWY9InNoYTI1NnN1bXMuYXNjIj5zaGEyNTZzdW1zLmFzYzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTItTWF5LTIwMTcgMTA6NTMgICAgMjk0Mg0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy1yYzEudGFyLmJ6MiI+dXRpbC1saW51eC0yLjIzLXJjMS50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAgIDIyLU1hci0yMDEzIDEyOjQ4ICAgICAgNU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjIzLXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDIyLU1hci0yMDEzIDEyOjQ4ICAgICAgN00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjMtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMjItTWFyLTIwMTMgMTI6NDggICAgIDgzNg0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjMtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjItTWFyLTIwMTMgMTI6NDggICAgICAzTQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy1yYzIudGFyLmJ6MiI+dXRpbC1saW51eC0yLjIzLXJjMi50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAgIDEwLUFwci0yMDEzIDIyOjE0ICAgICAgNU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMtcmMyLnRhci5neiI+dXRpbC1saW51eC0yLjIzLXJjMi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDEwLUFwci0yMDEzIDIyOjE0ICAgICAgN00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMtcmMyLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjMtcmMyLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTAtQXByLTIwMTMgMjI6MTQgICAgIDgzNg0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy1yYzIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjMtcmMyLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTAtQXByLTIwMTMgMjI6MTQgICAgICAzTQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy4xLnRhci5iejIiPnV0aWwtbGludXgtMi4yMy4xLnRhci5iejI8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAyOC1NYXktMjAxMyAwOTo1NyAgICAgIDVNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjIzLjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjMuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjgtTWF5LTIwMTMgMDk6NTcgICAgICA3TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjMuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjgtTWF5LTIwMTMgMDk6NTcgICAgIDgzNg0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy4xLnRhci54eiI+dXRpbC1saW51eC0yLjIzLjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4LU1heS0yMDEzIDA5OjU3ICAgICAgM00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMuMi50YXIuYnoyIj51dGlsLWxpbnV4LTIuMjMuMi50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTMgMTI6NDAgICAgICA1TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy4yLnRhci5neiI+dXRpbC1saW51eC0yLjIzLjIudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDEzIDEyOjQwICAgICAgN00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMuMi50YXIuc2lnbiI+dXRpbC1saW51eC0yLjIzLjIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDEzIDEyOjQwICAgICA4MzYNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMuMi50YXIueHoiPnV0aWwtbGludXgtMi4yMy4yLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAzMS1KdWwtMjAxMyAxMjo0MCAgICAgIDNNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjIzLnRhci5iejIiPnV0aWwtbGludXgtMi4yMy50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNS1BcHItMjAxMyAxMDo0OCAgICAgIDVNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjIzLnRhci5neiI+dXRpbC1saW51eC0yLjIzLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1LUFwci0yMDEzIDEwOjQ4ICAgICAgN00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yMy50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyNS1BcHItMjAxMyAxMDo0OCAgICAgODM2DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjIzLnRhci54eiI+dXRpbC1saW51eC0yLjIzLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1LUFwci0yMDEzIDEwOjQ4ICAgICAgM00NCis8YSBocmVmPSJ2Mi4yMy1DaGFuZ2VMb2ciPnYyLjIzLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNS1BcHItMjAxMyAxMDo0OCAgICAgMTlLDQorPGEgaHJlZj0idjIuMjMtQ2hhbmdlTG9nLnNpZ24iPnYyLjIzLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNS1BcHItMjAxMyAxMDo0OCAgICAgODM2DQorPGEgaHJlZj0idjIuMjMtUmVsZWFzZU5vdGVzIj52Mi4yMy1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUtQXByLTIwMTMgMTA6NDggICAgIDUzSw0KKzxhIGhyZWY9InYyLjIzLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yMy1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUtQXByLTIwMTMgMTA6NDggICAgIDgzNg0KKzxhIGhyZWY9InYyLjIzLXJjMS1DaGFuZ2VMb2ciPnYyLjIzLXJjMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1NYXItMjAxMyAxMjo0OCAgICAzNjFLDQorPGEgaHJlZj0idjIuMjMtcmMxLUNoYW5nZUxvZy5zaWduIj52Mi4yMy1yYzEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItTWFyLTIwMTMgMTI6NDggICAgIDgzNg0KKzxhIGhyZWY9InYyLjIzLXJjMi1DaGFuZ2VMb2ciPnYyLjIzLXJjMi1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC1BcHItMjAxMyAyMjoxNCAgICAgODBLDQorPGEgaHJlZj0idjIuMjMtcmMyLUNoYW5nZUxvZy5zaWduIj52Mi4yMy1yYzItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAtQXByLTIwMTMgMjI6MTQgICAgIDgzNg0KKzxhIGhyZWY9InYyLjIzLjEtQ2hhbmdlTG9nIj52Mi4yMy4xLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjgtTWF5LTIwMTMgMDk6NTcgICAgIDEzSw0KKzxhIGhyZWY9InYyLjIzLjEtQ2hhbmdlTG9nLnNpZ24iPnYyLjIzLjEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOC1NYXktMjAxMyAwOTo1NyAgICAgODM2DQorPGEgaHJlZj0idjIuMjMuMS1SZWxlYXNlTm90ZXMiPnYyLjIzLjEtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOC1NYXktMjAxMyAwOTo1OCAgICAxNDQ4DQorPGEgaHJlZj0idjIuMjMuMS1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjMuMS1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgIDI4LU1heS0yMDEzIDA5OjU4ICAgICA4MzYNCis8YSBocmVmPSJ2Mi4yMy4yLUNoYW5nZUxvZyI+djIuMjMuMi1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDEzIDEyOjQwICAgICAyM0sNCis8YSBocmVmPSJ2Mi4yMy4yLUNoYW5nZUxvZy5zaWduIj52Mi4yMy4yLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTMgMTI6NDAgICAgIDgzNg0KKzxhIGhyZWY9InYyLjIzLjItUmVsZWFzZU5vdGVzIj52Mi4yMy4yLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTMgMTI6NDAgICAgMjU4Mg0KKzxhIGhyZWY9InYyLjIzLjItUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjIzLjItUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAzMS1KdWwtMjAxMyAxMjo0MCAgICAgODM2DQorPC9wcmU+PGhyPjwvYm9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNC9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNC9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhZmI0NjIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjI0L2luZGV4Lmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPGh0bWw+DQorPGhlYWQ+PHRpdGxlPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNC88L3RpdGxlPjwvaGVhZD4NCis8Ym9keT4NCis8aDE+SW5kZXggb2YgL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjI0LzwvaDE+PGhyPjxwcmU+PGEgaHJlZj0iLi4vIj4uLi88L2E+DQorPGEgaHJlZj0ibGliYmxraWQtZG9jcy8iPmxpYmJsa2lkLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BcHItMjAxNCAxMDoxNSAgICAgICAtDQorPGEgaHJlZj0ibGlibW91bnQtZG9jcy8iPmxpYm1vdW50LWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BcHItMjAxNCAxMDoxNyAgICAgICAtDQorPGEgaHJlZj0ic2hhMjU2c3Vtcy5hc2MiPnNoYTI1NnN1bXMuYXNjPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi1NYXktMjAxNyAxMDo1MyAgICAyNzU4DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LXJjMS50YXIuYnoyIj51dGlsLWxpbnV4LTIuMjQtcmMxLnRhci5iejI8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgMjctU2VwLTIwMTMgMTI6NTQgICAgICA1TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC1yYzEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjQtcmMxLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjctU2VwLTIwMTMgMTI6NTQgICAgICA3TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC1yYzEudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNC1yYzEudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAyNy1TZXAtMjAxMyAxMjo1NCAgICAgODM2DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LXJjMS50YXIueHoiPnV0aWwtbGludXgtMi4yNC1yYzEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyNy1TZXAtMjAxMyAxMjo1NCAgICAgIDNNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LXJjMi50YXIuYnoyIj51dGlsLWxpbnV4LTIuMjQtcmMyLnRhci5iejI8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgMTEtT2N0LTIwMTMgMTE6MzcgICAgICA1TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjQtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTEtT2N0LTIwMTMgMTE6MzcgICAgICA3TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNC1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAxMS1PY3QtMjAxMyAxMTozNyAgICAgODM2DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4yNC1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAxMS1PY3QtMjAxMyAxMTozNyAgICAgIDNNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjQuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTQgMTM6MzMgICAgICA3TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjQuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTQgMTM6MzMgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC4xLnRhci54eiI+dXRpbC1saW51eC0yLjI0LjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUphbi0yMDE0IDEzOjMzICAgICAgM00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjQuMi50YXIuZ3oiPnV0aWwtbGludXgtMi4yNC4yLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BcHItMjAxNCAxMDoxNyAgICAgIDdNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LjIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNC4yLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BcHItMjAxNCAxMDoxNyAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LjIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjQuMi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtQXByLTIwMTQgMTA6MTcgICAgICAzTQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC50YXIuYnoyIj51dGlsLWxpbnV4LTIuMjQudGFyLmJ6MjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtT2N0LTIwMTMgMTM6NDkgICAgICA1TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC50YXIuZ3oiPnV0aWwtbGludXgtMi4yNC50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1PY3QtMjAxMyAxMzo0OSAgICAgIDdNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjQudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtT2N0LTIwMTMgMTM6NDkgICAgIDgzNg0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC50YXIueHoiPnV0aWwtbGludXgtMi4yNC50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1PY3QtMjAxMyAxMzo0OSAgICAgIDNNDQorPGEgaHJlZj0idjIuMjQtQ2hhbmdlTG9nIj52Mi4yNC1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtT2N0LTIwMTMgMTM6NDkgICAgIDIySw0KKzxhIGhyZWY9InYyLjI0LUNoYW5nZUxvZy5zaWduIj52Mi4yNC1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtT2N0LTIwMTMgMTM6NDkgICAgIDgzNg0KKzxhIGhyZWY9InYyLjI0LVJlbGVhc2VOb3RlcyI+djIuMjQtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLU9jdC0yMDEzIDEzOjQ5ICAgICA0NEsNCis8YSBocmVmPSJ2Mi4yNC1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjQtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLU9jdC0yMDEzIDEzOjQ5ICAgICA4MzYNCis8YSBocmVmPSJ2Mi4yNC1yYzEtQ2hhbmdlTG9nIj52Mi4yNC1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjctU2VwLTIwMTMgMTI6NTQgICAgMjkySw0KKzxhIGhyZWY9InYyLjI0LXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMjQtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDI3LVNlcC0yMDEzIDEyOjU0ICAgICA4MzYNCis8YSBocmVmPSJ2Mi4yNC1yYzItQ2hhbmdlTG9nIj52Mi4yNC1yYzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtT2N0LTIwMTMgMTE6MzcgICAgIDQySw0KKzxhIGhyZWY9InYyLjI0LXJjMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjQtcmMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLU9jdC0yMDEzIDExOjM3ICAgICA4MzYNCis8YSBocmVmPSJ2Mi4yNC4xLUNoYW5nZUxvZyI+djIuMjQuMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUphbi0yMDE0IDEzOjMzICAgICAzOEsNCis8YSBocmVmPSJ2Mi4yNC4xLUNoYW5nZUxvZy5zaWduIj52Mi4yNC4xLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTQgMTM6MzMgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI0LjEtUmVsZWFzZU5vdGVzIj52Mi4yNC4xLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTQgMTM6MzMgICAgNDQ0OQ0KKzxhIGhyZWY9InYyLjI0LjEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjI0LjEtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAyMC1KYW4tMjAxNCAxMzozMyAgICAgODE5DQorPGEgaHJlZj0idjIuMjQuMi1DaGFuZ2VMb2ciPnYyLjI0LjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BcHItMjAxNCAxMDoxNyAgICAgNDdLDQorPGEgaHJlZj0idjIuMjQuMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjQuMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LUFwci0yMDE0IDEwOjE3ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNC4yLVJlbGVhc2VOb3RlcyI+djIuMjQuMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LUFwci0yMDE0IDEwOjE4ICAgIDU3NDgNCis8YSBocmVmPSJ2Mi4yNC4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yNC4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtQXByLTIwMTQgMTA6MTggICAgIDgxOQ0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjUvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjUvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTE2YzNiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNS9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjUvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNS88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtT2N0LTIwMTQgMTM6MDUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtT2N0LTIwMTQgMTM6MDYgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LU9jdC0yMDE0IDEzOjA4ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLU1heS0yMDE3IDEwOjUzICAgIDI3NTgNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjI1LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDE4LUp1bi0yMDE0IDEzOjMzICAgICAgN00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjUtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTgtSnVuLTIwMTQgMTM6MzMgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNS1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjUtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTgtSnVuLTIwMTQgMTM6MzMgICAgICAzTQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNS1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjUtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDItSnVsLTIwMTQgMTA6MDIgICAgICA3TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNS1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNS1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAwMi1KdWwtMjAxNCAxMDowMiAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4yNS1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAwMi1KdWwtMjAxNCAxMDowMiAgICAgIDNNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LjEtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjI1LjEtcmMxLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgIDI3LUF1Zy0yMDE0IDEzOjE4ICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUuMS1yYzEudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNS4xLXJjMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAyNy1BdWctMjAxNCAxMzoxOCAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LjEtcmMxLnRhci54eiI+dXRpbC1saW51eC0yLjI1LjEtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgIDI3LUF1Zy0yMDE0IDEzOjE4ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUuMS50YXIuZ3oiPnV0aWwtbGludXgtMi4yNS4xLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAwMy1TZXAtMjAxNCAxMDo0MSAgICAgIDhNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LjEudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNS4xLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAwMy1TZXAtMjAxNCAxMDo0MSAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LjEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjUuMS50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDMtU2VwLTIwMTQgMTA6NDEgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNS4yLnRhci5neiI+dXRpbC1saW51eC0yLjI1LjIudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LU9jdC0yMDE0IDEzOjA4ICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUuMi50YXIuc2lnbiI+dXRpbC1saW51eC0yLjI1LjIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDI0LU9jdC0yMDE0IDEzOjA4ICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUuMi50YXIueHoiPnV0aWwtbGludXgtMi4yNS4yLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1PY3QtMjAxNCAxMzowOCAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LnRhci5neiI+dXRpbC1saW51eC0yLjI1LnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUp1bC0yMDE0IDA5OjUwICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1KdWwtMjAxNCAwOTo1MCAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LnRhci54eiI+dXRpbC1saW51eC0yLjI1LnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUp1bC0yMDE0IDA5OjUwICAgICAgNE0NCis8YSBocmVmPSJ2Mi4yNS1DaGFuZ2VMb2ciPnYyLjI1LUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1KdWwtMjAxNCAwOTo1MCAgICAgNDFLDQorPGEgaHJlZj0idjIuMjUtQ2hhbmdlTG9nLnNpZ24iPnYyLjI1LUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1KdWwtMjAxNCAwOTo1MCAgICAgODE5DQorPGEgaHJlZj0idjIuMjUtUmVsZWFzZU5vdGVzIj52Mi4yNS1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItSnVsLTIwMTQgMDk6NTAgICAgIDYxSw0KKzxhIGhyZWY9InYyLjI1LVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yNS1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItSnVsLTIwMTQgMDk6NTAgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI1LXJjMS1DaGFuZ2VMb2ciPnYyLjI1LXJjMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOC1KdW4tMjAxNCAxMzozMyAgICA0ODlLDQorPGEgaHJlZj0idjIuMjUtcmMxLUNoYW5nZUxvZy5zaWduIj52Mi4yNS1yYzEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTgtSnVuLTIwMTQgMTM6MzMgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI1LXJjMi1DaGFuZ2VMb2ciPnYyLjI1LXJjMi1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMi1KdWwtMjAxNCAxMDowMiAgICAgMjdLDQorPGEgaHJlZj0idjIuMjUtcmMyLUNoYW5nZUxvZy5zaWduIj52Mi4yNS1yYzItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItSnVsLTIwMTQgMTA6MDIgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI1LjEtQ2hhbmdlTG9nIj52Mi4yNS4xLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDMtU2VwLTIwMTQgMTA6NDEgICAgNTgxNg0KKzxhIGhyZWY9InYyLjI1LjEtQ2hhbmdlTG9nLnNpZ24iPnYyLjI1LjEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMy1TZXAtMjAxNCAxMDo0MSAgICAgODE5DQorPGEgaHJlZj0idjIuMjUuMS1SZWxlYXNlTm90ZXMiPnYyLjI1LjEtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMy1TZXAtMjAxNCAxMDo1MiAgICAzMjIwDQorPGEgaHJlZj0idjIuMjUuMS1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjUuMS1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgIDAzLVNlcC0yMDE0IDEwOjUyICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNS4xLXJjMS1DaGFuZ2VMb2ciPnYyLjI1LjEtcmMxLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNy1BdWctMjAxNCAxMzoxOCAgICAgMjJLDQorPGEgaHJlZj0idjIuMjUuMS1yYzEtQ2hhbmdlTG9nLnNpZ24iPnYyLjI1LjEtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyNy1BdWctMjAxNCAxMzoxOCAgICAgODE5DQorPGEgaHJlZj0idjIuMjUuMi1DaGFuZ2VMb2ciPnYyLjI1LjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1PY3QtMjAxNCAxMzowOCAgICAgMjZLDQorPGEgaHJlZj0idjIuMjUuMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjUuMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LU9jdC0yMDE0IDEzOjA4ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNS4yLVJlbGVhc2VOb3RlcyI+djIuMjUuMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LU9jdC0yMDE0IDEzOjA4ICAgIDMwMTYNCis8YSBocmVmPSJ2Mi4yNS4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yNS4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtT2N0LTIwMTQgMTM6MDggICAgIDgxOQ0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjYvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjYvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTkxNDg5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNi9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjYvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNi88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTUgMTA6MzggICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTUgMTA6NDAgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTUgMTA6NDIgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLUFwci0yMDE1IDEwOjQzICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLU1heS0yMDE3IDEwOjU0ICAgIDI0ODANCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjYtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjI2LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUphbi0yMDE1IDEzOjE0ICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjYtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjYtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTQtSmFuLTIwMTUgMTM6MTQgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjYtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTQtSmFuLTIwMTUgMTM6MTQgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjYtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDQtRmViLTIwMTUgMTE6NDkgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNi1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAwNC1GZWItMjAxNSAxMTo0OSAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI2LXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4yNi1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAwNC1GZWItMjAxNSAxMTo0OSAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI2LjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjYuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMtTWFyLTIwMTUgMTQ6MjMgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjYuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTMtTWFyLTIwMTUgMTQ6MjMgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi4xLnRhci54eiI+dXRpbC1saW51eC0yLjI2LjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLU1hci0yMDE1IDE0OjIzICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjYuMi50YXIuZ3oiPnV0aWwtbGludXgtMi4yNi4yLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAzMC1BcHItMjAxNSAxMDo0NCAgICAgIDhNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI2LjIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNi4yLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAzMC1BcHItMjAxNSAxMDo0NCAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI2LjIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjYuMi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTUgMTA6NDQgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi50YXIuZ3oiPnV0aWwtbGludXgtMi4yNi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1GZWItMjAxNSAxMjo0NyAgICAgIDhNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI2LnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjYudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRmViLTIwMTUgMTI6NDcgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi50YXIueHoiPnV0aWwtbGludXgtMi4yNi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1GZWItMjAxNSAxMjo0NyAgICAgIDRNDQorPGEgaHJlZj0idjIuMjYtQ2hhbmdlTG9nIj52Mi4yNi1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRmViLTIwMTUgMTI6NDcgICAgIDMwSw0KKzxhIGhyZWY9InYyLjI2LUNoYW5nZUxvZy5zaWduIj52Mi4yNi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRmViLTIwMTUgMTI6NDcgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI2LVJlbGVhc2VOb3RlcyI+djIuMjYtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LUZlYi0yMDE1IDEyOjQ3ICAgICA1MUsNCis8YSBocmVmPSJ2Mi4yNi1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjYtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LUZlYi0yMDE1IDEyOjQ3ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNi1yYzEtQ2hhbmdlTG9nIj52Mi4yNi1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQtSmFuLTIwMTUgMTM6MTQgICAgMzYwSw0KKzxhIGhyZWY9InYyLjI2LXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMjYtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUphbi0yMDE1IDEzOjE0ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNi1yYzItQ2hhbmdlTG9nIj52Mi4yNi1yYzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDQtRmViLTIwMTUgMTE6NTAgICAgIDUxSw0KKzxhIGhyZWY9InYyLjI2LXJjMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjYtcmMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDA0LUZlYi0yMDE1IDExOjUwICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNi4xLUNoYW5nZUxvZyI+djIuMjYuMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLU1hci0yMDE1IDE0OjIzICAgICAzMksNCis8YSBocmVmPSJ2Mi4yNi4xLUNoYW5nZUxvZy5zaWduIj52Mi4yNi4xLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMtTWFyLTIwMTUgMTQ6MjMgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI2LjEtUmVsZWFzZU5vdGVzIj52Mi4yNi4xLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMtTWFyLTIwMTUgMTQ6MjMgICAgMjk0NA0KKzxhIGhyZWY9InYyLjI2LjEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjI2LjEtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAxMy1NYXItMjAxNSAxNDoyMyAgICAgODE5DQorPGEgaHJlZj0idjIuMjYuMi1DaGFuZ2VMb2ciPnYyLjI2LjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMC1BcHItMjAxNSAxMDo0NCAgICAgNThLDQorPGEgaHJlZj0idjIuMjYuMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjYuMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLUFwci0yMDE1IDEwOjQ0ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNi4yLVJlbGVhc2VOb3RlcyI+djIuMjYuMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLUFwci0yMDE1IDEwOjQ0ICAgIDU4MzQNCis8YSBocmVmPSJ2Mi4yNi4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yNi4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTUgMTA6NDQgICAgIDgxOQ0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjcvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjcvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGViMzY4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNy9pbmRleC5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjcvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNy88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItTm92LTIwMTUgMTE6MDEgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItTm92LTIwMTUgMTE6MDMgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItTm92LTIwMTUgMTE6MDQgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLU5vdi0yMDE1IDExOjA2ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLU1heS0yMDE3IDEwOjU0ICAgIDIxMjcNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjctcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjI3LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDE1IDExOjAxICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjctcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjctcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTUgMTE6MDEgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNy1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjctcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTUgMTE6MDEgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNy1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjctcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjQtQXVnLTIwMTUgMTE6MDQgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNy1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNy1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAyNC1BdWctMjAxNSAxMTowNCAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI3LXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4yNy1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BdWctMjAxNSAxMTowNCAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI3LjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjcuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItTm92LTIwMTUgMTE6MDYgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNy4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjcuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDItTm92LTIwMTUgMTE6MDYgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNy4xLnRhci54eiI+dXRpbC1saW51eC0yLjI3LjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLU5vdi0yMDE1IDExOjA2ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjcudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjcudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTUgMDg6MTcgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNy50YXIuc2lnbiI+dXRpbC1saW51eC0yLjI3LnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE1IDA4OjE3ICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjcudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjcudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTUgMDg6MTcgICAgICA0TQ0KKzxhIGhyZWY9InYyLjI3LUNoYW5nZUxvZyI+djIuMjctQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE1IDA4OjE3ICAgICAyMUsNCis8YSBocmVmPSJ2Mi4yNy1DaGFuZ2VMb2cuc2lnbiI+djIuMjctQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE1IDA4OjE3ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNy1SZWxlYXNlTm90ZXMiPnYyLjI3LVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNy1TZXAtMjAxNSAwODoxNyAgICAgMzVLDQorPGEgaHJlZj0idjIuMjctUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjI3LVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNy1TZXAtMjAxNSAwODoxNyAgICAgODE5DQorPGEgaHJlZj0idjIuMjctcmMxLUNoYW5nZUxvZyI+djIuMjctcmMxLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDE1IDExOjAxICAgIDI2M0sNCis8YSBocmVmPSJ2Mi4yNy1yYzEtQ2hhbmdlTG9nLnNpZ24iPnYyLjI3LXJjMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAzMS1KdWwtMjAxNSAxMTowMSAgICAgODE5DQorPGEgaHJlZj0idjIuMjctcmMyLUNoYW5nZUxvZyI+djIuMjctcmMyLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LUF1Zy0yMDE1IDExOjA0ICAgICAzOEsNCis8YSBocmVmPSJ2Mi4yNy1yYzItQ2hhbmdlTG9nLnNpZ24iPnYyLjI3LXJjMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BdWctMjAxNSAxMTowNCAgICAgODE5DQorPGEgaHJlZj0idjIuMjcuMS1DaGFuZ2VMb2ciPnYyLjI3LjEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMi1Ob3YtMjAxNSAxMTowNiAgICAgMThLDQorPGEgaHJlZj0idjIuMjcuMS1DaGFuZ2VMb2cuc2lnbiI+djIuMjcuMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLU5vdi0yMDE1IDExOjA2ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNy4xLVJlbGVhc2VOb3RlcyI+djIuMjcuMS1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLU5vdi0yMDE1IDExOjA2ICAgIDIxMDcNCis8YSBocmVmPSJ2Mi4yNy4xLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yNy4xLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMDItTm92LTIwMTUgMTE6MDYgICAgIDgxOQ0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjgvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjgvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmJhNmI0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yOC9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjgvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yOC88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTYgMTI6MDAgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTYgMTI6MDIgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTYgMTI6MDQgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE2IDEyOjA2ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLU1heS0yMDE3IDEwOjU1ICAgIDI0ODANCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjgtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjI4LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDExLU1hci0yMDE2IDExOjQ1ICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjgtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjgtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTEtTWFyLTIwMTYgMTE6NDUgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjgtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTEtTWFyLTIwMTYgMTE6NDUgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjgtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjktTWFyLTIwMTYgMDk6MDQgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yOC1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAyOS1NYXItMjAxNiAwOTowNCAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI4LXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4yOC1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyOS1NYXItMjAxNiAwOTowNCAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI4LjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjguMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtQXVnLTIwMTYgMTA6MDkgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjguMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTEtQXVnLTIwMTYgMTA6MDkgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC4xLnRhci54eiI+dXRpbC1saW51eC0yLjI4LjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLUF1Zy0yMDE2IDEwOjA5ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjguMi50YXIuZ3oiPnV0aWwtbGludXgtMi4yOC4yLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAwNy1TZXAtMjAxNiAxMjowNiAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI4LjIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yOC4yLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAwNy1TZXAtMjAxNiAxMjowNiAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI4LjIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjguMi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTYgMTI6MDYgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC50YXIuZ3oiPnV0aWwtbGludXgtMi4yOC50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi1BcHItMjAxNiAxMToyNiAgICAgIDhNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI4LnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjgudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTItQXByLTIwMTYgMTE6MjYgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC50YXIueHoiPnV0aWwtbGludXgtMi4yOC50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi1BcHItMjAxNiAxMToyNiAgICAgIDRNDQorPGEgaHJlZj0idjIuMjgtQ2hhbmdlTG9nIj52Mi4yOC1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTItQXByLTIwMTYgMTE6MjYgICAgIDEzSw0KKzxhIGhyZWY9InYyLjI4LUNoYW5nZUxvZy5zaWduIj52Mi4yOC1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTItQXByLTIwMTYgMTE6MjYgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI4LVJlbGVhc2VOb3RlcyI+djIuMjgtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLUFwci0yMDE2IDExOjI2ICAgICAzM0sNCis8YSBocmVmPSJ2Mi4yOC1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjgtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLUFwci0yMDE2IDExOjI2ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOC1yYzEtQ2hhbmdlTG9nIj52Mi4yOC1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtTWFyLTIwMTYgMTE6NDUgICAgMjY5Sw0KKzxhIGhyZWY9InYyLjI4LXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMjgtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLU1hci0yMDE2IDExOjQ1ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOC1yYzItQ2hhbmdlTG9nIj52Mi4yOC1yYzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjktTWFyLTIwMTYgMDk6MDQgICAgIDUySw0KKzxhIGhyZWY9InYyLjI4LXJjMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjgtcmMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5LU1hci0yMDE2IDA5OjA0ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOC4xLUNoYW5nZUxvZyI+djIuMjguMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLUF1Zy0yMDE2IDEwOjA5ICAgICAzN0sNCis8YSBocmVmPSJ2Mi4yOC4xLUNoYW5nZUxvZy5zaWduIj52Mi4yOC4xLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtQXVnLTIwMTYgMTA6MDkgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI4LjEtUmVsZWFzZU5vdGVzIj52Mi4yOC4xLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtQXVnLTIwMTYgMTA6MDkgICAgMzc0OA0KKzxhIGhyZWY9InYyLjI4LjEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjI4LjEtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAxMS1BdWctMjAxNiAxMDowOSAgICAgODE5DQorPGEgaHJlZj0idjIuMjguMi1DaGFuZ2VMb2ciPnYyLjI4LjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNy1TZXAtMjAxNiAxMjowNiAgICA4OTAwDQorPGEgaHJlZj0idjIuMjguMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjguMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE2IDEyOjA2ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOC4yLVJlbGVhc2VOb3RlcyI+djIuMjguMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE2IDEyOjA2ICAgIDExNjENCis8YSBocmVmPSJ2Mi4yOC4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yOC4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTYgMTI6MDYgICAgIDgxOQ0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjkvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjkvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTZhMjU1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yOS9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjkvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yOS88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItRmViLTIwMTcgMTU6MjAgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItRmViLTIwMTcgMTU6MjIgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItRmViLTIwMTcgMTU6MjQgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUZlYi0yMDE3IDE1OjI2ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLU1heS0yMDE3IDEwOjU1ICAgIDI0ODANCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjktcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjI5LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDMwLVNlcC0yMDE2IDA5OjU1ICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjktcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjktcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMzAtU2VwLTIwMTYgMDk6NTUgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjktcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMzAtU2VwLTIwMTYgMDk6NTUgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjktcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTYgMTM6MTMgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yOS1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxNiAxMzoxMyAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI5LXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4yOS1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxNiAxMzoxMyAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI5LjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjkuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTcgMTQ6MDIgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjkuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTcgMTQ6MDIgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS4xLnRhci54eiI+dXRpbC1saW51eC0yLjI5LjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUphbi0yMDE3IDE0OjAyICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjkuMi50YXIuZ3oiPnV0aWwtbGludXgtMi4yOS4yLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1GZWItMjAxNyAxNToyNiAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI5LjIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yOS4yLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyMi1GZWItMjAxNyAxNToyNiAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI5LjIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjkuMi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItRmViLTIwMTcgMTU6MjYgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS50YXIuZ3oiPnV0aWwtbGludXgtMi4yOS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwOC1Ob3YtMjAxNiAxMToyMyAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI5LnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjkudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDgtTm92LTIwMTYgMTE6MjMgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS50YXIueHoiPnV0aWwtbGludXgtMi4yOS50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwOC1Ob3YtMjAxNiAxMToyMyAgICAgIDRNDQorPGEgaHJlZj0idjIuMjktQ2hhbmdlTG9nIj52Mi4yOS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDgtTm92LTIwMTYgMTE6MjMgICAgIDI4Sw0KKzxhIGhyZWY9InYyLjI5LUNoYW5nZUxvZy5zaWduIj52Mi4yOS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDgtTm92LTIwMTYgMTE6MjMgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI5LVJlbGVhc2VOb3RlcyI+djIuMjktUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA4LU5vdi0yMDE2IDExOjI0ICAgICAyNksNCis8YSBocmVmPSJ2Mi4yOS1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjktUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA4LU5vdi0yMDE2IDExOjI0ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOS1yYzEtQ2hhbmdlTG9nIj52Mi4yOS1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtU2VwLTIwMTYgMDk6NTUgICAgMjE5Sw0KKzxhIGhyZWY9InYyLjI5LXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMjktcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLVNlcC0yMDE2IDA5OjU1ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOS1yYzItQ2hhbmdlTG9nIj52Mi4yOS1yYzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTYgMTM6MTMgICAgIDE5Sw0KKzxhIGhyZWY9InYyLjI5LXJjMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjktcmMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LU9jdC0yMDE2IDEzOjEzICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOS4xLUNoYW5nZUxvZyI+djIuMjkuMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUphbi0yMDE3IDE0OjAyICAgICA0N0sNCis8YSBocmVmPSJ2Mi4yOS4xLUNoYW5nZUxvZy5zaWduIj52Mi4yOS4xLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTcgMTQ6MDIgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI5LjEtUmVsZWFzZU5vdGVzIj52Mi4yOS4xLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTcgMTQ6MDIgICAgNTA2Nw0KKzxhIGhyZWY9InYyLjI5LjEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjI5LjEtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAyMC1KYW4tMjAxNyAxNDowMiAgICAgODE5DQorPGEgaHJlZj0idjIuMjkuMi1DaGFuZ2VMb2ciPnYyLjI5LjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1GZWItMjAxNyAxNToyNiAgICAgMTRLDQorPGEgaHJlZj0idjIuMjkuMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjkuMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUZlYi0yMDE3IDE1OjI2ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOS4yLVJlbGVhc2VOb3RlcyI+djIuMjkuMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUZlYi0yMDE3IDE1OjI2ICAgIDIwMTINCis8YSBocmVmPSJ2Mi4yOS4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yOS4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMjItRmViLTIwMTcgMTU6MjYgICAgIDgxOQ0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzAvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzAvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDQxYmMwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMC9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzAvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMC88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtU2VwLTIwMTcgMDk6NDkgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtU2VwLTIwMTcgMDk6NTAgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtU2VwLTIwMTcgMDk6NTAgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLVNlcC0yMDE3IDA5OjUxICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLVNlcC0yMDE3IDA5OjUyICAgIDI0ODANCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzAtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjMwLXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDEyLU1heS0yMDE3IDEyOjAyICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzAtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzAtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTItTWF5LTIwMTcgMTI6MDIgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzAtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTItTWF5LTIwMTcgMTI6MDIgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzAtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjMtTWF5LTIwMTcgMTA6NDIgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zMC1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAyMy1NYXktMjAxNyAxMDo0MiAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMwLXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4zMC1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyMy1NYXktMjAxNyAxMDo0MiAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMwLjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzAuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSnVsLTIwMTcgMDk6MzMgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzAuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjAtSnVsLTIwMTcgMDk6MzMgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC4xLnRhci54eiI+dXRpbC1saW51eC0yLjMwLjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUp1bC0yMDE3IDA5OjMzICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzAuMi50YXIuZ3oiPnV0aWwtbGludXgtMi4zMC4yLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1TZXAtMjAxNyAwOTo1MSAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMwLjIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zMC4yLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyMS1TZXAtMjAxNyAwOTo1MSAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMwLjIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzAuMi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtU2VwLTIwMTcgMDk6NTEgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC50YXIuZ3oiPnV0aWwtbGludXgtMi4zMC50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMi1KdW4tMjAxNyAxMDo0NCAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMwLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzAudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItSnVuLTIwMTcgMTA6NDQgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC50YXIueHoiPnV0aWwtbGludXgtMi4zMC50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMi1KdW4tMjAxNyAxMDo0NCAgICAgIDRNDQorPGEgaHJlZj0idjIuMzAtQ2hhbmdlTG9nIj52Mi4zMC1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItSnVuLTIwMTcgMTA6NDQgICAgIDI4Sw0KKzxhIGhyZWY9InYyLjMwLUNoYW5nZUxvZy5zaWduIj52Mi4zMC1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItSnVuLTIwMTcgMTA6NDQgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjMwLVJlbGVhc2VOb3RlcyI+djIuMzAtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLUp1bi0yMDE3IDEwOjQ0ICAgICAzNEsNCis8YSBocmVmPSJ2Mi4zMC1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMzAtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLUp1bi0yMDE3IDEwOjQ0ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4zMC1yYzEtQ2hhbmdlTG9nIj52Mi4zMC1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMtTWF5LTIwMTcgMTA6NDIgICAgMzE4Sw0KKzxhIGhyZWY9InYyLjMwLXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMzAtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLU1heS0yMDE3IDEwOjQyICAgICA4MTkNCis8YSBocmVmPSJ2Mi4zMC1yYzItQ2hhbmdlTG9nIj52Mi4zMC1yYzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMtTWF5LTIwMTcgMTA6NDIgICAgIDE5Sw0KKzxhIGhyZWY9InYyLjMwLXJjMi1DaGFuZ2VMb2cuc2lnbiI+djIuMzAtcmMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLU1heS0yMDE3IDEwOjQyICAgICA4MTkNCis8YSBocmVmPSJ2Mi4zMC4xLUNoYW5nZUxvZyI+djIuMzAuMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUp1bC0yMDE3IDA5OjMzICAgICAyMEsNCis8YSBocmVmPSJ2Mi4zMC4xLUNoYW5nZUxvZy5zaWduIj52Mi4zMC4xLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSnVsLTIwMTcgMDk6MzMgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjMwLjEtUmVsZWFzZU5vdGVzIj52Mi4zMC4xLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSnVsLTIwMTcgMDk6MzMgICAgMTkwMQ0KKzxhIGhyZWY9InYyLjMwLjEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjMwLjEtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAyMC1KdWwtMjAxNyAwOTozMyAgICAgODE5DQorPGEgaHJlZj0idjIuMzAuMi1DaGFuZ2VMb2ciPnYyLjMwLjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1TZXAtMjAxNyAwOTo1MSAgICAgMTNLDQorPGEgaHJlZj0idjIuMzAuMi1DaGFuZ2VMb2cuc2lnbiI+djIuMzAuMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLVNlcC0yMDE3IDA5OjUxICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMC4yLVJlbGVhc2VOb3RlcyI+djIuMzAuMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLVNlcC0yMDE3IDA5OjUxICAgIDE2MDQNCis8YSBocmVmPSJ2Mi4zMC4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4zMC4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtU2VwLTIwMTcgMDk6NTEgICAgIDgzMw0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzEvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzEvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTdlNGUwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMS9pbmRleC5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzEvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMS88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRGVjLTIwMTcgMTU6MTYgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRGVjLTIwMTcgMTU6MTcgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRGVjLTIwMTcgMTU6MTcgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LURlYy0yMDE3IDE1OjE3ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LURlYy0yMDE3IDE1OjIwICAgIDIxMjcNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzEtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjMxLXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDIyLVNlcC0yMDE3IDEwOjM5ICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzEtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzEtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMjItU2VwLTIwMTcgMTA6MzkgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMS1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzEtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjItU2VwLTIwMTcgMTA6MzkgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMS1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzEtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDMtT2N0LTIwMTcgMTY6MDMgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMS1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zMS1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAwMy1PY3QtMjAxNyAxNjowMyAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMxLXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4zMS1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAwMy1PY3QtMjAxNyAxNjowMyAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMxLjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzEuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRGVjLTIwMTcgMTU6MTggICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMS4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzEuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTktRGVjLTIwMTcgMTU6MTggICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMS4xLnRhci54eiI+dXRpbC1saW51eC0yLjMxLjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LURlYy0yMDE3IDE1OjE4ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTcgMTE6MjcgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LU9jdC0yMDE3IDExOjI3ICAgICA4MzMNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTcgMTE6MjcgICAgICA0TQ0KKzxhIGhyZWY9InYyLjMxLUNoYW5nZUxvZyI+djIuMzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LU9jdC0yMDE3IDExOjI3ICAgICAxNUsNCis8YSBocmVmPSJ2Mi4zMS1DaGFuZ2VMb2cuc2lnbiI+djIuMzEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LU9jdC0yMDE3IDExOjI3ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMS1SZWxlYXNlTm90ZXMiPnYyLjMxLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxNyAxMToyNyAgICAgMzFLDQorPGEgaHJlZj0idjIuMzEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjMxLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxNyAxMToyNyAgICAgODMzDQorPGEgaHJlZj0idjIuMzEtcmMxLUNoYW5nZUxvZyI+djIuMzEtcmMxLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLVNlcC0yMDE3IDEwOjM5ICAgIDI5MEsNCis8YSBocmVmPSJ2Mi4zMS1yYzEtQ2hhbmdlTG9nLnNpZ24iPnYyLjMxLXJjMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1TZXAtMjAxNyAxMDozOSAgICAgODMzDQorPGEgaHJlZj0idjIuMzEtcmMyLUNoYW5nZUxvZyI+djIuMzEtcmMyLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAzLU9jdC0yMDE3IDE2OjAzICAgICAxMksNCis8YSBocmVmPSJ2Mi4zMS1yYzItQ2hhbmdlTG9nLnNpZ24iPnYyLjMxLXJjMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAwMy1PY3QtMjAxNyAxNjowMyAgICAgODMzDQorPGEgaHJlZj0idjIuMzEuMS1DaGFuZ2VMb2ciPnYyLjMxLjEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1EZWMtMjAxNyAxNToxOCAgICAgMjdLDQorPGEgaHJlZj0idjIuMzEuMS1DaGFuZ2VMb2cuc2lnbiI+djIuMzEuMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LURlYy0yMDE3IDE1OjE4ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMS4xLVJlbGVhc2VOb3RlcyI+djIuMzEuMS1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LURlYy0yMDE3IDE1OjE4ICAgIDMxNzUNCis8YSBocmVmPSJ2Mi4zMS4xLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4zMS4xLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRGVjLTIwMTcgMTU6MTggICAgIDgzMw0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzIvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzIvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzczZTk4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMi9pbmRleC5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzIvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMi88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYtSnVsLTIwMTggMTE6MjcgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYtSnVsLTIwMTggMTE6MjggICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYtSnVsLTIwMTggMTE6MjggICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LUp1bC0yMDE4IDExOjI4ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LUp1bC0yMDE4IDExOjMwICAgIDIxMjcNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzItcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjMyLXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDEzLUZlYi0yMDE4IDEyOjI1ICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzItcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzItcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTMtRmViLTIwMTggMTI6MjUgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMi1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzItcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTMtRmViLTIwMTggMTI6MjUgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMi1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzItcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDEtTWFyLTIwMTggMTM6MzggICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMi1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zMi1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAwMS1NYXItMjAxOCAxMzozOCAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMyLXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4zMi1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAwMS1NYXItMjAxOCAxMzozOCAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMyLjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzIuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYtSnVsLTIwMTggMTE6MjkgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMi4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzIuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTYtSnVsLTIwMTggMTE6MjkgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMi4xLnRhci54eiI+dXRpbC1saW51eC0yLjMyLjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LUp1bC0yMDE4IDExOjI5ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzIudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtTWFyLTIwMTggMTQ6NDkgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMi50YXIuc2lnbiI+dXRpbC1saW51eC0yLjMyLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLU1hci0yMDE4IDE0OjQ5ICAgICA4MzMNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtTWFyLTIwMTggMTQ6NDkgICAgICA0TQ0KKzxhIGhyZWY9InYyLjMyLUNoYW5nZUxvZyI+djIuMzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLU1hci0yMDE4IDE0OjQ5ICAgICAzNksNCis8YSBocmVmPSJ2Mi4zMi1DaGFuZ2VMb2cuc2lnbiI+djIuMzItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLU1hci0yMDE4IDE0OjQ5ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMi1SZWxlYXNlTm90ZXMiPnYyLjMyLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1NYXItMjAxOCAxNDo0OSAgICAgMjFLDQorPGEgaHJlZj0idjIuMzItUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjMyLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1NYXItMjAxOCAxNDo0OSAgICAgODMzDQorPGEgaHJlZj0idjIuMzItcmMxLUNoYW5nZUxvZyI+djIuMzItcmMxLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLUZlYi0yMDE4IDEyOjI1ICAgIDE3NEsNCis8YSBocmVmPSJ2Mi4zMi1yYzEtQ2hhbmdlTG9nLnNpZ24iPnYyLjMyLXJjMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAxMy1GZWItMjAxOCAxMjoyNSAgICAgODMzDQorPGEgaHJlZj0idjIuMzItcmMyLUNoYW5nZUxvZyI+djIuMzItcmMyLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAxLU1hci0yMDE4IDEzOjM4ICAgICAyMUsNCis8YSBocmVmPSJ2Mi4zMi1yYzItQ2hhbmdlTG9nLnNpZ24iPnYyLjMyLXJjMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAwMS1NYXItMjAxOCAxMzozOCAgICAgODMzDQorPGEgaHJlZj0idjIuMzIuMS1DaGFuZ2VMb2ciPnYyLjMyLjEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi1KdWwtMjAxOCAxMToyOSAgICAgMzFLDQorPGEgaHJlZj0idjIuMzIuMS1DaGFuZ2VMb2cuc2lnbiI+djIuMzIuMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LUp1bC0yMDE4IDExOjI5ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMi4xLVJlbGVhc2VOb3RlcyI+djIuMzIuMS1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LUp1bC0yMDE4IDExOjI5ICAgIDM0MjUNCis8YSBocmVmPSJ2Mi4zMi4xLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4zMi4xLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMTYtSnVsLTIwMTggMTE6MjkgICAgIDgzMw0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzMvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzMvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDk1MzA1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMy9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzMvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zMy88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktQXByLTIwMTkgMTM6NTUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktQXByLTIwMTkgMTM6NTYgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktQXByLTIwMTkgMTM6NTYgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUFwci0yMDE5IDEzOjU2ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUFwci0yMDE5IDE0OjAxICAgIDI0ODANCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzMtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjMzLXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDI1LVNlcC0yMDE4IDEwOjM0ICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzMtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzMtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMjUtU2VwLTIwMTggMTA6MzQgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzMtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjUtU2VwLTIwMTggMTA6MzQgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzMtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTggMTE6NDQgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zMy1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxOCAxMTo0NCAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMzLXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4zMy1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxOCAxMTo0NCAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMzLjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzMuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktSmFuLTIwMTkgMTA6MjggICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzMuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDktSmFuLTIwMTkgMTA6MjggICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy4xLnRhci54eiI+dXRpbC1saW51eC0yLjMzLjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUphbi0yMDE5IDEwOjI4ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzMuMi50YXIuZ3oiPnV0aWwtbGludXgtMi4zMy4yLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAwOS1BcHItMjAxOSAxMzo1NyAgICAgMTBNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMzLjIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zMy4yLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAwOS1BcHItMjAxOSAxMzo1NyAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMzLjIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzMuMi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktQXByLTIwMTkgMTM6NTcgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy50YXIuZ3oiPnV0aWwtbGludXgtMi4zMy50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNi1Ob3YtMjAxOCAxMToyNSAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMzLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzMudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDYtTm92LTIwMTggMTE6MjUgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy50YXIueHoiPnV0aWwtbGludXgtMi4zMy50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNi1Ob3YtMjAxOCAxMToyNSAgICAgIDRNDQorPGEgaHJlZj0idjIuMzMtQ2hhbmdlTG9nIj52Mi4zMy1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDYtTm92LTIwMTggMTE6MjUgICAgNzk3Nw0KKzxhIGhyZWY9InYyLjMzLUNoYW5nZUxvZy5zaWduIj52Mi4zMy1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDYtTm92LTIwMTggMTE6MjUgICAgIDgzMw0KKzxhIGhyZWY9InYyLjMzLVJlbGVhc2VOb3RlcyI+djIuMzMtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA2LU5vdi0yMDE4IDExOjI1ICAgICAyN0sNCis8YSBocmVmPSJ2Mi4zMy1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMzMtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA2LU5vdi0yMDE4IDExOjI1ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMy1yYzEtQ2hhbmdlTG9nIj52Mi4zMy1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUtU2VwLTIwMTggMTA6MzQgICAgMjEwSw0KKzxhIGhyZWY9InYyLjMzLXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMzMtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1LVNlcC0yMDE4IDEwOjM0ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMy1yYzItQ2hhbmdlTG9nIj52Mi4zMy1yYzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTggMTE6NDQgICAgIDE4Sw0KKzxhIGhyZWY9InYyLjMzLXJjMi1DaGFuZ2VMb2cuc2lnbiI+djIuMzMtcmMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LU9jdC0yMDE4IDExOjQ0ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMy4xLUNoYW5nZUxvZyI+djIuMzMuMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUphbi0yMDE5IDEwOjI4ICAgICAxN0sNCis8YSBocmVmPSJ2Mi4zMy4xLUNoYW5nZUxvZy5zaWduIj52Mi4zMy4xLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktSmFuLTIwMTkgMTA6MjggICAgIDgzMw0KKzxhIGhyZWY9InYyLjMzLjEtUmVsZWFzZU5vdGVzIj52Mi4zMy4xLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktSmFuLTIwMTkgMTA6MjggICAgMTg5OQ0KKzxhIGhyZWY9InYyLjMzLjEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjMzLjEtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAwOS1KYW4tMjAxOSAxMDoyOCAgICAgODMzDQorPGEgaHJlZj0idjIuMzMuMi1DaGFuZ2VMb2ciPnYyLjMzLjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwOS1BcHItMjAxOSAxMzo1NyAgICAgMjFLDQorPGEgaHJlZj0idjIuMzMuMi1DaGFuZ2VMb2cuc2lnbiI+djIuMzMuMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUFwci0yMDE5IDEzOjU3ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMy4yLVJlbGVhc2VOb3RlcyI+djIuMzMuMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUFwci0yMDE5IDEzOjU3ICAgIDI1NjYNCis8YSBocmVmPSJ2Mi4zMy4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4zMy4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMDktQXByLTIwMTkgMTM6NTcgICAgIDgzMw0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzQvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzQvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDlkOWM4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zNC9pbmRleC5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzQvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zNC88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQtSnVuLTIwMTkgMTA6NDUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQtSnVuLTIwMTkgMTA6NDUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQtSnVuLTIwMTkgMTA6NDUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUp1bi0yMDE5IDEwOjQ2ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUp1bi0yMDE5IDEwOjUxICAgIDE3NzQNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzQtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjM0LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDMwLUFwci0yMDE5IDEwOjI0ICAgICAxME0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzQtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzQtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTkgMTA6MjQgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zNC1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzQtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTkgMTA6MjQgICAgICA1TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zNC1yYzIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzQtcmMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMzAtTWF5LTIwMTkgMTA6MjQgICAgIDEwTQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zNC1yYzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zNC1yYzIudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAzMC1NYXktMjAxOSAxMDoyNCAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjM0LXJjMi50YXIueHoiPnV0aWwtbGludXgtMi4zNC1yYzIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAzMC1NYXktMjAxOSAxMDoyNCAgICAgIDVNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjM0LnRhci5neiI+dXRpbC1saW51eC0yLjM0LnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUp1bi0yMDE5IDEwOjQ2ICAgICAxME0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzQudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zNC50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAxNC1KdW4tMjAxOSAxMDo0NiAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjM0LnRhci54eiI+dXRpbC1saW51eC0yLjM0LnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUp1bi0yMDE5IDEwOjQ2ICAgICAgNU0NCis8YSBocmVmPSJ2Mi4zNC1DaGFuZ2VMb2ciPnYyLjM0LUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNC1KdW4tMjAxOSAxMDo0NiAgICAgMTRLDQorPGEgaHJlZj0idjIuMzQtQ2hhbmdlTG9nLnNpZ24iPnYyLjM0LUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNC1KdW4tMjAxOSAxMDo0NiAgICAgODMzDQorPGEgaHJlZj0idjIuMzQtUmVsZWFzZU5vdGVzIj52Mi4zNC1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQtSnVuLTIwMTkgMTA6NDYgICAgIDI3Sw0KKzxhIGhyZWY9InYyLjM0LVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4zNC1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQtSnVuLTIwMTkgMTA6NDYgICAgIDgzMw0KKzxhIGhyZWY9InYyLjM0LXJjMS1DaGFuZ2VMb2ciPnYyLjM0LXJjMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMC1BcHItMjAxOSAxMDoyNCAgICAxNjdLDQorPGEgaHJlZj0idjIuMzQtcmMxLUNoYW5nZUxvZy5zaWduIj52Mi4zNC1yYzEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTkgMTA6MjQgICAgIDgzMw0KKzxhIGhyZWY9InYyLjM0LXJjMi1DaGFuZ2VMb2ciPnYyLjM0LXJjMi1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMC1NYXktMjAxOSAxMDoyNCAgICAgNTdLDQorPGEgaHJlZj0idjIuMzQtcmMyLUNoYW5nZUxvZy5zaWduIj52Mi4zNC1yYzItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtTWF5LTIwMTkgMTA6MjQgICAgIDgzMw0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzUvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzUvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTcxNGQzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zNS9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzUvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4zNS88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtRGVjLTIwMTkgMTA6MDQgICAgICAgLQ0KKzxhIGhyZWY9ImxpYmZkaXNrLWRvY3MvIj5saWJmZGlzay1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtRGVjLTIwMTkgMTA6MDUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtRGVjLTIwMTkgMTA6MDUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYnNtYXJ0Y29scy1kb2NzLyI+bGlic21hcnRjb2xzLWRvY3MvPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjA1ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjExICAgIDEyNDINCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzUtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjM1LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjA2ICAgICAxME0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzUtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzUtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTEtRGVjLTIwMTkgMTA6MDYgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zNS1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzUtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTEtRGVjLTIwMTkgMTA6MDYgICAgICA1TQ0KKzxhIGhyZWY9InYyLjM1LVJlbGVhc2VOb3RlcyI+djIuMzUtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjA2ICAgICAyMUsNCis8YSBocmVmPSJ2Mi4zNS1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMzUtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjA2ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zNS1yYzEtQ2hhbmdlTG9nIj52Mi4zNS1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtRGVjLTIwMTkgMTA6MDYgICAgMjI4Sw0KKzxhIGhyZWY9InYyLjM1LXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMzUtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjA2ICAgICA4MzMNCis8L3ByZT48aHI+PC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3JlbGVhc2VzL2VnbGliYy9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9yZWxlYXNlcy9lZ2xpYmMvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjY3OTQwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9yZWxlYXNlcy9lZ2xpYmMvaW5kZXguaHRtbApAQCAtMCwwICsxLDIxIEBACis8aHRtbD4NCis8aGVhZD48dGl0bGU+SW5kZXggb2YgL3JlbGVhc2VzL2VnbGliYy88L3RpdGxlPjwvaGVhZD4NCis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+DQorPGgxPkluZGV4IG9mIC9yZWxlYXNlcy9lZ2xpYmMvPC9oMT48aHI+PHByZT48YSBocmVmPSIuLi8iPi4uLzwvYT4NCis8YSBocmVmPSJlZ2xpYmMtMi4xNi1zdm5yMjEyMjQudGFyLmJ6MiI+ZWdsaWJjLTIuMTYtc3ZucjIxMjI0LnRhci5iejI8L2E+ICAgICAgICAgICAgICAgICAgICAgIDE3LU9jdC0yMDEyIDE4OjAxICAgICAgICAgICAgMTczMTA2NTYNCis8YSBocmVmPSJlZ2xpYmMtMi4xNi1zdm5yMjEyMjQudGFyLmJ6Mi5tZDUiPmVnbGliYy0yLjE2LXN2bnIyMTIyNC50YXIuYnoyLm1kNTwvYT4gICAgICAgICAgICAgICAgICAxNy1PY3QtMjAxMiAyMTo1MyAgICAgICAgICAgICAgICAgIDY0DQorPGEgaHJlZj0iZWdsaWJjLTIuMTYtc3ZucjIxMjI0LnRhci5iejIuc2hhMSI+ZWdsaWJjLTIuMTYtc3ZucjIxMjI0LnRhci5iejIuc2hhMTwvYT4gICAgICAgICAgICAgICAgIDE3LU9jdC0yMDEyIDIxOjUzICAgICAgICAgICAgICAgICAgNzINCis8YSBocmVmPSJlZ2xpYmMtMi4xNy1zdm5yMjIwNjQudGFyLmJ6MiI+ZWdsaWJjLTIuMTctc3ZucjIyMDY0LnRhci5iejI8L2E+ICAgICAgICAgICAgICAgICAgICAgIDA0LUphbi0yMDEzIDA1OjQ0ICAgICAgICAgICAgMTc1NjU1MTkNCis8YSBocmVmPSJlZ2xpYmMtMi4xNy1zdm5yMjIwNjQudGFyLmJ6Mi5hc2MiPmVnbGliYy0yLjE3LXN2bnIyMjA2NC50YXIuYnoyLmFzYzwvYT4gICAgICAgICAgICAgICAgICAwNC1KYW4tMjAxMyAwNTo0NSAgICAgICAgICAgICAgICAgMzAyDQorPGEgaHJlZj0iZWdsaWJjLTIuMTctc3ZucjIyMDY0LnRhci5iejIubWQ1Ij5lZ2xpYmMtMi4xNy1zdm5yMjIwNjQudGFyLmJ6Mi5tZDU8L2E+ICAgICAgICAgICAgICAgICAgMDQtSmFuLTIwMTMgMDU6NDQgICAgICAgICAgICAgICAgICA2NA0KKzxhIGhyZWY9ImVnbGliYy0yLjE3LXN2bnIyMjA2NC50YXIuYnoyLnNoYTEiPmVnbGliYy0yLjE3LXN2bnIyMjA2NC50YXIuYnoyLnNoYTE8L2E+ICAgICAgICAgICAgICAgICAwNC1KYW4tMjAxMyAwNTo0NCAgICAgICAgICAgICAgICAgIDcyDQorPGEgaHJlZj0iZWdsaWJjLTIuMTgtc3ZucjIzNzg3LnRhci5iejIiPmVnbGliYy0yLjE4LXN2bnIyMzc4Ny50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAyMS1BdWctMjAxMyAwNTozNiAgICAgICAgICAgIDE3ODYyNzczDQorPGEgaHJlZj0iZWdsaWJjLTIuMTgtc3ZucjIzNzg3LnRhci5iejIuYXNjIj5lZ2xpYmMtMi4xOC1zdm5yMjM3ODcudGFyLmJ6Mi5hc2M8L2E+ICAgICAgICAgICAgICAgICAgMjEtQXVnLTIwMTMgMDU6MzYgICAgICAgICAgICAgICAgIDMwMg0KKzxhIGhyZWY9ImVnbGliYy0yLjE4LXN2bnIyMzc4Ny50YXIuYnoyLm1kNSI+ZWdsaWJjLTIuMTgtc3ZucjIzNzg3LnRhci5iejIubWQ1PC9hPiAgICAgICAgICAgICAgICAgIDIxLUF1Zy0yMDEzIDA1OjM2ICAgICAgICAgICAgICAgICAgNjQNCis8YSBocmVmPSJlZ2xpYmMtMi4xOC1zdm5yMjM3ODcudGFyLmJ6Mi5zaGExIj5lZ2xpYmMtMi4xOC1zdm5yMjM3ODcudGFyLmJ6Mi5zaGExPC9hPiAgICAgICAgICAgICAgICAgMjEtQXVnLTIwMTMgMDU6MzYgICAgICAgICAgICAgICAgICA3Mg0KKzxhIGhyZWY9ImVnbGliYy0yLjE5LXN2bnIyNTI0My50YXIuYnoyIj5lZ2xpYmMtMi4xOS1zdm5yMjUyNDMudGFyLmJ6MjwvYT4gICAgICAgICAgICAgICAgICAgICAgMDgtRmViLTIwMTQgMTA6MDYgICAgICAgICAgICAxODg3MzYyMA0KKzxhIGhyZWY9ImVnbGliYy0yLjE5LXN2bnIyNTI0My50YXIuYnoyLmFzYyI+ZWdsaWJjLTIuMTktc3ZucjI1MjQzLnRhci5iejIuYXNjPC9hPiAgICAgICAgICAgICAgICAgIDA4LUZlYi0yMDE0IDEwOjA2ICAgICAgICAgICAgICAgICAyODUNCis8YSBocmVmPSJlZ2xpYmMtMi4xOS1zdm5yMjUyNDMudGFyLmJ6Mi5tZDUiPmVnbGliYy0yLjE5LXN2bnIyNTI0My50YXIuYnoyLm1kNTwvYT4gICAgICAgICAgICAgICAgICAwOC1GZWItMjAxNCAxMDowNiAgICAgICAgICAgICAgICAgIDY0DQorPGEgaHJlZj0iZWdsaWJjLTIuMTktc3ZucjI1MjQzLnRhci5iejIuc2hhMSI+ZWdsaWJjLTIuMTktc3ZucjI1MjQzLnRhci5iejIuc2hhMTwvYT4gICAgICAgICAgICAgICAgIDA4LUZlYi0yMDE0IDEwOjA2ICAgICAgICAgICAgICAgICAgNzINCis8L3ByZT48aHI+PC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3JlbGVhc2VzL2dudS1jb25maWcvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcmVsZWFzZXMvZ251LWNvbmZpZy9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MWFhNDgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3JlbGVhc2VzL2dudS1jb25maWcvaW5kZXguaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcmVsZWFzZXMvZ251LWNvbmZpZy88L3RpdGxlPjwvaGVhZD4NCis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+DQorPGgxPkluZGV4IG9mIC9yZWxlYXNlcy9nbnUtY29uZmlnLzwvaDE+PGhyPjxwcmU+PGEgaHJlZj0iLi4vIj4uLi88L2E+DQorPGEgaHJlZj0iU0hBMjU2U1VNIj5TSEEyNTZTVU08L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDMtT2N0LTIwMTIgMTc6MjMgICAgICAgICAgICAgICAgIDE5MA0KKzxhIGhyZWY9ImdudS1jb25maWctMjAxMjA4MTQudGFyLmJ6MiI+Z251LWNvbmZpZy0yMDEyMDgxNC50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAgIDE4LVNlcC0yMDEyIDA5OjI4ICAgICAgICAgICAgICAgNDMwMjYNCis8YSBocmVmPSJnbnUtY29uZmlnLXlvY3RvLTIwMTExMTExLnRneiI+Z251LWNvbmZpZy15b2N0by0yMDExMTExMS50Z3o8L2E+ICAgICAgICAgICAgICAgICAgICAgIDA4LU1heS0yMDEyIDIxOjExICAgICAgICAgICAgICAgNDg3NjINCis8L3ByZT48aHI+PC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3JlbGVhc2VzL2luZGl2aWR1YWwveHNlcnZlci9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9yZWxlYXNlcy9pbmRpdmlkdWFsL3hzZXJ2ZXIvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmUwZDY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9yZWxlYXNlcy9pbmRpdmlkdWFsL3hzZXJ2ZXIvaW5kZXguaHRtbApAQCAtMCwwICsxLDYwOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvcmVsZWFzZXMvaW5kaXZpZHVhbC94c2VydmVyPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL3JlbGVhc2VzL2luZGl2aWR1YWwveHNlcnZlcjwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL3JlbGVhc2VzL2luZGl2aWR1YWwvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMC4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuMC4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTAxLTE4IDIzOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjAuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDEtMTggMjM6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMC4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMC4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTAzLTIwIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjAuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDMtMjAgMTQ6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMC45OS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMC45OS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTA0LTAyIDAwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjAuOTkuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMC45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDQtMDIgMDA6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMC45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4wLjk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0wNC0wNyAyMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4wLjk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMC45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0wNC0wNyAyMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4wLjk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjAuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTA0LTI4IDIzOjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjAuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4wLjk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTA0LTI4IDIzOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjAuOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuMC45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDUtMTIgMjA6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMC45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjAuOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDUtMTIgMjA6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMS4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMS4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTA1LTIyIDIzOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDUtMjIgMjM6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMS4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuMS4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTA3LTA4IDAwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDctMDggMDA6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMS45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xLjk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0xMC0xMyAyMzowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xLjk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMS45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0xMC0xMyAyMzowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xLjk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTExLTEzIDIyOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xLjk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTExLTEzIDIyOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEuOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuMS45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMTItMDIgMDA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMS45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEuOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMTItMDIgMDA6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMi4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMi4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTAxLTIzIDA2OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMi4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDEtMjMgMDY6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMi45OS4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMi45OS4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTExLTAyIDAzOjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIuOTkuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMi45OS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMTEtMDIgMDM6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMi45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yLjk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wMy0wNSAwNToxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yLjk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMi45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wMy0wNSAwNToxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yLjk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjIuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTAzLTE0IDE5OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4yLjk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTAzLTE0IDE5OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIuOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuMi45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDMtMjcgMDU6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMi45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjIuOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDMtMjcgMDU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMi45OS45MDQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yLjk5LjkwNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wNC0wNiAwNjozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yLjk5LjkwNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMi45OS45MDQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wNC0wNiAwNjoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yLjk5LjkwNS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjIuOTkuOTA1LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTA0LTA2IDA3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIuOTkuOTA1LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4yLjk5LjkwNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTA0LTA2IDA2OjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjMuMC4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMy4wLjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDQtMjAgMDI6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMy4wLjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjMuMC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDQtMjAgMDI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMy45OS4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMy45OS4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTA4LTAxIDA1OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjMuOTkuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMy45OS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDgtMDEgMDU6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMy45OS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMy45OS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTA5LTAxIDAzOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjMuOTkuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMy45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDktMDEgMDM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC4wLjkwLnRhci5iejIiPnhvcmctc2VydmVyLTEuNC4wLjkwLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTEyLTEyIDIwOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuMC45MC50YXIuZ3oiPnhvcmctc2VydmVyLTEuNC4wLjkwLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMTItMTIgMjA6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuNC4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA2LTEwIDE1OjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDYtMTAgMTU6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuNC4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA2LTExIDE1OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDYtMTEgMTU6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS40Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wMy0wNiAwNToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS40Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNC45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wMy0wNiAwNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS40Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjQuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA1LTIyIDE5OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS40Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA1LTIyIDE5OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuOTkuOTA0LnRhci5iejIiPnhvcmctc2VydmVyLTEuNC45OS45MDQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDYtMzAgMTU6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC45OS45MDQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjQuOTkuOTA0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDYtMzAgMTU6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC45OS45MDUudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS40Ljk5LjkwNS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wNi0zMCAyMDozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS40Ljk5LjkwNS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNC45OS45MDUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wNi0zMCAyMDozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS40Ljk5LjkwNi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjQuOTkuOTA2LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA3LTIzIDE4OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuOTkuOTA2LnRhci5neiI+eG9yZy1zZXJ2ZXItMS40Ljk5LjkwNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA3LTIzIDE4OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS40LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTA5LTA2IDA5OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wOS0wNiAwOToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41LjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41LjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDktMDMgMjM6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS4wLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wOS0wMyAyMzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41LjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDktMjMgMTk6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wOS0yMyAxOToxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41LjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTAtMTAgMTk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0xMC0xMCAxOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41LjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41LjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTEtMDUgMjA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0xMS0wNSAyMDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41Ljk5LjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTEtMjYgMDc6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS45OS4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0xMS0yNiAwNzoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41Ljk5LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTItMDMgMDg6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS45OS4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0xMi0wMyAwODowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41Ljk5LjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTItMTAgMDY6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS45OS4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0xMi0xMCAwNjoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41Ljk5LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjUuOTkuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTAxLTEyIDIxOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjUuOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTAxLTEyIDIxOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjUuOTkuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuNS45OS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDEtMzEgMDU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS45OS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjUuOTkuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDEtMzEgMDU6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS45OS45MDMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjkwMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wMi0xOCAwNjozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41Ljk5LjkwMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuNS45OS45MDMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wMi0xOCAwNjozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS42LjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDItMjUgMjA6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4wLnRhci5neiI+eG9yZy1zZXJ2ZXItMS42LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wMi0yNSAyMDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjEuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuNi4xLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wNS0wOSAwNTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjEuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS42LjEuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDUtMDkgMDU6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4xLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuMS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDYtMjkgMjM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4xLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNi4xLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA2LTI5IDIzOjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wNC0xNCAyMDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA0LTE0IDIwOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuMi45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS42LjIuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA3LTI2IDIxOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuMi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuMi45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wNy0yNiAyMTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS42LjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDctMDcgMjM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS42LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wNy0wNyAyMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjMuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuNi4zLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wOC0yNiAwNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjMuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS42LjMuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDgtMjYgMDU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuNi4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA4LTAxIDA2OjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuNi4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDgtMDEgMDY6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi40LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuNC45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTAtMDMgMDc6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi40LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNi40LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTAzIDA3OjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wOS0yOCAwMjo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA5LTI4IDAyOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuNS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuNS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMC0xMiAwNToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjUudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTEyIDA1OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuOTkuOTAwLnRhci5iejIiPnhvcmctc2VydmVyLTEuNi45OS45MDAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMDQgMDc6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi45OS45MDAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuOTkuOTAwLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMDQgMDc6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS42Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wOS0xNCAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNi45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wOS0xNCAxMDoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA5LTIyIDA0OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS42Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA5LTIyIDA0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuNi45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMjggMTE6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMjggMTE6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4wLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuMC45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTAtMTIgMDQ6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4wLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy4wLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTEyIDA0OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMC45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjAuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTE5IDAyOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMC45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuMC45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMC0xOSAwMjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTAtMDIgMDY6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4wLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMC0wMiAwNjoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjEuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy4xLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0wNiAwNToxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjEuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjEuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMDYgMDU6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4xLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuMS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMjAgMDU6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4xLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy4xLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTIwIDA1OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMC0yMyAwNTo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTIzIDA1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0yNyAwNTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTI3IDA1OjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMy45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjMuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEyLTExIDA2OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMy45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuMy45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMi0xMSAwNjo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjMuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy4zLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMi0yNiAwMTowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjMuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjMuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTItMjYgMDE6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEyLTAzIDAzOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTItMDMgMDM6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy40LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuNC45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDEtMjMgMDA6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy40LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy40LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAxLTIzIDAwOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNC45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjQuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAyLTA1IDA4OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNC45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuNC45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMi0wNSAwODozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDEtMDggMDE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy40LnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMS0wOCAwMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjUuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy41LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMy0wNSAwMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjUuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjUuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDMtMDUgMDA6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy41LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuNS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDMtMTIgMDc6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy41LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy41LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAzLTEyIDA3OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuNS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMi0xNiAwMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjUudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAyLTE2IDAzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNi45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjYuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTEyIDAyOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuNi45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0xMiAwMjoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjYuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy42LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0yMSAwMDoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjYuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjYuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMjEgMDA6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy42LnRhci5iejIiPnhvcmctc2VydmVyLTEuNy42LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAzLTE3IDAxOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy42LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDMtMTcgMDE6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy43LnRhci5iejIiPnhvcmctc2VydmVyLTEuNy43LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA1LTA0IDA3OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNy50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy43LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDUtMDQgMDc6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy45OS4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy45OS4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTIxIDE2OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuOTkuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTAtMjEgMTY6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy45OS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy45OS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEyLTIwIDAzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuOTkuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTItMjAgMDM6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMi0xMiAyMjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMi0xMiAyMTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAzLTIyIDA1OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAzLTIyIDA1OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguMC45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS44LjAuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTI3IDA1OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguMC45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjguMC45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0yNyAwNTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44LjAuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuOC4wLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNS0wNCAwMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44LjAuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS44LjAuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDUtMDQgMDA6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuOC4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTAyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuOC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDIgMDc6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC4xLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjguMS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMDIgMDA6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC4xLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuOC4xLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTAyIDAwOjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguMS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS44LjEuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTIxIDAyOjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguMS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjguMS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yMSAwMjowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44LjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS44LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDUtMTEgMjE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS44LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNS0xMSAyMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS44LjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDctMDEgMDU6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS44LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNy0wMSAwNToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44Ljk5LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjguOTkuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTE1IDIxOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS44Ljk5LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTE1IDIxOjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguOTkuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuOC45OS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjIgMTk6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC45OS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjguOTkuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjIgMTk6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC45OS45MDMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS44Ljk5LjkwMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yMiAxOTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44Ljk5LjkwMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuOC45OS45MDMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yMiAxOTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44Ljk5LjkwNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjguOTkuOTA0LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA3LTAxIDEzOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguOTkuOTA0LnRhci5neiI+eG9yZy1zZXJ2ZXItMS44Ljk5LjkwNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA3LTAxIDEzOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguOTkuOTA1LnRhci5iejIiPnhvcmctc2VydmVyLTEuOC45OS45MDUudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDctMTQgMTk6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC45OS45MDUudGFyLmd6Ij54b3JnLXNlcnZlci0xLjguOTkuOTA1LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDctMTQgMTk6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC45OS45MDYudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS44Ljk5LjkwNi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wOC0xMyAwNjoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44Ljk5LjkwNi50YXIuZ3oiPnhvcmctc2VydmVyLTEuOC45OS45MDYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wOC0xMyAwNjoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjAuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuOS4wLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMC0wMSAyMToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjAuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS45LjAuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTAtMDEgMjE6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4wLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuMC45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTAtMTUgMTg6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4wLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS4wLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTEwLTE1IDE4OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuMC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wOC0yMSAwMDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjkuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA4LTIxIDAwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMC0yNCAwMzoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTEwLTI0IDAzOjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMi45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS45LjIuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTE0IDAwOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjkuMi45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0xNCAwMDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjIuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuOS4yLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMi0wNCAxOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjIuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS45LjIuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTItMDQgMTk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuOS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTEwLTMxIDIzOjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTAtMzEgMjM6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4zLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuMy45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDEtMDggMjE6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4zLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS4zLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAxLTA4IDIxOjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMy45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS45LjMuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAxLTMxIDAxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMy45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjkuMy45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMS0zMSAwMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS45LjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTItMTMgMjA6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS45LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMi0xMyAyMDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjQuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuOS40LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMy0wNCAyMzoyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjQuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS45LjQuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDMtMDQgMjM6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS40LnRhci5iejIiPnhvcmctc2VydmVyLTEuOS40LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTA0IDIwOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMDQgMjA6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS41LnRhci5iejIiPnhvcmctc2VydmVyLTEuOS41LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAzLTE3IDIxOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuNS50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS41LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDMtMTcgMjE6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS45Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMi0wNyAwNDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMi0wNyAwNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE4IDIyOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS45Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE4IDIyOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuOS45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMjUgMDY6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjkuOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMjUgMDY6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMC45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC4wLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMy0yOSAwNzozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4wLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTAuMC45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMy0yOSAwNzozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4wLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjAuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA0LTA4IDIzOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjAuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMC4wLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA0LTA4IDIzOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTI2IDA1OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0yNiAwNTo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4xLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjEuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTA2IDIyOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjEuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMC4xLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTA2IDIyOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjEuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTAuMS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjEgMDY6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjEuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjEgMDY6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDQtMTYgMDE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTAuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA0LTE2IDAxOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjIuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTAuMi45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDYtMTcgMTc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjIuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDYtMTcgMTc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMi45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC4yLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wMiAwMzo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4yLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTAuMi45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wMiAwMzo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTAuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAwMDoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMDA6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMy45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC4zLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0yOSAxODozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4zLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTAuMy45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0yOSAxODozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4zLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjMuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTEyIDIyOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjMuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMC4zLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTEyIDIyOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDIwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAyMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC40LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTAuNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOC0xOSAwNzoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC40LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMC40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDgtMTkgMDc6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuNi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjYudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDItMTEgMDE6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuNi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTAuNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAyLTExIDAxOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjk5LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNi0wMSAxODozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC45OS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjk5LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA2LTAxIDE4OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOC0wNCAwNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC45OS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTA0IDA0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTI3IDAxOjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjExLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOC0yNyAwMTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4xLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjExLjEuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTE0IDIzOjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjEuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS4xLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTE0IDIzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjEuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTEuMS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMjkgMDE6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjExLjEuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMjkgMDE6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjExLjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDktMjQgMDc6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTEuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTI0IDA3OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjIuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTEuMi45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTEtMjggMDg6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjExLjIuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTEtMjggMDg6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMi45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS4yLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0wOSAyMToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4yLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTEuMi45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0wOSAyMToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTEuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMS0wNCAxNzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTEtMDQgMTc6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMy45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS4zLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMS0wNyAwNzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4zLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTEuMy45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMS0wNyAwNzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4zLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjExLjMuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAxLTIxIDA4OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjMuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS4zLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAxLTIxIDA4OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTE3IDAyOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjExLjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0xNyAwMjowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS40LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTEuNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMS0yOCAwNToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS40LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDEtMjggMDU6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuOTkuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjExLjk5LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTEtMjAgMjM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuOTkuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTEuOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTExLTIwIDIzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjk5LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS45OS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTE4IDAxOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjk5LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjExLjk5LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0xOCAwMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMjcgMjI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0yNyAyMjoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS45OS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS45OS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDEtMjggMDY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS45OS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMS0yOCAwNjo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS45OS45MDMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDItMTEgMDM6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuOTkuOTAzLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS45OS45MDMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMi0xMSAwMzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4wLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEyLjAuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTMxIDAzOjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjAuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi4wLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTMxIDAzOjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjAuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTIuMC45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTAgMDI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMC45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEyLjAuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTAgMDI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEyLjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDMtMDUgMDU6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTIuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTA1IDA1OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjEuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTIuMS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDUtMDcgMDc6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEyLjEuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDUtMDcgMDc6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi4xLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNS0yMCAwNToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4xLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTIuMS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNS0yMCAwNToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTIuMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xMyAyMjo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTMgMjI6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMi45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi4yLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNi0xNSAwMzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4yLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTIuMi45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNi0xNSAwMzoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4yLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEyLjIuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTAyIDAwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjIuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi4yLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTAyIDAwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA1LTI5IDIwOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEyLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNS0yOSAyMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4zLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEyLjMuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTAzIDE3OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjMuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi4zLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTAzIDE3OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjMuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTIuMy45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMTkgMTY6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMy45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEyLjMuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMTkgMTY6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEyLjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDctMDkgMDE6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTIuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTA5IDAxOjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi40LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTI3IDA1OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEyLjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0yNyAwNToxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDctMTAgMDg6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNy0xMCAwODozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi45OS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDctMTcgMjI6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNy0xNyAyMjo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi45OS45MDMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDctMjYgMDU6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuOTkuOTAzLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNy0yNiAwNTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi45OS45MDQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDggMDA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuOTkuOTA0LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOCAwMDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi45OS45MDUudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDUudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMjEgMjE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuOTkuOTA1LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi45OS45MDUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0yMSAyMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4wLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjAuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTIzIDA1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjAuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMy4wLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTIzIDA1OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjAuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTMuMC45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMDcgMDY6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMC45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEzLjAuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMDcgMDY6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDktMDUgMjE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTMuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA5LTA1IDIxOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjEuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTMuMS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDEtMDQgMDY6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEzLjEuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDEtMDQgMDY6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMTQgMjE6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMS50YXIuYnoyLm9sZCI+eG9yZy1zZXJ2ZXItMS4xMy4xLnRhci5iejIub2xkPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMi0xNCAwNDo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMy4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMTQgMjE6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMS50YXIuZ3oub2xkIj54b3JnLXNlcnZlci0xLjEzLjEudGFyLmd6Lm9sZDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMTQgMDQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMi45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMy4yLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMi0xNiAwNzoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4yLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTMuMi45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMi0xNiAwNzoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4yLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjIuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTAxIDA3OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjIuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMy4yLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTAxIDA3OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMy4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAxLTI1IDA2OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEzLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMS0yNSAwNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTMuMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0wOCAwNjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMy4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMDggMDY6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTcgMDY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTMuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE3IDA1OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjk5LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMi0xOSAyMDo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy45OS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEzLjk5LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTE5IDIwOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMi0xNCAwNTo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy45OS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEzLjk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAyLTE0IDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTA2IDA2OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0wNiAwNjozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4xLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjEuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTMxIDA2OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjEuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC4xLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTMxIDA2OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjEuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuMS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMTMgMjI6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjEuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMTMgMjI6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTcgMDc6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE3IDA3OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjItcmMxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuMi1yYzEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMzEgMDQ6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMi1yYzEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjItcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMzEgMDQ6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMi45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC4yLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0yNiAwNTo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4yLjkwMS50YXIuYnoyLm9sZCI+eG9yZy1zZXJ2ZXItMS4xNC4yLjkwMS50YXIuYnoyLm9sZDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMjYgMDQ6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjIuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMjYgMDU6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMi45MDEudGFyLmd6Lm9sZCI+eG9yZy1zZXJ2ZXItMS4xNC4yLjkwMS50YXIuZ3oub2xkPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0yNiAwNDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4yLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjIuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTIyIDIzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjIuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC4yLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTIyIDIzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTI1IDE1OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0yNSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4zLXJjMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjMtcmMxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTI2IDA0OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjMtcmMxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC4zLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTI2IDA0OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjMuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuMy45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMjYgMTk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMy45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjMuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMjYgMTk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDktMTMgMDM6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEzIDAzOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjQuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuNC45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMjIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuNC45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjQuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMjIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDEgMDU6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTAxIDA1OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjUuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuNS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjIgMDU6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuNS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjUuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjIgMDU6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuNS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjUudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTItMTMgMDM6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuNS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEyLTEzIDAzOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjYudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC42LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE0IDAyOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjYudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xNCAwMjo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC43LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuNy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0wNiAwNDoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC43LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC43LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMDYgMDQ6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0Ljk5LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMjQgMTc6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTI0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC45OS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA1IDAwOjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0Ljk5LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNSAwMDowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC45OS4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuOTkuMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0xOSAwMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC45OS4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC45OS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMTkgMDA6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuOTkuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTAxIDA4OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuOTkuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDEgMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTE0IDAxOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuOTkuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMTQgMDE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuOTkuOTAzLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTI0IDA2OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjkwMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMjQgMDY6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuOTA0LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuOTkuOTA0LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEyLTExIDE1OjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjkwNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuOTkuOTA0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTItMTEgMTU6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuOTA1LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuOTkuOTA1LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEyLTE5IDIyOjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjkwNS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuOTkuOTA1LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTItMTkgMjI6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTUuMC45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNS4wLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yMiAwNjowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS4wLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTUuMC45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yMiAwNjowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTUuMC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMi0yNyAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS4wLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTItMjcgMTg6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTUuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE1LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTQgMDM6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTUuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTUuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE0IDAzOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTI3IDAxOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1LjIudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTUuMi50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMjcgMDE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTUuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTUuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTI3IDAxOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1LjIudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNS4yLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTI3IDAxOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1Ljk5LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE1Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yNCAyMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS45OS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE1Ljk5LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI0IDIxOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE1Ljk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0wOCAyMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS45OS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE1Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTA4IDIxOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1Ljk5LjkwMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE1Ljk5LjkwMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0wNSAwNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE1Ljk5LjkwMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTA1IDA1OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1Ljk5LjkwNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE1Ljk5LjkwNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNy0wNyAyMzozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS45OS45MDQudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTUuOTkuOTA0LnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNy0wNyAyMzozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41MzYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS45OS45MDQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE1Ljk5LjkwNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA3LTA3IDIzOjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1Ljk5LjkwNC50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE1Ljk5LjkwNC50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNy0wNyAyMzozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41MzYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4wLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE2LjAuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTE1IDIxOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjAuOTAxLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE2LjAuOTAxLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xNSAyMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4wLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTYuMC45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xNSAyMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4wLjkwMS50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE2LjAuOTAxLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTE1IDIxOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNi4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA3LTE3IDA3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjAudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTYuMC50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDctMTcgMDc6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTM2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTYuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA3LTE3IDA3OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjAudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi4wLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA3LTE3IDA3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUzNiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjEuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTYuMS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMDIgMTA6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMS45MDEudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTYuMS45MDEudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTAyIDEwOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjEuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNi4xLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTAyIDEwOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjEuOTAxLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTYuMS45MDEudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMDIgMTA6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE2LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMjEgMDk6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMS50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi4xLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0yMSAwOToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNi4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMjEgMDk6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMS50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE2LjEudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMjEgMDk6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMi45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNi4yLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAyMDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4yLjkwMS50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi4yLjkwMS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMjA6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE2LjIuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMjA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMi45MDEudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi4yLjkwMS50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAyMDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTYuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMCAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4yLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE2LjIudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEwIDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE2LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMCAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4yLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTYuMi50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMCAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTYuMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0yMCAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4zLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE2LjMudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTIwIDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE2LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0yMCAxMjoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4zLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTYuMy50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0yMCAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi40LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTYuNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMSAwMDoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi40LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE2LjQudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTExIDAwOjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE2LjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMSAwMDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi40LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTYuNC50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMSAwMDoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNi45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjkgMDQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuOTkuOTAxLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE2Ljk5LjkwMS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjkgMDQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTM2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNi45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOSAwNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi45OS45MDEudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi45OS45MDEudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjkgMDQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTM2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuOTkuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTYuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIzIDE5OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2Ljk5LjkwMi50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi45OS45MDIudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIzIDE5OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUzNiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2Ljk5LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTYuOTkuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjMgMTk6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuOTkuOTAyLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTYuOTkuOTAyLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIzIDE5OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUzNiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNy4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA0IDE3OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjAudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTcuMC50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDQgMTc6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTM2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTcuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA0IDE3OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjAudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNy4wLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA0IDE3OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUzNiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNy4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEwIDIyOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjEudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTcuMS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTAgMjI6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTM2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTcuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEwIDIyOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjEudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNy4xLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEwIDIyOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUzNiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNy4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTE2IDE2OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjIudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTcuMi50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTYgMTY6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTcuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTE2IDE2OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjIudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNy4yLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTE2IDE2OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNy4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI2IDE3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjMudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTcuMy50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjYgMTc6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTcuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI2IDE3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjMudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNy4zLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI2IDE3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNy40LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI4IDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjQudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTcuNC50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjggMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTcuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI4IDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjQudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNy40LnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI4IDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3Ljk5LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE3Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0wMiAwMjozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy45OS45MDEudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTcuOTkuOTAxLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0wMiAwMjozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41MzYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy45OS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE3Ljk5LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTAyIDAyOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3Ljk5LjkwMS50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE3Ljk5LjkwMS50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0wMiAwMjozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41MzYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy45OS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNy45OS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjYgMTg6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuOTkuOTAyLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE3Ljk5LjkwMi50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjYgMTg6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNy45OS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0yNiAxODoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy45OS45MDIudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNy45OS45MDIudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjYgMTg6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4LjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDkgMjE6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMC50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC4wLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wOSAyMToxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC4wLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDkgMjE6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMC50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4LjAudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDkgMjE6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDggMjM6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMS50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC4xLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wOCAyMzo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDggMjM6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMS50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4LjEudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDggMjM6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4LjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMTEgMjE6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMi50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC4yLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0xMSAyMTo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMTEgMjE6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMi50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4LjIudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMTEgMjE6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4LjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMDQgMTk6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMy50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC4zLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0wNCAxOTo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOC4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMDQgMTk6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMy50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4LjMudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMDQgMTk6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4LjQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMTkgMTc6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguNC50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC40LnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0xOSAxNzo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC40LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOC40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMTkgMTc6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguNC50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4LjQudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMTkgMTc6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguOTkuMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4Ljk5LjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMTYgMjA6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguOTkuMi50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC45OS4yLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0xNiAyMDo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC45OS4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOC45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMTYgMjA6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguOTkuMi50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4Ljk5LjIudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMTYgMjA6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguOTkuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTguOTkuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTE5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4Ljk5LjkwMS50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC45OS45MDEudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTE5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTguOTkuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMTkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguOTkuOTAxLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTguOTkuOTAxLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTE5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4Ljk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0yOCAxNjo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC45OS45MDIudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTguOTkuOTAyLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0yOCAxNjo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC45OS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE4Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTI4IDE2OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4Ljk5LjkwMi50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4Ljk5LjkwMi50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0yOCAxNjo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuMC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xNSAxNzowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4wLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjAudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTE1IDE3OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xNSAxNzowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4wLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuMC50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xNSAxNzowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMSAyMToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4xLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjEudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTExIDIxOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMSAyMToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4xLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuMS50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMSAyMToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0wMiAyMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4yLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjIudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTAyIDIzOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0wMiAyMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4yLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuMi50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0wMiAyMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0xNSAxODoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4zLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjMudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTE1IDE4OjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0xNSAxODoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4zLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuMy50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0xNSAxODoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS40LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAyMjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS40LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjQudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDIyOjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAyMjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS40LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuNC50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAyMjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS41LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuNS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxNzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS41LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjUudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTEyIDE3OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjUudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxNzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS41LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuNS50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxNzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS42LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuNi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0yMCAyMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS42LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjYudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTIwIDIwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjYudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0yMCAyMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS42LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuNi50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0yMCAyMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS43LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuNy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMiAyMzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS43LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5LjcudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTAyIDIzOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjI4NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5LjcudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5LjcudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMiAyMzowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS43LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuNy50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMiAyMzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yODcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjggMTg6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTAxLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5Ljk5LjkwMS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjggMTg6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDk1IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0yOCAxODoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDEudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDEudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjggMTg6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDk1IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTI4IDIwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwMi50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDIudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTI4IDIwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTkuOTkuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMjA6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTAyLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuOTkuOTAyLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTI4IDIwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE5Ljk5LjkwMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0wMiAxOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDMudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTkuOTkuOTAzLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0wMiAxOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5Ljk5LjkwMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTAyIDE5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwMy50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE5Ljk5LjkwMy50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0wMiAxOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTAgMTk6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTA0LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5Ljk5LjkwNC50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTAgMTk6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTA0LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xMCAxOTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDQudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDQudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTAgMTk6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTA1LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuOTkuOTA1LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTI0IDIxOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwNS50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDUudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTI0IDIxOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwNS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTkuOTkuOTA1LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMjQgMjE6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTA1LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuOTkuOTA1LnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTI0IDIxOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yMC4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTEwIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjAudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMjAuMC50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTAgMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMjAuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMjAuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTEwIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjAudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4yMC4wLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTEwIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yMC4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA4LTA3IDE2OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjEudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMjAuMS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDgtMDcgMTY6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMjAuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMjAuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA4LTA3IDE2OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjEudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4yMC4xLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA4LTA3IDE2OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yMC4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTE1IDE2OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjIudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMjAuMi50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMTUgMTY6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMjAuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMjAuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTE1IDE2OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjIudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4yMC4yLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTE1IDE2OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yMC4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTI1IDE0OjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjMudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMjAuMy50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTQ6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMjAuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuMjAuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTI1IDE0OjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjMudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4yMC4zLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTI1IDE0OjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yMC40LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDE5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjQudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMjAuNC50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTk6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMjAuNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMjAuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDE5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjQudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4yMC40LnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDE5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjUudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yMC41LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMwIDE4OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjUudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMjAuNS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMzAgMTg6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMjAuNS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMjAuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMwIDE4OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjUudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4yMC41LnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMwIDE4OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjYudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yMC42LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTIyIDIzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjYudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMjAuNi50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMjIgMjM6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjE1IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMjAuNi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMjAuNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTIyIDIzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjYudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4yMC42LnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTIyIDIzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIxNSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPGFkZHJlc3M+QXBhY2hlLzIuNC4zOCAoRGViaWFuKSBTZXJ2ZXIgYXQgd3d3Lngub3JnIFBvcnQgNDQzPC9hZGRyZXNzPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9zb2Z0d2FyZS9wdWxzZWF1ZGlvL3JlbGVhc2VzL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmYyZDIzYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy9pbmRleC5odG1sCkBAIC0wLDAgKzEsMzgzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9zb2Z0d2FyZS9wdWxzZWF1ZGlvL3JlbGVhc2VzPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL3NvZnR3YXJlL3B1bHNlYXVkaW8vcmVsZWFzZXM8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9zb2Z0d2FyZS9wdWxzZWF1ZGlvLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2ZvbGRlci5naWYiIGFsdD0iW0RJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9ImJhZC8iPmJhZC88L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTI2IDE3OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuMS50YXIuZ3oiPnBvbHlwYXVkaW8tMC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mzg3SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC4xLnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuMS50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuMi50YXIuZ3oiPnBvbHlwYXVkaW8tMC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDYwSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC4yLnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuMi50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuMy50YXIuZ3oiPnBvbHlwYXVkaW8tMC4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDcwSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC4zLnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC4zLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuMy50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNC50YXIuZ3oiPnBvbHlwYXVkaW8tMC40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDg2SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC40LnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC40LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNC50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjQudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNS4xLnRhci5neiI+cG9seXBhdWRpby0wLjUuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUyNEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNS4xLnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC41LjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC41LjEudGFyLmd6LnNoYTEiPnBvbHlwYXVkaW8tMC41LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNS50YXIuZ3oiPnBvbHlwYXVkaW8tMC41LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTE4SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC41LnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC41LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNS50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjUudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNi50YXIuZ3oiPnBvbHlwYXVkaW8tMC42LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDQ4SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC42LnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC42LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNi50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjYudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNy50YXIuZ3oiPnBvbHlwYXVkaW8tMC43LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTI0SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC43LnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC43LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNy50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjcudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOC4xLnRhci5neiI+cG9seXBhdWRpby0wLjguMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOC4xLnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC44LjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC44LjEudGFyLmd6LnNoYTEiPnBvbHlwYXVkaW8tMC44LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOC50YXIuZ3oiPnBvbHlwYXVkaW8tMC44LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMjggMjE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC44LnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC44LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOC50YXIuZ3ouc2hhMSI+cG9seXBhdWRpby0wLjgudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOS4wLnRhci5neiI+cG9seXBhdWRpby0wLjkuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOS4wLnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC45LjAudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC45LjAudGFyLmd6LnNoYTEiPnBvbHlwYXVkaW8tMC45LjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOS4xLnRhci5neiI+cG9seXBhdWRpby0wLjkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOS4xLnRhci5nei5tZDUiPnBvbHlwYXVkaW8tMC45LjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InBvbHlwYXVkaW8tMC45LjEudGFyLmd6LnNoYTEiPnBvbHlwYXVkaW8tMC45LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yLnRhci5neiI+cHVsc2VhdWRpby0wLjkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjIudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjIudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4zLnRhci5neiI+cHVsc2VhdWRpby0wLjkuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4zLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjMudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjMudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS40LnRhci5neiI+cHVsc2VhdWRpby0wLjkuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS40LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjQudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjQudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjQudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS41LnRhci5neiI+cHVsc2VhdWRpby0wLjkuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS41LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjUudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjUudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjUudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS42LnRhci5neiI+cHVsc2VhdWRpby0wLjkuNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS42LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjYudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjYudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjYudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS43LnRhci5neiI+cHVsc2VhdWRpby0wLjkuNy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS43LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjcudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjcudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjcudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS44LnRhci5neiI+cHVsc2VhdWRpby0wLjkuOC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS44LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjgudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjgudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjgudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS45LnRhci5neiI+cHVsc2VhdWRpby0wLjkuOS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS45LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjkudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMTE6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjkudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjkudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMC50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjEwLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMzAgMTY6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjEwLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjEwLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMS50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjExLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDctMjQgMTI6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjExLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjExLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMi50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjEyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDktMDkgMDA6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjEyLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjEyLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMy50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjEzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTAtMDYgMDE6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjEzLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjEzLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMy50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNC50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjE0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDEtMTIgMjM6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjE0LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjE0LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTQudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNS50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjE1LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDQtMTMgMjM6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjE1LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjE1LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTUudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNi10ZXN0MS50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjE2LXRlc3QxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDYtMjMgMTc6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjE2LXRlc3QxLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjE2LXRlc3QxLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNi10ZXN0MS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTYtdGVzdDEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNi50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjE2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMTAgMDA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjE2LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjE2LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTYudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNy50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjE3LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMTEgMDE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjE3LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjE3LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNy50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTcudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xOC50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjE4LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMTkgMDA6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjE4LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjE4LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xOC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTgudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xOS50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjE5LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMzAgMDE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjE5LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjE5LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xOS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMTkudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMC50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjIwLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTEgMDU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjIwLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjIwLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMS50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjIxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMjMgMDQ6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjIxLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjIxLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMi50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjIyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMjYgMDE6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjIyLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjIyLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMy50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjIzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDYtMjMgMjE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45LjIzLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45LjIzLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA2LTIzIDIxOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMy50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjkuMjMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA2LTIzIDIxOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMC45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDgtMDIgMjE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45OS4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45OS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTAyIDIxOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjk5LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTAyIDIxOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tMC45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDgtMTYgMTA6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45OS4yLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45OS4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTE2IDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjk5LjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTE2IDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuMy50YXIuZ3oiPnB1bHNlYXVkaW8tMC45OS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDgtMjkgMTc6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45OS4zLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45OS4zLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTI5IDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuMy50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjk5LjMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTI5IDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuNC50YXIuZ3oiPnB1bHNlYXVkaW8tMC45OS40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDktMTUgMTE6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMC45OS40LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMC45OS40LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTE1IDExOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuNC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0wLjk5LjQudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTE1IDExOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMC50YXIuZ3oiPnB1bHNlYXVkaW8tMS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDktMjcgMDg6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMS4wLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMS4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTI3IDA4OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xLjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTI3IDA4OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMC50YXIueHoiPnB1bHNlYXVkaW8tMS4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDktMjcgMDg6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMS4wLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMS4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTI3IDA4OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xLjAudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTI3IDA4OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMjAgMTM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMS4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTIwIDEzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xLjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTIwIDEzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMS50YXIueHoiPnB1bHNlYXVkaW8tMS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMjAgMTM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMS4xLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMS4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTIwIDEzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xLjEudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTIwIDEzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuOTkuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMS45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDMtMTUgMTI6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMS45OS4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMS45OS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTE1IDEyOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xLjk5LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTE1IDEyOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuOTkuMS50YXIueHoiPnB1bHNlYXVkaW8tMS45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDMtMTUgMTI6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMS45OS4xLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMS45OS4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTE1IDEyOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuOTkuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xLjk5LjEudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTE1IDEyOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMC50YXIuZ3oiPnB1bHNlYXVkaW8tMi4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDUtMTEgMTM6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi4wLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMi4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA1LTExIDEzOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0yLjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA1LTExIDEzOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMC50YXIueHoiPnB1bHNlYXVkaW8tMi4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDUtMTEgMTM6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi4wLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMi4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA1LTExIDEzOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby0yLjAudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA1LTExIDEzOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMi4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDctMTkgMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMi4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTE5IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0yLjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTE5IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMS50YXIueHoiPnB1bHNlYXVkaW8tMi4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDctMTkgMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi4xLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMi4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTE5IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0yLjEudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTE5IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMi45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDMgMTE6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi45OS4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMi45OS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTAzIDExOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0yLjk5LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTAzIDExOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMS50YXIueHoiPnB1bHNlYXVkaW8tMi45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDMgMTE6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi45OS4xLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMi45OS4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTAzIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0yLjk5LjEudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTAzIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tMi45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMTcgMDg6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi45OS4yLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMi45OS4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTE3IDA4OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0yLjk5LjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTE3IDA4OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMi50YXIueHoiPnB1bHNlYXVkaW8tMi45OS4yLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMTcgMDg6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi45OS4yLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMi45OS4yLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTE3IDA4OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMi50YXIueHouc2hhMSI+cHVsc2VhdWRpby0yLjk5LjIudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTE3IDA4OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMy50YXIuZ3oiPnB1bHNlYXVkaW8tMi45OS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMDcgMDQ6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi45OS4zLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMi45OS4zLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTA3IDA0OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMy50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0yLjk5LjMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTA3IDA0OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMy50YXIueHoiPnB1bHNlYXVkaW8tMi45OS4zLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMDcgMDQ6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMi45OS4zLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMi45OS4zLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTA3IDA0OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMy50YXIueHouc2hhMSI+cHVsc2VhdWRpby0yLjk5LjMudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTA3IDA0OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuMC50YXIuZ3oiPnB1bHNlYXVkaW8tMy4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMTggMDc6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMy4wLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMy4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTE4IDA3OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0zLjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTE4IDA3OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuMC50YXIueHoiPnB1bHNlYXVkaW8tMy4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMTggMDc6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMy4wLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMy4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTE4IDA3OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby0zLjAudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTE4IDA3OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMy45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTYgMDQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMy45OS4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMy45OS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE2IDA0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0zLjk5LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE2IDA0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMS50YXIueHoiPnB1bHNlYXVkaW8tMy45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTYgMDQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMy45OS4xLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMy45OS4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE2IDA0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0zLjk5LjEudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE2IDA0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tMy45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMjMgMDM6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMy45OS4yLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tMy45OS4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTIzIDAzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0zLjk5LjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTIzIDAzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMi50YXIueHoiPnB1bHNlYXVkaW8tMy45OS4yLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMjMgMDM6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMy45OS4yLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tMy45OS4yLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTIzIDAzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMi50YXIueHouc2hhMSI+cHVsc2VhdWRpby0zLjk5LjIudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTIzIDAzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuMC50YXIuZ3oiPnB1bHNlYXVkaW8tNC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDMgMTg6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC4wLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNC4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTAzIDE4OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby00LjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTAzIDE4OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuMC50YXIueHoiPnB1bHNlYXVkaW8tNC4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDMgMTg6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC4wLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNC4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTAzIDE4OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby00LjAudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTAzIDE4OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tNC45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMjMgMTk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC45OS4yLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNC45OS4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTIzIDE5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby00Ljk5LjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTIzIDE5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMi50YXIueHoiPnB1bHNlYXVkaW8tNC45OS4yLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMjMgMTk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC45OS4yLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNC45OS4yLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTIzIDE5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMi50YXIueHouc2hhMSI+cHVsc2VhdWRpby00Ljk5LjIudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTIzIDE5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMy50YXIuZ3oiPnB1bHNlYXVkaW8tNC45OS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMjkgMjA6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC45OS4zLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNC45OS4zLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTI5IDIwOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMy50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby00Ljk5LjMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTI5IDIwOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMy50YXIueHoiPnB1bHNlYXVkaW8tNC45OS4zLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMjkgMjA6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC45OS4zLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNC45OS4zLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTI5IDIwOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMy50YXIueHouc2hhMSI+cHVsc2VhdWRpby00Ljk5LjMudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTI5IDIwOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuNC50YXIuZ3oiPnB1bHNlYXVkaW8tNC45OS40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMTUgMDY6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC45OS40LnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNC45OS40LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTE1IDA2OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuNC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby00Ljk5LjQudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTE1IDA2OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuNC50YXIueHoiPnB1bHNlYXVkaW8tNC45OS40LnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMTUgMDY6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNC45OS40LnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNC45OS40LnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTE1IDA2OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuNC50YXIueHouc2hhMSI+cHVsc2VhdWRpby00Ljk5LjQudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTE1IDA2OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuMC50YXIuZ3oiPnB1bHNlYXVkaW8tNS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMDMgMTU6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS4wLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNS4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTAzIDE1OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby01LjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTAzIDE1OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuMC50YXIueHoiPnB1bHNlYXVkaW8tNS4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMDMgMTU6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS4wLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNS4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTAzIDE1OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby01LjAudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTAzIDE1OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMS50YXIuZ3oiPnB1bHNlYXVkaW8tNS45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMjEgMTQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS45OS4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNS45OS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTIxIDE0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby01Ljk5LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTIxIDE0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMS50YXIueHoiPnB1bHNlYXVkaW8tNS45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMjEgMTQ6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS45OS4xLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNS45OS4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTIxIDE0OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby01Ljk5LjEudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTIxIDE0OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tNS45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTkgMTM6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS45OS4yLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNS45OS4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE5IDEzOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby01Ljk5LjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE5IDEzOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMi50YXIueHoiPnB1bHNlYXVkaW8tNS45OS4yLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTkgMTM6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS45OS4yLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNS45OS4yLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE5IDEzOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMi50YXIueHouc2hhMSI+cHVsc2VhdWRpby01Ljk5LjIudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE5IDEzOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMy50YXIuZ3oiPnB1bHNlYXVkaW8tNS45OS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjEgMTQ6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS45OS4zLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNS45OS4zLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIxIDE0OjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMy50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby01Ljk5LjMudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIxIDE0OjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMy50YXIueHoiPnB1bHNlYXVkaW8tNS45OS4zLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjEgMTQ6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNS45OS4zLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNS45OS4zLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIxIDE0OjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMy50YXIueHouc2hhMSI+cHVsc2VhdWRpby01Ljk5LjMudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIxIDE0OjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuMC50YXIuZ3oiPnB1bHNlYXVkaW8tNi4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTk6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNi4wLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNi4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE5OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby02LjAudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE5OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuMC50YXIueHoiPnB1bHNlYXVkaW8tNi4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTk6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNi4wLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNi4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE5OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby02LjAudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE5OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMS50YXIuZ3oiPnB1bHNlYXVkaW8tNi45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMjcgMTc6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNi45OS4xLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNi45OS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTI3IDE3OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby02Ljk5LjEudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTI3IDE3OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMS50YXIueHoiPnB1bHNlYXVkaW8tNi45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMjcgMTc6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNi45OS4xLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNi45OS4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTI3IDE3OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby02Ljk5LjEudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTI3IDE3OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tNi45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTIgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNi45OS4yLnRhci5nei5tZDUiPnB1bHNlYXVkaW8tNi45OS4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTEyIDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMi50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby02Ljk5LjIudGFyLmd6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTEyIDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMi50YXIueHoiPnB1bHNlYXVkaW8tNi45OS4yLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTIgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNi45OS4yLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNi45OS4yLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTEyIDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMi50YXIueHouc2hhMSI+cHVsc2VhdWRpby02Ljk5LjIudGFyLnh6LnNoYTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTEyIDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuMC50YXIuZ3oiPnB1bHNlYXVkaW8tNy4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMjQgMDM6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNy4wLnRhci5nei5tZDVzdW0iPnB1bHNlYXVkaW8tNy4wLnRhci5nei5tZDVzdW08L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTI0IDAzOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuMC50YXIuZ3ouc2hhMXN1bSI+cHVsc2VhdWRpby03LjAudGFyLmd6LnNoYTFzdW08L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTI0IDAzOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuMC50YXIueHoiPnB1bHNlYXVkaW8tNy4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMjQgMDM6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNy4wLnRhci54ei5tZDUiPnB1bHNlYXVkaW8tNy4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTI0IDAzOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuMC50YXIueHoubWQ1c3VtIj5wdWxzZWF1ZGlvLTcuMC50YXIueHoubWQ1c3VtPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0yNCAwMzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjAudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNy4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0yNCAwMzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjAudGFyLnh6LnNoYTFzdW0iPnB1bHNlYXVkaW8tNy4wLnRhci54ei5zaGExc3VtPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0yNCAwMzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTcuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTMwIDEyOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTcuMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0zMCAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tNy4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0zMCAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjEudGFyLnh6Ij5wdWxzZWF1ZGlvLTcuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTMwIDEyOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTcuMS50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0zMCAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNy4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0zMCAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTcuOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTI4IDEyOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuOTkuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTcuOTkuMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0yOCAxMjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tNy45OS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0yOCAxMjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjEudGFyLnh6Ij5wdWxzZWF1ZGlvLTcuOTkuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTI4IDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuOTkuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTcuOTkuMS50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0yOCAxMjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNy45OS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0yOCAxMjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjIudGFyLmd6Ij5wdWxzZWF1ZGlvLTcuOTkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTEyIDAzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuOTkuMi50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTcuOTkuMi50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xMiAwMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjIudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tNy45OS4yLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xMiAwMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjIudGFyLnh6Ij5wdWxzZWF1ZGlvLTcuOTkuMi50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTEyIDAzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuOTkuMi50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTcuOTkuMi50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xMiAwMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjIudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNy45OS4yLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xMiAwMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04LjAudGFyLmd6Ij5wdWxzZWF1ZGlvLTguMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTIyIDA3OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTguMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTguMC50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yMiAwNzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04LjAudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tOC4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yMiAwNzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04LjAudGFyLnh6Ij5wdWxzZWF1ZGlvLTguMC50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTIyIDA3OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTguMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTguMC50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yMiAwNzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04LjAudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tOC4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yMiAwNzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTguOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA1LTEyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTguOTkuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTguOTkuMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0xMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tOC45OS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0xMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjEudGFyLnh6Ij5wdWxzZWF1ZGlvLTguOTkuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA1LTEyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTguOTkuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTguOTkuMS50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0xMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tOC45OS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0xMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjIudGFyLmd6Ij5wdWxzZWF1ZGlvLTguOTkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA1LTI5IDA2OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTguOTkuMi50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTguOTkuMi50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0yOSAwNjowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjIudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tOC45OS4yLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0yOSAwNjowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjIudGFyLnh6Ij5wdWxzZWF1ZGlvLTguOTkuMi50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA1LTI5IDA2OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTguOTkuMi50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTguOTkuMi50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0yOSAwNjowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjIudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tOC45OS4yLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0yOSAwNjowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05LjAudGFyLmd6Ij5wdWxzZWF1ZGlvLTkuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDA3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTkuMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTkuMC50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAwNzowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05LjAudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tOS4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAwNzowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05LjAudGFyLnh6Ij5wdWxzZWF1ZGlvLTkuMC50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDA3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTkuMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTkuMC50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAwNzowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05LjAudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tOS4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAwNzowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05Ljk5LjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTkuOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTAzIDE2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTkuOTkuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTkuOTkuMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0wMyAxNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05Ljk5LjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tOS45OS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0wMyAxNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05Ljk5LjEudGFyLnh6Ij5wdWxzZWF1ZGlvLTkuOTkuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTAzIDE2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTkuOTkuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTkuOTkuMS50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0wMyAxNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05Ljk5LjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tOS45OS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0wMyAxNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMC4wLnRhci5neiI+cHVsc2VhdWRpby0xMC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTkgMDA6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTEwLjAudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTkgMDA6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xMC4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xOSAwMDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMC4wLnRhci54eiI+cHVsc2VhdWRpby0xMC4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTkgMDA6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTEwLjAudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTkgMDA6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xMC4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xOSAwMDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMC45OS4xLnRhci5neiI+cHVsc2VhdWRpby0xMC45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMjQgMjM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuOTkuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTEwLjk5LjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMjQgMjM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYwIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xMC45OS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0yNCAyMzo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMC45OS4xLnRhci54eiI+cHVsc2VhdWRpby0xMC45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMjQgMjM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuOTkuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTEwLjk5LjEudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMjQgMjM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYwIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuOTkuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xMC45OS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0yNCAyMzo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMS4wLnRhci5neiI+cHVsc2VhdWRpby0xMS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDUgMDk6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTExLjAudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDUgMDk6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xMS4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNSAwOTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMS4wLnRhci54eiI+cHVsc2VhdWRpby0xMS4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDUgMDk6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTExLjAudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDUgMDk6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xMS4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNSAwOTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMS4xLnRhci5neiI+cHVsc2VhdWRpby0xMS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMTggMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTExLjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMTggMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xMS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0xOCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMS4xLnRhci54eiI+cHVsc2VhdWRpby0xMS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMTggMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTExLjEudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMTggMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xMS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0xOCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMS45OS4xLnRhci5neiI+cHVsc2VhdWRpby0xMS45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTMgMDY6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuOTkuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTExLjk5LjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTMgMDY6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYwIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuOTkuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xMS45OS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xMyAwNjo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMS45OS4xLnRhci54eiI+cHVsc2VhdWRpby0xMS45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTMgMDY6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuOTkuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTExLjk5LjEudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTMgMDY6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYwIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuOTkuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xMS45OS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xMyAwNjo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi4wLnRhci5neiI+cHVsc2VhdWRpby0xMi4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjAgMjA6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTEyLjAudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjAgMjA6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMC50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xMi4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0yMCAyMDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi4wLnRhci54eiI+cHVsc2VhdWRpby0xMi4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjAgMjA6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTEyLjAudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjAgMjA6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMC50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xMi4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0yMCAyMDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi4xLnRhci5neiI+cHVsc2VhdWRpby0xMi4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTQgMTY6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTEyLjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTQgMTY6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMS50YXIuZ3ouc2hhMSI+cHVsc2VhdWRpby0xMi4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNCAxNjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi4xLnRhci54eiI+cHVsc2VhdWRpby0xMi4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTQgMTY6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTEyLjEudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTQgMTY6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMS50YXIueHouc2hhMSI+cHVsc2VhdWRpby0xMi4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNCAxNjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi4yLnRhci5neiI+cHVsc2VhdWRpby0xMi4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTYgMTY6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMi50YXIuZ3ouc2hhMjU2Ij5wdWxzZWF1ZGlvLTEyLjIudGFyLmd6LnNoYTI1NjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTYgMTY6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDg5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMi50YXIueHoiPnB1bHNlYXVkaW8tMTIuMi50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE2IDE2OjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjIudGFyLnh6LnNoYTI1NiI+cHVsc2VhdWRpby0xMi4yLnRhci54ei5zaGEyNTY8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE2IDE2OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA4OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjk5LjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTEyLjk5LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0wOSAwMzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4zLjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi45OS4xLnRhci5nei5zaGEyNTYiPnB1bHNlYXVkaW8tMTIuOTkuMS50YXIuZ3ouc2hhMjU2PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0wOSAwMzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gOTIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi45OS4xLnRhci54eiI+cHVsc2VhdWRpby0xMi45OS4xLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMDkgMDM6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuOTkuMS50YXIueHouc2hhMjU2Ij5wdWxzZWF1ZGlvLTEyLjk5LjEudGFyLnh6LnNoYTI1NjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMDkgMDM6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDkyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuOTkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tMTIuOTkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA4LTA2IDE3OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjMuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjk5LjIudGFyLmd6LnNoYTI1NiI+cHVsc2VhdWRpby0xMi45OS4yLnRhci5nei5zaGEyNTY8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA4LTA2IDE3OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA5MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjk5LjIudGFyLnh6Ij5wdWxzZWF1ZGlvLTEyLjk5LjIudGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOC0wNiAxNzo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi45OS4yLnRhci54ei5zaGEyNTYiPnB1bHNlYXVkaW8tMTIuOTkuMi50YXIueHouc2hhMjU2PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOC0wNiAxNzo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gOTIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi45OS4zLnRhci5neiI+cHVsc2VhdWRpby0xMi45OS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDEgMDc6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+My42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuOTkuMy50YXIuZ3ouc2hhMjU2Ij5wdWxzZWF1ZGlvLTEyLjk5LjMudGFyLmd6LnNoYTI1NjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDEgMDc6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDkyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuOTkuMy50YXIueHoiPnB1bHNlYXVkaW8tMTIuOTkuMy50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTAxIDA3OjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjk5LjMudGFyLnh6LnNoYTI1NiI+cHVsc2VhdWRpby0xMi45OS4zLnRhci54ei5zaGEyNTY8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTAxIDA3OjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA5MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEzLjAudGFyLmd6Ij5wdWxzZWF1ZGlvLTEzLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOS0xMyAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4zLjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMy4wLnRhci5nei5zaGEyNTYiPnB1bHNlYXVkaW8tMTMuMC50YXIuZ3ouc2hhMjU2PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOS0xMyAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gODkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMy4wLnRhci54eiI+cHVsc2VhdWRpby0xMy4wLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMTMgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTMuMC50YXIueHouc2hhMjU2Ij5wdWxzZWF1ZGlvLTEzLjAudGFyLnh6LnNoYTI1NjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMTMgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDg5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8YWRkcmVzcz5BcGFjaGUvMi40LjM4IChEZWJpYW4pIFNlcnZlciBhdCBmcmVlZGVza3RvcC5vcmcgUG9ydCA0NDM8L2FkZHJlc3M+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gucHkKaW5kZXggODNmYWQzZi4uZDBjMTYxYSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLnB5CkBAIC05LDEyICs5LDEyIEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBoYXNobGliCiBpbXBvcnQgdGVtcGZpbGUKLWltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBvcwogZnJvbSBiYi5mZXRjaDIgaW1wb3J0IFVSSQogZnJvbSBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kCiBpbXBvcnQgYmIKK2Zyb20gYmIudGVzdHMuc3VwcG9ydC5odHRwc2VydmVyIGltcG9ydCBIVFRQU2VydmljZQogCiBkZWYgc2tpcElmTm9OZXR3b3JrKCk6CiAgICAgaWYgb3MuZW52aXJvbi5nZXQoIkJCX1NLSVBfTkVUVEVTVFMiKSA9PSAieWVzIjoKQEAgLTExODAsMjcgKzExODAsNDYgQEAKICAgICB9CiAKICAgICB0ZXN0X3dnZXRfdXJpcyA9IHsKKyAgICAgICAgIwogICAgICAgICAjIHBhY2thZ2VzIHdpdGggdmVyc2lvbnMgaW5zaWRlIGRpcmVjdG9yeSBuYW1lCi0gICAgICAgICgidXRpbC1saW51eCIsICJodHRwOi8va2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yMy91dGlsLWxpbnV4LTIuMjQuMi50YXIuYnoyIiwgIiIsICIiKQorICAgICAgICAjCisgICAgICAgICMgaHR0cDovL2tlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjMvdXRpbC1saW51eC0yLjI0LjIudGFyLmJ6MgorICAgICAgICAoInV0aWwtbGludXgiLCAiL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjIzL3V0aWwtbGludXgtMi4yNC4yLnRhci5iejIiLCAiIiwgIiIpCiAgICAgICAgICAgICA6ICIyLjI0LjIiLAotICAgICAgICAoImVuY2hhbnQiLCAiaHR0cDovL3d3dy5hYmlzb3VyY2UuY29tL2Rvd25sb2Fkcy9lbmNoYW50LzEuNi4wL2VuY2hhbnQtMS42LjAudGFyLmd6IiwgIiIsICIiKQorICAgICAgICAjIGh0dHA6Ly93d3cuYWJpc291cmNlLmNvbS9kb3dubG9hZHMvZW5jaGFudC8xLjYuMC9lbmNoYW50LTEuNi4wLnRhci5negorICAgICAgICAoImVuY2hhbnQiLCAiL2Rvd25sb2Fkcy9lbmNoYW50LzEuNi4wL2VuY2hhbnQtMS42LjAudGFyLmd6IiwgIiIsICIiKQogICAgICAgICAgICAgOiAiMS42LjAiLAotICAgICAgICAoImNtYWtlIiwgImh0dHA6Ly93d3cuY21ha2Uub3JnL2ZpbGVzL3YyLjgvY21ha2UtMi44LjEyLjEudGFyLmd6IiwgIiIsICIiKQorICAgICAgICAjIGh0dHA6Ly93d3cuY21ha2Uub3JnL2ZpbGVzL3YyLjgvY21ha2UtMi44LjEyLjEudGFyLmd6CisgICAgICAgICgiY21ha2UiLCAiL2ZpbGVzL3YyLjgvY21ha2UtMi44LjEyLjEudGFyLmd6IiwgIiIsICIiKQogICAgICAgICAgICAgOiAiMi44LjEyLjEiLAorICAgICAgICAjCiAgICAgICAgICMgcGFja2FnZXMgd2l0aCB2ZXJzaW9ucyBvbmx5IGluIGN1cnJlbnQgZGlyZWN0b3J5Ci0gICAgICAgICgiZWdsaWMiLCAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2VnbGliYy9lZ2xpYmMtMi4xOC1zdm5yMjM3ODcudGFyLmJ6MiIsICIiLCAiIikKKyAgICAgICAgIworICAgICAgICAjIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9lZ2xpYmMvZWdsaWJjLTIuMTgtc3ZucjIzNzg3LnRhci5iejIKKyAgICAgICAgKCJlZ2xpYyIsICIvcmVsZWFzZXMvZWdsaWJjL2VnbGliYy0yLjE4LXN2bnIyMzc4Ny50YXIuYnoyIiwgIiIsICIiKQogICAgICAgICAgICAgOiAiMi4xOSIsCi0gICAgICAgICgiZ251LWNvbmZpZyIsICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvZ251LWNvbmZpZy9nbnUtY29uZmlnLTIwMTIwODE0LnRhci5iejIiLCAiIiwgIiIpCisgICAgICAgICMgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2dudS1jb25maWcvZ251LWNvbmZpZy0yMDEyMDgxNC50YXIuYnoyCisgICAgICAgICgiZ251LWNvbmZpZyIsICIvcmVsZWFzZXMvZ251LWNvbmZpZy9nbnUtY29uZmlnLTIwMTIwODE0LnRhci5iejIiLCAiIiwgIiIpCiAgICAgICAgICAgICA6ICIyMDEyMDgxNCIsCisgICAgICAgICMKICAgICAgICAgIyBwYWNrYWdlcyB3aXRoICI5OSIgaW4gdGhlIG5hbWUgb2YgcG9zc2libGUgdmVyc2lvbgotICAgICAgICAoInB1bHNlYXVkaW8iLCAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9wdWxzZWF1ZGlvL3JlbGVhc2VzL3B1bHNlYXVkaW8tNC4wLnRhci54eiIsICIiLCAiIikKKyAgICAgICAgIworICAgICAgICAjIGh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy9wdWxzZWF1ZGlvLTQuMC50YXIueHoKKyAgICAgICAgKCJwdWxzZWF1ZGlvIiwgIi9zb2Z0d2FyZS9wdWxzZWF1ZGlvL3JlbGVhc2VzL3B1bHNlYXVkaW8tNC4wLnRhci54eiIsICIiLCAiIikKICAgICAgICAgICAgIDogIjUuMCIsCi0gICAgICAgICgieHNlcnZlci14b3JnIiwgImh0dHA6Ly94b3JnLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9pbmRpdmlkdWFsL3hzZXJ2ZXIveG9yZy1zZXJ2ZXItMS4xNS4xLnRhci5iejIiLCAiIiwgIiIpCisgICAgICAgICMgaHR0cDovL3hvcmcuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2luZGl2aWR1YWwveHNlcnZlci94b3JnLXNlcnZlci0xLjE1LjEudGFyLmJ6MgorICAgICAgICAoInhzZXJ2ZXIteG9yZyIsICIvcmVsZWFzZXMvaW5kaXZpZHVhbC94c2VydmVyL3hvcmctc2VydmVyLTEuMTUuMS50YXIuYnoyIiwgIiIsICIiKQogICAgICAgICAgICAgOiAiMS4xNS4xIiwKKyAgICAgICAgIwogICAgICAgICAjIHBhY2thZ2VzIHdpdGggdmFsaWQgVVBTVFJFQU1fQ0hFQ0tfVVJJIGFuZCBVUFNUUkVBTV9DSEVDS19SRUdFWAotICAgICAgICAoImN1cHMiLCAiaHR0cDovL3d3dy5jdXBzLm9yZy9zb2Z0d2FyZS8xLjcuMi9jdXBzLTEuNy4yLXNvdXJjZS50YXIuYnoyIiwgImh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzIiwgIig/UDxuYW1lPmN1cHNcLSkoP1A8cHZlcj4oKFxkK1tcLlwtX10qKSspKVwtc291cmNlXC50YXJcLmd6IikKKyAgICAgICAgIworICAgICAgICAjIGh0dHA6Ly93d3cuY3Vwcy5vcmcvc29mdHdhcmUvMS43LjIvY3Vwcy0xLjcuMi1zb3VyY2UudGFyLmJ6MgorICAgICAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzCisgICAgICAgICgiY3VwcyIsICIvc29mdHdhcmUvMS43LjIvY3Vwcy0xLjcuMi1zb3VyY2UudGFyLmJ6MiIsICIvYXBwbGUvY3Vwcy9yZWxlYXNlcyIsICIoP1A8bmFtZT5jdXBzXC0pKD9QPHB2ZXI+KChcZCtbXC5cLV9dKikrKSlcLXNvdXJjZVwudGFyXC5neiIpCiAgICAgICAgICAgICA6ICIyLjAuMCIsCi0gICAgICAgICgiZGIiLCAiaHR0cDovL2Rvd25sb2FkLm9yYWNsZS5jb20vYmVya2VsZXktZGIvZGItNS4zLjIxLnRhci5neiIsICJodHRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9kL2RiNS4zLyIsICIoP1A8bmFtZT5kYjVcLjNfKSg/UDxwdmVyPlxkKyhcLlxkKykrKS4rXC5vcmlnXC50YXJcLnh6IikKKyAgICAgICAgIyBodHRwOi8vZG93bmxvYWQub3JhY2xlLmNvbS9iZXJrZWxleS1kYi9kYi01LjMuMjEudGFyLmd6CisgICAgICAgICMgaHR0cDovL2Z0cC5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vZC9kYjUuMy8KKyAgICAgICAgKCJkYiIsICIvYmVya2VsZXktZGIvZGItNS4zLjIxLnRhci5neiIsICIvZGViaWFuL3Bvb2wvbWFpbi9kL2RiNS4zLyIsICIoP1A8bmFtZT5kYjVcLjNfKSg/UDxwdmVyPlxkKyhcLlxkKykrKS4rXC5vcmlnXC50YXJcLnh6IikKICAgICAgICAgICAgIDogIjUuMy4xMCIsCiAgICAgfQogCkBAIC0xMjE3LDE4ICsxMjM2LDI4IEBACiAgICAgICAgICAgICByID0gYmIudXRpbHMudmVyY21wX3N0cmluZyh2LCB2ZXJzdHJpbmcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUociA9PSAtMSBvciByID09IDAsIG1zZz0iUGFja2FnZSAlcywgdmVyc2lvbjogJXMgPD0gJXMiICUgKGtbMF0sIHYsIHZlcnN0cmluZykpCiAKLSAgICBAc2tpcElmTm9OZXR3b3JrKCkKICAgICBkZWYgdGVzdF93Z2V0X2xhdGVzdF92ZXJzaW9uc3RyaW5nKHNlbGYpOgotICAgICAgICBmb3IgaywgdiBpbiBzZWxmLnRlc3Rfd2dldF91cmlzLml0ZW1zKCk6Ci0gICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJQTiIsIGtbMF0pCi0gICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJVUFNUUkVBTV9DSEVDS19VUkkiLCBrWzJdKQotICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiVVBTVFJFQU1fQ0hFQ0tfUkVHRVgiLCBrWzNdKQotICAgICAgICAgICAgdWQgPSBiYi5mZXRjaDIuRmV0Y2hEYXRhKGtbMV0sIHNlbGYuZCkKLSAgICAgICAgICAgIHB1cHZlciA9IHVkLm1ldGhvZC5sYXRlc3RfdmVyc2lvbnN0cmluZyh1ZCwgc2VsZi5kKQotICAgICAgICAgICAgdmVyc3RyaW5nID0gcHVwdmVyWzBdCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodmVyc3RyaW5nLCBtc2c9IkNvdWxkIG5vdCBmaW5kIHVwc3RyZWFtIHZlcnNpb24gZm9yICVzIiAlIGtbMF0pCi0gICAgICAgICAgICByID0gYmIudXRpbHMudmVyY21wX3N0cmluZyh2LCB2ZXJzdHJpbmcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUociA9PSAtMSBvciByID09IDAsIG1zZz0iUGFja2FnZSAlcywgdmVyc2lvbjogJXMgPD0gJXMiICUgKGtbMF0sIHYsIHZlcnN0cmluZykpCisgICAgICAgIHRlc3RkYXRhID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpICsgIi9mZXRjaC10ZXN0ZGF0YSIKKyAgICAgICAgc2VydmVyID0gSFRUUFNlcnZpY2UodGVzdGRhdGEpCisgICAgICAgIHNlcnZlci5zdGFydCgpCisgICAgICAgIHBvcnQgPSBzZXJ2ZXIucG9ydAorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgaywgdiBpbiBzZWxmLnRlc3Rfd2dldF91cmlzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiUE4iLCBrWzBdKQorICAgICAgICAgICAgICAgIGNoZWNrdXJpID0gIiIKKyAgICAgICAgICAgICAgICBpZiBrWzJdOgorICAgICAgICAgICAgICAgICAgICBjaGVja3VyaSA9ICJodHRwOi8vbG9jYWxob3N0OiVzLyIgJSBwb3J0ICsga1syXQorICAgICAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlVQU1RSRUFNX0NIRUNLX1VSSSIsIGNoZWNrdXJpKQorICAgICAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlVQU1RSRUFNX0NIRUNLX1JFR0VYIiwga1szXSkKKyAgICAgICAgICAgICAgICB1cmwgPSAiaHR0cDovL2xvY2FsaG9zdDolcy8iICUgcG9ydCArIGtbMV0KKyAgICAgICAgICAgICAgICB1ZCA9IGJiLmZldGNoMi5GZXRjaERhdGEodXJsLCBzZWxmLmQpCisgICAgICAgICAgICAgICAgcHVwdmVyID0gdWQubWV0aG9kLmxhdGVzdF92ZXJzaW9uc3RyaW5nKHVkLCBzZWxmLmQpCisgICAgICAgICAgICAgICAgdmVyc3RyaW5nID0gcHVwdmVyWzBdCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZlcnN0cmluZywgbXNnPSJDb3VsZCBub3QgZmluZCB1cHN0cmVhbSB2ZXJzaW9uIGZvciAlcyIgJSBrWzBdKQorICAgICAgICAgICAgICAgIHIgPSBiYi51dGlscy52ZXJjbXBfc3RyaW5nKHYsIHZlcnN0cmluZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUociA9PSAtMSBvciByID09IDAsIG1zZz0iUGFja2FnZSAlcywgdmVyc2lvbjogJXMgPD0gJXMiICUgKGtbMF0sIHYsIHZlcnN0cmluZykpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZXJ2ZXIuc3RvcCgpCiAKIAogY2xhc3MgRmV0Y2hDaGVja1N0YXR1c1Rlc3QoRmV0Y2hlclRlc3QpOgpAQCAtMTY2Miw2ICsxNjkxLDQ3IEBACiAgICAgICAgICMgVmVyaWZ5IHRoZSBzdWJtb2R1bGUgaXMgYWxzbyBzaGFsbG93CiAgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMSwgY3dkPW9zLnBhdGguam9pbihzZWxmLmdpdGRpciwgJ2dpdHN1Ym1vZHVsZScpKQogCisgICAgZGVmIHRlc3Rfc2hhbGxvd19zdWJtb2R1bGVfbWlycm9ycyhzZWxmKToKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYScpCisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2InKQorCisgICAgICAgIHNtZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ2dpdHN1Ym1vZHVsZScpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzbWRpcikKKyAgICAgICAgc2VsZi5naXQoJ2luaXQnLCBjd2Q9c21kaXIpCisgICAgICAgICMgTWFrZSB0aGlzIGxvb2sgbGlrZSBpdCB3YXMgY2xvbmVkIGZyb20gYSByZW1vdGUuLi4KKyAgICAgICAgc2VsZi5naXQoJ2NvbmZpZyAtLWFkZCByZW1vdGUub3JpZ2luLnVybCAiJXMiJyAlIHNtZGlyLCBjd2Q9c21kaXIpCisgICAgICAgIHNlbGYuZ2l0KCdjb25maWcgLS1hZGQgcmVtb3RlLm9yaWdpbi5mZXRjaCAiK3JlZnMvaGVhZHMvKjpyZWZzL3JlbW90ZXMvb3JpZ2luLyoiJywgY3dkPXNtZGlyKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdhc3ViJywgY3dkPXNtZGlyKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdic3ViJywgY3dkPXNtZGlyKQorCisgICAgICAgIHNlbGYuZ2l0KCdzdWJtb2R1bGUgaW5pdCcsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5naXQoJ3N1Ym1vZHVsZSBhZGQgZmlsZTovLyVzJyAlIHNtZGlyLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuZ2l0KCdzdWJtb2R1bGUgdXBkYXRlJywgY3dkPXNlbGYuc3JjZGlyKQorICAgICAgICBzZWxmLmdpdCgnY29tbWl0IC1tIHN1Ym1vZHVsZSAtYScsIGN3ZD1zZWxmLnNyY2RpcikKKworICAgICAgICB1cmkgPSAnZ2l0c206Ly8lcztwcm90b2NvbD1maWxlO3N1YmRpcj0ke1N9JyAlIHNlbGYuc3JjZGlyCisKKyAgICAgICAgIyBGZXRjaCBvbmNlIHRvIGdlbmVyYXRlIHRoZSBzaGFsbG93IHRhcmJhbGwKKyAgICAgICAgZmV0Y2hlciwgdWQgPSBzZWxmLmZldGNoKHVyaSkKKworICAgICAgICAjIFNldCB1cCB0aGUgbWlycm9yCisgICAgICAgIG1pcnJvcmRpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdtaXJyb3InKQorICAgICAgICBvcy5yZW5hbWUoc2VsZi5kbGRpciwgbWlycm9yZGlyKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdQUkVNSVJST1JTJywgJ2dpdHNtOi8vLiovLiogZmlsZTovLyVzL1xuJyAlIG1pcnJvcmRpcikKKworICAgICAgICAjIEZldGNoIGZyb20gdGhlIG1pcnJvcgorICAgICAgICBiYi51dGlscy5yZW1vdmUoc2VsZi5kbGRpciwgcmVjdXJzZT1UcnVlKQorICAgICAgICBiYi51dGlscy5yZW1vdmUoc2VsZi5naXRkaXIsIHJlY3Vyc2U9VHJ1ZSkKKyAgICAgICAgc2VsZi5mZXRjaF9hbmRfdW5wYWNrKHVyaSkKKworICAgICAgICAjIFZlcmlmeSB0aGUgbWFpbiByZXBvc2l0b3J5IGlzIHNoYWxsb3cKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgxKQorCisgICAgICAgICMgVmVyaWZ5IHRoZSBnaXRzdWJtb2R1bGUgZGlyZWN0b3J5IGlzIHByZXNlbnQKKyAgICAgICAgYXNzZXJ0IG9zLmxpc3RkaXIob3MucGF0aC5qb2luKHNlbGYuZ2l0ZGlyLCAnZ2l0c3VibW9kdWxlJykpCisKKyAgICAgICAgIyBWZXJpZnkgdGhlIHN1Ym1vZHVsZSBpcyBhbHNvIHNoYWxsb3cKKyAgICAgICAgc2VsZi5hc3NlcnRSZXZDb3VudCgxLCBjd2Q9b3MucGF0aC5qb2luKHNlbGYuZ2l0ZGlyLCAnZ2l0c3VibW9kdWxlJykpCiAKICAgICBpZiBhbnkob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHAsICdnaXQtYW5uZXgnKSkgZm9yIHAgaW4gb3MuZW52aXJvbi5nZXQoJ1BBVEgnKS5zcGxpdCgnOicpKToKICAgICAgICAgZGVmIHRlc3Rfc2hhbGxvd19hbm5leChzZWxmKToKQEAgLTIwMDgsMyArMjA3OCw0MzcgQEAKICAgICAgICAgdWQubWV0aG9kLl9maW5kX2dpdF9sZnMgPSBsYW1iZGEgZDogRmFsc2UKICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmdpdGRpciwgaWdub3JlX2Vycm9ycz1UcnVlKQogICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLmQuZ2V0VmFyKCdXT1JLRElSJykpCisKK2NsYXNzIE5QTVRlc3QoRmV0Y2hlclRlc3QpOgorICAgIGRlZiBza2lwSWZOb05wbSgpOgorICAgICAgICBpbXBvcnQgc2h1dGlsCisgICAgICAgIGlmIG5vdCBzaHV0aWwud2hpY2goJ25wbScpOgorICAgICAgICAgICAgcmV0dXJuIHVuaXR0ZXN0LnNraXAoJ25wbSBub3QgaW5zdGFsbGVkLCB0ZXN0cyBiZWluZyBza2lwcGVkJykKKyAgICAgICAgcmV0dXJuIGxhbWJkYSBmOiBmCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbShzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisgICAgICAgIHVkID0gZmV0Y2hlci51ZFtmZXRjaGVyLnVybHNbMF1dCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCArICcuZG9uZScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModWQucmVzb2x2ZWZpbGUpKQorICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLnVucGFja2RpcikKKyAgICAgICAgdW5wYWNrZGlyID0gb3MucGF0aC5qb2luKHNlbGYudW5wYWNrZGlyLCAnbnBtJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbih1bnBhY2tkaXIsICdwYWNrYWdlLmpzb24nKSkpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbV9iYWRfY2hlY2tzdW0oc2VsZik6CisgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1Ac2F2b2lyZmFpcmVsaW51eC9ub2RlLXNlcnZlci1leGFtcGxlO3ZlcnNpb249MS4wLjAnCisgICAgICAgICMgRmV0Y2ggb25jZSB0byBnZXQgYSB0YXJiYWxsCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorICAgICAgICB1ZCA9IGZldGNoZXIudWRbZmV0Y2hlci51cmxzWzBdXQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCisgICAgICAgICMgTW9kaWZ5IHRoZSB0YXJiYWxsCisgICAgICAgIGJhZCA9IGInYmFkIGNoZWNrc3VtJworICAgICAgICB3aXRoIG9wZW4odWQubG9jYWxwYXRoLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShiYWQpCisgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIHRhcmJhbGwgaXMgZmV0Y2hlZCBhZ2FpbgorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgYmFkc3VtID0gaGFzaGxpYi5zaGE1MTIoYmFkKS5oZXhkaWdlc3QoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoICsgJ19iYWQtY2hlY2tzdW1fJyArIGJhZHN1bSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGgpKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1fcHJlbWlycm9ycyhzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgIyBGZXRjaCBvbmNlIHRvIGdldCBhIHRhcmJhbGwKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisgICAgICAgIHVkID0gZmV0Y2hlci51ZFtmZXRjaGVyLnVybHNbMF1dCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKyAgICAgICAgIyBTZXR1cCB0aGUgbWlycm9yCisgICAgICAgIG1pcnJvcmRpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdtaXJyb3InKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIobWlycm9yZGlyKQorICAgICAgICBvcy5yZXBsYWNlKHVkLmxvY2FscGF0aCwgb3MucGF0aC5qb2luKG1pcnJvcmRpciwgb3MucGF0aC5iYXNlbmFtZSh1ZC5sb2NhbHBhdGgpKSkKKyAgICAgICAgc2VsZi5kLnNldFZhcignUFJFTUlSUk9SUycsICdodHRwcz8kOi8vLiovLiogZmlsZTovLyVzL1xuJyAlIG1pcnJvcmRpcikKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfRkVUQ0hfUFJFTUlSUk9ST05MWScsICcxJykKKyAgICAgICAgIyBGZXRjaCBhZ2FpbgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtX21pcnJvcnMoc2VsZik6CisgICAgICAgICMgRmV0Y2ggb25jZSB0byBnZXQgYSB0YXJiYWxsCisgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1Ac2F2b2lyZmFpcmVsaW51eC9ub2RlLXNlcnZlci1leGFtcGxlO3ZlcnNpb249MS4wLjAnCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorICAgICAgICB1ZCA9IGZldGNoZXIudWRbZmV0Y2hlci51cmxzWzBdXQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCisgICAgICAgICMgU2V0dXAgdGhlIG1pcnJvcgorICAgICAgICBtaXJyb3JkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnbWlycm9yJykKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG1pcnJvcmRpcikKKyAgICAgICAgb3MucmVwbGFjZSh1ZC5sb2NhbHBhdGgsIG9zLnBhdGguam9pbihtaXJyb3JkaXIsIG9zLnBhdGguYmFzZW5hbWUodWQubG9jYWxwYXRoKSkpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ01JUlJPUlMnLCAnaHR0cHM/JDovLy4qLy4qIGZpbGU6Ly8lcy9cbicgJSBtaXJyb3JkaXIpCisgICAgICAgICMgVXBkYXRlIHRoZSByZXNvbHZlZCB1cmwgdG8gYW4gaW52YWxpZCB1cmwKKyAgICAgICAgd2l0aCBvcGVuKHVkLnJlc29sdmVmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICB1cmwgPSBmLnJlYWQoKQorICAgICAgICB1cmkgPSBVUkkodXJsKQorICAgICAgICB1cmkucGF0aCA9ICcvaW52YWxpZCcKKyAgICAgICAgd2l0aCBvcGVuKHVkLnJlc29sdmVmaWxlLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHN0cih1cmkpKQorICAgICAgICAjIEZldGNoIGFnYWluCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGgpKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1fZGVzdHN1ZmZpeF9kb3dubG9hZGZpbGVuYW1lKHNlbGYpOgorICAgICAgICB1cmwgPSAnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO3BhY2thZ2U9QHNhdm9pcmZhaXJlbGludXgvbm9kZS1zZXJ2ZXItZXhhbXBsZTt2ZXJzaW9uPTEuMC4wO2Rlc3RzdWZmaXg9Zm9vL2Jhcjtkb3dubG9hZGZpbGVuYW1lPWZvby1iYXIudGd6JworICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goW3VybF0sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgJ2Zvby1iYXIudGd6JykpKQorICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLnVucGFja2RpcikKKyAgICAgICAgdW5wYWNrZGlyID0gb3MucGF0aC5qb2luKHNlbGYudW5wYWNrZGlyLCAnZm9vJywgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odW5wYWNrZGlyLCAncGFja2FnZS5qc29uJykpKQorCisgICAgZGVmIHRlc3RfbnBtX25vX25ldHdvcmtfbm9fdGFyYmFsbChzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfTk9fTkVUV09SSycsICcxJykKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2gyLk5ldHdvcmtBY2Nlc3MpOgorICAgICAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbV9ub19uZXR3b3JrX3dpdGhfdGFyYmFsbChzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgIyBGZXRjaCBvbmNlIHRvIGdldCBhIHRhcmJhbGwKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICAjIERpc2FibGUgbmV0d29yayBhY2Nlc3MKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfTk9fTkVUV09SSycsICcxJykKKyAgICAgICAgIyBGZXRjaCBhZ2FpbgorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgZmV0Y2hlci51bnBhY2soc2VsZi51bnBhY2tkaXIpCisgICAgICAgIHVucGFja2RpciA9IG9zLnBhdGguam9pbihzZWxmLnVucGFja2RpciwgJ25wbScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odW5wYWNrZGlyLCAncGFja2FnZS5qc29uJykpKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1fcmVnaXN0cnlfYWx0ZXJuYXRlKHNlbGYpOgorICAgICAgICB1cmwgPSAnbnBtOi8vcmVnaXN0cnkuZnJlYWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLnVucGFja2RpcikKKyAgICAgICAgdW5wYWNrZGlyID0gb3MucGF0aC5qb2luKHNlbGYudW5wYWNrZGlyLCAnbnBtJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbih1bnBhY2tkaXIsICdwYWNrYWdlLmpzb24nKSkpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbV92ZXJzaW9uX2xhdGVzdChzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj1sYXRlc3QnCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgZmV0Y2hlci51bnBhY2soc2VsZi51bnBhY2tkaXIpCisgICAgICAgIHVucGFja2RpciA9IG9zLnBhdGguam9pbihzZWxmLnVucGFja2RpciwgJ25wbScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odW5wYWNrZGlyLCAncGFja2FnZS5qc29uJykpKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1fcmVnaXN0cnlfaW52YWxpZChzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5LmludmFsaWQub3JnO3BhY2thZ2U9QHNhdm9pcmZhaXJlbGludXgvbm9kZS1zZXJ2ZXItZXhhbXBsZTt2ZXJzaW9uPTEuMC4wJworICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goW3VybF0sIHNlbGYuZCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuRmV0Y2hFcnJvcik6CisgICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtX3BhY2thZ2VfaW52YWxpZChzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L2ludmFsaWQ7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2gyLkZldGNoRXJyb3IpOgorICAgICAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbV92ZXJzaW9uX2ludmFsaWQoc2VsZik6CisgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1Ac2F2b2lyZmFpcmVsaW51eC9ub2RlLXNlcnZlci1leGFtcGxlO3ZlcnNpb249aW52YWxpZCcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuUGFyYW1ldGVyRXJyb3IpOgorICAgICAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbV9yZWdpc3RyeV9ub25lKHNlbGYpOgorICAgICAgICB1cmwgPSAnbnBtOi8vO3BhY2thZ2U9QHNhdm9pcmZhaXJlbGludXgvbm9kZS1zZXJ2ZXItZXhhbXBsZTt2ZXJzaW9uPTEuMC4wJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGJiLmZldGNoMi5NYWxmb3JtZWRVcmwpOgorICAgICAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbV9wYWNrYWdlX25vbmUoc2VsZik6CisgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuTWlzc2luZ1BhcmFtZXRlckVycm9yKToKKyAgICAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1fdmVyc2lvbl9ub25lKHNlbGYpOgorICAgICAgICB1cmwgPSAnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO3BhY2thZ2U9QHNhdm9pcmZhaXJlbGludXgvbm9kZS1zZXJ2ZXItZXhhbXBsZScKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuTWlzc2luZ1BhcmFtZXRlckVycm9yKToKKyAgICAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorCisgICAgZGVmIGNyZWF0ZV9zaHJpbmt3cmFwX2ZpbGUoc2VsZiwgZGF0YSk6CisgICAgICAgIGltcG9ydCBqc29uCisgICAgICAgIGRhdGFkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnZGF0YScpCisgICAgICAgIHN3ZmlsZSA9IG9zLnBhdGguam9pbihkYXRhZGlyLCAnbnBtLXNocmlua3dyYXAuanNvbicpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihkYXRhZGlyKQorICAgICAgICB3aXRoIG9wZW4oc3dmaWxlLCAndycpIGFzIGY6CisgICAgICAgICAgICBqc29uLmR1bXAoZGF0YSwgZikKKyAgICAgICAgIyBBbHNvIGNvbmZpZ3VyZSB0aGUgUyBkaXJlY3RvcnkKKyAgICAgICAgc2VsZi5zZGlyID0gb3MucGF0aC5qb2luKHNlbGYudW5wYWNrZGlyLCAnUycpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ1MnLCBzZWxmLnNkaXIpCisgICAgICAgIHJldHVybiBzd2ZpbGUKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtc3coc2VsZik6CisgICAgICAgIHN3ZmlsZSA9IHNlbGYuY3JlYXRlX3Nocmlua3dyYXBfZmlsZSh7CisgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogeworICAgICAgICAgICAgICAgICdhcnJheS1mbGF0dGVuJzogeworICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6ICcxLjEuMScsCisgICAgICAgICAgICAgICAgICAgICdyZXNvbHZlZCc6ICdodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnJheS1mbGF0dGVuLy0vYXJyYXktZmxhdHRlbi0xLjEuMS50Z3onLAorICAgICAgICAgICAgICAgICAgICAnaW50ZWdyaXR5JzogJ3NoYTEtbWw5cGtGR3g1d2N6S1BLZ0NKYUxaT29wVmRJPScsCisgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAnY29udGVudC10eXBlJzogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvbnRlbnQtdHlwZS8tL2NvbnRlbnQtdHlwZS0xLjAuNC50Z3onLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhNTEyLWhJUDNFRVBzOHRCOUFUMUwrTlVxdHdPQXBzNG1rMlpvYjg5TVdYTUhqSFdnOW1pbEYvajRvc25uUUxYQkNCRkJrL3R2SUcvdFVjOW1PVUppUEJoUFhBPT0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb29raWUnOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6ICdnaXQraHR0cHM6Ly9naXRodWIuY29tL2pzaHR0cC9jb29raWUuZ2l0I2FlYzExNzdjN2RhNjdlM2IzMjczZGY5NmNmNDc2ODI0ZGJjOWFlMDknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zyb20nOiAnZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9qc2h0dHAvY29va2llLmdpdCcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtc3c6Ly8nICsgc3dmaWxlXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAnbnBtMicsICdhcnJheS1mbGF0dGVuLTEuMS4xLnRneicpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAnbnBtMicsICdjb250ZW50LXR5cGUtMS4wLjQudGd6JykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICdnaXQyJywgJ2dpdGh1Yi5jb20uanNodHRwLmNvb2tpZS5naXQnKSkpCisgICAgICAgIGZldGNoZXIudW5wYWNrKHNlbGYudW5wYWNrZGlyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuc2RpciwgJ25wbS1zaHJpbmt3cmFwLmpzb24nKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5zZGlyLCAnbm9kZV9tb2R1bGVzJywgJ2FycmF5LWZsYXR0ZW4nLCAncGFja2FnZS5qc29uJykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuc2RpciwgJ25vZGVfbW9kdWxlcycsICdhcnJheS1mbGF0dGVuJywgJ25vZGVfbW9kdWxlcycsICdjb250ZW50LXR5cGUnLCAncGFja2FnZS5qc29uJykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuc2RpciwgJ25vZGVfbW9kdWxlcycsICdhcnJheS1mbGF0dGVuJywgJ25vZGVfbW9kdWxlcycsICdjb250ZW50LXR5cGUnLCAnbm9kZV9tb2R1bGVzJywgJ2Nvb2tpZScsICdwYWNrYWdlLmpzb24nKSkpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbXN3X2RldihzZWxmKToKKyAgICAgICAgc3dmaWxlID0gc2VsZi5jcmVhdGVfc2hyaW5rd3JhcF9maWxlKHsKKyAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgJ2FycmF5LWZsYXR0ZW4nOiB7CisgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJzEuMS4xJywKKyAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdmVkJzogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FycmF5LWZsYXR0ZW4vLS9hcnJheS1mbGF0dGVuLTEuMS4xLnRneicsCisgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhMS1tbDlwa0ZHeDV3Y3pLUEtnQ0phTFpPb3BWZEk9JworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnMS4wLjQnLAorICAgICAgICAgICAgICAgICAgICAncmVzb2x2ZWQnOiAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29udGVudC10eXBlLy0vY29udGVudC10eXBlLTEuMC40LnRneicsCisgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhNTEyLWhJUDNFRVBzOHRCOUFUMUwrTlVxdHdPQXBzNG1rMlpvYjg5TVdYTUhqSFdnOW1pbEYvajRvc25uUUxYQkNCRkJrL3R2SUcvdFVjOW1PVUppUEJoUFhBPT0nLAorICAgICAgICAgICAgICAgICAgICAnZGV2JzogVHJ1ZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgIyBGZXRjaCB3aXRoIGRldiBkaXNhYmxlZAorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyducG1zdzovLycgKyBzd2ZpbGVdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICducG0yJywgJ2FycmF5LWZsYXR0ZW4tMS4xLjEudGd6JykpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAnbnBtMicsICdjb250ZW50LXR5cGUtMS4wLjQudGd6JykpKQorICAgICAgICAjIEZldGNoIHdpdGggZGV2IGVuYWJsZWQKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtc3c6Ly8nICsgc3dmaWxlICsgJztkZXY9MSddLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICducG0yJywgJ2FycmF5LWZsYXR0ZW4tMS4xLjEudGd6JykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICducG0yJywgJ2NvbnRlbnQtdHlwZS0xLjAuNC50Z3onKSkpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbXN3X2Rlc3RzdWZmaXgoc2VsZik6CisgICAgICAgIHN3ZmlsZSA9IHNlbGYuY3JlYXRlX3Nocmlua3dyYXBfZmlsZSh7CisgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogeworICAgICAgICAgICAgICAgICdhcnJheS1mbGF0dGVuJzogeworICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6ICcxLjEuMScsCisgICAgICAgICAgICAgICAgICAgICdyZXNvbHZlZCc6ICdodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnJheS1mbGF0dGVuLy0vYXJyYXktZmxhdHRlbi0xLjEuMS50Z3onLAorICAgICAgICAgICAgICAgICAgICAnaW50ZWdyaXR5JzogJ3NoYTEtbWw5cGtGR3g1d2N6S1BLZ0NKYUxaT29wVmRJPScKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbJ25wbXN3Oi8vJyArIHN3ZmlsZSArICc7ZGVzdHN1ZmZpeD1mb28vYmFyJ10sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIGZldGNoZXIudW5wYWNrKHNlbGYudW5wYWNrZGlyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYudW5wYWNrZGlyLCAnZm9vJywgJ2JhcicsICdub2RlX21vZHVsZXMnLCAnYXJyYXktZmxhdHRlbicsICdwYWNrYWdlLmpzb24nKSkpCisKKyAgICBkZWYgdGVzdF9ucG1zd19ub19uZXR3b3JrX25vX3RhcmJhbGwoc2VsZik6CisgICAgICAgIHN3ZmlsZSA9IHNlbGYuY3JlYXRlX3Nocmlua3dyYXBfZmlsZSh7CisgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogeworICAgICAgICAgICAgICAgICdhcnJheS1mbGF0dGVuJzogeworICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6ICcxLjEuMScsCisgICAgICAgICAgICAgICAgICAgICdyZXNvbHZlZCc6ICdodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnJheS1mbGF0dGVuLy0vYXJyYXktZmxhdHRlbi0xLjEuMS50Z3onLAorICAgICAgICAgICAgICAgICAgICAnaW50ZWdyaXR5JzogJ3NoYTEtbWw5cGtGR3g1d2N6S1BLZ0NKYUxaT29wVmRJPScKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX05PX05FVFdPUksnLCAnMScpCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbJ25wbXN3Oi8vJyArIHN3ZmlsZV0sIHNlbGYuZCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuTmV0d29ya0FjY2Vzcyk6CisgICAgICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtc3dfbm9fbmV0d29ya193aXRoX3RhcmJhbGwoc2VsZik6CisgICAgICAgICMgRmV0Y2ggb25jZSB0byBnZXQgYSB0YXJiYWxsCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPWFycmF5LWZsYXR0ZW47dmVyc2lvbj0xLjEuMSddLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICAjIERpc2FibGUgbmV0d29yayBhY2Nlc3MKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfTk9fTkVUV09SSycsICcxJykKKyAgICAgICAgIyBGZXRjaCBhZ2FpbgorICAgICAgICBzd2ZpbGUgPSBzZWxmLmNyZWF0ZV9zaHJpbmt3cmFwX2ZpbGUoeworICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IHsKKyAgICAgICAgICAgICAgICAnYXJyYXktZmxhdHRlbic6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnMS4xLjEnLAorICAgICAgICAgICAgICAgICAgICAncmVzb2x2ZWQnOiAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXJyYXktZmxhdHRlbi8tL2FycmF5LWZsYXR0ZW4tMS4xLjEudGd6JywKKyAgICAgICAgICAgICAgICAgICAgJ2ludGVncml0eSc6ICdzaGExLW1sOXBrRkd4NXdjektQS2dDSmFMWk9vcFZkST0nCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KQorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyducG1zdzovLycgKyBzd2ZpbGVdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLnVucGFja2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLnNkaXIsICdub2RlX21vZHVsZXMnLCAnYXJyYXktZmxhdHRlbicsICdwYWNrYWdlLmpzb24nKSkpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbXN3X25wbV9yZXVzYWJpbGl0eShzZWxmKToKKyAgICAgICAgIyBGZXRjaCBvbmNlIHdpdGggbnBtc3cKKyAgICAgICAgc3dmaWxlID0gc2VsZi5jcmVhdGVfc2hyaW5rd3JhcF9maWxlKHsKKyAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgJ2FycmF5LWZsYXR0ZW4nOiB7CisgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJzEuMS4xJywKKyAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdmVkJzogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FycmF5LWZsYXR0ZW4vLS9hcnJheS1mbGF0dGVuLTEuMS4xLnRneicsCisgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhMS1tbDlwa0ZHeDV3Y3pLUEtnQ0phTFpPb3BWZEk9JworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtc3c6Ly8nICsgc3dmaWxlXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgIyBEaXNhYmxlIG5ldHdvcmsgYWNjZXNzCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX05PX05FVFdPUksnLCAnMScpCisgICAgICAgICMgRmV0Y2ggYWdhaW4gd2l0aCBucG0KKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO3BhY2thZ2U9YXJyYXktZmxhdHRlbjt2ZXJzaW9uPTEuMS4xJ10sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIGZldGNoZXIudW5wYWNrKHNlbGYudW5wYWNrZGlyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYudW5wYWNrZGlyLCAnbnBtJywgJ3BhY2thZ2UuanNvbicpKSkKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtc3dfYmFkX2NoZWNrc3VtKHNlbGYpOgorICAgICAgICAjIFRyeSB0byBmZXRjaCB3aXRoIGJhZCBjaGVja3N1bQorICAgICAgICBzd2ZpbGUgPSBzZWxmLmNyZWF0ZV9zaHJpbmt3cmFwX2ZpbGUoeworICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IHsKKyAgICAgICAgICAgICAgICAnYXJyYXktZmxhdHRlbic6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnMS4xLjEnLAorICAgICAgICAgICAgICAgICAgICAncmVzb2x2ZWQnOiAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXJyYXktZmxhdHRlbi8tL2FycmF5LWZsYXR0ZW4tMS4xLjEudGd6JywKKyAgICAgICAgICAgICAgICAgICAgJ2ludGVncml0eSc6ICdzaGExLWdmTkVwMmhxZ0xURktUNlAzQXNCWU1nc0JxZz0nCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KQorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyducG1zdzovLycgKyBzd2ZpbGVdLCBzZWxmLmQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2gyLkZldGNoRXJyb3IpOgorICAgICAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgICMgRmV0Y2ggY29ycmVjdGx5IHRvIGdldCBhIHRhcmJhbGwKKyAgICAgICAgc3dmaWxlID0gc2VsZi5jcmVhdGVfc2hyaW5rd3JhcF9maWxlKHsKKyAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgJ2FycmF5LWZsYXR0ZW4nOiB7CisgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJzEuMS4xJywKKyAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdmVkJzogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FycmF5LWZsYXR0ZW4vLS9hcnJheS1mbGF0dGVuLTEuMS4xLnRneicsCisgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhMS1tbDlwa0ZHeDV3Y3pLUEtnQ0phTFpPb3BWZEk9JworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtc3c6Ly8nICsgc3dmaWxlXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgbG9jYWxwYXRoID0gb3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICducG0yJywgJ2FycmF5LWZsYXR0ZW4tMS4xLjEudGd6JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGxvY2FscGF0aCkpCisgICAgICAgICMgTW9kaWZ5IHRoZSB0YXJiYWxsCisgICAgICAgIGJhZCA9IGInYmFkIGNoZWNrc3VtJworICAgICAgICB3aXRoIG9wZW4obG9jYWxwYXRoLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShiYWQpCisgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIHRhcmJhbGwgaXMgZmV0Y2hlZCBhZ2FpbgorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgYmFkc3VtID0gaGFzaGxpYi5zaGExKGJhZCkuaGV4ZGlnZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGxvY2FscGF0aCArICdfYmFkLWNoZWNrc3VtXycgKyBiYWRzdW0pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMobG9jYWxwYXRoKSkKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtc3dfcHJlbWlycm9ycyhzZWxmKToKKyAgICAgICAgIyBGZXRjaCBvbmNlIHRvIGdldCBhIHRhcmJhbGwKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO3BhY2thZ2U9YXJyYXktZmxhdHRlbjt2ZXJzaW9uPTEuMS4xJ10sIHNlbGYuZCkKKyAgICAgICAgdWQgPSBmZXRjaGVyLnVkW2ZldGNoZXIudXJsc1swXV0KKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGgpKQorICAgICAgICAjIFNldHVwIHRoZSBtaXJyb3IKKyAgICAgICAgbWlycm9yZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ21pcnJvcicpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihtaXJyb3JkaXIpCisgICAgICAgIG9zLnJlcGxhY2UodWQubG9jYWxwYXRoLCBvcy5wYXRoLmpvaW4obWlycm9yZGlyLCBvcy5wYXRoLmJhc2VuYW1lKHVkLmxvY2FscGF0aCkpKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdQUkVNSVJST1JTJywgJ2h0dHBzPyQ6Ly8uKi8uKiBmaWxlOi8vJXMvXG4nICUgbWlycm9yZGlyKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9GRVRDSF9QUkVNSVJST1JPTkxZJywgJzEnKQorICAgICAgICAjIEZldGNoIGFnYWluCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKyAgICAgICAgc3dmaWxlID0gc2VsZi5jcmVhdGVfc2hyaW5rd3JhcF9maWxlKHsKKyAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgJ2FycmF5LWZsYXR0ZW4nOiB7CisgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJzEuMS4xJywKKyAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdmVkJzogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FycmF5LWZsYXR0ZW4vLS9hcnJheS1mbGF0dGVuLTEuMS4xLnRneicsCisgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhMS1tbDlwa0ZHeDV3Y3pLUEtnQ0phTFpPb3BWZEk9JworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtc3c6Ly8nICsgc3dmaWxlXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbXN3X21pcnJvcnMoc2VsZik6CisgICAgICAgICMgRmV0Y2ggb25jZSB0byBnZXQgYSB0YXJiYWxsCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPWFycmF5LWZsYXR0ZW47dmVyc2lvbj0xLjEuMSddLCBzZWxmLmQpCisgICAgICAgIHVkID0gZmV0Y2hlci51ZFtmZXRjaGVyLnVybHNbMF1dCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKyAgICAgICAgIyBTZXR1cCB0aGUgbWlycm9yCisgICAgICAgIG1pcnJvcmRpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdtaXJyb3InKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIobWlycm9yZGlyKQorICAgICAgICBvcy5yZXBsYWNlKHVkLmxvY2FscGF0aCwgb3MucGF0aC5qb2luKG1pcnJvcmRpciwgb3MucGF0aC5iYXNlbmFtZSh1ZC5sb2NhbHBhdGgpKSkKKyAgICAgICAgc2VsZi5kLnNldFZhcignTUlSUk9SUycsICdodHRwcz8kOi8vLiovLiogZmlsZTovLyVzL1xuJyAlIG1pcnJvcmRpcikKKyAgICAgICAgIyBGZXRjaCBhZ2FpbiB3aXRoIGludmFsaWQgdXJsCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKyAgICAgICAgc3dmaWxlID0gc2VsZi5jcmVhdGVfc2hyaW5rd3JhcF9maWxlKHsKKyAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgJ2FycmF5LWZsYXR0ZW4nOiB7CisgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJzEuMS4xJywKKyAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdmVkJzogJ2h0dHBzOi8vaW52YWxpZCcsCisgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhMS1tbDlwa0ZHeDV3Y3pLUEtnQ0phTFpPb3BWZEk9JworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtc3c6Ly8nICsgc3dmaWxlXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL3J1bnF1ZXVlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9ydW5xdWV1ZS5weQppbmRleCA1ZTY0MzkxLi40YmExMmEwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL3J1bnF1ZXVlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvcnVucXVldWUucHkKQEAgLTcsNyArNyw2IEBACiAjCiAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGJiCiBpbXBvcnQgb3MKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHN1YnByb2Nlc3MKQEAgLTI1NSw3ICsyNTQsNyBAQAogICAgICAgICAgICAgY21kID0gWyJiaXRiYWtlIiwgImExIiwgImIxIl0KICAgICAgICAgICAgIHRhc2tzID0gc2VsZi5ydW5fYml0YmFrZWNtZChjbWQsIHRlbXBkaXIsIHNzdGF0ZXZhbGlkLCBleHRyYWVudj1leHRyYWVudiwgY2xlYW51cD1UcnVlKQogICAgICAgICAgICAgZXhwZWN0ZWQgPSBbJ2ExOnBvcHVsYXRlX3N5c3Jvb3QnLCAnYTE6cGFja2FnZScsICdhMTpwYWNrYWdlX3dyaXRlX3JwbV9zZXRzY2VuZScsICdhMTpwYWNrYWdlZGF0YV9zZXRzY2VuZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAnYTE6cGFja2FnZV93cml0ZV9pcGtfc2V0c2NlbmUnLCAnYTE6cGFja2FnZV9xYV9zZXRzY2VuZSddCisgICAgICAgICAgICAgICAgICAgICAgICAnYTE6cGFja2FnZV93cml0ZV9pcGtfc2V0c2NlbmUnLCAnYTE6cGFja2FnZV9xYV9zZXRzY2VuZScsICdhMTpidWlsZCddCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh0YXNrcyksIHNldChleHBlY3RlZCkpCiAKICAgICAgICAgICAgIHNlbGYuc2h1dGRvd24odGVtcGRpcikKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvc3VwcG9ydC9odHRwc2VydmVyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9zdXBwb3J0L2h0dHBzZXJ2ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhmNzY2MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvc3VwcG9ydC9odHRwc2VydmVyLnB5CkBAIC0wLDAgKzEsNjUgQEAKKyMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorIworCitpbXBvcnQgaHR0cC5zZXJ2ZXIKK2ltcG9ydCBtdWx0aXByb2Nlc3NpbmcKK2ltcG9ydCBvcworaW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IHNpZ25hbAoraW1wb3J0IGxvZ2dpbmcKK2Zyb20gc29ja2V0c2VydmVyIGltcG9ydCBUaHJlYWRpbmdNaXhJbgorCitjbGFzcyBIVFRQU2VydmVyKFRocmVhZGluZ01peEluLCBodHRwLnNlcnZlci5IVFRQU2VydmVyKToKKworICAgIGRlZiBzZXJ2ZXJfc3RhcnQoc2VsZiwgcm9vdF9kaXIsIGxvZ2dlcik6CisgICAgICAgIG9zLmNoZGlyKHJvb3RfZGlyKQorICAgICAgICBzZWxmLnNlcnZlX2ZvcmV2ZXIoKQorCitjbGFzcyBIVFRQUmVxdWVzdEhhbmRsZXIoaHR0cC5zZXJ2ZXIuU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyKToKKworICAgIGRlZiBsb2dfbWVzc2FnZShzZWxmLCBmb3JtYXRfc3RyLCAqYXJncyk6CisgICAgICAgIHBhc3MKKworY2xhc3MgSFRUUFNlcnZpY2Uob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByb290X2RpciwgaG9zdD0nJywgcG9ydD0wLCBsb2dnZXI9Tm9uZSk6CisgICAgICAgIHNlbGYucm9vdF9kaXIgPSByb290X2RpcgorICAgICAgICBzZWxmLmhvc3QgPSBob3N0CisgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKKyAgICAgICAgaWYgbm90IGxvZ2dlcjoKKyAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKworICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgcHJpbnQoc2VsZi5yb290X2RpcikKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYucm9vdF9kaXIpOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiTm90IHN0YXJ0aW5nIEhUVFBTZXJ2aWNlIGZvciBkaXJlY3RvcnkgJXMgd2hpY2ggZG9lc24ndCBleGlzdCIgJSAoc2VsZi5yb290X2RpcikpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLnNlcnZlciA9IEhUVFBTZXJ2ZXIoKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSwgSFRUUFJlcXVlc3RIYW5kbGVyKQorICAgICAgICBpZiBzZWxmLnBvcnQgPT0gMDoKKyAgICAgICAgICAgIHNlbGYucG9ydCA9IHNlbGYuc2VydmVyLnNlcnZlcl9wb3J0CisgICAgICAgIHNlbGYucHJvY2VzcyA9IG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKHRhcmdldD1zZWxmLnNlcnZlci5zZXJ2ZXJfc3RhcnQsIGFyZ3M9W3NlbGYucm9vdF9kaXIsIHNlbGYubG9nZ2VyXSkKKworICAgICAgICAjIFRoZSBzaWduYWwgaGFuZGxlciBmcm9tIHRlc3RpbWFnZS5iYmNsYXNzIGNhbiBjYXVzZSBkZWFkbG9ja3MgaGVyZQorICAgICAgICAjIGlmIHRoZSBIVFRQU2VydmVyIGlzIHRlcm1pbmF0ZWQgYmVmb3JlIGl0IGNhbiByZXN0b3JlIHRoZSBzdGFuZGFyZCAKKyAgICAgICAgI3NpZ25hbCBiZWhhdmlvdXIKKyAgICAgICAgb3JpZyA9IHNpZ25hbC5nZXRzaWduYWwoc2lnbmFsLlNJR1RFUk0pCisgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1RFUk0sIHNpZ25hbC5TSUdfREZMKQorICAgICAgICBzZWxmLnByb2Nlc3Muc3RhcnQoKQorICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdURVJNLCBvcmlnKQorCisgICAgICAgIGlmIHNlbGYubG9nZ2VyOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiU3RhcnRlZCBIVFRQU2VydmljZSBvbiAlczolcyIgJSAoc2VsZi5ob3N0LCBzZWxmLnBvcnQpKQorCisKKyAgICBkZWYgc3RvcChzZWxmKToKKyAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAic2VydmVyIik6CisgICAgICAgICAgICBzZWxmLnNlcnZlci5zZXJ2ZXJfY2xvc2UoKQorICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJwcm9jZXNzIik6CisgICAgICAgICAgICBzZWxmLnByb2Nlc3MudGVybWluYXRlKCkKKyAgICAgICAgICAgIHNlbGYucHJvY2Vzcy5qb2luKCkKKyAgICAgICAgaWYgc2VsZi5sb2dnZXI6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJTdG9wcGVkIEhUVFBTZXJ2aWNlIG9uICVzOiVzIiAlIChzZWxmLmhvc3QsIHNlbGYucG9ydCkpCisKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvdXRpbHMucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL3V0aWxzLnB5CmluZGV4IDVjOTEwYjQuLmE3ZmYzM2QgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvdXRpbHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy91dGlscy5weQpAQCAtNjIyLDMgKzYyMiw0NyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycvaG9tZS91c2VyL290aGVycGF0aC9sYXllcjYnLCAnL2hvbWUvdXNlci9wYXRoL2xheWVyMyddLCBbJy9ob21lL3VzZXIvcGF0aC9sYXllcjEnLCAnL2hvbWUvdXNlci9wYXRoL2xheWVyNCcsICcvaG9tZS91c2VyL3BhdGgvbGF5ZXI3J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJy9ob21lL3VzZXIvcGF0aC9sYXllcjMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnL2hvbWUvdXNlci9wYXRoL2xheWVyNyddKQorCisKK2NsYXNzIEdldFJlZmVyZW5jZWRWYXJzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZCA9IGJiLmRhdGEuaW5pdCgpCisKKyAgICBkZWYgY2hlY2tfcmVmZXJlbmNlZChzZWxmLCBleHByZXNzaW9uLCBleHBlY3RlZF9sYXllcnMpOgorICAgICAgICB2YXJzID0gYmIudXRpbHMuZ2V0X3JlZmVyZW5jZWRfdmFycyhleHByZXNzaW9uLCBzZWxmLmQpCisKKyAgICAgICAgIyBEbyB0aGUgZWFzeSBjaGVjayBmaXJzdCAtIGlzIGV2ZXJ5IHZhcmlhYmxlIGFjY291bnRlZCBmb3I/CisgICAgICAgIGV4cGVjdGVkX3ZhcnMgPSBzZXQudW5pb24oc2V0KCksICpleHBlY3RlZF9sYXllcnMpCisgICAgICAgIGdvdF92YXJzID0gc2V0KHZhcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0U2V0RXF1YWwoZ290X3ZhcnMsIGV4cGVjdGVkX3ZhcnMpCisKKyAgICAgICAgIyBOb3cgdGVzdCB0aGUgb3JkZXIgb2YgdGhlIGxheWVycworICAgICAgICBzdGFydCA9IDAKKyAgICAgICAgZm9yIGksIGV4cGVjdGVkX2xheWVyIGluIGVudW1lcmF0ZShleHBlY3RlZF9sYXllcnMpOgorICAgICAgICAgICAgZ290X2xheWVyID0gc2V0KHZhcnNbc3RhcnQ6bGVuKGV4cGVjdGVkX2xheWVyKStzdGFydF0pCisgICAgICAgICAgICBzdGFydCArPSBsZW4oZXhwZWN0ZWRfbGF5ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFNldEVxdWFsKGdvdF9sYXllciwgZXhwZWN0ZWRfbGF5ZXIpCisKKyAgICBkZWYgdGVzdF9ub192YXJzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JlZmVyZW5jZWQoIiIsIFtdKQorICAgICAgICBzZWxmLmNoZWNrX3JlZmVyZW5jZWQoIiAiLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja19yZWZlcmVuY2VkKCIgbm8gdmFycyBoZXJlISAiLCBbXSkKKworICAgIGRlZiB0ZXN0X3NpbmdsZV9sYXllcihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZWZlcmVuY2VkKCIke1ZBUn0iLCBbeyJWQVIifV0pCisgICAgICAgIHNlbGYuY2hlY2tfcmVmZXJlbmNlZCgiJHtWQVJ9ICR7VkFSfSIsIFt7IlZBUiJ9XSkKKworICAgIGRlZiB0ZXN0X3R3b19sYXllcihzZWxmKToKKyAgICAgICAgc2VsZi5kLnNldFZhcigiVkFSIiwgIiR7Qn0iKQorICAgICAgICBzZWxmLmNoZWNrX3JlZmVyZW5jZWQoIiR7VkFSfSIsIFt7IlZBUiJ9LCB7IkIifV0pCisgICAgICAgIHNlbGYuY2hlY2tfcmVmZXJlbmNlZCgiJHtAZC5nZXRWYXIoJ1ZBUicpfSIsIFt7IlZBUiJ9LCB7IkIifV0pCisKKyAgICBkZWYgdGVzdF9tb3JlX2NvbXBsaWNhdGVkKHNlbGYpOgorICAgICAgICBzZWxmLmRbIlNSQ19VUkkiXSA9ICIke1FUX0dJVH0vJHtRVF9NT0RVTEV9LmdpdDtuYW1lPSR7UVRfTU9EVUxFfTske1FUX01PRFVMRV9CUkFOQ0hfUEFSQU19O3Byb3RvY29sPSR7UVRfR0lUX1BST1RPQ09MfSIKKyAgICAgICAgc2VsZi5kWyJRVF9HSVQiXSA9ICJnaXQ6Ly9jb2RlLnF0LmlvLyR7UVRfR0lUX1BST0pFQ1R9IgorICAgICAgICBzZWxmLmRbIlFUX01PRFVMRV9CUkFOQ0hfUEFSQU0iXSA9ICJicmFuY2g9JHtRVF9NT0RVTEVfQlJBTkNIfSIKKyAgICAgICAgc2VsZi5kWyJRVF9NT0RVTEUiXSA9ICIke0JQTn0iCisgICAgICAgIHNlbGYuZFsiQlBOIl0gPSAic29tZXRoaW5nIHRvIGRvIHdpdGggJHtQTn0gYW5kICR7U1BFQ0lBTF9QS0dTVUZGSVh9IgorCisgICAgICAgIGxheWVycyA9IFt7IlNSQ19VUkkifSwgeyJRVF9HSVQiLCAiUVRfTU9EVUxFIiwgIlFUX01PRFVMRV9CUkFOQ0hfUEFSQU0iLCAiUVRfR0lUX1BST1RPQ09MIn0sIHsiUVRfR0lUX1BST0pFQ1QiLCAiUVRfTU9EVUxFX0JSQU5DSCIsICJCUE4ifSwgeyJQTiIsICJTUEVDSUFMX1BLR1NVRkZJWCJ9XQorICAgICAgICBzZWxmLmNoZWNrX3JlZmVyZW5jZWQoIiR7U1JDX1VSSX0iLCBsYXllcnMpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3RpbmZvaWwucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3RpbmZvaWwucHkKaW5kZXggMGExYjkxMy4uOGM5YjZiOCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi90aW5mb2lsLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGluZm9pbC5weQpAQCAtMTMsNiArMTMsNyBAQAogaW1wb3J0IGF0ZXhpdAogaW1wb3J0IHJlCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdCwgZGVmYXVsdGRpY3QKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCiAKIGltcG9ydCBiYi5jYWNoZQogaW1wb3J0IGJiLmNvb2tlcgpAQCAtMjEsOCArMjIsOCBAQAogaW1wb3J0IGJiLnV0aWxzCiBpbXBvcnQgYmIuY29tbWFuZAogaW1wb3J0IGJiLnJlbW90ZWRhdGEKLWZyb20gYmIuY29va2VyZGF0YSBpbXBvcnQgQ29va2VyQ29uZmlndXJhdGlvbiwgQ29uZmlnUGFyYW1ldGVycwotZnJvbSBiYi5tYWluIGltcG9ydCBzZXR1cF9iaXRiYWtlLCBCaXRCYWtlQ29uZmlnUGFyYW1ldGVycywgQkJNYWluRXhjZXB0aW9uCitmcm9tIGJiLmNvb2tlcmRhdGEgaW1wb3J0IENvb2tlckNvbmZpZ3VyYXRpb24KK2Zyb20gYmIubWFpbiBpbXBvcnQgc2V0dXBfYml0YmFrZSwgQml0QmFrZUNvbmZpZ1BhcmFtZXRlcnMKIGltcG9ydCBiYi5mZXRjaDIKIAogCkBAIC00NCw2NiArNDUsNjkgQEAKIGNsYXNzIFRpbmZvaWxDb21tYW5kRmFpbGVkKEV4Y2VwdGlvbik6CiAgICAgIiIiRXhjZXB0aW9uIHJhaXNlZCB3aGVuIHJ1bl9jb21tYW5kIGZhaWxzIiIiCiAKK2NsYXNzIFRpbmZvaWxEYXRhU3RvcmVDb25uZWN0b3JWYXJIaXN0b3J5OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0aW5mb2lsLCBkc2luZGV4KToKKyAgICAgICAgc2VsZi50aW5mb2lsID0gdGluZm9pbAorICAgICAgICBzZWxmLmRzaW5kZXggPSBkc2luZGV4CisKKyAgICBkZWYgcmVtb3RlQ29tbWFuZChzZWxmLCBjbWQsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2RhdGFTdG9yZUNvbm5lY3RvclZhckhpc3RDbWQnLCBzZWxmLmRzaW5kZXgsIGNtZCwgYXJncywga3dhcmdzKQorCisgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgorICAgICAgICBpZiBub3QgaGFzYXR0cihiYi5kYXRhX3NtYXJ0LlZhcmlhYmxlSGlzdG9yeSwgbmFtZSk6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiVmFyaWFibGVIaXN0b3J5IGhhcyBubyBzdWNoIG1ldGhvZCAlcyIgJSBuYW1lKQorCisgICAgICAgIG5ld2Z1bmMgPSBwYXJ0aWFsKHNlbGYucmVtb3RlQ29tbWFuZCwgbmFtZSkKKyAgICAgICAgc2V0YXR0cihzZWxmLCBuYW1lLCBuZXdmdW5jKQorICAgICAgICByZXR1cm4gbmV3ZnVuYworCitjbGFzcyBUaW5mb2lsRGF0YVN0b3JlQ29ubmVjdG9ySW5jSGlzdG9yeToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGluZm9pbCwgZHNpbmRleCk6CisgICAgICAgIHNlbGYudGluZm9pbCA9IHRpbmZvaWwKKyAgICAgICAgc2VsZi5kc2luZGV4ID0gZHNpbmRleAorCisgICAgZGVmIHJlbW90ZUNvbW1hbmQoc2VsZiwgY21kLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdkYXRhU3RvcmVDb25uZWN0b3JJbmNIaXN0Q21kJywgc2VsZi5kc2luZGV4LCBjbWQsIGFyZ3MsIGt3YXJncykKKworICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoYmIuZGF0YV9zbWFydC5JbmNsdWRlSGlzdG9yeSwgbmFtZSk6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiSW5jbHVkZUhpc3RvcnkgaGFzIG5vIHN1Y2ggbWV0aG9kICVzIiAlIG5hbWUpCisKKyAgICAgICAgbmV3ZnVuYyA9IHBhcnRpYWwoc2VsZi5yZW1vdGVDb21tYW5kLCBuYW1lKQorICAgICAgICBzZXRhdHRyKHNlbGYsIG5hbWUsIG5ld2Z1bmMpCisgICAgICAgIHJldHVybiBuZXdmdW5jCisKIGNsYXNzIFRpbmZvaWxEYXRhU3RvcmVDb25uZWN0b3I6Ci0gICAgIiIiQ29ubmVjdG9yIG9iamVjdCB1c2VkIHRvIGVuYWJsZSBhY2Nlc3MgdG8gZGF0YXN0b3JlIG9iamVjdHMgdmlhIHRpbmZvaWwiIiIKKyAgICAiIiIKKyAgICBDb25uZWN0b3Igb2JqZWN0IHVzZWQgdG8gZW5hYmxlIGFjY2VzcyB0byBkYXRhc3RvcmUgb2JqZWN0cyB2aWEgdGluZm9pbAorICAgIE1ldGhvZCBjYWxscyBhcmUgdHJhbnNtaXR0ZWQgdG8gdGhlIHJlbW90ZSBkYXRhc3RvcmUgZm9yIHByb2Nlc3NpbmcsIGlmIGEgZGF0YXN0b3JlIGlzCisgICAgcmV0dXJuZWQgd2UgcmV0dXJuIGEgY29ubmVjdG9yIG9iamVjdCBmb3IgdGhlIG5ldyBzdG9yZQorICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRpbmZvaWwsIGRzaW5kZXgpOgogICAgICAgICBzZWxmLnRpbmZvaWwgPSB0aW5mb2lsCiAgICAgICAgIHNlbGYuZHNpbmRleCA9IGRzaW5kZXgKLSAgICBkZWYgZ2V0VmFyKHNlbGYsIG5hbWUpOgotICAgICAgICB2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZGF0YVN0b3JlQ29ubmVjdG9yRmluZFZhcicsIHNlbGYuZHNpbmRleCwgbmFtZSkKLSAgICAgICAgb3ZlcnJpZGVzID0gTm9uZQotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBkaWN0KToKLSAgICAgICAgICAgIGlmICdfY29ubmVjdG9yX29yaWd0eXBlJyBpbiB2YWx1ZToKLSAgICAgICAgICAgICAgICB2YWx1ZVsnX2NvbnRlbnQnXSA9IHNlbGYudGluZm9pbC5fcmVjb252ZXJ0X3R5cGUodmFsdWVbJ19jb250ZW50J10sIHZhbHVlWydfY29ubmVjdG9yX29yaWd0eXBlJ10pCi0gICAgICAgICAgICAgICAgZGVsIHZhbHVlWydfY29ubmVjdG9yX29yaWd0eXBlJ10KLSAgICAgICAgICAgIGlmICdfY29ubmVjdG9yX292ZXJyaWRlcycgaW4gdmFsdWU6Ci0gICAgICAgICAgICAgICAgb3ZlcnJpZGVzID0gdmFsdWVbJ19jb25uZWN0b3Jfb3ZlcnJpZGVzJ10KLSAgICAgICAgICAgICAgICBkZWwgdmFsdWVbJ19jb25uZWN0b3Jfb3ZlcnJpZGVzJ10KLSAgICAgICAgcmV0dXJuIHZhbHVlLCBvdmVycmlkZXMKLSAgICBkZWYgZ2V0S2V5cyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNldChzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2RhdGFTdG9yZUNvbm5lY3RvckdldEtleXMnLCBzZWxmLmRzaW5kZXgpKQotICAgIGRlZiBnZXRWYXJIaXN0b3J5KHNlbGYsIG5hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdkYXRhU3RvcmVDb25uZWN0b3JHZXRWYXJIaXN0b3J5Jywgc2VsZi5kc2luZGV4LCBuYW1lKQotICAgIGRlZiBleHBhbmRQeXRob25SZWYoc2VsZiwgdmFybmFtZSwgZXhwciwgZCk6Ci0gICAgICAgIGRzID0gYmIucmVtb3RlZGF0YS5SZW1vdGVEYXRhc3RvcmVzLnRyYW5zbWl0X2RhdGFzdG9yZShkKQotICAgICAgICByZXQgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2RhdGFTdG9yZUNvbm5lY3RvckV4cGFuZFB5dGhvblJlZicsIGRzLCB2YXJuYW1lLCBleHByKQorICAgICAgICBzZWxmLnZhcmhpc3RvcnkgPSBUaW5mb2lsRGF0YVN0b3JlQ29ubmVjdG9yVmFySGlzdG9yeSh0aW5mb2lsLCBkc2luZGV4KQorICAgICAgICBzZWxmLmluY2hpc3RvcnkgPSBUaW5mb2lsRGF0YVN0b3JlQ29ubmVjdG9ySW5jSGlzdG9yeSh0aW5mb2lsLCBkc2luZGV4KQorCisgICAgZGVmIHJlbW90ZUNvbW1hbmQoc2VsZiwgY21kLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXQgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2RhdGFTdG9yZUNvbm5lY3RvckNtZCcsIHNlbGYuZHNpbmRleCwgY21kLCBhcmdzLCBrd2FyZ3MpCisgICAgICAgIGlmIGlzaW5zdGFuY2UocmV0LCBiYi5jb21tYW5kLkRhdGFTdG9yZUNvbm5lY3Rpb25IYW5kbGUpOgorICAgICAgICAgICAgcmV0dXJuIFRpbmZvaWxEYXRhU3RvcmVDb25uZWN0b3Ioc2VsZi50aW5mb2lsLCByZXQuZHNpbmRleCkKICAgICAgICAgcmV0dXJuIHJldAotICAgIGRlZiBzZXRWYXIoc2VsZiwgdmFybmFtZSwgdmFsdWUpOgotICAgICAgICBpZiBzZWxmLmRzaW5kZXggaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnc2V0VmFyaWFibGUnLCB2YXJuYW1lLCB2YWx1ZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgTm90IGN1cnJlbnRseSBpbXBsZW1lbnRlZCAtIGluZGljYXRlIHRoYXQgc2V0dGluZyBzaG91bGQKLSAgICAgICAgICAgICMgYmUgcmVkaXJlY3RlZCB0byBsb2NhbCBzaWRlCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGRlZiBzZXRWYXJGbGFnKHNlbGYsIHZhcm5hbWUsIGZsYWduYW1lLCB2YWx1ZSk6Ci0gICAgICAgIGlmIHNlbGYuZHNpbmRleCBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdkYXRhU3RvcmVDb25uZWN0b3JTZXRWYXJGbGFnJywgc2VsZi5kc2luZGV4LCB2YXJuYW1lLCBmbGFnbmFtZSwgdmFsdWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIE5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWQgLSBpbmRpY2F0ZSB0aGF0IHNldHRpbmcgc2hvdWxkCi0gICAgICAgICAgICAjIGJlIHJlZGlyZWN0ZWQgdG8gbG9jYWwgc2lkZQotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICBkZWYgZGVsVmFyKHNlbGYsIHZhcm5hbWUpOgotICAgICAgICBpZiBzZWxmLmRzaW5kZXggaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZGF0YVN0b3JlQ29ubmVjdG9yRGVsVmFyJywgc2VsZi5kc2luZGV4LCB2YXJuYW1lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBOb3QgY3VycmVudGx5IGltcGxlbWVudGVkIC0gaW5kaWNhdGUgdGhhdCBzZXR0aW5nIHNob3VsZAotICAgICAgICAgICAgIyBiZSByZWRpcmVjdGVkIHRvIGxvY2FsIHNpZGUKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgZGVmIGRlbFZhckZsYWcoc2VsZiwgdmFybmFtZSwgZmxhZ25hbWUpOgotICAgICAgICBpZiBzZWxmLmRzaW5kZXggaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZGF0YVN0b3JlQ29ubmVjdG9yRGVsVmFyJywgc2VsZi5kc2luZGV4LCB2YXJuYW1lLCBmbGFnbmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgTm90IGN1cnJlbnRseSBpbXBsZW1lbnRlZCAtIGluZGljYXRlIHRoYXQgc2V0dGluZyBzaG91bGQKLSAgICAgICAgICAgICMgYmUgcmVkaXJlY3RlZCB0byBsb2NhbCBzaWRlCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGRlZiByZW5hbWVWYXIoc2VsZiwgbmFtZSwgbmV3bmFtZSk6Ci0gICAgICAgIGlmIHNlbGYuZHNpbmRleCBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdkYXRhU3RvcmVDb25uZWN0b3JSZW5hbWVWYXInLCBzZWxmLmRzaW5kZXgsIG5hbWUsIG5ld25hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIE5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWQgLSBpbmRpY2F0ZSB0aGF0IHNldHRpbmcgc2hvdWxkCi0gICAgICAgICAgICAjIGJlIHJlZGlyZWN0ZWQgdG8gbG9jYWwgc2lkZQotICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoYmIuZGF0YS5fZGljdF90eXBlLCBuYW1lKToKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJEYXRhIHN0b3JlIGhhcyBubyBzdWNoIG1ldGhvZCAlcyIgJSBuYW1lKQorCisgICAgICAgIG5ld2Z1bmMgPSBwYXJ0aWFsKHNlbGYucmVtb3RlQ29tbWFuZCwgbmFtZSkKKyAgICAgICAgc2V0YXR0cihzZWxmLCBuYW1lLCBuZXdmdW5jKQorICAgICAgICByZXR1cm4gbmV3ZnVuYworCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICBrZXlzID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdkYXRhU3RvcmVDb25uZWN0b3JDbWQnLCBzZWxmLmRzaW5kZXgsICJrZXlzIiwgW10sIHt9KQorICAgICAgICBmb3IgayBpbiBrZXlzOgorICAgICAgICAgICAgeWllbGQgawogCiBjbGFzcyBUaW5mb2lsQ29va2VyQWRhcHRlcjoKICAgICAiIiIKQEAgLTEyNywxMiArMTMxLDEzIEBACiAKICAgICBjbGFzcyBUaW5mb2lsUmVjaXBlQ2FjaGVBZGFwdGVyOgogICAgICAgICAiIiIgY29va2VyLnJlY2lwZWNhY2hlIGFkYXB0ZXIgIiIiCi0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0aW5mb2lsKToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRpbmZvaWwsIG1jPScnKToKICAgICAgICAgICAgIHNlbGYudGluZm9pbCA9IHRpbmZvaWwKKyAgICAgICAgICAgIHNlbGYubWMgPSBtYwogICAgICAgICAgICAgc2VsZi5fY2FjaGUgPSB7fQogCiAgICAgICAgIGRlZiBnZXRfcGtnX3BuX2ZuKHNlbGYpOgotICAgICAgICAgICAgcGtnX3BuID0gZGVmYXVsdGRpY3QobGlzdCwgc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVzJykgb3IgW10pCisgICAgICAgICAgICBwa2dfcG4gPSBkZWZhdWx0ZGljdChsaXN0LCBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZXMnLCBzZWxmLm1jKSBvciBbXSkKICAgICAgICAgICAgIHBrZ19mbiA9IHt9CiAgICAgICAgICAgICBmb3IgcG4sIGZubGlzdCBpbiBwa2dfcG4uaXRlbXMoKToKICAgICAgICAgICAgICAgICBmb3IgZm4gaW4gZm5saXN0OgpAQCAtMTUxLDI3ICsxNTYsMjcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmdldF9wa2dfcG5fZm4oKQogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jYWNoZVtuYW1lXQogICAgICAgICAgICAgZWxpZiBuYW1lID09ICdkZXBzJzoKLSAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBkZWZhdWx0ZGljdChsaXN0LCBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZURlcGVuZHMnKSBvciBbXSkKKyAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBkZWZhdWx0ZGljdChsaXN0LCBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZURlcGVuZHMnLCBzZWxmLm1jKSBvciBbXSkKICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAncnVuZGVwcyc6Ci0gICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gZGVmYXVsdGRpY3QobGFtYmRhOiBkZWZhdWx0ZGljdChsaXN0KSwgc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSdW50aW1lRGVwZW5kcycpIG9yIFtdKQorICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IGRlZmF1bHRkaWN0KGxhbWJkYTogZGVmYXVsdGRpY3QobGlzdCksIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UnVudGltZURlcGVuZHMnLCBzZWxmLm1jKSBvciBbXSkKICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAncnVucmVjcyc6Ci0gICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gZGVmYXVsdGRpY3QobGFtYmRhOiBkZWZhdWx0ZGljdChsaXN0KSwgc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSdW50aW1lUmVjb21tZW5kcycpIG9yIFtdKQorICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IGRlZmF1bHRkaWN0KGxhbWJkYTogZGVmYXVsdGRpY3QobGlzdCksIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UnVudGltZVJlY29tbWVuZHMnLCBzZWxmLm1jKSBvciBbXSkKICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAncGtnX3BlcHZwcic6Ci0gICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVWZXJzaW9ucycpIG9yIHt9CisgICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVWZXJzaW9ucycsIHNlbGYubWMpIG9yIHt9CiAgICAgICAgICAgICBlbGlmIG5hbWUgPT0gJ2luaGVyaXRzJzoKLSAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZUluaGVyaXRzJykgb3Ige30KKyAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZUluaGVyaXRzJywgc2VsZi5tYykgb3Ige30KICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAnYmJmaWxlX3ByaW9yaXR5JzoKLSAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldEJiRmlsZVByaW9yaXR5Jykgb3Ige30KKyAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldEJiRmlsZVByaW9yaXR5Jywgc2VsZi5tYykgb3Ige30KICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAncGtnX2RwJzoKLSAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldERlZmF1bHRQcmVmZXJlbmNlJykgb3Ige30KKyAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldERlZmF1bHRQcmVmZXJlbmNlJywgc2VsZi5tYykgb3Ige30KICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAnZm5fcHJvdmlkZXMnOgotICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UmVjaXBlUHJvdmlkZXMnKSBvciB7fQorICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UmVjaXBlUHJvdmlkZXMnLCBzZWxmLm1jKSBvciB7fQogICAgICAgICAgICAgZWxpZiBuYW1lID09ICdwYWNrYWdlcyc6Ci0gICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVQYWNrYWdlcycpIG9yIHt9CisgICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVQYWNrYWdlcycsIHNlbGYubWMpIG9yIHt9CiAgICAgICAgICAgICBlbGlmIG5hbWUgPT0gJ3BhY2thZ2VzX2R5bmFtaWMnOgotICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UmVjaXBlUGFja2FnZXNEeW5hbWljJykgb3Ige30KKyAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZVBhY2thZ2VzRHluYW1pYycsIHNlbGYubWMpIG9yIHt9CiAgICAgICAgICAgICBlbGlmIG5hbWUgPT0gJ3Jwcm92aWRlcnMnOgotICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UlByb3ZpZGVycycpIG9yIHt9CisgICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSUHJvdmlkZXJzJywgc2VsZi5tYykgb3Ige30KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiVzIGluc3RhbmNlIGhhcyBubyBhdHRyaWJ1dGUgJyVzJyIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIG5hbWUpKQogCkBAIC0xODIsOCArMTg3LDkgQEAKICAgICAgICAgc2VsZi50aW5mb2lsID0gdGluZm9pbAogICAgICAgICBzZWxmLmNvbGxlY3Rpb24gPSBzZWxmLlRpbmZvaWxDb29rZXJDb2xsZWN0aW9uQWRhcHRlcih0aW5mb2lsKQogICAgICAgICBzZWxmLnJlY2lwZWNhY2hlcyA9IHt9Ci0gICAgICAgICMgRklYTUUgYWxsIG1hY2hpbmVzCiAgICAgICAgIHNlbGYucmVjaXBlY2FjaGVzWycnXSA9IHNlbGYuVGluZm9pbFJlY2lwZUNhY2hlQWRhcHRlcih0aW5mb2lsKQorICAgICAgICBmb3IgbWMgaW4gKHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdCQk1VTFRJQ09ORklHJykgb3IgJycpLnNwbGl0KCk6CisgICAgICAgICAgICBzZWxmLnJlY2lwZWNhY2hlc1ttY10gPSBzZWxmLlRpbmZvaWxSZWNpcGVDYWNoZUFkYXB0ZXIodGluZm9pbCwgbWMpCiAgICAgICAgIHNlbGYuX2NhY2hlID0ge30KICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CiAgICAgICAgICMgR3JhYiB0aGVzZSBvbmx5IHdoZW4gdGhleSBhcmUgcmVxdWVzdGVkIHNpbmNlIHRoZXkgYXJlbid0IGFsd2F5cyB1c2VkCkBAIC00MTAsOSArNDE2LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLnJ1bl9hY3Rpb25zKGNvbmZpZ19wYXJhbXMpCiAgICAgICAgICAgICAgICAgc2VsZi5yZWNpcGVzX3BhcnNlZCA9IFRydWUKIAotICAgICAgICAgICAgc2VsZi5jb25maWdfZGF0YSA9IGJiLmRhdGEuaW5pdCgpCi0gICAgICAgICAgICBjb25uZWN0b3IgPSBUaW5mb2lsRGF0YVN0b3JlQ29ubmVjdG9yKHNlbGYsIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmNvbmZpZ19kYXRhLnNldFZhcignX3JlbW90ZV9kYXRhJywgY29ubmVjdG9yKQorICAgICAgICAgICAgc2VsZi5jb25maWdfZGF0YSA9IFRpbmZvaWxEYXRhU3RvcmVDb25uZWN0b3Ioc2VsZiwgMCkKICAgICAgICAgICAgIHNlbGYuY29va2VyID0gVGluZm9pbENvb2tlckFkYXB0ZXIoc2VsZikKICAgICAgICAgICAgIHNlbGYuY29va2VyX2RhdGEgPSBzZWxmLmNvb2tlci5yZWNpcGVjYWNoZXNbJyddCiAgICAgICAgIGVsc2U6CkBAIC01MDEsMTEgKzUwNSwxMSBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIE9yZGVyZWREaWN0KHNlbGYucnVuX2NvbW1hbmQoJ2dldFNraXBwZWRSZWNpcGVzJykpCiAKLSAgICBkZWYgZ2V0X2FsbF9wcm92aWRlcnMoc2VsZik6Ci0gICAgICAgIHJldHVybiBkZWZhdWx0ZGljdChsaXN0LCBzZWxmLnJ1bl9jb21tYW5kKCdhbGxQcm92aWRlcnMnKSkKKyAgICBkZWYgZ2V0X2FsbF9wcm92aWRlcnMoc2VsZiwgbWM9JycpOgorICAgICAgICByZXR1cm4gZGVmYXVsdGRpY3QobGlzdCwgc2VsZi5ydW5fY29tbWFuZCgnYWxsUHJvdmlkZXJzJywgbWMpKQogCi0gICAgZGVmIGZpbmRfcHJvdmlkZXJzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZCgnZmluZFByb3ZpZGVycycpCisgICAgZGVmIGZpbmRfcHJvdmlkZXJzKHNlbGYsIG1jPScnKToKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoJ2ZpbmRQcm92aWRlcnMnLCBtYykKIAogICAgIGRlZiBmaW5kX2Jlc3RfcHJvdmlkZXIoc2VsZiwgcG4pOgogICAgICAgICByZXR1cm4gc2VsZi5ydW5fY29tbWFuZCgnZmluZEJlc3RQcm92aWRlcicsIHBuKQpAQCAtNjI0LDkgKzYyOCw2IEBACiAgICAgICAgICAgICBhcHBlbmRzOiBUcnVlIHRvIGFwcGx5IGJiYXBwZW5kcywgRmFsc2Ugb3RoZXJ3aXNlCiAgICAgICAgICAgICBhcHBlbmRsaXN0OiBvcHRpb25hbCBsaXN0IG9mIGJiYXBwZW5kIGZpbGVzIHRvIGFwcGx5LCBpZiB5b3UKICAgICAgICAgICAgICAgICAgICAgICAgIHdhbnQgdG8gZmlsdGVyIHRoZW0KLSAgICAgICAgICAgIGNvbmZpZ19kYXRhOiBjdXN0b20gY29uZmlnIGRhdGFzdG9yZSB0byB1c2UuIE5PVEU6IGlmIHlvdQotICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgY29uZmlnX2RhdGEgdGhlbiB5b3UgY2Fubm90IHVzZSBhIHZpcnR1YWwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY2F0aW9uIGZvciBmbi4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIHNlbGYudHJhY2tpbmc6CiAgICAgICAgICAgICAjIEVuYWJsZSBoaXN0b3J5IHRyYWNraW5nIGp1c3QgZm9yIHRoZSBwYXJzZSBvcGVyYXRpb24KQEAgLTYzNSw4ICs2MzYsOCBAQAogICAgICAgICAgICAgaWYgYXBwZW5kcyBhbmQgYXBwZW5kbGlzdCA9PSBbXToKICAgICAgICAgICAgICAgICBhcHBlbmRzID0gRmFsc2UKICAgICAgICAgICAgIGlmIGNvbmZpZ19kYXRhOgotICAgICAgICAgICAgICAgIGRjdHIgPSBiYi5yZW1vdGVkYXRhLlJlbW90ZURhdGFzdG9yZXMudHJhbnNtaXRfZGF0YXN0b3JlKGNvbmZpZ19kYXRhKQotICAgICAgICAgICAgICAgIGRzY29uID0gc2VsZi5ydW5fY29tbWFuZCgncGFyc2VSZWNpcGVGaWxlJywgZm4sIGFwcGVuZHMsIGFwcGVuZGxpc3QsIGRjdHIpCisgICAgICAgICAgICAgICAgIGNvbmZpZ19kYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGNvbmZpZ19kYXRhKQorICAgICAgICAgICAgICAgICBkc2NvbiA9IHNlbGYucnVuX2NvbW1hbmQoJ3BhcnNlUmVjaXBlRmlsZScsIGZuLCBhcHBlbmRzLCBhcHBlbmRsaXN0LCBjb25maWdfZGF0YS5kc2luZGV4KQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBkc2NvbiA9IHNlbGYucnVuX2NvbW1hbmQoJ3BhcnNlUmVjaXBlRmlsZScsIGZuLCBhcHBlbmRzLCBhcHBlbmRsaXN0KQogICAgICAgICAgICAgaWYgZHNjb246CkBAIC03MjMsMjEgKzcyNCw5IEBACiAgICAgICAgICAgICAjIEJvcnJvd2VkIGZyb20ga25vdHR5LCBpbnN0ZWFkIHNvbWV3aGF0IGhhY2tpbHkgd2UgdXNlIHRoZSBoZWxwZXIKICAgICAgICAgICAgICMgYXMgdGhlIG9iamVjdCB0byBzdG9yZSAic2h1dGRvd24iIG9uCiAgICAgICAgICAgICBoZWxwZXIgPSBiYi51aS51aWhlbHBlci5CQlVJSGVscGVyKCkKLSAgICAgICAgICAgICMgV2Ugc2V0IHVwIGxvZ2dpbmcgb3B0aW9uYWxseSBpbiB0aGUgY29uc3RydWN0b3Igc28gbm93IHdlIG5lZWQgdG8KLSAgICAgICAgICAgICMgZ3JhYiB0aGUgaGFuZGxlcnMgdG8gcGFzcyB0byBUZXJtaW5hbEZpbHRlcgotICAgICAgICAgICAgY29uc29sZSA9IE5vbmUKLSAgICAgICAgICAgIGVycmNvbnNvbGUgPSBOb25lCi0gICAgICAgICAgICBmb3IgaGFuZGxlciBpbiBzZWxmLmxvZ2dlci5oYW5kbGVyczoKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGhhbmRsZXIsIGxvZ2dpbmcuU3RyZWFtSGFuZGxlcik6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGhhbmRsZXIuc3RyZWFtID09IHN5cy5zdGRvdXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlID0gaGFuZGxlcgotICAgICAgICAgICAgICAgICAgICBlbGlmIGhhbmRsZXIuc3RyZWFtID09IHN5cy5zdGRlcnI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBlcnJjb25zb2xlID0gaGFuZGxlcgotICAgICAgICAgICAgZm9ybWF0X3N0ciA9ICIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIKLSAgICAgICAgICAgIGZvcm1hdCA9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlcihmb3JtYXRfc3RyKQogICAgICAgICAgICAgaGVscGVyLnNodXRkb3duID0gMAogICAgICAgICAgICAgcGFyc2Vwcm9ncmVzcyA9IE5vbmUKLSAgICAgICAgICAgIHRlcm1maWx0ZXIgPSBiYi51aS5rbm90dHkuVGVybWluYWxGaWx0ZXIoaGVscGVyLCBoZWxwZXIsIGNvbnNvbGUsIGVycmNvbnNvbGUsIGZvcm1hdCwgcXVpZXQ9c2VsZi5xdWlldCkKKyAgICAgICAgICAgIHRlcm1maWx0ZXIgPSBiYi51aS5rbm90dHkuVGVybWluYWxGaWx0ZXIoaGVscGVyLCBoZWxwZXIsIHNlbGYubG9nZ2VyLmhhbmRsZXJzLCBxdWlldD1zZWxmLnF1aWV0KQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKQEAgLTg1OSw5ICs4NDgsNyBAQAogICAgICAgICAgICAgbmV3b2JqID0gb3JpZ3R5cGUob2JqKQogCiAgICAgICAgIGlmIGlzaW5zdGFuY2UobmV3b2JqLCBiYi5jb21tYW5kLkRhdGFTdG9yZUNvbm5lY3Rpb25IYW5kbGUpOgotICAgICAgICAgICAgY29ubmVjdG9yID0gVGluZm9pbERhdGFTdG9yZUNvbm5lY3RvcihzZWxmLCBuZXdvYmouZHNpbmRleCkKLSAgICAgICAgICAgIG5ld29iaiA9IGJiLmRhdGEuaW5pdCgpCi0gICAgICAgICAgICBuZXdvYmouc2V0VmFyKCdfcmVtb3RlX2RhdGEnLCBjb25uZWN0b3IpCisgICAgICAgICAgICBuZXdvYmogPSBUaW5mb2lsRGF0YVN0b3JlQ29ubmVjdG9yKHNlbGYsIG5ld29iai5kc2luZGV4KQogCiAgICAgICAgIHJldHVybiBuZXdvYmoKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS9idWlsZGluZm9oZWxwZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2J1aWxkaW5mb2hlbHBlci5weQppbmRleCA1Y2JjYTk3Li44MmM2MmUzIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2J1aWxkaW5mb2hlbHBlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2J1aWxkaW5mb2hlbHBlci5weQpAQCAtOTM1LDcgKzkzNSw3IEBACiAKICAgICAgICAgICAgICMgb25seSByZXNldCB0aGUgYnVpbGQgbmFtZSBpZiB0aGUgb25lIG9uIHRoZSBzZXJ2ZXIgaXMgYWN0dWFsbHkKICAgICAgICAgICAgICMgYSB2YWxpZCB2YWx1ZSBmb3IgdGhlIGJ1aWxkX25hbWUgZmllbGQKLSAgICAgICAgICAgIGlmIGJ1aWxkX25hbWUgIT0gTm9uZToKKyAgICAgICAgICAgIGlmIGJ1aWxkX25hbWUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgYnVpbGRfaW5mb1snYnVpbGRfbmFtZSddID0gYnVpbGRfbmFtZQogICAgICAgICAgICAgICAgIGNoYW5nZWQgPSBUcnVlCiAKQEAgLTExOTQsNyArMTE5NCw3IEBACiAgICAgICAgIGV2ZGF0YSA9IEJ1aWxkSW5mb0hlbHBlci5fZ2V0X2RhdGFfZnJvbV9ldmVudChldmVudCkKIAogICAgICAgICBmb3IgdCBpbiBzZWxmLmludGVybmFsX3N0YXRlWyd0YXJnZXRzJ106Ci0gICAgICAgICAgICBpZiB0LmlzX2ltYWdlID09IFRydWU6CisgICAgICAgICAgICBpZiB0LmlzX2ltYWdlOgogICAgICAgICAgICAgICAgIG91dHB1dF9maWxlcyA9IGxpc3QoZXZkYXRhLmtleXMoKSkKICAgICAgICAgICAgICAgICBmb3Igb3V0cHV0IGluIG91dHB1dF9maWxlczoKICAgICAgICAgICAgICAgICAgICAgaWYgdC50YXJnZXQgaW4gb3V0cHV0IGFuZCAncm9vdGZzJyBpbiBvdXRwdXQgYW5kIG5vdCBvdXRwdXQuZW5kc3dpdGgoIi5tYW5pZmVzdCIpOgpAQCAtMTIzNiw3ICsxMjM2LDcgQEAKICAgICAgICAgICAgICAgICB0YXNrX2luZm9ybWF0aW9uWydvdXRjb21lJ10gPSBUYXNrLk9VVENPTUVfUFJFQlVJTFQKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRhc2tfaW5mb3JtYXRpb25bJ3Rhc2tfZXhlY3V0ZWQnXSA9IFRydWUKLSAgICAgICAgICAgIGlmICdub2V4ZWMnIGluIHZhcnMoZXZlbnQpIGFuZCBldmVudC5ub2V4ZWMgPT0gVHJ1ZToKKyAgICAgICAgICAgIGlmICdub2V4ZWMnIGluIHZhcnMoZXZlbnQpIGFuZCBldmVudC5ub2V4ZWM6CiAgICAgICAgICAgICAgICAgdGFza19pbmZvcm1hdGlvblsndGFza19leGVjdXRlZCddID0gRmFsc2UKICAgICAgICAgICAgICAgICB0YXNrX2luZm9ybWF0aW9uWydvdXRjb21lJ10gPSBUYXNrLk9VVENPTUVfRU1QVFkKICAgICAgICAgICAgICAgICB0YXNrX2luZm9ybWF0aW9uWydzY3JpcHRfdHlwZSddID0gVGFzay5DT0RJTkdfTkEKQEAgLTE3NzYsNyArMTc3Niw3IEBACiAgICAgICAgIGltYWdlX2ZpbGVfZXh0ZW5zaW9uc191bmlxdWUgPSB7fQogICAgICAgICBpbWFnZV9mc3R5cGVzID0gc2VsZi5zZXJ2ZXIucnVuQ29tbWFuZCgKICAgICAgICAgICAgIFsnZ2V0VmFyaWFibGUnLCAnSU1BR0VfRlNUWVBFUyddKVswXQotICAgICAgICBpZiBpbWFnZV9mc3R5cGVzICE9IE5vbmU6CisgICAgICAgIGlmIGltYWdlX2ZzdHlwZXMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpbWFnZV90eXBlc19zdHIgPSBpbWFnZV9mc3R5cGVzLnN0cmlwKCkKICAgICAgICAgICAgIGltYWdlX2ZpbGVfZXh0ZW5zaW9ucyA9IHJlLnN1YihyJyB7Mix9JywgJyAnLCBpbWFnZV90eXBlc19zdHIpCiAgICAgICAgICAgICBpbWFnZV9maWxlX2V4dGVuc2lvbnNfdW5pcXVlID0gc2V0KGltYWdlX2ZpbGVfZXh0ZW5zaW9ucy5zcGxpdCgnICcpKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS9rbm90dHkucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2tub3R0eS5weQppbmRleCAzNTczNmFkLi44N2U4NzNkIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2tub3R0eS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2tub3R0eS5weQpAQCAtMTIsNyArMTIsNiBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCB4bWxycGMuY2xpZW50IGFzIHhtbHJwY2xpYgogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBwcm9ncmVzc2JhcgogaW1wb3J0IHNpZ25hbApAQCAtMzUsMTUgKzM0LDE1IEBACiAgICAgICAgIHNlbGYubXNnID0gbXNnCiAgICAgICAgIHNlbGYuZXh0cmFwb3MgPSBleHRyYXBvcwogICAgICAgICBpZiBub3Qgd2lkZ2V0czoKLSAgICAgICAgICAgIHdpZGdldHMgPSBbcHJvZ3Jlc3NiYXIuUGVyY2VudGFnZSgpLCAnICcsIHByb2dyZXNzYmFyLkJhcigpLCAnICcsCi0gICAgICAgICAgICBwcm9ncmVzc2Jhci5FVEEoKV0KLSAgICAgICAgICAgIHNlbGYuZXh0cmFwb3MgPSA0CisgICAgICAgICAgICB3aWRnZXRzID0gWyc6ICcsIHByb2dyZXNzYmFyLlBlcmNlbnRhZ2UoKSwgJyAnLCBwcm9ncmVzc2Jhci5CYXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgJyAnLCBwcm9ncmVzc2Jhci5FVEEoKV0KKyAgICAgICAgICAgIHNlbGYuZXh0cmFwb3MgPSA1CiAKICAgICAgICAgaWYgcmVzaXplX2hhbmRsZXI6CiAgICAgICAgICAgICBzZWxmLl9yZXNpemVfZGVmYXVsdCA9IHJlc2l6ZV9oYW5kbGVyCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl9yZXNpemVfZGVmYXVsdCA9IHNpZ25hbC5nZXRzaWduYWwoc2lnbmFsLlNJR1dJTkNIKQotICAgICAgICBwcm9ncmVzc2Jhci5Qcm9ncmVzc0Jhci5fX2luaXRfXyhzZWxmLCBtYXh2YWwsIFtzZWxmLm1zZyArICI6ICJdICsgd2lkZ2V0cywgZmQ9c3lzLnN0ZG91dCkKKyAgICAgICAgcHJvZ3Jlc3NiYXIuUHJvZ3Jlc3NCYXIuX19pbml0X18oc2VsZiwgbWF4dmFsLCBbc2VsZi5tc2ddICsgd2lkZ2V0cywgZmQ9c3lzLnN0ZG91dCkKIAogICAgIGRlZiBfaGFuZGxlX3Jlc2l6ZShzZWxmLCBzaWdudW09Tm9uZSwgZnJhbWU9Tm9uZSk6CiAgICAgICAgIHByb2dyZXNzYmFyLlByb2dyZXNzQmFyLl9oYW5kbGVfcmVzaXplKHNlbGYsIHNpZ251bSwgZnJhbWUpCkBAIC0xMTAsMTIgKzEwOSwxMSBAQAogCiAKIGNsYXNzIEludGVyYWN0Q29uc29sZUxvZ0ZpbHRlcihsb2dnaW5nLkZpbHRlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRmLCBmb3JtYXQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0Zik6CiAgICAgICAgIHNlbGYudGYgPSB0ZgotICAgICAgICBzZWxmLmZvcm1hdCA9IGZvcm1hdAogCiAgICAgZGVmIGZpbHRlcihzZWxmLCByZWNvcmQpOgotICAgICAgICBpZiByZWNvcmQubGV2ZWxubyA9PSBzZWxmLmZvcm1hdC5OT1RFIGFuZCAocmVjb3JkLm1zZy5zdGFydHN3aXRoKCJSdW5uaW5nIikgb3IgcmVjb3JkLm1zZy5zdGFydHN3aXRoKCJyZWNpcGUgIikpOgorICAgICAgICBpZiByZWNvcmQubGV2ZWxubyA9PSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuTk9URSBhbmQgKHJlY29yZC5tc2cuc3RhcnRzd2l0aCgiUnVubmluZyIpIG9yIHJlY29yZC5tc2cuc3RhcnRzd2l0aCgicmVjaXBlICIpKToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBzZWxmLnRmLmNsZWFyRm9vdGVyKCkKICAgICAgICAgcmV0dXJuIFRydWUKQEAgLTE1MSw3ICsxNDksNyBAQAogICAgICAgICAgICAgICAgIGNyID0gKDI1LCA4MCkKICAgICAgICAgcmV0dXJuIGNyCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWFpbiwgaGVscGVyLCBjb25zb2xlLCBlcnJjb25zb2xlLCBmb3JtYXQsIHF1aWV0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWFpbiwgaGVscGVyLCBoYW5kbGVycywgcXVpZXQpOgogICAgICAgICBzZWxmLm1haW4gPSBtYWluCiAgICAgICAgIHNlbGYuaGVscGVyID0gaGVscGVyCiAgICAgICAgIHNlbGYuY3V1ID0gTm9uZQpAQCAtMTgxLDcgKzE3OSwxMSBAQAogICAgICAgICAgICAgdGVybWlvcy50Y3NldGF0dHIoZmQsIHRlcm1pb3MuVENTQURSQUlOLCBuZXcpCiAgICAgICAgICAgICBjdXJzZXMuc2V0dXB0ZXJtKCkKICAgICAgICAgICAgIGlmIGN1cnNlcy50aWdldG51bSgiY29sb3JzIikgPiAyOgotICAgICAgICAgICAgICAgIGZvcm1hdC5lbmFibGVfY29sb3IoKQorICAgICAgICAgICAgICAgIGZvciBoIGluIGhhbmRsZXJzOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBoLmZvcm1hdHRlci5lbmFibGVfY29sb3IoKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBzZWxmLmVkID0gY3Vyc2VzLnRpZ2V0c3RyKCJlZCIpCiAgICAgICAgICAgICBpZiBzZWxmLmVkOgogICAgICAgICAgICAgICAgIHNlbGYuY3V1ID0gY3Vyc2VzLnRpZ2V0c3RyKCJjdXUiKQpAQCAtMTk3LDEwICsxOTksOSBAQAogICAgICAgICAgICAgc2VsZi5pbnRlcmFjdGl2ZSA9IEZhbHNlCiAgICAgICAgICAgICBiYi5ub3RlKCJVbmFibGUgdG8gdXNlIGludGVyYWN0aXZlIG1vZGUgZm9yIHRoaXMgdGVybWluYWwsIHVzaW5nIGZhbGxiYWNrIikKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBjb25zb2xlOgotICAgICAgICAgICAgY29uc29sZS5hZGRGaWx0ZXIoSW50ZXJhY3RDb25zb2xlTG9nRmlsdGVyKHNlbGYsIGZvcm1hdCkpCi0gICAgICAgIGlmIGVycmNvbnNvbGU6Ci0gICAgICAgICAgICBlcnJjb25zb2xlLmFkZEZpbHRlcihJbnRlcmFjdENvbnNvbGVMb2dGaWx0ZXIoc2VsZiwgZm9ybWF0KSkKKworICAgICAgICBmb3IgaCBpbiBoYW5kbGVyczoKKyAgICAgICAgICAgIGguYWRkRmlsdGVyKEludGVyYWN0Q29uc29sZUxvZ0ZpbHRlcihzZWxmKSkKIAogICAgICAgICBzZWxmLm1haW5fcHJvZ3Jlc3MgPSBOb25lCiAKQEAgLTI1NSwxOSArMjU2LDE5IEBACiAgICAgICAgICAgICAgICAgc3RhcnRfdGltZSA9IGFjdGl2ZXRhc2tzW3RdLmdldCgic3RhcnR0aW1lIiwgTm9uZSkKICAgICAgICAgICAgICAgICBpZiBub3QgcGJhciBvciBwYmFyLmJvdW5jaW5nICE9IChwcm9ncmVzcyA8IDApOgogICAgICAgICAgICAgICAgICAgICBpZiBwcm9ncmVzcyA8IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYmFyID0gQkJQcm9ncmVzcygiMDogJXMgKHBpZCAlcykgIiAlIChhY3RpdmV0YXNrc1t0XVsidGl0bGUiXSwgdCksIDEwMCwgd2lkZ2V0cz1bcHJvZ3Jlc3NiYXIuQm91bmNpbmdTbGlkZXIoKSwgJyddLCBleHRyYXBvcz0yLCByZXNpemVfaGFuZGxlcj1zZWxmLnNpZ3dpbmNoX2hhbmRsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBiYXIgPSBCQlByb2dyZXNzKCIwOiAlcyAocGlkICVzKSIgJSAoYWN0aXZldGFza3NbdF1bInRpdGxlIl0sIGFjdGl2ZXRhc2tzW3RdWyJwaWQiXSksIDEwMCwgd2lkZ2V0cz1bJyAnLCBwcm9ncmVzc2Jhci5Cb3VuY2luZ1NsaWRlcigpLCAnJ10sIGV4dHJhcG9zPTMsIHJlc2l6ZV9oYW5kbGVyPXNlbGYuc2lnd2luY2hfaGFuZGxlKQogICAgICAgICAgICAgICAgICAgICAgICAgcGJhci5ib3VuY2luZyA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHBiYXIgPSBCQlByb2dyZXNzKCIwOiAlcyAocGlkICVzKSAiICUgKGFjdGl2ZXRhc2tzW3RdWyJ0aXRsZSJdLCB0KSwgMTAwLCB3aWRnZXRzPVtwcm9ncmVzc2Jhci5QZXJjZW50YWdlKCksICcgJywgcHJvZ3Jlc3NiYXIuQmFyKCksICcnXSwgZXh0cmFwb3M9NCwgcmVzaXplX2hhbmRsZXI9c2VsZi5zaWd3aW5jaF9oYW5kbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBwYmFyID0gQkJQcm9ncmVzcygiMDogJXMgKHBpZCAlcykiICUgKGFjdGl2ZXRhc2tzW3RdWyJ0aXRsZSJdLCBhY3RpdmV0YXNrc1t0XVsicGlkIl0pLCAxMDAsIHdpZGdldHM9WycgJywgcHJvZ3Jlc3NiYXIuUGVyY2VudGFnZSgpLCAnICcsIHByb2dyZXNzYmFyLkJhcigpLCAnJ10sIGV4dHJhcG9zPTUsIHJlc2l6ZV9oYW5kbGVyPXNlbGYuc2lnd2luY2hfaGFuZGxlKQogICAgICAgICAgICAgICAgICAgICAgICAgcGJhci5ib3VuY2luZyA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZXRhc2tzW3RdWyJwcm9ncmVzc2JhciJdID0gcGJhcgogICAgICAgICAgICAgICAgIHRhc2tzLmFwcGVuZCgocGJhciwgcHJvZ3Jlc3MsIHJhdGUsIHN0YXJ0X3RpbWUpKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzdGFydF90aW1lID0gYWN0aXZldGFza3NbdF0uZ2V0KCJzdGFydHRpbWUiLCBOb25lKQogICAgICAgICAgICAgICAgIGlmIHN0YXJ0X3RpbWU6Ci0gICAgICAgICAgICAgICAgICAgIHRhc2tzLmFwcGVuZCgiJXMgLSAlcyAocGlkICVzKSIgJSAoYWN0aXZldGFza3NbdF1bInRpdGxlIl0sIHNlbGYuZWxhcHNlZChjdXJyZW50dGltZSAtIHN0YXJ0X3RpbWUpLCB0KSkKKyAgICAgICAgICAgICAgICAgICAgdGFza3MuYXBwZW5kKCIlcyAtICVzIChwaWQgJXMpIiAlIChhY3RpdmV0YXNrc1t0XVsidGl0bGUiXSwgc2VsZi5lbGFwc2VkKGN1cnJlbnR0aW1lIC0gc3RhcnRfdGltZSksIGFjdGl2ZXRhc2tzW3RdWyJwaWQiXSkpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdGFza3MuYXBwZW5kKCIlcyAocGlkICVzKSIgJSAoYWN0aXZldGFza3NbdF1bInRpdGxlIl0sIHQpKQorICAgICAgICAgICAgICAgICAgICB0YXNrcy5hcHBlbmQoIiVzIChwaWQgJXMpIiAlIChhY3RpdmV0YXNrc1t0XVsidGl0bGUiXSwgYWN0aXZldGFza3NbdF1bInBpZCJdKSkKIAogICAgICAgICBpZiBzZWxmLm1haW4uc2h1dGRvd246CiAgICAgICAgICAgICBjb250ZW50ID0gIldhaXRpbmcgZm9yICVzIHJ1bm5pbmcgdGFza3MgdG8gZmluaXNoOiIgJSBsZW4oYWN0aXZldGFza3MpCkBAIC0zNjMsNyArMzY0LDExIEBACiAgICAgaWYgZXJyb3I6CiAgICAgICAgIGxvZ2dlci5lcnJvcigiVW5hYmxlIHRvIGdldCB0aGUgdmFsdWUgb2YgQkJfQ09OU09MRUxPRyB2YXJpYWJsZTogJXMiICUgZXJyb3IpCiAgICAgICAgIHJhaXNlIEJhc2VFeGNlcHRpb24oZXJyb3IpCi0gICAgcmV0dXJuIGluY2x1ZGVsb2dzLCBsb2dsaW5lcywgY29uc29sZWxvZ2ZpbGUKKyAgICBsb2djb25maWdmaWxlLCBlcnJvciA9IHNlcnZlci5ydW5Db21tYW5kKFtjbWQsICJCQl9MT0dDT05GSUciXSkKKyAgICBpZiBlcnJvcjoKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJVbmFibGUgdG8gZ2V0IHRoZSB2YWx1ZSBvZiBCQl9MT0dDT05GSUcgdmFyaWFibGU6ICVzIiAlIGVycm9yKQorICAgICAgICByYWlzZSBCYXNlRXhjZXB0aW9uKGVycm9yKQorICAgIHJldHVybiBpbmNsdWRlbG9ncywgbG9nbGluZXMsIGNvbnNvbGVsb2dmaWxlLCBsb2djb25maWdmaWxlCiAKIF9ldnRfbGlzdCA9IFsgImJiLnJ1bnF1ZXVlLnJ1blF1ZXVlRXhpdFdhaXQiLCAiYmIuZXZlbnQuTG9nRXhlY1RUWSIsICJsb2dnaW5nLkxvZ1JlY29yZCIsCiAgICAgICAgICAgICAgICJiYi5idWlsZC5UYXNrRmFpbGVkIiwgImJiLmJ1aWxkLlRhc2tCYXNlIiwgImJiLmV2ZW50LlBhcnNlU3RhcnRlZCIsCkBAIC0zODAsNyArMzg1LDE0OCBAQAogICAgIGlmIG5vdCBwYXJhbXMub2JzZXJ2ZV9vbmx5OgogICAgICAgICBwYXJhbXMudXBkYXRlVG9TZXJ2ZXIoc2VydmVyLCBvcy5lbnZpcm9uLmNvcHkoKSkKIAotICAgIGluY2x1ZGVsb2dzLCBsb2dsaW5lcywgY29uc29sZWxvZ2ZpbGUgPSBfbG9nX3NldHRpbmdzX2Zyb21fc2VydmVyKHNlcnZlciwgcGFyYW1zLm9ic2VydmVfb25seSkKKyAgICBpbmNsdWRlbG9ncywgbG9nbGluZXMsIGNvbnNvbGVsb2dmaWxlLCBsb2djb25maWdmaWxlID0gX2xvZ19zZXR0aW5nc19mcm9tX3NlcnZlcihzZXJ2ZXIsIHBhcmFtcy5vYnNlcnZlX29ubHkpCisKKyAgICBsb2dsZXZlbCwgXyA9IGJiLm1zZy5jb25zdHJ1Y3RMb2dPcHRpb25zKCkKKworICAgIGlmIHBhcmFtcy5vcHRpb25zLnF1aWV0ID09IDA6CisgICAgICAgIGNvbnNvbGVfbG9nbGV2ZWwgPSBsb2dsZXZlbAorICAgIGVsaWYgcGFyYW1zLm9wdGlvbnMucXVpZXQgPiAyOgorICAgICAgICBjb25zb2xlX2xvZ2xldmVsID0gYmIubXNnLkJCTG9nRm9ybWF0dGVyLkVSUk9SCisgICAgZWxzZToKKyAgICAgICAgY29uc29sZV9sb2dsZXZlbCA9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5XQVJOSU5HCisKKyAgICBsb2djb25maWcgPSB7CisgICAgICAgICJ2ZXJzaW9uIjogMSwKKyAgICAgICAgImhhbmRsZXJzIjogeworICAgICAgICAgICAgIkJpdEJha2UuY29uc29sZSI6IHsKKyAgICAgICAgICAgICAgICAiY2xhc3MiOiAibG9nZ2luZy5TdHJlYW1IYW5kbGVyIiwKKyAgICAgICAgICAgICAgICAiZm9ybWF0dGVyIjogIkJpdEJha2UuY29uc29sZUZvcm1hdHRlciIsCisgICAgICAgICAgICAgICAgImxldmVsIjogY29uc29sZV9sb2dsZXZlbCwKKyAgICAgICAgICAgICAgICAic3RyZWFtIjogImV4dDovL3N5cy5zdGRvdXQiLAorICAgICAgICAgICAgICAgICJmaWx0ZXJzIjogWyJCaXRCYWtlLnN0ZG91dEZpbHRlciJdLAorICAgICAgICAgICAgICAgICIuIjogeworICAgICAgICAgICAgICAgICAgICAiaXNfY29uc29sZSI6IFRydWUsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiQml0QmFrZS5lcnJjb25zb2xlIjogeworICAgICAgICAgICAgICAgICJjbGFzcyI6ICJsb2dnaW5nLlN0cmVhbUhhbmRsZXIiLAorICAgICAgICAgICAgICAgICJmb3JtYXR0ZXIiOiAiQml0QmFrZS5jb25zb2xlRm9ybWF0dGVyIiwKKyAgICAgICAgICAgICAgICAibGV2ZWwiOiBsb2dsZXZlbCwKKyAgICAgICAgICAgICAgICAic3RyZWFtIjogImV4dDovL3N5cy5zdGRlcnIiLAorICAgICAgICAgICAgICAgICJmaWx0ZXJzIjogWyJCaXRCYWtlLnN0ZGVyckZpbHRlciJdLAorICAgICAgICAgICAgICAgICIuIjogeworICAgICAgICAgICAgICAgICAgICAiaXNfY29uc29sZSI6IFRydWUsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAjIFRoaXMgaGFuZGxlciBjYW4gYmUgdXNlZCBpZiBzcGVjaWZpYyBsb2dnZXJzIHNob3VsZCBwcmludCBvbgorICAgICAgICAgICAgIyB0aGUgY29uc29sZSBhdCBhIGxvd2VyIHNldmVyaXR5IHRoYW4gdGhlIGRlZmF1bHQuIEl0IHdpbGwKKyAgICAgICAgICAgICMgZGlzcGxheSBhbnkgbWVzc2FnZXMgc2VudCB0byBpdCB0aGF0IGFyZSBsb3dlciB0aGFuIHRoZW4KKyAgICAgICAgICAgICMgQml0QmFrZS5jb25zb2xlIGxvZ2dpbmcgbGV2ZWwgKHNvIGFzIHRvIHByZXZlbnQgZHVwbGljYXRpb24gb2YKKyAgICAgICAgICAgICMgbWVzc2FnZXMpLiBOb3RoaW5nIGlzIGF0dGFjaGVkIHRvIHRoaXMgaGFuZGxlciBieSBkZWZhdWx0CisgICAgICAgICAgICAiQml0QmFrZS52ZXJiY29uc29sZSI6IHsKKyAgICAgICAgICAgICAgICAiY2xhc3MiOiAibG9nZ2luZy5TdHJlYW1IYW5kbGVyIiwKKyAgICAgICAgICAgICAgICAiZm9ybWF0dGVyIjogIkJpdEJha2UuY29uc29sZUZvcm1hdHRlciIsCisgICAgICAgICAgICAgICAgImxldmVsIjogMSwKKyAgICAgICAgICAgICAgICAic3RyZWFtIjogImV4dDovL3N5cy5zdGRvdXQiLAorICAgICAgICAgICAgICAgICJmaWx0ZXJzIjogWyJCaXRCYWtlLnZlcmJjb25zb2xlRmlsdGVyIl0sCisgICAgICAgICAgICAgICAgIi4iOiB7CisgICAgICAgICAgICAgICAgICAgICJpc19jb25zb2xlIjogVHJ1ZSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfSwKKyAgICAgICAgfSwKKyAgICAgICAgImZvcm1hdHRlcnMiOiB7CisgICAgICAgICAgICAjIFRoaXMgZm9ybWF0IGluc3RhbmNlIHdpbGwgZ2V0IGNvbG9yIG91dHB1dCBlbmFibGVkIGJ5IHRoZQorICAgICAgICAgICAgIyB0ZXJtaW5hbAorICAgICAgICAgICAgIkJpdEJha2UuY29uc29sZUZvcm1hdHRlciIgOiB7CisgICAgICAgICAgICAgICAgIigpIjogImJiLm1zZy5CQkxvZ0Zvcm1hdHRlciIsCisgICAgICAgICAgICAgICAgImZvcm1hdCI6ICIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAjIFRoZSBmaWxlIGxvZyByZXF1aXJlcyBhIHNlcGFyYXRlIGluc3RhbmNlIHNvIHRoYXQgaXQgZG9lc24ndCBnZXQKKyAgICAgICAgICAgICMgY29sb3IgZW5hYmxlZAorICAgICAgICAgICAgIkJpdEJha2UubG9nZmlsZUZvcm1hdHRlciI6IHsKKyAgICAgICAgICAgICAgICAiKCkiOiAiYmIubXNnLkJCTG9nRm9ybWF0dGVyIiwKKyAgICAgICAgICAgICAgICAiZm9ybWF0IjogIiUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzIgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZmlsdGVycyI6IHsKKyAgICAgICAgICAgICJCaXRCYWtlLnN0ZG91dEZpbHRlciI6IHsKKyAgICAgICAgICAgICAgICAiKCkiOiAiYmIubXNnLkxvZ0ZpbHRlckxUTGV2ZWwiLAorICAgICAgICAgICAgICAgICJsZXZlbCI6ICJFUlJPUiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiQml0QmFrZS5zdGRlcnJGaWx0ZXIiOiB7CisgICAgICAgICAgICAgICAgIigpIjogImJiLm1zZy5Mb2dGaWx0ZXJHRVFMZXZlbCIsCisgICAgICAgICAgICAgICAgImxldmVsIjogIkVSUk9SIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJCaXRCYWtlLnZlcmJjb25zb2xlRmlsdGVyIjogeworICAgICAgICAgICAgICAgICIoKSI6ICJiYi5tc2cuTG9nRmlsdGVyTFRMZXZlbCIsCisgICAgICAgICAgICAgICAgImxldmVsIjogY29uc29sZV9sb2dsZXZlbAorICAgICAgICAgICAgfSwKKyAgICAgICAgfSwKKyAgICAgICAgImxvZ2dlcnMiOiB7CisgICAgICAgICAgICAiQml0QmFrZSI6IHsKKyAgICAgICAgICAgICAgICAibGV2ZWwiOiBsb2dsZXZlbCwKKyAgICAgICAgICAgICAgICAiaGFuZGxlcnMiOiBbIkJpdEJha2UuY29uc29sZSIsICJCaXRCYWtlLmVycmNvbnNvbGUiXSwKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImRpc2FibGVfZXhpc3RpbmdfbG9nZ2VycyI6IEZhbHNlCisgICAgfQorCisgICAgIyBFbmFibGUgdGhlIGNvbnNvbGUgbG9nIGZpbGUgaWYgZW5hYmxlZAorICAgIGlmIGNvbnNvbGVsb2dmaWxlIGFuZCBub3QgcGFyYW1zLm9wdGlvbnMuc2hvd19lbnZpcm9ubWVudCBhbmQgbm90IHBhcmFtcy5vcHRpb25zLnNob3dfdmVyc2lvbnM6CisgICAgICAgIGxvZ2NvbmZpZyA9IGJiLm1zZy5tZXJnZUxvZ2dpbmdDb25maWcobG9nY29uZmlnLCB7CisgICAgICAgICAgICAgICAgInZlcnNpb24iOiAxLAorICAgICAgICAgICAgICAgICJoYW5kbGVycyIgOiB7CisgICAgICAgICAgICAgICAgICAgICJCaXRCYWtlLmNvbnNvbGVsb2ciOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAiY2xhc3MiOiAibG9nZ2luZy5GaWxlSGFuZGxlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0dGVyIjogIkJpdEJha2UubG9nZmlsZUZvcm1hdHRlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAibGV2ZWwiOiBsb2dsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlbmFtZSI6IGNvbnNvbGVsb2dmaWxlLAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAjIEp1c3QgbGlrZSB2ZXJiY29uc29sZSwgYW55dGhpbmcgc2VudCBoZXJlIHdpbGwgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICMgbG9nIGZpbGUsIHVubGVzcyBpdCB3b3VsZCBnbyB0byBCaXRCYWtlLmNvbnNvbGVsb2cKKyAgICAgICAgICAgICAgICAgICAgIkJpdEJha2UudmVyYmNvbnNvbGVsb2ciIDogeworICAgICAgICAgICAgICAgICAgICAgICAgImNsYXNzIjogImxvZ2dpbmcuRmlsZUhhbmRsZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdHRlciI6ICJCaXRCYWtlLmxvZ2ZpbGVGb3JtYXR0ZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgImxldmVsIjogMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlbmFtZSI6IGNvbnNvbGVsb2dmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpbHRlcnMiOiBbIkJpdEJha2UudmVyYmNvbnNvbGVsb2dGaWx0ZXIiXSwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJmaWx0ZXJzIjogeworICAgICAgICAgICAgICAgICAgICAiQml0QmFrZS52ZXJiY29uc29sZWxvZ0ZpbHRlciI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICIoKSI6ICJiYi5tc2cuTG9nRmlsdGVyTFRMZXZlbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAibGV2ZWwiOiBsb2dsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJsb2dnZXJzIjogeworICAgICAgICAgICAgICAgICAgICAiQml0QmFrZSI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJoYW5kbGVycyI6IFsiQml0QmFrZS5jb25zb2xlbG9nIl0sCisgICAgICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAgICAgIyBPdGhlciBpbnRlcmVzdGluZyB0aGluZ3MgdGhhdCB3ZSB3YW50IHRvIGtlZXAgYW4gZXllIG9uCisgICAgICAgICAgICAgICAgICAgICMgaW4gdGhlIGxvZyBmaWxlcyBpbiBjYXNlIHNvbWVvbmUgaGFzIGFuIGlzc3VlLCBidXQgbm90CisgICAgICAgICAgICAgICAgICAgICMgbmVjZXNzYXJpbHkgc2hvdyB0byB0aGUgdXNlciBvbiB0aGUgY29uc29sZQorICAgICAgICAgICAgICAgICAgICAiQml0QmFrZS5TaWdHZW4uSGFzaEVxdWl2IjogeworICAgICAgICAgICAgICAgICAgICAgICAgImxldmVsIjogIlZFUkJPU0UiLAorICAgICAgICAgICAgICAgICAgICAgICAgImhhbmRsZXJzIjogWyJCaXRCYWtlLnZlcmJjb25zb2xlbG9nIl0sCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICJCaXRCYWtlLlJ1blF1ZXVlLkhhc2hFcXVpdiI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJsZXZlbCI6ICJWRVJCT1NFIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoYW5kbGVycyI6IFsiQml0QmFrZS52ZXJiY29uc29sZWxvZyJdLAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSkKKworICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGNvbnNvbGVsb2dmaWxlKSkKKyAgICAgICAgbG9nbGluayA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoY29uc29sZWxvZ2ZpbGUpLCAnY29uc29sZS1sYXRlc3QubG9nJykKKyAgICAgICAgYmIudXRpbHMucmVtb3ZlKGxvZ2xpbmspCisgICAgICAgIHRyeToKKyAgICAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLmJhc2VuYW1lKGNvbnNvbGVsb2dmaWxlKSwgbG9nbGluaykKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgIHBhc3MKKworICAgIGNvbmYgPSBiYi5tc2cuc2V0TG9nZ2luZ0NvbmZpZyhsb2djb25maWcsIGxvZ2NvbmZpZ2ZpbGUpCiAKICAgICBpZiBzeXMuc3RkaW4uaXNhdHR5KCkgYW5kIHN5cy5zdGRvdXQuaXNhdHR5KCk6CiAgICAgICAgIGxvZ19leGVjX3R0eSA9IFRydWUKQEAgLTM4OSwyMyArNTM1LDkgQEAKIAogICAgIGhlbHBlciA9IHVpaGVscGVyLkJCVUlIZWxwZXIoKQogCi0gICAgY29uc29sZSA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihzeXMuc3Rkb3V0KQotICAgIGVycmNvbnNvbGUgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3lzLnN0ZGVycikKLSAgICBmb3JtYXRfc3RyID0gIiUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzIgotICAgIGZvcm1hdCA9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlcihmb3JtYXRfc3RyKQotICAgIGlmIHBhcmFtcy5vcHRpb25zLnF1aWV0ID09IDA6Ci0gICAgICAgIGZvcmNlbGV2ZWwgPSBOb25lCi0gICAgZWxpZiBwYXJhbXMub3B0aW9ucy5xdWlldCA+IDI6Ci0gICAgICAgIGZvcmNlbGV2ZWwgPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuRVJST1IKLSAgICBlbHNlOgotICAgICAgICBmb3JjZWxldmVsID0gYmIubXNnLkJCTG9nRm9ybWF0dGVyLldBUk5JTkcKLSAgICBiYi5tc2cuYWRkRGVmYXVsdGxvZ0ZpbHRlcihjb25zb2xlLCBiYi5tc2cuQkJMb2dGaWx0ZXJTdGRPdXQsIGZvcmNlbGV2ZWwpCi0gICAgYmIubXNnLmFkZERlZmF1bHRsb2dGaWx0ZXIoZXJyY29uc29sZSwgYmIubXNnLkJCTG9nRmlsdGVyU3RkRXJyKQotICAgIGNvbnNvbGUuc2V0Rm9ybWF0dGVyKGZvcm1hdCkKLSAgICBlcnJjb25zb2xlLnNldEZvcm1hdHRlcihmb3JtYXQpCi0gICAgaWYgbm90IGJiLm1zZy5oYXNfY29uc29sZV9oYW5kbGVyKGxvZ2dlcik6Ci0gICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGNvbnNvbGUpCi0gICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGVycmNvbnNvbGUpCisgICAgIyBMb29rIGZvciB0aGUgc3BlY2lhbGx5IGRlc2lnbmF0ZWQgaGFuZGxlcnMgd2hpY2ggbmVlZCB0byBiZSBwYXNzZWQgdG8gdGhlCisgICAgIyB0ZXJtaW5hbCBoYW5kbGVyCisgICAgY29uc29sZV9oYW5kbGVycyA9IFtoIGZvciBoIGluIGNvbmYuY29uZmlnWydoYW5kbGVycyddLnZhbHVlcygpIGlmIGdldGF0dHIoaCwgJ2lzX2NvbnNvbGUnLCBGYWxzZSldCiAKICAgICBiYi51dGlscy5zZXRfcHJvY2Vzc19uYW1lKCJLbm90dHlVSSIpCiAKQEAgLTQxMywyNCArNTQ1LDE0IEBACiAgICAgICAgIHNlcnZlci50ZXJtaW5hdGVTZXJ2ZXIoKQogICAgICAgICByZXR1cm4KIAotICAgIGNvbnNvbGVsb2cgPSBOb25lCi0gICAgaWYgY29uc29sZWxvZ2ZpbGUgYW5kIG5vdCBwYXJhbXMub3B0aW9ucy5zaG93X2Vudmlyb25tZW50IGFuZCBub3QgcGFyYW1zLm9wdGlvbnMuc2hvd192ZXJzaW9uczoKLSAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShjb25zb2xlbG9nZmlsZSkpCi0gICAgICAgIGNvbmxvZ2Zvcm1hdCA9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlcihmb3JtYXRfc3RyKQotICAgICAgICBjb25zb2xlbG9nID0gbG9nZ2luZy5GaWxlSGFuZGxlcihjb25zb2xlbG9nZmlsZSkKLSAgICAgICAgYmIubXNnLmFkZERlZmF1bHRsb2dGaWx0ZXIoY29uc29sZWxvZykKLSAgICAgICAgY29uc29sZWxvZy5zZXRGb3JtYXR0ZXIoY29ubG9nZm9ybWF0KQotICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihjb25zb2xlbG9nKQotICAgICAgICBsb2dsaW5rID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShjb25zb2xlbG9nZmlsZSksICdjb25zb2xlLWxhdGVzdC5sb2cnKQotICAgICAgICBiYi51dGlscy5yZW1vdmUobG9nbGluaykKLSAgICAgICAgdHJ5OgotICAgICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGguYmFzZW5hbWUoY29uc29sZWxvZ2ZpbGUpLCBsb2dsaW5rKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgcGFzcwotCiAgICAgbGxldmVsLCBkZWJ1Z19kb21haW5zID0gYmIubXNnLmNvbnN0cnVjdExvZ09wdGlvbnMoKQogICAgIHNlcnZlci5ydW5Db21tYW5kKFsic2V0RXZlbnRNYXNrIiwgc2VydmVyLmdldEV2ZW50SGFuZGxlKCksIGxsZXZlbCwgZGVidWdfZG9tYWlucywgX2V2dF9saXN0XSkKIAorICAgICMgVGhlIGxvZ2dpbmdfdHJlZSBtb2R1bGUgaXMgKmV4dHJlbWVseSogaGVscGZ1bCBpbiBkZWJ1Z2dpbmcgbG9nZ2luZworICAgICMgZG9tYWlucy4gVW5jb21tZW50IGhlcmUgdG8gZHVtcCB0aGUgbG9nZ2luZyB0cmVlIHdoZW4gYml0YmFrZSBzdGFydHMKKyAgICAjaW1wb3J0IGxvZ2dpbmdfdHJlZQorICAgICNsb2dnaW5nX3RyZWUucHJpbnRvdXQoKQorCiAgICAgdW5pdmVyc2UgPSBGYWxzZQogICAgIGlmIG5vdCBwYXJhbXMub2JzZXJ2ZV9vbmx5OgogICAgICAgICBwYXJhbXMudXBkYXRlRnJvbVNlcnZlcihzZXJ2ZXIpCkBAIC00NDgsNyArNTcwLDcgQEAKICAgICAgICAgaWYgZXJyb3I6CiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNvbW1hbmQgJyVzJyBmYWlsZWQ6ICVzIiAlIChjbWRsaW5lLCBlcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gMQotICAgICAgICBlbGlmIHJldCAhPSBUcnVlOgorICAgICAgICBlbGlmIG5vdCByZXQ6CiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNvbW1hbmQgJyVzJyBmYWlsZWQ6IHJldHVybmVkICVzIiAlIChjbWRsaW5lLCByZXQpKQogICAgICAgICAgICAgcmV0dXJuIDEKIApAQCAtNDY1LDcgKzU4Nyw3IEBACiAgICAgcHJpbnRpbnRlcnZhbCA9IDUwMDAKICAgICBsYXN0cHJpbnQgPSB0aW1lLnRpbWUoKQogCi0gICAgdGVybWZpbHRlciA9IHRmKG1haW4sIGhlbHBlciwgY29uc29sZSwgZXJyY29uc29sZSwgZm9ybWF0LCBwYXJhbXMub3B0aW9ucy5xdWlldCkKKyAgICB0ZXJtZmlsdGVyID0gdGYobWFpbiwgaGVscGVyLCBjb25zb2xlX2hhbmRsZXJzLCBwYXJhbXMub3B0aW9ucy5xdWlldCkKICAgICBhdGV4aXQucmVnaXN0ZXIodGVybWZpbHRlci5maW5pc2gpCiAKICAgICB3aGlsZSBUcnVlOgpAQCAtNDc3LDcgKzU5OSw4IEBACiAgICAgICAgICAgICBpZiBldmVudCBpcyBOb25lOgogICAgICAgICAgICAgICAgIGlmIG1haW4uc2h1dGRvd24gPiAxOgogICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIHRlcm1maWx0ZXIudXBkYXRlRm9vdGVyKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgcGFyc2Vwcm9ncmVzczoKKyAgICAgICAgICAgICAgICAgICAgdGVybWZpbHRlci51cGRhdGVGb290ZXIoKQogICAgICAgICAgICAgICAgIGV2ZW50ID0gZXZlbnRIYW5kbGVyLndhaXRFdmVudCgwLjI1KQogICAgICAgICAgICAgICAgIGlmIGV2ZW50IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC01MDMsMjYgKzYyNiwyNiBAQAogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgbG9nZ2luZy5Mb2dSZWNvcmQpOgogICAgICAgICAgICAgICAgIGxhc3RwcmludCA9IHRpbWUudGltZSgpCiAgICAgICAgICAgICAgICAgcHJpbnRpbnRlcnZhbCA9IDUwMDAKLSAgICAgICAgICAgICAgICBpZiBldmVudC5sZXZlbG5vID49IGZvcm1hdC5FUlJPUjoKKyAgICAgICAgICAgICAgICBpZiBldmVudC5sZXZlbG5vID49IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5FUlJPUjoKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gZXJyb3JzICsgMQogICAgICAgICAgICAgICAgICAgICByZXR1cm5fdmFsdWUgPSAxCi0gICAgICAgICAgICAgICAgZWxpZiBldmVudC5sZXZlbG5vID09IGZvcm1hdC5XQVJOSU5HOgorICAgICAgICAgICAgICAgIGVsaWYgZXZlbnQubGV2ZWxubyA9PSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuV0FSTklORzoKICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MgPSB3YXJuaW5ncyArIDEKIAogICAgICAgICAgICAgICAgIGlmIGV2ZW50LnRhc2twaWQgIT0gMDoKICAgICAgICAgICAgICAgICAgICAgIyBGb3IgIm5vcm1hbCIgbG9nZ2luZyBjb25kaXRpb25zLCBkb24ndCBzaG93IG5vdGUgbG9ncyBmcm9tIHRhc2tzCiAgICAgICAgICAgICAgICAgICAgICMgYnV0IGRvIHNob3cgdGhlbSBpZiB0aGUgdXNlciBoYXMgY2hhbmdlZCB0aGUgZGVmYXVsdCBsb2cgbGV2ZWwgdG8KICAgICAgICAgICAgICAgICAgICAgIyBpbmNsdWRlIHZlcmJvc2UvZGVidWcgbWVzc2FnZXMKLSAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQubGV2ZWxubyA8PSBmb3JtYXQuTk9URSBhbmQgKGV2ZW50LmxldmVsbm8gPCBsbGV2ZWwgb3IgKGV2ZW50LmxldmVsbm8gPT0gZm9ybWF0Lk5PVEUgYW5kIGxsZXZlbCAhPSBmb3JtYXQuVkVSQk9TRSkpOgorICAgICAgICAgICAgICAgICAgICBpZiBldmVudC5sZXZlbG5vIDw9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5OT1RFIGFuZCAoZXZlbnQubGV2ZWxubyA8IGxsZXZlbCBvciAoZXZlbnQubGV2ZWxubyA9PSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuTk9URSBhbmQgbGxldmVsICE9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5WRVJCT1NFKSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICAgICAgICAgICMgUHJlZml4IHRhc2sgbWVzc2FnZXMgd2l0aCByZWNpcGUvdGFzawotICAgICAgICAgICAgICAgICAgICBpZiBldmVudC50YXNrcGlkIGluIGhlbHBlci5ydW5uaW5nX3Rhc2tzIGFuZCBldmVudC5sZXZlbG5vICE9IGZvcm1hdC5QTEFJTjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tpbmZvID0gaGVscGVyLnJ1bm5pbmdfdGFza3NbZXZlbnQudGFza3BpZF0KKyAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQudGFza3BpZCBpbiBoZWxwZXIucGlkbWFwIGFuZCBldmVudC5sZXZlbG5vICE9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5QTEFJTjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tpbmZvID0gaGVscGVyLnJ1bm5pbmdfdGFza3NbaGVscGVyLnBpZG1hcFtldmVudC50YXNrcGlkXV0KICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Lm1zZyA9IHRhc2tpbmZvWyd0aXRsZSddICsgJzogJyArIGV2ZW50Lm1zZwogICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoZXZlbnQsICdmbicpOgogICAgICAgICAgICAgICAgICAgICBldmVudC5tc2cgPSBldmVudC5mbiArICc6ICcgKyBldmVudC5tc2cKLSAgICAgICAgICAgICAgICBsb2dnZXIuaGFuZGxlKGV2ZW50KQorICAgICAgICAgICAgICAgIGxvZ2dpbmcuZ2V0TG9nZ2VyKGV2ZW50Lm5hbWUpLmhhbmRsZShldmVudCkKICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5idWlsZC5UYXNrRmFpbGVkU2lsZW50KToKQEAgLTUzOSw2ICs2NjIsNyBAQAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGlmIGV2ZW50LnRvdGFsID09IDA6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgdGVybWZpbHRlci5jbGVhckZvb3RlcigpCiAgICAgICAgICAgICAgICAgcGFyc2Vwcm9ncmVzcyA9IG5ld19wcm9ncmVzcygiUGFyc2luZyByZWNpcGVzIiwgZXZlbnQudG90YWwpLnN0YXJ0KCkKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuUGFyc2VQcm9ncmVzcyk6CkBAIC01ODksNiArNzEzLDcgQEAKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmNvbW1hbmQuQ29tbWFuZEV4aXQpOgogICAgICAgICAgICAgICAgIGlmIG5vdCByZXR1cm5fdmFsdWU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IGV2ZW50LmV4aXRjb2RlCisgICAgICAgICAgICAgICAgbWFpbi5zaHV0ZG93biA9IDIKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgKGJiLmNvbW1hbmQuQ29tbWFuZENvbXBsZXRlZCwgYmIuY29va2VyLkNvb2tlckV4aXQpKToKICAgICAgICAgICAgICAgICBtYWluLnNodXRkb3duID0gMgpAQCAtNjM4LDYgKzc2Myw3IEBACiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5Qcm9jZXNzU3RhcnRlZCk6CiAgICAgICAgICAgICAgICAgaWYgcGFyYW1zLm9wdGlvbnMucXVpZXQgPiAxOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHRlcm1maWx0ZXIuY2xlYXJGb290ZXIoKQogICAgICAgICAgICAgICAgIHBhcnNlcHJvZ3Jlc3MgPSBuZXdfcHJvZ3Jlc3MoZXZlbnQucHJvY2Vzc25hbWUsIGV2ZW50LnRvdGFsKQogICAgICAgICAgICAgICAgIHBhcnNlcHJvZ3Jlc3Muc3RhcnQoRmFsc2UpCiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTc0NSw4ICs4NzEsNiBAQAogICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVQSVBFOgogICAgICAgICAgICAgcGFzcwogCi0gICAgaWYgY29uc29sZWxvZzoKLSAgICAgICAgbG9nZ2VyLnJlbW92ZUhhbmRsZXIoY29uc29sZWxvZykKLSAgICAgICAgY29uc29sZWxvZy5jbG9zZSgpCisgICAgbG9nZ2luZy5zaHV0ZG93bigpCiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL25jdXJzZXMucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL25jdXJzZXMucHkKaW5kZXggYzQyMjczMi4uZGE0ZmJlYSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS9uY3Vyc2VzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvbmN1cnNlcy5weQpAQCAtMzcsNyArMzcsNyBAQAogCiAKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MsIHN5cywgaXRlcnRvb2xzLCB0aW1lLCBzdWJwcm9jZXNzCitpbXBvcnQgb3MsIHN5cywgaXRlcnRvb2xzLCB0aW1lCiAKIHRyeToKICAgICBpbXBvcnQgY3Vyc2VzCkBAIC00Niw3ICs0Niw2IEBACiAKIGltcG9ydCBiYgogaW1wb3J0IHhtbHJwYy5jbGllbnQKLWZyb20gYmIgaW1wb3J0IHVpCiBmcm9tIGJiLnVpIGltcG9ydCB1aWhlbHBlcgogCiBwYXJzZXNwaW4gPSBpdGVydG9vbHMuY3ljbGUoIHInfC8tXFwnICkKQEAgLTIzOSw3ICsyMzgsNyBAQAogICAgICAgICAgICAgaWYgZXJyb3I6CiAgICAgICAgICAgICAgICAgcHJpbnQoIkVycm9yIHJ1bm5pbmcgY29tbWFuZCAnJXMnOiAlcyIgJSAoY21kbGluZSwgZXJyb3IpKQogICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgZWxpZiByZXQgIT0gVHJ1ZToKKyAgICAgICAgICAgIGVsaWYgbm90IHJldDoKICAgICAgICAgICAgICAgICBwcmludCgiQ291bGRuJ3QgZ2V0IGRlZmF1bHQgY29tbWFuZGxpbmQhICVzIiAlIHJldCkKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgZXhjZXB0IHhtbHJwYy5jbGllbnQuRmF1bHQgYXMgeDoKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdGFza2V4cC5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdGFza2V4cC5weQppbmRleCA1MGE5NDNjLi44ZmZmMjQ0IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3Rhc2tleHAucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi91aS90YXNrZXhwLnB5CkBAIC0xMSwxMCArMTEsOCBAQAogaW1wb3J0IGdpCiBnaS5yZXF1aXJlX3ZlcnNpb24oJ0d0aycsICczLjAnKQogZnJvbSBnaS5yZXBvc2l0b3J5IGltcG9ydCBHdGssIEdkaywgR09iamVjdAotZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFF1ZXVlCiBpbXBvcnQgdGhyZWFkaW5nCiBmcm9tIHhtbHJwYyBpbXBvcnQgY2xpZW50Ci1pbXBvcnQgdGltZQogaW1wb3J0IGJiCiBpbXBvcnQgYmIuZXZlbnQKIApAQCAtMjAyLDcgKzIwMCw3IEBACiAgICAgICAgIGlmIGVycm9yOgogICAgICAgICAgICAgcHJpbnQoIkVycm9yIHJ1bm5pbmcgY29tbWFuZCAnJXMnOiAlcyIgJSAoY21kbGluZSwgZXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgZWxpZiByZXQgIT0gVHJ1ZToKKyAgICAgICAgZWxpZiBub3QgcmV0OgogICAgICAgICAgICAgcHJpbnQoIkVycm9yIHJ1bm5pbmcgY29tbWFuZCAnJXMnOiByZXR1cm5lZCAlcyIgJSAoY21kbGluZSwgcmV0KSkKICAgICAgICAgICAgIHJldHVybiAxCiAgICAgZXhjZXB0IGNsaWVudC5GYXVsdCBhcyB4OgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS90ZWFtY2l0eS5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdGVhbWNpdHkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg1NDI5MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdGVhbWNpdHkucHkKQEAgLTAsMCArMSwzOTggQEAKKyMKKyMgVGVhbUNpdHkgVUkgSW1wbGVtZW50YXRpb24KKyMKKyMgSW1wbGVtZW50cyBhIFRlYW1DaXR5IGZyb250ZW5kIGZvciB0aGUgQml0QmFrZSB1dGlsaXR5LCB2aWEgc2VydmljZSBtZXNzYWdlcy4KKyMgU2VlIGh0dHBzOi8vd3d3LmpldGJyYWlucy5jb20vaGVscC90ZWFtY2l0eS9idWlsZC1zY3JpcHQtaW50ZXJhY3Rpb24td2l0aC10ZWFtY2l0eS5odG1sCisjCisjIEJhc2VkIG9uIG5jdXJzZXMucHkgYW5kIGtub3R0eS5weSwgdmFyaW91c2x5IGJ5IE1pY2hhZWwgTGF1ZXIgYW5kIFJpY2hhcmQgUHVyZGllCisjCisjIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsICdNaWNrZXknIExhdWVyCisjIENvcHlyaWdodCAoQykgMjAwNi0yMDEyIFJpY2hhcmQgUHVyZGllCisjIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFnaWxlbnQgVGVjaG5vbG9naWVzLCBJbmMuCisjCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKyMKKyMgQXV0aG9yOiBDaHJpcyBMYXBsYW50ZSA8Y2hyaXMubGFwbGFudGVAYWdpbGVudC5jb20+CisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24KKworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG1hdGgKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgeG1scnBjLmNsaWVudAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKKworaW1wb3J0IGJiCitpbXBvcnQgYmIuYnVpbGQKK2ltcG9ydCBiYi5jb21tYW5kCitpbXBvcnQgYmIuY29va2VyCitpbXBvcnQgYmIuZXZlbnQKK2ltcG9ydCBiYi5leGNlcHRpb25zCitpbXBvcnQgYmIucnVucXVldWUKK2Zyb20gYmIudWkgaW1wb3J0IHVpaGVscGVyCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlIikKKworCitjbGFzcyBUZWFtQ2l0eVVJOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fYmxvY2tfc3RhY2sgPSBbXQorICAgICAgICBzZWxmLl9sYXN0X3Byb2dyZXNzX3N0YXRlID0gTm9uZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGVzY2FwZV9zZXJ2aWNlX3ZhbHVlKGNscywgdmFsdWUpOgorICAgICAgICAiIiIKKyAgICAgICAgRXNjYXBlIGEgdmFsdWUgZm9yIGluY2x1c2lvbiBpbiBhIHNlcnZpY2UgbWVzc2FnZS4gVGVhbUNpdHkgdXNlcyB0aGUgdmVydGljYWwgcGlwZSBjaGFyYWN0ZXIgZm9yIGVzY2FwaW5nLgorICAgICAgICBTZWU6IGh0dHBzOi8vY29uZmx1ZW5jZS5qZXRicmFpbnMuY29tL2Rpc3BsYXkvVENEMTAvQnVpbGQrU2NyaXB0K0ludGVyYWN0aW9uK3dpdGgrVGVhbUNpdHkjQnVpbGRTY3JpcHRJbnRlcmFjdGlvbndpdGhUZWFtQ2l0eS1Fc2NhcGVkdmFsdWVzCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gcmUuc3ViKHIiKFsnfFxbXF1dKSIsIHIifFwxIiwgdmFsdWUpLnJlcGxhY2UoIlxuIiwgInxuIikucmVwbGFjZSgiXHIiLCAifHIiKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGVtaXRfc2VydmljZV9tZXNzYWdlKGNscywgbWVzc2FnZV90eXBlLCAqKmt3YXJncyk6CisgICAgICAgIHByaW50KGNscy5mb3JtYXRfc2VydmljZV9tZXNzYWdlKG1lc3NhZ2VfdHlwZSwgKiprd2FyZ3MpLCBmbHVzaD1UcnVlKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZvcm1hdF9zZXJ2aWNlX21lc3NhZ2UoY2xzLCBtZXNzYWdlX3R5cGUsICoqa3dhcmdzKToKKyAgICAgICAgcGF5bG9hZCA9ICIgIi5qb2luKFsiezB9PSd7MX0nIi5mb3JtYXQoaywgY2xzLmVzY2FwZV9zZXJ2aWNlX3ZhbHVlKHYpKSBmb3IgaywgdiBpbiBrd2FyZ3MuaXRlbXMoKV0pCisgICAgICAgIHJldHVybiAiIyN0ZWFtY2l0eVt7MH0gezF9XSIuZm9ybWF0KG1lc3NhZ2VfdHlwZSwgcGF5bG9hZCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBlbWl0X3NpbXBsZV9zZXJ2aWNlX21lc3NhZ2UoY2xzLCBtZXNzYWdlX3R5cGUsIG1lc3NhZ2UpOgorICAgICAgICBwcmludChjbHMuZm9ybWF0X3NpbXBsZV9zZXJ2aWNlX21lc3NhZ2UobWVzc2FnZV90eXBlLCBtZXNzYWdlKSwgZmx1c2g9VHJ1ZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmb3JtYXRfc2ltcGxlX3NlcnZpY2VfbWVzc2FnZShjbHMsIG1lc3NhZ2VfdHlwZSwgbWVzc2FnZSk6CisgICAgICAgIHJldHVybiAiIyN0ZWFtY2l0eVt7MH0gJ3sxfSddIi5mb3JtYXQobWVzc2FnZV90eXBlLCBjbHMuZXNjYXBlX3NlcnZpY2VfdmFsdWUobWVzc2FnZSkpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZm9ybWF0X2J1aWxkX21lc3NhZ2UoY2xzLCB0ZXh0LCBzdGF0dXMpOgorICAgICAgICByZXR1cm4gY2xzLmZvcm1hdF9zZXJ2aWNlX21lc3NhZ2UoIm1lc3NhZ2UiLCB0ZXh0PXRleHQsIHN0YXR1cz1zdGF0dXMpCisKKyAgICBkZWYgYmxvY2tfc3RhcnQoc2VsZiwgbmFtZSk6CisgICAgICAgIHNlbGYuX2Jsb2NrX3N0YWNrLmFwcGVuZChuYW1lKQorICAgICAgICBzZWxmLmVtaXRfc2VydmljZV9tZXNzYWdlKCJibG9ja09wZW5lZCIsIG5hbWU9bmFtZSkKKworICAgIGRlZiBibG9ja19lbmQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2Jsb2NrX3N0YWNrOgorICAgICAgICAgICAgbmFtZSA9IHNlbGYuX2Jsb2NrX3N0YWNrLnBvcCgpCisgICAgICAgICAgICBzZWxmLmVtaXRfc2VydmljZV9tZXNzYWdlKCJibG9ja0Nsb3NlZCIsIG5hbWU9bmFtZSkKKworICAgIGRlZiBwcm9ncmVzcyhzZWxmLCBtZXNzYWdlLCBwZXJjZW50LCBleHRyYT1Ob25lKToKKyAgICAgICAgbm93ID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKKyAgICAgICAgcGVyY2VudCA9ICJ7MDogPjMuMGZ9Ii5mb3JtYXQocGVyY2VudCkKKworICAgICAgICByZXBvcnQgPSBGYWxzZQorICAgICAgICBpZiBub3Qgc2VsZi5fbGFzdF9wcm9ncmVzc19zdGF0ZSBcCisgICAgICAgICAgICAgICAgb3IgKHNlbGYuX2xhc3RfcHJvZ3Jlc3Nfc3RhdGVbMF0gPT0gbWVzc2FnZQorICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZi5fbGFzdF9wcm9ncmVzc19zdGF0ZVsxXSAhPSBwZXJjZW50CisgICAgICAgICAgICAgICAgICAgIGFuZCAobm93IC0gc2VsZi5fbGFzdF9wcm9ncmVzc19zdGF0ZVsyXSkubWljcm9zZWNvbmRzID49IDUwMDApIFwKKyAgICAgICAgICAgICAgICBvciBzZWxmLl9sYXN0X3Byb2dyZXNzX3N0YXRlWzBdICE9IG1lc3NhZ2U6CisgICAgICAgICAgICByZXBvcnQgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9sYXN0X3Byb2dyZXNzX3N0YXRlID0gKG1lc3NhZ2UsIHBlcmNlbnQsIG5vdykKKworICAgICAgICBpZiByZXBvcnQgb3IgcGVyY2VudCBpbiBbMCwgMTAwXToKKyAgICAgICAgICAgIHNlbGYuZW1pdF9zaW1wbGVfc2VydmljZV9tZXNzYWdlKCJwcm9ncmVzc01lc3NhZ2UiLCAiezB9OiB7MX0lezJ9Ii5mb3JtYXQobWVzc2FnZSwgcGVyY2VudCwgZXh0cmEgb3IgIiIpKQorCisKK2NsYXNzIFRlYW1jaXR5TG9nRm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKToKKyAgICBkZWYgZm9ybWF0KHNlbGYsIHJlY29yZCk6CisgICAgICAgIGRldGFpbHMgPSAiIgorICAgICAgICBpZiBoYXNhdHRyKHJlY29yZCwgJ2JiX2V4Y19mb3JtYXR0ZWQnKToKKyAgICAgICAgICAgIGRldGFpbHMgPSAnJy5qb2luKHJlY29yZC5iYl9leGNfZm9ybWF0dGVkKQorICAgICAgICBlbGlmIGhhc2F0dHIocmVjb3JkLCAnYmJfZXhjX2luZm8nKToKKyAgICAgICAgICAgIGV0eXBlLCB2YWx1ZSwgdGIgPSByZWNvcmQuYmJfZXhjX2luZm8KKyAgICAgICAgICAgIGZvcm1hdHRlZCA9IGJiLmV4Y2VwdGlvbnMuZm9ybWF0X2V4Y2VwdGlvbihldHlwZSwgdmFsdWUsIHRiLCBsaW1pdD01KQorICAgICAgICAgICAgZGV0YWlscyA9ICcnLmpvaW4oZm9ybWF0dGVkKQorCisgICAgICAgIGlmIHJlY29yZC5sZXZlbG5vIGluIFtiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuRVJST1IsIGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5DUklUSUNBTF06CisgICAgICAgICAgICAjIEVSUk9SIGdldHMgYSBzZXBhcmF0ZSBlcnJvckRldGFpbHMgZmllbGQKKyAgICAgICAgICAgIG1zZyA9IFRlYW1DaXR5VUkuZm9ybWF0X3NlcnZpY2VfbWVzc2FnZSgibWVzc2FnZSIsIHRleHQ9cmVjb3JkLmdldE1lc3NhZ2UoKSwgc3RhdHVzPSJFUlJPUiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JEZXRhaWxzPWRldGFpbHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwYXlsb2FkID0gcmVjb3JkLmdldE1lc3NhZ2UoKQorICAgICAgICAgICAgaWYgZGV0YWlsczoKKyAgICAgICAgICAgICAgICBwYXlsb2FkICs9ICJcbiIgKyBkZXRhaWxzCisgICAgICAgICAgICBpZiByZWNvcmQubGV2ZWxubyA9PSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuUExBSU46CisgICAgICAgICAgICAgICAgbXNnID0gcGF5bG9hZAorICAgICAgICAgICAgZWxpZiByZWNvcmQubGV2ZWxubyA9PSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuV0FSTklORzoKKyAgICAgICAgICAgICAgICBtc2cgPSBUZWFtQ2l0eVVJLmZvcm1hdF9zZXJ2aWNlX21lc3NhZ2UoIm1lc3NhZ2UiLCB0ZXh0PXBheWxvYWQsIHN0YXR1cz0iV0FSTklORyIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1zZyA9IFRlYW1DaXR5VUkuZm9ybWF0X3NlcnZpY2VfbWVzc2FnZSgibWVzc2FnZSIsIHRleHQ9cGF5bG9hZCwgc3RhdHVzPSJOT1JNQUwiKQorCisgICAgICAgIHJldHVybiBtc2cKKworCitfZXZ0X2xpc3QgPSBbImJiLnJ1bnF1ZXVlLnJ1blF1ZXVlRXhpdFdhaXQiLCAiYmIuZXZlbnQuTG9nRXhlY1RUWSIsICJsb2dnaW5nLkxvZ1JlY29yZCIsCisgICAgICAgICAgICAgImJiLmJ1aWxkLlRhc2tGYWlsZWQiLCAiYmIuYnVpbGQuVGFza0Jhc2UiLCAiYmIuZXZlbnQuUGFyc2VTdGFydGVkIiwKKyAgICAgICAgICAgICAiYmIuZXZlbnQuUGFyc2VQcm9ncmVzcyIsICJiYi5ldmVudC5QYXJzZUNvbXBsZXRlZCIsICJiYi5ldmVudC5DYWNoZUxvYWRTdGFydGVkIiwKKyAgICAgICAgICAgICAiYmIuZXZlbnQuQ2FjaGVMb2FkUHJvZ3Jlc3MiLCAiYmIuZXZlbnQuQ2FjaGVMb2FkQ29tcGxldGVkIiwgImJiLmNvbW1hbmQuQ29tbWFuZEZhaWxlZCIsCisgICAgICAgICAgICAgImJiLmNvbW1hbmQuQ29tbWFuZEV4aXQiLCAiYmIuY29tbWFuZC5Db21tYW5kQ29tcGxldGVkIiwgImJiLmNvb2tlci5Db29rZXJFeGl0IiwKKyAgICAgICAgICAgICAiYmIuZXZlbnQuTXVsdGlwbGVQcm92aWRlcnMiLCAiYmIuZXZlbnQuTm9Qcm92aWRlciIsICJiYi5ydW5xdWV1ZS5zY2VuZVF1ZXVlVGFza1N0YXJ0ZWQiLAorICAgICAgICAgICAgICJiYi5ydW5xdWV1ZS5ydW5RdWV1ZVRhc2tTdGFydGVkIiwgImJiLnJ1bnF1ZXVlLnJ1blF1ZXVlVGFza0ZhaWxlZCIsICJiYi5ydW5xdWV1ZS5zY2VuZVF1ZXVlVGFza0ZhaWxlZCIsCisgICAgICAgICAgICAgImJiLmV2ZW50LkJ1aWxkQmFzZSIsICJiYi5idWlsZC5UYXNrU3RhcnRlZCIsICJiYi5idWlsZC5UYXNrU3VjY2VlZGVkIiwgImJiLmJ1aWxkLlRhc2tGYWlsZWRTaWxlbnQiLAorICAgICAgICAgICAgICJiYi5idWlsZC5UYXNrUHJvZ3Jlc3MiLCAiYmIuZXZlbnQuUHJvY2Vzc1N0YXJ0ZWQiLCAiYmIuZXZlbnQuUHJvY2Vzc1Byb2dyZXNzIiwgImJiLmV2ZW50LlByb2Nlc3NGaW5pc2hlZCJdCisKKworZGVmIF9sb2dfc2V0dGluZ3NfZnJvbV9zZXJ2ZXIoc2VydmVyKToKKyAgICAjIEdldCB2YWx1ZXMgb2YgdmFyaWFibGVzIHdoaWNoIGNvbnRyb2wgb3VyIG91dHB1dAorICAgIGluY2x1ZGVsb2dzLCBlcnJvciA9IHNlcnZlci5ydW5Db21tYW5kKFsiZ2V0VmFyaWFibGUiLCAiQkJJTkNMVURFTE9HUyJdKQorICAgIGlmIGVycm9yOgorICAgICAgICBsb2dnZXIuZXJyb3IoIlVuYWJsZSB0byBnZXQgdGhlIHZhbHVlIG9mIEJCSU5DTFVERUxPR1MgdmFyaWFibGU6ICVzIiAlIGVycm9yKQorICAgICAgICByYWlzZSBCYXNlRXhjZXB0aW9uKGVycm9yKQorICAgIGxvZ2xpbmVzLCBlcnJvciA9IHNlcnZlci5ydW5Db21tYW5kKFsiZ2V0VmFyaWFibGUiLCAiQkJJTkNMVURFTE9HU19MSU5FUyJdKQorICAgIGlmIGVycm9yOgorICAgICAgICBsb2dnZXIuZXJyb3IoIlVuYWJsZSB0byBnZXQgdGhlIHZhbHVlIG9mIEJCSU5DTFVERUxPR1NfTElORVMgdmFyaWFibGU6ICVzIiAlIGVycm9yKQorICAgICAgICByYWlzZSBCYXNlRXhjZXB0aW9uKGVycm9yKQorICAgIHJldHVybiBpbmNsdWRlbG9ncywgbG9nbGluZXMKKworCitkZWYgbWFpbihzZXJ2ZXIsIGV2ZW50SGFuZGxlciwgcGFyYW1zKToKKyAgICBwYXJhbXMudXBkYXRlVG9TZXJ2ZXIoc2VydmVyLCBvcy5lbnZpcm9uLmNvcHkoKSkKKworICAgIGluY2x1ZGVsb2dzLCBsb2dsaW5lcyA9IF9sb2dfc2V0dGluZ3NfZnJvbV9zZXJ2ZXIoc2VydmVyKQorCisgICAgdWkgPSBUZWFtQ2l0eVVJKCkKKworICAgIGhlbHBlciA9IHVpaGVscGVyLkJCVUlIZWxwZXIoKQorCisgICAgY29uc29sZSA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihzeXMuc3Rkb3V0KQorICAgIGVycmNvbnNvbGUgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3lzLnN0ZGVycikKKyAgICBmb3JtYXQgPSBUZWFtY2l0eUxvZ0Zvcm1hdHRlcigpCisgICAgaWYgcGFyYW1zLm9wdGlvbnMucXVpZXQgPT0gMDoKKyAgICAgICAgZm9yY2VsZXZlbCA9IE5vbmUKKyAgICBlbGlmIHBhcmFtcy5vcHRpb25zLnF1aWV0ID4gMjoKKyAgICAgICAgZm9yY2VsZXZlbCA9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5FUlJPUgorICAgIGVsc2U6CisgICAgICAgIGZvcmNlbGV2ZWwgPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuV0FSTklORworICAgIGJiLm1zZy5hZGREZWZhdWx0bG9nRmlsdGVyKGNvbnNvbGUsIGJiLm1zZy5CQkxvZ0ZpbHRlclN0ZE91dCwgZm9yY2VsZXZlbCkKKyAgICBiYi5tc2cuYWRkRGVmYXVsdGxvZ0ZpbHRlcihlcnJjb25zb2xlLCBiYi5tc2cuQkJMb2dGaWx0ZXJTdGRFcnIpCisgICAgY29uc29sZS5zZXRGb3JtYXR0ZXIoZm9ybWF0KQorICAgIGVycmNvbnNvbGUuc2V0Rm9ybWF0dGVyKGZvcm1hdCkKKyAgICBpZiBub3QgYmIubXNnLmhhc19jb25zb2xlX2hhbmRsZXIobG9nZ2VyKToKKyAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoY29uc29sZSkKKyAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoZXJyY29uc29sZSkKKworICAgIGlmIHBhcmFtcy5vcHRpb25zLnJlbW90ZV9zZXJ2ZXIgYW5kIHBhcmFtcy5vcHRpb25zLmtpbGxfc2VydmVyOgorICAgICAgICBzZXJ2ZXIudGVybWluYXRlU2VydmVyKCkKKyAgICAgICAgcmV0dXJuCisKKyAgICBpZiBwYXJhbXMub2JzZXJ2ZV9vbmx5OgorICAgICAgICBsb2dnZXIuZXJyb3IoIk9ic2VydmUtb25seSBtb2RlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBVSSIpCisgICAgICAgIHJldHVybiAxCisKKyAgICBsbGV2ZWwsIGRlYnVnX2RvbWFpbnMgPSBiYi5tc2cuY29uc3RydWN0TG9nT3B0aW9ucygpCisgICAgc2VydmVyLnJ1bkNvbW1hbmQoWyJzZXRFdmVudE1hc2siLCBzZXJ2ZXIuZ2V0RXZlbnRIYW5kbGUoKSwgbGxldmVsLCBkZWJ1Z19kb21haW5zLCBfZXZ0X2xpc3RdKQorCisgICAgdHJ5OgorICAgICAgICBwYXJhbXMudXBkYXRlRnJvbVNlcnZlcihzZXJ2ZXIpCisgICAgICAgIGNtZGxpbmUgPSBwYXJhbXMucGFyc2VBY3Rpb25zKCkKKyAgICAgICAgaWYgbm90IGNtZGxpbmU6CisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIk5vIHRhc2sgZ2l2ZW4iKQorICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgaWYgJ21zZycgaW4gY21kbGluZSBhbmQgY21kbGluZVsnbXNnJ106CisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoY21kbGluZVsnbXNnJ10pCisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBjbWRsaW5lID0gY21kbGluZVsnYWN0aW9uJ10KKyAgICAgICAgcmV0LCBlcnJvciA9IHNlcnZlci5ydW5Db21tYW5kKGNtZGxpbmUpCisgICAgICAgIGlmIGVycm9yOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJ7MH06IHsxfSIuZm9ybWF0KGNtZGxpbmUsIGVycm9yKSkKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIGVsaWYgbm90IHJldDoKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiQ291bGRuJ3QgZ2V0IGRlZmF1bHQgY29tbWFuZGxpbmU6IHswfSIuZm9ybWF0KHJlKSkKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgZXhjZXB0IHhtbHJwYy5jbGllbnQuRmF1bHQgYXMgeDoKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJYTUxSUEMgRmF1bHQgZ2V0dGluZyBjb21tYW5kbGluZTogezB9Ii5mb3JtYXQoeCkpCisgICAgICAgIHJldHVybiAxCisKKyAgICBhY3RpdmVfcHJvY2Vzc190b3RhbCA9IE5vbmUKKyAgICBpc190YXNrc19ydW5uaW5nID0gRmFsc2UKKworICAgIHdoaWxlIFRydWU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGV2ZW50ID0gZXZlbnRIYW5kbGVyLndhaXRFdmVudCgwLjI1KQorICAgICAgICAgICAgaWYgbm90IGV2ZW50OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGhlbHBlci5ldmVudEhhbmRsZXIoZXZlbnQpCisKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmJ1aWxkLlRhc2tCYXNlKToKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhldmVudC5fbWVzc2FnZSkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGxvZ2dpbmcuTG9nUmVjb3JkKToKKyAgICAgICAgICAgICAgICAjIERvbid0IHJlcG9ydCBzc3RhdGUgZmFpbHVyZXMgYXMgZXJyb3JzLCBzaW5jZSBZb2N0byB3aWxsIGp1c3QgcnVuIHRoZSB0YXNrcyBmb3IgcmVhbAorICAgICAgICAgICAgICAgIGlmIGV2ZW50Lm1zZyA9PSAiTm8gc3VpdGFibGUgc3RhZ2luZyBwYWNrYWdlIGZvdW5kIiBvciAoZXZlbnQubXNnLnN0YXJ0c3dpdGgoCisgICAgICAgICAgICAgICAgICAgICAgICAiRmV0Y2hlciBmYWlsdXJlOiBVbmFibGUgdG8gZmluZCBmaWxlIikgYW5kICJkb3dubG9hZGZpbGVuYW1lIiBpbiBldmVudC5tc2cgYW5kICJzc3RhdGUiIGluIGV2ZW50Lm1zZyk6CisgICAgICAgICAgICAgICAgICAgIGV2ZW50LmxldmVsbm8gPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuV0FSTklORworICAgICAgICAgICAgICAgIGlmIGV2ZW50LnRhc2twaWQgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgIyBGb3IgIm5vcm1hbCIgbG9nZ2luZyBjb25kaXRpb25zLCBkb24ndCBzaG93IG5vdGUgbG9ncyBmcm9tIHRhc2tzCisgICAgICAgICAgICAgICAgICAgICMgYnV0IGRvIHNob3cgdGhlbSBpZiB0aGUgdXNlciBoYXMgY2hhbmdlZCB0aGUgZGVmYXVsdCBsb2cgbGV2ZWwgdG8KKyAgICAgICAgICAgICAgICAgICAgIyBpbmNsdWRlIHZlcmJvc2UvZGVidWcgbWVzc2FnZXMKKyAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQubGV2ZWxubyA8PSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuTk9URSBhbmQgKGV2ZW50LmxldmVsbm8gPCBsbGV2ZWwgb3IgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmxldmVsbm8gPT0gYmIubXNnLkJCTG9nRm9ybWF0dGVyLk5PVEUgYW5kIGxsZXZlbCAhPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuVkVSQk9TRSkpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICAjIFByZWZpeCB0YXNrIG1lc3NhZ2VzIHdpdGggcmVjaXBlL3Rhc2sKKyAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQudGFza3BpZCBpbiBoZWxwZXIucnVubmluZ190YXNrcyBhbmQgZXZlbnQubGV2ZWxubyAhPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuUExBSU46CisgICAgICAgICAgICAgICAgICAgICAgICB0YXNraW5mbyA9IGhlbHBlci5ydW5uaW5nX3Rhc2tzW2V2ZW50LnRhc2twaWRdCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5tc2cgPSB0YXNraW5mb1sndGl0bGUnXSArICc6ICcgKyBldmVudC5tc2cKKyAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKGV2ZW50LCAnZm4nKToKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQubXNnID0gZXZlbnQuZm4gKyAnOiAnICsgZXZlbnQubXNnCisgICAgICAgICAgICAgICAgbG9nZ2VyLmhhbmRsZShldmVudCkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmJ1aWxkLlRhc2tGYWlsZWRTaWxlbnQpOgorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJMb2dmaWxlIGZvciBmYWlsZWQgc2V0c2NlbmUgdGFzayBpcyAlcyIgJSBldmVudC5sb2dmaWxlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5idWlsZC5UYXNrRmFpbGVkKToKKyAgICAgICAgICAgICAgICBydCA9ICJ7MH0tezF9OnsyfSIuZm9ybWF0KGV2ZW50LnBuLCBldmVudC5wdi5yZXBsYWNlKCJBVVRPSU5DIiwgIjAiKSwgZXZlbnQudGFzaykKKworICAgICAgICAgICAgICAgIGxvZ2ZpbGUgPSBldmVudC5sb2dmaWxlCisgICAgICAgICAgICAgICAgaWYgbm90IGxvZ2ZpbGUgb3Igbm90IG9zLnBhdGguZXhpc3RzKGxvZ2ZpbGUpOgorICAgICAgICAgICAgICAgICAgICBUZWFtQ2l0eVVJLmVtaXRfc2VydmljZV9tZXNzYWdlKCJidWlsZFByb2JsZW0iLCBkZXNjcmlwdGlvbj0iezB9XG5Vbmtub3duIGZhaWx1cmUgKG5vIGxvZyBmaWxlIGF2YWlsYWJsZSkiLmZvcm1hdChydCkpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBldmVudC50YXNrLmVuZHN3aXRoKCJfc2V0c2NlbmUiKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlci5ydW5Db21tYW5kKFsic3RhdGVGb3JjZVNodXRkb3duIl0pCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBkZXRhaWxzID0gZGVxdWUobWF4bGVuPWxvZ2xpbmVzKQorICAgICAgICAgICAgICAgIGVycm9yX2xpbmVzID0gW10KKyAgICAgICAgICAgICAgICBpZiBpbmNsdWRlbG9ncyBhbmQgbm90IGV2ZW50LmVycnByaW50ZWQ6CisgICAgICAgICAgICAgICAgICAgIHdpdGggb3Blbihsb2dmaWxlLCAiciIpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBmLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgbGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMuYXBwZW5kKCcgfCAlcycgJSBsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVE9ETzogYSBsZXNzIHN0dXBpZCBjaGVjayBmb3IgZXJyb3JzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LnRhc2sgPT0gImRvX2NvbXBpbGUiKSBhbmQgKCJlcnJvcjoiIGluIGxpbmUpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9saW5lcy5hcHBlbmQobGluZSkKKworICAgICAgICAgICAgICAgIGlmIGVycm9yX2xpbmVzOgorICAgICAgICAgICAgICAgICAgICBUZWFtQ2l0eVVJLmVtaXRfc2VydmljZV9tZXNzYWdlKCJjb21waWxhdGlvblN0YXJ0ZWQiLCBjb21waWxlcj1ydCkKKyAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZXJyb3JfbGluZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBUZWFtQ2l0eVVJLmVtaXRfc2VydmljZV9tZXNzYWdlKCJtZXNzYWdlIiwgdGV4dD1saW5lLCBzdGF0dXM9IkVSUk9SIikKKyAgICAgICAgICAgICAgICAgICAgVGVhbUNpdHlVSS5lbWl0X3NlcnZpY2VfbWVzc2FnZSgiY29tcGlsYXRpb25GaW5pc2hlZCIsIGNvbXBpbGVyPXJ0KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIFRlYW1DaXR5VUkuZW1pdF9zZXJ2aWNlX21lc3NhZ2UoImJ1aWxkUHJvYmxlbSIsIGRlc2NyaXB0aW9uPXJ0KQorCisgICAgICAgICAgICAgICAgZXJyID0gIkxvZ2ZpbGUgb2YgZmFpbHVyZSBzdG9yZWQgaW46ICVzIiAlIGxvZ2ZpbGUKKyAgICAgICAgICAgICAgICBpZiBkZXRhaWxzOgorICAgICAgICAgICAgICAgICAgICB1aS5ibG9ja19zdGFydCgiezB9IHRhc2sgbG9nIi5mb3JtYXQocnQpKQorICAgICAgICAgICAgICAgICAgICAjIFRlYW1DaXR5IHNlZW1zIHRvIGNob2tlIG9uIHNlcnZpY2UgbWVzc2FnZXMgbG9uZ2VyIHRoYW4gYWJvdXQgNjM4MDAgY2hhcmFjdGVycywgc28gaWYgZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgIyBkZXRhaWxzIGlzIGxvbmdlciB0aGFuLCBzYXksIDYwMDAwLCBiYXRjaCBpdCB1cCBpbnRvIHNldmVyYWwgbWVzc2FnZXMuCisgICAgICAgICAgICAgICAgICAgIGZpcnN0X21lc3NhZ2UgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHdoaWxlIGRldGFpbHM6CisgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxfbGVuID0gMAorICAgICAgICAgICAgICAgICAgICAgICAgYmF0Y2ggPSBkZXF1ZSgpCisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSBkZXRhaWxzIGFuZCBkZXRhaWxfbGVuIDwgNjAwMDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUT0RPOiBUaGlzIGNvZGUgZG9lc24ndCBib3RoZXIgdG8gaGFuZGxlIGxpbmVzIHRoYXQgdGhlbXNlbHZlcyBhcmUgZXh0cmVtZWx5IGxvbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGRldGFpbHMucG9wbGVmdCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmF0Y2guYXBwZW5kKGxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsX2xlbiArPSBsZW4obGluZSkKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmlyc3RfbWVzc2FnZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXRjaC5hcHBlbmRsZWZ0KCJMb2cgZGF0YSBmb2xsb3dzOiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RfbWVzc2FnZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbUNpdHlVSS5lbWl0X3NlcnZpY2VfbWVzc2FnZSgibWVzc2FnZSIsIHRleHQ9ZXJyLCBzdGF0dXM9IkVSUk9SIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGV0YWlscz0iXG4iLmpvaW4oYmF0Y2gpKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZWFtQ2l0eVVJLmVtaXRfc2VydmljZV9tZXNzYWdlKCJtZXNzYWdlIiwgdGV4dD0iW2NvbnRpbnVlZF0iLCBzdGF0dXM9IkVSUk9SIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGV0YWlscz0iXG4iLmpvaW4oYmF0Y2gpKQorICAgICAgICAgICAgICAgICAgICB1aS5ibG9ja19lbmQoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIFRlYW1DaXR5VUkuZW1pdF9zZXJ2aWNlX21lc3NhZ2UoIm1lc3NhZ2UiLCB0ZXh0PWVyciwgc3RhdHVzPSJFUlJPUiIsIGVycm9yRGV0YWlscz0iIikKKworICAgICAgICAgICAgICAgIGlmIG5vdCBldmVudC50YXNrLmVuZHN3aXRoKCJfc2V0c2NlbmUiKToKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyLnJ1bkNvbW1hbmQoWyJzdGF0ZUZvcmNlU2h1dGRvd24iXSkKKworICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuUHJvY2Vzc1N0YXJ0ZWQpOgorICAgICAgICAgICAgICAgIGlmIGV2ZW50LnByb2Nlc3NuYW1lIGluIFsiSW5pdGlhbGlzaW5nIHRhc2tzIiwgIkNoZWNraW5nIHNzdGF0ZSBtaXJyb3Igb2JqZWN0IGF2YWlsYWJpbGl0eSJdOgorICAgICAgICAgICAgICAgICAgICBhY3RpdmVfcHJvY2Vzc190b3RhbCA9IGV2ZW50LnRvdGFsCisgICAgICAgICAgICAgICAgICAgIHVpLmJsb2NrX3N0YXJ0KGV2ZW50LnByb2Nlc3NuYW1lKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuUHJvY2Vzc0ZpbmlzaGVkKToKKyAgICAgICAgICAgICAgICBpZiBldmVudC5wcm9jZXNzbmFtZSBpbiBbIkluaXRpYWxpc2luZyB0YXNrcyIsICJDaGVja2luZyBzc3RhdGUgbWlycm9yIG9iamVjdCBhdmFpbGFiaWxpdHkiXToKKyAgICAgICAgICAgICAgICAgICAgdWkucHJvZ3Jlc3MoZXZlbnQucHJvY2Vzc25hbWUsIDEwMCkKKyAgICAgICAgICAgICAgICAgICAgdWkuYmxvY2tfZW5kKCkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50LlByb2Nlc3NQcm9ncmVzcyk6CisgICAgICAgICAgICAgICAgaWYgZXZlbnQucHJvY2Vzc25hbWUgaW4gWyJJbml0aWFsaXNpbmcgdGFza3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hlY2tpbmcgc3N0YXRlIG1pcnJvciBvYmplY3QgYXZhaWxhYmlsaXR5Il0gYW5kIGFjdGl2ZV9wcm9jZXNzX3RvdGFsICE9IDA6CisgICAgICAgICAgICAgICAgICAgIHVpLnByb2dyZXNzKGV2ZW50LnByb2Nlc3NuYW1lLCBldmVudC5wcm9ncmVzcyAqIDEwMCAvIGFjdGl2ZV9wcm9jZXNzX3RvdGFsKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuQ2FjaGVMb2FkU3RhcnRlZCk6CisgICAgICAgICAgICAgICAgdWkuYmxvY2tfc3RhcnQoIkxvYWRpbmcgY2FjaGUiKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuQ2FjaGVMb2FkUHJvZ3Jlc3MpOgorICAgICAgICAgICAgICAgIGlmIGV2ZW50LnRvdGFsICE9IDA6CisgICAgICAgICAgICAgICAgICAgIHVpLnByb2dyZXNzKCJMb2FkaW5nIGNhY2hlIiwgbWF0aC5mbG9vcihldmVudC5jdXJyZW50ICogMTAwIC8gZXZlbnQudG90YWwpKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuQ2FjaGVMb2FkQ29tcGxldGVkKToKKyAgICAgICAgICAgICAgICB1aS5wcm9ncmVzcygiTG9hZGluZyBjYWNoZSIsIDEwMCkKKyAgICAgICAgICAgICAgICB1aS5ibG9ja19lbmQoKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuUGFyc2VTdGFydGVkKToKKyAgICAgICAgICAgICAgICB1aS5ibG9ja19zdGFydCgiUGFyc2luZyByZWNpcGVzIGFuZCBjaGVja2luZyB1cHN0cmVhbSByZXZpc2lvbnMiKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuUGFyc2VQcm9ncmVzcyk6CisgICAgICAgICAgICAgICAgaWYgZXZlbnQudG90YWwgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgdWkucHJvZ3Jlc3MoIlBhcnNpbmcgcmVjaXBlcyIsIG1hdGguZmxvb3IoZXZlbnQuY3VycmVudCAqIDEwMCAvIGV2ZW50LnRvdGFsKSkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50LlBhcnNlQ29tcGxldGVkKToKKyAgICAgICAgICAgICAgICB1aS5wcm9ncmVzcygiUGFyc2luZyByZWNpcGVzIiwgMTAwKQorICAgICAgICAgICAgICAgIHVpLmJsb2NrX2VuZCgpCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5jb21tYW5kLkNvbW1hbmRDb21wbGV0ZWQpOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuY29tbWFuZC5Db21tYW5kRmFpbGVkKToKKyAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3Ioc3RyKGV2ZW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuTXVsdGlwbGVQcm92aWRlcnMpOgorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKHN0cihldmVudCkpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50Lk5vUHJvdmlkZXIpOgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihzdHIoZXZlbnQpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5jb21tYW5kLkNvbW1hbmRFeGl0KToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmNvb2tlci5Db29rZXJFeGl0KToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLnJ1bnF1ZXVlLnNjZW5lUXVldWVUYXNrU3RhcnRlZCk6CisgICAgICAgICAgICAgICAgaWYgbm90IGlzX3Rhc2tzX3J1bm5pbmc6CisgICAgICAgICAgICAgICAgICAgIGlzX3Rhc2tzX3J1bm5pbmcgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHVpLmJsb2NrX3N0YXJ0KCJSdW5uaW5nIHRhc2tzIikKKyAgICAgICAgICAgICAgICBpZiBldmVudC5zdGF0cy50b3RhbCAhPSAwOgorICAgICAgICAgICAgICAgICAgICB1aS5wcm9ncmVzcygiUnVubmluZyBzZXRzY2VuZSB0YXNrcyIsICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdGF0cy5jb21wbGV0ZWQgKyBldmVudC5zdGF0cy5hY3RpdmUgKyBldmVudC5zdGF0cy5mYWlsZWQgKyAxKSAqIDEwMCAvIGV2ZW50LnN0YXRzLnRvdGFsKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIucnVucXVldWUucnVuUXVldWVUYXNrU3RhcnRlZCk6CisgICAgICAgICAgICAgICAgaWYgbm90IGlzX3Rhc2tzX3J1bm5pbmc6CisgICAgICAgICAgICAgICAgICAgIGlzX3Rhc2tzX3J1bm5pbmcgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHVpLmJsb2NrX3N0YXJ0KCJSdW5uaW5nIHRhc2tzIikKKyAgICAgICAgICAgICAgICBpZiBldmVudC5zdGF0cy50b3RhbCAhPSAwOgorICAgICAgICAgICAgICAgICAgICBwc2V1ZG9fdG90YWwgPSBldmVudC5zdGF0cy50b3RhbCAtIGV2ZW50LnN0YXRzLnNraXBwZWQKKyAgICAgICAgICAgICAgICAgICAgcHNldWRvX2NvbXBsZXRlID0gZXZlbnQuc3RhdHMuY29tcGxldGVkICsgZXZlbnQuc3RhdHMuYWN0aXZlIC0gZXZlbnQuc3RhdHMuc2tpcHBlZCArIGV2ZW50LnN0YXRzLmZhaWxlZCArIDEKKyAgICAgICAgICAgICAgICAgICAgIyBUT0RPOiBzb21ldGltZXMgdGhpcyBnaXZlcyBvdmVyIDEwMCUKKyAgICAgICAgICAgICAgICAgICAgdWkucHJvZ3Jlc3MoIlJ1bm5pbmcgcnVucXVldWUgdGFza3MiLCAocHNldWRvX2NvbXBsZXRlKSAqIDEwMCAvIHBzZXVkb190b3RhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICh7MH0vezF9KSIuZm9ybWF0KHBzZXVkb19jb21wbGV0ZSwgcHNldWRvX3RvdGFsKSkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLnJ1bnF1ZXVlLnNjZW5lUXVldWVUYXNrRmFpbGVkKToKKyAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZyhzdHIoZXZlbnQpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ydW5xdWV1ZS5ydW5RdWV1ZVRhc2tGYWlsZWQpOgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihzdHIoZXZlbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5Mb2dFeGVjVFRZKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yIGFzIGlvZXJyb3I6CisgICAgICAgICAgICAjIGlnbm9yZSBpbnRlcnJ1cHRlZCBpbworICAgICAgICAgICAgaWYgaW9lcnJvci5hcmdzWzBdID09IDQ6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4OgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHN0cihleCkpCisKKyAgICAgICAgIyBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICMgICAgIGlmIHNodXRkb3duID09IDI6CisgICAgICAgICMgICAgICAgICBtdy5hcHBlbmRUZXh0KCJUaGlyZCBLZXlib2FyZCBJbnRlcnJ1cHQsIGV4aXQuXG4iKQorICAgICAgICAjICAgICAgICAgZXhpdGZsYWcgPSBUcnVlCisgICAgICAgICMgICAgIGlmIHNodXRkb3duID09IDE6CisgICAgICAgICMgICAgICAgICBtdy5hcHBlbmRUZXh0KCJTZWNvbmQgS2V5Ym9hcmQgSW50ZXJydXB0LCBzdG9wcGluZy4uLlxuIikKKyAgICAgICAgIyAgICAgICAgIF8sIGVycm9yID0gc2VydmVyLnJ1bkNvbW1hbmQoWyJzdGF0ZUZvcmNlU2h1dGRvd24iXSkKKyAgICAgICAgIyAgICAgICAgIGlmIGVycm9yOgorICAgICAgICAjICAgICAgICAgICAgIHByaW50KCJVbmFibGUgdG8gY2xlYW5seSBzdG9wOiAlcyIgJSBlcnJvcikKKyAgICAgICAgIyAgICAgaWYgc2h1dGRvd24gPT0gMDoKKyAgICAgICAgIyAgICAgICAgIG13LmFwcGVuZFRleHQoIktleWJvYXJkIEludGVycnVwdCwgY2xvc2luZyBkb3duLi4uXG4iKQorICAgICAgICAjICAgICAgICAgXywgZXJyb3IgPSBzZXJ2ZXIucnVuQ29tbWFuZChbInN0YXRlU2h1dGRvd24iXSkKKyAgICAgICAgIyAgICAgICAgIGlmIGVycm9yOgorICAgICAgICAjICAgICAgICAgICAgIHByaW50KCJVbmFibGUgdG8gY2xlYW5seSBzaHV0ZG93bjogJXMiICUgZXJyb3IpCisgICAgICAgICMgICAgIHNodXRkb3duID0gc2h1dGRvd24gKyAxCisgICAgICAgICMgICAgIHBhc3MKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdG9hc3RlcnVpLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi91aS90b2FzdGVydWkucHkKaW5kZXggNTE4OTJjOS4uOTI2MGY1ZCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS90b2FzdGVydWkucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi91aS90b2FzdGVydWkucHkKQEAgLTE3Niw3ICsxNzYsNyBAQAogICAgICAgICBpZiBlcnJvcjoKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiQ29tbWFuZCAnJXMnIGZhaWxlZDogJXMiICUgKGNtZGxpbmUsIGVycm9yKSkKICAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgIGVsaWYgcmV0ICE9IFRydWU6CisgICAgICAgIGVsaWYgbm90IHJldDoKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiQ29tbWFuZCAnJXMnIGZhaWxlZDogcmV0dXJuZWQgJXMiICUgKGNtZGxpbmUsIHJldCkpCiAgICAgICAgICAgICByZXR1cm4gMQogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3VpZXZlbnQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3VpZXZlbnQucHkKaW5kZXggZmVkYjA1MC4uMTNkMGQ0YSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS91aWV2ZW50LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdWlldmVudC5weQpAQCAtNDYsNyArNDYsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuRXZlbnRIYW5kbGUgPSByZXQKICAgICAgICAgICAgICAgICBlcnJvciA9ICIiCiAKLSAgICAgICAgICAgIGlmIHNlbGYuRXZlbnRIYW5kbGUgIT0gTm9uZToKKyAgICAgICAgICAgIGlmIHNlbGYuRXZlbnRIYW5kbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICAgICAgZXJybXNnID0gIkNvdWxkIG5vdCByZWdpc3RlciBVSSBldmVudCBoYW5kbGVyLiBFcnJvcjogJXMsIGhvc3QgJXMsICJcCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3VpaGVscGVyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi91aS91aWhlbHBlci5weQppbmRleCBjOGRkN2RmLi40OGQ4MDhhIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3VpaGVscGVyLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdWloZWxwZXIucHkKQEAgLTE1LDM5ICsxNSw0OCBAQAogICAgICAgICAjIFJ1bm5pbmcgUElEcyBwcmVzZXJ2ZXMgdGhlIG9yZGVyIHRhc2tzIHdlcmUgZXhlY3V0ZWQgaW4KICAgICAgICAgc2VsZi5ydW5uaW5nX3BpZHMgPSBbXQogICAgICAgICBzZWxmLmZhaWxlZF90YXNrcyA9IFtdCisgICAgICAgIHNlbGYucGlkbWFwID0ge30KICAgICAgICAgc2VsZi50YXNrbnVtYmVyX2N1cnJlbnQgPSAwCiAgICAgICAgIHNlbGYudGFza251bWJlcl90b3RhbCA9IDAKIAogICAgIGRlZiBldmVudEhhbmRsZXIoc2VsZiwgZXZlbnQpOgorICAgICAgICAjIFBJRHMgYXJlIGEgYmFkIGlkZWEgYXMgdGhleSBjYW4gYmUgcmV1c2VkIGJlZm9yZSB3ZSBwcm9jZXNzIGFsbCBVSSBldmVudHMuCisgICAgICAgICMgV2UgbWFpbnRhaW4gYSAnZnV6enknIG1hdGNoIGZvciBUYXNrUHJvZ3Jlc3Mgc2luY2UgdGhlcmUgaXMgbm8gb3RoZXIgd2F5IHRvIG1hdGNoCisgICAgICAgIGRlZiByZW1vdmV0aWQocGlkLCB0aWQpOgorICAgICAgICAgICAgc2VsZi5ydW5uaW5nX3BpZHMucmVtb3ZlKHRpZCkKKyAgICAgICAgICAgIGRlbCBzZWxmLnJ1bm5pbmdfdGFza3NbdGlkXQorICAgICAgICAgICAgaWYgc2VsZi5waWRtYXBbcGlkXSA9PSB0aWQ6CisgICAgICAgICAgICAgICAgZGVsIHNlbGYucGlkbWFwW3BpZF0KKyAgICAgICAgICAgIHNlbGYubmVlZFVwZGF0ZSA9IFRydWUKKwogICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5idWlsZC5UYXNrU3RhcnRlZCk6CisgICAgICAgICAgICB0aWQgPSBldmVudC5fZm4gKyAiOiIgKyBldmVudC5fdGFzawogICAgICAgICAgICAgaWYgZXZlbnQuX21jICE9ICJkZWZhdWx0IjoKLSAgICAgICAgICAgICAgICBzZWxmLnJ1bm5pbmdfdGFza3NbZXZlbnQucGlkXSA9IHsgJ3RpdGxlJyA6ICJtYzolczolcyAlcyIgJSAoZXZlbnQuX21jLCBldmVudC5fcGFja2FnZSwgZXZlbnQuX3Rhc2spLCAnc3RhcnR0aW1lJyA6IHRpbWUudGltZSgpIH0KKyAgICAgICAgICAgICAgICBzZWxmLnJ1bm5pbmdfdGFza3NbdGlkXSA9IHsgJ3RpdGxlJyA6ICJtYzolczolcyAlcyIgJSAoZXZlbnQuX21jLCBldmVudC5fcGFja2FnZSwgZXZlbnQuX3Rhc2spLCAnc3RhcnR0aW1lJyA6IHRpbWUudGltZSgpLCAncGlkJyA6IGV2ZW50LnBpZCB9CiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYucnVubmluZ190YXNrc1tldmVudC5waWRdID0geyAndGl0bGUnIDogIiVzICVzIiAlIChldmVudC5fcGFja2FnZSwgZXZlbnQuX3Rhc2spLCAnc3RhcnR0aW1lJyA6IHRpbWUudGltZSgpIH0KLSAgICAgICAgICAgIHNlbGYucnVubmluZ19waWRzLmFwcGVuZChldmVudC5waWQpCisgICAgICAgICAgICAgICAgc2VsZi5ydW5uaW5nX3Rhc2tzW3RpZF0gPSB7ICd0aXRsZScgOiAiJXMgJXMiICUgKGV2ZW50Ll9wYWNrYWdlLCBldmVudC5fdGFzayksICdzdGFydHRpbWUnIDogdGltZS50aW1lKCksICdwaWQnIDogZXZlbnQucGlkIH0KKyAgICAgICAgICAgIHNlbGYucnVubmluZ19waWRzLmFwcGVuZCh0aWQpCisgICAgICAgICAgICBzZWxmLnBpZG1hcFtldmVudC5waWRdID0gdGlkCiAgICAgICAgICAgICBzZWxmLm5lZWRVcGRhdGUgPSBUcnVlCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIuYnVpbGQuVGFza1N1Y2NlZWRlZCk6Ci0gICAgICAgICAgICBkZWwgc2VsZi5ydW5uaW5nX3Rhc2tzW2V2ZW50LnBpZF0KLSAgICAgICAgICAgIHNlbGYucnVubmluZ19waWRzLnJlbW92ZShldmVudC5waWQpCi0gICAgICAgICAgICBzZWxmLm5lZWRVcGRhdGUgPSBUcnVlCisgICAgICAgICAgICB0aWQgPSBldmVudC5fZm4gKyAiOiIgKyBldmVudC5fdGFzaworICAgICAgICAgICAgcmVtb3ZldGlkKGV2ZW50LnBpZCwgdGlkKQogICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmJ1aWxkLlRhc2tGYWlsZWRTaWxlbnQpOgotICAgICAgICAgICAgZGVsIHNlbGYucnVubmluZ190YXNrc1tldmVudC5waWRdCi0gICAgICAgICAgICBzZWxmLnJ1bm5pbmdfcGlkcy5yZW1vdmUoZXZlbnQucGlkKQorICAgICAgICAgICAgdGlkID0gZXZlbnQuX2ZuICsgIjoiICsgZXZlbnQuX3Rhc2sKKyAgICAgICAgICAgIHJlbW92ZXRpZChldmVudC5waWQsIHRpZCkKICAgICAgICAgICAgICMgRG9uJ3QgYWRkIHRvIHRoZSBmYWlsZWQgdGFza3MgbGlzdCBzaW5jZSB0aGlzIGlzIGUuZy4gYSBzZXRzY2VuZSB0YXNrIGZhaWx1cmUKLSAgICAgICAgICAgIHNlbGYubmVlZFVwZGF0ZSA9IFRydWUKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5idWlsZC5UYXNrRmFpbGVkKToKLSAgICAgICAgICAgIGRlbCBzZWxmLnJ1bm5pbmdfdGFza3NbZXZlbnQucGlkXQotICAgICAgICAgICAgc2VsZi5ydW5uaW5nX3BpZHMucmVtb3ZlKGV2ZW50LnBpZCkKKyAgICAgICAgICAgIHRpZCA9IGV2ZW50Ll9mbiArICI6IiArIGV2ZW50Ll90YXNrCisgICAgICAgICAgICByZW1vdmV0aWQoZXZlbnQucGlkLCB0aWQpCiAgICAgICAgICAgICBzZWxmLmZhaWxlZF90YXNrcy5hcHBlbmQoIHsgJ3RpdGxlJyA6ICIlcyAlcyIgJSAoZXZlbnQuX3BhY2thZ2UsIGV2ZW50Ll90YXNrKX0pCi0gICAgICAgICAgICBzZWxmLm5lZWRVcGRhdGUgPSBUcnVlCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIucnVucXVldWUucnVuUXVldWVUYXNrU3RhcnRlZCk6CiAgICAgICAgICAgICBzZWxmLnRhc2tudW1iZXJfY3VycmVudCA9IGV2ZW50LnN0YXRzLmNvbXBsZXRlZCArIGV2ZW50LnN0YXRzLmFjdGl2ZSArIGV2ZW50LnN0YXRzLmZhaWxlZCArIDEKICAgICAgICAgICAgIHNlbGYudGFza251bWJlcl90b3RhbCA9IGV2ZW50LnN0YXRzLnRvdGFsCiAgICAgICAgICAgICBzZWxmLm5lZWRVcGRhdGUgPSBUcnVlCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIuYnVpbGQuVGFza1Byb2dyZXNzKToKLSAgICAgICAgICAgIGlmIGV2ZW50LnBpZCA+IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5ydW5uaW5nX3Rhc2tzW2V2ZW50LnBpZF1bJ3Byb2dyZXNzJ10gPSBldmVudC5wcm9ncmVzcwotICAgICAgICAgICAgICAgIHNlbGYucnVubmluZ190YXNrc1tldmVudC5waWRdWydyYXRlJ10gPSBldmVudC5yYXRlCisgICAgICAgICAgICBpZiBldmVudC5waWQgPiAwIGFuZCBldmVudC5waWQgaW4gc2VsZi5waWRtYXA6CisgICAgICAgICAgICAgICAgc2VsZi5ydW5uaW5nX3Rhc2tzW3NlbGYucGlkbWFwW2V2ZW50LnBpZF1dWydwcm9ncmVzcyddID0gZXZlbnQucHJvZ3Jlc3MKKyAgICAgICAgICAgICAgICBzZWxmLnJ1bm5pbmdfdGFza3Nbc2VsZi5waWRtYXBbZXZlbnQucGlkXV1bJ3JhdGUnXSA9IGV2ZW50LnJhdGUKICAgICAgICAgICAgICAgICBzZWxmLm5lZWRVcGRhdGUgPSBUcnVlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdXRpbHMucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3V0aWxzLnB5CmluZGV4IDhkNDBiY2QuLjVmNTc2N2MgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvdXRpbHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi91dGlscy5weQpAQCAtMjQsNyArMjQsNiBAQAogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IGVycm5vCiBpbXBvcnQgc2lnbmFsCi1pbXBvcnQgYXN0CiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBjb3B5CiBmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IGdldHN0YXR1c291dHB1dApAQCAtNDI4LDEwICs0MjcsMTEgQEAKICAgICAgICAgZm9yIGxvY2tmaWxlIGluIGZpbGVzOgogICAgICAgICAgICAgbG9ja3MuYXBwZW5kKGJiLnV0aWxzLmxvY2tmaWxlKGxvY2tmaWxlKSkKIAotICAgIHlpZWxkCi0KLSAgICBmb3IgbG9jayBpbiBsb2NrczoKLSAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsb2NrKQorICAgIHRyeToKKyAgICAgICAgeWllbGQKKyAgICBmaW5hbGx5OgorICAgICAgICBmb3IgbG9jayBpbiBsb2NrczoKKyAgICAgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobG9jaykKIAogQGNvbnRleHRtYW5hZ2VyCiBkZWYgdGltZW91dChzZWNvbmRzKToKQEAgLTU1Niw2ICs1NTYsMjAgQEAKICAgICBpbXBvcnQgaGFzaGxpYgogICAgIHJldHVybiBfaGFzaGVyKGhhc2hsaWIuc2hhMSgpLCBmaWxlbmFtZSkKIAorZGVmIHNoYTM4NF9maWxlKGZpbGVuYW1lKToKKyAgICAiIiIKKyAgICBSZXR1cm4gdGhlIGhleCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIFNIQTM4NCBjaGVja3N1bSBvZiB0aGUgZmlsZW5hbWUKKyAgICAiIiIKKyAgICBpbXBvcnQgaGFzaGxpYgorICAgIHJldHVybiBfaGFzaGVyKGhhc2hsaWIuc2hhMzg0KCksIGZpbGVuYW1lKQorCitkZWYgc2hhNTEyX2ZpbGUoZmlsZW5hbWUpOgorICAgICIiIgorICAgIFJldHVybiB0aGUgaGV4IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgU0hBNTEyIGNoZWNrc3VtIG9mIHRoZSBmaWxlbmFtZQorICAgICIiIgorICAgIGltcG9ydCBoYXNobGliCisgICAgcmV0dXJuIF9oYXNoZXIoaGFzaGxpYi5zaGE1MTIoKSwgZmlsZW5hbWUpCisKIGRlZiBwcmVzZXJ2ZWRfZW52dmFyc19leHBvcnRlZCgpOgogICAgICIiIlZhcmlhYmxlcyB3aGljaCBhcmUgdGFrZW4gZnJvbSB0aGUgZW52aXJvbm1lbnQgYW5kIHBsYWNlZCBpbiBhbmQgZXhwb3J0ZWQKICAgICBmcm9tIHRoZSBtZXRhZGF0YSIiIgpAQCAtODUwLDcgKzg2NCw3IEBACiAgICAgICAgICAgICBpZiBkZXN0ZXhpc3RzIGFuZCBub3Qgc3RhdC5TX0lTRElSKGRzdGF0W3N0YXQuU1RfTU9ERV0pOgogICAgICAgICAgICAgICAgIG9zLnVubGluayhkZXN0KQogICAgICAgICAgICAgb3Muc3ltbGluayh0YXJnZXQsIGRlc3QpCi0gICAgICAgICAgICAjb3MubGNob3duKGRlc3Qsc3N0YXRbc3RhdC5TVF9VSURdLHNzdGF0W3N0YXQuU1RfR0lEXSkKKyAgICAgICAgICAgIG9zLmxjaG93bihkZXN0LHNzdGF0W3N0YXQuU1RfVUlEXSxzc3RhdFtzdGF0LlNUX0dJRF0pCiAgICAgICAgICAgICByZXR1cm4gb3MubHN0YXQoZGVzdCkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoImNvcHlmaWxlOiBmYWlsZWQgdG8gY3JlYXRlIHN5bWxpbmsgJXMgdG8gJXMgKCVzKSIgJSAoZGVzdCwgdGFyZ2V0LCBlKSkKQEAgLTEwMjUsNiArMTAzOSw0MyBAQAogICAgICAgICBjaGVja3ZhbHVlcyA9IHNldChjaGVja3ZhbHVlcykKICAgICByZXR1cm4gJyAnLmpvaW4oc29ydGVkKGNoZWNrdmFsdWVzICYgdmFsKSkKIAorCitkZWYgZ2V0X3JlZmVyZW5jZWRfdmFycyhzdGFydF9leHByLCBkKToKKyAgICAiIiIKKyAgICA6cmV0dXJuOiBuYW1lcyBvZiB2YXJzIHJlZmVyZW5jZWQgaW4gc3RhcnRfZXhwciAocmVjdXJzaXZlbHkpLCBpbiBxdWFzaS1CRlMgb3JkZXIgKHZhcmlhYmxlcyB3aXRoaW4gdGhlIHNhbWUgbGV2ZWwKKyAgICBhcmUgb3JkZXJlZCBhcmJpdHJhcmlseSkKKyAgICAiIiIKKworICAgIHNlZW4gPSBzZXQoKQorICAgIHJldCA9IFtdCisKKyAgICAjIFRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgcXVldWUgaXMgdGhlIHVuZXhwYW5kZWQgc3RhcnQgZXhwcmVzc2lvbgorICAgIHF1ZXVlID0gY29sbGVjdGlvbnMuZGVxdWUoW3N0YXJ0X2V4cHJdKQorICAgICMgU3Vic2VxdWVudCBlbnRyaWVzIHdpbGwgYmUgdmFyaWFibGUgbmFtZXMsIHNvIHdlIG5lZWQgdG8gdHJhY2sgd2hldGhlciBvciBub3QgZW50cnkgcmVxdWlyZXMgZ2V0VmFyCisgICAgaXNfZmlyc3QgPSBUcnVlCisKKyAgICBlbXB0eV9kYXRhID0gYmIuZGF0YS5pbml0KCkKKyAgICB3aGlsZSBxdWV1ZToKKyAgICAgICAgZW50cnkgPSBxdWV1ZS5wb3BsZWZ0KCkKKyAgICAgICAgaWYgaXNfZmlyc3Q6CisgICAgICAgICAgICAjIEVudHJ5IGlzIHRoZSBzdGFydCBleHByZXNzaW9uIC0gbm8gZXhwYW5zaW9uIG5lZWRlZAorICAgICAgICAgICAgaXNfZmlyc3QgPSBGYWxzZQorICAgICAgICAgICAgZXhwcmVzc2lvbiA9IGVudHJ5CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFRoaXMgaXMgYSB2YXJpYWJsZSBuYW1lIC0gbmVlZCB0byBnZXQgdGhlIHZhbHVlCisgICAgICAgICAgICBleHByZXNzaW9uID0gZC5nZXRWYXIoZW50cnksIEZhbHNlKQorICAgICAgICAgICAgcmV0LmFwcGVuZChlbnRyeSkKKworICAgICAgICAjIGV4cGFuZFdpdGhSZWZzIGlzIGhvdyB3ZSBhY3R1YWxseSBnZXQgdGhlIHJlZmVyZW5jZWQgdmFyaWFibGVzIGluIHRoZSBleHByZXNzaW9uLiBXZSBjYWxsIGl0IHVzaW5nIGFuIGVtcHR5CisgICAgICAgICMgZGF0YSBzdG9yZSBiZWNhdXNlIHdlIG9ubHkgd2FudCB0aGUgdmFyaWFibGVzIGRpcmVjdGx5IHVzZWQgaW4gdGhlIGV4cHJlc3Npb24uIEl0IHJldHVybnMgYSBzZXQsIHdoaWNoIGlzIHdoYXQKKyAgICAgICAgIyBkb29tcyB1cyB0byBvbmx5IGV2ZXIgYmUgInF1YXNpLUJGUyIgcmF0aGVyIHRoYW4gZnVsbCBCRlMuCisgICAgICAgIG5ld192YXJzID0gZW1wdHlfZGF0YS5leHBhbmRXaXRoUmVmcyhleHByZXNzaW9uLCBOb25lKS5yZWZlcmVuY2VzIC0gc2V0KHNlZW4pCisKKyAgICAgICAgcXVldWUuZXh0ZW5kKG5ld192YXJzKQorICAgICAgICBzZWVuLnVwZGF0ZShuZXdfdmFycykKKyAgICByZXR1cm4gcmV0CisKKwogZGVmIGNwdV9jb3VudCgpOgogICAgIHJldHVybiBtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50KCkKIApAQCAtMTU2MCwzICsxNjExLDI5IEBACiAgICAgICAgIHNlbGYubWVzc2FnZXMuYXBwZW5kKGJiLmJ1aWxkLmxvZ2Zvcm1hdHRlci5mb3JtYXQocmVjb3JkKSkKICAgICBkZWYgY29udGFpbnMoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIHJldHVybiAobWVzc2FnZSBpbiBzZWxmLm1lc3NhZ2VzKQorCitkZWYgaXNfc2VtdmVyKHZlcnNpb24pOgorICAgICIiIgorICAgICAgICBJcyB0aGUgdmVyc2lvbiBzdHJpbmcgZm9sbG93aW5nIHRoZSBzZW12ZXIgc2VtYW50aWM/CisKKyAgICAgICAgaHR0cHM6Ly9zZW12ZXIub3JnL3NwZWMvdjIuMC4wLmh0bWwKKyAgICAiIiIKKyAgICByZWdleCA9IHJlLmNvbXBpbGUoCisgICAgciIiIgorICAgIF4KKyAgICAoMHxbMS05XVxkKilcLigwfFsxLTldXGQqKVwuKDB8WzEtOV1cZCopCisgICAgKD86LSgKKyAgICAgICAgKD86MHxbMS05XVxkKnxcZCpbYS16QS1aLV1bMC05YS16QS1aLV0qKQorICAgICAgICAoPzpcLig/OjB8WzEtOV1cZCp8XGQqW2EtekEtWi1dWzAtOWEtekEtWi1dKikpKgorICAgICkpPworICAgICg/OlwrKAorICAgICAgICBbMC05YS16QS1aLV0rCisgICAgICAgICg/OlwuWzAtOWEtekEtWi1dKykqCisgICAgKSk/CisgICAgJAorICAgICIiIiwgcmUuVkVSQk9TRSkKKworICAgIGlmIHJlZ2V4Lm1hdGNoKHZlcnNpb24pIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgcmV0dXJuIFRydWUKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmJsYXllcnMvY29tbW9uLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9jb21tb24ucHkKaW5kZXggYzU2NTdkMy4uNmM3NmVmMyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9jb21tb24ucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9jb21tb24ucHkKQEAgLTE3LDcgKzE3LDcgQEAKICAgICBkZWYgdGluZm9pbF9pbml0KHNlbGYsIHRpbmZvaWwpOgogICAgICAgICBzZWxmLnRpbmZvaWwgPSB0aW5mb2lsCiAgICAgICAgIHNlbGYuYmJsYXllcnMgPSAoc2VsZi50aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignQkJMQVlFUlMnKSBvciAiIikuc3BsaXQoKQotICAgICAgICBsYXllcmNvbmZzID0gc2VsZi50aW5mb2lsLmNvbmZpZ19kYXRhLnZhcmhpc3RvcnkuZ2V0X3ZhcmlhYmxlX2l0ZW1zX2ZpbGVzKCdCQkZJTEVfQ09MTEVDVElPTlMnLCBzZWxmLnRpbmZvaWwuY29uZmlnX2RhdGEpCisgICAgICAgIGxheWVyY29uZnMgPSBzZWxmLnRpbmZvaWwuY29uZmlnX2RhdGEudmFyaGlzdG9yeS5nZXRfdmFyaWFibGVfaXRlbXNfZmlsZXMoJ0JCRklMRV9DT0xMRUNUSU9OUycpCiAgICAgICAgIHNlbGYuYmJmaWxlX2NvbGxlY3Rpb25zID0ge2xheWVyOiBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKHBhdGgpKSBmb3IgbGF5ZXIsIHBhdGggaW4gbGF5ZXJjb25mcy5pdGVtcygpfQogCiAgICAgQHN0YXRpY21ldGhvZApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9sYXllcmluZGV4LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9sYXllcmluZGV4LnB5CmluZGV4IDU3Y2Q5MDIuLjk1YjY3YTYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmJsYXllcnMvbGF5ZXJpbmRleC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL2xheWVyaW5kZXgucHkKQEAgLTI0LDcgKzI0LDcgQEAKICAgICBUaGlzIGNsYXNzIGluaGVyaXRzIEFjdGlvblBsdWdpbiB0byBnZXQgZG9fYWRkX2xheWVyLgogICAgICIiIgogCi0gICAgZGVmIGdldF9mZXRjaF9sYXllcihzZWxmLCBmZXRjaGRpciwgdXJsLCBzdWJkaXIsIGZldGNoX2xheWVyKToKKyAgICBkZWYgZ2V0X2ZldGNoX2xheWVyKHNlbGYsIGZldGNoZGlyLCB1cmwsIHN1YmRpciwgZmV0Y2hfbGF5ZXIsIGJyYW5jaCwgc2hhbGxvdz1GYWxzZSk6CiAgICAgICAgIGxheWVybmFtZSA9IHNlbGYuZ2V0X2xheWVyX25hbWUodXJsKQogICAgICAgICBpZiBvcy5wYXRoLnNwbGl0ZXh0KGxheWVybmFtZSlbMV0gPT0gJy5naXQnOgogICAgICAgICAgICAgbGF5ZXJuYW1lID0gb3MucGF0aC5zcGxpdGV4dChsYXllcm5hbWUpWzBdCkBAIC0zMiw5ICszMiwxNSBAQAogICAgICAgICBsYXllcmRpciA9IG9zLnBhdGguam9pbihyZXBvZGlyLCBzdWJkaXIpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhyZXBvZGlyKToKICAgICAgICAgICAgIGlmIGZldGNoX2xheWVyOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MuY2FsbChbJ2dpdCcsICdjbG9uZScsIHVybCwgcmVwb2Rpcl0pCisgICAgICAgICAgICAgICAgY21kID0gWydnaXQnLCAnY2xvbmUnXQorICAgICAgICAgICAgICAgIGlmIHNoYWxsb3c6CisgICAgICAgICAgICAgICAgICAgIGNtZC5leHRlbmQoWyctLWRlcHRoJywgJzEnXSkKKyAgICAgICAgICAgICAgICBpZiBicmFuY2g6CisgICAgICAgICAgICAgICAgICAgIGNtZC5leHRlbmQoWyctYicgLCBicmFuY2hdKQorICAgICAgICAgICAgICAgIGNtZC5leHRlbmQoW3VybCwgcmVwb2Rpcl0pCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5jYWxsKGNtZCkKICAgICAgICAgICAgICAgICBpZiByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRmFpbGVkIHRvIGRvd25sb2FkICVzIiAlIHVybCkKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJGYWlsZWQgdG8gZG93bmxvYWQgJXMgKCVzKSIgJSAodXJsLCBicmFuY2gpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgTm9uZQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWJkaXIsIGxheWVybmFtZSwgbGF5ZXJkaXIKQEAgLTE3MSw3ICsxNzcsOSBAQAogICAgICAgICAgICAgICAgIHN1YmRpciwgbmFtZSwgbGF5ZXJkaXIgPSBzZWxmLmdldF9mZXRjaF9sYXllcihmZXRjaGRpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyQnJhbmNoLmxheWVyLnZjc191cmwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllckJyYW5jaC52Y3Nfc3ViZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGFyZ3Muc2hvd19vbmx5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGFyZ3Muc2hvd19vbmx5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJCcmFuY2guYWN0dWFsX2JyYW5jaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Muc2hhbGxvdykKICAgICAgICAgICAgICAgICBpZiBub3QgbmFtZToKICAgICAgICAgICAgICAgICAgICAgIyBFcnJvciBhbHJlYWR5IHNob3duCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxCkBAIC0yMDQsNiArMjEyLDcgQEAKICAgICAgICAgcGFyc2VyX2xheWVyaW5kZXhfZmV0Y2ggPSBzZWxmLmFkZF9jb21tYW5kKHNwLCAnbGF5ZXJpbmRleC1mZXRjaCcsIHNlbGYuZG9fbGF5ZXJpbmRleF9mZXRjaCwgcGFyc2VyZWNpcGVzPUZhbHNlKQogICAgICAgICBwYXJzZXJfbGF5ZXJpbmRleF9mZXRjaC5hZGRfYXJndW1lbnQoJy1uJywgJy0tc2hvdy1vbmx5JywgaGVscD0nc2hvdyBkZXBlbmRlbmNpZXMgYW5kIGRvIG5vdGhpbmcgZWxzZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgICAgIHBhcnNlcl9sYXllcmluZGV4X2ZldGNoLmFkZF9hcmd1bWVudCgnLWInLCAnLS1icmFuY2gnLCBoZWxwPSdicmFuY2ggbmFtZSB0byBmZXRjaCcpCisgICAgICAgIHBhcnNlcl9sYXllcmluZGV4X2ZldGNoLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1zaGFsbG93JywgaGVscD0nZG8gb25seSBzaGFsbG93IGNsb25lcyAoLS1kZXB0aD0xKScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgICAgIHBhcnNlcl9sYXllcmluZGV4X2ZldGNoLmFkZF9hcmd1bWVudCgnLWknLCAnLS1pZ25vcmUnLCBoZWxwPSdhc3N1bWUgdGhlIHNwZWNpZmllZCBsYXllcnMgZG8gbm90IG5lZWQgdG8gYmUgZmV0Y2hlZC9hZGRlZCAoc2VwYXJhdGUgbXVsdGlwbGUgbGF5ZXJzIHdpdGggY29tbWFzLCBubyBzcGFjZXMpJywgbWV0YXZhcj0nTEFZRVInKQogICAgICAgICBwYXJzZXJfbGF5ZXJpbmRleF9mZXRjaC5hZGRfYXJndW1lbnQoJ2xheWVybmFtZScsIG5hcmdzPScrJywgaGVscD0nbGF5ZXIgdG8gZmV0Y2gnKQogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL3F1ZXJ5LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9xdWVyeS5weQppbmRleCA3ZGI0OWM4Li5lMmNjMzEwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL3F1ZXJ5LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmJsYXllcnMvcXVlcnkucHkKQEAgLTQ2LDcgKzQ2LDcgQEAKIGFyZSBvdmVybGF5ZWQgd2lsbCBhbHNvIGJlIGxpc3RlZCwgd2l0aCBhICIgKHNraXBwZWQpIiBzdWZmaXguCiAiIiIKIAotICAgICAgICBpdGVtc19saXN0ZWQgPSBzZWxmLmxpc3RfcmVjaXBlcygnT3ZlcmxheWVkIHJlY2lwZXMnLCBOb25lLCBUcnVlLCBhcmdzLnNhbWVfdmVyc2lvbiwgYXJncy5maWxlbmFtZXMsIEZhbHNlLCBUcnVlLCBOb25lLCBGYWxzZSwgTm9uZSkKKyAgICAgICAgaXRlbXNfbGlzdGVkID0gc2VsZi5saXN0X3JlY2lwZXMoJ092ZXJsYXllZCByZWNpcGVzJywgTm9uZSwgVHJ1ZSwgYXJncy5zYW1lX3ZlcnNpb24sIGFyZ3MuZmlsZW5hbWVzLCBGYWxzZSwgVHJ1ZSwgTm9uZSwgRmFsc2UsIE5vbmUsIGFyZ3MubWMpCiAKICAgICAgICAgIyBDaGVjayBmb3Igb3ZlcmxheWVkIC5iYmNsYXNzIGZpbGVzCiAgICAgICAgIGNsYXNzZXMgPSBjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdChsaXN0KQpAQCAtMTEyLDkgKzExMiw5IEBACiAgICAgICAgICAgICB0aXRsZSA9ICdNYXRjaGluZyByZWNpcGVzOicKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRpdGxlID0gJ0F2YWlsYWJsZSByZWNpcGVzOicKLSAgICAgICAgc2VsZi5saXN0X3JlY2lwZXModGl0bGUsIGFyZ3MucG5zcGVjLCBGYWxzZSwgRmFsc2UsIGFyZ3MuZmlsZW5hbWVzLCBhcmdzLnJlY2lwZXNfb25seSwgYXJncy5tdWx0aXBsZSwgYXJncy5sYXllciwgYXJncy5iYXJlLCBpbmhlcml0bGlzdCkKKyAgICAgICAgc2VsZi5saXN0X3JlY2lwZXModGl0bGUsIGFyZ3MucG5zcGVjLCBGYWxzZSwgRmFsc2UsIGFyZ3MuZmlsZW5hbWVzLCBhcmdzLnJlY2lwZXNfb25seSwgYXJncy5tdWx0aXBsZSwgYXJncy5sYXllciwgYXJncy5iYXJlLCBpbmhlcml0bGlzdCwgYXJncy5tYykKIAotICAgIGRlZiBsaXN0X3JlY2lwZXMoc2VsZiwgdGl0bGUsIHBuc3BlYywgc2hvd19vdmVybGF5ZWRfb25seSwgc2hvd19zYW1lX3Zlcl9vbmx5LCBzaG93X2ZpbGVuYW1lcywgc2hvd19yZWNpcGVzX29ubHksIHNob3dfbXVsdGlfcHJvdmlkZXJfb25seSwgc2VsZWN0ZWRfbGF5ZXIsIGJhcmUsIGluaGVyaXRzKToKKyAgICBkZWYgbGlzdF9yZWNpcGVzKHNlbGYsIHRpdGxlLCBwbnNwZWMsIHNob3dfb3ZlcmxheWVkX29ubHksIHNob3dfc2FtZV92ZXJfb25seSwgc2hvd19maWxlbmFtZXMsIHNob3dfcmVjaXBlc19vbmx5LCBzaG93X211bHRpX3Byb3ZpZGVyX29ubHksIHNlbGVjdGVkX2xheWVyLCBiYXJlLCBpbmhlcml0cywgbWMpOgogICAgICAgICBpZiBpbmhlcml0czoKICAgICAgICAgICAgIGJicGF0aCA9IHN0cihzZWxmLnRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdCQlBBVEgnKSkKICAgICAgICAgICAgIGZvciBjbGFzc25hbWUgaW4gaW5oZXJpdHM6CkBAIC0xMjMsMTQgKzEyMywxOCBAQAogICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ05vIGNsYXNzIG5hbWVkICVzIGZvdW5kIGluIEJCUEFUSCcsIGNsYXNzZmlsZSkKICAgICAgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKIAotICAgICAgICBwa2dfcG4gPSBzZWxmLnRpbmZvaWwuY29va2VyLnJlY2lwZWNhY2hlc1snJ10ucGtnX3BuCi0gICAgICAgIChsYXRlc3RfdmVyc2lvbnMsIHByZWZlcnJlZF92ZXJzaW9ucykgPSBzZWxmLnRpbmZvaWwuZmluZF9wcm92aWRlcnMoKQotICAgICAgICBhbGxwcm92aWRlcnMgPSBzZWxmLnRpbmZvaWwuZ2V0X2FsbF9wcm92aWRlcnMoKQorICAgICAgICBwa2dfcG4gPSBzZWxmLnRpbmZvaWwuY29va2VyLnJlY2lwZWNhY2hlc1ttY10ucGtnX3BuCisgICAgICAgIChsYXRlc3RfdmVyc2lvbnMsIHByZWZlcnJlZF92ZXJzaW9ucykgPSBzZWxmLnRpbmZvaWwuZmluZF9wcm92aWRlcnMobWMpCisgICAgICAgIGFsbHByb3ZpZGVycyA9IHNlbGYudGluZm9pbC5nZXRfYWxsX3Byb3ZpZGVycyhtYykKIAogICAgICAgICAjIEVuc3VyZSB3ZSBsaXN0IHNraXBwZWQgcmVjaXBlcwogICAgICAgICAjIFdlIGFyZSBsYXJnZWx5IGd1ZXNzaW5nIGFib3V0IFBOLCBQViBhbmQgdGhlIHByZWZlcnJlZCB2ZXJzaW9uIGhlcmUsCiAgICAgICAgICMgYnV0IHdlIGhhdmUgbm8gY2hvaWNlIHNpbmNlIHNraXBwZWQgcmVjaXBlcyBhcmUgbm90IGZ1bGx5IHBhcnNlZAogICAgICAgICBza2lwbGlzdCA9IGxpc3Qoc2VsZi50aW5mb2lsLmNvb2tlci5za2lwbGlzdC5rZXlzKCkpCisgICAgICAgIG1jc3BlYyA9ICdtYzolczonICUgbWMKKyAgICAgICAgaWYgbWM6CisgICAgICAgICAgICBza2lwbGlzdCA9IFtzW2xlbihtY3NwZWMpOl0gZm9yIHMgaW4gc2tpcGxpc3QgaWYgcy5zdGFydHN3aXRoKG1jc3BlYyldCisKICAgICAgICAgZm9yIGZuIGluIHNraXBsaXN0OgogICAgICAgICAgICAgcmVjaXBlX3BhcnRzID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGZuKSlbMF0uc3BsaXQoJ18nKQogICAgICAgICAgICAgcCA9IHJlY2lwZV9wYXJ0c1swXQpAQCAtMTg3LDcgKzE5MSw3IEBACiAgICAgICAgICAgICAgICAgIyBXZSBvbmx5IGRpc3BsYXkgb25jZSBwZXIgcmVjaXBlLCB3ZSBzaG91bGQgcHJlZmVyIG5vbiBleHRlbmRlZCB2ZXJzaW9ucyBvZiB0aGUKICAgICAgICAgICAgICAgICAjIHJlY2lwZSBpZiBwcmVzZW50IChzbyBlLmcuIGluIE9wZW5FbWJlZGRlZCwgb3BlbnNzbCByYXRoZXIgdGhhbiBuYXRpdmVzZGstb3BlbnNzbAogICAgICAgICAgICAgICAgICMgd2hpY2ggd291bGQgb3RoZXJ3aXNlIHNvcnQgZmlyc3QpLgotICAgICAgICAgICAgICAgIGlmIHJlYWxmblsxXSBhbmQgcmVhbGZuWzBdIGluIHNlbGYudGluZm9pbC5jb29rZXIucmVjaXBlY2FjaGVzWycnXS5wa2dfZm46CisgICAgICAgICAgICAgICAgaWYgcmVhbGZuWzFdIGFuZCByZWFsZm5bMF0gaW4gc2VsZi50aW5mb2lsLmNvb2tlci5yZWNpcGVjYWNoZXNbbWNdLnBrZ19mbjoKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgICAgIGlmIGluaGVyaXRzOgpAQCAtNDk2LDYgKzUwMCw3IEBACiAgICAgICAgIHBhcnNlcl9zaG93X292ZXJsYXllZCA9IHNlbGYuYWRkX2NvbW1hbmQoc3AsICdzaG93LW92ZXJsYXllZCcsIHNlbGYuZG9fc2hvd19vdmVybGF5ZWQpCiAgICAgICAgIHBhcnNlcl9zaG93X292ZXJsYXllZC5hZGRfYXJndW1lbnQoJy1mJywgJy0tZmlsZW5hbWVzJywgaGVscD0naW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBmb3JtYXR0aW5nLCBsaXN0IGZpbGVuYW1lcyBvZiBoaWdoZXIgcHJpb3JpdHkgcmVjaXBlcyB3aXRoIHRoZSBvbmVzIHRoZXkgb3ZlcmxheSBpbmRlbnRlZCB1bmRlcm5lYXRoJywgYWN0aW9uPSdzdG9yZV90cnVlJykKICAgICAgICAgcGFyc2VyX3Nob3dfb3ZlcmxheWVkLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1zYW1lLXZlcnNpb24nLCBoZWxwPSdvbmx5IGxpc3Qgb3ZlcmxheWVkIHJlY2lwZXMgd2hlcmUgdGhlIHZlcnNpb24gaXMgdGhlIHNhbWUnLCBhY3Rpb249J3N0b3JlX3RydWUnKQorICAgICAgICBwYXJzZXJfc2hvd19vdmVybGF5ZWQuYWRkX2FyZ3VtZW50KCctLW1jJywgaGVscD0ndXNlIHNwZWNpZmllZCBtdWx0aWNvbmZpZycsIGRlZmF1bHQ9JycpCiAKICAgICAgICAgcGFyc2VyX3Nob3dfcmVjaXBlcyA9IHNlbGYuYWRkX2NvbW1hbmQoc3AsICdzaG93LXJlY2lwZXMnLCBzZWxmLmRvX3Nob3dfcmVjaXBlcykKICAgICAgICAgcGFyc2VyX3Nob3dfcmVjaXBlcy5hZGRfYXJndW1lbnQoJy1mJywgJy0tZmlsZW5hbWVzJywgaGVscD0naW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBmb3JtYXR0aW5nLCBsaXN0IGZpbGVuYW1lcyBvZiBoaWdoZXIgcHJpb3JpdHkgcmVjaXBlcyB3aXRoIHRoZSBvbmVzIHRoZXkgb3ZlcmxheSBpbmRlbnRlZCB1bmRlcm5lYXRoJywgYWN0aW9uPSdzdG9yZV90cnVlJykKQEAgLTUwNCw2ICs1MDksNyBAQAogICAgICAgICBwYXJzZXJfc2hvd19yZWNpcGVzLmFkZF9hcmd1bWVudCgnLWknLCAnLS1pbmhlcml0cycsIGhlbHA9J29ubHkgbGlzdCByZWNpcGVzIHRoYXQgaW5oZXJpdCB0aGUgbmFtZWQgY2xhc3MoZXMpIC0gc2VwYXJhdGUgbXVsdGlwbGUgY2xhc3NlcyB1c2luZyAsICh3aXRob3V0IHNwYWNlcyknLCBtZXRhdmFyPSdDTEFTUycsIGRlZmF1bHQ9JycpCiAgICAgICAgIHBhcnNlcl9zaG93X3JlY2lwZXMuYWRkX2FyZ3VtZW50KCctbCcsICctLWxheWVyJywgaGVscD0nb25seSBsaXN0IHJlY2lwZXMgZnJvbSB0aGUgc2VsZWN0ZWQgbGF5ZXInLCBkZWZhdWx0PScnKQogICAgICAgICBwYXJzZXJfc2hvd19yZWNpcGVzLmFkZF9hcmd1bWVudCgnLWInLCAnLS1iYXJlJywgaGVscD0nb3V0cHV0IGp1c3QgbmFtZXMgd2l0aG91dCB0aGUgIihza2lwcGVkKSIgbWFya2VyJywgYWN0aW9uPSdzdG9yZV90cnVlJykKKyAgICAgICAgcGFyc2VyX3Nob3dfcmVjaXBlcy5hZGRfYXJndW1lbnQoJy0tbWMnLCBoZWxwPSd1c2Ugc3BlY2lmaWVkIG11bHRpY29uZmlnJywgZGVmYXVsdD0nJykKICAgICAgICAgcGFyc2VyX3Nob3dfcmVjaXBlcy5hZGRfYXJndW1lbnQoJ3Buc3BlYycsIG5hcmdzPScqJywgaGVscD0nb3B0aW9uYWwgcmVjaXBlIG5hbWUgc3BlY2lmaWNhdGlvbiAod2lsZGNhcmRzIGFsbG93ZWQsIGVuY2xvc2UgaW4gcXVvdGVzIHRvIGF2b2lkIHNoZWxsIGV4cGFuc2lvbiknKQogCiAgICAgICAgIHBhcnNlcl9zaG93X2FwcGVuZHMgPSBzZWxmLmFkZF9jb21tYW5kKHNwLCAnc2hvdy1hcHBlbmRzJywgc2VsZi5kb19zaG93X2FwcGVuZHMpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JzNC9fX2luaXRfXy5weSBiL3Bva3kvYml0YmFrZS9saWIvYnM0L19faW5pdF9fLnB5CmluZGV4IGY2ZmRmZDUuLmUzNTcyNWIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYnM0L19faW5pdF9fLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYnM0L19faW5pdF9fLnB5CkBAIC00MjcsNyArNDI3LDcgQEAKICAgICAgICAgaWYgc2VsZi5pc194bWw6CiAgICAgICAgICAgICAjIFByaW50IHRoZSBYTUwgZGVjbGFyYXRpb24KICAgICAgICAgICAgIGVuY29kaW5nX3BhcnQgPSAnJwotICAgICAgICAgICAgaWYgZXZlbnR1YWxfZW5jb2RpbmcgIT0gTm9uZToKKyAgICAgICAgICAgIGlmIGV2ZW50dWFsX2VuY29kaW5nIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIGVuY29kaW5nX3BhcnQgPSAnIGVuY29kaW5nPSIlcyInICUgZXZlbnR1YWxfZW5jb2RpbmcKICAgICAgICAgICAgIHByZWZpeCA9ICc8P3htbCB2ZXJzaW9uPSIxLjAiJXM/PlxuJyAlIGVuY29kaW5nX3BhcnQKICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYnM0L2J1aWxkZXIvX2h0bWw1bGliLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iczQvYnVpbGRlci9faHRtbDVsaWIucHkKaW5kZXggMmI3YTcwYS4uOWU5MjE2ZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iczQvYnVpbGRlci9faHRtbDVsaWIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iczQvYnVpbGRlci9faHRtbDVsaWIucHkKQEAgLTIsNyArMiw2IEBACiAgICAgJ0hUTUw1VHJlZUJ1aWxkZXInLAogICAgIF0KIAotZnJvbSBwZGIgaW1wb3J0IHNldF90cmFjZQogaW1wb3J0IHdhcm5pbmdzCiBmcm9tIGJzNC5idWlsZGVyIGltcG9ydCAoCiAgICAgUEVSTUlTU0lWRSwKQEAgLTMyMiw3ICszMjEsNyBAQAogICAgICAgICByZXR1cm4gc2VsZi5lbGVtZW50LmNvbnRlbnRzCiAKICAgICBkZWYgZ2V0TmFtZVR1cGxlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLm5hbWVzcGFjZSA9PSBOb25lOgorICAgICAgICBpZiBzZWxmLm5hbWVzcGFjZSBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIG5hbWVzcGFjZXNbImh0bWwiXSwgc2VsZi5uYW1lCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5uYW1lc3BhY2UsIHNlbGYubmFtZQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iczQvZGFtbWl0LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iczQvZGFtbWl0LnB5CmluZGV4IDgwNWFhOTAuLjdhZDllMGQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYnM0L2RhbW1pdC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JzNC9kYW1taXQucHkKQEAgLTgsMTIgKzgsMTAgQEAKICIiIgogX19saWNlbnNlX18gPSAiTUlUIgogCi1mcm9tIHBkYiBpbXBvcnQgc2V0X3RyYWNlCiBpbXBvcnQgY29kZWNzCiBmcm9tIGh0bWwuZW50aXRpZXMgaW1wb3J0IGNvZGVwb2ludDJuYW1lCiBpbXBvcnQgcmUKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgc3RyaW5nCiAKICMgSW1wb3J0IGEgbGlicmFyeSB0byBhdXRvZGV0ZWN0IGNoYXJhY3RlciBlbmNvZGluZ3MuCiBjaGFyZGV0X3R5cGUgPSBOb25lCkBAIC0zOCwxMiArMzYsNiBAQAogICAgICAgICBkZWYgY2hhcmRldF9kYW1taXQocyk6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCi0jIEF2YWlsYWJsZSBmcm9tIGh0dHA6Ly9jamtweXRob24uaTE4bi5vcmcvLgotdHJ5OgotICAgIGltcG9ydCBpY29udl9jb2RlYwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKLQogeG1sX2VuY29kaW5nX3JlID0gcmUuY29tcGlsZSgKICAgICByJ148XD8uKmVuY29kaW5nPVtcJyJdKC4qPylbXCciXS4qXD8+Jy5lbmNvZGUoKSwgcmUuSSkKIGh0bWxfbWV0YV9yZSA9IHJlLmNvbXBpbGUoCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JzNC9lbGVtZW50LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iczQvZWxlbWVudC5weQppbmRleCAzNzc1YTYwLi42OGJlNDJkIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JzNC9lbGVtZW50LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYnM0L2VsZW1lbnQucHkKQEAgLTEsNiArMSw1IEBACiBfX2xpY2Vuc2VfXyA9ICJNSVQiCiAKLWZyb20gcGRiIGltcG9ydCBzZXRfdHJhY2UKIGltcG9ydCBjb2xsZWN0aW9ucy5hYmMKIGltcG9ydCByZQogaW1wb3J0IHN5cwpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdGluZy5weSBiL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RpbmcucHkKaW5kZXggM2EyZjI2MC4uOTUzYmNhOCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdGluZy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0aW5nLnB5CkBAIC00LDcgKzQsNiBAQAogCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgY29weQotaW1wb3J0IGZ1bmN0b29scwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQogZnJvbSBiczQgaW1wb3J0IEJlYXV0aWZ1bFNvdXAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfZG9jcy5weSBiL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfZG9jcy5weQppbmRleCA1YjlmNjc3Li5kMWQ3NmEzIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X2RvY3MucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF9kb2NzLnB5CkBAIC03LDE5ICs3LDE1IEBACiAgICAgJ2FkZGl0aW9uYWxfdGVzdHMnLAogICAgIF0KIAotaW1wb3J0IGF0ZXhpdAogaW1wb3J0IGRvY3Rlc3QKLWltcG9ydCBvcwogI2Zyb20gcGtnX3Jlc291cmNlcyBpbXBvcnQgKAogIyAgICByZXNvdXJjZV9maWxlbmFtZSwgcmVzb3VyY2VfZXhpc3RzLCByZXNvdXJjZV9saXN0ZGlyLCBjbGVhbnVwX3Jlc291cmNlcykKLWltcG9ydCB1bml0dGVzdAogCiBET0NURVNUX0ZMQUdTID0gKAogICAgIGRvY3Rlc3QuRUxMSVBTSVMgfAogICAgIGRvY3Rlc3QuTk9STUFMSVpFX1dISVRFU1BBQ0UgfAogICAgIGRvY3Rlc3QuUkVQT1JUX05ESUZGKQogCi0KICMgZGVmIGFkZGl0aW9uYWxfdGVzdHMoKToKICMgICAgICJSdW4gdGhlIGRvYyB0ZXN0cyAoUkVBRE1FLnR4dCBhbmQgZG9jcy8qLCBpZiBhbnkgZXhpc3QpIgogIyAgICAgZG9jdGVzdF9maWxlcyA9IFsKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfaHRtbHBhcnNlci5weSBiL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfaHRtbHBhcnNlci5weQppbmRleCBiNDVlMzVmLi4zMGEyNWU2IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X2h0bWxwYXJzZXIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF9odG1scGFyc2VyLnB5CkBAIC0xLDcgKzEsNiBAQAogIiIiVGVzdHMgdG8gZW5zdXJlIHRoYXQgdGhlIGh0bWwucGFyc2VyIHRyZWUgYnVpbGRlciBnZW5lcmF0ZXMgZ29vZAogdHJlZXMuIiIiCiAKLWZyb20gcGRiIGltcG9ydCBzZXRfdHJhY2UKIGltcG9ydCBwaWNrbGUKIGZyb20gYnM0LnRlc3RpbmcgaW1wb3J0IFNvdXBUZXN0LCBIVE1MVHJlZUJ1aWxkZXJTbW9rZVRlc3QKIGZyb20gYnM0LmJ1aWxkZXIgaW1wb3J0IEhUTUxQYXJzZXJUcmVlQnVpbGRlcgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF9seG1sLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF9seG1sLnB5CmluZGV4IDZjMmExZDcuLjZiNmNkZDAgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfbHhtbC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X2x4bWwucHkKQEAgLTEsNiArMSw1IEBACiAiIiJUZXN0cyB0byBlbnN1cmUgdGhhdCB0aGUgbHhtbCB0cmVlIGJ1aWxkZXIgZ2VuZXJhdGVzIGdvb2QgdHJlZXMuIiIiCiAKLWltcG9ydCByZQogaW1wb3J0IHdhcm5pbmdzCiAKIHRyeToKQEAgLTE0LDEzICsxMyw4IEBACiBpZiBMWE1MX1BSRVNFTlQ6CiAgICAgZnJvbSBiczQuYnVpbGRlciBpbXBvcnQgTFhNTFRyZWVCdWlsZGVyLCBMWE1MVHJlZUJ1aWxkZXJGb3JYTUwKIAotZnJvbSBiczQgaW1wb3J0ICgKLSAgICBCZWF1dGlmdWxTb3VwLAotICAgIEJlYXV0aWZ1bFN0b25lU291cCwKLSAgICApCi1mcm9tIGJzNC5lbGVtZW50IGltcG9ydCBDb21tZW50LCBEb2N0eXBlLCBTb3VwU3RyYWluZXIKK2Zyb20gYnM0IGltcG9ydCBCZWF1dGlmdWxTdG9uZVNvdXAKIGZyb20gYnM0LnRlc3RpbmcgaW1wb3J0IHNraXBJZgotZnJvbSBiczQudGVzdHMgaW1wb3J0IHRlc3RfaHRtbHBhcnNlcgogZnJvbSBiczQudGVzdGluZyBpbXBvcnQgKAogICAgIEhUTUxUcmVlQnVpbGRlclNtb2tlVGVzdCwKICAgICBYTUxUcmVlQnVpbGRlclNtb2tlVGVzdCwKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3Rfc291cC5weSBiL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3Rfc291cC5weQppbmRleCBmODc5NDllLi42YWQzY2IzIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X3NvdXAucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF9zb3VwLnB5CkBAIC0xLDE2ICsxLDEyIEBACiAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQogIiIiVGVzdHMgb2YgQmVhdXRpZnVsIFNvdXAgYXMgYSB3aG9sZS4iIiIKIAotZnJvbSBwZGIgaW1wb3J0IHNldF90cmFjZQogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCiAKLWZyb20gYnM0IGltcG9ydCAoCi0gICAgQmVhdXRpZnVsU291cCwKLSAgICBCZWF1dGlmdWxTdG9uZVNvdXAsCi0pCitmcm9tIGJzNCBpbXBvcnQgQmVhdXRpZnVsU291cAogZnJvbSBiczQuZWxlbWVudCBpbXBvcnQgKAogICAgIENoYXJzZXRNZXRhQXR0cmlidXRlVmFsdWUsCiAgICAgQ29udGVudE1ldGFBdHRyaWJ1dGVWYWx1ZSwKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfdHJlZS5weSBiL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfdHJlZS5weQppbmRleCA2ZDNlNjdmLi44ZTVjNjY0IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X3RyZWUucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF90cmVlLnB5CkBAIC05LDE2ICs5LDEyIEBACiBtZXRob2RzIHRlc3RlZCBoZXJlLgogIiIiCiAKLWZyb20gcGRiIGltcG9ydCBzZXRfdHJhY2UKIGltcG9ydCBjb3B5CiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgcmUKIGltcG9ydCB3YXJuaW5ncwogZnJvbSBiczQgaW1wb3J0IEJlYXV0aWZ1bFNvdXAKLWZyb20gYnM0LmJ1aWxkZXIgaW1wb3J0ICgKLSAgICBidWlsZGVyX3JlZ2lzdHJ5LAotICAgIEhUTUxQYXJzZXJUcmVlQnVpbGRlciwKLSkKK2Zyb20gYnM0LmJ1aWxkZXIgaW1wb3J0IGJ1aWxkZXJfcmVnaXN0cnkKIGZyb20gYnM0LmVsZW1lbnQgaW1wb3J0ICgKICAgICBQWTNLLAogICAgIENEYXRhLApAQCAtMjksMTAgKzI1LDcgQEAKICAgICBTb3VwU3RyYWluZXIsCiAgICAgVGFnLAogKQotZnJvbSBiczQudGVzdGluZyBpbXBvcnQgKAotICAgIFNvdXBUZXN0LAotICAgIHNraXBJZiwKLSkKK2Zyb20gYnM0LnRlc3RpbmcgaW1wb3J0IFNvdXBUZXN0CiAKIFhNTF9CVUlMREVSX1BSRVNFTlQgPSAoYnVpbGRlcl9yZWdpc3RyeS5sb29rdXAoInhtbCIpIGlzIG5vdCBOb25lKQogTFhNTF9QUkVTRU5UID0gKGJ1aWxkZXJfcmVnaXN0cnkubG9va3VwKCJseG1sIikgaXMgbm90IE5vbmUpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2hhc2hzZXJ2L2NsaWVudC5weSBiL3Bva3kvYml0YmFrZS9saWIvaGFzaHNlcnYvY2xpZW50LnB5CmluZGV4IGY2NTk1NjYuLjQ2MDg1ZDYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvaGFzaHNlcnYvY2xpZW50LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvaGFzaHNlcnYvY2xpZW50LnB5CkBAIC0zLDcgKzMsNiBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gY29udGV4dGxpYiBpbXBvcnQgY2xvc2luZwogaW1wb3J0IGpzb24KIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgc29ja2V0CkBAIC0xNDgsNiArMTQ3LDE0IEBACiAgICAgICAgIG1bJ3VuaWhhc2gnXSA9IHVuaWhhc2gKICAgICAgICAgcmV0dXJuIHNlbGYuc2VuZF9tZXNzYWdlKHsncmVwb3J0JzogbX0pCiAKKyAgICBkZWYgcmVwb3J0X3VuaWhhc2hfZXF1aXYoc2VsZiwgdGFza2hhc2gsIG1ldGhvZCwgdW5paGFzaCwgZXh0cmE9e30pOgorICAgICAgICBzZWxmLl9zZXRfbW9kZShzZWxmLk1PREVfTk9STUFMKQorICAgICAgICBtID0gZXh0cmEuY29weSgpCisgICAgICAgIG1bJ3Rhc2toYXNoJ10gPSB0YXNraGFzaAorICAgICAgICBtWydtZXRob2QnXSA9IG1ldGhvZAorICAgICAgICBtWyd1bmloYXNoJ10gPSB1bmloYXNoCisgICAgICAgIHJldHVybiBzZWxmLnNlbmRfbWVzc2FnZSh7J3JlcG9ydC1lcXVpdic6IG19KQorCiAgICAgZGVmIGdldF9zdGF0cyhzZWxmKToKICAgICAgICAgc2VsZi5fc2V0X21vZGUoc2VsZi5NT0RFX05PUk1BTCkKICAgICAgICAgcmV0dXJuIHNlbGYuc2VuZF9tZXNzYWdlKHsnZ2V0LXN0YXRzJzogTm9uZX0pCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2hhc2hzZXJ2L3NlcnZlci5weSBiL3Bva3kvYml0YmFrZS9saWIvaGFzaHNlcnYvc2VydmVyLnB5CmluZGV4IDBhZmY3NzYuLmNjN2U0ODIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvaGFzaHNlcnYvc2VydmVyLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvaGFzaHNlcnYvc2VydmVyLnB5CkBAIC0xNDMsNiArMTQzLDcgQEAKICAgICAgICAgICAgIGhhbmRsZXJzID0gewogICAgICAgICAgICAgICAgICdnZXQnOiBzZWxmLmhhbmRsZV9nZXQsCiAgICAgICAgICAgICAgICAgJ3JlcG9ydCc6IHNlbGYuaGFuZGxlX3JlcG9ydCwKKyAgICAgICAgICAgICAgICAncmVwb3J0LWVxdWl2Jzogc2VsZi5oYW5kbGVfZXF1aXZyZXBvcnQsCiAgICAgICAgICAgICAgICAgJ2dldC1zdHJlYW0nOiBzZWxmLmhhbmRsZV9nZXRfc3RyZWFtLAogICAgICAgICAgICAgICAgICdnZXQtc3RhdHMnOiBzZWxmLmhhbmRsZV9nZXRfc3RhdHMsCiAgICAgICAgICAgICAgICAgJ3Jlc2V0LXN0YXRzJzogc2VsZi5oYW5kbGVfcmVzZXRfc3RhdHMsCkBAIC0zMDMsNiArMzA0LDQxIEBACiAKICAgICAgICAgc2VsZi53cml0ZV9tZXNzYWdlKGQpCiAKKyAgICBhc3luYyBkZWYgaGFuZGxlX2VxdWl2cmVwb3J0KHNlbGYsIGRhdGEpOgorICAgICAgICB3aXRoIGNsb3Npbmcoc2VsZi5kYi5jdXJzb3IoKSkgYXMgY3Vyc29yOgorICAgICAgICAgICAgaW5zZXJ0X2RhdGEgPSB7CisgICAgICAgICAgICAgICAgJ21ldGhvZCc6IGRhdGFbJ21ldGhvZCddLAorICAgICAgICAgICAgICAgICdvdXRoYXNoJzogIiIsCisgICAgICAgICAgICAgICAgJ3Rhc2toYXNoJzogZGF0YVsndGFza2hhc2gnXSwKKyAgICAgICAgICAgICAgICAndW5paGFzaCc6IGRhdGFbJ3VuaWhhc2gnXSwKKyAgICAgICAgICAgICAgICAnY3JlYXRlZCc6IGRhdGV0aW1lLm5vdygpCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciBrIGluICgnb3duZXInLCAnUE4nLCAnUFYnLCAnUFInLCAndGFzaycsICdvdXRoYXNoX3NpZ2luZm8nKToKKyAgICAgICAgICAgICAgICBpZiBrIGluIGRhdGE6CisgICAgICAgICAgICAgICAgICAgIGluc2VydF9kYXRhW2tdID0gZGF0YVtrXQorCisgICAgICAgICAgICBjdXJzb3IuZXhlY3V0ZSgnJydJTlNFUlQgT1IgSUdOT1JFIElOVE8gdGFza3NfdjIgKCVzKSBWQUxVRVMgKCVzKScnJyAlICgKKyAgICAgICAgICAgICAgICAnLCAnLmpvaW4oc29ydGVkKGluc2VydF9kYXRhLmtleXMoKSkpLAorICAgICAgICAgICAgICAgICcsICcuam9pbignOicgKyBrIGZvciBrIGluIHNvcnRlZChpbnNlcnRfZGF0YS5rZXlzKCkpKSksCisgICAgICAgICAgICAgICAgaW5zZXJ0X2RhdGEpCisKKyAgICAgICAgICAgIHNlbGYuZGIuY29tbWl0KCkKKworICAgICAgICAgICAgIyBGZXRjaCB0aGUgdW5paGFzaCB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgZm9yIHRoZSB0YXNraGFzaC4gSWYgdGhlCisgICAgICAgICAgICAjIHVuaWhhc2ggbWF0Y2hlcywgaXQgbWVhbnMgdGhpcyByb3cgd2FzIGluc2VydGVkIChvciB0aGUgbWFwcGluZworICAgICAgICAgICAgIyB3YXMgYWxyZWFkeSB2YWxpZCkKKyAgICAgICAgICAgIHJvdyA9IHNlbGYucXVlcnlfZXF1aXZhbGVudChkYXRhWydtZXRob2QnXSwgZGF0YVsndGFza2hhc2gnXSkKKworICAgICAgICAgICAgaWYgcm93Wyd1bmloYXNoJ10gPT0gZGF0YVsndW5paGFzaCddOgorICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdBZGRpbmcgdGFza2hhc2ggZXF1aXZhbGVuY2UgZm9yICVzIHdpdGggdW5paGFzaCAlcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbJ3Rhc2toYXNoJ10sIHJvd1sndW5paGFzaCddKQorCisgICAgICAgICAgICBkID0ge2s6IHJvd1trXSBmb3IgayBpbiAoJ3Rhc2toYXNoJywgJ21ldGhvZCcsICd1bmloYXNoJyl9CisKKyAgICAgICAgc2VsZi53cml0ZV9tZXNzYWdlKGQpCisKKwogICAgIGFzeW5jIGRlZiBoYW5kbGVfZ2V0X3N0YXRzKHNlbGYsIHJlcXVlc3QpOgogICAgICAgICBkID0gewogICAgICAgICAgICAgJ3JlcXVlc3RzJzogc2VsZi5yZXF1ZXN0X3N0YXRzLnRvZGljdCgpLApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL2Nvb2tlci5weSBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi9jb29rZXIucHkKaW5kZXggNjA0YTk2MS4uNjViMjNkMCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL2Nvb2tlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvY29va2VyLnB5CkBAIC00LDkgKzQsOCBAQAogIwogCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IGpzb24KIAotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QsIGRlZmF1bHRkaWN0Citmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAogCiBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdW5xdW90ZSwgdXJscGFyc2UKIApAQCAtOTQsNyArOTMsNyBAQAogICAgICAgICAgICAgcmV0dXJuIGluZGV4CiAKICAgICAgICAgY29sbGVjdGlvbnMgPSBkLmdldFZhcignQkJGSUxFX0NPTExFQ1RJT05TJykKLSAgICAgICAgbGF5ZXJjb25mcyA9IGQudmFyaGlzdG9yeS5nZXRfdmFyaWFibGVfaXRlbXNfZmlsZXMoJ0JCRklMRV9DT0xMRUNUSU9OUycsIGQpCisgICAgICAgIGxheWVyY29uZnMgPSBkLnZhcmhpc3RvcnkuZ2V0X3ZhcmlhYmxlX2l0ZW1zX2ZpbGVzKCdCQkZJTEVfQ09MTEVDVElPTlMnKQogICAgICAgICBiYmZpbGVfY29sbGVjdGlvbnMgPSB7bGF5ZXI6IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUocGF0aCkpIGZvciBsYXllciwgcGF0aCBpbiBsYXllcmNvbmZzLml0ZW1zKCl9CiAKICAgICAgICAgKF8sIGJiX2JyYW5jaCwgXywgXykgPSBzZWxmLl9nZXRfYml0YmFrZV9pbmZvKCkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi9wbHVnaW4ucHkgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvcGx1Z2luLnB5CmluZGV4IDcwMTVhMWEuLmNhZGRhMzYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi9wbHVnaW4ucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3BsdWdpbi5weQpAQCAtNywxMCArNyw3IEBACiAjICAgUGx1Z2luIGJhc2UgY2xhc3MKICMgICBVdGlsaXR5IEZ1bmN0aW9ucyBmb3Igd29ya2luZyBvbiBsYXllcmluZGV4IGRhdGEKIAotaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBvcnQgYmIubXNnCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdCaXRCYWtlLmxheWVyaW5kZXhsaWIucGx1Z2luJykKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL2Nvb2tlci5weSBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy9jb29rZXIucHkKaW5kZXggMWZhMTAyZS4uMWQwNjg1ZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL2Nvb2tlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvY29va2VyLnB5CkBAIC0zLDE1ICszLDEyIEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBvcwogaW1wb3J0IGJiCiAKIGltcG9ydCBsYXllcmluZGV4bGliCiBmcm9tIGxheWVyaW5kZXhsaWIudGVzdHMuY29tbW9uIGltcG9ydCBMYXllcnNUZXN0CiAKLWltcG9ydCBsb2dnaW5nCiAKIGNsYXNzIExheWVySW5kZXhDb29rZXJUZXN0KExheWVyc1Rlc3QpOgogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvbGF5ZXJpbmRleG9iai5weSBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy9sYXllcmluZGV4b2JqLnB5CmluZGV4IDBjNWVjODguLmRlMWU0NzQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy9sYXllcmluZGV4b2JqLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy9sYXllcmluZGV4b2JqLnB5CkBAIC0zLDE0ICszLDggQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IG9zCi1pbXBvcnQgYmIKLQogZnJvbSBsYXllcmluZGV4bGliLnRlc3RzLmNvbW1vbiBpbXBvcnQgTGF5ZXJzVGVzdAogCi1pbXBvcnQgbG9nZ2luZwogCiBjbGFzcyBMYXllckluZGV4T2JqZWN0c1Rlc3QoTGF5ZXJzVGVzdCk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL3Jlc3RhcGkucHkgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvcmVzdGFwaS5weQppbmRleCA2ZDhkYzAwLi5lNWNjYWZlIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvcmVzdGFwaS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvcmVzdGFwaS5weQpAQCAtNCwxNCArNCwxMSBAQAogIwogCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IG9zCi1pbXBvcnQgYmIKIAogaW1wb3J0IGxheWVyaW5kZXhsaWIKIGZyb20gbGF5ZXJpbmRleGxpYi50ZXN0cy5jb21tb24gaW1wb3J0IExheWVyc1Rlc3QKIAotaW1wb3J0IGxvZ2dpbmcKIAogZGVmIHNraXBJZk5vTmV0d29yaygpOgogICAgIGlmIG9zLmVudmlyb24uZ2V0KCJCQl9TS0lQX05FVFRFU1RTIikgPT0gInllcyI6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3BseS95YWNjLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9wbHkveWFjYy5weQppbmRleCBkNTA4ODZlLi41NjE3ODRmIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3BseS95YWNjLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvcGx5L3lhY2MucHkKQEAgLTQ4OCw3ICs0ODgsNyBAQAogICAgICAgICAgICAgICAgICAgICAjIC0tISBERUJVRwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKLSAgICAgICAgICAgIGlmIHQgPT0gTm9uZToKKyAgICAgICAgICAgIGlmIHQgaXMgTm9uZToKIAogICAgICAgICAgICAgICAgICMgLS0hIERFQlVHCiAgICAgICAgICAgICAgICAgZGVidWcuZXJyb3IoJ0Vycm9yICA6ICVzJywKQEAgLTc2Niw3ICs3NjYsNyBAQAogICAgICAgICAgICAgICAgICAgICBuID0gc3ltc3RhY2tbLTFdCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKG4sInZhbHVlIixOb25lKQogCi0gICAgICAgICAgICBpZiB0ID09IE5vbmU6CisgICAgICAgICAgICBpZiB0IGlzIE5vbmU6CiAKICAgICAgICAgICAgICAgICAjIFdlIGhhdmUgc29tZSBraW5kIG9mIHBhcnNpbmcgZXJyb3IgaGVyZS4gIFRvIGhhbmRsZQogICAgICAgICAgICAgICAgICMgdGhpcywgd2UgYXJlIGdvaW5nIHRvIHB1c2ggdGhlIGN1cnJlbnQgdG9rZW4gb250bwpAQCAtMTAyMSw3ICsxMDIxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgbiA9IHN5bXN0YWNrWy0xXQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihuLCJ2YWx1ZSIsTm9uZSkKIAotICAgICAgICAgICAgaWYgdCA9PSBOb25lOgorICAgICAgICAgICAgaWYgdCBpcyBOb25lOgogCiAgICAgICAgICAgICAgICAgIyBXZSBoYXZlIHNvbWUga2luZCBvZiBwYXJzaW5nIGVycm9yIGhlcmUuICBUbyBoYW5kbGUKICAgICAgICAgICAgICAgICAjIHRoaXMsIHdlIGFyZSBnb2luZyB0byBwdXNoIHRoZSBjdXJyZW50IHRva2VuIG9udG8KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvcHJzZXJ2L2RiLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9wcnNlcnYvZGIucHkKaW5kZXggMTE3ZDhjMC4uY2IyYTI0NiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9wcnNlcnYvZGIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9wcnNlcnYvZGIucHkKQEAgLTcxLDcgKzcxLDcgQEAKICAgICAgICAgZGF0YT1zZWxmLl9leGVjdXRlKCJTRUxFQ1QgdmFsdWUgRlJPTSAlcyBXSEVSRSB2ZXJzaW9uPT8gQU5EIHBrZ2FyY2g9PyBBTkQgY2hlY2tzdW09PzsiICUgc2VsZi50YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uLCBwa2dhcmNoLCBjaGVja3N1bSkpCiAgICAgICAgIHJvdz1kYXRhLmZldGNob25lKCkKLSAgICAgICAgaWYgcm93ICE9IE5vbmU6CisgICAgICAgIGlmIHJvdyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJldHVybiByb3dbMF0KICAgICAgICAgZWxzZToKICAgICAgICAgICAgICNubyB2YWx1ZSBmb3VuZCwgdHJ5IHRvIGluc2VydApAQCAtODcsNyArODcsNyBAQAogICAgICAgICAgICAgZGF0YT1zZWxmLl9leGVjdXRlKCJTRUxFQ1QgdmFsdWUgRlJPTSAlcyBXSEVSRSB2ZXJzaW9uPT8gQU5EIHBrZ2FyY2g9PyBBTkQgY2hlY2tzdW09PzsiICUgc2VsZi50YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyc2lvbiwgcGtnYXJjaCwgY2hlY2tzdW0pKQogICAgICAgICAgICAgcm93PWRhdGEuZmV0Y2hvbmUoKQotICAgICAgICAgICAgaWYgcm93ICE9IE5vbmU6CisgICAgICAgICAgICBpZiByb3cgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJvd1swXQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZSBwcnNlcnYuTm90Rm91bmRFcnJvcgpAQCAtOTksNyArOTksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNlbGYudGFibGUsIHNlbGYudGFibGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uLCBwa2dhcmNoLCBjaGVja3N1bSwgdmVyc2lvbiwgcGtnYXJjaCkpCiAgICAgICAgIHJvdz1kYXRhLmZldGNob25lKCkKLSAgICAgICAgaWYgcm93ICE9IE5vbmU6CisgICAgICAgIGlmIHJvdyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJldHVybiByb3dbMF0KICAgICAgICAgZWxzZToKICAgICAgICAgICAgICNubyB2YWx1ZSBmb3VuZCwgdHJ5IHRvIGluc2VydApAQCAtMTE2LDcgKzExNiw3IEBACiAgICAgICAgICAgICBkYXRhPXNlbGYuX2V4ZWN1dGUoIlNFTEVDVCB2YWx1ZSBGUk9NICVzIFdIRVJFIHZlcnNpb249PyBBTkQgcGtnYXJjaD0/IEFORCBjaGVja3N1bT0/OyIgJSBzZWxmLnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uLCBwa2dhcmNoLCBjaGVja3N1bSkpCiAgICAgICAgICAgICByb3c9ZGF0YS5mZXRjaG9uZSgpCi0gICAgICAgICAgICBpZiByb3cgIT0gTm9uZToKKyAgICAgICAgICAgIGlmIHJvdyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByZXR1cm4gcm93WzBdCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlIHByc2Vydi5Ob3RGb3VuZEVycm9yCkBAIC0xMzIsNyArMTMyLDcgQEAKICAgICAgICAgZGF0YSA9IHNlbGYuX2V4ZWN1dGUoIlNFTEVDVCB2YWx1ZSBGUk9NICVzIFdIRVJFIHZlcnNpb249PyBBTkQgcGtnYXJjaD0/IEFORCBjaGVja3N1bT0/OyIgJSBzZWxmLnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlcnNpb24sIHBrZ2FyY2gsIGNoZWNrc3VtKSkKICAgICAgICAgcm93ID0gZGF0YS5mZXRjaG9uZSgpCi0gICAgICAgIGlmIHJvdyAhPSBOb25lOgorICAgICAgICBpZiByb3cgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICB2YWw9cm93WzBdCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjbm8gdmFsdWUgZm91bmQsIHRyeSB0byBpbnNlcnQKQEAgLTE0Nyw3ICsxNDcsNyBAQAogICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2V4ZWN1dGUoIlNFTEVDVCB2YWx1ZSBGUk9NICVzIFdIRVJFIHZlcnNpb249PyBBTkQgcGtnYXJjaD0/IEFORCBjaGVja3N1bT0/OyIgJSBzZWxmLnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlcnNpb24sIHBrZ2FyY2gsIGNoZWNrc3VtKSkKICAgICAgICAgICAgIHJvdyA9IGRhdGEuZmV0Y2hvbmUoKQotICAgICAgICAgICAgaWYgcm93ICE9IE5vbmU6CisgICAgICAgICAgICBpZiByb3cgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdmFsID0gcm93WzBdCiAgICAgICAgIHJldHVybiB2YWwKIApAQCAtMTcwLDcgKzE3MCw3IEBACiAgICAgICAgIGRhdGEgPSBzZWxmLl9leGVjdXRlKCJTRUxFQ1QgdmFsdWUgRlJPTSAlcyBXSEVSRSB2ZXJzaW9uPT8gQU5EIHBrZ2FyY2g9PyBBTkQgY2hlY2tzdW09PyBBTkQgdmFsdWU+PT87IiAlIHNlbGYudGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlcnNpb24scGtnYXJjaCxjaGVja3N1bSx2YWx1ZSkpCiAgICAgICAgIHJvdz1kYXRhLmZldGNob25lKCkKLSAgICAgICAgaWYgcm93ICE9IE5vbmU6CisgICAgICAgIGlmIHJvdyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJldHVybiByb3dbMF0KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3Byc2Vydi9zZXJ2LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9wcnNlcnYvc2Vydi5weQppbmRleCBiODU0YmExLi4yNWRjZjhhIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3Byc2Vydi9zZXJ2LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvcHJzZXJ2L3NlcnYucHkKQEAgLTI5MiwxMCArMjkyLDkgQEAKICAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoc3RyZWFtaGFuZGxlcikKIAogICAgICAgICAjIHdyaXRlIHBpZGZpbGUKLSAgICAgICAgcGlkID0gc3RyKG9zLmdldHBpZCgpKSAKLSAgICAgICAgcGYgPSBvcGVuKHNlbGYucGlkZmlsZSwgJ3cnKQotICAgICAgICBwZi53cml0ZSgiJXNcbiIgJSBwaWQpCi0gICAgICAgIHBmLmNsb3NlKCkKKyAgICAgICAgcGlkID0gc3RyKG9zLmdldHBpZCgpKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5waWRmaWxlLCAndycpIGFzIHBmOgorICAgICAgICAgICAgcGYud3JpdGUoIiVzXG4iICUgcGlkKQogCiAgICAgICAgIHNlbGYud29ya19mb3JldmVyKCkKICAgICAgICAgc2VsZi5kZWxwaWQoKQpAQCAtMzUzLDkgKzM1Miw4IEBACiAgICAgaXAgPSBzb2NrZXQuZ2V0aG9zdGJ5bmFtZShob3N0KQogICAgIHBpZGZpbGUgPSBQSURQUkVGSVggJSAoaXAsIHBvcnQpCiAgICAgdHJ5OgotICAgICAgICBwZiA9IG9wZW4ocGlkZmlsZSwncicpCi0gICAgICAgIHBpZCA9IGludChwZi5yZWFkbGluZSgpLnN0cmlwKCkpCi0gICAgICAgIHBmLmNsb3NlKCkKKyAgICAgICAgd2l0aCBvcGVuKHBpZGZpbGUpIGFzIHBmOgorICAgICAgICAgICAgcGlkID0gaW50KHBmLnJlYWRsaW5lKCkuc3RyaXAoKSkKICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgcGlkID0gTm9uZQogCkBAIC00NDksMjkgKzQ0NywzNSBAQAogZGVmIGF1dG9fc3RhcnQoZCk6CiAgICAgZ2xvYmFsIHNpbmdsZXRvbgogCi0gICAgIyBTaHV0ZG93biBhbnkgZXhpc3RpbmcgUFIgU2VydmVyCi0gICAgYXV0b19zaHV0ZG93bigpCi0KICAgICBob3N0X3BhcmFtcyA9IGxpc3QoZmlsdGVyKE5vbmUsIChkLmdldFZhcignUFJTRVJWX0hPU1QnKSBvciAnJykuc3BsaXQoJzonKSkpCiAgICAgaWYgbm90IGhvc3RfcGFyYW1zOgorICAgICAgICAjIFNodXRkb3duIGFueSBleGlzdGluZyBQUiBTZXJ2ZXIKKyAgICAgICAgYXV0b19zaHV0ZG93bigpCiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBpZiBsZW4oaG9zdF9wYXJhbXMpICE9IDI6CisgICAgICAgICMgU2h1dGRvd24gYW55IGV4aXN0aW5nIFBSIFNlcnZlcgorICAgICAgICBhdXRvX3NodXRkb3duKCkKICAgICAgICAgbG9nZ2VyLmNyaXRpY2FsKCdcbicuam9pbihbJ1BSU0VSVl9IT1NUOiBpbmNvcnJlY3QgZm9ybWF0JywKICAgICAgICAgICAgICAgICAnVXNhZ2U6IFBSU0VSVl9IT1NUID0gIjxob3N0bmFtZT46PHBvcnQ+IiddKSkKICAgICAgICAgcmFpc2UgUFJTZXJ2aWNlQ29uZmlnRXJyb3IKIAotICAgIGlmIGlzX2xvY2FsX3NwZWNpYWwoaG9zdF9wYXJhbXNbMF0sIGludChob3N0X3BhcmFtc1sxXSkpIGFuZCBub3Qgc2luZ2xldG9uOgorICAgIGlmIGlzX2xvY2FsX3NwZWNpYWwoaG9zdF9wYXJhbXNbMF0sIGludChob3N0X3BhcmFtc1sxXSkpOgogICAgICAgICBpbXBvcnQgYmIudXRpbHMKICAgICAgICAgY2FjaGVkaXIgPSAoZC5nZXRWYXIoIlBFUlNJU1RFTlRfRElSIikgb3IgZC5nZXRWYXIoIkNBQ0hFIikpCiAgICAgICAgIGlmIG5vdCBjYWNoZWRpcjoKICAgICAgICAgICAgIGxvZ2dlci5jcml0aWNhbCgiUGxlYXNlIHNldCB0aGUgJ1BFUlNJU1RFTlRfRElSJyBvciAnQ0FDSEUnIHZhcmlhYmxlIikKICAgICAgICAgICAgIHJhaXNlIFBSU2VydmljZUNvbmZpZ0Vycm9yCi0gICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihjYWNoZWRpcikKICAgICAgICAgZGJmaWxlID0gb3MucGF0aC5qb2luKGNhY2hlZGlyLCAicHJzZXJ2LnNxbGl0ZTMiKQogICAgICAgICBsb2dmaWxlID0gb3MucGF0aC5qb2luKGNhY2hlZGlyLCAicHJzZXJ2LmxvZyIpCi0gICAgICAgIHNpbmdsZXRvbiA9IFBSU2VydlNpbmdsZXRvbihvcy5wYXRoLmFic3BhdGgoZGJmaWxlKSwgb3MucGF0aC5hYnNwYXRoKGxvZ2ZpbGUpLCAoImxvY2FsaG9zdCIsMCkpCi0gICAgICAgIHNpbmdsZXRvbi5zdGFydCgpCisgICAgICAgIGlmIHNpbmdsZXRvbjoKKyAgICAgICAgICAgIGlmIHNpbmdsZXRvbi5kYmZpbGUgIT0gZGJmaWxlOgorICAgICAgICAgICAgICAgIyBTaHV0ZG93biBhbnkgZXhpc3RpbmcgUFIgU2VydmVyIGFzIGRvZXNuJ3QgbWF0Y2ggY29uZmlnCisgICAgICAgICAgICAgICBhdXRvX3NodXRkb3duKCkKKyAgICAgICAgaWYgbm90IHNpbmdsZXRvbjoKKyAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihjYWNoZWRpcikKKyAgICAgICAgICAgIHNpbmdsZXRvbiA9IFBSU2VydlNpbmdsZXRvbihvcy5wYXRoLmFic3BhdGgoZGJmaWxlKSwgb3MucGF0aC5hYnNwYXRoKGxvZ2ZpbGUpLCAoImxvY2FsaG9zdCIsMCkpCisgICAgICAgICAgICBzaW5nbGV0b24uc3RhcnQoKQogICAgIGlmIHNpbmdsZXRvbjoKICAgICAgICAgaG9zdCwgcG9ydCA9IHNpbmdsZXRvbi5nZXRpbmZvKCkKICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9weWlub3RpZnkucHkgYi9wb2t5L2JpdGJha2UvbGliL3B5aW5vdGlmeS5weQppbmRleCAxNTI4YTIyLi42YWU0MGEyIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3B5aW5vdGlmeS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3B5aW5vdGlmeS5weQpAQCAtMTI3NCw3ICsxMjc0LDcgQEAKICAgICAgICAgICAgIGJhc2VuYW1lID0gb3MucGF0aC5iYXNlbmFtZShzeXMuYXJndlswXSkgb3IgJ3B5aW5vdGlmeScKICAgICAgICAgICAgIHBpZF9maWxlID0gb3MucGF0aC5qb2luKGRpcm5hbWUsIGJhc2VuYW1lICsgJy5waWQnKQogCi0gICAgICAgIGlmIHBpZF9maWxlICE9IEZhbHNlIGFuZCBvcy5wYXRoLmxleGlzdHMocGlkX2ZpbGUpOgorICAgICAgICBpZiBwaWRfZmlsZSBhbmQgb3MucGF0aC5sZXhpc3RzKHBpZF9maWxlKToKICAgICAgICAgICAgIGVyciA9ICdDYW5ub3QgZGFlbW9uaXplOiBwaWQgZmlsZSAlcyBhbHJlYWR5IGV4aXN0cy4nICUgcGlkX2ZpbGUKICAgICAgICAgICAgIHJhaXNlIE5vdGlmaWVyRXJyb3IoZXJyKQogCkBAIC0xMzA4LDcgKzEzMDgsNyBAQAogICAgICAgICBmb3JrX2RhZW1vbigpCiAKICAgICAgICAgIyBXcml0ZSBwaWQKLSAgICAgICAgaWYgcGlkX2ZpbGUgIT0gRmFsc2U6CisgICAgICAgIGlmIHBpZF9maWxlOgogICAgICAgICAgICAgZmxhZ3MgPSBvcy5PX1dST05MWXxvcy5PX0NSRUFUfG9zLk9fTk9GT0xMT1d8b3MuT19FWENMCiAgICAgICAgICAgICBmZF9waWQgPSBvcy5vcGVuKHBpZF9maWxlLCBmbGFncywgMG8wNjAwKQogICAgICAgICAgICAgb3Mud3JpdGUoZmRfcGlkLCAgYnl0ZXMoc3RyKG9zLmdldHBpZCgpKSArICdcbicsCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29sbGVjdG9yL3VybHMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29sbGVjdG9yL3VybHMucHkKaW5kZXggOGViMWUzNC4uZWZkNjdhOCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbGxlY3Rvci91cmxzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb2xsZWN0b3IvdXJscy5weQpAQCAtNiw3ICs2LDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRqYW5nby5jb25mLnVybHMgaW1wb3J0IGluY2x1ZGUsIHVybAorZnJvbSBkamFuZ28uY29uZi51cmxzIGltcG9ydCB1cmwKIAogaW1wb3J0IGJsZGNvbGxlY3Rvci52aWV3cwogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29sbGVjdG9yL3ZpZXdzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbGxlY3Rvci92aWV3cy5weQppbmRleCBjNzA4YjQxLi4wNGNkOGIzIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29sbGVjdG9yL3ZpZXdzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb2xsZWN0b3Ivdmlld3MucHkKQEAgLTYsMTYgKzYsOCBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gZGphbmdvLnZpZXdzLmRlY29yYXRvcnMuY2FjaGUgaW1wb3J0IGNhY2hlX2NvbnRyb2wKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCi1mcm9tIGRqYW5nby5jb3JlLnBhZ2luYXRvciBpbXBvcnQgUGFnaW5hdG9yLCBFbXB0eVBhZ2UsIFBhZ2VOb3RBbkludGVnZXIKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLmh0dHAgaW1wb3J0IEh0dHBSZXNwb25zZUJhZFJlcXVlc3QsIEh0dHBSZXNwb25zZQotZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCi1mcm9tIGRqYW5nby51dGlscy5odG1sIGltcG9ydCBlc2NhcGUKLWZyb20gZGF0ZXRpbWUgaW1wb3J0IHRpbWVkZWx0YQotZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IGZvcm1hdHMKLWZyb20gdG9hc3Rlcmd1aS50ZW1wbGF0ZXRhZ3MucHJvamVjdHRhZ3MgaW1wb3J0IGpzb24gYXMganNvbmZpbHRlcgotaW1wb3J0IGpzb24KIGltcG9ydCBvcwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgc3VicHJvY2VzcwpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvYWRtaW4ucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9hZG1pbi5weQppbmRleCBlODVjMzBlLi4xNzU0YmMxIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9hZG1pbi5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9hZG1pbi5weQpAQCAtMyw3ICszLDYgQEAKICMKIAogZnJvbSBkamFuZ28uY29udHJpYiBpbXBvcnQgYWRtaW4KLWZyb20gZGphbmdvLmNvbnRyaWIuYWRtaW4uZmlsdGVycyBpbXBvcnQgUmVsYXRlZEZpZWxkTGlzdEZpbHRlcgogZnJvbSAubW9kZWxzIGltcG9ydCBCdWlsZEVudmlyb25tZW50CiAKIGNsYXNzIEJ1aWxkRW52aXJvbm1lbnRBZG1pbihhZG1pbi5Nb2RlbEFkbWluKToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL2JiY29udHJvbGxlci5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL2JiY29udHJvbGxlci5weQppbmRleCAzMDFkZjE4Li43MWMyODhkIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9iYmNvbnRyb2xsZXIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvYmJjb250cm9sbGVyLnB5CkBAIC04LDEwICs4LDggQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1pbXBvcnQgcmUKLWZyb20gZGphbmdvLmRiIGltcG9ydCB0cmFuc2FjdGlvbgogZnJvbSBkamFuZ28uZGIubW9kZWxzIGltcG9ydCBRCi1mcm9tIGJsZGNvbnRyb2wubW9kZWxzIGltcG9ydCBCdWlsZEVudmlyb25tZW50LCBCUkxheWVyLCBCUlZhcmlhYmxlLCBCUlRhcmdldCwgQlJCaXRiYWtlCitmcm9tIGJsZGNvbnRyb2wubW9kZWxzIGltcG9ydCBCdWlsZEVudmlyb25tZW50LCBCUkxheWVyLCBCUkJpdGJha2UKIAogIyBsb2FkIEJpdGJha2UgY29tcG9uZW50cwogcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKSkpKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbG9jYWxob3N0YmVjb250cm9sbGVyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbG9jYWxob3N0YmVjb250cm9sbGVyLnB5CmluZGV4IDM5ZWE3MzYuLjc1Njc0Y2MgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL2xvY2FsaG9zdGJlY29udHJvbGxlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9sb2NhbGhvc3RiZWNvbnRyb2xsZXIucHkKQEAgLTcsMjcgKzcsMjQgQEAKICMKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgcmUKIGltcG9ydCBzaHV0aWwKIGltcG9ydCB0aW1lCi1mcm9tIGRqYW5nby5kYiBpbXBvcnQgdHJhbnNhY3Rpb24KLWZyb20gZGphbmdvLmRiLm1vZGVscyBpbXBvcnQgUQotZnJvbSBibGRjb250cm9sLm1vZGVscyBpbXBvcnQgQnVpbGRFbnZpcm9ubWVudCwgQnVpbGRSZXF1ZXN0LCBCUkxheWVyLCBCUlZhcmlhYmxlLCBCUlRhcmdldCwgQlJCaXRiYWtlLCBCdWlsZAotZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBDdXN0b21JbWFnZVJlY2lwZSwgTGF5ZXIsIExheWVyX1ZlcnNpb24sIFByb2plY3QsIFByb2plY3RMYXllciwgVG9hc3RlclNldHRpbmcKK2Zyb20gYmxkY29udHJvbC5tb2RlbHMgaW1wb3J0IEJ1aWxkRW52aXJvbm1lbnQsIEJ1aWxkUmVxdWVzdCwgQnVpbGQKK2Zyb20gb3JtLm1vZGVscyBpbXBvcnQgQ3VzdG9tSW1hZ2VSZWNpcGUsIExheWVyLCBMYXllcl9WZXJzaW9uLCBQcm9qZWN0LCBUb2FzdGVyU2V0dGluZwogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBzaWduYWxfcnVuYnVpbGRzCiBpbXBvcnQgc3VicHJvY2VzcwogCiBmcm9tIHRvYXN0ZXJtYWluIGltcG9ydCBzZXR0aW5ncwogCi1mcm9tIGJsZGNvbnRyb2wuYmJjb250cm9sbGVyIGltcG9ydCBCdWlsZEVudmlyb25tZW50Q29udHJvbGxlciwgU2hlbGxDbWRFeGNlcHRpb24sIEJ1aWxkU2V0dXBFeGNlcHRpb24sIEJpdGJha2VDb250cm9sbGVyCitmcm9tIGJsZGNvbnRyb2wuYmJjb250cm9sbGVyIGltcG9ydCBCdWlsZEVudmlyb25tZW50Q29udHJvbGxlciwgU2hlbGxDbWRFeGNlcHRpb24sIEJ1aWxkU2V0dXBFeGNlcHRpb24KIAogaW1wb3J0IGxvZ2dpbmcKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ0b2FzdGVyIikKIAogaW5zdGFsbF9kaXIgPSBvcy5lbnZpcm9uLmdldCgnVE9BU1RFUl9ESVInKQogCi1mcm9tIHBwcmludCBpbXBvcnQgcHByaW50LCBwZm9ybWF0Citmcm9tIHBwcmludCBpbXBvcnQgcGZvcm1hdAogCiBjbGFzcyBMb2NhbGhvc3RCRUNvbnRyb2xsZXIoQnVpbGRFbnZpcm9ubWVudENvbnRyb2xsZXIpOgogICAgICIiIiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgQnVpbGRFbnZpcm9ubWVudENvbnRyb2xsZXIgZm9yIHRoZSBsb2NhbGhvc3Q7CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9tYW5hZ2VtZW50L2NvbW1hbmRzL2NoZWNrc2V0dGluZ3MucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9tYW5hZ2VtZW50L2NvbW1hbmRzL2NoZWNrc2V0dGluZ3MucHkKaW5kZXggZmUyYzRkYy4uMjBmOWRjZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9jaGVja3NldHRpbmdzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvY2hlY2tzZXR0aW5ncy5weQpAQCAtMiwxMSArMiw5IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotZnJvbSBkamFuZ28uY29yZS5tYW5hZ2VtZW50LmJhc2UgaW1wb3J0IEJhc2VDb21tYW5kLCBDb21tYW5kRXJyb3IKLWZyb20gZGphbmdvLmRiIGltcG9ydCB0cmFuc2FjdGlvbgorZnJvbSBkamFuZ28uY29yZS5tYW5hZ2VtZW50LmJhc2UgaW1wb3J0IEJhc2VDb21tYW5kCiAKIGZyb20gZGphbmdvLmNvcmUubWFuYWdlbWVudCBpbXBvcnQgY2FsbF9jb21tYW5kCi1mcm9tIGJsZGNvbnRyb2wuYmJjb250cm9sbGVyIGltcG9ydCBnZXRCdWlsZEVudmlyb25tZW50Q29udHJvbGxlciwgU2hlbGxDbWRFeGNlcHRpb24KIGZyb20gYmxkY29udHJvbC5tb2RlbHMgaW1wb3J0IEJ1aWxkUmVxdWVzdCwgQnVpbGRFbnZpcm9ubWVudCwgQlJFcnJvcgogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBUb2FzdGVyU2V0dGluZywgQnVpbGQsIExheWVyCiAKQEAgLTgwLDcgKzc4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlX2NvbmYgPSBvcy5lbnZpcm9uLmdldCgiVEVNUExBVEVDT05GIiwgIiIpCiAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21feG1sX29ubHkgPSBvcy5lbnZpcm9uLmdldCgiQ1VTVE9NX1hNTF9PTkxZIikKIAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgVG9hc3RlclNldHRpbmcub2JqZWN0cy5maWx0ZXIobmFtZT0nQ1VTVE9NX1hNTF9PTkxZJykuY291bnQoKSA+IDAgb3IgKG5vdCBjdXN0b21feG1sX29ubHkgPT0gTm9uZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBUb2FzdGVyU2V0dGluZy5vYmplY3RzLmZpbHRlcihuYW1lPSdDVVNUT01fWE1MX09OTFknKS5jb3VudCgpID4gMCBvciBjdXN0b21feG1sX29ubHkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvbmx5IHVzZSB0aGUgY3VzdG9tIHNldHRpbmdzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiAicG9reSIgaW4gdGVtcGxhdGVfY29uZjoKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvcnVuYnVpbGRzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9ydW5idWlsZHMucHkKaW5kZXggNTBlYzQwOS4uMTlmNjU5ZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9ydW5idWlsZHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9ydW5idWlsZHMucHkKQEAgLTE2OCwxNyArMTY4LDE3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuY2xlYW51cCgpCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIGxvZ2dlci53YXJuKCJydW5idWlsZHM6IGNsZWFudXAgZXhjZXB0aW9uICVzIiAlIHN0cihlKSkKKyAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJydW5idWlsZHM6IGNsZWFudXAgZXhjZXB0aW9uICVzIiAlIHN0cihlKSkKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmFyY2hpdmUoKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBsb2dnZXIud2FybigicnVuYnVpbGRzOiBhcmNoaXZlIGV4Y2VwdGlvbiAlcyIgJSBzdHIoZSkpCisgICAgICAgICAgICBsb2dnZXIud2FybmluZygicnVuYnVpbGRzOiBhcmNoaXZlIGV4Y2VwdGlvbiAlcyIgJSBzdHIoZSkpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5zY2hlZHVsZSgpCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIGxvZ2dlci53YXJuKCJydW5idWlsZHM6IHNjaGVkdWxlIGV4Y2VwdGlvbiAlcyIgJSBzdHIoZSkpCisgICAgICAgICAgICBsb2dnZXIud2FybmluZygicnVuYnVpbGRzOiBzY2hlZHVsZSBleGNlcHRpb24gJXMiICUgc3RyKGUpKQogCiAgICAgZGVmIGhhbmRsZShzZWxmLCAqKm9wdGlvbnMpOgogICAgICAgICBwaWRmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvbi5nZXQoIkJVSUxERElSIiwgIi4iKSwKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21pZ3JhdGlvbnMvMDAwMV9pbml0aWFsLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWlncmF0aW9ucy8wMDAxX2luaXRpYWwucHkKaW5kZXggNjdkYjM3OC4uN2VlMTlmNCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWlncmF0aW9ucy8wMDAxX2luaXRpYWwucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWlncmF0aW9ucy8wMDAxX2luaXRpYWwucHkKQEAgLTM3LDcgKzM3LDcgQEAKICAgICAgICAgICAgICAgICAoJ2dpdHVybCcsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTQpKSwKICAgICAgICAgICAgICAgICAoJ2NvbW1pdCcsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTQpKSwKICAgICAgICAgICAgICAgICAoJ2RpcnBhdGgnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU0KSksCi0gICAgICAgICAgICAgICAgKCdsYXllcl92ZXJzaW9uJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5MYXllcl9WZXJzaW9uJywgbnVsbD1UcnVlKSksCisgICAgICAgICAgICAgICAgKCdsYXllcl92ZXJzaW9uJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5MYXllcl9WZXJzaW9uJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC04MCwzNCArODAsMzQgQEAKICAgICAgICAgICAgICAgICAoJ3N0YXRlJywgbW9kZWxzLkludGVnZXJGaWVsZChkZWZhdWx0PTAsIGNob2ljZXM9WygwLCBiJ2NyZWF0ZWQnKSwgKDEsIGIncXVldWVkJyksICgyLCBiJ2luIHByb2dyZXNzJyksICgzLCBiJ2NvbXBsZXRlZCcpLCAoNCwgYidmYWlsZWQnKSwgKDUsIGInZGVsZXRlZCcpLCAoNiwgYidhcmNoaXZlJyldKSksCiAgICAgICAgICAgICAgICAgKCdjcmVhdGVkJywgbW9kZWxzLkRhdGVUaW1lRmllbGQoYXV0b19ub3dfYWRkPVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ3VwZGF0ZWQnLCBtb2RlbHMuRGF0ZVRpbWVGaWVsZChhdXRvX25vdz1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5PbmVUb09uZUZpZWxkKG51bGw9VHJ1ZSwgdG89J29ybS5CdWlsZCcpKSwKLSAgICAgICAgICAgICAgICAoJ2Vudmlyb25tZW50JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J2JsZGNvbnRyb2wuQnVpbGRFbnZpcm9ubWVudCcsIG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgncHJvamVjdCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUHJvamVjdCcpKSwKKyAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLk9uZVRvT25lRmllbGQobnVsbD1UcnVlLCB0bz0nb3JtLkJ1aWxkJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCdlbnZpcm9ubWVudCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdibGRjb250cm9sLkJ1aWxkRW52aXJvbm1lbnQnLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgncHJvamVjdCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUHJvamVjdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J2JydmFyaWFibGUnLAogICAgICAgICAgICAgbmFtZT0ncmVxJywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdibGRjb250cm9sLkJ1aWxkUmVxdWVzdCcpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J2JsZGNvbnRyb2wuQnVpbGRSZXF1ZXN0Jywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J2JydGFyZ2V0JywKICAgICAgICAgICAgIG5hbWU9J3JlcScsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nYmxkY29udHJvbC5CdWlsZFJlcXVlc3QnKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdibGRjb250cm9sLkJ1aWxkUmVxdWVzdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdicmxheWVyJywKICAgICAgICAgICAgIG5hbWU9J3JlcScsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nYmxkY29udHJvbC5CdWlsZFJlcXVlc3QnKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdibGRjb250cm9sLkJ1aWxkUmVxdWVzdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdicmVycm9yJywKICAgICAgICAgICAgIG5hbWU9J3JlcScsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nYmxkY29udHJvbC5CdWlsZFJlcXVlc3QnKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdibGRjb250cm9sLkJ1aWxkUmVxdWVzdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdicmJpdGJha2UnLAogICAgICAgICAgICAgbmFtZT0ncmVxJywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5PbmVUb09uZUZpZWxkKHRvPSdibGRjb250cm9sLkJ1aWxkUmVxdWVzdCcpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLk9uZVRvT25lRmllbGQodG89J2JsZGNvbnRyb2wuQnVpbGRSZXF1ZXN0Jywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSwKICAgICAgICAgKSwKICAgICBdCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9tb2RlbHMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9tb2RlbHMucHkKaW5kZXggYmNmZmNmNS4uYzJmMzAyZCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbW9kZWxzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21vZGVscy5weQpAQCAtNCw5ICs0LDggQEAKIAogZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCiBmcm9tIGRqYW5nby5kYiBpbXBvcnQgbW9kZWxzCi1mcm9tIGRqYW5nby5jb3JlLnZhbGlkYXRvcnMgaW1wb3J0IE1heFZhbHVlVmFsaWRhdG9yLCBNaW5WYWx1ZVZhbGlkYXRvcgogZnJvbSBkamFuZ28udXRpbHMuZW5jb2RpbmcgaW1wb3J0IGZvcmNlX3RleHQKLWZyb20gb3JtLm1vZGVscyBpbXBvcnQgUHJvamVjdCwgUHJvamVjdExheWVyLCBQcm9qZWN0VmFyaWFibGUsIFByb2plY3RUYXJnZXQsIEJ1aWxkLCBMYXllcl9WZXJzaW9uCitmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QsIEJ1aWxkLCBMYXllcl9WZXJzaW9uCiAKIGltcG9ydCBsb2dnaW5nCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigidG9hc3RlciIpCkBAIC04Niw5ICs4NSw5IEBACiAKICAgICBzZWFyY2hfYWxsb3dlZF9maWVsZHMgPSAoImJydGFyZ2V0X190YXJnZXQiLCAiYnVpbGRfX3Byb2plY3RfX25hbWUiKQogCi0gICAgcHJvamVjdCAgICAgPSBtb2RlbHMuRm9yZWlnbktleShQcm9qZWN0KQotICAgIGJ1aWxkICAgICAgID0gbW9kZWxzLk9uZVRvT25lRmllbGQoQnVpbGQsIG51bGwgPSBUcnVlKSAgICAgIyBUT0RPOiB0b2FzdGVydWkgc2hvdWxkIHNldCB0aGlzIHdoZW4gQnVpbGQgaXMgY3JlYXRlZAotICAgIGVudmlyb25tZW50ID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGRFbnZpcm9ubWVudCwgbnVsbCA9IFRydWUpCisgICAgcHJvamVjdCAgICAgPSBtb2RlbHMuRm9yZWlnbktleShQcm9qZWN0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCisgICAgYnVpbGQgICAgICAgPSBtb2RlbHMuT25lVG9PbmVGaWVsZChCdWlsZCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCBudWxsID0gVHJ1ZSkgICAgICMgVE9ETzogdG9hc3RlcnVpIHNob3VsZCBzZXQgdGhpcyB3aGVuIEJ1aWxkIGlzIGNyZWF0ZWQKKyAgICBlbnZpcm9ubWVudCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkRW52aXJvbm1lbnQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgbnVsbCA9IFRydWUpCiAgICAgc3RhdGUgICAgICAgPSBtb2RlbHMuSW50ZWdlckZpZWxkKGNob2ljZXMgPSBSRVFVRVNUX1NUQVRFLCBkZWZhdWx0ID0gUkVRX0NSRUFURUQpCiAgICAgY3JlYXRlZCAgICAgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChhdXRvX25vd19hZGQgPSBUcnVlKQogICAgIHVwZGF0ZWQgICAgID0gbW9kZWxzLkRhdGVUaW1lRmllbGQoYXV0b19ub3cgPSBUcnVlKQpAQCAtMTMyLDMyICsxMzEsMzIgQEAKIAogCiBjbGFzcyBCUkxheWVyKG1vZGVscy5Nb2RlbCk6Ci0gICAgcmVxID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGRSZXF1ZXN0KQorICAgIHJlcSA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkUmVxdWVzdCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQogICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIGdpdHVybCA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTQsIG51bGw9VHJ1ZSkKICAgICBsb2NhbF9zb3VyY2VfZGlyID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NCwgbnVsbD1UcnVlKQogICAgIGNvbW1pdCA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTQsIG51bGw9VHJ1ZSkKICAgICBkaXJwYXRoID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NCwgbnVsbD1UcnVlKQotICAgIGxheWVyX3ZlcnNpb24gPSBtb2RlbHMuRm9yZWlnbktleShMYXllcl9WZXJzaW9uLCBudWxsPVRydWUpCisgICAgbGF5ZXJfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KExheWVyX1ZlcnNpb24sIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgbnVsbD1UcnVlKQogCiBjbGFzcyBCUkJpdGJha2UobW9kZWxzLk1vZGVsKToKLSAgICByZXEgICAgICAgICA9IG1vZGVscy5PbmVUb09uZUZpZWxkKEJ1aWxkUmVxdWVzdCkgICAgIyBvbmx5IG9uZSBiaXRiYWtlIGZvciBhIHJlcXVlc3QKKyAgICByZXEgICAgICAgICA9IG1vZGVscy5PbmVUb09uZUZpZWxkKEJ1aWxkUmVxdWVzdCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSAgICAjIG9ubHkgb25lIGJpdGJha2UgZm9yIGEgcmVxdWVzdAogICAgIGdpdHVybCAgICAgID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoID0yNTQpCiAgICAgY29tbWl0ICAgICAgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGggPSAyNTQpCiAgICAgZGlycGF0aCAgICAgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGggPSAyNTQpCiAKIGNsYXNzIEJSVmFyaWFibGUobW9kZWxzLk1vZGVsKToKLSAgICByZXEgICAgICAgICA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkUmVxdWVzdCkKKyAgICByZXEgICAgICAgICA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkUmVxdWVzdCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQogICAgIG5hbWUgICAgICAgID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKICAgICB2YWx1ZSAgICAgICA9IG1vZGVscy5UZXh0RmllbGQoYmxhbmsgPSBUcnVlKQogCiBjbGFzcyBCUlRhcmdldChtb2RlbHMuTW9kZWwpOgotICAgIHJlcSAgICAgICAgID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGRSZXF1ZXN0KQorICAgIHJlcSAgICAgICAgID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGRSZXF1ZXN0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgdGFyZ2V0ICAgICAgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIHRhc2sgICAgICAgID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCwgbnVsbD1UcnVlKQogCiBjbGFzcyBCUkVycm9yKG1vZGVscy5Nb2RlbCk6Ci0gICAgcmVxICAgICAgICAgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZFJlcXVlc3QpCisgICAgcmVxICAgICAgICAgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZFJlcXVlc3QsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICBlcnJ0eXBlICAgICA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDApCiAgICAgZXJybXNnICAgICAgPSBtb2RlbHMuVGV4dEZpZWxkKCkKICAgICB0cmFjZWJhY2sgICA9IG1vZGVscy5UZXh0RmllbGQoKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9vZS1jb3JlLnhtbCBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvb2UtY29yZS54bWwKaW5kZXggYTcyM2Y1YS4uZmQ5M2Y0ZCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9vZS1jb3JlLnhtbAorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL29lLWNvcmUueG1sCkBAIC04LDkgKzgsOSBAQAogCiAgIDwhLS0gQml0YmFrZSB2ZXJzaW9ucyB3aGljaCBjb3JyZXNwb25kIHRvIHRoZSBtZXRhZGF0YSByZWxlYXNlIC0tPgogICA8b2JqZWN0IG1vZGVsPSJvcm0uYml0YmFrZXZlcnNpb24iIHBrPSIxIj4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj53YXJyaW9yPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5kdW5mZWxsPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJnaXR1cmwiPmdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2U8L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+MS40MjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj4xLjQ2PC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5iaXRiYWtldmVyc2lvbiIgcGs9IjIiPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPkhFQUQ8L2ZpZWxkPgpAQCAtMzAsMTEgKzMwLDExIEBACiAKICAgPCEtLSBSZWxlYXNlcyBhdmFpbGFibGUgLS0+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5yZWxlYXNlIiBwaz0iMSI+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+d2FycmlvcjwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGVzY3JpcHRpb24iPk9wZW5lbWJlZGRlZCBXYXJyaW9yPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5kdW5mZWxsPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkZXNjcmlwdGlvbiI+T3BlbmVtYmVkZGVkIER1bmZlbGw8L2ZpZWxkPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5iaXRiYWtldmVyc2lvbiIgbmFtZT0iYml0YmFrZV92ZXJzaW9uIj4xPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2hfbmFtZSI+d2FycmlvcjwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IlRleHRGaWVsZCIgbmFtZT0iaGVscHRleHQiPlRvYXN0ZXIgd2lsbCBydW4geW91ciBidWlsZHMgdXNpbmcgdGhlIHRpcCBvZiB0aGUgJmx0O2EgaHJlZj1cImh0dHA6Ly9jZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvb3BlbmVtYmVkZGVkLWNvcmUvbG9nLz9oPXdhcnJpb3JcIiZndDtPcGVuRW1iZWRkZWQgV2FycmlvciZsdDsvYSZndDsgYnJhbmNoLjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPmR1bmZlbGw8L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJUZXh0RmllbGQiIG5hbWU9ImhlbHB0ZXh0Ij5Ub2FzdGVyIHdpbGwgcnVuIHlvdXIgYnVpbGRzIHVzaW5nIHRoZSB0aXAgb2YgdGhlICZsdDthIGhyZWY9XCJodHRwOi8vY2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlL2xvZy8/aD1kdW5mZWxsXCImZ3Q7T3BlbkVtYmVkZGVkIER1bmZlbGwmbHQ7L2EmZ3Q7IGJyYW5jaC48L2ZpZWxkPgogICA8L29iamVjdD4KICAgPG9iamVjdCBtb2RlbD0ib3JtLnJlbGVhc2UiIHBrPSIyIj4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5sb2NhbDwvZmllbGQ+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL3Bva3kueG1sIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9wb2t5LnhtbAppbmRleCA3OTkyMzgzLi45MDJiYzg4IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL3Bva3kueG1sCisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvcG9reS54bWwKQEAgLTgsOSArOCw5IEBACiAKICAgPCEtLSBCaXRiYWtlIHZlcnNpb25zIHdoaWNoIGNvcnJlc3BvbmQgdG8gdGhlIG1ldGFkYXRhIHJlbGVhc2UgLS0+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5iaXRiYWtldmVyc2lvbiIgcGs9IjEiPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPndhcnJpb3I8L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPmR1bmZlbGw8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImdpdHVybCI+Z2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj53YXJyaW9yPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPmR1bmZlbGw8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRpcnBhdGgiPmJpdGJha2U8L2ZpZWxkPgogICA8L29iamVjdD4KICAgPG9iamVjdCBtb2RlbD0ib3JtLmJpdGJha2V2ZXJzaW9uIiBwaz0iMiI+CkBAIC0zNSwxMSArMzUsMTEgQEAKIAogICA8IS0tIFJlbGVhc2VzIGF2YWlsYWJsZSAtLT4KICAgPG9iamVjdCBtb2RlbD0ib3JtLnJlbGVhc2UiIHBrPSIxIj4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj53YXJyaW9yPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkZXNjcmlwdGlvbiI+WW9jdG8gUHJvamVjdCAyLjcgIldhcnJpb3IiPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5kdW5mZWxsPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkZXNjcmlwdGlvbiI+WW9jdG8gUHJvamVjdCAzLjEgIkR1bmZlbGwiPC9maWVsZD4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0uYml0YmFrZXZlcnNpb24iIG5hbWU9ImJpdGJha2VfdmVyc2lvbiI+MTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPndhcnJpb3I8L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJUZXh0RmllbGQiIG5hbWU9ImhlbHB0ZXh0Ij5Ub2FzdGVyIHdpbGwgcnVuIHlvdXIgYnVpbGRzIHVzaW5nIHRoZSB0aXAgb2YgdGhlICZsdDthIGhyZWY9Imh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvbG9nLz9oPXdhcnJpb3IiJmd0O1lvY3RvIFByb2plY3QgV2FycmlvciBicmFuY2gmbHQ7L2EmZ3Q7LjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPmR1bmZlbGw8L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJUZXh0RmllbGQiIG5hbWU9ImhlbHB0ZXh0Ij5Ub2FzdGVyIHdpbGwgcnVuIHlvdXIgYnVpbGRzIHVzaW5nIHRoZSB0aXAgb2YgdGhlICZsdDthIGhyZWY9Imh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3Bva3kvbG9nLz9oPWR1bmZlbGwiJmd0O1lvY3RvIFByb2plY3QgRHVuZmVsbCBicmFuY2gmbHQ7L2EmZ3Q7LjwvZmllbGQ+CiAgIDwvb2JqZWN0PgogICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZSIgcGs9IjIiPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPmxvY2FsPC9maWVsZD4KQEAgLTEzMCw3ICsxMzAsNyBAQAogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5sYXllciIgbmFtZT0ibGF5ZXIiPjE8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJJbnRlZ2VyRmllbGQiIG5hbWU9ImxheWVyX3NvdXJjZSI+MDwvZmllbGQ+CiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLnJlbGVhc2UiIG5hbWU9InJlbGVhc2UiPjE8L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+d2FycmlvcjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5kdW5mZWxsPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5tZXRhPC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iMiI+CkBAIC0xNjgsNyArMTY4LDcgQEAKICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ubGF5ZXIiIG5hbWU9ImxheWVyIj4yPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iSW50ZWdlckZpZWxkIiBuYW1lPSJsYXllcl9zb3VyY2UiPjA8L2ZpZWxkPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj4xPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPndhcnJpb3I8L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+ZHVuZmVsbDwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGlycGF0aCI+bWV0YS1wb2t5PC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iNiI+CkBAIC0yMDYsNyArMjA2LDcgQEAKICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ubGF5ZXIiIG5hbWU9ImxheWVyIj4zPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iSW50ZWdlckZpZWxkIiBuYW1lPSJsYXllcl9zb3VyY2UiPjA8L2ZpZWxkPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj4xPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPndhcnJpb3I8L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+ZHVuZmVsbDwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGlycGF0aCI+bWV0YS15b2N0by1ic3A8L2ZpZWxkPgogICA8L29iamVjdD4KICAgPG9iamVjdCBtb2RlbD0ib3JtLmxheWVyX3ZlcnNpb24iIHBrPSIxMCI+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21hbmFnZW1lbnQvY29tbWFuZHMvbHN1cGRhdGVzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9tYW5hZ2VtZW50L2NvbW1hbmRzL2xzdXBkYXRlcy5weQppbmRleCA1YjVhYmJiLi5hNGRiY2FhIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21hbmFnZW1lbnQvY29tbWFuZHMvbHN1cGRhdGVzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWFuYWdlbWVudC9jb21tYW5kcy9sc3VwZGF0ZXMucHkKQEAgLTgsNyArOCw3IEBACiAKIGZyb20gZGphbmdvLmNvcmUubWFuYWdlbWVudC5iYXNlIGltcG9ydCBCYXNlQ29tbWFuZAogCi1mcm9tIG9ybS5tb2RlbHMgaW1wb3J0IExheWVyU291cmNlLCBMYXllciwgUmVsZWFzZSwgTGF5ZXJfVmVyc2lvbgorZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBMYXllciwgUmVsZWFzZSwgTGF5ZXJfVmVyc2lvbgogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBMYXllclZlcnNpb25EZXBlbmRlbmN5LCBNYWNoaW5lLCBSZWNpcGUKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgRGlzdHJvCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFRvYXN0ZXJTZXR0aW5nCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwMV9pbml0aWFsLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDFfaW5pdGlhbC5weQppbmRleCA3NjA0NjJmLi5hOGFjMjNiIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwMV9pbml0aWFsLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDAxX2luaXRpYWwucHkKQEAgLTU0LDcgKzU0LDcgQEAKICAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZCh2ZXJib3NlX25hbWU9J0lEJywgc2VyaWFsaXplPUZhbHNlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnZmlsZV9uYW1lJywgbW9kZWxzLkZpbGVQYXRoRmllbGQoKSksCiAgICAgICAgICAgICAgICAgKCdmaWxlX3NpemUnLCBtb2RlbHMuSW50ZWdlckZpZWxkKCkpLAotICAgICAgICAgICAgICAgICgnYnVpbGQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkJ1aWxkJykpLAorICAgICAgICAgICAgICAgICgnYnVpbGQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkJ1aWxkJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtNjQsNyArNjQsNyBAQAogICAgICAgICAgICAgICAgICgnYXJlYScsIG1vZGVscy5JbnRlZ2VyRmllbGQoY2hvaWNlcz1bKDAsIGIndmFyaWFibGUnKV0pKSwKICAgICAgICAgICAgICAgICAoJ2tleScsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDApKSwKICAgICAgICAgICAgICAgICAoJ3RleHQnLCBtb2RlbHMuVGV4dEZpZWxkKCkpLAotICAgICAgICAgICAgICAgICgnYnVpbGQnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J2hlbHB0ZXh0X2J1aWxkJywgdG89J29ybS5CdWlsZCcpKSwKKyAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdoZWxwdGV4dF9idWlsZCcsIHRvPSdvcm0uQnVpbGQnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC05NCw4ICs5NCw4IEBACiAgICAgICAgICAgICAgICAgKCdkaXJwYXRoJywgbW9kZWxzLkNoYXJGaWVsZChkZWZhdWx0PU5vbmUsIG1heF9sZW5ndGg9MjU1LCBudWxsPVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ3ByaW9yaXR5JywgbW9kZWxzLkludGVnZXJGaWVsZChkZWZhdWx0PTApKSwKICAgICAgICAgICAgICAgICAoJ2xvY2FsX3BhdGgnLCBtb2RlbHMuRmlsZVBhdGhGaWVsZChkZWZhdWx0PWInLycsIG1heF9sZW5ndGg9MTAyNCkpLAotICAgICAgICAgICAgICAgICgnYnVpbGQnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J2xheWVyX3ZlcnNpb25fYnVpbGQnLCBkZWZhdWx0PU5vbmUsIHRvPSdvcm0uQnVpbGQnLCBudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ2xheWVyJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdsYXllcl92ZXJzaW9uX2xheWVyJywgdG89J29ybS5MYXllcicpKSwKKyAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdsYXllcl92ZXJzaW9uX2J1aWxkJywgZGVmYXVsdD1Ob25lLCB0bz0nb3JtLkJ1aWxkJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ2xheWVyJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdsYXllcl92ZXJzaW9uX2xheWVyJywgdG89J29ybS5MYXllcicsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTExMiw5ICsxMTIsOSBAQAogICAgICAgICAgICAgZmllbGRzPVsKICAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZCh2ZXJib3NlX25hbWU9J0lEJywgc2VyaWFsaXplPUZhbHNlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgndXBfaWQnLCBtb2RlbHMuSW50ZWdlckZpZWxkKGRlZmF1bHQ9Tm9uZSwgbnVsbD1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdkZXBlbmRzX29uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdkZXBlbmRlZXMnLCB0bz0nb3JtLkxheWVyX1ZlcnNpb24nKSksCi0gICAgICAgICAgICAgICAgKCdsYXllcl9zb3VyY2UnLCBtb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PU5vbmUsIHRvPSdvcm0uTGF5ZXJTb3VyY2UnLCBudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ2xheWVyX3ZlcnNpb24nLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J2RlcGVuZGVuY2llcycsIHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicpKSwKKyAgICAgICAgICAgICAgICAoJ2RlcGVuZHNfb24nLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J2RlcGVuZGVlcycsIHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgnbGF5ZXJfc291cmNlJywgbW9kZWxzLkZvcmVpZ25LZXkoZGVmYXVsdD1Ob25lLCB0bz0nb3JtLkxheWVyU291cmNlJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ2xheWVyX3ZlcnNpb24nLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J2RlcGVuZGVuY2llcycsIHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTEyNSw3ICsxMjUsNyBAQAogICAgICAgICAgICAgICAgICgnbWVzc2FnZScsIG1vZGVscy5UZXh0RmllbGQobnVsbD1UcnVlLCBibGFuaz1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCdwYXRobmFtZScsIG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MjU1LCBibGFuaz1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCdsaW5lbm8nLCBtb2RlbHMuSW50ZWdlckZpZWxkKG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnYnVpbGQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkJ1aWxkJykpLAorICAgICAgICAgICAgICAgICgnYnVpbGQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkJ1aWxkJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMTM2LDggKzEzNiw4IEBACiAgICAgICAgICAgICAgICAgKCd1cF9kYXRlJywgbW9kZWxzLkRhdGVUaW1lRmllbGQoZGVmYXVsdD1Ob25lLCBudWxsPVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ25hbWUnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU1KSksCiAgICAgICAgICAgICAgICAgKCdkZXNjcmlwdGlvbicsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTUpKSwKLSAgICAgICAgICAgICAgICAoJ2xheWVyX3NvdXJjZScsIG1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5MYXllclNvdXJjZScsIG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnbGF5ZXJfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicpKSwKKyAgICAgICAgICAgICAgICAoJ2xheWVyX3NvdXJjZScsIG1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5MYXllclNvdXJjZScsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCdsYXllcl92ZXJzaW9uJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5MYXllcl9WZXJzaW9uJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMTU0LDcgKzE1NCw3IEBACiAgICAgICAgICAgICAgICAgKCdpbnN0YWxsZWRfc2l6ZScsIG1vZGVscy5JbnRlZ2VyRmllbGQoZGVmYXVsdD0wKSksCiAgICAgICAgICAgICAgICAgKCdzZWN0aW9uJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTgwLCBibGFuaz1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCdsaWNlbnNlJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTgwLCBibGFuaz1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uQnVpbGQnLCBudWxsPVRydWUpKSwKKyAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5CdWlsZCcsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMTYyLDggKzE2Miw4IEBACiAgICAgICAgICAgICBmaWVsZHM9WwogICAgICAgICAgICAgICAgICgnaWQnLCBtb2RlbHMuQXV0b0ZpZWxkKHZlcmJvc2VfbmFtZT0nSUQnLCBzZXJpYWxpemU9RmFsc2UsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCdkZXBfdHlwZScsIG1vZGVscy5JbnRlZ2VyRmllbGQoY2hvaWNlcz1bKDAsIGInZGVwZW5kcycpLCAoMSwgYidkZXBlbmRzJyksICgzLCBiJ3JlY29tbWVuZHMnKSwgKDIsIGIncmVjb21tZW5kcycpLCAoNCwgYidzdWdnZXN0cycpLCAoNSwgYidwcm92aWRlcycpLCAoNiwgYidyZXBsYWNlcycpLCAoNywgYidjb25mbGljdHMnKV0pKSwKLSAgICAgICAgICAgICAgICAoJ2RlcGVuZHNfb24nLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3BhY2thZ2VfZGVwZW5kZW5jaWVzX3RhcmdldCcsIHRvPSdvcm0uUGFja2FnZScpKSwKLSAgICAgICAgICAgICAgICAoJ3BhY2thZ2UnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3BhY2thZ2VfZGVwZW5kZW5jaWVzX3NvdXJjZScsIHRvPSdvcm0uUGFja2FnZScpKSwKKyAgICAgICAgICAgICAgICAoJ2RlcGVuZHNfb24nLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3BhY2thZ2VfZGVwZW5kZW5jaWVzX3RhcmdldCcsIHRvPSdvcm0uUGFja2FnZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgncGFja2FnZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ncGFja2FnZV9kZXBlbmRlbmNpZXNfc291cmNlJywgdG89J29ybS5QYWNrYWdlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMTcyLDcgKzE3Miw3IEBACiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ3BhdGgnLCBtb2RlbHMuRmlsZVBhdGhGaWVsZChtYXhfbGVuZ3RoPTI1NSwgYmxhbms9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnc2l6ZScsIG1vZGVscy5JbnRlZ2VyRmllbGQoKSksCi0gICAgICAgICAgICAgICAgKCdwYWNrYWdlJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdidWlsZGZpbGVsaXN0X3BhY2thZ2UnLCB0bz0nb3JtLlBhY2thZ2UnKSksCisgICAgICAgICAgICAgICAgKCdwYWNrYWdlJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdidWlsZGZpbGVsaXN0X3BhY2thZ2UnLCB0bz0nb3JtLlBhY2thZ2UnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0xODUsNyArMTg1LDcgQEAKICAgICAgICAgICAgICAgICAoJ3VwZGF0ZWQnLCBtb2RlbHMuRGF0ZVRpbWVGaWVsZChhdXRvX25vdz1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCd1c2VyX2lkJywgbW9kZWxzLkludGVnZXJGaWVsZChudWxsPVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ2lzX2RlZmF1bHQnLCBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQ9RmFsc2UpKSwKLSAgICAgICAgICAgICAgICAoJ2JpdGJha2VfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uQml0YmFrZVZlcnNpb24nLCBudWxsPVRydWUpKSwKKyAgICAgICAgICAgICAgICAoJ2JpdGJha2VfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uQml0YmFrZVZlcnNpb24nLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTE5Myw4ICsxOTMsOCBAQAogICAgICAgICAgICAgZmllbGRzPVsKICAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZCh2ZXJib3NlX25hbWU9J0lEJywgc2VyaWFsaXplPUZhbHNlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnb3B0aW9uYWwnLCBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQ9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnbGF5ZXJjb21taXQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkxheWVyX1ZlcnNpb24nLCBudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ3Byb2plY3QnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlByb2plY3QnKSksCisgICAgICAgICAgICAgICAgKCdsYXllcmNvbW1pdCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCdwcm9qZWN0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5Qcm9qZWN0Jywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMjAzLDcgKzIwMyw3IEBACiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ3RhcmdldCcsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDApKSwKICAgICAgICAgICAgICAgICAoJ3Rhc2snLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwLCBudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ3Byb2plY3QnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlByb2plY3QnKSksCisgICAgICAgICAgICAgICAgKCdwcm9qZWN0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5Qcm9qZWN0Jywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMjEyLDcgKzIxMiw3IEBACiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ25hbWUnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKSksCiAgICAgICAgICAgICAgICAgKCd2YWx1ZScsIG1vZGVscy5UZXh0RmllbGQoYmxhbms9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgncHJvamVjdCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUHJvamVjdCcpKSwKKyAgICAgICAgICAgICAgICAoJ3Byb2plY3QnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlByb2plY3QnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0yMzIsOCArMjMyLDggQEAKICAgICAgICAgICAgICAgICAoJ2ZpbGVfcGF0aCcsIG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MjU1KSksCiAgICAgICAgICAgICAgICAgKCdwYXRoZmxhZ3MnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjAwLCBibGFuaz1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCdpc19pbWFnZScsIG1vZGVscy5Cb29sZWFuRmllbGQoZGVmYXVsdD1GYWxzZSkpLAotICAgICAgICAgICAgICAgICgnbGF5ZXJfc291cmNlJywgbW9kZWxzLkZvcmVpZ25LZXkoZGVmYXVsdD1Ob25lLCB0bz0nb3JtLkxheWVyU291cmNlJywgbnVsbD1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdsYXllcl92ZXJzaW9uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdyZWNpcGVfbGF5ZXJfdmVyc2lvbicsIHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicpKSwKKyAgICAgICAgICAgICAgICAoJ2xheWVyX3NvdXJjZScsIG1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5MYXllclNvdXJjZScsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCdsYXllcl92ZXJzaW9uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdyZWNpcGVfbGF5ZXJfdmVyc2lvbicsIHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTI0MSw4ICsyNDEsOCBAQAogICAgICAgICAgICAgZmllbGRzPVsKICAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZCh2ZXJib3NlX25hbWU9J0lEJywgc2VyaWFsaXplPUZhbHNlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnZGVwX3R5cGUnLCBtb2RlbHMuSW50ZWdlckZpZWxkKGNob2ljZXM9WygwLCBiJ2RlcGVuZHMnKSwgKDEsIGIncmRlcGVuZHMnKV0pKSwKLSAgICAgICAgICAgICAgICAoJ2RlcGVuZHNfb24nLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3JfZGVwZW5kZW5jaWVzX2RlcGVuZHMnLCB0bz0nb3JtLlJlY2lwZScpKSwKLSAgICAgICAgICAgICAgICAoJ3JlY2lwZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ncl9kZXBlbmRlbmNpZXNfcmVjaXBlJywgdG89J29ybS5SZWNpcGUnKSksCisgICAgICAgICAgICAgICAgKCdkZXBlbmRzX29uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdyX2RlcGVuZGVuY2llc19kZXBlbmRzJywgdG89J29ybS5SZWNpcGUnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ3JlY2lwZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ncl9kZXBlbmRlbmNpZXNfcmVjaXBlJywgdG89J29ybS5SZWNpcGUnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0yNTMsNyArMjUzLDcgQEAKICAgICAgICAgICAgICAgICAoJ2Rlc2NyaXB0aW9uJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NSkpLAogICAgICAgICAgICAgICAgICgnYnJhbmNoX25hbWUnLCBtb2RlbHMuQ2hhckZpZWxkKGRlZmF1bHQ9YicnLCBtYXhfbGVuZ3RoPTUwKSksCiAgICAgICAgICAgICAgICAgKCdoZWxwdGV4dCcsIG1vZGVscy5UZXh0RmllbGQobnVsbD1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdiaXRiYWtlX3ZlcnNpb24nLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkJpdGJha2VWZXJzaW9uJykpLAorICAgICAgICAgICAgICAgICgnYml0YmFrZV92ZXJzaW9uJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5CaXRiYWtlVmVyc2lvbicsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTI2MSw3ICsyNjEsNyBAQAogICAgICAgICAgICAgZmllbGRzPVsKICAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZCh2ZXJib3NlX25hbWU9J0lEJywgc2VyaWFsaXplPUZhbHNlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnbGF5ZXJfbmFtZScsIG1vZGVscy5DaGFyRmllbGQoZGVmYXVsdD1iJycsIG1heF9sZW5ndGg9MTAwKSksCi0gICAgICAgICAgICAgICAgKCdyZWxlYXNlJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5SZWxlYXNlJykpLAorICAgICAgICAgICAgICAgICgncmVsZWFzZScsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUmVsZWFzZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTI2OSw4ICsyNjksOCBAQAogICAgICAgICAgICAgZmllbGRzPVsKICAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZCh2ZXJib3NlX25hbWU9J0lEJywgc2VyaWFsaXplPUZhbHNlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgncHJpb3JpdHknLCBtb2RlbHMuSW50ZWdlckZpZWxkKGRlZmF1bHQ9MCkpLAotICAgICAgICAgICAgICAgICgnbGF5ZXJfc291cmNlJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5MYXllclNvdXJjZScpKSwKLSAgICAgICAgICAgICAgICAoJ3JlbGVhc2UnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlJlbGVhc2UnKSksCisgICAgICAgICAgICAgICAgKCdsYXllcl9zb3VyY2UnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkxheWVyU291cmNlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCdyZWxlYXNlJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5SZWxlYXNlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMjgyLDcgKzI4Miw3IEBACiAgICAgICAgICAgICAgICAgKCdpc19pbWFnZScsIG1vZGVscy5Cb29sZWFuRmllbGQoZGVmYXVsdD1GYWxzZSkpLAogICAgICAgICAgICAgICAgICgnaW1hZ2Vfc2l6ZScsIG1vZGVscy5JbnRlZ2VyRmllbGQoZGVmYXVsdD0wKSksCiAgICAgICAgICAgICAgICAgKCdsaWNlbnNlX21hbmlmZXN0X3BhdGgnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9NTAwLCBudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5CdWlsZCcpKSwKKyAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5CdWlsZCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTI5NSw5ICsyOTUsOSBAQAogICAgICAgICAgICAgICAgICgncGVybWlzc2lvbicsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xNikpLAogICAgICAgICAgICAgICAgICgnb3duZXInLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTI4KSksCiAgICAgICAgICAgICAgICAgKCdncm91cCcsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMjgpKSwKLSAgICAgICAgICAgICAgICAoJ2RpcmVjdG9yeScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0nZGlyZWN0b3J5X3NldCcsIHRvPSdvcm0uVGFyZ2V0X0ZpbGUnLCBudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ3N5bV90YXJnZXQnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3N5bWxpbmtfc2V0JywgdG89J29ybS5UYXJnZXRfRmlsZScsIG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgndGFyZ2V0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5UYXJnZXQnKSksCisgICAgICAgICAgICAgICAgKCdkaXJlY3RvcnknLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J2RpcmVjdG9yeV9zZXQnLCB0bz0nb3JtLlRhcmdldF9GaWxlJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ3N5bV90YXJnZXQnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3N5bWxpbmtfc2V0JywgdG89J29ybS5UYXJnZXRfRmlsZScsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCd0YXJnZXQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlRhcmdldCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTMwNiwxNSArMzA2LDE1IEBACiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ2ZpbGVfbmFtZScsIG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MjU0KSksCiAgICAgICAgICAgICAgICAgKCdmaWxlX3NpemUnLCBtb2RlbHMuSW50ZWdlckZpZWxkKCkpLAotICAgICAgICAgICAgICAgICgndGFyZ2V0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5UYXJnZXQnKSksCisgICAgICAgICAgICAgICAgKCd0YXJnZXQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlRhcmdldCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKICAgICAgICAgICAgIG5hbWU9J1RhcmdldF9JbnN0YWxsZWRfUGFja2FnZScsCiAgICAgICAgICAgICBmaWVsZHM9WwogICAgICAgICAgICAgICAgICgnaWQnLCBtb2RlbHMuQXV0b0ZpZWxkKHZlcmJvc2VfbmFtZT0nSUQnLCBzZXJpYWxpemU9RmFsc2UsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdwYWNrYWdlJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdidWlsZHRhcmdldGxpc3RfcGFja2FnZScsIHRvPSdvcm0uUGFja2FnZScpKSwKLSAgICAgICAgICAgICAgICAoJ3RhcmdldCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uVGFyZ2V0JykpLAorICAgICAgICAgICAgICAgICgncGFja2FnZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0nYnVpbGR0YXJnZXRsaXN0X3BhY2thZ2UnLCB0bz0nb3JtLlBhY2thZ2UnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ3RhcmdldCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uVGFyZ2V0Jywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMzM3LDggKzMzNyw4IEBACiAgICAgICAgICAgICAgICAgKCdzc3RhdGVfcmVzdWx0JywgbW9kZWxzLkludGVnZXJGaWVsZChkZWZhdWx0PTAsIGNob2ljZXM9WygwLCBiJ05vdCBBcHBsaWNhYmxlJyksICgxLCBiJ0ZpbGUgbm90IGluIGNhY2hlJyksICgyLCBiJ0ZhaWxlZCcpLCAoMywgYidTdWNjZWVkZWQnKV0pKSwKICAgICAgICAgICAgICAgICAoJ21lc3NhZ2UnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjQwKSksCiAgICAgICAgICAgICAgICAgKCdsb2dmaWxlJywgbW9kZWxzLkZpbGVQYXRoRmllbGQobWF4X2xlbmd0aD0yNTUsIGJsYW5rPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSd0YXNrX2J1aWxkJywgdG89J29ybS5CdWlsZCcpKSwKLSAgICAgICAgICAgICAgICAoJ3JlY2lwZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ndGFza3MnLCB0bz0nb3JtLlJlY2lwZScpKSwKKyAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSd0YXNrX2J1aWxkJywgdG89J29ybS5CdWlsZCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgncmVjaXBlJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSd0YXNrcycsIHRvPSdvcm0uUmVjaXBlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgb3B0aW9ucz17CiAgICAgICAgICAgICAgICAgJ29yZGVyaW5nJzogKCdvcmRlcicsICdyZWNpcGUnKSwKQEAgLTM0OCw4ICszNDgsOCBAQAogICAgICAgICAgICAgbmFtZT0nVGFza19EZXBlbmRlbmN5JywKICAgICAgICAgICAgIGZpZWxkcz1bCiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ2RlcGVuZHNfb24nLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3Rhc2tfZGVwZW5kZW5jaWVzX2RlcGVuZHMnLCB0bz0nb3JtLlRhc2snKSksCi0gICAgICAgICAgICAgICAgKCd0YXNrJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSd0YXNrX2RlcGVuZGVuY2llc190YXNrJywgdG89J29ybS5UYXNrJykpLAorICAgICAgICAgICAgICAgICgnZGVwZW5kc19vbicsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ndGFza19kZXBlbmRlbmNpZXNfZGVwZW5kcycsIHRvPSdvcm0uVGFzaycsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgndGFzaycsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ndGFza19kZXBlbmRlbmNpZXNfdGFzaycsIHRvPSdvcm0uVGFzaycsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTM3MCw3ICszNzAsNyBAQAogICAgICAgICAgICAgICAgICgnY2hhbmdlZCcsIG1vZGVscy5Cb29sZWFuRmllbGQoZGVmYXVsdD1GYWxzZSkpLAogICAgICAgICAgICAgICAgICgnaHVtYW5fcmVhZGFibGVfbmFtZScsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yMDApKSwKICAgICAgICAgICAgICAgICAoJ2Rlc2NyaXB0aW9uJywgbW9kZWxzLlRleHRGaWVsZChibGFuaz1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ndmFyaWFibGVfYnVpbGQnLCB0bz0nb3JtLkJ1aWxkJykpLAorICAgICAgICAgICAgICAgICgnYnVpbGQnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3ZhcmlhYmxlX2J1aWxkJywgdG89J29ybS5CdWlsZCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTM4MSwyOCArMzgxLDI4IEBACiAgICAgICAgICAgICAgICAgKCdmaWxlX25hbWUnLCBtb2RlbHMuRmlsZVBhdGhGaWVsZChtYXhfbGVuZ3RoPTI1NSkpLAogICAgICAgICAgICAgICAgICgnbGluZV9udW1iZXInLCBtb2RlbHMuSW50ZWdlckZpZWxkKG51bGw9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnb3BlcmF0aW9uJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTY0KSksCi0gICAgICAgICAgICAgICAgKCd2YXJpYWJsZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ndmhpc3RvcnknLCB0bz0nb3JtLlZhcmlhYmxlJykpLAorICAgICAgICAgICAgICAgICgndmFyaWFibGUnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3ZoaXN0b3J5JywgdG89J29ybS5WYXJpYWJsZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J3Byb2plY3QnLAogICAgICAgICAgICAgbmFtZT0ncmVsZWFzZScsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlJlbGVhc2UnLCBudWxsPVRydWUpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5SZWxlYXNlJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0ncGFja2FnZV9kZXBlbmRlbmN5JywKICAgICAgICAgICAgIG5hbWU9J3RhcmdldCcsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlRhcmdldCcsIG51bGw9VHJ1ZSksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlRhcmdldCcsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J3BhY2thZ2UnLAogICAgICAgICAgICAgbmFtZT0ncmVjaXBlJywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUmVjaXBlJywgbnVsbD1UcnVlKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUmVjaXBlJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0nbG9nbWVzc2FnZScsCiAgICAgICAgICAgICBuYW1lPSd0YXNrJywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KGJsYW5rPVRydWUsIHRvPSdvcm0uVGFzaycsIG51bGw9VHJ1ZSksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShibGFuaz1UcnVlLCB0bz0nb3JtLlRhc2snLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQWx0ZXJVbmlxdWVUb2dldGhlcigKICAgICAgICAgICAgIG5hbWU9J2xheWVyc291cmNlJywKQEAgLTQxMSwzMiArNDExLDMyIEBACiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdsYXllcl92ZXJzaW9uJywKICAgICAgICAgICAgIG5hbWU9J2xheWVyX3NvdXJjZScsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PU5vbmUsIHRvPSdvcm0uTGF5ZXJTb3VyY2UnLCBudWxsPVRydWUpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkoZGVmYXVsdD1Ob25lLCB0bz0nb3JtLkxheWVyU291cmNlJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0nbGF5ZXJfdmVyc2lvbicsCiAgICAgICAgICAgICBuYW1lPSdwcm9qZWN0JywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5Qcm9qZWN0JywgbnVsbD1UcnVlKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5Qcm9qZWN0JywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0nbGF5ZXJfdmVyc2lvbicsCiAgICAgICAgICAgICBuYW1lPSd1cF9icmFuY2gnLAotICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkoZGVmYXVsdD1Ob25lLCB0bz0nb3JtLkJyYW5jaCcsIG51bGw9VHJ1ZSksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PU5vbmUsIHRvPSdvcm0uQnJhbmNoJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0nbGF5ZXInLAogICAgICAgICAgICAgbmFtZT0nbGF5ZXJfc291cmNlJywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5MYXllclNvdXJjZScsIG51bGw9VHJ1ZSksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PU5vbmUsIHRvPSdvcm0uTGF5ZXJTb3VyY2UnLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdidWlsZCcsCiAgICAgICAgICAgICBuYW1lPSdwcm9qZWN0JywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUHJvamVjdCcpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5Qcm9qZWN0Jywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J2JyYW5jaCcsCiAgICAgICAgICAgICBuYW1lPSdsYXllcl9zb3VyY2UnLAotICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkoZGVmYXVsdD1UcnVlLCB0bz0nb3JtLkxheWVyU291cmNlJywgbnVsbD1UcnVlKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9VHJ1ZSwgdG89J29ybS5MYXllclNvdXJjZScsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKICAgICAgICAgICAgIG5hbWU9J0ltcG9ydGVkTGF5ZXJTb3VyY2UnLApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDJfY3VzdG9taW1hZ2VyZWNpcGUucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwMl9jdXN0b21pbWFnZXJlY2lwZS5weQppbmRleCA5Y2VjODJlLi4wOWMyYmZmIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwMl9jdXN0b21pbWFnZXJlY2lwZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwMl9jdXN0b21pbWFnZXJlY2lwZS5weQpAQCAtMTQsMTAgKzE0LDEwIEBACiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCiAgICAgICAgICAgICBuYW1lPSdDdXN0b21JbWFnZVJlY2lwZScsCiAgICAgICAgICAgICBmaWVsZHM9WwotICAgICAgICAgICAgICAgICgncmVjaXBlX3B0cicsIG1vZGVscy5PbmVUb09uZUZpZWxkKHBhcmVudF9saW5rPVRydWUsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlLCBzZXJpYWxpemU9RmFsc2UsIHRvPSdvcm0uUmVjaXBlJykpLAorICAgICAgICAgICAgICAgICgncmVjaXBlX3B0cicsIG1vZGVscy5PbmVUb09uZUZpZWxkKHBhcmVudF9saW5rPVRydWUsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlLCBzZXJpYWxpemU9RmFsc2UsIHRvPSdvcm0uUmVjaXBlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICAgICAgKCdsYXN0X3VwZGF0ZWQnLCBtb2RlbHMuRGF0ZVRpbWVGaWVsZChkZWZhdWx0PU5vbmUsIG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnYmFzZV9yZWNpcGUnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J2Jhc2VkX29uX3JlY2lwZScsIHRvPSdvcm0uUmVjaXBlJykpLAotICAgICAgICAgICAgICAgICgncHJvamVjdCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUHJvamVjdCcpKSwKKyAgICAgICAgICAgICAgICAoJ2Jhc2VfcmVjaXBlJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdiYXNlZF9vbl9yZWNpcGUnLCB0bz0nb3JtLlJlY2lwZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgncHJvamVjdCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUHJvamVjdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgIGJhc2VzPSgnb3JtLnJlY2lwZScsKSwKICAgICAgICAgKSwKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDAzX2N1c3RvbWltYWdlcGFja2FnZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDAzX2N1c3RvbWltYWdlcGFja2FnZS5weQppbmRleCBiMDI3ZjY2Li44Y2I4MWQ3IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwM19jdXN0b21pbWFnZXBhY2thZ2UucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDNfY3VzdG9taW1hZ2VwYWNrYWdlLnB5CkBAIC0xNCw3ICsxNCw3IEBACiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCiAgICAgICAgICAgICBuYW1lPSdDdXN0b21JbWFnZVBhY2thZ2UnLAogICAgICAgICAgICAgZmllbGRzPVsKLSAgICAgICAgICAgICAgICAoJ3BhY2thZ2VfcHRyJywgbW9kZWxzLk9uZVRvT25lRmllbGQocGFyZW50X2xpbms9VHJ1ZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUsIHNlcmlhbGl6ZT1GYWxzZSwgdG89J29ybS5QYWNrYWdlJykpLAorICAgICAgICAgICAgICAgICgncGFja2FnZV9wdHInLCBtb2RlbHMuT25lVG9PbmVGaWVsZChwYXJlbnRfbGluaz1UcnVlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSwgc2VyaWFsaXplPUZhbHNlLCB0bz0nb3JtLlBhY2thZ2UnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgICAgICAoJ3JlY2lwZV9hcHBlbmRzJywgbW9kZWxzLk1hbnlUb01hbnlGaWVsZChyZWxhdGVkX25hbWU9J2FwcGVuZHNfc2V0JywgdG89J29ybS5DdXN0b21JbWFnZVJlY2lwZScpKSwKICAgICAgICAgICAgICAgICAoJ3JlY2lwZV9leGNsdWRlcycsIG1vZGVscy5NYW55VG9NYW55RmllbGQocmVsYXRlZF9uYW1lPSdleGNsdWRlc19zZXQnLCB0bz0nb3JtLkN1c3RvbUltYWdlUmVjaXBlJykpLAogICAgICAgICAgICAgICAgICgncmVjaXBlX2luY2x1ZGVzJywgbW9kZWxzLk1hbnlUb01hbnlGaWVsZChyZWxhdGVkX25hbWU9J2luY2x1ZGVzX3NldCcsIHRvPSdvcm0uQ3VzdG9tSW1hZ2VSZWNpcGUnKSksCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwNF9wcm92aWRlcy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDA0X3Byb3ZpZGVzLnB5CmluZGV4IGRmZGUyZDEuLjg0NDk2MDQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDA0X3Byb3ZpZGVzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDA0X3Byb3ZpZGVzLnB5CkBAIC0xNiwxMiArMTYsMTIgQEAKICAgICAgICAgICAgIGZpZWxkcz1bCiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ25hbWUnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKSksCi0gICAgICAgICAgICAgICAgKCdyZWNpcGUnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlJlY2lwZScpKSwKKyAgICAgICAgICAgICAgICAoJ3JlY2lwZScsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUmVjaXBlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0ncmVjaXBlX2RlcGVuZGVuY3knLAogICAgICAgICAgICAgbmFtZT0ndmlhJywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KG51bGw9VHJ1ZSwgZGVmYXVsdD1Ob25lLCB0bz0nb3JtLlByb3ZpZGVzJyksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShudWxsPVRydWUsIGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5Qcm92aWRlcycsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgXQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDhfcmVmYWN0b3JfYXJ0aWZhY3RfbW9kZWxzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDhfcmVmYWN0b3JfYXJ0aWZhY3RfbW9kZWxzLnB5CmluZGV4IDMzNjc1ODIuLjQxYTU0N2EgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDA4X3JlZmFjdG9yX2FydGlmYWN0X21vZGVscy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwOF9yZWZhY3Rvcl9hcnRpZmFjdF9tb2RlbHMucHkKQEAgLTE3LDcgKzE3LDcgQEAKICAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZChhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSwgdmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSkpLAogICAgICAgICAgICAgICAgICgnZmlsZV9uYW1lJywgbW9kZWxzLkZpbGVQYXRoRmllbGQoKSksCiAgICAgICAgICAgICAgICAgKCdmaWxlX3NpemUnLCBtb2RlbHMuSW50ZWdlckZpZWxkKCkpLAotICAgICAgICAgICAgICAgICgndGFyZ2V0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5UYXJnZXQnKSksCisgICAgICAgICAgICAgICAgKCd0YXJnZXQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlRhcmdldCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTI2LDcgKzI2LDcgQEAKICAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZChhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSwgdmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSkpLAogICAgICAgICAgICAgICAgICgnZmlsZV9uYW1lJywgbW9kZWxzLkZpbGVQYXRoRmllbGQoKSksCiAgICAgICAgICAgICAgICAgKCdmaWxlX3NpemUnLCBtb2RlbHMuSW50ZWdlckZpZWxkKCkpLAotICAgICAgICAgICAgICAgICgndGFyZ2V0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5UYXJnZXQnKSksCisgICAgICAgICAgICAgICAgKCd0YXJnZXQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlRhcmdldCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5SZW1vdmVGaWVsZCgKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDExX2RlbGV0ZV9sYXllcnNvdXJjZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDExX2RlbGV0ZV9sYXllcnNvdXJjZS5weQppbmRleCA3NTUwNjk2Li4zZjNhMmUxIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxMV9kZWxldGVfbGF5ZXJzb3VyY2UucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTFfZGVsZXRlX2xheWVyc291cmNlLnB5CkBAIC0xLDcgKzEsNyBAQAogIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwogCi1mcm9tIGRqYW5nby5kYiBpbXBvcnQgbWlncmF0aW9ucywgbW9kZWxzCitmcm9tIGRqYW5nby5kYiBpbXBvcnQgbWlncmF0aW9ucwogCiAKIGNsYXNzIE1pZ3JhdGlvbihtaWdyYXRpb25zLk1pZ3JhdGlvbik6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxMl91c2VfcmVsZWFzZV9pbnN0ZWFkX29mX3VwX2JyYW5jaC5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDEyX3VzZV9yZWxlYXNlX2luc3RlYWRfb2ZfdXBfYnJhbmNoLnB5CmluZGV4IDBlNmJiODMuLjRiOTZiZjAgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDEyX3VzZV9yZWxlYXNlX2luc3RlYWRfb2ZfdXBfYnJhbmNoLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDEyX3VzZV9yZWxlYXNlX2luc3RlYWRfb2ZfdXBfYnJhbmNoLnB5CkBAIC00Niw3ICs0Niw3IEBACiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdsYXllcl92ZXJzaW9uJywKICAgICAgICAgICAgIG5hbWU9J3JlbGVhc2UnLAotICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5SZWxlYXNlJywgZGVmYXVsdD1Ob25lLCBudWxsPVRydWUpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5SZWxlYXNlJywgZGVmYXVsdD1Ob25lLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuUnVuUHl0aG9uKGJyYW5jaF90b19yZWxlYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZlcnNlX2NvZGU9bWlncmF0aW9ucy5SdW5QeXRob24ubm9vcCksCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxN19kaXN0cm9fY2xvbmUucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxN19kaXN0cm9fY2xvbmUucHkKaW5kZXggZDNjNTkwMS4uNzMxYzBkZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTdfZGlzdHJvX2Nsb25lLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDE3X2Rpc3Ryb19jbG9uZS5weQpAQCAtMTgsNyArMTgsNyBAQAogICAgICAgICAgICAgICAgICgndXBfZGF0ZScsIG1vZGVscy5EYXRlVGltZUZpZWxkKGRlZmF1bHQ9Tm9uZSwgbnVsbD1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCduYW1lJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NSkpLAogICAgICAgICAgICAgICAgICgnZGVzY3JpcHRpb24nLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU1KSksCi0gICAgICAgICAgICAgICAgKCdsYXllcl92ZXJzaW9uJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5MYXllcl9WZXJzaW9uJykpLAorICAgICAgICAgICAgICAgICgnbGF5ZXJfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICBdCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxOV9kamFuZ29fMl8yLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTlfZGphbmdvXzJfMi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjZhZWYxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTlfZGphbmdvXzJfMi5weQpAQCAtMCwwICsxLDIzIEBACisjIEdlbmVyYXRlZCBieSBEamFuZ28gMi4yLjcgb24gMjAxOS0xMS0xOSAwMzozOAorCitmcm9tIGRqYW5nby5kYiBpbXBvcnQgbWlncmF0aW9ucywgbW9kZWxzCitpbXBvcnQgZGphbmdvLmRiLm1vZGVscy5kZWxldGlvbgorCisKK2NsYXNzIE1pZ3JhdGlvbihtaWdyYXRpb25zLk1pZ3JhdGlvbik6CisKKyAgICBkZXBlbmRlbmNpZXMgPSBbCisgICAgICAgICgnb3JtJywgJzAwMThfcHJvamVjdF9zcGVjaWZpYycpLAorICAgIF0KKworICAgIG9wZXJhdGlvbnMgPSBbCisgICAgICAgIG1pZ3JhdGlvbnMuUmVtb3ZlRmllbGQoCisgICAgICAgICAgICBtb2RlbF9uYW1lPSdkaXN0cm8nLAorICAgICAgICAgICAgbmFtZT0ndXBfaWQnLAorICAgICAgICApLAorICAgICAgICBtaWdyYXRpb25zLkFsdGVyRmllbGQoCisgICAgICAgICAgICBtb2RlbF9uYW1lPSdidWlsZCcsCisgICAgICAgICAgICBuYW1lPSdyZWNpcGVzX3BhcnNlZCcsCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuSW50ZWdlckZpZWxkKGRlZmF1bHQ9MSksCisgICAgICAgICksCisgICAgXQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9tb2RlbHMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21vZGVscy5weQppbmRleCBiYjZiNWRlLi43ZjdlOTIyIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21vZGVscy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21vZGVscy5weQpAQCAtMTMsNyArMTMsNyBAQAogZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCiBmcm9tIGRqYW5nby51dGlscy5lbmNvZGluZyBpbXBvcnQgZm9yY2VfYnl0ZXMKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIAogZnJvbSBkamFuZ28uY29yZSBpbXBvcnQgdmFsaWRhdG9ycwogZnJvbSBkamFuZ28uY29uZiBpbXBvcnQgc2V0dGluZ3MKQEAgLTE3OCw4ICsxNzgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVsZWFzZV9fYnJhbmNoX25hbWUnXQogICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIHNob3J0X2Rlc2NyaXB0aW9uID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTUwLCBibGFuaz1UcnVlKQotICAgIGJpdGJha2VfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KCdCaXRiYWtlVmVyc2lvbicsIG51bGw9VHJ1ZSkKLSAgICByZWxlYXNlID0gbW9kZWxzLkZvcmVpZ25LZXkoIlJlbGVhc2UiLCBudWxsPVRydWUpCisgICAgYml0YmFrZV92ZXJzaW9uID0gbW9kZWxzLkZvcmVpZ25LZXkoJ0JpdGJha2VWZXJzaW9uJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCBudWxsPVRydWUpCisgICAgcmVsZWFzZSA9IG1vZGVscy5Gb3JlaWduS2V5KCJSZWxlYXNlIiwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCBudWxsPVRydWUpCiAgICAgY3JlYXRlZCA9IG1vZGVscy5EYXRlVGltZUZpZWxkKGF1dG9fbm93X2FkZD1UcnVlKQogICAgIHVwZGF0ZWQgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChhdXRvX25vdz1UcnVlKQogICAgICMgVGhpcyBpcyBhIGhvcnJpYmxlIGhhY2s7IHNpbmNlIFRvYXN0ZXIgaGFzIG5vICJVc2VyIiBtb2RlbCBhdmFpbGFibGUgd2hlbgpAQCAtNDY5LDcgKzQ2OSw3IEBACiAKICAgICBzZWFyY2hfYWxsb3dlZF9maWVsZHMgPSBbJ21hY2hpbmUnLCAnY29va2VyX2xvZ19wYXRoJywgInRhcmdldF9fdGFyZ2V0IiwgInRhcmdldF9fdGFyZ2V0X2ltYWdlX2ZpbGVfX2ZpbGVfbmFtZSJdCiAKLSAgICBwcm9qZWN0ID0gbW9kZWxzLkZvcmVpZ25LZXkoUHJvamVjdCkgICAgICAgICAgICAjIG11c3QgaGF2ZSBhIHByb2plY3QKKyAgICBwcm9qZWN0ID0gbW9kZWxzLkZvcmVpZ25LZXkoUHJvamVjdCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSAgICAgICAgICAgICMgbXVzdCBoYXZlIGEgcHJvamVjdAogICAgIG1hY2hpbmUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIGRpc3RybyA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDApCiAgICAgZGlzdHJvX3ZlcnNpb24gPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQpAQCAtNzc3LDEzICs3NzcsMTMgQEAKICAgICAgICAgcmV0dXJuICIlZCAlcyAlcyIgJSAoc2VsZi5pZCwgc2VsZi5wcm9qZWN0LCAiLCIuam9pbihbdC50YXJnZXQgZm9yIHQgaW4gc2VsZi50YXJnZXRfc2V0LmFsbCgpXSkpCiAKIGNsYXNzIFByb2plY3RUYXJnZXQobW9kZWxzLk1vZGVsKToKLSAgICBwcm9qZWN0ID0gbW9kZWxzLkZvcmVpZ25LZXkoUHJvamVjdCkKKyAgICBwcm9qZWN0ID0gbW9kZWxzLkZvcmVpZ25LZXkoUHJvamVjdCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQogICAgIHRhcmdldCA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDApCiAgICAgdGFzayA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDAsIG51bGw9VHJ1ZSkKIAogY2xhc3MgVGFyZ2V0KG1vZGVscy5Nb2RlbCk6CiAgICAgc2VhcmNoX2FsbG93ZWRfZmllbGRzID0gWyd0YXJnZXQnLCAnZmlsZV9uYW1lJ10KLSAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkKQorICAgIGJ1aWxkID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICB0YXJnZXQgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIHRhc2sgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwLCBudWxsPVRydWUpCiAgICAgaXNfaW1hZ2UgPSBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQgPSBGYWxzZSkKQEAgLTk0NCw3ICs5NDQsNyBAQAogCiAjIGtlcm5lbCBhcnRpZmFjdHMgZm9yIGEgdGFyZ2V0OiBiekltYWdlIGFuZCBtb2R1bGVzKgogY2xhc3MgVGFyZ2V0S2VybmVsRmlsZShtb2RlbHMuTW9kZWwpOgotICAgIHRhcmdldCA9IG1vZGVscy5Gb3JlaWduS2V5KFRhcmdldCkKKyAgICB0YXJnZXQgPSBtb2RlbHMuRm9yZWlnbktleShUYXJnZXQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICBmaWxlX25hbWUgPSBtb2RlbHMuRmlsZVBhdGhGaWVsZCgpCiAgICAgZmlsZV9zaXplID0gbW9kZWxzLkludGVnZXJGaWVsZCgpCiAKQEAgLTk1NCw3ICs5NTQsNyBAQAogCiAjIFNESyBhcnRpZmFjdHMgZm9yIGEgdGFyZ2V0OiBzaCBhbmQgbWFuaWZlc3QgZmlsZXMKIGNsYXNzIFRhcmdldFNES0ZpbGUobW9kZWxzLk1vZGVsKToKLSAgICB0YXJnZXQgPSBtb2RlbHMuRm9yZWlnbktleShUYXJnZXQpCisgICAgdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFyZ2V0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgZmlsZV9uYW1lID0gbW9kZWxzLkZpbGVQYXRoRmllbGQoKQogICAgIGZpbGVfc2l6ZSA9IG1vZGVscy5JbnRlZ2VyRmllbGQoKQogCkBAIC05NzMsNyArOTczLDcgQEAKICAgICAgICAgJ3ViaWZzJywgJ3dpYycsICd3aWMuYnoyJywgJ3dpYy5neicsICd3aWMubHptYScKICAgICB9CiAKLSAgICB0YXJnZXQgPSBtb2RlbHMuRm9yZWlnbktleShUYXJnZXQpCisgICAgdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFyZ2V0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgZmlsZV9uYW1lID0gbW9kZWxzLkZpbGVQYXRoRmllbGQobWF4X2xlbmd0aD0yNTQpCiAgICAgZmlsZV9zaXplID0gbW9kZWxzLkludGVnZXJGaWVsZCgpCiAKQEAgLTEwMDcsMTUgKzEwMDcsMTUgQEAKICAgICAgICAgKCBJVFlQRV9CTE9DSyAsJ2Jsb2NrJyksCiAgICAgICAgICkKIAotICAgIHRhcmdldCA9IG1vZGVscy5Gb3JlaWduS2V5KFRhcmdldCkKKyAgICB0YXJnZXQgPSBtb2RlbHMuRm9yZWlnbktleShUYXJnZXQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICBwYXRoID0gbW9kZWxzLkZpbGVQYXRoRmllbGQoKQogICAgIHNpemUgPSBtb2RlbHMuSW50ZWdlckZpZWxkKCkKICAgICBpbm9kZXR5cGUgPSBtb2RlbHMuSW50ZWdlckZpZWxkKGNob2ljZXMgPSBJVFlQRVMpCiAgICAgcGVybWlzc2lvbiA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xNikKICAgICBvd25lciA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMjgpCiAgICAgZ3JvdXAgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTI4KQotICAgIGRpcmVjdG9yeSA9IG1vZGVscy5Gb3JlaWduS2V5KCdUYXJnZXRfRmlsZScsIHJlbGF0ZWRfbmFtZT0iZGlyZWN0b3J5X3NldCIsIG51bGw9VHJ1ZSkKLSAgICBzeW1fdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoJ1RhcmdldF9GaWxlJywgcmVsYXRlZF9uYW1lPSJzeW1saW5rX3NldCIsIG51bGw9VHJ1ZSkKKyAgICBkaXJlY3RvcnkgPSBtb2RlbHMuRm9yZWlnbktleSgnVGFyZ2V0X0ZpbGUnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0iZGlyZWN0b3J5X3NldCIsIG51bGw9VHJ1ZSkKKyAgICBzeW1fdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoJ1RhcmdldF9GaWxlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9InN5bWxpbmtfc2V0IiwgbnVsbD1UcnVlKQogCiAKIGNsYXNzIFRhc2sobW9kZWxzLk1vZGVsKToKQEAgLTExMDIsMTMgKzExMDIsMTMgQEAKICAgICBkZWYgZ2V0X2Rlc2NyaXB0aW9uKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5faGVscHRleHQKIAotICAgIGJ1aWxkID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGQsIHJlbGF0ZWRfbmFtZT0ndGFza19idWlsZCcpCisgICAgYnVpbGQgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J3Rhc2tfYnVpbGQnKQogICAgIG9yZGVyID0gbW9kZWxzLkludGVnZXJGaWVsZChudWxsPVRydWUpCiAgICAgdGFza19leGVjdXRlZCA9IG1vZGVscy5Cb29sZWFuRmllbGQoZGVmYXVsdD1GYWxzZSkgIyBUcnVlIG1lYW5zIEV4ZWN1dGVkLCBGYWxzZSBtZWFucyBOb3QvRXhlY3V0ZWQKICAgICBvdXRjb21lID0gbW9kZWxzLkludGVnZXJGaWVsZChjaG9pY2VzPVRBU0tfT1VUQ09NRSwgZGVmYXVsdD1PVVRDT01FX05BKQogICAgIHNzdGF0ZV9jaGVja3N1bSA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDAsIGJsYW5rPVRydWUpCiAgICAgcGF0aF90b19zc3RhdGVfb2JqID0gbW9kZWxzLkZpbGVQYXRoRmllbGQobWF4X2xlbmd0aD01MDAsIGJsYW5rPVRydWUpCi0gICAgcmVjaXBlID0gbW9kZWxzLkZvcmVpZ25LZXkoJ1JlY2lwZScsIHJlbGF0ZWRfbmFtZT0ndGFza3MnKQorICAgIHJlY2lwZSA9IG1vZGVscy5Gb3JlaWduS2V5KCdSZWNpcGUnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0ndGFza3MnKQogICAgIHRhc2tfbmFtZSA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDApCiAgICAgc291cmNlX3VybCA9IG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MjU1LCBibGFuaz1UcnVlKQogICAgIHdvcmtfZGlyZWN0b3J5ID0gbW9kZWxzLkZpbGVQYXRoRmllbGQobWF4X2xlbmd0aD0yNTUsIGJsYW5rPVRydWUpCkBAIC0xMTQ3LDEzICsxMTQ3LDEzIEBACiAKIAogY2xhc3MgVGFza19EZXBlbmRlbmN5KG1vZGVscy5Nb2RlbCk6Ci0gICAgdGFzayA9IG1vZGVscy5Gb3JlaWduS2V5KFRhc2ssIHJlbGF0ZWRfbmFtZT0ndGFza19kZXBlbmRlbmNpZXNfdGFzaycpCi0gICAgZGVwZW5kc19vbiA9IG1vZGVscy5Gb3JlaWduS2V5KFRhc2ssIHJlbGF0ZWRfbmFtZT0ndGFza19kZXBlbmRlbmNpZXNfZGVwZW5kcycpCisgICAgdGFzayA9IG1vZGVscy5Gb3JlaWduS2V5KFRhc2ssIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgcmVsYXRlZF9uYW1lPSd0YXNrX2RlcGVuZGVuY2llc190YXNrJykKKyAgICBkZXBlbmRzX29uID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFzaywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J3Rhc2tfZGVwZW5kZW5jaWVzX2RlcGVuZHMnKQogCiBjbGFzcyBQYWNrYWdlKG1vZGVscy5Nb2RlbCk6CiAgICAgc2VhcmNoX2FsbG93ZWRfZmllbGRzID0gWyduYW1lJywgJ3ZlcnNpb24nLCAncmV2aXNpb24nLCAncmVjaXBlX19uYW1lJywgJ3JlY2lwZV9fdmVyc2lvbicsICdyZWNpcGVfX2xpY2Vuc2UnLCAncmVjaXBlX19sYXllcl92ZXJzaW9uX19sYXllcl9fbmFtZScsICdyZWNpcGVfX2xheWVyX3ZlcnNpb25fX2JyYW5jaCcsICdyZWNpcGVfX2xheWVyX3ZlcnNpb25fX2NvbW1pdCcsICdyZWNpcGVfX2xheWVyX3ZlcnNpb25fX2xvY2FsX3BhdGgnLCAnaW5zdGFsbGVkX25hbWUnXQotICAgIGJ1aWxkID0gbW9kZWxzLkZvcmVpZ25LZXkoJ0J1aWxkJywgbnVsbD1UcnVlKQotICAgIHJlY2lwZSA9IG1vZGVscy5Gb3JlaWduS2V5KCdSZWNpcGUnLCBudWxsPVRydWUpCisgICAgYnVpbGQgPSBtb2RlbHMuRm9yZWlnbktleSgnQnVpbGQnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIG51bGw9VHJ1ZSkKKyAgICByZWNpcGUgPSBtb2RlbHMuRm9yZWlnbktleSgnUmVjaXBlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCBudWxsPVRydWUpCiAgICAgbmFtZSA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDApCiAgICAgaW5zdGFsbGVkX25hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwLCBkZWZhdWx0PScnKQogICAgIHZlcnNpb24gPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwLCBibGFuaz1UcnVlKQpAQCAtMTI4OSwxOSArMTI4OSwxOSBAQAogICAgICAgICBUWVBFX1JDT05GTElDVFMgOiAgICgiY29uZmxpY3RzIiwgIiVzIGNvbmZsaWN0cyB3aXRoICVzLCB3aGljaCB3aWxsIG5vdCBiZSBpbnN0YWxsZWQgaWYgdGhpcyBwYWNrYWdlIGlzIG5vdCBmaXJzdCByZW1vdmVkIiksCiAgICAgfQogCi0gICAgcGFja2FnZSA9IG1vZGVscy5Gb3JlaWduS2V5KFBhY2thZ2UsIHJlbGF0ZWRfbmFtZT0ncGFja2FnZV9kZXBlbmRlbmNpZXNfc291cmNlJykKLSAgICBkZXBlbmRzX29uID0gbW9kZWxzLkZvcmVpZ25LZXkoUGFja2FnZSwgcmVsYXRlZF9uYW1lPSdwYWNrYWdlX2RlcGVuZGVuY2llc190YXJnZXQnKSAgICMgc29mdCBkZXBlbmRlbmN5CisgICAgcGFja2FnZSA9IG1vZGVscy5Gb3JlaWduS2V5KFBhY2thZ2UsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgcmVsYXRlZF9uYW1lPSdwYWNrYWdlX2RlcGVuZGVuY2llc19zb3VyY2UnKQorICAgIGRlcGVuZHNfb24gPSBtb2RlbHMuRm9yZWlnbktleShQYWNrYWdlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0ncGFja2FnZV9kZXBlbmRlbmNpZXNfdGFyZ2V0JykgICAjIHNvZnQgZGVwZW5kZW5jeQogICAgIGRlcF90eXBlID0gbW9kZWxzLkludGVnZXJGaWVsZChjaG9pY2VzPURFUEVORFNfVFlQRSkKLSAgICB0YXJnZXQgPSBtb2RlbHMuRm9yZWlnbktleShUYXJnZXQsIG51bGw9VHJ1ZSkKKyAgICB0YXJnZXQgPSBtb2RlbHMuRm9yZWlnbktleShUYXJnZXQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgbnVsbD1UcnVlKQogICAgIG9iamVjdHMgPSBQYWNrYWdlX0RlcGVuZGVuY3lNYW5hZ2VyKCkKIAogY2xhc3MgVGFyZ2V0X0luc3RhbGxlZF9QYWNrYWdlKG1vZGVscy5Nb2RlbCk6Ci0gICAgdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFyZ2V0KQotICAgIHBhY2thZ2UgPSBtb2RlbHMuRm9yZWlnbktleShQYWNrYWdlLCByZWxhdGVkX25hbWU9J2J1aWxkdGFyZ2V0bGlzdF9wYWNrYWdlJykKKyAgICB0YXJnZXQgPSBtb2RlbHMuRm9yZWlnbktleShUYXJnZXQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKKyAgICBwYWNrYWdlID0gbW9kZWxzLkZvcmVpZ25LZXkoUGFja2FnZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J2J1aWxkdGFyZ2V0bGlzdF9wYWNrYWdlJykKIAogCiBjbGFzcyBQYWNrYWdlX0ZpbGUobW9kZWxzLk1vZGVsKToKLSAgICBwYWNrYWdlID0gbW9kZWxzLkZvcmVpZ25LZXkoUGFja2FnZSwgcmVsYXRlZF9uYW1lPSdidWlsZGZpbGVsaXN0X3BhY2thZ2UnKQorICAgIHBhY2thZ2UgPSBtb2RlbHMuRm9yZWlnbktleShQYWNrYWdlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0nYnVpbGRmaWxlbGlzdF9wYWNrYWdlJykKICAgICBwYXRoID0gbW9kZWxzLkZpbGVQYXRoRmllbGQobWF4X2xlbmd0aD0yNTUsIGJsYW5rPVRydWUpCiAgICAgc2l6ZSA9IG1vZGVscy5JbnRlZ2VyRmllbGQoKQogCkBAIC0xMzE4LDcgKzEzMTgsNyBAQAogCiAgICAgbmFtZSA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDAsIGJsYW5rPVRydWUpCiAgICAgdmVyc2lvbiA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDAsIGJsYW5rPVRydWUpCi0gICAgbGF5ZXJfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KCdMYXllcl9WZXJzaW9uJywKKyAgICBsYXllcl92ZXJzaW9uID0gbW9kZWxzLkZvcmVpZ25LZXkoJ0xheWVyX1ZlcnNpb24nLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRfbmFtZT0ncmVjaXBlX2xheWVyX3ZlcnNpb24nKQogICAgIHN1bW1hcnkgPSBtb2RlbHMuVGV4dEZpZWxkKGJsYW5rPVRydWUpCiAgICAgZGVzY3JpcHRpb24gPSBtb2RlbHMuVGV4dEZpZWxkKGJsYW5rPVRydWUpCkBAIC0xMzU2LDcgKzEzNTYsNyBAQAogCiBjbGFzcyBQcm92aWRlcyhtb2RlbHMuTW9kZWwpOgogICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQotICAgIHJlY2lwZSA9IG1vZGVscy5Gb3JlaWduS2V5KFJlY2lwZSkKKyAgICByZWNpcGUgPSBtb2RlbHMuRm9yZWlnbktleShSZWNpcGUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKIAogY2xhc3MgUmVjaXBlX0RlcGVuZGVuY3kobW9kZWxzLk1vZGVsKToKICAgICBUWVBFX0RFUEVORFMgPSAwCkBAIC0xMzY2LDkgKzEzNjYsOSBAQAogICAgICAgICAoVFlQRV9ERVBFTkRTLCAiZGVwZW5kcyIpLAogICAgICAgICAoVFlQRV9SREVQRU5EUywgInJkZXBlbmRzIiksCiAgICAgKQotICAgIHJlY2lwZSA9IG1vZGVscy5Gb3JlaWduS2V5KFJlY2lwZSwgcmVsYXRlZF9uYW1lPSdyX2RlcGVuZGVuY2llc19yZWNpcGUnKQotICAgIGRlcGVuZHNfb24gPSBtb2RlbHMuRm9yZWlnbktleShSZWNpcGUsIHJlbGF0ZWRfbmFtZT0ncl9kZXBlbmRlbmNpZXNfZGVwZW5kcycpCi0gICAgdmlhID0gbW9kZWxzLkZvcmVpZ25LZXkoUHJvdmlkZXMsIG51bGw9VHJ1ZSwgZGVmYXVsdD1Ob25lKQorICAgIHJlY2lwZSA9IG1vZGVscy5Gb3JlaWduS2V5KFJlY2lwZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J3JfZGVwZW5kZW5jaWVzX3JlY2lwZScpCisgICAgZGVwZW5kc19vbiA9IG1vZGVscy5Gb3JlaWduS2V5KFJlY2lwZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J3JfZGVwZW5kZW5jaWVzX2RlcGVuZHMnKQorICAgIHZpYSA9IG1vZGVscy5Gb3JlaWduS2V5KFByb3ZpZGVzLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIG51bGw9VHJ1ZSwgZGVmYXVsdD1Ob25lKQogICAgIGRlcF90eXBlID0gbW9kZWxzLkludGVnZXJGaWVsZChjaG9pY2VzPURFUEVORFNfVFlQRSkKICAgICBvYmplY3RzID0gUmVjaXBlX0RlcGVuZGVuY3lNYW5hZ2VyKCkKIApAQCAtMTM3Nyw3ICsxMzc3LDcgQEAKICAgICBzZWFyY2hfYWxsb3dlZF9maWVsZHMgPSBbIm5hbWUiLCAiZGVzY3JpcHRpb24iLCAibGF5ZXJfdmVyc2lvbl9fbGF5ZXJfX25hbWUiXQogICAgIHVwX2RhdGUgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChudWxsID0gVHJ1ZSwgZGVmYXVsdCA9IE5vbmUpCiAKLSAgICBsYXllcl92ZXJzaW9uID0gbW9kZWxzLkZvcmVpZ25LZXkoJ0xheWVyX1ZlcnNpb24nKQorICAgIGxheWVyX3ZlcnNpb24gPSBtb2RlbHMuRm9yZWlnbktleSgnTGF5ZXJfVmVyc2lvbicsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICBuYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NSkKICAgICBkZXNjcmlwdGlvbiA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTUpCiAKQEAgLTE0MDgsNyArMTQwOCw3IEBACiAgICAgIiIiIEEgcmVsZWFzZSBpcyBhIHByb2plY3QgdGVtcGxhdGUsIHVzZWQgdG8gcHJlLXBvcHVsYXRlIFByb2plY3Qgc2V0dGluZ3Mgd2l0aCBhIGNvbmZpZ3VyYXRpb24gc2V0ICIiIgogICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MzIsIHVuaXF1ZSA9IFRydWUpCiAgICAgZGVzY3JpcHRpb24gPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU1KQotICAgIGJpdGJha2VfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KEJpdGJha2VWZXJzaW9uKQorICAgIGJpdGJha2VfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KEJpdGJha2VWZXJzaW9uLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgYnJhbmNoX25hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9NTAsIGRlZmF1bHQgPSAiIikKICAgICBoZWxwdGV4dCA9IG1vZGVscy5UZXh0RmllbGQobnVsbD1UcnVlKQogCkBAIC0xNDE5LDcgKzE0MTksNyBAQAogICAgICAgICByZXR1cm4gc2VsZi5uYW1lCiAKIGNsYXNzIFJlbGVhc2VEZWZhdWx0TGF5ZXIobW9kZWxzLk1vZGVsKToKLSAgICByZWxlYXNlID0gbW9kZWxzLkZvcmVpZ25LZXkoUmVsZWFzZSkKKyAgICByZWxlYXNlID0gbW9kZWxzLkZvcmVpZ25LZXkoUmVsZWFzZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQogICAgIGxheWVyX25hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwLCBkZWZhdWx0PSIiKQogCiAKQEAgLTE0NzQsMTAgKzE0NzQsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxheWVyX19kZXNjcmlwdGlvbiIsICJsYXllcl9fdmNzX3VybCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXJwYXRoIiwgInJlbGVhc2VfX25hbWUiLCAiY29tbWl0IiwgImJyYW5jaCJdCiAKLSAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkLCByZWxhdGVkX25hbWU9J2xheWVyX3ZlcnNpb25fYnVpbGQnLAorICAgIGJ1aWxkID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgcmVsYXRlZF9uYW1lPSdsYXllcl92ZXJzaW9uX2J1aWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgbnVsbD1UcnVlKQogCi0gICAgbGF5ZXIgPSBtb2RlbHMuRm9yZWlnbktleShMYXllciwgcmVsYXRlZF9uYW1lPSdsYXllcl92ZXJzaW9uX2xheWVyJykKKyAgICBsYXllciA9IG1vZGVscy5Gb3JlaWduS2V5KExheWVyLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0nbGF5ZXJfdmVyc2lvbl9sYXllcicpCiAKICAgICBsYXllcl9zb3VyY2UgPSBtb2RlbHMuSW50ZWdlckZpZWxkKGNob2ljZXM9TGF5ZXJTb3VyY2UuU09VUkNFX1RZUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PTApCkBAIC0xNDg1LDcgKzE0ODUsNyBAQAogICAgIHVwX2RhdGUgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChudWxsPVRydWUsIGRlZmF1bHQ9dGltZXpvbmUubm93KQogCiAgICAgIyBUbyB3aGljaCBtZXRhZGF0YSByZWxlYXNlIGRvZXMgdGhpcyBsYXllciB2ZXJzaW9uIGJlbG9uZyB0bwotICAgIHJlbGVhc2UgPSBtb2RlbHMuRm9yZWlnbktleShSZWxlYXNlLCBudWxsPVRydWUsIGRlZmF1bHQ9Tm9uZSkKKyAgICByZWxlYXNlID0gbW9kZWxzLkZvcmVpZ25LZXkoUmVsZWFzZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCBudWxsPVRydWUsIGRlZmF1bHQ9Tm9uZSkKIAogICAgIGJyYW5jaCA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD04MCkKICAgICBjb21taXQgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQpAQCAtMTQ5OSw3ICsxNDk5LDcgQEAKICAgICBsb2NhbF9wYXRoID0gbW9kZWxzLkZpbGVQYXRoRmllbGQobWF4X2xlbmd0aD0xMDI0LCBkZWZhdWx0PSIvIikKIAogICAgICMgU2V0IGlmIHRoaXMgbGF5ZXIgaXMgcmVzdHJpY3RlZCB0byBhIHBhcnRpY3VsYXIgcHJvamVjdAotICAgIHByb2plY3QgPSBtb2RlbHMuRm9yZWlnbktleSgnUHJvamVjdCcsIG51bGw9VHJ1ZSwgZGVmYXVsdD1Ob25lKQorICAgIHByb2plY3QgPSBtb2RlbHMuRm9yZWlnbktleSgnUHJvamVjdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgbnVsbD1UcnVlLCBkZWZhdWx0PU5vbmUpCiAKICAgICAjIGNvZGUgbGlmdGVkLCB3aXRoIGFkYXB0YXRpb25zLCBmcm9tIHRoZSBsYXllcmluZGV4LXdlYiBhcHBsaWNhdGlvbgogICAgICMgaHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL2xheWVyaW5kZXgtd2ViLwpAQCAtMTYwOCwxNCArMTYwOCwxNCBAQAogCiBjbGFzcyBMYXllclZlcnNpb25EZXBlbmRlbmN5KG1vZGVscy5Nb2RlbCk6CiAKLSAgICBsYXllcl92ZXJzaW9uID0gbW9kZWxzLkZvcmVpZ25LZXkoTGF5ZXJfVmVyc2lvbiwKKyAgICBsYXllcl92ZXJzaW9uID0gbW9kZWxzLkZvcmVpZ25LZXkoTGF5ZXJfVmVyc2lvbiwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGVkX25hbWU9ImRlcGVuZGVuY2llcyIpCi0gICAgZGVwZW5kc19vbiA9IG1vZGVscy5Gb3JlaWduS2V5KExheWVyX1ZlcnNpb24sCisgICAgZGVwZW5kc19vbiA9IG1vZGVscy5Gb3JlaWduS2V5KExheWVyX1ZlcnNpb24sIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZF9uYW1lPSJkZXBlbmRlZXMiKQogCiBjbGFzcyBQcm9qZWN0TGF5ZXIobW9kZWxzLk1vZGVsKToKLSAgICBwcm9qZWN0ID0gbW9kZWxzLkZvcmVpZ25LZXkoUHJvamVjdCkKLSAgICBsYXllcmNvbW1pdCA9IG1vZGVscy5Gb3JlaWduS2V5KExheWVyX1ZlcnNpb24sIG51bGw9VHJ1ZSkKKyAgICBwcm9qZWN0ID0gbW9kZWxzLkZvcmVpZ25LZXkoUHJvamVjdCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQorICAgIGxheWVyY29tbWl0ID0gbW9kZWxzLkZvcmVpZ25LZXkoTGF5ZXJfVmVyc2lvbiwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCBudWxsPVRydWUpCiAgICAgb3B0aW9uYWwgPSBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQgPSBUcnVlKQogCiAgICAgZGVmIF9fdW5pY29kZV9fKHNlbGYpOgpAQCAtMTYzMCw4ICsxNjMwLDggQEAKICAgICBMQVlFUl9OQU1FID0gInRvYXN0ZXItY3VzdG9tLWltYWdlcyIKIAogICAgIHNlYXJjaF9hbGxvd2VkX2ZpZWxkcyA9IFsnbmFtZSddCi0gICAgYmFzZV9yZWNpcGUgPSBtb2RlbHMuRm9yZWlnbktleShSZWNpcGUsIHJlbGF0ZWRfbmFtZT0nYmFzZWRfb25fcmVjaXBlJykKLSAgICBwcm9qZWN0ID0gbW9kZWxzLkZvcmVpZ25LZXkoUHJvamVjdCkKKyAgICBiYXNlX3JlY2lwZSA9IG1vZGVscy5Gb3JlaWduS2V5KFJlY2lwZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J2Jhc2VkX29uX3JlY2lwZScpCisgICAgcHJvamVjdCA9IG1vZGVscy5Gb3JlaWduS2V5KFByb2plY3QsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICBsYXN0X3VwZGF0ZWQgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChudWxsPVRydWUsIGRlZmF1bHQ9Tm9uZSkKIAogICAgIGRlZiBnZXRfbGFzdF9zdWNjZXNzZnVsX2J1aWx0X3RhcmdldChzZWxmKToKQEAgLTE2NDcsMTQgKzE2NDcsMTQgQEAKICAgICAgICAgIiIiCiAgICAgICAgICMgQ2hlY2sgaWYgd2UncmUgYWxkcmVhZHkgdXAtdG8tZGF0ZSBvciBub3QKICAgICAgICAgdGFyZ2V0ID0gc2VsZi5nZXRfbGFzdF9zdWNjZXNzZnVsX2J1aWx0X3RhcmdldCgpCi0gICAgICAgIGlmIHRhcmdldCA9PSBOb25lOgorICAgICAgICBpZiB0YXJnZXQgaXMgTm9uZToKICAgICAgICAgICAgICMgU28gd2UndmUgbmV2ZXIgYWN0dWFsbHkgYnVpbHQgdGhpcyBDdXN0b20gcmVjaXBlIGJ1dCB3aGF0IGFib3V0CiAgICAgICAgICAgICAjIHRoZSByZWNpcGUgaXQncyBiYXNlZCBvbj8KICAgICAgICAgICAgIHRhcmdldCA9IFwKICAgICAgICAgICAgICAgICBUYXJnZXQub2JqZWN0cy5maWx0ZXIoUShidWlsZF9fb3V0Y29tZT1CdWlsZC5TVUNDRUVERUQpICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUShidWlsZF9fcHJvamVjdD1zZWxmLnByb2plY3QpICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUSh0YXJnZXQ9c2VsZi5iYXNlX3JlY2lwZS5uYW1lKSkubGFzdCgpCi0gICAgICAgICAgICBpZiB0YXJnZXQgPT0gTm9uZToKKyAgICAgICAgICAgIGlmIHRhcmdldCBpcyBOb25lOgogICAgICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGlmIHRhcmdldC5idWlsZC5jb21wbGV0ZWRfb24gPT0gc2VsZi5sYXN0X3VwZGF0ZWQ6CkBAIC0xNzg0LDE0ICsxNzg0LDE0IEBACiAgICAgICAgIHJldHVybiByZWNpcGVfY29udGVudHMKIAogY2xhc3MgUHJvamVjdFZhcmlhYmxlKG1vZGVscy5Nb2RlbCk6Ci0gICAgcHJvamVjdCA9IG1vZGVscy5Gb3JlaWduS2V5KFByb2plY3QpCisgICAgcHJvamVjdCA9IG1vZGVscy5Gb3JlaWduS2V5KFByb2plY3QsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICBuYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKICAgICB2YWx1ZSA9IG1vZGVscy5UZXh0RmllbGQoYmxhbmsgPSBUcnVlKQogCiBjbGFzcyBWYXJpYWJsZShtb2RlbHMuTW9kZWwpOgogICAgIHNlYXJjaF9hbGxvd2VkX2ZpZWxkcyA9IFsndmFyaWFibGVfbmFtZScsICd2YXJpYWJsZV92YWx1ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2aGlzdG9yeV9fZmlsZV9uYW1lJywgImRlc2NyaXB0aW9uIl0KLSAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkLCByZWxhdGVkX25hbWU9J3ZhcmlhYmxlX2J1aWxkJykKKyAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0ndmFyaWFibGVfYnVpbGQnKQogICAgIHZhcmlhYmxlX25hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIHZhcmlhYmxlX3ZhbHVlID0gbW9kZWxzLlRleHRGaWVsZChibGFuaz1UcnVlKQogICAgIGNoYW5nZWQgPSBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQ9RmFsc2UpCkBAIC0xNzk5LDcgKzE3OTksNyBAQAogICAgIGRlc2NyaXB0aW9uID0gbW9kZWxzLlRleHRGaWVsZChibGFuaz1UcnVlKQogCiBjbGFzcyBWYXJpYWJsZUhpc3RvcnkobW9kZWxzLk1vZGVsKToKLSAgICB2YXJpYWJsZSA9IG1vZGVscy5Gb3JlaWduS2V5KFZhcmlhYmxlLCByZWxhdGVkX25hbWU9J3ZoaXN0b3J5JykKKyAgICB2YXJpYWJsZSA9IG1vZGVscy5Gb3JlaWduS2V5KFZhcmlhYmxlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0ndmhpc3RvcnknKQogICAgIHZhbHVlICAgPSBtb2RlbHMuVGV4dEZpZWxkKGJsYW5rPVRydWUpCiAgICAgZmlsZV9uYW1lID0gbW9kZWxzLkZpbGVQYXRoRmllbGQobWF4X2xlbmd0aD0yNTUpCiAgICAgbGluZV9udW1iZXIgPSBtb2RlbHMuSW50ZWdlckZpZWxkKG51bGw9VHJ1ZSkKQEAgLTE4MDksNyArMTgwOSw3IEBACiAgICAgVkFSSUFCTEUgPSAwCiAgICAgSEVMUFRFWFRfQVJFQSA9ICgoVkFSSUFCTEUsICd2YXJpYWJsZScpLCApCiAKLSAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkLCByZWxhdGVkX25hbWU9J2hlbHB0ZXh0X2J1aWxkJykKKyAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0naGVscHRleHRfYnVpbGQnKQogICAgIGFyZWEgPSBtb2RlbHMuSW50ZWdlckZpZWxkKGNob2ljZXM9SEVMUFRFWFRfQVJFQSkKICAgICBrZXkgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIHRleHQgPSBtb2RlbHMuVGV4dEZpZWxkKCkKQEAgLTE4MjksOCArMTgyOSw4IEBACiAgICAgICAgIChFWENFUFRJT04sICJ0b2FzdGVyIGV4Y2VwdGlvbiIpCiAgICAgKQogCi0gICAgYnVpbGQgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZCkKLSAgICB0YXNrICA9IG1vZGVscy5Gb3JlaWduS2V5KFRhc2ssIGJsYW5rID0gVHJ1ZSwgbnVsbD1UcnVlKQorICAgIGJ1aWxkID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKKyAgICB0YXNrICA9IG1vZGVscy5Gb3JlaWduS2V5KFRhc2ssIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgYmxhbmsgPSBUcnVlLCBudWxsPVRydWUpCiAgICAgbGV2ZWwgPSBtb2RlbHMuSW50ZWdlckZpZWxkKGNob2ljZXM9TE9HX0xFVkVMLCBkZWZhdWx0PUlORk8pCiAgICAgbWVzc2FnZSA9IG1vZGVscy5UZXh0RmllbGQoYmxhbms9VHJ1ZSwgbnVsbD1UcnVlKQogICAgIHBhdGhuYW1lID0gbW9kZWxzLkZpbGVQYXRoRmllbGQobWF4X2xlbmd0aD0yNTUsIGJsYW5rPVRydWUpCkBAIC0xODU5LDcgKzE4NTksNyBAQAogICAgIHNlYXJjaF9hbGxvd2VkX2ZpZWxkcyA9IFsibmFtZSIsICJkZXNjcmlwdGlvbiIsICJsYXllcl92ZXJzaW9uX19sYXllcl9fbmFtZSJdCiAgICAgdXBfZGF0ZSA9IG1vZGVscy5EYXRlVGltZUZpZWxkKG51bGwgPSBUcnVlLCBkZWZhdWx0ID0gTm9uZSkKIAotICAgIGxheWVyX3ZlcnNpb24gPSBtb2RlbHMuRm9yZWlnbktleSgnTGF5ZXJfVmVyc2lvbicpCisgICAgbGF5ZXJfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KCdMYXllcl9WZXJzaW9uJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQogICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU1KQogICAgIGRlc2NyaXB0aW9uID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NSkKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvc2VsZW5pdW1faGVscGVyc19iYXNlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvc2VsZW5pdW1faGVscGVyc19iYXNlLnB5CmluZGV4IDZjOTQ2ODQuLjY0NGQ0NWYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3NlbGVuaXVtX2hlbHBlcnNfYmFzZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci9zZWxlbml1bV9oZWxwZXJzX2Jhc2UucHkKQEAgLTE5LDcgKzE5LDYgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSBkamFuZ28uY29udHJpYi5zdGF0aWNmaWxlcy50ZXN0aW5nIGltcG9ydCBTdGF0aWNMaXZlU2VydmVyVGVzdENhc2UKIGZyb20gc2VsZW5pdW0gaW1wb3J0IHdlYmRyaXZlcgogZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuc3VwcG9ydC51aSBpbXBvcnQgV2ViRHJpdmVyV2FpdAogZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIuY29tbW9uLmRlc2lyZWRfY2FwYWJpbGl0aWVzIGltcG9ydCBEZXNpcmVkQ2FwYWJpbGl0aWVzCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2FsbF9idWlsZHNfcGFnZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYWxsX2J1aWxkc19wYWdlLnB5CmluZGV4IGZiYTYyN2IuLjg0MjNkM2QgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYWxsX2J1aWxkc19wYWdlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYWxsX2J1aWxkc19wYWdlLnB5CkBAIC05LDcgKzksNyBAQAogCiBpbXBvcnQgcmUKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLnV0aWxzIGltcG9ydCB0aW1lem9uZQogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9hbGxfcHJvamVjdHNfcGFnZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYWxsX3Byb2plY3RzX3BhZ2UucHkKaW5kZXggYWZkMmQzNS4uMTViMDM0MCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9hbGxfcHJvamVjdHNfcGFnZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2FsbF9wcm9qZWN0c19wYWdlLnB5CkBAIC05LDcgKzksNyBAQAogCiBpbXBvcnQgcmUKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLnV0aWxzIGltcG9ydCB0aW1lem9uZQogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlLnB5CmluZGV4IGQ5NzJhZmYuLmVmY2Q4OWIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2J1aWxkZGFzaGJvYXJkX3BhZ2UucHkKQEAgLTcsNyArNyw3IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLnV0aWxzIGltcG9ydCB0aW1lem9uZQogCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlX2FydGlmYWN0cy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZV9hcnRpZmFjdHMucHkKaW5kZXggZTI2MjNlOC4uYzYyMjZkNiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlX2FydGlmYWN0cy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2J1aWxkZGFzaGJvYXJkX3BhZ2VfYXJ0aWZhY3RzLnB5CkBAIC03LDcgKzcsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKIAogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZV9yZWNpcGVzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlX3JlY2lwZXMucHkKaW5kZXggYzU0MmQ0NS4uOWQ4NWJhOSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlX3JlY2lwZXMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlX3JlY2lwZXMucHkKQEAgLTcsNyArNyw3IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLnV0aWxzIGltcG9ydCB0aW1lem9uZQogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgUHJvamVjdCwgQnVpbGQsIFJlY2lwZSwgVGFzaywgTGF5ZXIsIExheWVyX1ZlcnNpb24KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZV90YXNrcy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZV90YXNrcy5weQppbmRleCAyMmFjYjQ3Li43ZmRmNzVkIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2J1aWxkZGFzaGJvYXJkX3BhZ2VfdGFza3MucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlX3Rhc2tzLnB5CkBAIC03LDcgKzcsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QsIEJ1aWxkLCBSZWNpcGUsIFRhc2ssIExheWVyLCBMYXllcl9WZXJzaW9uCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2pzX3VuaXRfdGVzdHMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2pzX3VuaXRfdGVzdHMucHkKaW5kZXggZThiNDI5NS4uZTYxNjNiYiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9qc191bml0X3Rlc3RzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfanNfdW5pdF90ZXN0cy5weQpAQCAtMTEsNyArMTEsNyBAQAogUnVuIHRoZSBqcyB1bml0IHRlc3RzCiAiIiIKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiBpbXBvcnQgbG9nZ2luZwogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2xhbmRpbmdfcGFnZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbGFuZGluZ19wYWdlLnB5CmluZGV4IDA3OTAxOTguLjhiYjY0YjkgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbGFuZGluZ19wYWdlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbGFuZGluZ19wYWdlLnB5CkBAIC03LDcgKzcsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgogIwogCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2xheWVyZGV0YWlsc19wYWdlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9sYXllcmRldGFpbHNfcGFnZS5weQppbmRleCBmODFlNjk2Li43MWJkZDJhIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2xheWVyZGV0YWlsc19wYWdlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbGF5ZXJkZXRhaWxzX3BhZ2UucHkKQEAgLTcsNyArNyw3IEBACiAjIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEludGVsIENvcnBvcmF0aW9uCiAjCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IExheWVyLCBMYXllcl9WZXJzaW9uLCBQcm9qZWN0LCBMYXllclNvdXJjZSwgUmVsZWFzZQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9tb3N0X3JlY2VudF9idWlsZHNfc3RhdGVzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9tb3N0X3JlY2VudF9idWlsZHNfc3RhdGVzLnB5CmluZGV4IDE1ZDI1ZGMuLjc4NDRhYWEgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbW9zdF9yZWNlbnRfYnVpbGRzX3N0YXRlcy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X21vc3RfcmVjZW50X2J1aWxkc19zdGF0ZXMucHkKQEAgLTcsNyArNyw3IEBACiAjIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEludGVsIENvcnBvcmF0aW9uCiAjCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVyc19iYXNlIGltcG9ydCBXYWl0CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X25ld19jdXN0b21faW1hZ2VfcGFnZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbmV3X2N1c3RvbV9pbWFnZV9wYWdlLnB5CmluZGV4IDBhYTNiN2EuLjk5MDZhZTQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbmV3X2N1c3RvbV9pbWFnZV9wYWdlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbmV3X2N1c3RvbV9pbWFnZV9wYWdlLnB5CkBAIC03LDcgKzcsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IEJpdGJha2VWZXJzaW9uLCBSZWxlYXNlLCBQcm9qZWN0LCBQcm9qZWN0TGF5ZXIsIExheWVyCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X25ld19wcm9qZWN0X3BhZ2UucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X25ld19wcm9qZWN0X3BhZ2UucHkKaW5kZXggOGU1NmJiMC4uZTIwYTFmNiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9uZXdfcHJvamVjdF9wYWdlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbmV3X3Byb2plY3RfcGFnZS5weQpAQCAtNyw3ICs3LDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKIGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQudWkgaW1wb3J0IFNlbGVjdAogZnJvbSBzZWxlbml1bS5jb21tb24uZXhjZXB0aW9ucyBpbXBvcnQgSW52YWxpZEVsZW1lbnRTdGF0ZUV4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9wcm9qZWN0X2J1aWxkc19wYWdlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9wcm9qZWN0X2J1aWxkc19wYWdlLnB5CmluZGV4IDQ3ZmIxMGIuLjUxNzE3ZTcgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfcHJvamVjdF9idWlsZHNfcGFnZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3Byb2plY3RfYnVpbGRzX3BhZ2UucHkKQEAgLTksNyArOSw3IEBACiAKIGltcG9ydCByZQogCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3Byb2plY3RfY29uZmlnX3BhZ2UucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3Byb2plY3RfY29uZmlnX3BhZ2UucHkKaW5kZXggMjgxNmViOS4uOTQ0YmNiMiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9wcm9qZWN0X2NvbmZpZ19wYWdlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfcHJvamVjdF9jb25maWdfcGFnZS5weQpAQCAtNywxMCArNyw3IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotaW1wb3J0IHJlCi0KLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCi1mcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiAKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgQml0YmFrZVZlcnNpb24sIFJlbGVhc2UsIFByb2plY3QsIFByb2plY3RWYXJpYWJsZQpAQCAtMjE2LDQgKzIxMyw1IEBACiAKICAgICAgICAgaGlkZGVuX2VsZW1lbnQgPSBzZWxmLmRyaXZlci5maW5kX2VsZW1lbnRfYnlfaWQoJ2hpbnRFcnJvci1zc3RhdGVfZGlyJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoaWRkZW5fZWxlbWVudC5pc19kaXNwbGF5ZWQoKSwgRmFsc2UsCi0gICAgICAgICAgICAnc3N0YXRlIGRpcmVjdG9yeSBwYXRoIHZhbGlkIGJ1dCB0cmVhdGVkIGFzIGludmFsaWQnKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgICAgICAgICAgICdzc3RhdGUgZGlyZWN0b3J5IHBhdGggdmFsaWQgYnV0IHRyZWF0ZWQgYXMgaW52YWxpZCcpCisKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfcHJvamVjdF9wYWdlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9wcm9qZWN0X3BhZ2UucHkKaW5kZXggOGI1ZTFiNi4uNTQ2MjkzZiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9wcm9qZWN0X3BhZ2UucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9wcm9qZWN0X3BhZ2UucHkKQEAgLTcsNyArNyw3IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLnV0aWxzIGltcG9ydCB0aW1lem9uZQogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9zYW1wbGUucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3NhbXBsZS5weQppbmRleCBmNGFkNjcwLi5iMDA2N2MyIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3NhbXBsZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3NhbXBsZS5weQpAQCAtMTYsNyArMTYsNyBAQAogYW5kIHNob3VsZCBiZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhpcyBzYW1wbGUuCiAiIiIKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiAKIGNsYXNzIFRlc3RTYW1wbGUoU2VsZW5pdW1UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3Rhc2tfcGFnZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfdGFza19wYWdlLnB5CmluZGV4IDI2ZjNkY2EuLjAxMWI1ODUgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfdGFza19wYWdlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfdGFza19wYWdlLnB5CkBAIC03LDcgKzcsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QsIEJ1aWxkLCBMYXllciwgTGF5ZXJfVmVyc2lvbiwgUmVjaXBlLCBUYXJnZXQKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfdG9hc3RlcnRhYmxlX3VpLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF90b2FzdGVydGFibGVfdWkucHkKaW5kZXggZWY3OGNiYi4uZTgyZDVlYyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF90b2FzdGVydGFibGVfdWkucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF90b2FzdGVydGFibGVfdWkucHkKQEAgLTksNyArOSw3IEBACiAKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IEJpdGJha2VWZXJzaW9uLCBSZWxlYXNlLCBQcm9qZWN0LCBCdWlsZApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9mdW5jdGlvbmFsX2Jhc2ljLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9mdW5jdGlvbmFsX2Jhc2ljLnB5CmluZGV4IDU2Yzg0ZmIuLjU2ODNlMzggMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfZnVuY3Rpb25hbF9iYXNpYy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2Z1bmN0aW9uYWxfYmFzaWMucHkKQEAgLTcsNyArNyw2IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotaW1wb3J0IHRpbWUKIGltcG9ydCByZQogZnJvbSB0ZXN0cy5mdW5jdGlvbmFsLmZ1bmN0aW9uYWxfaGVscGVycyBpbXBvcnQgU2VsZW5pdW1GdW5jdGlvbmFsVGVzdENhc2UKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgUHJvamVjdApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL3ZpZXdzL3Rlc3Rfdmlld3MucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvdmlld3MvdGVzdF92aWV3cy5weQppbmRleCA2OGQ5ZTlkLi43MzVkNTk2IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvdmlld3MvdGVzdF92aWV3cy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvdmlld3MvdGVzdF92aWV3cy5weQpAQCAtMTEsNyArMTEsNyBAQAogCiBmcm9tIGRqYW5nby50ZXN0IGltcG9ydCBUZXN0Q2FzZQogZnJvbSBkamFuZ28udGVzdC5jbGllbnQgaW1wb3J0IFJlcXVlc3RGYWN0b3J5Ci1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSBkamFuZ28uZGIubW9kZWxzIGltcG9ydCBRCiAKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgUHJvamVjdCwgUGFja2FnZQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvYXBpLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvYXBpLnB5CmluZGV4IDhiNDliM2UuLmI0Y2RjMzMgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL2FwaS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9hcGkucHkKQEAgLTEzLDcgKzEzLDYgQEAKIGltcG9ydCBqc29uCiBpbXBvcnQgc3VicHJvY2VzcwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQ291bnRlcgotZnJvbSBzaHV0aWwgaW1wb3J0IGNvcHlmaWxlCiAKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgUHJvamVjdCwgUHJvamVjdFRhcmdldCwgQnVpbGQsIExheWVyX1ZlcnNpb24KIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgTGF5ZXJWZXJzaW9uRGVwZW5kZW5jeSwgTGF5ZXJTb3VyY2UsIFByb2plY3RMYXllcgpAQCAtMjUsMTIgKzI0LDEwIEBACiAKIGZyb20gZGphbmdvLmh0dHAgaW1wb3J0IEh0dHBSZXNwb25zZSwgSnNvblJlc3BvbnNlCiBmcm9tIGRqYW5nby52aWV3cy5nZW5lcmljIGltcG9ydCBWaWV3Ci1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSBkamFuZ28uZGIubW9kZWxzIGltcG9ydCBRLCBGCiBmcm9tIGRqYW5nby5kYiBpbXBvcnQgRXJyb3IKIGZyb20gdG9hc3Rlcmd1aS50ZW1wbGF0ZXRhZ3MucHJvamVjdHRhZ3MgaW1wb3J0IGZpbHRlcmVkX2ZpbGVzaXplZm9ybWF0Ci1mcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKLWltcG9ydCBweXR6CiAKICMgZGV2ZWxvcG1lbnQvZGVidWdnaW5nIHN1cHBvcnQKIHZlcmJvc2UgPSAyCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90YWJsZXMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90YWJsZXMucHkKaW5kZXggYjNlYTIyMi4uNTI4ZGQzMiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGFibGVzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RhYmxlcy5weQpAQCAtNywxNSArNywxMCBAQAogIwogCiBmcm9tIHRvYXN0ZXJndWkud2lkZ2V0cyBpbXBvcnQgVG9hc3RlclRhYmxlCi1mcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFJlY2lwZSwgUHJvamVjdExheWVyLCBMYXllcl9WZXJzaW9uLCBNYWNoaW5lLCBQcm9qZWN0Citmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFJlY2lwZSwgUHJvamVjdExheWVyLCBMYXllcl9WZXJzaW9uLCBQcm9qZWN0CiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IEN1c3RvbUltYWdlUmVjaXBlLCBQYWNrYWdlLCBUYXJnZXQsIEJ1aWxkLCBMb2dNZXNzYWdlLCBUYXNrCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IEN1c3RvbUltYWdlUGFja2FnZSwgUGFja2FnZV9EZXBlbmRlbmN5TWFuYWdlcgotZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBEaXN0cm8KLWZyb20gZGphbmdvLmRiLm1vZGVscyBpbXBvcnQgUSwgTWF4LCBTdW0sIENvdW50LCBXaGVuLCBDYXNlLCBWYWx1ZSwgSW50ZWdlckZpZWxkCi1mcm9tIGRqYW5nby5jb25mLnVybHMgaW1wb3J0IHVybAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UsIHJlc29sdmUKLWZyb20gZGphbmdvLmh0dHAgaW1wb3J0IEh0dHBSZXNwb25zZQotZnJvbSBkamFuZ28udmlld3MuZ2VuZXJpYyBpbXBvcnQgVGVtcGxhdGVWaWV3Citmcm9tIGRqYW5nby5kYi5tb2RlbHMgaW1wb3J0IFEsIFN1bSwgQ291bnQsIFdoZW4sIENhc2UsIFZhbHVlLCBJbnRlZ2VyRmllbGQKIAogZnJvbSB0b2FzdGVyZ3VpLnRhYmxlZmlsdGVyIGltcG9ydCBUYWJsZUZpbHRlcgogZnJvbSB0b2FzdGVyZ3VpLnRhYmxlZmlsdGVyIGltcG9ydCBUYWJsZUZpbHRlckFjdGlvblRvZ2dsZQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGV0YWdzL29iamVjdHNfdG9fZGljdGlvbmFyaWVzX2ZpbHRlci5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRldGFncy9vYmplY3RzX3RvX2RpY3Rpb25hcmllc19maWx0ZXIucHkKaW5kZXggMDQ4ZDUzMy4uZTI0MjIzNCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGV0YWdzL29iamVjdHNfdG9fZGljdGlvbmFyaWVzX2ZpbHRlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXRhZ3Mvb2JqZWN0c190b19kaWN0aW9uYXJpZXNfZmlsdGVyLnB5CkBAIC0zLDcgKzMsNiBAQAogIwogCiBmcm9tIGRqYW5nbyBpbXBvcnQgdGVtcGxhdGUKLWltcG9ydCBqc29uCiAKIHJlZ2lzdGVyID0gdGVtcGxhdGUuTGlicmFyeSgpCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRldGFncy9wcm9qZWN0X3VybF90YWcucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXRhZ3MvcHJvamVjdF91cmxfdGFnLnB5CmluZGV4IDcxZTA5MjUuLjdiNmYxNWIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRldGFncy9wcm9qZWN0X3VybF90YWcucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGV0YWdzL3Byb2plY3RfdXJsX3RhZy5weQpAQCAtMyw3ICszLDcgQEAKICMKIAogZnJvbSBkamFuZ28gaW1wb3J0IHRlbXBsYXRlCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogCiByZWdpc3RlciA9IHRlbXBsYXRlLkxpYnJhcnkoKQogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXRhZ3MvcHJvamVjdHRhZ3MucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXRhZ3MvcHJvamVjdHRhZ3MucHkKaW5kZXggMWRiYWIzYi4uYzQzMmY1OSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGV0YWdzL3Byb2plY3R0YWdzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRldGFncy9wcm9qZWN0dGFncy5weQpAQCAtNiw3ICs2LDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZWRlbHRhCitmcm9tIGRhdGV0aW1lIGltcG9ydCB0aW1lZGVsdGEKIGZyb20gb3MucGF0aCBpbXBvcnQgcmVscGF0aAogaW1wb3J0IHJlCiBmcm9tIGRqYW5nbyBpbXBvcnQgdGVtcGxhdGUKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgICAjIGl0IG1hbnVhbGx5IGhlcmUKICAgICByZXR1cm4gbWFya19zYWZlKEpzb25MaWIuZHVtcHModmFsdWUsIGluZGVudD0yLCBkZWZhdWx0ID0gZGVmYXVsdCwgZW5zdXJlX2FzY2lpPUZhbHNlKS5yZXBsYWNlKCc8LycsICc8XFwvJykpCiAKLUByZWdpc3Rlci5hc3NpZ25tZW50X3RhZworQHJlZ2lzdGVyLnNpbXBsZV90YWcKIGRlZiBxdWVyeShxcywgKiprd2FyZ3MpOgogICAgICIiIiB0ZW1wbGF0ZSB0YWcgd2hpY2ggYWxsb3dzIHF1ZXJ5c2V0IGZpbHRlcmluZy4gVXNhZ2U6CiAgICAgICAgICAgeyUgcXVlcnkgYm9va3MgYXV0aG9yPWF1dGhvciBhcyBteWJvb2tzICV9CkBAIC04Myw3ICs4Myw3IEBACiBkZWYgbXVsdGlwbHkodmFsdWUsIGFyZyk6CiAgICAgcmV0dXJuIGludCh2YWx1ZSkgKiBpbnQoYXJnKQogCi1AcmVnaXN0ZXIuYXNzaWdubWVudF90YWcKK0ByZWdpc3Rlci5zaW1wbGVfdGFnCiBkZWYgZGF0ZWNvbXB1dGUoZGVsdGEsIHN0YXJ0ID0gdGltZXpvbmUubm93KCkpOgogICAgIHJldHVybiBzdGFydCArIHRpbWVkZWx0YShkZWx0YSkKIApAQCAtMjEyLDcgKzIxMiw3IEBACiAgICAgIiIiSWYgcGFja2FnZS5pbnN0YWxsZWRfc2l6ZSBub3QgbnVsbCBhbmQgbm90IGVtcHR5IHJldHVybiBpdCwKICAgICAgICBlbHNlIHJldHVybiBwYWNrYWdlLnNpemUKICAgICAiIiIKLSAgICByZXR1cm4gc2l6ZSBpZiAoaW5zdGFsbGVkX3NpemUgPT0gMCkgb3IgKGluc3RhbGxlZF9zaXplID09ICIiKSBvciAoaW5zdGFsbGVkX3NpemUgPT0gTm9uZSkgZWxzZSBpbnN0YWxsZWRfc2l6ZQorICAgIHJldHVybiBzaXplIGlmIChpbnN0YWxsZWRfc2l6ZSA9PSAwKSBvciAoaW5zdGFsbGVkX3NpemUgPT0gIiIpIG9yIChpbnN0YWxsZWRfc2l6ZSBpcyBOb25lKSBlbHNlIGluc3RhbGxlZF9zaXplCiAKIEByZWdpc3Rlci5maWx0ZXIKIGRlZiBmaWx0ZXJlZF9wYWNrYWdldmVyc2lvbih2ZXJzaW9uLCByZXZpc2lvbik6CkBAIC0yMjgsNyArMjI4LDcgQEAKICAgICAgICAgZm9ybWF0dGVkIG5pY2VseS4KICAgICAiIiIKICAgICBzaXplID0gcGFja2FnZV9vYmplY3QuaW5zdGFsbGVkX3NpemUKLSAgICBpZiBzaXplID09IE5vbmUgb3Igc2l6ZSA9PSAnJzoKKyAgICBpZiBzaXplIGlzIE5vbmUgb3Igc2l6ZSA9PSAnJzoKICAgICAgICAgc2l6ZSA9IHBhY2thZ2Vfb2JqZWN0LnNpemUKIAogICAgIHJldHVybiAnezouMSV9Jy5mb3JtYXQoZmxvYXQoc2l6ZSkvZmxvYXQodG90YWxfc2l6ZSkpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90eXBlYWhlYWRzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdHlwZWFoZWFkcy5weQppbmRleCBmZDc1MGZmLi5hMWU2ZmU5IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90eXBlYWhlYWRzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3R5cGVhaGVhZHMucHkKQEAgLTEwLDcgKzEwLDcgQEAKIAogZnJvbSB0b2FzdGVyZ3VpLndpZGdldHMgaW1wb3J0IFRvYXN0ZXJUeXBlQWhlYWQKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgUHJvamVjdAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLmNvcmUuY2FjaGUgaW1wb3J0IGNhY2hlCiAKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdXJscy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3VybHMucHkKaW5kZXggNjczZDlhZS4uZDJkZjRlNiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdXJscy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS91cmxzLnB5CkBAIC02LDEwICs2LDkgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRqYW5nby5jb25mLnVybHMgaW1wb3J0IGluY2x1ZGUsIHVybAotZnJvbSBkamFuZ28udmlld3MuZ2VuZXJpYyBpbXBvcnQgUmVkaXJlY3RWaWV3LCBUZW1wbGF0ZVZpZXcKK2Zyb20gZGphbmdvLmNvbmYudXJscyBpbXBvcnQgdXJsCitmcm9tIGRqYW5nby52aWV3cy5nZW5lcmljIGltcG9ydCBSZWRpcmVjdFZpZXcKIAotZnJvbSBkamFuZ28uaHR0cCBpbXBvcnQgSHR0cFJlc3BvbnNlQmFkUmVxdWVzdAogZnJvbSB0b2FzdGVyZ3VpIGltcG9ydCB0YWJsZXMKIGZyb20gdG9hc3Rlcmd1aSBpbXBvcnQgYnVpbGR0YWJsZXMKIGZyb20gdG9hc3Rlcmd1aSBpbXBvcnQgdHlwZWFoZWFkcwpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdmlld3MucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS92aWV3cy5weQppbmRleCBkN2FjYWZmLi45YTVlNDhlIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS92aWV3cy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS92aWV3cy5weQpAQCAtMTksOCArMTksOCBAQAogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBUYXJnZXRLZXJuZWxGaWxlLCBUYXJnZXRTREtGaWxlLCBUYXJnZXRfSW1hZ2VfRmlsZQogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBCaXRiYWtlVmVyc2lvbiwgQ3VzdG9tSW1hZ2VSZWNpcGUKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UsIHJlc29sdmUKLWZyb20gZGphbmdvLmNvcmUuZXhjZXB0aW9ucyBpbXBvcnQgTXVsdGlwbGVPYmplY3RzUmV0dXJuZWQsIE9iamVjdERvZXNOb3RFeGlzdAorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZSwgcmVzb2x2ZQorZnJvbSBkamFuZ28uY29yZS5leGNlcHRpb25zIGltcG9ydCBPYmplY3REb2VzTm90RXhpc3QKIGZyb20gZGphbmdvLmNvcmUucGFnaW5hdG9yIGltcG9ydCBQYWdpbmF0b3IsIEVtcHR5UGFnZSwgUGFnZU5vdEFuSW50ZWdlcgogZnJvbSBkamFuZ28uaHR0cCBpbXBvcnQgSHR0cFJlc3BvbnNlTm90Rm91bmQsIEpzb25SZXNwb25zZQogZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCkBAIC01MSw3ICs1MSw3IEBACiAgICAgZGVmIGdldF9taW1ldHlwZShzZWxmLCBwYXRoKToKICAgICAgICAgZ3Vlc3MgPSBtaW1ldHlwZXMuZ3Vlc3NfdHlwZShwYXRoLCBzZWxmLl9zdHJpY3QpCiAgICAgICAgIGd1ZXNzZWRfdHlwZSA9IGd1ZXNzWzBdCi0gICAgICAgIGlmIGd1ZXNzZWRfdHlwZSA9PSBOb25lOgorICAgICAgICBpZiBndWVzc2VkX3R5cGUgaXMgTm9uZToKICAgICAgICAgICAgIGd1ZXNzZWRfdHlwZSA9ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nCiAgICAgICAgIHJldHVybiBndWVzc2VkX3R5cGUKIApAQCAtMTI2LDcgKzEyNiw3IEBACiAgICAgcmV0dXJuIHsiaWQiOiB4LnBrLAogICAgICAgICAgICAgIm5hbWUiOiB4LmxheWVyLm5hbWUsCiAgICAgICAgICAgICAidG9vbHRpcCI6ICIlcyB8ICVzIiAlICh4LmxheWVyLnZjc191cmwseC5nZXRfdmNzX3JlZmVyZW5jZSgpKSwKLSAgICAgICAgICAgICJkZXRhaWwiOiAiKCVzIiAlIHgubGF5ZXIudmNzX3VybCArICgiKSIgaWYgeC5yZWxlYXNlID09IE5vbmUgZWxzZSAiIHwgIit4LmdldF92Y3NfcmVmZXJlbmNlKCkrIikiKSwKKyAgICAgICAgICAgICJkZXRhaWwiOiAiKCVzIiAlIHgubGF5ZXIudmNzX3VybCArICgiKSIgaWYgeC5yZWxlYXNlIGlzIE5vbmUgZWxzZSAiIHwgIit4LmdldF92Y3NfcmVmZXJlbmNlKCkrIikiKSwKICAgICAgICAgICAgICJnaXR1cmwiOiB4LmxheWVyLnZjc191cmwsCiAgICAgICAgICAgICAibGF5ZXJkZXRhaWx1cmwiIDogcmV2ZXJzZSgnbGF5ZXJkZXRhaWxzJywgYXJncz0ocHJqLmlkLHgucGspKSwKICAgICAgICAgICAgICJyZXZpc2lvbiIgOiB4LmdldF92Y3NfcmVmZXJlbmNlKCksCkBAIC0zNTIsNyArMzUyLDcgQEAKICMgc2V0IGNvb2tpZXMgZm9yIHBhcmFtZXRlcnMuIHRoaXMgaXMgdXNlZnVsbCBpbiBjYXNlIHBhcmFtZXRlcnMgYXJlIHNldAogIyBtYW51YWxseSBmcm9tIHRoZSBHRVQgdmFsdWVzIG9mIHRoZSBsaW5rCiBkZWYgX3NldF9wYXJhbWV0ZXJzX3ZhbHVlcyhwYWdlc2l6ZSwgb3JkZXJieSwgcmVxdWVzdCk6Ci0gICAgZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJlc29sdmUKKyAgICBmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXNvbHZlCiAgICAgY3VycmVudF91cmwgPSByZXNvbHZlKHJlcXVlc3QucGF0aF9pbmZvKS51cmxfbmFtZQogICAgIHJlcXVlc3Quc2Vzc2lvblsnJXNfY291bnQnICUgY3VycmVudF91cmxdID0gcGFnZXNpemUKICAgICByZXF1ZXN0LnNlc3Npb25bJyVzX29yZGVyYnknICUgY3VycmVudF91cmxdID1vcmRlcmJ5CkBAIC02NjQsNyArNjY0LDYgQEAKICAgICBfc2V0X3BhcmFtZXRlcnNfdmFsdWVzKHBhZ2VzaXplLCBvcmRlcmJ5LCByZXF1ZXN0KQogICAgIHJldHVybiByZXNwb25zZQogCi1mcm9tIGRqYW5nby5jb3JlLnNlcmlhbGl6ZXJzLmpzb24gaW1wb3J0IERqYW5nb0pTT05FbmNvZGVyCiBmcm9tIGRqYW5nby5odHRwIGltcG9ydCBIdHRwUmVzcG9uc2UKIGRlZiB4aHJfZGlyaW5mbyhyZXF1ZXN0LCBidWlsZF9pZCwgdGFyZ2V0X2lkKToKICAgICB0b3AgPSByZXF1ZXN0LkdFVC5nZXQoJ3N0YXJ0JywgJy8nKQpAQCAtNzE5LDcgKzcxOCw3IEBACiAgICAgICAgICAgICAgICAgcmVzb2x2ZWRfaWQgPSBvLnN5bV90YXJnZXRfaWQKICAgICAgICAgICAgICAgICByZXNvbHZlZF9wYXRoID0gby5wYXRoCiAgICAgICAgICAgICAgICAgaWYgdGFyZ2V0X3BhY2thZ2VzLmNvdW50KCk6Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIHJlc29sdmVkX2lkICE9ICIiIGFuZCByZXNvbHZlZF9pZCAhPSBOb25lOgorICAgICAgICAgICAgICAgICAgICB3aGlsZSByZXNvbHZlZF9pZCAhPSAiIiBhbmQgcmVzb2x2ZWRfaWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICB0ZiA9IFRhcmdldF9GaWxlLm9iamVjdHMuZ2V0KHBrPXJlc29sdmVkX2lkKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRfcGF0aCA9IHRmLnBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkX2lkID0gdGYuc3ltX3RhcmdldF9pZApAQCAtNzMxLDEwICs3MzAsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5WydwYWNrYWdlX2lkJ10gPSBzdHIocC5pZCkKICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5WydwYWNrYWdlJ10gPSBwLm5hbWUKICAgICAgICAgICAgICAgICAjIGRvbid0IHVzZSByZXNvbHZlZCBwYXRoIGZyb20gYWJvdmUsIHNob3cgaW1tZWRpYXRlIGxpbmstdG8KLSAgICAgICAgICAgICAgICBpZiBvLnN5bV90YXJnZXRfaWQgIT0gIiIgYW5kIG8uc3ltX3RhcmdldF9pZCAhPSBOb25lOgorICAgICAgICAgICAgICAgIGlmIG8uc3ltX3RhcmdldF9pZCAhPSAiIiBhbmQgby5zeW1fdGFyZ2V0X2lkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBlbnRyeVsnbGlua190byddID0gVGFyZ2V0X0ZpbGUub2JqZWN0cy5nZXQocGs9by5zeW1fdGFyZ2V0X2lkKS5wYXRoCiAgICAgICAgICAgICBlbnRyeVsnc2l6ZSddID0gZmlsdGVyZWRfZmlsZXNpemVmb3JtYXQoby5zaXplKQotICAgICAgICAgICAgaWYgZW50cnlbJ2xpbmtfdG8nXSAhPSBOb25lOgorICAgICAgICAgICAgaWYgZW50cnlbJ2xpbmtfdG8nXSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBlbnRyeVsncGVybWlzc2lvbiddID0gbm9kZV9zdHJbby5pbm9kZXR5cGVdICsgby5wZXJtaXNzaW9uCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGVudHJ5WydwZXJtaXNzaW9uJ10gPSBub2RlX3N0cltvLmlub2RldHlwZV0gKyBvLnBlcm1pc3Npb24KQEAgLTc1Niw3ICs3NTUsNyBAQAogICAgIG9iamVjdHMgPSBfZ2V0X2Rpcl9lbnRyaWVzKGJ1aWxkX2lkLCB0YXJnZXRfaWQsICcvJykKICAgICBwYWNrYWdlc19zdW0gPSBQYWNrYWdlLm9iamVjdHMuZmlsdGVyKGlkX19pbj1UYXJnZXRfSW5zdGFsbGVkX1BhY2thZ2Uub2JqZWN0cy5maWx0ZXIodGFyZ2V0X2lkPXRhcmdldF9pZCkudmFsdWVzKCdwYWNrYWdlX2lkJykpLmFnZ3JlZ2F0ZShTdW0oJ2luc3RhbGxlZF9zaXplJykpCiAgICAgZGlyX2xpc3QgPSBOb25lCi0gICAgaWYgZmlsZV9wYXRoICE9IE5vbmU6CisgICAgaWYgZmlsZV9wYXRoIGlzIG5vdCBOb25lOgogICAgICAgICAiIiIKICAgICAgICAgTGluayBmcm9tIHRoZSBpbmNsdWRlZCBwYWNrYWdlIGRldGFpbCBmaWxlIGxpc3QgcGFnZSBhbmQgaXMKICAgICAgICAgcmVxdWVzdGluZyBvcGVuaW5nIHRoZSBkaXIgaW5mbyB0byBhIHNwZWNpZmljIGZpbGUgcGF0aC4KQEAgLTEwMzAsMTUgKzEwMjksMTUgQEAKIAogZGVmIF9nZXRfcGFja2FnZV9hbGlhcyhwYWNrYWdlKToKICAgICBhbGlhcyA9IHBhY2thZ2UuaW5zdGFsbGVkX25hbWUKLSAgICBpZiBhbGlhcyAhPSBOb25lIGFuZCBhbGlhcyAhPSAnJyBhbmQgYWxpYXMgIT0gcGFja2FnZS5uYW1lOgorICAgIGlmIGFsaWFzIGlzIG5vdCBOb25lIGFuZCBhbGlhcyAhPSAnJyBhbmQgYWxpYXMgIT0gcGFja2FnZS5uYW1lOgogICAgICAgICByZXR1cm4gYWxpYXMKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gJycKIAogZGVmIF9nZXRfZnVsbHBhY2thZ2VzcGVjKHBhY2thZ2UpOgogICAgIHIgPSBwYWNrYWdlLm5hbWUKLSAgICB2ZXJzaW9uX2dvb2QgPSBwYWNrYWdlLnZlcnNpb24gIT0gTm9uZSBhbmQgIHBhY2thZ2UudmVyc2lvbiAhPSAnJwotICAgIHJldmlzaW9uX2dvb2QgPSBwYWNrYWdlLnJldmlzaW9uICE9IE5vbmUgYW5kIHBhY2thZ2UucmV2aXNpb24gIT0gJycKKyAgICB2ZXJzaW9uX2dvb2QgPSBwYWNrYWdlLnZlcnNpb24gaXMgbm90IE5vbmUgYW5kICBwYWNrYWdlLnZlcnNpb24gIT0gJycKKyAgICByZXZpc2lvbl9nb29kID0gcGFja2FnZS5yZXZpc2lvbiBpcyBub3QgTm9uZSBhbmQgcGFja2FnZS5yZXZpc2lvbiAhPSAnJwogICAgIGlmIHZlcnNpb25fZ29vZCBvciByZXZpc2lvbl9nb29kOgogICAgICAgICByICs9ICdfJwogICAgICAgICBpZiB2ZXJzaW9uX2dvb2Q6CkBAIC0xMTkyLDcgKzExOTEsNyBAQAogICAgICAgICByZXR1cm4gX3JlZGlyZWN0X3BhcmFtZXRlcnMoICdwYWNrYWdlX2luY2x1ZGVkX3JldmVyc2VfZGVwZW5kZW5jaWVzJywgcmVxdWVzdC5HRVQsIG1hbmRhdG9yeV9wYXJhbWV0ZXJzLCBidWlsZF9pZCA9IGJ1aWxkX2lkLCB0YXJnZXRfaWQgPSB0YXJnZXRfaWQsIHBhY2thZ2VfaWQgPSBwYWNrYWdlX2lkKQogICAgIChmaWx0ZXJfc3RyaW5nLCBzZWFyY2hfdGVybSwgb3JkZXJpbmdfc3RyaW5nKSA9IF9zZWFyY2hfdHVwbGUocmVxdWVzdCwgUGFja2FnZV9GaWxlKQogCi0gICAgcXVlcnlzZXQgPSBQYWNrYWdlX0RlcGVuZGVuY3kub2JqZWN0cy5zZWxlY3RfcmVsYXRlZCgnZGVwZW5kc19vbl9fbmFtZScsICdkZXBlbmRzX29uX19zaXplJykuZmlsdGVyKGRlcGVuZHNfb249cGFja2FnZV9pZCwgdGFyZ2V0X2lkPXRhcmdldF9pZCwgZGVwX3R5cGU9UGFja2FnZV9EZXBlbmRlbmN5LlRZUEVfVFJERVBFTkRTKQorICAgIHF1ZXJ5c2V0ID0gUGFja2FnZV9EZXBlbmRlbmN5Lm9iamVjdHMuc2VsZWN0X3JlbGF0ZWQoJ2RlcGVuZHNfb24nKS5maWx0ZXIoZGVwZW5kc19vbj1wYWNrYWdlX2lkLCB0YXJnZXRfaWQ9dGFyZ2V0X2lkLCBkZXBfdHlwZT1QYWNrYWdlX0RlcGVuZGVuY3kuVFlQRV9UUkRFUEVORFMpCiAgICAgb2JqZWN0cyA9IF9nZXRfcXVlcnlzZXQoUGFja2FnZV9EZXBlbmRlbmN5LCBxdWVyeXNldCwgZmlsdGVyX3N0cmluZywgc2VhcmNoX3Rlcm0sIG9yZGVyaW5nX3N0cmluZywgJ3BhY2thZ2VfX25hbWUnKQogCiAgICAgcGFja2FnZSA9IFBhY2thZ2Uub2JqZWN0cy5nZXQocGs9cGFja2FnZV9pZCkKQEAgLTEzNDAsNyArMTMzOSw3IEBACiAKIGltcG9ydCB0b2FzdGVybWFpbi5zZXR0aW5ncwogCi1mcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QsIFByb2plY3RMYXllciwgUHJvamVjdFRhcmdldCwgUHJvamVjdFZhcmlhYmxlCitmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QsIFByb2plY3RMYXllciwgUHJvamVjdFZhcmlhYmxlCiBmcm9tIGJsZGNvbnRyb2wubW9kZWxzIGltcG9ydCAgQnVpbGRFbnZpcm9ubWVudAogCiAjIHdlIGhhdmUgYSBzZXQgb2YgZnVuY3Rpb25zIGlmIHdlJ3JlIGluIG1hbmFnZWQgbW9kZSwgb3IKQEAgLTEzNDksMTAgKzEzNDgsOCBAQAogaWYgVHJ1ZToKICAgICBmcm9tIGRqYW5nby5jb250cmliLmF1dGgubW9kZWxzIGltcG9ydCBVc2VyCiAgICAgZnJvbSBkamFuZ28uY29udHJpYi5hdXRoIGltcG9ydCBhdXRoZW50aWNhdGUsIGxvZ2luCi0gICAgZnJvbSBkamFuZ28uY29udHJpYi5hdXRoLmRlY29yYXRvcnMgaW1wb3J0IGxvZ2luX3JlcXVpcmVkCiAKLSAgICBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IExheWVyU291cmNlLCBUb2FzdGVyU2V0dGluZywgUmVsZWFzZSwgTWFjaGluZSwgTGF5ZXJWZXJzaW9uRGVwZW5kZW5jeQotICAgIGZyb20gYmxkY29udHJvbC5tb2RlbHMgaW1wb3J0IEJ1aWxkUmVxdWVzdAorICAgIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgTGF5ZXJTb3VyY2UsIFRvYXN0ZXJTZXR0aW5nLCBSZWxlYXNlCiAKICAgICBpbXBvcnQgdHJhY2ViYWNrCiAKQEAgLTEzNjcsOCArMTM2NCw4IEBACiAKICAgICAgICAgdGVtcGxhdGUgPSAibmV3cHJvamVjdC5odG1sIgogICAgICAgICBjb250ZXh0ID0gewotICAgICAgICAgICAgJ2VtYWlsJzogcmVxdWVzdC51c2VyLmVtYWlsIGlmIHJlcXVlc3QudXNlci5pc19hdXRoZW50aWNhdGVkKCkgZWxzZSAnJywKLSAgICAgICAgICAgICd1c2VybmFtZSc6IHJlcXVlc3QudXNlci51c2VybmFtZSBpZiByZXF1ZXN0LnVzZXIuaXNfYXV0aGVudGljYXRlZCgpIGVsc2UgJycsCisgICAgICAgICAgICAnZW1haWwnOiByZXF1ZXN0LnVzZXIuZW1haWwgaWYgcmVxdWVzdC51c2VyLmlzX2F1dGhlbnRpY2F0ZWQgZWxzZSAnJywKKyAgICAgICAgICAgICd1c2VybmFtZSc6IHJlcXVlc3QudXNlci51c2VybmFtZSBpZiByZXF1ZXN0LnVzZXIuaXNfYXV0aGVudGljYXRlZCBlbHNlICcnLAogICAgICAgICAgICAgJ3JlbGVhc2VzJzogUmVsZWFzZS5vYmplY3RzLm9yZGVyX2J5KCJkZXNjcmlwdGlvbiIpLAogICAgICAgICB9CiAKQEAgLTEzOTQsNyArMTM5MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICMgc2V0IGFsZXJ0IGZvciBtaXNzaW5nIGZpZWxkcwogICAgICAgICAgICAgICAgICAgICByYWlzZSBCYWRQYXJhbWV0ZXJFeGNlcHRpb24oIkZpZWxkcyBtaXNzaW5nOiAlcyIgJSAiLCAiLmpvaW4obWlzc2luZykpCiAKLSAgICAgICAgICAgICAgICBpZiBub3QgcmVxdWVzdC51c2VyLmlzX2F1dGhlbnRpY2F0ZWQoKToKKyAgICAgICAgICAgICAgICBpZiBub3QgcmVxdWVzdC51c2VyLmlzX2F1dGhlbnRpY2F0ZWQ6CiAgICAgICAgICAgICAgICAgICAgIHVzZXIgPSBhdXRoZW50aWNhdGUodXNlcm5hbWUgPSByZXF1ZXN0LlBPU1QuZ2V0KCd1c2VybmFtZScsICdfYW5vbnVzZXInKSwgcGFzc3dvcmQgPSAnbm9wYXNzJykKICAgICAgICAgICAgICAgICAgICAgaWYgdXNlciBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgdXNlciA9IFVzZXIub2JqZWN0cy5jcmVhdGVfdXNlcih1c2VybmFtZSA9IHJlcXVlc3QuUE9TVC5nZXQoJ3VzZXJuYW1lJywgJ19hbm9udXNlcicpLCBlbWFpbCA9IHJlcXVlc3QuUE9TVC5nZXQoJ2VtYWlsJywgJycpLCBwYXNzd29yZCA9ICJub3Bhc3MiKQpAQCAtMTQ0MSw4ICsxNDM4LDggQEAKICAgICAgICAgcHJvamVjdCA9IFByb2plY3Qub2JqZWN0cy5nZXQocGs9cGlkKQogICAgICAgICB0ZW1wbGF0ZSA9ICJuZXdwcm9qZWN0X3NwZWNpZmljLmh0bWwiCiAgICAgICAgIGNvbnRleHQgPSB7Ci0gICAgICAgICAgICAnZW1haWwnOiByZXF1ZXN0LnVzZXIuZW1haWwgaWYgcmVxdWVzdC51c2VyLmlzX2F1dGhlbnRpY2F0ZWQoKSBlbHNlICcnLAotICAgICAgICAgICAgJ3VzZXJuYW1lJzogcmVxdWVzdC51c2VyLnVzZXJuYW1lIGlmIHJlcXVlc3QudXNlci5pc19hdXRoZW50aWNhdGVkKCkgZWxzZSAnJywKKyAgICAgICAgICAgICdlbWFpbCc6IHJlcXVlc3QudXNlci5lbWFpbCBpZiByZXF1ZXN0LnVzZXIuaXNfYXV0aGVudGljYXRlZCBlbHNlICcnLAorICAgICAgICAgICAgJ3VzZXJuYW1lJzogcmVxdWVzdC51c2VyLnVzZXJuYW1lIGlmIHJlcXVlc3QudXNlci5pc19hdXRoZW50aWNhdGVkIGVsc2UgJycsCiAgICAgICAgICAgICAncmVsZWFzZXMnOiBSZWxlYXNlLm9iamVjdHMub3JkZXJfYnkoImRlc2NyaXB0aW9uIiksCiAgICAgICAgICAgICAncHJvamVjdG5hbWUnOiBwcm9qZWN0Lm5hbWUsCiAgICAgICAgICAgICAncHJvamVjdF9wayc6IHByb2plY3QucGssCkBAIC0xNDcyLDcgKzE0NjksNyBAQAogICAgICAgICAgICAgICAgICAgICAjIHNldCBhbGVydCBmb3IgbWlzc2luZyBmaWVsZHMKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgQmFkUGFyYW1ldGVyRXhjZXB0aW9uKCJGaWVsZHMgbWlzc2luZzogJXMiICUgIiwgIi5qb2luKG1pc3NpbmcpKQogCi0gICAgICAgICAgICAgICAgaWYgbm90IHJlcXVlc3QudXNlci5pc19hdXRoZW50aWNhdGVkKCk6CisgICAgICAgICAgICAgICAgaWYgbm90IHJlcXVlc3QudXNlci5pc19hdXRoZW50aWNhdGVkOgogICAgICAgICAgICAgICAgICAgICB1c2VyID0gYXV0aGVudGljYXRlKHVzZXJuYW1lID0gcmVxdWVzdC5QT1NULmdldCgndXNlcm5hbWUnLCAnX2Fub251c2VyJyksIHBhc3N3b3JkID0gJ25vcGFzcycpCiAgICAgICAgICAgICAgICAgICAgIGlmIHVzZXIgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIgPSBVc2VyLm9iamVjdHMuY3JlYXRlX3VzZXIodXNlcm5hbWUgPSByZXF1ZXN0LlBPU1QuZ2V0KCd1c2VybmFtZScsICdfYW5vbnVzZXInKSwgZW1haWwgPSByZXF1ZXN0LlBPU1QuZ2V0KCdlbWFpbCcsICcnKSwgcGFzc3dvcmQgPSAibm9wYXNzIikKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3dpZGdldHMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS93aWRnZXRzLnB5CmluZGV4IDY0NWY0NTguLmNlZmY1MjkgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3dpZGdldHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvd2lkZ2V0cy5weQpAQCAtMjIsNyArMjIsNyBAQAogZnJvbSB0b2FzdGVyZ3VpLnRlbXBsYXRldGFncy5wcm9qZWN0dGFncyBpbXBvcnQgc2VjdG9obXMsIGdldF90YXNrcwogZnJvbSB0b2FzdGVyZ3VpLnRlbXBsYXRldGFncy5wcm9qZWN0dGFncyBpbXBvcnQganNvbiBhcyB0ZW1wbGF0ZV9qc29uCiBmcm9tIGRqYW5nby5odHRwIGltcG9ydCBKc29uUmVzcG9uc2UKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiAKIGltcG9ydCB0eXBlcwogaW1wb3J0IGpzb24KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkZGVsZXRlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL21hbmFnZW1lbnQvY29tbWFuZHMvYnVpbGRkZWxldGUucHkKaW5kZXggYzJkNzczYS4uOTM5MTlkZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL21hbmFnZW1lbnQvY29tbWFuZHMvYnVpbGRkZWxldGUucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL21hbmFnZW1lbnQvY29tbWFuZHMvYnVpbGRkZWxldGUucHkKQEAgLTIsMTIgKzIsMTAgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQuYmFzZSBpbXBvcnQgQmFzZUNvbW1hbmQsIENvbW1hbmRFcnJvcgorZnJvbSBkamFuZ28uY29yZS5tYW5hZ2VtZW50LmJhc2UgaW1wb3J0IEJhc2VDb21tYW5kCiBmcm9tIGRqYW5nby5jb3JlLmV4Y2VwdGlvbnMgaW1wb3J0IE9iamVjdERvZXNOb3RFeGlzdAogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBCdWlsZAogZnJvbSBkamFuZ28uZGIgaW1wb3J0IE9wZXJhdGlvbmFsRXJyb3IKLWltcG9ydCBvcwotCiAKIAogY2xhc3MgQ29tbWFuZChCYXNlQ29tbWFuZCk6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vbWFuYWdlbWVudC9jb21tYW5kcy9idWlsZGltcG9ydC5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkaW1wb3J0LnB5CmluZGV4IDQwOGFkNDQuLjU5ZGE2ZmYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkaW1wb3J0LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkaW1wb3J0LnB5CkBAIC0zMSwxMiArMzEsMTAgQEAKIAogIyAuLi9iaXRiYWtlL2xpYi90b2FzdGVyL21hbmFnZS5weSBidWlsZGltcG9ydCAtLW5hbWU9dGVzdCAtLXBhdGg9YHB3ZGAgLS1jYWxsYmFjaz0iIiAtLWNvbW1hbmQ9aW1wb3J0CiAKLWZyb20gZGphbmdvLmNvcmUubWFuYWdlbWVudC5iYXNlIGltcG9ydCBCYXNlQ29tbWFuZCwgQ29tbWFuZEVycm9yCi1mcm9tIGRqYW5nby5jb3JlLmV4Y2VwdGlvbnMgaW1wb3J0IE9iamVjdERvZXNOb3RFeGlzdAotZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBQcm9qZWN0TWFuYWdlciwgUHJvamVjdCwgUmVsZWFzZSwgUHJvamVjdFZhcmlhYmxlCitmcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQuYmFzZSBpbXBvcnQgQmFzZUNvbW1hbmQKK2Zyb20gb3JtLm1vZGVscyBpbXBvcnQgUHJvamVjdCwgUmVsZWFzZSwgUHJvamVjdFZhcmlhYmxlCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IExheWVyLCBMYXllcl9WZXJzaW9uLCBMYXllclNvdXJjZSwgUHJvamVjdExheWVyCiBmcm9tIHRvYXN0ZXJndWkuYXBpIGltcG9ydCBzY2FuX2xheWVyX2NvbnRlbnQKLWZyb20gZGphbmdvLmRiIGltcG9ydCBPcGVyYXRpb25hbEVycm9yCiAKIGltcG9ydCBvcwogaW1wb3J0IHJlCkBAIC0xMTYsNiArMTE0LDE1IEBACiAgICAgICAgICAgICBoZWxwPSdjb21tYW5kIChjb25maWd1cmUscmVjb25maWd1cmUsaW1wb3J0KScsCiAgICAgICAgICAgICApCiAKKyAgICBkZWYgZ2V0X3ZhcihzZWxmLCB2YXJuYW1lKToKKyAgICAgICAgdmFsdWUgPSBzZWxmLnZhcnMuZ2V0KHZhcm5hbWUsICcnKQorICAgICAgICBpZiB2YWx1ZToKKyAgICAgICAgICAgIHZhcnJlZnMgPSByZS5maW5kYWxsKCdcJHsoW159XSopfScsIHZhbHVlKQorICAgICAgICAgICAgZm9yIHJlZiBpbiB2YXJyZWZzOgorICAgICAgICAgICAgICAgIGlmIHJlZiBpbiBzZWxmLnZhcnM6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnJHslc30nICUgcmVmLCBzZWxmLnZhcnNbcmVmXSkKKyAgICAgICAgcmV0dXJuIHZhbHVlCisKICAgICAjIEV4dHJhY3QgdGhlIGJiIHZhcmlhYmxlcyBmcm9tIGEgY29uZiBmaWxlCiAgICAgZGVmIHNjYW5fY29uZihzZWxmLGZuKToKICAgICAgICAgdmFycyA9IHNlbGYudmFycwpAQCAtMjQzLDcgKzI1MCw3IEBACiAgICAgIyBBcHBseSB0YWJsZSBvZiBhbGwgbGF5ZXIgdmVyc2lvbnMKICAgICBkZWYgZXh0cmFjdF9iYmxheWVycyhzZWxmKToKICAgICAgICAgIyBzZXQgdXAgdGhlIGNvbnN0YW50cwotICAgICAgICBiYmxheWVyX3N0ciA9IHNlbGYudmFyc1snQkJMQVlFUlMnXQorICAgICAgICBiYmxheWVyX3N0ciA9IHNlbGYuZ2V0X3ZhcignQkJMQVlFUlMnKQogICAgICAgICBUT0FTVEVSX0RJUiA9IG9zLmVudmlyb24uZ2V0KCdUT0FTVEVSX0RJUicpCiAgICAgICAgIElOU1RBTExfQ0xPTkVfUFJFRklYID0gb3MucGF0aC5kaXJuYW1lKFRPQVNURVJfRElSKSArICIvIgogICAgICAgICBUT0FTVEVSX0NMT05FX1BSRUZJWCA9IFRPQVNURVJfRElSICsgIi9fdG9hc3Rlcl9jbG9uZXMvIgpAQCAtNDIzLDYgKzQzMCw3IEBACiAKICAgICAjIFNjYW4gdGhlIHByb2plY3QncyBjb25mIGZpbGVzIChpZiBhbnkpCiAgICAgZGVmIHNjYW5fY29uZl92YXJpYWJsZXMoc2VsZixwcm9qZWN0X3BhdGgpOgorICAgICAgICBzZWxmLnZhcnNbJ1RPUERJUiddID0gcHJvamVjdF9wYXRoCiAgICAgICAgICMgc2NhbiB0aGUgcHJvamVjdCdzIHNldHRpbmdzLCBhZGQgYW55IG5ldyBsYXllcnMgb3IgdmFyaWFibGVzCiAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKCIlcy9jb25mL2xvY2FsLmNvbmYiICUgcHJvamVjdF9wYXRoKToKICAgICAgICAgICAgIHNlbGYuc2Nhbl9jb25mKCIlcy9jb25mL2xvY2FsLmNvbmYiICUgcHJvamVjdF9wYXRoKQpAQCAtNDY4LDcgKzQ3Niw2IEBACiAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VfbmFtZSA9ICdOb25lJyBpZiBub3QgcGwubGF5ZXJjb21taXQucmVsZWFzZSBlbHNlIHBsLmxheWVyY29tbWl0LnJlbGVhc2UubmFtZQogICAgICAgICAgICAgICAgICAgICBwcmludCgiIEFGVEVSIDpQcm9qZWN0TGF5ZXI9JXMsJXMsJXMsJXMiICUgKHBsLmxheWVyY29tbWl0LmxheWVyLm5hbWUscmVsZWFzZV9uYW1lLHBsLmxheWVyY29tbWl0LmJyYW5jaCxwbC5sYXllcmNvbW1pdC5jb21taXQpKQogCi0KICAgICBkZWYgaGFuZGxlKHNlbGYsICphcmdzLCAqKm9wdGlvbnMpOgogICAgICAgICBwcm9qZWN0X25hbWUgPSBvcHRpb25zWyduYW1lJ10KICAgICAgICAgcHJvamVjdF9wYXRoID0gb3B0aW9uc1sncGF0aCddCkBAIC01MDcsNyArNTE0LDcgQEAKICAgICAgICAgZGVmYXVsdF9yZWxlYXNlID0gUmVsZWFzZS5vYmplY3RzLmdldChpZD0xKQogCiAgICAgICAgICMgU0FOSVRZOiBpZiAncmVjb25maWcnIGJ1dCBwcm9qZWN0IGRvZXMgbm90IGV4aXN0IChkZWxldGVkIGV4dGVybmFsbHkpLCBzd2l0Y2ggdG8gJ2ltcG9ydCcKLSAgICAgICAgaWYgKCJyZWNvbmZpZ3VyZSIgPT0gb3B0aW9uc1snY29tbWFuZCddKSBhbmQgKE5vbmUgPT0gcHJvamVjdCk6CisgICAgICAgIGlmICgicmVjb25maWd1cmUiID09IG9wdGlvbnNbJ2NvbW1hbmQnXSkgYW5kIHByb2plY3QgaXMgTm9uZToKICAgICAgICAgICAgIG9wdGlvbnNbJ2NvbW1hbmQnXSA9ICdpbXBvcnQnCiAKICAgICAgICAgIyAnQ29uZmlndXJlJzoKQEAgLTU1Myw2ICs1NjAsNyBAQAogICAgICAgICAgICAgIyBwcmVzZXQgdGhlIG1vZGUgYW5kIGRlZmF1bHQgaW1hZ2UgcmVjaXBlCiAgICAgICAgICAgICBwcm9qZWN0LnNldF92YXJpYWJsZShQcm9qZWN0LlBST0pFQ1RfU1BFQ0lGSUNfSVNORVcsUHJvamVjdC5QUk9KRUNUX1NQRUNJRklDX05FVykKICAgICAgICAgICAgIHByb2plY3Quc2V0X3ZhcmlhYmxlKFByb2plY3QuUFJPSkVDVF9TUEVDSUZJQ19ERUZBVUxUSU1BR0UsImNvcmUtaW1hZ2UtbWluaW1hbCIpCisKICAgICAgICAgICAgICMgQXNzZXJ0IGFueSBleHRlbmRlZC9jdXN0b20gYWN0aW9ucyBvciB2YXJpYWJsZXMgZm9yIG5ldyBub24tVG9hc3RlciBwcm9qZWN0cwogICAgICAgICAgICAgaWYgbm90IGxlbihzZWxmLnRvYXN0ZXJfdmFycyk6CiAgICAgICAgICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL21hbmFnZW1lbnQvY29tbWFuZHMvYnVpbGRzbGlzdC5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkc2xpc3QucHkKaW5kZXggMWVkMjAyMi4uM2FkNTI4OSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL21hbmFnZW1lbnQvY29tbWFuZHMvYnVpbGRzbGlzdC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vbWFuYWdlbWVudC9jb21tYW5kcy9idWlsZHNsaXN0LnB5CkBAIC0yLDkgKzIsOCBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gZGphbmdvLmNvcmUubWFuYWdlbWVudC5iYXNlIGltcG9ydCBCYXNlQ29tbWFuZCwgQ29tbWFuZEVycm9yCitmcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQuYmFzZSBpbXBvcnQgQmFzZUNvbW1hbmQKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgQnVpbGQKLWltcG9ydCBvcwogCiAKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL3NldHRpbmdzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL3NldHRpbmdzLnB5CmluZGV4IDc0NTAxZmEuLmE0YjM3MGMgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9zZXR0aW5ncy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vc2V0dGluZ3MucHkKQEAgLTE4OSwxNSArMTg5LDE2IEBACiAgICAgfSwKIF0KIAotTUlERExFV0FSRV9DTEFTU0VTID0gKAorTUlERExFV0FSRSA9IFsKICAgICAnZGphbmdvLm1pZGRsZXdhcmUuY29tbW9uLkNvbW1vbk1pZGRsZXdhcmUnLAogICAgICdkamFuZ28uY29udHJpYi5zZXNzaW9ucy5taWRkbGV3YXJlLlNlc3Npb25NaWRkbGV3YXJlJywKICAgICAnZGphbmdvLm1pZGRsZXdhcmUuY3NyZi5Dc3JmVmlld01pZGRsZXdhcmUnLAogICAgICdkamFuZ28uY29udHJpYi5hdXRoLm1pZGRsZXdhcmUuQXV0aGVudGljYXRpb25NaWRkbGV3YXJlJywKICAgICAnZGphbmdvLmNvbnRyaWIubWVzc2FnZXMubWlkZGxld2FyZS5NZXNzYWdlTWlkZGxld2FyZScsCi0gICAgIyBVbmNvbW1lbnQgdGhlIG5leHQgbGluZSBmb3Igc2ltcGxlIGNsaWNramFja2luZyBwcm90ZWN0aW9uOgotICAgICMgJ2RqYW5nby5taWRkbGV3YXJlLmNsaWNramFja2luZy5YRnJhbWVPcHRpb25zTWlkZGxld2FyZScsCi0pCisgICAgJ2RqYW5nby5jb250cmliLmF1dGgubWlkZGxld2FyZS5BdXRoZW50aWNhdGlvbk1pZGRsZXdhcmUnLAorICAgICdkamFuZ28uY29udHJpYi5tZXNzYWdlcy5taWRkbGV3YXJlLk1lc3NhZ2VNaWRkbGV3YXJlJywKKyAgICAnZGphbmdvLmNvbnRyaWIuc2Vzc2lvbnMubWlkZGxld2FyZS5TZXNzaW9uTWlkZGxld2FyZScsCitdCiAKIENBQ0hFUyA9IHsKICAgICAjICAgICAgICAnZGVmYXVsdCc6IHsKQEAgLTI0OCw3ICsyNDksNyBAQAogaWYgb3MuZW52aXJvbi5nZXQoJ1RPQVNURVJfREVWRUwnLCBOb25lKSBpcyBub3QgTm9uZToKICAgICB0cnk6CiAgICAgICAgIGltcG9ydCBmcmVzaAotICAgICAgICBNSURETEVXQVJFX0NMQVNTRVMgPSAoImZyZXNoLm1pZGRsZXdhcmUuRnJlc2hNaWRkbGV3YXJlIiwpICsgTUlERExFV0FSRV9DTEFTU0VTCisgICAgICAgIE1JRERMRVdBUkUgPSBbImZyZXNoLm1pZGRsZXdhcmUuRnJlc2hNaWRkbGV3YXJlIixdICsgTUlERExFV0FSRQogICAgICAgICBJTlNUQUxMRURfQVBQUyA9IElOU1RBTExFRF9BUFBTICsgKCdmcmVzaCcsKQogICAgICAgICBGUkVTSF9FTkFCTEVEID0gVHJ1ZQogICAgIGV4Y2VwdDoKQEAgLTI1OCw4ICsyNTksOCBAQAogaWYgb3MuZW52aXJvbi5nZXQoJ1RPQVNURVJfREVWRUwnLCBOb25lKSBpcyBub3QgTm9uZToKICAgICB0cnk6CiAgICAgICAgIGltcG9ydCBkZWJ1Z190b29sYmFyLCBkZWJ1Z19wYW5lbAotICAgICAgICBNSURETEVXQVJFX0NMQVNTRVMgPSAoJ2RlYnVnX3BhbmVsLm1pZGRsZXdhcmUuRGVidWdQYW5lbE1pZGRsZXdhcmUnLCkgKyBNSURETEVXQVJFX0NMQVNTRVMKLSAgICAgICAgI01JRERMRVdBUkVfQ0xBU1NFUyA9IE1JRERMRVdBUkVfQ0xBU1NFUyArICgnZGVidWdfdG9vbGJhci5taWRkbGV3YXJlLkRlYnVnVG9vbGJhck1pZGRsZXdhcmUnLCkKKyAgICAgICAgTUlERExFV0FSRSA9IFsnZGVidWdfcGFuZWwubWlkZGxld2FyZS5EZWJ1Z1BhbmVsTWlkZGxld2FyZScsXSArIE1JRERMRVdBUkUKKyAgICAgICAgI01JRERMRVdBUkUgPSBNSURETEVXQVJFICsgWydkZWJ1Z190b29sYmFyLm1pZGRsZXdhcmUuRGVidWdUb29sYmFyTWlkZGxld2FyZScsXQogICAgICAgICBJTlNUQUxMRURfQVBQUyA9IElOU1RBTExFRF9BUFBTICsgKCdkZWJ1Z190b29sYmFyJywnZGVidWdfcGFuZWwnLCkKICAgICAgICAgREVCVUdfUEFORUxfRU5BQkxFRCA9IFRydWUKIApAQCAtMzUyLDUgKzM1MywzIEBACiBjb25uZWN0aW9uX2NyZWF0ZWQuY29ubmVjdChhY3RpdmF0ZV9zeW5jaHJvbm91c19vZmYpCiAjCiAKLQotCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vdXJscy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi91cmxzLnB5CmluZGV4IGFjNzdiYzMuLjVmYjUyMGIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi91cmxzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi91cmxzLnB5CkBAIC01MSw3ICs1MSw3IEBACiAKIHVybHBhdHRlcm5zID0gWwogICAgICMgVW5jb21tZW50IHRoZSBuZXh0IGxpbmUgdG8gZW5hYmxlIHRoZSBhZG1pbjoKLSAgICB1cmwocideYWRtaW4vJywgaW5jbHVkZShhZG1pbi5zaXRlLnVybHMpKSwKKyAgICB1cmwocideYWRtaW4vJywgYWRtaW4uc2l0ZS51cmxzKSwKIF0gKyB1cmxwYXR0ZXJucwogCiAjIEF1dG9tYXRpY2FsbHkgZGlzY292ZXIgdXJscy5weSBpbiB2YXJpb3VzIGFwcHMsIGJlc2lkZSBvdXIgb3duCkBAIC02OSw3ICs2OSw3IEBACiAgICAgICAgICMgbWFrZSBzdXJlIHdlIGRvbid0IGhhdmUgdGhpcyBtb2R1bGUgbmFtZSBpbgogICAgICAgICBjb25mbGljdCA9IEZhbHNlCiAgICAgICAgIGZvciBwIGluIHVybHBhdHRlcm5zOgotICAgICAgICAgICAgaWYgcC5yZWdleC5wYXR0ZXJuID09ICdeJyArIG1vZHVsZW5hbWUgKyAnLyc6CisgICAgICAgICAgICBpZiBwLnBhdHRlcm4ucmVnZXgucGF0dGVybiA9PSAnXicgKyBtb2R1bGVuYW1lICsgJy8nOgogICAgICAgICAgICAgICAgIGNvbmZsaWN0ID0gVHJ1ZQogICAgICAgICBpZiBub3QgY29uZmxpY3Q6CiAgICAgICAgICAgICB1cmxwYXR0ZXJucy5pbnNlcnQoMCwgdXJsKHInXicgKyBtb2R1bGVuYW1lICsgJy8nLCBpbmNsdWRlICggbW9kdWxlbmFtZSArICcudXJscycpKSkKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9NYWtlZmlsZSBiL3Bva3kvZG9jdW1lbnRhdGlvbi9NYWtlZmlsZQppbmRleCA1MjVhNzMwLi4xNTY0NGJmIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vTWFrZWZpbGUKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL01ha2VmaWxlCkBAIC03Niw2ICs3NiwxMSBAQAogIyBleGFtcGxlIHB1Ymxpc2hlcyB0aGUgMS4yIHZlcnNpb24gb2YgdGhlIFBERiBhbmQgSFRNTCBZUCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwKICMgZm9yIHRoZSAnZGVuemlsJyBicmFuY2guCiAjCisjIElOIE1FTU9SSUFNOiBUaGlzIGNvbW1lbnQgaXMgdG8gcmVtZW1iZXIgU2NvdHQgUmlmZW5iYXJrIChzY290dHJpZiksIHdob20gd2UgbG9zdAorIyBpbiBKYW51YXJ5LCAyMDIwLiBTY290dCB3YXMgdGhlIHByaW1hcnkgdGVjaG5pY2FsIHdyaXRlciBmb3IgdGhlIFlvY3RvIFByb2plY3QgZm9yCisjIG92ZXIgOSB5ZWFycy4gSW4gdGhhdCB0aW1lLCBoZSBjb250cmlidXRlZCBtYW55IHRob3VzYW5kcyBvZiBwYXRjaGVzLCBidWlsdCB0aGlzCisjIGRvY3VtZW50YXRpb24gdHJlZSwgYW5kIGVuYWJsZWQgdGVucyBvZiB0aG91c2FuZHMgb2YgZGV2ZWxvcGVycyB0byBzdWNjZWVkIHdpdGgKKyMgZW1iZWRkZWQgTGludXguIEhlIHJhbiB0aGlzIE1ha2VmaWxlIG1hbnkgdGhvdXNhbmRzIG9mIHRpbWVzLiBHb2RzcGVlZCwgRHVkZS4KIAogaWZlcSAoJChET0MpLGJyaWVmLXlvY3RvcHJvamVjdHFzKQogWFNMVE9QVFMgPSAtLXN0cmluZ3BhcmFtIGh0bWwuc3R5bGVzaGVldCBicmllZi15b2N0b3Byb2plY3Rxcy1zdHlsZS5jc3MgXApAQCAtNDE0LDggKzQxOSw4IEBACiAgICAgICAgICAgICBlY2hvICIgIjsgXAogICAgICAgICAgICAgZWNobyAiKioqKioqKiogUHVibGlzaGluZyAiJChET0MpIi5odG1sIjsgXAogICAgICAgICAgICAgZWNobyAiICI7IFwKLSAgICAgICAgICAgIHNjcCAtciAkKE1BTlVBTFMpICQoU1RZTEVTSEVFVCkgZG9jcy55cDovdmFyL3d3dy93d3cueW9jdG9wcm9qZWN0Lm9yZy1kb2NzLyQoVkVSKS8kKERPQyk7IFwKLSAgICAgICAgICAgIGNkICQoRE9DKTsgc2NwIC1yICQoRklHVVJFUykgZG9jcy55cDovdmFyL3d3dy93d3cueW9jdG9wcm9qZWN0Lm9yZy1kb2NzLyQoVkVSKS8kKERPQyk7IFwKKyAgICAgICAgICAgIHNjcCAtciAkKE1BTlVBTFMpICQoU1RZTEVTSEVFVCkgd3d3LnlvY3RvcHJvamVjdC5vcmc6L3Zhci93d3cvd3d3LnlvY3RvcHJvamVjdC5vcmctZG9jcy8kKFZFUikvJChET0MpOyBcCisgICAgICAgICAgICBjZCAkKERPQyk7IHNjcCAtciAkKEZJR1VSRVMpIHd3dy55b2N0b3Byb2plY3Qub3JnOi92YXIvd3d3L3d3dy55b2N0b3Byb2plY3Qub3JnLWRvY3MvJChWRVIpLyQoRE9DKTsgXAogCWVsc2UgXAogICAgICAgICAgIGVjaG8gIiAiOyBcCiAgICAgICAgICAgZWNobyAkKERPQykiLmh0bWwgbWlzc2luZy4gIEdlbmVyYXRlIHRoZSBmaWxlIGZpcnN0IHRoZW4gdHJ5IGFnYWluLiI7IFwKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMueG1sCmluZGV4IDFkYWViMjUuLjNjODNhZmQgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLnhtbApAQCAtNTUsMTAgKzU1LDE4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHVzZSBhIGJ1aWxkIGhvc3QgdGhhdCBpcyB1c2luZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpbmRvd3NfU3Vic3lzdGVtX2Zvcl9MaW51eCc+V2luZG93cyBTdWJzeXN0ZW0gZm9yIExpbnV4PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIChXU0wpLgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBXU0wuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbWF5IHVzZSBXaW5kb3dzIFN1YnN5c3RlbSBGb3IgTGludXggdjIgdG8gc2V0IHVwIGEgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QgdXNpbmcgV2luZG93cyAxMC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIFdTTHYxLCBpdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlIGJ1dCBub3Qgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgbm9yIHZhbGlkYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIFdTTHYyLCBpZiB5b3Ugc3RpbGwgZGVjaWRlIHRvIHVzZSBXU0wgcGxlYXNlIHVwZ3JhZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gV1NMdjIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZXR0aW5nLXVwLXRvLXVzZS13c2wnPlNldHRpbmcgVXAgdG8gVXNlIFdpbmRvd3MgU3Vic3lzdGVtIEZvciBMaW51eDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIG1vcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICA8L25vdGU+CkBAIC05OSwxNyArMTA3LDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2l0IDEuOC4zLjEgb3IgZ3JlYXRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhciAxLjI3IG9yIGdyZWF0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXIgMS4yOCBvciBncmVhdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIDMuNC4wIG9yIGdyZWF0ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIDMuNS4wIG9yIGdyZWF0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY2MgNS4wIG9yIGdyZWF0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIElmIHlvdXIgYnVpbGQgaG9zdCBkb2VzIG5vdCBtZWV0IGFueSBvZiB0aGVzZSB0aHJlZSBsaXN0ZWQKICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiByZXF1aXJlbWVudHMsIHlvdSBjYW4gdGFrZSBzdGVwcyB0byBwcmVwYXJlIHRoZQogICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gc28gdGhhdCB5b3UgY2FuIHN0aWxsIHVzZSB0aGUgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtZ2l0LXRhci1hbmQtcHl0aG9uLXZlcnNpb25zJz5SZXF1aXJlZCBHaXQsIHRhciwgYW5kIFB5dGhvbiBWZXJzaW9uczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtZ2l0LXRhci1weXRob24tYW5kLWdjYy12ZXJzaW9ucyc+UmVxdWlyZWQgR2l0LCB0YXIsIFB5dGhvbiBhbmQgZ2NjIFZlcnNpb25zPC91bGluaz4iCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CkBAIC0yNjYsNyArMjc3LDcgQEAKICAgICAgICAgIG1ldGEtdG9vbGNoYWluCiAgICAgICAgICBtZXRhLWlkZS1zdXBwb3J0CiAKLSAgICAgWW91IGNhbiBhbHNvIHJ1biBnZW5lcmF0ZWQgcWVtdSBpbWFnZXMgd2l0aCBhIGNvbW1hbmQgbGlrZSAncnVucWVtdSBxZW11eDg2JworICAgICBZb3UgY2FuIGFsc28gcnVuIGdlbmVyYXRlZCBxZW11IGltYWdlcyB3aXRoIGEgY29tbWFuZCBsaWtlICdydW5xZW11IHFlbXV4ODYtNjQnCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGUgc2NyaXB0IGNyZWF0ZXMgdGhlCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCkBAIC0zMzIsNyArMzQzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgUUVNVSwgd2hpY2ggaXMgYSBRdWljayBFTVVsYXRvciB0aGF0IHNoaXBzIHdpdGgKICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3Q6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBydW5xZW11IHFlbXV4ODYKKyAgICAgJCBydW5xZW11IHFlbXV4ODYtNjQKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBsZWFybiBtb3JlIGFib3V0IHJ1bm5pbmcgUUVNVSwgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0iJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LW1hbnVhbC1xZW11Ij5Vc2luZyB0aGUgUXVpY2sgRU1VbGF0b3IgKFFFTVUpPC91bGluaz4iCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1ndWlkZS54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1ndWlkZS54bWwKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBkZDBjNzZhLi5hMTg5NjA2Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvYnNwLWd1aWRlLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1ndWlkZS54bWwKQEAgLTIyLDMzICsyMiwyNyBAQAogCiAgICAgICAgIDxhdXRob3Jncm91cD4KICAgICAgICAgICAgIDxhdXRob3I+Ci0gICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5TY290dDwvZmlyc3RuYW1lPiA8c3VybmFtZT5SaWZlbmJhcms8L3N1cm5hbWU+CiAgICAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5TY290dHkncyBEb2N1bWVudGF0aW9uIFNlcnZpY2VzLCBJTkM8L29yZ25hbWU+CisgICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPiZPUkdOQU1FOzwvb3JnbmFtZT4KICAgICAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgIDxlbWFpbD5zcmlmZW5iYXJrQGdtYWlsLmNvbTwvZW1haWw+CisgICAgICAgICAgICAgICAgPGVtYWlsPiZPUkdFTUFJTDs8L2VtYWlsPgogICAgICAgICAgICAgPC9hdXRob3I+CiAgICAgICAgIDwvYXV0aG9yZ3JvdXA+CiAKICAgICAgICAgPHJldmhpc3Rvcnk+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4wLjk8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT4yNCBOb3ZlbWJlciAyMDEwPC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgZHJhZnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAwLjkgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5Ob3ZlbWJlciAyMDEwPC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAwLjkgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjA8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT42IEFwcmlsIDIwMTE8L2RhdGU+CisgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxMTwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS4wLjE8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT4yMyBNYXkgMjAxMTwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS4wLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjE8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT42IE9jdG9iZXIgMjAxMTwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTE8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KQEAgLTcyLDExICs2Niw2IEBACiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuNS4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+SmFudWFyeSAyMDE0PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjUuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgotICAgICAgICAgICAgPC9yZXZpc2lvbj4KLSAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuNjwvcmV2bnVtYmVyPgogICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTQ8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNiBSZWxlYXNlLjwvcmV2cmVtYXJrPgpAQCAtMTMzLDkgKzEyMiwxNCBAQAogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMDwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE5PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjAgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjE8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgIDwvcmV2aGlzdG9yeT4KIAogICAgIDxjb3B5cmlnaHQ+CkBAIC0xNTcsNyArMTUxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gYmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIG1hbnVhbAogICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCBnbyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgogICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKICAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KQEAgLTE3NCwxOCArMTY4LDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCiAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCiAgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcwotICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAotICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIChvciBhbnkgb3RoZXIgWW9jdG8gUHJvamVjdCkgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFpbGluZyBsaXN0IGF0CisgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb2NzQGxpc3RzLnlvY3RvcHJvamVjdC5vcmc8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICBsb2cgaW50byB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KICAgICA8L2xlZ2Fsbm90aWNlPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AueG1sCmluZGV4IDU4ZjU3MzMuLjk2YzA0NTUgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvYnNwLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC54bWwKQEAgLTE5LDcgKzE5LDcgQEAKIDwvcGFyYT4KIAogPHBhcmE+Ci0gICAgVGhpcyBndWlkZSBwcmVzZW50cyBpbmZvcm1hdGlvbiBhYm91dCBCU1AgTGF5ZXJzLCBkZWZpbmVzIGEgc3RydWN0dXJlIGZvciBjb21wb25lbnRzCisgICAgVGhpcyBndWlkZSBwcmVzZW50cyBpbmZvcm1hdGlvbiBhYm91dCBCU1AgbGF5ZXJzLCBkZWZpbmVzIGEgc3RydWN0dXJlIGZvciBjb21wb25lbnRzCiAgICAgc28gdGhhdCBCU1BzIGZvbGxvdyBhIGNvbW1vbmx5IHVuZGVyc3Rvb2QgbGF5b3V0LCBkaXNjdXNzZXMgaG93IHRvIGN1c3RvbWl6ZQogICAgIGEgcmVjaXBlIGZvciBhIEJTUCwgYWRkcmVzc2VzIEJTUCBsaWNlbnNpbmcsIGFuZCBwcm92aWRlcyBpbmZvcm1hdGlvbiB0aGF0CiAgICAgc2hvd3MgeW91IGhvdyB0byBjcmVhdGUgYQpAQCAtMzQsNyArMzQsNyBAQAogICAgIDxwYXJhPgogICAgICAgICBBIEJTUCBjb25zaXN0cyBvZiBhIGZpbGUgc3RydWN0dXJlIGluc2lkZSBhIGJhc2UgZGlyZWN0b3J5LgogICAgICAgICBDb2xsZWN0aXZlbHksIHlvdSBjYW4gdGhpbmsgb2YgdGhlIGJhc2UgZGlyZWN0b3J5LCBpdHMgZmlsZSBzdHJ1Y3R1cmUsCi0gICAgICAgIGFuZCB0aGUgY29udGVudHMgYXMgYSBCU1AgTGF5ZXIuCisgICAgICAgIGFuZCB0aGUgY29udGVudHMgYXMgYSA8Zmlyc3R0ZXJtPkJTUCBsYXllcjwvZmlyc3R0ZXJtPi4KICAgICAgICAgQWx0aG91Z2ggbm90IGEgc3RyaWN0IHJlcXVpcmVtZW50LCBCU1AgbGF5ZXJzIGluIHRoZSBZb2N0byBQcm9qZWN0CiAgICAgICAgIHVzZSB0aGUgZm9sbG93aW5nIHdlbGwtZXN0YWJsaXNoZWQgbmFtaW5nIGNvbnZlbnRpb246CiAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KQEAgLTY5LDkgKzY5LDkgQEAKICAgICAgICAgRWFjaCByZXBvc2l0b3J5IGlzIGEgQlNQIGxheWVyIHN1cHBvcnRlZCBieSB0aGUgWW9jdG8gUHJvamVjdAogICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+bWV0YS1yYXNwYmVycnlwaTwvZmlsZW5hbWU+IGFuZAogICAgICAgICA8ZmlsZW5hbWU+bWV0YS1pbnRlbDwvZmlsZW5hbWU+KS4KLSAgICAgICAgRWFjaCBvZiB0aGVzZSBsYXllcnMgaXMgYSByZXBvc2l0b3J5IHVudG8gaXRzZWxmIGFuZCBjbGlja2luZyBvbiBhCi0gICAgICAgIGxheWVyIHJldmVhbHMgaW5mb3JtYXRpb24gdGhhdCBpbmNsdWRlcyB0d28gbGlua3MgZnJvbSB3aGljaCB5b3UgY2FuIGNob29zZQotICAgICAgICB0byBzZXQgdXAgYSBjbG9uZSBvZiB0aGUgbGF5ZXIncyByZXBvc2l0b3J5IG9uIHlvdXIgbG9jYWwgaG9zdCBzeXN0ZW0uCisgICAgICAgIEVhY2ggb2YgdGhlc2UgbGF5ZXJzIGlzIGEgcmVwb3NpdG9yeSB1bnRvIGl0c2VsZiBhbmQgY2xpY2tpbmcgb24KKyAgICAgICAgdGhlIGxheWVyIG5hbWUgZGlzcGxheXMgdHdvIFVSTHMgZnJvbSB3aGljaCB5b3UgY2FuCisgICAgICAgIGNsb25lIHRoZSBsYXllcidzIHJlcG9zaXRvcnkgdG8geW91ciBsb2NhbCBzeXN0ZW0uCiAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IGNsb25lcyB0aGUgUmFzcGJlcnJ5IFBpIEJTUCBsYXllcjoKICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9tZXRhLXJhc3BiZXJyeXBpCkBAIC04MywxMiArODMsMTMgQEAKICAgICAgICAgPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4gbGF5ZXIgaXMgcGFydCBvZiB0aGUKICAgICAgICAgc2hpcHBlZCA8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+IHJlcG9zaXRvcnkuCiAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWV0YS15b2N0by1ic3A8L2ZpbGVuYW1lPiBsYXllciBtYWludGFpbnMgc2V2ZXJhbAotICAgICAgICBCU1BzIHN1Y2ggYXMgdGhlIEJlYWdsZWJvbmUsIEVkZ2VSb3V0ZXIsIGFuZCBnZW5lcmljIHZlcnNpb25zIG9mCisgICAgICAgICJyZWZlcmVuY2UiIEJTUHMgaW5jbHVkaW5nIHRoZSBBUk0tYmFzZWQgQmVhZ2xlYm9uZSwgTUlQUy1iYXNlZAorICAgICAgICBFZGdlUm91dGVyLCBhbmQgZ2VuZXJpYyB2ZXJzaW9ucyBvZgogICAgICAgICBib3RoIDMyLWJpdCBhbmQgNjQtYml0IElBIG1hY2hpbmVzLgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgotICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIEJTUCBkZXZlbG9wbWVudCB3b3JrZmxvdywgc2VlIHRoZQorICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdHlwaWNhbCBCU1AgZGV2ZWxvcG1lbnQgd29ya2Zsb3csIHNlZSB0aGUKICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2RldmVsb3BpbmctYS1ib2FyZC1zdXBwb3J0LXBhY2thZ2UtYnNwJz5EZXZlbG9waW5nIGEgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApPC9saW5rPiIKICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHNldCB1cCBhIGxvY2FsIGNvcHkgb2Ygc291cmNlIGZpbGVzCkBAIC05OCwxMiArOTksMTIgQEAKICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KLSAgICAgICAgVGhlIGxheWVyJ3MgYmFzZSBkaXJlY3RvcnkKKyAgICAgICAgVGhlIEJTUCBsYXllcidzIGJhc2UgZGlyZWN0b3J5CiAgICAgICAgICg8ZmlsZW5hbWU+bWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+PC9maWxlbmFtZT4pCi0gICAgICAgIGlzIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgQlNQIExheWVyLgorICAgICAgICBpcyB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhhdCBMYXllci4KICAgICAgICAgVGhpcyBkaXJlY3RvcnkgaXMgd2hhdCB5b3UgYWRkIHRvIHRoZQogICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJMQVlFUlMnPjxmaWxlbmFtZT5CQkxBWUVSUzwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgdmFyaWFibGUgaW4gdGhlIDxmaWxlbmFtZT5jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGZvdW5kIGluIHRoZQorICAgICAgICB2YXJpYWJsZSBpbiB0aGUgPGZpbGVuYW1lPmNvbmYvYmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUgZm91bmQgaW4geW91cgogICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAogICAgICAgICB3aGljaCBpcyBlc3RhYmxpc2hlZCBhZnRlciB5b3UgcnVuIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgZW52aXJvbm1lbnQKICAgICAgICAgc2V0dXAgc2NyaXB0IChpLmUuCkBAIC0xNTMsNiArMTU0LDIwIEBACiAgICAgICAgIGxheWVyLgogICAgICAgICBUaGUgPGZpbGVuYW1lPm1ldGEtb3BlbmVtYmVkZGVkPC9maWxlbmFtZT4gbGF5ZXIgY29udGFpbnMKICAgICAgICAgbWFueSA8ZmlsZW5hbWU+bWV0YS0qPC9maWxlbmFtZT4gbGF5ZXJzLgorICAgICAgICBJbiBjYXNlcyBsaWtlIHRoaXMsIHlvdSBuZWVkIHRvIGluY2x1ZGUgdGhlIG5hbWVzIG9mIHRoZSBhY3R1YWwKKyAgICAgICAgbGF5ZXJzIHlvdSB3YW50IHRvIHdvcmsgd2l0aCwgc3VjaCBhczoKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQkxBWUVSUyA/PSAiIFwKKyAgICAgICAvdXNyL2xvY2FsL3NyYy95b2N0by9tZXRhIFwKKyAgICAgICAvdXNyL2xvY2FsL3NyYy95b2N0by9tZXRhLXBva3kgXAorICAgICAgIC91c3IvbG9jYWwvc3JjL3lvY3RvL21ldGEteW9jdG8tYnNwIFwKKyAgICAgICAvdXNyL2xvY2FsL3NyYy95b2N0by9tZXRhLW15bGF5ZXIgXAorICAgICAgIC4uLi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lIFwKKyAgICAgICAuLi4vbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsIFwKKyAgICAgICAuLi4vbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nIFwKKyAgICAgICAiCisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICBhbmQgc28gb24uCiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+CkBAIC0zNTEsMjUgKzM2NiwyNCBAQAogICAgICAgICBsYXllciBjb21iaW5lZCB3aXRoIGEgYnVpbGQgc3lzdGVtIGFuZCBvdGhlciB0b29scy4KICAgICAgICAgUmVhbGl6ZSB0aGF0IGl0IGlzIGltcG9ydGFudCB0byBtYWludGFpbiB0aGUgZGlzdGluY3Rpb24KICAgICAgICAgdGhhdCB0aGUgQlNQIGxheWVyLCBhIGJ1aWxkIHN5c3RlbSwgYW5kIHRvb2xzIGFyZQotICAgICAgICBzZXBhcmF0ZSBjb21wb25lbnRzIHRoYXQgY291bGQgdG8gYmUgY29tYmluZWQgaW4KKyAgICAgICAgc2VwYXJhdGUgY29tcG9uZW50cyB0aGF0IGNvdWxkIGJlIGNvbWJpbmVkIGluCiAgICAgICAgIGNlcnRhaW4gZW5kIHByb2R1Y3RzLgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgotICAgICAgICBCZWZvcmUgbG9va2luZyBhdCB0aGUgY29tbW9uIGZvcm0gZm9yIHRoZSBmaWxlIHN0cnVjdHVyZQotICAgICAgICBpbnNpZGUgYSBCU1AgTGF5ZXIsIHlvdSBzaG91bGQgYmUgYXdhcmUgdGhhdCBzb21lCisgICAgICAgIEJlZm9yZSBsb29raW5nIGF0IHRoZSByZWNvbW1lbmRlZCBmb3JtIGZvciB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZQorICAgICAgICBpbnNpZGUgYSBCU1AgbGF5ZXIsIHlvdSBzaG91bGQgYmUgYXdhcmUgdGhhdCBzb21lCiAgICAgICAgIHJlcXVpcmVtZW50cyBkbyBleGlzdCBpbiBvcmRlciBmb3IgYSBCU1AgbGF5ZXIgdG8KLSAgICAgICAgYmUgY29uc2lkZXJlZCBjb21wbGlhbnQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgYmUgY29uc2lkZXJlZCA8Zmlyc3R0ZXJtPmNvbXBsaWFudDwvZmlyc3R0ZXJtPiB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgogICAgICAgICBGb3IgdGhhdCBsaXN0IG9mIHJlcXVpcmVtZW50cywgc2VlIHRoZQogICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVsZWFzZWQtYnNwLXJlcXVpcmVtZW50cyc+UmVsZWFzZWQgQlNQIFJlcXVpcmVtZW50czwvbGluaz4iCiAgICAgICAgIHNlY3Rpb24uCiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIEJlbG93IGlzIHRoZSBjb21tb24gZm9ybSBmb3IgdGhlIGZpbGUgc3RydWN0dXJlCi0gICAgICAgIGluc2lkZSBhIEJTUCBMYXllci4KKyAgICAgICAgQmVsb3cgaXMgdGhlIHR5cGljYWwgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgYSBCU1AgbGF5ZXIuCiAgICAgICAgIFdoaWxlIHRoaXMgYmFzaWMgZm9ybSByZXByZXNlbnRzIHRoZSBzdGFuZGFyZCwKLSAgICAgICAgcmVhbGl6ZSB0aGF0IHRoZSBhY3R1YWwgZmlsZSBzdHJ1Y3R1cmVzIGZvciBzcGVjaWZpYworICAgICAgICByZWFsaXplIHRoYXQgdGhlIGFjdHVhbCBsYXlvdXQgZm9yIGluZGl2aWR1YWwKICAgICAgICAgQlNQcyBjb3VsZCBkaWZmZXIuCiAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgbWV0YS08cmVwbGFjZWFibGU+YnNwX3Jvb3RfbmFtZTwvcmVwbGFjZWFibGU+LwpAQCAtNTY3LDcgKzU4MSw3IEBACiAgICAgICAgICAgICBmb3IgdGhlIEJTUC4KICAgICAgICAgICAgIFRoZSB0eXBlIG9yIHR5cGVzIG9mIGZpbGVzIGhlcmUgY2FuIHZhcnkgZGVwZW5kaW5nCiAgICAgICAgICAgICBvbiB0aGUgbGljZW5zaW5nIHJlcXVpcmVtZW50cy4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCBpbiB0aGUgUmFzcGJlcnJ5IFBpIEJTUCBhbGwgbGljZW5zaW5nCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaW4gdGhlIFJhc3BiZXJyeSBQaSBCU1AsIGFsbCBsaWNlbnNpbmcKICAgICAgICAgICAgIHJlcXVpcmVtZW50cyBhcmUgaGFuZGxlZCB3aXRoIHRoZQogICAgICAgICAgICAgPGZpbGVuYW1lPkNPUFlJTkcuTUlUPC9maWxlbmFtZT4gZmlsZS4KICAgICAgICAgPC9wYXJhPgpAQCAtODAyLDcgKzgxNiw3IEBACiAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4uCiAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgbWFueSA8ZmlsZW5hbWU+dHVuZS0qPC9maWxlbmFtZT4gZmlsZXMKICAgICAgICAgICAgIChlLmcuIDxmaWxlbmFtZT50dW5lLWFybTExMzZqZi1zLmluYzwvZmlsZW5hbWU+LAotICAgICAgICAgICAgPGZpbGVuYW1lPnR1bi0xNTg2LW5scC5pbmM8L2ZpbGVuYW1lPiwgYW5kIHNvIGZvcnRoKQorICAgICAgICAgICAgPGZpbGVuYW1lPnR1bmUtMTU4Ni1ubHAuaW5jPC9maWxlbmFtZT4sIGFuZCBzbyBmb3J0aCkKICAgICAgICAgICAgIHJlc2lkZSBpbiB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGU8L2ZpbGVuYW1lPgogICAgICAgICAgICAgZGlyZWN0b3J5LgpAQCAtODM0LDcgKzg0OCw3IEBACiAgICAgICAgICAgICBUaGlzIG9wdGlvbmFsIGRpcmVjdG9yeSBjb250YWlucyBtaXNjZWxsYW5lb3VzIHJlY2lwZQogICAgICAgICAgICAgZmlsZXMgZm9yIHRoZSBCU1AuCiAgICAgICAgICAgICBNb3N0IG5vdGFibHkgd291bGQgYmUgdGhlIGZvcm1mYWN0b3IgZmlsZXMuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgaW4gdGhlIFJhc3BiZXJyeSBQaSBCU1AgdGhlcmUgaXMgdGhlCisgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaW4gdGhlIFJhc3BiZXJyeSBQaSBCU1AsIHRoZXJlIGlzIHRoZQogICAgICAgICAgICAgPGZpbGVuYW1lPmZvcm1mYWN0b3JfMC4wLmJiYXBwZW5kPC9maWxlbmFtZT4gZmlsZSwKICAgICAgICAgICAgIHdoaWNoIGlzIGFuIGFwcGVuZCBmaWxlIHVzZWQgdG8gYXVnbWVudCB0aGUgcmVjaXBlCiAgICAgICAgICAgICB0aGF0IHN0YXJ0cyB0aGUgYnVpbGQuCkBAIC05MDEsNyArOTE1LDcgQEAKICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Ki5iYjwvZmlsZW5hbWU+IGZpbGVzIHdvdWxkIGJlIGEKICAgICAgICAgICAgIGRldmVsb3Blci1zdXBwbGllZCBrZXJuZWwgcmVjaXBlLgogICAgICAgICAgICAgVGhpcyBhcmVhIG9mIHRoZSBCU1AgaGllcmFyY2h5IGNhbiBjb250YWluIGJvdGggdGhlc2UKLSAgICAgICAgICAgIHR5cGVzIG9mIGZpbGVzLCBhbHRob3VnaCBpbiBwcmFjdGljZSwgaXQgaXMgbGlrZWx5IHRoYXQKKyAgICAgICAgICAgIHR5cGVzIG9mIGZpbGVzIGFsdGhvdWdoLCBpbiBwcmFjdGljZSwgaXQgaXMgbGlrZWx5IHRoYXQKICAgICAgICAgICAgIHlvdSB3b3VsZCBoYXZlIG9uZSBvciB0aGUgb3RoZXIuCiAgICAgICAgIDwvcGFyYT4KIApAQCAtOTc2LDcgKzk5MCw3IEBACiAgICAgPHRpdGxlPkRldmVsb3BpbmcgYSBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCk8L3RpdGxlPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgc2VjdGlvbiBjb250YWlucyB0aGUgaGlnaC1sZXZlbCBwcm9jZWR1cmUgeW91IGNhbgorICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHRoZSBoaWdoLWxldmVsIHByb2NlZHVyZSB5b3UgY2FuCiAgICAgICAgIGZvbGxvdyB0byBjcmVhdGUgYSBCU1AuCiAgICAgICAgIEFsdGhvdWdoIG5vdCByZXF1aXJlZCBmb3IgQlNQIGNyZWF0aW9uLCB0aGUKICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LCB3aGljaApAQCAtMTA3NSwxMCArMTA4OSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmJlYWdsZWJvbmUteW9jdG88L2ZpbGVuYW1lPikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmVlc2NhbGUgTVBDODMxNUUtUkRCCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPm1wYzgzMTVlLXJkYjwvZmlsZW5hbWU+KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFViaXF1aXRpIE5ldHdvcmtzIEVkZ2VSb3V0ZXIgTGl0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmVkZ2Vyb3V0ZXI8L2ZpbGVuYW1lPikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC0xMzAyLDcgKzEzMTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPm9wZW5lbWJlZGRlZC1jb3JlPC9maWxlbmFtZT4pCiAgICAgICAgICAgICAgICAgICAgIG9yIHRoZSBTb3VyY2UgRGlyZWN0b3J5ICg8ZmlsZW5hbWU+cG9reTwvZmlsZW5hbWU+KS4KICAgICAgICAgICAgICAgICAgICAgSW4gb3RoZXIgd29yZHMsIG1ha2Ugc3VyZSB5b3UgcGxhY2UgcmVsYXRlZAotICAgICAgICAgICAgICAgICAgICBmaWxlcyBpbiBhcHByb3ByaWF0ZWx5IHJlbGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgZmlsZXMgaW4gYXBwcm9wcmlhdGVseS1yZWxhdGVkCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGVzLSo8L2ZpbGVuYW1lPiBzdWJkaXJlY3RvcmllcwogICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyB0byB0aGUgcmVjaXBlJ3MgZnVuY3Rpb24sIG9yIHdpdGhpbgogICAgICAgICAgICAgICAgICAgICBhIHN1YmRpcmVjdG9yeSBjb250YWluaW5nIGEgc2V0IG9mIGNsb3NlbHktcmVsYXRlZApAQCAtMTMxOSw3ICsxMzI5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LgogICAgICAgICAgICAgICAgICAgICBUaGlzIGxpY2Vuc2UgY292ZXJzIHRoZSBCU1AgTWV0YWRhdGEgYXMgYSB3aG9sZS4KICAgICAgICAgICAgICAgICAgICAgWW91IG11c3Qgc3BlY2lmeSB3aGljaCBsaWNlbnNlIHRvIHVzZSBzaW5jZSBubwotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGxpY2Vuc2UgZXhpc3RzIHdoZW4gb25lIG5vdCBzcGVjaWZpZWQuCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgbGljZW5zZSBleGlzdHMgd2hlbiBvbmUgaXMgbm90IHNwZWNpZmllZC4KICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fR0lUX1VSTDsvY2dpdC5jZ2kvbWV0YS1yYXNwYmVycnlwaS90cmVlL0NPUFlJTkcuTUlUJz48ZmlsZW5hbWU+Q09QWUlORy5NSVQ8L2ZpbGVuYW1lPjwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgIGZpbGUgZm9yIHRoZSBSYXNwYmVycnkgUGkgQlNQIGluIHRoZQpAQCAtMTM0MiwxMiArMTM1MiwxMCBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlIHNob3VsZCBjb250YWluIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBicmllZiBkZXNjcmlwdGlvbiBhYm91dCB0aGUgaGFyZHdhcmUgdGhlIEJTUAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgdGFyZ2V0IGhhcmR3YXJlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBhbGwgdGhlIGRlcGVuZGVuY2llcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIHdoaWNoIGEgQlNQIGxheWVyIGRlcGVuZHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBsaXN0IG9mIGFsbCB0aGUgZGVwZW5kZW5jaWVzIG9mIHRoZSBCU1AuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgZGVwZW5kZW5jaWVzIGFyZSB0eXBpY2FsbHkgYSBsaXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgcmVxdWlyZWQgbGF5ZXJzIG5lZWRlZCB0byBidWlsZCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCU1AuCkBAIC0xNjEwLDcgKzE2MTgsNyBAQAogICAgIDx0aXRsZT5CU1AgTGljZW5zaW5nIENvbnNpZGVyYXRpb25zPC90aXRsZT4KIAogICAgIDxwYXJhPgotICAgICAgICBJbiBzb21lIGNhc2VzLCBhIEJTUCBjb250YWlucyBzZXBhcmF0ZWx5IGxpY2Vuc2VkCisgICAgICAgIEluIHNvbWUgY2FzZXMsIGEgQlNQIGNvbnRhaW5zIHNlcGFyYXRlbHktbGljZW5zZWQKICAgICAgICAgSW50ZWxsZWN0dWFsIFByb3BlcnR5IChJUCkgZm9yIGEgY29tcG9uZW50IG9yIGNvbXBvbmVudHMuCiAgICAgICAgIEZvciB0aGVzZSBjYXNlcywgeW91IGFyZSByZXF1aXJlZCB0byBhY2NlcHQgdGhlIHRlcm1zCiAgICAgICAgIG9mIGEgY29tbWVyY2lhbCBvciBvdGhlciB0eXBlIG9mIGxpY2Vuc2UgdGhhdCByZXF1aXJlcwpAQCAtMTYyMyw3ICsxNjMxLDcgQEAKICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KLSAgICAgICAgWW91IGNvdWxkIGZpbmQgdGhhdCBzb21lIHNlcGFyYXRlbHkgbGljZW5zZWQgY29tcG9uZW50cworICAgICAgICBZb3UgY291bGQgZmluZCB0aGF0IHNvbWUgc2VwYXJhdGVseS1saWNlbnNlZCBjb21wb25lbnRzCiAgICAgICAgIHRoYXQgYXJlIGVzc2VudGlhbCBmb3Igbm9ybWFsIG9wZXJhdGlvbiBvZiB0aGUgc3lzdGVtIG1pZ2h0CiAgICAgICAgIG5vdCBoYXZlIGFuIHVuZW5jdW1iZXJlZCAob3IgZnJlZSkgc3Vic3RpdHV0ZS4KICAgICAgICAgV2l0aG91dCB0aGVzZSBlc3NlbnRpYWwgY29tcG9uZW50cywgdGhlIHN5c3RlbSB3b3VsZCBiZQpAQCAtMTYzMSw3ICsxNjM5LDcgQEAKICAgICAgICAgVGhlbiBhZ2FpbiwgeW91IG1pZ2h0IGZpbmQgdGhhdCBvdGhlciBsaWNlbnNlZCBjb21wb25lbnRzCiAgICAgICAgIHRoYXQgYXJlIHNpbXBseSAnZ29vZC10by1oYXZlJyBvciBwdXJlbHkgZWxlY3RpdmUgZG8gaGF2ZQogICAgICAgICBhbiB1bmVuY3VtYmVyZWQsIGZyZWUgcmVwbGFjZW1lbnQgY29tcG9uZW50IHRoYXQgeW91IGNhbgotICAgICAgICB1c2UgcmF0aGVyIHRoYW4gYWdyZWVpbmcgdG8gdGhlIHNlcGFyYXRlbHkgbGljZW5zZWQKKyAgICAgICAgdXNlIHJhdGhlciB0aGFuIGFncmVlaW5nIHRvIHRoZSBzZXBhcmF0ZWx5LWxpY2Vuc2VkCiAgICAgICAgIGNvbXBvbmVudC4KICAgICAgICAgRXZlbiBmb3IgY29tcG9uZW50cyBlc3NlbnRpYWwgdG8gdGhlIHN5c3RlbSwgeW91IG1pZ2h0CiAgICAgICAgIGZpbmQgYW4gdW5lbmN1bWJlcmVkIGNvbXBvbmVudCB0aGF0IGlzIG5vdCBpZGVudGljYWwgYnV0CkBAIC0xNzQ0LDcgKzE3NTIsNyBAQAogICAgIDxwYXJhPgogICAgICAgICBUaGUgPGZpbGVuYW1lPmJpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllcjwvZmlsZW5hbWU+IHNjcmlwdAogICAgICAgICBhdXRvbWF0ZXMgY3JlYXRpbmcgYSBCU1AgbGF5ZXIuCi0gICAgICAgIFdoYXQgbWFrZXMgYSBsYXllciBhICJCU1AgbGF5ZXIiLCBpcyB0aGUgcHJlc2VuY2Ugb2YgYSBtYWNoaW5lCisgICAgICAgIFdoYXQgbWFrZXMgYSBsYXllciBhICJCU1AgbGF5ZXIiIGlzIHRoZSBwcmVzZW5jZSBvZiBhdCBsZWFzdCBvbmUgbWFjaGluZQogICAgICAgICBjb25maWd1cmF0aW9uIGZpbGUuCiAgICAgICAgIEFkZGl0aW9uYWxseSwgYSBCU1AgbGF5ZXIgdXN1YWxseSBoYXMgYSBrZXJuZWwgcmVjaXBlCiAgICAgICAgIG9yIGFuIGFwcGVuZCBmaWxlIHRoYXQgbGV2ZXJhZ2VzIG9mZiBhbiBleGlzdGluZyBrZXJuZWwgcmVjaXBlLgpAQCAtMTg2OCwxMSArMTg3NiwxNCBAQAogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBNYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZXMgZXhpc3QgaW4gdGhlCisgICAgICAgICAgICBPbmUgb3IgbW9yZSBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZXMgZXhpc3QgaW4gdGhlCiAgICAgICAgICAgICA8cmVwbGFjZWFibGU+YnNwX2xheWVyPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+L2NvbmYvbWFjaGluZS88L2ZpbGVuYW1lPgogICAgICAgICAgICAgZGlyZWN0b3J5IG9mIHRoZSBsYXllcjoKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgPHJlcGxhY2VhYmxlPmJzcF9sYXllcjwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi9jb25mL21hY2hpbmUvPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bWFjaGluZTwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4KKyAgICAgPHJlcGxhY2VhYmxlPmJzcF9sYXllcjwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi9jb25mL21hY2hpbmUvPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bWFjaGluZTE8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+CisgICAgIDxyZXBsYWNlYWJsZT5ic3BfbGF5ZXI8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4vY29uZi9tYWNoaW5lLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1hY2hpbmUyPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPgorICAgICA8cmVwbGFjZWFibGU+YnNwX2xheWVyPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+L2NvbmYvbWFjaGluZS88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tYWNoaW5lMzwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4KKyAgICAgLi4uIG1vcmUgLi4uCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUKICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9iZWFnbGVib2FyZC5vcmcvYm9uZSc+QmVhZ2xlQm9uZSBhbmQgQmVhZ2xlQm9uZSBCbGFjayBkZXZlbG9wbWVudCBib2FyZHM8L3VsaW5rPgpAQCAtMTkyMyw4ICsxOTM0LDggQEAKICAgICAgSU1BR0VfQk9PVF9GSUxFUyA/PSAidS1ib290LiR7VUJPT1RfU1VGRklYfSBNTE8gekltYWdlIGFtMzM1eC1ib25lLmR0YiBhbTMzNXgtYm9uZWJsYWNrLmR0YiBhbTMzNXgtYm9uZWdyZWVuLmR0YiIKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIFRoZSB2YXJpYWJsZXMgdXNlZCB0byBjb25maWd1cmUgdGhlIG1hY2hpbmUgZGVmaW5lCi0gICAgICAgICAgICBtYWNoaW5lLXNwZWNpZmljIHByb3BlcnRpZXMuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgbWFjaGluZS1kZXBlbmRlbnQgcGFja2FnZXMsIG1hY2hpbmUKKyAgICAgICAgICAgIG1hY2hpbmUtc3BlY2lmaWMgcHJvcGVydGllczsKKyAgICAgICAgICAgIGZvciBleGFtcGxlLCBtYWNoaW5lLWRlcGVuZGVudCBwYWNrYWdlcywgbWFjaGluZQogICAgICAgICAgICAgdHVuaW5ncywgdGhlIHR5cGUgb2Yga2VybmVsIHRvIGJ1aWxkLCBhbmQKICAgICAgICAgICAgIFUtQm9vdCBjb25maWd1cmF0aW9ucy4KICAgICAgICAgPC9wYXJhPgpAQCAtMTkzNSw3ICsxOTQ2LDcgQEAKICAgICAgICAgICAgIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgQmVhZ2xlQm9uZQogICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYm9hcmRzLgogICAgICAgICAgICAgUmVhbGl6ZSB0aGF0IG11Y2ggbW9yZSBjYW4gYmUgZGVmaW5lZCBhcyBwYXJ0IG9mCi0gICAgICAgICAgICBhIG1hY2hpbmVzIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyAgICAgICAgICAgIGEgbWFjaGluZSdzIGNvbmZpZ3VyYXRpb24gZmlsZS4KICAgICAgICAgICAgIEluIGdlbmVyYWwsIHlvdSBjYW4gbGVhcm4gYWJvdXQgcmVsYXRlZCB2YXJpYWJsZXMKICAgICAgICAgICAgIHRoYXQgdGhpcyBleGFtcGxlIGRvZXMgbm90IGhhdmUgYnkgbG9jYXRpbmcgdGhlCiAgICAgICAgICAgICB2YXJpYWJsZXMgaW4gdGhlCkBAIC0yMTgyLDcgKzIxOTMsNiBAQAogICAgICBLQlJBTkNIX2dlbmVyaWN4ODYtNjQgID0gInY1LjAvc3RhbmRhcmQvYmFzZSIKICAgICAgS0JSQU5DSF9lZGdlcm91dGVyID0gInY1LjAvc3RhbmRhcmQvZWRnZXJvdXRlciIKICAgICAgS0JSQU5DSF9iZWFnbGVib25lLXlvY3RvID0gInY1LjAvc3RhbmRhcmQvYmVhZ2xlYm9uZSIKLSAgICAgS0JSQU5DSF9tcGM4MzE1ZS1yZGIgPSAidjUuMC9zdGFuZGFyZC9mc2wtbXBjODMxNWUtcmRiIgogCiAgICAgIEtNQUNISU5FX2dlbmVyaWN4ODYgPz0gImNvbW1vbi1wYyIKICAgICAgS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgpAQCAtMjE5MiwxOSArMjIwMiwxNiBAQAogICAgICBTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICIzZGY0YWFlNjA3NGU5NGU3OTRlMjdmZTdmMTc0NTFkOTM1M2NkZjNkIgogICAgICBTUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICIzZGY0YWFlNjA3NGU5NGU3OTRlMjdmZTdmMTc0NTFkOTM1M2NkZjNkIgogICAgICBTUkNSRVZfbWFjaGluZV9iZWFnbGVib25lLXlvY3RvID89ICIzZGY0YWFlNjA3NGU5NGU3OTRlMjdmZTdmMTc0NTFkOTM1M2NkZjNkIgotICAgICBTUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjhiNjJhZjdmMjUyYWYxMDU4ODI3NjgwMmM0YzZkN2M1MDJlODc1YmUiCiAKICAgICAgQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYgPSAiZ2VuZXJpY3g4NiIKICAgICAgQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYtNjQgPSAiZ2VuZXJpY3g4Ni02NCIKICAgICAgQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKICAgICAgQ09NUEFUSUJMRV9NQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPSAiYmVhZ2xlYm9uZS15b2N0byIKLSAgICAgQ09NUEFUSUJMRV9NQUNISU5FX21wYzgzMTVlLXJkYiA9ICJtcGM4MzE1ZS1yZGIiCiAKICAgICAgTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjUuMC4zIgogICAgICBMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNS4wLjMiCiAgICAgIExJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI1LjAuMyIKICAgICAgTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjUuMC4zIgotICAgICBMSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI1LjAuMyIKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIFRoaXMgcGFydGljdWxhciBhcHBlbmQgZmlsZSB3b3JrcyBmb3IgYWxsIHRoZQogICAgICAgICAgICAgbWFjaGluZXMgdGhhdCBhcmUgcGFydCBvZiB0aGUKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzLnhtbAppbmRleCAwMDc0MWVlLi5lOWNlMTgyIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrcy54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3MueG1sCkBAIC0xODQsNiArMTg0LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1MQVlFUkRFUEVORFMnPjxmaWxlbmFtZT5MQVlFUkRFUEVORFM8L2ZpbGVuYW1lPjwvdWxpbms+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0cyBhbGwgbGF5ZXJzIG9uIHdoaWNoIHRoaXMgbGF5ZXIgZGVwZW5kcyAoaWYgYW55KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTEFZRVJTRVJJRVNfQ09NUEFUJz48ZmlsZW5hbWU+TEFZRVJTRVJJRVNfQ09NUEFUPC9maWxlbmFtZT48L3VsaW5rPjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19XSUtJX1VSTDsvd2lraS9SZWxlYXNlcyc+WW9jdG8gUHJvamVjdDwvdWxpbms+CkBAIC0zMTUsMTIgKzMxOSwyNiBAQAogICAgICBERVBFTkRTX2FwcGVuZF9vbmUgPSAiIGZvbyIKICAgICAgREVQRU5EU19wcmVwZW5kX29uZSA9ICJmb28gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzIGFuIGFjdHVhbCBleGFtcGxlLCBoZXJlJ3MgYSBsaW5lIGZyb20gdGhlIHJlY2lwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZ251dGxzLCB3aGljaCBhZGRzIGRlcGVuZGVuY2llcyBvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJncC1zdGFuZGFsb25lIiB3aGVuIGJ1aWxkaW5nIHdpdGggdGhlIG11c2wgQwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBhY3R1YWwgZXhhbXBsZSwgaGVyZSdzIGEgc25pcHBldCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmljIGtlcm5lbCBpbmNsdWRlIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpbnV4LXlvY3RvLmluYzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZWluIHRoZSBrZXJuZWwgY29tcGlsZSBhbmQgbGluayBvcHRpb25zIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZCBpbiB0aGUgY2FzZSBvZiBhIHN1YnNldCBvZiB0aGUgc3VwcG9ydGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBhcmdwLXN0YW5kYWxvbmUiCisgICAgIERFUEVORFNfYXBwZW5kX2FhcmNoNjQgPSAiIGxpYmdjYyIKKyAgICAgS0VSTkVMX0NDX2FwcGVuZF9hYXJjaDY0ID0gIiAke1RPT0xDSEFJTl9PUFRJT05TfSIKKyAgICAgS0VSTkVMX0xEX2FwcGVuZF9hYXJjaDY0ID0gIiAke1RPT0xDSEFJTl9PUFRJT05TfSIKKworICAgICBERVBFTkRTX2FwcGVuZF9uaW9zMiA9ICIgbGliZ2NjIgorICAgICBLRVJORUxfQ0NfYXBwZW5kX25pb3MyID0gIiAke1RPT0xDSEFJTl9PUFRJT05TfSIKKyAgICAgS0VSTkVMX0xEX2FwcGVuZF9uaW9zMiA9ICIgJHtUT09MQ0hBSU5fT1BUSU9OU30iCisKKyAgICAgREVQRU5EU19hcHBlbmRfYXJjID0gIiBsaWJnY2MiCisgICAgIEtFUk5FTF9DQ19hcHBlbmRfYXJjID0gIiAke1RPT0xDSEFJTl9PUFRJT05TfSIKKyAgICAgS0VSTkVMX0xEX2FwcGVuZF9hcmMgPSAiICR7VE9PTENIQUlOX09QVElPTlN9IgorCisgICAgIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGZlYXR1cmVzL2RlYnVnL3ByaW50ay5zY2MiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdm9pZGluZyAiKz0iIGFuZCAiPSsiIGFuZCB1c2luZwpAQCAtNTgwLDExICs1OTgsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZSAtZTwvZmlsZW5hbWU+KS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29tbW9uLnRlc3Rfd29ybGQ8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJpZmllcyB0aGF0IDxmaWxlbmFtZT5iaXRiYWtlIHdvcmxkPC9maWxlbmFtZT4gd29ya3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbW1vbi50ZXN0X3NpZ25hdHVyZXM8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0cyB0byBiZSBzdXJlIHRoYXQgQlNQIGFuZCBESVNUUk8gbGF5ZXJzIGRvIG5vdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbWUgd2l0aCByZWNpcGVzIHRoYXQgY2hhbmdlIHNpZ25hdHVyZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbW1vbi50ZXN0X2xheWVyc2VyaWVzX2NvbXBhdDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcmlmaWVzIGxheWVyIGNvbXBhdGliaWxpdHkgaXMgc2V0IHByb3Blcmx5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ic3AudGVzdF9ic3BfZGVmaW5lc19tYWNoaW5lczwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RzIGlmIGEgQlNQIGxheWVyIGhhcyBtYWNoaW5lIGNvbmZpZ3VyYXRpb25zLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgpAQCAtNTk0LDExICs2MjAsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lIHdoZW4gdGhlIGxheWVyIGlzIGFkZGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ic3AudGVzdF9tYWNoaW5lX3dvcmxkPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyaWZpZXMgdGhhdCA8ZmlsZW5hbWU+Yml0YmFrZSB3b3JsZDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya3MgcmVnYXJkbGVzcyBvZiB3aGljaCBtYWNoaW5lIGlzIHNlbGVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ic3AudGVzdF9tYWNoaW5lX3NpZ25hdHVyZXM8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJpZmllcyB0aGF0IGJ1aWxkaW5nIGZvciBhIHBhcnRpY3VsYXIgbWFjaGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmZmVjdHMgb25seSB0aGUgc2lnbmF0dXJlIG9mIHRhc2tzIHNwZWNpZmljIHRvIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXN0cm8udGVzdF9kaXN0cm9fZGVmaW5lc19kaXN0cm9zPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdHMgaWYgYSBESVNUUk8gbGF5ZXIgaGFzIGRpc3RybyBjb25maWd1cmF0aW9ucy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlzdHJvLnRlc3RfZGlzdHJvX25vX3NldF9kaXN0cm88L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlzdHJvLnRlc3RfZGlzdHJvX25vX3NldF9kaXN0cm9zPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdHMgdG8gZW5zdXJlIGEgRElTVFJPIGxheWVyIGRvZXMgbm90IHNldCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24gd2hlbiB0aGUgbGF5ZXIgaXMgYWRkZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC0xMzk3LDcgKzE0MzQsNyBAQAogICAgICAgICAgICAgICAgIHBhY2thZ2Ugc3BlY2lmaWVkIGluIHRoZSA8ZmlsZW5hbWU+UEFDS0FHRVM8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgIHN0YXRlbWVudC4KICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5pbmhlcml0IHBhY2thZ2VzPC9maWxlbmFtZT4gc2hvdWxkIGJlCisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+aW5oZXJpdCBwYWNrYWdlZ3JvdXA8L2ZpbGVuYW1lPiBsaW5lIHNob3VsZCBiZQogICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIG5lYXIgdGhlIHRvcCBvZiB0aGUgcmVjaXBlLCBjZXJ0YWlubHkgYmVmb3JlCiAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+UEFDS0FHRVM8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQuCiAgICAgICAgICAgICAgICAgPC9ub3RlPgpAQCAtMTQxNywyOCArMTQ1NCwzMiBAQAogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBIZXJlIGlzIGEgc2hvcnQsIGZhYnJpY2F0ZWQgZXhhbXBsZSBzaG93aW5nIHRoZSBzYW1lIGJhc2ljCi0gICAgICAgICAgICAgICAgcGllY2VzOgorICAgICAgICAgICAgICAgIHBpZWNlcyBmb3IgYSBoeXBvdGhldGljYWwgcGFja2FnZWdyb3VwIGRlZmluZWQgaW4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWN1c3RvbS5iYjwvZmlsZW5hbWU+LCB3aGVyZSB0aGUKKyAgICAgICAgICAgICAgICB2YXJpYWJsZSA8ZmlsZW5hbWU+UE48L2ZpbGVuYW1lPiBpcyB0aGUgc3RhbmRhcmQgd2F5IHRvCisgICAgICAgICAgICAgICAgYWJicmV2aWF0ZSB0aGUgcmVmZXJlbmNlIHRvIHRoZSBmdWxsIHBhY2thZ2Vncm91cCBuYW1lCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jdXN0b208L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIERFU0NSSVBUSU9OID0gIk15IEN1c3RvbSBQYWNrYWdlIEdyb3VwcyIKIAogICAgICBpbmhlcml0IHBhY2thZ2Vncm91cAogCiAgICAgIFBBQ0tBR0VTID0gIlwKLSAgICAgICAgIHBhY2thZ2Vncm91cC1jdXN0b20tYXBwcyBcCi0gICAgICAgICBwYWNrYWdlZ3JvdXAtY3VzdG9tLXRvb2xzIFwKKyAgICAgICAgICR7UE59LWFwcHMgXAorICAgICAgICAgJHtQTn0tdG9vbHMgXAogICAgICAgICAgIgogCi0gICAgIFJERVBFTkRTX3BhY2thZ2Vncm91cC1jdXN0b20tYXBwcyA9ICJcCisgICAgIFJERVBFTkRTXyR7UE59LWFwcHMgPSAiXAogICAgICAgICAgZHJvcGJlYXIgXAogICAgICAgICAgcG9ydG1hcCBcCiAgICAgICAgICBwc3BsYXNoIgogCi0gICAgIFJERVBFTkRTX3BhY2thZ2Vncm91cC1jdXN0b20tdG9vbHMgPSAiXAorICAgICBSREVQRU5EU18ke1BOfS10b29scyA9ICJcCiAgICAgICAgICBvcHJvZmlsZSBcCiAgICAgICAgICBvcHJvZmlsZXVpLXNlcnZlciBcCiAgICAgICAgICBsdHRuZy10b29scyIKIAotICAgICBSUkVDT01NRU5EU19wYWNrYWdlZ3JvdXAtY3VzdG9tLXRvb2xzID0gIlwKKyAgICAgUlJFQ09NTUVORFNfJHtQTn0tdG9vbHMgPSAiXAogICAgICAgICAga2VybmVsLW1vZHVsZS1vcHJvZmlsZSIKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICA8L3BhcmE+CkBAIC0xOTAwLDkgKzE5NDEsOSBAQAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gdmFyaWFibGUgaW4geW91ciByZWNpcGUgbXVzdAogICAgICAgICAgICAgICAgIGRlZmluZSBlYWNoIHVuaXF1ZSBsb2NhdGlvbiBmb3IgeW91ciBzb3VyY2UgZmlsZXMuCi0gICAgICAgICAgICAgICAgSXQgaXMgZ29vZCBwcmFjdGljZSB0byBub3QgaGFyZC1jb2RlIHBhdGhuYW1lcyBpbiBhbiBVUkwgdXNlZAorICAgICAgICAgICAgICAgIEl0IGlzIGdvb2QgcHJhY3RpY2UgdG8gbm90IGhhcmQtY29kZSB2ZXJzaW9uIG51bWJlcnMgaW4gYSBVUkwgdXNlZAogICAgICAgICAgICAgICAgIGluIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgUmF0aGVyIHRoYW4gaGFyZC1jb2RlIHRoZXNlIHBhdGhzLCB1c2UKKyAgICAgICAgICAgICAgICBSYXRoZXIgdGhhbiBoYXJkLWNvZGUgdGhlc2UgdmFsdWVzLCB1c2UKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHs8L2ZpbGVuYW1lPjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L3VsaW5rPjxmaWxlbmFtZT59PC9maWxlbmFtZT4sCiAgICAgICAgICAgICAgICAgd2hpY2ggY2F1c2VzIHRoZSBmZXRjaCBwcm9jZXNzIHRvIHVzZSB0aGUgdmVyc2lvbiBzcGVjaWZpZWQgaW4KICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlIGZpbGVuYW1lLgpAQCAtMTkxMywxMyArMTk1NCwxMyBAQAogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBIZXJlIGlzIGEgc2ltcGxlIGV4YW1wbGUgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWRldnRvb2xzL2NkcnRvb2xzL2NkcnRvb2xzLW5hdGl2ZV8zLjAxYTIwLmJiPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNS41LmJiPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICByZWNpcGUgd2hlcmUgdGhlIHNvdXJjZSBjb21lcyBmcm9tIGEgc2luZ2xlIHRhcmJhbGwuCiAgICAgICAgICAgICAgICAgTm90aWNlIHRoZSB1c2Ugb2YgdGhlCiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBWJz48ZmlsZW5hbWU+UFY8L2ZpbGVuYW1lPjwvdWxpbms+CiAgICAgICAgICAgICAgICAgdmFyaWFibGU6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTUkNfVVJJID0gImZ0cDovL2Z0cC5iZXJsaW9zLmRlL3B1Yi9jZHJlY29yZC9hbHBoYS9jZHJ0b29scy0ke1BWfS50YXIuYnoyIgorICAgICBTUkNfVVJJID0gImh0dHBzOi8vc3RyYWNlLmlvL2ZpbGVzLyR7UFZ9L3N0cmFjZS0ke1BWfS50YXIueHogXAogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMTk3OCwxNiArMjAxOSwxNyBAQAogICAgICAgICAgICAgICAgIEZvciB0aGVzZSBjYXNlcywgeW91IHByb3ZpZGUgYSBuYW1lIGZvciBlYWNoIFVSTCBhcyBwYXJ0IG9mCiAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5TUkNfVVJJPC9maWxlbmFtZT4gYW5kIHRoZW4gcmVmZXJlbmNlIHRoYXQgbmFtZQogICAgICAgICAgICAgICAgIGluIHRoZSBzdWJzZXF1ZW50IGNoZWNrc3VtIHN0YXRlbWVudHMuCi0gICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBjb21iaW5pbmcgbGluZXMgZnJvbSB0aGUgZmlsZXMKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0LmluYzwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naXRfMi4yNC4xLmJiPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTUkNfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9hL2FwbWQvYXBtZF8zLjIuMi5vcmlnLnRhci5nejtuYW1lPXRhcmJhbGwgXAotICAgICAgICAgICAgICAgICR7REVCSUFOX01JUlJPUn0vbWFpbi9hL2FwbWQvYXBtZF8ke1BWfS5kaWZmLmd6O25hbWU9cGF0Y2giCisgICAgIFNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS9zY20vZ2l0L2dpdC0ke1BWfS50YXIuZ3o7bmFtZT10YXJiYWxsIFwKKyAgICAgICAgICAgICAgICAke0tFUk5FTE9SR19NSVJST1J9L3NvZnR3YXJlL3NjbS9naXQvZ2l0LW1hbnBhZ2VzLSR7UFZ9LnRhci5nejtuYW1lPW1hbnBhZ2VzIgogCi0gICAgIFNSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gImIxZTYzMDllODMzMWUwZjRlNmVmZDMxMWMyZDk3ZmE4IgotICAgICBTUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICI3ZjdkOWY2MGI3NzY2Yjg1Mjg4MWQ0MGI4ZmY5MWQ4ZTM5ZmNjYjBkMWQ5MTMxMDJhNWM3NWEyZGJiNTIzMzJkIgotCi0gICAgIFNSQ19VUklbcGF0Y2gubWQ1c3VtXSA9ICI1N2UxYjY4OTI2NGVhODBmNzgzNTM1MTllZWNlMGM5MiIKLSAgICAgU1JDX1VSSVtwYXRjaC5zaGEyNTZzdW1dID0gIjc5MDVmZjk2YmU5M2Q3MjU1NDRkMDA0MGU0MjVjNDJmOWMwNTU4MGRiM2MyNzJmMTFjZmY3NWI5YWE4OWQ0MzAiCisgICAgIFNSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjE2NmJkZTk2YWRiYmMxMWM4ODQzZDRmOGY0Zjk4MTFiIgorICAgICBTUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICJhZDUzMzQ5NTYzMDFjODY4NDFlYjFlNWIxYmIyMDg4NGE2YmFkODlhMTBhNjc2MmM5NTgyMjBjN2NmNjRkYTAyIgorICAgICBTUkNfVVJJW21hbnBhZ2VzLm1kNXN1bV0gPSAiMzFjMjI3MmE4OTc5MDIyNDk3YmEzZDQyMDJkZjE0NWQiCisgICAgIFNSQ19VUklbbWFucGFnZXMuc2hhMjU2c3VtXSA9ICI5YTdhZTNhMDkzYmVhMzk3NzBlYjk2Y2EzZTViNDBiZmY3YWYwYjlmNjEyM2YwODlkNzgyMWQwZTViOGUxMjMwIgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMzI0Miw4ICszMjg0LDYgQEAKICAgICAgICAgICAgICAgICBUaGUgc2NyaXB0IGRlZmluZWQgaW4gdGhlIHBvc3QtaW5zdGFsbGF0aW9uIGZ1bmN0aW9uIGlzCiAgICAgICAgICAgICAgICAgY2FsbGVkIHdoZW4gdGhlIHJvb3QgZmlsZXN5c3RlbSBpcyBjcmVhdGVkLgogICAgICAgICAgICAgICAgIElmIHRoZSBzY3JpcHQgc3VjY2VlZHMsIHRoZSBwYWNrYWdlIGlzIG1hcmtlZCBhcyBpbnN0YWxsZWQuCi0gICAgICAgICAgICAgICAgSWYgdGhlIHNjcmlwdCBmYWlscywgdGhlIHBhY2thZ2UgaXMgbWFya2VkIGFzIHVucGFja2VkIGFuZAotICAgICAgICAgICAgICAgIHRoZSBzY3JpcHQgaXMgZXhlY3V0ZWQgd2hlbiB0aGUgaW1hZ2UgYm9vdHMgYWdhaW4uCiAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgIEFueSBSUE0gcG9zdC1pbnN0YWxsYXRpb24gc2NyaXB0IHRoYXQgcnVucyBvbiB0aGUgdGFyZ2V0CiAgICAgICAgICAgICAgICAgICAgIHNob3VsZCByZXR1cm4gYSAwIGV4aXQgY29kZS4KQEAgLTMyNjIsNyArMzMwMiw3IEBACiAgICAgICAgICAgICAgICAgbWFyayBwb3N0IGluc3RhbGxzIHRvIGRlZmVyIHRvIHRoZSB0YXJnZXQuCiAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgPGZpbGVuYW1lPnBrZ19wb3N0aW5zdF9vbnRhcmdldCgpPC9maWxlbmFtZT4gb3IKICAgICAgICAgICAgICAgICBjYWxsCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBvc3RpbnN0LWludGVyY2VwdHMgZGVmZXJfdG9fZmlyc3RfYm9vdDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBvc3RpbnN0X2ludGVyY2VwdCBkZWxheV90b19maXJzdF9ib290PC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICBmcm9tIDxmaWxlbmFtZT5wa2dfcG9zdGluc3QoKTwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgIEFueSBmYWlsdXJlIG9mIGEgPGZpbGVuYW1lPnBrZ19wb3N0aW5zdCgpPC9maWxlbmFtZT4gc2NyaXB0CiAgICAgICAgICAgICAgICAgKGluY2x1ZGluZyBleGl0IDEpIHRyaWdnZXJzIGFuIGVycm9yIGR1cmluZyB0aGUKQEAgLTc2MDksNyArNzY0OSw2IEBACiAgICAgICAgICAgICAgICAgYXZhaWxhYmxlIFdpYyBpbWFnZXMgYXMgZm9sbG93czoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgd2ljIGxpc3QgaW1hZ2VzCi0gICAgICAgbXBjODMxNWUtcmRiICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgU0QgY2FyZCBpbWFnZSBmb3IgTVBDODMxNUUtUkRCCiAgICAgICAgZ2VuZXJpY3g4NiAgICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgYW4gRUZJIGRpc2sgaW1hZ2UgZm9yIGdlbmVyaWN4ODYqCiAgICAgICAgYmVhZ2xlYm9uZS15b2N0byAgICAgICAgICAgICAgCQlDcmVhdGUgU0QgY2FyZCBpbWFnZSBmb3IgQmVhZ2xlYm9uZQogICAgICAgIGVkZ2Vyb3V0ZXIgICAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIFNEIGNhcmQgaW1hZ2UgZm9yIEVkZ2Vyb3V0ZXIKQEAgLTc3OTcsNyArNzgzNiw2IEBACiAgICAgICAgICAgICAgICAgZmlsZXM6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHdpYyBsaXN0IGltYWdlcwotICAgICAgIG1wYzgzMTVlLXJkYiAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIFNEIGNhcmQgaW1hZ2UgZm9yIE1QQzgzMTVFLVJEQgogICAgICAgIGdlbmVyaWN4ODYgICAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIGFuIEVGSSBkaXNrIGltYWdlIGZvciBnZW5lcmljeDg2KgogICAgICAgIGJlYWdsZWJvbmUteW9jdG8gICAgICAgICAgICAgIAkJQ3JlYXRlIFNEIGNhcmQgaW1hZ2UgZm9yIEJlYWdsZWJvbmUKICAgICAgICBlZGdlcm91dGVyICAgICAgICAgICAgICAgICAgICAJCUNyZWF0ZSBTRCBjYXJkIGltYWdlIGZvciBFZGdlcm91dGVyCkBAIC0xMDU1MCw3ICsxMDU4OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZXZ0b29sPC9maWxlbmFtZT4gYW5kIHRoZSBOUE0gZmV0Y2hlciB0bwogICAgICAgICAgICAgICAgICAgICBjcmVhdGUgdGhlIHJlY2lwZToKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGRldnRvb2wgYWRkICJucG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7bmFtZT1jdXRlLWZpbGVzO3ZlcnNpb249MS4wLjIiCisgICAgICQgZGV2dG9vbCBhZGQgIm5wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPWN1dGUtZmlsZXM7dmVyc2lvbj0xLjAuMiIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgYWRkPC9maWxlbmFtZT4gY29tbWFuZCBydW5zCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGV0b29sIGNyZWF0ZTwvZmlsZW5hbWU+IGFuZCB1c2VzIHRoZQpAQCAtMTA1NzUsMjUgKzEwNjEzLDEzIEBACiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGV0b29sPC9maWxlbmFtZT4gY3JlYXRlcyAic2hyaW5rd3JhcCIgYW5kCi0gICAgICAgICAgICAgICAgICAgICJsb2NrZG93biIgZmlsZXMgZm9yIHlvdXIgcmVjaXBlLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBldG9vbDwvZmlsZW5hbWU+IGNyZWF0ZXMgYSAic2hyaW5rd3JhcCIgZmlsZQorICAgICAgICAgICAgICAgICAgICBmb3IgeW91ciByZWNpcGUuCiAgICAgICAgICAgICAgICAgICAgIFNocmlua3dyYXAgZmlsZXMgY2FwdHVyZSB0aGUgdmVyc2lvbiBvZiBhbGwgZGVwZW5kZW50CiAgICAgICAgICAgICAgICAgICAgIG1vZHVsZXMuCiAgICAgICAgICAgICAgICAgICAgIE1hbnkgcGFja2FnZXMgZG8gbm90IHByb3ZpZGUgc2hyaW5rd3JhcCBmaWxlcy4KICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXRvb2w8L2ZpbGVuYW1lPiBjcmVhdGUgYSBzaHJpbmt3cmFwCiAgICAgICAgICAgICAgICAgICAgIGZpbGUgYXMgaXQgcnVucy4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiByZXBsYWNlIHRoZSBzaHJpbmt3cmFwIGZpbGUgd2l0aCB5b3VyIG93biBmaWxlCi0gICAgICAgICAgICAgICAgICAgIGJ5IHNldHRpbmcgdGhlIDxmaWxlbmFtZT5OUE1fU0hSSU5LV1JBUDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBMb2NrZG93biBmaWxlcyBjb250YWluIHRoZSBjaGVja3N1bSBmb3IgZWFjaCBtb2R1bGUKLSAgICAgICAgICAgICAgICAgICAgdG8gZGV0ZXJtaW5lIGlmIHlvdXIgdXNlcnMgZG93bmxvYWQgdGhlIHNhbWUgZmlsZXMgd2hlbgotICAgICAgICAgICAgICAgICAgICBidWlsZGluZyB3aXRoIGEgcmVjaXBlLgotICAgICAgICAgICAgICAgICAgICBMb2NrZG93biBmaWxlcyBlbnN1cmUgdGhhdCBkZXBlbmRlbmNpZXMgaGF2ZSBub3QgYmVlbgotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIGFuZCB0aGF0IHlvdXIgTlBNIHJlZ2lzdHJ5IGlzIHN0aWxsIHByb3ZpZGluZwotICAgICAgICAgICAgICAgICAgICB0aGUgc2FtZSBmaWxlLgogICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgIEEgcGFja2FnZSBpcyBjcmVhdGVkIGZvciBlYWNoIHN1Yi1tb2R1bGUuCiAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBvbGljeSBpcyB0aGUgb25seSBwcmFjdGljYWwgd2F5IHRvIGhhdmUgdGhlCkBAIC0xMDYwOCwyMyArMTA2MzQsMjYgQEAKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGRldnRvb2wgZWRpdC1yZWNpcGUgY3V0ZS1maWxlcwogICAgICBTVU1NQVJZID0gIlR1cm4gYW55IGZvbGRlciBvbiB5b3VyIGNvbXB1dGVyIGludG8gYSBjdXRlIGZpbGUgYnJvd3NlciwgYXZhaWxhYmxlIG9uIHRoZSBsb2NhbCBuZXR3b3JrLiIKLSAgICAgTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UgJmFtcDsgVW5rbm93biAmYW1wOyBNSVQgJmFtcDsgSVNDIgorICAgICBMSUNFTlNFID0gIk1JVCAmYW1wOyBJU0MgJmFtcDsgVW5rbm93biIKICAgICAgTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzFkOThjMGExZGI0Mjk1Njc4N2IxOTA5Yzc0YTg2Y2EgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ub2RlX21vZHVsZXMvY29udGVudC1kaXNwb3NpdGlvbi9MSUNFTlNFO21kNT1jNmUwY2UxZTY4OGM1ZmYxNmRiMDZiNzI1OWU5Y2QyMCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL25vZGVfbW9kdWxlcy9leHByZXNzL0xJQ0VOU0U7bWQ1PTU1MTNjMDBhNWMzNmNkMzYxZGE4NjNkZDlhYTg4NzVkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbm9kZV9tb2R1bGVzL3RvaWRlbnRpZmllci9MSUNFTlNFO21kNT0xYTI2MTA3MWEwNDRkMDJlYjZmMmJiNDdmNTFhMzUwMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL25vZGVfbW9kdWxlcy9kZWJ1Zy9MSUNFTlNFO21kNT1kZGQ4MTVhNDc1ZTczMzhiMGJlN2ExNGQ4ZWUzNWE5OSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCiAKLSAgICAgU1JDX1VSSSA9ICJucG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7bmFtZT1jdXRlLWZpbGVzO3ZlcnNpb249JHtQVn0iCi0gICAgIE5QTV9TSFJJTktXUkFQIDo9ICIke1RISVNESVJ9LyR7UE59L25wbS1zaHJpbmt3cmFwLmpzb24iCi0gICAgIE5QTV9MT0NLRE9XTiA6PSAiJHtUSElTRElSfS8ke1BOfS9sb2NrZG93bi5qc29uIgotICAgICBpbmhlcml0IG5wbQotICAgICAjIE11c3QgYmUgc2V0IGFmdGVyIGluaGVyaXQgbnBtIHNpbmNlIHRoYXQgaXRzZWxmIHNldHMgUwotICAgICBTID0gIiR7V09SS0RJUn0vbnBtcGtnIgorICAgICBTUkNfVVJJID0gIiBcCisgICAgICAgICBucG06Ly9yZWdpc3RyeS5ucG1qcy5vcmcvO3BhY2thZ2U9Y3V0ZS1maWxlczt2ZXJzaW9uPSR7UFZ9IFwKKyAgICAgICAgIG5wbXN3Oi8vJHtUSElTRElSfS8ke0JQTn0vbnBtLXNocmlua3dyYXAuanNvbiBcCisgICAgICIKIAotICAgICBMSUNFTlNFXyR7UE59LWNvbnRlbnQtZGlzcG9zaXRpb24gPSAiTUlUIgotICAgICAuLi4KLSAgICAgTElDRU5TRV8ke1BOfS1leHByZXNzID0gIk1JVCIKKyAgICAgUyA9ICIke1dPUktESVJ9L25wbSIKKworICAgICBpbmhlcml0IG5wbQorCiAgICAgIExJQ0VOU0VfJHtQTn0gPSAiTUlUIgorICAgICBMSUNFTlNFXyR7UE59LWFjY2VwdHMgPSAiTUlUIgorICAgICBMSUNFTlNFXyR7UE59LWFycmF5LWZsYXR0ZW4gPSAiTUlUIgorICAgICAuLi4KKyAgICAgTElDRU5TRV8ke1BOfS12YXJ5ID0gIk1JVCIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICBUaHJlZSBrZXkgcG9pbnRzIGV4aXN0IGluIHRoZSBwcmV2aW91cyBleGFtcGxlOgogICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgpAQCAtMTA3MTcsMTEgKzEwNzQ2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IGxvb2tzIGxpa2UgdGhlCiAgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZzoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbWFydGluYWdsdi9jdXRlLWZpbGVzLmdpdDtwcm90b2NvbD1odHRwcyBcCi0gICAgICAgICAgICAgICBucG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7bmFtZT1jb21tYW5kZXI7dmVyc2lvbj0yLjkuMDtzdWJkaXI9bm9kZV9tb2R1bGVzL2NvbW1hbmRlciBcCi0gICAgICAgICAgICAgICBucG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7bmFtZT1leHByZXNzO3ZlcnNpb249NC4xNC4wO3N1YmRpcj1ub2RlX21vZHVsZXMvZXhwcmVzcyBcCi0gICAgICAgICAgICAgICBucG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7bmFtZT1jb250ZW50LWRpc3Bvc2l0aW9uO3ZlcnNpb249MC4zLjA7c3ViZGlyPW5vZGVfbW9kdWxlcy9jb250ZW50LWRpc3Bvc2l0aW9uIFwKLSAgICAgICAgICAgICAgICIKKyAgICAgU1JDX1VSSSA9ICIgXAorICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9tYXJ0aW5hZ2x2L2N1dGUtZmlsZXMuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgIG5wbXN3Oi8vJHtUSElTRElSfS8ke0JQTn0vbnBtLXNocmlua3dyYXAuanNvbiBcCisgICAgICAgICAiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgbWFpbiBtb2R1bGUgaXMgdGFrZW4gZnJvbSB0aGUgR2l0CiAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkgYW5kIGRlcGVuZGVudHMgYXJlIHRha2VuIGZyb20gdGhlIE5QTSByZWdpc3RyeS4KQEAgLTEwODIyLDcgKzEwODUwLDcgQEAKICAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBCaXRCYWtlIGNvbW1hbmQgZm9ybSB0byBmZXRjaCBhbGwgdGhlCiAgICAgICAgICAgICAgICAgbmVjZXNzYXJ5IHNvdXJjZXMgd2l0aG91dCBzdGFydGluZyB0aGUgYnVpbGQ6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgLWMgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IHJ1bmFsbD0iZmV0Y2giCisgICAgICQgYml0YmFrZSA8cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4gLS1ydW5hbGw9ZmV0Y2gKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYXRpb24gb2YgdGhlIEJpdEJha2UgY29tbWFuZCBndWFyYW50ZWVzIHRoYXQgeW91CiAgICAgICAgICAgICAgICAgaGF2ZSBhbGwgdGhlIHNvdXJjZXMgZm9yIHRoYXQgQml0QmFrZSB0YXJnZXQgc2hvdWxkIHlvdQpAQCAtMTA4NDUsMTUgKzEwODczLDYgQEAKICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIFlvY3RvIFByb2plY3QgdXNlcyBTeXNWaW5pdCBhcyB0aGUgaW5pdGlhbGl6YXRpb24KLSAgICAgICAgICAgIG1hbmFnZXIuCi0gICAgICAgICAgICBIb3dldmVyLCBzdXBwb3J0IGFsc28gZXhpc3RzIGZvciBzeXN0ZW1kLAotICAgICAgICAgICAgd2hpY2ggaXMgYSBmdWxsIHJlcGxhY2VtZW50IGZvciBpbml0IHdpdGgKLSAgICAgICAgICAgIHBhcmFsbGVsIHN0YXJ0aW5nIG9mIHNlcnZpY2VzLCByZWR1Y2VkIHNoZWxsIG92ZXJoZWFkIGFuZCBvdGhlcgotICAgICAgICAgICAgZmVhdHVyZXMgdGhhdCBhcmUgdXNlZCBieSBtYW55IGRpc3RyaWJ1dGlvbnMuCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFdpdGhpbiB0aGUgc3lzdGVtLCBTeXNWaW5pdCB0cmVhdHMgc3lzdGVtIGNvbXBvbmVudHMgYXMgc2VydmljZXMuCiAgICAgICAgICAgICBUaGVzZSBzZXJ2aWNlcyBhcmUgbWFpbnRhaW5lZCBhcyBzaGVsbCBzY3JpcHRzIHN0b3JlZCBpbiB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT4vZXRjL2luaXQuZC88L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCkBAIC0xMTE2NCwxOCArMTExODMsMTggQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgVG8gY3JlYXRlIHRoZSByZWFkLW9ubHkgcm9vdCBmaWxlc3lzdGVtLCBzaW1wbHkgYWRkIHRoZQotICAgICAgICAgICAgICAgICJyZWFkLW9ubHktcm9vdGZzIiBmZWF0dXJlIHRvIHlvdXIgaW1hZ2UuCi0gICAgICAgICAgICAgICAgVXNpbmcgZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50cyBpbiB5b3VyCi0gICAgICAgICAgICAgICAgaW1hZ2UgcmVjaXBlIG9yIGZyb20gd2l0aGluIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKLSAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgY2F1c2VzIHRoZSBidWlsZCBzeXN0ZW0gdG8gY3JlYXRlIGEgcmVhZC1vbmx5IHJvb3QgZmlsZXN5c3RlbToKKyAgICAgICAgICAgICAgICAicmVhZC1vbmx5LXJvb3RmcyIgZmVhdHVyZSB0byB5b3VyIGltYWdlLCBub3JtYWxseSBpbiBvbmUgb2YgdHdvIHdheXMuCisgICAgICAgICAgICAgICAgVGhlIGZpcnN0IHdheSBpcyB0byBhZGQgdGhlICJyZWFkLW9ubHktcm9vdGZzIiBpbWFnZSBmZWF0dXJlCisgICAgICAgICAgICAgICAgaW4gdGhlIGltYWdlJ3MgcmVjaXBlIGZpbGUgdmlhIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+IHZhcmlhYmxlOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgSU1BR0VfRkVBVFVSRVMgPSAicmVhZC1vbmx5LXJvb3RmcyIKKyAgICAgSU1BR0VfRkVBVFVSRVMgKz0gInJlYWQtb25seS1yb290ZnMiCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgICAgQXMgYW4gYWx0ZXJuYXRpdmUsIHlvdSBjYW4gYWRkIHRoZSBzYW1lIGZlYXR1cmUgZnJvbSB3aXRoaW4geW91cgorICAgICAgICAgICAgICAgIGJ1aWxkIGRpcmVjdG9yeSdzIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSB3aXRoIHRoZQorICAgICAgICAgICAgICAgIGFzc29jaWF0ZWQgPGZpbGVuYW1lPkVYVFJBX0lNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT4gdmFyaWFibGUsIGFzIGluOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgRVhUUkFfSU1BR0VfRkVBVFVSRVMgKz0gInJlYWQtb25seS1yb290ZnMiCisgICAgIEVYVFJBX0lNQUdFX0ZFQVRVUkVTID0gInJlYWQtb25seS1yb290ZnMiCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgPC9wYXJhPgogCkBAIC0xMjAzOCwxNSArMTIwNTcsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gcnVuIHRlc3RzIG9uIGhhcmR3YXJlLCB5b3UgbmVlZCB0byBzZXQKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRFU1RfVEFSR0VUPC9maWxlbmFtZT4gdG8gYW4gYXBwcm9wcmlhdGUgdmFsdWUuCiAgICAgICAgICAgICAgICAgICAgIEZvciBRRU1VLCB5b3UgZG8gbm90IGhhdmUgdG8gY2hhbmdlIGFueXRoaW5nLCB0aGUgZGVmYXVsdAotICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpcyAiUWVtdVRhcmdldCIuCisgICAgICAgICAgICAgICAgICAgIHZhbHVlIGlzICJxZW11Ii4KICAgICAgICAgICAgICAgICAgICAgRm9yIHJ1bm5pbmcgdGVzdHMgb24gaGFyZHdhcmUsIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBleGlzdDoKICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+IlNpbXBsZVJlbW90ZVRhcmdldCI6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2UgIlNpbXBsZVJlbW90ZVRhcmdldCIgaWYgeW91IGFyZSBnb2luZyB0bworICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4ic2ltcGxlcmVtb3RlIjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENob29zZSAic2ltcGxlcmVtb3RlIiBpZiB5b3UgYXJlIGdvaW5nIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuIHRlc3RzIG9uIGEgdGFyZ2V0IHN5c3RlbSB0aGF0IGlzIGFscmVhZHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nIHRoZSBpbWFnZSB0byBiZSB0ZXN0ZWQgYW5kIGlzIGF2YWlsYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSBuZXR3b3JrLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlICJTaW1wbGVSZW1vdGVUYXJnZXQiIGluIGNvbmp1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgInNpbXBsZXJlbW90ZSIgaW4gY29uanVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGVpdGhlciByZWFsIGhhcmR3YXJlIG9yIGFuIGltYWdlIHJ1bm5pbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoaW4gYSBzZXBhcmF0ZWx5IHN0YXJ0ZWQgUUVNVSBvciBhbnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlciB2aXJ0dWFsIG1hY2hpbmUgbWFuYWdlci4KQEAgLTEyMjIxLDcgKzEyMjQwLDcgQEAKICAgICAgICAgICAgICAgICA8dGl0bGU+UG93ZXIgQ29udHJvbDwvdGl0bGU+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgRm9yIG1vc3QgaGFyZHdhcmUgdGFyZ2V0cyBvdGhlciB0aGFuIFNpbXBsZVJlbW90ZVRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgRm9yIG1vc3QgaGFyZHdhcmUgdGFyZ2V0cyBvdGhlciB0aGFuICJzaW1wbGVyZW1vdGUiLAogICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIGNvbnRyb2wgcG93ZXI6CiAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CkBAIC0xMjYxOCw3ICsxMjYzNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPnRhcmdldDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdGFyZ2V0IGNvbnRyb2xsZXIgb2JqZWN0IHVzZWQgdG8gZGVwbG95CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc3RhcnQgYW4gaW1hZ2Ugb24gYSBwYXJ0aWN1bGFyIHRhcmdldAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gUWVtdVRhcmdldCwgU2ltcGxlUmVtb3RlLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIFFlbXUsIFNpbXBsZVJlbW90ZSwgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW1kYm9vdFRhcmdldCkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0cyB1c3VhbGx5IHVzZSB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtcWVtdS54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXFlbXUueG1sCmluZGV4IGY1YTBkNjQuLjVjY2MwZGYgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtcWVtdS54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1xZW11LnhtbApAQCAtMTUxLDEzICsxNTEsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGV4YW1wbGUgc3RhcnRzIFFFTVUgd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT4gc2V0IHRvICJxZW11eDg2Ii4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+IHNldCB0byAicWVtdXg4Ni02NCIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXNzdW1pbmcgYSBzdGFuZGFyZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBhdXRvbWF0aWNhbGx5IGZpbmRzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iekltYWdlLXFlbXV4ODYuYmluPC9maWxlbmFtZT4gaW1hZ2UgZmlsZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnpJbWFnZS1xZW11eDg2LTY0LmJpbjwvZmlsZW5hbWU+IGltYWdlIGZpbGUgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LTIwMTQwNzA3MDc0NjExLnJvb3Rmcy5leHQzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsLXFlbXV4ODYtNjQtMjAyMDAyMTgwMDI4NTAucm9vdGZzLmV4dDQ8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhc3N1bWluZyB0aGUgY3VycmVudCBidWlsZCBjcmVhdGVkIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gaW1hZ2UpLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgpAQCAtMTY2LDcgKzE2Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgcnVucWVtdSBxZW11eDg2CisgICAgICQgcnVucWVtdSBxZW11eDg2LTY0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtMTc1LDcgKzE3NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kLCBob3dldmVyLCBzcGVjaWZpY2FsbHkgcHJvdmlkZXMgdGhlIGltYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHJvb3QgZmlsZXN5c3RlbSB0eXBlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBydW5xZW11IHFlbXV4ODYgY29yZS1pbWFnZS1taW5pbWFsIGV4dDMKKyAgICAgJCBydW5xZW11IHFlbXV4ODYtNjQgY29yZS1pbWFnZS1taW5pbWFsIGV4dDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CkBAIC0xODgsNyArMTg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBpbnN0YWxsZWQgKHNlZSB0aGUgcHJldmlvdXMgZGVzY3JpcHRpb24gZm9yIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5hdWRpbzwvZmlsZW5hbWU+IG9wdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbikuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHJ1bnFlbXUgcWVtdXg4NiByYW1mcyBhdWRpbworICAgICAkIHJ1bnFlbXUgcWVtdXg4Ni02NCByYW1mcyBhdWRpbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTIwMCw3ICsyMDAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5LRVJORUw8L3JlcGxhY2VhYmxlPiwgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+Vk08L3JlcGxhY2VhYmxlPiBvcHRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHJ1bnFlbXUgZXh0MworICAgICAkIHJ1bnFlbXUgZXh0NAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTIwOSw5ICsyMDksOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb20gdGhlIDxmaWxlbmFtZT4ud2ljLnZtZGs8L2ZpbGVuYW1lPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnVucWVtdTwvZmlsZW5hbWU+IGRldGVybWluZXMgdGhlIFFFTVUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmUgKDxyZXBsYWNlYWJsZT5NQUNISU5FPC9yZXBsYWNlYWJsZT4pIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInFlbXV4ODYiIGFuZCB0aGUgcm9vdCBmaWxlc3lzdGVtIHR5cGUgdG8gYmUgInZtZGsiLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJxZW11eDg2LTY0IiBhbmQgdGhlIHJvb3QgZmlsZXN5c3RlbSB0eXBlIHRvIGJlICJ2bWRrIi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgcnVucWVtdSAvaG9tZS9zY290dC1sZW5vdm8vdm0vY29yZS1pbWFnZS1taW5pbWFsLXFlbXV4ODYud2ljLnZtZGsKKyAgICAgJCBydW5xZW11IC9ob21lL3Njb3R0LWxlbm92by92bS9jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni02NC53aWMudm1kawogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CkBAIC0yOTYsNyArMjk2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZXh0cmFjdHMgaXQgdG8gYSBkaXJlY3RvcnkgbmFtZWQKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRlc3QtbmZzPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgcnVucWVtdS1leHRyYWN0LXNkayAuL3RtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYvY29yZS1pbWFnZS1zYXRvLXFlbXV4ODYudGFyLmJ6MiB0ZXN0LW5mcworICAgICBydW5xZW11LWV4dHJhY3Qtc2RrIC4vdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni02NC9jb3JlLWltYWdlLXNhdG8tcWVtdXg4Ni02NC50YXIuYnoyIHRlc3QtbmZzCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtMzEwLDcgKzMxMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB1c2luZyB0aGUgPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBpbWFnZToKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBydW5xZW11IHFlbXV4ODYgLi90ZXN0LW5mcworICAgICBydW5xZW11IHFlbXV4ODYtNjQgLi90ZXN0LW5mcwogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1zdGFydC54bWwKaW5kZXggNTlmZmE0OS4uOGNiNTYzMSAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1zdGFydC54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1zdGFydC54bWwKQEAgLTcsNyArNyw3IEBACiA8dGl0bGU+U2V0dGluZyBVcCB0byBVc2UgdGhlIFlvY3RvIFByb2plY3Q8L3RpdGxlPgogCiA8cGFyYT4KLSAgICBUaGlzIGNoYXB0ZXIgcHJvdmlkZXMgcHJvY2VkdXJlcyByZWxhdGVkIHRvIGdldHRpbmcgc2V0IHVwIHRvIHVzZSB0aGUKKyAgICBUaGlzIGNoYXB0ZXIgcHJvdmlkZXMgZ3VpZGFuY2Ugb24gaG93IHRvIHByZXBhcmUgdG8gdXNlIHRoZQogICAgIFlvY3RvIFByb2plY3QuCiAgICAgWW91IGNhbiBsZWFybiBhYm91dCBjcmVhdGluZyBhIHRlYW0gZW52aXJvbm1lbnQgdGhhdCBkZXZlbG9wcyB1c2luZyB0aGUKICAgICBZb2N0byBQcm9qZWN0LCBob3cgdG8gc2V0IHVwIGEKQEAgLTI0LDkgKzI0LDkgQEAKICAgICAgICAgUHJvamVjdCBpbiBhIHRlYW0gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIG9yIGhvdyB0byBzY2FsZSBpdCBmb3IgYQogICAgICAgICBsYXJnZSB0ZWFtIG9mIGRldmVsb3BlcnMuCiAgICAgICAgIFlvdSBjYW4gYWRhcHQgdGhlIFlvY3RvIFByb2plY3QgdG8gbWFueSBkaWZmZXJlbnQgdXNlIGNhc2VzIGFuZAotICAgICAgICBzY2VuYXJpb3MuCi0gICAgICAgIEhvd2V2ZXIsIHRoaXMgZmxleGliaWxpdHkgY291bGQgY2F1c2UgZGlmZmljdWx0aWVzIGlmIHlvdSBhcmUgdHJ5aW5nCi0gICAgICAgIHRvIGNyZWF0ZSBhIHdvcmtpbmcgc2V0dXAgdGhhdCBzY2FsZXMgYWNyb3NzIGEgbGFyZ2UgdGVhbS4KKyAgICAgICAgc2NlbmFyaW9zOworICAgICAgICBob3dldmVyLCB0aGlzIGZsZXhpYmlsaXR5IGNvdWxkIGNhdXNlIGRpZmZpY3VsdGllcyBpZiB5b3UgYXJlIHRyeWluZworICAgICAgICB0byBjcmVhdGUgYSB3b3JraW5nIHNldHVwIHRoYXQgc2NhbGVzIGVmZmVjdGl2ZWx5LgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgpAQCAtMzUsMTcgKzM1LDE3IEBACiAgICAgICAgIHRoYXQgY2FuIGhlbHAgeW91IGdldCB0aGUgcmVzdWx0cyB5b3Ugd2FudC4KICAgICAgICAgVGhlIHByb2NlZHVyZSBpcyBoaWdoLWxldmVsIGFuZCBwcmVzZW50cyBzb21lIG9mIHRoZSBwcm9qZWN0J3MgbW9zdAogICAgICAgICBzdWNjZXNzZnVsIGV4cGVyaWVuY2VzLCBwcmFjdGljZXMsIHNvbHV0aW9ucywgYW5kIGF2YWlsYWJsZQotICAgICAgICB0ZWNobm9sb2dpZXMgdGhhdCBoYXZlIHByb3ZlZCB0byB3b3JrIHdlbGwgaW4gdGhlIHBhc3QuCi0gICAgICAgIEtlZXAgaW4gbWluZCwgdGhlIHByb2NlZHVyZSBoZXJlIGlzIGEgc3RhcnRpbmcgcG9pbnQuCisgICAgICAgIHRlY2hub2xvZ2llcyB0aGF0IGhhdmUgcHJvdmVkIHRvIHdvcmsgd2VsbCBpbiB0aGUgcGFzdDsKKyAgICAgICAgaG93ZXZlciwga2VlcCBpbiBtaW5kLCB0aGUgcHJvY2VkdXJlIGhlcmUgaXMgc2ltcGx5IGEgc3RhcnRpbmcgcG9pbnQuCiAgICAgICAgIFlvdSBjYW4gYnVpbGQgb2ZmIHRoZXNlIHN0ZXBzIGFuZCBjdXN0b21pemUgdGhlIHByb2NlZHVyZSB0byBmaXQgYW55CiAgICAgICAgIHBhcnRpY3VsYXIgd29ya2luZyBlbnZpcm9ubWVudCBhbmQgc2V0IG9mIHByYWN0aWNlcy4KICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXRlcm1pbmUgV2hvIGlzIEdvaW5nIHRvIGJlIERldmVsb3Bpbmc6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byB1bmRlcnN0YW5kIHdobyBpcyBnb2luZyB0byBiZSBkb2luZyBhbnl0aGluZworICAgICAgICAgICAgICAgIFlvdSBmaXJzdCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hvIGlzIGdvaW5nIHRvIGJlIGRvaW5nIGFueXRoaW5nCiAgICAgICAgICAgICAgICAgcmVsYXRlZCB0byB0aGUgWW9jdG8gUHJvamVjdCBhbmQgZGV0ZXJtaW5lIHRoZWlyIHJvbGVzLgogICAgICAgICAgICAgICAgIE1ha2luZyB0aGlzIGRldGVybWluYXRpb24gaXMgZXNzZW50aWFsIHRvIGNvbXBsZXRpbmcKLSAgICAgICAgICAgICAgICBzdGVwcyB0d28gYW5kIHRocmVlLCB3aGljaCBhcmUgdG8gZ2V0IHlvdXIgZXF1aXBtZW50IHRvZ2V0aGVyCisgICAgICAgICAgICAgICAgc3Vic2VxdWVudCBzdGVwcywgd2hpY2ggYXJlIHRvIGdldCB5b3VyIGVxdWlwbWVudCB0b2dldGhlcgogICAgICAgICAgICAgICAgIGFuZCBzZXQgdXAgeW91ciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCdzIGhhcmR3YXJlIHRvcG9sb2d5LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtNjQsOCArNjQsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5CdWlsZCBFbmdpbmVlcjo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdHlwZSBvZiBkZXZlbG9wZXIgbWFuYWdlcyBBdXRvYnVpbGRlcnMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90IGFsbCBlbnZpcm9ubWVudHMgbmVlZCBhIEJ1aWxkIEVuZ2luZWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VzLiBEZXBlbmRpbmcgb24gdGhlIHNwZWNpZmljcyBvZiB0aGUgZW52aXJvbm1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGFsbCBzaXR1YXRpb25zIG1pZ2h0IG5lZWQgYSBCdWlsZCBFbmdpbmVlci4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VGVzdCBFbmdpbmVlcjo8L2VtcGhhc2lzPgpAQCAtODgsNiArODgsMTEgQEAKICAgICAgICAgICAgICAgICBZb3UgY2FuIGhlbHAgZW5zdXJlIGVmZmljaWVuY3kgYnkgaGF2aW5nIGFueSBtYWNoaW5lcyB1c2VkCiAgICAgICAgICAgICAgICAgZm9yIHRlc3Rpbmcgb3IgdGhhdCBydW4gQXV0b2J1aWxkZXJzIGJlIGFzIGhpZ2ggcGVyZm9ybWFuY2UKICAgICAgICAgICAgICAgICBhcyBwb3NzaWJsZS4KKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgR2l2ZW4gc3VmZmljaWVudCBwcm9jZXNzaW5nIHBvd2VyLCB5b3UgbWlnaHQgYWxzbyBjb25zaWRlcgorICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGNvbnRhaW5lcnMgdG8gYmUgcnVuCisgICAgICAgICAgICAgICAgICAgIHVuZGVyIERvY2tlciwgd2hpY2ggaXMgZGVzY3JpYmVkIGxhdGVyLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VW5kZXJzdGFuZCB0aGUgSGFyZHdhcmUgVG9wb2xvZ3kgb2YgdGhlIEVudmlyb25tZW50OjwvZW1waGFzaXM+CkBAIC0xMTQsMTAgKzExOSwxMCBAQAogICAgICAgICAgICAgICAgIGFuZCBhbnkgc29mdHdhcmUgeW91IGFyZSBkZXZlbG9waW5nIHVuZGVyIHRoZSBjb250cm9sIG9mIGFuIFNDTQogICAgICAgICAgICAgICAgIHN5c3RlbSB0aGF0IGlzIGNvbXBhdGlibGUgICB3aXRoIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCiAgICAgICAgICAgICAgICAgaXMgYWR2aXNhYmxlLgotICAgICAgICAgICAgICAgIE9mIHRoZSBTQ01zIEJpdEJha2Ugc3VwcG9ydHMsIHRoZSBZb2N0byBQcm9qZWN0IHRlYW0gc3Ryb25nbHkKKyAgICAgICAgICAgICAgICBPZiBhbGwgb2YgdGhlIFNDTXMgc3VwcG9ydGVkIGJ5IEJpdEJha2UsIHRoZSBZb2N0byBQcm9qZWN0IHRlYW0gc3Ryb25nbHkKICAgICAgICAgICAgICAgICByZWNvbW1lbmRzIHVzaW5nCiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNnaXQnPkdpdDwvdWxpbms+LgotICAgICAgICAgICAgICAgIEdpdCBpcyBhIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0IGlzIGVhc3kgdG8gYmFja3VwLAorICAgICAgICAgICAgICAgIEdpdCBpcyBhIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0IGlzIGVhc3kgdG8gYmFjayB1cCwKICAgICAgICAgICAgICAgICBhbGxvd3MgeW91IHRvIHdvcmsgcmVtb3RlbHksIGFuZCB0aGVuIGNvbm5lY3RzIGJhY2sgdG8gdGhlCiAgICAgICAgICAgICAgICAgaW5mcmFzdHJ1Y3R1cmUuCiAgICAgICAgICAgICAgICAgPG5vdGU+CkBAIC0zMDIsNyArMzA3LDcgQEAKICAgICAgICAgICAgICAgICA8cGFyYT5BcyB3aXRoIGFueSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgaXQgaXMgaW1wb3J0YW50CiAgICAgICAgICAgICAgICAgdG8gZG9jdW1lbnQgdGhlIHBvbGljeSB1c2VkIGFzIHdlbGwgYXMgYW55IG1haW4gcHJvamVjdAogICAgICAgICAgICAgICAgIGd1aWRlbGluZXMgc28gdGhleSBhcmUgdW5kZXJzdG9vZCBieSBldmVyeW9uZS4KLSAgICAgICAgICAgICAgICBJdCBpcyBhbHNvIGEgZ29vZCBpZGVhIHRvIGhhdmUgd2VsbCBzdHJ1Y3R1cmVkCisgICAgICAgICAgICAgICAgSXQgaXMgYWxzbyBhIGdvb2QgaWRlYSB0byBoYXZlIHdlbGwtc3RydWN0dXJlZAogICAgICAgICAgICAgICAgIGNvbW1pdCBtZXNzYWdlcywgd2hpY2ggYXJlIHVzdWFsbHkgYSBwYXJ0IG9mIGEgcHJvamVjdCdzCiAgICAgICAgICAgICAgICAgZ3VpZGVsaW5lcy4KICAgICAgICAgICAgICAgICBHb29kIGNvbW1pdCBtZXNzYWdlcyBhcmUgZXNzZW50aWFsIHdoZW4gbG9va2luZyBiYWNrIGluIHRpbWUgYW5kCkBAIC0zOTQsMTYgKzM5OSwxOCBAQAogICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgcHJvY2VkdXJlcyB0byBzZXQgdXAgYSBzeXN0ZW0gdG8gYmUgdXNlZCBhcyB5b3VyCiAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2hhcmR3YXJlLWJ1aWxkLXN5c3RlbS10ZXJtJz5idWlsZCBob3N0PC91bGluaz4KICAgICAgICAgZm9yIGRldmVsb3BtZW50IHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICBZb3VyIGJ1aWxkIGhvc3QgY2FuIGJlIGEgbmF0aXZlIExpbnV4IG1hY2hpbmUgKHJlY29tbWVuZGVkKSBvciBpdCBjYW4KKyAgICAgICAgWW91ciBidWlsZCBob3N0IGNhbiBiZSBhIG5hdGl2ZSBMaW51eCBtYWNoaW5lIChyZWNvbW1lbmRlZCksIGl0IGNhbgogICAgICAgICBiZSBhIG1hY2hpbmUgKExpbnV4LCBNYWMsIG9yIFdpbmRvd3MpIHRoYXQgdXNlcwotICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvY3JvcHMvYWJvdXQvJz5DUk9QUzwvdWxpbms+LAorICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvcG9reS1jb250YWluZXInPkNST1BTPC91bGluaz4sCiAgICAgICAgIHdoaWNoIGxldmVyYWdlcwotICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5kb2NrZXIuY29tLyc+RG9ja2VyIENvbnRhaW5lcnM8L3VsaW5rPi4KKyAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8nPkRvY2tlciBDb250YWluZXJzPC91bGluaz4gb3IgaXQgY2FuCisgICAgICAgIGJlIGEgV2luZG93cyBtYWNoaW5lIGNhcGFibGUgb2YgcnVubmluZyBXaW5kb3dzIFN1YnN5c3RlbSBGb3IgTGludXggdjIgKFdTTCkuCiAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgWW91IGNhbm5vdCB1c2UgYSBidWlsZCBob3N0IHRoYXQgaXMgdXNpbmcgdGhlCi0gICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaW5kb3dzX1N1YnN5c3RlbV9mb3JfTGludXgnPldpbmRvd3MgU3Vic3lzdGVtIGZvciBMaW51eDwvdWxpbms+Ci0gICAgICAgICAgICAoV1NMKS4KLSAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggV1NMLgorICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGgKKyAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaW5kb3dzX1N1YnN5c3RlbV9mb3JfTGludXgnPldpbmRvd3MgU3Vic3lzdGVtIGZvciBMaW51eCB2MTwvdWxpbms+LgorICAgICAgICAgIEl0IGlzIGNvbXBhdGlibGUgYnV0IG5vdCBvZmZpY2lhbGx5IHN1cHBvcnRlZCBub3IgdmFsaWRhdGVkIHdpdGggV1NMdjIuCisgICAgICAgICAgSWYgeW91IHN0aWxsIGRlY2lkZSB0byB1c2UgV1NMIHBsZWFzZSB1cGdyYWRlIHRvCisgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93c2wvd3NsMi1pbnN0YWxsJz5XU0x2MjwvdWxpbms+LgogICAgICAgICA8L25vdGU+CiAgICAgPC9wYXJhPgogCkBAIC00NDIsNyArNDQ5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgWW91IHNob3VsZCBoYXZlIGEgcmVhc29uYWJseSBjdXJyZW50IExpbnV4LWJhc2VkIGhvc3QKICAgICAgICAgICAgICAgICAgICAgc3lzdGVtLgogICAgICAgICAgICAgICAgICAgICBZb3Ugd2lsbCBoYXZlIHRoZSBiZXN0IHJlc3VsdHMgd2l0aCBhIHJlY2VudCByZWxlYXNlIG9mCi0gICAgICAgICAgICAgICAgICAgIEZlZG9yYSwgb3BlblNVU0UsIERlYmlhbiwgVWJ1bnR1LCBvciBDZW50T1MgYXMgdGhlc2UKKyAgICAgICAgICAgICAgICAgICAgRmVkb3JhLCBvcGVuU1VTRSwgRGViaWFuLCBVYnVudHUsIFJIRUwgb3IgQ2VudE9TIGFzIHRoZXNlCiAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VzIGFyZSBmcmVxdWVudGx5IHRlc3RlZCBhZ2FpbnN0IHRoZSBZb2N0byBQcm9qZWN0CiAgICAgICAgICAgICAgICAgICAgIGFuZCBvZmZpY2lhbGx5IHN1cHBvcnRlZC4KICAgICAgICAgICAgICAgICAgICAgRm9yIGEgbGlzdCBvZiB0aGUgZGlzdHJpYnV0aW9ucyB1bmRlciB2YWxpZGF0aW9uIGFuZCB0aGVpcgpAQCAtNDYwLDIzICs0NjcsMjYgQEAKICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1lZXQgTWluaW1hbCBWZXJzaW9uIFJlcXVpcmVtZW50czo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBzaG91bGQgYmUgYWJsZSB0byBydW4gb24gYW55CiAgICAgICAgICAgICAgICAgICAgIG1vZGVybiBkaXN0cmlidXRpb24gdGhhdCBoYXMgdGhlIGZvbGxvd2luZyB2ZXJzaW9ucyBmb3IKLSAgICAgICAgICAgICAgICAgICAgR2l0LCB0YXIsIGFuZCBQeXRob24uCisgICAgICAgICAgICAgICAgICAgIEdpdCwgdGFyLCBQeXRob24gYW5kIGdjYy4KICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHaXQgMS44LjMuMSBvciBncmVhdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyIDEuMjcgb3IgZ3JlYXRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhciAxLjI4IG9yIGdyZWF0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeXRob24gMy40LjAgb3IgZ3JlYXRlci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeXRob24gMy41LjAgb3IgZ3JlYXRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjYyA1LjAgb3IgZ3JlYXRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBidWlsZCBob3N0IGRvZXMgbm90IG1lZXQgYW55IG9mIHRoZXNlIHRocmVlIGxpc3RlZAogICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIHJlcXVpcmVtZW50cywgeW91IGNhbiB0YWtlIHN0ZXBzIHRvIHByZXBhcmUgdGhlCiAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBzbyB0aGF0IHlvdSBjYW4gc3RpbGwgdXNlIHRoZSBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXF1aXJlZC1naXQtdGFyLWFuZC1weXRob24tdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBhbmQgUHl0aG9uIFZlcnNpb25zPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXF1aXJlZC1naXQtdGFyLXB5dGhvbi1hbmQtZ2NjLXZlcnNpb25zJz5SZXF1aXJlZCBHaXQsIHRhciwgUHl0aG9uIGFuZCBnY2MgVmVyc2lvbnM8L3VsaW5rPiIKICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIGZvcgogICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC01MTcsNyArNTI3LDcgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFdpdGgKLSAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0aHViLmNvbS9jcm9wcy9jcm9wcy9ibG9iL21hc3Rlci9SRUFETUUubWQnPkNST1BTPC91bGluaz4sCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvcG9reS1jb250YWluZXInPkNST1BTPC91bGluaz4sCiAgICAgICAgICAgICB3aGljaCBsZXZlcmFnZXMKICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LmRvY2tlci5jb20vJz5Eb2NrZXIgQ29udGFpbmVyczwvdWxpbms+LAogICAgICAgICAgICAgeW91IGNhbiBjcmVhdGUgYSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50IHRoYXQKQEAgLTY1NCwxNSArNjY0LDE0NyBAQAogICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgVG9hc3RlciBVc2VyIE1hbnVhbC4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdzZXR0aW5nLXVwLXRvLXVzZS13c2wnPgorICAgICAgICA8dGl0bGU+U2V0dGluZyBVcCB0byBVc2UgV2luZG93cyBTdWJzeXN0ZW0gRm9yIExpbnV4IChXU0x2Mik8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgV2l0aCA8dWxpbmsgdXJsPSdodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy93aW5kb3dzL3dzbC93c2wyLWFib3V0Jz4KKyAgICAgICAgICAgIFdpbmRvd3MgU3Vic3lzdGVtIGZvciBMaW51eCAoV1NMdjIpPC91bGluaz4sIHlvdSBjYW4gY3JlYXRlIGEKKyAgICAgICAgICAgIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdGhhdCBhbGxvd3MgeW91IHRvIGJ1aWxkCisgICAgICAgICAgICBvbiBXaW5kb3dzLiBZb3UgY2FuIHNldCB1cCBhIExpbnV4IGRpc3RyaWJ1dGlvbiBpbnNpZGUgV2luZG93cworICAgICAgICAgICAgaW4gd2hpY2ggeW91IGNhbiBkZXZlbG9wIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb2xsb3cgdGhlc2UgZ2VuZXJhbCBzdGVwcyB0byBwcmVwYXJlIGEgV2luZG93cyBtYWNoaW5lIHVzaW5nIFdTTHYyCisgICAgICAgICAgICBhcyB5b3VyIFlvY3RvIFByb2plY3QgYnVpbGQgaG9zdDoKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NYWtlIHN1cmUgeW91ciBXaW5kb3dzIDEwIG1hY2hpbmUgaXMgY2FwYWJsZSBvZiBydW5uaW5nIFdTTHYyOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgV1NMdjIgaXMgb25seSBhdmFpbGFibGUgZm9yIFdpbmRvd3MgMTAgYnVpbGRzID4gMTg5MTcuIFRvCisgICAgICAgICAgICAgICAgICAgIGNoZWNrIHdoaWNoIGJ1aWxkIHZlcnNpb24geW91IGFyZSBydW5uaW5nLCB5b3UgbWF5IG9wZW4gYQorICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHByb21wdCBvbiBXaW5kb3dzIGFuZCBleGVjdXRlIHRoZSBjb21tYW5kICJ2ZXIiLgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgQzpcVXNlcnNcbXl1c2VyPiB2ZXIKKworICAgIE1pY3Jvc29mdCBXaW5kb3dzIFtWZXJzaW9uIDEwLjAuMTkwNDEuMTUzXQorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIElmIHlvdXIgYnVpbGQgaXMgY2FwYWJsZSBvZiBydW5uaW5nIFdTTHYyIHlvdSBtYXkgY29udGludWUsCisgICAgICAgICAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgc3ViamVjdCBvciBpbnN0cnVjdGlvbnMgb24gaG93CisgICAgICAgICAgICAgICAgICAgIHRvIHVwZ3JhZGUgdG8gV1NMdjIgdmlzaXQgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93c2wvd3NsMi1pbnN0YWxsJz5XaW5kb3dzIDEwIFdTTHYyPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+SW5zdGFsbCB0aGUgTGludXggZGlzdHJpYnV0aW9uIG9mIHlvdXIgY2hvaWNlIGluc2lkZSBXaW5kb3dzIDEwOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IGtub3cgeW91ciB2ZXJzaW9uIG9mIFdpbmRvd3MgMTAgc3VwcG9ydHMgV1NMdjIsCisgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gaW5zdGFsbCB0aGUgZGlzdHJpYnV0aW9uIG9mIHlvdXIgY2hvaWNlIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIE1pY3Jvc29mdCBTdG9yZS4KKyAgICAgICAgICAgICAgICAgICAgT3BlbiB0aGUgTWljcm9zb2Z0IFN0b3JlIGFuZCBzZWFyY2ggZm9yIExpbnV4LiBXaGlsZSB0aGVyZQorICAgICAgICAgICAgICAgICAgICBhcmUgc2V2ZXJhbCBMaW51eCBkaXN0cmlidXRpb25zIGF2YWlsYWJsZSwgdGhlIGFzc3VtcHRpb24KKyAgICAgICAgICAgICAgICAgICAgaXMgdGhhdCB5b3VyIHBpY2sgd2lsbCBiZSBvbmUgb2YgdGhlIGRpc3RyaWJ1dGlvbnMgc3VwcG9ydGVkCisgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSBZb2N0byBQcm9qZWN0IGFzIHN0YXRlZCBvbiB0aGUgaW5zdHJ1Y3Rpb25zIGZvcgorICAgICAgICAgICAgICAgICAgICB1c2luZyBhIG5hdGl2ZSBMaW51eCBob3N0LgorICAgICAgICAgICAgICAgICAgICBBZnRlciBtYWtpbmcgeW91ciBzZWxlY3Rpb24sIHNpbXBseSBjbGljayAiR2V0IiB0byBkb3dubG9hZAorICAgICAgICAgICAgICAgICAgICBhbmQgaW5zdGFsbCB0aGUgZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaGVjayB5b3VyIExpbnV4IGRpc3RyaWJ1dGlvbiBpcyB1c2luZyBXU0x2Mjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBPcGVuIGEgV2luZG93cyBQb3dlclNoZWxsIGFuZCBydW46CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICBDOlxXSU5ET1dTXHN5c3RlbTMyPiB3c2wgLWwgLXYKKyAgICBOQU1FICAgICAgU1RBVEUgICAgICAgICAgIFZFUlNJT04KKyAgICAqVWJ1bnR1ICAgIFJ1bm5pbmcgICAgICAgICAyCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgTm90ZSB0aGUgdmVyc2lvbiBjb2x1bW4gd2hpY2ggc2F5cyB0aGUgV1NMIHZlcnNpb24gYmVpbmcgdXNlZCBieQorICAgICAgICAgICAgICAgICAgICB5b3VyIGRpc3RyaWJ1dGlvbiwgb24gY29tcGF0aWJsZSBzeXN0ZW1zLCB0aGlzIGNhbiBiZSBjaGFuZ2VkIGJhY2sKKyAgICAgICAgICAgICAgICAgICAgYXQgYW55IHBvaW50IGluIHRpbWUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wdGlvbmFsbHkgT3JpZW50IFlvdXJzZWxmIG9uIFdTTDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVuZmFtaWxpYXIgd2l0aCBXU0wsIHlvdSBjYW4gbGVhcm4gbW9yZSBoZXJlIC0KKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93c2wvd3NsMi1hYm91dCc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkxhdW5jaCB5b3VyIFdTTCBEaXN0aWJ1dGlvbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBGcm9tIHRoZSBXaW5kb3dzIHN0YXJ0IG1lbnUgc2ltcGx5IGxhdW5jaCB5b3VyIFdTTCBkaXN0cmlidXRpb24KKyAgICAgICAgICAgICAgICAgICAganVzdCBsaWtlIGFueSBvdGhlciBhcHBsaWNhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+T3B0aW1pemUgeW91ciBXU0x2MiBzdG9yYWdlIG9mdGVuOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIER1ZSB0byB0aGUgd2F5IHN0b3JhZ2UgaXMgaGFuZGxlZCBvbiBXU0x2MiwgdGhlIHN0b3JhZ2UKKyAgICAgICAgICAgICAgICAgICAgc3BhY2UgdXNlZCBieSB0aGUgdW5kZWx5aW5nIExpbnV4IGRpc3RyaWJ1dGlvbiBpcyBub3QKKyAgICAgICAgICAgICAgICAgICAgcmVmbGVjdGVkIGltbWVkYXRlbHksIGFuZCBzaW5jZSBiaXRiYWtlIGhlYXZpbHkgdXNlcworICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLCBhZnRlciBzZXZlcmFsIGJ1aWxkcywgeW91IG1heSBiZSB1bmF3YXJlIHlvdQorICAgICAgICAgICAgICAgICAgICBhcmUgcnVubmluZyBvdXQgb2Ygc3BhY2UuIFdTTHYyIHVzZXMgYSBWSERYIGZpbGUgZm9yCisgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UsIHRoaXMgaXNzdWUgY2FuIGJlIGVhc2lseSBhdm9pZGVkIGJ5IG1hbnVhbGx5CisgICAgICAgICAgICAgICAgICAgIG9wdGltaXppbmcgdGhpcyBmaWxlIG9mdGVuLCB0aGlzIGNhbiBiZSBkb25lIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgd2F5OgorICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkZpbmQgdGhlIGxvY2F0aW9uIG9mIHlvdXIgVkhEWCBmaWxlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlyc3QgeW91IG5lZWQgdG8gZmluZCB0aGUgZGlzdHJvIGFwcCBwYWNrYWdlIGRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBhY2hpZXZlIHRoaXMgb3BlbiBhIFdpbmRvd3MgUG93ZXJzaGVsbCBhcyBBZG1pbmlzdHJhdG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHJ1bjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgQzpcV0lORE9XU1xzeXN0ZW0zMj4gR2V0LUFwcHhQYWNrYWdlIC1OYW1lICIqVWJ1bnR1KiIgfCBTZWxlY3QgUGFja2FnZUZhbWlseU5hbWUKKyAgICBQYWNrYWdlRmFtaWx5TmFtZQorICAgIC0tLS0tLS0tLS0tLS0tLS0tCisgICAgQ2Fub25pY2FsR3JvdXBMaW1pdGVkLlVidW50dW9uV2luZG93c183OWFiY2RlZmdoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgbm93IHJlcGxhY2UgdGhlIDxyZXBsYWNlYWJsZT5QYWNrYWdlRmFtaWx5TmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHlvdXIgPHJlcGxhY2VhYmxlPnVzZXI8L3JlcGxhY2VhYmxlPiBvbiB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCB0byBmaW5kIHlvdXIgVkhEWCBmaWxlOiA8ZmlsZW5hbWU+QzpcVXNlcnNcdXNlclxBcHBEYXRhXExvY2FsXFBhY2thZ2VzXFBhY2thZ2VGYW1pbHlOYW1lXExvY2FsU3RhdGVcPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgbHMgQzpcVXNlcnNcbXl1c2VyXEFwcERhdGFcTG9jYWxcUGFja2FnZXNcQ2Fub25pY2FsR3JvdXBMaW1pdGVkLlVidW50dW9uV2luZG93c183OWFiY2RlZmdoXExvY2FsU3RhdGVcCisgICAgTW9kZSAgICAgICAgICAgICAgICAgTGFzdFdyaXRlVGltZSAgICAgICAgIExlbmd0aCBOYW1lCisgICAgLWEtLS0tICAgICAgICAgMy8xNC8yMDIwICAgOTo1MiBQTSAgICA1NzQxODk3MzE4NCBleHQ0LnZoZHggICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgVkhEWCBmaWxlIHBhdGggaXM6IDxmaWxlbmFtZT5DOlxVc2Vyc1xteXVzZXJcQXBwRGF0YVxMb2NhbFxQYWNrYWdlc1xDYW5vbmljYWxHcm91cExpbWl0ZWQuVWJ1bnR1b25XaW5kb3dzXzc5YWJjZGVmZ2hcTG9jYWxTdGF0ZVxleHQ0LnZoZHg8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5PcHRpbWl6ZSB5b3VyIFZIRFggZmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW4gYSBXaW5kb3dzIFBvd2Vyc2hlbGwgYXMgQWRtaW5pc3RyYXRvciB0byBvcHRpbWl6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgVkhEWCBmaWxlLCBzaHV0dGluZyBkb3duIFdTTCBmaXJzdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgQzpcV0lORE9XU1xzeXN0ZW0zMj4gd3NsIC0tc2h1dGRvd24KKyAgICBDOlxXSU5ET1dTXHN5c3RlbTMyPiBvcHRpbWl6ZS12aGQgLVBhdGggQzpcVXNlcnNcbXl1c2VyXEFwcERhdGFcTG9jYWxcUGFja2FnZXNcQ2Fub25pY2FsR3JvdXBMaW1pdGVkLlVidW50dW9uV2luZG93c183OWFiY2RlZmdoXExvY2FsU3RhdGVcZXh0NC52aGR4IC1Nb2RlIGZ1bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBwcm9ncmVzcyBiYXIgc2hvdWxkIGJlIHNob3duIHdoaWxlIG9wdGltaXppbmcgdGhlIFZIRFggZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc3RvcmFnZSBzaG91bGQgbm93IGJlIHJlZmxlY3RlZCBjb3JyZWN0bHkgb24gdGhlIFdpbmRvd3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHBsb3Jlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgV1NMdjIgZG9lcyBub3QgaGF2ZSBvdXQtb2YtdGhlLWJveAorICAgICAgICAgICAgICBhY2Nlc3MgdG8gZXh0ZXJuYWwgZGV2aWNlcyBzdWNoIGFzIHRob3NlIGNvbm5lY3RlZCB0aHJvdWdoIGEKKyAgICAgICAgICAgICAgVVNCIHBvcnQsIGJ1dCBpdCBhdXRvbWF0aWNhbGx5IG1vdW50cyB5b3VyIDxmaWxlbmFtZT5DOjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgIGRyaXZlIG9uIDxmaWxlbmFtZT4vbW50L2MvPC9maWxlbmFtZT4gKGFuZCBvdGhlcnMpLCB3aGljaAorICAgICAgICAgICAgICB5b3UgY2FuIHVzZSB0byBzaGFyZSBkZXBsb3kgYXJ0aWZhY3RzIHRvIGJlIGxhdGVyIGZsYXNoZWQgb24KKyAgICAgICAgICAgICAgaGFyZHdhcmUgdGhyb3VnaCBXaW5kb3dzLCBidXQgeW91ciBidWlsZCBkaXJlY3Rvcnkgc2hvdWxkIG5vdAorICAgICAgICAgICAgICByZXNpZGUgaW5zaWRlIHRoaXMgbW91bnRwb2ludC4KKyAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgIE9uY2UgeW91IGhhdmUgV1NMdjIgc2V0IHVwLCBldmVyeXRoaW5nIGlzIGluIHBsYWNlIHRvCisgICAgICAgICAgICBkZXZlbG9wIGp1c3QgYXMgaWYgeW91IHdlcmUgcnVubmluZyBvbiBhIG5hdGl2ZSBMaW51eCBtYWNoaW5lLgorICAgICAgICAgICAgSWYgeW91IGFyZSBnb2luZyB0byB1c2UgdGhlIEV4dGVuc2libGUgU0RLIGNvbnRhaW5lciwgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1leHRlbnNpYmxlJz5Vc2luZyB0aGUgRXh0ZW5zaWJsZSBTREs8L3VsaW5rPiIKKyAgICAgICAgICAgIENoYXB0ZXIgaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZQorICAgICAgICAgICAgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspIG1hbnVhbC4KKyAgICAgICAgICAgIElmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBUb2FzdGVyIGNvbnRhaW5lciwgc2VlIHRoZQorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1RPQVNUX1VSTDsjdG9hc3Rlci1tYW51YWwtc2V0dXAtYW5kLXVzZSc+U2V0dGluZyBVcCBhbmQgVXNpbmcgVG9hc3RlcjwvdWxpbms+IgorICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgVG9hc3RlciBVc2VyIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KIDwvc2VjdGlvbj4KIAogPHNlY3Rpb24gaWQ9J2xvY2F0aW5nLXlvY3RvLXByb2plY3Qtc291cmNlLWZpbGVzJz4KICAgICA8dGl0bGU+TG9jYXRpbmcgWW9jdG8gUHJvamVjdCBTb3VyY2UgRmlsZXM8L3RpdGxlPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgc2VjdGlvbiBzaG93cyB5b3UgaG93IHRvIGxvY2F0ZSBhbmQgYWNjZXNzIHRoZQotICAgICAgICBzb3VyY2UgZmlsZXMgdGhhdCBzaGlwIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgIFlvdSBlc3RhYmxpc2ggYW5kIHVzZSB0aGVzZSBsb2NhbCBmaWxlcyB0byB3b3JrIG9uIHByb2plY3RzLgorICAgICAgICBUaGlzIHNlY3Rpb24gc2hvd3MgeW91IGhvdyB0byBsb2NhdGUsIGZldGNoIGFuZCBjb25maWd1cmUgdGhlIHNvdXJjZQorICAgICAgICBmaWxlcyB5b3UnbGwgbmVlZCB0byB3b3JrIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCiAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CiAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTEwMTksMjAgKzExNjEsMTggQEAKICAgICAgICAgICAgLgogICAgICAgICAgICAuCiAgICAgICAgICAgIC4KLSAgICAgICByZW1vdGVzL29yaWdpbi9weXJvCi0gICAgICAgcmVtb3Rlcy9vcmlnaW4vcHlyby1uZXh0Ci0gICAgICAgcmVtb3Rlcy9vcmlnaW4vcm9ja28KLSAgICAgICByZW1vdGVzL29yaWdpbi9yb2Nrby1uZXh0Ci0gICAgICAgcmVtb3Rlcy9vcmlnaW4vc3VtbwotICAgICAgIHJlbW90ZXMvb3JpZ2luL3N1bW8tbmV4dAogICAgICAgIHJlbW90ZXMvb3JpZ2luL3RodWQKICAgICAgICByZW1vdGVzL29yaWdpbi90aHVkLW5leHQKICAgICAgICByZW1vdGVzL29yaWdpbi93YXJyaW9yCisgICAgICAgcmVtb3Rlcy9vcmlnaW4vd2Fycmlvci1uZXh0CisgICAgICAgcmVtb3Rlcy9vcmlnaW4vemV1cworICAgICAgIHJlbW90ZXMvb3JpZ2luL3pldXMtbmV4dAorICAgICAgIC4uLiBhbmQgc28gb24gLi4uCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hlY2tvdXQgdGhlIEJyYW5jaDo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBDaGVja291dCB0aGUgZGV2ZWxvcG1lbnQgYnJhbmNoIGluIHdoaWNoIHlvdSB3YW50IHRvIHdvcmsuCisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaGVjayBvdXQgdGhlIEJyYW5jaDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBDaGVjayBvdXQgdGhlIGRldmVsb3BtZW50IGJyYW5jaCBpbiB3aGljaCB5b3Ugd2FudCB0byB3b3JrLgogICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdG8gYWNjZXNzIHRoZSBmaWxlcyBmb3IgdGhlIFlvY3RvIFByb2plY3QKICAgICAgICAgICAgICAgICAgICAgJkRJU1RSTzsgUmVsZWFzZSAoJkRJU1RST19OQU1FOyksIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KQEAgLTExMTgsNyArMTI1OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hlY2tvdXQgdGhlIEJyYW5jaDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hlY2sgb3V0IHRoZSBCcmFuY2g6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGdpdCBjaGVja291dCB0YWdzLyZESVNUUk9fUkVMX1RBRzsgLWIgbXlfeW9jdG9fJkRJU1RSTzsKICAgICAgU3dpdGNoZWQgdG8gYSBuZXcgYnJhbmNoICdteV95b2N0b18mRElTVFJPOycKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC54bWwKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAwNGZhMWU0Li42Zjg2NDU0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwueG1sCkBAIC0yMiwxOCArMjIsMTcgQEAKIAogICAgICAgICA8YXV0aG9yZ3JvdXA+CiAgICAgICAgICAgICA8YXV0aG9yPgotICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+U2NvdHQ8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UmlmZW5iYXJrPC9zdXJuYW1lPgogICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+U2NvdHR5J3MgRG9jdW1lbnRhdGlvbiBTZXJ2aWNlcywgSU5DPC9vcmduYW1lPgorICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT4mT1JHTkFNRTs8L29yZ25hbWU+CiAgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICA8ZW1haWw+c3JpZmVuYmFya0BnbWFpbC5jb208L2VtYWlsPgorICAgICAgICAgICAgICAgIDxlbWFpbD4mT1JHRU1BSUw7PC9lbWFpbD4KICAgICAgICAgICAgIDwvYXV0aG9yPgogICAgICAgICA8L2F1dGhvcmdyb3VwPgogCiAgICAgICAgIDxyZXZoaXN0b3J5PgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+NiBPY3RvYmVyIDIwMTE8L2RhdGU+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDExPC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CkBAIC01NywxMSArNTYsNiBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjUuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxNDwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS41LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjY8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE0PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjYgUmVsZWFzZS48L3JldnJlbWFyaz4KQEAgLTExOCw5ICsxMTIsMTQgQEAKICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjA8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxOTwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKICAgICA8Y29weXJpZ2h0PgpAQCAtMTQ0LDcgKzE0Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCkBAIC0xNjEsMTggKzE2MCwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICBwYWdlLgogICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCBhIHZlcnNpb24gb2YgdGhpcyBtYW51YWwgZm9yIGEgZGlmZmVyZW50CiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSwgdmlzaXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBzZXQgYnkgdXNpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICJBQ1RJVkUgUkVMRUFTRVMgRE9DVU1FTlRBVElPTiIgb3IgIkRPQ1VNRU5UUyBBUkNISVZFIgogICAgICAgICAgICAgICAgICAgICAgICBwdWxsLWRvd24gbWVudXMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bwotICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCi0gICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAob3IgYW55IG90aGVyIFlvY3RvIFByb2plY3QpIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0bworICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1haWxpbmcgbGlzdCBhdAorICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9jc0BsaXN0cy55b2N0b3Byb2plY3Qub3JnPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgbG9nIGludG8gdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICA8L25vdGU+CiAgICAgPC9sZWdhbG5vdGljZT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29tbW9uLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29tbW9uLnhtbAppbmRleCAyZWE1ZDNmLi5jMWMyZDZkIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbW1vbi54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb21tb24ueG1sCkBAIC04OSw4ICs4OSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+UHJlcGFyZSBZb3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gRmlsZTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyBzZXQgdG8gInFlbXV4ODYiLCB3aGljaCBpcyBmaW5lIGlmIHlvdSBhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIGZvciB0aGUgUUVNVSBlbXVsYXRvciBpbiAzMi1iaXQgbW9kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGlzIHNldCB0byAicWVtdXg4Ni02NCIsIHdoaWNoIGlzIGZpbmUgaWYgeW91IGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcgZm9yIHRoZSBRRU1VIGVtdWxhdG9yIGluIDY0LWJpdCBtb2RlLgogICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IGFyZSBub3QsIHlvdSBuZWVkIHRvIHNldCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4gdmFyaWFibGUgYXBwcm9wcmlhdGVseSBpbgogICAgICAgICAgICAgICAgICAgICAgICAgeW91ciA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbgpAQCAtMTA0LDEwICsxMDQsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUyc+PGZpbGVuYW1lPk1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JSRUNPTU1FTkRTPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gaW5jbHVkZSBrZXJuZWwgbW9kdWxlcy48L3BhcmE+CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoaXMgZXhhbXBsZSB1c2VzIHRoZSBkZWZhdWx0ICJxZW11eDg2IiBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IHZhcmlhYmxlIGJ1dCBuZWVkcyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgYWRkIHRoZSAia2VybmVsLW1vZHVsZXMiOgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4gdGhpcyBleGFtcGxlIHdlIHdpc2ggdG8gYnVpbGQgZm9yIHFlbXV4ODYgc28KKyAgICAgICAgICAgICAgICAgICAgICAgIHdlIG11c3Qgc2V0IHRoZSA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICB0byAicWVtdXg4NiIgYW5kIGFsc28gYWRkIHRoZSAia2VybmVsLW1vZHVsZXMiLiBBcyBkZXNjcmliZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHdlIGRvIHRoaXMgYnkgYXBwZW5kaW5nIHRvIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTUFDSElORSA9ICJxZW11eDg2IgogICAgICBNQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUyArPSAia2VybmVsLW1vZHVsZXMiCiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTMxNCw4ICszMTYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgRmlsZTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyBzZXQgdG8gInFlbXV4ODYiLCB3aGljaCBpcyBmaW5lIGlmIHlvdSBhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIGZvciB0aGUgUUVNVSBlbXVsYXRvciBpbiAzMi1iaXQgbW9kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGlzIHNldCB0byAicWVtdXg4Ni02NCIsIHdoaWNoIGlzIGZpbmUgaWYgeW91IGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcgZm9yIHRoZSBRRU1VIGVtdWxhdG9yIGluIDY0LWJpdCBtb2RlLgogICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaWYgeW91IGFyZSBub3QsIHlvdSBuZWVkIHRvIHNldCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT4gdmFyaWFibGUgYXBwcm9wcmlhdGVseSBpbgogICAgICAgICAgICAgICAgICAgICAgICAgeW91ciA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZApAQCAtMzI5LDEwICszMzEsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUyc+PGZpbGVuYW1lPk1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JSRUNPTU1FTkRTPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gaW5jbHVkZSBrZXJuZWwgbW9kdWxlcy48L3BhcmE+CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoaXMgZXhhbXBsZSB1c2VzIHRoZSBkZWZhdWx0ICJxZW11eDg2IiBmb3IgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IHZhcmlhYmxlIGJ1dCBuZWVkcyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgYWRkIHRoZSAia2VybmVsLW1vZHVsZXMiOgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SW4gdGhpcyBleGFtcGxlIHdlIHdpc2ggdG8gYnVpbGQgZm9yIHFlbXV4ODYgc28KKyAgICAgICAgICAgICAgICAgICAgICAgIHdlIG11c3Qgc2V0IHRoZSA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICB0byAicWVtdXg4NiIgYW5kIGFsc28gYWRkIHRoZSAia2VybmVsLW1vZHVsZXMiLiBBcyBkZXNjcmliZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHdlIGRvIHRoaXMgYnkgYXBwZW5kaW5nIHRvIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTUFDSElORSA9ICJxZW11eDg2IgogICAgICBNQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUyArPSAia2VybmVsLW1vZHVsZXMiCiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTY1NSwyNiArNjU5LDIyIEBACiAgICAgIEtNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKICAgICAgS0JSQU5DSF9lZGdlcm91dGVyID0gInN0YW5kYXJkL2VkZ2Vyb3V0ZXIiCiAgICAgIEtCUkFOQ0hfYmVhZ2xlYm9uZSA9ICJzdGFuZGFyZC9iZWFnbGVib25lIgotICAgICBLQlJBTkNIX21wYzgzMTVlLXJkYiA9ICJzdGFuZGFyZC9mc2wtbXBjODMxNWUtcmRiIgogCiAgICAgIFNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gImQwOWYyY2U1ODRkNjBlY2I3ODkwNTUwYzIyYTgwYzQ4YjgzYzJlMTkiCiAgICAgIFNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYtNjQgPz0gImQwOWYyY2U1ODRkNjBlY2I3ODkwNTUwYzIyYTgwYzQ4YjgzYzJlMTkiCiAgICAgIFNSQ1JFVl9tYWNoaW5lX2VkZ2Vyb3V0ZXIgPz0gImI1YzhjZmRhMmRmZTI5NjQxMGQ1MWUxMzEyODlmYjA5YzY5ZTFlN2QiCiAgICAgIFNSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUgPz0gImI1YzhjZmRhMmRmZTI5NjQxMGQ1MWUxMzEyODlmYjA5YzY5ZTFlN2QiCi0gICAgIFNSQ1JFVl9tYWNoaW5lX21wYzgzMTVlLXJkYiA/PSAiMmQxZDAxMDI0MDg0NmQ3YmZmMTVkMWZjYzBjYjZlYjhhMjJmYzc4YSIKIAogCiAgICAgIENPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCiAgICAgIENPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2LTY0ID0gImdlbmVyaWN4ODYtNjQiCiAgICAgIENPTVBBVElCTEVfTUFDSElORV9lZGdlcm91dGVyID0gImVkZ2Vyb3V0ZXIiCiAgICAgIENPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lID0gImJlYWdsZWJvbmUiCi0gICAgIENPTVBBVElCTEVfTUFDSElORV9tcGM4MzE1ZS1yZGIgPSAibXBjODMxNWUtcmRiIgogCiAgICAgIExJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4NiA9ICI0LjEyLjciCiAgICAgIExJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4Ni02NCA9ICI0LjEyLjciCiAgICAgIExJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjEyLjEwIgogICAgICBMSU5VWF9WRVJTSU9OX2JlYWdsZWJvbmUgPSAiNC4xMi4xMCIKLSAgICAgTElOVVhfVkVSU0lPTl9tcGM4MzE1ZS1yZGIgPSAiNC4xMi4xMCIKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgVGhpcyBhcHBlbmQgZmlsZSBjb250YWlucyBzdGF0ZW1lbnRzIHVzZWQgdG8gc3VwcG9ydAogICAgICAgICAgICAgICAgIHNldmVyYWwgQlNQcyB0aGF0IHNoaXAgd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KQEAgLTk0OCwxMiArOTQ4LDE0IEBACiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBLQlVJTERfREVGQ09ORklHXzxyZXBsYWNlYWJsZT5LTUFDSElORTwvcmVwbGFjZWFibGU+ID89IDxyZXBsYWNlYWJsZT5kZWZjb25maWdfZmlsZTwvcmVwbGFjZWFibGU+CiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IGFwcGVuZHMgdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPktCVUlMRF9ERUZDT05GSUc8L2ZpbGVuYW1lPiB2YXJpYWJsZSB3aXRoCi0gICAgICAgICAgICAgICAgImNvbW1vbi1wYyIgYW5kIHByb3ZpZGVzIHRoZSBwYXRoIHRvIHRoZSAiaW4tdHJlZSIKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZToKKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBhc3NpZ25zIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LQlVJTERfREVGQ09ORklHPC9maWxlbmFtZT4gdmFyaWFibGUgYmFzZWQgb24KKyAgICAgICAgICAgICAgICAicmFzcGJlcnJ5cGkyIiBhbmQgcHJvdmlkZXMgdGhlIHBhdGggdG8gdGhlICJpbi10cmVlIgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kZWZjb25maWc8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgICAgICAgICAgdG8gYmUgdXNlZCBmb3IgYSBSYXNwYmVycnkgUGkgMiwKKyAgICAgICAgICAgICAgICB3aGljaCBpcyBiYXNlZCBvbiB0aGUgQnJvYWRjb20gMjcwOC8yNzA5IGNoaXBzZXQ6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBLQlVJTERfREVGQ09ORklHX2NvbW1vbi1wYyA/PSAiL2hvbWUvc2NvdHRyaWYvY29uZmlnZmlsZXMvbXlfZGVmY29uZmlnX2ZpbGUiCisgICAgIEtCVUlMRF9ERUZDT05GSUdfcmFzcGJlcnJ5cGkyID89ICJiY20yNzA5X2RlZmNvbmZpZyIKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICA8L3BhcmE+CiAKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29uY2VwdHMtYXBweC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbmNlcHRzLWFwcHgueG1sCmluZGV4IDZkNjc1YTYuLjYyYzY4NTIgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29uY2VwdHMtYXBweC54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb25jZXB0cy1hcHB4LnhtbApAQCAtNTQzLDcgKzU0Myw2IEBACiAgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9mZWF0dXJlcy9rZ2RiL2hhcmR3YXJlLmNmZwogICAgICB5b2N0by1rZXJuZWwtY2FjaGUva3R5cGVzL2Jhc2UvaGFyZHdhcmUuY2ZnCiAgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9ic3AvbXRpLW1hbHRhMzIvaGFyZHdhcmUuY2ZnCi0gICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9ic3AvZnNsLW1wYzgzMTVlLXJkYi9oYXJkd2FyZS5jZmcKICAgICAgeW9jdG8ta2VybmVsLWNhY2hlL2JzcC9xZW11LXBwYzMyL2hhcmR3YXJlLmNmZwogICAgICB5b2N0by1rZXJuZWwtY2FjaGUvYnNwL3FlbXVhcm1hOS9oYXJkd2FyZS5jZmcKICAgICAgeW9jdG8ta2VybmVsLWNhY2hlL2JzcC9tdGktbWFsdGE2NC9oYXJkd2FyZS5jZmcKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi54bWwKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA0YzU4ODFiLi45OThmZTQxCi0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYueG1sCkBAIC0yMiwxMSArMjIsMTAgQEAKIAogICAgICAgICA8YXV0aG9yZ3JvdXA+CiAgICAgICAgICAgICA8YXV0aG9yPgotICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+U2NvdHQ8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UmlmZW5iYXJrPC9zdXJuYW1lPgogICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+U2NvdHR5J3MgRG9jdW1lbnRhdGlvbiBTZXJ2aWNlcywgSU5DPC9vcmduYW1lPgorICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT4mT1JHTkFNRTs8L29yZ25hbWU+CiAgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICA8ZW1haWw+c3JpZmVuYmFya0BnbWFpbC5jb208L2VtYWlsPgorICAgICAgICAgICAgICAgIDxlbWFpbD4mT1JHRU1BSUw7PC9lbWFpbD4KICAgICAgICAgICAgIDwvYXV0aG9yPgogICAgICAgICA8L2F1dGhvcmdyb3VwPgogCkBAIC0zNCw3ICszMyw3IEBACiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjQ8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDEzPC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS40IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS41PC9yZXZudW1iZXI+CkBAIC00MiwxMSArNDEsNiBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjUuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxNDwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS41LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjY8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE0PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjYgUmVsZWFzZS48L3JldnJlbWFyaz4KQEAgLTEwMyw5ICs5NywxNCBAQAogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMDwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE5PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjAgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjE8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgIDwvcmV2aGlzdG9yeT4KIAogICAgIDxjb3B5cmlnaHQ+CkBAIC0xMjcsNyArMTI2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gYmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIG1hbnVhbAogICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCBnbyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgogICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKICAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KQEAgLTE0NCwxOCArMTQzLDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCiAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCiAgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcwotICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAotICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIChvciBhbnkgb3RoZXIgWW9jdG8gUHJvamVjdCkgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFpbGluZyBsaXN0IGF0CisgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb2NzQGxpc3RzLnlvY3RvcHJvamVjdC5vcmc8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICBsb2cgaW50byB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KICAgICA8L2xlZ2Fsbm90aWNlPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL21lZ2EtbWFudWFsLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC54bWwKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBjZDlhM2RhLi5lNzMwZjcyCi0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL21lZ2EtbWFudWFsLnhtbApAQCAtMzMsMTEgKzMzLDEwIEBACiAKICAgICAgICAgPGF1dGhvcmdyb3VwPgogICAgICAgICAgICAgPGF1dGhvcj4KLSAgICAgICAgICAgICAgICA8Zmlyc3RuYW1lPlNjb3R0PC9maXJzdG5hbWU+IDxzdXJuYW1lPlJpZmVuYmFyazwvc3VybmFtZT4KICAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPlNjb3R0eSdzIERvY3VtZW50YXRpb24gU2VydmljZXMsIElOQzwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+Jk9SR05BTUU7PC9vcmduYW1lPgogICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgPGVtYWlsPnNyaWZlbmJhcmtAZ21haWwuY29tPC9lbWFpbD4KKyAgICAgICAgICAgICAgICA8ZW1haWw+Jk9SR0VNQUlMOzwvZW1haWw+CiAgICAgICAgICAgICA8L2F1dGhvcj4KICAgICAgICAgPC9hdXRob3Jncm91cD4KIApAQCAtNDUsNyArNDQsNyBAQAogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS44PC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxNTwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS44IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5UaGUgaW5pdGlhbCBkb2N1bWVudCByZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuOCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMDwvcmV2bnVtYmVyPgpAQCAtODksOSArODgsMTQgQEAKICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjA8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxOTwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgIDwvcmV2aGlzdG9yeT4KIAogICAgIDxjb3B5cmlnaHQ+CkBAIC0xMTMsNyArMTE3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gYmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIG1hbnVhbAogICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCBnbyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgogICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKICAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KQEAgLTEzMCwxOCArMTM0LDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCiAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCiAgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcwotICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAotICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIChvciBhbnkgb3RoZXIgWW9jdG8gUHJvamVjdCkgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFpbGluZyBsaXN0IGF0CisgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb2NzQGxpc3RzLnlvY3RvcHJvamVjdC5vcmc8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICBsb2cgaW50byB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KIApkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQueG1sCmluZGV4IDJmMWJkMTYuLjM2ZWJmOGEgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWRldmVsb3BtZW50LWVudmlyb25tZW50LnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwKQEAgLTg3LDcgKzg3LDcgQEAKICAgICAgICAgYXMgaXRzIG9wZXJhdGluZyBzeXN0ZW0gYXMgeW91ciBkZXZlbG9wbWVudCBob3N0LgogICAgICAgICBXaGVuIHlvdSBoYXZlIGEgTWFjIG9yIFdpbmRvd3MtYmFzZWQgc3lzdGVtLCB5b3UgY2FuIHNldCBpdCB1cAogICAgICAgICBhcyB0aGUgZGV2ZWxvcG1lbnQgaG9zdCBieSB1c2luZwotICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvY3JvcHMvYWJvdXQvJz5DUk9QUzwvdWxpbms+LAorICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvcG9reS1jb250YWluZXInPkNST1BTPC91bGluaz4sCiAgICAgICAgIHdoaWNoIGxldmVyYWdlcwogICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5kb2NrZXIuY29tLyc+RG9ja2VyIENvbnRhaW5lcnM8L3VsaW5rPi4KICAgICAgICAgT25jZSB5b3UgdGFrZSB0aGUgc3RlcHMgdG8gc2V0IHVwIGEgQ1JPUFMgbWFjaGluZSwgeW91IGVmZmVjdGl2ZWx5CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC15cC1pbnRyby54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC15cC1pbnRyby54bWwKaW5kZXggZGJmNjJjYy4uMWI2MGEzMCAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwteXAtaW50cm8ueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLXlwLWludHJvLnhtbApAQCAtMjI1LDkgKzIyNSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gdGhhdCBoZWxwcyB5b3UgdHJhbnNpdGlvbiBmcm9tCiAgICAgICAgICAgICAgICAgICAgICAgICB0cnlpbmcgb3V0IHRoZSBZb2N0byBQcm9qZWN0IHRvIHVzaW5nIGl0IGZvciB5b3VyCiAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2NzL3doYXQtaS13aXNoLWlkLWtub3duLyc+V2hhdCBJIHdpc2ggSSdkIEtub3duPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOy93aGF0LWktd2lzaC1pZC1rbm93bi8nPldoYXQgSSB3aXNoIEknZCBLbm93bjwvdWxpbms+IgogICAgICAgICAgICAgICAgICAgICAgICAgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2NzL3RyYW5zaXRpb25pbmctdG8tYS1jdXN0b20tZW52aXJvbm1lbnQvJz5UcmFuc2l0aW9uaW5nIHRvIGEgQ3VzdG9tIEVudmlyb25tZW50IGZvciBTeXN0ZW1zIERldmVsb3BtZW50PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOy90cmFuc2l0aW9uaW5nLXRvLWEtY3VzdG9tLWVudmlyb25tZW50Lyc+VHJhbnNpdGlvbmluZyB0byBhIEN1c3RvbSBFbnZpcm9ubWVudCBmb3IgU3lzdGVtcyBEZXZlbG9wbWVudDwvdWxpbms+IgogICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRzIG9uIHRoZSBZb2N0byBQcm9qZWN0IHdlYnNpdGUuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtNDM3LDcgKzQzNyw3IEBACiAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhIGlkPSdncy1jcm9wcy1vdmVydmlldyc+CiAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q1JPUFM6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9jcm9wcy9hYm91dC8nPkNST1BTPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0aHViLmNvbS9jcm9wcy9wb2t5LWNvbnRhaW5lci8nPkNST1BTPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGFuIG9wZW4gc291cmNlLCBjcm9zcy1wbGF0Zm9ybSBkZXZlbG9wbWVudCBmcmFtZXdvcmsKICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgbGV2ZXJhZ2VzCiAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5kb2NrZXIuY29tLyc+RG9ja2VyIENvbnRhaW5lcnM8L3VsaW5rPi4KQEAgLTg4Myw3ICs4ODMsNyBAQAogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNST3NzIFBsYXRmb3JtUyAoQ1JPUFMpOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIFR5cGljYWxseSwgeW91IHVzZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvY3JvcHMvYWJvdXQvJz5DUk9QUzwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvcG9reS1jb250YWluZXIvJz5DUk9QUzwvdWxpbms+LAogICAgICAgICAgICAgICAgICAgICB3aGljaCBsZXZlcmFnZXMKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8nPkRvY2tlciBDb250YWluZXJzPC91bGluaz4sCiAgICAgICAgICAgICAgICAgICAgIHRvIHNldCB1cCBhIEJ1aWxkIEhvc3QgdGhhdCBpcyBub3QgcnVubmluZyBMaW51eCAoZS5nLgpAQCAtOTA4LDYgKzkwOCwyNCBAQAogICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+V2luZG93cyBTdWJzeXN0ZW0gRm9yIExpbnV4IChXU0x2Mik6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgWW91IG1heSB1c2UgV2luZG93cyBTdWJzeXN0ZW0gRm9yIExpbnV4IHYyIHRvIHNldCB1cCBhIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgIGhvc3QgdXNpbmcgV2luZG93cyAxMC4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBXU0x2MSwgaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlIGJ1dCBub3Qgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgbm9yIHZhbGlkYXRlZAorICAgICAgICAgICAgICAgICAgICAgIHdpdGggV1NMdjIsIGlmIHlvdSBzdGlsbCBkZWNpZGUgdG8gdXNlIFdTTCBwbGVhc2UgdXBncmFkZQorICAgICAgICAgICAgICAgICAgICAgIHRvIFdTTHYyLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSBXaW5kb3dzIFN1YnN5c3RlbSBGb3IgTGludXggYWxsb3dzIFdpbmRvd3MgMTAgdG8gcnVuIGEgcmVhbAorICAgICAgICAgICAgICAgICAgICBMaW51eCBrZXJuZWwgaW5zaWRlIG9mIGEgbGlnaHR3ZWlnaHQgdXRpbGl0eSB2aXJ0dWFsCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgKFZNKSB1c2luZyB2aXJ0dWFsaXphdGlvbiB0ZWNobm9sb2d5LjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+Rm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzZXQgdXAgYSBCdWlsZCBIb3N0IHdpdGgKKyAgICAgICAgICAgICAgICAgICAgV1NMdjIsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NldHRpbmctdXAtdG8tdXNlLXdzbCc+U2V0dGluZyBVcCB0byBVc2UgV2luZG93cyBTdWJzeXN0ZW0gRm9yIExpbnV4PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Ub2FzdGVyOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIFJlZ2FyZGxlc3Mgb2Ygd2hhdCB5b3VyIEJ1aWxkIEhvc3QgaXMgcnVubmluZywgeW91IGNhbgogICAgICAgICAgICAgICAgICAgICB1c2UgVG9hc3RlciB0byBkZXZlbG9wIHNvZnR3YXJlIHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwueG1sCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggYzc3MTZlNC4uMjEwZDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwueG1sCkBAIC0yMiwxMSArMjIsMTAgQEAKIAogICAgICAgICA8YXV0aG9yZ3JvdXA+CiAgICAgICAgICAgICA8YXV0aG9yPgotICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+U2NvdHQ8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UmlmZW5iYXJrPC9zdXJuYW1lPgogICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+U2NvdHR5J3MgRG9jdW1lbnRhdGlvbiBTZXJ2aWNlcywgSU5DPC9vcmduYW1lPgorICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT4mT1JHTkFNRTs8L29yZ25hbWU+CiAgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICA8ZW1haWw+c3JpZmVuYmFya0BnbWFpbC5jb208L2VtYWlsPgorICAgICAgICAgICAgICAgIDxlbWFpbD4mT1JHRU1BSUw7PC9lbWFpbD4KICAgICAgICAgICAgIDwvYXV0aG9yPgogICAgICAgICA8L2F1dGhvcmdyb3VwPgogCkBAIC0zOSw3ICszOCw3IEBACiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjY8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5Ob3ZlbWJlciAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjcgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi42IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi43PC9yZXZudW1iZXI+CkBAIC00OCw5ICs0NywxNCBAQAogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMDwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE5PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjAgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjE8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgIDwvcmV2aGlzdG9yeT4KIAogICAgIDxjb3B5cmlnaHQ+CkBAIC03NCw3ICs3OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCkBAIC05MSwxOCArOTUsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS4KICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgYSB2ZXJzaW9uIG9mIHRoaXMgbWFudWFsIGZvciBhIGRpZmZlcmVudAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHZpc2l0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKICAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KLSAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGFueSBvdGhlciBZb2N0byBQcm9qZWN0KSBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYWlsaW5nIGxpc3QgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgIGxvZyBpbnRvIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPC9ub3RlPgogICAgIDwvbGVnYWxub3RpY2U+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQgYi9wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA3YWY0N2RmLi5hNTQ3OTM5Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9wb2t5LmVudAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQKQEAgLTEsMTkgKzEsMjEgQEAKLTwhRU5USVRZIERJU1RSTyAiMy4wIj4KLTwhRU5USVRZIERJU1RST19DT01QUkVTU0VEICIzMCI+Ci08IUVOVElUWSBESVNUUk9fTkFNRV9OT19DQVAgInpldXMiPgotPCFFTlRJVFkgRElTVFJPX05BTUUgIlpldXMiPgotPCFFTlRJVFkgRElTVFJPX05BTUVfTk9fQ0FQX01JTlVTX09ORSAid2FycmlvciI+Ci08IUVOVElUWSBESVNUUk9fTkFNRV9NSU5VU19PTkUgIldhcnJpb3IiPgotPCFFTlRJVFkgWU9DVE9fRE9DX1ZFUlNJT04gIjMuMCI+Ci08IUVOVElUWSBZT0NUT19ET0NfVkVSU0lPTl9NSU5VU19PTkUgIjIuNyI+Ci08IUVOVElUWSBESVNUUk9fUkVMX1RBRyAieW9jdG8tMy4wIj4KLTwhRU5USVRZIE1FVEFJTlRFTFZFUlNJT04gIjkuMCI+Ci08IUVOVElUWSBSRUxfTU9OVEhfWUVBUiAiT2N0b2JlciAyMDE5Ij4KKzwhRU5USVRZIERJU1RSTyAiMy4xIj4KKzwhRU5USVRZIERJU1RST19DT01QUkVTU0VEICIzMSI+Cis8IUVOVElUWSBESVNUUk9fTkFNRV9OT19DQVAgImR1bmZlbGwiPgorPCFFTlRJVFkgRElTVFJPX05BTUUgIkR1bmZlbGwiPgorPCFFTlRJVFkgRElTVFJPX05BTUVfTk9fQ0FQX01JTlVTX09ORSAiemV1cyI+Cis8IUVOVElUWSBESVNUUk9fTkFNRV9NSU5VU19PTkUgIlpldXMiPgorPCFFTlRJVFkgWU9DVE9fRE9DX1ZFUlNJT04gIjMuMSI+Cis8IUVOVElUWSBZT0NUT19ET0NfVkVSU0lPTl9NSU5VU19PTkUgIjMuMC4yIj4KKzwhRU5USVRZIERJU1RST19SRUxfVEFHICJ5b2N0by0zLjEiPgorPCFFTlRJVFkgTUVUQUlOVEVMVkVSU0lPTiAiMTIuMCI+Cis8IUVOVElUWSBSRUxfTU9OVEhfWUVBUiAiQXByaWwgMjAyMCI+CiA8IUVOVElUWSBNRVRBX0lOVEVMX1JFTF9UQUcgIiZNRVRBSU5URUxWRVJTSU9OOy0mRElTVFJPX05BTUVfTk9fQ0FQOy0mWU9DVE9fRE9DX1ZFUlNJT047Ij4KLTwhRU5USVRZIFBPS1lWRVJTSU9OICIyMi4wLjAiPgotPCFFTlRJVFkgUE9LWVZFUlNJT05fQ09NUFJFU1NFRCAiMjIwMCI+Cis8IUVOVElUWSBQT0tZVkVSU0lPTiAiMjMuMC4wIj4KKzwhRU5USVRZIFBPS1lWRVJTSU9OX0NPTVBSRVNTRUQgIjIzMDAiPgogPCFFTlRJVFkgWU9DVE9fUE9LWSAicG9reS0mRElTVFJPX05BTUVfTk9fQ0FQOy0mUE9LWVZFUlNJT047Ij4KLTwhRU5USVRZIENPUFlSSUdIVF9ZRUFSICIyMDEwLTIwMTkiPgorPCFFTlRJVFkgQ09QWVJJR0hUX1lFQVIgIjIwMTAtMjAyMCI+Cis8IUVOVElUWSBPUkdOQU1FICJUaGUgWW9jdG8gUHJvamVjdCI+Cis8IUVOVElUWSBPUkdFTUFJTCAiZG9jc0BsaXN0cy55b2N0b3Byb2plY3Qub3JnIj4KIDwhRU5USVRZIFlPQ1RPX0RMX1VSTCAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnIj4KIDwhRU5USVRZIFlPQ1RPX0hPTUVfVVJMICJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmciPgogPCFFTlRJVFkgWU9DVE9fTElTVFNfVVJMICJodHRwOi8vbGlzdHMueW9jdG9wcm9qZWN0Lm9yZyI+CkBAIC01OCwyMiArNjAsMzAgQEAKIDwhRU5USVRZIE9FX0lOSVRfUEFUSCAiJllPQ1RPX1BPS1k7L29lLWluaXQtYnVpbGQtZW52Ij4KIDwhRU5USVRZIE9FX0lOSVRfRklMRSAib2UtaW5pdC1idWlsZC1lbnYiPgogPCFFTlRJVFkgVUJVTlRVX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMICJnYXdrIHdnZXQgZ2l0LWNvcmUgZGlmZnN0YXQgdW56aXAgdGV4aW5mbyBnY2MtbXVsdGlsaWIgXAotICAgICBidWlsZC1lc3NlbnRpYWwgY2hycGF0aCBzb2NhdCBjcGlvIHB5dGhvbiBweXRob24zIHB5dGhvbjMtcGlwIHB5dGhvbjMtcGV4cGVjdCBcCisgICAgIGJ1aWxkLWVzc2VudGlhbCBjaHJwYXRoIHNvY2F0IGNwaW8gcHl0aG9uMyBweXRob24zLXBpcCBweXRob24zLXBleHBlY3QgXAogICAgICB4ei11dGlscyBkZWJpYW51dGlscyBpcHV0aWxzLXBpbmcgcHl0aG9uMy1naXQgcHl0aG9uMy1qaW5qYTIgbGliZWdsMS1tZXNhIGxpYnNkbDEuMi1kZXYgXAogICAgICBweWxpbnQzIHh0ZXJtIj4KIDwhRU5USVRZIEZFRE9SQV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTCAiZ2F3ayBtYWtlIHdnZXQgdGFyIGJ6aXAyIGd6aXAgcHl0aG9uMyB1bnppcCBwZXJsIHBhdGNoIFwKICAgICAgZGlmZnV0aWxzIGRpZmZzdGF0IGdpdCBjcHAgZ2NjIGdjYy1jKysgZ2xpYmMtZGV2ZWwgdGV4aW5mbyBjaHJwYXRoIFwKICAgICAgY2NhY2hlIHBlcmwtRGF0YS1EdW1wZXIgcGVybC1UZXh0LVBhcnNlV29yZHMgcGVybC1UaHJlYWQtUXVldWUgcGVybC1iaWdudW0gc29jYXQgXAogICAgICBweXRob24zLXBleHBlY3QgZmluZHV0aWxzIHdoaWNoIGZpbGUgY3BpbyBweXRob24gcHl0aG9uMy1waXAgeHogcHl0aG9uMy1HaXRQeXRob24gXAotICAgICBweXRob24zLWppbmphMiBTREwtZGV2ZWwgeHRlcm0iPgorICAgICBweXRob24zLWppbmphMiBTREwtZGV2ZWwgeHRlcm0gcnBjZ2VuIj4KIDwhRU5USVRZIE9QRU5TVVNFX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMICJweXRob24gZ2NjIGdjYy1jKysgZ2l0IGNocnBhdGggbWFrZSB3Z2V0IHB5dGhvbi14bWwgXAogICAgICBkaWZmc3RhdCBtYWtlaW5mbyBweXRob24tY3Vyc2VzIHBhdGNoIHNvY2F0IHB5dGhvbjMgcHl0aG9uMy1jdXJzZXMgdGFyIHB5dGhvbjMtcGlwIFwKLSAgICAgcHl0aG9uMy1wZXhwZWN0IHh6IHdoaWNoIHB5dGhvbjMtSmluamEyIE1lc2EtbGliRUdMMQotICAgICAkIHN1ZG8gcGlwMyBpbnN0YWxsIEdpdFB5dGhvbiBsaWJTREwtZGV2ZWwgeHRlcm0iPgotPCFFTlRJVFkgQ0VOVE9TX0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMICIteSBlcGVsLXJlbGVhc2UKKyAgICAgcHl0aG9uMy1wZXhwZWN0IHh6IHdoaWNoIHB5dGhvbjMtSmluamEyIE1lc2EtbGliRUdMMSBsaWJTREwtZGV2ZWwgeHRlcm0gcnBjZ2VuCisgICAgICQgc3VkbyBwaXAzIGluc3RhbGwgR2l0UHl0aG9uIj4KKzwhRU5USVRZIENFTlRPUzdfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUwgIi15IGVwZWwtcmVsZWFzZQogICAgICAkIHN1ZG8geXVtIG1ha2VjYWNoZQotICAgICAkIHN1ZG8geXVtIGluc3RhbGwgZ2F3ayBtYWtlIHdnZXQgdGFyIGJ6aXAyIGd6aXAgcHl0aG9uIHVuemlwIHBlcmwgcGF0Y2ggXAorICAgICAkIHN1ZG8geXVtIGluc3RhbGwgZ2F3ayBtYWtlIHdnZXQgdGFyIGJ6aXAyIGd6aXAgcHl0aG9uMyB1bnppcCBwZXJsIHBhdGNoIFwKICAgICAgZGlmZnV0aWxzIGRpZmZzdGF0IGdpdCBjcHAgZ2NjIGdjYy1jKysgZ2xpYmMtZGV2ZWwgdGV4aW5mbyBjaHJwYXRoIHNvY2F0IFwKLSAgICAgcGVybC1EYXRhLUR1bXBlciBwZXJsLVRleHQtUGFyc2VXb3JkcyBwZXJsLVRocmVhZC1RdWV1ZSBweXRob24zNC1waXAgeHogXAorICAgICBwZXJsLURhdGEtRHVtcGVyIHBlcmwtVGV4dC1QYXJzZVdvcmRzIHBlcmwtVGhyZWFkLVF1ZXVlIHB5dGhvbjM2LXBpcCB4eiBcCiAgICAgIHdoaWNoIFNETC1kZXZlbCB4dGVybQogICAgICAkIHN1ZG8gcGlwMyBpbnN0YWxsIEdpdFB5dGhvbiBqaW5qYTIiPgorPCFFTlRJVFkgQ0VOVE9TOF9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTCAiLXkgZXBlbC1yZWxlYXNlCisgICAgICQgc3VkbyBkbmYgY29uZmlnLW1hbmFnZXIgLS1zZXQtZW5hYmxlZCBQb3dlclRvb2xzCisgICAgICQgc3VkbyBkbmYgbWFrZWNhY2hlCisgICAgICQgc3VkbyBkbmYgaW5zdGFsbCBnYXdrIG1ha2Ugd2dldCB0YXIgYnppcDIgZ3ppcCBweXRob24zIHVuemlwIHBlcmwgcGF0Y2ggXAorICAgICBkaWZmdXRpbHMgZGlmZnN0YXQgZ2l0IGNwcCBnY2MgZ2NjLWMrKyBnbGliYy1kZXZlbCB0ZXhpbmZvIGNocnBhdGggY2NhY2hlIFwKKyAgICAgc29jYXQgcGVybC1EYXRhLUR1bXBlciBwZXJsLVRleHQtUGFyc2VXb3JkcyBwZXJsLVRocmVhZC1RdWV1ZSBweXRob24zLXBpcCBcCisgICAgIHB5dGhvbjMtR2l0UHl0aG9uIHB5dGhvbjMtamluamEyIHB5dGhvbjMtcGV4cGVjdCB4eiB3aGljaCBTREwtZGV2ZWwgeHRlcm0gXAorICAgICBycGNnZW4iPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLXVzYWdlLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC11c2FnZS54bWwKaW5kZXggNTk5OWIyOS4uOWE0MjczYSAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLXVzYWdlLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwtdXNhZ2UueG1sCkBAIC0yMTgyLDcgKzIxODIsNyBAQAogICAgICAgICAgICAgICBtZXRhLXRvb2xjaGFpbgogICAgICAgICAgICAgICBtZXRhLWlkZS1zdXBwb3J0CiAKLSAgICAgWW91IGNhbiBhbHNvIHJ1biBnZW5lcmF0ZWQgcWVtdSBpbWFnZXMgd2l0aCBhIGNvbW1hbmQgbGlrZSAncnVucWVtdSBxZW11eDg2JworICAgICBZb3UgY2FuIGFsc28gcnVuIGdlbmVyYXRlZCBxZW11IGltYWdlcyB3aXRoIGEgY29tbWFuZCBsaWtlICdydW5xZW11IHFlbXV4ODYtNjQnCiAKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIE9uY2UgeW91J3ZlIGRvbmUgdGhhdCwgeW91IGNhbiBjZCB0byB3aGF0ZXZlciBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwueG1sCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggYzFmNDYxZi4uZmExZmE4YQotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC54bWwKQEAgLTIyLDExICsyMiwxMCBAQAogCiAgICAgICAgIDxhdXRob3Jncm91cD4KICAgICAgICAgICAgIDxhdXRob3I+Ci0gICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5TY290dDwvZmlyc3RuYW1lPiA8c3VybmFtZT5SaWZlbmJhcms8L3N1cm5hbWU+CiAgICAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5TY290dHkncyBEb2N1bWVudGF0aW9uIFNlcnZpY2VzLCBJTkM8L29yZ25hbWU+CisgICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPiZPUkdOQU1FOzwvb3JnbmFtZT4KICAgICAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgIDxlbWFpbD5zcmlmZW5iYXJrQGdtYWlsLmNvbTwvZW1haWw+CisgICAgICAgICAgICAgICAgPGVtYWlsPiZPUkdFTUFJTDs8L2VtYWlsPgogICAgICAgICAgICAgPC9hdXRob3I+CiAgICAgICAgIDwvYXV0aG9yZ3JvdXA+CiAKQEAgLTM0LDcgKzMzLDcgQEAKICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuNDwvcmV2bnVtYmVyPgogICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTM8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjU8L3Jldm51bWJlcj4KQEAgLTQyLDExICs0MSw2IEBACiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuNS4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+SmFudWFyeSAyMDE0PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjUuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgotICAgICAgICAgICAgPC9yZXZpc2lvbj4KLSAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuNjwvcmV2bnVtYmVyPgogICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTQ8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNiBSZWxlYXNlLjwvcmV2cmVtYXJrPgpAQCAtMTAzLDkgKzk3LDE0IEBACiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4wPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTk8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgPC9yZXZoaXN0b3J5PgogCiAgICAgPGNvcHlyaWdodD4KQEAgLTEyOSw3ICsxMjgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIGdvIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgZnJvbSB0aGF0IHNpdGUuCiAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbHMgZnJvbSB0aGUgc2l0ZSBhcmUgbW9yZSB1cC10by1kYXRlIHRoYW4gbWFudWFscwogICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIGZyb20gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZWQgVEFSIGZpbGVzLgpAQCAtMTQ2LDE4ICsxNDUsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS4KICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgYSB2ZXJzaW9uIG9mIHRoaXMgbWFudWFsIGZvciBhIGRpZmZlcmVudAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHZpc2l0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKICAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KLSAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGFueSBvdGhlciBZb2N0byBQcm9qZWN0KSBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYWlsaW5nIGxpc3QgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgIGxvZyBpbnRvIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPC9ub3RlPgogICAgIDwvbGVnYWxub3RpY2U+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9mYXEueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmFxLnhtbAppbmRleCA0OWZmODYyLi5kOTRjYjMyIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9mYXEueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZhcS54bWwKQEAgLTMzLDcgKzMzLDcgQEAKICAgICAgICAgICAgIDxwYXJhIGlkPSdmYXEtbm90LW1lZXRpbmctcmVxdWlyZW1lbnRzJz4KICAgICAgICAgICAgICAgICBNeSBkZXZlbG9wbWVudCBzeXN0ZW0gZG9lcyBub3QgbWVldCB0aGUKICAgICAgICAgICAgICAgICByZXF1aXJlZCBHaXQsIHRhciwgYW5kIFB5dGhvbiB2ZXJzaW9ucy4KLSAgICAgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCBJIGRvIG5vdCBoYXZlIFB5dGhvbiAzLjQuMCBvciBncmVhdGVyLgorICAgICAgICAgICAgICAgIEluIHBhcnRpY3VsYXIsIEkgZG8gbm90IGhhdmUgUHl0aG9uIDMuNS4wIG9yIGdyZWF0ZXIuCiAgICAgICAgICAgICAgICAgQ2FuIEkgc3RpbGwgdXNlIHRoZSBZb2N0byBQcm9qZWN0PwogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3F1ZXN0aW9uPgpAQCAtNDMsNyArNDMsNyBAQAogICAgICAgICAgICAgICAgIHN5c3RlbSBhIGNvdXBsZSBkaWZmZXJlbnQgd2F5cyAoaS5lLiBidWlsZGluZyBhIHRhcmJhbGwgb3IKICAgICAgICAgICAgICAgICBkb3dubG9hZGluZyBhIHRhcmJhbGwpLgogICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVxdWlyZWQtZ2l0LXRhci1hbmQtcHl0aG9uLXZlcnNpb25zJz5SZXF1aXJlZCBHaXQsIHRhciwgYW5kIFB5dGhvbiBWZXJzaW9uczwvbGluaz4iCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlcXVpcmVkLWdpdC10YXItcHl0aG9uLWFuZC1nY2MtdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBQeXRob24gYW5kIGdjYyBWZXJzaW9uczwvbGluaz4iCiAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3Igc3RlcHMgb24gaG93IHRvIHVwZGF0ZSB5b3VyIGJ1aWxkIHRvb2xzLgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2Fuc3dlcj4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL21pZ3JhdGlvbi54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9taWdyYXRpb24ueG1sCmluZGV4IDhkNTBhYjkuLjk0MjJiNWEgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL21pZ3JhdGlvbi54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvbWlncmF0aW9uLnhtbApAQCAtNjgwLDcgKzY4MCw3IEBACiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIHJlcXVpcmVtZW50LCBzZWUgdGhlCi0gICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVxdWlyZWQtZ2l0LXRhci1hbmQtcHl0aG9uLXZlcnNpb25zJz5SZXF1aXJlZCBHaXQsIHRhciwgYW5kIFB5dGhvbiBWZXJzaW9uczwvbGluaz4iCisgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVxdWlyZWQtZ2l0LXRhci1weXRob24tYW5kLWdjYy12ZXJzaW9ucyc+UmVxdWlyZWQgR2l0LCB0YXIsIFB5dGhvbiBhbmQgZ2NjIFZlcnNpb25zPC9saW5rPiIKICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CkBAIC0xNzU0LDcgKzE3NTQsNyBAQAogICAgICAgICAgICAgR2l0IHRoYXQgbWVldHMgdGhpcyByZXF1aXJlbWVudCwgeW91IGNhbiB1c2UgdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVpbGR0b29scy10YXJiYWxsPC9maWxlbmFtZT4gdGhhdCBkb2VzLgogICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlcXVpcmVkLWdpdC10YXItYW5kLXB5dGhvbi12ZXJzaW9ucyc+UmVxdWlyZWQgR2l0LCB0YXIsIGFuZCBQeXRob24gVmVyc2lvbnM8L2xpbms+IgorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlcXVpcmVkLWdpdC10YXItcHl0aG9uLWFuZC1nY2MtdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBQeXRob24gYW5kIGdjYyBWZXJzaW9uczwvbGluaz4iCiAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgpAQCAtMjExMCw3ICsyMTEwLDcgQEAKICAgICAgICAgICAgIHN1Y2ggYXMgdGhlIGZvbGxvd2luZzoKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgaW5oZXJpdCBibHVldG9vdGgKLSAgICAgUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJyR7QkxVRVp9JywgJycsIGQpfQorICAgICBQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnJHtCTFVFWn0nLCAnJywgZCl9IgogICAgICBQQUNLQUdFQ09ORklHW2JsdWV6NF0gPSAiLS1lbmFibGUtYmx1ZXRvb3RoLC0tZGlzYWJsZS1ibHVldG9vdGgsYmx1ZXo0IgogICAgICBQQUNLQUdFQ09ORklHW2JsdWV6NV0gPSAiLS1lbmFibGUtYmx1ZXo1LC0tZGlzYWJsZS1ibHVlejUsYmx1ZXo1IgogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgpAQCAtMzIxNSw3ICszMjE1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgcmVjZW50IHZlcnNpb24sIHlvdSBjYW4gaW5zdGFsbCB0aGUgYnVpbGR0b29scywgd2hpY2gKICAgICAgICAgICAgICAgICAgICAgd2lsbCBwcm92aWRlIGl0LgogICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZXF1aXJlZC1naXQtdGFyLWFuZC1weXRob24tdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBhbmQgUHl0aG9uIFZlcnNpb25zPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlcXVpcmVkLWdpdC10YXItcHl0aG9uLWFuZC1nY2MtdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBQeXRob24gYW5kIGdjYyBWZXJzaW9uczwvbGluaz4iCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGJ1aWxkdG9vbHMgdGFyYmFsbC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtMzYyNCw3ICszNjI0LDcgQEAKICAgICAgICAgICAgIGltYWdlIHR5cGVzLCB0aGlzIHBhcnQgb2YgdGhlIGtlcm5lbCBpbWFnZSBiYXNlIG5hbWUgYXMgYmVlbgogICAgICAgICAgICAgcmVtb3ZlZCBsZWF2aW5nIG9ubHkgdGhlIGZvbGxvd2luZzoKICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgS0VSTkVMX0lNQUdFX0JBU0VfTkFNRSA/PSAiJHtQS0dFfS0ke1BLR1Z9LSR7UEtHUn0tJHtNQUNISU5FfS0ke0RBVEVUSU1FfQorICAgICBLRVJORUxfSU1BR0VfQkFTRV9OQU1FID89ICIke1BLR0V9LSR7UEtHVn0tJHtQS0dSfS0ke01BQ0hJTkV9LSR7REFURVRJTUV9IgogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgSWYgeW91IGhhdmUgcmVjaXBlcyBvciBjbGFzc2VzIHRoYXQgdXNlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+S0VSTkVMX0lNQUdFX0JBU0VfTkFNRTwvZmlsZW5hbWU+IGRpcmVjdGx5LCB5b3UgbWlnaHQKQEAgLTU2MDEsNyArNTYwMSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uIHRpbWUsIHVzZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0X29udGFyZ2V0KCk8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBvciBjYWxsCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb3N0aW5zdC1pbnRlcmNlcHRzIGRlZmVyX3RvX2ZpcnN0X2Jvb3Q8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9zdGluc3RfaW50ZXJjZXB0IGRlbGF5X3RvX2ZpcnN0X2Jvb3Q8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBmcm9tIDxmaWxlbmFtZT5wa2dfcG9zdGluc3QoKTwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICBBbnkgZmFpbHVyZSBvZiBhIDxmaWxlbmFtZT5wa2dfcG9zdGluc3QoKTwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgICAgIHNjcmlwdCAoaW5jbHVkaW5nIDxmaWxlbmFtZT5leGl0IDE8L2ZpbGVuYW1lPikKQEAgLTYxOTIsNyArNjE5Miw3IEBACiAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBleHBsaWNpdGx5IGRlZmVyIGEgcG9zdGluc3RhbGwgdG8gZmlyc3QgYm9vdCBvbgogICAgICAgICAgICAgdGhlIHRhcmdldCByYXRoZXIgdGhhbiBhdCByb290ZnMgY3JlYXRpb24gdGltZSwgdXNlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0X29udGFyZ2V0KCk8L2ZpbGVuYW1lPiBvciBjYWxsCi0gICAgICAgICAgICA8ZmlsZW5hbWU+cG9zdGluc3QtaW50ZXJjZXB0cyBkZWZlcl90b19maXJzdF9ib290PC9maWxlbmFtZT4gZnJvbQorICAgICAgICAgICAgPGZpbGVuYW1lPnBvc3RpbnN0X2ludGVyY2VwdCBkZWxheV90b19maXJzdF9ib290PC9maWxlbmFtZT4gZnJvbQogICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ19wb3N0aW5zdCgpPC9maWxlbmFtZT4uCiAgICAgICAgICAgICBBbnkgZmFpbHVyZSBvZiBhIDxmaWxlbmFtZT5wa2dfcG9zdGluc3QoKTwvZmlsZW5hbWU+IHNjcmlwdAogICAgICAgICAgICAgKGluY2x1ZGluZyBleGl0IDEpIHRyaWdnZXJzIGFuIGVycm9yIGR1cmluZyB0aGUKQEAgLTcwOTUsNiArNzA5NSwyMDcgQEAKICAgICA8L3NlY3Rpb24+CiA8L3NlY3Rpb24+CiAKKworPHNlY3Rpb24gaWQ9J21vdmluZy10by10aGUteW9jdG8tcHJvamVjdC0zLjEtcmVsZWFzZSc+CisgICAgPHRpdGxlPk1vdmluZyB0byB0aGUgWW9jdG8gUHJvamVjdCAzLjEgUmVsZWFzZTwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIG1pZ3JhdGlvbiBpbmZvcm1hdGlvbiBmb3IgbW92aW5nIHRvIHRoZQorICAgICAgICBZb2N0byBQcm9qZWN0IDMuMSBSZWxlYXNlIGZyb20gdGhlIHByaW9yIHJlbGVhc2UuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEtbWluaW11bS1zeXN0ZW0tcmVxdWlyZW1lbnRzJz4KKyAgICAgICAgPHRpdGxlPk1pbmltdW0gc3lzdGVtIHJlcXVpcmVtZW50czwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHZlcnNpb25zIC8gcmVxdWlyZW1lbnRzIG9mIGJ1aWxkIGhvc3QgY29tcG9uZW50cyBoYXZlIGJlZW4gdXBkYXRlZDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPmdjYyA1LjA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+cHl0aG9uIDMuNTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT50YXIgMS4yODwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+cnBjZ2VuPC9maWxlbmFtZT4gaXMgbm93IHJlcXVpcmVkIG9uIHRoZSBob3N0IChwYXJ0IG9mIHRoZSA8ZmlsZW5hbWU+bGliYy1kZXYtYmluPC9maWxlbmFtZT4gcGFja2FnZSBvbiBVYnVudHUsIERlYmlhbiBhbmQgcmVsYXRlZCBkaXN0cmlidXRpb25zLCBhbmQgdGhlIDxmaWxlbmFtZT5nbGliYzwvZmlsZW5hbWU+IHBhY2thZ2Ugb24gUlBNLWJhc2VkIGRpc3RyaWJ1dGlvbnMpLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgdGhlIDxmaWxlbmFtZT5tYWtlaW5mbzwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+cG9kMm1hbjwvZmlsZW5hbWU+CisgICAgICAgICAgICB0b29scyBhcmUgPGVtcGhhc2lzPm5vIGxvbmdlcjwvZW1waGFzaXM+IHJlcXVpcmVkIG9uIHRoZSBob3N0LgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEtbXBjODMxNWUtcmRiLXJlbW92ZWQnPgorICAgICAgICA8dGl0bGU+bXBjODMxNWUtcmRiIG1hY2hpbmUgcmVtb3ZlZDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgTVBDODMxNUUtUkRCIG1hY2hpbmUgaXMgb2xkL29ic29sZXRlIGFuZCB1bm9idGFpbmFibGUsIHRodXMgZ2l2ZW4gdGhlIG1haW50ZW5hbmNlIGJ1cmRlbgorICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5tcGM4MzE1ZS1yZGI8L2ZpbGVuYW1lPiBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gdGhhdCBzdXBwb3J0ZWQgaXQgaGFzIGJlZW4gcmVtb3ZlZAorICAgICAgICAgICAgaW4gdGhpcyByZWxlYXNlLiBUaGUgcmVtb3ZhbCBkb2VzIGxlYXZlIGEgZ2FwIGluIG9mZmljaWFsIFBvd2VyUEMgcmVmZXJlbmNlIGhhcmR3YXJlCisgICAgICAgICAgICBzdXBwb3J0OyB0aGlzIG1heSBjaGFuZ2UgaW4gZnV0dXJlIGlmIGEgc3VpdGFibGUgbWFjaGluZSB3aXRoIGFjY29tcGFueWluZyBzdXBwb3J0IHJlc291cmNlcworICAgICAgICAgICAgaXMgZm91bmQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisgICAgCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEtcHl0aG9uLTItcmVtb3ZlZCc+CisgICAgICAgIDx0aXRsZT5QeXRob24gMiByZW1vdmVkPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIER1ZSB0byB0aGUgZXhwaXJhdGlvbiBvZiB1cHN0cmVhbSBzdXBwb3J0IGluIEphbnVhcnkgMjAyMCwgc3VwcG9ydCBmb3IgUHl0aG9uIDIgaGFzIG5vdyBiZWVuIHJlbW92ZWQ7IGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHVzZSBQeXRob24gMyBpbnN0ZWFkLiBJZiBhYnNvbHV0ZWx5IG5lZWRlZCB0aGVyZSBpcyBhIG1ldGEtcHl0aG9uMiBjb21tdW5pdHkgbGF5ZXIgY29udGFpbmluZyBQeXRob24gMiwgcmVsYXRlZCBjbGFzc2VzIGFuZCB2YXJpb3VzIFB5dGhvbiAyLWJhc2VkIG1vZHVsZXMsIGhvd2V2ZXIgaXQgc2hvdWxkIG5vdCBiZSBjb25zaWRlcmVkIGFzIHN1cHBvcnRlZC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLXJlcHJvZHVjaWJsZS1idWlsZHMnPgorICAgICAgICA8dGl0bGU+UmVwcm9kdWNpYmxlIGJ1aWxkcyBub3cgZW5hYmxlZCBieSBkZWZhdWx0PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIG9yZGVyIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGRpZmZlcmVuY2VzIGluIG91dHB1dCBmaWxlcyAoYWlkaW5nIGJpbmFyeSByZXByb2R1Y2liaWxpdHkpLCB0aGUgUG9reSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiAoPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk8nPkRJU1RSTzwvbGluaz4gPSAicG9reSI8L2ZpbGVuYW1lPikgbm93IGluaGVyaXRzIHRoZSA8ZmlsZW5hbWU+cmVwcm9kdWNpYmxlX2J1aWxkPC9maWxlbmFtZT4gY2xhc3MgYnkgZGVmYXVsdC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKyAgICAKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS1wdGVzdC1mZWF0dXJlLWltcGFjdCc+CisgICAgICAgIDx0aXRsZT5JbXBhY3Qgb2YgcHRlc3QgZmVhdHVyZSBpcyBub3cgbW9yZSBzaWduaWZpY2FudDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgUG9reSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiAoPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk8nPkRJU1RSTzwvbGluaz4gPSAicG9reSI8L2ZpbGVuYW1lPikgZW5hYmxlcyBwdGVzdHMgYnkgZGVmYXVsdCB0byBlbmFibGUgcnVudGltZSB0ZXN0aW5nIG9mIHZhcmlvdXMgY29tcG9uZW50cy4gSW4gdGhpcyByZWxlYXNlLCBhIGRlcGVuZGVuY3kgbmVlZGVkIHRvIGJlIGFkZGVkIHRoYXQgaGFzIHJlc3VsdGVkIGluIGEgc2lnbmlmaWNhbnQgaW5jcmVhc2UgaW4gdGhlIG51bWJlciBvZiBjb21wb25lbnRzIHRoYXQgd2lsbCBiZSBidWlsdCBqdXN0IHdoZW4gYnVpbGRpbmcgYSBzaW1wbGUgaW1hZ2Ugc3VjaCBhcyBjb3JlLWltYWdlLW1pbmltYWwuIElmIHlvdSBkbyBub3QgbmVlZCBydW50aW1lIHRlc3RzIGVuYWJsZWQgZm9yIGNvcmUgY29tcG9uZW50cywgdGhlbiBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSByZW1vdmUgInB0ZXN0IiBmcm9tIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4gdG8gc2F2ZSBhIHNpZ25pZmljYW50IGFtb3VudCBvZiBidWlsZCB0aW1lIGUuZy4gYnkgYWRkaW5nIHRoZSBmb2xsb3dpbmcgaW4geW91ciBjb25maWd1cmF0aW9uOgorCisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICBESVNUUk9fRkVBVFVSRVNfcmVtb3ZlID0gInB0ZXN0IgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEtcmVtb3ZlZC1yZWNpcGVzJz4KKyAgICAgICAgPHRpdGxlPlJlbW92ZWQgcmVjaXBlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHJlY2lwZXMgaGF2ZSBiZWVuIHJlbW92ZWQ6CisKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5jaGtjb25maWc8L2ZpbGVuYW1lPjogb2Jzb2xldGU8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmNvbnNvbGUtdG9vbHM8L2ZpbGVuYW1lPjogb2Jzb2xldGU8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmVuY2hhbnQ8L2ZpbGVuYW1lPjogcmVwbGFjZWQgYnkgPGZpbGVuYW1lPmVuY2hhbnQyPC9maWxlbmFtZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmZvb21hdGljLWZpbHRlcnM8L2ZpbGVuYW1lPjogb2Jzb2xldGU8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmxpYmlkbjwvZmlsZW5hbWU+OiBubyBsb25nZXIgbmVlZGVkLCBtb3ZlZCB0byBtZXRhLW9lPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5saWJtb2R1bGVtZDwvZmlsZW5hbWU+OiByZXBsYWNlZCBieSA8ZmlsZW5hbWU+bGlibW9kdWxlbWQtdjE8L2ZpbGVuYW1lPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bGludXgteW9jdG88L2ZpbGVuYW1lPjogZHJvcCA0LjE5LCA1LjIgdmVyc2lvbiByZWNpcGVzICg1LjQgbm93IHByb3ZpZGVkKTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bnNwcjwvZmlsZW5hbWU+OiBubyBsb25nZXIgbmVlZGVkLCBtb3ZlZCB0byBtZXRhLW9lPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5uc3M8L2ZpbGVuYW1lPjogbm8gbG9uZ2VyIG5lZWRlZCwgbW92ZWQgdG8gbWV0YS1vZTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+cHl0aG9uPC9maWxlbmFtZT46IFB5dGhvbiAyIHJlbW92ZWQgKFB5dGhvbiAzIHByZWZlcnJlZCk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnB5dGhvbi1zZXR1cHRvb2xzPC9maWxlbmFtZT46IFB5dGhvbiAyIHZlcnNpb24gcmVtb3ZlZCAocHl0aG9uMy1zZXR1cHRvb2xzIHByZWZlcnJlZCk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnN5c3Byb2Y8L2ZpbGVuYW1lPjogbm8gbG9uZ2VyIG5lZWRlZCwgbW92ZWQgdG8gbWV0YS1vZTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+dGV4aTJodG1sPC9maWxlbmFtZT46IG9ic29sZXRlPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT51LWJvb3QtZnctdXRpbHM8L2ZpbGVuYW1lPjogZnVuY3Rpb25hbGx5IHJlcGxhY2VkIGJ5IDxmaWxlbmFtZT5saWJ1Ym9vdGVudjwvZmlsZW5hbWU+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLWZlYXR1cmVzLWNoZWNrJz4KKyAgICAgICAgPHRpdGxlPmZlYXR1cmVzX2NoZWNrIGNsYXNzIHJlcGxhY2VzIGRpc3Ryb19mZWF0dXJlc19jaGVjazwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRpc3Ryb19mZWF0dXJlc19jaGVjazwvZmlsZW5hbWU+IGNsYXNzIGhhcyBoYWQgaXRzIGZ1bmN0aW9uYWxpdHkgZXhwYW5kZWQsIG5vdyBzdXBwb3J0aW5nIDxmaWxlbmFtZT5BTllfT0ZfTUFDSElORV9GRUFUVVJFUzwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+UkVRVUlSRURfTUFDSElORV9GRUFUVVJFUzwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+Q09ORkxJQ1RfTUFDSElORV9GRUFUVVJFUzwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+QU5ZX09GX0NPTUJJTkVEX0ZFQVRVUkVTPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5SRVFVSVJFRF9DT01CSU5FRF9GRUFUVVJFUzwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+Q09ORkxJQ1RfQ09NQklORURfRkVBVFVSRVM8L2ZpbGVuYW1lPi4gQXMgYSByZXN1bHQgdGhlIGNsYXNzIGhhcyBub3cgYmVlbiByZW5hbWVkIHRvIDxmaWxlbmFtZT5mZWF0dXJlc19jaGVjazwvZmlsZW5hbWU+OyB0aGUgPGZpbGVuYW1lPmRpc3Ryb19mZWF0dXJlc19jaGVjazwvZmlsZW5hbWU+IGNsYXNzIHN0aWxsIGV4aXN0cyBidXQgZ2VuZXJhdGVzIGEgd2FybmluZyBhbmQgcmVkaXJlY3RzIHRvIHRoZSBuZXcgY2xhc3MuIEluIHByZXBhcmF0aW9uIGZvciBhIGZ1dHVyZSByZW1vdmFsIG9mIHRoZSBvbGQgY2xhc3MgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXBkYXRlIHJlY2lwZXMgY3VycmVudGx5IGluaGVyaXRpbmcgPGZpbGVuYW1lPmRpc3Ryb19mZWF0dXJlc19jaGVjazwvZmlsZW5hbWU+IHRvIGluaGVyaXQgPGZpbGVuYW1lPmZlYXR1cmVzX2NoZWNrPC9maWxlbmFtZT4gaW5zdGVhZC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLXJlbW92ZWQtY2xhc3Nlcyc+CisgICAgICAgIDx0aXRsZT5SZW1vdmVkIGNsYXNzZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjbGFzc2VzIGhhdmUgYmVlbiByZW1vdmVkOgorCisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+ZGlzdHV0aWxzLWJhc2U8L2ZpbGVuYW1lPjogbW92ZWQgdG8gbWV0YS1weXRob24yPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5kaXN0dXRpbHM8L2ZpbGVuYW1lPjogbW92ZWQgdG8gbWV0YS1weXRob24yPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5saWJjLWNvbW1vbjwvZmlsZW5hbWU+OiBtZXJnZWQgaW50byB0aGUgZ2xpYmMgcmVjaXBlIGFzIG5vdGhpbmcgZWxzZSB1c2VkIGl0LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+cHl0aG9uLWRpcjwvZmlsZW5hbWU+OiBtb3ZlZCB0byBtZXRhLXB5dGhvbjI8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnB5dGhvbm5hdGl2ZTwvZmlsZW5hbWU+OiBtb3ZlZCB0byBtZXRhLXB5dGhvbjI8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnNldHVwdG9vbHM8L2ZpbGVuYW1lPjogbW92ZWQgdG8gbWV0YS1weXRob24yPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT50aW5kZXJjbGllbnQ8L2ZpbGVuYW1lPjogZHJvcHBlZCBhcyBpdCB3YXMgb2Jzb2xldGUuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLXNyYy11cmktY2hlY2tzdW1zJz4KKyAgICAgICAgPHRpdGxlPlNSQ19VUkkgY2hlY2tzdW0gYmVoYXZpb3VyPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFByZXZpb3VzbHksIHJlY2lwZXMgYnkgdHJhZGl0aW9uIGluY2x1ZGVkIGJvdGggU0hBMjU2IGFuZCBNRDUgY2hlY2tzdW1zIGZvciByZW1vdGVseSBmZXRjaGVkIGZpbGVzIGluIDxsaW5rIGxpbmtlbmQ9J3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC9saW5rPiwgZXZlbiB0aG91Z2ggb25seSBvbmUgaXMgYWN0dWFsbHkgbWFuZGF0ZWQuIEhvd2V2ZXIsIHRoZSBNRDUgY2hlY2tzdW0gZG9lcyBub3QgYWRkIG11Y2ggZ2l2ZW4gaXRzIGluaGVyZW50IHdlYWtuZXNzOyB0aHVzIHdoZW4gYSBjaGVja3N1bSBmYWlscyBvbmx5IHRoZSBTSEEyNTYgc3VtIHdpbGwgbm93IGJlIHByaW50ZWQuIFRoZSBtZDVzdW0gd2lsbCBzdGlsbCBiZSB2ZXJpZmllZCBpZiBpdCBpcyBzcGVjaWZpZWQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLW5wbSc+CisgICAgICAgIDx0aXRsZT5ucG0gZmV0Y2hlciBjaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBucG0gZmV0Y2hlciBoYXMgYmVlbiBjb21wbGV0ZWx5IHJld29ya2VkIGluIHRoaXMgcmVsZWFzZS4gVGhlIG5wbSBmZXRjaGVyIG5vdyBvbmx5IGZldGNoZXMgdGhlIHBhY2thZ2Ugc291cmNlIGl0c2VsZiBhbmQgbm8gbG9uZ2VyIHRoZSBkZXBlbmRlbmNpZXM7IHRoZXJlIGlzIG5vdyBhbHNvIGFuIG5wbXN3IGZldGNoZXIgd2hpY2ggZXhwbGljaXRseSBmZXRjaGVzIHRoZSBzaHJpbmt3cmFwIGZpbGUgYW5kIHRoZSBkZXBlbmRlbmNpZXMuIFRoaXMgcmVtb3ZlcyB0aGUgc2xpZ2h0bHkgYXdrd2FyZCA8ZmlsZW5hbWU+TlBNX0xPQ0tET1dOPC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5OUE1fU0hSSU5LV1JBUDwvZmlsZW5hbWU+IHZhcmlhYmxlcyB3aGljaCBwb2ludGVkIHRvIGxvY2FsIGZpbGVzOyB0aGUgbG9ja2Rvd24gZmlsZSBpcyBubyBsb25nZXIgbmVlZGVkIGF0IGFsbC4gQWRkaXRpb25hbGx5LCB0aGUgcGFja2FnZSBuYW1lIGluIDxmaWxlbmFtZT5ucG06Ly88L2ZpbGVuYW1lPiBlbnRyaWVzIGluIDxsaW5rIGxpbmtlbmQ9J3Zhci1TUkNfVVJJJz48ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+PC9saW5rPiBpcyBub3cgc3BlY2lmaWVkIHVzaW5nIGEgPGZpbGVuYW1lPnBhY2thZ2U8L2ZpbGVuYW1lPiBwYXJhbWV0ZXIgaW5zdGVhZCBvZiB0aGUgZWFybGllciA8ZmlsZW5hbWU+bmFtZTwvZmlsZW5hbWU+IHdoaWNoIG92ZXJsYXBwZWQgd2l0aCB0aGUgZ2VuZXJpYyA8ZmlsZW5hbWU+bmFtZTwvZmlsZW5hbWU+IHBhcmFtZXRlci4gQWxsIHJlY2lwZXMgdXNpbmcgdGhlIG5wbSBmZXRjaGVyIHdpbGwgbmVlZCB0byBiZSBjaGFuZ2VkIGFzIGEgcmVzdWx0LiAKKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFuIGV4YW1wbGUgb2YgdGhlIG5ldyBzY2hlbWU6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CitTUkNfVVJJID0gIm5wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPWFycmF5LWZsYXR0ZW47dmVyc2lvbj0xLjEuMSBcCisgICAgICAgICAgIG5wbXN3Oi8vJHtUSElTRElSfS9ucG0tc2hyaW5rd3JhcC5qc29uIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgQW5vdGhlciBleGFtcGxlIHdoZXJlIHRoZSBzb3VyY2VzIGFyZSBmZXRjaGVkIGZyb20gZ2l0IHJhdGhlciB0aGFuIGFuIG5wbSByZXBvc2l0b3J5OgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2Zvby9iYXIuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgbnBtc3c6Ly8ke1RISVNESVJ9L25wbS1zaHJpbmt3cmFwLmpzb24iCisgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBkZXZ0b29sIGFuZCByZWNpcGV0b29sIGhhdmUgYWxzbyBiZWVuIHVwZGF0ZWQgdG8gbWF0Y2ggd2l0aCB0aGUgbnBtIGZldGNoZXIgY2hhbmdlcy4gT3RoZXIgdGhhbiBwcm9kdWNpbmcgd29ya2luZyBhbmQgbW9yZSBjb21wbGV0ZSByZWNpcGVzIGZvciBucG0gc291cmNlcywgdGhlcmUgaXMgYWxzbyBhIG1pbm9yIGNoYW5nZSB0byB0aGUgY29tbWFuZCBsaW5lIGZvciBkZXZ0b29sOiB0aGUgPGZpbGVuYW1lPi0tZmV0Y2gtZGV2PC9maWxlbmFtZT4gb3B0aW9uIGhhcyBiZWVuIHJlbmFtZWQgdG8gPGZpbGVuYW1lPi0tbnBtLWRldjwvZmlsZW5hbWU+IGFzIGl0IGlzIG5wbS1zcGVjaWZpYy4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKyAgICAKKyAgICAKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS1wYWNrYWdpbmctY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5QYWNrYWdpbmcgY2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+aW50bHRvb2w8L2ZpbGVuYW1lPiBoYXMgYmVlbiByZW1vdmVkIGZyb20gPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jb3JlLXNkazwvZmlsZW5hbWU+IGFzIGl0IGlzIHJhcmVseSBuZWVkZWQgdG8gYnVpbGQgbW9kZXJuIHNvZnR3YXJlIC0gZ2V0dGV4dCBjYW4gZG8gbW9zdCBvZiB0aGUgdGhpbmdzIGl0IHVzZWQgdG8gYmUgbmVlZGVkIGZvci4gPGZpbGVuYW1lPmludGx0b29sPC9maWxlbmFtZT4gaGFzIGFsc28gYmVlbiByZW1vdmVkIGZyb20gPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jb3JlLXNlbGYtaG9zdGVkPC9maWxlbmFtZT4gYXMgaXQgaXMgbm90IG5lZWRlZCB0byBmb3Igc3RhbmRhcmQgYnVpbGRzLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5naXQ6IDxmaWxlbmFtZT5naXQtYW08L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmdpdC1kaWZmdG9vbDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+Z2l0LXN1Ym1vZHVsZTwvZmlsZW5hbWU+LCBhbmQgPGZpbGVuYW1lPmdpdC1yZXF1ZXN0LXB1bGw8L2ZpbGVuYW1lPiBhcmUgbm8gbG9uZ2VyIHBlcmwtYmFzZWQsIHNvIGFyZSBub3cgaW5zdGFsbGVkIHdpdGggdGhlIG1haW4gPGZpbGVuYW1lPmdpdDwvZmlsZW5hbWU+IHBhY2thZ2UgaW5zdGVhZCBvZiB3aXRoaW4gPGZpbGVuYW1lPmdpdC1wZXJsdG9vbHM8L2ZpbGVuYW1lPi48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIDxmaWxlbmFtZT5sZGNvbmZpZzwvZmlsZW5hbWU+IGJpbmFyeSBidWlsdCBhcyBwYXJ0IG9mIGdsaWJjIGhhcyBub3cgYmVlbiBtb3ZlZCB0byBpdHMgb3duIDxmaWxlbmFtZT5sZGNvbmZpZzwvZmlsZW5hbWU+IHBhY2thZ2UgKG5vdGUgbm8gPGZpbGVuYW1lPmdsaWJjLTwvZmlsZW5hbWU+IHByZWZpeCkuIFRoaXMgcGFja2FnZSBpcyBpbiB0aGUgPGxpbmsgbGlua2VuZD0ndmFyLVJSRUNPTU1FTkRTJz48ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvbGluaz4gb2YgdGhlIG1haW4gPGZpbGVuYW1lPmdsaWJjPC9maWxlbmFtZT4gcGFja2FnZSBpZiA8ZmlsZW5hbWU+bGRjb25maWc8L2ZpbGVuYW1lPiBpcyBwcmVzZW50IGluIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVMnPjxmaWxlbmFtZT5ESVNUUk9fRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5saWJldmVudDwvZmlsZW5hbWU+IG5vdyBzcGxpdHMgZWFjaCBzaGFyZWQgbGlicmFyeSBpbnRvIGl0cyBvd24gcGFja2FnZSAoYXMgRGViaWFuIGRvZXMpLiBTaW5jZSB0aGVzZSBhcmUgc2hhcmVkIGxpYnJhcmllcyBhbmQgd2lsbCBiZSBwdWxsZWQgaW4gdGhyb3VnaCB0aGUgbm9ybWFsIHNoYXJlZCBsaWJyYXJ5IGRlcGVuZGVuY3kgaGFuZGxpbmcsIHRoZXJlIHNob3VsZCBiZSBubyBpbXBhY3QgdG8gZXhpc3RpbmcgY29uZmlndXJhdGlvbnMgb3RoZXIgdGhhbiBsZXNzIHVubmVjZXNzYXJ5IGxpYnJhcmllcyBiZWluZyBpbnN0YWxsZWQgaW4gc29tZSBjYXNlcy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+bGludXgtZmlybXdhcmUgbm93IGhhcyBhIG5ldyBwYWNrYWdlIGZvciA8ZmlsZW5hbWU+YmNtNDM2NmM8L2ZpbGVuYW1lPiBhbmQgaW5jbHVkZXMgYXZhaWxhYmxlIE5WUkFNIGNvbmZpZyBmaWxlcyBpbnRvIHRoZSA8ZmlsZW5hbWU+YmNtNDMzNDA8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmJjbTQzMzYyPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5iY200MzQzMDwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+YmNtNDM1Ni1wY2llPC9maWxlbmFtZT4gcGFja2FnZXMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5oYXJmYnV6ejwvZmlsZW5hbWU+IG5vdyBzcGxpdHMgdGhlIG5ldyA8ZmlsZW5hbWU+bGliaGFyZmJ1enotc3Vic2V0LnNvPC9maWxlbmFtZT4gbGlicmFyeSBpbnRvIGl0cyBvd24gcGFja2FnZSB0byByZWR1Y2UgdGhlIG1haW4gcGFja2FnZSBzaXplIGluIGNhc2VzIHdoZXJlIDxmaWxlbmFtZT5saWJoYXJmYnV6ei1zdWJzZXQuc288L2ZpbGVuYW1lPiBpcyBub3QgbmVlZGVkLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisgICAgCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEtcGFja2FnZS1xYS13YXJuaW5ncyc+CisgICAgICAgIDx0aXRsZT5BZGRpdGlvbmFsIHdhcm5pbmdzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdhcm5pbmdzIHdpbGwgbm93IGJlIHNob3duIGF0IDxmaWxlbmFtZT5kb19wYWNrYWdlX3FhPC9maWxlbmFtZT4gdGltZSBpbiB0aGUgZm9sbG93aW5nIGNpcmN1bXN0YW5jZXM6CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkEgcmVjaXBlIGluc3RhbGxzIDxmaWxlbmFtZT4uZGVza3RvcDwvZmlsZW5hbWU+IGZpbGVzIGNvbnRhaW5pbmcgPGZpbGVuYW1lPk1pbWVUeXBlPC9maWxlbmFtZT4ga2V5cyBidXQgZG9lcyBub3QgaW5oZXJpdCB0aGUgbmV3IDxmaWxlbmFtZT5taW1lLXhkZzwvZmlsZW5hbWU+IGNsYXNzPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkEgcmVjaXBlIGluc3RhbGxzIDxmaWxlbmFtZT4ueG1sPC9maWxlbmFtZT4gZmlsZXMgaW50byA8ZmlsZW5hbWU+JHtkYXRhZGlyfS9taW1lL3BhY2thZ2VzPC9maWxlbmFtZT4gYnV0IGRvZXMgbm90IGluaGVyaXQgdGhlIDxmaWxlbmFtZT5taW1lPC9maWxlbmFtZT4gY2xhc3M8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorICAgICAgICAKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS14ODYtbGl2ZS13aWMnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IGltYWdlIHR5cGUgbm93IHVzZWQgaW5zdGVhZCBvZiA8ZmlsZW5hbWU+bGl2ZTwvZmlsZW5hbWU+IGJ5IGRlZmF1bHQgZm9yIHg4NjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jPC9maWxlbmFtZT4gKGluaGVyaXRlZCBieSBtb3N0IHg4NiBtYWNoaW5lIGNvbmZpZ3VyYXRpb25zKSBub3cgc3BlY2lmaWVzIDxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPiBpbnN0ZWFkIG9mIDxmaWxlbmFtZT5saXZlPC9maWxlbmFtZT4gYnkgZGVmYXVsdCBpbiA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfRlNUWVBFUyc+PGZpbGVuYW1lPklNQUdFX0ZTVFlQRVM8L2ZpbGVuYW1lPjwvbGluaz4uIFRoZSA8ZmlsZW5hbWU+bGl2ZTwvZmlsZW5hbWU+IGltYWdlIHR5cGUgd2lsbCBsaWtlbHkgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlIHNvIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHVzZSA8ZmlsZW5hbWU+d2ljPC9maWxlbmFtZT4gaW5zdGVhZC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKyAgICAgICAgICAgICAgICAKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS1taXNjJz4KKyAgICAgICAgPHRpdGxlPk1pc2NlbGxhbmVvdXMgY2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgdW5kb2N1bWVudGVkIDxmaWxlbmFtZT5TUkNfRElTVFJJQlVURV9MSUNFTlNFUzwvZmlsZW5hbWU+IHZhcmlhYmxlIGhhcyBub3cgYmVlbiByZW1vdmVkIGluIGZhdm91ciBvZiBhIG5ldyA8ZmlsZW5hbWU+QVZBSUxBQkxFX0xJQ0VOU0VTPC9maWxlbmFtZT4gdmFyaWFibGUgd2hpY2ggaXMgZHluYW1pY2FsbHkgc2V0IGJhc2VkIHVwb24gbGljZW5zZSBmaWxlcyBmb3VuZCBpbiA8ZmlsZW5hbWU+JHtDT01NT05fTElDRU5TRV9ESVJ9PC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT4ke0xJQ0VOU0VfUEFUSH08L2ZpbGVuYW1lPi48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIHR1bmUgZGVmaW5pdGlvbiBmb3IgYmlnLWVuZGlhbiBtaWNyb2JsYXplIG1hY2hpbmVzIGlzIG5vdyA8ZmlsZW5hbWU+bWljcm9ibGF6ZTwvZmlsZW5hbWU+IGluc3RlYWQgb2YgPGZpbGVuYW1lPm1pY3JvYmxhemVlYjwvZmlsZW5hbWU+LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bmV3bGliPC9maWxlbmFtZT4gbm8gbG9uZ2VyIGhhcyBidWlsdC1pbiBzeXNjYWxscy4gPGZpbGVuYW1lPmxpYmdsb3NzPC9maWxlbmFtZT4gc2hvdWxkIHRoZW4gcHJvdmlkZSB0aGUgc3lzY2FsbHMsIDxmaWxlbmFtZT5jcnQwLm88L2ZpbGVuYW1lPiBhbmQgb3RoZXIgZnVuY3Rpb25zIHRoYXQgYXJlIG5vIGxvbmdlciBwYXJ0IG9mIDxmaWxlbmFtZT5uZXdsaWI8L2ZpbGVuYW1lPiBpdHNlbGYuIElmIHlvdSBhcmUgdXNpbmcgPGZpbGVuYW1lPlRDTElCQyA9ICJuZXdsaWIiPC9maWxlbmFtZT4gdGhpcyBub3cgbWVhbnMgdGhhdCB5b3UgbXVzdCBsaW5rIGFwcGxpY2F0aW9ucyB3aXRoIGJvdGggPGZpbGVuYW1lPm5ld2xpYjwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+bGliZ2xvc3M8L2ZpbGVuYW1lPiwgd2hlcmVhcyBiZWZvcmUgPGZpbGVuYW1lPm5ld2xpYjwvZmlsZW5hbWU+IHdvdWxkIHJ1biBpbiBtYW55IGNvbmZpZ3VyYXRpb25zIGJ5IGl0c2VsZi48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCis8L3NlY3Rpb24+CisKKwogPC9jaGFwdGVyPgogPCEtLQogdmltOiBleHBhbmR0YWIgdHc9ODAgdHM9NApkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWZlYXR1cmVzLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1mZWF0dXJlcy54bWwKaW5kZXggNDRiYTY3Yy4uMjk0YjI5NyAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWZlYXR1cmVzLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZmVhdHVyZXMueG1sCkBAIC0yMTAsNiArMjEwLDEyIEBACiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz51c2Job3N0OjwvZW1waGFzaXM+IEluY2x1ZGUgVVNCIEhvc3QKICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCAoYWxsb3dzIHRvIGNvbm5lY3QgZXh0ZXJuYWwga2V5Ym9hcmQsIG1vdXNlLAogICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLCBuZXR3b3JrIGV0YykuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz51c3JtZXJnZTo8L2VtcGhhc2lzPiBNZXJnZXMgdGhlIAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2JpbjwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+L3NiaW48L2ZpbGVuYW1lPiwgCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vbGliPC9maWxlbmFtZT4sIGFuZCA8ZmlsZW5hbWU+L2xpYjY0PC9maWxlbmFtZT4gICAgICAgCisgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIGludG8gdGhlaXIgcmVzcGVjdGl2ZSBjb3VudGVycGFydHMgaW4gdGhlIAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3VzcjwvZmlsZW5hbWU+IGRpcmVjdG9yeSB0byBwcm92aWRlIGJldHRlciBwYWNrYWdlIAorICAgICAgICAgICAgICAgICAgIGFuZCBhcHBsaWNhdGlvbiBjb21wYXRpYmlsaXR5LjwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+d2F5bGFuZDo8L2VtcGhhc2lzPiBJbmNsdWRlIHRoZQogICAgICAgICAgICAgICAgICAgICBXYXlsYW5kIGRpc3BsYXkgc2VydmVyIHByb3RvY29sIGFuZCB0aGUgbGlicmFyeSB0aGF0CiAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzIGl0LjwvcGFyYT48L2xpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLW1hbnVhbC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtbWFudWFsLnhtbApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGI0NDJmNzAuLjlhOTE0ZjEKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLW1hbnVhbC54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLW1hbnVhbC54bWwKQEAgLTIyLDExICsyMiwxMCBAQAogCiAgICAgICAgIDxhdXRob3Jncm91cD4KICAgICAgICAgICAgIDxhdXRob3I+Ci0gICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5TY290dDwvZmlyc3RuYW1lPiA8c3VybmFtZT5SaWZlbmJhcms8L3N1cm5hbWU+CiAgICAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5TY290dHkncyBEb2N1bWVudGF0aW9uIFNlcnZpY2VzLCBJTkM8L29yZ25hbWU+CisgICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPiZPUkdOQU1FOzwvb3JnbmFtZT4KICAgICAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgIDxlbWFpbD5zcmlmZW5iYXJrQGdtYWlsLmNvbTwvZW1haWw+CisgICAgICAgICAgICAgICAgPGVtYWlsPiZPUkdFTUFJTDs8L2VtYWlsPgogICAgICAgICAgICAgPC9hdXRob3I+CiAKICAgICAgICAgPC9hdXRob3Jncm91cD4KQEAgLTM0LDIyICszMywxNyBAQAogICAgICAgICA8cmV2aGlzdG9yeT4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjQuMCtnaXQ8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT4yNCBOb3ZlbWJlciAyMDEwPC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAwLjkgUmVsZWFzZTwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxkYXRlPk5vdmVtYmVyIDIwMTA8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5UaGUgaW5pdGlhbCBkb2N1bWVudCByZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDAuOSBSZWxlYXNlPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS4wPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+NiBBcHJpbCAyMDExPC9kYXRlPgorICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTE8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuMCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuMC4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+MjMgTWF5IDIwMTE8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuMC4xIFJlbGVhc2UuPC9yZXZyZW1hcms+Ci0gICAgICAgICAgICA8L3JldmlzaW9uPgotICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+NiBPY3RvYmVyIDIwMTE8L2RhdGU+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDExPC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CkBAIC03MywxMSArNjcsNiBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjUuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxNDwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS41LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjY8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE0PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjYgUmVsZWFzZS48L3JldnJlbWFyaz4KQEAgLTEzNCw5ICsxMjMsMTQgQEAKICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjA8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxOTwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKICAgICA8Y29weXJpZ2h0PgpAQCAtMTU4LDcgKzE1Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCkBAIC0xNzUsMTggKzE2OSwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICBwYWdlLgogICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCBhIHZlcnNpb24gb2YgdGhpcyBtYW51YWwgZm9yIGEgZGlmZmVyZW50CiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSwgdmlzaXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBzZXQgYnkgdXNpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICJBQ1RJVkUgUkVMRUFTRVMgRE9DVU1FTlRBVElPTiIgb3IgIkRPQ1VNRU5UUyBBUkNISVZFIgogICAgICAgICAgICAgICAgICAgICAgICBwdWxsLWRvd24gbWVudXMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bwotICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCi0gICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAob3IgYW55IG90aGVyIFlvY3RvIFByb2plY3QpIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0bworICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1haWxpbmcgbGlzdCBhdAorICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9jc0BsaXN0cy55b2N0b3Byb2plY3Qub3JnPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgbG9nIGludG8gdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICA8L25vdGU+CiAgICAgPC9sZWdhbG5vdGljZT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zdHJ1Y3R1cmUueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0cnVjdHVyZS54bWwKaW5kZXggOGUwYzlmNS4uMjdmMTdkZCAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0cnVjdHVyZS54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN0cnVjdHVyZS54bWwKQEAgLTgsMTEgKzgsMTEgQEAKIAogPHBhcmE+CiAgICAgVGhlIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+Ci0gICAgY29uc2lzdHMgb2Ygc2V2ZXJhbCBjb21wb25lbnRzLgotICAgIFVuZGVyc3RhbmRpbmcgdGhlbSBhbmQga25vd2luZyB3aGVyZSB0aGV5IGFyZSBsb2NhdGVkIGlzIGtleSB0byB1c2luZyB0aGUKLSAgICBZb2N0byBQcm9qZWN0IHdlbGwuCisgICAgY29uc2lzdHMgb2YgbnVtZXJvdXMgZmlsZXMsIGRpcmVjdG9yaWVzIGFuZCBzdWJkaXJlY3RvcmllczsKKyAgICB1bmRlcnN0YW5kaW5nIHRoZWlyIGxvY2F0aW9ucyBhbmQgY29udGVudHMgaXMga2V5IHRvIHVzaW5nIHRoZQorICAgIFlvY3RvIFByb2plY3QgZWZmZWN0aXZlbHkuCiAgICAgVGhpcyBjaGFwdGVyIGRlc2NyaWJlcyB0aGUgU291cmNlIERpcmVjdG9yeSBhbmQgZ2l2ZXMgaW5mb3JtYXRpb24gYWJvdXQKLSAgICB0aGUgdmFyaW91cyBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuCisgICAgdGhvc2UgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLgogPC9wYXJhPgogCiA8cGFyYT4KQEAgLTIyLDEyICsyMiwxMiBAQAogICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogPC9wYXJhPgogCi08bm90ZT4KLSAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGZpbGUgb3IgZGlyZWN0b3J5IG5hbWVzIHRoYXQKLSAgICBjb250YWluIHNwYWNlcy4KLSAgICBCZSBzdXJlIHRoYXQgdGhlIFNvdXJjZSBEaXJlY3RvcnkgeW91IHVzZSBkb2VzIG5vdCBjb250YWluIHRoZXNlIHR5cGVzCi0gICAgb2YgbmFtZXMuCi08L25vdGU+CisgICAgPG5vdGU+CisgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgZmlsZSBvciBkaXJlY3RvcnkgbmFtZXMgdGhhdAorICAgICAgICBjb250YWluIHNwYWNlcy4KKyAgICAgICAgQmUgc3VyZSB0aGF0IHRoZSBTb3VyY2UgRGlyZWN0b3J5IHlvdSB1c2UgZG9lcyBub3QgY29udGFpbiB0aGVzZSB0eXBlcworICAgICAgICBvZiBuYW1lcy4KKyAgICA8L25vdGU+CiAKIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtY29yZSc+CiAgICAgPHRpdGxlPlRvcC1MZXZlbCBDb3JlIENvbXBvbmVudHM8L3RpdGxlPgpAQCAtNDgsMTggKzQ4LDE4IEBACiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdtZXRhZGF0YSc+TWV0YWRhdGE8L2xpbms+CiAgICAgICAgICAgICBpbnRlcnByZXRlciwgcmVhZHMgdGhlIFlvY3RvIFByb2plY3QgTWV0YWRhdGEgYW5kIHJ1bnMgdGhlIHRhc2tzCiAgICAgICAgICAgICBkZWZpbmVkIGJ5IHRoYXQgZGF0YS4KLSAgICAgICAgICAgIEZhaWx1cmVzIGFyZSB1c3VhbGx5IGZyb20gdGhlIE1ldGFkYXRhIGFuZCBub3QgZnJvbSBCaXRCYWtlIGl0c2VsZi4KLSAgICAgICAgICAgIENvbnNlcXVlbnRseSwgbW9zdCB1c2VycyBkbyBub3QgbmVlZCB0byB3b3JyeSBhYm91dCBCaXRCYWtlLgorICAgICAgICAgICAgRmFpbHVyZXMgYXJlIHVzdWFsbHkgY2F1c2VkIGJ5IGVycm9ycyBpbiB5b3VyIE1ldGFkYXRhIGFuZCBub3QgZnJvbSBCaXRCYWtlIGl0c2VsZjsKKyAgICAgICAgICAgIGNvbnNlcXVlbnRseSwgbW9zdCB1c2VycyBkbyBub3QgbmVlZCB0byB3b3JyeSBhYm91dCBCaXRCYWtlLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBXaGVuIHlvdSBydW4gdGhlIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gY29tbWFuZCwgdGhlCi0gICAgICAgICAgICBtYWluIEJpdEJha2UgZXhlY3V0YWJsZSwgd2hpY2ggcmVzaWRlcyBpbiB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlL2Jpbi88L2ZpbGVuYW1lPiBkaXJlY3RvcnksIHN0YXJ0cy4KKyAgICAgICAgICAgIG1haW4gQml0QmFrZSBleGVjdXRhYmxlICh3aGljaCByZXNpZGVzIGluIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UvYmluLzwvZmlsZW5hbWU+IGRpcmVjdG9yeSkgc3RhcnRzLgogICAgICAgICAgICAgU291cmNpbmcgdGhlIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCAoaS5lLgogICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ic3RydWN0dXJlLWNvcmUtc2NyaXB0Ij48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4pCi0gICAgICAgICAgICBwbGFjZXMgdGhlIDxmaWxlbmFtZT5zY3JpcHRzPC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS9iaW48L2ZpbGVuYW1lPiBkaXJlY3RvcmllcyAoaW4gdGhhdCBvcmRlcikgaW50bworICAgICAgICAgICAgcGxhY2VzIHRoZSA8ZmlsZW5hbWU+c2NyaXB0cy88L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlL2Jpbi88L2ZpbGVuYW1lPiBkaXJlY3RvcmllcyAoaW4gdGhhdCBvcmRlcikgaW50bwogICAgICAgICAgICAgdGhlIHNoZWxsJ3MgPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KICAgICAgICAgPC9wYXJhPgogCkBAIC05MSw3ICs5MSw3IEBACiAgICAgICAgICAgICBieSBwcm92aWRpbmcgYSBkaXJlY3RvcnkgbmFtZSB3aGVuIHlvdSA8ZmlsZW5hbWU+c291cmNlPC9maWxlbmFtZT4KICAgICAgICAgICAgIHRoZSBzZXR1cCBzY3JpcHQuCiAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gc2VwYXJhdGluZyBvdXRwdXQgZnJvbSB5b3VyIGxvY2FsCi0gICAgICAgICAgICBTb3VyY2UgRGlyZWN0b3J5IGZpbGVzLCBzZWUgdGhlCisgICAgICAgICAgICBTb3VyY2UgRGlyZWN0b3J5IGZpbGVzIChjb21tb25seSBkZXNjcmliZWQgYXMgYW4gIm91dCBvZiB0cmVlIiBidWlsZCksIHNlZSB0aGUKICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPiIKICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgIDwvcGFyYT4KQEAgLTEwNCw4ICsxMDQsOCBAQAogICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgaG9sZHMgdGhlIHNvdXJjZSBmb3IgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbgogICAgICAgICAgICAgYXMgd2VsbCBhcyB0ZW1wbGF0ZXMgYW5kIHRvb2xzIHRoYXQgYWxsb3cgeW91IHRvIGdlbmVyYXRlIFBERiBhbmQgSFRNTAogICAgICAgICAgICAgdmVyc2lvbnMgb2YgdGhlIG1hbnVhbHMuCi0gICAgICAgICAgICBFYWNoIG1hbnVhbCBpcyBjb250YWluZWQgaW4gYSBzdWItZm9sZGVyLgotICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmaWxlcyBmb3IgdGhpcyBtYW51YWwgcmVzaWRlIGluCisgICAgICAgICAgICBFYWNoIG1hbnVhbCBpcyBjb250YWluZWQgaW4gaXRzIG93biBzdWItZm9sZGVyOworICAgICAgICAgICAgZm9yIGV4YW1wbGUsIHRoZSBmaWxlcyBmb3IgdGhpcyByZWZlcmVuY2UgbWFudWFsIHJlc2lkZSBpbgogICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5yZWYtbWFudWFsLzwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KQEAgLTExNCw5ICsxMTQsOSBAQAogICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPm1ldGEvPC9maWxlbmFtZT48L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgdGhlIE9wZW5FbWJlZGRlZC1Db3JlIG1ldGFkYXRhLgorICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgdGhlIG1pbmltYWwsIHVuZGVybHlpbmcgT3BlbkVtYmVkZGVkLUNvcmUgbWV0YWRhdGEuCiAgICAgICAgICAgICBUaGUgZGlyZWN0b3J5IGhvbGRzIHJlY2lwZXMsIGNvbW1vbiBjbGFzc2VzLCBhbmQgbWFjaGluZQotICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmb3IgZW11bGF0ZWQgdGFyZ2V0cyAoPGZpbGVuYW1lPnFlbXV4ODY8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZm9yIHN0cmljdGx5IGVtdWxhdGVkIHRhcmdldHMgKDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4sCiAgICAgICAgICAgICA8ZmlsZW5hbWU+cWVtdWFybTwvZmlsZW5hbWU+LCBhbmQgc28gZm9ydGguKQogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgpAQCAtMTI1LDggKzEyNSw4IEBACiAgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+bWV0YS1wb2t5LzwvZmlsZW5hbWU+PC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgUG9reQotICAgICAgICAgICAgcmVmZXJlbmNlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgIERlc2lnbmVkIGFib3ZlIHRoZSA8ZmlsZW5hbWU+bWV0YS88L2ZpbGVuYW1lPiBjb250ZW50LCB0aGlzIGRpcmVjdG9yeQorICAgICAgICAgICAgYWRkcyBqdXN0IGVub3VnaCBtZXRhZGF0YSB0byBkZWZpbmUgdGhlIFBva3kgcmVmZXJlbmNlIGRpc3RyaWJ1dGlvbi4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApAQCAtMTQ4LDkgKzE0OCw2IEBACiAgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBhZGRzIGFkZGl0aW9uYWwgcmVjaXBlcyBhbmQgYXBwZW5kIGZpbGVzCiAgICAgICAgICAgICB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgc2VsZnRlc3RzIHRvIHZlcmlmeSB0aGUgYmVoYXZpb3IKICAgICAgICAgICAgIG9mIHRoZSBidWlsZCBzeXN0ZW0uCi0gICAgICAgIDwvcGFyYT4KLQotICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFlvdSBkbyBub3QgaGF2ZSB0byBhZGQgdGhpcyBsYXllciB0byB5b3VyCiAgICAgICAgICAgICA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+IGZpbGUgdW5sZXNzIHlvdSB3YW50IHRvIHJ1biB0aGUKICAgICAgICAgICAgIHNlbGZ0ZXN0cy4KQEAgLTE3Miw3ICsxNjksNyBAQAogICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgdmFyaW91cyBpbnRlZ3JhdGlvbiBzY3JpcHRzIHRoYXQgaW1wbGVtZW50CiAgICAgICAgICAgICBleHRyYSBmdW5jdGlvbmFsaXR5IGluIHRoZSBZb2N0byBQcm9qZWN0IGVudmlyb25tZW50IChlLmcuIFFFTVUgc2NyaXB0cykuCiAgICAgICAgICAgICBUaGUgPGxpbmsgbGlua2VuZD0ic3RydWN0dXJlLWNvcmUtc2NyaXB0Ij48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgIHNjcmlwdCBhcHBlbmRzIHRoaXMgZGlyZWN0b3J5IHRvIHRoZSBzaGVsbCdzCisgICAgICAgICAgICBzY3JpcHQgcHJlcGVuZHMgdGhpcyBkaXJlY3RvcnkgdG8gdGhlIHNoZWxsJ3MKICAgICAgICAgICAgIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4gZW52aXJvbm1lbnQgdmFyaWFibGUuCiAgICAgICAgIDwvcGFyYT4KIApAQCAtMjAyLDcgKzE5OSw4IEBACiAgICAgICAgICAgICB1cCwgYQogICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+CiAgICAgICAgICAgICBpcyBjcmVhdGVkLCB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5IGJlY29tZXMgdGhlIEJ1aWxkIERpcmVjdG9yeSwKLSAgICAgICAgICAgIGFuZCB5b3UgYXJlIHByZXNlbnRlZCB3aXRoIGEgbGlzdCBvZiBjb21tb24gQml0QmFrZSB0YXJnZXRzLgorICAgICAgICAgICAgYW5kIHlvdSBhcmUgcHJlc2VudGVkIHdpdGggc29tZSBzaW1wbGUgc3VnZ2VzdGlvbnMgYXMgdG8gd2hhdCB0byBkbworICAgICAgICAgICAgbmV4dCwgaW5jbHVkaW5nIGEgbGlzdCBvZiBzb21lIHBvc3NpYmxlIHRhcmdldHMgdG8gYnVpbGQuCiAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52CkBAIC0yMTcsMTQgKzIxNSwxNCBAQAogICAgICAgICAgbWV0YS10b29sY2hhaW4KICAgICAgICAgIG1ldGEtaWRlLXN1cHBvcnQKIAotICAgICBZb3UgY2FuIGFsc28gcnVuIGdlbmVyYXRlZCBxZW11IGltYWdlcyB3aXRoIGEgY29tbWFuZCBsaWtlICdydW5xZW11IHFlbXV4ODYnCisgICAgIFlvdSBjYW4gYWxzbyBydW4gZ2VuZXJhdGVkIHFlbXUgaW1hZ2VzIHdpdGggYSBjb21tYW5kIGxpa2UgJ3J1bnFlbXUgcWVtdXg4Ni02NCcKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgIFRoZSBzY3JpcHQgZ2V0cyBpdHMgZGVmYXVsdCBsaXN0IG9mIGNvbW1vbiB0YXJnZXRzIGZyb20gdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi1ub3Rlcy50eHQ8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcyBmb3VuZCBpbiB0aGUKKyAgICAgICAgICAgIFRoZSBkZWZhdWx0IG91dHB1dCBvZiB0aGUgPGZpbGVuYW1lPm9lLWluaXQtYnVpbGQtZW52PC9maWxlbmFtZT4gc2NyaXB0CisgICAgICAgICAgICBpcyBmcm9tIHRoZSA8ZmlsZW5hbWU+Y29uZi1ub3Rlcy50eHQ8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcyBmb3VuZCBpbiB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3k8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgd2l0aGluIHRoZQogICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgICAgICBTaG91bGQgeW91IGhhdmUgY3VzdG9tIGRpc3RyaWJ1dGlvbnMsIGl0IGlzIHZlcnkgZWFzeSB0byBtb2RpZnkKLSAgICAgICAgICAgIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlIHRvIGluY2x1ZGUgeW91ciB0YXJnZXRzIGZvciB5b3VyCisgICAgICAgICAgICBJZiB5b3UgZGVzaWduIGEgY3VzdG9tIGRpc3RyaWJ1dGlvbiwgeW91IGNhbiBpbmNsdWRlIHlvdXIgb3duIHZlcnNpb24KKyAgICAgICAgICAgIG9mIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlIHRvIG1lbnRpb24gdGhlIHRhcmdldHMgZGVmaW5lZCBieSB5b3VyCiAgICAgICAgICAgICBkaXN0cmlidXRpb24uCiAgICAgICAgICAgICBTZWUgdGhlCiAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctYS1jdXN0b20tdGVtcGxhdGUtY29uZmlndXJhdGlvbi1kaXJlY3RvcnknPkNyZWF0aW5nIGEgQ3VzdG9tIFRlbXBsYXRlIENvbmZpZ3VyYXRpb24gRGlyZWN0b3J5PC91bGluaz4iCkBAIC0yMzQsMjAgKzIzMiwyMCBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgQnkgZGVmYXVsdCwgcnVubmluZyB0aGlzIHNjcmlwdCB3aXRob3V0IGEgQnVpbGQgRGlyZWN0b3J5Ci0gICAgICAgICAgICBhcmd1bWVudCBjcmVhdGVzIHRoZSA8ZmlsZW5hbWU+YnVpbGQ8L2ZpbGVuYW1lPiBkaXJlY3RvcnkKKyAgICAgICAgICAgIGFyZ3VtZW50IGNyZWF0ZXMgdGhlIDxmaWxlbmFtZT5idWlsZC88L2ZpbGVuYW1lPiBkaXJlY3RvcnkKICAgICAgICAgICAgIGluIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KICAgICAgICAgICAgIElmIHlvdSBwcm92aWRlIGEgQnVpbGQgRGlyZWN0b3J5IGFyZ3VtZW50IHdoZW4geW91CiAgICAgICAgICAgICA8ZmlsZW5hbWU+c291cmNlPC9maWxlbmFtZT4gdGhlIHNjcmlwdCwgeW91IGRpcmVjdCB0aGUgT3BlbkVtYmVkZGVkCiAgICAgICAgICAgICBidWlsZCBzeXN0ZW0gdG8gY3JlYXRlIGEgQnVpbGQgRGlyZWN0b3J5IG9mIHlvdXIgY2hvaWNlLgogICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBjcmVhdGVzIGEgQnVpbGQgRGlyZWN0b3J5IG5hbWVkCi0gICAgICAgICAgICA8ZmlsZW5hbWU+bXlidWlsZHM8L2ZpbGVuYW1lPiB0aGF0IGlzIG91dHNpZGUgb2YgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bXlidWlsZHMvPC9maWxlbmFtZT4gdGhhdCBpcyBvdXRzaWRlIG9mIHRoZQogICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz46CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgc291cmNlICZPRV9JTklUX0ZJTEU7IH4vbXlidWlsZHMKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHVzZXMgdGhlIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgIGZpbGVzLCB3aGljaCBhcmUgZm91bmQgYnkgZGVmYXVsdCBpbiB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZjwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZi88L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaW4gdGhlCiAgICAgICAgICAgICBTb3VyY2UgRGlyZWN0b3J5LgogICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLWEtY3VzdG9tLXRlbXBsYXRlLWNvbmZpZ3VyYXRpb24tZGlyZWN0b3J5Jz5DcmVhdGluZyBhIEN1c3RvbSBUZW1wbGF0ZSBDb25maWd1cmF0aW9uIERpcmVjdG9yeTwvdWxpbms+IgpAQCAtMjgwLDI4ICsyNzgsMjYgQEAKICAgICA8cGFyYT4KICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyB0aGUKICAgICAgICAgPGxpbmsgbGlua2VuZD0nYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L2xpbms+Ci0gICAgICAgIHdoZW4geW91IHJ1biB0aGUgYnVpbGQgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0cyAoaS5lLgotICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPikuCi0gICAgPC9wYXJhPgotCi0gICAgPHBhcmE+CisgICAgICAgIHdoZW4geW91IHJ1biB0aGUgYnVpbGQgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0CisgICAgICAgIDxsaW5rCitsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPi4KICAgICAgICAgSWYgeW91IGRvIG5vdCBnaXZlIHRoZSBCdWlsZCBEaXJlY3RvcnkgYSBzcGVjaWZpYyBuYW1lIHdoZW4geW91IHJ1bgotICAgICAgICBhIHNldHVwIHNjcmlwdCwgdGhlIG5hbWUgZGVmYXVsdHMgdG8gPGZpbGVuYW1lPmJ1aWxkPC9maWxlbmFtZT4uCisgICAgICAgIHRoZSBzZXR1cCBzY3JpcHQsIHRoZSBuYW1lIGRlZmF1bHRzIHRvIDxmaWxlbmFtZT5idWlsZC88L2ZpbGVuYW1lPi4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KLSAgICAgICAgVGhlCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UT1BESVInPjxmaWxlbmFtZT5UT1BESVI8L2ZpbGVuYW1lPjwvbGluaz4gdmFyaWFibGUKLSAgICAgICAgcG9pbnRzIHRvIHRoZSBCdWlsZCBEaXJlY3RvcnkuCisgICAgICAgIEZvciBzdWJzZXF1ZW50IHBhcnNpbmcgYW5kIHByb2Nlc3NpbmcsIHRoZSBuYW1lIG9mIHRoZSBCdWlsZAorICAgICAgICBkaXJlY3RvcnkgaXMgYXZhaWxhYmxlIHZpYSB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRPUERJUic+PGZpbGVuYW1lPlRPUERJUjwvZmlsZW5hbWU+PC9saW5rPiB2YXJpYWJsZS4KICAgICA8L3BhcmE+CiAKICAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLWJ1aWxkLWJ1aWxkaGlzdG9yeSc+Ci0gICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+YnVpbGQvYnVpbGRoaXN0b3J5PC9maWxlbmFtZT48L3RpdGxlPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmJ1aWxkL2J1aWxkaGlzdG9yeS88L2ZpbGVuYW1lPjwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBjcmVhdGVzIHRoaXMgZGlyZWN0b3J5IHdoZW4geW91Ci0gICAgICAgICAgICBlbmFibGUgdGhlIGJ1aWxkIGhpc3RvcnkgZmVhdHVyZS4KLSAgICAgICAgICAgIFRoZSBkaXJlY3RvcnkgdHJhY2tzIGJ1aWxkIGluZm9ybWF0aW9uIGludG8gaW1hZ2UsIHBhY2thZ2VzLCBhbmQKKyAgICAgICAgICAgIGVuYWJsZSBidWlsZCBoaXN0b3J5IHZpYSB0aGUgPGZpbGVuYW1lPmJ1aWxkaGlzdG9yeTwvZmlsZW5hbWU+IGNsYXNzIGZpbGUuCisgICAgICAgICAgICBUaGUgZGlyZWN0b3J5IG9yZ2FuaXplcyBidWlsZCBpbmZvcm1hdGlvbiBpbnRvIGltYWdlLCBwYWNrYWdlcywgYW5kCiAgICAgICAgICAgICBTREsgc3ViZGlyZWN0b3JpZXMuCiAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gdGhlIGJ1aWxkIGhpc3RvcnkgZmVhdHVyZSwgc2VlIHRoZQogICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I21haW50YWluaW5nLWJ1aWxkLW91dHB1dC1xdWFsaXR5Jz5NYWludGFpbmluZyBCdWlsZCBPdXRwdXQgUXVhbGl0eTwvdWxpbms+IgpAQCAtMzIwLDE0ICszMTYsMTQgQEAKICAgICAgICAgICAgIEFueSB2YXJpYWJsZSBzZXQgaGVyZSBvdmVycmlkZXMgYW55IHZhcmlhYmxlIHNldCBlbHNld2hlcmUgd2l0aGluCiAgICAgICAgICAgICB0aGUgZW52aXJvbm1lbnQgdW5sZXNzIHRoYXQgdmFyaWFibGUgaXMgaGFyZC1jb2RlZCB3aXRoaW4gYSBmaWxlCiAgICAgICAgICAgICAoZS5nLiBieSB1c2luZyAnPScgaW5zdGVhZCBvZiAnPz0nKS4KLSAgICAgICAgICAgIFNvbWUgdmFyaWFibGVzIGFyZSBoYXJkLWNvZGVkIGZvciB2YXJpb3VzIHJlYXNvbnMgYnV0IHRoZXNlCisgICAgICAgICAgICBTb21lIHZhcmlhYmxlcyBhcmUgaGFyZC1jb2RlZCBmb3IgdmFyaW91cyByZWFzb25zIGJ1dCBzdWNoCiAgICAgICAgICAgICB2YXJpYWJsZXMgYXJlIHJlbGF0aXZlbHkgcmFyZS4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgRWRpdCB0aGlzIGZpbGUgdG8gc2V0IHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz5NQUNISU5FPC9saW5rPjwvZmlsZW5hbWU+Ci0gICAgICAgICAgICBmb3Igd2hpY2ggeW91IHdhbnQgdG8gYnVpbGQsIHdoaWNoIHBhY2thZ2UgdHlwZXMgeW91IHdpc2ggdG8gdXNlCisgICAgICAgICAgICBBdCBhIG1pbmltdW0sIHlvdSB3b3VsZCBub3JtYWxseSBlZGl0IHRoaXMgZmlsZSB0byBzZWxlY3QgdGhlIHRhcmdldAorICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz5NQUNISU5FPC9saW5rPjwvZmlsZW5hbWU+LAorICAgICAgICAgICAgd2hpY2ggcGFja2FnZSB0eXBlcyB5b3Ugd2lzaCB0byB1c2UKICAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSd2YXItUEFDS0FHRV9DTEFTU0VTJz48ZmlsZW5hbWU+UEFDS0FHRV9DTEFTU0VTPC9maWxlbmFtZT48L2xpbms+KSwKICAgICAgICAgICAgIGFuZCB0aGUgbG9jYXRpb24gZnJvbSB3aGljaCB5b3Ugd2FudCB0byBhY2Nlc3MgZG93bmxvYWRlZCBmaWxlcwogICAgICAgICAgICAgKDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItRExfRElSJz5ETF9ESVI8L2xpbms+PC9maWxlbmFtZT4pLgpAQCAtMzM4LDE2ICszMzQsMTYgQEAKICAgICAgICAgICAgIHN0YXJ0IHRoZSBidWlsZCwgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyBpdCBmcm9tCiAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZi5zYW1wbGU8L2ZpbGVuYW1lPiB3aGVuCiAgICAgICAgICAgICB5b3UgPGZpbGVuYW1lPnNvdXJjZTwvZmlsZW5hbWU+IHRoZSB0b3AtbGV2ZWwgYnVpbGQgZW52aXJvbm1lbnQKLSAgICAgICAgICAgIHNldHVwIHNjcmlwdCAoaS5lLgotICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4pLgorICAgICAgICAgICAgc2V0dXAgc2NyaXB0CisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdzdHJ1Y3R1cmUtY29yZS1zY3JpcHQnPjxmaWxlbmFtZT4mT0VfSU5JVF9GSUxFOzwvZmlsZW5hbWU+PC9saW5rPi4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVGhlIHNvdXJjZSA8ZmlsZW5hbWU+bG9jYWwuY29uZi5zYW1wbGU8L2ZpbGVuYW1lPiBmaWxlIHVzZWQKICAgICAgICAgICAgIGRlcGVuZHMgb24gdGhlIDxmaWxlbmFtZT4kVEVNUExBVEVDT05GPC9maWxlbmFtZT4gc2NyaXB0IHZhcmlhYmxlLAotICAgICAgICAgICAgd2hpY2ggZGVmYXVsdHMgdG8gPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgIHdoaWNoIGRlZmF1bHRzIHRvIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZi88L2ZpbGVuYW1lPgogICAgICAgICAgICAgd2hlbiB5b3UgYXJlIGJ1aWxkaW5nIGZyb20gdGhlIFlvY3RvIFByb2plY3QgZGV2ZWxvcG1lbnQKLSAgICAgICAgICAgIGVudmlyb25tZW50IGFuZCBkZWZhdWx0cyB0byA8ZmlsZW5hbWU+bWV0YS9jb25mPC9maWxlbmFtZT4gd2hlbgorICAgICAgICAgICAgZW52aXJvbm1lbnQsIGFuZCB0byA8ZmlsZW5hbWU+bWV0YS9jb25mLzwvZmlsZW5hbWU+IHdoZW4KICAgICAgICAgICAgIHlvdSBhcmUgYnVpbGRpbmcgZnJvbSB0aGUgT3BlbkVtYmVkZGVkLUNvcmUgZW52aXJvbm1lbnQuCiAgICAgICAgICAgICBCZWNhdXNlIHRoZSBzY3JpcHQgdmFyaWFibGUgcG9pbnRzIHRvIHRoZSBzb3VyY2Ugb2YgdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZi5zYW1wbGU8L2ZpbGVuYW1lPiBmaWxlLCB0aGlzIGltcGxpZXMgdGhhdApAQCAtMzk1LDExICszOTEsMTIgQEAKICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhlIHNvdXJjZSA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZi5zYW1wbGU8L2ZpbGVuYW1lPiBmaWxlIHVzZWQKKyAgICAgICAgICAgIEFzIHdpdGggdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZSwKKyAgICAgICAgICAgIHRoZSBzb3VyY2UgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gZmlsZSB1c2VkCiAgICAgICAgICAgICBkZXBlbmRzIG9uIHRoZSA8ZmlsZW5hbWU+JFRFTVBMQVRFQ09ORjwvZmlsZW5hbWU+IHNjcmlwdCB2YXJpYWJsZSwKLSAgICAgICAgICAgIHdoaWNoIGRlZmF1bHRzIHRvIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICB3aGljaCBkZWZhdWx0cyB0byA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmYvPC9maWxlbmFtZT4KICAgICAgICAgICAgIHdoZW4geW91IGFyZSBidWlsZGluZyBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50Ci0gICAgICAgICAgICBlbnZpcm9ubWVudCBhbmQgZGVmYXVsdHMgdG8gPGZpbGVuYW1lPm1ldGEvY29uZjwvZmlsZW5hbWU+IHdoZW4KKyAgICAgICAgICAgIGVudmlyb25tZW50LCBhbmQgdG8gPGZpbGVuYW1lPm1ldGEvY29uZi88L2ZpbGVuYW1lPiB3aGVuCiAgICAgICAgICAgICB5b3UgYXJlIGJ1aWxkaW5nIGZyb20gdGhlIE9wZW5FbWJlZGRlZC1Db3JlIGVudmlyb25tZW50LgogICAgICAgICAgICAgQmVjYXVzZSB0aGUgc2NyaXB0IHZhcmlhYmxlIHBvaW50cyB0byB0aGUgc291cmNlIG9mIHRoZQogICAgICAgICAgICAgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gZmlsZSwgdGhpcyBpbXBsaWVzIHRoYXQKQEAgLTQxOCwxMyArNDE1LDEzIEBACiAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgWW91IGNhbiBmaW5kIHRoZSBZb2N0byBQcm9qZWN0IHZlcnNpb24gb2YgdGhlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmY8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mLzwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIAogICAgIDxzZWN0aW9uIGlkPSdzdHJ1Y3R1cmUtYnVpbGQtY29uZi1zYW5pdHlfaW5mbyc+Ci0gICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+YnVpbGQvY29uZi9zYW5pdHlfaW5mbzwvZmlsZW5hbWU+PC90aXRsZT4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5idWlsZC9jYWNoZS9zYW5pdHlfaW5mbzwvZmlsZW5hbWU+PC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoaXMgZmlsZSBpbmRpY2F0ZXMgdGhlIHN0YXRlIG9mIHRoZSBzYW5pdHkgY2hlY2tzIGFuZCBpcyBjcmVhdGVkCkBAIC01NzIsOCArNTY5LDExIEBACiAgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+YnVpbGQvdG1wL2RlcGxveS9pbWFnZXMvPC9maWxlbmFtZT48L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgcmVjZWl2ZXMgY29tcGxldGUgZmlsZXN5c3RlbSBpbWFnZXMuCi0gICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBmbGFzaCB0aGUgcmVzdWx0aW5nIGltYWdlIGZyb20gYSBidWlsZCBvbnRvIGEgZGV2aWNlLCBsb29rIGhlcmUgZm9yIHRoZSBpbWFnZS4KKyAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGlzIHBvcHVsYXRlZCB3aXRoIHRoZSBiYXNpYyBvdXRwdXQgb2JqZWN0cyBvZiB0aGUKKyAgICAgICAgICAgIGJ1aWxkICh0aGluayBvZiB0aGVtIGFzIHRoZSAiZ2VuZXJhdGVkIGFydGlmYWN0cyIgb2YgdGhlIGJ1aWxkIHByb2Nlc3MpLAorICAgICAgICAgICAgaW5jbHVkaW5nIHRoaW5ncyBsaWtlIHRoZSBib290IGxvYWRlciBpbWFnZSwga2VybmVsLCByb290IGZpbGVzeXN0ZW0gYW5kIG1vcmUuCisgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBmbGFzaCB0aGUgcmVzdWx0aW5nIGltYWdlIGZyb20gYSBidWlsZCBvbnRvIGEgZGV2aWNlLAorICAgICAgICAgICAgbG9vayBoZXJlIGZvciB0aGUgbmVjZXNzYXJ5IGNvbXBvbmVudHMuCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KQEAgLTYwNCw3ICs2MDQsNyBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyB0aGlzIGRpcmVjdG9yeSB0byBob2xkCi0gICAgICAgICAgICB0b29sY2hhaW4gaW5zdGFsbGVyIHNjcmlwdHMsIHdoaWNoIHdoZW4gZXhlY3V0ZWQsIGluc3RhbGwgdGhlCisgICAgICAgICAgICB0b29sY2hhaW4gaW5zdGFsbGVyIHNjcmlwdHMgd2hpY2gsIHdoZW4gZXhlY3V0ZWQsIGluc3RhbGwgdGhlCiAgICAgICAgICAgICBzeXNyb290IHRoYXQgbWF0Y2hlcyB5b3VyIHRhcmdldCBoYXJkd2FyZS4KICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBvdXQgbW9yZSBhYm91dCB0aGVzZSBpbnN0YWxsZXJzIGluIHRoZQogICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1NES19VUkw7I3Nkay1idWlsZGluZy1hbi1zZGstaW5zdGFsbGVyJz5CdWlsZGluZyBhbiBTREsgSW5zdGFsbGVyPC91bGluaz4iCkBAIC0xMDM4LDcgKzEwMzgsNyBAQAogICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1ncmFwaGljcy88L2ZpbGVuYW1lPjwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBYIGFuZCBvdGhlciBncmFwaGljYWxseSByZWxhdGVkIHN5c3RlbSBsaWJyYXJpZXMKKyAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIFggYW5kIG90aGVyIGdyYXBoaWNhbGx5IHJlbGF0ZWQgc3lzdGVtIGxpYnJhcmllcy4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIApkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN5c3RlbS1yZXF1aXJlbWVudHMueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN5c3RlbS1yZXF1aXJlbWVudHMueG1sCmluZGV4IDljMjE5OGEuLjdkM2M3MTkgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zeXN0ZW0tcmVxdWlyZW1lbnRzLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3lzdGVtLXJlcXVpcmVtZW50cy54bWwKQEAgLTgsMTIgKzgsMTIgQEAKICAgICA8cGFyYT4KICAgICAgICAgV2VsY29tZSB0byB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsIQogICAgICAgICBUaGlzIG1hbnVhbCBwcm92aWRlcyByZWZlcmVuY2UgaW5mb3JtYXRpb24gZm9yIHRoZSBjdXJyZW50IHJlbGVhc2UKLSAgICAgICAgb2YgdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgIFRoZSBtYW51YWwgaXMgYmVzdCB1c2VkIGFmdGVyIHlvdSBoYXZlIGFuIHVuZGVyc3RhbmRpbmcKKyAgICAgICAgb2YgdGhlIFlvY3RvIFByb2plY3QsIGFuZAorICAgICAgICBpcyBtb3N0IGVmZmVjdGl2ZWx5IHVzZWQgYWZ0ZXIgeW91IGhhdmUgYW4gdW5kZXJzdGFuZGluZwogICAgICAgICBvZiB0aGUgYmFzaWNzIG9mIHRoZSBZb2N0byBQcm9qZWN0LgogICAgICAgICBUaGUgbWFudWFsIGlzIG5laXRoZXIgbWVhbnQgdG8gYmUgcmVhZCBhcyBhIHN0YXJ0aW5nIHBvaW50IHRvIHRoZQotICAgICAgICBZb2N0byBQcm9qZWN0IG5vciByZWFkIGZyb20gc3RhcnQgdG8gZmluaXNoLgotICAgICAgICBVc2UgdGhpcyBtYW51YWwgdG8gZmluZCB2YXJpYWJsZSBkZWZpbml0aW9ucywgY2xhc3MKKyAgICAgICAgWW9jdG8gUHJvamVjdCwgbm9yIHJlYWQgZnJvbSBzdGFydCB0byBmaW5pc2guCisgICAgICAgIFJhdGhlciwgdXNlIHRoaXMgbWFudWFsIHRvIGZpbmQgdmFyaWFibGUgZGVmaW5pdGlvbnMsIGNsYXNzCiAgICAgICAgIGRlc2NyaXB0aW9ucywgYW5kIHNvIGZvcnRoIGFzIG5lZWRlZCBkdXJpbmcgdGhlIGNvdXJzZSBvZiB1c2luZwogICAgICAgICB0aGUgWW9jdG8gUHJvamVjdC4KICAgICA8L3BhcmE+CkBAIC02NiwxMiArNjYsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGJlbG93LgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaW5kb3dzX1N1YnN5c3RlbV9mb3JfTGludXgnPldpbmRvd3MgU3Vic3lzdGVtIGZvciBMaW51eDwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAoV1NMKS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgdXNlIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2hhcmR3YXJlLWJ1aWxkLXN5c3RlbS10ZXJtJz5idWlsZCBob3N0PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBpcyBydW5uaW5nIFdTTC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtYXkgdXNlIFdpbmRvd3MgU3Vic3lzdGVtIEZvciBMaW51eCB2MiB0byBzZXQgdXAgYSBidWlsZAorICAgICAgICAgICAgICAgICAgICAgICAgaG9zdCB1c2luZyBXaW5kb3dzIDEwLCBidXQgdmFsaWRhdGlvbiBpcyBub3QgcGVyZm9ybWVkCisgICAgICAgICAgICAgICAgICAgICAgICBhZ2FpbnN0IGJ1aWxkIGhvc3RzIHVzaW5nIFdTTHYyLgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggV1NMdjEsIGl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgYnV0IG5vdCBvZmZpY2lhbGx5IHN1cHBvcnRlZCBub3IgdmFsaWRhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggV1NMdjIsIGlmIHlvdSBzdGlsbCBkZWNpZGUgdG8gdXNlIFdTTCBwbGVhc2UgdXBncmFkZQorICAgICAgICAgICAgICAgICAgICAgICAgICB0byBXU0x2Mi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZW5jb3VudGVyIHByb2JsZW1zLCBwbGVhc2UgZ28gdG8KQEAgLTExNyw3ICsxMjAsNyBAQAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZSBsaXN0IG9mIHBhY2thZ2VzIHlvdSBuZWVkIG9uIHRoZSBob3N0IGRldmVsb3BtZW50IHN5c3RlbSBjYW4KICAgICAgICAgICAgIGJlIGxhcmdlIHdoZW4gY292ZXJpbmcgYWxsIGJ1aWxkIHNjZW5hcmlvcyB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyByZXF1aXJlZCBwYWNrYWdlcyBhY2NvcmRpbmcgdG8KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgcmVxdWlyZWQgcGFja2FnZXMgYWNjb3JkaW5nIHRvCiAgICAgICAgICAgICBMaW51eCBkaXN0cmlidXRpb24gYW5kIGZ1bmN0aW9uLgogICAgICAgICA8L3BhcmE+CiAKQEAgLTEyNywxOSArMTMwLDI5IEBACiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgc2hvd3MgdGhlIHJlcXVpcmVkIHBhY2thZ2VzIGJ5IGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgZ2l2ZW4gYSBzdXBwb3J0ZWQgVWJ1bnR1IG9yIERlYmlhbiBMaW51eCBkaXN0cmlidXRpb246Ci0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIElmIHlvdXIgYnVpbGQgc3lzdGVtIGhhcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm9zczQtZGV2PC9maWxlbmFtZT4gcGFja2FnZSBpbnN0YWxsZWQsIHlvdQotICAgICAgICAgICAgICAgICAgICBtaWdodCBleHBlcmllbmNlIFFFTVUgYnVpbGQgZmFpbHVyZXMgZHVlIHRvIHRoZSBwYWNrYWdlCi0gICAgICAgICAgICAgICAgICAgIGluc3RhbGxpbmcgaXRzIG93biBjdXN0b20KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvaW5jbHVkZS9saW51eC9zb3VuZGNhcmQuaDwvZmlsZW5hbWU+IG9uCi0gICAgICAgICAgICAgICAgICAgIHRoZSBEZWJpYW4gc3lzdGVtLgotICAgICAgICAgICAgICAgICAgICBJZiB5b3UgcnVuIGludG8gdGhpcyBzaXR1YXRpb24sIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nCi0gICAgICAgICAgICAgICAgICAgIHNvbHV0aW9ucyBleGlzdDoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBidWlsZCBzeXN0ZW0gaGFzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vc3M0LWRldjwvZmlsZW5hbWU+IHBhY2thZ2UgaW5zdGFsbGVkLCB5b3UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWdodCBleHBlcmllbmNlIFFFTVUgYnVpbGQgZmFpbHVyZXMgZHVlIHRvIHRoZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGluZyBpdHMgb3duIGN1c3RvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2luY2x1ZGUvbGludXgvc291bmRjYXJkLmg8L2ZpbGVuYW1lPiBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBEZWJpYW4gc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBydW4gaW50byB0aGlzIHNpdHVhdGlvbiwgZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2x1dGlvbnMgZXhpc3Q6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHN1ZG8gYXB0LWdldCBidWlsZC1kZXAgcWVtdQogICAgICAkIHN1ZG8gYXB0LWdldCByZW1vdmUgb3NzNC1kZXYKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBEZWJpYW4tOCwgPGZpbGVuYW1lPnB5dGhvbjMtZ2l0PC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5weWxpbnQzPC9maWxlbmFtZT4gYXJlIG5vIGxvbmdlciBhdmFpbGFibGUgdmlhIDxmaWxlbmFtZT5hcHQtZ2V0PC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHN1ZG8gcGlwMyBpbnN0YWxsIEdpdFB5dGhvbiBweWxpbnQ9PTEuOS41CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Fc3NlbnRpYWxzOjwvZW1waGFzaXM+CkBAIC0yMDUsMTggKzIxOCwxOCBAQAogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CiAKLSAgICAgICAgPHNlY3Rpb24gaWQ9J2NlbnRvcy1wYWNrYWdlcyc+Ci0gICAgICAgICAgICA8dGl0bGU+Q2VudE9TIFBhY2thZ2VzPC90aXRsZT4KKyAgICAgICAgPHNlY3Rpb24gaWQ9J2NlbnRvcy03LXBhY2thZ2VzJz4KKyAgICAgICAgICAgIDx0aXRsZT5DZW50T1MtNyBQYWNrYWdlczwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB0aGUgcmVxdWlyZWQgcGFja2FnZXMgYnkgZnVuY3Rpb24KLSAgICAgICAgICAgICAgICBnaXZlbiBhIHN1cHBvcnRlZCBDZW50T1MgTGludXggZGlzdHJpYnV0aW9uOgorICAgICAgICAgICAgICAgIGdpdmVuIGEgc3VwcG9ydGVkIENlbnRPUy03IExpbnV4IGRpc3RyaWJ1dGlvbjoKICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkVzc2VudGlhbHM6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCB0byBidWlsZCBhbiBpbWFnZSBmb3IgYSBoZWFkbGVzcwogICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtOgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHN1ZG8geXVtIGluc3RhbGwgJkNFTlRPU19IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTDsKKyAgICAgJCBzdWRvIHl1bSBpbnN0YWxsICZDRU5UT1M3X0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMOwogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgpAQCAtMjI5LDI5ICsyNDIsODEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbnV4IGJ5IGRlZmF1bHQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBpbnN0YWxsIHRoZXNlIHBhY2thZ2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0ZWx5LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPm1ha2VjYWNoZTwvZmlsZW5hbWU+IGNvbW1hbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVzIGFkZGl0aW9uYWwgTWV0YWRhdGEgZnJvbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmVwZWwtcmVsZWFzZTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkRvY3VtZW50YXRpb246PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCBpZiB5b3UgYXJlIGdvaW5nIHRvIGJ1aWxkIG91dCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYW51YWxzOgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHN1ZG8geXVtIGluc3RhbGwgZG9jYm9vay1zdHlsZS1kc3NzbCBkb2Nib29rLXN0eWxlLXhzbCBcCiAgICAgIGRvY2Jvb2stZHRkcyBkb2Nib29rLXV0aWxzIGZvcCBsaWJ4c2x0IGRibGF0ZXggeG1sdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nY2VudG9zLTgtcGFja2FnZXMnPgorICAgICAgICAgICAgPHRpdGxlPkNlbnRPUy04IFBhY2thZ2VzPC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHRoZSByZXF1aXJlZCBwYWNrYWdlcyBieSBmdW5jdGlvbgorICAgICAgICAgICAgICAgIGdpdmVuIGEgc3VwcG9ydGVkIENlbnRPUy04IExpbnV4IGRpc3RyaWJ1dGlvbjoKKyAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkVzc2VudGlhbHM6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCB0byBidWlsZCBhbiBpbWFnZSBmb3IgYSBoZWFkbGVzcworICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHN1ZG8gZG5mIGluc3RhbGwgJkNFTlRPUzhfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUw7CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4dHJhIFBhY2thZ2VzIGZvciBFbnRlcnByaXNlIExpbnV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+ZXBlbC1yZWxlYXNlPC9maWxlbmFtZT4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBhIGNvbGxlY3Rpb24gb2YgcGFja2FnZXMgZnJvbSBGZWRvcmEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0IG9uIFJIRUwvQ2VudE9TIGZvciBlYXN5IGluc3RhbGxhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgcGFja2FnZXMgbm90IGluY2x1ZGVkIGluIGVudGVycHJpc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbnV4IGJ5IGRlZmF1bHQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBpbnN0YWxsIHRoZXNlIHBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0ZWx5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5Qb3dlclRvb2xzPC9maWxlbmFtZT4gcmVwbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMgYWRkaXRpb25hbCBwYWNrYWdlcyBzdWNoIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cnBjZ2VuPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGV4aW5mbzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tYWtlY2FjaGU8L2ZpbGVuYW1lPiBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1lcyBhZGRpdGlvbmFsIE1ldGFkYXRhIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5lcGVsLXJlbGVhc2U8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPkRvY3VtZW50YXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VzIG5lZWRlZCBpZiB5b3UgYXJlIGdvaW5nIHRvIGJ1aWxkIG91dCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYW51YWxzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIHN1ZG8gZG5mIGluc3RhbGwgZG9jYm9vay1zdHlsZS1kc3NzbCBkb2Nib29rLXN0eWxlLXhzbCBcCisgICAgIGRvY2Jvb2stZHRkcyBkb2Nib29rLXV0aWxzIGZvcCBsaWJ4c2x0IGRibGF0ZXggeG1sdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvc2VjdGlvbj4KICAgICA8L3NlY3Rpb24+CiAKLSAgICA8c2VjdGlvbiBpZD0ncmVxdWlyZWQtZ2l0LXRhci1hbmQtcHl0aG9uLXZlcnNpb25zJz4KLSAgICAgICAgPHRpdGxlPlJlcXVpcmVkIEdpdCwgdGFyLCBhbmQgUHl0aG9uIFZlcnNpb25zPC90aXRsZT4KKyAgICA8c2VjdGlvbiBpZD0ncmVxdWlyZWQtZ2l0LXRhci1weXRob24tYW5kLWdjYy12ZXJzaW9ucyc+CisgICAgICAgIDx0aXRsZT5SZXF1aXJlZCBHaXQsIHRhciwgUHl0aG9uIGFuZCBnY2MgVmVyc2lvbnM8L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgSW4gb3JkZXIgdG8gdXNlIHRoZSBidWlsZCBzeXN0ZW0sIHlvdXIgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0KQEAgLTI1OSw4ICszMjQsOCBAQAogICAgICAgICAgICAgUHl0aG9uOgogICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+R2l0IDEuOC4zLjEgb3IgZ3JlYXRlcjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT50YXIgMS4yNyBvciBncmVhdGVyPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlB5dGhvbiAzLjQuMCBvciBncmVhdGVyPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPnRhciAxLjI4IG9yIGdyZWF0ZXI8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UHl0aG9uIDMuNS4wIG9yIGdyZWF0ZXI8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICA8L3BhcmE+CiAKQEAgLTI3Miw2ICszMzcsODkgQEAKICAgICAgICAgICAgIHRhcmJhbGwgb3IgdXNlIEJpdEJha2UgdG8gYnVpbGQgdGhlIHRhcmJhbGwuCiAgICAgICAgIDwvcGFyYT4KIAorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIGFkZGl0aW9uLCB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtIG11c3QgbWVldCB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICB2ZXJzaW9uIHJlcXVpcmVtZW50IGZvciBnY2M6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5nY2MgNS4wIG9yIGdyZWF0ZXI8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtIGRvZXMgbm90IG1lZXQgdGhpcyByZXF1aXJlbWVudCwKKyAgICAgICAgICAgIHlvdSBjYW4gcmVzb2x2ZSB0aGlzIGJ5IGluc3RhbGxpbmcgYSA8ZmlsZW5hbWU+YnVpbGR0b29scy1leHRlbmRlZDwvZmlsZW5hbWU+CisgICAgICAgICAgICB0YXJiYWxsIHRoYXQgY29udGFpbnMgYWRkaXRpb25hbCB0b29scywgdGhlIGVxdWl2YWxlbnQgb2YgPGZpbGVuYW1lPmJ1aWxkdG9vbHMtZXNzZW50aWFsPC9maWxlbmFtZT4uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHNlY3Rpb24gaWQ9J2luc3RhbGxpbmctYS1wcmUtYnVpbHQtYnVpbGR0b29scy10YXJiYWxsLXdpdGgtaW5zdGFsbC1idWlsZHRvb2xzLXNjcmlwdCc+CisgICAgICAgICAgICA8dGl0bGU+SW5zdGFsbGluZyBhIFByZS1CdWlsdCA8ZmlsZW5hbWU+YnVpbGR0b29sczwvZmlsZW5hbWU+IFRhcmJhbGwgd2l0aCA8ZmlsZW5hbWU+aW5zdGFsbC1idWlsZHRvb2xzPC9maWxlbmFtZT4gc2NyaXB0PC90aXRsZT4KKworICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5pbnN0YWxsLWJ1aWxkdG9vbHM8L2ZpbGVuYW1lPiBzY3JpcHQgaXMgdGhlIGVhc2llc3QKKyAgICAgICAgICAgICAgICBvZiB0aGUgdGhyZWUgbWV0aG9kcyBieSB3aGljaCB5b3UgY2FuIGdldCB0aGVzZSB0b29scy4gSXQgZG93bmxvYWRzCisgICAgICAgICAgICAgICAgYSBwcmUtYnVpbHQgYnVpbGR0b29scyBpbnN0YWxsZXIgYW5kIGF1dG9tYXRpY2FsbHkgaW5zdGFsbHMgdGhlIHRvb2xzCisgICAgICAgICAgICAgICAgZm9yIHlvdToKKyAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGUgdGhlIDxmaWxlbmFtZT5pbnN0YWxsLWJ1aWxkdG9vbHM8L2ZpbGVuYW1lPiBzY3JpcHQuCisgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIHBva3kKKyAgICAgJCBzY3JpcHRzL2luc3RhbGwtYnVpbGR0b29scyAtLXdpdGhvdXQtZXh0ZW5kZWQtYnVpbGR0b29scyBcCisgICAgICAgLS1iYXNlLXVybCAmWU9DVE9fRExfVVJMOy9yZWxlYXNlcy95b2N0byBcCisgICAgICAgLS1yZWxlYXNlIHlvY3RvLSZESVNUUk87IFwKKyAgICAgICAtLWluc3RhbGxlci12ZXJzaW9uICZESVNUUk87CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBEdXJpbmcgZXhlY3V0aW9uLCB0aGUgYnVpbGR0b29scyB0YXJiYWxsIHdpbGwgYmUgZG93bmxvYWRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjaGVja3N1bSBvZiB0aGUgZG93bmxvYWQgd2lsbCBiZSB2ZXJpZmllZCwgdGhlIGluc3RhbGxlcgorICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBydW4gZm9yIHlvdSwgYW5kIHNvbWUgYmFzaWMgY2hlY2tzIHdpbGwgYmUgcnVuIHRvCisgICAgICAgICAgICAgICAgICAgICAgICB0byBtYWtlIHN1cmUgdGhlIGluc3RhbGxhdGlvbiBpcyBmdW5jdGlvbmFsLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVG8gYXZvaWQgdGhlIG5lZWQgb2YgPGZpbGVuYW1lPnN1ZG88L2ZpbGVuYW1lPiBwcml2aWxlZ2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5pbnN0YWxsLWJ1aWxkdG9vbHM8L2ZpbGVuYW1lPiBzY3JpcHQgd2lsbAorICAgICAgICAgICAgICAgICAgICAgICAgYnkgZGVmYXVsdCB0ZWxsIHRoZSBpbnN0YWxsZXIgdG8gaW5zdGFsbCBpbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPHJlcGxhY2VhYmxlPi9wYXRoL3RvLzwvcmVwbGFjZWFibGU+cG9reS9idWlsZHRvb2xzCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtIG5lZWRzIHRoZSBhZGRpdGlvbmFsIHRvb2xzCisgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlZCBpbiB0aGUgPGZpbGVuYW1lPmJ1aWxkdG9vbHMtZXh0ZW5kZWQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgdGFyYmFsbCwgeW91IGNhbiBpbnN0ZWFkIGV4ZWN1dGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+aW5zdGFsbC1idWlsZHRvb2xzPC9maWxlbmFtZT4gc2NyaXB0IHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IHBhcmFtZXRlcnM6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgY2QgcG9reQorICAgICAkIHNjcmlwdHMvaW5zdGFsbC1idWlsZHRvb2xzCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNvdXJjZSB0aGUgdG9vbHMgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IGJ5IHVzaW5nIGEKKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBsaWtlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzb3VyY2UgPHJlcGxhY2VhYmxlPi9wYXRoL3RvLzwvcmVwbGFjZWFibGU+cG9reS9idWlsZHRvb2xzL2Vudmlyb25tZW50LXNldHVwLXg4Nl82NC1wb2t5c2RrLWxpbnV4CisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgT2YgY291cnNlLCB5b3UgbmVlZCB0byBzdXBwbHkgeW91ciBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IGFuZCBiZQorICAgICAgICAgICAgICAgICAgICBzdXJlIHRvIHVzZSB0aGUgcmlnaHQgZmlsZSAoaS5lLiBpNTg2IG9yIHg4Nl82NCkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBZnRlciB5b3UgaGF2ZSBzb3VyY2VkIHRoZSBzZXR1cCBzY3JpcHQsCisgICAgICAgICAgICAgICAgICAgIHRoZSB0b29scyBhcmUgYWRkZWQgdG8gPGZpbGVuYW1lPlBBVEg8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBhbmQgYW55IG90aGVyIGVudmlyb25tZW50IHZhcmlhYmxlcyByZXF1aXJlZCB0byBydW4gdGhlCisgICAgICAgICAgICAgICAgICAgIHRvb2xzIGFyZSBpbml0aWFsaXplZC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdHMgYXJlIHdvcmtpbmcgdmVyc2lvbnMgdmVyc2lvbnMgb2YgR2l0LCB0YXIsCisgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBhbmQgPGZpbGVuYW1lPmNocnBhdGg8L2ZpbGVuYW1lPi4gQW5kIGluIHRoZSBjYXNlIG9mCisgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+YnVpbGR0b29scy1leHRlbmRlZDwvZmlsZW5hbWU+IHRhcmJhbGwsIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgd29ya2luZyB2ZXJzaW9ucyBvZiB0b29scyBpbmNsdWRpbmcgPGZpbGVuYW1lPmdjYzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGFuZCB0aGUgb3RoZXIgdG9vbHMgaW5jbHVkZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jb3JlLWJ1aWxkZXNzZW50aWFsPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKICAgICAgICAgPHNlY3Rpb24gaWQ9J2Rvd25sb2FkaW5nLWEtcHJlLWJ1aWx0LWJ1aWxkdG9vbHMtdGFyYmFsbCc+CiAgICAgICAgICAgICA8dGl0bGU+RG93bmxvYWRpbmcgYSBQcmUtQnVpbHQgPGZpbGVuYW1lPmJ1aWxkdG9vbHM8L2ZpbGVuYW1lPiBUYXJiYWxsPC90aXRsZT4KIApAQCAtMjgxLDE0ICs0MjksMTggQEAKICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0ZSBhbmQgZG93bmxvYWQgdGhlIDxmaWxlbmFtZT4qLnNoPC9maWxlbmFtZT4gYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ETF9VUkw7L3JlbGVhc2VzL3lvY3RvL3lvY3RvLSZESVNUUk87L2J1aWxkdG9vbHMvJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19SRUxFQVNFX0RMX1VSTDsvYnVpbGR0b29scy8nPjwvdWxpbms+LgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGUgdGhlIGluc3RhbGxhdGlvbiBzY3JpcHQuCi0gICAgICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgZm9yIHRoZSB0cmFkaXRpb25hbCBpbnN0YWxsZXI6CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgc2ggfi9Eb3dubG9hZHMveDg2XzY0LWJ1aWxkdG9vbHMtbmF0aXZlc2RrLXN0YW5kYWxvbmUtJkRJU1RSTzsuc2gKICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBmb3IgdGhlIGV4dGVuZGVkIGluc3RhbGxlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzaCB+L0Rvd25sb2Fkcy94ODZfNjQtYnVpbGR0b29scy1leHRlbmRlZC1uYXRpdmVzZGstc3RhbmRhbG9uZS0mRElTVFJPOy5zaAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgRHVyaW5nIGV4ZWN1dGlvbiwgYSBwcm9tcHQgYXBwZWFycyB0aGF0IGFsbG93cyB5b3UgdG8KICAgICAgICAgICAgICAgICAgICAgICAgIGNob29zZSB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeS4KICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY291bGQgY2hvb3NlIHRoZSBmb2xsb3dpbmc6CkBAIC0zMTEsNyArNDYzLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYW55IG90aGVyIGVudmlyb25tZW50IHZhcmlhYmxlcyByZXF1aXJlZCB0byBydW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICB0b29scyBhcmUgaW5pdGlhbGl6ZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0cyBhcmUgd29ya2luZyB2ZXJzaW9ucyB2ZXJzaW9ucyBvZiBHaXQsIHRhciwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBhbmQgPGZpbGVuYW1lPmNocnBhdGg8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBhbmQgPGZpbGVuYW1lPmNocnBhdGg8L2ZpbGVuYW1lPi4gQW5kIGluIHRoZSBjYXNlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmJ1aWxkdG9vbHMtZXh0ZW5kZWQ8L2ZpbGVuYW1lPiB0YXJiYWxsLCBhZGRpdGlvbmFsCisgICAgICAgICAgICAgICAgICAgICAgICB3b3JraW5nIHZlcnNpb25zIG9mIHRvb2xzIGluY2x1ZGluZyA8ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGFuZCB0aGUgb3RoZXIgdG9vbHMgaW5jbHVkZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlZ3JvdXAtY29yZS1idWlsZGVzc2VudGlhbDwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTMyNyw3ICs0ODMsNyBAQAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uc2g8L2ZpbGVuYW1lPiBmaWxlIGFuZCB0aGVuCiAgICAgICAgICAgICAgICAgdGFrZSBzdGVwcyB0byB0cmFuc2ZlciBhbmQgcnVuIGl0IG9uIGEKICAgICAgICAgICAgICAgICBtYWNoaW5lIHRoYXQgZG9lcyBub3QgbWVldCB0aGUgbWluaW1hbCBHaXQsIHRhciwgYW5kIFB5dGhvbgotICAgICAgICAgICAgICAgIHJlcXVpcmVtZW50cy4KKyAgICAgICAgICAgICAgICAob3IgZ2NjKSByZXF1aXJlbWVudHMuCiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgpAQCAtMzQ1LDYgKzUwMSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGJpdGJha2UgYnVpbGR0b29scy10YXJiYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBvciBydW4gdGhlIEJpdEJha2UgY29tbWFuZCB0byBidWlsZCB0aGUgZXh0ZW5kZWQgdGFyYmFsbDoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAkIGJpdGJha2UgYnVpbGR0b29scy1leHRlbmRlZC10YXJiYWxsCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZQogICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVNES01BQ0hJTkUnPjxmaWxlbmFtZT5TREtNQUNISU5FPC9maWxlbmFtZT48L2xpbms+CkBAIC0zNTgsMjEgKzUxOCwyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcnkgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPi4KICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGluc3RhbGxlciBmaWxlIGhhcyB0aGUgc3RyaW5nICJidWlsZHRvb2xzIgotICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgbmFtZS4KKyAgICAgICAgICAgICAgICAgICAgICAgKG9yICJidWlsZHRvb2xzLWV4dGVuZGVkIikgaW4gdGhlIG5hbWUuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmZXIgdGhlIDxmaWxlbmFtZT4uc2g8L2ZpbGVuYW1lPiBmaWxlIGZyb20gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGhvc3QgdG8gdGhlIG1hY2hpbmUgdGhhdCBkb2VzIG5vdCBtZWV0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICBHaXQsIHRhciwgb3IgUHl0aG9uIHJlcXVpcmVtZW50cy4KKyAgICAgICAgICAgICAgICAgICAgICAgR2l0LCB0YXIsIG9yIFB5dGhvbiAob3IgZ2NjKSByZXF1aXJlbWVudHMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgT24gdGhlIG1hY2hpbmUgdGhhdCBkb2VzIG5vdCBtZWV0IHRoZSByZXF1aXJlbWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHJ1biB0aGUgPGZpbGVuYW1lPi5zaDwvZmlsZW5hbWU+IGZpbGUKICAgICAgICAgICAgICAgICAgICAgICAgdG8gaW5zdGFsbCB0aGUgdG9vbHMuCi0gICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIGZvciB0aGUgdHJhZGl0aW9uYWwgaW5zdGFsbGVyOgogICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgc2ggfi9Eb3dubG9hZHMveDg2XzY0LWJ1aWxkdG9vbHMtbmF0aXZlc2RrLXN0YW5kYWxvbmUtJkRJU1RSTzsuc2gKICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgZm9yIHRoZSBleHRlbmRlZCBpbnN0YWxsZXI6CisgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICQgc2ggfi9Eb3dubG9hZHMveDg2XzY0LWJ1aWxkdG9vbHMtZXh0ZW5kZWQtbmF0aXZlc2RrLXN0YW5kYWxvbmUtJkRJU1RSTzsuc2gKKyAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICBEdXJpbmcgZXhlY3V0aW9uLCBhIHByb21wdCBhcHBlYXJzIHRoYXQgYWxsb3dzIHlvdSB0bwogICAgICAgICAgICAgICAgICAgICAgICBjaG9vc2UgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCiAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB5b3UgY291bGQgY2hvb3NlIHRoZSBmb2xsb3dpbmc6CkBAIC0zODQsMTAgKzU0OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlIHRoZSB0b29scyBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgYnkgdXNpbmcgYQogICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBsaWtlIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgc291cmNlIC9ob21lLzxyZXBsYWNlYWJsZT55b3VyX3VzZXJuYW1lPC9yZXBsYWNlYWJsZT4vYnVpbGR0b29scy9lbnZpcm9ubWVudC1zZXR1cC1pNTg2LXBva3ktbGludXgKKyAgICAgJCBzb3VyY2UgL2hvbWUvPHJlcGxhY2VhYmxlPnlvdXJfdXNlcm5hbWU8L3JlcGxhY2VhYmxlPi9idWlsZHRvb2xzL2Vudmlyb25tZW50LXNldHVwLXg4Nl82NC1wb2t5LWxpbnV4CiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICBPZiBjb3Vyc2UsIHlvdSBuZWVkIHRvIHN1cHBseSB5b3VyIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgYW5kIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICBzdXJlIHRvIHVzZSB0aGUgcmlnaHQgZmlsZSAoaS5lLiBpNTg1IG9yIHg4Ni02NCkuCisgICAgICAgICAgICAgICAgICAgICAgICBzdXJlIHRvIHVzZSB0aGUgcmlnaHQgZmlsZSAoaS5lLiBpNTg2IG9yIHg4Nl82NCkuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIHlvdSBoYXZlIHNvdXJjZWQgdGhlIHNldHVwIHNjcmlwdCwKQEAgLTM5NSw3ICs1NTksMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhbnkgb3RoZXIgZW52aXJvbm1lbnQgdmFyaWFibGVzIHJlcXVpcmVkIHRvIHJ1biB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xzIGFyZSBpbml0aWFsaXplZC4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHRzIGFyZSB3b3JraW5nIHZlcnNpb25zIHZlcnNpb25zIG9mIEdpdCwgdGFyLAotICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIGFuZCA8ZmlsZW5hbWU+Y2hycGF0aDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIGFuZCA8ZmlsZW5hbWU+Y2hycGF0aDwvZmlsZW5hbWU+LiBBbmQgaW4gdGhlIGNhc2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+YnVpbGR0b29scy1leHRlbmRlZDwvZmlsZW5hbWU+IHRhcmJhbGwsIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmcgdmVyc2lvbnMgb2YgdG9vbHMgaW5jbHVkaW5nIDxmaWxlbmFtZT5nY2M8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tYWtlPC9maWxlbmFtZT4gYW5kIHRoZSBvdGhlciB0b29scyBpbmNsdWRlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jb3JlLWJ1aWxkZXNzZW50aWFsPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgICAgICAgICAgPC9wYXJhPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXRlcm1zLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi10ZXJtcy54bWwKaW5kZXggZjk4NTQ2OC4uNzIyZmE3ZSAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXRlcm1zLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGVybXMueG1sCkBAIC00MSwxMSArNDEsMTMgQEAKICAgICAgICAgICAgICAgICBUaGF0IGFwcGVuZCBmaWxlIHdvdWxkIG1hdGNoIGFueQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idXN5Ym94XzEuMjEuPC9maWxlbmFtZT48cmVwbGFjZWFibGU+eDwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgdmVyc2lvbiBvZiB0aGUgcmVjaXBlLgotICAgICAgICAgICAgICAgIFNvLCB0aGUgYXBwZW5kIGZpbGUgd291bGQgbWF0Y2ggdGhlIGZvbGxvd2luZyByZWNpcGUgbmFtZXM6CisgICAgICAgICAgICAgICAgU28sIHRoZSBhcHBlbmQgZmlsZSB3b3VsZCBtYXRjaCBhbnkgb2YgdGhlIGZvbGxvd2luZyByZWNpcGUgbmFtZXM6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBidXN5Ym94XzEuMjEuMS5iYgogICAgICBidXN5Ym94XzEuMjEuMi5iYgogICAgICBidXN5Ym94XzEuMjEuMy5iYgorICAgICBidXN5Ym94XzEuMjEuMTAuYmIKKyAgICAgYnVzeWJveF8xLjIxLjI1LmJiCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5JbXBvcnRhbnQ8L3RpdGxlPgogICAgICAgICAgICAgICAgICAgICBUaGUgdXNlIG9mIHRoZSAiPGZpbGVuYW1lPiU8L2ZpbGVuYW1lPiIgY2hhcmFjdGVyCkBAIC0xMTUsNyArMTE3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGluIHlvdXIgaG9tZSBkaXJlY3Rvcnkgd2l0aGluIHRoZSBleGlzdGluZwogICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IDxmaWxlbmFtZT5teWJ1aWxkczwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkY2QgJEhPTUUKKyAgICAgJCBjZCAkSE9NRQogICAgICAkIHNvdXJjZSAkSE9NRS9wb2t5LyZPRV9JTklUX0ZJTEU7ICRIT01FL215YnVpbGRzL1lQLSZQT0tZVkVSU0lPTjsKICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgpAQCAtMTQxLDcgKzE0Myw3IEBACiAgICAgICAgICAgICAgICAgVGhlIHN5c3RlbSB1c2VkIHRvIGJ1aWxkIGltYWdlcyBpbiBhIFlvY3RvIFByb2plY3QKICAgICAgICAgICAgICAgICBEZXZlbG9wbWVudCBlbnZpcm9ubWVudC4KICAgICAgICAgICAgICAgICBUaGUgYnVpbGQgc3lzdGVtIGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyB0aGUKLSAgICAgICAgICAgICAgICBkZXZlbG9wbWVudCBob3N0LgorICAgICAgICAgICAgICAgIDxmaXJzdHRlcm0+ZGV2ZWxvcG1lbnQgaG9zdDwvZmlyc3R0ZXJtPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2xhc3Nlczo8L2VtcGhhc2lzPgpAQCAtMzkzLDcgKzM5NSw3IEBACiAgICAgICAgICAgICAgICAgUG9reSBpcyBub3QgYSBwcm9kdWN0IGxldmVsIGRpc3Ryby4KICAgICAgICAgICAgICAgICBSYXRoZXIsIGl0IGlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgY3VzdG9taXphdGlvbi4KICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgUG9reSBiZWdhbiBhbiBvcGVuLXNvdXJjZQorICAgICAgICAgICAgICAgICAgICBQb2t5IGJlZ2FuIGFzIGFuIG9wZW4tc291cmNlCiAgICAgICAgICAgICAgICAgICAgIHByb2plY3QgaW5pdGlhbGx5IGRldmVsb3BlZCBieSBPcGVuZWRIYW5kLgogICAgICAgICAgICAgICAgICAgICBPcGVuZWRIYW5kIGRldmVsb3BlZCBQb2t5IGZyb20gdGhlIGV4aXN0aW5nCiAgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gY3JlYXRlIGEgY29tbWVyY2lhbGx5CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdmFyaWFibGVzLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi12YXJpYWJsZXMueG1sCmluZGV4IDAyYWJjNTkuLmI0NGZkY2IgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi12YXJpYWJsZXMueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi12YXJpYWJsZXMueG1sCkBAIC0zNjcsNyArMzY3LDcgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUFTU1VNRV9TSExJQlMnPjxnbG9zc3Rlcm0+QVNTVU1FX1NITElCUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgQVNTVU1FX1NITElCU1tkb2NdID0gUHJvdmlkZXMgYWRkaXRpb25hbCBzaGxpYnMgcHJvdmlkZXIgbWFwcGluZyBpbmZvcm1hdGlvbiwgd2hpY2ggYWRkcyB0byBvciBvdmVyd3JpdGVzIHRoZSBpbmZvcm1hdGlvbiBwcm92aWRlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBzeXN0ZW0uIgorICAgICAgICAgICAgICAgIEFTU1VNRV9TSExJQlNbZG9jXSA9ICJQcm92aWRlcyBhZGRpdGlvbmFsIHNobGlicyBwcm92aWRlciBtYXBwaW5nIGluZm9ybWF0aW9uLCB3aGljaCBhZGRzIHRvIG9yIG92ZXJ3cml0ZXMgdGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIHN5c3RlbS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CkBAIC00OTUsNiArNDk1LDMwIEBACiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CiAKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1BVkFJTEFCTEVfTElDRU5TRVMnPjxnbG9zc3Rlcm0+QVZBSUxBQkxFX0xJQ0VOU0VTPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBBVkFJTEFCTEVfTElDRU5TRVNbZG9jXSA9ICJMaXN0IG9mIGxpY2Vuc2VzIGZvdW5kIGluIHRoZSBkaXJlY3RvcmllcyBzcGVjaWZpZWQgYnkgQ09NTU9OX0xJQ0VOU0VfRElSIGFuZCBMSUNFTlNFX1BBVEguIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KKworICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIGxpY2Vuc2VzIGZvdW5kIGluIHRoZSBkaXJlY3RvcmllcyBzcGVjaWZpZWQKKyAgICAgICAgICAgICAgICAgICAgYnkgPGxpbmsgbGlua2VuZD0ndmFyLUNPTU1PTl9MSUNFTlNFX0RJUic+PGZpbGVuYW1lPkNPTU1PTl9MSUNFTlNFX0RJUjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQgPGxpbmsgbGlua2VuZD0ndmFyLUxJQ0VOU0VfUEFUSCc+PGZpbGVuYW1lPkxJQ0VOU0VfUEFUSDwvZmlsZW5hbWU+PC9saW5rPi4KKworICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEl0IGlzIGFzc3VtZWQgdGhhdCBhbGwgY2hhbmdlcworICAgICAgICAgICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPkNPTU1PTl9MSUNFTlNFX0RJUjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPkxJQ0VOU0VfUEFUSDwvZmlsZW5hbWU+IGhhdmUgYmVlbiBkb25lCisgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgPGZpbGVuYW1lPkFWQUlMQUJMRV9MSUNFTlNFUzwvZmlsZW5hbWU+IGlzCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkCisgICAgICAgICAgICAgICAgICAgICAgICAoaW4gPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtbGljZW5zZSc+bGljZW5zZS5iYmNsYXNzPC9saW5rPikuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1BVkFJTFRVTkVTJz48Z2xvc3N0ZXJtPkFWQUlMVFVORVM8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgogICAgICAgICAgICAgICAgIEFWQUlMVFVORVNbZG9jXSA9ICJUaGUgbGlzdCBvZiBkZWZpbmVkIENQVSBhbmQgQXBwbGljYXRpb24gQmluYXJ5IEludGVyZmFjZSAoQUJJKSB0dW5pbmdzIChpLmUuICAidHVuZXMiKSBhdmFpbGFibGUgZm9yIHVzZSBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbS4iCkBAIC0xNDIzLDcgKzE0NDcsNyBAQAogICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBmb3JtYXQgdG8gZXhwb3J0IHRoZSB2YXJpYWJsZSB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBlbnZpcm9ubWVudDoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBleHBvcnQgQkJTRVJWRVI9bG9jYWxob3N0OiRwb3J0IgorICAgICBleHBvcnQgQkJTRVJWRVI9bG9jYWxob3N0OiRwb3J0CiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTM3ODYsNyArMzgxMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIEl0IGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VyLWNvbmZpZ3VyYWJsZS4KICAgICAgICAgICAgICAgICAgICAgSXQgaXMgYmVzdCB0byBqdXN0IHJlZmVyZW5jZSB0aGUgdmFyaWFibGUgdG8gc2VlIHdoaWNoIGRpc3RybyBmZWF0dXJlcyBhcmUKICAgICAgICAgICAgICAgICAgICAgYmVpbmcgYmFja2ZpbGxlZCBmb3IgYWxsIGRpc3RybyBjb25maWd1cmF0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSA8bGluayBsaW5rZW5kPSdyZWYtZmVhdHVyZXMtYmFja2ZpbGwnPkZlYXR1cmUgQmFja2ZpbGxpbmc8L2xpbms+IHNlY3Rpb24gZm9yCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgIjxsaW5rIGxpbmtlbmQ9J3JlZi1mZWF0dXJlcy1iYWNrZmlsbCc+RmVhdHVyZSBCYWNrZmlsbGluZzwvbGluaz4iIHNlY3Rpb24gZm9yCiAgICAgICAgICAgICAgICAgICAgIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KQEAgLTY3NTAsNiArNjc3NCwyNSBAQAogICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzIHRoYXQgYXJlIHJlcXVpcmVkIHRvIHByb2R1Y2UgYSBmdW5jdGlvbmFsIHN5c3RlbQogICAgICAgICAgICAgICAgICAgICBpbWFnZS4KICAgICAgICAgICAgICAgICA8L25vdGU+CisKKyAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwczwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgIEl0IGlzIHBvc3NpYmxlIHRvIGRlZmluZSBhIGxpc3Qgb2YgbGljZW5zZXMgdGhhdCBhcmUgYWxsb3dlZAorICAgICAgICAgICAgICAgICAgICB0byBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGxpY2Vuc2VzIHRoYXQgYXJlIGV4Y2x1ZGVkLiBUbyBkbworICAgICAgICAgICAgICAgICAgICB0aGlzLCBkZWZpbmUgYQorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSA8ZmlsZW5hbWU+Q09NUEFUSUJMRV9MSUNFTlNFUzwvZmlsZW5hbWU+IHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgIG5hbWVzIG9mIHRoZSBsaWNlbmNlcyB0aGF0IGFyZSBhbGxvd2VkLiBUaGVuCisgICAgICAgICAgICAgICAgICAgIGRlZmluZSA8ZmlsZW5hbWU+SU5DT01QQVRJQkxFX0xJQ0VOU0U8L2ZpbGVuYW1lPiBhczoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTkNPTVBBVElCTEVfTElDRU5TRSA9ICIke0AnICcuam9pbihzb3J0ZWQoc2V0KGQuZ2V0VmFyKCdBVkFJTEFCTEVfTElDRU5TRVMnKS5zcGxpdCgpKSAtIHNldChkLmdldFZhcignQ09NUEFUSUJMRV9MSUNFTlNFUycpLnNwbGl0KCkpKSl9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoaXMgd2lsbCByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPklOQ09NUEFUSUJMRV9MSUNFTlNFPC9maWxlbmFtZT4gY29udGFpbmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgbmFtZXMgb2YgYWxsIGxpY2VuY2VzCisgICAgICAgICAgICAgICAgICAgIGZyb20gPGxpbmsgbGlua2VuZD0ndmFyLUFWQUlMQUJMRV9MSUNFTlNFUyc+PGZpbGVuYW1lPkFWQUlMQUJMRV9MSUNFTlNFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBleGNlcHQgdGhlIG9uZXMgc3BlY2lmaWVkCisgICAgICAgICAgICAgICAgICAgIGluIDxmaWxlbmFtZT5DT01QQVRJQkxFX0xJQ0VOU0VTPC9maWxlbmFtZT4sIHRodXMgb25seQorICAgICAgICAgICAgICAgICAgICBhbGxvd2luZyB0aGUgbGF0dGVyIGxpY2VuY2VzIHRvIGJlIHVzZWQuCisgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCkBAIC03NDI4LDcgKzc0NzEsNiBAQAogICAgICBLQlJBTkNIX2dlbmVyaWN4ODYtNjQgID0gInN0YW5kYXJkL2Jhc2UiCiAgICAgIEtCUkFOQ0hfZWRnZXJvdXRlciA9ICJzdGFuZGFyZC9lZGdlcm91dGVyIgogICAgICBLQlJBTkNIX2JlYWdsZWJvbmUgPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKLSAgICAgS0JSQU5DSF9tcGM4MzE1ZS1yZGIgPSAic3RhbmRhcmQvZnNsLW1wYzgzMTVlLXJkYiIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5LQlJBTkNIPC9maWxlbmFtZT4gc3RhdGVtZW50cyBpZGVudGlmeQogICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGtlcm5lbCBicmFuY2ggdG8gdXNlIHdoZW4gYnVpbGRpbmcgZm9yIGVhY2gKQEAgLTg3NDYsNyArODc4OCw2IEBACiAgICAgIE1BQ0hJTkUgPz0gImdlbmVyaWN4ODYiCiAgICAgIE1BQ0hJTkUgPz0gImdlbmVyaWN4ODYtNjQiCiAgICAgIE1BQ0hJTkUgPz0gImJlYWdsZWJvbmUiCi0gICAgIE1BQ0hJTkUgPz0gIm1wYzgzMTVlLXJkYiIKICAgICAgTUFDSElORSA/PSAiZWRnZXJvdXRlciIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICBUaGUgbGFzdCBmaXZlIGFyZSBZb2N0byBQcm9qZWN0IHJlZmVyZW5jZSBoYXJkd2FyZSBib2FyZHMsIHdoaWNoCkBAIC0xMDM3NiwxMiArMTA0MTcsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VDT05GSUc8L2ZpbGVuYW1lPiBibG9ja3MgYXJlIGRlZmluZWQKICAgICAgICAgICAgICAgICAgICAgaW4gcmVjaXBlcyB3aGVuIHlvdSBzcGVjaWZ5IGZlYXR1cmVzIGFuZCB0aGVuIGFyZ3VtZW50cwogICAgICAgICAgICAgICAgICAgICB0aGF0IGRlZmluZSBmZWF0dXJlIGJlaGF2aW9ycy4KLSAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyB0aGUgYmFzaWMgYmxvY2sgc3RydWN0dXJlOgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIHRoZSBiYXNpYyBibG9jayBzdHJ1Y3R1cmUgKGJyb2tlbiBvdmVyIG11bHRpcGxlCisgICAgICAgICAgICAgICAgICAgIGxpbmVzIGZvciByZWFkYWJpbGl0eSk6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgUEFDS0FHRUNPTkZJRyA/Pz0gImYxIGYyIGYzIC4uLiIKLSAgICAgUEFDS0FHRUNPTkZJR1tmMV0gPSAiLS13aXRoLWYxLC0td2l0aG91dC1mMSxidWlsZC1kZXBzLWYxLHJ0LWRlcHMtZjEscnQtcmVjcy1mMSIKLSAgICAgUEFDS0FHRUNPTkZJR1tmMl0gPSAiLS13aXRoLWYyLC0td2l0aG91dC1mMixidWlsZC1kZXBzLWYyLHJ0LWRlcHMtZjIscnQtcmVjcy1mMiIKLSAgICAgUEFDS0FHRUNPTkZJR1tmM10gPSAiLS13aXRoLWYzLC0td2l0aG91dC1mMyxidWlsZC1kZXBzLWYzLHJ0LWRlcHMtZjMscnQtcmVjcy1mMyIKKyAgICAgUEFDS0FHRUNPTkZJR1tmMV0gPSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtZjEsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWYxLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkLWRlcHMtZm9yLWYxLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWUtZGVwcy1mb3ItZjEsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnVudGltZS1yZWNvbW1lbmRzLWZvci1mMSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlY29uZmlnLWNvbmZsaWN0cy1mb3ItZjEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAiCisgICAgIFBBQ0tBR0VDT05GSUdbZjJdID0gIlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAuLi4gYW5kIHNvIG9uIGFuZCBzbyBvbiAuLi4KICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMTAzOTAsNyArMTA0MzksNyBAQAogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpdHNlbGYgc3BlY2lmaWVzIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzIHRvIGVuYWJsZS4KICAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIHRoZSBmZWF0dXJlcywgeW91IGNhbiBkZXRlcm1pbmUgdGhlIGJlaGF2aW9yIG9mCi0gICAgICAgICAgICAgICAgICAgIGVhY2ggZmVhdHVyZSBieSBwcm92aWRpbmcgdXAgdG8gZml2ZSBvcmRlci1kZXBlbmRlbnQKKyAgICAgICAgICAgICAgICAgICAgZWFjaCBmZWF0dXJlIGJ5IHByb3ZpZGluZyB1cCB0byBzaXggb3JkZXItZGVwZW5kZW50CiAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cywgd2hpY2ggYXJlIHNlcGFyYXRlZCBieSBjb21tYXMuCiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gb21pdCBhbnkgYXJndW1lbnQgeW91IGxpa2UgYnV0IG11c3QgcmV0YWluIHRoZQogICAgICAgICAgICAgICAgICAgICBzZXBhcmF0aW5nIGNvbW1hcy4KQEAgLTEwNDIwLDYgKzEwNDY5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxsaW5rIGxpbmtlbmQ9J3Zhci1SUkVDT01NRU5EUyc+PGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT48L2xpbms+KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgc2hvdWxkIGJlIGFkZGVkIGlmIHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QW55IGNvbmZsaWN0aW5nICh0aGF0IGlzLCBtdXR1YWxseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2x1c2l2ZSkgPGZpbGVuYW1lPlBBQ0tBR0VDT05GSUc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzIGZvciB0aGlzIGZlYXR1cmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCkBAIC0xMDQyNywyNSArMTA0ODAsMjMgQEAKICAgICAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZwogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRUNPTkZJRzwvZmlsZW5hbWU+IGJsb2NrIHRha2VuIGZyb20gdGhlCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJyc3ZnPC9maWxlbmFtZT4gcmVjaXBlLgotICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUgdGhlIGZlYXR1cmUgaXMgPGZpbGVuYW1lPmNyb2NvPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSB0aGUgZmVhdHVyZSBpcyA8ZmlsZW5hbWU+Z3RrPC9maWxlbmFtZT4sCiAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGhhcyB0aHJlZSBhcmd1bWVudHMgdGhhdCBkZXRlcm1pbmUgdGhlIGZlYXR1cmUncwogICAgICAgICAgICAgICAgICAgICBiZWhhdmlvci4KICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBQQUNLQUdFQ09ORklHID8/PSAiY3JvY28iCi0gICAgIFBBQ0tBR0VDT05GSUdbY3JvY29dID0gIi0td2l0aC1jcm9jbywtLXdpdGhvdXQtY3JvY28sbGliY3JvY28iCisgICAgIFBBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLXdpdGgtZ3RrMywtLXdpdGhvdXQtZ3RrMyxndGsrMyIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPi0td2l0aC1jcm9jbzwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGliY3JvY288L2ZpbGVuYW1lPiBhcmd1bWVudHMgYXBwbHkgb25seSBpZgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPi0td2l0aC1ndGszPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ndGsrMzwvZmlsZW5hbWU+IGFyZ3VtZW50cyBhcHBseSBvbmx5IGlmCiAgICAgICAgICAgICAgICAgICAgIHRoZSBmZWF0dXJlIGlzIGVuYWJsZWQuCi0gICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgPGZpbGVuYW1lPi0td2l0aC1jcm9jbzwvZmlsZW5hbWU+IGlzCisgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgY2FzZSwgPGZpbGVuYW1lPi0td2l0aC1ndGszPC9maWxlbmFtZT4gaXMKICAgICAgICAgICAgICAgICAgICAgYWRkZWQgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgYXJndW1lbnQgbGlzdCBhbmQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmNyb2NvPC9maWxlbmFtZT4gaXMgYWRkZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmd0ayszPC9maWxlbmFtZT4gaXMgYWRkZWQgdG8KICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBmZWF0dXJlIGlzIGRpc2FibGVkIHNheSB0aHJvdWdoCiAgICAgICAgICAgICAgICAgICAgIGEgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUgaW4gYW5vdGhlciBsYXllciwgdGhlbgotICAgICAgICAgICAgICAgICAgICB0aGUgc2Vjb25kIGFyZ3VtZW50IDxmaWxlbmFtZT4tLXdpdGhvdXQtY3JvY288L2ZpbGVuYW1lPiBpcwotICAgICAgICAgICAgICAgICAgICBhZGRlZCB0byB0aGUgY29uZmlndXJlIHNjcmlwdCByYXRoZXIgdGhhbgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LS13aXRoLWNyb2NvPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIHRoZSBzZWNvbmQgYXJndW1lbnQgPGZpbGVuYW1lPi0td2l0aG91dC1ndGszPC9maWxlbmFtZT4gaXMKKyAgICAgICAgICAgICAgICAgICAgYWRkZWQgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgaW5zdGVhZC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTExMDU0LDcgKzExMTA1LDcgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVBOJz48Z2xvc3N0ZXJtPlBOPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBQTltkb2NdID0gIlBOIHJlZmVycyB0byBhIHJlY2lwZSBuYW1lIGluIHRoZSBjb250ZXh0IG9mIGEgZmlsZSB1c2VkIGJ5IHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGFzIGlucHV0IHRvIGNyZWF0ZSBhIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgUE5bZG9jXSA9ICJQTiByZWZlcnMgdG8gYSByZWNpcGUgbmFtZSBpbiB0aGUgY29udGV4dCBvZiBhIGZpbGUgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhcyBpbnB1dCB0byBjcmVhdGUgYSBwYWNrYWdlLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KQEAgLTExNTAxLDIzICsxMTU1MiwzNSBAQAogICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCBhIHJlY2lwZSdzIG93bgogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLVBOJz5QTjwvbGluaz48L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBpcyBpbXBsaWNpdGx5IGFscmVhZHkgaW4gaXRzIDxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGxpc3QuCisgICAgICAgICAgICAgICAgICAgIGxpc3QgYW5kIHRoZXJlZm9yZSBkb2VzIG5vdCBuZWVkIHRvIG1lbnRpb24gdGhhdCBpdCBwcm92aWRlcyBpdHNlbGYuCiAgICAgICAgICAgICAgICAgICAgIElmIGEgcmVjaXBlIHVzZXMgPGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT4sIHRoZQogICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsIGFsaWFzZXMgYXJlIHN5bm9ueW1zIGZvciB0aGUgcmVjaXBlIGFuZCBjYW4KLSAgICAgICAgICAgICAgICAgICAgYmUgdXNlZnVsIHNhdGlzZnlpbmcgZGVwZW5kZW5jaWVzIG9mIG90aGVyIHJlY2lwZXMgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgIGJlIHVzZWZ1bCBmb3Igc2F0aXNmeWluZyBkZXBlbmRlbmNpZXMgb2Ygb3RoZXIgcmVjaXBlcyBkdXJpbmcKICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1aWxkIGFzIHNwZWNpZmllZCBieQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURFUEVORFMnPkRFUEVORFM8L2xpbms+PC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPiBzdGF0ZW1lbnQgZnJvbSBhIHJlY2lwZQotICAgICAgICAgICAgICAgICAgICBmaWxlIDxmaWxlbmFtZT5saWJhdl8wLjguMTEuYmI8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT4gc3RhdGVtZW50IGZyb20gdGhlIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICBmaWxlIDxmaWxlbmFtZT5ldWRldl8zLjIuOS5iYjwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFBST1ZJREVTICs9ICJsaWJwb3N0cHJvYyIKKyAgICAgUFJPVklERVMgPSAidWRldiIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT4gc3RhdGVtZW50IHJlc3VsdHMgaW4KLSAgICAgICAgICAgICAgICAgICAgdGhlICJsaWJhdiIgcmVjaXBlIGFsc28gYmVpbmcga25vd24gYXMgImxpYnBvc3Rwcm9jIi4KKyAgICAgICAgICAgICAgICAgICAgdGhlICJldWRldiIgcmVjaXBlIGFsc28gYmVpbmcgYXZhaWxhYmxlIGFzIHNpbXBseSAidWRldiIuCisKKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBHaXZlbiB0aGF0IGEgcmVjaXBlJ3Mgb3duIHJlY2lwZSBuYW1lIGlzIGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGltcGxpY2l0bHkgaW4gaXRzIG93biA8ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPiBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgaXQgaXMgdW5uZWNlc3NhcnkgdG8gYWRkIGFsaWFzZXMgd2l0aCB0aGUgIis9IiBvcGVyYXRvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIGEgc2ltcGxlIGFzc2lnbm1lbnQgd2lsbCBiZSBzdWZmaWNpZW50LiBJbiBvdGhlcgorICAgICAgICAgICAgICAgICAgICAgICAgd29yZHMsIHdoaWxlIHlvdSBjb3VsZCB3cml0ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgUFJPVklERVMgKz0gInVkZXYiCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgYWJvdmUsIHRoZSAiKz0iIGlzIG92ZXJraWxsIGFuZCB1bm5lY2Vzc2FyeS4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtMTMzODMsOCArMTM0NDYsNyBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0tJUF9GSUxFREVQUyc+PGdsb3NzdGVybT5TS0lQX0ZJTEVERVBTPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBTS0lQX0ZJTEVERVBTW2RvY10gPSAiRW5hYmxlcyB5b3UgdG8gcmVtb3ZlIGFsbCBmaWxlcyBmcm9tCi0gICAgICAgICAgICAgICAgdGhlICJQcm92aWRlcyIgc2VjdGlvbiBvZiBhbiBSUE0gcGFja2FnZS4iCisgICAgICAgICAgICAgICAgU0tJUF9GSUxFREVQU1tkb2NdID0gIkVuYWJsZXMgeW91IHRvIHJlbW92ZSBhbGwgZmlsZXMgZnJvbSB0aGUgJ1Byb3ZpZGVzJyBzZWN0aW9uIG9mIGFuIFJQTSBwYWNrYWdlLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KQEAgLTE1MzMxLDcgKzE1MzkzLDcgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVRDTElCQyc+PGdsb3NzdGVybT5UQ0xJQkM8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIFRDTElCQ1tkb2NdID0gIlNwZWNpZmllcyBHTlUgc3RhbmRhcmQgQyBsaWJyYXJ5IChsaWJjKSB2YXJpYW50IHRvIHVzZSBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuIFlvdSBjYW4gc2VsZWN0ICdnbGliYycsICdtdXNsJyBvciAibmV3bGliLiIKKyAgICAgICAgICAgICAgICBUQ0xJQkNbZG9jXSA9ICJTcGVjaWZpZXMgR05VIHN0YW5kYXJkIEMgbGlicmFyeSAobGliYykgdmFyaWFudCB0byB1c2UgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLiBZb3UgY2FuIHNlbGVjdCAnZ2xpYmMnLCAnbXVzbCcgb3IgJ25ld2xpYicuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtMTU2NDYsOSArMTU3MDgsOSBAQAogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSB0YXJnZXQgY29udHJvbGxlciB0byB1c2Ugd2hlbiBydW5uaW5nIHRlc3RzCiAgICAgICAgICAgICAgICAgICAgIGFnYWluc3QgYSB0ZXN0IGltYWdlLgotICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBjb250cm9sbGVyIHRvIHVzZSBpcyAiUWVtdVRhcmdldCI6CisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGNvbnRyb2xsZXIgdG8gdXNlIGlzICJxZW11IjoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBURVNUX1RBUkdFVCA9ICJRZW11VGFyZ2V0IgorICAgICBURVNUX1RBUkdFVCA9ICJxZW11IgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCkBAIC0xNTY2NywyMSArMTU3MjksMjEgQEAKICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYXJndW1lbnRzIHdpdGgKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRFU1RfVEFSR0VUPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJRZW11VGFyZ2V0Ijo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4icWVtdSI6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb290cyBhIFFFTVUgaW1hZ2UgYW5kIHJ1bnMgdGhlIHRlc3RzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcWVtdS1pbWFnZS1lbmFibGluZy10ZXN0cyc+RW5hYmxpbmcgUnVudGltZSBUZXN0cyBvbiBRRU1VPC91bGluaz4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+IlNpbXBsZVJlbW90ZVRhcmdldCI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+InNpbXBsZXJlbW90ZSI6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW5zIHRoZSB0ZXN0cyBvbiB0YXJnZXQgaGFyZHdhcmUgdGhhdCBpcyBhbHJlYWR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXAgYW5kIHJ1bm5pbmcuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGhhcmR3YXJlIGNhbiBiZSBvbiB0aGUgbmV0d29yayBvciBpdCBjYW4gYmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIGRldmljZSBydW5uaW5nIGFuIGltYWdlIG9uIFFFTVUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgYWxzbyBzZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVEVTVF9UQVJHRVRfSVAnPjxmaWxlbmFtZT5URVNUX1RBUkdFVF9JUDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4geW91IHVzZSAiU2ltcGxlUmVtb3RlVGFyZ2V0Ii4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHlvdSB1c2UgInNpbXBsZXJlbW90ZSIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgYXJndW1lbnQgaXMgZGVmaW5lZCBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9saWIvb2VxYS9jb250cm9sbGVycy9zaW1wbGVyZW1vdGUucHk8L2ZpbGVuYW1lPi4KQEAgLTE2NDczLDcgKzE2NTM1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgQXBwZW5kcyBhIHN0cmluZyB0byB0aGUgbmFtZSBvZiB0aGUgbG9jYWwgdmVyc2lvbiBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgVS1Cb290IGltYWdlLgogICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgYXNzdW1pbmcgdGhlIHZlcnNpb24gb2YgdGhlIFUtQm9vdCBpbWFnZQotICAgICAgICAgICAgICAgICAgICBidWlsdCB3YXMgIjIwMTMuMTAsIHRoZSBmdWxsIHZlcnNpb24gc3RyaW5nIHJlcG9ydGVkIGJ5CisgICAgICAgICAgICAgICAgICAgIGJ1aWx0IHdhcyAiMjAxMy4xMCIsIHRoZSBmdWxsIHZlcnNpb24gc3RyaW5nIHJlcG9ydGVkIGJ5CiAgICAgICAgICAgICAgICAgICAgIFUtQm9vdCB3b3VsZCBiZSAiMjAxMy4xMC15b2N0byIgZ2l2ZW4gdGhlIGZvbGxvd2luZwogICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQ6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KQEAgLTE2NzcxLDE4ICsxNjgzMywyMSBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVVNFUkFERF9FUlJPUl9EWU5BTUlDJz48Z2xvc3N0ZXJtPlVTRVJBRERfRVJST1JfRFlOQU1JQzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICBVU0VSQUREX0VSUk9SX0RZTkFNSUNbZG9jXSA9ICJJZiBzZXQgdG8gJ2Vycm9yJywgZm9yY2VzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIHByb2R1Y2UgYW4gZXJyb3IgaWYgdGhlIHVzZXIgaWRlbnRpZmljYXRpb24gKHVpZCkgYW5kIGdyb3VwIGlkZW50aWZpY2F0aW9uIChnaWQpIHZhbHVlcyBhcmUgbm90IGRlZmluZWQgaW4gZmlsZXMvcGFzc3dkIGFuZCBmaWxlcy9ncm91cCBmaWxlcy4gSWYgc2V0IHRvICd3YXJuJywgYSB3YXJuaW5nIHdpbGwgYmUgaXNzdWVkIGluc3RlYWQuIgorICAgICAgICAgICAgICAgVVNFUkFERF9FUlJPUl9EWU5BTUlDW2RvY10gPSAiSWYgc2V0IHRvICdlcnJvcicsIGZvcmNlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBwcm9kdWNlIGFuIGVycm9yIGlmIHRoZSB1c2VyIGlkZW50aWZpY2F0aW9uICh1aWQpIGFuZCBncm91cCBpZGVudGlmaWNhdGlvbiAoZ2lkKSB2YWx1ZXMgYXJlIG5vdCBkZWZpbmVkIGluIGFueSBvZiB0aGUgZmlsZXMgbGlzdGVkIGluIFVTRVJBRERfVUlEX1RBQkxFUyBhbmQgVVNFUkFERF9HSURfVEFCTEVTLiBJZiBzZXQgdG8gJ3dhcm4nLCBhIHdhcm5pbmcgd2lsbCBiZSBpc3N1ZWQgaW5zdGVhZC4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgotICAgICAgICAgICAgICAgICAgICBJZiBzZXQgdG8gImVycm9yIiwgZm9yY2VzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvCi0gICAgICAgICAgICAgICAgICAgIHByb2R1Y2UgYW4gZXJyb3IgaWYgdGhlIHVzZXIgaWRlbnRpZmljYXRpb24KLSAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT51aWQ8L2ZpbGVuYW1lPikgYW5kIGdyb3VwIGlkZW50aWZpY2F0aW9uCi0gICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+Z2lkPC9maWxlbmFtZT4pIHZhbHVlcyBhcmUgbm90IGRlZmluZWQKLSAgICAgICAgICAgICAgICAgICAgaW4gPGZpbGVuYW1lPmZpbGVzL3Bhc3N3ZDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgIGFuZCA8ZmlsZW5hbWU+ZmlsZXMvZ3JvdXA8L2ZpbGVuYW1lPiBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgSWYgc2V0IHRvICJ3YXJuIiwgYSB3YXJuaW5nIHdpbGwgYmUgaXNzdWVkIGluc3RlYWQuCisKKyAgICAgICAgICAgICAgICAgICAgSWYgc2V0IHRvIDxmaWxlbmFtZT5lcnJvcjwvZmlsZW5hbWU+LCBmb3JjZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gcHJvZHVjZSBhbiBlcnJvciBpZiB0aGUgdXNlcgorICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWNhdGlvbiAoPGZpbGVuYW1lPnVpZDwvZmlsZW5hbWU+KSBhbmQgZ3JvdXAKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmljYXRpb24gKDxmaWxlbmFtZT5naWQ8L2ZpbGVuYW1lPikgdmFsdWVzIGFyZSBub3QKKyAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCBpbiBhbnkgb2YgdGhlIGZpbGVzIGxpc3RlZAorICAgICAgICAgICAgICAgICAgICBpbiA8bGluayBsaW5rZW5kPSd2YXItVVNFUkFERF9VSURfVEFCTEVTJz48ZmlsZW5hbWU+VVNFUkFERF9VSURfVEFCTEVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZCA8bGluayBsaW5rZW5kPSd2YXItVVNFUkFERF9HSURfVEFCTEVTJz48ZmlsZW5hbWU+VVNFUkFERF9HSURfVEFCTEVTPC9maWxlbmFtZT48L2xpbms+LiBJZgorICAgICAgICAgICAgICAgICAgICBzZXQgdG8gPGZpbGVuYW1lPndhcm48L2ZpbGVuYW1lPiwgYSB3YXJuaW5nIHdpbGwgYmUgaXNzdWVkCisgICAgICAgICAgICAgICAgICAgIGluc3RlYWQuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CkBAIC0xNjgwOSw2ICsxNjg3NCwyMCBAQAogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVVNFUkFERF9HSURfVEFCTEVTJz48ZmlsZW5hbWU+VVNFUkFERF9HSURfVEFCTEVTPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcy4KICAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlcmUgaXMgYSBkaWZmZXJlbmNlIGluIGJlaGF2aW9yIGJldHdlZW4KKyAgICAgICAgICAgICAgICAgICAgc2V0dGluZyA8ZmlsZW5hbWU+VVNFUkFERF9FUlJPUl9EWU5BTUlDPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPmVycm9yPC9maWxlbmFtZT4gYW5kIHNldHRpbmcgaXQKKyAgICAgICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPndhcm48L2ZpbGVuYW1lPi4gV2hlbiBpdCBpcyBzZXQKKyAgICAgICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPndhcm48L2ZpbGVuYW1lPiwgdGhlIGJ1aWxkIHN5c3RlbSB3aWxsIHJlcG9ydCBhCisgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgZm9yIGV2ZXJ5IHVuZGVmaW5lZCA8ZmlsZW5hbWU+dWlkPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5naWQ8L2ZpbGVuYW1lPiBpbiBhbnkgcmVjaXBlLiBCdXQgd2hlbiBpdCBpcyBzZXQKKyAgICAgICAgICAgICAgICAgICAgdG8gPGZpbGVuYW1lPmVycm9yPC9maWxlbmFtZT4sIGl0IHdpbGwgb25seSByZXBvcnQgZXJyb3JzCisgICAgICAgICAgICAgICAgICAgIGZvciByZWNpcGVzIHRoYXQgYXJlIGFjdHVhbGx5IGJ1aWx0LiBUaGlzIHNhdmVzIHlvdSBmcm9tCisgICAgICAgICAgICAgICAgICAgIGhhdmluZyB0byBhZGQgc3RhdGljIElEcyBmb3IgcmVjaXBlcyB0aGF0IHlvdSBrbm93IHdpbGwKKyAgICAgICAgICAgICAgICAgICAgbmV2ZXIgYmUgYnVpbHQuCisgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCkBAIC0xNzEwOCw3ICsxNzE4Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1wYXJ0aXRpb25lZC1pbWFnZXMtdXNpbmctd2ljJz5DcmVhdGluZyBQYXJ0aXRpb25lZCBJbWFnZXMgVXNpbmcgV2ljPC91bGluaz4iCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgICAgICBGb3IgZGV0YWlscyBvbiB0aGUga2lja3N0YXJ0IGZpbGUgZm9ybWF0LCBzZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYta2lja3N0YXJ0Jz5PcGVuRW1iZWRkZWQgS2lja3N0YXJ0ICg8ZmlsZW5hbWU+LndrczwvZmlsZW5hbWU+KSBSZWZlcmVuY2U8L2xpbms+CisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZWYta2lja3N0YXJ0Jz5PcGVuRW1iZWRkZWQgS2lja3N0YXJ0ICg8ZmlsZW5hbWU+LndrczwvZmlsZW5hbWU+KSBSZWZlcmVuY2U8L2xpbms+IgogICAgICAgICAgICAgICAgICAgICBDaGFwdGVyLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CkBAIC0xNzE3OCw4ICsxNzI1Nyw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1YU0VSVkVSJz48Z2xvc3N0ZXJtPlhTRVJWRVI8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgWFNFUlZFUltkb2NdID0gIlNwZWNpZmllcyB0aGUgcGFja2FnZXMgdGhhdCBzaG91bGQgYmUgaW5zdGFsbGVkCi0gICAgICAgICAgICAgICB0byBwcm92aWRlIGFuIFggc2VydmVyIGFuZCBkcml2ZXJzIGZvciB0aGUgY3VycmVudCBtYWNoaW5lLiIKKyAgICAgICAgICAgICAgIFhTRVJWRVJbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIHBhY2thZ2VzIHRoYXQgc2hvdWxkIGJlIGluc3RhbGxlZCB0byBwcm92aWRlIGFuIFggc2VydmVyIGFuZCBkcml2ZXJzIGZvciB0aGUgY3VycmVudCBtYWNoaW5lLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1vYnRhaW4ueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW9idGFpbi54bWwKaW5kZXggNzY1YzBmMi4uODZiNmQ3ZCAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW9idGFpbi54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LW9idGFpbi54bWwKQEAgLTI5Nyw4ICsyOTcsNyBAQAogCiAgICAgICAgICA8cmVwbGFjZWFibGU+YXJjaDwvcmVwbGFjZWFibGU+IGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZToKICAgICAgICAgICAgICAgICAgICBiZWFnbGVib25lLXlvY3RvLCBiZWFnbGVib25lLXlvY3RvLWxzYiwgZWRnZXJvdXRlciwgZWRnZXJvdXRlci1sc2IsCi0gICAgICAgICAgICAgICAgICAgZ2VuZXJpY3g4NiwgZ2VuZXJpY3g4Ni02NCwgZ2VuZXJpY3g4Ni02NC1sc2IsIGdlbmVyaWN4ODYtbHNiLAotICAgICAgICAgICAgICAgICAgIG1wYzgzMTVlLXJkYiwgbXBjODMxNWUtcmRiLWxzYiwgYW5kIHFlbXUqLgorICAgICAgICAgICAgICAgICAgIGdlbmVyaWN4ODYsIGdlbmVyaWN4ODYtNjQsIGdlbmVyaWN4ODYtNjQtbHNiLCBnZW5lcmljeDg2LWxzYiBhbmQgcWVtdSouCiAKIDwhLS0+CiAgICAgICAgICA8cmVwbGFjZWFibGU+ZGF0ZV90aW1lPC9yZXBsYWNlYWJsZT4gaXMgYSBkYXRlIGFuZCB0aW1lIHN0YW1wLgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLW1hbnVhbC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstbWFudWFsLnhtbApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDhkNWY2ZWMuLjUzNzY2M2QKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLW1hbnVhbC54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLW1hbnVhbC54bWwKQEAgLTIyLDExICsyMiwxMCBAQAogCiAgICAgICAgIDxhdXRob3Jncm91cD4KICAgICAgICAgICAgIDxhdXRob3I+Ci0gICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5TY290dDwvZmlyc3RuYW1lPiA8c3VybmFtZT5SaWZlbmJhcms8L3N1cm5hbWU+CiAgICAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5TY290dHkncyBEb2N1bWVudGF0aW9uIFNlcnZpY2VzLCBJTkM8L29yZ25hbWU+CisgICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPiZPUkdOQU1FOzwvb3JnbmFtZT4KICAgICAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgIDxlbWFpbD5zcmlmZW5iYXJrQGdtYWlsLmNvbTwvZW1haWw+CisgICAgICAgICAgICAgICAgPGVtYWlsPiZPUkdFTUFJTDs8L2VtYWlsPgogICAgICAgICAgICAgPC9hdXRob3I+CiAgICAgICAgIDwvYXV0aG9yZ3JvdXA+CiAKQEAgLTM0LDcgKzMzLDcgQEAKICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMTwvcmV2bnVtYmVyPgogICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTY8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjI8L3Jldm51bWJlcj4KQEAgLTY4LDkgKzY3LDE0IEBACiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4wPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTk8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKICAgICA8Y29weXJpZ2h0PgpAQCAtOTIsNyArOTYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIGdvIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgZnJvbSB0aGF0IHNpdGUuCiAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbHMgZnJvbSB0aGUgc2l0ZSBhcmUgbW9yZSB1cC10by1kYXRlIHRoYW4gbWFudWFscwogICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIGZyb20gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZWQgVEFSIGZpbGVzLgpAQCAtMTA5LDE4ICsxMTMsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS4KICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgYSB2ZXJzaW9uIG9mIHRoaXMgbWFudWFsIGZvciBhIGRpZmZlcmVudAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHZpc2l0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKICAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KLSAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGFueSBvdGhlciBZb2N0byBQcm9qZWN0KSBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYWlsaW5nIGxpc3QgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgIGxvZyBpbnRvIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPC9ub3RlPgogICAgIDwvbGVnYWxub3RpY2U+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLnhtbApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGQ3YjRiY2UuLmU2ZDQyNDUKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwueG1sCkBAIC0yMiwxMSArMjIsMTAgQEAKIAogICAgICAgICA8YXV0aG9yZ3JvdXA+CiAgICAgICAgICAgICA8YXV0aG9yPgotICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+S3Jpc3RpPC9maXJzdG5hbWU+IDxzdXJuYW1lPlJpZmVuYmFyazwvc3VybmFtZT4KICAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPlNjb3R0eSdzIERvY3VtZW50YXRpb24gU2VydmljZXMsIElOQzwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+Jk9SR05BTUU7PC9vcmduYW1lPgogICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgPGVtYWlsPmtyaXN0aUBidXp6Y29sbGVjdGl2ZW1hcmtldGluZy5jb208L2VtYWlsPgorICAgICAgICAgICAgICAgIDxlbWFpbD4mT1JHRU1BSUw7PC9lbWFpbD4KICAgICAgICAgICAgIDwvYXV0aG9yPgogICAgICAgICA8L2F1dGhvcmdyb3VwPgogCkBAIC0zNCw3ICszMyw3IEBACiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjg8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE1PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjggUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS44IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4wPC9yZXZudW1iZXI+CkBAIC03OCw5ICs3NywxNCBAQAogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMDwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE5PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjAgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjE8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgPC9yZXZoaXN0b3J5PgogCiAgICAgPGNvcHlyaWdodD4KQEAgLTEwMiw3ICsxMDYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIGdvIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgZnJvbSB0aGF0IHNpdGUuCiAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbHMgZnJvbSB0aGUgc2l0ZSBhcmUgbW9yZSB1cC10by1kYXRlIHRoYW4gbWFudWFscwogICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIGZyb20gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZWQgVEFSIGZpbGVzLgpAQCAtMTE5LDE4ICsxMjMsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS4KICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgYSB2ZXJzaW9uIG9mIHRoaXMgbWFudWFsIGZvciBhIGRpZmZlcmVudAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHZpc2l0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKICAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KLSAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGFueSBvdGhlciBZb2N0byBQcm9qZWN0KSBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYWlsaW5nIGxpc3QgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgIGxvZyBpbnRvIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPC9ub3RlPgogCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vdG9vbHMvbWVnYS1tYW51YWwuc2VkIGIvcG9reS9kb2N1bWVudGF0aW9uL3Rvb2xzL21lZ2EtbWFudWFsLnNlZAppbmRleCAzNzRkOGU3Li5iMWVhOWVkIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vdG9vbHMvbWVnYS1tYW51YWwuc2VkCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi90b29scy9tZWdhLW1hbnVhbC5zZWQKQEAgLTEsMzYgKzEsMzYgQEAKICMgUHJvY2Vzc2VzIGJpdGJha2UtdXNlci1tYW51YWwgKDx3b3JkPi08d29yZD4tPHdvcmQ+IHN0eWxlKS4KICMgVGhpcyBzdHlsZSBpcyBmb3IgbWFudWFsIHRocmVlLXdvcmQgZm9sZGVycywgd2hpY2ggY3VycmVudGx5IGlzIG9ubHkgdGhlIEJpdEJha2UgVXNlciBNYW51YWwuCiAjIFdlIHVzZWQgdG8gaGF2ZSB0aGUgInlvY3RvLXByb2plY3QtcXMiIGFuZCAicG9reS1yZWYtbWFudWFsIiBmb2xkZXJzIGJ1dCBubyBsb25nZXIgZG8uCi0jIHNAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvW2Etel0qLVthLXpdKi1bYS16XSovW2Etel0qLVthLXpdKi1bYS16XSouaHRtbCNAImxpbmsiIGhyZWY9IiNAZwotc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZworIyBzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL1thLXpdKi1bYS16XSotW2Etel0qL1thLXpdKi1bYS16XSotW2Etel0qLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKIAogIyBQcm9jZXNzZXMgYWxsIG90aGVyIG1hbnVhbHMgKDx3b3JkPi08d29yZD4gc3R5bGUpLgogIyBUaGlzIHN0eWxlIGlzIGZvciBtYW51YWwgZm9sZGVycyB0aGF0IHVzZSB0d28gd29yZCwgd2hpY2ggaXMgdGhlIHN0YW5kYXJkIG5vdyAoZS5nLiAicmVmLW1hbnVhbCIpLgogIyBIZXJlIGlzIHRoZSBvbmUtbGluZXI6Ci0jIHNAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvW2Etel0qLVthLXpdKi9bYS16XSotW2Etel0qLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKKyMgc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9bYS16XSotW2Etel0qL1thLXpdKi1bYS16XSouaHRtbCNAImxpbmsiIGhyZWY9IiNAZwogCi1zQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL3Nkay1tYW51YWwvc2RrLW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCi1zQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL2JzcC1ndWlkZS9ic3AtZ3VpZGUuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwotc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9kZXYtbWFudWFsL2Rldi1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwotc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKLXNAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwotc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9rZXJuZWwtZGV2L2tlcm5lbC1kZXYuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwotc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCi1zQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL3JlZi1tYW51YWwvcmVmLW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCi1zQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvc2RrLW1hbnVhbC9zZGstbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvYnNwLWd1aWRlL2JzcC1ndWlkZS5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL2Rldi1tYW51YWwvZGV2LW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL2tlcm5lbC1kZXYva2VybmVsLWRldi5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvcmVmLW1hbnVhbC9yZWYtbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwogCiAjIFByb2Nlc3MgY2FzZXMgd2hlcmUganVzdCBhbiBleHRlcm5hbCBtYW51YWwgaXMgcmVmZXJlbmNlZCB3aXRob3V0IGFuIGlkIGFuY2hvcgotc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgUXVpY2sgQnVpbGQ8L2E+QFlvY3RvIFByb2plY3QgUXVpY2sgQnVpbGRAZwotc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5CaXRCYWtlIFVzZXIgTWFudWFsPC9hPkBCaXRCYWtlIFVzZXIgTWFudWFsQGcKLXNAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvZGV2LW1hbnVhbC9kZXYtbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWw8L2E+QFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsQGcKLXNAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbDwvYT5AWW9jdG8gcHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsQGcKLXNAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvc2RrLW1hbnVhbC9zZGstbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvYT5AWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKUBnCi1zQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL2JzcC1ndWlkZS9ic3AtZ3VpZGUuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTwvYT5AWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGVAZwotc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgUHJvZmlsaW5nIGFuZCBUcmFjaW5nIE1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsQGcKLXNAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAva2VybmVsLWRldi9rZXJuZWwtZGV2Lmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsPC9hPkBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWxAZwotc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9yZWYtbWFudWFsL3JlZi1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWw8L2E+QFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbEBnCi1zQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+VG9hc3RlciBVc2VyIE1hbnVhbDwvYT5AVG9hc3RlciBVc2VyIE1hbnVhbEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBRdWljayBCdWlsZDwvYT5AWW9jdG8gUHJvamVjdCBRdWljayBCdWlsZEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPkJpdEJha2UgVXNlciBNYW51YWw8L2E+QEJpdEJha2UgVXNlciBNYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9kZXYtbWFudWFsL2Rldi1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsPC9hPkBZb2N0byBwcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9zZGstbWFudWFsL3Nkay1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspPC9hPkBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUgRXh0ZW5zaWJsZSBTb2Z0d2FyZSBEZXZlbG9wbWVudCBLaXQgKGVTREspQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvYnNwLWd1aWRlL2JzcC1ndWlkZS5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC9hPkBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZUBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsPC9hPkBZb2N0byBQcm9qZWN0IFByb2ZpbGluZyBhbmQgVHJhY2luZyBNYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9rZXJuZWwtZGV2L2tlcm5lbC1kZXYuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWw8L2E+QFlvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL3JlZi1tYW51YWwvcmVmLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Ub2FzdGVyIFVzZXIgTWFudWFsPC9hPkBUb2FzdGVyIFVzZXIgTWFudWFsQGcKIAogIyBQcm9jZXNzIGEgc2luZ2xlLCByb3VnZSBvY2N1cnJlbmNlIG9mIGEgbGlua2VkIHJlZmVyZW5jZSB0byB0aGUgTWVnYS1NYW51YWwuCi1zQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL21lZ2EtbWFudWFsL21lZ2EtbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBNZWdhLU1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBNZWdhLU1hbnVhbEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL21lZ2EtbWFudWFsL21lZ2EtbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBNZWdhLU1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBNZWdhLU1hbnVhbEBnCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1wb2t5L1JFQURNRS5wb2t5IGIvcG9reS9tZXRhLXBva3kvUkVBRE1FLnBva3kKaW5kZXggMjIwNDgwMS4uMmJhM2I1YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXBva3kvUkVBRE1FLnBva3kKKysrIGIvcG9reS9tZXRhLXBva3kvUkVBRE1FLnBva3kKQEAgLTUzLDExICs1MywxMSBAQAogCiBkb2N1bWVudGF0aW9uOgogICAgIEdpdCByZXBvc2l0b3J5OiBodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS95b2N0by1kb2NzLwotICAgIE1haWxpbmcgbGlzdDogeW9jdG9AeW9jdG9wcm9qZWN0Lm9yZworICAgIE1haWxpbmcgbGlzdDogZG9jc0BsaXN0cy55b2N0b3Byb2plY3Qub3JnCiAKIG1ldGEtcG9reSwgbWV0YS15b2N0by1ic3A6CiAgICAgR2l0IHJlcG9zaXRvcnk6IGh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL21ldGEteW9jdG8oLWJzcCkKLSAgICBNYWlsaW5nIGxpc3Q6IHBva3lAeW9jdG9wcm9qZWN0Lm9yZworICAgIE1haWxpbmcgbGlzdDogcG9reUBsaXN0cy55b2N0b3Byb2plY3Qub3JnCiAKIEV2ZXJ5dGhpbmcgZWxzZSBzaG91bGQgYmUgc2VudCB0byB0aGUgT3BlbkVtYmVkZGVkIENvcmUgbWFpbGluZyBsaXN0LiAgSWYgaW4KIGRvdWJ0LCBjaGVjayB0aGUgb2UtY29yZSBnaXQgcmVwb3NpdG9yeSBmb3IgdGhlIGNvbnRlbnQgeW91IGludGVuZCB0byBtb2RpZnkuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9pbmNsdWRlL3Bva3ktZGlzdHJvLWFsdC10ZXN0LWNvbmZpZy5pbmMgYi9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9pbmNsdWRlL3Bva3ktZGlzdHJvLWFsdC10ZXN0LWNvbmZpZy5pbmMKaW5kZXggOTkyNmMxYi4uMGIwNDEyZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vaW5jbHVkZS9wb2t5LWRpc3Ryby1hbHQtdGVzdC1jb25maWcuaW5jCisrKyBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL2luY2x1ZGUvcG9reS1kaXN0cm8tYWx0LXRlc3QtY29uZmlnLmluYwpAQCAtMiw3ICsyLDcgQEAKIERJU1RST19GRUFUVVJFU19hcHBlbmQgPSAiIHBhbSIKIAogIyBVc2UgdGhlIExUU0kgS2VybmVsCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xOSUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNS40JSIKIAogIyBFbnN1cmUgdGhlIGtlcm5lbCBuZnMgc2VydmVyIGlzIGVuYWJsZWQKIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcG4tbGludXgteW9jdG8gPSAiIGZlYXR1cmVzL25mc2QvbmZzZC1lbmFibGUuc2NjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mIGIvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mCmluZGV4IDYxOTQxNDIuLjkxNzc5ZTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZgorKysgYi9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LmNvbmYKQEAgLTEsMTEgKzEsMTEgQEAKIERJU1RSTyA9ICJwb2t5IgogRElTVFJPX05BTUUgPSAiUG9reSAoWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgRGlzdHJvKSIKLURJU1RST19WRVJTSU9OID0gIjMuMCIKLURJU1RST19DT0RFTkFNRSA9ICJ6ZXVzIgorRElTVFJPX1ZFUlNJT04gPSAiMy4xIgorRElTVFJPX0NPREVOQU1FID0gImR1bmZlbGwiCiBTREtfVkVORE9SID0gIi1wb2t5c2RrIgogU0RLX1ZFUlNJT04gPSAiJHtAZC5nZXRWYXIoJ0RJU1RST19WRVJTSU9OJykucmVwbGFjZSgnc25hcHNob3QtJHtEQVRFfScsICdzbmFwc2hvdCcpfSIKIAotTUFJTlRBSU5FUiA9ICJQb2t5IDxwb2t5QHlvY3RvcHJvamVjdC5vcmc+IgorTUFJTlRBSU5FUiA9ICJQb2t5IDxwb2t5QGxpc3RzLnlvY3RvcHJvamVjdC5vcmc+IgogCiBUQVJHRVRfVkVORE9SID0gIi1wb2t5IgogCkBAIC0yMSw3ICsyMSw3IEBACiAKIERJU1RST19GRUFUVVJFUyA/PSAiJHtESVNUUk9fRkVBVFVSRVNfREVGQVVMVH0gJHtQT0tZX0RFRkFVTFRfRElTVFJPX0ZFQVRVUkVTfSIKIAotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjUuMiUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNS40JSIKIAogU0RLX05BTUUgPSAiJHtESVNUUk99LSR7VENMSUJDfS0ke1NES01BQ0hJTkV9LSR7SU1BR0VfQkFTRU5BTUV9LSR7VFVORV9QS0dBUkNIfS0ke01BQ0hJTkV9IgogU0RLUEFUSCA9ICIvb3B0LyR7RElTVFJPfS8ke1NES19WRVJTSU9OfSIKQEAgLTUyLDEzICs1MiwxNCBAQAogU0FOSVRZX1RFU1RFRF9ESVNUUk9TID89ICIgXAogICAgICAgICAgICAgcG9reS0yLjcgXG4gXAogICAgICAgICAgICAgcG9reS0zLjAgXG4gXAorICAgICAgICAgICAgcG9reS0zLjEgXG4gXAogICAgICAgICAgICAgdWJ1bnR1LTE2LjA0IFxuIFwKICAgICAgICAgICAgIHVidW50dS0xOC4wNCBcbiBcCiAgICAgICAgICAgICB1YnVudHUtMTkuMDQgXG4gXAotICAgICAgICAgICAgZmVkb3JhLTI4IFxuIFwKLSAgICAgICAgICAgIGZlZG9yYS0yOSBcbiBcCiAgICAgICAgICAgICBmZWRvcmEtMzAgXG4gXAorICAgICAgICAgICAgZmVkb3JhLTMxIFxuIFwKICAgICAgICAgICAgIGNlbnRvcy03IFxuIFwKKyAgICAgICAgICAgIGNlbnRvcy04IFxuIFwKICAgICAgICAgICAgIGRlYmlhbi04IFxuIFwKICAgICAgICAgICAgIGRlYmlhbi05IFxuIFwKICAgICAgICAgICAgIGRlYmlhbi0xMCBcbiBcCkBAIC04NywzICs4OCw4IEBACiByZXF1aXJlIGNvbmYvZGlzdHJvL2luY2x1ZGUveW9jdG8tdW5pbmF0aXZlLmluYwogcmVxdWlyZSBjb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYwogSU5IRVJJVCArPSAidW5pbmF0aXZlIgorCitJTkhFUklUICs9ICJyZXByb2R1Y2libGVfYnVpbGQiCisKK0JCX1NJR05BVFVSRV9IQU5ETEVSID89ICJPRUVxdWl2SGFzaCIKK0JCX0hBU0hTRVJWRSA/Pz0gImF1dG8iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtcG9reS9jb25mL2xheWVyLmNvbmYgYi9wb2t5L21ldGEtcG9reS9jb25mL2xheWVyLmNvbmYKaW5kZXggYTRiM2QxZS4uMjM0YmUxMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXBva3kvY29uZi9sYXllci5jb25mCisrKyBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvbGF5ZXIuY29uZgpAQCAtOSw3ICs5LDcgQEAKIEJCRklMRV9QQVRURVJOX3lvY3RvID0gIl4ke0xBWUVSRElSfS8iCiBCQkZJTEVfUFJJT1JJVFlfeW9jdG8gPSAiNSIKIAotTEFZRVJTRVJJRVNfQ09NUEFUX3lvY3RvID0gInpldXMiCitMQVlFUlNFUklFU19DT01QQVRfeW9jdG8gPSAiZHVuZmVsbCIKIAogIyBUaGlzIHNob3VsZCBvbmx5IGJlIGluY3JlbWVudGVkIG9uIHNpZ25pZmljYW50IGNoYW5nZXMgdGhhdCB3aWxsCiAjIGNhdXNlIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggb3RoZXIgbGF5ZXJzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlIGIvcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZQppbmRleCAyZTBiYjQxLi5iNTU1ZjFkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlCisrKyBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUKQEAgLTMxLDcgKzMxLDYgQEAKICNNQUNISU5FID89ICJiZWFnbGVib25lLXlvY3RvIgogI01BQ0hJTkUgPz0gImdlbmVyaWN4ODYiCiAjTUFDSElORSA/PSAiZ2VuZXJpY3g4Ni02NCIKLSNNQUNISU5FID89ICJtcGM4MzE1ZS1yZGIiCiAjTUFDSElORSA/PSAiZWRnZXJvdXRlciIKICMKICMgVGhpcyBzZXRzIHRoZSBkZWZhdWx0IG1hY2hpbmUgdG8gYmUgcWVtdXg4Ni02NCBpZiBubyBvdGhlciBtYWNoaW5lIGlzIHNlbGVjdGVkOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXNlbGZ0ZXN0L2NvbmYvbGF5ZXIuY29uZiBiL3Bva3kvbWV0YS1zZWxmdGVzdC9jb25mL2xheWVyLmNvbmYKaW5kZXggMDgxODFhOC4uYTRiZDQ2MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXNlbGZ0ZXN0L2NvbmYvbGF5ZXIuY29uZgorKysgYi9wb2t5L21ldGEtc2VsZnRlc3QvY29uZi9sYXllci5jb25mCkBAIC05LDQgKzksNCBAQAogQkJGSUxFX1BBVFRFUk5fc2VsZnRlc3QgPSAiXiR7TEFZRVJESVJ9LyIKIEJCRklMRV9QUklPUklUWV9zZWxmdGVzdCA9ICI1IgogCi1MQVlFUlNFUklFU19DT01QQVRfc2VsZnRlc3QgPSAiemV1cyIKK0xBWUVSU0VSSUVTX0NPTVBBVF9zZWxmdGVzdCA9ICJkdW5mZWxsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9saWNlbnNlL2luY29tcGF0aWJsZS1saWNlbnNlcy5iYiBiL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvbGljZW5zZS9pbmNvbXBhdGlibGUtbGljZW5zZXMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWMxNTQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvbGljZW5zZS9pbmNvbXBhdGlibGUtbGljZW5zZXMuYmIKQEAgLTAsMCArMSwzIEBACitTVU1NQVJZID0gIlJlY2lwZSB3aXRoIG11bHRpcGxlIFNQRFggbGljZW5zZXMiCitERVNDUklQVElPTiA9ICJJcyBsaWNlbnNlZCB3aXRoIG11bHRpcGxlIFNQRFggbGljZW5zZXMgdG8gYmUgdXNlZCBmb3IgdGVzdGluZyIKK0xJQ0VOU0UgPSAiR1BMLTIuMCAmIEdQTC0zLjAgJiBMR1BMLTMuMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc2VsZnRlc3QtY2hvd24vc2VsZnRlc3QtY2hvd24uYmIgYi9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3NlbGZ0ZXN0LWNob3duL3NlbGZ0ZXN0LWNob3duLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3YmY5NDMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3NlbGZ0ZXN0LWNob3duL3NlbGZ0ZXN0LWNob3duLmJiCkBAIC0wLDAgKzEsMjUgQEAKK1NVTU1BUlkgPSAic2VsZnRlc3QgY2hvd24iCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKKworTElDRU5TRSA9ICJNSVQiCisKK1MgPSAiJHtXT1JLRElSfSIKKworaW5oZXJpdCB1c2VyYWRkIGFsbGFyY2gKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLXUgMTIzNCAtTSB0ZXN0IgorVEVTVERJUiA9ICIke0R9JHtzeXNjb25mZGlyfS9zZWxmdGVzdC1jaG93biIKKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICAgJHtURVNURElSfQorCWluc3RhbGwgLWQgICAke1RFU1RESVJ9L2RpcgorCXRvdWNoICAgICAgICAke1RFU1RESVJ9L2ZpbGUKKwlsbiAtcyAuL2ZpbGUgJHtURVNURElSfS9zeW1saW5rCisKKwljaG93biAgICB0ZXN0OnRlc3QgJHtURVNURElSfS9maWxlCisJY2hvd24gLVIgdGVzdDp0ZXN0ICR7VEVTVERJUn0vZGlyCisJY2hvd24gLWggdGVzdDp0ZXN0ICR7VEVTVERJUn0vc3ltbGluaworfQorCitGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3NlbGZ0ZXN0LWNob3duLyoiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3N5c3Jvb3QtdGVzdC9zeXNyb290LXRlc3QtYXJjaDFfMS4wLmJiIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zeXNyb290LXRlc3Qvc3lzcm9vdC10ZXN0LWFyY2gxXzEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmE2ODJjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zeXNyb290LXRlc3Qvc3lzcm9vdC10ZXN0LWFyY2gxXzEuMC5iYgpAQCAtMCwwICsxLDE0IEBACitMSUNFTlNFID0gIkNMT1NFRCIKKworUFJPVklERVMgPSAidmlydHVhbC9zeXNyb290LXRlc3QiCitJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgorUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKKworVEVTVFNUUklORyA/PSAiMSIKKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9CisJZWNobyAiIyB0ZXN0ICR7VEVTVFNUUklOR30iID4gJHtEfSR7aW5jbHVkZWRpcn0vc3lzcm9vdC10ZXN0LmgKK30KKworRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3N5c3Jvb3QtdGVzdC9zeXNyb290LXRlc3QtYXJjaDJfMS4wLmJiIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zeXNyb290LXRlc3Qvc3lzcm9vdC10ZXN0LWFyY2gyXzEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzE3MmYzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zeXNyb290LXRlc3Qvc3lzcm9vdC10ZXN0LWFyY2gyXzEuMC5iYgpAQCAtMCwwICsxLDE0IEBACitMSUNFTlNFID0gIkNMT1NFRCIKKworUFJPVklERVMgPSAidmlydHVhbC9zeXNyb290LXRlc3QiCitJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgorUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKKworVEVTVFNUUklORyA/PSAiMiIKKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9CisJZWNobyAiIyB0ZXN0ICR7VEVTVFNUUklOR30iID4gJHtEfSR7aW5jbHVkZWRpcn0vc3lzcm9vdC10ZXN0LmgKK30KKworRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3N5c3Jvb3QtdGVzdC9zeXNyb290LXRlc3RfMS4wLmJiIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zeXNyb290LXRlc3Qvc3lzcm9vdC10ZXN0XzEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjA0ODdjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zeXNyb290LXRlc3Qvc3lzcm9vdC10ZXN0XzEuMC5iYgpAQCAtMCwwICsxLDYgQEAKK1NVTU1BUlkgPSAiVmlydHVhbCBwcm92aWRlciBzeXNyb290IHRlc3QiCitMSUNFTlNFID0gIkNMT1NFRCIKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCitERVBFTkRTID0gInZpcnR1YWwvc3lzcm9vdC10ZXN0IgorCitFWENMVURFX0ZST01fV09STEQgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1za2VsZXRvbi9jb25mL2xheWVyLmNvbmYgYi9wb2t5L21ldGEtc2tlbGV0b24vY29uZi9sYXllci5jb25mCmluZGV4IDdkNzM4MWEuLjVlNDQ5YTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS1za2VsZXRvbi9jb25mL2xheWVyLmNvbmYKKysrIGIvcG9reS9tZXRhLXNrZWxldG9uL2NvbmYvbGF5ZXIuY29uZgpAQCAtMTQsNCArMTQsNCBAQAogCiBMQVlFUkRFUEVORFNfc2tlbGV0b24gPSAiY29yZSIKIAotTEFZRVJTRVJJRVNfQ09NUEFUX3NrZWxldG9uID0gInpldXMiCitMQVlFUlNFUklFU19DT01QQVRfc2tlbGV0b24gPSAiZHVuZmVsbCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1za2VsZXRvbi9yZWNpcGVzLWJhcmVtZXRhbC9iYXJlbWV0YWwtZXhhbXBsZXMvYmFyZW1ldGFsLWhlbGxvd29ybGRfZ2l0LmJiIGIvcG9reS9tZXRhLXNrZWxldG9uL3JlY2lwZXMtYmFyZW1ldGFsL2JhcmVtZXRhbC1leGFtcGxlcy9iYXJlbWV0YWwtaGVsbG93b3JsZF9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg0YTkwZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS1za2VsZXRvbi9yZWNpcGVzLWJhcmVtZXRhbC9iYXJlbWV0YWwtZXhhbXBsZXMvYmFyZW1ldGFsLWhlbGxvd29ybGRfZ2l0LmJiCkBAIC0wLDAgKzEsMTA2IEBACitTVU1NQVJZID0gIkJhcmVtZXRhbCBleGFtcGxlcyB0byB3b3JrIHdpdGggdGhlIHNldmVyYWwgUUVNVSBhcmNoaXRlY3R1cmVzIHN1cHBvcnRlZCBvbiBPcGVuRW1iZWRkZWQiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYWVoczI5L2JhcmVtZXRhbC1oZWxsb3FlbXUiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM5MzQ2NjQwYTIzYzcwMWU0ZjQ1OWUwNWY1NmY0NDQ5IgorCitTUkNSRVYgPSAiOTlmNGZhNGEzYjI2NmI0MmI1MmFmMzAyNjEwYjBmNGY0MjliYTVlMyIKK1BWID0gIjAuMStnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2FlaHMyOS9iYXJlbWV0YWwtaGVsbG9xZW11LmdpdDtwcm90b2NvbD1odHRwczticmFuY2g9bWFzdGVyIgorCitTID0gIiR7V09SS0RJUn0vZ2l0LyIKKworIyBUaGVzZSBleGFtcGxlcyBhcmUgbm90IG1lYW50IHRvIGJlIGJ1aWx0IHdoZW4gdXNpbmcgZWl0aGVyIG11c2wgb3IgZ2xpYmMKK0NPTVBBVElCTEVfSE9TVF9saWJjLW11c2xfY2xhc3MtdGFyZ2V0ID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfbGliYy1nbGliY19jbGFzcy10YXJnZXQgPSAibnVsbCIKKworIyBUaGlzIHdpbGwgYmUgdHJhbnNsYXRlZCBhdXRvbWF0aWNhbGx5IHRvIHRoZSBhcmNoaXRlY3R1cmUgYW5kCisjIG1hY2hpbmUgdGhhdCBRRU1VIHVzZXMgb24gT0UsIGUuZy4gLW1hY2hpbmUgdmlydCAtY3B1IGNvcnRleC1hNTcKKyMgYnV0IHRoZSBleGFtcGxlcyBjYW4gYWxzbyBiZSBydW4gb24gb3RoZXIgYXJjaGl0ZWN0dXJlcy9tYWNoaW5lcworIyBzdWNoIGFzIHZleHByZXNzLWExNSBieSBvdmVycmlkaW5nIHRoZSBzZXR0aW5nIG9uIHRoZSBtYWNoaW5lLmNvbmYKK0NPTVBBVElCTEVfTUFDSElORSA9ICJxZW11YXJtdjV8cWVtdWFybXxxZW11YXJtNjQiCisKK0JBUkVNRVRBTF9RRU1VQVJDSCA/PSAiIgorQkFSRU1FVEFMX1FFTVVBUkNIX3FlbXVhcm12NSA9ICJ2ZXJzYXRpbGUiCitCQVJFTUVUQUxfUUVNVUFSQ0hfcWVtdWFybSA9ICJhcm0iCitCQVJFTUVUQUxfUUVNVUFSQ0hfcWVtdWFybTY0ID0gImFhcmNoNjQiCisKKworRVhUUkFfT0VNQUtFX2FwcGVuZCA9ICIgUUVNVUFSQ0g9JHtCQVJFTUVUQUxfUUVNVUFSQ0h9IFY9MSIKKworZG9faW5zdGFsbCgpeworICAgIGluc3RhbGwgLWQgJHtEfS8ke2RhdGFkaXJ9CisgICAgaW5zdGFsbCAtbSA3NTUgJHtCfWJ1aWxkL2hlbGxvX2JhcmVtZXRhbF8ke0JBUkVNRVRBTF9RRU1VQVJDSH0uYmluICR7RH0vJHtkYXRhZGlyfS9oZWxsb19iYXJlbWV0YWxfJHtNQUNISU5FfS5iaW4KKyAgICBpbnN0YWxsIC1tIDc1NSAke0J9YnVpbGQvaGVsbG9fYmFyZW1ldGFsXyR7QkFSRU1FVEFMX1FFTVVBUkNIfS5lbGYgJHtEfS8ke2RhdGFkaXJ9L2hlbGxvX2JhcmVtZXRhbF8ke01BQ0hJTkV9LmVsZgorfQorCisjIEJvcnJvd2VkIGZyb20gbWV0YS1mcmVlcnRvcworaW5oZXJpdCByb290ZnMtcG9zdGNvbW1hbmRzCitpbmhlcml0IGRlcGxveQorSU1HREVQTE9ZRElSID89ICIke1dPUktESVJ9L2RlcGxveS0ke1BOfS1pbWFnZS1jb21wbGV0ZSIKK2RvX2RlcGxveVtkaXJzXSA9ICIke0RFUExPWURJUn0gJHtERVBMT1lfRElSX0lNQUdFfSIKK2RvX3Jvb3Rmc1tkaXJzXSA9ICIke0RFUExPWURJUn0gJHtERVBMT1lfRElSX0lNQUdFfSIKK0RFUExPWURJUiA9ICIke0lNR0RFUExPWURJUn0iCitJTUFHRV9MSU5LX05BTUUgPz0gImJhcmVtZXRhbC1oZWxsb3dvcmxkLWltYWdlLSR7TUFDSElORX0iCitJTUFHRV9OQU1FX1NVRkZJWCA/PSAiIgorCitkb19kZXBsb3koKXsKKyAgICBpbnN0YWxsICR7RH0vJHtkYXRhZGlyfS9oZWxsb19iYXJlbWV0YWxfJHtNQUNISU5FfS5iaW4gJHtERVBMT1lESVJ9LyR7SU1BR0VfTElOS19OQU1FfS5iaW4KKyAgICBpbnN0YWxsICR7RH0vJHtkYXRhZGlyfS9oZWxsb19iYXJlbWV0YWxfJHtNQUNISU5FfS5lbGYgJHtERVBMT1lESVJ9LyR7SU1BR0VfTElOS19OQU1FfS5lbGYKK30KKworZG9faW1hZ2UoKXsKKyAgICA6Cit9CisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vaGVsbG9fYmFyZW1ldGFsXyR7TUFDSElORX0uYmluIFwKKyAgICAke2RhdGFkaXJ9L2hlbGxvX2JhcmVtZXRhbF8ke01BQ0hJTkV9LmVsZiBcCisiCisKK3B5dGhvbiBkb19yb290ZnMoKXsKKyAgICBmcm9tIG9lLnV0aWxzIGltcG9ydCBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3MKKyAgICBmcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgKKworICAgICMgV3JpdGUgZW1wdHkgbWFuaWZlc3QgdGVzdGRhdGUgZmlsZQorICAgIGRlcGxveV9kaXIgPSBkLmdldFZhcignREVQTE9ZRElSJykKKyAgICBsaW5rX25hbWUgPSBkLmdldFZhcignSU1BR0VfTElOS19OQU1FJykKKyAgICBtYW5pZmVzdF9uYW1lID0gZC5nZXRWYXIoJ0lNQUdFX01BTklGRVNUJykKKworICAgIFBhdGgobWFuaWZlc3RfbmFtZSkudG91Y2goKQorICAgIGlmIG9zLnBhdGguZXhpc3RzKG1hbmlmZXN0X25hbWUpIGFuZCBsaW5rX25hbWU6CisgICAgICAgIG1hbmlmZXN0X2xpbmsgPSBkZXBsb3lfZGlyICsgIi8iICsgbGlua19uYW1lICsgIi5tYW5pZmVzdCIKKyAgICAgICAgaWYgb3MucGF0aC5sZXhpc3RzKG1hbmlmZXN0X2xpbmspOgorICAgICAgICAgICAgb3MucmVtb3ZlKG1hbmlmZXN0X2xpbmspCisgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5iYXNlbmFtZShtYW5pZmVzdF9uYW1lKSwgbWFuaWZlc3RfbGluaykKKyAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3MoZCwgZC5nZXRWYXIoJ1JPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EJykpCit9CisKKyMgUUVNVSBnZW5lcmljIEZyZWVSVE9TIHBhcmFtZXRlcnMKK1FCX0RFRkFVTFRfS0VSTkVMID0gIiR7SU1BR0VfTElOS19OQU1FfS5iaW4iCitRQl9NRU0gPSAiLW0gMjU2IgorUUJfT1BUX0FQUEVORCA9ICItbm9ncmFwaGljIgorUUJfREVGQVVMVF9GU1RZUEUgPSAiYmluIgorUUJfRFRCID0gIiIKKworIyBUaGlzIG5leHQgcGFydCBpcyBuZWNlc3NhcnkgdG8gdHJpY2sgdGhlIGJ1aWxkIHN5c3RlbSBpbnRvIHRoaW5raW5nCisjIGl0cyBidWlsZGluZyBhbiBpbWFnZSByZWNpcGUgc28gaXQgZ2VuZXJhdGVzIHRoZSBxZW11Ym9vdC5jb25mCithZGR0YXNrIGRvX2RlcGxveSBhZnRlciBkb193cml0ZV9xZW11Ym9vdF9jb25mIGJlZm9yZSBkb19idWlsZAorYWRkdGFzayBkb19yb290ZnMgYmVmb3JlIGRvX2RlcGxveSBhZnRlciBkb19pbnN0YWxsCithZGR0YXNrIGRvX2ltYWdlIGFmdGVyIGRvX3Jvb3RmcyBiZWZvcmUgZG9fYnVpbGQKK2luaGVyaXQgcWVtdWJvb3QKKworIyBCYXNlZCBvbiBpbWFnZS5iYmNsYXNzIHRvIG1ha2Ugc3VyZSB3ZSBidWlsZCBxZW11CitweXRob24oKXsKKyAgICAjIGRvX2FkZHRvX3JlY2lwZV9zeXNyb290IGRvZXNudCBleGlzdCBmb3IgYWxsIHJlY2lwZXMsIGJ1dCB3ZSBuZWVkIGl0IHRvIGhhdmUKKyAgICAjIC91c3IvYmluIG9uIHJlY2lwZS1zeXNyb290IChxZW11KSBwb3B1bGF0ZWQKKyAgICBkZWYgZXh0cmFpbWFnZV9nZXRkZXBlbmRzKHRhc2spOgorICAgICAgICBkZXBzID0gIiIKKyAgICAgICAgZm9yIGRlcCBpbiAoZC5nZXRWYXIoJ0VYVFJBX0lNQUdFREVQRU5EUycpIG9yICIiKS5zcGxpdCgpOgorICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBvbmx5IGFkZCBpdCBmb3IgcWVtdQorICAgICAgICAgICAgaWYgJ3FlbXUnIGluIGRlcDoKKyAgICAgICAgICAgICAgICBkZXBzICs9ICIgJXM6JXMiICUgKGRlcCwgdGFzaykKKyAgICAgICAgcmV0dXJuIGRlcHMKKyAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2ltYWdlJywgJ2RlcGVuZHMnLCBleHRyYWltYWdlX2dldGRlcGVuZHMoJ2RvX2FkZHRvX3JlY2lwZV9zeXNyb290JykpCisgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19pbWFnZScsICdkZXBlbmRzJywgZXh0cmFpbWFnZV9nZXRkZXBlbmRzKCdkb19wb3B1bGF0ZV9zeXNyb290JykpCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL1JFQURNRS5oYXJkd2FyZSBiL3Bva3kvbWV0YS15b2N0by1ic3AvUkVBRE1FLmhhcmR3YXJlCmluZGV4IGQ4ZDJhMGMuLjU5OTZiZTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvUkVBRE1FLmhhcmR3YXJlCisrKyBiL3Bva3kvbWV0YS15b2N0by1ic3AvUkVBRE1FLmhhcmR3YXJlCkBAIC0yOCw3ICsyOCw2IEBACiBUaGUgZm9sbG93aW5nIGJvYXJkcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBtZXRhLXlvY3RvLWJzcCBsYXllcjoKIAogICAqIFRleGFzIEluc3RydW1lbnRzIEJlYWdsZWJvbmUgKGJlYWdsZWJvbmUteW9jdG8pCi0gICogRnJlZXNjYWxlIE1QQzgzMTVFLVJEQiAobXBjODMxNWUtcmRiKQogICAqIFViaXF1aXRpIE5ldHdvcmtzIEVkZ2VSb3V0ZXIgTGl0ZSAoZWRnZXJvdXRlcikKICAgKiBHZW5lcmFsIElBIHBsYXRmb3JtcyAoZ2VuZXJpY3g4NiBhbmQgZ2VuZXJpY3g4Ni02NCkKIApAQCAtMTU1LDE0NyArMTU0LDYgQEAKIAogICAzLiBJbnNlcnQgdGhlIFNEIGNhcmQgaW50byB0aGUgQmVhZ2xlYm9uZSBhbmQgYm9vdCB0aGUgYm9hcmQuCiAKLUZyZWVzY2FsZSBNUEM4MzE1RS1SREIgKG1wYzgzMTVlLXJkYikKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotVGhlIE1QQzgzMTUgUG93ZXJQQyByZWZlcmVuY2UgcGxhdGZvcm0gKE1QQzgzMTVFLVJEQikgaXMgYWltZWQgYXQgaGFyZHdhcmUgYW5kCi1zb2Z0d2FyZSBkZXZlbG9wbWVudCBvZiBuZXR3b3JrIGF0dGFjaGVkIHN0b3JhZ2UgKE5BUykgYW5kIGRpZ2l0YWwgbWVkaWEgc2VydmVyCi1hcHBsaWNhdGlvbnMuIFRoZSBNUEM4MzE1RS1SREIgZmVhdHVyZXMgdGhlIFBvd2VyUVVJQ0MgSUkgUHJvIHByb2Nlc3Nvciwgd2hpY2gKLWluY2x1ZGVzIGEgYnVpbHQtaW4gc2VjdXJpdHkgYWNjZWxlcmF0b3IuCi0KLShOb3RlOiB5b3UgbWF5IGZpbmQgaXQgZWFzaWVyIHRvIG9yZGVyIE1QQzgzMTVFLVJEQkE7IHRoaXMgYXBwZWFycyB0byBiZSB0aGUKLXNhbWUgYm9hcmQgaW4gYW4gZW5jbG9zdXJlIHdpdGggYWNjZXNzb3JpZXMuIEluIGFueSBjYXNlIGl0IGlzIGZ1bGx5Ci1jb21wYXRpYmxlIHdpdGggdGhlIGluc3RydWN0aW9ucyBnaXZlbiBoZXJlLikKLQotU2V0dXAgaW5zdHJ1Y3Rpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0KLQotWW91IHdpbGwgbmVlZCB0aGUgZm9sbG93aW5nOgotKiBORlMgcm9vdCBzZXR1cCBvbiB5b3VyIHdvcmtzdGF0aW9uCi0qIFRGVFAgc2VydmVyIGluc3RhbGxlZCBvbiB5b3VyIHdvcmtzdGF0aW9uCi0qIFN0cmFpZ2h0LXRocnUgOS1jb25kdWN0b3Igc2VyaWFsIGNhYmxlIChEQjksIE0vRikgY29ubmVjdGVkIGZyb20geW91ciAKLSAgUEMgdG8gVUFSVDEKLSogRXRoZXJuZXQgY29ubmVjdGVkIHRvIHRoZSBmaXJzdCBldGhlcm5ldCBwb3J0IG9uIHRoZSBib2FyZAotCi0tLS0gUHJlcGFyYXRpb24gLS0tCi0KLU5vdGU6IGlmIHlvdSBoYXZlIGFsdGVyZWQgeW91ciBib2FyZCdzIGV0aGVybmV0IE1BQyBhZGRyZXNzKGVzKSBmcm9tIHRoZQotZGVmYXVsdHMsIG9yIHlvdSBuZWVkIHRvIGRvIHNvIGJlY2F1c2UgeW91IHdhbnQgbXVsdGlwbGUgYm9hcmRzIG9uIHRoZSBzYW1lCi1uZXR3b3JrLCB0aGVuIHlvdSB3aWxsIG5lZWQgdG8gY2hhbmdlIHRoZSB2YWx1ZXMgaW4gdGhlIGR0cyBmaWxlIChwYXRjaAotbGludXgvYXJjaC9wb3dlcnBjL2Jvb3QvZHRzL21wYzgzMTVlcmRiLmR0cyB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UpLiBJZgoteW91IGhhdmUgbGVmdCB0aGVtIGF0IHRoZSBmYWN0b3J5IGRlZmF1bHQgdGhlbiB5b3Ugc2hvdWxkbid0IG5lZWQgdG8gZG8KLWFueXRoaW5nIGhlcmUuCi0KLU5vdGU6IFRvIGJvb3QgZnJvbSBVU0IgZGlzayB5b3UgbmVlZCB1LWJvb3QgdGhhdCBzdXBwb3J0cyAnZXh0MmxvYWQgdXNiJwotY29tbWFuZC4gWW91IG5lZWQgdG8gc2V0dXAgVEZUUCBzZXJ2ZXIsIGxvYWQgdS1ib290IGZyb20gdGhlcmUgYW5kCi1mbGFzaCBpdCB0byBOT1IgZmxhc2guCi0KLUJld2FyZSEgRmxhc2hpbmcgYm9vdGxvYWRlciBpcyBwb3RlbnRpYWxseSBkYW5nZXJvdXMgb3BlcmF0aW9uIHRoYXQgY2FuCi1icmljayB5b3VyIGRldmljZSBpZiBkb25lIGluY29ycmVjdGx5LiBQbGVhc2UsIG1ha2Ugc3VyZSB5b3UgdW5kZXJzdGFuZAotd2hhdCBiZWxvdyBjb21tYW5kcyBtZWFuIGJlZm9yZSBleGVjdXRpbmcgdGhlbS4KLQotTG9hZCB0aGUgbmV3IHUtYm9vdC5iaW4gZnJvbSBURlRQIHNlcnZlciB0byBtZW1vcnkgYWRkcmVzcyAyMDAwMDAKLT0+IHRmdHAgMjAwMDAwIHUtYm9vdC5iaW4KLQotRGlzYWJsZSBmbGFzaCBwcm90ZWN0aW9uCi09PiBwcm90ZWN0IG9mZiBhbGwKLQotRXJhc2UgdGhlIG9sZCB1LWJvb3QgZnJvbSBmZTAwMDAwMCB0byBmZTA2ZmZmZiBpbiBOT1IgZmxhc2guCi1UaGUgc2l6ZSBpcyAweDcwMDAwICg0NTg3NTIgYnl0ZXMpCi09PiBlcmFzZSBmZTAwMDAwMCBmZTA2ZmZmZgotCi1Db3B5IHRoZSBuZXcgdS1ib290IGZyb20gYWRkcmVzcyAyMDAwMDAgdG8gZmUwMDAwMDAKLXRoZSBzaXplIGlzIDB4NzAwMDAuIEl0IGhhcyB0byBiZSBncmVhdGVyIG9yIGVxdWFsIHRvIHUtYm9vdC5iaW4gc2l6ZQotPT4gY3AuYiAyMDAwMDAgZmUwMDAwMDAgNzAwMDAKLQotRW5hYmxlIGZsYXNoIHByb3RlY3Rpb24gYWdhaW4KLT0+IHByb3RlY3Qgb24gYWxsCi0KLVJlc2V0IHRoZSBib2FyZAotPT4gcmVzZXQKLQotLS0tIEJvb3RpbmcgZnJvbSBVU0IgZGlzayAtLS0KLQotIDEuIEZsYXNoIHBhcnRpdGlvbmVkIGltYWdlIHRvIHRoZSBVU0IgZGlzawotCi0gICAgIyBkZCBpZj1jb3JlLWltYWdlLW1pbmltYWwtbXBjODMxNWUtcmRiLndpYyBvZj0vZGV2L3NkYgotCi0gMi4gUGx1ZyBVU0IgZGlzayBpbnRvIHRoZSBNUEM4MzE1IGJvYXJkCi0KLSAzLiBDb25uZWN0IHRoZSBib2FyZCdzIGZpcnN0IHNlcmlhbCBwb3J0IHRvIHlvdXIgd29ya3N0YXRpb24gYW5kIHRoZW4gc3RhcnQgdXAKLSAgICB5b3VyIGZhdm91cml0ZSBzZXJpYWwgdGVybWluYWwgc28gdGhhdCB5b3Ugd2lsbCBiZSBhYmxlIHRvIGludGVyYWN0IHdpdGgKLSAgICB0aGUgc2VyaWFsIGNvbnNvbGUuIElmIHlvdSBkb24ndCBoYXZlIGEgZmF2b3VyaXRlLCBwaWNvY29tIGlzIHN1Z2dlc3RlZDoKLQotICAkIHBpY29jb20gL2Rldi90dHlVU0IwIC1iIDExNTIwMAotCi0gNC4gUG93ZXIgdXAgb3IgcmVzZXQgdGhlIGJvYXJkIGFuZCBwcmVzcyBhIGtleSBvbiB0aGUgdGVybWluYWwgd2hlbiBwcm9tcHRlZAotICAgIHRvIGdldCB0byB0aGUgVS1Cb290IGNvbW1hbmQgbGluZQotCi0gNS4gT3B0aW9uYWwuIExvYWQgdGhlIHUtYm9vdC5iaW4gZnJvbSB0aGUgVVNCIGRpc2s6Ci0KLSA9PiB1c2Igc3RhcnQKLSA9PiBleHQybG9hZCB1c2IgMDoxIDIwMDAwMCB1LWJvb3QuYmluCi0KLSAgICBhbmQgZmxhc2ggaXQgdG8gTk9SIGZsYXNoIGFzIGRlc2NyaWJlZCBhYm92ZS4KLQotIDYuIExvYWQgdGhlIGtlcm5lbCBhbmQgZHRiIGZyb20gdGhlIGZpcnN0IHBhcnRpdGlvbiBvZiB0aGUgVVNCIGRpc2s6Ci0KLSA9PiB1c2Igc3RhcnQKLSA9PiBleHQybG9hZCB1c2IgMDoxIDEwMDAwMDAgdUltYWdlCi0gPT4gZXh0MmxvYWQgdXNiIDA6MSAyMDAwMDAwIGR0YgotCi0gNy4gU2V0IGJvb3RhcmdzIGFuZCBib290IHVwIHRoZSBkZXZpY2UKLQotID0+IHNldGVudiBib290YXJncyByb290PS9kZXYvc2RiMiBydyByb290d2FpdCBjb25zb2xlPXR0eVMwLDExNTIwMAotID0+IGJvb3RtIDEwMDAwMDAgLSAyMDAwMDAwCi0KLQotLS0tIEJvb3RpbmcgZnJvbSBORlMgcm9vdCAtLS0KLQotTG9hZCB0aGUga2VybmVsIGFuZCBkdGIgKGRldmljZSB0cmVlIGJsb2IpLCBhbmQgYm9vdCB0aGUgc3lzdGVtIGFzIGZvbGxvd3M6Ci0KLSAxLiBHZXQgdGhlIGtlcm5lbCAodUltYWdlLW1wYzgzMTVlLXJkYi5iaW4pIGFuZCBkdGIgKHVJbWFnZS1tcGM4MzE1ZS1yZGIuZHRiKQotICAgIGZpbGVzIGZyb20gdGhlIHRtcC9kZXBsb3kgZGlyZWN0b3J5LCBhbmQgbWFrZSB0aGVtIGF2YWlsYWJsZSBvbiB5b3VyIFRGVFAKLSAgICBzZXJ2ZXIuCi0KLSAyLiBDb25uZWN0IHRoZSBib2FyZCdzIGZpcnN0IHNlcmlhbCBwb3J0IHRvIHlvdXIgd29ya3N0YXRpb24gYW5kIHRoZW4gc3RhcnQgdXAKLSAgICB5b3VyIGZhdm91cml0ZSBzZXJpYWwgdGVybWluYWwgc28gdGhhdCB5b3Ugd2lsbCBiZSBhYmxlIHRvIGludGVyYWN0IHdpdGgKLSAgICB0aGUgc2VyaWFsIGNvbnNvbGUuIElmIHlvdSBkb24ndCBoYXZlIGEgZmF2b3VyaXRlLCBwaWNvY29tIGlzIHN1Z2dlc3RlZDoKLQotICAkIHBpY29jb20gL2Rldi90dHlVU0IwIC1iIDExNTIwMAotCi0gMy4gUG93ZXIgdXAgb3IgcmVzZXQgdGhlIGJvYXJkIGFuZCBwcmVzcyBhIGtleSBvbiB0aGUgdGVybWluYWwgd2hlbiBwcm9tcHRlZAotICAgIHRvIGdldCB0byB0aGUgVS1Cb290IGNvbW1hbmQgbGluZQotCi0gNC4gU2V0IHVwIHRoZSBlbnZpcm9ubWVudCBpbiBVLUJvb3Q6Ci0KLSA9PiBzZXRlbnYgaXBhZGRyIDxib2FyZCBpcD4KLSA9PiBzZXRlbnYgc2VydmVyaXAgPHRmdHAgc2VydmVyIGlwPgotID0+IHNldGVudiBib290YXJncyByb290PS9kZXYvbmZzIHJ3IG5mc3Jvb3Q9PG5mc3Jvb3QgaXA+Ojxyb290ZnMgcGF0aD4gaXA9PGJvYXJkIGlwPjo8c2VydmVyIGlwPjo8Z2F0ZXdheSBpcD46MjU1LjI1NS4yNTUuMDptcGM4MzE1ZTpldGgwOm9mZiBjb25zb2xlPXR0eVMwLDExNTIwMAotCi0gNS4gRG93bmxvYWQgdGhlIGtlcm5lbCBhbmQgZHRiLCBhbmQgYm9vdDoKLQotID0+IHRmdHAgMTAwMDAwMCB1SW1hZ2UtbXBjODMxNWUtcmRiLmJpbgotID0+IHRmdHAgMjAwMDAwMCB1SW1hZ2UtbXBjODMxNWUtcmRiLmR0YgotID0+IGJvb3RtIDEwMDAwMDAgLSAyMDAwMDAwCi0KLS0tLSBCb290aW5nIGZyb20gSkZGUzIgcm9vdCAtLS0KLQotIDEuIEZpcnN0IGJvb3QgdGhlIGJvYXJkIHdpdGggTkZTIHJvb3QuCi0KLSAyLiBFcmFzZSB0aGUgTVREIHBhcnRpdGlvbiB3aGljaCB3aWxsIGJlIHVzZWQgYXMgcm9vdDoKLQotICAgICQgZmxhc2hfZXJhc2VhbGwgIC9kZXYvbXRkMwotCi0gMy4gQ29weSB0aGUgSkZGUzIgaW1hZ2UgdG8gdGhlIE1URCBwYXJ0aXRpb246Ci0KLSAgICAkIGZsYXNoY3AgY29yZS1pbWFnZS1taW5pbWFsLW1wYzgzMTVlLXJkYi5qZmZzMiAvZGV2L210ZDMKLQotIDQuIFRoZW4gcmVib290IHRoZSBib2FyZCBhbmQgc2V0IHVwIHRoZSBlbnZpcm9ubWVudCBpbiBVLUJvb3Q6Ci0KLSAgICA9PiBzZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L210ZGJsb2NrMyByb290ZnN0eXBlPWpmZnMyIGNvbnNvbGU9dHR5UzAsMTE1MjAwCi0KLQogVWJpcXVpdGkgTmV0d29ya3MgRWRnZVJvdXRlciBMaXRlIChlZGdlcm91dGVyKQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbGF5ZXIuY29uZiBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9sYXllci5jb25mCmluZGV4IGM5NGJiMDAuLjY0YjEyNDggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9sYXllci5jb25mCisrKyBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9sYXllci5jb25mCkBAIC05LDQgKzksNCBAQAogQkJGSUxFX1BBVFRFUk5feW9jdG9ic3AgPSAiXiR7TEFZRVJESVJ9LyIKIEJCRklMRV9QUklPUklUWV95b2N0b2JzcCA9ICI1IgogTEFZRVJWRVJTSU9OX3lvY3RvYnNwID0gIjQiCi1MQVlFUlNFUklFU19DT01QQVRfeW9jdG9ic3AgPSAiemV1cyIKK0xBWUVSU0VSSUVTX0NPTVBBVF95b2N0b2JzcCA9ICJkdW5mZWxsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvYmVhZ2xlYm9uZS15b2N0by5jb25mIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvYmVhZ2xlYm9uZS15b2N0by5jb25mCmluZGV4IDA4ZGQzYTUuLjViNDgxNDMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2JlYWdsZWJvbmUteW9jdG8uY29uZgorKysgYi9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9iZWFnbGVib25lLXlvY3RvLmNvbmYKQEAgLTI0LDcgKzI0LDcgQEAKIFNFUklBTF9DT05TT0xFU19DSEVDSyA9ICIke1NFUklBTF9DT05TT0xFU30iCiAKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAibGludXgteW9jdG8iCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNS4yJSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI1LjQlIgogCiBLRVJORUxfSU1BR0VUWVBFID0gInpJbWFnZSIKIEtFUk5FTF9ERVZJQ0VUUkVFID0gImFtMzM1eC1ib25lLmR0YiBhbTMzNXgtYm9uZWJsYWNrLmR0YiBhbTMzNXgtYm9uZWdyZWVuLmR0YiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2VkZ2Vyb3V0ZXIuY29uZiBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2VkZ2Vyb3V0ZXIuY29uZgppbmRleCA2MzMxMzY4Li5kNmZkOTM0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9lZGdlcm91dGVyLmNvbmYKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvZWRnZXJvdXRlci5jb25mCkBAIC0xMSw3ICsxMSw3IEBACiBLRVJORUxfSU1BR0VfU1RSSVBfRVhUUkFfU0VDVElPTlMgID0gIi5jb21tZW50IgogCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gImxpbnV4LXlvY3RvIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjUuMiUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNS40JSIKIAogU0VSSUFMX0NPTlNPTEVTID0gIjExNTIwMDt0dHlTMCIKIFVTRV9WVCA/PSAiMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2luY2x1ZGUvZ2VuZXJpY3g4Ni1jb21tb24uaW5jIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvaW5jbHVkZS9nZW5lcmljeDg2LWNvbW1vbi5pbmMKaW5kZXggZjgzY2U1Yy4uYTZjMzk2YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvaW5jbHVkZS9nZW5lcmljeDg2LWNvbW1vbi5pbmMKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvaW5jbHVkZS9nZW5lcmljeDg2LWNvbW1vbi5pbmMKQEAgLTIwLDYgKzIwLDcgQEAKIEVYVFJBX09FQ09ORl9hcHBlbmRfcG4tbWF0Y2hib3gtcGFuZWwtMiA9ICIgLS13aXRoLWJhdHRlcnk9YWNwaSIKIAogSU1BR0VfRlNUWVBFUyArPSAid2ljIHdpYy5ibWFwIgotV0tTX0ZJTEUgPz0gImdlbmVyaWN4ODYud2tzIgorV0tTX0ZJTEUgPz0gImdlbmVyaWN4ODYud2tzLmluIgorRUZJX1BST1ZJREVSID8/PSAiZ3J1Yi1lZmkiCiBkb19pbWFnZV93aWNbZGVwZW5kc10gKz0gImdwdGZkaXNrLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogZG9faW1hZ2Vfd2ljW3JlY3JkZXB0YXNrXSArPSAiZG9fYm9vdGltZyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL21wYzgzMTVlLXJkYi5jb25mIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvbXBjODMxNWUtcmRiLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzODI3OTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvbXBjODMxNWUtcmRiLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0jQFRZUEU6IE1hY2hpbmUKLSNATkFNRTogRnJlZXNjYWxlIE1QQzgzMTVFLVJEQgotI0BERVNDUklQVElPTjogTWFjaGluZSBjb25maWd1cmF0aW9uIGZvciBGcmVlc2NhbGUgTVBDODMxNUUtUkRCCi0KLVRBUkdFVF9GUFUgPSAiIgotCi1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTMwMGMzLmluYwotCi1LRVJORUxfSU1BR0VUWVBFID0gInVJbWFnZSIKLQotRVhUUkFfSU1BR0VERVBFTkRTICs9ICJ1LWJvb3QiCi1VQk9PVF9NQUNISU5FID0gIk1QQzgzMTVFUkRCX2NvbmZpZyIKLQotU0VSSUFMX0NPTlNPTEVTID0gIjExNTIwMDt0dHlTMCIKLQotTUFDSElORV9GRUFUVVJFUyA9ICJrZXlib2FyZCBwY2kgZXh0MiBleHQzIHNlcmlhbCIKLQotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjUuMiUiCi1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gImxpbnV4LXlvY3RvIgotCi1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC94c2VydmVyID89ICJ4c2VydmVyLXhvcmciCi1YU0VSVkVSID89ICJ4c2VydmVyLXhvcmcgXAotICAgICAgICAgICAgeGY4Ni12aWRlby1mYmRldiIKLQotVUJPT1RfRU5UUllQT0lOVCA9ICIweDAwMDAwMDAwIgotCi1LRVJORUxfREVWSUNFVFJFRSA9ICJtcGM4MzE1ZXJkYi5kdGIiCi0KLU1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgPSAia2VybmVsLW1vZHVsZXMiCi0KLUlNQUdFX0ZTVFlQRVMgPz0gImpmZnMyIHRhci5iejIiCi1KRkZTMl9FUkFTRUJMT0NLID0gIjB4NDAwMCIKLQotSU1BR0VfRlNUWVBFUyArPSAid2ljIHdpYy5ibWFwIgotV0tTX0ZJTEUgPz0gJ21wYzgzMTVlLXJkYi53a3MnCi1JTUFHRV9CT09UX0ZJTEVTID89ICJ1LWJvb3QuYmluIHVJbWFnZSBtcGM4MzE1ZXJkYi5kdGI7ZHRiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zeXN0ZW1kX2Jvb3QucHkgYi9wb2t5L21ldGEteW9jdG8tYnNwL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3N5c3RlbWRfYm9vdC5weQppbmRleCAwYTNhMmNkLi41NzU5OWUxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3N5c3RlbWRfYm9vdC5weQorKysgYi9wb2t5L21ldGEteW9jdG8tYnNwL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3N5c3RlbWRfYm9vdC5weQpAQCAtMzAsNyArMzAsNyBAQAogICAgICAgICBydW5DbWQoJ3JtIC1mICVzJyAlIHN5c3RlbWRib290ZmlsZSkKIAogICAgICAgICAjIEJ1aWxkIGEgZ2VuZXJpY3g4Ni02NC9lZmkgc3lzdGVtZGJvb3QgaW1hZ2UKLSAgICAgICAgYml0YmFrZSgnbXRvb2xzLW5hdGl2ZSBjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICBiaXRiYWtlKCdtdG9vbHMtbmF0aXZlIGNvcmUtaW1hZ2UtbWluaW1hbCB3aWMtdG9vbHMnKQogCiAgICAgICAgIGZvdW5kID0gb3MucGF0aC5pc2ZpbGUoc3lzdGVtZGJvb3RmaWxlKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsICdTeXN0ZW1kLUJvb3QgZmlsZSAlcyBub3QgZm91bmQnICUgc3lzdGVtZGJvb3RmaWxlKQpAQCAtMzgsOSArMzgsOSBAQAogICAgICAgICAiIiIKICAgICAgICAgU3VtbWFyeTogICAgICBDaGVjayBpZiBFRkkgYm9vdGxvYWRlciBmb3Igc3lzdGVtZCBpcyBjb3JyZWN0bHkgYnVpbGQKICAgICAgICAgRGVwZW5kZW5jaWVzOiBJbWFnZSB3YXMgYnVpbHQgY29ycmVjdGx5IG9uIHRlc3RjYXNlIDE0NDUKLSAgICAgICAgU3RlcHM6ICAgICAgICAxLiBDb3B5IGJvb3R4NjQuZWZpIGZpbGUgZm9ybSB0aGUgaGRkaW1nIGNyZWF0ZWQKKyAgICAgICAgU3RlcHM6ICAgICAgICAxLiBDb3B5IGJvb3R4NjQuZWZpIGZpbGUgZnJvbSB0aGUgd2ljIGNyZWF0ZWQKICAgICAgICAgICAgICAgICAgICAgICB1bmRlciBidWlsZC90bXAvZGVwbG95L2ltYWdlcy9nZW5lcmljeDg2LTY0Ci0gICAgICAgICAgICAgICAgICAgICAgMi4gQ2hlY2sgYm9vdHg2NC5lZmkgd2FzIGNvcGllZCBmb3JtIGhkZGltZworICAgICAgICAgICAgICAgICAgICAgIDIuIENoZWNrIGJvb3R4NjQuZWZpIHdhcyBjb3BpZWQgZnJvbSB3aWMKICAgICAgICAgICAgICAgICAgICAgICAzLiBWZXJpZnkgdGhlIGNoZWNrc3VtcyBmcm9tIHRoZSBjb3BpZWQgYW5kIHByZXZpb3VzbHkKICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGZpbGUgYXJlIGVxdWFsLgogICAgICAgICBFeHBlY3RlZCA6ICAgIFN5c3RlbWQtYm9vdHg2NC5lZmkgYW5kIGJvb3R4NjQuZWZpIHNob3VsZCBiZSB0aGUgc2FtZQpAQCAtNTAsMTYgKzUwLDE3IEBACiAgICAgICAgIEF1dG9tYXRlZEJ5OiAgSm9zZSBQZXJleiBDYXJyYW56YSA8am9zZS5wZXJlei5jYXJyYW56YSBhdCBsaW51eC1pbnRlbC5jb20+CiAgICAgICAgICIiIgogCi0gICAgICAgIHN5c3RlbWRib290aW1hZ2UgPSBvcy5wYXRoLmpvaW4oZGVwbG95ZGlyLCAnY29yZS1pbWFnZS1taW5pbWFsLWdlbmVyaWN4ODYtNjQuaGRkaW1nJykKKyAgICAgICAgc3lzdGVtZGJvb3RpbWFnZSA9IG9zLnBhdGguam9pbihkZXBsb3lkaXIsICdjb3JlLWltYWdlLW1pbmltYWwtZ2VuZXJpY3g4Ni02NC53aWMnKQogICAgICAgICBpbWFnZWJvb3RmaWxlID0gb3MucGF0aC5qb2luKGRlcGxveWRpciwgJ2Jvb3R4NjQuZWZpJykKLSAgICAgICAgbWNvcHluYXRpdmUgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignU1RBR0lOR19CSU5ESVJfTkFUSVZFJywgImNvcmUtaW1hZ2UtbWluaW1hbCIpLCAnbWNvcHknKQogCiAgICAgICAgICMgQ2xlYW4gZW52aXJvbm1lbnQgYmVmb3JlIHN0YXJ0IHRoZSB0ZXN0CiAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGltYWdlYm9vdGZpbGUpOgogICAgICAgICAgICAgcnVuQ21kKCdybSAtZiAlcycgJSBpbWFnZWJvb3RmaWxlKQogCi0gICAgICAgIHJ1bkNtZCgnJXMgLWkgJXMgOjpFRkkvQk9PVC9ib290eDY0LmVmaSAlcycgJSAobWNvcHluYXRpdmUgLHN5c3RlbWRib290aW1hZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlYm9vdGZpbGUpKQorICAgICAgICBzeXNyb290ID0gZ2V0X2JiX3ZhcignUkVDSVBFX1NZU1JPT1RfTkFUSVZFJywgJ3dpYy10b29scycpCisKKyAgICAgICAgcnVuQ21kKCd3aWMgY3AgJXM6MS9FRkkvQk9PVC9ib290eDY0LmVmaSAlcyAtbiAlcycgJSAoc3lzdGVtZGJvb3RpbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2Vib290ZmlsZSwgc3lzcm9vdCkpCiAKICAgICAgICAgZm91bmQgPSBvcy5wYXRoLmlzZmlsZShpbWFnZWJvb3RmaWxlKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsICdib290eDY0LmVmaSBmaWxlICVzIHdhcyBub3QgY29waWVkIGZyb20gaW1hZ2UnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZCBiL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCmluZGV4IGYwNDRkYWYuLjZlNWExMjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCisrKyBiL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCkBAIC0yLDcgKzIsNiBAQAogS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJzdGFuZGFyZC9iYXNlIgogS0JSQU5DSF9lZGdlcm91dGVyID0gInN0YW5kYXJkL2VkZ2Vyb3V0ZXIiCiBLQlJBTkNIX2JlYWdsZWJvbmUteW9jdG8gPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKLUtCUkFOQ0hfbXBjODMxNWUtcmRiID0gInN0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCiAKIEtNQUNISU5FX2dlbmVyaWN4ODYgPz0gImNvbW1vbi1wYyIKIEtNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKQEAgLTEyLDQgKzExLDMgQEAKIENPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2LTY0ID0gImdlbmVyaWN4ODYtNjQiCiBDT01QQVRJQkxFX01BQ0hJTkVfZWRnZXJvdXRlciA9ICJlZGdlcm91dGVyIgogQ09NUEFUSUJMRV9NQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPSAiYmVhZ2xlYm9uZS15b2N0byIKLUNPTVBBVElCTEVfTUFDSElORV9tcGM4MzE1ZS1yZGIgPSAibXBjODMxNWUtcmRiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE5LmJiYXBwZW5kIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE5LmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzI2OWQ5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xOS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUtCUkFOQ0hfZ2VuZXJpY3g4NiAgPSAidjQuMTkvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfZ2VuZXJpY3g4Ni02NCAgPSAidjQuMTkvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfZWRnZXJvdXRlciA9ICJ2NC4xOS9zdGFuZGFyZC9lZGdlcm91dGVyIgotS0JSQU5DSF9iZWFnbGVib25lLXlvY3RvID0gInY0LjE5L3N0YW5kYXJkL2JlYWdsZWJvbmUiCi1LQlJBTkNIX21wYzgzMTVlLXJkYiA9ICJ2NC4xOS9zdGFuZGFyZC9mc2wtbXBjODMxNWUtcmRiIgotCi1LTUFDSElORV9nZW5lcmljeDg2ID89ICJjb21tb24tcGMiCi1LTUFDSElORV9nZW5lcmljeDg2LTY0ID89ICJjb21tb24tcGMtNjQiCi1LTUFDSElORV9iZWFnbGVib25lLXlvY3RvID89ICJiZWFnbGVib25lIgotCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ICAgID89ICI1NjY0ZGMxNDM5OWVkY2FhZDIxMGJiZWI2MzQzZDg0NTYxZmIzZWE4IgotU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4Ni02NCA/PSAiNTY2NGRjMTQzOTllZGNhYWQyMTBiYmViNjM0M2Q4NDU2MWZiM2VhOCIKLVNSQ1JFVl9tYWNoaW5lX2VkZ2Vyb3V0ZXIgPz0gIjU2NjRkYzE0Mzk5ZWRjYWFkMjEwYmJlYjYzNDNkODQ1NjFmYjNlYTgiCi1TUkNSRVZfbWFjaGluZV9iZWFnbGVib25lLXlvY3RvID89ICI1NjY0ZGMxNDM5OWVkY2FhZDIxMGJiZWI2MzQzZDg0NTYxZmIzZWE4IgotU1JDUkVWX21hY2hpbmVfbXBjODMxNWUtcmRiID89ICJkNDE5ZjRjYTZiYTRiMDk3YjhhZDcxMGE5M2I4OTUxMGY1YjI5OThjIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4NiA9ICJnZW5lcmljeDg2IgotQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYtNjQgPSAiZ2VuZXJpY3g4Ni02NCIKLUNPTVBBVElCTEVfTUFDSElORV9lZGdlcm91dGVyID0gImVkZ2Vyb3V0ZXIiCi1DT01QQVRJQkxFX01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA9ICJiZWFnbGVib25lLXlvY3RvIgotQ09NUEFUSUJMRV9NQUNISU5FX21wYzgzMTVlLXJkYiA9ICJtcGM4MzE1ZS1yZGIiCi0KLUxJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4NiA9ICI0LjE5LjM0IgotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2LTY0ID0gIjQuMTkuMzQiCi1MSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNC4xOS4zNCIKLUxJTlVYX1ZFUlNJT05fYmVhZ2xlYm9uZS15b2N0byA9ICI0LjE5LjM0IgotTElOVVhfVkVSU0lPTl9tcGM4MzE1ZS1yZGIgPSAiNC4xOS4zNCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS4yLmJiYXBwZW5kIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjIuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxNWJjY2IuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjIuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1LQlJBTkNIX2dlbmVyaWN4ODYgID0gInY1LjIvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfZ2VuZXJpY3g4Ni02NCAgPSAidjUuMi9zdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9lZGdlcm91dGVyID0gInY1LjIvc3RhbmRhcmQvZWRnZXJvdXRlciIKLUtCUkFOQ0hfYmVhZ2xlYm9uZS15b2N0byA9ICJ2NS4yL3N0YW5kYXJkL2JlYWdsZWJvbmUiCi1LQlJBTkNIX21wYzgzMTVlLXJkYiA9ICJ2NS4yL3N0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCi0KLUtNQUNISU5FX2dlbmVyaWN4ODYgPz0gImNvbW1vbi1wYyIKLUtNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKLUtNQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPz0gImJlYWdsZWJvbmUiCi0KLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gIjI1YjE0Y2RmOTY1OWM2OGFiMzJkNjY2MTZkZmRiYmUyZWNlM2ZkOTQiCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICIyNWIxNGNkZjk2NTljNjhhYjMyZDY2NjE2ZGZkYmJlMmVjZTNmZDk0IgotU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiMjViMTRjZGY5NjU5YzY4YWIzMmQ2NjYxNmRmZGJiZTJlY2UzZmQ5NCIKLVNSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gIjI1YjE0Y2RmOTY1OWM2OGFiMzJkNjY2MTZkZmRiYmUyZWNlM2ZkOTQiCi1TUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjc3ZjAzMWIxODI4ODVjMTc3YjNhOTYwOThhZTYxMjcxOTExYTc5NTQiCi0KLUNPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCi1DT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgotQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKLUNPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lLXlvY3RvID0gImJlYWdsZWJvbmUteW9jdG8iCi1DT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKLQotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjUuMi4xNyIKLUxJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4Ni02NCA9ICI1LjIuMTciCi1MSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNS4yLjE3IgotTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjUuMi4xNyIKLUxJTlVYX1ZFUlNJT05fbXBjODMxNWUtcmRiID0gIjUuMi4xNyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS40LmJiYXBwZW5kIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjQuYmJhcHBlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTczNGNkNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS40LmJiYXBwZW5kCkBAIC0wLDAgKzEsMjMgQEAKK0tCUkFOQ0hfZ2VuZXJpY3g4NiAgPSAidjUuNC9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJ2NS40L3N0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX2VkZ2Vyb3V0ZXIgPSAidjUuNC9zdGFuZGFyZC9lZGdlcm91dGVyIgorS0JSQU5DSF9iZWFnbGVib25lLXlvY3RvID0gInY1LjQvc3RhbmRhcmQvYmVhZ2xlYm9uZSIKKworS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgorS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgorS01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA/PSAiYmVhZ2xlYm9uZSIKKworU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4NiA/PSAiZjRkN2RiYWZiMTAzZTRmNzgyMzIzMDE3YzIzOWM1NDg4NzFjMTU2NyIKK1NSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYtNjQgPz0gImY0ZDdkYmFmYjEwM2U0Zjc4MjMyMzAxN2MyMzljNTQ4ODcxYzE1NjciCitTUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICJmNGQ3ZGJhZmIxMDNlNGY3ODIzMjMwMTdjMjM5YzU0ODg3MWMxNTY3IgorU1JDUkVWX21hY2hpbmVfYmVhZ2xlYm9uZS15b2N0byA/PSAiZjRkN2RiYWZiMTAzZTRmNzgyMzIzMDE3YzIzOWM1NDg4NzFjMTU2NyIKKworQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYgPSAiZ2VuZXJpY3g4NiIKK0NPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2LTY0ID0gImdlbmVyaWN4ODYtNjQiCitDT01QQVRJQkxFX01BQ0hJTkVfZWRnZXJvdXRlciA9ICJlZGdlcm91dGVyIgorQ09NUEFUSUJMRV9NQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPSAiYmVhZ2xlYm9uZS15b2N0byIKKworTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjUuNC4yMCIKK0xJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4Ni02NCA9ICI1LjQuMjAiCitMSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNS40LjIwIgorTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjUuNC4yMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3Avd2ljL2dlbmVyaWN4ODYud2tzIGIvcG9reS9tZXRhLXlvY3RvLWJzcC93aWMvZ2VuZXJpY3g4Ni53a3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhYjcxOWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC93aWMvZ2VuZXJpY3g4Ni53a3MKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLSMgc2hvcnQtZGVzY3JpcHRpb246IENyZWF0ZSBhbiBFRkkgZGlzayBpbWFnZSBmb3IgZ2VuZXJpY3g4NioKLSMgbG9uZy1kZXNjcmlwdGlvbjogQ3JlYXRlcyBhIHBhcnRpdGlvbmVkIEVGSSBkaXNrIGltYWdlIGZvciBnZW5lcmljeDg2KiBtYWNoaW5lcwotcGFydCAvYm9vdCAtLXNvdXJjZSBib290aW1nLWVmaSAtLXNvdXJjZXBhcmFtcz0ibG9hZGVyPWdydWItZWZpIiAtLW9uZGlzayBzZGEgLS1sYWJlbCBtc2RvcyAtLWFjdGl2ZSAtLWFsaWduIDEwMjQKLXBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgc2RhIC0tZnN0eXBlPWV4dDQgLS1sYWJlbCBwbGF0Zm9ybSAtLWFsaWduIDEwMjQgLS11c2UtdXVpZAotcGFydCBzd2FwIC0tb25kaXNrIHNkYSAtLXNpemUgNDQgLS1sYWJlbCBzd2FwMSAtLWZzdHlwZT1zd2FwCi0KLWJvb3Rsb2FkZXIgLS1wdGFibGUgZ3B0IC0tdGltZW91dD01IC0tYXBwZW5kPSJyb290ZnN0eXBlPWV4dDQgY29uc29sZT10dHlTMCwxMTUyMDAgY29uc29sZT10dHkwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC93aWMvZ2VuZXJpY3g4Ni53a3MuaW4gYi9wb2t5L21ldGEteW9jdG8tYnNwL3dpYy9nZW5lcmljeDg2Lndrcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzA5YWQwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC93aWMvZ2VuZXJpY3g4Ni53a3MuaW4KQEAgLTAsMCArMSw3IEBACisjIHNob3J0LWRlc2NyaXB0aW9uOiBDcmVhdGUgYW4gRUZJIGRpc2sgaW1hZ2UgZm9yIGdlbmVyaWN4ODYqCisjIGxvbmctZGVzY3JpcHRpb246IENyZWF0ZXMgYSBwYXJ0aXRpb25lZCBFRkkgZGlzayBpbWFnZSBmb3IgZ2VuZXJpY3g4NiogbWFjaGluZXMKK3BhcnQgL2Jvb3QgLS1zb3VyY2UgYm9vdGltZy1lZmkgLS1zb3VyY2VwYXJhbXM9ImxvYWRlcj0ke0VGSV9QUk9WSURFUn0iIC0tb25kaXNrIHNkYSAtLWxhYmVsIG1zZG9zIC0tYWN0aXZlIC0tYWxpZ24gMTAyNAorcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBzZGEgLS1mc3R5cGU9ZXh0NCAtLWxhYmVsIHBsYXRmb3JtIC0tYWxpZ24gMTAyNCAtLXVzZS11dWlkCitwYXJ0IHN3YXAgLS1vbmRpc2sgc2RhIC0tc2l6ZSA0NCAtLWxhYmVsIHN3YXAxIC0tZnN0eXBlPXN3YXAKKworYm9vdGxvYWRlciAtLXB0YWJsZSBncHQgLS10aW1lb3V0PTUgLS1hcHBlbmQ9InJvb3Rmc3R5cGU9ZXh0NCBjb25zb2xlPXR0eVMwLDExNTIwMCBjb25zb2xlPXR0eTAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL3dpYy9tcGM4MzE1ZS1yZGIud2tzIGIvcG9reS9tZXRhLXlvY3RvLWJzcC93aWMvbXBjODMxNWUtcmRiLndrcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDBjYjYwNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL3dpYy9tcGM4MzE1ZS1yZGIud2tzCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0jIHNob3J0LWRlc2NyaXB0aW9uOiBDcmVhdGUgU0QgY2FyZCBpbWFnZSBmb3IgTVBDODMxNUUtUkRCCi0jIGxvbmctZGVzY3JpcHRpb246IENyZWF0ZSBhIHBhcnRpdGlvbmVkIFNEIGNhcmQgaW1hZ2UgZm9yIEZyZWVzY2FsZSBNUEM4MzE1RS1SREIgcmVmZXJlbmNlIGhhcmR3YXJlLgotcGFydCAvYm9vdCAtLXNvdXJjZSBib290aW1nLXBhcnRpdGlvbiAtLW9uZGlzayBzZGIgLS1mc3R5cGU9ZXh0MyAtLWxhYmVsIGJvb3QKLXBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgc2RiIC0tZnN0eXBlPWV4dDMgLS1sYWJlbCByb290CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9hcmNoaXZlci5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcwppbmRleCA3YzQ2Y2ZmLi40OGI0OTEzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9hcmNoaXZlci5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3MKQEAgLTIsMjUgKzIsNDIgQEAKICMgLSotIHRhYi13aWR0aDogNDsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbCAtKi0KICMKICMgVGhpcyBiYmNsYXNzIGlzIHVzZWQgZm9yIGNyZWF0aW5nIGFyY2hpdmUgZm9yOgotIyAxKSBvcmlnaW5hbCAob3IgdW5wYWNrZWQpIHNvdXJjZTogQVJDSElWRVJfTU9ERVtzcmNdID0gIm9yaWdpbmFsIgotIyAyKSBwYXRjaGVkIHNvdXJjZTogQVJDSElWRVJfTU9ERVtzcmNdID0gInBhdGNoZWQiIChkZWZhdWx0KQotIyAzKSBjb25maWd1cmVkIHNvdXJjZTogQVJDSElWRVJfTU9ERVtzcmNdID0gImNvbmZpZ3VyZWQiCi0jIDQpIFRoZSBwYXRjaGVzIGJldHdlZW4gZG9fdW5wYWNrIGFuZCBkb19wYXRjaDoKLSMgICAgQVJDSElWRVJfTU9ERVtkaWZmXSA9ICIxIgotIyAgICBBbmQgeW91IGNhbiBzZXQgdGhlIG9uZSB0aGF0IHlvdSdkIGxpa2UgdG8gZXhjbHVkZSBmcm9tIHRoZSBkaWZmOgotIyAgICBBUkNISVZFUl9NT0RFW2RpZmYtZXhjbHVkZV0gPz0gIi5wYyBhdXRvbTR0ZS5jYWNoZSBwYXRjaGVzIgotIyA1KSBUaGUgZW52aXJvbm1lbnQgZGF0YSwgc2ltaWxhciB0byAnYml0YmFrZSAtZSByZWNpcGUnOgotIyAgICBBUkNISVZFUl9NT0RFW2R1bXBkYXRhXSA9ICIxIgotIyA2KSBUaGUgcmVjaXBlICguYmIgYW5kIC5pbmMpOiBBUkNISVZFUl9NT0RFW3JlY2lwZV0gPSAiMSIKLSMgNykgV2hldGhlciBvdXRwdXQgdGhlIC5zcmMucnBtIHBhY2thZ2U6Ci0jICAgIEFSQ0hJVkVSX01PREVbc3JwbV0gPSAiMSIKLSMgOCkgRmlsdGVyIHRoZSBsaWNlbnNlLCB0aGUgcmVjaXBlIHdob3NlIGxpY2Vuc2UgaW4KLSMgICAgQ09QWUxFRlRfTElDRU5TRV9JTkNMVURFIHdpbGwgYmUgaW5jbHVkZWQsIGFuZCBpbgotIyAgICBDT1BZTEVGVF9MSUNFTlNFX0VYQ0xVREUgd2lsbCBiZSBleGNsdWRlZC4KLSMgICAgQ09QWUxFRlRfTElDRU5TRV9JTkNMVURFID0gJ0dQTCogTEdQTConCi0jICAgIENPUFlMRUZUX0xJQ0VOU0VfRVhDTFVERSA9ICdDTE9TRUQgUHJvcHJpZXRhcnknCi0jIDkpIFRoZSByZWNpcGUgdHlwZSB0aGF0IHdpbGwgYmUgYXJjaGl2ZWQ6Ci0jICAgIENPUFlMRUZUX1JFQ0lQRV9UWVBFUyA9ICd0YXJnZXQnCisjICAxKSBvcmlnaW5hbCAob3IgdW5wYWNrZWQpIHNvdXJjZTogQVJDSElWRVJfTU9ERVtzcmNdID0gIm9yaWdpbmFsIgorIyAgMikgcGF0Y2hlZCBzb3VyY2U6IEFSQ0hJVkVSX01PREVbc3JjXSA9ICJwYXRjaGVkIiAoZGVmYXVsdCkKKyMgIDMpIGNvbmZpZ3VyZWQgc291cmNlOiBBUkNISVZFUl9NT0RFW3NyY10gPSAiY29uZmlndXJlZCIKKyMgIDQpIHNvdXJjZSBtaXJyb3I6IEFSQ0hJVkVfTU9ERVtzcmNdID0gIm1pcnJvciIKKyMgIDUpIFRoZSBwYXRjaGVzIGJldHdlZW4gZG9fdW5wYWNrIGFuZCBkb19wYXRjaDoKKyMgICAgIEFSQ0hJVkVSX01PREVbZGlmZl0gPSAiMSIKKyMgICAgIEFuZCB5b3UgY2FuIHNldCB0aGUgb25lIHRoYXQgeW91J2QgbGlrZSB0byBleGNsdWRlIGZyb20gdGhlIGRpZmY6CisjICAgICBBUkNISVZFUl9NT0RFW2RpZmYtZXhjbHVkZV0gPz0gIi5wYyBhdXRvbTR0ZS5jYWNoZSBwYXRjaGVzIgorIyAgNikgVGhlIGVudmlyb25tZW50IGRhdGEsIHNpbWlsYXIgdG8gJ2JpdGJha2UgLWUgcmVjaXBlJzoKKyMgICAgIEFSQ0hJVkVSX01PREVbZHVtcGRhdGFdID0gIjEiCisjICA3KSBUaGUgcmVjaXBlICguYmIgYW5kIC5pbmMpOiBBUkNISVZFUl9NT0RFW3JlY2lwZV0gPSAiMSIKKyMgIDgpIFdoZXRoZXIgb3V0cHV0IHRoZSAuc3JjLnJwbSBwYWNrYWdlOgorIyAgICAgQVJDSElWRVJfTU9ERVtzcnBtXSA9ICIxIgorIyAgOSkgRmlsdGVyIHRoZSBsaWNlbnNlLCB0aGUgcmVjaXBlIHdob3NlIGxpY2Vuc2UgaW4KKyMgICAgIENPUFlMRUZUX0xJQ0VOU0VfSU5DTFVERSB3aWxsIGJlIGluY2x1ZGVkLCBhbmQgaW4KKyMgICAgIENPUFlMRUZUX0xJQ0VOU0VfRVhDTFVERSB3aWxsIGJlIGV4Y2x1ZGVkLgorIyAgICAgQ09QWUxFRlRfTElDRU5TRV9JTkNMVURFID0gJ0dQTCogTEdQTConCisjICAgICBDT1BZTEVGVF9MSUNFTlNFX0VYQ0xVREUgPSAnQ0xPU0VEIFByb3ByaWV0YXJ5JworIyAxMCkgVGhlIHJlY2lwZSB0eXBlIHRoYXQgd2lsbCBiZSBhcmNoaXZlZDoKKyMgICAgIENPUFlMRUZUX1JFQ0lQRV9UWVBFUyA9ICd0YXJnZXQnCisjIDExKSBUaGUgc291cmNlIG1pcnJvciBtb2RlOgorIyAgICAgQVJDSElWRVJfTU9ERVttaXJyb3JdID0gInNwbGl0IiAoZGVmYXVsdCk6IFNvdXJjZXMgYXJlIHNwbGl0IGludG8KKyMgICAgIHBlci1yZWNpcGUgZGlyZWN0b3JpZXMgaW4gYSBzaW1pbGFyIHdheSB0byBvdGhlciBhcmNoaXZlciBtb2Rlcy4KKyMgICAgIFBvc3QtcHJvY2Vzc2luZyBtYXkgYmUgcmVxdWlyZWQgdG8gcHJvZHVjZSBhIHNpbmdsZSBtaXJyb3IgZGlyZWN0b3J5LgorIyAgICAgVGhpcyBkb2VzIGhvd2V2ZXIgYWxsb3cgaW5zcGVjdGlvbiBvZiBkdXBsaWNhdGUgc291cmNlcyBhbmQgbW9yZQorIyAgICAgaW50ZWxsaWdlbnQgaGFuZGxpbmcuCisjICAgICBBUkNISVZFUl9NT0RFW21pcnJvcl0gPSAiY29tYmluZWQiOiBBbGwgc291cmNlcyBhcmUgcGxhY2VkIGludG8gYSBzaW5nbGUKKyMgICAgIGRpcmVjdG9yeSBzdWl0YWJsZSBmb3IgZGlyZWN0IHVzZSBhcyBhIG1pcnJvci4gRHVwbGljYXRlIHNvdXJjZXMgYXJlCisjICAgICBpZ25vcmVkLgorIyAxMikgU291cmNlIG1pcnJvciBleGNsdXNpb25zOgorIyAgICAgQVJDSElWRVJfTUlSUk9SX0VYQ0xVREUgaXMgYSBsaXN0IG9mIHByZWZpeGVzIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgbWlycm9yLgorIyAgICAgVGhpcyBtYXkgYmUgdXNlZCBmb3Igc291cmNlcyB3aGljaCB5b3UgYXJlIGFscmVhZHkgcHVibGlzaGluZyB5b3Vyc2VsZgorIyAgICAgKGUuZy4gaWYgdGhlIFVSSSBzdGFydHMgd2l0aCAnaHR0cHM6Ly9teXNpdGUuY29tLycgYW5kIHlvdXIgbWlycm9yIGlzCisjICAgICBnb2luZyB0byBiZSBwdWJsaXNoZWQgdG8gdGhlIHNhbWUgc2l0ZSkuIEl0IG1heSBhbHNvIGJlIHVzZWQgdG8gZXhjbHVkZQorIyAgICAgbG9jYWwgZmlsZXMgKHdpdGggdGhlIHByZWZpeCAnZmlsZTovLycpIGlmIHRoZXNlIHdpbGwgYmUgcHJvdmlkZWQgYXMgcGFydAorIyAgICAgb2YgYW4gYXJjaGl2ZSBvZiB0aGUgbGF5ZXJzIHRoZW1zZWx2ZXMuCiAjCiAKICMgQ3JlYXRlIGFyY2hpdmUgZm9yIGFsbCB0aGUgcmVjaXBlIHR5cGVzCkBAIC0zMyw2ICs1MCw3IEBACiBBUkNISVZFUl9NT0RFW2RpZmYtZXhjbHVkZV0gPz0gIi5wYyBhdXRvbTR0ZS5jYWNoZSBwYXRjaGVzIgogQVJDSElWRVJfTU9ERVtkdW1wZGF0YV0gPz0gIjAiCiBBUkNISVZFUl9NT0RFW3JlY2lwZV0gPz0gIjAiCitBUkNISVZFUl9NT0RFW21pcnJvcl0gPz0gInNwbGl0IgogCiBERVBMT1lfRElSX1NSQyA/PSAiJHtERVBMT1lfRElSfS9zb3VyY2VzIgogQVJDSElWRVJfVE9QRElSID89ICIke1dPUktESVJ9L2RlcGxveS1zb3VyY2VzIgpAQCAtNDEsNiArNTksMTAgQEAKIEFSQ0hJVkVSX1JQTU9VVERJUiA9ICIke0FSQ0hJVkVSX1JQTVRPUERJUn0vJHtUQVJHRVRfU1lTfS8ke1BGfS8iCiBBUkNISVZFUl9XT1JLRElSID0gIiR7V09SS0RJUn0vYXJjaGl2ZXItd29yay8iCiAKKyMgV2hlbiBwcm9kdWNpbmcgYSBjb21iaW5lZCBtaXJyb3IgZGlyZWN0b3J5LCBhbGxvdyBkdXBsaWNhdGVzIGZvciB0aGUgY2FzZQorIyB3aGVyZSBtdWx0aXBsZSByZWNpcGVzIHVzZSB0aGUgc2FtZSBTUkNfVVJJLgorQVJDSElWRVJfQ09NQklORURfTUlSUk9SRElSID0gIiR7QVJDSElWRVJfVE9QRElSfS9taXJyb3IiCitTU1RBVEVfRFVQV0hJVEVMSVNUICs9ICIke0RFUExPWV9ESVJfU1JDfS9taXJyb3IiCiAKIGRvX2R1bXBkYXRhW2RpcnNdID0gIiR7QVJDSElWRVJfT1VURElSfSIKIGRvX2FyX3JlY2lwZVtkaXJzXSA9ICIke0FSQ0hJVkVSX09VVERJUn0iCkBAIC0xMDYsNiArMTI4LDggQEAKICAgICAgICAgZWxpZiBoYXNUYXNrKCJkb19jb25maWd1cmUiKToKICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fYXJfY29uZmlndXJlZCcsICdkZXBlbmRzJywgJyAlczpkb19jb25maWd1cmUnICUgcG4pCiAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fZGVwbG95X2FyY2hpdmVzJywgJ2RlcGVuZHMnLCAnICVzOmRvX2FyX2NvbmZpZ3VyZWQnICUgcG4pCisgICAgZWxpZiBhcl9zcmMgPT0gIm1pcnJvciI6CisgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fZGVwbG95X2FyY2hpdmVzJywgJ2RlcGVuZHMnLCAnJXM6ZG9fYXJfbWlycm9yJyAlIHBuKQogCiAgICAgZWxpZiBhcl9zcmM6CiAgICAgICAgIGJiLmZhdGFsKCJJbnZhbGlkIEFSQ0hJVkVSX01PREVbc3JjXTogJXMiICUgYXJfc3JjKQpAQCAtMjgxLDYgKzMwNSw3OSBAQAogICAgICAgICBjcmVhdGVfdGFyYmFsbChkLCBzcmNkaXIsICdjb25maWd1cmVkJywgYXJfb3V0ZGlyKQogfQogCitweXRob24gZG9fYXJfbWlycm9yKCkgeworICAgIGltcG9ydCBzdWJwcm9jZXNzCisKKyAgICBzcmNfdXJpID0gKGQuZ2V0VmFyKCdTUkNfVVJJJykgb3IgJycpLnNwbGl0KCkKKyAgICBpZiBsZW4oc3JjX3VyaSkgPT0gMDoKKyAgICAgICAgcmV0dXJuCisKKyAgICBkbF9kaXIgPSBkLmdldFZhcignRExfRElSJykKKyAgICBtaXJyb3JfZXhjbHVzaW9ucyA9IChkLmdldFZhcignQVJDSElWRVJfTUlSUk9SX0VYQ0xVREUnKSBvciAnJykuc3BsaXQoKQorICAgIG1pcnJvcl9tb2RlID0gZC5nZXRWYXJGbGFnKCdBUkNISVZFUl9NT0RFJywgJ21pcnJvcicpCisgICAgaGF2ZV9taXJyb3JfdGFyYmFsbHMgPSBkLmdldFZhcignQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTJykKKworICAgIGlmIG1pcnJvcl9tb2RlID09ICdjb21iaW5lZCc6CisgICAgICAgIGRlc3RkaXIgPSBkLmdldFZhcignQVJDSElWRVJfQ09NQklORURfTUlSUk9SRElSJykKKyAgICBlbGlmIG1pcnJvcl9tb2RlID09ICdzcGxpdCc6CisgICAgICAgIGRlc3RkaXIgPSBkLmdldFZhcignQVJDSElWRVJfT1VURElSJykKKyAgICBlbHNlOgorICAgICAgICBiYi5mYXRhbCgnSW52YWxpZCBBUkNISVZFUl9NT0RFW21pcnJvcl06ICVzJyAlIChtaXJyb3JfbW9kZSkpCisKKyAgICBpZiBub3QgaGF2ZV9taXJyb3JfdGFyYmFsbHM6CisgICAgICAgIGJiLmZhdGFsKCdVc2luZyBgQVJDSElWRVJfTU9ERVtzcmNdID0gIm1pcnJvciJgIGRlcGVuZHMgb24gc2V0dGluZyBgQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTID0gIjEiYCcpCisKKyAgICBkZWYgaXNfZXhjbHVkZWQodXJsKToKKyAgICAgICAgZm9yIHByZWZpeCBpbiBtaXJyb3JfZXhjbHVzaW9uczoKKyAgICAgICAgICAgIGlmIHVybC5zdGFydHN3aXRoKHByZWZpeCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBiYi5ub3RlKCdBcmNoaXZpbmcgdGhlIHNvdXJjZSBhcyBhIG1pcnJvci4uLicpCisKKyAgICBiYi51dGlscy5ta2RpcmhpZXIoZGVzdGRpcikKKworICAgIGZldGNoZXIgPSBiYi5mZXRjaDIuRmV0Y2goc3JjX3VyaSwgZCkKKworICAgIGZvciB1cmwgaW4gZmV0Y2hlci51cmxzOgorICAgICAgICBpZiBpc19leGNsdWRlZCh1cmwpOgorICAgICAgICAgICAgYmIubm90ZSgnU2tpcHBpbmcgZXhjbHVkZWQgdXJsOiAlcycgJSAodXJsKSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgYmIubm90ZSgnQXJjaGl2aW5nIHVybDogJXMnICUgKHVybCkpCisgICAgICAgIHVkID0gZmV0Y2hlci51ZFt1cmxdCisgICAgICAgIHVkLnNldHVwX2xvY2FscGF0aChkKQorICAgICAgICBsb2NhbHBhdGggPSBOb25lCisKKyAgICAgICAgIyBDaGVjayBmb3IgbWlycm9yIHRhcmJhbGxzIGZpcnN0LiBXZSB3aWxsIGFyY2hpdmUgdGhlIGZpcnN0IG1pcnJvcgorICAgICAgICAjIHRhcmJhbGwgdGhhdCB3ZSBmaW5kIGFzIGl0J3MgYXNzdW1lZCB0aGF0IHdlIGp1c3QgbmVlZCBvbmUuCisgICAgICAgIGZvciBtaXJyb3JfZm5hbWUgaW4gdWQubWlycm9ydGFyYmFsbHM6CisgICAgICAgICAgICBtaXJyb3JfcGF0aCA9IG9zLnBhdGguam9pbihkbF9kaXIsIG1pcnJvcl9mbmFtZSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG1pcnJvcl9wYXRoKToKKyAgICAgICAgICAgICAgICBiYi5ub3RlKCdGb3VuZCBtaXJyb3IgdGFyYmFsbDogJXMnICUgKG1pcnJvcl9wYXRoKSkKKyAgICAgICAgICAgICAgICBsb2NhbHBhdGggPSBtaXJyb3JfcGF0aAorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgaWYgbGVuKHVkLm1pcnJvcnRhcmJhbGxzKSBhbmQgbm90IGxvY2FscGF0aDoKKyAgICAgICAgICAgIGJiLndhcm4oJ01pcnJvciB0YXJiYWxscyBhcmUgbGlzdGVkIGZvciBhIHNvdXJjZSBidXQgbm9uZSBhcmUgcHJlc2VudC4gJyBcCisgICAgICAgICAgICAgICAgICAgICdGYWxsaW5nIGJhY2sgdG8gb3JpZ2luYWwgZG93bmxvYWQuXG4nIFwKKyAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgPSAlcycgJSAodXJsKSkKKworICAgICAgICAjIENoZWNrIG9yaWdpbmFsIGRvd25sb2FkCisgICAgICAgIGlmIG5vdCBsb2NhbHBhdGg6CisgICAgICAgICAgICBiYi5ub3RlKCdVc2luZyBvcmlnaW5hbCBkb3dubG9hZDogJXMnICUgKHVkLmxvY2FscGF0aCkpCisgICAgICAgICAgICBsb2NhbHBhdGggPSB1ZC5sb2NhbHBhdGgKKworICAgICAgICBpZiBub3QgbG9jYWxwYXRoIG9yIG5vdCBvcy5wYXRoLmV4aXN0cyhsb2NhbHBhdGgpOgorICAgICAgICAgICAgYmIuZmF0YWwoJ09yaWdpbmFsIGRvd25sb2FkIGlzIG1pc3NpbmcgZm9yIGEgc291cmNlLlxuJyBcCisgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSA9ICVzJyAlICh1cmwpKQorCisgICAgICAgICMgV2Ugbm93IGhhdmUgYW4gYXBwcm9wcmlhdGUgbG9jYWxwYXRoCisgICAgICAgIGJiLm5vdGUoJ0NvcHlpbmcgc291cmNlIG1pcnJvcicpCisgICAgICAgIGNtZCA9ICdjcCAtZnBQUkggJXMgJXMnICUgKGxvY2FscGF0aCwgZGVzdGRpcikKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGNtZCwgc2hlbGw9VHJ1ZSkKK30KKwogZGVmIGV4Y2x1ZGVfdXNlbGVzc19wYXRocyh0YXJpbmZvKToKICAgICBpZiB0YXJpbmZvLmlzZGlyKCk6CiAgICAgICAgIGlmIHRhcmluZm8ubmFtZS5lbmRzd2l0aCgnL3RlbXAnKSBvciB0YXJpbmZvLm5hbWUuZW5kc3dpdGgoJy9wYXRjaGVzJykgb3IgdGFyaW5mby5uYW1lLmVuZHN3aXRoKCcvLnBjJyk6CkBAIC00ODMsNiArNTgwLDcgQEAKIGFkZHRhc2sgZG9fdW5wYWNrX2FuZF9wYXRjaCBhZnRlciBkb19wYXRjaAogYWRkdGFzayBkb19hcl9wYXRjaGVkIGFmdGVyIGRvX3VucGFja19hbmRfcGF0Y2gKIGFkZHRhc2sgZG9fYXJfY29uZmlndXJlZCBhZnRlciBkb191bnBhY2tfYW5kX3BhdGNoCithZGR0YXNrIGRvX2FyX21pcnJvciBhZnRlciBkb19mZXRjaAogYWRkdGFzayBkb19kdW1wZGF0YQogYWRkdGFzayBkb19hcl9yZWNpcGUKIGFkZHRhc2sgZG9fZGVwbG95X2FyY2hpdmVzIGJlZm9yZSBkb19idWlsZApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzcwppbmRleCAzZDIyYWQwLi42YzJhMzNhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzcwpAQCAtOTAsNyArOTAsNyBAQAogCWNmZ3NjcmlwdD1gcHl0aG9uMyAtYyAiaW1wb3J0IG9zOyBwcmludChvcy5wYXRoLnJlbHBhdGgob3MucGF0aC5kaXJuYW1lKCcke0NPTkZJR1VSRV9TQ1JJUFR9JyksICcuJykpImAvJGNmZ3NjcmlwdF9uYW1lCiAJaWYgWyAteCAiJGNmZ3NjcmlwdCIgXSA7IHRoZW4KIAkJYmJub3RlICJSdW5uaW5nICRjZmdzY3JpcHQgJHtDT05GSUdVUkVPUFRTfSAke0VYVFJBX09FQ09ORn0gJEAiCi0JCWlmICEgJHtDQUNIRURfQ09ORklHVVJFVkFSU30gJGNmZ3NjcmlwdCAke0NPTkZJR1VSRU9QVFN9ICR7RVhUUkFfT0VDT05GfSAiJEAiOyB0aGVuCisJCWlmICEgJHtDQUNIRURfQ09ORklHVVJFVkFSU30gQ09ORklHX1NIRUxMPS9iaW4vYmFzaCAkY2Znc2NyaXB0ICR7Q09ORklHVVJFT1BUU30gJHtFWFRSQV9PRUNPTkZ9ICIkQCI7IHRoZW4KIAkJCWJibm90ZSAiVGhlIGZvbGxvd2luZyBjb25maWcubG9nIGZpbGVzIG1heSBwcm92aWRlIGZ1cnRoZXIgaW5mb3JtYXRpb24uIgogCQkJYmJub3RlIGBmaW5kICR7Qn0gLWlnbm9yZV9yZWFkZGlyX3JhY2UgLXR5cGUgZiAtbmFtZSBjb25maWcubG9nYAogCQkJYmJmYXRhbF9sb2cgImNvbmZpZ3VyZSBmYWlsZWQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9iYXNlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9iYXNlLmJiY2xhc3MKaW5kZXggMWNlYTNhMi4uNDVmOTQzNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFzcwpAQCAtMTI3LDYgKzEyNyw5IEBACiAgICAgZm9yIHRvb2wgaW4gdG9vbHM6CiAgICAgICAgIGRlc3R0b29sID0gb3MucGF0aC5qb2luKGRlc3QsIHRvb2wpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkZXN0dG9vbCk6CisgICAgICAgICAgICAjIGNsZWFuIHVwIGRlYWQgc3ltbGluaworICAgICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsoZGVzdHRvb2wpOgorICAgICAgICAgICAgICAgIG9zLnVubGluayhkZXN0dG9vbCkKICAgICAgICAgICAgIHNyY3Rvb2wgPSBiYi51dGlscy53aGljaChwYXRoLCB0b29sLCBleGVjdXRhYmxlPVRydWUpCiAgICAgICAgICAgICAjIGdjYy9nKysgbWF5IGxpbmsgdG8gY2NhY2hlIG9uIHNvbWUgaG9zdHMsIGUuZy4sCiAgICAgICAgICAgICAjIC91c3IvbG9jYWwvYmluL2NjYWNoZS9nY2MgLT4gL3Vzci9iaW4vY2NhY2hlLCB0aGVuIHdoaWNoKGdjYykKQEAgLTEzOCwxMSArMTQxLDYgQEAKICAgICAgICAgICAgICAgICBvcy5zeW1saW5rKHNyY3Rvb2wsIGRlc3R0b29sKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBub3Rmb3VuZC5hcHBlbmQodG9vbCkKLSAgICAjIEZvcmNlICJweXRob24iIC0+ICJweXRob24yIgotICAgIGRlc3R0b29sID0gb3MucGF0aC5qb2luKGRlc3QsICJweXRob24iKQotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkZXN0dG9vbCk6Ci0gICAgICAgIHNyY3Rvb2wgPSAicHl0aG9uMiIKLSAgICAgICAgb3Muc3ltbGluayhzcmN0b29sLCBkZXN0dG9vbCkKIAogICAgIGlmIG5vdGZvdW5kIGFuZCBmYXRhbDoKICAgICAgICAgYmIuZmF0YWwoIlRoZSBmb2xsb3dpbmcgcmVxdWlyZWQgdG9vbHMgKGFzIHNwZWNpZmllZCBieSBIT1NUVE9PTFMpIGFwcGVhciB0byBiZSB1bmF2YWlsYWJsZSBpbiBQQVRILCBwbGVhc2UgaW5zdGFsbCB0aGVtIGluIG9yZGVyIHRvIHByb2NlZWQ6XG4gICVzIiAlICIgIi5qb2luKG5vdGZvdW5kKSkKQEAgLTM5NSw3ICszOTMsNyBAQAogICAgICMgVGhlc2UgdGFrZSB0aGUgZm9ybToKICAgICAjCiAgICAgIyBQQUNLQUdFQ09ORklHID8/PSAiPGRlZmF1bHQgb3B0aW9ucz4iCi0gICAgIyBQQUNLQUdFQ09ORklHW2Zvb10gPSAiLS1lbmFibGUtZm9vLC0tZGlzYWJsZS1mb28sZm9vX2RlcGVuZHMsZm9vX3J1bnRpbWVfZGVwZW5kcyxmb29fcnVudGltZV9yZWNvbW1lbmRzIgorICAgICMgUEFDS0FHRUNPTkZJR1tmb29dID0gIi0tZW5hYmxlLWZvbywtLWRpc2FibGUtZm9vLGZvb19kZXBlbmRzLGZvb19ydW50aW1lX2RlcGVuZHMsZm9vX3J1bnRpbWVfcmVjb21tZW5kcyxmb29fY29uZmxpY3RfcGFja2FnZWNvbmZpZyIKICAgICBwa2djb25maWdmbGFncyA9IGQuZ2V0VmFyRmxhZ3MoIlBBQ0tBR0VDT05GSUciKSBvciB7fQogICAgIGlmIHBrZ2NvbmZpZ2ZsYWdzOgogICAgICAgICBwa2djb25maWcgPSAoZC5nZXRWYXIoJ1BBQ0tBR0VDT05GSUcnKSBvciAiIikuc3BsaXQoKQpAQCAtNDQyLDggKzQ0MCw4IEBACiAgICAgICAgIGZvciBmbGFnLCBmbGFndmFsIGluIHNvcnRlZChwa2djb25maWdmbGFncy5pdGVtcygpKToKICAgICAgICAgICAgIGl0ZW1zID0gZmxhZ3ZhbC5zcGxpdCgiLCIpCiAgICAgICAgICAgICBudW0gPSBsZW4oaXRlbXMpCi0gICAgICAgICAgICBpZiBudW0gPiA1OgotICAgICAgICAgICAgICAgIGJiLmVycm9yKCIlczogUEFDS0FHRUNPTkZJR1slc10gT25seSBlbmFibGUsZGlzYWJsZSxkZXBlbmQscmRlcGVuZCxycmVjb21tZW5kIGNhbiBiZSBzcGVjaWZpZWQhIgorICAgICAgICAgICAgaWYgbnVtID4gNjoKKyAgICAgICAgICAgICAgICBiYi5lcnJvcigiJXM6IFBBQ0tBR0VDT05GSUdbJXNdIE9ubHkgZW5hYmxlLGRpc2FibGUsZGVwZW5kLHJkZXBlbmQscnJlY29tbWVuZCxjb25mbGljdF9wYWNrYWdlY29uZmlnIGNhbiBiZSBzcGVjaWZpZWQhIgogICAgICAgICAgICAgICAgICAgICAlIChkLmdldFZhcignUE4nKSwgZmxhZykpCiAKICAgICAgICAgICAgIGlmIGZsYWcgaW4gcGtnY29uZmlnOgpAQCAtNDU3LDYgKzQ1NSwyMCBAQAogICAgICAgICAgICAgICAgICAgICBleHRyYWNvbmYuYXBwZW5kKGl0ZW1zWzBdKQogICAgICAgICAgICAgZWxpZiBudW0gPj0gMiBhbmQgaXRlbXNbMV06CiAgICAgICAgICAgICAgICAgICAgIGV4dHJhY29uZi5hcHBlbmQoaXRlbXNbMV0pCisKKyAgICAgICAgICAgIGlmIG51bSA+PSA2IGFuZCBpdGVtc1s1XToKKyAgICAgICAgICAgICAgICBjb25mbGljdHMgPSBzZXQoaXRlbXNbNV0uc3BsaXQoKSkKKyAgICAgICAgICAgICAgICBpbnZhbGlkID0gY29uZmxpY3RzLmRpZmZlcmVuY2Uoc2V0KHBrZ2NvbmZpZ2ZsYWdzLmtleXMoKSkpCisgICAgICAgICAgICAgICAgaWYgaW52YWxpZDoKKyAgICAgICAgICAgICAgICAgICAgYmIuZXJyb3IoIiVzOiBQQUNLQUdFQ09ORklHWyVzXSBJbnZhbGlkIGNvbmZsaWN0IHBhY2thZ2UgY29uZmlnJXMgJyVzJyBzcGVjaWZpZWQuIgorICAgICAgICAgICAgICAgICAgICAgICAgJSAoZC5nZXRWYXIoJ1BOJyksIGZsYWcsICdzJyBpZiBsZW4oaW52YWxpZCkgPiAxIGVsc2UgJycsICcgJy5qb2luKGludmFsaWQpKSkKKworICAgICAgICAgICAgICAgIGlmIGZsYWcgaW4gcGtnY29uZmlnOgorICAgICAgICAgICAgICAgICAgICBpbnRlcnNlYyA9IGNvbmZsaWN0cy5pbnRlcnNlY3Rpb24oc2V0KHBrZ2NvbmZpZykpCisgICAgICAgICAgICAgICAgICAgIGlmIGludGVyc2VjOgorICAgICAgICAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIiVzOiBQQUNLQUdFQ09ORklHWyVzXSBDb25mbGljdCBwYWNrYWdlIGNvbmZpZyVzICclcycgc2V0IGluIFBBQ0tBR0VDT05GSUcuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGQuZ2V0VmFyKCdQTicpLCBmbGFnLCAncycgaWYgbGVuKGludGVyc2VjKSA+IDEgZWxzZSAnJywgJyAnLmpvaW4oaW50ZXJzZWMpKSkKKwogICAgICAgICBhcHBlbmRWYXIoJ0RFUEVORFMnLCBleHRyYWRlcHMpCiAgICAgICAgIGFwcGVuZFZhcignUkRFUEVORFNfJHtQTn0nLCBleHRyYXJkZXBzKQogICAgICAgICBhcHBlbmRWYXIoJ1JSRUNPTU1FTkRTXyR7UE59JywgZXh0cmFycmVjcykKQEAgLTQ5OCw3ICs1MTAsNyBAQAogICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2RldnNoZWxsJywgJ2RlcGVuZHMnLCAnIHZpcnR1YWwvZmFrZXJvb3QtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnKQogCiAgICAgbmVlZF9tYWNoaW5lID0gZC5nZXRWYXIoJ0NPTVBBVElCTEVfTUFDSElORScpCi0gICAgaWYgbmVlZF9tYWNoaW5lOgorICAgIGlmIG5lZWRfbWFjaGluZSBhbmQgbm90IGQuZ2V0VmFyKCdQQVJTRV9BTExfUkVDSVBFUycsIEZhbHNlKToKICAgICAgICAgaW1wb3J0IHJlCiAgICAgICAgIGNvbXBhdF9tYWNoaW5lcyA9IChkLmdldFZhcignTUFDSElORU9WRVJSSURFUycpIG9yICIiKS5zcGxpdCgiOiIpCiAgICAgICAgIGZvciBtIGluIGNvbXBhdF9tYWNoaW5lczoKQEAgLTUwNyw3ICs1MTksNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiaW5jb21wYXRpYmxlIHdpdGggbWFjaGluZSAlcyAobm90IGluIENPTVBBVElCTEVfTUFDSElORSkiICUgZC5nZXRWYXIoJ01BQ0hJTkUnKSkKIAotICAgIHNvdXJjZV9taXJyb3JfZmV0Y2ggPSBkLmdldFZhcignU09VUkNFX01JUlJPUl9GRVRDSCcsIEZhbHNlKQorICAgIHNvdXJjZV9taXJyb3JfZmV0Y2ggPSBkLmdldFZhcignU09VUkNFX01JUlJPUl9GRVRDSCcsIEZhbHNlKSBvciBkLmdldFZhcignUEFSU0VfQUxMX1JFQ0lQRVMnLCBGYWxzZSkKICAgICBpZiBub3Qgc291cmNlX21pcnJvcl9mZXRjaDoKICAgICAgICAgbmVlZF9ob3N0ID0gZC5nZXRWYXIoJ0NPTVBBVElCTEVfSE9TVCcpCiAgICAgICAgIGlmIG5lZWRfaG9zdDoKQEAgLTUzMSw0NSArNTQzLDQ2IEBACiAgICAgICAgICAgICBiYWRfbGljZW5zZXMgPSBleHBhbmRfd2lsZGNhcmRfbGljZW5zZXMoZCwgYmFkX2xpY2Vuc2VzKQogCiAgICAgICAgICAgICB3aGl0ZWxpc3QgPSBbXQotICAgICAgICAgICAgaW5jb21wYXR3bCA9IFtdCiAgICAgICAgICAgICBmb3IgbGljIGluIGJhZF9saWNlbnNlczoKICAgICAgICAgICAgICAgICBzcGR4X2xpY2Vuc2UgPSByZXR1cm5fc3BkeChkLCBsaWMpCiAgICAgICAgICAgICAgICAgd2hpdGVsaXN0LmV4dGVuZCgoZC5nZXRWYXIoIldISVRFTElTVF8iICsgbGljKSBvciAiIikuc3BsaXQoKSkKICAgICAgICAgICAgICAgICBpZiBzcGR4X2xpY2Vuc2U6CiAgICAgICAgICAgICAgICAgICAgIHdoaXRlbGlzdC5leHRlbmQoKGQuZ2V0VmFyKCJXSElURUxJU1RfIiArIHNwZHhfbGljZW5zZSkgb3IgIiIpLnNwbGl0KCkpCisKKyAgICAgICAgICAgIGlmIHBuIGluIHdoaXRlbGlzdDoKICAgICAgICAgICAgICAgICAnJycKICAgICAgICAgICAgICAgICBXZSBuZWVkIHRvIHRyYWNrIHdoYXQgd2UgYXJlIHdoaXRlbGlzdGluZyBhbmQgd2h5LiBJZiBwbiBpcwogICAgICAgICAgICAgICAgIGluY29tcGF0aWJsZSB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gbm90ZSB0aGF0IHRoZSBpbWFnZSB0aGF0CiAgICAgICAgICAgICAgICAgaXMgY3JlYXRlZCBtYXkgaW5mYWN0IGNvbnRhaW4gaW5jb21wYXRpYmxlIGxpY2Vuc2VzIGRlc3BpdGUKICAgICAgICAgICAgICAgICBJTkNPTVBBVElCTEVfTElDRU5TRSBiZWluZyBzZXQuCiAgICAgICAgICAgICAgICAgJycnCi0gICAgICAgICAgICAgICAgaW5jb21wYXR3bC5leHRlbmQoKGQuZ2V0VmFyKCJXSElURUxJU1RfIiArIGxpYykgb3IgIiIpLnNwbGl0KCkpCi0gICAgICAgICAgICAgICAgaWYgc3BkeF9saWNlbnNlOgotICAgICAgICAgICAgICAgICAgICBpbmNvbXBhdHdsLmV4dGVuZCgoZC5nZXRWYXIoIldISVRFTElTVF8iICsgc3BkeF9saWNlbnNlKSBvciAiIikuc3BsaXQoKSkKLQotICAgICAgICAgICAgaWYgbm90IHBuIGluIHdoaXRlbGlzdDoKKyAgICAgICAgICAgICAgICBiYi5ub3RlKCJJbmNsdWRpbmcgJXMgYXMgYnVpbGRhYmxlIGRlc3BpdGUgaXQgaGF2aW5nIGFuIGluY29tcGF0aWJsZSBsaWNlbnNlIGJlY2F1c2UgaXQgaGFzIGJlZW4gd2hpdGVsaXN0ZWQiICUgcG4pCisgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHBrZ3MgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCi0gICAgICAgICAgICAgICAgc2tpcHBlZF9wa2dzID0gW10KKyAgICAgICAgICAgICAgICBza2lwcGVkX3BrZ3MgPSB7fQogICAgICAgICAgICAgICAgIHVuc2tpcHBlZF9wa2dzID0gW10KICAgICAgICAgICAgICAgICBmb3IgcGtnIGluIHBrZ3M6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGluY29tcGF0aWJsZV9saWNlbnNlKGQsIGJhZF9saWNlbnNlcywgcGtnKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNraXBwZWRfcGtncy5hcHBlbmQocGtnKQorICAgICAgICAgICAgICAgICAgICBpbmNvbXBhdGlibGVfbGljID0gaW5jb21wYXRpYmxlX2xpY2Vuc2UoZCwgYmFkX2xpY2Vuc2VzLCBwa2cpCisgICAgICAgICAgICAgICAgICAgIGlmIGluY29tcGF0aWJsZV9saWM6CisgICAgICAgICAgICAgICAgICAgICAgICBza2lwcGVkX3BrZ3NbcGtnXSA9IGluY29tcGF0aWJsZV9saWMKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2tpcHBlZF9wa2dzLmFwcGVuZChwa2cpCi0gICAgICAgICAgICAgICAgYWxsX3NraXBwZWQgPSBza2lwcGVkX3BrZ3MgYW5kIG5vdCB1bnNraXBwZWRfcGtncwogICAgICAgICAgICAgICAgIGlmIHVuc2tpcHBlZF9wa2dzOgogICAgICAgICAgICAgICAgICAgICBmb3IgcGtnIGluIHNraXBwZWRfcGtnczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJTS0lQUElORyB0aGUgcGFja2FnZSAiICsgcGtnICsgIiBhdCBkb19yb290ZnMgYmVjYXVzZSBpdCdzICIgKyBsaWNlbnNlKQorICAgICAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgIlNraXBwaW5nIHRoZSBwYWNrYWdlICVzIGF0IGRvX3Jvb3RmcyBiZWNhdXNlIG9mIGluY29tcGF0aWJsZSBsaWNlbnNlKHMpOiAlcyIgJSAocGtnLCAnICcuam9pbihza2lwcGVkX3BrZ3NbcGtnXSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgbWxwcmVmaXggPSBkLmdldFZhcignTUxQUkVGSVgnKQotICAgICAgICAgICAgICAgICAgICAgICAgZC5zZXRWYXIoJ0xJQ0VOU0VfRVhDTFVTSU9OLScgKyBtbHByZWZpeCArIHBrZywgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGQuc2V0VmFyKCdMSUNFTlNFX0VYQ0xVU0lPTi0nICsgbWxwcmVmaXggKyBwa2csICcgJy5qb2luKHNraXBwZWRfcGtnc1twa2ddKSkKICAgICAgICAgICAgICAgICAgICAgZm9yIHBrZyBpbiB1bnNraXBwZWRfcGtnczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJJTkNMVURJTkcgdGhlIHBhY2thZ2UgIiArIHBrZykKLSAgICAgICAgICAgICAgICBlbGlmIGFsbF9za2lwcGVkIG9yIGluY29tcGF0aWJsZV9saWNlbnNlKGQsIGJhZF9saWNlbnNlcyk6Ci0gICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJTS0lQUElORyByZWNpcGUgJXMgYmVjYXVzZSBpdCdzICVzIiAlIChwbiwgbGljZW5zZSkpCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIml0IGhhcyBhbiBpbmNvbXBhdGlibGUgbGljZW5zZTogJXMiICUgbGljZW5zZSkKLSAgICAgICAgICAgIGVsaWYgcG4gaW4gd2hpdGVsaXN0OgotICAgICAgICAgICAgICAgIGlmIHBuIGluIGluY29tcGF0d2w6Ci0gICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoIklOQ0xVRElORyAiICsgcG4gKyAiIGFzIGJ1aWxkYWJsZSBkZXNwaXRlIElOQ09NUEFUSUJMRV9MSUNFTlNFIGJlY2F1c2UgaXQgaGFzIGJlZW4gd2hpdGVsaXN0ZWQiKQorICAgICAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgIkluY2x1ZGluZyB0aGUgcGFja2FnZSAlcyIgJSBwa2cpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaW5jb21wYXRpYmxlX2xpYyA9IGluY29tcGF0aWJsZV9saWNlbnNlKGQsIGJhZF9saWNlbnNlcykKKyAgICAgICAgICAgICAgICAgICAgZm9yIHBrZyBpbiBza2lwcGVkX3BrZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICBpbmNvbXBhdGlibGVfbGljICs9IHNraXBwZWRfcGtnc1twa2ddCisgICAgICAgICAgICAgICAgICAgIGluY29tcGF0aWJsZV9saWMgPSBzb3J0ZWQobGlzdChzZXQoaW5jb21wYXRpYmxlX2xpYykpKQorCisgICAgICAgICAgICAgICAgICAgIGlmIGluY29tcGF0aWJsZV9saWM6CisgICAgICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiU2tpcHBpbmcgcmVjaXBlICVzIGJlY2F1c2Ugb2YgaW5jb21wYXRpYmxlIGxpY2Vuc2Uocyk6ICVzIiAlIChwbiwgJyAnLmpvaW4oaW5jb21wYXRpYmxlX2xpYykpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiaXQgaGFzIGluY29tcGF0aWJsZSBsaWNlbnNlKHMpOiAlcyIgJSAnICcuam9pbihpbmNvbXBhdGlibGVfbGljKSkKIAogICAgICAgICAjIFRyeSB0byB2ZXJpZnkgcGVyLXBhY2thZ2UgKExJQ0VOU0VfPHBrZz4pIHZhbHVlcy4gTElDRU5TRSBzaG91bGQgYmUgYQogICAgICAgICAjIHN1cGVyc2V0IG9mIGFsbCBwZXItcGFja2FnZSBsaWNlbnNlcy4gV2UgZG8gbm90IGRvIGFkdmFuY2VkIChwYXR0ZXJuKQpAQCAtNjA2LDYgKzYxOSw3IEBACiAgICAgICAgICMgTWVyY3VyaWFsIHBhY2thZ2VzIHNob3VsZCBERVBFTkQgb24gbWVyY3VyaWFsLW5hdGl2ZQogICAgICAgICBlbGlmIHNjaGVtZSA9PSAiaGciOgogICAgICAgICAgICAgbmVlZHNyY3JldiA9IFRydWUKKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCJFWFRSQU5BVElWRVBBVEgiLCAnIHB5dGhvbjMtbmF0aXZlICcpCiAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2ZldGNoJywgJ2RlcGVuZHMnLCAnIG1lcmN1cmlhbC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcpCiAKICAgICAgICAgIyBQZXJmb3JjZSBwYWNrYWdlcyBzdXBwb3J0IFNSQ1JFViA9ICIke0FVVE9SRVZ9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRoaXN0b3J5LmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZGhpc3RvcnkuYmJjbGFzcwppbmRleCBhZmZkZjI3Li5lYjcyOTU1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZGhpc3RvcnkuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZGhpc3RvcnkuYmJjbGFzcwpAQCAtNDAsNiArNDAsNyBAQAogQlVJTERISVNUT1JZX0NPTU1JVCA/PSAiMSIKIEJVSUxESElTVE9SWV9DT01NSVRfQVVUSE9SID89ICJidWlsZGhpc3RvcnkgPGJ1aWxkaGlzdG9yeUAke0RJU1RST30+IgogQlVJTERISVNUT1JZX1BVU0hfUkVQTyA/PSAiIgorQlVJTERISVNUT1JZX1RBRyA/PSAiYnVpbGQiCiAKIFNTVEFURVBPU1RJTlNURlVOQ1NfYXBwZW5kID0gIiBidWlsZGhpc3RvcnlfZW1pdF9wa2doaXN0b3J5IgogIyBXZSB3YW50IHRvIGF2b2lkIGluZmx1ZW5jaW5nIHRoZSBzaWduYXR1cmVzIG9mIHNzdGF0ZSB0YXNrcyAtIGZpcnN0IHRoZSBmdW5jdGlvbiBpdHNlbGY6CkBAIC04MjQsOSArODI1LDkgQEAKIAkJaWYgWyAhIC1lIC5naXQgXSA7IHRoZW4KIAkJCWdpdCBpbml0IC1xCiAJCWVsc2UKLQkJCWdpdCB0YWcgLWYgYnVpbGQtbWludXMtMyBidWlsZC1taW51cy0yID4gL2Rldi9udWxsIDI+JjEgfHwgdHJ1ZQotCQkJZ2l0IHRhZyAtZiBidWlsZC1taW51cy0yIGJ1aWxkLW1pbnVzLTEgPiAvZGV2L251bGwgMj4mMSB8fCB0cnVlCi0JCQlnaXQgdGFnIC1mIGJ1aWxkLW1pbnVzLTEgPiAvZGV2L251bGwgMj4mMSB8fCB0cnVlCisJCQlnaXQgdGFnIC1mICR7QlVJTERISVNUT1JZX1RBR30tbWludXMtMyAke0JVSUxESElTVE9SWV9UQUd9LW1pbnVzLTIgPiAvZGV2L251bGwgMj4mMSB8fCB0cnVlCisJCQlnaXQgdGFnIC1mICR7QlVJTERISVNUT1JZX1RBR30tbWludXMtMiAke0JVSUxESElTVE9SWV9UQUd9LW1pbnVzLTEgPiAvZGV2L251bGwgMj4mMSB8fCB0cnVlCisJCQlnaXQgdGFnIC1mICR7QlVJTERISVNUT1JZX1RBR30tbWludXMtMSA+IC9kZXYvbnVsbCAyPiYxIHx8IHRydWUKIAkJZmkKIAogCQljaGVja19naXRfY29uZmlnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZHN0YXRzLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZHN0YXRzLmJiY2xhc3MKaW5kZXggOTYwNjUzYy4uMjU5MGM2MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRzdGF0cy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2J1aWxkc3RhdHMuYmJjbGFzcwpAQCAtMTAwLDcgKzEwMCw3IEBACiAgICAgICAgICAgICAgICAgZi53cml0ZSgicnVzYWdlICVzOiAlc1xuIiAlIChpLCBnZXRhdHRyKHJlc291cmNlcywgaSkpKQogICAgICAgICAgICAgZm9yIGkgaW4gcnVzYWdlczoKICAgICAgICAgICAgICAgICBmLndyaXRlKCJDaGlsZCBydXNhZ2UgJXM6ICVzXG4iICUgKGksIGdldGF0dHIoY2hpbGRyZXMsIGkpKSkKLSAgICAgICAgaWYgc3RhdHVzIGlzICJwYXNzZWQiOgorICAgICAgICBpZiBzdGF0dXMgPT0gInBhc3NlZCI6CiAgICAgICAgICAgICBmLndyaXRlKCJTdGF0dXM6IFBBU1NFRCBcbiIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmLndyaXRlKCJTdGF0dXM6IEZBSUxFRCBcbiIpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9jaHJwYXRoLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9jaHJwYXRoLmJiY2xhc3MKaW5kZXggMjg3MGMxMC4uMjZiOTg0YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvY2hycGF0aC5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2NocnBhdGguYmJjbGFzcwpAQCAtMiwxNiArMiwxOSBAQAogUFJFUFJPQ0VTU19SRUxPQ0FURV9ESVJTID89ICIiCiAKIGRlZiBwcm9jZXNzX2ZpbGVfbGludXgoY21kLCBmcGF0aCwgcm9vdGRpciwgYmFzZXByZWZpeCwgdG1wZGlyLCBkLCBicmVha19oYXJkbGlua3MgPSBGYWxzZSk6Ci0gICAgaW1wb3J0IHN1YnByb2Nlc3MgYXMgc3ViCisgICAgaW1wb3J0IHN1YnByb2Nlc3MsIG9lLnFhCiAKLSAgICBwID0gc3ViLlBvcGVuKFtjbWQsICctbCcsIGZwYXRoXSxzdGRvdXQ9c3ViLlBJUEUsc3RkZXJyPXN1Yi5QSVBFKQotICAgIG91dCwgZXJyID0gcC5jb21tdW5pY2F0ZSgpCi0gICAgIyBJZiByZXR1cm5lZCBzdWNjZXNzZnVsbHksIHByb2Nlc3Mgc3Rkb3V0IGZvciByZXN1bHRzCi0gICAgaWYgcC5yZXR1cm5jb2RlICE9IDA6CisgICAgd2l0aCBvZS5xYS5FTEZGaWxlKGZwYXRoKSBhcyBlbGY6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGVsZi5vcGVuKCkKKyAgICAgICAgZXhjZXB0IG9lLnFhLk5vdEVMRkZpbGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgdHJ5OgorICAgICAgICBvdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbY21kLCAiLWwiLCBmcGF0aF0sIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQorICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKICAgICAgICAgcmV0dXJuCiAKLSAgICBvdXQgPSBvdXQuZGVjb2RlKCd1dGYtOCcpCi0KICAgICAjIEhhbmRsZSBSVU5QQVRIIGFzIHdlbGwgYXMgUlBBVEgKICAgICBvdXQgPSBvdXQucmVwbGFjZSgiUlVOUEFUSD0iLCJSUEFUSD0iKQogICAgICMgVGhyb3cgYXdheSBldmVyeXRoaW5nIG90aGVyIHRoYW4gdGhlIHJwYXRoIGxpc3QKQEAgLTQ0LDEwICs0NywxMSBAQAogCiAgICAgICAgIGFyZ3MgPSAiOiIuam9pbihuZXdfcnBhdGhzKQogICAgICAgICAjYmIubm90ZSgiU2V0dGluZyBycGF0aCBmb3IgJXMgdG8gJXMiICUoZnBhdGgsIGFyZ3MpKQotICAgICAgICBwID0gc3ViLlBvcGVuKFtjbWQsICctcicsIGFyZ3MsIGZwYXRoXSxzdGRvdXQ9c3ViLlBJUEUsc3RkZXJyPXN1Yi5QSVBFKQotICAgICAgICBvdXQsIGVyciA9IHAuY29tbXVuaWNhdGUoKQotICAgICAgICBpZiBwLnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAgICAgIGJiLmZhdGFsKCIlczogY2hycGF0aCBjb21tYW5kIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAlZDpcbiVzJXMiICUgKGQuZ2V0VmFyKCdQTicpLCBwLnJldHVybmNvZGUsIG91dCwgZXJyKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW2NtZCwgIi1yIiwgYXJncywgZnBhdGhdLAorICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCisgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgorICAgICAgICAgICAgYmIuZmF0YWwoImNocnBhdGggY29tbWFuZCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJWQ6XG4lc1xuJXMiICUgKGUucmV0dXJuY29kZSwgZS5zdGRvdXQsIGUuc3RkZXJyKSkKIAogZGVmIHByb2Nlc3NfZmlsZV9kYXJ3aW4oY21kLCBmcGF0aCwgcm9vdGRpciwgYmFzZXByZWZpeCwgdG1wZGlyLCBkLCBicmVha19oYXJkbGlua3MgPSBGYWxzZSk6CiAgICAgaW1wb3J0IHN1YnByb2Nlc3MgYXMgc3ViCkBAIC03Miw2ICs3NiwxMCBAQAogICAgICAgICBvdXQsIGVyciA9IHAuY29tbXVuaWNhdGUoKQogCiBkZWYgcHJvY2Vzc19kaXIocm9vdGRpciwgZGlyZWN0b3J5LCBkLCBicmVha19oYXJkbGlua3MgPSBGYWxzZSk6CisgICAgYmIuZGVidWcoMiwgIkNoZWNraW5nICVzIGZvciBiaW5hcmllcyB0byBwcm9jZXNzIiAlIGRpcmVjdG9yeSkKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGlyZWN0b3J5KToKKyAgICAgICAgcmV0dXJuCisKICAgICBpbXBvcnQgc3RhdAogCiAgICAgcm9vdGRpciA9IG9zLnBhdGgubm9ybXBhdGgocm9vdGRpcikKQEAgLTgwLDEwICs4OCw2IEBACiAgICAgYmFzZXByZWZpeCA9IG9zLnBhdGgubm9ybXBhdGgoZC5leHBhbmQoJyR7YmFzZV9wcmVmaXh9JykpCiAgICAgaG9zdG9zID0gZC5nZXRWYXIoIkhPU1RfT1MiKQogCi0gICAgI2JiLmRlYnVnKCJDaGVja2luZyAlcyBmb3IgYmluYXJpZXMgdG8gcHJvY2VzcyIgJSBkaXJlY3RvcnkpCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRpcmVjdG9yeSk6Ci0gICAgICAgIHJldHVybgotCiAgICAgaWYgImxpbnV4IiBpbiBob3N0b3M6CiAgICAgICAgIHByb2Nlc3NfZmlsZSA9IHByb2Nlc3NfZmlsZV9saW51eAogICAgIGVsaWYgImRhcndpbiIgaW4gaG9zdG9zOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvY21ha2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2NtYWtlLmJiY2xhc3MKaW5kZXggMjkxZjFlOC4uOTRlZDgwNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvY21ha2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9jbWFrZS5iYmNsYXNzCkBAIC02Myw4ICs2Myw5IEBACiAKIEVYVFJBX09FQ01BS0VfYXBwZW5kID0gIiAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IgogCi1FWFRSQV9PRUNNQUtFX0JVSUxEX3ByZXBlbmRfdGFzay1jb21waWxlID0gIiR7UEFSQUxMRUxfTUFLRX0gIgotRVhUUkFfT0VDTUFLRV9CVUlMRF9wcmVwZW5kX3Rhc2staW5zdGFsbCA9ICIke1BBUkFMTEVMX01BS0VJTlNUfSAiCitleHBvcnQgQ01BS0VfQlVJTERfUEFSQUxMRUxfTEVWRUwKK0NNQUtFX0JVSUxEX1BBUkFMTEVMX0xFVkVMX3Rhc2stY29tcGlsZSA9ICIke0BvZS51dGlscy5wYXJhbGxlbF9tYWtlKGQsIEZhbHNlKX0iCitDTUFLRV9CVUlMRF9QQVJBTExFTF9MRVZFTF90YXNrLWluc3RhbGwgPSAiJHtAb2UudXRpbHMucGFyYWxsZWxfbWFrZShkLCBUcnVlKX0iCiAKIE9FQ01BS0VfVEFSR0VUX0NPTVBJTEUgPz0gImFsbCIKIE9FQ01BS0VfVEFSR0VUX0lOU1RBTEwgPz0gImluc3RhbGwiCkBAIC0xMjAsNiArMTIxLDkgQEAKICMgZGlyZWN0b3J5IGFzIHJwYXRoIGJ5IGRlZmF1bHQKIHNldCggQ01BS0VfSU5TVEFMTF9SUEFUSCAke09FQ01BS0VfUlBBVEh9ICkKIAorIyBVc2UgUlBBVEhzIHJlbGF0aXZlIHRvIGJ1aWxkIGRpcmVjdG9yeSBmb3IgcmVwcm9kdWNpYmlsaXR5CitzZXQoIENNQUtFX0JVSUxEX1JQQVRIX1VTRV9PUklHSU4gT04gKQorCiAjIFVzZSBvdXIgY21ha2UgbW9kdWxlcwogbGlzdChBUFBFTkQgQ01BS0VfTU9EVUxFX1BBVEggIiR7U1RBR0lOR19EQVRBRElSfS9jbWFrZS9Nb2R1bGVzLyIpCiAKQEAgLTE3MSw2ICsxNzUsMTAgQEAKIAkgIC1EQ01BS0VfSU5TVEFMTF9MSUJESVI6UEFUSD0ke0Bvcy5wYXRoLnJlbHBhdGgoZC5nZXRWYXIoJ2xpYmRpcicpLCBkLmdldFZhcigncHJlZml4JykgKyAnLycpfSBcCiAJICAtRENNQUtFX0lOU1RBTExfSU5DTFVERURJUjpQQVRIPSR7QG9zLnBhdGgucmVscGF0aChkLmdldFZhcignaW5jbHVkZWRpcicpLCBkLmdldFZhcigncHJlZml4JykgKyAnLycpfSBcCiAJICAtRENNQUtFX0lOU1RBTExfREFUQVJPT1RESVI6UEFUSD0ke0Bvcy5wYXRoLnJlbHBhdGgoZC5nZXRWYXIoJ2RhdGFkaXInKSwgZC5nZXRWYXIoJ3ByZWZpeCcpICsgJy8nKX0gXAorCSAgLURQWVRIT05fRVhFQ1VUQUJMRTpQQVRIPSR7UFlUSE9OfSBcCisJICAtRFB5dGhvbl9FWEVDVVRBQkxFOlBBVEg9JHtQWVRIT059IFwKKwkgIC1EUHl0aG9uM19FWEVDVVRBQkxFOlBBVEg9JHtQWVRIT059IFwKKwkgIC1ETElCX1NVRkZJWD0ke0BkLmdldFZhcignYmFzZWxpYicpLnJlcGxhY2UoJ2xpYicsICcnKX0gXAogCSAgLURDTUFLRV9JTlNUQUxMX1NPX05PX0VYRT0wIFwKIAkgIC1EQ01BS0VfVE9PTENIQUlOX0ZJTEU9JHtXT1JLRElSfS90b29sY2hhaW4uY21ha2UgXAogCSAgLURDTUFLRV9OT19TWVNURU1fRlJPTV9JTVBPUlRFRD0xIFwKQEAgLTE3OCw5ICsxODYsMTggQEAKIAkgIC1Xbm8tZGV2CiB9CiAKKyMgVG8gZGlzYWJsZSB2ZXJib3NlIGNtYWtlIGxvZ3MgZm9yIGEgZ2l2ZW4gcmVjaXBlIG9yIGdsb2JhbGx5IGNvbmZpZyBtZXRhZGF0YSBlLmcuIGxvY2FsLmNvbmYKKyMgYWRkIGZvbGxvd2luZworIworIyBDTUFLRV9WRVJCT1NFID0gIiIKKyMKKworQ01BS0VfVkVSQk9TRSA/Pz0gIlZFUkJPU0U9MSIKKworIyBUaGVuIHJ1biBkb19jb21waWxlIGFnYWluCiBjbWFrZV9ydW5jbWFrZV9idWlsZCgpIHsKLQliYm5vdGUgJHtERVNURElSOitERVNURElSPSR7REVTVERJUn0gfVZFUkJPU0U9MSBjbWFrZSAtLWJ1aWxkICcke0J9JyAiJEAiIC0tICR7RVhUUkFfT0VDTUFLRV9CVUlMRH0KLQlldmFsICR7REVTVERJUjorREVTVERJUj0ke0RFU1RESVJ9IH1WRVJCT1NFPTEgY21ha2UgLS1idWlsZCAnJHtCfScgIiRAIiAtLSAke0VYVFJBX09FQ01BS0VfQlVJTER9CisJYmJub3RlICR7REVTVERJUjorREVTVERJUj0ke0RFU1RESVJ9IH0ke0NNQUtFX1ZFUkJPU0V9IGNtYWtlIC0tYnVpbGQgJyR7Qn0nICIkQCIgLS0gJHtFWFRSQV9PRUNNQUtFX0JVSUxEfQorCWV2YWwgJHtERVNURElSOitERVNURElSPSR7REVTVERJUn0gfSR7Q01BS0VfVkVSQk9TRX0gY21ha2UgLS1idWlsZCAnJHtCfScgIiRAIiAtLSAke0VYVFJBX09FQ01BS0VfQlVJTER9CiB9CiAKIGNtYWtlX2RvX2NvbXBpbGUoKSAgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvY29yZS1pbWFnZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvY29yZS1pbWFnZS5iYmNsYXNzCmluZGV4IDk0ZjExMmMuLjg4Y2EyNzIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2NvcmUtaW1hZ2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9jb3JlLWltYWdlLmJiY2xhc3MKQEAgLTI2LDYgKzI2LDcgQEAKICMgLSBkZWJ1Zy10d2Vha3MgICAgICAgIC0gbWFrZXMgYW4gaW1hZ2Ugc3VpdGFibGUgZm9yIGRldmVsb3BtZW50LCBlLmcuIGFsbG93aW5nIHBhc3N3b3JkbGVzcyByb290IGxvZ2lucwogIyAgIC0gZW1wdHktcm9vdC1wYXNzd29yZAogIyAgIC0gYWxsb3ctZW1wdHktcGFzc3dvcmQKKyMgICAtIGFsbG93LXJvb3QtbG9naW4KICMgICAtIHBvc3QtaW5zdGFsbC1sb2dnaW5nCiAjIC0gZGV2LXBrZ3MgICAgICAgICAgICAtIGRldmVsb3BtZW50IHBhY2thZ2VzIChoZWFkZXJzLCBldGMuKSBmb3IgYWxsIGluc3RhbGxlZCBwYWNrYWdlcyBpbiB0aGUgcm9vdGZzCiAjIC0gZGJnLXBrZ3MgICAgICAgICAgICAtIGRlYnVnIHN5bWJvbCBwYWNrYWdlcyBmb3IgYWxsIGluc3RhbGxlZCBwYWNrYWdlcyBpbiB0aGUgcm9vdGZzCkBAIC0zMyw2ICszNCw3IEBACiAjIC0gYmFzaC1jb21wbGV0aW9uLXBrZ3MgLSBiYXNoLWNvbXBsZXRpb24gcGFja2FnZXMgZm9yIHJlY2lwZXMgdXNpbmcgYmFzaC1jb21wbGV0aW9uIGJiY2xhc3MKICMgLSBwdGVzdC1wa2dzICAgICAgICAgIC0gcHRlc3QgcGFja2FnZXMgZm9yIGFsbCBwdGVzdC1lbmFibGVkIHJlY2lwZXMKICMgLSByZWFkLW9ubHktcm9vdGZzICAgIC0gdHdlYWtzIGFuIGltYWdlIHRvIHN1cHBvcnQgcmVhZC1vbmx5IHJvb3RmcworIyAtIHN0YXRlbGVzcy1yb290ZnMgICAgLSBzeXN0ZW1jdGwtbmF0aXZlIG5vdCBydW4sIGltYWdlIHBvcHVsYXRlZCBieSBzeXN0ZW1kIGF0IHJ1bnRpbWUKICMgLSBzcGxhc2ggICAgICAgICAgICAgIC0gYm9vdHVwIHNwbGFzaCBzY3JlZW4KICMKIEZFQVRVUkVfUEFDS0FHRVNfeDExID0gInBhY2thZ2Vncm91cC1jb3JlLXgxMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy5iYmNsYXNzCmluZGV4IGY4MzI1NjEuLmJmZWM5MWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MuYmJjbGFzcwpAQCAtNzAsNyArNzAsNiBAQAogbGliZXhlY2RpciA9ICIke2V4ZWNfcHJlZml4fS9saWJleGVjLyR7Q1JPU1NfVEFSR0VUX1NZU19ESVJ9IgogCiBkb19wb3B1bGF0ZV9zeXNyb290W3NzdGF0ZS1pbnB1dGRpcnNdID0gIiR7U1lTUk9PVF9ERVNURElSfS8ke1NUQUdJTkdfRElSX05BVElWRX0vIgotZG9fcG9wdWxhdGVfc3lzcm9vdFtzdGFtcC1leHRyYS1pbmZvXSA9ICIiCiBkb19wYWNrYWdlZGF0YVtzdGFtcC1leHRyYS1pbmZvXSA9ICIiCiAKIGRvX2luc3RhbGwgKCkgewpAQCAtOTcsMyArOTYsNCBAQAogICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygiZXh0ZW5kX3JlY2lwZV9zeXNyb290IiwgZCkKIH0KIGFkZHRhc2sgYWRkdG9fcmVjaXBlX3N5c3Jvb3QgYWZ0ZXIgZG9fcG9wdWxhdGVfc3lzcm9vdAorZG9fYWRkdG9fcmVjaXBlX3N5c3Jvb3RbZGVwdGFza10gPSAiZG9fcG9wdWxhdGVfc3lzcm9vdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2Nyb3Nzc2RrLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9jcm9zc3Nkay5iYmNsYXNzCmluZGV4IGMwYzBiZmUuLjA0YWVjYjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2Nyb3Nzc2RrLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3NzZGsuYmJjbGFzcwpAQCAtNSw5ICs1LDE1IEBACiBMSUJDT1ZFUlJJREUgPSAiOiR7TkFUSVZFU0RLTElCQ30iCiBNQUNISU5FT1ZFUlJJREVTID0gIiIKIFBBQ0tBR0VfQVJDSCA9ICIke1NES19BUkNIfSIKKwogcHl0aG9uICgpIHsKICAgICAjIHNldCBUVU5FX1BLR0FSQ0ggdG8gU0RLX0FSQ0gKICAgICBkLnNldFZhcignVFVORV9QS0dBUkNIJywgZC5nZXRWYXIoJ1NES19BUkNIJykpCisgICAgIyBTZXQgZmVhdHVyZXMgaGVyZSB0byBwcmV2ZW50IGFwcGVuZHMgYW5kIGRpc3RybyBmZWF0dXJlcyBiYWNrZmlsbAorICAgICMgZnJvbSBtb2RpZnlpbmcgbmF0aXZlc2RrIGRpc3RybyBmZWF0dXJlcworICAgIGZlYXR1cmVzID0gc2V0KGQuZ2V0VmFyKCJESVNUUk9fRkVBVFVSRVNfTkFUSVZFU0RLIikuc3BsaXQoKSkKKyAgICBmaWx0ZXJlZCA9IHNldChiYi51dGlscy5maWx0ZXIoIkRJU1RST19GRUFUVVJFUyIsIGQuZ2V0VmFyKCJESVNUUk9fRkVBVFVSRVNfRklMVEVSX05BVElWRVNESyIpLCBkKS5zcGxpdCgpKQorICAgIGQuc2V0VmFyKCJESVNUUk9fRkVBVFVSRVMiLCAiICIuam9pbihzb3J0ZWQoZmVhdHVyZXMgfCBmaWx0ZXJlZCkpKQogfQogCiBTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU4gPSAiJHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtiaW5kaXJfbmF0aXZlfS8ke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0tJHtUQVJHRVRfT1N9IgpAQCAtMzcsNyArNDMsNiBAQAogdGFyZ2V0X2V4ZWNfcHJlZml4ID0gIiR7U0RLUEFUSE5BVElWRX0ke3ByZWZpeF9uYXRpdmVzZGt9IgogYmFzZWxpYiA9ICJsaWIiCiAKLWRvX3BvcHVsYXRlX3N5c3Jvb3Rbc3RhbXAtZXh0cmEtaW5mb10gPSAiIgogZG9fcGFja2FnZWRhdGFbc3RhbXAtZXh0cmEtaW5mb10gPSAiIgogCiAjIE5lZWQgdG8gZm9yY2UgdGhpcyB0byBlbnN1cmUgY29uc2l0ZW5jeSBhY3Jvc3MgYXJjaGl0ZWN0dXJlcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvY3ZlLWNoZWNrLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9jdmUtY2hlY2suYmJjbGFzcwppbmRleCAxOWVkNTU0Li4yYTUzMGEwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9jdmUtY2hlY2suYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9jdmUtY2hlY2suYmJjbGFzcwpAQCAtMjYsNyArMjYsNyBAQAogQ1ZFX1ZFUlNJT04gPz89ICIke1BWfSIKIAogQ1ZFX0NIRUNLX0RCX0RJUiA/PSAiJHtETF9ESVJ9L0NWRV9DSEVDSyIKLUNWRV9DSEVDS19EQl9GSUxFID89ICIke0NWRV9DSEVDS19EQl9ESVJ9L252ZGN2ZV8xLjAuZGIiCitDVkVfQ0hFQ0tfREJfRklMRSA/PSAiJHtDVkVfQ0hFQ0tfREJfRElSfS9udmRjdmVfMS4xLmRiIgogCiBDVkVfQ0hFQ0tfTE9HID89ICIke1R9L2N2ZS5sb2ciCiBDVkVfQ0hFQ0tfVE1QX0ZJTEUgPz0gIiR7VE1QRElSfS9jdmVfY2hlY2siCkBAIC01MiwxMSArNTIsMTQgQEAKICAgICAiIiIKIAogICAgIGlmIG9zLnBhdGguZXhpc3RzKGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfREJfRklMRSIpKToKLSAgICAgICAgcGF0Y2hlZF9jdmVzID0gZ2V0X3BhdGNoZXNfY3ZlcyhkKQotICAgICAgICBwYXRjaGVkLCB1bnBhdGNoZWQgPSBjaGVja19jdmVzKGQsIHBhdGNoZWRfY3ZlcykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGF0Y2hlZF9jdmVzID0gZ2V0X3BhdGNoZXNfY3ZlcyhkKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICBiYi5mYXRhbCgiRmFpbHVyZSBpbiBzZWFyY2hpbmcgcGF0Y2hlcyIpCisgICAgICAgIHdoaXRlbGlzdGVkLCBwYXRjaGVkLCB1bnBhdGNoZWQgPSBjaGVja19jdmVzKGQsIHBhdGNoZWRfY3ZlcykKICAgICAgICAgaWYgcGF0Y2hlZCBvciB1bnBhdGNoZWQ6CiAgICAgICAgICAgICBjdmVfZGF0YSA9IGdldF9jdmVfaW5mbyhkLCBwYXRjaGVkICsgdW5wYXRjaGVkKQotICAgICAgICAgICAgY3ZlX3dyaXRlX2RhdGEoZCwgcGF0Y2hlZCwgdW5wYXRjaGVkLCBjdmVfZGF0YSkKKyAgICAgICAgICAgIGN2ZV93cml0ZV9kYXRhKGQsIHBhdGNoZWQsIHVucGF0Y2hlZCwgd2hpdGVsaXN0ZWQsIGN2ZV9kYXRhKQogICAgIGVsc2U6CiAgICAgICAgIGJiLm5vdGUoIk5vIENWRSBkYXRhYmFzZSBmb3VuZCwgc2tpcHBpbmcgQ1ZFIGNoZWNrIikKIApAQCAtMTI5LDYgKzEzMiwxMCBAQAogICAgIGZvciB1cmwgaW4gc3JjX3BhdGNoZXMoZCk6CiAgICAgICAgIHBhdGNoX2ZpbGUgPSBiYi5mZXRjaC5kZWNvZGV1cmwodXJsKVsyXQogCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShwYXRjaF9maWxlKToKKyAgICAgICAgICAgIGJiLmVycm9yKCJGaWxlIE5vdCBmb3VuZDogJXMiICUgcGF0Y2hfZmlsZSkKKyAgICAgICAgICAgIHJhaXNlIEZpbGVOb3RGb3VuZEVycm9yCisKICAgICAgICAgIyBDaGVjayBwYXRjaCBmaWxlIG5hbWUgZm9yIENWRSBJRAogICAgICAgICBmbmFtZV9tYXRjaCA9IGN2ZV9maWxlX25hbWVfbWF0Y2guc2VhcmNoKHBhdGNoX2ZpbGUpCiAgICAgICAgIGlmIGZuYW1lX21hdGNoOgpAQCAtMTcyLDEzICsxNzksMTMgQEAKICAgICBwcm9kdWN0cyA9IGQuZ2V0VmFyKCJDVkVfUFJPRFVDVCIpLnNwbGl0KCkKICAgICAjIElmIHRoaXMgaGFzIGJlZW4gdW5zZXQgdGhlbiB3ZSdyZSBub3Qgc2Nhbm5pbmcgZm9yIENWRXMgaGVyZSAoZm9yIGV4YW1wbGUsIGltYWdlIHJlY2lwZXMpCiAgICAgaWYgbm90IHByb2R1Y3RzOgotICAgICAgICByZXR1cm4gKFtdLCBbXSkKKyAgICAgICAgcmV0dXJuIChbXSwgW10sIFtdKQogICAgIHB2ID0gZC5nZXRWYXIoIkNWRV9WRVJTSU9OIikuc3BsaXQoIitnaXQiKVswXQogCiAgICAgIyBJZiB0aGUgcmVjaXBlIGhhcyBiZWVuIHdoaXRsaXN0ZWQgd2UgcmV0dXJuIGVtcHR5IGxpc3RzCiAgICAgaWYgZC5nZXRWYXIoIlBOIikgaW4gZC5nZXRWYXIoIkNWRV9DSEVDS19QTl9XSElURUxJU1QiKS5zcGxpdCgpOgogICAgICAgICBiYi5ub3RlKCJSZWNpcGUgaGFzIGJlZW4gd2hpdGVsaXN0ZWQsIHNraXBwaW5nIGNoZWNrIikKLSAgICAgICAgcmV0dXJuIChbXSwgW10pCisgICAgICAgIHJldHVybiAoW10sIFtdLCBbXSkKIAogICAgIG9sZF9jdmVfd2hpdGVsaXN0ID0gIGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfQ1ZFX1dISVRFTElTVCIpCiAgICAgaWYgb2xkX2N2ZV93aGl0ZWxpc3Q6CkBAIC0yMTQsNyArMjIxLDcgQEAKICAgICAgICAgICAgICAgICAoXywgXywgXywgdmVyc2lvbl9zdGFydCwgb3BlcmF0b3Jfc3RhcnQsIHZlcnNpb25fZW5kLCBvcGVyYXRvcl9lbmQpID0gcm93CiAgICAgICAgICAgICAgICAgI2JiLmRlYnVnKDIsICJFdmFsdWF0aW5nIHJvdyAiICsgc3RyKHJvdykpCiAKLSAgICAgICAgICAgICAgICBpZiAob3BlcmF0b3Jfc3RhcnQgPT0gJz0nIGFuZCBwdiA9PSB2ZXJzaW9uX3N0YXJ0KToKKyAgICAgICAgICAgICAgICBpZiAob3BlcmF0b3Jfc3RhcnQgPT0gJz0nIGFuZCBwdiA9PSB2ZXJzaW9uX3N0YXJ0KSBvciB2ZXJzaW9uX3N0YXJ0ID09ICctJzoKICAgICAgICAgICAgICAgICAgICAgdnVsbmVyYWJsZSA9IFRydWUKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBpZiBvcGVyYXRvcl9zdGFydDoKQEAgLTI1Niw3ICsyNjMsNyBAQAogCiAgICAgY29ubi5jbG9zZSgpCiAKLSAgICByZXR1cm4gKGxpc3QocGF0Y2hlZF9jdmVzKSwgY3Zlc191bnBhdGNoZWQpCisgICAgcmV0dXJuIChsaXN0KGN2ZV93aGl0ZWxpc3QpLCBsaXN0KHBhdGNoZWRfY3ZlcyksIGN2ZXNfdW5wYXRjaGVkKQogCiBkZWYgZ2V0X2N2ZV9pbmZvKGQsIGN2ZXMpOgogICAgICIiIgpAQCAtMjgwLDcgKzI4Nyw3IEBACiAgICAgY29ubi5jbG9zZSgpCiAgICAgcmV0dXJuIGN2ZV9kYXRhCiAKLWRlZiBjdmVfd3JpdGVfZGF0YShkLCBwYXRjaGVkLCB1bnBhdGNoZWQsIGN2ZV9kYXRhKToKK2RlZiBjdmVfd3JpdGVfZGF0YShkLCBwYXRjaGVkLCB1bnBhdGNoZWQsIHdoaXRlbGlzdGVkLCBjdmVfZGF0YSk6CiAgICAgIiIiCiAgICAgV3JpdGUgQ1ZFIGluZm9ybWF0aW9uIGluIFdPUktESVI7IGFuZCB0byBDVkVfQ0hFQ0tfRElSLCBhbmQKICAgICBDVkUgbWFuaWZlc3QgaWYgZW5hYmxlZC4KQEAgLTI5Niw3ICszMDMsOSBAQAogICAgICAgICB3cml0ZV9zdHJpbmcgKz0gIlBBQ0tBR0UgTkFNRTogJXNcbiIgJSBkLmdldFZhcigiUE4iKQogICAgICAgICB3cml0ZV9zdHJpbmcgKz0gIlBBQ0tBR0UgVkVSU0lPTjogJXNcbiIgJSBkLmdldFZhcigiUFYiKQogICAgICAgICB3cml0ZV9zdHJpbmcgKz0gIkNWRTogJXNcbiIgJSBjdmUKLSAgICAgICAgaWYgY3ZlIGluIHBhdGNoZWQ6CisgICAgICAgIGlmIGN2ZSBpbiB3aGl0ZWxpc3RlZDoKKyAgICAgICAgICAgIHdyaXRlX3N0cmluZyArPSAiQ1ZFIFNUQVRVUzogV2hpdGVsaXN0ZWRcbiIKKyAgICAgICAgZWxpZiBjdmUgaW4gcGF0Y2hlZDoKICAgICAgICAgICAgIHdyaXRlX3N0cmluZyArPSAiQ1ZFIFNUQVRVUzogUGF0Y2hlZFxuIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdW5wYXRjaGVkX2N2ZXMuYXBwZW5kKGN2ZSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2RldmljZXRyZWUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2RldmljZXRyZWUuYmJjbGFzcwppbmRleCBkODc3OWM3Li5jNzcyYWIyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9kZXZpY2V0cmVlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZGV2aWNldHJlZS5iYmNsYXNzCkBAIC01OSw3ICs1OSw3IEBACiAKIERUQ19GTEFHUyA/PSAiLVIgJHtEVF9SRVNFUlZFRF9NQVB9IC1iICR7RFRfQk9PVF9DUFV9IgogRFRDX1BQRkxBR1MgPz0gIi1ub3N0ZGluYyAtdW5kZWYgLURfX0RUU19fIC14IGFzc2VtYmxlci13aXRoLWNwcCIKLURUQ19CRkxBR1MgPz0gIi1wICR7RFRfUEFERElOR19TSVpFfSIKK0RUQ19CRkxBR1MgPz0gIi1wICR7RFRfUEFERElOR19TSVpFfSAtQCIKIERUQ19PRkxBR1MgPz0gIi1wIDAgLUAgLUggZXBhcHIiCiAKIHB5dGhvbiAoKSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMtYmFzZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzLWJhc2UuYmJjbGFzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWYzOThkNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMtYmFzZS5iYmNsYXNzCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1ERVBFTkRTICArPSAiJHtAWyIke1BZVEhPTl9QTn0tbmF0aXZlICR7UFlUSE9OX1BOfSIsICIiXVsoZC5nZXRWYXIoJ1BBQ0tBR0VTJykgPT0gJycpXX0iCi1SREVQRU5EU18ke1BOfSArPSAiJHtAWycnLCAnJHtQWVRIT05fUE59LWNvcmUnXVsnJHtDTEFTU09WRVJSSURFfScgPT0gJ2NsYXNzLXRhcmdldCddfSIKLQotaW5oZXJpdCBkaXN0dXRpbHMtY29tbW9uLWJhc2UgcHl0aG9ubmF0aXZlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlscy5iYmNsYXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzU5YjU4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlscy5iYmNsYXNzCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotaW5oZXJpdCBkaXN0dXRpbHMtYmFzZQotCi1ESVNUVVRJTFNfQlVJTERfQVJHUyA/PSAiIgotRElTVFVUSUxTX1NUQUdFX0hFQURFUlNfQVJHUyA/PSAiLS1pbnN0YWxsLWRpcj0ke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9IgotRElTVFVUSUxTX1NUQUdFX0FMTF9BUkdTID89ICItLXByZWZpeD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKLSAgICAtLWluc3RhbGwtZGF0YT0ke1NUQUdJTkdfREFUQURJUn0iCi1ESVNUVVRJTFNfSU5TVEFMTF9BUkdTID89ICItLXJvb3Q9JHtEfSBcCi0gICAgLS1wcmVmaXg9JHtwcmVmaXh9IFwKLSAgICAtLWluc3RhbGwtbGliPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKLSAgICAtLWluc3RhbGwtZGF0YT0ke2RhdGFkaXJ9IgotCi1ESVNUVVRJTFNfUFlUSE9OID0gInB5dGhvbiIKLURJU1RVVElMU19QWVRIT05fY2xhc3MtbmF0aXZlID0gIm5hdGl2ZXB5dGhvbiIKLQotZGlzdHV0aWxzX2RvX2NvbmZpZ3VyZSgpIHsKLSAgICAgICAgaWYgWyAiJHtDTEVBTkJST0tFTn0iICE9ICIxIiBdIDsgdGhlbgotICAgICAgICAgICAgICAgIE5PX0ZFVENIX0JVSUxEPTEgXAotICAgICAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBjbGVhbiAke0RJU1RVVElMU19CVUlMRF9BUkdTfQotICAgICAgICBmaQotfQotCi1kaXN0dXRpbHNfZG9fY29tcGlsZSgpIHsKLSAgICAgICAgIE5PX0ZFVENIX0JVSUxEPTEgXAotICAgICAgICAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGJ1aWxkICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9IHx8IFwKLSAgICAgICAgIGJiZmF0YWxfbG9nICInJHtQWVRIT05fUE59IHNldHVwLnB5IGJ1aWxkICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9JyBleGVjdXRpb24gZmFpbGVkLiIKLX0KLQotZGlzdHV0aWxzX3N0YWdlX2hlYWRlcnMoKSB7Ci0gICAgICAgIGluc3RhbGwgLWQgJHtTVEFHSU5HX0RJUl9IT1NUfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Ci0gICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsX2hlYWRlcnMgJHtESVNUVVRJTFNfU1RBR0VfSEVBREVSU19BUkdTfSB8fCBcCi0gICAgICAgIGJiZmF0YWxfbG9nICInJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGxfaGVhZGVycyAke0RJU1RVVElMU19TVEFHRV9IRUFERVJTX0FSR1N9JyBleGVjdXRpb24gZm9yIHN0YWdlX2hlYWRlcnMgZmFpbGVkLiIKLX0KLQotZGlzdHV0aWxzX3N0YWdlX2FsbCgpIHsKLSAgICAgICAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgIGluc3RhbGwgLWQgJHtTVEFHSU5HX0RJUl9IT1NUfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Ci0gICAgICAgIFBZVEhPTlBBVEg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKLSAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGwgJHtESVNUVVRJTFNfU1RBR0VfQUxMX0FSR1N9IHx8IFwKLSAgICAgICAgYmJmYXRhbF9sb2cgIicke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAke0RJU1RVVElMU19TVEFHRV9BTExfQVJHU30nIGV4ZWN1dGlvbiBmb3Igc3RhZ2VfYWxsIGZhaWxlZC4iCi19Ci0KLWRpc3R1dGlsc19kb19pbnN0YWxsKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQotICAgICAgICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgUFlUSE9OUEFUSD0ke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gXAotICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAke0RJU1RVVElMU19JTlNUQUxMX0FSR1N9IHx8IFwKLSAgICAgICAgYmJmYXRhbF9sb2cgIicke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAke0RJU1RVVElMU19JTlNUQUxMX0FSR1N9JyBleGVjdXRpb24gZmFpbGVkLiIKLQotICAgICAgICAjIHN1cHBvcnQgZmlsZW5hbWVzIHdpdGggKnNwYWNlcyoKLSAgICAgICAgIyBvbmx5IG1vZGlmeSBmaWxlIGlmIGl0IGNvbnRhaW5zIHBhdGggIGFuZCByZWNvbXBpbGUgaXQKLSAgICAgICAgZmluZCAke0R9IC1uYW1lICIqLnB5IiAtZXhlYyBncmVwIC1xICR7RH0ge30gXDsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1leGVjIHNlZCAtaSAtZSBzOiR7RH06Omcge30gXDsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1leGVjICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiAtbWNvbXBpbGVhbGwge30gXDsKLQotICAgICAgICBmb3IgaSBpbiAke0R9JHtiaW5kaXJ9LyogJHtEfSR7c2JpbmRpcn0vKjsgZG8KLSAgICAgICAgICAgIGlmIFsgLWYgIiRpIiBdOyB0aGVuCi0gICAgICAgICAgICAgICAgc2VkIC1pIC1lIHM6JHtQWVRIT059OiR7VVNSQklOUEFUSH0vZW52XCAke0RJU1RVVElMU19QWVRIT059OmcgJGkKLSAgICAgICAgICAgICAgICBzZWQgLWkgLWUgczoke1NUQUdJTkdfQklORElSX05BVElWRX06JHtiaW5kaXJ9OmcgJGkKLSAgICAgICAgICAgIGZpCi0gICAgICAgIGRvbmUKLQotICAgICAgICBybSAtZiAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vZWFzeS1pbnN0YWxsLnB0aAotICAgICAgICBybSAtZiAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2l0ZS5weSoKLQotICAgICAgICAjCi0gICAgICAgICMgRklYTUU6IEJhbmRhaWQgYWdhaW5zdCB3cm9uZyBkYXRhZGlyIGNvbXB1dGF0aW9uCi0gICAgICAgICMKLSAgICAgICAgaWYgWyAtZSAke0R9JHtkYXRhZGlyfS9zaGFyZSBdOyB0aGVuCi0gICAgICAgICAgICBtdiAtZiAke0R9JHtkYXRhZGlyfS9zaGFyZS8qICR7RH0ke2RhdGFkaXJ9LwotICAgICAgICAgICAgcm1kaXIgJHtEfSR7ZGF0YWRpcn0vc2hhcmUKLSAgICAgICAgZmkKLQotCSMgRml4IGJhY2twb3J0IG1vZHVsZXMKLQlpZiBbIC1lICR7U1RBR0lOR19MSUJESVJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9iYWNrcG9ydHMvX19pbml0X18ucHkgXSAmJiAKLSAgICAgICAgICAgWyAtZSAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vYmFja3BvcnRzL19faW5pdF9fLnB5IF07IHRoZW4KLQkgICBybSAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vYmFja3BvcnRzL19faW5pdF9fLnB5OwotCSAgIHJtICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9iYWNrcG9ydHMvX19pbml0X18ucHljOwotCWZpCi19Ci0KLUVYUE9SVF9GVU5DVElPTlMgZG9fY29uZmlndXJlIGRvX2NvbXBpbGUgZG9faW5zdGFsbAotCi1leHBvcnQgTERTSEFSRUQ9IiR7Q0NMRH0gLXNoYXJlZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlsczMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlsczMuYmJjbGFzcwppbmRleCAwNWEyNGJmLi43MzU2YjUyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMzLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzMy5iYmNsYXNzCkBAIC0xLDEwICsxLDkgQEAKIGluaGVyaXQgZGlzdHV0aWxzMy1iYXNlCiAKK0IgPSAiJHtXT1JLRElSfS9idWlsZCIKK2Rpc3R1dGlsc19kb19jb25maWd1cmVbY2xlYW5kaXJzXSA9ICIke0J9IgorCiBESVNUVVRJTFNfQlVJTERfQVJHUyA/PSAiIgotRElTVFVUSUxTX0JVSUxEX0VYVF9BUkdTID89ICIiCi1ESVNUVVRJTFNfU1RBR0VfSEVBREVSU19BUkdTID89ICItLWluc3RhbGwtZGlyPSR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0iCi1ESVNUVVRJTFNfU1RBR0VfQUxMX0FSR1MgPz0gIi0tcHJlZml4PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gXAotICAgIC0taW5zdGFsbC1kYXRhPSR7U1RBR0lOR19EQVRBRElSfSIKIERJU1RVVElMU19JTlNUQUxMX0FSR1MgPz0gIi0tcm9vdD0ke0R9IFwKICAgICAtLXByZWZpeD0ke3ByZWZpeH0gXAogICAgIC0taW5zdGFsbC1saWI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gXApAQCAtMTQsNDUgKzEzLDI4IEBACiBESVNUVVRJTFNfUFlUSE9OX2NsYXNzLW5hdGl2ZSA9ICJuYXRpdmVweXRob24zIgogCiBkaXN0dXRpbHMzX2RvX2NvbmZpZ3VyZSgpIHsKLQlpZiBbICIke0NMRUFOQlJPS0VOfSIgIT0gIjEiIF0gOyB0aGVuCi0JCU5PX0ZFVENIX0JVSUxEPTEgXAotCQkke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgY2xlYW4gJHtESVNUVVRJTFNfQlVJTERfQVJHU30KLQlmaQorICAgIDoKIH0KIAogZGlzdHV0aWxzM19kb19jb21waWxlKCkgeworICAgICAgICBjZCAke1N9CiAgICAgICAgIE5PX0ZFVENIX0JVSUxEPTEgXAogICAgICAgICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCiAgICAgICAgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IFwKLSAgICAgICAgYnVpbGQgJHtESVNUVVRJTFNfQlVJTERfQVJHU30gfHwgXAorICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gJHtTfS9zZXR1cC5weSBcCisgICAgICAgIGJ1aWxkIC0tYnVpbGQtYmFzZT0ke0J9ICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9IHx8IFwKICAgICAgICAgYmJmYXRhbF9sb2cgIicke1BZVEhPTl9QTn0gc2V0dXAucHkgYnVpbGQgJHtESVNUVVRJTFNfQlVJTERfQVJHU30nIGV4ZWN1dGlvbiBmYWlsZWQuIgogfQogZGlzdHV0aWxzM19kb19jb21waWxlW3ZhcmRlcHNleGNsdWRlXSA9ICJNQUNISU5FIgogCi1kaXN0dXRpbHMzX3N0YWdlX2hlYWRlcnMoKSB7Ci0gICAgICAgIGluc3RhbGwgLWQgJHtTVEFHSU5HX0RJUl9IT1NUfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Ci0gICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsX2hlYWRlcnMgJHtESVNUVVRJTFNfU1RBR0VfSEVBREVSU19BUkdTfSB8fCBcCi0gICAgICAgIGJiZmF0YWxfbG9nICInJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGxfaGVhZGVycyAke0RJU1RVVElMU19TVEFHRV9IRUFERVJTX0FSR1N9JyBleGVjdXRpb24gZm9yIHN0YWdlX2hlYWRlcnMgZmFpbGVkLiIKLX0KLWRpc3R1dGlsczNfc3RhZ2VfaGVhZGVyc1t2YXJkZXBzZXhjbHVkZV0gPSAiTUFDSElORSIKLQotZGlzdHV0aWxzM19zdGFnZV9hbGwoKSB7Ci0gICAgICAgIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICBpbnN0YWxsIC1kICR7U1RBR0lOR19ESVJfSE9TVH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQotICAgICAgICBQWVRIT05QQVRIPSR7U1RBR0lOR19ESVJfSE9TVH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCi0gICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsICR7RElTVFVUSUxTX1NUQUdFX0FMTF9BUkdTfSB8fCBcCi0gICAgICAgIGJiZmF0YWxfbG9nICInJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGwgJHtESVNUVVRJTFNfU1RBR0VfQUxMX0FSR1N9JyBleGVjdXRpb24gZm9yIHN0YWdlX2FsbCBmYWlsZWQuIgotfQotZGlzdHV0aWxzM19zdGFnZV9hbGxbdmFyZGVwc2V4Y2x1ZGVdID0gIk1BQ0hJTkUiCi0KIGRpc3R1dGlsczNfZG9faW5zdGFsbCgpIHsKKyAgICAgICAgY2QgJHtTfQogICAgICAgICBpbnN0YWxsIC1kICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQogICAgICAgICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCiAgICAgICAgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKICAgICAgICAgUFlUSE9OUEFUSD0ke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gXAotICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAke0RJU1RVVElMU19JTlNUQUxMX0FSR1N9IHx8IFwKKyAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59ICR7U30vc2V0dXAucHkgXAorICAgICAgICBidWlsZCAtLWJ1aWxkLWJhc2U9JHtCfSBpbnN0YWxsIC0tc2tpcC1idWlsZCAke0RJU1RVVElMU19JTlNUQUxMX0FSR1N9IHx8IFwKICAgICAgICAgYmJmYXRhbF9sb2cgIicke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAke0RJU1RVVElMU19JTlNUQUxMX0FSR1N9JyBleGVjdXRpb24gZmFpbGVkLiIKIAogICAgICAgICAjIHN1cHBvcnQgZmlsZW5hbWVzIHdpdGggKnNwYWNlcyoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2V4dGVybmFsc3JjLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9leHRlcm5hbHNyYy5iYmNsYXNzCmluZGV4IGVhNTlkMDIuLmQyMDAxMjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2V4dGVybmFsc3JjLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZXh0ZXJuYWxzcmMuYmJjbGFzcwpAQCAtNzMsOSArNzMsOCBAQAogCiAgICAgICAgIGQuc2V0VmFyKCdTUkNfVVJJJywgJyAnLmpvaW4obG9jYWxfc3JjdXJpKSkKIAotICAgICAgICBpZiAne1NSQ1BWfScgaW4gZC5nZXRWYXIoJ1BWJywgRmFsc2UpOgotICAgICAgICAgICAgIyBEdW1teSB2YWx1ZSBiZWNhdXNlIHRoZSBkZWZhdWx0IGZ1bmN0aW9uIGNhbid0IGJlIGNhbGxlZCB3aXRoIGJsYW5rIFNSQ19VUkkKLSAgICAgICAgICAgIGQuc2V0VmFyKCdTUkNQVicsICc5OTknKQorICAgICAgICAjIER1bW15IHZhbHVlIGJlY2F1c2UgdGhlIGRlZmF1bHQgZnVuY3Rpb24gY2FuJ3QgYmUgY2FsbGVkIHdpdGggYmxhbmsgU1JDX1VSSQorICAgICAgICBkLnNldFZhcignU1JDUFYnLCAnOTk5JykKIAogICAgICAgICBpZiBkLmdldFZhcignQ09ORklHVVJFT1BUX0RFUFRSQUNLJykgPT0gJy0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nJzoKICAgICAgICAgICAgIGQuc2V0VmFyKCdDT05GSUdVUkVPUFRfREVQVFJBQ0snLCAnJykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2ZlYXR1cmVzX2NoZWNrLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9mZWF0dXJlc19jaGVjay5iYmNsYXNzCmluZGV4IDM5MWZiZTEuLjg3NmQzMmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2ZlYXR1cmVzX2NoZWNrLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZmVhdHVyZXNfY2hlY2suYmJjbGFzcwpAQCAtMjMsNiArMjMsOSBAQAogIyBDb3B5cmlnaHQgMjAxMyAoQykgTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCiAKIHB5dGhvbiAoKSB7CisgICAgaWYgZC5nZXRWYXIoJ1BBUlNFX0FMTF9SRUNJUEVTJywgRmFsc2UpOgorICAgICAgICByZXR1cm4KKwogICAgICMgQXNzdW1lIGF0IGxlYXN0IG9uZSB2YXIgaXMgc2V0LgogICAgIGRpc3Ryb19mZWF0dXJlcyA9IHNldCgoZC5nZXRWYXIoJ0RJU1RST19GRUFUVVJFUycpIG9yICcnKS5zcGxpdCgpKQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9mb250Y2FjaGUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ZvbnRjYWNoZS5iYmNsYXNzCmluZGV4IDEzZjlkZjEuLjk3ZTdmMTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2ZvbnRjYWNoZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ZvbnRjYWNoZS5iYmNsYXNzCkBAIC0yMCw3ICsyMCw3IEBACiAJJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IHVwZGF0ZV9mb250X2NhY2hlICR7UEtHfSBtbHByZWZpeD0ke01MUFJFRklYfSBiaW5wcmVmaXg9JHtNTFBSRUZJWH0gXAogCQknYmluZGlyPSIke2JpbmRpcn0iJyBcCiAJCSdsaWJkaXI9IiR7bGliZGlyfSInIFwKLSAgICAgICAgICAgICAgICAnbGliZXhlY2Rpcj0iJHtsaWJleGVjZGlyfSInIFwKKwkJJ2xpYmV4ZWNkaXI9IiR7bGliZXhlY2Rpcn0iJyBcCiAJCSdiYXNlX2xpYmRpcj0iJHtiYXNlX2xpYmRpcn0iJyBcCiAJCSdmb250Y29uZmlnY2FjaGVkaXI9IiR7Rk9OVENPTkZJR19DQUNIRV9ESVJ9IicgXAogCQknZm9udGNvbmZpZ2NhY2hlcGFyYW1zPSIke0ZPTlRDT05GSUdfQ0FDSEVfUEFSQU1TfSInIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2dvLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9nby5iYmNsYXNzCmluZGV4IGU0MGU1NTYuLmM5OTY4OWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2dvLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZ28uYmJjbGFzcwpAQCAtNTMsNiArNTMsNyBAQAogZXhwb3J0IEdPVE9PTERJUgogCiBleHBvcnQgQ0dPX0VOQUJMRUQgPz0gIjEiCitleHBvcnQgQ0dPX0VOQUJMRURfcmlzY3Y2NCA9ICIwIgogZXhwb3J0IENHT19DRkxBR1MgPz0gIiR7Q0ZMQUdTfSIKIGV4cG9ydCBDR09fQ1BQRkxBR1MgPz0gIiR7Q1BQRkxBR1N9IgogZXhwb3J0IENHT19DWFhGTEFHUyA/PSAiJHtDWFhGTEFHU30iCkBAIC0xNDcsNyArMTQ4LDcgQEAKICMgZG9lc24ndCBzdXBwb3J0IC1idWlsZG1vZGU9cGllLCBzbyBza2lwIHRoZSBRQSBjaGVja2luZyBmb3IgbWlwcyBhbmQgaXRzCiAjIHZhcmlhbnRzLgogcHl0aG9uKCkgewotICAgIGlmICdtaXBzJyBpbiBkLmdldFZhcignVEFSR0VUX0FSQ0gnKToKKyAgICBpZiAnbWlwcycgaW4gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJykgb3IgJ3Jpc2N2JyBpbiBkLmdldFZhcignVEFSR0VUX0FSQ0gnKToKICAgICAgICAgZC5hcHBlbmRWYXIoJ0lOU0FORV9TS0lQXyVzJyAlIGQuZ2V0VmFyKCdQTicpLCAiIHRleHRyZWwiKQogICAgIGVsc2U6CiAgICAgICAgIGQuYXBwZW5kVmFyKCdHT0JVSUxERkxBR1MnLCAnIC1idWlsZG1vZGU9cGllJykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2dvYXJjaC5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvZ29hcmNoLmJiY2xhc3MKaW5kZXggMTY2ZGVhOS4uMTA5OWI5NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvZ29hcmNoLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZ29hcmNoLmJiY2xhc3MKQEAgLTYsMTIgKzYsMTggQEAKIEhPU1RfR09BUk0gPSAiJHtAZ29fbWFwX2FybShkLmdldFZhcignSE9TVF9BUkNIJyksIGQpfSIKIEhPU1RfR08zODYgPSAiJHtAZ29fbWFwXzM4NihkLmdldFZhcignSE9TVF9BUkNIJyksIGQuZ2V0VmFyKCdUVU5FX0ZFQVRVUkVTJyksIGQpfSIKIEhPU1RfR09NSVBTID0gIiR7QGdvX21hcF9taXBzKGQuZ2V0VmFyKCdIT1NUX0FSQ0gnKSwgZC5nZXRWYXIoJ1RVTkVfRkVBVFVSRVMnKSwgZCl9IgorSE9TVF9HT0FSTV9jbGFzcy1uYXRpdmUgPSAiNyIKK0hPU1RfR08zODZfY2xhc3MtbmF0aXZlID0gInNzZTIiCitIT1NUX0dPTUlQU19jbGFzcy1uYXRpdmUgPSAiaGFyZGZsb2F0IgogSE9TVF9HT1RVUExFID0gIiR7SE9TVF9HT09TfV8ke0hPU1RfR09BUkNIfSIKIFRBUkdFVF9HT09TID0gIiR7QGdvX21hcF9vcyhkLmdldFZhcignVEFSR0VUX09TJyksIGQpfSIKIFRBUkdFVF9HT0FSQ0ggPSAiJHtAZ29fbWFwX2FyY2goZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyksIGQpfSIKIFRBUkdFVF9HT0FSTSA9ICIke0Bnb19tYXBfYXJtKGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpLCBkKX0iCiBUQVJHRVRfR08zODYgPSAiJHtAZ29fbWFwXzM4NihkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZC5nZXRWYXIoJ1RVTkVfRkVBVFVSRVMnKSwgZCl9IgogVEFSR0VUX0dPTUlQUyA9ICIke0Bnb19tYXBfbWlwcyhkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZC5nZXRWYXIoJ1RVTkVfRkVBVFVSRVMnKSwgZCl9IgorVEFSR0VUX0dPQVJNX2NsYXNzLW5hdGl2ZSA9ICI3IgorVEFSR0VUX0dPMzg2X2NsYXNzLW5hdGl2ZSA9ICJzc2UyIgorVEFSR0VUX0dPTUlQU19jbGFzcy1uYXRpdmUgPSAiaGFyZGZsb2F0IgogVEFSR0VUX0dPVFVQTEUgPSAiJHtUQVJHRVRfR09PU31fJHtUQVJHRVRfR09BUkNIfSIKIEdPX0JVSUxEX0JJTkRJUiA9ICIke0BbJ2Jpbi8ke0hPU1RfR09UVVBMRX0nLCdiaW4nXVtkLmdldFZhcignQlVJTERfR09UVVBMRScpID09IGQuZ2V0VmFyKCdIT1NUX0dPVFVQTEUnKV19IgogCkBAIC0zMSw2ICszNyw3IEBACiBHT19EWU5MSU5LX3g4NiA9ICIxIgogR09fRFlOTElOS194ODYtNjQgPSAiMSIKIEdPX0RZTkxJTktfcG93ZXJwYzY0ID0gIjEiCitHT19EWU5MSU5LX3Bvd2VycGM2NGxlID0gIjEiCiBHT19EWU5MSU5LX2NsYXNzLW5hdGl2ZSA9ICIiCiBHT19EWU5MSU5LX2NsYXNzLW5hdGl2ZXNkayA9ICIiCiAKQEAgLTQwLDYgKzQ3LDcgQEAKIENPTVBBVElCTEVfSE9TVF9saW51eC1tdXNseDMyID0gIm51bGwiCiBDT01QQVRJQkxFX0hPU1RfcG93ZXJwYyA9ICJudWxsIgogQ09NUEFUSUJMRV9IT1NUX3Bvd2VycGM2NCA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX3Bvd2VycGM2NGxlID0gIm51bGwiCiBDT01QQVRJQkxFX0hPU1RfbWlwc2FyY2huMzIgPSAibnVsbCIKIAogQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCkBAIC00Nyw3ICs1NSw2IEBACiBBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKIAogVFVORV9DQ0FSR1NfcmVtb3ZlID0gIi1tYXJjaD1taXBzMzJyMiIKLVNFQ1VSSVRZX0NGTEFHU19taXBzYXJjaCA9ICIke1NFQ1VSSVRZX05PUElFX0NGTEFHU30iCiBTRUNVUklUWV9OT1BJRV9DRkxBR1MgPz89ICIiCiAKICMgZ28gY2FuJ3QgYmUgYnVpbHQgd2l0aCBjY2FjaGU6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9ncnViLWVmaS1jZmcuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2dydWItZWZpLWNmZy5iYmNsYXNzCmluZGV4IDhiNWZmMjAuLjNhMmNkZDYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2dydWItZWZpLWNmZy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2dydWItZWZpLWNmZy5iYmNsYXNzCkBAIC04OCw2ICs4OCwxMiBAQAogICAgIGZvciBsYWJlbCBpbiBsYWJlbHMuc3BsaXQoKToKICAgICAgICAgbG9jYWxkYXRhID0gZC5jcmVhdGVDb3B5KCkKIAorICAgICAgICBvdmVycmlkZXMgPSBsb2NhbGRhdGEuZ2V0VmFyKCdPVkVSUklERVMnKQorICAgICAgICBpZiBub3Qgb3ZlcnJpZGVzOgorICAgICAgICAgICAgYmIuZmF0YWwoJ09WRVJSSURFUyBub3QgZGVmaW5lZCcpCisKKyAgICAgICAgbG9jYWxkYXRhLnNldFZhcignT1ZFUlJJREVTJywgJ2dydWJfJyArIGxhYmVsICsgJzonICsgb3ZlcnJpZGVzKQorCiAgICAgICAgIGZvciBidHlwZSBpbiBidHlwZXM6CiAgICAgICAgICAgICBjZmdmaWxlLndyaXRlKCdcbm1lbnVlbnRyeSBcJyVzJXNcJ3tcbicgJSAobGFiZWwsIGJ0eXBlWzBdKSkKICAgICAgICAgICAgIGxiID0gbGFiZWwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2ljZWNjLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9pY2VjYy5iYmNsYXNzCmluZGV4IGJjM2Q2ZjQuLmQwOTUzMDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2ljZWNjLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcwpAQCAtMTA1LDcgKzEwNSw3IEBACiAgICAgICAgIHJldHVybiAiaWNlY2MtY3JlYXRlLWVudi1uYXRpdmUiCiAgICAgcmV0dXJuICIiCiAKLURFUEVORFNfcHJlcGVuZCArPSAiJHtAaWNlY2NfZGVwX3ByZXBlbmQoZCl9ICIKK0RFUEVORFNfcHJlcGVuZCA9ICIke0BpY2VjY19kZXBfcHJlcGVuZChkKX0gIgogCiBnZXRfY3Jvc3Nfa2VybmVsX2NjW3ZhcmRlcHNleGNsdWRlXSArPSAiS0VSTkVMX0NDIgogZGVmIGdldF9jcm9zc19rZXJuZWxfY2MoYmIsZCk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wcmVsaW5rLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wcmVsaW5rLmJiY2xhc3MKaW5kZXggMDRkZDU3Yy4uZWJmNmU2ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtcHJlbGluay5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLXByZWxpbmsuYmJjbGFzcwpAQCAtMTcsNiArMTcsMTYgQEAKIAlwcmVfcHJlbGlua19zaXplPWBkdSAta3MgJHtJTUFHRV9ST09URlN9IHwgYXdrICd7c2l6ZSA9ICQxIDsgcHJpbnQgc2l6ZSB9J2AKIAllY2hvICJTaXplIGJlZm9yZSBwcmVsaW5raW5nICRwcmVfcHJlbGlua19zaXplLiIKIAorCSMgVGhlIGZpbGVzeXN0ZW0gbWF5IG5vdCBjb250YWluIHN5c2NvbmZkaXIgc28gZXN0YWJsaXNoIHdoYXQgaXMgcHJlc2VudAorCSMgdG8gZW5hYmxlIGNsZWFudXAgYWZ0ZXIgdGVtcG9yYXJ5IGNyZWF0aW9uIG9mIHN5c2NvbmZkaXIgaWYgbmVlZGVkCisJcHJlc2VudGRpcj0iJHtJTUFHRV9ST09URlN9JHtzeXNjb25mZGlyfSIKKwl3aGlsZSBbICIke0lNQUdFX1JPT1RGU30iICE9ICIke3ByZXNlbnRkaXJ9IiBdIDsgZG8KKwkJWyAhIC1kICIke3ByZXNlbnRkaXJ9IiBdIHx8IGJyZWFrCisJCXByZXNlbnRkaXI9YGRpcm5hbWUgIiR7cHJlc2VudGRpcn0iYAorCWRvbmUKKworCW1rZGlyIC1wICIke0lNQUdFX1JPT1RGU30ke3N5c2NvbmZkaXJ9IgorCiAJIyBXZSBuZWVkIGEgcHJlbGluayBjb25mIG9uIHRoZSBmaWxlc3lzdGVtLCBhZGQgb25lIGlmIGl0J3MgbWlzc2luZwogCWlmIFsgISAtZSAke0lNQUdFX1JPT1RGU30ke3N5c2NvbmZkaXJ9L3ByZWxpbmsuY29uZiBdOyB0aGVuCiAJCWNwICR7U1RBR0lOR19FVENESVJfTkFUSVZFfS9wcmVsaW5rLmNvbmYgXApAQCAtNTksNiArNjksMTMgQEAKIAkJcm0gJGxkc29jb25mCiAJZmkKIAorCSMgUmVtb3ZlIGFueSBkaXJlY3RvcmllcyB0ZW1wb3JhcmlseSBjcmVhdGVkIGZvciBzeXNjb25mZGlyCisJY2xlYW51cGRpcj0iJHtJTUFHRV9ST09URlN9JHtzeXNjb25mZGlyfSIKKwl3aGlsZSBbICIke3ByZXNlbnRkaXJ9IiAhPSAiJHtjbGVhbnVwZGlyfSIgXSA7IGRvCisJCXJtZGlyICIke2NsZWFudXBkaXJ9IgorCQljbGVhbnVwZGlyPWBkaXJuYW1lICR7Y2xlYW51cGRpcn1gCisJZG9uZQorCiAJcHJlX3ByZWxpbmtfc2l6ZT1gZHUgLWtzICR7SU1BR0VfUk9PVEZTfSB8IGF3ayAne3NpemUgPSAkMSA7IHByaW50IHNpemUgfSdgCiAJZWNobyAiU2l6ZSBhZnRlciBwcmVsaW5raW5nICRwcmVfcHJlbGlua19zaXplLiIKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS5iYmNsYXNzCmluZGV4IGMyODI0MzkuLjY5NGI1OGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UuYmJjbGFzcwpAQCAtNjIsMTAgKzYyLDcgQEAKICAgICB2YWxpZF9mZWF0dXJlcyA9IChkLmdldFZhckZsYWcoJ0lNQUdFX0ZFQVRVUkVTJywgJ3ZhbGlkaXRlbXMnKSBvciAiIikuc3BsaXQoKQogICAgIHZhbGlkX2ZlYXR1cmVzICs9IGQuZ2V0VmFyRmxhZ3MoJ0NPTVBMRU1FTlRBUllfR0xPQicpLmtleXMoKQogICAgIGZvciB2YXIgaW4gZDoKLSAgICAgICBpZiB2YXIuc3RhcnRzd2l0aCgiUEFDS0FHRV9HUk9VUF8iKToKLSAgICAgICAgICAgYmIud2FybigiUEFDS0FHRV9HUk9VUCBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIEZFQVRVUkVfUEFDS0FHRVMgaW5zdGVhZCIpCi0gICAgICAgICAgIHZhbGlkX2ZlYXR1cmVzLmFwcGVuZCh2YXJbMTQ6XSkKLSAgICAgICBlbGlmIHZhci5zdGFydHN3aXRoKCJGRUFUVVJFX1BBQ0tBR0VTXyIpOgorICAgICAgIGlmIHZhci5zdGFydHN3aXRoKCJGRUFUVVJFX1BBQ0tBR0VTXyIpOgogICAgICAgICAgICB2YWxpZF9mZWF0dXJlcy5hcHBlbmQodmFyWzE3Ol0pCiAgICAgdmFsaWRfZmVhdHVyZXMuc29ydCgpCiAKQEAgLTYwOSw2ICs2MDYsNyBAQAogZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKIGRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgogZG9faW5zdGFsbFtub2V4ZWNdID0gIjEiCitkZWx0YXNrIGRvX3BvcHVsYXRlX2xpYwogZGVsdGFzayBkb19wb3B1bGF0ZV9zeXNyb290CiBkb19wYWNrYWdlW25vZXhlY10gPSAiMSIKIGRlbHRhc2sgZG9fcGFja2FnZV9xYQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzLmJiY2xhc3MKaW5kZXggMmVlZmZiYi4uZjgyZjFkOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlcy5iYmNsYXNzCkBAIC01OSw2ICs1OSw4IEBACiAKIFpJUF9DT01QUkVTU0lPTl9MRVZFTCA/PSAiLTkiCiAKK1pTVERfQ09NUFJFU1NJT05fTEVWRUwgPz0gIi0zIgorCiBKRkZTMl9TVU1fRVhUUkFfQVJHUyA/PSAiIgogSU1BR0VfQ01EX2pmZnMyID0gIm1rZnMuamZmczIgLS1yb290PSR7SU1BR0VfUk9PVEZTfSAtLWZha2V0aW1lIC0tb3V0cHV0PSR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uamZmczIgJHtFWFRSQV9JTUFHRUNNRH0iCiAKQEAgLTEyOCw3ICsxMzAsNyBAQAogCiBkb19pbWFnZV9jcGlvW2NsZWFuZGlyc10gKz0gIiR7V09SS0RJUn0vY3Bpb19hcHBlbmQiCiBJTUFHRV9DTURfY3BpbyAoKSB7Ci0JKGNkICR7SU1BR0VfUk9PVEZTfSAmJiBmaW5kIC4gfCBjcGlvIC1vIC1IIG5ld2MgPiR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uY3BpbykKKwkoY2QgJHtJTUFHRV9ST09URlN9ICYmIGZpbmQgLiB8IHNvcnQgfCBjcGlvIC0tcmVwcm9kdWNpYmxlIC1vIC1IIG5ld2MgPiR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uY3BpbykKIAkjIFdlIG9ubHkgbmVlZCB0aGUgL2luaXQgc3ltbGluayBpZiB3ZSdyZSBidWlsZGluZyB0aGUgcmVhbAogCSMgaW1hZ2UuIFRoZSAtZGJnIGltYWdlIGRvZXNuJ3QgbmVlZCBpdCEgQnkgYmVpbmcgY2xldmVyCiAJIyBhYm91dCB0aGlzIHdlIGFsc28gYXZvaWQgJ3RvdWNoJyBiZWxvdyBmYWlsaW5nLCBhcyBpdApAQCAtMjY5LDcgKzI3MSw3IEBACiAgICAgaGRkaW1nIFwKICAgICBzcXVhc2hmcyBzcXVhc2hmcy14eiBzcXVhc2hmcy1sem8gc3F1YXNoZnMtbHo0IFwKICAgICB1YmkgdWJpZnMgbXVsdGl1YmkgXAotICAgIHRhciB0YXIuZ3ogdGFyLmJ6MiB0YXIueHogdGFyLmx6NCBcCisgICAgdGFyIHRhci5neiB0YXIuYnoyIHRhci54eiB0YXIubHo0IHRhci56c3QgXAogICAgIGNwaW8gY3Bpby5neiBjcGlvLnh6IGNwaW8ubHptYSBjcGlvLmx6NCBcCiAgICAgd2ljIHdpYy5neiB3aWMuYnoyIHdpYy5sem1hIFwKICAgICBjb250YWluZXIgXApAQCAtMjgyLDcgKzI4NCw3IEBACiAjIENPTlZFUlNJT05fQ01EL0RFUEVORFMuCiBDT01QUkVTU0lPTlRZUEVTID89ICIiCiAKLUNPTlZFUlNJT05UWVBFUyA9ICJneiBiejIgbHptYSB4eiBsejQgbHpvIHppcCBzdW0gbWQ1c3VtIHNoYTFzdW0gc2hhMjI0c3VtIHNoYTI1NnN1bSBzaGEzODRzdW0gc2hhNTEyc3VtIGJtYXAgdS1ib290IHZtZGsgdmRpIHFjb3cyIGJhc2U2NCAke0NPTVBSRVNTSU9OVFlQRVN9IgorQ09OVkVSU0lPTlRZUEVTID0gImd6IGJ6MiBsem1hIHh6IGx6NCBsem8gemlwIHpzdCBzdW0gbWQ1c3VtIHNoYTFzdW0gc2hhMjI0c3VtIHNoYTI1NnN1bSBzaGEzODRzdW0gc2hhNTEyc3VtIGJtYXAgdS1ib290IHZtZGsgdmRpIHFjb3cyIGJhc2U2NCAke0NPTVBSRVNTSU9OVFlQRVN9IgogQ09OVkVSU0lPTl9DTURfbHptYSA9ICJsem1hIC1rIC1mIC03ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9IgogQ09OVkVSU0lPTl9DTURfZ3ogPSAiZ3ppcCAtZiAtOSAtbiAtYyAtLXJzeW5jYWJsZSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9Lmd6IgogQ09OVkVSU0lPTl9DTURfYnoyID0gInBiemlwMiAtZiAtayAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSIKQEAgLTI5MCw2ICsyOTIsNyBAQAogQ09OVkVSU0lPTl9DTURfbHo0ID0gImx6NCAtOSAteiAtbCAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS5sejQiCiBDT05WRVJTSU9OX0NNRF9sem8gPSAibHpvcCAtOSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSIKIENPTlZFUlNJT05fQ01EX3ppcCA9ICJ6aXAgJHtaSVBfQ09NUFJFU1NJT05fTEVWRUx9ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LnppcCAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSIKK0NPTlZFUlNJT05fQ01EX3pzdCA9ICJ6c3RkIC1mIC1rIC1UMCAtYyAke1pTVERfQ09NUFJFU1NJT05fTEVWRUx9ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ID4gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0uenN0IgogQ09OVkVSU0lPTl9DTURfc3VtID0gInN1bXRvb2wgLWkgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gLW8gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0uc3VtICR7SkZGUzJfU1VNX0VYVFJBX0FSR1N9IgogQ09OVkVSU0lPTl9DTURfbWQ1c3VtID0gIm1kNXN1bSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9Lm1kNXN1bSIKIENPTlZFUlNJT05fQ01EX3NoYTFzdW0gPSAic2hhMXN1bSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LnNoYTFzdW0iCkBAIC0zMTAsNiArMzEzLDcgQEAKIENPTlZFUlNJT05fREVQRU5EU19sejQgPSAibHo0LW5hdGl2ZSIKIENPTlZFUlNJT05fREVQRU5EU19sem8gPSAibHpvcC1uYXRpdmUiCiBDT05WRVJTSU9OX0RFUEVORFNfemlwID0gInppcC1uYXRpdmUiCitDT05WRVJTSU9OX0RFUEVORFNfenN0ID0gInpzdGQtbmF0aXZlIgogQ09OVkVSU0lPTl9ERVBFTkRTX3N1bSA9ICJtdGQtdXRpbHMtbmF0aXZlIgogQ09OVkVSU0lPTl9ERVBFTkRTX2JtYXAgPSAiYm1hcC10b29scy1uYXRpdmUiCiBDT05WRVJTSU9OX0RFUEVORFNfdS1ib290ID0gInUtYm9vdC10b29scy1uYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlc193aWMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzX3dpYy5iYmNsYXNzCmluZGV4IGYzNTBkYzIuLjk2ZWQwNDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzX3dpYy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzX3dpYy5iYmNsYXNzCkBAIC00LDcgKzQsNyBAQAogICAgICAgICAgICBCQkxBWUVSUyBJTUdERVBMT1lESVIgREVQTE9ZX0RJUl9JTUFHRSBGQUtFUk9PVENNRCBJTUFHRV9CQVNFTkFNRSBJTUFHRV9CT09UX0ZJTEVTIFwKICAgICAgICAgICAgSU1BR0VfTElOS19OQU1FIElNQUdFX1JPT1RGUyBJTklUUkFNRlNfRlNUWVBFUyBJTklUUkQgSU5JVFJEX0xJVkUgSVNPRElSIFJFQ0lQRV9TWVNST09UX05BVElWRSBcCiAgICAgICAgICAgIFJPT1RGU19TSVpFIFNUQUdJTkdfREFUQURJUiBTVEFHSU5HX0RJUiBTVEFHSU5HX0xJQkRJUiBUQVJHRVRfU1lTIFwKLSAgICAgICAgICAgS0VSTkVMX0lNQUdFVFlQRSBNQUNISU5FIElOSVRSQU1GU19JTUFHRSBJTklUUkFNRlNfSU1BR0VfQlVORExFIElOSVRSQU1GU19MSU5LX05BTUUiCisgICAgICAgICAgIEtFUk5FTF9JTUFHRVRZUEUgTUFDSElORSBJTklUUkFNRlNfSU1BR0UgSU5JVFJBTUZTX0lNQUdFX0JVTkRMRSBJTklUUkFNRlNfTElOS19OQU1FIEFQUEVORCIKIAogaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnSU5JVFJBTUZTX0lNQUdFX0JVTkRMRScsICcxJywgJ2tlcm5lbC1hcnRpZmFjdC1uYW1lcycsICcnLCBkKX0KIApAQCAtMjcsMTYgKzI3LDE2IEBACiAKIElNQUdFX0NNRF93aWMgKCkgewogCW91dD0iJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0iCisJYnVpbGRfd2ljPSIke1dPUktESVJ9L2J1aWxkLXdpYyIKIAl3a3M9IiR7V0tTX0ZVTExfUEFUSH0iCiAJaWYgWyAteiAiJHdrcyIgXTsgdGhlbgogCQliYmZhdGFsICJObyBraWNrc3RhcnQgZmlsZXMgZnJvbSBXS1NfRklMRVMgd2VyZSBmb3VuZDogJHtXS1NfRklMRVN9LiBQbGVhc2Ugc2V0IFdLU19GSUxFIG9yIFdLU19GSUxFUyBhcHByb3ByaWF0ZWx5LiIKIAlmaQotCi0JQlVJTERESVI9IiR7VE9QRElSfSIgd2ljIGNyZWF0ZSAiJHdrcyIgLS12YXJzICIke1NUQUdJTkdfRElSfS8ke01BQ0hJTkV9L2ltZ2RhdGEvIiAtZSAiJHtJTUFHRV9CQVNFTkFNRX0iIC1vICIkb3V0LyIgJHtXSUNfQ1JFQVRFX0VYVFJBX0FSR1N9Ci0JbXYgIiRvdXQvJChiYXNlbmFtZSAiJHt3a3MlLndrc30iKSIqLmRpcmVjdCAiJG91dCR7SU1BR0VfTkFNRV9TVUZGSVh9LndpYyIKLQlybSAtcmYgIiRvdXQvIgorCUJVSUxERElSPSIke1RPUERJUn0iIFBTRVVET19VTkxPQUQ9MSB3aWMgY3JlYXRlICIkd2tzIiAtLXZhcnMgIiR7U1RBR0lOR19ESVJ9LyR7TUFDSElORX0vaW1nZGF0YS8iIC1lICIke0lNQUdFX0JBU0VOQU1FfSIgLW8gIiRidWlsZF93aWMvIiAke1dJQ19DUkVBVEVfRVhUUkFfQVJHU30KKwltdiAiJGJ1aWxkX3dpYy8kKGJhc2VuYW1lICIke3drcyUud2tzfSIpIiouZGlyZWN0ICIkb3V0JHtJTUFHRV9OQU1FX1NVRkZJWH0ud2ljIgogfQogSU1BR0VfQ01EX3dpY1t2YXJkZXBzZXhjbHVkZV0gPSAiV0tTX0ZVTExfUEFUSCBXS1NfRklMRVMgVE9QRElSIgorZG9faW1hZ2Vfd2ljW2NsZWFuZGlyc10gPSAiJHtXT1JLRElSfS9idWlsZC13aWMiCiAKICMgUmVidWlsZCB3aGVuIHRoZSB3a3MgZmlsZSBvciB2YXJzIGluIFdJQ1ZBUlMgY2hhbmdlCiBVU0lOR19XSUMgPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdJTUFHRV9GU1RZUEVTJywgJ3dpYyAnICsgJyAnLmpvaW4oJ3dpYy4lcycgJSBjIGZvciBjIGluICcke0NPTlZFUlNJT05UWVBFU30nLnNwbGl0KCkpLCAnMScsICcnLCBkKX0iCkBAIC00Niw2ICs0Niw3IEBACiAKICMgV2UgZW5zdXJlIGFsbCBhcnRmYWN0cyBhcmUgZGVwbG95ZWQgKGUuZyB2aXJ0dWFsL2Jvb3Rsb2FkZXIpCiBkb19pbWFnZV93aWNbcmVjcmRlcHRhc2tdICs9ICJkb19kZXBsb3kiCitkb19pbWFnZV93aWNbZGVwdGFza10gKz0gImRvX2ltYWdlX2NvbXBsZXRlIgogCiBXS1NfRklMRV9ERVBFTkRTX0RFRkFVTFQgPSAnJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCJCVUlMRF9BUkNIIiwgWyAneDg2XzY0JywgJ2k2ODYnIF0sICJzeXNsaW51eC1uYXRpdmUiLCAiIixkKX0nCiBXS1NfRklMRV9ERVBFTkRTX0RFRkFVTFQgKz0gImJtYXAtdG9vbHMtbmF0aXZlIGNkcnRvb2xzLW5hdGl2ZSBidHJmcy10b29scy1uYXRpdmUgc3F1YXNoZnMtdG9vbHMtbmF0aXZlIGUyZnNwcm9ncy1uYXRpdmUiCkBAIC04NCw2ICs4NSwxMCBAQAogICAgIGJiLnV0aWxzLmNvcHlmaWxlKHdrc19maWxlLCAiJXMvJXMiICUgKGRlcGRpciwgYmFzZW5hbWUgKyAnLScgKyBvcy5wYXRoLmJhc2VuYW1lKHdrc19maWxlKSkpCiB9CiAKK2RvX2ZsdXNoX3BzZXVkb2RiKCkgeworCSR7RkFLRVJPT1RFTlZ9ICR7RkFLRVJPT1RDTUR9IC1TCit9CisKIHB5dGhvbiAoKSB7CiAgICAgaWYgZC5nZXRWYXIoJ1VTSU5HX1dJQycpOgogICAgICAgICB3a3NfZmlsZV91ID0gZC5nZXRWYXIoJ1dLU19GVUxMX1BBVEgnLCBGYWxzZSkKQEAgLTEzNyw2ICsxNDIsNyBAQAogICAgIGRlcGRpciA9IGQuZ2V0VmFyKCdJTUdERVBMT1lESVInKQogICAgIGJiLnV0aWxzLmNvcHlmaWxlKG9zLnBhdGguam9pbihvdXRkaXIsIGJhc2VuYW1lKSArICcuZW52Jywgb3MucGF0aC5qb2luKGRlcGRpciwgYmFzZW5hbWUpICsgJy5lbnYnKQogfQorYWRkdGFzayBkb19mbHVzaF9wc2V1ZG9kYiBhZnRlciBkb19pbWFnZSBiZWZvcmUgZG9faW1hZ2Vfd2ljCiBhZGR0YXNrIGRvX3Jvb3Rmc193aWNlbnYgYWZ0ZXIgZG9faW1hZ2UgYmVmb3JlIGRvX2ltYWdlX3dpYwogZG9fcm9vdGZzX3dpY2Vudlt2YXJkZXBzXSArPSAiJHtXSUNWQVJTfSIKIGRvX3Jvb3Rmc193aWNlbnZbcHJlZnVuY3NdID0gJ3NldF9pbWFnZV9zaXplJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvaW5zYW5lLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbnNhbmUuYmJjbGFzcwppbmRleCBmODU2Y2Y2Li43ZmM4ZjMzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9pbnNhbmUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbnNhbmUuYmJjbGFzcwpAQCAtMjgsMTMgKzI4LDE0IEBACiAgICAgICAgICAgICBwbi1vdmVycmlkZXMgaW5mb2RpciBidWlsZC1kZXBzIHNyYy11cmktYmFkIFwKICAgICAgICAgICAgIHVua25vd24tY29uZmlndXJlLW9wdGlvbiBzeW1saW5rLXRvLXN5c3Jvb3QgbXVsdGlsaWIgXAogICAgICAgICAgICAgaW52YWxpZC1wYWNrYWdlY29uZmlnIGhvc3QtdXNlci1jb250YW1pbmF0ZWQgdXBwZXJjYXNlLXBuIHBhdGNoLWZ1enogXAorICAgICAgICAgICAgbWltZSBtaW1lLXhkZyBcCiAgICAgICAgICAgICAiCiBFUlJPUl9RQSA/PSAiZGV2LXNvIGRlYnVnLWRlcHMgZGV2LWRlcHMgZGVidWctZmlsZXMgYXJjaCBwa2djb25maWcgbGEgXAogICAgICAgICAgICAgcGVybXMgZGVwLWNtcCBwa2d2YXJjaGVjayBwZXJtLWNvbmZpZyBwZXJtLWxpbmUgcGVybS1saW5rIFwKICAgICAgICAgICAgIHNwbGl0LXN0cmlwIHBhY2thZ2VzLWxpc3QgcGtndi11bmRlZmluZWQgdmFyLXVuZGVmaW5lZCBcCiAgICAgICAgICAgICB2ZXJzaW9uLWdvaW5nLWJhY2t3YXJkcyBleHBhbmRlZC1kIGludmFsaWQtY2hhcnMgXAogICAgICAgICAgICAgbGljZW5zZS1jaGVja3N1bSBkZXYtZWxmIGZpbGUtcmRlcHMgY29uZmlndXJlLXVuc2FmZSBcCi0gICAgICAgICAgICBjb25maWd1cmUtZ2V0dGV4dCBwZXJsbG9jYWxwb2QgXAorICAgICAgICAgICAgY29uZmlndXJlLWdldHRleHQgcGVybGxvY2FscG9kIHNoZWJhbmctc2l6ZSBcCiAgICAgICAgICAgICAiCiAjIEFkZCB1c3JtZXJnZSBRQSBjaGVjayBiYXNlZCBvbiBkaXN0cm8gZmVhdHVyZQogRVJST1JfUUFfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndXNybWVyZ2UnLCAnIHVzcm1lcmdlJywgJycsIGQpfSIKQEAgLTgyLDYgKzgzLDI5IEBACiAgICAgZWxzZToKICAgICAgICAgbWVzc2FnZXNbc2VjdGlvbl0gPSBtZXNzYWdlc1tzZWN0aW9uXSArICJcbiIgKyBuZXdfbXNnCiAKK1FBUEFUSFRFU1Rbc2hlYmFuZy1zaXplXSA9ICJwYWNrYWdlX3FhX2NoZWNrX3NoZWJhbmdfc2l6ZSIKK2RlZiBwYWNrYWdlX3FhX2NoZWNrX3NoZWJhbmdfc2l6ZShwYXRoLCBuYW1lLCBkLCBlbGYsIG1lc3NhZ2VzKToKKyAgICBpZiBvcy5wYXRoLmlzbGluayhwYXRoKSBvciBlbGY6CisgICAgICAgIHJldHVybgorCisgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIHN0YW56YSA9IGYucmVhZGxpbmUoMTMwKQorICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICByZXR1cm4KKworICAgIGlmIHN0YW56YS5zdGFydHN3aXRoKGInIyEnKToKKyAgICAgICAgI1NoZWJhbmcgbm90IGZvdW5kCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN0YW56YSA9IHN0YW56YS5kZWNvZGUoInV0Zi04IikKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKKyAgICAgICAgICAgICNJZiBpdCBpcyBub3QgYSB0ZXh0IGZpbGUsIGl0IGlzIG5vdCBhIHNjcmlwdAorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgbGVuKHN0YW56YSkgPiAxMjk6CisgICAgICAgICAgICBwYWNrYWdlX3FhX2FkZF9tZXNzYWdlKG1lc3NhZ2VzLCAic2hlYmFuZy1zaXplIiwgIiVzOiAlcyBtYXhpbXVtIHNoZWJhbmcgc2l6ZSBleGNlZWRlZCwgdGhlIG1heGltdW0gc2l6ZSBpcyAxMjguIiAlIChuYW1lLCBwYWNrYWdlX3FhX2NsZWFuX3BhdGgocGF0aCwgZCkpKQorICAgICAgICAgICAgcmV0dXJuCisKIFFBUEFUSFRFU1RbbGliZXhlY10gPSAicGFja2FnZV9xYV9jaGVja19saWJleGVjIgogZGVmIHBhY2thZ2VfcWFfY2hlY2tfbGliZXhlYyhwYXRoLG5hbWUsIGQsIGVsZiwgbWVzc2FnZXMpOgogCkBAIC0xODEsMTAgKzIwNSw1MCBAQAogICAgIGxpYmdjYy5hLCBsaWJnY292LmEgd2lsbCBiZSBza2lwcGVkIGluIHRoZWlyIHBhY2thZ2VzCiAgICAgIiIiCiAKLSAgICBpZiBub3QgbmFtZS5lbmRzd2l0aCgiLXBpYyIpIGFuZCBub3QgbmFtZS5lbmRzd2l0aCgiLXN0YXRpY2RldiIpIGFuZCBub3QgbmFtZS5lbmRzd2l0aCgiLXB0ZXN0IikgYW5kIHBhdGguZW5kc3dpdGgoIi5hIikgYW5kIG5vdCBwYXRoLmVuZHN3aXRoKCJfbm9uc2hhcmVkLmEiKToKKyAgICBpZiBub3QgbmFtZS5lbmRzd2l0aCgiLXBpYyIpIGFuZCBub3QgbmFtZS5lbmRzd2l0aCgiLXN0YXRpY2RldiIpIGFuZCBub3QgbmFtZS5lbmRzd2l0aCgiLXB0ZXN0IikgYW5kIHBhdGguZW5kc3dpdGgoIi5hIikgYW5kIG5vdCBwYXRoLmVuZHN3aXRoKCJfbm9uc2hhcmVkLmEiKSBhbmQgbm90ICcvdXNyL2xpYi9kZWJ1Zy1zdGF0aWMvJyBpbiBwYXRoIGFuZCBub3QgJy8uZGVidWctc3RhdGljLycgaW4gcGF0aDoKICAgICAgICAgcGFja2FnZV9xYV9hZGRfbWVzc2FnZShtZXNzYWdlcywgInN0YXRpY2RldiIsICJub24gLXN0YXRpY2RldiBwYWNrYWdlIGNvbnRhaW5zIHN0YXRpYyAuYSBsaWJyYXJ5OiAlcyBwYXRoICclcyciICUgXAogICAgICAgICAgICAgICAgICAobmFtZSwgcGFja2FnZV9xYV9jbGVhbl9wYXRoKHBhdGgsZCkpKQogCitRQVBBVEhURVNUW21pbWVdID0gInBhY2thZ2VfcWFfY2hlY2tfbWltZSIKK2RlZiBwYWNrYWdlX3FhX2NoZWNrX21pbWUocGF0aCwgbmFtZSwgZCwgZWxmLCBtZXNzYWdlcyk6CisgICAgIiIiCisgICAgQ2hlY2sgaWYgcGFja2FnZSBpbnN0YWxscyBtaW1lIHR5cGVzIHRvIC91c3Ivc2hhcmUvbWltZS9wYWNrYWdlcworICAgIHdoaWxlIG5vIGluaGVyaXRpbmcgbWltZS5iYmNsYXNzCisgICAgIiIiCisKKyAgICBpZiBkLmdldFZhcigiZGF0YWRpciIpICsgIi9taW1lL3BhY2thZ2VzIiBpbiBwYXRoIGFuZCBwYXRoLmVuZHN3aXRoKCcueG1sJykgYW5kIG5vdCBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCJtaW1lIiwgZCk6CisgICAgICAgIHBhY2thZ2VfcWFfYWRkX21lc3NhZ2UobWVzc2FnZXMsICJtaW1lIiwgInBhY2thZ2UgY29udGFpbnMgbWltZSB0eXBlcyBidXQgZG9lcyBub3QgaW5oZXJpdCBtaW1lOiAlcyBwYXRoICclcyciICUgXAorICAgICAgICAgICAgICAgICAobmFtZSwgcGFja2FnZV9xYV9jbGVhbl9wYXRoKHBhdGgsZCkpKQorCitRQVBBVEhURVNUW21pbWUteGRnXSA9ICJwYWNrYWdlX3FhX2NoZWNrX21pbWVfeGRnIgorZGVmIHBhY2thZ2VfcWFfY2hlY2tfbWltZV94ZGcocGF0aCwgbmFtZSwgZCwgZWxmLCBtZXNzYWdlcyk6CisgICAgIiIiCisgICAgQ2hlY2sgaWYgcGFja2FnZSBpbnN0YWxscyBkZXNrdG9wIGZpbGUgY29udGFpbmluZyBNaW1lVHlwZSBhbmQgcmVxdWlyZXMKKyAgICBtaW1lLXR5cGVzLmJiY2xhc3MgdG8gY3JlYXRlIC91c3Ivc2hhcmUvYXBwbGljYXRpb25zL21pbWVpbmZvLmNhY2hlCisgICAgIiIiCisKKyAgICBpZiBkLmdldFZhcigiZGF0YWRpciIpICsgIi9hcHBsaWNhdGlvbnMiIGluIHBhdGggYW5kIHBhdGguZW5kc3dpdGgoJy5kZXNrdG9wJykgYW5kIG5vdCBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCJtaW1lLXhkZyIsIGQpOgorICAgICAgICBtaW1lX3R5cGVfZm91bmQgPSBGYWxzZQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3InKSBhcyBmOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGYucmVhZCgpLnNwbGl0KCdcbicpOgorICAgICAgICAgICAgICAgICAgICBpZiAnTWltZVR5cGUnIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBtaW1lX3R5cGVfZm91bmQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgIyBBdCBsZWFzdCBsaWJyZW9mZmljZSBpbnN0YWxscyBzeW1saW5rcyB3aXRoIGFic29sdXRlIHBhdGhzIHRoYXQgYXJlIGRhbmdsaW5nIGhlcmUuCisgICAgICAgICAgICAjIFdlIGNvdWxkIGltcGxlbWVudCBzb21lIG1hZ2ljIGJ1dCBmb3IgZmV3IChvbmUpIHJlY2lwZXMgaXQgaXMgbm90IHdvcnRoIHRoZSBlZmZvcnQgc28ganVzdCB3YXJuOgorICAgICAgICAgICAgd3N0ciA9ICIlcyBjYW5ub3Qgb3BlbiAlcyAtIGlzIGl0IGEgc3ltbGluayB3aXRoIGFic29sdXRlIHBhdGg/XG4iICUgKG5hbWUsIHBhY2thZ2VfcWFfY2xlYW5fcGF0aChwYXRoLGQpKQorICAgICAgICAgICAgd3N0ciArPSAiUGxlYXNlIGNoZWNrIGlmIChsaW5rZWQpIGZpbGUgY29udGFpbnMga2V5ICdNaW1lVHlwZScuXG4iCisgICAgICAgICAgICBwa2duYW1lID0gbmFtZQorICAgICAgICAgICAgaWYgbmFtZSA9PSBkLmdldFZhcignUE4nKToKKyAgICAgICAgICAgICAgICBwa2duYW1lID0gJyR7UE59JworICAgICAgICAgICAgd3N0ciArPSAiSWYgeWVzOiBhZGQgXCdpbmhlcnQgbWltZS14ZGdcJyBhbmQgXCdNSU1FX1hER19QQUNLQUdFUyArPSBcIiVzXCJcJyAvIGlmIG5vIGFkZCBcJ0lOU0FORV9TS0lQXyVzICs9IFwibWltZS14ZGdcIlwnIHRvIHJlY2lwZS4iICUgKHBrZ25hbWUsIHBrZ25hbWUpCisgICAgICAgICAgICBwYWNrYWdlX3FhX2FkZF9tZXNzYWdlKG1lc3NhZ2VzLCAibWltZS14ZGciLCB3c3RyKQorICAgICAgICBpZiBtaW1lX3R5cGVfZm91bmQ6CisgICAgICAgICAgICBwYWNrYWdlX3FhX2FkZF9tZXNzYWdlKG1lc3NhZ2VzLCAibWltZS14ZGciLCAicGFja2FnZSBjb250YWlucyBkZXNrdG9wIGZpbGUgd2l0aCBrZXkgJ01pbWVUeXBlJyBidXQgZG9lcyBub3QgaW5oZXJ0IG1pbWUteGRnOiAlcyBwYXRoICclcyciICUgXAorICAgICAgICAgICAgICAgICAgICAobmFtZSwgcGFja2FnZV9xYV9jbGVhbl9wYXRoKHBhdGgsZCkpKQorCiBkZWYgcGFja2FnZV9xYV9jaGVja19saWJkaXIoZCk6CiAgICAgIiIiCiAgICAgQ2hlY2sgZm9yIHdyb25nIGxpYnJhcnkgaW5zdGFsbGF0aW9uIHBhdGhzLiBGb3IgaW5zdGFuY2UsIGNhdGNoCkBAIC0zNzMsMTEgKzQzNywxMCBAQAogICAgIGZvciBsaW5lIGluIHBoZHJzLnNwbGl0KCJcbiIpOgogICAgICAgICBpZiAiU1lNVEFCIiBpbiBsaW5lOgogICAgICAgICAgICAgaGFzX3N5bXMgPSBUcnVlCi0gICAgICAgIGlmICJHTlVfSEFTSCIgaW4gbGluZToKKyAgICAgICAgaWYgIkdOVV9IQVNIIiBvciAiRFRfTUlQU19YSEFTSCIgaW4gbGluZToKICAgICAgICAgICAgIHNhbmUgPSBUcnVlCi0gICAgICAgIGlmICJbbWlwczMyXSIgaW4gbGluZSBvciAiW21pcHM2NF0iIGluIGxpbmU6CisgICAgICAgIGlmICgiW21pcHMzMl0iIGluIGxpbmUgb3IgIlttaXBzNjRdIiBpbiBsaW5lKSBhbmQgZC5nZXRWYXIoJ1RDTElCQycpID09ICJtdXNsIjoKICAgICAgICAgICAgIHNhbmUgPSBUcnVlCi0KICAgICBpZiBoYXNfc3ltcyBhbmQgbm90IHNhbmU6CiAgICAgICAgIHBhY2thZ2VfcWFfYWRkX21lc3NhZ2UobWVzc2FnZXMsICJsZGZsYWdzIiwgIk5vIEdOVV9IQVNIIGluIHRoZSBFTEYgYmluYXJ5ICVzLCBkaWRuJ3QgcGFzcyBMREZMQUdTPyIgJSBwYXRoKQogCkBAIC04OTMsOSArOTU2LDkgQEAKICAgICBpZiAiJHtQTn0iIGluIGQuZ2V0VmFyKCJTUkNfVVJJIiwgRmFsc2UpOgogICAgICAgICBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigic3JjLXVyaS1iYWQiLCAiJXM6IFNSQ19VUkkgdXNlcyBQTiBub3QgQlBOIiAlIHBuLCBkKQogCi0gICAgcG4gPSBkLmdldFZhcigiU1JDX1VSSSIpCi0gICAgaWYgcmUuc2VhcmNoKHIiZ2l0aHViXC5jb20vLisvLisvYXJjaGl2ZS8uKyIsIHBuKToKLSAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoInNyYy11cmktYmFkIiwgIiVzOiBTUkNfVVJJIHVzZXMgdW5zdGFibGUgR2l0SHViIGFyY2hpdmVzIiAlIHBuLCBkKQorICAgIGZvciB1cmwgaW4gZC5nZXRWYXIoIlNSQ19VUkkiKS5zcGxpdCgpOgorICAgICAgICBpZiByZS5zZWFyY2gociJnaXRodWJcLmNvbS8uKy8uKy9hcmNoaXZlLy4rIiwgdXJsKToKKyAgICAgICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJzcmMtdXJpLWJhZCIsICIlczogU1JDX1VSSSB1c2VzIHVuc3RhYmxlIEdpdEh1YiBhcmNoaXZlcyIgJSBwbiwgZCkKIAogCiAjIFRoZSBQQUNLQUdFIEZVTkMgdG8gc2NhbiBlYWNoIHBhY2thZ2UKQEAgLTkzNywxNCArMTAwMCwxMyBAQAogICAgIHBrZ2Rlc3QgPSBkLmdldFZhcignUEtHREVTVCcpCiAgICAgcGFja2FnZXMgPSBzZXQoKGQuZ2V0VmFyKCdQQUNLQUdFUycpIG9yICcnKS5zcGxpdCgpKQogCi0gICAgY3BhdGggPSBvZS5jYWNoZWRwYXRoLkNhY2hlZFBhdGgoKQogICAgIGdsb2JhbCBwa2dmaWxlcwogICAgIHBrZ2ZpbGVzID0ge30KICAgICBmb3IgcGtnIGluIHBhY2thZ2VzOgogICAgICAgICBwa2dmaWxlc1twa2ddID0gW10KLSAgICAgICAgZm9yIHdhbGtyb290LCBkaXJzLCBmaWxlcyBpbiBjcGF0aC53YWxrKHBrZ2Rlc3QgKyAiLyIgKyBwa2cpOgorICAgICAgICBmb3Igd2Fsa3Jvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsob3MucGF0aC5qb2luKHBrZ2Rlc3QsIHBrZykpOgogICAgICAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgcGtnZmlsZXNbcGtnXS5hcHBlbmQod2Fsa3Jvb3QgKyBvcy5zZXAgKyBmaWxlKQorICAgICAgICAgICAgICAgIHBrZ2ZpbGVzW3BrZ10uYXBwZW5kKG9zLnBhdGguam9pbih3YWxrcm9vdCwgZmlsZSkpCiAKICAgICAjIG5vIHBhY2thZ2VzIHNob3VsZCBiZSBzY2FubmVkCiAgICAgaWYgbm90IHBhY2thZ2VzOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWZpdGltYWdlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZml0aW1hZ2UuYmJjbGFzcwppbmRleCBlYzE4YTNkLi43MmIwNWZmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZml0aW1hZ2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZml0aW1hZ2UuYmJjbGFzcwpAQCAtMzkxLDExICszOTEsMTAgQEAKIAogCWlmIFsgLW4gIiR7RVhURVJOQUxfS0VSTkVMX0RFVklDRVRSRUV9IiBdOyB0aGVuCiAJCWR0YmNvdW50PTEKLQkJZm9yIERUQkZJTEUgaW4gJHtFWFRFUk5BTF9LRVJORUxfREVWSUNFVFJFRX0vKi5kdGI7IGRvCi0JCQlEVEI9YGJhc2VuYW1lICR7RFRCRklMRX1gCisJCWZvciBEVEIgaW4gJChmaW5kICIke0VYVEVSTkFMX0tFUk5FTF9ERVZJQ0VUUkVFfSIgXCggLW5hbWUgJyouZHRiJyAtbyAtbmFtZSAnKi5kdGJvJyBcKSAtcHJpbnRmICclUFxuJyB8IHNvcnQpOyBkbwogCQkJRFRCPSQoZWNobyAiJHtEVEJ9IiB8IHRyICcvJyAnXycpCiAJCQlEVEJTPSIke0RUQlN9ICR7RFRCfSIKLQkJCWZpdGltYWdlX2VtaXRfc2VjdGlvbl9kdGIgJHsxfSAke0RUQn0gJHtEVEJGSUxFfQorCQkJZml0aW1hZ2VfZW1pdF9zZWN0aW9uX2R0YiAkezF9ICR7RFRCfSAiJHtFWFRFUk5BTF9LRVJORUxfREVWSUNFVFJFRX0vJHtEVEJ9IgogCQlkb25lCiAJZmkKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXlvY3RvLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwteW9jdG8uYmJjbGFzcwppbmRleCBlZDliY2ZhLi41YmM2MjcwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwteW9jdG8uYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwteW9jdG8uYmJjbGFzcwpAQCAtMSw4ICsxLDI0IEBACiAjIHJlbW92ZSB0YXNrcyB0aGF0IG1vZGlmeSB0aGUgc291cmNlIHRyZWUgaW4gY2FzZSBleHRlcm5hbHNyYyBpcyBpbmhlcml0ZWQKLVNSQ1RSRUVDT1ZFUkVEVEFTS1MgKz0gImRvX2tlcm5lbF9jb25maWdtZSBkb192YWxpZGF0ZV9icmFuY2hlcyBkb19rZXJuZWxfY29uZmlnY2hlY2sgZG9fa2VybmVsX2NoZWNrb3V0IGRvX2ZldGNoIGRvX3VucGFjayBkb19wYXRjaCIKK1NSQ1RSRUVDT1ZFUkVEVEFTS1MgKz0gImRvX3ZhbGlkYXRlX2JyYW5jaGVzIGRvX2tlcm5lbF9jb25maWdjaGVjayBkb19rZXJuZWxfY2hlY2tvdXQgZG9fZmV0Y2ggZG9fdW5wYWNrIGRvX3BhdGNoIgogUEFUQ0hfR0lUX1VTRVJfRU1BSUwgPz0gImtlcm5lbC15b2N0b0BvZSIKIFBBVENIX0dJVF9VU0VSX05BTUUgPz0gIk9wZW5FbWJlZGRlZCIKIAorIyBUaGUgZGlzdHJvIG9yIGxvY2FsLmNvbmYgc2hvdWxkIHNldCB0aGlzLCBidXQgaWYgbm9ib2R5IGNhcmVzLi4uCitMSU5VWF9LRVJORUxfVFlQRSA/Pz0gInN0YW5kYXJkIgorCisjIEtNRVRBID89ICIiCitLQlJBTkNIID89ICJtYXN0ZXIiCitLTUFDSElORSA/PSAiJHtNQUNISU5FfSIKK1NSQ1JFVl9GT1JNQVQgPz0gIm1ldGFfbWFjaGluZSIKKworIyBMRVZFTFM6CisjICAgMDogbm8gcmVwb3J0aW5nCisjICAgMTogcmVwb3J0IG9wdGlvbnMgdGhhdCBhcmUgc3BlY2lmaWVkLCBidXQgbm90IGluIHRoZSBmaW5hbCBjb25maWcKKyMgICAyOiByZXBvcnQgb3B0aW9ucyB0aGF0IGFyZSBub3QgaGFyZHdhcmUgcmVsYXRlZCwgYnV0IHNldCBieSBhIEJTUAorS0NPTkZfQVVESVRfTEVWRUwgPz0gIjEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPz0gIjAiCitLTUVUQV9BVURJVCA/PSAieWVzIgorCiAjIHJldHVybnMgbG9jYWwgKGFic29sdXRlKSBwYXRoIG5hbWVzIGZvciBhbGwgdmFsaWQgcGF0Y2hlcyBpbiB0aGUKICMgc3JjX3VyaQogZGVmIGZpbmRfcGF0Y2hlcyhkLHN1YmRpcik6CkBAIC0zMSw3ICs0Nyw3IEBACiAgICAgICAgIGJhc2UsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShzKSkKICAgICAgICAgaWYgZXh0IGFuZCBleHQgaW4gWyIuc2NjIiwgIi5jZmciXToKICAgICAgICAgICAgIHNvdXJjZXNfbGlzdC5hcHBlbmQocykKLSAgICAgICAgZWxpZiBiYXNlIGFuZCBiYXNlIGluICdkZWZjb25maWcnOgorICAgICAgICBlbGlmIGJhc2UgYW5kICdkZWZjb25maWcnIGluIGJhc2U6CiAgICAgICAgICAgICBzb3VyY2VzX2xpc3QuYXBwZW5kKHMpCiAKICAgICByZXR1cm4gc291cmNlc19saXN0CkBAIC04MywxMyArOTksNiBAQAogCQlmaQogCWZpCiAKLQltYWNoaW5lX2JyYW5jaD0iJHtAIGdldF9tYWNoaW5lX2JyYW5jaChkLCAiJHtLQlJBTkNIfSIgKX0iCi0JbWFjaGluZV9zcmNyZXY9IiR7U1JDUkVWX21hY2hpbmV9IgotCWlmIFsgLXogIiR7bWFjaGluZV9zcmNyZXZ9IiBdOyB0aGVuCi0JCSMgZmFsbGJhY2sgdG8gU1JDUkVWIGlmIGEgbm9uIG1hY2hpbmVfbWV0YSB0cmVlIGlzIGJlaW5nIGJ1aWx0Ci0JCW1hY2hpbmVfc3JjcmV2PSIke1NSQ1JFVn0iCi0JZmkKLQogCSMgSW4gYSBzaW1pbGFyIG1hbm5lciB0byB0aGUga2VybmVsIGl0c2VsZjoKIAkjCiAJIyAgIGRlZmNvbmZpZzogJChvYmopL2NvbmYKQEAgLTE4Miw2ICsxOTEsMTQgQEAKIAkJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCiAJCQliYmZhdGFsX2xvZyAiQ291bGQgbm90IGxvY2F0ZSBCU1AgZGVmaW5pdGlvbiBmb3IgJHtLTUFDSElORX0vJHtMSU5VWF9LRVJORUxfVFlQRX0gYW5kIG5vIGRlZmNvbmZpZyB3YXMgcHJvdmlkZWQiCiAJCWZpCisKKwkJIyBpZiB0aGUgYnNwIGRlZmluaXRpb24gaGFzICJkZWZpbmUgS01FVEFfRVhURVJOQUxfQlNQIHQiLAorCQkjIHRoZW4gd2UgbmVlZCB0byBzZXQgYSBmbGFnIHRoYXQgd2lsbCBpbnN0cnVjdCB0aGUgbmV4dAorCQkjIHN0ZXBzIHRvIHVzZSB0aGUgQlNQIGFzIGJvdGggY29uZmlndXJhdGlvbiBhbmQgcGF0Y2hlcy4KKwkJZ3JlcCAtcSBLTUVUQV9FWFRFUk5BTF9CU1AgJGJzcF9kZWZpbml0aW9uCisJCWlmIFsgJD8gLWVxIDAgXTsgdGhlbgorCQkgICAgS01FVEFfRVhURVJOQUxfQlNQUz0idCIKKwkJZmkKIAlmaQogCW1ldGFfZGlyPSQoa2dpdCAtLW1ldGEpCiAKQEAgLTE5NSw2ICsyMTIsMTMgQEAKIAkJZmkKIAlmaQogCisJIyBpZiBLTUVUQV9FWFRFUk5BTF9CU1BTIGhhcyBiZWVuIHNldCwgb3IgaXQgaGFzIGJlZW4gZGV0ZWN0ZWQgZnJvbQorCSMgdGhlIGJzcCBkZWZpbml0aW9uLCB0aGVuIHdlIGluamVjdCB0aGUgYnNwX2RlZmluaXRpb24gaW50byB0aGUKKwkjIHBhdGNoIHBoYXNlIGJlbG93LiAgd2UnbGwgcGlnZ3kgYmFjayBvbiB0aGUgc2NjcyB2YXJpYWJsZS4KKwlpZiBbIC1uICIke0tNRVRBX0VYVEVSTkFMX0JTUFN9IiBdOyB0aGVuCisJCXNjY3M9IiR7YnNwX2RlZmluaXRpb259ICR7c2Njc30iCisJZmkKKwogCSMgcnVuMjogb25seSBnZW5lcmF0ZSBwYXRjaGVzIGZvciBlbGVtZW50cyB0aGF0IGhhdmUgYmVlbiBwYXNzZWQgb24gdGhlIFNSQ19VUkkKIAllbGVtZW50cz0iYGVjaG8gLW4gJHtzY2NzfSAke3BhdGNoZXN9ICR7S0VSTkVMX0ZFQVRVUkVTfWAiCiAJaWYgWyAtbiAiJHtlbGVtZW50c30iIF07IHRoZW4KQEAgLTI5Myw3ICszMTcsNyBAQAogfQogZG9fa2VybmVsX2NoZWNrb3V0W2RpcnNdID0gIiR7U30iCiAKLWFkZHRhc2sga2VybmVsX2NoZWNrb3V0IGJlZm9yZSBkb19rZXJuZWxfbWV0YWRhdGEgYWZ0ZXIgZG9fdW5wYWNrCithZGR0YXNrIGtlcm5lbF9jaGVja291dCBiZWZvcmUgZG9fa2VybmVsX21ldGFkYXRhIGFmdGVyIGRvX3N5bWxpbmtfa2VybnNyYwogYWRkdGFzayBrZXJuZWxfbWV0YWRhdGEgYWZ0ZXIgZG9fdmFsaWRhdGVfYnJhbmNoZXMgZG9fdW5wYWNrIGJlZm9yZSBkb19wYXRjaAogZG9fa2VybmVsX21ldGFkYXRhW2RlcGVuZHNdID0gImtlcm4tdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiBkb192YWxpZGF0ZV9icmFuY2hlc1tkZXBlbmRzXSA9ICJrZXJuLXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgpAQCAtMzAxLDEwICszMjUsOSBAQAogZG9fa2VybmVsX2NvbmZpZ21lW2RlcGVuZHNdICs9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1iaW51dGlsczpkb19wb3B1bGF0ZV9zeXNyb290IgogZG9fa2VybmVsX2NvbmZpZ21lW2RlcGVuZHNdICs9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2M6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIGRvX2tlcm5lbF9jb25maWdtZVtkZXBlbmRzXSArPSAiYmMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgYmlzb24tbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCitkb19rZXJuZWxfY29uZmlnbWVbZGVwZW5kc10gKz0gImtlcm4tdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiBkb19rZXJuZWxfY29uZmlnbWVbZGlyc10gKz0gIiR7U30gJHtCfSIKIGRvX2tlcm5lbF9jb25maWdtZSgpIHsKLQlzZXQgK2UKLQogCSMgdHJhbnNsYXRlIHRoZSBrY29uZmlnX21vZGUgaW50byBzb21ldGhpbmcgdGhhdCBtZXJnZV9jb25maWcuc2gKIAkjIHVuZGVyc3RhbmRzCiAJY2FzZSAke0tDT05GSUdfTU9ERX0gaW4KQEAgLTMzMCwxMyArMzUzLDIwIEBACiAJCWJiZmF0YWxfbG9nICJDb3VsZCBub3QgZmluZCBjb25maWd1cmF0aW9uIHF1ZXVlICgke21ldGFfZGlyfS9jb25maWcucXVldWUpIgogCWZpCiAKLQlDRkxBR1M9IiR7Q0ZMQUdTfSAke1RPT0xDSEFJTl9PUFRJT05TfSIJSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgSE9TVENQUD0iJHtCVUlMRF9DUFB9IiBDQz0iJHtLRVJORUxfQ0N9IiBBUkNIPSR7QVJDSH0gbWVyZ2VfY29uZmlnLnNoIC1PICR7Qn0gJHtjb25maWdfZmxhZ3N9ICR7Y29uZmlnc30gPiAke21ldGFfZGlyfS9jZmcvbWVyZ2VfY29uZmlnX2J1aWxkLmxvZyAyPiYxCi0JaWYgWyAkPyAtbmUgMCBdOyB0aGVuCi0JCWJiZmF0YWxfbG9nICJDb3VsZCBub3QgY29uZmlndXJlICR7S01BQ0hJTkV9LSR7TElOVVhfS0VSTkVMX1RZUEV9IgorCUNGTEFHUz0iJHtDRkxBR1N9ICR7VE9PTENIQUlOX09QVElPTlN9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBIT1NUQ1BQPSIke0JVSUxEX0NQUH0iIENDPSIke0tFUk5FTF9DQ30iIExEPSIke0tFUk5FTF9MRH0iIEFSQ0g9JHtBUkNIfSBtZXJnZV9jb25maWcuc2ggLU8gJHtCfSAke2NvbmZpZ19mbGFnc30gJHtjb25maWdzfSA+ICR7bWV0YV9kaXJ9L2NmZy9tZXJnZV9jb25maWdfYnVpbGQubG9nIDI+JjEKKwlpZiBbICQ/IC1uZSAwIC1vICEgLWYgJHtCfS8uY29uZmlnIF07IHRoZW4KKwkJYmJlcnJvciAiQ291bGQgbm90IGdlbmVyYXRlIGEgLmNvbmZpZyBmb3IgJHtLTUFDSElORX0tJHtMSU5VWF9LRVJORUxfVFlQRX0iCisJCWlmIFsgJHtLQ09ORl9BVURJVF9MRVZFTH0gLWd0IDEgXTsgdGhlbgorCQkJYmJmYXRhbF9sb2cgImBjYXQgJHttZXRhX2Rpcn0vY2ZnL21lcmdlX2NvbmZpZ19idWlsZC5sb2dgIgorCQllbHNlCisJCQliYmZhdGFsX2xvZyAiRGV0YWlscyBjYW4gYmUgZm91bmQgYXQ6ICR7U30vJHttZXRhX2Rpcn0vY2ZnL21lcmdlX2NvbmZpZ19idWlsZC5sb2ciCisJCWZpCiAJZmkKIAotCWVjaG8gIiMgR2xvYmFsIHNldHRpbmdzIGZyb20gbGludXggcmVjaXBlIiA+PiAke0J9Ly5jb25maWcKLQllY2hvICJDT05GSUdfTE9DQUxWRVJTSU9OPSJcIiR7TElOVVhfVkVSU0lPTl9FWFRFTlNJT059XCIgPj4gJHtCfS8uY29uZmlnCisJaWYgWyAhIC16ICIke0xJTlVYX1ZFUlNJT05fRVhURU5TSU9OfSIgXTsgdGhlbgorCQllY2hvICIjIEdsb2JhbCBzZXR0aW5ncyBmcm9tIGxpbnV4IHJlY2lwZSIgPj4gJHtCfS8uY29uZmlnCisJCWVjaG8gIkNPTkZJR19MT0NBTFZFUlNJT049IlwiJHtMSU5VWF9WRVJTSU9OX0VYVEVOU0lPTn1cIiA+PiAke0J9Ly5jb25maWcKKwlmaQogfQogCiBhZGR0YXNrIGtlcm5lbF9jb25maWdtZSBiZWZvcmUgZG9fY29uZmlndXJlIGFmdGVyIGRvX3BhdGNoCkBAIC0zNTUsNiArMzg1LDcgQEAKIAogICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCiAgICAgZW52WydQQVRIJ10gPSAiJXM6JXMlcyIgJSAoZC5nZXRWYXIoJ1BBVEgnKSwgcywgIi9zY3JpcHRzL3V0aWwvIikKKyAgICBlbnZbJ0xEJ10gPSAiJHtLRVJORUxfTER9IgogCiAgICAgdHJ5OgogICAgICAgICBjb25maWdzID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWydzY2MnLCAnLS1jb25maWdzJywgJy1vJywgcyArICcvLmtlcm5lbC1tZXRhJ10sIGVudj1lbnYpLmRlY29kZSgndXRmLTgnKQpAQCAtNDU4LDQgKzQ4OSwxNSBAQAogICAgICMgSWYgZGlmZmNvbmZpZyBpcyBhdmFpbGFibGUsIGVuc3VyZSBpdCBydW5zIGFmdGVyIGtlcm5lbF9jb25maWdtZQogICAgIGlmICdkb19kaWZmY29uZmlnJyBpbiBkOgogICAgICAgICBiYi5idWlsZC5hZGR0YXNrKCdkb19kaWZmY29uZmlnJywgTm9uZSwgJ2RvX2tlcm5lbF9jb25maWdtZScsIGQpCisKKyAgICBleHRlcm5hbHNyYyA9IGQuZ2V0VmFyKCdFWFRFUk5BTFNSQycpCisgICAgaWYgZXh0ZXJuYWxzcmM6CisgICAgICAgICMgSWYgd2UgZGVsdGFzayBkb19wYXRjaCwgZG9fa2VybmVsX2NvbmZpZ21lIGlzIGxlZnQgd2l0aG91dAorICAgICAgICAjIGRlcGVuZGVuY2llcyBhbmQgcnVucyB0b28gZWFybHkKKyAgICAgICAgZC5zZXRWYXJGbGFnKCdkb19rZXJuZWxfY29uZmlnbWUnLCAnZGVwcycsIChkLmdldFZhckZsYWcoJ2RvX2tlcm5lbF9jb25maWdtZScsICdkZXBzJywgRmFsc2UpIG9yIFtdKSArIFsnZG9fdW5wYWNrJ10pCiB9CisKKyMgZXh0cmEgdGFza3MKK2FkZHRhc2sga2VybmVsX3ZlcnNpb25fc2FuaXR5X2NoZWNrIGFmdGVyIGRvX2tlcm5lbF9tZXRhZGF0YSBkb19rZXJuZWxfY2hlY2tvdXQgYmVmb3JlIGRvX2NvbXBpbGUKK2FkZHRhc2sgdmFsaWRhdGVfYnJhbmNoZXMgYmVmb3JlIGRvX3BhdGNoIGFmdGVyIGRvX2tlcm5lbF9jaGVja291dAorYWRkdGFzayBrZXJuZWxfY29uZmlnY2hlY2sgYWZ0ZXIgZG9fY29uZmlndXJlIGJlZm9yZSBkb19jb21waWxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC5iYmNsYXNzCmluZGV4IGViY2I3OWEuLmE3MjQ2NDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC5iYmNsYXNzCkBAIC0yOTQsMTQgKzI5NCwxMCBAQAogCQkjIGtlcm5lbCBzb3VyY2VzIGRvIG5vdCB1c2UgZG9fdW5wYWNrLCBzbyBTT1VSQ0VfREFURV9FUE9DSCBtYXkgbm90CiAJCSMgYmUgc2V0Li4uLgogCQlpZiBbICIke1NPVVJDRV9EQVRFX0VQT0NIfSIgPSAiIiAtbyAiJHtTT1VSQ0VfREFURV9FUE9DSH0iID0gIjAiIF07IHRoZW4KLQkJCW9sZGRpcj1gcHdkYAotCQkJY2QgJHtTfQotCQkJU09VUkNFX0RBVEVfRVBPQ0g9YGdpdCBsb2cgIC0xIC0tcHJldHR5PSVjdGAKLQkJCSMgZ2l0IHJlcG8gbm90IGd1YXJhbnRlZWQsIHNvIGZhbGwgYmFjayB0byBSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGUwotCQkJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCi0JCQkJU09VUkNFX0RBVEVfRVBPQ0g9JHtSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGU30KLQkJCWZpCi0JCQljZCAkb2xkZGlyCisJCQkjIFRoZSBzb3VyY2UgZGlyZWN0b3J5IGlzIG5vdCBuZWNlc3NhcmlseSBhIGdpdCByZXBvc2l0b3J5LCBzbyB3ZQorCQkJIyBzcGVjaWZ5IHRoZSBnaXQtZGlyIHRvIGVuc3VyZSB0aGF0IGdpdCBkb2VzIG5vdCBxdWVyeSBhCisJCQkjIHJlcG9zaXRvcnkgaW4gYW55IHBhcmVudCBkaXJlY3RvcnkuCisJCQlTT1VSQ0VfREFURV9FUE9DSD1gZ2l0IC0tZ2l0LWRpcj0iJHtTfS8uZ2l0IiBsb2cgLTEgLS1wcmV0dHk9JWN0IDI+L2Rldi9udWxsIHx8IGVjaG8gIiR7UkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlN9ImAKIAkJZmkKIAogCQl0cz1gTENfQUxMPUMgZGF0ZSAtZCBAJFNPVVJDRV9EQVRFX0VQT0NIYApAQCAtNTA4LDcgKzUwNCw3IEBACiAJOgogfQogCi1LRVJORUxfQ09ORklHX0NPTU1BTkQgPz0gIm9lX3J1bm1ha2VfY2FsbCAtQyAke1N9IENDPSIke0tFUk5FTF9DQ30iIE89JHtCfSBvbGRkZWZjb25maWcgfHwgb2VfcnVubWFrZSAtQyAke1N9IE89JHtCfSBDQz0iJHtLRVJORUxfQ0N9IiBvbGRub2NvbmZpZyIKK0tFUk5FTF9DT05GSUdfQ09NTUFORCA/PSAib2VfcnVubWFrZV9jYWxsIC1DICR7U30gQ0M9IiR7S0VSTkVMX0NDfSIgTEQ9IiR7S0VSTkVMX0xEfSIgTz0ke0J9IG9sZGRlZmNvbmZpZyB8fCBvZV9ydW5tYWtlIC1DICR7U30gTz0ke0J9IENDPSIke0tFUk5FTF9DQ30iIExEPSIke0tFUk5FTF9MRH0iIG9sZG5vY29uZmlnIgogCiBweXRob24gY2hlY2tfb2xkZXN0X2tlcm5lbCgpIHsKICAgICBvbGRlc3Rfa2VybmVsID0gZC5nZXRWYXIoJ09MREVTVF9LRVJORUwnKQpAQCAtNTcwLDkgKzU2Niw5IEBACiAjIEFsbG93IG1hY2hpbmVzIHRvIG92ZXJyaWRlIHRoaXMgZGVwZW5kZW5jeSBpZiBrZXJuZWwgaW1hZ2UgZmlsZXMgYXJlCiAjIG5vdCB3YW50ZWQgaW4gaW1hZ2VzIGFzIHN0YW5kYXJkCiBSREVQRU5EU18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgPz0gIiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0taW1hZ2UiCi1QS0dfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1pbWFnZSA9ICIke0tFUk5FTF9QQUNLQUdFX05BTUV9LWltYWdlLSR7QGxlZ2l0aW1pemVfcGFja2FnZV9uYW1lKCcke0tFUk5FTF9WRVJTSU9OfScpfSIKK1BLR18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWltYWdlID0gIiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0taW1hZ2UtJHtAbGVnaXRpbWl6ZV9wYWNrYWdlX25hbWUoZC5nZXRWYXIoJ0tFUk5FTF9WRVJTSU9OJykpfSIKIFJERVBFTkRTXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0taW1hZ2UgKz0gIiR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdLRVJORUxfSU1BR0VUWVBFJywgJ3ZtbGludXgnLCAnJHtLRVJORUxfUEFDS0FHRV9OQU1FfS12bWxpbnV4JywgJycsIGQpfSIKLVBLR18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgPSAiJHtLRVJORUxfUEFDS0FHRV9OQU1FfS0ke0BsZWdpdGltaXplX3BhY2thZ2VfbmFtZSgnJHtLRVJORUxfVkVSU0lPTn0nKX0iCitQS0dfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1iYXNlID0gIiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tJHtAbGVnaXRpbWl6ZV9wYWNrYWdlX25hbWUoZC5nZXRWYXIoJ0tFUk5FTF9WRVJTSU9OJykpfSIKIFJQUk9WSURFU18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgKz0gIiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tJHtLRVJORUxfVkVSU0lPTn0iCiBBTExPV19FTVBUWV8ke0tFUk5FTF9QQUNLQUdFX05BTUV9ID0gIjEiCiBBTExPV19FTVBUWV8ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWJhc2UgPSAiMSIKQEAgLTYxMyw2ICs2MDksOSBAQAogCWlmIFsgLWYgLi4vLi4vLi4vdm1saW51ei5iaW4gXTsgdGhlbgogCQlsbiAtc2YgLi4vLi4vLi4vdm1saW51ei5iaW4KIAlmaQorCWlmIFsgLWYgLi4vLi4vLi4vdm1saW51eC42NCBdOyB0aGVuCisJCWxuIC1zZiAuLi8uLi8uLi92bWxpbnV4LjY0CisJZmkKIH0KIGFkZHRhc2sga2VybmVsX2xpbmtfaW1hZ2VzIGFmdGVyIGRvX2NvbXBpbGUgYmVmb3JlIGRvX3N0cmlwCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbHNyYy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsc3JjLmJiY2xhc3MKaW5kZXggNjc1ZDQwZS4uYTk1MWJhMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsc3JjLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsc3JjLmJiY2xhc3MKQEAgLTEsNyArMSw3IEBACiBTID0gIiR7U1RBR0lOR19LRVJORUxfRElSfSIKIGRlbHRhc2sgZG9fZmV0Y2gKIGRlbHRhc2sgZG9fdW5wYWNrCi1kb19wYXRjaFtkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fcGF0Y2giCitkb19wYXRjaFtkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fc2hhcmVkX3dvcmtkaXIiCiBkb19wYXRjaFtub2V4ZWNdID0gIjEiCiBkb19wYWNrYWdlW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19wb3B1bGF0ZV9zeXNyb290IgogS0VSTkVMX1ZFUlNJT04gPSAiJHtAZ2V0X2tlcm5lbHZlcnNpb25fZmlsZSgiJHtTVEFHSU5HX0tFUk5FTF9CVUlMRERJUn0iKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9saWJjLWNvbW1vbi5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbGliYy1jb21tb24uYmJjbGFzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGUzNTFiNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9saWJjLWNvbW1vbi5iYmNsYXNzCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGxfcm9vdD0ke0R9IGluc3RhbGwKLQlpbnN0YWxsIC1EbSAwNjQ0ICR7V09SS0RJUn0vZXRjL2xkLnNvLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYKLQlpbnN0YWxsIC1kICR7RH0ke2xvY2FsZWRpcn0KLQltYWtlIC1mICR7V09SS0RJUn0vZ2VuZXJhdGUtc3VwcG9ydGVkLm1rIElOPSIke1N9L2xvY2FsZWRhdGEvU1VQUE9SVEVEIiBPVVQ9IiR7V09SS0RJUn0vU1VQUE9SVEVEIgotCSMgZ2V0IHJpZCBvZiBzb21lIGJyb2tlbiBmaWxlcy4uLgotCWZvciBpIGluICR7R0xJQkNfQlJPS0VOX0xPQ0FMRVN9OyBkbwotCQlzZWQgLWkgIi8kaS9kIiAke1dPUktESVJ9L1NVUFBPUlRFRAotCWRvbmUKLQlybSAtZiAke0R9JHtzeXNjb25mZGlyfS9ycGMKLQlybSAtcmYgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KLQlybSAtcmYgJHtEfSR7bGliZXhlY2Rpcn0vZ2V0Y29uZgotfQotCi1kZWYgZ2V0X2xpYmNfZnB1X3NldHRpbmcoYmIsIGQpOgotICAgIGlmIGQuZ2V0VmFyKCdUQVJHRVRfRlBVJykgaW4gWyAnc29mdCcsICdwcGMtZWZkJyBdOgotICAgICAgICByZXR1cm4gIi0td2l0aG91dC1mcCIKLSAgICByZXR1cm4gIiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGlmIGQuZ2V0VmFyKCdERUJJQU5fTkFNRVMnKToKLSAgICAgICAgcGtncyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKLSAgICAgICAgYnBuID0gZC5nZXRWYXIoJ0JQTicpCi0gICAgICAgIHByZWZpeCA9IGQuZ2V0VmFyKCdNTFBSRUZJWCcpIG9yICIiCi0gICAgICAgICMgU2V0IHRoZSBiYXNlIHBhY2thZ2UuLi4KLSAgICAgICAgZC5zZXRWYXIoJ1BLR18nICsgcHJlZml4ICsgYnBuLCBwcmVmaXggKyAnbGliYzYnKQotICAgICAgICBsaWJjcHJlZml4ID0gcHJlZml4ICsgYnBuICsgJy0nCi0gICAgICAgIGZvciBwIGluIHBrZ3M6Ci0gICAgICAgICAgICAjIEFuZCBhbGwgdGhlIHN1YnBhY2thZ2VzLgotICAgICAgICAgICAgaWYgcC5zdGFydHN3aXRoKGxpYmNwcmVmaXgpOgotICAgICAgICAgICAgICAgIHJlbmFtZWQgPSBwLnJlcGxhY2UoYnBuLCAnbGliYzYnLCAxKQotICAgICAgICAgICAgICAgIGQuc2V0VmFyKCdQS0dfJyArIHAsIHJlbmFtZWQpCi0gICAgICAgICMgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgLWRiZyBwYWNrYWdlCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSUFJPVklERVNfJyArIGxpYmNwcmVmaXggKyAnZGJnJywgJyAnICsgcHJlZml4ICsgJ2xpYmMtZGJnJykKLSAgICAgICAgZC5hcHBlbmRWYXIoJ1JDT05GTElDVFNfJyArIGxpYmNwcmVmaXggKyAnZGJnJywgJyAnICsgcHJlZml4ICsgJ2xpYmMtZGJnJykKLSAgICAgICAgZC5hcHBlbmRWYXIoJ1JSRVBMQUNFU18nICsgbGliY3ByZWZpeCArICdkYmcnLCAnICcgKyBwcmVmaXggKyAnbGliYy1kYmcnKQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbGliYy1wYWNrYWdlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9saWJjLXBhY2thZ2UuYmJjbGFzcwppbmRleCBkZTgxNmJjLi5kZTNiNDI1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9saWJjLXBhY2thZ2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9saWJjLXBhY2thZ2UuYmJjbGFzcwpAQCAtMjQ4LDYgKzI0OCw3IEBACiAgICAgICAgICAgICAgICAgInNoNCI6ICAgICAiIC0tdWludDMyLWFsaWduPTQgLS1iaWctZW5kaWFuICIsICAgIFwKICAgICAgICAgICAgICAgICAicG93ZXJwYyI6ICIgLS11aW50MzItYWxpZ249NCAtLWJpZy1lbmRpYW4gIiwgICAgXAogICAgICAgICAgICAgICAgICJwb3dlcnBjNjQiOiAiIC0tdWludDMyLWFsaWduPTQgLS1iaWctZW5kaWFuICIsICBcCisgICAgICAgICAgICAgICAgInBvd2VycGM2NGxlIjogIiAtLXVpbnQzMi1hbGlnbj00IC0tbGl0dGxlLWVuZGlhbiAiLCAgXAogICAgICAgICAgICAgICAgICJtaXBzIjogICAgIiAtLXVpbnQzMi1hbGlnbj00IC0tYmlnLWVuZGlhbiAiLCAgICBcCiAgICAgICAgICAgICAgICAgIm1pcHNpc2EzMnI2IjogICAgIiAtLXVpbnQzMi1hbGlnbj00IC0tYmlnLWVuZGlhbiAiLCAgICBcCiAgICAgICAgICAgICAgICAgIm1pcHM2NCI6ICAiIC0tdWludDMyLWFsaWduPTQgLS1iaWctZW5kaWFuICIsICAgIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcwppbmRleCA2NDhhNGQ3Li5mOTAxNzZkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9saWNlbnNlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZS5iYmNsYXNzCkBAIC0yNTIsNyArMjUyLDcgQEAKICAgICAiIiIKICAgICBSZXR1cm4gdGhlIGNhbm9uaWNhbCAoU1BEWCkgZm9ybSBvZiB0aGUgbGljZW5zZSBpZiBhdmFpbGFibGUgKHNvIEdQTHYzCiAgICAgYmVjb21lcyBHUEwtMy4wKSwgZm9yIHRoZSBsaWNlbnNlIG5hbWVkICdYKycsIHJldHVybiBjYW5vbmljYWwgZm9ybSBvZgotICAgICdYJyBpZiBhdmFpbGFiZWwgYW5kIHRoZSB0YWlsaW5nICcrJyAoc28gR1BMdjMrIGJlY29tZXMgR1BMLTMuMCspLCAKKyAgICAnWCcgaWYgYXZhaWxhYmxlIGFuZCB0aGUgdGFpbGluZyAnKycgKHNvIEdQTHYzKyBiZWNvbWVzIEdQTC0zLjArKSwKICAgICBvciB0aGUgcGFzc2VkIGxpY2Vuc2UgaWYgdGhlcmUgaXMgbm8gY2Fub25pY2FsIGZvcm0uCiAgICAgIiIiCiAgICAgbGljID0gZC5nZXRWYXJGbGFnKCdTUERYTElDRU5TRU1BUCcsIGxpY2Vuc2UpIG9yICIiCkBAIC0yNjIsMTAgKzI2MiwyOSBAQAogICAgICAgICAgICAgbGljICs9ICcrJwogICAgIHJldHVybiBsaWMgb3IgbGljZW5zZQogCitkZWYgYXZhaWxhYmxlX2xpY2Vuc2VzKGQpOgorICAgICIiIgorICAgIFJldHVybiB0aGUgYXZhaWxhYmxlIGxpY2Vuc2VzIGJ5IHNlYXJjaGluZyB0aGUgZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGJ5CisgICAgQ09NTU9OX0xJQ0VOU0VfRElSIGFuZCBMSUNFTlNFX1BBVEguCisgICAgIiIiCisgICAgbGljX2RpcnMgPSAoKGQuZ2V0VmFyKCdDT01NT05fTElDRU5TRV9ESVInKSBvciAnJykgKyAnICcgKworICAgICAgICAgICAgICAgIChkLmdldFZhcignTElDRU5TRV9QQVRIJykgb3IgJycpKS5zcGxpdCgpCisKKyAgICBsaWNlbnNlcyA9IFtdCisgICAgZm9yIGxpY19kaXIgaW4gbGljX2RpcnM6CisgICAgICAgIGxpY2Vuc2VzICs9IG9zLmxpc3RkaXIobGljX2RpcikKKworICAgIGxpY2Vuc2VzID0gc29ydGVkKGxpY2Vuc2VzKQorICAgIHJldHVybiBsaWNlbnNlcworCisjIE9ubHkgZGV0ZXJtaW5lIHRoZSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgbGljZW5zZXMgb25jZS4gVGhpcyBhc3N1bWVzIHRoYXQgYW55CisjIGFkZGl0aW9ucyB0byBMSUNFTlNFX1BBVEggaGF2ZSBiZWVuIGRvbmUgYmVmb3JlIHRoaXMgZmlsZSBpcyBwYXJzZWQuCitBVkFJTEFCTEVfTElDRU5TRVMgOj0gIiR7QCcgJy5qb2luKGF2YWlsYWJsZV9saWNlbnNlcyhkKSl9IgorCiBkZWYgZXhwYW5kX3dpbGRjYXJkX2xpY2Vuc2VzKGQsIHdpbGRjYXJkX2xpY2Vuc2VzKToKICAgICAiIiIKLSAgICBSZXR1cm4gYWN0dWFsIHNwZHggZm9ybWF0IGxpY2Vuc2UgbmFtZXMgaWYgd2lsZGNhcmQgdXNlZC4gV2UgZXhwYW5kCi0gICAgd2lsZGNhcmRzIGZyb20gU1BEWExJQ0VOU0VNQVAgZmxhZ3MgYW5kIFNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTIHZhbHVlcy4KKyAgICBSZXR1cm4gYWN0dWFsIHNwZHggZm9ybWF0IGxpY2Vuc2UgbmFtZXMgaWYgd2lsZGNhcmRzIGFyZSB1c2VkLiBXZSBleHBhbmQKKyAgICB3aWxkY2FyZHMgZnJvbSBTUERYTElDRU5TRU1BUCBmbGFncyBhbmQgQVZBSUxBQkxFX0xJQ0VOU0VTLgogICAgICIiIgogICAgIGltcG9ydCBmbm1hdGNoCiAgICAgbGljZW5zZXMgPSB3aWxkY2FyZF9saWNlbnNlc1s6XQpAQCAtMjc0LDcgKzI5Myw3IEBACiAgICAgICAgIHNwZHhmbGFncyA9IGZubWF0Y2guZmlsdGVyKHNwZHhtYXBrZXlzLCB3bGRfbGljKQogICAgICAgICBsaWNlbnNlcyArPSBbZC5nZXRWYXJGbGFnKCdTUERYTElDRU5TRU1BUCcsIGZsYWcpIGZvciBmbGFnIGluIHNwZHhmbGFnc10KIAotICAgIHNwZHhfbGljcyA9IChkLmdldFZhcignU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMnLCBGYWxzZSkgb3IgJycpLnNwbGl0KCkKKyAgICBzcGR4X2xpY3MgPSBkLmdldFZhcignQVZBSUxBQkxFX0xJQ0VOU0VTJykuc3BsaXQoKQogICAgIGZvciB3bGRfbGljIGluIHdpbGRjYXJkX2xpY2Vuc2VzOgogICAgICAgICBsaWNlbnNlcyArPSBmbm1hdGNoLmZpbHRlcihzcGR4X2xpY3MsIHdsZF9saWMpCiAKQEAgLTI5MSwxNSArMzEwLDIxIEBACiAgICAgIyBIYW5kbGVzIGFuICJvciIgb3IgdHdvIGxpY2Vuc2Ugc2V0cyBwcm92aWRlZCBieQogICAgICMgZmxhdHRlbmVkX2xpY2Vuc2VzKCksIHBpY2sgb25lIHRoYXQgd29ya3MgaWYgcG9zc2libGUuCiAgICAgZGVmIGNob29zZV9saWNfc2V0KGEsIGIpOgotICAgICAgICByZXR1cm4gYSBpZiBhbGwob2UubGljZW5zZS5saWNlbnNlX29rKGNhbm9uaWNhbF9saWNlbnNlKGQsIGxpYyksIAorICAgICAgICByZXR1cm4gYSBpZiBhbGwob2UubGljZW5zZS5saWNlbnNlX29rKGNhbm9uaWNhbF9saWNlbnNlKGQsIGxpYyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9udF93YW50X2xpY2Vuc2VzKSBmb3IgbGljIGluIGEpIGVsc2UgYgogCiAgICAgdHJ5OgogICAgICAgICBsaWNlbnNlcyA9IG9lLmxpY2Vuc2UuZmxhdHRlbmVkX2xpY2Vuc2VzKGxpY2Vuc2UsIGNob29zZV9saWNfc2V0KQogICAgIGV4Y2VwdCBvZS5saWNlbnNlLkxpY2Vuc2VFcnJvciBhcyBleGM6CiAgICAgICAgIGJiLmZhdGFsKCclczogJXMnICUgKGQuZ2V0VmFyKCdQJyksIGV4YykpCi0gICAgcmV0dXJuIGFueShub3Qgb2UubGljZW5zZS5saWNlbnNlX29rKGNhbm9uaWNhbF9saWNlbnNlKGQsIGwpLCBcCi0gICAgICAgICAgICAgICBkb250X3dhbnRfbGljZW5zZXMpIGZvciBsIGluIGxpY2Vuc2VzKQorCisgICAgaW5jb21wYXRpYmxlX2xpYyA9IFtdCisgICAgZm9yIGwgaW4gbGljZW5zZXM6CisgICAgICAgIGxpY2Vuc2UgPSBjYW5vbmljYWxfbGljZW5zZShkLCBsKQorICAgICAgICBpZiBub3Qgb2UubGljZW5zZS5saWNlbnNlX29rKGxpY2Vuc2UsIGRvbnRfd2FudF9saWNlbnNlcyk6CisgICAgICAgICAgICBpbmNvbXBhdGlibGVfbGljLmFwcGVuZChsaWNlbnNlKQorCisgICAgcmV0dXJuIHNvcnRlZChpbmNvbXBhdGlibGVfbGljKQogCiBkZWYgaW5jb21wYXRpYmxlX2xpY2Vuc2UoZCwgZG9udF93YW50X2xpY2Vuc2VzLCBwYWNrYWdlPU5vbmUpOgogICAgICIiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZV9pbWFnZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZV9pbWFnZS5iYmNsYXNzCmluZGV4IGI1Mzk5YjYuLmE4YzcyZGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2VfaW1hZ2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9saWNlbnNlX2ltYWdlLmJiY2xhc3MKQEAgLTUxLDggKzUxLDkgQEAKICAgICAgICAgZm9yIHBrZyBpbiBzb3J0ZWQocGtnX2RpYyk6CiAgICAgICAgICAgICBpZiBiYWRfbGljZW5zZXMgYW5kIHBrZyBub3QgaW4gd2hpdGVsaXN0OgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgaWYgaW5jb21wYXRpYmxlX3BrZ19saWNlbnNlKGQsIGJhZF9saWNlbnNlcywgcGtnX2RpY1twa2ddWyJMSUNFTlNFIl0pOgotICAgICAgICAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIlBhY2thZ2UgJXMgaGFzIGFuIGluY29tcGF0aWJsZSBsaWNlbnNlICVzIGFuZCBjYW5ub3QgYmUgaW5zdGFsbGVkIGludG8gdGhlIGltYWdlLiIgJShwa2csIHBrZ19kaWNbcGtnXVsiTElDRU5TRSJdKSkKKyAgICAgICAgICAgICAgICAgICAgbGljZW5zZXMgPSBpbmNvbXBhdGlibGVfcGtnX2xpY2Vuc2UoZCwgYmFkX2xpY2Vuc2VzLCBwa2dfZGljW3BrZ11bIkxJQ0VOU0UiXSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbGljZW5zZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBiYi5mYXRhbCgiUGFja2FnZSAlcyBjYW5ub3QgYmUgaW5zdGFsbGVkIGludG8gdGhlIGltYWdlIGJlY2F1c2UgaXQgaGFzIGluY29tcGF0aWJsZSBsaWNlbnNlKHMpOiAlcyIgJShwa2csICcgJy5qb2luKGxpY2Vuc2VzKSkpCiAgICAgICAgICAgICAgICAgICAgIChwa2dfZGljW3BrZ11bIkxJQ0VOU0UiXSwgcGtnX2RpY1twa2ddWyJMSUNFTlNFUyJdKSA9IFwKICAgICAgICAgICAgICAgICAgICAgICAgIG9lLmxpY2Vuc2UubWFuaWZlc3RfbGljZW5zZXMocGtnX2RpY1twa2ddWyJMSUNFTlNFIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICBiYWRfbGljZW5zZXMsIGNhbm9uaWNhbF9saWNlbnNlLCBkKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbGludXhsb2FkZXIuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2xpbnV4bG9hZGVyLmJiY2xhc3MKaW5kZXggYzBmYmYyNi4uZWMwZTA1NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbGludXhsb2FkZXIuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9saW51eGxvYWRlci5iYmNsYXNzCkBAIC0xLDI3ICsxLDMxIEBACi1kZWYgZ2V0X211c2xfbG9hZGVyKGQpOgorZGVmIGdldF9tdXNsX2xvYWRlcl9hcmNoKGQpOgogICAgIGltcG9ydCByZQotICAgIGR5bmFtaWNfbG9hZGVyID0gTm9uZQorICAgIGxkc29fYXJjaCA9IE5vbmUKIAogICAgIHRhcmdldGFyY2ggPSBkLmdldFZhcigiVEFSR0VUX0FSQ0giKQogICAgIGlmIHRhcmdldGFyY2guc3RhcnRzd2l0aCgibWljcm9ibGF6ZSIpOgotICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLW1pY3JvYmxhemUke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdiaWdlbmRpYW4nLCAnJywgJ2VsJyAsZCl9LnNvLjEiCisgICAgICAgIGxkc29fYXJjaCA9ICJtaWNyb2JsYXplJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYmlnZW5kaWFuJywgJycsICdlbCcgLGQpfSIKICAgICBlbGlmIHRhcmdldGFyY2guc3RhcnRzd2l0aCgibWlwcyIpOgotICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLW1pcHMke0FCSUVYVEVOU0lPTn0ke01JUFNQS0dTRlhfQllURX0ke01JUFNQS0dTRlhfUjZ9JHtNSVBTUEtHU0ZYX0VORElBTn0ke0BbJycsICctc2YnXVtkLmdldFZhcignVEFSR0VUX0ZQVScpID09ICdzb2Z0J119LnNvLjEiCisgICAgICAgIGxkc29fYXJjaCA9ICJtaXBzJHtBQklFWFRFTlNJT059JHtNSVBTUEtHU0ZYX0JZVEV9JHtNSVBTUEtHU0ZYX1I2fSR7TUlQU1BLR1NGWF9FTkRJQU59JHtAWycnLCAnLXNmJ11bZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnc29mdCddfSIKICAgICBlbGlmIHRhcmdldGFyY2ggPT0gInBvd2VycGMiOgotICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLXBvd2VycGMke0BbJycsICctc2YnXVtkLmdldFZhcignVEFSR0VUX0ZQVScpID09ICdzb2Z0J119LnNvLjEiCisgICAgICAgIGxkc29fYXJjaCA9ICJwb3dlcnBjJHtAWycnLCAnLXNmJ11bZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnc29mdCddfSIKICAgICBlbGlmIHRhcmdldGFyY2ggPT0gInBvd2VycGM2NCI6Ci0gICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtcG93ZXJwYzY0LnNvLjEiCisgICAgICAgIGxkc29fYXJjaCA9ICJwb3dlcnBjNjQiCiAgICAgZWxpZiB0YXJnZXRhcmNoID09ICJ4ODZfNjQiOgotICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLXg4Nl82NC5zby4xIgorICAgICAgICBsZHNvX2FyY2ggPSAieDg2XzY0IgogICAgIGVsaWYgcmUuc2VhcmNoKCJpLjg2IiwgdGFyZ2V0YXJjaCk6Ci0gICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtaTM4Ni5zby4xIgorICAgICAgICBsZHNvX2FyY2ggPSAiaTM4NiIKICAgICBlbGlmIHRhcmdldGFyY2guc3RhcnRzd2l0aCgiYXJtIik6Ci0gICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtYXJtJHtBUk1QS0dTRlhfRU5ESUFOfSR7QVJNUEtHU0ZYX0VBQkl9LnNvLjEiCisgICAgICAgIGxkc29fYXJjaCA9ICJhcm0ke0FSTVBLR1NGWF9FTkRJQU59JHtBUk1QS0dTRlhfRUFCSX0iCiAgICAgZWxpZiB0YXJnZXRhcmNoLnN0YXJ0c3dpdGgoImFhcmNoNjQiKToKLSAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1hYXJjaDY0JHtBUk1QS0dTRlhfRU5ESUFOXzY0fS5zby4xIgorICAgICAgICBsZHNvX2FyY2ggPSAiYWFyY2g2NCR7QVJNUEtHU0ZYX0VORElBTl82NH0iCiAgICAgZWxpZiB0YXJnZXRhcmNoLnN0YXJ0c3dpdGgoInJpc2N2NjQiKToKLSAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1yaXNjdjY0JHtAWycnLCAnLXNmJ11bZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnc29mdCddfS5zby4xIgotICAgIHJldHVybiBkeW5hbWljX2xvYWRlcgorICAgICAgICBsZHNvX2FyY2ggPSAicmlzY3Y2NCR7QFsnJywgJy1zZiddW2QuZ2V0VmFyKCdUQVJHRVRfRlBVJykgPT0gJ3NvZnQnXX0iCisgICAgcmV0dXJuIGxkc29fYXJjaAorCitkZWYgZ2V0X211c2xfbG9hZGVyKGQpOgorICAgIGltcG9ydCByZQorICAgIHJldHVybiAiL2xpYi9sZC1tdXNsLSIgKyBnZXRfbXVzbF9sb2FkZXJfYXJjaChkKSArICIuc28uMSIKIAogZGVmIGdldF9nbGliY19sb2FkZXIoZCk6CiAgICAgaW1wb3J0IHJlCkBAIC00MSw3ICs0NSw3IEBACiAgICAgZWxpZiByZS5zZWFyY2goImkuODYiLCB0YXJnZXRhcmNoKToKICAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbGludXguc28uMiIKICAgICBlbGlmIHRhcmdldGFyY2ggPT0gImFybSI6Ci0gICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLWxpbnV4LnNvLjMiCisgICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLWxpbnV4JHtAWyctYXJtaGYnLCAnJ11bZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnc29mdCddfS5zby4zIgogICAgIGVsaWYgdGFyZ2V0YXJjaC5zdGFydHN3aXRoKCJhYXJjaDY0Iik6CiAgICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLWxpbnV4LWFhcmNoNjQke0FSTVBLR1NGWF9FTkRJQU5fNjR9LnNvLjEiCiAgICAgZWxpZiB0YXJnZXRhcmNoLnN0YXJ0c3dpdGgoInJpc2N2NjQiKToKQEAgLTYyLDQgKzY2LDUgQEAKIAogZ2V0X2xpbnV4bG9hZGVyW3ZhcmRlcHZhbHVlXSA9ICIke0BnZXRfbGludXhsb2FkZXIoZCl9IgogZ2V0X211c2xfbG9hZGVyW3ZhcmRlcHZhbHVlXSA9ICIke0BnZXRfbXVzbF9sb2FkZXIoZCl9IgorZ2V0X211c2xfbG9hZGVyX2FyY2hbdmFyZGVwdmFsdWVdID0gIiR7QGdldF9tdXNsX2xvYWRlcl9hcmNoKGQpfSIKIGdldF9nbGliY19sb2FkZXJbdmFyZGVwdmFsdWVdID0gIiR7QGdldF9nbGliY19sb2FkZXIoZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbWFucGFnZXMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL21hbnBhZ2VzLmJiY2xhc3MKaW5kZXggNTBjMjU0Ny4uMWU2Njc4MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbWFucGFnZXMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9tYW5wYWdlcy5iYmNsYXNzCkBAIC0xOCw4ICsxOCwxNSBAQAogCQlpZiB0ZXN0IC1uICIkRCI7IHRoZW4KIAkJCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3FlbXUtdXNlcm1vZGUnLCAndHJ1ZScsJ2ZhbHNlJywgZCl9OyB0aGVuCiAJCQkJc2VkICJzOlwoXHNcKS86XDEkRC86ZyIgJEQke3N5c2NvbmZkaXJ9L21hbl9kYi5jb25mIHwgJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2JpbmRpcn0vbWFuZGInKX0gLUMgLSAtdSAtcSAkRCR7bWFuZGlyfQorCQkJCWNob3duIC1SIHJvb3Q6cm9vdCAkRCR7bWFuZGlyfQogCQkJCW1rZGlyIC1wICREJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9tYW4KLQkJCQltdiAkRCR7bWFuZGlyfS9pbmRleC5kYiAkRCR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvbWFuCisJCQkJY2QgJEQke21hbmRpcn0KKwkJCQlmaW5kIC4gLW5hbWUgaW5kZXguZGIgfCB3aGlsZSByZWFkIGluZGV4OyBkbworCQkJCQlta2RpciAtcCAkRCR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvbWFuLyQoZGlybmFtZSAke2luZGV4fSkKKwkJCQkJbXYgJHtpbmRleH0gJEQke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL21hbi8ke2luZGV4fQorCQkJCQljaG93biBtYW46bWFuICREJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9tYW4vJHtpbmRleH0KKwkJCQlkb25lCisJCQkJY2QgLQogCQkJZWxzZQogCQkJCSRJTlRFUkNFUFRfRElSL3Bvc3RpbnN0X2ludGVyY2VwdCBkZWxheV90b19maXJzdF9ib290ICR7UEtHfSBtbHByZWZpeD0ke01MUFJFRklYfQogCQkJZmkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL21lc29uLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9tZXNvbi5iYmNsYXNzCmluZGV4IGVmYTYyMzQuLjA2MDM0ZTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL21lc29uLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbWVzb24uYmJjbGFzcwpAQCAtMTIsOCArMTIsOSBAQAogZGVmIG5vcHJlZml4KHZhciwgZCk6CiAgICAgcmV0dXJuIGQuZ2V0VmFyKHZhcikucmVwbGFjZShkLmdldFZhcigncHJlZml4JykgKyAnLycsICcnLCAxKQogCitNRVNPTl9CVUlMRFRZUEUgPz0gInBsYWluIgogTUVTT05PUFRTID0gIiAtLXByZWZpeCAke3ByZWZpeH0gXAotICAgICAgICAgICAgICAtLWJ1aWxkdHlwZSBwbGFpbiBcCisgICAgICAgICAgICAgIC0tYnVpbGR0eXBlICR7TUVTT05fQlVJTERUWVBFfSBcCiAgICAgICAgICAgICAgIC0tYmluZGlyICR7QG5vcHJlZml4KCdiaW5kaXInLCBkKX0gXAogICAgICAgICAgICAgICAtLXNiaW5kaXIgJHtAbm9wcmVmaXgoJ3NiaW5kaXInLCBkKX0gXAogICAgICAgICAgICAgICAtLWRhdGFkaXIgJHtAbm9wcmVmaXgoJ2RhdGFkaXInLCBkKX0gXApAQCAtMjQsNyArMjUsOCBAQAogICAgICAgICAgICAgICAtLWluZm9kaXIgJHtAbm9wcmVmaXgoJ2luZm9kaXInLCBkKX0gXAogICAgICAgICAgICAgICAtLXN5c2NvbmZkaXIgJHtzeXNjb25mZGlyfSBcCiAgICAgICAgICAgICAgIC0tbG9jYWxzdGF0ZWRpciAke2xvY2Fsc3RhdGVkaXJ9IFwKLSAgICAgICAgICAgICAgLS1zaGFyZWRzdGF0ZWRpciAke3NoYXJlZHN0YXRlZGlyfSAiCisgICAgICAgICAgICAgIC0tc2hhcmVkc3RhdGVkaXIgJHtzaGFyZWRzdGF0ZWRpcn0gXAorICAgICAgICAgICAgICAtLXdyYXAtbW9kZSBub2Rvd25sb2FkIgogCiBFWFRSQV9PRU1FU09OX2FwcGVuZCA9ICIgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSIKIApAQCAtNDMsNyArNDUsNyBAQAogICAgIGFyY2ggPSBkLmdldFZhcih2YXIpCiAgICAgaWYgYXJjaCA9PSAncG93ZXJwYyc6CiAgICAgICAgIHJldHVybiAncHBjJwotICAgIGVsaWYgYXJjaCA9PSAncG93ZXJwYzY0JzoKKyAgICBlbGlmIGFyY2ggPT0gJ3Bvd2VycGM2NCcgb3IgYXJjaCA9PSAncG93ZXJwYzY0bGUnOgogICAgICAgICByZXR1cm4gJ3BwYzY0JwogICAgIGVsaWYgYXJjaCA9PSAnYXJtZWInOgogICAgICAgICByZXR1cm4gJ2FybScKQEAgLTU1LDExICs1NywyMCBAQAogICAgICAgICByZXR1cm4gJ21pcHM2NCcKICAgICBlbGlmIHJlLm1hdGNoKHIiaVszLTZdODYiLCBhcmNoKToKICAgICAgICAgcmV0dXJuICJ4ODYiCi0gICAgZWxpZiBhcmNoID09ICJtaWNyb2JsYXplZWwiIG9yIGFyY2ggPT0gIm1pY3JvYmxhemVlYiI6CisgICAgZWxpZiBhcmNoID09ICJtaWNyb2JsYXplZWwiOgogICAgICAgICByZXR1cm4gIm1pY3JvYmxhemUiCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIGFyY2gKIAorIyBNYXAgb3VyIE9TIHZhbHVlcyB0byB3aGF0IE1lc29uIGV4cGVjdHM6CisjIGh0dHBzOi8vbWVzb25idWlsZC5jb20vUmVmZXJlbmNlLXRhYmxlcy5odG1sI29wZXJhdGluZy1zeXN0ZW0tbmFtZXMKK2RlZiBtZXNvbl9vcGVyYXRpbmdfc3lzdGVtKHZhciwgZCk6CisgICAgb3MgPSBkLmdldFZhcih2YXIpCisgICAgaWYgIm1pbmd3IiBpbiBvczoKKyAgICAgICAgcmV0dXJuICJ3aW5kb3dzIgorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBvcworCiBkZWYgbWVzb25fZW5kaWFuKHByZWZpeCwgZCk6CiAgICAgYXJjaCwgb3MgPSBkLmdldFZhcihwcmVmaXggKyAiX0FSQ0giKSwgZC5nZXRWYXIocHJlZml4ICsgIl9PUyIpCiAgICAgc2l0ZWRhdGEgPSBzaXRlaW5mb19kYXRhX2Zvcl9tYWNoaW5lKGFyY2gsIG9zLCBkKQpAQCAtODAsNyArOTEsNiBAQAogY3BwID0gJHtAbWVzb25fYXJyYXkoJ0NYWCcsIGQpfQogYXIgPSAke0BtZXNvbl9hcnJheSgnQVInLCBkKX0KIG5tID0gJHtAbWVzb25fYXJyYXkoJ05NJywgZCl9Ci1sZCA9ICR7QG1lc29uX2FycmF5KCdMRCcsIGQpfQogc3RyaXAgPSAke0BtZXNvbl9hcnJheSgnU1RSSVAnLCBkKX0KIHJlYWRlbGYgPSAke0BtZXNvbl9hcnJheSgnUkVBREVMRicsIGQpfQogcGtnY29uZmlnID0gJ3BrZy1jb25maWcnCkBAIC05NSwxMyArMTA1LDEzIEBACiBndGtkb2NfZXhlX3dyYXBwZXIgPSAnJHtCfS9ndGtkb2MtcWVtdXdyYXBwZXInCiAKIFtob3N0X21hY2hpbmVdCi1zeXN0ZW0gPSAnJHtIT1NUX09TfScKK3N5c3RlbSA9ICcke0BtZXNvbl9vcGVyYXRpbmdfc3lzdGVtKCdIT1NUX09TJywgZCl9JwogY3B1X2ZhbWlseSA9ICcke0BtZXNvbl9jcHVfZmFtaWx5KCdIT1NUX0FSQ0gnLCBkKX0nCiBjcHUgPSAnJHtIT1NUX0FSQ0h9JwogZW5kaWFuID0gJyR7QG1lc29uX2VuZGlhbignSE9TVCcsIGQpfScKIAogW3RhcmdldF9tYWNoaW5lXQotc3lzdGVtID0gJyR7VEFSR0VUX09TfScKK3N5c3RlbSA9ICcke0BtZXNvbl9vcGVyYXRpbmdfc3lzdGVtKCdUQVJHRVRfT1MnLCBkKX0nCiBjcHVfZmFtaWx5ID0gJyR7QG1lc29uX2NwdV9mYW1pbHkoJ1RBUkdFVF9BUkNIJywgZCl9JwogY3B1ID0gJyR7VEFSR0VUX0FSQ0h9JwogZW5kaWFuID0gJyR7QG1lc29uX2VuZGlhbignVEFSR0VUJywgZCl9JwpAQCAtMTExLDYgKzEyMSwxMCBAQAogQ09ORklHVVJFX0ZJTEVTID0gIm1lc29uLmJ1aWxkIgogCiBtZXNvbl9kb19jb25maWd1cmUoKSB7CisgICAgIyBNZXNvbiByZXF1aXJlcyB0aGlzIHRvIGJlICdiZmQsICdsbGQnIG9yICdnb2xkJyBmcm9tIDAuNTMgb253YXJkcworICAgICMgaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb24vY29tbWl0L2VmOWFlYjE4OGVhMmJjNzM1M2U1OTkxNmMxODkwMWNkZTkwZmEyYjMKKyAgICB1bnNldCBMRAorCiAgICAgIyBXb3JrIGFyb3VuZCAiTWVzb24gZmFpbHMgaWYgL3RtcCBpcyBtb3VudGVkIHdpdGggbm9leGVjICMyOTcyIgogICAgIG1rZGlyIC1wICIke0J9L21lc29uLXByaXZhdGUvdG1wIgogICAgIGV4cG9ydCBUTVBESVI9IiR7Qn0vbWVzb24tcHJpdmF0ZS90bXAiCkBAIC0xNDcsNiArMTYxLDE1IEBACiAgICAgZXhwb3J0IFBLR19DT05GSUc9InBrZy1jb25maWctbmF0aXZlIgogfQogCitweXRob24gbWVzb25fZG9fcWFfY29uZmlndXJlKCkgeworICAgIGltcG9ydCByZQorICAgIHdhcm5fcmUgPSByZS5jb21waWxlKHIiXldBUk5JTkc6IENyb3NzIHByb3BlcnR5ICguKykgaXMgdXNpbmcgZGVmYXVsdCB2YWx1ZSAoLispJCIsIHJlLk1VTFRJTElORSkKKyAgICBsb2cgPSBvcGVuKGQuZXhwYW5kKCIke0J9L21lc29uLWxvZ3MvbWVzb24tbG9nLnR4dCIpKS5yZWFkKCkKKyAgICBmb3IgKHByb3AsIHZhbHVlKSBpbiB3YXJuX3JlLmZpbmRhbGwobG9nKToKKyAgICAgICAgYmIud2FybigiTWVzb24gY3Jvc3MgcHJvcGVydHkgJXMgdXNlZCB3aXRob3V0IGV4cGxpY2l0IGFzc2lnbm1lbnQsIGRlZmF1bHRpbmcgdG8gJXMiICUgKHByb3AsIHZhbHVlKSkKK30KK2RvX2NvbmZpZ3VyZVtwb3N0ZnVuY3NdICs9ICJtZXNvbl9kb19xYV9jb25maWd1cmUiCisKIGRvX2NvbXBpbGVbcHJvZ3Jlc3NdID0gIm91dG9mOl5cWyhcZCspLyhcZCspXF1ccysiCiBtZXNvbl9kb19jb21waWxlKCkgewogICAgIG5pbmphIC12ICR7UEFSQUxMRUxfTUFLRX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL21pbWUteGRnLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9taW1lLXhkZy5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MmE1YjcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9taW1lLXhkZy5iYmNsYXNzCkBAIC0wLDAgKzEsNzQgQEAKKyMKKyMgVGhpcyBjbGFzcyBjcmVhdGVzIG1pbWUgPC0+IGFwcGxpY2F0aW9uIGFzc29jaWF0aW9ucyBiYXNlZCBvbiBlbnRyeSAKKyMgJ01pbWVUeXBlJyBpbiAqLmRlc2t0b3AgZmlsZXMKKyMKKworREVQRU5EUyArPSAiZGVza3RvcC1maWxlLXV0aWxzIgorUEFDS0FHRV9XUklURV9ERVBTICs9ICJkZXNrdG9wLWZpbGUtdXRpbHMtbmF0aXZlIgorREVTS1RPUERJUiA9ICIke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucyIKKworIyBUaGVyZSBhcmUgcmVjaXBlcyBvdXQgdGhlcmUgaW5zdGFsbGluZyB0aGVpciAuZGVza3RvcCBmaWxlcyBhcyBhYnNvbHV0ZQorIyBzeW1saW5rcy4gRm9yIHVzIHRoZXNlIGFyZSBkYW5nbGluZyBhbmQgY2Fubm90IGJlIGludHJvc3BlY3RlZCBmb3IgIk1pbWVUeXBlIgorIyBlYXNpbHkuIEJ5IGFkZGRpbmcgcGFja2FnZS1uYW1lcyB0byBNSU1FX1hER19QQUNLQUdFUywgcGFja2FnZXIgY2FuIGZvcmNlCisjIHByb3BlciB1cGRhdGUtZGVza3RvcC1kYXRhYmFzZSBoYW5kbGluZy4gTm90ZSB0aGF0IGFsbCBpbnRyb3NwZWN0aW9uIGlzCisjIHNraXBwZWQgZm9yIE1JTUVfWERHX1BBQ0tBR0VTIG5vdCBlbXB0eQorTUlNRV9YREdfUEFDS0FHRVMgPz0gIiIKKworbWltZV94ZGdfcG9zdGluc3QoKSB7CitpZiBbICJ4JEQiICE9ICJ4IiBdOyB0aGVuCisJJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IHVwZGF0ZV9kZXNrdG9wX2RhdGFiYXNlICR7UEtHfSBcCisJCW1scHJlZml4PSR7TUxQUkVGSVh9IFwKKwkJZGVza3RvcF9kaXI9JHtERVNLVE9QRElSfQorZWxzZQorCXVwZGF0ZS1kZXNrdG9wLWRhdGFiYXNlICREJHtERVNLVE9QRElSfQorZmkKK30KKworbWltZV94ZGdfcG9zdHJtKCkgeworaWYgWyAieCREIiAhPSAieCIgXTsgdGhlbgorCSRJTlRFUkNFUFRfRElSL3Bvc3RpbnN0X2ludGVyY2VwdCB1cGRhdGVfZGVza3RvcF9kYXRhYmFzZSAke1BLR30gXAorCQltbHByZWZpeD0ke01MUFJFRklYfSBcCisJCWRlc2t0b3BfZGlyPSR7REVTS1RPUERJUn0KK2Vsc2UKKwl1cGRhdGUtZGVza3RvcC1kYXRhYmFzZSAkRCR7REVTS1RPUERJUn0KK2ZpCit9CisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19hcHBlbmQgKCkgeworICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKQorICAgIHBrZ2Rlc3QgPSAgZC5nZXRWYXIoJ1BLR0RFU1QnKQorICAgIGRlc2t0b3BfYmFzZSA9IGQuZ2V0VmFyKCdERVNLVE9QRElSJykKKyAgICBmb3JjZWRfbWltZV94ZGdfcGtncyA9IChkLmdldFZhcignTUlNRV9YREdfUEFDS0FHRVMnKSBvciAnJykuc3BsaXQoKQorCisgICAgZm9yIHBrZyBpbiBwYWNrYWdlczoKKyAgICAgICAgZGVza3RvcHNfd2l0aF9taW1lX2ZvdW5kID0gcGtnIGluIGZvcmNlZF9taW1lX3hkZ19wa2dzCisgICAgICAgIGlmIGQuZ2V0VmFyKCdNSU1FX1hER19QQUNLQUdFUycpID09ICcnOgorICAgICAgICAgICAgZGVza3RvcF9kaXIgPSAnJXMvJXMlcycgJSAocGtnZGVzdCwgcGtnLCBkZXNrdG9wX2Jhc2UpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkZXNrdG9wX2Rpcik6CisgICAgICAgICAgICAgICAgZm9yIGRmIGluIG9zLmxpc3RkaXIoZGVza3RvcF9kaXIpOgorICAgICAgICAgICAgICAgICAgICBpZiBkZi5lbmRzd2l0aCgnLmRlc2t0b3AnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZGVza3RvcF9kaXIgKyAnLycrIGRmLCAncicpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGYucmVhZCgpLnNwbGl0KCdcbicpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ01pbWVUeXBlJyBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2t0b3BzX3dpdGhfbWltZV9mb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCdDb3VsZCBub3Qgb3BlbiAlcy4gU2V0IE1JTUVfWERHX1BBQ0tBR0VTIGluIHJlY2lwZSBvciBhZGQgbWltZS14ZGcgdG8gSU5TQU5FX1NLSVAuJyAlIGRlc2t0b3BfZGlyICsgJy8nKyBkZikKKyAgICAgICAgICAgICAgICAgICAgaWYgZGVza3RvcHNfd2l0aF9taW1lX2ZvdW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgZGVza3RvcHNfd2l0aF9taW1lX2ZvdW5kOgorICAgICAgICAgICAgYmIubm90ZSgiYWRkaW5nIG1pbWUteGRnIHBvc3RpbnN0IGFuZCBwb3N0cm0gc2NyaXB0cyB0byAlcyIgJSBwa2cpCisgICAgICAgICAgICBwb3N0aW5zdCA9IGQuZ2V0VmFyKCdwa2dfcG9zdGluc3RfJXMnICUgcGtnKQorICAgICAgICAgICAgaWYgbm90IHBvc3RpbnN0OgorICAgICAgICAgICAgICAgIHBvc3RpbnN0ID0gJyMhL2Jpbi9zaFxuJworICAgICAgICAgICAgcG9zdGluc3QgKz0gZC5nZXRWYXIoJ21pbWVfeGRnX3Bvc3RpbnN0JykKKyAgICAgICAgICAgIGQuc2V0VmFyKCdwa2dfcG9zdGluc3RfJXMnICUgcGtnLCBwb3N0aW5zdCkKKyAgICAgICAgICAgIHBvc3RybSA9IGQuZ2V0VmFyKCdwa2dfcG9zdHJtXyVzJyAlIHBrZykKKyAgICAgICAgICAgIGlmIG5vdCBwb3N0cm06CisgICAgICAgICAgICAgICAgcG9zdHJtID0gJyMhL2Jpbi9zaFxuJworICAgICAgICAgICAgcG9zdHJtICs9IGQuZ2V0VmFyKCdtaW1lX3hkZ19wb3N0cm0nKQorICAgICAgICAgICAgZC5zZXRWYXIoJ3BrZ19wb3N0cm1fJXMnICUgcGtnLCBwb3N0cm0pCisgICAgICAgICAgICBiYi5ub3RlKCJhZGRpbmcgZGVza3RvcC1maWxlLXV0aWxzIGRlcGVuZGVuY3kgdG8gJXMiICUgcGtnKQorICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBwa2csICIgIiArIGQuZ2V0VmFyKCdNTFBSRUZJWCcpKyJkZXNrdG9wLWZpbGUtdXRpbHMiKQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbWltZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbWltZS5iYmNsYXNzCmluZGV4IDZjN2I4NjguLmM5MDcyYWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL21pbWUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9taW1lLmJiY2xhc3MKQEAgLTEsNDYgKzEsNDcgQEAKLURFUEVORFMgKz0gInNoYXJlZC1taW1lLWluZm8iCisjCisjIFRoaXMgY2xhc3MgaXMgdXNlZCBieSByZWNpcGVzIGluc3RhbGxpbmcgbWltZSB0eXBlcworIworCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQlBOJywgJ3NoYXJlZC1taW1lLWluZm8nLCAnJywgJ3NoYXJlZC1taW1lLWluZm8nLCBkKX0iCiBQQUNLQUdFX1dSSVRFX0RFUFMgKz0gInNoYXJlZC1taW1lLWluZm8tbmF0aXZlIgorTUlNRURJUiA9ICIke2RhdGFkaXJ9L21pbWUiCiAKIG1pbWVfcG9zdGluc3QoKSB7Ci1pZiBbICIkMSIgPSBjb25maWd1cmUgXTsgdGhlbgotCVVQREFURU1JTUVEQj1gd2hpY2ggdXBkYXRlLW1pbWUtZGF0YWJhc2VgCi0JaWYgWyAteCAiJFVQREFURU1JTUVEQiIgXSA7IHRoZW4KLQkJZWNobyAiVXBkYXRpbmcgTUlNRSBkYXRhYmFzZS4uLiB0aGlzIG1heSB0YWtlIGEgd2hpbGUuIgotCQkkVVBEQVRFTUlNRURCICREJHtkYXRhZGlyfS9taW1lCi0JZWxzZQotCQllY2hvICJNaXNzaW5nIHVwZGF0ZS1taW1lLWRhdGFiYXNlLCB1cGRhdGUgb2YgbWltZSBkYXRhYmFzZSBmYWlsZWQhIgotCQlleGl0IDEKLQlmaQoraWYgWyAieCREIiAhPSAieCIgXTsgdGhlbgorCSRJTlRFUkNFUFRfRElSL3Bvc3RpbnN0X2ludGVyY2VwdCB1cGRhdGVfbWltZV9kYXRhYmFzZSAke1BLR30gXAorCQltbHByZWZpeD0ke01MUFJFRklYfSBcCisJCW1pbWVkaXI9JHtNSU1FRElSfQorZWxzZQorCWVjaG8gIlVwZGF0aW5nIE1JTUUgZGF0YWJhc2UuLi4gdGhpcyBtYXkgdGFrZSBhIHdoaWxlLiIKKwl1cGRhdGUtbWltZS1kYXRhYmFzZSAkRCR7TUlNRURJUn0KIGZpCiB9CiAKIG1pbWVfcG9zdHJtKCkgewotaWYgWyAiJDEiID0gcmVtb3ZlIF0gfHwgWyAiJDEiID0gdXBncmFkZSBdOyB0aGVuCi0JVVBEQVRFTUlNRURCPWB3aGljaCB1cGRhdGUtbWltZS1kYXRhYmFzZWAKLQlpZiBbIC14ICIkVVBEQVRFTUlNRURCIiBdIDsgdGhlbgotCQllY2hvICJVcGRhdGluZyBNSU1FIGRhdGFiYXNlLi4uIHRoaXMgbWF5IHRha2UgYSB3aGlsZS4iCi0JCSRVUERBVEVNSU1FREIgJEQke2RhdGFkaXJ9L21pbWUKLQllbHNlCi0JCWVjaG8gIk1pc3NpbmcgdXBkYXRlLW1pbWUtZGF0YWJhc2UsIHVwZGF0ZSBvZiBtaW1lIGRhdGFiYXNlIGZhaWxlZCEiCi0JCWV4aXQgMQotCWZpCitpZiBbICJ4JEQiICE9ICJ4IiBdOyB0aGVuCisJJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IHVwZGF0ZV9taW1lX2RhdGFiYXNlICR7UEtHfSBcCisJCW1scHJlZml4PSR7TUxQUkVGSVh9IFwKKwkJbWltZWRpcj0ke01JTUVESVJ9CitlbHNlCisJZWNobyAiVXBkYXRpbmcgTUlNRSBkYXRhYmFzZS4uLiB0aGlzIG1heSB0YWtlIGEgd2hpbGUuIgorCXVwZGF0ZS1taW1lLWRhdGFiYXNlICREJHtNSU1FRElSfQogZmkKIH0KIAogcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX2FwcGVuZCAoKSB7Ci0gICAgaW1wb3J0IHJlCiAgICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCiAgICAgcGtnZGVzdCA9ICBkLmdldFZhcignUEtHREVTVCcpCisgICAgbWltZWRpciA9IGQuZ2V0VmFyKCdNSU1FRElSJykKIAogICAgIGZvciBwa2cgaW4gcGFja2FnZXM6Ci0gICAgICAgIG1pbWVfZGlyID0gJyVzLyVzL3Vzci9zaGFyZS9taW1lL3BhY2thZ2VzJyAlIChwa2dkZXN0LCBwa2cpCi0gICAgICAgIG1pbWVzID0gW10KLSAgICAgICAgbWltZV9yZSA9IHJlLmNvbXBpbGUoIi4qXC54bWwkIikKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobWltZV9kaXIpOgotICAgICAgICAgICAgZm9yIGYgaW4gb3MubGlzdGRpcihtaW1lX2Rpcik6Ci0gICAgICAgICAgICAgICAgaWYgbWltZV9yZS5tYXRjaChmKToKLSAgICAgICAgICAgICAgICAgICAgbWltZXMuYXBwZW5kKGYpCi0gICAgICAgIGlmIG1pbWVzOgorICAgICAgICBtaW1lX3BhY2thZ2VzX2RpciA9ICclcy8lcyVzL3BhY2thZ2VzJyAlIChwa2dkZXN0LCBwa2csIG1pbWVkaXIpCisgICAgICAgIG1pbWVzX3R5cGVzX2ZvdW5kID0gRmFsc2UKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobWltZV9wYWNrYWdlc19kaXIpOgorICAgICAgICAgICAgZm9yIGYgaW4gb3MubGlzdGRpcihtaW1lX3BhY2thZ2VzX2Rpcik6CisgICAgICAgICAgICAgICAgaWYgZi5lbmRzd2l0aCgnLnhtbCcpOgorICAgICAgICAgICAgICAgICAgICBtaW1lc190eXBlc19mb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgbWltZXNfdHlwZXNfZm91bmQ6CiAgICAgICAgICAgICBiYi5ub3RlKCJhZGRpbmcgbWltZSBwb3N0aW5zdCBhbmQgcG9zdHJtIHNjcmlwdHMgdG8gJXMiICUgcGtnKQogICAgICAgICAgICAgcG9zdGluc3QgPSBkLmdldFZhcigncGtnX3Bvc3RpbnN0XyVzJyAlIHBrZykKICAgICAgICAgICAgIGlmIG5vdCBwb3N0aW5zdDoKQEAgLTUyLDYgKzUzLDcgQEAKICAgICAgICAgICAgICAgICBwb3N0cm0gPSAnIyEvYmluL3NoXG4nCiAgICAgICAgICAgICBwb3N0cm0gKz0gZC5nZXRWYXIoJ21pbWVfcG9zdHJtJykKICAgICAgICAgICAgIGQuc2V0VmFyKCdwa2dfcG9zdHJtXyVzJyAlIHBrZywgcG9zdHJtKQotICAgICAgICAgICAgYmIubm90ZSgiYWRkaW5nIHNoYXJlZC1taW1lLWluZm8tZGF0YSBkZXBlbmRlbmN5IHRvICVzIiAlIHBrZykKLSAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcGtnLCAiICIgKyBkLmdldFZhcignTUxQUkVGSVgnKSsic2hhcmVkLW1pbWUtaW5mby1kYXRhIikKKyAgICAgICAgICAgIGlmIHBrZyAhPSAnc2hhcmVkLW1pbWUtaW5mby1kYXRhJzoKKyAgICAgICAgICAgICAgICBiYi5ub3RlKCJhZGRpbmcgc2hhcmVkLW1pbWUtaW5mby1kYXRhIGRlcGVuZGVuY3kgdG8gJXMiICUgcGtnKQorICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcGtnLCAiICIgKyBkLmdldFZhcignTUxQUkVGSVgnKSsic2hhcmVkLW1pbWUtaW5mby1kYXRhIikKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL211bHRpbGliLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYi5iYmNsYXNzCmluZGV4IDFhOTI5NWQuLmVlNjc3ZGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL211bHRpbGliLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWIuYmJjbGFzcwpAQCAtMTg0LDExICsxODQsMTIgQEAKICAgICAgICAgZm9yIGkgaW4gdmFsdWVzOgogICAgICAgICAgICAgaWYgaS5zdGFydHN3aXRoKCd2aXJ0dWFsLycpOgogICAgICAgICAgICAgICAgIGkgPSBpW2xlbigndmlydHVhbC8nKTpdCi0gICAgICAgICAgICBpZiAobm90IGkuc3RhcnRzd2l0aCgna2VybmVsLW1vZHVsZScpKSBhbmQgKG5vdCBpLnN0YXJ0c3dpdGgobWxwcmVmaXgpKSBhbmQgXAotICAgICAgICAgICAgICAgIChub3QgJ2Nyb3NzLWNhbmFkaWFuJyBpbiBpKSBhbmQgKG5vdCBpLnN0YXJ0c3dpdGgoIm5hdGl2ZXNkay0iKSkgYW5kIFwKLSAgICAgICAgICAgICAgICAobm90IGkuc3RhcnRzd2l0aCgicnRsZCIpKSBhbmQgKG5vdCBpLnN0YXJ0c3dpdGgoJ2tlcm5lbC12bWxpbnV4JykpIFwKLSAgICAgICAgICAgICAgICBhbmQgKG5vdCBpLnN0YXJ0c3dpdGgoImtlcm5lbC1pbWFnZSIpKSBhbmQgKG5vdCBpLnN0YXJ0c3dpdGgoIi8iKSk6CisKKyAgICAgICAgICAgIGlmIChub3QgKGkuc3RhcnRzd2l0aChtbHByZWZpeCkgb3IgaS5zdGFydHN3aXRoKCJrZXJuZWwtIikgXAorICAgICAgICAgICAgICAgICAgICBvciAoJ2Nyb3NzLWNhbmFkaWFuJyBpbiBpKSBvciBpLnN0YXJ0c3dpdGgoIm5hdGl2ZXNkay0iKSBcCisgICAgICAgICAgICAgICAgICAgIG9yIGkuc3RhcnRzd2l0aCgicnRsZCIpIG9yIGkuc3RhcnRzd2l0aCgiLyIpKSk6CiAgICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5hcHBlbmQoaSkKKwogICAgICAgICBpZiBsZW4oY2FuZGlkYXRlcykgPiAwOgogICAgICAgICAgICAgbXNnID0gIiVzIHBhY2thZ2UgJXMgLSBzdXNwaWNpb3VzIHZhbHVlcyAnJXMnIGluICVzIiBcCiAgICAgICAgICAgICAgICAgICAgJSAoZC5nZXRWYXIoJ1BOJyksIHBrZywgJyAnLmpvaW4oY2FuZGlkYXRlcyksIHZhcikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL25hdGl2ZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MKaW5kZXggZDViNmY2YS4uMDgxMDZlMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MKQEAgLTE4NiwxMSArMTg2LDExIEBACiAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCJleHRlbmRfcmVjaXBlX3N5c3Jvb3QiLCBkKQogfQogYWRkdGFzayBhZGR0b19yZWNpcGVfc3lzcm9vdCBhZnRlciBkb19wb3B1bGF0ZV9zeXNyb290Citkb19hZGR0b19yZWNpcGVfc3lzcm9vdFtkZXB0YXNrXSA9ICJkb19wb3B1bGF0ZV9zeXNyb290IgogCiBpbmhlcml0IG5vcGFja2FnZXMKIAogZG9fcGFja2FnZWRhdGFbc3RhbXAtZXh0cmEtaW5mb10gPSAiIgotZG9fcG9wdWxhdGVfc3lzcm9vdFtzdGFtcC1leHRyYS1pbmZvXSA9ICIiCiAKIFVTRV9OTFMgPSAibm8iCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL25hdGl2ZXNkay5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlc2RrLmJiY2xhc3MKaW5kZXggMDMxMzVhYy4uN2I3NTcxMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlc2RrLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlc2RrLmJiY2xhc3MKQEAgLTEwNyw3ICsxMDcsNiBAQAogYWRkaGFuZGxlciBuYXRpdmVzZGtfdmlydGNsYXNzX2hhbmRsZXIKIG5hdGl2ZXNka192aXJ0Y2xhc3NfaGFuZGxlcltldmVudG1hc2tdID0gImJiLmV2ZW50LlJlY2lwZVByZUZpbmFsaXNlIgogCi1kb19wb3B1bGF0ZV9zeXNyb290W3N0YW1wLWV4dHJhLWluZm9dID0gIiIKIGRvX3BhY2thZ2VkYXRhW3N0YW1wLWV4dHJhLWluZm9dID0gIiIKIAogVVNFX05MUyA9ICIke1NES1VTRV9OTFN9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbnBtLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9ucG0uYmJjbGFzcwppbmRleCA0YjFmMGEzLi4wNjgwMzJhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9ucG0uYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9ucG0uYmJjbGFzcwpAQCAtMSw5NCArMSwzMDcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIwIFNhdm9pci1GYWlyZSBMaW51eAorIworIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisjCisjIFRoaXMgYmJjbGFzcyBidWlsZHMgYW5kIGluc3RhbGxzIGFuIG5wbSBwYWNrYWdlIHRvIHRoZSB0YXJnZXQuIFRoZSBwYWNrYWdlCisjIHNvdXJjZXMgZmlsZXMgc2hvdWxkIGJlIGZldGNoZWQgaW4gdGhlIGNhbGxpbmcgcmVjaXBlIGJ5IHVzaW5nIHRoZSBTUkNfVVJJCisjIHZhcmlhYmxlLiBUaGUgJHtTfSB2YXJpYWJsZSBzaG91bGQgYmUgdXBkYXRlZCBkZXBlbmRpbmcgb2YgeW91ciBmZXRjaGVyLgorIworIyBVc2FnZToKKyMgIFNSQ19VUkkgPSAiLi4uIgorIyAgaW5oZXJpdCBucG0KKyMKKyMgT3B0aW9uYWwgdmFyaWFibGVzOgorIyAgTlBNX0FSQ0g6CisjICAgICAgIE92ZXJyaWRlIHRoZSBhdXRvIGdlbmVyYXRlZCBucG0gYXJjaGl0ZWN0dXJlLgorIworIyAgTlBNX0lOU1RBTExfREVWOgorIyAgICAgICBTZXQgdG8gMSB0byBhbHNvIGluc3RhbGwgZGV2RGVwZW5kZW5jaWVzLgorCiBERVBFTkRTX3ByZXBlbmQgPSAibm9kZWpzLW5hdGl2ZSAiCiBSREVQRU5EU18ke1BOfV9wcmVwZW5kID0gIm5vZGVqcyAiCi1TID0gIiR7V09SS0RJUn0vbnBtcGtnIgogCi1kZWYgbm9kZV9wa2duYW1lKGQpOgotICAgIGJwbiA9IGQuZ2V0VmFyKCdCUE4nKQotICAgIGlmIGJwbi5zdGFydHN3aXRoKCJub2RlLSIpOgotICAgICAgICByZXR1cm4gYnBuWzU6XQotICAgIHJldHVybiBicG4KLQotTlBNUE4gPz0gIiR7QG5vZGVfcGtnbmFtZShkKX0iCi0KLU5QTV9JTlNUQUxMRElSID0gIiR7bGliZGlyfS9ub2RlX21vZHVsZXMvJHtOUE1QTn0iCi0KLSMgZnVuY3Rpb24gbWFwcyBhcmNoIG5hbWVzIHRvIG5wbSBhcmNoIG5hbWVzCi1kZWYgbnBtX29lX2FyY2hfbWFwKHRhcmdldF9hcmNoLCBkKToKLSAgICBpbXBvcnQgcmUKLSAgICBpZiAgIHJlLm1hdGNoKCdwKHBjfG93ZXJwYykofDY0KScsIHRhcmdldF9hcmNoKTogcmV0dXJuICdwcGMnCi0gICAgZWxpZiByZS5tYXRjaCgnaS44NiQnLCB0YXJnZXRfYXJjaCk6IHJldHVybiAnaWEzMicKLSAgICBlbGlmIHJlLm1hdGNoKCd4ODZfNjQkJywgdGFyZ2V0X2FyY2gpOiByZXR1cm4gJ3g2NCcKLSAgICBlbGlmIHJlLm1hdGNoKCdhcm02NCQnLCB0YXJnZXRfYXJjaCk6IHJldHVybiAnYXJtJwotICAgIHJldHVybiB0YXJnZXRfYXJjaAotCi1OUE1fQVJDSCA/PSAiJHtAbnBtX29lX2FyY2hfbWFwKGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpLCBkKX0iCiBOUE1fSU5TVEFMTF9ERVYgPz0gIjAiCiAKLW5wbV9kb19jb21waWxlKCkgewotCSMgQ29weSBpbiBhbnkgYWRkaXRpb25hbGx5IGZldGNoZWQgbW9kdWxlcwotCWlmIFsgLWQgJHtXT1JLRElSfS9ub2RlX21vZHVsZXMgXSA7IHRoZW4KLQkJY3AgLWEgJHtXT1JLRElSfS9ub2RlX21vZHVsZXMgJHtTfS8KLQlmaQotCSMgY2hhbmdpbmcgdGhlIGhvbWUgZGlyZWN0b3J5IHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeSwgdGhlIC5ucG1yYyB3aWxsCi0JIyBiZSBjcmVhdGVkIGluIHRoaXMgZGlyZWN0b3J5Ci0JZXhwb3J0IEhPTUU9JHtXT1JLRElSfQotCWlmIFsgICIke05QTV9JTlNUQUxMX0RFVn0iID0gIjEiIF07IHRoZW4KLQkJbnBtIGNvbmZpZyBzZXQgZGV2IHRydWUKLQllbHNlCi0JCW5wbSBjb25maWcgc2V0IGRldiBmYWxzZQotCWZpCi0JbnBtIHNldCBjYWNoZSAke1dPUktESVJ9L25wbV9jYWNoZQotCSMgY2xlYXIgY2FjaGUgYmVmb3JlIGV2ZXJ5IGJ1aWxkCi0JbnBtIGNhY2hlIGNsZWFyIC0tZm9yY2UKLQkjIEluc3RhbGwgcGtnIGludG8gJHtTfSB3aXRob3V0IGdvaW5nIHRvIHRoZSByZWdpc3RyeQotCWlmIFsgICIke05QTV9JTlNUQUxMX0RFVn0iID0gIjEiIF07IHRoZW4KLQkJbnBtIC0tYXJjaD0ke05QTV9BUkNIfSAtLXRhcmdldF9hcmNoPSR7TlBNX0FSQ0h9IC0tbm8tcmVnaXN0cnkgaW5zdGFsbAotCWVsc2UKLQkJbnBtIC0tYXJjaD0ke05QTV9BUkNIfSAtLXRhcmdldF9hcmNoPSR7TlBNX0FSQ0h9IC0tcHJvZHVjdGlvbiAtLW5vLXJlZ2lzdHJ5IGluc3RhbGwKLQlmaQorZGVmIG5wbV90YXJnZXRfYXJjaF9tYXAodGFyZ2V0X2FyY2gpOgorICAgICIiIk1hcHMgYXJjaCBuYW1lcyB0byBucG0gYXJjaCBuYW1lcyIiIgorICAgIGltcG9ydCByZQorICAgIGlmIHJlLm1hdGNoKCJwKHBjfG93ZXJwYykofDY0KSIsIHRhcmdldF9hcmNoKToKKyAgICAgICAgcmV0dXJuICJwcGMiCisgICAgZWxpZiByZS5tYXRjaCgiaS44NiQiLCB0YXJnZXRfYXJjaCk6CisgICAgICAgIHJldHVybiAiaWEzMiIKKyAgICBlbGlmIHJlLm1hdGNoKCJ4ODZfNjQkIiwgdGFyZ2V0X2FyY2gpOgorICAgICAgICByZXR1cm4gIng2NCIKKyAgICBlbGlmIHJlLm1hdGNoKCJhcm02NCQiLCB0YXJnZXRfYXJjaCk6CisgICAgICAgIHJldHVybiAiYXJtIgorICAgIHJldHVybiB0YXJnZXRfYXJjaAorCitOUE1fQVJDSCA/PSAiJHtAbnBtX3RhcmdldF9hcmNoX21hcChkLmdldFZhcigiVEFSR0VUX0FSQ0giKSl9IgorCitOUE1fUEFDS0FHRSA9ICIke1dPUktESVJ9L25wbS1wYWNrYWdlIgorTlBNX0NBQ0hFID0gIiR7V09SS0RJUn0vbnBtLWNhY2hlIgorTlBNX0JVSUxEID0gIiR7V09SS0RJUn0vbnBtLWJ1aWxkIgorCitkZWYgbnBtX2dsb2JhbF9jb25maWdzKGQpOgorICAgICIiIkdldCB0aGUgbnBtIGdsb2JhbCBjb25maWd1cmF0aW9uIiIiCisgICAgY29uZmlncyA9IFtdCisgICAgIyBFbnN1cmUgbm8gbmV0d29yayBhY2Nlc3MgaXMgZG9uZQorICAgIGNvbmZpZ3MuYXBwZW5kKCgib2ZmbGluZSIsICJ0cnVlIikpCisgICAgY29uZmlncy5hcHBlbmQoKCJwcm94eSIsICJodHRwOi8vaW52YWxpZCIpKQorICAgICMgQ29uZmlndXJlIHRoZSBjYWNoZSBkaXJlY3RvcnkKKyAgICBjb25maWdzLmFwcGVuZCgoImNhY2hlIiwgZC5nZXRWYXIoIk5QTV9DQUNIRSIpKSkKKyAgICByZXR1cm4gY29uZmlncworCitkZWYgbnBtX3BhY2soZW52LCBzcmNkaXIsIHdvcmtkaXIpOgorICAgICIiIlJ1biAnbnBtIHBhY2snIG9uIGEgc3BlY2lmaWVkIGRpcmVjdG9yeSIiIgorICAgIGltcG9ydCBzaGxleAorICAgIGNtZCA9ICJucG0gcGFjayAlcyIgJSBzaGxleC5xdW90ZShzcmNkaXIpCisgICAgY29uZmlncyA9IFsoImlnbm9yZS1zY3JpcHRzIiwgInRydWUiKV0KKyAgICB0YXJiYWxsID0gZW52LnJ1bihjbWQsIGNvbmZpZ3M9Y29uZmlncywgd29ya2Rpcj13b3JrZGlyKS5zdHJpcCgiXG4iKQorICAgIHJldHVybiBvcy5wYXRoLmpvaW4od29ya2RpciwgdGFyYmFsbCkKKworcHl0aG9uIG5wbV9kb19jb25maWd1cmUoKSB7CisgICAgIiIiCisgICAgU3RlcCBvbmU6IGNvbmZpZ3VyZSB0aGUgbnBtIGNhY2hlIGFuZCB0aGUgbWFpbiBucG0gcGFja2FnZQorCisgICAgRXZlcnkgZGVwZW5kZW5jaWVzIGhhdmUgYmVlbiBmZXRjaGVkIGFuZCBwYXRjaGVkIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5LgorICAgIFRoZXkgaGF2ZSB0byBiZSBwYWNrZWQgKHRoaXMgcmVtb3ZlIHVubmVlZGVkIGZpbGVzKSBhbmQgYWRkZWQgdG8gdGhlIG5wbQorICAgIGNhY2hlIHRvIGJlIGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgc3RlcC4KKworICAgIFRoZSBtYWluIHBhY2thZ2UgYW5kIGl0cyBhc3NvY2lhdGVkIG1hbmlmZXN0IGZpbGUgYW5kIHNocmlua3dyYXAgZmlsZSBoYXZlCisgICAgdG8gYmUgY29uZmlndXJlZCB0byB0YWtlIGludG8gYWNjb3VudCB0aGVzZSBjYWNoZWQgZGVwZW5kZW5jaWVzLgorICAgICIiIgorICAgIGltcG9ydCBiYXNlNjQKKyAgICBpbXBvcnQgY29weQorICAgIGltcG9ydCBqc29uCisgICAgaW1wb3J0IHJlCisgICAgaW1wb3J0IHNobGV4CisgICAgaW1wb3J0IHRlbXBmaWxlCisgICAgZnJvbSBiYi5mZXRjaDIubnBtIGltcG9ydCBOcG1FbnZpcm9ubWVudAorICAgIGZyb20gYmIuZmV0Y2gyLm5wbSBpbXBvcnQgbnBtX3VucGFjaworICAgIGZyb20gYmIuZmV0Y2gyLm5wbXN3IGltcG9ydCBmb3JlYWNoX2RlcGVuZGVuY2llcworICAgIGZyb20gYmIucHJvZ3Jlc3MgaW1wb3J0IE91dE9mUHJvZ3Jlc3NIYW5kbGVyCisKKyAgICBiYi51dGlscy5yZW1vdmUoZC5nZXRWYXIoIk5QTV9DQUNIRSIpLCByZWN1cnNlPVRydWUpCisgICAgYmIudXRpbHMucmVtb3ZlKGQuZ2V0VmFyKCJOUE1fUEFDS0FHRSIpLCByZWN1cnNlPVRydWUpCisKKyAgICBlbnYgPSBOcG1FbnZpcm9ubWVudChkLCBjb25maWdzPW5wbV9nbG9iYWxfY29uZmlncyhkKSkKKworICAgIGRlZiBfbnBtX2NhY2hlX2FkZCh0YXJiYWxsKToKKyAgICAgICAgIiIiUnVuICducG0gY2FjaGUgYWRkJyBmb3IgYSBzcGVjaWZpZWQgdGFyYmFsbCIiIgorICAgICAgICBjbWQgPSAibnBtIGNhY2hlIGFkZCAlcyIgJSBzaGxleC5xdW90ZSh0YXJiYWxsKQorICAgICAgICBlbnYucnVuKGNtZCkKKworICAgIGRlZiBfbnBtX2ludGVncml0eSh0YXJiYWxsKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBucG0gaW50ZWdyaXR5IG9mIGEgc3BlY2lmaWVkIHRhcmJhbGwiIiIKKyAgICAgICAgc2hhNTEyID0gYmIudXRpbHMuc2hhNTEyX2ZpbGUodGFyYmFsbCkKKyAgICAgICAgcmV0dXJuICJzaGE1MTItIiArIGJhc2U2NC5iNjRlbmNvZGUoYnl0ZXMuZnJvbWhleChzaGE1MTIpKS5kZWNvZGUoKQorCisgICAgZGVmIF9ucG1fdmVyc2lvbih0YXJiYWxsKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSB2ZXJzaW9uIG9mIGEgc3BlY2lmaWVkIHRhcmJhbGwiIiIKKyAgICAgICAgcmVnZXggPSByIi0oXGQrXC5cZCtcLlxkKygtLiopPyhcKy4qKT8pXC50Z3oiCisgICAgICAgIHJldHVybiByZS5zZWFyY2gocmVnZXgsIHRhcmJhbGwpLmdyb3VwKDEpCisKKyAgICBkZWYgX25wbXN3X2RlcGVuZGVuY3lfZGljdChvcmlnLCBkZXB0cmVlKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUgc3ViIGRpY3Rpb25hcnkgaW4gdGhlICdvcmlnJyBkaWN0aW9uYXJ5IGNvcnJlc3BvbmRpbmcgdG8gdGhlCisgICAgICAgICdkZXB0cmVlJyBkZXBlbmRlbmN5IHRyZWUuIFRoaXMgZnVuY3Rpb24gZm9sbG93cyB0aGUgc2hyaW5rd3JhcCBmaWxlCisgICAgICAgIGZvcm1hdC4KKyAgICAgICAgIiIiCisgICAgICAgIHB0ciA9IG9yaWcKKyAgICAgICAgZm9yIGRlcCBpbiBkZXB0cmVlOgorICAgICAgICAgICAgaWYgImRlcGVuZGVuY2llcyIgbm90IGluIHB0cjoKKyAgICAgICAgICAgICAgICBwdHJbImRlcGVuZGVuY2llcyJdID0ge30KKyAgICAgICAgICAgIHB0ciA9IHB0clsiZGVwZW5kZW5jaWVzIl0KKyAgICAgICAgICAgIGlmIGRlcCBub3QgaW4gcHRyOgorICAgICAgICAgICAgICAgIHB0cltkZXBdID0ge30KKyAgICAgICAgICAgIHB0ciA9IHB0cltkZXBdCisgICAgICAgIHJldHVybiBwdHIKKworICAgICMgTWFuYWdlIHRoZSBtYW5pZmVzdCBmaWxlIGFuZCBzaHJpbmt3cmFwIGZpbGVzCisgICAgb3JpZ19tYW5pZmVzdF9maWxlID0gZC5leHBhbmQoIiR7U30vcGFja2FnZS5qc29uIikKKyAgICBvcmlnX3Nocmlua3dyYXBfZmlsZSA9IGQuZXhwYW5kKCIke1N9L25wbS1zaHJpbmt3cmFwLmpzb24iKQorICAgIGNhY2hlZF9tYW5pZmVzdF9maWxlID0gZC5leHBhbmQoIiR7TlBNX1BBQ0tBR0V9L3BhY2thZ2UuanNvbiIpCisgICAgY2FjaGVkX3Nocmlua3dyYXBfZmlsZSA9IGQuZXhwYW5kKCIke05QTV9QQUNLQUdFfS9ucG0tc2hyaW5rd3JhcC5qc29uIikKKworICAgIHdpdGggb3BlbihvcmlnX21hbmlmZXN0X2ZpbGUsICJyIikgYXMgZjoKKyAgICAgICAgb3JpZ19tYW5pZmVzdCA9IGpzb24ubG9hZChmKQorCisgICAgY2FjaGVkX21hbmlmZXN0ID0gY29weS5kZWVwY29weShvcmlnX21hbmlmZXN0KQorICAgIGNhY2hlZF9tYW5pZmVzdC5wb3AoImRlcGVuZGVuY2llcyIsIE5vbmUpCisgICAgY2FjaGVkX21hbmlmZXN0LnBvcCgiZGV2RGVwZW5kZW5jaWVzIiwgTm9uZSkKKworICAgIHdpdGggb3BlbihvcmlnX3Nocmlua3dyYXBfZmlsZSwgInIiKSBhcyBmOgorICAgICAgICBvcmlnX3Nocmlua3dyYXAgPSBqc29uLmxvYWQoZikKKworICAgIGNhY2hlZF9zaHJpbmt3cmFwID0gY29weS5kZWVwY29weShvcmlnX3Nocmlua3dyYXApCisgICAgY2FjaGVkX3Nocmlua3dyYXAucG9wKCJkZXBlbmRlbmNpZXMiLCBOb25lKQorCisgICAgIyBNYW5hZ2UgdGhlIGRlcGVuZGVuY2llcworICAgIHByb2dyZXNzID0gT3V0T2ZQcm9ncmVzc0hhbmRsZXIoZCwgciJeKFxkKykvKFxkKykkIikKKyAgICBwcm9ncmVzc190b3RhbCA9IDEgIyBhbHNvIGNvdW50IHRoZSBtYWluIHBhY2thZ2UKKyAgICBwcm9ncmVzc19kb25lID0gMAorCisgICAgZGVmIF9jb3VudF9kZXBlbmRlbmN5KG5hbWUsIHBhcmFtcywgZGVwdHJlZSk6CisgICAgICAgIG5vbmxvY2FsIHByb2dyZXNzX3RvdGFsCisgICAgICAgIHByb2dyZXNzX3RvdGFsICs9IDEKKworICAgIGRlZiBfY2FjaGVfZGVwZW5kZW5jeShuYW1lLCBwYXJhbXMsIGRlcHRyZWUpOgorICAgICAgICBkZXN0c3ViZGlycyA9IFtvcy5wYXRoLmpvaW4oIm5vZGVfbW9kdWxlcyIsIGRlcCkgZm9yIGRlcCBpbiBkZXB0cmVlXQorICAgICAgICBkZXN0c3VmZml4ID0gb3MucGF0aC5qb2luKCpkZXN0c3ViZGlycykKKyAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0bXBkaXI6CisgICAgICAgICAgICAjIEFkZCB0aGUgZGVwZW5kZW5jeSB0byB0aGUgbnBtIGNhY2hlCisgICAgICAgICAgICBkZXN0ZGlyID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCJTIiksIGRlc3RzdWZmaXgpCisgICAgICAgICAgICB0YXJiYWxsID0gbnBtX3BhY2soZW52LCBkZXN0ZGlyLCB0bXBkaXIpCisgICAgICAgICAgICBfbnBtX2NhY2hlX2FkZCh0YXJiYWxsKQorICAgICAgICAgICAgIyBBZGQgaXRzIHNpZ25hdHVyZSB0byB0aGUgY2FjaGVkIHNocmlua3dyYXAKKyAgICAgICAgICAgIGRlcCA9IF9ucG1zd19kZXBlbmRlbmN5X2RpY3QoY2FjaGVkX3Nocmlua3dyYXAsIGRlcHRyZWUpCisgICAgICAgICAgICBkZXBbInZlcnNpb24iXSA9IF9ucG1fdmVyc2lvbih0YXJiYWxsKQorICAgICAgICAgICAgZGVwWyJpbnRlZ3JpdHkiXSA9IF9ucG1faW50ZWdyaXR5KHRhcmJhbGwpCisgICAgICAgICAgICBpZiBwYXJhbXMuZ2V0KCJkZXYiLCBGYWxzZSk6CisgICAgICAgICAgICAgICAgZGVwWyJkZXYiXSA9IFRydWUKKyAgICAgICAgICAgICMgRGlzcGxheSBwcm9ncmVzcworICAgICAgICAgICAgbm9ubG9jYWwgcHJvZ3Jlc3NfZG9uZQorICAgICAgICAgICAgcHJvZ3Jlc3NfZG9uZSArPSAxCisgICAgICAgICAgICBwcm9ncmVzcy53cml0ZSgiJWQvJWQiICUgKHByb2dyZXNzX2RvbmUsIHByb2dyZXNzX3RvdGFsKSkKKworICAgIGRldiA9IGJiLnV0aWxzLnRvX2Jvb2xlYW4oZC5nZXRWYXIoIk5QTV9JTlNUQUxMX0RFViIpLCBGYWxzZSkKKyAgICBmb3JlYWNoX2RlcGVuZGVuY2llcyhvcmlnX3Nocmlua3dyYXAsIF9jb3VudF9kZXBlbmRlbmN5LCBkZXYpCisgICAgZm9yZWFjaF9kZXBlbmRlbmNpZXMob3JpZ19zaHJpbmt3cmFwLCBfY2FjaGVfZGVwZW5kZW5jeSwgZGV2KQorCisgICAgIyBDb25maWd1cmUgdGhlIG1haW4gcGFja2FnZQorICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdG1wZGlyOgorICAgICAgICB0YXJiYWxsID0gbnBtX3BhY2soZW52LCBkLmdldFZhcigiUyIpLCB0bXBkaXIpCisgICAgICAgIG5wbV91bnBhY2sodGFyYmFsbCwgZC5nZXRWYXIoIk5QTV9QQUNLQUdFIiksIGQpCisKKyAgICAjIENvbmZpZ3VyZSB0aGUgY2FjaGVkIG1hbmlmZXN0IGZpbGUgYW5kIGNhY2hlZCBzaHJpbmt3cmFwIGZpbGUKKyAgICBkZWYgX3VwZGF0ZV9tYW5pZmVzdChkZXBrZXkpOgorICAgICAgICBmb3IgbmFtZSBpbiBvcmlnX21hbmlmZXN0LmdldChkZXBrZXksIHt9KToKKyAgICAgICAgICAgIHZlcnNpb24gPSBjYWNoZWRfc2hyaW5rd3JhcFsiZGVwZW5kZW5jaWVzIl1bbmFtZV1bInZlcnNpb24iXQorICAgICAgICAgICAgaWYgZGVwa2V5IG5vdCBpbiBjYWNoZWRfbWFuaWZlc3Q6CisgICAgICAgICAgICAgICAgY2FjaGVkX21hbmlmZXN0W2RlcGtleV0gPSB7fQorICAgICAgICAgICAgY2FjaGVkX21hbmlmZXN0W2RlcGtleV1bbmFtZV0gPSB2ZXJzaW9uCisKKyAgICBfdXBkYXRlX21hbmlmZXN0KCJkZXBlbmRlbmNpZXMiKQorCisgICAgaWYgZGV2OgorICAgICAgICBfdXBkYXRlX21hbmlmZXN0KCJkZXZEZXBlbmRlbmNpZXMiKQorCisgICAgd2l0aCBvcGVuKGNhY2hlZF9tYW5pZmVzdF9maWxlLCAidyIpIGFzIGY6CisgICAgICAgIGpzb24uZHVtcChjYWNoZWRfbWFuaWZlc3QsIGYsIGluZGVudD0yKQorCisgICAgd2l0aCBvcGVuKGNhY2hlZF9zaHJpbmt3cmFwX2ZpbGUsICJ3IikgYXMgZjoKKyAgICAgICAganNvbi5kdW1wKGNhY2hlZF9zaHJpbmt3cmFwLCBmLCBpbmRlbnQ9MikKK30KKworcHl0aG9uIG5wbV9kb19jb21waWxlKCkgeworICAgICIiIgorICAgIFN0ZXAgdHdvOiBpbnN0YWxsIHRoZSBucG0gcGFja2FnZQorCisgICAgVXNlIHRoZSBjb25maWd1cmVkIG1haW4gcGFja2FnZSBhbmQgdGhlIGNhY2hlZCBkZXBlbmRlbmNpZXMgdG8gcnVuIHRoZQorICAgIGluc3RhbGxhdGlvbiBwcm9jZXNzLiBUaGUgaW5zdGFsbGF0aW9uIGlzIGRvbmUgaW4gYSBkaXJlY3Rvcnkgd2hpY2ggaXMKKyAgICBub3QgdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSB5ZXQuCisKKyAgICBBIGNvbWJpbmF0aW9uIG9mICducG0gcGFjaycgYW5kICducG0gaW5zdGFsbCcgaXMgdXNlZCB0byBlbnN1cmUgdGhhdCB0aGUKKyAgICBpbnN0YWxsZWQgZmlsZXMgYXJlIGFjdHVhbCBjb3BpZXMgaW5zdGVhZCBvZiBzeW1ib2xpYyBsaW5rcyAod2hpY2ggaXMgdGhlCisgICAgZGVmYXVsdCBucG0gYmVoYXZpb3IpLgorICAgICIiIgorICAgIGltcG9ydCBzaGxleAorICAgIGltcG9ydCB0ZW1wZmlsZQorICAgIGZyb20gYmIuZmV0Y2gyLm5wbSBpbXBvcnQgTnBtRW52aXJvbm1lbnQKKworICAgIGJiLnV0aWxzLnJlbW92ZShkLmdldFZhcigiTlBNX0JVSUxEIiksIHJlY3Vyc2U9VHJ1ZSkKKworICAgIGVudiA9IE5wbUVudmlyb25tZW50KGQsIGNvbmZpZ3M9bnBtX2dsb2JhbF9jb25maWdzKGQpKQorCisgICAgZGV2ID0gYmIudXRpbHMudG9fYm9vbGVhbihkLmdldFZhcigiTlBNX0lOU1RBTExfREVWIiksIEZhbHNlKQorCisgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0bXBkaXI6CisgICAgICAgIGFyZ3MgPSBbXQorICAgICAgICBjb25maWdzID0gW10KKworICAgICAgICBpZiBkZXY6CisgICAgICAgICAgICBjb25maWdzLmFwcGVuZCgoImFsc28iLCAiZGV2ZWxvcG1lbnQiKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgib25seSIsICJwcm9kdWN0aW9uIikpCisKKyAgICAgICAgIyBSZXBvcnQgYXMgbWFueSBsb2dzIGFzIHBvc3NpYmxlIGZvciBkZWJ1Z2dpbmcgcHVycG9zZQorICAgICAgICBjb25maWdzLmFwcGVuZCgoImxvZ2xldmVsIiwgInNpbGx5IikpCisKKyAgICAgICAgIyBDb25maWd1cmUgdGhlIGluc3RhbGxhdGlvbiB0byBiZSBkb25lIGdsb2JhbGx5IGluIHRoZSBidWlsZCBkaXJlY3RvcnkKKyAgICAgICAgY29uZmlncy5hcHBlbmQoKCJnbG9iYWwiLCAidHJ1ZSIpKQorICAgICAgICBjb25maWdzLmFwcGVuZCgoInByZWZpeCIsIGQuZ2V0VmFyKCJOUE1fQlVJTEQiKSkpCisKKyAgICAgICAgIyBBZGQgbm9kZS1neXAgY29uZmlndXJhdGlvbgorICAgICAgICBjb25maWdzLmFwcGVuZCgoImFyY2giLCBkLmdldFZhcigiTlBNX0FSQ0giKSkpCisgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgicmVsZWFzZSIsICJ0cnVlIikpCisgICAgICAgIHN5c3Jvb3QgPSBkLmdldFZhcigiUkVDSVBFX1NZU1JPT1RfTkFUSVZFIikKKyAgICAgICAgbm9kZWRpciA9IG9zLnBhdGguam9pbihzeXNyb290LCBkLmdldFZhcigicHJlZml4X25hdGl2ZSIpLnN0cmlwKCIvIikpCisgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgibm9kZWRpciIsIG5vZGVkaXIpKQorICAgICAgICBiaW5kaXIgPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgZC5nZXRWYXIoImJpbmRpcl9uYXRpdmUiKS5zdHJpcCgiLyIpKQorICAgICAgICBweXRob25kaXIgPSBvcy5wYXRoLmpvaW4oYmluZGlyLCAicHl0aG9uLW5hdGl2ZSIsICJweXRob24iKQorICAgICAgICBjb25maWdzLmFwcGVuZCgoInB5dGhvbiIsIHB5dGhvbmRpcikpCisKKyAgICAgICAgIyBBZGQgbm9kZS1wcmUtZ3lwIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgYXJncy5hcHBlbmQoKCJ0YXJnZXRfYXJjaCIsIGQuZ2V0VmFyKCJOUE1fQVJDSCIpKSkKKyAgICAgICAgYXJncy5hcHBlbmQoKCJidWlsZC1mcm9tLXNvdXJjZSIsICJ0cnVlIikpCisKKyAgICAgICAgIyBQYWNrIGFuZCBpbnN0YWxsIHRoZSBtYWluIHBhY2thZ2UKKyAgICAgICAgdGFyYmFsbCA9IG5wbV9wYWNrKGVudiwgZC5nZXRWYXIoIk5QTV9QQUNLQUdFIiksIHRtcGRpcikKKyAgICAgICAgZW52LnJ1bigibnBtIGluc3RhbGwgJXMiICUgc2hsZXgucXVvdGUodGFyYmFsbCksIGFyZ3M9YXJncywgY29uZmlncz1jb25maWdzKQogfQogCiBucG1fZG9faW5zdGFsbCgpIHsKLQkjIGNoYW5naW5nIHRoZSBob21lIGRpcmVjdG9yeSB0byB0aGUgd29ya2luZyBkaXJlY3RvcnksIHRoZSAubnBtcmMgd2lsbAotCSMgYmUgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeQotCWV4cG9ydCBIT01FPSR7V09SS0RJUn0KLQlta2RpciAtcCAke0R9JHtsaWJkaXJ9L25vZGVfbW9kdWxlcwotCWxvY2FsIE5QTV9QQUNLRklMRT0kKG5wbSBwYWNrIC4pCi0JbnBtIGluc3RhbGwgLS1wcmVmaXggJHtEfSR7cHJlZml4fSAtZyAtLWFyY2g9JHtOUE1fQVJDSH0gLS10YXJnZXRfYXJjaD0ke05QTV9BUkNIfSAtLXByb2R1Y3Rpb24gLS1uby1yZWdpc3RyeSAke05QTV9QQUNLRklMRX0KLQlsbiAtZnMgbm9kZV9tb2R1bGVzICR7RH0ke2xpYmRpcn0vbm9kZQotCWZpbmQgJHtEfSR7TlBNX0lOU1RBTExESVJ9IC10eXBlIGYgXCggLW5hbWUgIiouYSIgLW8gLW5hbWUgIiouZCIgLW8gLW5hbWUgIioubyIgXCkgLWRlbGV0ZQotCWlmIFsgLWQgJHtEfSR7cHJlZml4fS9ldGMgXSA7IHRoZW4KLQkJIyBUaGlzIHdpbGwgYmUgZW1wdHkKLQkJcm1kaXIgJHtEfSR7cHJlZml4fS9ldGMKLQlmaQotfQorICAgICMgU3RlcCB0aHJlZTogZmluYWwgaW5zdGFsbAorICAgICMKKyAgICAjIFRoZSBwcmV2aW91cyBpbnN0YWxsYXRpb24gaGF2ZSB0byBiZSBmaWx0ZXJlZCB0byByZW1vdmUgc29tZSBleHRyYSBmaWxlcy4KIAotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGluc3RkaXIgPSBkLmV4cGFuZCgnJHtEfSR7TlBNX0lOU1RBTExESVJ9JykKLSAgICBleHRyYXBhY2thZ2VzID0gb2UucGFja2FnZS5ucG1fc3BsaXRfcGFja2FnZV9kaXJzKGluc3RkaXIpCi0gICAgcGtnbmFtZXMgPSBleHRyYXBhY2thZ2VzLmtleXMoKQotICAgIGQucHJlcGVuZFZhcignUEFDS0FHRVMnLCAnJXMgJyAlICcgJy5qb2luKHBrZ25hbWVzKSkKLSAgICBmb3IgcGtnbmFtZSBpbiBwa2duYW1lczoKLSAgICAgICAgcGtncmVscGF0aCwgcGRhdGEgPSBleHRyYXBhY2thZ2VzW3BrZ25hbWVdCi0gICAgICAgIHBrZ3BhdGggPSAnJHtOUE1fSU5TVEFMTERJUn0vJyArIHBrZ3JlbHBhdGgKLSAgICAgICAgIyBwYWNrYWdlIG5hbWVzIGNhbid0IGhhdmUgdW5kZXJzY29yZXMgYnV0IG5wbSBwYWNrYWdlcyBzb21ldGltZXMgdXNlIHRoZW0KLSAgICAgICAgb2VfcGtnX25hbWUgPSBwa2duYW1lLnJlcGxhY2UoJ18nLCAnLScpCi0gICAgICAgIGV4cGFuZGVkX3BrZ25hbWUgPSBkLmV4cGFuZChvZV9wa2dfbmFtZSkKLSAgICAgICAgZC5zZXRWYXIoJ0ZJTEVTXyVzJyAlIGV4cGFuZGVkX3BrZ25hbWUsIHBrZ3BhdGgpCi0gICAgICAgIGlmIHBkYXRhOgotICAgICAgICAgICAgdmVyc2lvbiA9IHBkYXRhLmdldCgndmVyc2lvbicsIE5vbmUpCi0gICAgICAgICAgICBpZiB2ZXJzaW9uOgotICAgICAgICAgICAgICAgIGQuc2V0VmFyKCdQS0dWXyVzJyAlIGV4cGFuZGVkX3BrZ25hbWUsIHZlcnNpb24pCi0gICAgICAgICAgICBkZXNjcmlwdGlvbiA9IHBkYXRhLmdldCgnZGVzY3JpcHRpb24nLCBOb25lKQotICAgICAgICAgICAgaWYgZGVzY3JpcHRpb246Ci0gICAgICAgICAgICAgICAgZC5zZXRWYXIoJ1NVTU1BUllfJXMnICUgZXhwYW5kZWRfcGtnbmFtZSwgZGVzY3JpcHRpb24ucmVwbGFjZSh1Ilx1MjAxOCIsICInIikucmVwbGFjZSh1Ilx1MjAxOSIsICInIikpCi0gICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXyVzJyAlIGQuZ2V0VmFyKCdQTicpLCAnICVzJyAlICcgJy5qb2luKHBrZ25hbWVzKS5yZXBsYWNlKCdfJywgJy0nKSkKKyAgICBybSAtcmYgJHtEfQorCisgICAgIyBDb3B5IHRoZSBlbnRpcmUgbGliIGFuZCBiaW4gZGlyZWN0b3JpZXMKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtub25hcmNoX2xpYmRpcn0KKyAgICBjcCAtLW5vLXByZXNlcnZlPW93bmVyc2hpcCAtLXJlY3Vyc2l2ZSAke05QTV9CVUlMRH0vbGliLy4gJHtEfS8ke25vbmFyY2hfbGliZGlyfQorCisgICAgaWYgWyAtZCAiJHtOUE1fQlVJTER9L2JpbiIgXQorICAgIHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQorICAgICAgICBjcCAtLW5vLXByZXNlcnZlPW93bmVyc2hpcCAtLXJlY3Vyc2l2ZSAke05QTV9CVUlMRH0vYmluLy4gJHtEfS8ke2JpbmRpcn0KKyAgICBmaQorCisgICAgIyBJZiB0aGUgcGFja2FnZSAob3IgaXRzIGRlcGVuZGVuY2llcykgdXNlcyBub2RlLWd5cCB0byBidWlsZCBuYXRpdmUgYWRkb25zLAorICAgICMgb2JqZWN0IGZpbGVzLCBzdGF0aWMgbGlicmFyaWVzIG9yIG90aGVyIHRlbXBvcmFyeSBmaWxlcyBjYW4gYmUgaGlkZGVuIGluCisgICAgIyB0aGUgbGliIGRpcmVjdG9yeS4gVG8gcmVkdWNlIHRoZSBwYWNrYWdlIHNpemUgYW5kIHRvIGF2b2lkIFFBIGlzc3VlcworICAgICMgKHN0YXRpY2RldiB3aXRoIHN0YXRpYyBsaWJyYXJ5IGZpbGVzKSB0aGVzZSBmaWxlcyBtdXN0IGJlIHJlbW92ZWQuCisgICAgbG9jYWwgR1lQX1JFR0VYPSIuKi9idWlsZC9SZWxlYXNlL1teL10qLm5vZGUiCisKKyAgICAjIFJlbW92ZSBhbnkgbm9kZS1neXAgZGlyZWN0b3J5IGluICR7RH0gdG8gcmVtb3ZlIHRlbXBvcmFyeSBidWlsZCBmaWxlcworICAgIGZvciBHWVBfRF9GSUxFIGluICQoZmluZCAke0R9IC1yZWdleCAiJHtHWVBfUkVHRVh9IikKKyAgICBkbworICAgICAgICBsb2NhbCBHWVBfRF9ESVI9JHtHWVBfRF9GSUxFJS9SZWxlYXNlLyp9CisKKyAgICAgICAgcm0gLS1yZWN1cnNpdmUgLS1mb3JjZSAke0dZUF9EX0RJUn0KKyAgICBkb25lCisKKyAgICAjIENvcHkgb25seSB0aGUgbm9kZS1neXAgcmVsZWFzZSBmaWxlcworICAgIGZvciBHWVBfQl9GSUxFIGluICQoZmluZCAke05QTV9CVUlMRH0gLXJlZ2V4ICIke0dZUF9SRUdFWH0iKQorICAgIGRvCisgICAgICAgIGxvY2FsIEdZUF9EX0ZJTEU9JHtEfS8ke3ByZWZpeH0vJHtHWVBfQl9GSUxFIyR7TlBNX0JVSUxEfX0KKworICAgICAgICBpbnN0YWxsIC1kICR7R1lQX0RfRklMRSUvKn0KKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgJHtHWVBfQl9GSUxFfSAke0dZUF9EX0ZJTEV9CisgICAgZG9uZQorCisgICAgIyBSZW1vdmUgdGhlIHNocmlua3dyYXAgZmlsZSB3aGljaCBkb2VzIG5vdCBuZWVkIHRvIGJlIHBhY2tlZAorICAgIHJtIC1mICR7RH0vJHtub25hcmNoX2xpYmRpcn0vbm9kZV9tb2R1bGVzLyovbnBtLXNocmlua3dyYXAuanNvbgorICAgIHJtIC1mICR7RH0vJHtub25hcmNoX2xpYmRpcn0vbm9kZV9tb2R1bGVzL0AqLyovbnBtLXNocmlua3dyYXAuanNvbgorCisgICAgIyBub2RlKDEpIGlzIHVzaW5nIC91c3IvbGliL25vZGUgYXMgZGVmYXVsdCBpbmNsdWRlIGRpcmVjdG9yeSBhbmQgbnBtKDEpIGlzCisgICAgIyB1c2luZyAvdXNyL2xpYi9ub2RlX21vZHVsZXMgYXMgaW5zdGFsbCBkaXJlY3RvcnkuIExldCdzIG1ha2UgYm90aCBoYXBweS4KKyAgICBsbiAtZnMgbm9kZV9tb2R1bGVzICR7RH0vJHtub25hcmNoX2xpYmRpcn0vbm9kZQogfQogCiBGSUxFU18ke1BOfSArPSAiIFwKICAgICAke2JpbmRpcn0gXAotICAgICR7bGliZGlyfS9ub2RlIFwKLSAgICAke05QTV9JTlNUQUxMRElSfSBcCisgICAgJHtub25hcmNoX2xpYmRpcn0gXAogIgogCi1FWFBPUlRfRlVOQ1RJT05TIGRvX2NvbXBpbGUgZG9faW5zdGFsbAorRVhQT1JUX0ZVTkNUSU9OUyBkb19jb25maWd1cmUgZG9fY29tcGlsZSBkb19pbnN0YWxsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MKaW5kZXggZTBkNmZmNi4uMGI1Y2Y0NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2UuYmJjbGFzcwpAQCAtMjQ1LDYgKzI0NSw4IEBACiAgICAgICAgIGRlcHMgPSAiIgogICAgICAgICBmb3IgZGVwIGluIChkLmdldFZhcignUEFDS0FHRV9ERVBFTkRTJykgb3IgIiIpLnNwbGl0KCk6CiAgICAgICAgICAgICBkZXBzICs9ICIgJXM6ZG9fcG9wdWxhdGVfc3lzcm9vdCIgJSBkZXAKKyAgICAgICAgaWYgZC5nZXRWYXIoJ1BBQ0tBR0VfTUlOSURFQlVHSU5GTycpID09ICcxJzoKKyAgICAgICAgICAgIGRlcHMgKz0gJyB4ei1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcKICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19wYWNrYWdlJywgJ2RlcGVuZHMnLCBkZXBzKQogCiAgICAgICAgICMgc2hsaWJzIHJlcXVpcmVzIGFueSBERVBFTkRTIHRvIGhhdmUgYWxyZWFkeSBwYWNrYWdlZCBmb3IgdGhlICoubGlzdCBmaWxlcwpAQCAtNDE2LDYgKzQxOCwxMjYgQEAKIAogICAgIHJldHVybiAoZmlsZSwgc291cmNlcykKIAorZGVmIHNwbGl0c3RhdGljZGVidWdpbmZvKGZpbGUsIGR2YXIsIGRlYnVnc3RhdGljZGlyLCBkZWJ1Z3N0YXRpY2xpYmRpciwgZGVidWdzdGF0aWNhcHBlbmQsIGRlYnVnc3JjZGlyLCBkKToKKyAgICAjIFVubGlrZSB0aGUgZnVuY3Rpb24gYWJvdmUsIHRoZXJlIGlzIG5vIHdheSB0byBzcGxpdCBhIHN0YXRpYyBsaWJyYXJ5CisgICAgIyB0d28gY29tcG9uZW50cy4gIFNvIHRvIGdldCBzaW1pbGFyIHJlc3VsdHMgd2Ugd2lsbCBjb3B5IHRoZSB1bm1vZGlmaWVkCisgICAgIyBzdGF0aWMgbGlicmFyeSAoY29udGFpbmluZyB0aGUgZGVidWcgc3ltYm9scykgaW50byBhIG5ldyBkaXJlY3RvcnkuCisgICAgIyBXZSB3aWxsIHRoZW4gc3RyaXAgKHByZXNlcnZpbmcgc3ltYm9scykgdGhlIHN0YXRpYyBsaWJyYXJ5IGluIHRoZQorICAgICMgdHlwaWNhbCBsb2NhdGlvbi4KKyAgICAjCisgICAgIyByZXR1cm4gYSBtYXBwaW5nIG9mIGZpbGVzOmRlYnVnc291cmNlcworCisgICAgaW1wb3J0IHN0YXQKKyAgICBpbXBvcnQgc2h1dGlsCisKKyAgICBzcmMgPSBmaWxlW2xlbihkdmFyKTpdCisgICAgZGVzdCA9IGRlYnVnc3RhdGljbGliZGlyICsgb3MucGF0aC5kaXJuYW1lKHNyYykgKyBkZWJ1Z3N0YXRpY2RpciArICIvIiArIG9zLnBhdGguYmFzZW5hbWUoc3JjKSArIGRlYnVnc3RhdGljYXBwZW5kCisgICAgZGVidWdmaWxlID0gZHZhciArIGRlc3QKKyAgICBzb3VyY2VzID0gW10KKworICAgICMgQ29weSB0aGUgZmlsZS4uLgorICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUoZGVidWdmaWxlKSkKKyAgICAjYmIubm90ZSgiQ29weSAlcyAtPiAlcyIgJSAoZmlsZSwgZGVidWdmaWxlKSkKKworICAgIGR2YXIgPSBkLmdldFZhcignUEtHRCcpCisKKyAgICBuZXdtb2RlID0gTm9uZQorICAgIGlmIG5vdCBvcy5hY2Nlc3MoZmlsZSwgb3MuV19PSykgb3Igb3MuYWNjZXNzKGZpbGUsIG9zLlJfT0spOgorICAgICAgICBvcmlnbW9kZSA9IG9zLnN0YXQoZmlsZSlbc3RhdC5TVF9NT0RFXQorICAgICAgICBuZXdtb2RlID0gb3JpZ21vZGUgfCBzdGF0LlNfSVdSSVRFIHwgc3RhdC5TX0lSRUFECisgICAgICAgIG9zLmNobW9kKGZpbGUsIG5ld21vZGUpCisKKyAgICAjIFdlIG5lZWQgdG8gZXh0cmFjdCB0aGUgZGVidWcgc3JjIGluZm9ybWF0aW9uIGhlcmUuLi4KKyAgICBpZiBkZWJ1Z3NyY2RpcjoKKyAgICAgICAgc291cmNlcyA9IHNvdXJjZV9pbmZvKGZpbGUsIGQpCisKKyAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGRlYnVnZmlsZSkpCisKKyAgICAjIENvcHkgdGhlIHVubW9kaWZpZWQgaXRlbSB0byB0aGUgZGVidWcgZGlyZWN0b3J5CisgICAgc2h1dGlsLmNvcHkyKGZpbGUsIGRlYnVnZmlsZSkKKworICAgIGlmIG5ld21vZGU6CisgICAgICAgIG9zLmNobW9kKGZpbGUsIG9yaWdtb2RlKQorCisgICAgcmV0dXJuIChmaWxlLCBzb3VyY2VzKQorCitkZWYgaW5qZWN0X21pbmlkZWJ1Z2luZm8oZmlsZSwgZHZhciwgZGVidWdkaXIsIGRlYnVnbGliZGlyLCBkZWJ1Z2FwcGVuZCwgZGVidWdzcmNkaXIsIGQpOgorICAgICMgRXh0cmFjdCBqdXN0IHRoZSBzeW1ib2xzIGZyb20gZGVidWdpbmZvIGludG8gbWluaWRlYnVnaW5mbywKKyAgICAjIGNvbXByZXNzIGl0IHdpdGggeHogYW5kIGluamVjdCBpdCBiYWNrIGludG8gdGhlIGJpbmFyeSBpbiBhIC5nbnVfZGVidWdkYXRhIHNlY3Rpb24uCisgICAgIyBodHRwczovL3NvdXJjZXdhcmUub3JnL2dkYi9vbmxpbmVkb2NzL2dkYi9NaW5pRGVidWdJbmZvLmh0bWwKKworICAgIGltcG9ydCBzdWJwcm9jZXNzCisKKyAgICByZWFkZWxmID0gZC5nZXRWYXIoJ1JFQURFTEYnKQorICAgIG5tID0gZC5nZXRWYXIoJ05NJykKKyAgICBvYmpjb3B5ID0gZC5nZXRWYXIoJ09CSkNPUFknKQorCisgICAgbWluaWRlYnVnaW5mb2RpciA9IGQuZXhwYW5kKCcke1dPUktESVJ9L21pbmlkZWJ1Z2luZm8nKQorCisgICAgc3JjID0gZmlsZVtsZW4oZHZhcik6XQorICAgIGRlc3QgPSBkZWJ1Z2xpYmRpciArIG9zLnBhdGguZGlybmFtZShzcmMpICsgZGVidWdkaXIgKyAiLyIgKyBvcy5wYXRoLmJhc2VuYW1lKHNyYykgKyBkZWJ1Z2FwcGVuZAorICAgIGRlYnVnZmlsZSA9IGR2YXIgKyBkZXN0CisgICAgbWluaWRlYnVnZmlsZSA9IG1pbmlkZWJ1Z2luZm9kaXIgKyBzcmMgKyAnLm1pbmlkZWJ1ZycKKyAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKG1pbmlkZWJ1Z2ZpbGUpKQorCisgICAgIyBJZiB3ZSBkaWRuJ3QgcHJvZHVjZSBkZWJ1Z2luZm8gZm9yIGFueSByZWFzb24sIHdlIGNhbid0IHByb2R1Y2UgbWluaWRlYnVnaW5mbyBlaXRoZXIKKyAgICAjIHNvIHNraXAgaXQuCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRlYnVnZmlsZSk6CisgICAgICAgIGJiLmRlYnVnKDEsICdFTEYgZmlsZSB7fSBoYXMgbm8gZGVidWdpbmZvLCBza2lwcGluZyBtaW5pZGVidWdpbmZvIGluamVjdGlvbicuZm9ybWF0KGZpbGUpKQorICAgICAgICByZXR1cm4KKworICAgICMgRmluZCBub24tYWxsb2NhdGVkIFBST0dCSVRTLCBOT1RFLCBhbmQgTk9CSVRTIHNlY3Rpb25zIGluIHRoZSBkZWJ1Z2luZm8uCisgICAgIyBXZSB3aWxsIGV4Y2x1ZGUgYWxsIG9mIHRoZXNlIGZyb20gbWluaWRlYnVnaW5mbyB0byBzYXZlIHNwYWNlLgorICAgIHJlbW92ZV9zZWN0aW9uX25hbWVzID0gW10KKyAgICBmb3IgbGluZSBpbiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbcmVhZGVsZiwgJy1XJywgJy1TJywgZGVidWdmaWxlXSwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpLnNwbGl0bGluZXMoKToKKyAgICAgICAgZmllbGRzID0gbGluZS5zcGxpdCgpCisgICAgICAgIGlmIGxlbihmaWVsZHMpIDwgODoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIG5hbWUgPSBmaWVsZHNbMF0KKyAgICAgICAgdHlwZSA9IGZpZWxkc1sxXQorICAgICAgICBmbGFncyA9IGZpZWxkc1s3XQorICAgICAgICAjIC5kZWJ1Z18gc2VjdGlvbnMgd2lsbCBiZSByZW1vdmVkIGJ5IG9iamNvcHkgLVMgc28gbm8gbmVlZCB0byBleHBsaWNpdGx5IHJlbW92ZSB0aGVtCisgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnLmRlYnVnXycpOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgJ0EnIG5vdCBpbiBmbGFncyBhbmQgdHlwZSBpbiBbJ1BST0dCSVRTJywgJ05PVEUnLCAnTk9CSVRTJ106CisgICAgICAgICAgICByZW1vdmVfc2VjdGlvbl9uYW1lcy5hcHBlbmQobmFtZSkKKworICAgICMgTGlzdCBkeW5hbWljIHN5bWJvbHMgaW4gdGhlIGJpbmFyeS4gV2UgY2FuIGV4Y2x1ZGUgdGhlc2UgZnJvbSBtaW5pZGVidWdpbmZvCisgICAgIyBiZWNhdXNlIHRoZXkgYXJlIGFsd2F5cyBwcmVzZW50IGluIHRoZSBiaW5hcnkuCisgICAgZHluc3ltcyA9IHNldCgpCisgICAgZm9yIGxpbmUgaW4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW25tLCAnLUQnLCBmaWxlLCAnLS1mb3JtYXQ9cG9zaXgnLCAnLS1kZWZpbmVkLW9ubHknXSwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpLnNwbGl0bGluZXMoKToKKyAgICAgICAgZHluc3ltcy5hZGQobGluZS5zcGxpdCgpWzBdKQorCisgICAgIyBGaW5kIGFsbCBmdW5jdGlvbiBzeW1ib2xzIGZyb20gZGVidWdpbmZvIHdoaWNoIGFyZW4ndCBpbiB0aGUgZHluYW1pYyBzeW1ib2xzIHRhYmxlLgorICAgICMgVGhlc2UgYXJlIHRoZSBvbmVzIHdlIHdhbnQgdG8ga2VlcCBpbiBtaW5pZGVidWdpbmZvLgorICAgIGtlZXBfc3ltYm9sc19maWxlID0gbWluaWRlYnVnZmlsZSArICcuc3ltbGlzdCcKKyAgICBmb3VuZF9hbnlfc3ltYm9scyA9IEZhbHNlCisgICAgd2l0aCBvcGVuKGtlZXBfc3ltYm9sc19maWxlLCAndycpIGFzIGY6CisgICAgICAgIGZvciBsaW5lIGluIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtubSwgZGVidWdmaWxlLCAnLS1mb3JtYXQ9c3lzdicsICctLWRlZmluZWQtb25seSddLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgZmllbGRzID0gbGluZS5zcGxpdCgnfCcpCisgICAgICAgICAgICBpZiBsZW4oZmllbGRzKSA8IDc6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG5hbWUgPSBmaWVsZHNbMF0uc3RyaXAoKQorICAgICAgICAgICAgdHlwZSA9IGZpZWxkc1szXS5zdHJpcCgpCisgICAgICAgICAgICBpZiB0eXBlID09ICdGVU5DJyBhbmQgbmFtZSBub3QgaW4gZHluc3ltczoKKyAgICAgICAgICAgICAgICBmLndyaXRlKCd7fVxuJy5mb3JtYXQobmFtZSkpCisgICAgICAgICAgICAgICAgZm91bmRfYW55X3N5bWJvbHMgPSBUcnVlCisKKyAgICBpZiBub3QgZm91bmRfYW55X3N5bWJvbHM6CisgICAgICAgIGJiLmRlYnVnKDEsICdFTEYgZmlsZSB7fSBjb250YWlucyBubyBzeW1ib2xzLCBza2lwcGluZyBtaW5pZGVidWdpbmZvIGluamVjdGlvbicuZm9ybWF0KGZpbGUpKQorICAgICAgICByZXR1cm4KKworICAgIGJiLnV0aWxzLnJlbW92ZShtaW5pZGVidWdmaWxlKQorICAgIGJiLnV0aWxzLnJlbW92ZShtaW5pZGVidWdmaWxlICsgJy54eicpCisKKyAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoW29iamNvcHksICctUyddICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyctLXJlbW92ZS1zZWN0aW9uPXt9Jy5mb3JtYXQocykgZm9yIHMgaW4gcmVtb3ZlX3NlY3Rpb25fbmFtZXNdICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyctLWtlZXAtc3ltYm9scz17fScuZm9ybWF0KGtlZXBfc3ltYm9sc19maWxlKSwgZGVidWdmaWxlLCBtaW5pZGVidWdmaWxlXSkKKworICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbJ3h6JywgJy0ta2VlcCcsIG1pbmlkZWJ1Z2ZpbGVdKQorCisgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFtvYmpjb3B5LCAnLS1hZGQtc2VjdGlvbicsICcuZ251X2RlYnVnZGF0YT17fS54eicuZm9ybWF0KG1pbmlkZWJ1Z2ZpbGUpLCBmaWxlXSkKKwogZGVmIGNvcHlkZWJ1Z3NvdXJjZXMoZGVidWdzcmNkaXIsIHNvdXJjZXMsIGQpOgogICAgICMgVGhlIGRlYnVnIHNyYyBpbmZvcm1hdGlvbiB3cml0dGVuIG91dCB0byBzb3VyY2VmaWxlIGlzIGZ1cnRoZXIgcHJvY2Vzc2VkCiAgICAgIyBhbmQgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbiBoZXJlLgpAQCAtNDkyLDcgKzYxNCw3IEBACiAjIFBhY2thZ2UgZGF0YSBoYW5kbGluZyByb3V0aW5lcwogIwogCi1kZWYgZ2V0X3BhY2thZ2VfbWFwcGluZyAocGtnLCBiYXNlcGtnLCBkKToKK2RlZiBnZXRfcGFja2FnZV9tYXBwaW5nIChwa2csIGJhc2Vwa2csIGQsIGRlcHZlcnNpb25zPU5vbmUpOgogICAgIGltcG9ydCBvZS5wYWNrYWdlZGF0YQogCiAgICAgZGF0YSA9IG9lLnBhY2thZ2VkYXRhLnJlYWRfc3VicGtnZGF0YShwa2csIGQpCkBAIC01MDMsNiArNjI1LDE0IEBACiAgICAgICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2FsbGFyY2gnLCBkKSBhbmQgbm90IGQuZ2V0VmFyKCdNVUxUSUxJQl9WQVJJQU5UUycpIFwKICAgICAgICAgICAgIGFuZCBkYXRhW2tleV0gPT0gYmFzZXBrZzoKICAgICAgICAgICAgIHJldHVybiBwa2cKKyAgICAgICAgaWYgZGVwdmVyc2lvbnMgPT0gW106CisgICAgICAgICAgICAjIEF2b2lkIHJldHVybmluZyBhIG1hcHBpbmcgaWYgdGhlIHJlbmFtZWQgcGFja2FnZSBycHJvdmlkZXMgaXRzIG9yaWdpbmFsIG5hbWUKKyAgICAgICAgICAgIHJwcm92a2V5ID0gIlJQUk9WSURFU18lcyIgJSBwa2cKKyAgICAgICAgICAgIGlmIHJwcm92a2V5IGluIGRhdGE6CisgICAgICAgICAgICAgICAgaWYgcGtnIGluIGJiLnV0aWxzLmV4cGxvZGVfZGVwX3ZlcnNpb25zMihkYXRhW3Jwcm92a2V5XSk6CisgICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoIiVzIHJwcm92aWRlcyAlcywgbm90IHJlcGxhY2luZyB0aGUgbGF0dGVyIiAlIChkYXRhW2tleV0sIHBrZykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwa2cKKyAgICAgICAgIyBEbyBtYXAgdG8gcmV3cml0dGVuIHBhY2thZ2UgbmFtZQogICAgICAgICByZXR1cm4gZGF0YVtrZXldCiAKICAgICByZXR1cm4gcGtnCkBAIC01MjMsOCArNjUzLDEwIEBACiAKICAgICBuZXdfZGVwZW5kcyA9IHt9CiAgICAgZGVwcyA9IGJiLnV0aWxzLmV4cGxvZGVfZGVwX3ZlcnNpb25zMihkLmdldFZhcih2YXJuYW1lKSBvciAiIikKLSAgICBmb3IgZGVwZW5kIGluIGRlcHM6Ci0gICAgICAgIG5ld19kZXBlbmQgPSBnZXRfcGFja2FnZV9tYXBwaW5nKGRlcGVuZCwgcGtnLCBkKQorICAgIGZvciBkZXBlbmQsIGRlcHZlcnNpb25zIGluIGRlcHMuaXRlbXMoKToKKyAgICAgICAgbmV3X2RlcGVuZCA9IGdldF9wYWNrYWdlX21hcHBpbmcoZGVwZW5kLCBwa2csIGQsIGRlcHZlcnNpb25zKQorICAgICAgICBpZiBkZXBlbmQgIT0gbmV3X2RlcGVuZDoKKyAgICAgICAgICAgIGJiLm5vdGUoInBhY2thZ2UgbmFtZSBtYXBwaW5nIGRvbmU6ICVzIC0+ICVzIiAlIChkZXBlbmQsIG5ld19kZXBlbmQpKQogICAgICAgICBuZXdfZGVwZW5kc1tuZXdfZGVwZW5kXSA9IGRlcHNbZGVwZW5kXQogCiAgICAgZC5zZXRWYXIodmFybmFtZSwgYmIudXRpbHMuam9pbl9kZXBzKG5ld19kZXBlbmRzLCBjb21tYXNlcD1GYWxzZSkpCkBAIC05MTYsMjUgKzEwNDgsMzcgQEAKICAgICBpZiBkLmdldFZhcignUEFDS0FHRV9ERUJVR19TUExJVF9TVFlMRScpID09ICdkZWJ1Zy1maWxlLWRpcmVjdG9yeSc6CiAgICAgICAgICMgU2luZ2xlIGRlYnVnLWZpbGUtZGlyZWN0b3J5IHN0eWxlIGRlYnVnIGluZm8KICAgICAgICAgZGVidWdhcHBlbmQgPSAiLmRlYnVnIgorICAgICAgICBkZWJ1Z3N0YXRpY2FwcGVuZCA9ICIiCiAgICAgICAgIGRlYnVnZGlyID0gIiIKKyAgICAgICAgZGVidWdzdGF0aWNkaXIgPSAiIgogICAgICAgICBkZWJ1Z2xpYmRpciA9ICIvdXNyL2xpYi9kZWJ1ZyIKKyAgICAgICAgZGVidWdzdGF0aWNsaWJkaXIgPSAiL3Vzci9saWIvZGVidWctc3RhdGljIgogICAgICAgICBkZWJ1Z3NyY2RpciA9ICIvdXNyL3NyYy9kZWJ1ZyIKICAgICBlbGlmIGQuZ2V0VmFyKCdQQUNLQUdFX0RFQlVHX1NQTElUX1NUWUxFJykgPT0gJ2RlYnVnLXdpdGhvdXQtc3JjJzoKICAgICAgICAgIyBPcmlnaW5hbCBPRS1jb3JlLCBhLmsuYS4gIi5kZWJ1ZyIsIHN0eWxlIGRlYnVnIGluZm8sIGJ1dCB3aXRob3V0IHNvdXJjZXMgaW4gL3Vzci9zcmMvZGVidWcKICAgICAgICAgZGVidWdhcHBlbmQgPSAiIgorICAgICAgICBkZWJ1Z3N0YXRpY2FwcGVuZCA9ICIiCiAgICAgICAgIGRlYnVnZGlyID0gIi8uZGVidWciCisgICAgICAgIGRlYnVnc3RhdGljZGlyID0gIi8uZGVidWctc3RhdGljIgogICAgICAgICBkZWJ1Z2xpYmRpciA9ICIiCisgICAgICAgIGRlYnVnc3RhdGljbGliZGlyID0gIiIKICAgICAgICAgZGVidWdzcmNkaXIgPSAiIgogICAgIGVsaWYgZC5nZXRWYXIoJ1BBQ0tBR0VfREVCVUdfU1BMSVRfU1RZTEUnKSA9PSAnZGVidWctd2l0aC1zcmNwa2cnOgogICAgICAgICBkZWJ1Z2FwcGVuZCA9ICIiCisgICAgICAgIGRlYnVnc3RhdGljYXBwZW5kID0gIiIKICAgICAgICAgZGVidWdkaXIgPSAiLy5kZWJ1ZyIKKyAgICAgICAgZGVidWdzdGF0aWNkaXIgPSAiLy5kZWJ1Zy1zdGF0aWMiCiAgICAgICAgIGRlYnVnbGliZGlyID0gIiIKKyAgICAgICAgZGVidWdzdGF0aWNsaWJkaXIgPSAiIgogICAgICAgICBkZWJ1Z3NyY2RpciA9ICIvdXNyL3NyYy9kZWJ1ZyIKICAgICBlbHNlOgogICAgICAgICAjIE9yaWdpbmFsIE9FLWNvcmUsIGEuay5hLiAiLmRlYnVnIiwgc3R5bGUgZGVidWcgaW5mbwogICAgICAgICBkZWJ1Z2FwcGVuZCA9ICIiCisgICAgICAgIGRlYnVnc3RhdGljYXBwZW5kID0gIiIKICAgICAgICAgZGVidWdkaXIgPSAiLy5kZWJ1ZyIKKyAgICAgICAgZGVidWdzdGF0aWNkaXIgPSAiLy5kZWJ1Zy1zdGF0aWMiCiAgICAgICAgIGRlYnVnbGliZGlyID0gIiIKKyAgICAgICAgZGVidWdzdGF0aWNsaWJkaXIgPSAiIgogICAgICAgICBkZWJ1Z3NyY2RpciA9ICIvdXNyL3NyYy9kZWJ1ZyIKIAogICAgICMKQEAgLTk1NSwxMiArMTA5OSw2IEBACiAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBjcGF0aC53YWxrKGR2YXIpOgogICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CiAgICAgICAgICAgICAgICAgZmlsZSA9IG9zLnBhdGguam9pbihyb290LCBmKQotICAgICAgICAgICAgICAgIGlmIGZpbGUuZW5kc3dpdGgoIi5rbyIpIGFuZCBmaWxlLmZpbmQoIi9saWIvbW9kdWxlcy8iKSAhPSAtMToKLSAgICAgICAgICAgICAgICAgICAga2Vybm1vZHMuYXBwZW5kKGZpbGUpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgb2UucGFja2FnZS5pc19zdGF0aWNfbGliKGZpbGUpOgotICAgICAgICAgICAgICAgICAgICBzdGF0aWNsaWJzLmFwcGVuZChmaWxlKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICAgICAgIyBTa2lwIGRlYnVnIGZpbGVzCiAgICAgICAgICAgICAgICAgaWYgZGVidWdhcHBlbmQgYW5kIGZpbGUuZW5kc3dpdGgoZGVidWdhcHBlbmQpOgpAQCAtOTcxLDYgKzExMDksMTMgQEAKICAgICAgICAgICAgICAgICBpZiBmaWxlIGluIHNraXBmaWxlczoKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAorICAgICAgICAgICAgICAgIGlmIGZpbGUuZW5kc3dpdGgoIi5rbyIpIGFuZCBmaWxlLmZpbmQoIi9saWIvbW9kdWxlcy8iKSAhPSAtMToKKyAgICAgICAgICAgICAgICAgICAga2Vybm1vZHMuYXBwZW5kKGZpbGUpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgb2UucGFja2FnZS5pc19zdGF0aWNfbGliKGZpbGUpOgorICAgICAgICAgICAgICAgICAgICBzdGF0aWNsaWJzLmFwcGVuZChmaWxlKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBsdGFyZ2V0ID0gY3BhdGgucmVhbHBhdGgoZmlsZSwgZHZhciwgRmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIHMgPSBjcGF0aC5sc3RhdChsdGFyZ2V0KQpAQCAtMTA1MCw4ICsxMTk1LDExIEBACiAgICAgICAgIHJlc3VsdHMgPSBvZS51dGlscy5tdWx0aXByb2Nlc3NfbGF1bmNoKHNwbGl0ZGVidWdpbmZvLCBsaXN0KGVsZmZpbGVzKSwgZCwgZXh0cmFhcmdzPShkdmFyLCBkZWJ1Z2RpciwgZGVidWdsaWJkaXIsIGRlYnVnYXBwZW5kLCBkZWJ1Z3NyY2RpciwgZCkpCiAKICAgICAgICAgaWYgZGVidWdzcmNkaXIgYW5kIG5vdCB0YXJnZXRvcy5zdGFydHN3aXRoKCJtaW5ndyIpOgotICAgICAgICAgICAgZm9yIGZpbGUgaW4gc3RhdGljbGliczoKLSAgICAgICAgICAgICAgICByZXN1bHRzLmV4dGVuZChzb3VyY2VfaW5mbyhmaWxlLCBkLCBmYXRhbD1GYWxzZSkpCisgICAgICAgICAgICBpZiAoZC5nZXRWYXIoJ1BBQ0tBR0VfREVCVUdfU1RBVElDX1NQTElUJykgPT0gJzEnKToKKyAgICAgICAgICAgICAgICByZXN1bHRzID0gb2UudXRpbHMubXVsdGlwcm9jZXNzX2xhdW5jaChzcGxpdHN0YXRpY2RlYnVnaW5mbywgc3RhdGljbGlicywgZCwgZXh0cmFhcmdzPShkdmFyLCBkZWJ1Z3N0YXRpY2RpciwgZGVidWdzdGF0aWNsaWJkaXIsIGRlYnVnc3RhdGljYXBwZW5kLCBkZWJ1Z3NyY2RpciwgZCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZvciBmaWxlIGluIHN0YXRpY2xpYnM6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKCAoZmlsZSxzb3VyY2VfaW5mbyhmaWxlLCBkKSkgKQogCiAgICAgICAgIHNvdXJjZXMgPSBzZXQoKQogICAgICAgICBmb3IgciBpbiByZXN1bHRzOgpAQCAtMTEyMCw5ICsxMjY4LDE3IEBACiAgICAgICAgICAgICBzZmlsZXMuYXBwZW5kKChmaWxlLCBlbGZfZmlsZSwgc3RyaXApKQogICAgICAgICBmb3IgZiBpbiBrZXJubW9kczoKICAgICAgICAgICAgIHNmaWxlcy5hcHBlbmQoKGYsIDE2LCBzdHJpcCkpCisgICAgICAgIGlmIChkLmdldFZhcignUEFDS0FHRV9TVFJJUF9TVEFUSUMnKSA9PSAnMScgb3IgZC5nZXRWYXIoJ1BBQ0tBR0VfREVCVUdfU1RBVElDX1NQTElUJykgPT0gJzEnKToKKyAgICAgICAgICAgIGZvciBmIGluIHN0YXRpY2xpYnM6CisgICAgICAgICAgICAgICAgc2ZpbGVzLmFwcGVuZCgoZiwgMTYsIHN0cmlwKSkKIAogICAgICAgICBvZS51dGlscy5tdWx0aXByb2Nlc3NfbGF1bmNoKG9lLnBhY2thZ2UucnVuc3RyaXAsIHNmaWxlcywgZCkKIAorICAgICMgQnVpbGQgIm1pbmlkZWJ1Z2luZm8iIGFuZCByZWluamVjdCBpdCBiYWNrIGludG8gdGhlIHN0cmlwcGVkIGJpbmFyaWVzCisgICAgaWYgZC5nZXRWYXIoJ1BBQ0tBR0VfTUlOSURFQlVHSU5GTycpID09ICcxJzoKKyAgICAgICAgb2UudXRpbHMubXVsdGlwcm9jZXNzX2xhdW5jaChpbmplY3RfbWluaWRlYnVnaW5mbywgbGlzdChlbGZmaWxlcyksIGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFhcmdzPShkdmFyLCBkZWJ1Z2RpciwgZGVidWdsaWJkaXIsIGRlYnVnYXBwZW5kLCBkZWJ1Z3NyY2RpciwgZCkpCisKICAgICAjCiAgICAgIyBFbmQgb2Ygc3RyaXAKICAgICAjCkBAIC0xMTg3LDcgKzEzNDMsNyBAQAogICAgICAgICAgICAgZGlyID0gb3Muc2VwCiAgICAgICAgIGZvciBmIGluIChmaWxlcyArIGRpcnMpOgogICAgICAgICAgICAgcGF0aCA9ICIuIiArIG9zLnBhdGguam9pbihkaXIsIGYpCi0gICAgICAgICAgICBpZiAiLy5kZWJ1Zy8iIGluIHBhdGggb3IgcGF0aC5lbmRzd2l0aCgiLy5kZWJ1ZyIpOgorICAgICAgICAgICAgaWYgIi8uZGVidWcvIiBpbiBwYXRoIG9yICIvLmRlYnVnLXN0YXRpYy8iIGluIHBhdGggb3IgcGF0aC5lbmRzd2l0aCgiLy5kZWJ1ZyIpOgogICAgICAgICAgICAgICAgIGRlYnVnLmFwcGVuZChwYXRoKQogCiAgICAgZm9yIHBrZyBpbiBwYWNrYWdlczoKQEAgLTEyNjMsOCArMTQxOSw5IEBACiAgICAgIyBIYW5kbGUgTElDRU5TRV9FWENMVVNJT04KICAgICBwYWNrYWdlX2xpc3QgPSBbXQogICAgIGZvciBwa2cgaW4gcGFja2FnZXM6Ci0gICAgICAgIGlmIGQuZ2V0VmFyKCdMSUNFTlNFX0VYQ0xVU0lPTi0nICsgcGtnKToKLSAgICAgICAgICAgIG1zZyA9ICIlcyBoYXMgYW4gaW5jb21wYXRpYmxlIGxpY2Vuc2UuIEV4Y2x1ZGluZyBmcm9tIHBhY2thZ2luZy4iICUgcGtnCisgICAgICAgIGxpY2Vuc2VzID0gZC5nZXRWYXIoJ0xJQ0VOU0VfRVhDTFVTSU9OLScgKyBwa2cpCisgICAgICAgIGlmIGxpY2Vuc2VzOgorICAgICAgICAgICAgbXNnID0gIkV4Y2x1ZGluZyAlcyBmcm9tIHBhY2thZ2luZyBhcyBpdCBoYXMgaW5jb21wYXRpYmxlIGxpY2Vuc2Uocyk6ICVzIiAlIChwa2csIGxpY2Vuc2VzKQogICAgICAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImluY29tcGF0aWJsZS1saWNlbnNlIiwgbXNnLCBkKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcGFja2FnZV9saXN0LmFwcGVuZChwa2cpCkBAIC0yMTA4LDEwICsyMjY1LDEyIEBACiAjIGl0ZXJhdGlvbiwgd2UgbmVlZCB0byBsaXN0IHRoZW0gaGVyZToKIFBBQ0tBR0VWQVJTID0gIkZJTEVTIFJERVBFTkRTIFJSRUNPTU1FTkRTIFNVTU1BUlkgREVTQ1JJUFRJT04gUlNVR0dFU1RTIFJQUk9WSURFUyBSQ09ORkxJQ1RTIFBLRyBBTExPV19FTVBUWSBwa2dfcG9zdGluc3QgcGtnX3Bvc3RybSBwa2dfcG9zdGluc3Rfb250YXJnZXQgSU5JVFNDUklQVF9OQU1FIElOSVRTQ1JJUFRfUEFSQU1TIERFQklBTl9OT0FVVE9OQU1FIEFMVEVSTkFUSVZFIFBLR0UgUEtHViBQS0dSIFVTRVJBRERfUEFSQU0gR1JPVVBBRERfUEFSQU0gQ09ORkZJTEVTIFNZU1RFTURfU0VSVklDRSBMSUNFTlNFIFNFQ1RJT04gcGtnX3ByZWluc3QgcGtnX3ByZXJtIFJSRVBMQUNFUyBHUk9VUE1FTVNfUEFSQU0gU1lTVEVNRF9BVVRPX0VOQUJMRSBTS0lQX0ZJTEVERVBTIFBSSVZBVEVfTElCUyIKIAotZGVmIGdlbl9wYWNrYWdldmFyKGQpOgorZGVmIGdlbl9wYWNrYWdldmFyKGQsIHBrZ3ZhcnM9IlBBQ0tBR0VWQVJTIik6CiAgICAgcmV0ID0gW10KICAgICBwa2dzID0gKGQuZ2V0VmFyKCJQQUNLQUdFUyIpIG9yICIiKS5zcGxpdCgpCi0gICAgdmFycyA9IChkLmdldFZhcigiUEFDS0FHRVZBUlMiKSBvciAiIikuc3BsaXQoKQorICAgIHZhcnMgPSAoZC5nZXRWYXIocGtndmFycykgb3IgIiIpLnNwbGl0KCkKKyAgICBmb3IgdiBpbiB2YXJzOgorICAgICAgICByZXQuYXBwZW5kKHYpCiAgICAgZm9yIHAgaW4gcGtnczoKICAgICAgICAgZm9yIHYgaW4gdmFyczoKICAgICAgICAgICAgIHJldC5hcHBlbmQodiArICJfIiArIHApCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2lway5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9pcGsuYmJjbGFzcwppbmRleCA0ZjIzOTc3Li5jMDA4NTU5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2lway5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfaXBrLmJiY2xhc3MKQEAgLTQ1LDYgKzQ1LDcgQEAKICAgICBpbXBvcnQgc3VicHJvY2VzcwogICAgIGltcG9ydCB0ZXh0d3JhcAogICAgIGltcG9ydCBjb2xsZWN0aW9ucworICAgIGltcG9ydCBnbG9iCiAKICAgICBkZWYgY2xlYW51cGNvbnRyb2wocm9vdCk6CiAgICAgICAgIGZvciBwIGluIFsnQ09OVFJPTCcsICdERUJJQU4nXToKQEAgLTEwMSw4ICsxMDIsNyBAQAogICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIocGtnb3V0ZGlyKQogICAgICAgICBvcy5jaGRpcihyb290KQogICAgICAgICBjbGVhbnVwY29udHJvbChyb290KQotICAgICAgICBmcm9tIGdsb2IgaW1wb3J0IGdsb2IKLSAgICAgICAgZyA9IGdsb2IoJyonKQorICAgICAgICBnID0gZ2xvYi5nbG9iKCcqJykKICAgICAgICAgaWYgbm90IGcgYW5kIGxvY2FsZGF0YS5nZXRWYXIoJ0FMTE9XX0VNUFRZJywgRmFsc2UpICE9ICIxIjoKICAgICAgICAgICAgIGJiLm5vdGUoIk5vdCBjcmVhdGluZyBlbXB0eSBhcmNoaXZlIGZvciAlcy0lcy0lcyIgJSAocGtnLCBsb2NhbGRhdGEuZ2V0VmFyKCdQS0dWJyksIGxvY2FsZGF0YS5nZXRWYXIoJ1BLR1InKSkpCiAgICAgICAgICAgICByZXR1cm4KQEAgLTIzNyw2ICsyMzcsMTAgQEAKICAgICAgICAgY2xlYW51cGNvbnRyb2wocm9vdCkKICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKIAorIyBIYXZlIHRvIGxpc3QgYW55IHZhcmlhYmxlcyByZWZlcmVuY2VkIGFzIFhfPHBrZz4gdGhhdCBhcmVuJ3QgaW4gcGtnZGF0YSBoZXJlCitJUEtFWFRSQVZBUlMgPSAiUFJJT1JJVFkgTUFJTlRBSU5FUiBQQUNLQUdFX0FSQ0ggSE9NRVBBR0UiCitpcGtfd3JpdGVfcGtnW3ZhcmRlcHNdICs9ICIke0BnZW5fcGFja2FnZXZhcihkLCAnSVBLRVhUUkFWQVJTJyl9IgorCiAjIE90aGVyd2lzZSBhbGxhcmNoIHBhY2thZ2VzIG1heSBjaGFuZ2UgZGVwZW5kaW5nIG9uIG92ZXJyaWRlIGNvbmZpZ3VyYXRpb24KIGlwa193cml0ZV9wa2dbdmFyZGVwc2V4Y2x1ZGVdID0gIk9WRVJSSURFUyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcGF0Y2guYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BhdGNoLmJiY2xhc3MKaW5kZXggY2QyNDFmMS4uMjVlYzA4OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcGF0Y2guYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9wYXRjaC5iYmNsYXNzCkBAIC01LDYgKzUsMTMgQEAKIAogUEFUQ0hERVBFTkRFTkNZID0gIiR7UEFUQ0hUT09MfS1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIAorIyBUaGVyZSBpcyBhIGJ1ZyBpbiBwYXRjaCAyLjcuMyBhbmQgZWFybGllciB3aGVyZSBpbmRleCBsaW5lcworIyBpbiBwYXRjaGVzIGNhbiBjaGFuZ2UgZmlsZSBtb2RlcyB3aGVuIHRoZXkgc2hvdWxkbid0OgorIyBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9wYXRjaC5naXQvcGF0Y2gvP2lkPTgyYjgwMGM5NTUyYTA4OGEyNDE0NTc5NDgyMTlkMjVjZTBhNDA3YTQKKyMgVGhpcyBsZWFrcyBpbnRvIGRlYnVnIHNvdXJjZXMgaW4gcGFydGljdWxhci4gQWRkIHRoZSBkZXBlbmRlbmN5CisjIHRvIHRhcmdldCByZWNpcGVzIHRvIGF2b2lkIHRoaXMgcHJvYmxlbSB1bnRpbCB3ZSBjYW4gcmVseSBvbiAyLjcuNCBvciBsYXRlci4KK1BBVENIREVQRU5ERU5DWV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBwYXRjaC1yZXBsYWNlbWVudC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKKwogUEFUQ0hfR0lUX1VTRVJfTkFNRSA/PSAiT3BlbkVtYmVkZGVkIgogUEFUQ0hfR0lUX1VTRVJfRU1BSUwgPz0gIm9lLnBhdGNoQG9lIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfYmFzZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2Jhc2UuYmJjbGFzcwppbmRleCBkMDM0NjViLi5mODVjM2I5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfYmFzZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19iYXNlLmJiY2xhc3MKQEAgLTIxLDYgKzIxLDcgQEAKIAogU0RLSU1BR0VfRkVBVFVSRVMgPz89ICJkZXYtcGtncyBkYmctcGtncyBzcmMtcGtncyAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2FwaS1kb2N1bWVudGF0aW9uJywgJ2RvYy1wa2dzJywgJycsIGQpfSIKIFNES0lNQUdFX0lOU1RBTExfQ09NUExFTUVOVEFSWSA9ICcke0Bjb21wbGVtZW50YXJ5X2dsb2JzKCJTREtJTUFHRV9GRUFUVVJFUyIsIGQpfScKK1NES0lNQUdFX0lOU1RBTExfQ09NUExFTUVOVEFSWVt2YXJkZXBzXSArPSAiU0RLSU1BR0VfRkVBVFVSRVMiCiAKIFBBQ0tBR0VfQVJDSFNfYXBwZW5kX3Rhc2stcG9wdWxhdGUtc2RrID0gIiBzZGstcHJvdmlkZXMtZHVtbXktdGFyZ2V0IgogU0RLX1BBQ0tBR0VfQVJDSFMgKz0gInNkay1wcm92aWRlcy1kdW1teS0ke1NES1BLR1NVRkZJWH0iCkBAIC00OCw2ICs0OSw4IEBACiAKICMgRGVmYXVsdCBhcmNoaXZlZCBTREsncyBzdWZmaXgKIFNES19BUkNISVZFX1RZUEUgPz0gInRhci54eiIKK1NES19YWl9DT01QUkVTU0lPTl9MRVZFTCA/PSAiLTkiCitTREtfWFpfT1BUSU9OUyA/PSAiJHtYWl9ERUZBVUxUU30gJHtTREtfWFpfQ09NUFJFU1NJT05fTEVWRUx9IgogCiAjIFRvIHN1cHBvcnQgZGlmZmVyZW50IHNkayB0eXBlIGFjY29yZGluZyB0byBTREtfQVJDSElWRV9UWVBFLCBub3cgc3VwcG9ydCB6aXAgYW5kIHRhci54egogcHl0aG9uICgpIHsKQEAgLTU4LDcgKzYxLDcgQEAKICAgICAgICBkLnNldFZhcignU0RLX0FSQ0hJVkVfQ01EJywgJ2NkICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfTsgemlwIC1yICR7U0RLREVQTE9ZRElSfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS4ke1NES19BUkNISVZFX1RZUEV9IC4nKQogICAgIGVsc2U6CiAgICAgICAgZC5zZXRWYXIoJ1NES19BUkNISVZFX0RFUEVORFMnLCAneHotbmF0aXZlJykKLSAgICAgICBkLnNldFZhcignU0RLX0FSQ0hJVkVfQ01EJywgJ2NkICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfTsgdGFyICR7U0RLVEFST1BUU30gLWNmIC0gLiB8IHh6IC1UIDAgLTkgPiAke1NES0RFUExPWURJUn0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0uJHtTREtfQVJDSElWRV9UWVBFfScpCisgICAgICAgZC5zZXRWYXIoJ1NES19BUkNISVZFX0NNRCcsICdjZCAke1NES19PVVRQVVR9LyR7U0RLUEFUSH07IHRhciAke1NES1RBUk9QVFN9IC1jZiAtIC4gfCB4eiAke1NES19YWl9PUFRJT05TfSA+ICR7U0RLREVQTE9ZRElSfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS4ke1NES19BUkNISVZFX1RZUEV9JykKIH0KIAogU0RLX1JERVBFTkRTID0gIiR7VE9PTENIQUlOX1RBUkdFVF9UQVNLfSAke1RPT0xDSEFJTl9IT1NUX1RBU0t9IgpAQCAtMTgyLDYgKzE4NSwxMSBAQAogCSMgRXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVycyBsaWtlICcrJyBhbmQgJy4nIGluIHRoZSBTREtQQVRICiAJZXNjYXBlZF9zZGtwYXRoPSQoZWNobyAke1NES1BBVEh9IHxzZWQgLWUgInM6W1wrXC5dOlxcXFxcXFxcXDA6ZyIpCiAJc2VkIC1pIC1lICJzOiMjREVGQVVMVF9JTlNUQUxMX0RJUiMjOiRlc2NhcGVkX3Nka3BhdGg6IiAke1NES19PVVRQVVR9LyR7U0RLUEFUSH0vcmVsb2NhdGVfc2RrLnB5CisKKyAgICAgICBta2RpciAtcCAke1NES19PVVRQVVR9LyR7U0RLUEFUSE5BVElWRX0ke3N5c2NvbmZkaXJ9LworICAgICAgIGVjaG8gJyR7U0RLUEFUSE5BVElWRX0ke2xpYmRpcl9uYXRpdmVzZGt9Ciske1NES1BBVEhOQVRJVkV9JHtiYXNlX2xpYmRpcl9uYXRpdmVzZGt9CitpbmNsdWRlIC9ldGMvbGQuc28uY29uZicgPiAke1NES19PVVRQVVR9LyR7U0RLUEFUSE5BVElWRX0ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYKIH0KIAogcHl0aG9uIGNoZWNrX3Nka19zeXNyb290cygpIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19leHQuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19leHQuYmJjbGFzcwppbmRleCAwNWNmYzFjLi45ZjI2Y2ZjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfZXh0LmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzCkBAIC0xMjQsNyArMTI0LDcgQEAKIGRlZiBjbGVhbl9lc2RrX2J1aWxkZGlyKGQsIHNka2Jhc2VwYXRoKToKICAgICAiIiJDbGVhbiB1cCB0cmFjZXMgb2YgdGhlIGZha2UgYnVpbGQgZm9yIGNyZWF0ZV9maWx0ZXJlZF90YXNrbGlzdCgpIiIiCiAgICAgaW1wb3J0IHNodXRpbAotICAgIGNsZWFucGF0aHMgPSAnY2FjaGUgY29uZi9zYW5pdHlfaW5mbyB0bXAnLnNwbGl0KCkKKyAgICBjbGVhbnBhdGhzID0gWydjYWNoZScsICd0bXAnXQogICAgIGZvciBwdGggaW4gY2xlYW5wYXRoczoKICAgICAgICAgZnVsbHB0aCA9IG9zLnBhdGguam9pbihzZGtiYXNlcGF0aCwgcHRoKQogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGZ1bGxwdGgpOgpAQCAtMTc5LDcgKzE3OSw5IEBACiAgICAgICAgICMgd2lsbCBlZmZlY3RpdmVseSBkbwogICAgICAgICBjbGVhbl9lc2RrX2J1aWxkZGlyKGQsIHNka2Jhc2VwYXRoKQogICAgIGZpbmFsbHk6Ci0gICAgICAgIG9zLnJlcGxhY2Uoc2RrYmFzZXBhdGggKyAnL2NvbmYvbG9jYWwuY29uZi5iYWsnLCBzZGtiYXNlcGF0aCArICcvY29uZi9sb2NhbC5jb25mJykKKyAgICAgICAgbG9jYWxjb25mID0gc2RrYmFzZXBhdGggKyAnL2NvbmYvbG9jYWwuY29uZicKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobG9jYWxjb25mICsgJy5iYWsnKToKKyAgICAgICAgICAgIG9zLnJlcGxhY2UobG9jYWxjb25mICsgJy5iYWsnLCBsb2NhbGNvbmYpCiAKIHB5dGhvbiBjb3B5X2J1aWxkc3lzdGVtICgpIHsKICAgICBpbXBvcnQgcmUKQEAgLTM4Niw5ICszODgsMTMgQEAKICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguam9pbihiYXNlb3V0cGF0aCwgJ2NhY2hlJykpCiAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShidWlsZGRpciArICcvY2FjaGUvYmJfdW5paGFzaGVzLmRhdCcsIGJhc2VvdXRwYXRoICsgJy9jYWNoZS9iYl91bmloYXNoZXMuZGF0JykKIAotICAgICMgV3JpdGUgYSB0ZW1wbGF0ZWNvbmYuY2ZnCi0gICAgd2l0aCBvcGVuKGJhc2VvdXRwYXRoICsgJy9jb25mL3RlbXBsYXRlY29uZi5jZmcnLCAndycpIGFzIGY6Ci0gICAgICAgIGYud3JpdGUoJ21ldGEvY29uZlxuJykKKyAgICAjIFVzZSB0ZW1wbGF0ZWNvbmYuY2ZnIGZpbGUgZnJvbSBidWlsZGRpciBpZiBleGlzdHMKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhidWlsZGRpciArICcvY29uZi90ZW1wbGF0ZWNvbmYuY2ZnJyk6CisgICAgICAgIHNodXRpbC5jb3B5ZmlsZShidWlsZGRpciArICcvY29uZi90ZW1wbGF0ZWNvbmYuY2ZnJywgYmFzZW91dHBhdGggKyAnL2NvbmYvdGVtcGxhdGVjb25mLmNmZycpCisgICAgZWxzZToKKyAgICAgICAgIyBXcml0ZSBhIHRlbXBsYXRlY29uZi5jZmcKKyAgICAgICAgd2l0aCBvcGVuKGJhc2VvdXRwYXRoICsgJy9jb25mL3RlbXBsYXRlY29uZi5jZmcnLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCdtZXRhL2NvbmZcbicpCiAKICAgICAjIEVuc3VyZSBhbnkgdmFyaWFibGVzIHNldCBmcm9tIHRoZSBleHRlcm5hbCBlbnZpcm9ubWVudCAoYnkgd2F5IG9mCiAgICAgIyBCQl9FTlZfRVhUUkFXSElURSkgYXJlIHNldCBpbiB0aGUgU0RLJ3MgY29uZmlndXJhdGlvbgpAQCAtNjExLDggKzYxNyw4IEBACiAJCWV4aXQgMQogCWZpCiAJIyBUaGUgcmVsb2NhdGlvbiBzY3JpcHQgdXNlZCBieSBidWlsZHRvb2xzIGluc3RhbGxlciByZXF1aXJlcyBweXRob24KLQlpZiAhIGNvbW1hbmQgLXYgcHl0aG9uID4gL2Rldi9udWxsOyB0aGVuCi0JCWVjaG8gIkVSUk9SOiBUaGUgaW5zdGFsbGVyIHJlcXVpcmVzIHB5dGhvbiwgcGxlYXNlIGluc3RhbGwgaXQgZmlyc3QiCisJaWYgISBjb21tYW5kIC12IHB5dGhvbjMgPiAvZGV2L251bGw7IHRoZW4KKwkJZWNobyAiRVJST1I6IFRoZSBpbnN0YWxsZXIgcmVxdWlyZXMgcHl0aG9uMywgcGxlYXNlIGluc3RhbGwgaXQgZmlyc3QiCiAJCWV4aXQgMQogCWZpCiAJbWlzc2luZ191dGlscz0iIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9uLWRpci5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9uLWRpci5iYmNsYXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTFkYzM1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbi1kaXIuYmJjbGFzcworKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotUFlUSE9OX0JBU0VWRVJTSU9OID0gIjIuNyIKLVBZVEhPTl9BQkkgPSAiIgotUFlUSE9OX0RJUiA9ICJweXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0iCi1QWVRIT05fUE4gPSAicHl0aG9uIgotUFlUSE9OX1NJVEVQQUNLQUdFU19ESVIgPSAiJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbjMtZGlyLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9weXRob24zLWRpci5iYmNsYXNzCmluZGV4IDdkZDEzMGIuLjAzNmQ3MTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbjMtZGlyLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9uMy1kaXIuYmJjbGFzcwpAQCAtMSw1ICsxLDUgQEAKLVBZVEhPTl9CQVNFVkVSU0lPTiA9ICIzLjciCi1QWVRIT05fQUJJID0gIm0iCitQWVRIT05fQkFTRVZFUlNJT04gPSAiMy44IgorUFlUSE9OX0FCSSA9ICIiCiBQWVRIT05fRElSID0gInB5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSIKIFBZVEhPTl9QTiA9ICJweXRob24zIgogUFlUSE9OX1NJVEVQQUNLQUdFU19ESVIgPSAiJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbm5hdGl2ZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9ubmF0aXZlLmJiY2xhc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlOTAxOWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9ubmF0aXZlLmJiY2xhc3MKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0KLWluaGVyaXQgcHl0aG9uLWRpcgotCi1QWVRIT049IiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiIKLSMgUFlUSE9OX0VYRUNVVEFCTEUgaXMgdXNlZCBieSBjbWFrZQotUFlUSE9OX0VYRUNVVEFCTEU9IiR7UFlUSE9OfSIKLUVYVFJBTkFUSVZFUEFUSCArPSAicHl0aG9uLW5hdGl2ZSIKLURFUEVORFNfYXBwZW5kID0gIiBweXRob24tbmF0aXZlICIKLQotIyBweXRob24tY29uZmlnIGFuZCBvdGhlciBzY3JpcHRzIGFyZSB1c2luZyBkaXN0dXRpbHMgbW9kdWxlcwotIyB3aGljaCB3ZSBwYXRjaCB0byBhY2Nlc3MgdGhlc2UgdmFyaWFibGVzCi1leHBvcnQgU1RBR0lOR19JTkNESVIKLWV4cG9ydCBTVEFHSU5HX0xJQkRJUgotCi0jIFBhY2thZ2VzIGNhbiB1c2UKLSMgZmluZF9wYWNrYWdlKFB5dGhvbkludGVycCBSRVFVSVJFRCkKLSMgZmluZF9wYWNrYWdlKFB5dGhvbkxpYnMgUkVRVUlSRUQpCi0jIHdoaWNoIGVuZHMgdXAgdXNpbmcgbGlicy9pbmNsdWRlcyBmcm9tIGJ1aWxkIGhvc3QKLSMgVGhlcmVmb3JlIHByZS1lbXB0IHRoYXQgZWZmb3J0Ci1leHBvcnQgUFlUSE9OX0xJQlJBUlk9IiR7U1RBR0lOR19MSUJESVJ9L2xpYiR7UFlUSE9OX0RJUn0ke1BZVEhPTl9BQkl9LnNvIgotZXhwb3J0IFBZVEhPTl9JTkNMVURFX0RJUj0iJHtTVEFHSU5HX0lOQ0RJUn0vJHtQWVRIT05fRElSfSR7UFlUSE9OX0FCSX0iCi0KLSMgc3VwcHJlc3MgaG9zdCB1c2VyJ3Mgc2l0ZS1wYWNrYWdlcyBkaXJzLgotZXhwb3J0IFBZVEhPTk5PVVNFUlNJVEUgPSAiMSIKLQotIyBhdXRvY29uZiBtYWNyb3Mgd2lsbCB1c2UgdGhlaXIgaW50ZXJuYWwgZGVmYXVsdCBwcmVmZXJlbmNlIG90aGVyd2lzZQotZXhwb3J0IFBZVEhPTgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcWVtdS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcWVtdS5iYmNsYXNzCmluZGV4IGY1YzU3ODAuLjU1YmRmZjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3FlbXUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9xZW11LmJiY2xhc3MKQEAgLTE2LDYgKzE2LDggQEAKICAgICAgICAgdGFyZ2V0X2FyY2ggPSAicHBjIgogICAgIGVsaWYgdGFyZ2V0X2FyY2ggPT0gInBvd2VycGM2NCI6CiAgICAgICAgIHRhcmdldF9hcmNoID0gInBwYzY0IgorICAgIGVsaWYgdGFyZ2V0X2FyY2ggPT0gInBvd2VycGM2NGxlIjoKKyAgICAgICAgdGFyZ2V0X2FyY2ggPSAicHBjNjRsZSIKIAogICAgIHJldHVybiAicWVtdS0iICsgdGFyZ2V0X2FyY2gKIApAQCAtNjIsMyArNjQsNCBAQAogUUVNVV9FWFRSQU9QVElPTlNfcHBjZTY1MDAgPSAiIC1jcHUgZTUwMG1jIgogUUVNVV9FWFRSQU9QVElPTlNfcHBjNjRlNjUwMCA9ICIgLWNwdSBlNTAwbWMiCiBRRU1VX0VYVFJBT1BUSU9OU19wcGM3NDAwID0gIiAtY3B1IDc0MDAiCitRRU1VX0VYVFJBT1BUSU9OU19wb3dlcnBjNjRsZSA9ICIgLWNwdSBQT1dFUjgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9xZW11Ym9vdC5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcWVtdWJvb3QuYmJjbGFzcwppbmRleCAxNWE5ZTYzLi4zMTYyZTdhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9xZW11Ym9vdC5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3FlbXVib290LmJiY2xhc3MKQEAgLTM2LDYgKzM2LDkgQEAKICMgICAgICAgICAgICAgICAgICAgIE5vdGUsIHJ1bnFlbXUgd2lsbCByZXBsYWNlIEBNQUNAIHdpdGggYSBwcmVkZWZpbmVkIG1hYywgeW91IGNhbiBzZXQKICMgICAgICAgICAgICAgICAgICAgIGEgY3VzdG9tIG9uZSwgYnV0IHRoYXQgbWF5IGNhdXNlIGNvbmZsaWN0cyB3aGVuIG11bHRpcGxlIHFlbXVzIGFyZQogIyAgICAgICAgICAgICAgICAgICAgcnVubmluZyBvbiB0aGUgc2FtZSBob3N0LgorIyAgICAgICAgICAgICAgICAgICAgTm90ZTogSWYgbW9yZSB0aGFuIG9uZSBpbnRlcmZhY2Ugb2YgdHlwZSAtZGV2aWNlIHZpcnRpby1uZXQtZGV2aWNlIGdldHMgYWRkZWQsCisjICAgICAgICAgICAgICAgICAgICAgICAgICBRQl9ORVRXT1JLX0RFVklDRV9wcmVwZW5kIG1pZ2h0IGJlIHVzZWQsIHNpbmNlIFFlbXUgZW51bWVyYXRlcyB0aGUgZXRoKgorIyAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlcyBpbiByZXZlcnNlIG9yZGVyIHRvIC1kZXZpY2UgYXJndW1lbnRzLgogIwogIyBRQl9UQVBfT1BUOiBuZXRvd3JrIG9wdGlvbiBmb3IgJ3RhcCcgbW9kZSwgZS5nLiwKICMgICAgICAgICAgICAgIi1uZXRkZXYgdGFwLGlkPW5ldDAsaWZuYW1lPUBUQVBALHNjcmlwdD1ubyxkb3duc2NyaXB0PW5vIgpAQCAtNDMsNiArNDYsMTUgQEAKICMKICMgUUJfU0xJUlBfT1BUOiBuZXR3b3JrIG9wdGlvbiBmb3IgU0xJUlAgbW9kZSwgZS5nLiwgLW5ldGRldiB1c2VyLGlkPW5ldDAiCiAjCisjIFFCX0NNRExJTkVfSVBfU0xJUlA6IElmIFFCX05FVFdPUktfREVWSUNFIGFkZHMgbW9yZSB0aGFuIG9uZSBuZXR3b3JrIGludGVyZmFjZSB0byBxZW11LCB1c3VhbGx5IHRoZQorIyAgICAgICAgICAgICAgICAgICAgICBpcD0ga2VybmVsIGNvbWFuZCBsaW5lIGFyZ3VtZW50IG5lZWRzIHRvIGJlIGNoYW5nZWQgYWNjb3JkaW5nbHkuIERldGFpbHMgYXJlIGRvY3VtZW50ZWQKKyMgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGtlcm5lbCBkb2N1ZW1udGF0aW9uIGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzL25mc3Jvb3QudHh0CisjICAgICAgICAgICAgICAgICAgICAgIEV4YW1wbGUgdG8gY29uZmlndXJlIG9ubHkgdGhlIGZpcnN0IGludGVyZmFjZTogImlwPWV0aDA6ZGhjcCIKKyMgUUJfQ01ETElORV9JUF9UQVA6IFRoaXMgcGFyYW1ldGVyIGlzIHNpbWlsYXIgdG8gdGhlIFFCX0NNRExJTkVfSVBfU0xJUlAgcGFyYW1ldGVyLiBTaW5jZSB0aGUgdGFwIGludGVyZmFjZSByZXF1aXJlcworIyAgICAgICAgICAgICAgICAgICAgc3RhdGljIElQIGNvbmZpZ3VyYXRpb24gQENMSUVOVEAgYW5kIEBHQVRFV0FZQCBwbGFjZSBob2xkZXJzIGFyZSByZXBsYWNlZCBieSB0aGUgSVAgYW5kIHRoZSBnYXRld2F5CisjICAgICAgICAgICAgICAgICAgICBhZGRyZXNzIG9mIHRoZSBxZW11IGd1ZXN0IGJ5IHJ1bnFlbXUuCisjICAgICAgICAgICAgICAgICAgICBFeGFtcGxlOiAiaXA9MTkyLjE2OC43LkBDTElFTlRAOjoxOTIuMTY4LjcuQEdBVEVXQVlAOjI1NS4yNTUuMjU1LjA6OmV0aDAiCisjCiAjIFFCX1JPT1RGU19PUFQ6IHVzZWQgYXMgcm9vdGZzLCBlLmcuLAogIyAgICAgICAgICAgICAgICItZHJpdmUgaWQ9ZGlzazAsZmlsZT1AUk9PVEZTQCxpZj1ub25lLGZvcm1hdD1yYXcgLWRldmljZSB2aXJ0aW8tYmxrLWRldmljZSxkcml2ZT1kaXNrMCIKICMgICAgICAgICAgICAgIE5vdGUsIHJ1bnFlbXUgd2lsbCByZXBsYWNlICJAUk9PVEZTQCIgd2l0aCB0aGUgb25lIHdoaWNoIGlzIHVzZWQsIHN1Y2ggYXMgY29yZS1pbWFnZS1taW5pbWFsLXFlbXVhcm02NC5leHQ0LgpAQCAtNTMsNiArNjUsMTAgQEAKICMgICAgICAgICAgICAgICAgICAgIiAtZGV2aWNlIHZpcnRpby1zZXJpYWwtZGV2aWNlIC1jaGFyZGV2IHNvY2tldCxpZD12aXJ0Y29uLHBvcnQ9QFBPUlRALGhvc3Q9MTI3LjAuMC4xIC1kZXZpY2UgdmlydGNvbnNvbGUsY2hhcmRldj12aXJ0Y29uIgogIyAgICAgICAgICAgICAgICAgICBOb3RlLCBydW5xZW11IHdpbGwgcmVwbGFjZSAiQFBPUlRAIiB3aXRoIHRoZSBwb3J0IG51bWJlciB3aGljaCBpcyB1c2VkLgogIworIyBRQl9ST09URlNfRVhUUkFfT1BUOiBleHRyYSBvcHRpb25zIHRvIGJlIGFwcGVuZGVkIHRvIHRoZSByb290ZnMgZGV2aWNlIGluIGNhc2UgdGhlcmUgaXMgbm9uZSBzcGVjaWZpZWQgYnkgUUJfUk9PVEZTX09QVC4KKyMgICAgICAgICAgICAgICAgICAgICAgQ2FuIGJlIHVzZWQgdG8gYXV0b21hdGljYWxseSBkZXRlcm1pbmUgdGhlIGltYWdlIGZyb20gdGhlIG90aGVyIHZhcmlhYmxlcworIyAgICAgICAgICAgICAgICAgICAgICBidXQgZGVmaW5lIHRoaW5ncyBsaW5rICdib290aW5kZXgnIHdoZW4gYm9vdGluZyBmcm9tIEVGSSBvciAncmVhZG9ubHknIHdoZW4gdXNpbmcgc3F1YXNoZnMKKyMgICAgICAgICAgICAgICAgICAgICAgd2l0aG91dCB0aGUgbmVlZCB0byBzcGVjaWZ5IGEgZGVkaWNhdGVkIHFlbXUgY29uZmlndXJhdGlvbgogIyBVc2FnZToKICMgSU1BR0VfQ0xBU1NFUyArPSAicWVtdWJvb3QiCiAjIFNlZSAicnVucWVtdSBoZWxwIiBmb3IgbW9yZSBpbmZvCkBAIC02MywxMyArNzksMTUgQEAKIFFCX0RFRkFVTFRfRlNUWVBFID89ICJleHQ0IgogUUJfT1BUX0FQUEVORCA/PSAiLXNob3ctY3Vyc29yIgogUUJfTkVUV09SS19ERVZJQ0UgPz0gIi1kZXZpY2UgdmlydGlvLW5ldC1wY2ksbmV0ZGV2PW5ldDAsbWFjPUBNQUNAIgorUUJfQ01ETElORV9JUF9TTElSUCA/PSAiaXA9ZGhjcCIKK1FCX0NNRExJTkVfSVBfVEFQID89ICJpcD0xOTIuMTY4LjcuQENMSUVOVEA6OjE5Mi4xNjguNy5AR0FURVdBWUA6MjU1LjI1NS4yNTUuMCIKK1FCX1JPT1RGU19FWFRSQV9PUFQgPz0gIiIKIAogIyBUaGlzIHNob3VsZCBiZSBrZXB0IGFsaWduIHdpdGggUk9PVF9WTQogUUJfRFJJVkVfVFlQRSA/PSAiL2Rldi9zZCIKIAogIyBDcmVhdGUgcWVtdWJvb3QuY29uZgogYWRkdGFzayBkb193cml0ZV9xZW11Ym9vdF9jb25mIGFmdGVyIGRvX3Jvb3RmcyBiZWZvcmUgZG9faW1hZ2UKLUlNR0RFUExPWURJUiA/PSAiJHtXT1JLRElSfS9kZXBsb3ktJHtQTn0taW1hZ2UtY29tcGxldGUiCiAKIGRlZiBxZW11Ym9vdF92YXJzKGQpOgogICAgIGJ1aWxkX3ZhcnMgPSBbJ01BQ0hJTkUnLCAnVFVORV9BUkNIJywgJ0RFUExPWV9ESVJfSU1BR0UnLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcmVwcm9kdWNpYmxlX2J1aWxkLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9yZXByb2R1Y2libGVfYnVpbGQuYmJjbGFzcwppbmRleCAzOWI2ZTQwLi44ZGE0MGY2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9yZXByb2R1Y2libGVfYnVpbGQuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9yZXByb2R1Y2libGVfYnVpbGQuYmJjbGFzcwpAQCAtNDQsMTAgKzQ0LDEyIEBACiBTU1RBVEVUQVNLUyArPSAiZG9fZGVwbG95X3NvdXJjZV9kYXRlX2Vwb2NoIgogCiBkb19kZXBsb3lfc291cmNlX2RhdGVfZXBvY2ggKCkgewotICAgIGVjaG8gIkRlcGxveWluZyBTREUgdG8gJHtTREVfRElSfS4iCiAgICAgbWtkaXIgLXAgJHtTREVfREVQTE9ZRElSfQogICAgIGlmIFsgLWUgJHtTREVfRklMRX0gXTsgdGhlbgorICAgICAgICBlY2hvICJEZXBsb3lpbmcgU0RFIGZyb20gJHtTREVfRklMRX0gLT4gJHtTREVfREVQTE9ZRElSfS4iCiAgICAgICAgIGNwIC1wICR7U0RFX0ZJTEV9ICR7U0RFX0RFUExPWURJUn0vX19zb3VyY2VfZGF0ZV9lcG9jaC50eHQKKyAgICBlbHNlCisgICAgICAgIGVjaG8gIiR7U0RFX0ZJTEV9IG5vdCBmb3VuZCEiCiAgICAgZmkKIH0KIApAQCAtNTYsNyArNTgsMTEgQEAKICAgICBiYi51dGlscy5ta2RpcmhpZXIoZC5nZXRWYXIoJ1NERV9ESVInKSkKICAgICBzZGVfZmlsZSA9IG9zLnBhdGguam9pbihkLmdldFZhcignU0RFX0RFUExPWURJUicpLCAnX19zb3VyY2VfZGF0ZV9lcG9jaC50eHQnKQogICAgIGlmIG9zLnBhdGguZXhpc3RzKHNkZV9maWxlKToKLSAgICAgICAgb3MucmVuYW1lKHNkZV9maWxlLCBkLmdldFZhcignU0RFX0ZJTEUnKSkKKyAgICAgICAgdGFyZ2V0ID0gZC5nZXRWYXIoJ1NERV9GSUxFJykKKyAgICAgICAgYmIuZGVidWcoMSwgIk1vdmluZyBzZXRzY2VuZSBTREUgZmlsZSAlcyAtPiAlcyIgJSAoc2RlX2ZpbGUsIHRhcmdldCkpCisgICAgICAgIG9zLnJlbmFtZShzZGVfZmlsZSwgdGFyZ2V0KQorICAgIGVsc2U6CisgICAgICAgIGJiLmRlYnVnKDEsICIlcyBub3QgZm91bmQhIiAlIHNkZV9maWxlKQogfQogCiBkb19kZXBsb3lfc291cmNlX2RhdGVfZXBvY2hbZGlyc10gPSAiJHtTREVfREVQTE9ZRElSfSIKQEAgLTE0NCwxMSArMTUwLDEyIEBACiAgICAgYmIuZGVidWcoMSwgIk5vIHRhcmJhbGwgb3IgZ2l0IHJlcG8gZm91bmQgdG8gZGV0ZXJtaW5lIFNPVVJDRV9EQVRFX0VQT0NIIikKICAgICByZXR1cm4gMAogCi1weXRob24gZG9fY3JlYXRlX3NvdXJjZV9kYXRlX2Vwb2NoX3N0YW1wKCkgeworcHl0aG9uIGNyZWF0ZV9zb3VyY2VfZGF0ZV9lcG9jaF9zdGFtcCgpIHsKICAgICBlcG9jaGZpbGUgPSBkLmdldFZhcignU0RFX0ZJTEUnKQorICAgICMgSWYgaXQgZXhpc3RzIHdlIG5lZWQgdG8gcmVnZW5lcmF0ZSBhcyB0aGUgc291cmNlcyBtYXkgaGF2ZSBjaGFuZ2VkCiAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZXBvY2hmaWxlKToKLSAgICAgICAgYmIuZGVidWcoMSwgIlJldXNpbmcgU09VUkNFX0RBVEVfRVBPQ0ggZnJvbTogJXMiICUgZXBvY2hmaWxlKQotICAgICAgICByZXR1cm4KKyAgICAgICAgYmIuZGVidWcoMSwgIkRlbGV0aW5nIGV4aXN0aW5nIFNPVVJDRV9EQVRFX0VQT0NIIGZyb206ICVzIiAlIGVwb2NoZmlsZSkKKyAgICAgICAgb3MucmVtb3ZlKGVwb2NoZmlsZSkKIAogICAgIHNvdXJjZWRpciA9IGQuZ2V0VmFyKCdTJykKICAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9ICgKQEAgLTE2NCwxNiArMTcxLDMyIEBACiAgICAgICAgIGYud3JpdGUoc3RyKHNvdXJjZV9kYXRlX2Vwb2NoKSkKIH0KIAorZGVmIGdldF9zb3VyY2VfZGF0ZV9lcG9jaF92YWx1ZShkKToKKyAgICBjYWNoZWQgPSBkLmdldFZhcignX19DQUNIRURfU09VUkNFX0RBVEVfRVBPQ0gnKQorICAgIGlmIGNhY2hlZDoKKyAgICAgICAgcmV0dXJuIGNhY2hlZAorCisgICAgZXBvY2hmaWxlID0gZC5nZXRWYXIoJ1NERV9GSUxFJykKKyAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IDAKKyAgICBpZiBvcy5wYXRoLmlzZmlsZShlcG9jaGZpbGUpOgorICAgICAgICB3aXRoIG9wZW4oZXBvY2hmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICBzID0gZi5yZWFkKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IGludChzKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgYmIud2FybigiU09VUkNFX0RBVEVfRVBPQ0ggdmFsdWUgJyVzJyBpcyBpbnZhbGlkLiBSZXZlcnRpbmcgdG8gMCIgJSBzKQorICAgICAgICAgICAgICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gMAorICAgICAgICBiYi5kZWJ1ZygxLCAiU09VUkNFX0RBVEVfRVBPQ0g6ICVkIiAlIHNvdXJjZV9kYXRlX2Vwb2NoKQorICAgIGVsc2U6CisgICAgICAgIGJiLmRlYnVnKDEsICJDYW5ub3QgZmluZCAlcy4gU09VUkNFX0RBVEVfRVBPQ0ggd2lsbCBkZWZhdWx0IHRvICVkIiAlIChlcG9jaGZpbGUsIHNvdXJjZV9kYXRlX2Vwb2NoKSkKKworICAgIGQuc2V0VmFyKCdfX0NBQ0hFRF9TT1VSQ0VfREFURV9FUE9DSCcsIHN0cihzb3VyY2VfZGF0ZV9lcG9jaCkpCisgICAgcmV0dXJuIHN0cihzb3VyY2VfZGF0ZV9lcG9jaCkKKworZXhwb3J0IFNPVVJDRV9EQVRFX0VQT0NIID89ICIke0BnZXRfc291cmNlX2RhdGVfZXBvY2hfdmFsdWUoZCl9IgogQkJfSEFTSEJBU0VfV0hJVEVMSVNUICs9ICJTT1VSQ0VfREFURV9FUE9DSCIKIAogcHl0aG9uICgpIHsKICAgICBpZiBkLmdldFZhcignQlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTJykgPT0gJzEnOgotICAgICAgICBkLmFwcGVuZFZhckZsYWcoImRvX3VucGFjayIsICJwb3N0ZnVuY3MiLCAiIGRvX2NyZWF0ZV9zb3VyY2VfZGF0ZV9lcG9jaF9zdGFtcCIpCi0gICAgICAgIGVwb2NoZmlsZSA9IGQuZ2V0VmFyKCdTREVfRklMRScpCi0gICAgICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gIjAiCi0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGVwb2NoZmlsZSk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4oZXBvY2hmaWxlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICAgICAgc291cmNlX2RhdGVfZXBvY2ggPSBmLnJlYWQoKQotICAgICAgICAgICAgYmIuZGVidWcoMSwgIlNPVVJDRV9EQVRFX0VQT0NIOiAlcyIgJSBzb3VyY2VfZGF0ZV9lcG9jaCkKLSAgICAgICAgZC5zZXRWYXIoJ1NPVVJDRV9EQVRFX0VQT0NIJywgc291cmNlX2RhdGVfZXBvY2gpCisgICAgICAgIGQuYXBwZW5kVmFyRmxhZygiZG9fdW5wYWNrIiwgInBvc3RmdW5jcyIsICIgY3JlYXRlX3NvdXJjZV9kYXRlX2Vwb2NoX3N0YW1wIikKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3JlcHJvZHVjaWJsZV9idWlsZF9zaW1wbGUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3JlcHJvZHVjaWJsZV9idWlsZF9zaW1wbGUuYmJjbGFzcwppbmRleCA4YTYwZGVlLi4zOTMzNzI5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9yZXByb2R1Y2libGVfYnVpbGRfc2ltcGxlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcmVwcm9kdWNpYmxlX2J1aWxkX3NpbXBsZS5iYmNsYXNzCkBAIC03LDQgKzcsMyBAQAogZXhwb3J0IFNPVVJDRV9EQVRFX0VQT0NIID8/PSAiMTUyMDU5ODg5NiIKIAogUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlMgPz89ICIxNTIwNTk4ODk2IgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9zYW5pdHkuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Nhbml0eS5iYmNsYXNzCmluZGV4IDYzYWI2Y2YuLjllODcxMDEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3Nhbml0eS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Nhbml0eS5iYmNsYXNzCkBAIC0yLDcgKzIsNyBAQAogIyBTYW5pdHkgY2hlY2sgdGhlIHVzZXJzIHNldHVwIGZvciBjb21tb24gbWlzY29uZmlndXJhdGlvbnMKICMKIAotU0FOSVRZX1JFUVVJUkVEX1VUSUxJVElFUyA/PSAicGF0Y2ggZGlmZnN0YXQgbWFrZWluZm8gZ2l0IGJ6aXAyIHRhciBcCitTQU5JVFlfUkVRVUlSRURfVVRJTElUSUVTID89ICJwYXRjaCBkaWZmc3RhdCBnaXQgYnppcDIgdGFyIFwKICAgICBnemlwIGdhd2sgY2hycGF0aCB3Z2V0IGNwaW8gcGVybCBmaWxlIHdoaWNoIgogCiBkZWYgYmJsYXllcnNfY29uZl9maWxlKGQpOgpAQCAtNTExLDE0ICs1MTEsMzggQEAKICAgICByZXR1cm4gTm9uZQogCiAKLSMgQ2hlY2sgaWYgd2UncmUgcnVubmluZyBvbiBXU0wgKFdpbmRvd3MgU3Vic3lzdGVtIGZvciBMaW51eCkuIEl0cyBrbm93biBub3QgdG8KLSMgd29yayBidXQgd2Ugc2hvdWxkIHRlbGwgdGhlIHVzZXIgdGhhdCB1cGZyb250LgorIyBDaGVjayBpZiB3ZSdyZSBydW5uaW5nIG9uIFdTTCAoV2luZG93cyBTdWJzeXN0ZW0gZm9yIExpbnV4KS4KKyMgV1NMdjEgaXMga25vd24gbm90IHRvIHdvcmsgYnV0IFdTTHYyIHNob3VsZCB3b3JrIHByb3Blcmx5IGFzCisjIGxvbmcgYXMgdGhlIFZIRFggZmlsZSBpcyBvcHRpbWl6ZWQgb2Z0ZW4sIGxldCB0aGUgdXNlciBrbm93CisjIHVwZnJvbnQuCisjIE1vcmUgaW5mb3JtYXRpb24gb24gaW5zdGFsbGluZyBXU0x2MiBhdDoKKyMgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93c2wvd3NsMi1pbnN0YWxsCiBkZWYgY2hlY2tfd3NsKGQpOgogICAgIHdpdGggb3BlbigiL3Byb2MvdmVyc2lvbiIsICJyIikgYXMgZjoKICAgICAgICAgdmVyZGF0YSA9IGYucmVhZGxpbmVzKCkKICAgICBmb3IgbCBpbiB2ZXJkYXRhOgogICAgICAgICBpZiAiTWljcm9zb2Z0IiBpbiBsOgotICAgICAgICAgICAgcmV0dXJuICJPcGVuRW1iZWRkZWQgZG9lc24ndCB3b3JrIHVuZGVyIFdTTCBhdCB0aGlzIHRpbWUsIHNvcnJ5IgorICAgICAgICAgICAgcmV0dXJuICJPcGVuRW1iZWRkZWQgZG9lc24ndCB3b3JrIHVuZGVyIFdTTHYxLCBwbGVhc2UgdXBncmFkZSB0byBXU0x2MiBpZiB5b3Ugd2FudCB0byBydW4gYnVpbGRzIG9uIFdpbmRvd3MiCisgICAgICAgIGVsaWYgIm1pY3Jvc29mdCIgaW4gbDoKKyAgICAgICAgICAgIGJiLndhcm4oIllvdSBhcmUgcnVubmluZyBiaXRiYWtlIHVuZGVyIFdTTHYyLCB0aGlzIHdvcmtzIHByb3Blcmx5IGJ1dCB5b3Ugc2hvdWxkIG9wdGltaXplIHlvdXIgVkhEWCBmaWxlIGV2ZW50dWFsbHkgdG8gYXZvaWQgcnVubmluZyBvdXQgb2Ygc3RvcmFnZSBzcGFjZSIpCisgICAgcmV0dXJuIE5vbmUKKworIyBSZXF1aXJlIGF0IGxlYXN0IGdjYyB2ZXJzaW9uIDUuMC4KKyMKKyMgVGhpcyBjYW4gYmUgZml4ZWQgb24gQ2VudE9TLTcgd2l0aCBkZXZ0b29sc2V0LTYrCisjIGh0dHBzOi8vd3d3LnNvZnR3YXJlY29sbGVjdGlvbnMub3JnL2VuL3NjbHMvcmhzY2wvZGV2dG9vbHNldC02LworIworIyBBIGxlc3MgaW52YXNpdmUgZml4IGlzIHdpdGggc2NyaXB0cy9pbnN0YWxsLWJ1aWxkdG9vbHMgKG9yIHdpdGggdXNlcgorIyBidWlsdCBidWlsZHRvb2xzLWV4dGVuZGVkLXRhcmJhbGwpCisjCitkZWYgY2hlY2tfZ2NjX3ZlcnNpb24oc2FuaXR5X2RhdGEpOgorICAgIGZyb20gZGlzdHV0aWxzLnZlcnNpb24gaW1wb3J0IExvb3NlVmVyc2lvbgorICAgIGltcG9ydCBzdWJwcm9jZXNzCisgICAgCisgICAgYnVpbGRfY2MsIHZlcnNpb24gPSBvZS51dGlscy5nZXRfaG9zdF9jb21waWxlcl92ZXJzaW9uKHNhbml0eV9kYXRhKQorICAgIGlmIGJ1aWxkX2NjLnN0cmlwKCkgPT0gImdjYyI6CisgICAgICAgIGlmIExvb3NlVmVyc2lvbih2ZXJzaW9uKSA8IExvb3NlVmVyc2lvbigiNS4wIik6CisgICAgICAgICAgICByZXR1cm4gIllvdXIgdmVyc2lvbiBvZiBnY2MgaXMgb2xkZXIgdGhhbiA1LjAgYW5kIHdpbGwgYnJlYWsgYnVpbGRzLiBQbGVhc2UgaW5zdGFsbCBhIG5ld2VyIHZlcnNpb24gb2YgZ2NjICh5b3UgY291bGQgdXNlIHRoZSBwcm9qZWN0J3MgYnVpbGR0b29scy1leHRlbmRlZC10YXJiYWxsIG9yIHVzZSBzY3JpcHRzL2luc3RhbGwtYnVpbGR0b29scykuXG4iCiAgICAgcmV0dXJuIE5vbmUKIAogIyBUYXIgdmVyc2lvbiAxLjI0IGFuZCBvbndhcmRzIGhhbmRsZSBvdmVyd3JpdGluZyBzeW1saW5rcyBjb3JyZWN0bHkKQEAgLTUzMiwxMCArNTU2LDggQEAKICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgcmV0dXJuICJVbmFibGUgdG8gZXhlY3V0ZSB0YXIgLS12ZXJzaW9uLCBleGl0IGNvZGUgJWRcbiVzXG4iICUgKGUucmV0dXJuY29kZSwgZS5vdXRwdXQpCiAgICAgdmVyc2lvbiA9IHJlc3VsdC5zcGxpdCgpWzNdCi0gICAgaWYgTG9vc2VWZXJzaW9uKHZlcnNpb24pIDwgTG9vc2VWZXJzaW9uKCIxLjI0Iik6Ci0gICAgICAgIHJldHVybiAiWW91ciB2ZXJzaW9uIG9mIHRhciBpcyBvbGRlciB0aGFuIDEuMjQgYW5kIGhhcyBidWdzIHdoaWNoIHdpbGwgYnJlYWsgYnVpbGRzLiBQbGVhc2UgaW5zdGFsbCBhIG5ld2VyIHZlcnNpb24gb2YgdGFyICgxLjI4KykuXG4iCiAgICAgaWYgTG9vc2VWZXJzaW9uKHZlcnNpb24pIDwgTG9vc2VWZXJzaW9uKCIxLjI4Iik6Ci0gICAgICAgIHJldHVybiAiWW91ciB2ZXJzaW9uIG9mIHRhciBpcyBvbGRlciB0aGFuIDEuMjggYW5kIGRvZXMgbm90IGhhdmUgdGhlIHN1cHBvcnQgbmVlZGVkIHRvIGVuYWJsZSByZXByb2R1Y2libGUgYnVpbGRzLiBQbGVhc2UgaW5zdGFsbCBhIG5ld2VyIHZlcnNpb24gb2YgdGFyICh5b3UgY291bGQgdXNlIHRoZSBwcm9qZWN0cyBidWlsZHRvb2xzLXRhcmJhbGwgZnJvbSBvdXIgbGFzdCByZWxlYXNlKS5cbiIKKyAgICAgICAgcmV0dXJuICJZb3VyIHZlcnNpb24gb2YgdGFyIGlzIG9sZGVyIHRoYW4gMS4yOCBhbmQgZG9lcyBub3QgaGF2ZSB0aGUgc3VwcG9ydCBuZWVkZWQgdG8gZW5hYmxlIHJlcHJvZHVjaWJsZSBidWlsZHMuIFBsZWFzZSBpbnN0YWxsIGEgbmV3ZXIgdmVyc2lvbiBvZiB0YXIgKHlvdSBjb3VsZCB1c2UgdGhlIHByb2plY3QncyBidWlsZHRvb2xzLXRhcmJhbGwgZnJvbSBvdXIgbGFzdCByZWxlYXNlIG9yIHVzZSBzY3JpcHRzL2luc3RhbGwtYnVpbGR0b29scykuXG4iCiAgICAgcmV0dXJuIE5vbmUKIAogIyBXZSB1c2UgZ2l0IHBhcmFtZXRlcnMgYW5kIGZ1bmN0aW9uYWxpdHkgb25seSBmb3VuZCBpbiAxLjcuOCBvciBsYXRlcgpAQCAtNjM0LDYgKzY1Niw3IEBACiAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6CiAgICAgICAgIHN0YXR1cy5hZGRyZXN1bHQoJ1lvdXIgUHl0aG9uIDMgaXMgbm90IGEgZnVsbCBpbnN0YWxsLiBQbGVhc2UgaW5zdGFsbCB0aGUgbW9kdWxlICVzIChzZWUgdGhlIEdldHRpbmcgU3RhcnRlZCBndWlkZSBmb3IgZnVydGhlciBpbmZvcm1hdGlvbikuXG4nICUgZS5uYW1lKQogCisgICAgc3RhdHVzLmFkZHJlc3VsdChjaGVja19nY2NfdmVyc2lvbihkKSkKICAgICBzdGF0dXMuYWRkcmVzdWx0KGNoZWNrX21ha2VfdmVyc2lvbihkKSkKICAgICBzdGF0dXMuYWRkcmVzdWx0KGNoZWNrX3BhdGNoX3ZlcnNpb24oZCkpCiAgICAgc3RhdHVzLmFkZHJlc3VsdChjaGVja190YXJfdmVyc2lvbihkKSkKQEAgLTgwNiw3ICs4MjksNyBAQAogICAgICMgSWYgU0RLX1ZFTkRPUiBsb29rcyBsaWtlICItbXktc2RrIiB0aGVuIHRoZSB0cmlwbGVzIGFyZSBiYWRseSBmb3JtZWQgc28gZmFpbCBlYXJseQogICAgIHNka3ZlbmRvciA9IGQuZ2V0VmFyKCJTREtfVkVORE9SIikKICAgICBpZiBub3QgKHNka3ZlbmRvci5zdGFydHN3aXRoKCItIikgYW5kIHNka3ZlbmRvci5jb3VudCgiLSIpID09IDEpOgotICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCJTREtfVkVORE9SIHNob3VsZCBiZSBvZiB0aGUgZm9ybSAnLWZvb3Nkaycgd2l0aCBhIHNpbmdsZSBkYXNoXG4iKQorICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCJTREtfVkVORE9SIHNob3VsZCBiZSBvZiB0aGUgZm9ybSAnLWZvb3Nkaycgd2l0aCBhIHNpbmdsZSBkYXNoOyBmb3VuZCAnJXMnXG4iICUgc2RrdmVuZG9yKQogCiAgICAgY2hlY2tfc3VwcG9ydGVkX2Rpc3RybyhkKQogCkBAIC05MjksNyArOTUyLDcgQEAKICAgICBsYXN0X3RtcGRpciA9ICIiCiAgICAgbGFzdF9zc3RhdGVfZGlyID0gIiIKICAgICBsYXN0X25hdGl2ZWxzYnN0ciA9ICIiCi0gICAgc2FuaXR5dmVyZmlsZSA9IHNhbml0eV9kYXRhLmV4cGFuZCgiJHtUT1BESVJ9L2NvbmYvc2FuaXR5X2luZm8iKQorICAgIHNhbml0eXZlcmZpbGUgPSBzYW5pdHlfZGF0YS5leHBhbmQoIiR7VE9QRElSfS9jYWNoZS9zYW5pdHlfaW5mbyIpCiAgICAgaWYgb3MucGF0aC5leGlzdHMoc2FuaXR5dmVyZmlsZSk6CiAgICAgICAgIHdpdGggb3BlbihzYW5pdHl2ZXJmaWxlLCAncicpIGFzIGY6CiAgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvc2V0dXB0b29scy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvc2V0dXB0b29scy5iYmNsYXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTIzZWEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3NldHVwdG9vbHMuYmJjbGFzcworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotaW5oZXJpdCBkaXN0dXRpbHMKLQotREVQRU5EUyArPSAicHl0aG9uLXNldHVwdG9vbHMtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvc2l0ZWluZm8uYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3NpdGVpbmZvLmJiY2xhc3MKaW5kZXggNDExZTcwNC4uMWEwNDhjMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvc2l0ZWluZm8uYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9zaXRlaW5mby5iYmNsYXNzCkBAIC0zNSw3ICszNSw2IEBACiAgICAgICAgICJsbTMyIjogImVuZGlhbi1iaWcgYml0LTMyIiwKICAgICAgICAgIm02OGsiOiAiZW5kaWFuLWJpZyBiaXQtMzIiLAogICAgICAgICAibWljcm9ibGF6ZSI6ICJlbmRpYW4tYmlnIGJpdC0zMiBtaWNyb2JsYXplLWNvbW1vbiIsCi0gICAgICAgICJtaWNyb2JsYXplZWIiOiAiZW5kaWFuLWJpZyBiaXQtMzIgbWljcm9ibGF6ZS1jb21tb24iLAogICAgICAgICAibWljcm9ibGF6ZWVsIjogImVuZGlhbi1saXR0bGUgYml0LTMyIG1pY3JvYmxhemUtY29tbW9uIiwKICAgICAgICAgIm1pcHMiOiAiZW5kaWFuLWJpZyBiaXQtMzIgbWlwcy1jb21tb24iLAogICAgICAgICAibWlwczY0IjogImVuZGlhbi1iaWcgYml0LTY0IG1pcHMtY29tbW9uIiwKQEAgLTQ4LDYgKzQ3LDcgQEAKICAgICAgICAgInBvd2VycGMiOiAiZW5kaWFuLWJpZyBiaXQtMzIgcG93ZXJwYy1jb21tb24iLAogICAgICAgICAibmlvczIiOiAiZW5kaWFuLWxpdHRsZSBiaXQtMzIgbmlvczItY29tbW9uIiwKICAgICAgICAgInBvd2VycGM2NCI6ICJlbmRpYW4tYmlnIGJpdC02NCBwb3dlcnBjLWNvbW1vbiIsCisgICAgICAgICJwb3dlcnBjNjRsZSI6ICJlbmRpYW4tbGl0dGxlIGJpdC02NCBwb3dlcnBjLWNvbW1vbiIsCiAgICAgICAgICJwcGMiOiAiZW5kaWFuLWJpZyBiaXQtMzIgcG93ZXJwYy1jb21tb24iLAogICAgICAgICAicHBjNjQiOiAiZW5kaWFuLWJpZyBiaXQtNjQgcG93ZXJwYy1jb21tb24iLAogICAgICAgICAicHBjNjRsZSIgOiAiZW5kaWFuLWxpdHRsZSBiaXQtNjQgcG93ZXJwYy1jb21tb24iLApAQCAtODgsOCArODgsNiBAQAogICAgICAgICAiYXJtLWxpbnV4LW11c2xlYWJpIjogImFybS1saW51eCIsCiAgICAgICAgICJhcm1lYi1saW51eC1nbnVlYWJpIjogImFybWViLWxpbnV4IiwKICAgICAgICAgImFybWViLWxpbnV4LW11c2xlYWJpIjogImFybWViLWxpbnV4IiwKLSAgICAgICAgIm1pY3JvYmxhemVlYi1saW51eCIgOiAibWljcm9ibGF6ZS1saW51eCIsCi0gICAgICAgICJtaWNyb2JsYXplZWItbGludXgtbXVzbCIgOiAibWljcm9ibGF6ZS1saW51eCIsCiAgICAgICAgICJtaWNyb2JsYXplZWwtbGludXgiIDogIm1pY3JvYmxhemUtbGludXgiLAogICAgICAgICAibWljcm9ibGF6ZWVsLWxpbnV4LW11c2wiIDogIm1pY3JvYmxhemUtbGludXgiLAogICAgICAgICAibWlwcy1saW51eC1tdXNsIjogIm1pcHMtbGludXgiLApAQCAtMTA2LDggKzEwNCwxMCBAQAogICAgICAgICAicG93ZXJwYy1saW51eC1tdXNsc3BlIjogInBvd2VycGMtbGludXggcG93ZXJwYzMyLWxpbnV4IiwKICAgICAgICAgInBvd2VycGM2NC1saW51eC1nbnVzcGUiOiAicG93ZXJwYy1saW51eCBwb3dlcnBjNjQtbGludXgiLAogICAgICAgICAicG93ZXJwYzY0LWxpbnV4LW11c2xzcGUiOiAicG93ZXJwYy1saW51eCBwb3dlcnBjNjQtbGludXgiLAotICAgICAgICAicG93ZXJwYzY0LWxpbnV4IjogInBvd2VycGMtbGludXgiLAotICAgICAgICAicG93ZXJwYzY0LWxpbnV4LW11c2wiOiAicG93ZXJwYy1saW51eCIsCisgICAgICAgICJwb3dlcnBjNjQtbGludXgiOiAicG93ZXJwYy1saW51eCBwb3dlcnBjNjQtbGludXgiLAorICAgICAgICAicG93ZXJwYzY0LWxpbnV4LW11c2wiOiAicG93ZXJwYy1saW51eCBwb3dlcnBjNjQtbGludXgiLAorICAgICAgICAicG93ZXJwYzY0bGUtbGludXgiOiAicG93ZXJwYy1saW51eCBwb3dlcnBjNjQtbGludXgiLAorICAgICAgICAicG93ZXJwYzY0bGUtbGludXgtbXVzbCI6ICJwb3dlcnBjLWxpbnV4IHBvd2VycGM2NC1saW51eCIsCiAgICAgICAgICJyaXNjdjMyLWxpbnV4IjogInJpc2N2MzItbGludXgiLAogICAgICAgICAicmlzY3YzMi1saW51eC1tdXNsIjogInJpc2N2MzItbGludXgiLAogICAgICAgICAicmlzY3Y2NC1saW51eCI6ICJyaXNjdjY0LWxpbnV4IiwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3NzdGF0ZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvc3N0YXRlLmJiY2xhc3MKaW5kZXggNjQ4MDhmOC4uYzczYzNiNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvc3N0YXRlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvc3N0YXRlLmJiY2xhc3MKQEAgLTMsMTkgKzMsNDEgQEAKIFNTVEFURV9NQU5JRkVTVFMgPz0gIiR7VE1QRElSfS9zc3RhdGUtY29udHJvbCIKIFNTVEFURV9NQU5GSUxFUFJFRklYID0gIiR7U1NUQVRFX01BTklGRVNUU30vbWFuaWZlc3QtJHtTU1RBVEVfTUFOTUFDSH0tJHtQTn0iCiAKLWRlZiBnZW5lcmF0ZV9zc3RhdGVmbihzcGVjLCBoYXNoLCBkKToKK2RlZiBnZW5lcmF0ZV9zc3RhdGVmbihzcGVjLCBoYXNoLCB0YXNrbmFtZSwgc2lnaW5mbywgZCk6CisgICAgaWYgdGFza25hbWUgaXMgTm9uZToKKyAgICAgICByZXR1cm4gIiIKKyAgICBleHRlbnNpb24gPSAiLnRneiIKKyAgICAjIDggY2hhcnMgcmVzZXJ2ZWQgZm9yIHNpZ2luZm8KKyAgICBsaW1pdCA9IDI1NCAtIDgKKyAgICBpZiBzaWdpbmZvOgorICAgICAgICBsaW1pdCA9IDI1NAorICAgICAgICBleHRlbnNpb24gPSAiLnRnei5zaWdpbmZvIgogICAgIGlmIG5vdCBoYXNoOgogICAgICAgICBoYXNoID0gIklOVkFMSUQiCi0gICAgcmV0dXJuIGhhc2hbOjJdICsgIi8iICsgc3BlYyArIGhhc2gKKyAgICBmbiA9IHNwZWMgKyBoYXNoICsgIl8iICsgdGFza25hbWUgKyBleHRlbnNpb24KKyAgICAjIElmIHRoZSBmaWxlbmFtZSBpcyB0b28gbG9uZywgYXR0ZW1wdCB0byByZWR1Y2UgaXQKKyAgICBpZiBsZW4oZm4pID4gbGltaXQ6CisgICAgICAgIGNvbXBvbmVudHMgPSBzcGVjLnNwbGl0KCI6IikKKyAgICAgICAgIyBGaWVsZHMgMCw1LDYgYXJlIG1hbmRhdG9yeSwgMSBpcyBtb3N0IHVzZWZ1bCwgMiwzLDQgYXJlIGp1c3QgZm9yIGluZm9ybWF0aW9uCisgICAgICAgICMgNyBpcyBmb3IgdGhlIHNlcGFyYXRvcnMKKyAgICAgICAgYXZhaWwgPSAoMjU0IC0gbGVuKGhhc2ggKyAiXyIgKyB0YXNrbmFtZSArIGV4dGVuc2lvbikgLSBsZW4oY29tcG9uZW50c1swXSkgLSBsZW4oY29tcG9uZW50c1sxXSkgLSBsZW4oY29tcG9uZW50c1s1XSkgLSBsZW4oY29tcG9uZW50c1s2XSkgLSA3KSAvLyAzCisgICAgICAgIGNvbXBvbmVudHNbMl0gPSBjb21wb25lbnRzWzJdWzphdmFpbF0KKyAgICAgICAgY29tcG9uZW50c1szXSA9IGNvbXBvbmVudHNbM11bOmF2YWlsXQorICAgICAgICBjb21wb25lbnRzWzRdID0gY29tcG9uZW50c1s0XVs6YXZhaWxdCisgICAgICAgIHNwZWMgPSAiOiIuam9pbihjb21wb25lbnRzKQorICAgICAgICBmbiA9IHNwZWMgKyBoYXNoICsgIl8iICsgdGFza25hbWUgKyBleHRlbnNpb24KKyAgICAgICAgaWYgbGVuKGZuKSA+IGxpbWl0OgorICAgICAgICAgICAgYmIuZmF0YWwoIlVuYWJsZSB0byByZWR1Y2Ugc3N0YXRlIG5hbWUgdG8gbGVzcyB0aGFuIDI1NSBjaGFyYXJhY3RlcnMiKQorICAgIHJldHVybiBoYXNoWzoyXSArICIvIiArIGhhc2hbMjo0XSArICIvIiArIGZuCiAKIFNTVEFURV9QS0dBUkNIICAgID0gIiR7UEFDS0FHRV9BUkNIfSIKIFNTVEFURV9QS0dTUEVDICAgID0gInNzdGF0ZToke1BOfToke1BBQ0tBR0VfQVJDSH0ke1RBUkdFVF9WRU5ET1J9LSR7VEFSR0VUX09TfToke1BWfToke1BSfToke1NTVEFURV9QS0dBUkNIfToke1NTVEFURV9WRVJTSU9OfToiCiBTU1RBVEVfU1dTUEVDICAgICA9ICJzc3RhdGU6JHtQTn06OiR7UFZ9OiR7UFJ9Ojoke1NTVEFURV9WRVJTSU9OfToiCi1TU1RBVEVfUEtHTkFNRSAgICA9ICIke1NTVEFURV9FWFRSQVBBVEh9JHtAZ2VuZXJhdGVfc3N0YXRlZm4oZC5nZXRWYXIoJ1NTVEFURV9QS0dTUEVDJyksIGQuZ2V0VmFyKCdCQl9VTklIQVNIJyksIGQpfSIKK1NTVEFURV9QS0dOQU1FICAgID0gIiR7U1NUQVRFX0VYVFJBUEFUSH0ke0BnZW5lcmF0ZV9zc3RhdGVmbihkLmdldFZhcignU1NUQVRFX1BLR1NQRUMnKSwgZC5nZXRWYXIoJ0JCX1VOSUhBU0gnKSwgZC5nZXRWYXIoJ1NTVEFURV9DVVJSVEFTSycpLCBGYWxzZSwgZCl9IgogU1NUQVRFX1BLRyAgICAgICAgPSAiJHtTU1RBVEVfRElSfS8ke1NTVEFURV9QS0dOQU1FfSIKIFNTVEFURV9FWFRSQVBBVEggICA9ICIiCiBTU1RBVEVfRVhUUkFQQVRIV0lMRENBUkQgPSAiIgotU1NUQVRFX1BBVEhTUEVDICAgPSAiJHtTU1RBVEVfRElSfS8ke1NTVEFURV9FWFRSQVBBVEhXSUxEQ0FSRH0qLyR7U1NUQVRFX1BLR1NQRUN9IgorU1NUQVRFX1BBVEhTUEVDICAgPSAiJHtTU1RBVEVfRElSfS8ke1NTVEFURV9FWFRSQVBBVEhXSUxEQ0FSRH0qLyovJHtTU1RBVEVfUEtHU1BFQ30qXyR7U1NUQVRFX1BBVEhfQ1VSUlRBU0t9LnRneioiCiAKICMgZXhwbGljaXRseSBtYWtlIFBWIHRvIGRlcGVuZCBvbiBldmFsdWF0ZWQgdmFsdWUgb2YgUFYgdmFyaWFibGUKIFBWW3ZhcmRlcHZhbHVlXSA9ICIke1BWfSIKQEAgLTMxNyw4ICszMzksOSBAQAogICAgIGZyb20gb2UuZ3BnX3NpZ24gaW1wb3J0IGdldF9zaWduZXIKIAogICAgIHNzdGF0ZWluc3QgPSBkLmV4cGFuZCgiJHtXT1JLRElSfS9zc3RhdGUtaW5zdGFsbC0lcy8iICUgc3NbJ3Rhc2snXSkKLSAgICBzc3RhdGVmZXRjaCA9IGQuZ2V0VmFyKCdTU1RBVEVfUEtHTkFNRScpICsgJ18nICsgc3NbJ3Rhc2snXSArICIudGd6IgotICAgIHNzdGF0ZXBrZyA9IGQuZ2V0VmFyKCdTU1RBVEVfUEtHJykgKyAnXycgKyBzc1sndGFzayddICsgIi50Z3oiCisgICAgZC5zZXRWYXIoIlNTVEFURV9DVVJSVEFTSyIsIHNzWyd0YXNrJ10pCisgICAgc3N0YXRlZmV0Y2ggPSBkLmdldFZhcignU1NUQVRFX1BLR05BTUUnKQorICAgIHNzdGF0ZXBrZyA9IGQuZ2V0VmFyKCdTU1RBVEVfUEtHJykKIAogICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzc3RhdGVwa2cpOgogICAgICAgICBwc3RhZ2luZ19mZXRjaChzc3RhdGVmZXRjaCwgZCkKQEAgLTMzMCw3ICszNTMsNiBAQAogICAgIHNzdGF0ZV9jbGVhbihzcywgZCkKIAogICAgIGQuc2V0VmFyKCdTU1RBVEVfSU5TVERJUicsIHNzdGF0ZWluc3QpCi0gICAgZC5zZXRWYXIoJ1NTVEFURV9QS0cnLCBzc3RhdGVwa2cpCiAKICAgICBpZiBiYi51dGlscy50b19ib29sZWFuKGQuZ2V0VmFyKCJTU1RBVEVfVkVSSUZZX1NJRyIpLCBGYWxzZSk6CiAgICAgICAgIHNpZ25lciA9IGdldF9zaWduZXIoZCwgJ2xvY2FsJykKQEAgLTQ0MCw4ICs0NjIsOSBAQAogZGVmIHNzdGF0ZV9jbGVhbl9jYWNoZWZpbGUoc3MsIGQpOgogICAgIGltcG9ydCBvZS5wYXRoCiAKLSAgICBzc3RhdGVwa2dmaWxlID0gZC5nZXRWYXIoJ1NTVEFURV9QQVRIU1BFQycpICsgIipfIiArIHNzWyd0YXNrJ10gKyAiLnRneioiCiAgICAgaWYgZC5nZXRWYXJGbGFnKCdkb18lcycgJSBzc1sndGFzayddLCAndGFzaycpOgorICAgICAgICBkLnNldFZhcigiU1NUQVRFX1BBVEhfQ1VSUlRBU0siLCBzc1sndGFzayddKQorICAgICAgICBzc3RhdGVwa2dmaWxlID0gZC5nZXRWYXIoJ1NTVEFURV9QQVRIU1BFQycpCiAgICAgICAgIGJiLm5vdGUoIlJlbW92aW5nICVzIiAlIHNzdGF0ZXBrZ2ZpbGUpCiAgICAgICAgIG9lLnBhdGgucmVtb3ZlKHNzdGF0ZXBrZ2ZpbGUpCiAKQEAgLTYxMiwxMCArNjM1LDkgQEAKICAgICB0bXBkaXIgPSBkLmdldFZhcignVE1QRElSJykKIAogICAgIHNzdGF0ZWJ1aWxkID0gZC5leHBhbmQoIiR7V09SS0RJUn0vc3N0YXRlLWJ1aWxkLSVzLyIgJSBzc1sndGFzayddKQotICAgIHNzdGF0ZXBrZyA9IGQuZ2V0VmFyKCdTU1RBVEVfUEtHJykgKyAnXycrIHNzWyd0YXNrJ10gKyAiLnRneiIKKyAgICBkLnNldFZhcigiU1NUQVRFX0NVUlJUQVNLIiwgc3NbJ3Rhc2snXSkKICAgICBiYi51dGlscy5yZW1vdmUoc3N0YXRlYnVpbGQsIHJlY3Vyc2U9VHJ1ZSkKICAgICBiYi51dGlscy5ta2RpcmhpZXIoc3N0YXRlYnVpbGQpCi0gICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShzc3RhdGVwa2cpKQogICAgIGZvciBzdGF0ZSBpbiBzc1snZGlycyddOgogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc3RhdGVbMV0pOgogICAgICAgICAgICAgY29udGludWUKQEAgLTY0OCw3ICs2NzAsNiBAQAogICAgICAgICBvcy5yZW5hbWUocGxhaW4sIHBkaXIpCiAKICAgICBkLnNldFZhcignU1NUQVRFX0JVSUxERElSJywgc3N0YXRlYnVpbGQpCi0gICAgZC5zZXRWYXIoJ1NTVEFURV9QS0cnLCBzc3RhdGVwa2cpCiAgICAgZC5zZXRWYXIoJ1NTVEFURV9JTlNURElSJywgc3N0YXRlYnVpbGQpCiAKICAgICBpZiBkLmdldFZhcignU1NUQVRFX1NLSVBfQ1JFQVRJT04nKSA9PSAnMSc6CkBAIC02NjQsNyArNjg1LDEyIEBACiAgICAgICAgICMgQWxsIGhvb2tzIHNob3VsZCBydW4gaW4gU1NUQVRFX0JVSUxERElSLgogICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoZiwgZCwgKHNzdGF0ZWJ1aWxkLCkpCiAKLSAgICBiYi5zaWdnZW4uZHVtcF90aGlzX3Rhc2soc3N0YXRlcGtnICsgIi5zaWdpbmZvIiwgZCkKKyAgICAjIFNTVEFURV9QS0cgbWF5IGhhdmUgYmVlbiBjaGFuZ2VkIGJ5IHNzdGF0ZV9yZXBvcnRfdW5paGFzaAorICAgIHNpZ2luZm8gPSBkLmdldFZhcignU1NUQVRFX1BLRycpICsgIi5zaWdpbmZvIgorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzaWdpbmZvKToKKyAgICAgICAgYmIuc2lnZ2VuLmR1bXBfdGhpc190YXNrKHNpZ2luZm8sIGQpCisgICAgZWxzZToKKyAgICAgICAgb3MudXRpbWUoc2lnaW5mbywgTm9uZSkKIAogICAgIHJldHVybgogCkBAIC03NDgsMTggKzc3NCwyMCBAQAogIyBzZXQgYXMgU1NUQVRFX0JVSUxERElSLiBXaWxsIGJlIHJ1biBmcm9tIHdpdGhpbiBTU1RBVEVfQlVJTERESVIuCiAjCiBzc3RhdGVfY3JlYXRlX3BhY2thZ2UgKCkgewotCVRGSUxFPWBta3RlbXAgJHtTU1RBVEVfUEtHfS5YWFhYWFhYWGAKLQotCSMgRXhpdCBlYXJsdSBpZiBpdCBhbHJlYWR5IGV4aXN0cworCSMgRXhpdCBlYXJseSBpZiBpdCBhbHJlYWR5IGV4aXN0cwogCWlmIFsgLWUgJHtTU1RBVEVfUEtHfSBdOyB0aGVuCisJCXRvdWNoICR7U1NUQVRFX1BLR30KIAkJcmV0dXJuCiAJZmkKIAotICAgICAgICAjIFVzZSBwaWd6IGlmIGF2YWlsYWJsZQotICAgICAgICBPUFQ9Ii1jelMiCi0gICAgICAgIGlmIFsgLXggIiQoY29tbWFuZCAtdiBwaWd6KSIgXTsgdGhlbgotICAgICAgICAgICAgT1BUPSItSSBwaWd6IC1jUyIKLSAgICAgICAgZmkKKwlta2RpciAtcCBgZGlybmFtZSAke1NTVEFURV9QS0d9YAorCVRGSUxFPWBta3RlbXAgJHtTU1RBVEVfUEtHfS5YWFhYWFhYWGAKKworCSMgVXNlIHBpZ3ogaWYgYXZhaWxhYmxlCisJT1BUPSItY3pTIgorCWlmIFsgLXggIiQoY29tbWFuZCAtdiBwaWd6KSIgXTsgdGhlbgorCQlPUFQ9Ii1JIHBpZ3ogLWNTIgorCWZpCiAKIAkjIE5lZWQgdG8gaGFuZGxlIGVtcHR5IGRpcmVjdG9yaWVzCiAJaWYgWyAiJChscyAtQSkiIF07IHRoZW4KQEAgLTc3NiwxMCArODA0LDEzIEBACiAJY2htb2QgMDY2NCAkVEZJTEUKIAkjIFNraXAgaWYgaXQgd2FzIGFscmVhZHkgY3JlYXRlZCBieSBzb21lIG90aGVyIHByb2Nlc3MKIAlpZiBbICEgLWUgJHtTU1RBVEVfUEtHfSBdOyB0aGVuCi0JCW12IC1mICRURklMRSAke1NTVEFURV9QS0d9CisJCSMgTW92ZSBpbnRvIHBsYWNlIHVzaW5nIGxuIHRvIGF0dGVtcHQgYW4gYXRvbWljIG9wLgorCQkjIEFib3J0IGlmIGl0IGFscmVhZHkgZXhpc3RzCisJCWxuICRURklMRSAke1NTVEFURV9QS0d9ICYmIHJtICRURklMRQogCWVsc2UKIAkJcm0gJFRGSUxFCiAJZmkKKwl0b3VjaCAke1NTVEFURV9QS0d9CiB9CiAKIHB5dGhvbiBzc3RhdGVfc2lnbl9wYWNrYWdlICgpIHsKQEAgLTgyMSw5ICs4NTIsNiBAQAogZGVmIHNzdGF0ZV9jaGVja2hhc2hlcyhzcV9kYXRhLCBkLCBzaWdpbmZvPUZhbHNlLCBjdXJyZW50Y291bnQ9MCwgc3VtbWFyeT1UcnVlLCAqKmt3YXJncyk6CiAgICAgZm91bmQgPSBzZXQoKQogICAgIG1pc3NlZCA9IHNldCgpCi0gICAgZXh0ZW5zaW9uID0gIi50Z3oiCi0gICAgaWYgc2lnaW5mbzoKLSAgICAgICAgZXh0ZW5zaW9uID0gZXh0ZW5zaW9uICsgIi5zaWdpbmZvIgogCiAgICAgZGVmIGdldGhhc2godGFzayk6CiAgICAgICAgIHJldHVybiBzcV9kYXRhWyd1bmloYXNoJ11bdGFza10KQEAgLTg1MCw3ICs4NzgsNyBAQAogCiAgICAgICAgIHNwZWMsIGV4dHJhcGF0aCwgdG5hbWUgPSBnZXRwYXRoY29tcG9uZW50cyh0aWQsIGQpCiAKLSAgICAgICAgc3N0YXRlZmlsZSA9IGQuZXhwYW5kKCIke1NTVEFURV9ESVJ9LyIgKyBleHRyYXBhdGggKyBnZW5lcmF0ZV9zc3RhdGVmbihzcGVjLCBnZXRoYXNoKHRpZCksIGQpICsgIl8iICsgdG5hbWUgKyBleHRlbnNpb24pCisgICAgICAgIHNzdGF0ZWZpbGUgPSBkLmV4cGFuZCgiJHtTU1RBVEVfRElSfS8iICsgZXh0cmFwYXRoICsgZ2VuZXJhdGVfc3N0YXRlZm4oc3BlYywgZ2V0aGFzaCh0aWQpLCB0bmFtZSwgc2lnaW5mbywgZCkpCiAKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc3N0YXRlZmlsZSk6CiAgICAgICAgICAgICBiYi5kZWJ1ZygyLCAiU1N0YXRlOiBGb3VuZCB2YWxpZCBzc3RhdGUgZmlsZSAlcyIgJSBzc3RhdGVmaWxlKQpAQCAtOTA2LDE5ICs5MzQsMjIgQEAKICAgICAgICAgICAgICAgICBtaXNzZWQuYWRkKHRpZCkKICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygyLCAiU1N0YXRlOiBVbnN1Y2Nlc3NmdWwgZmV0Y2ggdGVzdCBmb3IgJXMiICUgc3JjdXJpKQogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUHJvY2Vzc1Byb2dyZXNzKG1zZywgbGVuKHRhc2tsaXN0KSAtIHRocmVhZF93b3JrZXIudGFza3MucXNpemUoKSksIGQpCisgICAgICAgICAgICBpZiBsZW4odGFza2xpc3QpID49IG1pbl90YXNrczoKKyAgICAgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LlByb2Nlc3NQcm9ncmVzcyhtc2csIGxlbih0YXNrbGlzdCkgLSB0aHJlYWRfd29ya2VyLnRhc2tzLnFzaXplKCkpLCBkKQogCiAgICAgICAgIHRhc2tsaXN0ID0gW10KKyAgICAgICAgbWluX3Rhc2tzID0gMTAwCiAgICAgICAgIGZvciB0aWQgaW4gc3FfZGF0YVsnaGFzaCddOgogICAgICAgICAgICAgaWYgdGlkIGluIGZvdW5kOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBzcGVjLCBleHRyYXBhdGgsIHRuYW1lID0gZ2V0cGF0aGNvbXBvbmVudHModGlkLCBkKQotICAgICAgICAgICAgc3N0YXRlZmlsZSA9IGQuZXhwYW5kKGV4dHJhcGF0aCArIGdlbmVyYXRlX3NzdGF0ZWZuKHNwZWMsIGdldGhhc2godGlkKSwgZCkgKyAiXyIgKyB0bmFtZSArIGV4dGVuc2lvbikKKyAgICAgICAgICAgIHNzdGF0ZWZpbGUgPSBkLmV4cGFuZChleHRyYXBhdGggKyBnZW5lcmF0ZV9zc3RhdGVmbihzcGVjLCBnZXRoYXNoKHRpZCksIHRuYW1lLCBzaWdpbmZvLCBkKSkKICAgICAgICAgICAgIHRhc2tsaXN0LmFwcGVuZCgodGlkLCBzc3RhdGVmaWxlKSkKIAogICAgICAgICBpZiB0YXNrbGlzdDoKLSAgICAgICAgICAgIG1zZyA9ICJDaGVja2luZyBzc3RhdGUgbWlycm9yIG9iamVjdCBhdmFpbGFiaWxpdHkiCi0gICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LlByb2Nlc3NTdGFydGVkKG1zZywgbGVuKHRhc2tsaXN0KSksIGQpCisgICAgICAgICAgICBpZiBsZW4odGFza2xpc3QpID49IG1pbl90YXNrczoKKyAgICAgICAgICAgICAgICBtc2cgPSAiQ2hlY2tpbmcgc3N0YXRlIG1pcnJvciBvYmplY3QgYXZhaWxhYmlsaXR5IgorICAgICAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUHJvY2Vzc1N0YXJ0ZWQobXNnLCBsZW4odGFza2xpc3QpKSwgZCkKIAogICAgICAgICAgICAgaW1wb3J0IG11bHRpcHJvY2Vzc2luZwogICAgICAgICAgICAgbnByb2MgPSBtaW4obXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCgpLCBsZW4odGFza2xpc3QpKQpAQCAtOTMyLDIyICs5NjMsMTkgQEAKICAgICAgICAgICAgIHBvb2wud2FpdF9jb21wbGV0aW9uKCkKICAgICAgICAgICAgIGJiLmV2ZW50LmRpc2FibGVfdGhyZWFkbG9jaygpCiAKLSAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUHJvY2Vzc0ZpbmlzaGVkKG1zZyksIGQpCi0KLSAgICAjIExpa2VseSBjaGVja2luZyBhbiBpbmRpdmlkdWFsIHRhc2sgaGFzaCBhZ2FpbiBmb3IgbXVsdGljb25maWcgc2hhcmluZyBvZiBzc3RhdGUgdGFza3Mgc28gc2tpcCByZXBvcnRpbmcKLSAgICBpZiBsZW4oc3FfZGF0YVsnaGFzaCddKSA9PSAxOgotICAgICAgICByZXR1cm4gZm91bmQKKyAgICAgICAgICAgIGlmIGxlbih0YXNrbGlzdCkgPj0gbWluX3Rhc2tzOgorICAgICAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUHJvY2Vzc0ZpbmlzaGVkKG1zZyksIGQpCiAKICAgICBpbmhlcml0bGlzdCA9IGQuZ2V0VmFyKCJJTkhFUklUIikKICAgICBpZiAidG9hc3RlciIgaW4gaW5oZXJpdGxpc3Q6CiAgICAgICAgIGV2ZGF0YSA9IHsnbWlzc2VkJzogW10sICdmb3VuZCc6IFtdfTsKICAgICAgICAgZm9yIHRpZCBpbiBtaXNzZWQ6CiAgICAgICAgICAgICBzcGVjLCBleHRyYXBhdGgsIHRuYW1lID0gZ2V0cGF0aGNvbXBvbmVudHModGlkLCBkKQotICAgICAgICAgICAgc3N0YXRlZmlsZSA9IGQuZXhwYW5kKGV4dHJhcGF0aCArIGdlbmVyYXRlX3NzdGF0ZWZuKHNwZWMsIGdldGhhc2godGlkKSwgZCkgKyAiXyIgKyB0bmFtZSArICIudGd6IikKKyAgICAgICAgICAgIHNzdGF0ZWZpbGUgPSBkLmV4cGFuZChleHRyYXBhdGggKyBnZW5lcmF0ZV9zc3RhdGVmbihzcGVjLCBnZXRoYXNoKHRpZCksIHRuYW1lLCBGYWxzZSwgZCkpCiAgICAgICAgICAgICBldmRhdGFbJ21pc3NlZCddLmFwcGVuZCgoYmIucnVucXVldWUuZm5fZnJvbV90aWQodGlkKSwgYmIucnVucXVldWUudGFza25hbWVfZnJvbV90aWQodGlkKSwgZ2V0aGFzaCh0aWQpLCBzc3RhdGVmaWxlICkgKQogICAgICAgICBmb3IgdGlkIGluIGZvdW5kOgogICAgICAgICAgICAgc3BlYywgZXh0cmFwYXRoLCB0bmFtZSA9IGdldHBhdGhjb21wb25lbnRzKHRpZCwgZCkKLSAgICAgICAgICAgIHNzdGF0ZWZpbGUgPSBkLmV4cGFuZChleHRyYXBhdGggKyBnZW5lcmF0ZV9zc3RhdGVmbihzcGVjLCBnZXRoYXNoKHRpZCksIGQpICsgIl8iICsgdG5hbWUgKyAiLnRneiIpCisgICAgICAgICAgICBzc3RhdGVmaWxlID0gZC5leHBhbmQoZXh0cmFwYXRoICsgZ2VuZXJhdGVfc3N0YXRlZm4oc3BlYywgZ2V0aGFzaCh0aWQpLCB0bmFtZSwgRmFsc2UsIGQpKQogICAgICAgICAgICAgZXZkYXRhWydmb3VuZCddLmFwcGVuZCgoYmIucnVucXVldWUuZm5fZnJvbV90aWQodGlkKSwgYmIucnVucXVldWUudGFza25hbWVfZnJvbV90aWQodGlkKSwgZ2V0aGFzaCh0aWQpLCBzc3RhdGVmaWxlICkgKQogICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50Lk1ldGFkYXRhRXZlbnQoIk1pc3NlZFNzdGF0ZSIsIGV2ZGF0YSksIGQpCiAKQEAgLTEwODEsMTcgKzExMDksMjAgQEAKIHNzdGF0ZV9ldmVudGhhbmRsZXJbZXZlbnRtYXNrXSA9ICJiYi5idWlsZC5UYXNrU3VjY2VlZGVkIgogcHl0aG9uIHNzdGF0ZV9ldmVudGhhbmRsZXIoKSB7CiAgICAgZCA9IGUuZGF0YQotICAgICMgV2hlbiB3ZSB3cml0ZSBhbiBzc3RhdGUgcGFja2FnZSB3ZSByZXdyaXRlIHRoZSBTU1RBVEVfUEtHCi0gICAgc3BrZyA9IGQuZ2V0VmFyKCdTU1RBVEVfUEtHJykKLSAgICBpZiBub3Qgc3BrZy5lbmRzd2l0aCgiLnRneiIpOgorICAgIHdyaXR0ZW5zc3RhdGUgPSBkLmdldFZhcignU1NUQVRFX0NVUlJUQVNLJykKKyAgICBpZiBub3Qgd3JpdHRlbnNzdGF0ZToKICAgICAgICAgdGFza25hbWUgPSBkLmdldFZhcigiQkJfUlVOVEFTSyIpWzM6XQogICAgICAgICBzcGVjID0gZC5nZXRWYXIoJ1NTVEFURV9QS0dTUEVDJykKICAgICAgICAgc3dzcGVjID0gZC5nZXRWYXIoJ1NTVEFURV9TV1NQRUMnKQogICAgICAgICBpZiB0YXNrbmFtZSBpbiBbImZldGNoIiwgInVucGFjayIsICJwYXRjaCIsICJwb3B1bGF0ZV9saWMiLCAicHJlY29uZmlndXJlIl0gYW5kIHN3c3BlYzoKICAgICAgICAgICAgIGQuc2V0VmFyKCJTU1RBVEVfUEtHU1BFQyIsICIke1NTVEFURV9TV1NQRUN9IikKICAgICAgICAgICAgIGQuc2V0VmFyKCJTU1RBVEVfRVhUUkFQQVRIIiwgIiIpCi0gICAgICAgIHNzdGF0ZXBrZyA9IGQuZ2V0VmFyKCdTU1RBVEVfUEtHJykKLSAgICAgICAgYmIuc2lnZ2VuLmR1bXBfdGhpc190YXNrKHNzdGF0ZXBrZyArICdfJyArIHRhc2tuYW1lICsgIi50Z3oiICIuc2lnaW5mbyIsIGQpCisgICAgICAgIGQuc2V0VmFyKCJTU1RBVEVfQ1VSUlRBU0siLCB0YXNrbmFtZSkKKyAgICAgICAgc2lnaW5mbyA9IGQuZ2V0VmFyKCdTU1RBVEVfUEtHJykgKyAiLnNpZ2luZm8iCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzaWdpbmZvKToKKyAgICAgICAgICAgIGJiLnNpZ2dlbi5kdW1wX3RoaXNfdGFzayhzaWdpbmZvLCBkKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3MudXRpbWUoc2lnaW5mbywgTm9uZSkKIH0KIAogU1NUQVRFX1BSVU5FX09CU09MRVRFV09SS0RJUiA/PSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3N0YWdpbmcuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3N0YWdpbmcuYmJjbGFzcwppbmRleCBjY2EwYjdlLi41YjA0Zjg4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvc3RhZ2luZy5iYmNsYXNzCkBAIC0zMiw3ICszMiw3IEBACiAgICAgJHtkYXRhZGlyfS9ndGstZG9jL2h0bWwgXAogICAgICR7ZGF0YWRpcn0vbG9jYWxlIFwKICAgICAke2RhdGFkaXJ9L3BpeG1hcHMgXAotICAgICR7bGliZGlyfS8ke1BOfS9wdGVzdCBcCisgICAgJHtsaWJkaXJ9LyR7QlBOfS9wdGVzdCBcCiAiCiAKIHN5c3Jvb3Rfc3RhZ2VfZGlyKCkgewpAQCAtNzUsOCArNzUsOCBAQAogCiAgICAgZHN0ZGlyID0gZC5nZXRWYXIoJ1NZU1JPT1RfREVTVERJUicpCiAgICAgcG4gPSBkLmdldFZhcignUE4nKQotICAgIGxpYmRpciA9IG9zLnBhdGguYWJzcGF0aChkc3RkaXIgKyBvcy5zZXAgKyBkLmdldFZhcigibGliZGlyIikpCi0gICAgYmFzZV9saWJkaXIgPSBvcy5wYXRoLmFic3BhdGgoZHN0ZGlyICsgb3Muc2VwICsgZC5nZXRWYXIoImJhc2VfbGliZGlyIikpCisgICAgbGliZGlyID0gZC5nZXRWYXIoImxpYmRpciIpCisgICAgYmFzZV9saWJkaXIgPSBkLmdldFZhcigiYmFzZV9saWJkaXIiKQogICAgIHFhX2FscmVhZHlfc3RyaXBwZWQgPSAnYWxyZWFkeS1zdHJpcHBlZCcgaW4gKGQuZ2V0VmFyKCdJTlNBTkVfU0tJUF8nICsgcG4pIG9yICIiKS5zcGxpdCgpCiAgICAgc3RyaXBfY21kID0gZC5nZXRWYXIoIlNUUklQIikKIApAQCAtMjc3LDExICsyNzcsMTMgQEAKIAogICAgIHN0YXJ0ID0gTm9uZQogICAgIGNvbmZpZ3VyZWRlcHMgPSBbXQorICAgIG93bnRhc2tkZXBzID0gW10KICAgICBmb3IgZGVwIGluIHRhc2tkZXBkYXRhOgogICAgICAgICBkYXRhID0gdGFza2RlcGRhdGFbZGVwXQogICAgICAgICBpZiBkYXRhWzFdID09IG15dGFza25hbWUgYW5kIGRhdGFbMF0gPT0gcG46CiAgICAgICAgICAgICBzdGFydCA9IGRlcAotICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxpZiBkYXRhWzBdID09IHBuOgorICAgICAgICAgICAgb3dudGFza2RlcHMuYXBwZW5kKGRhdGFbMV0pCiAgICAgaWYgc3RhcnQgaXMgTm9uZToKICAgICAgICAgYmIuZmF0YWwoIkNvdWxkbid0IGZpbmQgb3Vyc2VsZiBpbiBCQl9UQVNLREVQREFUQT8iKQogCkBAIC00MjcsNyArNDI5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICMgV2FzIGxpa2VseSBhbHJlYWR5IHVuaW5zdGFsbGVkCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICBwb3RlbnRpYWwuYXBwZW5kKGwpCi0gICAgICAgICMgV2UgbmVlZCB0byBlbnN1cmUgbm90IG90aGVyIHRhc2sgbmVlZHMgdGhpcyBkZXBlbmRlbmN5LiBXZSBob2xkIHRoZSBzeXNyb290CisgICAgICAgICMgV2UgbmVlZCB0byBlbnN1cmUgbm8gb3RoZXIgdGFzayBuZWVkcyB0aGlzIGRlcGVuZGVuY3kuIFdlIGhvbGQgdGhlIHN5c3Jvb3QKICAgICAgICAgIyBsb2NrIHNvIHdlIGNhIHNlYXJjaCB0aGUgaW5kZXhlcyB0byBjaGVjawogICAgICAgICBpZiBwb3RlbnRpYWw6CiAgICAgICAgICAgICBmb3IgaSBpbiBnbG9iLmdsb2IoZGVwZGlyICsgIi9pbmRleC4qIik6CkBAIC00MzUsNiArNDM3LDExIEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGksICJyIikgYXMgZjoKICAgICAgICAgICAgICAgICAgICAgZm9yIGwgaW4gZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGwuc3RhcnRzd2l0aCgiVGFza0RlcHM6Iik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldnRhc2tzID0gbC5zcGxpdCgpWzE6XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG15dGFza25hbWUgaW4gcHJldnRhc2tzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFdlJ3JlIGEgZGVwZW5kZW5jeSBvZiB0aGlzIHRhc2sgc28gd2UgY2FuIGNsZWFyIGl0ZW1zIG91dCB0aGUgc3lzcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGwuc3RyaXAoKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbCBpbiBwb3RlbnRpYWw6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsLnJlbW92ZShsKQpAQCAtNDcwLDYgKzQ3Nyw3IEBACiAgICAgICAgIGVsaWYgb3MucGF0aC5sZXhpc3RzKGRlcGRpciArICIvIiArIGMpOgogICAgICAgICAgICAgb3MudW5saW5rKGRlcGRpciArICIvIiArIGMpCiAKKyAgICBiaW5maWxlcyA9IHt9CiAgICAgIyBOb3cgaGFuZGxlIGluc3RhbGxzCiAgICAgZm9yIGRlcCBpbiBjb25maWd1cmVkZXBzOgogICAgICAgICBjID0gc2V0c2NlbmVkZXBzW2RlcF1bMF0KQEAgLTU2Miw3ICs1NzAsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgbC5lbmRzd2l0aCgiLyIpOgogICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2luZ19jb3B5ZGlyKGwsIHRhcmdldGRpciwgZGVzdCwgc2VlbmRpcnMpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBzdGFnaW5nX2NvcHlmaWxlKGwsIHRhcmdldGRpciwgZGVzdCwgcG9zdGluc3RzLCBzZWVuZGlycykKKyAgICAgICAgICAgICAgICAgICAgaWYgIi9iaW4vIiBpbiBsIG9yICIvc2Jpbi8iIGluIGw6CisgICAgICAgICAgICAgICAgICAgICAgICAjIGRlZmVyIC8qYmluLyogZmlsZXMgdW50aWwgbGFzdCBpbiBjYXNlIHRoZXkgbmVlZCBsaWJzCisgICAgICAgICAgICAgICAgICAgICAgICBiaW5maWxlc1tsXSA9ICh0YXJnZXRkaXIsIGRlc3QpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFnaW5nX2NvcHlmaWxlKGwsIHRhcmdldGRpciwgZGVzdCwgcG9zdGluc3RzLCBzZWVuZGlycykKKworICAgICMgSGFuZGxlIGRlZmVycmVkIGJpbmZpbGVzCisgICAgZm9yIGwgaW4gYmluZmlsZXM6CisgICAgICAgICh0YXJnZXRkaXIsIGRlc3QpID0gYmluZmlsZXNbbF0KKyAgICAgICAgc3RhZ2luZ19jb3B5ZmlsZShsLCB0YXJnZXRkaXIsIGRlc3QsIHBvc3RpbnN0cywgc2VlbmRpcnMpCiAKICAgICBiYi5ub3RlKCJJbnN0YWxsZWQgaW50byBzeXNyb290OiAlcyIgJSBzdHIobXNnX2FkZGluZykpCiAgICAgYmIubm90ZSgiU2tpcHBpbmcgYXMgYWxyZWFkeSBleGlzdHMgaW4gc3lzcm9vdDogJXMiICUgc3RyKG1zZ19leGlzdHMpKQpAQCAtNTc4LDYgKzU5NSw3IEBACiAgICAgICAgIG9zLnN5bWxpbmsobWFuaWZlc3RzW2RlcF0sIGRlcGRpciArICIvIiArIGMgKyAiLmNvbXBsZXRlIikKIAogICAgIHdpdGggb3Blbih0YXNraW5kZXgsICJ3IikgYXMgZjoKKyAgICAgICAgZi53cml0ZSgiVGFza0RlcHM6ICIgKyAiICIuam9pbihvd250YXNrZGVwcykgKyAiXG4iKQogICAgICAgICBmb3IgbCBpbiBzb3J0ZWQoaW5zdGFsbGVkKToKICAgICAgICAgICAgIGYud3JpdGUobCArICJcbiIpCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3Rlc3RpbWFnZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvdGVzdGltYWdlLmJiY2xhc3MKaW5kZXggODQ0ZWQ4Ny4uMDBmMGMyOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvdGVzdGltYWdlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvdGVzdGltYWdlLmJiY2xhc3MKQEAgLTMxLDkgKzMxLDIxIEBACiAjIFRFU1RfTE9HX0RJUiBjb250YWlucyBhIGNvbW1hbmQgc3NoIGxvZyBhbmQgbWF5IGNvbnRhaW4gaW5mcm9tYXRpb24gYWJvdXQgd2hhdCBjb21tYW5kIGlzIHJ1bm5pbmcsIG91dHB1dCBhbmQgcmV0dXJuIGNvZGVzIGFuZCBmb3IgcWVtdSBhIGJvb3QgbG9nIHRpbGwgbG9naW4uCiAjIEJvb3RpbmcgaXMgaGFuZGxlZCBieSB0aGlzIGNsYXNzLCBhbmQgaXQncyBub3QgYSB0ZXN0IGluIGl0c2VsZi4KICMgVEVTVF9RRU1VQk9PVF9USU1FT1VUIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgbWF4aW11bSB0aW1lIGluIHNlY29uZHMgdGhlIGxhdW5jaCBjb2RlIHdpbGwgd2FpdCBmb3IgdGhlIGxvZ2luIHByb21wdC4KKyMgVEVTVF9PVkVSQUxMX1RJTUVPVVQgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBtYXhpbXVtIHRpbWUgaW4gc2Vjb25kcyB0aGUgdGVzdHMgd2lsbCBiZSBhbGxvd2VkIHRvIHJ1biAoZGVmYXVsdHMgdG8gbm8gbGltaXQpLgogIyBURVNUX1FFTVVQQVJBTVMgY2FuIGJlIHVzZWQgdG8gcGFzcyBleHRyYSBwYXJhbWV0ZXJzIHRvIHFlbXUsIGUuZy4gIi1tIDEwMjQiIGZvciBzZXR0aW5nIHRoZSBhbW91bnQgb2YgcmFtIHRvIDEgR0IuCiAjIFRFU1RfUlVOUUVNVVBBUkFNUyBjYW4gYmUgdXNlZCB0byBwYXNzIGV4dHJhIHBhcmFtZXRlcnMgdG8gcnVucWVtdSwgZS5nLiAiZ2wiIHRvIGVuYWJsZSBPcGVuR0wgYWNjZWxlcmF0aW9uLgogCisjIFRFU1RJTUFHRV9CT09UX1BBVFRFUk5TIGNhbiBiZSB1c2VkIHRvIG92ZXJyaWRlIGNlcnRhaW4gcGF0dGVybnMgdXNlZCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSB0YXJnZXQgd2hlbiBib290aW5nLAorIyBpZiBhIHBhdHRlcm4gaXMgbm90IHNwZWNpZmljYWxseSBwcmVzZW50IG9uIHRoaXMgdmFyaWFibGUgYSBkZWZhdWx0IHdpbGwgYmUgdXNlZCB3aGVuIGJvb3RpbmcgdGhlIHRhcmdldC4KKyMgVEVTVElNQUdFX0JPT1RfUEFUVEVSTlNbPGZsYWc+XSBvdmVycmlkZXMgdGhlIHBhdHRlcm4gdXNlZCBmb3IgdGhhdCBzcGVjaWZpYyBmbGFnLCB3aGVyZSBmbGFnIGNvbWVzIGZyb20gYSBsaXN0IG9mIGFjY2VwdGVkIGZsYWdzCisjIGUuZy4gbm9ybWFsbHkgdGhlIHN5c3RlbSBib290cyBhbmQgd2FpdHMgZm9yIGEgbG9naW4gcHJvbXB0IChsb2dpbjopLCBhZnRlciB0aGF0IGl0IHNlbmRzIHRoZSBjb21tYW5kOiAicm9vdFxuIiB0byBsb2cgYXMgdGhlIHJvb3QgdXNlcgorIyBpZiB3ZSB3YW50ZWQgdG8gbG9nIGluIGFzIHRoZSBoeXBvdGhldGljYWwgIndlYnNlcnZlciIgdXNlciBmb3IgZXhhbXBsZSB3ZSBjb3VsZCBzZXQgdGhlIGZvbGxvd2luZzoKKyMgVEVTVElNQUdFX0JPT1RfUEFUVEVSTlMgPSAic2VuZF9sb2dpbl91c2VyIHNlYXJjaF9sb2dpbl9zdWNjZWVkZWQiCisjIFRFU1RJTUFHRV9CT09UX1BBVFRFUk5TW3NlbmRfbG9naW5fdXNlcl0gPSAid2Vic2VydmVyXG4iCisjIFRFU1RJTUFHRV9CT09UX1BBVFRFUk5TW3NlYXJjaF9sb2dpbl9zdWNjZWVkZWRdID0gIndlYnNlcnZlckBbYS16QS1aMC05XC1dKzp+IyIKKyMgVGhlIGFjY2VwdGVkIGZsYWdzIGFyZSB0aGUgZm9sbG93aW5nOiBzZWFyY2hfcmVhY2hlZF9wcm9tcHQsIHNlbmRfbG9naW5fdXNlciwgc2VhcmNoX2xvZ2luX3N1Y2NlZWRlZCwgc2VhcmNoX2NtZF9maW5pc2hlZC4KKyMgVGhleSBhcmUgcHJlZml4ZWQgd2l0aCBlaXRoZXIgc2VhcmNoL3NlbmQsIHRvIGRpZmZlcmVudGlhdGUgaWYgdGhlIHBhdHRlcm4gaXMgbWVhbnQgdG8gYmUgc2VudCBvciBzZWFyY2hlZCB0by9mcm9tIHRoZSB0YXJnZXQgdGVybWluYWwKKwogVEVTVF9MT0dfRElSID89ICIke1dPUktESVJ9L3Rlc3RpbWFnZSIKIAogVEVTVF9FWFBPUlRfRElSID89ICIke1RNUERJUn0vdGVzdGltYWdlLyR7UE59IgpAQCAtNDYsNyArNTgsNyBAQAogICAgIHBpbmcgZGF0ZSBkZiBzc2ggc2NwIHB5dGhvbiBwZXJsIGdpIHB0ZXN0IHBhcnNlbG9ncyBcCiAgICAgbG9ncm90YXRlIGNvbm5tYW4gc3lzdGVtZCBvZV9zeXNsb2cgcGFtIHN0YXAgbGRkIHhvcmcgXAogICAgIGtlcm5lbG1vZHVsZSBnY2MgYnVpbGRjcGlvIGJ1aWxkbHppcCBidWlsZGdhbGN1bGF0b3IgXAotICAgIGRuZiBycG0gb3BrZyBhcHQiCisgICAgZG5mIHJwbSBvcGtnIGFwdCB3ZXN0b24iCiAKIERFRkFVTFRfVEVTVF9TVUlURVMgPSAiJHtCQVNJQ1RFU1RTVUlURX0iCiAKQEAgLTY0LDEwICs3NiwxMyBAQAogVEVTVF9TVUlURVMgPz0gIiR7REVGQVVMVF9URVNUX1NVSVRFU30iCiAKIFRFU1RfUUVNVUJPT1RfVElNRU9VVCA/PSAiMTAwMCIKK1RFU1RfT1ZFUkFMTF9USU1FT1VUID89ICIiCiBURVNUX1RBUkdFVCA/PSAicWVtdSIKIFRFU1RfUUVNVVBBUkFNUyA/PSAiIgogVEVTVF9SVU5RRU1VUEFSQU1TID89ICIiCiAKK1RFU1RJTUFHRV9CT09UX1BBVFRFUk5TID89ICIiCisKIFRFU1RJTUFHRURFUEVORFMgPSAiIgogVEVTVElNQUdFREVQRU5EU19hcHBlbmRfcWVtdWFsbCA9ICIgcWVtdS1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBxZW11LWhlbHBlci1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBxZW11LWhlbHBlci1uYXRpdmU6ZG9fYWRkdG9fcmVjaXBlX3N5c3Jvb3QiCiBURVNUSU1BR0VERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfUEtHVFlQRScsICdycG0nLCAnY3Bpby1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcsICcnLCBkKX0iCkBAIC0xNTAsNiArMTY1LDI5IEBACiBkZWYgZ2V0X3Rlc3RpbWFnZV9yZXN1bHRfaWQoY29uZmlndXJhdGlvbik6CiAgICAgcmV0dXJuICclc18lc18lc18lcycgJSAoY29uZmlndXJhdGlvblsnVEVTVF9UWVBFJ10sIGNvbmZpZ3VyYXRpb25bJ0lNQUdFX0JBU0VOQU1FJ10sIGNvbmZpZ3VyYXRpb25bJ01BQ0hJTkUnXSwgY29uZmlndXJhdGlvblsnU1RBUlRUSU1FJ10pCiAKK2RlZiBnZXRfdGVzdGltYWdlX2Jvb3RfcGF0dGVybnMoZCk6CisgICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKKyAgICBib290X3BhdHRlcm5zID0gZGVmYXVsdGRpY3Qoc3RyKQorICAgICMgT25seSBhY2NlcHQgY2VydGFpbiB2YWx1ZXMKKyAgICBhY2NlcHRlZF9wYXR0ZXJucyA9IFsnc2VhcmNoX3JlYWNoZWRfcHJvbXB0JywgJ3NlbmRfbG9naW5fdXNlcicsICdzZWFyY2hfbG9naW5fc3VjY2VlZGVkJywgJ3NlYXJjaF9jbWRfZmluaXNoZWQnXQorICAgICMgTm90IGFsbCBwYXR0ZXJucyBuZWVkIHRvIGJlIG92ZXJyaWRlbiwgZS5nLiBwZXJoYXBzIHdlIG9ubHkgd2FudCB0byBjaGFuZ2UgdGhlIHVzZXIKKyAgICBib290X3BhdHRlcm5zX2ZsYWdzID0gZC5nZXRWYXJGbGFncygnVEVTVElNQUdFX0JPT1RfUEFUVEVSTlMnKSBvciB7fQorICAgIGlmIGJvb3RfcGF0dGVybnNfZmxhZ3M6CisgICAgICAgIHBhdHRlcm5zX3NldCA9IFtwIGZvciBwIGluIGJvb3RfcGF0dGVybnNfZmxhZ3MuaXRlbXMoKSBpZiBwWzBdIGluIGQuZ2V0VmFyKCdURVNUSU1BR0VfQk9PVF9QQVRURVJOUycpLnNwbGl0KCldCisgICAgICAgIGZvciBmbGFnLCBmbGFndmFsIGluIHBhdHRlcm5zX3NldDoKKyAgICAgICAgICAgICAgICBpZiBmbGFnIG5vdCBpbiBhY2NlcHRlZF9wYXR0ZXJuczoKKyAgICAgICAgICAgICAgICAgICAgYmIuZmF0YWwoJ1Rlc3RpbWFnZTogVGhlIG9ubHkgYWNjZXB0ZWQgYm9vdCBwYXR0ZXJucyBhcmU6IHNlYXJjaF9yZWFjaGVkX3Byb21wdCxzZW5kX2xvZ2luX3VzZXIsIFwKKyAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2xvZ2luX3N1Y2NlZWRlZCxzZWFyY2hfY21kX2ZpbmlzaGVkXG4gTWFrZSBzdXJlIHlvdXIgVEVTVElNQUdFX0JPT1RfUEFUVEVSTlM9JXMgXAorICAgICAgICAgICAgICAgICAgICBjb250YWlucyBhbiBhY2NlcHRlZCBmbGFnLicgJSBkLmdldFZhcignVEVTVElNQUdFX0JPT1RfUEFUVEVSTlMnKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgIyBXZSBrbm93IGJvb3QgcHJvbXB0IGlzIHNlYXJjaGVkIHRocm91Z2ggaW4gYmluYXJ5IGZvcm1hdCwgb3RoZXJzIG1pZ2h0IGJlIGV4cHJlc3Npb25zCisgICAgICAgICAgICAgICAgaWYgZmxhZyA9PSAnc2VhcmNoX3JlYWNoZWRfcHJvbXB0JzoKKyAgICAgICAgICAgICAgICAgICAgYm9vdF9wYXR0ZXJuc1tmbGFnXSA9IGZsYWd2YWwuZW5jb2RlKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBib290X3BhdHRlcm5zW2ZsYWddID0gZmxhZ3ZhbC5lbmNvZGUoKS5kZWNvZGUoJ3VuaWNvZGUtZXNjYXBlJykKKyAgICByZXR1cm4gYm9vdF9wYXR0ZXJucworCisKIGRlZiB0ZXN0aW1hZ2VfbWFpbihkKToKICAgICBpbXBvcnQgb3MKICAgICBpbXBvcnQganNvbgpAQCAtMTY4LDcgKzIwNiwxMSBAQAogICAgICAgICAiIiIKICAgICAgICAgQ2F0Y2ggU0lHVEVSTSBmcm9tIHdvcmtlciBpbiBvcmRlciB0byBzdG9wIHFlbXUuCiAgICAgICAgICIiIgotICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKyAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbmFsLlNJR0lOVCkKKworICAgIGRlZiBoYW5kbGVfdGVzdF90aW1lb3V0KHRpbWVvdXQpOgorICAgICAgICBiYi53YXJuKCJHbG9iYWwgdGVzdCB0aW1lb3V0IHJlYWNoZWQgKCVzIHNlY29uZHMpLCBzdG9wcGluZyB0aGUgdGVzdHMuIiAlKHRpbWVvdXQpKQorICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWduYWwuU0lHSU5UKQogCiAgICAgdGVzdGltYWdlX3Nhbml0eShkKQogCkBAIC0yMDcsNyArMjQ5LDcgQEAKICAgICBpZiBkLmdldFZhcigiVEVTVF9UQVJHRVQiKSA9PSAicWVtdSI6CiAgICAgICAgIGZzdHlwZXMgPSBbZnMgZm9yIGZzIGluIGZzdHlwZXMgaWYgZnMgaW4gc3VwcG9ydGVkX2ZzdHlwZXNdCiAgICAgICAgIGlmIG5vdCBmc3R5cGVzOgotICAgICAgICAgICAgYmIuZmF0YWwoJ1Vuc3VwcG9ydGVkIGltYWdlIHR5cGUgYnVpbHQuIEFkZCBhIGNvbXB0aWJsZSBpbWFnZSB0byAnCisgICAgICAgICAgICBiYi5mYXRhbCgnVW5zdXBwb3J0ZWQgaW1hZ2UgdHlwZSBidWlsdC4gQWRkIGEgY29tcGF0aWJsZSBpbWFnZSB0byAnCiAgICAgICAgICAgICAgICAgICAgICAnSU1BR0VfRlNUWVBFUy4gU3VwcG9ydGVkIHR5cGVzOiAlcycgJQogICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKHN1cHBvcnRlZF9mc3R5cGVzKSkKICAgICBxZnN0eXBlID0gZnN0eXBlc1swXQpAQCAtMjM5LDExICsyODEsMTQgQEAKICAgICAjIEdldCB1c2Vfa3ZtCiAgICAga3ZtID0gb2UudHlwZXMucWVtdV91c2Vfa3ZtKGQuZ2V0VmFyKCdRRU1VX1VTRV9LVk0nKSwgZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJykpCiAKKyAgICAjIEdldCBPVk1GCisgICAgb3ZtZiA9IGQuZ2V0VmFyKCJRRU1VX1VTRV9PVk1GIikKKwogICAgIHNsaXJwID0gRmFsc2UKICAgICBpZiBkLmdldFZhcigiUUVNVV9VU0VfU0xJUlAiKToKICAgICAgICAgc2xpcnAgPSBUcnVlCiAKLSAgICAjIFRPRE86IFdlIHVzZSB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGluIG9mIHFlbXUgcnVubmVyIGJlY2F1c2Ugb2YKKyAgICAjIFRPRE86IFdlIHVzZSB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBxZW11IHJ1bm5lciBiZWNhdXNlIG9mCiAgICAgIyB0aW1lIGNvbnN0cmFpbnMsIHFlbXUgcnVubmVyIHJlYWxseSBuZWVkcyBhIHJlZmFjdG9yIHRvby4KICAgICB0YXJnZXRfa3dhcmdzID0geyAnbWFjaGluZScgICAgIDogbWFjaGluZSwKICAgICAgICAgICAgICAgICAgICAgICAncm9vdGZzJyAgICAgIDogcm9vdGZzLApAQCAtMjU2LDggKzMwMSwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICdrdm0nICAgICAgICAgOiBrdm0sCiAgICAgICAgICAgICAgICAgICAgICAgJ3NsaXJwJyAgICAgICA6IHNsaXJwLAogICAgICAgICAgICAgICAgICAgICAgICdkdW1wX2RpcicgICAgOiBkLmdldFZhcigiVEVTVElNQUdFX0RVTVBfRElSIiksCisgICAgICAgICAgICAgICAgICAgICAgJ3NlcmlhbF9wb3J0cyc6IGxlbihkLmdldFZhcigiU0VSSUFMX0NPTlNPTEVTIikuc3BsaXQoKSksCisgICAgICAgICAgICAgICAgICAgICAgJ292bWYnICAgICAgICA6IG92bWYsCiAgICAgICAgICAgICAgICAgICAgIH0KIAorICAgIGlmIGQuZ2V0VmFyKCJURVNUSU1BR0VfQk9PVF9QQVRURVJOUyIpOgorICAgICAgICB0YXJnZXRfa3dhcmdzWydib290X3BhdHRlcm5zJ10gPSBnZXRfdGVzdGltYWdlX2Jvb3RfcGF0dGVybnMoZCkKKwogICAgICMgVE9ETzogQ3VycmVudGx5IEJCUEFUSCBpcyBuZWVkZWQgZm9yIGN1c3RvbSBsb2FkaW5nIG9mIHRhcmdldHMuCiAgICAgIyBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gZmluZCB0aGVzZSBtb2R1bGVzIHVzaW5nIGluc3Ryb3NwZWN0aW9uLgogICAgIHRhcmdldF9rd2FyZ3NbJ3RhcmdldF9tb2R1bGVzX3BhdGgnXSA9IGQuZ2V0VmFyKCdCQlBBVEgnKQpAQCAtMzE5LDEwICszNjksMTUgQEAKICAgICAgICAgIyBXZSBuZWVkIHRvIGNoZWNrIGlmIHJ1bnFlbXUgZW5kcyB1bmV4cGVjdGVkbHkKICAgICAgICAgIyBvciBpZiB0aGUgd29ya2VyIHNlbmQgdXMgYSBTSUdURVJNCiAgICAgICAgIHRjLnRhcmdldC5zdGFydChwYXJhbXM9ZC5nZXRWYXIoIlRFU1RfUUVNVVBBUkFNUyIpLCBydW5xZW11cGFyYW1zPWQuZ2V0VmFyKCJURVNUX1JVTlFFTVVQQVJBTVMiKSkKKyAgICAgICAgaW1wb3J0IHRocmVhZGluZworICAgICAgICB0cnk6CisgICAgICAgICAgICB0aHJlYWRpbmcuVGltZXIoaW50KGQuZ2V0VmFyKCJURVNUX09WRVJBTExfVElNRU9VVCIpKSwgaGFuZGxlX3Rlc3RfdGltZW91dCwgKGludChkLmdldFZhcigiVEVTVF9PVkVSQUxMX1RJTUVPVVQiKSksKSkuc3RhcnQoKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKICAgICAgICAgcmVzdWx0cyA9IHRjLnJ1blRlc3RzKCkKLSAgICBleGNlcHQgKFJ1bnRpbWVFcnJvciwgQmxvY2tpbmdJT0Vycm9yKSBhcyBlcnI6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UoZXJyLCBSdW50aW1lRXJyb3IpOgotICAgICAgICAgICAgYmIuZXJyb3IoJ3Rlc3RpbWFnZSByZWNlaXZlZCBTSUdURVJNLCBzaHV0dGluZyBkb3duLi4uJykKKyAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBCbG9ja2luZ0lPRXJyb3IpIGFzIGVycjoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShlcnIsIEtleWJvYXJkSW50ZXJydXB0KToKKyAgICAgICAgICAgIGJiLmVycm9yKCd0ZXN0aW1hZ2UgaW50ZXJydXB0ZWQsIHNodXR0aW5nIGRvd24uLi4nKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgYmIuZXJyb3IoJ3J1bnFlbXUgZmFpbGVkLCBzaHV0dGluZyBkb3duLi4uJykKICAgICAgICAgaWYgcmVzdWx0czoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3RleGluZm8uYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3RleGluZm8uYmJjbGFzcwppbmRleCA2YjBkZWYwLi5mNDZiYWNhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy90ZXhpbmZvLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvdGV4aW5mby5iYmNsYXNzCkBAIC02LDEzICs2LDEzIEBACiAjIFRleGluZm8gcmVjaXBlLCB5b3UgY2FuIHJlbW92ZSB0ZXhpbmZvLW5hdGl2ZSBmcm9tIEFTU1VNRV9QUk9WSURFRCBhbmQKICMgbWFrZWluZm8gZnJvbSBTQU5JVFlfUkVRVUlSRURfVVRJTElUSUVTLgogCi1URVhERVAgPSAidGV4aW5mby1uYXRpdmUiCitURVhERVAgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdhcGktZG9jdW1lbnRhdGlvbicsICd0ZXhpbmZvLXJlcGxhY2VtZW50LW5hdGl2ZScsICd0ZXhpbmZvLWR1bW15LW5hdGl2ZScsIGQpfSIKIFRFWERFUF9jbGFzcy1uYXRpdmUgPSAidGV4aW5mby1kdW1teS1uYXRpdmUiCiBURVhERVBfY2xhc3MtY3Jvc3MgPSAidGV4aW5mby1kdW1teS1uYXRpdmUiCitURVhERVBfY2xhc3MtY3Jvc3NzZGsgPSAidGV4aW5mby1kdW1teS1uYXRpdmUiCitURVhERVBfY2xhc3MtY3Jvc3MtY2FuYWRpYW4gPSAidGV4aW5mby1kdW1teS1uYXRpdmUiCiBERVBFTkRTX2FwcGVuZCA9ICIgJHtURVhERVB9IgotUEFUSF9wcmVwZW5kX2NsYXNzLW5hdGl2ZSA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vdGV4aW5mby1kdW1teS1uYXRpdmU6IgotUEFUSF9wcmVwZW5kX2NsYXNzLWNyb3NzID0gIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS90ZXhpbmZvLWR1bW15LW5hdGl2ZToiCiAKICMgbGlidG9vbC1jcm9zcyBkb2Vzbid0IGluaGVyaXQgY3Jvc3MKIFRFWERFUF9wbi1saWJ0b29sLWNyb3NzID0gInRleGluZm8tZHVtbXktbmF0aXZlIgotUEFUSF9wcmVwZW5kX3BuLWxpYnRvb2wtY3Jvc3MgPSAiJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3RleGluZm8tZHVtbXktbmF0aXZlOiIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvdG9hc3Rlci5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvdG9hc3Rlci5iYmNsYXNzCmluZGV4IDZjZWYwYjguLjk1MThkZGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3RvYXN0ZXIuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy90b2FzdGVyLmJiY2xhc3MKQEAgLTExMyw3ICsxMTMsNyBAQAogICAgICAgICAgICAgICAgIHBhc3MgICAgIyBpZ25vcmUgbGluZXMgd2l0aG91dCB2YWxpZCBrZXk6IHZhbHVlIHBhaXJzCiAgICAgcmV0dXJuIHBrZ2RhdGEKIAotcHl0aG9uIHRvYXN0ZXJfcGFja2FnZV9kdW1wZGF0YSgpIHsKK2RlZiBfdG9hc3Rlcl9kdW1wZGF0YShwa2dkYXRhZGlyLCBkKToKICAgICAiIiIKICAgICBEdW1wcyB0aGUgZGF0YSBhYm91dCB0aGUgcGFja2FnZXMgY3JlYXRlZCBieSBhIHJlY2lwZQogICAgICIiIgpAQCAtMTIyLDE2ICsxMjIsMjQgQEAKICAgICBpZiBub3QgZC5nZXRWYXIoJ1BBQ0tBR0VTJyk6CiAgICAgICAgIHJldHVybgogCi0gICAgcGtnZGF0YWRpciA9IGQuZ2V0VmFyKCdQS0dERVNUV09SSycpCiAgICAgbHBrZ2RhdGEgPSB7fQogICAgIGRhdGFkaXIgPSBvcy5wYXRoLmpvaW4ocGtnZGF0YWRpciwgJ3J1bnRpbWUnKQogCiAgICAgIyBzY2FuIGFuZCBzZW5kIGRhdGEgZm9yIGVhY2ggZ2VuZXJhdGVkIHBhY2thZ2UKLSAgICBmb3IgZGF0YWZpbGUgaW4gb3MubGlzdGRpcihkYXRhZGlyKToKLSAgICAgICAgaWYgbm90IGRhdGFmaWxlLmVuZHN3aXRoKCcucGFja2FnZWQnKToKLSAgICAgICAgICAgIGxwa2dkYXRhID0gX3RvYXN0ZXJfbG9hZF9wa2dkYXRhZmlsZShkYXRhZGlyLCBkYXRhZmlsZSkKLSAgICAgICAgICAgICMgRmlyZSBhbiBldmVudCBjb250YWluaW5nIHRoZSBwa2cgZGF0YQotICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5NZXRhZGF0YUV2ZW50KCJTaW5nbGVQYWNrYWdlSW5mbyIsIGxwa2dkYXRhKSwgZCkKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhkYXRhZGlyKToKKyAgICAgICAgZm9yIGRhdGFmaWxlIGluIG9zLmxpc3RkaXIoZGF0YWRpcik6CisgICAgICAgICAgICBpZiBub3QgZGF0YWZpbGUuZW5kc3dpdGgoJy5wYWNrYWdlZCcpOgorICAgICAgICAgICAgICAgIGxwa2dkYXRhID0gX3RvYXN0ZXJfbG9hZF9wa2dkYXRhZmlsZShkYXRhZGlyLCBkYXRhZmlsZSkKKyAgICAgICAgICAgICAgICAjIEZpcmUgYW4gZXZlbnQgY29udGFpbmluZyB0aGUgcGtnIGRhdGEKKyAgICAgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50Lk1ldGFkYXRhRXZlbnQoIlNpbmdsZVBhY2thZ2VJbmZvIiwgbHBrZ2RhdGEpLCBkKQorCitweXRob24gdG9hc3Rlcl9wYWNrYWdlX2R1bXBkYXRhKCkgeworICAgIF90b2FzdGVyX2R1bXBkYXRhKGQuZ2V0VmFyKCdQS0dERVNUV09SSycpLCBkKQorfQorCitweXRob24gdG9hc3Rlcl9wYWNrYWdlZGF0YV9kdW1wZGF0YSgpIHsKKyAgICAjIFRoaXMgcGF0aCBuZWVkcyB0byBtYXRjaCBkb19wYWNrYWdlZGF0YVtzc3RhdGUtaW5wdXRkaXJzXQorICAgIF90b2FzdGVyX2R1bXBkYXRhKG9zLnBhdGguam9pbihkLmdldFZhcignV09SS0RJUicpLCAncGtnZGF0YS1wZGF0YS1pbnB1dCcpLCBkKQogfQogCiAjIDIuIER1bXAgb3V0cHV0IGltYWdlIGZpbGVzIGluZm9ybWF0aW9uCkBAIC0zNjYsOCArMzc0LDggQEAKIGFkZGhhbmRsZXIgdG9hc3Rlcl9hcnRpZmFjdHMKIHRvYXN0ZXJfYXJ0aWZhY3RzW2V2ZW50bWFza10gPSAiYmIucnVucXVldWUucnVuUXVldWVUYXNrU2tpcHBlZCBiYi5ydW5xdWV1ZS5ydW5RdWV1ZVRhc2tDb21wbGV0ZWQiCiAKLWRvX3BhY2thZ2VkYXRhX3NldHNjZW5lW3Bvc3RmdW5jc10gKz0gInRvYXN0ZXJfcGFja2FnZV9kdW1wZGF0YSAiCi1kb19wYWNrYWdlZGF0YV9zZXRzY2VuZVt2YXJkZXBzZXhjbHVkZV0gKz0gInRvYXN0ZXJfcGFja2FnZV9kdW1wZGF0YSAiCitkb19wYWNrYWdlZGF0YV9zZXRzY2VuZVtwb3N0ZnVuY3NdICs9ICJ0b2FzdGVyX3BhY2thZ2VkYXRhX2R1bXBkYXRhICIKK2RvX3BhY2thZ2VkYXRhX3NldHNjZW5lW3ZhcmRlcHNleGNsdWRlXSArPSAidG9hc3Rlcl9wYWNrYWdlZGF0YV9kdW1wZGF0YSAiCiAKIGRvX3BhY2thZ2VbcG9zdGZ1bmNzXSArPSAidG9hc3Rlcl9wYWNrYWdlX2R1bXBkYXRhICIKIGRvX3BhY2thZ2VbdmFyZGVwc2V4Y2x1ZGVdICs9ICJ0b2FzdGVyX3BhY2thZ2VfZHVtcGRhdGEgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvdW5pbmF0aXZlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy91bmluYXRpdmUuYmJjbGFzcwppbmRleCA5Zjg2NDVhLi43MDc5OWJiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy91bmluYXRpdmUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy91bmluYXRpdmUuYmJjbGFzcwpAQCAtMSw0ICsxLDQgQEAKLVVOSU5BVElWRV9MT0FERVIgPz0gIiR7VU5JTkFUSVZFX1NUQUdJTkdfRElSfS11bmluYXRpdmUvJHtCVUlMRF9BUkNIfS1saW51eC9saWIvJHtAYmIudXRpbHMuY29udGFpbnMoJ0JVSUxEX0FSQ0gnLCAneDg2XzY0JywgJ2xkLWxpbnV4LXg4Ni02NC5zby4yJywgJycsIGQpfSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCVUlMRF9BUkNIJywgJ2k2ODYnLCAnbGQtbGludXguc28uMicsICcnLCBkKX0ke0BiYi51dGlscy5jb250YWlucygnQlVJTERfQVJDSCcsICdhYXJjaDY0JywgJ2xkLWxpbnV4LWFhcmNoNjQuc28uMScsICcnLCBkKX0iCitVTklOQVRJVkVfTE9BREVSID89ICIke1VOSU5BVElWRV9TVEFHSU5HX0RJUn0tdW5pbmF0aXZlLyR7QlVJTERfQVJDSH0tbGludXgvbGliLyR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCVUlMRF9BUkNIJywgJ3g4Nl82NCcsICdsZC1saW51eC14ODYtNjQuc28uMicsICcnLCBkKX0ke0BiYi51dGlscy5jb250YWlucygnQlVJTERfQVJDSCcsICdpNjg2JywgJ2xkLWxpbnV4LnNvLjInLCAnJywgZCl9JHtAYmIudXRpbHMuY29udGFpbnMoJ0JVSUxEX0FSQ0gnLCAnYWFyY2g2NCcsICdsZC1saW51eC1hYXJjaDY0LnNvLjEnLCAnJywgZCl9JHtAYmIudXRpbHMuY29udGFpbnMoJ0JVSUxEX0FSQ0gnLCAncHBjNjRsZScsICdsZDY0LnNvLjInLCAnJywgZCl9IgogVU5JTkFUSVZFX1NUQUdJTkdfRElSID89ICIke1NUQUdJTkdfRElSfSIKIAogVU5JTkFUSVZFX1VSTCA/PSAidW5zZXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy92YWxhLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy92YWxhLmJiY2xhc3MKaW5kZXggNjE1ZWIzNy4uYmNhZjY4YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvdmFsYS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3ZhbGEuYmJjbGFzcwpAQCAtOCw3ICs4LDcgQEAKICMgT3VyIHBhdGNoZWQgdmVyc2lvbiBvZiBWYWxhIGxvb2tzIGluIFNUQUdJTkdfREFUQURJUiBmb3IgLnZhcGkgZmlsZXMKIGV4cG9ydCBTVEFHSU5HX0RBVEFESVIKICMgVXBzdHJlYW0gVmFsYSA+PSAwLjExIGxvb2tzIGluIFhER19EQVRBX0RJUlMgZm9yIC52YXBpIGZpbGVzCi1leHBvcnQgWERHX0RBVEFfRElSUyA9ICIke1NUQUdJTkdfREFUQURJUn0iCitleHBvcnQgWERHX0RBVEFfRElSUyA9ICIke1NUQUdJTkdfREFUQURJUn06JHtTVEFHSU5HX0xJQkRJUn0iCiAKICMgUGFja2FnZSBhZGRpdGlvbmFsIGZpbGVzCiBGSUxFU18ke1BOfS1kZXYgKz0gIlwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2FiaV92ZXJzaW9uLmNvbmYgYi9wb2t5L21ldGEvY29uZi9hYmlfdmVyc2lvbi5jb25mCmluZGV4IDQ5NjQ4ODAuLjJiZGM1NTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2FiaV92ZXJzaW9uLmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvYWJpX3ZlcnNpb24uY29uZgpAQCAtNSwzICs1LDExIEBACiAjIHdpdGggZ2VuZXJhbCBhZ3JlZW1lbnQgZnJvbSB0aGUgY29yZSB0ZWFtLgogIwogT0VMQVlPVVRfQUJJID0gIjEyIgorCisjCisjIEhBU0hFUVVJVl9IQVNIX1ZFUlNJT04gaXMgaW5qZWN0ZWQgaW50byB0aGUgb3V0cHV0IGhhc2ggY2FsY3VsYXRpb24gdXNlZCBieQorIyBoYXNoZXF1aXYuIENoYW5naW5nIHRoaXMgbWVhbnMgcHJldmlvdXMgaGFzaGVzIHdpbGwgbm8gbG9uZ2VyIG1hdGNoLCBhbGxvd2luZworIyBhIHJlc2V0IG9mIHRoZSBlcXVpdmFsZW5jZSwgZm9yIGV4YW1wbGUgd2hlbiByZXByb2R1Y2liaWxpdHkgaXNzdWVzIGJyZWFrIHRoZQorIyBleGlzdGluZyBtYXRjaCBkYXRhLiBEaXN0cm9zIGNhbiBhbHNvIGFwcGVuZCB0byB0aGlzIHZhbHVlIGZvciB0aGUgc2FtZSBlZmZlY3QuCisjCitIQVNIRVFVSVZfSEFTSF9WRVJTSU9OICA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mIGIvcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mCmluZGV4IDI2M2Q4YWUuLjRiNTQ0YTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2JpdGJha2UuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9iaXRiYWtlLmNvbmYKQEAgLTExLDYgKzExLDcgQEAKIGJhc2VsaWJbdmFyZGVwdmFsdWVdID0gIiR7YmFzZWxpYn0iCiBCQVNFTElCID0gImxpYiIKIEJBU0VMSUJfcG93ZXJwYzY0ID0gImxpYjY0IgorQkFTRUxJQl9wb3dlcnBjNjRsZSA9ICJsaWI2NCIKIAogIyBQYXRoIHByZWZpeGVzCiBleHBvcnQgYmFzZV9wcmVmaXggPSAiIgpAQCAtMTI5LDcgKzEzMCw3IEBACiBUQVJHRVRfQVJDSCA9ICIke1RVTkVfQVJDSH0iCiBUQVJHRVRfT1MgPSAibGludXgke0xJQkNFWFRFTlNJT059JHtBQklFWFRFTlNJT059IgogVEFSR0VUX1ZFTkRPUiA9ICItb2UiCi1UQVJHRVRfU1lTID0gIiR7VEFSR0VUX0FSQ0h9JHtUQVJHRVRfVkVORE9SfSR7QFsnLScgKyBkLmdldFZhcignVEFSR0VUX09TJyksICcnXVtkLmdldFZhcignVEFSR0VUX09TJykgPT0gKCcnIG9yICdjdXN0b20nKV19IgorVEFSR0VUX1NZUyA9ICIke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0tJHtUQVJHRVRfT1N9IgogVEFSR0VUX1BSRUZJWCA9ICIke1RBUkdFVF9TWVN9LSIKIFRBUkdFVF9DQ19BUkNIID0gIiR7VFVORV9DQ0FSR1N9IgogVEFSR0VUX0xEX0FSQ0ggPSAiJHtUVU5FX0xEQVJHU30iCkBAIC0xMzgsNyArMTM5LDcgQEAKIFNES01BQ0hJTkUgPz89ICJ4ODZfNjQiCiBTREtfT1MgPSAiJHtCVUlMRF9PU30iCiBTREtfVkVORE9SID0gIi1vZXNkayIKLVNES19TWVMgPSAiJHtTREtfQVJDSH0ke1NES19WRU5ET1J9JHtAWyctJyArIGQuZ2V0VmFyKCdTREtfT1MnKSwgJyddW2QuZ2V0VmFyKCdTREtfT1MnKSA9PSAoJycgb3IgJ2N1c3RvbScpXX0iCitTREtfU1lTID0gIiR7U0RLX0FSQ0h9JHtTREtfVkVORE9SfS0ke1NES19PU30iCiBTREtfUFJFRklYID0gIiR7U0RLX1NZU30tIgogU0RLX0NDX0FSQ0ggPSAiJHtCVUlMRF9DQ19BUkNIfSIKIFNES1BLR1NVRkZJWCA9ICJuYXRpdmVzZGsiCkBAIC0zMjQsNyArMzI1LDcgQEAKIFNFQ1RJT05fJHtQTn0tc3RhdGljZGV2ID0gImRldmVsIgogUkRFUEVORFNfJHtQTn0tc3RhdGljZGV2ID0gIiR7UE59LWRldiAoPSAke0VYVEVORFBLR1Z9KSIKIAotRklMRVNfJHtQTn0tZGJnID0gIi91c3IvbGliL2RlYnVnIC91c3Ivc3JjL2RlYnVnIgorRklMRVNfJHtQTn0tZGJnID0gIi91c3IvbGliL2RlYnVnIC91c3IvbGliL2RlYnVnLXN0YXRpYyAvdXNyL3NyYy9kZWJ1ZyIKIFNFQ1RJT05fJHtQTn0tZGJnID0gImRldmVsIgogQUxMT1dfRU1QVFlfJHtQTn0tZGJnID0gIjEiCiAKQEAgLTQyOSw3ICs0MzAsOCBAQAogT0xERVNUX0tFUk5FTCA9ICIzLjIuMCIKIE9MREVTVF9LRVJORUxfYWFyY2g2NCA9ICIzLjE0IgogT0xERVNUX0tFUk5FTF9uaW9zMiA9ICIzLjE5IgotT0xERVNUX0tFUk5FTF9yaXNjdjMyID0gIjQuMTUiCitPTERFU1RfS0VSTkVMX3Bvd2VycGM2NGxlID0gIjMuMTAuMCIKK09MREVTVF9LRVJORUxfcmlzY3YzMiA9ICI1LjQiCiBPTERFU1RfS0VSTkVMX3Jpc2N2NjQgPSAiNC4xNSIKIAogIyBTREtfT0xERVNUX0tFUk5FTCBjYW4ndCBiZSBzZXQgdXNpbmcgb3ZlcnJpZGVzIHNpbmNlIHRoZXJlIGFyZQpAQCAtNDgxLDE0ICs0ODMsMTQgQEAKIEhPU1RUT09MU19ESVIgPSAiJHtUTVBESVJ9L2hvc3R0b29scyIKIAogIyBUb29scyBuZWVkZWQgdG8gcnVuIGJ1aWxkcyB3aXRoIE9FLUNvcmUKLSMgcHl0aG9uIGlzIHNwZWNpYWwgY2FzZWQgdG8gcG9pbnQgYXQgcHl0aG9uMgogSE9TVFRPT0xTICs9ICIgXAogICAgIFsgYXIgYXMgYXdrIGJhc2VuYW1lIGJhc2ggYnppcDIgY2F0IGNoZ3JwIGNobW9kIGNob3duIGNocnBhdGggY21wIGNvbW0gY3AgY3BpbyBcCiAgICAgY3BwIGN1dCBkYXRlIGRkIGRpZmYgZGlmZnN0YXQgZGlybmFtZSBkdSBlY2hvIGVncmVwIGVudiBleHBhbmQgZXhwciBmYWxzZSBcCiAgICAgZmdyZXAgZmlsZSBmaW5kIGZsb2NrIGcrKyBnYXdrIGdjYyBnZXRjb25mIGdldG9wdCBnaXQgZ3JlcCBndW56aXAgZ3ppcCBcCi0gICAgaGVhZCBob3N0bmFtZSBpY29udiBpZCBpbnN0YWxsIGxkIGxkZCBsbiBscyBtYWtlIG1ha2VpbmZvIG1kNXN1bSBta2RpciBta25vZCBcCi0gICAgbWt0ZW1wIG12IG5tIG9iamNvcHkgb2JqZHVtcCBvZCBwYXRjaCBwZXJsIHBvZDJtYW4gcHIgcHJpbnRmIHB3ZCBweXRob24yIFwKLSAgICBweXRob24yLjcgcHl0aG9uMyByYW5saWIgcmVhZGVsZiByZWFkbGluayByZWFscGF0aCBybSBybWRpciBycGNnZW4gc2VkIHNlcSBzaCBzaGEyNTZzdW0gXAorICAgIGhlYWQgaG9zdG5hbWUgaWNvbnYgaWQgaW5zdGFsbCBsZCBsZGQgbG4gbHMgbWFrZSBtZDVzdW0gbWtkaXIgbWtub2QgXAorICAgIG1rdGVtcCBtdiBubSBvYmpjb3B5IG9iamR1bXAgb2QgcGF0Y2ggcGVybCBwciBwcmludGYgcHdkIFwKKyAgICBweXRob24zIHJhbmxpYiByZWFkZWxmIHJlYWRsaW5rIHJlYWxwYXRoIHJtIHJtZGlyIHJwY2dlbiBzZWQgc2VxIHNoIFwKKyAgICBzaGExc3VtIHNoYTIyNHN1bSBzaGEyNTZzdW0gc2hhMzg0c3VtIHNoYTUxMnN1bSBcCiAgICAgc2xlZXAgc29ydCBzcGxpdCBzdGF0IHN0cmluZ3Mgc3RyaXAgdGFpbCB0YXIgdGVlIHRlc3QgdG91Y2ggdHIgdHJ1ZSB1bmFtZSBcCiAgICAgdW5pcSB3YyB3Z2V0IHdoaWNoIHhhcmdzIFwKICIKQEAgLTU4Nyw4ICs1ODksNiBAQAogQlVJTERTREtfTERGTEFHUyA9ICItV2wsLU8xIgogCiBMSU5LRVJfSEFTSF9TVFlMRSA/Pz0gImdudSIKLSMgbWlwcyBkb2VzIG5vdCBzdXBwb3J0IEdOVSBoYXNoIHN0eWxlIHRoZXJlZm9yZSB3ZSBvdmVycmlkZQotTElOS0VSX0hBU0hfU1RZTEVfbWlwc2FyY2ggPSAic3lzdiIKIAogVEFSR0VUX0xJTktfSEFTSF9TVFlMRSA/PSAiJHtAWyctV2wsLS1oYXNoLXN0eWxlPWdudScsJyddW2QuZ2V0VmFyKCdMSU5LRVJfSEFTSF9TVFlMRScpICE9ICdnbnUnXX0iCiAKQEAgLTU5Niw2ICs1OTYsOCBAQAogCiBleHBvcnQgTERGTEFHUyA9ICIke1RBUkdFVF9MREZMQUdTfSIKIFRBUkdFVF9MREZMQUdTID0gIi1XbCwtTzEgJHtUQVJHRVRfTElOS19IQVNIX1NUWUxFfSAke0FTTkVFREVEfSIKKyMgbWlwcyBkb2VzIG5vdCBzdXBwb3J0IEdOVSBoYXNoIHN0eWxlIHRoZXJlZm9yZSB3ZSBvdmVycmlkZQorTElOS0VSX0hBU0hfU1RZTEVfbWlwc2FyY2hfbGliYy1tdXNsID0gInN5c3YiCiAKICMgUGFzcyBwYXJhbGxlbCBtYWtlIG9wdGlvbnMgdG8gdGhlIGNvbXBpbGUgdGFzawogRVhUUkFfT0VNQUtFX3ByZXBlbmRfdGFzay1jb21waWxlID0gIiR7UEFSQUxMRUxfTUFLRX0gIgpAQCAtNzkzLDcgKzc5NSwxMCBAQAogUEFSQUxMRUxfTUFLRSA/PSAiLWogJHtAb2UudXRpbHMuY3B1X2NvdW50KCl9IgogCiAjIERlZmF1bHQgcGFyYWxsZWxpc20gYW5kIHJlc291cmNlIHVzYWdlIGZvciB4egotWFpfREVGQVVMVFMgPz0gIi0tbWVtbGltaXQ9NTAlIC0tdGhyZWFkcz0ke0BvZS51dGlscy5jcHVfY291bnQoKX0iCitYWl9NRU1MSU1JVCA/PSAiNTAlIgorWFpfVEhSRUFEUyA/PSAiJHtAb2UudXRpbHMuY3B1X2NvdW50KGF0X2xlYXN0PTIpfSIKK1haX0RFRkFVTFRTID89ICItLW1lbWxpbWl0PSR7WFpfTUVNTElNSVR9IC0tdGhyZWFkcz0ke1haX1RIUkVBRFN9IgorWFpfREVGQVVMVFNbdmFyZGVwc2V4Y2x1ZGVdICs9ICJYWl9NRU1MSU1JVCBYWl9USFJFQURTIgogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgTWFnaWMgQ29va2llIGZvciBTQU5JVFkgQ0hFQ0sKQEAgLTg4NSw3ICs4OTAsNyBAQAogICAgIGZpbGUtY2hlY2tzdW1zIHB5dGhvbiBmdW5jIHRhc2sgZXhwb3J0IHVuZXhwb3J0IG5vZXhlYyBub3N0YW1wIGRpcnMgY2xlYW5kaXJzIFwKICAgICBzc3RhdGUtbG9ja2ZpbGUtc2hhcmVkIHByZWZ1bmNzIHBvc3RmdW5jcyBleHBvcnRfZnVuYyBkZXB0YXNrIHJkZXB0YXNrIFwKICAgICByZWNyZGVwdGFzayBub2RlcHJyZWNzIHN0YW1wLWV4dHJhLWluZm8gc3N0YXRlLW91dHB1dGRpcnMgZmlsZW5hbWUgbGluZW5vIFwKLSAgICBwcm9ncmVzcyBtY2RlcGVuZHMiCisgICAgcHJvZ3Jlc3MgbWNkZXBlbmRzIG51bWJlcl90aHJlYWRzIgogCiBNTFBSRUZJWCA/Pz0gIiIKIE1VTFRJTElCX1ZBUklBTlRTID8/PSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1kaXN0cm92YXJzLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtZGlzdHJvdmFycy5pbmMKaW5kZXggMTBkODZjZi4uNDMzZDRiNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1kaXN0cm92YXJzLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LWRpc3Ryb3ZhcnMuaW5jCkBAIC0xMCw3ICsxMCw3IEBACiBMT0NBTEVfVVRGOF9JU19ERUZBVUxUID89ICIxIgogTE9DQUxFX1VURjhfSVNfREVGQVVMVF9jbGFzcy1uYXRpdmVzZGsgPSAiMCIKIAotRElTVFJPX0ZFQVRVUkVTX0RFRkFVTFQgPz0gImFjbCBhbHNhIGFyZ3AgYmx1ZXRvb3RoIGV4dDIgaXB2NCBpcHY2IGxhcmdlZmlsZSBwY21jaWEgdXNiZ2FkZ2V0IHVzYmhvc3Qgd2lmaSB4YXR0ciBuZnMgemVyb2NvbmYgcGNpIDNnIG5mYyB4MTEiCitESVNUUk9fRkVBVFVSRVNfREVGQVVMVCA/PSAiYWNsIGFsc2EgYXJncCBibHVldG9vdGggZXh0MiBpcHY0IGlwdjYgbGFyZ2VmaWxlIHBjbWNpYSB1c2JnYWRnZXQgdXNiaG9zdCB3aWZpIHhhdHRyIG5mcyB6ZXJvY29uZiBwY2kgM2cgbmZjIHgxMSB2ZmF0IgogRElTVFJPX0ZFQVRVUkVTID89ICIke0RJU1RST19GRUFUVVJFU19ERUZBVUxUfSIKIElNQUdFX0ZFQVRVUkVTID89ICIiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2Rpc3Ryb19hbGlhcy5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kaXN0cm9fYWxpYXMuaW5jCmluZGV4IGUzMTQ2NDIuLjBlNGE5YTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2Rpc3Ryb19hbGlhcy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGlzdHJvX2FsaWFzLmluYwpAQCAtMTUsNyArMTUsOCBAQAogRElTVFJPX1BOX0FMSUFTX3BuLWF0ayA9ICJGZWRvcmE9YXRrIE9wZW5TdVNFPWF0ayIKIERJU1RST19QTl9BTElBU19wbi1hdmFoaS11aSA9ICJVYnVudHU9YXZhaGktZGlzY292ZXIgRGViaWFuPWF2YWhpLWRpc2NvdmVyIgogRElTVFJPX1BOX0FMSUFTX3BuLWJhYmVsdHJhY2UgPSAiT1NQRFQiCi1ESVNUUk9fUE5fQUxJQVNfcG4tYmphbSA9ICJPcGVuU3VTRT1ib29zdC1qYW0gRGViaW5hPWJqYW0iCitESVNUUk9fUE5fQUxJQVNfcG4tYmFiZWx0cmFjZTIgPSAiT1NQRFQiCitESVNUUk9fUE5fQUxJQVNfcG4tYmphbSA9ICJPcGVuU3VTRT1ib29zdC1qYW0gRGViaWFuPWJqYW0iCiBESVNUUk9fUE5fQUxJQVNfcG4tYmxrdG9vbCA9ICJEZWJpYW49YmxrdG9vbCBNYW5kcml2YT1ibGt0b29sIgogRElTVFJPX1BOX0FMSUFTX3BuLWJsdWV6NSA9ICJGZWRvcmE9Ymx1ZXogIE9wZW5zdXNlPWJsdWV6IgogRElTVFJPX1BOX0FMSUFTX3BuLWJvb3RjaGFydDIgPSAiRmVkb3JhPWJvb3RjaGFydDIgT3BlbnN1c2U9Ym9vdGNoYXJ0IgpAQCAtMTMwLDcgKzEzMSw3IEBACiBESVNUUk9fUE5fQUxJQVNfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmkgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaS10ZXN0ZnMgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLXRlc3RmcyA9ICJPRS1Db3JlIgotRElTVFJPX1BOX0FMSUFTX3BuLWluaXRzY3JpcHRzID0gIkZlZG9yYT1pbml0c2NyaXB0cyBNYW5kcmF2aWE9aW5pdHNjcmlwdHMiCitESVNUUk9fUE5fQUxJQVNfcG4taW5pdHNjcmlwdHMgPSAiRmVkb3JhPWluaXRzY3JpcHRzIE1hbmRyaXZhPWluaXRzY3JpcHRzIgogRElTVFJPX1BOX0FMSUFTX3BuLWlwcm91dGUyID0gIk9TUERUIgogRElTVFJPX1BOX0FMSUFTX3BuLWpwZWcgPSAiT3BlblN1U0U9bGlianBlZyBVYnVudHU9bGlianBlZzYyIgogRElTVFJPX1BOX0FMSUFTX3BuLWtlcm5lbC1kZXZzcmMgPSAiRGViaWFuPWxpbnV4LWJhc2UgVWJ1bnR1PWxpbnV4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jCmluZGV4IGQ4NWU1YjYuLjE1MDhhZDEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMKQEAgLTM1LDYgKzM1LDggQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtcGx1Z2lucyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS1zdGF0ZSA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS10b29scyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS10b3BvbG9neS1jb25mID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXVjbS1jb25mID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXV0aWxzID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXV0aWxzLXNjcmlwdHMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFwbWQgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCkBAIC00Nyw5ICs0OSw5IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hc3BlbGwgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hc3NpbXAgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXQtc3BpMi1hdGsgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hdC1zcGkyLWNvcmUgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hdGsgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdC1zcGkyLWF0ayA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdC1zcGkyLWNvcmUgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXRrID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0dHIgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF1dG9jb25mID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF1dG9jb25mLWFyY2hpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgpAQCAtNTcsNiArNTksNyBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tYXZhaGkgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF2YWhpLXVpID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYWJlbHRyYWNlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhYmVsdHJhY2UyID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhc2UtZmlsZXMgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNlLXBhc3N3ZCA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhc2ggPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKQEAgLTgyLDYgKzg1LDcgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkLWNvbXBhcmUgPSAiUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGQtc3lzcm9vdHMgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGRlciA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1idWlsZHRvb2xzLWV4dGVuZGVkLXRhcmJhbGwgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGR0b29scy10YXJiYWxsID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1c3lib3ggPSAiQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYnVzeWJveC1pbml0dGFiID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgpAQCAtOTEsOCArOTUsNiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tY2FudGFyZWxsLWZvbnRzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNjYWNoZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jZHJ0b29scy1uYXRpdmUgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNoa2NvbmZpZyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY2hrY29uZmlnLWFsdGVybmF0aXZlcy1uYXRpdmUgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNocnBhdGggPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItMS4wID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY2x1dHRlci1nc3QtMy4wID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgpAQCAtMTAzLDcgKzEwNSw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb25ubWFuID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY29ubm1hbi1jb25mID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY29ubm1hbi1nbm9tZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbnNvbGUtdG9vbHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbnNvbGVraXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmUtaW1hZ2UtYmFzZSA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLW1pbmltYWwgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgpAQCAtMTM0LDcgKzEzNSw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcnlwdG9kZXYtdGVzdHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3VwcyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3VybCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWN2ZS1jaGVjay10b29sID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3ZlLXVwZGF0ZS1kYi1uYXRpdmUgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jd2F1dG9tYWNyb3MgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kYiA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgpAQCAtMTQ3LDYgKzE0Nyw3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kZXBtb2R3cmFwcGVyLWNyb3NzID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kZXNrdG9wLWZpbGUtdXRpbHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGhjcCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGlmZm9zY29wZSA9ICJKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGlmZnN0YXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRpZmZ1dGlscyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGlzdGNjID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCkBAIC0xNjcsNyArMTY4LDcgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVmaWJvb3RtZ3IgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1lbGZ1dGlscyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZWxsID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1lbmNoYW50ID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZW5jaGFudDIgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1lbmNvZGluZ3MgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1lcGlwaGFueSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ldGh0b29sID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBnbWFpbC5jb20+IgpAQCAtMTgyLDcgKzE4Myw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1mb250LWFsaWFzID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udC11dGlsID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udGNvbmZpZyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvb21hdGljLWZpbHRlcnMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvcm1mYWN0b3IgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1mcmVldHlwZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZyaWJpZGkgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCkBAIC0xOTEsMTQgKzE5MSwxMCBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLWNyb3NzLSR7VEFSR0VUX0FSQ0h9ID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLWNyb3NzLWNhbmFkaWFuLSR7VFJBTlNMQVRFRF9UQVJHRVRfQVJDSH0gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2MtY3Jvc3MtaW5pdGlhbC0ke1RBUkdFVF9BUkNIfSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1jcm9zc3Nkay0ke1NES19TWVN9ID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLWNyb3Nzc2RrLWluaXRpYWwtJHtTREtfU1lTfSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1ydW50aW1lID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLXNhbml0aXplcnMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2Mtc291cmNlLTguMy4wID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLXNvdXJjZS05LjIuMCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjY21ha2VkZXAgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2Mtc291cmNlLTkuMy4wID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NvbmYgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY3IgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RiID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgpAQCAtMjIxLDcgKzIxNyw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGlkZSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdtcCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWRlc2t0b3AtdGVzdGluZyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLXRoZW1lcy1zdGFuZGFyZCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdudS1jb25maWcgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ251LWVmaSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ251cGcgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKQEAgLTI1NywxMCArMjUyLDggQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1weXRob24gPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtdmFhcGkgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGsrID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrKzMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstZG9jID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ay1pY29uLXV0aWxzLW5hdGl2ZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd6aXAgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1oYXJmYnV6eiA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWhkcGFybSA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKQEAgLTI4NywxMCArMjgwLDEyIEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pcHRhYmxlcyA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWlwdXRpbHMgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pc28tY29kZXMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taXRzdG9vbCA9ICJBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWl3ID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlianBlZy10dXJibyA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWpzb24tYyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tanNvbi1nbGliID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1qcXVlcnkgPSAiSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWtiZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1rZXJuLXRvb2xzLW5hdGl2ZSA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWtlcm5lbC1kZXZzcmMgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQGdtYWlsLmNvbT4iCkBAIC0zNDYsNyArMzQxLDYgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmljYWwgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpY2UgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpZDN0YWcgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmlkbiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpZG4yID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaW5wdXQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJqaXR0ZXJlbnRyb3B5ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgpAQCAtMzU3LDcgKzM1MSw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJtb2R1bGUtYnVpbGQtcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJtb2R1bGVtZC12MSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJuZXd0ID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJuZXd0LXB5dGhvbiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibmwgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibm90aWZ5ID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibnNsMiA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKQEAgLTM5MywxNSArMzg2LDE4IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0b29sID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRvb2wtY3Jvc3MgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidG9vbC1uYXRpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidWNvbnRleHQgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1bmlzdHJpbmcgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1bndpbmQgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1cmN1ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVyaS1wZXJsID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVzYjEgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1Ym9vdGVudiA9ICJTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ2YSA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnZhLXV0aWxzID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidm9yYmlzID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ3ZWJwID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYndwZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4MTEgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4YXUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4Y2IgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCkBAIC00OTYsNyArNDkyLDYgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1pbmdldHR5ID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1taW5pLXgtc2Vzc2lvbiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1pbmljb20gPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ta2ZvbnRkaXIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ta2ZvbnRzY2FsZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1rbGlicy1uYXRpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbW1jLXV0aWxzID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgpAQCAtNTMxLDggKzUyNiw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZnMtdXRpbHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbmluamEgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ucHRoID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5zcHIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uc3MgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uc3MtbXlob3N0bmFtZSA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9mb25vID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tb3BlbnNiaSA9ICJBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+IgpAQCAtNTU3LDcgKzU1MCw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wY21hbmZtID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBlcmYgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wZXJsID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBlcmwtbmF0aXZlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBpZ2xpdCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBpZ3ogPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBpbmVudHJ5ID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgpAQCAtNTgwLDIwICs1NzIsMTggQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB1bHNlYXVkaW8gPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB1bHNlYXVkaW8tY2xpZW50LWNvbmYtc2F0byA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHV6emxlcyA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbiA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLW5hdGl2ZSA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXNldHVwdG9vbHMgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtYXN5bmMgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtY3l0aG9uID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWRidXMgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZG9jdXRpbHMgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZXh0cmFzID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWZpbGUtdXRpbHMgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZ2l0ID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWdpdGRiID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWluaXBhcnNlID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWxpYmFyY2hpdmUtYyA9ICJKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1tYWdpYyA9ICJKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1tYWtvID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW5hdGl2ZSA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1ub3NlID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW51bXB5ID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXBiciA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgpAQCAtNjAxLDYgKzU5MSw3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXB5Y2Fpcm8gPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtcHlnbWVudHMgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtcHlnb2JqZWN0ID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXB5cGFyc2luZyA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1zY29ucyA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXNjb25zLW5hdGl2ZSA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXNldHVwdG9vbHMgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKQEAgLTY1Nyw3ICs2NDgsNiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzZnN1dGlscyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lza2xvZ2QgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c2xpbnV4ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3Byb2YgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzc3RhdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1ib290ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCkBAIC02NzgsNyArNjY4LDYgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRjbCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdGNwLXdyYXBwZXJzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRlc3RleHBvcnQtdGFyYmFsbCA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXhpMmh0bWwgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdGV4aW5mbyA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRleGluZm8tZHVtbXktbmF0aXZlID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdGlmZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCkBAIC02ODcsNyArNjc2LDYgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXR6Y29kZS1uYXRpdmUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10emRhdGEgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi11LWJvb3QgPSAiTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi11LWJvb3QtZnctdXRpbHMgPSAiTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi11LWJvb3QtdG9vbHMgPSAiTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi11ZGV2LWV4dHJhY29uZiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVuZnMzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgpAQCAtNzI0LDYgKzcxMiw3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi13aWMtdG9vbHMgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi13aXJlbGVzcy1yZWdkYiA9ICJBZHJpYW4gQnVuayA8YnVua0BrZXJuZWwub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdwYS1zdXBwbGljYW50ID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td3BlYmFja2VuZC1mZG8gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4teDExcGVyZiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXgyNjQgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14YXV0aCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3B0ZXN0LXBhY2thZ2VsaXN0cy5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9wdGVzdC1wYWNrYWdlbGlzdHMuaW5jCmluZGV4IGJiNDcyNGMuLmMxM2ZmNzIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3B0ZXN0LXBhY2thZ2VsaXN0cy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvcHRlc3QtcGFja2FnZWxpc3RzLmluYwpAQCAtNDcsMzAgKzQ3LDM1IEBACiAgICAgcXVpbHQtcHRlc3QgXAogICAgIHNlZC1wdGVzdCBcCiAgICAgc2xhbmctcHRlc3QgXAorICAgIHdheWxhbmQtcHRlc3QgXAogICAgIHpsaWItcHRlc3QgXAogIgogCiAjUFRFU1RTX1BST0JMRU1TID0gIlwKICMgICAgcWVtdS1wdGVzdCBcICMgRG9lc24ndCBydW4gYW55IHRlc3RzPwogIyAgICBydWJ5LXB0ZXN0IFwgIyBUaW1lb3V0Ci0jICAgIG1kYWRtLXB0ZXN0IFwgIyBUaW1lb3V0CiAjICAgIGNsdXR0ZXItMS4wLXB0ZXN0IFwgIyBEb2Vzbid0IGJ1aWxkIGR1ZSB0byBkZXBlbmRzIG9uIGNvZ2wtMS4wCisjICAgIGx6NC1wdGVzdCBcICMgTmVlZHMgYSByZXdyaXRlCisjICAgIHJ0LXRlc3RzLXB0ZXN0IFwgIyBOZWVkcyB0byBiZSBjaGVja2VkIHdoZXRoZXIgaXQgcnVucyBhdCBhbGwKKyMgICAgYmFzaC1wdGVzdCBcICMgVGVzdCBvdXRjb21lcyBhcmUgbm9uLWRldGVybWluaXN0aWMgYnkgZGVzaWduCisjICAgIGlmdXBkb3duLXB0ZXN0IFwgIyBUZXN0ZWQgc2VwYXJhdGVseSBpbiBsaWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZWZlYXR1cmVzLnB5CisjICAgIG1kYWRtLXB0ZXN0IFwgIyBUZXN0cyByZWx5IG9uIG5vbi1kZXRlcm1pbmlzdGljIHNsZWVwKCkgYW1vdW50cwogIyIKIAogUFRFU1RTX1NMT1cgPSAiXAotICAgIGJhc2gtcHRlc3QgXAorICAgIGJhYmVsdHJhY2UtcHRlc3QgXAorICAgIGJhYmVsdHJhY2UyLXB0ZXN0IFwKICAgICBidXN5Ym94LXB0ZXN0IFwKKyAgICBjb3JldXRpbHMtcHRlc3QgXAogICAgIGRidXMtdGVzdC1wdGVzdCBcCiAgICAgZTJmc3Byb2dzLXB0ZXN0IFwKICAgICBnbGliLTIuMC1wdGVzdCBcCiAgICAgZ3N0cmVhbWVyMS4wLXB0ZXN0IFwKICAgICBsaWJldmVudC1wdGVzdCBcCiAgICAgbHR0bmctdG9vbHMtcHRlc3QgXAotICAgIG1kYWRtLXB0ZXN0IFwKICAgICBvcGVuc3NoLXB0ZXN0IFwKICAgICBvcGVuc3NsLXB0ZXN0IFwKICAgICBwZXJsLXB0ZXN0IFwKLSAgICBweXRob24tcHRlc3QgXAogICAgIHB5dGhvbjMtcHRlc3QgXAogICAgIHN0cmFjZS1wdGVzdCBcCiAgICAgdGNsLXB0ZXN0IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYwppbmRleCBhYWYwNGU5Li41NjhkMDM2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9zZWN1cml0eV9mbGFncy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCkBAIC01Nyw2ICs1Nyw4IEBACiAKIFRBUkdFVF9DQ19BUkNIX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7U0VDVVJJVFlfQ0ZMQUdTfSIKIFRBUkdFVF9MREZMQUdTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7U0VDVVJJVFlfTERGTEFHU30iCitUQVJHRVRfQ0NfQVJDSF9hcHBlbmRfY2xhc3MtY3Jvc3MtY2FuYWRpYW4gPSAiICR7U0VDVVJJVFlfQ0ZMQUdTfSIKK1RBUkdFVF9MREZMQUdTX2FwcGVuZF9jbGFzcy1jcm9zcy1jYW5hZGlhbiA9ICIgJHtTRUNVUklUWV9MREZMQUdTfSIKIAogU0VDVVJJVFlfU1RBQ0tfUFJPVEVDVE9SX3BuLWdjYy1ydW50aW1lID0gIiIKIFNFQ1VSSVRZX1NUQUNLX1BST1RFQ1RPUl9wbi1nbGliYyA9ICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtYmFyZW1ldGFsLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1iYXJlbWV0YWwuaW5jCmluZGV4IGUwNGY4YzguLjMxZDEzMmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1iYXJlbWV0YWwuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1iYXJlbWV0YWwuaW5jCkBAIC0yNyw3ICsyNyw3IEBACiBUQVJHRVRfT1MgPSAiZWxmIgogVEFSR0VUX09TX2FybSA9ICJlYWJpIgogCi1UT09MQ0hBSU5fSE9TVF9UQVNLID89ICJwYWNrYWdlZ3JvdXAtY3Jvc3MtY2FuYWRpYW4tJHtNQUNISU5FfSIKK1RPT0xDSEFJTl9IT1NUX1RBU0sgPz0gInBhY2thZ2Vncm91cC1jcm9zcy1jYW5hZGlhbi0ke01BQ0hJTkV9IG5hdGl2ZXNkay1xZW11IgogVE9PTENIQUlOX0hPU1RfVEFTS19BVFRFTVBUT05MWSA/PSAiIgogVE9PTENIQUlOX1RBUkdFVF9UQVNLID89ICJsaWJnY2MtZGV2IgogVE9PTENIQUlOX05FRURfQ09ORklHU0lURV9DQUNIRV9yZW1vdmUgPSAidmlydHVhbC8ke01MUFJFRklYfWxpYmMgemxpYiBuY3Vyc2VzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLW5ld2xpYi5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbmV3bGliLmluYwppbmRleCA4OTZjMGIxLi5iZjg5YjExIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbmV3bGliLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbmV3bGliLmluYwpAQCAtMjUsMTIgKzI1LDExIEBACiAgICAgbGliZ2xvc3MtZGJnIFwKICAgICBsaWJnY2MtZGV2IFwKICAgICBsaWJnY2MtZGJnIFwKKyAgICBsaWJzdGRjKystZGV2IFwKKyAgICBsaWJzdGRjKystc3RhdGljZGV2IFwKICAgICAiCiAKLSMgY29tcGlsZXJsaWJzIGRlZmF1bHRzIHRvIGdjYy1ydW50aW1lLCBidXQgd2UgZ2V0IHJ1bnRpbWUgZnJvbSBsaWJnbG9zcwotIyB3ZSBzZXQgQVNTVU1FX1BST1ZJREVEIGJlY2F1c2Ugd2UgY2FudCBzZXQgUFJFRkVSUkVEX1BST1ZJREVSCi0jIGZvciBjb21waWxlcmxpYnMgc2luY2UgaXRzIG92ZXJyaWRkZW4gYnkgdGNtb2RlLWRlZmF1bHQKLUFTU1VNRV9QUk9WSURFRCArPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Y29tcGlsZXJsaWJzIHZpcnR1YWwvY3J5cHQiCitBU1NVTUVfUFJPVklERUQgKz0gInZpcnR1YWwvY3J5cHQiCiAKICMgSXRzIHVzZWZ1bCB0byBiZSBhYmxlIHRvIGV4dGVuZCBuZXdsaWIsIGJ1dCB3ZSBkb250IHByb3ZpZGUgYSBuYXRpdmUgdmFyaWFudCBvZiBsaWJnbG9zcwogTkVXTElCX0VYVEVOREVEID89ICAibGliZ2xvc3MgbGliZ2NjIgpAQCAtMzksNyArMzgsNyBAQAogVEFSR0VUX09TID0gImVsZiIKIFRBUkdFVF9PU19hcm0gPSAiZWFiaSIKIAotVE9PTENIQUlOX0hPU1RfVEFTSyA/PSAicGFja2FnZWdyb3VwLWNyb3NzLWNhbmFkaWFuLSR7TUFDSElORX0iCitUT09MQ0hBSU5fSE9TVF9UQVNLID89ICJwYWNrYWdlZ3JvdXAtY3Jvc3MtY2FuYWRpYW4tJHtNQUNISU5FfSBuYXRpdmVzZGstcWVtdSIKIFRPT0xDSEFJTl9UQVJHRVRfVEFTSyA/PSAiJHtMSUJDX0RFUEVOREVOQ0lFU30iCiBUT09MQ0hBSU5fTkVFRF9DT05GSUdTSVRFX0NBQ0hFX3JlbW92ZSA9ICJ6bGliIG5jdXJzZXMiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYwppbmRleCA0YTIzYzUwLi44NDliY2Y2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y21vZGUtZGVmYXVsdC5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNtb2RlLWRlZmF1bHQuaW5jCkBAIC0xOCwxNSArMTgsMTUgQEAKIAogR0NDVkVSU0lPTiA/PSAiOS4lIgogU0RLR0NDVkVSU0lPTiA/PSAiJHtHQ0NWRVJTSU9OfSIKLUJJTlVWRVJTSU9OID89ICIyLjMyJSIKLUdEQlZFUlNJT04gPz0gIjguMyUiCi1HTElCQ1ZFUlNJT04gPz0gIjIuMzAlIgotTElOVVhMSUJDVkVSU0lPTiA/PSAiNS4yJSIKLVFFTVVWRVJTSU9OID89ICI0LjElIgotR09WRVJTSU9OID89ICIxLjEyJSIKK0JJTlVWRVJTSU9OID89ICIyLjM0JSIKK0dEQlZFUlNJT04gPz0gIjkuJSIKK0dMSUJDVkVSU0lPTiA/PSAiMi4zMSUiCitMSU5VWExJQkNWRVJTSU9OID89ICI1LjQlIgorUUVNVVZFUlNJT04gPz0gIjQuMiUiCitHT1ZFUlNJT04gPz0gIjEuMTQlIgogIyBUaGlzIGNhbiBub3QgdXNlIHdpbGRjYXJkcyBsaWtlIDguMC4lIHNpbmNlIGl0IGlzIGFsc28gdXNlZCBpbiBtZXNhIHRvIGRlbm90ZQogIyBsbHZtIHZlcnNpb24gYmVpbmcgdXNlZCwgc28gYWx3YXlzIGJ1bXAgaXQgd2l0aCBsbHZtIHJlY2lwZSB2ZXJzaW9uIGJ1bXAKLUxMVk1WRVJTSU9OID89ICI5LjAuMCIKK0xMVk1WRVJTSU9OID89ICI5LjAuMSIKIAogUFJFRkVSUkVEX1ZFUlNJT05fZ2NjID89ICIke0dDQ1ZFUlNJT059IgogUFJFRkVSUkVEX1ZFUlNJT05fZ2NjLWNyb3NzLSR7VEFSR0VUX0FSQ0h9ID89ICIke0dDQ1ZFUlNJT059IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUveW9jdG8tdW5pbmF0aXZlLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3lvY3RvLXVuaW5hdGl2ZS5pbmMKaW5kZXggYWQ3NWQzZS4uODg5Njk1ZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUveW9jdG8tdW5pbmF0aXZlLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS95b2N0by11bmluYXRpdmUuaW5jCkBAIC02LDkgKzYsOSBAQAogIyB0byB0aGUgZGlzdHJvIHJ1bm5pbmcgb24gdGhlIGJ1aWxkIG1hY2hpbmUuCiAjCiAKLVVOSU5BVElWRV9NQVhHTElCQ1ZFUlNJT04gPSAiMi4zMCIKK1VOSU5BVElWRV9NQVhHTElCQ1ZFUlNJT04gPSAiMi4zMSIKIAotVU5JTkFUSVZFX1VSTCA/PSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL3VuaW5hdGl2ZS8yLjcvIgotVU5JTkFUSVZFX0NIRUNLU1VNW2FhcmNoNjRdID89ICJlNzZhNDU4ODZlZThhMGIzOTA0Yjc2MWMxN2FjOGZmOTFlZGY5ODExZWU0NTVmMTgzMmQxMDc2M2JhNzk0ZGZjIgotVU5JTkFUSVZFX0NIRUNLU1VNW2k2ODZdID89ICI4MTBkMDI3ZGZiMWM3Njc1MjI2YWZiY2VjMDc4MDg3NzA1MTZjOTY5ZWU3Mzc4ZjZkODI0MDI4MTA4M2Y4OTI0IgotVU5JTkFUSVZFX0NIRUNLU1VNW3g4Nl82NF0gPz0gIjk0OThkOGJiYTA0NzQ5OTk5OWE3MzEwYWMyNTc2ZDA3OTY0NjExODQ5NjUzNTFhNTZmNmQzMmM4ODhhMWYyMTYiCitVTklOQVRJVkVfVVJMID89ICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvdW5pbmF0aXZlLzIuOC8iCitVTklOQVRJVkVfQ0hFQ0tTVU1bYWFyY2g2NF0gPz0gIjk4OTE4NzM0NGJmOTUzOWI0NjRmYjdlZDljMjIzZTUxZjRiZGI0YzdhNjc3ZDJjMzE0ZTZmZWQzOTMxNzZlZmUiCitVTklOQVRJVkVfQ0hFQ0tTVU1baTY4Nl0gPz0gImNjM2U0NWJjODU5NDQ4OGI0MDczNjNlM2ZhOWFmNWEwOTkyNzlkYWIyNzAzYzY0MzQyMDk4NzE5YmQ2NzQ5OTAiCitVTklOQVRJVkVfQ0hFQ0tTVU1beDg2XzY0XSA/PSAiYTA5OTIyMTcyYzNhNDM5MTA1ZTBhZTZiOTQzZGFhZDJkODM1MDViMTdkYTBhYmE5Nzk2MWZmNDMzYjhjMjFhYiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZiBiL3Bva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZgppbmRleCBmY2EzNmYzLi5jNjU0NGI5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kb2N1bWVudGF0aW9uLmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvZG9jdW1lbnRhdGlvbi5jb25mCkBAIC02OSw2ICs2OSw3IEBACiBBVVRIT1JbZG9jXSA9ICJFbWFpbCBhZGRyZXNzIHVzZWQgdG8gY29udGFjdCB0aGUgb3JpZ2luYWwgYXV0aG9yKHMpIGluIG9yZGVyIHRvIHNlbmQgcGF0Y2hlcyBhbmQgZm9yd2FyZCBidWdzLiIKIEFVVE9fU1lTTElOVVhNRU5VW2RvY10gPSAiRW5hYmxlcyBjcmVhdGluZyBhbiBhdXRvbWF0aWMgbWVudSBmb3IgdGhlIHN5c2xpbnV4IGJvb3Rsb2FkZXIuIgogQVVUT1JFVltkb2NdID0gIldoZW4gU1JDUkVWIGlzIHNldCB0byB0aGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSwgaXQgc3BlY2lmaWVzIHRvIHVzZSB0aGUgbGF0ZXN0IHNvdXJjZSByZXZpc2lvbiBpbiB0aGUgcmVwb3NpdG9yeS4iCitBVkFJTEFCTEVfTElDRU5TRVNbZG9jXSA9ICJMaXN0IG9mIGxpY2Vuc2VzIGZvdW5kIGluIHRoZSBkaXJlY3RvcmllcyBzcGVjaWZpZWQgYnkgQ09NTU9OX0xJQ0VOU0VfRElSIGFuZCBMSUNFTlNFX1BBVEguIgogCiAjQgogCkBAIC0xMTcsNyArMTE4LDYgQEAKIENPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTFtkb2NdID0gIlNwZWNpZmllcyB0aGUgbGlzdCBvZiBwYWNrYWdlcyB0byBiZSBhZGRlZCB0byB0aGUgaW1hZ2UuIFlvdSBzaG91bGQgb25seSBzZXQgdGhpcyB2YXJpYWJsZSBpbiB0aGUgY29uZi9sb2NhbC5jb25mIGZpbGUgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeS4iCiBDT1JFQkFTRVtkb2NdID0gIlNwZWNpZmllcyB0aGUgcGFyZW50IGRpcmVjdG9yeSBvZiB0aGUgT3BlbkVtYmVkZGVkIENvcmUgTWV0YWRhdGEgbGF5ZXIgKGkuZS4gbWV0YSkuIgogQ09ORl9WRVJTSU9OW2RvY10gPSAiVHJhY2tzIHRoZSB2ZXJzaW9uIG9mIGxvY2FsLmNvbmYuICBJbmNyZWFzZWQgZWFjaCB0aW1lIGJ1aWxkL2NvbmYvIGNoYW5nZXMgaW5jb21wYXRpYmx5LiIKLUNWU0RJUltkb2NdID0gIlRoZSBkaXJlY3Rvcnkgd2hlcmUgY3ZzIGNoZWNrb3V0cyB3aWxsIGJlIHN0b3JlZCBpbi4iCiAKICNECiAKQEAgLTE3Nyw3ICsxNzcsNiBAQAogCiAjRwogCi1HSVRESVJbZG9jXSA9ICJUaGUgZGlyZWN0b3J5IHdoZXJlIEdpdCBjbG9uZXMgd2lsbCBiZSBzdG9yZWQuIgogR1JPVVBBRERfUEFSQU1bZG9jXSA9ICJXaGVuIGEgcmVjaXBlIGluaGVyaXRzIHRoZSB1c2VyYWRkIGNsYXNzLCB0aGlzIHZhcmlhYmxlIHNwZWNpZmllcyBmb3IgYSBwYWNrYWdlIHdoYXQgcGFyYW1ldGVycyBzaG91bGQgYmUgcGFzc2VkIHRvIHRoZSBncm91cGFkZCBjb21tYW5kIGlmIHlvdSB3aXNoIHRvIGFkZCBhIGdyb3VwIHRvIHRoZSBzeXN0ZW0gd2hlbiB0aGUgcGFja2FnZSBpcyBpbnN0YWxsZWQuIgogR1JPVVBNRU1TX1BBUkFNW2RvY10gPSAiV2hlbiBhIHJlY2lwZSBpbmhlcml0cyB0aGUgdXNlcmFkZCBjbGFzcywgdGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgZm9yIGEgcGFja2FnZSB3aGF0IHBhcmFtZXRlcnMgc2hvdWxkIGJlIHBhc3NlZCB0byB0aGUgZ3JvdXBtZW1zIGNvbW1hbmQgaWYgeW91IHdpc2ggdG8gbW9kaWZ5IHRoZSBtZW1iZXJzIG9mIGEgZ3JvdXAgd2hlbiB0aGUgcGFja2FnZSBpcyBpbnN0YWxsZWQuIgogR1JVQl9HRlhTRVJJQUxbZG9jXSA9ICJDb25maWd1cmVzIHRoZSBHTlUgR1JhbmQgVW5pZmllZCBCb290bG9hZGVyIChHUlVCKSB0byBoYXZlIGdyYXBoaWNzIGFuZCBzZXJpYWwgaW4gdGhlIGJvb3QgbWVudS4iCkBAIC0zMDcsNyArMzA2LDYgQEAKIFBBQ0tBR0VfQ0xBU1NFU1tkb2NdID0gIlRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIHRoZSBwYWNrYWdlIG1hbmFnZXIgdG8gdXNlIHdoZW4gcGFja2FnaW5nIGRhdGEuIEl0IGlzIHNldCBpbiB0aGUgY29uZi9sb2NhbC5jb25mIGZpbGUgaW4gdGhlIEJ1aWxkIERpcmVjdG9yeS4iCiBQQUNLQUdFX0VYQ0xVREVbZG9jXSA9ICJQYWNrYWdlcyB0byBleGNsdWRlIGZyb20gdGhlIGluc3RhbGxhdGlvbi4gSWYgYSBsaXN0ZWQgcGFja2FnZSBpcyByZXF1aXJlZCwgYW4gZXJyb3IgaXMgZ2VuZXJhdGVkLiIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGxpc3Qgb2YgYXJjaGl0ZWN0dXJlcyBjb21wYXRpYmxlIHdpdGggdGhlIGRldmljZSBDUFUuIFRoaXMgdmFyaWFibGUgaXMgdXNlZnVsIHdoZW4geW91IGJ1aWxkIGZvciBzZXZlcmFsIGRpZmZlcmVudCBkZXZpY2VzIHRoYXQgdXNlIG1pc2NlbGxhbmVvdXMgcHJvY2Vzc29ycy4iCi1QQUNLQUdFX0dST1VQW2RvY10gPSAiRGVmaW5lcyBvbmUgb3IgbW9yZSBwYWNrYWdlcyB0byBpbmNsdWRlIGluIGFuIGltYWdlIHdoZW4gYSBzcGVjaWZpYyBpdGVtIGlzIGluY2x1ZGVkIGluIElNQUdFX0ZFQVRVUkVTLiIKIFBBQ0tBR0VfSU5TVEFMTFtkb2NdID0gIkxpc3Qgb2YgdGhlIHBhY2thZ2VzIHRvIGJlIGluc3RhbGxlZCBpbnRvIHRoZSBpbWFnZS4gVGhlIHZhcmlhYmxlIGlzIGdlbmVyYWxseSBub3QgdXNlci1kZWZpbmVkIGFuZCB1c2VzIElNQUdFX0lOU1RBTEwgYXMgcGFydCBvZiB0aGUgbGlzdC4iCiBQQUNLQUdFX0lOU1RBTExfQVRURU1QVE9OTFlbZG9jXSA9ICJMaXN0IG9mIHBhY2thZ2VzIGF0dGVtcHRlZCB0byBiZSBpbnN0YWxsZWQuIElmIGEgbGlzdGVkIHBhY2thZ2UgZmFpbHMgdG8gaW5zdGFsbCwgdGhlIGJ1aWxkIHN5c3RlbSBkb2VzIG5vdCBnZW5lcmF0ZSBhbiBlcnJvci4gVGhpcyB2YXJpYWJsZSBpcyBnZW5lcmFsbHkgbm90IHVzZXItZGVmaW5lZC4iCiBQQUNLQUdFQ09ORklHW2RvY10gPSAiVGhpcyB2YXJpYWJsZSBwcm92aWRlcyBhIG1lYW5zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBmZWF0dXJlcyBvZiBhIHJlY2lwZSBvbiBhIHBlci1yZWNpcGUgYmFzaXMuIgpAQCAtMzkyLDcgKzM5MCw2IEBACiBTVEFNUFtkb2NdID0gIlNwZWNpZmllcyB0aGUgYmFzZSBwYXRoIHVzZWQgdG8gY3JlYXRlIHJlY2lwZSBzdGFtcCBmaWxlcy4gVGhlIHBhdGggdG8gYW4gYWN0dWFsIHN0YW1wIGZpbGUgaXMgY29uc3RydWN0ZWQgYnkgZXZhbHVhdGluZyB0aGlzIHN0cmluZyBhbmQgdGhlbiBhcHBlbmRpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4iCiBTVEFNUFNfRElSW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBiYXNlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBwbGFjZXMgc3RhbXBzLiIKIFNVTU1BUllbZG9jXSA9ICJUaGUgc2hvcnQgKDgwIGNoYXJhY3RlcnMgb3IgbGVzcykgc3VtbWFyeSBvZiB0aGUgYmluYXJ5IHBhY2thZ2UgZm9yIHBhY2thZ2luZyBzeXN0ZW1zIHN1Y2ggYXMgb3BrZywgcnBtIG9yIGRwa2cuIEJ5IGRlZmF1bHQsIFNVTU1BUlkgaXMgdXNlZCB0byBkZWZpbmUgdGhlIERFU0NSSVBUSU9OIHZhcmlhYmxlIGlmIERFU0NSSVBUSU9OIGlzIG5vdCBzZXQgaW4gdGhlIHJlY2lwZS4iCi1TVk5ESVJbZG9jXSA9ICJUaGUgZGlyZWN0b3J5IHdoZXJlIFN1YnZlcnNpb24gY2hlY2tvdXRzIHdpbGwgYmUgc3RvcmVkLiIKIFNZU0xJTlVYX0RFRkFVTFRfQ09OU09MRVtkb2NdID0gIlNwZWNpZmllcyB0aGUga2VybmVsIGJvb3QgZGVmYXVsdCBjb25zb2xlLiIKIFNZU0xJTlVYX09QVFNbZG9jXSA9ICJMaXN0cyBhZGRpdGlvbmFsIG9wdGlvbnMgdG8gYWRkIHRvIHRoZSBzeXNsaW51eCBmaWxlLiIKIFNZU0xJTlVYX1NFUklBTFtkb2NdID0gIlNwZWNpZmllcyB0aGUgYWx0ZXJuYXRlIHNlcmlhbCBwb3J0IG9yIHR1cm5zIGl0IG9mZi4iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9sYXllci5jb25mIGIvcG9reS9tZXRhL2NvbmYvbGF5ZXIuY29uZgppbmRleCBmY2RmOWFlLi5mMDNlYjQ4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9sYXllci5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL2xheWVyLmNvbmYKQEAgLTcsMTIgKzcsMTIgQEAKIEJCRklMRV9QQVRURVJOX2NvcmUgPSAiXiR7TEFZRVJESVJ9LyIKIEJCRklMRV9QUklPUklUWV9jb3JlID0gIjUiCiAKLUxBWUVSU0VSSUVTX0NPUkVOQU1FUyA9ICJ6ZXVzIgorTEFZRVJTRVJJRVNfQ09SRU5BTUVTID0gImR1bmZlbGwiCiAKICMgVGhpcyBzaG91bGQgb25seSBiZSBpbmNyZW1lbnRlZCBvbiBzaWduaWZpY2FudCBjaGFuZ2VzIHRoYXQgd2lsbAogIyBjYXVzZSBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG90aGVyIGxheWVycwogTEFZRVJWRVJTSU9OX2NvcmUgPSAiMTEiCi1MQVlFUlNFUklFU19DT01QQVRfY29yZSA9ICJ3YXJyaW9yIHpldXMiCitMQVlFUlNFUklFU19DT01QQVRfY29yZSA9ICJkdW5mZWxsIgogCiBCQkxBWUVSU19MQVlFUklOREVYX05BTUVfY29yZSA9ICJvcGVuZW1iZWRkZWQtY29yZSIKIApAQCAtNDMsNiArNDMsOCBAQAogICBvcGtnLXV0aWxzIFwKICAgZ3N0cmVhbWVyMS4wLW1ldGEtYmFzZSBcCiAgIGNhLWNlcnRpZmljYXRlcyBcCisgIHNoYXJlZC1taW1lLWluZm8gXAorICBkZXNrdG9wLWZpbGUtdXRpbHMgXAogIgogCiBTSUdHRU5fRVhDTFVERV9TQUZFX1JFQ0lQRV9ERVBTICs9ICIgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbGljZW5zZXMuY29uZiBiL3Bva3kvbWV0YS9jb25mL2xpY2Vuc2VzLmNvbmYKaW5kZXggN2IwMWM1Ny4uNzUxNDI0ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbGljZW5zZXMuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9saWNlbnNlcy5jb25mCkBAIC0xLDQ4ICsxLDcgQEAKLSMgVGhlc2UgYXJlbid0IGFjdHVhbGx5IHVzZWQgYW55d2hlcmUgdGhhdCBJIGNhbiB0ZWxsCi0jIFRoZXkgbWF5IGJlIGluIHRoZSBmdXR1cmUgKG9yIGFyZSB1c2VkIGJ5IHNvbWVvbmUgZWxzZQotIyBGb3IgY29tcGxldGlvbiBzYWtlLCBJJ3ZlIHVwZGF0ZWQgdGhlbQotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkFBTCBBZG9iZSBBRkwtMS4yIEFGTC0yLjAgQUZMLTIuMSBBRkwtMy4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkFHUEwtMy4wIEFOVExSLVBEIEFwYWNoZS0xLjAgQXBhY2hlLTEuMSBBcGFjaGUtMi4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkFQTC0xLjAgQVBTTC0xLjAgQVBTTC0xLjEgQVBTTC0xLjIgQVBTTC0yLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiQXJ0aXN0aWMtMS4wIEFydGlzdGljLTIuMCBCaXRzdHJlYW1WZXJhIEJTRCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJCU0QtMi1DbGF1c2UgQlNELTMtQ2xhdXNlIEJTRC00LUNsYXVzZSBCU0wtMS4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkNBVE9TTC0xLjEgQ0MwLTEuMCBDQy1CWS0xLjAgQ0MtQlktMi4wIENDLUJZLTIuNSIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJDQy1CWS0zLjAgQ0MtQlktTkMtMS4wIENDLUJZLU5DLTIuMCBDQy1CWS1OQy0yLjUiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiQ0MtQlktTkMtMy4wIENDLUJZLU5DLU5ELTEuMCBDQy1CWS1OQy1ORC0yLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiQ0MtQlktTkMtTkQtMi41IENDLUJZLU5DLU5ELTMuMCBDQy1CWS1OQy1TQS0xLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiQ0MtQlktTkMtU0EtMi4wIENDLUJZLU5DLVNBLTIuNSBDQy1CWS1OQy1TQS0zLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiQ0MtQlktTkQtMS4wIENDLUJZLU5ELTIuMCBDQy1CWS1ORC0yLjUgQ0MtQlktTkQtMy4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkNDLUJZLVNBLTEuMCBDQy1CWS1TQS0yLjAgQ0MtQlktU0EtMi41IENDLUJZLVNBLTMuMCBDQy1CWS1TQS00LjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiQ0RETC0xLjAgQ0VDSUxMLTEuMCBDRUNJTEwtMi4wIENFQ0lMTC1CIENFQ0lMTC1DIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkNsQXJ0aXN0aWMgQ1BBTC0xLjAgQ1BMLTEuMCBDVUEtT1BMLTEuMCBEU1NTTCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJFQ0wtMS4wIEVDTC0yLjAgZUNvcy0yLjAgRURMLTEuMCBFRkwtMS4wIEVGTC0yLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiRW50ZXNzYSBFUEwtMS4wIEVQTC0yLjAgRXJsUEwtMS4xIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkVVRGF0YWdyaWQgRVVQTC0xLjAgRVVQTC0xLjEgRmFpciBGcmFtZXdvcngtMS4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkZyZWVUeXBlIEdGREwtMS4xIEdGREwtMS4yIEdGREwtMS4zIEdQTC0xLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiR1BMLTIuMCBHUEwtMi4wLXdpdGgtYXV0b2NvbmYtZXhjZXB0aW9uIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkdQTC0yLjAtd2l0aC1jbGFzc3BhdGgtZXhjZXB0aW9uIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkdQTC0yLjAtd2l0aC1mb250LWV4Y2VwdGlvbiIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJHUEwtMi4wLXdpdGgtR0NDLWV4Y2VwdGlvbiIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJHUEwtMi13aXRoLWJpc29uLWV4Y2VwdGlvbiBHUEwtMy4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkdQTC0zLjAtd2l0aC1hdXRvY29uZi1leGNlcHRpb24iCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiR1BMLTMuMC13aXRoLUdDQy1leGNlcHRpb24iCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiZ1NPQVAtMSBnU09BUC0xLjNiIEhQTkQgSVBBIElQTC0xLjAgSVNDIExHUEwtMi4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkxHUEwtMi4xIExHUEwtMy4wIExpYnBuZyBMUEwtMS4wMiBMUFBMLTEuMCBMUFBMLTEuMSIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJMUFBMLTEuMiBMUFBMLTEuM2MgTWlyT1MgTUlUIE1vdG9zb3RvIE1QTC0xLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiTVBMLTEuMSBNUy1QTCBNUy1STCBNdWx0aWNzIE5BU0EtMS4zIE5hdW1hbiBOQ1NBIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIk5HUEwgTm9raWEgTlBPU0wtMy4wIE5UUCBPQVNJUyBPQ0xDLTIuMCBPRGJMLTEuMCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJPRkwtMS4xIE9HVFNMIE9MREFQLTIuOCBPcGVuU1NMIE9TTC0xLjAgT1NMLTIuMCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJPU0wtMy4wIFBEIFBIUC0zLjAgUG9zdGdyZVNRTCBQcm9wcmlldGFyeSIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJQeXRob24tMi4wIFFQTC0xLjAgUkhlQ29zLTEgUkhlQ29zLTEuMSBSUEwtMS41IgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIlJQU0wtMS4wIFJTQ1BMIFJ1YnkgU0FYLVBEIFNHSS0xIFNpbXBsZS0yLjAgU2xlZXB5Y2F0IgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIlNQTC0xLjAgU3VnYXJDUk0tMSBTdWdhckNSTS0xLjEuMyBVQ0IgVlNMLTEuMCBXM0MiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiV2F0Y29tLTEuMCBXWHdpbmRvd3MgWEZyZWU4Ni0xLjAgWEZyZWU4Ni0xLjEgWG5ldCBYU0wgWVBMLTEuMSIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJaaW1icmEtMS4zIFpsaWIgWlBMLTEuMSBaUEwtMi4wIFpQTC0yLjEiCi0KICMgU3RhbmRhcmRzIGFyZSBncmVhdCEgRXZlcnlvbmUgaGFzIHRoZWlyIG93bi4gSW4gYW4gZWZmb3J0IHRvIHN0YW5kYXJkaXplIGxpY2Vuc2luZwogIyBuYW1lcywgY29tbW9uLWxpY2Vuc2VzIHdpbGwgdXNlIHRoZSBTUERYIHN0YW5kYXJkIGxpY2Vuc2UgbmFtZXMuIEluIG9yZGVyIHRvIG5vdAogIyBicmVhayB0aGUgbm9uLXN0YW5kYXJkaXplZCBsaWNlbnNlIG5hbWVzIHRoYXQgd2UgZmluZCBpbiBMSUNFTlNFLCB3ZSdsbCBzZXQKLSMgdXAgYSBidW5jaCBvZiBWYXJGbGFncyB0byBhY2NvbW9kYXRlIG5vbi1TUERYIGxpY2Vuc2UgbmFtZXMuCisjIHVwIGEgYnVuY2ggb2YgVmFyRmxhZ3MgdG8gYWNjb21tb2RhdGUgbm9uLVNQRFggbGljZW5zZSBuYW1lcy4KICMKICMgV2Ugc2hvdWxkIHJlYWxseSBkaXNjdXNzIHN0YW5kYXJkaXppbmcgdGhpcyBmaWVsZCwgYnV0IHRoYXQncyBhIGxvbmdlciB0ZXJtIGdvYWwuCiAjIEZvciBub3csIHdlIGNhbiBkbyB0aGlzIGFuZCBpdCBzaG91bGQgZ3JhYiB0aGUgbW9zdCBjb21tb24gTElDRU5TRSBuYW1pbmcgdmFyaWF0aW9ucy4KQEAgLTE4OCw1ICsxNDcsMyBAQAogRk9TU19TRVJWRVIgPSAiJHtGT1NTX0JBU0VfVVJMfSZmdWxsU1BEWEZsYWc9JHtGT1NTX0ZVTExfU1BEWH0mbm9Db3B5cmlnaHQ9JHtGT1NTX05PX0NPUFlSSUdIVH0mcmVjdXJzaXZlVW5wYWNrPSR7Rk9TU19SRUNVUlNJVkVfVU5QQUNLfSIKIAogRk9TU19XR0VUX0ZMQUdTID0gIi1xTyAtIC0tbm8tY2hlY2stY2VydGlmaWNhdGUgLS10aW1lb3V0PTAiCi0KLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvYXJjaC1taWNyb2JsYXplLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2FyY2gtbWljcm9ibGF6ZS5pbmMKaW5kZXggZWFiNzE3MS4uNGY1ODA3NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvYXJjaC1taWNyb2JsYXplLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9hcmNoLW1pY3JvYmxhemUuaW5jCkBAIC00LDM1ICs0LDQxIEBACiBUVU5FVkFMSURbbWljcm9ibGF6ZV0gPSAiTWljcm9CbGF6ZSIKIE1BQ0hJTkVPVkVSUklERVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm1pY3JvYmxhemUiLCAibWljcm9ibGF6ZToiLCAiIiwgZCl9IgogCisjIDY0LWJpdAorVFVORVZBTElEWzY0LWJpdF0gPSAiNjQtYml0IE1pY3JvQmxhemUiCitUVU5FQ09ORkxJQ1RTWzY0LWJpdF0gPSAidjguMDAgdjguMTAgdjguMjAgdjguMzAgdjguNDAgdjguNTAgdjkuMCB2OS4xIHY5LjIgdjkuMyB2OS40IHY5LjUgdjkuNiB2MTAuMCIKK01BQ0hJTkVPVkVSUklERVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIjY0LWJpdCIsICJtaWNyb2JsYXplNjQ6IiwgIiIsIGQpfSIKKwogIyBFbmRpYW4KIFRVTkVWQUxJRFtiaWdlbmRpYW5dID0gIlVzZSBNaWNyb2JsYXplIEJpZyBFbmRpYW4iCi1UVU5FQ09ORkxJQ1RTW2JpZ2VuZGlhbl0gKz0gInYxMC4wIgorVFVORUNPTkZMSUNUU1tiaWdlbmRpYW5dID0gInYxMC4wIgogCiBNQlBLR0FSQ0hfRU5ESUFOID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImJpZ2VuZGlhbiIsICJlYiIsICJlbCIsIGQpfSIKIAotVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImJpZ2VuZGlhbiIsICItbWJpZy1lbmRpYW4iLCAiLW1saXR0bGUtZW5kaWFuIiwgZCl9IgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImJpZ2VuZGlhbiIsICIgLW1iaWctZW5kaWFuIiwgIiAtbWxpdHRsZS1lbmRpYW4iLCBkKX0iCiAKICMgR2VuZXJhbCBmZWF0dXJlcwogVFVORVZBTElEW2JhcnJlbC1zaGlmdF0gPSAiRW5hYmxlIEhhcmR3YXJlIEJhcnJlbCBTaGlmdGVyIgogVFVORVZBTElEW3BhdHRlcm4tY29tcGFyZV0gPSAiRW5hYmxlIFBhdHRlcm4gQ29tcGFyZSBJbnN0cnVjdGlvbnMiCiBUVU5FVkFMSURbcmVvcmRlcl0gPSAiRW5hYmxlIFJlb3JkZXIgSW5zdHJ1Y3Rpb25zIgotVFVORUNPTkZMSUNUU1tyZW9yZGVyXSArPSAidjguMDAgdjguMTAgdjguMjAiCitUVU5FQ09ORkxJQ1RTW3Jlb3JkZXJdID0gInY4LjAwIHY4LjEwIHY4LjIwIgogCiAjIENvcmUgY29uZmlndXJhdGlvbiB0dW5lIG9wdGltaXphdGlvbnMKIFRVTkVWQUxJRFtmcmVxdWVuY3ktb3B0aW1pemVkXSA9ICJFbmFibGluZyB0dW5pbmcgZm9yIGZyZXF1ZW5jeSBvcHRpbWl6ZWQgY29yZSAoQVJFQV9PUFRJTUlaRURfMikiCi1UVU5FQ09ORkxJQ1RTW2ZyZXF1ZW5jeS1vcHRpbWl6ZWRdICs9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCB2OS4wIHY5LjEgdjkuMiB2OS4zIHY5LjQgdjkuNSB2OS42IgorVFVORUNPTkZMSUNUU1tmcmVxdWVuY3ktb3B0aW1pemVkXSA9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCB2OS4wIHY5LjEgdjkuMiB2OS4zIHY5LjQgdjkuNSB2OS42IgogCiAjIEZlYXR1cmUgY29tcGlsZXIgYXJncwotVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImJhcnJlbC1zaGlmdCIsICItbXhsLWJhcnJlbC1zaGlmdCIsICItbW5vLXhsLWJhcnJlbC1zaGlmdCIsIGQpfSIKLVRVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJwYXR0ZXJuLWNvbXBhcmUiLCAiLW14bC1wYXR0ZXJuLWNvbXBhcmUiLCAiLW1uby14bC1wYXR0ZXJuLWNvbXBhcmUiLCBkKX0iCi1UVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiZnJlcXVlbmN5LW9wdGltaXplZCIsICItbXhsLWZyZXF1ZW5jeSIsICIiLCBkKX0iCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYmFycmVsLXNoaWZ0IiwgIiAtbXhsLWJhcnJlbC1zaGlmdCIsICIgLW1uby14bC1iYXJyZWwtc2hpZnQiLCBkKX0iCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAicGF0dGVybi1jb21wYXJlIiwgIiAtbXhsLXBhdHRlcm4tY29tcGFyZSIsICIgLW1uby14bC1wYXR0ZXJuLWNvbXBhcmUiLCBkKX0iCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiZnJlcXVlbmN5LW9wdGltaXplZCIsICIgLW14bC1mcmVxdWVuY3kiLCAiIiwgZCl9IgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIjY0LWJpdCIsICIgLW02NCIsICIiLCBkKX0iCiAKICMgRGlzYWJsZSByZW9yZGVyIGZvciB2OC4zMCBpZiBwYXR0ZXJuLWNvbXBhcmUgaXMgbm90IGVuYWJsZWQKLVRVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJyZW9yZGVyIiwgXAorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgInJlb3JkZXIiLCBcCiAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgInY4LjMwIiwgXAogICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAicGF0dGVybi1jb21wYXJlIiwgXAotICAgICAgICAgICAgICAgICItbXhsLXJlb3JkZXIiLCAiLW1uby14bC1yZW9yZGVyIiwgZCksIFwKLSAgICAgICAgICAgICItbXhsLXJlb3JkZXIiLCBkKSwgIi1tbm8teGwtcmVvcmRlciIsIGQpfSIKKyAgICAgICAgICAgICAgICAiIC1teGwtcmVvcmRlciIsICIgLW1uby14bC1yZW9yZGVyIiwgZCksIFwKKyAgICAgICAgICAgICIgLW14bC1yZW9yZGVyIiwgZCksICIgLW1uby14bC1yZW9yZGVyIiwgZCl9IgogCiAjIEZlYXR1cmUgcGFja2FnZSBhcmNoaXRlY3R1cmUgZm9ybWF0dGluZwogTUJQS0dBUkNIX1RVTkUgPSAiIgpAQCAtNDUsOSArNTEsMTIgQEAKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9mZWF0dXJlLW1pY3JvYmxhemUtdmVyc2lvbnMuaW5jCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLW1hdGguaW5jCiAKLSMgQXJjaGl0ZWN0dXJlIG5hbWUsIGVpdGhlciAnbWljcm9ibGF6ZWViJyBvciAnbWljcm9ibGF6ZWVsJyBkZXBlbmRpbmcgb24gZW5kaWFuZXNzCi1UVU5FX0FSQ0ggPSAibWljcm9ibGF6ZSR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImJpZ2VuZGlhbiIsICJlYiIsICJlbCIsIGQpfSIKKyMgQXJjaGl0ZWN0dXJlIG5hbWUsIGVpdGhlciAnbWljcm9ibGF6ZScgb3IgJ21pY3JvYmxhemVlbCcgZGVwZW5kaW5nIG9uIGVuZGlhbmVzcworVFVORV9BUkNIID0gIm1pY3JvYmxhemUke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJiaWdlbmRpYW4iLCAiIiwgImVsIiwgZCl9IgorCisjIEFkZCA2NC1iaXQgdG8gdGhlIFBLR0FSQ0ggaWYgZW5hYmxlZC4KK01CUEtHQVJDSF9TSVpFID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIjY0LWJpdCIsICI2NCIsICIiLCBkKX0iCiAKICMgUGFja2FnZSBBcmNoaXRlY3R1cmUgZm9ybWF0dGluZwotVFVORV9QS0dBUkNIID0gIm1pY3JvYmxhemUke01CUEtHQVJDSF9FTkRJQU59JHtNQlBLR0FSQ0hfVkVSU0lPTn0ke01CUEtHQVJDSF9UVU5FfSR7TUJQS0dBUkNIX01BVEh9IgorVFVORV9QS0dBUkNIID0gIm1pY3JvYmxhemUke01CUEtHQVJDSF9TSVpFfSR7TUJQS0dBUkNIX0VORElBTn0ke01CUEtHQVJDSF9WRVJTSU9OfSR7TUJQS0dBUkNIX1RVTkV9JHtNQlBLR0FSQ0hfTUFUSH0iCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS1tYXRoLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS1tYXRoLmluYwppbmRleCBhMzE1MTY2Li5jYmEwYWU2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9mZWF0dXJlLW1pY3JvYmxhemUtbWF0aC5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLW1hdGguaW5jCkBAIC0xMywxNCArMTMsMTQgQEAKIFRVTkVDT05GTElDVFNbZnB1LWhhcmQtZXh0ZW5kZWRdID0gImZwdS1zb2Z0IgogCiAjIENvbXBpbGVyIGFyZ3MKLVRVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ1RVTkVfRkVBVFVSRVMnLCBbJ211bHRpcGx5LWxvdycsICdtdWx0aXBseS1oaWdoJ10sICctbW5vLXhsLXNvZnQtbXVsJywgJy1teGwtc29mdC1tdWwnLCBkKX0iCi1UVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbXVsdGlwbHktaGlnaCcsICctbXhsLW11bHRpcGx5LWhpZ2gnLCAnJywgZCl9IgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnVFVORV9GRUFUVVJFUycsIFsnbXVsdGlwbHktbG93JywgJ211bHRpcGx5LWhpZ2gnXSwgJyAtbW5vLXhsLXNvZnQtbXVsJywgJyAtbXhsLXNvZnQtbXVsJywgZCl9IgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ211bHRpcGx5LWhpZ2gnLCAnIC1teGwtbXVsdGlwbHktaGlnaCcsICcnLCBkKX0iCiAKLVRVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdkaXZpZGUtaGFyZCcsICctbW5vLXhsLXNvZnQtZGl2JywgJy1teGwtc29mdC1kaXYnLCBkKX0iCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZGl2aWRlLWhhcmQnLCAnIC1tbm8teGwtc29mdC1kaXYnLCAnIC1teGwtc29mdC1kaXYnLCBkKX0iCiAKLVRVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdmcHUtc29mdCcsICcnLCAnJywgZCl9IgotVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnVFVORV9GRUFUVVJFUycsIFsnZnB1LWhhcmQnLCAnZnB1LWhhcmQtZXh0ZW5kZWQnXSwgJy1taGFyZC1mbG9hdCcsICcnLCBkKX0iCi1UVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZnB1LWhhcmQtZXh0ZW5kZWQnLCAnLW14bC1mbG9hdC1jb252ZXJ0IC1teGwtZmxvYXQtc3FydCcsICcnLCBkKX0iCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZnB1LXNvZnQnLCAnJywgJycsIGQpfSIKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ1RVTkVfRkVBVFVSRVMnLCBbJ2ZwdS1oYXJkJywgJ2ZwdS1oYXJkLWV4dGVuZGVkJ10sICcgLW1oYXJkLWZsb2F0JywgJycsIGQpfSIKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdmcHUtaGFyZC1leHRlbmRlZCcsICcgLW14bC1mbG9hdC1jb252ZXJ0IC1teGwtZmxvYXQtc3FydCcsICcnLCBkKX0iCiAKICMgU2V0IHRhcmdldCBmcHUgKGJpdGJha2Uga25vd24gdGFyZ2V0KSB0byBzb2Z0IG9yIGhhcmQgKGJhc2ljIG9yIGV4dGVuZGVkKQogVEFSR0VUX0ZQVSA9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ1RVTkVfRkVBVFVSRVMnLCAnZnB1LWhhcmQgZnB1LWhhcmQtZXh0ZW5kZWQnLCAnZnB1LWhhcmQnLCAnZnB1LXNvZnQnLCBkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9mZWF0dXJlLW1pY3JvYmxhemUtdmVyc2lvbnMuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLXZlcnNpb25zLmluYwppbmRleCA5NTU2NzRmLi41YzM3ZjQ5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9mZWF0dXJlLW1pY3JvYmxhemUtdmVyc2lvbnMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS12ZXJzaW9ucy5pbmMKQEAgLTQ0LDYgKzQ0LDcgQEAKIFRVTkVWQUxJRFt2OS41XSAgPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDkuNSIKIFRVTkVWQUxJRFt2OS42XSAgPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDkuNiIKIFRVTkVWQUxJRFt2MTAuMF0gPSAiTWljcm9CbGF6ZSB2ZXJzaW9uIDEwLjAiCitUVU5FVkFMSURbdjExLjBdID0gIk1pY3JvQmxhemUgdmVyc2lvbiAxMS4wIgogCiAjIFZlcnNpb24gY29uZmxpY3QgbWF0cml4CiBUVU5FQ09ORkxJQ1RTW3Y4LjAwXSA9ICIiCkBAIC02MCw4ICs2MSw5IEBACiBUVU5FQ09ORkxJQ1RTW3Y5LjVdICA9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCB2OS4wIHY5LjEgdjkuMiB2OS4zIHY5LjQiCiBUVU5FQ09ORkxJQ1RTW3Y5LjZdICA9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCB2OS4wIHY5LjEgdjkuMiB2OS4zIHY5LjQgdjkuNSIKIFRVTkVDT05GTElDVFNbdjEwLjBdID0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIHY4LjQwIHY4LjUwIHY5LjAgdjkuMSB2OS4yIHY5LjMgdjkuNCB2OS41IHY5LjYiCitUVU5FQ09ORkxJQ1RTW3YxMS4wXSA9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCB2OS4wIHY5LjEgdjkuMiB2OS4zIHY5LjQgdjkuNSB2OS42IHYxMC4wIgogCiAjIFZlcnNpb24gZmxhZ3MKLVRVTkVfQ0NBUkdTICs9ICItbWNwdT0ke0BtaWNyb2JsYXplX2N1cnJlbnRfdmVyc2lvbihkLCBUcnVlKX0iCi1NQlBLR0FSQ0hfVkVSU0lPTiA9ICItJHtAbWljcm9ibGF6ZV9jdXJyZW50X3ZlcnNpb24oZCl9IgorVFVORV9DQ0FSR1MgKz0gIiR7QCctbWNwdT0lcycgJSAobWljcm9ibGF6ZV9jdXJyZW50X3ZlcnNpb24oZCwgVHJ1ZSkpIGlmIG1pY3JvYmxhemVfY3VycmVudF92ZXJzaW9uKGQsIFRydWUpICE9ICcnIGVsc2UgJyd9IgorTUJQS0dBUkNIX1ZFUlNJT04gPSAiJHtAJy0lcycgJSAobWljcm9ibGF6ZV9jdXJyZW50X3ZlcnNpb24oZCwgVHJ1ZSkpIGlmIG1pY3JvYmxhemVfY3VycmVudF92ZXJzaW9uKGQsIFRydWUpICE9ICcnIGVsc2UgJyd9IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcG93ZXJwYy9hcmNoLXBvd2VycGMuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Bvd2VycGMvYXJjaC1wb3dlcnBjLmluYwppbmRleCA4YzBjOTQzLi5lZjE4ZTlhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcG93ZXJwYy9hcmNoLXBvd2VycGMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9wb3dlcnBjL2FyY2gtcG93ZXJwYy5pbmMKQEAgLTE1LDcgKzE1LDggQEAKIAogVFVORVZBTElEW20zMl0gPSAiUG93ZXIgRUxGMzIgc3RhbmRhcmQgQUJJIgogVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ20zMicsICcgLW0zMicsICcnLCBkKX0iCi1UVU5FX0FSQ0ggLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ20zMicsICdwb3dlcnBjJywgJycsIGQpfSIKK1RVTkVfQVJDSCAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbTMyJywgJ3Bvd2VycGMke0VORElBTl9TRlh9JywgJycsIGQpfSIKK0VORElBTl9TRlggPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYmlnZW5kaWFuJywgJycsICdsZScsIGQpfSIKIAogVFVORVZBTElEW2ZwdS1oYXJkXSA9ICJVc2UgaGFyZHdhcmUgRlBVLiIKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdmcHUtaGFyZCcsICcgLW1oYXJkLWZsb2F0JywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9wb3dlcnBjL2FyY2gtcG93ZXJwYzY0LmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9wb3dlcnBjL2FyY2gtcG93ZXJwYzY0LmluYwppbmRleCA0YmM1OTgzLi5jZjVjM2VmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcG93ZXJwYy9hcmNoLXBvd2VycGM2NC5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Bvd2VycGMvYXJjaC1wb3dlcnBjNjQuaW5jCkBAIC01LDcgKzUsNyBAQAogVFVORVZBTElEW202NF0gPSAiUG93ZXIgRUxGNjQgc3RhbmRhcmQgQUJJIgogVFVORUNPTkZMSUNUU1ttNjRdID0gIm0zMiBuZiIKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtNjQnLCAnIC1tNjQnLCAnJywgZCl9IgotVFVORV9BUkNIIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsIFsgJ202NCcgXSwgJ3Bvd2VycGM2NCcsICcnLCBkKX0iCitUVU5FX0FSQ0ggLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgWyAnbTY0JyBdLCAncG93ZXJwYzY0JHtFTkRJQU5fU0ZYfScsICcnLCBkKX0iCiAKICMgbXVzbCBvbmx5IHN1cHBvcnRzIGVsZnYyIEFCSSBmb3IgcHBjNjQKIFRVTkVfQ0NBUkdTIC49ICIke0BbJycsICcgLW1hYmk9ZWxmdjInXVsnbGliYy1tdXNsJyBpbiBkLmdldFZhcignT1ZFUlJJREVTJykuc3BsaXQoJzonKV19IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jCmluZGV4IDUwNTBlNDEuLjhkZWRiMWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11LmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKQEAgLTksNyArOSw3IEBACiAgICAgICAgICAgICB4Zjg2LXZpZGVvLWZiZGV2IFwKICAgICAgICAgICAgICIKIAotTUFDSElORV9GRUFUVVJFUyA9ICJhbHNhIGJsdWV0b290aCB1c2JnYWRnZXQgc2NyZWVuIgorTUFDSElORV9GRUFUVVJFUyA9ICJhbHNhIGJsdWV0b290aCB1c2JnYWRnZXQgc2NyZWVuIHZmYXQiCiAKIE1BQ0hJTkVPVkVSUklERVMgPS4gInFlbXVhbGw6IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QtbWlwcy5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QtbWlwcy5pbmMKaW5kZXggOTc4ODIwYS4uZjFmN2MyYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LW1pcHMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC1taXBzLmluYwpAQCAtNSwzICs1LDYgQEAKIFFCX09QVF9BUFBFTkQgPSAiLXNob3ctY3Vyc29yIC11c2IgLWRldmljZSB1c2ItdGFibGV0IgogIyBBZGQgdGhlICd2aXJ0aW8tcm5nLXBjaScgZGV2aWNlIG90aGVyd2lzZSB0aGUgZ3Vlc3QgbWF5IHJ1biBvdXQgb2YgZW50cm9weQogUUJfT1BUX0FQUEVORCArPSAiLW9iamVjdCBybmctcmFuZG9tLGZpbGVuYW1lPS9kZXYvdXJhbmRvbSxpZD1ybmcwIC1kZXZpY2UgdmlydGlvLXJuZy1wY2kscm5nPXJuZzAiCisKKyMgRm9yIGdyYXBoaWNzIHRvIHdvcmsgd2UgbmVlZCB0byBkZWZpbmUgdGhlIFZHQSBkZXZpY2UgYXMgd2VsbCBhcyB0aGUgbmVjZXNzYXJ5IFVTQiBkZXZpY2VzCitRQl9PUFRfQVBQRU5EICs9ICItdmdhIHN0ZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC14ODYuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LXg4Ni5pbmMKaW5kZXggNDk1NDE4Zi4uNWRjYzhiNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LXg4Ni5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LXg4Ni5pbmMKQEAgLTgsOSArOCw4IEBACiAKIFFCX0FVRElPX0RSViA9ICJhbHNhIgogUUJfQVVESU9fT1BUID0gIi1zb3VuZGh3IGFjOTcsZXMxMzcwIgotUUJfS0VSTkVMX0NNRExJTkVfQVBQRU5EID0gInZnYT0wIHV2ZXNhZmIubW9kZV9vcHRpb249JHtVVkVTQV9NT0RFfSBvcHJvZmlsZS50aW1lcj0xIHV2ZXNhZmIudGFza190aW1lb3V0PS0xIgorUUJfS0VSTkVMX0NNRExJTkVfQVBQRU5EID0gIm9wcm9maWxlLnRpbWVyPTEiCiBRQl9PUFRfQVBQRU5EID0gIi1zaG93LWN1cnNvciAtdXNiIC1kZXZpY2UgdXNiLXRhYmxldCIKICMgQWRkIHRoZSAndmlydGlvLXJuZy1wY2knIGRldmljZSBvdGhlcndpc2UgdGhlIGd1ZXN0IG1heSBydW4gb3V0IG9mIGVudHJvcHkKIFFCX09QVF9BUFBFTkQgKz0gIi1vYmplY3Qgcm5nLXJhbmRvbSxmaWxlbmFtZT0vZGV2L3VyYW5kb20saWQ9cm5nMCAtZGV2aWNlIHZpcnRpby1ybmctcGNpLHJuZz1ybmcwIgogCi1VVkVTQV9NT0RFID89ICI2NDB4NDgwLTMyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Jpc2N2L2FyY2gtcmlzY3YuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Jpc2N2L2FyY2gtcmlzY3YuaW5jCmluZGV4IDE5ZjhmM2UuLmUzZGJlZjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9yaXNjdi9hcmNoLXJpc2N2LmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcmlzY3YvYXJjaC1yaXNjdi5pbmMKQEAgLTQsNyArNCwxMyBAQAogCiBUVU5FX0FSQ0ggPSAiJHtUVU5FX0FSQ0hfdHVuZS0ke0RFRkFVTFRUVU5FfX0iCiBUVU5FX1BLR0FSQ0ggPSAiJHtUVU5FX1BLR0FSQ0hfdHVuZS0ke0RFRkFVTFRUVU5FfX0iCi1UVU5FX0NDQVJHUyAuPSAiIgorVFVORV9DQ0FSR1NfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3Jpc2N2NjRuZicsICcgLW1hYmk9bHA2NCcsICcgJywgZCl9IgorVFVORV9DQ0FSR1NfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3Jpc2N2MzJuZicsICcgLW1hYmk9aWxwMzInLCAnICcsIGQpfSIKIAogIyBRRU1VIHVzZXJtb2RlIGZhaWxzIHdpdGggaW52YWxpZCBpbnN0cnVjdGlvbiBlcnJvciAoRm9yIHJpc2N2MzIpCiBNQUNISU5FX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRURfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3Jpc2N2MzInLCAnIHFlbXUtdXNlcm1vZGUnLCAnJywgZCl9IgorCisjIEZpeDogbGQ6IHVucmVjb2duaXplZCBvcHRpb24gJy0taGFzaC1zdHlsZT1zeXN2JworTElOS0VSX0hBU0hfU1RZTEVfbGliYy1uZXdsaWIgPSAiIgorIyBGaXg6IGxkOiB1bnJlY29nbml6ZWQgb3B0aW9uICctLWhhc2gtc3R5bGU9Z251JworTElOS0VSX0hBU0hfU1RZTEVfbGliYy1iYXJlbWV0YWwgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Jpc2N2L3R1bmUtcmlzY3YuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Jpc2N2L3R1bmUtcmlzY3YuaW5jCmluZGV4IDI1ZDA0NjMuLjc0MWVlYjMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9yaXNjdi90dW5lLXJpc2N2LmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcmlzY3YvdHVuZS1yaXNjdi5pbmMKQEAgLTMsMTAgKzMsMTQgQEAKIFRVTkVWQUxJRFtyaXNjdjY0XSA9ICJFbmFibGUgNjQtYml0IFJJU0MtViBvcHRpbWl6YXRpb25zIgogVFVORVZBTElEW3Jpc2N2MzJdID0gIkVuYWJsZSAzMi1iaXQgUklTQy1WIG9wdGltaXphdGlvbnMiCiAKK1RVTkVWQUxJRFtyaXNjdjY0bmZdID0gIkVuYWJsZSA2NC1iaXQgUklTQy1WIG9wdGltaXphdGlvbnMgbm8gZmxvYXRpbmcgcG9pbnQiCitUVU5FVkFMSURbcmlzY3YzMm5mXSA9ICJFbmFibGUgMzItYml0IFJJU0MtViBvcHRpbWl6YXRpb25zIG5vIGZsb2F0aW5nIHBvaW50IgorCiBUVU5FVkFMSURbYmlnZW5kaWFuXSA9ICJCaWcgZW5kaWFuIG1vZGUiCiAKLUFWQUlMVFVORVMgKz0gInJpc2N2NjQgcmlzY3YzMiIKK0FWQUlMVFVORVMgKz0gInJpc2N2NjQgcmlzY3YzMiByaXNjdjY0bmYgcmlzY3YzMm5mIgogCisjIERlZmF1bHQKIFRVTkVfRkVBVFVSRVNfdHVuZS1yaXNjdjY0ID0gInJpc2N2NjQiCiBUVU5FX0FSQ0hfdHVuZS1yaXNjdjY0ID0gInJpc2N2NjQiCiBUVU5FX1BLR0FSQ0hfdHVuZS1yaXNjdjY0ID0gInJpc2N2NjQiCkBAIC0xNywzICsyMSwxMyBAQAogVFVORV9QS0dBUkNIX3R1bmUtcmlzY3YzMiA9ICJyaXNjdjMyIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXJpc2N2MzIgPSAicmlzY3YzMiIKIAorIyBObyBmbG9hdAorVFVORV9GRUFUVVJFU190dW5lLXJpc2N2NjRuZiA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1yaXNjdjY0fSByaXNjdjY0bmYiCitUVU5FX0FSQ0hfdHVuZS1yaXNjdjY0bmYgPSAicmlzY3Y2NCIKK1RVTkVfUEtHQVJDSF90dW5lLXJpc2N2NjRuZiA9ICJyaXNjdjY0IgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXJpc2N2NjRuZiA9ICJyaXNjdjY0bmYiCisKK1RVTkVfRkVBVFVSRVNfdHVuZS1yaXNjdjMybmYgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtcmlzY3YzMn0gcmlzY3YzMm5mIgorVFVORV9BUkNIX3R1bmUtcmlzY3YzMm5mID0gInJpc2N2MzIiCitUVU5FX1BLR0FSQ0hfdHVuZS1yaXNjdjMybmYgPSAicmlzY3YzMiIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1yaXNjdjMybmYgPSAicmlzY3YzMm5mIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtYXJtMTEzNmpmLXMuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtYXJtMTEzNmpmLXMuaW5jCmluZGV4IGIyNTk5NWQuLjE3M2NiNDYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTExMzZqZi1zLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm0xMTM2amYtcy5pbmMKQEAgLTEwLDcgKzEwLDcgQEAKIEFSTVBLR0FSQ0hfdHVuZS1hcm0xMTM2amZzID0gImFybTExMzZqZnMiCiBBUk1QS0dBUkNIX3R1bmUtYXJtMTEzNmpmc2hmID0gImFybTExMzZqZnMiCiAjIG1jcHUgaXMgdXNlZCBzbyBkb24ndCB1c2UgYXJtdjYgYXMgd2UgZG9uJ3Qgd2FudCBtYXJjaAotVFVORV9GRUFUVVJFU190dW5lLWFybTExMzZqZnMgPSAiYXJtIGFybTExMzZqZnMiCitUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtMTEzNmpmcyA9ICJhcm0gdmZwIGFybTExMzZqZnMiCiBUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtMTEzNmpmc2hmID0gIiR7VFVORV9GRUFUVVJFU190dW5lLWFybTExMzZqZnN9IGNhbGxjb252ZW50aW9uLWhhcmQiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtMTEzNmpmcyA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12Nn0gYXJtMTEzNmpmcy12ZnAiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtMTEzNmpmc2hmID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY2aGZ9IGFybTExMzZqZnNoZi12ZnAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm0xMTc2anotcy5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm0xMTc2anotcy5pbmMKaW5kZXggYzc0MWU4MC4uYTYzZDU4NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtYXJtMTE3Nmp6LXMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTExNzZqei1zLmluYwpAQCAtOSw3ICs5LDcgQEAKIEFWQUlMVFVORVMgKz0gImFybTExNzZqenMiCiBBUk1QS0dBUkNIX3R1bmUtYXJtMTE3Nmp6cyA9ICJhcm0xMTc2anpzIgogVFVORV9GRUFUVVJFU190dW5lLWFybTExNzZqenMgPSAiYXJtIHRodW1iIGFybTExNzZqenMiCi1QQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtMTE3Nmp6cyA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12NnRiLW5vdmZwfSBhcm0xMTc2anpzIGFybTExNzZqenN0IgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybTExNzZqenMgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjZ0LW5vdmZwfSBhcm0xMTc2anpzIGFybTExNzZqenN0IgogCiBBVkFJTFRVTkVTICs9ICJhcm0xMTc2anpzLWJlIgogQVJNUEtHQVJDSF90dW5lLWFybTExNzZqenMtYmUgPSAiJHtBUk1QS0dBUkNIX3R1bmUtYXJtMTE3Nmp6c30iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE3Mi1jb3J0ZXhhNTMuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyMDhiOTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzLmluYwpAQCAtMCwwICsxLDIzIEBACitERUZBVUxUVFVORSA/PSAiY29ydGV4YTcyLWNvcnRleGE1MyIKKworcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vYXJjaC1hcm12OGEuaW5jCisKK1RVTkVWQUxJRFtjb3J0ZXhhNzItY29ydGV4YTUzXSA9ICJFbmFibGUgYmlnLkxJVFRMRSBDb3J0ZXgtQTcyLkNvcnRleC1BNTMgc3BlY2lmaWMgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCisKK1RVTkVDT05GTElDVFNbYWFyY2g2NF0gPSAiYXJtdjQgYXJtdjUgYXJtdjYgYXJtdjcgYXJtdjdhIgorCitNQUNISU5FT1ZFUlJJREVTID0uICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJjb3J0ZXhhNzItY29ydGV4YTUzIiwgImNvcnRleGE3Mi1jb3J0ZXhhNTM6IiwgIiIgLGQpfSIKKworVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImNvcnRleGE3Mi1jb3J0ZXhhNTMiLCAiIC1tdHVuZT1jb3J0ZXgtYTcyLmNvcnRleC1hNTMiLCAiIiwgZCl9IgorCisjIGNvcnRleGE3Mi5jb3J0ZXhhNTMgaW1wbGllcyBjcmMgc3VwcG9ydAorQVZBSUxUVU5FUyArPSAiY29ydGV4YTcyLWNvcnRleGE1MyBjb3J0ZXhhNzItY29ydGV4YTUzLWNyeXB0byIKK0FSTVBLR0FSQ0hfdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzICAgICAgICAgICAgICAgICAgPSAiY29ydGV4YTcyLWNvcnRleGE1MyIKK0FSTVBLR0FSQ0hfdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzLWNyeXB0byAgICAgICAgICAgPSAiY29ydGV4YTcyLWNvcnRleGE1MyIKK1RVTkVfRkVBVFVSRVNfdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzICAgICAgICAgICAgICAgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjhhLWNyY30gY29ydGV4YTcyLWNvcnRleGE1MyIKK1RVTkVfRkVBVFVSRVNfdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzLWNyeXB0byAgICAgICAgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtdjhhLWNyYy1jcnlwdG99IGNvcnRleGE3Mi1jb3J0ZXhhNTMiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtY29ydGV4YTcyLWNvcnRleGE1MyAgICAgICAgID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY4YS1jcmN9ICAgICAgICBjb3J0ZXhhNzItY29ydGV4YTUzIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWNvcnRleGE3Mi1jb3J0ZXhhNTMtY3J5cHRvICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12OGEtY3JjLWNyeXB0b30gY29ydGV4YTcyLWNvcnRleGE1MyBjb3J0ZXhhNzItY29ydGV4YTUzLWNyeXB0byIKK0JBU0VfTElCX3R1bmUtY29ydGV4YTcyLWNvcnRleGE1MyAgICAgICAgICAgICAgICAgICAgPSAibGliNjQiCitCQVNFX0xJQl90dW5lLWNvcnRleGE3Mi1jb3J0ZXhhNTMtY3J5cHRvICAgICAgICAgICAgID0gImxpYjY0IgorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wb3dlcjkuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcG93ZXI5LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWQ2ZThlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcG93ZXI5LmluYwpAQCAtMCwwICsxLDM1IEBACitERUZBVUxUVFVORSA/PSAicHBjNjRwOWxlIgorCityZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3Bvd2VycGMvYXJjaC1wb3dlcnBjNjQuaW5jCisKK1RVTkVWQUxJRFtwb3dlcjldID0gIkVuYWJsZSBJQk0gUG93ZXI5IHNwZWNpZmljIHByb2Nlc3NvciBvcHRpbWl6YXRpb25zIgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3Bvd2VyOScsICcgLW1jcHU9cG93ZXI5JywgJycsIGQpfSIKKworQVZBSUxUVU5FUyArPSAicHBjcDkgcHBjNjRwOSBwcGNwOWxlIHBwYzY0cDlsZSIKKworVFVORV9GRUFUVVJFU190dW5lLXBwY3A5ID0gIm0zMiBmcHUtaGFyZCBwb3dlcjkgYWx0aXZlYyBiaWdlbmRpYW4iCitCQVNFX0xJQl90dW5lLXBwY3A5ID0gImxpYiIKK1RVTkVfUEtHQVJDSF90dW5lLXBwY3A5ID0gInBwY3A5IgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBwY3A5ID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBvd2VycGN9IHBwY3A5IgorCitUVU5FX0ZFQVRVUkVTX3R1bmUtcHBjNjRwOSA9ICJtNjQgZnB1LWhhcmQgcG93ZXI5IGFsdGl2ZWMgYmlnZW5kaWFuIgorQkFTRV9MSUJfdHVuZS1wcGM2NHA5ID0gImxpYjY0IgorVFVORV9QS0dBUkNIX3R1bmUtcHBjNjRwOSA9ICJwcGM2NHA5IgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBwYzY0cDkgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcG93ZXJwYzY0fSBwcGM2NHA5IgorCitUVU5FX0ZFQVRVUkVTX3R1bmUtcHBjcDlsZSA9ICJtMzIgZnB1LWhhcmQgcG93ZXI5IGFsdGl2ZWMiCitCQVNFX0xJQl90dW5lLXBwY3A5bGUgPSAibGliIgorVFVORV9QS0dBUkNIX3R1bmUtcHBjcDlsZSA9ICJwcGNwOWxlIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBwY3A5bGUgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcG93ZXJwY2xlfSBwcGNwOWxlIgorCitUVU5FX0ZFQVRVUkVTX3R1bmUtcHBjNjRwOWxlID0gIm02NCBmcHUtaGFyZCBwb3dlcjkgYWx0aXZlYyIKK0JBU0VfTElCX3R1bmUtcHBjNjRwOWxlID0gImxpYjY0IgorVFVORV9QS0dBUkNIX3R1bmUtcHBjNjRwOWxlID0gInBwYzY0cDlsZSIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wcGM2NHA5bGUgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcG93ZXJwYzY0bGV9IHBwYzY0cDlsZSIKKworIyBnbGliYyBjb25maWd1cmUgb3B0aW9ucyB0byBnZXQgcG93ZXI5IHNwZWNpZmljIGxpYnJhcnkKK0dMSUJDX0VYVFJBX09FQ09ORl9wb3dlcnBjNjQgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3Bvd2VyOScsICctLXdpdGgtY3B1PXBvd2VyOScsICcnLCBkKX0iCitHTElCQ19FWFRSQV9PRUNPTkZfcG93ZXJwYyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAncG93ZXI5JywgJy0td2l0aC1jcHU9cG93ZXI5JywgJycsIGQpfSIKKworIyBRRU1VIHVzZXJtb2RlIGZhaWxzIHdpdGggaW52YWxpZCBpbnN0cnVjdGlvbiBlcnJvcgorTUFDSElORV9GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdwb3dlcjknLCAnIHFlbXUtdXNlcm1vZGUnLCAnJywgZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMKaW5kZXggMDIyN2YzYy4uYTcyNzE0NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jCkBAIC04LDcgKzgsNyBAQAogTUFDSElORV9GRUFUVVJFUyArPSAic2NyZWVuIGtleWJvYXJkIHBjaSB1c2Job3N0IGV4dDIgZXh0MyB4ODYgXAogICAgICAgICAgICAgICAgICAgICAgYWNwaSBzZXJpYWwgdXNiZ2FkZ2V0IGFsc2EiCiAKLUlNQUdFX0ZTVFlQRVMgPz0gImhkZGltZyIKK0lNQUdFX0ZTVFlQRVMgPz0gIndpYyIKIAogS0VSTkVMX0lNQUdFVFlQRSA/PSAiYnpJbWFnZSIKIApAQCAtMTgsNyArMTgsNyBAQAogIyBrZXJuZWwtcmVsYXRlZCB2YXJpYWJsZXMKICMKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/Pz0gImxpbnV4LXlvY3RvIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI1LjIlIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI1LjQlIgogCiAjCiAjIFhTRVJWRVIgc3ViY29tcG9uZW50cywgdXNlZCB0byBidWlsZCB0aGUgWFNFUlZFUiB2YXJpYWJsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtLmNvbmYgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm0uY29uZgppbmRleCAyNmY0MGIxLi4zNjdmY2VmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm0uY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm0uY29uZgpAQCAtMTEsNyArMTEsNyBAQAogCiAjIEZvciBydW5xZW11CiBRQl9TWVNURU1fTkFNRSA9ICJxZW11LXN5c3RlbS1hcm0iCi1RQl9NQUNISU5FID0gIi1tYWNoaW5lIHZpcnQiCitRQl9NQUNISU5FID0gIi1tYWNoaW5lIHZpcnQsaGlnaG1lbT1vZmYiCiBRQl9DUFUgPSAiLWNwdSBjb3J0ZXgtYTE1IgogIyBTdGFuZGFyZCBTZXJpYWwgY29uc29sZQogUUJfS0VSTkVMX0NNRExJTkVfQVBQRU5EID0gImNvbnNvbGU9dHR5QU1BMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybTY0LmNvbmYgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm02NC5jb25mCmluZGV4IGVjMmE4ODcuLjFlMmQ0ZjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybTY0LmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtNjQuY29uZgpAQCAtMTMsNyArMTMsNyBAQAogUUJfU1lTVEVNX05BTUUgPSAicWVtdS1zeXN0ZW0tYWFyY2g2NCIKIFFCX01BQ0hJTkUgPSAiLW1hY2hpbmUgdmlydCIKIFFCX0NQVSA9ICItY3B1IGNvcnRleC1hNTciCi1RQl9DUFVfS1ZNID0gIi1jcHUgaG9zdCIKK1FCX0NQVV9LVk0gPSAiLWNwdSBob3N0IC1tYWNoaW5lIGdpYy12ZXJzaW9uPTMiCiAjIFN0YW5kYXJkIFNlcmlhbCBjb25zb2xlCiBRQl9LRVJORUxfQ01ETElORV9BUFBFTkQgPSAiY29uc29sZT10dHlBTUEwIgogIyBGb3IgZ3JhcGhpY3MgdG8gd29yayB3ZSBuZWVkIHRvIGRlZmluZSB0aGUgVkdBIGRldmljZSBhcyB3ZWxsIGFzIHRoZSBuZWNlc3NhcnkgVVNCIGRldmljZXMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybXY1LmNvbmYgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm12NS5jb25mCmluZGV4IGZiNDc4OWYuLmU3ZjI0ZmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybXY1LmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtdjUuY29uZgpAQCAtNCw3ICs0LDYgQEAKIAogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9xZW11LmluYwogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTkyNmVqcy5pbmMKLSNyZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtYXJtMTEzNmpmLXMuaW5jCiAKIEtFUk5FTF9JTUFHRVRZUEUgPSAiekltYWdlIgogCkBAIC0xNyw3ICsxNiw3IEBACiBRQl9PUFRfQVBQRU5EID0gIi1zaG93LWN1cnNvciAtdXNiIC1kZXZpY2UgdXNiLXRhYmxldCIKICMgQWRkIHRoZSAndmlydGlvLXJuZy1wY2knIGRldmljZSBvdGhlcndpc2UgdGhlIGd1ZXN0IG1heSBydW4gb3V0IG9mIGVudHJvcHkKIFFCX09QVF9BUFBFTkQgKz0gIi1vYmplY3Qgcm5nLXJhbmRvbSxmaWxlbmFtZT0vZGV2L3VyYW5kb20saWQ9cm5nMCAtZGV2aWNlIHZpcnRpby1ybmctcGNpLHJuZz1ybmcwIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI1LjIlIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI1LjQlIgogUUJfRFRCID0gIiR7QG9lLnV0aWxzLnZlcnNpb25fbGVzc19vcl9lcXVhbCgnUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8nLCAnNC43JywgJycsICd6SW1hZ2UtdmVyc2F0aWxlLXBiLmR0YicsIGQpfSIKIAogS01BQ0hJTkVfcWVtdWFybXY1ID0gInFlbXVhcm0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVyaXNjdjY0LmNvbmYgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVyaXNjdjY0LmNvbmYKaW5kZXggYjQ1ZmRkNS4uYTc1M2FmMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11cmlzY3Y2NC5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXJpc2N2NjQuY29uZgpAQCAtNCw2ICs0LDggQEAKIAogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9yaXNjdi9xZW11cmlzY3YuaW5jCiAKK1hWSVNPUl9QTEFUID0gInJpc2N2L3ZpcnQ2NCIKKwogRVhUUkFfSU1BR0VERVBFTkRTICs9ICJ1LWJvb3QiCiBVQk9PVF9NQUNISU5FID0gInFlbXUtcmlzY3Y2NF9zbW9kZV9kZWZjb25maWciCiBVQk9PVF9FTEYgPSAidS1ib290IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LTY0LmNvbmYgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYtNjQuY29uZgppbmRleCA2NDhjZjJmLi5kYjkwMDRlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYtNjQuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYtNjQuY29uZgpAQCAtMzcsMTAgKzM3LDYgQEAKIAogTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyA9ICJrZXJuZWwtbW9kdWxlLXNuZC1lbnMxMzcwIGtlcm5lbC1tb2R1bGUtc25kLXJhd21pZGkiCiAKLUtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gInV2ZXNhZmIiCi1LRVJORUxfTU9EVUxFX1BST0JFQ09ORiArPSAidXZlc2FmYiIKLW1vZHVsZV9jb25mX3V2ZXNhZmIgPSAib3B0aW9ucyB1dmVzYWZiIG1vZGVfb3B0aW9uPSR7VVZFU0FfTU9ERX0iCi0KIFdLU19GSUxFID89ICJxZW11eDg2LWRpcmVjdGRpc2sud2tzIgogZG9faW1hZ2Vfd2ljW2RlcGVuZHNdICs9ICJzeXNsaW51eDpkb19wb3B1bGF0ZV9zeXNyb290IHN5c2xpbnV4LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IG10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBkb3Nmc3Rvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYuY29uZiBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni5jb25mCmluZGV4IDhlMGRhODIuLjdlNjcyM2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni5jb25mCkBAIC0zNCwxMCArMzQsNiBAQAogCiBNQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTID0gImtlcm5lbC1tb2R1bGUtc25kLWVuczEzNzAga2VybmVsLW1vZHVsZS1zbmQtcmF3bWlkaSIKIAotS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAidXZlc2FmYiIKLUtFUk5FTF9NT0RVTEVfUFJPQkVDT05GICs9ICJ1dmVzYWZiIgotbW9kdWxlX2NvbmZfdXZlc2FmYiA9ICJvcHRpb25zIHV2ZXNhZmIgbW9kZV9vcHRpb249JHtVVkVTQV9NT0RFfSIKLQogV0tTX0ZJTEUgPz0gInFlbXV4ODYtZGlyZWN0ZGlzay53a3MiCiBkb19pbWFnZV93aWNbZGVwZW5kc10gKz0gInN5c2xpbnV4OmRvX3BvcHVsYXRlX3N5c3Jvb3Qgc3lzbGludXgtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgbXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IGRvc2ZzdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL211bHRpbGliLmNvbmYgYi9wb2t5L21ldGEvY29uZi9tdWx0aWxpYi5jb25mCmluZGV4IGNmZWQzZmIuLjU4ZjJhYzUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL211bHRpbGliLmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvbXVsdGlsaWIuY29uZgpAQCAtOSw2ICs5LDcgQEAKIFNUQUdJTkdfRElSX0hPU1QgPSAiJHtXT1JLRElSfS8ke01MUFJFRklYfXJlY2lwZS1zeXNyb290IgogU1RBR0lOR19ESVJfVEFSR0VUID0gIiR7V09SS0RJUn0vJHtNTFBSRUZJWH1yZWNpcGUtc3lzcm9vdCIKIFJFQ0lQRV9TWVNST09UID0gIiR7V09SS0RJUn0vJHtNTFBSRUZJWH1yZWNpcGUtc3lzcm9vdCIKK1JFQ0lQRV9TWVNST09UX2NsYXNzLW5hdGl2ZSA9ICIke1dPUktESVJ9L3JlY2lwZS1zeXNyb290IgogCiBJTkhFUklUICs9ICJtdWx0aWxpYl9nbG9iYWwiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvYnppcDIgYi9wb2t5L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL2J6aXAyLTEuMC42CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL2J6aXAyCnJlbmFtZSB0byBwb2t5L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL2J6aXAyLTEuMC42CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvZmlsZXMvdG9vbGNoYWluLXNoYXItZXh0cmFjdC5zaCBiL3Bva3kvbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1leHRyYWN0LnNoCmluZGV4IGNjYzRmNGUuLjA0NTI3ZjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1leHRyYWN0LnNoCisrKyBiL3Bva3kvbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1leHRyYWN0LnNoCkBAIC0xLDEzICsxLDEzIEBACiAjIS9iaW4vc2gKIAotWyAteiAiJEVOVkNMRUFORUQiIF0gJiYgZXhlYyAvdXNyL2Jpbi9lbnYgLWkgRU5WQ0xFQU5FRD0xIEhPTUU9IiRIT01FIiBcCi0JTENfQUxMPWVuX1VTLlVURi04IFwKLQlURVJNPSRURVJNIFwKLQlJQ0VDQ19QQVRIPSIkSUNFQ0NfUEFUSCIgXAotCWh0dHBfcHJveHk9IiRodHRwX3Byb3h5IiBodHRwc19wcm94eT0iJGh0dHBzX3Byb3h5IiBmdHBfcHJveHk9IiRmdHBfcHJveHkiIFwKLQlub19wcm94eT0iJG5vX3Byb3h5IiBhbGxfcHJveHk9IiRhbGxfcHJveHkiIEdJVF9QUk9YWV9DT01NQU5EPSIkR0lUX1BST1hZX0NPTU1BTkQiICIkMCIgIiRAIgotWyAtZiAvZXRjL2Vudmlyb25tZW50IF0gJiYgLiAvZXRjL2Vudmlyb25tZW50Ci1leHBvcnQgUEFUSD1gZWNobyAiJFBBVEgiIHwgc2VkIC1lICdzLzpcLi8vJyAtZSAncy86Oi86LydgCitleHBvcnQgTENfQUxMPWVuX1VTLlVURi04CisjTWFrZSBzdXJlIGF0IGxlYXN0IG9uZSBweXRob24gaXMgaW5zdGFsbGVkCitJTklUX1BZVEhPTj0kKHdoaWNoIHB5dGhvbjMgMj4vZGV2L251bGwgKQorWyAteiAiJElOSVRfUFlUSE9OIiBdICYmIElOSVRfUFlUSE9OPSQod2hpY2ggcHl0aG9uMiAyPi9kZXYvbnVsbCkKK1sgLXogIiRJTklUX1BZVEhPTiIgXSAmJiBlY2hvICJFcnJvcjogVGhlIFNESyBuZWVkcyBhIHB5dGhvbiBpbnN0YWxsZWQiICYmIGV4aXQgMQorCisjIFJlbW92ZSBpbnZhbGlkIFBBVEggZWxlbWVudHMgZmlyc3QgKG1heWJlIGZyb20gYSBwcmV2aW91c2x5IHNldHVwIHRvb2xjaGFpbiBub3cgZGVsZXRlZAorUEFUSD1gJElOSVRfUFlUSE9OIC1jICdpbXBvcnQgb3M7IHByaW50KCI6Ii5qb2luKGUgZm9yIGUgaW4gb3MuZW52aXJvblsiUEFUSCJdLnNwbGl0KCI6IikgaWYgb3MucGF0aC5leGlzdHMoZSkpKSdgCiAKIHR3ZWFrcGF0aCAoKSB7CiAgICAgY2FzZSAiOiR7UEFUSH06IiBpbgpAQCAtMjQ5LDcgKzI0OSw3IEBACiAgICAgICAgIHJtIHNkay56aXAgJiYgZXhpdCAxCiAgICAgZmkKIGVsc2UKLSAgICB0YWlsIC1uICskcGF5bG9hZF9vZmZzZXQgJDB8ICRTVURPX0VYRUMgdGFyIHhKIC1DICR0YXJnZXRfc2RrX2RpciAtLWNoZWNrcG9pbnQ9LjI1MDAgJEVYVFJBX1RBUl9PUFRJT05TIHx8IGV4aXQgMQorICAgIHRhaWwgLW4gKyRwYXlsb2FkX29mZnNldCAkMHwgJFNVRE9fRVhFQyB0YXIgbXhKIC1DICR0YXJnZXRfc2RrX2RpciAtLWNoZWNrcG9pbnQ9LjI1MDAgJEVYVFJBX1RBUl9PUFRJT05TIHx8IGV4aXQgMQogZmkKIGVjaG8gImRvbmUiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2UvZWxmLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9lbGYucHkKaW5kZXggMjU2MmNlYS4uZGYwYTQ1OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9lbGYucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS9lbGYucHkKQEAgLTE1LDEzICsxNSwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgImFhcmNoNjQiIDogICAoMTgzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCiAgICAgICAgICAgICAgICAgICAgICAgICAiYWFyY2g2NF9iZSIgOigxODMsICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDY0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICJpNTg2IiA6ICAgICAgKDMsICAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgImk2ODYiIDogICAgICAoMywgICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAieDg2XzY0IjogICAgICg2MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICJlcGlwaGFueSI6ICAgKDQ2NDMsICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgImxtMzIiOiAgICAgICAoMTM4LCAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAibWlwcyI6ICAgICAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzZWwiOiAgICAgKCA4LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemUiOiAgKDE4OSwgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWViIjooMTg5LCAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplZWwiOigxODksICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGMiOiAgICAoMjAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAicmlzY3YzMiI6ICAgICgyNDMsICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKQEAgLTM0LDYgKzM0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJhcm1lYiI6ICAgICAgKDQwLCAgICA5NywgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGMiOiAgICAoMjAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYzY0IjogICgyMSwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDY0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjNjRsZSI6ICAoMjEsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgIDY0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICJpMzg2IjogICAgICAgKCAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgImk0ODYiOiAgICAgICAoIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAiaTU4NiI6ICAgICAgICggMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKQEAgLTU4LDcgKzU5LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJzaDQiOiAgICAgICAgKDQyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgInNwYXJjIjogICAgICAoIDIsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZSI6ICAoMTg5LCAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplZWIiOigxODksICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlbCI6KDE4OSwgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJsaW51eC1tdXNsIiA6IHsgCkBAIC02OCw2ICs2OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiYXJtZWIiOiAgICAgICggIDQwLCAgICA5NywgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGMiOiAgICAoICAyMCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjNjQiOiAgKCAgMjEsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYzY0bGUiOiAgKDIxLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICA2NCksCiAgICAgICAgICAgICAgICAgICAgICAgICAiaTM4NiI6ICAgICAgICggICAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgImk0ODYiOiAgICAgICAoICAgMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJpNTg2IjogICAgICAgKCAgIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCkBAIC03OCw3ICs3OSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAibWlwczY0IjogICAgICggICA4LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHM2NGVsIjogICAoICAgOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplIjogICgxODksICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWViIjooMTg5LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlbCI6KDE4OSwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJyaXNjdjMyIjogICAgKDI0MywgICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAicmlzY3Y2NCI6ICAgICgyNDMsICAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlLnB5CmluZGV4IGI4NTg1ZDQuLmRkNzAwY2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZS5weQorKysgYi9wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkKQEAgLTI4MywzNiArMjgzLDMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHNobGliX3Byb3ZpZGVyW3NbMF1dID0ge30KICAgICAgICAgICAgICAgICAgICAgc2hsaWJfcHJvdmlkZXJbc1swXV1bc1sxXV0gPSAoZGVwX3BrZywgc1syXSkKICAgICByZXR1cm4gc2hsaWJfcHJvdmlkZXIKLQotCi1kZWYgbnBtX3NwbGl0X3BhY2thZ2VfZGlycyhwa2dkaXIpOgotICAgICIiIgotICAgIFdvcmsgb3V0IHRoZSBwYWNrYWdlcyBmZXRjaGVkIGFuZCB1bnBhY2tlZCBieSBCaXRCYWtlJ3MgbnBtIGZldGNoZXIKLSAgICBSZXR1cm5zIGEgZGljdCBvZiBwYWNrYWdlbmFtZSAtPiAocmVscGF0aCwgcGFja2FnZS5qc29uKSBvcmRlcmVkCi0gICAgc3VjaCB0aGF0IGl0IGlzIHN1aXRhYmxlIGZvciB1c2UgaW4gUEFDS0FHRVMgYW5kIEZJTEVTCi0gICAgIiIiCi0gICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKLSAgICBpbXBvcnQganNvbgotICAgIHBhY2thZ2VzID0ge30KLSAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayhwa2dkaXIpOgotICAgICAgICBpZiBvcy5wYXRoLmJhc2VuYW1lKHJvb3QpID09ICdub2RlX21vZHVsZXMnOgotICAgICAgICAgICAgZm9yIGRuIGluIGRpcnM6Ci0gICAgICAgICAgICAgICAgcmVscHRoID0gb3MucGF0aC5yZWxwYXRoKG9zLnBhdGguam9pbihyb290LCBkbiksIHBrZ2RpcikKLSAgICAgICAgICAgICAgICBwa2dpdGVtcyA9IFsnJHtQTn0nXQotICAgICAgICAgICAgICAgIGZvciBwYXRoaXRlbSBpbiByZWxwdGguc3BsaXQoJy8nKToKLSAgICAgICAgICAgICAgICAgICAgaWYgcGF0aGl0ZW0gPT0gJ25vZGVfbW9kdWxlcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBwa2dpdGVtcy5hcHBlbmQocGF0aGl0ZW0pCi0gICAgICAgICAgICAgICAgcGtnbmFtZSA9ICctJy5qb2luKHBrZ2l0ZW1zKS5yZXBsYWNlKCdfJywgJy0nKQotICAgICAgICAgICAgICAgIHBrZ25hbWUgPSBwa2duYW1lLnJlcGxhY2UoJ0AnLCAnJykKLSAgICAgICAgICAgICAgICBwa2dmaWxlID0gb3MucGF0aC5qb2luKHJvb3QsIGRuLCAncGFja2FnZS5qc29uJykKLSAgICAgICAgICAgICAgICBkYXRhID0gTm9uZQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBrZ2ZpbGUpOgotICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ocGtnZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGpzb24ubG9hZHMoZi5yZWFkKCkpCi0gICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzW3BrZ25hbWVdID0gKHJlbHB0aCwgZGF0YSkKLSAgICAjIFdlIHdhbnQgdGhlIG1haW4gcGFja2FnZSBmb3IgYSBtb2R1bGUgc29ydGVkICphZnRlciogaXRzIHN1YnBhY2thZ2VzCi0gICAgIyAoc28gdGhhdCBpdCBkb2Vzbid0IG90aGVyd2lzZSBzdGVhbCB0aGUgZmlsZXMgZm9yIHRoZSBzdWJwYWNrYWdlKSwgc28KLSAgICAjIHRoaXMgaXMgYSBjaGVhcCB3YXkgdG8gZG8gdGhhdCB3aGlsc3Qgc3RpbGwgaGF2aW5nIGFuIG90aGVyd2lzZQotICAgICMgYWxwaGFiZXRpY2FsIHNvcnQKLSAgICByZXR1cm4gT3JkZXJlZERpY3QoKGtleSwgcGFja2FnZXNba2V5XSkgZm9yIGtleSBpbiBzb3J0ZWQocGFja2FnZXMsIGtleT1sYW1iZGEgcGtnOiBwa2cgKyAnficpKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlX21hbmFnZXIucHkgYi9wb2t5L21ldGEvbGliL29lL3BhY2thZ2VfbWFuYWdlci5weQppbmRleCA0ZmYxOWNmLi5iMDY2MDQxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3BhY2thZ2VfbWFuYWdlci5weQorKysgYi9wb2t5L21ldGEvbGliL29lL3BhY2thZ2VfbWFuYWdlci5weQpAQCAtNDAsOCArNDAsOSBAQAogICAgIHZlciA9ICIiCiAgICAgZmlsZW5hbWUgPSAiIgogICAgIGRlcCA9IFtdCisgICAgcHJvdiA9IFtdCiAgICAgcGtnYXJjaCA9ICIiCi0gICAgZm9yIGxpbmUgaW4gY21kX291dHB1dC5zcGxpdGxpbmVzKCk6CisgICAgZm9yIGxpbmUgaW4gY21kX291dHB1dC5zcGxpdGxpbmVzKCkrWycnXToKICAgICAgICAgbGluZSA9IGxpbmUucnN0cmlwKCkKICAgICAgICAgaWYgJzonIGluIGxpbmU6CiAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoIlBhY2thZ2U6ICIpOgpAQCAtNjQsNiArNjUsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgZGVwLmFwcGVuZCgiJXMgW1JFQ10iICUgcmVjb21tZW5kKQogICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoIlBhY2thZ2VBcmNoOiAiKToKICAgICAgICAgICAgICAgICBwa2dhcmNoID0gbGluZS5zcGxpdCgiOiAiKVsxXQorICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoIlByb3ZpZGVzOiAiKToKKyAgICAgICAgICAgICAgICBwcm92aWRlcyA9IHZlcnJlZ2V4LnN1YignJywgbGluZS5zcGxpdCgiOiAiKVsxXSkKKyAgICAgICAgICAgICAgICBmb3IgcHJvdmlkZSBpbiBwcm92aWRlcy5zcGxpdCgiLCAiKToKKyAgICAgICAgICAgICAgICAgICAgcHJvdi5hcHBlbmQocHJvdmlkZSkKIAogICAgICAgICAjIFdoZW4gdGhlcmUgaXMgYSBibGFuayBsaW5lIHNhdmUgdGhlIHBhY2thZ2UgaW5mb3JtYXRpb24KICAgICAgICAgZWxpZiBub3QgbGluZToKQEAgLTcyLDIwICs3NywxNSBAQAogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gIiVzXyVzXyVzLmlwayIgJSAocGtnLCB2ZXIsIGFyY2gpCiAgICAgICAgICAgICBpZiBwa2c6CiAgICAgICAgICAgICAgICAgb3V0cHV0W3BrZ10gPSB7ImFyY2giOmFyY2gsICJ2ZXIiOnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlbmFtZSI6ZmlsZW5hbWUsICJkZXBzIjogZGVwLCAicGtnYXJjaCI6cGtnYXJjaCB9CisgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZW5hbWUiOmZpbGVuYW1lLCAiZGVwcyI6IGRlcCwgInBrZ2FyY2giOnBrZ2FyY2gsICJwcm92cyI6IHByb3Z9CiAgICAgICAgICAgICBwa2cgPSAiIgogICAgICAgICAgICAgYXJjaCA9ICIiCiAgICAgICAgICAgICB2ZXIgPSAiIgogICAgICAgICAgICAgZmlsZW5hbWUgPSAiIgogICAgICAgICAgICAgZGVwID0gW10KKyAgICAgICAgICAgIHByb3YgPSBbXQogICAgICAgICAgICAgcGtnYXJjaCA9ICIiCiAKLSAgICBpZiBwa2c6Ci0gICAgICAgIGlmIG5vdCBmaWxlbmFtZToKLSAgICAgICAgICAgIGZpbGVuYW1lID0gIiVzXyVzXyVzLmlwayIgJSAocGtnLCB2ZXIsIGFyY2gpCi0gICAgICAgIG91dHB1dFtwa2ddID0geyJhcmNoIjphcmNoLCAidmVyIjp2ZXIsCi0gICAgICAgICAgICAgICAgImZpbGVuYW1lIjpmaWxlbmFtZSwgImRlcHMiOiBkZXAgfQotCiAgICAgcmV0dXJuIG91dHB1dAogCiBkZWYgZmFpbGVkX3Bvc3RpbnN0c19hYm9ydChwa2dzLCBsb2dfcGF0aCk6CkBAIC0xMDcsNiArMTA3LDcgQEAKICAgICAgICAgInNoNCI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWJpZy1lbmRpYW4iXSwKICAgICAgICAgInBvd2VycGMiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCiAgICAgICAgICJwb3dlcnBjNjQiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCisgICAgICAgICJwb3dlcnBjNjRsZSI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWxpdHRsZS1lbmRpYW4iXSwKICAgICAgICAgIm1pcHMiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCiAgICAgICAgICJtaXBzaXNhMzJyNiI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWJpZy1lbmRpYW4iXSwKICAgICAgICAgIm1pcHM2NCI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWJpZy1lbmRpYW4iXSwKQEAgLTEzMSw3ICsxMzIsNyBAQAogICAgIGVudiA9IGRpY3Qob3MuZW52aXJvbikKICAgICBlbnZbIkxPQ0FMRUFSQ0hJVkUiXSA9IG9lLnBhdGguam9pbihsb2NhbGVkaXIsICJsb2NhbGUtYXJjaGl2ZSIpCiAKLSAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKGxvY2FsZWRpcik6CisgICAgZm9yIG5hbWUgaW4gc29ydGVkKG9zLmxpc3RkaXIobG9jYWxlZGlyKSk6CiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4obG9jYWxlZGlyLCBuYW1lKQogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHBhdGgpOgogICAgICAgICAgICAgY21kID0gWyJjcm9zcy1sb2NhbGVkZWYiLCAiLS12ZXJib3NlIl0KQEAgLTM2MCw3ICszNjEsNyBAQAogICAgICAgICAgICAgICAgIi0tYWRtaW5kaXI9JXMvdmFyL2xpYi9kcGtnIiAlIHNlbGYucm9vdGZzX2RpciwKICAgICAgICAgICAgICAgICItVyJdCiAKLSAgICAgICAgY21kLmFwcGVuZCgiLWY9UGFja2FnZTogJHtQYWNrYWdlfVxuQXJjaGl0ZWN0dXJlOiAke1BhY2thZ2VBcmNofVxuVmVyc2lvbjogJHtWZXJzaW9ufVxuRmlsZTogJHtQYWNrYWdlfV8ke1ZlcnNpb259XyR7QXJjaGl0ZWN0dXJlfS5kZWJcbkRlcGVuZHM6ICR7RGVwZW5kc31cblJlY29tbWVuZHM6ICR7UmVjb21tZW5kc31cblxuIikKKyAgICAgICAgY21kLmFwcGVuZCgiLWY9UGFja2FnZTogJHtQYWNrYWdlfVxuQXJjaGl0ZWN0dXJlOiAke1BhY2thZ2VBcmNofVxuVmVyc2lvbjogJHtWZXJzaW9ufVxuRmlsZTogJHtQYWNrYWdlfV8ke1ZlcnNpb259XyR7QXJjaGl0ZWN0dXJlfS5kZWJcbkRlcGVuZHM6ICR7RGVwZW5kc31cblJlY29tbWVuZHM6ICR7UmVjb21tZW5kc31cblByb3ZpZGVzOiAke1Byb3ZpZGVzfVxuXG4iKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGNtZF9vdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkuc3RyaXAoKS5kZWNvZGUoInV0Zi04IikKQEAgLTU4MCw2ICs1ODEsMTEgQEAKICAgICAgICAgIyBvZS1wa2dkYXRhLXV0aWwgcmVhZHMgaXQgZnJvbSBhIGZpbGUKICAgICAgICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUobW9kZT0idysiLCBwcmVmaXg9Imluc3RhbGxlZC1wa2dzIikgYXMgaW5zdGFsbGVkX3BrZ3M6CiAgICAgICAgICAgICBwa2dzID0gc2VsZi5saXN0X2luc3RhbGxlZCgpCisKKyAgICAgICAgICAgIHByb3ZpZGVkX3BrZ3MgPSBzZXQoKQorICAgICAgICAgICAgZm9yIHBrZyBpbiBwa2dzLnZhbHVlcygpOgorICAgICAgICAgICAgICAgIHByb3ZpZGVkX3BrZ3MgfD0gc2V0KHBrZy5nZXQoJ3Byb3ZzJywgW10pKQorCiAgICAgICAgICAgICBvdXRwdXQgPSBvZS51dGlscy5mb3JtYXRfcGtnX2xpc3QocGtncywgImFyY2giKQogICAgICAgICAgICAgaW5zdGFsbGVkX3BrZ3Mud3JpdGUob3V0cHV0KQogICAgICAgICAgICAgaW5zdGFsbGVkX3BrZ3MuZmx1c2goKQpAQCAtNTkxLDEwICs1OTcsMTUgQEAKICAgICAgICAgICAgIGlmIGV4Y2x1ZGU6CiAgICAgICAgICAgICAgICAgY21kLmV4dGVuZChbJy0tZXhjbHVkZT0nICsgJ3wnLmpvaW4oZXhjbHVkZS5zcGxpdCgpKV0pCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgYmIubm90ZSgiSW5zdGFsbGluZyBjb21wbGVtZW50YXJ5IHBhY2thZ2VzIC4uLiIpCiAgICAgICAgICAgICAgICAgYmIubm90ZSgnUnVubmluZyAlcycgJSBjbWQpCiAgICAgICAgICAgICAgICAgY29tcGxlbWVudGFyeV9wa2dzID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLmRlY29kZSgidXRmLTgiKQotICAgICAgICAgICAgICAgIHNlbGYuaW5zdGFsbChjb21wbGVtZW50YXJ5X3BrZ3Muc3BsaXQoKSwgYXR0ZW1wdF9vbmx5PVRydWUpCisgICAgICAgICAgICAgICAgY29tcGxlbWVudGFyeV9wa2dzID0gc2V0KGNvbXBsZW1lbnRhcnlfcGtncy5zcGxpdCgpKQorICAgICAgICAgICAgICAgIHNraXBfcGtncyA9IHNvcnRlZChjb21wbGVtZW50YXJ5X3BrZ3MgJiBwcm92aWRlZF9wa2dzKQorICAgICAgICAgICAgICAgIGluc3RhbGxfcGtncyA9IHNvcnRlZChjb21wbGVtZW50YXJ5X3BrZ3MgLSBwcm92aWRlZF9wa2dzKQorICAgICAgICAgICAgICAgIGJiLm5vdGUoIkluc3RhbGxpbmcgY29tcGxlbWVudGFyeSBwYWNrYWdlcyAuLi4gJXMgKHNraXBwZWQgYWxyZWFkeSBwcm92aWRlZCBwYWNrYWdlcyAlcykiICUgKAorICAgICAgICAgICAgICAgICAgICAnICcuam9pbihpbnN0YWxsX3BrZ3MpLAorICAgICAgICAgICAgICAgICAgICAnICcuam9pbihza2lwX3BrZ3MpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmluc3RhbGwoaW5zdGFsbF9wa2dzLCBhdHRlbXB0X29ubHk9VHJ1ZSkKICAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJDb3VsZCBub3QgY29tcHV0ZSBjb21wbGVtZW50YXJ5IHBhY2thZ2VzIGxpc3QuIENvbW1hbmQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIHJldHVybmVkICVkOlxuJXMiICUKQEAgLTc2OCw2ICs3NzksOCBAQAogICAgICAgICAjIFRoaXMgcHJldmVudHMgYWNjaWRlbnRhbCBtYXRjaGluZyBhZ2FpbnN0IGxpYnNvbHYncyBidWlsdC1pbiBwb2xpY2llcwogICAgICAgICBpZiBsZW4oYXJjaHMpIDw9IDE6CiAgICAgICAgICAgICBhcmNocyA9IGFyY2hzICsgWyJib2d1c2FyY2giXQorICAgICAgICAjIFRoaXMgYXJjaGl0ZWN0dXJlIG5lZWRzIHRvIGJlIHVwZnJvbnQgc28gdGhhdCBwYWNrYWdlcyB1c2luZyBpdCBhcmUgcHJvcGVybHkgcHJpb3JpdGl6ZWQKKyAgICAgICAgYXJjaHMgPSBbInNka19wcm92aWRlc19kdW1teV90YXJnZXQiXSArIGFyY2hzCiAgICAgICAgIGNvbmZkaXIgPSAiJXMvJXMiICUoc2VsZi50YXJnZXRfcm9vdGZzLCAiZXRjL2RuZi92YXJzLyIpCiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihjb25mZGlyKQogICAgICAgICBvcGVuKGNvbmZkaXIgKyAiYXJjaCIsICd3Jykud3JpdGUoIjoiLmpvaW4oYXJjaHMpKQpAQCAtMTYyMSw3ICsxNjM0LDcgQEAKIAogICAgICAgICBvcy5lbnZpcm9uWydBUFRfQ09ORklHJ10gPSBzZWxmLmFwdF9jb25mX2ZpbGUKIAotICAgICAgICBjbWQgPSAiJXMgJXMgaW5zdGFsbCAtLWZvcmNlLXllcyAtLWFsbG93LXVuYXV0aGVudGljYXRlZCAlcyIgJSBcCisgICAgICAgIGNtZCA9ICIlcyAlcyBpbnN0YWxsIC0tZm9yY2UteWVzIC0tYWxsb3ctdW5hdXRoZW50aWNhdGVkIC0tbm8tcmVtb3ZlICVzIiAlIFwKICAgICAgICAgICAgICAgKHNlbGYuYXB0X2dldF9jbWQsIHNlbGYuYXB0X2FyZ3MsICcgJy5qb2luKHBrZ3MpKQogCiAgICAgICAgIHRyeToKQEAgLTE3ODMsOCArMTc5Niw3IEBACiAgICAgICAgICAgICBvcGVuKG9zLnBhdGguam9pbih0YXJnZXRfZHBrZ19kaXIsICJhdmFpbGFibGUiKSwgIncrIikuY2xvc2UoKQogCiAgICAgZGVmIHJlbW92ZV9wYWNrYWdpbmdfZGF0YShzZWxmKToKLSAgICAgICAgYmIudXRpbHMucmVtb3ZlKG9zLnBhdGguam9pbihzZWxmLnRhcmdldF9yb290ZnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kLmdldFZhcignb3BrZ2xpYmRpcicpKSwgVHJ1ZSkKKyAgICAgICAgYmIudXRpbHMucmVtb3ZlKHNlbGYudGFyZ2V0X3Jvb3RmcyArIHNlbGYuZC5nZXRWYXIoJ29wa2dsaWJkaXInKSwgVHJ1ZSkKICAgICAgICAgYmIudXRpbHMucmVtb3ZlKHNlbGYudGFyZ2V0X3Jvb3RmcyArICIvdmFyL2xpYi9kcGtnLyIsIFRydWUpCiAKICAgICBkZWYgZml4X2Jyb2tlbl9kZXBlbmRlbmNpZXMoc2VsZik6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3BhY2thZ2Vncm91cC5weSBiL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZWdyb3VwLnB5CmluZGV4IDI0MTljYmIuLjhmY2FlY2QgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZWdyb3VwLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZWdyb3VwLnB5CkBAIC01LDE3ICs1LDExIEBACiBpbXBvcnQgaXRlcnRvb2xzCiAKIGRlZiBpc19vcHRpb25hbChmZWF0dXJlLCBkKToKLSAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCJGRUFUVVJFX1BBQ0tBR0VTXyVzIiAlIGZlYXR1cmUpCi0gICAgaWYgcGFja2FnZXM6Ci0gICAgICAgIHJldHVybiBib29sKGQuZ2V0VmFyRmxhZygiRkVBVFVSRV9QQUNLQUdFU18lcyIgJSBmZWF0dXJlLCAib3B0aW9uYWwiKSkKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gYm9vbChkLmdldFZhckZsYWcoIlBBQ0tBR0VfR1JPVVBfJXMiICUgZmVhdHVyZSwgIm9wdGlvbmFsIikpCisgICAgcmV0dXJuIGJvb2woZC5nZXRWYXJGbGFnKCJGRUFUVVJFX1BBQ0tBR0VTXyVzIiAlIGZlYXR1cmUsICJvcHRpb25hbCIpKQogCiBkZWYgcGFja2FnZXMoZmVhdHVyZXMsIGQpOgogICAgIGZvciBmZWF0dXJlIGluIGZlYXR1cmVzOgogICAgICAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCJGRUFUVVJFX1BBQ0tBR0VTXyVzIiAlIGZlYXR1cmUpCi0gICAgICAgIGlmIG5vdCBwYWNrYWdlczoKLSAgICAgICAgICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoIlBBQ0tBR0VfR1JPVVBfJXMiICUgZmVhdHVyZSkKICAgICAgICAgZm9yIHBrZyBpbiAocGFja2FnZXMgb3IgIiIpLnNwbGl0KCk6CiAgICAgICAgICAgICB5aWVsZCBwa2cKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9wYXRoLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9wYXRoLnB5CmluZGV4IGZhMjA5YjkuLjA4Mjk3MjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2UvcGF0aC5weQorKysgYi9wb2t5L21ldGEvbGliL29lL3BhdGgucHkKQEAgLTk5LDcgKzk5LDIyIEBACiAgICAgaWYgb3MucGF0aC5pc2RpcihzcmMpIGFuZCBub3QgbGVuKG9zLmxpc3RkaXIoc3JjKSk6CiAgICAgICAgIHJldHVybgogCi0gICAgaWYgKG9zLnN0YXQoc3JjKS5zdF9kZXYgPT0gIG9zLnN0YXQoZHN0KS5zdF9kZXYpOgorICAgIGNhbmhhcmQgPSBGYWxzZQorICAgIHRlc3RmaWxlID0gTm9uZQorICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHNyYyk6CisgICAgICAgIGlmIGxlbihmaWxlcyk6CisgICAgICAgICAgICB0ZXN0ZmlsZSA9IG9zLnBhdGguam9pbihyb290LCBmaWxlc1swXSkKKyAgICAgICAgICAgIGJyZWFrCisKKyAgICBpZiB0ZXN0ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MubGluayh0ZXN0ZmlsZSwgb3MucGF0aC5qb2luKGRzdCwgJ3Rlc3RmaWxlJykpCisgICAgICAgICAgICBvcy51bmxpbmsob3MucGF0aC5qb2luKGRzdCwgJ3Rlc3RmaWxlJykpCisgICAgICAgICAgICBjYW5oYXJkID0gVHJ1ZQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBiYi5kZWJ1ZygyLCAiSGFyZGxpbmsgdGVzdCBmYWlsZWQgd2l0aCAiICsgc3RyKGUpKQorCisgICAgaWYgKGNhbmhhcmQpOgogICAgICAgICAjIE5lZWQgdG8gY29weSBkaXJlY3RvcmllcyBvbmx5IHdpdGggdGFyIGZpcnN0IHNpbmNlIGNwIHdpbGwgZXJyb3IgaWYgdHdvIAogICAgICAgICAjIHdyaXRlcnMgdHJ5IGFuZCBjcmVhdGUgYSBkaXJlY3RvcnkgYXQgdGhlIHNhbWUgdGltZQogICAgICAgICBjbWQgPSAiY2QgJXM7IGZpbmQgLiAtdHlwZSBkIC1wcmludCB8IHRhciAtLXhhdHRycyAtLXhhdHRycy1pbmNsdWRlPScqJyAtY2YgLSAtUyAtQyAlcyAtcCAtLW5vLXJlY3Vyc2lvbiAtLWZpbGVzLWZyb20gLSB8IHRhciAtLXhhdHRycyAtLXhhdHRycy1pbmNsdWRlPScqJyAteGhmIC0gLUMgJXMiICUgKHNyYywgc3JjLCBkc3QpCkBAIC0xMjEsMTIgKzEzNiw5IEBACiBkZWYgY29weWhhcmRsaW5rKHNyYywgZHN0KToKICAgICAiIiJNYWtlIGEgaGFyZCBsaW5rIHdoZW4gcG9zc2libGUsIG90aGVyd2lzZSBjb3B5LiIiIgogCi0gICAgIyBXZSBuZWVkIHRvIHN0YXQgdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBhcyB0aGUgZGVzdGluYXRpb24gZmlsZSBwcm9iYWJseQotICAgICMgZG9lc24ndCBleGlzdCB5ZXQuCi0gICAgZHN0ZGlyID0gb3MucGF0aC5kaXJuYW1lKGRzdCkKLSAgICBpZiBvcy5zdGF0KHNyYykuc3RfZGV2ID09IG9zLnN0YXQoZHN0ZGlyKS5zdF9kZXY6CisgICAgdHJ5OgogICAgICAgICBvcy5saW5rKHNyYywgZHN0KQotICAgIGVsc2U6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHNodXRpbC5jb3B5KHNyYywgZHN0KQogCiBkZWYgcmVtb3ZlKHBhdGgsIHJlY3Vyc2U9VHJ1ZSk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3Byc2VydmljZS5weSBiL3Bva3kvbWV0YS9saWIvb2UvcHJzZXJ2aWNlLnB5CmluZGV4IGIxMTMyY2MuLjJkM2M5YzcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2UvcHJzZXJ2aWNlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvcHJzZXJ2aWNlLnB5CkBAIC0zLDYgKzMsMTAgQEAKICMKIAogZGVmIHByc2Vydl9tYWtlX2Nvbm4oZCwgY2hlY2sgPSBGYWxzZSk6CisgICAgIyBPdGhlcndpc2UgdGhpcyBmYWlscyB3aGVuIGNhbGxlZCBmcm9tIHJlY2lwZXMgd2hpY2ggZS5nLiBpbmhlcml0IHB5dGhvbjNuYXRpdmUgKHdoaWNoIHNldHMgX1BZVEhPTl9TWVNDT05GSUdEQVRBX05BTUUpIHdpdGg6CisgICAgIyBObyBtb2R1bGUgbmFtZWQgJ19zeXNjb25maWdkYXRhJworICAgIGlmICdfUFlUSE9OX1NZU0NPTkZJR0RBVEFfTkFNRScgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgZGVsIG9zLmVudmlyb25bJ19QWVRIT05fU1lTQ09ORklHREFUQV9OQU1FJ10KICAgICBpbXBvcnQgcHJzZXJ2LnNlcnYKICAgICBob3N0X3BhcmFtcyA9IGxpc3QoW19mIGZvciBfZiBpbiAoZC5nZXRWYXIoIlBSU0VSVl9IT1NUIikgb3IgJycpLnNwbGl0KCc6JykgaWYgX2ZdKQogICAgIHRyeToKQEAgLTc5LDQxICs4Myw0MCBAQAogICAgIGRmID0gZC5nZXRWYXIoJ1BSU0VSVl9EVU1QRklMRScpCiAgICAgI3dyaXRlIGRhdGEKICAgICBsZiA9IGJiLnV0aWxzLmxvY2tmaWxlKCIlcy5sb2NrIiAlIGRmKQotICAgIGYgPSBvcGVuKGRmLCAiYSIpCi0gICAgaWYgbWV0YWluZm86Ci0gICAgICAgICNkdW1wIGNvbHVtbiBpbmZvIAotICAgICAgICBmLndyaXRlKCIjUFJfY29yZV92ZXIgPSBcIiVzXCJcblxuIiAlIG1ldGFpbmZvWydjb3JlX3ZlciddKTsKLSAgICAgICAgZi53cml0ZSgiI1RhYmxlOiAlc1xuIiAlIG1ldGFpbmZvWyd0YmxfbmFtZSddKQotICAgICAgICBmLndyaXRlKCIjQ29sdW1uczpcbiIpCi0gICAgICAgIGYud3JpdGUoIiNuYW1lICAgICAgXHQgdHlwZSAgICBcdCBub3RuICAgIFx0IGRmbHQgICAgXHQgcGtcbiIpCi0gICAgICAgIGYud3JpdGUoIiMtLS0tLS0tLS0tXHQgLS0tLS0tLS1cdCAtLS0tLS0tLVx0IC0tLS0tLS0tXHQgLS0tLVxuIikKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKG1ldGFpbmZvWydjb2xfaW5mbyddKSk6Ci0gICAgICAgICAgICBmLndyaXRlKCIjJTEwc1x0ICU4c1x0ICU4c1x0ICU4c1x0ICU0c1xuIiAlIAotICAgICAgICAgICAgICAgICAgICAobWV0YWluZm9bJ2NvbF9pbmZvJ11baV1bJ25hbWUnXSwgCi0gICAgICAgICAgICAgICAgICAgICBtZXRhaW5mb1snY29sX2luZm8nXVtpXVsndHlwZSddLCAKLSAgICAgICAgICAgICAgICAgICAgIG1ldGFpbmZvWydjb2xfaW5mbyddW2ldWydub3RudWxsJ10sIAotICAgICAgICAgICAgICAgICAgICAgbWV0YWluZm9bJ2NvbF9pbmZvJ11baV1bJ2RmbHRfdmFsdWUnXSwgCi0gICAgICAgICAgICAgICAgICAgICBtZXRhaW5mb1snY29sX2luZm8nXVtpXVsncGsnXSkpCi0gICAgICAgIGYud3JpdGUoIlxuIikKKyAgICB3aXRoIG9wZW4oZGYsICJhIikgYXMgZjoKKyAgICAgICAgaWYgbWV0YWluZm86CisgICAgICAgICAgICAjZHVtcCBjb2x1bW4gaW5mbworICAgICAgICAgICAgZi53cml0ZSgiI1BSX2NvcmVfdmVyID0gXCIlc1wiXG5cbiIgJSBtZXRhaW5mb1snY29yZV92ZXInXSk7CisgICAgICAgICAgICBmLndyaXRlKCIjVGFibGU6ICVzXG4iICUgbWV0YWluZm9bJ3RibF9uYW1lJ10pCisgICAgICAgICAgICBmLndyaXRlKCIjQ29sdW1uczpcbiIpCisgICAgICAgICAgICBmLndyaXRlKCIjbmFtZSAgICAgIFx0IHR5cGUgICAgXHQgbm90biAgICBcdCBkZmx0ICAgIFx0IHBrXG4iKQorICAgICAgICAgICAgZi53cml0ZSgiIy0tLS0tLS0tLS1cdCAtLS0tLS0tLVx0IC0tLS0tLS0tXHQgLS0tLS0tLS1cdCAtLS0tXG4iKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKG1ldGFpbmZvWydjb2xfaW5mbyddKSk6CisgICAgICAgICAgICAgICAgZi53cml0ZSgiIyUxMHNcdCAlOHNcdCAlOHNcdCAlOHNcdCAlNHNcbiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgKG1ldGFpbmZvWydjb2xfaW5mbyddW2ldWyduYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWluZm9bJ2NvbF9pbmZvJ11baV1bJ3R5cGUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhaW5mb1snY29sX2luZm8nXVtpXVsnbm90bnVsbCddLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFpbmZvWydjb2xfaW5mbyddW2ldWydkZmx0X3ZhbHVlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWluZm9bJ2NvbF9pbmZvJ11baV1bJ3BrJ10pKQorICAgICAgICAgICAgZi53cml0ZSgiXG4iKQogCi0gICAgaWYgbG9ja2Rvd246Ci0gICAgICAgIGYud3JpdGUoIlBSU0VSVl9MT0NLRE9XTiA9IFwiMVwiXG5cbiIpCisgICAgICAgIGlmIGxvY2tkb3duOgorICAgICAgICAgICAgZi53cml0ZSgiUFJTRVJWX0xPQ0tET1dOID0gXCIxXCJcblxuIikKIAotICAgIGlmIGRhdGFpbmZvOgotICAgICAgICBpZHggPSB7fQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oZGF0YWluZm8pKToKLSAgICAgICAgICAgIHBrZ2FyY2ggPSBkYXRhaW5mb1tpXVsncGtnYXJjaCddCi0gICAgICAgICAgICB2YWx1ZSA9IGRhdGFpbmZvW2ldWyd2YWx1ZSddCi0gICAgICAgICAgICBpZiBwa2dhcmNoIG5vdCBpbiBpZHg6Ci0gICAgICAgICAgICAgICAgaWR4W3BrZ2FyY2hdID0gaQotICAgICAgICAgICAgZWxpZiB2YWx1ZSA+IGRhdGFpbmZvW2lkeFtwa2dhcmNoXV1bJ3ZhbHVlJ106Ci0gICAgICAgICAgICAgICAgaWR4W3BrZ2FyY2hdID0gaQotICAgICAgICAgICAgZi53cml0ZSgiUFJBVVRPJCVzJCVzJCVzID0gXCIlc1wiXG4iICUgCi0gICAgICAgICAgICAgICAgKHN0cihkYXRhaW5mb1tpXVsndmVyc2lvbiddKSwgcGtnYXJjaCwgc3RyKGRhdGFpbmZvW2ldWydjaGVja3N1bSddKSwgc3RyKHZhbHVlKSkpCi0gICAgICAgIGlmIG5vdCBub21heDoKLSAgICAgICAgICAgIGZvciBpIGluIGlkeDoKLSAgICAgICAgICAgICAgICBmLndyaXRlKCJQUkFVVE9fJXNfJXMgPSBcIiVzXCJcbiIgJSAoc3RyKGRhdGFpbmZvW2lkeFtpXV1bJ3ZlcnNpb24nXSksc3RyKGRhdGFpbmZvW2lkeFtpXV1bJ3BrZ2FyY2gnXSksc3RyKGRhdGFpbmZvW2lkeFtpXV1bJ3ZhbHVlJ10pKSkKLSAgICBmLmNsb3NlKCkKKyAgICAgICAgaWYgZGF0YWluZm86CisgICAgICAgICAgICBpZHggPSB7fQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGRhdGFpbmZvKSk6CisgICAgICAgICAgICAgICAgcGtnYXJjaCA9IGRhdGFpbmZvW2ldWydwa2dhcmNoJ10KKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGRhdGFpbmZvW2ldWyd2YWx1ZSddCisgICAgICAgICAgICAgICAgaWYgcGtnYXJjaCBub3QgaW4gaWR4OgorICAgICAgICAgICAgICAgICAgICBpZHhbcGtnYXJjaF0gPSBpCisgICAgICAgICAgICAgICAgZWxpZiB2YWx1ZSA+IGRhdGFpbmZvW2lkeFtwa2dhcmNoXV1bJ3ZhbHVlJ106CisgICAgICAgICAgICAgICAgICAgIGlkeFtwa2dhcmNoXSA9IGkKKyAgICAgICAgICAgICAgICBmLndyaXRlKCJQUkFVVE8kJXMkJXMkJXMgPSBcIiVzXCJcbiIgJQorICAgICAgICAgICAgICAgICAgICAoc3RyKGRhdGFpbmZvW2ldWyd2ZXJzaW9uJ10pLCBwa2dhcmNoLCBzdHIoZGF0YWluZm9baV1bJ2NoZWNrc3VtJ10pLCBzdHIodmFsdWUpKSkKKyAgICAgICAgICAgIGlmIG5vdCBub21heDoKKyAgICAgICAgICAgICAgICBmb3IgaSBpbiBpZHg6CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoIlBSQVVUT18lc18lcyA9IFwiJXNcIlxuIiAlIChzdHIoZGF0YWluZm9baWR4W2ldXVsndmVyc2lvbiddKSxzdHIoZGF0YWluZm9baWR4W2ldXVsncGtnYXJjaCddKSxzdHIoZGF0YWluZm9baWR4W2ldXVsndmFsdWUnXSkpKQogICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCiAKIGRlZiBwcnNlcnZfY2hlY2tfYXZhaWwoZCk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3FhLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9xYS5weQppbmRleCAyMTA2NmM0Li5lYTgzMWI5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3FhLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvcWEucHkKQEAgLTQxLDEzICs0MSwxNSBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgICBzZWxmLm9iamR1bXBfb3V0cHV0ID0ge30KKyAgICAgICAgc2VsZi5kYXRhID0gTm9uZQogCiAgICAgIyBDb250ZXh0IE1hbmFnZXIgZnVuY3Rpb25zIHRvIGNsb3NlIHRoZSBtbWFwIGV4cGxpY2l0bHkKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjayk6Ci0gICAgICAgIHNlbGYuZGF0YS5jbG9zZSgpCisgICAgICAgIGlmIHNlbGYuZGF0YToKKyAgICAgICAgICAgIHNlbGYuZGF0YS5jbG9zZSgpCiAKICAgICBkZWYgb3BlbihzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKHNlbGYubmFtZSwgInJiIikgYXMgZjoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2UvcmVjaXBldXRpbHMucHkgYi9wb2t5L21ldGEvbGliL29lL3JlY2lwZXV0aWxzLnB5CmluZGV4IDYzMGFlOTYuLjczMjQyMGUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2UvcmVjaXBldXRpbHMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS9yZWNpcGV1dGlscy5weQpAQCAtNDIxLDYgKzQyMSw4IEBACiAgICAgICAgICAgICAjIEVuc3VyZSB3ZSBoYW5kbGUgY2xhc3MtdGFyZ2V0IGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBvbmUgb2YgdGhlIHZhcmlhbnRzCiAgICAgICAgICAgICB2YXJpYW50cy5hcHBlbmQoJ3RhcmdldCcpCiAgICAgICAgICAgICBmb3IgdmFyaWFudCBpbiB2YXJpYW50czoKKyAgICAgICAgICAgICAgICBpZiB2YXJpYW50LnN0YXJ0c3dpdGgoImRldnVwc3RyZWFtIik6CisgICAgICAgICAgICAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ1NSQ1BWJywgJ2dpdCcpCiAgICAgICAgICAgICAgICAgbG9jYWxkYXRhLnNldFZhcignQ0xBU1NPVkVSUklERScsICdjbGFzcy0lcycgJSB2YXJpYW50KQogICAgICAgICAgICAgICAgIGZldGNoX3VybHMobG9jYWxkYXRhKQogCkBAIC0xMDU5LDcgKzEwNjEsNiBAQAogICAgIGRhdGFfY29weV9saXN0ID0gW10KICAgICBjb3B5X3ZhcnMgPSAoJ1NSQ19VUkknLAogICAgICAgICAgICAgICAgICAnUFYnLAotICAgICAgICAgICAgICAgICAnR0lURElSJywKICAgICAgICAgICAgICAgICAgJ0RMX0RJUicsCiAgICAgICAgICAgICAgICAgICdQTicsCiAgICAgICAgICAgICAgICAgICdDQUNIRScsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3Jvb3Rmcy5weSBiL3Bva3kvbWV0YS9saWIvb2Uvcm9vdGZzLnB5CmluZGV4IGM2MmZhNWYuLmNkNjVlNjIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2Uvcm9vdGZzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2Uvcm9vdGZzLnB5CkBAIC0xMjYsMTcgKzEyNiwxNiBAQAogICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHNlbGYuaW1hZ2Vfcm9vdGZzICsgb3MucGF0aC5kaXJuYW1lKGRpcikpCiAgICAgICAgICAgICBzaHV0aWwuY29weXRyZWUoc2VsZi5pbWFnZV9yb290ZnMgKyAnLW9yaWcnICsgZGlyLCBzZWxmLmltYWdlX3Jvb3RmcyArIGRpciwgc3ltbGlua3M9VHJ1ZSkKIAotICAgICAgICBjcGF0aCA9IG9lLmNhY2hlZHBhdGguQ2FjaGVkUGF0aCgpCiAgICAgICAgICMgQ29weSBmaWxlcyBsb2NhdGVkIGluIC91c3IvbGliL2RlYnVnIG9yIC91c3Ivc3JjL2RlYnVnCiAgICAgICAgIGZvciBkaXIgaW4gWyIvdXNyL2xpYi9kZWJ1ZyIsICIvdXNyL3NyYy9kZWJ1ZyJdOgogICAgICAgICAgICAgc3JjID0gc2VsZi5pbWFnZV9yb290ZnMgKyAnLW9yaWcnICsgZGlyCi0gICAgICAgICAgICBpZiBjcGF0aC5leGlzdHMoc3JjKToKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNyYyk6CiAgICAgICAgICAgICAgICAgZHN0ID0gc2VsZi5pbWFnZV9yb290ZnMgKyBkaXIKICAgICAgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGRzdCkpCiAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNyYywgZHN0KQogCiAgICAgICAgICMgQ29weSBmaWxlcyB3aXRoIHN1ZmZpeCAnLmRlYnVnJyBvciBsb2NhdGVkIGluICcuZGVidWcnIGRpci4KLSAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIGNwYXRoLndhbGsoc2VsZi5pbWFnZV9yb290ZnMgKyAnLW9yaWcnKToKKyAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoc2VsZi5pbWFnZV9yb290ZnMgKyAnLW9yaWcnKToKICAgICAgICAgICAgIHJlbGF0aXZlX2RpciA9IHJvb3RbbGVuKHNlbGYuaW1hZ2Vfcm9vdGZzICsgJy1vcmlnJyk6XQogICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CiAgICAgICAgICAgICAgICAgaWYgZi5lbmRzd2l0aCgnLmRlYnVnJykgb3IgJy8uZGVidWcnIGluIHJlbGF0aXZlX2RpcjoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHkKaW5kZXggYzU2NmNlNS4uZDI0ZTM3MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHkKQEAgLTEwMyw2ICsxMDMsOCBAQAogICAgICAgICBzZWxmLnVubG9ja2VkcmVjaXBlcyA9IChkYXRhLmdldFZhcigiU0lHR0VOX1VOTE9DS0VEX1JFQ0lQRVMiKSBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIikuc3BsaXQoKQogICAgICAgICBzZWxmLnVubG9ja2VkcmVjaXBlcyA9IHsgazogIiIgZm9yIGsgaW4gc2VsZi51bmxvY2tlZHJlY2lwZXMgfQorICAgICAgICBzZWxmLmJ1aWxkYXJjaCA9IGRhdGEuZ2V0VmFyKCdCVUlMRF9BUkNIJykKKyAgICAgICAgc2VsZi5faW50ZXJuYWwgPSBGYWxzZQogICAgICAgICBwYXNzCiAKICAgICBkZWYgdGFza3NfcmVzb2x2ZWQoc2VsZiwgdmlydG1hcCwgdmlydHBubWFwLCBkYXRhQ2FjaGUpOgpAQCAtMTQwLDggKzE0MiwyNyBAQAogICAgICAgICBzZWxmLmR1bXBfbG9ja2Vkc2lncyhzaWdmaWxlKQogICAgICAgICByZXR1cm4gc3VwZXIoYmIuc2lnZ2VuLlNpZ25hdHVyZUdlbmVyYXRvckJhc2ljSGFzaCwgc2VsZikuZHVtcF9zaWdzKGRhdGFDYWNoZSwgb3B0aW9ucykKIAorICAgIGRlZiBwcmVwX3Rhc2toYXNoKHNlbGYsIHRpZCwgZGVwcywgZGF0YUNhY2hlKToKKyAgICAgICAgc3VwZXIoKS5wcmVwX3Rhc2toYXNoKHRpZCwgZGVwcywgZGF0YUNhY2hlKQorICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJleHRyYW1ldGhvZCIpOgorICAgICAgICAgICAgKF8sIF8sIF8sIGZuKSA9IGJiLnJ1bnF1ZXVlLnNwbGl0X3RpZF9tY2ZuKHRpZCkKKyAgICAgICAgICAgIGluaGVyaXRzID0gIiAiLmpvaW4oZGF0YUNhY2hlLmluaGVyaXRzW2ZuXSkgICAgCisgICAgICAgICAgICBpZiBpbmhlcml0cy5maW5kKCIvbmF0aXZlLmJiY2xhc3MiKSAhPSAtMSBvciBpbmhlcml0cy5maW5kKCIvY3Jvc3MuYmJjbGFzcyIpICE9IC0xOgorICAgICAgICAgICAgICAgIHNlbGYuZXh0cmFtZXRob2RbdGlkXSA9ICI6IiArIHNlbGYuYnVpbGRhcmNoCisKICAgICBkZWYgZ2V0X3Rhc2toYXNoKHNlbGYsIHRpZCwgZGVwcywgZGF0YUNhY2hlKToKLSAgICAgICAgaCA9IHN1cGVyKGJiLnNpZ2dlbi5TaWduYXR1cmVHZW5lcmF0b3JCYXNpY0hhc2gsIHNlbGYpLmdldF90YXNraGFzaCh0aWQsIGRlcHMsIGRhdGFDYWNoZSkKKyAgICAgICAgaWYgdGlkIGluIHNlbGYubG9ja2VkaGFzaGVzOgorICAgICAgICAgICAgaWYgc2VsZi5sb2NrZWRoYXNoZXNbdGlkXToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5sb2NrZWRoYXNoZXNbdGlkXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5nZXRfdGFza2hhc2godGlkLCBkZXBzLCBkYXRhQ2FjaGUpCisKKyAgICAgICAgIyBnZXRfdGFza2hhc2ggd2lsbCBjYWxsIGdldF91bmloYXNoIGludGVybmFsbHkgaW4gdGhlIHBhcmVudCBjbGFzcywgd2UgCisgICAgICAgICMgbmVlZCB0byBkaXNhYmxlIG91ciBmaWx0ZXIgb2YgaXQgd2hpbHN0IHRoaXMgcnVucyBlbHNlCisgICAgICAgICMgaW5jb3JyZWN0IGhhc2hlcyBjYW4gYmUgY2FsY3VsYXRlZC4KKyAgICAgICAgc2VsZi5faW50ZXJuYWwgPSBUcnVlCisgICAgICAgIGggPSBzdXBlcigpLmdldF90YXNraGFzaCh0aWQsIGRlcHMsIGRhdGFDYWNoZSkKKyAgICAgICAgc2VsZi5faW50ZXJuYWwgPSBGYWxzZQogCiAgICAgICAgIChtYywgXywgdGFzaywgZm4pID0gYmIucnVucXVldWUuc3BsaXRfdGlkX21jZm4odGlkKQogCkBAIC0xNjksOCArMTkwLDkgQEAKICAgICAgICAgICAgICAgICBoX2xvY2tlZCA9IHNlbGYubG9ja2Vkc2lnc1tyZWNpcGVuYW1lXVt0YXNrXVswXQogICAgICAgICAgICAgICAgIHZhciA9IHNlbGYubG9ja2Vkc2lnc1tyZWNpcGVuYW1lXVt0YXNrXVsxXQogICAgICAgICAgICAgICAgIHNlbGYubG9ja2VkaGFzaGVzW3RpZF0gPSBoX2xvY2tlZAotICAgICAgICAgICAgICAgIHVuaWhhc2ggPSBzdXBlcigpLmdldF91bmloYXNoKHRpZCkKLSAgICAgICAgICAgICAgICBzZWxmLnRhc2toYXNoW3RpZF0gPSBoX2xvY2tlZAorICAgICAgICAgICAgICAgIHNlbGYuX2ludGVybmFsID0gVHJ1ZQorICAgICAgICAgICAgICAgIHVuaWhhc2ggPSBzZWxmLmdldF91bmloYXNoKHRpZCkKKyAgICAgICAgICAgICAgICBzZWxmLl9pbnRlcm5hbCA9IEZhbHNlCiAgICAgICAgICAgICAgICAgI2JiLndhcm4oIlVzaW5nICVzICVzICVzIiAlIChyZWNpcGVuYW1lLCB0YXNrLCBoKSkKIAogICAgICAgICAgICAgICAgIGlmIGggIT0gaF9sb2NrZWQgYW5kIGhfbG9ja2VkICE9IHVuaWhhc2g6CkBAIC0xNzgsMTcgKzIwMCwyNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAocmVjaXBlbmFtZSwgdGFzaywgaCwgaF9sb2NrZWQsIHZhcikpCiAKICAgICAgICAgICAgICAgICByZXR1cm4gaF9sb2NrZWQKKworICAgICAgICBzZWxmLmxvY2tlZGhhc2hlc1t0aWRdID0gRmFsc2UKICAgICAgICAgI2JiLndhcm4oIiVzICVzICVzIiAlIChyZWNpcGVuYW1lLCB0YXNrLCBoKSkKICAgICAgICAgcmV0dXJuIGgKIAorICAgIGRlZiBnZXRfc3RhbXBmaWxlX2hhc2goc2VsZiwgdGlkKToKKyAgICAgICAgaWYgdGlkIGluIHNlbGYubG9ja2VkaGFzaGVzIGFuZCBzZWxmLmxvY2tlZGhhc2hlc1t0aWRdOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubG9ja2VkaGFzaGVzW3RpZF0KKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuZ2V0X3N0YW1wZmlsZV9oYXNoKHRpZCkKKwogICAgIGRlZiBnZXRfdW5paGFzaChzZWxmLCB0aWQpOgotICAgICAgICBpZiB0aWQgaW4gc2VsZi5sb2NrZWRoYXNoZXM6CisgICAgICAgIGlmIHRpZCBpbiBzZWxmLmxvY2tlZGhhc2hlcyBhbmQgc2VsZi5sb2NrZWRoYXNoZXNbdGlkXSBhbmQgbm90IHNlbGYuX2ludGVybmFsOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYubG9ja2VkaGFzaGVzW3RpZF0KICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZ2V0X3VuaWhhc2godGlkKQogCiAgICAgZGVmIGR1bXBfc2lndGFzayhzZWxmLCBmbiwgdGFzaywgc3RhbXBiYXNlLCBydW50aW1lKToKICAgICAgICAgdGlkID0gZm4gKyAiOiIgKyB0YXNrCi0gICAgICAgIGlmIHRpZCBpbiBzZWxmLmxvY2tlZGhhc2hlczoKKyAgICAgICAgaWYgdGlkIGluIHNlbGYubG9ja2VkaGFzaGVzIGFuZCBzZWxmLmxvY2tlZGhhc2hlc1t0aWRdOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHN1cGVyKGJiLnNpZ2dlbi5TaWduYXR1cmVHZW5lcmF0b3JCYXNpY0hhc2gsIHNlbGYpLmR1bXBfc2lndGFzayhmbiwgdGFzaywgc3RhbXBiYXNlLCBydW50aW1lKQogCkBAIC00NDgsMTEgKzQ3NywxNCBAQAogICAgIGggPSBoYXNobGliLnNoYTI1NigpCiAgICAgcHJldl9kaXIgPSBvcy5nZXRjd2QoKQogICAgIGluY2x1ZGVfb3duZXJzID0gb3MuZW52aXJvbi5nZXQoJ1BTRVVET19ESVNBQkxFRCcpID09ICcwJworICAgIGV4dHJhX2NvbnRlbnQgPSBkLmdldFZhcignSEFTSEVRVUlWX0hBU0hfVkVSU0lPTicpCiAKICAgICB0cnk6CiAgICAgICAgIG9zLmNoZGlyKHBhdGgpCiAKICAgICAgICAgdXBkYXRlX2hhc2goIk9FT3V0aGFzaEJhc2ljXG4iKQorICAgICAgICBpZiBleHRyYV9jb250ZW50OgorICAgICAgICAgICAgdXBkYXRlX2hhc2goZXh0cmFfY29udGVudCArICJcbiIpCiAKICAgICAgICAgIyBJdCBpcyBvbmx5IGN1cnJlbnRseSB1c2VmdWwgdG8gZ2V0IGVxdWl2YWxlbnQgaGFzaGVzIGZvciB0aGluZ3MgdGhhdAogICAgICAgICAjIGNhbiBiZSByZXN0b3JlZCBmcm9tIHNzdGF0ZS4gU2luY2UgdGhlIHNzdGF0ZSBvYmplY3QgaXMgbmFtZWQgdXNpbmcKQEAgLTUxMiw4ICs1NDQsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgYWRkX3Blcm0oc3RhdC5TX0lYT1RILCAneCcpCiAKICAgICAgICAgICAgICAgICBpZiBpbmNsdWRlX293bmVyczoKLSAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2hhc2goIiAlMTBzIiAlIHB3ZC5nZXRwd3VpZChzLnN0X3VpZCkucHdfbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2hhc2goIiAlMTBzIiAlIGdycC5nZXRncmdpZChzLnN0X2dpZCkuZ3JfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2hhc2goIiAlMTBzIiAlIHB3ZC5nZXRwd3VpZChzLnN0X3VpZCkucHdfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9oYXNoKCIgJTEwcyIgJSBncnAuZ2V0Z3JnaWQocy5zdF9naWQpLmdyX25hbWUpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLndhcm4oIktleUVycm9yIGluICVzIiAlIHBhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogCiAgICAgICAgICAgICAgICAgdXBkYXRlX2hhc2goIiAiKQogICAgICAgICAgICAgICAgIGlmIHN0YXQuU19JU0JMSyhzLnN0X21vZGUpIG9yIHN0YXQuU19JU0NIUihzLnN0X21vZGUpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS91dGlscy5weSBiL3Bva3kvbWV0YS9saWIvb2UvdXRpbHMucHkKaW5kZXggNjUyYjJiZS4uMTNmNDI3MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS91dGlscy5weQorKysgYi9wb2t5L21ldGEvbGliL29lL3V0aWxzLnB5CkBAIC0xNjksNyArMTY5LDcgQEAKICAgICAiIiIKICAgICByZXR1cm4gYmIudXRpbHMuY29udGFpbnNfYW55KCJESVNUUk9fRkVBVFVSRVMiLCBmZWF0dXJlcywgdHJ1ZXZhbHVlLCBmYWxzZXZhbHVlLCBkKQogCi1kZWYgcGFyYWxsZWxfbWFrZShkKToKK2RlZiBwYXJhbGxlbF9tYWtlKGQsIG1ha2VpbnN0PUZhbHNlKToKICAgICAiIiIKICAgICBSZXR1cm4gdGhlIGludGVnZXIgdmFsdWUgZm9yIHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgdGhyZWFkcyB0byB1c2Ugd2hlbgogICAgIGJ1aWxkaW5nLCBzY3JhcGVkIG91dCBvZiBQQVJBTExFTF9NQUtFLiBJZiBubyBwYXJhbGxlbGl6YXRpb24gb3B0aW9uIGlzCkBAIC0xNzcsNyArMTc3LDEwIEBACiAKICAgICBlLmcuIGlmIFBBUkFMTEVMX01BS0UgPSAiLWogMTAiLCB0aGlzIHdpbGwgcmV0dXJuIDEwIGFzIGFuIGludGVnZXIuCiAgICAgIiIiCi0gICAgcG0gPSAoZC5nZXRWYXIoJ1BBUkFMTEVMX01BS0UnKSBvciAnJykuc3BsaXQoKQorICAgIGlmIG1ha2VpbnN0OgorICAgICAgICBwbSA9IChkLmdldFZhcignUEFSQUxMRUxfTUFLRUlOU1QnKSBvciAnJykuc3BsaXQoKQorICAgIGVsc2U6CisgICAgICAgIHBtID0gKGQuZ2V0VmFyKCdQQVJBTExFTF9NQUtFJykgb3IgJycpLnNwbGl0KCkKICAgICAjIGxvb2sgZm9yICctaicgYW5kIHRocm93IG90aGVyIG9wdGlvbnMgKGUuZy4gJy1sJykgYXdheQogICAgIHdoaWxlIHBtOgogICAgICAgICBvcHQgPSBwbS5wb3AoMCkKQEAgLTE5Miw3ICsxOTUsNyBAQAogCiAgICAgcmV0dXJuIE5vbmUKIAotZGVmIHBhcmFsbGVsX21ha2VfYXJndW1lbnQoZCwgZm10LCBsaW1pdD1Ob25lKToKK2RlZiBwYXJhbGxlbF9tYWtlX2FyZ3VtZW50KGQsIGZtdCwgbGltaXQ9Tm9uZSwgbWFrZWluc3Q9RmFsc2UpOgogICAgICIiIgogICAgIEhlbHBlciB1dGlsaXR5IHRvIGNvbnN0cnVjdCBhIHBhcmFsbGVsIG1ha2UgYXJndW1lbnQgZnJvbSB0aGUgbnVtYmVyIG9mCiAgICAgcGFyYWxsZWwgdGhyZWFkcyBzcGVjaWZpZWQgaW4gUEFSQUxMRUxfTUFLRS4KQEAgLTIwNSw3ICsyMDgsNyBAQAogICAgIGUuZy4gaWYgUEFSQUxMRUxfTUFLRSA9ICItaiAxMCIsIHBhcmFsbGVsX21ha2VfYXJndW1lbnQoZCwgIi1uICVkIikgd2lsbCByZXR1cm4KICAgICAiLW4gMTAiCiAgICAgIiIiCi0gICAgdiA9IHBhcmFsbGVsX21ha2UoZCkKKyAgICB2ID0gcGFyYWxsZWxfbWFrZShkLCBtYWtlaW5zdCkKICAgICBpZiB2OgogICAgICAgICBpZiBsaW1pdDoKICAgICAgICAgICAgIHYgPSBtaW4obGltaXQsIHYpCkBAIC0yNDUsOSArMjQ4LDEwIEBACiAgICAgdHJpbW1lZCA9ICIuIi5qb2luKHBhcnRzWzpudW1fcGFydHNdKQogICAgIHJldHVybiB0cmltbWVkCiAKLWRlZiBjcHVfY291bnQoKToKK2RlZiBjcHVfY291bnQoYXRfbGVhc3Q9MSk6CiAgICAgaW1wb3J0IG11bHRpcHJvY2Vzc2luZwotICAgIHJldHVybiBtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50KCkKKyAgICBjcHVzID0gbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCgpCisgICAgcmV0dXJuIG1heChjcHVzLCBhdF9sZWFzdCkKIAogZGVmIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhkLCBjbWRzKToKICAgICBpZiBjbWRzIGlzIE5vbmU6CkBAIC0zNjksNiArMzczLDM3IEBACiAKICAgICByZXR1cm4gb3V0cHV0X3N0cgogCisKKyMgSGVscGVyIGZ1bmN0aW9uIHRvIGdldCB0aGUgaG9zdCBjb21waWxlciB2ZXJzaW9uCisjIERvIG5vdCBhc3N1bWUgdGhlIGNvbXBpbGVyIGlzIGdjYworZGVmIGdldF9ob3N0X2NvbXBpbGVyX3ZlcnNpb24oZCwgdGFza2NvbnRleHRvbmx5PUZhbHNlKToKKyAgICBpbXBvcnQgcmUsIHN1YnByb2Nlc3MKKworICAgIGlmIHRhc2tjb250ZXh0b25seSBhbmQgZC5nZXRWYXIoJ0JCX1dPUktFUkNPTlRFWFQnKSAhPSAnMSc6CisgICAgICAgIHJldHVybgorCisgICAgY29tcGlsZXIgPSBkLmdldFZhcigiQlVJTERfQ0MiKQorICAgICMgR2V0IHJpZCBvZiBjY2FjaGUgc2luY2UgaXQgaXMgbm90IHByZXNlbnQgd2hlbiBwYXJzaW5nLgorICAgIGlmIGNvbXBpbGVyLnN0YXJ0c3dpdGgoJ2NjYWNoZSAnKToKKyAgICAgICAgY29tcGlsZXIgPSBjb21waWxlcls3Ol0KKyAgICB0cnk6CisgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgICMgZGF0YXN0b3JlIFBBVEggZG9lcyBub3QgY29udGFpbiBzZXNzaW9uIFBBVEggYXMgc2V0IGJ5IGVudmlyb25tZW50LXNldHVwLS4uLgorICAgICAgICAjIHRoaXMgYnJlYWtzIHRoZSBpbnN0YWxsLWJ1aWxkdG9vbHMgdXNlLWNhc2UKKyAgICAgICAgIyBlbnZbIlBBVEgiXSA9IGQuZ2V0VmFyKCJQQVRIIikKKyAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoIiVzIC0tdmVyc2lvbiIgJSBjb21waWxlciwgXAorICAgICAgICAgICAgICAgICAgICBzaGVsbD1UcnVlLCBlbnY9ZW52LCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLmRlY29kZSgidXRmLTgiKQorICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgorICAgICAgICBiYi5mYXRhbCgiRXJyb3IgcnVubmluZyAlcyAtLXZlcnNpb246ICVzIiAlIChjb21waWxlciwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKKworICAgIG1hdGNoID0gcmUubWF0Y2gociIuKiAoXGQrXC5cZCspXC5cZCsuKiIsIG91dHB1dC5zcGxpdCgnXG4nKVswXSkKKyAgICBpZiBub3QgbWF0Y2g6CisgICAgICAgIGJiLmZhdGFsKCJDYW4ndCBnZXQgY29tcGlsZXIgdmVyc2lvbiBmcm9tICVzIC0tdmVyc2lvbiBvdXRwdXQiICUgY29tcGlsZXIpCisKKyAgICB2ZXJzaW9uID0gbWF0Y2guZ3JvdXAoMSkKKyAgICByZXR1cm4gY29tcGlsZXIsIHZlcnNpb24KKworCiBkZWYgaG9zdF9nY2NfdmVyc2lvbihkLCB0YXNrY29udGV4dG9ubHk9RmFsc2UpOgogICAgIGltcG9ydCByZSwgc3VicHJvY2VzcwogCkBAIC0zODcsNyArNDIyLDcgQEAKICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgYmIuZmF0YWwoIkVycm9yIHJ1bm5pbmcgJXMgLS12ZXJzaW9uOiAlcyIgJSAoY29tcGlsZXIsIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKSkpCiAKLSAgICBtYXRjaCA9IHJlLm1hdGNoKHIiLiogKFxkXC5cZClcLlxkLioiLCBvdXRwdXQuc3BsaXQoJ1xuJylbMF0pCisgICAgbWF0Y2ggPSByZS5tYXRjaChyIi4qIChcZCtcLlxkKylcLlxkKy4qIiwgb3V0cHV0LnNwbGl0KCdcbicpWzBdKQogICAgIGlmIG5vdCBtYXRjaDoKICAgICAgICAgYmIuZmF0YWwoIkNhbid0IGdldCBjb21waWxlciB2ZXJzaW9uIGZyb20gJXMgLS12ZXJzaW9uIG91dHB1dCIgJSBjb21waWxlcikKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi9iYXNlLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi9iYXNlLnB5CmluZGV4IDNiMmZlZDUuLjVmMTgwNWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvYmFzZS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL2Jhc2UucHkKQEAgLTQ2Miw3ICs0NjIsNyBAQAogICAgIGRlZiBybV90bXAoc2VsZik6CiAgICAgICAgICIiIkNsZWFudXAgdGVtcG9yYXJ5L2ludGVybWVkaWF0ZSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMiIiIKICAgICAgICAgbG9nLmRlYnVnKCJSZW1vdmluZyB0ZW1wb3JhcnkgYW5kIGNhY2hlIGZpbGVzIikKLSAgICAgICAgZm9yIG5hbWUgaW4gWydiaXRiYWtlLmxvY2snLCAnY29uZi9zYW5pdHlfaW5mbycsCisgICAgICAgIGZvciBuYW1lIGluIFsnYml0YmFrZS5sb2NrJywgJ2NhY2hlL3Nhbml0eV9pbmZvJywKICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYmJfdmFyc1snVE1QRElSJ11dOgogICAgICAgICAgICAgb2UucGF0aC5yZW1vdmUobmFtZSwgcmVjdXJzZT1UcnVlKQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvY29udHJvbGxlcnMvbWFzdGVyaW1hZ2UucHkgYi9wb2t5L21ldGEvbGliL29lcWEvY29udHJvbGxlcnMvbWFzdGVyaW1hZ2UucHkKaW5kZXggMDQzNWRmYS4uMGJmNTkxNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvbnRyb2xsZXJzL21hc3RlcmltYWdlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb250cm9sbGVycy9tYXN0ZXJpbWFnZS5weQpAQCAtOTcsNyArOTcsNyBAQAogICAgICAgICBpZiBzZWxmLnBvd2VyY29udHJvbF9jbWQ6CiAgICAgICAgICAgICBjbWQgPSAiJXMgJXMiICUgKHNlbGYucG93ZXJjb250cm9sX2NtZCwgbXNnKQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNvbW1hbmRzLnJ1bkNtZChjbWQsIGFzc2VydF9lcnJvcj1GYWxzZSwgcHJlZXhlY19mbj1vcy5zZXRzaWQsIGVudj1zZWxmLm9yaWdlbnYpCisgICAgICAgICAgICAgICAgY29tbWFuZHMucnVuQ21kKGNtZCwgYXNzZXJ0X2Vycm9yPUZhbHNlLCBzdGFydF9uZXdfc2Vzc2lvbj1UcnVlLCBlbnY9c2VsZi5vcmlnZW52KQogICAgICAgICAgICAgZXhjZXB0IENvbW1hbmRFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgIGJiLmZhdGFsKHN0cihlKSkKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvY29udGV4dC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2NvbnRleHQucHkKaW5kZXggMTRmYzZhNS4uNDcwNWQ2MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvY29udGV4dC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS9jb250ZXh0LnB5CkBAIC03Miw2ICs3Miw5IEBACiAgICAgICAgICAgICAgICAgbW9kdWxlc19yZXF1aXJlZCwgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuc3VpdGVzID0gc2VsZi5sb2FkZXIuZGlzY292ZXIoKQogCisgICAgZGVmIHByZXBhcmVTdWl0ZShzZWxmLCBzdWl0ZXMsIHByb2Nlc3Nlcyk6CisgICAgICAgIHJldHVybiBzdWl0ZXMKKwogICAgIGRlZiBydW5UZXN0cyhzZWxmLCBwcm9jZXNzZXM9Tm9uZSwgc2tpcHM9W10pOgogICAgICAgICBzZWxmLnJ1bm5lciA9IHNlbGYucnVubmVyQ2xhc3Moc2VsZiwgZGVzY3JpcHRpb25zPUZhbHNlLCB2ZXJib3NpdHk9MikKIApAQCAtNzksMTQgKzgyLDkgQEAKICAgICAgICAgc2VsZi5za2lwVGVzdHMoc2tpcHMpCiAKICAgICAgICAgc2VsZi5fcnVuX3N0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQotICAgICAgICBpZiBwcm9jZXNzZXM6Ci0gICAgICAgICAgICBmcm9tIG9lcWEuY29yZS51dGlscy5jb25jdXJyZW5jeXRlc3QgaW1wb3J0IENvbmN1cnJlbnRUZXN0U3VpdGUKLQotICAgICAgICAgICAgY29uY3VycmVudF9zdWl0ZSA9IENvbmN1cnJlbnRUZXN0U3VpdGUoc2VsZi5zdWl0ZXMsIHByb2Nlc3NlcykKLSAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYucnVubmVyLnJ1bihjb25jdXJyZW50X3N1aXRlKQotICAgICAgICBlbHNlOgorICAgICAgICBpZiBub3QgcHJvY2Vzc2VzOgogICAgICAgICAgICAgc2VsZi5ydW5uZXIuYnVmZmVyID0gVHJ1ZQotICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5ydW5uZXIucnVuKHNlbGYuc3VpdGVzKQorICAgICAgICByZXN1bHQgPSBzZWxmLnJ1bm5lci5ydW4oc2VsZi5wcmVwYXJlU3VpdGUoc2VsZi5zdWl0ZXMsIHByb2Nlc3NlcykpCiAgICAgICAgIHNlbGYuX3J1bl9lbmRfdGltZSA9IHRpbWUudGltZSgpCiAKICAgICAgICAgcmV0dXJuIHJlc3VsdApAQCAtMTAyLDIyICsxMDAsMjcgQEAKICAgICBuYW1lID0gJ2NvcmUnCiAgICAgaGVscCA9ICdjb3JlIHRlc3QgY29tcG9uZW50IGV4YW1wbGUnCiAgICAgZGVzY3JpcHRpb24gPSAnZXhlY3V0ZXMgY29yZSB0ZXN0IHN1aXRlIGV4YW1wbGUnCisgICAgZGF0ZXRpbWUgPSB0aW1lLnN0cmZ0aW1lKCIlWSVtJWQlSCVNJVMiKQogCiAgICAgZGVmYXVsdF9jYXNlcyA9IFtvcy5wYXRoLmpvaW4ob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpLAogICAgICAgICAgICAgJ2Nhc2VzL2V4YW1wbGUnKV0KICAgICBkZWZhdWx0X3Rlc3RfZGF0YSA9IG9zLnBhdGguam9pbihkZWZhdWx0X2Nhc2VzWzBdLCAnZGF0YS5qc29uJykKICAgICBkZWZhdWx0X3Rlc3RzID0gTm9uZQorICAgIGRlZmF1bHRfanNvbl9yZXN1bHRfZGlyID0gTm9uZQogCiAgICAgZGVmIHJlZ2lzdGVyX2NvbW1hbmRzKHNlbGYsIGxvZ2dlciwgc3VicGFyc2Vycyk6CiAgICAgICAgIHNlbGYucGFyc2VyID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKHNlbGYubmFtZSwgaGVscD1zZWxmLmhlbHAsCiAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249c2VsZi5kZXNjcmlwdGlvbiwgZ3JvdXA9J2NvbXBvbmVudHMnKQogCi0gICAgICAgIHNlbGYuZGVmYXVsdF9vdXRwdXRfbG9nID0gJyVzLXJlc3VsdHMtJXMubG9nJyAlIChzZWxmLm5hbWUsCi0gICAgICAgICAgICAgICAgdGltZS5zdHJmdGltZSgiJVklbSVkJUglTSVTIikpCisgICAgICAgIHNlbGYuZGVmYXVsdF9vdXRwdXRfbG9nID0gJyVzLXJlc3VsdHMtJXMubG9nJyAlIChzZWxmLm5hbWUsIHNlbGYuZGF0ZXRpbWUpCiAgICAgICAgIHNlbGYucGFyc2VyLmFkZF9hcmd1bWVudCgnLS1vdXRwdXQtbG9nJywgYWN0aW9uPSdzdG9yZScsCiAgICAgICAgICAgICAgICAgZGVmYXVsdD1zZWxmLmRlZmF1bHRfb3V0cHV0X2xvZywKICAgICAgICAgICAgICAgICBoZWxwPSJyZXN1bHRzIG91dHB1dCBsb2csIGRlZmF1bHQ6ICVzIiAlIHNlbGYuZGVmYXVsdF9vdXRwdXRfbG9nKQogCisgICAgICAgIHNlbGYucGFyc2VyLmFkZF9hcmd1bWVudCgnLS1qc29uLXJlc3VsdC1kaXInLCBhY3Rpb249J3N0b3JlJywKKyAgICAgICAgICAgICAgICBkZWZhdWx0PXNlbGYuZGVmYXVsdF9qc29uX3Jlc3VsdF9kaXIsCisgICAgICAgICAgICAgICAgaGVscD0ianNvbiByZXN1bHQgb3V0cHV0IGRpciwgZGVmYXVsdDogJXMiICUgc2VsZi5kZWZhdWx0X2pzb25fcmVzdWx0X2RpcikKKwogICAgICAgICBncm91cCA9IHNlbGYucGFyc2VyLmFkZF9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXAoKQogICAgICAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tcnVuLXRlc3RzJywgYWN0aW9uPSdzdG9yZScsIG5hcmdzPScrJywKICAgICAgICAgICAgICAgICBkZWZhdWx0PXNlbGYuZGVmYXVsdF90ZXN0cywKQEAgLTE4MCw2ICsxODMsMjIgQEAKIAogICAgICAgICBzZWxmLm1vZHVsZV9wYXRocyA9IGFyZ3MuQ0FTRVNfUEFUSFMKIAorICAgIGRlZiBfZ2V0X2pzb25fcmVzdWx0X2RpcihzZWxmLCBhcmdzKToKKyAgICAgICAgcmV0dXJuIGFyZ3MuanNvbl9yZXN1bHRfZGlyCisKKyAgICBkZWYgX2dldF9jb25maWd1cmF0aW9uKHNlbGYpOgorICAgICAgICB0ZCA9IHNlbGYudGNfa3dhcmdzWydpbml0J11bJ3RkJ10KKyAgICAgICAgY29uZmlndXJhdGlvbiA9IHsnVEVTVF9UWVBFJzogc2VsZi5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgJ01BQ0hJTkUnOiB0ZC5nZXQoIk1BQ0hJTkUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdESVNUUk8nOiB0ZC5nZXQoIkRJU1RSTyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ0lNQUdFX0JBU0VOQU1FJzogdGQuZ2V0KCJJTUFHRV9CQVNFTkFNRSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ0RBVEVUSU1FJzogdGQuZ2V0KCJEQVRFVElNRSIpfQorICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbgorCisgICAgZGVmIF9nZXRfcmVzdWx0X2lkKHNlbGYsIGNvbmZpZ3VyYXRpb24pOgorICAgICAgICByZXR1cm4gJyVzXyVzXyVzXyVzJyAlIChjb25maWd1cmF0aW9uWydURVNUX1RZUEUnXSwgY29uZmlndXJhdGlvblsnSU1BR0VfQkFTRU5BTUUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvblsnTUFDSElORSddLCBzZWxmLmRhdGV0aW1lKQorCiAgICAgZGVmIF9wcmVfcnVuKHNlbGYpOgogICAgICAgICBwYXNzCiAKQEAgLTE5OCw3ICsyMTcsMTYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX3ByZV9ydW4oKQogICAgICAgICAgICAgcmMgPSBzZWxmLnRjLnJ1blRlc3RzKCoqc2VsZi50Y19rd2FyZ3NbJ3J1biddKQotICAgICAgICAgICAgcmMubG9nRGV0YWlscygpCisKKyAgICAgICAgICAgIGpzb25fcmVzdWx0X2RpciA9IHNlbGYuX2dldF9qc29uX3Jlc3VsdF9kaXIoYXJncykKKyAgICAgICAgICAgIGlmIGpzb25fcmVzdWx0X2RpcjoKKyAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi5fZ2V0X2NvbmZpZ3VyYXRpb24oKQorICAgICAgICAgICAgICAgIHJjLmxvZ0RldGFpbHMoanNvbl9yZXN1bHRfZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2dldF9yZXN1bHRfaWQoY29uZmlndXJhdGlvbikpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJjLmxvZ0RldGFpbHMoKQorCiAgICAgICAgICAgICByYy5sb2dTdW1tYXJ5KHNlbGYubmFtZSkKIAogICAgICAgICBvdXRwdXRfbGluayA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoYXJncy5vdXRwdXRfbG9nKSwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3J1bm5lci5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3J1bm5lci5weQppbmRleCBmNjU2ZTFhLi4xMjg0Mjk1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS9ydW5uZXIucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvcnVubmVyLnB5CkBAIC0zMTksMTAgKzMxOSwxNyBAQAogICAgICAgICAgICAgdGhlX2ZpbGUud3JpdGUoZmlsZV9jb250ZW50KQogCiAgICAgZGVmIGR1bXBfdGVzdHJlc3VsdF9maWxlKHNlbGYsIHdyaXRlX2RpciwgY29uZmlndXJhdGlvbiwgcmVzdWx0X2lkLCB0ZXN0X3Jlc3VsdCk6Ci0gICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcih3cml0ZV9kaXIpCi0gICAgICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUob3MucGF0aC5qb2luKHdyaXRlX2RpciwgJ2pzb250ZXN0cmVzdWx0LmxvY2snKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IGJiCisgICAgICAgICAgICBoYXNfYmIgPSBUcnVlCisgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIod3JpdGVfZGlyKQorICAgICAgICAgICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZShvcy5wYXRoLmpvaW4od3JpdGVfZGlyLCAnanNvbnRlc3RyZXN1bHQubG9jaycpKQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBoYXNfYmIgPSBGYWxzZQorICAgICAgICAgICAgb3MubWFrZWRpcnMod3JpdGVfZGlyLCBleGlzdF9vaz1UcnVlKQogICAgICAgICB0ZXN0X3Jlc3VsdHMgPSBzZWxmLl9nZXRfZXhpc3RpbmdfdGVzdHJlc3VsdHNfaWZfYXZhaWxhYmxlKHdyaXRlX2RpcikKICAgICAgICAgdGVzdF9yZXN1bHRzW3Jlc3VsdF9pZF0gPSB7J2NvbmZpZ3VyYXRpb24nOiBjb25maWd1cmF0aW9uLCAncmVzdWx0JzogdGVzdF9yZXN1bHR9CiAgICAgICAgIGpzb25fdGVzdHJlc3VsdHMgPSBqc29uLmR1bXBzKHRlc3RfcmVzdWx0cywgc29ydF9rZXlzPVRydWUsIGluZGVudD00KQogICAgICAgICBzZWxmLl93cml0ZV9maWxlKHdyaXRlX2Rpciwgc2VsZi50ZXN0cmVzdWx0X2ZpbGVuYW1lLCBqc29uX3Rlc3RyZXN1bHRzKQotICAgICAgICBiYi51dGlscy51bmxvY2tmaWxlKGxmKQorICAgICAgICBpZiBoYXNfYmI6CisgICAgICAgICAgICBiYi51dGlscy51bmxvY2tmaWxlKGxmKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3FlbXUucHkgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvcWVtdS5weQppbmRleCAwODFjNjI3Li4yOTVlODc2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvcWVtdS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvcWVtdS5weQpAQCAtOCw2ICs4LDcgQEAKIGltcG9ydCBzeXMKIGltcG9ydCBzaWduYWwKIGltcG9ydCB0aW1lCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAogCiBmcm9tIC5zc2ggaW1wb3J0IE9FU1NIVGFyZ2V0CiBmcm9tIG9lcWEudXRpbHMucWVtdXJ1bm5lciBpbXBvcnQgUWVtdVJ1bm5lcgpAQCAtMTgsMjMgKzE5LDI5IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgc2VydmVyX2lwLCB0aW1lb3V0PTMwMCwgdXNlcj0ncm9vdCcsCiAgICAgICAgICAgICBwb3J0PU5vbmUsIG1hY2hpbmU9JycsIHJvb3Rmcz0nJywga2VybmVsPScnLCBrdm09RmFsc2UsIHNsaXJwPUZhbHNlLAogICAgICAgICAgICAgZHVtcF9kaXI9JycsIGR1bXBfaG9zdF9jbWRzPScnLCBkaXNwbGF5PScnLCBib290bG9nPScnLAotICAgICAgICAgICAgdG1wZGlyPScnLCBkaXJfaW1hZ2U9JycsIGJvb3R0aW1lPTYwLCAqKmt3YXJncyk6CisgICAgICAgICAgICB0bXBkaXI9JycsIGRpcl9pbWFnZT0nJywgYm9vdHRpbWU9NjAsIHNlcmlhbF9wb3J0cz0yLAorICAgICAgICAgICAgYm9vdF9wYXR0ZXJucyA9IGRlZmF1bHRkaWN0KHN0ciksIG92bWY9RmFsc2UsICoqa3dhcmdzKToKIAogICAgICAgICBzdXBlcihPRVFlbXVUYXJnZXQsIHNlbGYpLl9faW5pdF9fKGxvZ2dlciwgTm9uZSwgc2VydmVyX2lwLCB0aW1lb3V0LAogICAgICAgICAgICAgICAgIHVzZXIsIHBvcnQpCiAKICAgICAgICAgc2VsZi5zZXJ2ZXJfaXAgPSBzZXJ2ZXJfaXAKKyAgICAgICAgc2VsZi5zZXJ2ZXJfcG9ydCA9IDAKICAgICAgICAgc2VsZi5tYWNoaW5lID0gbWFjaGluZQogICAgICAgICBzZWxmLnJvb3RmcyA9IHJvb3RmcwogICAgICAgICBzZWxmLmtlcm5lbCA9IGtlcm5lbAogICAgICAgICBzZWxmLmt2bSA9IGt2bQorICAgICAgICBzZWxmLm92bWYgPSBvdm1mCiAgICAgICAgIHNlbGYudXNlX3NsaXJwID0gc2xpcnAKKyAgICAgICAgc2VsZi5ib290X3BhdHRlcm5zID0gYm9vdF9wYXR0ZXJucwogCiAgICAgICAgIHNlbGYucnVubmVyID0gUWVtdVJ1bm5lcihtYWNoaW5lPW1hY2hpbmUsIHJvb3Rmcz1yb290ZnMsIHRtcGRpcj10bXBkaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBsb3lfZGlyX2ltYWdlPWRpcl9pbWFnZSwgZGlzcGxheT1kaXNwbGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZT1ib290bG9nLCBib290dGltZT1ib290dGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9rdm09a3ZtLCB1c2Vfc2xpcnA9c2xpcnAsIGR1bXBfZGlyPWR1bXBfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtcF9ob3N0X2NtZHM9ZHVtcF9ob3N0X2NtZHMsIGxvZ2dlcj1sb2dnZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wX2hvc3RfY21kcz1kdW1wX2hvc3RfY21kcywgbG9nZ2VyPWxvZ2dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbF9wb3J0cz1zZXJpYWxfcG9ydHMsIGJvb3RfcGF0dGVybnMgPSBib290X3BhdHRlcm5zLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9vdm1mPW92bWYpCiAKICAgICBkZWYgc3RhcnQoc2VsZiwgcGFyYW1zPU5vbmUsIGV4dHJhX2Jvb3RwYXJhbXM9Tm9uZSwgcnVucWVtdXBhcmFtcz0nJyk6CiAgICAgICAgIGlmIHNlbGYudXNlX3NsaXJwIGFuZCBub3Qgc2VsZi5zZXJ2ZXJfaXA6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvc3NoLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3NzaC5weQppbmRleCA1MTAzMmVmLi4wOTBiNDBhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvc3NoLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RhcmdldC9zc2gucHkKQEAgLTE1LDcgKzE1LDcgQEAKIAogY2xhc3MgT0VTU0hUYXJnZXQoT0VUYXJnZXQpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGlwLCBzZXJ2ZXJfaXAsIHRpbWVvdXQ9MzAwLCB1c2VyPSdyb290JywKLSAgICAgICAgICAgICAgICAgcG9ydD1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgIHBvcnQ9Tm9uZSwgc2VydmVyX3BvcnQ9MCwgKiprd2FyZ3MpOgogICAgICAgICBpZiBub3QgbG9nZ2VyOgogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ3RhcmdldCcpCiAgICAgICAgICAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5JTkZPKQpAQCAtMzAsNiArMzAsNyBAQAogICAgICAgICBzdXBlcihPRVNTSFRhcmdldCwgc2VsZikuX19pbml0X18obG9nZ2VyKQogICAgICAgICBzZWxmLmlwID0gaXAKICAgICAgICAgc2VsZi5zZXJ2ZXJfaXAgPSBzZXJ2ZXJfaXAKKyAgICAgICAgc2VsZi5zZXJ2ZXJfcG9ydCA9IHNlcnZlcl9wb3J0CiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKICAgICAgICAgc2VsZi51c2VyID0gdXNlcgogICAgICAgICBzc2hfb3B0aW9ucyA9IFsKQEAgLTI0Niw3ICsyNDcsNyBAQAogICAgICAgICAic3RkaW4iOiBOb25lLAogICAgICAgICAic2hlbGwiOiBGYWxzZSwKICAgICAgICAgImJ1ZnNpemUiOiAtMSwKLSAgICAgICAgInByZWV4ZWNfZm4iOiBvcy5zZXRzaWQsCisgICAgICAgICJzdGFydF9uZXdfc2Vzc2lvbiI6IFRydWUsCiAgICAgfQogICAgIG9wdGlvbnMudXBkYXRlKG9wdHMpCiAgICAgb3V0cHV0ID0gJycKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3V0aWxzL2NvbmN1cnJlbmN5dGVzdC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3V0aWxzL2NvbmN1cnJlbmN5dGVzdC5weQppbmRleCAwZjdiM2RjLi5mYWM1OWY3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS91dGlscy9jb25jdXJyZW5jeXRlc3QucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdXRpbHMvY29uY3VycmVuY3l0ZXN0LnB5CkBAIC0xNDYsNiArMTQ2LDIwIEBACiAKIHN1YnVuaXQuX091dFNpZGVUZXN0LmFkZEVycm9yID0gb3V0U2lkZVRlc3RhZGRFcnJvcgogCisjIExpa2Ugb3V0U2lkZVRlc3RhZGRFcnJvciBhYm92ZSwgd2UgbmVlZCBhbiBlcXVpdmFsZW50IGZvciBza2lwcworIyBoYXBwZW5pbmcgYXQgdGhlIHNldFVwQ2xhc3MoKSBsZXZlbCwgb3RoZXJ3aXNlIHdlIHdpbGwgc2VlICJVTktOT1dOIgorIyBhcyBhIHJlc3VsdCBmb3IgY29uY3VycmVudCB0ZXN0cworIworZGVmIG91dFNpZGVUZXN0YWRkU2tpcChzZWxmLCBvZmZzZXQsIGxpbmUpOgorICAgICIiIkEgJ3NraXA6JyBkaXJlY3RpdmUgaGFzIGJlZW4gcmVhZC4iIiIKKyAgICB0ZXN0X25hbWUgPSBsaW5lW29mZnNldDotMV0uZGVjb2RlKCd1dGY4JykKKyAgICBzZWxmLnBhcnNlci5fY3VycmVudF90ZXN0ID0gc3VidW5pdC5SZW1vdGVkVGVzdENhc2UodGVzdF9uYW1lKQorICAgIHNlbGYucGFyc2VyLmN1cnJlbnRfdGVzdF9kZXNjcmlwdGlvbiA9IHRlc3RfbmFtZQorICAgIHNlbGYucGFyc2VyLl9zdGF0ZSA9IHNlbGYucGFyc2VyLl9yZWFkaW5nX3NraXBfZGV0YWlscworICAgIHNlbGYucGFyc2VyLl9yZWFkaW5nX3NraXBfZGV0YWlscy5zZXRfc2ltcGxlKCkKKyAgICBzZWxmLnBhcnNlci5zdWJ1bml0TGluZVJlY2VpdmVkKGxpbmUpCisKK3N1YnVuaXQuX091dFNpZGVUZXN0LmFkZFNraXAgPSBvdXRTaWRlVGVzdGFkZFNraXAKIAogIwogIyBBIGR1bW15IHN0cnVjdHVyZSB0byBhZGQgdG8gaW8uU3RyaW5nSU8gc28gdGhhdCB0aGUgLmJ1ZmZlciBvYmplY3QKQEAgLTE2Myw5ICsxNzcsMTAgQEAKICMKIGNsYXNzIENvbmN1cnJlbnRUZXN0U3VpdGUodW5pdHRlc3QuVGVzdFN1aXRlKToKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdWl0ZSwgcHJvY2Vzc2VzKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3VpdGUsIHByb2Nlc3Nlcywgc2V0dXBmdW5jKToKICAgICAgICAgc3VwZXIoQ29uY3VycmVudFRlc3RTdWl0ZSwgc2VsZikuX19pbml0X18oW3N1aXRlXSkKICAgICAgICAgc2VsZi5wcm9jZXNzZXMgPSBwcm9jZXNzZXMKKyAgICAgICAgc2VsZi5zZXR1cGZ1bmMgPSBzZXR1cGZ1bmMKIAogICAgIGRlZiBydW4oc2VsZiwgcmVzdWx0KToKICAgICAgICAgdGVzdHMsIHRvdGFsdGVzdHMgPSBmb3JrX2Zvcl90ZXN0cyhzZWxmLnByb2Nlc3Nlcywgc2VsZikKQEAgLTIyMSw2ICsyMzYsMTUgQEAKICAgICB3aGlsZSBkZWxheSBhbmQgb3MucGF0aC5leGlzdHMoZCArICIvYml0YmFrZS5sb2NrIik6CiAgICAgICAgIHRpbWUuc2xlZXAoMSkKICAgICAgICAgZGVsYXkgPSBkZWxheSAtIDEKKyAgICAjIERlbGV0aW5nIHRoZXNlIGRpcmVjdG9yaWVzIHRha2VzIGEgbG90IG9mIHRpbWUsIHVzZSBhdXRvYnVpbGRlcgorICAgICMgY2xvYmJlcmRpciBpZiBpdHMgYXZhaWxhYmxlCisgICAgY2xvYmJlcmRpciA9IG9zLnBhdGguZXhwYW5kdXNlcigifi95b2N0by1hdXRvYnVpbGRlci1oZWxwZXIvamFuaXRvci9jbG9iYmVyZGlyIikKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhjbG9iYmVyZGlyKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFtjbG9iYmVyZGlyLCBkXSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6CisgICAgICAgICAgICBwYXNzCiAgICAgYmIudXRpbHMucHJ1bmVkaXIoZCwgaW9uaWNlPVRydWUpCiAKIGRlZiBmb3JrX2Zvcl90ZXN0cyhjb25jdXJyZW5jeV9udW0sIHN1aXRlKToKQEAgLTI0OSwzNyArMjczLDcgQEAKICAgICAgICAgICAgICAgICBzdHJlYW0gPSBvcy5mZG9wZW4oYzJwd3JpdGUsICd3YicsIDEpCiAgICAgICAgICAgICAgICAgb3MuY2xvc2UoYzJwcmVhZCkKIAotICAgICAgICAgICAgICAgICMgQ3JlYXRlIGEgbmV3IHNlcGFyYXRlIEJVSUxERElSIGZvciBlYWNoIGdyb3VwIG9mIHRlc3RzCi0gICAgICAgICAgICAgICAgaWYgJ0JVSUxERElSJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICAgICAgICAgICAgICBidWlsZGRpciA9IG9zLmVudmlyb25bJ0JVSUxERElSJ10KLSAgICAgICAgICAgICAgICAgICAgbmV3YnVpbGRkaXIgPSBidWlsZGRpciArICItc3QtIiArIHN0cihvdXJwaWQpCi0gICAgICAgICAgICAgICAgICAgIG5ld3NlbGZ0ZXN0ZGlyID0gbmV3YnVpbGRkaXIgKyAiL21ldGEtc2VsZnRlc3QiCi0KLSAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG5ld2J1aWxkZGlyKQotICAgICAgICAgICAgICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKGJ1aWxkZGlyICsgIi9jb25mIiwgbmV3YnVpbGRkaXIgKyAiL2NvbmYiKQotICAgICAgICAgICAgICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKGJ1aWxkZGlyICsgIi9jYWNoZSIsIG5ld2J1aWxkZGlyICsgIi9jYWNoZSIpCi0gICAgICAgICAgICAgICAgICAgIG9lLnBhdGguY29weXRyZWUoc2VsZnRlc3RkaXIsIG5ld3NlbGZ0ZXN0ZGlyKQotCi0gICAgICAgICAgICAgICAgICAgIGZvciBlIGluIG9zLmVudmlyb246Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBidWlsZGRpciBpbiBvcy5lbnZpcm9uW2VdOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmVudmlyb25bZV0gPSBvcy5lbnZpcm9uW2VdLnJlcGxhY2UoYnVpbGRkaXIsIG5ld2J1aWxkZGlyKQotCi0gICAgICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCJnaXQgaW5pdDsgZ2l0IGFkZCAqOyBnaXQgY29tbWl0IC1hIC1tICdpbml0aWFsJyIsIGN3ZD1uZXdzZWxmdGVzdGRpciwgc2hlbGw9VHJ1ZSkKLQotICAgICAgICAgICAgICAgICAgICAjIFRyaWVkIHRvIHVzZWQgYml0YmFrZS1sYXllcnMgYWRkL3JlbW92ZSBidXQgaXQgcmVxdWlyZXMgcmVjaXBlIHBhcnNpbmcgYW5kIGhlbmNlIGlzIHRvbyBzbG93Ci0gICAgICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCJzZWQgJXMvY29uZi9iYmxheWVycy5jb25mIC1pIC1lICdzIyVzIyVzI2cnIiAlIChuZXdidWlsZGRpciwgc2VsZnRlc3RkaXIsIG5ld3NlbGZ0ZXN0ZGlyKSwgY3dkPW5ld2J1aWxkZGlyLCBzaGVsbD1UcnVlKQotCi0gICAgICAgICAgICAgICAgICAgIG9zLmNoZGlyKG5ld2J1aWxkZGlyKQotCi0gICAgICAgICAgICAgICAgICAgIGZvciB0IGluIHByb2Nlc3Nfc3VpdGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgaGFzYXR0cih0LCAidGMiKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAgY3AgPSB0LnRjLmNvbmZpZ19wYXRocwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gY3A6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZnRlc3RkaXIgaW4gY3BbcF0gYW5kIG5ld3NlbGZ0ZXN0ZGlyIG5vdCBpbiBjcFtwXToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BbcF0gPSBjcFtwXS5yZXBsYWNlKHNlbGZ0ZXN0ZGlyLCBuZXdzZWxmdGVzdGRpcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBidWlsZGRpciBpbiBjcFtwXSBhbmQgbmV3YnVpbGRkaXIgbm90IGluIGNwW3BdOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcFtwXSA9IGNwW3BdLnJlcGxhY2UoYnVpbGRkaXIsIG5ld2J1aWxkZGlyKQorICAgICAgICAgICAgICAgIChidWlsZGRpciwgbmV3YnVpbGRkaXIpID0gc3VpdGUuc2V0dXBmdW5jKCItc3QtIiArIHN0cihvdXJwaWQpLCBzZWxmdGVzdGRpciwgcHJvY2Vzc19zdWl0ZSkKIAogICAgICAgICAgICAgICAgICMgTGVhdmUgc3RkZXJyIGFuZCBzdGRvdXQgb3BlbiBzbyB3ZSBjYW4gc2VlIHRlc3Qgbm9pc2UKICAgICAgICAgICAgICAgICAjIENsb3NlIHN0ZGluIHNvIHRoYXQgdGhlIGNoaWxkIGdvZXMgYXdheSBpZiBpdCBkZWNpZGVzIHRvCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2JzcC1ody5qc29uIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9ic3AtaHcuanNvbgppbmRleCA1YzViOWI1Li5hOWJjN2Q0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2JzcC1ody5qc29uCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvYnNwLWh3Lmpzb24KQEAgLTkxNywyOCArOTE3LDYgQEAKICAgICB9LAogICAgIHsKICAgICAgICAgInRlc3QiOiB7Ci0gICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1ody5DaGVja19pZl90YXJnZXRfY2FuX3N1cHBvcnRfRUVQUk9NIiwKLSAgICAgICAgICAgICJhdXRob3IiOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAieWkuemhhb0B3aW5kcml2ZXIuY29tIiwKLSAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAieWkuemhhb0B3aW5kcml2ZXIuY29tIgotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiZXhlY3V0aW9uIjogewotICAgICAgICAgICAgICAgICIxIjogewotICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNoZWNrIGVlcHJvbSBkZXZpY2UgZXhpc3QgaW4gL3N5cy9idXMvaTJjL2RldmljZXMvICIsCi0gICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIkhleGR1bXAgY2FuIHJlYWQgZGF0YSBmcm9tIGVlcHJvbS5cbiIKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICIyIjogewotICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlJ1biBcImhleGR1bXAgZWVwcm9tXCIgY29tbWFuZHJvb3RAbXBjODMxNWUtcmRiOi9zeXMvYnVzL2kyYy9kZXZpY2VzLzEtMDA1MT4gaGV4ZHVtcCBlZXByb20wMDAwMDAwIDkyMTAgMGIwMiAwMjExIDAwMDkgMGI1MiAwMTA4IDBjMDAgM2MwMDAwMDAwMTAgNjk3OCA2OTMwIDY5MTEgMjA4YyA3MDAzIDNjM2MgMDBmMCA4MzgxXHUyMDI2XG4iLAotICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJzdW1tYXJ5IjogIkNoZWNrX2lmX3RhcmdldF9jYW5fc3VwcG9ydF9FRVBST00iCi0gICAgICAgIH0KLSAgICB9LAotICAgIHsKLSAgICAgICAgInRlc3QiOiB7CiAgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1ody5TeXN0ZW1fY2FuX2Jvb3RfdXBfdmlhX05GUyIsCiAgICAgICAgICAgICAiYXV0aG9yIjogWwogICAgICAgICAgICAgICAgIHsKQEAgLTk2NiwzNSArOTQ0LDUgQEAKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAic3VtbWFyeSI6ICJTeXN0ZW1fY2FuX2Jvb3RfdXBfdmlhX05GUyIKICAgICAgICAgfQotICAgIH0sCi0gICAgewotICAgICAgICAidGVzdCI6IHsKLSAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLWh3LkJvb3RfZnJvbV9KRkZTMl9pbWFnZSIsCi0gICAgICAgICAgICAiYXV0aG9yIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInlpLnpoYW9Ad2luZHJpdmVyLmNvbSIsCi0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogInlpLnpoYW9Ad2luZHJpdmVyLmNvbSIKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKLSAgICAgICAgICAgICAgICAiMSI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJGaXJzdCBib290IHRoZSBib2FyZCB3aXRoIE5GUyByb290LiAiLAotICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGUgc3lzdGVtIGNhbiBib290IHVwIHdpdGhvdXQgcHJvYmxlbVxuIgotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIjIiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiSW5zdGFsbCBtdGQtdXRpbHMgcGFja2FnZS4gRXJhc2UgdGhlIE1URCBwYXJ0aXRpb24gd2hpY2ggd2lsbCBiZSB1c2VkIGFzIHJvb3Q6ICQgZmxhc2hfZXJhc2VhbGwgL2Rldi9tdGQzICIsCi0gICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICIzIjogewotICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNvcHkgdGhlIEpGRlMyIGltYWdlIHRvIHRoZSBNVEQgcGFydGl0aW9uOiAkIGZsYXNoY3AgY29yZS1pbWFnZS1taW5pbWFsLW1wYzgzMTVlLXJkYi5qZmZzMiAvZGV2L210ZDMgIiwKLSAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIjQiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiVGhlbiByZWJvb3QgdGhlIGJvYXJkIGFuZCBzZXQgdXAgdGhlIGVudmlyb25tZW50IGluIFUtQm9vdDogPT4gc2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9tdGRibG9jazMgcm9vdGZzdHlwZT1qZmZzMiBjb25zb2xlPXR0eVMwLDExNTIwMCAiLAotICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJzdW1tYXJ5IjogIkJvb3RfZnJvbV9KRkZTMl9pbWFnZSIKLSAgICAgICAgfQogICAgIH0KIF0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvZWNsaXBzZS1wbHVnaW4uanNvbiBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvZWNsaXBzZS1wbHVnaW4uanNvbgppbmRleCA5ODY5MTUwLi5kNzdkMGU2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2VjbGlwc2UtcGx1Z2luLmpzb24KKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9lY2xpcHNlLXBsdWdpbi5qc29uCkBAIC04Miw3ICs4Miw3IEBACiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKICAgICAgICAgICAgICAgICAiMSI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJMYXVuY2ggYSBRRU1VIG9mIHRhcmdldCBlbnZpcm9tZW50LihSZWZlcmVuY2UgdG8gY2FzZSBcIkFEVCAtIExhdW5jaCBxZW11IGJ5IGVjbGlwc2VcIikgIiwKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJMYXVuY2ggYSBRRU1VIG9mIHRhcmdldCBlbnZpcm9ubWVudC4oUmVmZXJlbmNlIHRvIGNhc2UgXCJBRFQgLSBMYXVuY2ggcWVtdSBieSBlY2xpcHNlXCIpICIsCiAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICIyIjogewpAQCAtMTY0LDcgKzE2NCw3IEBACiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKICAgICAgICAgICAgICAgICAiMSI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJMYXVuY2ggYSBRRU1VIG9mIHRhcmdldCBlbnZpcm9tZW50LihSZWZlcmVuY2UgdG8gY2FzZSBcIkFEVCAtIExhdW5jaCBxZW11IGJ5IGVjbGlwc2VcIikgIiwKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJMYXVuY2ggYSBRRU1VIG9mIHRhcmdldCBlbnZpcm9ubWVudC4oUmVmZXJlbmNlIHRvIGNhc2UgXCJBRFQgLSBMYXVuY2ggcWVtdSBieSBlY2xpcHNlXCIpICIsCiAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICIyIjogewpAQCAtMzE5LDQgKzMxOSw0IEBACiAgICAgICAgICAgICAic3VtbWFyeSI6ICJFY2xpcHNlX1Bva3lfaW5zdGFsbGF0aW9uX2FuZF9zZXR1cCIKICAgICAgICAgfQogICAgIH0KLV0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitdCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9hcHQucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9hcHQucHkKaW5kZXggNzRhOTQwZC4uYzUzNzhkOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvYXB0LnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2FwdC5weQpAQCAtMjIsNyArMjIsOSBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CiAgICAgICAgIHNlcnZpY2VfcmVwbyA9IG9zLnBhdGguam9pbihjbHMudGMudGRbJ0RFUExPWV9ESVJfREVCJ10sICdhbGwnKQotICAgICAgICBjbHMucmVwb19zZXJ2ZXIgPSBIVFRQU2VydmljZShzZXJ2aWNlX3JlcG8sIGNscy50Yy50YXJnZXQuc2VydmVyX2lwLCBsb2dnZXI9Y2xzLnRjLmxvZ2dlcikKKyAgICAgICAgY2xzLnJlcG9fc2VydmVyID0gSFRUUFNlcnZpY2Uoc2VydmljZV9yZXBvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMC4wLjAuMCcsIHBvcnQ9Y2xzLnRjLnRhcmdldC5zZXJ2ZXJfcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyPWNscy50Yy5sb2dnZXIpCiAgICAgICAgIGNscy5yZXBvX3NlcnZlci5zdGFydCgpCiAKICAgICBAY2xhc3NtZXRob2QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2J1aWxkY3Bpby5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2J1aWxkY3Bpby5weQppbmRleCBmNGU4NzFlLi5kMGY5MTY2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9idWlsZGNwaW8ucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvYnVpbGRjcGlvLnB5CkBAIC0xMiw3ICsxMiw3IEBACiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICB1cmkgPSAnaHR0cHM6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy9jcGlvLTIuMTIudGFyLmd6JworICAgICAgICB1cmkgPSAnaHR0cHM6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy9jcGlvLTIuMTMudGFyLmd6JwogICAgICAgICBjbHMucHJvamVjdCA9IFRhcmdldEJ1aWxkUHJvamVjdChjbHMudGMudGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRsX2RpciA9IGNscy50Yy50ZFsnRExfRElSJ10pCkBAIC0yNyw2ICsyNyw2IEBACiAgICAgQE9FSGFzUGFja2FnZShbJ2F1dG9jb25mJ10pCiAgICAgZGVmIHRlc3RfY3BpbyhzZWxmKToKICAgICAgICAgc2VsZi5wcm9qZWN0LmRvd25sb2FkX2FyY2hpdmUoKQotICAgICAgICBzZWxmLnByb2plY3QucnVuX2NvbmZpZ3VyZSgpCisgICAgICAgIHNlbGYucHJvamVjdC5ydW5fY29uZmlndXJlKCctLWRpc2FibGUtbWFpbnRhaW5lci1tb2RlJywnJykKICAgICAgICAgc2VsZi5wcm9qZWN0LnJ1bl9tYWtlKCkKICAgICAgICAgc2VsZi5wcm9qZWN0LnJ1bl9pbnN0YWxsKCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2RhdGUucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9kYXRlLnB5CmluZGV4IDc3NTBhNzIuLmZkZDJhNmEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2RhdGUucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZGF0ZS5weQpAQCAtMTMsMTIgKzEzLDEyIEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBpZiBzZWxmLnRjLnRkLmdldCgnVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlcicpID09ICdzeXN0ZW1kJzoKICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdTdG9wcGluZyBzeXN0ZW1kLXRpbWVzeW5jZCBkYWVtb24nKQotICAgICAgICAgICAgc2VsZi50YXJnZXQucnVuKCdzeXN0ZW1jdGwgc3RvcCBzeXN0ZW1kLXRpbWVzeW5jZCcpCisgICAgICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ3N5c3RlbWN0bCBkaXNhYmxlIC0tbm93IHN5c3RlbWQtdGltZXN5bmNkJykKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgaWYgc2VsZi50Yy50ZC5nZXQoJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXInKSA9PSAnc3lzdGVtZCc6CiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnU3RhcnRpbmcgc3lzdGVtZC10aW1lc3luY2QgZGFlbW9uJykKLSAgICAgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignc3lzdGVtY3RsIHN0YXJ0IHN5c3RlbWQtdGltZXN5bmNkJykKKyAgICAgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignc3lzdGVtY3RsIGVuYWJsZSAtLW5vdyBzeXN0ZW1kLXRpbWVzeW5jZCcpCiAKICAgICBAT0VUZXN0RGVwZW5kcyhbJ3NzaC5TU0hUZXN0LnRlc3Rfc3NoJ10pCiAgICAgQE9FSGFzUGFja2FnZShbJ2NvcmV1dGlscycsICdidXN5Ym94J10pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9kbmYucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9kbmYucHkKaW5kZXggZGUzNzU5OS4uZjQwYzYzMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZG5mLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2RuZi5weQpAQCAtNTMsNyArNTMsOCBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CiAgICAgICAgIGNscy5yZXBvX3NlcnZlciA9IEhUVFBTZXJ2aWNlKG9zLnBhdGguam9pbihjbHMudGMudGRbJ1dPUktESVInXSwgJ29lLXRlc3RpbWFnZS1yZXBvJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy50Yy50YXJnZXQuc2VydmVyX2lwLCBsb2dnZXI9Y2xzLnRjLmxvZ2dlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzAuMC4wLjAnLCBwb3J0PWNscy50Yy50YXJnZXQuc2VydmVyX3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlcj1jbHMudGMubG9nZ2VyKQogICAgICAgICBjbHMucmVwb19zZXJ2ZXIuc3RhcnQoKQogCiAgICAgQGNsYXNzbWV0aG9kCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9sb2dyb3RhdGUucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9sb2dyb3RhdGUucHkKaW5kZXggYmZhNTdjNS4uMzkzOGU5MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvbG9ncm90YXRlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2xvZ3JvdGF0ZS5weQpAQCAtMTgsMzIgKzE4LDU4IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKICAgICAgICAgY2xzLnRjLnRhcmdldC5ydW4oJ212IC1mICRIT01FL3d0bXAub2VxYWJhayAvZXRjL2xvZ3JvdGF0ZS5kL3d0bXAgJiYgcm0gLXJmICRIT01FL2xvZ3JvdGF0ZV9kaXInKQorICAgICAgICBjbHMudGMudGFyZ2V0LnJ1bigncm0gLXJmIC92YXIvbG9nL2xvZ3JvdGF0ZV90ZXN0ZmlsZSAmJiBybSAtcmYgL2V0Yy9sb2dyb3RhdGUuZC9sb2dyb3RhdGVfdGVzdGZpbGUnKQogCiAgICAgQE9FVGVzdERlcGVuZHMoWydzc2guU1NIVGVzdC50ZXN0X3NzaCddKQogICAgIEBPRUhhc1BhY2thZ2UoWydsb2dyb3RhdGUnXSkKLSAgICBkZWYgdGVzdF8xX2xvZ3JvdGF0ZV9zZXR1cChzZWxmKToKKyAgICBkZWYgdGVzdF9sb2dyb3RhdGVfd3RtcChzZWxmKToKKworICAgICAgICAjIC92YXIvbG9nL3d0bXAgbWF5IG5vdCBhbHdheXMgZXhpc3QgaW5pdGlhbGx5LCBzbyB1c2UgdG91Y2ggdG8gZW5zdXJlIGl0IGlzIHByZXNlbnQKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ3RvdWNoIC92YXIvbG9nL3d0bXAnKQorICAgICAgICBtc2cgPSAoJ0NvdWxkIG5vdCBjcmVhdGUvdXBkYXRlIC92YXIvbG9nL3d0bXAgd2l0aCB0b3VjaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2cgPSBtc2cpCisKICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ21rZGlyICRIT01FL2xvZ3JvdGF0ZV9kaXInKQotICAgICAgICBtc2cgPSAnQ291bGQgbm90IGNyZWF0ZSBsb2dyb3RhdGVfZGlyLiBPdXRwdXQ6ICVzJyAlIG91dHB1dAorICAgICAgICBtc2cgPSAoJ0NvdWxkIG5vdCBjcmVhdGUgbG9ncm90YXRlX2Rpci4gT3V0cHV0OiAlcycgJSBvdXRwdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2cgPSBtc2cpCiAKLSAgICAgICAgY21kID0gKCdzZWQgLWkgInMjd3RtcCB7I3d0bXAge1xcbiAgICBvbGRkaXIgJEhPTUUvbG9ncm90YXRlX2RpciMiJwotICAgICAgICAgICAgICAgJyAvZXRjL2xvZ3JvdGF0ZS5kL3d0bXAnKQotICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bihjbWQpCi0gICAgICAgIG1zZyA9ICgnQ291bGQgbm90IHdyaXRlIHRvIGxvZ3JvdGF0ZS5kL3d0bXAgZmlsZS4gU3RhdHVzIGFuZCBvdXRwdXQ6ICcKLSAgICAgICAgICAgICAgICcgJXMgYW5kICVzJyAlIChzdGF0dXMsIG91dHB1dCkpCisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdlY2hvICJjcmVhdGUgXG4gb2xkZGlyICRIT01FL2xvZ3JvdGF0ZV9kaXIgXG4gaW5jbHVkZSAvZXRjL2xvZ3JvdGF0ZS5kL3d0bXAiID4gL3RtcC9sb2dyb3RhdGUtdGVzdC5jb25mJykKKyAgICAgICAgbXNnID0gKCdDb3VsZCBub3Qgd3JpdGUgdG8gL3RtcC9sb2dyb3RhdGUtdGVzdC5jb25mJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZyA9IG1zZykKKyAgICAgICAgCisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdlY2hvICIvdmFyL2xvZy9sb2dyb3RhdGVfdGVzdCB7XFxuIG1pc3NpbmdvayBcXG4gbW9udGhseSBcXG4gcm90YXRlIDEiID4gL2V0Yy9sb2dyb3RhdGUuZC9sb2dyb3RhdGVfdGVzdCcpCisgICAgICAgIG1zZyA9ICgnQ291bGQgbm90IHdyaXRlIHRvIC9ldGMvbG9ncm90YXRlLmQvbG9ncm90YXRlX3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnID0gbXNnKQorICAgICAgICAKKyAgICAgICAgIyBJZiBsb2dyb3RhdGUgZmFpbHMgdG8gcm90YXRlIHRoZSBsb2csIHZpZXcgdGhlIHZlcmJvc2Ugb3V0cHV0IG9mIGxvZ3JvdGF0ZSB0byBzZWUgd2hhdCBwcmV2ZW50ZWQgaXQKKyAgICAgICAgXywgbG9ncm90YXRlX291dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignbG9ncm90YXRlIC12ZiAvdG1wL2xvZ3JvdGF0ZS10ZXN0LmNvbmYnKQorICAgICAgICBzdGF0dXMsIF8gPSBzZWxmLnRhcmdldC5ydW4oJ2ZpbmQgJEhPTUUvbG9ncm90YXRlX2RpciAtdHlwZSBmIHwgZ3JlcCB3dG1wLjEnKQorICAgICAgICBtc2cgPSAoImxvZ3JvdGF0ZSBkaWQgbm90IHN1Y2Nlc3NmdWxseSByb3RhdGUgdGhlIHd0bXAgbG9nLiBPdXRwdXQgZnJvbSBsb2dyb3RhdGUgLXZmOiBcbiVzIiAlIChsb2dyb3RhdGVfb3V0cHV0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZyA9IG1zZykKKyAgICAgICAKKyAgICBAT0VUZXN0RGVwZW5kcyhbJ2xvZ3JvdGF0ZS5Mb2dyb3RhdGVUZXN0LnRlc3RfbG9ncm90YXRlX3d0bXAnXSkKKyAgICBkZWYgdGVzdF9sb2dyb3RhdGVfbmV3bG9nKHNlbGYpOgorICAgICAgICAKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ2VjaG8gIm9lcWEgbG9ncm90YXRlIHRlc3QgZmlsZSIgPiAvdmFyL2xvZy9sb2dyb3RhdGVfdGVzdGZpbGUnKQorICAgICAgICBtc2cgPSAoJ0NvdWxkIG5vdCBjcmVhdGUgbG9ncm90YXRlIHRlc3QgZmlsZSBpbiAvdmFyL2xvZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2cgPSBtc2cpCisgICAgICAgIAorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignZWNobyAiL3Zhci9sb2cvbG9ncm90YXRlX3Rlc3RmaWxlIHtcbiBtaXNzaW5nb2sgXG4gbW9udGhseSBcbiByb3RhdGUgMSIgPiAvZXRjL2xvZ3JvdGF0ZS5kL2xvZ3JvdGF0ZV90ZXN0ZmlsZScpCisgICAgICAgIG1zZyA9ICgnQ291bGQgbm90IHdyaXRlIHRvIC9ldGMvbG9ncm90YXRlLmQvbG9ncm90YXRlX3Rlc3RmaWxlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZyA9IG1zZykKIAotICAgIEBPRVRlc3REZXBlbmRzKFsnbG9ncm90YXRlLkxvZ3JvdGF0ZVRlc3QudGVzdF8xX2xvZ3JvdGF0ZV9zZXR1cCddKQotICAgIGRlZiB0ZXN0XzJfbG9ncm90YXRlKHNlbGYpOgotICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignZWNobyAiY3JlYXRlIFxuIGluY2x1ZGUgL2V0Yy9sb2dyb3RhdGUuZCIgPiAvdG1wL2xvZ3JvdGF0ZS10ZXN0LmNvbmYnKQotICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignbG9ncm90YXRlIC1mIC90bXAvbG9ncm90YXRlLXRlc3QuY29uZicpCi0KLSAgICAgICAgbXNnID0gKCdsb2dyb3RhdGUgc2VydmljZSBjb3VsZCBub3QgYmUgcmVsb2FkZWQuIFN0YXR1cyBhbmQgb3V0cHV0OiAnCi0gICAgICAgICAgICAgICAgJyVzIGFuZCAlcycgJSAoc3RhdHVzLCBvdXRwdXQpKQorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignZWNobyAiY3JlYXRlIFxuIG9sZGRpciAkSE9NRS9sb2dyb3RhdGVfZGlyIFxuIGluY2x1ZGUgL2V0Yy9sb2dyb3RhdGUuZC9sb2dyb3RhdGVfdGVzdGZpbGUiID4gL3RtcC9sb2dyb3RhdGUtdGVzdDIuY29uZicpCisgICAgICAgIG1zZyA9ICgnQ291bGQgbm90IHdyaXRlIHRvIC90bXAvbG9ncm90YXRlX3Rlc3QyLmNvbmYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnID0gbXNnKQogCi0gICAgICAgIF8sIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignbHMgLWxhICRIT01FL2xvZ3JvdGF0ZV9kaXIvIHwgd2MgLWwnKQotICAgICAgICBtc2cgPSAoJ25ldyBsb2dmaWxlIGNvdWxkIG5vdCBiZSBjcmVhdGVkLiBMaXN0IG9mIGZpbGVzIHdpdGhpbiBsb2cgJwotICAgICAgICAgICAgICAgJ2RpcmVjdG9yeTogJXMnICUgKAotICAgICAgICAgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignbHMgLWxhICRIT01FL2xvZ3JvdGF0ZV9kaXInKVsxXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnQob3V0cHV0KT49MywgbXNnID0gbXNnKQorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignZmluZCAkSE9NRS9sb2dyb3RhdGVfZGlyIC10eXBlIGYgfCBncmVwIGxvZ3JvdGF0ZV90ZXN0ZmlsZS4xJykKKyAgICAgICAgbXNnID0gKCdBIHJvdGF0ZWQgbG9nIGZvciBsb2dyb3RhdGVfdGVzdGZpbGUgaXMgYWxyZWFkeSBwcmVzZW50IGluIGxvZ3JvdGF0ZV9kaXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMSwgbXNnID0gbXNnKQorCisgICAgICAgICMgSWYgbG9ncm90YXRlIGZhaWxzIHRvIHJvdGF0ZSB0aGUgbG9nLCB2aWV3IHRoZSB2ZXJib3NlIG91dHB1dCBvZiBsb2dyb3RhdGUgaW5zdGVhZCBvZiBqdXN0IGxpc3RpbmcgdGhlIGZpbGVzIGluIG9sZGRpcgorICAgICAgICBfLCBsb2dyb3RhdGVfb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdsb2dyb3RhdGUgLXZmIC90bXAvbG9ncm90YXRlLXRlc3QyLmNvbmYnKQorICAgICAgICBzdGF0dXMsIF8gPSBzZWxmLnRhcmdldC5ydW4oJ2ZpbmQgJEhPTUUvbG9ncm90YXRlX2RpciAtdHlwZSBmIHwgZ3JlcCBsb2dyb3RhdGVfdGVzdGZpbGUuMScpCisgICAgICAgIG1zZyA9ICgnbG9ncm90YXRlIGRpZCBub3Qgc3VjY2Vzc2Z1bGx5IHJvdGF0ZSB0aGUgbG9ncm90YXRlX3Rlc3QgbG9nLiBPdXRwdXQgZnJvbSBsb2dyb3RhdGUgLXZmOiBcbiVzJyAlIChsb2dyb3RhdGVfb3V0cHV0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZyA9IG1zZykKKworCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9sdHAucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9sdHAucHkKaW5kZXggMzA1NDg2NC4uNmRjNWVmMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvbHRwLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2x0cC5weQpAQCAtNTcsOSArNTcsOSBAQAogCiBjbGFzcyBMdHBUZXN0KEx0cFRlc3RCYXNlKToKIAotICAgIGx0cF9ncm91cHMgPSBbIm1hdGgiLCAic3lzY2FsbHMiLCAiZGlvIiwgImlvIiwgIm1tIiwgImlwYyIsICJzY2hlZCIsICJucHRsIiwgInB0eSIsICJjb250YWluZXJzIiwgImNvbnRyb2xsZXJzIiwgImZpbGVjYXBzIiwgImNhcF9ib3VuZHMiLCAiZmNudGwtbG9ja3Rlc3RzIiwgImNvbm5lY3RvcnMiLCJ0aW1lcnMiLCAiY29tbWFuZHMiLCAibmV0LmlwdjZfbGliIiwgImlucHV0IiwiZnNfcGVybXNfc2ltcGxlIl0KKyAgICBsdHBfZ3JvdXBzID0gWyJtYXRoIiwgInN5c2NhbGxzIiwgImRpbyIsICJpbyIsICJtbSIsICJpcGMiLCAic2NoZWQiLCAibnB0bCIsICJwdHkiLCAiY29udGFpbmVycyIsICJjb250cm9sbGVycyIsICJmaWxlY2FwcyIsICJjYXBfYm91bmRzIiwgImZjbnRsLWxvY2t0ZXN0cyIsICJjb25uZWN0b3JzIiwgImNvbW1hbmRzIiwgIm5ldC5pcHY2X2xpYiIsICJpbnB1dCIsImZzX3Blcm1zX3NpbXBsZSJdCiAKLSAgICBsdHBfZnMgPSBbImZzIiwgImZzeCIsICJmc19iaW5kIiwgImZzX2V4dDQiXQorICAgIGx0cF9mcyA9IFsiZnMiLCAiZnN4IiwgImZzX2JpbmQiXQogICAgICMgc2tpcCBrZXJuZWwgY3B1aG90cGx1ZwogICAgIGx0cF9rZXJuZWwgPSBbInBvd2VyX21hbmFnZW1lbnRfdGVzdHMiLCAiaHlwZXJ0aHJlYWRpbmcgIiwgImtlcm5lbF9taXNjIiwgImh1Z2V0bGIiXQogICAgIGx0cF9ncm91cHMgKz0gbHRwX2ZzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9vcGtnLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvb3BrZy5weQppbmRleCA3NTA3MDYxLi45Y2ZlZTFjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9vcGtnLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL29wa2cucHkKQEAgLTI1LDcgKzI1LDkgQEAKICAgICAgICAgaWYgY2xzLnRjLnRkWyJNVUxUSUxJQl9WQVJJQU5UUyJdOgogICAgICAgICAgICAgYWxsYXJjaGZlZWQgPSBjbHMudGMudGRbIlRVTkVfUEtHQVJDSCJdCiAgICAgICAgIHNlcnZpY2VfcmVwbyA9IG9zLnBhdGguam9pbihjbHMudGMudGRbJ0RFUExPWV9ESVJfSVBLJ10sIGFsbGFyY2hmZWVkKQotICAgICAgICBjbHMucmVwb19zZXJ2ZXIgPSBIVFRQU2VydmljZShzZXJ2aWNlX3JlcG8sIGNscy50Yy50YXJnZXQuc2VydmVyX2lwLCBsb2dnZXI9Y2xzLnRjLmxvZ2dlcikKKyAgICAgICAgY2xzLnJlcG9fc2VydmVyID0gSFRUUFNlcnZpY2Uoc2VydmljZV9yZXBvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMC4wLjAuMCcsIHBvcnQ9Y2xzLnRjLnRhcmdldC5zZXJ2ZXJfcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyPWNscy50Yy5sb2dnZXIpCiAgICAgICAgIGNscy5yZXBvX3NlcnZlci5zdGFydCgpCiAKICAgICBAY2xhc3NtZXRob2QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3BhcnNlbG9ncy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3BhcnNlbG9ncy5weQppbmRleCAxNTM0M2Q3Li5hMTc5MWI1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wYXJzZWxvZ3MucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcGFyc2Vsb2dzLnB5CkBAIC01NSwxMSArNTUsMTUgQEAKICAgICAiRmFpbGVkIHRvIHJlYWQgL3Zhci9saWIvbmZzL3N0YXRkL3N0YXRlOiBTdWNjZXNzIiwKICAgICAiZXJyb3IgcmV0cnkgdGltZS1vdXQgPSIsCiAgICAgImxvZ2luZDogY2Fubm90IHNldHVwIHN5c3RlbWQtbG9naW5kIGhlbHBlciAoLTYxKSwgdXNpbmcgbGVnYWN5IGZhbGxiYWNrIiwKLSAgICAiRXJyb3IgY2hhbmdpbmcgbmV0IGludGVyZmFjZSBuYW1lICdldGgwJyB0byAiCisgICAgIkZhaWxlZCB0byByZW5hbWUgbmV0d29yayBpbnRlcmZhY2UiLAorICAgICJGYWlsZWQgdG8gcHJvY2VzcyBkZXZpY2UsIGlnbm9yaW5nOiBEZXZpY2Ugb3IgcmVzb3VyY2UgYnVzeSIsCisgICAgIkNhbm5vdCBmaW5kIGEgbWFwIGZpbGUiLAorICAgICJbcmRyYW5kXTogSW5pdGlhbGl6YXRpb24gRmFpbGVkIiwKKyAgICAiW3B1bHNlYXVkaW9dIGF1dGhrZXkuYzogRmFpbGVkIHRvIG9wZW4gY29va2llIGZpbGUiLAorICAgICJbcHVsc2VhdWRpb10gYXV0aGtleS5jOiBGYWlsZWQgdG8gbG9hZCBhdXRoZW50aWNhdGlvbiBrZXkiLAogICAgIF0KIAogdmlkZW9fcmVsYXRlZCA9IFsKLSAgICAidXZlc2FmYiIsCiBdCiAKIHg4Nl9jb21tb24gPSBbCkBAIC04MSwxMSArODUsOCBAQAogICAgICJmYWlsIHRvIGFkZCBNTUNPTkZJRyBpbmZvcm1hdGlvbiwgY2FuJ3QgYWNjZXNzIGV4dGVuZGVkIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIHVuZGVyIHRoaXMgYnJpZGdlLiIsCiAgICAgImNhbid0IGNsYWltIEJBUiAiLAogICAgICdhbWRfbmI6IENhbm5vdCBlbnVtZXJhdGUgQU1EIG5vcnRoYnJpZGdlcycsCi0gICAgJ3V2ZXNhZmI6IDUwMDAgbXMgdGFzayB0aW1lb3V0LCBpbmZpbml0ZWx5IHdhaXRpbmcnLAogICAgICd0c2M6IEhQRVQvUE1USU1FUiBjYWxpYnJhdGlvbiBmYWlsZWQnLAogICAgICJtb2Rlc2V0KDApOiBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgRFJJMiBleHRlbnNpb24iLAotICAgICJ1dmVzYWZiOiBjYW5ub3QgcmVzZXJ2ZSB2aWRlbyBtZW1vcnkgYXQiLAotICAgICJ1dmVzYWZiOiBwcm9iZSBvZiB1dmVzYWZiLjAgZmFpbGVkIHdpdGggZXJyb3IiLAogICAgICJnbGFtb3IgaW5pdGlhbGl6YXRpb24gZmFpbGVkIiwKIF0gKyBjb21tb25fZXJyb3JzCiAKQEAgLTEzMyw2ICsxMzQsNyBAQAogICAgICAgICAnKEVFKSBTZXJ2ZXIgdGVybWluYXRlZCB3aXRoIGVycm9yICgxKS4gQ2xvc2luZyBsb2cgZmlsZS4nLAogICAgICAgICAnZG1pOiBGaXJtd2FyZSByZWdpc3RyYXRpb24gZmFpbGVkLicsCiAgICAgICAgICdpcnE6IHR5cGUgbWlzbWF0Y2gsIGZhaWxlZCB0byBtYXAgaHdpcnEtMjcgZm9yIC9pbnRjJywKKyAgICAgICAgJ2xvZ2luZDogZmFpbGVkIHRvIGdldCBzZXNzaW9uIHNlYXQnLAogICAgICAgICBdICsgY29tbW9uX2Vycm9ycywKICAgICAnaW50ZWwtY29yZTItMzInIDogWwogICAgICAgICAnQUNQSTogTm8gX0JRQyBtZXRob2QsIGNhbm5vdCBkZXRlcm1pbmUgaW5pdGlhbCBicmlnaHRuZXNzJywKQEAgLTE4NCwxMSArMTg2LDYgQEAKICAgICAgICAgJ0ZhaWxlZCB0byBtYWtlIEVHTCBjb250ZXh0IGN1cnJlbnQnLAogICAgICAgICAnZ2xhbW9yIGluaXRpYWxpemF0aW9uIGZhaWxlZCcsCiAgICAgICAgIF0gKyBjb21tb25fZXJyb3JzLAotICAgICdtcGM4MzE1ZS1yZGInIDogWwotICAgICAgICAnb2ZfaXJxX3BhcnNlX3BjaTogZmFpbGVkIHdpdGgnLAotICAgICAgICAnRmF0YWwgc2VydmVyIGVycm9yOicsCi0gICAgICAgICdTZXJ2ZXIgdGVybWluYXRlZCB3aXRoIGVycm9yJywKLSAgICAgICAgXSArIGNvbW1vbl9lcnJvcnMsCiB9CiAKIGxvZ19sb2NhdGlvbnMgPSBbIi92YXIvbG9nLyIsIi92YXIvbG9nL2RtZXNnIiwgIi90bXAvZG1lc2dfb3V0cHV0LmxvZyJdCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wdGVzdC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3B0ZXN0LnB5CmluZGV4IGQ4ZDFlMWIuLjk5YTQ0ZjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3B0ZXN0LnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3B0ZXN0LnB5CkBAIC0yLDYgKzIsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCiAjCiAKK2ltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgcHByaW50CiBpbXBvcnQgZGF0ZXRpbWUKQEAgLTE4LDcgKzE5LDIwIEBACiAgICAgQE9FVGVzdERlcGVuZHMoWydzc2guU1NIVGVzdC50ZXN0X3NzaCddKQogICAgIEBPRUhhc1BhY2thZ2UoWydwdGVzdC1ydW5uZXInXSkKICAgICBAdW5pdHRlc3QuZXhwZWN0ZWRGYWlsdXJlCi0gICAgZGVmIHRlc3RfcHRlc3RydW5uZXIoc2VsZik6CisgICAgZGVmIHRlc3RfcHRlc3RydW5uZXJfZXhwZWN0ZmFpbChzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYudGQuZ2V0KCdQVEVTVF9FWFBFQ1RfRkFJTFVSRScpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnQ2Fubm90IHJ1biBwdGVzdHMgd2l0aCBAZXhwZWN0ZWRGYWlsdXJlIGFzIHB0ZXN0cyBhcmUgcmVxdWlyZWQgdG8gcGFzcycpCisgICAgICAgIHNlbGYuZG9fcHRlc3RydW5uZXIoKQorCisgICAgQHNraXBJZk5vdEZlYXR1cmUoJ3B0ZXN0JywgJ1Rlc3QgcmVxdWlyZXMgcHRlc3QgdG8gYmUgaW4gRElTVFJPX0ZFQVRVUkVTJykKKyAgICBAT0VUZXN0RGVwZW5kcyhbJ3NzaC5TU0hUZXN0LnRlc3Rfc3NoJ10pCisgICAgQE9FSGFzUGFja2FnZShbJ3B0ZXN0LXJ1bm5lciddKQorICAgIGRlZiB0ZXN0X3B0ZXN0cnVubmVyX2V4cGVjdHN1Y2Nlc3Moc2VsZik6CisgICAgICAgIGlmIHNlbGYudGQuZ2V0KCdQVEVTVF9FWFBFQ1RfRkFJTFVSRScpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnQ2Fubm90IHJ1biBwdGVzdHMgd2l0aG91dCBAZXhwZWN0ZWRGYWlsdXJlIGFzIHB0ZXN0cyBhcmUgZXhwZWN0ZWQgdG8gZmFpbCcpCisgICAgICAgIHNlbGYuZG9fcHRlc3RydW5uZXIoKQorCisgICAgZGVmIGRvX3B0ZXN0cnVubmVyKHNlbGYpOgogICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignd2hpY2ggcHRlc3QtcnVubmVyJywgMCkKICAgICAgICAgaWYgc3RhdHVzICE9IDA6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJObyAtcHRlc3QgcGFja2FnZXMgYXJlIGluc3RhbGxlZCBpbiB0aGUgaW1hZ2UiKQpAQCAtNjcsOCArODEsMTMgQEAKICAgICAgICAgICAgICAgICBleHRyYXNbdGVzdG5hbWVdID0geydzdGF0dXMnOiByZXN1bHR9CiAKICAgICAgICAgZmFpbGVkX3Rlc3RzID0ge30KKworICAgICAgICBmb3Igc2VjdGlvbiBpbiBzZWN0aW9uczoKKyAgICAgICAgICAgIGlmICdleGl0Y29kZScgaW4gc2VjdGlvbnNbc2VjdGlvbl0ua2V5cygpOgorICAgICAgICAgICAgICAgIGZhaWxlZF90ZXN0c1tzZWN0aW9uXSA9IHNlY3Rpb25zW3NlY3Rpb25dWyJsb2ciXQorCiAgICAgICAgIGZvciBzZWN0aW9uIGluIHJlc3VsdHM6Ci0gICAgICAgICAgICBmYWlsZWRfdGVzdGNhc2VzID0gWyAiXyIuam9pbih0ZXN0LnRyYW5zbGF0ZSh0cmFucykuc3BsaXQoKSkgZm9yIHRlc3QgaW4gcmVzdWx0c1tzZWN0aW9uXSBpZiByZXN1bHRzW3NlY3Rpb25dW3Rlc3RdID09ICdmYWlsJyBdCisgICAgICAgICAgICBmYWlsZWRfdGVzdGNhc2VzID0gWyAiXyIuam9pbih0ZXN0LnRyYW5zbGF0ZSh0cmFucykuc3BsaXQoKSkgZm9yIHRlc3QgaW4gcmVzdWx0c1tzZWN0aW9uXSBpZiByZXN1bHRzW3NlY3Rpb25dW3Rlc3RdID09ICdGQUlMRUQnIF0KICAgICAgICAgICAgIGlmIGZhaWxlZF90ZXN0Y2FzZXM6CiAgICAgICAgICAgICAgICAgZmFpbGVkX3Rlc3RzW3NlY3Rpb25dID0gZmFpbGVkX3Rlc3RjYXNlcwogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy93ZXN0b24ucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy93ZXN0b24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWMyOWVjYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3dlc3Rvbi5weQpAQCAtMCwwICsxLDY5IEBACisjCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKyMKKworZnJvbSBvZXFhLnJ1bnRpbWUuY2FzZSBpbXBvcnQgT0VSdW50aW1lVGVzdENhc2UKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kZXBlbmRzIGltcG9ydCBPRVRlc3REZXBlbmRzCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGF0YSBpbXBvcnQgc2tpcElmTm90RmVhdHVyZQorZnJvbSBvZXFhLnJ1bnRpbWUuZGVjb3JhdG9yLnBhY2thZ2UgaW1wb3J0IE9FSGFzUGFja2FnZQoraW1wb3J0IHRocmVhZGluZworaW1wb3J0IHRpbWUKKworY2xhc3MgV2VzdG9uVGVzdChPRVJ1bnRpbWVUZXN0Q2FzZSk6CisgICAgd2VzdG9uX2xvZ19maWxlID0gJy90bXAvd2VzdG9uLmxvZycKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy50Yy50YXJnZXQucnVuKCdybSAlcycgJSBjbHMud2VzdG9uX2xvZ19maWxlKQorCisgICAgQE9FVGVzdERlcGVuZHMoWydzc2guU1NIVGVzdC50ZXN0X3NzaCddKQorICAgIEBPRUhhc1BhY2thZ2UoWyd3ZXN0b24nXSkKKyAgICBkZWYgdGVzdF93ZXN0b25fcnVubmluZyhzZWxmKToKKyAgICAgICAgY21kID0nJXMgfCBncmVwIFt3XWVzdG9uLWRlc2t0b3Atc2hlbGwnICUgc2VsZi50Yy50YXJnZXRfY21kc1sncHMnXQorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bihjbWQpCisgICAgICAgIG1zZyA9ICgnV2VzdG9uIGRvZXMgbm90IGFwcGVhciB0byBiZSBydW5uaW5nICVzJyAlCisgICAgICAgICAgICAgIHNlbGYudGFyZ2V0LnJ1bihzZWxmLnRjLnRhcmdldF9jbWRzWydwcyddKVsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZz1tc2cpCisKKyAgICBkZWYgZ2V0X3Byb2Nlc3Nlc19vZihzZWxmLCB0YXJnZXQsIGVycm9yX21zZyk6CisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdwaWRvZiAlcycgJSB0YXJnZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2c9J1JldHJpZXZlICVzICglcykgcHJvY2Vzc2VzIGVycm9yOiAlcycgJSAodGFyZ2V0LCBlcnJvcl9tc2csIG91dHB1dCkpCisgICAgICAgIHJldHVybiBvdXRwdXQuc3BsaXQoIiAiKQorCisgICAgZGVmIGdldF93ZXN0b25fY29tbWFuZChzZWxmLCBjbWQpOgorICAgICAgICByZXR1cm4gJ2V4cG9ydCBYREdfUlVOVElNRV9ESVI9L3J1bi91c2VyLzA7IGV4cG9ydCBXQVlMQU5EX0RJU1BMQVk9d2F5bGFuZC0wOyAlcycgJSBjbWQKKworICAgIGRlZiBydW5fd2VzdG9uX2luaXQoc2VsZik6CisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bihzZWxmLmdldF93ZXN0b25fY29tbWFuZCgnd2VzdG9uIC0tbG9nPSVzJyAlIHNlbGYud2VzdG9uX2xvZ19maWxlKSkKKworICAgIGRlZiBnZXRfbmV3X3dheWxhbmRfcHJvY2Vzc2VzKHNlbGYsIGV4aXN0aW5nX3dsX3Byb2Nlc3Nlcyk6CisgICAgICAgIHRyeV9jbnQgPSAwCisgICAgICAgIHdoaWxlIHRyeV9jbnQgPCA1OgorICAgICAgICAgICAgdGltZS5zbGVlcCg1ICsgNSp0cnlfY250KQorICAgICAgICAgICAgdHJ5X2NudCArPSAxCisgICAgICAgICAgICB3bF9wcm9jZXNzZXMgPSBzZWxmLmdldF9wcm9jZXNzZXNfb2YoJ3dlc3Rvbi1kZXNrdG9wLXNoZWxsJywgJ2V4aXN0aW5nIGFuZCBuZXcnKQorICAgICAgICAgICAgbmV3X3dsX3Byb2Nlc3NlcyA9IFt4IGZvciB4IGluIHdsX3Byb2Nlc3NlcyBpZiB4IG5vdCBpbiBleGlzdGluZ193bF9wcm9jZXNzZXNdCisgICAgICAgICAgICBpZiBuZXdfd2xfcHJvY2Vzc2VzOgorICAgICAgICAgICAgICAgIHJldHVybiBuZXdfd2xfcHJvY2Vzc2VzLCB0cnlfY250CisKKyAgICAgICAgcmV0dXJuIG5ld193bF9wcm9jZXNzZXMsIHRyeV9jbnQKKworICAgIEBPRUhhc1BhY2thZ2UoWyd3ZXN0b24nXSkKKyAgICBkZWYgdGVzdF93ZXN0b25faW5mbyhzZWxmKToKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oc2VsZi5nZXRfd2VzdG9uX2NvbW1hbmQoJ3dlc3Rvbi1pbmZvJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2c9J3dlc3Rvbi1pbmZvIGVycm9yOiAlcycgJSBvdXRwdXQpCisKKyAgICBAT0VIYXNQYWNrYWdlKFsnd2VzdG9uJ10pCisgICAgZGVmIHRlc3Rfd2VzdG9uX2Nhbl9pbml0aWFsaXplX25ld193YXlsYW5kX2NvbXBvc2l0b3Ioc2VsZik6CisgICAgICAgIGV4aXN0aW5nX3dsX3Byb2Nlc3NlcyA9IHNlbGYuZ2V0X3Byb2Nlc3Nlc19vZignd2VzdG9uLWRlc2t0b3Atc2hlbGwnLCAnZXhpc3RpbmcnKQorICAgICAgICBleGlzdGluZ193ZXN0b25fcHJvY2Vzc2VzID0gc2VsZi5nZXRfcHJvY2Vzc2VzX29mKCd3ZXN0b24nLCAnZXhpc3RpbmcnKQorCisgICAgICAgIHdlc3Rvbl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLnJ1bl93ZXN0b25faW5pdCkKKyAgICAgICAgd2VzdG9uX3RocmVhZC5zdGFydCgpCisgICAgICAgIG5ld193bF9wcm9jZXNzZXMsIHRyeV9jbnQgPSBzZWxmLmdldF9uZXdfd2F5bGFuZF9wcm9jZXNzZXMoZXhpc3Rpbmdfd2xfcHJvY2Vzc2VzKQorICAgICAgICBleGlzdGluZ19hbmRfbmV3X3dlc3Rvbl9wcm9jZXNzZXMgPSBzZWxmLmdldF9wcm9jZXNzZXNfb2YoJ3dlc3RvbicsICdleGlzdGluZyBhbmQgbmV3JykKKyAgICAgICAgbmV3X3dlc3Rvbl9wcm9jZXNzZXMgPSBbeCBmb3IgeCBpbiBleGlzdGluZ19hbmRfbmV3X3dlc3Rvbl9wcm9jZXNzZXMgaWYgeCBub3QgaW4gZXhpc3Rpbmdfd2VzdG9uX3Byb2Nlc3Nlc10KKyAgICAgICAgZm9yIHcgaW4gbmV3X3dlc3Rvbl9wcm9jZXNzZXM6CisgICAgICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ2tpbGwgLTkgJXMnICUgdykKKyAgICAgICAgX18sIHdlc3Rvbl9sb2cgPSBzZWxmLnRhcmdldC5ydW4oJ2NhdCAlcycgJSBzZWxmLndlc3Rvbl9sb2dfZmlsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5ld193bF9wcm9jZXNzZXMsIG1zZz0nQ291bGQgbm90IGdldCBuZXcgd2VzdG9uLWRlc2t0b3Atc2hlbGwgcHJvY2Vzc2VzICglcywgdHJ5X2NudDolcykgd2VzdG9uIGxvZzogJXMnICUgKG5ld193bF9wcm9jZXNzZXMsIHRyeV9jbnQsIHdlc3Rvbl9sb2cpKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY29udGV4dC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2NvbnRleHQucHkKaW5kZXggZWY3MzhhMy4uMzgyNmYyNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY29udGV4dC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jb250ZXh0LnB5CkBAIC00Nyw2ICs0Nyw3IEBACiAgICAgZGVmYXVsdF9kYXRhID0gTm9uZQogICAgIGRlZmF1bHRfdGVzdF9kYXRhID0gJ2RhdGEvdGVzdGRhdGEuanNvbicKICAgICBkZWZhdWx0X3Rlc3RzID0gJycKKyAgICBkZWZhdWx0X2pzb25fcmVzdWx0X2RpciA9ICclcy1yZXN1bHRzJyAlIG5hbWUKIAogICAgIGRlZmF1bHRfdGFyZ2V0X3R5cGUgPSAnc2ltcGxlcmVtb3RlJwogICAgIGRlZmF1bHRfbWFuaWZlc3QgPSAnZGF0YS9tYW5pZmVzdCcKQEAgLTc3LDcgKzc4LDcgQEAKIAogICAgICAgICBydW50aW1lX2dyb3VwLmFkZF9hcmd1bWVudCgnLS1wYWNrYWdlcy1tYW5pZmVzdCcsIGFjdGlvbj0nc3RvcmUnLAogICAgICAgICAgICAgICAgIGRlZmF1bHQ9c2VsZi5kZWZhdWx0X21hbmlmZXN0LAotICAgICAgICAgICAgICAgIGhlbHA9IlBhY2thZ2UgbWFuaWZlc3Qgb2YgdGhlIGltYWdlIHVuZGVyIHRlc3RpLCBkZWZhdWx0OiAlcyIgXAorICAgICAgICAgICAgICAgIGhlbHA9IlBhY2thZ2UgbWFuaWZlc3Qgb2YgdGhlIGltYWdlIHVuZGVyIHRlc3QsIGRlZmF1bHQ6ICVzIiBcCiAgICAgICAgICAgICAgICAgJSBzZWxmLmRlZmF1bHRfbWFuaWZlc3QpCiAKICAgICAgICAgcnVudGltZV9ncm91cC5hZGRfYXJndW1lbnQoJy0tZXh0cmFjdC1kaXInLCBhY3Rpb249J3N0b3JlJywKQEAgLTk4LDYgKzk5LDEyIEBACiAgICAgICAgICAgICAgICAgdGFyZ2V0X2lwID0gdGFyZ2V0X2lwX3BvcnRbMF0KICAgICAgICAgICAgICAgICBrd2FyZ3NbJ3BvcnQnXSA9IHRhcmdldF9pcF9wb3J0WzFdCiAKKyAgICAgICAgaWYgc2VydmVyX2lwOgorICAgICAgICAgICAgc2VydmVyX2lwX3BvcnQgPSBzZXJ2ZXJfaXAuc3BsaXQoJzonKQorICAgICAgICAgICAgaWYgbGVuKHNlcnZlcl9pcF9wb3J0KSA9PSAyOgorICAgICAgICAgICAgICAgIHNlcnZlcl9pcCA9IHNlcnZlcl9pcF9wb3J0WzBdCisgICAgICAgICAgICAgICAga3dhcmdzWydzZXJ2ZXJfcG9ydCddID0gaW50KHNlcnZlcl9pcF9wb3J0WzFdKQorCiAgICAgICAgIGlmIHRhcmdldF90eXBlID09ICdzaW1wbGVyZW1vdGUnOgogICAgICAgICAgICAgdGFyZ2V0ID0gT0VTU0hUYXJnZXQobG9nZ2VyLCB0YXJnZXRfaXAsIHNlcnZlcl9pcCwgKiprd2FyZ3MpCiAgICAgICAgIGVsaWYgdGFyZ2V0X3R5cGUgPT0gJ3FlbXUnOgpAQCAtMTc4LDcgKzE4NSw3IEBACiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIG9iaiA9IE5vbmUKICAgICAgICAgcmV0dXJuIG9iagotICAgICAgICAKKwogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgcmVhZFBhY2thZ2VzTWFuaWZlc3QobWFuaWZlc3QpOgogICAgICAgICBpZiBub3QgbWFuaWZlc3Qgb3Igbm90IG9zLnBhdGguZXhpc3RzKG1hbmlmZXN0KToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYnVpbGRjcGlvLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9idWlsZGNwaW8ucHkKaW5kZXggMGE1ZTY4ZC4uOTAyZTkzZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9idWlsZGNwaW8ucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9idWlsZGNwaW8ucHkKQEAgLTE3LDEwICsxNywxMCBAQAogICAgICIiIgogICAgIGRlZiB0ZXN0X2NwaW8oc2VsZik6CiAgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeD0iY3Bpby0iLCBkaXI9c2VsZi50Yy5zZGtfZGlyKSBhcyB0ZXN0ZGlyOgotICAgICAgICAgICAgdGFyYmFsbCA9IHNlbGYuZmV0Y2godGVzdGRpciwgc2VsZi50ZFsiRExfRElSIl0sICJodHRwczovL2Z0cC5nbnUub3JnL2dudS9jcGlvL2NwaW8tMi4xMi50YXIuZ3oiKQorICAgICAgICAgICAgdGFyYmFsbCA9IHNlbGYuZmV0Y2godGVzdGRpciwgc2VsZi50ZFsiRExfRElSIl0sICJodHRwczovL2Z0cC5nbnUub3JnL2dudS9jcGlvL2NwaW8tMi4xMy50YXIuZ3oiKQogCiAgICAgICAgICAgICBkaXJzID0ge30KLSAgICAgICAgICAgIGRpcnNbInNvdXJjZSJdID0gb3MucGF0aC5qb2luKHRlc3RkaXIsICJjcGlvLTIuMTIiKQorICAgICAgICAgICAgZGlyc1sic291cmNlIl0gPSBvcy5wYXRoLmpvaW4odGVzdGRpciwgImNwaW8tMi4xMyIpCiAgICAgICAgICAgICBkaXJzWyJidWlsZCJdID0gb3MucGF0aC5qb2luKHRlc3RkaXIsICJidWlsZCIpCiAgICAgICAgICAgICBkaXJzWyJpbnN0YWxsIl0gPSBvcy5wYXRoLmpvaW4odGVzdGRpciwgImluc3RhbGwiKQogCkBAIC0yOCw3ICsyOCw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2RpcihkaXJzWyJzb3VyY2UiXSkpCiAgICAgICAgICAgICBvcy5tYWtlZGlycyhkaXJzWyJidWlsZCJdKQogCi0gICAgICAgICAgICBzZWxmLl9ydW4oImNkIHtidWlsZH0gJiYge3NvdXJjZX0vY29uZmlndXJlICRDT05GSUdVUkVfRkxBR1MiLmZvcm1hdCgqKmRpcnMpKQorICAgICAgICAgICAgc2VsZi5fcnVuKCJjZCB7YnVpbGR9ICYmIHtzb3VyY2V9L2NvbmZpZ3VyZSAtLWRpc2FibGUtbWFpbnRhaW5lci1tb2RlICRDT05GSUdVUkVfRkxBR1MiLmZvcm1hdCgqKmRpcnMpKQogICAgICAgICAgICAgc2VsZi5fcnVuKCJjZCB7YnVpbGR9ICYmIG1ha2UgLWoiLmZvcm1hdCgqKmRpcnMpKQogICAgICAgICAgICAgc2VsZi5fcnVuKCJjZCB7YnVpbGR9ICYmIG1ha2UgaW5zdGFsbCBERVNURElSPXtpbnN0YWxsfSIuZm9ybWF0KCoqZGlycykpCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY29udGV4dC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY29udGV4dC5weQppbmRleCAwOWU3N2MxLi4wMWMzOGMyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2RrL2NvbnRleHQucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jb250ZXh0LnB5CkBAIC0xMzYsNyArMTM2LDcgQEAKICAgICAgICAgc2RrX2VudnMgPSBPRVNES1Rlc3RDb250ZXh0RXhlY3V0b3IuX2dldF9zZGtfZW52aXJvbnMoYXJncy5zZGtfZGlyKQogICAgICAgICBpZiBub3Qgc2RrX2VudnM6CiAgICAgICAgICAgICByYWlzZSBhcmdwYXJzZV9vZS5Bcmd1bWVudFVzYWdlRXJyb3IoIk5vIGF2YWlsYWJsZSBTREsgIlwKLSAgICAgICAgICAgICAgICAgICAiZW52aXJvbWVudHMgZm91bmQgYXQgJXMiICUgYXJncy5zZGtfZGlyLCBzZWxmLm5hbWUpCisgICAgICAgICAgICAgICAgICAgImVudmlyb25tZW50cyBmb3VuZCBhdCAlcyIgJSBhcmdzLnNka19kaXIsIHNlbGYubmFtZSkKIAogICAgICAgICBpZiBhcmdzLmxpc3Rfc2RrX2VudjoKICAgICAgICAgICAgIHNlbGYuX2Rpc3BsYXlfc2RrX2VudnMobG9nZ2VyLmluZm8sIGFyZ3MsIHNka19lbnZzKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3Nka2V4dC90ZXN0c2RrLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3Nka2V4dC90ZXN0c2RrLnB5CmluZGV4IDc4NWI1ZGQuLmM1YzQ2ZGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvdGVzdHNkay5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L3Rlc3RzZGsucHkKQEAgLTI1LDExICsyNSw4IEBACiAKICAgICAgICAgc3VicHJvY2Vzc3R3ZWFrLmVycm9yc19oYXZlX291dHB1dCgpCiAKLSAgICAgICAgIyBleHRlbnNpYmxlIHNkayBjYW4gYmUgY29udGFtaW5hdGVkIGlmIG5hdGl2ZSBwcm9ncmFtcyBhcmUKLSAgICAgICAgIyBpbiBQQVRILCBpLmUuIHVzZSBwZXJsLW5hdGl2ZSBpbnN0ZWFkIG9mIGVTREsgb25lLgotICAgICAgICBwYXRoc190b19hdm9pZCA9IFtkLmdldFZhcignU1RBR0lOR19ESVInKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdCQVNFX1dPUktESVInKV0KLSAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gYXZvaWRfcGF0aHNfaW5fZW52aXJvbihwYXRoc190b19hdm9pZCkKKyAgICAgICAgIyBXZSBuZWVkIHRoZSBvcmlnaW5hbCBQQVRIIGZvciB0ZXN0aW5nIHRoZSBlU0RLLCBub3Qgd2l0aCBvdXIgbWFuaXB1bGF0aW9ucworICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gPSBkLmdldFZhcigiQkJfT1JJR0VOViIsIEZhbHNlKS5nZXRWYXIoIlBBVEgiKQogCiAgICAgICAgIHRjbmFtZSA9IGQuZXhwYW5kKCIke1NES19ERVBMT1l9LyR7VE9PTENIQUlORVhUX09VVFBVVE5BTUV9LnNoIikKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHRjbmFtZSk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlLnB5CmluZGV4IGFjMzMwOGQuLmRjYWQ0ZjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlLnB5CkBAIC02LDcgKzYsNiBAQAogCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBnbG9iCiBpbXBvcnQgZXJybm8KIGZyb20gdW5pdHRlc3QudXRpbCBpbXBvcnQgc2FmZV9yZXByCkBAIC0zMCw5ICsyOSw3IEBACiAgICAgICAgIGNscy5idWlsZGRpciA9IGNscy50Yy5jb25maWdfcGF0aHNbJ2J1aWxkZGlyJ10KIAogICAgICAgICBjbHMubG9jYWxjb25mX3BhdGggPSBjbHMudGMuY29uZmlnX3BhdGhzWydsb2NhbGNvbmYnXQotICAgICAgICBjbHMubG9jYWxjb25mX2JhY2t1cCA9IGNscy50Yy5jb25maWdfcGF0aHNbJ2xvY2FsY29uZl9jbGFzc19iYWNrdXAnXQogICAgICAgICBjbHMubG9jYWxfYmJsYXllcnNfcGF0aCA9IGNscy50Yy5jb25maWdfcGF0aHNbJ2JibGF5ZXJzJ10KLSAgICAgICAgY2xzLmxvY2FsX2JibGF5ZXJzX2JhY2t1cCA9IGNscy50Yy5jb25maWdfcGF0aHNbJ2JibGF5ZXJzX2NsYXNzX2JhY2t1cCddCiAKICAgICAgICAgY2xzLnRlc3RpbmNfcGF0aCA9IG9zLnBhdGguam9pbihjbHMudGMuY29uZmlnX3BhdGhzWydidWlsZGRpciddLAogICAgICAgICAgICAgICAgICJjb25mL3NlbGZ0ZXN0LmluYyIpCkBAIC00Myw4ICs0MCw3IEBACiAKICAgICAgICAgY2xzLl90cmFja19mb3JfY2xlYW51cCA9IFsKICAgICAgICAgICAgIGNscy50ZXN0aW5jX3BhdGgsIGNscy50ZXN0aW5jX2JibGF5ZXJzX3BhdGgsCi0gICAgICAgICAgICBjbHMubWFjaGluZWluY19wYXRoLCBjbHMubG9jYWxjb25mX2JhY2t1cCwKLSAgICAgICAgICAgIGNscy5sb2NhbF9iYmxheWVyc19iYWNrdXBdCisgICAgICAgICAgICBjbHMubWFjaGluZWluY19wYXRoXQogCiAgICAgICAgIGNscy5hZGRfaW5jbHVkZSgpCiAKQEAgLTEwMiwzMCArOTgsNiBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc3VwZXIoT0VTZWxmdGVzdFRlc3RDYXNlLCBzZWxmKS5zZXRVcCgpCiAgICAgICAgIG9zLmNoZGlyKHNlbGYuYnVpbGRkaXIpCi0gICAgICAgICMgQ2hlY2sgaWYgbG9jYWwuY29uZiBvciBiYmxheWVycy5jb25mIGZpbGVzIGJhY2t1cCBleGlzdHMKLSAgICAgICAgIyBmcm9tIGEgcHJldmlvdXMgZmFpbGVkIHRlc3QgYW5kIHJlc3RvcmUgdGhlbQotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzZWxmLmxvY2FsY29uZl9iYWNrdXApIG9yIG9zLnBhdGguaXNmaWxlKAotICAgICAgICAgICAgICAgIHNlbGYubG9jYWxfYmJsYXllcnNfYmFja3VwKToKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJcCi1Gb3VuZCBhIGxvY2FsLmNvbmYgYW5kL29yIGJibGF5ZXJzLmNvbmYgYmFja3VwIGZyb20gYSBwcmV2aW91c2x5IGFib3J0ZWQgdGVzdC5cCi1SZXN0b3JpbmcgdGhlc2UgZmlsZXMgbm93LCBidXQgdGVzdHMgc2hvdWxkIGJlIHJlLWV4ZWN1dGVkIGZyb20gYSBjbGVhbiBlbnZpcm9ubWVudFwKLXRvIGVuc3VyZSBhY2N1cmF0ZSByZXN1bHRzLiIpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYubG9jYWxjb25mX2JhY2t1cCwgc2VsZi5sb2NhbGNvbmZfcGF0aCkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYubG9jYWxfYmJsYXllcnNfYmFja3VwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvY2FsX2JibGF5ZXJzX3BhdGgpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBiYWNrdXAgbG9jYWwuY29uZiBhbmQgYmJsYXllcnMuY29uZgotICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYubG9jYWxjb25mX3BhdGgsIHNlbGYubG9jYWxjb25mX2JhY2t1cCkKLSAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzZWxmLmxvY2FsX2JibGF5ZXJzX3BhdGgsIHNlbGYubG9jYWxfYmJsYXllcnNfYmFja3VwKQotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkNyZWF0aW5nIGxvY2FsLmNvbmYgYW5kIGJibGF5ZXJzLmNvbmYgYmFja3Vwcy4iKQogICAgICAgICAjIHdlIGRvbid0IGtub3cgd2hhdCB0aGUgcHJldmlvdXMgdGVzdCBsZWZ0IGFyb3VuZCBpbiBjb25maWcgb3IgaW5jIGZpbGVzCiAgICAgICAgICMgaWYgaXQgZmFpbGVkIHNvIHdlIG5lZWQgYSBmcmVzaCBzdGFydAogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYXJjaGl2ZXIucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYXJjaGl2ZXIucHkKaW5kZXggZjg2NzJmOC4uNjA2ZWFhYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2FyY2hpdmVyLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9hcmNoaXZlci5weQpAQCAtMTI5LDMgKzEyOSwxMjggQEAKICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCiAKICAgICAgICAgYml0YmFrZSgnLW4gY29yZS1pbWFnZS1zYXRvJykKKworICAgIGRlZiBfdGVzdF9hcmNoaXZlcl9tb2RlKHNlbGYsIG1vZGUsIHRhcmdldF9maWxlX25hbWUsIGV4dHJhX2NvbmZpZz1Ob25lKToKKyAgICAgICAgdGFyZ2V0ID0gInNlbGZ0ZXN0LWVkIgorCisgICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gImFyY2hpdmVyIlxuJworICAgICAgICBmZWF0dXJlcyArPSAgJ0FSQ0hJVkVSX01PREVbc3JjXSA9ICIlcyJcbicgJSAobW9kZSkKKyAgICAgICAgaWYgZXh0cmFfY29uZmlnOgorICAgICAgICAgICAgZmVhdHVyZXMgKz0gZXh0cmFfY29uZmlnCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgIGJpdGJha2UoJy1jIGNsZWFuICVzJyAlICh0YXJnZXQpKQorICAgICAgICBiaXRiYWtlKCctYyBkZXBsb3lfYXJjaGl2ZXMgJXMnICUgKHRhcmdldCkpCisKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnREVQTE9ZX0RJUl9TUkMnLCAnVEFSR0VUX1NZUyddKQorICAgICAgICBnbG9iX3N0ciA9IG9zLnBhdGguam9pbihiYl92YXJzWydERVBMT1lfRElSX1NSQyddLCBiYl92YXJzWydUQVJHRVRfU1lTJ10sICclcy0qJyAlICh0YXJnZXQpKQorICAgICAgICBnbG9iX3Jlc3VsdCA9IGdsb2IuZ2xvYihnbG9iX3N0cikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdsb2JfcmVzdWx0LCAnTWlzc2luZyBhcmNoaXZlciBkaXJlY3RvcnkgZm9yICVzJyAlICh0YXJnZXQpKQorCisgICAgICAgIGFyY2hpdmVfcGF0aCA9IG9zLnBhdGguam9pbihnbG9iX3Jlc3VsdFswXSwgdGFyZ2V0X2ZpbGVfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGFyY2hpdmVfcGF0aCksICdNaXNzaW5nIGFyY2hpdmUgZmlsZSAlcycgJSAodGFyZ2V0X2ZpbGVfbmFtZSkpCisKKyAgICBkZWYgdGVzdF9hcmNoaXZlcl9tb2RlX29yaWdpbmFsKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBhcmNoaXZlciB3b3JrcyB3aXRoIGBBUkNISVZFUl9NT0RFW3NyY10gPSAib3JpZ2luYWwiYC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fdGVzdF9hcmNoaXZlcl9tb2RlKCdvcmlnaW5hbCcsICdlZC0xLjE0LjEudGFyLmx6JykKKworICAgIGRlZiB0ZXN0X2FyY2hpdmVyX21vZGVfcGF0Y2hlZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgYXJjaGl2ZXIgd29ya3Mgd2l0aCBgQVJDSElWRVJfTU9ERVtzcmNdID0gInBhdGNoZWQiYC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fdGVzdF9hcmNoaXZlcl9tb2RlKCdwYXRjaGVkJywgJ3NlbGZ0ZXN0LWVkLTEuMTQuMS1yMC1wYXRjaGVkLnRhci5neicpCisKKyAgICBkZWYgdGVzdF9hcmNoaXZlcl9tb2RlX2NvbmZpZ3VyZWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIGFyY2hpdmVyIHdvcmtzIHdpdGggYEFSQ0hJVkVSX01PREVbc3JjXSA9ICJjb25maWd1cmVkImAuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX3Rlc3RfYXJjaGl2ZXJfbW9kZSgnY29uZmlndXJlZCcsICdzZWxmdGVzdC1lZC0xLjE0LjEtcjAtY29uZmlndXJlZC50YXIuZ3onKQorCisgICAgZGVmIHRlc3RfYXJjaGl2ZXJfbW9kZV9yZWNpcGUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIGFyY2hpdmVyIHdvcmtzIHdpdGggYEFSQ0hJVkVSX01PREVbcmVjaXBlXSA9ICIxImAuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX3Rlc3RfYXJjaGl2ZXJfbW9kZSgncGF0Y2hlZCcsICdzZWxmdGVzdC1lZC0xLjE0LjEtcjAtcmVjaXBlLnRhci5neicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQVJDSElWRVJfTU9ERVtyZWNpcGVdID0gIjEiXG4nKQorCisgICAgZGVmIHRlc3RfYXJjaGl2ZXJfbW9kZV9kaWZmKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBhcmNoaXZlciB3b3JrcyB3aXRoIGBBUkNISVZFUl9NT0RFW2RpZmZdID0gIjEiYC4KKyAgICAgICAgRXhjbHVzaW9ucyBjb250cm9sbGVkIGJ5IGBBUkNISVZFUl9NT0RFW2RpZmYtZXhjbHVkZV1gIGFyZSBub3QgeWV0IHRlc3RlZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fdGVzdF9hcmNoaXZlcl9tb2RlKCdwYXRjaGVkJywgJ3NlbGZ0ZXN0LWVkLTEuMTQuMS1yMC1kaWZmLmd6JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBUkNISVZFUl9NT0RFW2RpZmZdID0gIjEiXG4nKQorCisgICAgZGVmIHRlc3RfYXJjaGl2ZXJfbW9kZV9kdW1wZGF0YShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgYXJjaGl2ZXIgd29ya3Mgd2l0aCBgQVJDSElWRVJfTU9ERVtkdW1wZGF0YV0gPSAiMSJgLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl90ZXN0X2FyY2hpdmVyX21vZGUoJ3BhdGNoZWQnLCAnc2VsZnRlc3QtZWQtMS4xNC4xLXIwLXNob3dkYXRhLmR1bXAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FSQ0hJVkVSX01PREVbZHVtcGRhdGFdID0gIjEiXG4nKQorCisgICAgZGVmIHRlc3RfYXJjaGl2ZXJfbW9kZV9taXJyb3Ioc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIGFyY2hpdmVyIHdvcmtzIHdpdGggYEFSQ0hJVkVSX01PREVbc3JjXSA9ICJtaXJyb3IiYC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fdGVzdF9hcmNoaXZlcl9tb2RlKCdtaXJyb3InLCAnZWQtMS4xNC4xLnRhci5seicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTID0gIjEiXG4nKQorCisgICAgZGVmIHRlc3RfYXJjaGl2ZXJfbW9kZV9taXJyb3JfZXhjbHVkZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIGFyY2hpdmVyIHdvcmtzIHdpdGggYEFSQ0hJVkVSX01PREVbc3JjXSA9ICJtaXJyb3IiYCBhbmQKKyAgICAgICAgY29ycmVjdGx5IGV4Y2x1ZGVzIGFuIGFyY2hpdmUgd2hlbiBpdHMgVVJMIG1hdGNoZXMKKyAgICAgICAgYEFSQ0hJVkVSX01JUlJPUl9FWENMVURFYC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgdGFyZ2V0PSdzZWxmdGVzdC1lZCcKKyAgICAgICAgdGFyZ2V0X2ZpbGVfbmFtZSA9ICdlZC0xLjE0LjEudGFyLmx6JworCisgICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gImFyY2hpdmVyIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnQVJDSElWRVJfTU9ERVtzcmNdID0gIm1pcnJvciJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0JCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUyA9ICIxIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnQVJDSElWRVJfTUlSUk9SX0VYQ0xVREUgPSAiJHtHTlVfTUlSUk9SfSJcbicKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gJXMnICUgKHRhcmdldCkpCisgICAgICAgIGJpdGJha2UoJy1jIGRlcGxveV9hcmNoaXZlcyAlcycgJSAodGFyZ2V0KSkKKworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydERVBMT1lfRElSX1NSQycsICdUQVJHRVRfU1lTJ10pCisgICAgICAgIGdsb2Jfc3RyID0gb3MucGF0aC5qb2luKGJiX3ZhcnNbJ0RFUExPWV9ESVJfU1JDJ10sIGJiX3ZhcnNbJ1RBUkdFVF9TWVMnXSwgJyVzLSonICUgKHRhcmdldCkpCisgICAgICAgIGdsb2JfcmVzdWx0ID0gZ2xvYi5nbG9iKGdsb2Jfc3RyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZ2xvYl9yZXN1bHQsICdNaXNzaW5nIGFyY2hpdmVyIGRpcmVjdG9yeSBmb3IgJXMnICUgKHRhcmdldCkpCisKKyAgICAgICAgYXJjaGl2ZV9wYXRoID0gb3MucGF0aC5qb2luKGdsb2JfcmVzdWx0WzBdLCB0YXJnZXRfZmlsZV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGFyY2hpdmVfcGF0aCksICdGYWlsZWQgdG8gZXhjbHVkZSBhcmNoaXZlIGZpbGUgJXMnICUgKHRhcmdldF9maWxlX25hbWUpKQorCisgICAgZGVmIHRlc3RfYXJjaGl2ZXJfbW9kZV9taXJyb3JfY29tYmluZWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIGFyY2hpdmVyIHdvcmtzIHdpdGggYEFSQ0hJVkVSX01PREVbc3JjXSA9ICJtaXJyb3IiYAorICAgICAgICBhbmQgYEFSQ0hJVkVSX01PREVbbWlycm9yXSA9ICJjb21iaW5lZCJgLiBBcmNoaXZlcyBmb3IgbXVsdGlwbGUgcmVjaXBlcworICAgICAgICBzaG91bGQgYWxsIGVuZCB1cCBpbiB0aGUgJ21pcnJvcicgZGlyZWN0b3J5LgorICAgICAgICAiIiIKKworICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJhcmNoaXZlciJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0FSQ0hJVkVSX01PREVbc3JjXSA9ICJtaXJyb3IiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdBUkNISVZFUl9NT0RFW21pcnJvcl0gPSAiY29tYmluZWQiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdCQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMgPSAiMSJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0NPUFlMRUZUX0xJQ0VOU0VfSU5DTFVERSA9ICIqIlxuJworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICBmb3IgdGFyZ2V0IGluIFsnc2VsZnRlc3QtZWQnLCAnc2VsZnRlc3QtaGFyZGxpbmsnXToKKyAgICAgICAgICAgIGJpdGJha2UoJy1jIGNsZWFuICVzJyAlICh0YXJnZXQpKQorICAgICAgICAgICAgYml0YmFrZSgnLWMgZGVwbG95X2FyY2hpdmVzICVzJyAlICh0YXJnZXQpKQorCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0RFUExPWV9ESVJfU1JDJ10pCisgICAgICAgIGZvciB0YXJnZXRfZmlsZV9uYW1lIGluIFsnZWQtMS4xNC4xLnRhci5seicsICdoZWxsby5jJ106CisgICAgICAgICAgICBnbG9iX3N0ciA9IG9zLnBhdGguam9pbihiYl92YXJzWydERVBMT1lfRElSX1NSQyddLCAnbWlycm9yJywgdGFyZ2V0X2ZpbGVfbmFtZSkKKyAgICAgICAgICAgIGdsb2JfcmVzdWx0ID0gZ2xvYi5nbG9iKGdsb2Jfc3RyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdsb2JfcmVzdWx0LCAnTWlzc2luZyBhcmNoaXZlIGZpbGUgJXMnICUgKHRhcmdldF9maWxlX25hbWUpKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2RldnRvb2wucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGV2dG9vbC5weQppbmRleCA1N2U2NjYyLi41ODg2ODYyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGV2dG9vbC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGV2dG9vbC5weQpAQCAtNTExLDYgKzUxMSwyNiBAQAogICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybC5yZXBsYWNlKHRlc3R2ZXIsICcke1BWfScpCiAgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCiAKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2FkZF9ucG0oc2VsZik6CisgICAgICAgIHBuID0gJ3Nhdm9pcmZhaXJlbGludXgtbm9kZS1zZXJ2ZXItZXhhbXBsZScKKyAgICAgICAgcHYgPSAnMS4wLjAnCisgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1Ac2F2b2lyZmFpcmVsaW51eC9ub2RlLXNlcnZlci1leGFtcGxlO3ZlcnNpb249JyArIHB2CisgICAgICAgICMgVGVzdCBkZXZ0b29sIGFkZAorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuc3N0YXRlICVzJyAlIHBuKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYWRkIFwnJXNcJycgJSB1cmwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCBwbiwgJyVzXyVzLmJiJyAlIChwbiwgcHYpKSwgJ1JlY2lwZSBub3QgY3JlYXRlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCBwbiwgcG4sICducG0tc2hyaW5rd3JhcC5qc29uJyksICdTaHJpbmt3cmFwIG5vdCBjcmVhdGVkJykKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydEluKHBuLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIENsZWFuIHVwIGFueXRoaW5nIGluIHRoZSB3b3JrZGlyL3N5c3Jvb3Qvc3N0YXRlIGNhY2hlIChoYXZlIHRvIGRvIHRoaXMgKmFmdGVyKiBkZXZ0b29sIGFkZCBzaW5jZSB0aGUgcmVjaXBlIG9ubHkgZXhpc3RzIHRoZW4pCisgICAgICAgIGJpdGJha2UoJyVzIC1jIGNsZWFuc3N0YXRlJyAlIHBuKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBidWlsZAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYnVpbGQgJXMnICUgcG4pCisKIGNsYXNzIERldnRvb2xNb2RpZnlUZXN0cyhEZXZ0b29sQmFzZSk6CiAKICAgICBkZWYgdGVzdF9kZXZ0b29sX21vZGlmeShzZWxmKToKQEAgLTE3MjEsNyArMTc0MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyB0aGUga2VybmVsLgogICAgICAgICAgIiIiCiAgICAgICAgIGtlcm5lbF9wcm92aWRlciA9IGdldF9iYl92YXIoJ1BSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCcpCi0gICAgICAgICMgQ2xlYW4gdXAgdGhlIGVudmlyb21lbnQKKyAgICAgICAgIyBDbGVhbiB1cCB0aGUgZW52aXJvbm1lbnQKICAgICAgICAgYml0YmFrZSgnJXMgLWMgY2xlYW4nICUga2VybmVsX3Byb3ZpZGVyKQogICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCiAgICAgICAgIHRlbXBkaXJfY2ZnID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2NvbmZpZ19xYScpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGlzdHJvZGF0YS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kaXN0cm9kYXRhLnB5CmluZGV4IDY4YmE1NTYuLmUxY2ZjM2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kaXN0cm9kYXRhLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kaXN0cm9kYXRhLnB5CkBAIC00Miw4ICs0Miw5IEBACiAKICAgICBkZWYgdGVzdF9tYWludGFpbmVycyhzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6ICAgICBUZXN0IHRoYXQgb2UtY29yZSByZWNpcGVzIGhhdmUgYSBtYWludGFpbmVyCisgICAgICAgIFN1bW1hcnk6ICAgICBUZXN0IHRoYXQgb2UtY29yZSByZWNpcGVzIGhhdmUgYSBtYWludGFpbmVyIGFuZCBlbnRyaWVzIGluIG1haW50YWluZXJzIGxpc3QgaGF2ZSBhIHJlY2lwZQogICAgICAgICBFeHBlY3RlZDogICAgQWxsIG9lLWNvcmUgcmVjaXBlcyAoZXhjZXB0IGEgZmV3IHNwZWNpYWwgc3RhdGljL3Rlc3Rpbmcgb25lcykgc2hvdWxkIGhhdmUgYSBtYWludGFpbmVyIGxpc3RlZCBpbiBtYWludGFpbmVycy5pbmMgZmlsZS4KKyAgICAgICAgRXhwZWN0ZWQ6ICAgIEFsbCBlbnRyaWVzIGluIG1haW50YWluZXJzIGxpc3Qgc2hvdWxkIGhhdmUgYSByZWNpcGUgZmlsZSB0aGF0IG1hdGNoZXMgdGhlbQogICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQogICAgICAgICBBdXRob3I6ICAgICAgQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAgICAgICAgICIiIgpAQCAtNTQsNyArNTUsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgICAgICBmZWF0dXJlID0gJ3JlcXVpcmUgY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmNcbicKKyAgICAgICAgZGVmIGlzX21haW50YWluZXJfZXhjZXB0aW9uKGVudHJ5KToKKyAgICAgICAgICAgIGV4Y2VwdGlvbnMgPSBbIm11c2wiLCAibmV3bGliIiwgImxpbnV4LXlvY3RvIiwgImxpbnV4LWR1bW15IiwgIm1lc2EtZ2wiLCAibGliZ2ZvcnRyYW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiY3ZlLXVwZGF0ZS1kYi1uYXRpdmUiXQorICAgICAgICAgICAgZm9yIGkgaW4gZXhjZXB0aW9uczoKKyAgICAgICAgICAgICAgICAgaWYgaSBpbiBlbnRyeToKKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBmZWF0dXJlID0gJ3JlcXVpcmUgY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmNcbkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUICs9ICIgY29tbWVyY2lhbCJcblBBUlNFX0FMTF9SRUNJUEVTID0gIjEiXG4nCiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmUpCiAKICAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgpAQCAtNjIsNiArNzEsMTEgQEAKIAogICAgICAgICAgICAgd2l0aF9tYWludGFpbmVyX2xpc3QgPSBbXQogICAgICAgICAgICAgbm9fbWFpbnRhaW5lcl9saXN0ID0gW10KKworICAgICAgICAgICAgbWlzc2luZ19yZWNpcGVzID0gW10KKyAgICAgICAgICAgIHJlY2lwZXMgPSBbXQorICAgICAgICAgICAgcHJlZml4ID0gIlJFQ0lQRV9NQUlOVEFJTkVSX3BuLSIKKwogICAgICAgICAgICAgIyBXZSBjb3VsZCBoYXZlIHVzZWQgYWxsX3JlY2lwZXMoKSBoZXJlLCBidXQgdGhpcyBtZXRob2Qgd2lsbCBmaW5kCiAgICAgICAgICAgICAjIGV2ZXJ5IHJlY2lwZSBpZiB3ZSBldmVyIG1vdmUgdG8gc2V0dGluZyBSRUNJUEVfTUFJTlRBSU5FUiBpbiByZWNpcGUgZmlsZXMKICAgICAgICAgICAgICMgaW5zdGVhZCBvZiBtYWludGFpbmVycy5pbmMKQEAgLTcxLDYgKzg1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICByZCA9IHRpbmZvaWwucGFyc2VfcmVjaXBlX2ZpbGUoZm4sIGFwcGVuZHM9RmFsc2UpCiAgICAgICAgICAgICAgICAgcG4gPSByZC5nZXRWYXIoJ1BOJykKKyAgICAgICAgICAgICAgICByZWNpcGVzLmFwcGVuZChwbikKICAgICAgICAgICAgICAgICBpZiBpc19leGNlcHRpb24ocG4pOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGlmIHJkLmdldFZhcignUkVDSVBFX01BSU5UQUlORVInKToKQEAgLTc4LDYgKzkzLDE1IEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgbm9fbWFpbnRhaW5lcl9saXN0LmFwcGVuZCgocG4sIGZuKSkKIAorICAgICAgICAgICAgbWFpbnRhaW5lcnMgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmtleXMoKQorICAgICAgICAgICAgZm9yIGtleSBpbiBtYWludGFpbmVyczoKKyAgICAgICAgICAgICAgICAgaWYga2V5LnN0YXJ0c3dpdGgocHJlZml4KToKKyAgICAgICAgICAgICAgICAgICAgIHJlY2lwZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZXhwYW5kKGtleVtsZW4ocHJlZml4KTpdKQorICAgICAgICAgICAgICAgICAgICAgaWYgaXNfbWFpbnRhaW5lcl9leGNlcHRpb24ocmVjaXBlKToKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICAgaWYgcmVjaXBlIG5vdCBpbiByZWNpcGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgIG1pc3NpbmdfcmVjaXBlcy5hcHBlbmQocmVjaXBlKQorCiAgICAgICAgIGlmIG5vX21haW50YWluZXJfbGlzdDoKICAgICAgICAgICAgIHNlbGYuZmFpbCgiIiIKIFRoZSBmb2xsb3dpbmcgcmVjaXBlcyBkbyBub3QgaGF2ZSBhIG1haW50YWluZXIgYXNzaWduZWQgdG8gdGhlbS4gUGxlYXNlIGFkZCBhbiBlbnRyeSB0byBtZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jIGZpbGUuCkBAIC04NywzICsxMTEsOCBAQAogICAgICAgICAgICAgc2VsZi5mYWlsKCIiIgogVGhlIGxpc3Qgb2Ygb2UtY29yZSByZWNpcGVzIHdpdGggbWFpbnRhaW5lcnMgaXMgZW1wdHkuIFRoaXMgbWF5IGluZGljYXRlIHRoYXQgdGhlIHRlc3QgaGFzIHJlZ3Jlc3NlZCBhbmQgbmVlZHMgZml4aW5nLgogIiIiKQorCisgICAgICAgIGlmIG1pc3NpbmdfcmVjaXBlczoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIiIiCitVbmFibGUgdG8gZmluZCByZWNpcGVzIGZvciB0aGUgZm9sbG93aW5nIGVudHJpZXMgaW4gbWFpbnRhaW5lcnMuaW5jOgorIiIiICsgIlxuIi5qb2luKFsnJXMnICUgaSBmb3IgaSBpbiBtaXNzaW5nX3JlY2lwZXNdKSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9nY2MucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZ2NjLnB5CmluZGV4IDVhOTE3YjkuLjNlZmUxNTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9nY2MucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2djYy5weQpAQCAtMjEsOCArMjEsMTAgQEAKICAgICBkZWYgcnVuX2NoZWNrKHNlbGYsICpzdWl0ZXMsIHNzaCA9IE5vbmUpOgogICAgICAgICB0YXJnZXRzID0gc2V0KCkKICAgICAgICAgZm9yIHMgaW4gc3VpdGVzOgotICAgICAgICAgICAgaWYgcyBpbiBbImdjYyIsICJnKysiXToKLSAgICAgICAgICAgICAgICB0YXJnZXRzLmFkZCgiY2hlY2stZ2NjIikKKyAgICAgICAgICAgIGlmIHMgPT0gImdjYyI6CisgICAgICAgICAgICAgICAgdGFyZ2V0cy5hZGQoImNoZWNrLWdjYy1jIikKKyAgICAgICAgICAgIGVsaWYgcyA9PSAiZysrIjoKKyAgICAgICAgICAgICAgICB0YXJnZXRzLmFkZCgiY2hlY2stZ2NjLWMrKyIpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHRhcmdldHMuYWRkKCJjaGVjay10YXJnZXQte30iLmZvcm1hdChzKSkKIApAQCAtNzcsNyArNzksMTIgQEAKIEBPRVRlc3RUYWcoInRvb2xjaGFpbi11c2VyIikKIGNsYXNzIEdjY0Nyb3NzU2VsZlRlc3QoR2NjU2VsZlRlc3RCYXNlKToKICAgICBkZWYgdGVzdF9jcm9zc19nY2Moc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX2NoZWNrKCJnY2MiLCAiZysrIikKKyAgICAgICAgc2VsZi5ydW5fY2hlY2soImdjYyIpCisKK0BPRVRlc3RUYWcoInRvb2xjaGFpbi11c2VyIikKK2NsYXNzIEd4eENyb3NzU2VsZlRlc3QoR2NjU2VsZlRlc3RCYXNlKToKKyAgICBkZWYgdGVzdF9jcm9zc19neHgoc2VsZik6CisgICAgICAgIHNlbGYucnVuX2NoZWNrKCJnKysiKQogCiBAT0VUZXN0VGFnKCJ0b29sY2hhaW4tdXNlciIpCiBjbGFzcyBHY2NMaWJBdG9taWNTZWxmVGVzdChHY2NTZWxmVGVzdEJhc2UpOgpAQCAtMTA5LDcgKzExNiwxMiBAQAogQE9FVGVzdFRhZygidG9vbGNoYWluLXN5c3RlbSIpCiBjbGFzcyBHY2NDcm9zc1NlbGZUZXN0U3lzdGVtRW11bGF0ZWQoR2NjU2VsZlRlc3RCYXNlKToKICAgICBkZWYgdGVzdF9jcm9zc19nY2Moc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX2NoZWNrX2VtdWxhdGVkKCJnY2MiLCAiZysrIikKKyAgICAgICAgc2VsZi5ydW5fY2hlY2tfZW11bGF0ZWQoImdjYyIpCisKK0BPRVRlc3RUYWcoInRvb2xjaGFpbi1zeXN0ZW0iKQorY2xhc3MgR3h4Q3Jvc3NTZWxmVGVzdFN5c3RlbUVtdWxhdGVkKEdjY1NlbGZUZXN0QmFzZSk6CisgICAgZGVmIHRlc3RfY3Jvc3NfZ3h4KHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl9jaGVja19lbXVsYXRlZCgiZysrIikKIAogQE9FVGVzdFRhZygidG9vbGNoYWluLXN5c3RlbSIpCiBjbGFzcyBHY2NMaWJBdG9taWNTZWxmVGVzdFN5c3RlbUVtdWxhdGVkKEdjY1NlbGZUZXN0QmFzZSk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VmZWF0dXJlcy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZWZlYXR1cmVzLnB5CmluZGV4IGVmMmVlZmEuLjVjNTE5YWMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZWZlYXR1cmVzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZWZlYXR1cmVzLnB5CkBAIC0yMDgsMTMgKzIwOCwxMyBAQAogICAgICAgICAiIiIKICAgICAgICAgaW1hZ2VfbmFtZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCiAKLSAgICAgICAgaW1nX3R5cGVzID0gW2l0eXBlIGZvciBpdHlwZSBpbiBnZXRfYmJfdmFyKCJJTUFHRV9UWVBFUyIsIGltYWdlX25hbWUpLnNwbGl0KCkgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0eXBlIG5vdCBpbiAoJ2NvbnRhaW5lcicsICdlbGYnLCAnZjJmcycsICdtdWx0aXViaScpXQorICAgICAgICBhbGxfaW1hZ2VfdHlwZXMgPSBzZXQoZ2V0X2JiX3ZhcigiSU1BR0VfVFlQRVMiLCBpbWFnZV9uYW1lKS5zcGxpdCgpKQorICAgICAgICBibGFja2xpc3QgPSBzZXQoKCdjb250YWluZXInLCAnZWxmJywgJ2YyZnMnLCAnbXVsdGl1YmknLCAndGFyLnpzdCcpKQorICAgICAgICBpbWdfdHlwZXMgPSBhbGxfaW1hZ2VfdHlwZXMgLSBibGFja2xpc3QKIAogICAgICAgICBjb25maWcgPSAnSU1BR0VfRlNUWVBFUyArPSAiJXMiXG4nXAogICAgICAgICAgICAgICAgICAnTUtVQklGU19BUkdTID89ICItbSAyMDQ4IC1lIDEyOTAyNCAtYyAyMDQ3IlxuJ1wKICAgICAgICAgICAgICAgICAgJ1VCSU5JWkVfQVJHUyA/PSAiLW0gMjA0OCAtcCAxMjhLaUIgLXMgNTEyIicgJSAnICcuam9pbihpbWdfdHlwZXMpCi0KICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoY29uZmlnKQogCiAgICAgICAgIGJpdGJha2UoaW1hZ2VfbmFtZSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbmNvbXBhdGlibGVfbGljLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2luY29tcGF0aWJsZV9saWMucHkKaW5kZXggOTA0YjViNC4uM2VhYmQ3OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2luY29tcGF0aWJsZV9saWMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2luY29tcGF0aWJsZV9saWMucHkKQEAgLTQsNyArNCw3IEBACiBjbGFzcyBJbmNvbXBhdGlibGVMaWNlbnNlVGVzdHMoT0VTZWxmdGVzdFRlc3RDYXNlKToKIAogICAgIGRlZiBsaWNfdGVzdChzZWxmLCBwbiwgcG5fbGljLCBsaWMpOgotICAgICAgICBlcnJvcl9tc2cgPSAnRVJST1I6IE5vdGhpbmcgUFJPVklERVMgXCclc1wnXG4lcyB3YXMgc2tpcHBlZDogaXQgaGFzIGFuIGluY29tcGF0aWJsZSBsaWNlbnNlOiAlcycgJSAocG4sIHBuLCBwbl9saWMpCisgICAgICAgIGVycm9yX21zZyA9ICdFUlJPUjogTm90aGluZyBQUk9WSURFUyBcJyVzXCdcbiVzIHdhcyBza2lwcGVkOiBpdCBoYXMgaW5jb21wYXRpYmxlIGxpY2Vuc2Uocyk6ICVzJyAlIChwbiwgcG4sIHBuX2xpYykKIAogICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiSU5DT01QQVRJQkxFX0xJQ0VOU0UgKz0gXCIlc1wiIiAlIChsaWMpKQogCkBAIC0xMiwzMCArMTIsNzIgQEAKICAgICAgICAgaWYgZXJyb3JfbXNnIG5vdCBpbiByZXN1bHQub3V0cHV0OgogICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IocmVzdWx0Lm91dHB1dCkKIAotICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggYW4gU1BEWCBsaWNlbnNlIChmcm9tIFNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTKQorICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggYW4gU1BEWCBsaWNlbnNlIChmcm9tIEFWQUlMQUJMRV9MSUNFTlNFUykKICAgICAjIGNhbm5vdCBiZSBidWlsdCB3aGVuIElOQ09NUEFUSUJMRV9MSUNFTlNFIGNvbnRhaW5zIHRoaXMgU1BEWCBsaWNlbnNlCiAgICAgZGVmIHRlc3RfaW5jb21wYXRpYmxlX3NwZHhfbGljZW5zZShzZWxmKToKICAgICAgICAgc2VsZi5saWNfdGVzdCgnaW5jb21wYXRpYmxlLWxpY2Vuc2UnLCAnR1BMLTMuMCcsICdHUEwtMy4wJykKIAotICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggYW4gU1BEWCBsaWNlbnNlIChmcm9tIFNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTKQorICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggYW4gU1BEWCBsaWNlbnNlIChmcm9tIEFWQUlMQUJMRV9MSUNFTlNFUykKICAgICAjIGNhbm5vdCBiZSBidWlsdCB3aGVuIElOQ09NUEFUSUJMRV9MSUNFTlNFIGNvbnRhaW5zIGFuIGFsaWFzIChpbgogICAgICMgU1BEWExJQ0VOU0VNQVApIG9mIHRoaXMgU1BEWCBsaWNlbnNlCiAgICAgZGVmIHRlc3RfaW5jb21wYXRpYmxlX2FsaWFzX3NwZHhfbGljZW5zZShzZWxmKToKICAgICAgICAgc2VsZi5saWNfdGVzdCgnaW5jb21wYXRpYmxlLWxpY2Vuc2UnLCAnR1BMLTMuMCcsICdHUEx2MycpCiAKKyAgICAjIFZlcmlmeSB0aGF0IGEgcGFja2FnZSB3aXRoIGFuIFNQRFggbGljZW5zZSAoZnJvbSBBVkFJTEFCTEVfTElDRU5TRVMpCisgICAgIyBjYW5ub3QgYmUgYnVpbHQgd2hlbiBJTkNPTVBBVElCTEVfTElDRU5TRSBjb250YWlucyBhIHdpbGRjYXJkZWQgbGljZW5zZQorICAgICMgbWF0Y2hpbmcgdGhpcyBTUERYIGxpY2Vuc2UKKyAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGVfc3BkeF9saWNlbnNlX3dpbGRjYXJkKHNlbGYpOgorICAgICAgICBzZWxmLmxpY190ZXN0KCdpbmNvbXBhdGlibGUtbGljZW5zZScsICdHUEwtMy4wJywgJypHUEwtMy4wJykKKworICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggYW4gU1BEWCBsaWNlbnNlIChmcm9tIEFWQUlMQUJMRV9MSUNFTlNFUykKKyAgICAjIGNhbm5vdCBiZSBidWlsdCB3aGVuIElOQ09NUEFUSUJMRV9MSUNFTlNFIGNvbnRhaW5zIGEgd2lsZGNhcmRlZCBhbGlhcworICAgICMgbGljZW5zZSBtYXRjaGluZyB0aGlzIFNQRFggbGljZW5zZQorICAgIGRlZiB0ZXN0X2luY29tcGF0aWJsZV9hbGlhc19zcGR4X2xpY2Vuc2Vfd2lsZGNhcmQoc2VsZik6CisgICAgICAgIHNlbGYubGljX3Rlc3QoJ2luY29tcGF0aWJsZS1saWNlbnNlJywgJ0dQTC0zLjAnLCAnKkdQTHYzJykKKwogICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggYW4gYWxpYXMgKGZyb20gU1BEWExJQ0VOU0VNQVApIHRvIGFuIFNQRFgKICAgICAjIGxpY2Vuc2UgY2Fubm90IGJlIGJ1aWx0IHdoZW4gSU5DT01QQVRJQkxFX0xJQ0VOU0UgY29udGFpbnMgdGhpcyBTUERYCiAgICAgIyBsaWNlbnNlCiAgICAgZGVmIHRlc3RfaW5jb21wYXRpYmxlX3NwZHhfbGljZW5zZV9hbGlhcyhzZWxmKToKLSAgICAgICAgc2VsZi5saWNfdGVzdCgnaW5jb21wYXRpYmxlLWxpY2Vuc2UtYWxpYXMnLCAnR1BMdjMnLCAnR1BMLTMuMCcpCisgICAgICAgIHNlbGYubGljX3Rlc3QoJ2luY29tcGF0aWJsZS1saWNlbnNlLWFsaWFzJywgJ0dQTC0zLjAnLCAnR1BMLTMuMCcpCiAKICAgICAjIFZlcmlmeSB0aGF0IGEgcGFja2FnZSB3aXRoIGFuIGFsaWFzIChmcm9tIFNQRFhMSUNFTlNFTUFQKSB0byBhbiBTUERYCiAgICAgIyBsaWNlbnNlIGNhbm5vdCBiZSBidWlsdCB3aGVuIElOQ09NUEFUSUJMRV9MSUNFTlNFIGNvbnRhaW5zIHRoaXMgYWxpYXMKICAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGVfYWxpYXNfc3BkeF9saWNlbnNlX2FsaWFzKHNlbGYpOgotICAgICAgICBzZWxmLmxpY190ZXN0KCdpbmNvbXBhdGlibGUtbGljZW5zZS1hbGlhcycsICdHUEx2MycsICdHUEx2MycpCisgICAgICAgIHNlbGYubGljX3Rlc3QoJ2luY29tcGF0aWJsZS1saWNlbnNlLWFsaWFzJywgJ0dQTC0zLjAnLCAnR1BMdjMnKQorCisgICAgIyBWZXJpZnkgdGhhdCBhIHBhY2thZ2Ugd2l0aCBhbiBhbGlhcyAoZnJvbSBTUERYTElDRU5TRU1BUCkgdG8gYW4gU1BEWAorICAgICMgbGljZW5zZSBjYW5ub3QgYmUgYnVpbHQgd2hlbiBJTkNPTVBBVElCTEVfTElDRU5TRSBjb250YWlucyBhIHdpbGRjYXJkZWQKKyAgICAjIGxpY2Vuc2UgbWF0Y2hpbmcgdGhpcyBTUERYIGxpY2Vuc2UKKyAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGVfc3BkeF9saWNlbnNlX2FsaWFzX3dpbGRjYXJkKHNlbGYpOgorICAgICAgICBzZWxmLmxpY190ZXN0KCdpbmNvbXBhdGlibGUtbGljZW5zZS1hbGlhcycsICdHUEwtMy4wJywgJypHUEwtMy4wJykKKworICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggYW4gYWxpYXMgKGZyb20gU1BEWExJQ0VOU0VNQVApIHRvIGFuIFNQRFgKKyAgICAjIGxpY2Vuc2UgY2Fubm90IGJlIGJ1aWx0IHdoZW4gSU5DT01QQVRJQkxFX0xJQ0VOU0UgY29udGFpbnMgYSB3aWxkY2FyZGVkCisgICAgIyBhbGlhcyBsaWNlbnNlIG1hdGNoaW5nIHRoZSBTUERYIGxpY2Vuc2UKKyAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGVfYWxpYXNfc3BkeF9saWNlbnNlX2FsaWFzX3dpbGRjYXJkKHNlbGYpOgorICAgICAgICBzZWxmLmxpY190ZXN0KCdpbmNvbXBhdGlibGUtbGljZW5zZS1hbGlhcycsICdHUEwtMy4wJywgJypHUEx2MycpCisKKyAgICAjIFZlcmlmeSB0aGF0IGEgcGFja2FnZSB3aXRoIG11bHRpcGxlIFNQRFggbGljZW5zZXMgKGZyb20KKyAgICAjIEFWQUlMQUJMRV9MSUNFTlNFUykgY2Fubm90IGJlIGJ1aWx0IHdoZW4gSU5DT01QQVRJQkxFX0xJQ0VOU0UgY29udGFpbnMKKyAgICAjIHNvbWUgb2YgdGhlbQorICAgIGRlZiB0ZXN0X2luY29tcGF0aWJsZV9zcGR4X2xpY2Vuc2VzKHNlbGYpOgorICAgICAgICBzZWxmLmxpY190ZXN0KCdpbmNvbXBhdGlibGUtbGljZW5zZXMnLCAnR1BMLTMuMCBMR1BMLTMuMCcsICdHUEwtMy4wIExHUEwtMy4wJykKKworICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggbXVsdGlwbGUgU1BEWCBsaWNlbnNlcyAoZnJvbQorICAgICMgQVZBSUxBQkxFX0xJQ0VOU0VTKSBjYW5ub3QgYmUgYnVpbHQgd2hlbiBJTkNPTVBBVElCTEVfTElDRU5TRSBjb250YWlucyBhCisgICAgIyB3aWxkY2FyZCB0byBzb21lIG9mIHRoZW0KKyAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGVfc3BkeF9saWNlbnNlc193aWxkY2FyZChzZWxmKToKKyAgICAgICAgc2VsZi5saWNfdGVzdCgnaW5jb21wYXRpYmxlLWxpY2Vuc2VzJywgJ0dQTC0zLjAgTEdQTC0zLjAnLCAnKkdQTC0zLjAnKQorCisgICAgIyBWZXJpZnkgdGhhdCBhIHBhY2thZ2Ugd2l0aCBtdWx0aXBsZSBTUERYIGxpY2Vuc2VzIChmcm9tCisgICAgIyBBVkFJTEFCTEVfTElDRU5TRVMpIGNhbm5vdCBiZSBidWlsdCB3aGVuIElOQ09NUEFUSUJMRV9MSUNFTlNFIGNvbnRhaW5zIGEKKyAgICAjIHdpbGRjYXJkIG1hdGNoaW5nIGFsbCBsaWNlbnNlcworICAgIGRlZiB0ZXN0X2luY29tcGF0aWJsZV9hbGxfbGljZW5zZXNfd2lsZGNhcmQoc2VsZik6CisgICAgICAgIHNlbGYubGljX3Rlc3QoJ2luY29tcGF0aWJsZS1saWNlbnNlcycsICdHUEwtMi4wIEdQTC0zLjAgTEdQTC0zLjAnLCAnKicpCiAKICAgICAjIFZlcmlmeSB0aGF0IGEgcGFja2FnZSB3aXRoIGEgbm9uLVNQRFggbGljZW5zZSAobmVpdGhlciBpbgotICAgICMgU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgbm9yIGluIFNQRFhMSUNFTlNFTUFQKSBjYW5ub3QgYmUgYnVpbHQgd2hlbgorICAgICMgQVZBSUxBQkxFX0xJQ0VOU0VTIG5vciBpbiBTUERYTElDRU5TRU1BUCkgY2Fubm90IGJlIGJ1aWx0IHdoZW4KICAgICAjIElOQ09NUEFUSUJMRV9MSUNFTlNFIGNvbnRhaW5zIHRoaXMgbGljZW5zZQogICAgIGRlZiB0ZXN0X2luY29tcGF0aWJsZV9ub25zcGR4X2xpY2Vuc2Uoc2VsZik6CiAgICAgICAgIHNlbGYubGljX3Rlc3QoJ2luY29tcGF0aWJsZS1ub25zcGR4LWxpY2Vuc2UnLCAnRm9vTGljZW5zZScsICdGb29MaWNlbnNlJykKQEAgLTQ5LDcgKzkxLDcgQEAKIAogICAgIGRlZiB0ZXN0X2Jhc2hfZGVmYXVsdChzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoc2VsZi5kZWZhdWx0X2NvbmZpZygpKQotICAgICAgICBlcnJvcl9tc2cgPSAiRVJST1I6IGNvcmUtaW1hZ2UtbWluaW1hbC0xLjAtcjAgZG9fcm9vdGZzOiBQYWNrYWdlIGJhc2ggaGFzIGFuIGluY29tcGF0aWJsZSBsaWNlbnNlIEdQTHYzKyBhbmQgY2Fubm90IGJlIGluc3RhbGxlZCBpbnRvIHRoZSBpbWFnZS4iCisgICAgICAgIGVycm9yX21zZyA9ICJFUlJPUjogY29yZS1pbWFnZS1taW5pbWFsLTEuMC1yMCBkb19yb290ZnM6IFBhY2thZ2UgYmFzaCBjYW5ub3QgYmUgaW5zdGFsbGVkIGludG8gdGhlIGltYWdlIGJlY2F1c2UgaXQgaGFzIGluY29tcGF0aWJsZSBsaWNlbnNlKHMpOiBHUEwtMy4wKyIKIAogICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnLCBpZ25vcmVfc3RhdHVzPVRydWUpCiAgICAgICAgIGlmIGVycm9yX21zZyBub3QgaW4gcmVzdWx0Lm91dHB1dDoKQEAgLTU3LDcgKzk5LDcgQEAKIAogICAgIGRlZiB0ZXN0X2Jhc2hfYW5kX2xpY2Vuc2Uoc2VsZik6CiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKHNlbGYuZGVmYXVsdF9jb25maWcoKSArICdcbkxJQ0VOU0VfYXBwZW5kX3BuLWJhc2ggPSAiICYgU29tZUxpY2Vuc2UiJykKLSAgICAgICAgZXJyb3JfbXNnID0gIkVSUk9SOiBjb3JlLWltYWdlLW1pbmltYWwtMS4wLXIwIGRvX3Jvb3RmczogUGFja2FnZSBiYXNoIGhhcyBhbiBpbmNvbXBhdGlibGUgbGljZW5zZSBHUEx2MysgJiBTb21lTGljZW5zZSBhbmQgY2Fubm90IGJlIGluc3RhbGxlZCBpbnRvIHRoZSBpbWFnZS4iCisgICAgICAgIGVycm9yX21zZyA9ICJFUlJPUjogY29yZS1pbWFnZS1taW5pbWFsLTEuMC1yMCBkb19yb290ZnM6IFBhY2thZ2UgYmFzaCBjYW5ub3QgYmUgaW5zdGFsbGVkIGludG8gdGhlIGltYWdlIGJlY2F1c2UgaXQgaGFzIGluY29tcGF0aWJsZSBsaWNlbnNlKHMpOiBHUEwtMy4wKyIKIAogICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnLCBpZ25vcmVfc3RhdHVzPVRydWUpCiAgICAgICAgIGlmIGVycm9yX21zZyBub3QgaW4gcmVzdWx0Lm91dHB1dDoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9tZXRhX2lkZS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9tZXRhX2lkZS5weQppbmRleCAwMzkwMWEyLi44MDkxNDI1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbWV0YV9pZGUucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL21ldGFfaWRlLnB5CkBAIC00MCw3ICs0MCw3IEBACiAgICAgZGVmIHRlc3RfbWV0YV9pZGVfY2FuX2J1aWxkX2NwaW9fcHJvamVjdChzZWxmKToKICAgICAgICAgZGxfZGlyID0gc2VsZi50ZC5nZXQoJ0RMX0RJUicsIE5vbmUpCiAgICAgICAgIHNlbGYucHJvamVjdCA9IFNES0J1aWxkUHJvamVjdChzZWxmLnRtcGRpcl9tZXRhaWRlUUEgKyAiL2NwaW8vIiwgc2VsZi5lbnZpcm9ubWVudF9zY3JpcHRfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJodHRwczovL2Z0cC5nbnUub3JnL2dudS9jcGlvL2NwaW8tMi4xMi50YXIuZ3oiLAorICAgICAgICAgICAgICAgICAgICAgICAgImh0dHBzOi8vZnRwLmdudS5vcmcvZ251L2NwaW8vY3Bpby0yLjEzLnRhci5neiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRtcGRpcl9tZXRhaWRlUUEsIHNlbGYudGRbJ0RBVEVUSU1FJ10sIGRsX2Rpcj1kbF9kaXIpCiAgICAgICAgIHNlbGYucHJvamVjdC5kb3dubG9hZF9hcmNoaXZlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnByb2plY3QucnVuX2NvbmZpZ3VyZSgpLCAwLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL2J1aWxkaGlzdG9yeS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi9idWlsZGhpc3RvcnkucHkKaW5kZXggNmQ4MDgyNy4uZDQ2NjRiZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL2J1aWxkaGlzdG9yeS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvYnVpbGRoaXN0b3J5LnB5CkBAIC00NSw3ICs0NSw3IEBACiAKICAgICBkZWYgdGVzdF9ibG9iX3RvX2RpY3Qoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBUZXN0IGNvbnZlcnRpb24gb2YgZ2l0IGJsb2JzIHRvIGRpY3Rpb25hcnkKKyAgICAgICAgVGVzdCBjb252ZXJzaW9uIG9mIGdpdCBibG9icyB0byBkaWN0aW9uYXJ5CiAgICAgICAgICIiIgogICAgICAgICBmcm9tIG9lLmJ1aWxkaGlzdG9yeV9hbmFseXNpcyBpbXBvcnQgYmxvYl90b19kaWN0CiAgICAgICAgIHZhbHVlc21hcCA9IHsgImZvbyIgOiAiMSIsICJiYXIiIDogIjIiIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZXNjcmlwdHMucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VzY3JpcHRzLnB5CmluZGV4IDQxY2JlMDQuLjJmMThkOGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZXNjcmlwdHMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lc2NyaXB0cy5weQpAQCAtNCw2ICs0LDcgQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgc2h1dGlsCitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKIGZyb20gb2VxYS5zZWxmdGVzdC5jYXNlcy5idWlsZGhpc3RvcnkgaW1wb3J0IEJ1aWxkaGlzdG9yeUJhc2UKQEAgLTMzLDE1ICszNCwxMyBAQAogICAgICAgICBpZiBleHBlY3RlZF9lbmRsaW5lczoKICAgICAgICAgICAgIHNlbGYuZmFpbCgnTWlzc2luZyBleHBlY3RlZCBsaW5lIGVuZGluZ3M6XG4gICVzJyAlICdcbiAgJy5qb2luKGV4cGVjdGVkX2VuZGxpbmVzKSkKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKCJjYWlybyIpLCAiUHl0aG9uIGNhaXJvIG1vZHVsZSBpcyBub3QgcHJlc2VudCIpCiBjbGFzcyBPRVNjcmlwdFRlc3RzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgogICAgICAgICBzdXBlcihPRVNjcmlwdFRlc3RzLCBjbHMpLnNldFVwQ2xhc3MoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbXBvcnQgY2Fpcm8KLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ1B5dGhvbiBtb2R1bGUgY2Fpcm8gaXMgbm90IHByZXNlbnQnKQorICAgICAgICBpbXBvcnQgY2Fpcm8KICAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1taW5pbWFsIC1jIHJvb3RmcyAtZiIpCiAgICAgICAgIGNscy50bXBkaXIgPSBnZXRfYmJfdmFyKCdUTVBESVInKQogICAgICAgICBjbHMuYnVpbGRzdGF0cyA9IGNscy50bXBkaXIgKyAiL2J1aWxkc3RhdHMvIiArIHNvcnRlZChvcy5saXN0ZGlyKGNscy50bXBkaXIgKyAiL2J1aWxkc3RhdHMiKSlbLTFdCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcGFja2FnZS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9wYWNrYWdlLnB5CmluZGV4IDI5MTYyNzguLjMwMTBiMWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9wYWNrYWdlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9wYWNrYWdlLnB5CkBAIC0xMzUsNyArMTM1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAgICAgICAgICAgICAjIENoZWNrIGRlYnVnZ2luZyBzeW1ib2xzIHdvcmtzIGNvcnJlY3RseQotICAgICAgICAgICAgICAgIGVsaWYgcmUubWF0Y2goIkJyZWFrcG9pbnQgMS4qaGVsbG9cLmMuKjQiLCBsKToKKyAgICAgICAgICAgICAgICBlbGlmIHJlLm1hdGNoKHIiQnJlYWtwb2ludCAxLipoZWxsb1wuYy4qNCIsIGwpOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiR0RCIHJlc3VsdDpcbiVkOiAlcyIsIHN0YXR1cywgb3V0cHV0KQpAQCAtMTQ4LDMgKzE0OCwyNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJy91c3IvbGliZXhlYy9oZWxsbzQnXToKICAgICAgICAgICAgICAgICBpZiBub3QgZ2RidGVzdChxZW11LCBiaW5hcnkpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ0dEQiAlcyBmYWlsZWQnICUgYmluYXJ5KQorCisgICAgZGVmIHRlc3RfcHJlc2VydmVfb3duZXJzaGlwKHNlbGYpOgorICAgICAgICBpbXBvcnQgb3MsIHN0YXQsIG9lLmNhY2hlZHBhdGgKKyAgICAgICAgZmVhdHVyZXMgPSAnSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIHNlbGZ0ZXN0LWNob3duIlxuJworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKyAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1taW5pbWFsIikKKworICAgICAgICBzeXNjb25mZGlyID0gZ2V0X2JiX3Zhcignc3lzY29uZmRpcicsICdzZWxmdGVzdC1jaG93bicpCisgICAgICAgIGRlZiBjaGVja19vd25lcnNoaXAocWVtdSwgZ2lkLCB1aWQsIHBhdGgpOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiQ2hlY2sgb3duZXJzaGlwIG9mICVzIiwgcGF0aCkKKyAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gcWVtdS5ydW5fc2VyaWFsKHInL2Jpbi9zdGF0IC1jICIlVSAlRyIgJyArIHBhdGgsIHRpbWVvdXQ9NjApCisgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQuc3BsaXQoIiAiKQorICAgICAgICAgICAgaWYgb3V0cHV0WzBdICE9IHVpZCBvciBvdXRwdXRbMV0gIT0gZ2lkIDoKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiSW5jcnJlY3Qgb3duZXJzaGlwICVzIFslczolc10iLCBwYXRoLCBvdXRwdXRbMF0sIG91dHB1dFsxXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgd2l0aCBydW5xZW11KCdjb3JlLWltYWdlLW1pbmltYWwnKSBhcyBxZW11OgorICAgICAgICAgICAgZm9yIHBhdGggaW4gWyBzeXNjb25mZGlyICsgIi9zZWxmdGVzdC1jaG93bi9maWxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzY29uZmRpciArICIvc2VsZnRlc3QtY2hvd24vZGlyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzY29uZmRpciArICIvc2VsZnRlc3QtY2hvd24vc3ltbGluayJdOgorICAgICAgICAgICAgICAgIGlmIG5vdCBjaGVja19vd25lcnNoaXAocWVtdSwgInRlc3QiLCAidGVzdCIsIHBhdGgpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1Rlc3Qgb3duZXJzaGlwICVzIGZhaWxlZCcgJSBwYXRoKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3JlY2lwZXRvb2wucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVjaXBldG9vbC5weQppbmRleCBjMTU2MmM2Li42YmZlOGYxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVjaXBldG9vbC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVjaXBldG9vbC5weQpAQCAtNDIxLDYgKzQyMSwzMSBAQAogICAgICAgICBpbmhlcml0cyA9IFsnY21ha2UnXQogICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIGluaGVyaXRzKQogCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9jcmVhdGVfbnBtKHNlbGYpOgorICAgICAgICB0ZW1wcmVjaXBlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3JlY2lwZScpCisgICAgICAgIG9zLm1ha2VkaXJzKHRlbXByZWNpcGUpCisgICAgICAgIHJlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcHJlY2lwZSwgJ3Nhdm9pcmZhaXJlbGludXgtbm9kZS1zZXJ2ZXItZXhhbXBsZV8xLjAuMC5iYicpCisgICAgICAgIHNocmlua3dyYXAgPSBvcy5wYXRoLmpvaW4odGVtcHJlY2lwZSwgJ3Nhdm9pcmZhaXJlbGludXgtbm9kZS1zZXJ2ZXItZXhhbXBsZScsICducG0tc2hyaW5rd3JhcC5qc29uJykKKyAgICAgICAgc3JjdXJpID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdyZWNpcGV0b29sIGNyZWF0ZSAtbyAlcyBcJyVzXCcnICUgKHRlbXByZWNpcGUsIHNyY3VyaSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShyZWNpcGVmaWxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHNocmlua3dyYXApKQorICAgICAgICBjaGVja3ZhcnMgPSB7fQorICAgICAgICBjaGVja3ZhcnNbJ1NVTU1BUlknXSA9ICdOb2RlIFNlcnZlciBFeGFtcGxlJworICAgICAgICBjaGVja3ZhcnNbJ0hPTUVQQUdFJ10gPSAnaHR0cHM6Ly9naXRodWIuY29tL3Nhdm9pcmZhaXJlbGludXgvbm9kZS1zZXJ2ZXItZXhhbXBsZSNyZWFkbWUnCisgICAgICAgIGNoZWNrdmFyc1snTElDRU5TRSddID0gc2V0KFsnTUlUJywgJ0lTQycsICdVbmtub3duJ10pCisgICAgICAgIHVybHMgPSBbXQorICAgICAgICB1cmxzLmFwcGVuZCgnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnLztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0ke1BWfScpCisgICAgICAgIHVybHMuYXBwZW5kKCducG1zdzovLyR7VEhJU0RJUn0vJHtCUE59L25wbS1zaHJpbmt3cmFwLmpzb24nKQorICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHNldCh1cmxzKQorICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9ICcke1dPUktESVJ9L25wbScKKyAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFXyR7UE59J10gPSAnTUlUJworICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0VfJHtQTn0tYmFzZTY0J10gPSAnVW5rbm93bicKKyAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFXyR7UE59LWFjY2VwdHMnXSA9ICdNSVQnCisgICAgICAgIGNoZWNrdmFyc1snTElDRU5TRV8ke1BOfS1pbmhlcml0cyddID0gJ0lTQycKKyAgICAgICAgaW5oZXJpdHMgPSBbJ25wbSddCisgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgaW5oZXJpdHMpCisKICAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2NyZWF0ZV9naXRodWIoc2VsZik6CiAgICAgICAgICMgQmFzaWMgdGVzdCB0byBzZWUgaWYgZ2l0aHViIFVSTCBtYW5nbGluZyB3b3JrcwogICAgICAgICB0ZW1wcmVjaXBlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3JlY2lwZScpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVwcm9kdWNpYmxlLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3JlcHJvZHVjaWJsZS5weQppbmRleCBhOTExMDU2Li41ZDM5NTliIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVwcm9kdWNpYmxlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9yZXByb2R1Y2libGUucHkKQEAgLTEsNyArMSw3IEBACiAjCiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKICMKLSMgQ29weXJpZ2h0IDIwMTkgYnkgR2FybWluIEx0ZC4gb3IgaXRzIHN1YnNpZGlhcmllcworIyBDb3B5cmlnaHQgMjAxOS0yMDIwIGJ5IEdhcm1pbiBMdGQuIG9yIGl0cyBzdWJzaWRpYXJpZXMKIAogZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQogZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF9iYl92YXJzCkBAIC0xNSw2ICsxNSw3IEBACiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3RhdAogaW1wb3J0IG9zCitpbXBvcnQgZGF0ZXRpbWUKIAogTUlTU0lORyA9ICdNSVNTSU5HJwogRElGRkVSRU5UID0gJ0RJRkZFUkVOVCcKQEAgLTc4LDggKzc5LDE4IEBACiAKIGNsYXNzIFJlcHJvZHVjaWJsZVRlc3RzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CiAgICAgcGFja2FnZV9jbGFzc2VzID0gWydkZWInLCAnaXBrJ10KLSAgICBpbWFnZXMgPSBbJ2NvcmUtaW1hZ2UtbWluaW1hbCddCisgICAgaW1hZ2VzID0gWydjb3JlLWltYWdlLW1pbmltYWwnLCAnY29yZS1pbWFnZS1zYXRvJywgJ2NvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lJ10KICAgICBzYXZlX3Jlc3VsdHMgPSBGYWxzZQorICAgIGlmICdPRVFBX0RFQlVHR0lOR19TQVZFRF9PVVRQVVQnIGluIG9zLmVudmlyb246CisgICAgICAgIHNhdmVfcmVzdWx0cyA9IG9zLmVudmlyb25bJ09FUUFfREVCVUdHSU5HX1NBVkVEX09VVFBVVCddCisKKyAgICAjIFRoaXMgdmFyaWFibGUgY29udHJvbHMgaWYgb25lIG9mIHRoZSB0ZXN0IGJ1aWxkcyBpcyBhbGxvd2VkIHRvIHB1bGwgZnJvbQorICAgICMgYW4gc3N0YXRlIGNhY2hlL21pcnJvci4gVGhlIG90aGVyIGJ1aWxkIGlzIGFsd2F5cyBkb25lIGNsZWFuIGFzIGEgcG9pbnQgb2YKKyAgICAjIGNvbXBhcmlzb24uCisgICAgIyBJZiB5b3Uga25vdyB0aGF0IHlvdXIgc3N0YXRlIGFyY2hpdmVzIGFyZSByZXByb2R1Y2libGUsIGVuYWJsaW5nIHRoaXMKKyAgICAjIHdpbGwgdGVzdCB0aGF0IGFuZCBhbHNvIG1ha2UgdGhlIHRlc3QgcnVuIGZhc3Rlci4gSWYgeW91ciBzc3RhdGUgaXMgbm90CisgICAgIyByZXByb2R1Y2libGUsIGRpc2FibGUgdGhpcyBpbiB5b3VyIGRlcml2ZWQgdGVzdCBjbGFzcworICAgIGJ1aWxkX2Zyb21fc3N0YXRlID0gVHJ1ZQogCiAgICAgZGVmIHNldFVwTG9jYWwoc2VsZik6CiAgICAgICAgIHN1cGVyKCkuc2V0VXBMb2NhbCgpCkBAIC04OCwxMiArOTksMTIgQEAKICAgICAgICAgZm9yIHYgaW4gbmVlZGVkX3ZhcnM6CiAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIHYubG93ZXIoKSwgYmJfdmFyc1t2XSkKIAotICAgICAgICBzZWxmLmV4dHJhc3Jlc3VsdHMgPSB7fQotICAgICAgICBzZWxmLmV4dHJhc3Jlc3VsdHMuc2V0ZGVmYXVsdCgncmVwcm9kdWNpYmxlLnJhd2xvZ3MnLCB7fSlbJ2xvZyddID0gJycKLSAgICAgICAgc2VsZi5leHRyYXNyZXN1bHRzLnNldGRlZmF1bHQoJ3JlcHJvZHVjaWJsZScsIHt9KS5zZXRkZWZhdWx0KCdmaWxlcycsIHt9KQorICAgICAgICBzZWxmLmV4dHJhcmVzdWx0cyA9IHt9CisgICAgICAgIHNlbGYuZXh0cmFyZXN1bHRzLnNldGRlZmF1bHQoJ3JlcHJvZHVjaWJsZS5yYXdsb2dzJywge30pWydsb2cnXSA9ICcnCisgICAgICAgIHNlbGYuZXh0cmFyZXN1bHRzLnNldGRlZmF1bHQoJ3JlcHJvZHVjaWJsZScsIHt9KS5zZXRkZWZhdWx0KCdmaWxlcycsIHt9KQogCiAgICAgZGVmIGFwcGVuZF90b19sb2coc2VsZiwgbXNnKToKLSAgICAgICAgc2VsZi5leHRyYXNyZXN1bHRzWydyZXByb2R1Y2libGUucmF3bG9ncyddWydsb2cnXSArPSBtc2cKKyAgICAgICAgc2VsZi5leHRyYXJlc3VsdHNbJ3JlcHJvZHVjaWJsZS5yYXdsb2dzJ11bJ2xvZyddICs9IG1zZwogCiAgICAgZGVmIGNvbXBhcmVfcGFja2FnZXMoc2VsZiwgcmVmZXJlbmNlX2RpciwgdGVzdF9kaXIsIGRpZmZ1dGlsc19zeXNyb290KToKICAgICAgICAgcmVzdWx0ID0gUGFja2FnZUNvbXBhcmVSZXN1bHRzKCkKQEAgLTEyMCw2MCArMTMxLDY5IEBACiAgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiB3cml0ZV9wYWNrYWdlX2xpc3Qoc2VsZiwgcGFja2FnZV9jbGFzcywgbmFtZSwgcGFja2FnZXMpOgotICAgICAgICBzZWxmLmV4dHJhc3Jlc3VsdHNbJ3JlcHJvZHVjaWJsZSddWydmaWxlcyddLnNldGRlZmF1bHQocGFja2FnZV9jbGFzcywge30pW25hbWVdID0gWworICAgICAgICBzZWxmLmV4dHJhcmVzdWx0c1sncmVwcm9kdWNpYmxlJ11bJ2ZpbGVzJ10uc2V0ZGVmYXVsdChwYWNrYWdlX2NsYXNzLCB7fSlbbmFtZV0gPSBbCiAgICAgICAgICAgICAgICAgeydyZWZlcmVuY2UnOiBwLnJlZmVyZW5jZSwgJ3Rlc3QnOiBwLnRlc3R9IGZvciBwIGluIHBhY2thZ2VzXQogCiAgICAgZGVmIGNvcHlfZmlsZShzZWxmLCBzb3VyY2UsIGRlc3QpOgogICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGRlc3QpKQogICAgICAgICBzaHV0aWwuY29weWZpbGUoc291cmNlLCBkZXN0KQogCi0gICAgZGVmIHRlc3RfcmVwcm9kdWNpYmxlX2J1aWxkcyhzZWxmKToKKyAgICBkZWYgZG9fdGVzdF9idWlsZChzZWxmLCBuYW1lLCB1c2Vfc3N0YXRlKToKICAgICAgICAgY2FwdHVyZV92YXJzID0gWydERVBMT1lfRElSXycgKyBjLnVwcGVyKCkgZm9yIGMgaW4gc2VsZi5wYWNrYWdlX2NsYXNzZXNdCiAKLSAgICAgICAgaWYgc2VsZi5zYXZlX3Jlc3VsdHM6Ci0gICAgICAgICAgICBzYXZlX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdvZS1yZXByb2R1Y2libGUtJykKLSAgICAgICAgICAgIG9zLmNobW9kKHNhdmVfZGlyLCBzdGF0LlNfSVJXWFUgfCBzdGF0LlNfSVJHUlAgfCBzdGF0LlNfSVhHUlAgfCBzdGF0LlNfSVJPVEggfCBzdGF0LlNfSVhPVEgpCi0gICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdOb24tcmVwcm9kdWNpYmxlIHBhY2thZ2VzIHdpbGwgYmUgY29waWVkIHRvICVzJywgc2F2ZV9kaXIpCisgICAgICAgIHRtcGRpciA9IG9zLnBhdGguam9pbihzZWxmLnRvcGRpciwgbmFtZSwgJ3RtcCcpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHRtcGRpcik6CisgICAgICAgICAgICBiYi51dGlscy5yZW1vdmUodG1wZGlyLCByZWN1cnNlPVRydWUpCisKKyAgICAgICAgY29uZmlnID0gdGV4dHdyYXAuZGVkZW50KCcnJ1wKKyAgICAgICAgICAgIElOSEVSSVQgKz0gInJlcHJvZHVjaWJsZV9idWlsZCIKKyAgICAgICAgICAgIFBBQ0tBR0VfQ0xBU1NFUyA9ICJ7cGFja2FnZV9jbGFzc2VzfSIKKyAgICAgICAgICAgIElOSElCSVRfUEFDS0FHRV9TVFJJUCA9ICIxIgorICAgICAgICAgICAgVE1QRElSID0gInt0bXBkaXJ9IgorICAgICAgICAgICAgJycnKS5mb3JtYXQocGFja2FnZV9jbGFzc2VzPScgJy5qb2luKCdwYWNrYWdlXyVzJyAlIGMgZm9yIGMgaW4gc2VsZi5wYWNrYWdlX2NsYXNzZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgdG1wZGlyPXRtcGRpcikKKworICAgICAgICBpZiBub3QgdXNlX3NzdGF0ZToKKyAgICAgICAgICAgICMgVGhpcyBjb25maWcgZnJhZ21lbnQgd2lsbCBkaXNhYmxlIHVzaW5nIHNoYXJlZCBhbmQgdGhlIHNzdGF0ZQorICAgICAgICAgICAgIyBtaXJyb3IsIGZvcmNpbmcgYSBjb21wbGV0ZSBidWlsZCBmcm9tIHNjcmF0Y2gKKyAgICAgICAgICAgIGNvbmZpZyArPSB0ZXh0d3JhcC5kZWRlbnQoJycnXAorICAgICAgICAgICAgICAgIFNTVEFURV9ESVIgPSAiJHtUTVBESVJ9L3NzdGF0ZSIKKyAgICAgICAgICAgICAgICBTU1RBVEVfTUlSUk9SID0gIiIKKyAgICAgICAgICAgICAgICAnJycpCisKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoY29uZmlnKQorICAgICAgICBkID0gZ2V0X2JiX3ZhcnMoY2FwdHVyZV92YXJzKQorICAgICAgICBiaXRiYWtlKCcgJy5qb2luKHNlbGYuaW1hZ2VzKSkKKyAgICAgICAgcmV0dXJuIGQKKworICAgIGRlZiB0ZXN0X3JlcHJvZHVjaWJsZV9idWlsZHMoc2VsZik6CisgICAgICAgIGRlZiBzdHJpcF90b3BkaXIocyk6CisgICAgICAgICAgICBpZiBzLnN0YXJ0c3dpdGgoc2VsZi50b3BkaXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBzW2xlbihzZWxmLnRvcGRpcik6XQorICAgICAgICAgICAgcmV0dXJuIHMKIAogICAgICAgICAjIEJ1aWxkIG5hdGl2ZSB1dGlsaXRpZXMKICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoJycpCi0gICAgICAgIGJpdGJha2UoImRpZmZ1dGlscy1uYXRpdmUgLWMgYWRkdG9fcmVjaXBlX3N5c3Jvb3QiKQorICAgICAgICBiaXRiYWtlKCJkaWZmb3Njb3BlLW5hdGl2ZSBkaWZmdXRpbHMtbmF0aXZlIGpxdWVyeS1uYXRpdmUgLWMgYWRkdG9fcmVjaXBlX3N5c3Jvb3QiKQogICAgICAgICBkaWZmdXRpbHNfc3lzcm9vdCA9IGdldF9iYl92YXIoIlJFQ0lQRV9TWVNST09UX05BVElWRSIsICJkaWZmdXRpbHMtbmF0aXZlIikKKyAgICAgICAgZGlmZm9zY29wZV9zeXNyb290ID0gZ2V0X2JiX3ZhcigiUkVDSVBFX1NZU1JPT1RfTkFUSVZFIiwgImRpZmZvc2NvcGUtbmF0aXZlIikKKyAgICAgICAganF1ZXJ5X3N5c3Jvb3QgPSBnZXRfYmJfdmFyKCJSRUNJUEVfU1lTUk9PVF9OQVRJVkUiLCAianF1ZXJ5LW5hdGl2ZSIpCiAKLSAgICAgICAgIyBSZXByb2R1Y2libGUgYnVpbGRzIHNob3VsZCBub3QgcHVsbCBmcm9tIHNzdGF0ZSBvciBtaXJyb3JzLCBidXQKLSAgICAgICAgIyBzaGFyaW5nIERMX0RJUiBpcyBmaW5lCi0gICAgICAgIGNvbW1vbl9jb25maWcgPSB0ZXh0d3JhcC5kZWRlbnQoJycnXAotICAgICAgICAgICAgSU5IRVJJVCArPSAicmVwcm9kdWNpYmxlX2J1aWxkIgotICAgICAgICAgICAgUEFDS0FHRV9DTEFTU0VTID0gIiVzIgotICAgICAgICAgICAgU1NUQVRFX0RJUiA9ICIke1RNUERJUn0vc3N0YXRlIgotICAgICAgICAgICAgJycnKSAlICgnICcuam9pbigncGFja2FnZV8lcycgJSBjIGZvciBjIGluIHNlbGYucGFja2FnZV9jbGFzc2VzKSkKKyAgICAgICAgaWYgc2VsZi5zYXZlX3Jlc3VsdHM6CisgICAgICAgICAgICBvcy5tYWtlZGlycyhzZWxmLnNhdmVfcmVzdWx0cywgZXhpc3Rfb2s9VHJ1ZSkKKyAgICAgICAgICAgIGRhdGVzdHIgPSBkYXRldGltZS5kYXRldGltZS5ub3coKS5zdHJmdGltZSgnJVklbSVkJykKKyAgICAgICAgICAgIHNhdmVfZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J29lLXJlcHJvZHVjaWJsZS0lcy0nICUgZGF0ZXN0ciwgZGlyPXNlbGYuc2F2ZV9yZXN1bHRzKQorICAgICAgICAgICAgb3MuY2htb2Qoc2F2ZV9kaXIsIHN0YXQuU19JUldYVSB8IHN0YXQuU19JUkdSUCB8IHN0YXQuU19JWEdSUCB8IHN0YXQuU19JUk9USCB8IHN0YXQuU19JWE9USCkKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ05vbi1yZXByb2R1Y2libGUgcGFja2FnZXMgd2lsbCBiZSBjb3BpZWQgdG8gJXMnLCBzYXZlX2RpcikKIAotICAgICAgICAjIFBlcmZvcm0gYSBidWlsZC4KLSAgICAgICAgcmVwcm9kdWNpYmxlQV90bXAgPSBvcy5wYXRoLmpvaW4oc2VsZi50b3BkaXIsICdyZXByb2R1Y2libGVBJywgJ3RtcCcpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHJlcHJvZHVjaWJsZUFfdG1wKToKLSAgICAgICAgICAgIGJiLnV0aWxzLnJlbW92ZShyZXByb2R1Y2libGVBX3RtcCwgcmVjdXJzZT1UcnVlKQotCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCh0ZXh0d3JhcC5kZWRlbnQoJycnXAotICAgICAgICAgICAgVE1QRElSID0gIiVzIgotICAgICAgICAgICAgJycnKSAlIHJlcHJvZHVjaWJsZUFfdG1wKSArIGNvbW1vbl9jb25maWcpCi0gICAgICAgIHZhcnNfQSA9IGdldF9iYl92YXJzKGNhcHR1cmVfdmFycykKLSAgICAgICAgYml0YmFrZSgnICcuam9pbihzZWxmLmltYWdlcykpCi0KLSAgICAgICAgIyBQZXJmb3JtIGFub3RoZXIgYnVpbGQuCi0gICAgICAgIHJlcHJvZHVjaWJsZUJfdG1wID0gb3MucGF0aC5qb2luKHNlbGYudG9wZGlyLCAncmVwcm9kdWNpYmxlQicsICd0bXAnKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhyZXByb2R1Y2libGVCX3RtcCk6Ci0gICAgICAgICAgICBiYi51dGlscy5yZW1vdmUocmVwcm9kdWNpYmxlQl90bXAsIHJlY3Vyc2U9VHJ1ZSkKLQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygodGV4dHdyYXAuZGVkZW50KCcnJ1wKLSAgICAgICAgICAgIFNTVEFURV9NSVJST1IgPSAiIgotICAgICAgICAgICAgVE1QRElSID0gIiVzIgotICAgICAgICAgICAgJycnKSAlIHJlcHJvZHVjaWJsZUJfdG1wKSArIGNvbW1vbl9jb25maWcpCi0gICAgICAgIHZhcnNfQiA9IGdldF9iYl92YXJzKGNhcHR1cmVfdmFycykKLSAgICAgICAgYml0YmFrZSgnICcuam9pbihzZWxmLmltYWdlcykpCisgICAgICAgIHZhcnNfQSA9IHNlbGYuZG9fdGVzdF9idWlsZCgncmVwcm9kdWNpYmxlQScsIHNlbGYuYnVpbGRfZnJvbV9zc3RhdGUpCisgICAgICAgIHZhcnNfQiA9IHNlbGYuZG9fdGVzdF9idWlsZCgncmVwcm9kdWNpYmxlQicsIEZhbHNlKQogCiAgICAgICAgICMgTk9URTogVGhlIHRlbXAgZGlyZWN0b3JpZXMgZnJvbSB0aGUgcmVwcm9kdWNpYmxlIGJ1aWxkIGFyZSBwdXJwb3NlbHkKICAgICAgICAgIyBrZXB0IGFmdGVyIHRoZSBidWlsZCBzbyBpdCBjYW4gYmUgZGlmZmVkIGZvciBkZWJ1Z2dpbmcuCiAKKyAgICAgICAgZmFpbHMgPSBbXQorCiAgICAgICAgIGZvciBjIGluIHNlbGYucGFja2FnZV9jbGFzc2VzOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocGFja2FnZV9jbGFzcz1jKToKICAgICAgICAgICAgICAgICBwYWNrYWdlX2NsYXNzID0gJ3BhY2thZ2VfJyArIGMKQEAgLTE5MywxMCArMjEzLDI4IEBACiAKICAgICAgICAgICAgICAgICBpZiBzZWxmLnNhdmVfcmVzdWx0czoKICAgICAgICAgICAgICAgICAgICAgZm9yIGQgaW4gcmVzdWx0LmRpZmZlcmVudDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29weV9maWxlKGQucmVmZXJlbmNlLCAnLycuam9pbihbc2F2ZV9kaXIsIGQucmVmZXJlbmNlXSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvcHlfZmlsZShkLnRlc3QsICcvJy5qb2luKFtzYXZlX2RpciwgZC50ZXN0XSkpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvcHlfZmlsZShkLnJlZmVyZW5jZSwgJy8nLmpvaW4oW3NhdmVfZGlyLCAncGFja2FnZXMnLCBzdHJpcF90b3BkaXIoZC5yZWZlcmVuY2UpXSkpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvcHlfZmlsZShkLnRlc3QsICcvJy5qb2luKFtzYXZlX2RpciwgJ3BhY2thZ2VzJywgc3RyaXBfdG9wZGlyKGQudGVzdCldKSkKIAogICAgICAgICAgICAgICAgIGlmIHJlc3VsdC5taXNzaW5nIG9yIHJlc3VsdC5kaWZmZXJlbnQ6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiVGhlIGZvbGxvd2luZyAlcyBwYWNrYWdlcyBhcmUgbWlzc2luZyBvciBkaWZmZXJlbnQ6ICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGMsICcgJy5qb2luKHIudGVzdCBmb3IgciBpbiAocmVzdWx0Lm1pc3NpbmcgKyByZXN1bHQuZGlmZmVyZW50KSkpKQorICAgICAgICAgICAgICAgICAgICBmYWlscy5hcHBlbmQoIlRoZSBmb2xsb3dpbmcgJXMgcGFja2FnZXMgYXJlIG1pc3Npbmcgb3IgZGlmZmVyZW50OiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjLCAnXG4nLmpvaW4oci50ZXN0IGZvciByIGluIChyZXN1bHQubWlzc2luZyArIHJlc3VsdC5kaWZmZXJlbnQpKSkpCisKKyAgICAgICAgIyBDbGVhbiB1cCBlbXB0eSBkaXJlY3RvcmllcworICAgICAgICBpZiBzZWxmLnNhdmVfcmVzdWx0czoKKyAgICAgICAgICAgIGlmIG5vdCBvcy5saXN0ZGlyKHNhdmVfZGlyKToKKyAgICAgICAgICAgICAgICBvcy5ybWRpcihzYXZlX2RpcikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygnUnVubmluZyBkaWZmb3Njb3BlJykKKyAgICAgICAgICAgICAgICBwYWNrYWdlX2RpciA9IG9zLnBhdGguam9pbihzYXZlX2RpciwgJ3BhY2thZ2VzJykKKyAgICAgICAgICAgICAgICBwYWNrYWdlX2h0bWxfZGlyID0gb3MucGF0aC5qb2luKHBhY2thZ2VfZGlyLCAnZGlmZi1odG1sJykKKworICAgICAgICAgICAgICAgICMgQ29weSBqcXVlcnkgdG8gaW1wcm92ZSB0aGUgZGlmZm9zY29wZSBvdXRwdXQgdXNhYmlsaXR5CisgICAgICAgICAgICAgICAgc2VsZi5jb3B5X2ZpbGUob3MucGF0aC5qb2luKGpxdWVyeV9zeXNyb290LCAndXNyL3NoYXJlL2phdmFzY3JpcHQvanF1ZXJ5L2pxdWVyeS5taW4uanMnKSwgb3MucGF0aC5qb2luKHBhY2thZ2VfaHRtbF9kaXIsICdqcXVlcnkuanMnKSkKKworICAgICAgICAgICAgICAgIHJ1bkNtZChbJ2RpZmZvc2NvcGUnLCAnLS1uby1kZWZhdWx0LWxpbWl0cycsICctLWV4Y2x1ZGUtZGlyZWN0b3J5LW1ldGFkYXRhJywgJy0taHRtbC1kaXInLCBwYWNrYWdlX2h0bWxfZGlyLCAncmVwcm9kdWNpYmxlQScsICdyZXByb2R1Y2libGVCJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfc3lzcm9vdD1kaWZmb3Njb3BlX3N5c3Jvb3QsIGlnbm9yZV9zdGF0dXM9VHJ1ZSwgY3dkPXBhY2thZ2VfZGlyKQorCisgICAgICAgIGlmIGZhaWxzOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdcbicuam9pbihmYWlscykpCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW50aW1lX3Rlc3QucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVudGltZV90ZXN0LnB5CmluZGV4IDRiNTZlNWIuLjYwY2IyZTAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW50aW1lX3Rlc3QucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnRpbWVfdGVzdC5weQpAQCAtMTAsNiArMTAsNyBAQAogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgb2UubHNiCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGF0YSBpbXBvcnQgc2tpcElmTm90UWVtdQogCiBjbGFzcyBUZXN0RXhwb3J0KE9FU2VsZnRlc3RUZXN0Q2FzZSk6CiAKQEAgLTE2Niw5ICsxNjcsOSBAQAogICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLWZ1bGwtY21kbGluZSBzb2NhdCcpCiAgICAgICAgIGJpdGJha2UoJy1jIHRlc3RpbWFnZSBjb3JlLWltYWdlLWZ1bGwtY21kbGluZScpCiAKLSAgICBkZWYgdGVzdF90ZXN0aW1hZ2VfdmlyZ2xfZ3RrKHNlbGYpOgorICAgIGRlZiB0ZXN0X3Rlc3RpbWFnZV92aXJnbF9ndGtfc2RsKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogQ2hlY2sgaG9zdC1hc3Npc3RlZCBhY2NlbGVyYXRlIE9wZW5HTCBmdW5jdGlvbmFsaXR5IGluIHFlbXUgd2l0aCBndGsgZnJvbnRlbmQKKyAgICAgICAgU3VtbWFyeTogQ2hlY2sgaG9zdC1hc3Npc3RlZCBhY2NlbGVyYXRlIE9wZW5HTCBmdW5jdGlvbmFsaXR5IGluIHFlbXUgd2l0aCBndGsgYW5kIFNETCBmcm9udGVuZHMKICAgICAgICAgRXhwZWN0ZWQ6IDEuIENoZWNrIHRoYXQgdmlyZ2wga2VybmVsIGRyaXZlciBpcyBsb2FkZWQgYW5kIDNkIGFjY2VsZXJhdGlvbiBpcyBlbmFibGVkCiAgICAgICAgICAgICAgICAgICAyLiBDaGVjayB0aGF0IGttc2N1YmUgZGVtbyBydW5zIHdpdGhvdXQgY3Jhc2hpbmcuCiAgICAgICAgIFByb2R1Y3Q6IG9lLWNvcmUKQEAgLTE4MSwyMCArMTgyLDMxIEBACiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCd2aXJnbCBpc25cJ3Qgd29ya2luZyB3aXRoIERlYmlhbiA4JykKICAgICAgICAgaWYgZGlzdHJvIGFuZCBkaXN0cm8gPT0gJ2NlbnRvcy03JzoKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ3ZpcmdsIGlzblwndCB3b3JraW5nIHdpdGggQ2VudG9zIDcnKQorICAgICAgICBpZiBkaXN0cm8gYW5kIGRpc3RybyA9PSAnb3BlbnN1c2VsZWFwLTE1LjAnOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgndmlyZ2wgaXNuXCd0IHdvcmtpbmcgd2l0aCBPcGVuc3VzZSAxNS4wJykKIAogICAgICAgICBxZW11X3BhY2thZ2Vjb25maWcgPSBnZXRfYmJfdmFyKCdQQUNLQUdFQ09ORklHJywgJ3FlbXUtc3lzdGVtLW5hdGl2ZScpCisgICAgICAgIHNkbF9wYWNrYWdlY29uZmlnID0gZ2V0X2JiX3ZhcignUEFDS0FHRUNPTkZJRycsICdsaWJzZGwyLW5hdGl2ZScpCiAgICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gInRlc3RpbWFnZSJcbicKICAgICAgICAgaWYgJ2d0aysnIG5vdCBpbiBxZW11X3BhY2thZ2Vjb25maWc6CiAgICAgICAgICAgICBmZWF0dXJlcyArPSAnUEFDS0FHRUNPTkZJR19hcHBlbmRfcG4tcWVtdS1zeXN0ZW0tbmF0aXZlID0gIiBndGsrIlxuJworICAgICAgICBpZiAnc2RsJyBub3QgaW4gcWVtdV9wYWNrYWdlY29uZmlnOgorICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VDT05GSUdfYXBwZW5kX3BuLXFlbXUtc3lzdGVtLW5hdGl2ZSA9ICIgc2RsIlxuJwogICAgICAgICBpZiAndmlyZ2xyZW5kZXJlcicgbm90IGluIHFlbXVfcGFja2FnZWNvbmZpZzoKICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdQQUNLQUdFQ09ORklHX2FwcGVuZF9wbi1xZW11LXN5c3RlbS1uYXRpdmUgPSAiIHZpcmdscmVuZGVyZXIiXG4nCiAgICAgICAgIGlmICdnbHgnIG5vdCBpbiBxZW11X3BhY2thZ2Vjb25maWc6CiAgICAgICAgICAgICBmZWF0dXJlcyArPSAnUEFDS0FHRUNPTkZJR19hcHBlbmRfcG4tcWVtdS1zeXN0ZW0tbmF0aXZlID0gIiBnbHgiXG4nCisgICAgICAgIGlmICdvcGVuZ2wnIG5vdCBpbiBzZGxfcGFja2FnZWNvbmZpZzoKKyAgICAgICAgICAgIGZlYXR1cmVzICs9ICdQQUNLQUdFQ09ORklHX2FwcGVuZF9wbi1saWJzZGwyLW5hdGl2ZSA9ICIgb3BlbmdsIlxuJwogICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9TVUlURVMgPSAicGluZyBzc2ggdmlyZ2wiXG4nCiAgICAgICAgIGZlYXR1cmVzICs9ICdJTUFHRV9GRUFUVVJFU19hcHBlbmQgPSAiIHNzaC1zZXJ2ZXItZHJvcGJlYXIiXG4nCiAgICAgICAgIGZlYXR1cmVzICs9ICdJTUFHRV9JTlNUQUxMX2FwcGVuZCA9ICIga21zY3ViZSJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfUlVOUUVNVVBBUkFNUyA9ICJndGsgZ2wiXG4nCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorICAgICAgICBmZWF0dXJlc19ndGsgPSBmZWF0dXJlcyArICdURVNUX1JVTlFFTVVQQVJBTVMgPSAiZ3RrIGdsIlxuJworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlc19ndGspCisgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgIGJpdGJha2UoJy1jIHRlc3RpbWFnZSBjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICBmZWF0dXJlc19zZGwgPSBmZWF0dXJlcyArICdURVNUX1JVTlFFTVVQQVJBTVMgPSAic2RsIGdsIlxuJworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlc19zZGwpCiAgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCiAgICAgICAgIGJpdGJha2UoJy1jIHRlc3RpbWFnZSBjb3JlLWltYWdlLW1pbmltYWwnKQogCkBAIC0yMzIsNyArMjQ0LDQ3IEBACiAgICAgICAgIGJpdGJha2UoJy1jIHRlc3RpbWFnZSBjb3JlLWltYWdlLW1pbmltYWwnKQogCiBjbGFzcyBQb3N0aW5zdChPRVNlbGZ0ZXN0VGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X3Bvc3RpbnN0X3Jvb3Rmc19hbmRfYm9vdChzZWxmKToKKworICAgIGRlZiBpbml0X21hbmFnZXJfbG9vcChzZWxmLCBpbml0X21hbmFnZXIpOgorICAgICAgICBpbXBvcnQgb2UucGF0aAorCisgICAgICAgIHZhcnMgPSBnZXRfYmJfdmFycygoIklNQUdFX1JPT1RGUyIsICJzeXNjb25mZGlyIiksICJjb3JlLWltYWdlLW1pbmltYWwiKQorICAgICAgICByb290ZnMgPSB2YXJzWyJJTUFHRV9ST09URlMiXQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyb290ZnMpCisgICAgICAgIHN5c2NvbmZkaXIgPSB2YXJzWyJzeXNjb25mZGlyIl0KKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoc3lzY29uZmRpcikKKyAgICAgICAgIyBOZWVkIHRvIHVzZSBvZS5wYXRoIGhlcmUgYXMgc3lzY29uZmRpciBzdGFydHMgd2l0aCAvCisgICAgICAgIGhvc3R0ZXN0ZGlyID0gb2UucGF0aC5qb2luKHJvb3Rmcywgc3lzY29uZmRpciwgInBvc3RpbnN0LXRlc3QiKQorICAgICAgICB0YXJnZXR0ZXN0ZGlyID0gb3MucGF0aC5qb2luKHN5c2NvbmZkaXIsICJwb3N0aW5zdC10ZXN0IikKKworICAgICAgICBmb3IgY2xhc3NlcyBpbiAoInBhY2thZ2VfcnBtIiwgInBhY2thZ2VfZGViIiwgInBhY2thZ2VfaXBrIik6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChpbml0X21hbmFnZXI9aW5pdF9tYW5hZ2VyLCBwYWNrYWdlX2NsYXNzPWNsYXNzZXMpOgorICAgICAgICAgICAgICAgIGZlYXR1cmVzID0gJ0NPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCA9ICJwb3N0aW5zdC1kZWxheWVkLWIiXG4nCisgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ0lNQUdFX0ZFQVRVUkVTICs9ICJwYWNrYWdlLW1hbmFnZW1lbnQgZW1wdHktcm9vdC1wYXNzd29yZCJcbicKKyAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnUEFDS0FHRV9DTEFTU0VTID0gIiVzIlxuJyAlIGNsYXNzZXMKKyAgICAgICAgICAgICAgICBpZiBpbml0X21hbmFnZXIgPT0gInN5c3RlbWQiOgorICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnRElTVFJPX0ZFQVRVUkVTX2FwcGVuZCA9ICIgc3lzdGVtZCJcbicKKyAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXIgPSAic3lzdGVtZCJcbicKKyAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ0RJU1RST19GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEID0gInN5c3Zpbml0IlxuJworICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnVklSVFVBTC1SVU5USU1FX2luaXRzY3JpcHRzID0gIiJcbicKKyAgICAgICAgICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICAgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGhvc3R0ZXN0ZGlyLCAicm9vdGZzIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicm9vdGZzIHN0YXRlIGZpbGUgd2FzIG5vdCBjcmVhdGVkIikKKworICAgICAgICAgICAgICAgIHdpdGggcnVucWVtdSgnY29yZS1pbWFnZS1taW5pbWFsJykgYXMgcWVtdToKKyAgICAgICAgICAgICAgICAgICAgIyBNYWtlIHRoZSB0ZXN0IGVjaG8gYSBzdHJpbmcgYW5kIHNlYXJjaCBmb3IgdGhhdCBhcworICAgICAgICAgICAgICAgICAgICAjIHJ1bl9zZXJpYWwoKSdzIHN0YXR1cyBjb2RlIGlzIHVzZWxlc3MuJworICAgICAgICAgICAgICAgICAgICBmb3IgZmlsZW5hbWUgaW4gKCJyb290ZnMiLCAiZGVsYXllZC1hIiwgImRlbGF5ZWQtYiIpOgorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBxZW11LnJ1bl9zZXJpYWwoInRlc3QgLWYgJXMgJiYgZWNobyBmb3VuZCIgJSBvcy5wYXRoLmpvaW4odGFyZ2V0dGVzdGRpciwgZmlsZW5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsICJmb3VuZCIsICIlcyB3YXMgbm90IHByZXNlbnQgb24gYm9vdCIgJSBmaWxlbmFtZSkKKworCisKKyAgICBAc2tpcElmTm90UWVtdSgncWVtdWFsbCcsICdUZXN0IG9ubHkgcnVucyBpbiBxZW11JykKKyAgICBkZWYgdGVzdF9wb3N0aW5zdF9yb290ZnNfYW5kX2Jvb3Rfc3lzdmluaXQoc2VsZik6CiAgICAgICAgICIiIgogICAgICAgICBTdW1tYXJ5OiAgICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyB0ZXN0IGNhc2UgaXMgdG8gdmVyaWZ5IFBvc3QtaW5zdGFsbGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRzIGFyZSBjYWxsZWQgd2hlbiByb290ZnMgaXMgY3JlYXRlZCBhbmQgYWxzbyB0ZXN0CkBAIC0yNDYsNDYgKzI5OCwzMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBieSBwb3N0aW5zdF9ib290IHJlY2lwZSBpcyBwcmVzZW50IG9uIGltYWdlLgogICAgICAgICBFeHBlY3RlZDogICAgICAgVGhlIGZpbGVzIGFyZSBzdWNjZXNzZnVsbHkgY3JlYXRlZCBkdXJpbmcgcm9vdGZzIGFuZCBib290CiAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lIGZvciAzIGRpZmZlcmVudCBwYWNrYWdlIG1hbmFnZXJzOiBycG0saXBrLGRlYiBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpbml0aWFsaXphdGlvbiBtYW5hZ2Vyczogc3lzdmluaXQgYW5kIHN5c3RlbWQuCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5pdGlhbGl6YXRpb24gbWFuYWdlcnM6IHN5c3Zpbml0LgorCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmluaXRfbWFuYWdlcl9sb29wKCJzeXN2aW5pdCIpCisKKworICAgIEBza2lwSWZOb3RRZW11KCdxZW11YWxsJywgJ1Rlc3Qgb25seSBydW5zIGluIHFlbXUnKQorICAgIGRlZiB0ZXN0X3Bvc3RpbnN0X3Jvb3Rmc19hbmRfYm9vdF9zeXN0ZW1kKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgdGVzdCBjYXNlIGlzIHRvIHZlcmlmeSBQb3N0LWluc3RhbGxhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0cyBhcmUgY2FsbGVkIHdoZW4gcm9vdGZzIGlzIGNyZWF0ZWQgYW5kIGFsc28gdGVzdAorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBzY3JpcHQgY2FuIGJlIGRlbGF5ZWQgdG8gcnVuIGF0IGZpcnN0IGJvb3QuCisgICAgICAgIERlcGVuZGVuY2llczogICBOQQorICAgICAgICBTdGVwczogICAgICAgICAgMS4gQWRkIHByb3BlciBjb25maWd1cmF0aW9uIHRvIGxvY2FsLmNvbmYgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgMi4gQnVpbGQgYSAiY29yZS1pbWFnZS1taW5pbWFsIiBpbWFnZQorICAgICAgICAgICAgICAgICAgICAgICAgMy4gVmVyaWZ5IHRoYXQgZmlsZSBjcmVhdGVkIGJ5IHBvc3RpbnN0X3Jvb3RmcyByZWNpcGUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlbnQgb24gcm9vdGZzIGRpci4KKyAgICAgICAgICAgICAgICAgICAgICAgIDQuIEJvb3QgdGhlIGltYWdlIGNyZWF0ZWQgb24gcWVtdSBhbmQgdmVyaWZ5IHRoYXQgdGhlIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgYnkgcG9zdGluc3RfYm9vdCByZWNpcGUgaXMgcHJlc2VudCBvbiBpbWFnZS4KKyAgICAgICAgRXhwZWN0ZWQ6ICAgICAgIFRoZSBmaWxlcyBhcmUgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgZHVyaW5nIHJvb3RmcyBhbmQgYm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgdGltZSBmb3IgMyBkaWZmZXJlbnQgcGFja2FnZSBtYW5hZ2VyczogcnBtLGlwayxkZWIgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5pdGlhbGl6YXRpb24gbWFuYWdlcnM6IHN5c3RlbWQuCiAKICAgICAgICAgIiIiCiAKLSAgICAgICAgaW1wb3J0IG9lLnBhdGgKLQotICAgICAgICB2YXJzID0gZ2V0X2JiX3ZhcnMoKCJJTUFHRV9ST09URlMiLCAic3lzY29uZmRpciIpLCAiY29yZS1pbWFnZS1taW5pbWFsIikKLSAgICAgICAgcm9vdGZzID0gdmFyc1siSU1BR0VfUk9PVEZTIl0KLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocm9vdGZzKQotICAgICAgICBzeXNjb25mZGlyID0gdmFyc1sic3lzY29uZmRpciJdCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHN5c2NvbmZkaXIpCi0gICAgICAgICMgTmVlZCB0byB1c2Ugb2UucGF0aCBoZXJlIGFzIHN5c2NvbmZkaXIgc3RhcnRzIHdpdGggLwotICAgICAgICBob3N0dGVzdGRpciA9IG9lLnBhdGguam9pbihyb290ZnMsIHN5c2NvbmZkaXIsICJwb3N0aW5zdC10ZXN0IikKLSAgICAgICAgdGFyZ2V0dGVzdGRpciA9IG9zLnBhdGguam9pbihzeXNjb25mZGlyLCAicG9zdGluc3QtdGVzdCIpCi0KLSAgICAgICAgZm9yIGluaXRfbWFuYWdlciBpbiAoInN5c3Zpbml0IiwgInN5c3RlbWQiKToKLSAgICAgICAgICAgIGZvciBjbGFzc2VzIGluICgicGFja2FnZV9ycG0iLCAicGFja2FnZV9kZWIiLCAicGFja2FnZV9pcGsiKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChpbml0X21hbmFnZXI9aW5pdF9tYW5hZ2VyLCBwYWNrYWdlX2NsYXNzPWNsYXNzZXMpOgotICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyA9ICdDT1JFX0lNQUdFX0VYVFJBX0lOU1RBTEwgPSAicG9zdGluc3QtZGVsYXllZC1iIlxuJwotICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnSU1BR0VfRkVBVFVSRVMgKz0gInBhY2thZ2UtbWFuYWdlbWVudCBlbXB0eS1yb290LXBhc3N3b3JkIlxuJwotICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnUEFDS0FHRV9DTEFTU0VTID0gIiVzIlxuJyAlIGNsYXNzZXMKLSAgICAgICAgICAgICAgICAgICAgaWYgaW5pdF9tYW5hZ2VyID09ICJzeXN0ZW1kIjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdESVNUUk9fRkVBVFVSRVNfYXBwZW5kID0gIiBzeXN0ZW1kIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXIgPSAic3lzdGVtZCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdESVNUUk9fRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRCA9ICJzeXN2aW5pdCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdWSVJUVUFMLVJVTlRJTUVfaW5pdHNjcmlwdHMgPSAiIlxuJwotICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKLQotICAgICAgICAgICAgICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQotCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oaG9zdHRlc3RkaXIsICJyb290ZnMiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicm9vdGZzIHN0YXRlIGZpbGUgd2FzIG5vdCBjcmVhdGVkIikKLQotICAgICAgICAgICAgICAgICAgICB3aXRoIHJ1bnFlbXUoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpIGFzIHFlbXU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIE1ha2UgdGhlIHRlc3QgZWNobyBhIHN0cmluZyBhbmQgc2VhcmNoIGZvciB0aGF0IGFzCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHJ1bl9zZXJpYWwoKSdzIHN0YXR1cyBjb2RlIGlzIHVzZWxlc3MuJwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluICgicm9vdGZzIiwgImRlbGF5ZWQtYSIsICJkZWxheWVkLWIiKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHFlbXUucnVuX3NlcmlhbCgidGVzdCAtZiAlcyAmJiBlY2hvIGZvdW5kIiAlIG9zLnBhdGguam9pbih0YXJnZXR0ZXN0ZGlyLCBmaWxlbmFtZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsICJmb3VuZCIsICIlcyB3YXMgbm90IHByZXNlbnQgb24gYm9vdCIgJSBmaWxlbmFtZSkKLQorICAgICAgICBzZWxmLmluaXRfbWFuYWdlcl9sb29wKCJzeXN0ZW1kIikKIAogCiAgICAgZGVmIHRlc3RfZmFpbGluZ19wb3N0aW5zdChzZWxmKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zaWduaW5nLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NpZ25pbmcucHkKaW5kZXggOTNiMTVhZS4uMjAyZDU0OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NpZ25pbmcucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NpZ25pbmcucHkKQEAgLTE1Nyw4ICsxNTcsOCBAQAogICAgICAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gJXMnICUgdGVzdF9yZWNpcGUpCiAgICAgICAgICAgICBiaXRiYWtlKCctYyBwb3B1bGF0ZV9saWMgJXMnICUgdGVzdF9yZWNpcGUpCiAKLSAgICAgICAgICAgIHJlY2lwZV9zaWcgPSBnbG9iLmdsb2Ioc3N0YXRlZGlyICsgJy8qLyo6ZWQ6Kl9wb3B1bGF0ZV9saWMudGd6LnNpZycpCi0gICAgICAgICAgICByZWNpcGVfdGd6ID0gZ2xvYi5nbG9iKHNzdGF0ZWRpciArICcvKi8qOmVkOipfcG9wdWxhdGVfbGljLnRneicpCisgICAgICAgICAgICByZWNpcGVfc2lnID0gZ2xvYi5nbG9iKHNzdGF0ZWRpciArICcvKi8qLyo6ZWQ6Kl9wb3B1bGF0ZV9saWMudGd6LnNpZycpCisgICAgICAgICAgICByZWNpcGVfdGd6ID0gZ2xvYi5nbG9iKHNzdGF0ZWRpciArICcvKi8qLyo6ZWQ6Kl9wb3B1bGF0ZV9saWMudGd6JykKIAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVjaXBlX3NpZyksIDEsICdGYWlsZWQgdG8gZmluZCAuc2lnIGZpbGUuJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlY2lwZV90Z3opLCAxLCAnRmFpbGVkIHRvIGZpbmQgLnRneiBmaWxlLicpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRlLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NzdGF0ZS5weQppbmRleCA0MTBkZWM2Li44MGNlOWUzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGUucHkKQEAgLTU2LDExICs1NiwxMSBAQAogICAgIGRlZiBzZWFyY2hfc3N0YXRlKHNlbGYsIGZpbGVuYW1lX3JlZ2V4LCBkaXN0cm9fc3BlY2lmaWM9VHJ1ZSwgZGlzdHJvX25vbnNwZWNpZmljPVRydWUpOgogICAgICAgICByZXN1bHQgPSBbXQogICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhzZWxmLnNzdGF0ZV9wYXRoKToKLSAgICAgICAgICAgIGlmIGRpc3Ryb19zcGVjaWZpYyBhbmQgcmUuc2VhcmNoKCIlcy9bYS16MC05XXsyfSQiICUgc2VsZi5ob3N0ZGlzdHJvLCByb290KToKKyAgICAgICAgICAgIGlmIGRpc3Ryb19zcGVjaWZpYyBhbmQgcmUuc2VhcmNoKHIiJXMvJXMvW2EtejAtOV17Mn0vW2EtejAtOV17Mn0kIiAlIChzZWxmLnNzdGF0ZV9wYXRoLCBzZWxmLmhvc3RkaXN0cm8pLCByb290KToKICAgICAgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKICAgICAgICAgICAgICAgICAgICAgaWYgcmUuc2VhcmNoKGZpbGVuYW1lX3JlZ2V4LCBmKToKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZikKLSAgICAgICAgICAgIGlmIGRpc3Ryb19ub25zcGVjaWZpYyBhbmQgcmUuc2VhcmNoKCIlcy9bYS16MC05XXsyfSQiICUgc2VsZi5zc3RhdGVfcGF0aCwgcm9vdCk6CisgICAgICAgICAgICBpZiBkaXN0cm9fbm9uc3BlY2lmaWMgYW5kIHJlLnNlYXJjaChyIiVzL1thLXowLTldezJ9L1thLXowLTldezJ9JCIgJSBzZWxmLnNzdGF0ZV9wYXRoLCByb290KToKICAgICAgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKICAgICAgICAgICAgICAgICAgICAgaWYgcmUuc2VhcmNoKGZpbGVuYW1lX3JlZ2V4LCBmKToKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGV0ZXN0cy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGV0ZXN0cy5weQppbmRleCA2NzU3YTBlLi45YWRiNTExIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRldGVzdHMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NzdGF0ZXRlc3RzLnB5CkBAIC00NDYsNiArNDQ2LDQ2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Q291bnRFcXVhbChmaWxlczEsIGZpbGVzMikKIAogCisgICAgZGVmIHRlc3Rfc3N0YXRlX211bHRpbGliX29yX25vdF9uYXRpdmVfc2FtZXNpZ3Moc2VsZik6CisgICAgICAgICIiIlRoZSBzc3RhdGUgY2hlY2tzdW1zIG9mIHR3byBuYXRpdmUgcmVjaXBlcyAoYW5kIHRoZWlyIGRlcGVuZGVuY2llcykKKyAgICAgICAgd2hlcmUgdGhlIHRhcmdldCBpcyB1c2luZyBtdWx0aWxpYiBpbiBvbmUgYnV0IG5vdCB0aGUgb3RoZXIKKyAgICAgICAgc2hvdWxkIGJlIHRoZSBzYW1lLiBXZSB1c2UgdGhlIHFlbXV4ODZjb3B5IG1hY2hpbmUgdG8gdGVzdAorICAgICAgICB0aGlzLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKK1RNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaFwiCitUQ0xJQkNBUFBFTkQgPSBcIlwiCitNQUNISU5FID0gXCJxZW11eDg2XCIKK3JlcXVpcmUgY29uZi9tdWx0aWxpYi5jb25mCitNVUxUSUxJQlMgPSAibXVsdGlsaWI6bGliMzIiCitERUZBVUxUVFVORV92aXJ0Y2xhc3MtbXVsdGlsaWItbGliMzIgPSAieDg2IgorQkJfU0lHTkFUVVJFX0hBTkRMRVIgPSAiT0VCYXNpY0hhc2giCisiIiIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaCIpCisgICAgICAgIGJpdGJha2UoImJpbnV0aWxzLW5hdGl2ZSAgLVMgbm9uZSIpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgorVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoMlwiCitUQ0xJQkNBUFBFTkQgPSBcIlwiCitNQUNISU5FID0gXCJxZW11eDg2Y29weVwiCitCQl9TSUdOQVRVUkVfSEFORExFUiA9ICJPRUJhc2ljSGFzaCIKKyIiIikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMiIpCisgICAgICAgIGJpdGJha2UoImJpbnV0aWxzLW5hdGl2ZSAtUyBub25lIikKKworICAgICAgICBkZWYgZ2V0X2ZpbGVzKGQpOgorICAgICAgICAgICAgZiA9IFtdCisgICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkKToKKyAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgZi5hcHBlbmQob3MucGF0aC5qb2luKHJvb3QsIG5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIGYKKyAgICAgICAgZmlsZXMxID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gvc3RhbXBzIikKKyAgICAgICAgZmlsZXMyID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyL3N0YW1wcyIpCisgICAgICAgIGZpbGVzMiA9IFt4LnJlcGxhY2UoInRtcC1zc3RhdGVzYW1laGFzaDIiLCAidG1wLXNzdGF0ZXNhbWVoYXNoIikgZm9yIHggaW4gZmlsZXMyXQorICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0Q291bnRFcXVhbChmaWxlczEsIGZpbGVzMikKKworCiAgICAgZGVmIHRlc3Rfc3N0YXRlX25vb3Bfc2FtZXNpZ3Moc2VsZik6CiAgICAgICAgICIiIgogICAgICAgICBUaGUgc3N0YXRlIGNoZWNrc3VtcyBvZiB0d28gYnVpbGRzIHdpdGggdGhlc2UgdmFyaWFibGVzIGNoYW5nZWQgb3IKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zeXNyb290LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3N5c3Jvb3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmUzNDkyNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zeXNyb290LnB5CkBAIC0wLDAgKzEsMzcgQEAKKyMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorIworCitpbXBvcnQgdXVpZAorCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0ICBiaXRiYWtlCisKK2NsYXNzIFN5c3Jvb3RUZXN0cyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3N5c3Jvb3RfY2xlYW51cChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIEJ1aWxkIHN5c3Jvb3QgdGVzdCB3aGljaCBkZXBlbmRzIG9uIHZpcnR1YWwvc3lzcm9vdC10ZXN0IGZvciBvbmUgbWFjaGluZSwKKyAgICAgICAgc3dpdGNoIG1hY2hpbmUsIHN3aXRjaCBwcm92aWRlciBvZiB2aXJ0dWFsL3N5c3Jvb3QtdGVzdCBhbmQgY2hlY2sgdGhhdCB0aGUKKyAgICAgICAgc3lzcm9vdCBpcyBjb3JyZWN0bHkgY2xlYW5lZCB1cC4gVGhlIGZpbGVzIGluIHRoZSB0d28gcHJvdmlkZXJzIG92ZXJsYXAKKyAgICAgICAgc28gY2FuIGNhdXNlIGVycm9ycyBpZiB0aGUgc3lzcm9vdCBjb2RlIGRvZXNuJ3QgZnVuY3Rpb24gY29ycmVjdGx5LgorICAgICAgICBZZXMsIHN5c3Jvb3QtdGVzdCBzaG91bGQgYmUgbWFjaGluZSBzcGVjaWZpYyByZWFsbHkgdG8gYXZvaWQgdGhpcywgaG93ZXZlcgorICAgICAgICB0aGUgc3lzcm9vdCBjbGVhbnVwIHNob3VsZCBhbHNvIHdvcmsgW1lPQ1RPICMxMzcwMl0uIAorICAgICAgICAiIiIKKworICAgICAgICB1dWlkMSA9IHV1aWQudXVpZDQoKQorICAgICAgICB1dWlkMiA9IHV1aWQudXVpZDQoKQorCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgorUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvc3lzcm9vdC10ZXN0ID0gInN5c3Jvb3QtdGVzdC1hcmNoMSIKK01BQ0hJTkUgPSAicWVtdXg4NiIKK1RFU1RTVFJJTkdfcG4tc3lzcm9vdC10ZXN0LWFyY2gxID0gIiVzIgorVEVTVFNUUklOR19wbi1zeXNyb290LXRlc3QtYXJjaDIgPSAiJXMiCisiIiIgJSAodXVpZDEsIHV1aWQyKSkKKyAgICAgICAgYml0YmFrZSgic3lzcm9vdC10ZXN0IikKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCitQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9zeXNyb290LXRlc3QgPSAic3lzcm9vdC10ZXN0LWFyY2gyIgorTUFDSElORSA9ICJxZW11eDg2Y29weSIKK1RFU1RTVFJJTkdfcG4tc3lzcm9vdC10ZXN0LWFyY2gxID0gIiVzIgorVEVTVFNUUklOR19wbi1zeXNyb290LXRlc3QtYXJjaDIgPSAiJXMiCisiIiIgJSAodXVpZDEsIHV1aWQyKSkKKyAgICAgICAgYml0YmFrZSgic3lzcm9vdC10ZXN0IikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy90aW5mb2lsLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3RpbmZvaWwucHkKaW5kZXggNDJhMWI2Yi4uZDFhYTdiOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3RpbmZvaWwucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3RpbmZvaWwucHkKQEAgLTY1LDE5ICs2NSw2IEBACiAgICAgICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdQTicsICdoZWxsbycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycsIGxvY2FsZGF0YS5nZXRWYXIoJ0JQTicpKQogCi0gICAgZGVmIHRlc3RfcGFyc2VfcmVjaXBlX2luaXRpYWxfZGF0YXN0b3JlKHNlbGYpOgotICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6Ci0gICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9RmFsc2UsIHF1aWV0PTIpCi0gICAgICAgICAgICB0ZXN0cmVjaXBlID0gJ21kYWRtJwotICAgICAgICAgICAgYmVzdCA9IHRpbmZvaWwuZmluZF9iZXN0X3Byb3ZpZGVyKHRlc3RyZWNpcGUpCi0gICAgICAgICAgICBpZiBub3QgYmVzdDoKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBmaW5kIHJlY2lwZSBwcm92aWRpbmcgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgICAgIGRjb3B5ID0gYmIuZGF0YS5jcmVhdGVDb3B5KHRpbmZvaWwuY29uZmlnX2RhdGEpCi0gICAgICAgICAgICBkY29weS5zZXRWYXIoJ01ZVkFSSUFCTEUnLCAnc29tZXZhbHVlJykKLSAgICAgICAgICAgIHJkID0gdGluZm9pbC5wYXJzZV9yZWNpcGVfZmlsZShiZXN0WzNdLCBjb25maWdfZGF0YT1kY29weSkKLSAgICAgICAgICAgICMgQ2hlY2sgd2UgY2FuIGdldCB2YXJpYWJsZSB2YWx1ZXMKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NvbWV2YWx1ZScsIHJkLmdldFZhcignTVlWQVJJQUJMRScpKQotCiAgICAgZGVmIHRlc3RfbGlzdF9yZWNpcGVzKHNlbGYpOgogICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6CiAgICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9RmFsc2UsIHF1aWV0PTIpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvd2ljLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3dpYy5weQppbmRleCAwYzAzYjRiLi5jODc2NWU1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvd2ljLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy93aWMucHkKQEAgLTQ0LDYgKzQ0LDMwIEBACiAgICAgICAgIHJldHVybiB3cmFwcGVkX2YKICAgICByZXR1cm4gd3JhcHBlcgogCitkZWYgZXh0cmFjdF9maWxlcyhkZWJ1Z2ZzX291dHB1dCk6CisgICAgIiIiCisgICAgZXh0cmFjdCBmaWxlIG5hbWVzIGZyb20gdGhlIG91dHB1dCBvZiBkZWJ1Z2ZzIC1SICdscyAtcCcsCisgICAgd2hpY2ggbG9va3MgbGlrZSB0aGlzOgorCisgICAgIC8yLzA0MDc1NS8wLzAvLi8vXG4KKyAgICAgLzIvMDQwNzU1LzAvMC8uLi8vXG4KKyAgICAgLzExLzA0MDcwMC8wLzAvbG9zdCtmb3VuZF5NLy9cbgorICAgICAvMTIvMDQwNzU1LzEwMDIvMTAwMi9ydW4vL1xuCisgICAgIC8xMy8wNDA3NTUvMTAwMi8xMDAyL3N5cy8vXG4KKyAgICAgLzE0LzA0MDc1NS8xMDAyLzEwMDIvYmluLy9cbgorICAgICAvODAvMDQwNzU1LzEwMDIvMTAwMi92YXIvL1xuCisgICAgIC85Mi8wNDA3NTUvMTAwMi8xMDAyL3RtcC8vXG4KKyAgICAiIiIKKyAgICAjIE5PVEUgdGhlIG9jY2FzaW9uYWwgXk0gaW4gZmlsZSBuYW1lcworICAgIHJldHVybiBbbGluZS5zcGxpdCgnLycpWzVdLnN0cmlwKCkgZm9yIGxpbmUgaW4gXAorICAgICAgICAgICAgZGVidWdmc19vdXRwdXQuc3RyaXAoKS5zcGxpdCgnL1xuJyldCisKK2RlZiBmaWxlc19vd25fYnlfcm9vdChkZWJ1Z2ZzX291dHB1dCk6CisgICAgZm9yIGxpbmUgaW4gZGVidWdmc19vdXRwdXQuc3RyaXAoKS5zcGxpdCgnL1xuJyk6CisgICAgICAgIGlmIGxpbmUuc3BsaXQoJy8nKVszOjVdICE9IFsnMCcsICcwJ106CisgICAgICAgICAgICBwcmludChkZWJ1Z2ZzX291dHB1dCkKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBUcnVlCiAKIGNsYXNzIFdpY1Rlc3RDYXNlKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CiAgICAgIiIiV2ljIHRlc3QgY2xhc3MuIiIiCkBAIC02Niw2ICs5MCw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnd2ljLXRvb2xzIGNhbm5vdCBiZSBidWlsdCBkdWUgaXRzIChpbnRsdG9vbHxnZXR0ZXh0KS1uYXRpdmUgZGVwZW5kZW5jeSBhbmQgTkxTIGRpc2FibGUnKQogCiAgICAgICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsLW10ZHV0aWxzJykKICAgICAgICAgICAgIFdpY1Rlc3RDYXNlLmltYWdlX2lzX3JlYWR5ID0gVHJ1ZQogCiAgICAgICAgIHJtdHJlZShzZWxmLnJlc3VsdGRpciwgaWdub3JlX2Vycm9ycz1UcnVlKQpAQCAtMzkzLDI0ICs0MTgsNiBAQAogICAgICAgICAgICAgICAgIHJ1bkNtZCgiZGQgaWY9JXMgb2Y9JXMgc2tpcD0lZCBjb3VudD0lZCIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aWNpbWcsIHBhcnRfZmlsZSwgc3RhcnQsIGxlbmd0aCkpCiAKLSAgICAgICAgICAgIGRlZiBleHRyYWN0X2ZpbGVzKGRlYnVnZnNfb3V0cHV0KToKLSAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgICAgICBleHRyYWN0IGZpbGUgbmFtZXMgZnJvbSB0aGUgb3V0cHV0IG9mIGRlYnVnZnMgLVIgJ2xzIC1wJywKLSAgICAgICAgICAgICAgICB3aGljaCBsb29rcyBsaWtlIHRoaXM6Ci0KLSAgICAgICAgICAgICAgICAgLzIvMDQwNzU1LzAvMC8uLy9cbgotICAgICAgICAgICAgICAgICAvMi8wNDA3NTUvMC8wLy4uLy9cbgotICAgICAgICAgICAgICAgICAvMTEvMDQwNzAwLzAvMC9sb3N0K2ZvdW5kXk0vL1xuCi0gICAgICAgICAgICAgICAgIC8xMi8wNDA3NTUvMTAwMi8xMDAyL3J1bi8vXG4KLSAgICAgICAgICAgICAgICAgLzEzLzA0MDc1NS8xMDAyLzEwMDIvc3lzLy9cbgotICAgICAgICAgICAgICAgICAvMTQvMDQwNzU1LzEwMDIvMTAwMi9iaW4vL1xuCi0gICAgICAgICAgICAgICAgIC84MC8wNDA3NTUvMTAwMi8xMDAyL3Zhci8vXG4KLSAgICAgICAgICAgICAgICAgLzkyLzA0MDc1NS8xMDAyLzEwMDIvdG1wLy9cbgotICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgICAgICMgTk9URSB0aGUgb2NjYXNpb25hbCBeTSBpbiBmaWxlIG5hbWVzCi0gICAgICAgICAgICAgICAgcmV0dXJuIFtsaW5lLnNwbGl0KCcvJylbNV0uc3RyaXAoKSBmb3IgbGluZSBpbiBcCi0gICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z2ZzX291dHB1dC5zdHJpcCgpLnNwbGl0KCcvXG4nKV0KLQogICAgICAgICAgICAgIyBUZXN0IHBhcnRpdGlvbiAxLCBzaG91bGQgY29udGFpbiB0aGUgbm9ybWFsIHJvb3QgZGlyZWN0b3JpZXMsIGV4Y2VwdAogICAgICAgICAgICAgIyAvdXNyLgogICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJkZWJ1Z2ZzIC1SICdscyAtcCcgJXMgMj4vZGV2L251bGwiICUgXApAQCAtNDUxLDYgKzQ1OCwxMDQgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IG9sZHBhdGgKIAorICAgIGRlZiB0ZXN0X2luY2x1ZGVfcGF0aChzZWxmKToKKyAgICAgICAgIiIiVGVzdCAtLWluY2x1ZGUtcGF0aCB3a3Mgb3B0aW9uLiIiIgorCisgICAgICAgIG9sZHBhdGggPSBvcy5lbnZpcm9uWydQQVRIJ10KKyAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gZ2V0X2JiX3ZhcigiUEFUSCIsICJ3aWMtdG9vbHMiKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGluY2x1ZGVfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgJ3Rlc3QtaW5jbHVkZScpCisgICAgICAgICAgICBvcy5tYWtlZGlycyhpbmNsdWRlX3BhdGgpCisgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGluY2x1ZGVfcGF0aCwgJ3Rlc3QtZmlsZScpLCAndycpIGFzIHQ6CisgICAgICAgICAgICAgICAgdC53cml0ZSgidGVzdFxuIikKKyAgICAgICAgICAgIHdrc19maWxlID0gb3MucGF0aC5qb2luKGluY2x1ZGVfcGF0aCwgJ3RlbXAud2tzJykKKyAgICAgICAgICAgIHdpdGggb3Blbih3a3NfZmlsZSwgJ3cnKSBhcyB3a3M6CisgICAgICAgICAgICAgICAgcm9vdGZzX2RpciA9IGdldF9iYl92YXIoJ0lNQUdFX1JPT1RGUycsICdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICAgICAgICAgIHdrcy53cml0ZSgiIiIKK3BhcnQgL3BhcnQxIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBtbWNibGswIC0tZnN0eXBlPWV4dDQKK3BhcnQgL3BhcnQyIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBtbWNibGswIC0tZnN0eXBlPWV4dDQgLS1pbmNsdWRlLXBhdGggJXMiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoaW5jbHVkZV9wYXRoKSkKKyAgICAgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpcikpCisKKyAgICAgICAgICAgIHBhcnQxID0gZ2xvYihvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICd0ZW1wLSouZGlyZWN0LnAxJykpWzBdCisgICAgICAgICAgICBwYXJ0MiA9IGdsb2Iob3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAndGVtcC0qLmRpcmVjdC5wMicpKVswXQorCisgICAgICAgICAgICAjIFRlc3QgcGFydGl0aW9uIDEsIHNob3VsZCBub3QgY29udGFpbiAndGVzdC1maWxlJworICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJkZWJ1Z2ZzIC1SICdscyAtcCcgJXMgMj4vZGV2L251bGwiICUgKHBhcnQxKSkKKyAgICAgICAgICAgIGZpbGVzID0gZXh0cmFjdF9maWxlcyhyZXMub3V0cHV0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigndGVzdC1maWxlJywgZmlsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGZpbGVzX293bl9ieV9yb290KHJlcy5vdXRwdXQpKQorCisgICAgICAgICAgICAjIFRlc3QgcGFydGl0aW9uIDIsIHNob3VsZCBjb250YWluICd0ZXN0LWZpbGUnCisgICAgICAgICAgICByZXMgPSBydW5DbWQoImRlYnVnZnMgLVIgJ2xzIC1wJyAlcyAyPi9kZXYvbnVsbCIgJSAocGFydDIpKQorICAgICAgICAgICAgZmlsZXMgPSBleHRyYWN0X2ZpbGVzKHJlcy5vdXRwdXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd0ZXN0LWZpbGUnLCBmaWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgZmlsZXNfb3duX2J5X3Jvb3QocmVzLm91dHB1dCkpCisKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IG9sZHBhdGgKKworICAgIGRlZiB0ZXN0X2luY2x1ZGVfcGF0aF9lbWJlZGVkKHNlbGYpOgorICAgICAgICAiIiJUZXN0IC0taW5jbHVkZS1wYXRoIHdrcyBvcHRpb24uIiIiCisKKyAgICAgICAgb2xkcGF0aCA9IG9zLmVudmlyb25bJ1BBVEgnXQorICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gPSBnZXRfYmJfdmFyKCJQQVRIIiwgIndpYy10b29scyIpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW5jbHVkZV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAndGVzdC1pbmNsdWRlJykKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKGluY2x1ZGVfcGF0aCkKKyAgICAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oaW5jbHVkZV9wYXRoLCAndGVzdC1maWxlJyksICd3JykgYXMgdDoKKyAgICAgICAgICAgICAgICB0LndyaXRlKCJ0ZXN0XG4iKQorICAgICAgICAgICAgd2tzX2ZpbGUgPSBvcy5wYXRoLmpvaW4oaW5jbHVkZV9wYXRoLCAndGVtcC53a3MnKQorICAgICAgICAgICAgd2l0aCBvcGVuKHdrc19maWxlLCAndycpIGFzIHdrczoKKyAgICAgICAgICAgICAgICB3a3Mud3JpdGUoIiIiCitwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzICAtLWZzdHlwZT1leHQ0IC0taW5jbHVkZS1wYXRoICVzIC0taW5jbHVkZS1wYXRoIGNvcmUtaW1hZ2UtbWluaW1hbC1tdGR1dGlscyBleHBvcnQvIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGluY2x1ZGVfcGF0aCkpCisgICAgICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NfZmlsZSwgc2VsZi5yZXN1bHRkaXIpKQorCisgICAgICAgICAgICBwYXJ0MSA9IGdsb2Iob3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAndGVtcC0qLmRpcmVjdC5wMScpKVswXQorCisgICAgICAgICAgICByZXMgPSBydW5DbWQoImRlYnVnZnMgLVIgJ2xzIC1wJyAlcyAyPi9kZXYvbnVsbCIgJSAocGFydDEpKQorICAgICAgICAgICAgZmlsZXMgPSBleHRyYWN0X2ZpbGVzKHJlcy5vdXRwdXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd0ZXN0LWZpbGUnLCBmaWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgZmlsZXNfb3duX2J5X3Jvb3QocmVzLm91dHB1dCkpCisKKyAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgiZGVidWdmcyAtUiAnbHMgLXAgL2V4cG9ydC9ldGMvJyAlcyAyPi9kZXYvbnVsbCIgJSAocGFydDEpKQorICAgICAgICAgICAgZmlsZXMgPSBleHRyYWN0X2ZpbGVzKHJlcy5vdXRwdXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdwYXNzd2QnLCBmaWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgZmlsZXNfb3duX2J5X3Jvb3QocmVzLm91dHB1dCkpCisKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IG9sZHBhdGgKKworICAgIGRlZiB0ZXN0X2luY2x1ZGVfcGF0aF9lcnJvcnMoc2VsZik6CisgICAgICAgICIiIlRlc3QgLS1pbmNsdWRlLXBhdGggd2tzIG9wdGlvbiBlcnJvciBoYW5kbGluZy4iIiIKKyAgICAgICAgd2tzX2ZpbGUgPSAndGVtcC53a3MnCisKKyAgICAgICAgIyBBYnNvbHV0ZSBhcmd1bWVudC4KKyAgICAgICAgd2l0aCBvcGVuKHdrc19maWxlLCAndycpIGFzIHdrczoKKyAgICAgICAgICAgIHdrcy53cml0ZSgicGFydCAvIC0tc291cmNlIHJvb3RmcyAtLWZzdHlwZT1leHQ0IC0taW5jbHVkZS1wYXRoIGNvcmUtaW1hZ2UtbWluaW1hbC1tdGR1dGlscyAvZXhwb3J0IikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpciksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQorICAgICAgICBvcy5yZW1vdmUod2tzX2ZpbGUpCisKKyAgICAgICAgIyBBcmd1bWVudCBwb2ludGluZyB0byBwYXJlbnQgZGlyZWN0b3J5LgorICAgICAgICB3aXRoIG9wZW4od2tzX2ZpbGUsICd3JykgYXMgd2tzOgorICAgICAgICAgICAgd2tzLndyaXRlKCJwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tZnN0eXBlPWV4dDQgLS1pbmNsdWRlLXBhdGggY29yZS1pbWFnZS1taW5pbWFsLW10ZHV0aWxzIC4vLi8uLiIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NfZmlsZSwgc2VsZi5yZXN1bHRkaXIpLCBpZ25vcmVfc3RhdHVzPVRydWUpLnN0YXR1cykKKyAgICAgICAgb3MucmVtb3ZlKHdrc19maWxlKQorCisgICAgICAgICMgMyBBcmd1bWVudCBwb2ludGluZyB0byBwYXJlbnQgZGlyZWN0b3J5LgorICAgICAgICB3aXRoIG9wZW4od2tzX2ZpbGUsICd3JykgYXMgd2tzOgorICAgICAgICAgICAgd2tzLndyaXRlKCJwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tZnN0eXBlPWV4dDQgLS1pbmNsdWRlLXBhdGggY29yZS1pbWFnZS1taW5pbWFsLW10ZHV0aWxzIGV4cG9ydC8gZHVtbXkiKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzX2ZpbGUsIHNlbGYucmVzdWx0ZGlyKSwgaWdub3JlX3N0YXR1cz1UcnVlKS5zdGF0dXMpCisgICAgICAgIG9zLnJlbW92ZSh3a3NfZmlsZSkKKwogICAgIGRlZiB0ZXN0X2V4Y2x1ZGVfcGF0aF9lcnJvcnMoc2VsZik6CiAgICAgICAgICIiIlRlc3QgLS1leGNsdWRlLXBhdGggd2tzIG9wdGlvbiBlcnJvciBoYW5kbGluZy4iIiIKICAgICAgICAgd2tzX2ZpbGUgPSAndGVtcC53a3MnCkBAIC00NjksNiArNTc0LDg5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpciksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQogICAgICAgICBvcy5yZW1vdmUod2tzX2ZpbGUpCiAKKyAgICBkZWYgdGVzdF9wZXJtaXNzaW9ucyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBwZXJtaXNzaW9ucyBhcmUgcmVzcGVjdGVkIiIiCisKKyAgICAgICAgb2xkcGF0aCA9IG9zLmVudmlyb25bJ1BBVEgnXQorICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gPSBnZXRfYmJfdmFyKCJQQVRIIiwgIndpYy10b29scyIpCisKKyAgICAgICAgdF9ub3JtYWwgPSAiIiIKK3BhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1mc3R5cGU9ZXh0NAorIiIiCisgICAgICAgIHRfZXhjbHVkZSA9ICIiIgorcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLWZzdHlwZT1leHQ0IC0tZXhjbHVkZS1wYXRoPWhvbWUKKyIiIgorICAgICAgICB0X211bHRpID0gIiIiCitwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIHNkYSAtLWZzdHlwZT1leHQ0CitwYXJ0IC9leHBvcnQgLS1zb3VyY2Ugcm9vdGZzIC0tcm9vdGZzPWNvcmUtaW1hZ2UtbWluaW1hbC1tdGR1dGlscyAtLWZzdHlwZT1leHQ0CisiIiIKKyAgICAgICAgdF9jaGFuZ2UgPSAiIiIKK3BhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgc2RhIC0tZnN0eXBlPWV4dDQgLS1leGNsdWRlLXBhdGg9ZXRjL8KgIMKgCitwYXJ0IC9ldGMgLS1zb3VyY2Ugcm9vdGZzIC0tZnN0eXBlPWV4dDQgLS1jaGFuZ2UtZGlyZWN0b3J5PWV0YworIiIiCisgICAgICAgIHRlc3RzID0gW3Rfbm9ybWFsLCB0X2V4Y2x1ZGUsIHRfbXVsdGksIHRfY2hhbmdlXQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgorICAgICAgICAgICAgICAgIGluY2x1ZGVfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgJ3Rlc3QtaW5jbHVkZScpCisgICAgICAgICAgICAgICAgb3MubWFrZWRpcnMoaW5jbHVkZV9wYXRoKQorICAgICAgICAgICAgICAgIHdrc19maWxlID0gb3MucGF0aC5qb2luKGluY2x1ZGVfcGF0aCwgJ3RlbXAud2tzJykKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4od2tzX2ZpbGUsICd3JykgYXMgd2tzOgorICAgICAgICAgICAgICAgICAgICB3a3Mud3JpdGUodGVzdCkKKyAgICAgICAgICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NfZmlsZSwgc2VsZi5yZXN1bHRkaXIpKQorCisgICAgICAgICAgICAgICAgZm9yIHBhcnQgaW4gZ2xvYihvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICd0ZW1wLSouZGlyZWN0LnAqJykpOgorICAgICAgICAgICAgICAgICAgICByZXMgPSBydW5DbWQoImRlYnVnZnMgLVIgJ2xzIC1wJyAlcyAyPi9kZXYvbnVsbCIgJSAocGFydCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgZmlsZXNfb3duX2J5X3Jvb3QocmVzLm91dHB1dCkpCisKKyAgICAgICAgICAgICAgICBybXRyZWUoc2VsZi5yZXN1bHRkaXIsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKKworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gb2xkcGF0aAorCisgICAgZGVmIHRlc3RfY2hhbmdlX2RpcmVjdG9yeShzZWxmKToKKyAgICAgICAgIiIiVGVzdCAtLWNoYW5nZS1kaXJlY3Rvcnkgd2tzIG9wdGlvbi4iIiIKKworICAgICAgICBvbGRwYXRoID0gb3MuZW52aXJvblsnUEFUSCddCisgICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IGdldF9iYl92YXIoIlBBVEgiLCAid2ljLXRvb2xzIikKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBpbmNsdWRlX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICd0ZXN0LWluY2x1ZGUnKQorICAgICAgICAgICAgb3MubWFrZWRpcnMoaW5jbHVkZV9wYXRoKQorICAgICAgICAgICAgd2tzX2ZpbGUgPSBvcy5wYXRoLmpvaW4oaW5jbHVkZV9wYXRoLCAndGVtcC53a3MnKQorICAgICAgICAgICAgd2l0aCBvcGVuKHdrc19maWxlLCAndycpIGFzIHdrczoKKyAgICAgICAgICAgICAgICB3a3Mud3JpdGUoInBhcnQgL2V0YyAtLXNvdXJjZSByb290ZnMgLS1mc3R5cGU9ZXh0NCAtLWNoYW5nZS1kaXJlY3Rvcnk9ZXRjIikKKyAgICAgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpcikpCisKKyAgICAgICAgICAgIHBhcnQxID0gZ2xvYihvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICd0ZW1wLSouZGlyZWN0LnAxJykpWzBdCisKKyAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgiZGVidWdmcyAtUiAnbHMgLXAnICVzIDI+L2Rldi9udWxsIiAlIChwYXJ0MSkpCisgICAgICAgICAgICBmaWxlcyA9IGV4dHJhY3RfZmlsZXMocmVzLm91dHB1dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3Bhc3N3ZCcsIGZpbGVzKQorCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gPSBvbGRwYXRoCisKKyAgICBkZWYgdGVzdF9jaGFuZ2VfZGlyZWN0b3J5X2Vycm9ycyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCAtLWNoYW5nZS1kaXJlY3Rvcnkgd2tzIG9wdGlvbiBlcnJvciBoYW5kbGluZy4iIiIKKyAgICAgICAgd2tzX2ZpbGUgPSAndGVtcC53a3MnCisKKyAgICAgICAgIyBBYnNvbHV0ZSBhcmd1bWVudC4KKyAgICAgICAgd2l0aCBvcGVuKHdrc19maWxlLCAndycpIGFzIHdrczoKKyAgICAgICAgICAgIHdrcy53cml0ZSgicGFydCAvIC0tc291cmNlIHJvb3RmcyAtLWZzdHlwZT1leHQ0IC0tY2hhbmdlLWRpcmVjdG9yeSAvdXNyIikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpciksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQorICAgICAgICBvcy5yZW1vdmUod2tzX2ZpbGUpCisKKyAgICAgICAgIyBBcmd1bWVudCBwb2ludGluZyB0byBwYXJlbnQgZGlyZWN0b3J5LgorICAgICAgICB3aXRoIG9wZW4od2tzX2ZpbGUsICd3JykgYXMgd2tzOgorICAgICAgICAgICAgd2tzLndyaXRlKCJwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tZnN0eXBlPWV4dDQgLS1jaGFuZ2UtZGlyZWN0b3J5IC4vLi8uLiIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NfZmlsZSwgc2VsZi5yZXN1bHRkaXIpLCBpZ25vcmVfc3RhdHVzPVRydWUpLnN0YXR1cykKKyAgICAgICAgb3MucmVtb3ZlKHdrc19maWxlKQorCiBjbGFzcyBXaWMyKFdpY1Rlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2JtYXBfc2hvcnQoc2VsZik6CkBAIC01MDAsNyArNjg4LDggQEAKICAgICAgICAgIyBmaWx0ZXIgb3V0IG9wdGlvbmFsIHZhcmlhYmxlcwogICAgICAgICB3aWN2YXJzID0gd2ljdmFycy5kaWZmZXJlbmNlKCgnREVQTE9ZX0RJUl9JTUFHRScsICdJTUFHRV9CT09UX0ZJTEVTJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lOSVRSRCcsICdJTklUUkRfTElWRScsICdJU09ESVInLCdJTklUUkFNRlNfSU1BR0UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSU5JVFJBTUZTX0lNQUdFX0JVTkRMRScsICdJTklUUkFNRlNfTElOS19OQU1FJykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJTklUUkFNRlNfSU1BR0VfQlVORExFJywgJ0lOSVRSQU1GU19MSU5LX05BTUUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQVBQRU5EJykpCiAgICAgICAgIHdpdGggb3BlbihwYXRoKSBhcyBlbnZmaWxlOgogICAgICAgICAgICAgY29udGVudCA9IGRpY3QobGluZS5zcGxpdCgiPSIsIDEpIGZvciBsaW5lIGluIGVudmZpbGUpCiAgICAgICAgICAgICAjIHRlc3QgaWYgdmFyaWFibGVzIHVzZWQgYnkgd2ljIHByZXNlbnQgaW4gdGhlIC5lbnYgZmlsZQpAQCAtODY2LDYgKzEwNTUsMTMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOCwgbGVuKHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJykpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguYmFzZW5hbWUodGVzdGRpcikgaW4gcmVzdWx0Lm91dHB1dCkKIAorICAgICAgICAgICAgIyBjb3B5IHRoZSBmaWxlIGZyb20gdGhlIHBhcnRpdGlvbiBhbmQgY2hlY2sgaWYgaXQgc3VjY2VzcworICAgICAgICAgICAgZGVzdCA9ICclcy1jcCcgJSB0ZXN0ZmlsZS5uYW1lCisgICAgICAgICAgICBydW5DbWQoIndpYyBjcCAlczoxLyVzICVzIC1uICVzIiAlIChpbWFnZXNbMF0sCisgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUodGVzdGZpbGUubmFtZSksIGRlc3QsIHN5c3Jvb3QpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGRlc3QpKQorCisKICAgICBkZWYgdGVzdF93aWNfcm0oc2VsZik6CiAgICAgICAgICIiIlRlc3QgcmVtb3ZpbmcgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGZyb20gdGhlIHRoZSB3aWMgaW1hZ2UuIiIiCiAgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSBta2VmaWRpc2sgIgpAQCAtMTAwNSw2ICsxMjAxLDE2IEBACiAgICAgICAgICAgICBuZXdkaXJzID0gc2V0KGxpbmUuc3BsaXQoKVstMV0gZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSBpZiBsaW5lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdkaXJzLmRpZmZlcmVuY2UoZGlycyksIHNldChbb3MucGF0aC5iYXNlbmFtZSh0ZXN0ZmlsZS5uYW1lKV0pKQogCisgICAgICAgICAgICAjIGNoZWNrIGlmIHRoZSBmaWxlIHRvIGNvcHkgaXMgaW4gdGhlIHBhcnRpdGlvbgorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXM6Mi9ldGMvIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdmc3RhYicgaW4gW2xpbmUuc3BsaXQoKVstMV0gZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSBpZiBsaW5lXSkKKworICAgICAgICAgICAgIyBjb3B5IGZpbGUgZnJvbSB0aGUgcGFydGl0aW9uLCByZXBsYWNlIHRoZSB0ZW1wb3JhcnkgZmlsZSBjb250ZW50IHdpdGggaXQgYW5kCisgICAgICAgICAgICAjIGNoZWNrIGZvciB0aGUgZmlsZSBzaXplIHRvIHZhbGlkYXRlIHRoZSBjb3B5CisgICAgICAgICAgICBydW5DbWQoIndpYyBjcCAlczoyL2V0Yy9mc3RhYiAlcyAtbiAlcyIgJSAoaW1hZ2VzWzBdLCB0ZXN0ZmlsZS5uYW1lLCBzeXNyb290KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5zdGF0KHRlc3RmaWxlLm5hbWUpLnN0X3NpemUgPiAwKQorCisKICAgICBkZWYgdGVzdF93aWNfcm1fZXh0KHNlbGYpOgogICAgICAgICAiIiJUZXN0IHJlbW92aW5nIGZpbGVzIGZyb20gdGhlIGV4dCBwYXJ0aXRpb24uIiIiCiAgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSBta2VmaWRpc2sgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2NvbnRleHQucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY29udGV4dC5weQppbmRleCBjNGViNWQ2Li40OGVjNWQ0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY29udGV4dC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY29udGV4dC5weQpAQCAtOSwxMiArOSwxMiBAQAogaW1wb3J0IGdsb2IKIGltcG9ydCBzeXMKIGltcG9ydCBpbXBvcnRsaWIKLWltcG9ydCBzaWduYWwKLWZyb20gc2h1dGlsIGltcG9ydCBjb3B5ZmlsZQoraW1wb3J0IHN1YnByb2Nlc3MKIGZyb20gcmFuZG9tIGltcG9ydCBjaG9pY2UKIAogaW1wb3J0IG9lcWEKIGltcG9ydCBvZQoraW1wb3J0IGJiLnV0aWxzCiAKIGZyb20gb2VxYS5jb3JlLmNvbnRleHQgaW1wb3J0IE9FVGVzdENvbnRleHQsIE9FVGVzdENvbnRleHRFeGVjdXRvcgogZnJvbSBvZXFhLmNvcmUuZXhjZXB0aW9uIGltcG9ydCBPRVFBUHJlUnVuLCBPRVFBVGVzdE5vdEZvdW5kCkBAIC0yOSw2ICsyOSw1NCBAQAogICAgICAgICBzZWxmLmN1c3RvbW1hY2hpbmUgPSBOb25lCiAgICAgICAgIHNlbGYuY29uZmlnX3BhdGhzID0gY29uZmlnX3BhdGhzCiAKKyAgICBkZWYgc2V0dXBfYnVpbGRkaXIoc2VsZiwgc3VmZml4LCBzZWxmdGVzdGRpciwgc3VpdGUpOgorICAgICAgICBidWlsZGRpciA9IG9zLmVudmlyb25bJ0JVSUxERElSJ10KKyAgICAgICAgaWYgbm90IHNlbGZ0ZXN0ZGlyOgorICAgICAgICAgICAgc2VsZnRlc3RkaXIgPSBnZXRfdGVzdF9sYXllcigpCisgICAgICAgIG5ld2J1aWxkZGlyID0gYnVpbGRkaXIgKyBzdWZmaXgKKyAgICAgICAgbmV3c2VsZnRlc3RkaXIgPSBuZXdidWlsZGRpciArICIvbWV0YS1zZWxmdGVzdCIKKworICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhuZXdidWlsZGRpcik6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiQnVpbGQgZGlyZWN0b3J5ICVzIGFscmVhZHkgZXhpc3RzLCBhYm9ydGluZyIgJSBuZXdidWlsZGRpcikKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG5ld2J1aWxkZGlyKQorICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKGJ1aWxkZGlyICsgIi9jb25mIiwgbmV3YnVpbGRkaXIgKyAiL2NvbmYiKQorICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKGJ1aWxkZGlyICsgIi9jYWNoZSIsIG5ld2J1aWxkZGlyICsgIi9jYWNoZSIpCisgICAgICAgIG9lLnBhdGguY29weXRyZWUoc2VsZnRlc3RkaXIsIG5ld3NlbGZ0ZXN0ZGlyKQorCisgICAgICAgIGZvciBlIGluIG9zLmVudmlyb246CisgICAgICAgICAgICBpZiBidWlsZGRpciArICIvIiBpbiBvcy5lbnZpcm9uW2VdIG9yIG9zLmVudmlyb25bZV0uZW5kc3dpdGgoYnVpbGRkaXIpOgorICAgICAgICAgICAgICAgIG9zLmVudmlyb25bZV0gPSBvcy5lbnZpcm9uW2VdLnJlcGxhY2UoYnVpbGRkaXIsIG5ld2J1aWxkZGlyKQorCisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCJnaXQgaW5pdDsgZ2l0IGFkZCAqOyBnaXQgY29tbWl0IC1hIC1tICdpbml0aWFsJyIsIGN3ZD1uZXdzZWxmdGVzdGRpciwgc2hlbGw9VHJ1ZSkKKworICAgICAgICAjIFRyaWVkIHRvIHVzZWQgYml0YmFrZS1sYXllcnMgYWRkL3JlbW92ZSBidXQgaXQgcmVxdWlyZXMgcmVjaXBlIHBhcnNpbmcgYW5kIGhlbmNlIGlzIHRvbyBzbG93CisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCJzZWQgJXMvY29uZi9iYmxheWVycy5jb25mIC1pIC1lICdzIyVzIyVzI2cnIiAlIChuZXdidWlsZGRpciwgc2VsZnRlc3RkaXIsIG5ld3NlbGZ0ZXN0ZGlyKSwgY3dkPW5ld2J1aWxkZGlyLCBzaGVsbD1UcnVlKQorCisgICAgICAgIG9zLmNoZGlyKG5ld2J1aWxkZGlyKQorCisgICAgICAgIGZvciB0IGluIHN1aXRlOgorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIodCwgInRjIik6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGNwID0gdC50Yy5jb25maWdfcGF0aHMKKyAgICAgICAgICAgIGZvciBwIGluIGNwOgorICAgICAgICAgICAgICAgIGlmIHNlbGZ0ZXN0ZGlyIGluIGNwW3BdIGFuZCBuZXdzZWxmdGVzdGRpciBub3QgaW4gY3BbcF06CisgICAgICAgICAgICAgICAgICAgIGNwW3BdID0gY3BbcF0ucmVwbGFjZShzZWxmdGVzdGRpciwgbmV3c2VsZnRlc3RkaXIpCisgICAgICAgICAgICAgICAgaWYgYnVpbGRkaXIgaW4gY3BbcF0gYW5kIG5ld2J1aWxkZGlyIG5vdCBpbiBjcFtwXToKKyAgICAgICAgICAgICAgICAgICAgY3BbcF0gPSBjcFtwXS5yZXBsYWNlKGJ1aWxkZGlyLCBuZXdidWlsZGRpcikKKworICAgICAgICByZXR1cm4gKGJ1aWxkZGlyLCBuZXdidWlsZGRpcikKKworICAgIGRlZiBwcmVwYXJlU3VpdGUoc2VsZiwgc3VpdGVzLCBwcm9jZXNzZXMpOgorICAgICAgICBpZiBwcm9jZXNzZXM6CisgICAgICAgICAgICBmcm9tIG9lcWEuY29yZS51dGlscy5jb25jdXJyZW5jeXRlc3QgaW1wb3J0IENvbmN1cnJlbnRUZXN0U3VpdGUKKworICAgICAgICAgICAgcmV0dXJuIENvbmN1cnJlbnRUZXN0U3VpdGUoc3VpdGVzLCBwcm9jZXNzZXMsIHNlbGYuc2V0dXBfYnVpbGRkaXIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnNldHVwX2J1aWxkZGlyKCItc3QiLCBOb25lLCBzdWl0ZXMpCisgICAgICAgICAgICByZXR1cm4gc3VpdGVzCisKICAgICBkZWYgcnVuVGVzdHMoc2VsZiwgcHJvY2Vzc2VzPU5vbmUsIG1hY2hpbmU9Tm9uZSwgc2tpcHM9W10pOgogICAgICAgICBpZiBtYWNoaW5lOgogICAgICAgICAgICAgc2VsZi5jdXN0b21tYWNoaW5lID0gbWFjaGluZQpAQCAtMTM1LDI2ICsxODMsMTAgQEAKIAogICAgICAgICBidWlsZGRpciA9IG9zLmVudmlyb24uZ2V0KCJCVUlMRERJUiIpCiAgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddID0ge30KLSAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ3Rlc3RsYXllcl9wYXRoJ10gPSBcCi0gICAgICAgICAgICAgICAgZ2V0X3Rlc3RfbGF5ZXIoKQorICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsndGVzdGxheWVyX3BhdGgnXSA9IGdldF90ZXN0X2xheWVyKCkKICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2J1aWxkZGlyJ10gPSBidWlsZGRpcgotICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnbG9jYWxjb25mJ10gPSBcCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9sb2NhbC5jb25mIikKLSAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2xvY2FsY29uZl9iYWNrdXAnXSA9IFwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2xvY2FsLmNvbmYub3JpZyIpCi0gICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydsb2NhbGNvbmZfY2xhc3NfYmFja3VwJ10gPSBcCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9sb2NhbC5jb25mLmJrIikKLSAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2JibGF5ZXJzJ10gPSBcCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9iYmxheWVycy5jb25mIikKLSAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2JibGF5ZXJzX2JhY2t1cCddID0gXAotICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvYmJsYXllcnMuY29uZi5vcmlnIikKLSAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2JibGF5ZXJzX2NsYXNzX2JhY2t1cCddID0gXAotICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvYmJsYXllcnMuY29uZi5iayIpCi0KLSAgICAgICAgY29weWZpbGUoc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2xvY2FsY29uZiddLAotICAgICAgICAgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydsb2NhbGNvbmZfYmFja3VwJ10pCi0gICAgICAgIGNvcHlmaWxlKHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydiYmxheWVycyddLCAKLSAgICAgICAgICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnYmJsYXllcnNfYmFja3VwJ10pCisgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydsb2NhbGNvbmYnXSA9IG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvbG9jYWwuY29uZiIpCisgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydiYmxheWVycyddID0gb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9iYmxheWVycy5jb25mIikKIAogICAgICAgICBkZWYgdGFnX2ZpbHRlcih0YWdzKToKICAgICAgICAgICAgIGlmIGFyZ3MuZXhjbHVkZV90YWdzOgpAQCAtMjc5LDE0ICszMTEsOSBAQAogCiAgICAgICAgIHJldHVybiByYwogCi0gICAgZGVmIF9zaWduYWxfY2xlYW5faGFuZGxlcihzZWxmLCBzaWdudW0sIGZyYW1lKToKLSAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAKICAgICBkZWYgcnVuKHNlbGYsIGxvZ2dlciwgYXJncyk6CiAgICAgICAgIHNlbGYuX3Byb2Nlc3NfYXJncyhsb2dnZXIsIGFyZ3MpCiAKLSAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVEVSTSwgc2VsZi5fc2lnbmFsX2NsZWFuX2hhbmRsZXIpCi0KICAgICAgICAgcmMgPSBOb25lCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIGFyZ3MubWFjaGluZToKQEAgLTMxNSwyMCArMzQyLDYgQEAKICAgICAgICAgICAgICAgICByYyA9IHNlbGYuX2ludGVybmFsX3J1bihsb2dnZXIsIGFyZ3MpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBjb25maWdfcGF0aHMgPSBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoY29uZmlnX3BhdGhzWydsb2NhbGNvbmZfYmFja3VwJ10pOgotICAgICAgICAgICAgICAgIGNvcHlmaWxlKGNvbmZpZ19wYXRoc1snbG9jYWxjb25mX2JhY2t1cCddLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3BhdGhzWydsb2NhbGNvbmYnXSkKLSAgICAgICAgICAgICAgICBvcy5yZW1vdmUoY29uZmlnX3BhdGhzWydsb2NhbGNvbmZfYmFja3VwJ10pCi0KLSAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGNvbmZpZ19wYXRoc1snYmJsYXllcnNfYmFja3VwJ10pOgotICAgICAgICAgICAgICAgIGNvcHlmaWxlKGNvbmZpZ19wYXRoc1snYmJsYXllcnNfYmFja3VwJ10sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3BhdGhzWydiYmxheWVycyddKQotICAgICAgICAgICAgICAgIG9zLnJlbW92ZShjb25maWdfcGF0aHNbJ2JibGF5ZXJzX2JhY2t1cCddKQotCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhjb25maWdfcGF0aHNbJ2xvY2FsY29uZl9jbGFzc19iYWNrdXAnXSk6Ci0gICAgICAgICAgICAgICAgb3MucmVtb3ZlKGNvbmZpZ19wYXRoc1snbG9jYWxjb25mX2NsYXNzX2JhY2t1cCddKQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoY29uZmlnX3BhdGhzWydiYmxheWVyc19jbGFzc19iYWNrdXAnXSk6Ci0gICAgICAgICAgICAgICAgb3MucmVtb3ZlKGNvbmZpZ19wYXRoc1snYmJsYXllcnNfY2xhc3NfYmFja3VwJ10pCiAKICAgICAgICAgICAgIG91dHB1dF9saW5rID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShhcmdzLm91dHB1dF9sb2cpLAogICAgICAgICAgICAgICAgICAgICAiJXMtcmVzdWx0cy5sb2ciICUgc2VsZi5uYW1lKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3RhcmdldGNvbnRyb2wucHkgYi9wb2t5L21ldGEvbGliL29lcWEvdGFyZ2V0Y29udHJvbC5weQppbmRleCAxNDQ1ZTNlLi4yYWE1NDhlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvdGFyZ2V0Y29udHJvbC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvdGFyZ2V0Y29udHJvbC5weQpAQCAtMTE3LDkgKzExNyw5IEBACiAgICAgICAgIGltcG9ydCBvZS5wYXRoCiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzZWxmLnRlc3RkaXIpCiAgICAgICAgIHNlbGYucWVtdXJ1bm5lcmxvZyA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RkaXIsICdxZW11cnVubmVyX2xvZy4lcycgJSBzZWxmLmRhdGV0aW1lKQotICAgICAgICBsb2dnZXJoYW5kbGVyID0gbG9nZ2luZy5GaWxlSGFuZGxlcihzZWxmLnFlbXVydW5uZXJsb2cpCi0gICAgICAgIGxvZ2dlcmhhbmRsZXIuc2V0Rm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKCIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIpKQotICAgICAgICBzZWxmLmxvZ2dlci5hZGRIYW5kbGVyKGxvZ2dlcmhhbmRsZXIpCisgICAgICAgIHNlbGYubG9nZ2VyaGFuZGxlciA9IGxvZ2dpbmcuRmlsZUhhbmRsZXIoc2VsZi5xZW11cnVubmVybG9nKQorICAgICAgICBzZWxmLmxvZ2dlcmhhbmRsZXIuc2V0Rm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKCIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIpKQorICAgICAgICBzZWxmLmxvZ2dlci5hZGRIYW5kbGVyKHNlbGYubG9nZ2VyaGFuZGxlcikKICAgICAgICAgb2UucGF0aC5zeW1saW5rKG9zLnBhdGguYmFzZW5hbWUoc2VsZi5xZW11cnVubmVybG9nKSwgb3MucGF0aC5qb2luKHNlbGYudGVzdGRpciwgJ3FlbXVydW5uZXJfbG9nJyksIGZvcmNlPVRydWUpCiAKICAgICAgICAgaWYgZC5nZXRWYXIoIkRJU1RSTyIpID09ICJwb2t5LXRpbnkiOgpAQCAtMTQzLDcgKzE0Myw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX2t2bSA9IHVzZV9rdm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtcF9kaXIgPSBkdW1wX2RpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wX2hvc3RfY21kcyA9IGQuZ2V0VmFyKCJ0ZXN0aW1hZ2VfZHVtcF9ob3N0IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2VyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxfcG9ydHMgPSBsZW4oZC5nZXRWYXIoIlNFUklBTF9DT05TT0xFUyIpLnNwbGl0KCkpKQogCiAgICAgICAgIHNlbGYudGFyZ2V0X2R1bXBlciA9IFRhcmdldER1bXBlcihkdW1wX3RhcmdldF9jbWRzLCBkdW1wX2Rpciwgc2VsZi5ydW5uZXIpCiAKQEAgLTE4Miw2ICsxODMsNyBAQAogCiAgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgIHNlbGYucnVubmVyLnN0b3AoKQorICAgICAgICBzZWxmLmxvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYubG9nZ2VyaGFuZGxlcikKICAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gTm9uZQogICAgICAgICBzZWxmLmlwID0gTm9uZQogICAgICAgICBzZWxmLnNlcnZlcl9pcCA9IE5vbmUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9jb21tYW5kcy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9jb21tYW5kcy5weQppbmRleCBkYzFlMjg2Li5mMTY3OTg3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvY29tbWFuZHMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2NvbW1hbmRzLnB5CkBAIC0zMTUsMTUgKzMxNSwxNSBAQAogICAgIHRyeToKICAgICAgICAgdGluZm9pbC5sb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5XQVJOSU5HKQogICAgICAgICBpbXBvcnQgb2VxYS50YXJnZXRjb250cm9sCi0gICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyKCJURVNUX0xPR19ESVIiLCAiJHtXT1JLRElSfS90ZXN0aW1hZ2UiKQotICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcigiVEVTVF9RRU1VQk9PVF9USU1FT1VUIiwgIjEwMDAiKQorICAgICAgICByZWNpcGVkYXRhID0gdGluZm9pbC5wYXJzZV9yZWNpcGUocG4pCisgICAgICAgIHJlY2lwZWRhdGEuc2V0VmFyKCJURVNUX0xPR19ESVIiLCAiJHtXT1JLRElSfS90ZXN0aW1hZ2UiKQorICAgICAgICByZWNpcGVkYXRhLnNldFZhcigiVEVTVF9RRU1VQk9PVF9USU1FT1VUIiwgIjEwMDAiKQogICAgICAgICAjIFRlbGwgUWVtdVRhcmdldCgpIHdoZXRoZXIgbmVlZCBmaW5kIHJvb3Rmcy9rZXJuZWwgb3Igbm90CiAgICAgICAgIGlmIGxhdW5jaF9jbWQ6Ci0gICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcigiRklORF9ST09URlMiLCAnMCcpCisgICAgICAgICAgICByZWNpcGVkYXRhLnNldFZhcigiRklORF9ST09URlMiLCAnMCcpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcigiRklORF9ST09URlMiLCAnMScpCisgICAgICAgICAgICByZWNpcGVkYXRhLnNldFZhcigiRklORF9ST09URlMiLCAnMScpCiAKLSAgICAgICAgcmVjaXBlZGF0YSA9IHRpbmZvaWwucGFyc2VfcmVjaXBlKHBuKQogICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBvdmVycmlkZXMuaXRlbXMoKToKICAgICAgICAgICAgIHJlY2lwZWRhdGEuc2V0VmFyKGtleSwgdmFsdWUpCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9kdW1wLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2R1bXAucHkKaW5kZXggZDM0ZTA1ZS4uMDlhNDQzMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2R1bXAucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2R1bXAucHkKQEAgLTcxLDggKzcxLDExIEBACiAgICAgZGVmIGR1bXBfaG9zdChzZWxmLCBkdW1wX2Rpcj0iIik6CiAgICAgICAgIGlmIGR1bXBfZGlyOgogICAgICAgICAgICAgc2VsZi5kdW1wX2RpciA9IGR1bXBfZGlyCisgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgIGVudlsnUEFUSCddID0gJy91c3Ivc2Jpbjovc2JpbjovdXNyL2JpbjovYmluJworICAgICAgICBlbnZbJ0NPTFVNTlMnXSA9ICc5OTk5JwogICAgICAgICBmb3IgY21kIGluIHNlbGYuY21kczoKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZChjbWQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZChjbWQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSwgZW52PWVudikKICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2R1bXAoY21kLnNwbGl0KClbMF0sIHJlc3VsdC5vdXRwdXQpCiAKIGNsYXNzIFRhcmdldER1bXBlcihCYXNlRHVtcGVyKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9odHRwc2VydmVyLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2h0dHBzZXJ2ZXIucHkKaW5kZXggYWE0MzU1OS4uNThkM2MzYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2h0dHBzZXJ2ZXIucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2h0dHBzZXJ2ZXIucHkKQEAgLTIyLDEwICsyMiwxMCBAQAogCiBjbGFzcyBIVFRQU2VydmljZShvYmplY3QpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJvb3RfZGlyLCBob3N0PScnLCBsb2dnZXI9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJvb3RfZGlyLCBob3N0PScnLCBwb3J0PTAsIGxvZ2dlcj1Ob25lKToKICAgICAgICAgc2VsZi5yb290X2RpciA9IHJvb3RfZGlyCiAgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKLSAgICAgICAgc2VsZi5wb3J0ID0gMAorICAgICAgICBzZWxmLnBvcnQgPSBwb3J0CiAgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCiAKICAgICBkZWYgc3RhcnQoc2VsZik6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvbG9ncGFyc2VyLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2xvZ3BhcnNlci5weQppbmRleCA3MzEzZGY4Li42MGUxNmQ1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvbG9ncGFyc2VyLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9sb2dwYXJzZXIucHkKQEAgLTI1LDEzICsyNSwyMCBAQAogICAgICAgICBzZWN0aW9uX3JlZ2V4WydleGl0Y29kZSddID0gcmUuY29tcGlsZShyIl5FUlJPUjogRXhpdCBzdGF0dXMgaXMgKC4rKSIpCiAgICAgICAgIHNlY3Rpb25fcmVnZXhbJ3RpbWVvdXQnXSA9IHJlLmNvbXBpbGUociJeVElNRU9VVDogLiovKC4rKS9wdGVzdCIpCiAKKyAgICAgICAgIyBDYWNoZSBtYXJrZXJzIHNvIHdlIGRvbid0IHRha2UgdGhlIHJlLnNlYXJjaCgpIGhpdCBhbGwgdGhlIHRpbWUuCisgICAgICAgIG1hcmtlcnMgPSAoIlBBU1M6IiwgIkZBSUw6IiwgIlNLSVA6IiwgIkJFR0lOOiIsICJFTkQ6IiwgIkRVUkFUSU9OOiIsICJFUlJPUjogRXhpdCIsICJUSU1FT1VUOiIpCisKICAgICAgICAgZGVmIG5ld3NlY3Rpb24oKToKLSAgICAgICAgICAgIHJldHVybiB7ICduYW1lJzogIk5vLXNlY3Rpb24iLCAnbG9nJzogIiIgfQorICAgICAgICAgICAgcmV0dXJuIHsgJ25hbWUnOiAiTm8tc2VjdGlvbiIsICdsb2cnOiBbXSB9CiAKICAgICAgICAgY3VycmVudF9zZWN0aW9uID0gbmV3c2VjdGlvbigpCiAKICAgICAgICAgd2l0aCBvcGVuKGxvZ2ZpbGUsIGVycm9ycz0ncmVwbGFjZScpIGFzIGY6CiAgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lLnN0YXJ0c3dpdGgobWFya2Vycyk6CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfc2VjdGlvblsnbG9nJ10uYXBwZW5kKGxpbmUpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWN0aW9uX3JlZ2V4WydiZWdpbiddLnNlYXJjaChsaW5lKQogICAgICAgICAgICAgICAgIGlmIHJlc3VsdDoKICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9zZWN0aW9uWyduYW1lJ10gPSByZXN1bHQuZ3JvdXAoMSkKQEAgLTYxLDcgKzY4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfc2VjdGlvblt0XSA9IHJlc3VsdC5ncm91cCgxKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgICAgIGN1cnJlbnRfc2VjdGlvblsnbG9nJ10gPSBjdXJyZW50X3NlY3Rpb25bJ2xvZyddICsgbGluZSAKKyAgICAgICAgICAgICAgICBjdXJyZW50X3NlY3Rpb25bJ2xvZyddLmFwcGVuZChsaW5lKQogCiAgICAgICAgICAgICAgICAgZm9yIHQgaW4gdGVzdF9yZWdleDoKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGVzdF9yZWdleFt0XS5zZWFyY2gobGluZSkKQEAgLTcwLDYgKzc3LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRzW2N1cnJlbnRfc2VjdGlvblsnbmFtZSddXSA9IHt9CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdHNbY3VycmVudF9zZWN0aW9uWyduYW1lJ11dW3Jlc3VsdC5ncm91cCgxKS5zdHJpcCgpXSA9IHQKIAorICAgICAgICAjIFB5dGhvbiBwZXJmb3JtYW5jZSBmb3IgcmVwZWF0ZWRseSBqb2luaW5nIGxvbmcgc3RyaW5ncyBpcyBwb29yLCBkbyBpdCBhbGwgYXQgb25jZSBhdCB0aGUgZW5kLgorICAgICAgICAjIEZvciAyLjEgbWlsbGlvbiBsaW5lcyBpbiBhIGxvZyB0aGlzIHJlZHVjZXMgMTggaG91cnMgdG8gMTJzLgorICAgICAgICBmb3Igc2VjdGlvbiBpbiBzZWxmLnNlY3Rpb25zOgorICAgICAgICAgICAgc2VsZi5zZWN0aW9uc1tzZWN0aW9uXVsnbG9nJ10gPSAiIi5qb2luKHNlbGYuc2VjdGlvbnNbc2VjdGlvbl1bJ2xvZyddKQorCiAgICAgICAgIHJldHVybiBzZWxmLnJlc3VsdHMsIHNlbGYuc2VjdGlvbnMKIAogICAgICMgTG9nIHRoZSByZXN1bHRzIGFzIGZpbGVzLiBUaGUgZmlsZSBuYW1lIGlzIHRoZSBzZWN0aW9uIG5hbWUgYW5kIHRoZSBjb250ZW50cyBhcmUgdGhlIHRlc3RzIGluIHRoYXQgc2VjdGlvbi4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11cnVubmVyLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXVydW5uZXIucHkKaW5kZXggZmU4Yjc3ZC4uNGI3NDMzNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXVydW5uZXIucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXVydW5uZXIucHkKQEAgLTIxLDYgKzIxLDcgQEAKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBsb2dnaW5nCiBmcm9tIG9lcWEudXRpbHMuZHVtcCBpbXBvcnQgSG9zdER1bXBlcgorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKIAogIyBHZXQgVW5pY29kZSBub24gcHJpbnRhYmxlIGNvbnRyb2wgY2hhcnMKIGNvbnRyb2xfcmFuZ2UgPSBsaXN0KHJhbmdlKDAsMzIpKStsaXN0KHJhbmdlKDEyNywxNjApKQpAQCAtMzEsMTAgKzMyLDExIEBACiBjbGFzcyBRZW11UnVubmVyOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hY2hpbmUsIHJvb3RmcywgZGlzcGxheSwgdG1wZGlyLCBkZXBsb3lfZGlyX2ltYWdlLCBsb2dmaWxlLCBib290dGltZSwgZHVtcF9kaXIsIGR1bXBfaG9zdF9jbWRzLAotICAgICAgICAgICAgICAgICB1c2Vfa3ZtLCBsb2dnZXIsIHVzZV9zbGlycD1GYWxzZSk6CisgICAgICAgICAgICAgICAgIHVzZV9rdm0sIGxvZ2dlciwgdXNlX3NsaXJwPUZhbHNlLCBzZXJpYWxfcG9ydHM9MiwgYm9vdF9wYXR0ZXJucyA9IGRlZmF1bHRkaWN0KHN0ciksIHVzZV9vdm1mPUZhbHNlKToKIAogICAgICAgICAjIFBvcGVuIG9iamVjdCBmb3IgcnVucWVtdQogICAgICAgICBzZWxmLnJ1bnFlbXUgPSBOb25lCisgICAgICAgIHNlbGYucnVucWVtdV9leGl0ZWQgPSBGYWxzZQogICAgICAgICAjIHBpZCBvZiB0aGUgcWVtdSBwcm9jZXNzIHRoYXQgcnVucWVtdSB3aWxsIHN0YXJ0CiAgICAgICAgIHNlbGYucWVtdXBpZCA9IE5vbmUKICAgICAgICAgIyB0YXJnZXQgaXAgLSBmcm9tIHRoZSBjb21tYW5kIGxpbmUgb3IgcnVucWVtdSBvdXRwdXQKQEAgLTU0LDggKzU2LDExIEBACiAgICAgICAgIHNlbGYubG9nZ2VkID0gRmFsc2UKICAgICAgICAgc2VsZi50aHJlYWQgPSBOb25lCiAgICAgICAgIHNlbGYudXNlX2t2bSA9IHVzZV9rdm0KKyAgICAgICAgc2VsZi51c2Vfb3ZtZiA9IHVzZV9vdm1mCiAgICAgICAgIHNlbGYudXNlX3NsaXJwID0gdXNlX3NsaXJwCisgICAgICAgIHNlbGYuc2VyaWFsX3BvcnRzID0gc2VyaWFsX3BvcnRzCiAgICAgICAgIHNlbGYubXNnID0gJycKKyAgICAgICAgc2VsZi5ib290X3BhdHRlcm5zID0gYm9vdF9wYXR0ZXJucwogCiAgICAgICAgIHNlbGYucnVucWVtdXRpbWUgPSAxMjAKICAgICAgICAgc2VsZi5xZW11X3BpZGZpbGUgPSAncGlkZmlsZV8nK3N0cihvcy5nZXRwaWQoKSkKQEAgLTY0LDYgKzY5LDI1IEBACiAKICAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKIAorICAgICAgICAjIEVuYWJsZSB0ZXN0aW5nIG90aGVyIE9TJ3MKKyAgICAgICAgIyBTZXQgY29tbWFuZHMgZm9yIHRhcmdldCBjb21tdW5pY2F0aW9uLCBhbmQgZGVmYXVsdCB0byBMaW51eCBBTFdBWVMKKyAgICAgICAgIyBPdGhlciBPUydzIG9yIGJhcmVtZXRhbCBhcHBsaWNhdGlvbnMgbmVlZCB0byBwcm92aWRlIHRoZWlyCisgICAgICAgICMgb3duIGltcGxlbWVudGF0aW9uIHBhc3NpbmcgaXQgdGhyb3VnaCBRZW11UnVubmVyJ3MgY29uc3RydWN0b3IKKyAgICAgICAgIyBvciBieSBwYXNzaW5nIHRoZW0gdGhyb3VnaCBURVNUSU1BR0VfQk9PVF9QQVRURVJOU1tmbGFnXQorICAgICAgICAjIHByb3ZpZGVkIHZhcmlhYmxlcywgd2hlcmUgPGZsYWc+IGlzIG9uZSBvZiB0aGUgbWVudGlvbmVkIGJlbG93LgorICAgICAgICBhY2NlcHRlZF9wYXR0ZXJucyA9IFsnc2VhcmNoX3JlYWNoZWRfcHJvbXB0JywgJ3NlbmRfbG9naW5fdXNlcicsICdzZWFyY2hfbG9naW5fc3VjY2VlZGVkJywgJ3NlYXJjaF9jbWRfZmluaXNoZWQnXQorICAgICAgICBkZWZhdWx0X2Jvb3RfcGF0dGVybnMgPSBkZWZhdWx0ZGljdChzdHIpCisgICAgICAgICMgRGVmYXVsdCB0byB0aGUgdXN1YWwgcGF0ZXJucyB1c2VkIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHRhcmdldAorICAgICAgICBkZWZhdWx0X2Jvb3RfcGF0dGVybnNbJ3NlYXJjaF9yZWFjaGVkX3Byb21wdCddID0gYicgbG9naW46JworICAgICAgICBkZWZhdWx0X2Jvb3RfcGF0dGVybnNbJ3NlbmRfbG9naW5fdXNlciddID0gJ3Jvb3RcbicKKyAgICAgICAgZGVmYXVsdF9ib290X3BhdHRlcm5zWydzZWFyY2hfbG9naW5fc3VjY2VlZGVkJ10gPSByInJvb3RAW2EtekEtWjAtOVwtXSs6fiMiCisgICAgICAgIGRlZmF1bHRfYm9vdF9wYXR0ZXJuc1snc2VhcmNoX2NtZF9maW5pc2hlZCddID0gciJbYS16QS1aMC05XStAW2EtekEtWjAtOVwtXSs6fiMiCisKKyAgICAgICAgIyBPbmx5IG92ZXJyaWRlIHBhdHRlcm5zIHRoYXQgd2VyZSBzZXQgZS5nLiBsb2dpbiB1c2VyIFRFU1RJTUFHRV9CT09UX1BBVFRFUk5TW3NlbmRfbG9naW5fdXNlcl0gPSAid2Vic2VydmVyXG4iCisgICAgICAgIGZvciBwYXR0ZXJuIGluIGFjY2VwdGVkX3BhdHRlcm5zOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuYm9vdF9wYXR0ZXJuc1twYXR0ZXJuXToKKyAgICAgICAgICAgICAgICBzZWxmLmJvb3RfcGF0dGVybnNbcGF0dGVybl0gPSBkZWZhdWx0X2Jvb3RfcGF0dGVybnNbcGF0dGVybl0KKwogICAgIGRlZiBjcmVhdGVfc29ja2V0KHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQpAQCAtOTgsMTEgKzEyMiwxMCBAQAogICAgIGRlZiBoYW5kbGVTSUdDSExEKHNlbGYsIHNpZ251bSwgZnJhbWUpOgogICAgICAgICBpZiBzZWxmLnJ1bnFlbXUgYW5kIHNlbGYucnVucWVtdS5wb2xsKCk6CiAgICAgICAgICAgICBpZiBzZWxmLnJ1bnFlbXUucmV0dXJuY29kZToKLSAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCdydW5xZW11IGV4aXRlZCB3aXRoIGNvZGUgJWQnICUgc2VsZi5ydW5xZW11LnJldHVybmNvZGUpCi0gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIk91dHB1dCBmcm9tIHJ1bnFlbXU6XG4lcyIgJSBzZWxmLmdldE91dHB1dChzZWxmLnJ1bnFlbXUuc3Rkb3V0KSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigncnVucWVtdSBleGl0ZWQgd2l0aCBjb2RlICVkJyAlIHNlbGYucnVucWVtdS5yZXR1cm5jb2RlKQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCdPdXRwdXQgZnJvbSBydW5xZW11OlxuJXMnICUgc2VsZi5nZXRPdXRwdXQoc2VsZi5ydW5xZW11LnN0ZG91dCkpCiAgICAgICAgICAgICAgICAgc2VsZi5zdG9wKCkKICAgICAgICAgICAgICAgICBzZWxmLl9kdW1wX2hvc3QoKQotICAgICAgICAgICAgICAgIHJhaXNlIFN5c3RlbUV4aXQKIAogICAgIGRlZiBzdGFydChzZWxmLCBxZW11cGFyYW1zID0gTm9uZSwgZ2V0X2lwID0gVHJ1ZSwgZXh0cmFfYm9vdHBhcmFtcyA9IE5vbmUsIHJ1bnFlbXVwYXJhbXM9JycsIGxhdW5jaF9jbWQ9Tm9uZSwgZGlzY2FyZF93cml0ZXM9VHJ1ZSk6CiAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCkBAIC0xMzYsMTMgKzE1OSwxNiBAQAogICAgICAgICAgICAgICAgIGxhdW5jaF9jbWQgKz0gJyBub2dyYXBoaWMnCiAgICAgICAgICAgICBpZiBzZWxmLnVzZV9zbGlycDoKICAgICAgICAgICAgICAgICBsYXVuY2hfY21kICs9ICcgc2xpcnAnCisgICAgICAgICAgICBpZiBzZWxmLnVzZV9vdm1mOgorICAgICAgICAgICAgICAgIGxhdW5jaF9jbWQgKz0gJyBvdm1mJwogICAgICAgICAgICAgbGF1bmNoX2NtZCArPSAnICVzICVzICVzJyAlIChydW5xZW11cGFyYW1zLCBzZWxmLm1hY2hpbmUsIHNlbGYucm9vdGZzKQogCiAgICAgICAgIHJldHVybiBzZWxmLmxhdW5jaChsYXVuY2hfY21kLCBxZW11cGFyYW1zPXFlbXVwYXJhbXMsIGdldF9pcD1nZXRfaXAsIGV4dHJhX2Jvb3RwYXJhbXM9ZXh0cmFfYm9vdHBhcmFtcywgZW52PWVudikKIAogICAgIGRlZiBsYXVuY2goc2VsZiwgbGF1bmNoX2NtZCwgZ2V0X2lwID0gVHJ1ZSwgcWVtdXBhcmFtcyA9IE5vbmUsIGV4dHJhX2Jvb3RwYXJhbXMgPSBOb25lLCBlbnYgPSBOb25lKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi50aHJlYWRzb2NrLCB0aHJlYWRwb3J0ID0gc2VsZi5jcmVhdGVfc29ja2V0KCkKKyAgICAgICAgICAgIGlmIHNlbGYuc2VyaWFsX3BvcnRzID49IDI6CisgICAgICAgICAgICAgICAgc2VsZi50aHJlYWRzb2NrLCB0aHJlYWRwb3J0ID0gc2VsZi5jcmVhdGVfc29ja2V0KCkKICAgICAgICAgICAgIHNlbGYuc2VydmVyX3NvY2tldCwgc2VsZi5zZXJ2ZXJwb3J0ID0gc2VsZi5jcmVhdGVfc29ja2V0KCkKICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBtc2c6CiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSBsaXN0ZW5pbmcgc29ja2V0OiAlcyIgJSBtc2dbMV0pCkBAIC0xNjAsNyArMTg2LDEwIEBACiAgICAgICAgIGlmIHFlbXVwYXJhbXM6CiAgICAgICAgICAgICBzZWxmLnFlbXVwYXJhbXMgPSBzZWxmLnFlbXVwYXJhbXNbOi0xXSArICIgIiArIHFlbXVwYXJhbXMgKyAiICIgKyAnXCInCiAKLSAgICAgICAgbGF1bmNoX2NtZCArPSAnIHRjcHNlcmlhbD0lczolcyAlcycgJSAodGhyZWFkcG9ydCwgc2VsZi5zZXJ2ZXJwb3J0LCBzZWxmLnFlbXVwYXJhbXMpCisgICAgICAgIGlmIHNlbGYuc2VyaWFsX3BvcnRzID49IDI6CisgICAgICAgICAgICBsYXVuY2hfY21kICs9ICcgdGNwc2VyaWFsPSVzOiVzICVzJyAlICh0aHJlYWRwb3J0LCBzZWxmLnNlcnZlcnBvcnQsIHNlbGYucWVtdXBhcmFtcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxhdW5jaF9jbWQgKz0gJyB0Y3BzZXJpYWw9JXMgJXMnICUgKHNlbGYuc2VydmVycG9ydCwgc2VsZi5xZW11cGFyYW1zKQogCiAgICAgICAgIHNlbGYub3JpZ2NobGRoYW5kbGVyID0gc2lnbmFsLmdldHNpZ25hbChzaWduYWwuU0lHQ0hMRCkKICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQ0hMRCwgc2VsZi5oYW5kbGVTSUdDSExEKQpAQCAtMjA2LDYgKzIzNSw4IEBACiAgICAgICAgIGVuZHRpbWUgPSB0aW1lLnRpbWUoKSArIHNlbGYucnVucWVtdXRpbWUKICAgICAgICAgd2hpbGUgbm90IHNlbGYuaXNfYWxpdmUoKSBhbmQgdGltZS50aW1lKCkgPCBlbmR0aW1lOgogICAgICAgICAgICAgaWYgc2VsZi5ydW5xZW11LnBvbGwoKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLnJ1bnFlbXVfZXhpdGVkOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgICAgICBpZiBzZWxmLnJ1bnFlbXUucmV0dXJuY29kZToKICAgICAgICAgICAgICAgICAgICAgIyBObyBwb2ludCB3YWl0aW5nIGFueSBsb25nZXIKICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZygncnVucWVtdSBleGl0ZWQgd2l0aCBjb2RlICVkJyAlIHNlbGYucnVucWVtdS5yZXR1cm5jb2RlKQpAQCAtMjE1LDYgKzI0Niw5IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgdGltZS5zbGVlcCgwLjUpCiAKKyAgICAgICAgaWYgc2VsZi5ydW5xZW11X2V4aXRlZDoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2FsaXZlKCk6CiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiUWVtdSBwaWQgZGlkbid0IGFwcGVhciBpbiAlcyBzZWNvbmRzICglcykiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLnJ1bnFlbXV0aW1lLCB0aW1lLnN0cmZ0aW1lKCIlRCAlSDolTTolUyIpKSkKQEAgLTIzNyw4ICsyNzEsOCBAQAogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygicWVtdSBzdGFydGVkIGluICVzIHNlY29uZHMgLSBxZW11IHByb2NjZXMgcGlkIGlzICVzICglcykiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRpbWUudGltZSgpIC0gKGVuZHRpbWUgLSBzZWxmLnJ1bnFlbXV0aW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucWVtdXBpZCwgdGltZS5zdHJmdGltZSgiJUQgJUg6JU06JVMiKSkpCisgICAgICAgIGNtZGxpbmUgPSAnJwogICAgICAgICBpZiBnZXRfaXA6Ci0gICAgICAgICAgICBjbWRsaW5lID0gJycKICAgICAgICAgICAgIHdpdGggb3BlbignL3Byb2MvJXMvY21kbGluZScgJSBzZWxmLnFlbXVwaWQpIGFzIHA6CiAgICAgICAgICAgICAgICAgY21kbGluZSA9IHAucmVhZCgpCiAgICAgICAgICAgICAgICAgIyBJdCBpcyBuZWVkZWQgdG8gc2FuaXRpemUgdGhlIGRhdGEgcmVjZWl2ZWQKQEAgLTI3NSwxNCArMzA5LDE1IEBACiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJUYXJnZXQgSVA6ICVzIiAlIHNlbGYuaXApCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTZXJ2ZXIgSVA6ICVzIiAlIHNlbGYuc2VydmVyX2lwKQogCi0gICAgICAgIHNlbGYudGhyZWFkID0gTG9nZ2luZ1RocmVhZChzZWxmLmxvZywgc2VsZi50aHJlYWRzb2NrLCBzZWxmLmxvZ2dlcikKLSAgICAgICAgc2VsZi50aHJlYWQuc3RhcnQoKQotICAgICAgICBpZiBub3Qgc2VsZi50aHJlYWQuY29ubmVjdGlvbl9lc3RhYmxpc2hlZC53YWl0KHNlbGYuYm9vdHRpbWUpOgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIkRpZG4ndCByZWNlaXZlIGEgY29uc29sZSBjb25uZWN0aW9uIGZyb20gcWVtdS4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICJIZXJlIGlzIHRoZSBxZW11IGNvbW1hbmQgbGluZSB1c2VkOlxuJXNcbmFuZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm91dHB1dCBmcm9tIHJ1bnFlbXU6XG4lcyIgJSAoY21kbGluZSwgb3V0KSkKLSAgICAgICAgICAgIHNlbGYuc3RvcF90aHJlYWQoKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIHNlbGYuc2VyaWFsX3BvcnRzID49IDI6CisgICAgICAgICAgICBzZWxmLnRocmVhZCA9IExvZ2dpbmdUaHJlYWQoc2VsZi5sb2csIHNlbGYudGhyZWFkc29jaywgc2VsZi5sb2dnZXIpCisgICAgICAgICAgICBzZWxmLnRocmVhZC5zdGFydCgpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi50aHJlYWQuY29ubmVjdGlvbl9lc3RhYmxpc2hlZC53YWl0KHNlbGYuYm9vdHRpbWUpOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJEaWRuJ3QgcmVjZWl2ZSBhIGNvbnNvbGUgY29ubmVjdGlvbiBmcm9tIHFlbXUuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhlcmUgaXMgdGhlIHFlbXUgY29tbWFuZCBsaW5lIHVzZWQ6XG4lc1xuYW5kICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm91dHB1dCBmcm9tIHJ1bnFlbXU6XG4lcyIgJSAoY21kbGluZSwgb3V0KSkKKyAgICAgICAgICAgICAgICBzZWxmLnN0b3BfdGhyZWFkKCkKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiT3V0cHV0IGZyb20gcnVucWVtdTpcbiVzIiwgb3V0KQogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiV2FpdGluZyBhdCBtb3N0ICVkIHNlY29uZHMgZm9yIGxvZ2luIGJhbm5lciAoJXMpIiAlCkBAIC0zMTAsOCArMzQ1LDEyIEBACiAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgc29jay5yZWN2KDEwMjQpCiAgICAgICAgICAgICAgICAgICAgIGlmIGRhdGE6CiAgICAgICAgICAgICAgICAgICAgICAgICBib290bG9nICs9IGRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuc2VyaWFsX3BvcnRzIDwgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoaXMgc29ja2V0IGhhcyBtaXhlZCBjb25zb2xlL2tlcm5lbCBkYXRhLCBsb2cgaXQgdG8gbG9nZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nKGRhdGEpCisKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBiJycKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGInIGxvZ2luOicgaW4gYm9vdGxvZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuYm9vdF9wYXR0ZXJuc1snc2VhcmNoX3JlYWNoZWRfcHJvbXB0J10gaW4gYm9vdGxvZzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9zb2NrZXQgPSBxZW11c29jawogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3ByZWFkID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWNoZWRsb2dpbiA9IFRydWUKQEAgLTM0Myw4ICszODIsOCBAQAogCiAgICAgICAgICMgSWYgd2UgYXJlIG5vdCBhYmxlIHRvIGxvZ2luIHRoZSB0ZXN0cyBjYW4gY29udGludWUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgKHN0YXR1cywgb3V0cHV0KSA9IHNlbGYucnVuX3NlcmlhbCgicm9vdFxuIiwgcmF3PVRydWUpCi0gICAgICAgICAgICBpZiByZS5zZWFyY2gociJyb290QFthLXpBLVowLTlcLV0rOn4jIiwgb3V0cHV0KToKKyAgICAgICAgICAgIChzdGF0dXMsIG91dHB1dCkgPSBzZWxmLnJ1bl9zZXJpYWwoc2VsZi5ib290X3BhdHRlcm5zWydzZW5kX2xvZ2luX3VzZXInXSwgcmF3PVRydWUpCisgICAgICAgICAgICBpZiByZS5zZWFyY2goc2VsZi5ib290X3BhdHRlcm5zWydzZWFyY2hfbG9naW5fc3VjY2VlZGVkJ10sIG91dHB1dCk6CiAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZWQgPSBUcnVlCiAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkxvZ2dlZCBhcyByb290IGluIHNlcmlhbCBjb25zb2xlIikKICAgICAgICAgICAgICAgICBpZiBuZXRjb25mOgpAQCAtMzg1LDcgKzQyNCw3IEBACiAgICAgICAgICAgICAgICAgb3Mua2lsbHBnKG9zLmdldHBnaWQoc2VsZi5ydW5xZW11LnBpZCksIHNpZ25hbC5TSUdLSUxMKQogICAgICAgICAgICAgc2VsZi5ydW5xZW11LnN0ZGluLmNsb3NlKCkKICAgICAgICAgICAgIHNlbGYucnVucWVtdS5zdGRvdXQuY2xvc2UoKQotICAgICAgICAgICAgc2VsZi5ydW5xZW11ID0gTm9uZQorICAgICAgICAgICAgc2VsZi5ydW5xZW11X2V4aXRlZCA9IFRydWUKIAogICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdzZXJ2ZXJfc29ja2V0JykgYW5kIHNlbGYuc2VydmVyX3NvY2tldDoKICAgICAgICAgICAgIHNlbGYuc2VydmVyX3NvY2tldC5jbG9zZSgpCkBAIC0zOTYsNyArNDM1LDExIEBACiAgICAgICAgIHNlbGYucWVtdXBpZCA9IE5vbmUKICAgICAgICAgc2VsZi5pcCA9IE5vbmUKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5xZW11X3BpZGZpbGUpOgotICAgICAgICAgICAgb3MucmVtb3ZlKHNlbGYucWVtdV9waWRmaWxlKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnJlbW92ZShzZWxmLnFlbXVfcGlkZmlsZSkKKyAgICAgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICMgV2UgcmFjZWQsIGlnbm9yZQorICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgaWYgc2VsZi5tb25pdG9ycGlwZToKICAgICAgICAgICAgIHNlbGYubW9uaXRvcnBpcGUuY2xvc2UoKQogCkBAIC00MjIsNyArNDY1LDcgQEAKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxmLnJ1bnFlbXUgb3Igc2VsZi5ydW5xZW11LnBvbGwoKSBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgbm90IHNlbGYucnVucWVtdSBvciBzZWxmLnJ1bnFlbXUucG9sbCgpIGlzIG5vdCBOb25lIG9yIHNlbGYucnVucWVtdV9leGl0ZWQ6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoc2VsZi5xZW11X3BpZGZpbGUpOgogICAgICAgICAgICAgIyB3aGVuIGhhbmRsaW5nIHBpZGZpbGUsIHFlbXUgY3JlYXRlcyB0aGUgZmlsZSwgc3RhdCBpdCwgbG9jayBpdCBhbmQgdGhlbiB3cml0ZSB0byBpdApAQCAtNDY1LDcgKzUwOCw3IEBACiAgICAgICAgICAgICAgICAgaWYgYW5zd2VyOgogICAgICAgICAgICAgICAgICAgICBkYXRhICs9IGFuc3dlci5kZWNvZGUoJ3V0Zi04JykKICAgICAgICAgICAgICAgICAgICAgIyBTZWFyY2ggdGhlIHByb21wdCB0byBzdG9wCi0gICAgICAgICAgICAgICAgICAgIGlmIHJlLnNlYXJjaChyIlthLXpBLVowLTldK0BbYS16QS1aMC05XC1dKzp+IyIsIGRhdGEpOgorICAgICAgICAgICAgICAgICAgICBpZiByZS5zZWFyY2goc2VsZi5ib290X3BhdHRlcm5zWydzZWFyY2hfY21kX2ZpbmlzaGVkJ10sIGRhdGEpOgogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIk5vIGRhdGEgb24gc2VyaWFsIGNvbnNvbGUgc29ja2V0IikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9zc2hjb250cm9sLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3NzaGNvbnRyb2wucHkKaW5kZXggNDlhMDcyNi4uMzZjMmVjYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3NzaGNvbnRyb2wucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3NzaGNvbnRyb2wucHkKQEAgLTIzLDcgKzIzLDcgQEAKICAgICAgICAgICAgICJzdGRpbiI6IE5vbmUsCiAgICAgICAgICAgICAic2hlbGwiOiBGYWxzZSwKICAgICAgICAgICAgICJidWZzaXplIjogLTEsCi0gICAgICAgICAgICAicHJlZXhlY19mbiI6IG9zLnNldHNpZCwKKyAgICAgICAgICAgICJzdGFydF9uZXdfc2Vzc2lvbiI6IFRydWUsCiAgICAgICAgIH0KICAgICAgICAgc2VsZi5vcHRpb25zID0gZGljdChzZWxmLmRlZmF1bHRvcHRzKQogICAgICAgICBzZWxmLm9wdGlvbnMudXBkYXRlKG9wdGlvbnMpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvYWxzYS1zdGF0ZS9hbHNhLXN0YXRlLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2Fsc2Etc3RhdGUvYWxzYS1zdGF0ZS5iYgppbmRleCAwNjcwNTU2Li5jZWMyMjcyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvYWxzYS1zdGF0ZS9hbHNhLXN0YXRlLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9hbHNhLXN0YXRlL2Fsc2Etc3RhdGUuYmIKQEAgLTYyLDcgKzYyLDcgQEAKIAl0aGVuCiAJCWlmIHRlc3QgLXggJHtzYmluZGlyfS9hbHNhY3RsCiAJCXRoZW4KLQkJCSR7c2JpbmRpcn0vYWxzYWN0bCAtZiAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9hbHNhL2Fzb3VuZC5zdGF0ZSByZXN0b3JlCisJCQkke3NiaW5kaXJ9L2Fsc2FjdGwgLWcgLWYgJHtsb2NhbHN0YXRlZGlyfS9saWIvYWxzYS9hc291bmQuc3RhdGUgcmVzdG9yZQogCQlmaQogCWZpCiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViMi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViMi5pbmMKaW5kZXggYzgxZGVmMi4uYjMyOTFjYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1YjIuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYwpAQCAtMzMsNyArMzMsNyBAQAogR1JVQlBMQVRGT1JNX2FhcmNoNjQgPSAiZWZpIgogR1JVQlBMQVRGT1JNID8/PSAicGMiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHBrZ2NvbmZpZwogCiBFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXBsYXRmb3JtPSR7R1JVQlBMQVRGT1JNfSBcCiAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdydWItbWtmb250IFwKQEAgLTYwLDggKzYwLDkgQEAKIGV4cG9ydCBQWVRIT04gPSAicHl0aG9uMyIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JKCBjZCAke1N9Ci0JJHtTfS9hdXRvZ2VuLnNoICkKKwljZCAke1N9CisJRlJPTV9CT09UU1RSQVA9MSAke1N9L2F1dG9nZW4uc2gKKwljZCAke0J9CiB9CiAKIFJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3otMC4xMi4yMC9hY2RlZmluZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzei0wLjEyLjIwL2FjZGVmaW5lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODJjZjQxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzei0wLjEyLjIwL2FjZGVmaW5lLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotQWRkIGEgZGVzY3JpcHRpb24gdG8gdGhlIEFDX0RFRklORSBmb3IgTE9DQUxFRElSIHNvIHRoYXQgaXQgYXBwZWFycyBpbiBjb25maWcuaAotYW5kIHNpbGVuY2VzIGEgZmF0YWwgd2FybmluZy4KLQotVXBzdHJlYW0tU3RhdHVzOlBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IGMxMDQ2MGMuLmFhMjAyNjMgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTI1OCw3ICsyNTgsNyBAQCBBQ19TVUJTVChMSUJTKQotIAotIEFNX0dOVV9HRVRURVhUCi0gCi0tQUNfREVGSU5FX1VOUVVPVEVEKExPQ0FMRURJUiwiJHByZWZpeC8kREFUQURJUk5BTUUiKQotK0FDX0RFRklORV9VTlFVT1RFRChMT0NBTEVESVIsIiRwcmVmaXgvJERBVEFESVJOQU1FIixbbG9jYWxlIGRpcmVjdG9yeV0pCi0gCi0gQUNfT1VUUFVUKFtNYWtlZmlsZSBpbnRsL01ha2VmaWxlIGxpYi9NYWtlZmlsZSB0ZXN0c3VpdGUvTWFrZWZpbGUgIG00L01ha2VmaWxlIFwKLSBtYW4vTWFrZWZpbGUgcG8vTWFrZWZpbGUuaW4gc3JjL01ha2VmaWxlIGRlYmlhbi9ydWxlcyBTcGVjZmlsZSBzeXN0eXBlIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzei0wLjEyLjIwL2F1dG90b29scy11cGRhdGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3otMC4xMi4yMC9hdXRvdG9vbHMtdXBkYXRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzYWYzOGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3otMC4xMi4yMC9hdXRvdG9vbHMtdXBkYXRlLnBhdGNoCkBAIC0wLDAgKzEsNTc0OSBAQAorVXBkYXRlIGF1dG90b29scyBpbmZyYXN0cnVjdHVyZSAoaW5jbHVkaW5nIGdldHRleHQpIHRvIG1vZGVybiB2ZXJzaW9ucy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBQaGlsIEJsdW5kZWxsIDxwYkBwYmNsLm5ldD4KKworZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2NvbmZpZ3VyZS5pbiBscnpzei0wLjEyLjIwL2NvbmZpZ3VyZS5pbgorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvY29uZmlndXJlLmluCTE5OTgtMTItMzAgMDc6NTA6MDcuMDAwMDAwMDAwICswMDAwCisrKysgbHJ6c3otMC4xMi4yMC9jb25maWd1cmUuaW4JMjAxOS0xMS0yNSAxNjoyMjozNy4wMDAwMDAwMDAgKzAwMDAKK0BAIC05Miw3ICs5Miw2IEBAIEFDX1BST0dfUkFOTElCCisgQUNfSVNDX1BPU0lYCisgQUNfQUlYCisgQUNfTUlOSVgKKy1BTV9DX1BST1RPVFlQRVMKKyBBQ19DX0NPTlNUCisgQUNfQ19JTkxJTkUKKyAKK0BAIC0yNTMsMTggKzI1MiwxMyBAQCBpaGF2ZSRsb29rdXBfZmFjaWxpdHkKKyBmaQorIAorIAorLUFDX1NVQlNUKENGTEFHUykKKy1BQ19TVUJTVChMREZMQUdTKQorIEFDX1NVQlNUKExJQlMpCisgCistQU1fR05VX0dFVFRFWFQKKytBTV9HTlVfR0VUVEVYVChbZXh0ZXJuYWxdKQorIAorLUFDX0RFRklORV9VTlFVT1RFRChMT0NBTEVESVIsIiRwcmVmaXgvJERBVEFESVJOQU1FIikKKy1BQ19MSU5LX0ZJTEVTKCRubHNfY3ZfaGVhZGVyX2xpYmd0LCAkbmxzX2N2X2hlYWRlcl9pbnRsKQorLQorLUFDX09VVFBVVChbTWFrZWZpbGUgaW50bC9NYWtlZmlsZSBsaWIvTWFrZWZpbGUgdGVzdHN1aXRlL01ha2VmaWxlIFwKKytBQ19PVVRQVVQoW01ha2VmaWxlIGxpYi9NYWtlZmlsZSB0ZXN0c3VpdGUvTWFrZWZpbGUgXAorIG1hbi9NYWtlZmlsZSBwby9NYWtlZmlsZS5pbiBzcmMvTWFrZWZpbGUgZGViaWFuL3J1bGVzIFNwZWNmaWxlIHN5c3R5cGUgXAorIHNyYy9scnpzemJ1Z10sCistW3NlZCAtZSAiL1BPVEZJTEVTID0vciBwby9QT1RGSUxFUyIgcG8vTWFrZWZpbGUuaW4gPiBwby9NYWtlZmlsZTsgCisrWworIGNobW9kICt4IGRlYmlhbi9ydWxlczsKKyB0ZXN0IC16ICIkQ09ORklHX0hFQURFUlMiIHx8IGVjaG8gdGltZXN0YW1wID4gc3RhbXAtaF0pCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9iaW5kdGV4dGRvbS5jIGxyenN6LTAuMTIuMjAvaW50bC9iaW5kdGV4dGRvbS5jCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2JpbmR0ZXh0ZG9tLmMJMTk5OC0wNC0yNiAxNDoyMjozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvYmluZHRleHRkb20uYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsMTk5ICswLDAgQEAKKy0vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgYmluZHRleHRkb21haW4oMykgZnVuY3Rpb24KKy0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistCistICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKy0KKy0jaWZkZWYgSEFWRV9DT05GSUdfSAorLSMgaW5jbHVkZSA8Y29uZmlnLmg+CistI2VuZGlmCistCistI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgX0xJQkMKKy0jIGluY2x1ZGUgPHN0ZGxpYi5oPgorLSNlbHNlCistIyBpZmRlZiBIQVZFX01BTExPQ19ICistIyAgaW5jbHVkZSA8bWFsbG9jLmg+CistIyBlbHNlCistdm9pZCBmcmVlICgpOworLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaWYgZGVmaW5lZCBIQVZFX1NUUklOR19IIHx8IGRlZmluZWQgX0xJQkMKKy0jIGluY2x1ZGUgPHN0cmluZy5oPgorLSNlbHNlCistIyBpbmNsdWRlIDxzdHJpbmdzLmg+CistIyBpZm5kZWYgbWVtY3B5CistIyAgZGVmaW5lIG1lbWNweShEc3QsIFNyYywgTnVtKSBiY29weSAoU3JjLCBEc3QsIE51bSkKKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmZGVmIF9MSUJDCistIyBpbmNsdWRlIDxsaWJpbnRsLmg+CistI2Vsc2UKKy0jIGluY2x1ZGUgImxpYmdldHRleHQuaCIKKy0jZW5kaWYKKy0jaW5jbHVkZSAiZ2V0dGV4dC5oIgorLSNpbmNsdWRlICJnZXR0ZXh0UC5oIgorLQorLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKy0KKy0vKiBDb250YWlucyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbWVzc2FnZSBjYXRhbG9ncy4gICovCistZXh0ZXJuIGNvbnN0IGNoYXIgX25sX2RlZmF1bHRfZGlybmFtZVtdOworLQorLS8qIExpc3Qgd2l0aCBiaW5kaW5ncyBvZiBzcGVjaWZpYyBkb21haW5zLiAgKi8KKy1leHRlcm4gc3RydWN0IGJpbmRpbmcgKl9ubF9kb21haW5fYmluZGluZ3M7CistCistCistLyogTmFtZXMgZm9yIHRoZSBsaWJpbnRsIGZ1bmN0aW9ucyBhcmUgYSBwcm9ibGVtLiAgVGhleSBtdXN0IG5vdCBjbGFzaAorLSAgIHdpdGggZXhpc3RpbmcgbmFtZXMgYW5kIHRoZXkgc2hvdWxkIGZvbGxvdyBBTlNJIEMuICBCdXQgdGhpcyBzb3VyY2UKKy0gICBjb2RlIGlzIGFsc28gdXNlZCBpbiBHTlUgQyBMaWJyYXJ5IHdoZXJlIHRoZSBuYW1lcyBoYXZlIGEgX18KKy0gICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLworLSNpZmRlZiBfTElCQworLSMgZGVmaW5lIEJJTkRURVhURE9NQUlOIF9fYmluZHRleHRkb21haW4KKy0jIGRlZmluZSBzdHJkdXAoc3RyKSBfX3N0cmR1cCAoc3RyKQorLSNlbHNlCistIyBkZWZpbmUgQklORFRFWFRET01BSU4gYmluZHRleHRkb21haW5fXworLSNlbmRpZgorLQorLS8qIFNwZWNpZnkgdGhhdCB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgd2lsbCBiZSBmb3VuZAorLSAgIGluIERJUk5BTUUgcmF0aGVyIHRoYW4gaW4gdGhlIHN5c3RlbSBsb2NhbGUgZGF0YSBiYXNlLiAgKi8KKy1jaGFyICoKKy1CSU5EVEVYVERPTUFJTiAoZG9tYWlubmFtZSwgZGlybmFtZSkKKy0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7CistICAgICBjb25zdCBjaGFyICpkaXJuYW1lOworLXsKKy0gIHN0cnVjdCBiaW5kaW5nICpiaW5kaW5nOworLQorLSAgLyogU29tZSBzYW5pdHkgY2hlY2tzLiAgKi8KKy0gIGlmIChkb21haW5uYW1lID09IE5VTEwgfHwgZG9tYWlubmFtZVswXSA9PSAnXDAnKQorLSAgICByZXR1cm4gTlVMTDsKKy0KKy0gIGZvciAoYmluZGluZyA9IF9ubF9kb21haW5fYmluZGluZ3M7IGJpbmRpbmcgIT0gTlVMTDsgYmluZGluZyA9IGJpbmRpbmctPm5leHQpCistICAgIHsKKy0gICAgICBpbnQgY29tcGFyZSA9IHN0cmNtcCAoZG9tYWlubmFtZSwgYmluZGluZy0+ZG9tYWlubmFtZSk7CistICAgICAgaWYgKGNvbXBhcmUgPT0gMCkKKy0JLyogV2UgZm91bmQgaXQhICAqLworLQlicmVhazsKKy0gICAgICBpZiAoY29tcGFyZSA8IDApCistCXsKKy0JICAvKiBJdCBpcyBub3QgaW4gdGhlIGxpc3QuICAqLworLQkgIGJpbmRpbmcgPSBOVUxMOworLQkgIGJyZWFrOworLQl9CistICAgIH0KKy0KKy0gIGlmIChkaXJuYW1lID09IE5VTEwpCistICAgIC8qIFRoZSBjdXJyZW50IGJpbmRpbmcgaGFzIGJlIHRvIHJldHVybmVkLiAgKi8KKy0gICAgcmV0dXJuIGJpbmRpbmcgPT0gTlVMTCA/IChjaGFyICopIF9ubF9kZWZhdWx0X2Rpcm5hbWUgOiBiaW5kaW5nLT5kaXJuYW1lOworLQorLSAgaWYgKGJpbmRpbmcgIT0gTlVMTCkKKy0gICAgeworLSAgICAgIC8qIFRoZSBkb21haW4gaXMgYWxyZWFkeSBib3VuZC4gIElmIHRoZSBuZXcgdmFsdWUgYW5kIHRoZSBvbGQKKy0JIG9uZSBhcmUgZXF1YWwgd2Ugc2ltcGx5IGRvIG5vdGhpbmcuICBPdGhlcndpc2UgcmVwbGFjZSB0aGUKKy0JIG9sZCBiaW5kaW5nLiAgKi8KKy0gICAgICBpZiAoc3RyY21wIChkaXJuYW1lLCBiaW5kaW5nLT5kaXJuYW1lKSAhPSAwKQorLQl7CistCSAgY2hhciAqbmV3X2Rpcm5hbWU7CistCistCSAgaWYgKHN0cmNtcCAoZGlybmFtZSwgX25sX2RlZmF1bHRfZGlybmFtZSkgPT0gMCkKKy0JICAgIG5ld19kaXJuYW1lID0gKGNoYXIgKikgX25sX2RlZmF1bHRfZGlybmFtZTsKKy0JICBlbHNlCistCSAgICB7CistI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX1NUUkRVUAorLQkgICAgICBuZXdfZGlybmFtZSA9IHN0cmR1cCAoZGlybmFtZSk7CistCSAgICAgIGlmIChuZXdfZGlybmFtZSA9PSBOVUxMKQorLQkJcmV0dXJuIE5VTEw7CistI2Vsc2UKKy0JICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoZGlybmFtZSkgKyAxOworLQkgICAgICBuZXdfZGlybmFtZSA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKKy0JICAgICAgaWYgKG5ld19kaXJuYW1lID09IE5VTEwpCistCQlyZXR1cm4gTlVMTDsKKy0KKy0JICAgICAgbWVtY3B5IChuZXdfZGlybmFtZSwgZGlybmFtZSwgbGVuKTsKKy0jZW5kaWYKKy0JICAgIH0KKy0KKy0JICBpZiAoYmluZGluZy0+ZGlybmFtZSAhPSBfbmxfZGVmYXVsdF9kaXJuYW1lKQorLQkgICAgZnJlZSAoYmluZGluZy0+ZGlybmFtZSk7CistCistCSAgYmluZGluZy0+ZGlybmFtZSA9IG5ld19kaXJuYW1lOworLQl9CistICAgIH0KKy0gIGVsc2UKKy0gICAgeworLSAgICAgIC8qIFdlIGhhdmUgdG8gY3JlYXRlIGEgbmV3IGJpbmRpbmcuICAqLworLSAgICAgIHNpemVfdCBsZW47CistICAgICAgc3RydWN0IGJpbmRpbmcgKm5ld19iaW5kaW5nID0KKy0JKHN0cnVjdCBiaW5kaW5nICopIG1hbGxvYyAoc2l6ZW9mICgqbmV3X2JpbmRpbmcpKTsKKy0KKy0gICAgICBpZiAobmV3X2JpbmRpbmcgPT0gTlVMTCkKKy0JcmV0dXJuIE5VTEw7CistCistI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX1NUUkRVUAorLSAgICAgIG5ld19iaW5kaW5nLT5kb21haW5uYW1lID0gc3RyZHVwIChkb21haW5uYW1lKTsKKy0gICAgICBpZiAobmV3X2JpbmRpbmctPmRvbWFpbm5hbWUgPT0gTlVMTCkKKy0JcmV0dXJuIE5VTEw7CistI2Vsc2UKKy0gICAgICBsZW4gPSBzdHJsZW4gKGRvbWFpbm5hbWUpICsgMTsKKy0gICAgICBuZXdfYmluZGluZy0+ZG9tYWlubmFtZSA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKKy0gICAgICBpZiAobmV3X2JpbmRpbmctPmRvbWFpbm5hbWUgPT0gTlVMTCkKKy0JcmV0dXJuIE5VTEw7CistICAgICAgbWVtY3B5IChuZXdfYmluZGluZy0+ZG9tYWlubmFtZSwgZG9tYWlubmFtZSwgbGVuKTsKKy0jZW5kaWYKKy0KKy0gICAgICBpZiAoc3RyY21wIChkaXJuYW1lLCBfbmxfZGVmYXVsdF9kaXJuYW1lKSA9PSAwKQorLQluZXdfYmluZGluZy0+ZGlybmFtZSA9IChjaGFyICopIF9ubF9kZWZhdWx0X2Rpcm5hbWU7CistICAgICAgZWxzZQorLQl7CistI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX1NUUkRVUAorLQkgIG5ld19iaW5kaW5nLT5kaXJuYW1lID0gc3RyZHVwIChkaXJuYW1lKTsKKy0JICBpZiAobmV3X2JpbmRpbmctPmRpcm5hbWUgPT0gTlVMTCkKKy0JICAgIHJldHVybiBOVUxMOworLSNlbHNlCistCSAgbGVuID0gc3RybGVuIChkaXJuYW1lKSArIDE7CistCSAgbmV3X2JpbmRpbmctPmRpcm5hbWUgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7CistCSAgaWYgKG5ld19iaW5kaW5nLT5kaXJuYW1lID09IE5VTEwpCistCSAgICByZXR1cm4gTlVMTDsKKy0JICBtZW1jcHkgKG5ld19iaW5kaW5nLT5kaXJuYW1lLCBkaXJuYW1lLCBsZW4pOworLSNlbmRpZgorLQl9CistCistICAgICAgLyogTm93IGVucXVldWUgaXQuICAqLworLSAgICAgIGlmIChfbmxfZG9tYWluX2JpbmRpbmdzID09IE5VTEwKKy0JICB8fCBzdHJjbXAgKGRvbWFpbm5hbWUsIF9ubF9kb21haW5fYmluZGluZ3MtPmRvbWFpbm5hbWUpIDwgMCkKKy0JeworLQkgIG5ld19iaW5kaW5nLT5uZXh0ID0gX25sX2RvbWFpbl9iaW5kaW5nczsKKy0JICBfbmxfZG9tYWluX2JpbmRpbmdzID0gbmV3X2JpbmRpbmc7CistCX0KKy0gICAgICBlbHNlCistCXsKKy0JICBiaW5kaW5nID0gX25sX2RvbWFpbl9iaW5kaW5nczsKKy0JICB3aGlsZSAoYmluZGluZy0+bmV4dCAhPSBOVUxMCistCQkgJiYgc3RyY21wIChkb21haW5uYW1lLCBiaW5kaW5nLT5uZXh0LT5kb21haW5uYW1lKSA+IDApCistCSAgICBiaW5kaW5nID0gYmluZGluZy0+bmV4dDsKKy0KKy0JICBuZXdfYmluZGluZy0+bmV4dCA9IGJpbmRpbmctPm5leHQ7CistCSAgYmluZGluZy0+bmV4dCA9IG5ld19iaW5kaW5nOworLQl9CistCistICAgICAgYmluZGluZyA9IG5ld19iaW5kaW5nOworLSAgICB9CistCistICByZXR1cm4gYmluZGluZy0+ZGlybmFtZTsKKy19CistCistI2lmZGVmIF9MSUJDCistLyogQWxpYXMgZm9yIGZ1bmN0aW9uIG5hbWUgaW4gR05VIEMgTGlicmFyeS4gICovCistd2Vha19hbGlhcyAoX19iaW5kdGV4dGRvbWFpbiwgYmluZHRleHRkb21haW4pOworLSNlbmRpZgorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvY2F0LWNvbXBhdC5jIGxyenN6LTAuMTIuMjAvaW50bC9jYXQtY29tcGF0LmMKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvY2F0LWNvbXBhdC5jCTE5OTgtMDQtMjYgMTQ6MjI6MzcuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2NhdC1jb21wYXQuYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsMjYyICswLDAgQEAKKy0vKiBDb21wYXRpYmlsaXR5IGNvZGUgZm9yIGdldHRleHQtdXNpbmctY2F0Z2V0cyBpbnRlcmZhY2UuCistICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistI2lmZGVmIEhBVkVfQ09ORklHX0gKKy0jIGluY2x1ZGUgPGNvbmZpZy5oPgorLSNlbmRpZgorLQorLSNpbmNsdWRlIDxzdGRpby5oPgorLQorLSNpZmRlZiBTVERDX0hFQURFUlMKKy0jIGluY2x1ZGUgPHN0ZGxpYi5oPgorLSMgaW5jbHVkZSA8c3RyaW5nLmg+CistI2Vsc2UKKy1jaGFyICpnZXRlbnYgKCk7CistIyBpZmRlZiBIQVZFX01BTExPQ19ICistIyAgaW5jbHVkZSA8bWFsbG9jLmg+CistIyBlbmRpZgorLSNlbmRpZgorLQorLSNpZmRlZiBIQVZFX05MX1RZUEVTX0gKKy0jIGluY2x1ZGUgPG5sX3R5cGVzLmg+CistI2VuZGlmCistCistI2luY2x1ZGUgImxpYmdldHRleHQuaCIKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistLyogWFBHMyBkZWZpbmVzIHRoZSByZXN1bHQgb2YgYHNldGxvY2FsZSAoY2F0ZWdvcnksIE5VTEwpJyBhczoKKy0gICBgYERpcmVjdHMgYHNldGxvY2FsZSgpJyB0byBxdWVyeSBgY2F0ZWdvcnknIGFuZCByZXR1cm4gdGhlIGN1cnJlbnQKKy0gICAgIHNldHRpbmcgb2YgYGxvY2FsJy4nJworLSAgIEhvd2V2ZXIgaXQgZG9lcyBub3Qgc3BlY2lmeSB0aGUgZXhhY3QgZm9ybWF0LiAgQW5kIGV2ZW4gd29yc2U6IFBPU0lYCistICAgZGVmaW5lcyB0aGlzIG5vdCBhdCBhbGwuICBTbyB3ZSBjYW4gdXNlIHRoaXMgZmVhdHVyZSBvbmx5IG9uIHNlbGVjdGVkCistICAgc3lzdGVtIChlLmcuIHRob3NlIHVzaW5nIEdOVSBDIExpYnJhcnkpLiAgKi8KKy0jaWZkZWYgX0xJQkMKKy0jIGRlZmluZSBIQVZFX0xPQ0FMRV9OVUxMCistI2VuZGlmCistCistLyogVGhlIGNhdGFsb2cgZGVzY3JpcHRvci4gICovCistc3RhdGljIG5sX2NhdGQgY2F0YWxvZyA9IChubF9jYXRkKSAtMTsKKy0KKy0vKiBOYW1lIG9mIHRoZSBkZWZhdWx0IGNhdGFsb2cuICAqLworLXN0YXRpYyBjb25zdCBjaGFyIGRlZmF1bHRfY2F0YWxvZ19uYW1lW10gPSAibWVzc2FnZXMiOworLQorLS8qIE5hbWUgb2YgY3VycmVudGx5IHVzZWQgY2F0YWxvZy4gICovCistc3RhdGljIGNvbnN0IGNoYXIgKmNhdGFsb2dfbmFtZSA9IGRlZmF1bHRfY2F0YWxvZ19uYW1lOworLQorLS8qIEdldCBJRCBmb3IgZ2l2ZW4gc3RyaW5nLiAgSWYgbm90IGZvdW5kIHJldHVybiAtMS4gICovCistc3RhdGljIGludCBtc2dfdG9fY2F0X2lkIFBBUkFNUyAoKGNvbnN0IGNoYXIgKm1zZykpOworLQorLS8qIFN1YnN0aXR1dGlvbiBmb3Igc3lzdGVtcyBsYWNraW5nIHRoaXMgZnVuY3Rpb24gaW4gdGhlaXIgQyBsaWJyYXJ5LiAgKi8KKy0jaWYgIV9MSUJDICYmICFIQVZFX1NUUENQWQorLXN0YXRpYyBjaGFyICpzdHBjcHkgUEFSQU1TICgoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjKSk7CistI2VuZGlmCistCistCistLyogU2V0IGN1cnJlbnRseSB1c2VkIGRvbWFpbi9jYXRhbG9nLiAgKi8KKy1jaGFyICoKKy10ZXh0ZG9tYWluIChkb21haW5uYW1lKQorLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKKy17CistICBubF9jYXRkIG5ld19jYXRhbG9nOworLSAgY2hhciAqbmV3X25hbWU7CistICBzaXplX3QgbmV3X25hbWVfbGVuOworLSAgY2hhciAqbGFuZzsKKy0KKy0jaWYgZGVmaW5lZCBIQVZFX1NFVExPQ0FMRSAmJiBkZWZpbmVkIEhBVkVfTENfTUVTU0FHRVMgXAorLSAgICAmJiBkZWZpbmVkIEhBVkVfTE9DQUxFX05VTEwKKy0gIGxhbmcgPSBzZXRsb2NhbGUgKExDX01FU1NBR0VTLCBOVUxMKTsKKy0jZWxzZQorLSAgbGFuZyA9IGdldGVudiAoIkxDX0FMTCIpOworLSAgaWYgKGxhbmcgPT0gTlVMTCB8fCBsYW5nWzBdID09ICdcMCcpCistICAgIHsKKy0gICAgICBsYW5nID0gZ2V0ZW52ICgiTENfTUVTU0FHRVMiKTsKKy0gICAgICBpZiAobGFuZyA9PSBOVUxMIHx8IGxhbmdbMF0gPT0gJ1wwJykKKy0JbGFuZyA9IGdldGVudiAoIkxBTkciKTsKKy0gICAgfQorLSNlbmRpZgorLSAgaWYgKGxhbmcgPT0gTlVMTCB8fCBsYW5nWzBdID09ICdcMCcpCistICAgIGxhbmcgPSAiQyI7CistCistICAvKiBTZWUgd2hldGhlciBuYW1lIG9mIGN1cnJlbnRseSB1c2VkIGRvbWFpbiBpcyBhc2tlZC4gICovCistICBpZiAoZG9tYWlubmFtZSA9PSBOVUxMKQorLSAgICByZXR1cm4gKGNoYXIgKikgY2F0YWxvZ19uYW1lOworLQorLSAgaWYgKGRvbWFpbm5hbWVbMF0gPT0gJ1wwJykKKy0gICAgZG9tYWlubmFtZSA9IGRlZmF1bHRfY2F0YWxvZ19uYW1lOworLQorLSAgLyogQ29tcHV0ZSBsZW5ndGggb2YgYWRkZWQgcGF0aCBlbGVtZW50LiAgKi8KKy0gIG5ld19uYW1lX2xlbiA9IHNpemVvZiAoTE9DQUxFRElSKSAtIDEgKyAxICsgc3RybGVuIChsYW5nKQorLQkJICsgc2l6ZW9mICgiL0xDX01FU1NBR0VTLyIpIC0gMSArIHNpemVvZiAoUEFDS0FHRSkgLSAxCistCQkgKyBzaXplb2YgKCIuY2F0Iik7CistCistICBuZXdfbmFtZSA9IChjaGFyICopIG1hbGxvYyAobmV3X25hbWVfbGVuKTsKKy0gIGlmIChuZXdfbmFtZSA9PSBOVUxMKQorLSAgICByZXR1cm4gTlVMTDsKKy0KKy0gIHN0cmNweSAobmV3X25hbWUsIFBBQ0tBR0UpOworLSAgbmV3X2NhdGFsb2cgPSBjYXRvcGVuIChuZXdfbmFtZSwgMCk7CistCistICBpZiAobmV3X2NhdGFsb2cgPT0gKG5sX2NhdGQpIC0xKQorLSAgICB7CistICAgICAgLyogTkxTUEFUSCBzZWFyY2ggZGlkbid0IHdvcmssIHRyeSBhYnNvbHV0ZSBwYXRoICovCistICAgICAgc3ByaW50ZiAobmV3X25hbWUsICIlcy8lcy9MQ19NRVNTQUdFUy8lcy5jYXQiLCBMT0NBTEVESVIsIGxhbmcsCistCSAgICAgICBQQUNLQUdFKTsKKy0gICAgICBuZXdfY2F0YWxvZyA9IGNhdG9wZW4gKG5ld19uYW1lLCAwKTsKKy0KKy0gICAgICBpZiAobmV3X2NhdGFsb2cgPT0gKG5sX2NhdGQpIC0xKQorLQl7CistCSAgZnJlZSAobmV3X25hbWUpOworLQkgIHJldHVybiAoY2hhciAqKSBjYXRhbG9nX25hbWU7CistCX0KKy0gICAgfQorLQorLSAgLyogQ2xvc2Ugb2xkIGNhdGFsb2cuICAqLworLSAgaWYgKGNhdGFsb2cgIT0gKG5sX2NhdGQpIC0xKQorLSAgICBjYXRjbG9zZSAoY2F0YWxvZyk7CistICBpZiAoY2F0YWxvZ19uYW1lICE9IGRlZmF1bHRfY2F0YWxvZ19uYW1lKQorLSAgICBmcmVlICgoY2hhciAqKSBjYXRhbG9nX25hbWUpOworLQorLSAgY2F0YWxvZyA9IG5ld19jYXRhbG9nOworLSAgY2F0YWxvZ19uYW1lID0gbmV3X25hbWU7CistCistICByZXR1cm4gKGNoYXIgKikgY2F0YWxvZ19uYW1lOworLX0KKy0KKy1jaGFyICoKKy1iaW5kdGV4dGRvbWFpbiAoZG9tYWlubmFtZSwgZGlybmFtZSkKKy0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7CistICAgICBjb25zdCBjaGFyICpkaXJuYW1lOworLXsKKy0jaWYgSEFWRV9TRVRFTlYgfHwgSEFWRV9QVVRFTlYKKy0gIGNoYXIgKm9sZF92YWwsICpuZXdfdmFsLCAqY3A7CistICBzaXplX3QgbmV3X3ZhbF9sZW47CistCistICAvKiBUaGlzIGRvZXMgbm90IG1ha2UgbXVjaCBzZW5zZSBoZXJlIGJ1dCB0byBiZSBjb21wYXRpYmxlIGRvIGl0LiAgKi8KKy0gIGlmIChkb21haW5uYW1lID09IE5VTEwpCistICAgIHJldHVybiBOVUxMOworLQorLSAgLyogQ29tcHV0ZSBsZW5ndGggb2YgYWRkZWQgcGF0aCBlbGVtZW50LiAgSWYgd2UgdXNlIHNldGVudiB3ZSBkb24ndCBuZWVkCistICAgICB0aGUgZmlyc3QgYnl0cyBmb3IgTkxTUEFUSD0sIGJ1dCB3aHkgY29tcGxpY2F0ZSB0aGUgY29kZSBmb3IgdGhpcworLSAgICAgcGVhbnV0cy4gICovCistICBuZXdfdmFsX2xlbiA9IHNpemVvZiAoIk5MU1BBVEg9IikgLSAxICsgc3RybGVuIChkaXJuYW1lKQorLQkJKyBzaXplb2YgKCIvJUwvTENfTUVTU0FHRVMvJU4uY2F0Iik7CistCistICBvbGRfdmFsID0gZ2V0ZW52ICgiTkxTUEFUSCIpOworLSAgaWYgKG9sZF92YWwgPT0gTlVMTCB8fCBvbGRfdmFsWzBdID09ICdcMCcpCistICAgIHsKKy0gICAgICBvbGRfdmFsID0gTlVMTDsKKy0gICAgICBuZXdfdmFsX2xlbiArPSAxICsgc2l6ZW9mIChMT0NBTEVESVIpIC0gMQorLQkgICAgICAgICAgICAgKyBzaXplb2YgKCIvJUwvTENfTUVTU0FHRVMvJU4uY2F0Iik7CistICAgIH0KKy0gIGVsc2UKKy0gICAgbmV3X3ZhbF9sZW4gKz0gc3RybGVuIChvbGRfdmFsKTsKKy0KKy0gIG5ld192YWwgPSAoY2hhciAqKSBtYWxsb2MgKG5ld192YWxfbGVuKTsKKy0gIGlmIChuZXdfdmFsID09IE5VTEwpCistICAgIHJldHVybiBOVUxMOworLQorLSMgaWYgSEFWRV9TRVRFTlYKKy0gIGNwID0gbmV3X3ZhbDsKKy0jIGVsc2UKKy0gIGNwID0gc3RwY3B5IChuZXdfdmFsLCAiTkxTUEFUSD0iKTsKKy0jIGVuZGlmCistCistICBjcCA9IHN0cGNweSAoY3AsIGRpcm5hbWUpOworLSAgY3AgPSBzdHBjcHkgKGNwLCAiLyVML0xDX01FU1NBR0VTLyVOLmNhdDoiKTsKKy0KKy0gIGlmIChvbGRfdmFsID09IE5VTEwpCistICAgIHsKKy0jIGlmIF9fU1REQ19fCistICAgICAgc3RwY3B5IChjcCwgTE9DQUxFRElSICIvJUwvTENfTUVTU0FHRVMvJU4uY2F0Iik7CistIyBlbHNlCistCistICAgICAgY3AgPSBzdHBjcHkgKGNwLCBMT0NBTEVESVIpOworLSAgICAgIHN0cGNweSAoY3AsICIvJUwvTENfTUVTU0FHRVMvJU4uY2F0Iik7CistIyBlbmRpZgorLSAgICB9CistICBlbHNlCistICAgIHN0cGNweSAoY3AsIG9sZF92YWwpOworLQorLSMgaWYgSEFWRV9TRVRFTlYKKy0gIHNldGVudiAoIk5MU1BBVEgiLCBuZXdfdmFsLCAxKTsKKy0gIGZyZWUgKG5ld192YWwpOworLSMgZWxzZQorLSAgcHV0ZW52IChuZXdfdmFsKTsKKy0gIC8qIERvICpub3QqIGZyZWUgdGhlIGVudmlyb25tZW50IGVudHJ5IHdlIGp1c3QgZW50ZXJlZC4gIEl0IGlzIHVzZWQKKy0gICAgIGZyb20gbm93IG9uLiAgICovCistIyBlbmRpZgorLQorLSNlbmRpZgorLQorLSAgcmV0dXJuIChjaGFyICopIGRvbWFpbm5hbWU7CistfQorLQorLSN1bmRlZiBnZXR0ZXh0CistY2hhciAqCistZ2V0dGV4dCAobXNnKQorLSAgICAgY29uc3QgY2hhciAqbXNnOworLXsKKy0gIGludCBtc2dpZDsKKy0KKy0gIGlmIChtc2cgPT0gTlVMTCB8fCBjYXRhbG9nID09IChubF9jYXRkKSAtMSkKKy0gICAgcmV0dXJuIChjaGFyICopIG1zZzsKKy0KKy0gIC8qIEdldCB0aGUgbWVzc2FnZSBmcm9tIHRoZSBjYXRhbG9nLiAgV2UgYWx3YXlzIHVzZSBzZXQgbnVtYmVyIDEuCistICAgICBUaGUgbWVzc2FnZSBJRCBpcyBjb21wdXRlZCBieSB0aGUgZnVuY3Rpb24gYG1zZ190b19jYXRfaWQnCistICAgICB3aGljaCB3b3JrcyBvbiB0aGUgdGFibGUgZ2VuZXJhdGVkIGJ5IGBwby10by10YmwnLiAgKi8KKy0gIG1zZ2lkID0gbXNnX3RvX2NhdF9pZCAobXNnKTsKKy0gIGlmIChtc2dpZCA9PSAtMSkKKy0gICAgcmV0dXJuIChjaGFyICopIG1zZzsKKy0KKy0gIHJldHVybiBjYXRnZXRzIChjYXRhbG9nLCAxLCBtc2dpZCwgKGNoYXIgKikgbXNnKTsKKy19CistCistLyogTG9vayB0aHJvdWdoIHRoZSB0YWJsZSBgX21zZ190YmwnIHdoaWNoIGhhcyBgX21zZ190YmxfbGVuZ3RoJyBlbnRyaWVzCistICAgZm9yIHRoZSBvbmUgZXF1YWwgdG8gbXNnLiAgSWYgaXQgaXMgZm91bmQgcmV0dXJuIHRoZSBJRC4gIEluIGNhc2Ugd2hlbgorLSAgIHRoZSBzdHJpbmcgaXMgbm90IGZvdW5kIHJldHVybiAtMS4gICovCistc3RhdGljIGludAorLW1zZ190b19jYXRfaWQgKG1zZykKKy0gICAgIGNvbnN0IGNoYXIgKm1zZzsKKy17CistICBpbnQgY250OworLQorLSAgZm9yIChjbnQgPSAwOyBjbnQgPCBfbXNnX3RibF9sZW5ndGg7ICsrY250KQorLSAgICBpZiAoc3RyY21wIChtc2csIF9tc2dfdGJsW2NudF0uX21zZykgPT0gMCkKKy0gICAgICByZXR1cm4gX21zZ190YmxbY250XS5fbXNnX251bWJlcjsKKy0KKy0gIHJldHVybiAtMTsKKy19CistCistCistLyogQEAgYmVnaW4gb2YgZXBpbG9nIEBAICovCistCistLyogV2UgZG9uJ3Qgd2FudCBsaWJpbnRsLmEgdG8gZGVwZW5kIG9uIGFueSBvdGhlciBsaWJyYXJ5LiAgU28gd2UKKy0gICBhdm9pZCB0aGUgbm9uLXN0YW5kYXJkIGZ1bmN0aW9uIHN0cGNweS4gIEluIEdOVSBDIExpYnJhcnkgdGhpcworLSAgIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSwgdGhvdWdoLiAgQWxzbyBhbGxvdyB0aGUgc3ltYm9sIEhBVkVfU1RQQ1BZCistICAgdG8gYmUgZGVmaW5lZC4gICovCistI2lmICFfTElCQyAmJiAhSEFWRV9TVFBDUFkKKy1zdGF0aWMgY2hhciAqCistc3RwY3B5IChkZXN0LCBzcmMpCistICAgICBjaGFyICpkZXN0OworLSAgICAgY29uc3QgY2hhciAqc3JjOworLXsKKy0gIHdoaWxlICgoKmRlc3QrKyA9ICpzcmMrKykgIT0gJ1wwJykKKy0gICAgLyogRG8gbm90aGluZy4gKi8gOworLSAgcmV0dXJuIGRlc3QgLSAxOworLX0KKy0jZW5kaWYKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL0NoYW5nZUxvZyBscnpzei0wLjEyLjIwL2ludGwvQ2hhbmdlTG9nCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL0NoYW5nZUxvZwkxOTk4LTA0LTI2IDE0OjIyOjM1LjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9DaGFuZ2VMb2cJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDEwMjIgKzAsMCBAQAorLTE5OTctMDktMDYgMDI6MTAgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGludGxoLmluc3QuaW46IFJlZm9ybWF0IGNvcHlyaWdodC4KKy0KKy0xOTk3LTA4LTE5IDE1OjIyICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBkY2dldHRleHQuYyAoRENHRVRURVhUKTogUmVtb3ZlIHdyb25nIGNvbW1lbnQuCistCistMTk5Ny0wOC0xNiAwMDoxMyAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtZGF0YSk6IERvbid0IGNoYW5nZSBkaXJlY3RvcnkgdG8gaW5zdGFsbC4KKy0KKy0xOTk3LTA4LTAxIDE0OjMwICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBjYXQtY29tcGF0LmM6IEZpeCBjb3B5cmlnaHQuCistCistCSogbG9jYWxlYWxpYXMuYzogRG9uJ3QgZGVmaW5lIHN0cmNociB1bmxlc3MgIUhBVkVfU1RSQ0hSLgorLQorLQkqIGxvYWRtc2djYXQuYzogVXBkYXRlIGNvcHlyaWdodC4gIEZpeCB0eXBvcy4KKy0KKy0JKiBsMTBuZmxpc3QuYzogRG9uJ3QgZGVmaW5lIHN0cmNociB1bmxlc3MgIUhBVkVfU1RSQ0hSLgorLQkoX25sX21ha2VfbDEwbmZsaXN0KTogSGFuZGxlIHNwb25zb3IgYW5kIHJldmlzaW9uIGNvcnJlY3RseS4KKy0KKy0JKiBnZXR0ZXh0LmM6IFVwZGF0ZSBjb3B5cmlnaHQuCistCSogZ2V0dGV4dC5oOiBMaWtld2lzZS4KKy0JKiBoYXNoLXN0cmluZy5oOiBMaWtld2lzZS4KKy0KKy0JKiBmaW5kZG9tYWluLmM6IFJlbW9hdmUgZGVhZCBjb2RlLiAgRGVmaW5lIHN0cmNociBvbmx5IGlmCistCSFIQVZFX1NUUkNIUi4KKy0KKy0JKiBleHBsb2RlbmFtZS5jOiBJbmNsdWRlIDxzeXMvdHlwZXMuaD4uCistCistCSogZXhwbG9kZW5hbWUuYzogUmVmb3JtYXQgY29weXJpZ2h0IHRleHQuCistCShfbmxfZXhwbG9kZV9uYW1lKTogRml4IHR5cG8uCistCistCSogZGNnZXR0ZXh0LmM6IERlZmluZSBhbmQgdXNlIF9fc2V0X2Vycm5vLgorLQkoZ3Vlc3NfY2F0ZWdvcnlfdmFsdWUpOiBEb24ndCB1c2Ugc2V0bG9jYWxlIGlmIEhBVkVfTENfTUVTU0FHRVMgaXMKKy0Jbm90IGRlZmluZWQuCistCistCSogYmluZHRleHRkb20uYzogUHJldHR5IHByaW50aW5nLgorLQorLTE5OTctMDUtMDEgMDI6MjUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGRjZ2V0dGV4dC5jIChndWVzc19jYXRlZ29yeV92YWx1ZSk6IERvbid0IGRlcGVuZCBvbgorLQlIQVZFX0xDX01FU1NBR0VTLiAgV2UgZG9uJ3QgbmVlZCB0aGUgbWFjcm8gaGVyZS4KKy0JUGF0Y2ggYnkgQnJ1bm8gSGFpYmxlIDxoYWlibGVAaWxvZy5mcj4uCistCistCSogY2F0LWNvbXBhdC5jICh0ZXh0ZG9tYWluKTogRG9OJ3QgcmVmZXIgdG8gSEFWRV9TRVRMT0NBTEVfTlVMTAorLQltYWNyby4gIEluc3RlYWQgdXNlIEhBVkVfTE9DQUxFX05VTEwgYW5kIGRlZmluZSBpdCB3aGVuIHVzaW5nCistCWdsaWJjLCBhcyBpbiBkY2dldHRleHQuYy4KKy0JUGF0Y2ggYnkgQnJ1bm8gSGFpYmxlIDxoYWlibGVAaWxvZy5mcj4uCistCistCSogTWFrZWZpbGUuaW4gKENQUEZMQUdTKTogTmV3IHZhcmlhYmxlLiAgUmVwb3J0ZWQgYnkgRnJhbmMsb2lzCistCVBpbmFyZC4KKy0KKy1Nb24gTWFyIDEwIDA2OjUxOjE3IDE5OTcgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIE1ha2VmaWxlLmluOiBJbXBsZW1lbnQgaGFuZGxpbmcgb2YgbGlidG9vbC4KKy0KKy0JKiBnZXR0ZXh0UC5oOiBDaGFuZ2UgZGF0YSBzdHJ1Y3R1cmVzIGZvciB1c2Ugb2YgZ2VuZXJpYyBsb3dsZXZlbAorLQlpMThuIGZpbGUgaGFuZGxpbmcuCistCistV2VkIERlYyAgNCAyMDoyMToxOCAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiB0ZXh0ZG9tYWluLmM6IFB1dCBwYXJlbnRoZXNlcyBhcm91bmQgYXJndW1lbnRzIG9mIG1lbWNweSBtYWNybworLQlkZWZpbml0aW9uLgorLQkqIGxvY2FsZWFsaWFzLmM6IExpa2V3aXNlLgorLQkqIGwxMG5mbGlzdC5jOiBMaWtld2lzZS4KKy0JKiBmaW5kZG9tYWluLmM6IExpa2V3aXNlLgorLQkqIGJpbmR0ZXh0ZG9tLmM6IExpa2V3aXNlLgorLQlSZXBvcnRlZCBieSBUaG9tYXMgRXNrZW4uCistCistTW9uIE5vdiAyNSAyMjo1Nzo1MSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiB0ZXh0ZG9tYWluLmM6IE1vdmUgZGVmaW5pdGlvbiBvZiBgbWVtY3B5YCBtYWNybyB0byByaWdodAorLQlwb3NpdGlvbi4KKy0KKy1GcmkgTm92IDIyIDA0OjAxOjU4IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGZpbmRkb21haW4uYyBbIUhBVkVfU1RSSU5HX0ggJiYgIV9MSUJDXTogRGVmaW5lIG1lbWNweSB1c2luZworLSAJYmNvcHkgaWYgbm90IGFscmVhZHkgZGVmaW5lZC4gIFJlcG9ydGVkIGJ5IFRob21hcyBFc2tlbi4KKy0JKiBiaW5kdGV4dGRvbS5jOiBMaWtld2lzZS4KKy0JKiBsMTBuZmxpc3QuYzogTGlrZXdpc2UuCistCSogbG9jYWxlYWxpYXMuYzogTGlrZXdpc2UuCistCSogdGV4dGRvbWFpbi5jOiBMaWtld2lzZS4KKy0KKy1UdWUgT2N0IDI5IDExOjEwOjI3IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIE1ha2VmaWxlLmluIChsaWJkaXIpOiBDaGFuZ2UgdG8gdXNlIGV4ZWNfcHJlZml4IGluc3RlYWQgb2YKKy0gCXByZWZpeC4gIFJlcG9ydGVkIGJ5IEtudXQtSOV2YXJkQWtzbmVzIDxldG9rbmFAZXRvLmVyaWNzc29uLnNlPi4KKy0KKy1TYXQgQXVnIDMxIDAzOjA3OjA5IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGwxMG5mbGlzdC5jIChfbmxfbm9ybWFsaXplX2NvZGVzZXQpOiBXZSBjb252ZXJ0IHRvIGxvd2VyIGNhc2UsCistCXNvIGRvbid0IHByZXBlbmQgdXBwZXJjYXNlIGBJU08nIGZvciBvbmx5IG51bWVyaWMgYXJnLgorLQorLUZyaSBKdWwgMTkgMDA6MTU6NDYgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogbDEwbmZsaXN0LmM6IE1vdmUgaW5jbHVzaW9uIG9mIGFyZ3ouaCwgY3R5cGUuaCwgc3RkbGliLmggYWZ0ZXIKKy0JZGVmaW5pdGlvbiBvZiBfR05VX1NPVVJDRS4gIFBhdGNoIGJ5IFJvbGFuZCBNY0dyYXRoLgorLQorLQkqIE1ha2VmaWxlLmluICh1bmluc3RhbGwpOiBGaXggYW5vdGhlciBidWcgd2l0aCBgZm9yJyBsb29wIGFuZAorLQllbXB0eSBhcmd1bWVudHMuICBQYXRjaCBieSBKaW0gTWV5ZXJpbmcuICBDb3JyZWN0IG5hbWUgb3MKKy0JdW5pbnN0YWxsZWQgZmlsZXM6IG5vIGludGwtIHByZWZpeCBhbnltb3JlLgorLQorLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsLWRhdGEpOiBBZ2FpbiB3b3JrIGFyb3VuZCBzaGVsbHMgd2hpY2gKKy0JY2Fubm90IGhhbmRsZSBtcHR5IGZvciBsaXN0LiAgUmVwb3J0ZWQgYnkgSmltIE1leWVyaW5nLgorLQorLVNhdCBKdWwgMTMgMTg6MTE6MzUgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBTcGxpdCBnb2FsLiAgTm93IGRlcGVuZCBvbiBpbnN0YWxsLWV4ZWMKKy0gICAgICAgIGFuZCBpbnN0YWxsLWRhdGEuCistCShpbnN0YWxsLWV4ZWMsIGluc3RhbGwtZGF0YSk6IE5ldyBnb2Fscy4gIENyZWF0ZWQgZnJvbSBmb3JtZXIKKy0JaW5zdGFsbCBnb2FsLgorLQlSZXBvcnRlZCBieSBLYXJsIEJlcnJ5LgorLQorLVNhdCBKdW4gMjIgMDQ6NTg6MTQgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogTWFrZWZpbGUuaW4gKE1LSU5TVEFMTERJUlMpOiBOZXcgdmFyaWFibGUuICBQYXRoIHRvCistICAgICAgICBta2luc3RhbGxkaXJzIHNjcmlwdC4KKy0JKGluc3RhbGwpOiB1c2UgTUtJTlNUQUxMRElSUyB2YXJpYWJsZSBvciBpZiB0aGUgc2NyaXB0IGlzIG5vdCBwcmVzZW50CistCXRyeSB0byBmaW5kIGl0IGluIHRoZSAkdG9wX3NjcmRpcikuCistCistV2VkIEp1biAxOSAwMjo1Njo1NiAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBsMTBuZmxpc3QuYzogTGludXggbGliYyAqcGFydGx5KiBpbmNsdWRlcyB0aGUgYXJnel8qIGZ1bmN0aW9ucy4KKy0JR3JyLiAgV29yayBhcm91bmQgYnkgcmVuYW1pbmcgdGhlIHN0YXRpYyB2ZXJzaW9uIGFuZCB1c2UgbWFjcm9zCistCWZvciByZW5hbWluZy4KKy0KKy1UdWUgSnVuIDE4IDIwOjExOjE3IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGwxMG5mbGlzdC5jOiBDb3JyZWN0IHByZXNlbmNlIHRlc3QgbWFjcm9zIG9mIF9fYXJnel8qIGZ1bmN0aW9ucy4KKy0KKy0JKiBsMTBuZmxpc3QuYzogSW5jbHVkZSA8YXJnei5oPiBiYXNlZCBvbiB0ZXN0IG9mIGl0IGluc3RlYWQgd2hlbgorLQlfX2FyZ3pfKiBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZS4KKy0JUmVwb3J0ZWQgYnkgQW5kcmVhcyBTY2h3YWIuCistCistVGh1IEp1biAxMyAxNToxNzo0NCAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBleHBsb2RlbmFtZS5jLCBsMTBuZmxpc3QuYzogRGVmaW5lIE5VTEwgZm9yIGR1bWIgc3lzdGVtcy4KKy0KKy1UdWUgSnVuIDExIDE3OjA1OjEzIDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGludGxoLmluc3QuaW4sIGxpYmdldHRleHQuaCAoZGNnZXR0ZXh0KTogUmVuYW1lIGxvY2FsIHZhcmlhYmxlCistCXJlc3VsdCB0byBfX3Jlc3VsdCB0byBwcmV2ZW50IG5hbWUgY2xhc2guCistCistCSogbDEwbmZsaXN0LmMsIGxvY2FsZWFsaWFzLmMsIGRjZ2V0dGV4dC5jOiBEZWZpbmUgX0dOVV9TT1VSQ0UgdG8KKy0gICAgICAgIGdldCBwcm90b3R5cGUgZm9yIHN0cGNweSBhbmQgc3RyY2FzZWNtcC4KKy0KKy0JKiBpbnRsaC5pbnN0LmluLCBsaWJnZXR0ZXh0Lmg6IE1vdmUgZGVjbGFyYXRpb24gb2YKKy0JYF9ubF9tc2dfY2F0X2NudHInIG91dHNpZGUgX19leHRlbnNpb25fXyBibG9jayB0byBwcmV2ZW50IHdhcm5pbmcKKy0JZnJvbSBnY2MncyAtV25lc3RlZC1leHRlcm4gb3B0aW9uLgorLQorLUZyaSBKdW4gIDcgMDE6NTg6MDAgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBSZW1vdmUgY29tbWVudC4KKy0KKy1UaHUgSnVuICA2IDE3OjI4OjE3IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogV29yayBhcm91bmQgZm9yIGFub3RoZXIgQnVnbGl4IHN0dXBpZGl0eS4KKy0JQWx3YXlzIHVzZSBhbiBgZWxzZScgY2xvc2UgZm9yIGBpZidzLiAgUmVwb3J0ZWQgYnkgTmVsc29uIEJlZWJlLgorLQorLQkqIE1ha2VmaWxlLmluIChpbnRsaC5pbnN0KTogQ29ycmVjdCB0eXBvIGluIHBob255IHJ1bGUuCistCVJlcG9ydGVkIGJ5IE5lbHNvbiBCZWViZS4KKy0KKy1UaHUgSnVuICA2IDAxOjQ5OjUyIDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGRjZ2V0dGV4dC5jIChyZWFkX2FsaWFzX2ZpbGUpOiBSZW5hbWUgdmFyaWFibGUgYWxsb2NhX2xpc3QgdG8KKy0JYmxvY2tfbGlzdCBhcyB0aGUgbWFjcm8gY2FsbHMgYXNzdW1lLgorLQlQYXRjaCBieSBFcmljIEJhY2t1cy4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jIFshSEFWRV9BTExPQ0FdOiBEZWZpbmUgYWxsb2NhIGFzIG1hY3JvIHVzaW5nCistICAgICAgICBtYWxsb2MuCistCShyZWFkX2FsaWFzX2ZpbGUpOiBSZW5hbWUgdmFycmlhYmUgYWxsb2NhX2xpc3QgdG8gYmxvY2tfbGlzdCBhcyB0aGUKKy0JbWFjcm8gY2FsbHMgYXNzdW1lLgorLQlQYXRjaCBieSBFcmljIEJhY2t1cy4KKy0KKy0JKiBsMTBuZmxpc3QuYzogQ29ycmVjdCBjb25kaXRpb25hbCBmb3IgPGFyZ3ouaD4gaW5jbHVzaW9uLgorLQlSZXBvcnRlZCBieSBSb2xhbmQgTWNHcmF0aC4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoYWxsKTogRGVwZW5kIG9uIGFsbC1AVVNFX0lOQ0xVREVEX0xJQklOVExALCBub3QKKy0gICAgICAgIGFsbC1AVVNFX05MU0AuCistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBpbnRsaC5pbnN0IGNvbWVzIGZyb20gbG9jYWwgZGlyLCBub3QKKy0gICAgICAgICQoc3JjZGlyKS4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoaW50bGguaW5zdCk6IFNwZWNpYWwgaGFuZGxpbmcgb2YgdGhpcyBnb2FsLiAgSWYKKy0JdXNlZCBpbiBnZXR0ZXh0LCB0aGlzIGlzIHJlYWxseSBhIHJ1bCB0byBjb25zdHJ1Y3QgdGhpcyBmaWxlLiAgSWYKKy0JdXNlZCBpbiBhbnkgb3RoZXIgcGFja2FnZSBpdCBpcyBkZWZpbmVkIGFzIGEgLlBIT05ZIHJ1bGUgd2l0aAorLQllbXB0eSBib2R5LgorLQorLQkqIGZpbmRkb21haW4uYzogRXh0cmFjdCBsb2NhbGUgZmlsZSBpbmZvcm1hdGlvbiBoYW5kbGluZyBpbnRvCistCWwxMG5maWxlLmMuICBSZW5hbWUgbG9jYWwgc3RwY3B5X18gZnVuY3Rpb24gdG8gc3RwY3B5LgorLQorLQkqIGRjZ2V0dGV4dC5jIChzdHBjcHkpOiBBZGQgbG9jYWwgZGVmaW5pdGlvbi4KKy0KKy0JKiBsMTBuZmxpc3QuYzogU29sdmUgc29tZSBwb3J0YWJpbGl0eSBwcm9ibGVtcy4gIFBhdGNoZXMgcGFydGx5IGJ5CistCVRob21hcyBFc2tlbi4gIEFkZCBsb2NhbCBkZWZpbml0aW9uIG9mIHN0cGNweS4KKy0KKy1UdWUgSnVuICA0IDAyOjQ3OjQ5IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGludGxoLmluc3QuaW46IERvbid0IGRlcGVuZCBpbmNsdWRpbmcgPGxvY2FsZS5oPiBvbgorLQlIQVZFX0xPQ0FMRV9ILiAgSW5zdGVhZCBjb25maWd1cmUgbXVzdCByZXdyaXRlIHRoaXMgZmlpbGUKKy0JZGVwZW5kaW5nIG9uIHRoZSByZXN1bHQgb2YgdGhlIGNvbmZpZ3VyZSBydW4uCistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBsaWJpbnRsLmluc3QgaXMgbm93IGNhbGxlZCBpbnRsaC5pbnN0LgorLQlBZGQgcnVsZXMgZm9yIHVwZGF0aW5nIGludGxoLmluc3QgZnJvbSBpbnRsaC5pbnN0LmluLgorLQorLQkqIGxpYmludGwuaW5zdDogUmVuYW1lZCB0byBpbnRsaC5pbnN0LmluLgorLQorLQkqIGxvY2FsZWFsaWFzLmMsIGRjZ2V0dGV4dC5jIFtfX0dOVUNfX106IERlZmluZSBIQVZFX0FMTE9DQSB0byAxCistICAgICAgICBiZWNhdXNlIGdjYyBoYXMgX19idWl0bGluX2FsbG9jYS4KKy0JUmVwb3J0ZWQgYnkgUm9sYW5kIE1jR3JhdGguCistCistTW9uIEp1biAgMyAwMDozMjoxNiAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbGNoZWNrKTogTmV3IGdvYWwgdG8gZnVsZmlsbCBuZWVkcyBvZgorLSAgICAgICAgYXV0b21ha2UncyBkaXN0Y2hlY2suCistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBSZW9yZGVyIGNvbW1hbmRzIHNvIHRoYXQgVkVSU0lPTiBpcworLSAgICAgICAgZm91bmQuCistCistCSogTWFrZWZpbGUuaW4gKGdldHRleHRzcmNkaXIpOiBOb3cgdXNlIHN1YmRpcmVjdG9yeSBpbnRsLyBpbgorLSAgICAgICAgQGRhdGFkaXJAL2dldHRleHQuCistCShDT01TUkNTKTogQWRkIGwxMG5maWxlLmMuCistCShPQkpFQ1RTKTogQWRkIGwxMG5maWxlLm8uCistCShESVNURklMRVMpOiBSZW5hbWUgdG8gRElTVEZJTEUubm9ybWFsLiAgUmVtb3ZlICQoRElTVEZJTEVTLmNvbW1vbikuCistCShESVNURklMRS5nZXR0ZXh0KTogUmVtb3ZlICQoRElTVEZJTEVTLmNvbW1vbikuCistCShhbGwtZ2V0dGV4dCk6IFJlbW92ZSBnb2FsLgorLQkoaW5zdGFsbCk6IElmICQoUEFDS0FHRSkgPSBnZXR0ZXh0IGluc3RhbGwsIG90aGVyd29zZSBkbyBub3RoaW5nLiAgTm8KKy0JcGFja2FnZSBidXQgZ2V0dGV4dCBpdHNlbGYgc2hvdWxkIGluc3RhbGwgbGliaW50bC5oICsgaGVhZGVycy4KKy0JKGRpc3QpOiBFeHRlbmQgZ29hbCB0byB3b3JrIGZvciBnZXR0ZXh0LCB0b28uCistCShkaXN0LWdldHRleHQpOiBSZW1vdmUgZ29hbC4KKy0KKy0JKiBkY2dldHRleHQuYyBbIUhBVkVfQUxMT0NBXTogRGVmaW5lIG1hY3JvIGFsbG9jYSBieSB1c2luZyBtYWxsb2MuCistCistU3VuIEp1biAgMiAxNzozMzowNiAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBsb2FkbXNnY2F0LmMgKF9ubF9sb2FkX2RvbWFpbik6IFBhcmFtZXRlciBpcyBub3cgY29tZXMgZnJvbQorLSAgICAgICAgZmluZF9sMTBuZmlsZS4KKy0KKy1TYXQgSnVuICAxIDAyOjIzOjAzIDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGwxMG5mbGlzdC5jIChfX2FyZ3pfbmV4dCk6IEFkZCBkZWZpbml0aW9uLgorLQorLQkqIGRjZ2V0dGV4dC5jIFshSEFWRV9BTExPQ0FdOiBBZGQgY29kZSBmb3IgaGFuZGxpbmcgbWlzc2luZyBhbGxvY2EKKy0JY29kZS4gIFVzZSBuZXcgbDEwbmZpbGUgaGFuZGxpbmcuCistCistCSogbG9jYWxlYWxpYXMuYyBbIUhBVkVfQUxMT0NBXTogQWRkIGNvZGUgZm9yIGhhbmRsaW5nIG1pc3NpbmcKKy0gICAgICAgIGFsbG9jYSBjb2RlLgorLQorLQkqIGwxMG5mbGlzdC5jOiBJbml0aWFsIHJldmlzaW9uLgorLQorLVR1ZSBBcHIgIDIgMTg6NTE6MTggMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoYWxsLWdldHRleHQpOiBOZXcgZ29hbC4gIFNhbWUgYXMgYWxsLXllcy4KKy0KKy1UaHUgTWFyIDI4IDIzOjAxOjIyIDE5OTYgIEthcmwgRWljaHdhbGRlciAgPGtlQGtlLmNlbnRyYWwuZGU+CistCistCSogTWFrZWZpbGUuaW4gKGdldHRleHRzcmNkaXIpOiBEZWZpbmUgdXNpbmcgQGRhdGFkaXJALgorLQorLVR1ZSBNYXIgMjYgMTI6Mzk6MTQgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBmaW5kZG9tYWluLmM6IEluY2x1ZGUgPGN0eXBlLmg+LiAgUmVwb3J0ZWQgYnkgUm9sYW5kIE1jR3JhdGguCistCistU2F0IE1hciAyMyAwMjowMDozNSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGZpbmRkb21haW4uYyAoc3RwY3B5KTogUmVuYW1lIHRvIHN0cGNweV9fIHRvIHByZXZlbnQgY2xhc2hpbmcKKy0gICAgICAgIHdpdGggZXh0ZXJuYWwgZGVjbGFyYXRpb24uCistCistU2F0IE1hciAgMiAwMDo0NzowOSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChhbGwtbm8pOiBSZW5hbWUgZnJvbSBhbGxfbm8uCistCistU2F0IEZlYiAxNyAwMDoyNTo1OSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGdldHRleHRQLmggW2xvYWRlZF9kb21haW5dOiBBcnJheSBgc3VjY2Vzc29yJyBtdXN0IG5vdyBjb250YWluIHVwCistICAgICAgICB0byA2MyBlbGVtZW50cyAoYmVjYXVzZSBvZiBjb2Rlc2V0IG5hbWUgbm9ybWFsaXphdGlvbikuCistCistCSogZmluZGRvbWFpbi5jOiBJbXBsZW1lbnQgY29kZXNldCBuYW1lIG5vcm1hbGl6YXRpb24uCistCistVGh1IEZlYiAxNSAwNDozOTowOSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChhbGwpOiBEZWZpbmUgdG8gYGFsbC1AVVNFX05MU0AnLgorLQkoYWxsLXllcywgYWxsX25vKTogTmV3IGdvYWxzLiAgYGFsbC1ubycgaXMgbm9vcCwgYGFsbC15ZXMnCistCWlzIGZvcm1lciBhbGwuCistCistTW9uIEphbiAxNSAyMTo0NjowMSAxOTk2ICBIb3dhcmQgR2F5bGUgIDxob3dhcmRAaGFsLmNvbT4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jIChhbGlhc19jb21wYXJlKTogSW5jcmVtZW50IHN0cmluZyBwb2ludGVycyBpbiBsb29wCistICAgICAgICBvZiBzdHJjYXNlY21wIHJlcGxhY2VtZW50LgorLQorLUZyaSBEZWMgMjkgMjE6MTY6MzQgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1zcmMpOiBXaG8gY29tbWVudGVkIHRoaXMgZ29hbCBvdXQgPyA6LSkKKy0KKy1GcmkgRGVjIDI5IDE1OjA4OjE2IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZGNnZXR0ZXh0LmMgKERDR0VUVEVYVCk6IFNhdmUgYGVycm5vJy4gIEZhaWxpbmcgc3lzdGVtIGNhbGxzCistCXNob3VsZCBub3QgZWZmZWN0IGl0IGJlY2F1c2UgYSBtaXNzaW5nIGNhdGFsb2cgaXMgbm8gZXJyb3IuCistCVJlcG9ydGVkIGJ5IEhhcmFsZCBLPG86Pm5pZyA8a29lbmlnQHRhdC5waHlzaWsudW5pLXR1ZWJpbmdlbi5kZT4uCistCistVHVlIERlYyAxOSAyMjowOToxMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChNYWtlZmlsZSk6IEV4cGxpY2l0bHkgdXNlICQoU0hFTEwpIGZvciBydW5uaW5nCistICAgICAgICBzaGVsbCBzY3JpcHRzLgorLQorLUZyaSBEZWMgMTUgMTc6MzQ6NTkgMTk5NSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAaXNzYW4uaW5mb3JtYXRpay51bmktZG9ydG11bmQuZGU+CistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtc3JjKTogT25seSBpbnN0YWxsIGxpYnJhcnkgYW5kIGhlYWRlciB3aGVuCistCXdlIHVzZSB0aGUgb3duIGltcGxlbWVudGF0aW9uLiAgRG9uJ3QgZG8gaXQgd2hlbiB1c2luZyB0aGUKKy0Jc3lzdGVtJ3MgZ2V0dGV4dCBvciBjYXRnZXRzIGZ1bmN0aW9ucy4KKy0KKy0JKiBkY2dldHRleHQuYyAoZmluZF9tc2cpOiBNdXN0IG5vdCBzd2FwIGRvbWFpbi0+aGFzaF9zaXplIGhlcmUuCistCistU2F0IERlYyAgOSAxNjoyNDozNyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGxvY2FsZWFsaWFzLmMsIGxpYmludGwuaW5zdCwgbGliZ2V0dGV4dC5oLCBoYXNoLXN0cmluZy5oLAorLQlnZXR0ZXh0UC5oLCBmaW5kZG9tYWluLmMsIGRjZ2V0dGV4dC5jLCBjYXQtY29tcGF0LmM6CistCVVzZSBQQVJBTVMgaW5zdGVhZCBvZiBfX1AuICBTdWdnZXN0ZWQgYnkgUm9sYW5kIE1jR3JhdGguCistCistVHVlIERlYyAgNSAxMTozOToxNCAxOTk1ICBMYXJyeSBTY2h3aW1tZXIgIDxyb3NlYnVkQGN5Y2xvbmUuc3RhbmZvcmQuZWR1PgorLQorLQkqIGxpYmdldHRleHQuaDogVXNlIGAjaWYgIWRlZmluZWQgKF9MSUJJTlRMX0gpJyBpbnN0ZWFkIG9mIGAjaWYKKy0JIV9MSUJJTlRMX0gnIGJlY2F1c2UgU29sYXJpcyBkZWZpbmVzIF9MSUJJTlRMX0ggYXMgZW1wdHkuCistCistTW9uIERlYyAgNCAxNTo0MjowNyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsLXNyYyk6CistCUluc3RhbGwgbGliaW50bC5pbnN0IGluc3RlYWQgb2YgbGliaW50bC5oLmluc3RhbGwuCistCistU2F0IERlYyAgMiAyMjo1MTozOCAxOTk1ICBNYXJjdXMgRGFuaWVscyAgPG1hcmN1c0BzeXNjLnBkeC5lZHU+CistCistCSogY2F0LWNvbXBhdC5jICh0ZXh0ZG9tYWluKToKKy0JUmV2ZXJzZSBvcmRlciBpbiB3aGljaCBmaWxlcyBhcmUgdHJpZWQgeW91IGxvYWQuICBGaXJzdAorLQl0cnkgbG9jYWwgZmlsZSwgd2hlbiB0aGlzIGZhaWxlZCBhYnNvbHV0ZSBwYXRoLgorLQorLVdlZCBOb3YgMjkgMDI6MDM6NTMgMTk5NSAgTmVsc29uIEguIEYuIEJlZWJlICA8YmVlYmVAbWF0aC51dGFoLmVkdT4KKy0KKy0JKiBjYXQtY29tcGF0LmMgKGJpbmR0ZXh0ZG9tYWluKTogQWRkIG1pc3NpbmcgeyB9LgorLQorLVN1biBOb3YgMjYgMTg6MjE6NDEgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBsaWJpbnRsLmluc3Q6IEFkZCBtaXNzaW5nIF9fUCBkZWZpbml0aW9uLiAgUmVwb3J0ZWQgYnkgTmVsc29uIEJlZWJlLgorLQorLQkqIE1ha2VmaWxlLmluOgorLQlBZGQgZHVtbXkgYGFsbCcgYW5kIGBkdmknIGdvYWxzLiAgUmVwb3J0ZWQgYnkgVG9tIFRyb21leS4KKy0KKy1TYXQgTm92IDI1IDE2OjEyOjAxIDE5OTUgIEZyYW5jLG9pcyBQaW5hcmQgIDxwaW5hcmRAaXJvLnVtb250cmVhbC5jYT4KKy0KKy0JKiBoYXNoLXN0cmluZy5oOiBDYXBpdGFsaXplIGFyZ3VtZW50cyBvZiBtYWNyb3MuCistCistU2F0IE5vdiAyNSAxMjowMTozNiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChESVNURklMRVMpOiBQcmV2ZW50IGZpbGVzIG5hbWVzIGxvbmdlciB0aGFuIDEzCistCWNoYXJhY3RlcnMuICBsaWJpbnRsLmguZ2xpYmMtPmxpYmludGwuZ2xpYmMsCistCWxpYmludGwuaC5pbnN0YWxsLT5saWJpbnRsLmluc3QuICBSZXBvcnRlZCBieSBKb3NodWEgUi4gUG91bHNvbi4KKy0KKy1TYXQgTm92IDI1IDExOjMxOjEyIDE5OTUgIEVyaWMgQmFja3VzICA8ZXJpY2JAbHNpZC5ocC5jb20+CistCistCSogZGNnZXR0ZXh0LmM6IEZpeCBidWcgaW4gcHJlcHJvY2Vzc29yIGNvbmRpdGlvbmFscy4KKy0KKy1TYXQgTm92IDI1IDAyOjM1OjI3IDE5OTUgIE5lbHNvbiBILiBGLiBCZWViZSAgPGJlZWJlQG1hdGgudXRhaC5lZHU+CistCistCSogbGliZ2V0dGV4dC5oOiBTb2xhcmlzIGNjIGRvZXMgbm90IHVuZGVyc3RhbmQKKy0JICNpZiAhU1lNQk9MMSAmJiAhU1lNQk9MMi4gIFNhZAlidXQgdHJ1ZS4KKy0KKy1UaHUgTm92IDIzIDE2OjIyOjE0IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogaGFzaC1zdHJpbmcuaCAoaGFzaF9zdHJpbmcpOgorLQlGaXggZm9yIG1hY2hpbmUgd2l0aCA+MzIgYml0IGB1bnNpZ25lZCBsb25nJ3MuCistCistCSogZGNnZXR0ZXh0LmMgKERDR0VUVEVYVCk6CistCUZpeCBob3JyaWJsZSBidWcgaW4gbG9vcCBmb3IgYWx0ZXJuYXRpdmUgdHJhbnNsYXRpb24uCistCistVGh1IE5vdiAyMyAwMTo0NToyOSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIHBvMnRibC5zZWQuaW4sIGxpbnV4LW1zZy5zZWQsIHhvcGVuLW1zZy5zZWQ6CistCVNvbWUgZnVydGhlciBzaW1wbGlmaWNhdGlvbnMgaW4gbWVzc2FnZSBudW1iZXIgZ2VuZXJhdGlvbi4KKy0KKy1Nb24gTm92IDIwIDIxOjA4OjQzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogbGliaW50bC5oLmdsaWJjOiBVc2UgX19jb25zdCBpbnN0ZWFkIG9mIGNvbnN0IGluIHByb3RvdHlwZXMuCistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtc3JjKToKKy0JSW5zdGFsbCBsaWJpbnRsLmguaW5zdGFsbCBpbnN0ZWFkIG9mIGxpYmludGwuaC4gIFRoaXMKKy0JaXMgYSBzdHJpcHBlZC1kb3duIHZlcnNpb24uICBTdWdnZXN0ZWQgYnkgUGV0ZXIgTWlsbGVyLgorLQorLQkqIGxpYmludGwuaC5pbnN0YWxsLCBsaWJpbnRsLmguZ2xpYmM6IEluaXRpYWwgcmV2aXNpb24uCistCistCSogbG9jYWxlYWxpYXMuYyAoX25sX2V4cGFuZF9hbGlhcywgcmVhZF9hbGlhc19maWxlKToKKy0JUHJvdGVjdCBwcm90b3R5cGVzIGluIHR5cGUgY2FzdHMgYnkgX19QLgorLQorLVR1ZSBOb3YgMTQgMTY6NDM6NTggMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBoYXNoLXN0cmluZy5oOiBDb3JyZWN0IHByb3RvdHlwZSBmb3IgaGFzaF9zdHJpbmcuCistCistU3VuIE5vdiAxMiAxMjo0MjozMCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGhhc2gtc3RyaW5nLmggKGhhc2hfc3RyaW5nKTogQWRkIHByb3RvdHlwZS4KKy0KKy0JKiBnZXR0ZXh0UC5oOiBGaXggY29weXJpZ2h0LgorLQkoU1dBUCk6IEFkZCBwcm90b3R5cGUuCistCistV2VkIE5vdiAgOCAyMjo1NjozMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGxvY2FsZWFsaWFzLmMgKHJlYWRfYWxpYXNfZmlsZSk6IEZvcmdvdCBzaXplb2YuCistCUF2b2lkIGNhbGxpbmcgKnByaW50ZiBmdW5jdGlvbi4gIFRoaXMgaW50cm9kdWNlcyBhIGJpZyBvdmVyaGVhZC4KKy0JUGF0Y2ggYnkgUm9sYW5kIE1jR3JhdGguCistCistVHVlIE5vdiAgNyAxNDoyMTowOCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGZpbmRkb21haW4uYywgY2F0LWNvbXBhdC5jOiBXcm9uZyBpbmRlbnRhdGlvbiBpbiAjaWYgZm9yIHN0cGNweS4KKy0KKy0JKiBmaW5kZG9tYWluLmMgKHN0cGNweSk6CistCURlZmluZSBzdWJzdGl0dXRpb24gZnVuY3Rpb24gbG9jYWwuICBUaGUgbWFjcm8gd2FzIHRvIGZsYWt5LgorLQorLQkqIGNhdC1jb21wYXQuYzogRml4IHR5cG8uCistCistCSogeG9wZW4tbXNnLnNlZCwgbGludXgtbXNnLnNlZDoKKy0JV2hpbGUgYnJpbmdpbmcgbWVzc2FnZSBudW1iZXIgdG8gcmlnaHQgcGxhY2Ugb25seSBhY2NlcHQgZGlnaXRzLgorLQorLQkqIGxpbnV4LW1zZy5zZWQsIHhvcGVuLW1zZy5zZWQ6IE5vdyB0aGF0IHRoZSBjb3VudGVyIGRvZXMgbm90IGhhdmUKKy0JbGVhZGluZyAwcyB3ZSBkb24ndCBuZWVkIHRvIHJlbW92ZSB0aGVtLiAgUmVwb3J0ZWQgYnkgTWFyY3VzCistCURhbmllbHMuCistCistCSogTWFrZWZpbGUuaW4gKC4uL3BvL2NhdC1pZC10Ymwubyk6IFVzZSAkKHRvcF9zcmRpcikgaW4KKy0JZGVwZW5kZW5jeS4gIFJlcG9ydGVkIGJ5IE1hcmN1cyBEYW5pZWxzLgorLQorLQkqIGNhdC1jb21wYXQuYzogKHN0cGNweSkgWyFfTElCQyAmJiAhSEFWRV9TVFBDUFldOiBEZWZpbmUgcmVwbGFjZW1lbnQuCistCUdlbmVyYWxseSBjbGVhbnVwIHVzaW5nICNpZiBpbnN0ZWFkIG9mICNpZm5kZWYuCistCistCSogTWFrZWZpbGUuaW46IENvcnJlY3QgdHlwb3MgaW4gY29tbWVudC4gIEJ5IEZyYW5jLG9pcyBQaW5hcmQuCistCistTW9uIE5vdiAgNiAwMDoyNzowMiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsLXNyYyk6IERvbid0IGluc3RhbGwgbGliaW50bC5oIGFuZCBsaWJpbnRsLmEKKy0JaWYgd2UgdXNlIGFuIGF2YWlsYWJsZSBnZXR0ZXh0IGltcGxlbWVudGF0aW9uLgorLQorLVN1biBOb3YgIDUgMjI6MDI6MDggMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBsaWJnZXR0ZXh0Lmg6IEZpeCB0eXBvOiBIQVZFX0NBVEdFVFRTIC0+IEhBVkVfQ0FUR0VUUy4gIFJlcG9ydGVkCistCWJ5IEZyYW5jLG9pcyBQaW5hcmQuCistCistCSogbGliZ2V0dGV4dC5oOiBVc2UgI2lmIGluc3RlYWQgb2YgI2lmZGVmLyNpZm5kZWYuCistCistCSogZmluZGRvbWFpbi5jOgorLQlDb21tZW50cyBkZXNjcmliaW5nIHdoYXQgaGFzIHRvIGJlIGRvbmUgc2hvdWxkIHN0YXJ0IHdpdGggRklYTUUuCistCistU3VuIE5vdiAgNSAxOTozODowMSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChESVNURklMRVMpOiBTcGxpdC4gIFVzZSBESVNURklMRVMgd2l0aCBub3JtYWwgbWVhbmluZy4KKy0JRElTVEZJTEVTLmNvbW1vbiBuYW1lcyB0aGUgZmlsZXMgY29tbW9uIHRvIGJvdGggZGlzdCBnb2Fscy4KKy0JRElTVEZJTEVTLmdldHRleHQgYXJlIHRoZSBmaWxlcyBvbmx5IGRpc3RyaWJ1dGVkIGluIEdOVSBnZXR0ZXh0LgorLQorLVN1biBOb3YgIDUgMTc6MzI6NTQgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBkY2dldHRleHQuYyAoRENHRVRURVhUKTogQ29ycmVjdCBzZWFyY2hpbmcgaW4gZGVyaXZlZCBsb2NhbGVzLgorLQlUaGlzIHdhcyBuZWNlc3Nhcnkgc2luY2UgYSBjaGFuZ2UgaW4gX25sX2ZpbmRfbXNnIHNldmVyYWwgd2Vla3MKKy0JYWdvLiAgSSByZWFsbHkgZG9uJ3Qga25vdyB0aGlzIGlzIHN0aWxsIG5vdCBmaXhlZC4KKy0KKy1TdW4gTm92ICA1IDEyOjQzOjEyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogbG9hZG1zZ2NhdC5jIChfbmxfbG9hZF9kb21haW4pOiBUZXN0IGZvciBGSUxFTkFNRSA9PSBOVUxMLiAgVGhpcworLQltaWdodCBtYXJrIGEgc3BlY2lhbCBjb25kaXRpb24uCistCistCSogZmluZGRvbWFpbi5jIChtYWtlX2VudHJ5X3JlYyk6IERvbid0IG1ha2UgaWxsZWdhbCBlbnRyeSBhcyBkZWNpZGVkLgorLQorLQkqIE1ha2VmaWxlLmluIChkaXN0KTogU3VwcHJlc3MgZXJyb3IgbWVzc2FnZSB3aGVuIGxuIGZhaWxlZC4KKy0JR2V0IGZpbGVzIGZyb20gJChzcmNkaXIpIGV4cGxpY2l0bHkuCistCistCSogbGliZ2V0dGV4dC5oIChnZXR0ZXh0X2NvbnN0KTogUmVuYW1lIHRvIGdldHRleHRfbm9vcC4KKy0KKy1GcmkgTm92ICAzIDA3OjM2OjUwIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZmluZGRvbWFpbi5jIChtYWtlX2VudHJ5X3JlYyk6CistCVByb3RlY3QgYWdhaW5zdCB3cm9uZyBsb2NhbGUgbmFtZXMgYnkgdGVzdGluZyBtYXNrLgorLQorLQkqIGxpYmdldHRleHQuaCAoZ2V0dGV4dF9jb25zdCk6IEFkZCBtYWNybyBkZWZpbml0aW9uLgorLQlDYXBpdGFsaXplIG1hY3JvIGFyZ3VtZW50cy4KKy0KKy1UaHUgTm92ICAyIDIzOjE1OjUxIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZmluZGRvbWFpbi5jIChfbmxfZmluZF9kb21haW4pOgorLQlUZXN0IGZvciBwb2ludGVyICE9IE5VTEwgYmVmb3JlIGFjY2Vzc2luZyB2YWx1ZS4KKy0JUmVwb3J0ZWQgYnkgVG9tIFRyb21leS4KKy0KKy0JKiBnZXR0ZXh0LmMgKE5VTEwpOgorLQlEZWZpbmUgYXMgKHZvaWQqKTAgaW5zdGFkIG9mIDAuICBSZXBvcnRlZCBieSBGcmFuYyxvaXMgUGluYXJkLgorLQorLU1vbiBPY3QgMzAgMjE6Mjg6NTIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBwbzJ0Ymwuc2VkLmluOiBTZXJpb3VzIHR5cG8gYnVnIGZpeGVkIGJ5IEppbSBNZXllcmluZy4KKy0KKy1TYXQgT2N0IDI4IDIzOjIwOjQ3IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogbGliZ2V0dGV4dC5oOiBEaXNhYmxlIGRjZ2V0dGV4dCBvcHRpbWl6YXRpb24gZm9yIFNvbGFyaXMgMi4zLgorLQorLQkqIGxvY2FsZWFsaWFzLmMgKGFsaWFzX2NvbXBhcmUpOgorLQlQZXRlciBNaWxsZXIgcmVwb3J0ZWQgdGhhdCB0b2xvd2VyIGluIHNvbWUgc3lzdGVtcyBpcworLQlldmVuIGR1bWJlciB0aGFuIEkgdGhvdWdodC4gIFByb3RlY3QgY2FsbCBieSBgaXN1cHBlcicuCistCistRnJpIE9jdCAyNyAyMjoyMjo1MSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChsaWJkaXIsIGluY2x1ZGVkaXIpOiBOZXcgdmFyaWFibGVzLgorLQkoaW5zdGFsbC1zcmMpOiBJbnN0YWxsIGxpYmludGwuYSBhbmQgbGliaW50bC5oIGluIGNvcnJlY3QgZGlycy4KKy0KKy1GcmkgT2N0IDI3IDIyOjA3OjI5IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKFNPVVJDRVMpOiBGaXggdHlwbzogaW50cmwuY29tcGF0LmMgLT4gaW50bC1jb21wYXQuYy4KKy0KKy0JKiBwbzJ0Ymwuc2VkLmluOiBQYXRjaCBmb3IgYnVnZ3kgU0VEcyBieSBDaHJpc3RpYW4gdm9uIFJvcXVlcy4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jOgorLQlGaXggdHlwbyBhbmQgc3VwZXJmbG91cyB0ZXN0LiAgUmVwb3J0ZWQgYnkgQ2hyaXN0aWFuIHZvbiBSb3F1ZXMuCistCistRnJpIE9jdCAgNiAxMTo1MjowNSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGZpbmRkb21haW4uYyAoX25sX2ZpbmRfZG9tYWluKToKKy0JQ29ycmVjdCBzb21lIHJlbWFpbmRlciBmcm9tIHRoZSBwcmUtQ0VOIHN5bnRheC4gIE5vdworLQl3ZSBkb24ndCBoYXZlIGEgY29uc3RhbnQgbnVtYmVyIG9mIHN1Y2Nlc3NvcnMgYW55bW9yZS4KKy0KKy1XZWQgU2VwIDI3IDIxOjQxOjEzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKERJU1RGSUxFUyk6IEFkZCBsaWJpbnRsLmguZ2xpYmMuCistCistCSogTWFrZWZpbGUuaW4gKGRpc3QtbGliYyk6IEFkZCBnb2FsIGZvciBwYWNraW5nIHNvdXJjZXMgZm9yIGdsaWJjLgorLQkoQ09NU1JDUywgQ09NSERSUyk6IFNwbGl0dGVkIHRvIHNlcGFyYXRlIHNvdXJjZXMgc2hhcmVkIHdpdGggZ2xpYmMuCistCistCSogbG9hZG1zZ2NhdC5jOiBGb3JnZXQgdG8gY29udGludWUgI2lmIGxpbmUuCistCistCSogbG9jYWxlYWxpYXMuYzoKKy0JW19MSUJDXTogUmVuYW1lIHN0cmNhc2VjbXAgdG8gX19zdHJjYXNlY21wIHRvIGtlZXAgQU5TSSBDIG5hbWUKKy0Jc3BhY2UgY2xlYW4uCistCistCSogZGNnZXR0ZXh0LmMsIGZpbmRkb21haW4uYzogQmV0dGVyIGNvbW1lbnQgdG8gbGFzdCBjaGFuZ2UuCistCistCSogbG9hZG1zZ2NhdC5jOgorLQlbX0xJQkNdOiBSZW5hbWUgZnN0YXQsIG9wZW4sIGNsb3NlLCByZWFkLCBtbWFwLCBhbmQgbXVubWFwIHRvCistCV9fZnN0YXQsIF9fb3BlbiwgX19jbG9zZSwgX19yZWFkLCBfX21tYXAsIGFuZCBfX211bm1hcCByZXNwCistCXRvIGtlZXAgQU5TSSBDIG5hbWUgc3BhY2UgY2xlYW4uCistCistCSogZmluZGRvbWFpbi5jOgorLQlbX0xJQkNdOiBSZW5hbWUgc3RwY3B5IHRvIF9fc3RwY3B5IHRvIGtlZXAgQU5TSSBDIG5hbWUgc3BhY2UgY2xlYW4uCistCistCSogZGNnZXR0ZXh0LmM6CistCVtfTElCQ106IFJlbmFtZSBnZXRjZWQgYW5kIHN0cGNweSB0byBfX2dldGN3ZCBhbmQgX19zdHBjcHkgcmVzcCB0bworLQlrZWVwIEFOU0kgQyBuYW1lIHNwYWNlIGNsZWFuLgorLQorLQkqIGxpYmdldHRleHQuaDoKKy0JSW5jbHVkZSBzeXMvdHlwZXMuaCBmb3IgdGhvc2Ugb2xkIFN5c1Ygc3lzdGVtcyBvdXQgdGhlcmUuCistCVJlcG9ydGVkIGJ5IEZyYW5jZXNjbyBQb3RvcnRpYC4KKy0KKy0JKiBsb2FkbXNnY2F0LmMgKHVzZV9tbWFwKTogRGVmaW5lIGlmIGNvbXBpbGVkIGZvciBnbGliYy4KKy0KKy0JKiBiaW5kdGV4dGRvbS5jOiBJbmNsdWRlIGFsbCB0aG9zZSBzdGFuZGFyZCBoZWFkZXJzCistCXVuY29uZGl0aW9uYWxseSBpZiBfTElCQyBpcyBkZWZpbmVkLgorLQorLQkqIGZpbmRkb21haW4uYzogRml4IDIgdGltZXMgZGVmaWVuZCAtPiBkZWZpbmVkLgorLQorLQkqIHRleHRkb21haW4uYzogSW5jbHVkZSBsaWJpbnRsLmggaW5zdGVhZCBvZiBsaWJnZXR0ZXh0Lmggd2hlbgorLQljb21waWxpbmcgZm9yIGdsaWJjLiAgSW5jbHVkZSBhbGwgdGhvc2Ugc3RhbmRhcmQgaGVhZGVycworLQl1bmNvbmRpdGlvbmFsbHkgaWYgX0xJQkMgaXMgZGVmaW5lZC4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jLCBsb2FkbXNnY2F0LmM6IFByZXBhcmUgdG8gYmUgY29tcGlsZWQgaW4gZ2xpYmMuCistCistCSogZ2V0dGV4dC5jOgorLQlJbmNsdWRlIGxpYmludGwuaCBpbnN0ZWFkIG9mIGxpYmdldHRleHQuaCB3aGVuIGNvbXBpbGluZyBmb3IgZ2xpYmMuCistCUdldCBOVUxMIGZyb20gc3RkZGVmLmggaWYgd2UgY29tcGlsZSBmb3IgZ2xpYmMuCistCistCSogZmluZGRvbWFpbi5jOiBJbmNsdWRlIGxpYmludGwuaCBpbnN0ZWFkIG9mIGxpYmdldHRleHQuaCB3aGVuCistCWNvbXBpbGluZyBmb3IgZ2xpYmMuICBJbmNsdWRlIGFsbCB0aG9zZSBzdGFuZGFyZCBoZWFkZXJzCistCXVuY29uZGl0aW9uYWxseSBpZiBfTElCQyBpcyBkZWZpbmVkLgorLQorLQkqIGRjZ2V0dGV4dC5jOiBJbmNsdWRlIGFsbCB0aG9zZSBzdGFuZGFyZCBoZWFkZXJzIHVuY29uZGl0aW9uYWxseQorLQlpZiBfTElCQyBpcyBkZWZpbmVkLgorLQorLQkqIGRnZXR0ZXh0LmM6IElmIGNvbXBpbGVkIGluIGdsaWJjIGluY2x1ZGUgbGliaW50bC5oIGluc3RlYWQgb2YKKy0JbGliZ2V0dGV4dC5oLgorLQkobG9jYWxlLmgpOiBEb24ndCByZWx5IG9uIEhBVkVfTE9DQUxFX0ggd2hlbiBjb21waWxpbmcgZm9yIGdsaWJjLgorLQorLQkqIGRjZ2V0dGV4dC5jOiBJZiBjb21waWxlZCBpbiBnbGliYyBpbmNsdWRlIGxpYmludGwuaCBpbnN0ZWFkIG9mCistCWxpYmdldHRleHQuaC4KKy0JKGdldGN3ZCk6IERvbid0IHJlbHkgb24gSEFWRV9HRVRDV0Qgd2hlbiBjb21waWxpbmcgZm9yIGdsaWJjLgorLQorLQkqIGJpbmR0ZXh0ZG9tLmM6CistCUlmIGNvbXBpbGVkIGluIGdsaWJjIGluY2x1ZGUgbGliaW50bC5oIGluc3RlYWQgb2YgbGliZ2V0dGV4dC5oLgorLQorLU1vbiBTZXAgMjUgMjI6MjM6MDYgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jIChfbmxfZXhwYW5kX2FsaWFzKTogRG9uJ3QgY2FsbCBic2VhcmNoIGlmIE5NQVAgPD0gMC4KKy0JUmVwb3J0ZWQgYnkgTWFyY3VzIERhbmllbHMuCistCistCSogY2F0LWNvbXBhdC5jIChiaW5kdGV4dGRvbWFpbik6CistCVN0cmluZyB1c2VkIGluIHB1dGVudiBtdXN0IG5vdCBiZSByZWN5Y2xlZC4KKy0JUmVwb3J0ZWQgYnkgTWFyY3VzIERhbmllbHMuCistCistCSogbGliZ2V0dGV4dC5oIChfX1VTRV9HTlVfR0VUVEVYVCk6CistCUFkZGl0aW9uYWwgc3ltYm9sIHRvIHNpZ25hbCB0aGF0IHdlIHVzZSBHTlUgZ2V0dGV4dAorLQlsaWJyYXJ5LgorLQorLQkqIGNhdC1jb21wYXQuYyAoYmluZHRleHRkb21haW4pOgorLQlGaXggYnVnIHdpdGggdGhlIHN0cmFuZ2Ugc3RwY3B5IHJlcGxhY2VtZW50LgorLQlSZXBvcnRlZCBieSBOZWxzb24gQmVlYmUuCistCistU2F0IFNlcCAyMyAwODoyMzo1MSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGNhdC1jb21wYXQuYzogSW5jbHVkZSA8c3RyaW5nLmg+IGZvciBzdHBjcHkgcHJvdG90eXBlLgorLQorLQkqIGxvY2FsZWFsaWFzLmMgKHJlYWRfYWxpYXNfZmlsZSk6CistCVdoaWxlIGV4cGFuZCBzdHJkdXAgY29kZSB0ZW1wb3JhcnkgdmFyaWFibGUgYGNwJyBoaWRlZAorLQloaWdoZXIgbGV2ZWwgdmFyaWFibGUgd2l0aCBzYW1lIG5hbWUuICBSZW5hbWUgdG8gYHRwJy4KKy0KKy0JKiB0ZXh0ZG9tYWluLmMgKHRleHRkb21haW4pOgorLQlBdm9pZCB3YXJuaW5nIGJ5IHVzaW5nIHRlbXBvcmFyeSB2YXJpYWJsZSBpbiBzdHJkdXAgY29kZS4KKy0KKy0JKiBmaW5kZG9tYWluLmMgKF9ubF9maW5kX2RvbWFpbik6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGFwcGxpY2F0aW9uJy4KKy0KKy1UaHUgU2VwIDIxIDE1OjUxOjQ0IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogbG9jYWxlYWxpYXMuYyAoYWxpYXNfY29tcGFyZSk6CistCVVzZSBzdHJjYXNlY21wKCkgb25seSBpZiBhdmFpbGFibGUuICBFbHNlIHVzZQorLQlpbXBsZW1lbnRhdGlvbiBpbiBwbGFjZS4KKy0KKy0JKiBpbnRsLWNvbXBhdC5jOgorLQlXcmFwcGVyIGZ1bmN0aW9ucyBub3cgY2FsbCAqX18gZnVuY3Rpb25zIGluc3RlYWQgb2YgX18qLgorLQorLQkqIGxpYmdldHRleHQuaDogRGVjbGFyZSBwcm90b3R5cGVzIGZvciAqX18gZnVuY3Rpb25zIGluc3RlYWQgZm9yIF9fKi4KKy0KKy0JKiBjYXQtY29tcGF0LmMsIGxvYWRtc2djYXQuYzoKKy0JRG9uJ3QgdXNlIHhtYWxsb2MsIHhzdHJkdXAsIGFuZCBzdHBjcHkuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vdCBwYXJ0CistCW9mIHRoZSBzdGFuZGFyZCBsaWJjIGFuZCBzbyBwcmV2ZW50IGxpYmludGwuYSBmcm9tIGJlaW5nIHVzZWQKKy0Jc3RhbmRhbG9uZS4KKy0KKy0JKiBiaW5kdGV4dGRvbS5jOgorLQlEb24ndCB1c2UgeG1hbGxvYywgeHN0cmR1cCwgYW5kIHN0cGNweS4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbm90IHBhcnQKKy0Jb2YgdGhlIHN0YW5kYXJkIGxpYmMgYW5kIHNvIHByZXZlbnQgbGliaW50bC5hIGZyb20gYmVpbmcgdXNlZAorLQlzdGFuZGFsb25lLgorLQlSZW5hbWUgdG8gYmluZHRleHRkb21haW5fXyBpZiBub3QgdXNlZCBpbiBHTlUgQyBMaWJyYXJ5LgorLQorLQkqIGRnZXR0ZXh0LmM6CistCVJlbmFtZSBmdW5jdGlvbiB0byBkZ2V0dGV4dF9fIGlmIG5vdCB1c2VkIGluIEdOVSBDIExpYnJhcnkuCistCistCSogZ2V0dGV4dC5jOgorLQlEb24ndCB1c2UgeG1hbGxvYywgeHN0cmR1cCwgYW5kIHN0cGNweS4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbm90IHBhcnQKKy0Jb2YgdGhlIHN0YW5kYXJkIGxpYmMgYW5kIHNvIHByZXZlbnQgbGliaW50bC5hIGZyb20gYmVpbmcgdXNlZAorLQlzdGFuZGFsb25lLgorLQlGdW5jdGlvbnMgbm93IGNhbGxlZCBnZXR0ZXh0X18gaWYgbm90IHVzZWQgaW4gR05VIEMgTGlicmFyeS4KKy0KKy0JKiBkY2dldHRleHQuYywgbG9jYWxlYWxpYXMuYywgdGV4dGRvbWFpbi5jLCBmaW5kZG9tYWluLmM6CistCURvbid0IHVzZSB4bWFsbG9jLCB4c3RyZHVwLCBhbmQgc3RwY3B5LiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBub3QgcGFydAorLQlvZiB0aGUgc3RhbmRhcmQgbGliYyBhbmQgc28gcHJldmVudCBsaWJpbnRsLmEgZnJvbSBiZWluZyB1c2VkCistCXN0YW5kYWxvbmUuCistCistU3VuIFNlcCAxNyAyMzoxNDo0OSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGZpbmRkb21haW4uYzogQ29ycmVjdCBzb21lIGJ1Z3MgaW4gaGFuZGxpbmcgb2YgQ0VOIHN0YW5kYXJkCistIAlsb2NhbGUgZGVmaW5pdGlvbnMuCistCistVGh1IFNlcCAgNyAwMTo0OToyOCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGZpbmRkb21haW4uYzogSW1wbGVtZW50IENFTiBzeW50YXguCistCistCSogZ2V0dGV4dFAuaCAobG9hZGVkX2RvbWFpbik6IEV4dGVuZCBudW1iZXIgb2Ygc3VjY2Vzc29ycyB0byAzMS4KKy0KKy1TYXQgQXVnIDE5IDE5OjI1OjI5IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKGFsaWFzcGF0aCk6IFJlbW92ZSBwYXRoIHRvIFgxMSBsb2NhbGUgZGlyLgorLQorLQkqIE1ha2VmaWxlLmluOiBNYWtlIGluc3RhbGwtc3JjIGRlcGVuZCBvbiBpbnN0YWxsLiAgVGhpcyBoZWxwcworLSAJZ2V0dGV4dCB0byBpbnN0YWxsIHRoZSBzb3VyY2VzIGFuZCBvdGhlciBwYWNrYWdlcyBjYW4gdXNlIHRoZQorLSAJaW5zdGFsbCBnb2FsLgorLQorLVNhdCBBdWcgMTkgMTU6MTk6MzMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAodW5pbnN0YWxsKTogUmVtb3ZlIHN0dWZmIGluc3RhbGxlZCBieSBpbnN0YWxsLXNyYy4KKy0KKy1UdWUgQXVnIDE1IDEzOjEzOjUzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogVkVSU0lPTi5pbjogSW5pdGlhbCByZXZpc2lvbi4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoRElTVEZJTEVTKToKKy0JQWRkIFZFUlNJT04gZmlsZS4gIFRoaXMgaXMgbm90IG5lY2Vzc2FyeSBmb3IgZ2V0dGV4dCwgYnV0CistCWZvciBvdGhlciBwYWNrYWdlcyB1c2luZyB0aGlzIGxpYnJhcnkuCistCistVHVlIEF1ZyAxNSAwNjoxNjo0NCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGdldHRleHRQLmggKF9ubF9maW5kX2RvbWFpbik6CistCU5ldyBwcm90b3R5cGUgYWZ0ZXIgY2hhbmdpbmcgc2VhcmNoIHN0cmF0ZWd5LgorLQorLQkqIGZpbmRkb21haW4uYyAoX25sX2ZpbmRfZG9tYWluKToKKy0JV2Ugbm93IHRyeSBvbmx5IHRvIGZpbmQgYSBzcGVjaWZpZWQgY2F0YWxvZy4gIEZhbGwgYmFjayB0byBvdGhlcgorLQljYXRhbG9ncyBsaXN0ZWQgaW4gdGhlIGxvY2FsZSBsaXN0IGlzIG5vdyBkb25lIGluIF9fZGNnZXR0ZXh0LgorLQorLQkqIGRjZ2V0dGV4dC5jIChfX2RjZ2V0dGV4dCk6CistCU5vdyB3ZSBwcm92aWRlIG1lc3NhZ2UgZmFsbCBiYWNrIGV2ZW4gdG8gZGlmZmVyZW50IGxhbmd1YWdlcy4KKy0JSS5lLiBpZiBhIG1lc3NhZ2UgaXMgbm90IGF2YWlsYWJsZSBpbiBvbmUgbGFuZ3VhZ2UgYWxsIHRoZSBvdGhlcgorLSAJaW4gdGhlIGxvY2FsZSBsaXN0IGEgdHJpZWQuICBGb3JtZXJseSBmYWxsIGJhY2sgd2FzIG9ubHkgcG9zc2libGUKKy0gCXdpdGhpbiBvbmUgbGFuZ3VhZ2UuICBJbXBsZW1lbnRlZCBieSBtb3Zpbmcgb25lIGxvb3AgZnJvbQorLSAJX25sX2ZpbmRfZG9tYWluIHRvIGhlcmUuCistCistTW9uIEF1ZyAxNCAyMzo0NTo1MCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChnZXR0ZXh0c3JjZGlyKToKKy0JRGlyZWN0b3J5IHdoZXJlIHNvdXJjZSBvZiBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGFyZSBtYWRlCistCWF2YWlsYWJsZS4KKy0JKElOU1RBTEwsIElOU1RBTExfREFUQSk6IFByb2dyYW1zIHVzZWQgZm9yIGluc3RhbGxpbmcgc291cmNlcy4KKy0JKGdldHRleHQtc3JjKTogTmV3LiAgUnVsZSB0byBpbnN0YWxsIEdOVSBnZXR0ZXh0IHNvdXJjZXMgZm9yIHVzZSBpbgorLQlnZXR0ZXh0aXplIHNoZWxsIHNjcmlwdC4KKy0KKy1TdW4gQXVnIDEzIDE0OjQwOjQ4IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogbG9hZG1zZ2NhdC5jIChfbmxfbG9hZF9kb21haW4pOgorLQlVc2UgbW1hcCBmb3IgbG9hZGluZyBvbmx5IHdoZW4gbXVubWFwIGZ1bmN0aW9uIGlzCistCWFsc28gYXZhaWxhYmxlLgorLQorLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogRGVwZW5kIG9uIGBhbGwnIGdvYWwuCistCistV2VkIEF1ZyAgOSAxMTowNDozMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGxvY2FsZWFsaWFzLmMgKHJlYWRfYWxpYXNfZmlsZSk6CistCURvIG5vdCBvdmVyd3JpdGUgJ1xuJyB3aGVuIHRlcm1pbmF0aW5nIGFsaWFzIHZhbHVlIHN0cmluZy4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jIChyZWFkX2FsaWFzX2ZpbGUpOgorLQlIYW5kbGUgbG9uZyBsaW5lcy4gIElnbm9yZSB0aGUgcmVzdCBub3QgZml0dGluZyBpbgorLQl0aGUgYnVmZmVyIGFmdGVyIHRoZSBpbml0aWFsIGBmZ2V0cycgY2FsbC4KKy0KKy1XZWQgQXVnICA5IDAwOjU0OjI5IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZ2V0dGV4dFAuaCAoX25sX2xvYWRfZG9tYWluKToKKy0JQWRkIHByb3RvdHlwZSwgcmVwbGFjaW5nIHByb3RvdHlwZSBmb3IgX25sX2xvYWRfbXNnX2NhdC4KKy0KKy0JKiBmaW5kZG9tYWluLmMgKF9ubF9maW5kX2RvbWFpbik6CistCVJlbW92ZSB1bm5lZWRlZCB2YXJpYWJsZSBmaWxlbmFtZSBhbmQgZmlsZW5hbWVfbGVuLgorLQkoZXhwYW5kX2FsaWFzKTogUmVtb3ZlIHByb3RvdHlwZSBiZWNhdXNlIGZ1bmN0aW9ucyBkb2VzIG5vdAorLSAJZXhpc3QgYW55bW9yZS4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jIChyZWFkX2FsaWFzX2ZpbGUpOgorLQlDaGFuZ2UgdHlwZSBvZiBmbmFtZV9sZW4gcGFyYW1ldGVyIHRvIGludC4KKy0JKHhtYWxsb2MpOiBBZGQgcHJvdG90eXBlLgorLQorLQkqIGxvYWRtc2djYXQuYzogQmV0dGVyIHByb3RvdHlwZXMgZm9yIHhtYWxsb2MuCistCistVHVlIEF1ZyAgOCAyMjozMDozOSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGZpbmRkb21haW4uYyAoX25sX2ZpbmRfZG9tYWluKToKKy0JQWxsb3cgYWxpYXMgbmFtZSB0byBiZSBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBmb3VyIGNvbXBvbmVudHMuCistCistCSogTWFrZWZpbGUuaW4gKGFsaWFzcGF0aCk6IE5ldyB2YXJpYWJsZS4gIFNldCB0byBwcmVsaW1pbmFyeSB2YWx1ZS4KKy0JKFNPVVJDRVMpOiBBZGQgbG9jYWxlYWxpYXMuYy4KKy0JKE9CSkVDVFMpOiBBZGQgbG9jYWxlYWxpYXMuby4KKy0KKy0JKiBnZXR0ZXh0UC5oOiBBZGQgcHJvdG90eXBlIGZvciBfbmxfZXhwYW5kX2FsaWFzLgorLQorLQkqIGZpbmRkb21haW4uYzogQWxpYXNpbmcgaGFuZGxlZCBpbiBpbnRsL2xvY2FsZWFsaWFzLmMuCistCistCSogbG9jYWxlYWxpYXMuYzogQWxpYXNpbmcgZm9yIGxvY2FsZSBuYW1lcy4KKy0KKy0JKiBiaW5kdGV4dGRvbS5jOiBCZXR0ZXIgcHJvdG90eXBlcyBmb3IgeG1hbGxvYyBhbmQgeHN0cmR1cC4KKy0KKy1Nb24gQXVnICA3IDIzOjQ3OjQyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKERJU1RGSUxFUyk6IGdldHRleHQucGVybCBpcyBub3cgZm91bmQgaW4gbWlzYy8uCistCistCSogY2F0LWNvbXBhdC5jIChiaW5kdGV4dGRvbWFpbik6CistCUNvcnJlY3QgaW1wbGVtZW50YXRpb24uICBkaXJuYW1lIHBhcmFtZXRlciB3YXMgbm90IHVzZWQuCistCVJlcG9ydGVkIGJ5IE1hcmN1cyBEYW5pZWxzLgorLQorLQkqIGdldHRleHRQLmggKGxvYWRlZF9kb21haW4pOgorLQlOZXcgZmllbGRzIGBzdWNjZXNzb3InIGFuZCBgZGVjaWRlZCcgZm9yIG9vLCBsYXp5CistCW1lc3NhZ2UgaGFuZGxpbmcgaW1wbGVtZW50YXRpb24uCistCistCSogZGNnZXR0ZXh0LmM6CistCUFkb3B0IGZvciBvbywgbGF6eSBtZXNzYWdlIGhhbmRsaWluZy4KKy0gIAlOb3cgd2UgY2FuIGluaGVyaXQgdHJhbnNsYXRpb25zIGZyb20gbGVzcyBzcGVjaWZpYyBsb2NhbGVzLgorLQkoZmluZF9tc2cpOiBOZXcgZnVuY3Rpb24uCistCistCSogbG9hZG1zZ2NhdC5jLCBmaW5kZG9tYWluLmM6CistCUNvbXBsZXRlIHJld3JpdGUuICBJbXBsZW1lbnQgb28sIGxhenkgbWVzc2FnZSBoYW5kbGluZyA6LSkuCistICAJV2Ugbm93IGhhdmUgYW4gYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZSBgTEFOR1VBR0UnIHdpdGgKKy0gCWEgaGlnaGVyIHByaW9yaXR5IHRoYW4gTENfQUxMIGZvciB0aGUgTENfTUVTU0FHRSBsb2NhbGUuCistICAJSGVyZSB3ZSBjYW4gc2V0IGEgY29sb24gc2VwYXJhdGVkIGxpc3Qgb2Ygc3BlY2lmaWNhdGlvbnMgZWFjaAorLSAJb2YgdGhlIGZvcm0gYGxhbmd1YWdlW190ZXJyaXRvcnlbLmNvZGVzZXRdXVtAbW9kaWZpZXJdJy4KKy0KKy1TYXQgQXVnICA1IDA5OjU1OjQyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZmluZGRvbWFpbi5jICh1bmlzdGQuaCk6CistCUluY2x1ZGUgdG8gZ2V0IF9QQ19QQVRIX01BWCBkZWZpbmVkIG9uIHN5c3RlbSBoYXZpbmcgaXQuCistCistRnJpIEF1ZyAgNCAyMjo0MjowMCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGZpbmRkb21haW4uYyAoc3RwY3B5KTogSW5jbHVkZSBwcm90b3R5cGUuCistCistCSogTWFrZWZpbGUuaW4gKGRpc3QpOiBSZW1vdmUgYGNvcHlpbmcgaW5zdGVhZCcgbWVzc2FnZS4KKy0KKy1XZWQgQXVnICAyIDE4OjUyOjAzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKElELCBUQUdTKTogRG8gbm90IHVzZSAkXi4KKy0KKy1UdWUgQXVnICAxIDIwOjA3OjExIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKFRBR1MsIElEKTogVXNlICReIGFzIGNvbW1hbmQgYXJndW1lbnQuCistCShUQUdTKTogR2l2ZSBldGFncyAtbyBvcHRpb24gdCB3cml0ZSB0byBjdXJyZW50IGRpcmVjdG9yeSwKKy0gCW5vdCAkKHNyY2RpcikuCistCShJRCk6IFVzZSAkKHNyY2RpcikgaW5zdGVhZCBvcyAkKHRvcF9zcmNkaXIpL3NyYy4KKy0JKGRpc3RjbGVhbik6IFJlbW92ZSBJRC4KKy0KKy1TdW4gSnVsIDMwIDExOjUxOjQ2IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKGdudWxvY2FsZWRpcik6CistCU5ldyB2YXJpYWJsZSwgYWx3YXlzIHVzaW5nIHNoYXJlLyBmb3IgZGF0YSBkaXJlY3RvcnkuCistCShERUZTKTogQWRkIEdOVUxPQ0FMRURJUiwgdXNlZCBpbiBmaW5kZG9tYWluLmMuCistCistCSogZmluZGRvbWFpbi5jIChfbmxfZGVmYXVsdF9kaXJuYW1lKToKKy0JU2V0IHRvIEdOVUxPQ0FMRURJUiwgYmVjYXVzZSBpdCBhbHdheXMgaGFzIHRvIHBvaW50CistCXRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgR05VIGdldHRleHQgTGlicmFyeSB3cml0ZXMgaXQgdG8uCistCistCSogaW50bC1jb21wYXQuYyAodGV4dGRvbWFpbiwgYmluZHRleHRkb21haW4pOgorLQlVbmRlZmluZSBtYWNyb3MgYmVmb3JlIGZ1bmN0aW9uIGRlZmluaXRpb24uCistCistU2F0IEp1bCAyMiAwMToxMDowMiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGxpYmdldHRleHQuaCAoX0xJQklOVExfSCk6CistCVByb3RlY3QgZGVmaW5pdGlvbiBpbiBjYXNlIHdoZXJlIHRoaXMgZmlsZSBpcyBpbmNsdWRlZCBhcworLQlsaWJnZXR0ZXh0Lmggb24gU29sYXJpcyBtYWNoaW5lcy4gIEFkZCBjb21tZW50IGFib3V0IHRoaXMuCistCistV2VkIEp1bCAxOSAwMjozNjo0MiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGludGwtY29tcGF0LmMgKHRleHRkb21haW4pOiBDb3JyZWN0IHR5cG8uCistCistV2VkIEp1bCAxOSAwMTo1MTozNSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGRjZ2V0dGV4dC5jIChkY2dldHRleHQpOiBGdW5jdGlvbiBub3cgY2FsbGVkIF9fZGNnZXR0ZXh0LgorLQorLQkqIGRnZXR0ZXh0LmMgKGRnZXR0ZXh0KTogTm93IGNhbGxlZCBfX2RnZXR0ZXh0IGFuZCBjYWxscworLSAJX19kY2dldHRleHQuCistCistCSogZ2V0dGV4dC5jIChnZXR0ZXh0KToKKy0JRnVuY3Rpb24gbm93IGNhbGxlZCBfX2dldHRleHQgYW5kIGNhbGxzIF9fZGdldHRleHQuCistCistCSogdGV4dGRvbWFpbi5jICh0ZXh0ZG9tYWluKTogRnVuY3Rpb24gbm93IGNhbGxlZCBfX3RleHRkb21haW4uCistCistCSogYmluZHRleHRkb20uYyAoYmluZHRleHRkb21haW4pOiBGdW5jdGlvbiBub3cgY2FsbGVkCistIAlfX2JpbmR0ZXh0ZG9tYWluLgorLQorLQkqIGludGwtY29tcGF0LmM6IEluaXRpYWwgcmV2aXNpb24uCistCistCSogTWFrZWZpbGUuaW4gKFNPVVJDRVMpOiBBZGQgaW50bC1jb21wYXQuYy4KKy0JKE9CSkVDVFMpOiBXZSBhbHdheXMgY29tcGlsZSB0aGUgR05VIGdldHRleHQgbGlicmFyeSBmdW5jdGlvbnMuCistICAJT0JKRUNUUyBjb250YWlucyBhbGwgb2JqZWN0cyBidXQgY2F0LWNvbXBhdC5vLCAuLi9wby9jYXQtaWYtdGJsLm8sCistIAlhbmQgaW50bC1jb21wYXQuby4KKy0gIAkoR0VUVE9CSlMpOiBDb250YWlucyBub3cgb25seSBpbnRsLWNvbXBhdC5vLgorLQorLQkqIGxpYmdldHRleHQuaDoKKy0JUmUtaW5jbHVkZSBwcm90ZWN0aW9uIG1hdGNoZXMgZHVhbGlzdGljIGNoYXJhY3RlciBvZiBsaWJnZXR0ZXh0LmguCistCUZvciBhbGwgZnVuY3Rpb25zIGluIEdOVSBnZXR0ZXh0IGxpYnJhcnkgZGVmaW5lIF9fIGNvdW50ZXIgcGFydC4KKy0KKy0JKiBmaW5kZG9tYWluLmMgKHN0cmNocik6IERlZmluZSBhcyBpbmRleCBpZiBub3QgZm91bmQgaW4gQyBsaWJyYXJ5LgorLQkoX25sX2ZpbmRfZG9tYWluKTogRm9yIHJlbGF0aXZlIHBhdGhzIHBhc3RlIC8gaW4gYmV0d2Vlbi4KKy0KKy1UdWUgSnVsIDE4IDE2OjM3OjQ1IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogbG9hZG1zZ2NhdC5jLCBmaW5kZG9tYWluLmM6IEFkZCBpbmNsdXNpb24gb2Ygc3lzL3R5cGVzLmguCistCistCSogeG9wZW4tbXNnLnNlZDogRml4IGJ1ZyB3aXRoIGBtc2dzdHIgIiInIGxpbmVzLgorLQlBIGxpdHRsZSBiaXQgYmV0dGVyIGNvbW1lbnRzLgorLQorLVR1ZSBKdWwgMTggMDE6MTg6MjcgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbjoKKy0JcG8tbW9kZS5lbCwgbWFrZWxpbmtzLCBjb21iaW5lLXNoIGFyZSBub3cgZm91bmQgaW4gLi4vbWlzYy4KKy0KKy0JKiBwby1tb2RlLmVsLCBtYWtlbGlua3MsIGNvbWJpbmUtc2gsIGVsaXNwLWNvbXA6CistCU1vdmVkIHRvIC4uL21pc2MvLgorLQorLQkqIGxpYmdldHRleHQuaCwgZ2V0dGV4dFAuaCwgZ2V0dGV4dC5oOiBVbmlmb3JtIHRlc3QgZm9yIF9fU1REQ19fLgorLQorLVN1biBKdWwgMTYgMjI6MzM6MDIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoSU5TVEFMTCwgSU5TVEFMTF9EQVRBKTogTmV3IHZhcmlhYmxlcy4KKy0JKGluc3RhbGwtZGF0YSwgdW5pbnN0YWxsKTogSW5zdGFsbC91bmluc3RhbGwgLmVsYyBmaWxlLgorLQorLQkqIHBvLW1vZGUuZWwgKEluc3RhbGxhdGlvbiBjb21tZW50KToKKy0JQWRkIC5wb3ggYXMgcG9zc2libGUgZXh0ZW5zaW9uIG9mIC5wbyBmaWxlcy4KKy0KKy1TdW4gSnVsIDE2IDEzOjIzOjI3IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZWxpc3AtY29tcDogQ29tcGxldGUgbmV3IHZlcnNpb24gYnkgRnJhbmMsb2lzOiBUaGlzIGRvZXMgbm90CistIAlmYWlsIHdoZW4gbm90IGNvbXBpbGluZyBpbiB0aGUgc291cmNlIGRpcmVjdG9yeS4KKy0KKy1TdW4gSnVsIDE2IDAwOjEyOjE3IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKC4uL3BvL2NhdC1pZC10Ymwubyk6CistCVVzZSAkKE1BS0UpIGluc3RlYWQgb2YgbWFrZSBmb3IgcmVjdXJzaXZlIG1ha2UuCistCistCSogTWFrZWZpbGUuaW4gKC5lbC5lbGMpOiBVc2UgJChTSEVMTCkgaW5zdGVhZCBvZiAvYmluL3NoLgorLQkoaW5zdGFsbC1leGVjKTogQWRkIG1pc3NpbmcgZHVtbXkgZ29hbC4KKy0JKGluc3RhbGwtZGF0YSwgdW5pbnN0YWxsKTogQCBpbiBtdWx0aS1saW5lIHNoZWxsIGNvbW1hbmQgYXQKKy0gCWJlZ2lubmluZywgbm90IGluIGZyb250IG9mIGVjaG8uICBSZXBvcnRlZCBieSBFcmljIEJhY2t1cy4KKy0KKy1TYXQgSnVsIDE1IDAwOjIxOjI4IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKERJU1RGSUxFUyk6CistCVJlbmFtZSBsaWJnZXR0ZXh0LnBlcmwgdG8gZ2V0dGV4dC5wZXJsIHRvIGZpdCBpbiAxNCBjaGFycworLQlmaWxlIHN5c3RlbXMuCistCistCSogZ2V0dGV4dC5wZXJsOgorLSAJUmVuYW1lIHRvIGdldHRleHQucGVybCB0byBmaXQgaW4gMTQgY2hhcnMgZmlsZSBzeXN0ZW1zLgorLQorLVRodSBKdWwgMTMgMjM6MTc6MjAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBjYXQtY29tcGF0LmM6IElmICFTVERDX0hFQURFUlMgdHJ5IHRvIGluY2x1ZGUgbWFsbG9jLmguCistCistVGh1IEp1bCAxMyAyMDo1NTowMiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIHBvMnRibC5zZWQuaW46IFByZXR0eSBwcmludGluZy4KKy0KKy0JKiBsaW51eC1tc2cuc2VkLCB4b3Blbi1tc2cuc2VkOgorLQlDb3JyZWN0IGJ1Z3Mgd2l0aCBoYW5kbGluZyBzdWJzdGl0dXRlIGZsYWdzIGluIGJyYW5jaGVzLgorLQorLQkqIGhhc2gtc3RyaW5nLmggKGhhc2hfc3RyaW5nKToKKy0JT2xkIEsmUiBjb21waWxlcnMgZG9uJ3QgdW5kZXIgc3RhbmQgYHVuc2lnbmVkIGNoYXInLgorLQorLQkqIGdldHRleHQuaCAobmxzX3VpbnQzMik6CistCVNvbWUgb2xkIEsmUiBjb21waWxlcnMgKGVnIEhQKSBkb24ndCB1bmRlcnN0YW5kIGB1bnNpZ25lZCBpbnQnLgorLQorLQkqIGNhdC1jb21wYXQuYyAobXNnX3RvX2NhdF9pZCk6IERlLUFOU0ktZnkgcHJvdG90eXBlcy4KKy0KKy1UaHUgSnVsIDEzIDAxOjM0OjMzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKEVMQ0ZJTEVTKTogTmV3IHZhcmlhYmxlLgorLQkoRElTVEZJTEVTKTogQWRkIGVsaXNwLWNvbXAuCistCUFkZCBpbXBsaWNpdCBydWxlIGZvciAuZWwgLT4gLmVsYyBjb21waWxhdGlvbi4KKy0JKGluc3RhbGwtZGF0YSk6IGluc3RhbGwgJEVMQ0ZJTEVTCistCShjbGVhbik6IHJlbmFtZWQgcG8tdG8tdGJsIGFuZCBwby10by1tc2cgdG8gcG8ydGJsIGFuZCBwbzJtc2cgcmVzcC4KKy0KKy0JKiBlbGlzcC1jb21wOiBJbml0aWFsIHJldmlzaW9uCistCistV2VkIEp1bCAxMiAxNjoxNDo1MiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluOgorLQljYXQtaWQtdGJsLmMgaXMgbm93IGZvdW5kIGluIHBvLy4gIFRoaXMgZW5hYmxlcyB1cyB0byB1c2UgYW4gaWRlbnRpY2FsCistCWludGwvIGRpcmVjdG9yeSBpbiBhbGwgcGFja2FnZXMuCistCistCSogZGNnZXR0ZXh0LmMgKGRjZ2V0dGV4dCk6IGhhc2hpbmcgZG9lcyBub3Qgd29yayBmb3IgdGFibGUgc2l6ZSA8PSAyLgorLQorLQkqIHRleHRkb21haW4uYzogZml4IHR5cG8gKCNpZiBkZWYgLT4gI2lmIGRlZmluZWQpCistCistVHVlIEp1bCAxMSAxODo0NDo0MyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChzdGFtcC1jYXQtaWQpOiB1c2UgdG9wX3NyY2RpciB0byBhZGRyZXNzIHNvdXJjZSBmaWxlcworLQkoRElTVEZJTEVTLGRpc3RjbGVhbik6IG1vdmUgdHVwZGF0ZS5wZXJsIHRvIHNyYy8KKy0KKy0JKiBwby10by10Ymwuc2VkLmluOgorLQlhZGQgYWRkaXRpb25hbCBqdW1wIHRvIGNsZWFyIGNoYW5nZSBmbGFnIHRvIHJlY29nbml6ZSBtdWx0aWxpbmUgc3RyaW5ncworLQorLVR1ZSBKdWwgMTEgMDE6MzI6NTAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiB0ZXh0ZG9tYWluLmM6IFByb3RlY3QgaW5jbHVzaW9uIG9mIHN0ZGxpYi5oIGFuZCBzdHJpbmcuaC4KKy0KKy0JKiBsb2FkbXNnY2F0LmM6IFByb3RlY3QgaW5jbHVzaW9uIG9mIHN0ZGxpYi5oLgorLQorLQkqIGxpYmdldHRleHQuaDogUHJvdGVjdCBpbmNsdXNpb24gb2YgbG9jYWxlLmguCistCUFsbG93IHVzZSBpbiBDKysgcHJvZ3JhbXMuCistCURlZmluZSBOVUxMIGlzIG5vdCBoYXBwZW5lZCBhbHJlYWR5LgorLQorLQkqIE1ha2VmaWxlLmluIChESVNURklMRVMpOiBzaGlwIHBvLXRvLXRibC5zZWQuaW4gaW5zdGVhZCBvZgorLQlwby10by10Ymwuc2VkLgorLQkoZGlzdGNsZWFuKTogcmVtb3ZlIHBvLXRvLXRibC5zZWQgYW5kIHR1cGRhdGUucGVybC4KKy0KKy0JKiB0dXBkYXRlLnBlcmwuaW46IFN1YnN0aXR1dGUgUGVybCBwYXRoIGV2ZW4gaW4gZXhlYyBsaW5lLgorLQlEb24ndCBpbmNsdWRlIGVudHJpZXMgd2l0aG91dCB0cmFuc2xhdGlvbiBmcm9tIG9sZCAucG8gZmlsZS4KKy0KKy1UdWUgSnVsICA0IDAwOjQxOjUxIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogdHVwZGF0ZS5wZXJsLmluOiB1c2UgIlVwZGF0ZWQ6ICIgaW4gbXNnaWQgIiIuCistCistCSogY2F0LWNvbXBhdC5jOiBGaXggdHlwbyAoTE9DQUxESVIgLT4gTE9DQUxFRElSKS4KKy0gCURlZmluZSBnZXRlbnYgaWYgIV9fU1REQ19fLgorLQorLQkqIGJpbmR0ZXh0ZG9tLmM6IFByb3RlY3Qgc3RkbGliLmggYW5kIHN0cmluZy5oIGluY2x1c2lvbi4KKy0gCURlZmluZSBmcmVlIGlmICFfX1NURENfXy4KKy0KKy0JKiBmaW5kZG9tYWluLmM6IENoYW5nZSBERUZfTVNHX0RPTV9ESVIgdG8gTE9DQUxFRElSLgorLSAJRGVmaW5lIGZyZWUgaWYgIV9fU1REQ19fLgorLQorLQkqIGNhdC1jb21wYXQuYzogQ2hhbmdlIERFRl9NU0dfRE9NX0RJUiB0byBMT0NBTEVESVIuCistCistTW9uIEp1bCAgMyAyMzo1NjozMCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluOiBVc2UgTE9DQUxFRElSIGluc3RlYWQgb2YgREVGX01TR19ET01fRElSLgorLQlSZW1vdmUgdW5uZWVkZWQgJChzcmNkaXIpIGZyb20gTWFrZWZpbGUuaW4gZGVwZW5kZW5jeS4KKy0KKy0JKiBtYWtlbGlua3M6IEFkZCBjb3B5cmlnaHQgYW5kIHNob3J0IGRlc2NyaXB0aW9uLgorLQorLQkqIHBvLW1vZGUuZWw6IExhc3QgdmVyc2lvbiBmb3IgMC43LgorLQorLQkqIHR1cGRhdGUucGVybC5pbjogRml4IGRpZSBtZXNzYWdlLgorLQorLQkqIGRjZ2V0dGV4dC5jOiBQcm90ZWN0IGluY2x1ZGUgb2Ygc3RyaW5nLmguCistCistCSogZ2V0dGV4dC5jOiBQcm90ZWN0IGluY2x1ZGUgb2Ygc3RkbGliLmggYW5kIGZ1cnRoZXIgdHJpZXMgdG8gZ2V0IE5VTEwuCistCistCSogZmluZGRvbWFpbi5jOiBTb21lIGNvcnJlY3Rpb25zIGluIGluY2x1ZGVzLgorLQorLQkqIE1ha2VmaWxlLmluIChJTkNMVURFUyk6IFBydW5lIGxpc3QgY29ycmVjdCBwYXRoIHRvIE1ha2VmaWxlLmluLgorLQorLQkqIHBvLXRvLXRibC5zZWQ6IEFkb3B0IGZvciBuZXcgLnBvIGZpbGUgZm9ybWF0LgorLQorLQkqIGxpbnV4LW1zZy5zZWQsIHhvcGVuLW1zZy5zZWQ6IEFkb3B0IGZvciBuZXcgLnBvIGZpbGUgZm9ybWF0LgorLQorLVN1biBKdWwgIDIgMjM6NTU6MDMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiB0dXBkYXRlLnBlcmwuaW46IENvbXBsZXRlIHJld3JpdGUgZm9yIG5ldyAucG8gZmlsZSBmb3JtYXQuCistCistU3VuIEp1bCAgMiAwMjowNjo1MCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIEZpcnN0IG9mZmljaWFsIHJlbGVhc2UuICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBhbGwgdGhlIGNvZGUKKy0JbmVlZGVkIHRvIGludGVybmF0aW9uYWxpemUgb3duIHBhY2thZ2VzLiAgSXQgcHJvdmlkZXMgZnVuY3Rpb25zCistCXdoaWNoIGFsbG93IHRvIHVzZSB0aGUgWC9PcGVuIGNhdGdldHMgZnVuY3Rpb24gd2l0aCBhbiBpbnRlcmZhY2UKKy0JbGlrZSB0aGUgVW5pZm9ydW0gZ2V0dGV4dCBmdW5jdGlvbi4gIEZvciBzeXN0ZW0gd2hpY2ggZG9lcyBub3QKKy0JaGF2ZSBuZWl0aGVyIG9mIHRob3NlIGEgY29tcGxldGUgaW1wbGVtZW50YXRpb24gaXMgcHJvdmlkZWQuCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9kY2dldHRleHQuYyBscnpzei0wLjEyLjIwL2ludGwvZGNnZXR0ZXh0LmMKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvZGNnZXR0ZXh0LmMJMTk5OC0wNC0yNiAxNDoyMjozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvZGNnZXR0ZXh0LmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDU5MyArMCwwIEBACistLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIGRjZ2V0dGV4dCgzKSBmdW5jdGlvbgorLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJzaW9uLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistCistICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworLQorLSNpZmRlZiBIQVZFX0NPTkZJR19ICistIyBpbmNsdWRlIDxjb25maWcuaD4KKy0jZW5kaWYKKy0KKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistCistI2lmZGVmIF9fR05VQ19fCistIyBkZWZpbmUgYWxsb2NhIF9fYnVpbHRpbl9hbGxvY2EKKy0jIGRlZmluZSBIQVZFX0FMTE9DQSAxCistI2Vsc2UKKy0jIGlmIGRlZmluZWQgSEFWRV9BTExPQ0FfSCB8fCBkZWZpbmVkIF9MSUJDCistIyAgaW5jbHVkZSA8YWxsb2NhLmg+CistIyBlbHNlCistIyAgaWZkZWYgX0FJWAorLSAjcHJhZ21hIGFsbG9jYQorLSMgIGVsc2UKKy0jICAgaWZuZGVmIGFsbG9jYQorLWNoYXIgKmFsbG9jYSAoKTsKKy0jICAgZW5kaWYKKy0jICBlbmRpZgorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaW5jbHVkZSA8ZXJybm8uaD4KKy0jaWZuZGVmIGVycm5vCistZXh0ZXJuIGludCBlcnJubzsKKy0jZW5kaWYKKy0jaWZuZGVmIF9fc2V0X2Vycm5vCistIyBkZWZpbmUgX19zZXRfZXJybm8odmFsKSBlcnJubyA9ICh2YWwpCistI2VuZGlmCistCistI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgX0xJQkMKKy0jIGluY2x1ZGUgPHN0ZGxpYi5oPgorLSNlbHNlCistY2hhciAqZ2V0ZW52ICgpOworLSMgaWZkZWYgSEFWRV9NQUxMT0NfSAorLSMgIGluY2x1ZGUgPG1hbGxvYy5oPgorLSMgZWxzZQorLXZvaWQgZnJlZSAoKTsKKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmIGRlZmluZWQgSEFWRV9TVFJJTkdfSCB8fCBkZWZpbmVkIF9MSUJDCistIyBpZm5kZWYgX0dOVV9TT1VSQ0UKKy0jICBkZWZpbmUgX0dOVV9TT1VSQ0UJMQorLSMgZW5kaWYKKy0jIGluY2x1ZGUgPHN0cmluZy5oPgorLSNlbHNlCistIyBpbmNsdWRlIDxzdHJpbmdzLmg+CistI2VuZGlmCistI2lmICFIQVZFX1NUUkNIUiAmJiAhZGVmaW5lZCBfTElCQworLSMgaWZuZGVmIHN0cmNocgorLSMgIGRlZmluZSBzdHJjaHIgaW5kZXgKKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmIGRlZmluZWQgSEFWRV9VTklTVERfSCB8fCBkZWZpbmVkIF9MSUJDCistIyBpbmNsdWRlIDx1bmlzdGQuaD4KKy0jZW5kaWYKKy0KKy0jaW5jbHVkZSAiZ2V0dGV4dC5oIgorLSNpbmNsdWRlICJnZXR0ZXh0UC5oIgorLSNpZmRlZiBfTElCQworLSMgaW5jbHVkZSA8bGliaW50bC5oPgorLSNlbHNlCistIyBpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCistI2VuZGlmCistI2luY2x1ZGUgImhhc2gtc3RyaW5nLmgiCistCistLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworLQorLSNpZmRlZiBfTElCQworLS8qIFJlbmFtZSB0aGUgbm9uIEFOU0kgQyBmdW5jdGlvbnMuICBUaGlzIGlzIHJlcXVpcmVkIGJ5IHRoZSBzdGFuZGFyZAorLSAgIGJlY2F1c2Ugc29tZSBBTlNJIEMgZnVuY3Rpb25zIHdpbGwgcmVxdWlyZSBsaW5raW5nIHdpdGggdGhpcyBvYmplY3QKKy0gICBmaWxlIGFuZCB0aGUgbmFtZSBzcGFjZSBtdXN0IG5vdCBiZSBwb2xsdXRlZC4gICovCistIyBkZWZpbmUgZ2V0Y3dkIF9fZ2V0Y3dkCistIyBkZWZpbmUgc3RwY3B5IF9fc3RwY3B5CistI2Vsc2UKKy0jIGlmICFkZWZpbmVkIEhBVkVfR0VUQ1dECistY2hhciAqZ2V0d2QgKCk7CistIyAgZGVmaW5lIGdldGN3ZChidWYsIG1heCkgZ2V0d2QgKGJ1ZikKKy0jIGVsc2UKKy1jaGFyICpnZXRjd2QgKCk7CistIyBlbmRpZgorLSMgaWZuZGVmIEhBVkVfU1RQQ1BZCistc3RhdGljIGNoYXIgKnN0cGNweSBQQVJBTVMgKChjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMpKTsKKy0jIGVuZGlmCistI2VuZGlmCistCistLyogQW1vdW50IHRvIGluY3JlYXNlIGJ1ZmZlciBzaXplIGJ5IGluIGVhY2ggdHJ5LiAgKi8KKy0jZGVmaW5lIFBBVEhfSU5DUiAzMgorLQorLS8qIFRoZSBmb2xsb3dpbmcgaXMgZnJvbSBwYXRobWF4LmguICAqLworLS8qIE5vbi1QT1NJWCBCU0Qgc3lzdGVtcyBtaWdodCBoYXZlIGdjYydzIGxpbWl0cy5oLCB3aGljaCBkb2Vzbid0IGRlZmluZQorLSAgIFBBVEhfTUFYIGJ1dCBtaWdodCBjYXVzZSByZWRlZmluaXRpb24gd2FybmluZ3Mgd2hlbiBzeXMvcGFyYW0uaCBpcworLSAgIGxhdGVyIGluY2x1ZGVkIChhcyBvbiBNT1JFL0JTRCA0LjMpLiAgKi8KKy0jaWYgZGVmaW5lZChfUE9TSVhfVkVSU0lPTikgfHwgKGRlZmluZWQoSEFWRV9MSU1JVFNfSCkgJiYgIWRlZmluZWQoX19HTlVDX18pKQorLSMgaW5jbHVkZSA8bGltaXRzLmg+CistI2VuZGlmCistCistI2lmbmRlZiBfUE9TSVhfUEFUSF9NQVgKKy0jIGRlZmluZSBfUE9TSVhfUEFUSF9NQVggMjU1CistI2VuZGlmCistCistI2lmICFkZWZpbmVkKFBBVEhfTUFYKSAmJiBkZWZpbmVkKF9QQ19QQVRIX01BWCkKKy0jIGRlZmluZSBQQVRIX01BWCAocGF0aGNvbmYgKCIvIiwgX1BDX1BBVEhfTUFYKSA8IDEgPyAxMDI0IDogcGF0aGNvbmYgKCIvIiwgX1BDX1BBVEhfTUFYKSkKKy0jZW5kaWYKKy0KKy0vKiBEb24ndCBpbmNsdWRlIHN5cy9wYXJhbS5oIGlmIGl0IGFscmVhZHkgaGFzIGJlZW4uICAqLworLSNpZiBkZWZpbmVkKEhBVkVfU1lTX1BBUkFNX0gpICYmICFkZWZpbmVkKFBBVEhfTUFYKSAmJiAhZGVmaW5lZChNQVhQQVRITEVOKQorLSMgaW5jbHVkZSA8c3lzL3BhcmFtLmg+CistI2VuZGlmCistCistI2lmICFkZWZpbmVkKFBBVEhfTUFYKSAmJiBkZWZpbmVkKE1BWFBBVEhMRU4pCistIyBkZWZpbmUgUEFUSF9NQVggTUFYUEFUSExFTgorLSNlbmRpZgorLQorLSNpZm5kZWYgUEFUSF9NQVgKKy0jIGRlZmluZSBQQVRIX01BWCBfUE9TSVhfUEFUSF9NQVgKKy0jZW5kaWYKKy0KKy0vKiBYUEczIGRlZmluZXMgdGhlIHJlc3VsdCBvZiBgc2V0bG9jYWxlIChjYXRlZ29yeSwgTlVMTCknIGFzOgorLSAgIGBgRGlyZWN0cyBgc2V0bG9jYWxlKCknIHRvIHF1ZXJ5IGBjYXRlZ29yeScgYW5kIHJldHVybiB0aGUgY3VycmVudAorLSAgICAgc2V0dGluZyBvZiBgbG9jYWwnLicnCistICAgSG93ZXZlciBpdCBkb2VzIG5vdCBzcGVjaWZ5IHRoZSBleGFjdCBmb3JtYXQuICBBbmQgZXZlbiB3b3JzZTogUE9TSVgKKy0gICBkZWZpbmVzIHRoaXMgbm90IGF0IGFsbC4gIFNvIHdlIGNhbiB1c2UgdGhpcyBmZWF0dXJlIG9ubHkgb24gc2VsZWN0ZWQKKy0gICBzeXN0ZW0gKGUuZy4gdGhvc2UgdXNpbmcgR05VIEMgTGlicmFyeSkuICAqLworLSNpZmRlZiBfTElCQworLSMgZGVmaW5lIEhBVkVfTE9DQUxFX05VTEwKKy0jZW5kaWYKKy0KKy0vKiBOYW1lIG9mIHRoZSBkZWZhdWx0IGRvbWFpbiB1c2VkIGZvciBnZXR0ZXh0KDMpIHByaW9yIGFueSBjYWxsIHRvCistICAgdGV4dGRvbWFpbigzKS4gIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIGlzICJtZXNzYWdlcyIuICAqLworLWNvbnN0IGNoYXIgX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW5bXSA9ICJtZXNzYWdlcyI7CistCistLyogVmFsdWUgdXNlZCBhcyB0aGUgZGVmYXVsdCBkb21haW4gZm9yIGdldHRleHQoMykuICAqLworLWNvbnN0IGNoYXIgKl9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluID0gX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW47CistCistLyogQ29udGFpbnMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIG1lc3NhZ2UgY2F0YWxvZ3MuICAqLworLWNvbnN0IGNoYXIgX25sX2RlZmF1bHRfZGlybmFtZVtdID0gR05VTE9DQUxFRElSOworLQorLS8qIExpc3Qgd2l0aCBiaW5kaW5ncyBvZiBzcGVjaWZpYyBkb21haW5zIGNyZWF0ZWQgYnkgYmluZHRleHRkb21haW4oKQorLSAgIGNhbGxzLiAgKi8KKy1zdHJ1Y3QgYmluZGluZyAqX25sX2RvbWFpbl9iaW5kaW5nczsKKy0KKy0vKiBQcm90b3R5cGVzIGZvciBsb2NhbCBmdW5jdGlvbnMuICAqLworLXN0YXRpYyBjaGFyICpmaW5kX21zZyBQQVJBTVMgKChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW5fZmlsZSwKKy0JCQkgICAgICAgY29uc3QgY2hhciAqbXNnaWQpKTsKKy1zdGF0aWMgY29uc3QgY2hhciAqY2F0ZWdvcnlfdG9fbmFtZSBQQVJBTVMgKChpbnQgY2F0ZWdvcnkpKTsKKy1zdGF0aWMgY29uc3QgY2hhciAqZ3Vlc3NfY2F0ZWdvcnlfdmFsdWUgUEFSQU1TICgoaW50IGNhdGVnb3J5LAorLQkJCQkJCSBjb25zdCBjaGFyICpjYXRlZ29yeW5hbWUpKTsKKy0KKy0KKy0vKiBGb3IgdGhvc2UgbG9vc2luZyBzeXN0ZW1zIHdoaWNoIGRvbid0IGhhdmUgYGFsbG9jYScgd2UgaGF2ZSB0byBhZGQKKy0gICBzb21lIGFkZGl0aW9uYWwgY29kZSBlbXVsYXRpbmcgaXQuICAqLworLSNpZmRlZiBIQVZFX0FMTE9DQQorLS8qIE5vdGhpbmcgaGFzIHRvIGJlIGRvbmUuICAqLworLSMgZGVmaW5lIEFERF9CTE9DSyhsaXN0LCBhZGRyZXNzKSAvKiBub3RoaW5nICovCistIyBkZWZpbmUgRlJFRV9CTE9DS1MobGlzdCkgLyogbm90aGluZyAqLworLSNlbHNlCistc3RydWN0IGJsb2NrX2xpc3QKKy17CistICB2b2lkICphZGRyZXNzOworLSAgc3RydWN0IGJsb2NrX2xpc3QgKm5leHQ7CistfTsKKy0jIGRlZmluZSBBRERfQkxPQ0sobGlzdCwgYWRkcikJCQkJCQkgICAgICBcCistICBkbyB7CQkJCQkJCQkJICAgICAgXAorLSAgICBzdHJ1Y3QgYmxvY2tfbGlzdCAqbmV3cCA9IChzdHJ1Y3QgYmxvY2tfbGlzdCAqKSBtYWxsb2MgKHNpemVvZiAoKm5ld3ApKTsgIFwKKy0gICAgLyogSWYgd2UgY2Fubm90IGdldCBhIGZyZWUgYmxvY2sgd2UgY2Fubm90IGFkZCB0aGUgbmV3IGVsZW1lbnQgdG8JICAgICAgXAorLSAgICAgICB0aGUgbGlzdC4gICovCQkJCQkJCSAgICAgIFwKKy0gICAgaWYgKG5ld3AgIT0gTlVMTCkgewkJCQkJCQkgICAgICBcCistICAgICAgbmV3cC0+YWRkcmVzcyA9IChhZGRyKTsJCQkJCQkgICAgICBcCistICAgICAgbmV3cC0+bmV4dCA9IChsaXN0KTsJCQkJCQkgICAgICBcCistICAgICAgKGxpc3QpID0gbmV3cDsJCQkJCQkJICAgICAgXAorLSAgICB9CQkJCQkJCQkJICAgICAgXAorLSAgfSB3aGlsZSAoMCkKKy0jIGRlZmluZSBGUkVFX0JMT0NLUyhsaXN0KQkJCQkJCSAgICAgIFwKKy0gIGRvIHsJCQkJCQkJCQkgICAgICBcCistICAgIHdoaWxlIChsaXN0ICE9IE5VTEwpIHsJCQkJCQkgICAgICBcCistICAgICAgc3RydWN0IGJsb2NrX2xpc3QgKm9sZCA9IGxpc3Q7CQkJCQkgICAgICBcCistICAgICAgbGlzdCA9IGxpc3QtPm5leHQ7CQkJCQkJICAgICAgXAorLSAgICAgIGZyZWUgKG9sZCk7CQkJCQkJCSAgICAgIFwKKy0gICAgfQkJCQkJCQkJCSAgICAgIFwKKy0gIH0gd2hpbGUgKDApCistIyB1bmRlZiBhbGxvY2EKKy0jIGRlZmluZSBhbGxvY2Eoc2l6ZSkgKG1hbGxvYyAoc2l6ZSkpCistI2VuZGlmCS8qIGhhdmUgYWxsb2NhICovCistCistCistLyogTmFtZXMgZm9yIHRoZSBsaWJpbnRsIGZ1bmN0aW9ucyBhcmUgYSBwcm9ibGVtLiAgVGhleSBtdXN0IG5vdCBjbGFzaAorLSAgIHdpdGggZXhpc3RpbmcgbmFtZXMgYW5kIHRoZXkgc2hvdWxkIGZvbGxvdyBBTlNJIEMuICBCdXQgdGhpcyBzb3VyY2UKKy0gICBjb2RlIGlzIGFsc28gdXNlZCBpbiBHTlUgQyBMaWJyYXJ5IHdoZXJlIHRoZSBuYW1lcyBoYXZlIGEgX18KKy0gICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLworLSNpZmRlZiBfTElCQworLSMgZGVmaW5lIERDR0VUVEVYVCBfX2RjZ2V0dGV4dAorLSNlbHNlCistIyBkZWZpbmUgRENHRVRURVhUIGRjZ2V0dGV4dF9fCistI2VuZGlmCistCistLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50IENBVEVHT1JZCistICAgbG9jYWxlLiAgKi8KKy1jaGFyICoKKy1EQ0dFVFRFWFQgKGRvbWFpbm5hbWUsIG1zZ2lkLCBjYXRlZ29yeSkKKy0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7CistICAgICBjb25zdCBjaGFyICptc2dpZDsKKy0gICAgIGludCBjYXRlZ29yeTsKKy17CistI2lmbmRlZiBIQVZFX0FMTE9DQQorLSAgc3RydWN0IGJsb2NrX2xpc3QgKmJsb2NrX2xpc3QgPSBOVUxMOworLSNlbmRpZgorLSAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluOworLSAgc3RydWN0IGJpbmRpbmcgKmJpbmRpbmc7CistICBjb25zdCBjaGFyICpjYXRlZ29yeW5hbWU7CistICBjb25zdCBjaGFyICpjYXRlZ29yeXZhbHVlOworLSAgY2hhciAqZGlybmFtZSwgKnhkb21haW5uYW1lOworLSAgY2hhciAqc2luZ2xlX2xvY2FsZTsKKy0gIGNoYXIgKnJldHZhbDsKKy0gIGludCBzYXZlZF9lcnJubyA9IGVycm5vOworLQorLSAgLyogSWYgbm8gcmVhbCBNU0dJRCBpcyBnaXZlbiByZXR1cm4gTlVMTC4gICovCistICBpZiAobXNnaWQgPT0gTlVMTCkKKy0gICAgcmV0dXJuIE5VTEw7CistCistICAvKiBJZiBET01BSU5OQU1FIGlzIE5VTEwsIHdlIGFyZSBpbnRlcmVzdGVkIGluIHRoZSBkZWZhdWx0IGRvbWFpbi4gIElmCistICAgICBDQVRFR09SWSBpcyBub3QgTENfTUVTU0FHRVMgdGhpcyBtaWdodCBub3QgbWFrZSBtdWNoIHNlbnNlIGJ1dCB0aGUKKy0gICAgIGRlZmludGlvbiBsZWZ0IHRoaXMgdW5kZWZpbmVkLiAgKi8KKy0gIGlmIChkb21haW5uYW1lID09IE5VTEwpCistICAgIGRvbWFpbm5hbWUgPSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbjsKKy0KKy0gIC8qIEZpcnN0IGZpbmQgbWF0Y2hpbmcgYmluZGluZy4gICovCistICBmb3IgKGJpbmRpbmcgPSBfbmxfZG9tYWluX2JpbmRpbmdzOyBiaW5kaW5nICE9IE5VTEw7IGJpbmRpbmcgPSBiaW5kaW5nLT5uZXh0KQorLSAgICB7CistICAgICAgaW50IGNvbXBhcmUgPSBzdHJjbXAgKGRvbWFpbm5hbWUsIGJpbmRpbmctPmRvbWFpbm5hbWUpOworLSAgICAgIGlmIChjb21wYXJlID09IDApCistCS8qIFdlIGZvdW5kIGl0ISAgKi8KKy0JYnJlYWs7CistICAgICAgaWYgKGNvbXBhcmUgPCAwKQorLQl7CistCSAgLyogSXQgaXMgbm90IGluIHRoZSBsaXN0LiAgKi8KKy0JICBiaW5kaW5nID0gTlVMTDsKKy0JICBicmVhazsKKy0JfQorLSAgICB9CistCistICBpZiAoYmluZGluZyA9PSBOVUxMKQorLSAgICBkaXJuYW1lID0gKGNoYXIgKikgX25sX2RlZmF1bHRfZGlybmFtZTsKKy0gIGVsc2UgaWYgKGJpbmRpbmctPmRpcm5hbWVbMF0gPT0gJy8nKQorLSAgICBkaXJuYW1lID0gYmluZGluZy0+ZGlybmFtZTsKKy0gIGVsc2UKKy0gICAgeworLSAgICAgIC8qIFdlIGhhdmUgYSByZWxhdGl2ZSBwYXRoLiAgTWFrZSBpdCBhYnNvbHV0ZSBub3cuICAqLworLSAgICAgIHNpemVfdCBkaXJuYW1lX2xlbiA9IHN0cmxlbiAoYmluZGluZy0+ZGlybmFtZSkgKyAxOworLSAgICAgIHNpemVfdCBwYXRoX21heDsKKy0gICAgICBjaGFyICpyZXQ7CistCistICAgICAgcGF0aF9tYXggPSAodW5zaWduZWQpIFBBVEhfTUFYOworLSAgICAgIHBhdGhfbWF4ICs9IDI7CQkvKiBUaGUgZ2V0Y3dkIGRvY3Mgc2F5IHRvIGRvIHRoaXMuICAqLworLQorLSAgICAgIGRpcm5hbWUgPSAoY2hhciAqKSBhbGxvY2EgKHBhdGhfbWF4ICsgZGlybmFtZV9sZW4pOworLSAgICAgIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgZGlybmFtZSk7CistCistICAgICAgX19zZXRfZXJybm8gKDApOworLSAgICAgIHdoaWxlICgocmV0ID0gZ2V0Y3dkIChkaXJuYW1lLCBwYXRoX21heCkpID09IE5VTEwgJiYgZXJybm8gPT0gRVJBTkdFKQorLQl7CistCSAgcGF0aF9tYXggKz0gUEFUSF9JTkNSOworLQkgIGRpcm5hbWUgPSAoY2hhciAqKSBhbGxvY2EgKHBhdGhfbWF4ICsgZGlybmFtZV9sZW4pOworLQkgIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgZGlybmFtZSk7CistCSAgX19zZXRfZXJybm8gKDApOworLQl9CistCistICAgICAgaWYgKHJldCA9PSBOVUxMKQorLQl7CistCSAgLyogV2UgY2Fubm90IGdldCB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4gIERvbid0IHNpZ25hbCBhbgorLQkgICAgIGVycm9yIGJ1dCBzaW1wbHkgcmV0dXJuIHRoZSBkZWZhdWx0IHN0cmluZy4gICovCistCSAgRlJFRV9CTE9DS1MgKGJsb2NrX2xpc3QpOworLQkgIF9fc2V0X2Vycm5vIChzYXZlZF9lcnJubyk7CistCSAgcmV0dXJuIChjaGFyICopIG1zZ2lkOworLQl9CistCistICAgICAgc3RwY3B5IChzdHBjcHkgKHN0cmNociAoZGlybmFtZSwgJ1wwJyksICIvIiksIGJpbmRpbmctPmRpcm5hbWUpOworLSAgICB9CistCistICAvKiBOb3cgZGV0ZXJtaW5lIHRoZSBzeW1ib2xpYyBuYW1lIG9mIENBVEVHT1JZIGFuZCBpdHMgdmFsdWUuICAqLworLSAgY2F0ZWdvcnluYW1lID0gY2F0ZWdvcnlfdG9fbmFtZSAoY2F0ZWdvcnkpOworLSAgY2F0ZWdvcnl2YWx1ZSA9IGd1ZXNzX2NhdGVnb3J5X3ZhbHVlIChjYXRlZ29yeSwgY2F0ZWdvcnluYW1lKTsKKy0KKy0gIHhkb21haW5uYW1lID0gKGNoYXIgKikgYWxsb2NhIChzdHJsZW4gKGNhdGVnb3J5bmFtZSkKKy0JCQkJICsgc3RybGVuIChkb21haW5uYW1lKSArIDUpOworLSAgQUREX0JMT0NLIChibG9ja19saXN0LCB4ZG9tYWlubmFtZSk7CistCistICBzdHBjcHkgKHN0cGNweSAoc3RwY3B5IChzdHBjcHkgKHhkb21haW5uYW1lLCBjYXRlZ29yeW5hbWUpLCAiLyIpLAorLQkJICBkb21haW5uYW1lKSwKKy0JICAiLm1vIik7CistCistICAvKiBDcmVhdGluZyB3b3JraW5nIGFyZWEuICAqLworLSAgc2luZ2xlX2xvY2FsZSA9IChjaGFyICopIGFsbG9jYSAoc3RybGVuIChjYXRlZ29yeXZhbHVlKSArIDEpOworLSAgQUREX0JMT0NLIChibG9ja19saXN0LCBzaW5nbGVfbG9jYWxlKTsKKy0KKy0KKy0gIC8qIFNlYXJjaCBmb3IgdGhlIGdpdmVuIHN0cmluZy4gIFRoaXMgaXMgYSBsb29wIGJlY2F1c2Ugd2UgcGVyaGFwcworLSAgICAgZ290IGFuIG9yZGVyZWQgbGlzdCBvZiBsYW5ndWFnZXMgdG8gY29uc2lkZXIgZm9yIHRoIHRyYW5zbGF0aW9uLiAgKi8KKy0gIHdoaWxlICgxKQorLSAgICB7CistICAgICAgLyogTWFrZSBDQVRFR09SWVZBTFVFIHBvaW50IHRvIHRoZSBuZXh0IGVsZW1lbnQgb2YgdGhlIGxpc3QuICAqLworLSAgICAgIHdoaWxlIChjYXRlZ29yeXZhbHVlWzBdICE9ICdcMCcgJiYgY2F0ZWdvcnl2YWx1ZVswXSA9PSAnOicpCistCSsrY2F0ZWdvcnl2YWx1ZTsKKy0gICAgICBpZiAoY2F0ZWdvcnl2YWx1ZVswXSA9PSAnXDAnKQorLQl7CistCSAgLyogVGhlIHdob2xlIGNvbnRlbnRzIG9mIENBVEVHT1JZVkFMVUUgaGFzIGJlZW4gc2VhcmNoZWQgYnV0CistCSAgICAgbm8gdmFsaWQgZW50cnkgaGFzIGJlZW4gZm91bmQuICBXZSBzb2x2ZSB0aGlzIHNpdHVhdGlvbgorLQkgICAgIGJ5IGltcGxpY2l0bHkgYXBwZW5kaW5nIGEgIkMiIGVudHJ5LCBpLmUuIG5vIHRyYW5zbGF0aW9uCistCSAgICAgd2lsbCB0YWtlIHBsYWNlLiAgKi8KKy0JICBzaW5nbGVfbG9jYWxlWzBdID0gJ0MnOworLQkgIHNpbmdsZV9sb2NhbGVbMV0gPSAnXDAnOworLQl9CistICAgICAgZWxzZQorLQl7CistCSAgY2hhciAqY3AgPSBzaW5nbGVfbG9jYWxlOworLQkgIHdoaWxlIChjYXRlZ29yeXZhbHVlWzBdICE9ICdcMCcgJiYgY2F0ZWdvcnl2YWx1ZVswXSAhPSAnOicpCistCSAgICAqY3ArKyA9ICpjYXRlZ29yeXZhbHVlKys7CistCSAgKmNwID0gJ1wwJzsKKy0JfQorLQorLSAgICAgIC8qIElmIHRoZSBjdXJyZW50IGxvY2FsZSB2YWx1ZSBpcyBDIChvciBQT1NJWCkgd2UgZG9uJ3QgbG9hZCBhCistCSBkb21haW4uICBSZXR1cm4gdGhlIE1TR0lELiAgKi8KKy0gICAgICBpZiAoc3RyY21wIChzaW5nbGVfbG9jYWxlLCAiQyIpID09IDAKKy0JICB8fCBzdHJjbXAgKHNpbmdsZV9sb2NhbGUsICJQT1NJWCIpID09IDApCistCXsKKy0JICBGUkVFX0JMT0NLUyAoYmxvY2tfbGlzdCk7CistCSAgX19zZXRfZXJybm8gKHNhdmVkX2Vycm5vKTsKKy0JICByZXR1cm4gKGNoYXIgKikgbXNnaWQ7CistCX0KKy0KKy0KKy0gICAgICAvKiBGaW5kIHN0cnVjdHVyZSBkZXNjcmliaW5nIHRoZSBtZXNzYWdlIGNhdGFsb2cgbWF0Y2hpbmcgdGhlCistCSBET01BSU5OQU1FIGFuZCBDQVRFR09SWS4gICovCistICAgICAgZG9tYWluID0gX25sX2ZpbmRfZG9tYWluIChkaXJuYW1lLCBzaW5nbGVfbG9jYWxlLCB4ZG9tYWlubmFtZSk7CistCistICAgICAgaWYgKGRvbWFpbiAhPSBOVUxMKQorLQl7CistCSAgcmV0dmFsID0gZmluZF9tc2cgKGRvbWFpbiwgbXNnaWQpOworLQorLQkgIGlmIChyZXR2YWwgPT0gTlVMTCkKKy0JICAgIHsKKy0JICAgICAgaW50IGNudDsKKy0KKy0JICAgICAgZm9yIChjbnQgPSAwOyBkb21haW4tPnN1Y2Nlc3NvcltjbnRdICE9IE5VTEw7ICsrY250KQorLQkJeworLQkJICByZXR2YWwgPSBmaW5kX21zZyAoZG9tYWluLT5zdWNjZXNzb3JbY250XSwgbXNnaWQpOworLQorLQkJICBpZiAocmV0dmFsICE9IE5VTEwpCistCQkgICAgYnJlYWs7CistCQl9CistCSAgICB9CistCistCSAgaWYgKHJldHZhbCAhPSBOVUxMKQorLQkgICAgeworLQkgICAgICBGUkVFX0JMT0NLUyAoYmxvY2tfbGlzdCk7CistCSAgICAgIF9fc2V0X2Vycm5vIChzYXZlZF9lcnJubyk7CistCSAgICAgIHJldHVybiByZXR2YWw7CistCSAgICB9CistCX0KKy0gICAgfQorLSAgLyogTk9UUkVBQ0hFRCAqLworLX0KKy0KKy0jaWZkZWYgX0xJQkMKKy0vKiBBbGlhcyBmb3IgZnVuY3Rpb24gbmFtZSBpbiBHTlUgQyBMaWJyYXJ5LiAgKi8KKy13ZWFrX2FsaWFzIChfX2RjZ2V0dGV4dCwgZGNnZXR0ZXh0KTsKKy0jZW5kaWYKKy0KKy0KKy1zdGF0aWMgY2hhciAqCistZmluZF9tc2cgKGRvbWFpbl9maWxlLCBtc2dpZCkKKy0gICAgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbl9maWxlOworLSAgICAgY29uc3QgY2hhciAqbXNnaWQ7CisteworLSAgc2l6ZV90IHRvcCwgYWN0LCBib3R0b207CistICBzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqZG9tYWluOworLQorLSAgaWYgKGRvbWFpbl9maWxlLT5kZWNpZGVkID09IDApCistICAgIF9ubF9sb2FkX2RvbWFpbiAoZG9tYWluX2ZpbGUpOworLQorLSAgaWYgKGRvbWFpbl9maWxlLT5kYXRhID09IE5VTEwpCistICAgIHJldHVybiBOVUxMOworLQorLSAgZG9tYWluID0gKHN0cnVjdCBsb2FkZWRfZG9tYWluICopIGRvbWFpbl9maWxlLT5kYXRhOworLQorLSAgLyogTG9jYXRlIHRoZSBNU0dJRCBhbmQgaXRzIHRyYW5zbGF0aW9uLiAgKi8KKy0gIGlmIChkb21haW4tPmhhc2hfc2l6ZSA+IDIgJiYgZG9tYWluLT5oYXNoX3RhYiAhPSBOVUxMKQorLSAgICB7CistICAgICAgLyogVXNlIHRoZSBoYXNoaW5nIHRhYmxlLiAgKi8KKy0gICAgICBubHNfdWludDMyIGxlbiA9IHN0cmxlbiAobXNnaWQpOworLSAgICAgIG5sc191aW50MzIgaGFzaF92YWwgPSBoYXNoX3N0cmluZyAobXNnaWQpOworLSAgICAgIG5sc191aW50MzIgaWR4ID0gaGFzaF92YWwgJSBkb21haW4tPmhhc2hfc2l6ZTsKKy0gICAgICBubHNfdWludDMyIGluY3IgPSAxICsgKGhhc2hfdmFsICUgKGRvbWFpbi0+aGFzaF9zaXplIC0gMikpOworLSAgICAgIG5sc191aW50MzIgbnN0ciA9IFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkb21haW4tPmhhc2hfdGFiW2lkeF0pOworLQorLSAgICAgIGlmIChuc3RyID09IDApCistCS8qIEhhc2ggdGFibGUgZW50cnkgaXMgZW1wdHkuICAqLworLQlyZXR1cm4gTlVMTDsKKy0KKy0gICAgICBpZiAoVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRvbWFpbi0+b3JpZ190YWJbbnN0ciAtIDFdLmxlbmd0aCkgPT0gbGVuCistCSAgJiYgc3RyY21wIChtc2dpZCwKKy0JCSAgICAgZG9tYWluLT5kYXRhICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCistCQkJCSAgICAgICBkb21haW4tPm9yaWdfdGFiW25zdHIgLSAxXS5vZmZzZXQpKSA9PSAwKQorLQlyZXR1cm4gKGNoYXIgKikgZG9tYWluLT5kYXRhICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCistCQkJCQkgIGRvbWFpbi0+dHJhbnNfdGFiW25zdHIgLSAxXS5vZmZzZXQpOworLQorLSAgICAgIHdoaWxlICgxKQorLQl7CistCSAgaWYgKGlkeCA+PSBkb21haW4tPmhhc2hfc2l6ZSAtIGluY3IpCistCSAgICBpZHggLT0gZG9tYWluLT5oYXNoX3NpemUgLSBpbmNyOworLQkgIGVsc2UKKy0JICAgIGlkeCArPSBpbmNyOworLQorLQkgIG5zdHIgPSBXIChkb21haW4tPm11c3Rfc3dhcCwgZG9tYWluLT5oYXNoX3RhYltpZHhdKTsKKy0JICBpZiAobnN0ciA9PSAwKQorLQkgICAgLyogSGFzaCB0YWJsZSBlbnRyeSBpcyBlbXB0eS4gICovCistCSAgICByZXR1cm4gTlVMTDsKKy0KKy0JICBpZiAoVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRvbWFpbi0+b3JpZ190YWJbbnN0ciAtIDFdLmxlbmd0aCkgPT0gbGVuCistCSAgICAgICYmIHN0cmNtcCAobXNnaWQsCistCQkJIGRvbWFpbi0+ZGF0YSArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLAorLQkJCQkJICAgZG9tYWluLT5vcmlnX3RhYltuc3RyIC0gMV0ub2Zmc2V0KSkKKy0JICAgICAgICAgPT0gMCkKKy0JICAgIHJldHVybiAoY2hhciAqKSBkb21haW4tPmRhdGEKKy0JICAgICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZG9tYWluLT50cmFuc190YWJbbnN0ciAtIDFdLm9mZnNldCk7CistCX0KKy0gICAgICAvKiBOT1RSRUFDSEVEICovCistICAgIH0KKy0KKy0gIC8qIE5vdyB3ZSB0cnkgdGhlIGRlZmF1bHQgbWV0aG9kOiAgYmluYXJ5IHNlYXJjaCBpbiB0aGUgc29ydGVkCistICAgICBhcnJheSBvZiBtZXNzYWdlcy4gICovCistICBib3R0b20gPSAwOworLSAgdG9wID0gZG9tYWluLT5uc3RyaW5nczsKKy0gIHdoaWxlIChib3R0b20gPCB0b3ApCistICAgIHsKKy0gICAgICBpbnQgY21wX3ZhbDsKKy0KKy0gICAgICBhY3QgPSAoYm90dG9tICsgdG9wKSAvIDI7CistICAgICAgY21wX3ZhbCA9IHN0cmNtcCAobXNnaWQsIGRvbWFpbi0+ZGF0YQorLQkJCSAgICAgICArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLAorLQkJCQkgICAgZG9tYWluLT5vcmlnX3RhYlthY3RdLm9mZnNldCkpOworLSAgICAgIGlmIChjbXBfdmFsIDwgMCkKKy0JdG9wID0gYWN0OworLSAgICAgIGVsc2UgaWYgKGNtcF92YWwgPiAwKQorLQlib3R0b20gPSBhY3QgKyAxOworLSAgICAgIGVsc2UKKy0JYnJlYWs7CistICAgIH0KKy0KKy0gIC8qIElmIGFuIHRyYW5zbGF0aW9uIGlzIGZvdW5kIHJldHVybiB0aGlzLiAgKi8KKy0gIHJldHVybiBib3R0b20gPj0gdG9wID8gTlVMTCA6IChjaGFyICopIGRvbWFpbi0+ZGF0YQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwKKy0JCQkJICAgICBkb21haW4tPnRyYW5zX3RhYlthY3RdLm9mZnNldCk7CistfQorLQorLQorLS8qIFJldHVybiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgbG9jYWxlIENBVEVHT1JZLiAgKi8KKy1zdGF0aWMgY29uc3QgY2hhciAqCistY2F0ZWdvcnlfdG9fbmFtZSAoY2F0ZWdvcnkpCistICAgICBpbnQgY2F0ZWdvcnk7CisteworLSAgY29uc3QgY2hhciAqcmV0dmFsOworLQorLSAgc3dpdGNoIChjYXRlZ29yeSkKKy0gIHsKKy0jaWZkZWYgTENfQ09MTEFURQorLSAgY2FzZSBMQ19DT0xMQVRFOgorLSAgICByZXR2YWwgPSAiTENfQ09MTEFURSI7CistICAgIGJyZWFrOworLSNlbmRpZgorLSNpZmRlZiBMQ19DVFlQRQorLSAgY2FzZSBMQ19DVFlQRToKKy0gICAgcmV0dmFsID0gIkxDX0NUWVBFIjsKKy0gICAgYnJlYWs7CistI2VuZGlmCistI2lmZGVmIExDX01PTkVUQVJZCistICBjYXNlIExDX01PTkVUQVJZOgorLSAgICByZXR2YWwgPSAiTENfTU9ORVRBUlkiOworLSAgICBicmVhazsKKy0jZW5kaWYKKy0jaWZkZWYgTENfTlVNRVJJQworLSAgY2FzZSBMQ19OVU1FUklDOgorLSAgICByZXR2YWwgPSAiTENfTlVNRVJJQyI7CistICAgIGJyZWFrOworLSNlbmRpZgorLSNpZmRlZiBMQ19USU1FCistICBjYXNlIExDX1RJTUU6CistICAgIHJldHZhbCA9ICJMQ19USU1FIjsKKy0gICAgYnJlYWs7CistI2VuZGlmCistI2lmZGVmIExDX01FU1NBR0VTCistICBjYXNlIExDX01FU1NBR0VTOgorLSAgICByZXR2YWwgPSAiTENfTUVTU0FHRVMiOworLSAgICBicmVhazsKKy0jZW5kaWYKKy0jaWZkZWYgTENfUkVTUE9OU0UKKy0gIGNhc2UgTENfUkVTUE9OU0U6CistICAgIHJldHZhbCA9ICJMQ19SRVNQT05TRSI7CistICAgIGJyZWFrOworLSNlbmRpZgorLSNpZmRlZiBMQ19BTEwKKy0gIGNhc2UgTENfQUxMOgorLSAgICAvKiBUaGlzIG1pZ2h0IG5vdCBtYWtlIHNlbnNlIGJ1dCBpcyBwZXJoYXBzIGJldHRlciB0aGFuIGFueSBvdGhlcgorLSAgICAgICB2YWx1ZS4gICovCistICAgIHJldHZhbCA9ICJMQ19BTEwiOworLSAgICBicmVhazsKKy0jZW5kaWYKKy0gIGRlZmF1bHQ6CistICAgIC8qIElmIHlvdSBoYXZlIGEgYmV0dGVyIGlkZWEgZm9yIGEgZGVmYXVsdCB2YWx1ZSBsZXQgbWUga25vdy4gICovCistICAgIHJldHZhbCA9ICJMQ19YWFgiOworLSAgfQorLQorLSAgcmV0dXJuIHJldHZhbDsKKy19CistCistLyogR3Vlc3MgdmFsdWUgb2YgY3VycmVudCBsb2NhbGUgZnJvbSB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLiAgKi8KKy1zdGF0aWMgY29uc3QgY2hhciAqCistZ3Vlc3NfY2F0ZWdvcnlfdmFsdWUgKGNhdGVnb3J5LCBjYXRlZ29yeW5hbWUpCistICAgICBpbnQgY2F0ZWdvcnk7CistICAgICBjb25zdCBjaGFyICpjYXRlZ29yeW5hbWU7CisteworLSAgY29uc3QgY2hhciAqcmV0dmFsOworLQorLSAgLyogVGhlIGhpZ2hlc3QgcHJpb3JpdHkgdmFsdWUgaXMgdGhlIGBMQU5HVUFHRScgZW52aXJvbm1lbnQKKy0gICAgIHZhcmlhYmxlLiAgVGhpcyBpcyBhIEdOVSBleHRlbnNpb24uICAqLworLSAgcmV0dmFsID0gZ2V0ZW52ICgiTEFOR1VBR0UiKTsKKy0gIGlmIChyZXR2YWwgIT0gTlVMTCAmJiByZXR2YWxbMF0gIT0gJ1wwJykKKy0gICAgcmV0dXJuIHJldHZhbDsKKy0KKy0gIC8qIGBMQU5HVUFHRScgaXMgbm90IHNldC4gIFNvIHdlIGhhdmUgdG8gcHJvY2VlZCB3aXRoIHRoZSBQT1NJWAorLSAgICAgbWV0aG9kcyBvZiBsb29raW5nIHRvIGBMQ19BTEwnLCBgTENfeHh4JywgYW5kIGBMQU5HJy4gIE9uIHNvbWUKKy0gICAgIHN5c3RlbXMgdGhpcyBjYW4gYmUgZG9uZSBieSB0aGUgYHNldGxvY2FsZScgZnVuY3Rpb24gaXRzZWxmLiAgKi8KKy0jaWYgZGVmaW5lZCBIQVZFX1NFVExPQ0FMRSAmJiBkZWZpbmVkIEhBVkVfTENfTUVTU0FHRVMgJiYgZGVmaW5lZCBIQVZFX0xPQ0FMRV9OVUxMCistICByZXR1cm4gc2V0bG9jYWxlIChjYXRlZ29yeSwgTlVMTCk7CistI2Vsc2UKKy0gIC8qIFNldHRpbmcgb2YgTENfQUxMIG92ZXJ3cml0ZXMgYWxsIG90aGVyLiAgKi8KKy0gIHJldHZhbCA9IGdldGVudiAoIkxDX0FMTCIpOworLSAgaWYgKHJldHZhbCAhPSBOVUxMICYmIHJldHZhbFswXSAhPSAnXDAnKQorLSAgICByZXR1cm4gcmV0dmFsOworLQorLSAgLyogTmV4dCBjb21lcyB0aGUgbmFtZSBvZiB0aGUgZGVzaXJlZCBjYXRlZ29yeS4gICovCistICByZXR2YWwgPSBnZXRlbnYgKGNhdGVnb3J5bmFtZSk7CistICBpZiAocmV0dmFsICE9IE5VTEwgJiYgcmV0dmFsWzBdICE9ICdcMCcpCistICAgIHJldHVybiByZXR2YWw7CistCistICAvKiBMYXN0IHBvc3NpYmlsaXR5IGlzIHRoZSBMQU5HIGVudmlyb25tZW50IHZhcmlhYmxlLiAgKi8KKy0gIHJldHZhbCA9IGdldGVudiAoIkxBTkciKTsKKy0gIGlmIChyZXR2YWwgIT0gTlVMTCAmJiByZXR2YWxbMF0gIT0gJ1wwJykKKy0gICAgcmV0dXJuIHJldHZhbDsKKy0KKy0gIC8qIFdlIHVzZSBDIGFzIHRoZSBkZWZhdWx0IGRvbWFpbi4gIFBPU0lYIHNheXMgdGhpcyBpcyBpbXBsZW1lbnRhdGlvbgorLSAgICAgZGVmaW5lZC4gICovCistICByZXR1cm4gIkMiOworLSNlbmRpZgorLX0KKy0KKy0vKiBAQCBiZWdpbiBvZiBlcGlsb2cgQEAgKi8KKy0KKy0vKiBXZSBkb24ndCB3YW50IGxpYmludGwuYSB0byBkZXBlbmQgb24gYW55IG90aGVyIGxpYnJhcnkuICBTbyB3ZQorLSAgIGF2b2lkIHRoZSBub24tc3RhbmRhcmQgZnVuY3Rpb24gc3RwY3B5LiAgSW4gR05VIEMgTGlicmFyeSB0aGlzCistICAgZnVuY3Rpb24gaXMgYXZhaWxhYmxlLCB0aG91Z2guICBBbHNvIGFsbG93IHRoZSBzeW1ib2wgSEFWRV9TVFBDUFkKKy0gICB0byBiZSBkZWZpbmVkLiAgKi8KKy0jaWYgIV9MSUJDICYmICFIQVZFX1NUUENQWQorLXN0YXRpYyBjaGFyICoKKy1zdHBjcHkgKGRlc3QsIHNyYykKKy0gICAgIGNoYXIgKmRlc3Q7CistICAgICBjb25zdCBjaGFyICpzcmM7CisteworLSAgd2hpbGUgKCgqZGVzdCsrID0gKnNyYysrKSAhPSAnXDAnKQorLSAgICAvKiBEbyBub3RoaW5nLiAqLyA7CistICByZXR1cm4gZGVzdCAtIDE7CistfQorLSNlbmRpZgorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvZGdldHRleHQuYyBscnpzei0wLjEyLjIwL2ludGwvZGdldHRleHQuYworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9kZ2V0dGV4dC5jCTE5OTgtMDQtMjYgMTQ6MjA6NTIuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2RnZXR0ZXh0LmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDU5ICswLDAgQEAKKy0vKiBkZ2V0dGV4dC5jIC0tIGltcGxlbWVudGF0aW9uIG9mIHRoZSBkZ2V0dGV4dCgzKSBmdW5jdGlvbgorLSAgIENvcHlyaWdodCAoQykgMTk5NSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistCistVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy1pdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLXRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy1hbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy1UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy1idXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLU1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy1HTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLVlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy1Gb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKy0KKy0jaWZkZWYgSEFWRV9DT05GSUdfSAorLSMgaW5jbHVkZSA8Y29uZmlnLmg+CistI2VuZGlmCistCistI2lmIGRlZmluZWQgSEFWRV9MT0NBTEVfSCB8fCBkZWZpbmVkIF9MSUJDCistIyBpbmNsdWRlIDxsb2NhbGUuaD4KKy0jZW5kaWYKKy0KKy0jaWZkZWYgX0xJQkMKKy0jIGluY2x1ZGUgPGxpYmludGwuaD4KKy0jZWxzZQorLSMgaW5jbHVkZSAibGliZ2V0dGV4dC5oIgorLSNlbmRpZgorLQorLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKy0KKy0vKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGV5IG11c3Qgbm90IGNsYXNoCistICAgd2l0aCBleGlzdGluZyBuYW1lcyBhbmQgdGhleSBzaG91bGQgZm9sbG93IEFOU0kgQy4gIEJ1dCB0aGlzIHNvdXJjZQorLSAgIGNvZGUgaXMgYWxzbyB1c2VkIGluIEdOVSBDIExpYnJhcnkgd2hlcmUgdGhlIG5hbWVzIGhhdmUgYSBfXworLSAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCistI2lmZGVmIF9MSUJDCistIyBkZWZpbmUgREdFVFRFWFQgX19kZ2V0dGV4dAorLSMgZGVmaW5lIERDR0VUVEVYVCBfX2RjZ2V0dGV4dAorLSNlbHNlCistIyBkZWZpbmUgREdFVFRFWFQgZGdldHRleHRfXworLSMgZGVmaW5lIERDR0VUVEVYVCBkY2dldHRleHRfXworLSNlbmRpZgorLQorLS8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIG9mIHRoZSBjdXJyZW50CistICAgTENfTUVTU0FHRVMgbG9jYWxlLiAgKi8KKy1jaGFyICoKKy1ER0VUVEVYVCAoZG9tYWlubmFtZSwgbXNnaWQpCistICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOworLSAgICAgY29uc3QgY2hhciAqbXNnaWQ7CisteworLSAgcmV0dXJuIERDR0VUVEVYVCAoZG9tYWlubmFtZSwgbXNnaWQsIExDX01FU1NBR0VTKTsKKy19CistCistI2lmZGVmIF9MSUJDCistLyogQWxpYXMgZm9yIGZ1bmN0aW9uIG5hbWUgaW4gR05VIEMgTGlicmFyeS4gICovCistd2Vha19hbGlhcyAoX19kZ2V0dGV4dCwgZGdldHRleHQpOworLSNlbmRpZgorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvZXhwbG9kZW5hbWUuYyBscnpzei0wLjEyLjIwL2ludGwvZXhwbG9kZW5hbWUuYworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9leHBsb2RlbmFtZS5jCTE5OTgtMDQtMjYgMTQ6MjI6MzcuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2V4cGxvZGVuYW1lLmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDE4MSArMCwwIEBACistLyogQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLSAgIENvbnRyaWJ1dGVkIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJzaW9uLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistCistICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworLQorLSNpZmRlZiBIQVZFX0NPTkZJR19ICistIyBpbmNsdWRlIDxjb25maWcuaD4KKy0jZW5kaWYKKy0KKy0jaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPHN0cmluZy5oPgorLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0KKy0jaW5jbHVkZSAibG9hZGluZm8uaCIKKy0KKy0vKiBPbiBzb21lIHN0cmFuZ2Ugc3lzdGVtcyBzdGlsbCBubyBkZWZpbml0aW9uIG9mIE5VTEwgaXMgZm91bmQuICBTaWdoISAgKi8KKy0jaWZuZGVmIE5VTEwKKy0jIGlmIGRlZmluZWQgX19TVERDX18gJiYgX19TVERDX18KKy0jICBkZWZpbmUgTlVMTCAoKHZvaWQgKikgMCkKKy0jIGVsc2UKKy0jICBkZWZpbmUgTlVMTCAwCistIyBlbmRpZgorLSNlbmRpZgorLQorLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKy0KKy1pbnQKKy1fbmxfZXhwbG9kZV9uYW1lIChuYW1lLCBsYW5ndWFnZSwgbW9kaWZpZXIsIHRlcnJpdG9yeSwgY29kZXNldCwKKy0JCSAgbm9ybWFsaXplZF9jb2Rlc2V0LCBzcGVjaWFsLCBzcG9uc29yLCByZXZpc2lvbikKKy0gICAgIGNoYXIgKm5hbWU7CistICAgICBjb25zdCBjaGFyICoqbGFuZ3VhZ2U7CistICAgICBjb25zdCBjaGFyICoqbW9kaWZpZXI7CistICAgICBjb25zdCBjaGFyICoqdGVycml0b3J5OworLSAgICAgY29uc3QgY2hhciAqKmNvZGVzZXQ7CistICAgICBjb25zdCBjaGFyICoqbm9ybWFsaXplZF9jb2Rlc2V0OworLSAgICAgY29uc3QgY2hhciAqKnNwZWNpYWw7CistICAgICBjb25zdCBjaGFyICoqc3BvbnNvcjsKKy0gICAgIGNvbnN0IGNoYXIgKipyZXZpc2lvbjsKKy17CistICBlbnVtIHsgdW5kZWNpZGVkLCB4cGcsIGNlbiB9IHN5bnRheDsKKy0gIGNoYXIgKmNwOworLSAgaW50IG1hc2s7CistCistICAqbW9kaWZpZXIgPSBOVUxMOworLSAgKnRlcnJpdG9yeSA9IE5VTEw7CistICAqY29kZXNldCA9IE5VTEw7CistICAqbm9ybWFsaXplZF9jb2Rlc2V0ID0gTlVMTDsKKy0gICpzcGVjaWFsID0gTlVMTDsKKy0gICpzcG9uc29yID0gTlVMTDsKKy0gICpyZXZpc2lvbiA9IE5VTEw7CistCistICAvKiBOb3cgd2UgZGV0ZXJtaW5lIHRoZSBzaW5nbGUgcGFydHMgb2YgdGhlIGxvY2FsZSBuYW1lLiAgRmlyc3QKKy0gICAgIGxvb2sgZm9yIHRoZSBsYW5ndWFnZS4gIFRlcm1pbmF0aW9uIHN5bWJvbHMgYXJlIGBfJyBhbmQgYEAnIGlmCistICAgICB3ZSB1c2UgWFBHNCBzdHlsZSwgYW5kIGBfJywgYCsnLCBhbmQgYCwnIGlmIHdlIHVzZSBDRU4gc3ludGF4LiAgKi8KKy0gIG1hc2sgPSAwOworLSAgc3ludGF4ID0gdW5kZWNpZGVkOworLSAgKmxhbmd1YWdlID0gY3AgPSBuYW1lOworLSAgd2hpbGUgKGNwWzBdICE9ICdcMCcgJiYgY3BbMF0gIT0gJ18nICYmIGNwWzBdICE9ICdAJworLQkgJiYgY3BbMF0gIT0gJysnICYmIGNwWzBdICE9ICcsJykKKy0gICAgKytjcDsKKy0KKy0gIGlmICgqbGFuZ3VhZ2UgPT0gY3ApCistICAgIC8qIFRoaXMgZG9lcyBub3QgbWFrZSBzZW5zZTogbGFuZ3VhZ2UgaGFzIHRvIGJlIHNwZWNpZmllZC4gIFVzZQorLSAgICAgICB0aGlzIGVudHJ5IGFzIGl0IGlzIHdpdGhvdXQgZXhwbG9kaW5nLiAgUGVyaGFwcyBpdCBpcyBhbiBhbGlhcy4gICovCistICAgIGNwID0gc3RyY2hyICgqbGFuZ3VhZ2UsICdcMCcpOworLSAgZWxzZSBpZiAoY3BbMF0gPT0gJ18nKQorLSAgICB7CistICAgICAgLyogTmV4dCBpcyB0aGUgdGVycml0b3J5LiAgKi8KKy0gICAgICBjcFswXSA9ICdcMCc7CistICAgICAgKnRlcnJpdG9yeSA9ICsrY3A7CistCistICAgICAgd2hpbGUgKGNwWzBdICE9ICdcMCcgJiYgY3BbMF0gIT0gJy4nICYmIGNwWzBdICE9ICdAJworLQkgICAgICYmIGNwWzBdICE9ICcrJyAmJiBjcFswXSAhPSAnLCcgJiYgY3BbMF0gIT0gJ18nKQorLQkrK2NwOworLQorLSAgICAgIG1hc2sgfD0gVEVSUklUT1JZOworLQorLSAgICAgIGlmIChjcFswXSA9PSAnLicpCistCXsKKy0JICAvKiBOZXh0IGlzIHRoZSBjb2Rlc2V0LiAgKi8KKy0JICBzeW50YXggPSB4cGc7CistCSAgY3BbMF0gPSAnXDAnOworLQkgICpjb2Rlc2V0ID0gKytjcDsKKy0KKy0JICB3aGlsZSAoY3BbMF0gIT0gJ1wwJyAmJiBjcFswXSAhPSAnQCcpCistCSAgICArK2NwOworLQorLQkgIG1hc2sgfD0gWFBHX0NPREVTRVQ7CistCistCSAgaWYgKCpjb2Rlc2V0ICE9IGNwICYmICgqY29kZXNldClbMF0gIT0gJ1wwJykKKy0JICAgIHsKKy0JICAgICAgKm5vcm1hbGl6ZWRfY29kZXNldCA9IF9ubF9ub3JtYWxpemVfY29kZXNldCAoKmNvZGVzZXQsCistCQkJCQkJCSAgIGNwIC0gKmNvZGVzZXQpOworLQkgICAgICBpZiAoc3RyY21wICgqY29kZXNldCwgKm5vcm1hbGl6ZWRfY29kZXNldCkgPT0gMCkKKy0JCWZyZWUgKChjaGFyICopICpub3JtYWxpemVkX2NvZGVzZXQpOworLQkgICAgICBlbHNlCistCQltYXNrIHw9IFhQR19OT1JNX0NPREVTRVQ7CistCSAgICB9CistCX0KKy0gICAgfQorLQorLSAgaWYgKGNwWzBdID09ICdAJyB8fCAoc3ludGF4ICE9IHhwZyAmJiBjcFswXSA9PSAnKycpKQorLSAgICB7CistICAgICAgLyogTmV4dCBpcyB0aGUgbW9kaWZpZXIuICAqLworLSAgICAgIHN5bnRheCA9IGNwWzBdID09ICdAJyA/IHhwZyA6IGNlbjsKKy0gICAgICBjcFswXSA9ICdcMCc7CistICAgICAgKm1vZGlmaWVyID0gKytjcDsKKy0KKy0gICAgICB3aGlsZSAoc3ludGF4ID09IGNlbiAmJiBjcFswXSAhPSAnXDAnICYmIGNwWzBdICE9ICcrJworLQkgICAgICYmIGNwWzBdICE9ICcsJyAmJiBjcFswXSAhPSAnXycpCistCSsrY3A7CistCistICAgICAgbWFzayB8PSBYUEdfTU9ESUZJRVIgfCBDRU5fQVVESUVOQ0U7CistICAgIH0KKy0KKy0gIGlmIChzeW50YXggIT0geHBnICYmIChjcFswXSA9PSAnKycgfHwgY3BbMF0gPT0gJywnIHx8IGNwWzBdID09ICdfJykpCistICAgIHsKKy0gICAgICBzeW50YXggPSBjZW47CistCistICAgICAgaWYgKGNwWzBdID09ICcrJykKKy0JeworLSAJICAvKiBOZXh0IGlzIHNwZWNpYWwgYXBwbGljYXRpb24gKENFTiBzeW50YXgpLiAgKi8KKy0JICBjcFswXSA9ICdcMCc7CistCSAgKnNwZWNpYWwgPSArK2NwOworLQorLQkgIHdoaWxlIChjcFswXSAhPSAnXDAnICYmIGNwWzBdICE9ICcsJyAmJiBjcFswXSAhPSAnXycpCistCSAgICArK2NwOworLQorLQkgIG1hc2sgfD0gQ0VOX1NQRUNJQUw7CistCX0KKy0KKy0gICAgICBpZiAoY3BbMF0gPT0gJywnKQorLQl7CistIAkgIC8qIE5leHQgaXMgc3BvbnNvciAoQ0VOIHN5bnRheCkuICAqLworLQkgIGNwWzBdID0gJ1wwJzsKKy0JICAqc3BvbnNvciA9ICsrY3A7CistCistCSAgd2hpbGUgKGNwWzBdICE9ICdcMCcgJiYgY3BbMF0gIT0gJ18nKQorLQkgICAgKytjcDsKKy0KKy0JICBtYXNrIHw9IENFTl9TUE9OU09SOworLQl9CistCistICAgICAgaWYgKGNwWzBdID09ICdfJykKKy0JeworLSAJICAvKiBOZXh0IGlzIHJldmlzaW9uIChDRU4gc3ludGF4KS4gICovCistCSAgY3BbMF0gPSAnXDAnOworLQkgICpyZXZpc2lvbiA9ICsrY3A7CistCistCSAgbWFzayB8PSBDRU5fUkVWSVNJT047CistCX0KKy0gICAgfQorLQorLSAgLyogRm9yIENFTiBzeW50YXggdmFsdWVzIGl0IG1pZ2h0IGJlIGltcG9ydGFudCB0byBoYXZlIHRoZQorLSAgICAgc2VwYXJhdG9yIGNoYXJhY3RlciBpbiB0aGUgZmlsZSBuYW1lLCBub3QgZm9yIFhQRyBzeW50YXguICAqLworLSAgaWYgKHN5bnRheCA9PSB4cGcpCistICAgIHsKKy0gICAgICBpZiAoKnRlcnJpdG9yeSAhPSBOVUxMICYmICgqdGVycml0b3J5KVswXSA9PSAnXDAnKQorLQltYXNrICY9IH5URVJSSVRPUlk7CistCistICAgICAgaWYgKCpjb2Rlc2V0ICE9IE5VTEwgJiYgKCpjb2Rlc2V0KVswXSA9PSAnXDAnKQorLQltYXNrICY9IH5YUEdfQ09ERVNFVDsKKy0KKy0gICAgICBpZiAoKm1vZGlmaWVyICE9IE5VTEwgJiYgKCptb2RpZmllcilbMF0gPT0gJ1wwJykKKy0JbWFzayAmPSB+WFBHX01PRElGSUVSOworLSAgICB9CistCistICByZXR1cm4gbWFzazsKKy19CitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9maW5kZG9tYWluLmMgbHJ6c3otMC4xMi4yMC9pbnRsL2ZpbmRkb21haW4uYworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9maW5kZG9tYWluLmMJMTk5OC0wNC0yNiAxNDoyMjozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvZmluZGRvbWFpbi5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSwxODkgKzAsMCBAQAorLS8qIEhhbmRsZSBsaXN0IG9mIG5lZWRlZCBtZXNzYWdlIGNhdGFsb2dzCistICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLSAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistI2lmZGVmIEhBVkVfQ09ORklHX0gKKy0jIGluY2x1ZGUgPGNvbmZpZy5oPgorLSNlbmRpZgorLQorLSNpbmNsdWRlIDxjdHlwZS5oPgorLSNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxzdGRpby5oPgorLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0KKy0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBfTElCQworLSMgaW5jbHVkZSA8c3RkbGliLmg+CistI2Vsc2UKKy0jIGlmZGVmIEhBVkVfTUFMTE9DX0gKKy0jICBpbmNsdWRlIDxtYWxsb2MuaD4KKy0jIGVsc2UKKy12b2lkIGZyZWUgKCk7CistIyBlbmRpZgorLSNlbmRpZgorLQorLSNpZiBkZWZpbmVkIEhBVkVfU1RSSU5HX0ggfHwgZGVmaW5lZCBfTElCQworLSMgaW5jbHVkZSA8c3RyaW5nLmg+CistI2Vsc2UKKy0jIGluY2x1ZGUgPHN0cmluZ3MuaD4KKy0jIGlmbmRlZiBtZW1jcHkKKy0jICBkZWZpbmUgbWVtY3B5KERzdCwgU3JjLCBOdW0pIGJjb3B5IChTcmMsIERzdCwgTnVtKQorLSMgZW5kaWYKKy0jZW5kaWYKKy0jaWYgIUhBVkVfU1RSQ0hSICYmICFkZWZpbmVkIF9MSUJDCistIyBpZm5kZWYgc3RyY2hyCistIyAgZGVmaW5lIHN0cmNociBpbmRleAorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaWYgZGVmaW5lZCBIQVZFX1VOSVNURF9IIHx8IGRlZmluZWQgX0xJQkMKKy0jIGluY2x1ZGUgPHVuaXN0ZC5oPgorLSNlbmRpZgorLQorLSNpbmNsdWRlICJnZXR0ZXh0LmgiCistI2luY2x1ZGUgImdldHRleHRQLmgiCistI2lmZGVmIF9MSUJDCistIyBpbmNsdWRlIDxsaWJpbnRsLmg+CistI2Vsc2UKKy0jIGluY2x1ZGUgImxpYmdldHRleHQuaCIKKy0jZW5kaWYKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistLyogTGlzdCBvZiBhbHJlYWR5IGxvYWRlZCBkb21haW5zLiAgKi8KKy1zdGF0aWMgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqX25sX2xvYWRlZF9kb21haW5zOworLQorLQorLS8qIFJldHVybiBhIGRhdGEgc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIG1lc3NhZ2UgY2F0YWxvZyBkZXNjcmliZWQgYnkKKy0gICB0aGUgRE9NQUlOTkFNRSBhbmQgQ0FURUdPUlkgcGFyYW1ldGVycyB3aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnRseQorLSAgIGVzdGFibGlzaGVkIGJpbmRpbmdzLiAgKi8KKy1zdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICoKKy1fbmxfZmluZF9kb21haW4gKGRpcm5hbWUsIGxvY2FsZSwgZG9tYWlubmFtZSkKKy0gICAgIGNvbnN0IGNoYXIgKmRpcm5hbWU7CistICAgICBjaGFyICpsb2NhbGU7CistICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOworLXsKKy0gIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKnJldHZhbDsKKy0gIGNvbnN0IGNoYXIgKmxhbmd1YWdlOworLSAgY29uc3QgY2hhciAqbW9kaWZpZXI7CistICBjb25zdCBjaGFyICp0ZXJyaXRvcnk7CistICBjb25zdCBjaGFyICpjb2Rlc2V0OworLSAgY29uc3QgY2hhciAqbm9ybWFsaXplZF9jb2Rlc2V0OworLSAgY29uc3QgY2hhciAqc3BlY2lhbDsKKy0gIGNvbnN0IGNoYXIgKnNwb25zb3I7CistICBjb25zdCBjaGFyICpyZXZpc2lvbjsKKy0gIGNvbnN0IGNoYXIgKmFsaWFzX3ZhbHVlOworLSAgaW50IG1hc2s7CistCistICAvKiBMT0NBTEUgY2FuIGNvbnNpc3Qgb2YgdXAgdG8gZm91ciByZWNvZ25pemVkIHBhcnRzIGZvciB0aGUgWFBHIHN5bnRheDoKKy0KKy0JCWxhbmd1YWdlW190ZXJyaXRvcnlbLmNvZGVzZXRdXVtAbW9kaWZpZXJdCistCistICAgICBhbmQgc2l4IHBhcnRzIGZvciB0aGUgQ0VOIHN5bnRheDoKKy0KKy0JbGFuZ3VhZ2VbX3RlcnJpdG9yeV1bK2F1ZGllbmNlXVsrc3BlY2lhbF1bLFtzcG9uc29yXVtfcmV2aXNpb25dXQorLQorLSAgICAgQmVzaWRlIHRoZSBmaXJzdCBhbGwgb2YgdGhlbSBhcmUgYWxsb3dlZCB0byBiZSBtaXNzaW5nLiAgSWYgdGhlCistICAgICBmdWxsIHNwZWNpZmllZCBsb2NhbGUgaXMgbm90IGZvdW5kLCB0aGUgbGVzcyBzcGVjaWZpYyBvbmUgYXJlCistICAgICBsb29rZWQgZm9yLiAgVGhlIHZhcmlvdXMgcGFydCB3aWxsIGJlIHN0cmlwcGVkIG9mIGFjY29yZGluZyB0bworLSAgICAgdGhlIGZvbGxvd2luZyBvcmRlcjoKKy0JCSgxKSByZXZpc2lvbgorLQkJKDIpIHNwb25zb3IKKy0JCSgzKSBzcGVjaWFsCistCQkoNCkgY29kZXNldAorLQkJKDUpIG5vcm1hbGl6ZWQgY29kZXNldAorLQkJKDYpIHRlcnJpdG9yeQorLQkJKDcpIGF1ZGllbmNlL21vZGlmaWVyCistICAgKi8KKy0KKy0gIC8qIElmIHdlIGhhdmUgYWxyZWFkeSB0ZXN0ZWQgZm9yIHRoaXMgbG9jYWxlIGVudHJ5IHRoZXJlIGhhcyB0bworLSAgICAgYmUgb25lIGRhdGEgc2V0IGluIHRoZSBsaXN0IG9mIGxvYWRlZCBkb21haW5zLiAgKi8KKy0gIHJldHZhbCA9IF9ubF9tYWtlX2wxMG5mbGlzdCAoJl9ubF9sb2FkZWRfZG9tYWlucywgZGlybmFtZSwKKy0JCQkgICAgICAgc3RybGVuIChkaXJuYW1lKSArIDEsIDAsIGxvY2FsZSwgTlVMTCwgTlVMTCwKKy0JCQkgICAgICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgZG9tYWlubmFtZSwgMCk7CistICBpZiAocmV0dmFsICE9IE5VTEwpCistICAgIHsKKy0gICAgICAvKiBXZSBrbm93IHNvbWV0aGluZyBhYm91dCB0aGlzIGxvY2FsZS4gICovCistICAgICAgaW50IGNudDsKKy0KKy0gICAgICBpZiAocmV0dmFsLT5kZWNpZGVkID09IDApCistCV9ubF9sb2FkX2RvbWFpbiAocmV0dmFsKTsKKy0KKy0gICAgICBpZiAocmV0dmFsLT5kYXRhICE9IE5VTEwpCistCXJldHVybiByZXR2YWw7CistCistICAgICAgZm9yIChjbnQgPSAwOyByZXR2YWwtPnN1Y2Nlc3NvcltjbnRdICE9IE5VTEw7ICsrY250KQorLQl7CistCSAgaWYgKHJldHZhbC0+c3VjY2Vzc29yW2NudF0tPmRlY2lkZWQgPT0gMCkKKy0JICAgIF9ubF9sb2FkX2RvbWFpbiAocmV0dmFsLT5zdWNjZXNzb3JbY250XSk7CistCistCSAgaWYgKHJldHZhbC0+c3VjY2Vzc29yW2NudF0tPmRhdGEgIT0gTlVMTCkKKy0JICAgIGJyZWFrOworLQl9CistICAgICAgcmV0dXJuIGNudCA+PSAwID8gcmV0dmFsIDogTlVMTDsKKy0gICAgICAvKiBOT1RSRUFDSEVEICovCistICAgIH0KKy0KKy0gIC8qIFNlZSB3aGV0aGVyIHRoZSBsb2NhbGUgdmFsdWUgaXMgYW4gYWxpYXMuICBJZiB5ZXMgaXRzIHZhbHVlCistICAgICAqb3ZlcndyaXRlcyogdGhlIGFsaWFzIG5hbWUuICBObyB0ZXN0IGZvciB0aGUgb3JpZ2luYWwgdmFsdWUgaXMKKy0gICAgIGRvbmUuICAqLworLSAgYWxpYXNfdmFsdWUgPSBfbmxfZXhwYW5kX2FsaWFzIChsb2NhbGUpOworLSAgaWYgKGFsaWFzX3ZhbHVlICE9IE5VTEwpCistICAgIHsKKy0gICAgICBzaXplX3QgbGVuID0gc3RybGVuIChhbGlhc192YWx1ZSkgKyAxOworLSAgICAgIGxvY2FsZSA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKKy0gICAgICBpZiAobG9jYWxlID09IE5VTEwpCistCXJldHVybiBOVUxMOworLQorLSAgICAgIG1lbWNweSAobG9jYWxlLCBhbGlhc192YWx1ZSwgbGVuKTsKKy0gICAgfQorLQorLSAgLyogTm93IHdlIGRldGVybWluZSB0aGUgc2luZ2xlIHBhcnRzIG9mIHRoZSBsb2NhbGUgbmFtZS4gIEZpcnN0CistICAgICBsb29rIGZvciB0aGUgbGFuZ3VhZ2UuICBUZXJtaW5hdGlvbiBzeW1ib2xzIGFyZSBgXycgYW5kIGBAJyBpZgorLSAgICAgd2UgdXNlIFhQRzQgc3R5bGUsIGFuZCBgXycsIGArJywgYW5kIGAsJyBpZiB3ZSB1c2UgQ0VOIHN5bnRheC4gICovCistICBtYXNrID0gX25sX2V4cGxvZGVfbmFtZSAobG9jYWxlLCAmbGFuZ3VhZ2UsICZtb2RpZmllciwgJnRlcnJpdG9yeSwKKy0JCQkgICAmY29kZXNldCwgJm5vcm1hbGl6ZWRfY29kZXNldCwgJnNwZWNpYWwsCistCQkJICAgJnNwb25zb3IsICZyZXZpc2lvbik7CistCistICAvKiBDcmVhdGUgYWxsIHBvc3NpYmxlIGxvY2FsZSBlbnRyaWVzIHdoaWNoIG1pZ2h0IGJlIGludGVyZXN0ZWQgaW4KKy0gICAgIGdlbmVyYWxpemF0aW9uLiAgKi8KKy0gIHJldHZhbCA9IF9ubF9tYWtlX2wxMG5mbGlzdCAoJl9ubF9sb2FkZWRfZG9tYWlucywgZGlybmFtZSwKKy0JCQkgICAgICAgc3RybGVuIChkaXJuYW1lKSArIDEsIG1hc2ssIGxhbmd1YWdlLCB0ZXJyaXRvcnksCistCQkJICAgICAgIGNvZGVzZXQsIG5vcm1hbGl6ZWRfY29kZXNldCwgbW9kaWZpZXIsIHNwZWNpYWwsCistCQkJICAgICAgIHNwb25zb3IsIHJldmlzaW9uLCBkb21haW5uYW1lLCAxKTsKKy0gIGlmIChyZXR2YWwgPT0gTlVMTCkKKy0gICAgLyogVGhpcyBtZWFucyB3ZSBhcmUgb3V0IG9mIGNvcmUuICAqLworLSAgICByZXR1cm4gTlVMTDsKKy0KKy0gIGlmIChyZXR2YWwtPmRlY2lkZWQgPT0gMCkKKy0gICAgX25sX2xvYWRfZG9tYWluIChyZXR2YWwpOworLSAgaWYgKHJldHZhbC0+ZGF0YSA9PSBOVUxMKQorLSAgICB7CistICAgICAgaW50IGNudDsKKy0gICAgICBmb3IgKGNudCA9IDA7IHJldHZhbC0+c3VjY2Vzc29yW2NudF0gIT0gTlVMTDsgKytjbnQpCistCXsKKy0JICBpZiAocmV0dmFsLT5zdWNjZXNzb3JbY250XS0+ZGVjaWRlZCA9PSAwKQorLQkgICAgX25sX2xvYWRfZG9tYWluIChyZXR2YWwtPnN1Y2Nlc3NvcltjbnRdKTsKKy0JICBpZiAocmV0dmFsLT5zdWNjZXNzb3JbY250XS0+ZGF0YSAhPSBOVUxMKQorLQkgICAgYnJlYWs7CistCX0KKy0gICAgfQorLQorLSAgLyogVGhlIHJvb20gZm9yIGFuIGFsaWFzIHdhcyBkeW5hbWljYWxseSBhbGxvY2F0ZWQuICBGcmVlIGl0IG5vdy4gICovCistICBpZiAoYWxpYXNfdmFsdWUgIT0gTlVMTCkKKy0gICAgZnJlZSAobG9jYWxlKTsKKy0KKy0gIHJldHVybiByZXR2YWw7CistfQorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvZ2V0dGV4dC5jIGxyenN6LTAuMTIuMjAvaW50bC9nZXR0ZXh0LmMKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvZ2V0dGV4dC5jCTE5OTgtMDQtMjYgMTQ6MjI6MzYuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2dldHRleHQuYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsNzAgKzAsMCBAQAorLS8qIEltcGxlbWVudGF0aW9uIG9mIGdldHRleHQoMykgZnVuY3Rpb24KKy0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistCistICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKy0KKy0jaWZkZWYgSEFWRV9DT05GSUdfSAorLSMgaW5jbHVkZSA8Y29uZmlnLmg+CistI2VuZGlmCistCistI2lmZGVmIF9MSUJDCistIyBkZWZpbmUgX19uZWVkX05VTEwKKy0jIGluY2x1ZGUgPHN0ZGRlZi5oPgorLSNlbHNlCistIyBpZmRlZiBTVERDX0hFQURFUlMKKy0jICBpbmNsdWRlIDxzdGRsaWIuaD4JCS8qIEp1c3QgZm9yIE5VTEwuICAqLworLSMgZWxzZQorLSMgIGlmZGVmIEhBVkVfU1RSSU5HX0gKKy0jICAgaW5jbHVkZSA8c3RyaW5nLmg+CistIyAgZWxzZQorLSMgICBkZWZpbmUgTlVMTCAoKHZvaWQgKikgMCkKKy0jICBlbmRpZgorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaWZkZWYgX0xJQkMKKy0jIGluY2x1ZGUgPGxpYmludGwuaD4KKy0jZWxzZQorLSMgaW5jbHVkZSAibGliZ2V0dGV4dC5oIgorLSNlbmRpZgorLQorLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKy0KKy0vKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGV5IG11c3Qgbm90IGNsYXNoCistICAgd2l0aCBleGlzdGluZyBuYW1lcyBhbmQgdGhleSBzaG91bGQgZm9sbG93IEFOU0kgQy4gIEJ1dCB0aGlzIHNvdXJjZQorLSAgIGNvZGUgaXMgYWxzbyB1c2VkIGluIEdOVSBDIExpYnJhcnkgd2hlcmUgdGhlIG5hbWVzIGhhdmUgYSBfXworLSAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCistI2lmZGVmIF9MSUJDCistIyBkZWZpbmUgR0VUVEVYVCBfX2dldHRleHQKKy0jIGRlZmluZSBER0VUVEVYVCBfX2RnZXR0ZXh0CistI2Vsc2UKKy0jIGRlZmluZSBHRVRURVhUIGdldHRleHRfXworLSMgZGVmaW5lIERHRVRURVhUIGRnZXR0ZXh0X18KKy0jZW5kaWYKKy0KKy0vKiBMb29rIHVwIE1TR0lEIGluIHRoZSBjdXJyZW50IGRlZmF1bHQgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudAorLSAgIExDX01FU1NBR0VTIGxvY2FsZS4gIElmIG5vdCBmb3VuZCwgcmV0dXJucyBNU0dJRCBpdHNlbGYgKHRoZSBkZWZhdWx0CistICAgdGV4dCkuICAqLworLWNoYXIgKgorLUdFVFRFWFQgKG1zZ2lkKQorLSAgICAgY29uc3QgY2hhciAqbXNnaWQ7CisteworLSAgcmV0dXJuIERHRVRURVhUIChOVUxMLCBtc2dpZCk7CistfQorLQorLSNpZmRlZiBfTElCQworLS8qIEFsaWFzIGZvciBmdW5jdGlvbiBuYW1lIGluIEdOVSBDIExpYnJhcnkuICAqLworLXdlYWtfYWxpYXMgKF9fZ2V0dGV4dCwgZ2V0dGV4dCk7CistI2VuZGlmCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9nZXR0ZXh0LmggbHJ6c3otMC4xMi4yMC9pbnRsL2dldHRleHQuaAorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9nZXR0ZXh0LmgJMTk5OC0wNC0yNiAxNDoyMjozNS4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvZ2V0dGV4dC5oCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSwxMDUgKzAsMCBAQAorLS8qIEludGVybmFsIGhlYWRlciBmb3IgR05VIGdldHRleHQgaW50ZXJuYXRpb25hbGl6YXRpb24gZnVuY3Rpb25zCistICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworLSAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LAorLSAgIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKy0gICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistI2lmbmRlZiBfR0VUVEVYVF9ICistI2RlZmluZSBfR0VUVEVYVF9IIDEKKy0KKy0jaW5jbHVkZSA8c3RkaW8uaD4KKy0KKy0jaWYgSEFWRV9MSU1JVFNfSCB8fCBfTElCQworLSMgaW5jbHVkZSA8bGltaXRzLmg+CistI2VuZGlmCistCistLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworLQorLS8qIFRoZSBtYWdpYyBudW1iZXIgb2YgdGhlIEdOVSBtZXNzYWdlIGNhdGFsb2cgZm9ybWF0LiAgKi8KKy0jZGVmaW5lIF9NQUdJQyAweDk1MDQxMmRlCistI2RlZmluZSBfTUFHSUNfU1dBUFBFRCAweGRlMTIwNDk1CistCistLyogUmV2aXNpb24gbnVtYmVyIG9mIHRoZSBjdXJyZW50bHkgdXNlZCAubW8gKGJpbmFyeSkgZmlsZSBmb3JtYXQuICAqLworLSNkZWZpbmUgTU9fUkVWSVNJT05fTlVNQkVSIDAKKy0KKy0vKiBUaGUgZm9sbG93aW5nIGNvbnRvcnRpb25zIGFyZSBhbiBhdHRlbXB0IHRvIHVzZSB0aGUgQyBwcmVwcm9jZXNzb3IKKy0gICB0byBkZXRlcm1pbmUgYW4gdW5zaWduZWQgaW50ZWdyYWwgdHlwZSB0aGF0IGlzIDMyIGJpdHMgd2lkZS4gIEFuCistICAgYWx0ZXJuYXRpdmUgYXBwcm9hY2ggaXMgdG8gdXNlIGF1dG9jb25mJ3MgQUNfQ0hFQ0tfU0laRU9GIG1hY3JvLCBidXQKKy0gICBkb2luZyB0aGF0IHdvdWxkIHJlcXVpcmUgdGhhdCB0aGUgY29uZmlndXJlIHNjcmlwdCBjb21waWxlIGFuZCAqcnVuKgorLSAgIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZS4gIExvY2FsbHkgcnVubmluZyBjcm9zcy1jb21waWxlZCBleGVjdXRhYmxlcworLSAgIGlzIHVzdWFsbHkgbm90IHBvc3NpYmxlLiAgKi8KKy0KKy0jaWYgX19TVERDX18KKy0jIGRlZmluZSBVSU5UX01BWF8zMl9CSVRTIDQyOTQ5NjcyOTVVCistI2Vsc2UKKy0jIGRlZmluZSBVSU5UX01BWF8zMl9CSVRTIDB4RkZGRkZGRkYKKy0jZW5kaWYKKy0KKy0vKiBJZiBVSU5UX01BWCBpc24ndCBkZWZpbmVkLCBhc3N1bWUgaXQncyBhIDMyLWJpdCB0eXBlLgorLSAgIFRoaXMgc2hvdWxkIGJlIHZhbGlkIGZvciBhbGwgc3lzdGVtcyBHTlUgY2FyZXMgYWJvdXQgYmVjYXVzZQorLSAgIHRoYXQgZG9lc24ndCBpbmNsdWRlIDE2LWJpdCBzeXN0ZW1zLCBhbmQgb25seSBtb2Rlcm4gc3lzdGVtcworLSAgICh0aGF0IGNlcnRhaW5seSBoYXZlIDxsaW1pdHMuaD4pIGhhdmUgNjQrLWJpdCBpbnRlZ3JhbCB0eXBlcy4gICovCistCistI2lmbmRlZiBVSU5UX01BWAorLSMgZGVmaW5lIFVJTlRfTUFYIFVJTlRfTUFYXzMyX0JJVFMKKy0jZW5kaWYKKy0KKy0jaWYgVUlOVF9NQVggPT0gVUlOVF9NQVhfMzJfQklUUworLXR5cGVkZWYgdW5zaWduZWQgbmxzX3VpbnQzMjsKKy0jZWxzZQorLSMgaWYgVVNIUlRfTUFYID09IFVJTlRfTUFYXzMyX0JJVFMKKy10eXBlZGVmIHVuc2lnbmVkIHNob3J0IG5sc191aW50MzI7CistIyBlbHNlCistIyAgaWYgVUxPTkdfTUFYID09IFVJTlRfTUFYXzMyX0JJVFMKKy10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbmxzX3VpbnQzMjsKKy0jICBlbHNlCistICAvKiBUaGUgZm9sbG93aW5nIGxpbmUgaXMgaW50ZW5kZWQgdG8gdGhyb3cgYW4gZXJyb3IuICBVc2luZyAjZXJyb3IgaXMKKy0gICAgIG5vdCBwb3J0YWJsZSBlbm91Z2guICAqLworLSAgIkNhbm5vdCBkZXRlcm1pbmUgdW5zaWduZWQgMzItYml0IGRhdGEgdHlwZS4iCistIyAgZW5kaWYKKy0jIGVuZGlmCistI2VuZGlmCistCistCistLyogSGVhZGVyIGZvciBiaW5hcnkgLm1vIGZpbGUgZm9ybWF0LiAgKi8KKy1zdHJ1Y3QgbW9fZmlsZV9oZWFkZXIKKy17CistICAvKiBUaGUgbWFnaWMgbnVtYmVyLiAgKi8KKy0gIG5sc191aW50MzIgbWFnaWM7CistICAvKiBUaGUgcmV2aXNpb24gbnVtYmVyIG9mIHRoZSBmaWxlIGZvcm1hdC4gICovCistICBubHNfdWludDMyIHJldmlzaW9uOworLSAgLyogVGhlIG51bWJlciBvZiBzdHJpbmdzIHBhaXJzLiAgKi8KKy0gIG5sc191aW50MzIgbnN0cmluZ3M7CistICAvKiBPZmZzZXQgb2YgdGFibGUgd2l0aCBzdGFydCBvZmZzZXRzIG9mIG9yaWdpbmFsIHN0cmluZ3MuICAqLworLSAgbmxzX3VpbnQzMiBvcmlnX3RhYl9vZmZzZXQ7CistICAvKiBPZmZzZXQgb2YgdGFibGUgd2l0aCBzdGFydCBvZmZzZXRzIG9mIHRyYW5zbGF0aW9uIHN0cmluZ3MuICAqLworLSAgbmxzX3VpbnQzMiB0cmFuc190YWJfb2Zmc2V0OworLSAgLyogU2l6ZSBvZiBoYXNoaW5nIHRhYmxlLiAgKi8KKy0gIG5sc191aW50MzIgaGFzaF90YWJfc2l6ZTsKKy0gIC8qIE9mZnNldCBvZiBmaXJzdCBoYXNoaW5nIGVudHJ5LiAgKi8KKy0gIG5sc191aW50MzIgaGFzaF90YWJfb2Zmc2V0OworLX07CistCistc3RydWN0IHN0cmluZ19kZXNjCisteworLSAgLyogTGVuZ3RoIG9mIGFkZHJlc3NlZCBzdHJpbmcuICAqLworLSAgbmxzX3VpbnQzMiBsZW5ndGg7CistICAvKiBPZmZzZXQgb2Ygc3RyaW5nIGluIGZpbGUuICAqLworLSAgbmxzX3VpbnQzMiBvZmZzZXQ7CistfTsKKy0KKy0vKiBAQCBiZWdpbiBvZiBlcGlsb2cgQEAgKi8KKy0KKy0jZW5kaWYJLyogZ2V0dGV4dC5oICAqLworZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvZ2V0dGV4dFAuaCBscnpzei0wLjEyLjIwL2ludGwvZ2V0dGV4dFAuaAorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9nZXR0ZXh0UC5oCTE5OTgtMDQtMjYgMTQ6MjI6MzUuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2dldHRleHRQLmgJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDczICswLDAgQEAKKy0vKiBIZWFkZXIgZGVzY3JpYmluZyBpbnRlcm5hbHMgb2YgZ2V0dGV4dCBsaWJyYXJ5CistICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistI2lmbmRlZiBfR0VUVEVYVFBfSAorLSNkZWZpbmUgX0dFVFRFWFRQX0gKKy0KKy0jaW5jbHVkZSAibG9hZGluZm8uaCIKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistI2lmbmRlZiBQQVJBTVMKKy0jIGlmIF9fU1REQ19fCistIyAgZGVmaW5lIFBBUkFNUyhhcmdzKSBhcmdzCistIyBlbHNlCistIyAgZGVmaW5lIFBBUkFNUyhhcmdzKSAoKQorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaWZuZGVmIFcKKy0jIGRlZmluZSBXKGZsYWcsIGRhdGEpICgoZmxhZykgPyBTV0FQIChkYXRhKSA6IChkYXRhKSkKKy0jZW5kaWYKKy0KKy0KKy1zdGF0aWMgbmxzX3VpbnQzMiBTV0FQIFBBUkFNUyAoKG5sc191aW50MzIgaSkpOworLQorLXN0YXRpYyBpbmxpbmUgbmxzX3VpbnQzMgorLVNXQVAgKGkpCistICAgICBubHNfdWludDMyIGk7CisteworLSAgcmV0dXJuIChpIDw8IDI0KSB8ICgoaSAmIDB4ZmYwMCkgPDwgOCkgfCAoKGkgPj4gOCkgJiAweGZmMDApIHwgKGkgPj4gMjQpOworLX0KKy0KKy0KKy1zdHJ1Y3QgbG9hZGVkX2RvbWFpbgorLXsKKy0gIGNvbnN0IGNoYXIgKmRhdGE7CistICBpbnQgbXVzdF9zd2FwOworLSAgbmxzX3VpbnQzMiBuc3RyaW5nczsKKy0gIHN0cnVjdCBzdHJpbmdfZGVzYyAqb3JpZ190YWI7CistICBzdHJ1Y3Qgc3RyaW5nX2Rlc2MgKnRyYW5zX3RhYjsKKy0gIG5sc191aW50MzIgaGFzaF9zaXplOworLSAgbmxzX3VpbnQzMiAqaGFzaF90YWI7CistfTsKKy0KKy1zdHJ1Y3QgYmluZGluZworLXsKKy0gIHN0cnVjdCBiaW5kaW5nICpuZXh0OworLSAgY2hhciAqZG9tYWlubmFtZTsKKy0gIGNoYXIgKmRpcm5hbWU7CistfTsKKy0KKy1zdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpfbmxfZmluZF9kb21haW4gUEFSQU1TICgoY29uc3QgY2hhciAqX19kaXJuYW1lLAorLQkJCQkJCSBjaGFyICpfX2xvY2FsZSwKKy0JCQkJCQkgY29uc3QgY2hhciAqX19kb21haW5uYW1lKSk7Cistdm9pZCBfbmxfbG9hZF9kb21haW4gUEFSQU1TICgoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqX19kb21haW4pKTsKKy0KKy0vKiBAQCBiZWdpbiBvZiBlcGlsb2cgQEAgKi8KKy0KKy0jZW5kaWYgLyogZ2V0dGV4dFAuaCAgKi8KK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2hhc2gtc3RyaW5nLmggbHJ6c3otMC4xMi4yMC9pbnRsL2hhc2gtc3RyaW5nLmgKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvaGFzaC1zdHJpbmcuaAkxOTk4LTA0LTI2IDE0OjIyOjM2LjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9oYXNoLXN0cmluZy5oCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSw2MyArMCwwIEBACistLyogSW1wbGVtZW50cyBhIHN0cmluZyBoYXNoaW5nIGZ1bmN0aW9uLgorLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJzaW9uLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistCistICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKy0gICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwKKy0gICB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCistICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworLQorLSNpZmRlZiBIQVZFX1ZBTFVFU19ICistIyBpbmNsdWRlIDx2YWx1ZXMuaD4KKy0jZW5kaWYKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistI2lmbmRlZiBQQVJBTVMKKy0jIGlmIF9fU1REQ19fCistIyAgZGVmaW5lIFBBUkFNUyhBcmdzKSBBcmdzCistIyBlbHNlCistIyAgZGVmaW5lIFBBUkFNUyhBcmdzKSAoKQorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0vKiBXZSBhc3N1bWUgdG8gaGF2ZSBgdW5zaWduZWQgbG9uZyBpbnQnIHZhbHVlIHdpdGggYXQgbGVhc3QgMzIgYml0cy4gICovCistI2RlZmluZSBIQVNIV09SREJJVFMgMzIKKy0KKy0KKy0vKiBEZWZpbmVzIHRoZSBzbyBjYWxsZWQgYGhhc2hwancnIGZ1bmN0aW9uIGJ5IFAuSi4gV2VpbmJlcmdlcgorLSAgIFtzZWUgQWhvL1NldGhpL1VsbG1hbiwgQ09NUElMRVJTOiBQcmluY2lwbGVzLCBUZWNobmlxdWVzIGFuZCBUb29scywKKy0gICAxOTg2LCAxOTg3IEJlbGwgVGVsZXBob25lIExhYm9yYXRvcmllcywgSW5jLl0gICovCistc3RhdGljIHVuc2lnbmVkIGxvbmcgaGFzaF9zdHJpbmcgUEFSQU1TICgoY29uc3QgY2hhciAqX19zdHJfcGFyYW0pKTsKKy0KKy1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKKy1oYXNoX3N0cmluZyAoc3RyX3BhcmFtKQorLSAgICAgY29uc3QgY2hhciAqc3RyX3BhcmFtOworLXsKKy0gIHVuc2lnbmVkIGxvbmcgaW50IGh2YWwsIGc7CistICBjb25zdCBjaGFyICpzdHIgPSBzdHJfcGFyYW07CistCistICAvKiBDb21wdXRlIHRoZSBoYXNoIHZhbHVlIGZvciB0aGUgZ2l2ZW4gc3RyaW5nLiAgKi8KKy0gIGh2YWwgPSAwOworLSAgd2hpbGUgKCpzdHIgIT0gJ1wwJykKKy0gICAgeworLSAgICAgIGh2YWwgPDw9IDQ7CistICAgICAgaHZhbCArPSAodW5zaWduZWQgbG9uZykgKnN0cisrOworLSAgICAgIGcgPSBodmFsICYgKCh1bnNpZ25lZCBsb25nKSAweGYgPDwgKEhBU0hXT1JEQklUUyAtIDQpKTsKKy0gICAgICBpZiAoZyAhPSAwKQorLQl7CistCSAgaHZhbCBePSBnID4+IChIQVNIV09SREJJVFMgLSA4KTsKKy0JICBodmFsIF49IGc7CistCX0KKy0gICAgfQorLSAgcmV0dXJuIGh2YWw7CistfQorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvaW50bC1jb21wYXQuYyBscnpzei0wLjEyLjIwL2ludGwvaW50bC1jb21wYXQuYworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9pbnRsLWNvbXBhdC5jCTE5OTgtMDQtMjYgMTQ6MjA6NTIuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2ludGwtY29tcGF0LmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDc2ICswLDAgQEAKKy0vKiBpbnRsLWNvbXBhdC5jIC0gU3R1YiBmdW5jdGlvbnMgdG8gY2FsbCBnZXR0ZXh0IGZ1bmN0aW9ucyBmcm9tIEdOVSBnZXR0ZXh0CistICAgTGlicmFyeS4KKy0gICBDb3B5cmlnaHQgKEMpIDE5OTUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLQorLVRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy10aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistYW55IGxhdGVyIHZlcnNpb24uCistCistVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy1NRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy1Zb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLWFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistI2lmZGVmIEhBVkVfQ09ORklHX0gKKy0jIGluY2x1ZGUgPGNvbmZpZy5oPgorLSNlbmRpZgorLQorLSNpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCistCistLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworLQorLQorLSN1bmRlZiBnZXR0ZXh0CistI3VuZGVmIGRnZXR0ZXh0CistI3VuZGVmIGRjZ2V0dGV4dAorLSN1bmRlZiB0ZXh0ZG9tYWluCistI3VuZGVmIGJpbmR0ZXh0ZG9tYWluCistCistCistY2hhciAqCistYmluZHRleHRkb21haW4gKGRvbWFpbm5hbWUsIGRpcm5hbWUpCistICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOworLSAgICAgY29uc3QgY2hhciAqZGlybmFtZTsKKy17CistICByZXR1cm4gYmluZHRleHRkb21haW5fXyAoZG9tYWlubmFtZSwgZGlybmFtZSk7CistfQorLQorLQorLWNoYXIgKgorLWRjZ2V0dGV4dCAoZG9tYWlubmFtZSwgbXNnaWQsIGNhdGVnb3J5KQorLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKKy0gICAgIGNvbnN0IGNoYXIgKm1zZ2lkOworLSAgICAgaW50IGNhdGVnb3J5OworLXsKKy0gIHJldHVybiBkY2dldHRleHRfXyAoZG9tYWlubmFtZSwgbXNnaWQsIGNhdGVnb3J5KTsKKy19CistCistCistY2hhciAqCistZGdldHRleHQgKGRvbWFpbm5hbWUsIG1zZ2lkKQorLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKKy0gICAgIGNvbnN0IGNoYXIgKm1zZ2lkOworLXsKKy0gIHJldHVybiBkZ2V0dGV4dF9fIChkb21haW5uYW1lLCBtc2dpZCk7CistfQorLQorLQorLWNoYXIgKgorLWdldHRleHQgKG1zZ2lkKQorLSAgICAgY29uc3QgY2hhciAqbXNnaWQ7CisteworLSAgcmV0dXJuIGdldHRleHRfXyAobXNnaWQpOworLX0KKy0KKy0KKy1jaGFyICoKKy10ZXh0ZG9tYWluIChkb21haW5uYW1lKQorLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKKy17CistICByZXR1cm4gdGV4dGRvbWFpbl9fIChkb21haW5uYW1lKTsKKy19CitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9sMTBuZmxpc3QuYyBscnpzei0wLjEyLjIwL2ludGwvbDEwbmZsaXN0LmMKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvbDEwbmZsaXN0LmMJMTk5OC0wNC0yNiAxNDoyMjozNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvbDEwbmZsaXN0LmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDQwOSArMCwwIEBACistLyogSGFuZGxlIGxpc3Qgb2YgbmVlZGVkIG1lc3NhZ2UgY2F0YWxvZ3MKKy0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCistCistICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKy0KKy0jaWZkZWYgSEFWRV9DT05GSUdfSAorLSMgaW5jbHVkZSA8Y29uZmlnLmg+CistI2VuZGlmCistCistCistI2lmIGRlZmluZWQgSEFWRV9TVFJJTkdfSCB8fCBkZWZpbmVkIF9MSUJDCistIyBpZm5kZWYgX0dOVV9TT1VSQ0UKKy0jICBkZWZpbmUgX0dOVV9TT1VSQ0UJMQorLSMgZW5kaWYKKy0jIGluY2x1ZGUgPHN0cmluZy5oPgorLSNlbHNlCistIyBpbmNsdWRlIDxzdHJpbmdzLmg+CistIyBpZm5kZWYgbWVtY3B5CistIyAgZGVmaW5lIG1lbWNweShEc3QsIFNyYywgTnVtKSBiY29weSAoU3JjLCBEc3QsIE51bSkKKy0jIGVuZGlmCistI2VuZGlmCistI2lmICFIQVZFX1NUUkNIUiAmJiAhZGVmaW5lZCBfTElCQworLSMgaWZuZGVmIHN0cmNocgorLSMgIGRlZmluZSBzdHJjaHIgaW5kZXgKKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX0FSR1pfSAorLSMgaW5jbHVkZSA8YXJnei5oPgorLSNlbmRpZgorLSNpbmNsdWRlIDxjdHlwZS5oPgorLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0KKy0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBfTElCQworLSMgaW5jbHVkZSA8c3RkbGliLmg+CistI2VuZGlmCistCistI2luY2x1ZGUgImxvYWRpbmZvLmgiCistCistLyogT24gc29tZSBzdHJhbmdlIHN5c3RlbXMgc3RpbGwgbm8gZGVmaW5pdGlvbiBvZiBOVUxMIGlzIGZvdW5kLiAgU2lnaCEgICovCistI2lmbmRlZiBOVUxMCistIyBpZiBkZWZpbmVkIF9fU1REQ19fICYmIF9fU1REQ19fCistIyAgZGVmaW5lIE5VTEwgKCh2b2lkICopIDApCistIyBlbHNlCistIyAgZGVmaW5lIE5VTEwgMAorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistI2lmZGVmIF9MSUJDCistLyogUmVuYW1lIHRoZSBub24gQU5TSSBDIGZ1bmN0aW9ucy4gIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkCistICAgYmVjYXVzZSBzb21lIEFOU0kgQyBmdW5jdGlvbnMgd2lsbCByZXF1aXJlIGxpbmtpbmcgd2l0aCB0aGlzIG9iamVjdAorLSAgIGZpbGUgYW5kIHRoZSBuYW1lIHNwYWNlIG11c3Qgbm90IGJlIHBvbGx1dGVkLiAgKi8KKy0jIGRlZmluZSBzdHBjcHkoZGVzdCwgc3JjKSBfX3N0cGNweShkZXN0LCBzcmMpCistI2Vsc2UKKy0jIGlmbmRlZiBIQVZFX1NUUENQWQorLXN0YXRpYyBjaGFyICpzdHBjcHkgUEFSQU1TICgoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjKSk7CistIyBlbmRpZgorLSNlbmRpZgorLQorLS8qIERlZmluZSBmdW5jdGlvbiB3aGljaCBhcmUgdXN1YWxseSBub3QgYXZhaWxhYmxlLiAgKi8KKy0KKy0jaWYgIWRlZmluZWQgX0xJQkMgJiYgIWRlZmluZWQgSEFWRV9fX0FSR1pfQ09VTlQKKy0vKiBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3RyaW5ncyBpbiBBUkdaLiAgKi8KKy1zdGF0aWMgc2l6ZV90IGFyZ3pfY291bnRfXyBQQVJBTVMgKChjb25zdCBjaGFyICphcmd6LCBzaXplX3QgbGVuKSk7CistCistc3RhdGljIHNpemVfdAorLWFyZ3pfY291bnRfXyAoYXJneiwgbGVuKQorLSAgICAgY29uc3QgY2hhciAqYXJnejsKKy0gICAgIHNpemVfdCBsZW47CisteworLSAgc2l6ZV90IGNvdW50ID0gMDsKKy0gIHdoaWxlIChsZW4gPiAwKQorLSAgICB7CistICAgICAgc2l6ZV90IHBhcnRfbGVuID0gc3RybGVuIChhcmd6KTsKKy0gICAgICBhcmd6ICs9IHBhcnRfbGVuICsgMTsKKy0gICAgICBsZW4gLT0gcGFydF9sZW4gKyAxOworLSAgICAgIGNvdW50Kys7CistICAgIH0KKy0gIHJldHVybiBjb3VudDsKKy19CistIyB1bmRlZiBfX2FyZ3pfY291bnQKKy0jIGRlZmluZSBfX2FyZ3pfY291bnQoYXJneiwgbGVuKSBhcmd6X2NvdW50X18gKGFyZ3osIGxlbikKKy0jZW5kaWYJLyogIV9MSUJDICYmICFIQVZFX19fQVJHWl9DT1VOVCAqLworLQorLSNpZiAhZGVmaW5lZCBfTElCQyAmJiAhZGVmaW5lZCBIQVZFX19fQVJHWl9TVFJJTkdJRlkKKy0vKiBNYWtlICdcMCcgc2VwYXJhdGVkIGFyZyB2ZWN0b3IgQVJHWiBwcmludGFibGUgYnkgY29udmVydGluZyBhbGwgdGhlICdcMCdzCistICAgZXhjZXB0IHRoZSBsYXN0IGludG8gdGhlIGNoYXJhY3RlciBTRVAuICAqLworLXN0YXRpYyB2b2lkIGFyZ3pfc3RyaW5naWZ5X18gUEFSQU1TICgoY2hhciAqYXJneiwgc2l6ZV90IGxlbiwgaW50IHNlcCkpOworLQorLXN0YXRpYyB2b2lkCistYXJnel9zdHJpbmdpZnlfXyAoYXJneiwgbGVuLCBzZXApCistICAgICBjaGFyICphcmd6OworLSAgICAgc2l6ZV90IGxlbjsKKy0gICAgIGludCBzZXA7CisteworLSAgd2hpbGUgKGxlbiA+IDApCistICAgIHsKKy0gICAgICBzaXplX3QgcGFydF9sZW4gPSBzdHJsZW4gKGFyZ3opOworLSAgICAgIGFyZ3ogKz0gcGFydF9sZW47CistICAgICAgbGVuIC09IHBhcnRfbGVuICsgMTsKKy0gICAgICBpZiAobGVuID4gMCkKKy0JKmFyZ3orKyA9IHNlcDsKKy0gICAgfQorLX0KKy0jIHVuZGVmIF9fYXJnel9zdHJpbmdpZnkKKy0jIGRlZmluZSBfX2FyZ3pfc3RyaW5naWZ5KGFyZ3osIGxlbiwgc2VwKSBhcmd6X3N0cmluZ2lmeV9fIChhcmd6LCBsZW4sIHNlcCkKKy0jZW5kaWYJLyogIV9MSUJDICYmICFIQVZFX19fQVJHWl9TVFJJTkdJRlkgKi8KKy0KKy0jaWYgIWRlZmluZWQgX0xJQkMgJiYgIWRlZmluZWQgSEFWRV9fX0FSR1pfTkVYVAorLXN0YXRpYyBjaGFyICphcmd6X25leHRfXyBQQVJBTVMgKChjaGFyICphcmd6LCBzaXplX3QgYXJnel9sZW4sCistCQkJCSAgY29uc3QgY2hhciAqZW50cnkpKTsKKy0KKy1zdGF0aWMgY2hhciAqCistYXJnel9uZXh0X18gKGFyZ3osIGFyZ3pfbGVuLCBlbnRyeSkKKy0gICAgIGNoYXIgKmFyZ3o7CistICAgICBzaXplX3QgYXJnel9sZW47CistICAgICBjb25zdCBjaGFyICplbnRyeTsKKy17CistICBpZiAoZW50cnkpCistICAgIHsKKy0gICAgICBpZiAoZW50cnkgPCBhcmd6ICsgYXJnel9sZW4pCistICAgICAgICBlbnRyeSA9IHN0cmNociAoZW50cnksICdcMCcpICsgMTsKKy0KKy0gICAgICByZXR1cm4gZW50cnkgPj0gYXJneiArIGFyZ3pfbGVuID8gTlVMTCA6IChjaGFyICopIGVudHJ5OworLSAgICB9CistICBlbHNlCistICAgIGlmIChhcmd6X2xlbiA+IDApCistICAgICAgcmV0dXJuIGFyZ3o7CistICAgIGVsc2UKKy0gICAgICByZXR1cm4gMDsKKy19CistIyB1bmRlZiBfX2FyZ3pfbmV4dAorLSMgZGVmaW5lIF9fYXJnel9uZXh0KGFyZ3osIGxlbiwgZW50cnkpIGFyZ3pfbmV4dF9fIChhcmd6LCBsZW4sIGVudHJ5KQorLSNlbmRpZgkvKiAhX0xJQkMgJiYgIUhBVkVfX19BUkdaX05FWFQgKi8KKy0KKy0KKy0vKiBSZXR1cm4gbnVtYmVyIG9mIGJpdHMgc2V0IGluIFguICAqLworLXN0YXRpYyBpbnQgcG9wIFBBUkFNUyAoKGludCB4KSk7CistCistc3RhdGljIGlubGluZSBpbnQKKy1wb3AgKHgpCistICAgICBpbnQgeDsKKy17CistICAvKiBXZSBhc3N1bWUgdGhhdCBubyBtb3JlIHRoYW4gMTYgYml0cyBhcmUgdXNlZC4gICovCistICB4ID0gKCh4ICYgfjB4NTU1NSkgPj4gMSkgKyAoeCAmIDB4NTU1NSk7CistICB4ID0gKCh4ICYgfjB4MzMzMykgPj4gMikgKyAoeCAmIDB4MzMzMyk7CistICB4ID0gKCh4ID4+IDQpICsgeCkgJiAweDBmMGY7CistICB4ID0gKCh4ID4+IDgpICsgeCkgJiAweGZmOworLQorLSAgcmV0dXJuIHg7CistfQorLQorLQwKKy1zdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICoKKy1fbmxfbWFrZV9sMTBuZmxpc3QgKGwxMG5maWxlX2xpc3QsIGRpcmxpc3QsIGRpcmxpc3RfbGVuLCBtYXNrLCBsYW5ndWFnZSwKKy0JCSAgICB0ZXJyaXRvcnksIGNvZGVzZXQsIG5vcm1hbGl6ZWRfY29kZXNldCwgbW9kaWZpZXIsIHNwZWNpYWwsCistCQkgICAgc3BvbnNvciwgcmV2aXNpb24sIGZpbGVuYW1lLCBkb19hbGxvY2F0ZSkKKy0gICAgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKipsMTBuZmlsZV9saXN0OworLSAgICAgY29uc3QgY2hhciAqZGlybGlzdDsKKy0gICAgIHNpemVfdCBkaXJsaXN0X2xlbjsKKy0gICAgIGludCBtYXNrOworLSAgICAgY29uc3QgY2hhciAqbGFuZ3VhZ2U7CistICAgICBjb25zdCBjaGFyICp0ZXJyaXRvcnk7CistICAgICBjb25zdCBjaGFyICpjb2Rlc2V0OworLSAgICAgY29uc3QgY2hhciAqbm9ybWFsaXplZF9jb2Rlc2V0OworLSAgICAgY29uc3QgY2hhciAqbW9kaWZpZXI7CistICAgICBjb25zdCBjaGFyICpzcGVjaWFsOworLSAgICAgY29uc3QgY2hhciAqc3BvbnNvcjsKKy0gICAgIGNvbnN0IGNoYXIgKnJldmlzaW9uOworLSAgICAgY29uc3QgY2hhciAqZmlsZW5hbWU7CistICAgICBpbnQgZG9fYWxsb2NhdGU7CisteworLSAgY2hhciAqYWJzX2ZpbGVuYW1lOworLSAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqbGFzdCA9IE5VTEw7CistICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpyZXR2YWw7CistICBjaGFyICpjcDsKKy0gIHNpemVfdCBlbnRyaWVzOworLSAgaW50IGNudDsKKy0KKy0gIC8qIEFsbG9jYXRlIHJvb20gZm9yIHRoZSBmdWxsIGZpbGUgbmFtZS4gICovCistICBhYnNfZmlsZW5hbWUgPSAoY2hhciAqKSBtYWxsb2MgKGRpcmxpc3RfbGVuCistCQkJCSAgKyBzdHJsZW4gKGxhbmd1YWdlKQorLQkJCQkgICsgKChtYXNrICYgVEVSUklUT1JZKSAhPSAwCistCQkJCSAgICAgPyBzdHJsZW4gKHRlcnJpdG9yeSkgKyAxIDogMCkKKy0JCQkJICArICgobWFzayAmIFhQR19DT0RFU0VUKSAhPSAwCistCQkJCSAgICAgPyBzdHJsZW4gKGNvZGVzZXQpICsgMSA6IDApCistCQkJCSAgKyAoKG1hc2sgJiBYUEdfTk9STV9DT0RFU0VUKSAhPSAwCistCQkJCSAgICAgPyBzdHJsZW4gKG5vcm1hbGl6ZWRfY29kZXNldCkgKyAxIDogMCkKKy0JCQkJICArICgoKG1hc2sgJiBYUEdfTU9ESUZJRVIpICE9IDAKKy0JCQkJICAgICAgfHwgKG1hc2sgJiBDRU5fQVVESUVOQ0UpICE9IDApCistCQkJCSAgICAgPyBzdHJsZW4gKG1vZGlmaWVyKSArIDEgOiAwKQorLQkJCQkgICsgKChtYXNrICYgQ0VOX1NQRUNJQUwpICE9IDAKKy0JCQkJICAgICA/IHN0cmxlbiAoc3BlY2lhbCkgKyAxIDogMCkKKy0JCQkJICArICgoKG1hc2sgJiBDRU5fU1BPTlNPUikgIT0gMAorLQkJCQkgICAgICB8fCAobWFzayAmIENFTl9SRVZJU0lPTikgIT0gMCkKKy0JCQkJICAgICA/ICgxICsgKChtYXNrICYgQ0VOX1NQT05TT1IpICE9IDAKKy0JCQkJCSAgICAgPyBzdHJsZW4gKHNwb25zb3IpICsgMSA6IDApCistCQkJCQkrICgobWFzayAmIENFTl9SRVZJU0lPTikgIT0gMAorLQkJCQkJICAgPyBzdHJsZW4gKHJldmlzaW9uKSArIDEgOiAwKSkgOiAwKQorLQkJCQkgICsgMSArIHN0cmxlbiAoZmlsZW5hbWUpICsgMSk7CistCistICBpZiAoYWJzX2ZpbGVuYW1lID09IE5VTEwpCistICAgIHJldHVybiBOVUxMOworLQorLSAgcmV0dmFsID0gTlVMTDsKKy0gIGxhc3QgPSBOVUxMOworLQorLSAgLyogQ29uc3RydWN0IGZpbGUgbmFtZS4gICovCistICBtZW1jcHkgKGFic19maWxlbmFtZSwgZGlybGlzdCwgZGlybGlzdF9sZW4pOworLSAgX19hcmd6X3N0cmluZ2lmeSAoYWJzX2ZpbGVuYW1lLCBkaXJsaXN0X2xlbiwgJzonKTsKKy0gIGNwID0gYWJzX2ZpbGVuYW1lICsgKGRpcmxpc3RfbGVuIC0gMSk7CistICAqY3ArKyA9ICcvJzsKKy0gIGNwID0gc3RwY3B5IChjcCwgbGFuZ3VhZ2UpOworLQorLSAgaWYgKChtYXNrICYgVEVSUklUT1JZKSAhPSAwKQorLSAgICB7CistICAgICAgKmNwKysgPSAnXyc7CistICAgICAgY3AgPSBzdHBjcHkgKGNwLCB0ZXJyaXRvcnkpOworLSAgICB9CistICBpZiAoKG1hc2sgJiBYUEdfQ09ERVNFVCkgIT0gMCkKKy0gICAgeworLSAgICAgICpjcCsrID0gJy4nOworLSAgICAgIGNwID0gc3RwY3B5IChjcCwgY29kZXNldCk7CistICAgIH0KKy0gIGlmICgobWFzayAmIFhQR19OT1JNX0NPREVTRVQpICE9IDApCistICAgIHsKKy0gICAgICAqY3ArKyA9ICcuJzsKKy0gICAgICBjcCA9IHN0cGNweSAoY3AsIG5vcm1hbGl6ZWRfY29kZXNldCk7CistICAgIH0KKy0gIGlmICgobWFzayAmIChYUEdfTU9ESUZJRVIgfCBDRU5fQVVESUVOQ0UpKSAhPSAwKQorLSAgICB7CistICAgICAgLyogVGhpcyBjb21wb25lbnQgY2FuIGJlIHBhcnQgb2YgYm90aCBzeW50YWNlcyBidXQgaGFzIGRpZmZlcmVudAorLQkgbGVhZGluZyBjaGFyYWN0ZXJzLiAgRm9yIENFTiB3ZSB1c2UgYCsnLCBlbHNlIGBAJy4gICovCistICAgICAgKmNwKysgPSAobWFzayAmIENFTl9BVURJRU5DRSkgIT0gMCA/ICcrJyA6ICdAJzsKKy0gICAgICBjcCA9IHN0cGNweSAoY3AsIG1vZGlmaWVyKTsKKy0gICAgfQorLSAgaWYgKChtYXNrICYgQ0VOX1NQRUNJQUwpICE9IDApCistICAgIHsKKy0gICAgICAqY3ArKyA9ICcrJzsKKy0gICAgICBjcCA9IHN0cGNweSAoY3AsIHNwZWNpYWwpOworLSAgICB9CistICBpZiAoKG1hc2sgJiAoQ0VOX1NQT05TT1IgfCBDRU5fUkVWSVNJT04pKSAhPSAwKQorLSAgICB7CistICAgICAgKmNwKysgPSAnLCc7CistICAgICAgaWYgKChtYXNrICYgQ0VOX1NQT05TT1IpICE9IDApCistCWNwID0gc3RwY3B5IChjcCwgc3BvbnNvcik7CistICAgICAgaWYgKChtYXNrICYgQ0VOX1JFVklTSU9OKSAhPSAwKQorLQl7CistCSAgKmNwKysgPSAnXyc7CistCSAgY3AgPSBzdHBjcHkgKGNwLCByZXZpc2lvbik7CistCX0KKy0gICAgfQorLQorLSAgKmNwKysgPSAnLyc7CistICBzdHBjcHkgKGNwLCBmaWxlbmFtZSk7CistCistICAvKiBMb29rIGluIGxpc3Qgb2YgYWxyZWFkeSBsb2FkZWQgZG9tYWlucyB3aGV0aGVyIGl0IGlzIGFscmVhZHkKKy0gICAgIGF2YWlsYWJsZS4gICovCistICBsYXN0ID0gTlVMTDsKKy0gIGZvciAocmV0dmFsID0gKmwxMG5maWxlX2xpc3Q7IHJldHZhbCAhPSBOVUxMOyByZXR2YWwgPSByZXR2YWwtPm5leHQpCistICAgIGlmIChyZXR2YWwtPmZpbGVuYW1lICE9IE5VTEwpCistICAgICAgeworLQlpbnQgY29tcGFyZSA9IHN0cmNtcCAocmV0dmFsLT5maWxlbmFtZSwgYWJzX2ZpbGVuYW1lKTsKKy0JaWYgKGNvbXBhcmUgPT0gMCkKKy0JICAvKiBXZSBmb3VuZCBpdCEgICovCistCSAgYnJlYWs7CistCWlmIChjb21wYXJlIDwgMCkKKy0JICB7CistCSAgICAvKiBJdCdzIG5vdCBpbiB0aGUgbGlzdC4gICovCistCSAgICByZXR2YWwgPSBOVUxMOworLQkgICAgYnJlYWs7CistCSAgfQorLQorLQlsYXN0ID0gcmV0dmFsOworLSAgICAgIH0KKy0KKy0gIGlmIChyZXR2YWwgIT0gTlVMTCB8fCBkb19hbGxvY2F0ZSA9PSAwKQorLSAgICB7CistICAgICAgZnJlZSAoYWJzX2ZpbGVuYW1lKTsKKy0gICAgICByZXR1cm4gcmV0dmFsOworLSAgICB9CistCistICByZXR2YWwgPSAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqKQorLSAgICBtYWxsb2MgKHNpemVvZiAoKnJldHZhbCkgKyAoX19hcmd6X2NvdW50IChkaXJsaXN0LCBkaXJsaXN0X2xlbikKKy0JCQkJKiAoMSA8PCBwb3AgKG1hc2spKQorLQkJCQkqIHNpemVvZiAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqKSkpOworLSAgaWYgKHJldHZhbCA9PSBOVUxMKQorLSAgICByZXR1cm4gTlVMTDsKKy0KKy0gIHJldHZhbC0+ZmlsZW5hbWUgPSBhYnNfZmlsZW5hbWU7CistICByZXR2YWwtPmRlY2lkZWQgPSAoX19hcmd6X2NvdW50IChkaXJsaXN0LCBkaXJsaXN0X2xlbikgIT0gMQorLQkJICAgICB8fCAoKG1hc2sgJiBYUEdfQ09ERVNFVCkgIT0gMAorLQkJCSAmJiAobWFzayAmIFhQR19OT1JNX0NPREVTRVQpICE9IDApKTsKKy0gIHJldHZhbC0+ZGF0YSA9IE5VTEw7CistCistICBpZiAobGFzdCA9PSBOVUxMKQorLSAgICB7CistICAgICAgcmV0dmFsLT5uZXh0ID0gKmwxMG5maWxlX2xpc3Q7CistICAgICAgKmwxMG5maWxlX2xpc3QgPSByZXR2YWw7CistICAgIH0KKy0gIGVsc2UKKy0gICAgeworLSAgICAgIHJldHZhbC0+bmV4dCA9IGxhc3QtPm5leHQ7CistICAgICAgbGFzdC0+bmV4dCA9IHJldHZhbDsKKy0gICAgfQorLQorLSAgZW50cmllcyA9IDA7CistICAvKiBJZiB0aGUgRElSTElTVCBpcyBhIHJlYWwgbGlzdCB0aGUgUkVUVkFMIGVudHJ5IGNvcnJlc3BvbmRzIG5vdCB0bworLSAgICAgYSByZWFsIGZpbGUuICBTbyB3ZSBoYXZlIHRvIHVzZSB0aGUgRElSTElTVCBzZXBhcmF0aW9uIG1lY2hhbmlzbQorLSAgICAgb2YgdGhlIGlubmVyIGxvb3AuICAqLworLSAgY250ID0gX19hcmd6X2NvdW50IChkaXJsaXN0LCBkaXJsaXN0X2xlbikgPT0gMSA/IG1hc2sgLSAxIDogbWFzazsKKy0gIGZvciAoOyBjbnQgPj0gMDsgLS1jbnQpCistICAgIGlmICgoY250ICYgfm1hc2spID09IDAKKy0JJiYgKChjbnQgJiBDRU5fU1BFQ0lGSUMpID09IDAgfHwgKGNudCAmIFhQR19TUEVDSUZJQykgPT0gMCkKKy0JJiYgKChjbnQgJiBYUEdfQ09ERVNFVCkgPT0gMCB8fCAoY250ICYgWFBHX05PUk1fQ09ERVNFVCkgPT0gMCkpCistICAgICAgeworLQkvKiBJdGVyYXRlIG92ZXIgYWxsIGVsZW1lbnRzIG9mIHRoZSBESVJMSVNULiAgKi8KKy0JY2hhciAqZGlyID0gTlVMTDsKKy0KKy0Jd2hpbGUgKChkaXIgPSBfX2FyZ3pfbmV4dCAoKGNoYXIgKikgZGlybGlzdCwgZGlybGlzdF9sZW4sIGRpcikpCistCSAgICAgICAhPSBOVUxMKQorLQkgIHJldHZhbC0+c3VjY2Vzc29yW2VudHJpZXMrK10KKy0JICAgID0gX25sX21ha2VfbDEwbmZsaXN0IChsMTBuZmlsZV9saXN0LCBkaXIsIHN0cmxlbiAoZGlyKSArIDEsIGNudCwKKy0JCQkJICBsYW5ndWFnZSwgdGVycml0b3J5LCBjb2Rlc2V0LAorLQkJCQkgIG5vcm1hbGl6ZWRfY29kZXNldCwgbW9kaWZpZXIsIHNwZWNpYWwsCistCQkJCSAgc3BvbnNvciwgcmV2aXNpb24sIGZpbGVuYW1lLCAxKTsKKy0gICAgICB9CistICByZXR2YWwtPnN1Y2Nlc3NvcltlbnRyaWVzXSA9IE5VTEw7CistCistICByZXR1cm4gcmV0dmFsOworLX0KKy0MCistLyogTm9ybWFsaXplIGNvZGVzZXQgbmFtZS4gIFRoZXJlIGlzIG5vIHN0YW5kYXJkIGZvciB0aGUgY29kZXNldAorLSAgIG5hbWVzLiAgTm9ybWFsaXphdGlvbiBhbGxvd3MgdGhlIHVzZXIgdG8gdXNlIGFueSBvZiB0aGUgY29tbW9uCistICAgbmFtZXMuICAqLworLWNvbnN0IGNoYXIgKgorLV9ubF9ub3JtYWxpemVfY29kZXNldCAoY29kZXNldCwgbmFtZV9sZW4pCistICAgICBjb25zdCBjaGFyICpjb2Rlc2V0OworLSAgICAgc2l6ZV90IG5hbWVfbGVuOworLXsKKy0gIGludCBsZW4gPSAwOworLSAgaW50IG9ubHlfZGlnaXQgPSAxOworLSAgY2hhciAqcmV0dmFsOworLSAgY2hhciAqd3A7CistICBzaXplX3QgY250OworLQorLSAgZm9yIChjbnQgPSAwOyBjbnQgPCBuYW1lX2xlbjsgKytjbnQpCistICAgIGlmIChpc2FsbnVtIChjb2Rlc2V0W2NudF0pKQorLSAgICAgIHsKKy0JKytsZW47CistCistCWlmIChpc2FscGhhIChjb2Rlc2V0W2NudF0pKQorLQkgIG9ubHlfZGlnaXQgPSAwOworLSAgICAgIH0KKy0KKy0gIHJldHZhbCA9IChjaGFyICopIG1hbGxvYyAoKG9ubHlfZGlnaXQgPyAzIDogMCkgKyBsZW4gKyAxKTsKKy0KKy0gIGlmIChyZXR2YWwgIT0gTlVMTCkKKy0gICAgeworLSAgICAgIGlmIChvbmx5X2RpZ2l0KQorLQl3cCA9IHN0cGNweSAocmV0dmFsLCAiaXNvIik7CistICAgICAgZWxzZQorLQl3cCA9IHJldHZhbDsKKy0KKy0gICAgICBmb3IgKGNudCA9IDA7IGNudCA8IG5hbWVfbGVuOyArK2NudCkKKy0JaWYgKGlzYWxwaGEgKGNvZGVzZXRbY250XSkpCistCSAgKndwKysgPSB0b2xvd2VyIChjb2Rlc2V0W2NudF0pOworLQllbHNlIGlmIChpc2RpZ2l0IChjb2Rlc2V0W2NudF0pKQorLQkgICp3cCsrID0gY29kZXNldFtjbnRdOworLQorLSAgICAgICp3cCA9ICdcMCc7CistICAgIH0KKy0KKy0gIHJldHVybiAoY29uc3QgY2hhciAqKSByZXR2YWw7CistfQorLQorLQorLS8qIEBAIGJlZ2luIG9mIGVwaWxvZyBAQCAqLworLQorLS8qIFdlIGRvbid0IHdhbnQgbGliaW50bC5hIHRvIGRlcGVuZCBvbiBhbnkgb3RoZXIgbGlicmFyeS4gIFNvIHdlCistICAgYXZvaWQgdGhlIG5vbi1zdGFuZGFyZCBmdW5jdGlvbiBzdHBjcHkuICBJbiBHTlUgQyBMaWJyYXJ5IHRoaXMKKy0gICBmdW5jdGlvbiBpcyBhdmFpbGFibGUsIHRob3VnaC4gIEFsc28gYWxsb3cgdGhlIHN5bWJvbCBIQVZFX1NUUENQWQorLSAgIHRvIGJlIGRlZmluZWQuICAqLworLSNpZiAhX0xJQkMgJiYgIUhBVkVfU1RQQ1BZCistc3RhdGljIGNoYXIgKgorLXN0cGNweSAoZGVzdCwgc3JjKQorLSAgICAgY2hhciAqZGVzdDsKKy0gICAgIGNvbnN0IGNoYXIgKnNyYzsKKy17CistICB3aGlsZSAoKCpkZXN0KysgPSAqc3JjKyspICE9ICdcMCcpCistICAgIC8qIERvIG5vdGhpbmcuICovIDsKKy0gIHJldHVybiBkZXN0IC0gMTsKKy19CistI2VuZGlmCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9saWJnZXR0ZXh0LmggbHJ6c3otMC4xMi4yMC9pbnRsL2xpYmdldHRleHQuaAorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9saWJnZXR0ZXh0LmgJMTk5OC0wNC0yNiAxNDoyMjozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvbGliZ2V0dGV4dC5oCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSwxODIgKzAsMCBAQAorLS8qIE1lc3NhZ2UgY2F0YWxvZ3MgZm9yIGludGVybmF0aW9uYWxpemF0aW9uLgorLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJzaW9uLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistCistICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworLQorLS8qIEJlY2F1c2Ugb24gc29tZSBzeXN0ZW1zIChlLmcuIFNvbGFyaXMpIHdlIHNvbWV0aW1lcyBoYXZlIHRvIGluY2x1ZGUKKy0gICB0aGUgc3lzdGVtcyBsaWJpbnRsLmggYXMgd2VsbCBhcyB0aGlzIGZpbGUgd2UgaGF2ZSBtb3JlIGNvbXBsZXgKKy0gICBpbmNsdWRlIHByb3RlY3Rpb24gYWJvdmUuICBCdXQgdGhlIHN5c3RlbXMgaGVhZGVyIG1pZ2h0IHBlcmhhcHMgYWxzbworLSAgIGRlZmluZSBfTElCSU5UTF9IIGFuZCB0aGVyZWZvcmUgd2UgaGF2ZSB0byBwcm90ZWN0IHRoZSBkZWZpbml0aW9uIGhlcmUuICAqLworLQorLSNpZiAhZGVmaW5lZCAoX0xJQklOVExfSCkgfHwgIWRlZmluZWQgKF9MSUJHRVRURVhUX0gpCistI2lmICFkZWZpbmVkIChfTElCSU5UTF9IKQorLSMgZGVmaW5lIF9MSUJJTlRMX0gJMQorLSNlbmRpZgorLSNkZWZpbmUgX0xJQkdFVFRFWFRfSAkxCistCistLyogV2UgZGVmaW5lIGFuIGFkZGl0aW9uYWwgc3ltYm9sIHRvIHNpZ25hbCB0aGF0IHdlIHVzZSB0aGUgR05VCistICAgaW1wbGVtZW50YXRpb24gb2YgZ2V0dGV4dC4gICovCistI2RlZmluZSBfX1VTRV9HTlVfR0VUVEVYVCAxCistCistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLQorLSNpZiBIQVZFX0xPQ0FMRV9ICistIyBpbmNsdWRlIDxsb2NhbGUuaD4KKy0jZW5kaWYKKy0KKy0KKy0jaWZkZWYgX19jcGx1c3BsdXMKKy1leHRlcm4gIkMiIHsKKy0jZW5kaWYKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistI2lmbmRlZiBQQVJBTVMKKy0jIGlmIF9fU1REQ19fCistIyAgZGVmaW5lIFBBUkFNUyhhcmdzKSBhcmdzCistIyBlbHNlCistIyAgZGVmaW5lIFBBUkFNUyhhcmdzKSAoKQorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaWZuZGVmIE5VTEwKKy0jIGlmICFkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX19HTlVDX18KKy0jICBkZWZpbmUgTlVMTCAoKHZvaWQgKikgMCkKKy0jIGVsc2UKKy0jICBkZWZpbmUgTlVMTCAoMCkKKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmICFIQVZFX0xDX01FU1NBR0VTCistLyogVGhpcyB2YWx1ZSBkZXRlcm1pbmVzIHRoZSBiZWhhdmlvdXIgb2YgdGhlIGdldHRleHQoKSBhbmQgZGdldHRleHQoKQorLSAgIGZ1bmN0aW9uLiAgQnV0IHNvbWUgc3lzdGVtIGRvZXMgbm90IGhhdmUgdGhpcyBkZWZpbmVkLiAgRGVmaW5lIGl0CistICAgdG8gYSBkZWZhdWx0IHZhbHVlLiAgKi8KKy0jIGRlZmluZSBMQ19NRVNTQUdFUyAoLTEpCistI2VuZGlmCistCistCistLyogRGVjbGFyYXRpb25zIGZvciBnZXR0ZXh0LXVzaW5nLWNhdGdldHMgaW50ZXJmYWNlLiAgRGVyaXZlZCBmcm9tCistICAgSmltIE1leWVyaW5nJ3MgbGliaW50bC5oLiAgKi8KKy1zdHJ1Y3QgX21zZ19lbnQKKy17CistICBjb25zdCBjaGFyICpfbXNnOworLSAgaW50IF9tc2dfbnVtYmVyOworLX07CistCistCistI2lmIEhBVkVfQ0FUR0VUUworLS8qIFRoZXNlIHR3byB2YXJpYWJsZXMgYXJlIGRlZmluZWQgaW4gdGhlIGF1dG9tYXRpY2FsbHkgYnkgcG8tdG8tdGJsLnNlZAorLSAgIGdlbmVyYXRlZCBmaWxlIGBjYXQtaWQtdGJsLmMnLiAgKi8KKy1leHRlcm4gY29uc3Qgc3RydWN0IF9tc2dfZW50IF9tc2dfdGJsW107CistZXh0ZXJuIGludCBfbXNnX3RibF9sZW5ndGg7CistI2VuZGlmCistCistCistLyogRm9yIGF1dG9tYXRpY2FsIGV4dHJhY3Rpb24gb2YgbWVzc2FnZXMgc29tZXRpbWVzIG5vIHJlYWwKKy0gICB0cmFuc2xhdGlvbiBpcyBuZWVkZWQuICBJbnN0ZWFkIHRoZSBzdHJpbmcgaXRzZWxmIGlzIHRoZSByZXN1bHQuICAqLworLSNkZWZpbmUgZ2V0dGV4dF9ub29wKFN0cikgKFN0cikKKy0KKy0vKiBMb29rIHVwIE1TR0lEIGluIHRoZSBjdXJyZW50IGRlZmF1bHQgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudAorLSAgIExDX01FU1NBR0VTIGxvY2FsZS4gIElmIG5vdCBmb3VuZCwgcmV0dXJucyBNU0dJRCBpdHNlbGYgKHRoZSBkZWZhdWx0CistICAgdGV4dCkuICAqLworLWV4dGVybiBjaGFyICpnZXR0ZXh0IFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fbXNnaWQpKTsKKy1leHRlcm4gY2hhciAqZ2V0dGV4dF9fIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fbXNnaWQpKTsKKy0KKy0vKiBMb29rIHVwIE1TR0lEIGluIHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQKKy0gICBMQ19NRVNTQUdFUyBsb2NhbGUuICAqLworLWV4dGVybiBjaGFyICpkZ2V0dGV4dCBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQpKTsKKy1leHRlcm4gY2hhciAqZGdldHRleHRfXyBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCistCQkJCSBjb25zdCBjaGFyICpfX21zZ2lkKSk7CistCistLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50IENBVEVHT1JZCistICAgbG9jYWxlLiAgKi8KKy1leHRlcm4gY2hhciAqZGNnZXR0ZXh0IFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZCwKKy0JCQkJaW50IF9fY2F0ZWdvcnkpKTsKKy1leHRlcm4gY2hhciAqZGNnZXR0ZXh0X18gUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAorLQkJCQkgIGNvbnN0IGNoYXIgKl9fbXNnaWQsIGludCBfX2NhdGVnb3J5KSk7CistCistCistLyogU2V0IHRoZSBjdXJyZW50IGRlZmF1bHQgbWVzc2FnZSBjYXRhbG9nIHRvIERPTUFJTk5BTUUuCistICAgSWYgRE9NQUlOTkFNRSBpcyBudWxsLCByZXR1cm4gdGhlIGN1cnJlbnQgZGVmYXVsdC4KKy0gICBJZiBET01BSU5OQU1FIGlzICIiLCByZXNldCB0byB0aGUgZGVmYXVsdCBvZiAibWVzc2FnZXMiLiAgKi8KKy1leHRlcm4gY2hhciAqdGV4dGRvbWFpbiBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUpKTsKKy1leHRlcm4gY2hhciAqdGV4dGRvbWFpbl9fIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSkpOworLQorLS8qIFNwZWNpZnkgdGhhdCB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgd2lsbCBiZSBmb3VuZAorLSAgIGluIERJUk5BTUUgcmF0aGVyIHRoYW4gaW4gdGhlIHN5c3RlbSBsb2NhbGUgZGF0YSBiYXNlLiAgKi8KKy1leHRlcm4gY2hhciAqYmluZHRleHRkb21haW4gUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAorLQkJCQkgIGNvbnN0IGNoYXIgKl9fZGlybmFtZSkpOworLWV4dGVybiBjaGFyICpiaW5kdGV4dGRvbWFpbl9fIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKKy0JCQkJICAgIGNvbnN0IGNoYXIgKl9fZGlybmFtZSkpOworLQorLSNpZiBFTkFCTEVfTkxTCistCistLyogU29sYXJpcyAyLjMgaGFzIHRoZSBnZXR0ZXh0IGZ1bmN0aW9uIGJ1dCBkY2dldHRleHQgaXMgbWlzc2luZy4KKy0gICBTbyB3ZSBvbWl0IHRoaXMgb3B0aW1pemF0aW9uIGZvciBTb2xhcmlzIDIuMy4gIEJUVywgU29sYXJpcyAyLjQKKy0gICBoYXMgZGNnZXR0ZXh0LiAgKi8KKy0jIGlmICFIQVZFX0NBVEdFVFMgJiYgKCFIQVZFX0dFVFRFWFQgfHwgSEFWRV9EQ0dFVFRFWFQpCistCistIyAgZGVmaW5lIGdldHRleHQoTXNnaWQpCQkJCQkJICAgICAgXAorLSAgICAgZGdldHRleHQgKE5VTEwsIE1zZ2lkKQorLQorLSMgIGRlZmluZSBkZ2V0dGV4dChEb21haW5uYW1lLCBNc2dpZCkJCQkJCSAgICAgIFwKKy0gICAgIGRjZ2V0dGV4dCAoRG9tYWlubmFtZSwgTXNnaWQsIExDX01FU1NBR0VTKQorLQorLSMgIGlmIGRlZmluZWQgX19HTlVDX18gJiYgX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA+PSA3CistLyogVGhpcyBnbG9iYWwgdmFyaWFibGUgaXMgZGVmaW5lZCBpbiBsb2FkbXNnY2F0LmMuICBXZSBuZWVkIGEgc2lnbiwKKy0gICB3aGV0aGVyIGEgbmV3IGNhdGFsb2cgd2FzIGxvYWRlZCwgd2hpY2ggY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhbGwKKy0gICB0cmFuc2xhdGlvbnMuICAqLworLWV4dGVybiBpbnQgX25sX21zZ19jYXRfY250cjsKKy0KKy0jICAgZGVmaW5lIGRjZ2V0dGV4dChEb21haW5uYW1lLCBNc2dpZCwgQ2F0ZWdvcnkpCQkJICAgICAgXAorLSAgKF9fZXh0ZW5zaW9uX18JCQkJCQkJICAgICAgXAorLSAgICh7CQkJCQkJCQkJICAgICAgXAorLSAgICAgY2hhciAqX19yZXN1bHQ7CQkJCQkJCSAgICAgIFwKKy0gICAgIGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoTXNnaWQpKQkJCQkJICAgICAgXAorLSAgICAgICB7CQkJCQkJCQkgICAgICBcCistCSBzdGF0aWMgY2hhciAqX190cmFuc2xhdGlvbl9fOwkJCQkJICAgICAgXAorLQkgc3RhdGljIGludCBfX2NhdGFsb2dfY291bnRlcl9fOwkJCQkgICAgICBcCistCSBpZiAoISBfX3RyYW5zbGF0aW9uX18gfHwgX19jYXRhbG9nX2NvdW50ZXJfXyAhPSBfbmxfbXNnX2NhdF9jbnRyKSAgICBcCistCSAgIHsJCQkJCQkJCSAgICAgIFwKKy0JICAgICBfX3RyYW5zbGF0aW9uX18gPQkJCQkJCSAgICAgIFwKKy0JICAgICAgIGRjZ2V0dGV4dF9fIChEb21haW5uYW1lLCBNc2dpZCwgQ2F0ZWdvcnkpOwkJICAgICAgXAorLQkgICAgIF9fY2F0YWxvZ19jb3VudGVyX18gPSBfbmxfbXNnX2NhdF9jbnRyOwkJCSAgICAgIFwKKy0JICAgfQkJCQkJCQkJICAgICAgXAorLQkgX19yZXN1bHQgPSBfX3RyYW5zbGF0aW9uX187CQkJCQkgICAgICBcCistICAgICAgIH0JCQkJCQkJCSAgICAgIFwKKy0gICAgIGVsc2UJCQkJCQkJCSAgICAgIFwKKy0gICAgICAgX19yZXN1bHQgPSBkY2dldHRleHRfXyAoRG9tYWlubmFtZSwgTXNnaWQsIENhdGVnb3J5KTsJCSAgICAgIFwKKy0gICAgIF9fcmVzdWx0OwkJCQkJCQkJICAgICAgXAorLSAgICB9KSkKKy0jICBlbmRpZgorLSMgZW5kaWYKKy0KKy0jZWxzZQorLQorLSMgZGVmaW5lIGdldHRleHQoTXNnaWQpIChNc2dpZCkKKy0jIGRlZmluZSBkZ2V0dGV4dChEb21haW5uYW1lLCBNc2dpZCkgKE1zZ2lkKQorLSMgZGVmaW5lIGRjZ2V0dGV4dChEb21haW5uYW1lLCBNc2dpZCwgQ2F0ZWdvcnkpIChNc2dpZCkKKy0jIGRlZmluZSB0ZXh0ZG9tYWluKERvbWFpbm5hbWUpIHdoaWxlICgwKSAvKiBub3RoaW5nICovCistIyBkZWZpbmUgYmluZHRleHRkb21haW4oRG9tYWlubmFtZSwgRGlybmFtZSkgd2hpbGUgKDApIC8qIG5vdGhpbmcgKi8KKy0KKy0jZW5kaWYKKy0KKy0vKiBAQCBiZWdpbiBvZiBlcGlsb2cgQEAgKi8KKy0KKy0jaWZkZWYgX19jcGx1c3BsdXMKKy19CistI2VuZGlmCistCistI2VuZGlmCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9saW51eC1tc2cuc2VkIGxyenN6LTAuMTIuMjAvaW50bC9saW51eC1tc2cuc2VkCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2xpbnV4LW1zZy5zZWQJMTk5OC0wNC0yNiAxNDoyMDo1Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvbGludXgtbXNnLnNlZAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsMTAwICswLDAgQEAKKy0jIHBvMm1zZy5zZWQgLSBDb252ZXJ0IFVuaWZvcnVtIHN0eWxlIC5wbyBmaWxlIHRvIExpbnV4IHN0eWxlIC5tc2cgZmlsZQorLSMgQ29weXJpZ2h0IChDKSAxOTk1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLSMgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgorLSMKKy0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSMgYW55IGxhdGVyIHZlcnNpb24uCistIworLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0jCistIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCistIworLSMKKy0jIFRoZSBmaXJzdCBkaXJlY3RpdmUgaW4gdGhlIC5tc2cgc2hvdWxkIGJlIHRoZSBkZWZpbml0aW9uIG9mIHRoZQorLSMgbWVzc2FnZSBzZXQgbnVtYmVyLiAgV2UgdXNlIGFsd2F5cyBzZXQgbnVtYmVyIDEuCistIworLTEgeworLSAgaVwKKy0kc2V0IDEgIyBBdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYnkgcG8ybXNnLnNlZAorLSAgaAorLSAgcy8uKi8wLworLSAgeAorLX0KKy0jCistIyBNaXRjaCdzIG9sZCBjYXRhbG9nIGZvcm1hdCBkb2VzIG5vdCBhbGxvdyBjb21tZW50cy4KKy0jCistIyBXZSBjb3B5IHRoZSBvcmlnaW5hbCBtZXNzYWdlIGFzIGEgY29tbWVudCBpbnRvIHRoZSAubXNnIGZpbGUuCistIworLS9ebXNnaWQvIHsKKy0gIHMvbXNnaWRbIAldKiIvLworLSMKKy0jIFRoaXMgZG9lcyBub3Qgd29yayBub3cgd2l0aCB0aGUgbmV3IGZvcm1hdC4KKy0jIC8iJC8hIHsKKy0jICAgcy9cXCQvLworLSMgICBzLyQvIC4uLiAobW9yZSBsaW5lcyBmb2xsb3dpbmcpIi8KKy0jIH0KKy0gIHgKKy0jIFRoZSBmb2xsb3dpbmcgbmljZSBzb2x1dGlvbiBpcyBieQorLSMgQnJ1bm8gPEhhaWJsZUBtYTJzMi5tYXRoZW1hdGlrLnVuaS1rYXJsc3J1aGUuZGU+CistICB0ZAorLSMgSW5jcmVtZW50IGEgZGVjaW1hbCBudW1iZXIgaW4gcGF0dGVybiBzcGFjZS4KKy0jIEZpcnN0IGhpZGUgdHJhaWxpbmcgYDknIGRpZ2l0cy4KKy0gIDpkCistICBzLzlcKF8qXCkkL19cMS8KKy0gIHRkCistIyBBc3N1cmUgYXQgbGVhc3Qgb25lIGRpZ2l0IGlzIGF2YWlsYWJsZS4KKy0gIHMvXlwoXypcKSQvMFwxLworLSMgSW5jcmVtZW50IHRoZSBsYXN0IGRpZ2l0LgorLSAgcy84XChfKlwpJC85XDEvCistICBzLzdcKF8qXCkkLzhcMS8KKy0gIHMvNlwoXypcKSQvN1wxLworLSAgcy81XChfKlwpJC82XDEvCistICBzLzRcKF8qXCkkLzVcMS8KKy0gIHMvM1woXypcKSQvNFwxLworLSAgcy8yXChfKlwpJC8zXDEvCistICBzLzFcKF8qXCkkLzJcMS8KKy0gIHMvMFwoXypcKSQvMVwxLworLSMgQ29udmVydCB0aGUgaGlkZGVuIGA5JyBkaWdpdHMgdG8gYDAncy4KKy0gIHMvXy8wL2cKKy0gIHgKKy0gIEcKKy0gIHMvXCguKlwpIlxuXChbMC05XSpcKS8kICNcMiBPcmlnaW5hbCBNZXNzYWdlOihcMSkvcAorLX0KKy0jCistIyBUaGUgLm1zZyBmaWxlIGNvbnRhaW5zLCBvdGhlciB0aGVuIHRoZSAucG8gZmlsZSwgb25seSB0aGUgdHJhbnNsYXRpb25zCistIyBidXQgZWFjaCBnaXZlbiBhIHVuaXF1ZSBJRC4gIFN0YXJ0aW5nIGZyb20gMSBhbmQgaW5jcmVtZW50aW5nIGJ5IDEgZm9yCistIyBlYWNoIG1lc3NhZ2Ugd2UgYXNzaWduIHRoZW0gdG8gdGhlIG1lc3NhZ2VzLgorLSMgSXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlIC5wbyBmaWxlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGNhdC1pZC10YmwuYyBmaWxlCistIyAod2l0aCBwby10by10YmwpIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgdXNlZCBoZXJlLiAgKEF0IGxlYXN0IHRoZSBvcmRlcgorLSMgb2YgZGVjbGFyYXRpb25zIG11c3Qgbm90IGJlIGNoYW5nZWQuKQorLSMKKy0vXm1zZ3N0ci8geworLSAgcy9tc2dzdHJbIAldKiJcKC4qXCkiLyMgXDEvCistIyBDbGVhciBzdWJzdGl0dXRpb24gZmxhZy4KKy0gIHRiCistIyBBcHBlbmQgdGhlIG5leHQgbGluZS4KKy0gIDpiCistICBOCistIyBMb29rIHdoZXRoZXIgc2Vjb25kIHBhcnQgaXMgY29udGludWF0aW9uIGxpbmUuCistICBzL1woLipcblwpIlwoLipcKSIvXDFcMi8KKy0jIFllcywgdGhlbiBicmFuY2guCistICB0YQorLSAgUAorLSAgRAorLSMgTm90ZSB0aGF0IEQgaW5jbHVkZXMgYSBqdW1wIHRvIHRoZSBzdGFydCEhCistIyBXZSBmb3VuZCBhIGNvbnRpbnVhdGlvbiBsaW5lLiAgQnV0IGJlZm9yZSBwcmludGluZyBpbnNlcnQgJ1wnLgorLSAgOmEKKy0gIHMvXCguKlwpXChcbi4qXCkvXDFcXFwyLworLSAgUAorLSMgV2UgY2Fubm90IHVzZSBEIGhlcmUuCistICBzLy4qXG5cKC4qXCkvXDEvCistICB0YgorLX0KKy1kCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9sb2FkaW5mby5oIGxyenN6LTAuMTIuMjAvaW50bC9sb2FkaW5mby5oCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2xvYWRpbmZvLmgJMTk5OC0wNC0yNiAxNDoyMDo1Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvbG9hZGluZm8uaAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsNTggKzAsMCBAQAorLSNpZm5kZWYgUEFSQU1TCistIyBpZiBfX1NURENfXworLSMgIGRlZmluZSBQQVJBTVMoYXJncykgYXJncworLSMgZWxzZQorLSMgIGRlZmluZSBQQVJBTVMoYXJncykgKCkKKy0jIGVuZGlmCistI2VuZGlmCistCistLyogRW5jb2Rpbmcgb2YgbG9jYWxlIG5hbWUgcGFydHMuICAqLworLSNkZWZpbmUgQ0VOX1JFVklTSU9OCQkxCistI2RlZmluZSBDRU5fU1BPTlNPUgkJMgorLSNkZWZpbmUgQ0VOX1NQRUNJQUwJCTQKKy0jZGVmaW5lIFhQR19OT1JNX0NPREVTRVQJOAorLSNkZWZpbmUgWFBHX0NPREVTRVQJCTE2CistI2RlZmluZSBURVJSSVRPUlkJCTMyCistI2RlZmluZSBDRU5fQVVESUVOQ0UJCTY0CistI2RlZmluZSBYUEdfTU9ESUZJRVIJCTEyOAorLQorLSNkZWZpbmUgQ0VOX1NQRUNJRklDCShDRU5fUkVWSVNJT058Q0VOX1NQT05TT1J8Q0VOX1NQRUNJQUx8Q0VOX0FVRElFTkNFKQorLSNkZWZpbmUgWFBHX1NQRUNJRklDCShYUEdfQ09ERVNFVHxYUEdfTk9STV9DT0RFU0VUfFhQR19NT0RJRklFUikKKy0KKy0KKy1zdHJ1Y3QgbG9hZGVkX2wxMG5maWxlCisteworLSAgY29uc3QgY2hhciAqZmlsZW5hbWU7CistICBpbnQgZGVjaWRlZDsKKy0KKy0gIGNvbnN0IHZvaWQgKmRhdGE7CistCistICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpuZXh0OworLSAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqc3VjY2Vzc29yWzFdOworLX07CistCistCistZXh0ZXJuIGNvbnN0IGNoYXIgKl9ubF9ub3JtYWxpemVfY29kZXNldCBQQVJBTVMgKChjb25zdCBjaGFyICpjb2Rlc2V0LAorLQkJCQkJCSAgc2l6ZV90IG5hbWVfbGVuKSk7CistCistZXh0ZXJuIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKgorLV9ubF9tYWtlX2wxMG5mbGlzdCBQQVJBTVMgKChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICoqbDEwbmZpbGVfbGlzdCwKKy0JCQkgICAgY29uc3QgY2hhciAqZGlybGlzdCwgc2l6ZV90IGRpcmxpc3RfbGVuLCBpbnQgbWFzaywKKy0JCQkgICAgY29uc3QgY2hhciAqbGFuZ3VhZ2UsIGNvbnN0IGNoYXIgKnRlcnJpdG9yeSwKKy0JCQkgICAgY29uc3QgY2hhciAqY29kZXNldCwKKy0JCQkgICAgY29uc3QgY2hhciAqbm9ybWFsaXplZF9jb2Rlc2V0LAorLQkJCSAgICBjb25zdCBjaGFyICptb2RpZmllciwgY29uc3QgY2hhciAqc3BlY2lhbCwKKy0JCQkgICAgY29uc3QgY2hhciAqc3BvbnNvciwgY29uc3QgY2hhciAqcmV2aXNpb24sCistCQkJICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZG9fYWxsb2NhdGUpKTsKKy0KKy0KKy1leHRlcm4gY29uc3QgY2hhciAqX25sX2V4cGFuZF9hbGlhcyBQQVJBTVMgKChjb25zdCBjaGFyICpuYW1lKSk7CistCistZXh0ZXJuIGludCBfbmxfZXhwbG9kZV9uYW1lIFBBUkFNUyAoKGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKipsYW5ndWFnZSwKKy0JCQkJICAgICBjb25zdCBjaGFyICoqbW9kaWZpZXIsCistCQkJCSAgICAgY29uc3QgY2hhciAqKnRlcnJpdG9yeSwKKy0JCQkJICAgICBjb25zdCBjaGFyICoqY29kZXNldCwKKy0JCQkJICAgICBjb25zdCBjaGFyICoqbm9ybWFsaXplZF9jb2Rlc2V0LAorLQkJCQkgICAgIGNvbnN0IGNoYXIgKipzcGVjaWFsLAorLQkJCQkgICAgIGNvbnN0IGNoYXIgKipzcG9uc29yLAorLQkJCQkgICAgIGNvbnN0IGNoYXIgKipyZXZpc2lvbikpOworZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvbG9hZG1zZ2NhdC5jIGxyenN6LTAuMTIuMjAvaW50bC9sb2FkbXNnY2F0LmMKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvbG9hZG1zZ2NhdC5jCTE5OTgtMDQtMjYgMTQ6MjI6MzcuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xvYWRtc2djYXQuYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsMTk5ICswLDAgQEAKKy0vKiBMb2FkIG5lZWRlZCBtZXNzYWdlIGNhdGFsb2dzCistICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistI2lmZGVmIEhBVkVfQ09ORklHX0gKKy0jIGluY2x1ZGUgPGNvbmZpZy5oPgorLSNlbmRpZgorLQorLSNpbmNsdWRlIDxmY250bC5oPgorLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KKy0KKy0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBfTElCQworLSMgaW5jbHVkZSA8c3RkbGliLmg+CistI2VuZGlmCistCistI2lmIGRlZmluZWQgSEFWRV9VTklTVERfSCB8fCBkZWZpbmVkIF9MSUJDCistIyBpbmNsdWRlIDx1bmlzdGQuaD4KKy0jZW5kaWYKKy0KKy0jaWYgKGRlZmluZWQgSEFWRV9NTUFQICYmIGRlZmluZWQgSEFWRV9NVU5NQVApIHx8IGRlZmluZWQgX0xJQkMKKy0jIGluY2x1ZGUgPHN5cy9tbWFuLmg+CistI2VuZGlmCistCistI2luY2x1ZGUgImdldHRleHQuaCIKKy0jaW5jbHVkZSAiZ2V0dGV4dFAuaCIKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistI2lmZGVmIF9MSUJDCistLyogUmVuYW1lIHRoZSBub24gSVNPIEMgZnVuY3Rpb25zLiAgVGhpcyBpcyByZXF1aXJlZCBieSB0aGUgc3RhbmRhcmQKKy0gICBiZWNhdXNlIHNvbWUgSVNPIEMgZnVuY3Rpb25zIHdpbGwgcmVxdWlyZSBsaW5raW5nIHdpdGggdGhpcyBvYmplY3QKKy0gICBmaWxlIGFuZCB0aGUgbmFtZSBzcGFjZSBtdXN0IG5vdCBiZSBwb2xsdXRlZC4gICovCistIyBkZWZpbmUgZnN0YXQgIF9fZnN0YXQKKy0jIGRlZmluZSBvcGVuICAgX19vcGVuCistIyBkZWZpbmUgY2xvc2UgIF9fY2xvc2UKKy0jIGRlZmluZSByZWFkICAgX19yZWFkCistIyBkZWZpbmUgbW1hcCAgIF9fbW1hcAorLSMgZGVmaW5lIG11bm1hcCBfX211bm1hcAorLSNlbmRpZgorLQorLS8qIFdlIG5lZWQgYSBzaWduLCB3aGV0aGVyIGEgbmV3IGNhdGFsb2cgd2FzIGxvYWRlZCwgd2hpY2ggY2FuIGJlIGFzc29jaWF0ZWQKKy0gICB3aXRoIGFsbCB0cmFuc2xhdGlvbnMuICBUaGlzIGlzIGltcG9ydGFudCBpZiB0aGUgdHJhbnNsYXRpb25zIGFyZQorLSAgIGNhY2hlZCBieSBvbmUgb2YgR0NDJ3MgZmVhdHVyZXMuICAqLworLWludCBfbmxfbXNnX2NhdF9jbnRyID0gMDsKKy0KKy0KKy0vKiBMb2FkIHRoZSBtZXNzYWdlIGNhdGFsb2dzIHNwZWNpZmllZCBieSBGSUxFTkFNRS4gIElmIGl0IGlzIG5vIHZhbGlkCistICAgbWVzc2FnZSBjYXRhbG9nIGRvIG5vdGhpbmcuICAqLworLXZvaWQKKy1fbmxfbG9hZF9kb21haW4gKGRvbWFpbl9maWxlKQorLSAgICAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluX2ZpbGU7CisteworLSAgaW50IGZkOworLSAgc3RydWN0IHN0YXQgc3Q7CistICBzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKmRhdGEgPSAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyICopIC0xOworLSNpZiAoZGVmaW5lZCBIQVZFX01NQVAgJiYgZGVmaW5lZCBIQVZFX01VTk1BUCAmJiAhZGVmaW5lZCBESVNBTExPV19NTUFQKSBcCistICAgIHx8IGRlZmluZWQgX0xJQkMKKy0gIGludCB1c2VfbW1hcCA9IDA7CistI2VuZGlmCistICBzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqZG9tYWluOworLQorLSAgZG9tYWluX2ZpbGUtPmRlY2lkZWQgPSAxOworLSAgZG9tYWluX2ZpbGUtPmRhdGEgPSBOVUxMOworLQorLSAgLyogSWYgdGhlIHJlY29yZCBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWxpZCBsb2NhbGUgdGhlIEZJTEVOQU1FCistICAgICBtaWdodCBiZSBOVUxMLiAgVGhpcyBjYW4gaGFwcGVuIHdoZW4gYWNjb3JkaW5nIHRvIHRoZSBnaXZlbgorLSAgICAgc3BlY2lmaWNhdGlvbiB0aGUgbG9jYWxlIGZpbGUgbmFtZSBpcyBkaWZmZXJlbnQgZm9yIFhQRyBhbmQgQ0VOCistICAgICBzeW50YXguICAqLworLSAgaWYgKGRvbWFpbl9maWxlLT5maWxlbmFtZSA9PSBOVUxMKQorLSAgICByZXR1cm47CistCistICAvKiBUcnkgdG8gb3BlbiB0aGUgYWRkcmVzc2VkIGZpbGUuICAqLworLSAgZmQgPSBvcGVuIChkb21haW5fZmlsZS0+ZmlsZW5hbWUsIE9fUkRPTkxZKTsKKy0gIGlmIChmZCA9PSAtMSkKKy0gICAgcmV0dXJuOworLQorLSAgLyogV2UgbXVzdCBrbm93IGFib3V0IHRoZSBzaXplIG9mIHRoZSBmaWxlLiAgKi8KKy0gIGlmIChmc3RhdCAoZmQsICZzdCkgIT0gMAorLSAgICAgICYmIHN0LnN0X3NpemUgPCAob2ZmX3QpIHNpemVvZiAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyKSkKKy0gICAgeworLSAgICAgIC8qIFNvbWV0aGluZyB3ZW50IHdyb25nLiAgKi8KKy0gICAgICBjbG9zZSAoZmQpOworLSAgICAgIHJldHVybjsKKy0gICAgfQorLQorLSNpZiAoZGVmaW5lZCBIQVZFX01NQVAgJiYgZGVmaW5lZCBIQVZFX01VTk1BUCAmJiAhZGVmaW5lZCBESVNBTExPV19NTUFQKSBcCistICAgIHx8IGRlZmluZWQgX0xJQkMKKy0gIC8qIE5vdyB3ZSBhcmUgcmVhZHkgdG8gbG9hZCB0aGUgZmlsZS4gIElmIG1tYXAoKSBpcyBhdmFpbGFibGUgd2UgdHJ5CistICAgICB0aGlzIGZpcnN0LiAgSWYgbm90IGF2YWlsYWJsZSBvciBpdCBmYWlsZWQgd2UgdHJ5IHRvIGxvYWQgaXQuICAqLworLSAgZGF0YSA9IChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKikgbW1hcCAoTlVMTCwgc3Quc3Rfc2l6ZSwgUFJPVF9SRUFELAorLQkJCQkJIE1BUF9QUklWQVRFLCBmZCwgMCk7CistCistICBpZiAoZGF0YSAhPSAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyICopIC0xKQorLSAgICB7CistICAgICAgLyogbW1hcCgpIGNhbGwgd2FzIHN1Y2Nlc3NmdWwuICAqLworLSAgICAgIGNsb3NlIChmZCk7CistICAgICAgdXNlX21tYXAgPSAxOworLSAgICB9CistI2VuZGlmCistCistICAvKiBJZiB0aGUgZGF0YSBpcyBub3QgeWV0IGF2YWlsYWJsZSAoaS5lLiBtbWFwJ2VkKSB3ZSB0cnkgdG8gbG9hZAorLSAgICAgaXQgbWFudWFsbHkuICAqLworLSAgaWYgKGRhdGEgPT0gKHN0cnVjdCBtb19maWxlX2hlYWRlciAqKSAtMSkKKy0gICAgeworLSAgICAgIG9mZl90IHRvX3JlYWQ7CistICAgICAgY2hhciAqcmVhZF9wdHI7CistCistICAgICAgZGF0YSA9IChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKikgbWFsbG9jIChzdC5zdF9zaXplKTsKKy0gICAgICBpZiAoZGF0YSA9PSBOVUxMKQorLQlyZXR1cm47CistCistICAgICAgdG9fcmVhZCA9IHN0LnN0X3NpemU7CistICAgICAgcmVhZF9wdHIgPSAoY2hhciAqKSBkYXRhOworLSAgICAgIGRvCistCXsKKy0JICBsb25nIGludCBuYiA9IChsb25nIGludCkgcmVhZCAoZmQsIHJlYWRfcHRyLCB0b19yZWFkKTsKKy0JICBpZiAobmIgPT0gLTEpCistCSAgICB7CistCSAgICAgIGNsb3NlIChmZCk7CistCSAgICAgIHJldHVybjsKKy0JICAgIH0KKy0KKy0JICByZWFkX3B0ciArPSBuYjsKKy0JICB0b19yZWFkIC09IG5iOworLQl9CistICAgICAgd2hpbGUgKHRvX3JlYWQgPiAwKTsKKy0KKy0gICAgICBjbG9zZSAoZmQpOworLSAgICB9CistCistICAvKiBVc2luZyB0aGUgbWFnaWMgbnVtYmVyIHdlIGNhbiB0ZXN0IHdoZXRoZXIgaXQgcmVhbGx5IGlzIGEgbWVzc2FnZQorLSAgICAgY2F0YWxvZyBmaWxlLiAgKi8KKy0gIGlmIChkYXRhLT5tYWdpYyAhPSBfTUFHSUMgJiYgZGF0YS0+bWFnaWMgIT0gX01BR0lDX1NXQVBQRUQpCistICAgIHsKKy0gICAgICAvKiBUaGUgbWFnaWMgbnVtYmVyIGlzIHdyb25nOiBub3QgYSBtZXNzYWdlIGNhdGFsb2cgZmlsZS4gICovCistI2lmIChkZWZpbmVkIEhBVkVfTU1BUCAmJiBkZWZpbmVkIEhBVkVfTVVOTUFQICYmICFkZWZpbmVkIERJU0FMTE9XX01NQVApIFwKKy0gICAgfHwgZGVmaW5lZCBfTElCQworLSAgICAgIGlmICh1c2VfbW1hcCkKKy0JbXVubWFwICgoY2FkZHJfdCkgZGF0YSwgc3Quc3Rfc2l6ZSk7CistICAgICAgZWxzZQorLSNlbmRpZgorLQlmcmVlIChkYXRhKTsKKy0gICAgICByZXR1cm47CistICAgIH0KKy0KKy0gIGRvbWFpbl9maWxlLT5kYXRhCistICAgID0gKHN0cnVjdCBsb2FkZWRfZG9tYWluICopIG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgbG9hZGVkX2RvbWFpbikpOworLSAgaWYgKGRvbWFpbl9maWxlLT5kYXRhID09IE5VTEwpCistICAgIHJldHVybjsKKy0KKy0gIGRvbWFpbiA9IChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqKSBkb21haW5fZmlsZS0+ZGF0YTsKKy0gIGRvbWFpbi0+ZGF0YSA9IChjaGFyICopIGRhdGE7CistICBkb21haW4tPm11c3Rfc3dhcCA9IGRhdGEtPm1hZ2ljICE9IF9NQUdJQzsKKy0KKy0gIC8qIEZpbGwgaW4gdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhdmFpbGFibGUgdGFibGVzLiAgKi8KKy0gIHN3aXRjaCAoVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPnJldmlzaW9uKSkKKy0gICAgeworLSAgICBjYXNlIDA6CistICAgICAgZG9tYWluLT5uc3RyaW5ncyA9IFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5uc3RyaW5ncyk7CistICAgICAgZG9tYWluLT5vcmlnX3RhYiA9IChzdHJ1Y3Qgc3RyaW5nX2Rlc2MgKikKKy0JKChjaGFyICopIGRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+b3JpZ190YWJfb2Zmc2V0KSk7CistICAgICAgZG9tYWluLT50cmFuc190YWIgPSAoc3RydWN0IHN0cmluZ19kZXNjICopCistCSgoY2hhciAqKSBkYXRhICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPnRyYW5zX3RhYl9vZmZzZXQpKTsKKy0gICAgICBkb21haW4tPmhhc2hfc2l6ZSA9IFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5oYXNoX3RhYl9zaXplKTsKKy0gICAgICBkb21haW4tPmhhc2hfdGFiID0gKG5sc191aW50MzIgKikKKy0JKChjaGFyICopIGRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+aGFzaF90YWJfb2Zmc2V0KSk7CistICAgICAgYnJlYWs7CistICAgIGRlZmF1bHQ6CistICAgICAgLyogVGhpcyBpcyBhbiBpbGxlZ2FsIHJldmlzaW9uLiAgKi8KKy0jaWYgKGRlZmluZWQgSEFWRV9NTUFQICYmIGRlZmluZWQgSEFWRV9NVU5NQVAgJiYgIWRlZmluZWQgRElTQUxMT1dfTU1BUCkgXAorLSAgICB8fCBkZWZpbmVkIF9MSUJDCistICAgICAgaWYgKHVzZV9tbWFwKQorLQltdW5tYXAgKChjYWRkcl90KSBkYXRhLCBzdC5zdF9zaXplKTsKKy0gICAgICBlbHNlCistI2VuZGlmCistCWZyZWUgKGRhdGEpOworLSAgICAgIGZyZWUgKGRvbWFpbik7CistICAgICAgZG9tYWluX2ZpbGUtPmRhdGEgPSBOVUxMOworLSAgICAgIHJldHVybjsKKy0gICAgfQorLQorLSAgLyogU2hvdyB0aGF0IG9uZSBkb21haW4gaXMgY2hhbmdlZC4gIFRoaXMgbWlnaHQgbWFrZSBzb21lIGNhY2hlZAorLSAgICAgdHJhbnNsYXRpb25zIGludmFsaWQuICAqLworLSAgKytfbmxfbXNnX2NhdF9jbnRyOworLX0KK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2xvY2FsZWFsaWFzLmMgbHJ6c3otMC4xMi4yMC9pbnRsL2xvY2FsZWFsaWFzLmMKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvbG9jYWxlYWxpYXMuYwkxOTk4LTA0LTI2IDE0OjIyOjM3LjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9sb2NhbGVhbGlhcy5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSwzNzggKzAsMCBAQAorLS8qIEhhbmRsZSBhbGlhc2VzIGZvciBsb2NhbGUgbmFtZXMKKy0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCistCistICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKy0KKy0jaWZkZWYgSEFWRV9DT05GSUdfSAorLSMgaW5jbHVkZSA8Y29uZmlnLmg+CistI2VuZGlmCistCistI2luY2x1ZGUgPGN0eXBlLmg+CistI2luY2x1ZGUgPHN0ZGlvLmg+CistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLQorLSNpZmRlZiBfX0dOVUNfXworLSMgZGVmaW5lIGFsbG9jYSBfX2J1aWx0aW5fYWxsb2NhCistIyBkZWZpbmUgSEFWRV9BTExPQ0EgMQorLSNlbHNlCistIyBpZiBkZWZpbmVkIEhBVkVfQUxMT0NBX0ggfHwgZGVmaW5lZCBfTElCQworLSMgIGluY2x1ZGUgPGFsbG9jYS5oPgorLSMgZWxzZQorLSMgIGlmZGVmIF9BSVgKKy0gI3ByYWdtYSBhbGxvY2EKKy0jICBlbHNlCistIyAgIGlmbmRlZiBhbGxvY2EKKy1jaGFyICphbGxvY2EgKCk7CistIyAgIGVuZGlmCistIyAgZW5kaWYKKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgX0xJQkMKKy0jIGluY2x1ZGUgPHN0ZGxpYi5oPgorLSNlbHNlCistY2hhciAqZ2V0ZW52ICgpOworLSMgaWZkZWYgSEFWRV9NQUxMT0NfSAorLSMgIGluY2x1ZGUgPG1hbGxvYy5oPgorLSMgZWxzZQorLXZvaWQgZnJlZSAoKTsKKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmIGRlZmluZWQgSEFWRV9TVFJJTkdfSCB8fCBkZWZpbmVkIF9MSUJDCistIyBpZm5kZWYgX0dOVV9TT1VSQ0UKKy0jICBkZWZpbmUgX0dOVV9TT1VSQ0UJMQorLSMgZW5kaWYKKy0jIGluY2x1ZGUgPHN0cmluZy5oPgorLSNlbHNlCistIyBpbmNsdWRlIDxzdHJpbmdzLmg+CistIyBpZm5kZWYgbWVtY3B5CistIyAgZGVmaW5lIG1lbWNweShEc3QsIFNyYywgTnVtKSBiY29weSAoU3JjLCBEc3QsIE51bSkKKy0jIGVuZGlmCistI2VuZGlmCistI2lmICFIQVZFX1NUUkNIUiAmJiAhZGVmaW5lZCBfTElCQworLSMgaWZuZGVmIHN0cmNocgorLSMgIGRlZmluZSBzdHJjaHIgaW5kZXgKKy0jIGVuZGlmCistI2VuZGlmCistCistI2luY2x1ZGUgImdldHRleHQuaCIKKy0jaW5jbHVkZSAiZ2V0dGV4dFAuaCIKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistI2lmZGVmIF9MSUJDCistLyogUmVuYW1lIHRoZSBub24gQU5TSSBDIGZ1bmN0aW9ucy4gIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkCistICAgYmVjYXVzZSBzb21lIEFOU0kgQyBmdW5jdGlvbnMgd2lsbCByZXF1aXJlIGxpbmtpbmcgd2l0aCB0aGlzIG9iamVjdAorLSAgIGZpbGUgYW5kIHRoZSBuYW1lIHNwYWNlIG11c3Qgbm90IGJlIHBvbGx1dGVkLiAgKi8KKy0jIGRlZmluZSBzdHJjYXNlY21wIF9fc3RyY2FzZWNtcAorLSNlbmRpZgorLQorLQorLS8qIEZvciB0aG9zZSBsb29zaW5nIHN5c3RlbXMgd2hpY2ggZG9uJ3QgaGF2ZSBgYWxsb2NhJyB3ZSBoYXZlIHRvIGFkZAorLSAgIHNvbWUgYWRkaXRpb25hbCBjb2RlIGVtdWxhdGluZyBpdC4gICovCistI2lmZGVmIEhBVkVfQUxMT0NBCistLyogTm90aGluZyBoYXMgdG8gYmUgZG9uZS4gICovCistIyBkZWZpbmUgQUREX0JMT0NLKGxpc3QsIGFkZHJlc3MpIC8qIG5vdGhpbmcgKi8KKy0jIGRlZmluZSBGUkVFX0JMT0NLUyhsaXN0KSAvKiBub3RoaW5nICovCistI2Vsc2UKKy1zdHJ1Y3QgYmxvY2tfbGlzdAorLXsKKy0gIHZvaWQgKmFkZHJlc3M7CistICBzdHJ1Y3QgYmxvY2tfbGlzdCAqbmV4dDsKKy19OworLSMgZGVmaW5lIEFERF9CTE9DSyhsaXN0LCBhZGRyKQkJCQkJCSAgICAgIFwKKy0gIGRvIHsJCQkJCQkJCQkgICAgICBcCistICAgIHN0cnVjdCBibG9ja19saXN0ICpuZXdwID0gKHN0cnVjdCBibG9ja19saXN0ICopIG1hbGxvYyAoc2l6ZW9mICgqbmV3cCkpOyAgXAorLSAgICAvKiBJZiB3ZSBjYW5ub3QgZ2V0IGEgZnJlZSBibG9jayB3ZSBjYW5ub3QgYWRkIHRoZSBuZXcgZWxlbWVudCB0bwkgICAgICBcCistICAgICAgIHRoZSBsaXN0LiAgKi8JCQkJCQkJICAgICAgXAorLSAgICBpZiAobmV3cCAhPSBOVUxMKSB7CQkJCQkJCSAgICAgIFwKKy0gICAgICBuZXdwLT5hZGRyZXNzID0gKGFkZHIpOwkJCQkJCSAgICAgIFwKKy0gICAgICBuZXdwLT5uZXh0ID0gKGxpc3QpOwkJCQkJCSAgICAgIFwKKy0gICAgICAobGlzdCkgPSBuZXdwOwkJCQkJCQkgICAgICBcCistICAgIH0JCQkJCQkJCQkgICAgICBcCistICB9IHdoaWxlICgwKQorLSMgZGVmaW5lIEZSRUVfQkxPQ0tTKGxpc3QpCQkJCQkJICAgICAgXAorLSAgZG8gewkJCQkJCQkJCSAgICAgIFwKKy0gICAgd2hpbGUgKGxpc3QgIT0gTlVMTCkgewkJCQkJCSAgICAgIFwKKy0gICAgICBzdHJ1Y3QgYmxvY2tfbGlzdCAqb2xkID0gbGlzdDsJCQkJCSAgICAgIFwKKy0gICAgICBsaXN0ID0gbGlzdC0+bmV4dDsJCQkJCQkgICAgICBcCistICAgICAgZnJlZSAob2xkKTsJCQkJCQkJICAgICAgXAorLSAgICB9CQkJCQkJCQkJICAgICAgXAorLSAgfSB3aGlsZSAoMCkKKy0jIHVuZGVmIGFsbG9jYQorLSMgZGVmaW5lIGFsbG9jYShzaXplKSAobWFsbG9jIChzaXplKSkKKy0jZW5kaWYJLyogaGF2ZSBhbGxvY2EgKi8KKy0KKy0KKy1zdHJ1Y3QgYWxpYXNfbWFwCisteworLSAgY29uc3QgY2hhciAqYWxpYXM7CistICBjb25zdCBjaGFyICp2YWx1ZTsKKy19OworLQorLQorLXN0YXRpYyBzdHJ1Y3QgYWxpYXNfbWFwICptYXA7Cistc3RhdGljIHNpemVfdCBubWFwID0gMDsKKy1zdGF0aWMgc2l6ZV90IG1heG1hcCA9IDA7CistCistCistLyogUHJvdG90eXBlcyBmb3IgbG9jYWwgZnVuY3Rpb25zLiAgKi8KKy1zdGF0aWMgc2l6ZV90IHJlYWRfYWxpYXNfZmlsZSBQQVJBTVMgKChjb25zdCBjaGFyICpmbmFtZSwgaW50IGZuYW1lX2xlbikpOworLXN0YXRpYyB2b2lkIGV4dGVuZF9hbGlhc190YWJsZSBQQVJBTVMgKCh2b2lkKSk7Cistc3RhdGljIGludCBhbGlhc19jb21wYXJlIFBBUkFNUyAoKGNvbnN0IHN0cnVjdCBhbGlhc19tYXAgKm1hcDEsCistCQkJCSAgY29uc3Qgc3RydWN0IGFsaWFzX21hcCAqbWFwMikpOworLQorLQorLWNvbnN0IGNoYXIgKgorLV9ubF9leHBhbmRfYWxpYXMgKG5hbWUpCistICAgIGNvbnN0IGNoYXIgKm5hbWU7CisteworLSAgc3RhdGljIGNvbnN0IGNoYXIgKmxvY2FsZV9hbGlhc19wYXRoID0gTE9DQUxFX0FMSUFTX1BBVEg7CistICBzdHJ1Y3QgYWxpYXNfbWFwICpyZXR2YWw7CistICBzaXplX3QgYWRkZWQ7CistCistICBkbworLSAgICB7CistICAgICAgc3RydWN0IGFsaWFzX21hcCBpdGVtOworLQorLSAgICAgIGl0ZW0uYWxpYXMgPSBuYW1lOworLQorLSAgICAgIGlmIChubWFwID4gMCkKKy0JcmV0dmFsID0gKHN0cnVjdCBhbGlhc19tYXAgKikgYnNlYXJjaCAoJml0ZW0sIG1hcCwgbm1hcCwKKy0JCQkJCSAgICAgICBzaXplb2YgKHN0cnVjdCBhbGlhc19tYXApLAorLQkJCQkJICAgICAgIChpbnQgKCopIFBBUkFNUyAoKGNvbnN0IHZvaWQgKiwKKy0JCQkJCQkJCSBjb25zdCB2b2lkICopKQorLQkJCQkJCSkgYWxpYXNfY29tcGFyZSk7CistICAgICAgZWxzZQorLQlyZXR2YWwgPSBOVUxMOworLQorLSAgICAgIC8qIFdlIHJlYWxseSBmb3VuZCBhbiBhbGlhcy4gIFJldHVybiB0aGUgdmFsdWUuICAqLworLSAgICAgIGlmIChyZXR2YWwgIT0gTlVMTCkKKy0JcmV0dXJuIHJldHZhbC0+dmFsdWU7CistCistICAgICAgLyogUGVyaGFwcyB3ZSBjYW4gZmluZCBhbm90aGVyIGFsaWFzIGZpbGUuICAqLworLSAgICAgIGFkZGVkID0gMDsKKy0gICAgICB3aGlsZSAoYWRkZWQgPT0gMCAmJiBsb2NhbGVfYWxpYXNfcGF0aFswXSAhPSAnXDAnKQorLQl7CistCSAgY29uc3QgY2hhciAqc3RhcnQ7CistCistCSAgd2hpbGUgKGxvY2FsZV9hbGlhc19wYXRoWzBdID09ICc6JykKKy0JICAgICsrbG9jYWxlX2FsaWFzX3BhdGg7CistCSAgc3RhcnQgPSBsb2NhbGVfYWxpYXNfcGF0aDsKKy0KKy0JICB3aGlsZSAobG9jYWxlX2FsaWFzX3BhdGhbMF0gIT0gJ1wwJyAmJiBsb2NhbGVfYWxpYXNfcGF0aFswXSAhPSAnOicpCistCSAgICArK2xvY2FsZV9hbGlhc19wYXRoOworLQorLQkgIGlmIChzdGFydCA8IGxvY2FsZV9hbGlhc19wYXRoKQorLQkgICAgYWRkZWQgPSByZWFkX2FsaWFzX2ZpbGUgKHN0YXJ0LCBsb2NhbGVfYWxpYXNfcGF0aCAtIHN0YXJ0KTsKKy0JfQorLSAgICB9CistICB3aGlsZSAoYWRkZWQgIT0gMCk7CistCistICByZXR1cm4gTlVMTDsKKy19CistCistCistc3RhdGljIHNpemVfdAorLXJlYWRfYWxpYXNfZmlsZSAoZm5hbWUsIGZuYW1lX2xlbikKKy0gICAgIGNvbnN0IGNoYXIgKmZuYW1lOworLSAgICAgaW50IGZuYW1lX2xlbjsKKy17CistI2lmbmRlZiBIQVZFX0FMTE9DQQorLSAgc3RydWN0IGJsb2NrX2xpc3QgKmJsb2NrX2xpc3QgPSBOVUxMOworLSNlbmRpZgorLSAgRklMRSAqZnA7CistICBjaGFyICpmdWxsX2ZuYW1lOworLSAgc2l6ZV90IGFkZGVkOworLSAgc3RhdGljIGNvbnN0IGNoYXIgYWxpYXNmaWxlW10gPSAiL2xvY2FsZS5hbGlhcyI7CistCistICBmdWxsX2ZuYW1lID0gKGNoYXIgKikgYWxsb2NhIChmbmFtZV9sZW4gKyBzaXplb2YgYWxpYXNmaWxlKTsKKy0gIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgZnVsbF9mbmFtZSk7CistICBtZW1jcHkgKGZ1bGxfZm5hbWUsIGZuYW1lLCBmbmFtZV9sZW4pOworLSAgbWVtY3B5ICgmZnVsbF9mbmFtZVtmbmFtZV9sZW5dLCBhbGlhc2ZpbGUsIHNpemVvZiBhbGlhc2ZpbGUpOworLQorLSAgZnAgPSBmb3BlbiAoZnVsbF9mbmFtZSwgInIiKTsKKy0gIGlmIChmcCA9PSBOVUxMKQorLSAgICB7CistICAgICAgRlJFRV9CTE9DS1MgKGJsb2NrX2xpc3QpOworLSAgICAgIHJldHVybiAwOworLSAgICB9CistCistICBhZGRlZCA9IDA7CistICB3aGlsZSAoIWZlb2YgKGZwKSkKKy0gICAgeworLSAgICAgIC8qIEl0IGlzIGEgcmVhc29uYWJsZSBhcHByb2FjaCB0byB1c2UgYSBmaXggYnVmZmVyIGhlcmUgYmVjYXVzZQorLQkgYSkgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgZmlyc3QgdHdvIGZpZWxkcworLQkgYikgdGhlc2UgZmllbGRzIG11c3QgYmUgdXNhYmxlIGFzIGZpbGUgbmFtZXMgYW5kIHNvIG11c3Qgbm90CistCSAgICBiZSB0aGF0IGxvbmcKKy0gICAgICAgKi8KKy0gICAgICBjaGFyIGJ1ZltCVUZTSVpdOworLSAgICAgIGNoYXIgKmFsaWFzOworLSAgICAgIGNoYXIgKnZhbHVlOworLSAgICAgIGNoYXIgKmNwOworLQorLSAgICAgIGlmIChmZ2V0cyAoYnVmLCBCVUZTSVosIGZwKSA9PSBOVUxMKQorLQkvKiBFT0YgcmVhY2hlZC4gICovCistCWJyZWFrOworLQorLSAgICAgIGNwID0gYnVmOworLSAgICAgIC8qIElnbm9yZSBsZWFkaW5nIHdoaXRlIHNwYWNlLiAgKi8KKy0gICAgICB3aGlsZSAoaXNzcGFjZSAoY3BbMF0pKQorLQkrK2NwOworLQorLSAgICAgIC8qIEEgbGVhZGluZyAnIycgc2lnbmFscyBhIGNvbW1lbnQgbGluZS4gICovCistICAgICAgaWYgKGNwWzBdICE9ICdcMCcgJiYgY3BbMF0gIT0gJyMnKQorLQl7CistCSAgYWxpYXMgPSBjcCsrOworLQkgIHdoaWxlIChjcFswXSAhPSAnXDAnICYmICFpc3NwYWNlIChjcFswXSkpCistCSAgICArK2NwOworLQkgIC8qIFRlcm1pbmF0ZSBhbGlhcyBuYW1lLiAgKi8KKy0JICBpZiAoY3BbMF0gIT0gJ1wwJykKKy0JICAgICpjcCsrID0gJ1wwJzsKKy0KKy0JICAvKiBOb3cgbG9vayBmb3IgdGhlIGJlZ2lubmluZyBvZiB0aGUgdmFsdWUuICAqLworLQkgIHdoaWxlIChpc3NwYWNlIChjcFswXSkpCistCSAgICArK2NwOworLQorLQkgIGlmIChjcFswXSAhPSAnXDAnKQorLQkgICAgeworLQkgICAgICBjaGFyICp0cDsKKy0JICAgICAgc2l6ZV90IGxlbjsKKy0KKy0JICAgICAgdmFsdWUgPSBjcCsrOworLQkgICAgICB3aGlsZSAoY3BbMF0gIT0gJ1wwJyAmJiAhaXNzcGFjZSAoY3BbMF0pKQorLQkJKytjcDsKKy0JICAgICAgLyogVGVybWluYXRlIHZhbHVlLiAgKi8KKy0JICAgICAgaWYgKGNwWzBdID09ICdcbicpCistCQl7CistCQkgIC8qIFRoaXMgaGFzIHRvIGJlIGRvbmUgdG8gbWFrZSB0aGUgZm9sbG93aW5nIHRlc3QKKy0JCSAgICAgZm9yIHRoZSBlbmQgb2YgbGluZSBwb3NzaWJsZS4gIFdlIGFyZSBsb29raW5nIGZvcgorLQkJICAgICB0aGUgdGVybWluYXRpbmcgJ1xuJyB3aGljaCBkbyBub3Qgb3ZlcndyaXRlIGhlcmUuICAqLworLQkJICAqY3ArKyA9ICdcMCc7CistCQkgICpjcCA9ICdcbic7CistCQl9CistCSAgICAgIGVsc2UgaWYgKGNwWzBdICE9ICdcMCcpCistCQkqY3ArKyA9ICdcMCc7CistCistCSAgICAgIGlmIChubWFwID49IG1heG1hcCkKKy0JCWV4dGVuZF9hbGlhc190YWJsZSAoKTsKKy0KKy0JICAgICAgLyogV2UgY2Fubm90IGRlcGVuZCBvbiBzdHJkdXAgYXZhaWxhYmxlIGluIHRoZSBsaWJjLiAgU2lnaCEgICovCistCSAgICAgIGxlbiA9IHN0cmxlbiAoYWxpYXMpICsgMTsKKy0JICAgICAgdHAgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7CistCSAgICAgIGlmICh0cCA9PSBOVUxMKQorLQkJeworLQkJICBGUkVFX0JMT0NLUyAoYmxvY2tfbGlzdCk7CistCQkgIHJldHVybiBhZGRlZDsKKy0JCX0KKy0JICAgICAgbWVtY3B5ICh0cCwgYWxpYXMsIGxlbik7CistCSAgICAgIG1hcFtubWFwXS5hbGlhcyA9IHRwOworLQorLQkgICAgICBsZW4gPSBzdHJsZW4gKHZhbHVlKSArIDE7CistCSAgICAgIHRwID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOworLQkgICAgICBpZiAodHAgPT0gTlVMTCkKKy0JCXsKKy0JCSAgRlJFRV9CTE9DS1MgKGJsb2NrX2xpc3QpOworLQkJICByZXR1cm4gYWRkZWQ7CistCQl9CistCSAgICAgIG1lbWNweSAodHAsIHZhbHVlLCBsZW4pOworLQkgICAgICBtYXBbbm1hcF0udmFsdWUgPSB0cDsKKy0KKy0JICAgICAgKytubWFwOworLQkgICAgICArK2FkZGVkOworLQkgICAgfQorLQl9CistCistICAgICAgLyogUG9zc2libHkgbm90IHRoZSB3aG9sZSBsaW5lIGZpdHMgaW50byB0aGUgYnVmZmVyLiAgSWdub3JlCistCSB0aGUgcmVzdCBvZiB0aGUgbGluZS4gICovCistICAgICAgd2hpbGUgKHN0cmNociAoY3AsICdcbicpID09IE5VTEwpCistCXsKKy0JICBjcCA9IGJ1ZjsKKy0JICBpZiAoZmdldHMgKGJ1ZiwgQlVGU0laLCBmcCkgPT0gTlVMTCkKKy0JICAgIC8qIE1ha2Ugc3VyZSB0aGUgaW5uZXIgbG9vcCB3aWxsIGJlIGxlZnQuICBUaGUgb3V0ZXIgbG9vcAorLQkgICAgICAgd2lsbCBleGl0IGF0IHRoZSBgZmVvZicgdGVzdC4gICovCistCSAgICAqY3AgPSAnXG4nOworLQl9CistICAgIH0KKy0KKy0gIC8qIFNob3VsZCB3ZSB0ZXN0IGZvciBmZXJyb3IoKT8gIEkgdGhpbmsgd2UgaGF2ZSB0byBzaWxlbnRseSBpZ25vcmUKKy0gICAgIGVycm9ycy4gIC0tZHJlcHBlciAgKi8KKy0gIGZjbG9zZSAoZnApOworLQorLSAgaWYgKGFkZGVkID4gMCkKKy0gICAgcXNvcnQgKG1hcCwgbm1hcCwgc2l6ZW9mIChzdHJ1Y3QgYWxpYXNfbWFwKSwKKy0JICAgKGludCAoKikgUEFSQU1TICgoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKSkgYWxpYXNfY29tcGFyZSk7CistCistICBGUkVFX0JMT0NLUyAoYmxvY2tfbGlzdCk7CistICByZXR1cm4gYWRkZWQ7CistfQorLQorLQorLXN0YXRpYyB2b2lkCistZXh0ZW5kX2FsaWFzX3RhYmxlICgpCisteworLSAgc2l6ZV90IG5ld19zaXplOworLSAgc3RydWN0IGFsaWFzX21hcCAqbmV3X21hcDsKKy0KKy0gIG5ld19zaXplID0gbWF4bWFwID09IDAgPyAxMDAgOiAyICogbWF4bWFwOworLSAgbmV3X21hcCA9IChzdHJ1Y3QgYWxpYXNfbWFwICopIG1hbGxvYyAobmV3X3NpemUKKy0JCQkJCSAqIHNpemVvZiAoc3RydWN0IGFsaWFzX21hcCkpOworLSAgaWYgKG5ld19tYXAgPT0gTlVMTCkKKy0gICAgLyogU2ltcGx5IGRvbid0IGV4dGVuZDogd2UgZG9uJ3QgaGF2ZSBhbnkgbW9yZSBjb3JlLiAgKi8KKy0gICAgcmV0dXJuOworLQorLSAgbWVtY3B5IChuZXdfbWFwLCBtYXAsIG5tYXAgKiBzaXplb2YgKHN0cnVjdCBhbGlhc19tYXApKTsKKy0KKy0gIGlmIChtYXhtYXAgIT0gMCkKKy0gICAgZnJlZSAobWFwKTsKKy0KKy0gIG1hcCA9IG5ld19tYXA7CistICBtYXhtYXAgPSBuZXdfc2l6ZTsKKy19CistCistCistc3RhdGljIGludAorLWFsaWFzX2NvbXBhcmUgKG1hcDEsIG1hcDIpCistICAgICBjb25zdCBzdHJ1Y3QgYWxpYXNfbWFwICptYXAxOworLSAgICAgY29uc3Qgc3RydWN0IGFsaWFzX21hcCAqbWFwMjsKKy17CistI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX1NUUkNBU0VDTVAKKy0gIHJldHVybiBzdHJjYXNlY21wIChtYXAxLT5hbGlhcywgbWFwMi0+YWxpYXMpOworLSNlbHNlCistICBjb25zdCB1bnNpZ25lZCBjaGFyICpwMSA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIG1hcDEtPmFsaWFzOworLSAgY29uc3QgdW5zaWduZWQgY2hhciAqcDIgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBtYXAyLT5hbGlhczsKKy0gIHVuc2lnbmVkIGNoYXIgYzEsIGMyOworLQorLSAgaWYgKHAxID09IHAyKQorLSAgICByZXR1cm4gMDsKKy0KKy0gIGRvCistICAgIHsKKy0gICAgICAvKiBJIGtub3cgdGhpcyBzZWVtcyB0byBiZSBvZGQgYnV0IHRoZSB0b2xvd2VyKCkgZnVuY3Rpb24gaW4KKy0JIHNvbWUgc3lzdGVtcyBsaWJjIGNhbm5vdCBoYW5kbGUgbm9uYWxwaGEgY2hhcmFjdGVycy4gICovCistICAgICAgYzEgPSBpc3VwcGVyICgqcDEpID8gdG9sb3dlciAoKnAxKSA6ICpwMTsKKy0gICAgICBjMiA9IGlzdXBwZXIgKCpwMikgPyB0b2xvd2VyICgqcDIpIDogKnAyOworLSAgICAgIGlmIChjMSA9PSAnXDAnKQorLQlicmVhazsKKy0gICAgICArK3AxOworLSAgICAgICsrcDI7CistICAgIH0KKy0gIHdoaWxlIChjMSA9PSBjMik7CistCistICByZXR1cm4gYzEgLSBjMjsKKy0jZW5kaWYKKy19CitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9NYWtlZmlsZS5pbiBscnpzei0wLjEyLjIwL2ludGwvTWFrZWZpbGUuaW4KKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvTWFrZWZpbGUuaW4JMTk5OC0wNC0yNiAxNDoyMjozNS4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvTWFrZWZpbGUuaW4JMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDIxNCArMCwwIEBACistIyBNYWtlZmlsZSBmb3IgZGlyZWN0b3J5IHdpdGggbWVzc2FnZSBjYXRhbG9nIGhhbmRsaW5nIGluIEdOVSBOTFMgVXRpbGl0aWVzLgorLSMgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLSMKKy0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSMgYW55IGxhdGVyIHZlcnNpb24uCistIworLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0jCistIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCistCistUEFDS0FHRSA9IEBQQUNLQUdFQAorLVZFUlNJT04gPSBAVkVSU0lPTkAKKy0KKy1TSEVMTCA9IC9iaW4vc2gKKy0KKy1zcmNkaXIgPSBAc3JjZGlyQAorLXRvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKKy10b3BfYnVpbGRkaXIgPSAuLgorLVZQQVRIID0gQHNyY2RpckAKKy0KKy1wcmVmaXggPSBAcHJlZml4QAorLWV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAorLXRyYW5zZm9ybSA9IEBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lQAorLWxpYmRpciA9ICQoZXhlY19wcmVmaXgpL2xpYgorLWluY2x1ZGVkaXIgPSAkKHByZWZpeCkvaW5jbHVkZQorLWRhdGFkaXIgPSAkKHByZWZpeCkvQERBVEFESVJOQU1FQAorLWxvY2FsZWRpciA9ICQoZGF0YWRpcikvbG9jYWxlCistZ251bG9jYWxlZGlyID0gJChwcmVmaXgpL3NoYXJlL2xvY2FsZQorLWdldHRleHRzcmNkaXIgPSBAZGF0YWRpckAvZ2V0dGV4dC9pbnRsCistYWxpYXNwYXRoID0gJChsb2NhbGVkaXIpOi4KKy1zdWJkaXIgPSBpbnRsCistCistSU5TVEFMTCA9IEBJTlNUQUxMQAorLUlOU1RBTExfREFUQSA9IEBJTlNUQUxMX0RBVEFACistTUtJTlNUQUxMRElSUyA9IEBNS0lOU1RBTExESVJTQAorLQorLWwgPSBAbEAKKy0KKy1BUiA9IGFyCistQ0MgPSBAQ0NACistTElCVE9PTCA9IEBMSUJUT09MQAorLVJBTkxJQiA9IEBSQU5MSUJACistCistREVGUyA9IC1ETE9DQUxFRElSPVwiJChsb2NhbGVkaXIpXCIgLURHTlVMT0NBTEVESVI9XCIkKGdudWxvY2FsZWRpcilcIiBcCistLURMT0NBTEVfQUxJQVNfUEFUSD1cIiQoYWxpYXNwYXRoKVwiIEBERUZTQAorLUNQUEZMQUdTID0gQENQUEZMQUdTQAorLUNGTEFHUyA9IEBDRkxBR1NACistTERGTEFHUyA9IEBMREZMQUdTQAorLQorLUNPTVBJTEUgPSAkKENDKSAtYyAkKERFRlMpICQoSU5DTFVERVMpICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKSAkKFhDRkxBR1MpCistCistSEVBREVSUyA9ICQoQ09NSERSUykgbGliZ2V0dGV4dC5oIGxvYWRpbmZvLmgKKy1DT01IRFJTID0gZ2V0dGV4dC5oIGdldHRleHRQLmggaGFzaC1zdHJpbmcuaAorLVNPVVJDRVMgPSAkKENPTVNSQ1MpIGludGwtY29tcGF0LmMgY2F0LWNvbXBhdC5jCistQ09NU1JDUyA9IGJpbmR0ZXh0ZG9tLmMgZGNnZXR0ZXh0LmMgZGdldHRleHQuYyBnZXR0ZXh0LmMgXAorLWZpbmRkb21haW4uYyBsb2FkbXNnY2F0LmMgbG9jYWxlYWxpYXMuYyB0ZXh0ZG9tYWluLmMgbDEwbmZsaXN0LmMgXAorLWV4cGxvZGVuYW1lLmMKKy1PQkpFQ1RTID0gQElOVExPQkpTQCBiaW5kdGV4dGRvbS4kbG8gZGNnZXR0ZXh0LiRsbyBkZ2V0dGV4dC4kbG8gZ2V0dGV4dC4kbG8gXAorLWZpbmRkb21haW4uJGxvIGxvYWRtc2djYXQuJGxvIGxvY2FsZWFsaWFzLiRsbyB0ZXh0ZG9tYWluLiRsbyBsMTBuZmxpc3QuJGxvIFwKKy1leHBsb2RlbmFtZS4kbG8KKy1DQVRPQkpTID0gY2F0LWNvbXBhdC4kbG8gLi4vcG8vY2F0LWlkLXRibC4kbG8KKy1HRVRUT0JKUyA9IGludGwtY29tcGF0LiRsbworLURJU1RGSUxFUy5jb21tb24gPSBDaGFuZ2VMb2cgTWFrZWZpbGUuaW4gbGludXgtbXNnLnNlZCBwbzJ0Ymwuc2VkLmluIFwKKy14b3Blbi1tc2cuc2VkICQoSEVBREVSUykgJChTT1VSQ0VTKQorLURJU1RGSUxFUy5ub3JtYWwgPSBWRVJTSU9OCistRElTVEZJTEVTLmdldHRleHQgPSBsaWJpbnRsLmdsaWJjIGludGxoLmluc3QuaW4KKy0KKy0uU1VGRklYRVM6CistLlNVRkZJWEVTOiAuYyAubyAubG8KKy0uYy5vOgorLQkkKENPTVBJTEUpICQ8CistLmMubG86CistCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkPAorLQorLUlOQ0xVREVTID0gLUkuLiAtSS4gLUkkKHRvcF9zcmNkaXIpL2ludGwgLUkkKHRvcF9zcmNkaXIpL2xpYgorLQorLWFsbDogYWxsLUBVU0VfSU5DTFVERURfTElCSU5UTEAKKy0KKy1hbGwteWVzOiBsaWJpbnRsLiRsYSBpbnRsaC5pbnN0CistYWxsLW5vOgorLQorLWxpYmludGwuYTogJChPQkpFQ1RTKQorLQlybSAtZiAkQAorLQkkKEFSKSBjcnUgJEAgJChPQkpFQ1RTKQorLQkkKFJBTkxJQikgJEAKKy0KKy1saWJpbnRsLmxhOiAkKE9CSkVDVFMpCistCSQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJChDQykgJChMREZMQUdTKSAtbyAkQCAkKE9CSkVDVFMpIFwKKy0JCSAgIC12ZXJzaW9uLWluZm8gMTowIC1ycGF0aCAkKGxpYmRpcikKKy0KKy0uLi9wby9jYXQtaWQtdGJsLiRsbzogLi4vcG8vY2F0LWlkLXRibC5jICQodG9wX3NyY2RpcikvcG8vJChQQUNLQUdFKS5wb3QKKy0JY2QgLi4vcG8gJiYgJChNQUtFKSBjYXQtaWQtdGJsLiRsbworLQorLWNoZWNrOiBhbGwKKy0KKy0jIFRoaXMgaW5zdGFsbGF0aW9uIGdvYWwgaXMgb25seSB1c2VkIGluIEdOVSBnZXR0ZXh0LiAgUGFja2FnZXMgd2hpY2gKKy0jIG9ubHkgdXNlIHRoZSBsaWJyYXJ5IHNob3VsZCB1c2UgaW5zdGFsbCBpbnN0ZWFkLgorLQorLSMgV2UgbXVzdCBub3QgaW5zdGFsbCB0aGUgbGliaW50bC5oL2xpYmludGwuYSBmaWxlcyBpZiB3ZSBhcmUgb24gYQorLSMgc3lzdGVtIHdoaWNoIGhhcyB0aGUgZ2V0dGV4dCgpIGZ1bmN0aW9uIGluIGl0cyBDIGxpYnJhcnkgb3IgaW4gYQorLSMgc2VwYXJhdGUgbGlicmFyeSBvciB1c2UgdGhlIGNhdGdldHMgaW50ZXJmYWNlLiAgQSBzcGVjaWFsIGNhc2UgaXMKKy0jIHdoZXJlIGNvbmZpZ3VyZSBmb3VuZCBhIHByZXZpb3VzbHkgaW5zdGFsbGVkIEdOVSBnZXR0ZXh0IGxpYnJhcnkuCistIyBJZiB5b3Ugd2FudCB0byB1c2UgdGhlIG9uZSB3aGljaCBjb21lcyB3aXRoIHRoaXMgdmVyc2lvbiBvZiB0aGUKKy0jIHBhY2thZ2UsIHlvdSBoYXZlIHRvIHVzZSBgY29uZmlndXJlIC0td2l0aC1pbmNsdWRlZC1nZXR0ZXh0Jy4KKy1pbnN0YWxsOiBpbnN0YWxsLWV4ZWMgaW5zdGFsbC1kYXRhCistaW5zdGFsbC1leGVjOiBhbGwKKy0JaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dCIgXAorLQkgICAmJiB0ZXN0ICdASU5UTE9CSlNAJyA9ICckKEdFVFRPQkpTKSc7IHRoZW4gXAorLQkgIGlmIHRlc3QgLXIgJChNS0lOU1RBTExESVJTKTsgdGhlbiBcCistCSAgICAkKE1LSU5TVEFMTERJUlMpICQobGliZGlyKSAkKGluY2x1ZGVkaXIpOyBcCistCSAgZWxzZSBcCistCSAgICAkKHRvcF9zcmNkaXIpL21raW5zdGFsbGRpcnMgJChsaWJkaXIpICQoaW5jbHVkZWRpcik7IFwKKy0JICBmaTsgXAorLQkgICQoSU5TVEFMTF9EQVRBKSBpbnRsaC5pbnN0ICQoaW5jbHVkZWRpcikvbGliaW50bC5oOyBcCistCSAgJChJTlNUQUxMX0RBVEEpIGxpYmludGwuYSAkKGxpYmRpcikvbGliaW50bC5hOyBcCistCWVsc2UgXAorLQkgIDogOyBcCistCWZpCistaW5zdGFsbC1kYXRhOiBhbGwKKy0JaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dCI7IHRoZW4gXAorLQkgIGlmIHRlc3QgLXIgJChNS0lOU1RBTExESVJTKTsgdGhlbiBcCistCSAgICAkKE1LSU5TVEFMTERJUlMpICQoZ2V0dGV4dHNyY2Rpcik7IFwKKy0JICBlbHNlIFwKKy0JICAgICQodG9wX3NyY2RpcikvbWtpbnN0YWxsZGlycyAkKGdldHRleHRzcmNkaXIpOyBcCistCSAgZmk7IFwKKy0JICAkKElOU1RBTExfREFUQSkgVkVSU0lPTiAkKGdldHRleHRzcmNkaXIpL1ZFUlNJT047IFwKKy0JICBkaXN0cz0iJChESVNURklMRVMuY29tbW9uKSI7IFwKKy0JICBmb3IgZmlsZSBpbiAkJGRpc3RzOyBkbyBcCistCSAgICAkKElOU1RBTExfREFUQSkgJChzcmNkaXIpLyQkZmlsZSAkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAorLQkgIGRvbmU7IFwKKy0JZWxzZSBcCistCSAgOiA7IFwKKy0JZmkKKy0KKy0jIERlZmluZSB0aGlzIGFzIGVtcHR5IHVudGlsIEkgZm91bmQgYSB1c2VmdWwgYXBwbGljYXRpb24uCistaW5zdGFsbGNoZWNrOgorLQorLXVuaW5zdGFsbDoKKy0JZGlzdHM9IiQoRElTVEZJTEVTLmNvbW1vbikiOyBcCistCWZvciBmaWxlIGluICQkZGlzdHM7IGRvIFwKKy0JICBybSAtZiAkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAorLQlkb25lCistCistaW5mbyBkdmk6CistCistJChPQkpFQ1RTKTogLi4vY29uZmlnLmggbGliZ2V0dGV4dC5oCistYmluZHRleHRkb20uJGxvIGZpbmRkb21haW4uJGxvIGxvYWRtc2djYXQuJGxvOiBnZXR0ZXh0UC5oIGdldHRleHQuaCBsb2FkaW5mby5oCistZGNnZXR0ZXh0LiRsbzogZ2V0dGV4dFAuaCBnZXR0ZXh0LmggaGFzaC1zdHJpbmcuaCBsb2FkaW5mby5oCistCistdGFnczogVEFHUworLQorLVRBR1M6ICQoSEVBREVSUykgJChTT1VSQ0VTKQorLQloZXJlPWBwd2RgOyBjZCAkKHNyY2RpcikgJiYgZXRhZ3MgLW8gJCRoZXJlL1RBR1MgJChIRUFERVJTKSAkKFNPVVJDRVMpCistCistaWQ6IElECistCistSUQ6ICQoSEVBREVSUykgJChTT1VSQ0VTKQorLQloZXJlPWBwd2RgOyBjZCAkKHNyY2RpcikgJiYgbWtpZCAtZiQkaGVyZS9JRCAkKEhFQURFUlMpICQoU09VUkNFUykKKy0KKy0KKy1tb3N0bHljbGVhbjoKKy0Jcm0gLWYgKi5hICoubyAqLmxvIGNvcmUgY29yZS4qCistCistY2xlYW46IG1vc3RseWNsZWFuCistCistZGlzdGNsZWFuOiBjbGVhbgorLQlybSAtZiBNYWtlZmlsZSBJRCBUQUdTIHBvMm1zZy5zZWQgcG8ydGJsLnNlZCBsaWJpbnRsLmgKKy0KKy1tYWludGFpbmVyLWNsZWFuOiBkaXN0Y2xlYW4KKy0JQGVjaG8gIlRoaXMgY29tbWFuZCBpcyBpbnRlbmRlZCBmb3IgbWFpbnRhaW5lcnMgdG8gdXNlOyIKKy0JQGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBzcGVjaWFsIHRvb2xzIHRvIHJlYnVpbGQuIgorLQorLQorLSMgR05VIGdldHRleHQgbmVlZHMgbm90IGNvbnRhaW4gdGhlIGZpbGUgYFZFUlNJT04nIGJ1dCBjb250YWlucyBzb21lCistIyBvdGhlciBmaWxlcyB3aGljaCBzaG91bGQgbm90IGJlIGRpc3RyaWJ1dGVkIGluIG90aGVyIHBhY2thZ2VzLgorLWRpc3RkaXIgPSAuLi8kKFBBQ0tBR0UpLSQoVkVSU0lPTikvJChzdWJkaXIpCistZGlzdCBkaXN0ZGlyOiBNYWtlZmlsZSAkKERJU1RGSUxFUykKKy0JaWYgdGVzdCAiJChQQUNLQUdFKSIgPSBnZXR0ZXh0OyB0aGVuIFwKKy0JICBhZGRpdGlvbmFsPSIkKERJU1RGSUxFUy5nZXR0ZXh0KSI7IFwKKy0JZWxzZSBcCistCSAgYWRkaXRpb25hbD0iJChESVNURklMRVMubm9ybWFsKSI7IFwKKy0JZmk7IFwKKy0JZm9yIGZpbGUgaW4gJChESVNURklMRVMuY29tbW9uKSAkJGFkZGl0aW9uYWw7IGRvIFwKKy0JICBsbiAkKHNyY2RpcikvJCRmaWxlICQoZGlzdGRpcikgMj4gL2Rldi9udWxsIFwKKy0JICAgIHx8IGNwIC1wICQoc3JjZGlyKS8kJGZpbGUgJChkaXN0ZGlyKTsgXAorLQlkb25lCistCistZGlzdC1saWJjOgorLQl0YXIgemN2ZiBpbnRsLWdsaWJjLnRhci5neiAkKENPTVNSQ1MpICQoQ09NSERSUykgbGliaW50bC5oLmdsaWJjCistCistTWFrZWZpbGU6IE1ha2VmaWxlLmluIC4uL2NvbmZpZy5zdGF0dXMKKy0JY2QgLi4gXAorLQkgICYmIENPTkZJR19GSUxFUz0kKHN1YmRpcikvJEAgQ09ORklHX0hFQURFUlM9ICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cworLQorLSMgVGhlIGRlcGVuZGVuY3kgZm9yIGludGxoLmluc3QgaXMgZGlmZmVyZW50IGluIGdldHRleHQgYW5kIGFsbCBvdGhlcgorLSMgcGFja2FnZXMuICBCZWNhdXNlIHdlIGNhbm5vdCB5b3UgR05VIG1ha2UgZmVhdHVyZXMgd2UgaGF2ZSB0byBzb2x2ZQorLSMgdGhlIHByb2JsZW0gd2hpbGUgcmV3cml0aW5nIE1ha2VmaWxlLmluLgorLUBHVF9ZRVNAaW50bGguaW5zdDogaW50bGguaW5zdC5pbiAuLi9jb25maWcuc3RhdHVzCistQEdUX1lFU0AJY2QgLi4gXAorLUBHVF9ZRVNACSYmIENPTkZJR19GSUxFUz0kKHN1YmRpcikvJEAgQ09ORklHX0hFQURFUlM9IFwKKy1AR1RfWUVTQAkgICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cworLUBHVF9OT0AuUEhPTlk6IGludGxoLmluc3QKKy1AR1RfTk9AaW50bGguaW5zdDoKKy0KKy0jIFRlbGwgdmVyc2lvbnMgWzMuNTksMy42Mykgb2YgR05VIG1ha2Ugbm90IHRvIGV4cG9ydCBhbGwgdmFyaWFibGVzLgorLSMgT3RoZXJ3aXNlIGEgc3lzdGVtIGxpbWl0IChmb3IgU3lzViBhdCBsZWFzdCkgbWF5IGJlIGV4Y2VlZGVkLgorLS5OT0VYUE9SVDoKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL3BvMnRibC5zZWQuaW4gbHJ6c3otMC4xMi4yMC9pbnRsL3BvMnRibC5zZWQuaW4KKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvcG8ydGJsLnNlZC5pbgkxOTk4LTA0LTI2IDE0OjIwOjUyLjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9wbzJ0Ymwuc2VkLmluCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSwxMDIgKzAsMCBAQAorLSMgcG8ydGJsLnNlZCAtIENvbnZlcnQgVW5pZm9ydW0gc3R5bGUgLnBvIGZpbGUgdG8gbG9va3VwIHRhYmxlIGZvciBjYXRnZXRzCistIyBDb3B5cmlnaHQgKEMpIDE5OTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistIyBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCistIworLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0jCistIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLSMKKy0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKy0jCistMSB7CistICBpXAorLS8qIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHBvMnRibC5zZWQgZnJvbSBAUEFDS0FHRSBOQU1FQC5wb3QuICAqL1wKKy1cCistI2lmIEhBVkVfQ09ORklHX0hcCistIyBpbmNsdWRlIDxjb25maWcuaD5cCistI2VuZGlmXAorLVwKKy0jaW5jbHVkZSAibGliZ2V0dGV4dC5oIlwKKy1cCistY29uc3Qgc3RydWN0IF9tc2dfZW50IF9tc2dfdGJsW10gPSB7CistICBoCistICBzLy4qLzAvCistICB4CistfQorLSMKKy0jIFdyaXRlIG1zZ2lkIGVudHJpZXMgaW4gQyBhcnJheSBmb3JtLgorLSMKKy0vXm1zZ2lkLyB7CistICBzL21zZ2lkWyAJXSpcKCIuKiJcKS8gIHtcMS8KKy0gIHRiCistIyBBcHBlbmQgdGhlIG5leHQgbGluZQorLSAgOmIKKy0gIE4KKy0jIExvb2sgd2hldGhlciBzZWNvbmQgcGFydCBpcyBjb250aW51YXRpb24gbGluZS4KKy0gIHMvXCguKlwpIlwoXG5cKSJcKC4qIlwpL1wxXDJcMy8KKy0jIFllcywgdGhlbiBicmFuY2guCistICB0YQorLSMgQmVjYXVzZSB3ZSBhc3N1bWUgdGhhdCB0aGUgaW5wdXQgZmlsZSBjb3JyZWN0bHkgZm9ybWVkIHRoZSBsaW5lCistIyBqdXN0IHJlYWQgY2Fubm90IGJlIGFnYWluIGJlIGEgbXNnaWQgbGluZS4gIFNvIGl0J3Mgc2FmZSB0byBpZ25vcmUKKy0jIGl0LgorLSAgcy9cKC4qXClcbi4qL1wxLworLSAgYmMKKy0jIFdlIGZvdW5kIGEgY29udGludWF0aW9uIGxpbmUuICBCdXQgYmVmb3JlIHByaW50aW5nIGluc2VydCAnXCcuCistICA6YQorLSAgcy9cKC4qXClcKFxuLipcKS9cMVxcXDIvCistICBQCistIyBXZSBjYW5ub3QgdXNlIEQgaGVyZS4KKy0gIHMvLipcblwoLipcKS9cMS8KKy0jIFNvbWUgYnVnZ3kgc2VkcyBkbyBub3QgY2xlYXIgdGhlIGBzdWNjZXNzZnVsIHN1YnN0aXR1dGlvbiBzaW5jZSBsYXN0IGBgdCcnJworLSMgZmxhZyBvbiBgTicsIHNvIHdlIGRvIGEgYHQnIGhlcmUgdG8gY2xlYXIgaXQuCistICB0YgorLSMgTm90IHJlYWNoZWQKKy0gIDpjCistICB4CistIyBUaGUgZm9sbG93aW5nIG5pY2Ugc29sdXRpb24gaXMgYnkKKy0jIEJydW5vIDxIYWlibGVAbWEyczIubWF0aGVtYXRpay51bmkta2FybHNydWhlLmRlPgorLSAgdGQKKy0jIEluY3JlbWVudCBhIGRlY2ltYWwgbnVtYmVyIGluIHBhdHRlcm4gc3BhY2UuCistIyBGaXJzdCBoaWRlIHRyYWlsaW5nIGA5JyBkaWdpdHMuCistICA6ZAorLSAgcy85XChfKlwpJC9fXDEvCistICB0ZAorLSMgQXNzdXJlIGF0IGxlYXN0IG9uZSBkaWdpdCBpcyBhdmFpbGFibGUuCistICBzL15cKF8qXCkkLzBcMS8KKy0jIEluY3JlbWVudCB0aGUgbGFzdCBkaWdpdC4KKy0gIHMvOFwoXypcKSQvOVwxLworLSAgcy83XChfKlwpJC84XDEvCistICBzLzZcKF8qXCkkLzdcMS8KKy0gIHMvNVwoXypcKSQvNlwxLworLSAgcy80XChfKlwpJC81XDEvCistICBzLzNcKF8qXCkkLzRcMS8KKy0gIHMvMlwoXypcKSQvM1wxLworLSAgcy8xXChfKlwpJC8yXDEvCistICBzLzBcKF8qXCkkLzFcMS8KKy0jIENvbnZlcnQgdGhlIGhpZGRlbiBgOScgZGlnaXRzIHRvIGAwJ3MuCistICBzL18vMC9nCistICB4CistICBHCistICBzL1woLipcKVxuXChbMC05XSpcKS9cMSwgXDJ9LC8KKy0gIHMvXCguKlwpIiQvXDEvCistICBwCistfQorLSMKKy0jIExhc3QgbGluZS4KKy0jCistJCB7CistICBpXAorLX07XAorLQorLSAgZworLSAgcy8wKlwoLipcKS9pbnQgX21zZ190YmxfbGVuZ3RoID0gXDE7L3AKKy19CistZAorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvdGV4dGRvbWFpbi5jIGxyenN6LTAuMTIuMjAvaW50bC90ZXh0ZG9tYWluLmMKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvdGV4dGRvbWFpbi5jCTE5OTgtMDQtMjYgMTQ6MjI6MzcuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL3RleHRkb21haW4uYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsMTA2ICswLDAgQEAKKy0vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgdGV4dGRvbWFpbigzKSBmdW5jdGlvbgorLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0gICBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJzaW9uLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistCistICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworLQorLSNpZmRlZiBIQVZFX0NPTkZJR19ICistIyBpbmNsdWRlIDxjb25maWcuaD4KKy0jZW5kaWYKKy0KKy0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBfTElCQworLSMgaW5jbHVkZSA8c3RkbGliLmg+CistI2VuZGlmCistCistI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgSEFWRV9TVFJJTkdfSCB8fCBkZWZpbmVkIF9MSUJDCistIyBpbmNsdWRlIDxzdHJpbmcuaD4KKy0jZWxzZQorLSMgaW5jbHVkZSA8c3RyaW5ncy5oPgorLSMgaWZuZGVmIG1lbWNweQorLSMgIGRlZmluZSBtZW1jcHkoRHN0LCBTcmMsIE51bSkgYmNvcHkgKFNyYywgRHN0LCBOdW0pCistIyBlbmRpZgorLSNlbmRpZgorLQorLSNpZmRlZiBfTElCQworLSMgaW5jbHVkZSA8bGliaW50bC5oPgorLSNlbHNlCistIyBpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCistI2VuZGlmCistCistLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworLQorLS8qIE5hbWUgb2YgdGhlIGRlZmF1bHQgdGV4dCBkb21haW4uICAqLworLWV4dGVybiBjb25zdCBjaGFyIF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluW107CistCistLyogRGVmYXVsdCB0ZXh0IGRvbWFpbiBpbiB3aGljaCBlbnRyaWVzIGZvciBnZXR0ZXh0KDMpIGFyZSB0byBiZSBmb3VuZC4gICovCistZXh0ZXJuIGNvbnN0IGNoYXIgKl9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluOworLQorLQorLS8qIE5hbWVzIGZvciB0aGUgbGliaW50bCBmdW5jdGlvbnMgYXJlIGEgcHJvYmxlbS4gIFRoZXkgbXVzdCBub3QgY2xhc2gKKy0gICB3aXRoIGV4aXN0aW5nIG5hbWVzIGFuZCB0aGV5IHNob3VsZCBmb2xsb3cgQU5TSSBDLiAgQnV0IHRoaXMgc291cmNlCistICAgY29kZSBpcyBhbHNvIHVzZWQgaW4gR05VIEMgTGlicmFyeSB3aGVyZSB0aGUgbmFtZXMgaGF2ZSBhIF9fCistICAgcHJlZml4LiAgU28gd2UgaGF2ZSB0byBtYWtlIGEgZGlmZmVyZW5jZSBoZXJlLiAgKi8KKy0jaWZkZWYgX0xJQkMKKy0jIGRlZmluZSBURVhURE9NQUlOIF9fdGV4dGRvbWFpbgorLSMgZGVmaW5lIHN0cmR1cChzdHIpIF9fc3RyZHVwIChzdHIpCistI2Vsc2UKKy0jIGRlZmluZSBURVhURE9NQUlOIHRleHRkb21haW5fXworLSNlbmRpZgorLQorLS8qIFNldCB0aGUgY3VycmVudCBkZWZhdWx0IG1lc3NhZ2UgY2F0YWxvZyB0byBET01BSU5OQU1FLgorLSAgIElmIERPTUFJTk5BTUUgaXMgbnVsbCwgcmV0dXJuIHRoZSBjdXJyZW50IGRlZmF1bHQuCistICAgSWYgRE9NQUlOTkFNRSBpcyAiIiwgcmVzZXQgdG8gdGhlIGRlZmF1bHQgb2YgIm1lc3NhZ2VzIi4gICovCistY2hhciAqCistVEVYVERPTUFJTiAoZG9tYWlubmFtZSkKKy0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7CisteworLSAgY2hhciAqb2xkOworLQorLSAgLyogQSBOVUxMIHBvaW50ZXIgcmVxdWVzdHMgdGhlIGN1cnJlbnQgc2V0dGluZy4gICovCistICBpZiAoZG9tYWlubmFtZSA9PSBOVUxMKQorLSAgICByZXR1cm4gKGNoYXIgKikgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW47CistCistICBvbGQgPSAoY2hhciAqKSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbjsKKy0KKy0gIC8qIElmIGRvbWFpbiBuYW1lIGlzIHRoZSBudWxsIHN0cmluZyBzZXQgdG8gZGVmYXVsdCBkb21haW4gIm1lc3NhZ2VzIi4gICovCistICBpZiAoZG9tYWlubmFtZVswXSA9PSAnXDAnCistICAgICAgfHwgc3RyY21wIChkb21haW5uYW1lLCBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbikgPT0gMCkKKy0gICAgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gPSBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbjsKKy0gIGVsc2UKKy0gICAgeworLSAgICAgIC8qIElmIHRoZSBmb2xsb3dpbmcgbWFsbG9jIGZhaWxzIGBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbicKKy0JIHdpbGwgYmUgTlVMTC4gIFRoaXMgdmFsdWUgd2lsbCBiZSByZXR1cm5lZCBhbmQgc28gc2lnbmFscyB3ZQorLQkgYXJlIG91dCBvZiBjb3JlLiAgKi8KKy0jaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfU1RSRFVQCistICAgICAgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gPSBzdHJkdXAgKGRvbWFpbm5hbWUpOworLSNlbHNlCistICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoZG9tYWlubmFtZSkgKyAxOworLSAgICAgIGNoYXIgKmNwID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOworLSAgICAgIGlmIChjcCAhPSBOVUxMKQorLQltZW1jcHkgKGNwLCBkb21haW5uYW1lLCBsZW4pOworLSAgICAgIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluID0gY3A7CistI2VuZGlmCistICAgIH0KKy0KKy0gIGlmIChvbGQgIT0gX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW4pCistICAgIGZyZWUgKG9sZCk7CistCistICByZXR1cm4gKGNoYXIgKikgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW47CistfQorLQorLSNpZmRlZiBfTElCQworLS8qIEFsaWFzIGZvciBmdW5jdGlvbiBuYW1lIGluIEdOVSBDIExpYnJhcnkuICAqLworLXdlYWtfYWxpYXMgKF9fdGV4dGRvbWFpbiwgdGV4dGRvbWFpbik7CistI2VuZGlmCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9WRVJTSU9OIGxyenN6LTAuMTIuMjAvaW50bC9WRVJTSU9OCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL1ZFUlNJT04JMTk5OC0wNC0yNiAxNDoyMjozNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvVkVSU0lPTgkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEgKzAsMCBAQAorLUdOVSBnZXR0ZXh0IGxpYnJhcnkgZnJvbSBnZXR0ZXh0LTAuMTAuMzIKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL3hvcGVuLW1zZy5zZWQgbHJ6c3otMC4xMi4yMC9pbnRsL3hvcGVuLW1zZy5zZWQKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwveG9wZW4tbXNnLnNlZAkxOTk4LTA0LTI2IDE0OjIwOjUyLjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC94b3Blbi1tc2cuc2VkCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSwxMDQgKzAsMCBAQAorLSMgcG8ybXNnLnNlZCAtIENvbnZlcnQgVW5pZm9ydW0gc3R5bGUgLnBvIGZpbGUgdG8gWC9PcGVuIHN0eWxlIC5tc2cgZmlsZQorLSMgQ29weXJpZ2h0IChDKSAxOTk1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLSMgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgorLSMKKy0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSMgYW55IGxhdGVyIHZlcnNpb24uCistIworLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0jCistIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCistIworLSMKKy0jIFRoZSBmaXJzdCBkaXJlY3RpdmUgaW4gdGhlIC5tc2cgc2hvdWxkIGJlIHRoZSBkZWZpbml0aW9uIG9mIHRoZQorLSMgbWVzc2FnZSBzZXQgbnVtYmVyLiAgV2UgdXNlIGFsd2F5cyBzZXQgbnVtYmVyIDEuCistIworLTEgeworLSAgaVwKKy0kc2V0IDEgIyBBdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYnkgcG8ybXNnLnNlZAorLSAgaAorLSAgcy8uKi8wLworLSAgeAorLX0KKy0jCistIyBXZSBjb3B5IGFsbCBjb21tZW50cyBpbnRvIHRoZSAubXNnIGZpbGUuICBQZXJoYXBzIHRoZXkgY2FuIGhlbHAuCistIworLS9eIy8gcy9eI1sgCV0qLyQgL3AKKy0jCistIyBXZSBjb3B5IHRoZSBvcmlnaW5hbCBtZXNzYWdlIGFzIGEgY29tbWVudCBpbnRvIHRoZSAubXNnIGZpbGUuCistIworLS9ebXNnaWQvIHsKKy0jIERvZXMgbm90IHdvcmsgbm93CistIyAgLyIkLyEgeworLSMgICAgcy9cXCQvLworLSMgICAgcy8kLyAuLi4gKG1vcmUgbGluZXMgZm9sbG93aW5nKSIvCistIyAgfQorLSAgcy9ebXNnaWRbIAldKiJcKC4qXCkiJC8kIE9yaWdpbmFsIE1lc3NhZ2U6IFwxLworLSAgcAorLX0KKy0jCistIyBUaGUgLm1zZyBmaWxlIGNvbnRhaW5zLCBvdGhlciB0aGVuIHRoZSAucG8gZmlsZSwgb25seSB0aGUgdHJhbnNsYXRpb25zCistIyBidXQgZWFjaCBnaXZlbiBhIHVuaXF1ZSBJRC4gIFN0YXJ0aW5nIGZyb20gMSBhbmQgaW5jcmVtZW50aW5nIGJ5IDEgZm9yCistIyBlYWNoIG1lc3NhZ2Ugd2UgYXNzaWduIHRoZW0gdG8gdGhlIG1lc3NhZ2VzLgorLSMgSXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlIC5wbyBmaWxlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGNhdC1pZC10YmwuYyBmaWxlCistIyAod2l0aCBwby10by10YmwpIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgdXNlZCBoZXJlLiAgKEF0IGxlYXN0IHRoZSBvcmRlcgorLSMgb2YgZGVjbGFyYXRpb25zIG11c3Qgbm90IGJlIGNoYW5nZWQuKQorLSMKKy0vXm1zZ3N0ci8geworLSAgcy9tc2dzdHJbIAldKiJcKC4qXCkiL1wxLworLSAgeAorLSMgVGhlIGZvbGxvd2luZyBuaWNlIHNvbHV0aW9uIGlzIGJ5CistIyBCcnVubyA8SGFpYmxlQG1hMnMyLm1hdGhlbWF0aWsudW5pLWthcmxzcnVoZS5kZT4KKy0gIHRkCistIyBJbmNyZW1lbnQgYSBkZWNpbWFsIG51bWJlciBpbiBwYXR0ZXJuIHNwYWNlLgorLSMgRmlyc3QgaGlkZSB0cmFpbGluZyBgOScgZGlnaXRzLgorLSAgOmQKKy0gIHMvOVwoXypcKSQvX1wxLworLSAgdGQKKy0jIEFzc3VyZSBhdCBsZWFzdCBvbmUgZGlnaXQgaXMgYXZhaWxhYmxlLgorLSAgcy9eXChfKlwpJC8wXDEvCistIyBJbmNyZW1lbnQgdGhlIGxhc3QgZGlnaXQuCistICBzLzhcKF8qXCkkLzlcMS8KKy0gIHMvN1woXypcKSQvOFwxLworLSAgcy82XChfKlwpJC83XDEvCistICBzLzVcKF8qXCkkLzZcMS8KKy0gIHMvNFwoXypcKSQvNVwxLworLSAgcy8zXChfKlwpJC80XDEvCistICBzLzJcKF8qXCkkLzNcMS8KKy0gIHMvMVwoXypcKSQvMlwxLworLSAgcy8wXChfKlwpJC8xXDEvCistIyBDb252ZXJ0IHRoZSBoaWRkZW4gYDknIGRpZ2l0cyB0byBgMCdzLgorLSAgcy9fLzAvZworLSAgeAorLSMgQnJpbmcgdGhlIGxpbmUgaW4gdGhlIGZvcm1hdCBgPG51bWJlcj4gPG1lc3NhZ2U+JworLSAgRworLSAgcy9eW15cbl0qJC8mIC8KKy0gIHMvXCguKlwpXG5cKFswLTldKlwpL1wyIFwxLworLSMgQ2xlYXIgZmxhZyBmcm9tIGxhc3Qgc3Vic3RpdHV0aW9uLgorLSAgdGIKKy0jIEFwcGVuZCB0aGUgbmV4dCBsaW5lLgorLSAgOmIKKy0gIE4KKy0jIExvb2sgd2hldGhlciBzZWNvbmQgcGFydCBpcyBhIGNvbnRpbnVhdGlvbiBsaW5lLgorLSAgcy9cKC4qXG5cKSJcKC4qXCkiL1wxXDIvCistIyBZZXMsIHRoZW4gYnJhbmNoLgorLSAgdGEKKy0gIFAKKy0gIEQKKy0jIE5vdGUgdGhhdCBgRCcgaW5jbHVkZXMgYSBqdW1wIHRvIHRoZSBzdGFydCEhCistIyBXZSBmb3VuZCBhIGNvbnRpbnVhdGlvbiBsaW5lLiAgQnV0IGJlZm9yZSBwcmludGluZyBpbnNlcnQgJ1wnLgorLSAgOmEKKy0gIHMvXCguKlwpXChcbi4qXCkvXDFcXFwyLworLSAgUAorLSMgV2UgY2Fubm90IHVzZSB0aGUgc2VkIGNvbW1hbmQgYEQnIGhlcmUKKy0gIHMvLipcblwoLipcKS9cMS8KKy0gIHRiCistfQorLWQKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9saWIvTWFrZWZpbGUuYW0gbHJ6c3otMC4xMi4yMC9saWIvTWFrZWZpbGUuYW0KKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2xpYi9NYWtlZmlsZS5hbQkxOTk4LTEyLTI3IDE2OjI1OjI2LjAwMDAwMDAwMCArMDAwMAorKysrIGxyenN6LTAuMTIuMjAvbGliL01ha2VmaWxlLmFtCTIwMTktMTEtMjUgMTY6MjI6MzQuMDAwMDAwMDAwICswMDAwCitAQCAtMSw2ICsxLDQgQEAKKyBub2luc3RfTElCUkFSSUVTPWxpYnptb2RlbS5hCistQ0ZMQUdTPUBDRkxBR1NACistQVVUT01BS0VfT1BUSU9OUz1hbnNpMmtucgorIAorIEVYVFJBX0RJU1QgPSBhbGxvY2EuYyBhbnNpMmtuci4xIGFuc2kya25yLmMgXAorIAlnZXRvcHQuYyBnZXRvcHQxLmMgbWtkaXIuYyBta3RpbWUuYyBcCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvTWFrZWZpbGUuYW0gbHJ6c3otMC4xMi4yMC9NYWtlZmlsZS5hbQorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvTWFrZWZpbGUuYW0JMTk5OC0xMi0zMCAxMToxOTo0MC4wMDAwMDAwMDAgKzAwMDAKKysrKyBscnpzei0wLjEyLjIwL01ha2VmaWxlLmFtCTIwMTktMTEtMjYgMTE6NDc6MjkuMDAwMDAwMDAwICswMDAwCitAQCAtMSw1ICsxLDUgQEAKKy1TVUJESVJTID0gbGliIGludGwgc3JjIHBvIG1hbiB0ZXN0c3VpdGUKKy1FWFRSQV9ESVNUID0gY2hlY2subHJ6c3ogQ09NUEFUQUJJTElUWSBSRUFETUUuY3ZzIFJFQURNRS5pc2RuNGxpbnV4IFwKKytTVUJESVJTID0gbGliIHNyYyBwbyBtYW4gdGVzdHN1aXRlCisrRVhUUkFfRElTVCA9IGNvbmZpZy5ycGF0aCBtNC9DaGFuZ2VMb2cgIGNoZWNrLmxyenN6IENPTVBBVEFCSUxJVFkgUkVBRE1FLmN2cyBSRUFETUUuaXNkbjRsaW51eCBcCisgCVJFQURNRS5nZXR0ZXh0IHJwbXJjIGJ1aWxkcnBtIHN5c3R5cGUuaW4gZmFzdGNoZWNrLnNoIFJFQURNRS50ZXN0cyBcCisgCWJlb3MtcnVucGlwZWQuYyBmYXN0Y2hlY2suYmVvcworIG5vaW5zdF9TQ1JJUFRTPXN5c3R5cGUKK0BAIC03LDcgKzcsNiBAQCBQUj1AUEFDS0FHRUAtQFZFUlNJT05ACisgQ0xFQU5fRklMRVM9ZmFzdGNoZWNrLmRvbmUKKyAKKyBkaXN0LWhvb2s6CistCW1rZGlyICQoZGlzdGRpcikvZGViaWFuCisgCWNwIC1mYSAkKHNyY2RpcikvZGViaWFuL2NoYW5nZWxvZyAgJChkaXN0ZGlyKS9kZWJpYW4vCisgCWNwIC1mYSAkKHNyY2RpcikvZGViaWFuL2NvbnRyb2wgICQoZGlzdGRpcikvZGViaWFuLworIAljcCAtZmEgJChzcmNkaXIpL2RlYmlhbi9jb3B5cmlnaHQgICQoZGlzdGRpcikvZGViaWFuLworQEAgLTgzLDMgKzgyLDUgQEAgY3ZzLWRpc3Q6CisgcnBtOiAkKFBSKS50YXIuZ3ogU3BlY2ZpbGUKKyAJJChzcmNkaXIpL2J1aWxkcnBtICQoc3JjZGlyKQorIAorKworK0FDTE9DQUxfQU1GTEFHUyA9IC1JIG00CitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvcG8vY2F0LWlkLXRibC5jIGxyenN6LTAuMTIuMjAvcG8vY2F0LWlkLXRibC5jCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9wby9jYXQtaWQtdGJsLmMJMTk5OC0xMi0yOSAwOToyNDoyNC4wMDAwMDAwMDAgKzAwMDAKKysrKyBscnpzei0wLjEyLjIwL3BvL2NhdC1pZC10YmwuYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsMjM0ICswLDAgQEAKKy0vKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBwbzJ0Ymwuc2VkIGZyb20gbHJ6c3oucG90LiAgKi8KKy0KKy0jaWYgSEFWRV9DT05GSUdfSAorLSMgaW5jbHVkZSA8Y29uZmlnLmg+CistI2VuZGlmCistCistI2luY2x1ZGUgImxpYmdldHRleHQuaCIKKy0KKy1jb25zdCBzdHJ1Y3QgX21zZ19lbnQgX21zZ190YmxbXSA9IHsKKy0gIHsiIiwgMX0sCistICB7ImlvX21vZGUoLDIpIGluIHJic2IuYyBub3QgaW1wbGVtZW50ZWRcbiIsIDJ9LAorLSAgeyJjYXVnaHQgc2lnbmFsICVkOyBleGl0aW5nIiwgM30sCistICB7ImNvbW1hbmQgdHJpZXMiLCA0fSwKKy0gIHsicGFja2V0bGVuZ3RoIiwgNX0sCistICB7InBhY2tldGxlbmd0aCBvdXQgb2YgcmFuZ2UgMjQuLiVsZCIsIDZ9LAorLSAgeyJmcmFtZWxlbmd0aCIsIDd9LAorLSAgeyJmcmFtZWxlbmd0aCBvdXQgb2YgcmFuZ2UgMzIuLiVsZCIsIDh9LAorLSAgeyJtaW5fYnBzIiwgOX0sCistICB7Im1pbl9icHMgbXVzdCBiZSA+PSAwIiwgMTB9LAorLSAgeyJtaW5fYnBzX3RpbWUiLCAxMX0sCistICB7Im1pbl9icHNfdGltZSBtdXN0IGJlID4gMSIsIDEyfSwKKy0gIHsiaG91ciB0byBsYXJnZSAoMC4uMjMpIiwgMTN9LAorLSAgeyJ1bnBhcnNhYmxlIHN0b3AgdGltZVxuIiwgMTR9LAorLSAgeyJtaW51dGUgdG8gbGFyZ2UgKDAuLjU5KSIsIDE1fSwKKy0gIHsic3RvcCB0aW1lIHRvIHNtYWxsIiwgMTZ9LAorLSAgeyJzdG9wLWF0IiwgMTd9LAorLSAgeyJ0aW1lb3V0IiwgMTh9LAorLSAgeyJ0aW1lb3V0IG91dCBvZiByYW5nZSAxMC4uMTAwMCIsIDE5fSwKKy0gIHsic2VjdXJpdHkgdmlvbGF0aW9uOiBjYW4ndCBkbyB0aGF0IHVuZGVyIHJlc3RyaWN0ZWQgc2hlbGxcbiIsIDIwfSwKKy0gIHsid2luZG93IHNpemUiLCAyMX0sCistICB7ImNhbm5vdCB0dXJub2ZmIHN5c2xvZyIsIDIyfSwKKy0gIHsic3RhcnR1cCBkZWxheSIsIDIzfSwKKy0gIHsib3V0IG9mIG1lbW9yeSIsIDI0fSwKKy0gIHsidGhpcyBwcm9ncmFtIHdhcyBuZXZlciBpbnRlbmRlZCB0byBiZSB1c2VkIHNldHVpZFxuIiwgMjV9LAorLSAgeyJuZWVkIGF0IGxlYXN0IG9uZSBmaWxlIHRvIHNlbmQiLCAyNn0sCistICB7IkNhbid0IHNlbmQgY29tbWFuZCBpbiByZXN0cmljdGVkIG1vZGVcbiIsIDI3fSwKKy0gIHsiaG9zdG5hbWUgdG9vIGxvbmdcbiIsIDI4fSwKKy0gIHsiaWxsZWdhbCBzZXJ2ZXIgYWRkcmVzc1xuIiwgMjl9LAorLSAgeyJjYW4gcmVhZCBvbmx5IG9uZSBmaWxlIGZyb20gc3RkaW4iLCAzMH0sCistICB7IlRyYW5zZmVyIGluY29tcGxldGVcbiIsIDMxfSwKKy0gIHsiVHJhbnNmZXIgY29tcGxldGVcbiIsIDMyfSwKKy0gIHsic2VuZF9wc2V1ZG8gJXM6IGNhbm5vdCBvcGVuIHRtcGZpbGUgJXM6ICVzIiwgMzN9LAorLSAgeyJzZW5kX3BzZXVkbyAlczogY2Fubm90IGxzdGF0IHRtcGZpbGUgJXM6ICVzIiwgMzR9LAorLSAgeyJzZW5kX3BzZXVkbyAlczogYXZvaWRpbmcgc3ltbGluayB0cmFwIiwgMzV9LAorLSAgeyJzZW5kX3BzZXVkbyAlczogY2Fubm90IHdyaXRlIHRvIHRtcGZpbGUgJXM6ICVzIiwgMzZ9LAorLSAgeyJzZW5kX3BzZXVkbyAlczogZmFpbGVkIiwgMzd9LAorLSAgeyJzZW5kX3BzZXVkbyAlczogb2siLCAzOH0sCistICB7InRjcCBwcm90b2NvbCBpbml0IGZhaWxlZFxuIiwgMzl9LAorLSAgeyJBbnN3ZXJpbmcgVElNRVNZTkMgYXQgJXMiLCA0MH0sCistICB7InRpbWV6b25lIiwgNDF9LAorLSAgeyJ0aW1lem9uZSB1bmtub3duIiwgNDJ9LAorLSAgeyJDYW4ndCBvcGVuIGFueSByZXF1ZXN0ZWQgZmlsZXMuIiwgNDN9LAorLSAgeyJzZWN1cml0eSB2aW9sYXRpb246IG5vdCBhbGxvd2VkIHRvIHVwbG9hZCBmcm9tICVzIiwgNDR9LAorLSAgeyJjYW5ub3Qgb3BlbiAlcyIsIDQ1fSwKKy0gIHsiaXMgbm90IGEgZmlsZTogJXMiLCA0Nn0sCistICB7IiVzLyVzOiBlcnJvciBvY2N1cmVkIiwgNDd9LAorLSAgeyJza2lwcGVkOiAlcyIsIDQ4fSwKKy0gIHsiJXMvJXM6IHNraXBwZWQiLCA0OX0sCistICB7IkJ5dGVzIFNlbnQ6JTdsZCAgIEJQUzolLThsZCAgICAgICAgICAgICAgICAgICAgICAgIFxuIiwgNTB9LAorLSAgeyJTZW5kaW5nICVzLCAlbGQgYmxvY2tzOiAiLCA1MX0sCistICB7IkdpdmUgeW91ciBsb2NhbCBYTU9ERU0gcmVjZWl2ZSBjb21tYW5kIG5vdy4iLCA1Mn0sCistICB7IlNlbmRpbmc6ICVzXG4iLCA1M30sCistICB7IlRpbWVvdXQgb24gcGF0aG5hbWUiLCA1NH0sCistICB7IlJlY2VpdmVyIENhbmNlbGxlZCIsIDU1fSwKKy0gIHsiTm8gQUNLIG9uIEVPVCIsIDU2fSwKKy0gIHsiWG1vZGVtIHNlY3RvcnMva2J5dGVzIHNlbnQ6ICUzZC8lMmRrIiwgNTd9LAorLSAgeyJZbW9kZW0gc2VjdG9ycy9rYnl0ZXMgc2VudDogJTNkLyUyZGsiLCA1OH0sCistICB7IkNhbmNlbGxlZCIsIDU5fSwKKy0gIHsiVGltZW91dCBvbiBzZWN0b3IgQUNLIiwgNjB9LAorLSAgeyJOQUsgb24gc2VjdG9yIiwgNjF9LAorLSAgeyJHb3QgYnVyc3QgZm9yIHNlY3RvciBBQ0siLCA2Mn0sCistICB7IkdvdCAlMDJ4IGZvciBzZWN0b3IgQUNLIiwgNjN9LAorLSAgeyJSZXRyeSBDb3VudCBFeGNlZWRlZCIsIDY0fSwKKy0gIHsiVHJ5IGAlcyAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiwgNjV9LAorLSAgeyIlcyB2ZXJzaW9uICVzXG4iLCA2Nn0sCistICB7IlVzYWdlOiAlcyBbb3B0aW9uc10gZmlsZSAuLi5cbiIsIDY3fSwKKy0gIHsiICAgb3I6ICVzIFtvcHRpb25zXSAte2N8aX0gQ09NTUFORFxuIiwgNjh9LAorLSAgeyJTZW5kIGZpbGUocykgd2l0aCBaTU9ERU0vWU1PREVNL1hNT0RFTSBwcm90b2NvbFxuIiwgNjl9LAorLSAgeyJcCistICAgIChYKSA9IG9wdGlvbiBhcHBsaWVzIHRvIFhNT0RFTSBvbmx5XG5cCistICAgIChZKSA9IG9wdGlvbiBhcHBsaWVzIHRvIFlNT0RFTSBvbmx5XG5cCistICAgIChaKSA9IG9wdGlvbiBhcHBsaWVzIHRvIFpNT0RFTSBvbmx5XG4iLCA3MH0sCistICB7IlwKKy0gIC0rLCAtLWFwcGVuZCAgICAgICAgICAgICAgICBhcHBlbmQgdG8gZXhpc3RpbmcgZGVzdGluYXRpb24gZmlsZSAoWilcblwKKy0gIC0yLCAtLXR3b3N0b3AgICAgICAgICAgICAgICB1c2UgMiBzdG9wIGJpdHNcblwKKy0gIC00LCAtLXRyeS00ayAgICAgICAgICAgICAgICBnbyB1cCB0byA0SyBibG9ja3NpemVcblwKKy0gICAgICAtLXN0YXJ0LTRrICAgICAgICAgICAgICBzdGFydCB3aXRoIDRLIGJsb2Nrc2l6ZSAoZG9lc24ndCB0cnkgOClcblwKKy0gIC04LCAtLXRyeS04ayAgICAgICAgICAgICAgICBnbyB1cCB0byA4SyBibG9ja3NpemVcblwKKy0gICAgICAtLXN0YXJ0LThrICAgICAgICAgICAgICBzdGFydCB3aXRoIDhLIGJsb2Nrc2l6ZVxuXAorLSAgLWEsIC0tYXNjaWkgICAgICAgICAgICAgICAgIEFTQ0lJIHRyYW5zZmVyIChjaGFuZ2UgQ1IvTEYgdG8gTEYpXG5cCistICAtYiwgLS1iaW5hcnkgICAgICAgICAgICAgICAgYmluYXJ5IHRyYW5zZmVyXG5cCistICAtQiwgLS1idWZzaXplIE4gICAgICAgICAgICAgYnVmZmVyIE4gYnl0ZXMgKE49PWF1dG86IGJ1ZmZlciB3aG9sZSBmaWxlKVxuXAorLSAgLWMsIC0tY29tbWFuZCBDT01NQU5EICAgICAgIGV4ZWN1dGUgcmVtb3RlIGNvbW1hbmQgQ09NTUFORCAoWilcblwKKy0gIC1DLCAtLWNvbW1hbmQtdHJpZXMgTiAgICAgICB0cnkgTiB0aW1lcyB0byBleGVjdXRlIGEgY29tbWFuZCAoWilcblwKKy0gIC1kLCAtLWRvdC10by1zbGFzaCAgICAgICAgICBjaGFuZ2UgJy4nIHRvICcvJyBpbiBwYXRobmFtZXMgKFkvWilcblwKKy0gICAgICAtLWRlbGF5LXN0YXJ0dXAgTiAgICAgICBzbGVlcCBOIHNlY29uZHMgYmVmb3JlIGRvaW5nIGFueXRoaW5nXG5cCistICAtZSwgLS1lc2NhcGUgICAgICAgICAgICAgICAgZXNjYXBlIGFsbCBjb250cm9sIGNoYXJhY3RlcnMgKFopXG5cCistICAtRSwgLS1yZW5hbWUgICAgICAgICAgICAgICAgZm9yY2UgcmVjZWl2ZXIgdG8gcmVuYW1lIGZpbGVzIGl0IGFscmVhZHkgaGFzXG5cCistICAtZiwgLS1mdWxsLXBhdGggICAgICAgICAgICAgc2VuZCBmdWxsIHBhdGhuYW1lIChZL1opXG5cCistICAtaSwgLS1pbW1lZGlhdGUtY29tbWFuZCBDTUQgc2VuZCByZW1vdGUgQ01ELCByZXR1cm4gaW1tZWRpYXRlbHkgKFopXG5cCistICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICAgcHJpbnQgdGhpcyB1c2FnZSBtZXNzYWdlXG5cCistICAtaywgLS0xayAgICAgICAgICAgICAgICAgICAgc2VuZCAxMDI0IGJ5dGUgcGFja2V0cyAoWClcblwKKy0gIC1MLCAtLXBhY2tldGxlbiBOICAgICAgICAgICBsaW1pdCBzdWJwYWNrZXQgbGVuZ3RoIHRvIE4gYnl0ZXMgKFopXG5cCistICAtbCwgLS1mcmFtZWxlbiBOICAgICAgICAgICAgbGltaXQgZnJhbWUgbGVuZ3RoIHRvIE4gYnl0ZXMgKGw+PUwpIChaKVxuXAorLSAgLW0sIC0tbWluLWJwcyBOICAgICAgICAgICAgIHN0b3AgdHJhbnNtaXNzaW9uIGlmIEJQUyBiZWxvdyBOXG5cCistICAtTSwgLS1taW4tYnBzLXRpbWUgTiAgICAgICAgICBmb3IgYXQgbGVhc3QgTiBzZWNvbmRzIChkZWZhdWx0OiAxMjApXG4iLCA3MX0sCistICB7IlwKKy0gIC1uLCAtLW5ld2VyICAgICAgICAgICAgICAgICBzZW5kIGZpbGUgaWYgc291cmNlIG5ld2VyIChaKVxuXAorLSAgLU4sIC0tbmV3ZXItb3ItbG9uZ2VyICAgICAgIHNlbmQgZmlsZSBpZiBzb3VyY2UgbmV3ZXIgb3IgbG9uZ2VyIChaKVxuXAorLSAgLW8sIC0tMTYtYml0LWNyYyAgICAgICAgICAgIHVzZSAxNiBiaXQgQ1JDIGluc3RlYWQgb2YgMzIgYml0IENSQyAoWilcblwKKy0gIC1PLCAtLWRpc2FibGUtdGltZW91dHMgICAgICBkaXNhYmxlIHRpbWVvdXQgY29kZSwgd2FpdCBmb3JldmVyXG5cCistICAtcCwgLS1wcm90ZWN0ICAgICAgICAgICAgICAgcHJvdGVjdCBleGlzdGluZyBkZXN0aW5hdGlvbiBmaWxlIChaKVxuXAorLSAgLXIsIC0tcmVzdW1lICAgICAgICAgICAgICAgIHJlc3VtZSBpbnRlcnJ1cHRlZCBmaWxlIHRyYW5zZmVyIChaKVxuXAorLSAgLVIsIC0tcmVzdHJpY3RlZCAgICAgICAgICAgIHJlc3RyaWN0ZWQsIG1vcmUgc2VjdXJlIG1vZGVcblwKKy0gIC1xLCAtLXF1aWV0ICAgICAgICAgICAgICAgICBxdWlldCAobm8gcHJvZ3Jlc3MgcmVwb3J0cylcblwKKy0gIC1zLCAtLXN0b3AtYXQge0hIOk1NfCtOfSAgICBzdG9wIHRyYW5zbWlzc2lvbiBhdCBISDpNTSBvciBpbiBOIHNlY29uZHNcblwKKy0gICAgICAtLXRjcCAgICAgICAgICAgICAgICAgICBidWlsZCBhIFRDUCBjb25uZWN0aW9uIHRvIHRyYW5zbWl0IGZpbGVzXG5cCistICAgICAgLS10Y3Atc2VydmVyICAgICAgICAgICAgb3BlbiBzb2NrZXQsIHdhaXQgZm9yIGNvbm5lY3Rpb25cblwKKy0gIC11LCAtLXVubGluayAgICAgICAgICAgICAgICB1bmxpbmsgZmlsZSBhZnRlciB0cmFuc21pc3Npb25cblwKKy0gIC1VLCAtLXVucmVzdHJpY3QgICAgICAgICAgICB0dXJuIG9mZiByZXN0cmljdGVkIG1vZGUgKGlmIGFsbG93ZWQgdG8pXG5cCistICAtdiwgLS12ZXJib3NlICAgICAgICAgICAgICAgYmUgdmVyYm9zZSwgcHJvdmlkZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb25cblwKKy0gIC13LCAtLXdpbmRvd3NpemUgTiAgICAgICAgICBXaW5kb3cgaXMgTiBieXRlcyAoWilcblwKKy0gIC1YLCAtLXhtb2RlbSAgICAgICAgICAgICAgICB1c2UgWE1PREVNIHByb3RvY29sXG5cCistICAteSwgLS1vdmVyd3JpdGUgICAgICAgICAgICAgb3ZlcndyaXRlIGV4aXN0aW5nIGZpbGVzXG5cCistICAtWSwgLS1vdmVyd3JpdGUtb3Itc2tpcCAgICAgb3ZlcndyaXRlIGV4aXN0aW5nIGZpbGVzLCBlbHNlIHNraXBcblwKKy0gICAgICAtLXltb2RlbSAgICAgICAgICAgICAgICB1c2UgWU1PREVNIHByb3RvY29sXG5cCistICAtWiwgLS16bW9kZW0gICAgICAgICAgICAgICAgdXNlIFpNT0RFTSBwcm90b2NvbFxuXAorLVxuXAorLXNob3J0IG9wdGlvbnMgdXNlIHRoZSBzYW1lIGFyZ3VtZW50cyBhcyB0aGUgbG9uZyBvbmVzXG4iLCA3Mn0sCistICB7ImdvdCBaUlFJTklUIiwgNzN9LAorLSAgeyJnb3QgWkNBTiIsIDc0fSwKKy0gIHsiYmxrbGVuIG5vdyAlZFxuIiwgNzV9LAorLSAgeyJ6c2VuZGZkYXRhOiBicHMgcmF0ZSAlbGQgYmVsb3cgbWluICVsZCIsIDc2fSwKKy0gIHsienNlbmRmZGF0YTogcmVhY2hlZCBzdG9wIHRpbWUiLCA3N30sCistICB7IkJ5dGVzIFNlbnQ6JTdsZC8lN2xkICAgQlBTOiUtOGxkIEVUQSAlMDJkOiUwMmQgICIsIDc4fSwKKy0gIHsiY2FsY19ibGtsZW46IHJlZHVjZWQgdG8gJWQgZHVlIHRvIGVycm9yXG4iLCA3OX0sCistICB7ImNhbGNfYmxrbGVuOiByZXR1cm5lZCBvbGQgdmFsdWUgJWQgZHVlIHRvIGxvdyBicGUgZGlmZlxuIiwgODB9LAorLSAgeyJjYWxjX2Jsa2xlbjogb2xkICVsZCwgbmV3ICVsZCwgZCAlbGRcbiIsIDgxfSwKKy0gIHsiY2FsY19ibGtsZW46IGNhbGMgdG90YWxfYnl0ZXM9JWxkLCBicGU9JWxkLCBlYz0lbGRcbiIsIDgyfSwKKy0gIHsiY2FsY19ibGtsZW46IGJsa2xlbiAlZCwgb2sgJWxkLCBmYWlsZWQgJWxkIC0+ICVsdVxuIiwgODN9LAorLSAgeyJjYWxjX2Jsa2xlbjogcmV0dXJuZWQgJWQgYXMgYmVzdFxuIiwgODR9LAorLSAgeyJcCistXG5cCistY291bnRlbTogVG90YWwgJWQgJWxkXG4iLCA4NX0sCistICB7IkJhZCBlc2NhcGUgc2VxdWVuY2UgJXgiLCA4Nn0sCistICB7IlNlbmRlciBDYW5jZWxlZCIsIDg3fSwKKy0gIHsiVElNRU9VVCIsIDg4fSwKKy0gIHsiQmFkIGRhdGEgc3VicGFja2V0IiwgODl9LAorLSAgeyJEYXRhIHN1YnBhY2tldCB0b28gbG9uZyIsIDkwfSwKKy0gIHsiR2FyYmFnZSBjb3VudCBleGNlZWRlZCIsIDkxfSwKKy0gIHsiR290ICVzIiwgOTJ9LAorLSAgeyJSZXRyeSAlZDogIiwgOTN9LAorLSAgeyJkb24ndCBoYXZlIHNldHRpbWVvZmRheSwgd2lsbCBub3Qgc2V0IHRpbWVcbiIsIDk0fSwKKy0gIHsibm90IHJ1bm5pbmcgYXMgcm9vdCAodGhpcyBpcyBnb29kISksIGNhbiBub3Qgc2V0IHRpbWVcbiIsIDk1fSwKKy0gIHsiYnl0ZXNfcGVyX2Vycm9yIiwgOTZ9LAorLSAgeyJieXRlcy1wZXItZXJyb3Igc2hvdWxkIGJlID4xMDAiLCA5N30sCistICB7Ik9fU1lOQyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBrZXJuZWwiLCA5OH0sCistICB7ImdhcmJhZ2Ugb24gY29tbWFuZGxpbmUiLCA5OX0sCistICB7IlVzYWdlOiAlcyBbb3B0aW9uc10gW2ZpbGVuYW1lLmlmLnhtb2RlbV1cbiIsIDEwMH0sCistICB7IlJlY2VpdmUgZmlsZXMgd2l0aCBaTU9ERU0vWU1PREVNL1hNT0RFTSBwcm90b2NvbFxuIiwgMTAxfSwKKy0gIHsiXAorLSAgLSssIC0tYXBwZW5kICAgICAgICAgICAgICAgIGFwcGVuZCB0byBleGlzdGluZyBmaWxlc1xuXAorLSAgLWEsIC0tYXNjaWkgICAgICAgICAgICAgICAgIEFTQ0lJIHRyYW5zZmVyIChjaGFuZ2UgQ1IvTEYgdG8gTEYpXG5cCistICAtYiwgLS1iaW5hcnkgICAgICAgICAgICAgICAgYmluYXJ5IHRyYW5zZmVyXG5cCistICAtQiwgLS1idWZzaXplIE4gICAgICAgICAgICAgYnVmZmVyIE4gYnl0ZXMgKE49PWF1dG86IGJ1ZmZlciB3aG9sZSBmaWxlKVxuXAorLSAgLWMsIC0td2l0aC1jcmMgICAgICAgICAgICAgIFVzZSAxNiBiaXQgQ1JDIChYKVxuXAorLSAgLUMsIC0tYWxsb3ctcmVtb3RlLWNvbW1hbmRzIGFsbG93IGV4ZWN1dGlvbiBvZiByZW1vdGUgY29tbWFuZHMgKFopXG5cCistICAtRCwgLS1udWxsICAgICAgICAgICAgICAgICAgd3JpdGUgYWxsIHJlY2VpdmVkIGRhdGEgdG8gL2Rldi9udWxsXG5cCistICAgICAgLS1kZWxheS1zdGFydHVwIE4gICAgICAgc2xlZXAgTiBzZWNvbmRzIGJlZm9yZSBkb2luZyBhbnl0aGluZ1xuXAorLSAgLWUsIC0tZXNjYXBlICAgICAgICAgICAgICAgIEVzY2FwZSBjb250cm9sIGNoYXJhY3RlcnMgKFopXG5cCistICAtRSwgLS1yZW5hbWUgICAgICAgICAgICAgICAgcmVuYW1lIGFueSBmaWxlcyBhbHJlYWR5IGV4aXN0aW5nXG5cCistICAgICAgLS1lcnJvcnMgTiAgICAgICAgICAgICAgZ2VuZXJhdGUgQ1JDIGVycm9yIGV2ZXJ5IE4gYnl0ZXMgKGRlYnVnZ2luZylcblwKKy0gIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgICBIZWxwLCBwcmludCB0aGlzIHVzYWdlIG1lc3NhZ2VcblwKKy0gIC1tLCAtLW1pbi1icHMgTiAgICAgICAgICAgICBzdG9wIHRyYW5zbWlzc2lvbiBpZiBCUFMgYmVsb3cgTlxuXAorLSAgLU0sIC0tbWluLWJwcy10aW1lIE4gICAgICAgICAgZm9yIGF0IGxlYXN0IE4gc2Vjb25kcyAoZGVmYXVsdDogMTIwKVxuXAorLSAgLU8sIC0tZGlzYWJsZS10aW1lb3V0cyAgICAgIGRpc2FibGUgdGltZW91dCBjb2RlLCB3YWl0IGZvcmV2ZXIgZm9yIGRhdGFcblwKKy0gICAgICAtLW8tc3luYyAgICAgICAgICAgICAgICBvcGVuIG91dHB1dCBmaWxlKHMpIGluIHN5bmNocm9ub3VzIHdyaXRlIG1vZGVcblwKKy0gIC1wLCAtLXByb3RlY3QgICAgICAgICAgICAgICBwcm90ZWN0IGV4aXN0aW5nIGZpbGVzXG5cCistICAtcSwgLS1xdWlldCAgICAgICAgICAgICAgICAgcXVpZXQsIG5vIHByb2dyZXNzIHJlcG9ydHNcblwKKy0gIC1yLCAtLXJlc3VtZSAgICAgICAgICAgICAgICB0cnkgdG8gcmVzdW1lIGludGVycnVwdGVkIGZpbGUgdHJhbnNmZXIgKFopXG5cCistICAtUiwgLS1yZXN0cmljdGVkICAgICAgICAgICAgcmVzdHJpY3RlZCwgbW9yZSBzZWN1cmUgbW9kZVxuXAorLSAgLXMsIC0tc3RvcC1hdCB7SEg6TU18K059ICAgIHN0b3AgdHJhbnNtaXNzaW9uIGF0IEhIOk1NIG9yIGluIE4gc2Vjb25kc1xuXAorLSAgLVMsIC0tdGltZXN5bmMgICAgICAgICAgICAgIHJlcXVlc3QgcmVtb3RlIHRpbWUgKHR3aWNlOiBzZXQgbG9jYWwgdGltZSlcblwKKy0gICAgICAtLXN5c2xvZ1s9b2ZmXSAgICAgICAgICB0dXJuIHN5c2xvZyBvbiBvciBvZmYsIGlmIHBvc3NpYmxlXG5cCistICAtdCwgLS10aW1lb3V0IE4gICAgICAgICAgICAgc2V0IHRpbWVvdXQgdG8gTiB0ZW50aHMgb2YgYSBzZWNvbmRcblwKKy0gIC11LCAtLWtlZXAtdXBwZXJjYXNlICAgICAgICBrZWVwIHVwcGVyIGNhc2UgZmlsZW5hbWVzXG5cCistICAtVSwgLS11bnJlc3RyaWN0ICAgICAgICAgICAgZGlzYWJsZSByZXN0cmljdGVkIG1vZGUgKGlmIGFsbG93ZWQgdG8pXG5cCistICAtdiwgLS12ZXJib3NlICAgICAgICAgICAgICAgYmUgdmVyYm9zZSwgcHJvdmlkZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb25cblwKKy0gIC13LCAtLXdpbmRvd3NpemUgTiAgICAgICAgICBXaW5kb3cgaXMgTiBieXRlcyAoWilcblwKKy0gIC1YICAtLXhtb2RlbSAgICAgICAgICAgICAgICB1c2UgWE1PREVNIHByb3RvY29sXG5cCistICAteSwgLS1vdmVyd3JpdGUgICAgICAgICAgICAgWWVzLCBjbG9iYmVyIGV4aXN0aW5nIGZpbGUgaWYgYW55XG5cCistICAgICAgLS15bW9kZW0gICAgICAgICAgICAgICAgdXNlIFlNT0RFTSBwcm90b2NvbFxuXAorLSAgLVosIC0tem1vZGVtICAgICAgICAgICAgICAgIHVzZSBaTU9ERU0gcHJvdG9jb2xcblwKKy1cblwKKy1zaG9ydCBvcHRpb25zIHVzZSB0aGUgc2FtZSBhcmd1bWVudHMgYXMgdGhlIGxvbmcgb25lc1xuIiwgMTAyfSwKKy0gIHsiJXMgd2FpdGluZyB0byByZWNlaXZlLiIsIDEwM30sCistICB7IlxyQnl0ZXMgcmVjZWl2ZWQ6ICU3bGQvJTdsZCAgIEJQUzolLTZsZCAgICAgICAgICAgICAgICBcclxuIiwgMTA0fSwKKy0gIHsiJXM6IHJlYWR5IHRvIHJlY2VpdmUgJXMiLCAxMDV9LAorLSAgeyJcckJ5dGVzIHJlY2VpdmVkOiAlN2xkICAgQlBTOiUtNmxkICAgICAgICAgICAgICAgIFxyXG4iLCAxMDZ9LAorLSAgeyJcCistXHJcblwKKy0lczogJXMgcmVtb3ZlZC5cclxuIiwgMTA3fSwKKy0gIHsiUGF0aG5hbWUgZmV0Y2ggcmV0dXJuZWQgRU9UIiwgMTA4fSwKKy0gIHsiUmVjZWl2ZWQgZHVwIFNlY3RvciIsIDEwOX0sCistICB7IlN5bmMgRXJyb3IiLCAxMTB9LAorLSAgeyJDUkMiLCAxMTF9LAorLSAgeyJDaGVja3N1bSIsIDExMn0sCistICB7IlNlY3RvciBudW1iZXIgZ2FyYmxlZCIsIDExM30sCistICB7IlNlbmRlciBDYW5jZWxsZWQiLCAxMTR9LAorLSAgeyJHb3QgMCVvIHNlY3RvciBoZWFkZXIiLCAxMTV9LAorLSAgeyJmaWxlIG5hbWUgZW5kcyB3aXRoIGEgLywgc2tpcHBlZDogJXNcbiIsIDExNn0sCistICB7InptYW5hZz0lZCwgTHptYW5hZz0lZFxuIiwgMTE3fSwKKy0gIHsiemNvbnY9JWRcbiIsIDExOH0sCistICB7ImZpbGUgZXhpc3RzLCBza2lwcGVkOiAlc1xuIiwgMTE5fSwKKy0gIHsiVElNRVNZTkM6IGhlcmUgJWxkLCByZW1vdGUgJWxkLCBkaWZmICVsZCBzZWNvbmRzXG4iLCAxMjB9LAorLSAgeyJUSU1FU1lOQzogY2Fubm90IHNldCB0aW1lOiAlc1xuIiwgMTIxfSwKKy0gIHsiY2Fubm90IHRtcGZpbGUoKSBmb3IgdGNwIHByb3RvY29sIHN5bmNocm9uaXphdGlvbiIsIDEyMn0sCistICB7IlRvcGlwZSIsIDEyM30sCistICB7IlJlY2VpdmluZzogJXNcbiIsIDEyNH0sCistICB7IkJsb2NrcyByZWNlaXZlZDogJWQiLCAxMjV9LAorLSAgeyIlczogJXMgZXhpc3RzXG4iLCAxMjZ9LAorLSAgeyIlczpcdFNlY3VyaXR5IFZpb2xhdGlvbiIsIDEyN30sCistICB7InJlbW90ZSBjb21tYW5kIGV4ZWN1dGlvbiByZXF1ZXN0ZWQiLCAxMjh9LAorLSAgeyJub3QgZXhlY3V0ZWQiLCAxMjl9LAorLSAgeyJnb3QgWlJJTklUIiwgMTMwfSwKKy0gIHsiU2tpcHBlZCIsIDEzMX0sCistICB7InJ6ZmlsZTogYnBzIHJhdGUgJWxkIGJlbG93IG1pbiAlbGQiLCAxMzJ9LAorLSAgeyJyemZpbGU6IHJlYWNoZWQgc3RvcCB0aW1lIiwgMTMzfSwKKy0gIHsiXHJCeXRlcyByZWNlaXZlZDogJTdsZC8lN2xkICAgQlBTOiUtNmxkIEVUQSAlMDJkOiUwMmQgICIsIDEzNH0sCistICB7ImZnZXRzIGZvciB0Y3AgcHJvdG9jb2wgc3luY2hyb25pemF0aW9uIGZhaWxlZDogIiwgMTM1fSwKKy0gIHsiZmlsZSBjbG9zZSBlcnJvciIsIDEzNn0sCistfTsKKy0KKy1pbnQgX21zZ190YmxfbGVuZ3RoID0gMTM2OworQmluYXJ5IGZpbGVzIGNsZWFuL2xyenN6LTAuMTIuMjAvcG8vZGUuZ21vIGFuZCBscnpzei0wLjEyLjIwL3BvL2RlLmdtbyBkaWZmZXIKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9wby9kZS5wbyBscnpzei0wLjEyLjIwL3BvL2RlLnBvCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9wby9kZS5wbwkxOTk4LTEyLTMwIDE2OjMxOjQ2LjAwMDAwMDAwMCArMDAwMAorKysrIGxyenN6LTAuMTIuMjAvcG8vZGUucG8JMjAxOS0xMS0yNiAxMTo0MjowNy4wMDAwMDAwMDAgKzAwMDAKK0BAIC02LDEwICs2LDEyIEBACisgbXNnaWQgIiIKKyBtc2dzdHIgIiIKKyAiUHJvamVjdC1JZC1WZXJzaW9uOiBQQUNLQUdFIFZFUlNJT05cbiIKKy0iUE9ULUNyZWF0aW9uLURhdGU6IDE5OTgtMTItMzAgMDg6NDkrMDEwMFxuIgorKyJSZXBvcnQtTXNnaWQtQnVncy1UbzogXG4iCisrIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE5LTExLTI2IDExOjM5KzAwMDBcbiIKKyAiUE8tUmV2aXNpb24tRGF0ZTogMTk5Ny0wNi0wMSAxOTowMCswMjAwXG4iCisgIkxhc3QtVHJhbnNsYXRvcjogRlVMTCBOQU1FIDx1d2VAb2hzZS5kZT5cbiIKKyAiTGFuZ3VhZ2UtVGVhbTogbm9uZS4gdHJ5IDx1d2VAb2hzZS5kZT5cbiIKKysiTGFuZ3VhZ2U6IGRlXG4iCisgIk1JTUUtVmVyc2lvbjogMS4wXG4iCisgIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1pc28tODg1OS0xXG4iCisgIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKK0BAIC0xOCw3ICsyMCw3IEBAIG1zZ3N0ciAiIgorIG1zZ2lkICJpb19tb2RlKCwyKSBpbiByYnNiLmMgbm90IGltcGxlbWVudGVkXG4iCisgbXNnc3RyICJpb19tb2RlKDIpIGluIHJic2IuYyBuaWNodCBpbXBsZW1lbnRpZXJ0XG4iCisgCistIzogc3JjL2xyei5jOjIwMSBzcmMvbHN6LmM6MjMwCisrIzogc3JjL2xzei5jOjIzMCBzcmMvbHJ6LmM6MjAxCisgIywgYy1mb3JtYXQKKyBtc2dpZCAiY2F1Z2h0IHNpZ25hbCAlZDsgZXhpdGluZyIKKyBtc2dzdHIgImVyaGllbHQgU2lnbmFsICVkOyBQcm9ncmFtbWFiYnJ1Y2giCitAQCAtNDUsNyArNDcsNyBAQCBtc2dzdHIgIkZyYW1lbORuZ2UiCisgbXNnaWQgImZyYW1lbGVuZ3RoIG91dCBvZiByYW5nZSAzMi4uJWxkIgorIG1zZ3N0ciAiQXJndW1lbnQgZGVyIE9wdGlvbiBsIGF132VyaGFsYiBkZXMgQmVyZWljaHMgMzIuLiVsZCIKKyAKKy0jOiBzcmMvbHJ6LmM6MzIzIHNyYy9sc3ouYzo0NTAKKysjOiBzcmMvbHN6LmM6NDUwIHNyYy9scnouYzozMjMKKyBtc2dpZCAibWluX2JwcyIKKyBtc2dzdHIgIm1pbmltYWxlIEJQUy1SYXRlIgorIAorQEAgLTUzLDY1ICs1NSw2NSBAQCBtc2dzdHIgIm1pbmltYWxlIEJQUy1SYXRlIgorIG1zZ2lkICJtaW5fYnBzIG11c3QgYmUgPj0gMCIKKyBtc2dzdHIgIm1pbmltYWxlIEJQUy1SYXRlIG113yA+PSAwIHNlaW4iCisgCistIzogc3JjL2xyei5jOjMyOSBzcmMvbHN6LmM6NDU4CisrIzogc3JjL2xzei5jOjQ1OCBzcmMvbHJ6LmM6MzI5CisgbXNnaWQgIm1pbl9icHNfdGltZSIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6MzMxIHNyYy9sc3ouYzo0NjAKKysjOiBzcmMvbHN6LmM6NDYwIHNyYy9scnouYzozMzEKKyBtc2dpZCAibWluX2Jwc190aW1lIG11c3QgYmUgPiAxIgorIG1zZ3N0ciAiWmVpdGZlbnN0ZXIgZvxyIG1pbmltYWxlIEJQUy1SYXRlIG113yA+IDEgU2VrdW5kZSBzZWluIgorIAorLSM6IHNyYy9scnouYzozNDcgc3JjL2xzei5jOjQ4NAorKyM6IHNyYy9sc3ouYzo0ODQgc3JjL2xyei5jOjM0NworIG1zZ2lkICJob3VyIHRvIGxhcmdlICgwLi4yMykiCisgbXNnc3RyICJTdHVuZGUgenUgZ3Jvc3MgKDAuLjIzKSIKKyAKKy0jOiBzcmMvbHJ6LmM6MzQ5IHNyYy9sc3ouYzo0ODYKKysjOiBzcmMvbHN6LmM6NDg2IHNyYy9scnouYzozNDkKKyBtc2dpZCAidW5wYXJzYWJsZSBzdG9wIHRpbWVcbiIKKyBtc2dzdHIgInVucGFyc2JhcmUgRW5kemVpdFxuIgorIAorLSM6IHNyYy9scnouYzozNTMgc3JjL2xzei5jOjQ5MAorKyM6IHNyYy9sc3ouYzo0OTAgc3JjL2xyei5jOjM1MworIG1zZ2lkICJtaW51dGUgdG8gbGFyZ2UgKDAuLjU5KSIKKyBtc2dzdHIgIk1pbnV0ZSB6dSBncm/fICgwLi41OSkiCisgCistIzogc3JjL2xyei5jOjM2MyBzcmMvbHJ6LmM6MzcwIHNyYy9sc3ouYzo1MDAgc3JjL2xzei5jOjUwNworKyM6IHNyYy9sc3ouYzo1MDAgc3JjL2xzei5jOjUwNyBzcmMvbHJ6LmM6MzYzIHNyYy9scnouYzozNzAKKyBtc2dpZCAic3RvcCB0aW1lIHRvIHNtYWxsIgorIG1zZ3N0ciAiU3RvcHplaXQgenUga3VyeiIKKyAKKy0jOiBzcmMvbHJ6LmM6MzY4IHNyYy9sc3ouYzo1MDUKKysjOiBzcmMvbHN6LmM6NTA1IHNyYy9scnouYzozNjgKKyBtc2dpZCAic3RvcC1hdCIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6Mzk5IHNyYy9sc3ouYzo1MTYKKysjOiBzcmMvbHN6LmM6NTE2IHNyYy9scnouYzozOTkKKyBtc2dpZCAidGltZW91dCIKKyBtc2dzdHIgIlRpbWVvdXQiCisgCistIzogc3JjL2xyei5jOjQwMSBzcmMvbHN6LmM6NTE4CisrIzogc3JjL2xzei5jOjUxOCBzcmMvbHJ6LmM6NDAxCisgbXNnaWQgInRpbWVvdXQgb3V0IG9mIHJhbmdlIDEwLi4xMDAwIgorIG1zZ3N0ciAiQXJndW1lbnQgZGVyIE9wdGlvbiB0IGF132VyaGFsYiBkZXMgQmVyZWljaHMgMTAuLjEwMDAiCisgCistIzogc3JjL2xyei5jOjQxNyBzcmMvbHN6LmM6NTI2CisrIzogc3JjL2xzei5jOjUyNiBzcmMvbHJ6LmM6NDE3CisgbXNnaWQgInNlY3VyaXR5IHZpb2xhdGlvbjogY2FuJ3QgZG8gdGhhdCB1bmRlciByZXN0cmljdGVkIHNoZWxsXG4iCisgbXNnc3RyICJTaWNoZXJoZWl0c3ZlcnN0b986IEF1c2b8aHJ1bmcgdW50ZXIgZWluZ2VzY2hy5G5rdGVyIFNoZWxsIHZlcmJvdGVuXG4iCisgCistIzogc3JjL2xyei5jOjQwNyBzcmMvbHN6LmM6NTMzCisrIzogc3JjL2xzei5jOjUzMyBzcmMvbHJ6LmM6NDA3CisgbXNnaWQgIndpbmRvdyBzaXplIgorIG1zZ3N0ciAiRmVuc3Rlcmdy9t9lIgorIAorLSM6IHNyYy9scnouYzo0MzIgc3JjL2xyei5jOjQzOSBzcmMvbHN6LmM6NTU2IHNyYy9sc3ouYzo1NjMKKysjOiBzcmMvbHN6LmM6NTU2IHNyYy9sc3ouYzo1NjMgc3JjL2xyei5jOjQzMiBzcmMvbHJ6LmM6NDM5CisgbXNnaWQgImNhbm5vdCB0dXJub2ZmIHN5c2xvZyIKKyBtc2dzdHIgImthbm4gc3lzbG9nZ2luZyBuaWNodCBhYnNjaGFsdGVuIgorIAorLSM6IHNyYy9scnouYzo0NTQgc3JjL2xzei5jOjU3MQorKyM6IHNyYy9sc3ouYzo1NzEgc3JjL2xyei5jOjQ1NAorIG1zZ2lkICJzdGFydHVwIGRlbGF5IgorIG1zZ3N0ciAiU3RhcnR2ZXJ69mdlcnVuZyIKKyAKKysjOiBzcmMvbHN6LmM6NTgzIHNyYy9sc3ouYzo2OTIgc3JjL2xzei5jOjgzMSBzcmMvbHN6LmM6MTA4MCBzcmMvenJlYWRsaW5lLmM6MTI3CisgIzogc3JjL2xyei5jOjQ3MCBzcmMvbHJ6LmM6NzU1IHNyYy9scnouYzoxMTE3IHNyYy9scnouYzoxMjQzIHNyYy9scnouYzoxMzAwCistIzogc3JjL2xyei5jOjEzMTcgc3JjL2xyei5jOjEzMzIgc3JjL2xyei5jOjE0MzEgc3JjL2xzei5jOjU4MyBzcmMvbHN6LmM6NjkyCistIzogc3JjL2xzei5jOjgzMSBzcmMvbHN6LmM6MTA4MCBzcmMvenJlYWRsaW5lLmM6MTI3CisrIzogc3JjL2xyei5jOjEzMTcgc3JjL2xyei5jOjEzMzIgc3JjL2xyei5jOjE0MzEKKyBtc2dpZCAib3V0IG9mIG1lbW9yeSIKKyBtc2dzdHIgIktlaW4gU3BlaWNoZXIgbWVociBmcmVpIgorIAorLSM6IHNyYy9scnouYzo0ODAgc3JjL2xzei5jOjU5NQorKyM6IHNyYy9sc3ouYzo1OTUgc3JjL2xyei5jOjQ4MAorIG1zZ2lkICJ0aGlzIHByb2dyYW0gd2FzIG5ldmVyIGludGVuZGVkIHRvIGJlIHVzZWQgc2V0dWlkXG4iCisgbXNnc3RyICJkaWVzZXMgUHJvZ3JhbW0gZGFyZiBuaWNodCBzZXR1aWQgbGF1ZmVuXG4iCisgCitAQCAtMTIwLDE0ICsxMjIsMTUgQEAgbXNnaWQgIm5lZWQgYXQgbGVhc3Qgb25lIGZpbGUgdG8gc2VuZCIKKyBtc2dzdHIgImVzIG113yBtaW5kZXN0ZW5zIGVpbiBOYW1lIGVpbmVyIHp1IHNlbmRlbmRlbiBEYXRlaSBhbmdlZ2ViZW4gd2VyZGVuIgorIAorICM6IHNyYy9sc3ouYzo2MjgKKysjLCBjLWZvcm1hdAorIG1zZ2lkICJDYW4ndCBzZW5kIGNvbW1hbmQgaW4gcmVzdHJpY3RlZCBtb2RlXG4iCisgbXNnc3RyICJJbSBlaW5nZXNjaHLkbmt0ZW4gTW9kdXMgaXN0IGRhcyBTZW5kZW4gdm9uIEtvbW1hbmRvcyB2ZXJib3RlblxuIgorIAorLSM6IHNyYy9scnouYzo1MjQgc3JjL2xzei5jOjY1NQorKyM6IHNyYy9sc3ouYzo2NTUgc3JjL2xyei5jOjUyNAorIG1zZ2lkICJob3N0bmFtZSB0b28gbG9uZ1xuIgorIG1zZ3N0ciAiSG9zdG5hbWUgenUgbGFuZ1xuIgorIAorLSM6IHNyYy9scnouYzo1Mzkgc3JjL2xzei5jOjY3MAorKyM6IHNyYy9sc3ouYzo2NzAgc3JjL2xyei5jOjUzOQorIG1zZ2lkICJpbGxlZ2FsIHNlcnZlciBhZGRyZXNzXG4iCisgbXNnc3RyICJJbGxlZ2FsZSBTZXJ2ZXJhZGRyZXNzZVxuIgorIAorQEAgLTEzNSwxMSArMTM4LDExIEBAIG1zZ3N0ciAiSWxsZWdhbGUgU2VydmVyYWRkcmVzc2VcbiIKKyBtc2dpZCAiY2FuIHJlYWQgb25seSBvbmUgZmlsZSBmcm9tIHN0ZGluIgorIG1zZ3N0ciAia2FubiBudXIgZWluZSBEYXRlaSB2b24gZGVyIFN0YW5kYXJkZWluZ2FiZSBsZXNlbiIKKyAKKy0jOiBzcmMvbHJ6LmM6NTcxIHNyYy9sc3ouYzo4MDYKKysjOiBzcmMvbHN6LmM6ODA2IHNyYy9scnouYzo1NzEKKyBtc2dpZCAiVHJhbnNmZXIgaW5jb21wbGV0ZVxuIgorIG1zZ3N0ciAi3GJlcnRyYWd1bmcgbmljaHQgYWJnZXNjaGxvc3NlblxuIgorIAorLSM6IHNyYy9scnouYzo1NzMgc3JjL2xzei5jOjgwOAorKyM6IHNyYy9sc3ouYzo4MDggc3JjL2xyei5jOjU3MworIG1zZ2lkICJUcmFuc2ZlciBjb21wbGV0ZVxuIgorIG1zZ3N0ciAi3GJlcnRyYWd1bmcgYWJnZXNjaGxvc3NlblxuIgorIAorQEAgLTE5Nyw5ICsyMDAsOSBAQCBtc2dzdHIgIkthbm4ga2VpbmUgZGVyIGFuZ2Vmb3JkZXJ0ZW4gRGF0CisgIzogc3JjL2xzei5jOjEwMjgKKyAjLCBjLWZvcm1hdAorIG1zZ2lkICJzZWN1cml0eSB2aW9sYXRpb246IG5vdCBhbGxvd2VkIHRvIHVwbG9hZCBmcm9tICVzIgorLW1zZ3N0ciAiU2ljaGVyaGVpdHN2ZXJzdG/fOiBBdXNm/GhydW5nIHVudGVyIGVpbmdlc2NocuRua3RlciBTaGVsbCB2ZXJib3RlbiIKKyttc2dzdHIgIlNpY2hlcmhlaXRzdmVyc3Rv3zogQXVzZvxocnVuZyB1bnRlciAlcyB2ZXJib3RlbiIKKyAKKy0jOiBzcmMvbHJ6LmM6MTM5MiBzcmMvbHN6LmM6MTA0NgorKyM6IHNyYy9sc3ouYzoxMDQ2IHNyYy9scnouYzoxMzkyCisgIywgYy1mb3JtYXQKKyBtc2dpZCAiY2Fubm90IG9wZW4gJXMiCisgbXNnc3RyICJrYW5uICVzIG5pY2h0IPZmZm5lbiIKK0BAIC0yOTAsMTIgKzI5MywxMiBAQCBtc2dzdHIgIkVyaGllbHQgJTAyeCBhbHMgU2VrdG9yYmVzdOR0aWd1CisgbXNnaWQgIlJldHJ5IENvdW50IEV4Y2VlZGVkIgorIG1zZ3N0ciAiTWF4aW1hbGUgV2llZGVyaG9sdW5nc2FuemFobCD8YmVyc2Nocml0dGVuIgorIAorLSM6IHNyYy9scnouYzo1OTMgc3JjL2xzei5jOjE1MjEKKysjOiBzcmMvbHN6LmM6MTUyMSBzcmMvbHJ6LmM6NTkzCisgIywgYy1mb3JtYXQKKyBtc2dpZCAiVHJ5IGAlcyAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIgorIG1zZ3N0ciAiYCVzIC0taGVscCcgZ2lidCB3ZWl0ZXJlIEluZm9ybWF0aW9uZW4uXG4iCisgCistIzogc3JjL2xyei5jOjU5OCBzcmMvbHN6LmM6MTUyNgorKyM6IHNyYy9sc3ouYzoxNTI2IHNyYy9scnouYzo1OTgKKyAjLCBjLWZvcm1hdAorIG1zZ2lkICIlcyB2ZXJzaW9uICVzXG4iCisgbXNnc3RyICIlcyBWZXJzaW9uICVzXG4iCitAQCAtMzE1LDcgKzMxOCw3IEBAIG1zZ2lkICJTZW5kIGZpbGUocykgd2l0aCBaTU9ERU0vWU1PREVNL1gKKyBtc2dzdHIgIkRhdGVpZW4gbWl0IFpNT0RFTS9ZTU9ERU0vWE1PREVNIPxiZXJ0cmFnZW5cbiIKKyAKKyAjIHNyYy9scnouYzo0NzUgc3JjL2xzei5jOjEzMzAgeHgKKy0jOiBzcmMvbHJ6LmM6NjA0IHNyYy9sc3ouYzoxNTM0CisrIzogc3JjL2xzei5jOjE1MzQgc3JjL2xyei5jOjYwNAorIG1zZ2lkICIiCisgIiAgICAoWCkgPSBvcHRpb24gYXBwbGllcyB0byBYTU9ERU0gb25seVxuIgorICIgICAgKFkpID0gb3B0aW9uIGFwcGxpZXMgdG8gWU1PREVNIG9ubHlcbiIKK0BAIC00MzEsNyArNDM0LDcgQEAgbXNnc3RyICIiCisgbXNnaWQgImdvdCBaUlFJTklUIgorIG1zZ3N0ciAiZXJoaWVsdCBaUlFJTklUIgorIAorLSM6IHNyYy9scnouYzoxMDc0IHNyYy9scnouYzoxNzg3IHNyYy9sc3ouYzoxNzkyCisrIzogc3JjL2xzei5jOjE3OTIgc3JjL2xyei5jOjEwNzQgc3JjL2xyei5jOjE3ODcKKyBtc2dpZCAiZ290IFpDQU4iCisgbXNnc3RyICJlcmhpZWx0IFpDQU4iCisgCitAQCAtNDcyLDcgKzQ3NSw3IEBAIG1zZ3N0ciAiY2FsY19ibGtsZW46IGFsdCAlbGQsIG5ldSAlbGQsIEQKKyAjOiBzcmMvbHN6LmM6MjI3MgorICMsIGMtZm9ybWF0CisgbXNnaWQgImNhbGNfYmxrbGVuOiBjYWxjIHRvdGFsX2J5dGVzPSVsZCwgYnBlPSVsZCwgZWM9JWxkXG4iCistbXNnc3RyICJjYWxjX2Jsa2xlbjoga2Fsa3VsaWVyZSBnZXNhbXRfYnl0ZXM9JWxkLCBicGU9JWxlLCBlYz0lbGRcbiIKKyttc2dzdHIgImNhbGNfYmxrbGVuOiBrYWxrdWxpZXJlIGdlc2FtdF9ieXRlcz0lbGQsIGJwZT0lbGQsIGVjPSVsZFxuIgorIAorICM6IHNyYy9sc3ouYzoyMjgzCisgIywgYy1mb3JtYXQKK0BAIC00OTMsNiArNDk2LDEwIEBAIG1zZ3N0ciAiIgorICJcbiIKKyAiY291bnRlbTogR2VzYW10ICVkICVsZFxuIgorIAorKyM6IHNyYy96bS5jOjkxCisrbXNnaWQgIkJhZCBDUkMiCisrbXNnc3RyICIiCisrCisgIzogc3JjL3ptLmM6MjQ0CisgIywgYy1mb3JtYXQKKyBtc2dpZCAiQmFkIGVzY2FwZSBzZXF1ZW5jZSAleCIKK0BAIC01MDIsNyArNTA5LDcgQEAgbXNnc3RyICJGYWxzY2hlIEVzY2FwZXNlcXVlbnogJXgiCisgbXNnaWQgIlNlbmRlciBDYW5jZWxlZCIKKyBtc2dzdHIgIlNlbmRlciBicmFjaCBhYiIKKyAKKy0jOiBzcmMvbHJ6LmM6OTk3IHNyYy96bS5jOjU4NSBzcmMvem0uYzo2NDQKKysjOiBzcmMvem0uYzo1ODUgc3JjL3ptLmM6NjQ0IHNyYy9scnouYzo5OTcKKyBtc2dpZCAiVElNRU9VVCIKKyBtc2dzdHIgIlRJTUVPVVQiCisgCitAQCAtNzcyLDEzICs3NzksMTEgQEAgbXNnc3RyICJFcmhpZWx0IHVuZXJ3YXJ0ZXRlcyBaUklOSVQiCisgbXNnaWQgIlNraXBwZWQiCisgbXNnc3RyICLcYmVyc3BydW5nZW4iCisgCistIy4gdG9vIGJhZAorICM6IHNyYy9scnouYzoyMDY0CisgIywgYy1mb3JtYXQKKyBtc2dpZCAicnpmaWxlOiBicHMgcmF0ZSAlbGQgYmVsb3cgbWluICVsZCIKKyBtc2dzdHIgInJ6ZmlsZTogQlBTLVJhdGUgJWxkIHVudGVyIE1pbmltdW0gJWxkIgorIAorLSMuIHRvbyBiYWQKKyAjOiBzcmMvbHJ6LmM6MjA3OQorIG1zZ2lkICJyemZpbGU6IHJlYWNoZWQgc3RvcCB0aW1lIgorIG1zZ3N0ciAicnpmaWxlOiBBYmJydWNoemVpdCBlcnJlaWNodCIKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9wby9scnpzei5wb3QgbHJ6c3otMC4xMi4yMC9wby9scnpzei5wb3QKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL3BvL2xyenN6LnBvdAkxOTk4LTEyLTMwIDA3OjUwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGxyenN6LTAuMTIuMjAvcG8vbHJ6c3oucG90CTIwMTktMTEtMjYgMTE6Mzk6MTIuMDAwMDAwMDAwICswMDAwCitAQCAtMSwyNCArMSwyNyBAQAorICMgU09NRSBERVNDUklQVElWRSBUSVRMRS4KKyAjIENvcHlyaWdodCAoQykgWUVBUiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBscnpzeiBwYWNrYWdlLgorICMgRklSU1QgQVVUSE9SIDxFTUFJTEBBRERSRVNTPiwgWUVBUi4KKyAjCisgIywgZnV6enkKKyBtc2dpZCAiIgorIG1zZ3N0ciAiIgorLSJQcm9qZWN0LUlkLVZlcnNpb246IFBBQ0tBR0UgVkVSU0lPTlxuIgorLSJQT1QtQ3JlYXRpb24tRGF0ZTogMTk5OC0xMi0zMCAwODo0OSswMTAwXG4iCisrIlByb2plY3QtSWQtVmVyc2lvbjogbHJ6c3ogMC4xMi4yMFxuIgorKyJSZXBvcnQtTXNnaWQtQnVncy1UbzogXG4iCisrIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE5LTExLTI2IDExOjM5KzAwMDBcbiIKKyAiUE8tUmV2aXNpb24tRGF0ZTogWUVBUi1NTy1EQSBITzpNSStaT05FXG4iCisgIkxhc3QtVHJhbnNsYXRvcjogRlVMTCBOQU1FIDxFTUFJTEBBRERSRVNTPlxuIgorICJMYW5ndWFnZS1UZWFtOiBMQU5HVUFHRSA8TExAbGkub3JnPlxuIgorKyJMYW5ndWFnZTogXG4iCisgIk1JTUUtVmVyc2lvbjogMS4wXG4iCisgIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1DSEFSU0VUXG4iCistIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IEVOQ09ESU5HXG4iCisrIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKKyAKKyAjOiBzcmMvbHN6LmM6MjI4CisgbXNnaWQgImlvX21vZGUoLDIpIGluIHJic2IuYyBub3QgaW1wbGVtZW50ZWRcbiIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6MjAxIHNyYy9sc3ouYzoyMzAKKysjOiBzcmMvbHN6LmM6MjMwIHNyYy9scnouYzoyMDEKKyAjLCBjLWZvcm1hdAorIG1zZ2lkICJjYXVnaHQgc2lnbmFsICVkOyBleGl0aW5nIgorIG1zZ3N0ciAiIgorQEAgLTQ1LDcgKzQ4LDcgQEAgbXNnc3RyICIiCisgbXNnaWQgImZyYW1lbGVuZ3RoIG91dCBvZiByYW5nZSAzMi4uJWxkIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzozMjMgc3JjL2xzei5jOjQ1MAorKyM6IHNyYy9sc3ouYzo0NTAgc3JjL2xyei5jOjMyMworIG1zZ2lkICJtaW5fYnBzIgorIG1zZ3N0ciAiIgorIAorQEAgLTUzLDY1ICs1Niw2NSBAQCBtc2dzdHIgIiIKKyBtc2dpZCAibWluX2JwcyBtdXN0IGJlID49IDAiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjMyOSBzcmMvbHN6LmM6NDU4CisrIzogc3JjL2xzei5jOjQ1OCBzcmMvbHJ6LmM6MzI5CisgbXNnaWQgIm1pbl9icHNfdGltZSIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6MzMxIHNyYy9sc3ouYzo0NjAKKysjOiBzcmMvbHN6LmM6NDYwIHNyYy9scnouYzozMzEKKyBtc2dpZCAibWluX2Jwc190aW1lIG11c3QgYmUgPiAxIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzozNDcgc3JjL2xzei5jOjQ4NAorKyM6IHNyYy9sc3ouYzo0ODQgc3JjL2xyei5jOjM0NworIG1zZ2lkICJob3VyIHRvIGxhcmdlICgwLi4yMykiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjM0OSBzcmMvbHN6LmM6NDg2CisrIzogc3JjL2xzei5jOjQ4NiBzcmMvbHJ6LmM6MzQ5CisgbXNnaWQgInVucGFyc2FibGUgc3RvcCB0aW1lXG4iCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjM1MyBzcmMvbHN6LmM6NDkwCisrIzogc3JjL2xzei5jOjQ5MCBzcmMvbHJ6LmM6MzUzCisgbXNnaWQgIm1pbnV0ZSB0byBsYXJnZSAoMC4uNTkpIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzozNjMgc3JjL2xyei5jOjM3MCBzcmMvbHN6LmM6NTAwIHNyYy9sc3ouYzo1MDcKKysjOiBzcmMvbHN6LmM6NTAwIHNyYy9sc3ouYzo1MDcgc3JjL2xyei5jOjM2MyBzcmMvbHJ6LmM6MzcwCisgbXNnaWQgInN0b3AgdGltZSB0byBzbWFsbCIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6MzY4IHNyYy9sc3ouYzo1MDUKKysjOiBzcmMvbHN6LmM6NTA1IHNyYy9scnouYzozNjgKKyBtc2dpZCAic3RvcC1hdCIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6Mzk5IHNyYy9sc3ouYzo1MTYKKysjOiBzcmMvbHN6LmM6NTE2IHNyYy9scnouYzozOTkKKyBtc2dpZCAidGltZW91dCIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6NDAxIHNyYy9sc3ouYzo1MTgKKysjOiBzcmMvbHN6LmM6NTE4IHNyYy9scnouYzo0MDEKKyBtc2dpZCAidGltZW91dCBvdXQgb2YgcmFuZ2UgMTAuLjEwMDAiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjQxNyBzcmMvbHN6LmM6NTI2CisrIzogc3JjL2xzei5jOjUyNiBzcmMvbHJ6LmM6NDE3CisgbXNnaWQgInNlY3VyaXR5IHZpb2xhdGlvbjogY2FuJ3QgZG8gdGhhdCB1bmRlciByZXN0cmljdGVkIHNoZWxsXG4iCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjQwNyBzcmMvbHN6LmM6NTMzCisrIzogc3JjL2xzei5jOjUzMyBzcmMvbHJ6LmM6NDA3CisgbXNnaWQgIndpbmRvdyBzaXplIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzo0MzIgc3JjL2xyei5jOjQzOSBzcmMvbHN6LmM6NTU2IHNyYy9sc3ouYzo1NjMKKysjOiBzcmMvbHN6LmM6NTU2IHNyYy9sc3ouYzo1NjMgc3JjL2xyei5jOjQzMiBzcmMvbHJ6LmM6NDM5CisgbXNnaWQgImNhbm5vdCB0dXJub2ZmIHN5c2xvZyIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6NDU0IHNyYy9sc3ouYzo1NzEKKysjOiBzcmMvbHN6LmM6NTcxIHNyYy9scnouYzo0NTQKKyBtc2dpZCAic3RhcnR1cCBkZWxheSIKKyBtc2dzdHIgIiIKKyAKKysjOiBzcmMvbHN6LmM6NTgzIHNyYy9sc3ouYzo2OTIgc3JjL2xzei5jOjgzMSBzcmMvbHN6LmM6MTA4MCBzcmMvenJlYWRsaW5lLmM6MTI3CisgIzogc3JjL2xyei5jOjQ3MCBzcmMvbHJ6LmM6NzU1IHNyYy9scnouYzoxMTE3IHNyYy9scnouYzoxMjQzIHNyYy9scnouYzoxMzAwCistIzogc3JjL2xyei5jOjEzMTcgc3JjL2xyei5jOjEzMzIgc3JjL2xyei5jOjE0MzEgc3JjL2xzei5jOjU4MyBzcmMvbHN6LmM6NjkyCistIzogc3JjL2xzei5jOjgzMSBzcmMvbHN6LmM6MTA4MCBzcmMvenJlYWRsaW5lLmM6MTI3CisrIzogc3JjL2xyei5jOjEzMTcgc3JjL2xyei5jOjEzMzIgc3JjL2xyei5jOjE0MzEKKyBtc2dpZCAib3V0IG9mIG1lbW9yeSIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6NDgwIHNyYy9sc3ouYzo1OTUKKysjOiBzcmMvbHN6LmM6NTk1IHNyYy9scnouYzo0ODAKKyBtc2dpZCAidGhpcyBwcm9ncmFtIHdhcyBuZXZlciBpbnRlbmRlZCB0byBiZSB1c2VkIHNldHVpZFxuIgorIG1zZ3N0ciAiIgorIAorQEAgLTEyMCwxNCArMTIzLDE1IEBAIG1zZ2lkICJuZWVkIGF0IGxlYXN0IG9uZSBmaWxlIHRvIHNlbmQiCisgbXNnc3RyICIiCisgCisgIzogc3JjL2xzei5jOjYyOAorKyMsIGMtZm9ybWF0CisgbXNnaWQgIkNhbid0IHNlbmQgY29tbWFuZCBpbiByZXN0cmljdGVkIG1vZGVcbiIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6NTI0IHNyYy9sc3ouYzo2NTUKKysjOiBzcmMvbHN6LmM6NjU1IHNyYy9scnouYzo1MjQKKyBtc2dpZCAiaG9zdG5hbWUgdG9vIGxvbmdcbiIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6NTM5IHNyYy9sc3ouYzo2NzAKKysjOiBzcmMvbHN6LmM6NjcwIHNyYy9scnouYzo1MzkKKyBtc2dpZCAiaWxsZWdhbCBzZXJ2ZXIgYWRkcmVzc1xuIgorIG1zZ3N0ciAiIgorIAorQEAgLTEzNSwxMSArMTM5LDExIEBAIG1zZ3N0ciAiIgorIG1zZ2lkICJjYW4gcmVhZCBvbmx5IG9uZSBmaWxlIGZyb20gc3RkaW4iCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjU3MSBzcmMvbHN6LmM6ODA2CisrIzogc3JjL2xzei5jOjgwNiBzcmMvbHJ6LmM6NTcxCisgbXNnaWQgIlRyYW5zZmVyIGluY29tcGxldGVcbiIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6NTczIHNyYy9sc3ouYzo4MDgKKysjOiBzcmMvbHN6LmM6ODA4IHNyYy9scnouYzo1NzMKKyBtc2dpZCAiVHJhbnNmZXIgY29tcGxldGVcbiIKKyBtc2dzdHIgIiIKKyAKK0BAIC0xOTksNyArMjAzLDcgQEAgbXNnc3RyICIiCisgbXNnaWQgInNlY3VyaXR5IHZpb2xhdGlvbjogbm90IGFsbG93ZWQgdG8gdXBsb2FkIGZyb20gJXMiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjEzOTIgc3JjL2xzei5jOjEwNDYKKysjOiBzcmMvbHN6LmM6MTA0NiBzcmMvbHJ6LmM6MTM5MgorICMsIGMtZm9ybWF0CisgbXNnaWQgImNhbm5vdCBvcGVuICVzIgorIG1zZ3N0ciAiIgorQEAgLTI5MCwxMiArMjk0LDEyIEBAIG1zZ3N0ciAiIgorIG1zZ2lkICJSZXRyeSBDb3VudCBFeGNlZWRlZCIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6NTkzIHNyYy9sc3ouYzoxNTIxCisrIzogc3JjL2xzei5jOjE1MjEgc3JjL2xyei5jOjU5MworICMsIGMtZm9ybWF0CisgbXNnaWQgIlRyeSBgJXMgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6NTk4IHNyYy9sc3ouYzoxNTI2CisrIzogc3JjL2xzei5jOjE1MjYgc3JjL2xyei5jOjU5OAorICMsIGMtZm9ybWF0CisgbXNnaWQgIiVzIHZlcnNpb24gJXNcbiIKKyBtc2dzdHIgIiIKK0BAIC0zMTQsNyArMzE4LDcgQEAgbXNnc3RyICIiCisgbXNnaWQgIlNlbmQgZmlsZShzKSB3aXRoIFpNT0RFTS9ZTU9ERU0vWE1PREVNIHByb3RvY29sXG4iCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjYwNCBzcmMvbHN6LmM6MTUzNAorKyM6IHNyYy9sc3ouYzoxNTM0IHNyYy9scnouYzo2MDQKKyBtc2dpZCAiIgorICIgICAgKFgpID0gb3B0aW9uIGFwcGxpZXMgdG8gWE1PREVNIG9ubHlcbiIKKyAiICAgIChZKSA9IG9wdGlvbiBhcHBsaWVzIHRvIFlNT0RFTSBvbmx5XG4iCitAQCAtMzc4LDcgKzM4Miw3IEBAIG1zZ3N0ciAiIgorIG1zZ2lkICJnb3QgWlJRSU5JVCIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6MTA3NCBzcmMvbHJ6LmM6MTc4NyBzcmMvbHN6LmM6MTc5MgorKyM6IHNyYy9sc3ouYzoxNzkyIHNyYy9scnouYzoxMDc0IHNyYy9scnouYzoxNzg3CisgbXNnaWQgImdvdCBaQ0FOIgorIG1zZ3N0ciAiIgorIAorQEAgLTQzOCw2ICs0NDIsMTAgQEAgbXNnaWQgIiIKKyAiY291bnRlbTogVG90YWwgJWQgJWxkXG4iCisgbXNnc3RyICIiCisgCisrIzogc3JjL3ptLmM6OTEKKyttc2dpZCAiQmFkIENSQyIKKyttc2dzdHIgIiIKKysKKyAjOiBzcmMvem0uYzoyNDQKKyAjLCBjLWZvcm1hdAorIG1zZ2lkICJCYWQgZXNjYXBlIHNlcXVlbmNlICV4IgorQEAgLTQ0Nyw3ICs0NTUsNyBAQCBtc2dzdHIgIiIKKyBtc2dpZCAiU2VuZGVyIENhbmNlbGVkIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzo5OTcgc3JjL3ptLmM6NTg1IHNyYy96bS5jOjY0NAorKyM6IHNyYy96bS5jOjU4NSBzcmMvem0uYzo2NDQgc3JjL2xyei5jOjk5NworIG1zZ2lkICJUSU1FT1VUIgorIG1zZ3N0ciAiIgorIAorQEAgLTY3OCwxMyArNjg2LDExIEBAIG1zZ3N0ciAiIgorIG1zZ2lkICJTa2lwcGVkIgorIG1zZ3N0ciAiIgorIAorLSMuIHRvbyBiYWQKKyAjOiBzcmMvbHJ6LmM6MjA2NAorICMsIGMtZm9ybWF0CisgbXNnaWQgInJ6ZmlsZTogYnBzIHJhdGUgJWxkIGJlbG93IG1pbiAlbGQiCisgbXNnc3RyICIiCisgCistIy4gdG9vIGJhZAorICM6IHNyYy9scnouYzoyMDc5CisgbXNnaWQgInJ6ZmlsZTogcmVhY2hlZCBzdG9wIHRpbWUiCisgbXNnc3RyICIiCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvcG8vTWFrZXZhcnMgbHJ6c3otMC4xMi4yMC9wby9NYWtldmFycworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvcG8vTWFrZXZhcnMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL3BvL01ha2V2YXJzCTIwMTktMTEtMjUgMTg6MDk6NTIuMDAwMDAwMDAwICswMDAwCitAQCAtMCwwICsxLDc4IEBACisrIyBNYWtlZmlsZSB2YXJpYWJsZXMgZm9yIFBPIGRpcmVjdG9yeSBpbiBhbnkgcGFja2FnZSB1c2luZyBHTlUgZ2V0dGV4dC4KKysKKysjIFVzdWFsbHkgdGhlIG1lc3NhZ2UgZG9tYWluIGlzIHRoZSBzYW1lIGFzIHRoZSBwYWNrYWdlIG5hbWUuCisrRE9NQUlOID0gJChQQUNLQUdFKQorKworKyMgVGhlc2UgdHdvIHZhcmlhYmxlcyBkZXBlbmQgb24gdGhlIGxvY2F0aW9uIG9mIHRoaXMgZGlyZWN0b3J5LgorK3N1YmRpciA9IHBvCisrdG9wX2J1aWxkZGlyID0gLi4KKysKKysjIFRoZXNlIG9wdGlvbnMgZ2V0IHBhc3NlZCB0byB4Z2V0dGV4dC4KKytYR0VUVEVYVF9PUFRJT05TID0gLS1rZXl3b3JkPV8gLS1rZXl3b3JkPU5fCisrCisrIyBUaGlzIGlzIHRoZSBjb3B5cmlnaHQgaG9sZGVyIHRoYXQgZ2V0cyBpbnNlcnRlZCBpbnRvIHRoZSBoZWFkZXIgb2YgdGhlCisrIyAkKERPTUFJTikucG90IGZpbGUuICBTZXQgdGhpcyB0byB0aGUgY29weXJpZ2h0IGhvbGRlciBvZiB0aGUgc3Vycm91bmRpbmcKKysjIHBhY2thZ2UuICAoTm90ZSB0aGF0IHRoZSBtc2dzdHIgc3RyaW5ncywgZXh0cmFjdGVkIGZyb20gdGhlIHBhY2thZ2UncworKyMgc291cmNlcywgYmVsb25nIHRvIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG9mIHRoZSBwYWNrYWdlLikgIFRyYW5zbGF0b3JzIGFyZQorKyMgZXhwZWN0ZWQgdG8gdHJhbnNmZXIgdGhlIGNvcHlyaWdodCBmb3IgdGhlaXIgdHJhbnNsYXRpb25zIHRvIHRoaXMgcGVyc29uCisrIyBvciBlbnRpdHksIG9yIHRvIGRpc2NsYWltIHRoZWlyIGNvcHlyaWdodC4gIFRoZSBlbXB0eSBzdHJpbmcgc3RhbmRzIGZvcgorKyMgdGhlIHB1YmxpYyBkb21haW47IGluIHRoaXMgY2FzZSB0aGUgdHJhbnNsYXRvcnMgYXJlIGV4cGVjdGVkIHRvIGRpc2NsYWltCisrIyB0aGVpciBjb3B5cmlnaHQuCisrQ09QWVJJR0hUX0hPTERFUiA9IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyB0ZWxscyB3aGV0aGVyIG9yIG5vdCB0byBwcmVwZW5kICJHTlUgIiBwcmVmaXggdG8gdGhlIHBhY2thZ2UKKysjIG5hbWUgdGhhdCBnZXRzIGluc2VydGVkIGludG8gdGhlIGhlYWRlciBvZiB0aGUgJChET01BSU4pLnBvdCBmaWxlLgorKyMgUG9zc2libGUgdmFsdWVzIGFyZSAieWVzIiwgIm5vIiwgb3IgZW1wdHkuICBJZiBpdCBpcyBlbXB0eSwgdHJ5IHRvCisrIyBkZXRlY3QgaXQgYXV0b21hdGljYWxseSBieSBzY2FubmluZyB0aGUgZmlsZXMgaW4gJCh0b3Bfc3JjZGlyKSBmb3IKKysjICJHTlUgcGFja2FnZW5hbWUiIHN0cmluZy4KKytQQUNLQUdFX0dOVSA9CisrCisrIyBUaGlzIGlzIHRoZSBlbWFpbCBhZGRyZXNzIG9yIFVSTCB0byB3aGljaCB0aGUgdHJhbnNsYXRvcnMgc2hhbGwgcmVwb3J0CisrIyBidWdzIGluIHRoZSB1bnRyYW5zbGF0ZWQgc3RyaW5nczoKKysjIC0gU3RyaW5ncyB3aGljaCBhcmUgbm90IGVudGlyZSBzZW50ZW5jZXMsIHNlZSB0aGUgbWFpbnRhaW5lciBndWlkZWxpbmVzCisrIyAgIGluIHRoZSBHTlUgZ2V0dGV4dCBkb2N1bWVudGF0aW9uLCBzZWN0aW9uICdQcmVwYXJpbmcgU3RyaW5ncycuCisrIyAtIFN0cmluZ3Mgd2hpY2ggdXNlIHVuY2xlYXIgdGVybXMgb3IgcmVxdWlyZSBhZGRpdGlvbmFsIGNvbnRleHQgdG8gYmUKKysjICAgdW5kZXJzdG9vZC4KKysjIC0gU3RyaW5ncyB3aGljaCBtYWtlIGludmFsaWQgYXNzdW1wdGlvbnMgYWJvdXQgbm90YXRpb24gb2YgZGF0ZSwgdGltZSBvcgorKyMgICBtb25leS4KKysjIC0gUGx1cmFsaXNhdGlvbiBwcm9ibGVtcy4KKysjIC0gSW5jb3JyZWN0IEVuZ2xpc2ggc3BlbGxpbmcuCisrIyAtIEluY29ycmVjdCBmb3JtYXR0aW5nLgorKyMgSXQgY2FuIGJlIHlvdXIgZW1haWwgYWRkcmVzcywgb3IgYSBtYWlsaW5nIGxpc3QgYWRkcmVzcyB3aGVyZSB0cmFuc2xhdG9ycworKyMgY2FuIHdyaXRlIHRvIHdpdGhvdXQgYmVpbmcgc3Vic2NyaWJlZCwgb3IgdGhlIFVSTCBvZiBhIHdlYiBwYWdlIHRocm91Z2gKKysjIHdoaWNoIHRoZSB0cmFuc2xhdG9ycyBjYW4gY29udGFjdCB5b3UuCisrTVNHSURfQlVHU19BRERSRVNTID0KKysKKysjIFRoaXMgaXMgdGhlIGxpc3Qgb2YgbG9jYWxlIGNhdGVnb3JpZXMsIGJleW9uZCBMQ19NRVNTQUdFUywgZm9yIHdoaWNoIHRoZQorKyMgbWVzc2FnZSBjYXRhbG9ncyBzaGFsbCBiZSB1c2VkLiAgSXQgaXMgdXN1YWxseSBlbXB0eS4KKytFWFRSQV9MT0NBTEVfQ0FURUdPUklFUyA9CisrCisrIyBUaGlzIHRlbGxzIHdoZXRoZXIgdGhlICQoRE9NQUlOKS5wb3QgZmlsZSBjb250YWlucyBtZXNzYWdlcyB3aXRoIGFuICdtc2djdHh0JworKyMgY29udGV4dC4gIFBvc3NpYmxlIHZhbHVlcyBhcmUgInllcyIgYW5kICJubyIuICBTZXQgdGhpcyB0byB5ZXMgaWYgdGhlCisrIyBwYWNrYWdlIHVzZXMgZnVuY3Rpb25zIHRha2luZyBhbHNvIGEgbWVzc2FnZSBjb250ZXh0LCBsaWtlIHBnZXR0ZXh0KCksIG9yCisrIyBpZiBpbiAkKFhHRVRURVhUX09QVElPTlMpIHlvdSBkZWZpbmUga2V5d29yZHMgd2l0aCBhIGNvbnRleHQgYXJndW1lbnQuCisrVVNFX01TR0NUWFQgPSBubworKworKyMgVGhlc2Ugb3B0aW9ucyBnZXQgcGFzc2VkIHRvIG1zZ21lcmdlLgorKyMgVXNlZnVsIG9wdGlvbnMgYXJlIGluIHBhcnRpY3VsYXI6CisrIyAgIC0tcHJldmlvdXMgICAgICAgICAgICB0byBrZWVwIHByZXZpb3VzIG1zZ2lkcyBvZiB0cmFuc2xhdGVkIG1lc3NhZ2VzLAorKyMgICAtLXF1aWV0ICAgICAgICAgICAgICAgdG8gcmVkdWNlIHRoZSB2ZXJib3NpdHkuCisrTVNHTUVSR0VfT1BUSU9OUyA9CisrCisrIyBUaGVzZSBvcHRpb25zIGdldCBwYXNzZWQgdG8gbXNnaW5pdC4KKysjIElmIHlvdSB3YW50IHRvIGRpc2FibGUgbGluZSB3cmFwcGluZyB3aGVuIHdyaXRpbmcgUE8gZmlsZXMsIGFkZAorKyMgLS1uby13cmFwIHRvIE1TR01FUkdFX09QVElPTlMsIFhHRVRURVhUX09QVElPTlMsIGFuZAorKyMgTVNHSU5JVF9PUFRJT05TLgorK01TR0lOSVRfT1BUSU9OUyA9CisrCisrIyBUaGlzIHRlbGxzIHdoZXRoZXIgb3Igbm90IHRvIHJlZ2VuZXJhdGUgYSBQTyBmaWxlIHdoZW4gJChET01BSU4pLnBvdAorKyMgaGFzIGNoYW5nZWQuICBQb3NzaWJsZSB2YWx1ZXMgYXJlICJ5ZXMiIGFuZCAibm8iLiAgU2V0IHRoaXMgdG8gbm8gaWYKKysjIHRoZSBQT1QgZmlsZSBpcyBjaGVja2VkIGluIHRoZSByZXBvc2l0b3J5IGFuZCB0aGUgdmVyc2lvbiBjb250cm9sCisrIyBwcm9ncmFtIGlnbm9yZXMgdGltZXN0YW1wcy4KKytQT19ERVBFTkRTX09OX1BPVCA9IHllcworKworKyMgVGhpcyB0ZWxscyB3aGV0aGVyIG9yIG5vdCB0byBmb3JjaWJseSB1cGRhdGUgJChET01BSU4pLnBvdCBhbmQKKysjIHJlZ2VuZXJhdGUgUE8gZmlsZXMgb24gIm1ha2UgZGlzdCIuICBQb3NzaWJsZSB2YWx1ZXMgYXJlICJ5ZXMiIGFuZAorKyMgIm5vIi4gIFNldCB0aGlzIHRvIG5vIGlmIHRoZSBQT1QgZmlsZSBhbmQgUE8gZmlsZXMgYXJlIG1haW50YWluZWQKKysjIGV4dGVybmFsbHkuCisrRElTVF9ERVBFTkRTX09OX1VQREFURV9QTyA9IHllcworZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL3BvL3N0YW1wLWNhdC1pZCBscnpzei0wLjEyLjIwL3BvL3N0YW1wLWNhdC1pZAorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvcG8vc3RhbXAtY2F0LWlkCTE5OTgtMTItMzAgMDc6NTA6MDEuMDAwMDAwMDAwICswMDAwCisrKysgbHJ6c3otMC4xMi4yMC9wby9zdGFtcC1jYXQtaWQJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xICswLDAgQEAKKy10aW1lc3RhbXAKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9wby9zdGFtcC1wbyBscnpzei0wLjEyLjIwL3BvL3N0YW1wLXBvCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9wby9zdGFtcC1wbwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvcG8vc3RhbXAtcG8JMjAxOS0xMS0yNiAxMTo0MjowOS4wMDAwMDAwMDAgKzAwMDAKK0BAIC0wLDAgKzEgQEAKKyt0aW1lc3RhbXAKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9zcmMvTWFrZWZpbGUuYW0gbHJ6c3otMC4xMi4yMC9zcmMvTWFrZWZpbGUuYW0KKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL3NyYy9NYWtlZmlsZS5hbQkxOTk4LTEyLTI4IDA4OjM4OjQ3LjAwMDAwMDAwMCArMDAwMAorKysrIGxyenN6LTAuMTIuMjAvc3JjL01ha2VmaWxlLmFtCTIwMTktMTEtMjUgMTY6MjI6NDkuMDAwMDAwMDAwICswMDAwCitAQCAtMiwxMyArMiwxMSBAQCBiaW5fUFJPR1JBTVM9bHJ6IGxzegorIGxyel9TT1VSQ0VTPWxyei5jIHRpbWluZy5jIHpwZXJyLmMgenJlYWRsaW5lLmMgY3JjdGFiLmMgcmJzYi5jIHptLmMgcHJvdG5hbWUuYyB0Y3AuYyBsc3lzbG9nLmMgY2FuaXQuYworIGxzel9TT1VSQ0VTPWxzei5jIHRpbWluZy5jIHpwZXJyLmMgenJlYWRsaW5lLmMgY3JjdGFiLmMgcmJzYi5jIHptLmMgcHJvdG5hbWUuYyB0Y3AuYyBsc3lzbG9nLmMgY2FuaXQuYworIG5vaW5zdF9IRUFERVJTID0gdGltaW5nLmggemdsb2JhbC5oIHptb2RlbS5oCistZGF0YWRpciA9ICQocHJlZml4KS9AREFUQURJUk5BTUVACisrZGF0YWRpciA9ICQocHJlZml4KS9zaGFyZQorIGxvY2FsZWRpciA9ICQoZGF0YWRpcikvbG9jYWxlCistQ0ZMQUdTPUBDRkxBR1NACisgRElTVENMRUFOX0ZJTEVTPWxyenN6YnVnCisgCistTERBREQgPSAuLi9saWIvbGliem1vZGVtLmEgQElOVExMSUJTQAorLUFVVE9NQUtFX09QVElPTlM9YW5zaTJrbnIKKytMREFERCA9IC4uL2xpYi9saWJ6bW9kZW0uYSBATElCSU5UTEAKKyBFWFRSQV9ESVNUID0gYW5zaTJrbnIuMSBhbnNpMmtuci5jIGxyenN6YnVnLmluCisgSU5DTFVERVMgPSAtSS4uIC1JJChzcmNkaXIpIC1JJCh0b3Bfc3JjZGlyKS9zcmMgLUkuLi9pbnRsIC1JJCh0b3Bfc3JjZGlyKS9saWIKKyAjREVGUyA9IC1ETE9DQUxFRElSPVwiJChsb2NhbGVkaXIpXCIgLURPUz1cIkBob3N0X29zQFwiIC1EQ1BVPVwiQGhvc3RfY3B1QFwiCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvc3JjL3pnbG9iYWwuaCBscnpzei0wLjEyLjIwL3NyYy96Z2xvYmFsLmgKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL3NyYy96Z2xvYmFsLmgJMTk5OC0xMi0yOSAxMjozNDo1OS4wMDAwMDAwMDAgKzAwMDAKKysrKyBscnpzei0wLjEyLjIwL3NyYy96Z2xvYmFsLmgJMjAxOS0xMS0yNSAxNjozMjo0Mi4wMDAwMDAwMDAgKzAwMDAKK0BAIC0xODAsOSArMTgwLDYgQEAgc3RydWN0IHRlcm1pb3M7CisgI2lmIEhBVkVfTE9DQUxFX0gKKyAjIGluY2x1ZGUgPGxvY2FsZS5oPgorICNlbmRpZgorLSNpZiAhSEFWRV9TRVRMT0NBTEUKKy0jIGRlZmluZSBzZXRsb2NhbGUoQ2F0ZWdvcnksIExvY2FsZSkgLyogZW1wdHkgKi8KKy0jZW5kaWYKKyAKKyAjaWYgRU5BQkxFX05MUworICMgaW5jbHVkZSA8bGliaW50bC5oPgorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL3N0YW1wLWguaW4gbHJ6c3otMC4xMi4yMC9zdGFtcC1oLmluCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9zdGFtcC1oLmluCTE5OTgtMTItMzAgMDc6NTE6MDcuMDAwMDAwMDAwICswMDAwCisrKysgbHJ6c3otMC4xMi4yMC9zdGFtcC1oLmluCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSArMCwwIEBACistdGltZXN0YW1wCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3otMC4xMi4yMC9nZXR0ZXh0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xyenN6L2xyenN6LTAuMTIuMjAvZ2V0dGV4dC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWEyNGExZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3otMC4xMi4yMC9nZXR0ZXh0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjE4ODQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL0FCT1VULU5MUwkxOTk4LTA0LTI2IDA5OjIyOjMwLjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvQUJPVVQtTkxTCTIwMDQtMDktMTIgMTQ6NDA6MzQuMzIzNzUyOTUyIC0wNDAwCi1AQCAtMSwxNCArMSwxNCBAQAotIE5vdGVzIG9uIHRoZSBGcmVlIFRyYW5zbGF0aW9uIFByb2plY3QKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gCi0tICAgRnJlZSBzb2Z0d2FyZSBpcyBnb2luZyBpbnRlcm5hdGlvbmFsISAgVGhlIEZyZWUgVHJhbnNsYXRpb24gUHJvamVjdAotLWlzIGEgd2F5IHRvIGdldCBtYWludGFpbmVycyBvZiBmcmVlIHNvZnR3YXJlLCB0cmFuc2xhdG9ycywgYW5kIHVzZXJzIGFsbAotK0ZyZWUgc29mdHdhcmUgaXMgZ29pbmcgaW50ZXJuYXRpb25hbCEgIFRoZSBGcmVlIFRyYW5zbGF0aW9uIFByb2plY3QgaXMKLSthIHdheSB0byBnZXQgbWFpbnRhaW5lcnMgb2YgZnJlZSBzb2Z0d2FyZSwgdHJhbnNsYXRvcnMsIGFuZCB1c2VycyBhbGwKLSB0b2dldGhlciwgc28gdGhhdCB3aWxsIGdyYWR1YWxseSBiZWNvbWUgYWJsZSB0byBzcGVhayBtYW55IGxhbmd1YWdlcy4KLSBBIGZldyBwYWNrYWdlcyBhbHJlYWR5IHByb3ZpZGUgdHJhbnNsYXRpb25zIGZvciB0aGVpciBtZXNzYWdlcy4KLSAKLSAgICBJZiB5b3UgZm91bmQgdGhpcyBgQUJPVVQtTkxTJyBmaWxlIGluc2lkZSBhIGRpc3RyaWJ1dGlvbiwgeW91IG1heQotIGFzc3VtZSB0aGF0IHRoZSBkaXN0cmlidXRlZCBwYWNrYWdlIGRvZXMgdXNlIEdOVSBgZ2V0dGV4dCcgaW50ZXJuYWxseSwKLS1pdHNlbGYgYXZhaWxhYmxlIGF0IHlvdXIgbmVhcmVzdCBHTlUgYXJjaGl2ZSBzaXRlLiAgQnV0IHlvdSBkbyAqbm90KgotK2l0c2VsZiBhdmFpbGFibGUgYXQgeW91ciBuZWFyZXN0IEdOVSBhcmNoaXZlIHNpdGUuICBCdXQgeW91IGRvIF9ub3RfCi0gbmVlZCB0byBpbnN0YWxsIEdOVSBgZ2V0dGV4dCcgcHJpb3IgdG8gY29uZmlndXJpbmcsIGluc3RhbGxpbmcgb3IgdXNpbmcKLSB0aGlzIHBhY2thZ2Ugd2l0aCBtZXNzYWdlcyB0cmFuc2xhdGVkLgotIAotQEAgLTIyLDEwICsyMiwxMCBAQAotIGBnZXR0ZXh0JyB3aGljaCBpcyB1c2VkLiAgVGhlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUKLSBgaW50bC9WRVJTSU9OJyBmaWxlLCBpbiBpbnRlcm5hdGlvbmFsaXplZCBwYWNrYWdlcy4KLSAKLS1PbmUgYWR2aXNlIGluIGFkdmFuY2UKLS09PT09PT09PT09PT09PT09PT09PT0KLStRdWljayBjb25maWd1cmF0aW9uIGFkdmljZQotKz09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gCi0tICAgSWYgeW91IHdhbnQgdG8gZXhwbG9pdCB0aGUgZnVsbCBwb3dlciBvZiBpbnRlcm5hdGlvbmFsaXphdGlvbiwgeW91Ci0rSWYgeW91IHdhbnQgdG8gZXhwbG9pdCB0aGUgZnVsbCBwb3dlciBvZiBpbnRlcm5hdGlvbmFsaXphdGlvbiwgeW91Ci0gc2hvdWxkIGNvbmZpZ3VyZSBpdCB1c2luZwotIAotICAgICAgLi9jb25maWd1cmUgLS13aXRoLWluY2x1ZGVkLWdldHRleHQKLUBAIC0zNCw0MiArMzQsNDAgQEAKLSBwYWNrYWdlLCBkZXNwaXRlIHRoZSBleGlzdGVuY2Ugb2YgaW50ZXJuYXRpb25hbGl6aW5nIGNhcGFiaWxpdGllcyBpbiB0aGUKLSBvcGVyYXRpbmcgc3lzdGVtIHdoZXJlIHRoaXMgcGFja2FnZSBpcyBiZWluZyBpbnN0YWxsZWQuICBTbyBmYXIsIG9ubHkKLSB0aGUgYGdldHRleHQnIGltcGxlbWVudGF0aW9uIGluIHRoZSBHTlUgQyBsaWJyYXJ5IHZlcnNpb24gMiBwcm92aWRlcyBhcwotLW1hbnkgZmVhdHVyZXMgKHN1Y2ggYXMgbG9jYWxlIGFsaWFzIG9yIG1lc3NhZ2UgaW5oZXJpdGFuY2UpIGFzIHRoZQotLWltcGxlbWVudGF0aW9uIGhlcmUuICBJdCBpcyBhbHNvIG5vdCBwb3NzaWJsZSB0byBvZmZlciB0aGlzIGFkZGl0aW9uYWwKLS1mdW5jdGlvbmFsaXR5IG9uIHRvcCBvZiBhIGBjYXRnZXRzJyBpbXBsZW1lbnRhdGlvbi4gIEZ1dHVyZSB2ZXJzaW9ucyBvZgotLUdOVSBgZ2V0dGV4dCcgd2lsbCB2ZXJ5IGxpa2VseSBjb252ZXkgZXZlbiBtb3JlIGZ1bmN0aW9uYWxpdHkuICBTbyBpdAotLW1pZ2h0IGJlIGEgZ29vZCBpZGVhIHRvIGNoYW5nZSB0byBHTlUgYGdldHRleHQnIGFzIHNvb24gYXMgcG9zc2libGUuCi0rbWFueSBmZWF0dXJlcyAoc3VjaCBhcyBsb2NhbGUgYWxpYXMsIG1lc3NhZ2UgaW5oZXJpdGFuY2UsIGF1dG9tYXRpYwotK2NoYXJzZXQgY29udmVyc2lvbiBvciBwbHVyYWwgZm9ybSBoYW5kbGluZykgYXMgdGhlIGltcGxlbWVudGF0aW9uIGhlcmUuCi0rSXQgaXMgYWxzbyBub3QgcG9zc2libGUgdG8gb2ZmZXIgdGhpcyBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkgb24gdG9wCi0rb2YgYSBgY2F0Z2V0cycgaW1wbGVtZW50YXRpb24uICBGdXR1cmUgdmVyc2lvbnMgb2YgR05VIGBnZXR0ZXh0JyB3aWxsCi0rdmVyeSBsaWtlbHkgY29udmV5IGV2ZW4gbW9yZSBmdW5jdGlvbmFsaXR5LiAgU28gaXQgbWlnaHQgYmUgYSBnb29kIGlkZWEKLSt0byBjaGFuZ2UgdG8gR05VIGBnZXR0ZXh0JyBhcyBzb29uIGFzIHBvc3NpYmxlLgotIAotLSAgIFNvIHlvdSBuZWVkIG5vdCBwcm92aWRlIHRoaXMgb3B0aW9uIGlmIHlvdSBhcmUgdXNpbmcgR05VIGxpYmMgMiBvcgotKyAgIFNvIHlvdSBuZWVkIF9ub3RfIHByb3ZpZGUgdGhpcyBvcHRpb24gaWYgeW91IGFyZSB1c2luZyBHTlUgbGliYyAyIG9yCi0geW91IGhhdmUgaW5zdGFsbGVkIGEgcmVjZW50IGNvcHkgb2YgdGhlIEdOVSBnZXR0ZXh0IHBhY2thZ2Ugd2l0aCB0aGUKLSBpbmNsdWRlZCBgbGliaW50bCcuCi0gCi0gSU5TVEFMTCBNYXR0ZXJzCi0gPT09PT09PT09PT09PT09Ci0gCi0tICAgU29tZSBwYWNrYWdlcyBhcmUgImxvY2FsaXphYmxlIiB3aGVuIHByb3Blcmx5IGluc3RhbGxlZDsgdGhlCi0tcHJvZ3JhbXMgdGhleSBjb250YWluIGNhbiBiZSBtYWRlIHRvIHNwZWFrIHlvdXIgb3duIG5hdGl2ZSBsYW5ndWFnZS4KLS1Nb3N0IHN1Y2ggcGFja2FnZXMgdXNlIEdOVSBgZ2V0dGV4dCcuICBPdGhlciBwYWNrYWdlcyBoYXZlIHRoZWlyIG93bgotLXdheXMgdG8gaW50ZXJuYXRpb25hbGl6YXRpb24sIHByZWRhdGluZyBHTlUgYGdldHRleHQnLgotK1NvbWUgcGFja2FnZXMgYXJlICJsb2NhbGl6YWJsZSIgd2hlbiBwcm9wZXJseSBpbnN0YWxsZWQ7IHRoZSBwcm9ncmFtcwotK3RoZXkgY29udGFpbiBjYW4gYmUgbWFkZSB0byBzcGVhayB5b3VyIG93biBuYXRpdmUgbGFuZ3VhZ2UuICBNb3N0IHN1Y2gKLStwYWNrYWdlcyB1c2UgR05VIGBnZXR0ZXh0Jy4gIE90aGVyIHBhY2thZ2VzIGhhdmUgdGhlaXIgb3duIHdheXMgdG8KLStpbnRlcm5hdGlvbmFsaXphdGlvbiwgcHJlZGF0aW5nIEdOVSBgZ2V0dGV4dCcuCi0gCi0gICAgQnkgZGVmYXVsdCwgdGhpcyBwYWNrYWdlIHdpbGwgYmUgaW5zdGFsbGVkIHRvIGFsbG93IHRyYW5zbGF0aW9uIG9mCi0tbWVzc2FnZXMuICBJdCB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZWN0IHdoZXRoZXIgdGhlIHN5c3RlbSBwcm92aWRlcwotLXVzYWJsZSBgY2F0Z2V0cycgKGlmIHVzaW5nIHRoaXMgaXMgc2VsZWN0ZWQgYnkgdGhlIGluc3RhbGxlcikgb3IKLS1gZ2V0dGV4dCcgZnVuY3Rpb25zLiAgSWYgbmVpdGhlciBpcyBhdmFpbGFibGUsIHRoZSBHTlUgYGdldHRleHQnIG93bgotK21lc3NhZ2VzLiAgSXQgd2lsbCBhdXRvbWF0aWNhbGx5IGRldGVjdCB3aGV0aGVyIHRoZSBzeXN0ZW0gYWxyZWFkeQotK3Byb3ZpZGVzIHRoZSBHTlUgYGdldHRleHQnIGZ1bmN0aW9ucy4gIElmIG5vdCwgdGhlIEdOVSBgZ2V0dGV4dCcgb3duCi0gbGlicmFyeSB3aWxsIGJlIHVzZWQuICBUaGlzIGxpYnJhcnkgaXMgd2hvbGx5IGNvbnRhaW5lZCB3aXRoaW4gdGhpcwotIHBhY2thZ2UsIHVzdWFsbHkgaW4gdGhlIGBpbnRsLycgc3ViZGlyZWN0b3J5LCBzbyBwcmlvciBpbnN0YWxsYXRpb24gb2YKLS10aGUgR05VIGBnZXR0ZXh0JyBwYWNrYWdlIGlzICpub3QqIHJlcXVpcmVkLiAgSW5zdGFsbGVycyBtYXkgdXNlCi0rdGhlIEdOVSBgZ2V0dGV4dCcgcGFja2FnZSBpcyBfbm90XyByZXF1aXJlZC4gIEluc3RhbGxlcnMgbWF5IHVzZQotIHNwZWNpYWwgb3B0aW9ucyBhdCBjb25maWd1cmF0aW9uIHRpbWUgZm9yIGNoYW5naW5nIHRoZSBkZWZhdWx0Ci0gYmVoYXZpb3VyLiAgVGhlIGNvbW1hbmRzOgotIAotICAgICAgLi9jb25maWd1cmUgLS13aXRoLWluY2x1ZGVkLWdldHRleHQKLS0gICAgIC4vY29uZmlndXJlIC0td2l0aC1jYXRnZXRzCi0gICAgICAuL2NvbmZpZ3VyZSAtLWRpc2FibGUtbmxzCi0gCi0td2lsbCByZXNwZWN0aXZlbHkgYnlwYXNzIGFueSBwcmUtZXhpc3RpbmcgYGNhdGdldHMnIG9yIGBnZXR0ZXh0JyB0byB1c2UKLS10aGUgaW50ZXJuYXRpb25hbGl6aW5nIHJvdXRpbmVzIHByb3ZpZGVkIHdpdGhpbiB0aGlzIHBhY2thZ2UsIGVuYWJsZQotLXRoZSB1c2Ugb2YgdGhlIGBjYXRnZXRzJyBmdW5jdGlvbnMgKGlmIGZvdW5kIG9uIHRoZSBsb2NhbGUgc3lzdGVtKSwgb3IKLS1lbHNlLCAqdG90YWxseSogZGlzYWJsZSB0cmFuc2xhdGlvbiBvZiBtZXNzYWdlcy4KLSt3aWxsIHJlc3BlY3RpdmVseSBieXBhc3MgYW55IHByZS1leGlzdGluZyBgZ2V0dGV4dCcgdG8gdXNlIHRoZQotK2ludGVybmF0aW9uYWxpemluZyByb3V0aW5lcyBwcm92aWRlZCB3aXRoaW4gdGhpcyBwYWNrYWdlLCBvciBlbHNlLAotK190b3RhbGx5XyBkaXNhYmxlIHRyYW5zbGF0aW9uIG9mIG1lc3NhZ2VzLgotIAotICAgIFdoZW4geW91IGFscmVhZHkgaGF2ZSBHTlUgYGdldHRleHQnIGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbSBhbmQgcnVuCi0gY29uZmlndXJlIHdpdGhvdXQgYW4gb3B0aW9uIGZvciB5b3VyIG5ldyBwYWNrYWdlLCBgY29uZmlndXJlJyB3aWxsCi1AQCAtODMsMTggKzgxLDEwIEBACi0gCi0gdG8gcHJldmVudCBhdXRvLWRldGVjdGlvbi4KLSAKLS0gICBCeSBkZWZhdWx0IHRoZSBjb25maWd1cmF0aW9uIHByb2Nlc3Mgd2lsbCBub3QgdGVzdCBmb3IgdGhlIGBjYXRnZXRzJwotLWZ1bmN0aW9uIGFuZCB0aGVyZWZvcmUgdGhleSB3aWxsIG5vdCBiZSB1c2VkLiAgVGhlIHJlYXNvbnMgYXJlIGFscmVhZHkKLS1naXZlbiBhYm92ZTogdGhlIGVtdWxhdGlvbiBvbiB0b3Agb2YgYGNhdGdldHMnIGNhbm5vdCBwcm92aWRlIGFsbCB0aGUKLS1leHRlbnNpb25zIHByb3ZpZGVkIGJ5IHRoZSBHTlUgYGdldHRleHQnIGxpYnJhcnkuICBJZiB5b3UgbmV2ZXJ0aGVsZXNzCi0td2FudCB0byB1c2UgdGhlIGBjYXRnZXRzJyBmdW5jdGlvbnMgdXNlCi0tCi0tICAgICAuL2NvbmZpZ3VyZSAtLXdpdGgtY2F0Z2V0cwotLQotLXRvIGVuYWJsZSB0aGUgdGVzdCBmb3IgYGNhdGdldHMnICh0aGlzIGNhdXNlcyBubyBoYXJtIGlmIGBjYXRnZXRzJyBpcwotLW5vdCBhdmFpbGFibGUgb24geW91ciBzeXN0ZW0pLiAgSWYgeW91IHJlYWxseSBzZWxlY3QgdGhpcyBvcHRpb24gd2UKLS13b3VsZCBsaWtlIHRvIGhlYXIgYWJvdXQgdGhlIHJlYXNvbnMgYmVjYXVzZSB3ZSBjYW5ub3QgdGhpbmsgb2YgYW55Ci0tZ29vZCBvbmUgb3Vyc2VsZi4KLSsgICBUaGUgY29uZmlndXJhdGlvbiBwcm9jZXNzIHdpbGwgbm90IHRlc3QgZm9yIHRoZSBgY2F0Z2V0cycgZnVuY3Rpb24KLSthbmQgdGhlcmVmb3JlIGl0IHdpbGwgbm90IGJlIHVzZWQuICBUaGUgcmVhc29uIGlzIHRoYXQgZXZlbiBhbgotK2VtdWxhdGlvbiBvZiBgZ2V0dGV4dCcgb24gdG9wIG9mIGBjYXRnZXRzJyBjb3VsZCBub3QgcHJvdmlkZSBhbGwgdGhlCi0rZXh0ZW5zaW9ucyBvZiB0aGUgR05VIGBnZXR0ZXh0JyBsaWJyYXJ5LgotIAotICAgIEludGVybmF0aW9uYWxpemVkIHBhY2thZ2VzIGhhdmUgdXN1YWxseSBtYW55IGBwby9MTC5wbycgZmlsZXMsIHdoZXJlCi0gTEwgZ2l2ZXMgYW4gSVNPIDYzOSB0d28tbGV0dGVyIGNvZGUgaWRlbnRpZnlpbmcgdGhlIGxhbmd1YWdlLiAgVW5sZXNzCi1AQCAtMTA4LDU3ICs5OCw3MyBAQAotIFVzaW5nIFRoaXMgUGFja2FnZQotID09PT09PT09PT09PT09PT09PQotIAotLSAgIEFzIGEgdXNlciwgaWYgeW91ciBsYW5ndWFnZSBoYXMgYmVlbiBpbnN0YWxsZWQgZm9yIHRoaXMgcGFja2FnZSwgeW91Ci0rQXMgYSB1c2VyLCBpZiB5b3VyIGxhbmd1YWdlIGhhcyBiZWVuIGluc3RhbGxlZCBmb3IgdGhpcyBwYWNrYWdlLCB5b3UKLSBvbmx5IGhhdmUgdG8gc2V0IHRoZSBgTEFORycgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhlIGFwcHJvcHJpYXRlCi0tSVNPIDYzOSBgTEwnIHR3by1sZXR0ZXIgY29kZSBwcmlvciB0byB1c2luZyB0aGUgcHJvZ3JhbXMgaW4gdGhlCi0tcGFja2FnZS4gIEZvciBleGFtcGxlLCBsZXQncyBzdXBwb3NlIHRoYXQgeW91IHNwZWFrIEdlcm1hbi4gIEF0IHRoZQotLXNoZWxsIHByb21wdCwgbWVyZWx5IGV4ZWN1dGUgYHNldGVudiBMQU5HIGRlJyAoaW4gYGNzaCcpLAotLWBleHBvcnQgTEFORzsgTEFORz1kZScgKGluIGBzaCcpIG9yIGBleHBvcnQgTEFORz1kZScgKGluIGBiYXNoJykuICBUaGlzCi0tY2FuIGJlIGRvbmUgZnJvbSB5b3VyIGAubG9naW4nIG9yIGAucHJvZmlsZScgZmlsZSwgb25jZSBhbmQgZm9yIGFsbC4KLStgTExfQ0MnIGNvbWJpbmF0aW9uLiAgSGVyZSBgTEwnIGlzIGFuIElTTyA2MzkgdHdvLWxldHRlciBsYW5ndWFnZSBjb2RlLAotK2FuZCBgQ0MnIGlzIGFuIElTTyAzMTY2IHR3by1sZXR0ZXIgY291bnRyeSBjb2RlLiAgRm9yIGV4YW1wbGUsIGxldCdzCi0rc3VwcG9zZSB0aGF0IHlvdSBzcGVhayBHZXJtYW4gYW5kIGxpdmUgaW4gR2VybWFueS4gIEF0IHRoZSBzaGVsbAotK3Byb21wdCwgbWVyZWx5IGV4ZWN1dGUgYHNldGVudiBMQU5HIGRlX0RFJyAoaW4gYGNzaCcpLAotK2BleHBvcnQgTEFORzsgTEFORz1kZV9ERScgKGluIGBzaCcpIG9yIGBleHBvcnQgTEFORz1kZV9ERScgKGluIGBiYXNoJykuCi0rVGhpcyBjYW4gYmUgZG9uZSBmcm9tIHlvdXIgYC5sb2dpbicgb3IgYC5wcm9maWxlJyBmaWxlLCBvbmNlIGFuZCBmb3IKLSthbGwuCi0gCi0tICAgQW4gb3BlcmF0aW5nIHN5c3RlbSBtaWdodCBhbHJlYWR5IG9mZmVyIG1lc3NhZ2UgbG9jYWxpemF0aW9uIGZvcgotLW1hbnkgb2YgaXRzIHByb2dyYW1zLCB3aGlsZSBvdGhlciBwcm9ncmFtcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGxvY2FsbHkKLS13aXRoIHRoZSBmdWxsIGNhcGFiaWxpdGllcyBvZiBHTlUgYGdldHRleHQnLiAgSnVzdCB1c2luZyBgZ2V0dGV4dCcKLS1leHRlbmRlZCBzeW50YXggZm9yIGBMQU5HJyB3b3VsZCBicmVhayBwcm9wZXIgbG9jYWxpemF0aW9uIG9mIGFscmVhZHkKLS1hdmFpbGFibGUgb3BlcmF0aW5nIHN5c3RlbSBwcm9ncmFtcy4gIEluIHRoaXMgY2FzZSwgdXNlcnMgc2hvdWxkIHNldAotLWJvdGggYExBTkdVQUdFJyBhbmQgYExBTkcnIHZhcmlhYmxlcyBpbiB0aGVpciBlbnZpcm9ubWVudCwgYXMgcHJvZ3JhbXMKLS11c2luZyBHTlUgYGdldHRleHQnIGdpdmUgcHJlZmVyZW5jZSB0byBgTEFOR1VBR0UnLiAgRm9yIGV4YW1wbGUsIHNvbWUKLS1Td2VkaXNoIHVzZXJzIHdvdWxkIHJhdGhlciByZWFkIHRyYW5zbGF0aW9ucyBpbiBHZXJtYW4gdGhhbiBFbmdsaXNoIGZvcgotLXdoZW4gU3dlZGlzaCBpcyBub3QgYXZhaWxhYmxlLiAgVGhpcyBpcyBlYXNpbHkgYWNjb21wbGlzaGVkIGJ5IHNldHRpbmcKLS1gTEFOR1VBR0UnIHRvIGBzdjpkZScgd2hpbGUgbGVhdmluZyBgTEFORycgdG8gYHN2Jy4KLSsgICBZb3UgbWlnaHQgdGhpbmsgdGhhdCB0aGUgY291bnRyeSBjb2RlIHNwZWNpZmljYXRpb24gaXMgcmVkdW5kYW50LgotK0J1dCBpbiBmYWN0LCBzb21lIGxhbmd1YWdlcyBoYXZlIGRpYWxlY3RzIGluIGRpZmZlcmVudCBjb3VudHJpZXMuICBGb3IKLStleGFtcGxlLCBgZGVfQVQnIGlzIHVzZWQgZm9yIEF1c3RyaWEsIGFuZCBgcHRfQlInIGZvciBCcmF6aWwuICBUaGUKLStjb3VudHJ5IGNvZGUgc2VydmVzIHRvIGRpc3Rpbmd1aXNoIHRoZSBkaWFsZWN0cy4KLSsKLSsgICBUaGUgbG9jYWxlIG5hbWluZyBjb252ZW50aW9uIG9mIGBMTF9DQycsIHdpdGggYExMJyBkZW5vdGluZyB0aGUKLStsYW5ndWFnZSBhbmQgYENDJyBkZW5vdGluZyB0aGUgY291bnRyeSwgaXMgdGhlIG9uZSB1c2Ugb24gc3lzdGVtcyBiYXNlZAotK29uIEdOVSBsaWJjLiAgT24gb3RoZXIgc3lzdGVtcywgc29tZSB2YXJpYXRpb25zIG9mIHRoaXMgc2NoZW1lIGFyZQotK3VzZWQsIHN1Y2ggYXMgYExMJyBvciBgTExfQ0MuRU5DT0RJTkcnLiAgWW91IGNhbiBnZXQgdGhlIGxpc3Qgb2YKLStsb2NhbGVzIHN1cHBvcnRlZCBieSB5b3VyIHN5c3RlbSBmb3IgeW91ciBjb3VudHJ5IGJ5IHJ1bm5pbmcgdGhlIGNvbW1hbmQKLStgbG9jYWxlIC1hIHwgZ3JlcCAnXkxMJycuCi0rCi0rICAgTm90IGFsbCBwcm9ncmFtcyBoYXZlIHRyYW5zbGF0aW9ucyBmb3IgYWxsIGxhbmd1YWdlcy4gIEJ5IGRlZmF1bHQsIGFuCi0rRW5nbGlzaCBtZXNzYWdlIGlzIHNob3duIGluIHBsYWNlIG9mIGEgbm9uZXhpc3RlbnQgdHJhbnNsYXRpb24uICBJZiB5b3UKLSt1bmRlcnN0YW5kIG90aGVyIGxhbmd1YWdlcywgeW91IGNhbiBzZXQgdXAgYSBwcmlvcml0eSBsaXN0IG9mIGxhbmd1YWdlcy4KLStUaGlzIGlzIGRvbmUgdGhyb3VnaCBhIGRpZmZlcmVudCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgY2FsbGVkCi0rYExBTkdVQUdFJy4gIEdOVSBgZ2V0dGV4dCcgZ2l2ZXMgcHJlZmVyZW5jZSB0byBgTEFOR1VBR0UnIG92ZXIgYExBTkcnCi0rZm9yIHRoZSBwdXJwb3NlIG9mIG1lc3NhZ2UgaGFuZGxpbmcsIGJ1dCB5b3Ugc3RpbGwgbmVlZCB0byBoYXZlIGBMQU5HJwotK3NldCB0byB0aGUgcHJpbWFyeSBsYW5ndWFnZTsgdGhpcyBpcyByZXF1aXJlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUKLStzeXN0ZW0gbGlicmFyaWVzLiAgRm9yIGV4YW1wbGUsIHNvbWUgU3dlZGlzaCB1c2VycyB3aG8gd291bGQgcmF0aGVyCi0rcmVhZCB0cmFuc2xhdGlvbnMgaW4gR2VybWFuIHRoYW4gRW5nbGlzaCBmb3Igd2hlbiBTd2VkaXNoIGlzIG5vdAotK2F2YWlsYWJsZSwgc2V0IGBMQU5HVUFHRScgdG8gYHN2OmRlJyB3aGlsZSBsZWF2aW5nIGBMQU5HJyB0byBgc3ZfU0UnLgotKwotKyAgIFNwZWNpYWwgYWR2aWNlIGZvciBOb3J3ZWdpYW4gdXNlcnM6IFRoZSBsYW5ndWFnZSBjb2RlIGZvciBOb3J3ZWdpYW4KLStib2ttYSpsIGNoYW5nZWQgZnJvbSBgbm8nIHRvIGBuYicgcmVjZW50bHkgKGluIDIwMDMpLiAgRHVyaW5nIHRoZQotK3RyYW5zaXRpb24gcGVyaW9kLCB3aGlsZSBzb21lIG1lc3NhZ2UgY2F0YWxvZ3MgZm9yIHRoaXMgbGFuZ3VhZ2UgYXJlCi0raW5zdGFsbGVkIHVuZGVyIGBuYicgYW5kIHNvbWUgb2xkZXIgb25lcyB1bmRlciBgbm8nLCBpdCdzIHJlY29tbWVuZGVkCi0rZm9yIE5vcndlZ2lhbiB1c2VycyB0byBzZXQgYExBTkdVQUdFJyB0byBgbmI6bm8nIHNvIHRoYXQgYm90aCBuZXdlciBhbmQKLStvbGRlciB0cmFuc2xhdGlvbnMgYXJlIHVzZWQuCi0rCi0rICAgSW4gdGhlIGBMQU5HVUFHRScgZW52aXJvbm1lbnQgdmFyaWFibGUsIGJ1dCBub3QgaW4gdGhlIGBMQU5HJwotK2Vudmlyb25tZW50IHZhcmlhYmxlLCBgTExfQ0MnIGNvbWJpbmF0aW9ucyBjYW4gYmUgYWJicmV2aWF0ZWQgYXMgYExMJwotK3RvIGRlbm90ZSB0aGUgbGFuZ3VhZ2UncyBtYWluIGRpYWxlY3QuICBGb3IgZXhhbXBsZSwgYGRlJyBpcyBlcXVpdmFsZW50Ci0rdG8gYGRlX0RFJyAoR2VybWFuIGFzIHNwb2tlbiBpbiBHZXJtYW55KSwgYW5kIGBwdCcgdG8gYHB0X1BUJwotKyhQb3J0dWd1ZXNlIGFzIHNwb2tlbiBpbiBQb3J0dWdhbCkgaW4gdGhpcyBjb250ZXh0LgotIAotIFRyYW5zbGF0aW5nIFRlYW1zCi0gPT09PT09PT09PT09PT09PT0KLSAKLS0gICBGb3IgdGhlIEZyZWUgVHJhbnNsYXRpb24gUHJvamVjdCB0byBiZSBhIHN1Y2Nlc3MsIHdlIG5lZWQgaW50ZXJlc3RlZAotK0ZvciB0aGUgRnJlZSBUcmFuc2xhdGlvbiBQcm9qZWN0IHRvIGJlIGEgc3VjY2Vzcywgd2UgbmVlZCBpbnRlcmVzdGVkCi0gcGVvcGxlIHdobyBsaWtlIHRoZWlyIG93biBsYW5ndWFnZSBhbmQgd3JpdGUgaXQgd2VsbCwgYW5kIHdobyBhcmUgYWxzbwotIGFibGUgdG8gc3luZXJnaXplIHdpdGggb3RoZXIgdHJhbnNsYXRvcnMgc3BlYWtpbmcgdGhlIHNhbWUgbGFuZ3VhZ2UuCi0tRWFjaCB0cmFuc2xhdGlvbiB0ZWFtIGhhcyBpdHMgb3duIG1haWxpbmcgbGlzdCwgY291cnRlc3kgb2YgTGludXgKLS1JbnRlcm5hdGlvbmFsLiAgWW91IG1heSByZWFjaCB5b3VyIHRyYW5zbGF0aW9uIHRlYW0gYXQgdGhlIGFkZHJlc3MKLS1gTExAbGkub3JnJywgcmVwbGFjaW5nIExMIGJ5IHRoZSB0d28tbGV0dGVyIElTTyA2MzkgY29kZSBmb3IgeW91cgotLWxhbmd1YWdlLiAgTGFuZ3VhZ2UgY29kZXMgYXJlICpub3QqIHRoZSBzYW1lIGFzIHRoZSBjb3VudHJ5IGNvZGVzIGdpdmVuCi0taW4gSVNPIDMxNjYuICBUaGUgZm9sbG93aW5nIHRyYW5zbGF0aW9uIHRlYW1zIGV4aXN0LCBhcyBvZiBBdWd1c3QgMTk5NzoKLS0KLS0gICAgIENoaW5lc2UgYHpoJywgQ3plY2ggYGNzJywgRGFuaXNoIGBkYScsIER1dGNoIGBubCcsIEVuZ2xpc2ggYGVuJywKLS0gICAgIEVzcGVyYW50byBgZW8nLCBGaW5uaXNoIGBmaScsIEZyZW5jaCBgZnInLCBHZXJtYW4gYGRlJywgSHVuZ2FyaWFuCi0tICAgICBgaHUnLCBJcmlzaCBgZ2EnLCBJdGFsaWFuIGBpdCcsIEluZG9uZXNpYW4gYGlkJywgSmFwYW5lc2UgYGphJywKLS0gICAgIEtvcmVhbiBga28nLCBMYXRpbiBgbGEnLCBOb3J3ZWdpYW4gYG5vJywgUGVyc2lhbiBgZmEnLCBQb2xpc2gKLS0gICAgIGBwbCcsIFBvcnR1Z3Vlc2UgYHB0JywgUnVzc2lhbiBgcnUnLCBTbG92ZW5pYW4gYHNsJywgU3BhbmlzaCBgZXMnLAotLSAgICAgU3dlZGlzaCBgc3YnLCBhbmQgVHVya2lzaCBgdHInLgotLQotLUZvciBleGFtcGxlLCB5b3UgbWF5IHJlYWNoIHRoZSBDaGluZXNlIHRyYW5zbGF0aW9uIHRlYW0gYnkgd3JpdGluZyB0bwotLWB6aEBsaS5vcmcnLgotK0VhY2ggdHJhbnNsYXRpb24gdGVhbSBoYXMgaXRzIG93biBtYWlsaW5nIGxpc3QuICBUaGUgdXAtdG8tZGF0ZSBsaXN0IG9mCi0rdGVhbXMgY2FuIGJlIGZvdW5kIGF0IHRoZSBGcmVlIFRyYW5zbGF0aW9uIFByb2plY3QncyBob21lcGFnZSwKLStgaHR0cDovL3d3dy5pcm8udW1vbnRyZWFsLmNhL2NvbnRyaWIvcG8vSFRNTC8nLCBpbiB0aGUgIk5hdGlvbmFsIHRlYW1zIgotK2FyZWEuCi0gCi0tICAgSWYgeW91J2QgbGlrZSB0byB2b2x1bnRlZXIgdG8gKndvcmsqIGF0IHRyYW5zbGF0aW5nIG1lc3NhZ2VzLCB5b3UKLSsgICBJZiB5b3UnZCBsaWtlIHRvIHZvbHVudGVlciB0byBfd29ya18gYXQgdHJhbnNsYXRpbmcgbWVzc2FnZXMsIHlvdQotIHNob3VsZCBiZWNvbWUgYSBtZW1iZXIgb2YgdGhlIHRyYW5zbGF0aW5nIHRlYW0gZm9yIHlvdXIgb3duIGxhbmd1YWdlLgotLVRoZSBzdWJzY3JpYmluZyBhZGRyZXNzIGlzICpub3QqIHRoZSBzYW1lIGFzIHRoZSBsaXN0IGl0c2VsZiwgaXQgaGFzCi0rVGhlIHN1YnNjcmliaW5nIGFkZHJlc3MgaXMgX25vdF8gdGhlIHNhbWUgYXMgdGhlIGxpc3QgaXRzZWxmLCBpdCBoYXMKLSBgLXJlcXVlc3QnIGFwcGVuZGVkLiAgRm9yIGV4YW1wbGUsIHNwZWFrZXJzIG9mIFN3ZWRpc2ggY2FuIHNlbmQgYQotIG1lc3NhZ2UgdG8gYHN2LXJlcXVlc3RAbGkub3JnJywgaGF2aW5nIHRoaXMgbWVzc2FnZSBib2R5OgotIAotICAgICAgc3Vic2NyaWJlCi0gCi0gICAgS2VlcCBpbiBtaW5kIHRoYXQgdGVhbSBtZW1iZXJzIGFyZSBleHBlY3RlZCB0byBwYXJ0aWNpcGF0ZQotLSphY3RpdmVseSogaW4gdHJhbnNsYXRpb25zLCBvciBhdCBzb2x2aW5nIHRyYW5zbGF0aW9uYWwgZGlmZmljdWx0aWVzLAotK19hY3RpdmVseV8gaW4gdHJhbnNsYXRpb25zLCBvciBhdCBzb2x2aW5nIHRyYW5zbGF0aW9uYWwgZGlmZmljdWx0aWVzLAotIHJhdGhlciB0aGFuIG1lcmVseSBsdXJraW5nIGFyb3VuZC4gIElmIHlvdXIgdGVhbSBkb2VzIG5vdCBleGlzdCB5ZXQgYW5kCi0geW91IHdhbnQgdG8gc3RhcnQgb25lLCBvciBpZiB5b3UgYXJlIHVuc3VyZSBhYm91dCB3aGF0IHRvIGRvIG9yIGhvdyB0bwotIGdldCBzdGFydGVkLCBwbGVhc2Ugd3JpdGUgdG8gYHRyYW5zbGF0aW9uQGlyby51bW9udHJlYWwuY2EnIHRvIHJlYWNoIHRoZQotQEAgLTE3MSw0MyArMTc3LDU1OSBAQAotIEF2YWlsYWJsZSBQYWNrYWdlcwotID09PT09PT09PT09PT09PT09PQotIAotLSAgIExhbmd1YWdlcyBhcmUgbm90IGVxdWFsbHkgc3VwcG9ydGVkIGluIGFsbCBwYWNrYWdlcy4gIFRoZSBmb2xsb3dpbmcKLS1tYXRyaXggc2hvd3MgdGhlIGN1cnJlbnQgc3RhdGUgb2YgaW50ZXJuYXRpb25hbGl6YXRpb24sIGFzIG9mIEF1Z3VzdAotLTE5OTcuICBUaGUgbWF0cml4IHNob3dzLCBpbiByZWdhcmQgb2YgZWFjaCBwYWNrYWdlLCBmb3Igd2hpY2ggbGFuZ3VhZ2VzCi0tUE8gZmlsZXMgaGF2ZSBiZWVuIHN1Ym1pdHRlZCB0byB0cmFuc2xhdGlvbiBjb29yZGluYXRpb24uCi0rTGFuZ3VhZ2VzIGFyZSBub3QgZXF1YWxseSBzdXBwb3J0ZWQgaW4gYWxsIHBhY2thZ2VzLiAgVGhlIGZvbGxvd2luZwotK21hdHJpeCBzaG93cyB0aGUgY3VycmVudCBzdGF0ZSBvZiBpbnRlcm5hdGlvbmFsaXphdGlvbiwgYXMgb2YgSmFudWFyeQotKzIwMDQuICBUaGUgbWF0cml4IHNob3dzLCBpbiByZWdhcmQgb2YgZWFjaCBwYWNrYWdlLCBmb3Igd2hpY2ggbGFuZ3VhZ2VzCi0rUE8gZmlsZXMgaGF2ZSBiZWVuIHN1Ym1pdHRlZCB0byB0cmFuc2xhdGlvbiBjb29yZGluYXRpb24sIHdpdGggYQotK3RyYW5zbGF0aW9uIHBlcmNlbnRhZ2Ugb2YgYXQgbGVhc3QgNTAlLgotIAotLSAgICAgUmVhZHkgUE8gZmlsZXMgICAgY3MgZGEgZGUgZW4gZXMgZmkgZnIgaXQgamEga28gbmwgbm8gcGwgcHQgc2wgc3YKLS0gICAgICAgICAgICAgICAgICAgICAuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KLS0gICAgIGJhc2ggICAgICAgICAgICB8ICAgICAgIFtdICAgICAgICAgIFtdICAgICAgICAgIFtdICAgICAgICAgICAgICAgIHwgIDMKLS0gICAgIGJpc29uICAgICAgICAgICB8ICAgICAgIFtdICAgICAgICAgIFtdICAgICAgICAgIFtdICAgICAgICAgICAgICAgIHwgIDMKLS0gICAgIGNsaXNwICAgICAgICAgICB8ICAgICAgIFtdIFtdIFtdICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQKLS0gICAgIGNwaW8gICAgICAgICAgICB8ICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgICAgIFtdICAgIFtdICAgICAgICAgIHwgIDUKLS0gICAgIGRpZmZ1dGlscyAgICAgICB8ICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgICAgICAgICAgIFtdICAgICAgIFtdIHwgIDUKLS0gICAgIGVuc2NyaXB0ICAgICAgICB8ICAgICAgIFtdICAgIFtdIFtdIFtdICAgICAgICAgIFtdICAgICAgICAgIFtdICAgIHwgIDYKLS0gICAgIGZpbGV1dGlscyAgICAgICB8IFtdICAgIFtdICAgIFtdICAgIFtdICAgICAgIFtdIFtdICAgIFtdIFtdIFtdIFtdIHwgMTAKLS0gICAgIGZpbmR1dGlscyAgICAgICB8ICAgICAgIFtdICAgIFtdICAgIFtdIFtdICAgIFtdIFtdICAgIFtdICAgICAgIFtdIHwgIDgKLS0gICAgIGZsZXggICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgIFtdIHwgIDQKLS0gICAgIGdjYWwgICAgICAgICAgICB8ICAgICAgIFtdICAgICAgICAgIFtdICAgICAgICAgIFtdICAgIFtdICAgICAgIFtdIHwgIDUKLS0gICAgIGdldHRleHQgICAgICAgICB8ICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgIFtdIFtdIFtdIFtdIFtdIFtdIFtdIHwgMTEKLS0gICAgIGdyZXAgICAgICAgICAgICB8ICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgIFtdIFtdIFtdIFtdICAgIFtdIFtdIHwgIDkKLS0gICAgIGhlbGxvICAgICAgICAgICB8ICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgIFtdIFtdIFtdIFtdIFtdIFtdIFtdIHwgMTAKLS0gICAgIGlkLXV0aWxzICAgICAgICB8ICAgICAgIFtdICAgICAgICAgIFtdICAgICAgICAgICAgICAgIFtdICAgICAgICAgIHwgIDMKLS0gICAgIGluZGVudCAgICAgICAgICB8ICAgIFtdIFtdICAgICAgICAgICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgIHwgIDQKLS0gICAgIGxpYmMgICAgICAgICAgICB8ICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgIFtdIFtdICAgIFtdICAgICAgIFtdIHwgIDcKLS0gICAgIG00ICAgICAgICAgICAgICB8ICAgICAgIFtdICAgICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgICAgICAgIFtdIHwgIDUKLS0gICAgIG1ha2UgICAgICAgICAgICB8ICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgIFtdIFtdICAgIFtdICAgICAgICAgIHwgIDYKLS0gICAgIG11c2ljICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgIFtdICAgICAgICAgIHwgIDIKLS0gICAgIHB0eCAgICAgICAgICAgICB8ICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgICAgIFtdIFtdIFtdIFtdICAgIFtdIHwgIDgKLS0gICAgIHJlY29kZSAgICAgICAgICB8ICAgIFtdIFtdICAgIFtdICAgIFtdICAgICAgICAgIFtdICAgIFtdIFtdIFtdIFtdIHwgIDkKLS0gICAgIHNoLXV0aWxzICAgICAgICB8ICAgICAgIFtdICAgICAgICAgIFtdICAgICAgICAgIFtdIFtdIFtdIFtdICAgIFtdIHwgIDcKLS0gICAgIHNoYXJ1dGlscyAgICAgICB8ICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgICAgIFtdICAgICAgICAgICAgIFtdIHwgIDUKLS0gICAgIHRhciAgICAgICAgICAgICB8ICAgICAgIFtdICAgICAgICAgIFtdIFtdICAgIFtdIFtdIFtdIFtdIFtdIFtdIFtdIHwgMTAKLS0gICAgIHRleGluZm8gICAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEKLS0gICAgIHRleHR1dGlscyAgICAgICB8IFtdICAgIFtdICAgIFtdICAgIFtdICAgICAgIFtdIFtdIFtdIFtdICAgICAgIFtdIHwgIDkKLS0gICAgIHdkaWZmICAgICAgICAgICB8IFtdICAgIFtdICAgIFtdICAgIFtdICAgICAgICAgIFtdIFtdIFtdICAgICAgIFtdIHwgIDgKLS0gICAgICAgICAgICAgICAgICAgICBgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScKLS0gICAgICAgMTYgbGFuZ3VhZ2VzICAgIGNzIGRhIGRlIGVuIGVzIGZpIGZyIGl0IGphIGtvIG5sIG5vIHBsIHB0IHNsIHN2Ci0tICAgICAgIDI3IHBhY2thZ2VzICAgICAgMyAgMiAyNCAgMSAxNyAgMSAyNiAgMiAgMSAxMSAyMCAgOSAxOSAgNyAgNyAxNyAgMTY3Ci0rICAgICBSZWFkeSBQTyBmaWxlcyAgICAgICBhZiBhbSBhciBheiBiZSBiZyBicyBjYSBjcyBkYSBkZSBlbCBlbiBlbl9HQiBlbyBlcwotKyAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotKyAgICAgYTJwcyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgW10gW10gW10gICAgICAgICAgICAgICAgfAotKyAgICAgYWVnaXMgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgfAotKyAgICAgYW50LXBob25lICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgfAotKyAgICAgYW51YmlzICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgYXAtdXRpbHMgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgYXNwZWxsICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgYmFzaCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgW10gW10gfAotKyAgICAgYmF0Y2hlbG9yICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgYmZkICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgYmludXRpbHMgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgYmlzb24gICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgYmx1ZXotcGluICAgICAgICAgIHwgW10gICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgY2xpc3AgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgY2xpc3AgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgW10gfAotKyAgICAgY29uc29sZS10b29scyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgY29yZXV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgY3BpbyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZGFya3N0YXQgICAgICAgICAgIHwgICAgICAgICAgICAgICAgW10gICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgZGlmZnV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gW10gW10gICAgICAgICAgW10gW10gfAotKyAgICAgZTJmc3Byb2dzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZW5zY3JpcHQgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgIFtdICAgICAgICAgfAotKyAgICAgZXJyb3IgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgIFtdICAgICAgW10gfAotKyAgICAgZmV0Y2htYWlsICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gKCkgW10gW10gW10gICAgICAgICAgICAgW10gfAotKyAgICAgZmlsZXV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZmluZHV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgW10gICAgW10gW10gW10gICAgICAgICAgW10gW10gfAotKyAgICAgZmxleCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZnNsaW50ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ2FzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ2F3ayAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ2JpZmYgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ2NhbCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ2NjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ2V0dGV4dCAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ2V0dGV4dC1leGFtcGxlcyAgIHwgW10gICAgICAgICAgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ2V0dGV4dC1ydW50aW1lICAgIHwgICAgICAgICAgICAgW10gICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ2V0dGV4dC10b29scyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ2ltcC1wcmludCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gICAgICAgIFtdICAgICAgW10gfAotKyAgICAgZ2xpdiAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ2x1bmFyY2xvY2sgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ251YmlmZiAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ251Y2FzaCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgKCkgICAgICAgIFtdICAgICAgW10gfAotKyAgICAgZ251Y2FzaC1nbG9zc2FyeSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gKCkgICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ251cGcgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gKCkgICAgW10gW10gICAgICAgICAgW10gW10gfAotKyAgICAgZ3BlLWFlcmlhbCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWJlYW0gICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWNhbGVuZGFyICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWNsb2NrICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWNvbmYgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWNvbnRhY3RzICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWVkaXQgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWdvICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWxvZ2luICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLW93bmVyaW5mbyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLXNrZXRjaGJvb2sgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLXN1ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLXRhc2ttYW5hZ2VyICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLXRpbWVzaGVldCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLXRvZGF5ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLXRvZG8gICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3Bob3RvMiAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ3Byb2YgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ3BzZHJpdmUgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgKCkgICAgICAgICAgKCkgfAotKyAgICAgZ3JhbWFkb2lyICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3JlcCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gW10gICAgW10gICAgICAgW10gW10gICAgICAgICAgICAgW10gfAotKyAgICAgZ3JldGwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgZ3RpY2sgICAgICAgICAgICAgIHwgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgfAotKyAgICAgaGVsbG8gICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gW10gICAgICAgICAgW10gW10gfAotKyAgICAgaWQtdXRpbHMgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgaW5kZW50ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgW10gW10gfAotKyAgICAgaXNvXzMxNjYgICAgICAgICAgIHwgICAgICAgICAgW10gICAgW10gW10gW10gW10gW10gW10gW10gICAgICAgICAgW10gW10gfAotKyAgICAgaXNvXzMxNjZfMSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gW10gW10gICAgICAgICAgICAgW10gfAotKyAgICAgaXNvXzMxNjZfMiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgaXNvXzMxNjZfMyAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgaXNvXzQyMTcgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgaXNvXzYzOSAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAganBpbG90ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAganRhZyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgandob2lzICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAga2JkICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gW10gICAgICAgICAgICAgW10gfAotKyAgICAgbGF0cmluZSAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgfAotKyAgICAgbGQgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgbGliYyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gW10gW10gICAgICAgICAgICAgW10gfAotKyAgICAgbGliZ3Bld2lkZ2V0ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgbGliaWNvbnYgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgW10gW10gfAotKyAgICAgbGlmZWxpbmVzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gKCkgICAgICAgICAgICAgICAgICAgfAotKyAgICAgbGlseXBvbmQgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgbGluZ290ZWFjaCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgbGluZ290ZWFjaF9sZXNzb25zIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgKCkgfAotKyAgICAgbHlueCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgbTQgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gW10gICAgICAgICAgICAgICAgfAotKyAgICAgbWFpbHV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgbWFrZSAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgbWFuLWRiICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gKCkgW10gW10gICAgICAgICAgICAgICAgKCkgfAotKyAgICAgbWluaWNvbSAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgbXlzZWNyZXRkaWFyeSAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgbmFubyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gKCkgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgbmFub18xXzAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gKCkgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgb3Bjb2RlcyAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgcGFydGVkICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgcHR4ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgW10gW10gfAotKyAgICAgcHl0aG9uICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgcmFkaXVzICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgcmVjb2RlICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgW10gICAgW10gW10gW10gICAgICAgICAgW10gW10gfAotKyAgICAgcnBtICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgc2NyZWVtICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgc2Nyb2xsa2VlcGVyICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgW10gW10gW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgc2VkICAgICAgICAgICAgICAgIHwgW10gICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgW10gW10gfAotKyAgICAgc2gtdXRpbHMgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgc2hhcmVkLW1pbWUtaW5mbyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgc2hhcnV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gW10gW10gICAgICAgICAgICAgW10gfAotKyAgICAgc2lsa3kgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgfAotKyAgICAgc2tlbmNpbCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gKCkgICAgICAgICAgICAgICAgW10gfAotKyAgICAgc2tldGNoICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gKCkgICAgICAgICAgICAgICAgW10gfAotKyAgICAgc291bmR0cmFja2VyICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgc3AgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgdGFyICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgdGV4aW5mbyAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgW10gICAgfAotKyAgICAgdGV4dHV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgdGluICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICgpICAgICAgICAgfAotKyAgICAgdHAtcm9ib3QgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgdHV4cGFpbnQgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gW10gW10gICAgIFtdICAgICAgW10gfAotKyAgICAgdW5pY29kZS1oYW4tdHJhLi4uIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgdW5pY29kZS10cmFuc2xhLi4uIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgdXRpbC1saW51eCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gW10gW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgdm9yYmlzLXRvb2xzICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgd2FzdGVzZWRnZSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgfAotKyAgICAgd2RpZmYgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgICAgW10gfAotKyAgICAgd2dldCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgW10gICAgW10gICAgW10gW10gW10gICAgICAgICAgICAgW10gfAotKyAgICAgeGNoYXQgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgW10gW10gICAgICAgICAgICAgW10gfAotKyAgICAgeGZyZWU4Nl94a2JfeG1sICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgeHBhZCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWYgYW0gYXIgYXogYmUgYmcgYnMgY2EgY3MgZGEgZGUgZWwgZW4gZW5fR0IgZW8gZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICA0ICAwICAwICAxICA5ICA0ICAxIDQwIDQxIDYwIDc4IDE3ICAxICAgNSAgIDEzIDY4Ci0rICAgICAKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGV0IGV1IGZhIGZpIGZyIGdhIGdsIGhlIGhyIGh1IGlkIGlzIGl0IGphIGtvIGxnCi0rICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0rICAgICBhMnBzICAgICAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAoKSAgICAoKSAgICB8Ci0rICAgICBhZWdpcyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBhbnQtcGhvbmUgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBhbnViaXMgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBhcC11dGlscyAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBhc3BlbGwgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBiYXNoICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBiYXRjaGVsb3IgICAgICAgICAgfCAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBiZmQgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBiaW51dGlscyAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICBiaXNvbiAgICAgICAgICAgICAgfCBbXSAgICAgICAgICBbXSAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICB8Ci0rICAgICBibHVlei1waW4gICAgICAgICAgfCAgICAgICAgICBbXSBbXSBbXSAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBjbGlzcCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBjbGlzcCAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBjb25zb2xlLXRvb2xzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBjb3JldXRpbHMgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSBbXSAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICB8Ci0rICAgICBjcGlvICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICBbXSAgICAgICBbXSAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICBkYXJrc3RhdCAgICAgICAgICAgfCAgICAgICAgICAgICAoKSBbXSAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBkaWZmdXRpbHMgICAgICAgICAgfCAgICAgICAgICBbXSBbXSAgICBbXSBbXSAgICBbXSBbXSAgICAgICBbXSAgICAgICB8Ci0rICAgICBlMmZzcHJvZ3MgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBlbnNjcmlwdCAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBlcnJvciAgICAgICAgICAgICAgfCAgICAgICAgICBbXSBbXSBbXSAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBmZXRjaG1haWwgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICBmaWxldXRpbHMgICAgICAgICAgfCBbXSAgICAgICAgICBbXSBbXSAgICAgICAgICBbXSAgICAgICBbXSBbXSAgICAgICB8Ci0rICAgICBmaW5kdXRpbHMgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSBbXSBbXSAgICBbXSBbXSBbXSAgICBbXSBbXSBbXSAgICB8Ci0rICAgICBmbGV4ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICBmc2xpbnQgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnYXdrICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICBnYmlmZiAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnY2FsICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnY2MgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnZXR0ZXh0ICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICB8Ci0rICAgICBnZXR0ZXh0LWV4YW1wbGVzICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICBnZXR0ZXh0LXJ1bnRpbWUgICAgfCAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSAgICB8Ci0rICAgICBnZXR0ZXh0LXRvb2xzICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICB8Ci0rICAgICBnaW1wLXByaW50ICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICBnbGl2ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnbHVuYXJjbG9jayAgICAgICAgfCAgICAgICAgICBbXSAgICBbXSBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnbnViaWZmICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnbnVjYXNoICAgICAgICAgICAgfCAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICB8Ci0rICAgICBnbnVjYXNoLWdsb3NzYXJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICB8Ci0rICAgICBnbnVwZyAgICAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSAgICBbXSAgICAgICAgICBbXSAgICBbXSBbXSAgICAgICB8Ci0rICAgICBncGUtYWVyaWFsICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtYmVhbSAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtY2FsZW5kYXIgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtY2xvY2sgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtY29uZiAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtY29udGFjdHMgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtZWRpdCAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtZ28gICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtbG9naW4gICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtb3duZXJpbmZvICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtc2tldGNoYm9vayAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtc3UgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtdGFza21hbmFnZXIgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtdGltZXNoZWV0ICAgICAgfCAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtdG9kYXkgICAgICAgICAgfCAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncGUtdG9kbyAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBncGhvdG8yICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICBncHJvZiAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBncHNkcml2ZSAgICAgICAgICAgfCAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICAgICAoKSAoKSAgICAgICB8Ci0rICAgICBncmFtYWRvaXIgICAgICAgICAgfCAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBncmVwICAgICAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSBbXSBbXSBbXSBbXSBbXSBbXSAgICBbXSBbXSAgICAgICB8Ci0rICAgICBncmV0bCAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICB8Ci0rICAgICBndGljayAgICAgICAgICAgICAgfCAgICAgICAgICBbXSBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBoZWxsbyAgICAgICAgICAgICAgfCBbXSAgICBbXSBbXSBbXSBbXSBbXSBbXSBbXSBbXSBbXSAgICBbXSBbXSBbXSAgICB8Ci0rICAgICBpZC11dGlscyAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSBbXSAgICBbXSAgICAgICAgICB8Ci0rICAgICBpbmRlbnQgICAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSBbXSBbXSAgICAgICBbXSBbXSAgICBbXSBbXSAgICAgICB8Ci0rICAgICBpc29fMzE2NiAgICAgICAgICAgfCAgICBbXSAgICAgICBbXSBbXSAgICAgICBbXSBbXSBbXSAgICBbXSAgICAgICAgICB8Ci0rICAgICBpc29fMzE2Nl8xICAgICAgICAgfCAgICBbXSAgICAgICBbXSBbXSAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBpc29fMzE2Nl8yICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBpc29fMzE2Nl8zICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBpc29fNDIxNyAgICAgICAgICAgfCBbXSAgICAgICAgICBbXSAgICBbXSAgICAgICBbXSAgICAgICBbXSBbXSAgICAgICB8Ci0rICAgICBpc29fNjM5ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBqcGlsb3QgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAoKSAgICAgICB8Ci0rICAgICBqdGFnICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBqd2hvaXMgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSBbXSAgICBbXSAgICAgICAgICB8Ci0rICAgICBrYmQgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBsYXRyaW5lICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBsZCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBsaWJjICAgICAgICAgICAgICAgfCAgICAgICAgICBbXSBbXSAgICBbXSAgICAgICBbXSAgICAgICAgICBbXSBbXSAgICB8Ci0rICAgICBsaWJncGV3aWRnZXQgICAgICAgfCAgICAgICAgICAgICBbXSBbXSAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBsaWJpY29udiAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSBbXSBbXSAgICBbXSBbXSBbXSAgICBbXSAgICAgICAgICB8Ci0rICAgICBsaWZlbGluZXMgICAgICAgICAgfCAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBsaWx5cG9uZCAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBsaW5nb3RlYWNoICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBsaW5nb3RlYWNoX2xlc3NvbnMgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBseW54ICAgICAgICAgICAgICAgfCBbXSAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSAgICAgICB8Ci0rICAgICBtNCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICBbXSAgICAgICBbXSAgICAgICB8Ci0rICAgICBtYWlsdXRpbHMgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBtYWtlICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICBbXSBbXSBbXSAgICAgICAgICAgICBbXSBbXSAgICB8Ci0rICAgICBtYW4tZGIgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSAoKSAgICAgICB8Ci0rICAgICBtaW5pY29tICAgICAgICAgICAgfCAgICAgICAgICBbXSBbXSAgICAgICAgICAgICBbXSAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICBteXNlY3JldGRpYXJ5ICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBuYW5vICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICBbXSAgICBbXSAgICAgICAgICB8Ci0rICAgICBuYW5vXzFfMCAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICBbXSAgICBbXSAgICAgICAgICB8Ci0rICAgICBvcGNvZGVzICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBwYXJ0ZWQgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICBwdHggICAgICAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSBbXSBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICBweXRob24gICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICByYWRpdXMgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICByZWNvZGUgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICBbXSBbXSAgICBbXSBbXSAgICBbXSAgICAgICAgICB8Ci0rICAgICBycG0gICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICBzY3JlZW0gICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBzY3JvbGxrZWVwZXIgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBzZWQgICAgICAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSBbXSBbXSAgICAgICBbXSBbXSAgICBbXSBbXSAgICAgICB8Ci0rICAgICBzaC11dGlscyAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSBbXSAgICAgICAgICBbXSAgICAgICBbXSBbXSAgICAgICB8Ci0rICAgICBzaGFyZWQtbWltZS1pbmZvICAgfCAgICAgICAgICBbXSBbXSAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBzaGFydXRpbHMgICAgICAgICAgfCBbXSAgICAgICAgICBbXSAgICBbXSAgICAgICBbXSAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICBzaWxreSAgICAgICAgICAgICAgfCAgICAgICAgICAoKSBbXSAgICAgICAgICAgICAoKSAgICAgICAoKSAgICAgICAgICB8Ci0rICAgICBza2VuY2lsICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBza2V0Y2ggICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBzb3VuZHRyYWNrZXIgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICB8Ci0rICAgICBzcCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAoKSAgICAgICB8Ci0rICAgICB0YXIgICAgICAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSAgICBbXSAgICBbXSBbXSBbXSAgICBbXSBbXSAgICAgICB8Ci0rICAgICB0ZXhpbmZvICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICB0ZXh0dXRpbHMgICAgICAgICAgfCAgICAgICAgICAgICBbXSBbXSBbXSAgICAgICBbXSAgICAgICAgICBbXSBbXSAgICB8Ci0rICAgICB0aW4gICAgICAgICAgICAgICAgfCBbXSAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB0cC1yb2JvdCAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB0dXhwYWludCAgICAgICAgICAgfCAgICAgICAgICBbXSBbXSAgICAgICBbXSAgICBbXSBbXSBbXSBbXSBbXSBbXSAgICB8Ci0rICAgICB1bmljb2RlLWhhbi10cmEuLi4gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB1bmljb2RlLXRyYW5zbGEuLi4gfCAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB1dGlsLWxpbnV4ICAgICAgICAgfCBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICBbXSAgICAgICAoKSBbXSAgICAgICB8Ci0rICAgICB2b3JiaXMtdG9vbHMgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB3YXN0ZXNlZGdlICAgICAgICAgfCAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB3ZGlmZiAgICAgICAgICAgICAgfCBbXSAgICAgICAgICBbXSBbXSBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8Ci0rICAgICB3Z2V0ICAgICAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSAgICBbXSAgICBbXSBbXSAgICAgICAgICBbXSAgICAgICB8Ci0rICAgICB4Y2hhdCAgICAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB4ZnJlZTg2X3hrYl94bWwgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB4cGFkICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBldCBldSBmYSBmaSBmciBnYSBnbCBoZSBociBodSBpZCBpcyBpdCBqYSBrbyBsZwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgMjIgIDIgIDEgMjYgMTA2IDI4IDI0ICA4IDEwIDQxIDMzICAxIDI2IDMzIDEyICAwCi0rICAgICAKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGx0IGx2IG1rIG1uIG1zIG10IG5iIG5sIG5uIG5vIG5zbyBwbCBwdCBwdF9CUiBybyBydQotKyAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSsgICAgIGEycHMgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgIFtdICAgICgpICAgICAoKSAgICAgW10gICBbXSBbXSB8Ci0rICAgICBhZWdpcyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICAgICAgKCkgKCkgfAotKyAgICAgYW50LXBob25lICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIGFudWJpcyAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgIFtdIFtdICAgICAgICAgICBbXSAgICAgICAgICBbXSBbXSB8Ci0rICAgICBhcC11dGlscyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgKCkgICAgICAgICAgW10gICAgfAotKyAgICAgYXNwZWxsICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGJhc2ggICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICBbXSBbXSB8Ci0rICAgICBiYXRjaGVsb3IgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgYmZkICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIGJpbnV0aWxzICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBiaXNvbiAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgW10gW10gfAotKyAgICAgYmx1ZXotcGluICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICAgICAgIFtdICAgIHwKLSsgICAgIGNsaXNwICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBjbGlzcCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgY29uc29sZS10b29scyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGNvcmV1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSB8Ci0rICAgICBjcGlvICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgIFtdICAgW10gW10gfAotKyAgICAgZGFya3N0YXQgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgIFtdICAgIHwKLSsgICAgIGRpZmZ1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICBbXSAgICAgW10gICBbXSBbXSB8Ci0rICAgICBlMmZzcHJvZ3MgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgfAotKyAgICAgZW5zY3JpcHQgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgIFtdIFtdIHwKLSsgICAgIGVycm9yICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICBbXSAgICB8Ci0rICAgICBmZXRjaG1haWwgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgICgpICAgICAgW10gfAotKyAgICAgZmlsZXV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgIFtdIFtdIHwKLSsgICAgIGZpbmR1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICBbXSAgICAgW10gICBbXSBbXSB8Ci0rICAgICBmbGV4ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgIFtdICAgW10gW10gfAotKyAgICAgZnNsaW50ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIGdhcyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnYXdrICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgIFtdICAgW10gICAgfAotKyAgICAgZ2JpZmYgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIGdjYWwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnY2MgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ2V0dGV4dCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgIFtdIFtdIHwKLSsgICAgIGdldHRleHQtZXhhbXBsZXMgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICBbXSAgICAgICAgICBbXSAgICB8Ci0rICAgICBnZXR0ZXh0LXJ1bnRpbWUgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgICAgICAgW10gW10gfAotKyAgICAgZ2V0dGV4dC10b29scyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgIFtdICAgIHwKLSsgICAgIGdpbXAtcHJpbnQgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnbGl2ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgW10gICAgfAotKyAgICAgZ2x1bmFyY2xvY2sgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgIFtdIFtdIHwKLSsgICAgIGdudWJpZmYgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBnbnVjYXNoICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICgpICAgICAgW10gfAotKyAgICAgZ251Y2FzaC1nbG9zc2FyeSAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgICAgICAgIHwKLSsgICAgIGdudXBnICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICBncGUtYWVyaWFsICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gW10gfAotKyAgICAgZ3BlLWJlYW0gICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdIHwKLSsgICAgIGdwZS1jYWxlbmRhciAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSB8Ci0rICAgICBncGUtY2xvY2sgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gW10gfAotKyAgICAgZ3BlLWNvbmYgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdIHwKLSsgICAgIGdwZS1jb250YWN0cyAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSB8Ci0rICAgICBncGUtZWRpdCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gW10gfAotKyAgICAgZ3BlLWdvICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgIFtdIFtdIHwKLSsgICAgIGdwZS1sb2dpbiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSB8Ci0rICAgICBncGUtb3duZXJpbmZvICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gW10gfAotKyAgICAgZ3BlLXNrZXRjaGJvb2sgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdIHwKLSsgICAgIGdwZS1zdSAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSB8Ci0rICAgICBncGUtdGFza21hbmFnZXIgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gW10gfAotKyAgICAgZ3BlLXRpbWVzaGVldCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdIHwKLSsgICAgIGdwZS10b2RheSAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSB8Ci0rICAgICBncGUtdG9kbyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gW10gfAotKyAgICAgZ3Bob3RvMiAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIGdwcm9mICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICBbXSAgICB8Ci0rICAgICBncHNkcml2ZSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAoKSAgICAoKSAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgZ3JhbWFkb2lyICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIGdyZXAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgW10gICBbXSBbXSB8Ci0rICAgICBncmV0bCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3RpY2sgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgIFtdIFtdIHwKLSsgICAgIGhlbGxvICAgICAgICAgICAgICB8ICAgIFtdICAgICAgIFtdICAgIFtdIFtdIFtdIFtdICAgICBbXSAgICAgW10gICBbXSBbXSB8Ci0rICAgICBpZC11dGlscyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgW10gW10gfAotKyAgICAgaW5kZW50ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgIFtdIFtdIHwKLSsgICAgIGlzb18zMTY2ICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBpc29fMzE2Nl8xICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgaXNvXzMxNjZfMiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGlzb18zMTY2XzMgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBpc29fNDIxNyAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICAgICBbXSBbXSBbXSAgICAgW10gW10gIFtdICAgICAgW10gfAotKyAgICAgaXNvXzYzOSAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGpwaWxvdCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICgpICAgICgpICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBqdGFnICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgandob2lzICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICBbXSAgIFtdICgpIHwKLSsgICAgIGtiZCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICBbXSAgICAgICAgICBbXSAgICB8Ci0rICAgICBsYXRyaW5lICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgbGQgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGxpYmMgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdICAgICAgIFtdICAgICBbXSAgICAgW10gICAgICAgICB8Ci0rICAgICBsaWJncGV3aWRnZXQgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gICAgfAotKyAgICAgbGliaWNvbnYgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICBbXSAgIFtdIFtdIHwKLSsgICAgIGxpZmVsaW5lcyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBsaWx5cG9uZCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgbGluZ290ZWFjaCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGxpbmdvdGVhY2hfbGVzc29ucyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBseW54ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgICAgW10gfAotKyAgICAgbTQgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICBbXSAgIFtdIFtdIHwKLSsgICAgIG1haWx1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICBbXSBbXSB8Ci0rICAgICBtYWtlICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgIFtdICAgICAgW10gfAotKyAgICAgbWFuLWRiICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIG1pbmljb20gICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgW10gICBbXSBbXSB8Ci0rICAgICBteXNlY3JldGRpYXJ5ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgW10gICAgfAotKyAgICAgbmFubyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgIFtdICAgICAgICAgIFtdIFtdIHwKLSsgICAgIG5hbm9fMV8wICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgIFtdICAgIFtdICAgICAgICBbXSAgICAgICAgICBbXSBbXSB8Ci0rICAgICBvcGNvZGVzICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgcGFydGVkICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgIFtdIFtdICBbXSAgICAgICAgIHwKLSsgICAgIHB0eCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdIFtdICAgIFtdICAgICBbXSBbXSAgW10gICBbXSBbXSB8Ci0rICAgICBweXRob24gICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgcmFkaXVzICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgIFtdIHwKLSsgICAgIHJlY29kZSAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgW10gICBbXSBbXSB8Ci0rICAgICBycG0gICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgW10gfAotKyAgICAgc2NyZWVtICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHNjcm9sbGtlZXBlciAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICBbXSAgICAgICAgICBbXSBbXSB8Ci0rICAgICBzZWQgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgIFtdICAgW10gICAgfAotKyAgICAgc2gtdXRpbHMgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIHNoYXJlZC1taW1lLWluZm8gICB8ICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBzaGFydXRpbHMgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgc2lsa3kgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpIHwKLSsgICAgIHNrZW5jaWwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgW10gICAgICAgICB8Ci0rICAgICBza2V0Y2ggICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gIFtdICAgICAgICAgfAotKyAgICAgc291bmR0cmFja2VyICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHNwICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB0YXIgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICBbXSAgICAgICBbXSAgICAgW10gICAgIFtdICAgW10gICAgfAotKyAgICAgdGV4aW5mbyAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgICAgIFtdIFtdIHwKLSsgICAgIHRleHR1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICB0aW4gICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgdHAtcm9ib3QgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHR1eHBhaW50ICAgICAgICAgICB8IFtdICAgICAgICAgIFtdICAgICAgIFtdIFtdICAgICAgICBbXSBbXSAgW10gICBbXSAgICB8Ci0rICAgICB1bmljb2RlLWhhbi10cmEuLi4gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgdW5pY29kZS10cmFuc2xhLi4uIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHV0aWwtbGludXggICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICAgICBbXSB8Ci0rICAgICB2b3JiaXMtdG9vbHMgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgW10gW10gfAotKyAgICAgd2FzdGVzZWRnZSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHdkaWZmICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICBbXSAgICAgW10gICBbXSBbXSB8Ci0rICAgICB3Z2V0ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgW10gW10gfAotKyAgICAgeGNoYXQgICAgICAgICAgICAgIHwgICAgW10gICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIHhmcmVlODZfeGtiX3htbCAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICB4cGFkICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGx0IGx2IG1rIG1uIG1zIG10IG5iIG5sIG5uIG5vIG5zbyBwbCBwdCBwdF9CUiBybyBydQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgIDIgIDAgIDMgMTIgIDAgMTAgNjkgIDYgIDcgIDEgIDQwIDI2ICAzNiAgIDc2IDYzCi0rICAgICAKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHNrIHNsIHNyIHN2IHRhIHRoIHRyIHVrIHZlbiB2aSB3YSB4aCB6aF9DTiB6aF9UVyB6dQotKyAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSsgICAgIGEycHMgICAgICAgICAgICAgICB8ICAgIFtdICAgIFtdICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2Ci0rICAgICBhZWdpcyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMAotKyAgICAgYW50LXBob25lICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMKLSsgICAgIGFudWJpcyAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5Ci0rICAgICBhcC11dGlscyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMwotKyAgICAgYXNwZWxsICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQKLSsgICAgIGJhc2ggICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5Ci0rICAgICBiYXRjaGVsb3IgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMwotKyAgICAgYmZkICAgICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYKLSsgICAgIGJpbnV0aWxzICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICB8ICA4Ci0rICAgICBiaXNvbiAgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNAotKyAgICAgYmx1ZXotcGluICAgICAgICAgIHwgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwgMTQKLSsgICAgIGNsaXNwICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAwCi0rICAgICBjbGlzcCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNQotKyAgICAgY29uc29sZS10b29scyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMKLSsgICAgIGNvcmV1dGlscyAgICAgICAgICB8ICAgIFtdICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICB8IDE2Ci0rICAgICBjcGlvICAgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgfCAxNAotKyAgICAgZGFya3N0YXQgICAgICAgICAgIHwgW10gICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAoKSAgICAoKSAgICAgIHwgMTIKLSsgICAgIGRpZmZ1dGlscyAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICB8IDIzCi0rICAgICBlMmZzcHJvZ3MgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNgotKyAgICAgZW5zY3JpcHQgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTIKLSsgICAgIGVycm9yICAgICAgICAgICAgICB8IFtdICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICB8IDE1Ci0rICAgICBmZXRjaG1haWwgICAgICAgICAgfCBbXSAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMQotKyAgICAgZmlsZXV0aWxzICAgICAgICAgIHwgICAgW10gICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgICBbXSAgICAgIHwgMTcKLSsgICAgIGZpbmR1dGlscyAgICAgICAgICB8IFtdIFtdIFtdIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICB8IDI5Ci0rICAgICBmbGV4ICAgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMwotKyAgICAgZnNsaW50ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMKLSsgICAgIGdhcyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzCi0rICAgICBnYXdrICAgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMgotKyAgICAgZ2JpZmYgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQKLSsgICAgIGdjYWwgICAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0Ci0rICAgICBnY2MgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNAotKyAgICAgZ2V0dGV4dCAgICAgICAgICAgIHwgW10gW10gICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgIHwgMTYKLSsgICAgIGdldHRleHQtZXhhbXBsZXMgICB8IFtdICAgIFtdIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICB8IDE0Ci0rICAgICBnZXR0ZXh0LXJ1bnRpbWUgICAgfCBbXSBbXSBbXSBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgfCAyMgotKyAgICAgZ2V0dGV4dC10b29scyAgICAgIHwgW10gW10gW10gW10gICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgMTQKLSsgICAgIGdpbXAtcHJpbnQgICAgICAgICB8IFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEwCi0rICAgICBnbGl2ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMwotKyAgICAgZ2x1bmFyY2xvY2sgICAgICAgIHwgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwgMTMKLSsgICAgIGdudWJpZmYgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzCi0rICAgICBnbnVjYXNoICAgICAgICAgICAgfCBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgfCAgOQotKyAgICAgZ251Y2FzaC1nbG9zc2FyeSAgIHwgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgIHwgIDgKLSsgICAgIGdudXBnICAgICAgICAgICAgICB8IFtdICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICB8IDE3Ci0rICAgICBncGUtYWVyaWFsICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNwotKyAgICAgZ3BlLWJlYW0gICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDgKLSsgICAgIGdwZS1jYWxlbmRhciAgICAgICB8IFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgICB8IDEzCi0rICAgICBncGUtY2xvY2sgICAgICAgICAgfCBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMAotKyAgICAgZ3BlLWNvbmYgICAgICAgICAgIHwgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkKLSsgICAgIGdwZS1jb250YWN0cyAgICAgICB8IFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICB8IDExCi0rICAgICBncGUtZWRpdCAgICAgICAgICAgfCBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICAgfCAxMgotKyAgICAgZ3BlLWdvICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUKLSsgICAgIGdwZS1sb2dpbiAgICAgICAgICB8IFtdICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgICB8IDEzCi0rICAgICBncGUtb3duZXJpbmZvICAgICAgfCBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgfCAxMwotKyAgICAgZ3BlLXNrZXRjaGJvb2sgICAgIHwgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkKLSsgICAgIGdwZS1zdSAgICAgICAgICAgICB8IFtdICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEwCi0rICAgICBncGUtdGFza21hbmFnZXIgICAgfCBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMAotKyAgICAgZ3BlLXRpbWVzaGVldCAgICAgIHwgW10gICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgIHwgMTIKLSsgICAgIGdwZS10b2RheSAgICAgICAgICB8IFtdICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgICB8IDEzCi0rICAgICBncGUtdG9kbyAgICAgICAgICAgfCBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICAgfCAxMgotKyAgICAgZ3Bob3RvMiAgICAgICAgICAgIHwgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgMTEKLSsgICAgIGdwcm9mICAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5Ci0rICAgICBncHNkcml2ZSAgICAgICAgICAgfCBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMwotKyAgICAgZ3JhbWFkb2lyICAgICAgICAgIHwgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUKLSsgICAgIGdyZXAgICAgICAgICAgICAgICB8ICAgIFtdIFtdICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI2Ci0rICAgICBncmV0bCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMwotKyAgICAgZ3RpY2sgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDcKLSsgICAgIGhlbGxvICAgICAgICAgICAgICB8IFtdICAgIFtdIFtdICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDM0Ci0rICAgICBpZC11dGlscyAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMgotKyAgICAgaW5kZW50ICAgICAgICAgICAgIHwgW10gICAgW10gW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjEKLSsgICAgIGlzb18zMTY2ICAgICAgICAgICB8IFtdIFtdIFtdIFtdICAgICAgIFtdICAgIFtdICAgICBbXSAgICAgICAgICAgICAgICAgICB8IDI3Ci0rICAgICBpc29fMzE2Nl8xICAgICAgICAgfCBbXSBbXSAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNgotKyAgICAgaXNvXzMxNjZfMiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDAKLSsgICAgIGlzb18zMTY2XzMgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyCi0rICAgICBpc29fNDIxNyAgICAgICAgICAgfCBbXSBbXSAgICBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgfCAyNAotKyAgICAgaXNvXzYzOSAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEKLSsgICAgIGpwaWxvdCAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICBbXSAgICAgICAgW10gICAgW10gICAgICB8ICA5Ci0rICAgICBqdGFnICAgICAgICAgICAgICAgfCBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMgotKyAgICAgandob2lzICAgICAgICAgICAgIHwgICAgICAgICAgKCkgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgIHwgMTEKLSsgICAgIGtiZCAgICAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDExCi0rICAgICBsYXRyaW5lICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMgotKyAgICAgbGQgICAgICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUKLSsgICAgIGxpYmMgICAgICAgICAgICAgICB8IFtdICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICB8IDIwCi0rICAgICBsaWJncGV3aWRnZXQgICAgICAgfCBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfCAxMwotKyAgICAgbGliaWNvbnYgICAgICAgICAgIHwgW10gW10gW10gW10gICAgICAgW10gW10gICAgICAgIFtdICAgICBbXSAgICAgICAgICAgIHwgMjcKLSsgICAgIGxpZmVsaW5lcyAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyCi0rICAgICBsaWx5cG9uZCAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMwotKyAgICAgbGluZ290ZWFjaCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIKLSsgICAgIGxpbmdvdGVhY2hfbGVzc29ucyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICAgICB8ICAwCi0rICAgICBseW54ICAgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNAotKyAgICAgbTQgICAgICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgMTUKLSsgICAgIG1haWx1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1Ci0rICAgICBtYWtlICAgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgfCAxNgotKyAgICAgbWFuLWRiICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUKLSsgICAgIG1pbmljb20gICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDExCi0rICAgICBteXNlY3JldGRpYXJ5ICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMAotKyAgICAgbmFubyAgICAgICAgICAgICAgIHwgICAgICAgW10gW10gICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTcKLSsgICAgIG5hbm9fMV8wICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE3Ci0rICAgICBvcGNvZGVzICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNgotKyAgICAgcGFydGVkICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgMTUKLSsgICAgIHB0eCAgICAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIyCi0rICAgICBweXRob24gICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMAotKyAgICAgcmFkaXVzICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQKLSsgICAgIHJlY29kZSAgICAgICAgICAgICB8ICAgIFtdICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIwCi0rICAgICBycG0gICAgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOQotKyAgICAgc2NyZWVtICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgIDIKLSsgICAgIHNjcm9sbGtlZXBlciAgICAgICB8IFtdICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE1Ci0rICAgICBzZWQgICAgICAgICAgICAgICAgfCBbXSBbXSBbXSBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNAotKyAgICAgc2gtdXRpbHMgICAgICAgICAgIHwgICAgW10gICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTQKLSsgICAgIHNoYXJlZC1taW1lLWluZm8gICB8ICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3Ci0rICAgICBzaGFydXRpbHMgICAgICAgICAgfCAgICAgICBbXSBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgfCAxNwotKyAgICAgc2lsa3kgICAgICAgICAgICAgIHwgKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMKLSsgICAgIHNrZW5jaWwgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2Ci0rICAgICBza2V0Y2ggICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNgotKyAgICAgc291bmR0cmFja2VyICAgICAgIHwgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDcKLSsgICAgIHNwICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzCi0rICAgICB0YXIgICAgICAgICAgICAgICAgfCBbXSBbXSAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgfCAyNAotKyAgICAgdGV4aW5mbyAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgMTQKLSsgICAgIHRleHR1dGlscyAgICAgICAgICB8ICAgIFtdICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICB8IDE2Ci0rICAgICB0aW4gICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMQotKyAgICAgdHAtcm9ib3QgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIKLSsgICAgIHR1eHBhaW50ICAgICAgICAgICB8IFtdICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICBbXSAgICAgW10gICAgICAgICAgICB8IDI5Ci0rICAgICB1bmljb2RlLWhhbi10cmEuLi4gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMAotKyAgICAgdW5pY29kZS10cmFuc2xhLi4uIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIKLSsgICAgIHV0aWwtbGludXggICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE1Ci0rICAgICB2b3JiaXMtdG9vbHMgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOAotKyAgICAgd2FzdGVzZWRnZSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDAKLSsgICAgIHdkaWZmICAgICAgICAgICAgICB8IFtdICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE4Ci0rICAgICB3Z2V0ICAgICAgICAgICAgICAgfCBbXSBbXSBbXSBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgfCAyNAotKyAgICAgeGNoYXQgICAgICAgICAgICAgIHwgW10gW10gW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgMTUKLSsgICAgIHhmcmVlODZfeGtiX3htbCAgICB8IFtdICAgIFtdICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgW10gICAgICAgICAgICB8IDExCi0rICAgICB4cGFkICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNQotKyAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSsgICAgICAgNjMgdGVhbXMgICAgICAgICAgIHNrIHNsIHNyIHN2IHRhIHRoIHRyIHVrIHZlbiB2aSB3YSB4aCB6aF9DTiB6aF9UVyB6dQotKyAgICAgIDEzMSBkb21haW5zICAgICAgICAgNDcgMTkgMjggODMgIDAgIDAgNTkgMTMgIDEgICAxIDExICAwICAyMiAgICAyMiAgICAwICAxMzczCi0gCi0gICAgU29tZSBjb3VudGVycyBpbiB0aGUgcHJlY2VkaW5nIG1hdHJpeCBhcmUgaGlnaGVyIHRoYW4gdGhlIG51bWJlciBvZgotIHZpc2libGUgYmxvY2tzIGxldCB1cyBleHBlY3QuICBUaGlzIGlzIGJlY2F1c2UgYSBmZXcgZXh0cmEgUE8gZmlsZXMgYXJlCi1AQCAtMjIwLDYgKzc0MiwyNyBAQAotIGxhZyBiZXR3ZWVuIHRoZSBtZXJlIGV4aXN0ZW5jZSBhIFBPIGZpbGUgYW5kIGl0cyB3aWRlIGF2YWlsYWJpbGl0eSBpbiBhCi0gZGlzdHJpYnV0aW9uLgotIAotLSAgIElmIEF1Z3VzdCAxOTk3IHNlZW1zIHRvIGJlIG9sZCwgeW91IG1heSBmZXRjaCBhIG1vcmUgcmVjZW50IGNvcHkgb2YKLS10aGlzIGBBQk9VVC1OTFMnIGZpbGUgb24gbW9zdCBHTlUgYXJjaGl2ZSBzaXRlcy4KLSsgICBJZiBKYW51YXJ5IDIwMDQgc2VlbXMgdG8gYmUgb2xkLCB5b3UgbWF5IGZldGNoIGEgbW9yZSByZWNlbnQgY29weSBvZgotK3RoaXMgYEFCT1VULU5MUycgZmlsZSBvbiBtb3N0IEdOVSBhcmNoaXZlIHNpdGVzLiAgVGhlIG1vc3QgdXAtdG8tZGF0ZQotK21hdHJpeCB3aXRoIGZ1bGwgcGVyY2VudGFnZSBkZXRhaWxzIGNhbiBiZSBmb3VuZCBhdAotK2BodHRwOi8vd3d3Lmlyby51bW9udHJlYWwuY2EvY29udHJpYi9wby9IVE1ML21hdHJpeC5odG1sJy4KLSsKLStVc2luZyBgZ2V0dGV4dCcgaW4gbmV3IHBhY2thZ2VzCi0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKwotK0lmIHlvdSBhcmUgd3JpdGluZyBhIGZyZWVseSBhdmFpbGFibGUgcHJvZ3JhbSBhbmQgd2FudCB0bwotK2ludGVybmF0aW9uYWxpemUgaXQgeW91IGFyZSB3ZWxjb21lIHRvIHVzZSBHTlUgYGdldHRleHQnIGluIHlvdXIKLStwYWNrYWdlLiAgT2YgY291cnNlIHlvdSBoYXZlIHRvIHJlc3BlY3QgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rTGljZW5zZSB3aGljaCBjb3ZlcnMgdGhlIHVzZSBvZiB0aGUgR05VIGBnZXR0ZXh0JyBsaWJyYXJ5LiAgVGhpcyBtZWFucwotK2luIHBhcnRpY3VsYXIgdGhhdCBldmVuIG5vbi1mcmVlIHByb2dyYW1zIGNhbiB1c2UgYGxpYmludGwnIGFzIGEgc2hhcmVkCi0rbGlicmFyeSwgd2hlcmVhcyBvbmx5IGZyZWUgc29mdHdhcmUgY2FuIHVzZSBgbGliaW50bCcgYXMgYSBzdGF0aWMKLStsaWJyYXJ5IG9yIHVzZSBtb2RpZmllZCB2ZXJzaW9ucyBvZiBgbGliaW50bCcuCi0rCi0rICAgT25jZSB0aGUgc291cmNlcyBhcmUgY2hhbmdlZCBhcHByb3ByaWF0ZWx5IGFuZCB0aGUgc2V0dXAgY2FuIGhhbmRsZQotK3RoZSB1c2Ugb2YgYGdldHRleHQnIHRoZSBvbmx5IHRoaW5nIG1pc3NpbmcgYXJlIHRoZSB0cmFuc2xhdGlvbnMuICBUaGUKLStGcmVlIFRyYW5zbGF0aW9uIFByb2plY3QgaXMgYWxzbyBhdmFpbGFibGUgZm9yIHBhY2thZ2VzIHdoaWNoIGFyZSBub3QKLStkZXZlbG9wZWQgaW5zaWRlIHRoZSBHTlUgcHJvamVjdC4gIFRoZXJlZm9yZSB0aGUgaW5mb3JtYXRpb24gZ2l2ZW4gYWJvdmUKLSthcHBsaWVzIGFsc28gZm9yIGV2ZXJ5IG90aGVyIEZyZWUgU29mdHdhcmUgUHJvamVjdC4gIENvbnRhY3QKLStgdHJhbnNsYXRpb25AaXJvLnVtb250cmVhbC5jYScgdG8gbWFrZSB0aGUgYC5wb3QnIGZpbGVzIGF2YWlsYWJsZSB0bwotK3RoZSB0cmFuc2xhdGlvbiB0ZWFtcy4KLSAKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvQ2hhbmdlTG9nCTE5OTgtMTItMjkgMTc6NDk6NTYuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9DaGFuZ2VMb2cJMjAwNC0wOS0xMiAxNDo0MDozNS44NDY1MjE0NTYgLTA0MDAKLUBAIC0xLDMgKzEsMTEgQEAKLSsyMDA0LTA5LTEyICBnZXR0ZXh0aXplICA8YnVnLWdudS1nZXR0ZXh0QGdudS5vcmc+Ci0rCi0rCSogTWFrZWZpbGUuYW0gKEFDTE9DQUxfQU1GTEFHUyk6IE5ldyB2YXJpYWJsZS4KLSsJKEVYVFJBX0RJU1QpOiBBZGQgY29uZmlnLnJwYXRoLgotKwkqIGNvbmZpZ3VyZS5pbiAoQUNfT1VUUFVUKTogQWRkIG00L01ha2VmaWxlLgotKwkoQUNfT1VUUFVUKTogUmVtb3ZlIGNvbW1hbmQgdGhhdCBjcmVhdGVkIHBvL01ha2VmaWxlLgotKwkoQUNfTElOS19GSUxFUyk6IFJlbW92ZSBpbnZvY2F0aW9uLgotKwotIDE5OTgtMTItMjkJVXdlIE9oc2UgIDx1d2VAb2hzZS5kZT4KLSAKLSAJKiBzcmMvbHJ6LmM6IHJlbW92ZWQgc3RwY3B5IGNhbGwuCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2NvbmZpZy5ycGF0aAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvY29uZmlnLnJwYXRoCTIwMDQtMDktMTIgMTQ6NDA6MzQuMzI5NzUyMDQwIC0wNDAwCi1AQCAtMCwwICsxLDU0OCBAQAotKyMhIC9iaW4vc2gKLSsjIE91dHB1dCBhIHN5c3RlbSBkZXBlbmRlbnQgc2V0IG9mIHZhcmlhYmxlcywgZGVzY3JpYmluZyBob3cgdG8gc2V0IHRoZQotKyMgcnVuIHRpbWUgc2VhcmNoIHBhdGggb2Ygc2hhcmVkIGxpYnJhcmllcyBpbiBhbiBleGVjdXRhYmxlLgotKyMKLSsjICAgQ29weXJpZ2h0IDE5OTYtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjICAgVGFrZW4gZnJvbSBHTlUgbGlidG9vbCwgMjAwMQotKyMgICBPcmlnaW5hbGx5IGJ5IEdvcmRvbiBNYXR6aWdrZWl0IDxnb3JkQGdudS5haS5taXQuZWR1PiwgMTk5NgotKyMKLSsjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsjICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsjICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyMgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyMgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKyMKLSsjICAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQotKyMgICBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKLSsjICAgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIKLSsjICAgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKyMKLSsjIFRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgdG8gdGhpcyBmaWxlIGlzIHRoZSBjYW5vbmljYWwgaG9zdCBzcGVjaWZpY2F0aW9uLAotKyMgICAgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLU9QRVJBVElOR19TWVNURU0KLSsjIG9yCi0rIyAgICBDUFVfVFlQRS1NQU5VRkFDVFVSRVItS0VSTkVMLU9QRVJBVElOR19TWVNURU0KLSsjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgQ0MsIEdDQywgTERGTEFHUywgTEQsIHdpdGhfZ251X2xkCi0rIyBzaG91bGQgYmUgc2V0IGJ5IHRoZSBjYWxsZXIuCi0rIwotKyMgVGhlIHNldCBvZiBkZWZpbmVkIHZhcmlhYmxlcyBpcyBhdCB0aGUgZW5kIG9mIHRoaXMgc2NyaXB0LgotKwotKyMgS25vd24gbGltaXRhdGlvbnM6Ci0rIyAtIE9uIElSSVggNi41IHdpdGggQ0M9ImNjIiwgdGhlIHJ1biB0aW1lIHNlYXJjaCBwYXRjaCBtdXN0IG5vdCBiZSBsb25nZXIKLSsjICAgdGhhbiAyNTYgYnl0ZXMsIG90aGVyd2lzZSB0aGUgY29tcGlsZXIgZHJpdmVyIHdpbGwgZHVtcCBjb3JlLiBUaGUgb25seQotKyMgICBrbm93biB3b3JrYXJvdW5kIGlzIHRvIGNob29zZSBzaG9ydGVyIGRpcmVjdG9yeSBuYW1lcyBmb3IgdGhlIGJ1aWxkCi0rIyAgIGRpcmVjdG9yeSBhbmQvb3IgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCi0rCi0rIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE0kVkMsCi0rIyB3aGljaCBuZWVkcyAnLmxpYicpLgotK2xpYmV4dD1hCi0rc2hyZXh0PS5zbwotKwotK2hvc3Q9IiQxIgotK2hvc3RfY3B1PWBlY2hvICIkaG9zdCIgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYAotK2hvc3RfdmVuZG9yPWBlY2hvICIkaG9zdCIgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYAotK2hvc3Rfb3M9YGVjaG8gIiRob3N0IiB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wzLydgCi0rCi0rIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIEFDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9QSUMuCi0rCi0rd2w9Ci0raWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgIHdsPSctV2wsJwotK2Vsc2UKLSsgIGNhc2UgIiRob3N0X29zIiBpbgotKyAgICBhaXgqKQotKyAgICAgIHdsPSctV2wsJwotKyAgICAgIDs7Ci0rICAgIG1pbmd3KiB8IHB3MzIqIHwgb3MyKikKLSsgICAgICA7OwotKyAgICBocHV4OSogfCBocHV4MTAqIHwgaHB1eDExKikKLSsgICAgICB3bD0nLVdsLCcKLSsgICAgICA7OwotKyAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotKyAgICAgIHdsPSctV2wsJwotKyAgICAgIDs7Ci0rICAgIG5ld3NvczYpCi0rICAgICAgOzsKLSsgICAgbGludXgqKQotKyAgICAgIGNhc2UgJENDIGluCi0rICAgICAgICBpY2N8ZWNjKQotKyAgICAgICAgICB3bD0nLVdsLCcKLSsgICAgICAgICAgOzsKLSsgICAgICAgIGNjYykKLSsgICAgICAgICAgd2w9Jy1XbCwnCi0rICAgICAgICAgIDs7Ci0rICAgICAgZXNhYwotKyAgICAgIDs7Ci0rICAgIG9zZjMqIHwgb3NmNCogfCBvc2Y1KikKLSsgICAgICB3bD0nLVdsLCcKLSsgICAgICA7OwotKyAgICBzY28zLjJ2NSopCi0rICAgICAgOzsKLSsgICAgc29sYXJpcyopCi0rICAgICAgd2w9Jy1XbCwnCi0rICAgICAgOzsKLSsgICAgc3Vub3M0KikKLSsgICAgICB3bD0nLVFvcHRpb24gbGQgJwotKyAgICAgIDs7Ci0rICAgIHN5c3Y0IHwgc3lzdjQuMnV3MiogfCBzeXN2NC4zKiB8IHN5c3Y1KikKLSsgICAgICB3bD0nLVdsLCcKLSsgICAgICA7OwotKyAgICBzeXN2NCpNUCopCi0rICAgICAgOzsKLSsgICAgdXRzNCopCi0rICAgICAgOzsKLSsgIGVzYWMKLStmaQotKwotKyMgQ29kZSB0YWtlbiBmcm9tIGxpYnRvb2wubTQncyBBQ19MSUJUT09MX1BST0dfTERfU0hMSUJTLgotKwotK2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci0raGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0KLStoYXJkY29kZV9kaXJlY3Q9bm8KLStoYXJkY29kZV9taW51c19MPW5vCi0rCi0rY2FzZSAiJGhvc3Rfb3MiIGluCi0rICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiopCi0rICAgICMgRklYTUU6IHRoZSBNU1ZDKysgcG9ydCBoYXNuJ3QgYmVlbiB0ZXN0ZWQgaW4gYSBsb29vb25nIHRpbWUKLSsgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKLSsgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgd2l0aF9nbnVfbGQ9bm8KLSsgICAgZmkKLSsgICAgOzsKLSsgIG9wZW5ic2QqKQotKyAgICB3aXRoX2dudV9sZD1ubwotKyAgICA7OwotK2VzYWMKLSsKLStsZF9zaGxpYnM9eWVzCi0raWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgotKyAgY2FzZSAiJGhvc3Rfb3MiIGluCi0rICAgIGFpeDMqIHwgYWl4NCogfCBhaXg1KikKLSsgICAgICAjIE9uIEFJWC9QUEMsIHRoZSBHTlUgbGlua2VyIGlzIHZlcnkgYnJva2VuCi0rICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiAhPSBpYTY0OyB0aGVuCi0rICAgICAgICBsZF9zaGxpYnM9bm8KLSsgICAgICBmaQotKyAgICAgIDs7Ci0rICAgIGFtaWdhb3MqKQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSsgICAgICBoYXJkY29kZV9taW51c19MPXllcwotKyAgICAgICMgU2FtdWVsIEEuIEZhbHZvIElJIDxrYzV0amFAZG9scGhpbi5vcGVucHJvamVjdHMubmV0PiByZXBvcnRzCi0rICAgICAgIyB0aGF0IHRoZSBzZW1hbnRpY3Mgb2YgZHluYW1pYyBsaWJyYXJpZXMgb24gQW1pZ2FPUywgYXQgbGVhc3QgdXAKLSsgICAgICAjIHRvIHZlcnNpb24gNCwgaXMgdG8gc2hhcmUgZGF0YSBhbW9uZyBtdWx0aXBsZSBwcm9ncmFtcyBsaW5rZWQKLSsgICAgICAjIHdpdGggdGhlIHNhbWUgZHluYW1pYyBsaWJyYXJ5LiAgU2luY2UgdGhpcyBkb2Vzbid0IG1hdGNoIHRoZQotKyAgICAgICMgYmVoYXZpb3Igb2Ygc2hhcmVkIGxpYnJhcmllcyBvbiBvdGhlciBwbGF0Zm9ybXMsIHdlIGNhbiB1c2UKLSsgICAgICAjIHRoZW0uCi0rICAgICAgbGRfc2hsaWJzPW5vCi0rICAgICAgOzsKLSsgICAgYmVvcyopCi0rICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0rICAgICAgICA6Ci0rICAgICAgZWxzZQotKyAgICAgICAgbGRfc2hsaWJzPW5vCi0rICAgICAgZmkKLSsgICAgICA7OwotKyAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiopCi0rICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotKyAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotKyAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgOgotKyAgICAgIGVsc2UKLSsgICAgICAgIGxkX3NobGlicz1ubwotKyAgICAgIGZpCi0rICAgICAgOzsKLSsgICAgbmV0YnNkKikKLSsgICAgICA7OwotKyAgICBzb2xhcmlzKiB8IHN5c3Y1KikKLSsgICAgICBpZiAkTEQgLXYgMj4mMSB8IGdyZXAgJ0JGRCAyXC44JyA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgbGRfc2hsaWJzPW5vCi0rICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgICAgIDoKLSsgICAgICBlbHNlCi0rICAgICAgICBsZF9zaGxpYnM9bm8KLSsgICAgICBmaQotKyAgICAgIDs7Ci0rICAgIHN1bm9zNCopCi0rICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0rICAgICAgICA6Ci0rICAgICAgZWxzZQotKyAgICAgICAgbGRfc2hsaWJzPW5vCi0rICAgICAgZmkKLSsgICAgICA7OwotKyAgZXNhYwotKyAgaWYgdGVzdCAiJGxkX3NobGlicyIgPSB5ZXM7IHRoZW4KLSsgICAgIyBVbmxpa2UgbGlidG9vbCwgd2UgdXNlIC1ycGF0aCBoZXJlLCBub3QgLS1ycGF0aCwgc2luY2UgdGhlIGRvY3VtZW50ZWQKLSsgICAgIyBvcHRpb24gb2YgR05VIGxkIGlzIGNhbGxlZCAtcnBhdGgsIG5vdCAtLXJwYXRoLgotKyAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0rICBmaQotK2Vsc2UKLSsgIGNhc2UgIiRob3N0X29zIiBpbgotKyAgICBhaXgzKikKLSsgICAgICAjIE5vdGU6IHRoaXMgbGlua2VyIGhhcmRjb2RlcyB0aGUgZGlyZWN0b3JpZXMgaW4gTElCUEFUSCBpZiB0aGVyZQotKyAgICAgICMgYXJlIG5vIGRpcmVjdG9yaWVzIHNwZWNpZmllZCBieSAtTC4KLSsgICAgICBoYXJkY29kZV9taW51c19MPXllcwotKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAgICAgICAjIE5laXRoZXIgZGlyZWN0IGhhcmRjb2Rpbmcgbm9yIHN0YXRpYyBsaW5raW5nIGlzIHN1cHBvcnRlZCB3aXRoIGEKLSsgICAgICAgICMgYnJva2VuIGNvbGxlY3QyLgotKyAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXVuc3VwcG9ydGVkCi0rICAgICAgZmkKLSsgICAgICA7OwotKyAgICBhaXg0KiB8IGFpeDUqKQotKyAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCi0rICAgICAgICAjIE9uIElBNjQsIHRoZSBsaW5rZXIgZG9lcyBydW4gdGltZSBsaW5raW5nIGJ5IGRlZmF1bHQsIHNvIHdlIGRvbid0Ci0rICAgICAgICAjIGhhdmUgdG8gZG8gYW55dGhpbmcgc3BlY2lhbC4KLSsgICAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KLSsgICAgICBlbHNlCi0rICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCi0rICAgICAgICAjIFRlc3QgaWYgd2UgYXJlIHRyeWluZyB0byB1c2UgcnVuIHRpbWUgbGlua2luZyBvciBub3JtYWwKLSsgICAgICAgICMgQUlYIHN0eWxlIGxpbmtpbmcuIElmIC1icnRsIGlzIHNvbWV3aGVyZSBpbiBMREZMQUdTLCB3ZQotKyAgICAgICAgIyBuZWVkIHRvIGRvIHJ1bnRpbWUgbGlua2luZy4KLSsgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bMjNdfGFpeDQuWzIzXS4qfGFpeDUqKQotKyAgICAgICAgICBmb3IgbGRfZmxhZyBpbiAkTERGTEFHUzsgZG8KLSsgICAgICAgICAgICBpZiAodGVzdCAkbGRfZmxhZyA9ICItYnJ0bCIgfHwgdGVzdCAkbGRfZmxhZyA9ICItV2wsLWJydGwiKTsgdGhlbgotKyAgICAgICAgICAgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz15ZXMKLSsgICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAgZmkKLSsgICAgICAgICAgZG9uZQotKyAgICAgICAgZXNhYwotKyAgICAgIGZpCi0rICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JzonCi0rICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bMDEyXXxhaXg0LlswMTJdLiopCi0rICAgICAgICAgIGNvbGxlY3QybmFtZT1gJHtDQ30gLXByaW50LXByb2ctbmFtZT1jb2xsZWN0MmAKLSsgICAgICAgICAgaWYgdGVzdCAtZiAiJGNvbGxlY3QybmFtZSIgJiYgXAotKyAgICAgICAgICAgIHN0cmluZ3MgIiRjb2xsZWN0Mm5hbWUiIHwgZ3JlcCByZXNvbHZlX2xpYl9uYW1lID4vZGV2L251bGwKLSsgICAgICAgICAgdGhlbgotKyAgICAgICAgICAgICMgV2UgaGF2ZSByZXdvcmtlZCBjb2xsZWN0MgotKyAgICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSsgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICMgV2UgaGF2ZSBvbGQgY29sbGVjdDIKLSsgICAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9dW5zdXBwb3J0ZWQKLSsgICAgICAgICAgICBoYXJkY29kZV9taW51c19MPXllcwotKyAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSsgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPQotKyAgICAgICAgICBmaQotKyAgICAgICAgZXNhYwotKyAgICAgIGZpCi0rICAgICAgIyBCZWdpbiBfTFRfQUNfU1lTX0xJQlBBVEhfQUlYLgotKyAgICAgIGVjaG8gJ2ludCBtYWluICgpIHsgcmV0dXJuIDA7IH0nID4gY29uZnRlc3QuYwotKyAgICAgICR7Q0N9ICR7TERGTEFHU30gY29uZnRlc3QuYyAtbyBjb25mdGVzdAotKyAgICAgIGFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0IDI+L2Rldi9udWxsIHwgc2VkIC1uIC1lICcvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7IC9eMC8geyBzL14wICAqXCguKlwpJC9cMS87IHA7IH0KLSt9J2AKLSsgICAgICBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0rICAgICAgICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCAyPi9kZXYvbnVsbCB8IHNlZCAtbiAtZSAnL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geyAvXjAvIHsgcy9eMCAgKlwoLipcKSQvXDEvOyBwOyB9Ci0rfSdgCi0rICAgICAgZmkKLSsgICAgICBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0rICAgICAgICBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiIKLSsgICAgICBmaQotKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LmMgY29uZnRlc3QKLSsgICAgICAjIEVuZCBfTFRfQUNfU1lTX0xJQlBBVEhfQUlYLgotKyAgICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgotKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSsgICAgICBlbHNlCi0rICAgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgotKyAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKLSsgICAgICAgIGVsc2UKLSsgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgICA7OwotKyAgICBhbWlnYW9zKikKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0rICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSsgICAgICAjIHNlZSBjb21tZW50IGFib3V0IGRpZmZlcmVudCBzZW1hbnRpY3Mgb24gdGhlIEdOVSBsZCBzZWN0aW9uCi0rICAgICAgbGRfc2hsaWJzPW5vCi0rICAgICAgOzsKLSsgICAgYnNkaTQqKQotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKikKLSsgICAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZwotKyAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0rICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotKyAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsgICAgICBsaWJleHQ9bGliCi0rICAgICAgOzsKLSsgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLSsgICAgICBpZiAkQ0MgLXYgMj4mMSB8IGdyZXAgJ0FwcGxlJyA+L2Rldi9udWxsIDsgdGhlbgotKyAgICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vCi0rICAgICAgZmkKLSsgICAgICA7OwotKyAgICBkZ3V4KikKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0rICAgICAgOzsKLSsgICAgZnJlZWJzZDEqKQotKyAgICAgIGxkX3NobGlicz1ubwotKyAgICAgIDs7Ci0rICAgIGZyZWVic2QyLjIqKQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSsgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0rICAgICAgOzsKLSsgICAgZnJlZWJzZDIqKQotKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSsgICAgICBoYXJkY29kZV9taW51c19MPXllcwotKyAgICAgIDs7Ci0rICAgIGZyZWVic2QqKQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSsgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0rICAgICAgOzsKLSsgICAgaHB1eDkqKQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSsgICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAotKyAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgotKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0rICAgICAgOzsKLSsgICAgaHB1eDEwKiB8IGhwdXgxMSopCi0rICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0rICAgICAgICBjYXNlICIkaG9zdF9jcHUiIGluCi0rICAgICAgICAgIGhwcGEqNjQqKQotKyAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwotKyAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotKyAgICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubwotKyAgICAgICAgICAgIDs7Ci0rICAgICAgICAgIGlhNjQqKQotKyAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSsgICAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8KLSsgICAgICAgICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAotKyAgICAgICAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgotKyAgICAgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0rICAgICAgICAgICAgOzsKLSsgICAgICAgICAgKikKLSsgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfStiICR7d2x9JGxpYmRpcicKLSsgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKLSsgICAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0rICAgICAgICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKLSsgICAgICAgICAgICAjIGJ1dCBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KLSsgICAgICAgICAgICBoYXJkY29kZV9taW51c19MPXllcwotKyAgICAgICAgICAgIDs7Ci0rICAgICAgICBlc2FjCi0rICAgICAgZmkKLSsgICAgICA7OwotKyAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSsgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKLSsgICAgICA7OwotKyAgICBuZXRic2QqKQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSsgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0rICAgICAgOzsKLSsgICAgbmV3c29zNikKLSsgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotKyAgICAgIDs7Ci0rICAgIG9wZW5ic2QqKQotKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSsgICAgICBpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KLSsgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoLCRsaWJkaXInCi0rICAgICAgZWxzZQotKyAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCi0rICAgICAgICAgIG9wZW5ic2RbMDFdLiogfCBvcGVuYnNkMi5bMC03XSB8IG9wZW5ic2QyLlswLTddLiopCi0rICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotKyAgICAgICAgICAgIDs7Ci0rICAgICAgICAgICopCi0rICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLSsgICAgICAgICAgICA7OwotKyAgICAgICAgZXNhYwotKyAgICAgIGZpCi0rICAgICAgOzsKLSsgICAgb3MyKikKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0rICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSsgICAgICA7OwotKyAgICBvc2YzKikKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06Ci0rICAgICAgOzsKLSsgICAgb3NmNCogfCBvc2Y1KikKLSsgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotKyAgICAgIGVsc2UKLSsgICAgICAgICMgQm90aCBjYyBhbmQgY3h4IGNvbXBpbGVyIHN1cHBvcnQgLXJwYXRoIGRpcmVjdGx5Ci0rICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctcnBhdGggJGxpYmRpcicKLSsgICAgICBmaQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotKyAgICAgIDs7Ci0rICAgIHNjbzMuMnY1KikKLSsgICAgICA7OwotKyAgICBzb2xhcmlzKikKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0rICAgICAgOzsKLSsgICAgc3Vub3M0KikKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0rICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0rICAgICAgOzsKLSsgICAgc3lzdjQpCi0rICAgICAgY2FzZSAkaG9zdF92ZW5kb3IgaW4KLSsgICAgICAgIHNuaSkKLSsgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcyAjIGlzIHRoaXMgcmVhbGx5IHRydWU/Pz8KLSsgICAgICAgICAgOzsKLSsgICAgICAgIHNpZW1lbnMpCi0rICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubwotKyAgICAgICAgICA7OwotKyAgICAgICAgbW90b3JvbGEpCi0rICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubyAjTW90b3JvbGEgbWFudWFsIHNheXMgeWVzLCBidXQgbXkgdGVzdHMgc2F5IHRoZXkgbGllCi0rICAgICAgICAgIDs7Ci0rICAgICAgZXNhYwotKyAgICAgIDs7Ci0rICAgIHN5c3Y0LjMqKQotKyAgICAgIDs7Ci0rICAgIHN5c3Y0Kk1QKikKLSsgICAgICBpZiB0ZXN0IC1kIC91c3IvbmVjOyB0aGVuCi0rICAgICAgICBsZF9zaGxpYnM9eWVzCi0rICAgICAgZmkKLSsgICAgICA7OwotKyAgICBzeXN2NC4ydXcyKikKLSsgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0rICAgICAgaGFyZGNvZGVfbWludXNfTD1ubwotKyAgICAgIDs7Ci0rICAgIHN5c3Y1T3BlblVOSVg4KiB8IHN5c3Y1VW5peFdhcmU3KiB8ICBzeXN2NXV3Wzc4XSogfCB1bml4d2FyZTcqKQotKyAgICAgIDs7Ci0rICAgIHN5c3Y1KikKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotKyAgICAgIDs7Ci0rICAgIHV0czQqKQotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIGxkX3NobGlicz1ubwotKyAgICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSsjIENoZWNrIGR5bmFtaWMgbGlua2VyIGNoYXJhY3RlcmlzdGljcwotKyMgQ29kZSB0YWtlbiBmcm9tIGxpYnRvb2wubTQncyBBQ19MSUJUT09MX1NZU19EWU5BTUlDX0xJTktFUi4KLStsaWJuYW1lX3NwZWM9J2xpYiRuYW1lJwotK2Nhc2UgIiRob3N0X29zIiBpbgotKyAgYWl4MyopCi0rICAgIDs7Ci0rICBhaXg0KiB8IGFpeDUqKQotKyAgICA7OwotKyAgYW1pZ2FvcyopCi0rICAgIDs7Ci0rICBiZW9zKikKLSsgICAgOzsKLSsgIGJzZGk0KikKLSsgICAgOzsKLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKikKLSsgICAgc2hyZXh0PS5kbGwKLSsgICAgOzsKLSsgIGRhcndpbiogfCByaGFwc29keSopCi0rICAgIHNocmV4dD0uZHlsaWIKLSsgICAgOzsKLSsgIGRndXgqKQotKyAgICA7OwotKyAgZnJlZWJzZDEqKQotKyAgICA7OwotKyAgZnJlZWJzZCopCi0rICAgIDs7Ci0rICBnbnUqKQotKyAgICA7OwotKyAgaHB1eDkqIHwgaHB1eDEwKiB8IGhwdXgxMSopCi0rICAgIGNhc2UgIiRob3N0X2NwdSIgaW4KLSsgICAgICBpYTY0KikKLSsgICAgICAgIHNocmV4dD0uc28KLSsgICAgICAgIDs7Ci0rICAgICAgaHBwYSo2NCopCi0rICAgICAgICBzaHJleHQ9LnNsCi0rICAgICAgICA7OwotKyAgICAgICopCi0rICAgICAgICBzaHJleHQ9LnNsCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotKyAgICBjYXNlICIkaG9zdF9vcyIgaW4KLSsgICAgICBpcml4NSogfCBub25zdG9wdXgqKQotKyAgICAgICAgbGlic3VmZj0gc2hsaWJzdWZmPQotKyAgICAgICAgOzsKLSsgICAgICAqKQotKyAgICAgICAgY2FzZSAkTEQgaW4KLSsgICAgICAgICAgKi0zMnwqIi0zMiAifCotbWVsZjMyYnNtaXB8KiItbWVsZjMyYnNtaXAgIikgbGlic3VmZj0gc2hsaWJzdWZmPSA7OwotKyAgICAgICAgICAqLW4zMnwqIi1uMzIgInwqLW1lbGYzMmJtaXBuMzJ8KiItbWVsZjMyYm1pcG4zMiAiKSBsaWJzdWZmPTMyIHNobGlic3VmZj1OMzIgOzsKLSsgICAgICAgICAgKi02NHwqIi02NCAifCotbWVsZjY0Ym1pcHwqIi1tZWxmNjRibWlwICIpIGxpYnN1ZmY9NjQgc2hsaWJzdWZmPTY0IDs7Ci0rICAgICAgICAgICopIGxpYnN1ZmY9IHNobGlic3VmZj0gOzsKLSsgICAgICAgIGVzYWMKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgIGxpbnV4Km9sZGxkKiB8IGxpbnV4KmFvdXQqIHwgbGludXgqY29mZiopCi0rICAgIDs7Ci0rICBsaW51eCopCi0rICAgIDs7Ci0rICBuZXRic2QqKQotKyAgICA7OwotKyAgbmV3c29zNikKLSsgICAgOzsKLSsgIG50by1xbngpCi0rICAgIDs7Ci0rICBvcGVuYnNkKikKLSsgICAgOzsKLSsgIG9zMiopCi0rICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0rICAgIHNocmV4dD0uZGxsCi0rICAgIDs7Ci0rICBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCi0rICAgIDs7Ci0rICBzY28zLjJ2NSopCi0rICAgIDs7Ci0rICBzb2xhcmlzKikKLSsgICAgOzsKLSsgIHN1bm9zNCopCi0rICAgIDs7Ci0rICBzeXN2NCB8IHN5c3Y0LjJ1dzIqIHwgc3lzdjQuMyogfCBzeXN2NSopCi0rICAgIDs7Ci0rICBzeXN2NCpNUCopCi0rICAgIDs7Ci0rICB1dHM0KikKLSsgICAgOzsKLStlc2FjCi0rCi0rc2VkX3F1b3RlX3N1YnN0PSdzL1woWyJgJFxcXVwpL1xcXDEvZycKLStlc2NhcGVkX3dsPWBlY2hvICJYJHdsIiB8IHNlZCAtZSAncy9eWC8vJyAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0rc2hsaWJleHQ9YGVjaG8gIiRzaHJleHQiIHwgc2VkIC1lICdzLF5cLiwsJ2AKLStlc2NhcGVkX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9YGVjaG8gIlgkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIgfCBzZWQgLWUgJ3MvXlgvLycgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKwotK3NlZCAtZSAncy9eXChbYS16QS1aMC05X10qXCk9L2FjbF9jdl9cMT0vJyA8PEVPRgotKwotKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLSt3bD0iJGVzY2FwZWRfd2wiCi0rCi0rIyBTdGF0aWMgbGlicmFyeSBzdWZmaXggKG5vcm1hbGx5ICJhIikuCi0rbGliZXh0PSIkbGliZXh0IgotKwotKyMgU2hhcmVkIGxpYnJhcnkgc3VmZml4IChub3JtYWxseSAic28iKS4KLStzaGxpYmV4dD0iJHNobGliZXh0IgotKwotKyMgRmxhZyB0byBoYXJkY29kZSBcJGxpYmRpciBpbnRvIGEgYmluYXJ5IGR1cmluZyBsaW5raW5nLgotKyMgVGhpcyBtdXN0IHdvcmsgZXZlbiBpZiBcJGxpYmRpciBkb2VzIG5vdCBleGlzdC4KLStoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSIkZXNjYXBlZF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIgotKwotKyMgV2hldGhlciB3ZSBuZWVkIGEgc2luZ2xlIC1ycGF0aCBmbGFnIHdpdGggYSBzZXBhcmF0ZWQgYXJndW1lbnQuCi0raGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0iJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiCi0rCi0rIyBTZXQgdG8geWVzIGlmIHVzaW5nIERJUi9saWJOQU1FLnNvIGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcyBESVIgaW50byB0aGUKLSsjIHJlc3VsdGluZyBiaW5hcnkuCi0raGFyZGNvZGVfZGlyZWN0PSIkaGFyZGNvZGVfZGlyZWN0IgotKwotKyMgU2V0IHRvIHllcyBpZiB1c2luZyB0aGUgLUxESVIgZmxhZyBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMgRElSIGludG8gdGhlCi0rIyByZXN1bHRpbmcgYmluYXJ5LgotK2hhcmRjb2RlX21pbnVzX0w9IiRoYXJkY29kZV9taW51c19MIgotKwotK0VPRgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9jb25maWd1cmUuaW4JMjAwNC0wOS0xMiAxNDozOTo1NS4xNjE3MDY0ODggLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2NvbmZpZ3VyZS5pbgkyMDA0LTA5LTEyIDE0OjQwOjM1LjgxNjUyNjAxNiAtMDQwMAotQEAgLTI2MCwxMSArMjYwLDEwIEBACi0gQU1fR05VX0dFVFRFWFQKLSAKLSBBQ19ERUZJTkVfVU5RVU9URUQoTE9DQUxFRElSLCIkcHJlZml4LyREQVRBRElSTkFNRSIpCi0tQUNfTElOS19GSUxFUygkbmxzX2N2X2hlYWRlcl9saWJndCwgJG5sc19jdl9oZWFkZXJfaW50bCkKLSAKLS1BQ19PVVRQVVQoW01ha2VmaWxlIGludGwvTWFrZWZpbGUgbGliL01ha2VmaWxlIHRlc3RzdWl0ZS9NYWtlZmlsZSBcCi0rQUNfT1VUUFVUKFtNYWtlZmlsZSBpbnRsL01ha2VmaWxlIGxpYi9NYWtlZmlsZSB0ZXN0c3VpdGUvTWFrZWZpbGUgIG00L01ha2VmaWxlIFwKLSBtYW4vTWFrZWZpbGUgcG8vTWFrZWZpbGUuaW4gc3JjL01ha2VmaWxlIGRlYmlhbi9ydWxlcyBTcGVjZmlsZSBzeXN0eXBlIFwKLSBzcmMvbHJ6c3pidWddLAotLVtzZWQgLWUgIi9QT1RGSUxFUyA9L3IgcG8vUE9URklMRVMiIHBvL01ha2VmaWxlLmluID4gcG8vTWFrZWZpbGU7IAotK1sKLSBjaG1vZCAreCBkZWJpYW4vcnVsZXM7Ci0gdGVzdCAteiAiJENPTkZJR19IRUFERVJTIiB8fCBlY2hvIHRpbWVzdGFtcCA+IHN0YW1wLWhdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2JpbmR0ZXh0ZG9tLmMJMTk5OC0wNC0yNiAwOToyMjozNi4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvYmluZHRleHRkb20uYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjM0Mzc0OTkxMiAtMDQwMAotQEAgLTEsNTkgKzEsNzUgQEAKLSAvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgYmluZHRleHRkb21haW4oMykgZnVuY3Rpb24KLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTgsIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSAgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLSAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpbmNsdWRlIDxzdGRsaWIuaD4KLS0jZWxzZQotLSMgaWZkZWYgSEFWRV9NQUxMT0NfSAotLSMgIGluY2x1ZGUgPG1hbGxvYy5oPgotLSMgZWxzZQotLXZvaWQgZnJlZSAoKTsKLS0jIGVuZGlmCi0tI2VuZGlmCi0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0tI2lmIGRlZmluZWQgSEFWRV9TVFJJTkdfSCB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaWZkZWYgX0xJQkMKLSsjIGluY2x1ZGUgPGxpYmludGwuaD4KLSAjZWxzZQotLSMgaW5jbHVkZSA8c3RyaW5ncy5oPgotLSMgaWZuZGVmIG1lbWNweQotLSMgIGRlZmluZSBtZW1jcHkoRHN0LCBTcmMsIE51bSkgYmNvcHkgKFNyYywgRHN0LCBOdW0pCi0tIyBlbmRpZgotKyMgaW5jbHVkZSAibGliZ251aW50bC5oIgotICNlbmRpZgotKyNpbmNsdWRlICJnZXR0ZXh0UC5oIgotIAotICNpZmRlZiBfTElCQwotLSMgaW5jbHVkZSA8bGliaW50bC5oPgotKy8qIFdlIGhhdmUgdG8gaGFuZGxlIG11bHRpLXRocmVhZGVkIGFwcGxpY2F0aW9ucy4gICovCi0rIyBpbmNsdWRlIDxiaXRzL2xpYmMtbG9jay5oPgotICNlbHNlCi0tIyBpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCi0rLyogUHJvdmlkZSBkdW1teSBpbXBsZW1lbnRhdGlvbiBpZiB0aGlzIGlzIG91dHNpZGUgZ2xpYmMuICAqLwotKyMgZGVmaW5lIF9fbGliY19yd2xvY2tfZGVmaW5lKENMQVNTLCBOQU1FKQotKyMgZGVmaW5lIF9fbGliY19yd2xvY2tfd3Jsb2NrKE5BTUUpCi0rIyBkZWZpbmUgX19saWJjX3J3bG9ja191bmxvY2soTkFNRSkKLSsjZW5kaWYKLSsKLSsvKiBUaGUgaW50ZXJuYWwgdmFyaWFibGVzIGluIHRoZSBzdGFuZGFsb25lIGxpYmludGwuYSBtdXN0IGhhdmUgZGlmZmVyZW50Ci0rICAgbmFtZXMgdGhhbiB0aGUgaW50ZXJuYWwgdmFyaWFibGVzIGluIEdOVSBsaWJjLCBvdGhlcndpc2UgcHJvZ3JhbXMKLSsgICB1c2luZyBsaWJpbnRsLmEgY2Fubm90IGJlIGxpbmtlZCBzdGF0aWNhbGx5LiAgKi8KLSsjaWYgIWRlZmluZWQgX0xJQkMKLSsjIGRlZmluZSBfbmxfZGVmYXVsdF9kaXJuYW1lIGxpYmludGxfbmxfZGVmYXVsdF9kaXJuYW1lCi0rIyBkZWZpbmUgX25sX2RvbWFpbl9iaW5kaW5ncyBsaWJpbnRsX25sX2RvbWFpbl9iaW5kaW5ncwotKyNlbmRpZgotKwotKy8qIFNvbWUgY29tcGlsZXJzLCBsaWtlIFN1bk9TNCBjYywgZG9uJ3QgaGF2ZSBvZmZzZXRvZiBpbiA8c3RkZGVmLmg+LiAgKi8KLSsjaWZuZGVmIG9mZnNldG9mCi0rIyBkZWZpbmUgb2Zmc2V0b2YodHlwZSxpZGVudCkgKChzaXplX3QpJigoKHR5cGUqKTApLT5pZGVudCkpCi0gI2VuZGlmCi0tI2luY2x1ZGUgImdldHRleHQuaCIKLS0jaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLSAKLSAvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0gCi0gLyogQ29udGFpbnMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIG1lc3NhZ2UgY2F0YWxvZ3MuICAqLwotIGV4dGVybiBjb25zdCBjaGFyIF9ubF9kZWZhdWx0X2Rpcm5hbWVbXTsKLSsjaWZkZWYgX0xJQkMKLStleHRlcm4gY29uc3QgY2hhciBfbmxfZGVmYXVsdF9kaXJuYW1lX2ludGVybmFsW10gYXR0cmlidXRlX2hpZGRlbjsKLSsjZWxzZQotKyMgZGVmaW5lIElOVFVTRShuYW1lKSBuYW1lCi0rI2VuZGlmCi0gCi0gLyogTGlzdCB3aXRoIGJpbmRpbmdzIG9mIHNwZWNpZmljIGRvbWFpbnMuICAqLwotIGV4dGVybiBzdHJ1Y3QgYmluZGluZyAqX25sX2RvbWFpbl9iaW5kaW5nczsKLSAKLSsvKiBMb2NrIHZhcmlhYmxlIHRvIHByb3RlY3QgdGhlIGdsb2JhbCBkYXRhIGluIHRoZSBnZXR0ZXh0IGltcGxlbWVudGF0aW9uLiAgKi8KLStfX2xpYmNfcndsb2NrX2RlZmluZSAoZXh0ZXJuLCBfbmxfc3RhdGVfbG9jayBhdHRyaWJ1dGVfaGlkZGVuKQotKwotIAotIC8qIE5hbWVzIGZvciB0aGUgbGliaW50bCBmdW5jdGlvbnMgYXJlIGEgcHJvYmxlbS4gIFRoZXkgbXVzdCBub3QgY2xhc2gKLSAgICB3aXRoIGV4aXN0aW5nIG5hbWVzIGFuZCB0aGV5IHNob3VsZCBmb2xsb3cgQU5TSSBDLiAgQnV0IHRoaXMgc291cmNlCi1AQCAtNjEsMjMgKzc3LDQxIEBACi0gICAgcHJlZml4LiAgU28gd2UgaGF2ZSB0byBtYWtlIGEgZGlmZmVyZW5jZSBoZXJlLiAgKi8KLSAjaWZkZWYgX0xJQkMKLSAjIGRlZmluZSBCSU5EVEVYVERPTUFJTiBfX2JpbmR0ZXh0ZG9tYWluCi0tIyBkZWZpbmUgc3RyZHVwKHN0cikgX19zdHJkdXAgKHN0cikKLSsjIGRlZmluZSBCSU5EX1RFWFRET01BSU5fQ09ERVNFVCBfX2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0Ci0rIyBpZm5kZWYgc3RyZHVwCi0rIyAgZGVmaW5lIHN0cmR1cChzdHIpIF9fc3RyZHVwIChzdHIpCi0rIyBlbmRpZgotICNlbHNlCi0tIyBkZWZpbmUgQklORFRFWFRET01BSU4gYmluZHRleHRkb21haW5fXwotKyMgZGVmaW5lIEJJTkRURVhURE9NQUlOIGxpYmludGxfYmluZHRleHRkb21haW4KLSsjIGRlZmluZSBCSU5EX1RFWFRET01BSU5fQ09ERVNFVCBsaWJpbnRsX2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0Ci0gI2VuZGlmCi0gCi0tLyogU3BlY2lmeSB0aGF0IHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyB3aWxsIGJlIGZvdW5kCi0tICAgaW4gRElSTkFNRSByYXRoZXIgdGhhbiBpbiB0aGUgc3lzdGVtIGxvY2FsZSBkYXRhIGJhc2UuICAqLwotLWNoYXIgKgotLUJJTkRURVhURE9NQUlOIChkb21haW5uYW1lLCBkaXJuYW1lKQotLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKLS0gICAgIGNvbnN0IGNoYXIgKmRpcm5hbWU7Ci0rLyogU3BlY2lmaWVzIHRoZSBkaXJlY3RvcnkgbmFtZSAqRElSTkFNRVAgYW5kIHRoZSBvdXRwdXQgY29kZXNldCAqQ09ERVNFVFAKLSsgICB0byBiZSB1c2VkIGZvciB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cuCi0rICAgSWYgKkRJUk5BTUVQIG9yICpDT0RFU0VUUCBpcyBOVUxMLCB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgaXMgbm90Ci0rICAgbW9kaWZpZWQsIG9ubHkgdGhlIGN1cnJlbnQgdmFsdWUgaXMgcmV0dXJuZWQuCi0rICAgSWYgRElSTkFNRVAgb3IgQ09ERVNFVFAgaXMgTlVMTCwgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIGlzIG5laXRoZXIKLSsgICBtb2RpZmllZCBub3IgcmV0dXJuZWQuICAqLwotK3N0YXRpYyB2b2lkCi0rc2V0X2JpbmRpbmdfdmFsdWVzIChjb25zdCBjaGFyICpkb21haW5uYW1lLAotKwkJICAgIGNvbnN0IGNoYXIgKipkaXJuYW1lcCwgY29uc3QgY2hhciAqKmNvZGVzZXRwKQotIHsKLSAgIHN0cnVjdCBiaW5kaW5nICpiaW5kaW5nOwotKyAgaW50IG1vZGlmaWVkOwotIAotICAgLyogU29tZSBzYW5pdHkgY2hlY2tzLiAgKi8KLSAgIGlmIChkb21haW5uYW1lID09IE5VTEwgfHwgZG9tYWlubmFtZVswXSA9PSAnXDAnKQotLSAgICByZXR1cm4gTlVMTDsKLSsgICAgewotKyAgICAgIGlmIChkaXJuYW1lcCkKLSsJKmRpcm5hbWVwID0gTlVMTDsKLSsgICAgICBpZiAoY29kZXNldHApCi0rCSpjb2Rlc2V0cCA9IE5VTEw7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0rICBfX2xpYmNfcndsb2NrX3dybG9jayAoX25sX3N0YXRlX2xvY2spOwotKwotKyAgbW9kaWZpZWQgPSAwOwotIAotICAgZm9yIChiaW5kaW5nID0gX25sX2RvbWFpbl9iaW5kaW5nczsgYmluZGluZyAhPSBOVUxMOyBiaW5kaW5nID0gYmluZGluZy0+bmV4dCkKLSAgICAgewotQEAgLTkzLDgxICsxMjcsMTczIEBACi0gCX0KLSAgICAgfQotIAotLSAgaWYgKGRpcm5hbWUgPT0gTlVMTCkKLS0gICAgLyogVGhlIGN1cnJlbnQgYmluZGluZyBoYXMgYmUgdG8gcmV0dXJuZWQuICAqLwotLSAgICByZXR1cm4gYmluZGluZyA9PSBOVUxMID8gKGNoYXIgKikgX25sX2RlZmF1bHRfZGlybmFtZSA6IGJpbmRpbmctPmRpcm5hbWU7Ci0tCi0gICBpZiAoYmluZGluZyAhPSBOVUxMKQotICAgICB7Ci0tICAgICAgLyogVGhlIGRvbWFpbiBpcyBhbHJlYWR5IGJvdW5kLiAgSWYgdGhlIG5ldyB2YWx1ZSBhbmQgdGhlIG9sZAotLQkgb25lIGFyZSBlcXVhbCB3ZSBzaW1wbHkgZG8gbm90aGluZy4gIE90aGVyd2lzZSByZXBsYWNlIHRoZQotLQkgb2xkIGJpbmRpbmcuICAqLwotLSAgICAgIGlmIChzdHJjbXAgKGRpcm5hbWUsIGJpbmRpbmctPmRpcm5hbWUpICE9IDApCi0rICAgICAgaWYgKGRpcm5hbWVwKQotIAl7Ci0tCSAgY2hhciAqbmV3X2Rpcm5hbWU7Ci0rCSAgY29uc3QgY2hhciAqZGlybmFtZSA9ICpkaXJuYW1lcDsKLSAKLS0JICBpZiAoc3RyY21wIChkaXJuYW1lLCBfbmxfZGVmYXVsdF9kaXJuYW1lKSA9PSAwKQotLQkgICAgbmV3X2Rpcm5hbWUgPSAoY2hhciAqKSBfbmxfZGVmYXVsdF9kaXJuYW1lOwotKwkgIGlmIChkaXJuYW1lID09IE5VTEwpCi0rCSAgICAvKiBUaGUgY3VycmVudCBiaW5kaW5nIGhhcyBiZSB0byByZXR1cm5lZC4gICovCi0rCSAgICAqZGlybmFtZXAgPSBiaW5kaW5nLT5kaXJuYW1lOwotIAkgIGVsc2UKLSAJICAgIHsKLSsJICAgICAgLyogVGhlIGRvbWFpbiBpcyBhbHJlYWR5IGJvdW5kLiAgSWYgdGhlIG5ldyB2YWx1ZSBhbmQgdGhlIG9sZAotKwkJIG9uZSBhcmUgZXF1YWwgd2Ugc2ltcGx5IGRvIG5vdGhpbmcuICBPdGhlcndpc2UgcmVwbGFjZSB0aGUKLSsJCSBvbGQgYmluZGluZy4gICovCi0rCSAgICAgIGNoYXIgKnJlc3VsdCA9IGJpbmRpbmctPmRpcm5hbWU7Ci0rCSAgICAgIGlmIChzdHJjbXAgKGRpcm5hbWUsIHJlc3VsdCkgIT0gMCkKLSsJCXsKLSsJCSAgaWYgKHN0cmNtcCAoZGlybmFtZSwgSU5UVVNFKF9ubF9kZWZhdWx0X2Rpcm5hbWUpKSA9PSAwKQotKwkJICAgIHJlc3VsdCA9IChjaGFyICopIElOVFVTRShfbmxfZGVmYXVsdF9kaXJuYW1lKTsKLSsJCSAgZWxzZQotKwkJICAgIHsKLSAjaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfU1RSRFVQCi0tCSAgICAgIG5ld19kaXJuYW1lID0gc3RyZHVwIChkaXJuYW1lKTsKLS0JICAgICAgaWYgKG5ld19kaXJuYW1lID09IE5VTEwpCi0tCQlyZXR1cm4gTlVMTDsKLSsJCSAgICAgIHJlc3VsdCA9IHN0cmR1cCAoZGlybmFtZSk7Ci0gI2Vsc2UKLS0JICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoZGlybmFtZSkgKyAxOwotLQkgICAgICBuZXdfZGlybmFtZSA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKLS0JICAgICAgaWYgKG5ld19kaXJuYW1lID09IE5VTEwpCi0tCQlyZXR1cm4gTlVMTDsKLS0KLS0JICAgICAgbWVtY3B5IChuZXdfZGlybmFtZSwgZGlybmFtZSwgbGVuKTsKLSsJCSAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4gKGRpcm5hbWUpICsgMTsKLSsJCSAgICAgIHJlc3VsdCA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKLSsJCSAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChyZXN1bHQgIT0gTlVMTCwgMSkpCi0rCQkJbWVtY3B5IChyZXN1bHQsIGRpcm5hbWUsIGxlbik7Ci0gI2VuZGlmCi0rCQkgICAgfQotKwotKwkJICBpZiAoX19idWlsdGluX2V4cGVjdCAocmVzdWx0ICE9IE5VTEwsIDEpKQotKwkJICAgIHsKLSsJCSAgICAgIGlmIChiaW5kaW5nLT5kaXJuYW1lICE9IElOVFVTRShfbmxfZGVmYXVsdF9kaXJuYW1lKSkKLSsJCQlmcmVlIChiaW5kaW5nLT5kaXJuYW1lKTsKLSsKLSsJCSAgICAgIGJpbmRpbmctPmRpcm5hbWUgPSByZXN1bHQ7Ci0rCQkgICAgICBtb2RpZmllZCA9IDE7Ci0rCQkgICAgfQotKwkJfQotKwkgICAgICAqZGlybmFtZXAgPSByZXN1bHQ7Ci0gCSAgICB9Ci0rCX0KLSAKLS0JICBpZiAoYmluZGluZy0+ZGlybmFtZSAhPSBfbmxfZGVmYXVsdF9kaXJuYW1lKQotLQkgICAgZnJlZSAoYmluZGluZy0+ZGlybmFtZSk7Ci0rICAgICAgaWYgKGNvZGVzZXRwKQotKwl7Ci0rCSAgY29uc3QgY2hhciAqY29kZXNldCA9ICpjb2Rlc2V0cDsKLSAKLS0JICBiaW5kaW5nLT5kaXJuYW1lID0gbmV3X2Rpcm5hbWU7Ci0rCSAgaWYgKGNvZGVzZXQgPT0gTlVMTCkKLSsJICAgIC8qIFRoZSBjdXJyZW50IGJpbmRpbmcgaGFzIGJlIHRvIHJldHVybmVkLiAgKi8KLSsJICAgICpjb2Rlc2V0cCA9IGJpbmRpbmctPmNvZGVzZXQ7Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICAvKiBUaGUgZG9tYWluIGlzIGFscmVhZHkgYm91bmQuICBJZiB0aGUgbmV3IHZhbHVlIGFuZCB0aGUgb2xkCi0rCQkgb25lIGFyZSBlcXVhbCB3ZSBzaW1wbHkgZG8gbm90aGluZy4gIE90aGVyd2lzZSByZXBsYWNlIHRoZQotKwkJIG9sZCBiaW5kaW5nLiAgKi8KLSsJICAgICAgY2hhciAqcmVzdWx0ID0gYmluZGluZy0+Y29kZXNldDsKLSsJICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMIHx8IHN0cmNtcCAoY29kZXNldCwgcmVzdWx0KSAhPSAwKQotKwkJewotKyNpZiBkZWZpbmVkIF9MSUJDIHx8IGRlZmluZWQgSEFWRV9TVFJEVVAKLSsJCSAgcmVzdWx0ID0gc3RyZHVwIChjb2Rlc2V0KTsKLSsjZWxzZQotKwkJICBzaXplX3QgbGVuID0gc3RybGVuIChjb2Rlc2V0KSArIDE7Ci0rCQkgIHJlc3VsdCA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKLSsJCSAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHJlc3VsdCAhPSBOVUxMLCAxKSkKLSsJCSAgICBtZW1jcHkgKHJlc3VsdCwgY29kZXNldCwgbGVuKTsKLSsjZW5kaWYKLSsKLSsJCSAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHJlc3VsdCAhPSBOVUxMLCAxKSkKLSsJCSAgICB7Ci0rCQkgICAgICBpZiAoYmluZGluZy0+Y29kZXNldCAhPSBOVUxMKQotKwkJCWZyZWUgKGJpbmRpbmctPmNvZGVzZXQpOwotKwotKwkJICAgICAgYmluZGluZy0+Y29kZXNldCA9IHJlc3VsdDsKLSsJCSAgICAgIGJpbmRpbmctPmNvZGVzZXRfY250cisrOwotKwkJICAgICAgbW9kaWZpZWQgPSAxOwotKwkJICAgIH0KLSsJCX0KLSsJICAgICAgKmNvZGVzZXRwID0gcmVzdWx0OwotKwkgICAgfQotIAl9Ci0gICAgIH0KLSsgIGVsc2UgaWYgKChkaXJuYW1lcCA9PSBOVUxMIHx8ICpkaXJuYW1lcCA9PSBOVUxMKQotKwkgICAmJiAoY29kZXNldHAgPT0gTlVMTCB8fCAqY29kZXNldHAgPT0gTlVMTCkpCi0rICAgIHsKLSsgICAgICAvKiBTaW1wbHkgcmV0dXJuIHRoZSBkZWZhdWx0IHZhbHVlcy4gICovCi0rICAgICAgaWYgKGRpcm5hbWVwKQotKwkqZGlybmFtZXAgPSBJTlRVU0UoX25sX2RlZmF1bHRfZGlybmFtZSk7Ci0rICAgICAgaWYgKGNvZGVzZXRwKQotKwkqY29kZXNldHAgPSBOVUxMOwotKyAgICB9Ci0gICBlbHNlCi0gICAgIHsKLSAgICAgICAvKiBXZSBoYXZlIHRvIGNyZWF0ZSBhIG5ldyBiaW5kaW5nLiAgKi8KLS0gICAgICBzaXplX3QgbGVuOwotKyAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4gKGRvbWFpbm5hbWUpICsgMTsKLSAgICAgICBzdHJ1Y3QgYmluZGluZyAqbmV3X2JpbmRpbmcgPQotLQkoc3RydWN0IGJpbmRpbmcgKikgbWFsbG9jIChzaXplb2YgKCpuZXdfYmluZGluZykpOwotKwkoc3RydWN0IGJpbmRpbmcgKikgbWFsbG9jIChvZmZzZXRvZiAoc3RydWN0IGJpbmRpbmcsIGRvbWFpbm5hbWUpICsgbGVuKTsKLSAKLS0gICAgICBpZiAobmV3X2JpbmRpbmcgPT0gTlVMTCkKLS0JcmV0dXJuIE5VTEw7Ci0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKG5ld19iaW5kaW5nID09IE5VTEwsIDApKQotKwlnb3RvIGZhaWxlZDsKLSAKLSsgICAgICBtZW1jcHkgKG5ld19iaW5kaW5nLT5kb21haW5uYW1lLCBkb21haW5uYW1lLCBsZW4pOwotKwotKyAgICAgIGlmIChkaXJuYW1lcCkKLSsJewotKwkgIGNvbnN0IGNoYXIgKmRpcm5hbWUgPSAqZGlybmFtZXA7Ci0rCi0rCSAgaWYgKGRpcm5hbWUgPT0gTlVMTCkKLSsJICAgIC8qIFRoZSBkZWZhdWx0IHZhbHVlLiAgKi8KLSsJICAgIGRpcm5hbWUgPSBJTlRVU0UoX25sX2RlZmF1bHRfZGlybmFtZSk7Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICBpZiAoc3RyY21wIChkaXJuYW1lLCBJTlRVU0UoX25sX2RlZmF1bHRfZGlybmFtZSkpID09IDApCi0rCQlkaXJuYW1lID0gSU5UVVNFKF9ubF9kZWZhdWx0X2Rpcm5hbWUpOwotKwkgICAgICBlbHNlCi0rCQl7Ci0rCQkgIGNoYXIgKnJlc3VsdDsKLSAjaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfU1RSRFVQCi0tICAgICAgbmV3X2JpbmRpbmctPmRvbWFpbm5hbWUgPSBzdHJkdXAgKGRvbWFpbm5hbWUpOwotLSAgICAgIGlmIChuZXdfYmluZGluZy0+ZG9tYWlubmFtZSA9PSBOVUxMKQotLQlyZXR1cm4gTlVMTDsKLSsJCSAgcmVzdWx0ID0gc3RyZHVwIChkaXJuYW1lKTsKLSsJCSAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHJlc3VsdCA9PSBOVUxMLCAwKSkKLSsJCSAgICBnb3RvIGZhaWxlZF9kaXJuYW1lOwotICNlbHNlCi0tICAgICAgbGVuID0gc3RybGVuIChkb21haW5uYW1lKSArIDE7Ci0tICAgICAgbmV3X2JpbmRpbmctPmRvbWFpbm5hbWUgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7Ci0tICAgICAgaWYgKG5ld19iaW5kaW5nLT5kb21haW5uYW1lID09IE5VTEwpCi0tCXJldHVybiBOVUxMOwotLSAgICAgIG1lbWNweSAobmV3X2JpbmRpbmctPmRvbWFpbm5hbWUsIGRvbWFpbm5hbWUsIGxlbik7Ci0rCQkgIHNpemVfdCBsZW4gPSBzdHJsZW4gKGRpcm5hbWUpICsgMTsKLSsJCSAgcmVzdWx0ID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOwotKwkJICBpZiAoX19idWlsdGluX2V4cGVjdCAocmVzdWx0ID09IE5VTEwsIDApKQotKwkJICAgIGdvdG8gZmFpbGVkX2Rpcm5hbWU7Ci0rCQkgIG1lbWNweSAocmVzdWx0LCBkaXJuYW1lLCBsZW4pOwotICNlbmRpZgotLQotLSAgICAgIGlmIChzdHJjbXAgKGRpcm5hbWUsIF9ubF9kZWZhdWx0X2Rpcm5hbWUpID09IDApCi0tCW5ld19iaW5kaW5nLT5kaXJuYW1lID0gKGNoYXIgKikgX25sX2RlZmF1bHRfZGlybmFtZTsKLSsJCSAgZGlybmFtZSA9IHJlc3VsdDsKLSsJCX0KLSsJICAgIH0KLSsJICAqZGlybmFtZXAgPSBkaXJuYW1lOwotKwkgIG5ld19iaW5kaW5nLT5kaXJuYW1lID0gKGNoYXIgKikgZGlybmFtZTsKLSsJfQotICAgICAgIGVsc2UKLSsJLyogVGhlIGRlZmF1bHQgdmFsdWUuICAqLwotKwluZXdfYmluZGluZy0+ZGlybmFtZSA9IChjaGFyICopIElOVFVTRShfbmxfZGVmYXVsdF9kaXJuYW1lKTsKLSsKLSsgICAgICBuZXdfYmluZGluZy0+Y29kZXNldF9jbnRyID0gMDsKLSsKLSsgICAgICBpZiAoY29kZXNldHApCi0gCXsKLSsJICBjb25zdCBjaGFyICpjb2Rlc2V0ID0gKmNvZGVzZXRwOwotKwotKwkgIGlmIChjb2Rlc2V0ICE9IE5VTEwpCi0rCSAgICB7Ci0rCSAgICAgIGNoYXIgKnJlc3VsdDsKLSsKLSAjaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfU1RSRFVQCi0tCSAgbmV3X2JpbmRpbmctPmRpcm5hbWUgPSBzdHJkdXAgKGRpcm5hbWUpOwotLQkgIGlmIChuZXdfYmluZGluZy0+ZGlybmFtZSA9PSBOVUxMKQotLQkgICAgcmV0dXJuIE5VTEw7Ci0rCSAgICAgIHJlc3VsdCA9IHN0cmR1cCAoY29kZXNldCk7Ci0rCSAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChyZXN1bHQgPT0gTlVMTCwgMCkpCi0rCQlnb3RvIGZhaWxlZF9jb2Rlc2V0OwotICNlbHNlCi0tCSAgbGVuID0gc3RybGVuIChkaXJuYW1lKSArIDE7Ci0tCSAgbmV3X2JpbmRpbmctPmRpcm5hbWUgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7Ci0tCSAgaWYgKG5ld19iaW5kaW5nLT5kaXJuYW1lID09IE5VTEwpCi0tCSAgICByZXR1cm4gTlVMTDsKLS0JICBtZW1jcHkgKG5ld19iaW5kaW5nLT5kaXJuYW1lLCBkaXJuYW1lLCBsZW4pOwotKwkgICAgICBzaXplX3QgbGVuID0gc3RybGVuIChjb2Rlc2V0KSArIDE7Ci0rCSAgICAgIHJlc3VsdCA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKLSsJICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHJlc3VsdCA9PSBOVUxMLCAwKSkKLSsJCWdvdG8gZmFpbGVkX2NvZGVzZXQ7Ci0rCSAgICAgIG1lbWNweSAocmVzdWx0LCBjb2Rlc2V0LCBsZW4pOwotICNlbmRpZgotKwkgICAgICBjb2Rlc2V0ID0gcmVzdWx0OwotKwkgICAgICBuZXdfYmluZGluZy0+Y29kZXNldF9jbnRyKys7Ci0rCSAgICB9Ci0rCSAgKmNvZGVzZXRwID0gY29kZXNldDsKLSsJICBuZXdfYmluZGluZy0+Y29kZXNldCA9IChjaGFyICopIGNvZGVzZXQ7Ci0gCX0KLSsgICAgICBlbHNlCi0rCW5ld19iaW5kaW5nLT5jb2Rlc2V0ID0gTlVMTDsKLSAKLSAgICAgICAvKiBOb3cgZW5xdWV1ZSBpdC4gICovCi0gICAgICAgaWYgKF9ubF9kb21haW5fYmluZGluZ3MgPT0gTlVMTAotQEAgLTE4NywxMyArMzEzLDUxIEBACi0gCSAgYmluZGluZy0+bmV4dCA9IG5ld19iaW5kaW5nOwotIAl9Ci0gCi0tICAgICAgYmluZGluZyA9IG5ld19iaW5kaW5nOwotKyAgICAgIG1vZGlmaWVkID0gMTsKLSsKLSsgICAgICAvKiBIZXJlIHdlIGRlYWwgd2l0aCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcy4gICovCi0rICAgICAgaWYgKDApCi0rCXsKLSsJZmFpbGVkX2NvZGVzZXQ6Ci0rCSAgaWYgKG5ld19iaW5kaW5nLT5kaXJuYW1lICE9IElOVFVTRShfbmxfZGVmYXVsdF9kaXJuYW1lKSkKLSsJICAgIGZyZWUgKG5ld19iaW5kaW5nLT5kaXJuYW1lKTsKLSsJZmFpbGVkX2Rpcm5hbWU6Ci0rCSAgZnJlZSAobmV3X2JpbmRpbmcpOwotKwlmYWlsZWQ6Ci0rCSAgaWYgKGRpcm5hbWVwKQotKwkgICAgKmRpcm5hbWVwID0gTlVMTDsKLSsJICBpZiAoY29kZXNldHApCi0rCSAgICAqY29kZXNldHAgPSBOVUxMOwotKwl9Ci0gICAgIH0KLSAKLS0gIHJldHVybiBiaW5kaW5nLT5kaXJuYW1lOwotKyAgLyogSWYgd2UgbW9kaWZpZWQgYW55IGJpbmRpbmcsIHdlIGZsdXNoIHRoZSBjYWNoZXMuICAqLwotKyAgaWYgKG1vZGlmaWVkKQotKyAgICArK19ubF9tc2dfY2F0X2NudHI7Ci0rCi0rICBfX2xpYmNfcndsb2NrX3VubG9jayAoX25sX3N0YXRlX2xvY2spOwotK30KLSsKLSsvKiBTcGVjaWZ5IHRoYXQgdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIHdpbGwgYmUgZm91bmQKLSsgICBpbiBESVJOQU1FIHJhdGhlciB0aGFuIGluIHRoZSBzeXN0ZW0gbG9jYWxlIGRhdGEgYmFzZS4gICovCi0rY2hhciAqCi0rQklORFRFWFRET01BSU4gKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKmRpcm5hbWUpCi0rewotKyAgc2V0X2JpbmRpbmdfdmFsdWVzIChkb21haW5uYW1lLCAmZGlybmFtZSwgTlVMTCk7Ci0rICByZXR1cm4gKGNoYXIgKikgZGlybmFtZTsKLSt9Ci0rCi0rLyogU3BlY2lmeSB0aGUgY2hhcmFjdGVyIGVuY29kaW5nIGluIHdoaWNoIHRoZSBtZXNzYWdlcyBmcm9tIHRoZQotKyAgIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIHdpbGwgYmUgcmV0dXJuZWQuICAqLwotK2NoYXIgKgotK0JJTkRfVEVYVERPTUFJTl9DT0RFU0VUIChjb25zdCBjaGFyICpkb21haW5uYW1lLCBjb25zdCBjaGFyICpjb2Rlc2V0KQotK3sKLSsgIHNldF9iaW5kaW5nX3ZhbHVlcyAoZG9tYWlubmFtZSwgTlVMTCwgJmNvZGVzZXQpOwotKyAgcmV0dXJuIChjaGFyICopIGNvZGVzZXQ7Ci0gfQotIAotICNpZmRlZiBfTElCQwotLS8qIEFsaWFzIGZvciBmdW5jdGlvbiBuYW1lIGluIEdOVSBDIExpYnJhcnkuICAqLwotKy8qIEFsaWFzZXMgZm9yIGZ1bmN0aW9uIG5hbWVzIGluIEdOVSBDIExpYnJhcnkuICAqLwotIHdlYWtfYWxpYXMgKF9fYmluZHRleHRkb21haW4sIGJpbmR0ZXh0ZG9tYWluKTsKLSt3ZWFrX2FsaWFzIChfX2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0LCBiaW5kX3RleHRkb21haW5fY29kZXNldCk7Ci0gI2VuZGlmCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvY2F0LWNvbXBhdC5jCTE5OTgtMDQtMjYgMDk6MjI6MzcuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2NhdC1jb21wYXQuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotQEAgLTEsMjYyICswLDAgQEAKLS0vKiBDb21wYXRpYmlsaXR5IGNvZGUgZm9yIGdldHRleHQtdXNpbmctY2F0Z2V0cyBpbnRlcmZhY2UuCi0tICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLQotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0tICAgYW55IGxhdGVyIHZlcnNpb24uCi0tCi0tICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0KLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0tCi0tI2lmZGVmIEhBVkVfQ09ORklHX0gKLS0jIGluY2x1ZGUgPGNvbmZpZy5oPgotLSNlbmRpZgotLQotLSNpbmNsdWRlIDxzdGRpby5oPgotLQotLSNpZmRlZiBTVERDX0hFQURFUlMKLS0jIGluY2x1ZGUgPHN0ZGxpYi5oPgotLSMgaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2Vsc2UKLS1jaGFyICpnZXRlbnYgKCk7Ci0tIyBpZmRlZiBIQVZFX01BTExPQ19ICi0tIyAgaW5jbHVkZSA8bWFsbG9jLmg+Ci0tIyBlbmRpZgotLSNlbmRpZgotLQotLSNpZmRlZiBIQVZFX05MX1RZUEVTX0gKLS0jIGluY2x1ZGUgPG5sX3R5cGVzLmg+Ci0tI2VuZGlmCi0tCi0tI2luY2x1ZGUgImxpYmdldHRleHQuaCIKLS0KLS0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0tCi0tLyogWFBHMyBkZWZpbmVzIHRoZSByZXN1bHQgb2YgYHNldGxvY2FsZSAoY2F0ZWdvcnksIE5VTEwpJyBhczoKLS0gICBgYERpcmVjdHMgYHNldGxvY2FsZSgpJyB0byBxdWVyeSBgY2F0ZWdvcnknIGFuZCByZXR1cm4gdGhlIGN1cnJlbnQKLS0gICAgIHNldHRpbmcgb2YgYGxvY2FsJy4nJwotLSAgIEhvd2V2ZXIgaXQgZG9lcyBub3Qgc3BlY2lmeSB0aGUgZXhhY3QgZm9ybWF0LiAgQW5kIGV2ZW4gd29yc2U6IFBPU0lYCi0tICAgZGVmaW5lcyB0aGlzIG5vdCBhdCBhbGwuICBTbyB3ZSBjYW4gdXNlIHRoaXMgZmVhdHVyZSBvbmx5IG9uIHNlbGVjdGVkCi0tICAgc3lzdGVtIChlLmcuIHRob3NlIHVzaW5nIEdOVSBDIExpYnJhcnkpLiAgKi8KLS0jaWZkZWYgX0xJQkMKLS0jIGRlZmluZSBIQVZFX0xPQ0FMRV9OVUxMCi0tI2VuZGlmCi0tCi0tLyogVGhlIGNhdGFsb2cgZGVzY3JpcHRvci4gICovCi0tc3RhdGljIG5sX2NhdGQgY2F0YWxvZyA9IChubF9jYXRkKSAtMTsKLS0KLS0vKiBOYW1lIG9mIHRoZSBkZWZhdWx0IGNhdGFsb2cuICAqLwotLXN0YXRpYyBjb25zdCBjaGFyIGRlZmF1bHRfY2F0YWxvZ19uYW1lW10gPSAibWVzc2FnZXMiOwotLQotLS8qIE5hbWUgb2YgY3VycmVudGx5IHVzZWQgY2F0YWxvZy4gICovCi0tc3RhdGljIGNvbnN0IGNoYXIgKmNhdGFsb2dfbmFtZSA9IGRlZmF1bHRfY2F0YWxvZ19uYW1lOwotLQotLS8qIEdldCBJRCBmb3IgZ2l2ZW4gc3RyaW5nLiAgSWYgbm90IGZvdW5kIHJldHVybiAtMS4gICovCi0tc3RhdGljIGludCBtc2dfdG9fY2F0X2lkIFBBUkFNUyAoKGNvbnN0IGNoYXIgKm1zZykpOwotLQotLS8qIFN1YnN0aXR1dGlvbiBmb3Igc3lzdGVtcyBsYWNraW5nIHRoaXMgZnVuY3Rpb24gaW4gdGhlaXIgQyBsaWJyYXJ5LiAgKi8KLS0jaWYgIV9MSUJDICYmICFIQVZFX1NUUENQWQotLXN0YXRpYyBjaGFyICpzdHBjcHkgUEFSQU1TICgoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjKSk7Ci0tI2VuZGlmCi0tCi0tCi0tLyogU2V0IGN1cnJlbnRseSB1c2VkIGRvbWFpbi9jYXRhbG9nLiAgKi8KLS1jaGFyICoKLS10ZXh0ZG9tYWluIChkb21haW5uYW1lKQotLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKLS17Ci0tICBubF9jYXRkIG5ld19jYXRhbG9nOwotLSAgY2hhciAqbmV3X25hbWU7Ci0tICBzaXplX3QgbmV3X25hbWVfbGVuOwotLSAgY2hhciAqbGFuZzsKLS0KLS0jaWYgZGVmaW5lZCBIQVZFX1NFVExPQ0FMRSAmJiBkZWZpbmVkIEhBVkVfTENfTUVTU0FHRVMgXAotLSAgICAmJiBkZWZpbmVkIEhBVkVfTE9DQUxFX05VTEwKLS0gIGxhbmcgPSBzZXRsb2NhbGUgKExDX01FU1NBR0VTLCBOVUxMKTsKLS0jZWxzZQotLSAgbGFuZyA9IGdldGVudiAoIkxDX0FMTCIpOwotLSAgaWYgKGxhbmcgPT0gTlVMTCB8fCBsYW5nWzBdID09ICdcMCcpCi0tICAgIHsKLS0gICAgICBsYW5nID0gZ2V0ZW52ICgiTENfTUVTU0FHRVMiKTsKLS0gICAgICBpZiAobGFuZyA9PSBOVUxMIHx8IGxhbmdbMF0gPT0gJ1wwJykKLS0JbGFuZyA9IGdldGVudiAoIkxBTkciKTsKLS0gICAgfQotLSNlbmRpZgotLSAgaWYgKGxhbmcgPT0gTlVMTCB8fCBsYW5nWzBdID09ICdcMCcpCi0tICAgIGxhbmcgPSAiQyI7Ci0tCi0tICAvKiBTZWUgd2hldGhlciBuYW1lIG9mIGN1cnJlbnRseSB1c2VkIGRvbWFpbiBpcyBhc2tlZC4gICovCi0tICBpZiAoZG9tYWlubmFtZSA9PSBOVUxMKQotLSAgICByZXR1cm4gKGNoYXIgKikgY2F0YWxvZ19uYW1lOwotLQotLSAgaWYgKGRvbWFpbm5hbWVbMF0gPT0gJ1wwJykKLS0gICAgZG9tYWlubmFtZSA9IGRlZmF1bHRfY2F0YWxvZ19uYW1lOwotLQotLSAgLyogQ29tcHV0ZSBsZW5ndGggb2YgYWRkZWQgcGF0aCBlbGVtZW50LiAgKi8KLS0gIG5ld19uYW1lX2xlbiA9IHNpemVvZiAoTE9DQUxFRElSKSAtIDEgKyAxICsgc3RybGVuIChsYW5nKQotLQkJICsgc2l6ZW9mICgiL0xDX01FU1NBR0VTLyIpIC0gMSArIHNpemVvZiAoUEFDS0FHRSkgLSAxCi0tCQkgKyBzaXplb2YgKCIuY2F0Iik7Ci0tCi0tICBuZXdfbmFtZSA9IChjaGFyICopIG1hbGxvYyAobmV3X25hbWVfbGVuKTsKLS0gIGlmIChuZXdfbmFtZSA9PSBOVUxMKQotLSAgICByZXR1cm4gTlVMTDsKLS0KLS0gIHN0cmNweSAobmV3X25hbWUsIFBBQ0tBR0UpOwotLSAgbmV3X2NhdGFsb2cgPSBjYXRvcGVuIChuZXdfbmFtZSwgMCk7Ci0tCi0tICBpZiAobmV3X2NhdGFsb2cgPT0gKG5sX2NhdGQpIC0xKQotLSAgICB7Ci0tICAgICAgLyogTkxTUEFUSCBzZWFyY2ggZGlkbid0IHdvcmssIHRyeSBhYnNvbHV0ZSBwYXRoICovCi0tICAgICAgc3ByaW50ZiAobmV3X25hbWUsICIlcy8lcy9MQ19NRVNTQUdFUy8lcy5jYXQiLCBMT0NBTEVESVIsIGxhbmcsCi0tCSAgICAgICBQQUNLQUdFKTsKLS0gICAgICBuZXdfY2F0YWxvZyA9IGNhdG9wZW4gKG5ld19uYW1lLCAwKTsKLS0KLS0gICAgICBpZiAobmV3X2NhdGFsb2cgPT0gKG5sX2NhdGQpIC0xKQotLQl7Ci0tCSAgZnJlZSAobmV3X25hbWUpOwotLQkgIHJldHVybiAoY2hhciAqKSBjYXRhbG9nX25hbWU7Ci0tCX0KLS0gICAgfQotLQotLSAgLyogQ2xvc2Ugb2xkIGNhdGFsb2cuICAqLwotLSAgaWYgKGNhdGFsb2cgIT0gKG5sX2NhdGQpIC0xKQotLSAgICBjYXRjbG9zZSAoY2F0YWxvZyk7Ci0tICBpZiAoY2F0YWxvZ19uYW1lICE9IGRlZmF1bHRfY2F0YWxvZ19uYW1lKQotLSAgICBmcmVlICgoY2hhciAqKSBjYXRhbG9nX25hbWUpOwotLQotLSAgY2F0YWxvZyA9IG5ld19jYXRhbG9nOwotLSAgY2F0YWxvZ19uYW1lID0gbmV3X25hbWU7Ci0tCi0tICByZXR1cm4gKGNoYXIgKikgY2F0YWxvZ19uYW1lOwotLX0KLS0KLS1jaGFyICoKLS1iaW5kdGV4dGRvbWFpbiAoZG9tYWlubmFtZSwgZGlybmFtZSkKLS0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7Ci0tICAgICBjb25zdCBjaGFyICpkaXJuYW1lOwotLXsKLS0jaWYgSEFWRV9TRVRFTlYgfHwgSEFWRV9QVVRFTlYKLS0gIGNoYXIgKm9sZF92YWwsICpuZXdfdmFsLCAqY3A7Ci0tICBzaXplX3QgbmV3X3ZhbF9sZW47Ci0tCi0tICAvKiBUaGlzIGRvZXMgbm90IG1ha2UgbXVjaCBzZW5zZSBoZXJlIGJ1dCB0byBiZSBjb21wYXRpYmxlIGRvIGl0LiAgKi8KLS0gIGlmIChkb21haW5uYW1lID09IE5VTEwpCi0tICAgIHJldHVybiBOVUxMOwotLQotLSAgLyogQ29tcHV0ZSBsZW5ndGggb2YgYWRkZWQgcGF0aCBlbGVtZW50LiAgSWYgd2UgdXNlIHNldGVudiB3ZSBkb24ndCBuZWVkCi0tICAgICB0aGUgZmlyc3QgYnl0cyBmb3IgTkxTUEFUSD0sIGJ1dCB3aHkgY29tcGxpY2F0ZSB0aGUgY29kZSBmb3IgdGhpcwotLSAgICAgcGVhbnV0cy4gICovCi0tICBuZXdfdmFsX2xlbiA9IHNpemVvZiAoIk5MU1BBVEg9IikgLSAxICsgc3RybGVuIChkaXJuYW1lKQotLQkJKyBzaXplb2YgKCIvJUwvTENfTUVTU0FHRVMvJU4uY2F0Iik7Ci0tCi0tICBvbGRfdmFsID0gZ2V0ZW52ICgiTkxTUEFUSCIpOwotLSAgaWYgKG9sZF92YWwgPT0gTlVMTCB8fCBvbGRfdmFsWzBdID09ICdcMCcpCi0tICAgIHsKLS0gICAgICBvbGRfdmFsID0gTlVMTDsKLS0gICAgICBuZXdfdmFsX2xlbiArPSAxICsgc2l6ZW9mIChMT0NBTEVESVIpIC0gMQotLQkgICAgICAgICAgICAgKyBzaXplb2YgKCIvJUwvTENfTUVTU0FHRVMvJU4uY2F0Iik7Ci0tICAgIH0KLS0gIGVsc2UKLS0gICAgbmV3X3ZhbF9sZW4gKz0gc3RybGVuIChvbGRfdmFsKTsKLS0KLS0gIG5ld192YWwgPSAoY2hhciAqKSBtYWxsb2MgKG5ld192YWxfbGVuKTsKLS0gIGlmIChuZXdfdmFsID09IE5VTEwpCi0tICAgIHJldHVybiBOVUxMOwotLQotLSMgaWYgSEFWRV9TRVRFTlYKLS0gIGNwID0gbmV3X3ZhbDsKLS0jIGVsc2UKLS0gIGNwID0gc3RwY3B5IChuZXdfdmFsLCAiTkxTUEFUSD0iKTsKLS0jIGVuZGlmCi0tCi0tICBjcCA9IHN0cGNweSAoY3AsIGRpcm5hbWUpOwotLSAgY3AgPSBzdHBjcHkgKGNwLCAiLyVML0xDX01FU1NBR0VTLyVOLmNhdDoiKTsKLS0KLS0gIGlmIChvbGRfdmFsID09IE5VTEwpCi0tICAgIHsKLS0jIGlmIF9fU1REQ19fCi0tICAgICAgc3RwY3B5IChjcCwgTE9DQUxFRElSICIvJUwvTENfTUVTU0FHRVMvJU4uY2F0Iik7Ci0tIyBlbHNlCi0tCi0tICAgICAgY3AgPSBzdHBjcHkgKGNwLCBMT0NBTEVESVIpOwotLSAgICAgIHN0cGNweSAoY3AsICIvJUwvTENfTUVTU0FHRVMvJU4uY2F0Iik7Ci0tIyBlbmRpZgotLSAgICB9Ci0tICBlbHNlCi0tICAgIHN0cGNweSAoY3AsIG9sZF92YWwpOwotLQotLSMgaWYgSEFWRV9TRVRFTlYKLS0gIHNldGVudiAoIk5MU1BBVEgiLCBuZXdfdmFsLCAxKTsKLS0gIGZyZWUgKG5ld192YWwpOwotLSMgZWxzZQotLSAgcHV0ZW52IChuZXdfdmFsKTsKLS0gIC8qIERvICpub3QqIGZyZWUgdGhlIGVudmlyb25tZW50IGVudHJ5IHdlIGp1c3QgZW50ZXJlZC4gIEl0IGlzIHVzZWQKLS0gICAgIGZyb20gbm93IG9uLiAgICovCi0tIyBlbmRpZgotLQotLSNlbmRpZgotLQotLSAgcmV0dXJuIChjaGFyICopIGRvbWFpbm5hbWU7Ci0tfQotLQotLSN1bmRlZiBnZXR0ZXh0Ci0tY2hhciAqCi0tZ2V0dGV4dCAobXNnKQotLSAgICAgY29uc3QgY2hhciAqbXNnOwotLXsKLS0gIGludCBtc2dpZDsKLS0KLS0gIGlmIChtc2cgPT0gTlVMTCB8fCBjYXRhbG9nID09IChubF9jYXRkKSAtMSkKLS0gICAgcmV0dXJuIChjaGFyICopIG1zZzsKLS0KLS0gIC8qIEdldCB0aGUgbWVzc2FnZSBmcm9tIHRoZSBjYXRhbG9nLiAgV2UgYWx3YXlzIHVzZSBzZXQgbnVtYmVyIDEuCi0tICAgICBUaGUgbWVzc2FnZSBJRCBpcyBjb21wdXRlZCBieSB0aGUgZnVuY3Rpb24gYG1zZ190b19jYXRfaWQnCi0tICAgICB3aGljaCB3b3JrcyBvbiB0aGUgdGFibGUgZ2VuZXJhdGVkIGJ5IGBwby10by10YmwnLiAgKi8KLS0gIG1zZ2lkID0gbXNnX3RvX2NhdF9pZCAobXNnKTsKLS0gIGlmIChtc2dpZCA9PSAtMSkKLS0gICAgcmV0dXJuIChjaGFyICopIG1zZzsKLS0KLS0gIHJldHVybiBjYXRnZXRzIChjYXRhbG9nLCAxLCBtc2dpZCwgKGNoYXIgKikgbXNnKTsKLS19Ci0tCi0tLyogTG9vayB0aHJvdWdoIHRoZSB0YWJsZSBgX21zZ190YmwnIHdoaWNoIGhhcyBgX21zZ190YmxfbGVuZ3RoJyBlbnRyaWVzCi0tICAgZm9yIHRoZSBvbmUgZXF1YWwgdG8gbXNnLiAgSWYgaXQgaXMgZm91bmQgcmV0dXJuIHRoZSBJRC4gIEluIGNhc2Ugd2hlbgotLSAgIHRoZSBzdHJpbmcgaXMgbm90IGZvdW5kIHJldHVybiAtMS4gICovCi0tc3RhdGljIGludAotLW1zZ190b19jYXRfaWQgKG1zZykKLS0gICAgIGNvbnN0IGNoYXIgKm1zZzsKLS17Ci0tICBpbnQgY250OwotLQotLSAgZm9yIChjbnQgPSAwOyBjbnQgPCBfbXNnX3RibF9sZW5ndGg7ICsrY250KQotLSAgICBpZiAoc3RyY21wIChtc2csIF9tc2dfdGJsW2NudF0uX21zZykgPT0gMCkKLS0gICAgICByZXR1cm4gX21zZ190YmxbY250XS5fbXNnX251bWJlcjsKLS0KLS0gIHJldHVybiAtMTsKLS19Ci0tCi0tCi0tLyogQEAgYmVnaW4gb2YgZXBpbG9nIEBAICovCi0tCi0tLyogV2UgZG9uJ3Qgd2FudCBsaWJpbnRsLmEgdG8gZGVwZW5kIG9uIGFueSBvdGhlciBsaWJyYXJ5LiAgU28gd2UKLS0gICBhdm9pZCB0aGUgbm9uLXN0YW5kYXJkIGZ1bmN0aW9uIHN0cGNweS4gIEluIEdOVSBDIExpYnJhcnkgdGhpcwotLSAgIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSwgdGhvdWdoLiAgQWxzbyBhbGxvdyB0aGUgc3ltYm9sIEhBVkVfU1RQQ1BZCi0tICAgdG8gYmUgZGVmaW5lZC4gICovCi0tI2lmICFfTElCQyAmJiAhSEFWRV9TVFBDUFkKLS1zdGF0aWMgY2hhciAqCi0tc3RwY3B5IChkZXN0LCBzcmMpCi0tICAgICBjaGFyICpkZXN0OwotLSAgICAgY29uc3QgY2hhciAqc3JjOwotLXsKLS0gIHdoaWxlICgoKmRlc3QrKyA9ICpzcmMrKykgIT0gJ1wwJykKLS0gICAgLyogRG8gbm90aGluZy4gKi8gOwotLSAgcmV0dXJuIGRlc3QgLSAxOwotLX0KLS0jZW5kaWYKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9DaGFuZ2VMb2cJMTk5OC0wNC0yNiAwOToyMjozNS4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvQ2hhbmdlTG9nCTIwMDQtMDktMTIgMTQ6NDA6MzQuMzQ5NzQ5MDAwIC0wNDAwCi1AQCAtMSwxMDIyICsxLDQgQEAKLS0xOTk3LTA5LTA2IDAyOjEwICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBpbnRsaC5pbnN0LmluOiBSZWZvcm1hdCBjb3B5cmlnaHQuCi0tCi0tMTk5Ny0wOC0xOSAxNToyMiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogZGNnZXR0ZXh0LmMgKERDR0VUVEVYVCk6IFJlbW92ZSB3cm9uZyBjb21tZW50LgotLQotLTE5OTctMDgtMTYgMDA6MTMgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsLWRhdGEpOiBEb24ndCBjaGFuZ2UgZGlyZWN0b3J5IHRvIGluc3RhbGwuCi0tCi0tMTk5Ny0wOC0wMSAxNDozMCAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogY2F0LWNvbXBhdC5jOiBGaXggY29weXJpZ2h0LgotLQotLQkqIGxvY2FsZWFsaWFzLmM6IERvbid0IGRlZmluZSBzdHJjaHIgdW5sZXNzICFIQVZFX1NUUkNIUi4KLS0KLS0JKiBsb2FkbXNnY2F0LmM6IFVwZGF0ZSBjb3B5cmlnaHQuICBGaXggdHlwb3MuCi0tCi0tCSogbDEwbmZsaXN0LmM6IERvbid0IGRlZmluZSBzdHJjaHIgdW5sZXNzICFIQVZFX1NUUkNIUi4KLS0JKF9ubF9tYWtlX2wxMG5mbGlzdCk6IEhhbmRsZSBzcG9uc29yIGFuZCByZXZpc2lvbiBjb3JyZWN0bHkuCi0tCi0tCSogZ2V0dGV4dC5jOiBVcGRhdGUgY29weXJpZ2h0LgotLQkqIGdldHRleHQuaDogTGlrZXdpc2UuCi0tCSogaGFzaC1zdHJpbmcuaDogTGlrZXdpc2UuCi0tCi0tCSogZmluZGRvbWFpbi5jOiBSZW1vYXZlIGRlYWQgY29kZS4gIERlZmluZSBzdHJjaHIgb25seSBpZgotLQkhSEFWRV9TVFJDSFIuCi0tCi0tCSogZXhwbG9kZW5hbWUuYzogSW5jbHVkZSA8c3lzL3R5cGVzLmg+LgotLQotLQkqIGV4cGxvZGVuYW1lLmM6IFJlZm9ybWF0IGNvcHlyaWdodCB0ZXh0LgotLQkoX25sX2V4cGxvZGVfbmFtZSk6IEZpeCB0eXBvLgotLQotLQkqIGRjZ2V0dGV4dC5jOiBEZWZpbmUgYW5kIHVzZSBfX3NldF9lcnJuby4KLS0JKGd1ZXNzX2NhdGVnb3J5X3ZhbHVlKTogRG9uJ3QgdXNlIHNldGxvY2FsZSBpZiBIQVZFX0xDX01FU1NBR0VTIGlzCi0tCW5vdCBkZWZpbmVkLgotLQotLQkqIGJpbmR0ZXh0ZG9tLmM6IFByZXR0eSBwcmludGluZy4KLS0KLS0xOTk3LTA1LTAxIDAyOjI1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBkY2dldHRleHQuYyAoZ3Vlc3NfY2F0ZWdvcnlfdmFsdWUpOiBEb24ndCBkZXBlbmQgb24KLS0JSEFWRV9MQ19NRVNTQUdFUy4gIFdlIGRvbid0IG5lZWQgdGhlIG1hY3JvIGhlcmUuCi0tCVBhdGNoIGJ5IEJydW5vIEhhaWJsZSA8aGFpYmxlQGlsb2cuZnI+LgotLQotLQkqIGNhdC1jb21wYXQuYyAodGV4dGRvbWFpbik6IERvTid0IHJlZmVyIHRvIEhBVkVfU0VUTE9DQUxFX05VTEwKLS0JbWFjcm8uICBJbnN0ZWFkIHVzZSBIQVZFX0xPQ0FMRV9OVUxMIGFuZCBkZWZpbmUgaXQgd2hlbiB1c2luZwotLQlnbGliYywgYXMgaW4gZGNnZXR0ZXh0LmMuCi0tCVBhdGNoIGJ5IEJydW5vIEhhaWJsZSA8aGFpYmxlQGlsb2cuZnI+LgotLQotLQkqIE1ha2VmaWxlLmluIChDUFBGTEFHUyk6IE5ldyB2YXJpYWJsZS4gIFJlcG9ydGVkIGJ5IEZyYW5jLG9pcwotLQlQaW5hcmQuCi0tCi0tTW9uIE1hciAxMCAwNjo1MToxNyAxOTk3ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBNYWtlZmlsZS5pbjogSW1wbGVtZW50IGhhbmRsaW5nIG9mIGxpYnRvb2wuCi0tCi0tCSogZ2V0dGV4dFAuaDogQ2hhbmdlIGRhdGEgc3RydWN0dXJlcyBmb3IgdXNlIG9mIGdlbmVyaWMgbG93bGV2ZWwKLS0JaTE4biBmaWxlIGhhbmRsaW5nLgotLQotLVdlZCBEZWMgIDQgMjA6MjE6MTggMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogdGV4dGRvbWFpbi5jOiBQdXQgcGFyZW50aGVzZXMgYXJvdW5kIGFyZ3VtZW50cyBvZiBtZW1jcHkgbWFjcm8KLS0JZGVmaW5pdGlvbi4KLS0JKiBsb2NhbGVhbGlhcy5jOiBMaWtld2lzZS4KLS0JKiBsMTBuZmxpc3QuYzogTGlrZXdpc2UuCi0tCSogZmluZGRvbWFpbi5jOiBMaWtld2lzZS4KLS0JKiBiaW5kdGV4dGRvbS5jOiBMaWtld2lzZS4KLS0JUmVwb3J0ZWQgYnkgVGhvbWFzIEVza2VuLgotLQotLU1vbiBOb3YgMjUgMjI6NTc6NTEgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogdGV4dGRvbWFpbi5jOiBNb3ZlIGRlZmluaXRpb24gb2YgYG1lbWNweWAgbWFjcm8gdG8gcmlnaHQKLS0JcG9zaXRpb24uCi0tCi0tRnJpIE5vdiAyMiAwNDowMTo1OCAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBmaW5kZG9tYWluLmMgWyFIQVZFX1NUUklOR19IICYmICFfTElCQ106IERlZmluZSBtZW1jcHkgdXNpbmcKLS0gCWJjb3B5IGlmIG5vdCBhbHJlYWR5IGRlZmluZWQuICBSZXBvcnRlZCBieSBUaG9tYXMgRXNrZW4uCi0tCSogYmluZHRleHRkb20uYzogTGlrZXdpc2UuCi0tCSogbDEwbmZsaXN0LmM6IExpa2V3aXNlLgotLQkqIGxvY2FsZWFsaWFzLmM6IExpa2V3aXNlLgotLQkqIHRleHRkb21haW4uYzogTGlrZXdpc2UuCi0tCi0tVHVlIE9jdCAyOSAxMToxMDoyNyAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAobGliZGlyKTogQ2hhbmdlIHRvIHVzZSBleGVjX3ByZWZpeCBpbnN0ZWFkIG9mCi0tIAlwcmVmaXguICBSZXBvcnRlZCBieSBLbnV0LUjldmFyZEFrc25lcyA8ZXRva25hQGV0by5lcmljc3Nvbi5zZT4uCi0tCi0tU2F0IEF1ZyAzMSAwMzowNzowOSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBsMTBuZmxpc3QuYyAoX25sX25vcm1hbGl6ZV9jb2Rlc2V0KTogV2UgY29udmVydCB0byBsb3dlciBjYXNlLAotLQlzbyBkb24ndCBwcmVwZW5kIHVwcGVyY2FzZSBgSVNPJyBmb3Igb25seSBudW1lcmljIGFyZy4KLS0KLS1GcmkgSnVsIDE5IDAwOjE1OjQ2IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIGwxMG5mbGlzdC5jOiBNb3ZlIGluY2x1c2lvbiBvZiBhcmd6LmgsIGN0eXBlLmgsIHN0ZGxpYi5oIGFmdGVyCi0tCWRlZmluaXRpb24gb2YgX0dOVV9TT1VSQ0UuICBQYXRjaCBieSBSb2xhbmQgTWNHcmF0aC4KLS0KLS0JKiBNYWtlZmlsZS5pbiAodW5pbnN0YWxsKTogRml4IGFub3RoZXIgYnVnIHdpdGggYGZvcicgbG9vcCBhbmQKLS0JZW1wdHkgYXJndW1lbnRzLiAgUGF0Y2ggYnkgSmltIE1leWVyaW5nLiAgQ29ycmVjdCBuYW1lIG9zCi0tCXVuaW5zdGFsbGVkIGZpbGVzOiBubyBpbnRsLSBwcmVmaXggYW55bW9yZS4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1kYXRhKTogQWdhaW4gd29yayBhcm91bmQgc2hlbGxzIHdoaWNoCi0tCWNhbm5vdCBoYW5kbGUgbXB0eSBmb3IgbGlzdC4gIFJlcG9ydGVkIGJ5IEppbSBNZXllcmluZy4KLS0KLS1TYXQgSnVsIDEzIDE4OjExOjM1IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogU3BsaXQgZ29hbC4gIE5vdyBkZXBlbmQgb24gaW5zdGFsbC1leGVjCi0tICAgICAgICBhbmQgaW5zdGFsbC1kYXRhLgotLQkoaW5zdGFsbC1leGVjLCBpbnN0YWxsLWRhdGEpOiBOZXcgZ29hbHMuICBDcmVhdGVkIGZyb20gZm9ybWVyCi0tCWluc3RhbGwgZ29hbC4KLS0JUmVwb3J0ZWQgYnkgS2FybCBCZXJyeS4KLS0KLS1TYXQgSnVuIDIyIDA0OjU4OjE0IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIE1ha2VmaWxlLmluIChNS0lOU1RBTExESVJTKTogTmV3IHZhcmlhYmxlLiAgUGF0aCB0bwotLSAgICAgICAgbWtpbnN0YWxsZGlycyBzY3JpcHQuCi0tCShpbnN0YWxsKTogdXNlIE1LSU5TVEFMTERJUlMgdmFyaWFibGUgb3IgaWYgdGhlIHNjcmlwdCBpcyBub3QgcHJlc2VudAotLQl0cnkgdG8gZmluZCBpdCBpbiB0aGUgJHRvcF9zY3JkaXIpLgotLQotLVdlZCBKdW4gMTkgMDI6NTY6NTYgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogbDEwbmZsaXN0LmM6IExpbnV4IGxpYmMgKnBhcnRseSogaW5jbHVkZXMgdGhlIGFyZ3pfKiBmdW5jdGlvbnMuCi0tCUdyci4gIFdvcmsgYXJvdW5kIGJ5IHJlbmFtaW5nIHRoZSBzdGF0aWMgdmVyc2lvbiBhbmQgdXNlIG1hY3JvcwotLQlmb3IgcmVuYW1pbmcuCi0tCi0tVHVlIEp1biAxOCAyMDoxMToxNyAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBsMTBuZmxpc3QuYzogQ29ycmVjdCBwcmVzZW5jZSB0ZXN0IG1hY3JvcyBvZiBfX2FyZ3pfKiBmdW5jdGlvbnMuCi0tCi0tCSogbDEwbmZsaXN0LmM6IEluY2x1ZGUgPGFyZ3ouaD4gYmFzZWQgb24gdGVzdCBvZiBpdCBpbnN0ZWFkIHdoZW4KLS0JX19hcmd6XyogZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUuCi0tCVJlcG9ydGVkIGJ5IEFuZHJlYXMgU2Nod2FiLgotLQotLVRodSBKdW4gMTMgMTU6MTc6NDQgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogZXhwbG9kZW5hbWUuYywgbDEwbmZsaXN0LmM6IERlZmluZSBOVUxMIGZvciBkdW1iIHN5c3RlbXMuCi0tCi0tVHVlIEp1biAxMSAxNzowNToxMyAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBpbnRsaC5pbnN0LmluLCBsaWJnZXR0ZXh0LmggKGRjZ2V0dGV4dCk6IFJlbmFtZSBsb2NhbCB2YXJpYWJsZQotLQlyZXN1bHQgdG8gX19yZXN1bHQgdG8gcHJldmVudCBuYW1lIGNsYXNoLgotLQotLQkqIGwxMG5mbGlzdC5jLCBsb2NhbGVhbGlhcy5jLCBkY2dldHRleHQuYzogRGVmaW5lIF9HTlVfU09VUkNFIHRvCi0tICAgICAgICBnZXQgcHJvdG90eXBlIGZvciBzdHBjcHkgYW5kIHN0cmNhc2VjbXAuCi0tCi0tCSogaW50bGguaW5zdC5pbiwgbGliZ2V0dGV4dC5oOiBNb3ZlIGRlY2xhcmF0aW9uIG9mCi0tCWBfbmxfbXNnX2NhdF9jbnRyJyBvdXRzaWRlIF9fZXh0ZW5zaW9uX18gYmxvY2sgdG8gcHJldmVudCB3YXJuaW5nCi0tCWZyb20gZ2NjJ3MgLVduZXN0ZWQtZXh0ZXJuIG9wdGlvbi4KLS0KLS1GcmkgSnVuICA3IDAxOjU4OjAwIDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogUmVtb3ZlIGNvbW1lbnQuCi0tCi0tVGh1IEp1biAgNiAxNzoyODoxNyAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbCk6IFdvcmsgYXJvdW5kIGZvciBhbm90aGVyIEJ1Z2xpeCBzdHVwaWRpdHkuCi0tCUFsd2F5cyB1c2UgYW4gYGVsc2UnIGNsb3NlIGZvciBgaWYncy4gIFJlcG9ydGVkIGJ5IE5lbHNvbiBCZWViZS4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW50bGguaW5zdCk6IENvcnJlY3QgdHlwbyBpbiBwaG9ueSBydWxlLgotLQlSZXBvcnRlZCBieSBOZWxzb24gQmVlYmUuCi0tCi0tVGh1IEp1biAgNiAwMTo0OTo1MiAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBkY2dldHRleHQuYyAocmVhZF9hbGlhc19maWxlKTogUmVuYW1lIHZhcmlhYmxlIGFsbG9jYV9saXN0IHRvCi0tCWJsb2NrX2xpc3QgYXMgdGhlIG1hY3JvIGNhbGxzIGFzc3VtZS4KLS0JUGF0Y2ggYnkgRXJpYyBCYWNrdXMuCi0tCi0tCSogbG9jYWxlYWxpYXMuYyBbIUhBVkVfQUxMT0NBXTogRGVmaW5lIGFsbG9jYSBhcyBtYWNybyB1c2luZwotLSAgICAgICAgbWFsbG9jLgotLQkocmVhZF9hbGlhc19maWxlKTogUmVuYW1lIHZhcnJpYWJlIGFsbG9jYV9saXN0IHRvIGJsb2NrX2xpc3QgYXMgdGhlCi0tCW1hY3JvIGNhbGxzIGFzc3VtZS4KLS0JUGF0Y2ggYnkgRXJpYyBCYWNrdXMuCi0tCi0tCSogbDEwbmZsaXN0LmM6IENvcnJlY3QgY29uZGl0aW9uYWwgZm9yIDxhcmd6Lmg+IGluY2x1c2lvbi4KLS0JUmVwb3J0ZWQgYnkgUm9sYW5kIE1jR3JhdGguCi0tCi0tCSogTWFrZWZpbGUuaW4gKGFsbCk6IERlcGVuZCBvbiBhbGwtQFVTRV9JTkNMVURFRF9MSUJJTlRMQCwgbm90Ci0tICAgICAgICBhbGwtQFVTRV9OTFNALgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogaW50bGguaW5zdCBjb21lcyBmcm9tIGxvY2FsIGRpciwgbm90Ci0tICAgICAgICAkKHNyY2RpcikuCi0tCi0tCSogTWFrZWZpbGUuaW4gKGludGxoLmluc3QpOiBTcGVjaWFsIGhhbmRsaW5nIG9mIHRoaXMgZ29hbC4gIElmCi0tCXVzZWQgaW4gZ2V0dGV4dCwgdGhpcyBpcyByZWFsbHkgYSBydWwgdG8gY29uc3RydWN0IHRoaXMgZmlsZS4gIElmCi0tCXVzZWQgaW4gYW55IG90aGVyIHBhY2thZ2UgaXQgaXMgZGVmaW5lZCBhcyBhIC5QSE9OWSBydWxlIHdpdGgKLS0JZW1wdHkgYm9keS4KLS0KLS0JKiBmaW5kZG9tYWluLmM6IEV4dHJhY3QgbG9jYWxlIGZpbGUgaW5mb3JtYXRpb24gaGFuZGxpbmcgaW50bwotLQlsMTBuZmlsZS5jLiAgUmVuYW1lIGxvY2FsIHN0cGNweV9fIGZ1bmN0aW9uIHRvIHN0cGNweS4KLS0KLS0JKiBkY2dldHRleHQuYyAoc3RwY3B5KTogQWRkIGxvY2FsIGRlZmluaXRpb24uCi0tCi0tCSogbDEwbmZsaXN0LmM6IFNvbHZlIHNvbWUgcG9ydGFiaWxpdHkgcHJvYmxlbXMuICBQYXRjaGVzIHBhcnRseSBieQotLQlUaG9tYXMgRXNrZW4uICBBZGQgbG9jYWwgZGVmaW5pdGlvbiBvZiBzdHBjcHkuCi0tCi0tVHVlIEp1biAgNCAwMjo0Nzo0OSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBpbnRsaC5pbnN0LmluOiBEb24ndCBkZXBlbmQgaW5jbHVkaW5nIDxsb2NhbGUuaD4gb24KLS0JSEFWRV9MT0NBTEVfSC4gIEluc3RlYWQgY29uZmlndXJlIG11c3QgcmV3cml0ZSB0aGlzIGZpaWxlCi0tCWRlcGVuZGluZyBvbiB0aGUgcmVzdWx0IG9mIHRoZSBjb25maWd1cmUgcnVuLgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogbGliaW50bC5pbnN0IGlzIG5vdyBjYWxsZWQgaW50bGguaW5zdC4KLS0JQWRkIHJ1bGVzIGZvciB1cGRhdGluZyBpbnRsaC5pbnN0IGZyb20gaW50bGguaW5zdC5pbi4KLS0KLS0JKiBsaWJpbnRsLmluc3Q6IFJlbmFtZWQgdG8gaW50bGguaW5zdC5pbi4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jLCBkY2dldHRleHQuYyBbX19HTlVDX19dOiBEZWZpbmUgSEFWRV9BTExPQ0EgdG8gMQotLSAgICAgICAgYmVjYXVzZSBnY2MgaGFzIF9fYnVpdGxpbl9hbGxvY2EuCi0tCVJlcG9ydGVkIGJ5IFJvbGFuZCBNY0dyYXRoLgotLQotLU1vbiBKdW4gIDMgMDA6MzI6MTYgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKGluc3RhbGxjaGVjayk6IE5ldyBnb2FsIHRvIGZ1bGZpbGwgbmVlZHMgb2YKLS0gICAgICAgIGF1dG9tYWtlJ3MgZGlzdGNoZWNrLgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogUmVvcmRlciBjb21tYW5kcyBzbyB0aGF0IFZFUlNJT04gaXMKLS0gICAgICAgIGZvdW5kLgotLQotLQkqIE1ha2VmaWxlLmluIChnZXR0ZXh0c3JjZGlyKTogTm93IHVzZSBzdWJkaXJlY3RvcnkgaW50bC8gaW4KLS0gICAgICAgIEBkYXRhZGlyQC9nZXR0ZXh0LgotLQkoQ09NU1JDUyk6IEFkZCBsMTBuZmlsZS5jLgotLQkoT0JKRUNUUyk6IEFkZCBsMTBuZmlsZS5vLgotLQkoRElTVEZJTEVTKTogUmVuYW1lIHRvIERJU1RGSUxFLm5vcm1hbC4gIFJlbW92ZSAkKERJU1RGSUxFUy5jb21tb24pLgotLQkoRElTVEZJTEUuZ2V0dGV4dCk6IFJlbW92ZSAkKERJU1RGSUxFUy5jb21tb24pLgotLQkoYWxsLWdldHRleHQpOiBSZW1vdmUgZ29hbC4KLS0JKGluc3RhbGwpOiBJZiAkKFBBQ0tBR0UpID0gZ2V0dGV4dCBpbnN0YWxsLCBvdGhlcndvc2UgZG8gbm90aGluZy4gIE5vCi0tCXBhY2thZ2UgYnV0IGdldHRleHQgaXRzZWxmIHNob3VsZCBpbnN0YWxsIGxpYmludGwuaCArIGhlYWRlcnMuCi0tCShkaXN0KTogRXh0ZW5kIGdvYWwgdG8gd29yayBmb3IgZ2V0dGV4dCwgdG9vLgotLQkoZGlzdC1nZXR0ZXh0KTogUmVtb3ZlIGdvYWwuCi0tCi0tCSogZGNnZXR0ZXh0LmMgWyFIQVZFX0FMTE9DQV06IERlZmluZSBtYWNybyBhbGxvY2EgYnkgdXNpbmcgbWFsbG9jLgotLQotLVN1biBKdW4gIDIgMTc6MzM6MDYgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogbG9hZG1zZ2NhdC5jIChfbmxfbG9hZF9kb21haW4pOiBQYXJhbWV0ZXIgaXMgbm93IGNvbWVzIGZyb20KLS0gICAgICAgIGZpbmRfbDEwbmZpbGUuCi0tCi0tU2F0IEp1biAgMSAwMjoyMzowMyAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBsMTBuZmxpc3QuYyAoX19hcmd6X25leHQpOiBBZGQgZGVmaW5pdGlvbi4KLS0KLS0JKiBkY2dldHRleHQuYyBbIUhBVkVfQUxMT0NBXTogQWRkIGNvZGUgZm9yIGhhbmRsaW5nIG1pc3NpbmcgYWxsb2NhCi0tCWNvZGUuICBVc2UgbmV3IGwxMG5maWxlIGhhbmRsaW5nLgotLQotLQkqIGxvY2FsZWFsaWFzLmMgWyFIQVZFX0FMTE9DQV06IEFkZCBjb2RlIGZvciBoYW5kbGluZyBtaXNzaW5nCi0tICAgICAgICBhbGxvY2EgY29kZS4KLS0KLS0JKiBsMTBuZmxpc3QuYzogSW5pdGlhbCByZXZpc2lvbi4KLS0KLS1UdWUgQXByICAyIDE4OjUxOjE4IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKGFsbC1nZXR0ZXh0KTogTmV3IGdvYWwuICBTYW1lIGFzIGFsbC15ZXMuCi0tCi0tVGh1IE1hciAyOCAyMzowMToyMiAxOTk2ICBLYXJsIEVpY2h3YWxkZXIgIDxrZUBrZS5jZW50cmFsLmRlPgotLQotLQkqIE1ha2VmaWxlLmluIChnZXR0ZXh0c3JjZGlyKTogRGVmaW5lIHVzaW5nIEBkYXRhZGlyQC4KLS0KLS1UdWUgTWFyIDI2IDEyOjM5OjE0IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogZmluZGRvbWFpbi5jOiBJbmNsdWRlIDxjdHlwZS5oPi4gIFJlcG9ydGVkIGJ5IFJvbGFuZCBNY0dyYXRoLgotLQotLVNhdCBNYXIgMjMgMDI6MDA6MzUgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBmaW5kZG9tYWluLmMgKHN0cGNweSk6IFJlbmFtZSB0byBzdHBjcHlfXyB0byBwcmV2ZW50IGNsYXNoaW5nCi0tICAgICAgICB3aXRoIGV4dGVybmFsIGRlY2xhcmF0aW9uLgotLQotLVNhdCBNYXIgIDIgMDA6NDc6MDkgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoYWxsLW5vKTogUmVuYW1lIGZyb20gYWxsX25vLgotLQotLVNhdCBGZWIgMTcgMDA6MjU6NTkgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBnZXR0ZXh0UC5oIFtsb2FkZWRfZG9tYWluXTogQXJyYXkgYHN1Y2Nlc3NvcicgbXVzdCBub3cgY29udGFpbiB1cAotLSAgICAgICAgdG8gNjMgZWxlbWVudHMgKGJlY2F1c2Ugb2YgY29kZXNldCBuYW1lIG5vcm1hbGl6YXRpb24pLgotLQotLQkqIGZpbmRkb21haW4uYzogSW1wbGVtZW50IGNvZGVzZXQgbmFtZSBub3JtYWxpemF0aW9uLgotLQotLVRodSBGZWIgMTUgMDQ6Mzk6MDkgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoYWxsKTogRGVmaW5lIHRvIGBhbGwtQFVTRV9OTFNAJy4KLS0JKGFsbC15ZXMsIGFsbF9ubyk6IE5ldyBnb2Fscy4gIGBhbGwtbm8nIGlzIG5vb3AsIGBhbGwteWVzJwotLQlpcyBmb3JtZXIgYWxsLgotLQotLU1vbiBKYW4gMTUgMjE6NDY6MDEgMTk5NiAgSG93YXJkIEdheWxlICA8aG93YXJkQGhhbC5jb20+Ci0tCi0tCSogbG9jYWxlYWxpYXMuYyAoYWxpYXNfY29tcGFyZSk6IEluY3JlbWVudCBzdHJpbmcgcG9pbnRlcnMgaW4gbG9vcAotLSAgICAgICAgb2Ygc3RyY2FzZWNtcCByZXBsYWNlbWVudC4KLS0KLS1GcmkgRGVjIDI5IDIxOjE2OjM0IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtc3JjKTogV2hvIGNvbW1lbnRlZCB0aGlzIGdvYWwgb3V0ID8gOi0pCi0tCi0tRnJpIERlYyAyOSAxNTowODoxNiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGRjZ2V0dGV4dC5jIChEQ0dFVFRFWFQpOiBTYXZlIGBlcnJubycuICBGYWlsaW5nIHN5c3RlbSBjYWxscwotLQlzaG91bGQgbm90IGVmZmVjdCBpdCBiZWNhdXNlIGEgbWlzc2luZyBjYXRhbG9nIGlzIG5vIGVycm9yLgotLQlSZXBvcnRlZCBieSBIYXJhbGQgSzxvOj5uaWcgPGtvZW5pZ0B0YXQucGh5c2lrLnVuaS10dWViaW5nZW4uZGU+LgotLQotLVR1ZSBEZWMgMTkgMjI6MDk6MTMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoTWFrZWZpbGUpOiBFeHBsaWNpdGx5IHVzZSAkKFNIRUxMKSBmb3IgcnVubmluZwotLSAgICAgICAgc2hlbGwgc2NyaXB0cy4KLS0KLS1GcmkgRGVjIDE1IDE3OjM0OjU5IDE5OTUgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGlzc2FuLmluZm9ybWF0aWsudW5pLWRvcnRtdW5kLmRlPgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsLXNyYyk6IE9ubHkgaW5zdGFsbCBsaWJyYXJ5IGFuZCBoZWFkZXIgd2hlbgotLQl3ZSB1c2UgdGhlIG93biBpbXBsZW1lbnRhdGlvbi4gIERvbid0IGRvIGl0IHdoZW4gdXNpbmcgdGhlCi0tCXN5c3RlbSdzIGdldHRleHQgb3IgY2F0Z2V0cyBmdW5jdGlvbnMuCi0tCi0tCSogZGNnZXR0ZXh0LmMgKGZpbmRfbXNnKTogTXVzdCBub3Qgc3dhcCBkb21haW4tPmhhc2hfc2l6ZSBoZXJlLgotLQotLVNhdCBEZWMgIDkgMTY6MjQ6MzcgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jLCBsaWJpbnRsLmluc3QsIGxpYmdldHRleHQuaCwgaGFzaC1zdHJpbmcuaCwKLS0JZ2V0dGV4dFAuaCwgZmluZGRvbWFpbi5jLCBkY2dldHRleHQuYywgY2F0LWNvbXBhdC5jOgotLQlVc2UgUEFSQU1TIGluc3RlYWQgb2YgX19QLiAgU3VnZ2VzdGVkIGJ5IFJvbGFuZCBNY0dyYXRoLgotLQotLVR1ZSBEZWMgIDUgMTE6Mzk6MTQgMTk5NSAgTGFycnkgU2Nod2ltbWVyICA8cm9zZWJ1ZEBjeWNsb25lLnN0YW5mb3JkLmVkdT4KLS0KLS0JKiBsaWJnZXR0ZXh0Lmg6IFVzZSBgI2lmICFkZWZpbmVkIChfTElCSU5UTF9IKScgaW5zdGVhZCBvZiBgI2lmCi0tCSFfTElCSU5UTF9IJyBiZWNhdXNlIFNvbGFyaXMgZGVmaW5lcyBfTElCSU5UTF9IIGFzIGVtcHR5LgotLQotLU1vbiBEZWMgIDQgMTU6NDI6MDcgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1zcmMpOgotLQlJbnN0YWxsIGxpYmludGwuaW5zdCBpbnN0ZWFkIG9mIGxpYmludGwuaC5pbnN0YWxsLgotLQotLVNhdCBEZWMgIDIgMjI6NTE6MzggMTk5NSAgTWFyY3VzIERhbmllbHMgIDxtYXJjdXNAc3lzYy5wZHguZWR1PgotLQotLQkqIGNhdC1jb21wYXQuYyAodGV4dGRvbWFpbik6Ci0tCVJldmVyc2Ugb3JkZXIgaW4gd2hpY2ggZmlsZXMgYXJlIHRyaWVkIHlvdSBsb2FkLiAgRmlyc3QKLS0JdHJ5IGxvY2FsIGZpbGUsIHdoZW4gdGhpcyBmYWlsZWQgYWJzb2x1dGUgcGF0aC4KLS0KLS1XZWQgTm92IDI5IDAyOjAzOjUzIDE5OTUgIE5lbHNvbiBILiBGLiBCZWViZSAgPGJlZWJlQG1hdGgudXRhaC5lZHU+Ci0tCi0tCSogY2F0LWNvbXBhdC5jIChiaW5kdGV4dGRvbWFpbik6IEFkZCBtaXNzaW5nIHsgfS4KLS0KLS1TdW4gTm92IDI2IDE4OjIxOjQxIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogbGliaW50bC5pbnN0OiBBZGQgbWlzc2luZyBfX1AgZGVmaW5pdGlvbi4gIFJlcG9ydGVkIGJ5IE5lbHNvbiBCZWViZS4KLS0KLS0JKiBNYWtlZmlsZS5pbjoKLS0JQWRkIGR1bW15IGBhbGwnIGFuZCBgZHZpJyBnb2Fscy4gIFJlcG9ydGVkIGJ5IFRvbSBUcm9tZXkuCi0tCi0tU2F0IE5vdiAyNSAxNjoxMjowMSAxOTk1ICBGcmFuYyxvaXMgUGluYXJkICA8cGluYXJkQGlyby51bW9udHJlYWwuY2E+Ci0tCi0tCSogaGFzaC1zdHJpbmcuaDogQ2FwaXRhbGl6ZSBhcmd1bWVudHMgb2YgbWFjcm9zLgotLQotLVNhdCBOb3YgMjUgMTI6MDE6MzYgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoRElTVEZJTEVTKTogUHJldmVudCBmaWxlcyBuYW1lcyBsb25nZXIgdGhhbiAxMwotLQljaGFyYWN0ZXJzLiAgbGliaW50bC5oLmdsaWJjLT5saWJpbnRsLmdsaWJjLAotLQlsaWJpbnRsLmguaW5zdGFsbC0+bGliaW50bC5pbnN0LiAgUmVwb3J0ZWQgYnkgSm9zaHVhIFIuIFBvdWxzb24uCi0tCi0tU2F0IE5vdiAyNSAxMTozMToxMiAxOTk1ICBFcmljIEJhY2t1cyAgPGVyaWNiQGxzaWQuaHAuY29tPgotLQotLQkqIGRjZ2V0dGV4dC5jOiBGaXggYnVnIGluIHByZXByb2Nlc3NvciBjb25kaXRpb25hbHMuCi0tCi0tU2F0IE5vdiAyNSAwMjozNToyNyAxOTk1ICBOZWxzb24gSC4gRi4gQmVlYmUgIDxiZWViZUBtYXRoLnV0YWguZWR1PgotLQotLQkqIGxpYmdldHRleHQuaDogU29sYXJpcyBjYyBkb2VzIG5vdCB1bmRlcnN0YW5kCi0tCSAjaWYgIVNZTUJPTDEgJiYgIVNZTUJPTDIuICBTYWQJYnV0IHRydWUuCi0tCi0tVGh1IE5vdiAyMyAxNjoyMjoxNCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGhhc2gtc3RyaW5nLmggKGhhc2hfc3RyaW5nKToKLS0JRml4IGZvciBtYWNoaW5lIHdpdGggPjMyIGJpdCBgdW5zaWduZWQgbG9uZydzLgotLQotLQkqIGRjZ2V0dGV4dC5jIChEQ0dFVFRFWFQpOgotLQlGaXggaG9ycmlibGUgYnVnIGluIGxvb3AgZm9yIGFsdGVybmF0aXZlIHRyYW5zbGF0aW9uLgotLQotLVRodSBOb3YgMjMgMDE6NDU6MjkgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBwbzJ0Ymwuc2VkLmluLCBsaW51eC1tc2cuc2VkLCB4b3Blbi1tc2cuc2VkOgotLQlTb21lIGZ1cnRoZXIgc2ltcGxpZmljYXRpb25zIGluIG1lc3NhZ2UgbnVtYmVyIGdlbmVyYXRpb24uCi0tCi0tTW9uIE5vdiAyMCAyMTowODo0MyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGxpYmludGwuaC5nbGliYzogVXNlIF9fY29uc3QgaW5zdGVhZCBvZiBjb25zdCBpbiBwcm90b3R5cGVzLgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsLXNyYyk6Ci0tCUluc3RhbGwgbGliaW50bC5oLmluc3RhbGwgaW5zdGVhZCBvZiBsaWJpbnRsLmguICBUaGlzCi0tCWlzIGEgc3RyaXBwZWQtZG93biB2ZXJzaW9uLiAgU3VnZ2VzdGVkIGJ5IFBldGVyIE1pbGxlci4KLS0KLS0JKiBsaWJpbnRsLmguaW5zdGFsbCwgbGliaW50bC5oLmdsaWJjOiBJbml0aWFsIHJldmlzaW9uLgotLQotLQkqIGxvY2FsZWFsaWFzLmMgKF9ubF9leHBhbmRfYWxpYXMsIHJlYWRfYWxpYXNfZmlsZSk6Ci0tCVByb3RlY3QgcHJvdG90eXBlcyBpbiB0eXBlIGNhc3RzIGJ5IF9fUC4KLS0KLS1UdWUgTm92IDE0IDE2OjQzOjU4IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogaGFzaC1zdHJpbmcuaDogQ29ycmVjdCBwcm90b3R5cGUgZm9yIGhhc2hfc3RyaW5nLgotLQotLVN1biBOb3YgMTIgMTI6NDI6MzAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBoYXNoLXN0cmluZy5oIChoYXNoX3N0cmluZyk6IEFkZCBwcm90b3R5cGUuCi0tCi0tCSogZ2V0dGV4dFAuaDogRml4IGNvcHlyaWdodC4KLS0JKFNXQVApOiBBZGQgcHJvdG90eXBlLgotLQotLVdlZCBOb3YgIDggMjI6NTY6MzMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jIChyZWFkX2FsaWFzX2ZpbGUpOiBGb3Jnb3Qgc2l6ZW9mLgotLQlBdm9pZCBjYWxsaW5nICpwcmludGYgZnVuY3Rpb24uICBUaGlzIGludHJvZHVjZXMgYSBiaWcgb3ZlcmhlYWQuCi0tCVBhdGNoIGJ5IFJvbGFuZCBNY0dyYXRoLgotLQotLVR1ZSBOb3YgIDcgMTQ6MjE6MDggMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBmaW5kZG9tYWluLmMsIGNhdC1jb21wYXQuYzogV3JvbmcgaW5kZW50YXRpb24gaW4gI2lmIGZvciBzdHBjcHkuCi0tCi0tCSogZmluZGRvbWFpbi5jIChzdHBjcHkpOgotLQlEZWZpbmUgc3Vic3RpdHV0aW9uIGZ1bmN0aW9uIGxvY2FsLiAgVGhlIG1hY3JvIHdhcyB0byBmbGFreS4KLS0KLS0JKiBjYXQtY29tcGF0LmM6IEZpeCB0eXBvLgotLQotLQkqIHhvcGVuLW1zZy5zZWQsIGxpbnV4LW1zZy5zZWQ6Ci0tCVdoaWxlIGJyaW5naW5nIG1lc3NhZ2UgbnVtYmVyIHRvIHJpZ2h0IHBsYWNlIG9ubHkgYWNjZXB0IGRpZ2l0cy4KLS0KLS0JKiBsaW51eC1tc2cuc2VkLCB4b3Blbi1tc2cuc2VkOiBOb3cgdGhhdCB0aGUgY291bnRlciBkb2VzIG5vdCBoYXZlCi0tCWxlYWRpbmcgMHMgd2UgZG9uJ3QgbmVlZCB0byByZW1vdmUgdGhlbS4gIFJlcG9ydGVkIGJ5IE1hcmN1cwotLQlEYW5pZWxzLgotLQotLQkqIE1ha2VmaWxlLmluICguLi9wby9jYXQtaWQtdGJsLm8pOiBVc2UgJCh0b3Bfc3JkaXIpIGluCi0tCWRlcGVuZGVuY3kuICBSZXBvcnRlZCBieSBNYXJjdXMgRGFuaWVscy4KLS0KLS0JKiBjYXQtY29tcGF0LmM6IChzdHBjcHkpIFshX0xJQkMgJiYgIUhBVkVfU1RQQ1BZXTogRGVmaW5lIHJlcGxhY2VtZW50LgotLQlHZW5lcmFsbHkgY2xlYW51cCB1c2luZyAjaWYgaW5zdGVhZCBvZiAjaWZuZGVmLgotLQotLQkqIE1ha2VmaWxlLmluOiBDb3JyZWN0IHR5cG9zIGluIGNvbW1lbnQuICBCeSBGcmFuYyxvaXMgUGluYXJkLgotLQotLU1vbiBOb3YgIDYgMDA6Mjc6MDIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1zcmMpOiBEb24ndCBpbnN0YWxsIGxpYmludGwuaCBhbmQgbGliaW50bC5hCi0tCWlmIHdlIHVzZSBhbiBhdmFpbGFibGUgZ2V0dGV4dCBpbXBsZW1lbnRhdGlvbi4KLS0KLS1TdW4gTm92ICA1IDIyOjAyOjA4IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogbGliZ2V0dGV4dC5oOiBGaXggdHlwbzogSEFWRV9DQVRHRVRUUyAtPiBIQVZFX0NBVEdFVFMuICBSZXBvcnRlZAotLQlieSBGcmFuYyxvaXMgUGluYXJkLgotLQotLQkqIGxpYmdldHRleHQuaDogVXNlICNpZiBpbnN0ZWFkIG9mICNpZmRlZi8jaWZuZGVmLgotLQotLQkqIGZpbmRkb21haW4uYzoKLS0JQ29tbWVudHMgZGVzY3JpYmluZyB3aGF0IGhhcyB0byBiZSBkb25lIHNob3VsZCBzdGFydCB3aXRoIEZJWE1FLgotLQotLVN1biBOb3YgIDUgMTk6Mzg6MDEgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoRElTVEZJTEVTKTogU3BsaXQuICBVc2UgRElTVEZJTEVTIHdpdGggbm9ybWFsIG1lYW5pbmcuCi0tCURJU1RGSUxFUy5jb21tb24gbmFtZXMgdGhlIGZpbGVzIGNvbW1vbiB0byBib3RoIGRpc3QgZ29hbHMuCi0tCURJU1RGSUxFUy5nZXR0ZXh0IGFyZSB0aGUgZmlsZXMgb25seSBkaXN0cmlidXRlZCBpbiBHTlUgZ2V0dGV4dC4KLS0KLS1TdW4gTm92ICA1IDE3OjMyOjU0IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogZGNnZXR0ZXh0LmMgKERDR0VUVEVYVCk6IENvcnJlY3Qgc2VhcmNoaW5nIGluIGRlcml2ZWQgbG9jYWxlcy4KLS0JVGhpcyB3YXMgbmVjZXNzYXJ5IHNpbmNlIGEgY2hhbmdlIGluIF9ubF9maW5kX21zZyBzZXZlcmFsIHdlZWtzCi0tCWFnby4gIEkgcmVhbGx5IGRvbid0IGtub3cgdGhpcyBpcyBzdGlsbCBub3QgZml4ZWQuCi0tCi0tU3VuIE5vdiAgNSAxMjo0MzoxMiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGxvYWRtc2djYXQuYyAoX25sX2xvYWRfZG9tYWluKTogVGVzdCBmb3IgRklMRU5BTUUgPT0gTlVMTC4gIFRoaXMKLS0JbWlnaHQgbWFyayBhIHNwZWNpYWwgY29uZGl0aW9uLgotLQotLQkqIGZpbmRkb21haW4uYyAobWFrZV9lbnRyeV9yZWMpOiBEb24ndCBtYWtlIGlsbGVnYWwgZW50cnkgYXMgZGVjaWRlZC4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoZGlzdCk6IFN1cHByZXNzIGVycm9yIG1lc3NhZ2Ugd2hlbiBsbiBmYWlsZWQuCi0tCUdldCBmaWxlcyBmcm9tICQoc3JjZGlyKSBleHBsaWNpdGx5LgotLQotLQkqIGxpYmdldHRleHQuaCAoZ2V0dGV4dF9jb25zdCk6IFJlbmFtZSB0byBnZXR0ZXh0X25vb3AuCi0tCi0tRnJpIE5vdiAgMyAwNzozNjo1MCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGZpbmRkb21haW4uYyAobWFrZV9lbnRyeV9yZWMpOgotLQlQcm90ZWN0IGFnYWluc3Qgd3JvbmcgbG9jYWxlIG5hbWVzIGJ5IHRlc3RpbmcgbWFzay4KLS0KLS0JKiBsaWJnZXR0ZXh0LmggKGdldHRleHRfY29uc3QpOiBBZGQgbWFjcm8gZGVmaW5pdGlvbi4KLS0JQ2FwaXRhbGl6ZSBtYWNybyBhcmd1bWVudHMuCi0tCi0tVGh1IE5vdiAgMiAyMzoxNTo1MSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGZpbmRkb21haW4uYyAoX25sX2ZpbmRfZG9tYWluKToKLS0JVGVzdCBmb3IgcG9pbnRlciAhPSBOVUxMIGJlZm9yZSBhY2Nlc3NpbmcgdmFsdWUuCi0tCVJlcG9ydGVkIGJ5IFRvbSBUcm9tZXkuCi0tCi0tCSogZ2V0dGV4dC5jIChOVUxMKToKLS0JRGVmaW5lIGFzICh2b2lkKikwIGluc3RhZCBvZiAwLiAgUmVwb3J0ZWQgYnkgRnJhbmMsb2lzIFBpbmFyZC4KLS0KLS1Nb24gT2N0IDMwIDIxOjI4OjUyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogcG8ydGJsLnNlZC5pbjogU2VyaW91cyB0eXBvIGJ1ZyBmaXhlZCBieSBKaW0gTWV5ZXJpbmcuCi0tCi0tU2F0IE9jdCAyOCAyMzoyMDo0NyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGxpYmdldHRleHQuaDogRGlzYWJsZSBkY2dldHRleHQgb3B0aW1pemF0aW9uIGZvciBTb2xhcmlzIDIuMy4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jIChhbGlhc19jb21wYXJlKToKLS0JUGV0ZXIgTWlsbGVyIHJlcG9ydGVkIHRoYXQgdG9sb3dlciBpbiBzb21lIHN5c3RlbXMgaXMKLS0JZXZlbiBkdW1iZXIgdGhhbiBJIHRob3VnaHQuICBQcm90ZWN0IGNhbGwgYnkgYGlzdXBwZXInLgotLQotLUZyaSBPY3QgMjcgMjI6MjI6NTEgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAobGliZGlyLCBpbmNsdWRlZGlyKTogTmV3IHZhcmlhYmxlcy4KLS0JKGluc3RhbGwtc3JjKTogSW5zdGFsbCBsaWJpbnRsLmEgYW5kIGxpYmludGwuaCBpbiBjb3JyZWN0IGRpcnMuCi0tCi0tRnJpIE9jdCAyNyAyMjowNzoyOSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChTT1VSQ0VTKTogRml4IHR5cG86IGludHJsLmNvbXBhdC5jIC0+IGludGwtY29tcGF0LmMuCi0tCi0tCSogcG8ydGJsLnNlZC5pbjogUGF0Y2ggZm9yIGJ1Z2d5IFNFRHMgYnkgQ2hyaXN0aWFuIHZvbiBSb3F1ZXMuCi0tCi0tCSogbG9jYWxlYWxpYXMuYzoKLS0JRml4IHR5cG8gYW5kIHN1cGVyZmxvdXMgdGVzdC4gIFJlcG9ydGVkIGJ5IENocmlzdGlhbiB2b24gUm9xdWVzLgotLQotLUZyaSBPY3QgIDYgMTE6NTI6MDUgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBmaW5kZG9tYWluLmMgKF9ubF9maW5kX2RvbWFpbik6Ci0tCUNvcnJlY3Qgc29tZSByZW1haW5kZXIgZnJvbSB0aGUgcHJlLUNFTiBzeW50YXguICBOb3cKLS0Jd2UgZG9uJ3QgaGF2ZSBhIGNvbnN0YW50IG51bWJlciBvZiBzdWNjZXNzb3JzIGFueW1vcmUuCi0tCi0tV2VkIFNlcCAyNyAyMTo0MToxMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChESVNURklMRVMpOiBBZGQgbGliaW50bC5oLmdsaWJjLgotLQotLQkqIE1ha2VmaWxlLmluIChkaXN0LWxpYmMpOiBBZGQgZ29hbCBmb3IgcGFja2luZyBzb3VyY2VzIGZvciBnbGliYy4KLS0JKENPTVNSQ1MsIENPTUhEUlMpOiBTcGxpdHRlZCB0byBzZXBhcmF0ZSBzb3VyY2VzIHNoYXJlZCB3aXRoIGdsaWJjLgotLQotLQkqIGxvYWRtc2djYXQuYzogRm9yZ2V0IHRvIGNvbnRpbnVlICNpZiBsaW5lLgotLQotLQkqIGxvY2FsZWFsaWFzLmM6Ci0tCVtfTElCQ106IFJlbmFtZSBzdHJjYXNlY21wIHRvIF9fc3RyY2FzZWNtcCB0byBrZWVwIEFOU0kgQyBuYW1lCi0tCXNwYWNlIGNsZWFuLgotLQotLQkqIGRjZ2V0dGV4dC5jLCBmaW5kZG9tYWluLmM6IEJldHRlciBjb21tZW50IHRvIGxhc3QgY2hhbmdlLgotLQotLQkqIGxvYWRtc2djYXQuYzoKLS0JW19MSUJDXTogUmVuYW1lIGZzdGF0LCBvcGVuLCBjbG9zZSwgcmVhZCwgbW1hcCwgYW5kIG11bm1hcCB0bwotLQlfX2ZzdGF0LCBfX29wZW4sIF9fY2xvc2UsIF9fcmVhZCwgX19tbWFwLCBhbmQgX19tdW5tYXAgcmVzcAotLQl0byBrZWVwIEFOU0kgQyBuYW1lIHNwYWNlIGNsZWFuLgotLQotLQkqIGZpbmRkb21haW4uYzoKLS0JW19MSUJDXTogUmVuYW1lIHN0cGNweSB0byBfX3N0cGNweSB0byBrZWVwIEFOU0kgQyBuYW1lIHNwYWNlIGNsZWFuLgotLQotLQkqIGRjZ2V0dGV4dC5jOgotLQlbX0xJQkNdOiBSZW5hbWUgZ2V0Y2VkIGFuZCBzdHBjcHkgdG8gX19nZXRjd2QgYW5kIF9fc3RwY3B5IHJlc3AgdG8KLS0Ja2VlcCBBTlNJIEMgbmFtZSBzcGFjZSBjbGVhbi4KLS0KLS0JKiBsaWJnZXR0ZXh0Lmg6Ci0tCUluY2x1ZGUgc3lzL3R5cGVzLmggZm9yIHRob3NlIG9sZCBTeXNWIHN5c3RlbXMgb3V0IHRoZXJlLgotLQlSZXBvcnRlZCBieSBGcmFuY2VzY28gUG90b3J0aWAuCi0tCi0tCSogbG9hZG1zZ2NhdC5jICh1c2VfbW1hcCk6IERlZmluZSBpZiBjb21waWxlZCBmb3IgZ2xpYmMuCi0tCi0tCSogYmluZHRleHRkb20uYzogSW5jbHVkZSBhbGwgdGhvc2Ugc3RhbmRhcmQgaGVhZGVycwotLQl1bmNvbmRpdGlvbmFsbHkgaWYgX0xJQkMgaXMgZGVmaW5lZC4KLS0KLS0JKiBmaW5kZG9tYWluLmM6IEZpeCAyIHRpbWVzIGRlZmllbmQgLT4gZGVmaW5lZC4KLS0KLS0JKiB0ZXh0ZG9tYWluLmM6IEluY2x1ZGUgbGliaW50bC5oIGluc3RlYWQgb2YgbGliZ2V0dGV4dC5oIHdoZW4KLS0JY29tcGlsaW5nIGZvciBnbGliYy4gIEluY2x1ZGUgYWxsIHRob3NlIHN0YW5kYXJkIGhlYWRlcnMKLS0JdW5jb25kaXRpb25hbGx5IGlmIF9MSUJDIGlzIGRlZmluZWQuCi0tCi0tCSogbG9jYWxlYWxpYXMuYywgbG9hZG1zZ2NhdC5jOiBQcmVwYXJlIHRvIGJlIGNvbXBpbGVkIGluIGdsaWJjLgotLQotLQkqIGdldHRleHQuYzoKLS0JSW5jbHVkZSBsaWJpbnRsLmggaW5zdGVhZCBvZiBsaWJnZXR0ZXh0Lmggd2hlbiBjb21waWxpbmcgZm9yIGdsaWJjLgotLQlHZXQgTlVMTCBmcm9tIHN0ZGRlZi5oIGlmIHdlIGNvbXBpbGUgZm9yIGdsaWJjLgotLQotLQkqIGZpbmRkb21haW4uYzogSW5jbHVkZSBsaWJpbnRsLmggaW5zdGVhZCBvZiBsaWJnZXR0ZXh0Lmggd2hlbgotLQljb21waWxpbmcgZm9yIGdsaWJjLiAgSW5jbHVkZSBhbGwgdGhvc2Ugc3RhbmRhcmQgaGVhZGVycwotLQl1bmNvbmRpdGlvbmFsbHkgaWYgX0xJQkMgaXMgZGVmaW5lZC4KLS0KLS0JKiBkY2dldHRleHQuYzogSW5jbHVkZSBhbGwgdGhvc2Ugc3RhbmRhcmQgaGVhZGVycyB1bmNvbmRpdGlvbmFsbHkKLS0JaWYgX0xJQkMgaXMgZGVmaW5lZC4KLS0KLS0JKiBkZ2V0dGV4dC5jOiBJZiBjb21waWxlZCBpbiBnbGliYyBpbmNsdWRlIGxpYmludGwuaCBpbnN0ZWFkIG9mCi0tCWxpYmdldHRleHQuaC4KLS0JKGxvY2FsZS5oKTogRG9uJ3QgcmVseSBvbiBIQVZFX0xPQ0FMRV9IIHdoZW4gY29tcGlsaW5nIGZvciBnbGliYy4KLS0KLS0JKiBkY2dldHRleHQuYzogSWYgY29tcGlsZWQgaW4gZ2xpYmMgaW5jbHVkZSBsaWJpbnRsLmggaW5zdGVhZCBvZgotLQlsaWJnZXR0ZXh0LmguCi0tCShnZXRjd2QpOiBEb24ndCByZWx5IG9uIEhBVkVfR0VUQ1dEIHdoZW4gY29tcGlsaW5nIGZvciBnbGliYy4KLS0KLS0JKiBiaW5kdGV4dGRvbS5jOgotLQlJZiBjb21waWxlZCBpbiBnbGliYyBpbmNsdWRlIGxpYmludGwuaCBpbnN0ZWFkIG9mIGxpYmdldHRleHQuaC4KLS0KLS1Nb24gU2VwIDI1IDIyOjIzOjA2IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogbG9jYWxlYWxpYXMuYyAoX25sX2V4cGFuZF9hbGlhcyk6IERvbid0IGNhbGwgYnNlYXJjaCBpZiBOTUFQIDw9IDAuCi0tCVJlcG9ydGVkIGJ5IE1hcmN1cyBEYW5pZWxzLgotLQotLQkqIGNhdC1jb21wYXQuYyAoYmluZHRleHRkb21haW4pOgotLQlTdHJpbmcgdXNlZCBpbiBwdXRlbnYgbXVzdCBub3QgYmUgcmVjeWNsZWQuCi0tCVJlcG9ydGVkIGJ5IE1hcmN1cyBEYW5pZWxzLgotLQotLQkqIGxpYmdldHRleHQuaCAoX19VU0VfR05VX0dFVFRFWFQpOgotLQlBZGRpdGlvbmFsIHN5bWJvbCB0byBzaWduYWwgdGhhdCB3ZSB1c2UgR05VIGdldHRleHQKLS0JbGlicmFyeS4KLS0KLS0JKiBjYXQtY29tcGF0LmMgKGJpbmR0ZXh0ZG9tYWluKToKLS0JRml4IGJ1ZyB3aXRoIHRoZSBzdHJhbmdlIHN0cGNweSByZXBsYWNlbWVudC4KLS0JUmVwb3J0ZWQgYnkgTmVsc29uIEJlZWJlLgotLQotLVNhdCBTZXAgMjMgMDg6MjM6NTEgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBjYXQtY29tcGF0LmM6IEluY2x1ZGUgPHN0cmluZy5oPiBmb3Igc3RwY3B5IHByb3RvdHlwZS4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jIChyZWFkX2FsaWFzX2ZpbGUpOgotLQlXaGlsZSBleHBhbmQgc3RyZHVwIGNvZGUgdGVtcG9yYXJ5IHZhcmlhYmxlIGBjcCcgaGlkZWQKLS0JaGlnaGVyIGxldmVsIHZhcmlhYmxlIHdpdGggc2FtZSBuYW1lLiAgUmVuYW1lIHRvIGB0cCcuCi0tCi0tCSogdGV4dGRvbWFpbi5jICh0ZXh0ZG9tYWluKToKLS0JQXZvaWQgd2FybmluZyBieSB1c2luZyB0ZW1wb3JhcnkgdmFyaWFibGUgaW4gc3RyZHVwIGNvZGUuCi0tCi0tCSogZmluZGRvbWFpbi5jIChfbmxfZmluZF9kb21haW4pOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBhcHBsaWNhdGlvbicuCi0tCi0tVGh1IFNlcCAyMSAxNTo1MTo0NCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGxvY2FsZWFsaWFzLmMgKGFsaWFzX2NvbXBhcmUpOgotLQlVc2Ugc3RyY2FzZWNtcCgpIG9ubHkgaWYgYXZhaWxhYmxlLiAgRWxzZSB1c2UKLS0JaW1wbGVtZW50YXRpb24gaW4gcGxhY2UuCi0tCi0tCSogaW50bC1jb21wYXQuYzoKLS0JV3JhcHBlciBmdW5jdGlvbnMgbm93IGNhbGwgKl9fIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIF9fKi4KLS0KLS0JKiBsaWJnZXR0ZXh0Lmg6IERlY2xhcmUgcHJvdG90eXBlcyBmb3IgKl9fIGZ1bmN0aW9ucyBpbnN0ZWFkIGZvciBfXyouCi0tCi0tCSogY2F0LWNvbXBhdC5jLCBsb2FkbXNnY2F0LmM6Ci0tCURvbid0IHVzZSB4bWFsbG9jLCB4c3RyZHVwLCBhbmQgc3RwY3B5LiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBub3QgcGFydAotLQlvZiB0aGUgc3RhbmRhcmQgbGliYyBhbmQgc28gcHJldmVudCBsaWJpbnRsLmEgZnJvbSBiZWluZyB1c2VkCi0tCXN0YW5kYWxvbmUuCi0tCi0tCSogYmluZHRleHRkb20uYzoKLS0JRG9uJ3QgdXNlIHhtYWxsb2MsIHhzdHJkdXAsIGFuZCBzdHBjcHkuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vdCBwYXJ0Ci0tCW9mIHRoZSBzdGFuZGFyZCBsaWJjIGFuZCBzbyBwcmV2ZW50IGxpYmludGwuYSBmcm9tIGJlaW5nIHVzZWQKLS0Jc3RhbmRhbG9uZS4KLS0JUmVuYW1lIHRvIGJpbmR0ZXh0ZG9tYWluX18gaWYgbm90IHVzZWQgaW4gR05VIEMgTGlicmFyeS4KLS0KLS0JKiBkZ2V0dGV4dC5jOgotLQlSZW5hbWUgZnVuY3Rpb24gdG8gZGdldHRleHRfXyBpZiBub3QgdXNlZCBpbiBHTlUgQyBMaWJyYXJ5LgotLQotLQkqIGdldHRleHQuYzoKLS0JRG9uJ3QgdXNlIHhtYWxsb2MsIHhzdHJkdXAsIGFuZCBzdHBjcHkuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vdCBwYXJ0Ci0tCW9mIHRoZSBzdGFuZGFyZCBsaWJjIGFuZCBzbyBwcmV2ZW50IGxpYmludGwuYSBmcm9tIGJlaW5nIHVzZWQKLS0Jc3RhbmRhbG9uZS4KLS0JRnVuY3Rpb25zIG5vdyBjYWxsZWQgZ2V0dGV4dF9fIGlmIG5vdCB1c2VkIGluIEdOVSBDIExpYnJhcnkuCi0tCi0tCSogZGNnZXR0ZXh0LmMsIGxvY2FsZWFsaWFzLmMsIHRleHRkb21haW4uYywgZmluZGRvbWFpbi5jOgotLQlEb24ndCB1c2UgeG1hbGxvYywgeHN0cmR1cCwgYW5kIHN0cGNweS4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbm90IHBhcnQKLS0Jb2YgdGhlIHN0YW5kYXJkIGxpYmMgYW5kIHNvIHByZXZlbnQgbGliaW50bC5hIGZyb20gYmVpbmcgdXNlZAotLQlzdGFuZGFsb25lLgotLQotLVN1biBTZXAgMTcgMjM6MTQ6NDkgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBmaW5kZG9tYWluLmM6IENvcnJlY3Qgc29tZSBidWdzIGluIGhhbmRsaW5nIG9mIENFTiBzdGFuZGFyZAotLSAJbG9jYWxlIGRlZmluaXRpb25zLgotLQotLVRodSBTZXAgIDcgMDE6NDk6MjggMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBmaW5kZG9tYWluLmM6IEltcGxlbWVudCBDRU4gc3ludGF4LgotLQotLQkqIGdldHRleHRQLmggKGxvYWRlZF9kb21haW4pOiBFeHRlbmQgbnVtYmVyIG9mIHN1Y2Nlc3NvcnMgdG8gMzEuCi0tCi0tU2F0IEF1ZyAxOSAxOToyNToyOSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChhbGlhc3BhdGgpOiBSZW1vdmUgcGF0aCB0byBYMTEgbG9jYWxlIGRpci4KLS0KLS0JKiBNYWtlZmlsZS5pbjogTWFrZSBpbnN0YWxsLXNyYyBkZXBlbmQgb24gaW5zdGFsbC4gIFRoaXMgaGVscHMKLS0gCWdldHRleHQgdG8gaW5zdGFsbCB0aGUgc291cmNlcyBhbmQgb3RoZXIgcGFja2FnZXMgY2FuIHVzZSB0aGUKLS0gCWluc3RhbGwgZ29hbC4KLS0KLS1TYXQgQXVnIDE5IDE1OjE5OjMzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKHVuaW5zdGFsbCk6IFJlbW92ZSBzdHVmZiBpbnN0YWxsZWQgYnkgaW5zdGFsbC1zcmMuCi0tCi0tVHVlIEF1ZyAxNSAxMzoxMzo1MyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIFZFUlNJT04uaW46IEluaXRpYWwgcmV2aXNpb24uCi0tCi0tCSogTWFrZWZpbGUuaW4gKERJU1RGSUxFUyk6Ci0tCUFkZCBWRVJTSU9OIGZpbGUuICBUaGlzIGlzIG5vdCBuZWNlc3NhcnkgZm9yIGdldHRleHQsIGJ1dAotLQlmb3Igb3RoZXIgcGFja2FnZXMgdXNpbmcgdGhpcyBsaWJyYXJ5LgotLQotLVR1ZSBBdWcgMTUgMDY6MTY6NDQgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBnZXR0ZXh0UC5oIChfbmxfZmluZF9kb21haW4pOgotLQlOZXcgcHJvdG90eXBlIGFmdGVyIGNoYW5naW5nIHNlYXJjaCBzdHJhdGVneS4KLS0KLS0JKiBmaW5kZG9tYWluLmMgKF9ubF9maW5kX2RvbWFpbik6Ci0tCVdlIG5vdyB0cnkgb25seSB0byBmaW5kIGEgc3BlY2lmaWVkIGNhdGFsb2cuICBGYWxsIGJhY2sgdG8gb3RoZXIKLS0JY2F0YWxvZ3MgbGlzdGVkIGluIHRoZSBsb2NhbGUgbGlzdCBpcyBub3cgZG9uZSBpbiBfX2RjZ2V0dGV4dC4KLS0KLS0JKiBkY2dldHRleHQuYyAoX19kY2dldHRleHQpOgotLQlOb3cgd2UgcHJvdmlkZSBtZXNzYWdlIGZhbGwgYmFjayBldmVuIHRvIGRpZmZlcmVudCBsYW5ndWFnZXMuCi0tCUkuZS4gaWYgYSBtZXNzYWdlIGlzIG5vdCBhdmFpbGFibGUgaW4gb25lIGxhbmd1YWdlIGFsbCB0aGUgb3RoZXIKLS0gCWluIHRoZSBsb2NhbGUgbGlzdCBhIHRyaWVkLiAgRm9ybWVybHkgZmFsbCBiYWNrIHdhcyBvbmx5IHBvc3NpYmxlCi0tIAl3aXRoaW4gb25lIGxhbmd1YWdlLiAgSW1wbGVtZW50ZWQgYnkgbW92aW5nIG9uZSBsb29wIGZyb20KLS0gCV9ubF9maW5kX2RvbWFpbiB0byBoZXJlLgotLQotLU1vbiBBdWcgMTQgMjM6NDU6NTAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoZ2V0dGV4dHNyY2Rpcik6Ci0tCURpcmVjdG9yeSB3aGVyZSBzb3VyY2Ugb2YgR05VIGdldHRleHQgbGlicmFyeSBhcmUgbWFkZQotLQlhdmFpbGFibGUuCi0tCShJTlNUQUxMLCBJTlNUQUxMX0RBVEEpOiBQcm9ncmFtcyB1c2VkIGZvciBpbnN0YWxsaW5nIHNvdXJjZXMuCi0tCShnZXR0ZXh0LXNyYyk6IE5ldy4gIFJ1bGUgdG8gaW5zdGFsbCBHTlUgZ2V0dGV4dCBzb3VyY2VzIGZvciB1c2UgaW4KLS0JZ2V0dGV4dGl6ZSBzaGVsbCBzY3JpcHQuCi0tCi0tU3VuIEF1ZyAxMyAxNDo0MDo0OCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGxvYWRtc2djYXQuYyAoX25sX2xvYWRfZG9tYWluKToKLS0JVXNlIG1tYXAgZm9yIGxvYWRpbmcgb25seSB3aGVuIG11bm1hcCBmdW5jdGlvbiBpcwotLQlhbHNvIGF2YWlsYWJsZS4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbCk6IERlcGVuZCBvbiBgYWxsJyBnb2FsLgotLQotLVdlZCBBdWcgIDkgMTE6MDQ6MzMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jIChyZWFkX2FsaWFzX2ZpbGUpOgotLQlEbyBub3Qgb3ZlcndyaXRlICdcbicgd2hlbiB0ZXJtaW5hdGluZyBhbGlhcyB2YWx1ZSBzdHJpbmcuCi0tCi0tCSogbG9jYWxlYWxpYXMuYyAocmVhZF9hbGlhc19maWxlKToKLS0JSGFuZGxlIGxvbmcgbGluZXMuICBJZ25vcmUgdGhlIHJlc3Qgbm90IGZpdHRpbmcgaW4KLS0JdGhlIGJ1ZmZlciBhZnRlciB0aGUgaW5pdGlhbCBgZmdldHMnIGNhbGwuCi0tCi0tV2VkIEF1ZyAgOSAwMDo1NDoyOSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGdldHRleHRQLmggKF9ubF9sb2FkX2RvbWFpbik6Ci0tCUFkZCBwcm90b3R5cGUsIHJlcGxhY2luZyBwcm90b3R5cGUgZm9yIF9ubF9sb2FkX21zZ19jYXQuCi0tCi0tCSogZmluZGRvbWFpbi5jIChfbmxfZmluZF9kb21haW4pOgotLQlSZW1vdmUgdW5uZWVkZWQgdmFyaWFibGUgZmlsZW5hbWUgYW5kIGZpbGVuYW1lX2xlbi4KLS0JKGV4cGFuZF9hbGlhcyk6IFJlbW92ZSBwcm90b3R5cGUgYmVjYXVzZSBmdW5jdGlvbnMgZG9lcyBub3QKLS0gCWV4aXN0IGFueW1vcmUuCi0tCi0tCSogbG9jYWxlYWxpYXMuYyAocmVhZF9hbGlhc19maWxlKToKLS0JQ2hhbmdlIHR5cGUgb2YgZm5hbWVfbGVuIHBhcmFtZXRlciB0byBpbnQuCi0tCSh4bWFsbG9jKTogQWRkIHByb3RvdHlwZS4KLS0KLS0JKiBsb2FkbXNnY2F0LmM6IEJldHRlciBwcm90b3R5cGVzIGZvciB4bWFsbG9jLgotLQotLVR1ZSBBdWcgIDggMjI6MzA6MzkgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBmaW5kZG9tYWluLmMgKF9ubF9maW5kX2RvbWFpbik6Ci0tCUFsbG93IGFsaWFzIG5hbWUgdG8gYmUgY29uc3RydWN0ZWQgZnJvbSB0aGUgZm91ciBjb21wb25lbnRzLgotLQotLQkqIE1ha2VmaWxlLmluIChhbGlhc3BhdGgpOiBOZXcgdmFyaWFibGUuICBTZXQgdG8gcHJlbGltaW5hcnkgdmFsdWUuCi0tCShTT1VSQ0VTKTogQWRkIGxvY2FsZWFsaWFzLmMuCi0tCShPQkpFQ1RTKTogQWRkIGxvY2FsZWFsaWFzLm8uCi0tCi0tCSogZ2V0dGV4dFAuaDogQWRkIHByb3RvdHlwZSBmb3IgX25sX2V4cGFuZF9hbGlhcy4KLS0KLS0JKiBmaW5kZG9tYWluLmM6IEFsaWFzaW5nIGhhbmRsZWQgaW4gaW50bC9sb2NhbGVhbGlhcy5jLgotLQotLQkqIGxvY2FsZWFsaWFzLmM6IEFsaWFzaW5nIGZvciBsb2NhbGUgbmFtZXMuCi0tCi0tCSogYmluZHRleHRkb20uYzogQmV0dGVyIHByb3RvdHlwZXMgZm9yIHhtYWxsb2MgYW5kIHhzdHJkdXAuCi0tCi0tTW9uIEF1ZyAgNyAyMzo0Nzo0MiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChESVNURklMRVMpOiBnZXR0ZXh0LnBlcmwgaXMgbm93IGZvdW5kIGluIG1pc2MvLgotLQotLQkqIGNhdC1jb21wYXQuYyAoYmluZHRleHRkb21haW4pOgotLQlDb3JyZWN0IGltcGxlbWVudGF0aW9uLiAgZGlybmFtZSBwYXJhbWV0ZXIgd2FzIG5vdCB1c2VkLgotLQlSZXBvcnRlZCBieSBNYXJjdXMgRGFuaWVscy4KLS0KLS0JKiBnZXR0ZXh0UC5oIChsb2FkZWRfZG9tYWluKToKLS0JTmV3IGZpZWxkcyBgc3VjY2Vzc29yJyBhbmQgYGRlY2lkZWQnIGZvciBvbywgbGF6eQotLQltZXNzYWdlIGhhbmRsaW5nIGltcGxlbWVudGF0aW9uLgotLQotLQkqIGRjZ2V0dGV4dC5jOgotLQlBZG9wdCBmb3Igb28sIGxhenkgbWVzc2FnZSBoYW5kbGlpbmcuCi0tICAJTm93IHdlIGNhbiBpbmhlcml0IHRyYW5zbGF0aW9ucyBmcm9tIGxlc3Mgc3BlY2lmaWMgbG9jYWxlcy4KLS0JKGZpbmRfbXNnKTogTmV3IGZ1bmN0aW9uLgotLQotLQkqIGxvYWRtc2djYXQuYywgZmluZGRvbWFpbi5jOgotLQlDb21wbGV0ZSByZXdyaXRlLiAgSW1wbGVtZW50IG9vLCBsYXp5IG1lc3NhZ2UgaGFuZGxpbmcgOi0pLgotLSAgCVdlIG5vdyBoYXZlIGFuIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGUgYExBTkdVQUdFJyB3aXRoCi0tIAlhIGhpZ2hlciBwcmlvcml0eSB0aGFuIExDX0FMTCBmb3IgdGhlIExDX01FU1NBR0UgbG9jYWxlLgotLSAgCUhlcmUgd2UgY2FuIHNldCBhIGNvbG9uIHNlcGFyYXRlZCBsaXN0IG9mIHNwZWNpZmljYXRpb25zIGVhY2gKLS0gCW9mIHRoZSBmb3JtIGBsYW5ndWFnZVtfdGVycml0b3J5Wy5jb2Rlc2V0XV1bQG1vZGlmaWVyXScuCi0tCi0tU2F0IEF1ZyAgNSAwOTo1NTo0MiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGZpbmRkb21haW4uYyAodW5pc3RkLmgpOgotLQlJbmNsdWRlIHRvIGdldCBfUENfUEFUSF9NQVggZGVmaW5lZCBvbiBzeXN0ZW0gaGF2aW5nIGl0LgotLQotLUZyaSBBdWcgIDQgMjI6NDI6MDAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBmaW5kZG9tYWluLmMgKHN0cGNweSk6IEluY2x1ZGUgcHJvdG90eXBlLgotLQotLQkqIE1ha2VmaWxlLmluIChkaXN0KTogUmVtb3ZlIGBjb3B5aW5nIGluc3RlYWQnIG1lc3NhZ2UuCi0tCi0tV2VkIEF1ZyAgMiAxODo1MjowMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChJRCwgVEFHUyk6IERvIG5vdCB1c2UgJF4uCi0tCi0tVHVlIEF1ZyAgMSAyMDowNzoxMSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChUQUdTLCBJRCk6IFVzZSAkXiBhcyBjb21tYW5kIGFyZ3VtZW50LgotLQkoVEFHUyk6IEdpdmUgZXRhZ3MgLW8gb3B0aW9uIHQgd3JpdGUgdG8gY3VycmVudCBkaXJlY3RvcnksCi0tIAlub3QgJChzcmNkaXIpLgotLQkoSUQpOiBVc2UgJChzcmNkaXIpIGluc3RlYWQgb3MgJCh0b3Bfc3JjZGlyKS9zcmMuCi0tCShkaXN0Y2xlYW4pOiBSZW1vdmUgSUQuCi0tCi0tU3VuIEp1bCAzMCAxMTo1MTo0NiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChnbnVsb2NhbGVkaXIpOgotLQlOZXcgdmFyaWFibGUsIGFsd2F5cyB1c2luZyBzaGFyZS8gZm9yIGRhdGEgZGlyZWN0b3J5LgotLQkoREVGUyk6IEFkZCBHTlVMT0NBTEVESVIsIHVzZWQgaW4gZmluZGRvbWFpbi5jLgotLQotLQkqIGZpbmRkb21haW4uYyAoX25sX2RlZmF1bHRfZGlybmFtZSk6Ci0tCVNldCB0byBHTlVMT0NBTEVESVIsIGJlY2F1c2UgaXQgYWx3YXlzIGhhcyB0byBwb2ludAotLQl0byB0aGUgZGlyZWN0b3J5IHdoZXJlIEdOVSBnZXR0ZXh0IExpYnJhcnkgd3JpdGVzIGl0IHRvLgotLQotLQkqIGludGwtY29tcGF0LmMgKHRleHRkb21haW4sIGJpbmR0ZXh0ZG9tYWluKToKLS0JVW5kZWZpbmUgbWFjcm9zIGJlZm9yZSBmdW5jdGlvbiBkZWZpbml0aW9uLgotLQotLVNhdCBKdWwgMjIgMDE6MTA6MDIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBsaWJnZXR0ZXh0LmggKF9MSUJJTlRMX0gpOgotLQlQcm90ZWN0IGRlZmluaXRpb24gaW4gY2FzZSB3aGVyZSB0aGlzIGZpbGUgaXMgaW5jbHVkZWQgYXMKLS0JbGliZ2V0dGV4dC5oIG9uIFNvbGFyaXMgbWFjaGluZXMuICBBZGQgY29tbWVudCBhYm91dCB0aGlzLgotLQotLVdlZCBKdWwgMTkgMDI6MzY6NDIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBpbnRsLWNvbXBhdC5jICh0ZXh0ZG9tYWluKTogQ29ycmVjdCB0eXBvLgotLQotLVdlZCBKdWwgMTkgMDE6NTE6MzUgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBkY2dldHRleHQuYyAoZGNnZXR0ZXh0KTogRnVuY3Rpb24gbm93IGNhbGxlZCBfX2RjZ2V0dGV4dC4KLS0KLS0JKiBkZ2V0dGV4dC5jIChkZ2V0dGV4dCk6IE5vdyBjYWxsZWQgX19kZ2V0dGV4dCBhbmQgY2FsbHMKLS0gCV9fZGNnZXR0ZXh0LgotLQotLQkqIGdldHRleHQuYyAoZ2V0dGV4dCk6Ci0tCUZ1bmN0aW9uIG5vdyBjYWxsZWQgX19nZXR0ZXh0IGFuZCBjYWxscyBfX2RnZXR0ZXh0LgotLQotLQkqIHRleHRkb21haW4uYyAodGV4dGRvbWFpbik6IEZ1bmN0aW9uIG5vdyBjYWxsZWQgX190ZXh0ZG9tYWluLgotLQotLQkqIGJpbmR0ZXh0ZG9tLmMgKGJpbmR0ZXh0ZG9tYWluKTogRnVuY3Rpb24gbm93IGNhbGxlZAotLSAJX19iaW5kdGV4dGRvbWFpbi4KLS0KLS0JKiBpbnRsLWNvbXBhdC5jOiBJbml0aWFsIHJldmlzaW9uLgotLQotLQkqIE1ha2VmaWxlLmluIChTT1VSQ0VTKTogQWRkIGludGwtY29tcGF0LmMuCi0tCShPQkpFQ1RTKTogV2UgYWx3YXlzIGNvbXBpbGUgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgZnVuY3Rpb25zLgotLSAgCU9CSkVDVFMgY29udGFpbnMgYWxsIG9iamVjdHMgYnV0IGNhdC1jb21wYXQubywgLi4vcG8vY2F0LWlmLXRibC5vLAotLSAJYW5kIGludGwtY29tcGF0Lm8uCi0tICAJKEdFVFRPQkpTKTogQ29udGFpbnMgbm93IG9ubHkgaW50bC1jb21wYXQuby4KLS0KLS0JKiBsaWJnZXR0ZXh0Lmg6Ci0tCVJlLWluY2x1ZGUgcHJvdGVjdGlvbiBtYXRjaGVzIGR1YWxpc3RpYyBjaGFyYWN0ZXIgb2YgbGliZ2V0dGV4dC5oLgotLQlGb3IgYWxsIGZ1bmN0aW9ucyBpbiBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGRlZmluZSBfXyBjb3VudGVyIHBhcnQuCi0tCi0tCSogZmluZGRvbWFpbi5jIChzdHJjaHIpOiBEZWZpbmUgYXMgaW5kZXggaWYgbm90IGZvdW5kIGluIEMgbGlicmFyeS4KLS0JKF9ubF9maW5kX2RvbWFpbik6IEZvciByZWxhdGl2ZSBwYXRocyBwYXN0ZSAvIGluIGJldHdlZW4uCi0tCi0tVHVlIEp1bCAxOCAxNjozNzo0NSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGxvYWRtc2djYXQuYywgZmluZGRvbWFpbi5jOiBBZGQgaW5jbHVzaW9uIG9mIHN5cy90eXBlcy5oLgotLQotLQkqIHhvcGVuLW1zZy5zZWQ6IEZpeCBidWcgd2l0aCBgbXNnc3RyICIiJyBsaW5lcy4KLS0JQSBsaXR0bGUgYml0IGJldHRlciBjb21tZW50cy4KLS0KLS1UdWUgSnVsIDE4IDAxOjE4OjI3IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW46Ci0tCXBvLW1vZGUuZWwsIG1ha2VsaW5rcywgY29tYmluZS1zaCBhcmUgbm93IGZvdW5kIGluIC4uL21pc2MuCi0tCi0tCSogcG8tbW9kZS5lbCwgbWFrZWxpbmtzLCBjb21iaW5lLXNoLCBlbGlzcC1jb21wOgotLQlNb3ZlZCB0byAuLi9taXNjLy4KLS0KLS0JKiBsaWJnZXR0ZXh0LmgsIGdldHRleHRQLmgsIGdldHRleHQuaDogVW5pZm9ybSB0ZXN0IGZvciBfX1NURENfXy4KLS0KLS1TdW4gSnVsIDE2IDIyOjMzOjAyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKElOU1RBTEwsIElOU1RBTExfREFUQSk6IE5ldyB2YXJpYWJsZXMuCi0tCShpbnN0YWxsLWRhdGEsIHVuaW5zdGFsbCk6IEluc3RhbGwvdW5pbnN0YWxsIC5lbGMgZmlsZS4KLS0KLS0JKiBwby1tb2RlLmVsIChJbnN0YWxsYXRpb24gY29tbWVudCk6Ci0tCUFkZCAucG94IGFzIHBvc3NpYmxlIGV4dGVuc2lvbiBvZiAucG8gZmlsZXMuCi0tCi0tU3VuIEp1bCAxNiAxMzoyMzoyNyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGVsaXNwLWNvbXA6IENvbXBsZXRlIG5ldyB2ZXJzaW9uIGJ5IEZyYW5jLG9pczogVGhpcyBkb2VzIG5vdAotLSAJZmFpbCB3aGVuIG5vdCBjb21waWxpbmcgaW4gdGhlIHNvdXJjZSBkaXJlY3RvcnkuCi0tCi0tU3VuIEp1bCAxNiAwMDoxMjoxNyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluICguLi9wby9jYXQtaWQtdGJsLm8pOgotLQlVc2UgJChNQUtFKSBpbnN0ZWFkIG9mIG1ha2UgZm9yIHJlY3Vyc2l2ZSBtYWtlLgotLQotLQkqIE1ha2VmaWxlLmluICguZWwuZWxjKTogVXNlICQoU0hFTEwpIGluc3RlYWQgb2YgL2Jpbi9zaC4KLS0JKGluc3RhbGwtZXhlYyk6IEFkZCBtaXNzaW5nIGR1bW15IGdvYWwuCi0tCShpbnN0YWxsLWRhdGEsIHVuaW5zdGFsbCk6IEAgaW4gbXVsdGktbGluZSBzaGVsbCBjb21tYW5kIGF0Ci0tIAliZWdpbm5pbmcsIG5vdCBpbiBmcm9udCBvZiBlY2hvLiAgUmVwb3J0ZWQgYnkgRXJpYyBCYWNrdXMuCi0tCi0tU2F0IEp1bCAxNSAwMDoyMToyOCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChESVNURklMRVMpOgotLQlSZW5hbWUgbGliZ2V0dGV4dC5wZXJsIHRvIGdldHRleHQucGVybCB0byBmaXQgaW4gMTQgY2hhcnMKLS0JZmlsZSBzeXN0ZW1zLgotLQotLQkqIGdldHRleHQucGVybDoKLS0gCVJlbmFtZSB0byBnZXR0ZXh0LnBlcmwgdG8gZml0IGluIDE0IGNoYXJzIGZpbGUgc3lzdGVtcy4KLS0KLS1UaHUgSnVsIDEzIDIzOjE3OjIwIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogY2F0LWNvbXBhdC5jOiBJZiAhU1REQ19IRUFERVJTIHRyeSB0byBpbmNsdWRlIG1hbGxvYy5oLgotLQotLVRodSBKdWwgMTMgMjA6NTU6MDIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBwbzJ0Ymwuc2VkLmluOiBQcmV0dHkgcHJpbnRpbmcuCi0tCi0tCSogbGludXgtbXNnLnNlZCwgeG9wZW4tbXNnLnNlZDoKLS0JQ29ycmVjdCBidWdzIHdpdGggaGFuZGxpbmcgc3Vic3RpdHV0ZSBmbGFncyBpbiBicmFuY2hlcy4KLS0KLS0JKiBoYXNoLXN0cmluZy5oIChoYXNoX3N0cmluZyk6Ci0tCU9sZCBLJlIgY29tcGlsZXJzIGRvbid0IHVuZGVyIHN0YW5kIGB1bnNpZ25lZCBjaGFyJy4KLS0KLS0JKiBnZXR0ZXh0LmggKG5sc191aW50MzIpOgotLQlTb21lIG9sZCBLJlIgY29tcGlsZXJzIChlZyBIUCkgZG9uJ3QgdW5kZXJzdGFuZCBgdW5zaWduZWQgaW50Jy4KLS0KLS0JKiBjYXQtY29tcGF0LmMgKG1zZ190b19jYXRfaWQpOiBEZS1BTlNJLWZ5IHByb3RvdHlwZXMuCi0tCi0tVGh1IEp1bCAxMyAwMTozNDozMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChFTENGSUxFUyk6IE5ldyB2YXJpYWJsZS4KLS0JKERJU1RGSUxFUyk6IEFkZCBlbGlzcC1jb21wLgotLQlBZGQgaW1wbGljaXQgcnVsZSBmb3IgLmVsIC0+IC5lbGMgY29tcGlsYXRpb24uCi0tCShpbnN0YWxsLWRhdGEpOiBpbnN0YWxsICRFTENGSUxFUwotLQkoY2xlYW4pOiByZW5hbWVkIHBvLXRvLXRibCBhbmQgcG8tdG8tbXNnIHRvIHBvMnRibCBhbmQgcG8ybXNnIHJlc3AuCi0tCi0tCSogZWxpc3AtY29tcDogSW5pdGlhbCByZXZpc2lvbgotLQotLVdlZCBKdWwgMTIgMTY6MTQ6NTIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbjoKLS0JY2F0LWlkLXRibC5jIGlzIG5vdyBmb3VuZCBpbiBwby8uICBUaGlzIGVuYWJsZXMgdXMgdG8gdXNlIGFuIGlkZW50aWNhbAotLQlpbnRsLyBkaXJlY3RvcnkgaW4gYWxsIHBhY2thZ2VzLgotLQotLQkqIGRjZ2V0dGV4dC5jIChkY2dldHRleHQpOiBoYXNoaW5nIGRvZXMgbm90IHdvcmsgZm9yIHRhYmxlIHNpemUgPD0gMi4KLS0KLS0JKiB0ZXh0ZG9tYWluLmM6IGZpeCB0eXBvICgjaWYgZGVmIC0+ICNpZiBkZWZpbmVkKQotLQotLVR1ZSBKdWwgMTEgMTg6NDQ6NDMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoc3RhbXAtY2F0LWlkKTogdXNlIHRvcF9zcmNkaXIgdG8gYWRkcmVzcyBzb3VyY2UgZmlsZXMKLS0JKERJU1RGSUxFUyxkaXN0Y2xlYW4pOiBtb3ZlIHR1cGRhdGUucGVybCB0byBzcmMvCi0tCi0tCSogcG8tdG8tdGJsLnNlZC5pbjoKLS0JYWRkIGFkZGl0aW9uYWwganVtcCB0byBjbGVhciBjaGFuZ2UgZmxhZyB0byByZWNvZ25pemUgbXVsdGlsaW5lIHN0cmluZ3MKLS0KLS1UdWUgSnVsIDExIDAxOjMyOjUwIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogdGV4dGRvbWFpbi5jOiBQcm90ZWN0IGluY2x1c2lvbiBvZiBzdGRsaWIuaCBhbmQgc3RyaW5nLmguCi0tCi0tCSogbG9hZG1zZ2NhdC5jOiBQcm90ZWN0IGluY2x1c2lvbiBvZiBzdGRsaWIuaC4KLS0KLS0JKiBsaWJnZXR0ZXh0Lmg6IFByb3RlY3QgaW5jbHVzaW9uIG9mIGxvY2FsZS5oLgotLQlBbGxvdyB1c2UgaW4gQysrIHByb2dyYW1zLgotLQlEZWZpbmUgTlVMTCBpcyBub3QgaGFwcGVuZWQgYWxyZWFkeS4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoRElTVEZJTEVTKTogc2hpcCBwby10by10Ymwuc2VkLmluIGluc3RlYWQgb2YKLS0JcG8tdG8tdGJsLnNlZC4KLS0JKGRpc3RjbGVhbik6IHJlbW92ZSBwby10by10Ymwuc2VkIGFuZCB0dXBkYXRlLnBlcmwuCi0tCi0tCSogdHVwZGF0ZS5wZXJsLmluOiBTdWJzdGl0dXRlIFBlcmwgcGF0aCBldmVuIGluIGV4ZWMgbGluZS4KLS0JRG9uJ3QgaW5jbHVkZSBlbnRyaWVzIHdpdGhvdXQgdHJhbnNsYXRpb24gZnJvbSBvbGQgLnBvIGZpbGUuCi0tCi0tVHVlIEp1bCAgNCAwMDo0MTo1MSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIHR1cGRhdGUucGVybC5pbjogdXNlICJVcGRhdGVkOiAiIGluIG1zZ2lkICIiLgotLQotLQkqIGNhdC1jb21wYXQuYzogRml4IHR5cG8gKExPQ0FMRElSIC0+IExPQ0FMRURJUikuCi0tIAlEZWZpbmUgZ2V0ZW52IGlmICFfX1NURENfXy4KLS0KLS0JKiBiaW5kdGV4dGRvbS5jOiBQcm90ZWN0IHN0ZGxpYi5oIGFuZCBzdHJpbmcuaCBpbmNsdXNpb24uCi0tIAlEZWZpbmUgZnJlZSBpZiAhX19TVERDX18uCi0tCi0tCSogZmluZGRvbWFpbi5jOiBDaGFuZ2UgREVGX01TR19ET01fRElSIHRvIExPQ0FMRURJUi4KLS0gCURlZmluZSBmcmVlIGlmICFfX1NURENfXy4KLS0KLS0JKiBjYXQtY29tcGF0LmM6IENoYW5nZSBERUZfTVNHX0RPTV9ESVIgdG8gTE9DQUxFRElSLgotLQotLU1vbiBKdWwgIDMgMjM6NTY6MzAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbjogVXNlIExPQ0FMRURJUiBpbnN0ZWFkIG9mIERFRl9NU0dfRE9NX0RJUi4KLS0JUmVtb3ZlIHVubmVlZGVkICQoc3JjZGlyKSBmcm9tIE1ha2VmaWxlLmluIGRlcGVuZGVuY3kuCi0tCi0tCSogbWFrZWxpbmtzOiBBZGQgY29weXJpZ2h0IGFuZCBzaG9ydCBkZXNjcmlwdGlvbi4KLS0KLS0JKiBwby1tb2RlLmVsOiBMYXN0IHZlcnNpb24gZm9yIDAuNy4KLS0KLS0JKiB0dXBkYXRlLnBlcmwuaW46IEZpeCBkaWUgbWVzc2FnZS4KLS0KLS0JKiBkY2dldHRleHQuYzogUHJvdGVjdCBpbmNsdWRlIG9mIHN0cmluZy5oLgotLQotLQkqIGdldHRleHQuYzogUHJvdGVjdCBpbmNsdWRlIG9mIHN0ZGxpYi5oIGFuZCBmdXJ0aGVyIHRyaWVzIHRvIGdldCBOVUxMLgotLQotLQkqIGZpbmRkb21haW4uYzogU29tZSBjb3JyZWN0aW9ucyBpbiBpbmNsdWRlcy4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoSU5DTFVERVMpOiBQcnVuZSBsaXN0IGNvcnJlY3QgcGF0aCB0byBNYWtlZmlsZS5pbi4KLS0KLS0JKiBwby10by10Ymwuc2VkOiBBZG9wdCBmb3IgbmV3IC5wbyBmaWxlIGZvcm1hdC4KLS0KLS0JKiBsaW51eC1tc2cuc2VkLCB4b3Blbi1tc2cuc2VkOiBBZG9wdCBmb3IgbmV3IC5wbyBmaWxlIGZvcm1hdC4KLS0KLS1TdW4gSnVsICAyIDIzOjU1OjAzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogdHVwZGF0ZS5wZXJsLmluOiBDb21wbGV0ZSByZXdyaXRlIGZvciBuZXcgLnBvIGZpbGUgZm9ybWF0LgotKzIwMDQtMDEtMjkgIEdOVSAgPGJ1Zy1nbnUtZ2V0dGV4dEBnbnUub3JnPgotIAotLVN1biBKdWwgIDIgMDI6MDY6NTAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLSsJKiBWZXJzaW9uIDAuMTQuMSByZWxlYXNlZC4KLSAKLS0JKiBGaXJzdCBvZmZpY2lhbCByZWxlYXNlLiAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgYWxsIHRoZSBjb2RlCi0tCW5lZWRlZCB0byBpbnRlcm5hdGlvbmFsaXplIG93biBwYWNrYWdlcy4gIEl0IHByb3ZpZGVzIGZ1bmN0aW9ucwotLQl3aGljaCBhbGxvdyB0byB1c2UgdGhlIFgvT3BlbiBjYXRnZXRzIGZ1bmN0aW9uIHdpdGggYW4gaW50ZXJmYWNlCi0tCWxpa2UgdGhlIFVuaWZvcnVtIGdldHRleHQgZnVuY3Rpb24uICBGb3Igc3lzdGVtIHdoaWNoIGRvZXMgbm90Ci0tCWhhdmUgbmVpdGhlciBvZiB0aG9zZSBhIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIGlzIHByb3ZpZGVkLgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2NvbmZpZy5jaGFyc2V0CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2NvbmZpZy5jaGFyc2V0CTIwMDQtMDktMTIgMTQ6NDA6MzQuMzU0NzQ4MjQwIC0wNDAwCi1AQCAtMCwwICsxLDYwOCBAQAotKyMhIC9iaW4vc2gKLSsjIE91dHB1dCBhIHN5c3RlbSBkZXBlbmRlbnQgdGFibGUgb2YgY2hhcmFjdGVyIGVuY29kaW5nIGFsaWFzZXMuCi0rIwotKyMgICBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsjICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyMgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyMgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rIyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rIyAgIFVTQS4KLSsjCi0rIyBUaGUgdGFibGUgY29uc2lzdHMgb2YgbGluZXMgb2YgdGhlIGZvcm0KLSsjICAgIEFMSUFTICBDQU5PTklDQUwKLSsjCi0rIyBBTElBUyBpcyB0aGUgKHN5c3RlbSBkZXBlbmRlbnQpIHJlc3VsdCBvZiAibmxfbGFuZ2luZm8gKENPREVTRVQpIi4KLSsjIEFMSUFTIGlzIGNvbXBhcmVkIGluIGEgY2FzZSBzZW5zaXRpdmUgd2F5LgotKyMKLSsjIENBTk9OSUNBTCBpcyB0aGUgR05VIGNhbm9uaWNhbCBuYW1lIGZvciB0aGlzIGNoYXJhY3RlciBlbmNvZGluZy4KLSsjIEl0IG11c3QgYmUgYW4gZW5jb2Rpbmcgc3VwcG9ydGVkIGJ5IGxpYmljb252LiBTdXBwb3J0IGJ5IEdOVSBsaWJjIGlzCi0rIyBhbHNvIGRlc2lyYWJsZS4gQ0FOT05JQ0FMIGlzIGNhc2UgaW5zZW5zaXRpdmUuIFVzdWFsbHkgYW4gdXBwZXIgY2FzZQotKyMgTUlNRSBjaGFyc2V0IG5hbWUgaXMgcHJlZmVycmVkLgotKyMgVGhlIGN1cnJlbnQgbGlzdCBvZiBHTlUgY2Fub25pY2FsIGNoYXJzZXQgbmFtZXMgaXMgYXMgZm9sbG93cy4KLSsjCi0rIyAgICAgICBuYW1lICAgICAgICAgICAgICBNSU1FPyAgICAgICAgICAgICB1c2VkIGJ5IHdoaWNoIHN5c3RlbXMKLSsjICAgQVNDSUksIEFOU0lfWDMuNC0xOTY4ICAgICAgIGdsaWJjIHNvbGFyaXMgZnJlZWJzZCBkYXJ3aW4KLSsjICAgSVNPLTg4NTktMSAgICAgICAgICAgICAgWSAgIGdsaWJjIGFpeCBocHV4IGlyaXggb3NmIHNvbGFyaXMgZnJlZWJzZCBkYXJ3aW4KLSsjICAgSVNPLTg4NTktMiAgICAgICAgICAgICAgWSAgIGdsaWJjIGFpeCBocHV4IGlyaXggb3NmIHNvbGFyaXMgZnJlZWJzZCBkYXJ3aW4KLSsjICAgSVNPLTg4NTktMyAgICAgICAgICAgICAgWSAgIGdsaWJjIHNvbGFyaXMKLSsjICAgSVNPLTg4NTktNCAgICAgICAgICAgICAgWSAgIG9zZiBzb2xhcmlzIGZyZWVic2QgZGFyd2luCi0rIyAgIElTTy04ODU5LTUgICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBpcml4IG9zZiBzb2xhcmlzIGZyZWVic2QgZGFyd2luCi0rIyAgIElTTy04ODU5LTYgICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBzb2xhcmlzCi0rIyAgIElTTy04ODU5LTcgICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBpcml4IG9zZiBzb2xhcmlzCi0rIyAgIElTTy04ODU5LTggICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBvc2Ygc29sYXJpcwotKyMgICBJU08tODg1OS05ICAgICAgICAgICAgICBZICAgZ2xpYmMgYWl4IGhwdXggaXJpeCBvc2Ygc29sYXJpcwotKyMgICBJU08tODg1OS0xMyAgICAgICAgICAgICAgICAgZ2xpYmMKLSsjICAgSVNPLTg4NTktMTQgICAgICAgICAgICAgICAgIGdsaWJjCi0rIyAgIElTTy04ODU5LTE1ICAgICAgICAgICAgICAgICBnbGliYyBhaXggb3NmIHNvbGFyaXMgZnJlZWJzZAotKyMgICBLT0k4LVIgICAgICAgICAgICAgICAgICBZICAgZ2xpYmMgc29sYXJpcyBmcmVlYnNkIGRhcndpbgotKyMgICBLT0k4LVUgICAgICAgICAgICAgICAgICBZICAgZ2xpYmMgZnJlZWJzZCBkYXJ3aW4KLSsjICAgS09JOC1UICAgICAgICAgICAgICAgICAgICAgIGdsaWJjCi0rIyAgIENQNDM3ICAgICAgICAgICAgICAgICAgICAgICBkb3MKLSsjICAgQ1A3NzUgICAgICAgICAgICAgICAgICAgICAgIGRvcwotKyMgICBDUDg1MCAgICAgICAgICAgICAgICAgICAgICAgYWl4IG9zZiBkb3MKLSsjICAgQ1A4NTIgICAgICAgICAgICAgICAgICAgICAgIGRvcwotKyMgICBDUDg1NSAgICAgICAgICAgICAgICAgICAgICAgZG9zCi0rIyAgIENQODU2ICAgICAgICAgICAgICAgICAgICAgICBhaXgKLSsjICAgQ1A4NTcgICAgICAgICAgICAgICAgICAgICAgIGRvcwotKyMgICBDUDg2MSAgICAgICAgICAgICAgICAgICAgICAgZG9zCi0rIyAgIENQODYyICAgICAgICAgICAgICAgICAgICAgICBkb3MKLSsjICAgQ1A4NjQgICAgICAgICAgICAgICAgICAgICAgIGRvcwotKyMgICBDUDg2NSAgICAgICAgICAgICAgICAgICAgICAgZG9zCi0rIyAgIENQODY2ICAgICAgICAgICAgICAgICAgICAgICBmcmVlYnNkIGRhcndpbiBkb3MKLSsjICAgQ1A4NjkgICAgICAgICAgICAgICAgICAgICAgIGRvcwotKyMgICBDUDg3NCAgICAgICAgICAgICAgICAgICAgICAgd29lMzIgZG9zCi0rIyAgIENQOTIyICAgICAgICAgICAgICAgICAgICAgICBhaXgKLSsjICAgQ1A5MzIgICAgICAgICAgICAgICAgICAgICAgIGFpeCB3b2UzMiBkb3MKLSsjICAgQ1A5NDMgICAgICAgICAgICAgICAgICAgICAgIGFpeAotKyMgICBDUDk0OSAgICAgICAgICAgICAgICAgICAgICAgb3NmIHdvZTMyIGRvcwotKyMgICBDUDk1MCAgICAgICAgICAgICAgICAgICAgICAgd29lMzIgZG9zCi0rIyAgIENQMTA0NiAgICAgICAgICAgICAgICAgICAgICBhaXgKLSsjICAgQ1AxMTI0ICAgICAgICAgICAgICAgICAgICAgIGFpeAotKyMgICBDUDExMjUgICAgICAgICAgICAgICAgICAgICAgZG9zCi0rIyAgIENQMTEyOSAgICAgICAgICAgICAgICAgICAgICBhaXgKLSsjICAgQ1AxMjUwICAgICAgICAgICAgICAgICAgICAgIHdvZTMyCi0rIyAgIENQMTI1MSAgICAgICAgICAgICAgICAgICAgICBnbGliYyBzb2xhcmlzIGRhcndpbiB3b2UzMgotKyMgICBDUDEyNTIgICAgICAgICAgICAgICAgICAgICAgYWl4IHdvZTMyCi0rIyAgIENQMTI1MyAgICAgICAgICAgICAgICAgICAgICB3b2UzMgotKyMgICBDUDEyNTQgICAgICAgICAgICAgICAgICAgICAgd29lMzIKLSsjICAgQ1AxMjU1ICAgICAgICAgICAgICAgICAgICAgIGdsaWJjIHdvZTMyCi0rIyAgIENQMTI1NiAgICAgICAgICAgICAgICAgICAgICB3b2UzMgotKyMgICBDUDEyNTcgICAgICAgICAgICAgICAgICAgICAgd29lMzIKLSsjICAgR0IyMzEyICAgICAgICAgICAgICAgICAgWSAgIGdsaWJjIGFpeCBocHV4IGlyaXggc29sYXJpcyBmcmVlYnNkIGRhcndpbgotKyMgICBFVUMtSlAgICAgICAgICAgICAgICAgICBZICAgZ2xpYmMgYWl4IGhwdXggaXJpeCBvc2Ygc29sYXJpcyBmcmVlYnNkIGRhcndpbgotKyMgICBFVUMtS1IgICAgICAgICAgICAgICAgICBZICAgZ2xpYmMgYWl4IGhwdXggaXJpeCBvc2Ygc29sYXJpcyBmcmVlYnNkIGRhcndpbgotKyMgICBFVUMtVFcgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMgYWl4IGhwdXggaXJpeCBvc2Ygc29sYXJpcwotKyMgICBCSUc1ICAgICAgICAgICAgICAgICAgICBZICAgZ2xpYmMgYWl4IGhwdXggb3NmIHNvbGFyaXMgZnJlZWJzZCBkYXJ3aW4KLSsjICAgQklHNS1IS1NDUyAgICAgICAgICAgICAgICAgIGdsaWJjIHNvbGFyaXMKLSsjICAgR0JLICAgICAgICAgICAgICAgICAgICAgICAgIGdsaWJjIGFpeCBvc2Ygc29sYXJpcyB3b2UzMiBkb3MKLSsjICAgR0IxODAzMCAgICAgICAgICAgICAgICAgICAgIGdsaWJjIHNvbGFyaXMKLSsjICAgU0hJRlRfSklTICAgICAgICAgICAgICAgWSAgIGhwdXggb3NmIHNvbGFyaXMgZnJlZWJzZCBkYXJ3aW4KLSsjICAgSk9IQUIgICAgICAgICAgICAgICAgICAgICAgIGdsaWJjIHNvbGFyaXMgd29lMzIKLSsjICAgVElTLTYyMCAgICAgICAgICAgICAgICAgICAgIGdsaWJjIGFpeCBocHV4IG9zZiBzb2xhcmlzCi0rIyAgIFZJU0NJSSAgICAgICAgICAgICAgICAgIFkgICBnbGliYwotKyMgICBUQ1ZONTcxMi0xICAgICAgICAgICAgICAgICAgZ2xpYmMKLSsjICAgR0VPUkdJQU4tUFMgICAgICAgICAgICAgICAgIGdsaWJjCi0rIyAgIEhQLVJPTUFOOCAgICAgICAgICAgICAgICAgICBocHV4Ci0rIyAgIEhQLUFSQUJJQzggICAgICAgICAgICAgICAgICBocHV4Ci0rIyAgIEhQLUdSRUVLOCAgICAgICAgICAgICAgICAgICBocHV4Ci0rIyAgIEhQLUhFQlJFVzggICAgICAgICAgICAgICAgICBocHV4Ci0rIyAgIEhQLVRVUktJU0g4ICAgICAgICAgICAgICAgICBocHV4Ci0rIyAgIEhQLUtBTkE4ICAgICAgICAgICAgICAgICAgICBocHV4Ci0rIyAgIERFQy1LQU5KSSAgICAgICAgICAgICAgICAgICBvc2YKLSsjICAgREVDLUhBTllVICAgICAgICAgICAgICAgICAgIG9zZgotKyMgICBVVEYtOCAgICAgICAgICAgICAgICAgICBZICAgZ2xpYmMgYWl4IGhwdXggb3NmIHNvbGFyaXMKLSsjCi0rIyBOb3RlOiBOYW1lcyB3aGljaCBhcmUgbm90IG1hcmtlZCBhcyBiZWluZyBhIE1JTUUgbmFtZSBzaG91bGQgbm90IGJlIHVzZWQgaW4KLSsjIEludGVybmV0IHByb3RvY29scyBmb3IgaW5mb3JtYXRpb24gaW50ZXJjaGFuZ2UgKG1haWwsIG5ld3MsIGV0Yy4pLgotKyMKLSsjIE5vdGU6IEFTQ0lJIGFuZCBBTlNJX1gzLjQtMTk2OCBhcmUgc3lub255bW91cyBjYW5vbmljYWwgbmFtZXMuIEFwcGxpY2F0aW9ucwotKyMgbXVzdCB1bmRlcnN0YW5kIGJvdGggbmFtZXMgYW5kIHRyZWF0IHRoZW0gYXMgZXF1aXZhbGVudC4KLSsjCi0rIyBUaGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIHRvIHRoaXMgZmlsZSBpcyB0aGUgY2Fub25pY2FsIGhvc3Qgc3BlY2lmaWNhdGlvbiwKLSsjICAgIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1PUEVSQVRJTkdfU1lTVEVNCi0rIyBvcgotKyMgICAgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLUtFUk5FTC1PUEVSQVRJTkdfU1lTVEVNCi0rCi0raG9zdD0iJDEiCi0rb3M9YGVjaG8gIiRob3N0IiB8IHNlZCAtZSAncy9eW14tXSotW14tXSotXCguKlwpJC9cMS8nYAotK2VjaG8gIiMgVGhpcyBmaWxlIGNvbnRhaW5zIGEgdGFibGUgb2YgY2hhcmFjdGVyIGVuY29kaW5nIGFsaWFzZXMsIgotK2VjaG8gIiMgc3VpdGFibGUgZm9yIG9wZXJhdGluZyBzeXN0ZW0gJyR7b3N9Jy4iCi0rZWNobyAiIyBJdCB3YXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBjb25maWcuY2hhcnNldC4iCi0rIyBMaXN0IG9mIHJlZmVyZW5jZXMsIHVwZGF0ZWQgZHVyaW5nIGluc3RhbGxhdGlvbjoKLStlY2hvICIjIFBhY2thZ2VzIHVzaW5nIHRoaXMgZmlsZTogIgotK2Nhc2UgIiRvcyIgaW4KLSsgICAgbGludXgtZ251bGliYzEqKQotKwkjIExpbnV4IGxpYmM1IGRvZXNuJ3QgaGF2ZSBubF9sYW5naW5mbyhDT0RFU0VUKTsgdGhlcmVmb3JlCi0rCSMgbG9jYWxjaGFyc2V0LmMgZmFsbHMgYmFjayB0byB1c2luZyB0aGUgZnVsbCBsb2NhbGUgbmFtZQotKwkjIGZyb20gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcy4KLSsJZWNobyAiQyBBU0NJSSIKLSsJZWNobyAiUE9TSVggQVNDSUkiCi0rCWZvciBsIGluIGFmIGFmX1pBIGNhIGNhX0VTIGRhIGRhX0RLIGRlIGRlX0FUIGRlX0JFIGRlX0NIIGRlX0RFIGRlX0xVIFwKLSsJICAgICAgICAgZW4gZW5fQVUgZW5fQlcgZW5fQ0EgZW5fREsgZW5fR0IgZW5fSUUgZW5fTlogZW5fVVMgZW5fWkEgXAotKwkgICAgICAgICBlbl9aVyBlcyBlc19BUiBlc19CTyBlc19DTCBlc19DTyBlc19ETyBlc19FQyBlc19FUyBlc19HVCBcCi0rCSAgICAgICAgIGVzX0hOIGVzX01YIGVzX1BBIGVzX1BFIGVzX1BZIGVzX1NWIGVzX1VTIGVzX1VZIGVzX1ZFIGV0IFwKLSsJICAgICAgICAgZXRfRUUgZXUgZXVfRVMgZmkgZmlfRkkgZm8gZm9fRk8gZnIgZnJfQkUgZnJfQ0EgZnJfQ0ggZnJfRlIgXAotKwkgICAgICAgICBmcl9MVSBnYSBnYV9JRSBnbCBnbF9FUyBpZCBpZF9JRCBpbiBpbl9JRCBpcyBpc19JUyBpdCBpdF9DSCBcCi0rCSAgICAgICAgIGl0X0lUIGtsIGtsX0dMIG5sIG5sX0JFIG5sX05MIG5vIG5vX05PIHB0IHB0X0JSIHB0X1BUIHN2IFwKLSsJICAgICAgICAgc3ZfRkkgc3ZfU0U7IGRvCi0rCSAgZWNobyAiJGwgSVNPLTg4NTktMSIKLSsJICBlY2hvICIkbC5pc28tODg1OS0xIElTTy04ODU5LTEiCi0rCSAgZWNobyAiJGwuaXNvLTg4NTktMTUgSVNPLTg4NTktMTUiCi0rCSAgZWNobyAiJGwuaXNvLTg4NTktMTVAZXVybyBJU08tODg1OS0xNSIKLSsJICBlY2hvICIkbEBldXJvIElTTy04ODU5LTE1IgotKwkgIGVjaG8gIiRsLmNwLTQzNyBDUDQzNyIKLSsJICBlY2hvICIkbC5jcC04NTAgQ1A4NTAiCi0rCSAgZWNobyAiJGwuY3AtMTI1MiBDUDEyNTIiCi0rCSAgZWNobyAiJGwuY3AtMTI1MkBldXJvIENQMTI1MiIKLSsJICAjZWNobyAiJGwuYXRhcmktc3QgQVRBUkktU1QiICMgbm90IGEgY29tbW9ubHkgdXNlZCBlbmNvZGluZwotKwkgIGVjaG8gIiRsLnV0Zi04IFVURi04IgotKwkgIGVjaG8gIiRsLnV0Zi04QGV1cm8gVVRGLTgiCi0rCWRvbmUKLSsJZm9yIGwgaW4gY3MgY3NfQ1ogaHIgaHJfSFIgaHUgaHVfSFUgcGwgcGxfUEwgcm8gcm9fUk8gc2sgc2tfU0sgc2wgXAotKwkgICAgICAgICBzbF9TSSBzciBzcl9DUyBzcl9ZVTsgZG8KLSsJICBlY2hvICIkbCBJU08tODg1OS0yIgotKwkgIGVjaG8gIiRsLmlzby04ODU5LTIgSVNPLTg4NTktMiIKLSsJICBlY2hvICIkbC5jcC04NTIgQ1A4NTIiCi0rCSAgZWNobyAiJGwuY3AtMTI1MCBDUDEyNTAiCi0rCSAgZWNobyAiJGwudXRmLTggVVRGLTgiCi0rCWRvbmUKLSsJZm9yIGwgaW4gbWsgbWtfTUsgcnUgcnVfUlU7IGRvCi0rCSAgZWNobyAiJGwgSVNPLTg4NTktNSIKLSsJICBlY2hvICIkbC5pc28tODg1OS01IElTTy04ODU5LTUiCi0rCSAgZWNobyAiJGwua29pOC1yIEtPSTgtUiIKLSsJICBlY2hvICIkbC5jcC04NjYgQ1A4NjYiCi0rCSAgZWNobyAiJGwuY3AtMTI1MSBDUDEyNTEiCi0rCSAgZWNobyAiJGwudXRmLTggVVRGLTgiCi0rCWRvbmUKLSsJZm9yIGwgaW4gYXIgYXJfU0E7IGRvCi0rCSAgZWNobyAiJGwgSVNPLTg4NTktNiIKLSsJICBlY2hvICIkbC5pc28tODg1OS02IElTTy04ODU5LTYiCi0rCSAgZWNobyAiJGwuY3AtODY0IENQODY0IgotKwkgICNlY2hvICIkbC5jcC04NjggQ1A4NjgiICMgbm90IGEgY29tbW9ubHkgdXNlZCBlbmNvZGluZwotKwkgIGVjaG8gIiRsLmNwLTEyNTYgQ1AxMjU2IgotKwkgIGVjaG8gIiRsLnV0Zi04IFVURi04IgotKwlkb25lCi0rCWZvciBsIGluIGVsIGVsX0dSIGdyIGdyX0dSOyBkbwotKwkgIGVjaG8gIiRsIElTTy04ODU5LTciCi0rCSAgZWNobyAiJGwuaXNvLTg4NTktNyBJU08tODg1OS03IgotKwkgIGVjaG8gIiRsLmNwLTg2OSBDUDg2OSIKLSsJICBlY2hvICIkbC5jcC0xMjUzIENQMTI1MyIKLSsJICBlY2hvICIkbC5jcC0xMjUzQGV1cm8gQ1AxMjUzIgotKwkgIGVjaG8gIiRsLnV0Zi04IFVURi04IgotKwkgIGVjaG8gIiRsLnV0Zi04QGV1cm8gVVRGLTgiCi0rCWRvbmUKLSsJZm9yIGwgaW4gaGUgaGVfSUwgaXcgaXdfSUw7IGRvCi0rCSAgZWNobyAiJGwgSVNPLTg4NTktOCIKLSsJICBlY2hvICIkbC5pc28tODg1OS04IElTTy04ODU5LTgiCi0rCSAgZWNobyAiJGwuY3AtODYyIENQODYyIgotKwkgIGVjaG8gIiRsLmNwLTEyNTUgQ1AxMjU1IgotKwkgIGVjaG8gIiRsLnV0Zi04IFVURi04IgotKwlkb25lCi0rCWZvciBsIGluIHRyIHRyX1RSOyBkbwotKwkgIGVjaG8gIiRsIElTTy04ODU5LTkiCi0rCSAgZWNobyAiJGwuaXNvLTg4NTktOSBJU08tODg1OS05IgotKwkgIGVjaG8gIiRsLmNwLTg1NyBDUDg1NyIKLSsJICBlY2hvICIkbC5jcC0xMjU0IENQMTI1NCIKLSsJICBlY2hvICIkbC51dGYtOCBVVEYtOCIKLSsJZG9uZQotKwlmb3IgbCBpbiBsdCBsdF9MVCBsdiBsdl9MVjsgZG8KLSsJICAjZWNobyAiJGwgQkFMVElDIiAjIG5vdCBhIGNvbW1vbmx5IHVzZWQgZW5jb2RpbmcsIHdyb25nIGVuY29kaW5nIG5hbWUKLSsJICBlY2hvICIkbCBJU08tODg1OS0xMyIKLSsJZG9uZQotKwlmb3IgbCBpbiBydV9VQSB1ayB1a19VQTsgZG8KLSsJICBlY2hvICIkbCBLT0k4LVUiCi0rCWRvbmUKLSsJZm9yIGwgaW4gemggemhfQ047IGRvCi0rCSAgI2VjaG8gIiRsIEdCXzIzMTItODAiICMgbm90IGEgY29tbW9ubHkgdXNlZCBlbmNvZGluZywgd3JvbmcgZW5jb2RpbmcgbmFtZQotKwkgIGVjaG8gIiRsIEdCMjMxMiIKLSsJZG9uZQotKwlmb3IgbCBpbiBqYSBqYV9KUCBqYV9KUC5FVUM7IGRvCi0rCSAgZWNobyAiJGwgRVVDLUpQIgotKwlkb25lCi0rCWZvciBsIGluIGtvIGtvX0tSOyBkbwotKwkgIGVjaG8gIiRsIEVVQy1LUiIKLSsJZG9uZQotKwlmb3IgbCBpbiB0aCB0aF9USDsgZG8KLSsJICBlY2hvICIkbCBUSVMtNjIwIgotKwlkb25lCi0rCWZvciBsIGluIGZhIGZhX0lSOyBkbwotKwkgICNlY2hvICIkbCBJU0lSSS0zMzQyIiAjIGEgYnJva2VuIGVuY29kaW5nCi0rCSAgZWNobyAiJGwudXRmLTggVVRGLTgiCi0rCWRvbmUKLSsJOzsKLSsgICAgbGludXgqIHwgKi1nbnUqKQotKwkjIFdpdGggZ2xpYmMtMi4xIG9yIG5ld2VyLCB3ZSBkb24ndCBuZWVkIGFueSBjYW5vbmljYWxpemF0aW9uLAotKwkjIGJlY2F1c2UgZ2xpYmMgaGFzIGljb252IGFuZCBib3RoIGdsaWJjIGFuZCBsaWJpY29udiBzdXBwb3J0IGFsbAotKwkjIEdOVSBjYW5vbmljYWwgbmFtZXMgZGlyZWN0bHkuIFRoZXJlZm9yZSwgdGhlIE1ha2VmaWxlIGRvZXMgbm90Ci0rCSMgbmVlZCB0byBpbnN0YWxsIHRoZSBhbGlhcyBmaWxlIGF0IGFsbC4KLSsJIyBUaGUgZm9sbG93aW5nIGFwcGxpZXMgb25seSB0byBnbGliYy0yLjAueCBhbmQgb2xkZXIgbGliY3MuCi0rCWVjaG8gIklTT182NDYuSVJWOjE5ODMgQVNDSUkiCi0rCTs7Ci0rICAgIGFpeCopCi0rCWVjaG8gIklTTzg4NTktMSBJU08tODg1OS0xIgotKwllY2hvICJJU084ODU5LTIgSVNPLTg4NTktMiIKLSsJZWNobyAiSVNPODg1OS01IElTTy04ODU5LTUiCi0rCWVjaG8gIklTTzg4NTktNiBJU08tODg1OS02IgotKwllY2hvICJJU084ODU5LTcgSVNPLTg4NTktNyIKLSsJZWNobyAiSVNPODg1OS04IElTTy04ODU5LTgiCi0rCWVjaG8gIklTTzg4NTktOSBJU08tODg1OS05IgotKwllY2hvICJJU084ODU5LTE1IElTTy04ODU5LTE1IgotKwllY2hvICJJQk0tODUwIENQODUwIgotKwllY2hvICJJQk0tODU2IENQODU2IgotKwllY2hvICJJQk0tOTIxIElTTy04ODU5LTEzIgotKwllY2hvICJJQk0tOTIyIENQOTIyIgotKwllY2hvICJJQk0tOTMyIENQOTMyIgotKwllY2hvICJJQk0tOTQzIENQOTQzIgotKwllY2hvICJJQk0tMTA0NiBDUDEwNDYiCi0rCWVjaG8gIklCTS0xMTI0IENQMTEyNCIKLSsJZWNobyAiSUJNLTExMjkgQ1AxMTI5IgotKwllY2hvICJJQk0tMTI1MiBDUDEyNTIiCi0rCWVjaG8gIklCTS1ldWNDTiBHQjIzMTIiCi0rCWVjaG8gIklCTS1ldWNKUCBFVUMtSlAiCi0rCWVjaG8gIklCTS1ldWNLUiBFVUMtS1IiCi0rCWVjaG8gIklCTS1ldWNUVyBFVUMtVFciCi0rCWVjaG8gImJpZzUgQklHNSIKLSsJZWNobyAiR0JLIEdCSyIKLSsJZWNobyAiVElTLTYyMCBUSVMtNjIwIgotKwllY2hvICJVVEYtOCBVVEYtOCIKLSsJOzsKLSsgICAgaHB1eCopCi0rCWVjaG8gImlzbzg4NTkxIElTTy04ODU5LTEiCi0rCWVjaG8gImlzbzg4NTkyIElTTy04ODU5LTIiCi0rCWVjaG8gImlzbzg4NTk1IElTTy04ODU5LTUiCi0rCWVjaG8gImlzbzg4NTk2IElTTy04ODU5LTYiCi0rCWVjaG8gImlzbzg4NTk3IElTTy04ODU5LTciCi0rCWVjaG8gImlzbzg4NTk4IElTTy04ODU5LTgiCi0rCWVjaG8gImlzbzg4NTk5IElTTy04ODU5LTkiCi0rCWVjaG8gImlzbzg4NTkxNSBJU08tODg1OS0xNSIKLSsJZWNobyAicm9tYW44IEhQLVJPTUFOOCIKLSsJZWNobyAiYXJhYmljOCBIUC1BUkFCSUM4IgotKwllY2hvICJncmVlazggSFAtR1JFRUs4IgotKwllY2hvICJoZWJyZXc4IEhQLUhFQlJFVzgiCi0rCWVjaG8gInR1cmtpc2g4IEhQLVRVUktJU0g4IgotKwllY2hvICJrYW5hOCBIUC1LQU5BOCIKLSsJZWNobyAidGlzNjIwIFRJUy02MjAiCi0rCWVjaG8gImJpZzUgQklHNSIKLSsJZWNobyAiZXVjSlAgRVVDLUpQIgotKwllY2hvICJldWNLUiBFVUMtS1IiCi0rCWVjaG8gImV1Y1RXIEVVQy1UVyIKLSsJZWNobyAiaHAxNUNOIEdCMjMxMiIKLSsJI2VjaG8gImNjZGMgPyIgIyB3aGF0IGlzIHRoaXM/Ci0rCWVjaG8gIlNKSVMgU0hJRlRfSklTIgotKwllY2hvICJ1dGY4IFVURi04IgotKwk7OwotKyAgICBpcml4KikKLSsJZWNobyAiSVNPODg1OS0xIElTTy04ODU5LTEiCi0rCWVjaG8gIklTTzg4NTktMiBJU08tODg1OS0yIgotKwllY2hvICJJU084ODU5LTUgSVNPLTg4NTktNSIKLSsJZWNobyAiSVNPODg1OS03IElTTy04ODU5LTciCi0rCWVjaG8gIklTTzg4NTktOSBJU08tODg1OS05IgotKwllY2hvICJldWNDTiBHQjIzMTIiCi0rCWVjaG8gImV1Y0pQIEVVQy1KUCIKLSsJZWNobyAiZXVjS1IgRVVDLUtSIgotKwllY2hvICJldWNUVyBFVUMtVFciCi0rCTs7Ci0rICAgIG9zZiopCi0rCWVjaG8gIklTTzg4NTktMSBJU08tODg1OS0xIgotKwllY2hvICJJU084ODU5LTIgSVNPLTg4NTktMiIKLSsJZWNobyAiSVNPODg1OS00IElTTy04ODU5LTQiCi0rCWVjaG8gIklTTzg4NTktNSBJU08tODg1OS01IgotKwllY2hvICJJU084ODU5LTcgSVNPLTg4NTktNyIKLSsJZWNobyAiSVNPODg1OS04IElTTy04ODU5LTgiCi0rCWVjaG8gIklTTzg4NTktOSBJU08tODg1OS05IgotKwllY2hvICJJU084ODU5LTE1IElTTy04ODU5LTE1IgotKwllY2hvICJjcDg1MCBDUDg1MCIKLSsJZWNobyAiYmlnNSBCSUc1IgotKwllY2hvICJkZWNoYW55dSBERUMtSEFOWVUiCi0rCWVjaG8gImRlY2hhbnppIEdCMjMxMiIKLSsJZWNobyAiZGVja2FuamkgREVDLUtBTkpJIgotKwllY2hvICJkZWNrb3JlYW4gRVVDLUtSIgotKwllY2hvICJldWNKUCBFVUMtSlAiCi0rCWVjaG8gImV1Y0tSIEVVQy1LUiIKLSsJZWNobyAiZXVjVFcgRVVDLVRXIgotKwllY2hvICJHQksgR0JLIgotKwllY2hvICJLU0M1NjAxIENQOTQ5IgotKwllY2hvICJzZGVja2FuamkgRVVDLUpQIgotKwllY2hvICJTSklTIFNISUZUX0pJUyIKLSsJZWNobyAiVEFDVElTIFRJUy02MjAiCi0rCWVjaG8gIlVURi04IFVURi04IgotKwk7OwotKyAgICBzb2xhcmlzKikKLSsJZWNobyAiNjQ2IEFTQ0lJIgotKwllY2hvICJJU084ODU5LTEgSVNPLTg4NTktMSIKLSsJZWNobyAiSVNPODg1OS0yIElTTy04ODU5LTIiCi0rCWVjaG8gIklTTzg4NTktMyBJU08tODg1OS0zIgotKwllY2hvICJJU084ODU5LTQgSVNPLTg4NTktNCIKLSsJZWNobyAiSVNPODg1OS01IElTTy04ODU5LTUiCi0rCWVjaG8gIklTTzg4NTktNiBJU08tODg1OS02IgotKwllY2hvICJJU084ODU5LTcgSVNPLTg4NTktNyIKLSsJZWNobyAiSVNPODg1OS04IElTTy04ODU5LTgiCi0rCWVjaG8gIklTTzg4NTktOSBJU08tODg1OS05IgotKwllY2hvICJJU084ODU5LTE1IElTTy04ODU5LTE1IgotKwllY2hvICJrb2k4LXIgS09JOC1SIgotKwllY2hvICJhbnNpLTEyNTEgQ1AxMjUxIgotKwllY2hvICJCSUc1IEJJRzUiCi0rCWVjaG8gIkJpZzUtSEtTQ1MgQklHNS1IS1NDUyIKLSsJZWNobyAiZ2IyMzEyIEdCMjMxMiIKLSsJZWNobyAiR0JLIEdCSyIKLSsJZWNobyAiR0IxODAzMCBHQjE4MDMwIgotKwllY2hvICJjbnMxMTY0MyBFVUMtVFciCi0rCWVjaG8gIjU2MDEgRVVDLUtSIgotKwllY2hvICJrb19LUi5qb2hhcDkyIEpPSEFCIgotKwllY2hvICJldWNKUCBFVUMtSlAiCi0rCWVjaG8gIlBDSyBTSElGVF9KSVMiCi0rCWVjaG8gIlRJUzYyMC4yNTMzIFRJUy02MjAiCi0rCSNlY2hvICJzdW5fZXVfZ3JlZWsgPyIgIyB3aGF0IGlzIHRoaXM/Ci0rCWVjaG8gIlVURi04IFVURi04IgotKwk7OwotKyAgICBmcmVlYnNkKiB8IG9zMiopCi0rCSMgRnJlZUJTRCA0LjIgZG9lc24ndCBoYXZlIG5sX2xhbmdpbmZvKENPREVTRVQpOyB0aGVyZWZvcmUKLSsJIyBsb2NhbGNoYXJzZXQuYyBmYWxscyBiYWNrIHRvIHVzaW5nIHRoZSBmdWxsIGxvY2FsZSBuYW1lCi0rCSMgZnJvbSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLgotKwkjIExpa2V3aXNlIGZvciBPUy8yLiBPUy8yIGhhcyBYRnJlZTg2IGp1c3QgbGlrZSBGcmVlQlNELiBKdXN0Ci0rCSMgcmV1c2UgRnJlZUJTRCdzIGxvY2FsZSBkYXRhIGZvciBPUy8yLgotKwllY2hvICJDIEFTQ0lJIgotKwllY2hvICJVUy1BU0NJSSBBU0NJSSIKLSsJZm9yIGwgaW4gbGFfTE4gbHRfTE47IGRvCi0rCSAgZWNobyAiJGwuQVNDSUkgQVNDSUkiCi0rCWRvbmUKLSsJZm9yIGwgaW4gZGFfREsgZGVfQVQgZGVfQ0ggZGVfREUgZW5fQVUgZW5fQ0EgZW5fR0IgZW5fVVMgZXNfRVMgXAotKwkgICAgICAgICBmaV9GSSBmcl9CRSBmcl9DQSBmcl9DSCBmcl9GUiBpc19JUyBpdF9DSCBpdF9JVCBsYV9MTiBcCi0rCSAgICAgICAgIGx0X0xOIG5sX0JFIG5sX05MIG5vX05PIHB0X1BUIHN2X1NFOyBkbwotKwkgIGVjaG8gIiRsLklTT184ODU5LTEgSVNPLTg4NTktMSIKLSsJICBlY2hvICIkbC5ESVNfODg1OS0xNSBJU08tODg1OS0xNSIKLSsJZG9uZQotKwlmb3IgbCBpbiBjc19DWiBocl9IUiBodV9IVSBsYV9MTiBsdF9MTiBwbF9QTCBzbF9TSTsgZG8KLSsJICBlY2hvICIkbC5JU09fODg1OS0yIElTTy04ODU5LTIiCi0rCWRvbmUKLSsJZm9yIGwgaW4gbGFfTE4gbHRfTFQ7IGRvCi0rCSAgZWNobyAiJGwuSVNPXzg4NTktNCBJU08tODg1OS00IgotKwlkb25lCi0rCWZvciBsIGluIHJ1X1JVIHJ1X1NVOyBkbwotKwkgIGVjaG8gIiRsLktPSTgtUiBLT0k4LVIiCi0rCSAgZWNobyAiJGwuSVNPXzg4NTktNSBJU08tODg1OS01IgotKwkgIGVjaG8gIiRsLkNQODY2IENQODY2IgotKwlkb25lCi0rCWVjaG8gInVrX1VBLktPSTgtVSBLT0k4LVUiCi0rCWVjaG8gInpoX1RXLkJJRzUgQklHNSIKLSsJZWNobyAiemhfVFcuQmlnNSBCSUc1IgotKwllY2hvICJ6aF9DTi5FVUMgR0IyMzEyIgotKwllY2hvICJqYV9KUC5FVUMgRVVDLUpQIgotKwllY2hvICJqYV9KUC5TSklTIFNISUZUX0pJUyIKLSsJZWNobyAiamFfSlAuU2hpZnRfSklTIFNISUZUX0pJUyIKLSsJZWNobyAia29fS1IuRVVDIEVVQy1LUiIKLSsJOzsKLSsgICAgbmV0YnNkKikKLSsJZWNobyAiNjQ2IEFTQ0lJIgotKwllY2hvICJJU084ODU5LTEgSVNPLTg4NTktMSIKLSsJZWNobyAiSVNPODg1OS0yIElTTy04ODU5LTIiCi0rCWVjaG8gIklTTzg4NTktNCBJU08tODg1OS00IgotKwllY2hvICJJU084ODU5LTUgSVNPLTg4NTktNSIKLSsJZWNobyAiSVNPODg1OS0xNSBJU08tODg1OS0xNSIKLSsJZWNobyAiZXVjQ04gR0IyMzEyIgotKwllY2hvICJldWNKUCBFVUMtSlAiCi0rCWVjaG8gImV1Y0tSIEVVQy1LUiIKLSsJZWNobyAiZXVjVFcgRVVDLVRXIgotKwllY2hvICJCSUc1IEJJRzUiCi0rCWVjaG8gIlNKSVMgU0hJRlRfSklTIgotKwk7OwotKyAgICBkYXJ3aW4qKQotKwkjIERhcndpbiA2LjggZG9lc24ndCBoYXZlIG5sX2xhbmdpbmZvKENPREVTRVQpOyB0aGVyZWZvcmUKLSsJIyBsb2NhbGNoYXJzZXQuYyBmYWxscyBiYWNrIHRvIHVzaW5nIHRoZSBmdWxsIGxvY2FsZSBuYW1lCi0rCSMgZnJvbSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLgotKwllY2hvICJDIEFTQ0lJIgotKwlmb3IgbCBpbiBlbl9BVSBlbl9DQSBlbl9HQiBlbl9VUyBsYV9MTjsgZG8KLSsJICBlY2hvICIkbC5VUy1BU0NJSSBBU0NJSSIKLSsJZG9uZQotKwlmb3IgbCBpbiBkYV9ESyBkZV9BVCBkZV9DSCBkZV9ERSBlbl9BVSBlbl9DQSBlbl9HQiBlbl9VUyBlc19FUyBcCi0rCSAgICAgICAgIGZpX0ZJIGZyX0JFIGZyX0NBIGZyX0NIIGZyX0ZSIGlzX0lTIGl0X0NIIGl0X0lUIG5sX0JFIFwKLSsJICAgICAgICAgbmxfTkwgbm9fTk8gcHRfUFQgc3ZfU0U7IGRvCi0rCSAgZWNobyAiJGwgSVNPLTg4NTktMSIKLSsJICBlY2hvICIkbC5JU084ODU5LTEgSVNPLTg4NTktMSIKLSsJICBlY2hvICIkbC5JU084ODU5LTE1IElTTy04ODU5LTE1IgotKwlkb25lCi0rCWZvciBsIGluIGxhX0xOOyBkbwotKwkgIGVjaG8gIiRsLklTTzg4NTktMSBJU08tODg1OS0xIgotKwkgIGVjaG8gIiRsLklTTzg4NTktMTUgSVNPLTg4NTktMTUiCi0rCWRvbmUKLSsJZm9yIGwgaW4gY3NfQ1ogaHJfSFIgaHVfSFUgbGFfTE4gcGxfUEwgc2xfU0k7IGRvCi0rCSAgZWNobyAiJGwuSVNPODg1OS0yIElTTy04ODU5LTIiCi0rCWRvbmUKLSsJZm9yIGwgaW4gbGFfTE4gbHRfTFQ7IGRvCi0rCSAgZWNobyAiJGwuSVNPODg1OS00IElTTy04ODU5LTQiCi0rCWRvbmUKLSsJZm9yIGwgaW4gcnVfUlU7IGRvCi0rCSAgZWNobyAiJGwuS09JOC1SIEtPSTgtUiIKLSsJICBlY2hvICIkbC5JU084ODU5LTUgSVNPLTg4NTktNSIKLSsJICBlY2hvICIkbC5DUDg2NiBDUDg2NiIKLSsJZG9uZQotKwlmb3IgbCBpbiBiZ19CRzsgZG8KLSsJICBlY2hvICIkbC5DUDEyNTEgQ1AxMjUxIgotKwlkb25lCi0rCWVjaG8gInVrX1VBLktPSTgtVSBLT0k4LVUiCi0rCWVjaG8gInpoX1RXLkJJRzUgQklHNSIKLSsJZWNobyAiemhfVFcuQmlnNSBCSUc1IgotKwllY2hvICJ6aF9DTi5FVUMgR0IyMzEyIgotKwllY2hvICJqYV9KUC5FVUMgRVVDLUpQIgotKwllY2hvICJqYV9KUC5TSklTIFNISUZUX0pJUyIKLSsJZWNobyAia29fS1IuRVVDIEVVQy1LUiIKLSsJOzsKLSsgICAgYmVvcyopCi0rCSMgQmVPUyBoYXMgYSBzaW5nbGUgbG9jYWxlLCBhbmQgaXQgaGFzIFVURi04IGVuY29kaW5nLgotKwllY2hvICIqIFVURi04IgotKwk7OwotKyAgICBtc2Rvc2RqZ3BwKikKLSsJIyBESkdQUCAyLjAzIGRvZXNuJ3QgaGF2ZSBubF9sYW5naW5mbyhDT0RFU0VUKTsgdGhlcmVmb3JlCi0rCSMgbG9jYWxjaGFyc2V0LmMgZmFsbHMgYmFjayB0byB1c2luZyB0aGUgZnVsbCBsb2NhbGUgbmFtZQotKwkjIGZyb20gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcy4KLSsJZWNobyAiIyIKLSsJZWNobyAiIyBUaGUgZW5jb2RpbmdzIGdpdmVuIGhlcmUgbWF5IG5vdCBhbGwgYmUgY29ycmVjdC4iCi0rCWVjaG8gIiMgSWYgeW91IGZpbmQgdGhhdCB0aGUgZW5jb2RpbmcgZ2l2ZW4gZm9yIHlvdXIgbGFuZ3VhZ2UgYW5kIgotKwllY2hvICIjIGNvdW50cnkgaXMgbm90IHRoZSBvbmUgeW91ciBET1MgbWFjaGluZSBhY3R1YWxseSB1c2VzLCBqdXN0IgotKwllY2hvICIjIGNvcnJlY3QgaXQgaW4gdGhpcyBmaWxlLCBhbmQgc2VuZCBhIG1haWwgdG8iCi0rCWVjaG8gIiMgSnVhbiBNYW51ZWwgR3VlcnJlcm8gPHN0MDAxOTA2QGhyejEuaHJ6LnR1LWRhcm1zdGFkdC5kZT4iCi0rCWVjaG8gIiMgYW5kIEJydW5vIEhhaWJsZSA8YnJ1bm9AY2xpc3Aub3JnPi4iCi0rCWVjaG8gIiMiCi0rCWVjaG8gIkMgQVNDSUkiCi0rCSMgSVNPLTg4NTktMSBsYW5ndWFnZXMKLSsJZWNobyAiY2EgQ1A4NTAiCi0rCWVjaG8gImNhX0VTIENQODUwIgotKwllY2hvICJkYSBDUDg2NSIgICAgIyBub3QgQ1A4NTAgPz8KLSsJZWNobyAiZGFfREsgQ1A4NjUiICMgbm90IENQODUwID8/Ci0rCWVjaG8gImRlIENQODUwIgotKwllY2hvICJkZV9BVCBDUDg1MCIKLSsJZWNobyAiZGVfQ0ggQ1A4NTAiCi0rCWVjaG8gImRlX0RFIENQODUwIgotKwllY2hvICJlbiBDUDg1MCIKLSsJZWNobyAiZW5fQVUgQ1A4NTAiICMgbm90IENQNDM3ID8/Ci0rCWVjaG8gImVuX0NBIENQODUwIgotKwllY2hvICJlbl9HQiBDUDg1MCIKLSsJZWNobyAiZW5fTlogQ1A0MzciCi0rCWVjaG8gImVuX1VTIENQNDM3IgotKwllY2hvICJlbl9aQSBDUDg1MCIgIyBub3QgQ1A0MzcgPz8KLSsJZWNobyAiZXMgQ1A4NTAiCi0rCWVjaG8gImVzX0FSIENQODUwIgotKwllY2hvICJlc19CTyBDUDg1MCIKLSsJZWNobyAiZXNfQ0wgQ1A4NTAiCi0rCWVjaG8gImVzX0NPIENQODUwIgotKwllY2hvICJlc19DUiBDUDg1MCIKLSsJZWNobyAiZXNfQ1UgQ1A4NTAiCi0rCWVjaG8gImVzX0RPIENQODUwIgotKwllY2hvICJlc19FQyBDUDg1MCIKLSsJZWNobyAiZXNfRVMgQ1A4NTAiCi0rCWVjaG8gImVzX0dUIENQODUwIgotKwllY2hvICJlc19ITiBDUDg1MCIKLSsJZWNobyAiZXNfTVggQ1A4NTAiCi0rCWVjaG8gImVzX05JIENQODUwIgotKwllY2hvICJlc19QQSBDUDg1MCIKLSsJZWNobyAiZXNfUFkgQ1A4NTAiCi0rCWVjaG8gImVzX1BFIENQODUwIgotKwllY2hvICJlc19TViBDUDg1MCIKLSsJZWNobyAiZXNfVVkgQ1A4NTAiCi0rCWVjaG8gImVzX1ZFIENQODUwIgotKwllY2hvICJldCBDUDg1MCIKLSsJZWNobyAiZXRfRUUgQ1A4NTAiCi0rCWVjaG8gImV1IENQODUwIgotKwllY2hvICJldV9FUyBDUDg1MCIKLSsJZWNobyAiZmkgQ1A4NTAiCi0rCWVjaG8gImZpX0ZJIENQODUwIgotKwllY2hvICJmciBDUDg1MCIKLSsJZWNobyAiZnJfQkUgQ1A4NTAiCi0rCWVjaG8gImZyX0NBIENQODUwIgotKwllY2hvICJmcl9DSCBDUDg1MCIKLSsJZWNobyAiZnJfRlIgQ1A4NTAiCi0rCWVjaG8gImdhIENQODUwIgotKwllY2hvICJnYV9JRSBDUDg1MCIKLSsJZWNobyAiZ2QgQ1A4NTAiCi0rCWVjaG8gImdkX0dCIENQODUwIgotKwllY2hvICJnbCBDUDg1MCIKLSsJZWNobyAiZ2xfRVMgQ1A4NTAiCi0rCWVjaG8gImlkIENQODUwIiAgICAjIG5vdCBDUDQzNyA/PwotKwllY2hvICJpZF9JRCBDUDg1MCIgIyBub3QgQ1A0MzcgPz8KLSsJZWNobyAiaXMgQ1A4NjEiICAgICMgbm90IENQODUwID8/Ci0rCWVjaG8gImlzX0lTIENQODYxIiAjIG5vdCBDUDg1MCA/PwotKwllY2hvICJpdCBDUDg1MCIKLSsJZWNobyAiaXRfQ0ggQ1A4NTAiCi0rCWVjaG8gIml0X0lUIENQODUwIgotKwllY2hvICJsdCBDUDc3NSIKLSsJZWNobyAibHRfTFQgQ1A3NzUiCi0rCWVjaG8gImx2IENQNzc1IgotKwllY2hvICJsdl9MViBDUDc3NSIKLSsJZWNobyAibmIgQ1A4NjUiICAgICMgbm90IENQODUwID8/Ci0rCWVjaG8gIm5iX05PIENQODY1IiAjIG5vdCBDUDg1MCA/PwotKwllY2hvICJubCBDUDg1MCIKLSsJZWNobyAibmxfQkUgQ1A4NTAiCi0rCWVjaG8gIm5sX05MIENQODUwIgotKwllY2hvICJubiBDUDg2NSIgICAgIyBub3QgQ1A4NTAgPz8KLSsJZWNobyAibm5fTk8gQ1A4NjUiICMgbm90IENQODUwID8/Ci0rCWVjaG8gIm5vIENQODY1IiAgICAjIG5vdCBDUDg1MCA/PwotKwllY2hvICJub19OTyBDUDg2NSIgIyBub3QgQ1A4NTAgPz8KLSsJZWNobyAicHQgQ1A4NTAiCi0rCWVjaG8gInB0X0JSIENQODUwIgotKwllY2hvICJwdF9QVCBDUDg1MCIKLSsJZWNobyAic3YgQ1A4NTAiCi0rCWVjaG8gInN2X1NFIENQODUwIgotKwkjIElTTy04ODU5LTIgbGFuZ3VhZ2VzCi0rCWVjaG8gImNzIENQODUyIgotKwllY2hvICJjc19DWiBDUDg1MiIKLSsJZWNobyAiaHIgQ1A4NTIiCi0rCWVjaG8gImhyX0hSIENQODUyIgotKwllY2hvICJodSBDUDg1MiIKLSsJZWNobyAiaHVfSFUgQ1A4NTIiCi0rCWVjaG8gInBsIENQODUyIgotKwllY2hvICJwbF9QTCBDUDg1MiIKLSsJZWNobyAicm8gQ1A4NTIiCi0rCWVjaG8gInJvX1JPIENQODUyIgotKwllY2hvICJzayBDUDg1MiIKLSsJZWNobyAic2tfU0sgQ1A4NTIiCi0rCWVjaG8gInNsIENQODUyIgotKwllY2hvICJzbF9TSSBDUDg1MiIKLSsJZWNobyAic3EgQ1A4NTIiCi0rCWVjaG8gInNxX0FMIENQODUyIgotKwllY2hvICJzciBDUDg1MiIgICAgIyBDUDg1MiBvciBDUDg2NiBvciBDUDg1NSA/PwotKwllY2hvICJzcl9DUyBDUDg1MiIgIyBDUDg1MiBvciBDUDg2NiBvciBDUDg1NSA/PwotKwllY2hvICJzcl9ZVSBDUDg1MiIgIyBDUDg1MiBvciBDUDg2NiBvciBDUDg1NSA/PwotKwkjIElTTy04ODU5LTMgbGFuZ3VhZ2VzCi0rCWVjaG8gIm10IENQODUwIgotKwllY2hvICJtdF9NVCBDUDg1MCIKLSsJIyBJU08tODg1OS01IGxhbmd1YWdlcwotKwllY2hvICJiZSBDUDg2NiIKLSsJZWNobyAiYmVfQkUgQ1A4NjYiCi0rCWVjaG8gImJnIENQODY2IiAgICAjIG5vdCBDUDg1NSA/PwotKwllY2hvICJiZ19CRyBDUDg2NiIgIyBub3QgQ1A4NTUgPz8KLSsJZWNobyAibWsgQ1A4NjYiICAgICMgbm90IENQODU1ID8/Ci0rCWVjaG8gIm1rX01LIENQODY2IiAjIG5vdCBDUDg1NSA/PwotKwllY2hvICJydSBDUDg2NiIKLSsJZWNobyAicnVfUlUgQ1A4NjYiCi0rCWVjaG8gInVrIENQMTEyNSIKLSsJZWNobyAidWtfVUEgQ1AxMTI1IgotKwkjIElTTy04ODU5LTYgbGFuZ3VhZ2VzCi0rCWVjaG8gImFyIENQODY0IgotKwllY2hvICJhcl9BRSBDUDg2NCIKLSsJZWNobyAiYXJfRFogQ1A4NjQiCi0rCWVjaG8gImFyX0VHIENQODY0IgotKwllY2hvICJhcl9JUSBDUDg2NCIKLSsJZWNobyAiYXJfSVIgQ1A4NjQiCi0rCWVjaG8gImFyX0pPIENQODY0IgotKwllY2hvICJhcl9LVyBDUDg2NCIKLSsJZWNobyAiYXJfTUEgQ1A4NjQiCi0rCWVjaG8gImFyX09NIENQODY0IgotKwllY2hvICJhcl9RQSBDUDg2NCIKLSsJZWNobyAiYXJfU0EgQ1A4NjQiCi0rCWVjaG8gImFyX1NZIENQODY0IgotKwkjIElTTy04ODU5LTcgbGFuZ3VhZ2VzCi0rCWVjaG8gImVsIENQODY5IgotKwllY2hvICJlbF9HUiBDUDg2OSIKLSsJIyBJU08tODg1OS04IGxhbmd1YWdlcwotKwllY2hvICJoZSBDUDg2MiIKLSsJZWNobyAiaGVfSUwgQ1A4NjIiCi0rCSMgSVNPLTg4NTktOSBsYW5ndWFnZXMKLSsJZWNobyAidHIgQ1A4NTciCi0rCWVjaG8gInRyX1RSIENQODU3IgotKwkjIEphcGFuZXNlCi0rCWVjaG8gImphIENQOTMyIgotKwllY2hvICJqYV9KUCBDUDkzMiIKLSsJIyBDaGluZXNlCi0rCWVjaG8gInpoX0NOIEdCSyIKLSsJZWNobyAiemhfVFcgQ1A5NTAiICMgbm90IENQOTM4ID8/Ci0rCSMgS29yZWFuCi0rCWVjaG8gImtyIENQOTQ5IiAgICAjIG5vdCBDUDkzNCA/PwotKwllY2hvICJrcl9LUiBDUDk0OSIgIyBub3QgQ1A5MzQgPz8KLSsJIyBUaGFpCi0rCWVjaG8gInRoIENQODc0IgotKwllY2hvICJ0aF9USCBDUDg3NCIKLSsJIyBPdGhlcgotKwllY2hvICJlbyBDUDg1MCIKLSsJZWNobyAiZW9fRU8gQ1A4NTAiCi0rCTs7Ci0rZXNhYwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2RjZ2V0dGV4dC5jCTE5OTgtMDQtMjYgMDk6MjI6MzYuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2RjZ2V0dGV4dC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuMzU5NzQ3NDgwIC0wNDAwCi1AQCAtMSw1OTMgKzEsNTYgQEAKLS0vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGNnZXR0ZXh0KDMpIGZ1bmN0aW9uCi0tICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBkY2dldHRleHQoMykgZnVuY3Rpb24uCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTksIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSAgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLSAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0KLS0jaWZkZWYgX19HTlVDX18KLS0jIGRlZmluZSBhbGxvY2EgX19idWlsdGluX2FsbG9jYQotLSMgZGVmaW5lIEhBVkVfQUxMT0NBIDEKLS0jZWxzZQotLSMgaWYgZGVmaW5lZCBIQVZFX0FMTE9DQV9IIHx8IGRlZmluZWQgX0xJQkMKLS0jICBpbmNsdWRlIDxhbGxvY2EuaD4KLS0jIGVsc2UKLS0jICBpZmRlZiBfQUlYCi0tICNwcmFnbWEgYWxsb2NhCi0tIyAgZWxzZQotLSMgICBpZm5kZWYgYWxsb2NhCi0tY2hhciAqYWxsb2NhICgpOwotLSMgICBlbmRpZgotLSMgIGVuZGlmCi0tIyBlbmRpZgotLSNlbmRpZgotLQotLSNpbmNsdWRlIDxlcnJuby5oPgotLSNpZm5kZWYgZXJybm8KLS1leHRlcm4gaW50IGVycm5vOwotLSNlbmRpZgotLSNpZm5kZWYgX19zZXRfZXJybm8KLS0jIGRlZmluZSBfX3NldF9lcnJubyh2YWwpIGVycm5vID0gKHZhbCkKLS0jZW5kaWYKLS0KLS0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBfTElCQwotLSMgaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2Vsc2UKLS1jaGFyICpnZXRlbnYgKCk7Ci0tIyBpZmRlZiBIQVZFX01BTExPQ19ICi0tIyAgaW5jbHVkZSA8bWFsbG9jLmg+Ci0tIyBlbHNlCi0tdm9pZCBmcmVlICgpOwotLSMgZW5kaWYKLS0jZW5kaWYKLS0KLS0jaWYgZGVmaW5lZCBIQVZFX1NUUklOR19IIHx8IGRlZmluZWQgX0xJQkMKLS0jIGlmbmRlZiBfR05VX1NPVVJDRQotLSMgIGRlZmluZSBfR05VX1NPVVJDRQkxCi0tIyBlbmRpZgotLSMgaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2Vsc2UKLS0jIGluY2x1ZGUgPHN0cmluZ3MuaD4KLS0jZW5kaWYKLS0jaWYgIUhBVkVfU1RSQ0hSICYmICFkZWZpbmVkIF9MSUJDCi0tIyBpZm5kZWYgc3RyY2hyCi0tIyAgZGVmaW5lIHN0cmNociBpbmRleAotLSMgZW5kaWYKLS0jZW5kaWYKLS0KLS0jaWYgZGVmaW5lZCBIQVZFX1VOSVNURF9IIHx8IGRlZmluZWQgX0xJQkMKLS0jIGluY2x1ZGUgPHVuaXN0ZC5oPgotLSNlbmRpZgotLQotLSNpbmNsdWRlICJnZXR0ZXh0LmgiCi0gI2luY2x1ZGUgImdldHRleHRQLmgiCi0gI2lmZGVmIF9MSUJDCi0gIyBpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2Vsc2UKLS0jIGluY2x1ZGUgImxpYmdldHRleHQuaCIKLSsjIGluY2x1ZGUgImxpYmdudWludGwuaCIKLSAjZW5kaWYKLS0jaW5jbHVkZSAiaGFzaC1zdHJpbmcuaCIKLSAKLSAvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0gCi0tI2lmZGVmIF9MSUJDCi0tLyogUmVuYW1lIHRoZSBub24gQU5TSSBDIGZ1bmN0aW9ucy4gIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkCi0tICAgYmVjYXVzZSBzb21lIEFOU0kgQyBmdW5jdGlvbnMgd2lsbCByZXF1aXJlIGxpbmtpbmcgd2l0aCB0aGlzIG9iamVjdAotLSAgIGZpbGUgYW5kIHRoZSBuYW1lIHNwYWNlIG11c3Qgbm90IGJlIHBvbGx1dGVkLiAgKi8KLS0jIGRlZmluZSBnZXRjd2QgX19nZXRjd2QKLS0jIGRlZmluZSBzdHBjcHkgX19zdHBjcHkKLS0jZWxzZQotLSMgaWYgIWRlZmluZWQgSEFWRV9HRVRDV0QKLS1jaGFyICpnZXR3ZCAoKTsKLS0jICBkZWZpbmUgZ2V0Y3dkKGJ1ZiwgbWF4KSBnZXR3ZCAoYnVmKQotLSMgZWxzZQotLWNoYXIgKmdldGN3ZCAoKTsKLS0jIGVuZGlmCi0tIyBpZm5kZWYgSEFWRV9TVFBDUFkKLS1zdGF0aWMgY2hhciAqc3RwY3B5IFBBUkFNUyAoKGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYykpOwotLSMgZW5kaWYKLS0jZW5kaWYKLS0KLS0vKiBBbW91bnQgdG8gaW5jcmVhc2UgYnVmZmVyIHNpemUgYnkgaW4gZWFjaCB0cnkuICAqLwotLSNkZWZpbmUgUEFUSF9JTkNSIDMyCi0tCi0tLyogVGhlIGZvbGxvd2luZyBpcyBmcm9tIHBhdGhtYXguaC4gICovCi0tLyogTm9uLVBPU0lYIEJTRCBzeXN0ZW1zIG1pZ2h0IGhhdmUgZ2NjJ3MgbGltaXRzLmgsIHdoaWNoIGRvZXNuJ3QgZGVmaW5lCi0tICAgUEFUSF9NQVggYnV0IG1pZ2h0IGNhdXNlIHJlZGVmaW5pdGlvbiB3YXJuaW5ncyB3aGVuIHN5cy9wYXJhbS5oIGlzCi0tICAgbGF0ZXIgaW5jbHVkZWQgKGFzIG9uIE1PUkUvQlNEIDQuMykuICAqLwotLSNpZiBkZWZpbmVkKF9QT1NJWF9WRVJTSU9OKSB8fCAoZGVmaW5lZChIQVZFX0xJTUlUU19IKSAmJiAhZGVmaW5lZChfX0dOVUNfXykpCi0tIyBpbmNsdWRlIDxsaW1pdHMuaD4KLS0jZW5kaWYKLS0KLS0jaWZuZGVmIF9QT1NJWF9QQVRIX01BWAotLSMgZGVmaW5lIF9QT1NJWF9QQVRIX01BWCAyNTUKLS0jZW5kaWYKLS0KLS0jaWYgIWRlZmluZWQoUEFUSF9NQVgpICYmIGRlZmluZWQoX1BDX1BBVEhfTUFYKQotLSMgZGVmaW5lIFBBVEhfTUFYIChwYXRoY29uZiAoIi8iLCBfUENfUEFUSF9NQVgpIDwgMSA/IDEwMjQgOiBwYXRoY29uZiAoIi8iLCBfUENfUEFUSF9NQVgpKQotLSNlbmRpZgotLQotLS8qIERvbid0IGluY2x1ZGUgc3lzL3BhcmFtLmggaWYgaXQgYWxyZWFkeSBoYXMgYmVlbi4gICovCi0tI2lmIGRlZmluZWQoSEFWRV9TWVNfUEFSQU1fSCkgJiYgIWRlZmluZWQoUEFUSF9NQVgpICYmICFkZWZpbmVkKE1BWFBBVEhMRU4pCi0tIyBpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLS0jZW5kaWYKLS0KLS0jaWYgIWRlZmluZWQoUEFUSF9NQVgpICYmIGRlZmluZWQoTUFYUEFUSExFTikKLS0jIGRlZmluZSBQQVRIX01BWCBNQVhQQVRITEVOCi0tI2VuZGlmCi0tCi0tI2lmbmRlZiBQQVRIX01BWAotLSMgZGVmaW5lIFBBVEhfTUFYIF9QT1NJWF9QQVRIX01BWAotLSNlbmRpZgotLQotLS8qIFhQRzMgZGVmaW5lcyB0aGUgcmVzdWx0IG9mIGBzZXRsb2NhbGUgKGNhdGVnb3J5LCBOVUxMKScgYXM6Ci0tICAgYGBEaXJlY3RzIGBzZXRsb2NhbGUoKScgdG8gcXVlcnkgYGNhdGVnb3J5JyBhbmQgcmV0dXJuIHRoZSBjdXJyZW50Ci0tICAgICBzZXR0aW5nIG9mIGBsb2NhbCcuJycKLS0gICBIb3dldmVyIGl0IGRvZXMgbm90IHNwZWNpZnkgdGhlIGV4YWN0IGZvcm1hdC4gIEFuZCBldmVuIHdvcnNlOiBQT1NJWAotLSAgIGRlZmluZXMgdGhpcyBub3QgYXQgYWxsLiAgU28gd2UgY2FuIHVzZSB0aGlzIGZlYXR1cmUgb25seSBvbiBzZWxlY3RlZAotLSAgIHN5c3RlbSAoZS5nLiB0aG9zZSB1c2luZyBHTlUgQyBMaWJyYXJ5KS4gICovCi0tI2lmZGVmIF9MSUJDCi0tIyBkZWZpbmUgSEFWRV9MT0NBTEVfTlVMTAotLSNlbmRpZgotLQotLS8qIE5hbWUgb2YgdGhlIGRlZmF1bHQgZG9tYWluIHVzZWQgZm9yIGdldHRleHQoMykgcHJpb3IgYW55IGNhbGwgdG8KLS0gICB0ZXh0ZG9tYWluKDMpLiAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgaXMgIm1lc3NhZ2VzIi4gICovCi0tY29uc3QgY2hhciBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbltdID0gIm1lc3NhZ2VzIjsKLS0KLS0vKiBWYWx1ZSB1c2VkIGFzIHRoZSBkZWZhdWx0IGRvbWFpbiBmb3IgZ2V0dGV4dCgzKS4gICovCi0tY29uc3QgY2hhciAqX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gPSBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbjsKLS0KLS0vKiBDb250YWlucyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbWVzc2FnZSBjYXRhbG9ncy4gICovCi0tY29uc3QgY2hhciBfbmxfZGVmYXVsdF9kaXJuYW1lW10gPSBHTlVMT0NBTEVESVI7Ci0tCi0tLyogTGlzdCB3aXRoIGJpbmRpbmdzIG9mIHNwZWNpZmljIGRvbWFpbnMgY3JlYXRlZCBieSBiaW5kdGV4dGRvbWFpbigpCi0tICAgY2FsbHMuICAqLwotLXN0cnVjdCBiaW5kaW5nICpfbmxfZG9tYWluX2JpbmRpbmdzOwotLQotLS8qIFByb3RvdHlwZXMgZm9yIGxvY2FsIGZ1bmN0aW9ucy4gICovCi0tc3RhdGljIGNoYXIgKmZpbmRfbXNnIFBBUkFNUyAoKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbl9maWxlLAotLQkJCSAgICAgICBjb25zdCBjaGFyICptc2dpZCkpOwotLXN0YXRpYyBjb25zdCBjaGFyICpjYXRlZ29yeV90b19uYW1lIFBBUkFNUyAoKGludCBjYXRlZ29yeSkpOwotLXN0YXRpYyBjb25zdCBjaGFyICpndWVzc19jYXRlZ29yeV92YWx1ZSBQQVJBTVMgKChpbnQgY2F0ZWdvcnksCi0tCQkJCQkJIGNvbnN0IGNoYXIgKmNhdGVnb3J5bmFtZSkpOwotLQotLQotLS8qIEZvciB0aG9zZSBsb29zaW5nIHN5c3RlbXMgd2hpY2ggZG9uJ3QgaGF2ZSBgYWxsb2NhJyB3ZSBoYXZlIHRvIGFkZAotLSAgIHNvbWUgYWRkaXRpb25hbCBjb2RlIGVtdWxhdGluZyBpdC4gICovCi0tI2lmZGVmIEhBVkVfQUxMT0NBCi0tLyogTm90aGluZyBoYXMgdG8gYmUgZG9uZS4gICovCi0tIyBkZWZpbmUgQUREX0JMT0NLKGxpc3QsIGFkZHJlc3MpIC8qIG5vdGhpbmcgKi8KLS0jIGRlZmluZSBGUkVFX0JMT0NLUyhsaXN0KSAvKiBub3RoaW5nICovCi0tI2Vsc2UKLS1zdHJ1Y3QgYmxvY2tfbGlzdAotLXsKLS0gIHZvaWQgKmFkZHJlc3M7Ci0tICBzdHJ1Y3QgYmxvY2tfbGlzdCAqbmV4dDsKLS19OwotLSMgZGVmaW5lIEFERF9CTE9DSyhsaXN0LCBhZGRyKQkJCQkJCSAgICAgIFwKLS0gIGRvIHsJCQkJCQkJCQkgICAgICBcCi0tICAgIHN0cnVjdCBibG9ja19saXN0ICpuZXdwID0gKHN0cnVjdCBibG9ja19saXN0ICopIG1hbGxvYyAoc2l6ZW9mICgqbmV3cCkpOyAgXAotLSAgICAvKiBJZiB3ZSBjYW5ub3QgZ2V0IGEgZnJlZSBibG9jayB3ZSBjYW5ub3QgYWRkIHRoZSBuZXcgZWxlbWVudCB0bwkgICAgICBcCi0tICAgICAgIHRoZSBsaXN0LiAgKi8JCQkJCQkJICAgICAgXAotLSAgICBpZiAobmV3cCAhPSBOVUxMKSB7CQkJCQkJCSAgICAgIFwKLS0gICAgICBuZXdwLT5hZGRyZXNzID0gKGFkZHIpOwkJCQkJCSAgICAgIFwKLS0gICAgICBuZXdwLT5uZXh0ID0gKGxpc3QpOwkJCQkJCSAgICAgIFwKLS0gICAgICAobGlzdCkgPSBuZXdwOwkJCQkJCQkgICAgICBcCi0tICAgIH0JCQkJCQkJCQkgICAgICBcCi0tICB9IHdoaWxlICgwKQotLSMgZGVmaW5lIEZSRUVfQkxPQ0tTKGxpc3QpCQkJCQkJICAgICAgXAotLSAgZG8gewkJCQkJCQkJCSAgICAgIFwKLS0gICAgd2hpbGUgKGxpc3QgIT0gTlVMTCkgewkJCQkJCSAgICAgIFwKLS0gICAgICBzdHJ1Y3QgYmxvY2tfbGlzdCAqb2xkID0gbGlzdDsJCQkJCSAgICAgIFwKLS0gICAgICBsaXN0ID0gbGlzdC0+bmV4dDsJCQkJCQkgICAgICBcCi0tICAgICAgZnJlZSAob2xkKTsJCQkJCQkJICAgICAgXAotLSAgICB9CQkJCQkJCQkJICAgICAgXAotLSAgfSB3aGlsZSAoMCkKLS0jIHVuZGVmIGFsbG9jYQotLSMgZGVmaW5lIGFsbG9jYShzaXplKSAobWFsbG9jIChzaXplKSkKLS0jZW5kaWYJLyogaGF2ZSBhbGxvY2EgKi8KLS0KLS0KLSAvKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGV5IG11c3Qgbm90IGNsYXNoCi0gICAgd2l0aCBleGlzdGluZyBuYW1lcyBhbmQgdGhleSBzaG91bGQgZm9sbG93IEFOU0kgQy4gIEJ1dCB0aGlzIHNvdXJjZQotICAgIGNvZGUgaXMgYWxzbyB1c2VkIGluIEdOVSBDIExpYnJhcnkgd2hlcmUgdGhlIG5hbWVzIGhhdmUgYSBfXwotICAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCi0gI2lmZGVmIF9MSUJDCi0gIyBkZWZpbmUgRENHRVRURVhUIF9fZGNnZXR0ZXh0Ci0rIyBkZWZpbmUgRENJR0VUVEVYVCBfX2RjaWdldHRleHQKLSAjZWxzZQotLSMgZGVmaW5lIERDR0VUVEVYVCBkY2dldHRleHRfXwotKyMgZGVmaW5lIERDR0VUVEVYVCBsaWJpbnRsX2RjZ2V0dGV4dAotKyMgZGVmaW5lIERDSUdFVFRFWFQgbGliaW50bF9kY2lnZXR0ZXh0Ci0gI2VuZGlmCi0gCi0gLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50IENBVEVHT1JZCi0gICAgbG9jYWxlLiAgKi8KLSBjaGFyICoKLS1EQ0dFVFRFWFQgKGRvbWFpbm5hbWUsIG1zZ2lkLCBjYXRlZ29yeSkKLS0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7Ci0tICAgICBjb25zdCBjaGFyICptc2dpZDsKLS0gICAgIGludCBjYXRlZ29yeTsKLStEQ0dFVFRFWFQgKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKm1zZ2lkLCBpbnQgY2F0ZWdvcnkpCi0gewotLSNpZm5kZWYgSEFWRV9BTExPQ0EKLS0gIHN0cnVjdCBibG9ja19saXN0ICpibG9ja19saXN0ID0gTlVMTDsKLS0jZW5kaWYKLS0gIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbjsKLS0gIHN0cnVjdCBiaW5kaW5nICpiaW5kaW5nOwotLSAgY29uc3QgY2hhciAqY2F0ZWdvcnluYW1lOwotLSAgY29uc3QgY2hhciAqY2F0ZWdvcnl2YWx1ZTsKLS0gIGNoYXIgKmRpcm5hbWUsICp4ZG9tYWlubmFtZTsKLS0gIGNoYXIgKnNpbmdsZV9sb2NhbGU7Ci0tICBjaGFyICpyZXR2YWw7Ci0tICBpbnQgc2F2ZWRfZXJybm8gPSBlcnJubzsKLS0KLS0gIC8qIElmIG5vIHJlYWwgTVNHSUQgaXMgZ2l2ZW4gcmV0dXJuIE5VTEwuICAqLwotLSAgaWYgKG1zZ2lkID09IE5VTEwpCi0tICAgIHJldHVybiBOVUxMOwotLQotLSAgLyogSWYgRE9NQUlOTkFNRSBpcyBOVUxMLCB3ZSBhcmUgaW50ZXJlc3RlZCBpbiB0aGUgZGVmYXVsdCBkb21haW4uICBJZgotLSAgICAgQ0FURUdPUlkgaXMgbm90IExDX01FU1NBR0VTIHRoaXMgbWlnaHQgbm90IG1ha2UgbXVjaCBzZW5zZSBidXQgdGhlCi0tICAgICBkZWZpbnRpb24gbGVmdCB0aGlzIHVuZGVmaW5lZC4gICovCi0tICBpZiAoZG9tYWlubmFtZSA9PSBOVUxMKQotLSAgICBkb21haW5uYW1lID0gX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW47Ci0tCi0tICAvKiBGaXJzdCBmaW5kIG1hdGNoaW5nIGJpbmRpbmcuICAqLwotLSAgZm9yIChiaW5kaW5nID0gX25sX2RvbWFpbl9iaW5kaW5nczsgYmluZGluZyAhPSBOVUxMOyBiaW5kaW5nID0gYmluZGluZy0+bmV4dCkKLS0gICAgewotLSAgICAgIGludCBjb21wYXJlID0gc3RyY21wIChkb21haW5uYW1lLCBiaW5kaW5nLT5kb21haW5uYW1lKTsKLS0gICAgICBpZiAoY29tcGFyZSA9PSAwKQotLQkvKiBXZSBmb3VuZCBpdCEgICovCi0tCWJyZWFrOwotLSAgICAgIGlmIChjb21wYXJlIDwgMCkKLS0JewotLQkgIC8qIEl0IGlzIG5vdCBpbiB0aGUgbGlzdC4gICovCi0tCSAgYmluZGluZyA9IE5VTEw7Ci0tCSAgYnJlYWs7Ci0tCX0KLS0gICAgfQotLQotLSAgaWYgKGJpbmRpbmcgPT0gTlVMTCkKLS0gICAgZGlybmFtZSA9IChjaGFyICopIF9ubF9kZWZhdWx0X2Rpcm5hbWU7Ci0tICBlbHNlIGlmIChiaW5kaW5nLT5kaXJuYW1lWzBdID09ICcvJykKLS0gICAgZGlybmFtZSA9IGJpbmRpbmctPmRpcm5hbWU7Ci0tICBlbHNlCi0tICAgIHsKLS0gICAgICAvKiBXZSBoYXZlIGEgcmVsYXRpdmUgcGF0aC4gIE1ha2UgaXQgYWJzb2x1dGUgbm93LiAgKi8KLS0gICAgICBzaXplX3QgZGlybmFtZV9sZW4gPSBzdHJsZW4gKGJpbmRpbmctPmRpcm5hbWUpICsgMTsKLS0gICAgICBzaXplX3QgcGF0aF9tYXg7Ci0tICAgICAgY2hhciAqcmV0OwotLQotLSAgICAgIHBhdGhfbWF4ID0gKHVuc2lnbmVkKSBQQVRIX01BWDsKLS0gICAgICBwYXRoX21heCArPSAyOwkJLyogVGhlIGdldGN3ZCBkb2NzIHNheSB0byBkbyB0aGlzLiAgKi8KLS0KLS0gICAgICBkaXJuYW1lID0gKGNoYXIgKikgYWxsb2NhIChwYXRoX21heCArIGRpcm5hbWVfbGVuKTsKLS0gICAgICBBRERfQkxPQ0sgKGJsb2NrX2xpc3QsIGRpcm5hbWUpOwotLQotLSAgICAgIF9fc2V0X2Vycm5vICgwKTsKLS0gICAgICB3aGlsZSAoKHJldCA9IGdldGN3ZCAoZGlybmFtZSwgcGF0aF9tYXgpKSA9PSBOVUxMICYmIGVycm5vID09IEVSQU5HRSkKLS0JewotLQkgIHBhdGhfbWF4ICs9IFBBVEhfSU5DUjsKLS0JICBkaXJuYW1lID0gKGNoYXIgKikgYWxsb2NhIChwYXRoX21heCArIGRpcm5hbWVfbGVuKTsKLS0JICBBRERfQkxPQ0sgKGJsb2NrX2xpc3QsIGRpcm5hbWUpOwotLQkgIF9fc2V0X2Vycm5vICgwKTsKLS0JfQotLQotLSAgICAgIGlmIChyZXQgPT0gTlVMTCkKLS0JewotLQkgIC8qIFdlIGNhbm5vdCBnZXQgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuICBEb24ndCBzaWduYWwgYW4KLS0JICAgICBlcnJvciBidXQgc2ltcGx5IHJldHVybiB0aGUgZGVmYXVsdCBzdHJpbmcuICAqLwotLQkgIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKLS0JICBfX3NldF9lcnJubyAoc2F2ZWRfZXJybm8pOwotLQkgIHJldHVybiAoY2hhciAqKSBtc2dpZDsKLS0JfQotLQotLSAgICAgIHN0cGNweSAoc3RwY3B5IChzdHJjaHIgKGRpcm5hbWUsICdcMCcpLCAiLyIpLCBiaW5kaW5nLT5kaXJuYW1lKTsKLS0gICAgfQotLQotLSAgLyogTm93IGRldGVybWluZSB0aGUgc3ltYm9saWMgbmFtZSBvZiBDQVRFR09SWSBhbmQgaXRzIHZhbHVlLiAgKi8KLS0gIGNhdGVnb3J5bmFtZSA9IGNhdGVnb3J5X3RvX25hbWUgKGNhdGVnb3J5KTsKLS0gIGNhdGVnb3J5dmFsdWUgPSBndWVzc19jYXRlZ29yeV92YWx1ZSAoY2F0ZWdvcnksIGNhdGVnb3J5bmFtZSk7Ci0tCi0tICB4ZG9tYWlubmFtZSA9IChjaGFyICopIGFsbG9jYSAoc3RybGVuIChjYXRlZ29yeW5hbWUpCi0tCQkJCSArIHN0cmxlbiAoZG9tYWlubmFtZSkgKyA1KTsKLS0gIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgeGRvbWFpbm5hbWUpOwotLQotLSAgc3RwY3B5IChzdHBjcHkgKHN0cGNweSAoc3RwY3B5ICh4ZG9tYWlubmFtZSwgY2F0ZWdvcnluYW1lKSwgIi8iKSwKLS0JCSAgZG9tYWlubmFtZSksCi0tCSAgIi5tbyIpOwotLQotLSAgLyogQ3JlYXRpbmcgd29ya2luZyBhcmVhLiAgKi8KLS0gIHNpbmdsZV9sb2NhbGUgPSAoY2hhciAqKSBhbGxvY2EgKHN0cmxlbiAoY2F0ZWdvcnl2YWx1ZSkgKyAxKTsKLS0gIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgc2luZ2xlX2xvY2FsZSk7Ci0tCi0tCi0tICAvKiBTZWFyY2ggZm9yIHRoZSBnaXZlbiBzdHJpbmcuICBUaGlzIGlzIGEgbG9vcCBiZWNhdXNlIHdlIHBlcmhhcHMKLS0gICAgIGdvdCBhbiBvcmRlcmVkIGxpc3Qgb2YgbGFuZ3VhZ2VzIHRvIGNvbnNpZGVyIGZvciB0aCB0cmFuc2xhdGlvbi4gICovCi0tICB3aGlsZSAoMSkKLS0gICAgewotLSAgICAgIC8qIE1ha2UgQ0FURUdPUllWQUxVRSBwb2ludCB0byB0aGUgbmV4dCBlbGVtZW50IG9mIHRoZSBsaXN0LiAgKi8KLS0gICAgICB3aGlsZSAoY2F0ZWdvcnl2YWx1ZVswXSAhPSAnXDAnICYmIGNhdGVnb3J5dmFsdWVbMF0gPT0gJzonKQotLQkrK2NhdGVnb3J5dmFsdWU7Ci0tICAgICAgaWYgKGNhdGVnb3J5dmFsdWVbMF0gPT0gJ1wwJykKLS0JewotLQkgIC8qIFRoZSB3aG9sZSBjb250ZW50cyBvZiBDQVRFR09SWVZBTFVFIGhhcyBiZWVuIHNlYXJjaGVkIGJ1dAotLQkgICAgIG5vIHZhbGlkIGVudHJ5IGhhcyBiZWVuIGZvdW5kLiAgV2Ugc29sdmUgdGhpcyBzaXR1YXRpb24KLS0JICAgICBieSBpbXBsaWNpdGx5IGFwcGVuZGluZyBhICJDIiBlbnRyeSwgaS5lLiBubyB0cmFuc2xhdGlvbgotLQkgICAgIHdpbGwgdGFrZSBwbGFjZS4gICovCi0tCSAgc2luZ2xlX2xvY2FsZVswXSA9ICdDJzsKLS0JICBzaW5nbGVfbG9jYWxlWzFdID0gJ1wwJzsKLS0JfQotLSAgICAgIGVsc2UKLS0JewotLQkgIGNoYXIgKmNwID0gc2luZ2xlX2xvY2FsZTsKLS0JICB3aGlsZSAoY2F0ZWdvcnl2YWx1ZVswXSAhPSAnXDAnICYmIGNhdGVnb3J5dmFsdWVbMF0gIT0gJzonKQotLQkgICAgKmNwKysgPSAqY2F0ZWdvcnl2YWx1ZSsrOwotLQkgICpjcCA9ICdcMCc7Ci0tCX0KLS0KLS0gICAgICAvKiBJZiB0aGUgY3VycmVudCBsb2NhbGUgdmFsdWUgaXMgQyAob3IgUE9TSVgpIHdlIGRvbid0IGxvYWQgYQotLQkgZG9tYWluLiAgUmV0dXJuIHRoZSBNU0dJRC4gICovCi0tICAgICAgaWYgKHN0cmNtcCAoc2luZ2xlX2xvY2FsZSwgIkMiKSA9PSAwCi0tCSAgfHwgc3RyY21wIChzaW5nbGVfbG9jYWxlLCAiUE9TSVgiKSA9PSAwKQotLQl7Ci0tCSAgRlJFRV9CTE9DS1MgKGJsb2NrX2xpc3QpOwotLQkgIF9fc2V0X2Vycm5vIChzYXZlZF9lcnJubyk7Ci0tCSAgcmV0dXJuIChjaGFyICopIG1zZ2lkOwotLQl9Ci0tCi0tCi0tICAgICAgLyogRmluZCBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgbWVzc2FnZSBjYXRhbG9nIG1hdGNoaW5nIHRoZQotLQkgRE9NQUlOTkFNRSBhbmQgQ0FURUdPUlkuICAqLwotLSAgICAgIGRvbWFpbiA9IF9ubF9maW5kX2RvbWFpbiAoZGlybmFtZSwgc2luZ2xlX2xvY2FsZSwgeGRvbWFpbm5hbWUpOwotLQotLSAgICAgIGlmIChkb21haW4gIT0gTlVMTCkKLS0JewotLQkgIHJldHZhbCA9IGZpbmRfbXNnIChkb21haW4sIG1zZ2lkKTsKLS0KLS0JICBpZiAocmV0dmFsID09IE5VTEwpCi0tCSAgICB7Ci0tCSAgICAgIGludCBjbnQ7Ci0tCi0tCSAgICAgIGZvciAoY250ID0gMDsgZG9tYWluLT5zdWNjZXNzb3JbY250XSAhPSBOVUxMOyArK2NudCkKLS0JCXsKLS0JCSAgcmV0dmFsID0gZmluZF9tc2cgKGRvbWFpbi0+c3VjY2Vzc29yW2NudF0sIG1zZ2lkKTsKLS0KLS0JCSAgaWYgKHJldHZhbCAhPSBOVUxMKQotLQkJICAgIGJyZWFrOwotLQkJfQotLQkgICAgfQotLQotLQkgIGlmIChyZXR2YWwgIT0gTlVMTCkKLS0JICAgIHsKLS0JICAgICAgRlJFRV9CTE9DS1MgKGJsb2NrX2xpc3QpOwotLQkgICAgICBfX3NldF9lcnJubyAoc2F2ZWRfZXJybm8pOwotLQkgICAgICByZXR1cm4gcmV0dmFsOwotLQkgICAgfQotLQl9Ci0tICAgIH0KLS0gIC8qIE5PVFJFQUNIRUQgKi8KLSsgIHJldHVybiBEQ0lHRVRURVhUIChkb21haW5uYW1lLCBtc2dpZCwgTlVMTCwgMCwgMCwgY2F0ZWdvcnkpOwotIH0KLSAKLSAjaWZkZWYgX0xJQkMKLSAvKiBBbGlhcyBmb3IgZnVuY3Rpb24gbmFtZSBpbiBHTlUgQyBMaWJyYXJ5LiAgKi8KLStJTlRERUYoX19kY2dldHRleHQpCi0gd2Vha19hbGlhcyAoX19kY2dldHRleHQsIGRjZ2V0dGV4dCk7Ci0gI2VuZGlmCi0tCi0tCi0tc3RhdGljIGNoYXIgKgotLWZpbmRfbXNnIChkb21haW5fZmlsZSwgbXNnaWQpCi0tICAgICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW5fZmlsZTsKLS0gICAgIGNvbnN0IGNoYXIgKm1zZ2lkOwotLXsKLS0gIHNpemVfdCB0b3AsIGFjdCwgYm90dG9tOwotLSAgc3RydWN0IGxvYWRlZF9kb21haW4gKmRvbWFpbjsKLS0KLS0gIGlmIChkb21haW5fZmlsZS0+ZGVjaWRlZCA9PSAwKQotLSAgICBfbmxfbG9hZF9kb21haW4gKGRvbWFpbl9maWxlKTsKLS0KLS0gIGlmIChkb21haW5fZmlsZS0+ZGF0YSA9PSBOVUxMKQotLSAgICByZXR1cm4gTlVMTDsKLS0KLS0gIGRvbWFpbiA9IChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqKSBkb21haW5fZmlsZS0+ZGF0YTsKLS0KLS0gIC8qIExvY2F0ZSB0aGUgTVNHSUQgYW5kIGl0cyB0cmFuc2xhdGlvbi4gICovCi0tICBpZiAoZG9tYWluLT5oYXNoX3NpemUgPiAyICYmIGRvbWFpbi0+aGFzaF90YWIgIT0gTlVMTCkKLS0gICAgewotLSAgICAgIC8qIFVzZSB0aGUgaGFzaGluZyB0YWJsZS4gICovCi0tICAgICAgbmxzX3VpbnQzMiBsZW4gPSBzdHJsZW4gKG1zZ2lkKTsKLS0gICAgICBubHNfdWludDMyIGhhc2hfdmFsID0gaGFzaF9zdHJpbmcgKG1zZ2lkKTsKLS0gICAgICBubHNfdWludDMyIGlkeCA9IGhhc2hfdmFsICUgZG9tYWluLT5oYXNoX3NpemU7Ci0tICAgICAgbmxzX3VpbnQzMiBpbmNyID0gMSArIChoYXNoX3ZhbCAlIChkb21haW4tPmhhc2hfc2l6ZSAtIDIpKTsKLS0gICAgICBubHNfdWludDMyIG5zdHIgPSBXIChkb21haW4tPm11c3Rfc3dhcCwgZG9tYWluLT5oYXNoX3RhYltpZHhdKTsKLS0KLS0gICAgICBpZiAobnN0ciA9PSAwKQotLQkvKiBIYXNoIHRhYmxlIGVudHJ5IGlzIGVtcHR5LiAgKi8KLS0JcmV0dXJuIE5VTEw7Ci0tCi0tICAgICAgaWYgKFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkb21haW4tPm9yaWdfdGFiW25zdHIgLSAxXS5sZW5ndGgpID09IGxlbgotLQkgICYmIHN0cmNtcCAobXNnaWQsCi0tCQkgICAgIGRvbWFpbi0+ZGF0YSArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLAotLQkJCQkgICAgICAgZG9tYWluLT5vcmlnX3RhYltuc3RyIC0gMV0ub2Zmc2V0KSkgPT0gMCkKLS0JcmV0dXJuIChjaGFyICopIGRvbWFpbi0+ZGF0YSArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLAotLQkJCQkJICBkb21haW4tPnRyYW5zX3RhYltuc3RyIC0gMV0ub2Zmc2V0KTsKLS0KLS0gICAgICB3aGlsZSAoMSkKLS0JewotLQkgIGlmIChpZHggPj0gZG9tYWluLT5oYXNoX3NpemUgLSBpbmNyKQotLQkgICAgaWR4IC09IGRvbWFpbi0+aGFzaF9zaXplIC0gaW5jcjsKLS0JICBlbHNlCi0tCSAgICBpZHggKz0gaW5jcjsKLS0KLS0JICBuc3RyID0gVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRvbWFpbi0+aGFzaF90YWJbaWR4XSk7Ci0tCSAgaWYgKG5zdHIgPT0gMCkKLS0JICAgIC8qIEhhc2ggdGFibGUgZW50cnkgaXMgZW1wdHkuICAqLwotLQkgICAgcmV0dXJuIE5VTEw7Ci0tCi0tCSAgaWYgKFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkb21haW4tPm9yaWdfdGFiW25zdHIgLSAxXS5sZW5ndGgpID09IGxlbgotLQkgICAgICAmJiBzdHJjbXAgKG1zZ2lkLAotLQkJCSBkb21haW4tPmRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwKLS0JCQkJCSAgIGRvbWFpbi0+b3JpZ190YWJbbnN0ciAtIDFdLm9mZnNldCkpCi0tCSAgICAgICAgID09IDApCi0tCSAgICByZXR1cm4gKGNoYXIgKikgZG9tYWluLT5kYXRhCi0tCSAgICAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRvbWFpbi0+dHJhbnNfdGFiW25zdHIgLSAxXS5vZmZzZXQpOwotLQl9Ci0tICAgICAgLyogTk9UUkVBQ0hFRCAqLwotLSAgICB9Ci0tCi0tICAvKiBOb3cgd2UgdHJ5IHRoZSBkZWZhdWx0IG1ldGhvZDogIGJpbmFyeSBzZWFyY2ggaW4gdGhlIHNvcnRlZAotLSAgICAgYXJyYXkgb2YgbWVzc2FnZXMuICAqLwotLSAgYm90dG9tID0gMDsKLS0gIHRvcCA9IGRvbWFpbi0+bnN0cmluZ3M7Ci0tICB3aGlsZSAoYm90dG9tIDwgdG9wKQotLSAgICB7Ci0tICAgICAgaW50IGNtcF92YWw7Ci0tCi0tICAgICAgYWN0ID0gKGJvdHRvbSArIHRvcCkgLyAyOwotLSAgICAgIGNtcF92YWwgPSBzdHJjbXAgKG1zZ2lkLCBkb21haW4tPmRhdGEKLS0JCQkgICAgICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwKLS0JCQkJICAgIGRvbWFpbi0+b3JpZ190YWJbYWN0XS5vZmZzZXQpKTsKLS0gICAgICBpZiAoY21wX3ZhbCA8IDApCi0tCXRvcCA9IGFjdDsKLS0gICAgICBlbHNlIGlmIChjbXBfdmFsID4gMCkKLS0JYm90dG9tID0gYWN0ICsgMTsKLS0gICAgICBlbHNlCi0tCWJyZWFrOwotLSAgICB9Ci0tCi0tICAvKiBJZiBhbiB0cmFuc2xhdGlvbiBpcyBmb3VuZCByZXR1cm4gdGhpcy4gICovCi0tICByZXR1cm4gYm90dG9tID49IHRvcCA/IE5VTEwgOiAoY2hhciAqKSBkb21haW4tPmRhdGEKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCi0tCQkJCSAgICAgZG9tYWluLT50cmFuc190YWJbYWN0XS5vZmZzZXQpOwotLX0KLS0KLS0KLS0vKiBSZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGxvY2FsZSBDQVRFR09SWS4gICovCi0tc3RhdGljIGNvbnN0IGNoYXIgKgotLWNhdGVnb3J5X3RvX25hbWUgKGNhdGVnb3J5KQotLSAgICAgaW50IGNhdGVnb3J5OwotLXsKLS0gIGNvbnN0IGNoYXIgKnJldHZhbDsKLS0KLS0gIHN3aXRjaCAoY2F0ZWdvcnkpCi0tICB7Ci0tI2lmZGVmIExDX0NPTExBVEUKLS0gIGNhc2UgTENfQ09MTEFURToKLS0gICAgcmV0dmFsID0gIkxDX0NPTExBVEUiOwotLSAgICBicmVhazsKLS0jZW5kaWYKLS0jaWZkZWYgTENfQ1RZUEUKLS0gIGNhc2UgTENfQ1RZUEU6Ci0tICAgIHJldHZhbCA9ICJMQ19DVFlQRSI7Ci0tICAgIGJyZWFrOwotLSNlbmRpZgotLSNpZmRlZiBMQ19NT05FVEFSWQotLSAgY2FzZSBMQ19NT05FVEFSWToKLS0gICAgcmV0dmFsID0gIkxDX01PTkVUQVJZIjsKLS0gICAgYnJlYWs7Ci0tI2VuZGlmCi0tI2lmZGVmIExDX05VTUVSSUMKLS0gIGNhc2UgTENfTlVNRVJJQzoKLS0gICAgcmV0dmFsID0gIkxDX05VTUVSSUMiOwotLSAgICBicmVhazsKLS0jZW5kaWYKLS0jaWZkZWYgTENfVElNRQotLSAgY2FzZSBMQ19USU1FOgotLSAgICByZXR2YWwgPSAiTENfVElNRSI7Ci0tICAgIGJyZWFrOwotLSNlbmRpZgotLSNpZmRlZiBMQ19NRVNTQUdFUwotLSAgY2FzZSBMQ19NRVNTQUdFUzoKLS0gICAgcmV0dmFsID0gIkxDX01FU1NBR0VTIjsKLS0gICAgYnJlYWs7Ci0tI2VuZGlmCi0tI2lmZGVmIExDX1JFU1BPTlNFCi0tICBjYXNlIExDX1JFU1BPTlNFOgotLSAgICByZXR2YWwgPSAiTENfUkVTUE9OU0UiOwotLSAgICBicmVhazsKLS0jZW5kaWYKLS0jaWZkZWYgTENfQUxMCi0tICBjYXNlIExDX0FMTDoKLS0gICAgLyogVGhpcyBtaWdodCBub3QgbWFrZSBzZW5zZSBidXQgaXMgcGVyaGFwcyBiZXR0ZXIgdGhhbiBhbnkgb3RoZXIKLS0gICAgICAgdmFsdWUuICAqLwotLSAgICByZXR2YWwgPSAiTENfQUxMIjsKLS0gICAgYnJlYWs7Ci0tI2VuZGlmCi0tICBkZWZhdWx0OgotLSAgICAvKiBJZiB5b3UgaGF2ZSBhIGJldHRlciBpZGVhIGZvciBhIGRlZmF1bHQgdmFsdWUgbGV0IG1lIGtub3cuICAqLwotLSAgICByZXR2YWwgPSAiTENfWFhYIjsKLS0gIH0KLS0KLS0gIHJldHVybiByZXR2YWw7Ci0tfQotLQotLS8qIEd1ZXNzIHZhbHVlIG9mIGN1cnJlbnQgbG9jYWxlIGZyb20gdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcy4gICovCi0tc3RhdGljIGNvbnN0IGNoYXIgKgotLWd1ZXNzX2NhdGVnb3J5X3ZhbHVlIChjYXRlZ29yeSwgY2F0ZWdvcnluYW1lKQotLSAgICAgaW50IGNhdGVnb3J5OwotLSAgICAgY29uc3QgY2hhciAqY2F0ZWdvcnluYW1lOwotLXsKLS0gIGNvbnN0IGNoYXIgKnJldHZhbDsKLS0KLS0gIC8qIFRoZSBoaWdoZXN0IHByaW9yaXR5IHZhbHVlIGlzIHRoZSBgTEFOR1VBR0UnIGVudmlyb25tZW50Ci0tICAgICB2YXJpYWJsZS4gIFRoaXMgaXMgYSBHTlUgZXh0ZW5zaW9uLiAgKi8KLS0gIHJldHZhbCA9IGdldGVudiAoIkxBTkdVQUdFIik7Ci0tICBpZiAocmV0dmFsICE9IE5VTEwgJiYgcmV0dmFsWzBdICE9ICdcMCcpCi0tICAgIHJldHVybiByZXR2YWw7Ci0tCi0tICAvKiBgTEFOR1VBR0UnIGlzIG5vdCBzZXQuICBTbyB3ZSBoYXZlIHRvIHByb2NlZWQgd2l0aCB0aGUgUE9TSVgKLS0gICAgIG1ldGhvZHMgb2YgbG9va2luZyB0byBgTENfQUxMJywgYExDX3h4eCcsIGFuZCBgTEFORycuICBPbiBzb21lCi0tICAgICBzeXN0ZW1zIHRoaXMgY2FuIGJlIGRvbmUgYnkgdGhlIGBzZXRsb2NhbGUnIGZ1bmN0aW9uIGl0c2VsZi4gICovCi0tI2lmIGRlZmluZWQgSEFWRV9TRVRMT0NBTEUgJiYgZGVmaW5lZCBIQVZFX0xDX01FU1NBR0VTICYmIGRlZmluZWQgSEFWRV9MT0NBTEVfTlVMTAotLSAgcmV0dXJuIHNldGxvY2FsZSAoY2F0ZWdvcnksIE5VTEwpOwotLSNlbHNlCi0tICAvKiBTZXR0aW5nIG9mIExDX0FMTCBvdmVyd3JpdGVzIGFsbCBvdGhlci4gICovCi0tICByZXR2YWwgPSBnZXRlbnYgKCJMQ19BTEwiKTsKLS0gIGlmIChyZXR2YWwgIT0gTlVMTCAmJiByZXR2YWxbMF0gIT0gJ1wwJykKLS0gICAgcmV0dXJuIHJldHZhbDsKLS0KLS0gIC8qIE5leHQgY29tZXMgdGhlIG5hbWUgb2YgdGhlIGRlc2lyZWQgY2F0ZWdvcnkuICAqLwotLSAgcmV0dmFsID0gZ2V0ZW52IChjYXRlZ29yeW5hbWUpOwotLSAgaWYgKHJldHZhbCAhPSBOVUxMICYmIHJldHZhbFswXSAhPSAnXDAnKQotLSAgICByZXR1cm4gcmV0dmFsOwotLQotLSAgLyogTGFzdCBwb3NzaWJpbGl0eSBpcyB0aGUgTEFORyBlbnZpcm9ubWVudCB2YXJpYWJsZS4gICovCi0tICByZXR2YWwgPSBnZXRlbnYgKCJMQU5HIik7Ci0tICBpZiAocmV0dmFsICE9IE5VTEwgJiYgcmV0dmFsWzBdICE9ICdcMCcpCi0tICAgIHJldHVybiByZXR2YWw7Ci0tCi0tICAvKiBXZSB1c2UgQyBhcyB0aGUgZGVmYXVsdCBkb21haW4uICBQT1NJWCBzYXlzIHRoaXMgaXMgaW1wbGVtZW50YXRpb24KLS0gICAgIGRlZmluZWQuICAqLwotLSAgcmV0dXJuICJDIjsKLS0jZW5kaWYKLS19Ci0tCi0tLyogQEAgYmVnaW4gb2YgZXBpbG9nIEBAICovCi0tCi0tLyogV2UgZG9uJ3Qgd2FudCBsaWJpbnRsLmEgdG8gZGVwZW5kIG9uIGFueSBvdGhlciBsaWJyYXJ5LiAgU28gd2UKLS0gICBhdm9pZCB0aGUgbm9uLXN0YW5kYXJkIGZ1bmN0aW9uIHN0cGNweS4gIEluIEdOVSBDIExpYnJhcnkgdGhpcwotLSAgIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSwgdGhvdWdoLiAgQWxzbyBhbGxvdyB0aGUgc3ltYm9sIEhBVkVfU1RQQ1BZCi0tICAgdG8gYmUgZGVmaW5lZC4gICovCi0tI2lmICFfTElCQyAmJiAhSEFWRV9TVFBDUFkKLS1zdGF0aWMgY2hhciAqCi0tc3RwY3B5IChkZXN0LCBzcmMpCi0tICAgICBjaGFyICpkZXN0OwotLSAgICAgY29uc3QgY2hhciAqc3JjOwotLXsKLS0gIHdoaWxlICgoKmRlc3QrKyA9ICpzcmMrKykgIT0gJ1wwJykKLS0gICAgLyogRG8gbm90aGluZy4gKi8gOwotLSAgcmV0dXJuIGRlc3QgLSAxOwotLX0KLS0jZW5kaWYKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9kY2lnZXR0ZXh0LmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvZGNpZ2V0dGV4dC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuMzY5NzQ1OTYwIC0wNDAwCi1AQCAtMCwwICsxLDEyMTkgQEAKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgaW50ZXJuYWwgZGNpZ2V0dGV4dCBmdW5jdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OSwgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsvKiBUZWxsIGdsaWJjJ3MgPHN0cmluZy5oPiB0byBwcm92aWRlIGEgcHJvdG90eXBlIGZvciBtZW1wY3B5KCkuCi0rICAgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIDxjb25maWcuaD4gYmVjYXVzZSA8Y29uZmlnLmg+IG1heSBpbmNsdWRlCi0rICAgPGZlYXR1cmVzLmg+LCBhbmQgb25jZSA8ZmVhdHVyZXMuaD4gaGFzIGJlZW4gaW5jbHVkZWQsIGl0J3MgdG9vIGxhdGUuICAqLwotKyNpZm5kZWYgX0dOVV9TT1VSQ0UKLSsjIGRlZmluZSBfR05VX1NPVVJDRQkxCi0rI2VuZGlmCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsKLSsjaWZkZWYgX19HTlVDX18KLSsjIGRlZmluZSBhbGxvY2EgX19idWlsdGluX2FsbG9jYQotKyMgZGVmaW5lIEhBVkVfQUxMT0NBIDEKLSsjZWxzZQotKyMgaWZkZWYgX01TQ19WRVIKLSsjICBpbmNsdWRlIDxtYWxsb2MuaD4KLSsjICBkZWZpbmUgYWxsb2NhIF9hbGxvY2EKLSsjIGVsc2UKLSsjICBpZiBkZWZpbmVkIEhBVkVfQUxMT0NBX0ggfHwgZGVmaW5lZCBfTElCQwotKyMgICBpbmNsdWRlIDxhbGxvY2EuaD4KLSsjICBlbHNlCi0rIyAgIGlmZGVmIF9BSVgKLSsgI3ByYWdtYSBhbGxvY2EKLSsjICAgZWxzZQotKyMgICAgaWZuZGVmIGFsbG9jYQotK2NoYXIgKmFsbG9jYSAoKTsKLSsjICAgIGVuZGlmCi0rIyAgIGVuZGlmCi0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPGVycm5vLmg+Ci0rI2lmbmRlZiBlcnJubwotK2V4dGVybiBpbnQgZXJybm87Ci0rI2VuZGlmCi0rI2lmbmRlZiBfX3NldF9lcnJubwotKyMgZGVmaW5lIF9fc2V0X2Vycm5vKHZhbCkgZXJybm8gPSAodmFsKQotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKwotKyNpZiBkZWZpbmVkIEhBVkVfVU5JU1REX0ggfHwgZGVmaW5lZCBfTElCQwotKyMgaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPGxvY2FsZS5oPgotKwotKyNpZmRlZiBfTElCQwotKyAgLyogR3Vlc3Mgd2hldGhlciBpbnRlZ2VyIGRpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIHNpZ25hbCBTSUdGUEUuCi0rICAgICBTZXQgdG8gMSBvbmx5IGlmIHlvdSBrbm93IGZvciBzdXJlLiAgSW4gY2FzZSBvZiBkb3VidCwgc2V0IHRvIDAuICAqLwotKyMgaWYgZGVmaW5lZCBfX2FscGhhX18gfHwgZGVmaW5lZCBfX2FybV9fIHx8IGRlZmluZWQgX19pMzg2X18gXAotKyAgICAgfHwgZGVmaW5lZCBfX202OGtfXyB8fCBkZWZpbmVkIF9fczM5MF9fCi0rIyAgZGVmaW5lIElOVERJVjBfUkFJU0VTX1NJR0ZQRSAxCi0rIyBlbHNlCi0rIyAgZGVmaW5lIElOVERJVjBfUkFJU0VTX1NJR0ZQRSAwCi0rIyBlbmRpZgotKyNlbmRpZgotKyNpZiAhSU5URElWMF9SQUlTRVNfU0lHRlBFCi0rIyBpbmNsdWRlIDxzaWduYWwuaD4KLSsjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZCBIQVZFX1NZU19QQVJBTV9IIHx8IGRlZmluZWQgX0xJQkMKLSsjIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlICJnZXR0ZXh0UC5oIgotKyNpbmNsdWRlICJwbHVyYWwtZXhwLmgiCi0rI2lmZGVmIF9MSUJDCi0rIyBpbmNsdWRlIDxsaWJpbnRsLmg+Ci0rI2Vsc2UKLSsjIGluY2x1ZGUgImxpYmdudWludGwuaCIKLSsjZW5kaWYKLSsjaW5jbHVkZSAiaGFzaC1zdHJpbmcuaCIKLSsKLSsvKiBUaHJlYWQgc2FmZXR5bmVzcy4gICovCi0rI2lmZGVmIF9MSUJDCi0rIyBpbmNsdWRlIDxiaXRzL2xpYmMtbG9jay5oPgotKyNlbHNlCi0rLyogUHJvdmlkZSBkdW1teSBpbXBsZW1lbnRhdGlvbiBpZiB0aGlzIGlzIG91dHNpZGUgZ2xpYmMuICAqLwotKyMgZGVmaW5lIF9fbGliY19sb2NrX2RlZmluZV9pbml0aWFsaXplZChDTEFTUywgTkFNRSkKLSsjIGRlZmluZSBfX2xpYmNfbG9ja19sb2NrKE5BTUUpCi0rIyBkZWZpbmUgX19saWJjX2xvY2tfdW5sb2NrKE5BTUUpCi0rIyBkZWZpbmUgX19saWJjX3J3bG9ja19kZWZpbmVfaW5pdGlhbGl6ZWQoQ0xBU1MsIE5BTUUpCi0rIyBkZWZpbmUgX19saWJjX3J3bG9ja19yZGxvY2soTkFNRSkKLSsjIGRlZmluZSBfX2xpYmNfcndsb2NrX3VubG9jayhOQU1FKQotKyNlbmRpZgotKwotKy8qIEFsaWdubWVudCBvZiB0eXBlcy4gICovCi0rI2lmIGRlZmluZWQgX19HTlVDX18gJiYgX19HTlVDX18gPj0gMgotKyMgZGVmaW5lIGFsaWdub2YoVFlQRSkgX19hbGlnbm9mX18gKFRZUEUpCi0rI2Vsc2UKLSsjIGRlZmluZSBhbGlnbm9mKFRZUEUpIFwKLSsgICAgKChpbnQpICYoKHN0cnVjdCB7IGNoYXIgZHVtbXkxOyBUWVBFIGR1bW15MjsgfSAqKSAwKS0+ZHVtbXkyKQotKyNlbmRpZgotKwotKy8qIFRoZSBpbnRlcm5hbCB2YXJpYWJsZXMgaW4gdGhlIHN0YW5kYWxvbmUgbGliaW50bC5hIG11c3QgaGF2ZSBkaWZmZXJlbnQKLSsgICBuYW1lcyB0aGFuIHRoZSBpbnRlcm5hbCB2YXJpYWJsZXMgaW4gR05VIGxpYmMsIG90aGVyd2lzZSBwcm9ncmFtcwotKyAgIHVzaW5nIGxpYmludGwuYSBjYW5ub3QgYmUgbGlua2VkIHN0YXRpY2FsbHkuICAqLwotKyNpZiAhZGVmaW5lZCBfTElCQwotKyMgZGVmaW5lIF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluIGxpYmludGxfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbgotKyMgZGVmaW5lIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluIGxpYmludGxfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbgotKyMgZGVmaW5lIF9ubF9kZWZhdWx0X2Rpcm5hbWUgbGliaW50bF9ubF9kZWZhdWx0X2Rpcm5hbWUKLSsjIGRlZmluZSBfbmxfZG9tYWluX2JpbmRpbmdzIGxpYmludGxfbmxfZG9tYWluX2JpbmRpbmdzCi0rI2VuZGlmCi0rCi0rLyogU29tZSBjb21waWxlcnMsIGxpa2UgU3VuT1M0IGNjLCBkb24ndCBoYXZlIG9mZnNldG9mIGluIDxzdGRkZWYuaD4uICAqLwotKyNpZm5kZWYgb2Zmc2V0b2YKLSsjIGRlZmluZSBvZmZzZXRvZih0eXBlLGlkZW50KSAoKHNpemVfdCkmKCgodHlwZSopMCktPmlkZW50KSkKLSsjZW5kaWYKLSsKLSsvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0rCi0rI2lmZGVmIF9MSUJDCi0rLyogUmVuYW1lIHRoZSBub24gQU5TSSBDIGZ1bmN0aW9ucy4gIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkCi0rICAgYmVjYXVzZSBzb21lIEFOU0kgQyBmdW5jdGlvbnMgd2lsbCByZXF1aXJlIGxpbmtpbmcgd2l0aCB0aGlzIG9iamVjdAotKyAgIGZpbGUgYW5kIHRoZSBuYW1lIHNwYWNlIG11c3Qgbm90IGJlIHBvbGx1dGVkLiAgKi8KLSsjIGRlZmluZSBnZXRjd2QgX19nZXRjd2QKLSsjIGlmbmRlZiBzdHBjcHkKLSsjICBkZWZpbmUgc3RwY3B5IF9fc3RwY3B5Ci0rIyBlbmRpZgotKyMgZGVmaW5lIHRmaW5kIF9fdGZpbmQKLSsjZWxzZQotKyMgaWYgIWRlZmluZWQgSEFWRV9HRVRDV0QKLStjaGFyICpnZXR3ZCAoKTsKLSsjICBkZWZpbmUgZ2V0Y3dkKGJ1ZiwgbWF4KSBnZXR3ZCAoYnVmKQotKyMgZWxzZQotKyMgIGlmIFZNUwotKyMgICBkZWZpbmUgZ2V0Y3dkKGJ1ZiwgbWF4KSAoZ2V0Y3dkKSAoYnVmLCBtYXgsIDApCi0rIyAgZWxzZQotK2NoYXIgKmdldGN3ZCAoKTsKLSsjICBlbmRpZgotKyMgZW5kaWYKLSsjIGlmbmRlZiBIQVZFX1NUUENQWQotK3N0YXRpYyBjaGFyICpzdHBjcHkgKGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYyk7Ci0rIyBlbmRpZgotKyMgaWZuZGVmIEhBVkVfTUVNUENQWQotK3N0YXRpYyB2b2lkICptZW1wY3B5ICh2b2lkICpkZXN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBuKTsKLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rLyogQW1vdW50IHRvIGluY3JlYXNlIGJ1ZmZlciBzaXplIGJ5IGluIGVhY2ggdHJ5LiAgKi8KLSsjZGVmaW5lIFBBVEhfSU5DUiAzMgotKwotKy8qIFRoZSBmb2xsb3dpbmcgaXMgZnJvbSBwYXRobWF4LmguICAqLwotKy8qIE5vbi1QT1NJWCBCU0Qgc3lzdGVtcyBtaWdodCBoYXZlIGdjYydzIGxpbWl0cy5oLCB3aGljaCBkb2Vzbid0IGRlZmluZQotKyAgIFBBVEhfTUFYIGJ1dCBtaWdodCBjYXVzZSByZWRlZmluaXRpb24gd2FybmluZ3Mgd2hlbiBzeXMvcGFyYW0uaCBpcwotKyAgIGxhdGVyIGluY2x1ZGVkIChhcyBvbiBNT1JFL0JTRCA0LjMpLiAgKi8KLSsjaWYgZGVmaW5lZCBfUE9TSVhfVkVSU0lPTiB8fCAoZGVmaW5lZCBIQVZFX0xJTUlUU19IICYmICFkZWZpbmVkIF9fR05VQ19fKQotKyMgaW5jbHVkZSA8bGltaXRzLmg+Ci0rI2VuZGlmCi0rCi0rI2lmbmRlZiBfUE9TSVhfUEFUSF9NQVgKLSsjIGRlZmluZSBfUE9TSVhfUEFUSF9NQVggMjU1Ci0rI2VuZGlmCi0rCi0rI2lmICFkZWZpbmVkIFBBVEhfTUFYICYmIGRlZmluZWQgX1BDX1BBVEhfTUFYCi0rIyBkZWZpbmUgUEFUSF9NQVggKHBhdGhjb25mICgiLyIsIF9QQ19QQVRIX01BWCkgPCAxID8gMTAyNCA6IHBhdGhjb25mICgiLyIsIF9QQ19QQVRIX01BWCkpCi0rI2VuZGlmCi0rCi0rLyogRG9uJ3QgaW5jbHVkZSBzeXMvcGFyYW0uaCBpZiBpdCBhbHJlYWR5IGhhcyBiZWVuLiAgKi8KLSsjaWYgZGVmaW5lZCBIQVZFX1NZU19QQVJBTV9IICYmICFkZWZpbmVkIFBBVEhfTUFYICYmICFkZWZpbmVkIE1BWFBBVEhMRU4KLSsjIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgotKyNlbmRpZgotKwotKyNpZiAhZGVmaW5lZCBQQVRIX01BWCAmJiBkZWZpbmVkIE1BWFBBVEhMRU4KLSsjIGRlZmluZSBQQVRIX01BWCBNQVhQQVRITEVOCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBQQVRIX01BWAotKyMgZGVmaW5lIFBBVEhfTUFYIF9QT1NJWF9QQVRIX01BWAotKyNlbmRpZgotKwotKy8qIFBhdGhuYW1lIHN1cHBvcnQuCi0rICAgSVNTTEFTSChDKSAgICAgICAgICAgdGVzdHMgd2hldGhlciBDIGlzIGEgZGlyZWN0b3J5IHNlcGFyYXRvciBjaGFyYWN0ZXIuCi0rICAgSVNfQUJTT0xVVEVfUEFUSChQKSAgdGVzdHMgd2hldGhlciBQIGlzIGFuIGFic29sdXRlIHBhdGguICBJZiBpdCBpcyBub3QsCi0rICAgICAgICAgICAgICAgICAgICAgICAgaXQgbWF5IGJlIGNvbmNhdGVuYXRlZCB0byBhIGRpcmVjdG9yeSBwYXRobmFtZS4KLSsgICBJU19QQVRIX1dJVEhfRElSKFApICB0ZXN0cyB3aGV0aGVyIFAgY29udGFpbnMgYSBkaXJlY3Rvcnkgc3BlY2lmaWNhdGlvbi4KLSsgKi8KLSsjaWYgZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18gfHwgZGVmaW5lZCBfX0VNWF9fIHx8IGRlZmluZWQgX19ESkdQUF9fCi0rICAvKiBXaW4zMiwgT1MvMiwgRE9TICovCi0rIyBkZWZpbmUgSVNTTEFTSChDKSAoKEMpID09ICcvJyB8fCAoQykgPT0gJ1xcJykKLSsjIGRlZmluZSBIQVNfREVWSUNFKFApIFwKLSsgICAgKCgoKFApWzBdID49ICdBJyAmJiAoUClbMF0gPD0gJ1onKSB8fCAoKFApWzBdID49ICdhJyAmJiAoUClbMF0gPD0gJ3onKSkgXAotKyAgICAgJiYgKFApWzFdID09ICc6JykKLSsjIGRlZmluZSBJU19BQlNPTFVURV9QQVRIKFApIChJU1NMQVNIICgoUClbMF0pIHx8IEhBU19ERVZJQ0UgKFApKQotKyMgZGVmaW5lIElTX1BBVEhfV0lUSF9ESVIoUCkgXAotKyAgICAoc3RyY2hyIChQLCAnLycpICE9IE5VTEwgfHwgc3RyY2hyIChQLCAnXFwnKSAhPSBOVUxMIHx8IEhBU19ERVZJQ0UgKFApKQotKyNlbHNlCi0rICAvKiBVbml4ICovCi0rIyBkZWZpbmUgSVNTTEFTSChDKSAoKEMpID09ICcvJykKLSsjIGRlZmluZSBJU19BQlNPTFVURV9QQVRIKFApIElTU0xBU0ggKChQKVswXSkKLSsjIGRlZmluZSBJU19QQVRIX1dJVEhfRElSKFApIChzdHJjaHIgKFAsICcvJykgIT0gTlVMTCkKLSsjZW5kaWYKLSsKLSsvKiBUaGlzIGlzIHRoZSB0eXBlIHVzZWQgZm9yIHRoZSBzZWFyY2ggdHJlZSB3aGVyZSBrbm93biB0cmFuc2xhdGlvbnMKLSsgICBhcmUgc3RvcmVkLiAgKi8KLStzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdAotK3sKLSsgIC8qIERvbWFpbiBpbiB3aGljaCB0byBzZWFyY2guICAqLwotKyAgY2hhciAqZG9tYWlubmFtZTsKLSsKLSsgIC8qIFRoZSBjYXRlZ29yeS4gICovCi0rICBpbnQgY2F0ZWdvcnk7Ci0rCi0rICAvKiBTdGF0ZSBvZiB0aGUgY2F0YWxvZyBjb3VudGVyIGF0IHRoZSBwb2ludCB0aGUgc3RyaW5nIHdhcyBmb3VuZC4gICovCi0rICBpbnQgY291bnRlcjsKLSsKLSsgIC8qIENhdGFsb2cgd2hlcmUgdGhlIHN0cmluZyB3YXMgZm91bmQuICAqLwotKyAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluOwotKwotKyAgLyogQW5kIGZpbmFsbHkgdGhlIHRyYW5zbGF0aW9uLiAgKi8KLSsgIGNvbnN0IGNoYXIgKnRyYW5zbGF0aW9uOwotKyAgc2l6ZV90IHRyYW5zbGF0aW9uX2xlbmd0aDsKLSsKLSsgIC8qIFBvaW50ZXIgdG8gdGhlIHN0cmluZyBpbiBxdWVzdGlvbi4gICovCi0rICBjaGFyIG1zZ2lkW1pFUk9dOwotK307Ci0rCi0rLyogUm9vdCBvZiB0aGUgc2VhcmNoIHRyZWUgd2l0aCBrbm93biB0cmFuc2xhdGlvbnMuICBXZSBjYW4gdXNlIHRoaXMKLSsgICBvbmx5IGlmIHRoZSBzeXN0ZW0gcHJvdmlkZXMgdGhlIGB0c2VhcmNoJyBmdW5jdGlvbiBmYW1pbHkuICAqLwotKyNpZiBkZWZpbmVkIEhBVkVfVFNFQVJDSCB8fCBkZWZpbmVkIF9MSUJDCi0rIyBpbmNsdWRlIDxzZWFyY2guaD4KLSsKLStzdGF0aWMgdm9pZCAqcm9vdDsKLSsKLSsjIGlmZGVmIF9MSUJDCi0rIyAgZGVmaW5lIHRzZWFyY2ggX190c2VhcmNoCi0rIyBlbmRpZgotKwotKy8qIEZ1bmN0aW9uIHRvIGNvbXBhcmUgdHdvIGVudHJpZXMgaW4gdGhlIHRhYmxlIG9mIGtub3duIHRyYW5zbGF0aW9ucy4gICovCi0rc3RhdGljIGludAotK3RyYW5zY21wIChjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpCi0rewotKyAgY29uc3Qgc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QgKnMxOwotKyAgY29uc3Qgc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QgKnMyOwotKyAgaW50IHJlc3VsdDsKLSsKLSsgIHMxID0gKGNvbnN0IHN0cnVjdCBrbm93bl90cmFuc2xhdGlvbl90ICopIHAxOwotKyAgczIgPSAoY29uc3Qgc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QgKikgcDI7Ci0rCi0rICByZXN1bHQgPSBzdHJjbXAgKHMxLT5tc2dpZCwgczItPm1zZ2lkKTsKLSsgIGlmIChyZXN1bHQgPT0gMCkKLSsgICAgewotKyAgICAgIHJlc3VsdCA9IHN0cmNtcCAoczEtPmRvbWFpbm5hbWUsIHMyLT5kb21haW5uYW1lKTsKLSsgICAgICBpZiAocmVzdWx0ID09IDApCi0rCS8qIFdlIGNvbXBhcmUgdGhlIGNhdGVnb3J5IGxhc3QgKHRob3VnaCB0aGlzIGlzIHRoZSBjaGVhcGVzdAotKwkgICBvcGVyYXRpb24pIHNpbmNlIGl0IGlzIGhvcGVmdWxseSBhbHdheXMgdGhlIHNhbWUgKG5hbWVseQotKwkgICBMQ19NRVNTQUdFUykuICAqLwotKwlyZXN1bHQgPSBzMS0+Y2F0ZWdvcnkgLSBzMi0+Y2F0ZWdvcnk7Ci0rICAgIH0KLSsKLSsgIHJldHVybiByZXN1bHQ7Ci0rfQotKyNlbmRpZgotKwotKyNpZm5kZWYgSU5UVkFSREVGCi0rIyBkZWZpbmUgSU5UVkFSREVGKG5hbWUpCi0rI2VuZGlmCi0rI2lmbmRlZiBJTlRVU0UKLSsjIGRlZmluZSBJTlRVU0UobmFtZSkgbmFtZQotKyNlbmRpZgotKwotKy8qIE5hbWUgb2YgdGhlIGRlZmF1bHQgZG9tYWluIHVzZWQgZm9yIGdldHRleHQoMykgcHJpb3IgYW55IGNhbGwgdG8KLSsgICB0ZXh0ZG9tYWluKDMpLiAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgaXMgIm1lc3NhZ2VzIi4gICovCi0rY29uc3QgY2hhciBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbltdIGF0dHJpYnV0ZV9oaWRkZW4gPSAibWVzc2FnZXMiOwotKwotKy8qIFZhbHVlIHVzZWQgYXMgdGhlIGRlZmF1bHQgZG9tYWluIGZvciBnZXR0ZXh0KDMpLiAgKi8KLStjb25zdCBjaGFyICpfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbiBhdHRyaWJ1dGVfaGlkZGVuCi0rICAgICA9IF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluOwotKwotKy8qIENvbnRhaW5zIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBtZXNzYWdlIGNhdGFsb2dzLiAgKi8KLSsjaWYgZGVmaW5lZCBfX0VNWF9fCi0rZXh0ZXJuIGNvbnN0IGNoYXIgX25sX2RlZmF1bHRfZGlybmFtZVtdOwotKyNlbHNlCi0rY29uc3QgY2hhciBfbmxfZGVmYXVsdF9kaXJuYW1lW10gPSBMT0NBTEVESVI7Ci0rSU5UVkFSREVGIChfbmxfZGVmYXVsdF9kaXJuYW1lKQotKyNlbmRpZgotKwotKy8qIExpc3Qgd2l0aCBiaW5kaW5ncyBvZiBzcGVjaWZpYyBkb21haW5zIGNyZWF0ZWQgYnkgYmluZHRleHRkb21haW4oKQotKyAgIGNhbGxzLiAgKi8KLStzdHJ1Y3QgYmluZGluZyAqX25sX2RvbWFpbl9iaW5kaW5nczsKLSsKLSsvKiBQcm90b3R5cGVzIGZvciBsb2NhbCBmdW5jdGlvbnMuICAqLwotK3N0YXRpYyBjaGFyICpwbHVyYWxfbG9va3VwIChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW4sCi0rCQkJICAgIHVuc2lnbmVkIGxvbmcgaW50IG4sCi0rCQkJICAgIGNvbnN0IGNoYXIgKnRyYW5zbGF0aW9uLCBzaXplX3QgdHJhbnNsYXRpb25fbGVuKQotKyAgICAgaW50ZXJuYWxfZnVuY3Rpb247Ci0rc3RhdGljIGNvbnN0IGNoYXIgKmd1ZXNzX2NhdGVnb3J5X3ZhbHVlIChpbnQgY2F0ZWdvcnksCi0rCQkJCQkgY29uc3QgY2hhciAqY2F0ZWdvcnluYW1lKQotKyAgICAgaW50ZXJuYWxfZnVuY3Rpb247Ci0rI2lmZGVmIF9MSUJDCi0rIyBpbmNsdWRlICIuLi9sb2NhbGUvbG9jYWxlaW5mby5oIgotKyMgZGVmaW5lIGNhdGVnb3J5X3RvX25hbWUoY2F0ZWdvcnkpCV9ubF9jYXRlZ29yeV9uYW1lc1tjYXRlZ29yeV0KLSsjZWxzZQotK3N0YXRpYyBjb25zdCBjaGFyICpjYXRlZ29yeV90b19uYW1lIChpbnQgY2F0ZWdvcnkpIGludGVybmFsX2Z1bmN0aW9uOwotKyNlbmRpZgotKwotKwotKy8qIEZvciB0aG9zZSBsb29zaW5nIHN5c3RlbXMgd2hpY2ggZG9uJ3QgaGF2ZSBgYWxsb2NhJyB3ZSBoYXZlIHRvIGFkZAotKyAgIHNvbWUgYWRkaXRpb25hbCBjb2RlIGVtdWxhdGluZyBpdC4gICovCi0rI2lmZGVmIEhBVkVfQUxMT0NBCi0rLyogTm90aGluZyBoYXMgdG8gYmUgZG9uZS4gICovCi0rIyBkZWZpbmUgZnJlZWEocCkgLyogbm90aGluZyAqLwotKyMgZGVmaW5lIEFERF9CTE9DSyhsaXN0LCBhZGRyZXNzKSAvKiBub3RoaW5nICovCi0rIyBkZWZpbmUgRlJFRV9CTE9DS1MobGlzdCkgLyogbm90aGluZyAqLwotKyNlbHNlCi0rc3RydWN0IGJsb2NrX2xpc3QKLSt7Ci0rICB2b2lkICphZGRyZXNzOwotKyAgc3RydWN0IGJsb2NrX2xpc3QgKm5leHQ7Ci0rfTsKLSsjIGRlZmluZSBBRERfQkxPQ0sobGlzdCwgYWRkcikJCQkJCQkgICAgICBcCi0rICBkbyB7CQkJCQkJCQkJICAgICAgXAotKyAgICBzdHJ1Y3QgYmxvY2tfbGlzdCAqbmV3cCA9IChzdHJ1Y3QgYmxvY2tfbGlzdCAqKSBtYWxsb2MgKHNpemVvZiAoKm5ld3ApKTsgIFwKLSsgICAgLyogSWYgd2UgY2Fubm90IGdldCBhIGZyZWUgYmxvY2sgd2UgY2Fubm90IGFkZCB0aGUgbmV3IGVsZW1lbnQgdG8JICAgICAgXAotKyAgICAgICB0aGUgbGlzdC4gICovCQkJCQkJCSAgICAgIFwKLSsgICAgaWYgKG5ld3AgIT0gTlVMTCkgewkJCQkJCQkgICAgICBcCi0rICAgICAgbmV3cC0+YWRkcmVzcyA9IChhZGRyKTsJCQkJCQkgICAgICBcCi0rICAgICAgbmV3cC0+bmV4dCA9IChsaXN0KTsJCQkJCQkgICAgICBcCi0rICAgICAgKGxpc3QpID0gbmV3cDsJCQkJCQkJICAgICAgXAotKyAgICB9CQkJCQkJCQkJICAgICAgXAotKyAgfSB3aGlsZSAoMCkKLSsjIGRlZmluZSBGUkVFX0JMT0NLUyhsaXN0KQkJCQkJCSAgICAgIFwKLSsgIGRvIHsJCQkJCQkJCQkgICAgICBcCi0rICAgIHdoaWxlIChsaXN0ICE9IE5VTEwpIHsJCQkJCQkgICAgICBcCi0rICAgICAgc3RydWN0IGJsb2NrX2xpc3QgKm9sZCA9IGxpc3Q7CQkJCQkgICAgICBcCi0rICAgICAgbGlzdCA9IGxpc3QtPm5leHQ7CQkJCQkJICAgICAgXAotKyAgICAgIGZyZWUgKG9sZC0+YWRkcmVzcyk7CQkJCQkJICAgICAgXAotKyAgICAgIGZyZWUgKG9sZCk7CQkJCQkJCSAgICAgIFwKLSsgICAgfQkJCQkJCQkJCSAgICAgIFwKLSsgIH0gd2hpbGUgKDApCi0rIyB1bmRlZiBhbGxvY2EKLSsjIGRlZmluZSBhbGxvY2Eoc2l6ZSkgKG1hbGxvYyAoc2l6ZSkpCi0rIyBkZWZpbmUgZnJlZWEocCkgZnJlZSAocCkKLSsjZW5kaWYJLyogaGF2ZSBhbGxvY2EgKi8KLSsKLSsKLSsjaWZkZWYgX0xJQkMKLSsvKiBMaXN0IG9mIGJsb2NrcyBhbGxvY2F0ZWQgZm9yIHRyYW5zbGF0aW9ucy4gICovCi0rdHlwZWRlZiBzdHJ1Y3QgdHJhbnNtZW1fbGlzdAotK3sKLSsgIHN0cnVjdCB0cmFuc21lbV9saXN0ICpuZXh0OwotKyAgY2hhciBkYXRhW1pFUk9dOwotK30gdHJhbnNtZW1fYmxvY2tfdDsKLStzdGF0aWMgc3RydWN0IHRyYW5zbWVtX2xpc3QgKnRyYW5zbWVtX2xpc3Q7Ci0rI2Vsc2UKLSt0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdHJhbnNtZW1fYmxvY2tfdDsKLSsjZW5kaWYKLSsKLSsKLSsvKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGV5IG11c3Qgbm90IGNsYXNoCi0rICAgd2l0aCBleGlzdGluZyBuYW1lcyBhbmQgdGhleSBzaG91bGQgZm9sbG93IEFOU0kgQy4gIEJ1dCB0aGlzIHNvdXJjZQotKyAgIGNvZGUgaXMgYWxzbyB1c2VkIGluIEdOVSBDIExpYnJhcnkgd2hlcmUgdGhlIG5hbWVzIGhhdmUgYSBfXwotKyAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCi0rI2lmZGVmIF9MSUJDCi0rIyBkZWZpbmUgRENJR0VUVEVYVCBfX2RjaWdldHRleHQKLSsjZWxzZQotKyMgZGVmaW5lIERDSUdFVFRFWFQgbGliaW50bF9kY2lnZXR0ZXh0Ci0rI2VuZGlmCi0rCi0rLyogTG9jayB2YXJpYWJsZSB0byBwcm90ZWN0IHRoZSBnbG9iYWwgZGF0YSBpbiB0aGUgZ2V0dGV4dCBpbXBsZW1lbnRhdGlvbi4gICovCi0rI2lmZGVmIF9MSUJDCi0rX19saWJjX3J3bG9ja19kZWZpbmVfaW5pdGlhbGl6ZWQgKCwgX25sX3N0YXRlX2xvY2sgYXR0cmlidXRlX2hpZGRlbikKLSsjZW5kaWYKLSsKLSsvKiBDaGVja2luZyB3aGV0aGVyIHRoZSBiaW5hcmllcyBydW5zIFNVSUQgbXVzdCBiZSBkb25lIGFuZCBnbGliYyBwcm92aWRlcwotKyAgIGVhc2llciBtZXRob2RzIHRoZXJlZm9yZSB3ZSBtYWtlIGEgZGlmZmVyZW5jZSBoZXJlLiAgKi8KLSsjaWZkZWYgX0xJQkMKLSsjIGRlZmluZSBFTkFCTEVfU0VDVVJFIF9fbGliY19lbmFibGVfc2VjdXJlCi0rIyBkZWZpbmUgREVURVJNSU5FX1NFQ1VSRQotKyNlbHNlCi0rIyBpZm5kZWYgSEFWRV9HRVRVSUQKLSsjICBkZWZpbmUgZ2V0dWlkKCkgMAotKyMgZW5kaWYKLSsjIGlmbmRlZiBIQVZFX0dFVEdJRAotKyMgIGRlZmluZSBnZXRnaWQoKSAwCi0rIyBlbmRpZgotKyMgaWZuZGVmIEhBVkVfR0VURVVJRAotKyMgIGRlZmluZSBnZXRldWlkKCkgZ2V0dWlkKCkKLSsjIGVuZGlmCi0rIyBpZm5kZWYgSEFWRV9HRVRFR0lECi0rIyAgZGVmaW5lIGdldGVnaWQoKSBnZXRnaWQoKQotKyMgZW5kaWYKLStzdGF0aWMgaW50IGVuYWJsZV9zZWN1cmU7Ci0rIyBkZWZpbmUgRU5BQkxFX1NFQ1VSRSAoZW5hYmxlX3NlY3VyZSA9PSAxKQotKyMgZGVmaW5lIERFVEVSTUlORV9TRUNVUkUgXAotKyAgaWYgKGVuYWJsZV9zZWN1cmUgPT0gMCkJCQkJCQkgICAgICBcCi0rICAgIHsJCQkJCQkJCQkgICAgICBcCi0rICAgICAgaWYgKGdldHVpZCAoKSAhPSBnZXRldWlkICgpIHx8IGdldGdpZCAoKSAhPSBnZXRlZ2lkICgpKQkJICAgICAgXAotKwllbmFibGVfc2VjdXJlID0gMTsJCQkJCQkgICAgICBcCi0rICAgICAgZWxzZQkJCQkJCQkJICAgICAgXAotKwllbmFibGVfc2VjdXJlID0gLTE7CQkJCQkJICAgICAgXAotKyAgICB9Ci0rI2VuZGlmCi0rCi0rLyogR2V0IHRoZSBmdW5jdGlvbiB0byBldmFsdWF0ZSB0aGUgcGx1cmFsIGV4cHJlc3Npb24uICAqLwotKyNpbmNsdWRlICJldmFsLXBsdXJhbC5oIgotKwotKy8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudAotKyAgIENBVEVHT1JZIGxvY2FsZSBhbmQsIGlmIFBMVVJBTCBpcyBub256ZXJvLCBzZWFyY2ggb3ZlciBzdHJpbmcKLSsgICBkZXBlbmRpbmcgb24gdGhlIHBsdXJhbCBmb3JtIGRldGVybWluZWQgYnkgTi4gICovCi0rY2hhciAqCi0rRENJR0VUVEVYVCAoY29uc3QgY2hhciAqZG9tYWlubmFtZSwgY29uc3QgY2hhciAqbXNnaWQxLCBjb25zdCBjaGFyICptc2dpZDIsCi0rCSAgICBpbnQgcGx1cmFsLCB1bnNpZ25lZCBsb25nIGludCBuLCBpbnQgY2F0ZWdvcnkpCi0rewotKyNpZm5kZWYgSEFWRV9BTExPQ0EKLSsgIHN0cnVjdCBibG9ja19saXN0ICpibG9ja19saXN0ID0gTlVMTDsKLSsjZW5kaWYKLSsgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbjsKLSsgIHN0cnVjdCBiaW5kaW5nICpiaW5kaW5nOwotKyAgY29uc3QgY2hhciAqY2F0ZWdvcnluYW1lOwotKyAgY29uc3QgY2hhciAqY2F0ZWdvcnl2YWx1ZTsKLSsgIGNoYXIgKmRpcm5hbWUsICp4ZG9tYWlubmFtZTsKLSsgIGNoYXIgKnNpbmdsZV9sb2NhbGU7Ci0rICBjaGFyICpyZXR2YWw7Ci0rICBzaXplX3QgcmV0bGVuOwotKyAgaW50IHNhdmVkX2Vycm5vOwotKyNpZiBkZWZpbmVkIEhBVkVfVFNFQVJDSCB8fCBkZWZpbmVkIF9MSUJDCi0rICBzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCAqc2VhcmNoOwotKyAgc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QgKipmb3VuZHAgPSBOVUxMOwotKyAgc2l6ZV90IG1zZ2lkX2xlbjsKLSsjZW5kaWYKLSsgIHNpemVfdCBkb21haW5uYW1lX2xlbjsKLSsKLSsgIC8qIElmIG5vIHJlYWwgTVNHSUQgaXMgZ2l2ZW4gcmV0dXJuIE5VTEwuICAqLwotKyAgaWYgKG1zZ2lkMSA9PSBOVUxMKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsjaWZkZWYgX0xJQkMKLSsgIGlmIChjYXRlZ29yeSA8IDAgfHwgY2F0ZWdvcnkgPj0gX19MQ19MQVNUIHx8IGNhdGVnb3J5ID09IExDX0FMTCkKLSsgICAgLyogQm9ndXMuICAqLwotKyAgICByZXR1cm4gKHBsdXJhbCA9PSAwCi0rCSAgICA/IChjaGFyICopIG1zZ2lkMQotKwkgICAgLyogVXNlIHRoZSBHZXJtYW5pYyBwbHVyYWwgcnVsZS4gICovCi0rCSAgICA6IG4gPT0gMSA/IChjaGFyICopIG1zZ2lkMSA6IChjaGFyICopIG1zZ2lkMik7Ci0rI2VuZGlmCi0rCi0rICBfX2xpYmNfcndsb2NrX3JkbG9jayAoX25sX3N0YXRlX2xvY2spOwotKwotKyAgLyogSWYgRE9NQUlOTkFNRSBpcyBOVUxMLCB3ZSBhcmUgaW50ZXJlc3RlZCBpbiB0aGUgZGVmYXVsdCBkb21haW4uICBJZgotKyAgICAgQ0FURUdPUlkgaXMgbm90IExDX01FU1NBR0VTIHRoaXMgbWlnaHQgbm90IG1ha2UgbXVjaCBzZW5zZSBidXQgdGhlCi0rICAgICBkZWZpbml0aW9uIGxlZnQgdGhpcyB1bmRlZmluZWQuICAqLwotKyAgaWYgKGRvbWFpbm5hbWUgPT0gTlVMTCkKLSsgICAgZG9tYWlubmFtZSA9IF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluOwotKwotKyAgLyogT1MvMiBzcGVjaWZpYzogYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIGxpYmludGwgdmVyc2lvbnMgICovCi0rI2lmZGVmIExDX01FU1NBR0VTX0NPTVBBVAotKyAgaWYgKGNhdGVnb3J5ID09IExDX01FU1NBR0VTX0NPTVBBVCkKLSsgICAgY2F0ZWdvcnkgPSBMQ19NRVNTQUdFUzsKLSsjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZCBIQVZFX1RTRUFSQ0ggfHwgZGVmaW5lZCBfTElCQwotKyAgbXNnaWRfbGVuID0gc3RybGVuIChtc2dpZDEpICsgMTsKLSsKLSsgIC8qIFRyeSB0byBmaW5kIHRoZSB0cmFuc2xhdGlvbiBhbW9uZyB0aG9zZSB3aGljaCB3ZSBmb3VuZCBhdAotKyAgICAgc29tZSB0aW1lLiAgKi8KLSsgIHNlYXJjaCA9IChzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCAqKQotKwkgICBhbGxvY2EgKG9mZnNldG9mIChzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCwgbXNnaWQpICsgbXNnaWRfbGVuKTsKLSsgIG1lbWNweSAoc2VhcmNoLT5tc2dpZCwgbXNnaWQxLCBtc2dpZF9sZW4pOwotKyAgc2VhcmNoLT5kb21haW5uYW1lID0gKGNoYXIgKikgZG9tYWlubmFtZTsKLSsgIHNlYXJjaC0+Y2F0ZWdvcnkgPSBjYXRlZ29yeTsKLSsKLSsgIGZvdW5kcCA9IChzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCAqKikgdGZpbmQgKHNlYXJjaCwgJnJvb3QsIHRyYW5zY21wKTsKLSsgIGZyZWVhIChzZWFyY2gpOwotKyAgaWYgKGZvdW5kcCAhPSBOVUxMICYmICgqZm91bmRwKS0+Y291bnRlciA9PSBfbmxfbXNnX2NhdF9jbnRyKQotKyAgICB7Ci0rICAgICAgLyogTm93IGRlYWwgd2l0aCBwbHVyYWwuICAqLwotKyAgICAgIGlmIChwbHVyYWwpCi0rCXJldHZhbCA9IHBsdXJhbF9sb29rdXAgKCgqZm91bmRwKS0+ZG9tYWluLCBuLCAoKmZvdW5kcCktPnRyYW5zbGF0aW9uLAotKwkJCQkoKmZvdW5kcCktPnRyYW5zbGF0aW9uX2xlbmd0aCk7Ci0rICAgICAgZWxzZQotKwlyZXR2YWwgPSAoY2hhciAqKSAoKmZvdW5kcCktPnRyYW5zbGF0aW9uOwotKwotKyAgICAgIF9fbGliY19yd2xvY2tfdW5sb2NrIChfbmxfc3RhdGVfbG9jayk7Ci0rICAgICAgcmV0dXJuIHJldHZhbDsKLSsgICAgfQotKyNlbmRpZgotKwotKyAgLyogUHJlc2VydmUgdGhlIGBlcnJubycgdmFsdWUuICAqLwotKyAgc2F2ZWRfZXJybm8gPSBlcnJubzsKLSsKLSsgIC8qIFNlZSB3aGV0aGVyIHRoaXMgaXMgYSBTVUlEIGJpbmFyeSBvciBub3QuICAqLwotKyAgREVURVJNSU5FX1NFQ1VSRTsKLSsKLSsgIC8qIEZpcnN0IGZpbmQgbWF0Y2hpbmcgYmluZGluZy4gICovCi0rICBmb3IgKGJpbmRpbmcgPSBfbmxfZG9tYWluX2JpbmRpbmdzOyBiaW5kaW5nICE9IE5VTEw7IGJpbmRpbmcgPSBiaW5kaW5nLT5uZXh0KQotKyAgICB7Ci0rICAgICAgaW50IGNvbXBhcmUgPSBzdHJjbXAgKGRvbWFpbm5hbWUsIGJpbmRpbmctPmRvbWFpbm5hbWUpOwotKyAgICAgIGlmIChjb21wYXJlID09IDApCi0rCS8qIFdlIGZvdW5kIGl0ISAgKi8KLSsJYnJlYWs7Ci0rICAgICAgaWYgKGNvbXBhcmUgPCAwKQotKwl7Ci0rCSAgLyogSXQgaXMgbm90IGluIHRoZSBsaXN0LiAgKi8KLSsJICBiaW5kaW5nID0gTlVMTDsKLSsJICBicmVhazsKLSsJfQotKyAgICB9Ci0rCi0rICBpZiAoYmluZGluZyA9PSBOVUxMKQotKyAgICBkaXJuYW1lID0gKGNoYXIgKikgSU5UVVNFKF9ubF9kZWZhdWx0X2Rpcm5hbWUpOwotKyAgZWxzZSBpZiAoSVNfQUJTT0xVVEVfUEFUSCAoYmluZGluZy0+ZGlybmFtZSkpCi0rICAgIGRpcm5hbWUgPSBiaW5kaW5nLT5kaXJuYW1lOwotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgLyogV2UgaGF2ZSBhIHJlbGF0aXZlIHBhdGguICBNYWtlIGl0IGFic29sdXRlIG5vdy4gICovCi0rICAgICAgc2l6ZV90IGRpcm5hbWVfbGVuID0gc3RybGVuIChiaW5kaW5nLT5kaXJuYW1lKSArIDE7Ci0rICAgICAgc2l6ZV90IHBhdGhfbWF4OwotKyAgICAgIGNoYXIgKnJldDsKLSsKLSsgICAgICBwYXRoX21heCA9ICh1bnNpZ25lZCBpbnQpIFBBVEhfTUFYOwotKyAgICAgIHBhdGhfbWF4ICs9IDI7CQkvKiBUaGUgZ2V0Y3dkIGRvY3Mgc2F5IHRvIGRvIHRoaXMuICAqLwotKwotKyAgICAgIGZvciAoOzspCi0rCXsKLSsJICBkaXJuYW1lID0gKGNoYXIgKikgYWxsb2NhIChwYXRoX21heCArIGRpcm5hbWVfbGVuKTsKLSsJICBBRERfQkxPQ0sgKGJsb2NrX2xpc3QsIGRpcm5hbWUpOwotKwotKwkgIF9fc2V0X2Vycm5vICgwKTsKLSsJICByZXQgPSBnZXRjd2QgKGRpcm5hbWUsIHBhdGhfbWF4KTsKLSsJICBpZiAocmV0ICE9IE5VTEwgfHwgZXJybm8gIT0gRVJBTkdFKQotKwkgICAgYnJlYWs7Ci0rCi0rCSAgcGF0aF9tYXggKz0gcGF0aF9tYXggLyAyOwotKwkgIHBhdGhfbWF4ICs9IFBBVEhfSU5DUjsKLSsJfQotKwotKyAgICAgIGlmIChyZXQgPT0gTlVMTCkKLSsJLyogV2UgY2Fubm90IGdldCB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4gIERvbid0IHNpZ25hbCBhbgotKwkgICBlcnJvciBidXQgc2ltcGx5IHJldHVybiB0aGUgZGVmYXVsdCBzdHJpbmcuICAqLwotKwlnb3RvIHJldHVybl91bnRyYW5zbGF0ZWQ7Ci0rCi0rICAgICAgc3RwY3B5IChzdHBjcHkgKHN0cmNociAoZGlybmFtZSwgJ1wwJyksICIvIiksIGJpbmRpbmctPmRpcm5hbWUpOwotKyAgICB9Ci0rCi0rICAvKiBOb3cgZGV0ZXJtaW5lIHRoZSBzeW1ib2xpYyBuYW1lIG9mIENBVEVHT1JZIGFuZCBpdHMgdmFsdWUuICAqLwotKyAgY2F0ZWdvcnluYW1lID0gY2F0ZWdvcnlfdG9fbmFtZSAoY2F0ZWdvcnkpOwotKyAgY2F0ZWdvcnl2YWx1ZSA9IGd1ZXNzX2NhdGVnb3J5X3ZhbHVlIChjYXRlZ29yeSwgY2F0ZWdvcnluYW1lKTsKLSsKLSsgIGRvbWFpbm5hbWVfbGVuID0gc3RybGVuIChkb21haW5uYW1lKTsKLSsgIHhkb21haW5uYW1lID0gKGNoYXIgKikgYWxsb2NhIChzdHJsZW4gKGNhdGVnb3J5bmFtZSkKLSsJCQkJICsgZG9tYWlubmFtZV9sZW4gKyA1KTsKLSsgIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgeGRvbWFpbm5hbWUpOwotKwotKyAgc3RwY3B5IChtZW1wY3B5IChzdHBjcHkgKHN0cGNweSAoeGRvbWFpbm5hbWUsIGNhdGVnb3J5bmFtZSksICIvIiksCi0rCQkgIGRvbWFpbm5hbWUsIGRvbWFpbm5hbWVfbGVuKSwKLSsJICAiLm1vIik7Ci0rCi0rICAvKiBDcmVhdGluZyB3b3JraW5nIGFyZWEuICAqLwotKyAgc2luZ2xlX2xvY2FsZSA9IChjaGFyICopIGFsbG9jYSAoc3RybGVuIChjYXRlZ29yeXZhbHVlKSArIDEpOwotKyAgQUREX0JMT0NLIChibG9ja19saXN0LCBzaW5nbGVfbG9jYWxlKTsKLSsKLSsKLSsgIC8qIFNlYXJjaCBmb3IgdGhlIGdpdmVuIHN0cmluZy4gIFRoaXMgaXMgYSBsb29wIGJlY2F1c2Ugd2UgcGVyaGFwcwotKyAgICAgZ290IGFuIG9yZGVyZWQgbGlzdCBvZiBsYW5ndWFnZXMgdG8gY29uc2lkZXIgZm9yIHRoZSB0cmFuc2xhdGlvbi4gICovCi0rICB3aGlsZSAoMSkKLSsgICAgewotKyAgICAgIC8qIE1ha2UgQ0FURUdPUllWQUxVRSBwb2ludCB0byB0aGUgbmV4dCBlbGVtZW50IG9mIHRoZSBsaXN0LiAgKi8KLSsgICAgICB3aGlsZSAoY2F0ZWdvcnl2YWx1ZVswXSAhPSAnXDAnICYmIGNhdGVnb3J5dmFsdWVbMF0gPT0gJzonKQotKwkrK2NhdGVnb3J5dmFsdWU7Ci0rICAgICAgaWYgKGNhdGVnb3J5dmFsdWVbMF0gPT0gJ1wwJykKLSsJewotKwkgIC8qIFRoZSB3aG9sZSBjb250ZW50cyBvZiBDQVRFR09SWVZBTFVFIGhhcyBiZWVuIHNlYXJjaGVkIGJ1dAotKwkgICAgIG5vIHZhbGlkIGVudHJ5IGhhcyBiZWVuIGZvdW5kLiAgV2Ugc29sdmUgdGhpcyBzaXR1YXRpb24KLSsJICAgICBieSBpbXBsaWNpdGx5IGFwcGVuZGluZyBhICJDIiBlbnRyeSwgaS5lLiBubyB0cmFuc2xhdGlvbgotKwkgICAgIHdpbGwgdGFrZSBwbGFjZS4gICovCi0rCSAgc2luZ2xlX2xvY2FsZVswXSA9ICdDJzsKLSsJICBzaW5nbGVfbG9jYWxlWzFdID0gJ1wwJzsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIGNoYXIgKmNwID0gc2luZ2xlX2xvY2FsZTsKLSsJICB3aGlsZSAoY2F0ZWdvcnl2YWx1ZVswXSAhPSAnXDAnICYmIGNhdGVnb3J5dmFsdWVbMF0gIT0gJzonKQotKwkgICAgKmNwKysgPSAqY2F0ZWdvcnl2YWx1ZSsrOwotKwkgICpjcCA9ICdcMCc7Ci0rCi0rCSAgLyogV2hlbiB0aGlzIGlzIGEgU1VJRCBiaW5hcnkgd2UgbXVzdCBub3QgYWxsb3cgYWNjZXNzaW5nIGZpbGVzCi0rCSAgICAgb3V0c2lkZSB0aGUgZGVkaWNhdGVkIGRpcmVjdG9yaWVzLiAgKi8KLSsJICBpZiAoRU5BQkxFX1NFQ1VSRSAmJiBJU19QQVRIX1dJVEhfRElSIChzaW5nbGVfbG9jYWxlKSkKLSsJICAgIC8qIEluZ29yZSB0aGlzIGVudHJ5LiAgKi8KLSsJICAgIGNvbnRpbnVlOwotKwl9Ci0rCi0rICAgICAgLyogSWYgdGhlIGN1cnJlbnQgbG9jYWxlIHZhbHVlIGlzIEMgKG9yIFBPU0lYKSB3ZSBkb24ndCBsb2FkIGEKLSsJIGRvbWFpbi4gIFJldHVybiB0aGUgTVNHSUQuICAqLwotKyAgICAgIGlmIChzdHJjbXAgKHNpbmdsZV9sb2NhbGUsICJDIikgPT0gMAotKwkgIHx8IHN0cmNtcCAoc2luZ2xlX2xvY2FsZSwgIlBPU0lYIikgPT0gMCkKLSsJYnJlYWs7Ci0rCi0rICAgICAgLyogRmluZCBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgbWVzc2FnZSBjYXRhbG9nIG1hdGNoaW5nIHRoZQotKwkgRE9NQUlOTkFNRSBhbmQgQ0FURUdPUlkuICAqLwotKyAgICAgIGRvbWFpbiA9IF9ubF9maW5kX2RvbWFpbiAoZGlybmFtZSwgc2luZ2xlX2xvY2FsZSwgeGRvbWFpbm5hbWUsIGJpbmRpbmcpOwotKwotKyAgICAgIGlmIChkb21haW4gIT0gTlVMTCkKLSsJewotKwkgIHJldHZhbCA9IF9ubF9maW5kX21zZyAoZG9tYWluLCBiaW5kaW5nLCBtc2dpZDEsICZyZXRsZW4pOwotKwotKwkgIGlmIChyZXR2YWwgPT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAgaW50IGNudDsKLSsKLSsJICAgICAgZm9yIChjbnQgPSAwOyBkb21haW4tPnN1Y2Nlc3NvcltjbnRdICE9IE5VTEw7ICsrY250KQotKwkJewotKwkJICByZXR2YWwgPSBfbmxfZmluZF9tc2cgKGRvbWFpbi0+c3VjY2Vzc29yW2NudF0sIGJpbmRpbmcsCi0rCQkJCQkgbXNnaWQxLCAmcmV0bGVuKTsKLSsKLSsJCSAgaWYgKHJldHZhbCAhPSBOVUxMKQotKwkJICAgIHsKLSsJCSAgICAgIGRvbWFpbiA9IGRvbWFpbi0+c3VjY2Vzc29yW2NudF07Ci0rCQkgICAgICBicmVhazsKLSsJCSAgICB9Ci0rCQl9Ci0rCSAgICB9Ci0rCi0rCSAgaWYgKHJldHZhbCAhPSBOVUxMKQotKwkgICAgewotKwkgICAgICAvKiBGb3VuZCB0aGUgdHJhbnNsYXRpb24gb2YgTVNHSUQxIGluIGRvbWFpbiBET01BSU46Ci0rCQkgc3RhcnRpbmcgYXQgUkVUVkFMLCBSRVRMRU4gYnl0ZXMuICAqLwotKwkgICAgICBGUkVFX0JMT0NLUyAoYmxvY2tfbGlzdCk7Ci0rI2lmIGRlZmluZWQgSEFWRV9UU0VBUkNIIHx8IGRlZmluZWQgX0xJQkMKLSsJICAgICAgaWYgKGZvdW5kcCA9PSBOVUxMKQotKwkJewotKwkJICAvKiBDcmVhdGUgYSBuZXcgZW50cnkgYW5kIGFkZCBpdCB0byB0aGUgc2VhcmNoIHRyZWUuICAqLwotKwkJICBzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCAqbmV3cDsKLSsKLSsJCSAgbmV3cCA9IChzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCAqKQotKwkJICAgIG1hbGxvYyAob2Zmc2V0b2YgKHN0cnVjdCBrbm93bl90cmFuc2xhdGlvbl90LCBtc2dpZCkKLSsJCQkgICAgKyBtc2dpZF9sZW4gKyBkb21haW5uYW1lX2xlbiArIDEpOwotKwkJICBpZiAobmV3cCAhPSBOVUxMKQotKwkJICAgIHsKLSsJCSAgICAgIG5ld3AtPmRvbWFpbm5hbWUgPQotKwkJCW1lbXBjcHkgKG5ld3AtPm1zZ2lkLCBtc2dpZDEsIG1zZ2lkX2xlbik7Ci0rCQkgICAgICBtZW1jcHkgKG5ld3AtPmRvbWFpbm5hbWUsIGRvbWFpbm5hbWUsIGRvbWFpbm5hbWVfbGVuICsgMSk7Ci0rCQkgICAgICBuZXdwLT5jYXRlZ29yeSA9IGNhdGVnb3J5OwotKwkJICAgICAgbmV3cC0+Y291bnRlciA9IF9ubF9tc2dfY2F0X2NudHI7Ci0rCQkgICAgICBuZXdwLT5kb21haW4gPSBkb21haW47Ci0rCQkgICAgICBuZXdwLT50cmFuc2xhdGlvbiA9IHJldHZhbDsKLSsJCSAgICAgIG5ld3AtPnRyYW5zbGF0aW9uX2xlbmd0aCA9IHJldGxlbjsKLSsKLSsJCSAgICAgIC8qIEluc2VydCB0aGUgZW50cnkgaW4gdGhlIHNlYXJjaCB0cmVlLiAgKi8KLSsJCSAgICAgIGZvdW5kcCA9IChzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCAqKikKLSsJCQl0c2VhcmNoIChuZXdwLCAmcm9vdCwgdHJhbnNjbXApOwotKwkJICAgICAgaWYgKGZvdW5kcCA9PSBOVUxMCi0rCQkJICB8fCBfX2J1aWx0aW5fZXhwZWN0ICgqZm91bmRwICE9IG5ld3AsIDApKQotKwkJCS8qIFRoZSBpbnNlcnQgZmFpbGVkLiAgKi8KLSsJCQlmcmVlIChuZXdwKTsKLSsJCSAgICB9Ci0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCXsKLSsJCSAgLyogV2UgY2FuIHVwZGF0ZSB0aGUgZXhpc3RpbmcgZW50cnkuICAqLwotKwkJICAoKmZvdW5kcCktPmNvdW50ZXIgPSBfbmxfbXNnX2NhdF9jbnRyOwotKwkJICAoKmZvdW5kcCktPmRvbWFpbiA9IGRvbWFpbjsKLSsJCSAgKCpmb3VuZHApLT50cmFuc2xhdGlvbiA9IHJldHZhbDsKLSsJCSAgKCpmb3VuZHApLT50cmFuc2xhdGlvbl9sZW5ndGggPSByZXRsZW47Ci0rCQl9Ci0rI2VuZGlmCi0rCSAgICAgIF9fc2V0X2Vycm5vIChzYXZlZF9lcnJubyk7Ci0rCi0rCSAgICAgIC8qIE5vdyBkZWFsIHdpdGggcGx1cmFsLiAgKi8KLSsJICAgICAgaWYgKHBsdXJhbCkKLSsJCXJldHZhbCA9IHBsdXJhbF9sb29rdXAgKGRvbWFpbiwgbiwgcmV0dmFsLCByZXRsZW4pOwotKwotKwkgICAgICBfX2xpYmNfcndsb2NrX3VubG9jayAoX25sX3N0YXRlX2xvY2spOwotKwkgICAgICByZXR1cm4gcmV0dmFsOwotKwkgICAgfQotKwl9Ci0rICAgIH0KLSsKLSsgcmV0dXJuX3VudHJhbnNsYXRlZDoKLSsgIC8qIFJldHVybiB0aGUgdW50cmFuc2xhdGVkIE1TR0lELiAgKi8KLSsgIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKLSsgIF9fbGliY19yd2xvY2tfdW5sb2NrIChfbmxfc3RhdGVfbG9jayk7Ci0rI2lmbmRlZiBfTElCQwotKyAgaWYgKCFFTkFCTEVfU0VDVVJFKQotKyAgICB7Ci0rICAgICAgZXh0ZXJuIHZvaWQgX25sX2xvZ191bnRyYW5zbGF0ZWQgKGNvbnN0IGNoYXIgKmxvZ2ZpbGVuYW1lLAotKwkJCQkJY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLSsJCQkJCWNvbnN0IGNoYXIgKm1zZ2lkMSwgY29uc3QgY2hhciAqbXNnaWQyLAotKwkJCQkJaW50IHBsdXJhbCk7Ci0rICAgICAgY29uc3QgY2hhciAqbG9nZmlsZW5hbWUgPSBnZXRlbnYgKCJHRVRURVhUX0xPR19VTlRSQU5TTEFURUQiKTsKLSsKLSsgICAgICBpZiAobG9nZmlsZW5hbWUgIT0gTlVMTCAmJiBsb2dmaWxlbmFtZVswXSAhPSAnXDAnKQotKwlfbmxfbG9nX3VudHJhbnNsYXRlZCAobG9nZmlsZW5hbWUsIGRvbWFpbm5hbWUsIG1zZ2lkMSwgbXNnaWQyLCBwbHVyYWwpOwotKyAgICB9Ci0rI2VuZGlmCi0rICBfX3NldF9lcnJubyAoc2F2ZWRfZXJybm8pOwotKyAgcmV0dXJuIChwbHVyYWwgPT0gMAotKwkgID8gKGNoYXIgKikgbXNnaWQxCi0rCSAgLyogVXNlIHRoZSBHZXJtYW5pYyBwbHVyYWwgcnVsZS4gICovCi0rCSAgOiBuID09IDEgPyAoY2hhciAqKSBtc2dpZDEgOiAoY2hhciAqKSBtc2dpZDIpOwotK30KLSsKLSsKLStjaGFyICoKLStpbnRlcm5hbF9mdW5jdGlvbgotK19ubF9maW5kX21zZyAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluX2ZpbGUsCi0rCSAgICAgIHN0cnVjdCBiaW5kaW5nICpkb21haW5iaW5kaW5nLCBjb25zdCBjaGFyICptc2dpZCwKLSsJICAgICAgc2l6ZV90ICpsZW5ndGhwKQotK3sKLSsgIHN0cnVjdCBsb2FkZWRfZG9tYWluICpkb21haW47Ci0rICBubHNfdWludDMyIG5zdHJpbmdzOwotKyAgc2l6ZV90IGFjdDsKLSsgIGNoYXIgKnJlc3VsdDsKLSsgIHNpemVfdCByZXN1bHRsZW47Ci0rCi0rICBpZiAoZG9tYWluX2ZpbGUtPmRlY2lkZWQgPT0gMCkKLSsgICAgX25sX2xvYWRfZG9tYWluIChkb21haW5fZmlsZSwgZG9tYWluYmluZGluZyk7Ci0rCi0rICBpZiAoZG9tYWluX2ZpbGUtPmRhdGEgPT0gTlVMTCkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICBkb21haW4gPSAoc3RydWN0IGxvYWRlZF9kb21haW4gKikgZG9tYWluX2ZpbGUtPmRhdGE7Ci0rCi0rICBuc3RyaW5ncyA9IGRvbWFpbi0+bnN0cmluZ3M7Ci0rCi0rICAvKiBMb2NhdGUgdGhlIE1TR0lEIGFuZCBpdHMgdHJhbnNsYXRpb24uICAqLwotKyAgaWYgKGRvbWFpbi0+aGFzaF90YWIgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIC8qIFVzZSB0aGUgaGFzaGluZyB0YWJsZS4gICovCi0rICAgICAgbmxzX3VpbnQzMiBsZW4gPSBzdHJsZW4gKG1zZ2lkKTsKLSsgICAgICBubHNfdWludDMyIGhhc2hfdmFsID0gaGFzaF9zdHJpbmcgKG1zZ2lkKTsKLSsgICAgICBubHNfdWludDMyIGlkeCA9IGhhc2hfdmFsICUgZG9tYWluLT5oYXNoX3NpemU7Ci0rICAgICAgbmxzX3VpbnQzMiBpbmNyID0gMSArIChoYXNoX3ZhbCAlIChkb21haW4tPmhhc2hfc2l6ZSAtIDIpKTsKLSsKLSsgICAgICB3aGlsZSAoMSkKLSsJewotKwkgIG5sc191aW50MzIgbnN0ciA9Ci0rCSAgICBXIChkb21haW4tPm11c3Rfc3dhcF9oYXNoX3RhYiwgZG9tYWluLT5oYXNoX3RhYltpZHhdKTsKLSsKLSsJICBpZiAobnN0ciA9PSAwKQotKwkgICAgLyogSGFzaCB0YWJsZSBlbnRyeSBpcyBlbXB0eS4gICovCi0rCSAgICByZXR1cm4gTlVMTDsKLSsKLSsJICBuc3RyLS07Ci0rCi0rCSAgLyogQ29tcGFyZSBtc2dpZCB3aXRoIHRoZSBvcmlnaW5hbCBzdHJpbmcgYXQgaW5kZXggbnN0ci4KLSsJICAgICBXZSBjb21wYXJlIHRoZSBsZW5ndGhzIHdpdGggPj0sIG5vdCA9PSwgYmVjYXVzZSBwbHVyYWwgZW50cmllcwotKwkgICAgIGFyZSByZXByZXNlbnRlZCBieSBzdHJpbmdzIHdpdGggYW4gZW1iZWRkZWQgTlVMLiAgKi8KLSsJICBpZiAobnN0ciA8IG5zdHJpbmdzCi0rCSAgICAgID8gVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRvbWFpbi0+b3JpZ190YWJbbnN0cl0ubGVuZ3RoKSA+PSBsZW4KLSsJCSYmIChzdHJjbXAgKG1zZ2lkLAotKwkJCSAgICBkb21haW4tPmRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwKLSsJCQkJCSAgICAgIGRvbWFpbi0+b3JpZ190YWJbbnN0cl0ub2Zmc2V0KSkKLSsJCSAgICA9PSAwKQotKwkgICAgICA6IGRvbWFpbi0+b3JpZ19zeXNkZXBfdGFiW25zdHIgLSBuc3RyaW5nc10ubGVuZ3RoID4gbGVuCi0rCQkmJiAoc3RyY21wIChtc2dpZCwKLSsJCQkgICAgZG9tYWluLT5vcmlnX3N5c2RlcF90YWJbbnN0ciAtIG5zdHJpbmdzXS5wb2ludGVyKQotKwkJICAgID09IDApKQotKwkgICAgewotKwkgICAgICBhY3QgPSBuc3RyOwotKwkgICAgICBnb3RvIGZvdW5kOwotKwkgICAgfQotKwotKwkgIGlmIChpZHggPj0gZG9tYWluLT5oYXNoX3NpemUgLSBpbmNyKQotKwkgICAgaWR4IC09IGRvbWFpbi0+aGFzaF9zaXplIC0gaW5jcjsKLSsJICBlbHNlCi0rCSAgICBpZHggKz0gaW5jcjsKLSsJfQotKyAgICAgIC8qIE5PVFJFQUNIRUQgKi8KLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgLyogVHJ5IHRoZSBkZWZhdWx0IG1ldGhvZDogIGJpbmFyeSBzZWFyY2ggaW4gdGhlIHNvcnRlZCBhcnJheSBvZgotKwkgbWVzc2FnZXMuICAqLwotKyAgICAgIHNpemVfdCB0b3AsIGJvdHRvbTsKLSsKLSsgICAgICBib3R0b20gPSAwOwotKyAgICAgIHRvcCA9IG5zdHJpbmdzOwotKyAgICAgIHdoaWxlIChib3R0b20gPCB0b3ApCi0rCXsKLSsJICBpbnQgY21wX3ZhbDsKLSsKLSsJICBhY3QgPSAoYm90dG9tICsgdG9wKSAvIDI7Ci0rCSAgY21wX3ZhbCA9IHN0cmNtcCAobXNnaWQsIChkb21haW4tPmRhdGEKLSsJCQkJICAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCi0rCQkJCQkgZG9tYWluLT5vcmlnX3RhYlthY3RdLm9mZnNldCkpKTsKLSsJICBpZiAoY21wX3ZhbCA8IDApCi0rCSAgICB0b3AgPSBhY3Q7Ci0rCSAgZWxzZSBpZiAoY21wX3ZhbCA+IDApCi0rCSAgICBib3R0b20gPSBhY3QgKyAxOwotKwkgIGVsc2UKLSsJICAgIGdvdG8gZm91bmQ7Ci0rCX0KLSsgICAgICAvKiBObyB0cmFuc2xhdGlvbiB3YXMgZm91bmQuICAqLwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0rIGZvdW5kOgotKyAgLyogVGhlIHRyYW5zbGF0aW9uIHdhcyBmb3VuZCBhdCBpbmRleCBBQ1QuICBJZiB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlCi0rICAgICBzdHJpbmcgdG8gdXNlIGEgZGlmZmVyZW50IGNoYXJhY3RlciBzZXQsIHRoaXMgaXMgdGhlIHRpbWUuICAqLwotKyAgaWYgKGFjdCA8IG5zdHJpbmdzKQotKyAgICB7Ci0rICAgICAgcmVzdWx0ID0gKGNoYXIgKikKLSsJKGRvbWFpbi0+ZGF0YSArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkb21haW4tPnRyYW5zX3RhYlthY3RdLm9mZnNldCkpOwotKyAgICAgIHJlc3VsdGxlbiA9IFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkb21haW4tPnRyYW5zX3RhYlthY3RdLmxlbmd0aCkgKyAxOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICByZXN1bHQgPSAoY2hhciAqKSBkb21haW4tPnRyYW5zX3N5c2RlcF90YWJbYWN0IC0gbnN0cmluZ3NdLnBvaW50ZXI7Ci0rICAgICAgcmVzdWx0bGVuID0gZG9tYWluLT50cmFuc19zeXNkZXBfdGFiW2FjdCAtIG5zdHJpbmdzXS5sZW5ndGg7Ci0rICAgIH0KLSsKLSsjaWYgZGVmaW5lZCBfTElCQyB8fCBIQVZFX0lDT05WCi0rICBpZiAoZG9tYWluLT5jb2Rlc2V0X2NudHIKLSsgICAgICAhPSAoZG9tYWluYmluZGluZyAhPSBOVUxMID8gZG9tYWluYmluZGluZy0+Y29kZXNldF9jbnRyIDogMCkpCi0rICAgIHsKLSsgICAgICAvKiBUaGUgZG9tYWluJ3MgY29kZXNldCBoYXMgY2hhbmdlZCB0aHJvdWdoIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KCkKLSsJIHNpbmNlIHRoZSBtZXNzYWdlIGNhdGFsb2cgd2FzIGluaXRpYWxpemVkIG9yIGxhc3QgYWNjZXNzZWQuICBXZQotKwkgaGF2ZSB0byByZWluaXRpYWxpemUgdGhlIGNvbnZlcnRlci4gICovCi0rICAgICAgX25sX2ZyZWVfZG9tYWluX2NvbnYgKGRvbWFpbik7Ci0rICAgICAgX25sX2luaXRfZG9tYWluX2NvbnYgKGRvbWFpbl9maWxlLCBkb21haW4sIGRvbWFpbmJpbmRpbmcpOwotKyAgICB9Ci0rCi0rICBpZiAoCi0rIyBpZmRlZiBfTElCQwotKyAgICAgIGRvbWFpbi0+Y29udiAhPSAoX19nY29udl90KSAtMQotKyMgZWxzZQotKyMgIGlmIEhBVkVfSUNPTlYKLSsgICAgICBkb21haW4tPmNvbnYgIT0gKGljb252X3QpIC0xCi0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rICAgICAgKQotKyAgICB7Ci0rICAgICAgLyogV2UgYXJlIHN1cHBvc2VkIHRvIGRvIGEgY29udmVyc2lvbi4gIEZpcnN0IGFsbG9jYXRlIGFuCi0rCSBhcHByb3ByaWF0ZSB0YWJsZSB3aXRoIHRoZSBzYW1lIHN0cnVjdHVyZSBhcyB0aGUgdGFibGUKLSsJIG9mIHRyYW5zbGF0aW9ucyBpbiB0aGUgZmlsZSwgd2hlcmUgd2UgY2FuIHB1dCB0aGUgcG9pbnRlcnMKLSsJIHRvIHRoZSBjb252ZXJ0ZWQgc3RyaW5ncyBpbi4KLSsJIFRoZXJlIGlzIGEgc2xpZ2h0IGNvbXBsaWNhdGlvbiB3aXRoIHBsdXJhbCBlbnRyaWVzLiAgVGhleQotKwkgYXJlIHJlcHJlc2VudGVkIGJ5IGNvbnNlY3V0aXZlIE5VTCB0ZXJtaW5hdGVkIHN0cmluZ3MuICBXZQotKwkgaGFuZGxlIHRoaXMgY2FzZSBieSBjb252ZXJ0aW5nIFJFU1VMVExFTiBieXRlcywgaW5jbHVkaW5nCi0rCSBOVUxzLiAgKi8KLSsKLSsgICAgICBpZiAoZG9tYWluLT5jb252X3RhYiA9PSBOVUxMCi0rCSAgJiYgKChkb21haW4tPmNvbnZfdGFiID0KLSsJCSAoY2hhciAqKikgY2FsbG9jIChuc3RyaW5ncyArIGRvbWFpbi0+bl9zeXNkZXBfc3RyaW5ncywKLSsJCQkJICAgc2l6ZW9mIChjaGFyICopKSkKLSsJICAgICAgPT0gTlVMTCkpCi0rCS8qIE1hcmsgdGhhdCB3ZSBkaWRuJ3Qgc3VjY2VlZCBhbGxvY2F0aW5nIGEgdGFibGUuICAqLwotKwlkb21haW4tPmNvbnZfdGFiID0gKGNoYXIgKiopIC0xOwotKwotKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChkb21haW4tPmNvbnZfdGFiID09IChjaGFyICoqKSAtMSwgMCkpCi0rCS8qIE5vdGhpbmcgd2UgY2FuIGRvLCBubyBtb3JlIG1lbW9yeS4gICovCi0rCWdvdG8gY29udmVydGVkOwotKwotKyAgICAgIGlmIChkb21haW4tPmNvbnZfdGFiW2FjdF0gPT0gTlVMTCkKLSsJewotKwkgIC8qIFdlIGhhdmVuJ3QgdXNlZCB0aGlzIHN0cmluZyBzbyBmYXIsIHNvIGl0IGlzIG5vdAotKwkgICAgIHRyYW5zbGF0ZWQgeWV0LiAgRG8gdGhpcyBub3cuICAqLwotKwkgIC8qIFdlIHVzZSBhIGJpdCBtb3JlIGVmZmljaWVudCBtZW1vcnkgaGFuZGxpbmcuCi0rCSAgICAgV2UgYWxsb2NhdGUgYWx3YXlzIGxhcmdlciBibG9ja3Mgd2hpY2ggZ2V0IHVzZWQgb3ZlcgotKwkgICAgIHRpbWUuICBUaGlzIGlzIGZhc3RlciB0aGFuIG1hbnkgc21hbGwgYWxsb2NhdGlvbnMuICAgKi8KLSsJICBfX2xpYmNfbG9ja19kZWZpbmVfaW5pdGlhbGl6ZWQgKHN0YXRpYywgbG9jaykKLSsjIGRlZmluZSBJTklUSUFMX0JMT0NLX1NJWkUJNDA4MAotKwkgIHN0YXRpYyB1bnNpZ25lZCBjaGFyICpmcmVlbWVtOwotKwkgIHN0YXRpYyBzaXplX3QgZnJlZW1lbV9zaXplOwotKwotKwkgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluYnVmOwotKwkgIHVuc2lnbmVkIGNoYXIgKm91dGJ1ZjsKLSsJICBpbnQgbWFsbG9jX2NvdW50OwotKyMgaWZuZGVmIF9MSUJDCi0rCSAgdHJhbnNtZW1fYmxvY2tfdCAqdHJhbnNtZW1fbGlzdCA9IE5VTEw7Ci0rIyBlbmRpZgotKwotKwkgIF9fbGliY19sb2NrX2xvY2sgKGxvY2spOwotKwotKwkgIGluYnVmID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcmVzdWx0OwotKwkgIG91dGJ1ZiA9IGZyZWVtZW0gKyBzaXplb2YgKHNpemVfdCk7Ci0rCi0rCSAgbWFsbG9jX2NvdW50ID0gMDsKLSsJICB3aGlsZSAoMSkKLSsJICAgIHsKLSsJICAgICAgdHJhbnNtZW1fYmxvY2tfdCAqbmV3bWVtOwotKyMgaWZkZWYgX0xJQkMKLSsJICAgICAgc2l6ZV90IG5vbl9yZXZlcnNpYmxlOwotKwkgICAgICBpbnQgcmVzOwotKwotKwkgICAgICBpZiAoZnJlZW1lbV9zaXplIDwgc2l6ZW9mIChzaXplX3QpKQotKwkJZ290byByZXNpemVfZnJlZW1lbTsKLSsKLSsJICAgICAgcmVzID0gX19nY29udiAoZG9tYWluLT5jb252LAotKwkJCSAgICAgJmluYnVmLCBpbmJ1ZiArIHJlc3VsdGxlbiwKLSsJCQkgICAgICZvdXRidWYsCi0rCQkJICAgICBvdXRidWYgKyBmcmVlbWVtX3NpemUgLSBzaXplb2YgKHNpemVfdCksCi0rCQkJICAgICAmbm9uX3JldmVyc2libGUpOwotKwotKwkgICAgICBpZiAocmVzID09IF9fR0NPTlZfT0sgfHwgcmVzID09IF9fR0NPTlZfRU1QVFlfSU5QVVQpCi0rCQlicmVhazsKLSsKLSsJICAgICAgaWYgKHJlcyAhPSBfX0dDT05WX0ZVTExfT1VUUFVUKQotKwkJewotKwkJICBfX2xpYmNfbG9ja191bmxvY2sgKGxvY2spOwotKwkJICBnb3RvIGNvbnZlcnRlZDsKLSsJCX0KLSsKLSsJICAgICAgaW5idWYgPSByZXN1bHQ7Ci0rIyBlbHNlCi0rIyAgaWYgSEFWRV9JQ09OVgotKwkgICAgICBjb25zdCBjaGFyICppbnB0ciA9IChjb25zdCBjaGFyICopIGluYnVmOwotKwkgICAgICBzaXplX3QgaW5sZWZ0ID0gcmVzdWx0bGVuOwotKwkgICAgICBjaGFyICpvdXRwdHIgPSAoY2hhciAqKSBvdXRidWY7Ci0rCSAgICAgIHNpemVfdCBvdXRsZWZ0OwotKwotKwkgICAgICBpZiAoZnJlZW1lbV9zaXplIDwgc2l6ZW9mIChzaXplX3QpKQotKwkJZ290byByZXNpemVfZnJlZW1lbTsKLSsKLSsJICAgICAgb3V0bGVmdCA9IGZyZWVtZW1fc2l6ZSAtIHNpemVvZiAoc2l6ZV90KTsKLSsJICAgICAgaWYgKGljb252IChkb21haW4tPmNvbnYsCi0rCQkJIChJQ09OVl9DT05TVCBjaGFyICoqKSAmaW5wdHIsICZpbmxlZnQsCi0rCQkJICZvdXRwdHIsICZvdXRsZWZ0KQotKwkJICAhPSAoc2l6ZV90KSAoLTEpKQotKwkJewotKwkJICBvdXRidWYgPSAodW5zaWduZWQgY2hhciAqKSBvdXRwdHI7Ci0rCQkgIGJyZWFrOwotKwkJfQotKwkgICAgICBpZiAoZXJybm8gIT0gRTJCSUcpCi0rCQl7Ci0rCQkgIF9fbGliY19sb2NrX3VubG9jayAobG9jayk7Ci0rCQkgIGdvdG8gY29udmVydGVkOwotKwkJfQotKyMgIGVuZGlmCi0rIyBlbmRpZgotKwotKwkgICAgcmVzaXplX2ZyZWVtZW06Ci0rCSAgICAgIC8qIFdlIG11c3QgYWxsb2NhdGUgYSBuZXcgYnVmZmVyIG9yIHJlc2l6ZSB0aGUgb2xkIG9uZS4gICovCi0rCSAgICAgIGlmIChtYWxsb2NfY291bnQgPiAwKQotKwkJewotKwkJICArK21hbGxvY19jb3VudDsKLSsJCSAgZnJlZW1lbV9zaXplID0gbWFsbG9jX2NvdW50ICogSU5JVElBTF9CTE9DS19TSVpFOwotKwkJICBuZXdtZW0gPSAodHJhbnNtZW1fYmxvY2tfdCAqKSByZWFsbG9jICh0cmFuc21lbV9saXN0LAotKwkJCQkJCQkgZnJlZW1lbV9zaXplKTsKLSsjIGlmZGVmIF9MSUJDCi0rCQkgIGlmIChuZXdtZW0gIT0gTlVMTCkKLSsJCSAgICB0cmFuc21lbV9saXN0ID0gdHJhbnNtZW1fbGlzdC0+bmV4dDsKLSsJCSAgZWxzZQotKwkJICAgIHsKLSsJCSAgICAgIHN0cnVjdCB0cmFuc21lbV9saXN0ICpvbGQgPSB0cmFuc21lbV9saXN0OwotKwotKwkJICAgICAgdHJhbnNtZW1fbGlzdCA9IHRyYW5zbWVtX2xpc3QtPm5leHQ7Ci0rCQkgICAgICBmcmVlIChvbGQpOwotKwkJICAgIH0KLSsjIGVuZGlmCi0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCXsKLSsJCSAgbWFsbG9jX2NvdW50ID0gMTsKLSsJCSAgZnJlZW1lbV9zaXplID0gSU5JVElBTF9CTE9DS19TSVpFOwotKwkJICBuZXdtZW0gPSAodHJhbnNtZW1fYmxvY2tfdCAqKSBtYWxsb2MgKGZyZWVtZW1fc2l6ZSk7Ci0rCQl9Ci0rCSAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChuZXdtZW0gPT0gTlVMTCwgMCkpCi0rCQl7Ci0rCQkgIGZyZWVtZW0gPSBOVUxMOwotKwkJICBmcmVlbWVtX3NpemUgPSAwOwotKwkJICBfX2xpYmNfbG9ja191bmxvY2sgKGxvY2spOwotKwkJICBnb3RvIGNvbnZlcnRlZDsKLSsJCX0KLSsKLSsjIGlmZGVmIF9MSUJDCi0rCSAgICAgIC8qIEFkZCB0aGUgYmxvY2sgdG8gdGhlIGxpc3Qgb2YgYmxvY2tzIHdlIGhhdmUgdG8gZnJlZQotKyAgICAgICAgICAgICAgICAgYXQgc29tZSBwb2ludC4gICovCi0rCSAgICAgIG5ld21lbS0+bmV4dCA9IHRyYW5zbWVtX2xpc3Q7Ci0rCSAgICAgIHRyYW5zbWVtX2xpc3QgPSBuZXdtZW07Ci0rCi0rCSAgICAgIGZyZWVtZW0gPSBuZXdtZW0tPmRhdGE7Ci0rCSAgICAgIGZyZWVtZW1fc2l6ZSAtPSBvZmZzZXRvZiAoc3RydWN0IHRyYW5zbWVtX2xpc3QsIGRhdGEpOwotKyMgZWxzZQotKwkgICAgICB0cmFuc21lbV9saXN0ID0gbmV3bWVtOwotKwkgICAgICBmcmVlbWVtID0gbmV3bWVtOwotKyMgZW5kaWYKLSsKLSsJICAgICAgb3V0YnVmID0gZnJlZW1lbSArIHNpemVvZiAoc2l6ZV90KTsKLSsJICAgIH0KLSsKLSsJICAvKiBXZSBoYXZlIG5vdyBpbiBvdXIgYnVmZmVyIGEgY29udmVydGVkIHN0cmluZy4gIFB1dCB0aGlzCi0rCSAgICAgaW50byB0aGUgdGFibGUgb2YgY29udmVyc2lvbnMuICAqLwotKwkgICooc2l6ZV90ICopIGZyZWVtZW0gPSBvdXRidWYgLSBmcmVlbWVtIC0gc2l6ZW9mIChzaXplX3QpOwotKwkgIGRvbWFpbi0+Y29udl90YWJbYWN0XSA9IChjaGFyICopIGZyZWVtZW07Ci0rCSAgLyogU2hyaW5rIGZyZWVtZW0sIGJ1dCBrZWVwIGl0IGFsaWduZWQuICAqLwotKwkgIGZyZWVtZW1fc2l6ZSAtPSBvdXRidWYgLSBmcmVlbWVtOwotKwkgIGZyZWVtZW0gPSBvdXRidWY7Ci0rCSAgZnJlZW1lbSArPSBmcmVlbWVtX3NpemUgJiAoYWxpZ25vZiAoc2l6ZV90KSAtIDEpOwotKwkgIGZyZWVtZW1fc2l6ZSA9IGZyZWVtZW1fc2l6ZSAmIH4gKGFsaWdub2YgKHNpemVfdCkgLSAxKTsKLSsKLSsJICBfX2xpYmNfbG9ja191bmxvY2sgKGxvY2spOwotKwl9Ci0rCi0rICAgICAgLyogTm93IGRvbWFpbi0+Y29udl90YWJbYWN0XSBjb250YWlucyB0aGUgdHJhbnNsYXRpb24gb2YgYWxsCi0rCSB0aGUgcGx1cmFsIHZhcmlhbnRzLiAgKi8KLSsgICAgICByZXN1bHQgPSBkb21haW4tPmNvbnZfdGFiW2FjdF0gKyBzaXplb2YgKHNpemVfdCk7Ci0rICAgICAgcmVzdWx0bGVuID0gKihzaXplX3QgKikgZG9tYWluLT5jb252X3RhYlthY3RdOwotKyAgICB9Ci0rCi0rIGNvbnZlcnRlZDoKLSsgIC8qIFRoZSByZXN1bHQgc3RyaW5nIGlzIGNvbnZlcnRlZC4gICovCi0rCi0rI2VuZGlmIC8qIF9MSUJDIHx8IEhBVkVfSUNPTlYgKi8KLSsKLSsgICpsZW5ndGhwID0gcmVzdWx0bGVuOwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0rCi0rLyogTG9vayB1cCBhIHBsdXJhbCB2YXJpYW50LiAgKi8KLStzdGF0aWMgY2hhciAqCi0raW50ZXJuYWxfZnVuY3Rpb24KLStwbHVyYWxfbG9va3VwIChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW4sIHVuc2lnbmVkIGxvbmcgaW50IG4sCi0rCSAgICAgICBjb25zdCBjaGFyICp0cmFuc2xhdGlvbiwgc2l6ZV90IHRyYW5zbGF0aW9uX2xlbikKLSt7Ci0rICBzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqZG9tYWluZGF0YSA9IChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqKSBkb21haW4tPmRhdGE7Ci0rICB1bnNpZ25lZCBsb25nIGludCBpbmRleDsKLSsgIGNvbnN0IGNoYXIgKnA7Ci0rCi0rICBpbmRleCA9IHBsdXJhbF9ldmFsIChkb21haW5kYXRhLT5wbHVyYWwsIG4pOwotKyAgaWYgKGluZGV4ID49IGRvbWFpbmRhdGEtPm5wbHVyYWxzKQotKyAgICAvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uICBJdCBtZWFucyB0aGUgcGx1cmFsIGV4cHJlc3Npb24gYW5kIHRoZQotKyAgICAgICBnaXZlbiBtYXhpbXVtIHZhbHVlIGRvIG5vdCBtYXRjaC4gICovCi0rICAgIGluZGV4ID0gMDsKLSsKLSsgIC8qIFNraXAgSU5ERVggc3RyaW5ncyBhdCBUUkFOU0xBVElPTi4gICovCi0rICBwID0gdHJhbnNsYXRpb247Ci0rICB3aGlsZSAoaW5kZXgtLSA+IDApCi0rICAgIHsKLSsjaWZkZWYgX0xJQkMKLSsgICAgICBwID0gX19yYXdtZW1jaHIgKHAsICdcMCcpOwotKyNlbHNlCi0rICAgICAgcCA9IHN0cmNociAocCwgJ1wwJyk7Ci0rI2VuZGlmCi0rICAgICAgLyogQW5kIHNraXAgb3ZlciB0aGUgTlVMIGJ5dGUuICAqLwotKyAgICAgIHArKzsKLSsKLSsgICAgICBpZiAocCA+PSB0cmFuc2xhdGlvbiArIHRyYW5zbGF0aW9uX2xlbikKLSsJLyogVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLiAgSXQgbWVhbnMgdGhlIHBsdXJhbCBleHByZXNzaW9uCi0rCSAgIGV2YWx1YXRlZCB0byBhIHZhbHVlIGxhcmdlciB0aGFuIHRoZSBudW1iZXIgb2YgdmFyaWFudHMKLSsJICAgYXZhaWxhYmxlIGZvciBNU0dJRDEuICAqLwotKwlyZXR1cm4gKGNoYXIgKikgdHJhbnNsYXRpb247Ci0rICAgIH0KLSsgIHJldHVybiAoY2hhciAqKSBwOwotK30KLSsKLSsjaWZuZGVmIF9MSUJDCi0rLyogUmV0dXJuIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBsb2NhbGUgQ0FURUdPUlkuICAqLwotK3N0YXRpYyBjb25zdCBjaGFyICoKLStpbnRlcm5hbF9mdW5jdGlvbgotK2NhdGVnb3J5X3RvX25hbWUgKGludCBjYXRlZ29yeSkKLSt7Ci0rICBjb25zdCBjaGFyICpyZXR2YWw7Ci0rCi0rICBzd2l0Y2ggKGNhdGVnb3J5KQotKyAgewotKyNpZmRlZiBMQ19DT0xMQVRFCi0rICBjYXNlIExDX0NPTExBVEU6Ci0rICAgIHJldHZhbCA9ICJMQ19DT0xMQVRFIjsKLSsgICAgYnJlYWs7Ci0rI2VuZGlmCi0rI2lmZGVmIExDX0NUWVBFCi0rICBjYXNlIExDX0NUWVBFOgotKyAgICByZXR2YWwgPSAiTENfQ1RZUEUiOwotKyAgICBicmVhazsKLSsjZW5kaWYKLSsjaWZkZWYgTENfTU9ORVRBUlkKLSsgIGNhc2UgTENfTU9ORVRBUlk6Ci0rICAgIHJldHZhbCA9ICJMQ19NT05FVEFSWSI7Ci0rICAgIGJyZWFrOwotKyNlbmRpZgotKyNpZmRlZiBMQ19OVU1FUklDCi0rICBjYXNlIExDX05VTUVSSUM6Ci0rICAgIHJldHZhbCA9ICJMQ19OVU1FUklDIjsKLSsgICAgYnJlYWs7Ci0rI2VuZGlmCi0rI2lmZGVmIExDX1RJTUUKLSsgIGNhc2UgTENfVElNRToKLSsgICAgcmV0dmFsID0gIkxDX1RJTUUiOwotKyAgICBicmVhazsKLSsjZW5kaWYKLSsjaWZkZWYgTENfTUVTU0FHRVMKLSsgIGNhc2UgTENfTUVTU0FHRVM6Ci0rICAgIHJldHZhbCA9ICJMQ19NRVNTQUdFUyI7Ci0rICAgIGJyZWFrOwotKyNlbmRpZgotKyNpZmRlZiBMQ19SRVNQT05TRQotKyAgY2FzZSBMQ19SRVNQT05TRToKLSsgICAgcmV0dmFsID0gIkxDX1JFU1BPTlNFIjsKLSsgICAgYnJlYWs7Ci0rI2VuZGlmCi0rI2lmZGVmIExDX0FMTAotKyAgY2FzZSBMQ19BTEw6Ci0rICAgIC8qIFRoaXMgbWlnaHQgbm90IG1ha2Ugc2Vuc2UgYnV0IGlzIHBlcmhhcHMgYmV0dGVyIHRoYW4gYW55IG90aGVyCi0rICAgICAgIHZhbHVlLiAgKi8KLSsgICAgcmV0dmFsID0gIkxDX0FMTCI7Ci0rICAgIGJyZWFrOwotKyNlbmRpZgotKyAgZGVmYXVsdDoKLSsgICAgLyogSWYgeW91IGhhdmUgYSBiZXR0ZXIgaWRlYSBmb3IgYSBkZWZhdWx0IHZhbHVlIGxldCBtZSBrbm93LiAgKi8KLSsgICAgcmV0dmFsID0gIkxDX1hYWCI7Ci0rICB9Ci0rCi0rICByZXR1cm4gcmV0dmFsOwotK30KLSsjZW5kaWYKLSsKLSsvKiBHdWVzcyB2YWx1ZSBvZiBjdXJyZW50IGxvY2FsZSBmcm9tIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuICAqLwotK3N0YXRpYyBjb25zdCBjaGFyICoKLStpbnRlcm5hbF9mdW5jdGlvbgotK2d1ZXNzX2NhdGVnb3J5X3ZhbHVlIChpbnQgY2F0ZWdvcnksIGNvbnN0IGNoYXIgKmNhdGVnb3J5bmFtZSkKLSt7Ci0rICBjb25zdCBjaGFyICpsYW5ndWFnZTsKLSsgIGNvbnN0IGNoYXIgKnJldHZhbDsKLSsKLSsgIC8qIFRoZSBoaWdoZXN0IHByaW9yaXR5IHZhbHVlIGlzIHRoZSBgTEFOR1VBR0UnIGVudmlyb25tZW50Ci0rICAgICB2YXJpYWJsZS4gIEJ1dCB3ZSBkb24ndCB1c2UgdGhlIHZhbHVlIGlmIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQKLSsgICAgIGxvY2FsZSBpcyB0aGUgQyBsb2NhbGUuICBUaGlzIGlzIGEgR05VIGV4dGVuc2lvbi4gICovCi0rICBsYW5ndWFnZSA9IGdldGVudiAoIkxBTkdVQUdFIik7Ci0rICBpZiAobGFuZ3VhZ2UgIT0gTlVMTCAmJiBsYW5ndWFnZVswXSA9PSAnXDAnKQotKyAgICBsYW5ndWFnZSA9IE5VTEw7Ci0rCi0rICAvKiBXZSBoYXZlIHRvIHByb2NlZWQgd2l0aCB0aGUgUE9TSVggbWV0aG9kcyBvZiBsb29raW5nIHRvIGBMQ19BTEwnLAotKyAgICAgYExDX3h4eCcsIGFuZCBgTEFORycuICBPbiBzb21lIHN5c3RlbXMgdGhpcyBjYW4gYmUgZG9uZSBieSB0aGUKLSsgICAgIGBzZXRsb2NhbGUnIGZ1bmN0aW9uIGl0c2VsZi4gICovCi0rI2lmZGVmIF9MSUJDCi0rICByZXR2YWwgPSBfX2N1cnJlbnRfbG9jYWxlX25hbWUgKGNhdGVnb3J5KTsKLSsjZWxzZQotKyAgcmV0dmFsID0gX25sX2xvY2FsZV9uYW1lIChjYXRlZ29yeSwgY2F0ZWdvcnluYW1lKTsKLSsjZW5kaWYKLSsKLSsgIC8qIElnbm9yZSBMQU5HVUFHRSBpZiB0aGUgbG9jYWxlIGlzIHNldCB0byAiQyIgYmVjYXVzZQotKyAgICAgMS4gIkMiIGxvY2FsZSB1c3VhbGx5IHVzZXMgdGhlIEFTQ0lJIGVuY29kaW5nLCBhbmQgbW9zdCBpbnRlcm5hdGlvbmFsCi0rCW1lc3NhZ2VzIHVzZSBub24tQVNDSUkgY2hhcmFjdGVycy4gVGhlc2UgY2hhcmFjdGVycyBnZXQgZGlzcGxheWVkCi0rCWFzIHF1ZXN0aW9uIG1hcmtzIChpZiB1c2luZyBnbGliYydzIGljb252KCkpIG9yIGFzIGludmFsaWQgOC1iaXQKLSsJY2hhcmFjdGVycyAoYmVjYXVzZSBvdGhlciBpY29udigpcyByZWZ1c2UgdG8gY29udmVydCBtb3N0IG5vbi1BU0NJSQotKwljaGFyYWN0ZXJzIHRvIEFTQ0lJKS4gSW4gYW55IGNhc2UsIHRoZSBvdXRwdXQgaXMgdWdseS4KLSsgICAgIDIuIFRoZSBwcmVjaXNlIG91dHB1dCBvZiBzb21lIHByb2dyYW1zIGluIHRoZSAiQyIgbG9jYWxlIGlzIHNwZWNpZmllZAotKwlieSBQT1NJWCBhbmQgc2hvdWxkIG5vdCBkZXBlbmQgb24gZW52aXJvbm1lbnQgdmFyaWFibGVzIGxpa2UKLSsJIkxBTkdVQUdFIi4gIFdlIGFsbG93IHN1Y2ggcHJvZ3JhbXMgdG8gdXNlIGdldHRleHQoKS4gICovCi0rICByZXR1cm4gbGFuZ3VhZ2UgIT0gTlVMTCAmJiBzdHJjbXAgKHJldHZhbCwgIkMiKSAhPSAwID8gbGFuZ3VhZ2UgOiByZXR2YWw7Ci0rfQotKwotKy8qIEBAIGJlZ2luIG9mIGVwaWxvZyBAQCAqLwotKwotKy8qIFdlIGRvbid0IHdhbnQgbGliaW50bC5hIHRvIGRlcGVuZCBvbiBhbnkgb3RoZXIgbGlicmFyeS4gIFNvIHdlCi0rICAgYXZvaWQgdGhlIG5vbi1zdGFuZGFyZCBmdW5jdGlvbiBzdHBjcHkuICBJbiBHTlUgQyBMaWJyYXJ5IHRoaXMKLSsgICBmdW5jdGlvbiBpcyBhdmFpbGFibGUsIHRob3VnaC4gIEFsc28gYWxsb3cgdGhlIHN5bWJvbCBIQVZFX1NUUENQWQotKyAgIHRvIGJlIGRlZmluZWQuICAqLwotKyNpZiAhX0xJQkMgJiYgIUhBVkVfU1RQQ1BZCi0rc3RhdGljIGNoYXIgKgotK3N0cGNweSAoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjKQotK3sKLSsgIHdoaWxlICgoKmRlc3QrKyA9ICpzcmMrKykgIT0gJ1wwJykKLSsgICAgLyogRG8gbm90aGluZy4gKi8gOwotKyAgcmV0dXJuIGRlc3QgLSAxOwotK30KLSsjZW5kaWYKLSsKLSsjaWYgIV9MSUJDICYmICFIQVZFX01FTVBDUFkKLStzdGF0aWMgdm9pZCAqCi0rbWVtcGNweSAodm9pZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgbikKLSt7Ci0rICByZXR1cm4gKHZvaWQgKikgKChjaGFyICopIG1lbWNweSAoZGVzdCwgc3JjLCBuKSArIG4pOwotK30KLSsjZW5kaWYKLSsKLSsKLSsjaWZkZWYgX0xJQkMKLSsvKiBJZiB3ZSB3YW50IHRvIGZyZWUgYWxsIHJlc291cmNlcyB3ZSBoYXZlIHRvIGRvIHNvbWUgd29yayBhdAotKyAgIHByb2dyYW0ncyBlbmQuICAqLwotK2xpYmNfZnJlZXJlc19mbiAoZnJlZV9tZW0pCi0rewotKyAgdm9pZCAqb2xkOwotKwotKyAgd2hpbGUgKF9ubF9kb21haW5fYmluZGluZ3MgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIHN0cnVjdCBiaW5kaW5nICpvbGRwID0gX25sX2RvbWFpbl9iaW5kaW5nczsKLSsgICAgICBfbmxfZG9tYWluX2JpbmRpbmdzID0gX25sX2RvbWFpbl9iaW5kaW5ncy0+bmV4dDsKLSsgICAgICBpZiAob2xkcC0+ZGlybmFtZSAhPSBJTlRVU0UoX25sX2RlZmF1bHRfZGlybmFtZSkpCi0rCS8qIFllcywgdGhpcyBpcyBhIHBvaW50ZXIgY29tcGFyaXNvbi4gICovCi0rCWZyZWUgKG9sZHAtPmRpcm5hbWUpOwotKyAgICAgIGZyZWUgKG9sZHAtPmNvZGVzZXQpOwotKyAgICAgIGZyZWUgKG9sZHApOwotKyAgICB9Ci0rCi0rICBpZiAoX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gIT0gX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW4pCi0rICAgIC8qIFllcywgYWdhaW4gYSBwb2ludGVyIGNvbXBhcmlzb24uICAqLwotKyAgICBmcmVlICgoY2hhciAqKSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbik7Ci0rCi0rICAvKiBSZW1vdmUgdGhlIHNlYXJjaCB0cmVlIHdpdGggdGhlIGtub3duIHRyYW5zbGF0aW9ucy4gICovCi0rICBfX3RkZXN0cm95IChyb290LCBmcmVlKTsKLSsgIHJvb3QgPSBOVUxMOwotKwotKyAgd2hpbGUgKHRyYW5zbWVtX2xpc3QgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIG9sZCA9IHRyYW5zbWVtX2xpc3Q7Ci0rICAgICAgdHJhbnNtZW1fbGlzdCA9IHRyYW5zbWVtX2xpc3QtPm5leHQ7Ci0rICAgICAgZnJlZSAob2xkKTsKLSsgICAgfQotK30KLSsjZW5kaWYKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9kY25nZXR0ZXh0LmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvZGNuZ2V0dGV4dC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuMzc1NzQ1MDQ4IC0wNDAwCi1AQCAtMCwwICsxLDU3IEBACi0rLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIGRjbmdldHRleHQoMykgZnVuY3Rpb24uCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTksIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlICJnZXR0ZXh0UC5oIgotKyNpZmRlZiBfTElCQwotKyMgaW5jbHVkZSA8bGliaW50bC5oPgotKyNlbHNlCi0rIyBpbmNsdWRlICJsaWJnbnVpbnRsLmgiCi0rI2VuZGlmCi0rCi0rLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotKwotKy8qIE5hbWVzIGZvciB0aGUgbGliaW50bCBmdW5jdGlvbnMgYXJlIGEgcHJvYmxlbS4gIFRoZXkgbXVzdCBub3QgY2xhc2gKLSsgICB3aXRoIGV4aXN0aW5nIG5hbWVzIGFuZCB0aGV5IHNob3VsZCBmb2xsb3cgQU5TSSBDLiAgQnV0IHRoaXMgc291cmNlCi0rICAgY29kZSBpcyBhbHNvIHVzZWQgaW4gR05VIEMgTGlicmFyeSB3aGVyZSB0aGUgbmFtZXMgaGF2ZSBhIF9fCi0rICAgcHJlZml4LiAgU28gd2UgaGF2ZSB0byBtYWtlIGEgZGlmZmVyZW5jZSBoZXJlLiAgKi8KLSsjaWZkZWYgX0xJQkMKLSsjIGRlZmluZSBEQ05HRVRURVhUIF9fZGNuZ2V0dGV4dAotKyMgZGVmaW5lIERDSUdFVFRFWFQgX19kY2lnZXR0ZXh0Ci0rI2Vsc2UKLSsjIGRlZmluZSBEQ05HRVRURVhUIGxpYmludGxfZGNuZ2V0dGV4dAotKyMgZGVmaW5lIERDSUdFVFRFWFQgbGliaW50bF9kY2lnZXR0ZXh0Ci0rI2VuZGlmCi0rCi0rLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50IENBVEVHT1JZCi0rICAgbG9jYWxlLiAgKi8KLStjaGFyICoKLStEQ05HRVRURVhUIChjb25zdCBjaGFyICpkb21haW5uYW1lLAotKwkgICAgY29uc3QgY2hhciAqbXNnaWQxLCBjb25zdCBjaGFyICptc2dpZDIsIHVuc2lnbmVkIGxvbmcgaW50IG4sCi0rCSAgICBpbnQgY2F0ZWdvcnkpCi0rewotKyAgcmV0dXJuIERDSUdFVFRFWFQgKGRvbWFpbm5hbWUsIG1zZ2lkMSwgbXNnaWQyLCAxLCBuLCBjYXRlZ29yeSk7Ci0rfQotKwotKyNpZmRlZiBfTElCQwotKy8qIEFsaWFzIGZvciBmdW5jdGlvbiBuYW1lIGluIEdOVSBDIExpYnJhcnkuICAqLwotK3dlYWtfYWxpYXMgKF9fZGNuZ2V0dGV4dCwgZGNuZ2V0dGV4dCk7Ci0rI2VuZGlmCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvZGdldHRleHQuYwkxOTk4LTA0LTI2IDA5OjIwOjUyLjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9kZ2V0dGV4dC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuMzgwNzQ0Mjg4IC0wNDAwCi1AQCAtMSwzMiArMSwzMyBAQAotLS8qIGRnZXR0ZXh0LmMgLS0gaW1wbGVtZW50YXRpb24gb2YgdGhlIGRnZXR0ZXh0KDMpIGZ1bmN0aW9uCi0tICAgQ29weXJpZ2h0IChDKSAxOTk1IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGdldHRleHQoMykgZnVuY3Rpb24uCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTcsIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS1UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLWl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLWFueSBsYXRlciB2ZXJzaW9uLgotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS1UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS1idXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLU1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS1HTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS1Zb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLWFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0tRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQgSEFWRV9MT0NBTEVfSCB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpbmNsdWRlIDxsb2NhbGUuaD4KLS0jZW5kaWYKLSsjaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLSsKLSsjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gCi0gI2lmZGVmIF9MSUJDCi0gIyBpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2Vsc2UKLS0jIGluY2x1ZGUgImxpYmdldHRleHQuaCIKLSsjIGluY2x1ZGUgImxpYmdudWludGwuaCIKLSAjZW5kaWYKLSAKLSAvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi1AQCAtMzcsMTggKzM4LDE2IEBACi0gICAgcHJlZml4LiAgU28gd2UgaGF2ZSB0byBtYWtlIGEgZGlmZmVyZW5jZSBoZXJlLiAgKi8KLSAjaWZkZWYgX0xJQkMKLSAjIGRlZmluZSBER0VUVEVYVCBfX2RnZXR0ZXh0Ci0tIyBkZWZpbmUgRENHRVRURVhUIF9fZGNnZXR0ZXh0Ci0rIyBkZWZpbmUgRENHRVRURVhUIElOVFVTRShfX2RjZ2V0dGV4dCkKLSAjZWxzZQotLSMgZGVmaW5lIERHRVRURVhUIGRnZXR0ZXh0X18KLS0jIGRlZmluZSBEQ0dFVFRFWFQgZGNnZXR0ZXh0X18KLSsjIGRlZmluZSBER0VUVEVYVCBsaWJpbnRsX2RnZXR0ZXh0Ci0rIyBkZWZpbmUgRENHRVRURVhUIGxpYmludGxfZGNnZXR0ZXh0Ci0gI2VuZGlmCi0gCi0gLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgb2YgdGhlIGN1cnJlbnQKLSAgICBMQ19NRVNTQUdFUyBsb2NhbGUuICAqLwotIGNoYXIgKgotLURHRVRURVhUIChkb21haW5uYW1lLCBtc2dpZCkKLS0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7Ci0tICAgICBjb25zdCBjaGFyICptc2dpZDsKLStER0VUVEVYVCAoY29uc3QgY2hhciAqZG9tYWlubmFtZSwgY29uc3QgY2hhciAqbXNnaWQpCi0gewotICAgcmV0dXJuIERDR0VUVEVYVCAoZG9tYWlubmFtZSwgbXNnaWQsIExDX01FU1NBR0VTKTsKLSB9Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvZG5nZXR0ZXh0LmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvZG5nZXR0ZXh0LmMJMjAwNC0wOS0xMiAxNDo0MDozNC4zODU3NDM1MjggLTA0MDAKLUBAIC0wLDAgKzEsNTkgQEAKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZG5nZXR0ZXh0KDMpIGZ1bmN0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMTk5NS0xOTk3LCAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLSsKLSsjaW5jbHVkZSA8bG9jYWxlLmg+Ci0rCi0rI2lmZGVmIF9MSUJDCi0rIyBpbmNsdWRlIDxsaWJpbnRsLmg+Ci0rI2Vsc2UKLSsjIGluY2x1ZGUgImxpYmdudWludGwuaCIKLSsjZW5kaWYKLSsKLSsvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0rCi0rLyogTmFtZXMgZm9yIHRoZSBsaWJpbnRsIGZ1bmN0aW9ucyBhcmUgYSBwcm9ibGVtLiAgVGhleSBtdXN0IG5vdCBjbGFzaAotKyAgIHdpdGggZXhpc3RpbmcgbmFtZXMgYW5kIHRoZXkgc2hvdWxkIGZvbGxvdyBBTlNJIEMuICBCdXQgdGhpcyBzb3VyY2UKLSsgICBjb2RlIGlzIGFsc28gdXNlZCBpbiBHTlUgQyBMaWJyYXJ5IHdoZXJlIHRoZSBuYW1lcyBoYXZlIGEgX18KLSsgICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLwotKyNpZmRlZiBfTElCQwotKyMgZGVmaW5lIEROR0VUVEVYVCBfX2RuZ2V0dGV4dAotKyMgZGVmaW5lIERDTkdFVFRFWFQgX19kY25nZXR0ZXh0Ci0rI2Vsc2UKLSsjIGRlZmluZSBETkdFVFRFWFQgbGliaW50bF9kbmdldHRleHQKLSsjIGRlZmluZSBEQ05HRVRURVhUIGxpYmludGxfZGNuZ2V0dGV4dAotKyNlbmRpZgotKwotKy8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIG9mIHRoZSBjdXJyZW50Ci0rICAgTENfTUVTU0FHRVMgbG9jYWxlIGFuZCBza2lwIG1lc3NhZ2UgYWNjb3JkaW5nIHRvIHRoZSBwbHVyYWwgZm9ybS4gICovCi0rY2hhciAqCi0rRE5HRVRURVhUIChjb25zdCBjaGFyICpkb21haW5uYW1lLAotKwkgICBjb25zdCBjaGFyICptc2dpZDEsIGNvbnN0IGNoYXIgKm1zZ2lkMiwgdW5zaWduZWQgbG9uZyBpbnQgbikKLSt7Ci0rICByZXR1cm4gRENOR0VUVEVYVCAoZG9tYWlubmFtZSwgbXNnaWQxLCBtc2dpZDIsIG4sIExDX01FU1NBR0VTKTsKLSt9Ci0rCi0rI2lmZGVmIF9MSUJDCi0rLyogQWxpYXMgZm9yIGZ1bmN0aW9uIG5hbWUgaW4gR05VIEMgTGlicmFyeS4gICovCi0rd2Vha19hbGlhcyAoX19kbmdldHRleHQsIGRuZ2V0dGV4dCk7Ci0rI2VuZGlmCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvZXZhbC1wbHVyYWwuaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9ldmFsLXBsdXJhbC5oCTIwMDQtMDktMTIgMTQ6NDA6MzQuMzkwNzQyNzY4IC0wNDAwCi1AQCAtMCwwICsxLDEwOCBAQAotKy8qIFBsdXJhbCBleHByZXNzaW9uIGV2YWx1YXRpb24uCi0rICAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZm5kZWYgU1RBVElDCi0rI2RlZmluZSBTVEFUSUMgc3RhdGljCi0rI2VuZGlmCi0rCi0rLyogRXZhbHVhdGUgdGhlIHBsdXJhbCBleHByZXNzaW9uIGFuZCByZXR1cm4gYW4gaW5kZXggdmFsdWUuICAqLwotK1NUQVRJQwotK3Vuc2lnbmVkIGxvbmcgaW50Ci0raW50ZXJuYWxfZnVuY3Rpb24KLStwbHVyYWxfZXZhbCAoc3RydWN0IGV4cHJlc3Npb24gKnBleHAsIHVuc2lnbmVkIGxvbmcgaW50IG4pCi0rewotKyAgc3dpdGNoIChwZXhwLT5uYXJncykKLSsgICAgewotKyAgICBjYXNlIDA6Ci0rICAgICAgc3dpdGNoIChwZXhwLT5vcGVyYXRpb24pCi0rCXsKLSsJY2FzZSB2YXI6Ci0rCSAgcmV0dXJuIG47Ci0rCWNhc2UgbnVtOgotKwkgIHJldHVybiBwZXhwLT52YWwubnVtOwotKwlkZWZhdWx0OgotKwkgIGJyZWFrOwotKwl9Ci0rICAgICAgLyogTk9UUkVBQ0hFRCAqLwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDE6Ci0rICAgICAgewotKwkvKiBwZXhwLT5vcGVyYXRpb24gbXVzdCBiZSBsbm90LiAgKi8KLSsJdW5zaWduZWQgbG9uZyBpbnQgYXJnID0gcGx1cmFsX2V2YWwgKHBleHAtPnZhbC5hcmdzWzBdLCBuKTsKLSsJcmV0dXJuICEgYXJnOwotKyAgICAgIH0KLSsgICAgY2FzZSAyOgotKyAgICAgIHsKLSsJdW5zaWduZWQgbG9uZyBpbnQgbGVmdGFyZyA9IHBsdXJhbF9ldmFsIChwZXhwLT52YWwuYXJnc1swXSwgbik7Ci0rCWlmIChwZXhwLT5vcGVyYXRpb24gPT0gbG9yKQotKwkgIHJldHVybiBsZWZ0YXJnIHx8IHBsdXJhbF9ldmFsIChwZXhwLT52YWwuYXJnc1sxXSwgbik7Ci0rCWVsc2UgaWYgKHBleHAtPm9wZXJhdGlvbiA9PSBsYW5kKQotKwkgIHJldHVybiBsZWZ0YXJnICYmIHBsdXJhbF9ldmFsIChwZXhwLT52YWwuYXJnc1sxXSwgbik7Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICB1bnNpZ25lZCBsb25nIGludCByaWdodGFyZyA9IHBsdXJhbF9ldmFsIChwZXhwLT52YWwuYXJnc1sxXSwgbik7Ci0rCi0rCSAgICBzd2l0Y2ggKHBleHAtPm9wZXJhdGlvbikKLSsJICAgICAgewotKwkgICAgICBjYXNlIG11bHQ6Ci0rCQlyZXR1cm4gbGVmdGFyZyAqIHJpZ2h0YXJnOwotKwkgICAgICBjYXNlIGRpdmlkZToKLSsjaWYgIUlOVERJVjBfUkFJU0VTX1NJR0ZQRQotKwkJaWYgKHJpZ2h0YXJnID09IDApCi0rCQkgIHJhaXNlIChTSUdGUEUpOwotKyNlbmRpZgotKwkJcmV0dXJuIGxlZnRhcmcgLyByaWdodGFyZzsKLSsJICAgICAgY2FzZSBtb2R1bGU6Ci0rI2lmICFJTlRESVYwX1JBSVNFU19TSUdGUEUKLSsJCWlmIChyaWdodGFyZyA9PSAwKQotKwkJICByYWlzZSAoU0lHRlBFKTsKLSsjZW5kaWYKLSsJCXJldHVybiBsZWZ0YXJnICUgcmlnaHRhcmc7Ci0rCSAgICAgIGNhc2UgcGx1czoKLSsJCXJldHVybiBsZWZ0YXJnICsgcmlnaHRhcmc7Ci0rCSAgICAgIGNhc2UgbWludXM6Ci0rCQlyZXR1cm4gbGVmdGFyZyAtIHJpZ2h0YXJnOwotKwkgICAgICBjYXNlIGxlc3NfdGhhbjoKLSsJCXJldHVybiBsZWZ0YXJnIDwgcmlnaHRhcmc7Ci0rCSAgICAgIGNhc2UgZ3JlYXRlcl90aGFuOgotKwkJcmV0dXJuIGxlZnRhcmcgPiByaWdodGFyZzsKLSsJICAgICAgY2FzZSBsZXNzX29yX2VxdWFsOgotKwkJcmV0dXJuIGxlZnRhcmcgPD0gcmlnaHRhcmc7Ci0rCSAgICAgIGNhc2UgZ3JlYXRlcl9vcl9lcXVhbDoKLSsJCXJldHVybiBsZWZ0YXJnID49IHJpZ2h0YXJnOwotKwkgICAgICBjYXNlIGVxdWFsOgotKwkJcmV0dXJuIGxlZnRhcmcgPT0gcmlnaHRhcmc7Ci0rCSAgICAgIGNhc2Ugbm90X2VxdWFsOgotKwkJcmV0dXJuIGxlZnRhcmcgIT0gcmlnaHRhcmc7Ci0rCSAgICAgIGRlZmF1bHQ6Ci0rCQlicmVhazsKLSsJICAgICAgfQotKwkgIH0KLSsJLyogTk9UUkVBQ0hFRCAqLwotKwlicmVhazsKLSsgICAgICB9Ci0rICAgIGNhc2UgMzoKLSsgICAgICB7Ci0rCS8qIHBleHAtPm9wZXJhdGlvbiBtdXN0IGJlIHFtb3AuICAqLwotKwl1bnNpZ25lZCBsb25nIGludCBib29sYXJnID0gcGx1cmFsX2V2YWwgKHBleHAtPnZhbC5hcmdzWzBdLCBuKTsKLSsJcmV0dXJuIHBsdXJhbF9ldmFsIChwZXhwLT52YWwuYXJnc1tib29sYXJnID8gMSA6IDJdLCBuKTsKLSsgICAgICB9Ci0rICAgIH0KLSsgIC8qIE5PVFJFQUNIRUQgKi8KLSsgIHJldHVybiAwOwotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9leHBsb2RlbmFtZS5jCTE5OTgtMDQtMjYgMDk6MjI6MzcuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2V4cGxvZGVuYW1lLmMJMjAwNC0wOS0xMiAxNDo0MDozNC4zOTU3NDIwMDggLTA0MDAKLUBAIC0xLDE5ICsxLDIwIEBACi0tLyogQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIENvcHlyaWdodCAoQykgMTk5NS0xOTk4LCAyMDAwLTIwMDEsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gICAgQ29udHJpYnV0ZWQgYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgotIAotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgIGFueSBsYXRlciB2ZXJzaW9uLgotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgaW5jbHVkZSA8Y29uZmlnLmg+Ci1AQCAtMzYsMTggKzM3LDIzIEBACi0gCi0gLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotIAotK2NoYXIgKgotK19ubF9maW5kX2xhbmd1YWdlIChjb25zdCBjaGFyICpuYW1lKQotK3sKLSsgIHdoaWxlIChuYW1lWzBdICE9ICdcMCcgJiYgbmFtZVswXSAhPSAnXycgJiYgbmFtZVswXSAhPSAnQCcKLSsJICYmIG5hbWVbMF0gIT0gJysnICYmIG5hbWVbMF0gIT0gJywnKQotKyAgICArK25hbWU7Ci0rCi0rICByZXR1cm4gKGNoYXIgKikgbmFtZTsKLSt9Ci0rCi0rCi0gaW50Ci0tX25sX2V4cGxvZGVfbmFtZSAobmFtZSwgbGFuZ3VhZ2UsIG1vZGlmaWVyLCB0ZXJyaXRvcnksIGNvZGVzZXQsCi0tCQkgIG5vcm1hbGl6ZWRfY29kZXNldCwgc3BlY2lhbCwgc3BvbnNvciwgcmV2aXNpb24pCi0tICAgICBjaGFyICpuYW1lOwotLSAgICAgY29uc3QgY2hhciAqKmxhbmd1YWdlOwotLSAgICAgY29uc3QgY2hhciAqKm1vZGlmaWVyOwotLSAgICAgY29uc3QgY2hhciAqKnRlcnJpdG9yeTsKLS0gICAgIGNvbnN0IGNoYXIgKipjb2Rlc2V0OwotLSAgICAgY29uc3QgY2hhciAqKm5vcm1hbGl6ZWRfY29kZXNldDsKLS0gICAgIGNvbnN0IGNoYXIgKipzcGVjaWFsOwotLSAgICAgY29uc3QgY2hhciAqKnNwb25zb3I7Ci0tICAgICBjb25zdCBjaGFyICoqcmV2aXNpb247Ci0rX25sX2V4cGxvZGVfbmFtZSAoY2hhciAqbmFtZSwKLSsJCSAgY29uc3QgY2hhciAqKmxhbmd1YWdlLCBjb25zdCBjaGFyICoqbW9kaWZpZXIsCi0rCQkgIGNvbnN0IGNoYXIgKip0ZXJyaXRvcnksIGNvbnN0IGNoYXIgKipjb2Rlc2V0LAotKwkJICBjb25zdCBjaGFyICoqbm9ybWFsaXplZF9jb2Rlc2V0LCBjb25zdCBjaGFyICoqc3BlY2lhbCwKLSsJCSAgY29uc3QgY2hhciAqKnNwb25zb3IsIGNvbnN0IGNoYXIgKipyZXZpc2lvbikKLSB7Ci0gICBlbnVtIHsgdW5kZWNpZGVkLCB4cGcsIGNlbiB9IHN5bnRheDsKLSAgIGNoYXIgKmNwOwotQEAgLTY3LDkgKzczLDcgQEAKLSAgIG1hc2sgPSAwOwotICAgc3ludGF4ID0gdW5kZWNpZGVkOwotICAgKmxhbmd1YWdlID0gY3AgPSBuYW1lOwotLSAgd2hpbGUgKGNwWzBdICE9ICdcMCcgJiYgY3BbMF0gIT0gJ18nICYmIGNwWzBdICE9ICdAJwotLQkgJiYgY3BbMF0gIT0gJysnICYmIGNwWzBdICE9ICcsJykKLS0gICAgKytjcDsKLSsgIGNwID0gX25sX2ZpbmRfbGFuZ3VhZ2UgKCpsYW5ndWFnZSk7Ci0gCi0gICBpZiAoKmxhbmd1YWdlID09IGNwKQotICAgICAvKiBUaGlzIGRvZXMgbm90IG1ha2Ugc2Vuc2U6IGxhbmd1YWdlIGhhcyB0byBiZSBzcGVjaWZpZWQuICBVc2UKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9maW5kZG9tYWluLmMJMTk5OC0wNC0yNiAwOToyMjozNi4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvZmluZGRvbWFpbi5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNDE1NzM4OTY4IC0wNDAwCi1AQCAtMSw2NCArMSw0MCBAQAotIC8qIEhhbmRsZSBsaXN0IG9mIG5lZWRlZCBtZXNzYWdlIGNhdGFsb2dzCi0tICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLSAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgotKyAgIENvcHlyaWdodCAoQykgMTk5NS0xOTk5LCAyMDAwLTIwMDEsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUub3JnPiwgMTk5NS4KLSAKLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSAgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLSAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotLSNpbmNsdWRlIDxjdHlwZS5oPgotLSNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0KLS0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBfTElCQwotLSMgaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2Vsc2UKLS0jIGlmZGVmIEhBVkVfTUFMTE9DX0gKLS0jICBpbmNsdWRlIDxtYWxsb2MuaD4KLS0jIGVsc2UKLS12b2lkIGZyZWUgKCk7Ci0tIyBlbmRpZgotLSNlbmRpZgotLQotLSNpZiBkZWZpbmVkIEhBVkVfU1RSSU5HX0ggfHwgZGVmaW5lZCBfTElCQwotLSMgaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2Vsc2UKLS0jIGluY2x1ZGUgPHN0cmluZ3MuaD4KLS0jIGlmbmRlZiBtZW1jcHkKLS0jICBkZWZpbmUgbWVtY3B5KERzdCwgU3JjLCBOdW0pIGJjb3B5IChTcmMsIERzdCwgTnVtKQotLSMgZW5kaWYKLS0jZW5kaWYKLS0jaWYgIUhBVkVfU1RSQ0hSICYmICFkZWZpbmVkIF9MSUJDCi0tIyBpZm5kZWYgc3RyY2hyCi0tIyAgZGVmaW5lIHN0cmNociBpbmRleAotLSMgZW5kaWYKLS0jZW5kaWYKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotIAotICNpZiBkZWZpbmVkIEhBVkVfVU5JU1REX0ggfHwgZGVmaW5lZCBfTElCQwotICMgaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2VuZGlmCi0gCi0tI2luY2x1ZGUgImdldHRleHQuaCIKLSAjaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLSAjaWZkZWYgX0xJQkMKLSAjIGluY2x1ZGUgPGxpYmludGwuaD4KLSAjZWxzZQotLSMgaW5jbHVkZSAibGliZ2V0dGV4dC5oIgotKyMgaW5jbHVkZSAibGliZ251aW50bC5oIgotICNlbmRpZgotIAotIC8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLUBAIC03MCwxMCArNDYsOSBAQAotICAgIHRoZSBET01BSU5OQU1FIGFuZCBDQVRFR09SWSBwYXJhbWV0ZXJzIHdpdGggcmVzcGVjdCB0byB0aGUgY3VycmVudGx5Ci0gICAgZXN0YWJsaXNoZWQgYmluZGluZ3MuICAqLwotIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKgotLV9ubF9maW5kX2RvbWFpbiAoZGlybmFtZSwgbG9jYWxlLCBkb21haW5uYW1lKQotLSAgICAgY29uc3QgY2hhciAqZGlybmFtZTsKLS0gICAgIGNoYXIgKmxvY2FsZTsKLS0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7Ci0raW50ZXJuYWxfZnVuY3Rpb24KLStfbmxfZmluZF9kb21haW4gKGNvbnN0IGNoYXIgKmRpcm5hbWUsIGNoYXIgKmxvY2FsZSwKLSsJCSBjb25zdCBjaGFyICpkb21haW5uYW1lLCBzdHJ1Y3QgYmluZGluZyAqZG9tYWluYmluZGluZykKLSB7Ci0gICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpyZXR2YWw7Ci0gICBjb25zdCBjaGFyICpsYW5ndWFnZTsKLUBAIC05NSw5ICs3MCw5IEBACi0gCi0gCWxhbmd1YWdlW190ZXJyaXRvcnldWythdWRpZW5jZV1bK3NwZWNpYWxdWyxbc3BvbnNvcl1bX3JldmlzaW9uXV0KLSAKLS0gICAgIEJlc2lkZSB0aGUgZmlyc3QgYWxsIG9mIHRoZW0gYXJlIGFsbG93ZWQgdG8gYmUgbWlzc2luZy4gIElmIHRoZQotLSAgICAgZnVsbCBzcGVjaWZpZWQgbG9jYWxlIGlzIG5vdCBmb3VuZCwgdGhlIGxlc3Mgc3BlY2lmaWMgb25lIGFyZQotLSAgICAgbG9va2VkIGZvci4gIFRoZSB2YXJpb3VzIHBhcnQgd2lsbCBiZSBzdHJpcHBlZCBvZiBhY2NvcmRpbmcgdG8KLSsgICAgIEJlc2lkZSB0aGUgZmlyc3QgcGFydCBhbGwgb2YgdGhlbSBhcmUgYWxsb3dlZCB0byBiZSBtaXNzaW5nLiAgSWYKLSsgICAgIHRoZSBmdWxsIHNwZWNpZmllZCBsb2NhbGUgaXMgbm90IGZvdW5kLCB0aGUgbGVzcyBzcGVjaWZpYyBvbmUgYXJlCi0rICAgICBsb29rZWQgZm9yLiAgVGhlIHZhcmlvdXMgcGFydHMgd2lsbCBiZSBzdHJpcHBlZCBvZmYgYWNjb3JkaW5nIHRvCi0gICAgICB0aGUgZm9sbG93aW5nIG9yZGVyOgotIAkJKDEpIHJldmlzaW9uCi0gCQkoMikgc3BvbnNvcgotQEAgLTExOSw3ICs5NCw3IEBACi0gICAgICAgaW50IGNudDsKLSAKLSAgICAgICBpZiAocmV0dmFsLT5kZWNpZGVkID09IDApCi0tCV9ubF9sb2FkX2RvbWFpbiAocmV0dmFsKTsKLSsJX25sX2xvYWRfZG9tYWluIChyZXR2YWwsIGRvbWFpbmJpbmRpbmcpOwotIAotICAgICAgIGlmIChyZXR2YWwtPmRhdGEgIT0gTlVMTCkKLSAJcmV0dXJuIHJldHZhbDsKLUBAIC0xMjcsNyArMTAyLDcgQEAKLSAgICAgICBmb3IgKGNudCA9IDA7IHJldHZhbC0+c3VjY2Vzc29yW2NudF0gIT0gTlVMTDsgKytjbnQpCi0gCXsKLSAJICBpZiAocmV0dmFsLT5zdWNjZXNzb3JbY250XS0+ZGVjaWRlZCA9PSAwKQotLQkgICAgX25sX2xvYWRfZG9tYWluIChyZXR2YWwtPnN1Y2Nlc3NvcltjbnRdKTsKLSsJICAgIF9ubF9sb2FkX2RvbWFpbiAocmV0dmFsLT5zdWNjZXNzb3JbY250XSwgZG9tYWluYmluZGluZyk7Ci0gCi0gCSAgaWYgKHJldHZhbC0+c3VjY2Vzc29yW2NudF0tPmRhdGEgIT0gTlVMTCkKLSAJICAgIGJyZWFrOwotQEAgLTE0MiwxMiArMTE3LDE4IEBACi0gICBhbGlhc192YWx1ZSA9IF9ubF9leHBhbmRfYWxpYXMgKGxvY2FsZSk7Ci0gICBpZiAoYWxpYXNfdmFsdWUgIT0gTlVMTCkKLSAgICAgewotKyNpZiBkZWZpbmVkIF9MSUJDIHx8IGRlZmluZWQgSEFWRV9TVFJEVVAKLSsgICAgICBsb2NhbGUgPSBzdHJkdXAgKGFsaWFzX3ZhbHVlKTsKLSsgICAgICBpZiAobG9jYWxlID09IE5VTEwpCi0rCXJldHVybiBOVUxMOwotKyNlbHNlCi0gICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoYWxpYXNfdmFsdWUpICsgMTsKLSAgICAgICBsb2NhbGUgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7Ci0gICAgICAgaWYgKGxvY2FsZSA9PSBOVUxMKQotIAlyZXR1cm4gTlVMTDsKLSAKLSAgICAgICBtZW1jcHkgKGxvY2FsZSwgYWxpYXNfdmFsdWUsIGxlbik7Ci0rI2VuZGlmCi0gICAgIH0KLSAKLSAgIC8qIE5vdyB3ZSBkZXRlcm1pbmUgdGhlIHNpbmdsZSBwYXJ0cyBvZiB0aGUgbG9jYWxlIG5hbWUuICBGaXJzdAotQEAgLTE2OCwxNCArMTQ5LDE0IEBACi0gICAgIHJldHVybiBOVUxMOwotIAotICAgaWYgKHJldHZhbC0+ZGVjaWRlZCA9PSAwKQotLSAgICBfbmxfbG9hZF9kb21haW4gKHJldHZhbCk7Ci0rICAgIF9ubF9sb2FkX2RvbWFpbiAocmV0dmFsLCBkb21haW5iaW5kaW5nKTsKLSAgIGlmIChyZXR2YWwtPmRhdGEgPT0gTlVMTCkKLSAgICAgewotICAgICAgIGludCBjbnQ7Ci0gICAgICAgZm9yIChjbnQgPSAwOyByZXR2YWwtPnN1Y2Nlc3NvcltjbnRdICE9IE5VTEw7ICsrY250KQotIAl7Ci0gCSAgaWYgKHJldHZhbC0+c3VjY2Vzc29yW2NudF0tPmRlY2lkZWQgPT0gMCkKLS0JICAgIF9ubF9sb2FkX2RvbWFpbiAocmV0dmFsLT5zdWNjZXNzb3JbY250XSk7Ci0rCSAgICBfbmxfbG9hZF9kb21haW4gKHJldHZhbC0+c3VjY2Vzc29yW2NudF0sIGRvbWFpbmJpbmRpbmcpOwotIAkgIGlmIChyZXR2YWwtPnN1Y2Nlc3NvcltjbnRdLT5kYXRhICE9IE5VTEwpCi0gCSAgICBicmVhazsKLSAJfQotQEAgLTE4NSw1ICsxNjYsMjcgQEAKLSAgIGlmIChhbGlhc192YWx1ZSAhPSBOVUxMKQotICAgICBmcmVlIChsb2NhbGUpOwotIAotKyAgLyogVGhlIHNwYWNlIGZvciBub3JtYWxpemVkX2NvZGVzZXQgaXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkLiAgRnJlZSBpdC4gICovCi0rICBpZiAobWFzayAmIFhQR19OT1JNX0NPREVTRVQpCi0rICAgIGZyZWUgKCh2b2lkICopIG5vcm1hbGl6ZWRfY29kZXNldCk7Ci0rCi0gICByZXR1cm4gcmV0dmFsOwotIH0KLSsKLSsKLSsjaWZkZWYgX0xJQkMKLStsaWJjX2ZyZWVyZXNfZm4gKGZyZWVfbWVtKQotK3sKLSsgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKnJ1bnAgPSBfbmxfbG9hZGVkX2RvbWFpbnM7Ci0rCi0rICB3aGlsZSAocnVucCAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqaGVyZSA9IHJ1bnA7Ci0rICAgICAgaWYgKHJ1bnAtPmRhdGEgIT0gTlVMTCkKLSsJX25sX3VubG9hZF9kb21haW4gKChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqKSBydW5wLT5kYXRhKTsKLSsgICAgICBydW5wID0gcnVucC0+bmV4dDsKLSsgICAgICBmcmVlICgoY2hhciAqKSBoZXJlLT5maWxlbmFtZSk7Ci0rICAgICAgZnJlZSAoaGVyZSk7Ci0rICAgIH0KLSt9Ci0rI2VuZGlmCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvZ2V0dGV4dC5jCTE5OTgtMDQtMjYgMDk6MjI6MzYuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2dldHRleHQuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjQyMDczODIwOCAtMDQwMAotQEAgLTEsMTkgKzEsMjAgQEAKLS0vKiBJbXBsZW1lbnRhdGlvbiBvZiBnZXR0ZXh0KDMpIGZ1bmN0aW9uCi0tICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIEltcGxlbWVudGF0aW9uIG9mIGdldHRleHQoMykgZnVuY3Rpb24uCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk3LCAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0gICAgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0gICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLUBAIC0yMywyMSArMjQsMTQgQEAKLSAjIGRlZmluZSBfX25lZWRfTlVMTAotICMgaW5jbHVkZSA8c3RkZGVmLmg+Ci0gI2Vsc2UKLS0jIGlmZGVmIFNURENfSEVBREVSUwotLSMgIGluY2x1ZGUgPHN0ZGxpYi5oPgkJLyogSnVzdCBmb3IgTlVMTC4gICovCi0tIyBlbHNlCi0tIyAgaWZkZWYgSEFWRV9TVFJJTkdfSAotLSMgICBpbmNsdWRlIDxzdHJpbmcuaD4KLS0jICBlbHNlCi0tIyAgIGRlZmluZSBOVUxMICgodm9pZCAqKSAwKQotLSMgIGVuZGlmCi0tIyBlbmRpZgotKyMgaW5jbHVkZSA8c3RkbGliLmg+CQkvKiBKdXN0IGZvciBOVUxMLiAgKi8KLSAjZW5kaWYKLSAKLSsjaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLSAjaWZkZWYgX0xJQkMKLSAjIGluY2x1ZGUgPGxpYmludGwuaD4KLSAjZWxzZQotLSMgaW5jbHVkZSAibGliZ2V0dGV4dC5oIgotKyMgaW5jbHVkZSAibGliZ251aW50bC5oIgotICNlbmRpZgotIAotIC8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLUBAIC00OCwyMCArNDIsMTkgQEAKLSAgICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLwotICNpZmRlZiBfTElCQwotICMgZGVmaW5lIEdFVFRFWFQgX19nZXR0ZXh0Ci0tIyBkZWZpbmUgREdFVFRFWFQgX19kZ2V0dGV4dAotKyMgZGVmaW5lIERDR0VUVEVYVCBJTlRVU0UoX19kY2dldHRleHQpCi0gI2Vsc2UKLS0jIGRlZmluZSBHRVRURVhUIGdldHRleHRfXwotLSMgZGVmaW5lIERHRVRURVhUIGRnZXR0ZXh0X18KLSsjIGRlZmluZSBHRVRURVhUIGxpYmludGxfZ2V0dGV4dAotKyMgZGVmaW5lIERDR0VUVEVYVCBsaWJpbnRsX2RjZ2V0dGV4dAotICNlbmRpZgotIAotIC8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIGN1cnJlbnQgZGVmYXVsdCBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50Ci0gICAgTENfTUVTU0FHRVMgbG9jYWxlLiAgSWYgbm90IGZvdW5kLCByZXR1cm5zIE1TR0lEIGl0c2VsZiAodGhlIGRlZmF1bHQKLSAgICB0ZXh0KS4gICovCi0gY2hhciAqCi0tR0VUVEVYVCAobXNnaWQpCi0tICAgICBjb25zdCBjaGFyICptc2dpZDsKLStHRVRURVhUIChjb25zdCBjaGFyICptc2dpZCkKLSB7Ci0tICByZXR1cm4gREdFVFRFWFQgKE5VTEwsIG1zZ2lkKTsKLSsgIHJldHVybiBEQ0dFVFRFWFQgKE5VTEwsIG1zZ2lkLCBMQ19NRVNTQUdFUyk7Ci0gfQotIAotICNpZmRlZiBfTElCQwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2dldHRleHQuaAkxOTk4LTA0LTI2IDA5OjIyOjM1LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9nZXR0ZXh0LmgJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLUBAIC0xLDEwNSArMCwwIEBACi0tLyogSW50ZXJuYWwgaGVhZGVyIGZvciBHTlUgZ2V0dGV4dCBpbnRlcm5hdGlvbmFsaXphdGlvbiBmdW5jdGlvbnMKLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLS0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0tICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsCi0tICAgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotLSAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLS0KLS0jaWZuZGVmIF9HRVRURVhUX0gKLS0jZGVmaW5lIF9HRVRURVhUX0ggMQotLQotLSNpbmNsdWRlIDxzdGRpby5oPgotLQotLSNpZiBIQVZFX0xJTUlUU19IIHx8IF9MSUJDCi0tIyBpbmNsdWRlIDxsaW1pdHMuaD4KLS0jZW5kaWYKLS0KLS0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0tCi0tLyogVGhlIG1hZ2ljIG51bWJlciBvZiB0aGUgR05VIG1lc3NhZ2UgY2F0YWxvZyBmb3JtYXQuICAqLwotLSNkZWZpbmUgX01BR0lDIDB4OTUwNDEyZGUKLS0jZGVmaW5lIF9NQUdJQ19TV0FQUEVEIDB4ZGUxMjA0OTUKLS0KLS0vKiBSZXZpc2lvbiBudW1iZXIgb2YgdGhlIGN1cnJlbnRseSB1c2VkIC5tbyAoYmluYXJ5KSBmaWxlIGZvcm1hdC4gICovCi0tI2RlZmluZSBNT19SRVZJU0lPTl9OVU1CRVIgMAotLQotLS8qIFRoZSBmb2xsb3dpbmcgY29udG9ydGlvbnMgYXJlIGFuIGF0dGVtcHQgdG8gdXNlIHRoZSBDIHByZXByb2Nlc3NvcgotLSAgIHRvIGRldGVybWluZSBhbiB1bnNpZ25lZCBpbnRlZ3JhbCB0eXBlIHRoYXQgaXMgMzIgYml0cyB3aWRlLiAgQW4KLS0gICBhbHRlcm5hdGl2ZSBhcHByb2FjaCBpcyB0byB1c2UgYXV0b2NvbmYncyBBQ19DSEVDS19TSVpFT0YgbWFjcm8sIGJ1dAotLSAgIGRvaW5nIHRoYXQgd291bGQgcmVxdWlyZSB0aGF0IHRoZSBjb25maWd1cmUgc2NyaXB0IGNvbXBpbGUgYW5kICpydW4qCi0tICAgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlLiAgTG9jYWxseSBydW5uaW5nIGNyb3NzLWNvbXBpbGVkIGV4ZWN1dGFibGVzCi0tICAgaXMgdXN1YWxseSBub3QgcG9zc2libGUuICAqLwotLQotLSNpZiBfX1NURENfXwotLSMgZGVmaW5lIFVJTlRfTUFYXzMyX0JJVFMgNDI5NDk2NzI5NVUKLS0jZWxzZQotLSMgZGVmaW5lIFVJTlRfTUFYXzMyX0JJVFMgMHhGRkZGRkZGRgotLSNlbmRpZgotLQotLS8qIElmIFVJTlRfTUFYIGlzbid0IGRlZmluZWQsIGFzc3VtZSBpdCdzIGEgMzItYml0IHR5cGUuCi0tICAgVGhpcyBzaG91bGQgYmUgdmFsaWQgZm9yIGFsbCBzeXN0ZW1zIEdOVSBjYXJlcyBhYm91dCBiZWNhdXNlCi0tICAgdGhhdCBkb2Vzbid0IGluY2x1ZGUgMTYtYml0IHN5c3RlbXMsIGFuZCBvbmx5IG1vZGVybiBzeXN0ZW1zCi0tICAgKHRoYXQgY2VydGFpbmx5IGhhdmUgPGxpbWl0cy5oPikgaGF2ZSA2NCstYml0IGludGVncmFsIHR5cGVzLiAgKi8KLS0KLS0jaWZuZGVmIFVJTlRfTUFYCi0tIyBkZWZpbmUgVUlOVF9NQVggVUlOVF9NQVhfMzJfQklUUwotLSNlbmRpZgotLQotLSNpZiBVSU5UX01BWCA9PSBVSU5UX01BWF8zMl9CSVRTCi0tdHlwZWRlZiB1bnNpZ25lZCBubHNfdWludDMyOwotLSNlbHNlCi0tIyBpZiBVU0hSVF9NQVggPT0gVUlOVF9NQVhfMzJfQklUUwotLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgbmxzX3VpbnQzMjsKLS0jIGVsc2UKLS0jICBpZiBVTE9OR19NQVggPT0gVUlOVF9NQVhfMzJfQklUUwotLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBubHNfdWludDMyOwotLSMgIGVsc2UKLS0gIC8qIFRoZSBmb2xsb3dpbmcgbGluZSBpcyBpbnRlbmRlZCB0byB0aHJvdyBhbiBlcnJvci4gIFVzaW5nICNlcnJvciBpcwotLSAgICAgbm90IHBvcnRhYmxlIGVub3VnaC4gICovCi0tICAiQ2Fubm90IGRldGVybWluZSB1bnNpZ25lZCAzMi1iaXQgZGF0YSB0eXBlLiIKLS0jICBlbmRpZgotLSMgZW5kaWYKLS0jZW5kaWYKLS0KLS0KLS0vKiBIZWFkZXIgZm9yIGJpbmFyeSAubW8gZmlsZSBmb3JtYXQuICAqLwotLXN0cnVjdCBtb19maWxlX2hlYWRlcgotLXsKLS0gIC8qIFRoZSBtYWdpYyBudW1iZXIuICAqLwotLSAgbmxzX3VpbnQzMiBtYWdpYzsKLS0gIC8qIFRoZSByZXZpc2lvbiBudW1iZXIgb2YgdGhlIGZpbGUgZm9ybWF0LiAgKi8KLS0gIG5sc191aW50MzIgcmV2aXNpb247Ci0tICAvKiBUaGUgbnVtYmVyIG9mIHN0cmluZ3MgcGFpcnMuICAqLwotLSAgbmxzX3VpbnQzMiBuc3RyaW5nczsKLS0gIC8qIE9mZnNldCBvZiB0YWJsZSB3aXRoIHN0YXJ0IG9mZnNldHMgb2Ygb3JpZ2luYWwgc3RyaW5ncy4gICovCi0tICBubHNfdWludDMyIG9yaWdfdGFiX29mZnNldDsKLS0gIC8qIE9mZnNldCBvZiB0YWJsZSB3aXRoIHN0YXJ0IG9mZnNldHMgb2YgdHJhbnNsYXRpb24gc3RyaW5ncy4gICovCi0tICBubHNfdWludDMyIHRyYW5zX3RhYl9vZmZzZXQ7Ci0tICAvKiBTaXplIG9mIGhhc2hpbmcgdGFibGUuICAqLwotLSAgbmxzX3VpbnQzMiBoYXNoX3RhYl9zaXplOwotLSAgLyogT2Zmc2V0IG9mIGZpcnN0IGhhc2hpbmcgZW50cnkuICAqLwotLSAgbmxzX3VpbnQzMiBoYXNoX3RhYl9vZmZzZXQ7Ci0tfTsKLS0KLS1zdHJ1Y3Qgc3RyaW5nX2Rlc2MKLS17Ci0tICAvKiBMZW5ndGggb2YgYWRkcmVzc2VkIHN0cmluZy4gICovCi0tICBubHNfdWludDMyIGxlbmd0aDsKLS0gIC8qIE9mZnNldCBvZiBzdHJpbmcgaW4gZmlsZS4gICovCi0tICBubHNfdWludDMyIG9mZnNldDsKLS19OwotLQotLS8qIEBAIGJlZ2luIG9mIGVwaWxvZyBAQCAqLwotLQotLSNlbmRpZgkvKiBnZXR0ZXh0LmggICovCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvZ2V0dGV4dFAuaAkxOTk4LTA0LTI2IDA5OjIyOjM1LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9nZXR0ZXh0UC5oCTIwMDQtMDktMTIgMTQ6NDA6MzQuNDI2NzM3Mjk2IC0wNDAwCi1AQCAtMSwzMyArMSw1MyBAQAotLS8qIEhlYWRlciBkZXNjcmliaW5nIGludGVybmFscyBvZiBnZXR0ZXh0IGxpYnJhcnkKLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogSGVhZGVyIGRlc2NyaWJpbmcgaW50ZXJuYWxzIG9mIGxpYmludGwgbGlicmFyeS4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OSwgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDE5OTUuCi0gCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0gICAgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0gICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotIAotICNpZm5kZWYgX0dFVFRFWFRQX0gKLSAjZGVmaW5lIF9HRVRURVhUUF9ICi0gCi0rI2luY2x1ZGUgPHN0ZGRlZi5oPgkJLyogR2V0IHNpemVfdC4gICovCi0rCi0rI2lmZGVmIF9MSUJDCi0rIyBpbmNsdWRlICIuLi9pY29udi9nY29udl9pbnQuaCIKLSsjZWxzZQotKyMgaWYgSEFWRV9JQ09OVgotKyMgIGluY2x1ZGUgPGljb252Lmg+Ci0rIyBlbmRpZgotKyNlbmRpZgotKwotICNpbmNsdWRlICJsb2FkaW5mby5oIgotIAotKyNpbmNsdWRlICJnbW8uaCIJCS8qIEdldCBubHNfdWludDMyLiAgKi8KLSsKLSAvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0gCi0tI2lmbmRlZiBQQVJBTVMKLS0jIGlmIF9fU1REQ19fCi0tIyAgZGVmaW5lIFBBUkFNUyhhcmdzKSBhcmdzCi0tIyBlbHNlCi0tIyAgZGVmaW5lIFBBUkFNUyhhcmdzKSAoKQotLSMgZW5kaWYKLSsjaWZuZGVmIGludGVybmFsX2Z1bmN0aW9uCi0rIyBkZWZpbmUgaW50ZXJuYWxfZnVuY3Rpb24KLSsjZW5kaWYKLSsKLSsjaWZuZGVmIGF0dHJpYnV0ZV9oaWRkZW4KLSsjIGRlZmluZSBhdHRyaWJ1dGVfaGlkZGVuCi0rI2VuZGlmCi0rCi0rLyogVGVsbCB0aGUgY29tcGlsZXIgd2hlbiBhIGNvbmRpdGlvbmFsIG9yIGludGVnZXIgZXhwcmVzc2lvbiBpcwotKyAgIGFsbW9zdCBhbHdheXMgdHJ1ZSBvciBhbG1vc3QgYWx3YXlzIGZhbHNlLiAgKi8KLSsjaWZuZGVmIEhBVkVfQlVJTFRJTl9FWFBFQ1QKLSsjIGRlZmluZSBfX2J1aWx0aW5fZXhwZWN0KGV4cHIsIHZhbCkgKGV4cHIpCi0gI2VuZGlmCi0gCi0gI2lmbmRlZiBXCi1AQCAtMzUsMzggKzU1LDE2MCBAQAotICNlbmRpZgotIAotIAotLXN0YXRpYyBubHNfdWludDMyIFNXQVAgUEFSQU1TICgobmxzX3VpbnQzMiBpKSk7Ci0tCi0rI2lmZGVmIF9MSUJDCi0rIyBpbmNsdWRlIDxieXRlc3dhcC5oPgotKyMgZGVmaW5lIFNXQVAoaSkgYnN3YXBfMzIgKGkpCi0rI2Vsc2UKLSBzdGF0aWMgaW5saW5lIG5sc191aW50MzIKLSBTV0FQIChpKQotICAgICAgbmxzX3VpbnQzMiBpOwotIHsKLSAgIHJldHVybiAoaSA8PCAyNCkgfCAoKGkgJiAweGZmMDApIDw8IDgpIHwgKChpID4+IDgpICYgMHhmZjAwKSB8IChpID4+IDI0KTsKLSB9Ci0rI2VuZGlmCi0rCi0gCi0rLyogSW4tbWVtb3J5IHJlcHJlc2VudGF0aW9uIG9mIHN5c3RlbSBkZXBlbmRlbnQgc3RyaW5nLiAgKi8KLStzdHJ1Y3Qgc3lzZGVwX3N0cmluZ19kZXNjCi0rewotKyAgLyogTGVuZ3RoIG9mIGFkZHJlc3NlZCBzdHJpbmcsIGluY2x1ZGluZyB0aGUgdHJhaWxpbmcgTlVMLiAgKi8KLSsgIHNpemVfdCBsZW5ndGg7Ci0rICAvKiBQb2ludGVyIHRvIGFkZHJlc3NlZCBzdHJpbmcuICAqLwotKyAgY29uc3QgY2hhciAqcG9pbnRlcjsKLSt9OwotIAotKy8qIFRoZSByZXByZXNlbnRhdGlvbiBvZiBhbiBvcGVuZWQgbWVzc2FnZSBjYXRhbG9nLiAgKi8KLSBzdHJ1Y3QgbG9hZGVkX2RvbWFpbgotIHsKLSsgIC8qIFBvaW50ZXIgdG8gbWVtb3J5IGNvbnRhaW5pbmcgdGhlIC5tbyBmaWxlLiAgKi8KLSAgIGNvbnN0IGNoYXIgKmRhdGE7Ci0rICAvKiAxIGlmIHRoZSBtZW1vcnkgaXMgbW1hcCgpZWQsIDAgaWYgdGhlIG1lbW9yeSBpcyBtYWxsb2MoKWVkLiAgKi8KLSsgIGludCB1c2VfbW1hcDsKLSsgIC8qIFNpemUgb2YgbW1hcCgpZWQgbWVtb3J5LiAgKi8KLSsgIHNpemVfdCBtbWFwX3NpemU7Ci0rICAvKiAxIGlmIHRoZSAubW8gZmlsZSB1c2VzIGEgZGlmZmVyZW50IGVuZGlhbm5lc3MgdGhhbiB0aGlzIG1hY2hpbmUuICAqLwotICAgaW50IG11c3Rfc3dhcDsKLSsgIC8qIFBvaW50ZXIgdG8gYWRkaXRpb25hbCBtYWxsb2MoKWVkIG1lbW9yeS4gICovCi0rICB2b2lkICptYWxsb2NlZDsKLSsKLSsgIC8qIE51bWJlciBvZiBzdGF0aWMgc3RyaW5ncyBwYWlycy4gICovCi0gICBubHNfdWludDMyIG5zdHJpbmdzOwotLSAgc3RydWN0IHN0cmluZ19kZXNjICpvcmlnX3RhYjsKLS0gIHN0cnVjdCBzdHJpbmdfZGVzYyAqdHJhbnNfdGFiOwotKyAgLyogUG9pbnRlciB0byBkZXNjcmlwdG9ycyBvZiBvcmlnaW5hbCBzdHJpbmdzIGluIHRoZSBmaWxlLiAgKi8KLSsgIGNvbnN0IHN0cnVjdCBzdHJpbmdfZGVzYyAqb3JpZ190YWI7Ci0rICAvKiBQb2ludGVyIHRvIGRlc2NyaXB0b3JzIG9mIHRyYW5zbGF0ZWQgc3RyaW5ncyBpbiB0aGUgZmlsZS4gICovCi0rICBjb25zdCBzdHJ1Y3Qgc3RyaW5nX2Rlc2MgKnRyYW5zX3RhYjsKLSsKLSsgIC8qIE51bWJlciBvZiBzeXN0ZW0gZGVwZW5kZW50IHN0cmluZ3MgcGFpcnMuICAqLwotKyAgbmxzX3VpbnQzMiBuX3N5c2RlcF9zdHJpbmdzOwotKyAgLyogUG9pbnRlciB0byBkZXNjcmlwdG9ycyBvZiBvcmlnaW5hbCBzeXNkZXAgc3RyaW5ncy4gICovCi0rICBjb25zdCBzdHJ1Y3Qgc3lzZGVwX3N0cmluZ19kZXNjICpvcmlnX3N5c2RlcF90YWI7Ci0rICAvKiBQb2ludGVyIHRvIGRlc2NyaXB0b3JzIG9mIHRyYW5zbGF0ZWQgc3lzZGVwIHN0cmluZ3MuICAqLwotKyAgY29uc3Qgc3RydWN0IHN5c2RlcF9zdHJpbmdfZGVzYyAqdHJhbnNfc3lzZGVwX3RhYjsKLSsKLSsgIC8qIFNpemUgb2YgaGFzaCB0YWJsZS4gICovCi0gICBubHNfdWludDMyIGhhc2hfc2l6ZTsKLS0gIG5sc191aW50MzIgKmhhc2hfdGFiOwotKyAgLyogUG9pbnRlciB0byBoYXNoIHRhYmxlLiAgKi8KLSsgIGNvbnN0IG5sc191aW50MzIgKmhhc2hfdGFiOwotKyAgLyogMSBpZiB0aGUgaGFzaCB0YWJsZSB1c2VzIGEgZGlmZmVyZW50IGVuZGlhbm5lc3MgdGhhbiB0aGlzIG1hY2hpbmUuICAqLwotKyAgaW50IG11c3Rfc3dhcF9oYXNoX3RhYjsKLSsKLSsgIGludCBjb2Rlc2V0X2NudHI7Ci0rI2lmZGVmIF9MSUJDCi0rICBfX2djb252X3QgY29udjsKLSsjZWxzZQotKyMgaWYgSEFWRV9JQ09OVgotKyAgaWNvbnZfdCBjb252OwotKyMgZW5kaWYKLSsjZW5kaWYKLSsgIGNoYXIgKipjb252X3RhYjsKLSsKLSsgIHN0cnVjdCBleHByZXNzaW9uICpwbHVyYWw7Ci0rICB1bnNpZ25lZCBsb25nIGludCBucGx1cmFsczsKLSB9OwotIAotKy8qIFdlIHdhbnQgdG8gYWxsb2NhdGUgYSBzdHJpbmcgYXQgdGhlIGVuZCBvZiB0aGUgc3RydWN0LiAgQnV0IElTTyBDCi0rICAgZG9lc24ndCBhbGxvdyB6ZXJvIHNpemVkIGFycmF5cy4gICovCi0rI2lmZGVmIF9fR05VQ19fCi0rIyBkZWZpbmUgWkVSTyAwCi0rI2Vsc2UKLSsjIGRlZmluZSBaRVJPIDEKLSsjZW5kaWYKLSsKLSsvKiBBIHNldCBvZiBzZXR0aW5ncyBib3VuZCB0byBhIG1lc3NhZ2UgZG9tYWluLiAgVXNlZCB0byBzdG9yZSBzZXR0aW5ncwotKyAgIGZyb20gYmluZHRleHRkb21haW4oKSBhbmQgYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQoKS4gICovCi0gc3RydWN0IGJpbmRpbmcKLSB7Ci0gICBzdHJ1Y3QgYmluZGluZyAqbmV4dDsKLS0gIGNoYXIgKmRvbWFpbm5hbWU7Ci0gICBjaGFyICpkaXJuYW1lOwotKyAgaW50IGNvZGVzZXRfY250cjsJLyogSW5jcmVtZW50ZWQgZWFjaCB0aW1lIGNvZGVzZXQgY2hhbmdlcy4gICovCi0rICBjaGFyICpjb2Rlc2V0OwotKyAgY2hhciBkb21haW5uYW1lW1pFUk9dOwotIH07Ci0gCi0tc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqX25sX2ZpbmRfZG9tYWluIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZGlybmFtZSwKLS0JCQkJCQkgY2hhciAqX19sb2NhbGUsCi0tCQkJCQkJIGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSkpOwotLXZvaWQgX25sX2xvYWRfZG9tYWluIFBBUkFNUyAoKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKl9fZG9tYWluKSk7Ci0rLyogQSBjb3VudGVyIHdoaWNoIGlzIGluY3JlbWVudGVkIGVhY2ggdGltZSBzb21lIHByZXZpb3VzIHRyYW5zbGF0aW9ucwotKyAgIGJlY29tZSBpbnZhbGlkLgotKyAgIFRoaXMgdmFyaWFibGUgaXMgcGFydCBvZiB0aGUgZXh0ZXJuYWwgQUJJIG9mIHRoZSBHTlUgbGliaW50bC4gICovCi0rZXh0ZXJuIGludCBfbmxfbXNnX2NhdF9jbnRyOwotKwotKyNpZm5kZWYgX0xJQkMKLStjb25zdCBjaGFyICpfbmxfbG9jYWxlX25hbWUgKGludCBjYXRlZ29yeSwgY29uc3QgY2hhciAqY2F0ZWdvcnluYW1lKTsKLSsjZW5kaWYKLSsKLStzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpfbmxfZmluZF9kb21haW4gKGNvbnN0IGNoYXIgKl9fZGlybmFtZSwgY2hhciAqX19sb2NhbGUsCi0rCQkJCQkgY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCQkJIHN0cnVjdCBiaW5kaW5nICpfX2RvbWFpbmJpbmRpbmcpCi0rICAgICBpbnRlcm5hbF9mdW5jdGlvbjsKLSt2b2lkIF9ubF9sb2FkX2RvbWFpbiAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqX19kb21haW4sCi0rCQkgICAgICBzdHJ1Y3QgYmluZGluZyAqX19kb21haW5iaW5kaW5nKQotKyAgICAgaW50ZXJuYWxfZnVuY3Rpb247Ci0rdm9pZCBfbmxfdW5sb2FkX2RvbWFpbiAoc3RydWN0IGxvYWRlZF9kb21haW4gKl9fZG9tYWluKQotKyAgICAgaW50ZXJuYWxfZnVuY3Rpb247Ci0rY29uc3QgY2hhciAqX25sX2luaXRfZG9tYWluX2NvbnYgKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKl9fZG9tYWluX2ZpbGUsCi0rCQkJCSAgc3RydWN0IGxvYWRlZF9kb21haW4gKl9fZG9tYWluLAotKwkJCQkgIHN0cnVjdCBiaW5kaW5nICpfX2RvbWFpbmJpbmRpbmcpCi0rICAgICBpbnRlcm5hbF9mdW5jdGlvbjsKLSt2b2lkIF9ubF9mcmVlX2RvbWFpbl9jb252IChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqX19kb21haW4pCi0rICAgICBpbnRlcm5hbF9mdW5jdGlvbjsKLSsKLStjaGFyICpfbmxfZmluZF9tc2cgKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbl9maWxlLAotKwkJICAgIHN0cnVjdCBiaW5kaW5nICpkb21haW5iaW5kaW5nLCBjb25zdCBjaGFyICptc2dpZCwKLSsJCSAgICBzaXplX3QgKmxlbmd0aHApCi0rICAgICBpbnRlcm5hbF9mdW5jdGlvbjsKLSsKLSsjaWZkZWYgX0xJQkMKLStleHRlcm4gY2hhciAqX19nZXR0ZXh0IChjb25zdCBjaGFyICpfX21zZ2lkKTsKLStleHRlcm4gY2hhciAqX19kZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkKTsKLStleHRlcm4gY2hhciAqX19kY2dldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZCwKLSsJCQkgIGludCBfX2NhdGVnb3J5KTsKLStleHRlcm4gY2hhciAqX19uZ2V0dGV4dCAoY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAotKwkJCSB1bnNpZ25lZCBsb25nIGludCBfX24pOwotK2V4dGVybiBjaGFyICpfX2RuZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCSAgY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAotKwkJCSAgdW5zaWduZWQgbG9uZyBpbnQgbik7Ci0rZXh0ZXJuIGNoYXIgKl9fZGNuZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCSAgIGNvbnN0IGNoYXIgKl9fbXNnaWQxLCBjb25zdCBjaGFyICpfX21zZ2lkMiwKLSsJCQkgICB1bnNpZ25lZCBsb25nIGludCBfX24sIGludCBfX2NhdGVnb3J5KTsKLStleHRlcm4gY2hhciAqX19kY2lnZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0rCQkJICAgY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAotKwkJCSAgIGludCBfX3BsdXJhbCwgdW5zaWduZWQgbG9uZyBpbnQgX19uLAotKwkJCSAgIGludCBfX2NhdGVnb3J5KTsKLStleHRlcm4gY2hhciAqX190ZXh0ZG9tYWluIChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUpOwotK2V4dGVybiBjaGFyICpfX2JpbmR0ZXh0ZG9tYWluIChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0rCQkJICAgICAgIGNvbnN0IGNoYXIgKl9fZGlybmFtZSk7Ci0rZXh0ZXJuIGNoYXIgKl9fYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLSsJCQkJCWNvbnN0IGNoYXIgKl9fY29kZXNldCk7Ci0rI2Vsc2UKLSsvKiBEZWNsYXJlIHRoZSBleHBvcnRlZCBsaWJpbnRsXyogZnVuY3Rpb25zLCBpbiBhIHdheSB0aGF0IGFsbG93cyB1cyB0bwotKyAgIGNhbGwgdGhlbSB1bmRlciB0aGVpciByZWFsIG5hbWUuICAqLwotKyMgdW5kZWYgX0lOVExfUkVESVJFQ1RfSU5MSU5FCi0rIyB1bmRlZiBfSU5UTF9SRURJUkVDVF9NQUNST1MKLSsjIGRlZmluZSBfSU5UTF9SRURJUkVDVF9NQUNST1MKLSsjIGluY2x1ZGUgImxpYmdudWludGwuaCIKLStleHRlcm4gY2hhciAqbGliaW50bF9kY2lnZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0rCQkJCSBjb25zdCBjaGFyICpfX21zZ2lkMSwgY29uc3QgY2hhciAqX19tc2dpZDIsCi0rCQkJCSBpbnQgX19wbHVyYWwsIHVuc2lnbmVkIGxvbmcgaW50IF9fbiwKLSsJCQkJIGludCBfX2NhdGVnb3J5KTsKLSsjZW5kaWYKLSAKLSAvKiBAQCBiZWdpbiBvZiBlcGlsb2cgQEAgKi8KLSAKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9nbW8uaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9nbW8uaAkyMDA0LTA5LTEyIDE0OjQwOjM0LjQzMTczNjUzNiAtMDQwMAotQEAgLTAsMCArMSwxNDkgQEAKLSsvKiBEZXNjcmlwdGlvbiBvZiBHTlUgbWVzc2FnZSBjYXRhbG9nIGZvcm1hdDogZ2VuZXJhbCBmaWxlIGxheW91dC4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTcsIDIwMDAtMjAwMiwgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmbmRlZiBfR0VUVEVYVF9ICi0rI2RlZmluZSBfR0VUVEVYVF9IIDEKLSsKLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0rCi0rLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotKwotKy8qIFRoZSBtYWdpYyBudW1iZXIgb2YgdGhlIEdOVSBtZXNzYWdlIGNhdGFsb2cgZm9ybWF0LiAgKi8KLSsjZGVmaW5lIF9NQUdJQyAweDk1MDQxMmRlCi0rI2RlZmluZSBfTUFHSUNfU1dBUFBFRCAweGRlMTIwNDk1Ci0rCi0rLyogUmV2aXNpb24gbnVtYmVyIG9mIHRoZSBjdXJyZW50bHkgdXNlZCAubW8gKGJpbmFyeSkgZmlsZSBmb3JtYXQuICAqLwotKyNkZWZpbmUgTU9fUkVWSVNJT05fTlVNQkVSIDAKLSsjZGVmaW5lIE1PX1JFVklTSU9OX05VTUJFUl9XSVRIX1NZU0RFUF9JIDEKLSsKLSsvKiBUaGUgZm9sbG93aW5nIGNvbnRvcnRpb25zIGFyZSBhbiBhdHRlbXB0IHRvIHVzZSB0aGUgQyBwcmVwcm9jZXNzb3IKLSsgICB0byBkZXRlcm1pbmUgYW4gdW5zaWduZWQgaW50ZWdyYWwgdHlwZSB0aGF0IGlzIDMyIGJpdHMgd2lkZS4gIEFuCi0rICAgYWx0ZXJuYXRpdmUgYXBwcm9hY2ggaXMgdG8gdXNlIGF1dG9jb25mJ3MgQUNfQ0hFQ0tfU0laRU9GIG1hY3JvLCBidXQKLSsgICBhcyBvZiB2ZXJzaW9uIGF1dG9jb25mLTIuMTMsIHRoZSBBQ19DSEVDS19TSVpFT0YgbWFjcm8gZG9lc24ndCB3b3JrCi0rICAgd2hlbiBjcm9zcy1jb21waWxpbmcuICAqLwotKwotKyNpZiBfX1NURENfXwotKyMgZGVmaW5lIFVJTlRfTUFYXzMyX0JJVFMgNDI5NDk2NzI5NVUKLSsjZWxzZQotKyMgZGVmaW5lIFVJTlRfTUFYXzMyX0JJVFMgMHhGRkZGRkZGRgotKyNlbmRpZgotKwotKy8qIElmIFVJTlRfTUFYIGlzbid0IGRlZmluZWQsIGFzc3VtZSBpdCdzIGEgMzItYml0IHR5cGUuCi0rICAgVGhpcyBzaG91bGQgYmUgdmFsaWQgZm9yIGFsbCBzeXN0ZW1zIEdOVSBjYXJlcyBhYm91dCBiZWNhdXNlCi0rICAgdGhhdCBkb2Vzbid0IGluY2x1ZGUgMTYtYml0IHN5c3RlbXMsIGFuZCBvbmx5IG1vZGVybiBzeXN0ZW1zCi0rICAgKHRoYXQgY2VydGFpbmx5IGhhdmUgPGxpbWl0cy5oPikgaGF2ZSA2NCstYml0IGludGVncmFsIHR5cGVzLiAgKi8KLSsKLSsjaWZuZGVmIFVJTlRfTUFYCi0rIyBkZWZpbmUgVUlOVF9NQVggVUlOVF9NQVhfMzJfQklUUwotKyNlbmRpZgotKwotKyNpZiBVSU5UX01BWCA9PSBVSU5UX01BWF8zMl9CSVRTCi0rdHlwZWRlZiB1bnNpZ25lZCBubHNfdWludDMyOwotKyNlbHNlCi0rIyBpZiBVU0hSVF9NQVggPT0gVUlOVF9NQVhfMzJfQklUUwotK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgbmxzX3VpbnQzMjsKLSsjIGVsc2UKLSsjICBpZiBVTE9OR19NQVggPT0gVUlOVF9NQVhfMzJfQklUUwotK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBubHNfdWludDMyOwotKyMgIGVsc2UKLSsgIC8qIFRoZSBmb2xsb3dpbmcgbGluZSBpcyBpbnRlbmRlZCB0byB0aHJvdyBhbiBlcnJvci4gIFVzaW5nICNlcnJvciBpcwotKyAgICAgbm90IHBvcnRhYmxlIGVub3VnaC4gICovCi0rICAiQ2Fubm90IGRldGVybWluZSB1bnNpZ25lZCAzMi1iaXQgZGF0YSB0eXBlLiIKLSsjICBlbmRpZgotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsKLSsvKiBIZWFkZXIgZm9yIGJpbmFyeSAubW8gZmlsZSBmb3JtYXQuICAqLwotK3N0cnVjdCBtb19maWxlX2hlYWRlcgotK3sKLSsgIC8qIFRoZSBtYWdpYyBudW1iZXIuICAqLwotKyAgbmxzX3VpbnQzMiBtYWdpYzsKLSsgIC8qIFRoZSByZXZpc2lvbiBudW1iZXIgb2YgdGhlIGZpbGUgZm9ybWF0LiAgKi8KLSsgIG5sc191aW50MzIgcmV2aXNpb247Ci0rCi0rICAvKiBUaGUgZm9sbG93aW5nIGFyZSBvbmx5IHVzZWQgaW4gLm1vIGZpbGVzIHdpdGggbWFqb3IgcmV2aXNpb24gMCBvciAxLiAgKi8KLSsKLSsgIC8qIFRoZSBudW1iZXIgb2Ygc3RyaW5ncyBwYWlycy4gICovCi0rICBubHNfdWludDMyIG5zdHJpbmdzOwotKyAgLyogT2Zmc2V0IG9mIHRhYmxlIHdpdGggc3RhcnQgb2Zmc2V0cyBvZiBvcmlnaW5hbCBzdHJpbmdzLiAgKi8KLSsgIG5sc191aW50MzIgb3JpZ190YWJfb2Zmc2V0OwotKyAgLyogT2Zmc2V0IG9mIHRhYmxlIHdpdGggc3RhcnQgb2Zmc2V0cyBvZiB0cmFuc2xhdGVkIHN0cmluZ3MuICAqLwotKyAgbmxzX3VpbnQzMiB0cmFuc190YWJfb2Zmc2V0OwotKyAgLyogU2l6ZSBvZiBoYXNoIHRhYmxlLiAgKi8KLSsgIG5sc191aW50MzIgaGFzaF90YWJfc2l6ZTsKLSsgIC8qIE9mZnNldCBvZiBmaXJzdCBoYXNoIHRhYmxlIGVudHJ5LiAgKi8KLSsgIG5sc191aW50MzIgaGFzaF90YWJfb2Zmc2V0OwotKwotKyAgLyogVGhlIGZvbGxvd2luZyBhcmUgb25seSB1c2VkIGluIC5tbyBmaWxlcyB3aXRoIG1pbm9yIHJldmlzaW9uID49IDEuICAqLwotKwotKyAgLyogVGhlIG51bWJlciBvZiBzeXN0ZW0gZGVwZW5kZW50IHNlZ21lbnRzLiAgKi8KLSsgIG5sc191aW50MzIgbl9zeXNkZXBfc2VnbWVudHM7Ci0rICAvKiBPZmZzZXQgb2YgdGFibGUgZGVzY3JpYmluZyBzeXN0ZW0gZGVwZW5kZW50IHNlZ21lbnRzLiAgKi8KLSsgIG5sc191aW50MzIgc3lzZGVwX3NlZ21lbnRzX29mZnNldDsKLSsgIC8qIFRoZSBudW1iZXIgb2Ygc3lzdGVtIGRlcGVuZGVudCBzdHJpbmdzIHBhaXJzLiAgKi8KLSsgIG5sc191aW50MzIgbl9zeXNkZXBfc3RyaW5nczsKLSsgIC8qIE9mZnNldCBvZiB0YWJsZSB3aXRoIHN0YXJ0IG9mZnNldHMgb2Ygb3JpZ2luYWwgc3lzZGVwIHN0cmluZ3MuICAqLwotKyAgbmxzX3VpbnQzMiBvcmlnX3N5c2RlcF90YWJfb2Zmc2V0OwotKyAgLyogT2Zmc2V0IG9mIHRhYmxlIHdpdGggc3RhcnQgb2Zmc2V0cyBvZiB0cmFuc2xhdGVkIHN5c2RlcCBzdHJpbmdzLiAgKi8KLSsgIG5sc191aW50MzIgdHJhbnNfc3lzZGVwX3RhYl9vZmZzZXQ7Ci0rfTsKLSsKLSsvKiBEZXNjcmlwdG9yIGZvciBzdGF0aWMgc3RyaW5nIGNvbnRhaW5lZCBpbiB0aGUgYmluYXJ5IC5tbyBmaWxlLiAgKi8KLStzdHJ1Y3Qgc3RyaW5nX2Rlc2MKLSt7Ci0rICAvKiBMZW5ndGggb2YgYWRkcmVzc2VkIHN0cmluZywgbm90IGluY2x1ZGluZyB0aGUgdHJhaWxpbmcgTlVMLiAgKi8KLSsgIG5sc191aW50MzIgbGVuZ3RoOwotKyAgLyogT2Zmc2V0IG9mIHN0cmluZyBpbiBmaWxlLiAgKi8KLSsgIG5sc191aW50MzIgb2Zmc2V0OwotK307Ci0rCi0rLyogVGhlIGZvbGxvd2luZyBhcmUgb25seSB1c2VkIGluIC5tbyBmaWxlcyB3aXRoIG1pbm9yIHJldmlzaW9uID49IDEuICAqLwotKwotKy8qIERlc2NyaXB0b3IgZm9yIHN5c3RlbSBkZXBlbmRlbnQgc3RyaW5nIHNlZ21lbnQuICAqLwotK3N0cnVjdCBzeXNkZXBfc2VnbWVudAotK3sKLSsgIC8qIExlbmd0aCBvZiBhZGRyZXNzZWQgc3RyaW5nLCBpbmNsdWRpbmcgdGhlIHRyYWlsaW5nIE5VTC4gICovCi0rICBubHNfdWludDMyIGxlbmd0aDsKLSsgIC8qIE9mZnNldCBvZiBzdHJpbmcgaW4gZmlsZS4gICovCi0rICBubHNfdWludDMyIG9mZnNldDsKLSt9OwotKwotKy8qIERlc2NyaXB0b3IgZm9yIHN5c3RlbSBkZXBlbmRlbnQgc3RyaW5nLiAgKi8KLStzdHJ1Y3Qgc3lzZGVwX3N0cmluZwotK3sKLSsgIC8qIE9mZnNldCBvZiBzdGF0aWMgc3RyaW5nIHNlZ21lbnRzIGluIGZpbGUuICAqLwotKyAgbmxzX3VpbnQzMiBvZmZzZXQ7Ci0rICAvKiBBbHRlcm5hdGluZyBzZXF1ZW5jZSBvZiBzdGF0aWMgYW5kIHN5c3RlbSBkZXBlbmRlbnQgc2VnbWVudHMuCi0rICAgICBUaGUgbGFzdCBzZWdtZW50IGlzIGEgc3RhdGljIHNlZ21lbnQsIGluY2x1ZGluZyB0aGUgdHJhaWxpbmcgTlVMLiAgKi8KLSsgIHN0cnVjdCBzZWdtZW50X3BhaXIKLSsgIHsKLSsgICAgLyogU2l6ZSBvZiBzdGF0aWMgc2VnbWVudC4gICovCi0rICAgIG5sc191aW50MzIgc2Vnc2l6ZTsKLSsgICAgLyogUmVmZXJlbmNlIHRvIHN5c3RlbSBkZXBlbmRlbnQgc3RyaW5nIHNlZ21lbnQsIG9yIH4wIGF0IHRoZSBlbmQuICAqLwotKyAgICBubHNfdWludDMyIHN5c2RlcHJlZjsKLSsgIH0gc2VnbWVudHNbMV07Ci0rfTsKLSsKLSsvKiBNYXJrZXIgZm9yIHRoZSBlbmQgb2YgdGhlIHNlZ21lbnRzW10gYXJyYXkuICBUaGlzIGhhcyB0aGUgdmFsdWUgMHhGRkZGRkZGRiwKLSsgICByZWdhcmRsZXNzIHdoZXRoZXIgJ2ludCcgaXMgMTYgYml0LCAzMiBiaXQsIG9yIDY0IGJpdC4gICovCi0rI2RlZmluZSBTRUdNRU5UU19FTkQgKChubHNfdWludDMyKSB+MCkKLSsKLSsvKiBAQCBiZWdpbiBvZiBlcGlsb2cgQEAgKi8KLSsKLSsjZW5kaWYJLyogZ2V0dGV4dC5oICAqLwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2hhc2gtc3RyaW5nLmgJMTk5OC0wNC0yNiAwOToyMjozNi4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvaGFzaC1zdHJpbmcuaAkyMDA0LTA5LTEyIDE0OjQwOjM0LjQzNjczNTc3NiAtMDQwMAotQEAgLTEsMzUgKzEsMjMgQEAKLS0vKiBJbXBsZW1lbnRzIGEgc3RyaW5nIGhhc2hpbmcgZnVuY3Rpb24uCi0tICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIERlc2NyaXB0aW9uIG9mIEdOVSBtZXNzYWdlIGNhdGFsb2cgZm9ybWF0OiBzdHJpbmcgaGFzaGluZyBmdW5jdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTctMTk5OCwgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgIGFueSBsYXRlciB2ZXJzaW9uLgotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotLSAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LAotLSAgIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLS0gICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0tCi0tI2lmZGVmIEhBVkVfVkFMVUVTX0gKLS0jIGluY2x1ZGUgPHZhbHVlcy5oPgotLSNlbmRpZgotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotIAotIC8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLSAKLS0jaWZuZGVmIFBBUkFNUwotLSMgaWYgX19TVERDX18KLS0jICBkZWZpbmUgUEFSQU1TKEFyZ3MpIEFyZ3MKLS0jIGVsc2UKLS0jICBkZWZpbmUgUEFSQU1TKEFyZ3MpICgpCi0tIyBlbmRpZgotLSNlbmRpZgotLQotIC8qIFdlIGFzc3VtZSB0byBoYXZlIGB1bnNpZ25lZCBsb25nIGludCcgdmFsdWUgd2l0aCBhdCBsZWFzdCAzMiBiaXRzLiAgKi8KLSAjZGVmaW5lIEhBU0hXT1JEQklUUyAzMgotIAotQEAgLTM3LDExICsyNSw4IEBACi0gLyogRGVmaW5lcyB0aGUgc28gY2FsbGVkIGBoYXNocGp3JyBmdW5jdGlvbiBieSBQLkouIFdlaW5iZXJnZXIKLSAgICBbc2VlIEFoby9TZXRoaS9VbGxtYW4sIENPTVBJTEVSUzogUHJpbmNpcGxlcywgVGVjaG5pcXVlcyBhbmQgVG9vbHMsCi0gICAgMTk4NiwgMTk4NyBCZWxsIFRlbGVwaG9uZSBMYWJvcmF0b3JpZXMsIEluYy5dICAqLwotLXN0YXRpYyB1bnNpZ25lZCBsb25nIGhhc2hfc3RyaW5nIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fc3RyX3BhcmFtKSk7Ci0tCi0tc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCi0taGFzaF9zdHJpbmcgKHN0cl9wYXJhbSkKLS0gICAgIGNvbnN0IGNoYXIgKnN0cl9wYXJhbTsKLStzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgaW50Ci0raGFzaF9zdHJpbmcgKGNvbnN0IGNoYXIgKnN0cl9wYXJhbSkKLSB7Ci0gICB1bnNpZ25lZCBsb25nIGludCBodmFsLCBnOwotICAgY29uc3QgY2hhciAqc3RyID0gc3RyX3BhcmFtOwotQEAgLTUxLDggKzM2LDggQEAKLSAgIHdoaWxlICgqc3RyICE9ICdcMCcpCi0gICAgIHsKLSAgICAgICBodmFsIDw8PSA0OwotLSAgICAgIGh2YWwgKz0gKHVuc2lnbmVkIGxvbmcpICpzdHIrKzsKLS0gICAgICBnID0gaHZhbCAmICgodW5zaWduZWQgbG9uZykgMHhmIDw8IChIQVNIV09SREJJVFMgLSA0KSk7Ci0rICAgICAgaHZhbCArPSAodW5zaWduZWQgY2hhcikgKnN0cisrOwotKyAgICAgIGcgPSBodmFsICYgKCh1bnNpZ25lZCBsb25nIGludCkgMHhmIDw8IChIQVNIV09SREJJVFMgLSA0KSk7Ci0gICAgICAgaWYgKGcgIT0gMCkKLSAJewotIAkgIGh2YWwgXj0gZyA+PiAoSEFTSFdPUkRCSVRTIC0gOCk7Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvaW50bC1jb21wYXQuYwkxOTk4LTA0LTI2IDA5OjIwOjUyLjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9pbnRsLWNvbXBhdC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNDQxNzM1MDE2IC0wNDAwCi1AQCAtMSw3NiArMSwxMzEgQEAKLSAvKiBpbnRsLWNvbXBhdC5jIC0gU3R1YiBmdW5jdGlvbnMgdG8gY2FsbCBnZXR0ZXh0IGZ1bmN0aW9ucyBmcm9tIEdOVSBnZXR0ZXh0Ci0gICAgTGlicmFyeS4KLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIENvcHlyaWdodCAoQykgMTk5NSwgMjAwMC0yMDAzIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS1UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLWl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLWFueSBsYXRlciB2ZXJzaW9uLgotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLS1UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS1idXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLU1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS1HTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS1Zb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLWFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0tRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2VuZGlmCi0gCi0tI2luY2x1ZGUgImxpYmdldHRleHQuaCIKLSsjaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLSAKLSAvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0gCi0rLyogVGhpcyBmaWxlIHJlZGlyZWN0cyB0aGUgZ2V0dGV4dCBmdW5jdGlvbnMgKHdpdGhvdXQgcHJlZml4KSB0byB0aG9zZQotKyAgIGRlZmluZWQgaW4gdGhlIGluY2x1ZGVkIEdOVSBsaWJpbnRsIGxpYnJhcnkgKHdpdGggImxpYmludGxfIiBwcmVmaXgpLgotKyAgIEl0IGlzIGNvbXBpbGVkIGludG8gbGliaW50bCBpbiBvcmRlciB0byBtYWtlIHRoZSBBTV9HTlVfR0VUVEVYVCB0ZXN0Ci0rICAgb2YgZ2V0dGV4dCA8PSAwLjExLjIgd29yayB3aXRoIHRoZSBsaWJpbnRsIGxpYnJhcnkgPj0gMC4xMS4zIHdoaWNoCi0rICAgaGFzIHRoZSByZWRpcmVjdGlvbnMgcHJpbWFyaWx5IGluIHRoZSA8bGliaW50bC5oPiBpbmNsdWRlIGZpbGUuCi0rICAgSXQgaXMgYWxzbyBjb21waWxlZCBpbnRvIGxpYmdudWludGwgc28gdGhhdCBsaWJnbnVpbnRsLnNvIGNhbiBiZSB1c2VkCi0rICAgYXMgTERfUFJFTE9BRGFibGUgbGlicmFyeSBvbiBnbGliYyBzeXN0ZW1zLCB0byBwcm92aWRlIHRoZSBleHRyYQotKyAgIGZlYXR1cmVzIHRoYXQgdGhlIGZ1bmN0aW9ucyBpbiB0aGUgbGliYyBkb24ndCBoYXZlIChuYW1lbHksIGxvZ2dpbmcpLiAgKi8KLSsKLSAKLSAjdW5kZWYgZ2V0dGV4dAotICN1bmRlZiBkZ2V0dGV4dAotICN1bmRlZiBkY2dldHRleHQKLSsjdW5kZWYgbmdldHRleHQKLSsjdW5kZWYgZG5nZXR0ZXh0Ci0rI3VuZGVmIGRjbmdldHRleHQKLSAjdW5kZWYgdGV4dGRvbWFpbgotICN1bmRlZiBiaW5kdGV4dGRvbWFpbgotKyN1bmRlZiBiaW5kX3RleHRkb21haW5fY29kZXNldAotKwotKwotKy8qIFdoZW4gYnVpbGRpbmcgYSBETEwsIHdlIG11c3QgZXhwb3J0IHNvbWUgZnVuY3Rpb25zLiAgTm90ZSB0aGF0IGJlY2F1c2UKLSsgICB0aGUgZnVuY3Rpb25zIGFyZSBvbmx5IGRlZmluZWQgZm9yIGJpbmFyeSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB3ZQotKyAgIGRvbid0IG5lZWQgdG8gdXNlIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbiBhbnkgY2FzZS4gICovCi0rI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgQlVJTERJTkdfRExMCi0rIyBkZWZpbmUgRExMX0VYUE9SVEVEIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQotKyNlbHNlCi0rIyBkZWZpbmUgRExMX0VYUE9SVEVECi0rI2VuZGlmCi0gCi0gCi0rRExMX0VYUE9SVEVECi0gY2hhciAqCi0tYmluZHRleHRkb21haW4gKGRvbWFpbm5hbWUsIGRpcm5hbWUpCi0tICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOwotLSAgICAgY29uc3QgY2hhciAqZGlybmFtZTsKLStnZXR0ZXh0IChjb25zdCBjaGFyICptc2dpZCkKLSB7Ci0tICByZXR1cm4gYmluZHRleHRkb21haW5fXyAoZG9tYWlubmFtZSwgZGlybmFtZSk7Ci0rICByZXR1cm4gbGliaW50bF9nZXR0ZXh0IChtc2dpZCk7Ci0gfQotIAotIAotK0RMTF9FWFBPUlRFRAotIGNoYXIgKgotLWRjZ2V0dGV4dCAoZG9tYWlubmFtZSwgbXNnaWQsIGNhdGVnb3J5KQotLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKLS0gICAgIGNvbnN0IGNoYXIgKm1zZ2lkOwotLSAgICAgaW50IGNhdGVnb3J5OwotK2RnZXR0ZXh0IChjb25zdCBjaGFyICpkb21haW5uYW1lLCBjb25zdCBjaGFyICptc2dpZCkKLSB7Ci0tICByZXR1cm4gZGNnZXR0ZXh0X18gKGRvbWFpbm5hbWUsIG1zZ2lkLCBjYXRlZ29yeSk7Ci0rICByZXR1cm4gbGliaW50bF9kZ2V0dGV4dCAoZG9tYWlubmFtZSwgbXNnaWQpOwotIH0KLSAKLSAKLStETExfRVhQT1JURUQKLSBjaGFyICoKLS1kZ2V0dGV4dCAoZG9tYWlubmFtZSwgbXNnaWQpCi0tICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOwotLSAgICAgY29uc3QgY2hhciAqbXNnaWQ7Ci0rZGNnZXR0ZXh0IChjb25zdCBjaGFyICpkb21haW5uYW1lLCBjb25zdCBjaGFyICptc2dpZCwgaW50IGNhdGVnb3J5KQotIHsKLS0gIHJldHVybiBkZ2V0dGV4dF9fIChkb21haW5uYW1lLCBtc2dpZCk7Ci0rICByZXR1cm4gbGliaW50bF9kY2dldHRleHQgKGRvbWFpbm5hbWUsIG1zZ2lkLCBjYXRlZ29yeSk7Ci0gfQotIAotIAotK0RMTF9FWFBPUlRFRAotIGNoYXIgKgotLWdldHRleHQgKG1zZ2lkKQotLSAgICAgY29uc3QgY2hhciAqbXNnaWQ7Ci0rbmdldHRleHQgKGNvbnN0IGNoYXIgKm1zZ2lkMSwgY29uc3QgY2hhciAqbXNnaWQyLCB1bnNpZ25lZCBsb25nIGludCBuKQotIHsKLS0gIHJldHVybiBnZXR0ZXh0X18gKG1zZ2lkKTsKLSsgIHJldHVybiBsaWJpbnRsX25nZXR0ZXh0IChtc2dpZDEsIG1zZ2lkMiwgbik7Ci0gfQotIAotIAotK0RMTF9FWFBPUlRFRAotIGNoYXIgKgotLXRleHRkb21haW4gKGRvbWFpbm5hbWUpCi0tICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOwotK2RuZ2V0dGV4dCAoY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLSsJICAgY29uc3QgY2hhciAqbXNnaWQxLCBjb25zdCBjaGFyICptc2dpZDIsIHVuc2lnbmVkIGxvbmcgaW50IG4pCi0gewotLSAgcmV0dXJuIHRleHRkb21haW5fXyAoZG9tYWlubmFtZSk7Ci0rICByZXR1cm4gbGliaW50bF9kbmdldHRleHQgKGRvbWFpbm5hbWUsIG1zZ2lkMSwgbXNnaWQyLCBuKTsKLSt9Ci0rCi0rCi0rRExMX0VYUE9SVEVECi0rY2hhciAqCi0rZGNuZ2V0dGV4dCAoY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLSsJICAgIGNvbnN0IGNoYXIgKm1zZ2lkMSwgY29uc3QgY2hhciAqbXNnaWQyLCB1bnNpZ25lZCBsb25nIGludCBuLAotKwkgICAgaW50IGNhdGVnb3J5KQotK3sKLSsgIHJldHVybiBsaWJpbnRsX2RjbmdldHRleHQgKGRvbWFpbm5hbWUsIG1zZ2lkMSwgbXNnaWQyLCBuLCBjYXRlZ29yeSk7Ci0rfQotKwotKwotK0RMTF9FWFBPUlRFRAotK2NoYXIgKgotK3RleHRkb21haW4gKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUpCi0rewotKyAgcmV0dXJuIGxpYmludGxfdGV4dGRvbWFpbiAoZG9tYWlubmFtZSk7Ci0rfQotKwotKwotK0RMTF9FWFBPUlRFRAotK2NoYXIgKgotK2JpbmR0ZXh0ZG9tYWluIChjb25zdCBjaGFyICpkb21haW5uYW1lLCBjb25zdCBjaGFyICpkaXJuYW1lKQotK3sKLSsgIHJldHVybiBsaWJpbnRsX2JpbmR0ZXh0ZG9tYWluIChkb21haW5uYW1lLCBkaXJuYW1lKTsKLSt9Ci0rCi0rCi0rRExMX0VYUE9SVEVECi0rY2hhciAqCi0rYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKmNvZGVzZXQpCi0rewotKyAgcmV0dXJuIGxpYmludGxfYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgKGRvbWFpbm5hbWUsIGNvZGVzZXQpOwotIH0KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9sMTBuZmxpc3QuYwkxOTk4LTA0LTI2IDA5OjIyOjM3LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9sMTBuZmxpc3QuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjQ1NzczMjU4NCAtMDQwMAotQEAgLTEsNTIgKzEsNDAgQEAKLS0vKiBIYW5kbGUgbGlzdCBvZiBuZWVkZWQgbWVzc2FnZSBjYXRhbG9ncwotLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0gICBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KLSsvKiBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OSwgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIENvbnRyaWJ1dGVkIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KLSAKLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSAgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLSAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rLyogVGVsbCBnbGliYydzIDxzdHJpbmcuaD4gdG8gcHJvdmlkZSBhIHByb3RvdHlwZSBmb3Igc3RwY3B5KCkuCi0rICAgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIDxjb25maWcuaD4gYmVjYXVzZSA8Y29uZmlnLmg+IG1heSBpbmNsdWRlCi0rICAgPGZlYXR1cmVzLmg+LCBhbmQgb25jZSA8ZmVhdHVyZXMuaD4gaGFzIGJlZW4gaW5jbHVkZWQsIGl0J3MgdG9vIGxhdGUuICAqLwotKyNpZm5kZWYgX0dOVV9TT1VSQ0UKLSsjIGRlZmluZSBfR05VX1NPVVJDRQkxCi0rI2VuZGlmCi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotLQotLSNpZiBkZWZpbmVkIEhBVkVfU1RSSU5HX0ggfHwgZGVmaW5lZCBfTElCQwotLSMgaWZuZGVmIF9HTlVfU09VUkNFCi0tIyAgZGVmaW5lIF9HTlVfU09VUkNFCTEKLS0jIGVuZGlmCi0tIyBpbmNsdWRlIDxzdHJpbmcuaD4KLS0jZWxzZQotLSMgaW5jbHVkZSA8c3RyaW5ncy5oPgotLSMgaWZuZGVmIG1lbWNweQotLSMgIGRlZmluZSBtZW1jcHkoRHN0LCBTcmMsIE51bSkgYmNvcHkgKFNyYywgRHN0LCBOdW0pCi0tIyBlbmRpZgotLSNlbmRpZgotLSNpZiAhSEFWRV9TVFJDSFIgJiYgIWRlZmluZWQgX0xJQkMKLS0jIGlmbmRlZiBzdHJjaHIKLS0jICBkZWZpbmUgc3RyY2hyIGluZGV4Ci0tIyBlbmRpZgotLSNlbmRpZgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSAKLSAjaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfQVJHWl9ICi0gIyBpbmNsdWRlIDxhcmd6Lmg+Ci0gI2VuZGlmCi0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLQotLSNpZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpbmNsdWRlIDxzdGRsaWIuaD4KLS0jZW5kaWYKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0gCi0gI2luY2x1ZGUgImxvYWRpbmZvLmgiCi0gCi1AQCAtNjUsMjMgKzUzLDM5IEBACi0gLyogUmVuYW1lIHRoZSBub24gQU5TSSBDIGZ1bmN0aW9ucy4gIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkCi0gICAgYmVjYXVzZSBzb21lIEFOU0kgQyBmdW5jdGlvbnMgd2lsbCByZXF1aXJlIGxpbmtpbmcgd2l0aCB0aGlzIG9iamVjdAotICAgIGZpbGUgYW5kIHRoZSBuYW1lIHNwYWNlIG11c3Qgbm90IGJlIHBvbGx1dGVkLiAgKi8KLS0jIGRlZmluZSBzdHBjcHkoZGVzdCwgc3JjKSBfX3N0cGNweShkZXN0LCBzcmMpCi0rIyBpZm5kZWYgc3RwY3B5Ci0rIyAgZGVmaW5lIHN0cGNweShkZXN0LCBzcmMpIF9fc3RwY3B5KGRlc3QsIHNyYykKLSsjIGVuZGlmCi0gI2Vsc2UKLSAjIGlmbmRlZiBIQVZFX1NUUENQWQotLXN0YXRpYyBjaGFyICpzdHBjcHkgUEFSQU1TICgoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjKSk7Ci0rc3RhdGljIGNoYXIgKnN0cGNweSAoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjKTsKLSAjIGVuZGlmCi0gI2VuZGlmCi0gCi0rLyogUGF0aG5hbWUgc3VwcG9ydC4KLSsgICBJU1NMQVNIKEMpICAgICAgICAgICB0ZXN0cyB3aGV0aGVyIEMgaXMgYSBkaXJlY3Rvcnkgc2VwYXJhdG9yIGNoYXJhY3Rlci4KLSsgICBJU19BQlNPTFVURV9QQVRIKFApICB0ZXN0cyB3aGV0aGVyIFAgaXMgYW4gYWJzb2x1dGUgcGF0aC4gIElmIGl0IGlzIG5vdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICBpdCBtYXkgYmUgY29uY2F0ZW5hdGVkIHRvIGEgZGlyZWN0b3J5IHBhdGhuYW1lLgotKyAqLwotKyNpZiBkZWZpbmVkIF9XSU4zMiB8fCBkZWZpbmVkIF9fV0lOMzJfXyB8fCBkZWZpbmVkIF9fRU1YX18gfHwgZGVmaW5lZCBfX0RKR1BQX18KLSsgIC8qIFdpbjMyLCBPUy8yLCBET1MgKi8KLSsjIGRlZmluZSBJU1NMQVNIKEMpICgoQykgPT0gJy8nIHx8IChDKSA9PSAnXFwnKQotKyMgZGVmaW5lIEhBU19ERVZJQ0UoUCkgXAotKyAgICAoKCgoUClbMF0gPj0gJ0EnICYmIChQKVswXSA8PSAnWicpIHx8ICgoUClbMF0gPj0gJ2EnICYmIChQKVswXSA8PSAneicpKSBcCi0rICAgICAmJiAoUClbMV0gPT0gJzonKQotKyMgZGVmaW5lIElTX0FCU09MVVRFX1BBVEgoUCkgKElTU0xBU0ggKChQKVswXSkgfHwgSEFTX0RFVklDRSAoUCkpCi0rI2Vsc2UKLSsgIC8qIFVuaXggKi8KLSsjIGRlZmluZSBJU1NMQVNIKEMpICgoQykgPT0gJy8nKQotKyMgZGVmaW5lIElTX0FCU09MVVRFX1BBVEgoUCkgSVNTTEFTSCAoKFApWzBdKQotKyNlbmRpZgotKwotIC8qIERlZmluZSBmdW5jdGlvbiB3aGljaCBhcmUgdXN1YWxseSBub3QgYXZhaWxhYmxlLiAgKi8KLSAKLSAjaWYgIWRlZmluZWQgX0xJQkMgJiYgIWRlZmluZWQgSEFWRV9fX0FSR1pfQ09VTlQKLSAvKiBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3RyaW5ncyBpbiBBUkdaLiAgKi8KLS1zdGF0aWMgc2l6ZV90IGFyZ3pfY291bnRfXyBQQVJBTVMgKChjb25zdCBjaGFyICphcmd6LCBzaXplX3QgbGVuKSk7Ci0tCi0gc3RhdGljIHNpemVfdAotLWFyZ3pfY291bnRfXyAoYXJneiwgbGVuKQotLSAgICAgY29uc3QgY2hhciAqYXJnejsKLS0gICAgIHNpemVfdCBsZW47Ci0rYXJnel9jb3VudF9fIChjb25zdCBjaGFyICphcmd6LCBzaXplX3QgbGVuKQotIHsKLSAgIHNpemVfdCBjb3VudCA9IDA7Ci0gICB3aGlsZSAobGVuID4gMCkKLUBAIC05NSwxOCArOTksMTcgQEAKLSB9Ci0gIyB1bmRlZiBfX2FyZ3pfY291bnQKLSAjIGRlZmluZSBfX2FyZ3pfY291bnQoYXJneiwgbGVuKSBhcmd6X2NvdW50X18gKGFyZ3osIGxlbikKLSsjZWxzZQotKyMgaWZkZWYgX0xJQkMKLSsjICBkZWZpbmUgX19hcmd6X2NvdW50KGFyZ3osIGxlbikgSU5UVVNFKF9fYXJnel9jb3VudCkgKGFyZ3osIGxlbikKLSsjIGVuZGlmCi0gI2VuZGlmCS8qICFfTElCQyAmJiAhSEFWRV9fX0FSR1pfQ09VTlQgKi8KLSAKLSAjaWYgIWRlZmluZWQgX0xJQkMgJiYgIWRlZmluZWQgSEFWRV9fX0FSR1pfU1RSSU5HSUZZCi0gLyogTWFrZSAnXDAnIHNlcGFyYXRlZCBhcmcgdmVjdG9yIEFSR1ogcHJpbnRhYmxlIGJ5IGNvbnZlcnRpbmcgYWxsIHRoZSAnXDAncwotICAgIGV4Y2VwdCB0aGUgbGFzdCBpbnRvIHRoZSBjaGFyYWN0ZXIgU0VQLiAgKi8KLS1zdGF0aWMgdm9pZCBhcmd6X3N0cmluZ2lmeV9fIFBBUkFNUyAoKGNoYXIgKmFyZ3osIHNpemVfdCBsZW4sIGludCBzZXApKTsKLS0KLSBzdGF0aWMgdm9pZAotLWFyZ3pfc3RyaW5naWZ5X18gKGFyZ3osIGxlbiwgc2VwKQotLSAgICAgY2hhciAqYXJnejsKLS0gICAgIHNpemVfdCBsZW47Ci0tICAgICBpbnQgc2VwOwotK2FyZ3pfc3RyaW5naWZ5X18gKGNoYXIgKmFyZ3osIHNpemVfdCBsZW4sIGludCBzZXApCi0gewotICAgd2hpbGUgKGxlbiA+IDApCi0gICAgIHsKLUBAIC0xMTksMTcgKzEyMiwxNiBAQAotIH0KLSAjIHVuZGVmIF9fYXJnel9zdHJpbmdpZnkKLSAjIGRlZmluZSBfX2FyZ3pfc3RyaW5naWZ5KGFyZ3osIGxlbiwgc2VwKSBhcmd6X3N0cmluZ2lmeV9fIChhcmd6LCBsZW4sIHNlcCkKLSsjZWxzZQotKyMgaWZkZWYgX0xJQkMKLSsjICBkZWZpbmUgX19hcmd6X3N0cmluZ2lmeShhcmd6LCBsZW4sIHNlcCkgXAotKyAgSU5UVVNFKF9fYXJnel9zdHJpbmdpZnkpIChhcmd6LCBsZW4sIHNlcCkKLSsjIGVuZGlmCi0gI2VuZGlmCS8qICFfTElCQyAmJiAhSEFWRV9fX0FSR1pfU1RSSU5HSUZZICovCi0gCi0gI2lmICFkZWZpbmVkIF9MSUJDICYmICFkZWZpbmVkIEhBVkVfX19BUkdaX05FWFQKLS1zdGF0aWMgY2hhciAqYXJnel9uZXh0X18gUEFSQU1TICgoY2hhciAqYXJneiwgc2l6ZV90IGFyZ3pfbGVuLAotLQkJCQkgIGNvbnN0IGNoYXIgKmVudHJ5KSk7Ci0tCi0gc3RhdGljIGNoYXIgKgotLWFyZ3pfbmV4dF9fIChhcmd6LCBhcmd6X2xlbiwgZW50cnkpCi0tICAgICBjaGFyICphcmd6OwotLSAgICAgc2l6ZV90IGFyZ3pfbGVuOwotLSAgICAgY29uc3QgY2hhciAqZW50cnk7Ci0rYXJnel9uZXh0X18gKGNoYXIgKmFyZ3osIHNpemVfdCBhcmd6X2xlbiwgY29uc3QgY2hhciAqZW50cnkpCi0gewotICAgaWYgKGVudHJ5KQotICAgICB7Ci1AQCAtMTUwLDExICsxNTIsOCBAQAotIAotIAotIC8qIFJldHVybiBudW1iZXIgb2YgYml0cyBzZXQgaW4gWC4gICovCi0tc3RhdGljIGludCBwb3AgUEFSQU1TICgoaW50IHgpKTsKLS0KLSBzdGF0aWMgaW5saW5lIGludAotLXBvcCAoeCkKLS0gICAgIGludCB4OwotK3BvcCAoaW50IHgpCi0gewotICAgLyogV2UgYXNzdW1lIHRoYXQgbm8gbW9yZSB0aGFuIDE2IGJpdHMgYXJlIHVzZWQuICAqLwotICAgeCA9ICgoeCAmIH4weDU1NTUpID4+IDEpICsgKHggJiAweDU1NTUpOwotQEAgLTE2NywzMSArMTY2LDI3IEBACi0gCi0gDAotIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKgotLV9ubF9tYWtlX2wxMG5mbGlzdCAobDEwbmZpbGVfbGlzdCwgZGlybGlzdCwgZGlybGlzdF9sZW4sIG1hc2ssIGxhbmd1YWdlLAotLQkJICAgIHRlcnJpdG9yeSwgY29kZXNldCwgbm9ybWFsaXplZF9jb2Rlc2V0LCBtb2RpZmllciwgc3BlY2lhbCwKLS0JCSAgICBzcG9uc29yLCByZXZpc2lvbiwgZmlsZW5hbWUsIGRvX2FsbG9jYXRlKQotLSAgICAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqKmwxMG5maWxlX2xpc3Q7Ci0tICAgICBjb25zdCBjaGFyICpkaXJsaXN0OwotLSAgICAgc2l6ZV90IGRpcmxpc3RfbGVuOwotLSAgICAgaW50IG1hc2s7Ci0tICAgICBjb25zdCBjaGFyICpsYW5ndWFnZTsKLS0gICAgIGNvbnN0IGNoYXIgKnRlcnJpdG9yeTsKLS0gICAgIGNvbnN0IGNoYXIgKmNvZGVzZXQ7Ci0tICAgICBjb25zdCBjaGFyICpub3JtYWxpemVkX2NvZGVzZXQ7Ci0tICAgICBjb25zdCBjaGFyICptb2RpZmllcjsKLS0gICAgIGNvbnN0IGNoYXIgKnNwZWNpYWw7Ci0tICAgICBjb25zdCBjaGFyICpzcG9uc29yOwotLSAgICAgY29uc3QgY2hhciAqcmV2aXNpb247Ci0tICAgICBjb25zdCBjaGFyICpmaWxlbmFtZTsKLS0gICAgIGludCBkb19hbGxvY2F0ZTsKLStfbmxfbWFrZV9sMTBuZmxpc3QgKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKipsMTBuZmlsZV9saXN0LAotKwkJICAgIGNvbnN0IGNoYXIgKmRpcmxpc3QsIHNpemVfdCBkaXJsaXN0X2xlbiwKLSsJCSAgICBpbnQgbWFzaywgY29uc3QgY2hhciAqbGFuZ3VhZ2UsIGNvbnN0IGNoYXIgKnRlcnJpdG9yeSwKLSsJCSAgICBjb25zdCBjaGFyICpjb2Rlc2V0LCBjb25zdCBjaGFyICpub3JtYWxpemVkX2NvZGVzZXQsCi0rCQkgICAgY29uc3QgY2hhciAqbW9kaWZpZXIsIGNvbnN0IGNoYXIgKnNwZWNpYWwsCi0rCQkgICAgY29uc3QgY2hhciAqc3BvbnNvciwgY29uc3QgY2hhciAqcmV2aXNpb24sCi0rCQkgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBkb19hbGxvY2F0ZSkKLSB7Ci0gICBjaGFyICphYnNfZmlsZW5hbWU7Ci0tICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpsYXN0ID0gTlVMTDsKLSsgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKipsYXN0cDsKLSAgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKnJldHZhbDsKLSAgIGNoYXIgKmNwOwotKyAgc2l6ZV90IGRpcmxpc3RfY291bnQ7Ci0gICBzaXplX3QgZW50cmllczsKLSAgIGludCBjbnQ7Ci0gCi0rICAvKiBJZiBMQU5HVUFHRSBjb250YWlucyBhbiBhYnNvbHV0ZSBkaXJlY3Rvcnkgc3BlY2lmaWNhdGlvbiwgd2UgaWdub3JlCi0rICAgICBESVJMSVNULiAgKi8KLSsgIGlmIChJU19BQlNPTFVURV9QQVRIIChsYW5ndWFnZSkpCi0rICAgIGRpcmxpc3RfbGVuID0gMDsKLSsKLSAgIC8qIEFsbG9jYXRlIHJvb20gZm9yIHRoZSBmdWxsIGZpbGUgbmFtZS4gICovCi0gICBhYnNfZmlsZW5hbWUgPSAoY2hhciAqKSBtYWxsb2MgKGRpcmxpc3RfbGVuCi0gCQkJCSAgKyBzdHJsZW4gKGxhbmd1YWdlKQotQEAgLTIwOSw3ICsyMDQsNyBAQAotIAkJCQkgICsgKCgobWFzayAmIENFTl9TUE9OU09SKSAhPSAwCi0gCQkJCSAgICAgIHx8IChtYXNrICYgQ0VOX1JFVklTSU9OKSAhPSAwKQotIAkJCQkgICAgID8gKDEgKyAoKG1hc2sgJiBDRU5fU1BPTlNPUikgIT0gMAotLQkJCQkJICAgICA/IHN0cmxlbiAoc3BvbnNvcikgKyAxIDogMCkKLSsJCQkJCSAgICAgPyBzdHJsZW4gKHNwb25zb3IpIDogMCkKLSAJCQkJCSsgKChtYXNrICYgQ0VOX1JFVklTSU9OKSAhPSAwCi0gCQkJCQkgICA/IHN0cmxlbiAocmV2aXNpb24pICsgMSA6IDApKSA6IDApCi0gCQkJCSAgKyAxICsgc3RybGVuIChmaWxlbmFtZSkgKyAxKTsKLUBAIC0yMTcsMTQgKzIxMiwxNiBAQAotICAgaWYgKGFic19maWxlbmFtZSA9PSBOVUxMKQotICAgICByZXR1cm4gTlVMTDsKLSAKLS0gIHJldHZhbCA9IE5VTEw7Ci0tICBsYXN0ID0gTlVMTDsKLS0KLSAgIC8qIENvbnN0cnVjdCBmaWxlIG5hbWUuICAqLwotLSAgbWVtY3B5IChhYnNfZmlsZW5hbWUsIGRpcmxpc3QsIGRpcmxpc3RfbGVuKTsKLS0gIF9fYXJnel9zdHJpbmdpZnkgKGFic19maWxlbmFtZSwgZGlybGlzdF9sZW4sICc6Jyk7Ci0tICBjcCA9IGFic19maWxlbmFtZSArIChkaXJsaXN0X2xlbiAtIDEpOwotLSAgKmNwKysgPSAnLyc7Ci0rICBjcCA9IGFic19maWxlbmFtZTsKLSsgIGlmIChkaXJsaXN0X2xlbiA+IDApCi0rICAgIHsKLSsgICAgICBtZW1jcHkgKGNwLCBkaXJsaXN0LCBkaXJsaXN0X2xlbik7Ci0rICAgICAgX19hcmd6X3N0cmluZ2lmeSAoY3AsIGRpcmxpc3RfbGVuLCBQQVRIX1NFUEFSQVRPUik7Ci0rICAgICAgY3AgKz0gZGlybGlzdF9sZW47Ci0rICAgICAgY3BbLTFdID0gJy8nOwotKyAgICB9Ci0rCi0gICBjcCA9IHN0cGNweSAoY3AsIGxhbmd1YWdlKTsKLSAKLSAgIGlmICgobWFzayAmIFRFUlJJVE9SWSkgIT0gMCkKLUBAIC0yNzEsNyArMjY4LDcgQEAKLSAKLSAgIC8qIExvb2sgaW4gbGlzdCBvZiBhbHJlYWR5IGxvYWRlZCBkb21haW5zIHdoZXRoZXIgaXQgaXMgYWxyZWFkeQotICAgICAgYXZhaWxhYmxlLiAgKi8KLS0gIGxhc3QgPSBOVUxMOwotKyAgbGFzdHAgPSBsMTBuZmlsZV9saXN0OwotICAgZm9yIChyZXR2YWwgPSAqbDEwbmZpbGVfbGlzdDsgcmV0dmFsICE9IE5VTEw7IHJldHZhbCA9IHJldHZhbC0+bmV4dCkKLSAgICAgaWYgKHJldHZhbC0+ZmlsZW5hbWUgIT0gTlVMTCkKLSAgICAgICB7Ci1AQCAtMjg2LDcgKzI4Myw3IEBACi0gCSAgICBicmVhazsKLSAJICB9Ci0gCi0tCWxhc3QgPSByZXR2YWw7Ci0rCWxhc3RwID0gJnJldHZhbC0+bmV4dDsKLSAgICAgICB9Ci0gCi0gICBpZiAocmV0dmFsICE9IE5VTEwgfHwgZG9fYWxsb2NhdGUgPT0gMCkKLUBAIC0yOTUsNDggKzI5Miw2NiBAQAotICAgICAgIHJldHVybiByZXR2YWw7Ci0gICAgIH0KLSAKLS0gIHJldHZhbCA9IChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICopCi0tICAgIG1hbGxvYyAoc2l6ZW9mICgqcmV0dmFsKSArIChfX2FyZ3pfY291bnQgKGRpcmxpc3QsIGRpcmxpc3RfbGVuKQotLQkJCQkqICgxIDw8IHBvcCAobWFzaykpCi0tCQkJCSogc2l6ZW9mIChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICopKSk7Ci0rICBkaXJsaXN0X2NvdW50ID0gKGRpcmxpc3RfbGVuID4gMCA/IF9fYXJnel9jb3VudCAoZGlybGlzdCwgZGlybGlzdF9sZW4pIDogMSk7Ci0rCi0rICAvKiBBbGxvY2F0ZSBhIG5ldyBsb2FkZWRfbDEwbmZpbGUuICAqLwotKyAgcmV0dmFsID0KLSsgICAgKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKikKLSsgICAgbWFsbG9jIChzaXplb2YgKCpyZXR2YWwpCi0rCSAgICArICgoKGRpcmxpc3RfY291bnQgPDwgcG9wIChtYXNrKSkgKyAoZGlybGlzdF9jb3VudCA+IDEgPyAxIDogMCkpCi0rCSAgICAgICAqIHNpemVvZiAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqKSkpOwotICAgaWYgKHJldHZhbCA9PSBOVUxMKQotICAgICByZXR1cm4gTlVMTDsKLSAKLSAgIHJldHZhbC0+ZmlsZW5hbWUgPSBhYnNfZmlsZW5hbWU7Ci0tICByZXR2YWwtPmRlY2lkZWQgPSAoX19hcmd6X2NvdW50IChkaXJsaXN0LCBkaXJsaXN0X2xlbikgIT0gMQotKwotKyAgLyogV2Ugc2V0IHJldHZhbC0+ZGF0YSB0byBOVUxMIGhlcmU7IGl0IGlzIGZpbGxlZCBpbiBsYXRlci4KLSsgICAgIFNldHRpbmcgcmV0dmFsLT5kZWNpZGVkIHRvIDEgaGVyZSBtZWFucyB0aGF0IHJldHZhbCBkb2VzIG5vdAotKyAgICAgY29ycmVzcG9uZCB0byBhIHJlYWwgZmlsZSAoZGlybGlzdF9jb3VudCA+IDEpIG9yIGlzIG5vdCB3b3J0aAotKyAgICAgbG9va2luZyB1cCAoaWYgYW4gdW5ub3JtYWxpemVkIGNvZGVzZXQgd2FzIHNwZWNpZmllZCkuICAqLwotKyAgcmV0dmFsLT5kZWNpZGVkID0gKGRpcmxpc3RfY291bnQgPiAxCi0gCQkgICAgIHx8ICgobWFzayAmIFhQR19DT0RFU0VUKSAhPSAwCi0gCQkJICYmIChtYXNrICYgWFBHX05PUk1fQ09ERVNFVCkgIT0gMCkpOwotICAgcmV0dmFsLT5kYXRhID0gTlVMTDsKLSAKLS0gIGlmIChsYXN0ID09IE5VTEwpCi0tICAgIHsKLS0gICAgICByZXR2YWwtPm5leHQgPSAqbDEwbmZpbGVfbGlzdDsKLS0gICAgICAqbDEwbmZpbGVfbGlzdCA9IHJldHZhbDsKLS0gICAgfQotLSAgZWxzZQotLSAgICB7Ci0tICAgICAgcmV0dmFsLT5uZXh0ID0gbGFzdC0+bmV4dDsKLS0gICAgICBsYXN0LT5uZXh0ID0gcmV0dmFsOwotLSAgICB9Ci0rICByZXR2YWwtPm5leHQgPSAqbGFzdHA7Ci0rICAqbGFzdHAgPSByZXR2YWw7Ci0gCi0gICBlbnRyaWVzID0gMDsKLS0gIC8qIElmIHRoZSBESVJMSVNUIGlzIGEgcmVhbCBsaXN0IHRoZSBSRVRWQUwgZW50cnkgY29ycmVzcG9uZHMgbm90IHRvCi0tICAgICBhIHJlYWwgZmlsZS4gIFNvIHdlIGhhdmUgdG8gdXNlIHRoZSBESVJMSVNUIHNlcGFyYXRpb24gbWVjaGFuaXNtCi0tICAgICBvZiB0aGUgaW5uZXIgbG9vcC4gICovCi0tICBjbnQgPSBfX2FyZ3pfY291bnQgKGRpcmxpc3QsIGRpcmxpc3RfbGVuKSA9PSAxID8gbWFzayAtIDEgOiBtYXNrOwotLSAgZm9yICg7IGNudCA+PSAwOyAtLWNudCkKLSsgIC8qIFJlY3Vyc2UgdG8gZmlsbCB0aGUgaW5oZXJpdGFuY2UgbGlzdCBvZiBSRVRWQUwuCi0rICAgICBJZiB0aGUgRElSTElTVCBpcyBhIHJlYWwgbGlzdCAoaS5lLiBESVJMSVNUX0NPVU5UID4gMSksIHRoZSBSRVRWQUwKLSsgICAgIGVudHJ5IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSByZWFsIGZpbGU7IHJldHZhbC0+ZmlsZW5hbWUgY29udGFpbnMKLSsgICAgIGNvbG9ucy4gIEluIHRoaXMgY2FzZSB3ZSBsb29wIGFjcm9zcyBhbGwgZWxlbWVudHMgb2YgRElSTElTVCBhbmQKLSsgICAgIGFjcm9zcyBhbGwgYml0IHBhdHRlcm5zIGRvbWluYXRlZCBieSBNQVNLLgotKyAgICAgSWYgdGhlIERJUkxJU1QgaXMgYSBzaW5nbGUgZGlyZWN0b3J5IG9yIGVudGlyZWx5IHJlZHVuZGFudCAoaS5lLgotKyAgICAgRElSTElTVF9DT1VOVCA9PSAxKSwgd2UgbG9vcCBhY3Jvc3MgYWxsIGJpdCBwYXR0ZXJucyBkb21pbmF0ZWQgYnkKLSsgICAgIE1BU0ssIGV4Y2x1ZGluZyBNQVNLIGl0c2VsZi4KLSsgICAgIEluIGVpdGhlciBjYXNlLCB3ZSBsb29wIGRvd24gZnJvbSBNQVNLIHRvIDAuICBUaGlzIGhhcyB0aGUgZWZmZWN0Ci0rICAgICB0aGF0IHRoZSBleHRyYSBiaXRzIGluIHRoZSBsb2NhbGUgbmFtZSBhcmUgZHJvcHBlZCBpbiB0aGlzIG9yZGVyOgotKyAgICAgZmlyc3QgdGhlIG1vZGlmaWVyLCB0aGVuIHRoZSB0ZXJyaXRvcnksIHRoZW4gdGhlIGNvZGVzZXQsIHRoZW4gdGhlCi0rICAgICBub3JtYWxpemVkX2NvZGVzZXQuICAqLwotKyAgZm9yIChjbnQgPSBkaXJsaXN0X2NvdW50ID4gMSA/IG1hc2sgOiBtYXNrIC0gMTsgY250ID49IDA7IC0tY250KQotICAgICBpZiAoKGNudCAmIH5tYXNrKSA9PSAwCi0gCSYmICgoY250ICYgQ0VOX1NQRUNJRklDKSA9PSAwIHx8IChjbnQgJiBYUEdfU1BFQ0lGSUMpID09IDApCi0gCSYmICgoY250ICYgWFBHX0NPREVTRVQpID09IDAgfHwgKGNudCAmIFhQR19OT1JNX0NPREVTRVQpID09IDApKQotICAgICAgIHsKLS0JLyogSXRlcmF0ZSBvdmVyIGFsbCBlbGVtZW50cyBvZiB0aGUgRElSTElTVC4gICovCi0tCWNoYXIgKmRpciA9IE5VTEw7Ci0rCWlmIChkaXJsaXN0X2NvdW50ID4gMSkKLSsJICB7Ci0rCSAgICAvKiBJdGVyYXRlIG92ZXIgYWxsIGVsZW1lbnRzIG9mIHRoZSBESVJMSVNULiAgKi8KLSsJICAgIGNoYXIgKmRpciA9IE5VTEw7Ci0gCi0tCXdoaWxlICgoZGlyID0gX19hcmd6X25leHQgKChjaGFyICopIGRpcmxpc3QsIGRpcmxpc3RfbGVuLCBkaXIpKQotLQkgICAgICAgIT0gTlVMTCkKLSsJICAgIHdoaWxlICgoZGlyID0gX19hcmd6X25leHQgKChjaGFyICopIGRpcmxpc3QsIGRpcmxpc3RfbGVuLCBkaXIpKQotKwkJICAgIT0gTlVMTCkKLSsJICAgICAgcmV0dmFsLT5zdWNjZXNzb3JbZW50cmllcysrXQotKwkJPSBfbmxfbWFrZV9sMTBuZmxpc3QgKGwxMG5maWxlX2xpc3QsIGRpciwgc3RybGVuIChkaXIpICsgMSwKLSsJCQkJICAgICAgY250LCBsYW5ndWFnZSwgdGVycml0b3J5LCBjb2Rlc2V0LAotKwkJCQkgICAgICBub3JtYWxpemVkX2NvZGVzZXQsIG1vZGlmaWVyLCBzcGVjaWFsLAotKwkJCQkgICAgICBzcG9uc29yLCByZXZpc2lvbiwgZmlsZW5hbWUsIDEpOwotKwkgIH0KLSsJZWxzZQotIAkgIHJldHZhbC0+c3VjY2Vzc29yW2VudHJpZXMrK10KLS0JICAgID0gX25sX21ha2VfbDEwbmZsaXN0IChsMTBuZmlsZV9saXN0LCBkaXIsIHN0cmxlbiAoZGlyKSArIDEsIGNudCwKLS0JCQkJICBsYW5ndWFnZSwgdGVycml0b3J5LCBjb2Rlc2V0LAotKwkgICAgPSBfbmxfbWFrZV9sMTBuZmxpc3QgKGwxMG5maWxlX2xpc3QsIGRpcmxpc3QsIGRpcmxpc3RfbGVuLAotKwkJCQkgIGNudCwgbGFuZ3VhZ2UsIHRlcnJpdG9yeSwgY29kZXNldCwKLSAJCQkJICBub3JtYWxpemVkX2NvZGVzZXQsIG1vZGlmaWVyLCBzcGVjaWFsLAotIAkJCQkgIHNwb25zb3IsIHJldmlzaW9uLCBmaWxlbmFtZSwgMSk7Ci0gICAgICAgfQotQEAgLTM0NywxMSArMzYyLDEwIEBACi0gDAotIC8qIE5vcm1hbGl6ZSBjb2Rlc2V0IG5hbWUuICBUaGVyZSBpcyBubyBzdGFuZGFyZCBmb3IgdGhlIGNvZGVzZXQKLSAgICBuYW1lcy4gIE5vcm1hbGl6YXRpb24gYWxsb3dzIHRoZSB1c2VyIHRvIHVzZSBhbnkgb2YgdGhlIGNvbW1vbgotLSAgIG5hbWVzLiAgKi8KLSsgICBuYW1lcy4gIFRoZSByZXR1cm4gdmFsdWUgaXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGFuZCBoYXMgdG8gYmUKLSsgICBmcmVlZCBieSB0aGUgY2FsbGVyLiAgKi8KLSBjb25zdCBjaGFyICoKLS1fbmxfbm9ybWFsaXplX2NvZGVzZXQgKGNvZGVzZXQsIG5hbWVfbGVuKQotLSAgICAgY29uc3QgY2hhciAqY29kZXNldDsKLS0gICAgIHNpemVfdCBuYW1lX2xlbjsKLStfbmxfbm9ybWFsaXplX2NvZGVzZXQgKGNvbnN0IGNoYXIgKmNvZGVzZXQsIHNpemVfdCBuYW1lX2xlbikKLSB7Ci0gICBpbnQgbGVuID0gMDsKLSAgIGludCBvbmx5X2RpZ2l0ID0gMTsKLUBAIC0zNjAsMTEgKzM3NCwxMSBAQAotICAgc2l6ZV90IGNudDsKLSAKLSAgIGZvciAoY250ID0gMDsgY250IDwgbmFtZV9sZW47ICsrY250KQotLSAgICBpZiAoaXNhbG51bSAoY29kZXNldFtjbnRdKSkKLSsgICAgaWYgKGlzYWxudW0gKCh1bnNpZ25lZCBjaGFyKSBjb2Rlc2V0W2NudF0pKQotICAgICAgIHsKLSAJKytsZW47Ci0gCi0tCWlmIChpc2FscGhhIChjb2Rlc2V0W2NudF0pKQotKwlpZiAoaXNhbHBoYSAoKHVuc2lnbmVkIGNoYXIpIGNvZGVzZXRbY250XSkpCi0gCSAgb25seV9kaWdpdCA9IDA7Ci0gICAgICAgfQotIAotQEAgLTM3OCw5ICszOTIsOSBAQAotIAl3cCA9IHJldHZhbDsKLSAKLSAgICAgICBmb3IgKGNudCA9IDA7IGNudCA8IG5hbWVfbGVuOyArK2NudCkKLS0JaWYgKGlzYWxwaGEgKGNvZGVzZXRbY250XSkpCi0tCSAgKndwKysgPSB0b2xvd2VyIChjb2Rlc2V0W2NudF0pOwotLQllbHNlIGlmIChpc2RpZ2l0IChjb2Rlc2V0W2NudF0pKQotKwlpZiAoaXNhbHBoYSAoKHVuc2lnbmVkIGNoYXIpIGNvZGVzZXRbY250XSkpCi0rCSAgKndwKysgPSB0b2xvd2VyICgodW5zaWduZWQgY2hhcikgY29kZXNldFtjbnRdKTsKLSsJZWxzZSBpZiAoaXNkaWdpdCAoKHVuc2lnbmVkIGNoYXIpIGNvZGVzZXRbY250XSkpCi0gCSAgKndwKysgPSBjb2Rlc2V0W2NudF07Ci0gCi0gICAgICAgKndwID0gJ1wwJzsKLUBAIC0zOTgsOSArNDEyLDcgQEAKLSAgICB0byBiZSBkZWZpbmVkLiAgKi8KLSAjaWYgIV9MSUJDICYmICFIQVZFX1NUUENQWQotIHN0YXRpYyBjaGFyICoKLS1zdHBjcHkgKGRlc3QsIHNyYykKLS0gICAgIGNoYXIgKmRlc3Q7Ci0tICAgICBjb25zdCBjaGFyICpzcmM7Ci0rc3RwY3B5IChjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMpCi0gewotICAgd2hpbGUgKCgqZGVzdCsrID0gKnNyYysrKSAhPSAnXDAnKQotICAgICAvKiBEbyBub3RoaW5nLiAqLyA7Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvbGliZ2V0dGV4dC5oCTE5OTgtMDQtMjYgMDk6MjI6MzYuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xpYmdldHRleHQuaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotQEAgLTEsMTgyICswLDAgQEAKLS0vKiBNZXNzYWdlIGNhdGFsb2dzIGZvciBpbnRlcm5hdGlvbmFsaXphdGlvbi4KLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLS0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLS0KLS0vKiBCZWNhdXNlIG9uIHNvbWUgc3lzdGVtcyAoZS5nLiBTb2xhcmlzKSB3ZSBzb21ldGltZXMgaGF2ZSB0byBpbmNsdWRlCi0tICAgdGhlIHN5c3RlbXMgbGliaW50bC5oIGFzIHdlbGwgYXMgdGhpcyBmaWxlIHdlIGhhdmUgbW9yZSBjb21wbGV4Ci0tICAgaW5jbHVkZSBwcm90ZWN0aW9uIGFib3ZlLiAgQnV0IHRoZSBzeXN0ZW1zIGhlYWRlciBtaWdodCBwZXJoYXBzIGFsc28KLS0gICBkZWZpbmUgX0xJQklOVExfSCBhbmQgdGhlcmVmb3JlIHdlIGhhdmUgdG8gcHJvdGVjdCB0aGUgZGVmaW5pdGlvbiBoZXJlLiAgKi8KLS0KLS0jaWYgIWRlZmluZWQgKF9MSUJJTlRMX0gpIHx8ICFkZWZpbmVkIChfTElCR0VUVEVYVF9IKQotLSNpZiAhZGVmaW5lZCAoX0xJQklOVExfSCkKLS0jIGRlZmluZSBfTElCSU5UTF9ICTEKLS0jZW5kaWYKLS0jZGVmaW5lIF9MSUJHRVRURVhUX0gJMQotLQotLS8qIFdlIGRlZmluZSBhbiBhZGRpdGlvbmFsIHN5bWJvbCB0byBzaWduYWwgdGhhdCB3ZSB1c2UgdGhlIEdOVQotLSAgIGltcGxlbWVudGF0aW9uIG9mIGdldHRleHQuICAqLwotLSNkZWZpbmUgX19VU0VfR05VX0dFVFRFWFQgMQotLQotLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0KLS0jaWYgSEFWRV9MT0NBTEVfSAotLSMgaW5jbHVkZSA8bG9jYWxlLmg+Ci0tI2VuZGlmCi0tCi0tCi0tI2lmZGVmIF9fY3BsdXNwbHVzCi0tZXh0ZXJuICJDIiB7Ci0tI2VuZGlmCi0tCi0tLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotLQotLSNpZm5kZWYgUEFSQU1TCi0tIyBpZiBfX1NURENfXwotLSMgIGRlZmluZSBQQVJBTVMoYXJncykgYXJncwotLSMgZWxzZQotLSMgIGRlZmluZSBQQVJBTVMoYXJncykgKCkKLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tI2lmbmRlZiBOVUxMCi0tIyBpZiAhZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9fR05VQ19fCi0tIyAgZGVmaW5lIE5VTEwgKCh2b2lkICopIDApCi0tIyBlbHNlCi0tIyAgZGVmaW5lIE5VTEwgKDApCi0tIyBlbmRpZgotLSNlbmRpZgotLQotLSNpZiAhSEFWRV9MQ19NRVNTQUdFUwotLS8qIFRoaXMgdmFsdWUgZGV0ZXJtaW5lcyB0aGUgYmVoYXZpb3VyIG9mIHRoZSBnZXR0ZXh0KCkgYW5kIGRnZXR0ZXh0KCkKLS0gICBmdW5jdGlvbi4gIEJ1dCBzb21lIHN5c3RlbSBkb2VzIG5vdCBoYXZlIHRoaXMgZGVmaW5lZC4gIERlZmluZSBpdAotLSAgIHRvIGEgZGVmYXVsdCB2YWx1ZS4gICovCi0tIyBkZWZpbmUgTENfTUVTU0FHRVMgKC0xKQotLSNlbmRpZgotLQotLQotLS8qIERlY2xhcmF0aW9ucyBmb3IgZ2V0dGV4dC11c2luZy1jYXRnZXRzIGludGVyZmFjZS4gIERlcml2ZWQgZnJvbQotLSAgIEppbSBNZXllcmluZydzIGxpYmludGwuaC4gICovCi0tc3RydWN0IF9tc2dfZW50Ci0tewotLSAgY29uc3QgY2hhciAqX21zZzsKLS0gIGludCBfbXNnX251bWJlcjsKLS19OwotLQotLQotLSNpZiBIQVZFX0NBVEdFVFMKLS0vKiBUaGVzZSB0d28gdmFyaWFibGVzIGFyZSBkZWZpbmVkIGluIHRoZSBhdXRvbWF0aWNhbGx5IGJ5IHBvLXRvLXRibC5zZWQKLS0gICBnZW5lcmF0ZWQgZmlsZSBgY2F0LWlkLXRibC5jJy4gICovCi0tZXh0ZXJuIGNvbnN0IHN0cnVjdCBfbXNnX2VudCBfbXNnX3RibFtdOwotLWV4dGVybiBpbnQgX21zZ190YmxfbGVuZ3RoOwotLSNlbmRpZgotLQotLQotLS8qIEZvciBhdXRvbWF0aWNhbCBleHRyYWN0aW9uIG9mIG1lc3NhZ2VzIHNvbWV0aW1lcyBubyByZWFsCi0tICAgdHJhbnNsYXRpb24gaXMgbmVlZGVkLiAgSW5zdGVhZCB0aGUgc3RyaW5nIGl0c2VsZiBpcyB0aGUgcmVzdWx0LiAgKi8KLS0jZGVmaW5lIGdldHRleHRfbm9vcChTdHIpIChTdHIpCi0tCi0tLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgY3VycmVudCBkZWZhdWx0IG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQKLS0gICBMQ19NRVNTQUdFUyBsb2NhbGUuICBJZiBub3QgZm91bmQsIHJldHVybnMgTVNHSUQgaXRzZWxmICh0aGUgZGVmYXVsdAotLSAgIHRleHQpLiAgKi8KLS1leHRlcm4gY2hhciAqZ2V0dGV4dCBQQVJBTVMgKChjb25zdCBjaGFyICpfX21zZ2lkKSk7Ci0tZXh0ZXJuIGNoYXIgKmdldHRleHRfXyBQQVJBTVMgKChjb25zdCBjaGFyICpfX21zZ2lkKSk7Ci0tCi0tLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50Ci0tICAgTENfTUVTU0FHRVMgbG9jYWxlLiAgKi8KLS1leHRlcm4gY2hhciAqZGdldHRleHQgUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkKSk7Ci0tZXh0ZXJuIGNoYXIgKmRnZXR0ZXh0X18gUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotLQkJCQkgY29uc3QgY2hhciAqX19tc2dpZCkpOwotLQotLS8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudCBDQVRFR09SWQotLSAgIGxvY2FsZS4gICovCi0tZXh0ZXJuIGNoYXIgKmRjZ2V0dGV4dCBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQsCi0tCQkJCWludCBfX2NhdGVnb3J5KSk7Ci0tZXh0ZXJuIGNoYXIgKmRjZ2V0dGV4dF9fIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLS0JCQkJICBjb25zdCBjaGFyICpfX21zZ2lkLCBpbnQgX19jYXRlZ29yeSkpOwotLQotLQotLS8qIFNldCB0aGUgY3VycmVudCBkZWZhdWx0IG1lc3NhZ2UgY2F0YWxvZyB0byBET01BSU5OQU1FLgotLSAgIElmIERPTUFJTk5BTUUgaXMgbnVsbCwgcmV0dXJuIHRoZSBjdXJyZW50IGRlZmF1bHQuCi0tICAgSWYgRE9NQUlOTkFNRSBpcyAiIiwgcmVzZXQgdG8gdGhlIGRlZmF1bHQgb2YgIm1lc3NhZ2VzIi4gICovCi0tZXh0ZXJuIGNoYXIgKnRleHRkb21haW4gUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lKSk7Ci0tZXh0ZXJuIGNoYXIgKnRleHRkb21haW5fXyBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUpKTsKLS0KLS0vKiBTcGVjaWZ5IHRoYXQgdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIHdpbGwgYmUgZm91bmQKLS0gICBpbiBESVJOQU1FIHJhdGhlciB0aGFuIGluIHRoZSBzeXN0ZW0gbG9jYWxlIGRhdGEgYmFzZS4gICovCi0tZXh0ZXJuIGNoYXIgKmJpbmR0ZXh0ZG9tYWluIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLS0JCQkJICBjb25zdCBjaGFyICpfX2Rpcm5hbWUpKTsKLS1leHRlcm4gY2hhciAqYmluZHRleHRkb21haW5fXyBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0tCQkJCSAgICBjb25zdCBjaGFyICpfX2Rpcm5hbWUpKTsKLS0KLS0jaWYgRU5BQkxFX05MUwotLQotLS8qIFNvbGFyaXMgMi4zIGhhcyB0aGUgZ2V0dGV4dCBmdW5jdGlvbiBidXQgZGNnZXR0ZXh0IGlzIG1pc3NpbmcuCi0tICAgU28gd2Ugb21pdCB0aGlzIG9wdGltaXphdGlvbiBmb3IgU29sYXJpcyAyLjMuICBCVFcsIFNvbGFyaXMgMi40Ci0tICAgaGFzIGRjZ2V0dGV4dC4gICovCi0tIyBpZiAhSEFWRV9DQVRHRVRTICYmICghSEFWRV9HRVRURVhUIHx8IEhBVkVfRENHRVRURVhUKQotLQotLSMgIGRlZmluZSBnZXR0ZXh0KE1zZ2lkKQkJCQkJCSAgICAgIFwKLS0gICAgIGRnZXR0ZXh0IChOVUxMLCBNc2dpZCkKLS0KLS0jICBkZWZpbmUgZGdldHRleHQoRG9tYWlubmFtZSwgTXNnaWQpCQkJCQkgICAgICBcCi0tICAgICBkY2dldHRleHQgKERvbWFpbm5hbWUsIE1zZ2lkLCBMQ19NRVNTQUdFUykKLS0KLS0jICBpZiBkZWZpbmVkIF9fR05VQ19fICYmIF9fR05VQ19fID09IDIgJiYgX19HTlVDX01JTk9SX18gPj0gNwotLS8qIFRoaXMgZ2xvYmFsIHZhcmlhYmxlIGlzIGRlZmluZWQgaW4gbG9hZG1zZ2NhdC5jLiAgV2UgbmVlZCBhIHNpZ24sCi0tICAgd2hldGhlciBhIG5ldyBjYXRhbG9nIHdhcyBsb2FkZWQsIHdoaWNoIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYWxsCi0tICAgdHJhbnNsYXRpb25zLiAgKi8KLS1leHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7Ci0tCi0tIyAgIGRlZmluZSBkY2dldHRleHQoRG9tYWlubmFtZSwgTXNnaWQsIENhdGVnb3J5KQkJCSAgICAgIFwKLS0gIChfX2V4dGVuc2lvbl9fCQkJCQkJCSAgICAgIFwKLS0gICAoewkJCQkJCQkJCSAgICAgIFwKLS0gICAgIGNoYXIgKl9fcmVzdWx0OwkJCQkJCQkgICAgICBcCi0tICAgICBpZiAoX19idWlsdGluX2NvbnN0YW50X3AgKE1zZ2lkKSkJCQkJCSAgICAgIFwKLS0gICAgICAgewkJCQkJCQkJICAgICAgXAotLQkgc3RhdGljIGNoYXIgKl9fdHJhbnNsYXRpb25fXzsJCQkJCSAgICAgIFwKLS0JIHN0YXRpYyBpbnQgX19jYXRhbG9nX2NvdW50ZXJfXzsJCQkJICAgICAgXAotLQkgaWYgKCEgX190cmFuc2xhdGlvbl9fIHx8IF9fY2F0YWxvZ19jb3VudGVyX18gIT0gX25sX21zZ19jYXRfY250cikgICAgXAotLQkgICB7CQkJCQkJCQkgICAgICBcCi0tCSAgICAgX190cmFuc2xhdGlvbl9fID0JCQkJCQkgICAgICBcCi0tCSAgICAgICBkY2dldHRleHRfXyAoRG9tYWlubmFtZSwgTXNnaWQsIENhdGVnb3J5KTsJCSAgICAgIFwKLS0JICAgICBfX2NhdGFsb2dfY291bnRlcl9fID0gX25sX21zZ19jYXRfY250cjsJCQkgICAgICBcCi0tCSAgIH0JCQkJCQkJCSAgICAgIFwKLS0JIF9fcmVzdWx0ID0gX190cmFuc2xhdGlvbl9fOwkJCQkJICAgICAgXAotLSAgICAgICB9CQkJCQkJCQkgICAgICBcCi0tICAgICBlbHNlCQkJCQkJCQkgICAgICBcCi0tICAgICAgIF9fcmVzdWx0ID0gZGNnZXR0ZXh0X18gKERvbWFpbm5hbWUsIE1zZ2lkLCBDYXRlZ29yeSk7CQkgICAgICBcCi0tICAgICBfX3Jlc3VsdDsJCQkJCQkJCSAgICAgIFwKLS0gICAgfSkpCi0tIyAgZW5kaWYKLS0jIGVuZGlmCi0tCi0tI2Vsc2UKLS0KLS0jIGRlZmluZSBnZXR0ZXh0KE1zZ2lkKSAoTXNnaWQpCi0tIyBkZWZpbmUgZGdldHRleHQoRG9tYWlubmFtZSwgTXNnaWQpIChNc2dpZCkKLS0jIGRlZmluZSBkY2dldHRleHQoRG9tYWlubmFtZSwgTXNnaWQsIENhdGVnb3J5KSAoTXNnaWQpCi0tIyBkZWZpbmUgdGV4dGRvbWFpbihEb21haW5uYW1lKSB3aGlsZSAoMCkgLyogbm90aGluZyAqLwotLSMgZGVmaW5lIGJpbmR0ZXh0ZG9tYWluKERvbWFpbm5hbWUsIERpcm5hbWUpIHdoaWxlICgwKSAvKiBub3RoaW5nICovCi0tCi0tI2VuZGlmCi0tCi0tLyogQEAgYmVnaW4gb2YgZXBpbG9nIEBAICovCi0tCi0tI2lmZGVmIF9fY3BsdXNwbHVzCi0tfQotLSNlbmRpZgotLQotLSNlbmRpZgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2xpYmdudWludGwuaC5pbgkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9saWJnbnVpbnRsLmguaW4JMjAwNC0wOS0xMiAxNDo0MDozNC40NjI3MzE4MjQgLTA0MDAKLUBAIC0wLDAgKzEsMzgzIEBACi0rLyogTWVzc2FnZSBjYXRhbG9ncyBmb3IgaW50ZXJuYXRpb25hbGl6YXRpb24uCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTcsIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmbmRlZiBfTElCSU5UTF9ICi0rI2RlZmluZSBfTElCSU5UTF9ICTEKLSsKLSsjaW5jbHVkZSA8bG9jYWxlLmg+Ci0rCi0rLyogVGhlIExDX01FU1NBR0VTIGxvY2FsZSBjYXRlZ29yeSBpcyB0aGUgY2F0ZWdvcnkgdXNlZCBieSB0aGUgZnVuY3Rpb25zCi0rICAgZ2V0dGV4dCgpIGFuZCBkZ2V0dGV4dCgpLiAgSXQgaXMgc3BlY2lmaWVkIGluIFBPU0lYLCBidXQgbm90IGluIEFOU0kgQy4KLSsgICBPbiBzeXN0ZW1zIHRoYXQgZG9uJ3QgZGVmaW5lIGl0LCB1c2UgYW4gYXJiaXRyYXJ5IHZhbHVlIGluc3RlYWQuCi0rICAgT24gU29sYXJpcywgPGxvY2FsZS5oPiBkZWZpbmVzIF9fTE9DQUxFX0ggKG9yIF9MT0NBTEVfSCBpbiBTb2xhcmlzIDIuNSkKLSsgICB0aGVuIGluY2x1ZGVzIDxsaWJpbnRsLmg+IChpLmUuIHRoaXMgZmlsZSEpIGFuZCB0aGVuIG9ubHkgZGVmaW5lcwotKyAgIExDX01FU1NBR0VTLiAgVG8gYXZvaWQgYSByZWRlZmluaXRpb24gd2FybmluZywgZG9uJ3QgZGVmaW5lIExDX01FU1NBR0VTCi0rICAgaW4gdGhpcyBjYXNlLiAgKi8KLSsjaWYgIWRlZmluZWQgTENfTUVTU0FHRVMgJiYgIShkZWZpbmVkIF9fTE9DQUxFX0ggfHwgKGRlZmluZWQgX0xPQ0FMRV9IICYmIGRlZmluZWQgX19zdW4pKQotKyMgZGVmaW5lIExDX01FU1NBR0VTIDE3MjkKLSsjZW5kaWYKLSsKLSsvKiBXZSBkZWZpbmUgYW4gYWRkaXRpb25hbCBzeW1ib2wgdG8gc2lnbmFsIHRoYXQgd2UgdXNlIHRoZSBHTlUKLSsgICBpbXBsZW1lbnRhdGlvbiBvZiBnZXR0ZXh0LiAgKi8KLSsjZGVmaW5lIF9fVVNFX0dOVV9HRVRURVhUIDEKLSsKLSsvKiBQcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdXBwb3J0ZWQgZmlsZSBmb3JtYXRzLiAgUmV0dXJucyB0aGUKLSsgICBtYXhpbXVtIG1pbm9yIHJldmlzaW9uIG51bWJlciBzdXBwb3J0ZWQgZm9yIGEgZ2l2ZW4gbWFqb3IgcmV2aXNpb24uICAqLwotKyNkZWZpbmUgX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04obWFqb3IpIFwKLSsgICgobWFqb3IpID09IDAgPyAxIDogLTEpCi0rCi0rLyogUmVzb2x2ZSBhIHBsYXRmb3JtIHNwZWNpZmljIGNvbmZsaWN0IG9uIERKR1BQLiAgR05VIGdldHRleHQgdGFrZXMKLSsgICBwcmVjZWRlbmNlIG92ZXIgX2NvbmlvX2dldHRleHQuICAqLwotKyNpZmRlZiBfX0RKR1BQX18KLSsjIHVuZGVmIGdldHRleHQKLSsjZW5kaWYKLSsKLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSsKLSsKLSsvKiBXZSByZWRpcmVjdCB0aGUgZnVuY3Rpb25zIHRvIHRob3NlIHByZWZpeGVkIHdpdGggImxpYmludGxfIi4gIFRoaXMgaXMKLSsgICBuZWNlc3NhcnksIGJlY2F1c2Ugc29tZSBzeXN0ZW1zIGRlZmluZSBnZXR0ZXh0L3RleHRkb21haW4vLi4uIGluIHRoZSBDCi0rICAgbGlicmFyeSAobmFtZWx5LCBTb2xhcmlzIDIuNCBhbmQgbmV3ZXIsIGFuZCBHTlUgbGliYyAyLjAgYW5kIG5ld2VyKS4KLSsgICBJZiB3ZSB1c2VkIHRoZSB1bnByZWZpeGVkIG5hbWVzLCB0aGVyZSB3b3VsZCBiZSBjYXNlcyB3aGVyZSB0aGUKLSsgICBkZWZpbml0aW9uIGluIHRoZSBDIGxpYnJhcnkgd291bGQgb3ZlcnJpZGUgdGhlIG9uZSBpbiB0aGUgbGliaW50bC5zbwotKyAgIHNoYXJlZCBsaWJyYXJ5LiAgUmVjYWxsIHRoYXQgb24gRUxGIHN5c3RlbXMsIHRoZSBzeW1ib2xzIGFyZSBsb29rZWQKLSsgICB1cCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgotKyAgICAgMS4gaW4gdGhlIGV4ZWN1dGFibGUsCi0rICAgICAyLiBpbiB0aGUgc2hhcmVkIGxpYnJhcmllcyBzcGVjaWZpZWQgb24gdGhlIGxpbmsgY29tbWFuZCBsaW5lLCBpbiBvcmRlciwKLSsgICAgIDMuIGluIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhlIHNoYXJlZCBsaWJyYXJpZXMgc3BlY2lmaWVkIG9uIHRoZSBsaW5rCi0rICAgICAgICBjb21tYW5kIGxpbmUsCi0rICAgICA0LiBpbiB0aGUgZGxvcGVuKCllZCBzaGFyZWQgbGlicmFyaWVzLCBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlCi0rICAgICAgICBkbG9wZW4oKWVkLgotKyAgIFRoZSBkZWZpbml0aW9uIGluIHRoZSBDIGxpYnJhcnkgd291bGQgb3ZlcnJpZGUgdGhlIG9uZSBpbiBsaWJpbnRsLnNvIGlmCi0rICAgZWl0aGVyCi0rICAgICAqIC1sYyBpcyBnaXZlbiBvbiB0aGUgbGluayBjb21tYW5kIGxpbmUgYW5kIC1saW50bCBpc24ndCwgb3IKLSsgICAgICogLWxjIGlzIGdpdmVuIG9uIHRoZSBsaW5rIGNvbW1hbmQgbGluZSBiZWZvcmUgLWxpbnRsLCBvcgotKyAgICAgKiBsaWJpbnRsLnNvIGlzIGEgZGVwZW5kZW5jeSBvZiBhIGRsb3BlbigpZWQgc2hhcmVkIGxpYnJhcnkgYnV0IG5vdAotKyAgICAgICBsaW5rZWQgdG8gdGhlIGV4ZWN1dGFibGUgYXQgbGluayB0aW1lLgotKyAgIFNpbmNlIFNvbGFyaXMgZ2V0dGV4dCgpIGJlaGF2ZXMgZGlmZmVyZW50bHkgdGhhbiBHTlUgZ2V0dGV4dCgpLCB0aGlzCi0rICAgd291bGQgYmUgdW5hY2NlcHRhYmxlLgotKwotKyAgIFRoZSByZWRpcmVjdGlvbiBoYXBwZW5zIGJ5IGRlZmF1bHQgdGhyb3VnaCBtYWNyb3MgaW4gQywgc28gdGhhdCAmZ2V0dGV4dAotKyAgIGlzIGluZGVwZW5kZW50IG9mIHRoZSBjb21waWxhdGlvbiB1bml0LCBidXQgdGhyb3VnaCBpbmxpbmUgZnVuY3Rpb25zIGluCi0rICAgQysrLCBpbiBvcmRlciBub3QgdG8gaW50ZXJmZXJlIHdpdGggdGhlIG5hbWUgbWFuZ2xpbmcgb2YgY2xhc3MgZmllbGRzIG9yCi0rICAgY2xhc3MgbWV0aG9kcyBjYWxsZWQgJ2dldHRleHQnLiAgKi8KLSsKLSsvKiBUaGUgdXNlciBjYW4gZGVmaW5lIF9JTlRMX1JFRElSRUNUX0lOTElORSBvciBfSU5UTF9SRURJUkVDVF9NQUNST1MuCi0rICAgSWYgaGUgZG9lc24ndCwgd2UgY2hvb3NlIHRoZSBtZXRob2QuICBBIHRoaXJkIHBvc3NpYmxlIG1ldGhvZCBpcwotKyAgIF9JTlRMX1JFRElSRUNUX0FTTSwgc3VwcG9ydGVkIG9ubHkgYnkgR0NDLiAgKi8KLSsjaWYgIShkZWZpbmVkIF9JTlRMX1JFRElSRUNUX0lOTElORSB8fCBkZWZpbmVkIF9JTlRMX1JFRElSRUNUX01BQ1JPUykKLSsjIGlmIF9fR05VQ19fID49IDIgJiYgIWRlZmluZWQgX19BUFBMRV9DQ19fICYmICFkZWZpbmVkIF9fTUlOR1czMl9fICYmICEoX19HTlVDX18gPT0gMiAmJiBkZWZpbmVkIF9BSVgpICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1c3BsdXMpCi0rIyAgZGVmaW5lIF9JTlRMX1JFRElSRUNUX0FTTQotKyMgZWxzZQotKyMgIGlmZGVmIF9fY3BsdXNwbHVzCi0rIyAgIGRlZmluZSBfSU5UTF9SRURJUkVDVF9JTkxJTkUKLSsjICBlbHNlCi0rIyAgIGRlZmluZSBfSU5UTF9SRURJUkVDVF9NQUNST1MKLSsjICBlbmRpZgotKyMgZW5kaWYKLSsjZW5kaWYKLSsvKiBBdXhpbGlhcnkgbWFjcm9zLiAgKi8KLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfQVNNCi0rIyBkZWZpbmUgX0lOVExfQVNNKGNuYW1lKSBfX2FzbV9fIChfSU5UTF9BU01OQU1FIChfX1VTRVJfTEFCRUxfUFJFRklYX18sICNjbmFtZSkpCi0rIyBkZWZpbmUgX0lOVExfQVNNTkFNRShwcmVmaXgsY25hbWVzdHJpbmcpIF9JTlRMX1NUUklOR0lGWSAocHJlZml4KSBjbmFtZXN0cmluZwotKyMgZGVmaW5lIF9JTlRMX1NUUklOR0lGWShwcmVmaXgpICNwcmVmaXgKLSsjZWxzZQotKyMgZGVmaW5lIF9JTlRMX0FTTShjbmFtZSkKLSsjZW5kaWYKLSsKLSsvKiBMb29rIHVwIE1TR0lEIGluIHRoZSBjdXJyZW50IGRlZmF1bHQgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudAotKyAgIExDX01FU1NBR0VTIGxvY2FsZS4gIElmIG5vdCBmb3VuZCwgcmV0dXJucyBNU0dJRCBpdHNlbGYgKHRoZSBkZWZhdWx0Ci0rICAgdGV4dCkuICAqLwotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9JTkxJTkUKLStleHRlcm4gY2hhciAqbGliaW50bF9nZXR0ZXh0IChjb25zdCBjaGFyICpfX21zZ2lkKTsKLStzdGF0aWMgaW5saW5lIGNoYXIgKmdldHRleHQgKGNvbnN0IGNoYXIgKl9fbXNnaWQpCi0rewotKyAgcmV0dXJuIGxpYmludGxfZ2V0dGV4dCAoX19tc2dpZCk7Ci0rfQotKyNlbHNlCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX01BQ1JPUwotKyMgZGVmaW5lIGdldHRleHQgbGliaW50bF9nZXR0ZXh0Ci0rI2VuZGlmCi0rZXh0ZXJuIGNoYXIgKmdldHRleHQgKGNvbnN0IGNoYXIgKl9fbXNnaWQpCi0rICAgICAgIF9JTlRMX0FTTSAobGliaW50bF9nZXR0ZXh0KTsKLSsjZW5kaWYKLSsKLSsvKiBMb29rIHVwIE1TR0lEIGluIHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQKLSsgICBMQ19NRVNTQUdFUyBsb2NhbGUuICAqLwotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9JTkxJTkUKLStleHRlcm4gY2hhciAqbGliaW50bF9kZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkKTsKLStzdGF0aWMgaW5saW5lIGNoYXIgKmRnZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQpCi0rewotKyAgcmV0dXJuIGxpYmludGxfZGdldHRleHQgKF9fZG9tYWlubmFtZSwgX19tc2dpZCk7Ci0rfQotKyNlbHNlCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX01BQ1JPUwotKyMgZGVmaW5lIGRnZXR0ZXh0IGxpYmludGxfZGdldHRleHQKLSsjZW5kaWYKLStleHRlcm4gY2hhciAqZGdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZCkKLSsgICAgICAgX0lOVExfQVNNIChsaWJpbnRsX2RnZXR0ZXh0KTsKLSsjZW5kaWYKLSsKLSsvKiBMb29rIHVwIE1TR0lEIGluIHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQgQ0FURUdPUlkKLSsgICBsb2NhbGUuICAqLwotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9JTkxJTkUKLStleHRlcm4gY2hhciAqbGliaW50bF9kY2dldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZCwKLSsJCQkJaW50IF9fY2F0ZWdvcnkpOwotK3N0YXRpYyBpbmxpbmUgY2hhciAqZGNnZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQsCi0rCQkJICAgICAgIGludCBfX2NhdGVnb3J5KQotK3sKLSsgIHJldHVybiBsaWJpbnRsX2RjZ2V0dGV4dCAoX19kb21haW5uYW1lLCBfX21zZ2lkLCBfX2NhdGVnb3J5KTsKLSt9Ci0rI2Vsc2UKLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfTUFDUk9TCi0rIyBkZWZpbmUgZGNnZXR0ZXh0IGxpYmludGxfZGNnZXR0ZXh0Ci0rI2VuZGlmCi0rZXh0ZXJuIGNoYXIgKmRjZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkLAotKwkJCWludCBfX2NhdGVnb3J5KQotKyAgICAgICBfSU5UTF9BU00gKGxpYmludGxfZGNnZXR0ZXh0KTsKLSsjZW5kaWYKLSsKLSsKLSsvKiBTaW1pbGFyIHRvIGBnZXR0ZXh0JyBidXQgc2VsZWN0IHRoZSBwbHVyYWwgZm9ybSBjb3JyZXNwb25kaW5nIHRvIHRoZQotKyAgIG51bWJlciBOLiAgKi8KLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfSU5MSU5FCi0rZXh0ZXJuIGNoYXIgKmxpYmludGxfbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fbXNnaWQxLCBjb25zdCBjaGFyICpfX21zZ2lkMiwKLSsJCQkgICAgICAgdW5zaWduZWQgbG9uZyBpbnQgX19uKTsKLStzdGF0aWMgaW5saW5lIGNoYXIgKm5nZXR0ZXh0IChjb25zdCBjaGFyICpfX21zZ2lkMSwgY29uc3QgY2hhciAqX19tc2dpZDIsCi0rCQkJICAgICAgdW5zaWduZWQgbG9uZyBpbnQgX19uKQotK3sKLSsgIHJldHVybiBsaWJpbnRsX25nZXR0ZXh0IChfX21zZ2lkMSwgX19tc2dpZDIsIF9fbik7Ci0rfQotKyNlbHNlCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX01BQ1JPUwotKyMgZGVmaW5lIG5nZXR0ZXh0IGxpYmludGxfbmdldHRleHQKLSsjZW5kaWYKLStleHRlcm4gY2hhciAqbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fbXNnaWQxLCBjb25zdCBjaGFyICpfX21zZ2lkMiwKLSsJCSAgICAgICB1bnNpZ25lZCBsb25nIGludCBfX24pCi0rICAgICAgIF9JTlRMX0FTTSAobGliaW50bF9uZ2V0dGV4dCk7Ci0rI2VuZGlmCi0rCi0rLyogU2ltaWxhciB0byBgZGdldHRleHQnIGJ1dCBzZWxlY3QgdGhlIHBsdXJhbCBmb3JtIGNvcnJlc3BvbmRpbmcgdG8gdGhlCi0rICAgbnVtYmVyIE4uICAqLwotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9JTkxJTkUKLStleHRlcm4gY2hhciAqbGliaW50bF9kbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZDEsCi0rCQkJCWNvbnN0IGNoYXIgKl9fbXNnaWQyLCB1bnNpZ25lZCBsb25nIGludCBfX24pOwotK3N0YXRpYyBpbmxpbmUgY2hhciAqZG5nZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQxLAotKwkJCSAgICAgICBjb25zdCBjaGFyICpfX21zZ2lkMiwgdW5zaWduZWQgbG9uZyBpbnQgX19uKQotK3sKLSsgIHJldHVybiBsaWJpbnRsX2RuZ2V0dGV4dCAoX19kb21haW5uYW1lLCBfX21zZ2lkMSwgX19tc2dpZDIsIF9fbik7Ci0rfQotKyNlbHNlCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX01BQ1JPUwotKyMgZGVmaW5lIGRuZ2V0dGV4dCBsaWJpbnRsX2RuZ2V0dGV4dAotKyNlbmRpZgotK2V4dGVybiBjaGFyICpkbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLSsJCQljb25zdCBjaGFyICpfX21zZ2lkMSwgY29uc3QgY2hhciAqX19tc2dpZDIsCi0rCQkJdW5zaWduZWQgbG9uZyBpbnQgX19uKQotKyAgICAgICBfSU5UTF9BU00gKGxpYmludGxfZG5nZXR0ZXh0KTsKLSsjZW5kaWYKLSsKLSsvKiBTaW1pbGFyIHRvIGBkY2dldHRleHQnIGJ1dCBzZWxlY3QgdGhlIHBsdXJhbCBmb3JtIGNvcnJlc3BvbmRpbmcgdG8gdGhlCi0rICAgbnVtYmVyIE4uICAqLwotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9JTkxJTkUKLStleHRlcm4gY2hhciAqbGliaW50bF9kY25nZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0rCQkJCSBjb25zdCBjaGFyICpfX21zZ2lkMSwgY29uc3QgY2hhciAqX19tc2dpZDIsCi0rCQkJCSB1bnNpZ25lZCBsb25nIGludCBfX24sIGludCBfX2NhdGVnb3J5KTsKLStzdGF0aWMgaW5saW5lIGNoYXIgKmRjbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLSsJCQkJY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAotKwkJCQl1bnNpZ25lZCBsb25nIGludCBfX24sIGludCBfX2NhdGVnb3J5KQotK3sKLSsgIHJldHVybiBsaWJpbnRsX2RjbmdldHRleHQgKF9fZG9tYWlubmFtZSwgX19tc2dpZDEsIF9fbXNnaWQyLCBfX24sIF9fY2F0ZWdvcnkpOwotK30KLSsjZWxzZQotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9NQUNST1MKLSsjIGRlZmluZSBkY25nZXR0ZXh0IGxpYmludGxfZGNuZ2V0dGV4dAotKyNlbmRpZgotK2V4dGVybiBjaGFyICpkY25nZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0rCQkJIGNvbnN0IGNoYXIgKl9fbXNnaWQxLCBjb25zdCBjaGFyICpfX21zZ2lkMiwKLSsJCQkgdW5zaWduZWQgbG9uZyBpbnQgX19uLCBpbnQgX19jYXRlZ29yeSkKLSsgICAgICAgX0lOVExfQVNNIChsaWJpbnRsX2RjbmdldHRleHQpOwotKyNlbmRpZgotKwotKwotKy8qIFNldCB0aGUgY3VycmVudCBkZWZhdWx0IG1lc3NhZ2UgY2F0YWxvZyB0byBET01BSU5OQU1FLgotKyAgIElmIERPTUFJTk5BTUUgaXMgbnVsbCwgcmV0dXJuIHRoZSBjdXJyZW50IGRlZmF1bHQuCi0rICAgSWYgRE9NQUlOTkFNRSBpcyAiIiwgcmVzZXQgdG8gdGhlIGRlZmF1bHQgb2YgIm1lc3NhZ2VzIi4gICovCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX0lOTElORQotK2V4dGVybiBjaGFyICpsaWJpbnRsX3RleHRkb21haW4gKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSk7Ci0rc3RhdGljIGlubGluZSBjaGFyICp0ZXh0ZG9tYWluIChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUpCi0rewotKyAgcmV0dXJuIGxpYmludGxfdGV4dGRvbWFpbiAoX19kb21haW5uYW1lKTsKLSt9Ci0rI2Vsc2UKLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfTUFDUk9TCi0rIyBkZWZpbmUgdGV4dGRvbWFpbiBsaWJpbnRsX3RleHRkb21haW4KLSsjZW5kaWYKLStleHRlcm4gY2hhciAqdGV4dGRvbWFpbiAoY29uc3QgY2hhciAqX19kb21haW5uYW1lKQotKyAgICAgICBfSU5UTF9BU00gKGxpYmludGxfdGV4dGRvbWFpbik7Ci0rI2VuZGlmCi0rCi0rLyogU3BlY2lmeSB0aGF0IHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyB3aWxsIGJlIGZvdW5kCi0rICAgaW4gRElSTkFNRSByYXRoZXIgdGhhbiBpbiB0aGUgc3lzdGVtIGxvY2FsZSBkYXRhIGJhc2UuICAqLwotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9JTkxJTkUKLStleHRlcm4gY2hhciAqbGliaW50bF9iaW5kdGV4dGRvbWFpbiAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCQkgICAgIGNvbnN0IGNoYXIgKl9fZGlybmFtZSk7Ci0rc3RhdGljIGlubGluZSBjaGFyICpiaW5kdGV4dGRvbWFpbiAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCQkgICAgY29uc3QgY2hhciAqX19kaXJuYW1lKQotK3sKLSsgIHJldHVybiBsaWJpbnRsX2JpbmR0ZXh0ZG9tYWluIChfX2RvbWFpbm5hbWUsIF9fZGlybmFtZSk7Ci0rfQotKyNlbHNlCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX01BQ1JPUwotKyMgZGVmaW5lIGJpbmR0ZXh0ZG9tYWluIGxpYmludGxfYmluZHRleHRkb21haW4KLSsjZW5kaWYKLStleHRlcm4gY2hhciAqYmluZHRleHRkb21haW4gKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19kaXJuYW1lKQotKyAgICAgICBfSU5UTF9BU00gKGxpYmludGxfYmluZHRleHRkb21haW4pOwotKyNlbmRpZgotKwotKy8qIFNwZWNpZnkgdGhlIGNoYXJhY3RlciBlbmNvZGluZyBpbiB3aGljaCB0aGUgbWVzc2FnZXMgZnJvbSB0aGUKLSsgICBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyB3aWxsIGJlIHJldHVybmVkLiAgKi8KLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfSU5MSU5FCi0rZXh0ZXJuIGNoYXIgKmxpYmludGxfYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLSsJCQkJCSAgICAgIGNvbnN0IGNoYXIgKl9fY29kZXNldCk7Ci0rc3RhdGljIGlubGluZSBjaGFyICpiaW5kX3RleHRkb21haW5fY29kZXNldCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCQkJICAgICBjb25zdCBjaGFyICpfX2NvZGVzZXQpCi0rewotKyAgcmV0dXJuIGxpYmludGxfYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgKF9fZG9tYWlubmFtZSwgX19jb2Rlc2V0KTsKLSt9Ci0rI2Vsc2UKLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfTUFDUk9TCi0rIyBkZWZpbmUgYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgbGliaW50bF9iaW5kX3RleHRkb21haW5fY29kZXNldAotKyNlbmRpZgotK2V4dGVybiBjaGFyICpiaW5kX3RleHRkb21haW5fY29kZXNldCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCQkgICAgICBjb25zdCBjaGFyICpfX2NvZGVzZXQpCi0rICAgICAgIF9JTlRMX0FTTSAobGliaW50bF9iaW5kX3RleHRkb21haW5fY29kZXNldCk7Ci0rI2VuZGlmCi0rCi0rCi0rLyogU3VwcG9ydCBmb3IgZm9ybWF0IHN0cmluZ3Mgd2l0aCBwb3NpdGlvbnMgaW4gKnByaW50ZigpLCBmb2xsb3dpbmcgdGhlCi0rICAgUE9TSVgvWFNJIHNwZWNpZmljYXRpb24uCi0rICAgTm90ZTogVGhlc2UgcmVwbGFjZW1lbnRzIGZvciB0aGUgKnByaW50ZigpIGZ1bmN0aW9ucyBhcmUgdmlzaWJsZSBvbmx5Ci0rICAgaW4gc291cmNlIGZpbGVzIHRoYXQgI2luY2x1ZGUgPGxpYmludGwuaD4gb3IgI2luY2x1ZGUgImdldHRleHQuaCIuCi0rICAgUGFja2FnZXMgdGhhdCB1c2UgKnByaW50ZigpIGluIHNvdXJjZSBmaWxlcyB0aGF0IGRvbid0IHJlZmVyIHRvIF8oKQotKyAgIG9yIGdldHRleHQoKSBidXQgZm9yIHdoaWNoIHRoZSBmb3JtYXQgc3RyaW5nIGNvdWxkIGJlIHRoZSByZXR1cm4gdmFsdWUKLSsgICBvZiBfKCkgb3IgZ2V0dGV4dCgpIG5lZWQgdG8gYWRkIHRoaXMgI2luY2x1ZGUuICBPaCB3ZWxsLiAgKi8KLSsKLSsjaWYgIUBIQVZFX1BPU0lYX1BSSU5URkAKLSsKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rCi0rLyogR2V0IHZhX2xpc3QuICAqLwotKyNpZiBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIKLSsjIGluY2x1ZGUgPHN0ZGFyZy5oPgotKyNlbHNlCi0rIyBpbmNsdWRlIDx2YXJhcmdzLmg+Ci0rI2VuZGlmCi0rCi0rI3VuZGVmIGZwcmludGYKLSsjZGVmaW5lIGZwcmludGYgbGliaW50bF9mcHJpbnRmCi0rZXh0ZXJuIGludCBmcHJpbnRmIChGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKLSsjdW5kZWYgdmZwcmludGYKLSsjZGVmaW5lIHZmcHJpbnRmIGxpYmludGxfdmZwcmludGYKLStleHRlcm4gaW50IHZmcHJpbnRmIChGSUxFICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7Ci0rCi0rI3VuZGVmIHByaW50ZgotKyNkZWZpbmUgcHJpbnRmIGxpYmludGxfcHJpbnRmCi0rZXh0ZXJuIGludCBwcmludGYgKGNvbnN0IGNoYXIgKiwgLi4uKTsKLSsjdW5kZWYgdnByaW50ZgotKyNkZWZpbmUgdnByaW50ZiBsaWJpbnRsX3ZwcmludGYKLStleHRlcm4gaW50IHZwcmludGYgKGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7Ci0rCi0rI3VuZGVmIHNwcmludGYKLSsjZGVmaW5lIHNwcmludGYgbGliaW50bF9zcHJpbnRmCi0rZXh0ZXJuIGludCBzcHJpbnRmIChjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKLSsjdW5kZWYgdnNwcmludGYKLSsjZGVmaW5lIHZzcHJpbnRmIGxpYmludGxfdnNwcmludGYKLStleHRlcm4gaW50IHZzcHJpbnRmIChjaGFyICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7Ci0rCi0rI2lmIEBIQVZFX1NOUFJJTlRGQAotKwotKyN1bmRlZiBzbnByaW50ZgotKyNkZWZpbmUgc25wcmludGYgbGliaW50bF9zbnByaW50ZgotK2V4dGVybiBpbnQgc25wcmludGYgKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIC4uLik7Ci0rI3VuZGVmIHZzbnByaW50ZgotKyNkZWZpbmUgdnNucHJpbnRmIGxpYmludGxfdnNucHJpbnRmCi0rZXh0ZXJuIGludCB2c25wcmludGYgKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIHZhX2xpc3QpOwotKwotKyNlbmRpZgotKwotKyNpZiBASEFWRV9BU1BSSU5URkAKLSsKLSsjdW5kZWYgYXNwcmludGYKLSsjZGVmaW5lIGFzcHJpbnRmIGxpYmludGxfYXNwcmludGYKLStleHRlcm4gaW50IGFzcHJpbnRmIChjaGFyICoqLCBjb25zdCBjaGFyICosIC4uLik7Ci0rI3VuZGVmIHZhc3ByaW50ZgotKyNkZWZpbmUgdmFzcHJpbnRmIGxpYmludGxfdmFzcHJpbnRmCi0rZXh0ZXJuIGludCB2YXNwcmludGYgKGNoYXIgKiosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7Ci0rCi0rI2VuZGlmCi0rCi0rI2lmIEBIQVZFX1dQUklOVEZACi0rCi0rI3VuZGVmIGZ3cHJpbnRmCi0rI2RlZmluZSBmd3ByaW50ZiBsaWJpbnRsX2Z3cHJpbnRmCi0rZXh0ZXJuIGludCBmd3ByaW50ZiAoRklMRSAqLCBjb25zdCB3Y2hhcl90ICosIC4uLik7Ci0rI3VuZGVmIHZmd3ByaW50ZgotKyNkZWZpbmUgdmZ3cHJpbnRmIGxpYmludGxfdmZ3cHJpbnRmCi0rZXh0ZXJuIGludCB2ZndwcmludGYgKEZJTEUgKiwgY29uc3Qgd2NoYXJfdCAqLCB2YV9saXN0KTsKLSsKLSsjdW5kZWYgd3ByaW50ZgotKyNkZWZpbmUgd3ByaW50ZiBsaWJpbnRsX3dwcmludGYKLStleHRlcm4gaW50IHdwcmludGYgKGNvbnN0IHdjaGFyX3QgKiwgLi4uKTsKLSsjdW5kZWYgdndwcmludGYKLSsjZGVmaW5lIHZ3cHJpbnRmIGxpYmludGxfdndwcmludGYKLStleHRlcm4gaW50IHZ3cHJpbnRmIChjb25zdCB3Y2hhcl90ICosIHZhX2xpc3QpOwotKwotKyN1bmRlZiBzd3ByaW50ZgotKyNkZWZpbmUgc3dwcmludGYgbGliaW50bF9zd3ByaW50ZgotK2V4dGVybiBpbnQgc3dwcmludGYgKHdjaGFyX3QgKiwgc2l6ZV90LCBjb25zdCB3Y2hhcl90ICosIC4uLik7Ci0rI3VuZGVmIHZzd3ByaW50ZgotKyNkZWZpbmUgdnN3cHJpbnRmIGxpYmludGxfdnN3cHJpbnRmCi0rZXh0ZXJuIGludCB2c3dwcmludGYgKHdjaGFyX3QgKiwgc2l6ZV90LCBjb25zdCB3Y2hhcl90ICosIHZhX2xpc3QpOwotKwotKyNlbmRpZgotKwotKyNlbmRpZgotKwotKwotKy8qIFN1cHBvcnQgZm9yIHJlbG9jYXRhYmxlIHBhY2thZ2VzLiAgKi8KLSsKLSsvKiBTZXRzIHRoZSBvcmlnaW5hbCBhbmQgdGhlIGN1cnJlbnQgaW5zdGFsbGF0aW9uIHByZWZpeCBvZiB0aGUgcGFja2FnZS4KLSsgICBSZWxvY2F0aW9uIHNpbXBseSByZXBsYWNlcyBhIHBhdGhuYW1lIHN0YXJ0aW5nIHdpdGggdGhlIG9yaWdpbmFsIHByZWZpeAotKyAgIGJ5IHRoZSBjb3JyZXNwb25kaW5nIHBhdGhuYW1lIHdpdGggdGhlIGN1cnJlbnQgcHJlZml4IGluc3RlYWQuICBCb3RoCi0rICAgcHJlZml4ZXMgc2hvdWxkIGJlIGRpcmVjdG9yeSBuYW1lcyB3aXRob3V0IHRyYWlsaW5nIHNsYXNoIChpLmUuIHVzZSAiIgotKyAgIGluc3RlYWQgb2YgIi8iKS4gICovCi0rI2RlZmluZSBsaWJpbnRsX3NldF9yZWxvY2F0aW9uX3ByZWZpeCBsaWJpbnRsX3NldF9yZWxvY2F0aW9uX3ByZWZpeAotK2V4dGVybiB2b2lkCi0rICAgICAgIGxpYmludGxfc2V0X3JlbG9jYXRpb25fcHJlZml4IChjb25zdCBjaGFyICpvcmlnX3ByZWZpeCwKLSsJCQkJICAgICAgY29uc3QgY2hhciAqY3Vycl9wcmVmaXgpOwotKwotKwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSsKLSsjZW5kaWYgLyogbGliaW50bC5oICovCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvbGludXgtbXNnLnNlZAkxOTk4LTA0LTI2IDA5OjIwOjUyLjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9saW51eC1tc2cuc2VkCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi1AQCAtMSwxMDAgKzAsMCBAQAotLSMgcG8ybXNnLnNlZCAtIENvbnZlcnQgVW5pZm9ydW0gc3R5bGUgLnBvIGZpbGUgdG8gTGludXggc3R5bGUgLm1zZyBmaWxlCi0tIyBDb3B5cmlnaHQgKEMpIDE5OTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tIyBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCi0tIwotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0tIyBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0jCi0tIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLSMKLS0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLS0jCi0tIwotLSMgVGhlIGZpcnN0IGRpcmVjdGl2ZSBpbiB0aGUgLm1zZyBzaG91bGQgYmUgdGhlIGRlZmluaXRpb24gb2YgdGhlCi0tIyBtZXNzYWdlIHNldCBudW1iZXIuICBXZSB1c2UgYWx3YXlzIHNldCBudW1iZXIgMS4KLS0jCi0tMSB7Ci0tICBpXAotLSRzZXQgMSAjIEF1dG9tYXRpY2FsbHkgY3JlYXRlZCBieSBwbzJtc2cuc2VkCi0tICBoCi0tICBzLy4qLzAvCi0tICB4Ci0tfQotLSMKLS0jIE1pdGNoJ3Mgb2xkIGNhdGFsb2cgZm9ybWF0IGRvZXMgbm90IGFsbG93IGNvbW1lbnRzLgotLSMKLS0jIFdlIGNvcHkgdGhlIG9yaWdpbmFsIG1lc3NhZ2UgYXMgYSBjb21tZW50IGludG8gdGhlIC5tc2cgZmlsZS4KLS0jCi0tL15tc2dpZC8gewotLSAgcy9tc2dpZFsgCV0qIi8vCi0tIwotLSMgVGhpcyBkb2VzIG5vdCB3b3JrIG5vdyB3aXRoIHRoZSBuZXcgZm9ybWF0LgotLSMgLyIkLyEgewotLSMgICBzL1xcJC8vCi0tIyAgIHMvJC8gLi4uIChtb3JlIGxpbmVzIGZvbGxvd2luZykiLwotLSMgfQotLSAgeAotLSMgVGhlIGZvbGxvd2luZyBuaWNlIHNvbHV0aW9uIGlzIGJ5Ci0tIyBCcnVubyA8SGFpYmxlQG1hMnMyLm1hdGhlbWF0aWsudW5pLWthcmxzcnVoZS5kZT4KLS0gIHRkCi0tIyBJbmNyZW1lbnQgYSBkZWNpbWFsIG51bWJlciBpbiBwYXR0ZXJuIHNwYWNlLgotLSMgRmlyc3QgaGlkZSB0cmFpbGluZyBgOScgZGlnaXRzLgotLSAgOmQKLS0gIHMvOVwoXypcKSQvX1wxLwotLSAgdGQKLS0jIEFzc3VyZSBhdCBsZWFzdCBvbmUgZGlnaXQgaXMgYXZhaWxhYmxlLgotLSAgcy9eXChfKlwpJC8wXDEvCi0tIyBJbmNyZW1lbnQgdGhlIGxhc3QgZGlnaXQuCi0tICBzLzhcKF8qXCkkLzlcMS8KLS0gIHMvN1woXypcKSQvOFwxLwotLSAgcy82XChfKlwpJC83XDEvCi0tICBzLzVcKF8qXCkkLzZcMS8KLS0gIHMvNFwoXypcKSQvNVwxLwotLSAgcy8zXChfKlwpJC80XDEvCi0tICBzLzJcKF8qXCkkLzNcMS8KLS0gIHMvMVwoXypcKSQvMlwxLwotLSAgcy8wXChfKlwpJC8xXDEvCi0tIyBDb252ZXJ0IHRoZSBoaWRkZW4gYDknIGRpZ2l0cyB0byBgMCdzLgotLSAgcy9fLzAvZwotLSAgeAotLSAgRwotLSAgcy9cKC4qXCkiXG5cKFswLTldKlwpLyQgI1wyIE9yaWdpbmFsIE1lc3NhZ2U6KFwxKS9wCi0tfQotLSMKLS0jIFRoZSAubXNnIGZpbGUgY29udGFpbnMsIG90aGVyIHRoZW4gdGhlIC5wbyBmaWxlLCBvbmx5IHRoZSB0cmFuc2xhdGlvbnMKLS0jIGJ1dCBlYWNoIGdpdmVuIGEgdW5pcXVlIElELiAgU3RhcnRpbmcgZnJvbSAxIGFuZCBpbmNyZW1lbnRpbmcgYnkgMSBmb3IKLS0jIGVhY2ggbWVzc2FnZSB3ZSBhc3NpZ24gdGhlbSB0byB0aGUgbWVzc2FnZXMuCi0tIyBJdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGUgLnBvIGZpbGUgdXNlZCB0byBnZW5lcmF0ZSB0aGUgY2F0LWlkLXRibC5jIGZpbGUKLS0jICh3aXRoIHBvLXRvLXRibCkgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSB1c2VkIGhlcmUuICAoQXQgbGVhc3QgdGhlIG9yZGVyCi0tIyBvZiBkZWNsYXJhdGlvbnMgbXVzdCBub3QgYmUgY2hhbmdlZC4pCi0tIwotLS9ebXNnc3RyLyB7Ci0tICBzL21zZ3N0clsgCV0qIlwoLipcKSIvIyBcMS8KLS0jIENsZWFyIHN1YnN0aXR1dGlvbiBmbGFnLgotLSAgdGIKLS0jIEFwcGVuZCB0aGUgbmV4dCBsaW5lLgotLSAgOmIKLS0gIE4KLS0jIExvb2sgd2hldGhlciBzZWNvbmQgcGFydCBpcyBjb250aW51YXRpb24gbGluZS4KLS0gIHMvXCguKlxuXCkiXCguKlwpIi9cMVwyLwotLSMgWWVzLCB0aGVuIGJyYW5jaC4KLS0gIHRhCi0tICBQCi0tICBECi0tIyBOb3RlIHRoYXQgRCBpbmNsdWRlcyBhIGp1bXAgdG8gdGhlIHN0YXJ0ISEKLS0jIFdlIGZvdW5kIGEgY29udGludWF0aW9uIGxpbmUuICBCdXQgYmVmb3JlIHByaW50aW5nIGluc2VydCAnXCcuCi0tICA6YQotLSAgcy9cKC4qXClcKFxuLipcKS9cMVxcXDIvCi0tICBQCi0tIyBXZSBjYW5ub3QgdXNlIEQgaGVyZS4KLS0gIHMvLipcblwoLipcKS9cMS8KLS0gIHRiCi0tfQotLWQKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9sb2FkaW5mby5oCTE5OTgtMDQtMjYgMDk6MjA6NTIuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xvYWRpbmZvLmgJMjAwNC0wOS0xMiAxNDo0MDozNC40Njg3MzA5MTIgLTA0MDAKLUBAIC0xLDkgKzEsNTQgQEAKLS0jaWZuZGVmIFBBUkFNUwotLSMgaWYgX19TVERDX18KLS0jICBkZWZpbmUgUEFSQU1TKGFyZ3MpIGFyZ3MKLS0jIGVsc2UKLS0jICBkZWZpbmUgUEFSQU1TKGFyZ3MpICgpCi0tIyBlbmRpZgotKy8qIENvcHlyaWdodCAoQykgMTk5Ni0xOTk5LCAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rICAgQ29udHJpYnV0ZWQgYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDE5OTYuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZm5kZWYgX0xPQURJTkZPX0gKLSsjZGVmaW5lIF9MT0FESU5GT19ICTEKLSsKLSsvKiBEZWNsYXJhdGlvbnMgb2YgbG9jYWxlIGRlcGVuZGVudCBjYXRhbG9nIGxvb2t1cCBmdW5jdGlvbnMuCi0rICAgSW1wbGVtZW50ZWQgaW4KLSsKLSsgICAgIGxvY2FsZWFsaWFzLmMgICAgUG9zc2libHkgcmVwbGFjZSBhIGxvY2FsZSBuYW1lIGJ5IGFub3RoZXIuCi0rICAgICBleHBsb2RlbmFtZS5jICAgIFNwbGl0IGEgbG9jYWxlIG5hbWUgaW50byBpdHMgdmFyaW91cyBmaWVsZHMuCi0rICAgICBsMTBuZmxpc3QuYyAgICAgIEdlbmVyYXRlIGEgbGlzdCBvZiBmaWxlbmFtZXMgb2YgcG9zc2libGUgbWVzc2FnZSBjYXRhbG9ncy4KLSsgICAgIGZpbmRkb21haW4uYyAgICAgRmluZCBhbmQgb3BlbiB0aGUgcmVsZXZhbnQgbWVzc2FnZSBjYXRhbG9ncy4KLSsKLSsgICBUaGUgbWFpbiBmdW5jdGlvbiBfbmxfZmluZF9kb21haW4oKSBpbiBmaW5kZG9tYWluLmMgaXMgZGVjbGFyZWQKLSsgICBpbiBnZXR0ZXh0UC5oLgotKyAqLwotKwotKyNpZm5kZWYgaW50ZXJuYWxfZnVuY3Rpb24KLSsjIGRlZmluZSBpbnRlcm5hbF9mdW5jdGlvbgotKyNlbmRpZgotKwotKy8qIFRlbGwgdGhlIGNvbXBpbGVyIHdoZW4gYSBjb25kaXRpb25hbCBvciBpbnRlZ2VyIGV4cHJlc3Npb24gaXMKLSsgICBhbG1vc3QgYWx3YXlzIHRydWUgb3IgYWxtb3N0IGFsd2F5cyBmYWxzZS4gICovCi0rI2lmbmRlZiBIQVZFX0JVSUxUSU5fRVhQRUNUCi0rIyBkZWZpbmUgX19idWlsdGluX2V4cGVjdChleHByLCB2YWwpIChleHByKQotKyNlbmRpZgotKwotKy8qIFNlcGFyYXRvciBpbiBQQVRIIGxpa2UgbGlzdHMgb2YgcGF0aG5hbWVzLiAgKi8KLSsjaWYgZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18gfHwgZGVmaW5lZCBfX0VNWF9fIHx8IGRlZmluZWQgX19ESkdQUF9fCi0rICAvKiBXaW4zMiwgT1MvMiwgRE9TICovCi0rIyBkZWZpbmUgUEFUSF9TRVBBUkFUT1IgJzsnCi0rI2Vsc2UKLSsgIC8qIFVuaXggKi8KLSsjIGRlZmluZSBQQVRIX1NFUEFSQVRPUiAnOicKLSAjZW5kaWYKLSAKLSAvKiBFbmNvZGluZyBvZiBsb2NhbGUgbmFtZSBwYXJ0cy4gICovCi1AQCAtMzIsMjcgKzc3LDY5IEBACi0gfTsKLSAKLSAKLS1leHRlcm4gY29uc3QgY2hhciAqX25sX25vcm1hbGl6ZV9jb2Rlc2V0IFBBUkFNUyAoKGNvbnN0IGNoYXIgKmNvZGVzZXQsCi0tCQkJCQkJICBzaXplX3QgbmFtZV9sZW4pKTsKLSsvKiBOb3JtYWxpemUgY29kZXNldCBuYW1lLiAgVGhlcmUgaXMgbm8gc3RhbmRhcmQgZm9yIHRoZSBjb2Rlc2V0Ci0rICAgbmFtZXMuICBOb3JtYWxpemF0aW9uIGFsbG93cyB0aGUgdXNlciB0byB1c2UgYW55IG9mIHRoZSBjb21tb24KLSsgICBuYW1lcy4gIFRoZSByZXR1cm4gdmFsdWUgaXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGFuZCBoYXMgdG8gYmUKLSsgICBmcmVlZCBieSB0aGUgY2FsbGVyLiAgKi8KLStleHRlcm4gY29uc3QgY2hhciAqX25sX25vcm1hbGl6ZV9jb2Rlc2V0IChjb25zdCBjaGFyICpjb2Rlc2V0LAotKwkJCQkJICBzaXplX3QgbmFtZV9sZW4pOwotIAotKy8qIExvb2t1cCBhIGxvY2FsZSBkZXBlbmRlbnQgZmlsZS4KLSsgICAqTDEwTkZJTEVfTElTVCBkZW5vdGVzIGEgcG9vbCBvZiBsb29rdXAgcmVzdWx0cyBvZiBsb2NhbGUgZGVwZW5kZW50Ci0rICAgZmlsZXMgb2YgdGhlIHNhbWUga2luZCwgc29ydGVkIGluIGRlY3JlYXNpbmcgb3JkZXIgb2YgLT5maWxlbmFtZS4KLSsgICBESVJMSVNUIGFuZCBESVJMSVNUX0xFTiBhcmUgYW4gYXJneiBsaXN0IG9mIGRpcmVjdG9yaWVzIGluIHdoaWNoIHRvCi0rICAgbG9vaywgY29udGFpbmluZyBhdCBsZWFzdCBvbmUgZGlyZWN0b3J5IChpLmUuIERJUkxJU1RfTEVOID4gMCkuCi0rICAgTUFTSywgTEFOR1VBR0UsIFRFUlJJVE9SWSwgQ09ERVNFVCwgTk9STUFMSVpFRF9DT0RFU0VULCBNT0RJRklFUiwKLSsgICBTUEVDSUFMLCBTUE9OU09SLCBSRVZJU0lPTiBhcmUgdGhlIHBpZWNlcyBvZiB0aGUgbG9jYWxlIG5hbWUsIGFzCi0rICAgcHJvZHVjZWQgYnkgX25sX2V4cGxvZGVfbmFtZSgpLiAgRklMRU5BTUUgaXMgdGhlIGZpbGVuYW1lIHN1ZmZpeC4KLSsgICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBsb29rdXAgcmVzdWx0LCBlaXRoZXIgZm91bmQgaW4gKkwxME5GSUxFX0xJU1QsCi0rICAgb3IgLSBpZiBET19BTExPQ0FURSBpcyBub256ZXJvIC0gZnJlc2hseSBhbGxvY2F0ZWQsIG9yIHBvc3NpYmx5IE5VTEwuCi0rICAgSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBub24tTlVMTCwgaXQgaXMgYWRkZWQgdG8gKkwxME5GSUxFX0xJU1QsIGFuZAotKyAgIGl0cyAtPm5leHQgZmllbGQgZGVub3RlcyB0aGUgY2hhaW5pbmcgaW5zaWRlICpMMTBORklMRV9MSVNULCBhbmQKLSsgICBmdXJ0aGVybW9yZSBpdHMgLT5zdWNjZXNzb3JbXSBmaWVsZCBjb250YWlucyBhIGxpc3Qgb2Ygb3RoZXIgbG9va3VwCi0rICAgcmVzdWx0cyBmcm9tIHdoaWNoIHRoaXMgbG9va3VwIHJlc3VsdCBpbmhlcml0cy4gICovCi0gZXh0ZXJuIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKgotLV9ubF9tYWtlX2wxMG5mbGlzdCBQQVJBTVMgKChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICoqbDEwbmZpbGVfbGlzdCwKLS0JCQkgICAgY29uc3QgY2hhciAqZGlybGlzdCwgc2l6ZV90IGRpcmxpc3RfbGVuLCBpbnQgbWFzaywKLS0JCQkgICAgY29uc3QgY2hhciAqbGFuZ3VhZ2UsIGNvbnN0IGNoYXIgKnRlcnJpdG9yeSwKLS0JCQkgICAgY29uc3QgY2hhciAqY29kZXNldCwKLS0JCQkgICAgY29uc3QgY2hhciAqbm9ybWFsaXplZF9jb2Rlc2V0LAotLQkJCSAgICBjb25zdCBjaGFyICptb2RpZmllciwgY29uc3QgY2hhciAqc3BlY2lhbCwKLS0JCQkgICAgY29uc3QgY2hhciAqc3BvbnNvciwgY29uc3QgY2hhciAqcmV2aXNpb24sCi0tCQkJICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZG9fYWxsb2NhdGUpKTsKLStfbmxfbWFrZV9sMTBuZmxpc3QgKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKipsMTBuZmlsZV9saXN0LAotKwkJICAgIGNvbnN0IGNoYXIgKmRpcmxpc3QsIHNpemVfdCBkaXJsaXN0X2xlbiwgaW50IG1hc2ssCi0rCQkgICAgY29uc3QgY2hhciAqbGFuZ3VhZ2UsIGNvbnN0IGNoYXIgKnRlcnJpdG9yeSwKLSsJCSAgICBjb25zdCBjaGFyICpjb2Rlc2V0LCBjb25zdCBjaGFyICpub3JtYWxpemVkX2NvZGVzZXQsCi0rCQkgICAgY29uc3QgY2hhciAqbW9kaWZpZXIsIGNvbnN0IGNoYXIgKnNwZWNpYWwsCi0rCQkgICAgY29uc3QgY2hhciAqc3BvbnNvciwgY29uc3QgY2hhciAqcmV2aXNpb24sCi0rCQkgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBkb19hbGxvY2F0ZSk7Ci0gCi0rLyogTG9va3VwIHRoZSByZWFsIGxvY2FsZSBuYW1lIGZvciBhIGxvY2FsZSBhbGlhcyBOQU1FLCBvciBOVUxMIGlmCi0rICAgTkFNRSBpcyBub3QgYSBsb2NhbGUgYWxpYXMgKGJ1dCBwb3NzaWJseSBhIHJlYWwgbG9jYWxlIG5hbWUpLgotKyAgIFRoZSByZXR1cm4gdmFsdWUgaXMgc3RhdGljYWxseSBhbGxvY2F0ZWQgYW5kIG11c3Qgbm90IGJlIGZyZWVkLiAgKi8KLStleHRlcm4gY29uc3QgY2hhciAqX25sX2V4cGFuZF9hbGlhcyAoY29uc3QgY2hhciAqbmFtZSk7Ci0gCi0tZXh0ZXJuIGNvbnN0IGNoYXIgKl9ubF9leHBhbmRfYWxpYXMgUEFSQU1TICgoY29uc3QgY2hhciAqbmFtZSkpOwotKy8qIFNwbGl0IGEgbG9jYWxlIG5hbWUgTkFNRSBpbnRvIGl0cyBwaWVjZXM6IGxhbmd1YWdlLCBtb2RpZmllciwKLSsgICB0ZXJyaXRvcnksIGNvZGVzZXQsIHNwZWNpYWwsIHNwb25zb3IsIHJldmlzaW9uLgotKyAgIE5BTUUgZ2V0cyBkZXN0cnVjdGl2ZWx5IG1vZGlmaWVkOiBOVUwgYnl0ZXMgYXJlIGluc2VydGVkIGhlcmUgYW5kCi0rICAgdGhlcmUuICAqTEFOR1VBR0UgZ2V0cyBhc3NpZ25lZCBOQU1FLiAgRWFjaCBvZiAqTU9ESUZJRVIsICpURVJSSVRPUlksCi0rICAgKkNPREVTRVQsICpTUEVDSUFMLCAqU1BPTlNPUiwgKlJFVklTSU9OIGdldHMgYXNzaWduZWQgZWl0aGVyIGEKLSsgICBwb2ludGVyIGludG8gdGhlIG9sZCBOQU1FIHN0cmluZywgb3IgTlVMTC4gICpOT1JNQUxJWkVEX0NPREVTRVQKLSsgICBnZXRzIGFzc2lnbmVkIHRoZSBleHBhbmRlZCAqQ09ERVNFVCwgaWYgaXQgaXMgZGlmZmVyZW50IGZyb20gKkNPREVTRVQ7Ci0rICAgdGhpcyBvbmUgaXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGFuZCBoYXMgdG8gYmUgZnJlZWQgYnkgdGhlIGNhbGxlci4KLSsgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgYml0bWFzaywgd2hlcmUgZWFjaCBiaXQgY29ycmVzcG9uZHMgdG8gb25lCi0rICAgZmlsbGVkLWluIHZhbHVlOgotKyAgICAgWFBHX01PRElGSUVSLCBDRU5fQVVESUVOQ0UgIGZvciAqTU9ESUZJRVIsCi0rICAgICBURVJSSVRPUlkgICAgICAgICAgICAgICAgICAgZm9yICpURVJSSVRPUlksCi0rICAgICBYUEdfQ09ERVNFVCAgICAgICAgICAgICAgICAgZm9yICpDT0RFU0VULAotKyAgICAgWFBHX05PUk1fQ09ERVNFVCAgICAgICAgICAgIGZvciAqTk9STUFMSVpFRF9DT0RFU0VULAotKyAgICAgQ0VOX1NQRUNJQUwgICAgICAgICAgICAgICAgIGZvciAqU1BFQ0lBTCwKLSsgICAgIENFTl9TUE9OU09SICAgICAgICAgICAgICAgICBmb3IgKlNQT05TT1IsCi0rICAgICBDRU5fUkVWSVNJT04gICAgICAgICAgICAgICAgZm9yICpSRVZJU0lPTi4KLSsgKi8KLStleHRlcm4gaW50IF9ubF9leHBsb2RlX25hbWUgKGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKipsYW5ndWFnZSwKLSsJCQkgICAgIGNvbnN0IGNoYXIgKiptb2RpZmllciwgY29uc3QgY2hhciAqKnRlcnJpdG9yeSwKLSsJCQkgICAgIGNvbnN0IGNoYXIgKipjb2Rlc2V0LAotKwkJCSAgICAgY29uc3QgY2hhciAqKm5vcm1hbGl6ZWRfY29kZXNldCwKLSsJCQkgICAgIGNvbnN0IGNoYXIgKipzcGVjaWFsLCBjb25zdCBjaGFyICoqc3BvbnNvciwKLSsJCQkgICAgIGNvbnN0IGNoYXIgKipyZXZpc2lvbik7Ci0gCi0tZXh0ZXJuIGludCBfbmxfZXhwbG9kZV9uYW1lIFBBUkFNUyAoKGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKipsYW5ndWFnZSwKLS0JCQkJICAgICBjb25zdCBjaGFyICoqbW9kaWZpZXIsCi0tCQkJCSAgICAgY29uc3QgY2hhciAqKnRlcnJpdG9yeSwKLS0JCQkJICAgICBjb25zdCBjaGFyICoqY29kZXNldCwKLS0JCQkJICAgICBjb25zdCBjaGFyICoqbm9ybWFsaXplZF9jb2Rlc2V0LAotLQkJCQkgICAgIGNvbnN0IGNoYXIgKipzcGVjaWFsLAotLQkJCQkgICAgIGNvbnN0IGNoYXIgKipzcG9uc29yLAotLQkJCQkgICAgIGNvbnN0IGNoYXIgKipyZXZpc2lvbikpOwotKy8qIFNwbGl0IGEgbG9jYWxlIG5hbWUgTkFNRSBpbnRvIGEgbGVhZGluZyBsYW5ndWFnZSBwYXJ0IGFuZCBhbGwgdGhlCi0rICAgcmVzdC4gIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgbGFuZ3VhZ2UsCi0rICAgaS5lLiB0byB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgcmVzdC4gICovCi0rZXh0ZXJuIGNoYXIgKl9ubF9maW5kX2xhbmd1YWdlIChjb25zdCBjaGFyICpuYW1lKTsKLSsKLSsjZW5kaWYJLyogbG9hZGluZm8uaCAqLwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2xvYWRtc2djYXQuYwkxOTk4LTA0LTI2IDA5OjIyOjM3LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9sb2FkbXNnY2F0LmMJMjAwNC0wOS0xMiAxNDo0MDozNC40NzM3MzAxNTIgLTA0MDAKLUBAIC0xLDQyICsxLDQ1NSBAQAotLS8qIExvYWQgbmVlZGVkIG1lc3NhZ2UgY2F0YWxvZ3MKLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogTG9hZCBuZWVkZWQgbWVzc2FnZSBjYXRhbG9ncy4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OSwgMjAwMC0yMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgIGFueSBsYXRlciB2ZXJzaW9uLgotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsvKiBUZWxsIGdsaWJjJ3MgPHN0cmluZy5oPiB0byBwcm92aWRlIGEgcHJvdG90eXBlIGZvciBtZW1wY3B5KCkuCi0rICAgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIDxjb25maWcuaD4gYmVjYXVzZSA8Y29uZmlnLmg+IG1heSBpbmNsdWRlCi0rICAgPGZlYXR1cmVzLmg+LCBhbmQgb25jZSA8ZmVhdHVyZXMuaD4gaGFzIGJlZW4gaW5jbHVkZWQsIGl0J3MgdG9vIGxhdGUuICAqLwotKyNpZm5kZWYgX0dOVV9TT1VSQ0UKLSsjIGRlZmluZSBfR05VX1NPVVJDRSAgICAxCi0rI2VuZGlmCi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotKyNpbmNsdWRlIDxjdHlwZS5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAKLS0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBfTElCQwotLSMgaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2lmZGVmIF9fR05VQ19fCi0rIyB1bmRlZiAgYWxsb2NhCi0rIyBkZWZpbmUgYWxsb2NhIF9fYnVpbHRpbl9hbGxvY2EKLSsjIGRlZmluZSBIQVZFX0FMTE9DQSAxCi0rI2Vsc2UKLSsjIGlmZGVmIF9NU0NfVkVSCi0rIyAgaW5jbHVkZSA8bWFsbG9jLmg+Ci0rIyAgZGVmaW5lIGFsbG9jYSBfYWxsb2NhCi0rIyBlbHNlCi0rIyAgaWYgZGVmaW5lZCBIQVZFX0FMTE9DQV9IIHx8IGRlZmluZWQgX0xJQkMKLSsjICAgaW5jbHVkZSA8YWxsb2NhLmg+Ci0rIyAgZWxzZQotKyMgICBpZmRlZiBfQUlYCi0rICNwcmFnbWEgYWxsb2NhCi0rIyAgIGVsc2UKLSsjICAgIGlmbmRlZiBhbGxvY2EKLStjaGFyICphbGxvY2EgKCk7Ci0rIyAgICBlbmRpZgotKyMgICBlbmRpZgotKyMgIGVuZGlmCi0rIyBlbmRpZgotICNlbmRpZgotIAotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0gI2lmIGRlZmluZWQgSEFWRV9VTklTVERfSCB8fCBkZWZpbmVkIF9MSUJDCi0gIyBpbmNsdWRlIDx1bmlzdGQuaD4KLSAjZW5kaWYKLSAKLS0jaWYgKGRlZmluZWQgSEFWRV9NTUFQICYmIGRlZmluZWQgSEFWRV9NVU5NQVApIHx8IGRlZmluZWQgX0xJQkMKLSsjaWZkZWYgX0xJQkMKLSsjIGluY2x1ZGUgPGxhbmdpbmZvLmg+Ci0rIyBpbmNsdWRlIDxsb2NhbGUuaD4KLSsjZW5kaWYKLSsKLSsjaWYgKGRlZmluZWQgSEFWRV9NTUFQICYmIGRlZmluZWQgSEFWRV9NVU5NQVAgJiYgIWRlZmluZWQgRElTQUxMT1dfTU1BUCkgXAotKyAgICB8fCAoZGVmaW5lZCBfTElCQyAmJiBkZWZpbmVkIF9QT1NJWF9NQVBQRURfRklMRVMpCi0gIyBpbmNsdWRlIDxzeXMvbW1hbi5oPgotKyMgdW5kZWYgSEFWRV9NTUFQCi0rIyBkZWZpbmUgSEFWRV9NTUFQCTEKLSsjZWxzZQotKyMgdW5kZWYgSEFWRV9NTUFQCi0gI2VuZGlmCi0gCi0tI2luY2x1ZGUgImdldHRleHQuaCIKLSsjaWYgZGVmaW5lZCBIQVZFX1NURElOVF9IX1dJVEhfVUlOVE1BWCB8fCBkZWZpbmVkIF9MSUJDCi0rIyBpbmNsdWRlIDxzdGRpbnQuaD4KLSsjZW5kaWYKLSsjaWYgZGVmaW5lZCBIQVZFX0lOVFRZUEVTX0ggfHwgZGVmaW5lZCBfTElCQwotKyMgaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSAiZ21vLmgiCi0gI2luY2x1ZGUgImdldHRleHRQLmgiCi0rI2luY2x1ZGUgImhhc2gtc3RyaW5nLmgiCi0rI2luY2x1ZGUgInBsdXJhbC1leHAuaCIKLSsKLSsjaWZkZWYgX0xJQkMKLSsjIGluY2x1ZGUgIi4uL2xvY2FsZS9sb2NhbGVpbmZvLmgiCi0rI2VuZGlmCi0rCi0rLyogUHJvdmlkZSBmYWxsYmFjayB2YWx1ZXMgZm9yIG1hY3JvcyB0aGF0IG91Z2h0IHRvIGJlIGRlZmluZWQgaW4gPGludHR5cGVzLmg+LgotKyAgIE5vdGUgdGhhdCBvdXIgZmFsbGJhY2sgdmFsdWVzIG5lZWQgbm90IGJlIGxpdGVyYWwgc3RyaW5ncywgYmVjYXVzZSB3ZSBkb24ndAotKyAgIHVzZSB0aGVtIHdpdGggcHJlcHJvY2Vzc29yIHN0cmluZyBjb25jYXRlbmF0aW9uLiAgKi8KLSsjaWYgIWRlZmluZWQgUFJJZDggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWQ4Ci0rIyBkZWZpbmUgUFJJZDggImQiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWk4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklpOAotKyMgZGVmaW5lIFBSSWk4ICJpIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJbzgKLSsjIGRlZmluZSBQUklvOCAibyIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdTggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXU4Ci0rIyBkZWZpbmUgUFJJdTggInUiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXg4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl4OAotKyMgZGVmaW5lIFBSSXg4ICJ4IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJWDgKLSsjIGRlZmluZSBQUklYOCAiWCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklkMTYKLSsjIGRlZmluZSBQUklkMTYgImQiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWkxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJaTE2Ci0rIyBkZWZpbmUgUFJJaTE2ICJpIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSW8xNgotKyMgZGVmaW5lIFBSSW8xNiAibyIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdTE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl1MTYKLSsjIGRlZmluZSBQUkl1MTYgInUiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXgxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJeDE2Ci0rIyBkZWZpbmUgUFJJeDE2ICJ4IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSVgxNgotKyMgZGVmaW5lIFBSSVgxNiAiWCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklkMzIKLSsjIGRlZmluZSBQUklkMzIgImQiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWkzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJaTMyCi0rIyBkZWZpbmUgUFJJaTMyICJpIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSW8zMgotKyMgZGVmaW5lIFBSSW8zMiAibyIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdTMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl1MzIKLSsjIGRlZmluZSBQUkl1MzIgInUiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXgzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJeDMyCi0rIyBkZWZpbmUgUFJJeDMyICJ4IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSVgzMgotKyMgZGVmaW5lIFBSSVgzMiAiWCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklkNjQKLSsjIGRlZmluZSBQUklkNjQgKHNpemVvZiAobG9uZykgPT0gOCA/ICJsZCIgOiAibGxkIikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJaTY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklpNjQKLSsjIGRlZmluZSBQUklpNjQgKHNpemVvZiAobG9uZykgPT0gOCA/ICJsaSIgOiAibGxpIikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJbzY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklvNjQKLSsjIGRlZmluZSBQUklvNjQgKHNpemVvZiAobG9uZykgPT0gOCA/ICJsbyIgOiAibGxvIikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdTY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl1NjQKLSsjIGRlZmluZSBQUkl1NjQgKHNpemVvZiAobG9uZykgPT0gOCA/ICJsdSIgOiAibGx1IikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJeDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl4NjQKLSsjIGRlZmluZSBQUkl4NjQgKHNpemVvZiAobG9uZykgPT0gOCA/ICJseCIgOiAibGx4IikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJWDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklYNjQKLSsjIGRlZmluZSBQUklYNjQgKHNpemVvZiAobG9uZykgPT0gOCA/ICJsWCIgOiAibGxYIikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZExFQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJZExFQVNUOAotKyMgZGVmaW5lIFBSSWRMRUFTVDggImQiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWlMRUFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWlMRUFTVDgKLSsjIGRlZmluZSBQUklpTEVBU1Q4ICJpIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvTEVBU1Q4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklvTEVBU1Q4Ci0rIyBkZWZpbmUgUFJJb0xFQVNUOCAibyIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdUxFQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJdUxFQVNUOAotKyMgZGVmaW5lIFBSSXVMRUFTVDggInUiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXhMRUFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXhMRUFTVDgKLSsjIGRlZmluZSBQUkl4TEVBU1Q4ICJ4IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYTEVBU1Q4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklYTEVBU1Q4Ci0rIyBkZWZpbmUgUFJJWExFQVNUOCAiWCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZExFQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWRMRUFTVDE2Ci0rIyBkZWZpbmUgUFJJZExFQVNUMTYgImQiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWlMRUFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklpTEVBU1QxNgotKyMgZGVmaW5lIFBSSWlMRUFTVDE2ICJpIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvTEVBU1QxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJb0xFQVNUMTYKLSsjIGRlZmluZSBQUklvTEVBU1QxNiAibyIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdUxFQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXVMRUFTVDE2Ci0rIyBkZWZpbmUgUFJJdUxFQVNUMTYgInUiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXhMRUFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl4TEVBU1QxNgotKyMgZGVmaW5lIFBSSXhMRUFTVDE2ICJ4IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYTEVBU1QxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJWExFQVNUMTYKLSsjIGRlZmluZSBQUklYTEVBU1QxNiAiWCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZExFQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWRMRUFTVDMyCi0rIyBkZWZpbmUgUFJJZExFQVNUMzIgImQiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWlMRUFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklpTEVBU1QzMgotKyMgZGVmaW5lIFBSSWlMRUFTVDMyICJpIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvTEVBU1QzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJb0xFQVNUMzIKLSsjIGRlZmluZSBQUklvTEVBU1QzMiAibyIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdUxFQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXVMRUFTVDMyCi0rIyBkZWZpbmUgUFJJdUxFQVNUMzIgInUiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXhMRUFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl4TEVBU1QzMgotKyMgZGVmaW5lIFBSSXhMRUFTVDMyICJ4IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYTEVBU1QzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJWExFQVNUMzIKLSsjIGRlZmluZSBQUklYTEVBU1QzMiAiWCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZExFQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWRMRUFTVDY0Ci0rIyBkZWZpbmUgUFJJZExFQVNUNjQgUFJJZDY0Ci0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWlMRUFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklpTEVBU1Q2NAotKyMgZGVmaW5lIFBSSWlMRUFTVDY0IFBSSWk2NAotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvTEVBU1Q2NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJb0xFQVNUNjQKLSsjIGRlZmluZSBQUklvTEVBU1Q2NCBQUklvNjQKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdUxFQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXVMRUFTVDY0Ci0rIyBkZWZpbmUgUFJJdUxFQVNUNjQgUFJJdTY0Ci0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXhMRUFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl4TEVBU1Q2NAotKyMgZGVmaW5lIFBSSXhMRUFTVDY0IFBSSXg2NAotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYTEVBU1Q2NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJWExFQVNUNjQKLSsjIGRlZmluZSBQUklYTEVBU1Q2NCBQUklYNjQKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZEZBU1Q4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklkRkFTVDgKLSsjIGRlZmluZSBQUklkRkFTVDggImQiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWlGQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJaUZBU1Q4Ci0rIyBkZWZpbmUgUFJJaUZBU1Q4ICJpIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvRkFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSW9GQVNUOAotKyMgZGVmaW5lIFBSSW9GQVNUOCAibyIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdUZBU1Q4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl1RkFTVDgKLSsjIGRlZmluZSBQUkl1RkFTVDggInUiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXhGQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJeEZBU1Q4Ci0rIyBkZWZpbmUgUFJJeEZBU1Q4ICJ4IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYRkFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSVhGQVNUOAotKyMgZGVmaW5lIFBSSVhGQVNUOCAiWCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZEZBU1QxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJZEZBU1QxNgotKyMgZGVmaW5lIFBSSWRGQVNUMTYgImQiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWlGQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWlGQVNUMTYKLSsjIGRlZmluZSBQUklpRkFTVDE2ICJpIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvRkFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklvRkFTVDE2Ci0rIyBkZWZpbmUgUFJJb0ZBU1QxNiAibyIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdUZBU1QxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJdUZBU1QxNgotKyMgZGVmaW5lIFBSSXVGQVNUMTYgInUiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXhGQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXhGQVNUMTYKLSsjIGRlZmluZSBQUkl4RkFTVDE2ICJ4IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYRkFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklYRkFTVDE2Ci0rIyBkZWZpbmUgUFJJWEZBU1QxNiAiWCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZEZBU1QzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJZEZBU1QzMgotKyMgZGVmaW5lIFBSSWRGQVNUMzIgImQiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWlGQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWlGQVNUMzIKLSsjIGRlZmluZSBQUklpRkFTVDMyICJpIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvRkFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklvRkFTVDMyCi0rIyBkZWZpbmUgUFJJb0ZBU1QzMiAibyIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdUZBU1QzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJdUZBU1QzMgotKyMgZGVmaW5lIFBSSXVGQVNUMzIgInUiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXhGQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXhGQVNUMzIKLSsjIGRlZmluZSBQUkl4RkFTVDMyICJ4IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYRkFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklYRkFTVDMyCi0rIyBkZWZpbmUgUFJJWEZBU1QzMiAiWCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZEZBU1Q2NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJZEZBU1Q2NAotKyMgZGVmaW5lIFBSSWRGQVNUNjQgUFJJZDY0Ci0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWlGQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWlGQVNUNjQKLSsjIGRlZmluZSBQUklpRkFTVDY0IFBSSWk2NAotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvRkFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklvRkFTVDY0Ci0rIyBkZWZpbmUgUFJJb0ZBU1Q2NCBQUklvNjQKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdUZBU1Q2NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJdUZBU1Q2NAotKyMgZGVmaW5lIFBSSXVGQVNUNjQgUFJJdTY0Ci0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXhGQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXhGQVNUNjQKLSsjIGRlZmluZSBQUkl4RkFTVDY0IFBSSXg2NAotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYRkFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklYRkFTVDY0Ci0rIyBkZWZpbmUgUFJJWEZBU1Q2NCBQUklYNjQKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZE1BWCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJZE1BWAotKyMgZGVmaW5lIFBSSWRNQVggKHNpemVvZiAodWludG1heF90KSA9PSBzaXplb2YgKGxvbmcpID8gImxkIiA6ICJsbGQiKQotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklpTUFYIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklpTUFYCi0rIyBkZWZpbmUgUFJJaU1BWCAoc2l6ZW9mICh1aW50bWF4X3QpID09IHNpemVvZiAobG9uZykgPyAibGkiIDogImxsaSIpCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSW9NQVggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSW9NQVgKLSsjIGRlZmluZSBQUklvTUFYIChzaXplb2YgKHVpbnRtYXhfdCkgPT0gc2l6ZW9mIChsb25nKSA/ICJsbyIgOiAibGxvIikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdU1BWCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJdU1BWAotKyMgZGVmaW5lIFBSSXVNQVggKHNpemVvZiAodWludG1heF90KSA9PSBzaXplb2YgKGxvbmcpID8gImx1IiA6ICJsbHUiKQotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl4TUFYIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl4TUFYCi0rIyBkZWZpbmUgUFJJeE1BWCAoc2l6ZW9mICh1aW50bWF4X3QpID09IHNpemVvZiAobG9uZykgPyAibHgiIDogImxseCIpCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSVhNQVggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSVhNQVgKLSsjIGRlZmluZSBQUklYTUFYIChzaXplb2YgKHVpbnRtYXhfdCkgPT0gc2l6ZW9mIChsb25nKSA/ICJsWCIgOiAibGxYIikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJZFBUUiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJZFBUUgotKyMgZGVmaW5lIFBSSWRQVFIgXAotKyAgKHNpemVvZiAodm9pZCAqKSA9PSBzaXplb2YgKGxvbmcpID8gImxkIiA6IFwKLSsgICBzaXplb2YgKHZvaWQgKikgPT0gc2l6ZW9mIChpbnQpID8gImQiIDogXAotKyAgICJsbGQiKQotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklpUFRSIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklpUFRSCi0rIyBkZWZpbmUgUFJJaVBUUiBcCi0rICAoc2l6ZW9mICh2b2lkICopID09IHNpemVvZiAobG9uZykgPyAibGkiIDogXAotKyAgIHNpemVvZiAodm9pZCAqKSA9PSBzaXplb2YgKGludCkgPyAiaSIgOiBcCi0rICAgImxsaSIpCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSW9QVFIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSW9QVFIKLSsjIGRlZmluZSBQUklvUFRSIFwKLSsgIChzaXplb2YgKHZvaWQgKikgPT0gc2l6ZW9mIChsb25nKSA/ICJsbyIgOiBcCi0rICAgc2l6ZW9mICh2b2lkICopID09IHNpemVvZiAoaW50KSA/ICJvIiA6IFwKLSsgICAibGxvIikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJdVBUUiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJdVBUUgotKyMgZGVmaW5lIFBSSXVQVFIgXAotKyAgKHNpemVvZiAodm9pZCAqKSA9PSBzaXplb2YgKGxvbmcpID8gImx1IiA6IFwKLSsgICBzaXplb2YgKHZvaWQgKikgPT0gc2l6ZW9mIChpbnQpID8gInUiIDogXAotKyAgICJsbHUiKQotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl4UFRSIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl4UFRSCi0rIyBkZWZpbmUgUFJJeFBUUiBcCi0rICAoc2l6ZW9mICh2b2lkICopID09IHNpemVvZiAobG9uZykgPyAibHgiIDogXAotKyAgIHNpemVvZiAodm9pZCAqKSA9PSBzaXplb2YgKGludCkgPyAieCIgOiBcCi0rICAgImxseCIpCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSVhQVFIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSVhQVFIKLSsjIGRlZmluZSBQUklYUFRSIFwKLSsgIChzaXplb2YgKHZvaWQgKikgPT0gc2l6ZW9mIChsb25nKSA/ICJsWCIgOiBcCi0rICAgc2l6ZW9mICh2b2lkICopID09IHNpemVvZiAoaW50KSA/ICJYIiA6IFwKLSsgICAibGxYIikKLSsjZW5kaWYKLSAKLSAvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0gCi1AQCAtNDQsNyArNDU3LDYgQEAKLSAvKiBSZW5hbWUgdGhlIG5vbiBJU08gQyBmdW5jdGlvbnMuICBUaGlzIGlzIHJlcXVpcmVkIGJ5IHRoZSBzdGFuZGFyZAotICAgIGJlY2F1c2Ugc29tZSBJU08gQyBmdW5jdGlvbnMgd2lsbCByZXF1aXJlIGxpbmtpbmcgd2l0aCB0aGlzIG9iamVjdAotICAgIGZpbGUgYW5kIHRoZSBuYW1lIHNwYWNlIG11c3Qgbm90IGJlIHBvbGx1dGVkLiAgKi8KLS0jIGRlZmluZSBmc3RhdCAgX19mc3RhdAotICMgZGVmaW5lIG9wZW4gICBfX29wZW4KLSAjIGRlZmluZSBjbG9zZSAgX19jbG9zZQotICMgZGVmaW5lIHJlYWQgICBfX3JlYWQKLUBAIC01MiwzMCArNDY0LDQ3MSBAQAotICMgZGVmaW5lIG11bm1hcCBfX211bm1hcAotICNlbmRpZgotIAotKy8qIEZvciB0aG9zZSBsb3Npbmcgc3lzdGVtcyB3aGljaCBkb24ndCBoYXZlIGBhbGxvY2EnIHdlIGhhdmUgdG8gYWRkCi0rICAgc29tZSBhZGRpdGlvbmFsIGNvZGUgZW11bGF0aW5nIGl0LiAgKi8KLSsjaWZkZWYgSEFWRV9BTExPQ0EKLSsjIGRlZmluZSBmcmVlYShwKSAvKiBub3RoaW5nICovCi0rI2Vsc2UKLSsjIGRlZmluZSBhbGxvY2EobikgbWFsbG9jIChuKQotKyMgZGVmaW5lIGZyZWVhKHApIGZyZWUgKHApCi0rI2VuZGlmCi0rCi0rLyogRm9yIHN5c3RlbXMgdGhhdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRleHQgYW5kIGJpbmFyeSBJL08uCi0rICAgT19CSU5BUlkgaXMgdXN1YWxseSBkZWNsYXJlZCBpbiA8ZmNudGwuaD4uICovCi0rI2lmICFkZWZpbmVkIE9fQklOQVJZICYmIGRlZmluZWQgX09fQklOQVJZCi0rICAvKiBGb3IgTVNDLWNvbXBhdGlibGUgY29tcGlsZXJzLiAgKi8KLSsjIGRlZmluZSBPX0JJTkFSWSBfT19CSU5BUlkKLSsjIGRlZmluZSBPX1RFWFQgX09fVEVYVAotKyNlbmRpZgotKyNpZmRlZiBfX0JFT1NfXwotKyAgLyogQmVPUyA1IGhhcyBPX0JJTkFSWSBhbmQgT19URVhULCBidXQgdGhleSBoYXZlIG5vIGVmZmVjdC4gICovCi0rIyB1bmRlZiBPX0JJTkFSWQotKyMgdW5kZWYgT19URVhUCi0rI2VuZGlmCi0rLyogT24gcmVhc29uYWJsZSBzeXN0ZW1zLCBiaW5hcnkgSS9PIGlzIHRoZSBkZWZhdWx0LiAgKi8KLSsjaWZuZGVmIE9fQklOQVJZCi0rIyBkZWZpbmUgT19CSU5BUlkgMAotKyNlbmRpZgotKwotKwotIC8qIFdlIG5lZWQgYSBzaWduLCB3aGV0aGVyIGEgbmV3IGNhdGFsb2cgd2FzIGxvYWRlZCwgd2hpY2ggY2FuIGJlIGFzc29jaWF0ZWQKLSAgICB3aXRoIGFsbCB0cmFuc2xhdGlvbnMuICBUaGlzIGlzIGltcG9ydGFudCBpZiB0aGUgdHJhbnNsYXRpb25zIGFyZQotICAgIGNhY2hlZCBieSBvbmUgb2YgR0NDJ3MgZmVhdHVyZXMuICAqLwotLWludCBfbmxfbXNnX2NhdF9jbnRyID0gMDsKLStpbnQgX25sX21zZ19jYXRfY250cjsKLSAKLSAKLSsvKiBFeHBhbmQgYSBzeXN0ZW0gZGVwZW5kZW50IHN0cmluZyBzZWdtZW50LiAgUmV0dXJuIE5VTEwgaWYgdW5zdXBwb3J0ZWQuICAqLwotK3N0YXRpYyBjb25zdCBjaGFyICoKLStnZXRfc3lzZGVwX3NlZ21lbnRfdmFsdWUgKGNvbnN0IGNoYXIgKm5hbWUpCi0rewotKyAgLyogVGVzdCBmb3IgYW4gSVNPIEMgOTkgc2VjdGlvbiA3LjguMSBmb3JtYXQgc3RyaW5nIGRpcmVjdGl2ZS4KLSsgICAgIFN5bnRheDoKLSsgICAgIFAgUiBJIHsgZCB8IGkgfCBvIHwgdSB8IHggfCBYIH0KLSsgICAgIHsgeyB8IExFQVNUIHwgRkFTVCB9IHsgOCB8IDE2IHwgMzIgfCA2NCB9IHwgTUFYIHwgUFRSIH0gICovCi0rICAvKiBXZSBkb24ndCB1c2UgYSB0YWJsZSBvZiAxNCB0aW1lcyA2ICdjb25zdCBjaGFyIConIHN0cmluZ3MgaGVyZSwgYmVjYXVzZQotKyAgICAgZGF0YSByZWxvY2F0aW9ucyBjb3N0IHN0YXJ0dXAgdGltZS4gICovCi0rICBpZiAobmFtZVswXSA9PSAnUCcgJiYgbmFtZVsxXSA9PSAnUicgJiYgbmFtZVsyXSA9PSAnSScpCi0rICAgIHsKLSsgICAgICBpZiAobmFtZVszXSA9PSAnZCcgfHwgbmFtZVszXSA9PSAnaScgfHwgbmFtZVszXSA9PSAnbycgfHwgbmFtZVszXSA9PSAndScKLSsJICB8fCBuYW1lWzNdID09ICd4JyB8fCBuYW1lWzNdID09ICdYJykKLSsJewotKwkgIGlmIChuYW1lWzRdID09ICc4JyAmJiBuYW1lWzVdID09ICdcMCcpCi0rCSAgICB7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCXJldHVybiBQUklkODsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ2knKQotKwkJcmV0dXJuIFBSSWk4OwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnbycpCi0rCQlyZXR1cm4gUFJJbzg7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCXJldHVybiBQUkl1ODsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ3gnKQotKwkJcmV0dXJuIFBSSXg4OwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnWCcpCi0rCQlyZXR1cm4gUFJJWDg7Ci0rCSAgICAgIGFib3J0ICgpOwotKwkgICAgfQotKwkgIGlmIChuYW1lWzRdID09ICcxJyAmJiBuYW1lWzVdID09ICc2JyAmJiBuYW1lWzZdID09ICdcMCcpCi0rCSAgICB7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCXJldHVybiBQUklkMTY7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCXJldHVybiBQUklpMTY7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdvJykKLSsJCXJldHVybiBQUklvMTY7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCXJldHVybiBQUkl1MTY7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCXJldHVybiBQUkl4MTY7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdYJykKLSsJCXJldHVybiBQUklYMTY7Ci0rCSAgICAgIGFib3J0ICgpOwotKwkgICAgfQotKwkgIGlmIChuYW1lWzRdID09ICczJyAmJiBuYW1lWzVdID09ICcyJyAmJiBuYW1lWzZdID09ICdcMCcpCi0rCSAgICB7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCXJldHVybiBQUklkMzI7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCXJldHVybiBQUklpMzI7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdvJykKLSsJCXJldHVybiBQUklvMzI7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCXJldHVybiBQUkl1MzI7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCXJldHVybiBQUkl4MzI7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdYJykKLSsJCXJldHVybiBQUklYMzI7Ci0rCSAgICAgIGFib3J0ICgpOwotKwkgICAgfQotKwkgIGlmIChuYW1lWzRdID09ICc2JyAmJiBuYW1lWzVdID09ICc0JyAmJiBuYW1lWzZdID09ICdcMCcpCi0rCSAgICB7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCXJldHVybiBQUklkNjQ7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCXJldHVybiBQUklpNjQ7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdvJykKLSsJCXJldHVybiBQUklvNjQ7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCXJldHVybiBQUkl1NjQ7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCXJldHVybiBQUkl4NjQ7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdYJykKLSsJCXJldHVybiBQUklYNjQ7Ci0rCSAgICAgIGFib3J0ICgpOwotKwkgICAgfQotKwkgIGlmIChuYW1lWzRdID09ICdMJyAmJiBuYW1lWzVdID09ICdFJyAmJiBuYW1lWzZdID09ICdBJwotKwkgICAgICAmJiBuYW1lWzddID09ICdTJyAmJiBuYW1lWzhdID09ICdUJykKLSsJICAgIHsKLSsJICAgICAgaWYgKG5hbWVbOV0gPT0gJzgnICYmIG5hbWVbMTBdID09ICdcMCcpCi0rCQl7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCSAgICByZXR1cm4gUFJJZExFQVNUODsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ2knKQotKwkJICAgIHJldHVybiBQUklpTEVBU1Q4OwotKwkJICBpZiAobmFtZVszXSA9PSAnbycpCi0rCQkgICAgcmV0dXJuIFBSSW9MRUFTVDg7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCSAgICByZXR1cm4gUFJJdUxFQVNUODsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ3gnKQotKwkJICAgIHJldHVybiBQUkl4TEVBU1Q4OwotKwkJICBpZiAobmFtZVszXSA9PSAnWCcpCi0rCQkgICAgcmV0dXJuIFBSSVhMRUFTVDg7Ci0rCQkgIGFib3J0ICgpOwotKwkJfQotKwkgICAgICBpZiAobmFtZVs5XSA9PSAnMScgJiYgbmFtZVsxMF0gPT0gJzYnICYmIG5hbWVbMTFdID09ICdcMCcpCi0rCQl7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCSAgICByZXR1cm4gUFJJZExFQVNUMTY7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCSAgICByZXR1cm4gUFJJaUxFQVNUMTY7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdvJykKLSsJCSAgICByZXR1cm4gUFJJb0xFQVNUMTY7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCSAgICByZXR1cm4gUFJJdUxFQVNUMTY7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCSAgICByZXR1cm4gUFJJeExFQVNUMTY7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdYJykKLSsJCSAgICByZXR1cm4gUFJJWExFQVNUMTY7Ci0rCQkgIGFib3J0ICgpOwotKwkJfQotKwkgICAgICBpZiAobmFtZVs5XSA9PSAnMycgJiYgbmFtZVsxMF0gPT0gJzInICYmIG5hbWVbMTFdID09ICdcMCcpCi0rCQl7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCSAgICByZXR1cm4gUFJJZExFQVNUMzI7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCSAgICByZXR1cm4gUFJJaUxFQVNUMzI7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdvJykKLSsJCSAgICByZXR1cm4gUFJJb0xFQVNUMzI7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCSAgICByZXR1cm4gUFJJdUxFQVNUMzI7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCSAgICByZXR1cm4gUFJJeExFQVNUMzI7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdYJykKLSsJCSAgICByZXR1cm4gUFJJWExFQVNUMzI7Ci0rCQkgIGFib3J0ICgpOwotKwkJfQotKwkgICAgICBpZiAobmFtZVs5XSA9PSAnNicgJiYgbmFtZVsxMF0gPT0gJzQnICYmIG5hbWVbMTFdID09ICdcMCcpCi0rCQl7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCSAgICByZXR1cm4gUFJJZExFQVNUNjQ7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCSAgICByZXR1cm4gUFJJaUxFQVNUNjQ7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdvJykKLSsJCSAgICByZXR1cm4gUFJJb0xFQVNUNjQ7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCSAgICByZXR1cm4gUFJJdUxFQVNUNjQ7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCSAgICByZXR1cm4gUFJJeExFQVNUNjQ7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdYJykKLSsJCSAgICByZXR1cm4gUFJJWExFQVNUNjQ7Ci0rCQkgIGFib3J0ICgpOwotKwkJfQotKwkgICAgfQotKwkgIGlmIChuYW1lWzRdID09ICdGJyAmJiBuYW1lWzVdID09ICdBJyAmJiBuYW1lWzZdID09ICdTJwotKwkgICAgICAmJiBuYW1lWzddID09ICdUJykKLSsJICAgIHsKLSsJICAgICAgaWYgKG5hbWVbOF0gPT0gJzgnICYmIG5hbWVbOV0gPT0gJ1wwJykKLSsJCXsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ2QnKQotKwkJICAgIHJldHVybiBQUklkRkFTVDg7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCSAgICByZXR1cm4gUFJJaUZBU1Q4OwotKwkJICBpZiAobmFtZVszXSA9PSAnbycpCi0rCQkgICAgcmV0dXJuIFBSSW9GQVNUODsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ3UnKQotKwkJICAgIHJldHVybiBQUkl1RkFTVDg7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCSAgICByZXR1cm4gUFJJeEZBU1Q4OwotKwkJICBpZiAobmFtZVszXSA9PSAnWCcpCi0rCQkgICAgcmV0dXJuIFBSSVhGQVNUODsKLSsJCSAgYWJvcnQgKCk7Ci0rCQl9Ci0rCSAgICAgIGlmIChuYW1lWzhdID09ICcxJyAmJiBuYW1lWzldID09ICc2JyAmJiBuYW1lWzEwXSA9PSAnXDAnKQotKwkJewotKwkJICBpZiAobmFtZVszXSA9PSAnZCcpCi0rCQkgICAgcmV0dXJuIFBSSWRGQVNUMTY7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCSAgICByZXR1cm4gUFJJaUZBU1QxNjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ28nKQotKwkJICAgIHJldHVybiBQUklvRkFTVDE2OwotKwkJICBpZiAobmFtZVszXSA9PSAndScpCi0rCQkgICAgcmV0dXJuIFBSSXVGQVNUMTY7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCSAgICByZXR1cm4gUFJJeEZBU1QxNjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ1gnKQotKwkJICAgIHJldHVybiBQUklYRkFTVDE2OwotKwkJICBhYm9ydCAoKTsKLSsJCX0KLSsJICAgICAgaWYgKG5hbWVbOF0gPT0gJzMnICYmIG5hbWVbOV0gPT0gJzInICYmIG5hbWVbMTBdID09ICdcMCcpCi0rCQl7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCSAgICByZXR1cm4gUFJJZEZBU1QzMjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ2knKQotKwkJICAgIHJldHVybiBQUklpRkFTVDMyOwotKwkJICBpZiAobmFtZVszXSA9PSAnbycpCi0rCQkgICAgcmV0dXJuIFBSSW9GQVNUMzI7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCSAgICByZXR1cm4gUFJJdUZBU1QzMjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ3gnKQotKwkJICAgIHJldHVybiBQUkl4RkFTVDMyOwotKwkJICBpZiAobmFtZVszXSA9PSAnWCcpCi0rCQkgICAgcmV0dXJuIFBSSVhGQVNUMzI7Ci0rCQkgIGFib3J0ICgpOwotKwkJfQotKwkgICAgICBpZiAobmFtZVs4XSA9PSAnNicgJiYgbmFtZVs5XSA9PSAnNCcgJiYgbmFtZVsxMF0gPT0gJ1wwJykKLSsJCXsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ2QnKQotKwkJICAgIHJldHVybiBQUklkRkFTVDY0OwotKwkJICBpZiAobmFtZVszXSA9PSAnaScpCi0rCQkgICAgcmV0dXJuIFBSSWlGQVNUNjQ7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdvJykKLSsJCSAgICByZXR1cm4gUFJJb0ZBU1Q2NDsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ3UnKQotKwkJICAgIHJldHVybiBQUkl1RkFTVDY0OwotKwkJICBpZiAobmFtZVszXSA9PSAneCcpCi0rCQkgICAgcmV0dXJuIFBSSXhGQVNUNjQ7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdYJykKLSsJCSAgICByZXR1cm4gUFJJWEZBU1Q2NDsKLSsJCSAgYWJvcnQgKCk7Ci0rCQl9Ci0rCSAgICB9Ci0rCSAgaWYgKG5hbWVbNF0gPT0gJ00nICYmIG5hbWVbNV0gPT0gJ0EnICYmIG5hbWVbNl0gPT0gJ1gnCi0rCSAgICAgICYmIG5hbWVbN10gPT0gJ1wwJykKLSsJICAgIHsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ2QnKQotKwkJcmV0dXJuIFBSSWRNQVg7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCXJldHVybiBQUklpTUFYOwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnbycpCi0rCQlyZXR1cm4gUFJJb01BWDsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ3UnKQotKwkJcmV0dXJuIFBSSXVNQVg7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCXJldHVybiBQUkl4TUFYOwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnWCcpCi0rCQlyZXR1cm4gUFJJWE1BWDsKLSsJICAgICAgYWJvcnQgKCk7Ci0rCSAgICB9Ci0rCSAgaWYgKG5hbWVbNF0gPT0gJ1AnICYmIG5hbWVbNV0gPT0gJ1QnICYmIG5hbWVbNl0gPT0gJ1InCi0rCSAgICAgICYmIG5hbWVbN10gPT0gJ1wwJykKLSsJICAgIHsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ2QnKQotKwkJcmV0dXJuIFBSSWRQVFI7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCXJldHVybiBQUklpUFRSOwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnbycpCi0rCQlyZXR1cm4gUFJJb1BUUjsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ3UnKQotKwkJcmV0dXJuIFBSSXVQVFI7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCXJldHVybiBQUkl4UFRSOwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnWCcpCi0rCQlyZXR1cm4gUFJJWFBUUjsKLSsJICAgICAgYWJvcnQgKCk7Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotKyAgLyogVGVzdCBmb3IgYSBnbGliYyBzcGVjaWZpYyBwcmludGYoKSBmb3JtYXQgZGlyZWN0aXZlIGZsYWcuICAqLwotKyAgaWYgKG5hbWVbMF0gPT0gJ0knICYmIG5hbWVbMV0gPT0gJ1wwJykKLSsgICAgewotKyNpZiBkZWZpbmVkIF9MSUJDIHx8IF9fR0xJQkNfXyA+IDIgfHwgKF9fR0xJQkNfXyA9PSAyICYmIF9fR0xJQkNfTUlOT1JfXyA+PSAyKQotKyAgICAgIC8qIFRoZSAnSScgZmxhZywgaW4gbnVtZXJpYyBmb3JtYXQgZGlyZWN0aXZlcywgcmVwbGFjZXMgQVNDSUkgZGlnaXRzCi0rCSB3aXRoIHRoZSAnb3V0ZGlnaXRzJyBkZWZpbmVkIGluIHRoZSBMQ19DVFlQRSBsb2NhbGUgZmFjZXQuICBUaGlzIGlzCi0rCSB1c2VkIGZvciBGYXJzaSAoUGVyc2lhbikgYW5kIG1heWJlIEFyYWJpYy4gICovCi0rICAgICAgcmV0dXJuICJJIjsKLSsjZWxzZQotKyAgICAgIHJldHVybiAiIjsKLSsjZW5kaWYKLSsgICAgfQotKyAgLyogT3RoZXIgc3lzdGVtIGRlcGVuZGVudCBzdHJpbmdzIGFyZSBub3QgdmFsaWQuICAqLwotKyAgcmV0dXJuIE5VTEw7Ci0rfQotKwotKy8qIEluaXRpYWxpemUgdGhlIGNvZGVzZXQgZGVwZW5kZW50IHBhcnRzIG9mIGFuIG9wZW5lZCBtZXNzYWdlIGNhdGFsb2cuCi0rICAgUmV0dXJuIHRoZSBoZWFkZXIgZW50cnkuICAqLwotK2NvbnN0IGNoYXIgKgotK2ludGVybmFsX2Z1bmN0aW9uCi0rX25sX2luaXRfZG9tYWluX2NvbnYgKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbl9maWxlLAotKwkJICAgICAgc3RydWN0IGxvYWRlZF9kb21haW4gKmRvbWFpbiwKLSsJCSAgICAgIHN0cnVjdCBiaW5kaW5nICpkb21haW5iaW5kaW5nKQotK3sKLSsgIC8qIEZpbmQgb3V0IGFib3V0IHRoZSBjaGFyYWN0ZXIgc2V0IHRoZSBmaWxlIGlzIGVuY29kZWQgd2l0aC4KLSsgICAgIFRoaXMgY2FuIGJlIGZvdW5kIChpbiB0ZXh0dWFsIGZvcm0pIGluIHRoZSBlbnRyeSAiIi4gIElmIHRoaXMKLSsgICAgIGVudHJ5IGRvZXMgbm90IGV4aXN0IG9yIGlmIHRoaXMgZG9lcyBub3QgY29udGFpbiB0aGUgYGNoYXJzZXQ9JwotKyAgICAgaW5mb3JtYXRpb24sIHdlIHdpbGwgYXNzdW1lIHRoZSBjaGFyc2V0IG1hdGNoZXMgdGhlIG9uZSB0aGUKLSsgICAgIGN1cnJlbnQgbG9jYWxlIGFuZCB3ZSBkb24ndCBoYXZlIHRvIHBlcmZvcm0gYW55IGNvbnZlcnNpb24uICAqLwotKyAgY2hhciAqbnVsbGVudHJ5OwotKyAgc2l6ZV90IG51bGxlbnRyeWxlbjsKLSsKLSsgIC8qIFByZWluaXRpYWxpemUgZmllbGRzLCB0byBhdm9pZCByZWN1cnNpb24gZHVyaW5nIF9ubF9maW5kX21zZy4gICovCi0rICBkb21haW4tPmNvZGVzZXRfY250ciA9Ci0rICAgIChkb21haW5iaW5kaW5nICE9IE5VTEwgPyBkb21haW5iaW5kaW5nLT5jb2Rlc2V0X2NudHIgOiAwKTsKLSsjaWZkZWYgX0xJQkMKLSsgIGRvbWFpbi0+Y29udiA9IChfX2djb252X3QpIC0xOwotKyNlbHNlCi0rIyBpZiBIQVZFX0lDT05WCi0rICBkb21haW4tPmNvbnYgPSAoaWNvbnZfdCkgLTE7Ci0rIyBlbmRpZgotKyNlbmRpZgotKyAgZG9tYWluLT5jb252X3RhYiA9IE5VTEw7Ci0rCi0rICAvKiBHZXQgdGhlIGhlYWRlciBlbnRyeS4gICovCi0rICBudWxsZW50cnkgPSBfbmxfZmluZF9tc2cgKGRvbWFpbl9maWxlLCBkb21haW5iaW5kaW5nLCAiIiwgJm51bGxlbnRyeWxlbik7Ci0rCi0rICBpZiAobnVsbGVudHJ5ICE9IE5VTEwpCi0rICAgIHsKLSsjaWYgZGVmaW5lZCBfTElCQyB8fCBIQVZFX0lDT05WCi0rICAgICAgY29uc3QgY2hhciAqY2hhcnNldHN0cjsKLSsKLSsgICAgICBjaGFyc2V0c3RyID0gc3Ryc3RyIChudWxsZW50cnksICJjaGFyc2V0PSIpOwotKyAgICAgIGlmIChjaGFyc2V0c3RyICE9IE5VTEwpCi0rCXsKLSsJICBzaXplX3QgbGVuOwotKwkgIGNoYXIgKmNoYXJzZXQ7Ci0rCSAgY29uc3QgY2hhciAqb3V0Y2hhcnNldDsKLSsKLSsJICBjaGFyc2V0c3RyICs9IHN0cmxlbiAoImNoYXJzZXQ9Iik7Ci0rCSAgbGVuID0gc3RyY3NwbiAoY2hhcnNldHN0ciwgIiBcdFxuIik7Ci0rCi0rCSAgY2hhcnNldCA9IChjaGFyICopIGFsbG9jYSAobGVuICsgMSk7Ci0rIyBpZiBkZWZpbmVkIF9MSUJDIHx8IEhBVkVfTUVNUENQWQotKwkgICooKGNoYXIgKikgbWVtcGNweSAoY2hhcnNldCwgY2hhcnNldHN0ciwgbGVuKSkgPSAnXDAnOwotKyMgZWxzZQotKwkgIG1lbWNweSAoY2hhcnNldCwgY2hhcnNldHN0ciwgbGVuKTsKLSsJICBjaGFyc2V0W2xlbl0gPSAnXDAnOwotKyMgZW5kaWYKLSsKLSsJICAvKiBUaGUgb3V0cHV0IGNoYXJzZXQgc2hvdWxkIG5vcm1hbGx5IGJlIGRldGVybWluZWQgYnkgdGhlCi0rCSAgICAgbG9jYWxlLiAgQnV0IHNvbWV0aW1lcyB0aGUgbG9jYWxlIGlzIG5vdCB1c2VkIG9yIG5vdCBjb3JyZWN0bHkKLSsJICAgICBzZXQgdXAsIHNvIHdlIHByb3ZpZGUgYSBwb3NzaWJpbGl0eSBmb3IgdGhlIHVzZXIgdG8gb3ZlcnJpZGUKLSsJICAgICB0aGlzLiAgTW9yZW92ZXIsIHRoZSB2YWx1ZSBzcGVjaWZpZWQgdGhyb3VnaAotKwkgICAgIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IG92ZXJyaWRlcyBib3RoLiAgKi8KLSsJICBpZiAoZG9tYWluYmluZGluZyAhPSBOVUxMICYmIGRvbWFpbmJpbmRpbmctPmNvZGVzZXQgIT0gTlVMTCkKLSsJICAgIG91dGNoYXJzZXQgPSBkb21haW5iaW5kaW5nLT5jb2Rlc2V0OwotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgb3V0Y2hhcnNldCA9IGdldGVudiAoIk9VVFBVVF9DSEFSU0VUIik7Ci0rCSAgICAgIGlmIChvdXRjaGFyc2V0ID09IE5VTEwgfHwgb3V0Y2hhcnNldFswXSA9PSAnXDAnKQotKwkJewotKyMgaWZkZWYgX0xJQkMKLSsJCSAgb3V0Y2hhcnNldCA9IF9OTF9DVVJSRU5UIChMQ19DVFlQRSwgQ09ERVNFVCk7Ci0rIyBlbHNlCi0rIyAgaWYgSEFWRV9JQ09OVgotKwkJICBleHRlcm4gY29uc3QgY2hhciAqbG9jYWxlX2NoYXJzZXQgKHZvaWQpOwotKwkJICBvdXRjaGFyc2V0ID0gbG9jYWxlX2NoYXJzZXQgKCk7Ci0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rCQl9Ci0rCSAgICB9Ci0rCi0rIyBpZmRlZiBfTElCQwotKwkgIC8qIFdlIGFsd2F5cyB3YW50IHRvIHVzZSB0cmFuc2xpdGVyYXRpb24uICAqLwotKwkgIG91dGNoYXJzZXQgPSBub3JtX2FkZF9zbGFzaGVzIChvdXRjaGFyc2V0LCAiVFJBTlNMSVQiKTsKLSsJICBjaGFyc2V0ID0gbm9ybV9hZGRfc2xhc2hlcyAoY2hhcnNldCwgTlVMTCk7Ci0rCSAgaWYgKF9fZ2NvbnZfb3BlbiAob3V0Y2hhcnNldCwgY2hhcnNldCwgJmRvbWFpbi0+Y29udiwKLSsJCQkgICAgR0NPTlZfQVZPSURfTk9DT05WKQotKwkgICAgICAhPSBfX0dDT05WX09LKQotKwkgICAgZG9tYWluLT5jb252ID0gKF9fZ2NvbnZfdCkgLTE7Ci0rIyBlbHNlCi0rIyAgaWYgSEFWRV9JQ09OVgotKwkgIC8qIFdoZW4gdXNpbmcgR05VIGxpYmMgPj0gMi4yIG9yIEdOVSBsaWJpY29udiA+PSAxLjUsCi0rCSAgICAgd2Ugd2FudCB0byB1c2UgdHJhbnNsaXRlcmF0aW9uLiAgKi8KLSsjICAgaWYgKF9fR0xJQkNfXyA9PSAyICYmIF9fR0xJQkNfTUlOT1JfXyA+PSAyKSB8fCBfX0dMSUJDX18gPiAyIFwKLSsgICAgICAgfHwgX0xJQklDT05WX1ZFUlNJT04gPj0gMHgwMTA1Ci0rCSAgaWYgKHN0cmNociAob3V0Y2hhcnNldCwgJy8nKSA9PSBOVUxMKQotKwkgICAgewotKwkgICAgICBjaGFyICp0bXA7Ci0rCi0rCSAgICAgIGxlbiA9IHN0cmxlbiAob3V0Y2hhcnNldCk7Ci0rCSAgICAgIHRtcCA9IChjaGFyICopIGFsbG9jYSAobGVuICsgMTAgKyAxKTsKLSsJICAgICAgbWVtY3B5ICh0bXAsIG91dGNoYXJzZXQsIGxlbik7Ci0rCSAgICAgIG1lbWNweSAodG1wICsgbGVuLCAiLy9UUkFOU0xJVCIsIDEwICsgMSk7Ci0rCSAgICAgIG91dGNoYXJzZXQgPSB0bXA7Ci0rCi0rCSAgICAgIGRvbWFpbi0+Y29udiA9IGljb252X29wZW4gKG91dGNoYXJzZXQsIGNoYXJzZXQpOwotKwotKwkgICAgICBmcmVlYSAob3V0Y2hhcnNldCk7Ci0rCSAgICB9Ci0rCSAgZWxzZQotKyMgICBlbmRpZgotKwkgICAgZG9tYWluLT5jb252ID0gaWNvbnZfb3BlbiAob3V0Y2hhcnNldCwgY2hhcnNldCk7Ci0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rCi0rCSAgZnJlZWEgKGNoYXJzZXQpOwotKwl9Ci0rI2VuZGlmIC8qIF9MSUJDIHx8IEhBVkVfSUNPTlYgKi8KLSsgICAgfQotKwotKyAgcmV0dXJuIG51bGxlbnRyeTsKLSt9Ci0rCi0rLyogRnJlZXMgdGhlIGNvZGVzZXQgZGVwZW5kZW50IHBhcnRzIG9mIGFuIG9wZW5lZCBtZXNzYWdlIGNhdGFsb2cuICAqLwotK3ZvaWQKLStpbnRlcm5hbF9mdW5jdGlvbgotK19ubF9mcmVlX2RvbWFpbl9jb252IChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqZG9tYWluKQotK3sKLSsgIGlmIChkb21haW4tPmNvbnZfdGFiICE9IE5VTEwgJiYgZG9tYWluLT5jb252X3RhYiAhPSAoY2hhciAqKikgLTEpCi0rICAgIGZyZWUgKGRvbWFpbi0+Y29udl90YWIpOwotKwotKyNpZmRlZiBfTElCQwotKyAgaWYgKGRvbWFpbi0+Y29udiAhPSAoX19nY29udl90KSAtMSkKLSsgICAgX19nY29udl9jbG9zZSAoZG9tYWluLT5jb252KTsKLSsjZWxzZQotKyMgaWYgSEFWRV9JQ09OVgotKyAgaWYgKGRvbWFpbi0+Y29udiAhPSAoaWNvbnZfdCkgLTEpCi0rICAgIGljb252X2Nsb3NlIChkb21haW4tPmNvbnYpOwotKyMgZW5kaWYKLSsjZW5kaWYKLSt9Ci0rCi0gLyogTG9hZCB0aGUgbWVzc2FnZSBjYXRhbG9ncyBzcGVjaWZpZWQgYnkgRklMRU5BTUUuICBJZiBpdCBpcyBubyB2YWxpZAotICAgIG1lc3NhZ2UgY2F0YWxvZyBkbyBub3RoaW5nLiAgKi8KLSB2b2lkCi0tX25sX2xvYWRfZG9tYWluIChkb21haW5fZmlsZSkKLS0gICAgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbl9maWxlOwotK2ludGVybmFsX2Z1bmN0aW9uCi0rX25sX2xvYWRfZG9tYWluIChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW5fZmlsZSwKLSsJCSBzdHJ1Y3QgYmluZGluZyAqZG9tYWluYmluZGluZykKLSB7Ci0gICBpbnQgZmQ7Ci0rICBzaXplX3Qgc2l6ZTsKLSsjaWZkZWYgX0xJQkMKLSsgIHN0cnVjdCBzdGF0NjQgc3Q7Ci0rI2Vsc2UKLSAgIHN0cnVjdCBzdGF0IHN0OwotKyNlbmRpZgotICAgc3RydWN0IG1vX2ZpbGVfaGVhZGVyICpkYXRhID0gKHN0cnVjdCBtb19maWxlX2hlYWRlciAqKSAtMTsKLS0jaWYgKGRlZmluZWQgSEFWRV9NTUFQICYmIGRlZmluZWQgSEFWRV9NVU5NQVAgJiYgIWRlZmluZWQgRElTQUxMT1dfTU1BUCkgXAotLSAgICB8fCBkZWZpbmVkIF9MSUJDCi0gICBpbnQgdXNlX21tYXAgPSAwOwotLSNlbmRpZgotICAgc3RydWN0IGxvYWRlZF9kb21haW4gKmRvbWFpbjsKLSsgIGludCByZXZpc2lvbjsKLSsgIGNvbnN0IGNoYXIgKm51bGxlbnRyeTsKLSAKLSAgIGRvbWFpbl9maWxlLT5kZWNpZGVkID0gMTsKLSAgIGRvbWFpbl9maWxlLT5kYXRhID0gTlVMTDsKLSAKLSsgIC8qIE5vdGUgdGhhdCBpdCB3b3VsZCBiZSB1c2VsZXNzIHRvIHN0b3JlIGRvbWFpbmJpbmRpbmcgaW4gZG9tYWluX2ZpbGUKLSsgICAgIGJlY2F1c2UgZG9tYWluYmluZGluZyBtaWdodCBiZSA9PSBOVUxMIG5vdyBidXQgIT0gTlVMTCBsYXRlciAoYWZ0ZXIKLSsgICAgIGEgY2FsbCB0byBiaW5kX3RleHRkb21haW5fY29kZXNldCkuICAqLwotKwotICAgLyogSWYgdGhlIHJlY29yZCBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWxpZCBsb2NhbGUgdGhlIEZJTEVOQU1FCi0gICAgICBtaWdodCBiZSBOVUxMLiAgVGhpcyBjYW4gaGFwcGVuIHdoZW4gYWNjb3JkaW5nIHRvIHRoZSBnaXZlbgotICAgICAgc3BlY2lmaWNhdGlvbiB0aGUgbG9jYWxlIGZpbGUgbmFtZSBpcyBkaWZmZXJlbnQgZm9yIFhQRyBhbmQgQ0VOCi1AQCAtODQsMjcgKzkzNywzMiBAQAotICAgICByZXR1cm47Ci0gCi0gICAvKiBUcnkgdG8gb3BlbiB0aGUgYWRkcmVzc2VkIGZpbGUuICAqLwotLSAgZmQgPSBvcGVuIChkb21haW5fZmlsZS0+ZmlsZW5hbWUsIE9fUkRPTkxZKTsKLSsgIGZkID0gb3BlbiAoZG9tYWluX2ZpbGUtPmZpbGVuYW1lLCBPX1JET05MWSB8IE9fQklOQVJZKTsKLSAgIGlmIChmZCA9PSAtMSkKLSAgICAgcmV0dXJuOwotIAotICAgLyogV2UgbXVzdCBrbm93IGFib3V0IHRoZSBzaXplIG9mIHRoZSBmaWxlLiAgKi8KLS0gIGlmIChmc3RhdCAoZmQsICZzdCkgIT0gMAotLSAgICAgICYmIHN0LnN0X3NpemUgPCAob2ZmX3QpIHNpemVvZiAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyKSkKLSsgIGlmICgKLSsjaWZkZWYgX0xJQkMKLSsgICAgICBfX2J1aWx0aW5fZXhwZWN0IChmc3RhdDY0IChmZCwgJnN0KSAhPSAwLCAwKQotKyNlbHNlCi0rICAgICAgX19idWlsdGluX2V4cGVjdCAoZnN0YXQgKGZkLCAmc3QpICE9IDAsIDApCi0rI2VuZGlmCi0rICAgICAgfHwgX19idWlsdGluX2V4cGVjdCAoKHNpemUgPSAoc2l6ZV90KSBzdC5zdF9zaXplKSAhPSBzdC5zdF9zaXplLCAwKQotKyAgICAgIHx8IF9fYnVpbHRpbl9leHBlY3QgKHNpemUgPCBzaXplb2YgKHN0cnVjdCBtb19maWxlX2hlYWRlciksIDApKQotICAgICB7Ci0gICAgICAgLyogU29tZXRoaW5nIHdlbnQgd3JvbmcuICAqLwotICAgICAgIGNsb3NlIChmZCk7Ci0gICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi0tI2lmIChkZWZpbmVkIEhBVkVfTU1BUCAmJiBkZWZpbmVkIEhBVkVfTVVOTUFQICYmICFkZWZpbmVkIERJU0FMTE9XX01NQVApIFwKLS0gICAgfHwgZGVmaW5lZCBfTElCQwotKyNpZmRlZiBIQVZFX01NQVAKLSAgIC8qIE5vdyB3ZSBhcmUgcmVhZHkgdG8gbG9hZCB0aGUgZmlsZS4gIElmIG1tYXAoKSBpcyBhdmFpbGFibGUgd2UgdHJ5Ci0gICAgICB0aGlzIGZpcnN0LiAgSWYgbm90IGF2YWlsYWJsZSBvciBpdCBmYWlsZWQgd2UgdHJ5IHRvIGxvYWQgaXQuICAqLwotLSAgZGF0YSA9IChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKikgbW1hcCAoTlVMTCwgc3Quc3Rfc2l6ZSwgUFJPVF9SRUFELAotKyAgZGF0YSA9IChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKikgbW1hcCAoTlVMTCwgc2l6ZSwgUFJPVF9SRUFELAotIAkJCQkJIE1BUF9QUklWQVRFLCBmZCwgMCk7Ci0gCi0tICBpZiAoZGF0YSAhPSAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyICopIC0xKQotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGRhdGEgIT0gKHN0cnVjdCBtb19maWxlX2hlYWRlciAqKSAtMSwgMSkpCi0gICAgIHsKLSAgICAgICAvKiBtbWFwKCkgY2FsbCB3YXMgc3VjY2Vzc2Z1bC4gICovCi0gICAgICAgY2xvc2UgKGZkKTsKLUBAIC0xMTYsMjQgKzk3NCwyNyBAQAotICAgICAgaXQgbWFudWFsbHkuICAqLwotICAgaWYgKGRhdGEgPT0gKHN0cnVjdCBtb19maWxlX2hlYWRlciAqKSAtMSkKLSAgICAgewotLSAgICAgIG9mZl90IHRvX3JlYWQ7Ci0rICAgICAgc2l6ZV90IHRvX3JlYWQ7Ci0gICAgICAgY2hhciAqcmVhZF9wdHI7Ci0gCi0tICAgICAgZGF0YSA9IChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKikgbWFsbG9jIChzdC5zdF9zaXplKTsKLSsgICAgICBkYXRhID0gKHN0cnVjdCBtb19maWxlX2hlYWRlciAqKSBtYWxsb2MgKHNpemUpOwotICAgICAgIGlmIChkYXRhID09IE5VTEwpCi0gCXJldHVybjsKLSAKLS0gICAgICB0b19yZWFkID0gc3Quc3Rfc2l6ZTsKLSsgICAgICB0b19yZWFkID0gc2l6ZTsKLSAgICAgICByZWFkX3B0ciA9IChjaGFyICopIGRhdGE7Ci0gICAgICAgZG8KLSAJewotIAkgIGxvbmcgaW50IG5iID0gKGxvbmcgaW50KSByZWFkIChmZCwgcmVhZF9wdHIsIHRvX3JlYWQpOwotLQkgIGlmIChuYiA9PSAtMSkKLSsJICBpZiAobmIgPD0gMCkKLSAJICAgIHsKLSsjaWZkZWYgRUlOVFIKLSsJICAgICAgaWYgKG5iID09IC0xICYmIGVycm5vID09IEVJTlRSKQotKwkJY29udGludWU7Ci0rI2VuZGlmCi0gCSAgICAgIGNsb3NlIChmZCk7Ci0gCSAgICAgIHJldHVybjsKLSAJICAgIH0KLS0KLSAJICByZWFkX3B0ciArPSBuYjsKLSAJICB0b19yZWFkIC09IG5iOwotIAl9Ci1AQCAtMTQ0LDQ3ICsxMDA1LDM3OCBAQAotIAotICAgLyogVXNpbmcgdGhlIG1hZ2ljIG51bWJlciB3ZSBjYW4gdGVzdCB3aGV0aGVyIGl0IHJlYWxseSBpcyBhIG1lc3NhZ2UKLSAgICAgIGNhdGFsb2cgZmlsZS4gICovCi0tICBpZiAoZGF0YS0+bWFnaWMgIT0gX01BR0lDICYmIGRhdGEtPm1hZ2ljICE9IF9NQUdJQ19TV0FQUEVEKQotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGRhdGEtPm1hZ2ljICE9IF9NQUdJQyAmJiBkYXRhLT5tYWdpYyAhPSBfTUFHSUNfU1dBUFBFRCwKLSsJCQkwKSkKLSAgICAgewotICAgICAgIC8qIFRoZSBtYWdpYyBudW1iZXIgaXMgd3Jvbmc6IG5vdCBhIG1lc3NhZ2UgY2F0YWxvZyBmaWxlLiAgKi8KLS0jaWYgKGRlZmluZWQgSEFWRV9NTUFQICYmIGRlZmluZWQgSEFWRV9NVU5NQVAgJiYgIWRlZmluZWQgRElTQUxMT1dfTU1BUCkgXAotLSAgICB8fCBkZWZpbmVkIF9MSUJDCi0rI2lmZGVmIEhBVkVfTU1BUAotICAgICAgIGlmICh1c2VfbW1hcCkKLS0JbXVubWFwICgoY2FkZHJfdCkgZGF0YSwgc3Quc3Rfc2l6ZSk7Ci0rCW11bm1hcCAoKGNhZGRyX3QpIGRhdGEsIHNpemUpOwotICAgICAgIGVsc2UKLSAjZW5kaWYKLSAJZnJlZSAoZGF0YSk7Ci0gICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi0tICBkb21haW5fZmlsZS0+ZGF0YQotLSAgICA9IChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqKSBtYWxsb2MgKHNpemVvZiAoc3RydWN0IGxvYWRlZF9kb21haW4pKTsKLS0gIGlmIChkb21haW5fZmlsZS0+ZGF0YSA9PSBOVUxMKQotKyAgZG9tYWluID0gKHN0cnVjdCBsb2FkZWRfZG9tYWluICopIG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgbG9hZGVkX2RvbWFpbikpOwotKyAgaWYgKGRvbWFpbiA9PSBOVUxMKQotICAgICByZXR1cm47Ci0rICBkb21haW5fZmlsZS0+ZGF0YSA9IGRvbWFpbjsKLSAKLS0gIGRvbWFpbiA9IChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqKSBkb21haW5fZmlsZS0+ZGF0YTsKLSAgIGRvbWFpbi0+ZGF0YSA9IChjaGFyICopIGRhdGE7Ci0rICBkb21haW4tPnVzZV9tbWFwID0gdXNlX21tYXA7Ci0rICBkb21haW4tPm1tYXBfc2l6ZSA9IHNpemU7Ci0gICBkb21haW4tPm11c3Rfc3dhcCA9IGRhdGEtPm1hZ2ljICE9IF9NQUdJQzsKLSsgIGRvbWFpbi0+bWFsbG9jZWQgPSBOVUxMOwotIAotICAgLyogRmlsbCBpbiB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGF2YWlsYWJsZSB0YWJsZXMuICAqLwotLSAgc3dpdGNoIChXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+cmV2aXNpb24pKQotKyAgcmV2aXNpb24gPSBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+cmV2aXNpb24pOwotKyAgLyogV2Ugc3VwcG9ydCBvbmx5IHRoZSBtYWpvciByZXZpc2lvbnMgMCBhbmQgMS4gICovCi0rICBzd2l0Y2ggKHJldmlzaW9uID4+IDE2KQotICAgICB7Ci0gICAgIGNhc2UgMDoKLSsgICAgY2FzZSAxOgotICAgICAgIGRvbWFpbi0+bnN0cmluZ3MgPSBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+bnN0cmluZ3MpOwotLSAgICAgIGRvbWFpbi0+b3JpZ190YWIgPSAoc3RydWN0IHN0cmluZ19kZXNjICopCi0rICAgICAgZG9tYWluLT5vcmlnX3RhYiA9IChjb25zdCBzdHJ1Y3Qgc3RyaW5nX2Rlc2MgKikKLSAJKChjaGFyICopIGRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+b3JpZ190YWJfb2Zmc2V0KSk7Ci0tICAgICAgZG9tYWluLT50cmFuc190YWIgPSAoc3RydWN0IHN0cmluZ19kZXNjICopCi0rICAgICAgZG9tYWluLT50cmFuc190YWIgPSAoY29uc3Qgc3RydWN0IHN0cmluZ19kZXNjICopCi0gCSgoY2hhciAqKSBkYXRhICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPnRyYW5zX3RhYl9vZmZzZXQpKTsKLSAgICAgICBkb21haW4tPmhhc2hfc2l6ZSA9IFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5oYXNoX3RhYl9zaXplKTsKLS0gICAgICBkb21haW4tPmhhc2hfdGFiID0gKG5sc191aW50MzIgKikKLS0JKChjaGFyICopIGRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+aGFzaF90YWJfb2Zmc2V0KSk7Ci0rICAgICAgZG9tYWluLT5oYXNoX3RhYiA9Ci0rCShkb21haW4tPmhhc2hfc2l6ZSA+IDIKLSsJID8gKGNvbnN0IG5sc191aW50MzIgKikKLSsJICAgKChjaGFyICopIGRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+aGFzaF90YWJfb2Zmc2V0KSkKLSsJIDogTlVMTCk7Ci0rICAgICAgZG9tYWluLT5tdXN0X3N3YXBfaGFzaF90YWIgPSBkb21haW4tPm11c3Rfc3dhcDsKLSsKLSsgICAgICAvKiBOb3cgZGlzcGF0Y2ggb24gdGhlIG1pbm9yIHJldmlzaW9uLiAgKi8KLSsgICAgICBzd2l0Y2ggKHJldmlzaW9uICYgMHhmZmZmKQotKwl7Ci0rCWNhc2UgMDoKLSsJICBkb21haW4tPm5fc3lzZGVwX3N0cmluZ3MgPSAwOwotKwkgIGRvbWFpbi0+b3JpZ19zeXNkZXBfdGFiID0gTlVMTDsKLSsJICBkb21haW4tPnRyYW5zX3N5c2RlcF90YWIgPSBOVUxMOwotKwkgIGJyZWFrOwotKwljYXNlIDE6Ci0rCWRlZmF1bHQ6Ci0rCSAgewotKwkgICAgbmxzX3VpbnQzMiBuX3N5c2RlcF9zdHJpbmdzOwotKwotKwkgICAgaWYgKGRvbWFpbi0+aGFzaF90YWIgPT0gTlVMTCkKLSsJICAgICAgLyogVGhpcyBpcyBpbnZhbGlkLiAgVGhlc2UgbWlub3IgcmV2aXNpb25zIG5lZWQgYSBoYXNoIHRhYmxlLiAgKi8KLSsJICAgICAgZ290byBpbnZhbGlkOwotKwotKwkgICAgbl9zeXNkZXBfc3RyaW5ncyA9Ci0rCSAgICAgIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5uX3N5c2RlcF9zdHJpbmdzKTsKLSsJICAgIGlmIChuX3N5c2RlcF9zdHJpbmdzID4gMCkKLSsJICAgICAgewotKwkJbmxzX3VpbnQzMiBuX3N5c2RlcF9zZWdtZW50czsKLSsJCWNvbnN0IHN0cnVjdCBzeXNkZXBfc2VnbWVudCAqc3lzZGVwX3NlZ21lbnRzOwotKwkJY29uc3QgY2hhciAqKnN5c2RlcF9zZWdtZW50X3ZhbHVlczsKLSsJCWNvbnN0IG5sc191aW50MzIgKm9yaWdfc3lzZGVwX3RhYjsKLSsJCWNvbnN0IG5sc191aW50MzIgKnRyYW5zX3N5c2RlcF90YWI7Ci0rCQlubHNfdWludDMyIG5faW5tZW1fc3lzZGVwX3N0cmluZ3M7Ci0rCQlzaXplX3QgbWVtbmVlZDsKLSsJCWNoYXIgKm1lbTsKLSsJCXN0cnVjdCBzeXNkZXBfc3RyaW5nX2Rlc2MgKmlubWVtX29yaWdfc3lzZGVwX3RhYjsKLSsJCXN0cnVjdCBzeXNkZXBfc3RyaW5nX2Rlc2MgKmlubWVtX3RyYW5zX3N5c2RlcF90YWI7Ci0rCQlubHNfdWludDMyICppbm1lbV9oYXNoX3RhYjsKLSsJCXVuc2lnbmVkIGludCBpLCBqOwotKwotKwkJLyogR2V0IHRoZSB2YWx1ZXMgb2YgdGhlIHN5c3RlbSBkZXBlbmRlbnQgc2VnbWVudHMuICAqLwotKwkJbl9zeXNkZXBfc2VnbWVudHMgPQotKwkJICBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+bl9zeXNkZXBfc2VnbWVudHMpOwotKwkJc3lzZGVwX3NlZ21lbnRzID0gKGNvbnN0IHN0cnVjdCBzeXNkZXBfc2VnbWVudCAqKQotKwkJICAoKGNoYXIgKikgZGF0YQotKwkJICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+c3lzZGVwX3NlZ21lbnRzX29mZnNldCkpOwotKwkJc3lzZGVwX3NlZ21lbnRfdmFsdWVzID0KLSsJCSAgYWxsb2NhIChuX3N5c2RlcF9zZWdtZW50cyAqIHNpemVvZiAoY29uc3QgY2hhciAqKSk7Ci0rCQlmb3IgKGkgPSAwOyBpIDwgbl9zeXNkZXBfc2VnbWVudHM7IGkrKykKLSsJCSAgewotKwkJICAgIGNvbnN0IGNoYXIgKm5hbWUgPQotKwkJICAgICAgKGNoYXIgKikgZGF0YQotKwkJICAgICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgc3lzZGVwX3NlZ21lbnRzW2ldLm9mZnNldCk7Ci0rCQkgICAgbmxzX3VpbnQzMiBuYW1lbGVuID0KLSsJCSAgICAgIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBzeXNkZXBfc2VnbWVudHNbaV0ubGVuZ3RoKTsKLSsKLSsJCSAgICBpZiAoIShuYW1lbGVuID4gMCAmJiBuYW1lW25hbWVsZW4gLSAxXSA9PSAnXDAnKSkKLSsJCSAgICAgIHsKLSsJCQlmcmVlYSAoc3lzZGVwX3NlZ21lbnRfdmFsdWVzKTsKLSsJCQlnb3RvIGludmFsaWQ7Ci0rCQkgICAgICB9Ci0rCi0rCQkgICAgc3lzZGVwX3NlZ21lbnRfdmFsdWVzW2ldID0gZ2V0X3N5c2RlcF9zZWdtZW50X3ZhbHVlIChuYW1lKTsKLSsJCSAgfQotKwotKwkJb3JpZ19zeXNkZXBfdGFiID0gKGNvbnN0IG5sc191aW50MzIgKikKLSsJCSAgKChjaGFyICopIGRhdGEKLSsJCSAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPm9yaWdfc3lzZGVwX3RhYl9vZmZzZXQpKTsKLSsJCXRyYW5zX3N5c2RlcF90YWIgPSAoY29uc3QgbmxzX3VpbnQzMiAqKQotKwkJICAoKGNoYXIgKikgZGF0YQotKwkJICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+dHJhbnNfc3lzZGVwX3RhYl9vZmZzZXQpKTsKLSsKLSsJCS8qIENvbXB1dGUgdGhlIGFtb3VudCBvZiBhZGRpdGlvbmFsIG1lbW9yeSBuZWVkZWQgZm9yIHRoZQotKwkJICAgc3lzdGVtIGRlcGVuZGVudCBzdHJpbmdzIGFuZCB0aGUgYXVnbWVudGVkIGhhc2ggdGFibGUuCi0rCQkgICBBdCB0aGUgc2FtZSB0aW1lLCBhbHNvIGRyb3Agc3RyaW5nIHBhaXJzIHdoaWNoIHJlZmVyIHRvCi0rCQkgICBhbiB1bmRlZmluZWQgc3lzdGVtIGRlcGVuZGVudCBzZWdtZW50LiAgKi8KLSsJCW5faW5tZW1fc3lzZGVwX3N0cmluZ3MgPSAwOwotKwkJbWVtbmVlZCA9IGRvbWFpbi0+aGFzaF9zaXplICogc2l6ZW9mIChubHNfdWludDMyKTsKLSsJCWZvciAoaSA9IDA7IGkgPCBuX3N5c2RlcF9zdHJpbmdzOyBpKyspCi0rCQkgIHsKLSsJCSAgICBpbnQgdmFsaWQgPSAxOwotKwkJICAgIHNpemVfdCBuZWVkc1syXTsKLSsKLSsJCSAgICBmb3IgKGogPSAwOyBqIDwgMjsgaisrKQotKwkJICAgICAgewotKwkJCWNvbnN0IHN0cnVjdCBzeXNkZXBfc3RyaW5nICpzeXNkZXBfc3RyaW5nID0KLSsJCQkgIChjb25zdCBzdHJ1Y3Qgc3lzZGVwX3N0cmluZyAqKQotKwkJCSAgKChjaGFyICopIGRhdGEKLSsJCQkgICArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLAotKwkJCQlqID09IDAKLSsJCQkJPyBvcmlnX3N5c2RlcF90YWJbaV0KLSsJCQkJOiB0cmFuc19zeXNkZXBfdGFiW2ldKSk7Ci0rCQkJc2l6ZV90IG5lZWQgPSAwOwotKwkJCWNvbnN0IHN0cnVjdCBzZWdtZW50X3BhaXIgKnAgPSBzeXNkZXBfc3RyaW5nLT5zZWdtZW50czsKLSsKLSsJCQlpZiAoVyAoZG9tYWluLT5tdXN0X3N3YXAsIHAtPnN5c2RlcHJlZikgIT0gU0VHTUVOVFNfRU5EKQotKwkJCSAgZm9yIChwID0gc3lzZGVwX3N0cmluZy0+c2VnbWVudHM7OyBwKyspCi0rCQkJICAgIHsKLSsJCQkgICAgICBubHNfdWludDMyIHN5c2RlcHJlZjsKLSsKLSsJCQkgICAgICBuZWVkICs9IFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBwLT5zZWdzaXplKTsKLSsKLSsJCQkgICAgICBzeXNkZXByZWYgPSBXIChkb21haW4tPm11c3Rfc3dhcCwgcC0+c3lzZGVwcmVmKTsKLSsJCQkgICAgICBpZiAoc3lzZGVwcmVmID09IFNFR01FTlRTX0VORCkKLSsJCQkJYnJlYWs7Ci0rCi0rCQkJICAgICAgaWYgKHN5c2RlcHJlZiA+PSBuX3N5c2RlcF9zZWdtZW50cykKLSsJCQkJewotKwkJCQkgIC8qIEludmFsaWQuICAqLwotKwkJCQkgIGZyZWVhIChzeXNkZXBfc2VnbWVudF92YWx1ZXMpOwotKwkJCQkgIGdvdG8gaW52YWxpZDsKLSsJCQkJfQotKwotKwkJCSAgICAgIGlmIChzeXNkZXBfc2VnbWVudF92YWx1ZXNbc3lzZGVwcmVmXSA9PSBOVUxMKQotKwkJCQl7Ci0rCQkJCSAgLyogVGhpcyBwYXJ0aWN1bGFyIHN0cmluZyBwYWlyIGlzIGludmFsaWQuICAqLwotKwkJCQkgIHZhbGlkID0gMDsKLSsJCQkJICBicmVhazsKLSsJCQkJfQotKwotKwkJCSAgICAgIG5lZWQgKz0gc3RybGVuIChzeXNkZXBfc2VnbWVudF92YWx1ZXNbc3lzZGVwcmVmXSk7Ci0rCQkJICAgIH0KLSsKLSsJCQluZWVkc1tqXSA9IG5lZWQ7Ci0rCQkJaWYgKCF2YWxpZCkKLSsJCQkgIGJyZWFrOwotKwkJICAgICAgfQotKwotKwkJICAgIGlmICh2YWxpZCkKLSsJCSAgICAgIHsKLSsJCQluX2lubWVtX3N5c2RlcF9zdHJpbmdzKys7Ci0rCQkJbWVtbmVlZCArPSBuZWVkc1swXSArIG5lZWRzWzFdOwotKwkJICAgICAgfQotKwkJICB9Ci0rCQltZW1uZWVkICs9IDIgKiBuX2lubWVtX3N5c2RlcF9zdHJpbmdzCi0rCQkJICAgKiBzaXplb2YgKHN0cnVjdCBzeXNkZXBfc3RyaW5nX2Rlc2MpOwotKwotKwkJaWYgKG5faW5tZW1fc3lzZGVwX3N0cmluZ3MgPiAwKQotKwkJICB7Ci0rCQkgICAgdW5zaWduZWQgaW50IGs7Ci0rCi0rCQkgICAgLyogQWxsb2NhdGUgYWRkaXRpb25hbCBtZW1vcnkuICAqLwotKwkJICAgIG1lbSA9IChjaGFyICopIG1hbGxvYyAobWVtbmVlZCk7Ci0rCQkgICAgaWYgKG1lbSA9PSBOVUxMKQotKwkJICAgICAgZ290byBpbnZhbGlkOwotKwotKwkJICAgIGRvbWFpbi0+bWFsbG9jZWQgPSBtZW07Ci0rCQkgICAgaW5tZW1fb3JpZ19zeXNkZXBfdGFiID0gKHN0cnVjdCBzeXNkZXBfc3RyaW5nX2Rlc2MgKikgbWVtOwotKwkJICAgIG1lbSArPSBuX2lubWVtX3N5c2RlcF9zdHJpbmdzCi0rCQkJICAgKiBzaXplb2YgKHN0cnVjdCBzeXNkZXBfc3RyaW5nX2Rlc2MpOwotKwkJICAgIGlubWVtX3RyYW5zX3N5c2RlcF90YWIgPSAoc3RydWN0IHN5c2RlcF9zdHJpbmdfZGVzYyAqKSBtZW07Ci0rCQkgICAgbWVtICs9IG5faW5tZW1fc3lzZGVwX3N0cmluZ3MKLSsJCQkgICAqIHNpemVvZiAoc3RydWN0IHN5c2RlcF9zdHJpbmdfZGVzYyk7Ci0rCQkgICAgaW5tZW1faGFzaF90YWIgPSAobmxzX3VpbnQzMiAqKSBtZW07Ci0rCQkgICAgbWVtICs9IGRvbWFpbi0+aGFzaF9zaXplICogc2l6ZW9mIChubHNfdWludDMyKTsKLSsKLSsJCSAgICAvKiBDb21wdXRlIHRoZSBzeXN0ZW0gZGVwZW5kZW50IHN0cmluZ3MuICAqLwotKwkJICAgIGsgPSAwOwotKwkJICAgIGZvciAoaSA9IDA7IGkgPCBuX3N5c2RlcF9zdHJpbmdzOyBpKyspCi0rCQkgICAgICB7Ci0rCQkJaW50IHZhbGlkID0gMTsKLSsKLSsJCQlmb3IgKGogPSAwOyBqIDwgMjsgaisrKQotKwkJCSAgewotKwkJCSAgICBjb25zdCBzdHJ1Y3Qgc3lzZGVwX3N0cmluZyAqc3lzZGVwX3N0cmluZyA9Ci0rCQkJICAgICAgKGNvbnN0IHN0cnVjdCBzeXNkZXBfc3RyaW5nICopCi0rCQkJICAgICAgKChjaGFyICopIGRhdGEKLSsJCQkgICAgICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwKLSsJCQkJICAgIGogPT0gMAotKwkJCQkgICAgPyBvcmlnX3N5c2RlcF90YWJbaV0KLSsJCQkJICAgIDogdHJhbnNfc3lzZGVwX3RhYltpXSkpOwotKwkJCSAgICBjb25zdCBzdHJ1Y3Qgc2VnbWVudF9wYWlyICpwID0KLSsJCQkgICAgICBzeXNkZXBfc3RyaW5nLT5zZWdtZW50czsKLSsKLSsJCQkgICAgaWYgKFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBwLT5zeXNkZXByZWYpCi0rCQkJCSE9IFNFR01FTlRTX0VORCkKLSsJCQkgICAgICBmb3IgKHAgPSBzeXNkZXBfc3RyaW5nLT5zZWdtZW50czs7IHArKykKLSsJCQkJewotKwkJCQkgIG5sc191aW50MzIgc3lzZGVwcmVmOwotKwotKwkJCQkgIHN5c2RlcHJlZiA9Ci0rCQkJCSAgICBXIChkb21haW4tPm11c3Rfc3dhcCwgcC0+c3lzZGVwcmVmKTsKLSsJCQkJICBpZiAoc3lzZGVwcmVmID09IFNFR01FTlRTX0VORCkKLSsJCQkJICAgIGJyZWFrOwotKwotKwkJCQkgIGlmIChzeXNkZXBfc2VnbWVudF92YWx1ZXNbc3lzZGVwcmVmXSA9PSBOVUxMKQotKwkJCQkgICAgewotKwkJCQkgICAgICAvKiBUaGlzIHBhcnRpY3VsYXIgc3RyaW5nIHBhaXIgaXMKLSsJCQkJCSBpbnZhbGlkLiAgKi8KLSsJCQkJICAgICAgdmFsaWQgPSAwOwotKwkJCQkgICAgICBicmVhazsKLSsJCQkJICAgIH0KLSsJCQkJfQotKwotKwkJCSAgICBpZiAoIXZhbGlkKQotKwkJCSAgICAgIGJyZWFrOwotKwkJCSAgfQotKwotKwkJCWlmICh2YWxpZCkKLSsJCQkgIHsKLSsJCQkgICAgZm9yIChqID0gMDsgaiA8IDI7IGorKykKLSsJCQkgICAgICB7Ci0rCQkJCWNvbnN0IHN0cnVjdCBzeXNkZXBfc3RyaW5nICpzeXNkZXBfc3RyaW5nID0KLSsJCQkJICAoY29uc3Qgc3RydWN0IHN5c2RlcF9zdHJpbmcgKikKLSsJCQkJICAoKGNoYXIgKikgZGF0YQotKwkJCQkgICArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLAotKwkJCQkJaiA9PSAwCi0rCQkJCQk/IG9yaWdfc3lzZGVwX3RhYltpXQotKwkJCQkJOiB0cmFuc19zeXNkZXBfdGFiW2ldKSk7Ci0rCQkJCWNvbnN0IGNoYXIgKnN0YXRpY19zZWdtZW50cyA9Ci0rCQkJCSAgKGNoYXIgKikgZGF0YQotKwkJCQkgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIHN5c2RlcF9zdHJpbmctPm9mZnNldCk7Ci0rCQkJCWNvbnN0IHN0cnVjdCBzZWdtZW50X3BhaXIgKnAgPQotKwkJCQkgIHN5c2RlcF9zdHJpbmctPnNlZ21lbnRzOwotKwotKwkJCQkvKiBDb25jYXRlbmF0ZSB0aGUgc2VnbWVudHMsIGFuZCBmaWxsCi0rCQkJCSAgIGlubWVtX29yaWdfc3lzZGVwX3RhYltrXSAoZm9yIGogPT0gMCkgYW5kCi0rCQkJCSAgIGlubWVtX3RyYW5zX3N5c2RlcF90YWJba10gKGZvciBqID09IDEpLiAgKi8KLSsKLSsJCQkJc3RydWN0IHN5c2RlcF9zdHJpbmdfZGVzYyAqaW5tZW1fdGFiX2VudHJ5ID0KLSsJCQkJICAoaiA9PSAwCi0rCQkJCSAgID8gaW5tZW1fb3JpZ19zeXNkZXBfdGFiCi0rCQkJCSAgIDogaW5tZW1fdHJhbnNfc3lzZGVwX3RhYikKLSsJCQkJICArIGs7Ci0rCi0rCQkJCWlmIChXIChkb21haW4tPm11c3Rfc3dhcCwgcC0+c3lzZGVwcmVmKQotKwkJCQkgICAgPT0gU0VHTUVOVFNfRU5EKQotKwkJCQkgIHsKLSsJCQkJICAgIC8qIE9ubHkgb25lIHN0YXRpYyBzZWdtZW50LiAgKi8KLSsJCQkJICAgIGlubWVtX3RhYl9lbnRyeS0+bGVuZ3RoID0KLSsJCQkJICAgICAgVyAoZG9tYWluLT5tdXN0X3N3YXAsIHAtPnNlZ3NpemUpOwotKwkJCQkgICAgaW5tZW1fdGFiX2VudHJ5LT5wb2ludGVyID0gc3RhdGljX3NlZ21lbnRzOwotKwkJCQkgIH0KLSsJCQkJZWxzZQotKwkJCQkgIHsKLSsJCQkJICAgIGlubWVtX3RhYl9lbnRyeS0+cG9pbnRlciA9IG1lbTsKLSsKLSsJCQkJICAgIGZvciAocCA9IHN5c2RlcF9zdHJpbmctPnNlZ21lbnRzOzsgcCsrKQotKwkJCQkgICAgICB7Ci0rCQkJCQlubHNfdWludDMyIHNlZ3NpemUgPQotKwkJCQkJICBXIChkb21haW4tPm11c3Rfc3dhcCwgcC0+c2Vnc2l6ZSk7Ci0rCQkJCQlubHNfdWludDMyIHN5c2RlcHJlZiA9Ci0rCQkJCQkgIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBwLT5zeXNkZXByZWYpOwotKwkJCQkJc2l6ZV90IG47Ci0rCi0rCQkJCQlpZiAoc2Vnc2l6ZSA+IDApCi0rCQkJCQkgIHsKLSsJCQkJCSAgICBtZW1jcHkgKG1lbSwgc3RhdGljX3NlZ21lbnRzLCBzZWdzaXplKTsKLSsJCQkJCSAgICBtZW0gKz0gc2Vnc2l6ZTsKLSsJCQkJCSAgICBzdGF0aWNfc2VnbWVudHMgKz0gc2Vnc2l6ZTsKLSsJCQkJCSAgfQotKwotKwkJCQkJaWYgKHN5c2RlcHJlZiA9PSBTRUdNRU5UU19FTkQpCi0rCQkJCQkgIGJyZWFrOwotKwotKwkJCQkJbiA9IHN0cmxlbiAoc3lzZGVwX3NlZ21lbnRfdmFsdWVzW3N5c2RlcHJlZl0pOwotKwkJCQkJbWVtY3B5IChtZW0sIHN5c2RlcF9zZWdtZW50X3ZhbHVlc1tzeXNkZXByZWZdLCBuKTsKLSsJCQkJCW1lbSArPSBuOwotKwkJCQkgICAgICB9Ci0rCi0rCQkJCSAgICBpbm1lbV90YWJfZW50cnktPmxlbmd0aCA9Ci0rCQkJCSAgICAgIG1lbSAtIGlubWVtX3RhYl9lbnRyeS0+cG9pbnRlcjsKLSsJCQkJICB9Ci0rCQkJICAgICAgfQotKwotKwkJCSAgICBrKys7Ci0rCQkJICB9Ci0rCQkgICAgICB9Ci0rCQkgICAgaWYgKGsgIT0gbl9pbm1lbV9zeXNkZXBfc3RyaW5ncykKLSsJCSAgICAgIGFib3J0ICgpOwotKwotKwkJICAgIC8qIENvbXB1dGUgdGhlIGF1Z21lbnRlZCBoYXNoIHRhYmxlLiAgKi8KLSsJCSAgICBmb3IgKGkgPSAwOyBpIDwgZG9tYWluLT5oYXNoX3NpemU7IGkrKykKLSsJCSAgICAgIGlubWVtX2hhc2hfdGFiW2ldID0KLSsJCQlXIChkb21haW4tPm11c3Rfc3dhcF9oYXNoX3RhYiwgZG9tYWluLT5oYXNoX3RhYltpXSk7Ci0rCQkgICAgZm9yIChpID0gMDsgaSA8IG5faW5tZW1fc3lzZGVwX3N0cmluZ3M7IGkrKykKLSsJCSAgICAgIHsKLSsJCQljb25zdCBjaGFyICptc2dpZCA9IGlubWVtX29yaWdfc3lzZGVwX3RhYltpXS5wb2ludGVyOwotKwkJCW5sc191aW50MzIgaGFzaF92YWwgPSBoYXNoX3N0cmluZyAobXNnaWQpOwotKwkJCW5sc191aW50MzIgaWR4ID0gaGFzaF92YWwgJSBkb21haW4tPmhhc2hfc2l6ZTsKLSsJCQlubHNfdWludDMyIGluY3IgPQotKwkJCSAgMSArIChoYXNoX3ZhbCAlIChkb21haW4tPmhhc2hfc2l6ZSAtIDIpKTsKLSsKLSsJCQlmb3IgKDs7KQotKwkJCSAgewotKwkJCSAgICBpZiAoaW5tZW1faGFzaF90YWJbaWR4XSA9PSAwKQotKwkJCSAgICAgIHsKLSsJCQkJLyogSGFzaCB0YWJsZSBlbnRyeSBpcyBlbXB0eS4gIFVzZSBpdC4gICovCi0rCQkJCWlubWVtX2hhc2hfdGFiW2lkeF0gPSAxICsgZG9tYWluLT5uc3RyaW5ncyArIGk7Ci0rCQkJCWJyZWFrOwotKwkJCSAgICAgIH0KLSsKLSsJCQkgICAgaWYgKGlkeCA+PSBkb21haW4tPmhhc2hfc2l6ZSAtIGluY3IpCi0rCQkJICAgICAgaWR4IC09IGRvbWFpbi0+aGFzaF9zaXplIC0gaW5jcjsKLSsJCQkgICAgZWxzZQotKwkJCSAgICAgIGlkeCArPSBpbmNyOwotKwkJCSAgfQotKwkJICAgICAgfQotKwotKwkJICAgIGRvbWFpbi0+bl9zeXNkZXBfc3RyaW5ncyA9IG5faW5tZW1fc3lzZGVwX3N0cmluZ3M7Ci0rCQkgICAgZG9tYWluLT5vcmlnX3N5c2RlcF90YWIgPSBpbm1lbV9vcmlnX3N5c2RlcF90YWI7Ci0rCQkgICAgZG9tYWluLT50cmFuc19zeXNkZXBfdGFiID0gaW5tZW1fdHJhbnNfc3lzZGVwX3RhYjsKLSsKLSsJCSAgICBkb21haW4tPmhhc2hfdGFiID0gaW5tZW1faGFzaF90YWI7Ci0rCQkgICAgZG9tYWluLT5tdXN0X3N3YXBfaGFzaF90YWIgPSAwOwotKwkJICB9Ci0rCQllbHNlCi0rCQkgIHsKLSsJCSAgICBkb21haW4tPm5fc3lzZGVwX3N0cmluZ3MgPSAwOwotKwkJICAgIGRvbWFpbi0+b3JpZ19zeXNkZXBfdGFiID0gTlVMTDsKLSsJCSAgICBkb21haW4tPnRyYW5zX3N5c2RlcF90YWIgPSBOVUxMOwotKwkJICB9Ci0rCi0rCQlmcmVlYSAoc3lzZGVwX3NlZ21lbnRfdmFsdWVzKTsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlkb21haW4tPm5fc3lzZGVwX3N0cmluZ3MgPSAwOwotKwkJZG9tYWluLT5vcmlnX3N5c2RlcF90YWIgPSBOVUxMOwotKwkJZG9tYWluLT50cmFuc19zeXNkZXBfdGFiID0gTlVMTDsKLSsJICAgICAgfQotKwkgIH0KLSsJICBicmVhazsKLSsJfQotICAgICAgIGJyZWFrOwotICAgICBkZWZhdWx0OgotLSAgICAgIC8qIFRoaXMgaXMgYW4gaWxsZWdhbCByZXZpc2lvbi4gICovCi0tI2lmIChkZWZpbmVkIEhBVkVfTU1BUCAmJiBkZWZpbmVkIEhBVkVfTVVOTUFQICYmICFkZWZpbmVkIERJU0FMTE9XX01NQVApIFwKLS0gICAgfHwgZGVmaW5lZCBfTElCQwotKyAgICAgIC8qIFRoaXMgaXMgYW4gaW52YWxpZCByZXZpc2lvbi4gICovCi0rICAgIGludmFsaWQ6Ci0rICAgICAgLyogVGhpcyBpcyBhbiBpbnZhbGlkIC5tbyBmaWxlLiAgKi8KLSsgICAgICBpZiAoZG9tYWluLT5tYWxsb2NlZCkKLSsJZnJlZSAoZG9tYWluLT5tYWxsb2NlZCk7Ci0rI2lmZGVmIEhBVkVfTU1BUAotICAgICAgIGlmICh1c2VfbW1hcCkKLS0JbXVubWFwICgoY2FkZHJfdCkgZGF0YSwgc3Quc3Rfc2l6ZSk7Ci0rCW11bm1hcCAoKGNhZGRyX3QpIGRhdGEsIHNpemUpOwotICAgICAgIGVsc2UKLSAjZW5kaWYKLSAJZnJlZSAoZGF0YSk7Ci1AQCAtMTkzLDcgKzEzODUsMzYgQEAKLSAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLS0gIC8qIFNob3cgdGhhdCBvbmUgZG9tYWluIGlzIGNoYW5nZWQuICBUaGlzIG1pZ2h0IG1ha2Ugc29tZSBjYWNoZWQKLS0gICAgIHRyYW5zbGF0aW9ucyBpbnZhbGlkLiAgKi8KLS0gICsrX25sX21zZ19jYXRfY250cjsKLSsgIC8qIE5vdyBpbml0aWFsaXplIHRoZSBjaGFyYWN0ZXIgc2V0IGNvbnZlcnRlciBmcm9tIHRoZSBjaGFyYWN0ZXIgc2V0Ci0rICAgICB0aGUgZmlsZSBpcyBlbmNvZGVkIHdpdGggKGZvdW5kIGluIHRoZSBoZWFkZXIgZW50cnkpIHRvIHRoZSBkb21haW4ncwotKyAgICAgc3BlY2lmaWVkIGNoYXJhY3RlciBzZXQgb3IgdGhlIGxvY2FsZSdzIGNoYXJhY3RlciBzZXQuICAqLwotKyAgbnVsbGVudHJ5ID0gX25sX2luaXRfZG9tYWluX2NvbnYgKGRvbWFpbl9maWxlLCBkb21haW4sIGRvbWFpbmJpbmRpbmcpOwotKwotKyAgLyogQWxzbyBsb29rIGZvciBhIHBsdXJhbCBzcGVjaWZpY2F0aW9uLiAgKi8KLSsgIEVYVFJBQ1RfUExVUkFMX0VYUFJFU1NJT04gKG51bGxlbnRyeSwgJmRvbWFpbi0+cGx1cmFsLCAmZG9tYWluLT5ucGx1cmFscyk7Ci0gfQotKwotKwotKyNpZmRlZiBfTElCQwotK3ZvaWQKLStpbnRlcm5hbF9mdW5jdGlvbgotK19ubF91bmxvYWRfZG9tYWluIChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqZG9tYWluKQotK3sKLSsgIGlmIChkb21haW4tPnBsdXJhbCAhPSAmX19nZXR0ZXh0X2dlcm1hbmljX3BsdXJhbCkKLSsgICAgX19nZXR0ZXh0X2ZyZWVfZXhwIChkb21haW4tPnBsdXJhbCk7Ci0rCi0rICBfbmxfZnJlZV9kb21haW5fY29udiAoZG9tYWluKTsKLSsKLSsgIGlmIChkb21haW4tPm1hbGxvY2VkKQotKyAgICBmcmVlIChkb21haW4tPm1hbGxvY2VkKTsKLSsKLSsjIGlmZGVmIF9QT1NJWF9NQVBQRURfRklMRVMKLSsgIGlmIChkb21haW4tPnVzZV9tbWFwKQotKyAgICBtdW5tYXAgKChjYWRkcl90KSBkb21haW4tPmRhdGEsIGRvbWFpbi0+bW1hcF9zaXplKTsKLSsgIGVsc2UKLSsjIGVuZGlmCS8qIF9QT1NJWF9NQVBQRURfRklMRVMgKi8KLSsgICAgZnJlZSAoKHZvaWQgKikgZG9tYWluLT5kYXRhKTsKLSsKLSsgIGZyZWUgKGRvbWFpbik7Ci0rfQotKyNlbmRpZgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2xvY2FsY2hhcnNldC5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xvY2FsY2hhcnNldC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNDc4NzI5MzkyIC0wNDAwCi1AQCAtMCwwICsxLDM5OCBAQAotKy8qIERldGVybWluZSBhIGNhbm9uaWNhbCBuYW1lIGZvciB0aGUgY3VycmVudCBsb2NhbGUncyBjaGFyYWN0ZXIgZW5jb2RpbmcuCi0rCi0rICAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKy8qIFdyaXR0ZW4gYnkgQnJ1bm8gSGFpYmxlIDxicnVub0BjbGlzcC5vcmc+LiAgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rLyogU3BlY2lmaWNhdGlvbi4gICovCi0rI2luY2x1ZGUgImxvY2FsY2hhcnNldC5oIgotKwotKyNpZiBIQVZFX1NURERFRl9ICi0rIyBpbmNsdWRlIDxzdGRkZWYuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaWYgSEFWRV9TVFJJTkdfSAotKyMgaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2Vsc2UKLSsjIGluY2x1ZGUgPHN0cmluZ3MuaD4KLSsjZW5kaWYKLSsjaWYgSEFWRV9TVERMSUJfSAotKyMgaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2VuZGlmCi0rCi0rI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fCi0rIyB1bmRlZiBXSU4zMiAgIC8qIGF2b2lkIHdhcm5pbmcgb24gbWluZ3czMiAqLwotKyMgZGVmaW5lIFdJTjMyCi0rI2VuZGlmCi0rCi0rI2lmIGRlZmluZWQgX19FTVhfXwotKy8qIEFzc3VtZSBFTVggcHJvZ3JhbSBydW5zIG9uIE9TLzIsIGV2ZW4gaWYgY29tcGlsZWQgdW5kZXIgRE9TLiAgKi8KLSsjIGRlZmluZSBPUzIKLSsjZW5kaWYKLSsKLSsjaWYgIWRlZmluZWQgV0lOMzIKLSsjIGlmIEhBVkVfTEFOR0lORk9fQ09ERVNFVAotKyMgIGluY2x1ZGUgPGxhbmdpbmZvLmg+Ci0rIyBlbHNlCi0rIyAgaWYgSEFWRV9TRVRMT0NBTEUKLSsjICAgaW5jbHVkZSA8bG9jYWxlLmg+Ci0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rI2VsaWYgZGVmaW5lZCBXSU4zMgotKyMgZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KLSsjIGluY2x1ZGUgPHdpbmRvd3MuaD4KLSsjZW5kaWYKLSsjaWYgZGVmaW5lZCBPUzIKLSsjIGRlZmluZSBJTkNMX0RPUwotKyMgaW5jbHVkZSA8b3MyLmg+Ci0rI2VuZGlmCi0rCi0rI2lmIEVOQUJMRV9SRUxPQ0FUQUJMRQotKyMgaW5jbHVkZSAicmVsb2NhdGFibGUuaCIKLSsjZWxzZQotKyMgZGVmaW5lIHJlbG9jYXRlKHBhdGhuYW1lKSAocGF0aG5hbWUpCi0rI2VuZGlmCi0rCi0rI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fIHx8IGRlZmluZWQgX19FTVhfXyB8fCBkZWZpbmVkIF9fREpHUFBfXwotKyAgLyogV2luMzIsIE9TLzIsIERPUyAqLwotKyMgZGVmaW5lIElTU0xBU0goQykgKChDKSA9PSAnLycgfHwgKEMpID09ICdcXCcpCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBESVJFQ1RPUllfU0VQQVJBVE9SCi0rIyBkZWZpbmUgRElSRUNUT1JZX1NFUEFSQVRPUiAnLycKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIElTU0xBU0gKLSsjIGRlZmluZSBJU1NMQVNIKEMpICgoQykgPT0gRElSRUNUT1JZX1NFUEFSQVRPUikKLSsjZW5kaWYKLSsKLSsjaWYgSEFWRV9ERUNMX0dFVENfVU5MT0NLRUQKLSsjIHVuZGVmIGdldGMKLSsjIGRlZmluZSBnZXRjIGdldGNfdW5sb2NrZWQKLSsjZW5kaWYKLSsKLSsvKiBUaGUgZm9sbG93aW5nIHN0YXRpYyB2YXJpYWJsZSBpcyBkZWNsYXJlZCAndm9sYXRpbGUnIHRvIGF2b2lkIGEKLSsgICBwb3NzaWJsZSBtdWx0aXRocmVhZCBwcm9ibGVtIGluIHRoZSBmdW5jdGlvbiBnZXRfY2hhcnNldF9hbGlhc2VzLiBJZiB3ZQotKyAgIGFyZSBydW5uaW5nIGluIGEgdGhyZWFkZWQgZW52aXJvbm1lbnQsIGFuZCBpZiB0d28gdGhyZWFkcyBpbml0aWFsaXplCi0rICAgJ2NoYXJzZXRfYWxpYXNlcycgc2ltdWx0YW5lb3VzbHksIGJvdGggd2lsbCBwcm9kdWNlIHRoZSBzYW1lIHZhbHVlLAotKyAgIGFuZCBldmVyeXRoaW5nIHdpbGwgYmUgb2sgaWYgdGhlIHR3byBhc3NpZ25tZW50cyB0byAnY2hhcnNldF9hbGlhc2VzJwotKyAgIGFyZSBhdG9taWMuIEJ1dCBJIGRvbid0IGtub3cgd2hhdCB3aWxsIGhhcHBlbiBpZiB0aGUgdHdvIGFzc2lnbm1lbnRzIG1peC4gICovCi0rI2lmIF9fU1REQ19fICE9IDEKLSsjIGRlZmluZSB2b2xhdGlsZSAvKiBlbXB0eSAqLwotKyNlbmRpZgotKy8qIFBvaW50ZXIgdG8gdGhlIGNvbnRlbnRzIG9mIHRoZSBjaGFyc2V0LmFsaWFzIGZpbGUsIGlmIGl0IGhhcyBhbHJlYWR5IGJlZW4KLSsgICByZWFkLCBlbHNlIE5VTEwuICBJdHMgZm9ybWF0IGlzOgotKyAgIEFMSUFTXzEgJ1wwJyBDQU5PTklDQUxfMSAnXDAnIC4uLiBBTElBU19uICdcMCcgQ0FOT05JQ0FMX24gJ1wwJyAnXDAnICAqLwotK3N0YXRpYyBjb25zdCBjaGFyICogdm9sYXRpbGUgY2hhcnNldF9hbGlhc2VzOwotKwotKy8qIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGNvbnRlbnRzIG9mIHRoZSBjaGFyc2V0LmFsaWFzIGZpbGUuICAqLwotK3N0YXRpYyBjb25zdCBjaGFyICoKLStnZXRfY2hhcnNldF9hbGlhc2VzICgpCi0rewotKyAgY29uc3QgY2hhciAqY3A7Ci0rCi0rICBjcCA9IGNoYXJzZXRfYWxpYXNlczsKLSsgIGlmIChjcCA9PSBOVUxMKQotKyAgICB7Ci0rI2lmICEoZGVmaW5lZCBWTVMgfHwgZGVmaW5lZCBXSU4zMikKLSsgICAgICBGSUxFICpmcDsKLSsgICAgICBjb25zdCBjaGFyICpkaXIgPSByZWxvY2F0ZSAoTElCRElSKTsKLSsgICAgICBjb25zdCBjaGFyICpiYXNlID0gImNoYXJzZXQuYWxpYXMiOwotKyAgICAgIGNoYXIgKmZpbGVfbmFtZTsKLSsKLSsgICAgICAvKiBDb25jYXRlbmF0ZSBkaXIgYW5kIGJhc2UgaW50byBmcmVzaGx5IGFsbG9jYXRlZCBmaWxlX25hbWUuICAqLwotKyAgICAgIHsKLSsJc2l6ZV90IGRpcl9sZW4gPSBzdHJsZW4gKGRpcik7Ci0rCXNpemVfdCBiYXNlX2xlbiA9IHN0cmxlbiAoYmFzZSk7Ci0rCWludCBhZGRfc2xhc2ggPSAoZGlyX2xlbiA+IDAgJiYgIUlTU0xBU0ggKGRpcltkaXJfbGVuIC0gMV0pKTsKLSsJZmlsZV9uYW1lID0gKGNoYXIgKikgbWFsbG9jIChkaXJfbGVuICsgYWRkX3NsYXNoICsgYmFzZV9sZW4gKyAxKTsKLSsJaWYgKGZpbGVfbmFtZSAhPSBOVUxMKQotKwkgIHsKLSsJICAgIG1lbWNweSAoZmlsZV9uYW1lLCBkaXIsIGRpcl9sZW4pOwotKwkgICAgaWYgKGFkZF9zbGFzaCkKLSsJICAgICAgZmlsZV9uYW1lW2Rpcl9sZW5dID0gRElSRUNUT1JZX1NFUEFSQVRPUjsKLSsJICAgIG1lbWNweSAoZmlsZV9uYW1lICsgZGlyX2xlbiArIGFkZF9zbGFzaCwgYmFzZSwgYmFzZV9sZW4gKyAxKTsKLSsJICB9Ci0rICAgICAgfQotKwotKyAgICAgIGlmIChmaWxlX25hbWUgPT0gTlVMTCB8fCAoZnAgPSBmb3BlbiAoZmlsZV9uYW1lLCAiciIpKSA9PSBOVUxMKQotKwkvKiBPdXQgb2YgbWVtb3J5IG9yIGZpbGUgbm90IGZvdW5kLCB0cmVhdCBpdCBhcyBlbXB0eS4gICovCi0rCWNwID0gIiI7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgLyogUGFyc2UgdGhlIGZpbGUncyBjb250ZW50cy4gICovCi0rCSAgaW50IGM7Ci0rCSAgY2hhciBidWYxWzUwKzFdOwotKwkgIGNoYXIgYnVmMls1MCsxXTsKLSsJICBjaGFyICpyZXNfcHRyID0gTlVMTDsKLSsJICBzaXplX3QgcmVzX3NpemUgPSAwOwotKwkgIHNpemVfdCBsMSwgbDI7Ci0rCi0rCSAgZm9yICg7OykKLSsJICAgIHsKLSsJICAgICAgYyA9IGdldGMgKGZwKTsKLSsJICAgICAgaWYgKGMgPT0gRU9GKQotKwkJYnJlYWs7Ci0rCSAgICAgIGlmIChjID09ICdcbicgfHwgYyA9PSAnICcgfHwgYyA9PSAnXHQnKQotKwkJY29udGludWU7Ci0rCSAgICAgIGlmIChjID09ICcjJykKLSsJCXsKLSsJCSAgLyogU2tpcCBjb21tZW50LCB0byBlbmQgb2YgbGluZS4gICovCi0rCQkgIGRvCi0rCQkgICAgYyA9IGdldGMgKGZwKTsKLSsJCSAgd2hpbGUgKCEoYyA9PSBFT0YgfHwgYyA9PSAnXG4nKSk7Ci0rCQkgIGlmIChjID09IEVPRikKLSsJCSAgICBicmVhazsKLSsJCSAgY29udGludWU7Ci0rCQl9Ci0rCSAgICAgIHVuZ2V0YyAoYywgZnApOwotKwkgICAgICBpZiAoZnNjYW5mIChmcCwgIiU1MHMgJTUwcyIsIGJ1ZjEsIGJ1ZjIpIDwgMikKLSsJCWJyZWFrOwotKwkgICAgICBsMSA9IHN0cmxlbiAoYnVmMSk7Ci0rCSAgICAgIGwyID0gc3RybGVuIChidWYyKTsKLSsJICAgICAgaWYgKHJlc19zaXplID09IDApCi0rCQl7Ci0rCQkgIHJlc19zaXplID0gbDEgKyAxICsgbDIgKyAxOwotKwkJICByZXNfcHRyID0gKGNoYXIgKikgbWFsbG9jIChyZXNfc2l6ZSArIDEpOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQl7Ci0rCQkgIHJlc19zaXplICs9IGwxICsgMSArIGwyICsgMTsKLSsJCSAgcmVzX3B0ciA9IChjaGFyICopIHJlYWxsb2MgKHJlc19wdHIsIHJlc19zaXplICsgMSk7Ci0rCQl9Ci0rCSAgICAgIGlmIChyZXNfcHRyID09IE5VTEwpCi0rCQl7Ci0rCQkgIC8qIE91dCBvZiBtZW1vcnkuICovCi0rCQkgIHJlc19zaXplID0gMDsKLSsJCSAgYnJlYWs7Ci0rCQl9Ci0rCSAgICAgIHN0cmNweSAocmVzX3B0ciArIHJlc19zaXplIC0gKGwyICsgMSkgLSAobDEgKyAxKSwgYnVmMSk7Ci0rCSAgICAgIHN0cmNweSAocmVzX3B0ciArIHJlc19zaXplIC0gKGwyICsgMSksIGJ1ZjIpOwotKwkgICAgfQotKwkgIGZjbG9zZSAoZnApOwotKwkgIGlmIChyZXNfc2l6ZSA9PSAwKQotKwkgICAgY3AgPSAiIjsKLSsJICBlbHNlCi0rCSAgICB7Ci0rCSAgICAgICoocmVzX3B0ciArIHJlc19zaXplKSA9ICdcMCc7Ci0rCSAgICAgIGNwID0gcmVzX3B0cjsKLSsJICAgIH0KLSsJfQotKwotKyAgICAgIGlmIChmaWxlX25hbWUgIT0gTlVMTCkKLSsJZnJlZSAoZmlsZV9uYW1lKTsKLSsKLSsjZWxzZQotKwotKyMgaWYgZGVmaW5lZCBWTVMKLSsgICAgICAvKiBUbyBhdm9pZCB0aGUgdHJvdWJsZXMgb2YgYW4gZXh0cmEgZmlsZSBjaGFyc2V0LmFsaWFzX3ZtcyBpbiB0aGUKLSsJIHNvdXJjZXMgb2YgbWFueSBHTlUgcGFja2FnZXMsIHNpbXBseSBpbmxpbmUgdGhlIGFsaWFzZXMgaGVyZS4gICovCi0rICAgICAgLyogVGhlIGxpc3Qgb2YgZW5jb2RpbmdzIGlzIHRha2VuIGZyb20gdGhlIE9wZW5WTVMgNy4zLTEgZG9jdW1lbnRhdGlvbgotKwkgIkNvbXBhcSBDIFJ1bi1UaW1lIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCBmb3IgT3BlblZNUyBzeXN0ZW1zIgotKwkgc2VjdGlvbiAxMC43ICJIYW5kbGluZyBEaWZmZXJlbnQgQ2hhcmFjdGVyIFNldHMiLiAgKi8KLSsgICAgICBjcCA9ICJJU084ODU5LTEiICJcMCIgIklTTy04ODU5LTEiICJcMCIKLSsJICAgIklTTzg4NTktMiIgIlwwIiAiSVNPLTg4NTktMiIgIlwwIgotKwkgICAiSVNPODg1OS01IiAiXDAiICJJU08tODg1OS01IiAiXDAiCi0rCSAgICJJU084ODU5LTciICJcMCIgIklTTy04ODU5LTciICJcMCIKLSsJICAgIklTTzg4NTktOCIgIlwwIiAiSVNPLTg4NTktOCIgIlwwIgotKwkgICAiSVNPODg1OS05IiAiXDAiICJJU08tODg1OS05IiAiXDAiCi0rCSAgIC8qIEphcGFuZXNlICovCi0rCSAgICJldWNKUCIgIlwwIiAiRVVDLUpQIiAiXDAiCi0rCSAgICJTSklTIiAiXDAiICJTSElGVF9KSVMiICJcMCIKLSsJICAgIkRFQ0tBTkpJIiAiXDAiICJERUMtS0FOSkkiICJcMCIKLSsJICAgIlNERUNLQU5KSSIgIlwwIiAiRVVDLUpQIiAiXDAiCi0rCSAgIC8qIENoaW5lc2UgKi8KLSsJICAgImV1Y1RXIiAiXDAiICJFVUMtVFciICJcMCIKLSsJICAgIkRFQ0hBTllVIiAiXDAiICJERUMtSEFOWVUiICJcMCIKLSsJICAgIkRFQ0hBTlpJIiAiXDAiICJHQjIzMTIiICJcMCIKLSsJICAgLyogS29yZWFuICovCi0rCSAgICJERUNLT1JFQU4iICJcMCIgIkVVQy1LUiIgIlwwIjsKLSsjIGVuZGlmCi0rCi0rIyBpZiBkZWZpbmVkIFdJTjMyCi0rICAgICAgLyogVG8gYXZvaWQgdGhlIHRyb3VibGVzIG9mIGluc3RhbGxpbmcgYSBzZXBhcmF0ZSBmaWxlIGluIHRoZSBzYW1lCi0rCSBkaXJlY3RvcnkgYXMgdGhlIERMTCBhbmQgb2YgcmV0cmlldmluZyB0aGUgRExMJ3MgZGlyZWN0b3J5IGF0Ci0rCSBydW50aW1lLCBzaW1wbHkgaW5saW5lIHRoZSBhbGlhc2VzIGhlcmUuICAqLwotKwotKyAgICAgIGNwID0gIkNQOTM2IiAiXDAiICJHQksiICJcMCIKLSsJICAgIkNQMTM2MSIgIlwwIiAiSk9IQUIiICJcMCIKLSsJICAgIkNQMjAxMjciICJcMCIgIkFTQ0lJIiAiXDAiCi0rCSAgICJDUDIwODY2IiAiXDAiICJLT0k4LVIiICJcMCIKLSsJICAgIkNQMjE4NjYiICJcMCIgIktPSTgtUlUiICJcMCIKLSsJICAgIkNQMjg1OTEiICJcMCIgIklTTy04ODU5LTEiICJcMCIKLSsJICAgIkNQMjg1OTIiICJcMCIgIklTTy04ODU5LTIiICJcMCIKLSsJICAgIkNQMjg1OTMiICJcMCIgIklTTy04ODU5LTMiICJcMCIKLSsJICAgIkNQMjg1OTQiICJcMCIgIklTTy04ODU5LTQiICJcMCIKLSsJICAgIkNQMjg1OTUiICJcMCIgIklTTy04ODU5LTUiICJcMCIKLSsJICAgIkNQMjg1OTYiICJcMCIgIklTTy04ODU5LTYiICJcMCIKLSsJICAgIkNQMjg1OTciICJcMCIgIklTTy04ODU5LTciICJcMCIKLSsJICAgIkNQMjg1OTgiICJcMCIgIklTTy04ODU5LTgiICJcMCIKLSsJICAgIkNQMjg1OTkiICJcMCIgIklTTy04ODU5LTkiICJcMCIKLSsJICAgIkNQMjg2MDUiICJcMCIgIklTTy04ODU5LTE1IiAiXDAiOwotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsgICAgICBjaGFyc2V0X2FsaWFzZXMgPSBjcDsKLSsgICAgfQotKwotKyAgcmV0dXJuIGNwOwotK30KLSsKLSsvKiBEZXRlcm1pbmUgdGhlIGN1cnJlbnQgbG9jYWxlJ3MgY2hhcmFjdGVyIGVuY29kaW5nLCBhbmQgY2Fub25pY2FsaXplIGl0Ci0rICAgaW50byBvbmUgb2YgdGhlIGNhbm9uaWNhbCBuYW1lcyBsaXN0ZWQgaW4gY29uZmlnLmNoYXJzZXQuCi0rICAgVGhlIHJlc3VsdCBtdXN0IG5vdCBiZSBmcmVlZDsgaXQgaXMgc3RhdGljYWxseSBhbGxvY2F0ZWQuCi0rICAgSWYgdGhlIGNhbm9uaWNhbCBuYW1lIGNhbm5vdCBiZSBkZXRlcm1pbmVkLCB0aGUgcmVzdWx0IGlzIGEgbm9uLWNhbm9uaWNhbAotKyAgIG5hbWUuICAqLwotKwotKyNpZmRlZiBTVEFUSUMKLStTVEFUSUMKLSsjZW5kaWYKLStjb25zdCBjaGFyICoKLStsb2NhbGVfY2hhcnNldCAoKQotK3sKLSsgIGNvbnN0IGNoYXIgKmNvZGVzZXQ7Ci0rICBjb25zdCBjaGFyICphbGlhc2VzOwotKwotKyNpZiAhKGRlZmluZWQgV0lOMzIgfHwgZGVmaW5lZCBPUzIpCi0rCi0rIyBpZiBIQVZFX0xBTkdJTkZPX0NPREVTRVQKLSsKLSsgIC8qIE1vc3Qgc3lzdGVtcyBzdXBwb3J0IG5sX2xhbmdpbmZvIChDT0RFU0VUKSBub3dhZGF5cy4gICovCi0rICBjb2Rlc2V0ID0gbmxfbGFuZ2luZm8gKENPREVTRVQpOwotKwotKyMgZWxzZQotKwotKyAgLyogT24gb2xkIHN5c3RlbXMgd2hpY2ggbGFjayBpdCwgdXNlIHNldGxvY2FsZSBvciBnZXRlbnYuICAqLwotKyAgY29uc3QgY2hhciAqbG9jYWxlID0gTlVMTDsKLSsKLSsgIC8qIEJ1dCBtb3N0IG9sZCBzeXN0ZW1zIGRvbid0IGhhdmUgYSBjb21wbGV0ZSBzZXQgb2YgbG9jYWxlcy4gIFNvbWUKLSsgICAgIChsaWtlIFN1bk9TIDQgb3IgREpHUFApIGhhdmUgb25seSB0aGUgQyBsb2NhbGUuICBUaGVyZWZvcmUgd2UgZG9uJ3QKLSsgICAgIHVzZSBzZXRsb2NhbGUgaGVyZTsgaXQgd291bGQgcmV0dXJuICJDIiB3aGVuIGl0IGRvZXNuJ3Qgc3VwcG9ydCB0aGUKLSsgICAgIGxvY2FsZSBuYW1lIHRoZSB1c2VyIGhhcyBzZXQuICAqLwotKyMgIGlmIEhBVkVfU0VUTE9DQUxFICYmIDAKLSsgIGxvY2FsZSA9IHNldGxvY2FsZSAoTENfQ1RZUEUsIE5VTEwpOwotKyMgIGVuZGlmCi0rICBpZiAobG9jYWxlID09IE5VTEwgfHwgbG9jYWxlWzBdID09ICdcMCcpCi0rICAgIHsKLSsgICAgICBsb2NhbGUgPSBnZXRlbnYgKCJMQ19BTEwiKTsKLSsgICAgICBpZiAobG9jYWxlID09IE5VTEwgfHwgbG9jYWxlWzBdID09ICdcMCcpCi0rCXsKLSsJICBsb2NhbGUgPSBnZXRlbnYgKCJMQ19DVFlQRSIpOwotKwkgIGlmIChsb2NhbGUgPT0gTlVMTCB8fCBsb2NhbGVbMF0gPT0gJ1wwJykKLSsJICAgIGxvY2FsZSA9IGdldGVudiAoIkxBTkciKTsKLSsJfQotKyAgICB9Ci0rCi0rICAvKiBPbiBzb21lIG9sZCBzeXN0ZW1zLCBvbmUgdXNlZCB0byBzZXQgbG9jYWxlID0gImlzbzg4NTlfMSIuIE9uIG90aGVycywKLSsgICAgIHlvdSBzZXQgaXQgdG8gImxhbmd1YWdlX0NPVU5UUlkuY2hhcnNldCIuIEluIGFueSBjYXNlLCB3ZSByZXNvbHZlIGl0Ci0rICAgICB0aHJvdWdoIHRoZSBjaGFyc2V0LmFsaWFzIGZpbGUuICAqLwotKyAgY29kZXNldCA9IGxvY2FsZTsKLSsKLSsjIGVuZGlmCi0rCi0rI2VsaWYgZGVmaW5lZCBXSU4zMgotKwotKyAgc3RhdGljIGNoYXIgYnVmWzIgKyAxMCArIDFdOwotKwotKyAgLyogV29lMzIgaGFzIGEgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBsb2NhbGUncyBjb2RlcGFnZSBhcyBhIG51bWJlci4gICovCi0rICBzcHJpbnRmIChidWYsICJDUCV1IiwgR2V0QUNQICgpKTsKLSsgIGNvZGVzZXQgPSBidWY7Ci0rCi0rI2VsaWYgZGVmaW5lZCBPUzIKLSsKLSsgIGNvbnN0IGNoYXIgKmxvY2FsZTsKLSsgIHN0YXRpYyBjaGFyIGJ1ZlsyICsgMTAgKyAxXTsKLSsgIFVMT05HIGNwWzNdOwotKyAgVUxPTkcgY3BsZW47Ci0rCi0rICAvKiBBbGxvdyB1c2VyIHRvIG92ZXJyaWRlIHRoZSBjb2Rlc2V0LCBhcyBzZXQgaW4gdGhlIG9wZXJhdGluZyBzeXN0ZW0sCi0rICAgICB3aXRoIHN0YW5kYXJkIGxhbmd1YWdlIGVudmlyb25tZW50IHZhcmlhYmxlcy4gICovCi0rICBsb2NhbGUgPSBnZXRlbnYgKCJMQ19BTEwiKTsKLSsgIGlmIChsb2NhbGUgPT0gTlVMTCB8fCBsb2NhbGVbMF0gPT0gJ1wwJykKLSsgICAgewotKyAgICAgIGxvY2FsZSA9IGdldGVudiAoIkxDX0NUWVBFIik7Ci0rICAgICAgaWYgKGxvY2FsZSA9PSBOVUxMIHx8IGxvY2FsZVswXSA9PSAnXDAnKQotKwlsb2NhbGUgPSBnZXRlbnYgKCJMQU5HIik7Ci0rICAgIH0KLSsgIGlmIChsb2NhbGUgIT0gTlVMTCAmJiBsb2NhbGVbMF0gIT0gJ1wwJykKLSsgICAgewotKyAgICAgIC8qIElmIHRoZSBsb2NhbGUgbmFtZSBjb250YWlucyBhbiBlbmNvZGluZyBhZnRlciB0aGUgZG90LCByZXR1cm4gaXQuICAqLwotKyAgICAgIGNvbnN0IGNoYXIgKmRvdCA9IHN0cmNociAobG9jYWxlLCAnLicpOwotKwotKyAgICAgIGlmIChkb3QgIT0gTlVMTCkKLSsJewotKwkgIGNvbnN0IGNoYXIgKm1vZGlmaWVyOwotKwotKwkgIGRvdCsrOwotKwkgIC8qIExvb2sgZm9yIHRoZSBwb3NzaWJsZSBALi4uIHRyYWlsZXIgYW5kIHJlbW92ZSBpdCwgaWYgYW55LiAgKi8KLSsJICBtb2RpZmllciA9IHN0cmNociAoZG90LCAnQCcpOwotKwkgIGlmIChtb2RpZmllciA9PSBOVUxMKQotKwkgICAgcmV0dXJuIGRvdDsKLSsJICBpZiAobW9kaWZpZXIgLSBkb3QgPCBzaXplb2YgKGJ1ZikpCi0rCSAgICB7Ci0rCSAgICAgIG1lbWNweSAoYnVmLCBkb3QsIG1vZGlmaWVyIC0gZG90KTsKLSsJICAgICAgYnVmIFttb2RpZmllciAtIGRvdF0gPSAnXDAnOwotKwkgICAgICByZXR1cm4gYnVmOwotKwkgICAgfQotKwl9Ci0rCi0rICAgICAgLyogUmVzb2x2ZSB0aHJvdWdoIHRoZSBjaGFyc2V0LmFsaWFzIGZpbGUuICAqLwotKyAgICAgIGNvZGVzZXQgPSBsb2NhbGU7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIC8qIE9TLzIgaGFzIGEgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBsb2NhbGUncyBjb2RlcGFnZSBhcyBhIG51bWJlci4gICovCi0rICAgICAgaWYgKERvc1F1ZXJ5Q3AgKHNpemVvZiAoY3ApLCBjcCwgJmNwbGVuKSkKLSsJY29kZXNldCA9ICIiOwotKyAgICAgIGVsc2UKLSsJewotKwkgIHNwcmludGYgKGJ1ZiwgIkNQJXUiLCBjcFswXSk7Ci0rCSAgY29kZXNldCA9IGJ1ZjsKLSsJfQotKyAgICB9Ci0rCi0rI2VuZGlmCi0rCi0rICBpZiAoY29kZXNldCA9PSBOVUxMKQotKyAgICAvKiBUaGUgY2Fub25pY2FsIG5hbWUgY2Fubm90IGJlIGRldGVybWluZWQuICAqLwotKyAgICBjb2Rlc2V0ID0gIiI7Ci0rCi0rICAvKiBSZXNvbHZlIGFsaWFzLiAqLwotKyAgZm9yIChhbGlhc2VzID0gZ2V0X2NoYXJzZXRfYWxpYXNlcyAoKTsKLSsgICAgICAgKmFsaWFzZXMgIT0gJ1wwJzsKLSsgICAgICAgYWxpYXNlcyArPSBzdHJsZW4gKGFsaWFzZXMpICsgMSwgYWxpYXNlcyArPSBzdHJsZW4gKGFsaWFzZXMpICsgMSkKLSsgICAgaWYgKHN0cmNtcCAoY29kZXNldCwgYWxpYXNlcykgPT0gMAotKwl8fCAoYWxpYXNlc1swXSA9PSAnKicgJiYgYWxpYXNlc1sxXSA9PSAnXDAnKSkKLSsgICAgICB7Ci0rCWNvZGVzZXQgPSBhbGlhc2VzICsgc3RybGVuIChhbGlhc2VzKSArIDE7Ci0rCWJyZWFrOwotKyAgICAgIH0KLSsKLSsgIC8qIERvbid0IHJldHVybiBhbiBlbXB0eSBzdHJpbmcuICBHTlUgbGliYyBhbmQgR05VIGxpYmljb252IGludGVycHJldAotKyAgICAgdGhlIGVtcHR5IHN0cmluZyBhcyBkZW5vdGluZyAidGhlIGxvY2FsZSdzIGNoYXJhY3RlciBlbmNvZGluZyIsCi0rICAgICB0aHVzIEdOVSBsaWJpY29udiB3b3VsZCBjYWxsIHRoaXMgZnVuY3Rpb24gYSBzZWNvbmQgdGltZS4gICovCi0rICBpZiAoY29kZXNldFswXSA9PSAnXDAnKQotKyAgICBjb2Rlc2V0ID0gIkFTQ0lJIjsKLSsKLSsgIHJldHVybiBjb2Rlc2V0OwotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9sb2NhbGNoYXJzZXQuaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9sb2NhbGNoYXJzZXQuaAkyMDA0LTA5LTEyIDE0OjQwOjM0LjQ4MzcyODYzMiAtMDQwMAotQEAgLTAsMCArMSw0MiBAQAotKy8qIERldGVybWluZSBhIGNhbm9uaWNhbCBuYW1lIGZvciB0aGUgY3VycmVudCBsb2NhbGUncyBjaGFyYWN0ZXIgZW5jb2RpbmcuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDSEFSU0VUIExpYnJhcnkuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZm5kZWYgX0xPQ0FMQ0hBUlNFVF9ICi0rI2RlZmluZSBfTE9DQUxDSEFSU0VUX0gKLSsKLSsKLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSsKLSsKLSsvKiBEZXRlcm1pbmUgdGhlIGN1cnJlbnQgbG9jYWxlJ3MgY2hhcmFjdGVyIGVuY29kaW5nLCBhbmQgY2Fub25pY2FsaXplIGl0Ci0rICAgaW50byBvbmUgb2YgdGhlIGNhbm9uaWNhbCBuYW1lcyBsaXN0ZWQgaW4gY29uZmlnLmNoYXJzZXQuCi0rICAgVGhlIHJlc3VsdCBtdXN0IG5vdCBiZSBmcmVlZDsgaXQgaXMgc3RhdGljYWxseSBhbGxvY2F0ZWQuCi0rICAgSWYgdGhlIGNhbm9uaWNhbCBuYW1lIGNhbm5vdCBiZSBkZXRlcm1pbmVkLCB0aGUgcmVzdWx0IGlzIGEgbm9uLWNhbm9uaWNhbAotKyAgIG5hbWUuICAqLwotK2V4dGVybiBjb25zdCBjaGFyICogbG9jYWxlX2NoYXJzZXQgKHZvaWQpOwotKwotKwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSsKLSsKLSsjZW5kaWYgLyogX0xPQ0FMQ0hBUlNFVF9IICovCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvbG9jYWxlLmFsaWFzCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xvY2FsZS5hbGlhcwkyMDA0LTA5LTEyIDE0OjQwOjM0LjQ5OTcyNjIwMCAtMDQwMAotQEAgLTAsMCArMSw3OCBAQAotKyMgTG9jYWxlIG5hbWUgYWxpYXMgZGF0YSBiYXNlLgotKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDEsMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyMgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyMgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsjIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsjIFVTQS4KLSsKLSsjIFRoZSBmb3JtYXQgb2YgdGhpcyBmaWxlIGlzIHRoZSBzYW1lIGFzIGZvciB0aGUgY29ycmVzcG9uZGluZyBmaWxlIG9mCi0rIyB0aGUgWCBXaW5kb3cgU3lzdGVtLCB3aGljaCBub3JtYWxseSBjYW4gYmUgZm91bmQgaW4KLSsjCS91c3IvbGliL1gxMS9sb2NhbGUvbG9jYWxlLmFsaWFzCi0rIyBBIHNpbmdsZSBsaW5lIGNvbnRhaW5zIHR3byBmaWVsZHM6IGFuIGFsaWFzIGFuZCBhIHN1YnN0aXR1dGlvbiB2YWx1ZS4KLSsjIEFsbCBlbnRyaWVzIGFyZSBjYXNlIGluZGVwZW5kZW50LgotKwotKyMgTm90ZTogVGhpcyBmaWxlIGlzIGZhciBmcm9tIGJlaW5nIGNvbXBsZXRlLiAgSWYgeW91IGhhdmUgYSB2YWx1ZSBmb3IKLSsjIHlvdXIgb3duIHNpdGUgd2hpY2ggeW91IHRoaW5rIG1pZ2h0IGJlIHVzZWZ1bCBmb3Igb3RoZXJzIHRvbywgc2hhcmUKLSsjIGl0IHdpdGggdGhlIHJlc3Qgb2YgdXMuICBTZW5kIGl0IHVzaW5nIHRoZSBgZ2xpYmNidWcnIHNjcmlwdCB0bwotKyMgYnVnc0BnbnUub3JnLgotKwotKyMgUGFja2FnZXMgdXNpbmcgdGhpcyBmaWxlOiAKLSsKLStib2ttYWwJCW5iX05PLklTTy04ODU5LTEKLStib2tt5WwJCW5iX05PLklTTy04ODU5LTEKLStjYXRhbGFuCQljYV9FUy5JU08tODg1OS0xCi0rY3JvYXRpYW4JaHJfSFIuSVNPLTg4NTktMgotK2N6ZWNoCQljc19DWi5JU08tODg1OS0yCi0rZGFuaXNoICAgICAgICAgIGRhX0RLLklTTy04ODU5LTEKLStkYW5zawkJZGFfREsuSVNPLTg4NTktMQotK2RldXRzY2gJCWRlX0RFLklTTy04ODU5LTEKLStkdXRjaAkJbmxfTkwuSVNPLTg4NTktMQotK2Vlc3RpCQlldF9FRS5JU08tODg1OS0xCi0rZXN0b25pYW4JZXRfRUUuSVNPLTg4NTktMQotK2Zpbm5pc2ggICAgICAgICBmaV9GSS5JU08tODg1OS0xCi0rZnJhbudhaXMJZnJfRlIuSVNPLTg4NTktMQotK2ZyZW5jaAkJZnJfRlIuSVNPLTg4NTktMQotK2dhbGVnbwkJZ2xfRVMuSVNPLTg4NTktMQotK2dhbGljaWFuCWdsX0VTLklTTy04ODU5LTEKLStnZXJtYW4JCWRlX0RFLklTTy04ODU5LTEKLStncmVlayAgICAgICAgICAgZWxfR1IuSVNPLTg4NTktNwotK2hlYnJldyAgICAgICAgICBoZV9JTC5JU08tODg1OS04Ci0raHJ2YXRza2kJaHJfSFIuSVNPLTg4NTktMgotK2h1bmdhcmlhbiAgICAgICBodV9IVS5JU08tODg1OS0yCi0raWNlbGFuZGljICAgICAgIGlzX0lTLklTTy04ODU5LTEKLStpdGFsaWFuICAgICAgICAgaXRfSVQuSVNPLTg4NTktMQotK2phcGFuZXNlCWphX0pQLmV1Y0pQCi0ramFwYW5lc2UuZXVjCWphX0pQLmV1Y0pQCi0ramFfSlAJCWphX0pQLmV1Y0pQCi0ramFfSlAudWppcwlqYV9KUC5ldWNKUAotK2phcGFuZXNlLnNqaXMJamFfSlAuU0pJUwotK2tvcmVhbgkJa29fS1IuZXVjS1IKLStrb3JlYW4uZXVjIAlrb19LUi5ldWNLUgotK2tvX0tSCQlrb19LUi5ldWNLUgotK2xpdGh1YW5pYW4gICAgICBsdF9MVC5JU08tODg1OS0xMwotK25vX05PCQluYl9OTy5JU08tODg1OS0xCi0rbm9fTk8uSVNPLTg4NTktMSBuYl9OTy5JU08tODg1OS0xCi0rbm9yd2VnaWFuICAgICAgIG5iX05PLklTTy04ODU5LTEKLStueW5vcnNrCQlubl9OTy5JU08tODg1OS0xCi0rcG9saXNoICAgICAgICAgIHBsX1BMLklTTy04ODU5LTIKLStwb3J0dWd1ZXNlICAgICAgcHRfUFQuSVNPLTg4NTktMQotK3JvbWFuaWFuICAgICAgICByb19STy5JU08tODg1OS0yCi0rcnVzc2lhbiAgICAgICAgIHJ1X1JVLklTTy04ODU5LTUKLStzbG92YWsgICAgICAgICAgc2tfU0suSVNPLTg4NTktMgotK3Nsb3ZlbmUgICAgICAgICBzbF9TSS5JU08tODg1OS0yCi0rc2xvdmVuaWFuICAgICAgIHNsX1NJLklTTy04ODU5LTIKLStzcGFuaXNoICAgICAgICAgZXNfRVMuSVNPLTg4NTktMQotK3N3ZWRpc2ggICAgICAgICBzdl9TRS5JU08tODg1OS0xCi0rdGhhaQkJdGhfVEguVElTLTYyMAotK3R1cmtpc2ggICAgICAgICB0cl9UUi5JU08tODg1OS05Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvbG9jYWxlYWxpYXMuYwkxOTk4LTA0LTI2IDA5OjIyOjM3LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9sb2NhbGVhbGlhcy5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNTA1NzI1Mjg4IC0wNDAwCi1AQCAtMSwyMCArMSwyNyBAQAotLS8qIEhhbmRsZSBhbGlhc2VzIGZvciBsb2NhbGUgbmFtZXMKLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCi0rLyogSGFuZGxlIGFsaWFzZXMgZm9yIGxvY2FsZSBuYW1lcy4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OSwgMjAwMC0yMDAxLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgIGFueSBsYXRlciB2ZXJzaW9uLgotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsvKiBUZWxsIGdsaWJjJ3MgPHN0cmluZy5oPiB0byBwcm92aWRlIGEgcHJvdG90eXBlIGZvciBtZW1wY3B5KCkuCi0rICAgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIDxjb25maWcuaD4gYmVjYXVzZSA8Y29uZmlnLmg+IG1heSBpbmNsdWRlCi0rICAgPGZlYXR1cmVzLmg+LCBhbmQgb25jZSA8ZmVhdHVyZXMuaD4gaGFzIGJlZW4gaW5jbHVkZWQsIGl0J3MgdG9vIGxhdGUuICAqLwotKyNpZm5kZWYgX0dOVV9TT1VSQ0UKLSsjIGRlZmluZSBfR05VX1NPVVJDRSAgICAxCi0rI2VuZGlmCi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotQEAgLTIyLDU2ICsyOSw0NSBAQAotIAotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotKyNpZiBkZWZpbmVkIF9MSUJDIHx8IGRlZmluZWQgSEFWRV9fX0ZTRVRMT0NLSU5HCi0rIyBpbmNsdWRlIDxzdGRpb19leHQuaD4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gCi0gI2lmZGVmIF9fR05VQ19fCi0rIyB1bmRlZiBhbGxvY2EKLSAjIGRlZmluZSBhbGxvY2EgX19idWlsdGluX2FsbG9jYQotICMgZGVmaW5lIEhBVkVfQUxMT0NBIDEKLSAjZWxzZQotLSMgaWYgZGVmaW5lZCBIQVZFX0FMTE9DQV9IIHx8IGRlZmluZWQgX0xJQkMKLS0jICBpbmNsdWRlIDxhbGxvY2EuaD4KLSsjIGlmZGVmIF9NU0NfVkVSCi0rIyAgaW5jbHVkZSA8bWFsbG9jLmg+Ci0rIyAgZGVmaW5lIGFsbG9jYSBfYWxsb2NhCi0gIyBlbHNlCi0tIyAgaWZkZWYgX0FJWAotLSAjcHJhZ21hIGFsbG9jYQotKyMgIGlmIGRlZmluZWQgSEFWRV9BTExPQ0FfSCB8fCBkZWZpbmVkIF9MSUJDCi0rIyAgIGluY2x1ZGUgPGFsbG9jYS5oPgotICMgIGVsc2UKLS0jICAgaWZuZGVmIGFsbG9jYQotKyMgICBpZmRlZiBfQUlYCi0rICNwcmFnbWEgYWxsb2NhCi0rIyAgIGVsc2UKLSsjICAgIGlmbmRlZiBhbGxvY2EKLSBjaGFyICphbGxvY2EgKCk7Ci0rIyAgICBlbmRpZgotICMgICBlbmRpZgotICMgIGVuZGlmCi0gIyBlbmRpZgotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpbmNsdWRlIDxzdGRsaWIuaD4KLS0jZWxzZQotLWNoYXIgKmdldGVudiAoKTsKLS0jIGlmZGVmIEhBVkVfTUFMTE9DX0gKLS0jICBpbmNsdWRlIDxtYWxsb2MuaD4KLS0jIGVsc2UKLS12b2lkIGZyZWUgKCk7Ci0tIyBlbmRpZgotLSNlbmRpZgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0tI2lmIGRlZmluZWQgSEFWRV9TVFJJTkdfSCB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpZm5kZWYgX0dOVV9TT1VSQ0UKLS0jICBkZWZpbmUgX0dOVV9TT1VSQ0UJMQotLSMgZW5kaWYKLS0jIGluY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlICJnZXR0ZXh0UC5oIgotKwotKyNpZiBFTkFCTEVfUkVMT0NBVEFCTEUKLSsjIGluY2x1ZGUgInJlbG9jYXRhYmxlLmgiCi0gI2Vsc2UKLS0jIGluY2x1ZGUgPHN0cmluZ3MuaD4KLS0jIGlmbmRlZiBtZW1jcHkKLS0jICBkZWZpbmUgbWVtY3B5KERzdCwgU3JjLCBOdW0pIGJjb3B5IChTcmMsIERzdCwgTnVtKQotLSMgZW5kaWYKLS0jZW5kaWYKLS0jaWYgIUhBVkVfU1RSQ0hSICYmICFkZWZpbmVkIF9MSUJDCi0tIyBpZm5kZWYgc3RyY2hyCi0tIyAgZGVmaW5lIHN0cmNociBpbmRleAotLSMgZW5kaWYKLSsjIGRlZmluZSByZWxvY2F0ZShwYXRobmFtZSkgKHBhdGhuYW1lKQotICNlbmRpZgotIAotLSNpbmNsdWRlICJnZXR0ZXh0LmgiCi0tI2luY2x1ZGUgImdldHRleHRQLmgiCi0tCi0gLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotIAotICNpZmRlZiBfTElCQwotQEAgLTc5LDQzICs3NSw0OSBAQAotICAgIGJlY2F1c2Ugc29tZSBBTlNJIEMgZnVuY3Rpb25zIHdpbGwgcmVxdWlyZSBsaW5raW5nIHdpdGggdGhpcyBvYmplY3QKLSAgICBmaWxlIGFuZCB0aGUgbmFtZSBzcGFjZSBtdXN0IG5vdCBiZSBwb2xsdXRlZC4gICovCi0gIyBkZWZpbmUgc3RyY2FzZWNtcCBfX3N0cmNhc2VjbXAKLSsKLSsjIGlmbmRlZiBtZW1wY3B5Ci0rIyAgZGVmaW5lIG1lbXBjcHkgX19tZW1wY3B5Ci0rIyBlbmRpZgotKyMgZGVmaW5lIEhBVkVfTUVNUENQWQkxCi0rIyBkZWZpbmUgSEFWRV9fX0ZTRVRMT0NLSU5HCTEKLSsKLSsvKiBXZSBuZWVkIGxvY2tpbmcgaGVyZSBzaW5jZSB3ZSBjYW4gYmUgY2FsbGVkIGZyb20gZGlmZmVyZW50IHBsYWNlcy4gICovCi0rIyBpbmNsdWRlIDxiaXRzL2xpYmMtbG9jay5oPgotKwotK19fbGliY19sb2NrX2RlZmluZV9pbml0aWFsaXplZCAoc3RhdGljLCBsb2NrKTsKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIGludGVybmFsX2Z1bmN0aW9uCi0rIyBkZWZpbmUgaW50ZXJuYWxfZnVuY3Rpb24KLSAjZW5kaWYKLSAKLSsvKiBTb21lIG9wdGltaXphdGlvbnMgZm9yIGdsaWJjLiAgKi8KLSsjaWZkZWYgX0xJQkMKLSsjIGRlZmluZSBGRU9GKGZwKQkJZmVvZl91bmxvY2tlZCAoZnApCi0rIyBkZWZpbmUgRkdFVFMoYnVmLCBuLCBmcCkJZmdldHNfdW5sb2NrZWQgKGJ1ZiwgbiwgZnApCi0rI2Vsc2UKLSsjIGRlZmluZSBGRU9GKGZwKQkJZmVvZiAoZnApCi0rIyBkZWZpbmUgRkdFVFMoYnVmLCBuLCBmcCkJZmdldHMgKGJ1ZiwgbiwgZnApCi0rI2VuZGlmCi0gCi0tLyogRm9yIHRob3NlIGxvb3Npbmcgc3lzdGVtcyB3aGljaCBkb24ndCBoYXZlIGBhbGxvY2EnIHdlIGhhdmUgdG8gYWRkCi0rLyogRm9yIHRob3NlIGxvc2luZyBzeXN0ZW1zIHdoaWNoIGRvbid0IGhhdmUgYGFsbG9jYScgd2UgaGF2ZSB0byBhZGQKLSAgICBzb21lIGFkZGl0aW9uYWwgY29kZSBlbXVsYXRpbmcgaXQuICAqLwotICNpZmRlZiBIQVZFX0FMTE9DQQotLS8qIE5vdGhpbmcgaGFzIHRvIGJlIGRvbmUuICAqLwotLSMgZGVmaW5lIEFERF9CTE9DSyhsaXN0LCBhZGRyZXNzKSAvKiBub3RoaW5nICovCi0tIyBkZWZpbmUgRlJFRV9CTE9DS1MobGlzdCkgLyogbm90aGluZyAqLwotKyMgZGVmaW5lIGZyZWVhKHApIC8qIG5vdGhpbmcgKi8KLSAjZWxzZQotLXN0cnVjdCBibG9ja19saXN0Ci0tewotLSAgdm9pZCAqYWRkcmVzczsKLS0gIHN0cnVjdCBibG9ja19saXN0ICpuZXh0OwotLX07Ci0tIyBkZWZpbmUgQUREX0JMT0NLKGxpc3QsIGFkZHIpCQkJCQkJICAgICAgXAotLSAgZG8gewkJCQkJCQkJCSAgICAgIFwKLS0gICAgc3RydWN0IGJsb2NrX2xpc3QgKm5ld3AgPSAoc3RydWN0IGJsb2NrX2xpc3QgKikgbWFsbG9jIChzaXplb2YgKCpuZXdwKSk7ICBcCi0tICAgIC8qIElmIHdlIGNhbm5vdCBnZXQgYSBmcmVlIGJsb2NrIHdlIGNhbm5vdCBhZGQgdGhlIG5ldyBlbGVtZW50IHRvCSAgICAgIFwKLS0gICAgICAgdGhlIGxpc3QuICAqLwkJCQkJCQkgICAgICBcCi0tICAgIGlmIChuZXdwICE9IE5VTEwpIHsJCQkJCQkJICAgICAgXAotLSAgICAgIG5ld3AtPmFkZHJlc3MgPSAoYWRkcik7CQkJCQkJICAgICAgXAotLSAgICAgIG5ld3AtPm5leHQgPSAobGlzdCk7CQkJCQkJICAgICAgXAotLSAgICAgIChsaXN0KSA9IG5ld3A7CQkJCQkJCSAgICAgIFwKLS0gICAgfQkJCQkJCQkJCSAgICAgIFwKLS0gIH0gd2hpbGUgKDApCi0tIyBkZWZpbmUgRlJFRV9CTE9DS1MobGlzdCkJCQkJCQkgICAgICBcCi0tICBkbyB7CQkJCQkJCQkJICAgICAgXAotLSAgICB3aGlsZSAobGlzdCAhPSBOVUxMKSB7CQkJCQkJICAgICAgXAotLSAgICAgIHN0cnVjdCBibG9ja19saXN0ICpvbGQgPSBsaXN0OwkJCQkJICAgICAgXAotLSAgICAgIGxpc3QgPSBsaXN0LT5uZXh0OwkJCQkJCSAgICAgIFwKLS0gICAgICBmcmVlIChvbGQpOwkJCQkJCQkgICAgICBcCi0tICAgIH0JCQkJCQkJCQkgICAgICBcCi0tICB9IHdoaWxlICgwKQotLSMgdW5kZWYgYWxsb2NhCi0tIyBkZWZpbmUgYWxsb2NhKHNpemUpIChtYWxsb2MgKHNpemUpKQotLSNlbmRpZgkvKiBoYXZlIGFsbG9jYSAqLwotKyMgZGVmaW5lIGFsbG9jYShuKSBtYWxsb2MgKG4pCi0rIyBkZWZpbmUgZnJlZWEocCkgZnJlZSAocCkKLSsjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZCBfTElCQ19SRUVOVFJBTlQgfHwgSEFWRV9ERUNMX0ZHRVRTX1VOTE9DS0VECi0rIyB1bmRlZiBmZ2V0cwotKyMgZGVmaW5lIGZnZXRzKGJ1ZiwgbGVuLCBzKSBmZ2V0c191bmxvY2tlZCAoYnVmLCBsZW4sIHMpCi0rI2VuZGlmCi0rI2lmIGRlZmluZWQgX0xJQkNfUkVFTlRSQU5UIHx8IEhBVkVfREVDTF9GRU9GX1VOTE9DS0VECi0rIyB1bmRlZiBmZW9mCi0rIyBkZWZpbmUgZmVvZihzKSBmZW9mX3VubG9ja2VkIChzKQotKyNlbmRpZgotIAotIAotIHN0cnVjdCBhbGlhc19tYXAKLUBAIC0xMjUsMjYgKzEyNyw0MSBAQAotIH07Ci0gCi0gCi0tc3RhdGljIHN0cnVjdCBhbGlhc19tYXAgKm1hcDsKLS1zdGF0aWMgc2l6ZV90IG5tYXAgPSAwOwotLXN0YXRpYyBzaXplX3QgbWF4bWFwID0gMDsKLSsjaWZuZGVmIF9MSUJDCi0rIyBkZWZpbmUgbGliY19mcmVlcmVzX3B0cihkZWNsKSBkZWNsCi0rI2VuZGlmCi0rCi0rbGliY19mcmVlcmVzX3B0ciAoc3RhdGljIGNoYXIgKnN0cmluZ19zcGFjZSk7Ci0rc3RhdGljIHNpemVfdCBzdHJpbmdfc3BhY2VfYWN0OwotK3N0YXRpYyBzaXplX3Qgc3RyaW5nX3NwYWNlX21heDsKLStsaWJjX2ZyZWVyZXNfcHRyIChzdGF0aWMgc3RydWN0IGFsaWFzX21hcCAqbWFwKTsKLStzdGF0aWMgc2l6ZV90IG5tYXA7Ci0rc3RhdGljIHNpemVfdCBtYXhtYXA7Ci0gCi0gCi0gLyogUHJvdG90eXBlcyBmb3IgbG9jYWwgZnVuY3Rpb25zLiAgKi8KLS1zdGF0aWMgc2l6ZV90IHJlYWRfYWxpYXNfZmlsZSBQQVJBTVMgKChjb25zdCBjaGFyICpmbmFtZSwgaW50IGZuYW1lX2xlbikpOwotLXN0YXRpYyB2b2lkIGV4dGVuZF9hbGlhc190YWJsZSBQQVJBTVMgKCh2b2lkKSk7Ci0tc3RhdGljIGludCBhbGlhc19jb21wYXJlIFBBUkFNUyAoKGNvbnN0IHN0cnVjdCBhbGlhc19tYXAgKm1hcDEsCi0tCQkJCSAgY29uc3Qgc3RydWN0IGFsaWFzX21hcCAqbWFwMikpOwotK3N0YXRpYyBzaXplX3QgcmVhZF9hbGlhc19maWxlIChjb25zdCBjaGFyICpmbmFtZSwgaW50IGZuYW1lX2xlbikKLSsgICAgIGludGVybmFsX2Z1bmN0aW9uOwotK3N0YXRpYyBpbnQgZXh0ZW5kX2FsaWFzX3RhYmxlICh2b2lkKTsKLStzdGF0aWMgaW50IGFsaWFzX2NvbXBhcmUgKGNvbnN0IHN0cnVjdCBhbGlhc19tYXAgKm1hcDEsCi0rCQkJICBjb25zdCBzdHJ1Y3QgYWxpYXNfbWFwICptYXAyKTsKLSAKLSAKLSBjb25zdCBjaGFyICoKLS1fbmxfZXhwYW5kX2FsaWFzIChuYW1lKQotLSAgICBjb25zdCBjaGFyICpuYW1lOwotK19ubF9leHBhbmRfYWxpYXMgKGNvbnN0IGNoYXIgKm5hbWUpCi0gewotLSAgc3RhdGljIGNvbnN0IGNoYXIgKmxvY2FsZV9hbGlhc19wYXRoID0gTE9DQUxFX0FMSUFTX1BBVEg7Ci0rICBzdGF0aWMgY29uc3QgY2hhciAqbG9jYWxlX2FsaWFzX3BhdGg7Ci0gICBzdHJ1Y3QgYWxpYXNfbWFwICpyZXR2YWw7Ci0rICBjb25zdCBjaGFyICpyZXN1bHQgPSBOVUxMOwotICAgc2l6ZV90IGFkZGVkOwotIAotKyNpZmRlZiBfTElCQwotKyAgX19saWJjX2xvY2tfbG9jayAobG9jayk7Ci0rI2VuZGlmCi0rCi0rICBpZiAobG9jYWxlX2FsaWFzX3BhdGggPT0gTlVMTCkKLSsgICAgbG9jYWxlX2FsaWFzX3BhdGggPSBMT0NBTEVfQUxJQVNfUEFUSDsKLSsKLSAgIGRvCi0gICAgIHsKLSAgICAgICBzdHJ1Y3QgYWxpYXNfbWFwIGl0ZW07Ci1AQCAtMTU0LDE1ICsxNzEsMTggQEAKLSAgICAgICBpZiAobm1hcCA+IDApCi0gCXJldHZhbCA9IChzdHJ1Y3QgYWxpYXNfbWFwICopIGJzZWFyY2ggKCZpdGVtLCBtYXAsIG5tYXAsCi0gCQkJCQkgICAgICAgc2l6ZW9mIChzdHJ1Y3QgYWxpYXNfbWFwKSwKLS0JCQkJCSAgICAgICAoaW50ICgqKSBQQVJBTVMgKChjb25zdCB2b2lkICosCi0tCQkJCQkJCQkgY29uc3Qgdm9pZCAqKSkKLSsJCQkJCSAgICAgICAoaW50ICgqKSAoY29uc3Qgdm9pZCAqLAotKwkJCQkJCQkgY29uc3Qgdm9pZCAqKQotIAkJCQkJCSkgYWxpYXNfY29tcGFyZSk7Ci0gICAgICAgZWxzZQotIAlyZXR2YWwgPSBOVUxMOwotIAotICAgICAgIC8qIFdlIHJlYWxseSBmb3VuZCBhbiBhbGlhcy4gIFJldHVybiB0aGUgdmFsdWUuICAqLwotICAgICAgIGlmIChyZXR2YWwgIT0gTlVMTCkKLS0JcmV0dXJuIHJldHZhbC0+dmFsdWU7Ci0rCXsKLSsJICByZXN1bHQgPSByZXR2YWwtPnZhbHVlOwotKwkgIGJyZWFrOwotKwl9Ci0gCi0gICAgICAgLyogUGVyaGFwcyB3ZSBjYW4gZmluZCBhbm90aGVyIGFsaWFzIGZpbGUuICAqLwotICAgICAgIGFkZGVkID0gMDsKLUBAIC0xNzAsMTEgKzE5MCwxMiBAQAotIAl7Ci0gCSAgY29uc3QgY2hhciAqc3RhcnQ7Ci0gCi0tCSAgd2hpbGUgKGxvY2FsZV9hbGlhc19wYXRoWzBdID09ICc6JykKLSsJICB3aGlsZSAobG9jYWxlX2FsaWFzX3BhdGhbMF0gPT0gUEFUSF9TRVBBUkFUT1IpCi0gCSAgICArK2xvY2FsZV9hbGlhc19wYXRoOwotIAkgIHN0YXJ0ID0gbG9jYWxlX2FsaWFzX3BhdGg7Ci0gCi0tCSAgd2hpbGUgKGxvY2FsZV9hbGlhc19wYXRoWzBdICE9ICdcMCcgJiYgbG9jYWxlX2FsaWFzX3BhdGhbMF0gIT0gJzonKQotKwkgIHdoaWxlIChsb2NhbGVfYWxpYXNfcGF0aFswXSAhPSAnXDAnCi0rCQkgJiYgbG9jYWxlX2FsaWFzX3BhdGhbMF0gIT0gUEFUSF9TRVBBUkFUT1IpCi0gCSAgICArK2xvY2FsZV9hbGlhc19wYXRoOwotIAotIAkgIGlmIChzdGFydCA8IGxvY2FsZV9hbGlhc19wYXRoKQotQEAgLTE4Myw3OCArMjA0LDg3IEBACi0gICAgIH0KLSAgIHdoaWxlIChhZGRlZCAhPSAwKTsKLSAKLS0gIHJldHVybiBOVUxMOwotKyNpZmRlZiBfTElCQwotKyAgX19saWJjX2xvY2tfdW5sb2NrIChsb2NrKTsKLSsjZW5kaWYKLSsKLSsgIHJldHVybiByZXN1bHQ7Ci0gfQotIAotIAotIHN0YXRpYyBzaXplX3QKLS1yZWFkX2FsaWFzX2ZpbGUgKGZuYW1lLCBmbmFtZV9sZW4pCi0tICAgICBjb25zdCBjaGFyICpmbmFtZTsKLS0gICAgIGludCBmbmFtZV9sZW47Ci0raW50ZXJuYWxfZnVuY3Rpb24KLStyZWFkX2FsaWFzX2ZpbGUgKGNvbnN0IGNoYXIgKmZuYW1lLCBpbnQgZm5hbWVfbGVuKQotIHsKLS0jaWZuZGVmIEhBVkVfQUxMT0NBCi0tICBzdHJ1Y3QgYmxvY2tfbGlzdCAqYmxvY2tfbGlzdCA9IE5VTEw7Ci0tI2VuZGlmCi0gICBGSUxFICpmcDsKLSAgIGNoYXIgKmZ1bGxfZm5hbWU7Ci0gICBzaXplX3QgYWRkZWQ7Ci0gICBzdGF0aWMgY29uc3QgY2hhciBhbGlhc2ZpbGVbXSA9ICIvbG9jYWxlLmFsaWFzIjsKLSAKLSAgIGZ1bGxfZm5hbWUgPSAoY2hhciAqKSBhbGxvY2EgKGZuYW1lX2xlbiArIHNpemVvZiBhbGlhc2ZpbGUpOwotLSAgQUREX0JMT0NLIChibG9ja19saXN0LCBmdWxsX2ZuYW1lKTsKLSsjaWZkZWYgSEFWRV9NRU1QQ1BZCi0rICBtZW1wY3B5IChtZW1wY3B5IChmdWxsX2ZuYW1lLCBmbmFtZSwgZm5hbWVfbGVuKSwKLSsJICAgYWxpYXNmaWxlLCBzaXplb2YgYWxpYXNmaWxlKTsKLSsjZWxzZQotICAgbWVtY3B5IChmdWxsX2ZuYW1lLCBmbmFtZSwgZm5hbWVfbGVuKTsKLSAgIG1lbWNweSAoJmZ1bGxfZm5hbWVbZm5hbWVfbGVuXSwgYWxpYXNmaWxlLCBzaXplb2YgYWxpYXNmaWxlKTsKLSsjZW5kaWYKLSAKLS0gIGZwID0gZm9wZW4gKGZ1bGxfZm5hbWUsICJyIik7Ci0rICBmcCA9IGZvcGVuIChyZWxvY2F0ZSAoZnVsbF9mbmFtZSksICJyIik7Ci0rICBmcmVlYSAoZnVsbF9mbmFtZSk7Ci0gICBpZiAoZnAgPT0gTlVMTCkKLS0gICAgewotLSAgICAgIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKLS0gICAgICByZXR1cm4gMDsKLS0gICAgfQotKyAgICByZXR1cm4gMDsKLSsKLSsjaWZkZWYgSEFWRV9fX0ZTRVRMT0NLSU5HCi0rICAvKiBObyB0aHJlYWRzIHByZXNlbnQuICAqLwotKyAgX19mc2V0bG9ja2luZyAoZnAsIEZTRVRMT0NLSU5HX0JZQ0FMTEVSKTsKLSsjZW5kaWYKLSAKLSAgIGFkZGVkID0gMDsKLS0gIHdoaWxlICghZmVvZiAoZnApKQotKyAgd2hpbGUgKCFGRU9GIChmcCkpCi0gICAgIHsKLSAgICAgICAvKiBJdCBpcyBhIHJlYXNvbmFibGUgYXBwcm9hY2ggdG8gdXNlIGEgZml4IGJ1ZmZlciBoZXJlIGJlY2F1c2UKLSAJIGEpIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIGZpcnN0IHR3byBmaWVsZHMKLSAJIGIpIHRoZXNlIGZpZWxkcyBtdXN0IGJlIHVzYWJsZSBhcyBmaWxlIG5hbWVzIGFuZCBzbyBtdXN0IG5vdAotIAkgICAgYmUgdGhhdCBsb25nCi0tICAgICAgICovCi0tICAgICAgY2hhciBidWZbQlVGU0laXTsKLSsJIFdlIGF2b2lkIGEgbXVsdGkta2lsb2J5dGUgYnVmZmVyIGhlcmUgc2luY2UgdGhpcyB3b3VsZCB1c2UgdXAKLSsJIHN0YWNrIHNwYWNlIHdoaWNoIHdlIG1pZ2h0IG5vdCBoYXZlIGlmIHRoZSBwcm9ncmFtIHJhbiBvdXQgb2YKLSsJIG1lbW9yeS4gICovCi0rICAgICAgY2hhciBidWZbNDAwXTsKLSAgICAgICBjaGFyICphbGlhczsKLSAgICAgICBjaGFyICp2YWx1ZTsKLSAgICAgICBjaGFyICpjcDsKLSAKLS0gICAgICBpZiAoZmdldHMgKGJ1ZiwgQlVGU0laLCBmcCkgPT0gTlVMTCkKLSsgICAgICBpZiAoRkdFVFMgKGJ1Ziwgc2l6ZW9mIGJ1ZiwgZnApID09IE5VTEwpCi0gCS8qIEVPRiByZWFjaGVkLiAgKi8KLSAJYnJlYWs7Ci0gCi0gICAgICAgY3AgPSBidWY7Ci0gICAgICAgLyogSWdub3JlIGxlYWRpbmcgd2hpdGUgc3BhY2UuICAqLwotLSAgICAgIHdoaWxlIChpc3NwYWNlIChjcFswXSkpCi0rICAgICAgd2hpbGUgKGlzc3BhY2UgKCh1bnNpZ25lZCBjaGFyKSBjcFswXSkpCi0gCSsrY3A7Ci0gCi0gICAgICAgLyogQSBsZWFkaW5nICcjJyBzaWduYWxzIGEgY29tbWVudCBsaW5lLiAgKi8KLSAgICAgICBpZiAoY3BbMF0gIT0gJ1wwJyAmJiBjcFswXSAhPSAnIycpCi0gCXsKLSAJICBhbGlhcyA9IGNwKys7Ci0tCSAgd2hpbGUgKGNwWzBdICE9ICdcMCcgJiYgIWlzc3BhY2UgKGNwWzBdKSkKLSsJICB3aGlsZSAoY3BbMF0gIT0gJ1wwJyAmJiAhaXNzcGFjZSAoKHVuc2lnbmVkIGNoYXIpIGNwWzBdKSkKLSAJICAgICsrY3A7Ci0gCSAgLyogVGVybWluYXRlIGFsaWFzIG5hbWUuICAqLwotIAkgIGlmIChjcFswXSAhPSAnXDAnKQotIAkgICAgKmNwKysgPSAnXDAnOwotIAotIAkgIC8qIE5vdyBsb29rIGZvciB0aGUgYmVnaW5uaW5nIG9mIHRoZSB2YWx1ZS4gICovCi0tCSAgd2hpbGUgKGlzc3BhY2UgKGNwWzBdKSkKLSsJICB3aGlsZSAoaXNzcGFjZSAoKHVuc2lnbmVkIGNoYXIpIGNwWzBdKSkKLSAJICAgICsrY3A7Ci0gCi0gCSAgaWYgKGNwWzBdICE9ICdcMCcpCi0gCSAgICB7Ci0tCSAgICAgIGNoYXIgKnRwOwotLQkgICAgICBzaXplX3QgbGVuOwotKwkgICAgICBzaXplX3QgYWxpYXNfbGVuOwotKwkgICAgICBzaXplX3QgdmFsdWVfbGVuOwotIAotIAkgICAgICB2YWx1ZSA9IGNwKys7Ci0tCSAgICAgIHdoaWxlIChjcFswXSAhPSAnXDAnICYmICFpc3NwYWNlIChjcFswXSkpCi0rCSAgICAgIHdoaWxlIChjcFswXSAhPSAnXDAnICYmICFpc3NwYWNlICgodW5zaWduZWQgY2hhcikgY3BbMF0pKQotIAkJKytjcDsKLSAJICAgICAgLyogVGVybWluYXRlIHZhbHVlLiAgKi8KLSAJICAgICAgaWYgKGNwWzBdID09ICdcbicpCi1AQCAtMjY5LDI4ICsyOTksNDQgQEAKLSAJCSpjcCsrID0gJ1wwJzsKLSAKLSAJICAgICAgaWYgKG5tYXAgPj0gbWF4bWFwKQotLQkJZXh0ZW5kX2FsaWFzX3RhYmxlICgpOwotLQotLQkgICAgICAvKiBXZSBjYW5ub3QgZGVwZW5kIG9uIHN0cmR1cCBhdmFpbGFibGUgaW4gdGhlIGxpYmMuICBTaWdoISAgKi8KLS0JICAgICAgbGVuID0gc3RybGVuIChhbGlhcykgKyAxOwotLQkgICAgICB0cCA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKLS0JICAgICAgaWYgKHRwID09IE5VTEwpCi0tCQl7Ci0tCQkgIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKLSsJCWlmIChfX2J1aWx0aW5fZXhwZWN0IChleHRlbmRfYWxpYXNfdGFibGUgKCksIDApKQotIAkJICByZXR1cm4gYWRkZWQ7Ci0tCQl9Ci0tCSAgICAgIG1lbWNweSAodHAsIGFsaWFzLCBsZW4pOwotLQkgICAgICBtYXBbbm1hcF0uYWxpYXMgPSB0cDsKLSAKLS0JICAgICAgbGVuID0gc3RybGVuICh2YWx1ZSkgKyAxOwotLQkgICAgICB0cCA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKLS0JICAgICAgaWYgKHRwID09IE5VTEwpCi0rCSAgICAgIGFsaWFzX2xlbiA9IHN0cmxlbiAoYWxpYXMpICsgMTsKLSsJICAgICAgdmFsdWVfbGVuID0gc3RybGVuICh2YWx1ZSkgKyAxOwotKwotKwkgICAgICBpZiAoc3RyaW5nX3NwYWNlX2FjdCArIGFsaWFzX2xlbiArIHZhbHVlX2xlbiA+IHN0cmluZ19zcGFjZV9tYXgpCi0gCQl7Ci0tCQkgIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKLS0JCSAgcmV0dXJuIGFkZGVkOwotKwkJICAvKiBJbmNyZWFzZSBzaXplIG9mIG1lbW9yeSBwb29sLiAgKi8KLSsJCSAgc2l6ZV90IG5ld19zaXplID0gKHN0cmluZ19zcGFjZV9tYXgKLSsJCQkJICAgICArIChhbGlhc19sZW4gKyB2YWx1ZV9sZW4gPiAxMDI0Ci0rCQkJCQk/IGFsaWFzX2xlbiArIHZhbHVlX2xlbiA6IDEwMjQpKTsKLSsJCSAgY2hhciAqbmV3X3Bvb2wgPSAoY2hhciAqKSByZWFsbG9jIChzdHJpbmdfc3BhY2UsIG5ld19zaXplKTsKLSsJCSAgaWYgKG5ld19wb29sID09IE5VTEwpCi0rCQkgICAgcmV0dXJuIGFkZGVkOwotKwotKwkJICBpZiAoX19idWlsdGluX2V4cGVjdCAoc3RyaW5nX3NwYWNlICE9IG5ld19wb29sLCAwKSkKLSsJCSAgICB7Ci0rCQkgICAgICBzaXplX3QgaTsKLSsKLSsJCSAgICAgIGZvciAoaSA9IDA7IGkgPCBubWFwOyBpKyspCi0rCQkJewotKwkJCSAgbWFwW2ldLmFsaWFzICs9IG5ld19wb29sIC0gc3RyaW5nX3NwYWNlOwotKwkJCSAgbWFwW2ldLnZhbHVlICs9IG5ld19wb29sIC0gc3RyaW5nX3NwYWNlOwotKwkJCX0KLSsJCSAgICB9Ci0rCi0rCQkgIHN0cmluZ19zcGFjZSA9IG5ld19wb29sOwotKwkJICBzdHJpbmdfc3BhY2VfbWF4ID0gbmV3X3NpemU7Ci0gCQl9Ci0tCSAgICAgIG1lbWNweSAodHAsIHZhbHVlLCBsZW4pOwotLQkgICAgICBtYXBbbm1hcF0udmFsdWUgPSB0cDsKLSsKLSsJICAgICAgbWFwW25tYXBdLmFsaWFzID0gbWVtY3B5ICgmc3RyaW5nX3NwYWNlW3N0cmluZ19zcGFjZV9hY3RdLAotKwkJCQkJYWxpYXMsIGFsaWFzX2xlbik7Ci0rCSAgICAgIHN0cmluZ19zcGFjZV9hY3QgKz0gYWxpYXNfbGVuOwotKwotKwkgICAgICBtYXBbbm1hcF0udmFsdWUgPSBtZW1jcHkgKCZzdHJpbmdfc3BhY2Vbc3RyaW5nX3NwYWNlX2FjdF0sCi0rCQkJCQl2YWx1ZSwgdmFsdWVfbGVuKTsKLSsJICAgICAgc3RyaW5nX3NwYWNlX2FjdCArPSB2YWx1ZV9sZW47Ci0gCi0gCSAgICAgICsrbm1hcDsKLSAJICAgICAgKythZGRlZDsKLUBAIC0yOTksMTQgKzM0NSwxMSBAQAotIAotICAgICAgIC8qIFBvc3NpYmx5IG5vdCB0aGUgd2hvbGUgbGluZSBmaXRzIGludG8gdGhlIGJ1ZmZlci4gIElnbm9yZQotIAkgdGhlIHJlc3Qgb2YgdGhlIGxpbmUuICAqLwotLSAgICAgIHdoaWxlIChzdHJjaHIgKGNwLCAnXG4nKSA9PSBOVUxMKQotLQl7Ci0tCSAgY3AgPSBidWY7Ci0tCSAgaWYgKGZnZXRzIChidWYsIEJVRlNJWiwgZnApID09IE5VTEwpCi0tCSAgICAvKiBNYWtlIHN1cmUgdGhlIGlubmVyIGxvb3Agd2lsbCBiZSBsZWZ0LiAgVGhlIG91dGVyIGxvb3AKLS0JICAgICAgIHdpbGwgZXhpdCBhdCB0aGUgYGZlb2YnIHRlc3QuICAqLwotLQkgICAgKmNwID0gJ1xuJzsKLS0JfQotKyAgICAgIHdoaWxlIChzdHJjaHIgKGJ1ZiwgJ1xuJykgPT0gTlVMTCkKLSsJaWYgKEZHRVRTIChidWYsIHNpemVvZiBidWYsIGZwKSA9PSBOVUxMKQotKwkgIC8qIE1ha2Ugc3VyZSB0aGUgaW5uZXIgbG9vcCB3aWxsIGJlIGxlZnQuICBUaGUgb3V0ZXIgbG9vcAotKwkgICAgIHdpbGwgZXhpdCBhdCB0aGUgYGZlb2YnIHRlc3QuICAqLwotKwkgIGJyZWFrOwotICAgICB9Ci0gCi0gICAvKiBTaG91bGQgd2UgdGVzdCBmb3IgZmVycm9yKCk/ICBJIHRoaW5rIHdlIGhhdmUgdG8gc2lsZW50bHkgaWdub3JlCi1AQCAtMzE1LDQwICszNTgsMzMgQEAKLSAKLSAgIGlmIChhZGRlZCA+IDApCi0gICAgIHFzb3J0IChtYXAsIG5tYXAsIHNpemVvZiAoc3RydWN0IGFsaWFzX21hcCksCi0tCSAgIChpbnQgKCopIFBBUkFNUyAoKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSkpIGFsaWFzX2NvbXBhcmUpOwotKwkgICAoaW50ICgqKSAoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKSBhbGlhc19jb21wYXJlKTsKLSAKLS0gIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKLSAgIHJldHVybiBhZGRlZDsKLSB9Ci0gCi0gCi0tc3RhdGljIHZvaWQKLStzdGF0aWMgaW50Ci0gZXh0ZW5kX2FsaWFzX3RhYmxlICgpCi0gewotICAgc2l6ZV90IG5ld19zaXplOwotICAgc3RydWN0IGFsaWFzX21hcCAqbmV3X21hcDsKLSAKLSAgIG5ld19zaXplID0gbWF4bWFwID09IDAgPyAxMDAgOiAyICogbWF4bWFwOwotLSAgbmV3X21hcCA9IChzdHJ1Y3QgYWxpYXNfbWFwICopIG1hbGxvYyAobmV3X3NpemUKLS0JCQkJCSAqIHNpemVvZiAoc3RydWN0IGFsaWFzX21hcCkpOwotKyAgbmV3X21hcCA9IChzdHJ1Y3QgYWxpYXNfbWFwICopIHJlYWxsb2MgKG1hcCwgKG5ld19zaXplCi0rCQkJCQkJKiBzaXplb2YgKHN0cnVjdCBhbGlhc19tYXApKSk7Ci0gICBpZiAobmV3X21hcCA9PSBOVUxMKQotICAgICAvKiBTaW1wbHkgZG9uJ3QgZXh0ZW5kOiB3ZSBkb24ndCBoYXZlIGFueSBtb3JlIGNvcmUuICAqLwotLSAgICByZXR1cm47Ci0tCi0tICBtZW1jcHkgKG5ld19tYXAsIG1hcCwgbm1hcCAqIHNpemVvZiAoc3RydWN0IGFsaWFzX21hcCkpOwotLQotLSAgaWYgKG1heG1hcCAhPSAwKQotLSAgICBmcmVlIChtYXApOwotKyAgICByZXR1cm4gLTE7Ci0gCi0gICBtYXAgPSBuZXdfbWFwOwotICAgbWF4bWFwID0gbmV3X3NpemU7Ci0rICByZXR1cm4gMDsKLSB9Ci0gCi0gCi0gc3RhdGljIGludAotLWFsaWFzX2NvbXBhcmUgKG1hcDEsIG1hcDIpCi0tICAgICBjb25zdCBzdHJ1Y3QgYWxpYXNfbWFwICptYXAxOwotLSAgICAgY29uc3Qgc3RydWN0IGFsaWFzX21hcCAqbWFwMjsKLSthbGlhc19jb21wYXJlIChjb25zdCBzdHJ1Y3QgYWxpYXNfbWFwICptYXAxLCBjb25zdCBzdHJ1Y3QgYWxpYXNfbWFwICptYXAyKQotIHsKLSAjaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfU1RSQ0FTRUNNUAotICAgcmV0dXJuIHN0cmNhc2VjbXAgKG1hcDEtPmFsaWFzLCBtYXAyLT5hbGlhcyk7Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvbG9jYWxlbmFtZS5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xvY2FsZW5hbWUuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjUxMDcyNDUyOCAtMDQwMAotQEAgLTAsMCArMSwxMTQyIEBACi0rLyogRGV0ZXJtaW5lIHRoZSBjdXJyZW50IHNlbGVjdGVkIGxvY2FsZS4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OSwgMjAwMC0yMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsvKiBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5vcmc+LCAxOTk1LiAgKi8KLSsvKiBXaW4zMiBjb2RlIHdyaXR0ZW4gYnkgVG9yIExpbGxxdmlzdCA8dG1sQGlraS5maT4uICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPGxvY2FsZS5oPgotKwotKyNpZiBkZWZpbmVkIF9XSU4zMiB8fCBkZWZpbmVkIF9fV0lOMzJfXwotKyMgdW5kZWYgV0lOMzIgICAvKiBhdm9pZCB3YXJuaW5nIG9uIG1pbmd3MzIgKi8KLSsjIGRlZmluZSBXSU4zMgotKyNlbmRpZgotKwotKyNpZmRlZiBXSU4zMgotKyMgZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KLSsjIGluY2x1ZGUgPHdpbmRvd3MuaD4KLSsvKiBMaXN0IG9mIGxhbmd1YWdlIGNvZGVzLCBzb3J0ZWQgYnkgdmFsdWU6Ci0rICAgMHgwMSBMQU5HX0FSQUJJQwotKyAgIDB4MDIgTEFOR19CVUxHQVJJQU4KLSsgICAweDAzIExBTkdfQ0FUQUxBTgotKyAgIDB4MDQgTEFOR19DSElORVNFCi0rICAgMHgwNSBMQU5HX0NaRUNICi0rICAgMHgwNiBMQU5HX0RBTklTSAotKyAgIDB4MDcgTEFOR19HRVJNQU4KLSsgICAweDA4IExBTkdfR1JFRUsKLSsgICAweDA5IExBTkdfRU5HTElTSAotKyAgIDB4MGEgTEFOR19TUEFOSVNICi0rICAgMHgwYiBMQU5HX0ZJTk5JU0gKLSsgICAweDBjIExBTkdfRlJFTkNICi0rICAgMHgwZCBMQU5HX0hFQlJFVwotKyAgIDB4MGUgTEFOR19IVU5HQVJJQU4KLSsgICAweDBmIExBTkdfSUNFTEFORElDCi0rICAgMHgxMCBMQU5HX0lUQUxJQU4KLSsgICAweDExIExBTkdfSkFQQU5FU0UKLSsgICAweDEyIExBTkdfS09SRUFOCi0rICAgMHgxMyBMQU5HX0RVVENICi0rICAgMHgxNCBMQU5HX05PUldFR0lBTgotKyAgIDB4MTUgTEFOR19QT0xJU0gKLSsgICAweDE2IExBTkdfUE9SVFVHVUVTRQotKyAgIDB4MTcgTEFOR19SSEFFVE9fUk9NQU5DRQotKyAgIDB4MTggTEFOR19ST01BTklBTgotKyAgIDB4MTkgTEFOR19SVVNTSUFOCi0rICAgMHgxYSBMQU5HX0NST0FUSUFOID09IExBTkdfU0VSQklBTgotKyAgIDB4MWIgTEFOR19TTE9WQUsKLSsgICAweDFjIExBTkdfQUxCQU5JQU4KLSsgICAweDFkIExBTkdfU1dFRElTSAotKyAgIDB4MWUgTEFOR19USEFJCi0rICAgMHgxZiBMQU5HX1RVUktJU0gKLSsgICAweDIwIExBTkdfVVJEVQotKyAgIDB4MjEgTEFOR19JTkRPTkVTSUFOCi0rICAgMHgyMiBMQU5HX1VLUkFJTklBTgotKyAgIDB4MjMgTEFOR19CRUxBUlVTSUFOCi0rICAgMHgyNCBMQU5HX1NMT1ZFTklBTgotKyAgIDB4MjUgTEFOR19FU1RPTklBTgotKyAgIDB4MjYgTEFOR19MQVRWSUFOCi0rICAgMHgyNyBMQU5HX0xJVEhVQU5JQU4KLSsgICAweDI4IExBTkdfVEFKSUsKLSsgICAweDI5IExBTkdfRkFSU0kKLSsgICAweDJhIExBTkdfVklFVE5BTUVTRQotKyAgIDB4MmIgTEFOR19BUk1FTklBTgotKyAgIDB4MmMgTEFOR19BWkVSSQotKyAgIDB4MmQgTEFOR19CQVNRVUUKLSsgICAweDJlIExBTkdfU09SQklBTgotKyAgIDB4MmYgTEFOR19NQUNFRE9OSUFOCi0rICAgMHgzMCBMQU5HX1NVVFUKLSsgICAweDMxIExBTkdfVFNPTkdBCi0rICAgMHgzMiBMQU5HX1RTV0FOQQotKyAgIDB4MzMgTEFOR19WRU5EQQotKyAgIDB4MzQgTEFOR19YSE9TQQotKyAgIDB4MzUgTEFOR19aVUxVCi0rICAgMHgzNiBMQU5HX0FGUklLQUFOUwotKyAgIDB4MzcgTEFOR19HRU9SR0lBTgotKyAgIDB4MzggTEFOR19GQUVST0VTRQotKyAgIDB4MzkgTEFOR19ISU5ESQotKyAgIDB4M2EgTEFOR19NQUxURVNFCi0rICAgMHgzYiBMQU5HX1NBQU1JCi0rICAgMHgzYyBMQU5HX0dBRUxJQwotKyAgIDB4M2QgTEFOR19ZSURESVNICi0rICAgMHgzZSBMQU5HX01BTEFZCi0rICAgMHgzZiBMQU5HX0tBWkFLCi0rICAgMHg0MCBMQU5HX0tZUkdZWgotKyAgIDB4NDEgTEFOR19TV0FISUxJCi0rICAgMHg0MiBMQU5HX1RVUktNRU4KLSsgICAweDQzIExBTkdfVVpCRUsKLSsgICAweDQ0IExBTkdfVEFUQVIKLSsgICAweDQ1IExBTkdfQkVOR0FMSQotKyAgIDB4NDYgTEFOR19QVU5KQUJJCi0rICAgMHg0NyBMQU5HX0dVSkFSQVRJCi0rICAgMHg0OCBMQU5HX09SSVlBCi0rICAgMHg0OSBMQU5HX1RBTUlMCi0rICAgMHg0YSBMQU5HX1RFTFVHVQotKyAgIDB4NGIgTEFOR19LQU5OQURBCi0rICAgMHg0YyBMQU5HX01BTEFZQUxBTQotKyAgIDB4NGQgTEFOR19BU1NBTUVTRQotKyAgIDB4NGUgTEFOR19NQVJBVEhJCi0rICAgMHg0ZiBMQU5HX1NBTlNLUklUCi0rICAgMHg1MCBMQU5HX01PTkdPTElBTgotKyAgIDB4NTEgTEFOR19USUJFVEFOCi0rICAgMHg1MiBMQU5HX1dFTFNICi0rICAgMHg1MyBMQU5HX0NBTUJPRElBTgotKyAgIDB4NTQgTEFOR19MQU8KLSsgICAweDU1IExBTkdfQlVSTUVTRQotKyAgIDB4NTYgTEFOR19HQUxJQ0lBTgotKyAgIDB4NTcgTEFOR19LT05LQU5JCi0rICAgMHg1OCBMQU5HX01BTklQVVJJCi0rICAgMHg1OSBMQU5HX1NJTkRISQotKyAgIDB4NWEgTEFOR19TWVJJQUMKLSsgICAweDViIExBTkdfU0lOSEFMRVNFCi0rICAgMHg1YyBMQU5HX0NIRVJPS0VFCi0rICAgMHg1ZCBMQU5HX0lOVUtUSVRVVAotKyAgIDB4NWUgTEFOR19BTUhBUklDCi0rICAgMHg1ZiBMQU5HX1RBTUFaSUdIVAotKyAgIDB4NjAgTEFOR19LQVNITUlSSQotKyAgIDB4NjEgTEFOR19ORVBBTEkKLSsgICAweDYyIExBTkdfRlJJU0lBTgotKyAgIDB4NjMgTEFOR19QQVNIVE8KLSsgICAweDY0IExBTkdfVEFHQUxPRwotKyAgIDB4NjUgTEFOR19ESVZFSEkKLSsgICAweDY2IExBTkdfRURPCi0rICAgMHg2NyBMQU5HX0ZVTEZVTERFCi0rICAgMHg2OCBMQU5HX0hBVVNBCi0rICAgMHg2OSBMQU5HX0lCSUJJTwotKyAgIDB4NmEgTEFOR19ZT1JVQkEKLSsgICAweDcwIExBTkdfSUdCTwotKyAgIDB4NzEgTEFOR19LQU5VUkkKLSsgICAweDcyIExBTkdfT1JPTU8KLSsgICAweDczIExBTkdfVElHUklOWUEKLSsgICAweDc0IExBTkdfR1VBUkFOSQotKyAgIDB4NzUgTEFOR19IQVdBSUlBTgotKyAgIDB4NzYgTEFOR19MQVRJTgotKyAgIDB4NzcgTEFOR19TT01BTEkKLSsgICAweDc4IExBTkdfWUkKLSsgICAweDc5IExBTkdfUEFQSUFNRU5UVQotKyovCi0rLyogTWluZ3cgaGVhZGVycyBkb24ndCBoYXZlIGxhdGVzdCBsYW5ndWFnZSBhbmQgc3VibGFuZ3VhZ2UgY29kZXMuICAqLwotKyMgaWZuZGVmIExBTkdfQUZSSUtBQU5TCi0rIyBkZWZpbmUgTEFOR19BRlJJS0FBTlMgMHgzNgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0FMQkFOSUFOCi0rIyBkZWZpbmUgTEFOR19BTEJBTklBTiAweDFjCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfQU1IQVJJQwotKyMgZGVmaW5lIExBTkdfQU1IQVJJQyAweDVlCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfQVJBQklDCi0rIyBkZWZpbmUgTEFOR19BUkFCSUMgMHgwMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0FSTUVOSUFOCi0rIyBkZWZpbmUgTEFOR19BUk1FTklBTiAweDJiCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfQVNTQU1FU0UKLSsjIGRlZmluZSBMQU5HX0FTU0FNRVNFIDB4NGQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19BWkVSSQotKyMgZGVmaW5lIExBTkdfQVpFUkkgMHgyYwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0JBU1FVRQotKyMgZGVmaW5lIExBTkdfQkFTUVVFIDB4MmQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19CRUxBUlVTSUFOCi0rIyBkZWZpbmUgTEFOR19CRUxBUlVTSUFOIDB4MjMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19CRU5HQUxJCi0rIyBkZWZpbmUgTEFOR19CRU5HQUxJIDB4NDUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19CVVJNRVNFCi0rIyBkZWZpbmUgTEFOR19CVVJNRVNFIDB4NTUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19DQU1CT0RJQU4KLSsjIGRlZmluZSBMQU5HX0NBTUJPRElBTiAweDUzCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfQ0FUQUxBTgotKyMgZGVmaW5lIExBTkdfQ0FUQUxBTiAweDAzCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfQ0hFUk9LRUUKLSsjIGRlZmluZSBMQU5HX0NIRVJPS0VFIDB4NWMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19ESVZFSEkKLSsjIGRlZmluZSBMQU5HX0RJVkVISSAweDY1Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfRURPCi0rIyBkZWZpbmUgTEFOR19FRE8gMHg2NgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0VTVE9OSUFOCi0rIyBkZWZpbmUgTEFOR19FU1RPTklBTiAweDI1Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfRkFFUk9FU0UKLSsjIGRlZmluZSBMQU5HX0ZBRVJPRVNFIDB4MzgKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19GQVJTSQotKyMgZGVmaW5lIExBTkdfRkFSU0kgMHgyOQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0ZSSVNJQU4KLSsjIGRlZmluZSBMQU5HX0ZSSVNJQU4gMHg2MgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0ZVTEZVTERFCi0rIyBkZWZpbmUgTEFOR19GVUxGVUxERSAweDY3Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfR0FFTElDCi0rIyBkZWZpbmUgTEFOR19HQUVMSUMgMHgzYwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0dBTElDSUFOCi0rIyBkZWZpbmUgTEFOR19HQUxJQ0lBTiAweDU2Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfR0VPUkdJQU4KLSsjIGRlZmluZSBMQU5HX0dFT1JHSUFOIDB4MzcKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19HVUFSQU5JCi0rIyBkZWZpbmUgTEFOR19HVUFSQU5JIDB4NzQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19HVUpBUkFUSQotKyMgZGVmaW5lIExBTkdfR1VKQVJBVEkgMHg0NwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0hBVVNBCi0rIyBkZWZpbmUgTEFOR19IQVVTQSAweDY4Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfSEFXQUlJQU4KLSsjIGRlZmluZSBMQU5HX0hBV0FJSUFOIDB4NzUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19IRUJSRVcKLSsjIGRlZmluZSBMQU5HX0hFQlJFVyAweDBkCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfSElOREkKLSsjIGRlZmluZSBMQU5HX0hJTkRJIDB4MzkKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19JQklCSU8KLSsjIGRlZmluZSBMQU5HX0lCSUJJTyAweDY5Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfSUdCTwotKyMgZGVmaW5lIExBTkdfSUdCTyAweDcwCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfSU5ET05FU0lBTgotKyMgZGVmaW5lIExBTkdfSU5ET05FU0lBTiAweDIxCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfSU5VS1RJVFVUCi0rIyBkZWZpbmUgTEFOR19JTlVLVElUVVQgMHg1ZAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0tBTk5BREEKLSsjIGRlZmluZSBMQU5HX0tBTk5BREEgMHg0YgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0tBTlVSSQotKyMgZGVmaW5lIExBTkdfS0FOVVJJIDB4NzEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19LQVNITUlSSQotKyMgZGVmaW5lIExBTkdfS0FTSE1JUkkgMHg2MAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0tBWkFLCi0rIyBkZWZpbmUgTEFOR19LQVpBSyAweDNmCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfS09OS0FOSQotKyMgZGVmaW5lIExBTkdfS09OS0FOSSAweDU3Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfS1lSR1laCi0rIyBkZWZpbmUgTEFOR19LWVJHWVogMHg0MAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0xBTwotKyMgZGVmaW5lIExBTkdfTEFPIDB4NTQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19MQVRJTgotKyMgZGVmaW5lIExBTkdfTEFUSU4gMHg3NgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0xBVFZJQU4KLSsjIGRlZmluZSBMQU5HX0xBVFZJQU4gMHgyNgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0xJVEhVQU5JQU4KLSsjIGRlZmluZSBMQU5HX0xJVEhVQU5JQU4gMHgyNwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX01BQ0VET05JQU4KLSsjIGRlZmluZSBMQU5HX01BQ0VET05JQU4gMHgyZgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX01BTEFZCi0rIyBkZWZpbmUgTEFOR19NQUxBWSAweDNlCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfTUFMQVlBTEFNCi0rIyBkZWZpbmUgTEFOR19NQUxBWUFMQU0gMHg0YwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX01BTFRFU0UKLSsjIGRlZmluZSBMQU5HX01BTFRFU0UgMHgzYQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX01BTklQVVJJCi0rIyBkZWZpbmUgTEFOR19NQU5JUFVSSSAweDU4Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfTUFSQVRISQotKyMgZGVmaW5lIExBTkdfTUFSQVRISSAweDRlCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfTU9OR09MSUFOCi0rIyBkZWZpbmUgTEFOR19NT05HT0xJQU4gMHg1MAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX05FUEFMSQotKyMgZGVmaW5lIExBTkdfTkVQQUxJIDB4NjEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19PUklZQQotKyMgZGVmaW5lIExBTkdfT1JJWUEgMHg0OAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX09ST01PCi0rIyBkZWZpbmUgTEFOR19PUk9NTyAweDcyCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfUEFQSUFNRU5UVQotKyMgZGVmaW5lIExBTkdfUEFQSUFNRU5UVSAweDc5Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfUEFTSFRPCi0rIyBkZWZpbmUgTEFOR19QQVNIVE8gMHg2MwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1BVTkpBQkkKLSsjIGRlZmluZSBMQU5HX1BVTkpBQkkgMHg0NgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1JIQUVUT19ST01BTkNFCi0rIyBkZWZpbmUgTEFOR19SSEFFVE9fUk9NQU5DRSAweDE3Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfU0FBTUkKLSsjIGRlZmluZSBMQU5HX1NBQU1JIDB4M2IKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19TQU5TS1JJVAotKyMgZGVmaW5lIExBTkdfU0FOU0tSSVQgMHg0ZgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1NFUkJJQU4KLSsjIGRlZmluZSBMQU5HX1NFUkJJQU4gMHgxYQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1NJTkRISQotKyMgZGVmaW5lIExBTkdfU0lOREhJIDB4NTkKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19TSU5IQUxFU0UKLSsjIGRlZmluZSBMQU5HX1NJTkhBTEVTRSAweDViCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfU0xPVkFLCi0rIyBkZWZpbmUgTEFOR19TTE9WQUsgMHgxYgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1NPTUFMSQotKyMgZGVmaW5lIExBTkdfU09NQUxJIDB4NzcKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19TT1JCSUFOCi0rIyBkZWZpbmUgTEFOR19TT1JCSUFOIDB4MmUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19TVVRVCi0rIyBkZWZpbmUgTEFOR19TVVRVIDB4MzAKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19TV0FISUxJCi0rIyBkZWZpbmUgTEFOR19TV0FISUxJIDB4NDEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19TWVJJQUMKLSsjIGRlZmluZSBMQU5HX1NZUklBQyAweDVhCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVEFHQUxPRwotKyMgZGVmaW5lIExBTkdfVEFHQUxPRyAweDY0Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVEFKSUsKLSsjIGRlZmluZSBMQU5HX1RBSklLIDB4MjgKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19UQU1BWklHSFQKLSsjIGRlZmluZSBMQU5HX1RBTUFaSUdIVCAweDVmCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVEFNSUwKLSsjIGRlZmluZSBMQU5HX1RBTUlMIDB4NDkKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19UQVRBUgotKyMgZGVmaW5lIExBTkdfVEFUQVIgMHg0NAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1RFTFVHVQotKyMgZGVmaW5lIExBTkdfVEVMVUdVIDB4NGEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19USEFJCi0rIyBkZWZpbmUgTEFOR19USEFJIDB4MWUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19USUJFVEFOCi0rIyBkZWZpbmUgTEFOR19USUJFVEFOIDB4NTEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19USUdSSU5ZQQotKyMgZGVmaW5lIExBTkdfVElHUklOWUEgMHg3MwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1RTT05HQQotKyMgZGVmaW5lIExBTkdfVFNPTkdBIDB4MzEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19UU1dBTkEKLSsjIGRlZmluZSBMQU5HX1RTV0FOQSAweDMyCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVFVSS01FTgotKyMgZGVmaW5lIExBTkdfVFVSS01FTiAweDQyCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVUtSQUlOSUFOCi0rIyBkZWZpbmUgTEFOR19VS1JBSU5JQU4gMHgyMgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1VSRFUKLSsjIGRlZmluZSBMQU5HX1VSRFUgMHgyMAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1VaQkVLCi0rIyBkZWZpbmUgTEFOR19VWkJFSyAweDQzCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVkVOREEKLSsjIGRlZmluZSBMQU5HX1ZFTkRBIDB4MzMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19WSUVUTkFNRVNFCi0rIyBkZWZpbmUgTEFOR19WSUVUTkFNRVNFIDB4MmEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19XRUxTSAotKyMgZGVmaW5lIExBTkdfV0VMU0ggMHg1MgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1hIT1NBCi0rIyBkZWZpbmUgTEFOR19YSE9TQSAweDM0Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfWUkKLSsjIGRlZmluZSBMQU5HX1lJIDB4NzgKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19ZSURESVNICi0rIyBkZWZpbmUgTEFOR19ZSURESVNIIDB4M2QKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19ZT1JVQkEKLSsjIGRlZmluZSBMQU5HX1lPUlVCQSAweDZhCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfWlVMVQotKyMgZGVmaW5lIExBTkdfWlVMVSAweDM1Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX1NBVURJX0FSQUJJQQotKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX1NBVURJX0FSQUJJQSAweDAxCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX0lSQVEKLSsjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19JUkFRIDB4MDIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfRUdZUFQKLSsjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19FR1lQVCAweDAzCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX0xJQllBCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfTElCWUEgMHgwNAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19BTEdFUklBCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfQUxHRVJJQSAweDA1Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX01PUk9DQ08KLSsjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19NT1JPQ0NPIDB4MDYKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfVFVOSVNJQQotKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX1RVTklTSUEgMHgwNwotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19PTUFOCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfT01BTiAweDA4Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX1lFTUVOCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfWUVNRU4gMHgwOQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19TWVJJQQotKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX1NZUklBIDB4MGEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfSk9SREFOCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfSk9SREFOIDB4MGIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfTEVCQU5PTgotKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX0xFQkFOT04gMHgwYwotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19LVVdBSVQKLSsjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19LVVdBSVQgMHgwZAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19VQUUKLSsjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19VQUUgMHgwZQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19CQUhSQUlOCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfQkFIUkFJTiAweDBmCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX1FBVEFSCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfUUFUQVIgMHgxMAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FaRVJJX0xBVElOCi0rIyBkZWZpbmUgU1VCTEFOR19BWkVSSV9MQVRJTiAweDAxCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVpFUklfQ1lSSUxMSUMKLSsjIGRlZmluZSBTVUJMQU5HX0FaRVJJX0NZUklMTElDIDB4MDIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19CRU5HQUxJX0lORElBCi0rIyBkZWZpbmUgU1VCTEFOR19CRU5HQUxJX0lORElBIDB4MDAKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19CRU5HQUxJX0JBTkdMQURFU0gKLSsjIGRlZmluZSBTVUJMQU5HX0JFTkdBTElfQkFOR0xBREVTSCAweDAxCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQ0hJTkVTRV9NQUNBVQotKyMgZGVmaW5lIFNVQkxBTkdfQ0hJTkVTRV9NQUNBVSAweDA1Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRU5HTElTSF9TT1VUSF9BRlJJQ0EKLSsjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfU09VVEhfQUZSSUNBIDB4MDcKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19FTkdMSVNIX0pBTUFJQ0EKLSsjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfSkFNQUlDQSAweDA4Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRU5HTElTSF9DQVJJQkJFQU4KLSsjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfQ0FSSUJCRUFOIDB4MDkKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19FTkdMSVNIX0JFTElaRQotKyMgZGVmaW5lIFNVQkxBTkdfRU5HTElTSF9CRUxJWkUgMHgwYQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfVFJJTklEQUQKLSsjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfVFJJTklEQUQgMHgwYgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfWklNQkFCV0UKLSsjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfWklNQkFCV0UgMHgwYwotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfUEhJTElQUElORVMKLSsjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfUEhJTElQUElORVMgMHgwZAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfSU5ET05FU0lBCi0rIyBkZWZpbmUgU1VCTEFOR19FTkdMSVNIX0lORE9ORVNJQSAweDBlCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRU5HTElTSF9IT05HS09ORwotKyMgZGVmaW5lIFNVQkxBTkdfRU5HTElTSF9IT05HS09ORyAweDBmCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRU5HTElTSF9JTkRJQQotKyMgZGVmaW5lIFNVQkxBTkdfRU5HTElTSF9JTkRJQSAweDEwCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRU5HTElTSF9NQUxBWVNJQQotKyMgZGVmaW5lIFNVQkxBTkdfRU5HTElTSF9NQUxBWVNJQSAweDExCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRU5HTElTSF9TSU5HQVBPUkUKLSsjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfU0lOR0FQT1JFIDB4MTIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19GUkVOQ0hfTFVYRU1CT1VSRwotKyMgZGVmaW5lIFNVQkxBTkdfRlJFTkNIX0xVWEVNQk9VUkcgMHgwNQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0ZSRU5DSF9NT05BQ08KLSsjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9NT05BQ08gMHgwNgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0ZSRU5DSF9XRVNUSU5ESUVTCi0rIyBkZWZpbmUgU1VCTEFOR19GUkVOQ0hfV0VTVElORElFUyAweDA3Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRlJFTkNIX1JFVU5JT04KLSsjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9SRVVOSU9OIDB4MDgKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19GUkVOQ0hfQ09OR08KLSsjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9DT05HTyAweDA5Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRlJFTkNIX1NFTkVHQUwKLSsjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9TRU5FR0FMIDB4MGEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19GUkVOQ0hfQ0FNRVJPT04KLSsjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9DQU1FUk9PTiAweDBiCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRlJFTkNIX0NPVEVESVZPSVJFCi0rIyBkZWZpbmUgU1VCTEFOR19GUkVOQ0hfQ09URURJVk9JUkUgMHgwYwotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0ZSRU5DSF9NQUxJCi0rIyBkZWZpbmUgU1VCTEFOR19GUkVOQ0hfTUFMSSAweDBkCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRlJFTkNIX01PUk9DQ08KLSsjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9NT1JPQ0NPIDB4MGUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19GUkVOQ0hfSEFJVEkKLSsjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9IQUlUSSAweDBmCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfR0VSTUFOX0xVWEVNQk9VUkcKLSsjIGRlZmluZSBTVUJMQU5HX0dFUk1BTl9MVVhFTUJPVVJHIDB4MDQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19HRVJNQU5fTElFQ0hURU5TVEVJTgotKyMgZGVmaW5lIFNVQkxBTkdfR0VSTUFOX0xJRUNIVEVOU1RFSU4gMHgwNQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0tBU0hNSVJJX0lORElBCi0rIyBkZWZpbmUgU1VCTEFOR19LQVNITUlSSV9JTkRJQSAweDAyCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfTUFMQVlfTUFMQVlTSUEKLSsjIGRlZmluZSBTVUJMQU5HX01BTEFZX01BTEFZU0lBIDB4MDEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19NQUxBWV9CUlVORUlfREFSVVNTQUxBTQotKyMgZGVmaW5lIFNVQkxBTkdfTUFMQVlfQlJVTkVJX0RBUlVTU0FMQU0gMHgwMgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX05FUEFMSV9JTkRJQQotKyMgZGVmaW5lIFNVQkxBTkdfTkVQQUxJX0lORElBIDB4MDIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19QVU5KQUJJX0lORElBCi0rIyBkZWZpbmUgU1VCTEFOR19QVU5KQUJJX0lORElBIDB4MDAKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19QVU5KQUJJX1BBS0lTVEFOCi0rIyBkZWZpbmUgU1VCTEFOR19QVU5KQUJJX1BBS0lTVEFOIDB4MDEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19ST01BTklBTl9ST01BTklBCi0rIyBkZWZpbmUgU1VCTEFOR19ST01BTklBTl9ST01BTklBIDB4MDAKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19ST01BTklBTl9NT0xET1ZBCi0rIyBkZWZpbmUgU1VCTEFOR19ST01BTklBTl9NT0xET1ZBIDB4MDEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TRVJCSUFOX0xBVElOCi0rIyBkZWZpbmUgU1VCTEFOR19TRVJCSUFOX0xBVElOIDB4MDIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TRVJCSUFOX0NZUklMTElDCi0rIyBkZWZpbmUgU1VCTEFOR19TRVJCSUFOX0NZUklMTElDIDB4MDMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TSU5ESElfSU5ESUEKLSsjIGRlZmluZSBTVUJMQU5HX1NJTkRISV9JTkRJQSAweDAwCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU0lOREhJX1BBS0lTVEFOCi0rIyBkZWZpbmUgU1VCTEFOR19TSU5ESElfUEFLSVNUQU4gMHgwMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfR1VBVEVNQUxBCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX0dVQVRFTUFMQSAweDA0Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9DT1NUQV9SSUNBCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX0NPU1RBX1JJQ0EgMHgwNQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfUEFOQU1BCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX1BBTkFNQSAweDA2Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9ET01JTklDQU5fUkVQVUJMSUMKLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfRE9NSU5JQ0FOX1JFUFVCTElDIDB4MDcKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX1ZFTkVaVUVMQQotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9WRU5FWlVFTEEgMHgwOAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfQ09MT01CSUEKLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfQ09MT01CSUEgMHgwOQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfUEVSVQotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9QRVJVIDB4MGEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX0FSR0VOVElOQQotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9BUkdFTlRJTkEgMHgwYgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfRUNVQURPUgotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9FQ1VBRE9SIDB4MGMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX0NISUxFCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX0NISUxFIDB4MGQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX1VSVUdVQVkKLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfVVJVR1VBWSAweDBlCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9QQVJBR1VBWQotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9QQVJBR1VBWSAweDBmCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9CT0xJVklBCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX0JPTElWSUEgMHgxMAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfRUxfU0FMVkFET1IKLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfRUxfU0FMVkFET1IgMHgxMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfSE9ORFVSQVMKLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfSE9ORFVSQVMgMHgxMgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfTklDQVJBR1VBCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX05JQ0FSQUdVQSAweDEzCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9QVUVSVE9fUklDTwotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9QVUVSVE9fUklDTyAweDE0Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1dFRElTSF9GSU5MQU5ECi0rIyBkZWZpbmUgU1VCTEFOR19TV0VESVNIX0ZJTkxBTkQgMHgwMgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1RBTUFaSUdIVF9BUkFCSUMKLSsjIGRlZmluZSBTVUJMQU5HX1RBTUFaSUdIVF9BUkFCSUMgMHgwMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1RBTUFaSUdIVF9MQVRJTgotKyMgZGVmaW5lIFNVQkxBTkdfVEFNQVpJR0hUX0xBVElOIDB4MDIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19USUdSSU5ZQV9FVEhJT1BJQQotKyMgZGVmaW5lIFNVQkxBTkdfVElHUklOWUFfRVRISU9QSUEgMHgwMAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1RJR1JJTllBX0VSSVRSRUEKLSsjIGRlZmluZSBTVUJMQU5HX1RJR1JJTllBX0VSSVRSRUEgMHgwMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1VSRFVfUEFLSVNUQU4KLSsjIGRlZmluZSBTVUJMQU5HX1VSRFVfUEFLSVNUQU4gMHgwMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1VSRFVfSU5ESUEKLSsjIGRlZmluZSBTVUJMQU5HX1VSRFVfSU5ESUEgMHgwMgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1VaQkVLX0xBVElOCi0rIyBkZWZpbmUgU1VCTEFOR19VWkJFS19MQVRJTiAweDAxCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfVVpCRUtfQ1lSSUxMSUMKLSsjIGRlZmluZSBTVUJMQU5HX1VaQkVLX0NZUklMTElDIDB4MDIKLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rLyogWFBHMyBkZWZpbmVzIHRoZSByZXN1bHQgb2YgJ3NldGxvY2FsZSAoY2F0ZWdvcnksIE5VTEwpJyBhczoKLSsgICAiRGlyZWN0cyAnc2V0bG9jYWxlKCknIHRvIHF1ZXJ5ICdjYXRlZ29yeScgYW5kIHJldHVybiB0aGUgY3VycmVudAotKyAgICBzZXR0aW5nIG9mICdsb2NhbCcuIgotKyAgIEhvd2V2ZXIgaXQgZG9lcyBub3Qgc3BlY2lmeSB0aGUgZXhhY3QgZm9ybWF0LiAgTmVpdGhlciBkbyBTVVNWMiBhbmQKLSsgICBJU08gQyA5OS4gIFNvIHdlIGNhbiB1c2UgdGhpcyBmZWF0dXJlIG9ubHkgb24gc2VsZWN0ZWQgc3lzdGVtcyAoZS5nLgotKyAgIHRob3NlIHVzaW5nIEdOVSBDIExpYnJhcnkpLiAgKi8KLSsjaWYgZGVmaW5lZCBfTElCQyB8fCAoZGVmaW5lZCBfX0dOVV9MSUJSQVJZX18gJiYgX19HTlVfTElCUkFSWV9fID49IDIpCi0rIyBkZWZpbmUgSEFWRV9MT0NBTEVfTlVMTAotKyNlbmRpZgotKwotKy8qIERldGVybWluZSB0aGUgY3VycmVudCBsb2NhbGUncyBuYW1lLCBhbmQgY2Fub25pY2FsaXplIGl0IGludG8gWFBHIHN5bnRheAotKyAgICAgbGFuZ3VhZ2VbX3RlcnJpdG9yeVsuY29kZXNldF1dW0Btb2RpZmllcl0KLSsgICBUaGUgY29kZXNldCBwYXJ0IGluIHRoZSByZXN1bHQgaXMgbm90IHJlbGlhYmxlOyB0aGUgbG9jYWxlX2NoYXJzZXQoKQotKyAgIHNob3VsZCBiZSB1c2VkIGZvciBjb2Rlc2V0IGluZm9ybWF0aW9uIGluc3RlYWQuCi0rICAgVGhlIHJlc3VsdCBtdXN0IG5vdCBiZSBmcmVlZDsgaXQgaXMgc3RhdGljYWxseSBhbGxvY2F0ZWQuICAqLwotKwotK2NvbnN0IGNoYXIgKgotK19ubF9sb2NhbGVfbmFtZSAoaW50IGNhdGVnb3J5LCBjb25zdCBjaGFyICpjYXRlZ29yeW5hbWUpCi0rewotKyAgY29uc3QgY2hhciAqcmV0dmFsOwotKwotKyNpZm5kZWYgV0lOMzIKLSsKLSsgIC8qIFVzZSB0aGUgUE9TSVggbWV0aG9kcyBvZiBsb29raW5nIHRvICdMQ19BTEwnLCAnTENfeHh4JywgYW5kICdMQU5HJy4KLSsgICAgIE9uIHNvbWUgc3lzdGVtcyB0aGlzIGNhbiBiZSBkb25lIGJ5IHRoZSAnc2V0bG9jYWxlJyBmdW5jdGlvbiBpdHNlbGYuICAqLwotKyMgaWYgZGVmaW5lZCBIQVZFX1NFVExPQ0FMRSAmJiBkZWZpbmVkIEhBVkVfTENfTUVTU0FHRVMgJiYgZGVmaW5lZCBIQVZFX0xPQ0FMRV9OVUxMCi0rICByZXR2YWwgPSBzZXRsb2NhbGUgKGNhdGVnb3J5LCBOVUxMKTsKLSsjIGVsc2UKLSsgIC8qIFNldHRpbmcgb2YgTENfQUxMIG92ZXJ3cml0ZXMgYWxsIG90aGVyLiAgKi8KLSsgIHJldHZhbCA9IGdldGVudiAoIkxDX0FMTCIpOwotKyAgaWYgKHJldHZhbCA9PSBOVUxMIHx8IHJldHZhbFswXSA9PSAnXDAnKQotKyAgICB7Ci0rICAgICAgLyogTmV4dCBjb21lcyB0aGUgbmFtZSBvZiB0aGUgZGVzaXJlZCBjYXRlZ29yeS4gICovCi0rICAgICAgcmV0dmFsID0gZ2V0ZW52IChjYXRlZ29yeW5hbWUpOwotKyAgICAgIGlmIChyZXR2YWwgPT0gTlVMTCB8fCByZXR2YWxbMF0gPT0gJ1wwJykKLSsJewotKwkgIC8qIExhc3QgcG9zc2liaWxpdHkgaXMgdGhlIExBTkcgZW52aXJvbm1lbnQgdmFyaWFibGUuICAqLwotKwkgIHJldHZhbCA9IGdldGVudiAoIkxBTkciKTsKLSsJICBpZiAocmV0dmFsID09IE5VTEwgfHwgcmV0dmFsWzBdID09ICdcMCcpCi0rCSAgICAvKiBXZSB1c2UgQyBhcyB0aGUgZGVmYXVsdCBkb21haW4uICBQT1NJWCBzYXlzIHRoaXMgaXMKLSsJICAgICAgIGltcGxlbWVudGF0aW9uIGRlZmluZWQuICAqLwotKwkgICAgcmV0dmFsID0gIkMiOwotKwl9Ci0rICAgIH0KLSsjIGVuZGlmCi0rCi0rICByZXR1cm4gcmV0dmFsOwotKwotKyNlbHNlIC8qIFdJTjMyICovCi0rCi0rICAvKiBSZXR1cm4gYW4gWFBHIHN0eWxlIGxvY2FsZSBuYW1lIGxhbmd1YWdlW190ZXJyaXRvcnldW0Btb2RpZmllcl0uCi0rICAgICBEb24ndCBldmVuIGJvdGhlciBkZXRlcm1pbmluZyB0aGUgY29kZXNldDsgaXQncyBub3QgdXNlZnVsIGluIHRoaXMKLSsgICAgIGNvbnRleHQsIGJlY2F1c2UgbWVzc2FnZSBjYXRhbG9ncyBhcmUgbm90IHNwZWNpZmljIHRvIGEgc2luZ2xlCi0rICAgICBjb2Rlc2V0LiAgKi8KLSsKLSsgIExDSUQgbGNpZDsKLSsgIExBTkdJRCBsYW5naWQ7Ci0rICBpbnQgcHJpbWFyeSwgc3ViOwotKwotKyAgLyogTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSBzeXN0ZW0gc2V0dGluZ3MgdGhyb3VnaCBlbnZpcm9ubWVudAotKyAgICAgdmFyaWFibGVzLCBhcyBvbiBQT1NJWCBzeXN0ZW1zLiAgKi8KLSsgIHJldHZhbCA9IGdldGVudiAoIkxDX0FMTCIpOwotKyAgaWYgKHJldHZhbCAhPSBOVUxMICYmIHJldHZhbFswXSAhPSAnXDAnKQotKyAgICByZXR1cm4gcmV0dmFsOwotKyAgcmV0dmFsID0gZ2V0ZW52IChjYXRlZ29yeW5hbWUpOwotKyAgaWYgKHJldHZhbCAhPSBOVUxMICYmIHJldHZhbFswXSAhPSAnXDAnKQotKyAgICByZXR1cm4gcmV0dmFsOwotKyAgcmV0dmFsID0gZ2V0ZW52ICgiTEFORyIpOwotKyAgaWYgKHJldHZhbCAhPSBOVUxMICYmIHJldHZhbFswXSAhPSAnXDAnKQotKyAgICByZXR1cm4gcmV0dmFsOwotKwotKyAgLyogVXNlIG5hdGl2ZSBXaW4zMiBBUEkgbG9jYWxlIElELiAgKi8KLSsgIGxjaWQgPSBHZXRUaHJlYWRMb2NhbGUgKCk7Ci0rCi0rICAvKiBTdHJpcCBvZmYgdGhlIHNvcnRpbmcgcnVsZXMsIGtlZXAgb25seSB0aGUgbGFuZ3VhZ2UgcGFydC4gICovCi0rICBsYW5naWQgPSBMQU5HSURGUk9NTENJRCAobGNpZCk7Ci0rCi0rICAvKiBTcGxpdCBpbnRvIGxhbmd1YWdlIGFuZCB0ZXJyaXRvcnkgcGFydC4gICovCi0rICBwcmltYXJ5ID0gUFJJTUFSWUxBTkdJRCAobGFuZ2lkKTsKLSsgIHN1YiA9IFNVQkxBTkdJRCAobGFuZ2lkKTsKLSsKLSsgIC8qIERpc3BhdGNoIG9uIGxhbmd1YWdlLgotKyAgICAgU2VlIGFsc28gaHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL29ubGluZWRhdC9sYW5ndWFnZXMuaHRtbCAuCi0rICAgICBGb3IgZGV0YWlscyBhYm91dCBsYW5ndWFnZXMsIHNlZSBodHRwOi8vd3d3LmV0aG5vbG9ndWUuY29tLyAuICAqLwotKyAgc3dpdGNoIChwcmltYXJ5KQotKyAgICB7Ci0rICAgIGNhc2UgTEFOR19BRlJJS0FBTlM6IHJldHVybiAiYWZfWkEiOwotKyAgICBjYXNlIExBTkdfQUxCQU5JQU46IHJldHVybiAic3FfQUwiOwotKyAgICBjYXNlIExBTkdfQU1IQVJJQzogcmV0dXJuICJhbV9FVCI7Ci0rICAgIGNhc2UgTEFOR19BUkFCSUM6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX0FSQUJJQ19TQVVESV9BUkFCSUE6IHJldHVybiAiYXJfU0EiOwotKwljYXNlIFNVQkxBTkdfQVJBQklDX0lSQVE6IHJldHVybiAiYXJfSVEiOwotKwljYXNlIFNVQkxBTkdfQVJBQklDX0VHWVBUOiByZXR1cm4gImFyX0VHIjsKLSsJY2FzZSBTVUJMQU5HX0FSQUJJQ19MSUJZQTogcmV0dXJuICJhcl9MWSI7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfQUxHRVJJQTogcmV0dXJuICJhcl9EWiI7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfTU9ST0NDTzogcmV0dXJuICJhcl9NQSI7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfVFVOSVNJQTogcmV0dXJuICJhcl9UTiI7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfT01BTjogcmV0dXJuICJhcl9PTSI7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfWUVNRU46IHJldHVybiAiYXJfWUUiOwotKwljYXNlIFNVQkxBTkdfQVJBQklDX1NZUklBOiByZXR1cm4gImFyX1NZIjsKLSsJY2FzZSBTVUJMQU5HX0FSQUJJQ19KT1JEQU46IHJldHVybiAiYXJfSk8iOwotKwljYXNlIFNVQkxBTkdfQVJBQklDX0xFQkFOT046IHJldHVybiAiYXJfTEIiOwotKwljYXNlIFNVQkxBTkdfQVJBQklDX0tVV0FJVDogcmV0dXJuICJhcl9LVyI7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfVUFFOiByZXR1cm4gImFyX0FFIjsKLSsJY2FzZSBTVUJMQU5HX0FSQUJJQ19CQUhSQUlOOiByZXR1cm4gImFyX0JIIjsKLSsJY2FzZSBTVUJMQU5HX0FSQUJJQ19RQVRBUjogcmV0dXJuICJhcl9RQSI7Ci0rCX0KLSsgICAgICByZXR1cm4gImFyIjsKLSsgICAgY2FzZSBMQU5HX0FSTUVOSUFOOiByZXR1cm4gImh5X0FNIjsKLSsgICAgY2FzZSBMQU5HX0FTU0FNRVNFOiByZXR1cm4gImFzX0lOIjsKLSsgICAgY2FzZSBMQU5HX0FaRVJJOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCS8qIEZJWE1FOiBBZGp1c3QgdGhpcyB3aGVuIEF6ZXJiYWlqYW5pIGxvY2FsZXMgYXBwZWFyIG9uIFVuaXguICAqLwotKwljYXNlIFNVQkxBTkdfQVpFUklfTEFUSU46IHJldHVybiAiYXpfQVpAbGF0aW4iOwotKwljYXNlIFNVQkxBTkdfQVpFUklfQ1lSSUxMSUM6IHJldHVybiAiYXpfQVpAY3lyaWxsaWMiOwotKwl9Ci0rICAgICAgcmV0dXJuICJheiI7Ci0rICAgIGNhc2UgTEFOR19CQVNRVUU6Ci0rICAgICAgcmV0dXJuICJldSI7IC8qIEFtYmlndW91czogY291bGQgYmUgImV1X0VTIiBvciAiZXVfRlIiLiAgKi8KLSsgICAgY2FzZSBMQU5HX0JFTEFSVVNJQU46IHJldHVybiAiYmVfQlkiOwotKyAgICBjYXNlIExBTkdfQkVOR0FMSToKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfQkVOR0FMSV9JTkRJQTogcmV0dXJuICJibl9JTiI7Ci0rCWNhc2UgU1VCTEFOR19CRU5HQUxJX0JBTkdMQURFU0g6IHJldHVybiAiYm5fQkQiOwotKwl9Ci0rICAgICAgcmV0dXJuICJibiI7Ci0rICAgIGNhc2UgTEFOR19CVUxHQVJJQU46IHJldHVybiAiYmdfQkciOwotKyAgICBjYXNlIExBTkdfQlVSTUVTRTogcmV0dXJuICJteV9NTSI7Ci0rICAgIGNhc2UgTEFOR19DQU1CT0RJQU46IHJldHVybiAia21fS0giOwotKyAgICBjYXNlIExBTkdfQ0FUQUxBTjogcmV0dXJuICJjYV9FUyI7Ci0rICAgIGNhc2UgTEFOR19DSEVST0tFRTogcmV0dXJuICJjaHJfVVMiOwotKyAgICBjYXNlIExBTkdfQ0hJTkVTRToKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfQ0hJTkVTRV9UUkFESVRJT05BTDogcmV0dXJuICJ6aF9UVyI7Ci0rCWNhc2UgU1VCTEFOR19DSElORVNFX1NJTVBMSUZJRUQ6IHJldHVybiAiemhfQ04iOwotKwljYXNlIFNVQkxBTkdfQ0hJTkVTRV9IT05HS09ORzogcmV0dXJuICJ6aF9ISyI7Ci0rCWNhc2UgU1VCTEFOR19DSElORVNFX1NJTkdBUE9SRTogcmV0dXJuICJ6aF9TRyI7Ci0rCWNhc2UgU1VCTEFOR19DSElORVNFX01BQ0FVOiByZXR1cm4gInpoX01PIjsKLSsJfQotKyAgICAgIHJldHVybiAiemgiOwotKyAgICBjYXNlIExBTkdfQ1JPQVRJQU46CQkvKiBMQU5HX0NST0FUSUFOID09IExBTkdfU0VSQklBTgotKwkJCQkgKiBXaGF0IHVzZWQgdG8gYmUgY2FsbGVkIFNlcmJvLUNyb2F0aWFuCi0rCQkJCSAqIHNob3VsZCByZWFsbHkgbm93IGJlIHR3byBzZXBhcmF0ZQotKwkJCQkgKiBsYW5ndWFnZXMgYmVjYXVzZSBvZiBwb2xpdGljYWwgcmVhc29ucy4KLSsJCQkJICogKFNheXMgdG1sLCB3aG8ga25vd3Mgbm90aGluZyBhYm91dCBTZXJiaWFuCi0rCQkJCSAqIG9yIENyb2F0aWFuLikKLSsJCQkJICogKEkgY2FuIGZlZWwgdGhvc2UgZmxhbWVzIGNvbWluZyBhbHJlYWR5LikKLSsJCQkJICovCi0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX0RFRkFVTFQ6IHJldHVybiAiaHJfSFIiOwotKwljYXNlIFNVQkxBTkdfU0VSQklBTl9MQVRJTjogcmV0dXJuICJzcl9DUyI7Ci0rCWNhc2UgU1VCTEFOR19TRVJCSUFOX0NZUklMTElDOiByZXR1cm4gInNyX0NTQGN5cmlsbGljIjsKLSsJfQotKyAgICAgIHJldHVybiAiaHIiOwotKyAgICBjYXNlIExBTkdfQ1pFQ0g6IHJldHVybiAiY3NfQ1oiOwotKyAgICBjYXNlIExBTkdfREFOSVNIOiByZXR1cm4gImRhX0RLIjsKLSsgICAgY2FzZSBMQU5HX0RJVkVISTogcmV0dXJuICJkdl9NViI7Ci0rICAgIGNhc2UgTEFOR19EVVRDSDoKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfRFVUQ0g6IHJldHVybiAibmxfTkwiOwotKwljYXNlIFNVQkxBTkdfRFVUQ0hfQkVMR0lBTjogLyogRkxFTUlTSCwgVkxBQU1TICovIHJldHVybiAibmxfQkUiOwotKwl9Ci0rICAgICAgcmV0dXJuICJubCI7Ci0rICAgIGNhc2UgTEFOR19FRE86IHJldHVybiAiYmluX05HIjsKLSsgICAgY2FzZSBMQU5HX0VOR0xJU0g6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJLyogU1VCTEFOR19FTkdMSVNIX1VTID09IFNVQkxBTkdfREVGQVVMVC4gSGVoLiBJIHRob3VnaHQKLSsJICogRW5nbGlzaCB3YXMgdGhlIGxhbmd1YWdlIHNwb2tlbiBpbiBFbmdsYW5kLgotKwkgKiBPaCB3ZWxsLgotKwkgKi8KLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfVVM6IHJldHVybiAiZW5fVVMiOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9VSzogcmV0dXJuICJlbl9HQiI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX0FVUzogcmV0dXJuICJlbl9BVSI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX0NBTjogcmV0dXJuICJlbl9DQSI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX05aOiByZXR1cm4gImVuX05aIjsKLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfRUlSRTogcmV0dXJuICJlbl9JRSI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX1NPVVRIX0FGUklDQTogcmV0dXJuICJlbl9aQSI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX0pBTUFJQ0E6IHJldHVybiAiZW5fSk0iOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9DQVJJQkJFQU46IHJldHVybiAiZW5fR0QiOyAvKiBHcmVuYWRhPyAqLwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9CRUxJWkU6IHJldHVybiAiZW5fQloiOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9UUklOSURBRDogcmV0dXJuICJlbl9UVCI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX1pJTUJBQldFOiByZXR1cm4gImVuX1pXIjsKLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfUEhJTElQUElORVM6IHJldHVybiAiZW5fUEgiOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9JTkRPTkVTSUE6IHJldHVybiAiZW5fSUQiOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9IT05HS09ORzogcmV0dXJuICJlbl9ISyI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX0lORElBOiByZXR1cm4gImVuX0lOIjsKLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfTUFMQVlTSUE6IHJldHVybiAiZW5fTVkiOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9TSU5HQVBPUkU6IHJldHVybiAiZW5fU0ciOwotKwl9Ci0rICAgICAgcmV0dXJuICJlbiI7Ci0rICAgIGNhc2UgTEFOR19FU1RPTklBTjogcmV0dXJuICJldF9FRSI7Ci0rICAgIGNhc2UgTEFOR19GQUVST0VTRTogcmV0dXJuICJmb19GTyI7Ci0rICAgIGNhc2UgTEFOR19GQVJTSTogcmV0dXJuICJmYV9JUiI7Ci0rICAgIGNhc2UgTEFOR19GSU5OSVNIOiByZXR1cm4gImZpX0ZJIjsKLSsgICAgY2FzZSBMQU5HX0ZSRU5DSDoKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfRlJFTkNIOiByZXR1cm4gImZyX0ZSIjsKLSsJY2FzZSBTVUJMQU5HX0ZSRU5DSF9CRUxHSUFOOiAvKiBXQUxMT09OICovIHJldHVybiAiZnJfQkUiOwotKwljYXNlIFNVQkxBTkdfRlJFTkNIX0NBTkFESUFOOiByZXR1cm4gImZyX0NBIjsKLSsJY2FzZSBTVUJMQU5HX0ZSRU5DSF9TV0lTUzogcmV0dXJuICJmcl9DSCI7Ci0rCWNhc2UgU1VCTEFOR19GUkVOQ0hfTFVYRU1CT1VSRzogcmV0dXJuICJmcl9MVSI7Ci0rCWNhc2UgU1VCTEFOR19GUkVOQ0hfTU9OQUNPOiByZXR1cm4gImZyX01DIjsKLSsJY2FzZSBTVUJMQU5HX0ZSRU5DSF9XRVNUSU5ESUVTOiByZXR1cm4gImZyIjsgLyogQ2FyaWJiZWFuPyAqLwotKwljYXNlIFNVQkxBTkdfRlJFTkNIX1JFVU5JT046IHJldHVybiAiZnJfUkUiOwotKwljYXNlIFNVQkxBTkdfRlJFTkNIX0NPTkdPOiByZXR1cm4gImZyX0NHIjsKLSsJY2FzZSBTVUJMQU5HX0ZSRU5DSF9TRU5FR0FMOiByZXR1cm4gImZyX1NOIjsKLSsJY2FzZSBTVUJMQU5HX0ZSRU5DSF9DQU1FUk9PTjogcmV0dXJuICJmcl9DTSI7Ci0rCWNhc2UgU1VCTEFOR19GUkVOQ0hfQ09URURJVk9JUkU6IHJldHVybiAiZnJfQ0kiOwotKwljYXNlIFNVQkxBTkdfRlJFTkNIX01BTEk6IHJldHVybiAiZnJfTUwiOwotKwljYXNlIFNVQkxBTkdfRlJFTkNIX01PUk9DQ086IHJldHVybiAiZnJfTUEiOwotKwljYXNlIFNVQkxBTkdfRlJFTkNIX0hBSVRJOiByZXR1cm4gImZyX0hUIjsKLSsJfQotKyAgICAgIHJldHVybiAiZnIiOwotKyAgICBjYXNlIExBTkdfRlJJU0lBTjogcmV0dXJuICJmeV9OTCI7Ci0rICAgIGNhc2UgTEFOR19GVUxGVUxERToKLSsgICAgICAvKiBTcG9rZW4gaW4gTmlnZXJpYSwgR3VpbmVhLCBTZW5lZ2FsLCBNYWxpLCBOaWdlciwgQ2FtZXJvb24sIEJlbmluLiAqLwotKyAgICAgIHJldHVybiAiZmZfTkciOwotKyAgICBjYXNlIExBTkdfR0FFTElDOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgMHgwMTogLyogU0NPVFRJU0ggKi8gcmV0dXJuICJnZF9HQiI7Ci0rCWNhc2UgMHgwMjogLyogSVJJU0ggKi8gcmV0dXJuICJnYV9JRSI7Ci0rCX0KLSsgICAgICByZXR1cm4gIkMiOwotKyAgICBjYXNlIExBTkdfR0FMSUNJQU46IHJldHVybiAiZ2xfRVMiOwotKyAgICBjYXNlIExBTkdfR0VPUkdJQU46IHJldHVybiAia2FfR0UiOwotKyAgICBjYXNlIExBTkdfR0VSTUFOOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19HRVJNQU46IHJldHVybiAiZGVfREUiOwotKwljYXNlIFNVQkxBTkdfR0VSTUFOX1NXSVNTOiByZXR1cm4gImRlX0NIIjsKLSsJY2FzZSBTVUJMQU5HX0dFUk1BTl9BVVNUUklBTjogcmV0dXJuICJkZV9BVCI7Ci0rCWNhc2UgU1VCTEFOR19HRVJNQU5fTFVYRU1CT1VSRzogcmV0dXJuICJkZV9MVSI7Ci0rCWNhc2UgU1VCTEFOR19HRVJNQU5fTElFQ0hURU5TVEVJTjogcmV0dXJuICJkZV9MSSI7Ci0rCX0KLSsgICAgICByZXR1cm4gImRlIjsKLSsgICAgY2FzZSBMQU5HX0dSRUVLOiByZXR1cm4gImVsX0dSIjsKLSsgICAgY2FzZSBMQU5HX0dVQVJBTkk6IHJldHVybiAiZ25fUFkiOwotKyAgICBjYXNlIExBTkdfR1VKQVJBVEk6IHJldHVybiAiZ3VfSU4iOwotKyAgICBjYXNlIExBTkdfSEFVU0E6IHJldHVybiAiaGFfTkciOwotKyAgICBjYXNlIExBTkdfSEFXQUlJQU46Ci0rICAgICAgLyogRklYTUU6IERvIHRoZXkgbWVhbiBIYXdhaWlhbiAoImhhd19VUyIsIDEwMDAgc3BlYWtlcnMpCi0rCSBvciBIYXdhaWkgQ3Jlb2xlIEVuZ2xpc2ggKCJjcGVfVVMiLCA2MDAwMDAgc3BlYWtlcnMpPyAgKi8KLSsgICAgICByZXR1cm4gImNwZV9VUyI7Ci0rICAgIGNhc2UgTEFOR19IRUJSRVc6IHJldHVybiAiaGVfSUwiOwotKyAgICBjYXNlIExBTkdfSElOREk6IHJldHVybiAiaGlfSU4iOwotKyAgICBjYXNlIExBTkdfSFVOR0FSSUFOOiByZXR1cm4gImh1X0hVIjsKLSsgICAgY2FzZSBMQU5HX0lCSUJJTzogcmV0dXJuICJuaWNfTkciOwotKyAgICBjYXNlIExBTkdfSUNFTEFORElDOiByZXR1cm4gImlzX0lTIjsKLSsgICAgY2FzZSBMQU5HX0lHQk86IHJldHVybiAiaWdfTkciOwotKyAgICBjYXNlIExBTkdfSU5ET05FU0lBTjogcmV0dXJuICJpZF9JRCI7Ci0rICAgIGNhc2UgTEFOR19JTlVLVElUVVQ6IHJldHVybiAiaXVfQ0EiOwotKyAgICBjYXNlIExBTkdfSVRBTElBTjoKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfSVRBTElBTjogcmV0dXJuICJpdF9JVCI7Ci0rCWNhc2UgU1VCTEFOR19JVEFMSUFOX1NXSVNTOiByZXR1cm4gIml0X0NIIjsKLSsJfQotKyAgICAgIHJldHVybiAiaXQiOwotKyAgICBjYXNlIExBTkdfSkFQQU5FU0U6IHJldHVybiAiamFfSlAiOwotKyAgICBjYXNlIExBTkdfS0FOTkFEQTogcmV0dXJuICJrbl9JTiI7Ci0rICAgIGNhc2UgTEFOR19LQU5VUkk6IHJldHVybiAia3JfTkciOwotKyAgICBjYXNlIExBTkdfS0FTSE1JUkk6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX0RFRkFVTFQ6IHJldHVybiAia3NfUEsiOwotKwljYXNlIFNVQkxBTkdfS0FTSE1JUklfSU5ESUE6IHJldHVybiAia3NfSU4iOwotKwl9Ci0rICAgICAgcmV0dXJuICJrcyI7Ci0rICAgIGNhc2UgTEFOR19LQVpBSzogcmV0dXJuICJra19LWiI7Ci0rICAgIGNhc2UgTEFOR19LT05LQU5JOgotKyAgICAgIC8qIEZJWE1FOiBBZGp1c3QgdGhpcyB3aGVuIHN1Y2ggbG9jYWxlcyBhcHBlYXIgb24gVW5peC4gICovCi0rICAgICAgcmV0dXJuICJrb2tfSU4iOwotKyAgICBjYXNlIExBTkdfS09SRUFOOiByZXR1cm4gImtvX0tSIjsKLSsgICAgY2FzZSBMQU5HX0tZUkdZWjogcmV0dXJuICJreV9LRyI7Ci0rICAgIGNhc2UgTEFOR19MQU86IHJldHVybiAibG9fTEEiOwotKyAgICBjYXNlIExBTkdfTEFUSU46IHJldHVybiAibGFfVkEiOwotKyAgICBjYXNlIExBTkdfTEFUVklBTjogcmV0dXJuICJsdl9MViI7Ci0rICAgIGNhc2UgTEFOR19MSVRIVUFOSUFOOiByZXR1cm4gImx0X0xUIjsKLSsgICAgY2FzZSBMQU5HX01BQ0VET05JQU46IHJldHVybiAibWtfTUsiOwotKyAgICBjYXNlIExBTkdfTUFMQVk6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX01BTEFZX01BTEFZU0lBOiByZXR1cm4gIm1zX01ZIjsKLSsJY2FzZSBTVUJMQU5HX01BTEFZX0JSVU5FSV9EQVJVU1NBTEFNOiByZXR1cm4gIm1zX0JOIjsKLSsJfQotKyAgICAgIHJldHVybiAibXMiOwotKyAgICBjYXNlIExBTkdfTUFMQVlBTEFNOiByZXR1cm4gIm1sX0lOIjsKLSsgICAgY2FzZSBMQU5HX01BTFRFU0U6IHJldHVybiAibXRfTVQiOwotKyAgICBjYXNlIExBTkdfTUFOSVBVUkk6Ci0rICAgICAgLyogRklYTUU6IEFkanVzdCB0aGlzIHdoZW4gc3VjaCBsb2NhbGVzIGFwcGVhciBvbiBVbml4LiAgKi8KLSsgICAgICByZXR1cm4gIm1uaV9JTiI7Ci0rICAgIGNhc2UgTEFOR19NQVJBVEhJOiByZXR1cm4gIm1yX0lOIjsKLSsgICAgY2FzZSBMQU5HX01PTkdPTElBTjoKLSsgICAgICByZXR1cm4gIm1uIjsgLyogQW1iaWd1b3VzOiBjb3VsZCBiZSAibW5fQ04iIG9yICJtbl9NTiIuICAqLwotKyAgICBjYXNlIExBTkdfTkVQQUxJOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19ERUZBVUxUOiByZXR1cm4gIm5lX05QIjsKLSsJY2FzZSBTVUJMQU5HX05FUEFMSV9JTkRJQTogcmV0dXJuICJuZV9JTiI7Ci0rCX0KLSsgICAgICByZXR1cm4gIm5lIjsKLSsgICAgY2FzZSBMQU5HX05PUldFR0lBTjoKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfTk9SV0VHSUFOX0JPS01BTDogcmV0dXJuICJub19OTyI7Ci0rCWNhc2UgU1VCTEFOR19OT1JXRUdJQU5fTllOT1JTSzogcmV0dXJuICJubl9OTyI7Ci0rCX0KLSsgICAgICByZXR1cm4gIm5vIjsKLSsgICAgY2FzZSBMQU5HX09SSVlBOiByZXR1cm4gIm9yX0lOIjsKLSsgICAgY2FzZSBMQU5HX09ST01POiByZXR1cm4gIm9tX0VUIjsKLSsgICAgY2FzZSBMQU5HX1BBUElBTUVOVFU6IHJldHVybiAicGFwX0FOIjsKLSsgICAgY2FzZSBMQU5HX1BBU0hUTzoKLSsgICAgICByZXR1cm4gInBzIjsgLyogQW1iaWd1b3VzOiBjb3VsZCBiZSAicHNfUEsiIG9yICJwc19BRiIuICAqLwotKyAgICBjYXNlIExBTkdfUE9MSVNIOiByZXR1cm4gInBsX1BMIjsKLSsgICAgY2FzZSBMQU5HX1BPUlRVR1VFU0U6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX1BPUlRVR1VFU0U6IHJldHVybiAicHRfUFQiOwotKwkvKiBIbW0uIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4gPT0gU1VCTEFOR19ERUZBVUxULgotKwkgICBTYW1lIHBoZW5vbWVub24gYXMgU1VCTEFOR19FTkdMSVNIX1VTID09IFNVQkxBTkdfREVGQVVMVC4gKi8KLSsJY2FzZSBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOOiByZXR1cm4gInB0X0JSIjsKLSsJfQotKyAgICAgIHJldHVybiAicHQiOwotKyAgICBjYXNlIExBTkdfUFVOSkFCSToKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfUFVOSkFCSV9JTkRJQTogcmV0dXJuICJwYV9JTiI7IC8qIEd1cm11a2hpIHNjcmlwdCAqLwotKwljYXNlIFNVQkxBTkdfUFVOSkFCSV9QQUtJU1RBTjogcmV0dXJuICJwYV9QSyI7IC8qIEFyYWJpYyBzY3JpcHQgKi8KLSsJfQotKyAgICAgIHJldHVybiAicGEiOwotKyAgICBjYXNlIExBTkdfUkhBRVRPX1JPTUFOQ0U6IHJldHVybiAicm1fQ0giOwotKyAgICBjYXNlIExBTkdfUk9NQU5JQU46Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX1JPTUFOSUFOX1JPTUFOSUE6IHJldHVybiAicm9fUk8iOwotKwljYXNlIFNVQkxBTkdfUk9NQU5JQU5fTU9MRE9WQTogcmV0dXJuICJyb19NRCI7Ci0rCX0KLSsgICAgICByZXR1cm4gInJvIjsKLSsgICAgY2FzZSBMQU5HX1JVU1NJQU46Ci0rICAgICAgcmV0dXJuICJydSI7IC8qIEFtYmlndW91czogY291bGQgYmUgInJ1X1JVIiBvciAicnVfVUEiIG9yICJydV9NRCIuICAqLwotKyAgICBjYXNlIExBTkdfU0FBTUk6IC8qIGFjdHVhbGx5IE5vcnRoZXJuIFNhbWkgKi8gcmV0dXJuICJzZV9OTyI7Ci0rICAgIGNhc2UgTEFOR19TQU5TS1JJVDogcmV0dXJuICJzYV9JTiI7Ci0rICAgIGNhc2UgTEFOR19TSU5ESEk6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX1NJTkRISV9JTkRJQTogcmV0dXJuICJzZF9JTiI7Ci0rCWNhc2UgU1VCTEFOR19TSU5ESElfUEFLSVNUQU46IHJldHVybiAic2RfUEsiOwotKwl9Ci0rICAgICAgcmV0dXJuICJzZCI7Ci0rICAgIGNhc2UgTEFOR19TSU5IQUxFU0U6IHJldHVybiAic2lfTEsiOwotKyAgICBjYXNlIExBTkdfU0xPVkFLOiByZXR1cm4gInNrX1NLIjsKLSsgICAgY2FzZSBMQU5HX1NMT1ZFTklBTjogcmV0dXJuICJzbF9TSSI7Ci0rICAgIGNhc2UgTEFOR19TT01BTEk6IHJldHVybiAic29fU08iOwotKyAgICBjYXNlIExBTkdfU09SQklBTjoKLSsgICAgICAvKiBGSVhNRTogQWRqdXN0IHRoaXMgd2hlbiBzdWNoIGxvY2FsZXMgYXBwZWFyIG9uIFVuaXguICAqLwotKyAgICAgIHJldHVybiAid2VuX0RFIjsKLSsgICAgY2FzZSBMQU5HX1NQQU5JU0g6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0g6IHJldHVybiAiZXNfRVMiOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9NRVhJQ0FOOiByZXR1cm4gImVzX01YIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfTU9ERVJOOgotKwkgIHJldHVybiAiZXNfRVNAbW9kZXJuIjsJLyogbm90IHNlZW4gb24gVW5peCAqLwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9HVUFURU1BTEE6IHJldHVybiAiZXNfR1QiOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9DT1NUQV9SSUNBOiByZXR1cm4gImVzX0NSIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfUEFOQU1BOiByZXR1cm4gImVzX1BBIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfRE9NSU5JQ0FOX1JFUFVCTElDOiByZXR1cm4gImVzX0RPIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfVkVORVpVRUxBOiByZXR1cm4gImVzX1ZFIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfQ09MT01CSUE6IHJldHVybiAiZXNfQ08iOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9QRVJVOiByZXR1cm4gImVzX1BFIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfQVJHRU5USU5BOiByZXR1cm4gImVzX0FSIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfRUNVQURPUjogcmV0dXJuICJlc19FQyI7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX0NISUxFOiByZXR1cm4gImVzX0NMIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfVVJVR1VBWTogcmV0dXJuICJlc19VWSI7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX1BBUkFHVUFZOiByZXR1cm4gImVzX1BZIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfQk9MSVZJQTogcmV0dXJuICJlc19CTyI7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX0VMX1NBTFZBRE9SOiByZXR1cm4gImVzX1NWIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfSE9ORFVSQVM6IHJldHVybiAiZXNfSE4iOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9OSUNBUkFHVUE6IHJldHVybiAiZXNfTkkiOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9QVUVSVE9fUklDTzogcmV0dXJuICJlc19QUiI7Ci0rCX0KLSsgICAgICByZXR1cm4gImVzIjsKLSsgICAgY2FzZSBMQU5HX1NVVFU6IHJldHVybiAiYm50X1RaIjsgLyogb3IgInN0X0xTIiBvciAibnNvX1pBIj8gKi8KLSsgICAgY2FzZSBMQU5HX1NXQUhJTEk6IHJldHVybiAic3dfS0UiOwotKyAgICBjYXNlIExBTkdfU1dFRElTSDoKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfREVGQVVMVDogcmV0dXJuICJzdl9TRSI7Ci0rCWNhc2UgU1VCTEFOR19TV0VESVNIX0ZJTkxBTkQ6IHJldHVybiAic3ZfRkkiOwotKwl9Ci0rICAgICAgcmV0dXJuICJzdiI7Ci0rICAgIGNhc2UgTEFOR19TWVJJQUM6IHJldHVybiAic3lyX1RSIjsgLyogQW4gZXh0aW5jdCBsYW5ndWFnZS4gICovCi0rICAgIGNhc2UgTEFOR19UQUdBTE9HOiByZXR1cm4gInRsX1BIIjsKLSsgICAgY2FzZSBMQU5HX1RBSklLOiByZXR1cm4gInRnX1RKIjsKLSsgICAgY2FzZSBMQU5HX1RBTUFaSUdIVDoKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwkvKiBGSVhNRTogQWRqdXN0IHRoaXMgd2hlbiBUYW1hemlnaHQgbG9jYWxlcyBhcHBlYXIgb24gVW5peC4gICovCi0rCWNhc2UgU1VCTEFOR19UQU1BWklHSFRfQVJBQklDOiByZXR1cm4gImJlcl9NQUBhcmFiaWMiOwotKwljYXNlIFNVQkxBTkdfVEFNQVpJR0hUX0xBVElOOiByZXR1cm4gImJlcl9NQUBsYXRpbiI7Ci0rCX0KLSsgICAgICByZXR1cm4gImJlcl9NQSI7Ci0rICAgIGNhc2UgTEFOR19UQU1JTDoKLSsgICAgICByZXR1cm4gInRhIjsgLyogQW1iaWd1b3VzOiBjb3VsZCBiZSAidGFfSU4iIG9yICJ0YV9MSyIgb3IgInRhX1NHIi4gICovCi0rICAgIGNhc2UgTEFOR19UQVRBUjogcmV0dXJuICJ0dF9SVSI7Ci0rICAgIGNhc2UgTEFOR19URUxVR1U6IHJldHVybiAidGVfSU4iOwotKyAgICBjYXNlIExBTkdfVEhBSTogcmV0dXJuICJ0aF9USCI7Ci0rICAgIGNhc2UgTEFOR19USUJFVEFOOiByZXR1cm4gImJvX0NOIjsKLSsgICAgY2FzZSBMQU5HX1RJR1JJTllBOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19USUdSSU5ZQV9FVEhJT1BJQTogcmV0dXJuICJ0aV9FVCI7Ci0rCWNhc2UgU1VCTEFOR19USUdSSU5ZQV9FUklUUkVBOiByZXR1cm4gInRpX0VSIjsKLSsJfQotKyAgICAgIHJldHVybiAidGkiOwotKyAgICBjYXNlIExBTkdfVFNPTkdBOiByZXR1cm4gInRzX1pBIjsKLSsgICAgY2FzZSBMQU5HX1RTV0FOQTogcmV0dXJuICJ0bl9CVyI7Ci0rICAgIGNhc2UgTEFOR19UVVJLSVNIOiByZXR1cm4gInRyX1RSIjsKLSsgICAgY2FzZSBMQU5HX1RVUktNRU46IHJldHVybiAidGtfVE0iOwotKyAgICBjYXNlIExBTkdfVUtSQUlOSUFOOiByZXR1cm4gInVrX1VBIjsKLSsgICAgY2FzZSBMQU5HX1VSRFU6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX1VSRFVfUEFLSVNUQU46IHJldHVybiAidXJfUEsiOwotKwljYXNlIFNVQkxBTkdfVVJEVV9JTkRJQTogcmV0dXJuICJ1cl9JTiI7Ci0rCX0KLSsgICAgICByZXR1cm4gInVyIjsKLSsgICAgY2FzZSBMQU5HX1VaQkVLOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19VWkJFS19MQVRJTjogcmV0dXJuICJ1el9VWiI7Ci0rCWNhc2UgU1VCTEFOR19VWkJFS19DWVJJTExJQzogcmV0dXJuICJ1el9VWkBjeXJpbGxpYyI7Ci0rCX0KLSsgICAgICByZXR1cm4gInV6IjsKLSsgICAgY2FzZSBMQU5HX1ZFTkRBOiByZXR1cm4gInZlX1pBIjsKLSsgICAgY2FzZSBMQU5HX1ZJRVROQU1FU0U6IHJldHVybiAidmlfVk4iOwotKyAgICBjYXNlIExBTkdfV0VMU0g6IHJldHVybiAiY3lfR0IiOwotKyAgICBjYXNlIExBTkdfWEhPU0E6IHJldHVybiAieGhfWkEiOwotKyAgICBjYXNlIExBTkdfWUk6IHJldHVybiAic2l0X0NOIjsKLSsgICAgY2FzZSBMQU5HX1lJRERJU0g6IHJldHVybiAieWlfSUwiOwotKyAgICBjYXNlIExBTkdfWU9SVUJBOiByZXR1cm4gInlvX05HIjsKLSsgICAgY2FzZSBMQU5HX1pVTFU6IHJldHVybiAienVfWkEiOwotKyAgICBkZWZhdWx0OiByZXR1cm4gIkMiOwotKyAgICB9Ci0rCi0rI2VuZGlmCi0rfQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2xvZy5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xvZy5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNTE1NzIzNzY4IC0wNDAwCi1AQCAtMCwwICsxLDk4IEBACi0rLyogTG9nIGZpbGUgb3V0cHV0LgotKyAgIENvcHlyaWdodCAoQykgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rLyogV3JpdHRlbiBieSBCcnVubyBIYWlibGUgPGJydW5vQGNsaXNwLm9yZz4uICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKwotKy8qIFByaW50IGFuIEFTQ0lJIHN0cmluZyB3aXRoIHF1b3RlcyBhbmQgZXNjYXBlIHNlcXVlbmNlcyB3aGVyZSBuZWVkZWQuICAqLwotK3N0YXRpYyB2b2lkCi0rcHJpbnRfZXNjYXBlZCAoRklMRSAqc3RyZWFtLCBjb25zdCBjaGFyICpzdHIpCi0rewotKyAgcHV0YyAoJyInLCBzdHJlYW0pOwotKyAgZm9yICg7ICpzdHIgIT0gJ1wwJzsgc3RyKyspCi0rICAgIGlmICgqc3RyID09ICdcbicpCi0rICAgICAgewotKwlmcHV0cyAoIlxcblwiIiwgc3RyZWFtKTsKLSsJaWYgKHN0clsxXSA9PSAnXDAnKQotKwkgIHJldHVybjsKLSsJZnB1dHMgKCJcblwiIiwgc3RyZWFtKTsKLSsgICAgICB9Ci0rICAgIGVsc2UKLSsgICAgICB7Ci0rCWlmICgqc3RyID09ICciJyB8fCAqc3RyID09ICdcXCcpCi0rCSAgcHV0YyAoJ1xcJywgc3RyZWFtKTsKLSsJcHV0YyAoKnN0ciwgc3RyZWFtKTsKLSsgICAgICB9Ci0rICBwdXRjICgnIicsIHN0cmVhbSk7Ci0rfQotKwotKy8qIEFkZCB0byB0aGUgbG9nIGZpbGUgYW4gZW50cnkgZGVub3RpbmcgYSBmYWlsZWQgdHJhbnNsYXRpb24uICAqLwotK3ZvaWQKLStfbmxfbG9nX3VudHJhbnNsYXRlZCAoY29uc3QgY2hhciAqbG9nZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCi0rCQkgICAgICBjb25zdCBjaGFyICptc2dpZDEsIGNvbnN0IGNoYXIgKm1zZ2lkMiwgaW50IHBsdXJhbCkKLSt7Ci0rICBzdGF0aWMgY2hhciAqbGFzdF9sb2dmaWxlbmFtZSA9IE5VTEw7Ci0rICBzdGF0aWMgRklMRSAqbGFzdF9sb2dmaWxlID0gTlVMTDsKLSsgIEZJTEUgKmxvZ2ZpbGU7Ci0rCi0rICAvKiBDYW4gd2UgcmV1c2UgdGhlIGxhc3Qgb3BlbmVkIGxvZ2ZpbGU/ICAqLwotKyAgaWYgKGxhc3RfbG9nZmlsZW5hbWUgPT0gTlVMTCB8fCBzdHJjbXAgKGxvZ2ZpbGVuYW1lLCBsYXN0X2xvZ2ZpbGVuYW1lKSAhPSAwKQotKyAgICB7Ci0rICAgICAgLyogQ2xvc2UgdGhlIGxhc3QgdXNlZCBsb2dmaWxlLiAgKi8KLSsgICAgICBpZiAobGFzdF9sb2dmaWxlbmFtZSAhPSBOVUxMKQotKwl7Ci0rCSAgaWYgKGxhc3RfbG9nZmlsZSAhPSBOVUxMKQotKwkgICAgewotKwkgICAgICBmY2xvc2UgKGxhc3RfbG9nZmlsZSk7Ci0rCSAgICAgIGxhc3RfbG9nZmlsZSA9IE5VTEw7Ci0rCSAgICB9Ci0rCSAgZnJlZSAobGFzdF9sb2dmaWxlbmFtZSk7Ci0rCSAgbGFzdF9sb2dmaWxlbmFtZSA9IE5VTEw7Ci0rCX0KLSsgICAgICAvKiBPcGVuIHRoZSBsb2dmaWxlLiAgKi8KLSsgICAgICBsYXN0X2xvZ2ZpbGVuYW1lID0gKGNoYXIgKikgbWFsbG9jIChzdHJsZW4gKGxvZ2ZpbGVuYW1lKSArIDEpOwotKyAgICAgIGlmIChsYXN0X2xvZ2ZpbGVuYW1lID09IE5VTEwpCi0rCXJldHVybjsKLSsgICAgICBzdHJjcHkgKGxhc3RfbG9nZmlsZW5hbWUsIGxvZ2ZpbGVuYW1lKTsKLSsgICAgICBsYXN0X2xvZ2ZpbGUgPSBmb3BlbiAobG9nZmlsZW5hbWUsICJhIik7Ci0rICAgICAgaWYgKGxhc3RfbG9nZmlsZSA9PSBOVUxMKQotKwlyZXR1cm47Ci0rICAgIH0KLSsgIGxvZ2ZpbGUgPSBsYXN0X2xvZ2ZpbGU7Ci0rCi0rICBmcHJpbnRmIChsb2dmaWxlLCAiZG9tYWluICIpOwotKyAgcHJpbnRfZXNjYXBlZCAobG9nZmlsZSwgZG9tYWlubmFtZSk7Ci0rICBmcHJpbnRmIChsb2dmaWxlLCAiXG5tc2dpZCAiKTsKLSsgIHByaW50X2VzY2FwZWQgKGxvZ2ZpbGUsIG1zZ2lkMSk7Ci0rICBpZiAocGx1cmFsKQotKyAgICB7Ci0rICAgICAgZnByaW50ZiAobG9nZmlsZSwgIlxubXNnaWRfcGx1cmFsICIpOwotKyAgICAgIHByaW50X2VzY2FwZWQgKGxvZ2ZpbGUsIG1zZ2lkMik7Ci0rICAgICAgZnByaW50ZiAobG9nZmlsZSwgIlxubXNnc3RyWzBdIFwiXCJcbiIpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIGZwcmludGYgKGxvZ2ZpbGUsICJcbm1zZ3N0ciBcIlwiXG4iKTsKLSsgIHB1dGMgKCdcbicsIGxvZ2ZpbGUpOwotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9NYWtlZmlsZS5pbgkxOTk4LTA0LTI2IDA5OjIyOjM1LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9NYWtlZmlsZS5pbgkyMDA0LTA5LTEyIDE0OjQwOjM0LjUyMTcyMjg1NiAtMDQwMAotQEAgLTEsMTkgKzEsMjAgQEAKLS0jIE1ha2VmaWxlIGZvciBkaXJlY3Rvcnkgd2l0aCBtZXNzYWdlIGNhdGFsb2cgaGFuZGxpbmcgaW4gR05VIE5MUyBVdGlsaXRpZXMuCi0tIyBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyBNYWtlZmlsZSBmb3IgZGlyZWN0b3J5IHdpdGggbWVzc2FnZSBjYXRhbG9nIGhhbmRsaW5nIGxpYnJhcnkgb2YgR05VIGdldHRleHQKLSsjIENvcHlyaWdodCAoQykgMTk5NS0xOTk4LCAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gIwotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyMgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICMgYW55IGxhdGVyIHZlcnNpb24uCi0gIwotICMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rIyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAjCi0tIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rIyBVU0EuCi0gCi0gUEFDS0FHRSA9IEBQQUNLQUdFQAotIFZFUlNJT04gPSBAVkVSU0lPTkAKLUBAIC0yMywxMTggKzI0LDM0MSBAQAotIHNyY2RpciA9IEBzcmNkaXJACi0gdG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAotIHRvcF9idWlsZGRpciA9IC4uCi0tVlBBVEggPSBAc3JjZGlyQAotKyNWUEFUSCA9ICQoc3JjZGlyKQotIAotIHByZWZpeCA9IEBwcmVmaXhACi0gZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi0gdHJhbnNmb3JtID0gQHByb2dyYW1fdHJhbnNmb3JtX25hbWVACi0tbGliZGlyID0gJChleGVjX3ByZWZpeCkvbGliCi0taW5jbHVkZWRpciA9ICQocHJlZml4KS9pbmNsdWRlCi0tZGF0YWRpciA9ICQocHJlZml4KS9AREFUQURJUk5BTUVACi0rbGliZGlyID0gQGxpYmRpckAKLStpbmNsdWRlZGlyID0gQGluY2x1ZGVkaXJACi0rZGF0YWRpciA9IEBkYXRhZGlyQAotIGxvY2FsZWRpciA9ICQoZGF0YWRpcikvbG9jYWxlCi0tZ251bG9jYWxlZGlyID0gJChwcmVmaXgpL3NoYXJlL2xvY2FsZQotLWdldHRleHRzcmNkaXIgPSBAZGF0YWRpckAvZ2V0dGV4dC9pbnRsCi0tYWxpYXNwYXRoID0gJChsb2NhbGVkaXIpOi4KLStnZXR0ZXh0c3JjZGlyID0gJChkYXRhZGlyKS9nZXR0ZXh0L2ludGwKLSthbGlhc3BhdGggPSAkKGxvY2FsZWRpcikKLSBzdWJkaXIgPSBpbnRsCi0gCi0gSU5TVEFMTCA9IEBJTlNUQUxMQAotIElOU1RBTExfREFUQSA9IEBJTlNUQUxMX0RBVEFACi0gTUtJTlNUQUxMRElSUyA9IEBNS0lOU1RBTExESVJTQAotK21raW5zdGFsbGRpcnMgPSAkKFNIRUxMKSAkKE1LSU5TVEFMTERJUlMpCi0gCi0tbCA9IEBsQAotK2wgPSBASU5UTF9MSUJUT09MX1NVRkZJWF9QUkVGSVhACi0gCi0gQVIgPSBhcgotIENDID0gQENDQAotIExJQlRPT0wgPSBATElCVE9PTEAKLSBSQU5MSUIgPSBAUkFOTElCQAotK1lBQ0MgPSBASU5UTEJJU09OQCAteSAtZAotK1lGTEFHUyA9IC0tbmFtZS1wcmVmaXg9X19nZXR0ZXh0Ci0gCi0tREVGUyA9IC1ETE9DQUxFRElSPVwiJChsb2NhbGVkaXIpXCIgLURHTlVMT0NBTEVESVI9XCIkKGdudWxvY2FsZWRpcilcIiBcCi0tLURMT0NBTEVfQUxJQVNfUEFUSD1cIiQoYWxpYXNwYXRoKVwiIEBERUZTQAotK0RFRlMgPSAtRExPQ0FMRURJUj1cIiQobG9jYWxlZGlyKVwiIC1ETE9DQUxFX0FMSUFTX1BBVEg9XCIkKGFsaWFzcGF0aClcIiBcCi0rLURMSUJESVI9XCIkKGxpYmRpcilcIiAtRElOX0xJQklOVEwgXAotKy1ERU5BQkxFX1JFTE9DQVRBQkxFPTEgLURJTl9MSUJSQVJZIC1ESU5TVEFMTERJUj1cIiQobGliZGlyKVwiIC1ETk9fWE1BTExPQyBcCi0rLURzZXRfcmVsb2NhdGlvbl9wcmVmaXg9bGliaW50bF9zZXRfcmVsb2NhdGlvbl9wcmVmaXggXAotKy1EcmVsb2NhdGU9bGliaW50bF9yZWxvY2F0ZSBcCi0rLURERVBFTkRTX09OX0xJQklDT05WPTEgQERFRlNACi0gQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACi0gQ0ZMQUdTID0gQENGTEFHU0AKLSBMREZMQUdTID0gQExERkxBR1NACi0rTElCUyA9IEBMSUJTQAotIAotIENPTVBJTEUgPSAkKENDKSAtYyAkKERFRlMpICQoSU5DTFVERVMpICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKSAkKFhDRkxBR1MpCi0gCi0tSEVBREVSUyA9ICQoQ09NSERSUykgbGliZ2V0dGV4dC5oIGxvYWRpbmZvLmgKLS1DT01IRFJTID0gZ2V0dGV4dC5oIGdldHRleHRQLmggaGFzaC1zdHJpbmcuaAotLVNPVVJDRVMgPSAkKENPTVNSQ1MpIGludGwtY29tcGF0LmMgY2F0LWNvbXBhdC5jCi0tQ09NU1JDUyA9IGJpbmR0ZXh0ZG9tLmMgZGNnZXR0ZXh0LmMgZGdldHRleHQuYyBnZXR0ZXh0LmMgXAotLWZpbmRkb21haW4uYyBsb2FkbXNnY2F0LmMgbG9jYWxlYWxpYXMuYyB0ZXh0ZG9tYWluLmMgbDEwbmZsaXN0LmMgXAotLWV4cGxvZGVuYW1lLmMKLS1PQkpFQ1RTID0gQElOVExPQkpTQCBiaW5kdGV4dGRvbS4kbG8gZGNnZXR0ZXh0LiRsbyBkZ2V0dGV4dC4kbG8gZ2V0dGV4dC4kbG8gXAotLWZpbmRkb21haW4uJGxvIGxvYWRtc2djYXQuJGxvIGxvY2FsZWFsaWFzLiRsbyB0ZXh0ZG9tYWluLiRsbyBsMTBuZmxpc3QuJGxvIFwKLS1leHBsb2RlbmFtZS4kbG8KLS1DQVRPQkpTID0gY2F0LWNvbXBhdC4kbG8gLi4vcG8vY2F0LWlkLXRibC4kbG8KLS1HRVRUT0JKUyA9IGludGwtY29tcGF0LiRsbwotLURJU1RGSUxFUy5jb21tb24gPSBDaGFuZ2VMb2cgTWFrZWZpbGUuaW4gbGludXgtbXNnLnNlZCBwbzJ0Ymwuc2VkLmluIFwKLS14b3Blbi1tc2cuc2VkICQoSEVBREVSUykgJChTT1VSQ0VTKQotK0hFQURFUlMgPSBcCi0rICBnbW8uaCBcCi0rICBnZXR0ZXh0UC5oIFwKLSsgIGhhc2gtc3RyaW5nLmggXAotKyAgbG9hZGluZm8uaCBcCi0rICBwbHVyYWwtZXhwLmggXAotKyAgZXZhbC1wbHVyYWwuaCBcCi0rICBsb2NhbGNoYXJzZXQuaCBcCi0rICByZWxvY2F0YWJsZS5oIFwKLSsgIHhzaXplLmggXAotKyAgcHJpbnRmLWFyZ3MuaCBwcmludGYtYXJncy5jIFwKLSsgIHByaW50Zi1wYXJzZS5oIHdwcmludGYtcGFyc2UuaCBwcmludGYtcGFyc2UuYyBcCi0rICB2YXNucHJpbnRmLmggdmFzbndwcmludGYuaCB2YXNucHJpbnRmLmMgXAotKyAgb3MyY29tcGF0LmggXAotKyAgbGliZ251aW50bC5oLmluCi0rU09VUkNFUyA9IFwKLSsgIGJpbmR0ZXh0ZG9tLmMgXAotKyAgZGNnZXR0ZXh0LmMgXAotKyAgZGdldHRleHQuYyBcCi0rICBnZXR0ZXh0LmMgXAotKyAgZmluZGRvbWFpbi5jIFwKLSsgIGxvYWRtc2djYXQuYyBcCi0rICBsb2NhbGVhbGlhcy5jIFwKLSsgIHRleHRkb21haW4uYyBcCi0rICBsMTBuZmxpc3QuYyBcCi0rICBleHBsb2RlbmFtZS5jIFwKLSsgIGRjaWdldHRleHQuYyBcCi0rICBkY25nZXR0ZXh0LmMgXAotKyAgZG5nZXR0ZXh0LmMgXAotKyAgbmdldHRleHQuYyBcCi0rICBwbHVyYWwueSBcCi0rICBwbHVyYWwtZXhwLmMgXAotKyAgbG9jYWxjaGFyc2V0LmMgXAotKyAgcmVsb2NhdGFibGUuYyBcCi0rICBsb2NhbGVuYW1lLmMgXAotKyAgbG9nLmMgXAotKyAgcHJpbnRmLmMgXAotKyAgb3NkZXAuYyBcCi0rICBvczJjb21wYXQuYyBcCi0rICBpbnRsLWNvbXBhdC5jCi0rT0JKRUNUUyA9IFwKLSsgIGJpbmR0ZXh0ZG9tLiRsbyBcCi0rICBkY2dldHRleHQuJGxvIFwKLSsgIGRnZXR0ZXh0LiRsbyBcCi0rICBnZXR0ZXh0LiRsbyBcCi0rICBmaW5kZG9tYWluLiRsbyBcCi0rICBsb2FkbXNnY2F0LiRsbyBcCi0rICBsb2NhbGVhbGlhcy4kbG8gXAotKyAgdGV4dGRvbWFpbi4kbG8gXAotKyAgbDEwbmZsaXN0LiRsbyBcCi0rICBleHBsb2RlbmFtZS4kbG8gXAotKyAgZGNpZ2V0dGV4dC4kbG8gXAotKyAgZGNuZ2V0dGV4dC4kbG8gXAotKyAgZG5nZXR0ZXh0LiRsbyBcCi0rICBuZ2V0dGV4dC4kbG8gXAotKyAgcGx1cmFsLiRsbyBcCi0rICBwbHVyYWwtZXhwLiRsbyBcCi0rICBsb2NhbGNoYXJzZXQuJGxvIFwKLSsgIHJlbG9jYXRhYmxlLiRsbyBcCi0rICBsb2NhbGVuYW1lLiRsbyBcCi0rICBsb2cuJGxvIFwKLSsgIHByaW50Zi4kbG8gXAotKyAgb3NkZXAuJGxvIFwKLSsgIGludGwtY29tcGF0LiRsbwotK0RJU1RGSUxFUy5jb21tb24gPSBNYWtlZmlsZS5pbiBcCi0rY29uZmlnLmNoYXJzZXQgbG9jYWxlLmFsaWFzIHJlZi1hZGQuc2luIHJlZi1kZWwuc2luICQoSEVBREVSUykgJChTT1VSQ0VTKQotK0RJU1RGSUxFUy5nZW5lcmF0ZWQgPSBwbHVyYWwuYwotIERJU1RGSUxFUy5ub3JtYWwgPSBWRVJTSU9OCi0tRElTVEZJTEVTLmdldHRleHQgPSBsaWJpbnRsLmdsaWJjIGludGxoLmluc3QuaW4KLStESVNURklMRVMuZ2V0dGV4dCA9IENPUFlJTkcuTElCLTIuMCBDT1BZSU5HLkxJQi0yLjEgbGliaW50bC5nbGliYyBcCi0rbGliZ251aW50bC5oX3ZtcyBNYWtlZmlsZS52bXMgXAotK2xpYmdudWludGwuaC5tc3ZjLXN0YXRpYyBsaWJnbnVpbnRsLmgubXN2Yy1zaGFyZWQgUkVBRE1FLndvZTMyIE1ha2VmaWxlLm1zdmMKLStESVNURklMRVMub2Jzb2xldGUgPSB4b3Blbi1tc2cuc2VkIGxpbnV4LW1zZy5zZWQgcG8ydGJsLnNlZC5pbiBjYXQtY29tcGF0LmMgXAotK0NPUFlJTkcuTElCLTIgZ2V0dGV4dC5oIGxpYmdldHRleHQuaCBwbHVyYWwtZXZhbC5jIGxpYmdudWludGwuaAotKwotK2FsbDogYWxsLUBVU0VfSU5DTFVERURfTElCSU5UTEAKLSthbGwteWVzOiBsaWJpbnRsLiRsYSBsaWJpbnRsLmggY2hhcnNldC5hbGlhcyByZWYtYWRkLnNlZCByZWYtZGVsLnNlZAotK2FsbC1ubzogYWxsLW5vLUBCVUlMRF9JTkNMVURFRF9MSUJJTlRMQAotK2FsbC1uby15ZXM6IGxpYmdudWludGwuJGxhCi0rYWxsLW5vLW5vOgotKwotK2xpYmludGwuYSBsaWJnbnVpbnRsLmE6ICQoT0JKRUNUUykKLSsJcm0gLWYgJEAKLSsJJChBUikgY3J1ICRAICQoT0JKRUNUUykKLSsJJChSQU5MSUIpICRACi0rCi0rbGliaW50bC5sYSBsaWJnbnVpbnRsLmxhOiAkKE9CSkVDVFMpCi0rCSQoTElCVE9PTCkgLS1tb2RlPWxpbmsgXAotKwkgICQoQ0MpICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKSAkKFhDRkxBR1MpICQoTERGTEFHUykgLW8gJEAgXAotKwkgICQoT0JKRUNUUykgQExUTElCSUNPTlZAICQoTElCUykgLWxjIFwKLSsJICAtdmVyc2lvbi1pbmZvICQoTFRWX0NVUlJFTlQpOiQoTFRWX1JFVklTSU9OKTokKExUVl9BR0UpIFwKLSsJICAtcnBhdGggJChsaWJkaXIpIFwKLSsJICAtbm8tdW5kZWZpbmVkCi0rCi0rIyBMaWJ0b29sJ3MgbGlicmFyeSB2ZXJzaW9uIGluZm9ybWF0aW9uIGZvciBsaWJpbnRsLgotKyMgQmVmb3JlIG1ha2luZyBhIGdldHRleHQgcmVsZWFzZSwgdGhlIGdldHRleHQgbWFpbnRhaW5lciBtdXN0IGNoYW5nZSB0aGlzCi0rIyBhY2NvcmRpbmcgdG8gdGhlIGxpYnRvb2wgZG9jdW1lbnRhdGlvbiwgc2VjdGlvbiAiTGlicmFyeSBpbnRlcmZhY2UgdmVyc2lvbnMiLgotKyMgTWFpbnRhaW5lcnMgb2Ygb3RoZXIgcGFja2FnZXMgdGhhdCBpbmNsdWRlIHRoZSBpbnRsIGRpcmVjdG9yeSBtdXN0ICpub3QqCi0rIyBjaGFuZ2UgdGhlc2UgdmFsdWVzLgotK0xUVl9DVVJSRU5UPTcKLStMVFZfUkVWSVNJT049MAotK0xUVl9BR0U9NAotIAotIC5TVUZGSVhFUzoKLS0uU1VGRklYRVM6IC5jIC5vIC5sbwotKy5TVUZGSVhFUzogLmMgLnkgLm8gLmxvIC5zaW4gLnNlZAotKwotIC5jLm86Ci0gCSQoQ09NUElMRSkgJDwKLS0uYy5sbzoKLS0JJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQ8Ci0gCi0tSU5DTFVERVMgPSAtSS4uIC1JLiAtSSQodG9wX3NyY2RpcikvaW50bCAtSSQodG9wX3NyY2RpcikvbGliCi0rLnkuYzoKLSsJJChZQUNDKSAkKFlGTEFHUykgLS1vdXRwdXQgJEAgJDwKLSsJcm0gLWYgJCouaAotIAotLWFsbDogYWxsLUBVU0VfSU5DTFVERURfTElCSU5UTEAKLStiaW5kdGV4dGRvbS5sbzogJChzcmNkaXIpL2JpbmR0ZXh0ZG9tLmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9iaW5kdGV4dGRvbS5jCi0rZGNnZXR0ZXh0LmxvOiAkKHNyY2RpcikvZGNnZXR0ZXh0LmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9kY2dldHRleHQuYwotK2RnZXR0ZXh0LmxvOiAkKHNyY2RpcikvZGdldHRleHQuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2RnZXR0ZXh0LmMKLStnZXR0ZXh0LmxvOiAkKHNyY2RpcikvZ2V0dGV4dC5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvZ2V0dGV4dC5jCi0rZmluZGRvbWFpbi5sbzogJChzcmNkaXIpL2ZpbmRkb21haW4uYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2ZpbmRkb21haW4uYwotK2xvYWRtc2djYXQubG86ICQoc3JjZGlyKS9sb2FkbXNnY2F0LmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9sb2FkbXNnY2F0LmMKLStsb2NhbGVhbGlhcy5sbzogJChzcmNkaXIpL2xvY2FsZWFsaWFzLmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9sb2NhbGVhbGlhcy5jCi0rdGV4dGRvbWFpbi5sbzogJChzcmNkaXIpL3RleHRkb21haW4uYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL3RleHRkb21haW4uYwotK2wxMG5mbGlzdC5sbzogJChzcmNkaXIpL2wxMG5mbGlzdC5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvbDEwbmZsaXN0LmMKLStleHBsb2RlbmFtZS5sbzogJChzcmNkaXIpL2V4cGxvZGVuYW1lLmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9leHBsb2RlbmFtZS5jCi0rZGNpZ2V0dGV4dC5sbzogJChzcmNkaXIpL2RjaWdldHRleHQuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2RjaWdldHRleHQuYwotK2RjbmdldHRleHQubG86ICQoc3JjZGlyKS9kY25nZXR0ZXh0LmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9kY25nZXR0ZXh0LmMKLStkbmdldHRleHQubG86ICQoc3JjZGlyKS9kbmdldHRleHQuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2RuZ2V0dGV4dC5jCi0rbmdldHRleHQubG86ICQoc3JjZGlyKS9uZ2V0dGV4dC5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvbmdldHRleHQuYwotK3BsdXJhbC5sbzogJChzcmNkaXIpL3BsdXJhbC5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvcGx1cmFsLmMKLStwbHVyYWwtZXhwLmxvOiAkKHNyY2RpcikvcGx1cmFsLWV4cC5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvcGx1cmFsLWV4cC5jCi0rbG9jYWxjaGFyc2V0LmxvOiAkKHNyY2RpcikvbG9jYWxjaGFyc2V0LmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9sb2NhbGNoYXJzZXQuYwotK3JlbG9jYXRhYmxlLmxvOiAkKHNyY2RpcikvcmVsb2NhdGFibGUuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL3JlbG9jYXRhYmxlLmMKLStsb2NhbGVuYW1lLmxvOiAkKHNyY2RpcikvbG9jYWxlbmFtZS5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvbG9jYWxlbmFtZS5jCi0rbG9nLmxvOiAkKHNyY2RpcikvbG9nLmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9sb2cuYwotK3ByaW50Zi5sbzogJChzcmNkaXIpL3ByaW50Zi5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvcHJpbnRmLmMKLStvc2RlcC5sbzogJChzcmNkaXIpL29zZGVwLmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9vc2RlcC5jCi0raW50bC1jb21wYXQubG86ICQoc3JjZGlyKS9pbnRsLWNvbXBhdC5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvaW50bC1jb21wYXQuYwotIAotLWFsbC15ZXM6IGxpYmludGwuJGxhIGludGxoLmluc3QKLS1hbGwtbm86Ci0rcmVmLWFkZC5zZWQ6ICQoc3JjZGlyKS9yZWYtYWRkLnNpbgotKwlzZWQgLWUgJy9eIy9kJyAtZSAncy9AJydQQUNLQUdFJydAL0BQQUNLQUdFQC9nJyAkKHNyY2RpcikvcmVmLWFkZC5zaW4gPiB0LXJlZi1hZGQuc2VkCi0rCW12IHQtcmVmLWFkZC5zZWQgcmVmLWFkZC5zZWQKLStyZWYtZGVsLnNlZDogJChzcmNkaXIpL3JlZi1kZWwuc2luCi0rCXNlZCAtZSAnL14jL2QnIC1lICdzL0AnJ1BBQ0tBR0UnJ0AvQFBBQ0tBR0VAL2cnICQoc3JjZGlyKS9yZWYtZGVsLnNpbiA+IHQtcmVmLWRlbC5zZWQKLSsJbXYgdC1yZWYtZGVsLnNlZCByZWYtZGVsLnNlZAotIAotLWxpYmludGwuYTogJChPQkpFQ1RTKQotLQlybSAtZiAkQAotLQkkKEFSKSBjcnUgJEAgJChPQkpFQ1RTKQotLQkkKFJBTkxJQikgJEAKLStJTkNMVURFUyA9IC1JLiAtSSQoc3JjZGlyKSAtSS4uCi0gCi0tbGliaW50bC5sYTogJChPQkpFQ1RTKQotLQkkKExJQlRPT0wpIC0tbW9kZT1saW5rICQoQ0MpICQoTERGTEFHUykgLW8gJEAgJChPQkpFQ1RTKSBcCi0tCQkgICAtdmVyc2lvbi1pbmZvIDE6MCAtcnBhdGggJChsaWJkaXIpCi0rbGliZ251aW50bC5oOiAkKHNyY2RpcikvbGliZ251aW50bC5oLmluCi0rCXNlZCAtZSAncyxAJydIQVZFX1BPU0lYX1BSSU5URicnQCxASEFWRV9QT1NJWF9QUklOVEZALGcnIFwKLSsJICAgIC1lICdzLEAnJ0hBVkVfQVNQUklOVEYnJ0AsQEhBVkVfQVNQUklOVEZALGcnIFwKLSsJICAgIC1lICdzLEAnJ0hBVkVfU05QUklOVEYnJ0AsQEhBVkVfU05QUklOVEZALGcnIFwKLSsJICAgIC1lICdzLEAnJ0hBVkVfV1BSSU5URicnQCxASEFWRV9XUFJJTlRGQCxnJyBcCi0rCSAgPCAkKHNyY2RpcikvbGliZ251aW50bC5oLmluID4gbGliZ251aW50bC5oCi0gCi0tLi4vcG8vY2F0LWlkLXRibC4kbG86IC4uL3BvL2NhdC1pZC10YmwuYyAkKHRvcF9zcmNkaXIpL3BvLyQoUEFDS0FHRSkucG90Ci0tCWNkIC4uL3BvICYmICQoTUFLRSkgY2F0LWlkLXRibC4kbG8KLStsaWJpbnRsLmg6IGxpYmdudWludGwuaAotKwljcCBsaWJnbnVpbnRsLmggbGliaW50bC5oCi0gCi0tY2hlY2s6IGFsbAotK2NoYXJzZXQuYWxpYXM6ICQoc3JjZGlyKS9jb25maWcuY2hhcnNldAotKwkkKFNIRUxMKSAkKHNyY2RpcikvY29uZmlnLmNoYXJzZXQgJ0Bob3N0QCcgPiB0LSRACi0rCW12IHQtJEAgJEAKLSAKLS0jIFRoaXMgaW5zdGFsbGF0aW9uIGdvYWwgaXMgb25seSB1c2VkIGluIEdOVSBnZXR0ZXh0LiAgUGFja2FnZXMgd2hpY2gKLS0jIG9ubHkgdXNlIHRoZSBsaWJyYXJ5IHNob3VsZCB1c2UgaW5zdGFsbCBpbnN0ZWFkLgotK2NoZWNrOiBhbGwKLSAKLSAjIFdlIG11c3Qgbm90IGluc3RhbGwgdGhlIGxpYmludGwuaC9saWJpbnRsLmEgZmlsZXMgaWYgd2UgYXJlIG9uIGEKLS0jIHN5c3RlbSB3aGljaCBoYXMgdGhlIGdldHRleHQoKSBmdW5jdGlvbiBpbiBpdHMgQyBsaWJyYXJ5IG9yIGluIGEKLS0jIHNlcGFyYXRlIGxpYnJhcnkgb3IgdXNlIHRoZSBjYXRnZXRzIGludGVyZmFjZS4gIEEgc3BlY2lhbCBjYXNlIGlzCi0tIyB3aGVyZSBjb25maWd1cmUgZm91bmQgYSBwcmV2aW91c2x5IGluc3RhbGxlZCBHTlUgZ2V0dGV4dCBsaWJyYXJ5LgotKyMgc3lzdGVtIHdoaWNoIGhhcyB0aGUgR05VIGdldHRleHQoKSBmdW5jdGlvbiBpbiBpdHMgQyBsaWJyYXJ5IG9yIGluIGEKLSsjIHNlcGFyYXRlIGxpYnJhcnkuCi0gIyBJZiB5b3Ugd2FudCB0byB1c2UgdGhlIG9uZSB3aGljaCBjb21lcyB3aXRoIHRoaXMgdmVyc2lvbiBvZiB0aGUKLSAjIHBhY2thZ2UsIHlvdSBoYXZlIHRvIHVzZSBgY29uZmlndXJlIC0td2l0aC1pbmNsdWRlZC1nZXR0ZXh0Jy4KLSBpbnN0YWxsOiBpbnN0YWxsLWV4ZWMgaW5zdGFsbC1kYXRhCi0gaW5zdGFsbC1leGVjOiBhbGwKLS0JaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dCIgXAotLQkgICAmJiB0ZXN0ICdASU5UTE9CSlNAJyA9ICckKEdFVFRPQkpTKSc7IHRoZW4gXAotLQkgIGlmIHRlc3QgLXIgJChNS0lOU1RBTExESVJTKTsgdGhlbiBcCi0tCSAgICAkKE1LSU5TVEFMTERJUlMpICQobGliZGlyKSAkKGluY2x1ZGVkaXIpOyBcCi0tCSAgZWxzZSBcCi0tCSAgICAkKHRvcF9zcmNkaXIpL21raW5zdGFsbGRpcnMgJChsaWJkaXIpICQoaW5jbHVkZWRpcik7IFwKLSsJaWYgeyB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXJ1bnRpbWUiIHx8IHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB9IFwKLSsJICAgJiYgdGVzdCAnQFVTRV9JTkNMVURFRF9MSUJJTlRMQCcgPSB5ZXM7IHRoZW4gXAotKwkgICQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQobGliZGlyKSAkKERFU1RESVIpJChpbmNsdWRlZGlyKTsgXAotKwkgICQoSU5TVEFMTF9EQVRBKSBsaWJpbnRsLmggJChERVNURElSKSQoaW5jbHVkZWRpcikvbGliaW50bC5oOyBcCi0rCSAgJChMSUJUT09MKSAtLW1vZGU9aW5zdGFsbCBcCi0rCSAgICAkKElOU1RBTExfREFUQSkgbGliaW50bC4kbGEgJChERVNURElSKSQobGliZGlyKS9saWJpbnRsLiRsYTsgXAotKwkgIGlmIHRlc3QgIkBSRUxPQ0FUQUJMRUAiID0geWVzOyB0aGVuIFwKLSsJICAgIGRlcGVuZGVuY2llcz1gc2VkIC1uIC1lICdzLF5kZXBlbmRlbmN5X2xpYnM9XCguKlwpLFwxLHAnIDwgJChERVNURElSKSQobGliZGlyKS9saWJpbnRsLmxhIHwgc2VkIC1lICJzLF4nLCwiIC1lICJzLCdcJCQsLCJgOyBcCi0rCSAgICBpZiB0ZXN0IC1uICIkJGRlcGVuZGVuY2llcyI7IHRoZW4gXAotKwkgICAgICBybSAtZiAkKERFU1RESVIpJChsaWJkaXIpL2xpYmludGwubGE7IFwKLSsJICAgIGZpOyBcCi0gCSAgZmk7IFwKLS0JICAkKElOU1RBTExfREFUQSkgaW50bGguaW5zdCAkKGluY2x1ZGVkaXIpL2xpYmludGwuaDsgXAotLQkgICQoSU5TVEFMTF9EQVRBKSBsaWJpbnRsLmEgJChsaWJkaXIpL2xpYmludGwuYTsgXAotIAllbHNlIFwKLSAJICA6IDsgXAotIAlmaQotLWluc3RhbGwtZGF0YTogYWxsCi0tCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQiOyB0aGVuIFwKLS0JICBpZiB0ZXN0IC1yICQoTUtJTlNUQUxMRElSUyk7IHRoZW4gXAotLQkgICAgJChNS0lOU1RBTExESVJTKSAkKGdldHRleHRzcmNkaXIpOyBcCi0rCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiIFwKLSsJICAgJiYgdGVzdCAnQFVTRV9JTkNMVURFRF9MSUJJTlRMQCcgPSBubzsgdGhlbiBcCi0rCSAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChsaWJkaXIpOyBcCi0rCSAgJChMSUJUT09MKSAtLW1vZGU9aW5zdGFsbCBcCi0rCSAgICAkKElOU1RBTExfREFUQSkgbGliZ251aW50bC4kbGEgJChERVNURElSKSQobGliZGlyKS9saWJnbnVpbnRsLiRsYTsgXAotKwkgIHJtIC1mICQoREVTVERJUikkKGxpYmRpcikvcHJlbG9hZGFibGVfbGliaW50bC5zbzsgXAotKwkgICQoSU5TVEFMTF9EQVRBKSAkKERFU1RESVIpJChsaWJkaXIpL2xpYmdudWludGwuc28gJChERVNURElSKSQobGliZGlyKS9wcmVsb2FkYWJsZV9saWJpbnRsLnNvOyBcCi0rCSAgJChMSUJUT09MKSAtLW1vZGU9dW5pbnN0YWxsIFwKLSsJICAgIHJtIC1mICQoREVTVERJUikkKGxpYmRpcikvbGliZ251aW50bC4kbGE7IFwKLSsJZWxzZSBcCi0rCSAgOiA7IFwKLSsJZmkKLSsJaWYgdGVzdCAnQFVTRV9JTkNMVURFRF9MSUJJTlRMQCcgPSB5ZXM7IHRoZW4gXAotKwkgIHRlc3QgQEdMSUJDMjFAICE9IG5vIHx8ICQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQobGliZGlyKTsgXAotKwkgIHRlbXA9JChERVNURElSKSQobGliZGlyKS90LWNoYXJzZXQuYWxpYXM7IFwKLSsJICBkZXN0PSQoREVTVERJUikkKGxpYmRpcikvY2hhcnNldC5hbGlhczsgXAotKwkgIGlmIHRlc3QgLWYgJChERVNURElSKSQobGliZGlyKS9jaGFyc2V0LmFsaWFzOyB0aGVuIFwKLSsJICAgIG9yaWc9JChERVNURElSKSQobGliZGlyKS9jaGFyc2V0LmFsaWFzOyBcCi0rCSAgICBzZWQgLWYgcmVmLWFkZC5zZWQgJCRvcmlnID4gJCR0ZW1wOyBcCi0rCSAgICAkKElOU1RBTExfREFUQSkgJCR0ZW1wICQkZGVzdDsgXAotKwkgICAgcm0gLWYgJCR0ZW1wOyBcCi0gCSAgZWxzZSBcCi0tCSAgICAkKHRvcF9zcmNkaXIpL21raW5zdGFsbGRpcnMgJChnZXR0ZXh0c3JjZGlyKTsgXAotKwkgICAgaWYgdGVzdCBAR0xJQkMyMUAgPSBubzsgdGhlbiBcCi0rCSAgICAgIG9yaWc9Y2hhcnNldC5hbGlhczsgXAotKwkgICAgICBzZWQgLWYgcmVmLWFkZC5zZWQgJCRvcmlnID4gJCR0ZW1wOyBcCi0rCSAgICAgICQoSU5TVEFMTF9EQVRBKSAkJHRlbXAgJCRkZXN0OyBcCi0rCSAgICAgIHJtIC1mICQkdGVtcDsgXAotKwkgICAgZmk7IFwKLSAJICBmaTsgXAotLQkgICQoSU5TVEFMTF9EQVRBKSBWRVJTSU9OICQoZ2V0dGV4dHNyY2RpcikvVkVSU0lPTjsgXAotLQkgIGRpc3RzPSIkKERJU1RGSUxFUy5jb21tb24pIjsgXAotKwkgICQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQobG9jYWxlZGlyKTsgXAotKwkgIHRlc3QgLWYgJChERVNURElSKSQobG9jYWxlZGlyKS9sb2NhbGUuYWxpYXMgXAotKwkgICAgJiYgb3JpZz0kKERFU1RESVIpJChsb2NhbGVkaXIpL2xvY2FsZS5hbGlhcyBcCi0rCSAgICB8fCBvcmlnPSQoc3JjZGlyKS9sb2NhbGUuYWxpYXM7IFwKLSsJICB0ZW1wPSQoREVTVERJUikkKGxvY2FsZWRpcikvdC1sb2NhbGUuYWxpYXM7IFwKLSsJICBkZXN0PSQoREVTVERJUikkKGxvY2FsZWRpcikvbG9jYWxlLmFsaWFzOyBcCi0rCSAgc2VkIC1mIHJlZi1hZGQuc2VkICQkb3JpZyA+ICQkdGVtcDsgXAotKwkgICQoSU5TVEFMTF9EQVRBKSAkJHRlbXAgJCRkZXN0OyBcCi0rCSAgcm0gLWYgJCR0ZW1wOyBcCi0rCWVsc2UgXAotKwkgIDogOyBcCi0rCWZpCi0raW5zdGFsbC1kYXRhOiBhbGwKLSsJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IHRoZW4gXAotKwkgICQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQoZ2V0dGV4dHNyY2Rpcik7IFwKLSsJICAkKElOU1RBTExfREFUQSkgVkVSU0lPTiAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKS9WRVJTSU9OOyBcCi0rCSAgJChJTlNUQUxMX0RBVEEpIENoYW5nZUxvZy5pbnN0ICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpL0NoYW5nZUxvZzsgXAotKwkgIGRpc3RzPSJDT1BZSU5HLkxJQi0yLjAgQ09QWUlORy5MSUItMi4xICQoRElTVEZJTEVTLmNvbW1vbikiOyBcCi0gCSAgZm9yIGZpbGUgaW4gJCRkaXN0czsgZG8gXAotLQkgICAgJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS8kJGZpbGUgJChnZXR0ZXh0c3JjZGlyKS8kJGZpbGU7IFwKLSsJICAgICQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvJCRmaWxlIFwKLSsJCQkgICAgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCi0gCSAgZG9uZTsgXAotKwkgIGNobW9kIGEreCAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKS9jb25maWcuY2hhcnNldDsgXAotKwkgIGRpc3RzPSIkKERJU1RGSUxFUy5nZW5lcmF0ZWQpIjsgXAotKwkgIGZvciBmaWxlIGluICQkZGlzdHM7IGRvIFwKLSsJICAgIGlmIHRlc3QgLWYgJCRmaWxlOyB0aGVuIGRpcj0uOyBlbHNlIGRpcj0kKHNyY2Rpcik7IGZpOyBcCi0rCSAgICAkKElOU1RBTExfREFUQSkgJCRkaXIvJCRmaWxlIFwKLSsJCQkgICAgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCi0rCSAgZG9uZTsgXAotKwkgIGRpc3RzPSIkKERJU1RGSUxFUy5vYnNvbGV0ZSkiOyBcCi0rCSAgZm9yIGZpbGUgaW4gJCRkaXN0czsgZG8gXAotKwkgICAgcm0gLWYgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCi0rCSAgZG9uZTsgXAotKwllbHNlIFwKLSsJICA6IDsgXAotKwlmaQotKwotK2luc3RhbGwtc3RyaXA6IGluc3RhbGwKLSsKLStpbnN0YWxsZGlyczoKLSsJaWYgeyB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXJ1bnRpbWUiIHx8IHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB9IFwKLSsJICAgJiYgdGVzdCAnQFVTRV9JTkNMVURFRF9MSUJJTlRMQCcgPSB5ZXM7IHRoZW4gXAotKwkgICQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQobGliZGlyKSAkKERFU1RESVIpJChpbmNsdWRlZGlyKTsgXAotKwllbHNlIFwKLSsJICA6IDsgXAotKwlmaQotKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIiBcCi0rCSAgICYmIHRlc3QgJ0BVU0VfSU5DTFVERURfTElCSU5UTEAnID0gbm87IHRoZW4gXAotKwkgICQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQobGliZGlyKTsgXAotKwllbHNlIFwKLSsJICA6IDsgXAotKwlmaQotKwlpZiB0ZXN0ICdAVVNFX0lOQ0xVREVEX0xJQklOVExAJyA9IHllczsgdGhlbiBcCi0rCSAgdGVzdCBAR0xJQkMyMUAgIT0gbm8gfHwgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChsaWJkaXIpOyBcCi0rCSAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChsb2NhbGVkaXIpOyBcCi0rCWVsc2UgXAotKwkgIDogOyBcCi0rCWZpCi0rCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKLSsJICAkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpOyBcCi0gCWVsc2UgXAotIAkgIDogOyBcCi0gCWZpCi1AQCAtMTQzLDIyICszNjcsNzYgQEAKLSBpbnN0YWxsY2hlY2s6Ci0gCi0gdW5pbnN0YWxsOgotLQlkaXN0cz0iJChESVNURklMRVMuY29tbW9uKSI7IFwKLS0JZm9yIGZpbGUgaW4gJCRkaXN0czsgZG8gXAotLQkgIHJtIC1mICQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCi0tCWRvbmUKLSsJaWYgeyB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXJ1bnRpbWUiIHx8IHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB9IFwKLSsJICAgJiYgdGVzdCAnQFVTRV9JTkNMVURFRF9MSUJJTlRMQCcgPSB5ZXM7IHRoZW4gXAotKwkgIHJtIC1mICQoREVTVERJUikkKGluY2x1ZGVkaXIpL2xpYmludGwuaDsgXAotKwkgICQoTElCVE9PTCkgLS1tb2RlPXVuaW5zdGFsbCBcCi0rCSAgICBybSAtZiAkKERFU1RESVIpJChsaWJkaXIpL2xpYmludGwuJGxhOyBcCi0rCWVsc2UgXAotKwkgIDogOyBcCi0rCWZpCi0rCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiIFwKLSsJICAgJiYgdGVzdCAnQFVTRV9JTkNMVURFRF9MSUJJTlRMQCcgPSBubzsgdGhlbiBcCi0rCSAgcm0gLWYgJChERVNURElSKSQobGliZGlyKS9wcmVsb2FkYWJsZV9saWJpbnRsLnNvOyBcCi0rCWVsc2UgXAotKwkgIDogOyBcCi0rCWZpCi0rCWlmIHRlc3QgJ0BVU0VfSU5DTFVERURfTElCSU5UTEAnID0geWVzOyB0aGVuIFwKLSsJICBpZiB0ZXN0IC1mICQoREVTVERJUikkKGxpYmRpcikvY2hhcnNldC5hbGlhczsgdGhlbiBcCi0rCSAgICB0ZW1wPSQoREVTVERJUikkKGxpYmRpcikvdC1jaGFyc2V0LmFsaWFzOyBcCi0rCSAgICBkZXN0PSQoREVTVERJUikkKGxpYmRpcikvY2hhcnNldC5hbGlhczsgXAotKwkgICAgc2VkIC1mIHJlZi1kZWwuc2VkICQkZGVzdCA+ICQkdGVtcDsgXAotKwkgICAgaWYgZ3JlcCAnXiMgUGFja2FnZXMgdXNpbmcgdGhpcyBmaWxlOiAkJCcgJCR0ZW1wID4gL2Rldi9udWxsOyB0aGVuIFwKLSsJICAgICAgcm0gLWYgJCRkZXN0OyBcCi0rCSAgICBlbHNlIFwKLSsJICAgICAgJChJTlNUQUxMX0RBVEEpICQkdGVtcCAkJGRlc3Q7IFwKLSsJICAgIGZpOyBcCi0rCSAgICBybSAtZiAkJHRlbXA7IFwKLSsJICBmaTsgXAotKwkgIGlmIHRlc3QgLWYgJChERVNURElSKSQobG9jYWxlZGlyKS9sb2NhbGUuYWxpYXM7IHRoZW4gXAotKwkgICAgdGVtcD0kKERFU1RESVIpJChsb2NhbGVkaXIpL3QtbG9jYWxlLmFsaWFzOyBcCi0rCSAgICBkZXN0PSQoREVTVERJUikkKGxvY2FsZWRpcikvbG9jYWxlLmFsaWFzOyBcCi0rCSAgICBzZWQgLWYgcmVmLWRlbC5zZWQgJCRkZXN0ID4gJCR0ZW1wOyBcCi0rCSAgICBpZiBncmVwICdeIyBQYWNrYWdlcyB1c2luZyB0aGlzIGZpbGU6ICQkJyAkJHRlbXAgPiAvZGV2L251bGw7IHRoZW4gXAotKwkgICAgICBybSAtZiAkJGRlc3Q7IFwKLSsJICAgIGVsc2UgXAotKwkgICAgICAkKElOU1RBTExfREFUQSkgJCR0ZW1wICQkZGVzdDsgXAotKwkgICAgZmk7IFwKLSsJICAgIHJtIC1mICQkdGVtcDsgXAotKwkgIGZpOyBcCi0rCWVsc2UgXAotKwkgIDogOyBcCi0rCWZpCi0rCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKLSsJICBmb3IgZmlsZSBpbiBWRVJTSU9OIENoYW5nZUxvZyBDT1BZSU5HLkxJQi0yLjAgQ09QWUlORy5MSUItMi4xICQoRElTVEZJTEVTLmNvbW1vbikgJChESVNURklMRVMuZ2VuZXJhdGVkKTsgZG8gXAotKwkgICAgcm0gLWYgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCi0rCSAgZG9uZTsgXAotKwllbHNlIFwKLSsJICA6IDsgXAotKwlmaQotIAotLWluZm8gZHZpOgotK2luZm8gZHZpIHBzIHBkZiBodG1sOgotIAotLSQoT0JKRUNUUyk6IC4uL2NvbmZpZy5oIGxpYmdldHRleHQuaAotLWJpbmR0ZXh0ZG9tLiRsbyBmaW5kZG9tYWluLiRsbyBsb2FkbXNnY2F0LiRsbzogZ2V0dGV4dFAuaCBnZXR0ZXh0LmggbG9hZGluZm8uaAotLWRjZ2V0dGV4dC4kbG86IGdldHRleHRQLmggZ2V0dGV4dC5oIGhhc2gtc3RyaW5nLmggbG9hZGluZm8uaAotKyQoT0JKRUNUUyk6IC4uL2NvbmZpZy5oIGxpYmdudWludGwuaAotK2JpbmR0ZXh0ZG9tLiRsbyBkY2dldHRleHQuJGxvIGRjaWdldHRleHQuJGxvIGRjbmdldHRleHQuJGxvIGRnZXR0ZXh0LiRsbyBkbmdldHRleHQuJGxvIGZpbmRkb21haW4uJGxvIGdldHRleHQuJGxvIGludGwtY29tcGF0LiRsbyBsb2FkbXNnY2F0LiRsbyBsb2NhbGVhbGlhcy4kbG8gbmdldHRleHQuJGxvIHRleHRkb21haW4uJGxvOiAkKHNyY2RpcikvZ2V0dGV4dFAuaCAkKHNyY2RpcikvZ21vLmggJChzcmNkaXIpL2xvYWRpbmZvLmgKLStkY2lnZXR0ZXh0LiRsbyBsb2FkbXNnY2F0LiRsbzogJChzcmNkaXIpL2hhc2gtc3RyaW5nLmgKLStleHBsb2RlbmFtZS4kbG8gbDEwbmZsaXN0LiRsbzogJChzcmNkaXIpL2xvYWRpbmZvLmgKLStkY2lnZXR0ZXh0LiRsbyBsb2FkbXNnY2F0LiRsbyBwbHVyYWwuJGxvIHBsdXJhbC1leHAuJGxvOiAkKHNyY2RpcikvcGx1cmFsLWV4cC5oCi0rZGNpZ2V0dGV4dC4kbG86ICQoc3JjZGlyKS9ldmFsLXBsdXJhbC5oCi0rbG9jYWxjaGFyc2V0LiRsbzogJChzcmNkaXIpL2xvY2FsY2hhcnNldC5oCi0rbG9jYWxlYWxpYXMuJGxvIGxvY2FsY2hhcnNldC4kbG8gcmVsb2NhdGFibGUuJGxvOiAkKHNyY2RpcikvcmVsb2NhdGFibGUuaAotK3ByaW50Zi4kbG86ICQoc3JjZGlyKS9wcmludGYtYXJncy5oICQoc3JjZGlyKS9wcmludGYtYXJncy5jICQoc3JjZGlyKS9wcmludGYtcGFyc2UuaCAkKHNyY2Rpcikvd3ByaW50Zi1wYXJzZS5oICQoc3JjZGlyKS94c2l6ZS5oICQoc3JjZGlyKS9wcmludGYtcGFyc2UuYyAkKHNyY2RpcikvdmFzbnByaW50Zi5oICQoc3JjZGlyKS92YXNud3ByaW50Zi5oICQoc3JjZGlyKS92YXNucHJpbnRmLmMKLSAKLSB0YWdzOiBUQUdTCi0gCi0gVEFHUzogJChIRUFERVJTKSAkKFNPVVJDRVMpCi0gCWhlcmU9YHB3ZGA7IGNkICQoc3JjZGlyKSAmJiBldGFncyAtbyAkJGhlcmUvVEFHUyAkKEhFQURFUlMpICQoU09VUkNFUykKLSAKLStjdGFnczogQ1RBR1MKLSsKLStDVEFHUzogJChIRUFERVJTKSAkKFNPVVJDRVMpCi0rCWhlcmU9YHB3ZGA7IGNkICQoc3JjZGlyKSAmJiBjdGFncyAtbyAkJGhlcmUvQ1RBR1MgJChIRUFERVJTKSAkKFNPVVJDRVMpCi0rCi0gaWQ6IElECi0gCi0gSUQ6ICQoSEVBREVSUykgJChTT1VSQ0VTKQotQEAgLTE2NiwxMiArNDQ0LDE5IEBACi0gCi0gCi0gbW9zdGx5Y2xlYW46Ci0tCXJtIC1mICouYSAqLm8gKi5sbyBjb3JlIGNvcmUuKgotKwlybSAtZiAqLmEgKi5sYSAqLm8gKi5vYmogKi5sbyBjb3JlIGNvcmUuKgotKwlybSAtZiBsaWJnbnVpbnRsLmggbGliaW50bC5oIGNoYXJzZXQuYWxpYXMgcmVmLWFkZC5zZWQgcmVmLWRlbC5zZWQKLSsJcm0gLWYgLXIgLmxpYnMgX2xpYnMKLSAKLSBjbGVhbjogbW9zdGx5Y2xlYW4KLSAKLSBkaXN0Y2xlYW46IGNsZWFuCi0tCXJtIC1mIE1ha2VmaWxlIElEIFRBR1MgcG8ybXNnLnNlZCBwbzJ0Ymwuc2VkIGxpYmludGwuaAotKwlybSAtZiBNYWtlZmlsZSBJRCBUQUdTCi0rCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtcnVudGltZSIgfHwgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IHRoZW4gXAotKwkgIHJtIC1mIENoYW5nZUxvZy5pbnN0ICQoRElTVEZJTEVTLm5vcm1hbCk7IFwKLSsJZWxzZSBcCi0rCSAgOiA7IFwKLSsJZmkKLSAKLSBtYWludGFpbmVyLWNsZWFuOiBkaXN0Y2xlYW4KLSAJQGVjaG8gIlRoaXMgY29tbWFuZCBpcyBpbnRlbmRlZCBmb3IgbWFpbnRhaW5lcnMgdG8gdXNlOyIKLUBAIC0xODEsMzMgKzQ2NiwyNyBAQAotICMgR05VIGdldHRleHQgbmVlZHMgbm90IGNvbnRhaW4gdGhlIGZpbGUgYFZFUlNJT04nIGJ1dCBjb250YWlucyBzb21lCi0gIyBvdGhlciBmaWxlcyB3aGljaCBzaG91bGQgbm90IGJlIGRpc3RyaWJ1dGVkIGluIG90aGVyIHBhY2thZ2VzLgotIGRpc3RkaXIgPSAuLi8kKFBBQ0tBR0UpLSQoVkVSU0lPTikvJChzdWJkaXIpCi0tZGlzdCBkaXN0ZGlyOiBNYWtlZmlsZSAkKERJU1RGSUxFUykKLS0JaWYgdGVzdCAiJChQQUNLQUdFKSIgPSBnZXR0ZXh0OyB0aGVuIFwKLS0JICBhZGRpdGlvbmFsPSIkKERJU1RGSUxFUy5nZXR0ZXh0KSI7IFwKLStkaXN0IGRpc3RkaXI6IE1ha2VmaWxlCi0rCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKLSsJICA6IDsgXAotIAllbHNlIFwKLS0JICBhZGRpdGlvbmFsPSIkKERJU1RGSUxFUy5ub3JtYWwpIjsgXAotLQlmaTsgXAotLQlmb3IgZmlsZSBpbiAkKERJU1RGSUxFUy5jb21tb24pICQkYWRkaXRpb25hbDsgZG8gXAotLQkgIGxuICQoc3JjZGlyKS8kJGZpbGUgJChkaXN0ZGlyKSAyPiAvZGV2L251bGwgXAotLQkgICAgfHwgY3AgLXAgJChzcmNkaXIpLyQkZmlsZSAkKGRpc3RkaXIpOyBcCi0tCWRvbmUKLS0KLS1kaXN0LWxpYmM6Ci0tCXRhciB6Y3ZmIGludGwtZ2xpYmMudGFyLmd6ICQoQ09NU1JDUykgJChDT01IRFJTKSBsaWJpbnRsLmguZ2xpYmMKLS0KLS1NYWtlZmlsZTogTWFrZWZpbGUuaW4gLi4vY29uZmlnLnN0YXR1cwotLQljZCAuLiBcCi0tCSAgJiYgQ09ORklHX0ZJTEVTPSQoc3ViZGlyKS8kQCBDT05GSUdfSEVBREVSUz0gJChTSEVMTCkgLi9jb25maWcuc3RhdHVzCi0rCSAgaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC1ydW50aW1lIjsgdGhlbiBcCi0rCSAgICBhZGRpdGlvbmFsPSIkKERJU1RGSUxFUy5nZXR0ZXh0KSI7IFwKLSsJICBlbHNlIFwKLSsJICAgIGFkZGl0aW9uYWw9IiQoRElTVEZJTEVTLm5vcm1hbCkiOyBcCi0rCSAgZmk7IFwKLSsJICAkKE1BS0UpICQoRElTVEZJTEVTLmNvbW1vbikgJChESVNURklMRVMuZ2VuZXJhdGVkKSAkJGFkZGl0aW9uYWw7IFwKLSsJICBmb3IgZmlsZSBpbiBDaGFuZ2VMb2cgJChESVNURklMRVMuY29tbW9uKSAkKERJU1RGSUxFUy5nZW5lcmF0ZWQpICQkYWRkaXRpb25hbDsgZG8gXAotKwkgICAgaWYgdGVzdCAtZiAkJGZpbGU7IHRoZW4gZGlyPS47IGVsc2UgZGlyPSQoc3JjZGlyKTsgZmk7IFwKLSsJICAgIGNwIC1wICQkZGlyLyQkZmlsZSAkKGRpc3RkaXIpOyBcCi0rCSAgZG9uZTsgXAotKwlmaQotIAotLSMgVGhlIGRlcGVuZGVuY3kgZm9yIGludGxoLmluc3QgaXMgZGlmZmVyZW50IGluIGdldHRleHQgYW5kIGFsbCBvdGhlcgotLSMgcGFja2FnZXMuICBCZWNhdXNlIHdlIGNhbm5vdCB5b3UgR05VIG1ha2UgZmVhdHVyZXMgd2UgaGF2ZSB0byBzb2x2ZQotLSMgdGhlIHByb2JsZW0gd2hpbGUgcmV3cml0aW5nIE1ha2VmaWxlLmluLgotLUBHVF9ZRVNAaW50bGguaW5zdDogaW50bGguaW5zdC5pbiAuLi9jb25maWcuc3RhdHVzCi0tQEdUX1lFU0AJY2QgLi4gXAotLUBHVF9ZRVNACSYmIENPTkZJR19GSUxFUz0kKHN1YmRpcikvJEAgQ09ORklHX0hFQURFUlM9IFwKLS1AR1RfWUVTQAkgICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cwotLUBHVF9OT0AuUEhPTlk6IGludGxoLmluc3QKLS1AR1RfTk9AaW50bGguaW5zdDoKLStNYWtlZmlsZTogJChzcmNkaXIpL01ha2VmaWxlLmluICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCi0rCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMKLSsjIFRoaXMgd291bGQgYmUgbW9yZSBlZmZpY2llbnQsIGJ1dCBkb2Vzbid0IHdvcmsgYW55IG1vcmUgd2l0aCBhdXRvY29uZi0yLjU3LAotKyMgd2hlbiBBQ19DT05GSUdfRklMRVMoW2ludGwvTWFrZWZpbGU6c29tZWRpci9NYWtlZmlsZS5pbl0pIGlzIHVzZWQuCi0rIwljZCAkKHRvcF9idWlsZGRpcikgJiYgQ09ORklHX0ZJTEVTPSQoc3ViZGlyKS8kQCBDT05GSUdfSEVBREVSUz0gJChTSEVMTCkgLi9jb25maWcuc3RhdHVzCi0gCi0gIyBUZWxsIHZlcnNpb25zIFszLjU5LDMuNjMpIG9mIEdOVSBtYWtlIG5vdCB0byBleHBvcnQgYWxsIHZhcmlhYmxlcy4KLSAjIE90aGVyd2lzZSBhIHN5c3RlbSBsaW1pdCAoZm9yIFN5c1YgYXQgbGVhc3QpIG1heSBiZSBleGNlZWRlZC4KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9uZ2V0dGV4dC5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL25nZXR0ZXh0LmMJMjAwNC0wOS0xMiAxNDo0MDozNC41MzM3MjEwMzIgLTA0MDAKLUBAIC0wLDAgKzEsNjUgQEAKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBuZ2V0dGV4dCgzKSBmdW5jdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTcsIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpZmRlZiBfTElCQwotKyMgZGVmaW5lIF9fbmVlZF9OVUxMCi0rIyBpbmNsdWRlIDxzdGRkZWYuaD4KLSsjZWxzZQotKyMgaW5jbHVkZSA8c3RkbGliLmg+CQkvKiBKdXN0IGZvciBOVUxMLiAgKi8KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLSsjaWZkZWYgX0xJQkMKLSsjIGluY2x1ZGUgPGxpYmludGwuaD4KLSsjZWxzZQotKyMgaW5jbHVkZSAibGliZ251aW50bC5oIgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxsb2NhbGUuaD4KLSsKLSsvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0rCi0rLyogTmFtZXMgZm9yIHRoZSBsaWJpbnRsIGZ1bmN0aW9ucyBhcmUgYSBwcm9ibGVtLiAgVGhleSBtdXN0IG5vdCBjbGFzaAotKyAgIHdpdGggZXhpc3RpbmcgbmFtZXMgYW5kIHRoZXkgc2hvdWxkIGZvbGxvdyBBTlNJIEMuICBCdXQgdGhpcyBzb3VyY2UKLSsgICBjb2RlIGlzIGFsc28gdXNlZCBpbiBHTlUgQyBMaWJyYXJ5IHdoZXJlIHRoZSBuYW1lcyBoYXZlIGEgX18KLSsgICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLwotKyNpZmRlZiBfTElCQwotKyMgZGVmaW5lIE5HRVRURVhUIF9fbmdldHRleHQKLSsjIGRlZmluZSBEQ05HRVRURVhUIF9fZGNuZ2V0dGV4dAotKyNlbHNlCi0rIyBkZWZpbmUgTkdFVFRFWFQgbGliaW50bF9uZ2V0dGV4dAotKyMgZGVmaW5lIERDTkdFVFRFWFQgbGliaW50bF9kY25nZXR0ZXh0Ci0rI2VuZGlmCi0rCi0rLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgY3VycmVudCBkZWZhdWx0IG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQKLSsgICBMQ19NRVNTQUdFUyBsb2NhbGUuICBJZiBub3QgZm91bmQsIHJldHVybnMgTVNHSUQgaXRzZWxmICh0aGUgZGVmYXVsdAotKyAgIHRleHQpLiAgKi8KLStjaGFyICoKLStOR0VUVEVYVCAoY29uc3QgY2hhciAqbXNnaWQxLCBjb25zdCBjaGFyICptc2dpZDIsIHVuc2lnbmVkIGxvbmcgaW50IG4pCi0rewotKyAgcmV0dXJuIERDTkdFVFRFWFQgKE5VTEwsIG1zZ2lkMSwgbXNnaWQyLCBuLCBMQ19NRVNTQUdFUyk7Ci0rfQotKwotKyNpZmRlZiBfTElCQwotKy8qIEFsaWFzIGZvciBmdW5jdGlvbiBuYW1lIGluIEdOVSBDIExpYnJhcnkuICAqLwotK3dlYWtfYWxpYXMgKF9fbmdldHRleHQsIG5nZXR0ZXh0KTsKLSsjZW5kaWYKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9vczJjb21wYXQuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9vczJjb21wYXQuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjUzOTcyMDEyMCAtMDQwMAotQEAgLTAsMCArMSw5OCBAQAotKy8qIE9TLzIgY29tcGF0aWJpbGl0eSBmdW5jdGlvbnMuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNkZWZpbmUgT1MyX0FXQVJFCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0rCi0rLyogQSB2ZXJzaW9uIG9mIGdldGVudigpIHRoYXQgd29ya3MgZnJvbSBETExzICovCi0rZXh0ZXJuIHVuc2lnbmVkIGxvbmcgRG9zU2NhbkVudiAoY29uc3QgdW5zaWduZWQgY2hhciAqcHN6TmFtZSwgdW5zaWduZWQgY2hhciAqKnBwc3pWYWx1ZSk7Ci0rCi0rY2hhciAqCi0rX25sX2dldGVudiAoY29uc3QgY2hhciAqbmFtZSkKLSt7Ci0rICB1bnNpZ25lZCBjaGFyICp2YWx1ZTsKLSsgIGlmIChEb3NTY2FuRW52IChuYW1lLCAmdmFsdWUpKQotKyAgICByZXR1cm4gTlVMTDsKLSsgIGVsc2UKLSsgICAgcmV0dXJuIHZhbHVlOwotK30KLSsKLSsvKiBBIGZpeGVkIHNpemUgYnVmZmVyLiAgKi8KLStjaGFyIGxpYmludGxfbmxfZGVmYXVsdF9kaXJuYW1lW01BWFBBVEhMRU4rMV07Ci0rCi0rY2hhciAqX25sb3MyX2xpYmRpciA9IE5VTEw7Ci0rY2hhciAqX25sb3MyX2xvY2FsZWFsaWFzcGF0aCA9IE5VTEw7Ci0rY2hhciAqX25sb3MyX2xvY2FsZWRpciA9IE5VTEw7Ci0rCi0rc3RhdGljIF9fYXR0cmlidXRlX18oKGNvbnN0cnVjdG9yKSkgdm9pZAotK25sb3MyX2luaXRpYWxpemUgKCkKLSt7Ci0rICBjaGFyICpyb290ID0gZ2V0ZW52ICgiVU5JWFJPT1QiKTsKLSsgIGNoYXIgKmdudWxvY2FsZWRpciA9IGdldGVudiAoIkdOVUxPQ0FMRURJUiIpOwotKwotKyAgX25sb3MyX2xpYmRpciA9IGdudWxvY2FsZWRpcjsKLSsgIGlmICghX25sb3MyX2xpYmRpcikKLSsgICAgewotKyAgICAgIGlmIChyb290KQotKyAgICAgICAgewotKyAgICAgICAgICBzaXplX3Qgc2wgPSBzdHJsZW4gKHJvb3QpOwotKyAgICAgICAgICBfbmxvczJfbGliZGlyID0gKGNoYXIgKikgbWFsbG9jIChzbCArIHN0cmxlbiAoTElCRElSKSArIDEpOwotKyAgICAgICAgICBtZW1jcHkgKF9ubG9zMl9saWJkaXIsIHJvb3QsIHNsKTsKLSsgICAgICAgICAgbWVtY3B5IChfbmxvczJfbGliZGlyICsgc2wsIExJQkRJUiwgc3RybGVuIChMSUJESVIpICsgMSk7Ci0rICAgICAgICB9Ci0rICAgICAgZWxzZQotKyAgICAgICAgX25sb3MyX2xpYmRpciA9IExJQkRJUjsKLSsgICAgfQotKwotKyAgX25sb3MyX2xvY2FsZWFsaWFzcGF0aCA9IGdudWxvY2FsZWRpcjsKLSsgIGlmICghX25sb3MyX2xvY2FsZWFsaWFzcGF0aCkKLSsgICAgewotKyAgICAgIGlmIChyb290KQotKyAgICAgICAgewotKyAgICAgICAgICBzaXplX3Qgc2wgPSBzdHJsZW4gKHJvb3QpOwotKyAgICAgICAgICBfbmxvczJfbG9jYWxlYWxpYXNwYXRoID0gKGNoYXIgKikgbWFsbG9jIChzbCArIHN0cmxlbiAoTE9DQUxFX0FMSUFTX1BBVEgpICsgMSk7Ci0rICAgICAgICAgIG1lbWNweSAoX25sb3MyX2xvY2FsZWFsaWFzcGF0aCwgcm9vdCwgc2wpOwotKyAgICAgICAgICBtZW1jcHkgKF9ubG9zMl9sb2NhbGVhbGlhc3BhdGggKyBzbCwgTE9DQUxFX0FMSUFTX1BBVEgsIHN0cmxlbiAoTE9DQUxFX0FMSUFTX1BBVEgpICsgMSk7Ci0rICAgICAgICB9Ci0rICAgICBlbHNlCi0rICAgICAgICBfbmxvczJfbG9jYWxlYWxpYXNwYXRoID0gTE9DQUxFX0FMSUFTX1BBVEg7Ci0rICAgIH0KLSsKLSsgIF9ubG9zMl9sb2NhbGVkaXIgPSBnbnVsb2NhbGVkaXI7Ci0rICBpZiAoIV9ubG9zMl9sb2NhbGVkaXIpCi0rICAgIHsKLSsgICAgICBpZiAocm9vdCkKLSsgICAgICAgIHsKLSsgICAgICAgICAgc2l6ZV90IHNsID0gc3RybGVuIChyb290KTsKLSsgICAgICAgICAgX25sb3MyX2xvY2FsZWRpciA9IChjaGFyICopIG1hbGxvYyAoc2wgKyBzdHJsZW4gKExPQ0FMRURJUikgKyAxKTsKLSsgICAgICAgICAgbWVtY3B5IChfbmxvczJfbG9jYWxlZGlyLCByb290LCBzbCk7Ci0rICAgICAgICAgIG1lbWNweSAoX25sb3MyX2xvY2FsZWRpciArIHNsLCBMT0NBTEVESVIsIHN0cmxlbiAoTE9DQUxFRElSKSArIDEpOwotKyAgICAgICAgfQotKyAgICAgIGVsc2UKLSsgICAgICAgIF9ubG9zMl9sb2NhbGVkaXIgPSBMT0NBTEVESVI7Ci0rICAgIH0KLSsKLSsgIGlmIChzdHJsZW4gKF9ubG9zMl9sb2NhbGVkaXIpIDw9IE1BWFBBVEhMRU4pCi0rICAgIHN0cmNweSAobGliaW50bF9ubF9kZWZhdWx0X2Rpcm5hbWUsIF9ubG9zMl9sb2NhbGVkaXIpOwotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9vczJjb21wYXQuaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9vczJjb21wYXQuaAkyMDA0LTA5LTEyIDE0OjQwOjM0LjU0NDcxOTM2MCAtMDQwMAotQEAgLTAsMCArMSw0NiBAQAotKy8qIE9TLzIgY29tcGF0aWJpbGl0eSBkZWZpbmVzLgotKyAgIFRoaXMgZmlsZSBpcyBpbnRlbmRlZCB0byBiZSBpbmNsdWRlZCBmcm9tIGNvbmZpZy5oCi0rICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKy8qIFdoZW4gaW5jbHVkZWQgZnJvbSBvczJjb21wYXQuaCB3ZSBuZWVkIGFsbCB0aGUgb3JpZ2luYWwgZGVmaW5pdGlvbnMgKi8KLSsjaWZuZGVmIE9TMl9BV0FSRQotKwotKyN1bmRlZiBMSUJESVIKLSsjZGVmaW5lIExJQkRJUgkJCV9ubG9zMl9saWJkaXIKLStleHRlcm4gY2hhciAqX25sb3MyX2xpYmRpcjsKLSsKLSsjdW5kZWYgTE9DQUxFRElSCi0rI2RlZmluZSBMT0NBTEVESVIJCV9ubG9zMl9sb2NhbGVkaXIKLStleHRlcm4gY2hhciAqX25sb3MyX2xvY2FsZWRpcjsKLSsKLSsjdW5kZWYgTE9DQUxFX0FMSUFTX1BBVEgKLSsjZGVmaW5lIExPQ0FMRV9BTElBU19QQVRICV9ubG9zMl9sb2NhbGVhbGlhc3BhdGgKLStleHRlcm4gY2hhciAqX25sb3MyX2xvY2FsZWFsaWFzcGF0aDsKLSsKLSsjZW5kaWYKLSsKLSsjdW5kZWYgSEFWRV9TVFJDQVNFQ01QCi0rI2RlZmluZSBIQVZFX1NUUkNBU0VDTVAgMQotKyNkZWZpbmUgc3RyY2FzZWNtcCBzdHJpY21wCi0rI2RlZmluZSBzdHJuY2FzZWNtcCBzdHJuaWNtcAotKwotKy8qIFdlIGhhdmUgb3VyIG93biBnZXRlbnYoKSB3aGljaCB3b3JrcyBldmVuIGlmIGxpYnJhcnkgaXMgY29tcGlsZWQgYXMgRExMICovCi0rI2RlZmluZSBnZXRlbnYgX25sX2dldGVudgotKwotKy8qIE9sZGVyIHZlcnNpb25zIG9mIGdldHRleHQgdXNlZCAtMSBhcyB0aGUgdmFsdWUgb2YgTENfTUVTU0FHRVMgKi8KLSsjZGVmaW5lIExDX01FU1NBR0VTX0NPTVBBVCAoLTEpCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvb3NkZXAuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9vc2RlcC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNTUwNzE4NDQ4IC0wNDAwCi1AQCAtMCwwICsxLDI0IEBACi0rLyogT1MgZGVwZW5kZW50IHBhcnRzIG9mIGxpYmludGwuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZiBkZWZpbmVkIF9fRU1YX18KLSsjIGluY2x1ZGUgIm9zMmNvbXBhdC5jIgotKyNlbHNlCi0rLyogQXZvaWQgQUlYIGNvbXBpbGVyIHdhcm5pbmcuICAqLwotK3R5cGVkZWYgaW50IGR1bW15OwotKyNlbmRpZgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3BsdXJhbC5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3BsdXJhbC5jCTIwMDQtMDktMTIgMTQ6NDA6MzYuNTcxNDExMjU2IC0wNDAwCi1AQCAtMCwwICsxLDE0OTAgQEAKLSsvKiBBIEJpc29uIHBhcnNlciwgbWFkZSBmcm9tIHBsdXJhbC55Ci0rICAgYnkgR05VIGJpc29uIDEuMzUuICAqLwotKwotKyNkZWZpbmUgWVlCSVNPTiAxICAvKiBJZGVudGlmeSBCaXNvbiBvdXRwdXQuICAqLwotKwotKyNkZWZpbmUgeXlwYXJzZSBfX2dldHRleHRwYXJzZQotKyNkZWZpbmUgeXlsZXggX19nZXR0ZXh0bGV4Ci0rI2RlZmluZSB5eWVycm9yIF9fZ2V0dGV4dGVycm9yCi0rI2RlZmluZSB5eWx2YWwgX19nZXR0ZXh0bHZhbAotKyNkZWZpbmUgeXljaGFyIF9fZ2V0dGV4dGNoYXIKLSsjZGVmaW5lIHl5ZGVidWcgX19nZXR0ZXh0ZGVidWcKLSsjZGVmaW5lIHl5bmVycnMgX19nZXR0ZXh0bmVycnMKLSsjIGRlZmluZQlFUVVPUDIJMjU3Ci0rIyBkZWZpbmUJQ01QT1AyCTI1OAotKyMgZGVmaW5lCUFERE9QMgkyNTkKLSsjIGRlZmluZQlNVUxPUDIJMjYwCi0rIyBkZWZpbmUJTlVNQkVSCTI2MQotKwotKyNsaW5lIDEgInBsdXJhbC55IgotKwotKy8qIEV4cHJlc3Npb24gcGFyc2luZyBmb3IgcGx1cmFsIGZvcm0gc2VsZWN0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMjAwMC0yMDAxLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDIwMDAuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKy8qIFRoZSBiaXNvbiBnZW5lcmF0ZWQgcGFyc2VyIHVzZXMgYWxsb2NhLiAgQUlYIDMgZm9yY2VzIHVzIHRvIHB1dCB0aGlzCi0rICAgZGVjbGFyYXRpb24gYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4gIFRoZSBkZWNsYXJhdGlvbiBpbiBiaXNvbidzCi0rICAgc2tlbGV0b24gZmlsZSBjb21lcyB0b28gbGF0ZS4gIFRoaXMgbXVzdCBjb21lIGJlZm9yZSA8Y29uZmlnLmg+Ci0rICAgYmVjYXVzZSA8Y29uZmlnLmg+IG1heSBpbmNsdWRlIGFyYml0cmFyeSBzeXN0ZW0gaGVhZGVycy4gICovCi0rI2lmIGRlZmluZWQgX0FJWCAmJiAhZGVmaW5lZCBfX0dOVUNfXwotKyAjcHJhZ21hIGFsbG9jYQotKyNlbmRpZgotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlICJwbHVyYWwtZXhwLmgiCi0rCi0rLyogVGhlIG1haW4gZnVuY3Rpb24gZ2VuZXJhdGVkIGJ5IHRoZSBwYXJzZXIgaXMgY2FsbGVkIF9fZ2V0dGV4dHBhcnNlLAotKyAgIGJ1dCB3ZSB3YW50IGl0IHRvIGJlIGNhbGxlZCBQTFVSQUxfUEFSU0UuICAqLwotKyNpZm5kZWYgX0xJQkMKLSsjIGRlZmluZSBfX2dldHRleHRwYXJzZSBQTFVSQUxfUEFSU0UKLSsjZW5kaWYKLSsKLSsjZGVmaW5lIFlZTEVYX1BBUkFNCSYoKHN0cnVjdCBwYXJzZV9hcmdzICopIGFyZyktPmNwCi0rI2RlZmluZSBZWVBBUlNFX1BBUkFNCWFyZwotKwotKyNsaW5lIDQ5ICJwbHVyYWwueSIKLSsjaWZuZGVmIFlZU1RZUEUKLSt0eXBlZGVmIHVuaW9uIHsKLSsgIHVuc2lnbmVkIGxvbmcgaW50IG51bTsKLSsgIGVudW0gb3BlcmF0b3Igb3A7Ci0rICBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwOwotK30geXlzdHlwZTsKLSsjIGRlZmluZSBZWVNUWVBFIHl5c3R5cGUKLSsjIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQotKyNlbmRpZgotKyNsaW5lIDU1ICJwbHVyYWwueSIKLSsKLSsvKiBQcm90b3R5cGVzIGZvciBsb2NhbCBmdW5jdGlvbnMuICAqLwotK3N0YXRpYyBpbnQgeXlsZXggKFlZU1RZUEUgKmx2YWwsIGNvbnN0IGNoYXIgKipwZXhwKTsKLStzdGF0aWMgdm9pZCB5eWVycm9yIChjb25zdCBjaGFyICpzdHIpOwotKwotKy8qIEFsbG9jYXRpb24gb2YgZXhwcmVzc2lvbnMuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgZXhwcmVzc2lvbiAqCi0rbmV3X2V4cCAoaW50IG5hcmdzLCBlbnVtIG9wZXJhdG9yIG9wLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqIGNvbnN0ICphcmdzKQotK3sKLSsgIGludCBpOwotKyAgc3RydWN0IGV4cHJlc3Npb24gKm5ld3A7Ci0rCi0rICAvKiBJZiBhbnkgb2YgdGhlIGFyZ3VtZW50IGNvdWxkIG5vdCBiZSBtYWxsb2MnZWQsIGp1c3QgcmV0dXJuIE5VTEwuICAqLwotKyAgZm9yIChpID0gbmFyZ3MgLSAxOyBpID49IDA7IGktLSkKLSsgICAgaWYgKGFyZ3NbaV0gPT0gTlVMTCkKLSsgICAgICBnb3RvIGZhaWw7Ci0rCi0rICAvKiBBbGxvY2F0ZSBhIG5ldyBleHByZXNzaW9uLiAgKi8KLSsgIG5ld3AgPSAoc3RydWN0IGV4cHJlc3Npb24gKikgbWFsbG9jIChzaXplb2YgKCpuZXdwKSk7Ci0rICBpZiAobmV3cCAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgbmV3cC0+bmFyZ3MgPSBuYXJnczsKLSsgICAgICBuZXdwLT5vcGVyYXRpb24gPSBvcDsKLSsgICAgICBmb3IgKGkgPSBuYXJncyAtIDE7IGkgPj0gMDsgaS0tKQotKwluZXdwLT52YWwuYXJnc1tpXSA9IGFyZ3NbaV07Ci0rICAgICAgcmV0dXJuIG5ld3A7Ci0rICAgIH0KLSsKLSsgZmFpbDoKLSsgIGZvciAoaSA9IG5hcmdzIC0gMTsgaSA+PSAwOyBpLS0pCi0rICAgIEZSRUVfRVhQUkVTU0lPTiAoYXJnc1tpXSk7Ci0rCi0rICByZXR1cm4gTlVMTDsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSBzdHJ1Y3QgZXhwcmVzc2lvbiAqCi0rbmV3X2V4cF8wIChlbnVtIG9wZXJhdG9yIG9wKQotK3sKLSsgIHJldHVybiBuZXdfZXhwICgwLCBvcCwgTlVMTCk7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgc3RydWN0IGV4cHJlc3Npb24gKgotK25ld19leHBfMSAoZW51bSBvcGVyYXRvciBvcCwgc3RydWN0IGV4cHJlc3Npb24gKnJpZ2h0KQotK3sKLSsgIHN0cnVjdCBleHByZXNzaW9uICphcmdzWzFdOwotKwotKyAgYXJnc1swXSA9IHJpZ2h0OwotKyAgcmV0dXJuIG5ld19leHAgKDEsIG9wLCBhcmdzKTsKLSt9Ci0rCi0rc3RhdGljIHN0cnVjdCBleHByZXNzaW9uICoKLStuZXdfZXhwXzIgKGVudW0gb3BlcmF0b3Igb3AsIHN0cnVjdCBleHByZXNzaW9uICpsZWZ0LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqcmlnaHQpCi0rewotKyAgc3RydWN0IGV4cHJlc3Npb24gKmFyZ3NbMl07Ci0rCi0rICBhcmdzWzBdID0gbGVmdDsKLSsgIGFyZ3NbMV0gPSByaWdodDsKLSsgIHJldHVybiBuZXdfZXhwICgyLCBvcCwgYXJncyk7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgc3RydWN0IGV4cHJlc3Npb24gKgotK25ld19leHBfMyAoZW51bSBvcGVyYXRvciBvcCwgc3RydWN0IGV4cHJlc3Npb24gKmJleHAsCi0rCSAgIHN0cnVjdCBleHByZXNzaW9uICp0YnJhbmNoLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZmJyYW5jaCkKLSt7Ci0rICBzdHJ1Y3QgZXhwcmVzc2lvbiAqYXJnc1szXTsKLSsKLSsgIGFyZ3NbMF0gPSBiZXhwOwotKyAgYXJnc1sxXSA9IHRicmFuY2g7Ci0rICBhcmdzWzJdID0gZmJyYW5jaDsKLSsgIHJldHVybiBuZXdfZXhwICgzLCBvcCwgYXJncyk7Ci0rfQotKwotKyNpZm5kZWYgWVlERUJVRwotKyMgZGVmaW5lIFlZREVCVUcgMAotKyNlbmRpZgotKwotKwotKwotKyNkZWZpbmUJWVlGSU5BTAkJMjcKLSsjZGVmaW5lCVlZRkxBRwkJLTMyNzY4Ci0rI2RlZmluZQlZWU5UQkFTRQkxNgotKwotKy8qIFlZVFJBTlNMQVRFKFlZTEVYKSAtLSBCaXNvbiB0b2tlbiBudW1iZXIgY29ycmVzcG9uZGluZyB0byBZWUxFWC4gKi8KLSsjZGVmaW5lIFlZVFJBTlNMQVRFKHgpICgodW5zaWduZWQpKHgpIDw9IDI2MSA/IHl5dHJhbnNsYXRlW3hdIDogMTgpCi0rCi0rLyogWVlUUkFOU0xBVEVbWVlMRVhdIC0tIEJpc29uIHRva2VuIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIFlZTEVYLiAqLwotK3N0YXRpYyBjb25zdCBjaGFyIHl5dHJhbnNsYXRlW10gPQotK3sKLSsgICAgICAgMCwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAxMCwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICA1LCAgICAgMiwKLSsgICAgICAxNCwgICAgMTUsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgIDEyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMywgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAxMywgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDQsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSsgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMSwgICAgIDYsICAgICA3LCAgICAgOCwKLSsgICAgICAgOSwgICAgMTEKLSt9OwotKwotKyNpZiBZWURFQlVHCi0rc3RhdGljIGNvbnN0IHNob3J0IHl5cHJoc1tdID0KLSt7Ci0rICAgICAgIDAsICAgICAwLCAgICAgMiwgICAgIDgsICAgIDEyLCAgICAxNiwgICAgMjAsICAgIDI0LCAgICAyOCwgICAgMzIsCi0rICAgICAgMzUsICAgIDM3LCAgICAzOQotK307Ci0rc3RhdGljIGNvbnN0IHNob3J0IHl5cmhzW10gPQotK3sKLSsgICAgICAxNywgICAgIDAsICAgIDE3LCAgICAgMywgICAgMTcsICAgIDEyLCAgICAxNywgICAgIDAsICAgIDE3LCAgICAgNCwKLSsgICAgICAxNywgICAgIDAsICAgIDE3LCAgICAgNSwgICAgMTcsICAgICAwLCAgICAxNywgICAgIDYsICAgIDE3LCAgICAgMCwKLSsgICAgICAxNywgICAgIDcsICAgIDE3LCAgICAgMCwgICAgMTcsICAgICA4LCAgICAxNywgICAgIDAsICAgIDE3LCAgICAgOSwKLSsgICAgICAxNywgICAgIDAsICAgIDEwLCAgICAxNywgICAgIDAsICAgIDEzLCAgICAgMCwgICAgMTEsICAgICAwLCAgICAxNCwKLSsgICAgICAxNywgICAgMTUsICAgICAwCi0rfTsKLSsKLSsjZW5kaWYKLSsKLSsjaWYgWVlERUJVRwotKy8qIFlZUkxJTkVbWVlOXSAtLSBzb3VyY2UgbGluZSB3aGVyZSBydWxlIG51bWJlciBZWU4gd2FzIGRlZmluZWQuICovCi0rc3RhdGljIGNvbnN0IHNob3J0IHl5cmxpbmVbXSA9Ci0rewotKyAgICAgICAwLCAgIDE1MCwgICAxNTgsICAgMTYyLCAgIDE2NiwgICAxNzAsICAgMTc0LCAgIDE3OCwgICAxODIsICAgMTg2LAotKyAgICAgMTkwLCAgIDE5NCwgICAxOTkKLSt9OwotKyNlbmRpZgotKwotKwotKyNpZiAoWVlERUJVRykgfHwgZGVmaW5lZCBZWUVSUk9SX1ZFUkJPU0UKLSsKLSsvKiBZWVROQU1FW1RPS0VOX05VTV0gLS0gU3RyaW5nIG5hbWUgb2YgdGhlIHRva2VuIFRPS0VOX05VTS4gKi8KLStzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgeXl0bmFtZVtdID0KLSt7Ci0rICAiJCIsICJlcnJvciIsICIkdW5kZWZpbmVkLiIsICInPyciLCAiJ3wnIiwgIicmJyIsICJFUVVPUDIiLCAiQ01QT1AyIiwgCi0rICAiQURET1AyIiwgIk1VTE9QMiIsICInISciLCAiTlVNQkVSIiwgIic6JyIsICInbiciLCAiJygnIiwgIicpJyIsIAotKyAgInN0YXJ0IiwgImV4cCIsIDAKLSt9OwotKyNlbmRpZgotKwotKy8qIFlZUjFbWVlOXSAtLSBTeW1ib2wgbnVtYmVyIG9mIHN5bWJvbCB0aGF0IHJ1bGUgWVlOIGRlcml2ZXMuICovCi0rc3RhdGljIGNvbnN0IHNob3J0IHl5cjFbXSA9Ci0rewotKyAgICAgICAwLCAgICAxNiwgICAgMTcsICAgIDE3LCAgICAxNywgICAgMTcsICAgIDE3LCAgICAxNywgICAgMTcsICAgIDE3LAotKyAgICAgIDE3LCAgICAxNywgICAgMTcKLSt9OwotKwotKy8qIFlZUjJbWVlOXSAtLSBOdW1iZXIgb2Ygc3ltYm9scyBjb21wb3NpbmcgcmlnaHQgaGFuZCBzaWRlIG9mIHJ1bGUgWVlOLiAqLwotK3N0YXRpYyBjb25zdCBzaG9ydCB5eXIyW10gPQotK3sKLSsgICAgICAgMCwgICAgIDEsICAgICA1LCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMiwKLSsgICAgICAgMSwgICAgIDEsICAgICAzCi0rfTsKLSsKLSsvKiBZWURFRkFDVFtTXSAtLSBkZWZhdWx0IHJ1bGUgdG8gcmVkdWNlIHdpdGggaW4gc3RhdGUgUyB3aGVuIFlZVEFCTEUKLSsgICBkb2Vzbid0IHNwZWNpZnkgc29tZXRoaW5nIGVsc2UgdG8gZG8uICBaZXJvIG1lYW5zIHRoZSBkZWZhdWx0IGlzIGFuCi0rICAgZXJyb3IuICovCi0rc3RhdGljIGNvbnN0IHNob3J0IHl5ZGVmYWN0W10gPQotK3sKLSsgICAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMCwgICAgIDAsICAgICAxLCAgICAgOSwgICAgIDAsICAgICAwLCAgICAgMCwKLSsgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDEyLCAgICAgMCwgICAgIDMsICAgICA0LCAgICAgNSwKLSsgICAgICAgNiwgICAgIDcsICAgICA4LCAgICAgMCwgICAgIDIsICAgICAwLCAgICAgMCwgICAgIDAKLSt9OwotKwotK3N0YXRpYyBjb25zdCBzaG9ydCB5eWRlZmdvdG9bXSA9Ci0rewotKyAgICAgIDI1LCAgICAgNQotK307Ci0rCi0rc3RhdGljIGNvbnN0IHNob3J0IHl5cGFjdFtdID0KLSt7Ci0rICAgICAgLTksICAgIC05LC0zMjc2OCwtMzI3NjgsICAgIC05LCAgICAzNCwtMzI3NjgsICAgIDExLCAgICAtOSwgICAgLTksCi0rICAgICAgLTksICAgIC05LCAgICAtOSwgICAgLTksICAgIC05LC0zMjc2OCwgICAgMjQsICAgIDM5LCAgICA0MywgICAgMTYsCi0rICAgICAgMjYsICAgIC0zLC0zMjc2OCwgICAgLTksICAgIDM0LCAgICAyMSwgICAgNTMsLTMyNzY4Ci0rfTsKLSsKLStzdGF0aWMgY29uc3Qgc2hvcnQgeXlwZ290b1tdID0KLSt7Ci0rICAtMzI3NjgsICAgIC0xCi0rfTsKLSsKLSsKLSsjZGVmaW5lCVlZTEFTVAkJNTMKLSsKLSsKLStzdGF0aWMgY29uc3Qgc2hvcnQgeXl0YWJsZVtdID0KLSt7Ci0rICAgICAgIDYsICAgICAxLCAgICAgMiwgICAgIDcsICAgICAzLCAgICAgNCwgICAgMTQsICAgIDE2LCAgICAxNywgICAgMTgsCi0rICAgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsCi0rICAgICAgMTQsICAgIDI2LCAgICAyNCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgICA4LCAgICAgOSwgICAgMTAsCi0rICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDEzLCAgICAxNCwgICAgMjMsICAgICA4LCAgICAgOSwgICAgMTAsCi0rICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTEsCi0rICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMjcKLSt9OwotKwotK3N0YXRpYyBjb25zdCBzaG9ydCB5eWNoZWNrW10gPQotK3sKLSsgICAgICAgMSwgICAgMTAsICAgIDExLCAgICAgNCwgICAgMTMsICAgIDE0LCAgICAgOSwgICAgIDgsICAgICA5LCAgICAxMCwKLSsgICAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwKLSsgICAgICAgOSwgICAgIDAsICAgIDIzLCAgICAgNywgICAgIDgsICAgICA5LCAgICAxNSwgICAgIDMsICAgICA0LCAgICAgNSwKLSsgICAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgIDgsICAgICA5LCAgICAxMiwgICAgIDMsICAgICA0LCAgICAgNSwKLSsgICAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAgNiwKLSsgICAgICAgNywgICAgIDgsICAgICA5LCAgICAgMAotK307Ci0rI2RlZmluZSBZWVBVUkUgMQotKwotKy8qIC0qLUMtKi0gIE5vdGUgc29tZSBjb21waWxlcnMgY2hva2Ugb24gY29tbWVudHMgb24gYCNsaW5lJyBsaW5lcy4gICovCi0rI2xpbmUgMyAiL3Vzci9sb2NhbC9zaGFyZS9iaXNvbi9iaXNvbi5zaW1wbGUiCi0rCi0rLyogU2tlbGV0b24gb3V0cHV0IHBhcnNlciBmb3IgYmlzb24sCi0rCi0rICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5LCAxOTkwLCAyMDAwLCAyMDAxLCAyMDAyIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0rICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKwotKy8qIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHdoZW4gdGhpcyBmaWxlIGlzIGNvcGllZCBieSBCaXNvbiBpbnRvIGEKLSsgICBCaXNvbiBvdXRwdXQgZmlsZSwgeW91IG1heSB1c2UgdGhhdCBvdXRwdXQgZmlsZSB3aXRob3V0IHJlc3RyaWN0aW9uLgotKyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gd2FzIGFkZGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSsgICBpbiB2ZXJzaW9uIDEuMjQgb2YgQmlzb24uICAqLwotKwotKy8qIFRoaXMgaXMgdGhlIHBhcnNlciBjb2RlIHRoYXQgaXMgd3JpdHRlbiBpbnRvIGVhY2ggYmlzb24gcGFyc2VyIHdoZW4KLSsgICB0aGUgJXNlbWFudGljX3BhcnNlciBkZWNsYXJhdGlvbiBpcyBub3Qgc3BlY2lmaWVkIGluIHRoZSBncmFtbWFyLgotKyAgIEl0IHdhcyB3cml0dGVuIGJ5IFJpY2hhcmQgU3RhbGxtYW4gYnkgc2ltcGxpZnlpbmcgdGhlIGhhaXJ5IHBhcnNlcgotKyAgIHVzZWQgd2hlbiAlc2VtYW50aWNfcGFyc2VyIGlzIHNwZWNpZmllZC4gICovCi0rCi0rLyogQWxsIHN5bWJvbHMgZGVmaW5lZCBiZWxvdyBzaG91bGQgYmVnaW4gd2l0aCB5eSBvciBZWSwgdG8gYXZvaWQKLSsgICBpbmZyaW5naW5nIG9uIHVzZXIgbmFtZSBzcGFjZS4gIFRoaXMgc2hvdWxkIGJlIGRvbmUgZXZlbiBmb3IgbG9jYWwKLSsgICB2YXJpYWJsZXMsIGFzIHRoZXkgbWlnaHQgb3RoZXJ3aXNlIGJlIGV4cGFuZGVkIGJ5IHVzZXIgbWFjcm9zLgotKyAgIFRoZXJlIGFyZSBzb21lIHVuYXZvaWRhYmxlIGV4Y2VwdGlvbnMgd2l0aGluIGluY2x1ZGUgZmlsZXMgdG8KLSsgICBkZWZpbmUgbmVjZXNzYXJ5IGxpYnJhcnkgc3ltYm9sczsgdGhleSBhcmUgbm90ZWQgIklORlJJTkdFUyBPTgotKyAgIFVTRVIgTkFNRSBTUEFDRSIgYmVsb3cuICAqLwotKwotKyNpZiAhIGRlZmluZWQgKHl5b3ZlcmZsb3cpIHx8IGRlZmluZWQgKFlZRVJST1JfVkVSQk9TRSkKLSsKLSsvKiBUaGUgcGFyc2VyIGludm9rZXMgYWxsb2NhIG9yIG1hbGxvYzsgZGVmaW5lIHRoZSBuZWNlc3Nhcnkgc3ltYm9scy4gICovCi0rCi0rIyBpZiBZWVNUQUNLX1VTRV9BTExPQ0EKLSsjICBkZWZpbmUgWVlTVEFDS19BTExPQyBhbGxvY2EKLSsjIGVsc2UKLSsjICBpZm5kZWYgWVlTVEFDS19VU0VfQUxMT0NBCi0rIyAgIGlmIGRlZmluZWQgKGFsbG9jYSkgfHwgZGVmaW5lZCAoX0FMTE9DQV9IKQotKyMgICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0MgYWxsb2NhCi0rIyAgIGVsc2UKLSsjICAgIGlmZGVmIF9fR05VQ19fCi0rIyAgICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0MgX19idWlsdGluX2FsbG9jYQotKyMgICAgZW5kaWYKLSsjICAgZW5kaWYKLSsjICBlbmRpZgotKyMgZW5kaWYKLSsKLSsjIGlmZGVmIFlZU1RBQ0tfQUxMT0MKLSsgICAvKiBQYWNpZnkgR0NDJ3MgYGVtcHR5IGlmLWJvZHknIHdhcm5pbmcuICovCi0rIyAgZGVmaW5lIFlZU1RBQ0tfRlJFRShQdHIpIGRvIHsgLyogZW1wdHkgKi87IH0gd2hpbGUgKDApCi0rIyBlbHNlCi0rIyAgaWYgZGVmaW5lZCAoX19TVERDX18pIHx8IGRlZmluZWQgKF9fY3BsdXNwbHVzKQotKyMgICBpbmNsdWRlIDxzdGRsaWIuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwotKyMgICBkZWZpbmUgWVlTSVpFX1Qgc2l6ZV90Ci0rIyAgZW5kaWYKLSsjICBkZWZpbmUgWVlTVEFDS19BTExPQyBtYWxsb2MKLSsjICBkZWZpbmUgWVlTVEFDS19GUkVFIGZyZWUKLSsjIGVuZGlmCi0rI2VuZGlmIC8qICEgZGVmaW5lZCAoeXlvdmVyZmxvdykgfHwgZGVmaW5lZCAoWVlFUlJPUl9WRVJCT1NFKSAqLwotKwotKwotKyNpZiAoISBkZWZpbmVkICh5eW92ZXJmbG93KSBcCi0rICAgICAmJiAoISBkZWZpbmVkIChfX2NwbHVzcGx1cykgXAotKwkgfHwgKFlZTFRZUEVfSVNfVFJJVklBTCAmJiBZWVNUWVBFX0lTX1RSSVZJQUwpKSkKLSsKLSsvKiBBIHR5cGUgdGhhdCBpcyBwcm9wZXJseSBhbGlnbmVkIGZvciBhbnkgc3RhY2sgbWVtYmVyLiAgKi8KLSt1bmlvbiB5eWFsbG9jCi0rewotKyAgc2hvcnQgeXlzczsKLSsgIFlZU1RZUEUgeXl2czsKLSsjIGlmIFlZTFNQX05FRURFRAotKyAgWVlMVFlQRSB5eWxzOwotKyMgZW5kaWYKLSt9OwotKwotKy8qIFRoZSBzaXplIG9mIHRoZSBtYXhpbXVtIGdhcCBiZXR3ZWVuIG9uZSBhbGlnbmVkIHN0YWNrIGFuZCB0aGUgbmV4dC4gICovCi0rIyBkZWZpbmUgWVlTVEFDS19HQVBfTUFYIChzaXplb2YgKHVuaW9uIHl5YWxsb2MpIC0gMSkKLSsKLSsvKiBUaGUgc2l6ZSBvZiBhbiBhcnJheSBsYXJnZSB0byBlbm91Z2ggdG8gaG9sZCBhbGwgc3RhY2tzLCBlYWNoIHdpdGgKLSsgICBOIGVsZW1lbnRzLiAgKi8KLSsjIGlmIFlZTFNQX05FRURFRAotKyMgIGRlZmluZSBZWVNUQUNLX0JZVEVTKE4pIFwKLSsgICAgICgoTikgKiAoc2l6ZW9mIChzaG9ydCkgKyBzaXplb2YgKFlZU1RZUEUpICsgc2l6ZW9mIChZWUxUWVBFKSkJXAotKyAgICAgICsgMiAqIFlZU1RBQ0tfR0FQX01BWCkKLSsjIGVsc2UKLSsjICBkZWZpbmUgWVlTVEFDS19CWVRFUyhOKSBcCi0rICAgICAoKE4pICogKHNpemVvZiAoc2hvcnQpICsgc2l6ZW9mIChZWVNUWVBFKSkJCQkJXAotKyAgICAgICsgWVlTVEFDS19HQVBfTUFYKQotKyMgZW5kaWYKLSsKLSsvKiBDb3B5IENPVU5UIG9iamVjdHMgZnJvbSBGUk9NIHRvIFRPLiAgVGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZG8KLSsgICBub3Qgb3ZlcmxhcC4gICovCi0rIyBpZm5kZWYgWVlDT1BZCi0rIyAgaWYgMSA8IF9fR05VQ19fCi0rIyAgIGRlZmluZSBZWUNPUFkoVG8sIEZyb20sIENvdW50KSBcCi0rICAgICAgX19idWlsdGluX21lbWNweSAoVG8sIEZyb20sIChDb3VudCkgKiBzaXplb2YgKCooRnJvbSkpKQotKyMgIGVsc2UKLSsjICAgZGVmaW5lIFlZQ09QWShUbywgRnJvbSwgQ291bnQpCQlcCi0rICAgICAgZG8JCQkJCVwKLSsJewkJCQkJXAotKwkgIHJlZ2lzdGVyIFlZU0laRV9UIHl5aTsJCVwKLSsJICBmb3IgKHl5aSA9IDA7IHl5aSA8IChDb3VudCk7IHl5aSsrKQlcCi0rCSAgICAoVG8pW3l5aV0gPSAoRnJvbSlbeXlpXTsJCVwKLSsJfQkJCQkJXAotKyAgICAgIHdoaWxlICgwKQotKyMgIGVuZGlmCi0rIyBlbmRpZgotKwotKy8qIFJlbG9jYXRlIFNUQUNLIGZyb20gaXRzIG9sZCBsb2NhdGlvbiB0byB0aGUgbmV3IG9uZS4gIFRoZQotKyAgIGxvY2FsIHZhcmlhYmxlcyBZWVNJWkUgYW5kIFlZU1RBQ0tTSVpFIGdpdmUgdGhlIG9sZCBhbmQgbmV3IG51bWJlciBvZgotKyAgIGVsZW1lbnRzIGluIHRoZSBzdGFjaywgYW5kIFlZUFRSIGdpdmVzIHRoZSBuZXcgbG9jYXRpb24gb2YgdGhlCi0rICAgc3RhY2suICBBZHZhbmNlIFlZUFRSIHRvIGEgcHJvcGVybHkgYWxpZ25lZCBsb2NhdGlvbiBmb3IgdGhlIG5leHQKLSsgICBzdGFjay4gICovCi0rIyBkZWZpbmUgWVlTVEFDS19SRUxPQ0FURShTdGFjaykJCQkJCVwKLSsgICAgZG8JCQkJCQkJCQlcCi0rICAgICAgewkJCQkJCQkJCVwKLSsJWVlTSVpFX1QgeXluZXdieXRlczsJCQkJCQlcCi0rCVlZQ09QWSAoJnl5cHRyLT5TdGFjaywgU3RhY2ssIHl5c2l6ZSk7CQkJCVwKLSsJU3RhY2sgPSAmeXlwdHItPlN0YWNrOwkJCQkJCVwKLSsJeXluZXdieXRlcyA9IHl5c3RhY2tzaXplICogc2l6ZW9mICgqU3RhY2spICsgWVlTVEFDS19HQVBfTUFYOwlcCi0rCXl5cHRyICs9IHl5bmV3Ynl0ZXMgLyBzaXplb2YgKCp5eXB0cik7CQkJCVwKLSsgICAgICB9CQkJCQkJCQkJXAotKyAgICB3aGlsZSAoMCkKLSsKLSsjZW5kaWYKLSsKLSsKLSsjaWYgISBkZWZpbmVkIChZWVNJWkVfVCkgJiYgZGVmaW5lZCAoX19TSVpFX1RZUEVfXykKLSsjIGRlZmluZSBZWVNJWkVfVCBfX1NJWkVfVFlQRV9fCi0rI2VuZGlmCi0rI2lmICEgZGVmaW5lZCAoWVlTSVpFX1QpICYmIGRlZmluZWQgKHNpemVfdCkKLSsjIGRlZmluZSBZWVNJWkVfVCBzaXplX3QKLSsjZW5kaWYKLSsjaWYgISBkZWZpbmVkIChZWVNJWkVfVCkKLSsjIGlmIGRlZmluZWQgKF9fU1REQ19fKSB8fCBkZWZpbmVkIChfX2NwbHVzcGx1cykKLSsjICBpbmNsdWRlIDxzdGRkZWYuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwotKyMgIGRlZmluZSBZWVNJWkVfVCBzaXplX3QKLSsjIGVuZGlmCi0rI2VuZGlmCi0rI2lmICEgZGVmaW5lZCAoWVlTSVpFX1QpCi0rIyBkZWZpbmUgWVlTSVpFX1QgdW5zaWduZWQgaW50Ci0rI2VuZGlmCi0rCi0rI2RlZmluZSB5eWVycm9rCQkoeXllcnJzdGF0dXMgPSAwKQotKyNkZWZpbmUgeXljbGVhcmluCSh5eWNoYXIgPSBZWUVNUFRZKQotKyNkZWZpbmUgWVlFTVBUWQkJLTIKLSsjZGVmaW5lIFlZRU9GCQkwCi0rI2RlZmluZSBZWUFDQ0VQVAlnb3RvIHl5YWNjZXB0bGFiCi0rI2RlZmluZSBZWUFCT1JUIAlnb3RvIHl5YWJvcnRsYWIKLSsjZGVmaW5lIFlZRVJST1IJCWdvdG8geXllcnJsYWIxCi0rLyogTGlrZSBZWUVSUk9SIGV4Y2VwdCBkbyBjYWxsIHl5ZXJyb3IuICBUaGlzIHJlbWFpbnMgaGVyZSB0ZW1wb3JhcmlseQotKyAgIHRvIGVhc2UgdGhlIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBtZWFuaW5nIG9mIFlZRVJST1IsIGZvciBHQ0MuCi0rICAgT25jZSBHQ0MgdmVyc2lvbiAyIGhhcyBzdXBwbGFudGVkIHZlcnNpb24gMSwgdGhpcyBjYW4gZ28uICAqLwotKyNkZWZpbmUgWVlGQUlMCQlnb3RvIHl5ZXJybGFiCi0rI2RlZmluZSBZWVJFQ09WRVJJTkcoKSAgKCEheXllcnJzdGF0dXMpCi0rI2RlZmluZSBZWUJBQ0tVUChUb2tlbiwgVmFsdWUpCQkJCQlcCi0rZG8JCQkJCQkJCVwKLSsgIGlmICh5eWNoYXIgPT0gWVlFTVBUWSAmJiB5eWxlbiA9PSAxKQkJCQlcCi0rICAgIHsJCQkJCQkJCVwKLSsgICAgICB5eWNoYXIgPSAoVG9rZW4pOwkJCQkJCVwKLSsgICAgICB5eWx2YWwgPSAoVmFsdWUpOwkJCQkJCVwKLSsgICAgICB5eWNoYXIxID0gWVlUUkFOU0xBVEUgKHl5Y2hhcik7CQkJCVwKLSsgICAgICBZWVBPUFNUQUNLOwkJCQkJCVwKLSsgICAgICBnb3RvIHl5YmFja3VwOwkJCQkJCVwKLSsgICAgfQkJCQkJCQkJXAotKyAgZWxzZQkJCQkJCQkJXAotKyAgICB7IAkJCQkJCQkJXAotKyAgICAgIHl5ZXJyb3IgKCJzeW50YXggZXJyb3I6IGNhbm5vdCBiYWNrIHVwIik7CQkJXAotKyAgICAgIFlZRVJST1I7CQkJCQkJCVwKLSsgICAgfQkJCQkJCQkJXAotK3doaWxlICgwKQotKwotKyNkZWZpbmUgWVlURVJST1IJMQotKyNkZWZpbmUgWVlFUlJDT0RFCTI1NgotKwotKwotKy8qIFlZTExPQ19ERUZBVUxUIC0tIENvbXB1dGUgdGhlIGRlZmF1bHQgbG9jYXRpb24gKGJlZm9yZSB0aGUgYWN0aW9ucwotKyAgIGFyZSBydW4pLgotKwotKyAgIFdoZW4gWVlMTE9DX0RFRkFVTFQgaXMgcnVuLCBDVVJSRU5UIGlzIHNldCB0aGUgbG9jYXRpb24gb2YgdGhlCi0rICAgZmlyc3QgdG9rZW4uICBCeSBkZWZhdWx0LCB0byBpbXBsZW1lbnQgc3VwcG9ydCBmb3IgcmFuZ2VzLCBleHRlbmQKLSsgICBpdHMgcmFuZ2UgdG8gdGhlIGxhc3Qgc3ltYm9sLiAgKi8KLSsKLSsjaWZuZGVmIFlZTExPQ19ERUZBVUxUCi0rIyBkZWZpbmUgWVlMTE9DX0RFRkFVTFQoQ3VycmVudCwgUmhzLCBOKSAgICAgICAJXAotKyAgIEN1cnJlbnQubGFzdF9saW5lICAgPSBSaHNbTl0ubGFzdF9saW5lOwlcCi0rICAgQ3VycmVudC5sYXN0X2NvbHVtbiA9IFJoc1tOXS5sYXN0X2NvbHVtbjsKLSsjZW5kaWYKLSsKLSsKLSsvKiBZWUxFWCAtLSBjYWxsaW5nIGB5eWxleCcgd2l0aCB0aGUgcmlnaHQgYXJndW1lbnRzLiAgKi8KLSsKLSsjaWYgWVlQVVJFCi0rIyBpZiBZWUxTUF9ORUVERUQKLSsjICBpZmRlZiBZWUxFWF9QQVJBTQotKyMgICBkZWZpbmUgWVlMRVgJCXl5bGV4ICgmeXlsdmFsLCAmeXlsbG9jLCBZWUxFWF9QQVJBTSkKLSsjICBlbHNlCi0rIyAgIGRlZmluZSBZWUxFWAkJeXlsZXggKCZ5eWx2YWwsICZ5eWxsb2MpCi0rIyAgZW5kaWYKLSsjIGVsc2UgLyogIVlZTFNQX05FRURFRCAqLwotKyMgIGlmZGVmIFlZTEVYX1BBUkFNCi0rIyAgIGRlZmluZSBZWUxFWAkJeXlsZXggKCZ5eWx2YWwsIFlZTEVYX1BBUkFNKQotKyMgIGVsc2UKLSsjICAgZGVmaW5lIFlZTEVYCQl5eWxleCAoJnl5bHZhbCkKLSsjICBlbmRpZgotKyMgZW5kaWYgLyogIVlZTFNQX05FRURFRCAqLwotKyNlbHNlIC8qICFZWVBVUkUgKi8KLSsjIGRlZmluZSBZWUxFWAkJCXl5bGV4ICgpCi0rI2VuZGlmIC8qICFZWVBVUkUgKi8KLSsKLSsKLSsvKiBFbmFibGUgZGVidWdnaW5nIGlmIHJlcXVlc3RlZC4gICovCi0rI2lmIFlZREVCVUcKLSsKLSsjIGlmbmRlZiBZWUZQUklOVEYKLSsjICBpbmNsdWRlIDxzdGRpby5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCi0rIyAgZGVmaW5lIFlZRlBSSU5URiBmcHJpbnRmCi0rIyBlbmRpZgotKwotKyMgZGVmaW5lIFlZRFBSSU5URihBcmdzKQkJCVwKLStkbyB7CQkJCQkJXAotKyAgaWYgKHl5ZGVidWcpCQkJCQlcCi0rICAgIFlZRlBSSU5URiBBcmdzOwkJCQlcCi0rfSB3aGlsZSAoMCkKLSsvKiBOb256ZXJvIG1lYW5zIHByaW50IHBhcnNlIHRyYWNlLiAgSXQgaXMgbGVmdCB1bmluaXRpYWxpemVkIHNvIHRoYXQKLSsgICBtdWx0aXBsZSBwYXJzZXJzIGNhbiBjb2V4aXN0LiAgKi8KLStpbnQgeXlkZWJ1ZzsKLSsjZWxzZSAvKiAhWVlERUJVRyAqLwotKyMgZGVmaW5lIFlZRFBSSU5URihBcmdzKQotKyNlbmRpZiAvKiAhWVlERUJVRyAqLwotKwotKy8qIFlZSU5JVERFUFRIIC0tIGluaXRpYWwgc2l6ZSBvZiB0aGUgcGFyc2VyJ3Mgc3RhY2tzLiAgKi8KLSsjaWZuZGVmCVlZSU5JVERFUFRICi0rIyBkZWZpbmUgWVlJTklUREVQVEggMjAwCi0rI2VuZGlmCi0rCi0rLyogWVlNQVhERVBUSCAtLSBtYXhpbXVtIHNpemUgdGhlIHN0YWNrcyBjYW4gZ3JvdyB0byAoZWZmZWN0aXZlIG9ubHkKLSsgICBpZiB0aGUgYnVpbHQtaW4gc3RhY2sgZXh0ZW5zaW9uIG1ldGhvZCBpcyB1c2VkKS4KLSsKLSsgICBEbyBub3QgbWFrZSB0aGlzIHZhbHVlIHRvbyBsYXJnZTsgdGhlIHJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZgotKyAgIFNJWkVfTUFYIDwgWVlTVEFDS19CWVRFUyAoWVlNQVhERVBUSCkKLSsgICBldmFsdWF0ZWQgd2l0aCBpbmZpbml0ZS1wcmVjaXNpb24gaW50ZWdlciBhcml0aG1ldGljLiAgKi8KLSsKLSsjaWYgWVlNQVhERVBUSCA9PSAwCi0rIyB1bmRlZiBZWU1BWERFUFRICi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBZWU1BWERFUFRICi0rIyBkZWZpbmUgWVlNQVhERVBUSCAxMDAwMAotKyNlbmRpZgotKwwKLSsjaWZkZWYgWVlFUlJPUl9WRVJCT1NFCi0rCi0rIyBpZm5kZWYgeXlzdHJsZW4KLSsjICBpZiBkZWZpbmVkIChfX0dMSUJDX18pICYmIGRlZmluZWQgKF9TVFJJTkdfSCkKLSsjICAgZGVmaW5lIHl5c3RybGVuIHN0cmxlbgotKyMgIGVsc2UKLSsvKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiBZWVNUUi4gICovCi0rc3RhdGljIFlZU0laRV9UCi0rIyAgIGlmIGRlZmluZWQgKF9fU1REQ19fKSB8fCBkZWZpbmVkIChfX2NwbHVzcGx1cykKLSt5eXN0cmxlbiAoY29uc3QgY2hhciAqeXlzdHIpCi0rIyAgIGVsc2UKLSt5eXN0cmxlbiAoeXlzdHIpCi0rICAgICBjb25zdCBjaGFyICp5eXN0cjsKLSsjICAgZW5kaWYKLSt7Ci0rICByZWdpc3RlciBjb25zdCBjaGFyICp5eXMgPSB5eXN0cjsKLSsKLSsgIHdoaWxlICgqeXlzKysgIT0gJ1wwJykKLSsgICAgY29udGludWU7Ci0rCi0rICByZXR1cm4geXlzIC0geXlzdHIgLSAxOwotK30KLSsjICBlbmRpZgotKyMgZW5kaWYKLSsKLSsjIGlmbmRlZiB5eXN0cGNweQotKyMgIGlmIGRlZmluZWQgKF9fR0xJQkNfXykgJiYgZGVmaW5lZCAoX1NUUklOR19IKSAmJiBkZWZpbmVkIChfR05VX1NPVVJDRSkKLSsjICAgZGVmaW5lIHl5c3RwY3B5IHN0cGNweQotKyMgIGVsc2UKLSsvKiBDb3B5IFlZU1JDIHRvIFlZREVTVCwgcmV0dXJuaW5nIHRoZSBhZGRyZXNzIG9mIHRoZSB0ZXJtaW5hdGluZyAnXDAnIGluCi0rICAgWVlERVNULiAgKi8KLStzdGF0aWMgY2hhciAqCi0rIyAgIGlmIGRlZmluZWQgKF9fU1REQ19fKSB8fCBkZWZpbmVkIChfX2NwbHVzcGx1cykKLSt5eXN0cGNweSAoY2hhciAqeXlkZXN0LCBjb25zdCBjaGFyICp5eXNyYykKLSsjICAgZWxzZQotK3l5c3RwY3B5ICh5eWRlc3QsIHl5c3JjKQotKyAgICAgY2hhciAqeXlkZXN0OwotKyAgICAgY29uc3QgY2hhciAqeXlzcmM7Ci0rIyAgIGVuZGlmCi0rewotKyAgcmVnaXN0ZXIgY2hhciAqeXlkID0geXlkZXN0OwotKyAgcmVnaXN0ZXIgY29uc3QgY2hhciAqeXlzID0geXlzcmM7Ci0rCi0rICB3aGlsZSAoKCp5eWQrKyA9ICp5eXMrKykgIT0gJ1wwJykKLSsgICAgY29udGludWU7Ci0rCi0rICByZXR1cm4geXlkIC0gMTsKLSt9Ci0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rI2VuZGlmCi0rDAotKyNsaW5lIDMxNSAiL3Vzci9sb2NhbC9zaGFyZS9iaXNvbi9iaXNvbi5zaW1wbGUiCi0rCi0rCi0rLyogVGhlIHVzZXIgY2FuIGRlZmluZSBZWVBBUlNFX1BBUkFNIGFzIHRoZSBuYW1lIG9mIGFuIGFyZ3VtZW50IHRvIGJlIHBhc3NlZAotKyAgIGludG8geXlwYXJzZS4gIFRoZSBhcmd1bWVudCBzaG91bGQgaGF2ZSB0eXBlIHZvaWQgKi4KLSsgICBJdCBzaG91bGQgYWN0dWFsbHkgcG9pbnQgdG8gYW4gb2JqZWN0LgotKyAgIEdyYW1tYXIgYWN0aW9ucyBjYW4gYWNjZXNzIHRoZSB2YXJpYWJsZSBieSBjYXN0aW5nIGl0Ci0rICAgdG8gdGhlIHByb3BlciBwb2ludGVyIHR5cGUuICAqLwotKwotKyNpZmRlZiBZWVBBUlNFX1BBUkFNCi0rIyBpZiBkZWZpbmVkIChfX1NURENfXykgfHwgZGVmaW5lZCAoX19jcGx1c3BsdXMpCi0rIyAgZGVmaW5lIFlZUEFSU0VfUEFSQU1fQVJHIHZvaWQgKllZUEFSU0VfUEFSQU0KLSsjICBkZWZpbmUgWVlQQVJTRV9QQVJBTV9ERUNMCi0rIyBlbHNlCi0rIyAgZGVmaW5lIFlZUEFSU0VfUEFSQU1fQVJHIFlZUEFSU0VfUEFSQU0KLSsjICBkZWZpbmUgWVlQQVJTRV9QQVJBTV9ERUNMIHZvaWQgKllZUEFSU0VfUEFSQU07Ci0rIyBlbmRpZgotKyNlbHNlIC8qICFZWVBBUlNFX1BBUkFNICovCi0rIyBkZWZpbmUgWVlQQVJTRV9QQVJBTV9BUkcKLSsjIGRlZmluZSBZWVBBUlNFX1BBUkFNX0RFQ0wKLSsjZW5kaWYgLyogIVlZUEFSU0VfUEFSQU0gKi8KLSsKLSsvKiBQcmV2ZW50IHdhcm5pbmcgaWYgLVdzdHJpY3QtcHJvdG90eXBlcy4gICovCi0rI2lmZGVmIF9fR05VQ19fCi0rIyBpZmRlZiBZWVBBUlNFX1BBUkFNCi0raW50IHl5cGFyc2UgKHZvaWQgKik7Ci0rIyBlbHNlCi0raW50IHl5cGFyc2UgKHZvaWQpOwotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsvKiBZWV9ERUNMX1ZBUklBQkxFUyAtLSBkZXBlbmRpbmcgd2hldGhlciB3ZSB1c2UgYSBwdXJlIHBhcnNlciwKLSsgICB2YXJpYWJsZXMgYXJlIGdsb2JhbCwgb3IgbG9jYWwgdG8gWVlQQVJTRS4gICovCi0rCi0rI2RlZmluZSBZWV9ERUNMX05PTl9MU1BfVkFSSUFCTEVTCQkJXAotKy8qIFRoZSBsb29rYWhlYWQgc3ltYm9sLiAgKi8JCQkJXAotK2ludCB5eWNoYXI7CQkJCQkJXAotKwkJCQkJCQlcCi0rLyogVGhlIHNlbWFudGljIHZhbHVlIG9mIHRoZSBsb29rYWhlYWQgc3ltYm9sLiAqLwlcCi0rWVlTVFlQRSB5eWx2YWw7CQkJCQkJXAotKwkJCQkJCQlcCi0rLyogTnVtYmVyIG9mIHBhcnNlIGVycm9ycyBzbyBmYXIuICAqLwkJCVwKLStpbnQgeXluZXJyczsKLSsKLSsjaWYgWVlMU1BfTkVFREVECi0rIyBkZWZpbmUgWVlfREVDTF9WQVJJQUJMRVMJCQlcCi0rWVlfREVDTF9OT05fTFNQX1ZBUklBQkxFUwkJCVwKLSsJCQkJCQlcCi0rLyogTG9jYXRpb24gZGF0YSBmb3IgdGhlIGxvb2thaGVhZCBzeW1ib2wuICAqLwlcCi0rWVlMVFlQRSB5eWxsb2M7Ci0rI2Vsc2UKLSsjIGRlZmluZSBZWV9ERUNMX1ZBUklBQkxFUwkJCVwKLStZWV9ERUNMX05PTl9MU1BfVkFSSUFCTEVTCi0rI2VuZGlmCi0rCi0rCi0rLyogSWYgbm9ucmVlbnRyYW50LCBnZW5lcmF0ZSB0aGUgdmFyaWFibGVzIGhlcmUuICovCi0rCi0rI2lmICFZWVBVUkUKLStZWV9ERUNMX1ZBUklBQkxFUwotKyNlbmRpZiAgLyogIVlZUFVSRSAqLwotKwotK2ludAotK3l5cGFyc2UgKFlZUEFSU0VfUEFSQU1fQVJHKQotKyAgICAgWVlQQVJTRV9QQVJBTV9ERUNMCi0rewotKyAgLyogSWYgcmVlbnRyYW50LCBnZW5lcmF0ZSB0aGUgdmFyaWFibGVzIGhlcmUuICovCi0rI2lmIFlZUFVSRQotKyAgWVlfREVDTF9WQVJJQUJMRVMKLSsjZW5kaWYgIC8qICFZWVBVUkUgKi8KLSsKLSsgIHJlZ2lzdGVyIGludCB5eXN0YXRlOwotKyAgcmVnaXN0ZXIgaW50IHl5bjsKLSsgIGludCB5eXJlc3VsdDsKLSsgIC8qIE51bWJlciBvZiB0b2tlbnMgdG8gc2hpZnQgYmVmb3JlIGVycm9yIG1lc3NhZ2VzIGVuYWJsZWQuICAqLwotKyAgaW50IHl5ZXJyc3RhdHVzOwotKyAgLyogTG9va2FoZWFkIHRva2VuIGFzIGFuIGludGVybmFsICh0cmFuc2xhdGVkKSB0b2tlbiBudW1iZXIuICAqLwotKyAgaW50IHl5Y2hhcjEgPSAwOwotKwotKyAgLyogVGhyZWUgc3RhY2tzIGFuZCB0aGVpciB0b29sczoKLSsgICAgIGB5eXNzJzogcmVsYXRlZCB0byBzdGF0ZXMsCi0rICAgICBgeXl2cyc6IHJlbGF0ZWQgdG8gc2VtYW50aWMgdmFsdWVzLAotKyAgICAgYHl5bHMnOiByZWxhdGVkIHRvIGxvY2F0aW9ucy4KLSsKLSsgICAgIFJlZmVyIHRvIHRoZSBzdGFja3MgdGhydSBzZXBhcmF0ZSBwb2ludGVycywgdG8gYWxsb3cgeXlvdmVyZmxvdwotKyAgICAgdG8gcmVhbGxvY2F0ZSB0aGVtIGVsc2V3aGVyZS4gICovCi0rCi0rICAvKiBUaGUgc3RhdGUgc3RhY2suICovCi0rICBzaG9ydAl5eXNzYVtZWUlOSVRERVBUSF07Ci0rICBzaG9ydCAqeXlzcyA9IHl5c3NhOwotKyAgcmVnaXN0ZXIgc2hvcnQgKnl5c3NwOwotKwotKyAgLyogVGhlIHNlbWFudGljIHZhbHVlIHN0YWNrLiAgKi8KLSsgIFlZU1RZUEUgeXl2c2FbWVlJTklUREVQVEhdOwotKyAgWVlTVFlQRSAqeXl2cyA9IHl5dnNhOwotKyAgcmVnaXN0ZXIgWVlTVFlQRSAqeXl2c3A7Ci0rCi0rI2lmIFlZTFNQX05FRURFRAotKyAgLyogVGhlIGxvY2F0aW9uIHN0YWNrLiAgKi8KLSsgIFlZTFRZUEUgeXlsc2FbWVlJTklUREVQVEhdOwotKyAgWVlMVFlQRSAqeXlscyA9IHl5bHNhOwotKyAgWVlMVFlQRSAqeXlsc3A7Ci0rI2VuZGlmCi0rCi0rI2lmIFlZTFNQX05FRURFRAotKyMgZGVmaW5lIFlZUE9QU1RBQ0sgICAoeXl2c3AtLSwgeXlzc3AtLSwgeXlsc3AtLSkKLSsjZWxzZQotKyMgZGVmaW5lIFlZUE9QU1RBQ0sgICAoeXl2c3AtLSwgeXlzc3AtLSkKLSsjZW5kaWYKLSsKLSsgIFlZU0laRV9UIHl5c3RhY2tzaXplID0gWVlJTklUREVQVEg7Ci0rCi0rCi0rICAvKiBUaGUgdmFyaWFibGVzIHVzZWQgdG8gcmV0dXJuIHNlbWFudGljIHZhbHVlIGFuZCBsb2NhdGlvbiBmcm9tIHRoZQotKyAgICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KLSsgIFlZU1RZUEUgeXl2YWw7Ci0rI2lmIFlZTFNQX05FRURFRAotKyAgWVlMVFlQRSB5eWxvYzsKLSsjZW5kaWYKLSsKLSsgIC8qIFdoZW4gcmVkdWNpbmcsIHRoZSBudW1iZXIgb2Ygc3ltYm9scyBvbiB0aGUgUkhTIG9mIHRoZSByZWR1Y2VkCi0rICAgICBydWxlLiAqLwotKyAgaW50IHl5bGVuOwotKwotKyAgWVlEUFJJTlRGICgoc3RkZXJyLCAiU3RhcnRpbmcgcGFyc2VcbiIpKTsKLSsKLSsgIHl5c3RhdGUgPSAwOwotKyAgeXllcnJzdGF0dXMgPSAwOwotKyAgeXluZXJycyA9IDA7Ci0rICB5eWNoYXIgPSBZWUVNUFRZOwkJLyogQ2F1c2UgYSB0b2tlbiB0byBiZSByZWFkLiAgKi8KLSsKLSsgIC8qIEluaXRpYWxpemUgc3RhY2sgcG9pbnRlcnMuCi0rICAgICBXYXN0ZSBvbmUgZWxlbWVudCBvZiB2YWx1ZSBhbmQgbG9jYXRpb24gc3RhY2sKLSsgICAgIHNvIHRoYXQgdGhleSBzdGF5IG9uIHRoZSBzYW1lIGxldmVsIGFzIHRoZSBzdGF0ZSBzdGFjay4KLSsgICAgIFRoZSB3YXN0ZWQgZWxlbWVudHMgYXJlIG5ldmVyIGluaXRpYWxpemVkLiAgKi8KLSsKLSsgIHl5c3NwID0geXlzczsKLSsgIHl5dnNwID0geXl2czsKLSsjaWYgWVlMU1BfTkVFREVECi0rICB5eWxzcCA9IHl5bHM7Ci0rI2VuZGlmCi0rICBnb3RvIHl5c2V0c3RhdGU7Ci0rCi0rLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi0rfCB5eW5ld3N0YXRlIC0tIFB1c2ggYSBuZXcgc3RhdGUsIHdoaWNoIGlzIGZvdW5kIGluIHl5c3RhdGUuICB8Ci0rYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0rIHl5bmV3c3RhdGU6Ci0rICAvKiBJbiBhbGwgY2FzZXMsIHdoZW4geW91IGdldCBoZXJlLCB0aGUgdmFsdWUgYW5kIGxvY2F0aW9uIHN0YWNrcwotKyAgICAgaGF2ZSBqdXN0IGJlZW4gcHVzaGVkLiBzbyBwdXNoaW5nIGEgc3RhdGUgaGVyZSBldmVucyB0aGUgc3RhY2tzLgotKyAgICAgKi8KLSsgIHl5c3NwKys7Ci0rCi0rIHl5c2V0c3RhdGU6Ci0rICAqeXlzc3AgPSB5eXN0YXRlOwotKwotKyAgaWYgKHl5c3NwID49IHl5c3MgKyB5eXN0YWNrc2l6ZSAtIDEpCi0rICAgIHsKLSsgICAgICAvKiBHZXQgdGhlIGN1cnJlbnQgdXNlZCBzaXplIG9mIHRoZSB0aHJlZSBzdGFja3MsIGluIGVsZW1lbnRzLiAgKi8KLSsgICAgICBZWVNJWkVfVCB5eXNpemUgPSB5eXNzcCAtIHl5c3MgKyAxOwotKwotKyNpZmRlZiB5eW92ZXJmbG93Ci0rICAgICAgewotKwkvKiBHaXZlIHVzZXIgYSBjaGFuY2UgdG8gcmVhbGxvY2F0ZSB0aGUgc3RhY2suIFVzZSBjb3BpZXMgb2YKLSsJICAgdGhlc2Ugc28gdGhhdCB0aGUgJidzIGRvbid0IGZvcmNlIHRoZSByZWFsIG9uZXMgaW50bwotKwkgICBtZW1vcnkuICAqLwotKwlZWVNUWVBFICp5eXZzMSA9IHl5dnM7Ci0rCXNob3J0ICp5eXNzMSA9IHl5c3M7Ci0rCi0rCS8qIEVhY2ggc3RhY2sgcG9pbnRlciBhZGRyZXNzIGlzIGZvbGxvd2VkIGJ5IHRoZSBzaXplIG9mIHRoZQotKwkgICBkYXRhIGluIHVzZSBpbiB0aGF0IHN0YWNrLCBpbiBieXRlcy4gICovCi0rIyBpZiBZWUxTUF9ORUVERUQKLSsJWVlMVFlQRSAqeXlsczEgPSB5eWxzOwotKwkvKiBUaGlzIHVzZWQgdG8gYmUgYSBjb25kaXRpb25hbCBhcm91bmQganVzdCB0aGUgdHdvIGV4dHJhIGFyZ3MsCi0rCSAgIGJ1dCB0aGF0IG1pZ2h0IGJlIHVuZGVmaW5lZCBpZiB5eW92ZXJmbG93IGlzIGEgbWFjcm8uICAqLwotKwl5eW92ZXJmbG93ICgicGFyc2VyIHN0YWNrIG92ZXJmbG93IiwKLSsJCSAgICAmeXlzczEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5c3NwKSwKLSsJCSAgICAmeXl2czEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5dnNwKSwKLSsJCSAgICAmeXlsczEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5bHNwKSwKLSsJCSAgICAmeXlzdGFja3NpemUpOwotKwl5eWxzID0geXlsczE7Ci0rIyBlbHNlCi0rCXl5b3ZlcmZsb3cgKCJwYXJzZXIgc3RhY2sgb3ZlcmZsb3ciLAotKwkJICAgICZ5eXNzMSwgeXlzaXplICogc2l6ZW9mICgqeXlzc3ApLAotKwkJICAgICZ5eXZzMSwgeXlzaXplICogc2l6ZW9mICgqeXl2c3ApLAotKwkJICAgICZ5eXN0YWNrc2l6ZSk7Ci0rIyBlbmRpZgotKwl5eXNzID0geXlzczE7Ci0rCXl5dnMgPSB5eXZzMTsKLSsgICAgICB9Ci0rI2Vsc2UgLyogbm8geXlvdmVyZmxvdyAqLwotKyMgaWZuZGVmIFlZU1RBQ0tfUkVMT0NBVEUKLSsgICAgICBnb3RvIHl5b3ZlcmZsb3dsYWI7Ci0rIyBlbHNlCi0rICAgICAgLyogRXh0ZW5kIHRoZSBzdGFjayBvdXIgb3duIHdheS4gICovCi0rICAgICAgaWYgKHl5c3RhY2tzaXplID49IFlZTUFYREVQVEgpCi0rCWdvdG8geXlvdmVyZmxvd2xhYjsKLSsgICAgICB5eXN0YWNrc2l6ZSAqPSAyOwotKyAgICAgIGlmICh5eXN0YWNrc2l6ZSA+IFlZTUFYREVQVEgpCi0rCXl5c3RhY2tzaXplID0gWVlNQVhERVBUSDsKLSsKLSsgICAgICB7Ci0rCXNob3J0ICp5eXNzMSA9IHl5c3M7Ci0rCXVuaW9uIHl5YWxsb2MgKnl5cHRyID0KLSsJICAodW5pb24geXlhbGxvYyAqKSBZWVNUQUNLX0FMTE9DIChZWVNUQUNLX0JZVEVTICh5eXN0YWNrc2l6ZSkpOwotKwlpZiAoISB5eXB0cikKLSsJICBnb3RvIHl5b3ZlcmZsb3dsYWI7Ci0rCVlZU1RBQ0tfUkVMT0NBVEUgKHl5c3MpOwotKwlZWVNUQUNLX1JFTE9DQVRFICh5eXZzKTsKLSsjIGlmIFlZTFNQX05FRURFRAotKwlZWVNUQUNLX1JFTE9DQVRFICh5eWxzKTsKLSsjIGVuZGlmCi0rIyB1bmRlZiBZWVNUQUNLX1JFTE9DQVRFCi0rCWlmICh5eXNzMSAhPSB5eXNzYSkKLSsJICBZWVNUQUNLX0ZSRUUgKHl5c3MxKTsKLSsgICAgICB9Ci0rIyBlbmRpZgotKyNlbmRpZiAvKiBubyB5eW92ZXJmbG93ICovCi0rCi0rICAgICAgeXlzc3AgPSB5eXNzICsgeXlzaXplIC0gMTsKLSsgICAgICB5eXZzcCA9IHl5dnMgKyB5eXNpemUgLSAxOwotKyNpZiBZWUxTUF9ORUVERUQKLSsgICAgICB5eWxzcCA9IHl5bHMgKyB5eXNpemUgLSAxOwotKyNlbmRpZgotKwotKyAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YWNrIHNpemUgaW5jcmVhc2VkIHRvICVsdVxuIiwKLSsJCSAgKHVuc2lnbmVkIGxvbmcgaW50KSB5eXN0YWNrc2l6ZSkpOwotKwotKyAgICAgIGlmICh5eXNzcCA+PSB5eXNzICsgeXlzdGFja3NpemUgLSAxKQotKwlZWUFCT1JUOwotKyAgICB9Ci0rCi0rICBZWURQUklOVEYgKChzdGRlcnIsICJFbnRlcmluZyBzdGF0ZSAlZFxuIiwgeXlzdGF0ZSkpOwotKwotKyAgZ290byB5eWJhY2t1cDsKLSsKLSsKLSsvKi0tLS0tLS0tLS0tLgotK3wgeXliYWNrdXAuICB8Ci0rYC0tLS0tLS0tLS0tKi8KLSt5eWJhY2t1cDoKLSsKLSsvKiBEbyBhcHByb3ByaWF0ZSBwcm9jZXNzaW5nIGdpdmVuIHRoZSBjdXJyZW50IHN0YXRlLiAgKi8KLSsvKiBSZWFkIGEgbG9va2FoZWFkIHRva2VuIGlmIHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KLSsvKiB5eXJlc3VtZTogKi8KLSsKLSsgIC8qIEZpcnN0IHRyeSB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRob3V0IHJlZmVyZW5jZSB0byBsb29rYWhlYWQgdG9rZW4uICAqLwotKwotKyAgeXluID0geXlwYWN0W3l5c3RhdGVdOwotKyAgaWYgKHl5biA9PSBZWUZMQUcpCi0rICAgIGdvdG8geXlkZWZhdWx0OwotKwotKyAgLyogTm90IGtub3duID0+IGdldCBhIGxvb2thaGVhZCB0b2tlbiBpZiBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KLSsKLSsgIC8qIHl5Y2hhciBpcyBlaXRoZXIgWVlFTVBUWSBvciBZWUVPRgotKyAgICAgb3IgYSB2YWxpZCB0b2tlbiBpbiBleHRlcm5hbCBmb3JtLiAgKi8KLSsKLSsgIGlmICh5eWNoYXIgPT0gWVlFTVBUWSkKLSsgICAgewotKyAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlJlYWRpbmcgYSB0b2tlbjogIikpOwotKyAgICAgIHl5Y2hhciA9IFlZTEVYOwotKyAgICB9Ci0rCi0rICAvKiBDb252ZXJ0IHRva2VuIHRvIGludGVybmFsIGZvcm0gKGluIHl5Y2hhcjEpIGZvciBpbmRleGluZyB0YWJsZXMgd2l0aCAqLwotKwotKyAgaWYgKHl5Y2hhciA8PSAwKQkJLyogVGhpcyBtZWFucyBlbmQgb2YgaW5wdXQuICovCi0rICAgIHsKLSsgICAgICB5eWNoYXIxID0gMDsKLSsgICAgICB5eWNoYXIgPSBZWUVPRjsJCS8qIERvbid0IGNhbGwgWVlMRVggYW55IG1vcmUgKi8KLSsKLSsgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJOb3cgYXQgZW5kIG9mIGlucHV0LlxuIikpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICB5eWNoYXIxID0gWVlUUkFOU0xBVEUgKHl5Y2hhcik7Ci0rCi0rI2lmIFlZREVCVUcKLSsgICAgIC8qIFdlIGhhdmUgdG8ga2VlcCB0aGlzIGAjaWYgWVlERUJVRycsIHNpbmNlIHdlIHVzZSB2YXJpYWJsZXMKLSsJd2hpY2ggYXJlIGRlZmluZWQgb25seSBpZiBgWVlERUJVRycgaXMgc2V0LiAgKi8KLSsgICAgICBpZiAoeXlkZWJ1ZykKLSsJewotKwkgIFlZRlBSSU5URiAoc3RkZXJyLCAiTmV4dCB0b2tlbiBpcyAlZCAoJXMiLAotKwkJICAgICB5eWNoYXIsIHl5dG5hbWVbeXljaGFyMV0pOwotKwkgIC8qIEdpdmUgdGhlIGluZGl2aWR1YWwgcGFyc2VyIGEgd2F5IHRvIHByaW50IHRoZSBwcmVjaXNlCi0rCSAgICAgbWVhbmluZyBvZiBhIHRva2VuLCBmb3IgZnVydGhlciBkZWJ1Z2dpbmcgaW5mby4gICovCi0rIyBpZmRlZiBZWVBSSU5UCi0rCSAgWVlQUklOVCAoc3RkZXJyLCB5eWNoYXIsIHl5bHZhbCk7Ci0rIyBlbmRpZgotKwkgIFlZRlBSSU5URiAoc3RkZXJyLCAiKVxuIik7Ci0rCX0KLSsjZW5kaWYKLSsgICAgfQotKwotKyAgeXluICs9IHl5Y2hhcjE7Ci0rICBpZiAoeXluIDwgMCB8fCB5eW4gPiBZWUxBU1QgfHwgeXljaGVja1t5eW5dICE9IHl5Y2hhcjEpCi0rICAgIGdvdG8geXlkZWZhdWx0OwotKwotKyAgeXluID0geXl0YWJsZVt5eW5dOwotKwotKyAgLyogeXluIGlzIHdoYXQgdG8gZG8gZm9yIHRoaXMgdG9rZW4gdHlwZSBpbiB0aGlzIHN0YXRlLgotKyAgICAgTmVnYXRpdmUgPT4gcmVkdWNlLCAteXluIGlzIHJ1bGUgbnVtYmVyLgotKyAgICAgUG9zaXRpdmUgPT4gc2hpZnQsIHl5biBpcyBuZXcgc3RhdGUuCi0rICAgICAgIE5ldyBzdGF0ZSBpcyBmaW5hbCBzdGF0ZSA9PiBkb24ndCBib3RoZXIgdG8gc2hpZnQsCi0rICAgICAgIGp1c3QgcmV0dXJuIHN1Y2Nlc3MuCi0rICAgICAwLCBvciBtb3N0IG5lZ2F0aXZlIG51bWJlciA9PiBlcnJvci4gICovCi0rCi0rICBpZiAoeXluIDwgMCkKLSsgICAgewotKyAgICAgIGlmICh5eW4gPT0gWVlGTEFHKQotKwlnb3RvIHl5ZXJybGFiOwotKyAgICAgIHl5biA9IC15eW47Ci0rICAgICAgZ290byB5eXJlZHVjZTsKLSsgICAgfQotKyAgZWxzZSBpZiAoeXluID09IDApCi0rICAgIGdvdG8geXllcnJsYWI7Ci0rCi0rICBpZiAoeXluID09IFlZRklOQUwpCi0rICAgIFlZQUNDRVBUOwotKwotKyAgLyogU2hpZnQgdGhlIGxvb2thaGVhZCB0b2tlbi4gICovCi0rICBZWURQUklOVEYgKChzdGRlcnIsICJTaGlmdGluZyB0b2tlbiAlZCAoJXMpLCAiLAotKwkgICAgICB5eWNoYXIsIHl5dG5hbWVbeXljaGFyMV0pKTsKLSsKLSsgIC8qIERpc2NhcmQgdGhlIHRva2VuIGJlaW5nIHNoaWZ0ZWQgdW5sZXNzIGl0IGlzIGVvZi4gICovCi0rICBpZiAoeXljaGFyICE9IFlZRU9GKQotKyAgICB5eWNoYXIgPSBZWUVNUFRZOwotKwotKyAgKisreXl2c3AgPSB5eWx2YWw7Ci0rI2lmIFlZTFNQX05FRURFRAotKyAgKisreXlsc3AgPSB5eWxsb2M7Ci0rI2VuZGlmCi0rCi0rICAvKiBDb3VudCB0b2tlbnMgc2hpZnRlZCBzaW5jZSBlcnJvcjsgYWZ0ZXIgdGhyZWUsIHR1cm4gb2ZmIGVycm9yCi0rICAgICBzdGF0dXMuICAqLwotKyAgaWYgKHl5ZXJyc3RhdHVzKQotKyAgICB5eWVycnN0YXR1cy0tOwotKwotKyAgeXlzdGF0ZSA9IHl5bjsKLSsgIGdvdG8geXluZXdzdGF0ZTsKLSsKLSsKLSsvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotK3wgeXlkZWZhdWx0IC0tIGRvIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IgdGhlIGN1cnJlbnQgc3RhdGUuICB8Ci0rYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSt5eWRlZmF1bHQ6Ci0rICB5eW4gPSB5eWRlZmFjdFt5eXN0YXRlXTsKLSsgIGlmICh5eW4gPT0gMCkKLSsgICAgZ290byB5eWVycmxhYjsKLSsgIGdvdG8geXlyZWR1Y2U7Ci0rCi0rCi0rLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KLSt8IHl5cmVkdWNlIC0tIERvIGEgcmVkdWN0aW9uLiAgfAotK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0reXlyZWR1Y2U6Ci0rICAvKiB5eW4gaXMgdGhlIG51bWJlciBvZiBhIHJ1bGUgdG8gcmVkdWNlIHdpdGguICAqLwotKyAgeXlsZW4gPSB5eXIyW3l5bl07Ci0rCi0rICAvKiBJZiBZWUxFTiBpcyBub256ZXJvLCBpbXBsZW1lbnQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGFjdGlvbjoKLSsgICAgIGAkJCA9ICQxJy4KLSsKLSsgICAgIE90aGVyd2lzZSwgdGhlIGZvbGxvd2luZyBsaW5lIHNldHMgWVlWQUwgdG8gdGhlIHNlbWFudGljIHZhbHVlIG9mCi0rICAgICB0aGUgbG9va2FoZWFkIHRva2VuLiAgVGhpcyBiZWhhdmlvciBpcyB1bmRvY3VtZW50ZWQgYW5kIEJpc29uCi0rICAgICB1c2VycyBzaG91bGQgbm90IHJlbHkgdXBvbiBpdC4gIEFzc2lnbmluZyB0byBZWVZBTAotKyAgICAgdW5jb25kaXRpb25hbGx5IG1ha2VzIHRoZSBwYXJzZXIgYSBiaXQgc21hbGxlciwgYW5kIGl0IGF2b2lkcyBhCi0rICAgICBHQ0Mgd2FybmluZyB0aGF0IFlZVkFMIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQuICAqLwotKyAgeXl2YWwgPSB5eXZzcFsxLXl5bGVuXTsKLSsKLSsjaWYgWVlMU1BfTkVFREVECi0rICAvKiBTaW1pbGFybHkgZm9yIHRoZSBkZWZhdWx0IGxvY2F0aW9uLiAgTGV0IHRoZSB1c2VyIHJ1biBhZGRpdGlvbmFsCi0rICAgICBjb21tYW5kcyBpZiBmb3IgaW5zdGFuY2UgbG9jYXRpb25zIGFyZSByYW5nZXMuICAqLwotKyAgeXlsb2MgPSB5eWxzcFsxLXl5bGVuXTsKLSsgIFlZTExPQ19ERUZBVUxUICh5eWxvYywgKHl5bHNwIC0geXlsZW4pLCB5eWxlbik7Ci0rI2VuZGlmCi0rCi0rI2lmIFlZREVCVUcKLSsgIC8qIFdlIGhhdmUgdG8ga2VlcCB0aGlzIGAjaWYgWVlERUJVRycsIHNpbmNlIHdlIHVzZSB2YXJpYWJsZXMgd2hpY2gKLSsgICAgIGFyZSBkZWZpbmVkIG9ubHkgaWYgYFlZREVCVUcnIGlzIHNldC4gICovCi0rICBpZiAoeXlkZWJ1ZykKLSsgICAgewotKyAgICAgIGludCB5eWk7Ci0rCi0rICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJSZWR1Y2luZyB2aWEgcnVsZSAlZCAobGluZSAlZCksICIsCi0rCQkgeXluLCB5eXJsaW5lW3l5bl0pOwotKwotKyAgICAgIC8qIFByaW50IHRoZSBzeW1ib2xzIGJlaW5nIHJlZHVjZWQsIGFuZCB0aGVpciByZXN1bHQuICAqLwotKyAgICAgIGZvciAoeXlpID0geXlwcmhzW3l5bl07IHl5cmhzW3l5aV0gPiAwOyB5eWkrKykKLSsJWVlGUFJJTlRGIChzdGRlcnIsICIlcyAiLCB5eXRuYW1lW3l5cmhzW3l5aV1dKTsKLSsgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiAtPiAlc1xuIiwgeXl0bmFtZVt5eXIxW3l5bl1dKTsKLSsgICAgfQotKyNlbmRpZgotKwotKyAgc3dpdGNoICh5eW4pIHsKLSsKLStjYXNlIDE6Ci0rI2xpbmUgMTUxICJwbHVyYWwueSIKLSt7Ci0rCSAgICBpZiAoeXl2c3BbMF0uZXhwID09IE5VTEwpCi0rCSAgICAgIFlZQUJPUlQ7Ci0rCSAgICAoKHN0cnVjdCBwYXJzZV9hcmdzICopIGFyZyktPnJlcyA9IHl5dnNwWzBdLmV4cDsKLSsJICB9Ci0rICAgIGJyZWFrOwotK2Nhc2UgMjoKLSsjbGluZSAxNTkgInBsdXJhbC55IgotK3sKLSsJICAgIHl5dmFsLmV4cCA9IG5ld19leHBfMyAocW1vcCwgeXl2c3BbLTRdLmV4cCwgeXl2c3BbLTJdLmV4cCwgeXl2c3BbMF0uZXhwKTsKLSsJICB9Ci0rICAgIGJyZWFrOwotK2Nhc2UgMzoKLSsjbGluZSAxNjMgInBsdXJhbC55IgotK3sKLSsJICAgIHl5dmFsLmV4cCA9IG5ld19leHBfMiAobG9yLCB5eXZzcFstMl0uZXhwLCB5eXZzcFswXS5leHApOwotKwkgIH0KLSsgICAgYnJlYWs7Ci0rY2FzZSA0OgotKyNsaW5lIDE2NyAicGx1cmFsLnkiCi0rewotKwkgICAgeXl2YWwuZXhwID0gbmV3X2V4cF8yIChsYW5kLCB5eXZzcFstMl0uZXhwLCB5eXZzcFswXS5leHApOwotKwkgIH0KLSsgICAgYnJlYWs7Ci0rY2FzZSA1OgotKyNsaW5lIDE3MSAicGx1cmFsLnkiCi0rewotKwkgICAgeXl2YWwuZXhwID0gbmV3X2V4cF8yICh5eXZzcFstMV0ub3AsIHl5dnNwWy0yXS5leHAsIHl5dnNwWzBdLmV4cCk7Ci0rCSAgfQotKyAgICBicmVhazsKLStjYXNlIDY6Ci0rI2xpbmUgMTc1ICJwbHVyYWwueSIKLSt7Ci0rCSAgICB5eXZhbC5leHAgPSBuZXdfZXhwXzIgKHl5dnNwWy0xXS5vcCwgeXl2c3BbLTJdLmV4cCwgeXl2c3BbMF0uZXhwKTsKLSsJICB9Ci0rICAgIGJyZWFrOwotK2Nhc2UgNzoKLSsjbGluZSAxNzkgInBsdXJhbC55IgotK3sKLSsJICAgIHl5dmFsLmV4cCA9IG5ld19leHBfMiAoeXl2c3BbLTFdLm9wLCB5eXZzcFstMl0uZXhwLCB5eXZzcFswXS5leHApOwotKwkgIH0KLSsgICAgYnJlYWs7Ci0rY2FzZSA4OgotKyNsaW5lIDE4MyAicGx1cmFsLnkiCi0rewotKwkgICAgeXl2YWwuZXhwID0gbmV3X2V4cF8yICh5eXZzcFstMV0ub3AsIHl5dnNwWy0yXS5leHAsIHl5dnNwWzBdLmV4cCk7Ci0rCSAgfQotKyAgICBicmVhazsKLStjYXNlIDk6Ci0rI2xpbmUgMTg3ICJwbHVyYWwueSIKLSt7Ci0rCSAgICB5eXZhbC5leHAgPSBuZXdfZXhwXzEgKGxub3QsIHl5dnNwWzBdLmV4cCk7Ci0rCSAgfQotKyAgICBicmVhazsKLStjYXNlIDEwOgotKyNsaW5lIDE5MSAicGx1cmFsLnkiCi0rewotKwkgICAgeXl2YWwuZXhwID0gbmV3X2V4cF8wICh2YXIpOwotKwkgIH0KLSsgICAgYnJlYWs7Ci0rY2FzZSAxMToKLSsjbGluZSAxOTUgInBsdXJhbC55IgotK3sKLSsJICAgIGlmICgoeXl2YWwuZXhwID0gbmV3X2V4cF8wIChudW0pKSAhPSBOVUxMKQotKwkgICAgICB5eXZhbC5leHAtPnZhbC5udW0gPSB5eXZzcFswXS5udW07Ci0rCSAgfQotKyAgICBicmVhazsKLStjYXNlIDEyOgotKyNsaW5lIDIwMCAicGx1cmFsLnkiCi0rewotKwkgICAgeXl2YWwuZXhwID0geXl2c3BbLTFdLmV4cDsKLSsJICB9Ci0rICAgIGJyZWFrOwotK30KLSsKLSsjbGluZSA3MDUgIi91c3IvbG9jYWwvc2hhcmUvYmlzb24vYmlzb24uc2ltcGxlIgotKwotKwwKLSsgIHl5dnNwIC09IHl5bGVuOwotKyAgeXlzc3AgLT0geXlsZW47Ci0rI2lmIFlZTFNQX05FRURFRAotKyAgeXlsc3AgLT0geXlsZW47Ci0rI2VuZGlmCi0rCi0rI2lmIFlZREVCVUcKLSsgIGlmICh5eWRlYnVnKQotKyAgICB7Ci0rICAgICAgc2hvcnQgKnl5c3NwMSA9IHl5c3MgLSAxOwotKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAic3RhdGUgc3RhY2sgbm93Iik7Ci0rICAgICAgd2hpbGUgKHl5c3NwMSAhPSB5eXNzcCkKLSsJWVlGUFJJTlRGIChzdGRlcnIsICIgJWQiLCAqKyt5eXNzcDEpOwotKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiXG4iKTsKLSsgICAgfQotKyNlbmRpZgotKwotKyAgKisreXl2c3AgPSB5eXZhbDsKLSsjaWYgWVlMU1BfTkVFREVECi0rICAqKyt5eWxzcCA9IHl5bG9jOwotKyNlbmRpZgotKwotKyAgLyogTm93IGBzaGlmdCcgdGhlIHJlc3VsdCBvZiB0aGUgcmVkdWN0aW9uLiAgRGV0ZXJtaW5lIHdoYXQgc3RhdGUKLSsgICAgIHRoYXQgZ29lcyB0bywgYmFzZWQgb24gdGhlIHN0YXRlIHdlIHBvcHBlZCBiYWNrIHRvIGFuZCB0aGUgcnVsZQotKyAgICAgbnVtYmVyIHJlZHVjZWQgYnkuICAqLwotKwotKyAgeXluID0geXlyMVt5eW5dOwotKwotKyAgeXlzdGF0ZSA9IHl5cGdvdG9beXluIC0gWVlOVEJBU0VdICsgKnl5c3NwOwotKyAgaWYgKHl5c3RhdGUgPj0gMCAmJiB5eXN0YXRlIDw9IFlZTEFTVCAmJiB5eWNoZWNrW3l5c3RhdGVdID09ICp5eXNzcCkKLSsgICAgeXlzdGF0ZSA9IHl5dGFibGVbeXlzdGF0ZV07Ci0rICBlbHNlCi0rICAgIHl5c3RhdGUgPSB5eWRlZmdvdG9beXluIC0gWVlOVEJBU0VdOwotKwotKyAgZ290byB5eW5ld3N0YXRlOwotKwotKwotKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotK3wgeXllcnJsYWIgLS0gaGVyZSBvbiBkZXRlY3RpbmcgZXJyb3IgfAotK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotK3l5ZXJybGFiOgotKyAgLyogSWYgbm90IGFscmVhZHkgcmVjb3ZlcmluZyBmcm9tIGFuIGVycm9yLCByZXBvcnQgdGhpcyBlcnJvci4gICovCi0rICBpZiAoIXl5ZXJyc3RhdHVzKQotKyAgICB7Ci0rICAgICAgKyt5eW5lcnJzOwotKwotKyNpZmRlZiBZWUVSUk9SX1ZFUkJPU0UKLSsgICAgICB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07Ci0rCi0rICAgICAgaWYgKHl5biA+IFlZRkxBRyAmJiB5eW4gPCBZWUxBU1QpCi0rCXsKLSsJICBZWVNJWkVfVCB5eXNpemUgPSAwOwotKwkgIGNoYXIgKnl5bXNnOwotKwkgIGludCB5eXgsIHl5Y291bnQ7Ci0rCi0rCSAgeXljb3VudCA9IDA7Ci0rCSAgLyogU3RhcnQgWVlYIGF0IC1ZWU4gaWYgbmVnYXRpdmUgdG8gYXZvaWQgbmVnYXRpdmUgaW5kZXhlcyBpbgotKwkgICAgIFlZQ0hFQ0suICAqLwotKwkgIGZvciAoeXl4ID0geXluIDwgMCA/IC15eW4gOiAwOwotKwkgICAgICAgeXl4IDwgKGludCkgKHNpemVvZiAoeXl0bmFtZSkgLyBzaXplb2YgKGNoYXIgKikpOyB5eXgrKykKLSsJICAgIGlmICh5eWNoZWNrW3l5eCArIHl5bl0gPT0geXl4KQotKwkgICAgICB5eXNpemUgKz0geXlzdHJsZW4gKHl5dG5hbWVbeXl4XSkgKyAxNSwgeXljb3VudCsrOwotKwkgIHl5c2l6ZSArPSB5eXN0cmxlbiAoInBhcnNlIGVycm9yLCB1bmV4cGVjdGVkICIpICsgMTsKLSsJICB5eXNpemUgKz0geXlzdHJsZW4gKHl5dG5hbWVbWVlUUkFOU0xBVEUgKHl5Y2hhcildKTsKLSsJICB5eW1zZyA9IChjaGFyICopIFlZU1RBQ0tfQUxMT0MgKHl5c2l6ZSk7Ci0rCSAgaWYgKHl5bXNnICE9IDApCi0rCSAgICB7Ci0rCSAgICAgIGNoYXIgKnl5cCA9IHl5c3RwY3B5ICh5eW1zZywgInBhcnNlIGVycm9yLCB1bmV4cGVjdGVkICIpOwotKwkgICAgICB5eXAgPSB5eXN0cGNweSAoeXlwLCB5eXRuYW1lW1lZVFJBTlNMQVRFICh5eWNoYXIpXSk7Ci0rCi0rCSAgICAgIGlmICh5eWNvdW50IDwgNSkKLSsJCXsKLSsJCSAgeXljb3VudCA9IDA7Ci0rCQkgIGZvciAoeXl4ID0geXluIDwgMCA/IC15eW4gOiAwOwotKwkJICAgICAgIHl5eCA8IChpbnQpIChzaXplb2YgKHl5dG5hbWUpIC8gc2l6ZW9mIChjaGFyICopKTsKLSsJCSAgICAgICB5eXgrKykKLSsJCSAgICBpZiAoeXljaGVja1t5eXggKyB5eW5dID09IHl5eCkKLSsJCSAgICAgIHsKLSsJCQljb25zdCBjaGFyICp5eXEgPSAhIHl5Y291bnQgPyAiLCBleHBlY3RpbmcgIiA6ICIgb3IgIjsKLSsJCQl5eXAgPSB5eXN0cGNweSAoeXlwLCB5eXEpOwotKwkJCXl5cCA9IHl5c3RwY3B5ICh5eXAsIHl5dG5hbWVbeXl4XSk7Ci0rCQkJeXljb3VudCsrOwotKwkJICAgICAgfQotKwkJfQotKwkgICAgICB5eWVycm9yICh5eW1zZyk7Ci0rCSAgICAgIFlZU1RBQ0tfRlJFRSAoeXltc2cpOwotKwkgICAgfQotKwkgIGVsc2UKLSsJICAgIHl5ZXJyb3IgKCJwYXJzZSBlcnJvcjsgYWxzbyB2aXJ0dWFsIG1lbW9yeSBleGhhdXN0ZWQiKTsKLSsJfQotKyAgICAgIGVsc2UKLSsjZW5kaWYgLyogZGVmaW5lZCAoWVlFUlJPUl9WRVJCT1NFKSAqLwotKwl5eWVycm9yICgicGFyc2UgZXJyb3IiKTsKLSsgICAgfQotKyAgZ290byB5eWVycmxhYjE7Ci0rCi0rCi0rLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KLSt8IHl5ZXJybGFiMSAtLSBlcnJvciByYWlzZWQgZXhwbGljaXRseSBieSBhbiBhY3Rpb24gfAotK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0reXllcnJsYWIxOgotKyAgaWYgKHl5ZXJyc3RhdHVzID09IDMpCi0rICAgIHsKLSsgICAgICAvKiBJZiBqdXN0IHRyaWVkIGFuZCBmYWlsZWQgdG8gcmV1c2UgbG9va2FoZWFkIHRva2VuIGFmdGVyIGFuCi0rCSBlcnJvciwgZGlzY2FyZCBpdC4gICovCi0rCi0rICAgICAgLyogcmV0dXJuIGZhaWx1cmUgaWYgYXQgZW5kIG9mIGlucHV0ICovCi0rICAgICAgaWYgKHl5Y2hhciA9PSBZWUVPRikKLSsJWVlBQk9SVDsKLSsgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJEaXNjYXJkaW5nIHRva2VuICVkICglcykuXG4iLAotKwkJICB5eWNoYXIsIHl5dG5hbWVbeXljaGFyMV0pKTsKLSsgICAgICB5eWNoYXIgPSBZWUVNUFRZOwotKyAgICB9Ci0rCi0rICAvKiBFbHNlIHdpbGwgdHJ5IHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRlciBzaGlmdGluZyB0aGUgZXJyb3IKLSsgICAgIHRva2VuLiAgKi8KLSsKLSsgIHl5ZXJyc3RhdHVzID0gMzsJCS8qIEVhY2ggcmVhbCB0b2tlbiBzaGlmdGVkIGRlY3JlbWVudHMgdGhpcyAqLwotKwotKyAgZ290byB5eWVycmhhbmRsZTsKLSsKLSsKLSsvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi0rfCB5eWVycmRlZmF1bHQgLS0gY3VycmVudCBzdGF0ZSBkb2VzIG5vdCBkbyBhbnl0aGluZyBzcGVjaWFsIGZvciB0aGUgfAotK3wgZXJyb3IgdG9rZW4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLStgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0reXllcnJkZWZhdWx0OgotKyNpZiAwCi0rICAvKiBUaGlzIGlzIHdyb25nOyBvbmx5IHN0YXRlcyB0aGF0IGV4cGxpY2l0bHkgd2FudCBlcnJvciB0b2tlbnMKLSsgICAgIHNob3VsZCBzaGlmdCB0aGVtLiAgKi8KLSsKLSsgIC8qIElmIGl0cyBkZWZhdWx0IGlzIHRvIGFjY2VwdCBhbnkgdG9rZW4sIG9rLiAgT3RoZXJ3aXNlIHBvcCBpdC4gICovCi0rICB5eW4gPSB5eWRlZmFjdFt5eXN0YXRlXTsKLSsgIGlmICh5eW4pCi0rICAgIGdvdG8geXlkZWZhdWx0OwotKyNlbmRpZgotKwotKwotKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotK3wgeXllcnJwb3AgLS0gcG9wIHRoZSBjdXJyZW50IHN0YXRlIGJlY2F1c2UgaXQgY2Fubm90IGhhbmRsZSB0aGUgfAotK3wgZXJyb3IgdG9rZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotK3l5ZXJycG9wOgotKyAgaWYgKHl5c3NwID09IHl5c3MpCi0rICAgIFlZQUJPUlQ7Ci0rICB5eXZzcC0tOwotKyAgeXlzdGF0ZSA9ICotLXl5c3NwOwotKyNpZiBZWUxTUF9ORUVERUQKLSsgIHl5bHNwLS07Ci0rI2VuZGlmCi0rCi0rI2lmIFlZREVCVUcKLSsgIGlmICh5eWRlYnVnKQotKyAgICB7Ci0rICAgICAgc2hvcnQgKnl5c3NwMSA9IHl5c3MgLSAxOwotKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiRXJyb3I6IHN0YXRlIHN0YWNrIG5vdyIpOwotKyAgICAgIHdoaWxlICh5eXNzcDEgIT0geXlzc3ApCi0rCVlZRlBSSU5URiAoc3RkZXJyLCAiICVkIiwgKisreXlzc3AxKTsKLSsgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7Ci0rICAgIH0KLSsjZW5kaWYKLSsKLSsvKi0tLS0tLS0tLS0tLS0tLgotK3wgeXllcnJoYW5kbGUuICB8Ci0rYC0tLS0tLS0tLS0tLS0tKi8KLSt5eWVycmhhbmRsZToKLSsgIHl5biA9IHl5cGFjdFt5eXN0YXRlXTsKLSsgIGlmICh5eW4gPT0gWVlGTEFHKQotKyAgICBnb3RvIHl5ZXJyZGVmYXVsdDsKLSsKLSsgIHl5biArPSBZWVRFUlJPUjsKLSsgIGlmICh5eW4gPCAwIHx8IHl5biA+IFlZTEFTVCB8fCB5eWNoZWNrW3l5bl0gIT0gWVlURVJST1IpCi0rICAgIGdvdG8geXllcnJkZWZhdWx0OwotKwotKyAgeXluID0geXl0YWJsZVt5eW5dOwotKyAgaWYgKHl5biA8IDApCi0rICAgIHsKLSsgICAgICBpZiAoeXluID09IFlZRkxBRykKLSsJZ290byB5eWVycnBvcDsKLSsgICAgICB5eW4gPSAteXluOwotKyAgICAgIGdvdG8geXlyZWR1Y2U7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKHl5biA9PSAwKQotKyAgICBnb3RvIHl5ZXJycG9wOwotKwotKyAgaWYgKHl5biA9PSBZWUZJTkFMKQotKyAgICBZWUFDQ0VQVDsKLSsKLSsgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlNoaWZ0aW5nIGVycm9yIHRva2VuLCAiKSk7Ci0rCi0rICAqKyt5eXZzcCA9IHl5bHZhbDsKLSsjaWYgWVlMU1BfTkVFREVECi0rICAqKyt5eWxzcCA9IHl5bGxvYzsKLSsjZW5kaWYKLSsKLSsgIHl5c3RhdGUgPSB5eW47Ci0rICBnb3RvIHl5bmV3c3RhdGU7Ci0rCi0rCi0rLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotK3wgeXlhY2NlcHRsYWIgLS0gWVlBQ0NFUFQgY29tZXMgaGVyZS4gIHwKLStgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0reXlhY2NlcHRsYWI6Ci0rICB5eXJlc3VsdCA9IDA7Ci0rICBnb3RvIHl5cmV0dXJuOwotKwotKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi0rfCB5eWFib3J0bGFiIC0tIFlZQUJPUlQgY29tZXMgaGVyZS4gIHwKLStgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotK3l5YWJvcnRsYWI6Ci0rICB5eXJlc3VsdCA9IDE7Ci0rICBnb3RvIHl5cmV0dXJuOwotKwotKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotK3wgeXlvdmVyZmxvd2FiIC0tIHBhcnNlciBvdmVyZmxvdyBjb21lcyBoZXJlLiAgfAotK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotK3l5b3ZlcmZsb3dsYWI6Ci0rICB5eWVycm9yICgicGFyc2VyIHN0YWNrIG92ZXJmbG93Iik7Ci0rICB5eXJlc3VsdCA9IDI7Ci0rICAvKiBGYWxsIHRocm91Z2guICAqLwotKwotK3l5cmV0dXJuOgotKyNpZm5kZWYgeXlvdmVyZmxvdwotKyAgaWYgKHl5c3MgIT0geXlzc2EpCi0rICAgIFlZU1RBQ0tfRlJFRSAoeXlzcyk7Ci0rI2VuZGlmCi0rICByZXR1cm4geXlyZXN1bHQ7Ci0rfQotKyNsaW5lIDIwNSAicGx1cmFsLnkiCi0rCi0rCi0rdm9pZAotK2ludGVybmFsX2Z1bmN0aW9uCi0rRlJFRV9FWFBSRVNTSU9OIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwKQotK3sKLSsgIGlmIChleHAgPT0gTlVMTCkKLSsgICAgcmV0dXJuOwotKwotKyAgLyogSGFuZGxlIHRoZSByZWN1cnNpdmUgY2FzZS4gICovCi0rICBzd2l0Y2ggKGV4cC0+bmFyZ3MpCi0rICAgIHsKLSsgICAgY2FzZSAzOgotKyAgICAgIEZSRUVfRVhQUkVTU0lPTiAoZXhwLT52YWwuYXJnc1syXSk7Ci0rICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSsgICAgY2FzZSAyOgotKyAgICAgIEZSRUVfRVhQUkVTU0lPTiAoZXhwLT52YWwuYXJnc1sxXSk7Ci0rICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSsgICAgY2FzZSAxOgotKyAgICAgIEZSRUVfRVhQUkVTU0lPTiAoZXhwLT52YWwuYXJnc1swXSk7Ci0rICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSsgICAgZGVmYXVsdDoKLSsgICAgICBicmVhazsKLSsgICAgfQotKwotKyAgZnJlZSAoZXhwKTsKLSt9Ci0rCi0rCi0rc3RhdGljIGludAotK3l5bGV4IChZWVNUWVBFICpsdmFsLCBjb25zdCBjaGFyICoqcGV4cCkKLSt7Ci0rICBjb25zdCBjaGFyICpleHAgPSAqcGV4cDsKLSsgIGludCByZXN1bHQ7Ci0rCi0rICB3aGlsZSAoMSkKLSsgICAgewotKyAgICAgIGlmIChleHBbMF0gPT0gJ1wwJykKLSsJewotKwkgICpwZXhwID0gZXhwOwotKwkgIHJldHVybiBZWUVPRjsKLSsJfQotKwotKyAgICAgIGlmIChleHBbMF0gIT0gJyAnICYmIGV4cFswXSAhPSAnXHQnKQotKwlicmVhazsKLSsKLSsgICAgICArK2V4cDsKLSsgICAgfQotKwotKyAgcmVzdWx0ID0gKmV4cCsrOwotKyAgc3dpdGNoIChyZXN1bHQpCi0rICAgIHsKLSsgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOgotKyAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6Ci0rICAgICAgewotKwl1bnNpZ25lZCBsb25nIGludCBuID0gcmVzdWx0IC0gJzAnOwotKwl3aGlsZSAoZXhwWzBdID49ICcwJyAmJiBleHBbMF0gPD0gJzknKQotKwkgIHsKLSsJICAgIG4gKj0gMTA7Ci0rCSAgICBuICs9IGV4cFswXSAtICcwJzsKLSsJICAgICsrZXhwOwotKwkgIH0KLSsJbHZhbC0+bnVtID0gbjsKLSsJcmVzdWx0ID0gTlVNQkVSOwotKyAgICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnPSc6Ci0rICAgICAgaWYgKGV4cFswXSA9PSAnPScpCi0rCXsKLSsJICArK2V4cDsKLSsJICBsdmFsLT5vcCA9IGVxdWFsOwotKwkgIHJlc3VsdCA9IEVRVU9QMjsKLSsJfQotKyAgICAgIGVsc2UKLSsJcmVzdWx0ID0gWVlFUlJDT0RFOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICchJzoKLSsgICAgICBpZiAoZXhwWzBdID09ICc9JykKLSsJewotKwkgICsrZXhwOwotKwkgIGx2YWwtPm9wID0gbm90X2VxdWFsOwotKwkgIHJlc3VsdCA9IEVRVU9QMjsKLSsJfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICcmJzoKLSsgICAgY2FzZSAnfCc6Ci0rICAgICAgaWYgKGV4cFswXSA9PSByZXN1bHQpCi0rCSsrZXhwOwotKyAgICAgIGVsc2UKLSsJcmVzdWx0ID0gWVlFUlJDT0RFOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICc8JzoKLSsgICAgICBpZiAoZXhwWzBdID09ICc9JykKLSsJewotKwkgICsrZXhwOwotKwkgIGx2YWwtPm9wID0gbGVzc19vcl9lcXVhbDsKLSsJfQotKyAgICAgIGVsc2UKLSsJbHZhbC0+b3AgPSBsZXNzX3RoYW47Ci0rICAgICAgcmVzdWx0ID0gQ01QT1AyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICc+JzoKLSsgICAgICBpZiAoZXhwWzBdID09ICc9JykKLSsJewotKwkgICsrZXhwOwotKwkgIGx2YWwtPm9wID0gZ3JlYXRlcl9vcl9lcXVhbDsKLSsJfQotKyAgICAgIGVsc2UKLSsJbHZhbC0+b3AgPSBncmVhdGVyX3RoYW47Ci0rICAgICAgcmVzdWx0ID0gQ01QT1AyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICcqJzoKLSsgICAgICBsdmFsLT5vcCA9IG11bHQ7Ci0rICAgICAgcmVzdWx0ID0gTVVMT1AyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICcvJzoKLSsgICAgICBsdmFsLT5vcCA9IGRpdmlkZTsKLSsgICAgICByZXN1bHQgPSBNVUxPUDI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJyUnOgotKyAgICAgIGx2YWwtPm9wID0gbW9kdWxlOwotKyAgICAgIHJlc3VsdCA9IE1VTE9QMjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnKyc6Ci0rICAgICAgbHZhbC0+b3AgPSBwbHVzOwotKyAgICAgIHJlc3VsdCA9IEFERE9QMjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnLSc6Ci0rICAgICAgbHZhbC0+b3AgPSBtaW51czsKLSsgICAgICByZXN1bHQgPSBBRERPUDI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJ24nOgotKyAgICBjYXNlICc/JzoKLSsgICAgY2FzZSAnOic6Ci0rICAgIGNhc2UgJygnOgotKyAgICBjYXNlICcpJzoKLSsgICAgICAvKiBOb3RoaW5nLCBqdXN0IHJldHVybiB0aGUgY2hhcmFjdGVyLiAgKi8KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnOyc6Ci0rICAgIGNhc2UgJ1xuJzoKLSsgICAgY2FzZSAnXDAnOgotKyAgICAgIC8qIEJlIHNhZmUgYW5kIGxldCB0aGUgdXNlciBjYWxsIHRoaXMgZnVuY3Rpb24gYWdhaW4uICAqLwotKyAgICAgIC0tZXhwOwotKyAgICAgIHJlc3VsdCA9IFlZRU9GOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBkZWZhdWx0OgotKyAgICAgIHJlc3VsdCA9IFlZRVJSQ09ERTsKLSsjaWYgWVlERUJVRyAhPSAwCi0rICAgICAgLS1leHA7Ci0rI2VuZGlmCi0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgICpwZXhwID0gZXhwOwotKwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0rCi0rc3RhdGljIHZvaWQKLSt5eWVycm9yIChjb25zdCBjaGFyICpzdHIpCi0rewotKyAgLyogRG8gbm90aGluZy4gIFdlIGRvbid0IHByaW50IGVycm9yIG1lc3NhZ2VzIGhlcmUuICAqLwotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9wbHVyYWwtZXhwLmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvcGx1cmFsLWV4cC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNTc4NzE0MTkyIC0wNDAwCi1AQCAtMCwwICsxLDE1NCBAQAotKy8qIEV4cHJlc3Npb24gcGFyc2luZyBmb3IgcGx1cmFsIGZvcm0gc2VsZWN0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMjAwMC0yMDAxLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDIwMDAuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8Y3R5cGUuaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKwotKyNpbmNsdWRlICJwbHVyYWwtZXhwLmgiCi0rCi0rI2lmIChkZWZpbmVkIF9fR05VQ19fICYmICFkZWZpbmVkIF9fQVBQTEVfQ0NfXykgXAotKyAgICB8fCAoZGVmaW5lZCBfX1NURENfVkVSU0lPTl9fICYmIF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxTCkKLSsKLSsvKiBUaGVzZSBzdHJ1Y3RzIGFyZSB0aGUgY29uc3RhbnQgZXhwcmVzc2lvbiBmb3IgdGhlIGdlcm1hbmljIHBsdXJhbAotKyAgIGZvcm0gZGV0ZXJtaW5hdGlvbi4gIEl0IHJlcHJlc2VudHMgdGhlIGV4cHJlc3Npb24gICJuICE9IDEiLiAgKi8KLStzdGF0aWMgY29uc3Qgc3RydWN0IGV4cHJlc3Npb24gcGx2YXIgPQotK3sKLSsgIC5uYXJncyA9IDAsCi0rICAub3BlcmF0aW9uID0gdmFyLAotK307Ci0rc3RhdGljIGNvbnN0IHN0cnVjdCBleHByZXNzaW9uIHBsb25lID0KLSt7Ci0rICAubmFyZ3MgPSAwLAotKyAgLm9wZXJhdGlvbiA9IG51bSwKLSsgIC52YWwgPQotKyAgewotKyAgICAubnVtID0gMQotKyAgfQotK307Ci0rc3RydWN0IGV4cHJlc3Npb24gR0VSTUFOSUNfUExVUkFMID0KLSt7Ci0rICAubmFyZ3MgPSAyLAotKyAgLm9wZXJhdGlvbiA9IG5vdF9lcXVhbCwKLSsgIC52YWwgPQotKyAgewotKyAgICAuYXJncyA9Ci0rICAgIHsKLSsgICAgICBbMF0gPSAoc3RydWN0IGV4cHJlc3Npb24gKikgJnBsdmFyLAotKyAgICAgIFsxXSA9IChzdHJ1Y3QgZXhwcmVzc2lvbiAqKSAmcGxvbmUKLSsgICAgfQotKyAgfQotK307Ci0rCi0rIyBkZWZpbmUgSU5JVF9HRVJNQU5JQ19QTFVSQUwoKQotKwotKyNlbHNlCi0rCi0rLyogRm9yIGNvbXBpbGVycyB3aXRob3V0IHN1cHBvcnQgZm9yIElTTyBDIDk5IHN0cnVjdC91bmlvbiBpbml0aWFsaXplcnM6Ci0rICAgSW5pdGlhbGl6YXRpb24gYXQgcnVuLXRpbWUuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgZXhwcmVzc2lvbiBwbHZhcjsKLStzdGF0aWMgc3RydWN0IGV4cHJlc3Npb24gcGxvbmU7Ci0rc3RydWN0IGV4cHJlc3Npb24gR0VSTUFOSUNfUExVUkFMOwotKwotK3N0YXRpYyB2b2lkCi0raW5pdF9nZXJtYW5pY19wbHVyYWwgKCkKLSt7Ci0rICBpZiAocGxvbmUudmFsLm51bSA9PSAwKQotKyAgICB7Ci0rICAgICAgcGx2YXIubmFyZ3MgPSAwOwotKyAgICAgIHBsdmFyLm9wZXJhdGlvbiA9IHZhcjsKLSsKLSsgICAgICBwbG9uZS5uYXJncyA9IDA7Ci0rICAgICAgcGxvbmUub3BlcmF0aW9uID0gbnVtOwotKyAgICAgIHBsb25lLnZhbC5udW0gPSAxOwotKwotKyAgICAgIEdFUk1BTklDX1BMVVJBTC5uYXJncyA9IDI7Ci0rICAgICAgR0VSTUFOSUNfUExVUkFMLm9wZXJhdGlvbiA9IG5vdF9lcXVhbDsKLSsgICAgICBHRVJNQU5JQ19QTFVSQUwudmFsLmFyZ3NbMF0gPSAmcGx2YXI7Ci0rICAgICAgR0VSTUFOSUNfUExVUkFMLnZhbC5hcmdzWzFdID0gJnBsb25lOwotKyAgICB9Ci0rfQotKwotKyMgZGVmaW5lIElOSVRfR0VSTUFOSUNfUExVUkFMKCkgaW5pdF9nZXJtYW5pY19wbHVyYWwgKCkKLSsKLSsjZW5kaWYKLSsKLSt2b2lkCi0raW50ZXJuYWxfZnVuY3Rpb24KLStFWFRSQUNUX1BMVVJBTF9FWFBSRVNTSU9OIChjb25zdCBjaGFyICpudWxsZW50cnksIHN0cnVjdCBleHByZXNzaW9uICoqcGx1cmFscCwKLSsJCQkgICB1bnNpZ25lZCBsb25nIGludCAqbnBsdXJhbHNwKQotK3sKLSsgIGlmIChudWxsZW50cnkgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIGNvbnN0IGNoYXIgKnBsdXJhbDsKLSsgICAgICBjb25zdCBjaGFyICpucGx1cmFsczsKLSsKLSsgICAgICBwbHVyYWwgPSBzdHJzdHIgKG51bGxlbnRyeSwgInBsdXJhbD0iKTsKLSsgICAgICBucGx1cmFscyA9IHN0cnN0ciAobnVsbGVudHJ5LCAibnBsdXJhbHM9Iik7Ci0rICAgICAgaWYgKHBsdXJhbCA9PSBOVUxMIHx8IG5wbHVyYWxzID09IE5VTEwpCi0rCWdvdG8gbm9fcGx1cmFsOwotKyAgICAgIGVsc2UKLSsJewotKwkgIGNoYXIgKmVuZHA7Ci0rCSAgdW5zaWduZWQgbG9uZyBpbnQgbjsKLSsJICBzdHJ1Y3QgcGFyc2VfYXJncyBhcmdzOwotKwotKwkgIC8qIEZpcnN0IGdldCB0aGUgbnVtYmVyLiAgKi8KLSsJICBucGx1cmFscyArPSA5OwotKwkgIHdoaWxlICgqbnBsdXJhbHMgIT0gJ1wwJyAmJiBpc3NwYWNlICgodW5zaWduZWQgY2hhcikgKm5wbHVyYWxzKSkKLSsJICAgICsrbnBsdXJhbHM7Ci0rCSAgaWYgKCEoKm5wbHVyYWxzID49ICcwJyAmJiAqbnBsdXJhbHMgPD0gJzknKSkKLSsJICAgIGdvdG8gbm9fcGx1cmFsOwotKyNpZiBkZWZpbmVkIEhBVkVfU1RSVE9VTCB8fCBkZWZpbmVkIF9MSUJDCi0rCSAgbiA9IHN0cnRvdWwgKG5wbHVyYWxzLCAmZW5kcCwgMTApOwotKyNlbHNlCi0rCSAgZm9yIChlbmRwID0gbnBsdXJhbHMsIG4gPSAwOyAqZW5kcCA+PSAnMCcgJiYgKmVuZHAgPD0gJzknOyBlbmRwKyspCi0rCSAgICBuID0gbiAqIDEwICsgKCplbmRwIC0gJzAnKTsKLSsjZW5kaWYKLSsJICBpZiAobnBsdXJhbHMgPT0gZW5kcCkKLSsJICAgIGdvdG8gbm9fcGx1cmFsOwotKwkgICpucGx1cmFsc3AgPSBuOwotKwotKwkgIC8qIER1ZSB0byB0aGUgcmVzdHJpY3Rpb25zIGJpc29uIGltcG9zZXMgb250byB0aGUgaW50ZXJmYWNlIG9mIHRoZQotKwkgICAgIHNjYW5uZXIgZnVuY3Rpb24gd2UgaGF2ZSB0byBwdXQgdGhlIGlucHV0IHN0cmluZyBhbmQgdGhlIHJlc3VsdAotKwkgICAgIHBhc3NlZCB1cCBmcm9tIHRoZSBwYXJzZXIgaW50byB0aGUgc2FtZSBzdHJ1Y3R1cmUgd2hpY2ggYWRkcmVzcwotKwkgICAgIGlzIHBhc3NlZCBkb3duIHRvIHRoZSBwYXJzZXIuICAqLwotKwkgIHBsdXJhbCArPSA3OwotKwkgIGFyZ3MuY3AgPSBwbHVyYWw7Ci0rCSAgaWYgKFBMVVJBTF9QQVJTRSAoJmFyZ3MpICE9IDApCi0rCSAgICBnb3RvIG5vX3BsdXJhbDsKLSsJICAqcGx1cmFscCA9IGFyZ3MucmVzOwotKwl9Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIC8qIEJ5IGRlZmF1bHQgd2UgYXJlIHVzaW5nIHRoZSBHZXJtYW5pYyBmb3JtOiBzaW5ndWxhciBmb3JtIG9ubHkKLSsgICAgICAgICBmb3IgYG9uZScsIHRoZSBwbHVyYWwgZm9ybSBvdGhlcndpc2UuICBZZXMsIHRoaXMgaXMgYWxzbyB3aGF0Ci0rICAgICAgICAgRW5nbGlzaCBpcyB1c2luZyBzaW5jZSBFbmdsaXNoIGlzIGEgR2VybWFuaWMgbGFuZ3VhZ2UuICAqLwotKyAgICBub19wbHVyYWw6Ci0rICAgICAgSU5JVF9HRVJNQU5JQ19QTFVSQUwgKCk7Ci0rICAgICAgKnBsdXJhbHAgPSAmR0VSTUFOSUNfUExVUkFMOwotKyAgICAgICpucGx1cmFsc3AgPSAyOwotKyAgICB9Ci0rfQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3BsdXJhbC1leHAuaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9wbHVyYWwtZXhwLmgJMjAwNC0wOS0xMiAxNDo0MDozNC41ODQ3MTMyODAgLTA0MDAKLUBAIC0wLDAgKzEsMTE4IEBACi0rLyogRXhwcmVzc2lvbiBwYXJzaW5nIGFuZCBldmFsdWF0aW9uIGZvciBwbHVyYWwgZm9ybSBzZWxlY3Rpb24uCi0rICAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMjAwMC4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmbmRlZiBfUExVUkFMX0VYUF9ICi0rI2RlZmluZSBfUExVUkFMX0VYUF9ICi0rCi0rI2lmbmRlZiBpbnRlcm5hbF9mdW5jdGlvbgotKyMgZGVmaW5lIGludGVybmFsX2Z1bmN0aW9uCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBhdHRyaWJ1dGVfaGlkZGVuCi0rIyBkZWZpbmUgYXR0cmlidXRlX2hpZGRlbgotKyNlbmRpZgotKwotKwotKy8qIFRoaXMgaXMgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBleHByZXNzaW9ucyB0byBkZXRlcm1pbmUgdGhlCi0rICAgcGx1cmFsIGZvcm0uICAqLwotK3N0cnVjdCBleHByZXNzaW9uCi0rewotKyAgaW50IG5hcmdzOwkJCS8qIE51bWJlciBvZiBhcmd1bWVudHMuICAqLwotKyAgZW51bSBvcGVyYXRvcgotKyAgewotKyAgICAvKiBXaXRob3V0IGFyZ3VtZW50czogICovCi0rICAgIHZhciwJCQkvKiBUaGUgdmFyaWFibGUgIm4iLiAgKi8KLSsgICAgbnVtLAkJCS8qIERlY2ltYWwgbnVtYmVyLiAgKi8KLSsgICAgLyogVW5hcnkgb3BlcmF0b3JzOiAgKi8KLSsgICAgbG5vdCwJCQkvKiBMb2dpY2FsIE5PVC4gICovCi0rICAgIC8qIEJpbmFyeSBvcGVyYXRvcnM6ICAqLwotKyAgICBtdWx0LAkJCS8qIE11bHRpcGxpY2F0aW9uLiAgKi8KLSsgICAgZGl2aWRlLAkJCS8qIERpdmlzaW9uLiAgKi8KLSsgICAgbW9kdWxlLAkJCS8qIE1vZHVsbyBvcGVyYXRpb24uICAqLwotKyAgICBwbHVzLAkJCS8qIEFkZGl0aW9uLiAgKi8KLSsgICAgbWludXMsCQkJLyogU3VidHJhY3Rpb24uICAqLwotKyAgICBsZXNzX3RoYW4sCQkJLyogQ29tcGFyaXNvbi4gICovCi0rICAgIGdyZWF0ZXJfdGhhbiwJCS8qIENvbXBhcmlzb24uICAqLwotKyAgICBsZXNzX29yX2VxdWFsLAkJLyogQ29tcGFyaXNvbi4gICovCi0rICAgIGdyZWF0ZXJfb3JfZXF1YWwsCQkvKiBDb21wYXJpc29uLiAgKi8KLSsgICAgZXF1YWwsCQkJLyogQ29tcGFyaXNvbiBmb3IgZXF1YWxpdHkuICAqLwotKyAgICBub3RfZXF1YWwsCQkJLyogQ29tcGFyaXNvbiBmb3IgaW5lcXVhbGl0eS4gICovCi0rICAgIGxhbmQsCQkJLyogTG9naWNhbCBBTkQuICAqLwotKyAgICBsb3IsCQkJLyogTG9naWNhbCBPUi4gICovCi0rICAgIC8qIFRlcm5hcnkgb3BlcmF0b3JzOiAgKi8KLSsgICAgcW1vcAkJCS8qIFF1ZXN0aW9uIG1hcmsgb3BlcmF0b3IuICAqLwotKyAgfSBvcGVyYXRpb247Ci0rICB1bmlvbgotKyAgewotKyAgICB1bnNpZ25lZCBsb25nIGludCBudW07CS8qIE51bWJlciB2YWx1ZSBmb3IgYG51bScuICAqLwotKyAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqYXJnc1szXTsJLyogVXAgdG8gdGhyZWUgYXJndW1lbnRzLiAgKi8KLSsgIH0gdmFsOwotK307Ci0rCi0rLyogVGhpcyBpcyB0aGUgZGF0YSBzdHJ1Y3R1cmUgdG8gcGFzcyBpbmZvcm1hdGlvbiB0byB0aGUgcGFyc2VyIGFuZCBnZXQKLSsgICB0aGUgcmVzdWx0IGluIGEgdGhyZWFkLXNhZmUgd2F5LiAgKi8KLStzdHJ1Y3QgcGFyc2VfYXJncwotK3sKLSsgIGNvbnN0IGNoYXIgKmNwOwotKyAgc3RydWN0IGV4cHJlc3Npb24gKnJlczsKLSt9OwotKwotKwotKy8qIE5hbWVzIGZvciB0aGUgbGliaW50bCBmdW5jdGlvbnMgYXJlIGEgcHJvYmxlbS4gIFRoaXMgc291cmNlIGNvZGUgaXMgdXNlZAotKyAgIDEuIGluIHRoZSBHTlUgQyBMaWJyYXJ5IGxpYnJhcnksCi0rICAgMi4gaW4gdGhlIEdOVSBsaWJpbnRsIGxpYnJhcnksCi0rICAgMy4gaW4gdGhlIEdOVSBnZXR0ZXh0IHRvb2xzLgotKyAgIFRoZSBmdW5jdGlvbiBuYW1lcyBpbiBlYWNoIHNpdHVhdGlvbiBtdXN0IGJlIGRpZmZlcmVudCwgdG8gYWxsb3cgZm9yCi0rICAgYmluYXJ5IGluY29tcGF0aWJsZSBjaGFuZ2VzIGluICdzdHJ1Y3QgZXhwcmVzc2lvbicuICBGdXJ0aGVybW9yZSwKLSsgICAxLiBpbiB0aGUgR05VIEMgTGlicmFyeSBsaWJyYXJ5LCB0aGUgbmFtZXMgaGF2ZSBhIF9fIHByZWZpeCwKLSsgICAyLiszLiBpbiB0aGUgR05VIGxpYmludGwgbGlicmFyeSBhbmQgaW4gdGhlIEdOVSBnZXR0ZXh0IHRvb2xzLCB0aGUgbmFtZXMKLSsgICAgICAgICBtdXN0IGZvbGxvdyBBTlNJIEMgYW5kIG5vdCBzdGFydCB3aXRoIF9fLgotKyAgIFNvIHdlIGhhdmUgdG8gZGlzdGluZ3Vpc2ggdGhlIHRocmVlIGNhc2VzLiAgKi8KLSsjaWZkZWYgX0xJQkMKLSsjIGRlZmluZSBGUkVFX0VYUFJFU1NJT04gX19nZXR0ZXh0X2ZyZWVfZXhwCi0rIyBkZWZpbmUgUExVUkFMX1BBUlNFIF9fZ2V0dGV4dHBhcnNlCi0rIyBkZWZpbmUgR0VSTUFOSUNfUExVUkFMIF9fZ2V0dGV4dF9nZXJtYW5pY19wbHVyYWwKLSsjIGRlZmluZSBFWFRSQUNUX1BMVVJBTF9FWFBSRVNTSU9OIF9fZ2V0dGV4dF9leHRyYWN0X3BsdXJhbAotKyNlbGlmIGRlZmluZWQgKElOX0xJQklOVEwpCi0rIyBkZWZpbmUgRlJFRV9FWFBSRVNTSU9OIGxpYmludGxfZ2V0dGV4dF9mcmVlX2V4cAotKyMgZGVmaW5lIFBMVVJBTF9QQVJTRSBsaWJpbnRsX2dldHRleHRwYXJzZQotKyMgZGVmaW5lIEdFUk1BTklDX1BMVVJBTCBsaWJpbnRsX2dldHRleHRfZ2VybWFuaWNfcGx1cmFsCi0rIyBkZWZpbmUgRVhUUkFDVF9QTFVSQUxfRVhQUkVTU0lPTiBsaWJpbnRsX2dldHRleHRfZXh0cmFjdF9wbHVyYWwKLSsjZWxzZQotKyMgZGVmaW5lIEZSRUVfRVhQUkVTU0lPTiBmcmVlX3BsdXJhbF9leHByZXNzaW9uCi0rIyBkZWZpbmUgUExVUkFMX1BBUlNFIHBhcnNlX3BsdXJhbF9leHByZXNzaW9uCi0rIyBkZWZpbmUgR0VSTUFOSUNfUExVUkFMIGdlcm1hbmljX3BsdXJhbAotKyMgZGVmaW5lIEVYVFJBQ1RfUExVUkFMX0VYUFJFU1NJT04gZXh0cmFjdF9wbHVyYWxfZXhwcmVzc2lvbgotKyNlbmRpZgotKwotK2V4dGVybiB2b2lkIEZSRUVfRVhQUkVTU0lPTiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCkKLSsgICAgIGludGVybmFsX2Z1bmN0aW9uOwotK2V4dGVybiBpbnQgUExVUkFMX1BBUlNFICh2b2lkICphcmcpOwotK2V4dGVybiBzdHJ1Y3QgZXhwcmVzc2lvbiBHRVJNQU5JQ19QTFVSQUwgYXR0cmlidXRlX2hpZGRlbjsKLStleHRlcm4gdm9pZCBFWFRSQUNUX1BMVVJBTF9FWFBSRVNTSU9OIChjb25zdCBjaGFyICpudWxsZW50cnksCi0rCQkJCSAgICAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqKnBsdXJhbHAsCi0rCQkJCSAgICAgICB1bnNpZ25lZCBsb25nIGludCAqbnBsdXJhbHNwKQotKyAgICAgaW50ZXJuYWxfZnVuY3Rpb247Ci0rCi0rI2lmICFkZWZpbmVkIChfTElCQykgJiYgIWRlZmluZWQgKElOX0xJQklOVEwpCi0rZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHBsdXJhbF9ldmFsIChzdHJ1Y3QgZXhwcmVzc2lvbiAqcGV4cCwKLSsJCQkJICAgICAgdW5zaWduZWQgbG9uZyBpbnQgbik7Ci0rI2VuZGlmCi0rCi0rI2VuZGlmIC8qIF9QTFVSQUxfRVhQX0ggKi8KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9wbHVyYWwueQkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9wbHVyYWwueQkyMDA0LTA5LTEyIDE0OjQwOjM0LjU4OTcxMjUyMCAtMDQwMAotQEAgLTAsMCArMSwzODEgQEAKLSslewotKy8qIEV4cHJlc3Npb24gcGFyc2luZyBmb3IgcGx1cmFsIGZvcm0gc2VsZWN0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMjAwMC0yMDAxLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDIwMDAuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKy8qIFRoZSBiaXNvbiBnZW5lcmF0ZWQgcGFyc2VyIHVzZXMgYWxsb2NhLiAgQUlYIDMgZm9yY2VzIHVzIHRvIHB1dCB0aGlzCi0rICAgZGVjbGFyYXRpb24gYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4gIFRoZSBkZWNsYXJhdGlvbiBpbiBiaXNvbidzCi0rICAgc2tlbGV0b24gZmlsZSBjb21lcyB0b28gbGF0ZS4gIFRoaXMgbXVzdCBjb21lIGJlZm9yZSA8Y29uZmlnLmg+Ci0rICAgYmVjYXVzZSA8Y29uZmlnLmg+IG1heSBpbmNsdWRlIGFyYml0cmFyeSBzeXN0ZW0gaGVhZGVycy4gICovCi0rI2lmIGRlZmluZWQgX0FJWCAmJiAhZGVmaW5lZCBfX0dOVUNfXwotKyAjcHJhZ21hIGFsbG9jYQotKyNlbmRpZgotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlICJwbHVyYWwtZXhwLmgiCi0rCi0rLyogVGhlIG1haW4gZnVuY3Rpb24gZ2VuZXJhdGVkIGJ5IHRoZSBwYXJzZXIgaXMgY2FsbGVkIF9fZ2V0dGV4dHBhcnNlLAotKyAgIGJ1dCB3ZSB3YW50IGl0IHRvIGJlIGNhbGxlZCBQTFVSQUxfUEFSU0UuICAqLwotKyNpZm5kZWYgX0xJQkMKLSsjIGRlZmluZSBfX2dldHRleHRwYXJzZSBQTFVSQUxfUEFSU0UKLSsjZW5kaWYKLSsKLSsjZGVmaW5lIFlZTEVYX1BBUkFNCSYoKHN0cnVjdCBwYXJzZV9hcmdzICopIGFyZyktPmNwCi0rI2RlZmluZSBZWVBBUlNFX1BBUkFNCWFyZwotKyV9Ci0rJXB1cmVfcGFyc2VyCi0rJWV4cGVjdCA3Ci0rCi0rJXVuaW9uIHsKLSsgIHVuc2lnbmVkIGxvbmcgaW50IG51bTsKLSsgIGVudW0gb3BlcmF0b3Igb3A7Ci0rICBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwOwotK30KLSsKLSslewotKy8qIFByb3RvdHlwZXMgZm9yIGxvY2FsIGZ1bmN0aW9ucy4gICovCi0rc3RhdGljIGludCB5eWxleCAoWVlTVFlQRSAqbHZhbCwgY29uc3QgY2hhciAqKnBleHApOwotK3N0YXRpYyB2b2lkIHl5ZXJyb3IgKGNvbnN0IGNoYXIgKnN0cik7Ci0rCi0rLyogQWxsb2NhdGlvbiBvZiBleHByZXNzaW9ucy4gICovCi0rCi0rc3RhdGljIHN0cnVjdCBleHByZXNzaW9uICoKLStuZXdfZXhwIChpbnQgbmFyZ3MsIGVudW0gb3BlcmF0b3Igb3AsIHN0cnVjdCBleHByZXNzaW9uICogY29uc3QgKmFyZ3MpCi0rewotKyAgaW50IGk7Ci0rICBzdHJ1Y3QgZXhwcmVzc2lvbiAqbmV3cDsKLSsKLSsgIC8qIElmIGFueSBvZiB0aGUgYXJndW1lbnQgY291bGQgbm90IGJlIG1hbGxvYydlZCwganVzdCByZXR1cm4gTlVMTC4gICovCi0rICBmb3IgKGkgPSBuYXJncyAtIDE7IGkgPj0gMDsgaS0tKQotKyAgICBpZiAoYXJnc1tpXSA9PSBOVUxMKQotKyAgICAgIGdvdG8gZmFpbDsKLSsKLSsgIC8qIEFsbG9jYXRlIGEgbmV3IGV4cHJlc3Npb24uICAqLwotKyAgbmV3cCA9IChzdHJ1Y3QgZXhwcmVzc2lvbiAqKSBtYWxsb2MgKHNpemVvZiAoKm5ld3ApKTsKLSsgIGlmIChuZXdwICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBuZXdwLT5uYXJncyA9IG5hcmdzOwotKyAgICAgIG5ld3AtPm9wZXJhdGlvbiA9IG9wOwotKyAgICAgIGZvciAoaSA9IG5hcmdzIC0gMTsgaSA+PSAwOyBpLS0pCi0rCW5ld3AtPnZhbC5hcmdzW2ldID0gYXJnc1tpXTsKLSsgICAgICByZXR1cm4gbmV3cDsKLSsgICAgfQotKwotKyBmYWlsOgotKyAgZm9yIChpID0gbmFyZ3MgLSAxOyBpID49IDA7IGktLSkKLSsgICAgRlJFRV9FWFBSRVNTSU9OIChhcmdzW2ldKTsKLSsKLSsgIHJldHVybiBOVUxMOwotK30KLSsKLStzdGF0aWMgaW5saW5lIHN0cnVjdCBleHByZXNzaW9uICoKLStuZXdfZXhwXzAgKGVudW0gb3BlcmF0b3Igb3ApCi0rewotKyAgcmV0dXJuIG5ld19leHAgKDAsIG9wLCBOVUxMKTsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSBzdHJ1Y3QgZXhwcmVzc2lvbiAqCi0rbmV3X2V4cF8xIChlbnVtIG9wZXJhdG9yIG9wLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqcmlnaHQpCi0rewotKyAgc3RydWN0IGV4cHJlc3Npb24gKmFyZ3NbMV07Ci0rCi0rICBhcmdzWzBdID0gcmlnaHQ7Ci0rICByZXR1cm4gbmV3X2V4cCAoMSwgb3AsIGFyZ3MpOwotK30KLSsKLStzdGF0aWMgc3RydWN0IGV4cHJlc3Npb24gKgotK25ld19leHBfMiAoZW51bSBvcGVyYXRvciBvcCwgc3RydWN0IGV4cHJlc3Npb24gKmxlZnQsIHN0cnVjdCBleHByZXNzaW9uICpyaWdodCkKLSt7Ci0rICBzdHJ1Y3QgZXhwcmVzc2lvbiAqYXJnc1syXTsKLSsKLSsgIGFyZ3NbMF0gPSBsZWZ0OwotKyAgYXJnc1sxXSA9IHJpZ2h0OwotKyAgcmV0dXJuIG5ld19leHAgKDIsIG9wLCBhcmdzKTsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSBzdHJ1Y3QgZXhwcmVzc2lvbiAqCi0rbmV3X2V4cF8zIChlbnVtIG9wZXJhdG9yIG9wLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqYmV4cCwKLSsJICAgc3RydWN0IGV4cHJlc3Npb24gKnRicmFuY2gsIHN0cnVjdCBleHByZXNzaW9uICpmYnJhbmNoKQotK3sKLSsgIHN0cnVjdCBleHByZXNzaW9uICphcmdzWzNdOwotKwotKyAgYXJnc1swXSA9IGJleHA7Ci0rICBhcmdzWzFdID0gdGJyYW5jaDsKLSsgIGFyZ3NbMl0gPSBmYnJhbmNoOwotKyAgcmV0dXJuIG5ld19leHAgKDMsIG9wLCBhcmdzKTsKLSt9Ci0rCi0rJX0KLSsKLSsvKiBUaGlzIGRlY2xhcmVzIHRoYXQgYWxsIG9wZXJhdG9ycyBoYXZlIHRoZSBzYW1lIGFzc29jaWF0aXZpdHkgYW5kIHRoZQotKyAgIHByZWNlZGVuY2Ugb3JkZXIgYXMgaW4gQy4gIFNlZSBbSGFyYmlzb24sIFN0ZWVsZTogQywgQSBSZWZlcmVuY2UgTWFudWFsXS4KLSsgICBUaGVyZSBpcyBubyB1bmFyeSBtaW51cyBhbmQgbm8gYml0d2lzZSBvcGVyYXRvcnMuCi0rICAgT3BlcmF0b3JzIHdpdGggdGhlIHNhbWUgc3ludGFjdGljIGJlaGF2aW91ciBoYXZlIGJlZW4gbWVyZ2VkIGludG8gYSBzaW5nbGUKLSsgICB0b2tlbiwgdG8gc2F2ZSBzcGFjZSBpbiB0aGUgYXJyYXkgZ2VuZXJhdGVkIGJ5IGJpc29uLiAgKi8KLSslcmlnaHQgJz8nCQkvKiAgID8JCSovCi0rJWxlZnQgJ3wnCQkvKiAgIHx8CQkqLwotKyVsZWZ0ICcmJwkJLyogICAmJgkJKi8KLSslbGVmdCBFUVVPUDIJCS8qICAgPT0gIT0JKi8KLSslbGVmdCBDTVBPUDIJCS8qICAgPCA+IDw9ID49CSovCi0rJWxlZnQgQURET1AyCQkvKiAgICsgLQkqLwotKyVsZWZ0IE1VTE9QMgkJLyogICAqIC8gJQkqLwotKyVyaWdodCAnIScJCS8qICAgIQkJKi8KLSsKLSsldG9rZW4gPG9wPiBFUVVPUDIgQ01QT1AyIEFERE9QMiBNVUxPUDIKLSsldG9rZW4gPG51bT4gTlVNQkVSCi0rJXR5cGUgPGV4cD4gZXhwCi0rCi0rJSUKLSsKLStzdGFydDoJICBleHAKLSsJICB7Ci0rCSAgICBpZiAoJDEgPT0gTlVMTCkKLSsJICAgICAgWVlBQk9SVDsKLSsJICAgICgoc3RydWN0IHBhcnNlX2FyZ3MgKikgYXJnKS0+cmVzID0gJDE7Ci0rCSAgfQotKwk7Ci0rCi0rZXhwOgkgIGV4cCAnPycgZXhwICc6JyBleHAKLSsJICB7Ci0rCSAgICAkJCA9IG5ld19leHBfMyAocW1vcCwgJDEsICQzLCAkNSk7Ci0rCSAgfQotKwl8IGV4cCAnfCcgZXhwCi0rCSAgewotKwkgICAgJCQgPSBuZXdfZXhwXzIgKGxvciwgJDEsICQzKTsKLSsJICB9Ci0rCXwgZXhwICcmJyBleHAKLSsJICB7Ci0rCSAgICAkJCA9IG5ld19leHBfMiAobGFuZCwgJDEsICQzKTsKLSsJICB9Ci0rCXwgZXhwIEVRVU9QMiBleHAKLSsJICB7Ci0rCSAgICAkJCA9IG5ld19leHBfMiAoJDIsICQxLCAkMyk7Ci0rCSAgfQotKwl8IGV4cCBDTVBPUDIgZXhwCi0rCSAgewotKwkgICAgJCQgPSBuZXdfZXhwXzIgKCQyLCAkMSwgJDMpOwotKwkgIH0KLSsJfCBleHAgQURET1AyIGV4cAotKwkgIHsKLSsJICAgICQkID0gbmV3X2V4cF8yICgkMiwgJDEsICQzKTsKLSsJICB9Ci0rCXwgZXhwIE1VTE9QMiBleHAKLSsJICB7Ci0rCSAgICAkJCA9IG5ld19leHBfMiAoJDIsICQxLCAkMyk7Ci0rCSAgfQotKwl8ICchJyBleHAKLSsJICB7Ci0rCSAgICAkJCA9IG5ld19leHBfMSAobG5vdCwgJDIpOwotKwkgIH0KLSsJfCAnbicKLSsJICB7Ci0rCSAgICAkJCA9IG5ld19leHBfMCAodmFyKTsKLSsJICB9Ci0rCXwgTlVNQkVSCi0rCSAgewotKwkgICAgaWYgKCgkJCA9IG5ld19leHBfMCAobnVtKSkgIT0gTlVMTCkKLSsJICAgICAgJCQtPnZhbC5udW0gPSAkMTsKLSsJICB9Ci0rCXwgJygnIGV4cCAnKScKLSsJICB7Ci0rCSAgICAkJCA9ICQyOwotKwkgIH0KLSsJOwotKwotKyUlCi0rCi0rdm9pZAotK2ludGVybmFsX2Z1bmN0aW9uCi0rRlJFRV9FWFBSRVNTSU9OIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwKQotK3sKLSsgIGlmIChleHAgPT0gTlVMTCkKLSsgICAgcmV0dXJuOwotKwotKyAgLyogSGFuZGxlIHRoZSByZWN1cnNpdmUgY2FzZS4gICovCi0rICBzd2l0Y2ggKGV4cC0+bmFyZ3MpCi0rICAgIHsKLSsgICAgY2FzZSAzOgotKyAgICAgIEZSRUVfRVhQUkVTU0lPTiAoZXhwLT52YWwuYXJnc1syXSk7Ci0rICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSsgICAgY2FzZSAyOgotKyAgICAgIEZSRUVfRVhQUkVTU0lPTiAoZXhwLT52YWwuYXJnc1sxXSk7Ci0rICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSsgICAgY2FzZSAxOgotKyAgICAgIEZSRUVfRVhQUkVTU0lPTiAoZXhwLT52YWwuYXJnc1swXSk7Ci0rICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSsgICAgZGVmYXVsdDoKLSsgICAgICBicmVhazsKLSsgICAgfQotKwotKyAgZnJlZSAoZXhwKTsKLSt9Ci0rCi0rCi0rc3RhdGljIGludAotK3l5bGV4IChZWVNUWVBFICpsdmFsLCBjb25zdCBjaGFyICoqcGV4cCkKLSt7Ci0rICBjb25zdCBjaGFyICpleHAgPSAqcGV4cDsKLSsgIGludCByZXN1bHQ7Ci0rCi0rICB3aGlsZSAoMSkKLSsgICAgewotKyAgICAgIGlmIChleHBbMF0gPT0gJ1wwJykKLSsJewotKwkgICpwZXhwID0gZXhwOwotKwkgIHJldHVybiBZWUVPRjsKLSsJfQotKwotKyAgICAgIGlmIChleHBbMF0gIT0gJyAnICYmIGV4cFswXSAhPSAnXHQnKQotKwlicmVhazsKLSsKLSsgICAgICArK2V4cDsKLSsgICAgfQotKwotKyAgcmVzdWx0ID0gKmV4cCsrOwotKyAgc3dpdGNoIChyZXN1bHQpCi0rICAgIHsKLSsgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOgotKyAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6Ci0rICAgICAgewotKwl1bnNpZ25lZCBsb25nIGludCBuID0gcmVzdWx0IC0gJzAnOwotKwl3aGlsZSAoZXhwWzBdID49ICcwJyAmJiBleHBbMF0gPD0gJzknKQotKwkgIHsKLSsJICAgIG4gKj0gMTA7Ci0rCSAgICBuICs9IGV4cFswXSAtICcwJzsKLSsJICAgICsrZXhwOwotKwkgIH0KLSsJbHZhbC0+bnVtID0gbjsKLSsJcmVzdWx0ID0gTlVNQkVSOwotKyAgICAgIH0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnPSc6Ci0rICAgICAgaWYgKGV4cFswXSA9PSAnPScpCi0rCXsKLSsJICArK2V4cDsKLSsJICBsdmFsLT5vcCA9IGVxdWFsOwotKwkgIHJlc3VsdCA9IEVRVU9QMjsKLSsJfQotKyAgICAgIGVsc2UKLSsJcmVzdWx0ID0gWVlFUlJDT0RFOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICchJzoKLSsgICAgICBpZiAoZXhwWzBdID09ICc9JykKLSsJewotKwkgICsrZXhwOwotKwkgIGx2YWwtPm9wID0gbm90X2VxdWFsOwotKwkgIHJlc3VsdCA9IEVRVU9QMjsKLSsJfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICcmJzoKLSsgICAgY2FzZSAnfCc6Ci0rICAgICAgaWYgKGV4cFswXSA9PSByZXN1bHQpCi0rCSsrZXhwOwotKyAgICAgIGVsc2UKLSsJcmVzdWx0ID0gWVlFUlJDT0RFOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICc8JzoKLSsgICAgICBpZiAoZXhwWzBdID09ICc9JykKLSsJewotKwkgICsrZXhwOwotKwkgIGx2YWwtPm9wID0gbGVzc19vcl9lcXVhbDsKLSsJfQotKyAgICAgIGVsc2UKLSsJbHZhbC0+b3AgPSBsZXNzX3RoYW47Ci0rICAgICAgcmVzdWx0ID0gQ01QT1AyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICc+JzoKLSsgICAgICBpZiAoZXhwWzBdID09ICc9JykKLSsJewotKwkgICsrZXhwOwotKwkgIGx2YWwtPm9wID0gZ3JlYXRlcl9vcl9lcXVhbDsKLSsJfQotKyAgICAgIGVsc2UKLSsJbHZhbC0+b3AgPSBncmVhdGVyX3RoYW47Ci0rICAgICAgcmVzdWx0ID0gQ01QT1AyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICcqJzoKLSsgICAgICBsdmFsLT5vcCA9IG11bHQ7Ci0rICAgICAgcmVzdWx0ID0gTVVMT1AyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICcvJzoKLSsgICAgICBsdmFsLT5vcCA9IGRpdmlkZTsKLSsgICAgICByZXN1bHQgPSBNVUxPUDI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJyUnOgotKyAgICAgIGx2YWwtPm9wID0gbW9kdWxlOwotKyAgICAgIHJlc3VsdCA9IE1VTE9QMjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnKyc6Ci0rICAgICAgbHZhbC0+b3AgPSBwbHVzOwotKyAgICAgIHJlc3VsdCA9IEFERE9QMjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnLSc6Ci0rICAgICAgbHZhbC0+b3AgPSBtaW51czsKLSsgICAgICByZXN1bHQgPSBBRERPUDI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJ24nOgotKyAgICBjYXNlICc/JzoKLSsgICAgY2FzZSAnOic6Ci0rICAgIGNhc2UgJygnOgotKyAgICBjYXNlICcpJzoKLSsgICAgICAvKiBOb3RoaW5nLCBqdXN0IHJldHVybiB0aGUgY2hhcmFjdGVyLiAgKi8KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnOyc6Ci0rICAgIGNhc2UgJ1xuJzoKLSsgICAgY2FzZSAnXDAnOgotKyAgICAgIC8qIEJlIHNhZmUgYW5kIGxldCB0aGUgdXNlciBjYWxsIHRoaXMgZnVuY3Rpb24gYWdhaW4uICAqLwotKyAgICAgIC0tZXhwOwotKyAgICAgIHJlc3VsdCA9IFlZRU9GOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBkZWZhdWx0OgotKyAgICAgIHJlc3VsdCA9IFlZRVJSQ09ERTsKLSsjaWYgWVlERUJVRyAhPSAwCi0rICAgICAgLS1leHA7Ci0rI2VuZGlmCi0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgICpwZXhwID0gZXhwOwotKwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0rCi0rc3RhdGljIHZvaWQKLSt5eWVycm9yIChjb25zdCBjaGFyICpzdHIpCi0rewotKyAgLyogRG8gbm90aGluZy4gIFdlIGRvbid0IHByaW50IGVycm9yIG1lc3NhZ2VzIGhlcmUuICAqLwotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9wbzJ0Ymwuc2VkLmluCTE5OTgtMDQtMjYgMDk6MjA6NTIuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3BvMnRibC5zZWQuaW4JMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLUBAIC0xLDEwMiArMCwwIEBACi0tIyBwbzJ0Ymwuc2VkIC0gQ29udmVydCBVbmlmb3J1bSBzdHlsZSAucG8gZmlsZSB0byBsb29rdXAgdGFibGUgZm9yIGNhdGdldHMKLS0jIENvcHlyaWdodCAoQykgMTk5NSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0jIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KLS0jCi0tIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLS0jIGFueSBsYXRlciB2ZXJzaW9uLgotLSMKLS0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tIwotLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0tIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotLSMKLS0xIHsKLS0gIGlcCi0tLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgcG8ydGJsLnNlZCBmcm9tIEBQQUNLQUdFIE5BTUVALnBvdC4gICovXAotLVwKLS0jaWYgSEFWRV9DT05GSUdfSFwKLS0jIGluY2x1ZGUgPGNvbmZpZy5oPlwKLS0jZW5kaWZcCi0tXAotLSNpbmNsdWRlICJsaWJnZXR0ZXh0LmgiXAotLVwKLS1jb25zdCBzdHJ1Y3QgX21zZ19lbnQgX21zZ190YmxbXSA9IHsKLS0gIGgKLS0gIHMvLiovMC8KLS0gIHgKLS19Ci0tIwotLSMgV3JpdGUgbXNnaWQgZW50cmllcyBpbiBDIGFycmF5IGZvcm0uCi0tIwotLS9ebXNnaWQvIHsKLS0gIHMvbXNnaWRbIAldKlwoIi4qIlwpLyAge1wxLwotLSAgdGIKLS0jIEFwcGVuZCB0aGUgbmV4dCBsaW5lCi0tICA6YgotLSAgTgotLSMgTG9vayB3aGV0aGVyIHNlY29uZCBwYXJ0IGlzIGNvbnRpbnVhdGlvbiBsaW5lLgotLSAgcy9cKC4qXCkiXChcblwpIlwoLioiXCkvXDFcMlwzLwotLSMgWWVzLCB0aGVuIGJyYW5jaC4KLS0gIHRhCi0tIyBCZWNhdXNlIHdlIGFzc3VtZSB0aGF0IHRoZSBpbnB1dCBmaWxlIGNvcnJlY3RseSBmb3JtZWQgdGhlIGxpbmUKLS0jIGp1c3QgcmVhZCBjYW5ub3QgYmUgYWdhaW4gYmUgYSBtc2dpZCBsaW5lLiAgU28gaXQncyBzYWZlIHRvIGlnbm9yZQotLSMgaXQuCi0tICBzL1woLipcKVxuLiovXDEvCi0tICBiYwotLSMgV2UgZm91bmQgYSBjb250aW51YXRpb24gbGluZS4gIEJ1dCBiZWZvcmUgcHJpbnRpbmcgaW5zZXJ0ICdcJy4KLS0gIDphCi0tICBzL1woLipcKVwoXG4uKlwpL1wxXFxcMi8KLS0gIFAKLS0jIFdlIGNhbm5vdCB1c2UgRCBoZXJlLgotLSAgcy8uKlxuXCguKlwpL1wxLwotLSMgU29tZSBidWdneSBzZWRzIGRvIG5vdCBjbGVhciB0aGUgYHN1Y2Nlc3NmdWwgc3Vic3RpdHV0aW9uIHNpbmNlIGxhc3QgYGB0JycnCi0tIyBmbGFnIG9uIGBOJywgc28gd2UgZG8gYSBgdCcgaGVyZSB0byBjbGVhciBpdC4KLS0gIHRiCi0tIyBOb3QgcmVhY2hlZAotLSAgOmMKLS0gIHgKLS0jIFRoZSBmb2xsb3dpbmcgbmljZSBzb2x1dGlvbiBpcyBieQotLSMgQnJ1bm8gPEhhaWJsZUBtYTJzMi5tYXRoZW1hdGlrLnVuaS1rYXJsc3J1aGUuZGU+Ci0tICB0ZAotLSMgSW5jcmVtZW50IGEgZGVjaW1hbCBudW1iZXIgaW4gcGF0dGVybiBzcGFjZS4KLS0jIEZpcnN0IGhpZGUgdHJhaWxpbmcgYDknIGRpZ2l0cy4KLS0gIDpkCi0tICBzLzlcKF8qXCkkL19cMS8KLS0gIHRkCi0tIyBBc3N1cmUgYXQgbGVhc3Qgb25lIGRpZ2l0IGlzIGF2YWlsYWJsZS4KLS0gIHMvXlwoXypcKSQvMFwxLwotLSMgSW5jcmVtZW50IHRoZSBsYXN0IGRpZ2l0LgotLSAgcy84XChfKlwpJC85XDEvCi0tICBzLzdcKF8qXCkkLzhcMS8KLS0gIHMvNlwoXypcKSQvN1wxLwotLSAgcy81XChfKlwpJC82XDEvCi0tICBzLzRcKF8qXCkkLzVcMS8KLS0gIHMvM1woXypcKSQvNFwxLwotLSAgcy8yXChfKlwpJC8zXDEvCi0tICBzLzFcKF8qXCkkLzJcMS8KLS0gIHMvMFwoXypcKSQvMVwxLwotLSMgQ29udmVydCB0aGUgaGlkZGVuIGA5JyBkaWdpdHMgdG8gYDAncy4KLS0gIHMvXy8wL2cKLS0gIHgKLS0gIEcKLS0gIHMvXCguKlwpXG5cKFswLTldKlwpL1wxLCBcMn0sLwotLSAgcy9cKC4qXCkiJC9cMS8KLS0gIHAKLS19Ci0tIwotLSMgTGFzdCBsaW5lLgotLSMKLS0kIHsKLS0gIGlcCi0tfTtcCi0tCi0tICBnCi0tICBzLzAqXCguKlwpL2ludCBfbXNnX3RibF9sZW5ndGggPSBcMTsvcAotLX0KLS1kCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvcHJpbnRmLWFyZ3MuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9wcmludGYtYXJncy5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNTk1NzExNjA4IC0wNDAwCi1AQCAtMCwwICsxLDExOSBAQAotKy8qIERlY29tcG9zZWQgcHJpbnRmIGFyZ3VtZW50IGxpc3QuCi0rICAgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAyLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsvKiBTcGVjaWZpY2F0aW9uLiAgKi8KLSsjaW5jbHVkZSAicHJpbnRmLWFyZ3MuaCIKLSsKLSsjaWZkZWYgU1RBVElDCi0rU1RBVElDCi0rI2VuZGlmCi0raW50Ci0rcHJpbnRmX2ZldGNoYXJncyAodmFfbGlzdCBhcmdzLCBhcmd1bWVudHMgKmEpCi0rewotKyAgc2l6ZV90IGk7Ci0rICBhcmd1bWVudCAqYXA7Ci0rCi0rICBmb3IgKGkgPSAwLCBhcCA9ICZhLT5hcmdbMF07IGkgPCBhLT5jb3VudDsgaSsrLCBhcCsrKQotKyAgICBzd2l0Y2ggKGFwLT50eXBlKQotKyAgICAgIHsKLSsgICAgICBjYXNlIFRZUEVfU0NIQVI6Ci0rCWFwLT5hLmFfc2NoYXIgPSB2YV9hcmcgKGFyZ3MsIC8qc2lnbmVkIGNoYXIqLyBpbnQpOwotKwlicmVhazsKLSsgICAgICBjYXNlIFRZUEVfVUNIQVI6Ci0rCWFwLT5hLmFfdWNoYXIgPSB2YV9hcmcgKGFyZ3MsIC8qdW5zaWduZWQgY2hhciovIGludCk7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgVFlQRV9TSE9SVDoKLSsJYXAtPmEuYV9zaG9ydCA9IHZhX2FyZyAoYXJncywgLypzaG9ydCovIGludCk7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgVFlQRV9VU0hPUlQ6Ci0rCWFwLT5hLmFfdXNob3J0ID0gdmFfYXJnIChhcmdzLCAvKnVuc2lnbmVkIHNob3J0Ki8gaW50KTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBUWVBFX0lOVDoKLSsJYXAtPmEuYV9pbnQgPSB2YV9hcmcgKGFyZ3MsIGludCk7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgVFlQRV9VSU5UOgotKwlhcC0+YS5hX3VpbnQgPSB2YV9hcmcgKGFyZ3MsIHVuc2lnbmVkIGludCk7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgVFlQRV9MT05HSU5UOgotKwlhcC0+YS5hX2xvbmdpbnQgPSB2YV9hcmcgKGFyZ3MsIGxvbmcgaW50KTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBUWVBFX1VMT05HSU5UOgotKwlhcC0+YS5hX3Vsb25naW50ID0gdmFfYXJnIChhcmdzLCB1bnNpZ25lZCBsb25nIGludCk7Ci0rCWJyZWFrOwotKyNpZmRlZiBIQVZFX0xPTkdfTE9ORwotKyAgICAgIGNhc2UgVFlQRV9MT05HTE9OR0lOVDoKLSsJYXAtPmEuYV9sb25nbG9uZ2ludCA9IHZhX2FyZyAoYXJncywgbG9uZyBsb25nIGludCk7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgVFlQRV9VTE9OR0xPTkdJTlQ6Ci0rCWFwLT5hLmFfdWxvbmdsb25naW50ID0gdmFfYXJnIChhcmdzLCB1bnNpZ25lZCBsb25nIGxvbmcgaW50KTsKLSsJYnJlYWs7Ci0rI2VuZGlmCi0rICAgICAgY2FzZSBUWVBFX0RPVUJMRToKLSsJYXAtPmEuYV9kb3VibGUgPSB2YV9hcmcgKGFyZ3MsIGRvdWJsZSk7Ci0rCWJyZWFrOwotKyNpZmRlZiBIQVZFX0xPTkdfRE9VQkxFCi0rICAgICAgY2FzZSBUWVBFX0xPTkdET1VCTEU6Ci0rCWFwLT5hLmFfbG9uZ2RvdWJsZSA9IHZhX2FyZyAoYXJncywgbG9uZyBkb3VibGUpOwotKwlicmVhazsKLSsjZW5kaWYKLSsgICAgICBjYXNlIFRZUEVfQ0hBUjoKLSsJYXAtPmEuYV9jaGFyID0gdmFfYXJnIChhcmdzLCBpbnQpOwotKwlicmVhazsKLSsjaWZkZWYgSEFWRV9XSU5UX1QKLSsgICAgICBjYXNlIFRZUEVfV0lERV9DSEFSOgotKwlhcC0+YS5hX3dpZGVfY2hhciA9IHZhX2FyZyAoYXJncywgd2ludF90KTsKLSsJYnJlYWs7Ci0rI2VuZGlmCi0rICAgICAgY2FzZSBUWVBFX1NUUklORzoKLSsJYXAtPmEuYV9zdHJpbmcgPSB2YV9hcmcgKGFyZ3MsIGNvbnN0IGNoYXIgKik7Ci0rCWJyZWFrOwotKyNpZmRlZiBIQVZFX1dDSEFSX1QKLSsgICAgICBjYXNlIFRZUEVfV0lERV9TVFJJTkc6Ci0rCWFwLT5hLmFfd2lkZV9zdHJpbmcgPSB2YV9hcmcgKGFyZ3MsIGNvbnN0IHdjaGFyX3QgKik7Ci0rCWJyZWFrOwotKyNlbmRpZgotKyAgICAgIGNhc2UgVFlQRV9QT0lOVEVSOgotKwlhcC0+YS5hX3BvaW50ZXIgPSB2YV9hcmcgKGFyZ3MsIHZvaWQgKik7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgVFlQRV9DT1VOVF9TQ0hBUl9QT0lOVEVSOgotKwlhcC0+YS5hX2NvdW50X3NjaGFyX3BvaW50ZXIgPSB2YV9hcmcgKGFyZ3MsIHNpZ25lZCBjaGFyICopOwotKwlicmVhazsKLSsgICAgICBjYXNlIFRZUEVfQ09VTlRfU0hPUlRfUE9JTlRFUjoKLSsJYXAtPmEuYV9jb3VudF9zaG9ydF9wb2ludGVyID0gdmFfYXJnIChhcmdzLCBzaG9ydCAqKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBUWVBFX0NPVU5UX0lOVF9QT0lOVEVSOgotKwlhcC0+YS5hX2NvdW50X2ludF9wb2ludGVyID0gdmFfYXJnIChhcmdzLCBpbnQgKik7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgVFlQRV9DT1VOVF9MT05HSU5UX1BPSU5URVI6Ci0rCWFwLT5hLmFfY291bnRfbG9uZ2ludF9wb2ludGVyID0gdmFfYXJnIChhcmdzLCBsb25nIGludCAqKTsKLSsJYnJlYWs7Ci0rI2lmZGVmIEhBVkVfTE9OR19MT05HCi0rICAgICAgY2FzZSBUWVBFX0NPVU5UX0xPTkdMT05HSU5UX1BPSU5URVI6Ci0rCWFwLT5hLmFfY291bnRfbG9uZ2xvbmdpbnRfcG9pbnRlciA9IHZhX2FyZyAoYXJncywgbG9uZyBsb25nIGludCAqKTsKLSsJYnJlYWs7Ci0rI2VuZGlmCi0rICAgICAgZGVmYXVsdDoKLSsJLyogVW5rbm93biB0eXBlLiAgKi8KLSsJcmV0dXJuIC0xOwotKyAgICAgIH0KLSsgIHJldHVybiAwOwotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9wcmludGYtYXJncy5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3ByaW50Zi1hcmdzLmgJMjAwNC0wOS0xMiAxNDo0MDozNC42MDE3MTA2OTYgLTA0MDAKLUBAIC0wLDAgKzEsMTM3IEBACi0rLyogRGVjb21wb3NlZCBwcmludGYgYXJndW1lbnQgbGlzdC4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDItMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmbmRlZiBfUFJJTlRGX0FSR1NfSAotKyNkZWZpbmUgX1BSSU5URl9BUkdTX0gKLSsKLSsvKiBHZXQgc2l6ZV90LiAgKi8KLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rCi0rLyogR2V0IHdjaGFyX3QuICAqLwotKyNpZmRlZiBIQVZFX1dDSEFSX1QKLSsjIGluY2x1ZGUgPHN0ZGRlZi5oPgotKyNlbmRpZgotKwotKy8qIEdldCB3aW50X3QuICAqLwotKyNpZmRlZiBIQVZFX1dJTlRfVAotKyMgaW5jbHVkZSA8d2NoYXIuaD4KLSsjZW5kaWYKLSsKLSsvKiBHZXQgdmFfbGlzdC4gICovCi0rI2luY2x1ZGUgPHN0ZGFyZy5oPgotKwotKwotKy8qIEFyZ3VtZW50IHR5cGVzICovCi0rdHlwZWRlZiBlbnVtCi0rewotKyAgVFlQRV9OT05FLAotKyAgVFlQRV9TQ0hBUiwKLSsgIFRZUEVfVUNIQVIsCi0rICBUWVBFX1NIT1JULAotKyAgVFlQRV9VU0hPUlQsCi0rICBUWVBFX0lOVCwKLSsgIFRZUEVfVUlOVCwKLSsgIFRZUEVfTE9OR0lOVCwKLSsgIFRZUEVfVUxPTkdJTlQsCi0rI2lmZGVmIEhBVkVfTE9OR19MT05HCi0rICBUWVBFX0xPTkdMT05HSU5ULAotKyAgVFlQRV9VTE9OR0xPTkdJTlQsCi0rI2VuZGlmCi0rICBUWVBFX0RPVUJMRSwKLSsjaWZkZWYgSEFWRV9MT05HX0RPVUJMRQotKyAgVFlQRV9MT05HRE9VQkxFLAotKyNlbmRpZgotKyAgVFlQRV9DSEFSLAotKyNpZmRlZiBIQVZFX1dJTlRfVAotKyAgVFlQRV9XSURFX0NIQVIsCi0rI2VuZGlmCi0rICBUWVBFX1NUUklORywKLSsjaWZkZWYgSEFWRV9XQ0hBUl9UCi0rICBUWVBFX1dJREVfU1RSSU5HLAotKyNlbmRpZgotKyAgVFlQRV9QT0lOVEVSLAotKyAgVFlQRV9DT1VOVF9TQ0hBUl9QT0lOVEVSLAotKyAgVFlQRV9DT1VOVF9TSE9SVF9QT0lOVEVSLAotKyAgVFlQRV9DT1VOVF9JTlRfUE9JTlRFUiwKLSsgIFRZUEVfQ09VTlRfTE9OR0lOVF9QT0lOVEVSCi0rI2lmZGVmIEhBVkVfTE9OR19MT05HCi0rLCBUWVBFX0NPVU5UX0xPTkdMT05HSU5UX1BPSU5URVIKLSsjZW5kaWYKLSt9IGFyZ190eXBlOwotKwotKy8qIFBvbHltb3JwaGljIGFyZ3VtZW50ICovCi0rdHlwZWRlZiBzdHJ1Y3QKLSt7Ci0rICBhcmdfdHlwZSB0eXBlOwotKyAgdW5pb24KLSsgIHsKLSsgICAgc2lnbmVkIGNoYXIJCQlhX3NjaGFyOwotKyAgICB1bnNpZ25lZCBjaGFyCQlhX3VjaGFyOwotKyAgICBzaG9ydAkJCWFfc2hvcnQ7Ci0rICAgIHVuc2lnbmVkIHNob3J0CQlhX3VzaG9ydDsKLSsgICAgaW50CQkJCWFfaW50OwotKyAgICB1bnNpZ25lZCBpbnQJCWFfdWludDsKLSsgICAgbG9uZyBpbnQJCQlhX2xvbmdpbnQ7Ci0rICAgIHVuc2lnbmVkIGxvbmcgaW50CQlhX3Vsb25naW50OwotKyNpZmRlZiBIQVZFX0xPTkdfTE9ORwotKyAgICBsb25nIGxvbmcgaW50CQlhX2xvbmdsb25naW50OwotKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW50CWFfdWxvbmdsb25naW50OwotKyNlbmRpZgotKyAgICBmbG9hdAkJCWFfZmxvYXQ7Ci0rICAgIGRvdWJsZQkJCWFfZG91YmxlOwotKyNpZmRlZiBIQVZFX0xPTkdfRE9VQkxFCi0rICAgIGxvbmcgZG91YmxlCQkJYV9sb25nZG91YmxlOwotKyNlbmRpZgotKyAgICBpbnQJCQkJYV9jaGFyOwotKyNpZmRlZiBIQVZFX1dJTlRfVAotKyAgICB3aW50X3QJCQlhX3dpZGVfY2hhcjsKLSsjZW5kaWYKLSsgICAgY29uc3QgY2hhcioJCQlhX3N0cmluZzsKLSsjaWZkZWYgSEFWRV9XQ0hBUl9UCi0rICAgIGNvbnN0IHdjaGFyX3QqCQlhX3dpZGVfc3RyaW5nOwotKyNlbmRpZgotKyAgICB2b2lkKgkJCWFfcG9pbnRlcjsKLSsgICAgc2lnbmVkIGNoYXIgKgkJYV9jb3VudF9zY2hhcl9wb2ludGVyOwotKyAgICBzaG9ydCAqCQkJYV9jb3VudF9zaG9ydF9wb2ludGVyOwotKyAgICBpbnQgKgkJCWFfY291bnRfaW50X3BvaW50ZXI7Ci0rICAgIGxvbmcgaW50ICoJCQlhX2NvdW50X2xvbmdpbnRfcG9pbnRlcjsKLSsjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSsgICAgbG9uZyBsb25nIGludCAqCQlhX2NvdW50X2xvbmdsb25naW50X3BvaW50ZXI7Ci0rI2VuZGlmCi0rICB9Ci0rICBhOwotK30KLSthcmd1bWVudDsKLSsKLSt0eXBlZGVmIHN0cnVjdAotK3sKLSsgIHNpemVfdCBjb3VudDsKLSsgIGFyZ3VtZW50ICphcmc7Ci0rfQotK2FyZ3VtZW50czsKLSsKLSsKLSsvKiBGZXRjaCB0aGUgYXJndW1lbnRzLCBwdXR0aW5nIHRoZW0gaW50byBhLiAqLwotKyNpZmRlZiBTVEFUSUMKLStTVEFUSUMKLSsjZWxzZQotK2V4dGVybgotKyNlbmRpZgotK2ludCBwcmludGZfZmV0Y2hhcmdzICh2YV9saXN0IGFyZ3MsIGFyZ3VtZW50cyAqYSk7Ci0rCi0rI2VuZGlmIC8qIF9QUklOVEZfQVJHU19IICovCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvcHJpbnRmLmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvcHJpbnRmLmMJMjAwNC0wOS0xMiAxNDo0MDozNC42MDc3MDk3ODQgLTA0MDAKLUBAIC0wLDAgKzEsMzcxIEBACi0rLyogRm9ybWF0dGVkIG91dHB1dCB0byBzdHJpbmdzLCB1c2luZyBQT1NJWC9YU0kgZm9ybWF0IHN0cmluZ3Mgd2l0aCBwb3NpdGlvbnMuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFdyaXR0ZW4gYnkgQnJ1bm8gSGFpYmxlIDxicnVub0BjbGlzcC5vcmc+LCAyMDAzLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fR05VQ19fCi0rIyBkZWZpbmUgYWxsb2NhIF9fYnVpbHRpbl9hbGxvY2EKLSsjIGRlZmluZSBIQVZFX0FMTE9DQSAxCi0rI2Vsc2UKLSsjIGlmZGVmIF9NU0NfVkVSCi0rIyAgaW5jbHVkZSA8bWFsbG9jLmg+Ci0rIyAgZGVmaW5lIGFsbG9jYSBfYWxsb2NhCi0rIyBlbHNlCi0rIyAgaWYgZGVmaW5lZCBIQVZFX0FMTE9DQV9IIHx8IGRlZmluZWQgX0xJQkMKLSsjICAgaW5jbHVkZSA8YWxsb2NhLmg+Ci0rIyAgZWxzZQotKyMgICBpZmRlZiBfQUlYCi0rICNwcmFnbWEgYWxsb2NhCi0rIyAgIGVsc2UKLSsjICAgIGlmbmRlZiBhbGxvY2EKLStjaGFyICphbGxvY2EgKCk7Ci0rIyAgICBlbmRpZgotKyMgICBlbmRpZgotKyMgIGVuZGlmCi0rIyBlbmRpZgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxzdGRpby5oPgotKwotKyNpZiAhSEFWRV9QT1NJWF9QUklOVEYKLSsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKwotKy8qIFdoZW4gYnVpbGRpbmcgYSBETEwsIHdlIG11c3QgZXhwb3J0IHNvbWUgZnVuY3Rpb25zLiAgTm90ZSB0aGF0IGJlY2F1c2UKLSsgICB0aGUgZnVuY3Rpb25zIGFyZSBvbmx5IGRlZmluZWQgZm9yIGJpbmFyeSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB3ZQotKyAgIGRvbid0IG5lZWQgdG8gdXNlIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBpbiBhbnkgY2FzZS4gICovCi0rI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgQlVJTERJTkdfRExMCi0rIyBkZWZpbmUgRExMX0VYUE9SVEVEIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQotKyNlbHNlCi0rIyBkZWZpbmUgRExMX0VYUE9SVEVECi0rI2VuZGlmCi0rCi0rI2RlZmluZSBTVEFUSUMgc3RhdGljCi0rCi0rLyogRGVmaW5lIGF1eGlsaWFyeSBmdW5jdGlvbnMgZGVjbGFyZWQgaW4gInByaW50Zi1hcmdzLmgiLiAgKi8KLSsjaW5jbHVkZSAicHJpbnRmLWFyZ3MuYyIKLSsKLSsvKiBEZWZpbmUgYXV4aWxpYXJ5IGZ1bmN0aW9ucyBkZWNsYXJlZCBpbiAicHJpbnRmLXBhcnNlLmgiLiAgKi8KLSsjaW5jbHVkZSAicHJpbnRmLXBhcnNlLmMiCi0rCi0rLyogRGVmaW5lIGZ1bmN0aW9ucyBkZWNsYXJlZCBpbiAidmFzbnByaW50Zi5oIi4gICovCi0rI2RlZmluZSB2YXNucHJpbnRmIGxpYmludGxfdmFzbnByaW50ZgotKyNpbmNsdWRlICJ2YXNucHJpbnRmLmMiCi0rI2lmIDAgLyogbm90IG5lZWRlZCAqLwotKyNkZWZpbmUgYXNucHJpbnRmIGxpYmludGxfYXNucHJpbnRmCi0rI2luY2x1ZGUgImFzbnByaW50Zi5jIgotKyNlbmRpZgotKwotK0RMTF9FWFBPUlRFRAotK2ludAotK2xpYmludGxfdmZwcmludGYgKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi0rewotKyAgaWYgKHN0cmNociAoZm9ybWF0LCAnJCcpID09IE5VTEwpCi0rICAgIHJldHVybiB2ZnByaW50ZiAoc3RyZWFtLCBmb3JtYXQsIGFyZ3MpOwotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgc2l6ZV90IGxlbmd0aDsKLSsgICAgICBjaGFyICpyZXN1bHQgPSBsaWJpbnRsX3Zhc25wcmludGYgKE5VTEwsICZsZW5ndGgsIGZvcm1hdCwgYXJncyk7Ci0rICAgICAgaW50IHJldHZhbCA9IC0xOwotKyAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkKLSsJewotKwkgIGlmIChmd3JpdGUgKHJlc3VsdCwgMSwgbGVuZ3RoLCBzdHJlYW0pID09IGxlbmd0aCkKLSsJICAgIHJldHZhbCA9IGxlbmd0aDsKLSsJICBmcmVlIChyZXN1bHQpOwotKwl9Ci0rICAgICAgcmV0dXJuIHJldHZhbDsKLSsgICAgfQotK30KLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX2ZwcmludGYgKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi0rewotKyAgdmFfbGlzdCBhcmdzOwotKyAgaW50IHJldHZhbDsKLSsKLSsgIHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQpOwotKyAgcmV0dmFsID0gbGliaW50bF92ZnByaW50ZiAoc3RyZWFtLCBmb3JtYXQsIGFyZ3MpOwotKyAgdmFfZW5kIChhcmdzKTsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKwotK0RMTF9FWFBPUlRFRAotK2ludAotK2xpYmludGxfdnByaW50ZiAoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi0rewotKyAgcmV0dXJuIGxpYmludGxfdmZwcmludGYgKHN0ZG91dCwgZm9ybWF0LCBhcmdzKTsKLSt9Ci0rCi0rRExMX0VYUE9SVEVECi0raW50Ci0rbGliaW50bF9wcmludGYgKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotK3sKLSsgIHZhX2xpc3QgYXJnczsKLSsgIGludCByZXR2YWw7Ci0rCi0rICB2YV9zdGFydCAoYXJncywgZm9ybWF0KTsKLSsgIHJldHZhbCA9IGxpYmludGxfdnByaW50ZiAoZm9ybWF0LCBhcmdzKTsKLSsgIHZhX2VuZCAoYXJncyk7Ci0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX3ZzcHJpbnRmIChjaGFyICpyZXN1bHRidWYsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQotK3sKLSsgIGlmIChzdHJjaHIgKGZvcm1hdCwgJyQnKSA9PSBOVUxMKQotKyAgICByZXR1cm4gdnNwcmludGYgKHJlc3VsdGJ1ZiwgZm9ybWF0LCBhcmdzKTsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIHNpemVfdCBsZW5ndGggPSAoc2l6ZV90KSB+MCAvICg0ICogc2l6ZW9mIChjaGFyKSk7Ci0rICAgICAgY2hhciAqcmVzdWx0ID0gbGliaW50bF92YXNucHJpbnRmIChyZXN1bHRidWYsICZsZW5ndGgsIGZvcm1hdCwgYXJncyk7Ci0rICAgICAgaWYgKHJlc3VsdCAhPSByZXN1bHRidWYpCi0rCXsKLSsJICBmcmVlIChyZXN1bHQpOwotKwkgIHJldHVybiAtMTsKLSsJfQotKyAgICAgIGVsc2UKLSsJcmV0dXJuIGxlbmd0aDsKLSsgICAgfQotK30KLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX3NwcmludGYgKGNoYXIgKnJlc3VsdGJ1ZiwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi0rewotKyAgdmFfbGlzdCBhcmdzOwotKyAgaW50IHJldHZhbDsKLSsKLSsgIHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQpOwotKyAgcmV0dmFsID0gbGliaW50bF92c3ByaW50ZiAocmVzdWx0YnVmLCBmb3JtYXQsIGFyZ3MpOwotKyAgdmFfZW5kIChhcmdzKTsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKwotKyNpZiBIQVZFX1NOUFJJTlRGCi0rCi0rIyBpZiBIQVZFX0RFQ0xfX1NOUFJJTlRGCi0rICAgLyogV2luZG93cy4gICovCi0rIyAgZGVmaW5lIHN5c3RlbV92c25wcmludGYgX3ZzbnByaW50ZgotKyMgZWxzZQotKyAgIC8qIFVuaXguICAqLwotKyMgIGRlZmluZSBzeXN0ZW1fdnNucHJpbnRmIHZzbnByaW50ZgotKyMgZW5kaWYKLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX3ZzbnByaW50ZiAoY2hhciAqcmVzdWx0YnVmLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncykKLSt7Ci0rICBpZiAoc3RyY2hyIChmb3JtYXQsICckJykgPT0gTlVMTCkKLSsgICAgcmV0dXJuIHN5c3RlbV92c25wcmludGYgKHJlc3VsdGJ1ZiwgbGVuZ3RoLCBmb3JtYXQsIGFyZ3MpOwotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgc2l6ZV90IG1heGxlbmd0aCA9IGxlbmd0aDsKLSsgICAgICBjaGFyICpyZXN1bHQgPSBsaWJpbnRsX3Zhc25wcmludGYgKHJlc3VsdGJ1ZiwgJmxlbmd0aCwgZm9ybWF0LCBhcmdzKTsKLSsgICAgICBpZiAocmVzdWx0ICE9IHJlc3VsdGJ1ZikKLSsJewotKwkgIGlmIChtYXhsZW5ndGggPiAwKQotKwkgICAgewotKwkgICAgICBpZiAobGVuZ3RoIDwgbWF4bGVuZ3RoKQotKwkJYWJvcnQgKCk7Ci0rCSAgICAgIG1lbWNweSAocmVzdWx0YnVmLCByZXN1bHQsIG1heGxlbmd0aCAtIDEpOwotKwkgICAgICByZXN1bHRidWZbbWF4bGVuZ3RoIC0gMV0gPSAnXDAnOwotKwkgICAgfQotKwkgIGZyZWUgKHJlc3VsdCk7Ci0rCSAgcmV0dXJuIC0xOwotKwl9Ci0rICAgICAgZWxzZQotKwlyZXR1cm4gbGVuZ3RoOwotKyAgICB9Ci0rfQotKwotK0RMTF9FWFBPUlRFRAotK2ludAotK2xpYmludGxfc25wcmludGYgKGNoYXIgKnJlc3VsdGJ1Ziwgc2l6ZV90IGxlbmd0aCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi0rewotKyAgdmFfbGlzdCBhcmdzOwotKyAgaW50IHJldHZhbDsKLSsKLSsgIHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQpOwotKyAgcmV0dmFsID0gbGliaW50bF92c25wcmludGYgKHJlc3VsdGJ1ZiwgbGVuZ3RoLCBmb3JtYXQsIGFyZ3MpOwotKyAgdmFfZW5kIChhcmdzKTsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKwotKyNlbmRpZgotKwotKyNpZiBIQVZFX0FTUFJJTlRGCi0rCi0rRExMX0VYUE9SVEVECi0raW50Ci0rbGliaW50bF92YXNwcmludGYgKGNoYXIgKipyZXN1bHRwLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncykKLSt7Ci0rICBzaXplX3QgbGVuZ3RoOwotKyAgY2hhciAqcmVzdWx0ID0gbGliaW50bF92YXNucHJpbnRmIChOVUxMLCAmbGVuZ3RoLCBmb3JtYXQsIGFyZ3MpOwotKyAgaWYgKHJlc3VsdCA9PSBOVUxMKQotKyAgICByZXR1cm4gLTE7Ci0rICAqcmVzdWx0cCA9IHJlc3VsdDsKLSsgIHJldHVybiBsZW5ndGg7Ci0rfQotKwotK0RMTF9FWFBPUlRFRAotK2ludAotK2xpYmludGxfYXNwcmludGYgKGNoYXIgKipyZXN1bHRwLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKLSt7Ci0rICB2YV9saXN0IGFyZ3M7Ci0rICBpbnQgcmV0dmFsOwotKwotKyAgdmFfc3RhcnQgKGFyZ3MsIGZvcm1hdCk7Ci0rICByZXR2YWwgPSBsaWJpbnRsX3Zhc3ByaW50ZiAocmVzdWx0cCwgZm9ybWF0LCBhcmdzKTsKLSsgIHZhX2VuZCAoYXJncyk7Ci0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLSsjZW5kaWYKLSsKLSsjaWYgSEFWRV9GV1BSSU5URgotKwotKyNpbmNsdWRlIDx3Y2hhci5oPgotKwotKyNkZWZpbmUgV0lERV9DSEFSX1ZFUlNJT04gMQotKwotKy8qIERlZmluZSBhdXhpbGlhcnkgZnVuY3Rpb25zIGRlY2xhcmVkIGluICJ3cHJpbnRmLXBhcnNlLmgiLiAgKi8KLSsjaW5jbHVkZSAicHJpbnRmLXBhcnNlLmMiCi0rCi0rLyogRGVmaW5lIGZ1bmN0aW9ucyBkZWNsYXJlZCBpbiAidmFzbnByaW50Zi5oIi4gICovCi0rI2RlZmluZSB2YXNud3ByaW50ZiBsaWJpbnRsX3Zhc253cHJpbnRmCi0rI2luY2x1ZGUgInZhc25wcmludGYuYyIKLSsjaWYgMCAvKiBub3QgbmVlZGVkICovCi0rI2RlZmluZSBhc253cHJpbnRmIGxpYmludGxfYXNud3ByaW50ZgotKyNpbmNsdWRlICJhc25wcmludGYuYyIKLSsjZW5kaWYKLSsKLSsjIGlmIEhBVkVfREVDTF9fU05XUFJJTlRGCi0rICAgLyogV2luZG93cy4gICovCi0rIyAgZGVmaW5lIHN5c3RlbV92c3dwcmludGYgX3ZzbndwcmludGYKLSsjIGVsc2UKLSsgICAvKiBVbml4LiAgKi8KLSsjICBkZWZpbmUgc3lzdGVtX3Zzd3ByaW50ZiB2c3dwcmludGYKLSsjIGVuZGlmCi0rCi0rRExMX0VYUE9SVEVECi0raW50Ci0rbGliaW50bF92ZndwcmludGYgKEZJTEUgKnN0cmVhbSwgY29uc3Qgd2NoYXJfdCAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi0rewotKyAgaWYgKHdjc2NociAoZm9ybWF0LCAnJCcpID09IE5VTEwpCi0rICAgIHJldHVybiB2ZndwcmludGYgKHN0cmVhbSwgZm9ybWF0LCBhcmdzKTsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIHNpemVfdCBsZW5ndGg7Ci0rICAgICAgd2NoYXJfdCAqcmVzdWx0ID0gbGliaW50bF92YXNud3ByaW50ZiAoTlVMTCwgJmxlbmd0aCwgZm9ybWF0LCBhcmdzKTsKLSsgICAgICBpbnQgcmV0dmFsID0gLTE7Ci0rICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKQotKwl7Ci0rCSAgc2l6ZV90IGk7Ci0rCSAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQotKwkgICAgaWYgKGZwdXR3YyAocmVzdWx0W2ldLCBzdHJlYW0pID09IFdFT0YpCi0rCSAgICAgIGJyZWFrOwotKwkgIGlmIChpID09IGxlbmd0aCkKLSsJICAgIHJldHZhbCA9IGxlbmd0aDsKLSsJICBmcmVlIChyZXN1bHQpOwotKwl9Ci0rICAgICAgcmV0dXJuIHJldHZhbDsKLSsgICAgfQotK30KLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX2Z3cHJpbnRmIChGSUxFICpzdHJlYW0sIGNvbnN0IHdjaGFyX3QgKmZvcm1hdCwgLi4uKQotK3sKLSsgIHZhX2xpc3QgYXJnczsKLSsgIGludCByZXR2YWw7Ci0rCi0rICB2YV9zdGFydCAoYXJncywgZm9ybWF0KTsKLSsgIHJldHZhbCA9IGxpYmludGxfdmZ3cHJpbnRmIChzdHJlYW0sIGZvcm1hdCwgYXJncyk7Ci0rICB2YV9lbmQgKGFyZ3MpOwotKyAgcmV0dXJuIHJldHZhbDsKLSt9Ci0rCi0rRExMX0VYUE9SVEVECi0raW50Ci0rbGliaW50bF92d3ByaW50ZiAoY29uc3Qgd2NoYXJfdCAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi0rewotKyAgcmV0dXJuIGxpYmludGxfdmZ3cHJpbnRmIChzdGRvdXQsIGZvcm1hdCwgYXJncyk7Ci0rfQotKwotK0RMTF9FWFBPUlRFRAotK2ludAotK2xpYmludGxfd3ByaW50ZiAoY29uc3Qgd2NoYXJfdCAqZm9ybWF0LCAuLi4pCi0rewotKyAgdmFfbGlzdCBhcmdzOwotKyAgaW50IHJldHZhbDsKLSsKLSsgIHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQpOwotKyAgcmV0dmFsID0gbGliaW50bF92d3ByaW50ZiAoZm9ybWF0LCBhcmdzKTsKLSsgIHZhX2VuZCAoYXJncyk7Ci0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX3Zzd3ByaW50ZiAod2NoYXJfdCAqcmVzdWx0YnVmLCBzaXplX3QgbGVuZ3RoLCBjb25zdCB3Y2hhcl90ICpmb3JtYXQsIHZhX2xpc3QgYXJncykKLSt7Ci0rICBpZiAod2NzY2hyIChmb3JtYXQsICckJykgPT0gTlVMTCkKLSsgICAgcmV0dXJuIHN5c3RlbV92c3dwcmludGYgKHJlc3VsdGJ1ZiwgbGVuZ3RoLCBmb3JtYXQsIGFyZ3MpOwotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgc2l6ZV90IG1heGxlbmd0aCA9IGxlbmd0aDsKLSsgICAgICB3Y2hhcl90ICpyZXN1bHQgPSBsaWJpbnRsX3Zhc253cHJpbnRmIChyZXN1bHRidWYsICZsZW5ndGgsIGZvcm1hdCwgYXJncyk7Ci0rICAgICAgaWYgKHJlc3VsdCAhPSByZXN1bHRidWYpCi0rCXsKLSsJICBpZiAobWF4bGVuZ3RoID4gMCkKLSsJICAgIHsKLSsJICAgICAgaWYgKGxlbmd0aCA8IG1heGxlbmd0aCkKLSsJCWFib3J0ICgpOwotKwkgICAgICBtZW1jcHkgKHJlc3VsdGJ1ZiwgcmVzdWx0LCAobWF4bGVuZ3RoIC0gMSkgKiBzaXplb2YgKHdjaGFyX3QpKTsKLSsJICAgICAgcmVzdWx0YnVmW21heGxlbmd0aCAtIDFdID0gMDsKLSsJICAgIH0KLSsJICBmcmVlIChyZXN1bHQpOwotKwkgIHJldHVybiAtMTsKLSsJfQotKyAgICAgIGVsc2UKLSsJcmV0dXJuIGxlbmd0aDsKLSsgICAgfQotK30KLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX3N3cHJpbnRmICh3Y2hhcl90ICpyZXN1bHRidWYsIHNpemVfdCBsZW5ndGgsIGNvbnN0IHdjaGFyX3QgKmZvcm1hdCwgLi4uKQotK3sKLSsgIHZhX2xpc3QgYXJnczsKLSsgIGludCByZXR2YWw7Ci0rCi0rICB2YV9zdGFydCAoYXJncywgZm9ybWF0KTsKLSsgIHJldHZhbCA9IGxpYmludGxfdnN3cHJpbnRmIChyZXN1bHRidWYsIGxlbmd0aCwgZm9ybWF0LCBhcmdzKTsKLSsgIHZhX2VuZCAoYXJncyk7Ci0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLSsjZW5kaWYKLSsKLSsjZW5kaWYKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9wcmludGYtcGFyc2UuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9wcmludGYtcGFyc2UuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjYyMjcwNzUwNCAtMDQwMAotQEAgLTAsMCArMSw1MzcgQEAKLSsvKiBGb3JtYXR0ZWQgb3V0cHV0IHRvIHN0cmluZ3MuCi0rICAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAsIDIwMDItMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKy8qIFNwZWNpZmljYXRpb24uICAqLwotKyNpZiBXSURFX0NIQVJfVkVSU0lPTgotKyMgaW5jbHVkZSAid3ByaW50Zi1wYXJzZS5oIgotKyNlbHNlCi0rIyBpbmNsdWRlICJwcmludGYtcGFyc2UuaCIKLSsjZW5kaWYKLSsKLSsvKiBHZXQgc2l6ZV90LCBOVUxMLiAgKi8KLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rCi0rLyogR2V0IGludG1heF90LiAgKi8KLSsjaWYgSEFWRV9TVERJTlRfSF9XSVRIX1VJTlRNQVgKLSsjIGluY2x1ZGUgPHN0ZGludC5oPgotKyNlbmRpZgotKyNpZiBIQVZFX0lOVFRZUEVTX0hfV0lUSF9VSU5UTUFYCi0rIyBpbmNsdWRlIDxpbnR0eXBlcy5oPgotKyNlbmRpZgotKwotKy8qIG1hbGxvYygpLCByZWFsbG9jKCksIGZyZWUoKS4gICovCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKwotKy8qIENoZWNrZWQgc2l6ZV90IGNvbXB1dGF0aW9ucy4gICovCi0rI2luY2x1ZGUgInhzaXplLmgiCi0rCi0rI2lmIFdJREVfQ0hBUl9WRVJTSU9OCi0rIyBkZWZpbmUgUFJJTlRGX1BBUlNFIHdwcmludGZfcGFyc2UKLSsjIGRlZmluZSBDSEFSX1Qgd2NoYXJfdAotKyMgZGVmaW5lIERJUkVDVElWRSB3Y2hhcl90X2RpcmVjdGl2ZQotKyMgZGVmaW5lIERJUkVDVElWRVMgd2NoYXJfdF9kaXJlY3RpdmVzCi0rI2Vsc2UKLSsjIGRlZmluZSBQUklOVEZfUEFSU0UgcHJpbnRmX3BhcnNlCi0rIyBkZWZpbmUgQ0hBUl9UIGNoYXIKLSsjIGRlZmluZSBESVJFQ1RJVkUgY2hhcl9kaXJlY3RpdmUKLSsjIGRlZmluZSBESVJFQ1RJVkVTIGNoYXJfZGlyZWN0aXZlcwotKyNlbmRpZgotKwotKyNpZmRlZiBTVEFUSUMKLStTVEFUSUMKLSsjZW5kaWYKLStpbnQKLStQUklOVEZfUEFSU0UgKGNvbnN0IENIQVJfVCAqZm9ybWF0LCBESVJFQ1RJVkVTICpkLCBhcmd1bWVudHMgKmEpCi0rewotKyAgY29uc3QgQ0hBUl9UICpjcCA9IGZvcm1hdDsJCS8qIHBvaW50ZXIgaW50byBmb3JtYXQgKi8KLSsgIHNpemVfdCBhcmdfcG9zbiA9IDA7CQkvKiBudW1iZXIgb2YgcmVndWxhciBhcmd1bWVudHMgY29uc3VtZWQgKi8KLSsgIHNpemVfdCBkX2FsbG9jYXRlZDsJCQkvKiBhbGxvY2F0ZWQgZWxlbWVudHMgb2YgZC0+ZGlyICovCi0rICBzaXplX3QgYV9hbGxvY2F0ZWQ7CQkJLyogYWxsb2NhdGVkIGVsZW1lbnRzIG9mIGEtPmFyZyAqLwotKyAgc2l6ZV90IG1heF93aWR0aF9sZW5ndGggPSAwOwotKyAgc2l6ZV90IG1heF9wcmVjaXNpb25fbGVuZ3RoID0gMDsKLSsKLSsgIGQtPmNvdW50ID0gMDsKLSsgIGRfYWxsb2NhdGVkID0gMTsKLSsgIGQtPmRpciA9IG1hbGxvYyAoZF9hbGxvY2F0ZWQgKiBzaXplb2YgKERJUkVDVElWRSkpOwotKyAgaWYgKGQtPmRpciA9PSBOVUxMKQotKyAgICAvKiBPdXQgb2YgbWVtb3J5LiAgKi8KLSsgICAgcmV0dXJuIC0xOwotKwotKyAgYS0+Y291bnQgPSAwOwotKyAgYV9hbGxvY2F0ZWQgPSAwOwotKyAgYS0+YXJnID0gTlVMTDsKLSsKLSsjZGVmaW5lIFJFR0lTVEVSX0FSRyhfaW5kZXhfLF90eXBlXykgXAotKyAgewkJCQkJCQkJCVwKLSsgICAgc2l6ZV90IG4gPSAoX2luZGV4Xyk7CQkJCQkJXAotKyAgICBpZiAobiA+PSBhX2FsbG9jYXRlZCkJCQkJCQlcCi0rICAgICAgewkJCQkJCQkJCVwKLSsJc2l6ZV90IG1lbW9yeV9zaXplOwkJCQkJCVwKLSsJYXJndW1lbnQgKm1lbW9yeTsJCQkJCQlcCi0rCQkJCQkJCQkJXAotKwlhX2FsbG9jYXRlZCA9IHh0aW1lcyAoYV9hbGxvY2F0ZWQsIDIpOwkJCQlcCi0rCWlmIChhX2FsbG9jYXRlZCA8PSBuKQkJCQkJCVwKLSsJICBhX2FsbG9jYXRlZCA9IHhzdW0gKG4sIDEpOwkJCQkJXAotKwltZW1vcnlfc2l6ZSA9IHh0aW1lcyAoYV9hbGxvY2F0ZWQsIHNpemVvZiAoYXJndW1lbnQpKTsJCVwKLSsJaWYgKHNpemVfb3ZlcmZsb3dfcCAobWVtb3J5X3NpemUpKQkJCQlcCi0rCSAgLyogT3ZlcmZsb3csIHdvdWxkIGxlYWQgdG8gb3V0IG9mIG1lbW9yeS4gICovCQkJXAotKwkgIGdvdG8gZXJyb3I7CQkJCQkJCVwKLSsJbWVtb3J5ID0gKGEtPmFyZwkJCQkJCVwKLSsJCSAgPyByZWFsbG9jIChhLT5hcmcsIG1lbW9yeV9zaXplKQkJCVwKLSsJCSAgOiBtYWxsb2MgKG1lbW9yeV9zaXplKSk7CQkJCVwKLSsJaWYgKG1lbW9yeSA9PSBOVUxMKQkJCQkJCVwKLSsJICAvKiBPdXQgb2YgbWVtb3J5LiAgKi8JCQkJCQlcCi0rCSAgZ290byBlcnJvcjsJCQkJCQkJXAotKwlhLT5hcmcgPSBtZW1vcnk7CQkJCQkJXAotKyAgICAgIH0JCQkJCQkJCQlcCi0rICAgIHdoaWxlIChhLT5jb3VudCA8PSBuKQkJCQkJCVwKLSsgICAgICBhLT5hcmdbYS0+Y291bnQrK10udHlwZSA9IFRZUEVfTk9ORTsJCQkJXAotKyAgICBpZiAoYS0+YXJnW25dLnR5cGUgPT0gVFlQRV9OT05FKQkJCQkJXAotKyAgICAgIGEtPmFyZ1tuXS50eXBlID0gKF90eXBlXyk7CQkJCQlcCi0rICAgIGVsc2UgaWYgKGEtPmFyZ1tuXS50eXBlICE9IChfdHlwZV8pKQkJCQlcCi0rICAgICAgLyogQW1iaWd1b3VzIHR5cGUgZm9yIHBvc2l0aW9uYWwgYXJndW1lbnQuICAqLwkJCVwKLSsgICAgICBnb3RvIGVycm9yOwkJCQkJCQlcCi0rICB9Ci0rCi0rICB3aGlsZSAoKmNwICE9ICdcMCcpCi0rICAgIHsKLSsgICAgICBDSEFSX1QgYyA9ICpjcCsrOwotKyAgICAgIGlmIChjID09ICclJykKLSsJewotKwkgIHNpemVfdCBhcmdfaW5kZXggPSBBUkdfTk9ORTsKLSsJICBESVJFQ1RJVkUgKmRwID0gJmQtPmRpcltkLT5jb3VudF07LyogcG9pbnRlciB0byBuZXh0IGRpcmVjdGl2ZSAqLwotKwotKwkgIC8qIEluaXRpYWxpemUgdGhlIG5leHQgZGlyZWN0aXZlLiAgKi8KLSsJICBkcC0+ZGlyX3N0YXJ0ID0gY3AgLSAxOwotKwkgIGRwLT5mbGFncyA9IDA7Ci0rCSAgZHAtPndpZHRoX3N0YXJ0ID0gTlVMTDsKLSsJICBkcC0+d2lkdGhfZW5kID0gTlVMTDsKLSsJICBkcC0+d2lkdGhfYXJnX2luZGV4ID0gQVJHX05PTkU7Ci0rCSAgZHAtPnByZWNpc2lvbl9zdGFydCA9IE5VTEw7Ci0rCSAgZHAtPnByZWNpc2lvbl9lbmQgPSBOVUxMOwotKwkgIGRwLT5wcmVjaXNpb25fYXJnX2luZGV4ID0gQVJHX05PTkU7Ci0rCSAgZHAtPmFyZ19pbmRleCA9IEFSR19OT05FOwotKwotKwkgIC8qIFRlc3QgZm9yIHBvc2l0aW9uYWwgYXJndW1lbnQuICAqLwotKwkgIGlmICgqY3AgPj0gJzAnICYmICpjcCA8PSAnOScpCi0rCSAgICB7Ci0rCSAgICAgIGNvbnN0IENIQVJfVCAqbnA7Ci0rCi0rCSAgICAgIGZvciAobnAgPSBjcDsgKm5wID49ICcwJyAmJiAqbnAgPD0gJzknOyBucCsrKQotKwkJOwotKwkgICAgICBpZiAoKm5wID09ICckJykKLSsJCXsKLSsJCSAgc2l6ZV90IG4gPSAwOwotKwotKwkJICBmb3IgKG5wID0gY3A7ICpucCA+PSAnMCcgJiYgKm5wIDw9ICc5JzsgbnArKykKLSsJCSAgICBuID0geHN1bSAoeHRpbWVzIChuLCAxMCksICpucCAtICcwJyk7Ci0rCQkgIGlmIChuID09IDApCi0rCQkgICAgLyogUG9zaXRpb25hbCBhcmd1bWVudCAwLiAgKi8KLSsJCSAgICBnb3RvIGVycm9yOwotKwkJICBpZiAoc2l6ZV9vdmVyZmxvd19wIChuKSkKLSsJCSAgICAvKiBuIHRvbyBsYXJnZSwgd291bGQgbGVhZCB0byBvdXQgb2YgbWVtb3J5IGxhdGVyLiAgKi8KLSsJCSAgICBnb3RvIGVycm9yOwotKwkJICBhcmdfaW5kZXggPSBuIC0gMTsKLSsJCSAgY3AgPSBucCArIDE7Ci0rCQl9Ci0rCSAgICB9Ci0rCi0rCSAgLyogUmVhZCB0aGUgZmxhZ3MuICAqLwotKwkgIGZvciAoOzspCi0rCSAgICB7Ci0rCSAgICAgIGlmICgqY3AgPT0gJ1wnJykKLSsJCXsKLSsJCSAgZHAtPmZsYWdzIHw9IEZMQUdfR1JPVVA7Ci0rCQkgIGNwKys7Ci0rCQl9Ci0rCSAgICAgIGVsc2UgaWYgKCpjcCA9PSAnLScpCi0rCQl7Ci0rCQkgIGRwLT5mbGFncyB8PSBGTEFHX0xFRlQ7Ci0rCQkgIGNwKys7Ci0rCQl9Ci0rCSAgICAgIGVsc2UgaWYgKCpjcCA9PSAnKycpCi0rCQl7Ci0rCQkgIGRwLT5mbGFncyB8PSBGTEFHX1NIT1dTSUdOOwotKwkJICBjcCsrOwotKwkJfQotKwkgICAgICBlbHNlIGlmICgqY3AgPT0gJyAnKQotKwkJewotKwkJICBkcC0+ZmxhZ3MgfD0gRkxBR19TUEFDRTsKLSsJCSAgY3ArKzsKLSsJCX0KLSsJICAgICAgZWxzZSBpZiAoKmNwID09ICcjJykKLSsJCXsKLSsJCSAgZHAtPmZsYWdzIHw9IEZMQUdfQUxUOwotKwkJICBjcCsrOwotKwkJfQotKwkgICAgICBlbHNlIGlmICgqY3AgPT0gJzAnKQotKwkJewotKwkJICBkcC0+ZmxhZ3MgfD0gRkxBR19aRVJPOwotKwkJICBjcCsrOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQlicmVhazsKLSsJICAgIH0KLSsKLSsJICAvKiBQYXJzZSB0aGUgZmllbGQgd2lkdGguICAqLwotKwkgIGlmICgqY3AgPT0gJyonKQotKwkgICAgewotKwkgICAgICBkcC0+d2lkdGhfc3RhcnQgPSBjcDsKLSsJICAgICAgY3ArKzsKLSsJICAgICAgZHAtPndpZHRoX2VuZCA9IGNwOwotKwkgICAgICBpZiAobWF4X3dpZHRoX2xlbmd0aCA8IDEpCi0rCQltYXhfd2lkdGhfbGVuZ3RoID0gMTsKLSsKLSsJICAgICAgLyogVGVzdCBmb3IgcG9zaXRpb25hbCBhcmd1bWVudC4gICovCi0rCSAgICAgIGlmICgqY3AgPj0gJzAnICYmICpjcCA8PSAnOScpCi0rCQl7Ci0rCQkgIGNvbnN0IENIQVJfVCAqbnA7Ci0rCi0rCQkgIGZvciAobnAgPSBjcDsgKm5wID49ICcwJyAmJiAqbnAgPD0gJzknOyBucCsrKQotKwkJICAgIDsKLSsJCSAgaWYgKCpucCA9PSAnJCcpCi0rCQkgICAgewotKwkJICAgICAgc2l6ZV90IG4gPSAwOwotKwotKwkJICAgICAgZm9yIChucCA9IGNwOyAqbnAgPj0gJzAnICYmICpucCA8PSAnOSc7IG5wKyspCi0rCQkJbiA9IHhzdW0gKHh0aW1lcyAobiwgMTApLCAqbnAgLSAnMCcpOwotKwkJICAgICAgaWYgKG4gPT0gMCkKLSsJCQkvKiBQb3NpdGlvbmFsIGFyZ3VtZW50IDAuICAqLwotKwkJCWdvdG8gZXJyb3I7Ci0rCQkgICAgICBpZiAoc2l6ZV9vdmVyZmxvd19wIChuKSkKLSsJCQkvKiBuIHRvbyBsYXJnZSwgd291bGQgbGVhZCB0byBvdXQgb2YgbWVtb3J5IGxhdGVyLiAgKi8KLSsJCQlnb3RvIGVycm9yOwotKwkJICAgICAgZHAtPndpZHRoX2FyZ19pbmRleCA9IG4gLSAxOwotKwkJICAgICAgY3AgPSBucCArIDE7Ci0rCQkgICAgfQotKwkJfQotKwkgICAgICBpZiAoZHAtPndpZHRoX2FyZ19pbmRleCA9PSBBUkdfTk9ORSkKLSsJCXsKLSsJCSAgZHAtPndpZHRoX2FyZ19pbmRleCA9IGFyZ19wb3NuKys7Ci0rCQkgIGlmIChkcC0+d2lkdGhfYXJnX2luZGV4ID09IEFSR19OT05FKQotKwkJICAgIC8qIGFyZ19wb3NuIHdyYXBwZWQgYXJvdW5kLiAgKi8KLSsJCSAgICBnb3RvIGVycm9yOwotKwkJfQotKwkgICAgICBSRUdJU1RFUl9BUkcgKGRwLT53aWR0aF9hcmdfaW5kZXgsIFRZUEVfSU5UKTsKLSsJICAgIH0KLSsJICBlbHNlIGlmICgqY3AgPj0gJzAnICYmICpjcCA8PSAnOScpCi0rCSAgICB7Ci0rCSAgICAgIHNpemVfdCB3aWR0aF9sZW5ndGg7Ci0rCi0rCSAgICAgIGRwLT53aWR0aF9zdGFydCA9IGNwOwotKwkgICAgICBmb3IgKDsgKmNwID49ICcwJyAmJiAqY3AgPD0gJzknOyBjcCsrKQotKwkJOwotKwkgICAgICBkcC0+d2lkdGhfZW5kID0gY3A7Ci0rCSAgICAgIHdpZHRoX2xlbmd0aCA9IGRwLT53aWR0aF9lbmQgLSBkcC0+d2lkdGhfc3RhcnQ7Ci0rCSAgICAgIGlmIChtYXhfd2lkdGhfbGVuZ3RoIDwgd2lkdGhfbGVuZ3RoKQotKwkJbWF4X3dpZHRoX2xlbmd0aCA9IHdpZHRoX2xlbmd0aDsKLSsJICAgIH0KLSsKLSsJICAvKiBQYXJzZSB0aGUgcHJlY2lzaW9uLiAgKi8KLSsJICBpZiAoKmNwID09ICcuJykKLSsJICAgIHsKLSsJICAgICAgY3ArKzsKLSsJICAgICAgaWYgKCpjcCA9PSAnKicpCi0rCQl7Ci0rCQkgIGRwLT5wcmVjaXNpb25fc3RhcnQgPSBjcCAtIDE7Ci0rCQkgIGNwKys7Ci0rCQkgIGRwLT5wcmVjaXNpb25fZW5kID0gY3A7Ci0rCQkgIGlmIChtYXhfcHJlY2lzaW9uX2xlbmd0aCA8IDIpCi0rCQkgICAgbWF4X3ByZWNpc2lvbl9sZW5ndGggPSAyOwotKwotKwkJICAvKiBUZXN0IGZvciBwb3NpdGlvbmFsIGFyZ3VtZW50LiAgKi8KLSsJCSAgaWYgKCpjcCA+PSAnMCcgJiYgKmNwIDw9ICc5JykKLSsJCSAgICB7Ci0rCQkgICAgICBjb25zdCBDSEFSX1QgKm5wOwotKwotKwkJICAgICAgZm9yIChucCA9IGNwOyAqbnAgPj0gJzAnICYmICpucCA8PSAnOSc7IG5wKyspCi0rCQkJOwotKwkJICAgICAgaWYgKCpucCA9PSAnJCcpCi0rCQkJewotKwkJCSAgc2l6ZV90IG4gPSAwOwotKwotKwkJCSAgZm9yIChucCA9IGNwOyAqbnAgPj0gJzAnICYmICpucCA8PSAnOSc7IG5wKyspCi0rCQkJICAgIG4gPSB4c3VtICh4dGltZXMgKG4sIDEwKSwgKm5wIC0gJzAnKTsKLSsJCQkgIGlmIChuID09IDApCi0rCQkJICAgIC8qIFBvc2l0aW9uYWwgYXJndW1lbnQgMC4gICovCi0rCQkJICAgIGdvdG8gZXJyb3I7Ci0rCQkJICBpZiAoc2l6ZV9vdmVyZmxvd19wIChuKSkKLSsJCQkgICAgLyogbiB0b28gbGFyZ2UsIHdvdWxkIGxlYWQgdG8gb3V0IG9mIG1lbW9yeQotKwkJCSAgICAgICBsYXRlci4gICovCi0rCQkJICAgIGdvdG8gZXJyb3I7Ci0rCQkJICBkcC0+cHJlY2lzaW9uX2FyZ19pbmRleCA9IG4gLSAxOwotKwkJCSAgY3AgPSBucCArIDE7Ci0rCQkJfQotKwkJICAgIH0KLSsJCSAgaWYgKGRwLT5wcmVjaXNpb25fYXJnX2luZGV4ID09IEFSR19OT05FKQotKwkJICAgIHsKLSsJCSAgICAgIGRwLT5wcmVjaXNpb25fYXJnX2luZGV4ID0gYXJnX3Bvc24rKzsKLSsJCSAgICAgIGlmIChkcC0+cHJlY2lzaW9uX2FyZ19pbmRleCA9PSBBUkdfTk9ORSkKLSsJCQkvKiBhcmdfcG9zbiB3cmFwcGVkIGFyb3VuZC4gICovCi0rCQkJZ290byBlcnJvcjsKLSsJCSAgICB9Ci0rCQkgIFJFR0lTVEVSX0FSRyAoZHAtPnByZWNpc2lvbl9hcmdfaW5kZXgsIFRZUEVfSU5UKTsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJewotKwkJICBzaXplX3QgcHJlY2lzaW9uX2xlbmd0aDsKLSsKLSsJCSAgZHAtPnByZWNpc2lvbl9zdGFydCA9IGNwIC0gMTsKLSsJCSAgZm9yICg7ICpjcCA+PSAnMCcgJiYgKmNwIDw9ICc5JzsgY3ArKykKLSsJCSAgICA7Ci0rCQkgIGRwLT5wcmVjaXNpb25fZW5kID0gY3A7Ci0rCQkgIHByZWNpc2lvbl9sZW5ndGggPSBkcC0+cHJlY2lzaW9uX2VuZCAtIGRwLT5wcmVjaXNpb25fc3RhcnQ7Ci0rCQkgIGlmIChtYXhfcHJlY2lzaW9uX2xlbmd0aCA8IHByZWNpc2lvbl9sZW5ndGgpCi0rCQkgICAgbWF4X3ByZWNpc2lvbl9sZW5ndGggPSBwcmVjaXNpb25fbGVuZ3RoOwotKwkJfQotKwkgICAgfQotKwotKwkgIHsKLSsJICAgIGFyZ190eXBlIHR5cGU7Ci0rCi0rCSAgICAvKiBQYXJzZSBhcmd1bWVudCB0eXBlL3NpemUgc3BlY2lmaWVycy4gICovCi0rCSAgICB7Ci0rCSAgICAgIGludCBmbGFncyA9IDA7Ci0rCi0rCSAgICAgIGZvciAoOzspCi0rCQl7Ci0rCQkgIGlmICgqY3AgPT0gJ2gnKQotKwkJICAgIHsKLSsJCSAgICAgIGZsYWdzIHw9ICgxIDw8IChmbGFncyAmIDEpKTsKLSsJCSAgICAgIGNwKys7Ci0rCQkgICAgfQotKwkJICBlbHNlIGlmICgqY3AgPT0gJ0wnKQotKwkJICAgIHsKLSsJCSAgICAgIGZsYWdzIHw9IDQ7Ci0rCQkgICAgICBjcCsrOwotKwkJICAgIH0KLSsJCSAgZWxzZSBpZiAoKmNwID09ICdsJykKLSsJCSAgICB7Ci0rCQkgICAgICBmbGFncyArPSA4OwotKwkJICAgICAgY3ArKzsKLSsJCSAgICB9Ci0rI2lmZGVmIEhBVkVfSU5UTUFYX1QKLSsJCSAgZWxzZSBpZiAoKmNwID09ICdqJykKLSsJCSAgICB7Ci0rCQkgICAgICBpZiAoc2l6ZW9mIChpbnRtYXhfdCkgPiBzaXplb2YgKGxvbmcpKQotKwkJCXsKLSsJCQkgIC8qIGludG1heF90ID0gbG9uZyBsb25nICovCi0rCQkJICBmbGFncyArPSAxNjsKLSsJCQl9Ci0rCQkgICAgICBlbHNlIGlmIChzaXplb2YgKGludG1heF90KSA+IHNpemVvZiAoaW50KSkKLSsJCQl7Ci0rCQkJICAvKiBpbnRtYXhfdCA9IGxvbmcgKi8KLSsJCQkgIGZsYWdzICs9IDg7Ci0rCQkJfQotKwkJICAgICAgY3ArKzsKLSsJCSAgICB9Ci0rI2VuZGlmCi0rCQkgIGVsc2UgaWYgKCpjcCA9PSAneicgfHwgKmNwID09ICdaJykKLSsJCSAgICB7Ci0rCQkgICAgICAvKiAneicgaXMgc3RhbmRhcmRpemVkIGluIElTTyBDIDk5LCBidXQgZ2xpYmMgdXNlcyAnWicKLSsJCQkgYmVjYXVzZSB0aGUgd2FybmluZyBmYWNpbGl0eSBpbiBnY2MtMi45NS4yIHVuZGVyc3RhbmRzCi0rCQkJIG9ubHkgJ1onIChzZWUgZ2NjLTIuOTUuMi9nY2MvYy1jb21tb24uYzoxNzg0KS4gICovCi0rCQkgICAgICBpZiAoc2l6ZW9mIChzaXplX3QpID4gc2l6ZW9mIChsb25nKSkKLSsJCQl7Ci0rCQkJICAvKiBzaXplX3QgPSBsb25nIGxvbmcgKi8KLSsJCQkgIGZsYWdzICs9IDE2OwotKwkJCX0KLSsJCSAgICAgIGVsc2UgaWYgKHNpemVvZiAoc2l6ZV90KSA+IHNpemVvZiAoaW50KSkKLSsJCQl7Ci0rCQkJICAvKiBzaXplX3QgPSBsb25nICovCi0rCQkJICBmbGFncyArPSA4OwotKwkJCX0KLSsJCSAgICAgIGNwKys7Ci0rCQkgICAgfQotKwkJICBlbHNlIGlmICgqY3AgPT0gJ3QnKQotKwkJICAgIHsKLSsJCSAgICAgIGlmIChzaXplb2YgKHB0cmRpZmZfdCkgPiBzaXplb2YgKGxvbmcpKQotKwkJCXsKLSsJCQkgIC8qIHB0cmRpZmZfdCA9IGxvbmcgbG9uZyAqLwotKwkJCSAgZmxhZ3MgKz0gMTY7Ci0rCQkJfQotKwkJICAgICAgZWxzZSBpZiAoc2l6ZW9mIChwdHJkaWZmX3QpID4gc2l6ZW9mIChpbnQpKQotKwkJCXsKLSsJCQkgIC8qIHB0cmRpZmZfdCA9IGxvbmcgKi8KLSsJCQkgIGZsYWdzICs9IDg7Ci0rCQkJfQotKwkJICAgICAgY3ArKzsKLSsJCSAgICB9Ci0rCQkgIGVsc2UKLSsJCSAgICBicmVhazsKLSsJCX0KLSsKLSsJICAgICAgLyogUmVhZCB0aGUgY29udmVyc2lvbiBjaGFyYWN0ZXIuICAqLwotKwkgICAgICBjID0gKmNwKys7Ci0rCSAgICAgIHN3aXRjaCAoYykKLSsJCXsKLSsJCWNhc2UgJ2QnOiBjYXNlICdpJzoKLSsjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSsJCSAgaWYgKGZsYWdzID49IDE2IHx8IChmbGFncyAmIDQpKQotKwkJICAgIHR5cGUgPSBUWVBFX0xPTkdMT05HSU5UOwotKwkJICBlbHNlCi0rI2VuZGlmCi0rCQkgIGlmIChmbGFncyA+PSA4KQotKwkJICAgIHR5cGUgPSBUWVBFX0xPTkdJTlQ7Ci0rCQkgIGVsc2UgaWYgKGZsYWdzICYgMikKLSsJCSAgICB0eXBlID0gVFlQRV9TQ0hBUjsKLSsJCSAgZWxzZSBpZiAoZmxhZ3MgJiAxKQotKwkJICAgIHR5cGUgPSBUWVBFX1NIT1JUOwotKwkJICBlbHNlCi0rCQkgICAgdHlwZSA9IFRZUEVfSU5UOwotKwkJICBicmVhazsKLSsJCWNhc2UgJ28nOiBjYXNlICd1JzogY2FzZSAneCc6IGNhc2UgJ1gnOgotKyNpZmRlZiBIQVZFX0xPTkdfTE9ORwotKwkJICBpZiAoZmxhZ3MgPj0gMTYgfHwgKGZsYWdzICYgNCkpCi0rCQkgICAgdHlwZSA9IFRZUEVfVUxPTkdMT05HSU5UOwotKwkJICBlbHNlCi0rI2VuZGlmCi0rCQkgIGlmIChmbGFncyA+PSA4KQotKwkJICAgIHR5cGUgPSBUWVBFX1VMT05HSU5UOwotKwkJICBlbHNlIGlmIChmbGFncyAmIDIpCi0rCQkgICAgdHlwZSA9IFRZUEVfVUNIQVI7Ci0rCQkgIGVsc2UgaWYgKGZsYWdzICYgMSkKLSsJCSAgICB0eXBlID0gVFlQRV9VU0hPUlQ7Ci0rCQkgIGVsc2UKLSsJCSAgICB0eXBlID0gVFlQRV9VSU5UOwotKwkJICBicmVhazsKLSsJCWNhc2UgJ2YnOiBjYXNlICdGJzogY2FzZSAnZSc6IGNhc2UgJ0UnOiBjYXNlICdnJzogY2FzZSAnRyc6Ci0rCQljYXNlICdhJzogY2FzZSAnQSc6Ci0rI2lmZGVmIEhBVkVfTE9OR19ET1VCTEUKLSsJCSAgaWYgKGZsYWdzID49IDE2IHx8IChmbGFncyAmIDQpKQotKwkJICAgIHR5cGUgPSBUWVBFX0xPTkdET1VCTEU7Ci0rCQkgIGVsc2UKLSsjZW5kaWYKLSsJCSAgdHlwZSA9IFRZUEVfRE9VQkxFOwotKwkJICBicmVhazsKLSsJCWNhc2UgJ2MnOgotKwkJICBpZiAoZmxhZ3MgPj0gOCkKLSsjaWZkZWYgSEFWRV9XSU5UX1QKLSsJCSAgICB0eXBlID0gVFlQRV9XSURFX0NIQVI7Ci0rI2Vsc2UKLSsJCSAgICBnb3RvIGVycm9yOwotKyNlbmRpZgotKwkJICBlbHNlCi0rCQkgICAgdHlwZSA9IFRZUEVfQ0hBUjsKLSsJCSAgYnJlYWs7Ci0rI2lmZGVmIEhBVkVfV0lOVF9UCi0rCQljYXNlICdDJzoKLSsJCSAgdHlwZSA9IFRZUEVfV0lERV9DSEFSOwotKwkJICBjID0gJ2MnOwotKwkJICBicmVhazsKLSsjZW5kaWYKLSsJCWNhc2UgJ3MnOgotKwkJICBpZiAoZmxhZ3MgPj0gOCkKLSsjaWZkZWYgSEFWRV9XQ0hBUl9UCi0rCQkgICAgdHlwZSA9IFRZUEVfV0lERV9TVFJJTkc7Ci0rI2Vsc2UKLSsJCSAgICBnb3RvIGVycm9yOwotKyNlbmRpZgotKwkJICBlbHNlCi0rCQkgICAgdHlwZSA9IFRZUEVfU1RSSU5HOwotKwkJICBicmVhazsKLSsjaWZkZWYgSEFWRV9XQ0hBUl9UCi0rCQljYXNlICdTJzoKLSsJCSAgdHlwZSA9IFRZUEVfV0lERV9TVFJJTkc7Ci0rCQkgIGMgPSAncyc7Ci0rCQkgIGJyZWFrOwotKyNlbmRpZgotKwkJY2FzZSAncCc6Ci0rCQkgIHR5cGUgPSBUWVBFX1BPSU5URVI7Ci0rCQkgIGJyZWFrOwotKwkJY2FzZSAnbic6Ci0rI2lmZGVmIEhBVkVfTE9OR19MT05HCi0rCQkgIGlmIChmbGFncyA+PSAxNiB8fCAoZmxhZ3MgJiA0KSkKLSsJCSAgICB0eXBlID0gVFlQRV9DT1VOVF9MT05HTE9OR0lOVF9QT0lOVEVSOwotKwkJICBlbHNlCi0rI2VuZGlmCi0rCQkgIGlmIChmbGFncyA+PSA4KQotKwkJICAgIHR5cGUgPSBUWVBFX0NPVU5UX0xPTkdJTlRfUE9JTlRFUjsKLSsJCSAgZWxzZSBpZiAoZmxhZ3MgJiAyKQotKwkJICAgIHR5cGUgPSBUWVBFX0NPVU5UX1NDSEFSX1BPSU5URVI7Ci0rCQkgIGVsc2UgaWYgKGZsYWdzICYgMSkKLSsJCSAgICB0eXBlID0gVFlQRV9DT1VOVF9TSE9SVF9QT0lOVEVSOwotKwkJICBlbHNlCi0rCQkgICAgdHlwZSA9IFRZUEVfQ09VTlRfSU5UX1BPSU5URVI7Ci0rCQkgIGJyZWFrOwotKwkJY2FzZSAnJSc6Ci0rCQkgIHR5cGUgPSBUWVBFX05PTkU7Ci0rCQkgIGJyZWFrOwotKwkJZGVmYXVsdDoKLSsJCSAgLyogVW5rbm93biBjb252ZXJzaW9uIGNoYXJhY3Rlci4gICovCi0rCQkgIGdvdG8gZXJyb3I7Ci0rCQl9Ci0rCSAgICB9Ci0rCi0rCSAgICBpZiAodHlwZSAhPSBUWVBFX05PTkUpCi0rCSAgICAgIHsKLSsJCWRwLT5hcmdfaW5kZXggPSBhcmdfaW5kZXg7Ci0rCQlpZiAoZHAtPmFyZ19pbmRleCA9PSBBUkdfTk9ORSkKLSsJCSAgewotKwkJICAgIGRwLT5hcmdfaW5kZXggPSBhcmdfcG9zbisrOwotKwkJICAgIGlmIChkcC0+YXJnX2luZGV4ID09IEFSR19OT05FKQotKwkJICAgICAgLyogYXJnX3Bvc24gd3JhcHBlZCBhcm91bmQuICAqLwotKwkJICAgICAgZ290byBlcnJvcjsKLSsJCSAgfQotKwkJUkVHSVNURVJfQVJHIChkcC0+YXJnX2luZGV4LCB0eXBlKTsKLSsJICAgICAgfQotKwkgICAgZHAtPmNvbnZlcnNpb24gPSBjOwotKwkgICAgZHAtPmRpcl9lbmQgPSBjcDsKLSsJICB9Ci0rCi0rCSAgZC0+Y291bnQrKzsKLSsJICBpZiAoZC0+Y291bnQgPj0gZF9hbGxvY2F0ZWQpCi0rCSAgICB7Ci0rCSAgICAgIHNpemVfdCBtZW1vcnlfc2l6ZTsKLSsJICAgICAgRElSRUNUSVZFICptZW1vcnk7Ci0rCi0rCSAgICAgIGRfYWxsb2NhdGVkID0geHRpbWVzIChkX2FsbG9jYXRlZCwgMik7Ci0rCSAgICAgIG1lbW9yeV9zaXplID0geHRpbWVzIChkX2FsbG9jYXRlZCwgc2l6ZW9mIChESVJFQ1RJVkUpKTsKLSsJICAgICAgaWYgKHNpemVfb3ZlcmZsb3dfcCAobWVtb3J5X3NpemUpKQotKwkJLyogT3ZlcmZsb3csIHdvdWxkIGxlYWQgdG8gb3V0IG9mIG1lbW9yeS4gICovCi0rCQlnb3RvIGVycm9yOwotKwkgICAgICBtZW1vcnkgPSByZWFsbG9jIChkLT5kaXIsIG1lbW9yeV9zaXplKTsKLSsJICAgICAgaWYgKG1lbW9yeSA9PSBOVUxMKQotKwkJLyogT3V0IG9mIG1lbW9yeS4gICovCi0rCQlnb3RvIGVycm9yOwotKwkgICAgICBkLT5kaXIgPSBtZW1vcnk7Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotKyAgZC0+ZGlyW2QtPmNvdW50XS5kaXJfc3RhcnQgPSBjcDsKLSsKLSsgIGQtPm1heF93aWR0aF9sZW5ndGggPSBtYXhfd2lkdGhfbGVuZ3RoOwotKyAgZC0+bWF4X3ByZWNpc2lvbl9sZW5ndGggPSBtYXhfcHJlY2lzaW9uX2xlbmd0aDsKLSsgIHJldHVybiAwOwotKwotK2Vycm9yOgotKyAgaWYgKGEtPmFyZykKLSsgICAgZnJlZSAoYS0+YXJnKTsKLSsgIGlmIChkLT5kaXIpCi0rICAgIGZyZWUgKGQtPmRpcik7Ci0rICByZXR1cm4gLTE7Ci0rfQotKwotKyN1bmRlZiBESVJFQ1RJVkVTCi0rI3VuZGVmIERJUkVDVElWRQotKyN1bmRlZiBDSEFSX1QKLSsjdW5kZWYgUFJJTlRGX1BBUlNFCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvcHJpbnRmLXBhcnNlLmgJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvcHJpbnRmLXBhcnNlLmgJMjAwNC0wOS0xMiAxNDo0MDozNC42Mjg3MDY1OTIgLTA0MDAKLUBAIC0wLDAgKzEsNzUgQEAKLSsvKiBQYXJzZSBwcmludGYgZm9ybWF0IHN0cmluZy4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDItMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmbmRlZiBfUFJJTlRGX1BBUlNFX0gKLSsjZGVmaW5lIF9QUklOVEZfUEFSU0VfSAotKwotKyNpbmNsdWRlICJwcmludGYtYXJncy5oIgotKwotKwotKy8qIEZsYWdzICovCi0rI2RlZmluZSBGTEFHX0dST1VQCSAxCS8qICcgZmxhZyAqLwotKyNkZWZpbmUgRkxBR19MRUZUCSAyCS8qIC0gZmxhZyAqLwotKyNkZWZpbmUgRkxBR19TSE9XU0lHTgkgNAkvKiArIGZsYWcgKi8KLSsjZGVmaW5lIEZMQUdfU1BBQ0UJIDgJLyogc3BhY2UgZmxhZyAqLwotKyNkZWZpbmUgRkxBR19BTFQJMTYJLyogIyBmbGFnICovCi0rI2RlZmluZSBGTEFHX1pFUk8JMzIKLSsKLSsvKiBhcmdfaW5kZXggdmFsdWUgaW5kaWNhdGluZyB0aGF0IG5vIGFyZ3VtZW50IGlzIGNvbnN1bWVkLiAgKi8KLSsjZGVmaW5lIEFSR19OT05FCSh+KHNpemVfdCkwKQotKwotKy8qIEEgcGFyc2VkIGRpcmVjdGl2ZS4gICovCi0rdHlwZWRlZiBzdHJ1Y3QKLSt7Ci0rICBjb25zdCBjaGFyKiBkaXJfc3RhcnQ7Ci0rICBjb25zdCBjaGFyKiBkaXJfZW5kOwotKyAgaW50IGZsYWdzOwotKyAgY29uc3QgY2hhciogd2lkdGhfc3RhcnQ7Ci0rICBjb25zdCBjaGFyKiB3aWR0aF9lbmQ7Ci0rICBzaXplX3Qgd2lkdGhfYXJnX2luZGV4OwotKyAgY29uc3QgY2hhciogcHJlY2lzaW9uX3N0YXJ0OwotKyAgY29uc3QgY2hhciogcHJlY2lzaW9uX2VuZDsKLSsgIHNpemVfdCBwcmVjaXNpb25fYXJnX2luZGV4OwotKyAgY2hhciBjb252ZXJzaW9uOyAvKiBkIGkgbyB1IHggWCBmIGUgRSBnIEcgYyBzIHAgbiBVICUgYnV0IG5vdCBDIFMgKi8KLSsgIHNpemVfdCBhcmdfaW5kZXg7Ci0rfQotK2NoYXJfZGlyZWN0aXZlOwotKwotKy8qIEEgcGFyc2VkIGZvcm1hdCBzdHJpbmcuICAqLwotK3R5cGVkZWYgc3RydWN0Ci0rewotKyAgc2l6ZV90IGNvdW50OwotKyAgY2hhcl9kaXJlY3RpdmUgKmRpcjsKLSsgIHNpemVfdCBtYXhfd2lkdGhfbGVuZ3RoOwotKyAgc2l6ZV90IG1heF9wcmVjaXNpb25fbGVuZ3RoOwotK30KLStjaGFyX2RpcmVjdGl2ZXM7Ci0rCi0rCi0rLyogUGFyc2VzIHRoZSBmb3JtYXQgc3RyaW5nLiAgRmlsbHMgaW4gdGhlIG51bWJlciBOIG9mIGRpcmVjdGl2ZXMsIGFuZCBmaWxscwotKyAgIGluIGRpcmVjdGl2ZXNbMF0sIC4uLiwgZGlyZWN0aXZlc1tOLTFdLCBhbmQgc2V0cyBkaXJlY3RpdmVzW05dLmRpcl9zdGFydAotKyAgIHRvIHRoZSBlbmQgb2YgdGhlIGZvcm1hdCBzdHJpbmcuICBBbHNvIGZpbGxzIGluIHRoZSBhcmdfdHlwZSBmaWVsZHMgb2YgdGhlCi0rICAgYXJndW1lbnRzIGFuZCB0aGUgbmVlZGVkIGNvdW50IG9mIGFyZ3VtZW50cy4gICovCi0rI2lmZGVmIFNUQVRJQwotK1NUQVRJQwotKyNlbHNlCi0rZXh0ZXJuCi0rI2VuZGlmCi0raW50IHByaW50Zl9wYXJzZSAoY29uc3QgY2hhciAqZm9ybWF0LCBjaGFyX2RpcmVjdGl2ZXMgKmQsIGFyZ3VtZW50cyAqYSk7Ci0rCi0rI2VuZGlmIC8qIF9QUklOVEZfUEFSU0VfSCAqLwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3JlZi1hZGQuc2luCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3JlZi1hZGQuc2luCTIwMDQtMDktMTIgMTQ6NDA6MzQuNjMzNzA1ODMyIC0wNDAwCi1AQCAtMCwwICsxLDMxIEBACi0rIyBBZGQgdGhpcyBwYWNrYWdlIHRvIGEgbGlzdCBvZiByZWZlcmVuY2VzIHN0b3JlZCBpbiBhIHRleHQgZmlsZS4KLSsjCi0rIyAgIENvcHlyaWdodCAoQykgMjAwMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsjICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyMgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyMgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rIyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rIyAgIFVTQS4KLSsjCi0rIyBXcml0dGVuIGJ5IEJydW5vIEhhaWJsZSA8aGFpYmxlQGNsaXNwLmNvbnMub3JnPi4KLSsjCi0rL14jIFBhY2thZ2VzIHVzaW5nIHRoaXMgZmlsZTogLyB7Ci0rICBzLyMgUGFja2FnZXMgdXNpbmcgdGhpcyBmaWxlOi8vCi0rICB0YQotKyAgOmEKLSsgIHMvIEBQQUNLQUdFQCAvIEBQQUNLQUdFQCAvCi0rICB0YgotKyAgcy8gJC8gQFBBQ0tBR0VAIC8KLSsgIDpiCi0rICBzL14vIyBQYWNrYWdlcyB1c2luZyB0aGlzIGZpbGU6LwotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9yZWYtZGVsLnNpbgkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9yZWYtZGVsLnNpbgkyMDA0LTA5LTEyIDE0OjQwOjM0LjYzODcwNTA3MiAtMDQwMAotQEAgLTAsMCArMSwyNiBAQAotKyMgUmVtb3ZlIHRoaXMgcGFja2FnZSBmcm9tIGEgbGlzdCBvZiByZWZlcmVuY2VzIHN0b3JlZCBpbiBhIHRleHQgZmlsZS4KLSsjCi0rIyAgIENvcHlyaWdodCAoQykgMjAwMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsjICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyMgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyMgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rIyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rIyAgIFVTQS4KLSsjCi0rIyBXcml0dGVuIGJ5IEJydW5vIEhhaWJsZSA8aGFpYmxlQGNsaXNwLmNvbnMub3JnPi4KLSsjCi0rL14jIFBhY2thZ2VzIHVzaW5nIHRoaXMgZmlsZTogLyB7Ci0rICBzLyMgUGFja2FnZXMgdXNpbmcgdGhpcyBmaWxlOi8vCi0rICBzLyBAUEFDS0FHRUAgLyAvCi0rICBzL14vIyBQYWNrYWdlcyB1c2luZyB0aGlzIGZpbGU6LwotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9yZWxvY2F0YWJsZS5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3JlbG9jYXRhYmxlLmMJMjAwNC0wOS0xMiAxNDo0MDozNC42NDQ3MDQxNjAgLTA0MDAKLUBAIC0wLDAgKzEsNDQ5IEBACi0rLyogUHJvdmlkZSByZWxvY2F0YWJsZSBwYWNrYWdlcy4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgV3JpdHRlbiBieSBCcnVubyBIYWlibGUgPGJydW5vQGNsaXNwLm9yZz4sIDIwMDMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKwotKy8qIFRlbGwgZ2xpYmMncyA8c3RkaW8uaD4gdG8gcHJvdmlkZSBhIHByb3RvdHlwZSBmb3IgZ2V0bGluZSgpLgotKyAgIFRoaXMgbXVzdCBjb21lIGJlZm9yZSA8Y29uZmlnLmg+IGJlY2F1c2UgPGNvbmZpZy5oPiBtYXkgaW5jbHVkZQotKyAgIDxmZWF0dXJlcy5oPiwgYW5kIG9uY2UgPGZlYXR1cmVzLmg+IGhhcyBiZWVuIGluY2x1ZGVkLCBpdCdzIHRvbyBsYXRlLiAgKi8KLSsjaWZuZGVmIF9HTlVfU09VUkNFCi0rIyBkZWZpbmUgX0dOVV9TT1VSQ0UJMQotKyNlbmRpZgotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlICJjb25maWcuaCIKLSsjZW5kaWYKLSsKLSsvKiBTcGVjaWZpY2F0aW9uLiAgKi8KLSsjaW5jbHVkZSAicmVsb2NhdGFibGUuaCIKLSsKLSsjaWYgRU5BQkxFX1JFTE9DQVRBQkxFCi0rCi0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0rI2lmZGVmIE5PX1hNQUxMT0MKLSsjIGRlZmluZSB4bWFsbG9jIG1hbGxvYwotKyNlbHNlCi0rIyBpbmNsdWRlICJ4YWxsb2MuaCIKLSsjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18KLSsjIGRlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCi0rIyBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0rI2VuZGlmCi0rCi0rI2lmIERFUEVORFNfT05fTElCQ0hBUlNFVAotKyMgaW5jbHVkZSA8bGliY2hhcnNldC5oPgotKyNlbmRpZgotKyNpZiBERVBFTkRTX09OX0xJQklDT05WICYmIEhBVkVfSUNPTlYKLSsjIGluY2x1ZGUgPGljb252Lmg+Ci0rI2VuZGlmCi0rI2lmIERFUEVORFNfT05fTElCSU5UTCAmJiBFTkFCTEVfTkxTCi0rIyBpbmNsdWRlIDxsaWJpbnRsLmg+Ci0rI2VuZGlmCi0rCi0rLyogRmFrZWQgY2hlYXAgJ2Jvb2wnLiAgKi8KLSsjdW5kZWYgYm9vbAotKyN1bmRlZiBmYWxzZQotKyN1bmRlZiB0cnVlCi0rI2RlZmluZSBib29sIGludAotKyNkZWZpbmUgZmFsc2UgMAotKyNkZWZpbmUgdHJ1ZSAxCi0rCi0rLyogUGF0aG5hbWUgc3VwcG9ydC4KLSsgICBJU1NMQVNIKEMpICAgICAgICAgICB0ZXN0cyB3aGV0aGVyIEMgaXMgYSBkaXJlY3Rvcnkgc2VwYXJhdG9yIGNoYXJhY3Rlci4KLSsgICBJU19QQVRIX1dJVEhfRElSKFApICB0ZXN0cyB3aGV0aGVyIFAgY29udGFpbnMgYSBkaXJlY3Rvcnkgc3BlY2lmaWNhdGlvbi4KLSsgKi8KLSsjaWYgZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18gfHwgZGVmaW5lZCBfX0VNWF9fIHx8IGRlZmluZWQgX19ESkdQUF9fCi0rICAvKiBXaW4zMiwgT1MvMiwgRE9TICovCi0rIyBkZWZpbmUgSVNTTEFTSChDKSAoKEMpID09ICcvJyB8fCAoQykgPT0gJ1xcJykKLSsjIGRlZmluZSBIQVNfREVWSUNFKFApIFwKLSsgICAgKCgoKFApWzBdID49ICdBJyAmJiAoUClbMF0gPD0gJ1onKSB8fCAoKFApWzBdID49ICdhJyAmJiAoUClbMF0gPD0gJ3onKSkgXAotKyAgICAgJiYgKFApWzFdID09ICc6JykKLSsjIGRlZmluZSBJU19QQVRIX1dJVEhfRElSKFApIFwKLSsgICAgKHN0cmNociAoUCwgJy8nKSAhPSBOVUxMIHx8IHN0cmNociAoUCwgJ1xcJykgIT0gTlVMTCB8fCBIQVNfREVWSUNFIChQKSkKLSsjIGRlZmluZSBGSUxFU1lTVEVNX1BSRUZJWF9MRU4oUCkgKEhBU19ERVZJQ0UgKFApID8gMiA6IDApCi0rI2Vsc2UKLSsgIC8qIFVuaXggKi8KLSsjIGRlZmluZSBJU1NMQVNIKEMpICgoQykgPT0gJy8nKQotKyMgZGVmaW5lIElTX1BBVEhfV0lUSF9ESVIoUCkgKHN0cmNociAoUCwgJy8nKSAhPSBOVUxMKQotKyMgZGVmaW5lIEZJTEVTWVNURU1fUFJFRklYX0xFTihQKSAwCi0rI2VuZGlmCi0rCi0rLyogT3JpZ2luYWwgaW5zdGFsbGF0aW9uIHByZWZpeC4gICovCi0rc3RhdGljIGNoYXIgKm9yaWdfcHJlZml4OwotK3N0YXRpYyBzaXplX3Qgb3JpZ19wcmVmaXhfbGVuOwotKy8qIEN1cnJlbnQgaW5zdGFsbGF0aW9uIHByZWZpeC4gICovCi0rc3RhdGljIGNoYXIgKmN1cnJfcHJlZml4OwotK3N0YXRpYyBzaXplX3QgY3Vycl9wcmVmaXhfbGVuOwotKy8qIFRoZXNlIHByZWZpeGVzIGRvIG5vdCBlbmQgaW4gYSBzbGFzaC4gIEFueXRoaW5nIHRoYXQgd2lsbCBiZSBjb25jYXRlbmF0ZWQKLSsgICB0byB0aGVtIG11c3Qgc3RhcnQgd2l0aCBhIHNsYXNoLiAgKi8KLSsKLSsvKiBTZXRzIHRoZSBvcmlnaW5hbCBhbmQgdGhlIGN1cnJlbnQgaW5zdGFsbGF0aW9uIHByZWZpeCBvZiB0aGlzIG1vZHVsZS4KLSsgICBSZWxvY2F0aW9uIHNpbXBseSByZXBsYWNlcyBhIHBhdGhuYW1lIHN0YXJ0aW5nIHdpdGggdGhlIG9yaWdpbmFsIHByZWZpeAotKyAgIGJ5IHRoZSBjb3JyZXNwb25kaW5nIHBhdGhuYW1lIHdpdGggdGhlIGN1cnJlbnQgcHJlZml4IGluc3RlYWQuICBCb3RoCi0rICAgcHJlZml4ZXMgc2hvdWxkIGJlIGRpcmVjdG9yeSBuYW1lcyB3aXRob3V0IHRyYWlsaW5nIHNsYXNoIChpLmUuIHVzZSAiIgotKyAgIGluc3RlYWQgb2YgIi8iKS4gICovCi0rc3RhdGljIHZvaWQKLStzZXRfdGhpc19yZWxvY2F0aW9uX3ByZWZpeCAoY29uc3QgY2hhciAqb3JpZ19wcmVmaXhfYXJnLAotKwkJCSAgICBjb25zdCBjaGFyICpjdXJyX3ByZWZpeF9hcmcpCi0rewotKyAgaWYgKG9yaWdfcHJlZml4X2FyZyAhPSBOVUxMICYmIGN1cnJfcHJlZml4X2FyZyAhPSBOVUxMCi0rICAgICAgLyogT3B0aW1pemF0aW9uOiBpZiBvcmlnX3ByZWZpeCBhbmQgY3Vycl9wcmVmaXggYXJlIGVxdWFsLCB0aGUKLSsJIHJlbG9jYXRpb24gaXMgYSBub3AuICAqLwotKyAgICAgICYmIHN0cmNtcCAob3JpZ19wcmVmaXhfYXJnLCBjdXJyX3ByZWZpeF9hcmcpICE9IDApCi0rICAgIHsKLSsgICAgICAvKiBEdXBsaWNhdGUgdGhlIGFyZ3VtZW50IHN0cmluZ3MuICAqLwotKyAgICAgIGNoYXIgKm1lbW9yeTsKLSsKLSsgICAgICBvcmlnX3ByZWZpeF9sZW4gPSBzdHJsZW4gKG9yaWdfcHJlZml4X2FyZyk7Ci0rICAgICAgY3Vycl9wcmVmaXhfbGVuID0gc3RybGVuIChjdXJyX3ByZWZpeF9hcmcpOwotKyAgICAgIG1lbW9yeSA9IChjaGFyICopIHhtYWxsb2MgKG9yaWdfcHJlZml4X2xlbiArIDEgKyBjdXJyX3ByZWZpeF9sZW4gKyAxKTsKLSsjaWZkZWYgTk9fWE1BTExPQwotKyAgICAgIGlmIChtZW1vcnkgIT0gTlVMTCkKLSsjZW5kaWYKLSsJewotKwkgIG1lbWNweSAobWVtb3J5LCBvcmlnX3ByZWZpeF9hcmcsIG9yaWdfcHJlZml4X2xlbiArIDEpOwotKwkgIG9yaWdfcHJlZml4ID0gbWVtb3J5OwotKwkgIG1lbW9yeSArPSBvcmlnX3ByZWZpeF9sZW4gKyAxOwotKwkgIG1lbWNweSAobWVtb3J5LCBjdXJyX3ByZWZpeF9hcmcsIGN1cnJfcHJlZml4X2xlbiArIDEpOwotKwkgIGN1cnJfcHJlZml4ID0gbWVtb3J5OwotKwkgIHJldHVybjsKLSsJfQotKyAgICB9Ci0rICBvcmlnX3ByZWZpeCA9IE5VTEw7Ci0rICBjdXJyX3ByZWZpeCA9IE5VTEw7Ci0rICAvKiBEb24ndCB3b3JyeSBhYm91dCB3YXN0ZWQgbWVtb3J5IGhlcmUgLSB0aGlzIGZ1bmN0aW9uIGlzIHVzdWFsbHkgb25seQotKyAgICAgY2FsbGVkIG9uY2UuICAqLwotK30KLSsKLSsvKiBTZXRzIHRoZSBvcmlnaW5hbCBhbmQgdGhlIGN1cnJlbnQgaW5zdGFsbGF0aW9uIHByZWZpeCBvZiB0aGUgcGFja2FnZS4KLSsgICBSZWxvY2F0aW9uIHNpbXBseSByZXBsYWNlcyBhIHBhdGhuYW1lIHN0YXJ0aW5nIHdpdGggdGhlIG9yaWdpbmFsIHByZWZpeAotKyAgIGJ5IHRoZSBjb3JyZXNwb25kaW5nIHBhdGhuYW1lIHdpdGggdGhlIGN1cnJlbnQgcHJlZml4IGluc3RlYWQuICBCb3RoCi0rICAgcHJlZml4ZXMgc2hvdWxkIGJlIGRpcmVjdG9yeSBuYW1lcyB3aXRob3V0IHRyYWlsaW5nIHNsYXNoIChpLmUuIHVzZSAiIgotKyAgIGluc3RlYWQgb2YgIi8iKS4gICovCi0rdm9pZAotK3NldF9yZWxvY2F0aW9uX3ByZWZpeCAoY29uc3QgY2hhciAqb3JpZ19wcmVmaXhfYXJnLCBjb25zdCBjaGFyICpjdXJyX3ByZWZpeF9hcmcpCi0rewotKyAgc2V0X3RoaXNfcmVsb2NhdGlvbl9wcmVmaXggKG9yaWdfcHJlZml4X2FyZywgY3Vycl9wcmVmaXhfYXJnKTsKLSsKLSsgIC8qIE5vdyBub3RpZnkgYWxsIGRlcGVuZGVudCBsaWJyYXJpZXMuICAqLwotKyNpZiBERVBFTkRTX09OX0xJQkNIQVJTRVQKLSsgIGxpYmNoYXJzZXRfc2V0X3JlbG9jYXRpb25fcHJlZml4IChvcmlnX3ByZWZpeF9hcmcsIGN1cnJfcHJlZml4X2FyZyk7Ci0rI2VuZGlmCi0rI2lmIERFUEVORFNfT05fTElCSUNPTlYgJiYgSEFWRV9JQ09OViAmJiBfTElCSUNPTlZfVkVSU0lPTiA+PSAweDAxMDkKLSsgIGxpYmljb252X3NldF9yZWxvY2F0aW9uX3ByZWZpeCAob3JpZ19wcmVmaXhfYXJnLCBjdXJyX3ByZWZpeF9hcmcpOwotKyNlbmRpZgotKyNpZiBERVBFTkRTX09OX0xJQklOVEwgJiYgRU5BQkxFX05MUyAmJiBkZWZpbmVkIGxpYmludGxfc2V0X3JlbG9jYXRpb25fcHJlZml4Ci0rICBsaWJpbnRsX3NldF9yZWxvY2F0aW9uX3ByZWZpeCAob3JpZ19wcmVmaXhfYXJnLCBjdXJyX3ByZWZpeF9hcmcpOwotKyNlbmRpZgotK30KLSsKLSsjaWYgIWRlZmluZWQgSU5fTElCUkFSWSB8fCAoZGVmaW5lZCBQSUMgJiYgZGVmaW5lZCBJTlNUQUxMRElSKQotKwotKy8qIENvbnZlbmllbmNlIGZ1bmN0aW9uOgotKyAgIENvbXB1dGVzIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbiBwcmVmaXgsIGJhc2VkIG9uIHRoZSBvcmlnaW5hbAotKyAgIGluc3RhbGxhdGlvbiBwcmVmaXgsIHRoZSBvcmlnaW5hbCBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IG9mIGEgcGFydGljdWxhcgotKyAgIGZpbGUsIGFuZCB0aGUgY3VycmVudCBwYXRobmFtZSBvZiB0aGlzIGZpbGUuICBSZXR1cm5zIE5VTEwgdXBvbiBmYWlsdXJlLiAgKi8KLSsjaWZkZWYgSU5fTElCUkFSWQotKyNkZWZpbmUgY29tcHV0ZV9jdXJyX3ByZWZpeCBsb2NhbF9jb21wdXRlX2N1cnJfcHJlZml4Ci0rc3RhdGljCi0rI2VuZGlmCi0rY29uc3QgY2hhciAqCi0rY29tcHV0ZV9jdXJyX3ByZWZpeCAoY29uc3QgY2hhciAqb3JpZ19pbnN0YWxscHJlZml4LAotKwkJICAgICBjb25zdCBjaGFyICpvcmlnX2luc3RhbGxkaXIsCi0rCQkgICAgIGNvbnN0IGNoYXIgKmN1cnJfcGF0aG5hbWUpCi0rewotKyAgY29uc3QgY2hhciAqY3Vycl9pbnN0YWxsZGlyOwotKyAgY29uc3QgY2hhciAqcmVsX2luc3RhbGxkaXI7Ci0rCi0rICBpZiAoY3Vycl9wYXRobmFtZSA9PSBOVUxMKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIC8qIERldGVybWluZSB0aGUgcmVsYXRpdmUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSwgcmVsYXRpdmUgdG8gdGhlIHByZWZpeC4KLSsgICAgIFRoaXMgaXMgc2ltcGx5IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gb3JpZ19pbnN0YWxscHJlZml4IGFuZAotKyAgICAgb3JpZ19pbnN0YWxsZGlyLiAgKi8KLSsgIGlmIChzdHJuY21wIChvcmlnX2luc3RhbGxwcmVmaXgsIG9yaWdfaW5zdGFsbGRpciwgc3RybGVuIChvcmlnX2luc3RhbGxwcmVmaXgpKQotKyAgICAgICE9IDApCi0rICAgIC8qIFNob3VsZG4ndCBoYXBwZW4gLSBub3RoaW5nIHNob3VsZCBiZSBpbnN0YWxsZWQgb3V0c2lkZSAkKHByZWZpeCkuICAqLwotKyAgICByZXR1cm4gTlVMTDsKLSsgIHJlbF9pbnN0YWxsZGlyID0gb3JpZ19pbnN0YWxsZGlyICsgc3RybGVuIChvcmlnX2luc3RhbGxwcmVmaXgpOwotKwotKyAgLyogRGV0ZXJtaW5lIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuICAqLwotKyAgewotKyAgICBjb25zdCBjaGFyICpwX2Jhc2UgPSBjdXJyX3BhdGhuYW1lICsgRklMRVNZU1RFTV9QUkVGSVhfTEVOIChjdXJyX3BhdGhuYW1lKTsKLSsgICAgY29uc3QgY2hhciAqcCA9IGN1cnJfcGF0aG5hbWUgKyBzdHJsZW4gKGN1cnJfcGF0aG5hbWUpOwotKyAgICBjaGFyICpxOwotKwotKyAgICB3aGlsZSAocCA+IHBfYmFzZSkKLSsgICAgICB7Ci0rCXAtLTsKLSsJaWYgKElTU0xBU0ggKCpwKSkKLSsJICBicmVhazsKLSsgICAgICB9Ci0rCi0rICAgIHEgPSAoY2hhciAqKSB4bWFsbG9jIChwIC0gY3Vycl9wYXRobmFtZSArIDEpOwotKyNpZmRlZiBOT19YTUFMTE9DCi0rICAgIGlmIChxID09IE5VTEwpCi0rICAgICAgcmV0dXJuIE5VTEw7Ci0rI2VuZGlmCi0rICAgIG1lbWNweSAocSwgY3Vycl9wYXRobmFtZSwgcCAtIGN1cnJfcGF0aG5hbWUpOwotKyAgICBxW3AgLSBjdXJyX3BhdGhuYW1lXSA9ICdcMCc7Ci0rICAgIGN1cnJfaW5zdGFsbGRpciA9IHE7Ci0rICB9Ci0rCi0rICAvKiBDb21wdXRlIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbiBwcmVmaXggYnkgcmVtb3ZpbmcgdGhlIHRyYWlsaW5nCi0rICAgICByZWxfaW5zdGFsbGRpciBmcm9tIGl0LiAgKi8KLSsgIHsKLSsgICAgY29uc3QgY2hhciAqcnAgPSByZWxfaW5zdGFsbGRpciArIHN0cmxlbiAocmVsX2luc3RhbGxkaXIpOwotKyAgICBjb25zdCBjaGFyICpjcCA9IGN1cnJfaW5zdGFsbGRpciArIHN0cmxlbiAoY3Vycl9pbnN0YWxsZGlyKTsKLSsgICAgY29uc3QgY2hhciAqY3BfYmFzZSA9Ci0rICAgICAgY3Vycl9pbnN0YWxsZGlyICsgRklMRVNZU1RFTV9QUkVGSVhfTEVOIChjdXJyX2luc3RhbGxkaXIpOwotKwotKyAgICB3aGlsZSAocnAgPiByZWxfaW5zdGFsbGRpciAmJiBjcCA+IGNwX2Jhc2UpCi0rICAgICAgewotKwlib29sIHNhbWUgPSBmYWxzZTsKLSsJY29uc3QgY2hhciAqcnBpID0gcnA7Ci0rCWNvbnN0IGNoYXIgKmNwaSA9IGNwOwotKwotKwl3aGlsZSAocnBpID4gcmVsX2luc3RhbGxkaXIgJiYgY3BpID4gY3BfYmFzZSkKLSsJICB7Ci0rCSAgICBycGktLTsKLSsJICAgIGNwaS0tOwotKwkgICAgaWYgKElTU0xBU0ggKCpycGkpIHx8IElTU0xBU0ggKCpjcGkpKQotKwkgICAgICB7Ci0rCQlpZiAoSVNTTEFTSCAoKnJwaSkgJiYgSVNTTEFTSCAoKmNwaSkpCi0rCQkgIHNhbWUgPSB0cnVlOwotKwkJYnJlYWs7Ci0rCSAgICAgIH0KLSsjaWYgZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18gfHwgZGVmaW5lZCBfX0VNWF9fIHx8IGRlZmluZWQgX19ESkdQUF9fCi0rCSAgICAvKiBXaW4zMiwgT1MvMiwgRE9TIC0gY2FzZSBpbnNpZ25pZmljYW50IGZpbGVzeXN0ZW0gKi8KLSsJICAgIGlmICgoKnJwaSA+PSAnYScgJiYgKnJwaSA8PSAneicgPyAqcnBpIC0gJ2EnICsgJ0EnIDogKnJwaSkKLSsJCSE9ICgqY3BpID49ICdhJyAmJiAqY3BpIDw9ICd6JyA/ICpjcGkgLSAnYScgKyAnQScgOiAqY3BpKSkKLSsJICAgICAgYnJlYWs7Ci0rI2Vsc2UKLSsJICAgIGlmICgqcnBpICE9ICpjcGkpCi0rCSAgICAgIGJyZWFrOwotKyNlbmRpZgotKwkgIH0KLSsJaWYgKCFzYW1lKQotKwkgIGJyZWFrOwotKwkvKiBUaGUgbGFzdCBwYXRobmFtZSBjb21wb25lbnQgd2FzIHRoZSBzYW1lLiAgb3BpIGFuZCBjcGkgbm93IHBvaW50Ci0rCSAgIHRvIHRoZSBzbGFzaCBiZWZvcmUgaXQuICAqLwotKwlycCA9IHJwaTsKLSsJY3AgPSBjcGk7Ci0rICAgICAgfQotKwotKyAgICBpZiAocnAgPiByZWxfaW5zdGFsbGRpcikKLSsgICAgICAvKiBVbmV4cGVjdGVkOiBUaGUgY3Vycl9pbnN0YWxsZGlyIGRvZXMgbm90IGVuZCB3aXRoIHJlbF9pbnN0YWxsZGlyLiAgKi8KLSsgICAgICByZXR1cm4gTlVMTDsKLSsKLSsgICAgewotKyAgICAgIHNpemVfdCBjdXJyX3ByZWZpeF9sZW4gPSBjcCAtIGN1cnJfaW5zdGFsbGRpcjsKLSsgICAgICBjaGFyICpjdXJyX3ByZWZpeDsKLSsKLSsgICAgICBjdXJyX3ByZWZpeCA9IChjaGFyICopIHhtYWxsb2MgKGN1cnJfcHJlZml4X2xlbiArIDEpOwotKyNpZmRlZiBOT19YTUFMTE9DCi0rICAgICAgaWYgKGN1cnJfcHJlZml4ID09IE5VTEwpCi0rCXJldHVybiBOVUxMOwotKyNlbmRpZgotKyAgICAgIG1lbWNweSAoY3Vycl9wcmVmaXgsIGN1cnJfaW5zdGFsbGRpciwgY3Vycl9wcmVmaXhfbGVuKTsKLSsgICAgICBjdXJyX3ByZWZpeFtjdXJyX3ByZWZpeF9sZW5dID0gJ1wwJzsKLSsKLSsgICAgICByZXR1cm4gY3Vycl9wcmVmaXg7Ci0rICAgIH0KLSsgIH0KLSt9Ci0rCi0rI2VuZGlmIC8qICFJTl9MSUJSQVJZIHx8IFBJQyAqLwotKwotKyNpZiBkZWZpbmVkIFBJQyAmJiBkZWZpbmVkIElOU1RBTExESVIKLSsKLSsvKiBGdWxsIHBhdGhuYW1lIG9mIHNoYXJlZCBsaWJyYXJ5LCBvciBOVUxMLiAgKi8KLStzdGF0aWMgY2hhciAqc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWU7Ci0rCi0rI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fCi0rCi0rLyogRGV0ZXJtaW5lIHRoZSBmdWxsIHBhdGhuYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeSB3aGVuIGl0IGlzIGxvYWRlZC4gICovCi0rCi0rQk9PTCBXSU5BUEkKLStEbGxNYWluIChISU5TVEFOQ0UgbW9kdWxlX2hhbmRsZSwgRFdPUkQgZXZlbnQsIExQVk9JRCByZXNlcnZlZCkKLSt7Ci0rICAodm9pZCkgcmVzZXJ2ZWQ7Ci0rCi0rICBpZiAoZXZlbnQgPT0gRExMX1BST0NFU1NfQVRUQUNIKQotKyAgICB7Ci0rICAgICAgLyogVGhlIERMTCBpcyBiZWluZyBsb2FkZWQgaW50byBhbiBhcHBsaWNhdGlvbidzIGFkZHJlc3MgcmFuZ2UuICAqLwotKyAgICAgIHN0YXRpYyBjaGFyIGxvY2F0aW9uW01BWF9QQVRIXTsKLSsKLSsgICAgICBpZiAoIUdldE1vZHVsZUZpbGVOYW1lIChtb2R1bGVfaGFuZGxlLCBsb2NhdGlvbiwgc2l6ZW9mIChsb2NhdGlvbikpKQotKwkvKiBTaG91bGRuJ3QgaGFwcGVuLiAgKi8KLSsJcmV0dXJuIEZBTFNFOwotKwotKyAgICAgIGlmICghSVNfUEFUSF9XSVRIX0RJUiAobG9jYXRpb24pKQotKwkvKiBTaG91bGRuJ3QgaGFwcGVuLiAgKi8KLSsJcmV0dXJuIEZBTFNFOwotKwotKyAgICAgIHNoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lID0gc3RyZHVwIChsb2NhdGlvbik7Ci0rICAgIH0KLSsKLSsgIHJldHVybiBUUlVFOwotK30KLSsKLSsjZWxzZSAvKiBVbml4ICovCi0rCi0rc3RhdGljIHZvaWQKLStmaW5kX3NoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lICgpCi0rewotKyNpZiBkZWZpbmVkIF9fbGludXhfXyAmJiBfX0dMSUJDX18gPj0gMgotKyAgLyogTGludXggaGFzIC9wcm9jL3NlbGYvbWFwcy4gZ2xpYmMgMiBoYXMgdGhlIGdldGxpbmUoKSBmdW5jdGlvbi4gICovCi0rICBGSUxFICpmcDsKLSsKLSsgIC8qIE9wZW4gdGhlIGN1cnJlbnQgcHJvY2VzcycgbWFwcyBmaWxlLiAgSXQgZGVzY3JpYmVzIG9uZSBWTUEgcGVyIGxpbmUuICAqLwotKyAgZnAgPSBmb3BlbiAoIi9wcm9jL3NlbGYvbWFwcyIsICJyIik7Ci0rICBpZiAoZnApCi0rICAgIHsKLSsgICAgICB1bnNpZ25lZCBsb25nIGFkZHJlc3MgPSAodW5zaWduZWQgbG9uZykgJmZpbmRfc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWU7Ci0rICAgICAgZm9yICg7OykKLSsJewotKwkgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIGVuZDsKLSsJICBpbnQgYzsKLSsKLSsJICBpZiAoZnNjYW5mIChmcCwgIiVseC0lbHgiLCAmc3RhcnQsICZlbmQpICE9IDIpCi0rCSAgICBicmVhazsKLSsJICBpZiAoYWRkcmVzcyA+PSBzdGFydCAmJiBhZGRyZXNzIDw9IGVuZCAtIDEpCi0rCSAgICB7Ci0rCSAgICAgIC8qIEZvdW5kIGl0LiAgTm93IHNlZSBpZiB0aGlzIGxpbmUgY29udGFpbnMgYSBmaWxlbmFtZS4gICovCi0rCSAgICAgIHdoaWxlIChjID0gZ2V0YyAoZnApLCBjICE9IEVPRiAmJiBjICE9ICdcbicgJiYgYyAhPSAnLycpCi0rCQljb250aW51ZTsKLSsJICAgICAgaWYgKGMgPT0gJy8nKQotKwkJewotKwkJICBzaXplX3Qgc2l6ZTsKLSsJCSAgaW50IGxlbjsKLSsKLSsJCSAgdW5nZXRjIChjLCBmcCk7Ci0rCQkgIHNoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lID0gTlVMTDsgc2l6ZSA9IDA7Ci0rCQkgIGxlbiA9IGdldGxpbmUgKCZzaGFyZWRfbGlicmFyeV9mdWxsbmFtZSwgJnNpemUsIGZwKTsKLSsJCSAgaWYgKGxlbiA+PSAwKQotKwkJICAgIHsKLSsJCSAgICAgIC8qIFN1Y2Nlc3M6IGZpbGxlZCBzaGFyZWRfbGlicmFyeV9mdWxsbmFtZS4gICovCi0rCQkgICAgICBpZiAobGVuID4gMCAmJiBzaGFyZWRfbGlicmFyeV9mdWxsbmFtZVtsZW4gLSAxXSA9PSAnXG4nKQotKwkJCXNoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lW2xlbiAtIDFdID0gJ1wwJzsKLSsJCSAgICB9Ci0rCQl9Ci0rCSAgICAgIGJyZWFrOwotKwkgICAgfQotKwkgIHdoaWxlIChjID0gZ2V0YyAoZnApLCBjICE9IEVPRiAmJiBjICE9ICdcbicpCi0rCSAgICBjb250aW51ZTsKLSsJfQotKyAgICAgIGZjbG9zZSAoZnApOwotKyAgICB9Ci0rI2VuZGlmCi0rfQotKwotKyNlbmRpZiAvKiBXSU4zMiAvIFVuaXggKi8KLSsKLSsvKiBSZXR1cm4gdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGN1cnJlbnQgc2hhcmVkIGxpYnJhcnkuCi0rICAgUmV0dXJuIE5VTEwgaWYgdW5rbm93bi4KLSsgICBHdWFyYW50ZWVkIHRvIHdvcmsgb25seSBvbiBMaW51eCBhbmQgV29lMzIuICAqLwotK3N0YXRpYyBjaGFyICoKLStnZXRfc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWUgKCkKLSt7Ci0rI2lmICEoZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18pCi0rICBzdGF0aWMgYm9vbCB0cmllZF9maW5kX3NoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lOwotKyAgaWYgKCF0cmllZF9maW5kX3NoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lKQotKyAgICB7Ci0rICAgICAgZmluZF9zaGFyZWRfbGlicmFyeV9mdWxsbmFtZSAoKTsKLSsgICAgICB0cmllZF9maW5kX3NoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lID0gdHJ1ZTsKLSsgICAgfQotKyNlbmRpZgotKyAgcmV0dXJuIHNoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lOwotK30KLSsKLSsjZW5kaWYgLyogUElDICovCi0rCi0rLyogUmV0dXJucyB0aGUgcGF0aG5hbWUsIHJlbG9jYXRlZCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgaW5zdGFsbGF0aW9uCi0rICAgZGlyZWN0b3J5LiAgKi8KLStjb25zdCBjaGFyICoKLStyZWxvY2F0ZSAoY29uc3QgY2hhciAqcGF0aG5hbWUpCi0rewotKyNpZiBkZWZpbmVkIFBJQyAmJiBkZWZpbmVkIElOU1RBTExESVIKLSsgIHN0YXRpYyBpbnQgaW5pdGlhbGl6ZWQ7Ci0rCi0rICAvKiBJbml0aWFsaXphdGlvbiBjb2RlIGZvciBhIHNoYXJlZCBsaWJyYXJ5LiAgKi8KLSsgIGlmICghaW5pdGlhbGl6ZWQpCi0rICAgIHsKLSsgICAgICAvKiBBdCB0aGlzIHBvaW50LCBvcmlnX3ByZWZpeCBhbmQgY3Vycl9wcmVmaXggbGlrZWx5IGhhdmUgYWxyZWFkeSBiZWVuCi0rCSBzZXQgdGhyb3VnaCB0aGUgbWFpbiBwcm9ncmFtJ3Mgc2V0X3Byb2dyYW1fbmFtZV9hbmRfaW5zdGFsbGRpcgotKwkgZnVuY3Rpb24uICBUaGlzIGlzIHN1ZmZpY2llbnQgaW4gdGhlIGNhc2UgdGhhdCB0aGUgbGlicmFyeSBoYXMKLSsJIGluaXRpYWxseSBiZWVuIGluc3RhbGxlZCBpbiB0aGUgc2FtZSBvcmlnX3ByZWZpeC4gIEJ1dCB3ZSBjYW4gZG8KLSsJIGJldHRlciwgdG8gYWxzbyBjb3ZlciB0aGUgY2FzZXMgdGhhdCAxLiBpdCBoYXMgYmVlbiBpbnN0YWxsZWQKLSsJIGluIGEgZGlmZmVyZW50IHByZWZpeCBiZWZvcmUgYmVpbmcgbW92ZWQgdG8gb3JpZ19wcmVmaXggYW5kIChsYXRlcikKLSsJIHRvIGN1cnJfcHJlZml4LCAyLiB1bmxpa2UgdGhlIHByb2dyYW0sIGl0IGhhcyBub3QgbW92ZWQgYXdheSBmcm9tCi0rCSBvcmlnX3ByZWZpeC4gICovCi0rICAgICAgY29uc3QgY2hhciAqb3JpZ19pbnN0YWxscHJlZml4ID0gSU5TVEFMTFBSRUZJWDsKLSsgICAgICBjb25zdCBjaGFyICpvcmlnX2luc3RhbGxkaXIgPSBJTlNUQUxMRElSOwotKyAgICAgIGNvbnN0IGNoYXIgKmN1cnJfcHJlZml4X2JldHRlcjsKLSsKLSsgICAgICBjdXJyX3ByZWZpeF9iZXR0ZXIgPQotKwljb21wdXRlX2N1cnJfcHJlZml4IChvcmlnX2luc3RhbGxwcmVmaXgsIG9yaWdfaW5zdGFsbGRpciwKLSsJCQkgICAgIGdldF9zaGFyZWRfbGlicmFyeV9mdWxsbmFtZSAoKSk7Ci0rICAgICAgaWYgKGN1cnJfcHJlZml4X2JldHRlciA9PSBOVUxMKQotKwljdXJyX3ByZWZpeF9iZXR0ZXIgPSBjdXJyX3ByZWZpeDsKLSsKLSsgICAgICBzZXRfcmVsb2NhdGlvbl9wcmVmaXggKG9yaWdfaW5zdGFsbHByZWZpeCwgY3Vycl9wcmVmaXhfYmV0dGVyKTsKLSsKLSsgICAgICBpbml0aWFsaXplZCA9IDE7Ci0rICAgIH0KLSsjZW5kaWYKLSsKLSsgIC8qIE5vdGU6IEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gcGVyZm9ybSBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24gaGVyZSwKLSsgICAgIGV2ZW4gZm9yIERPUy1saWtlIGZpbGVzeXN0ZW1zLCBiZWNhdXNlIHRoZSBwYXRobmFtZSBhcmd1bWVudCB3YXMKLSsgICAgIHR5cGljYWxseSBjcmVhdGVkIGZyb20gdGhlIHNhbWUgTWFrZWZpbGUgdmFyaWFibGUgYXMgb3JpZ19wcmVmaXggY2FtZQotKyAgICAgZnJvbS4gICovCi0rICBpZiAob3JpZ19wcmVmaXggIT0gTlVMTCAmJiBjdXJyX3ByZWZpeCAhPSBOVUxMCi0rICAgICAgJiYgc3RybmNtcCAocGF0aG5hbWUsIG9yaWdfcHJlZml4LCBvcmlnX3ByZWZpeF9sZW4pID09IDApCi0rICAgIHsKLSsgICAgICBpZiAocGF0aG5hbWVbb3JpZ19wcmVmaXhfbGVuXSA9PSAnXDAnKQotKwkvKiBwYXRobmFtZSBlcXVhbHMgb3JpZ19wcmVmaXguICAqLwotKwlyZXR1cm4gY3Vycl9wcmVmaXg7Ci0rICAgICAgaWYgKElTU0xBU0ggKHBhdGhuYW1lW29yaWdfcHJlZml4X2xlbl0pKQotKwl7Ci0rCSAgLyogcGF0aG5hbWUgc3RhcnRzIHdpdGggb3JpZ19wcmVmaXguICAqLwotKwkgIGNvbnN0IGNoYXIgKnBhdGhuYW1lX3RhaWwgPSAmcGF0aG5hbWVbb3JpZ19wcmVmaXhfbGVuXTsKLSsJICBjaGFyICpyZXN1bHQgPQotKwkgICAgKGNoYXIgKikgeG1hbGxvYyAoY3Vycl9wcmVmaXhfbGVuICsgc3RybGVuIChwYXRobmFtZV90YWlsKSArIDEpOwotKwotKyNpZmRlZiBOT19YTUFMTE9DCi0rCSAgaWYgKHJlc3VsdCAhPSBOVUxMKQotKyNlbmRpZgotKwkgICAgewotKwkgICAgICBtZW1jcHkgKHJlc3VsdCwgY3Vycl9wcmVmaXgsIGN1cnJfcHJlZml4X2xlbik7Ci0rCSAgICAgIHN0cmNweSAocmVzdWx0ICsgY3Vycl9wcmVmaXhfbGVuLCBwYXRobmFtZV90YWlsKTsKLSsJICAgICAgcmV0dXJuIHJlc3VsdDsKLSsJICAgIH0KLSsJfQotKyAgICB9Ci0rICAvKiBOb3RoaW5nIHRvIHJlbG9jYXRlLiAgKi8KLSsgIHJldHVybiBwYXRobmFtZTsKLSt9Ci0rCi0rI2VuZGlmCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvcmVsb2NhdGFibGUuaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9yZWxvY2F0YWJsZS5oCTIwMDQtMDktMTIgMTQ6NDA6MzQuNjUxNzAzMDk2IC0wNDAwCi1AQCAtMCwwICsxLDc3IEBACi0rLyogUHJvdmlkZSByZWxvY2F0YWJsZSBwYWNrYWdlcy4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgV3JpdHRlbiBieSBCcnVubyBIYWlibGUgPGJydW5vQGNsaXNwLm9yZz4sIDIwMDMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZm5kZWYgX1JFTE9DQVRBQkxFX0gKLSsjZGVmaW5lIF9SRUxPQ0FUQUJMRV9ICi0rCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0rCi0rCi0rLyogVGhpcyBjYW4gYmUgZW5hYmxlZCB0aHJvdWdoIHRoZSBjb25maWd1cmUgLS1lbmFibGUtcmVsb2NhdGFibGUgb3B0aW9uLiAgKi8KLSsjaWYgRU5BQkxFX1JFTE9DQVRBQkxFCi0rCi0rLyogV2hlbiBidWlsZGluZyBhIERMTCwgd2UgbXVzdCBleHBvcnQgc29tZSBmdW5jdGlvbnMuICBOb3RlIHRoYXQgYmVjYXVzZQotKyAgIHRoaXMgaXMgYSBwcml2YXRlIC5oIGZpbGUsIHdlIGRvbid0IG5lZWQgdG8gdXNlIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotKyAgIGluIGFueSBjYXNlLiAgKi8KLSsjaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBCVUlMRElOR19ETEwKLSsjIGRlZmluZSBSRUxPQ0FUQUJMRV9ETExfRVhQT1JURUQgX19kZWNsc3BlYyhkbGxleHBvcnQpCi0rI2Vsc2UKLSsjIGRlZmluZSBSRUxPQ0FUQUJMRV9ETExfRVhQT1JURUQKLSsjZW5kaWYKLSsKLSsvKiBTZXRzIHRoZSBvcmlnaW5hbCBhbmQgdGhlIGN1cnJlbnQgaW5zdGFsbGF0aW9uIHByZWZpeCBvZiB0aGUgcGFja2FnZS4KLSsgICBSZWxvY2F0aW9uIHNpbXBseSByZXBsYWNlcyBhIHBhdGhuYW1lIHN0YXJ0aW5nIHdpdGggdGhlIG9yaWdpbmFsIHByZWZpeAotKyAgIGJ5IHRoZSBjb3JyZXNwb25kaW5nIHBhdGhuYW1lIHdpdGggdGhlIGN1cnJlbnQgcHJlZml4IGluc3RlYWQuICBCb3RoCi0rICAgcHJlZml4ZXMgc2hvdWxkIGJlIGRpcmVjdG9yeSBuYW1lcyB3aXRob3V0IHRyYWlsaW5nIHNsYXNoIChpLmUuIHVzZSAiIgotKyAgIGluc3RlYWQgb2YgIi8iKS4gICovCi0rZXh0ZXJuIFJFTE9DQVRBQkxFX0RMTF9FWFBPUlRFRCB2b2lkCi0rICAgICAgIHNldF9yZWxvY2F0aW9uX3ByZWZpeCAoY29uc3QgY2hhciAqb3JpZ19wcmVmaXgsCi0rCQkJICAgICAgY29uc3QgY2hhciAqY3Vycl9wcmVmaXgpOwotKwotKy8qIFJldHVybnMgdGhlIHBhdGhuYW1lLCByZWxvY2F0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbgotKyAgIGRpcmVjdG9yeS4gICovCi0rZXh0ZXJuIGNvbnN0IGNoYXIgKiByZWxvY2F0ZSAoY29uc3QgY2hhciAqcGF0aG5hbWUpOwotKwotKy8qIE1lbW9yeSBtYW5hZ2VtZW50OiByZWxvY2F0ZSgpIGxlYWtzIG1lbW9yeSwgYmVjYXVzZSBpdCBoYXMgdG8gY29uc3RydWN0Ci0rICAgYSBmcmVzaCBwYXRobmFtZS4gIElmIHRoaXMgaXMgYSBwcm9ibGVtIGJlY2F1c2UgeW91ciBwcm9ncmFtIGNhbGxzCi0rICAgcmVsb2NhdGUoKSBmcmVxdWVudGx5LCB0aGluayBhYm91dCBjYWNoaW5nIHRoZSByZXN1bHQuICAqLwotKwotKy8qIENvbnZlbmllbmNlIGZ1bmN0aW9uOgotKyAgIENvbXB1dGVzIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbiBwcmVmaXgsIGJhc2VkIG9uIHRoZSBvcmlnaW5hbAotKyAgIGluc3RhbGxhdGlvbiBwcmVmaXgsIHRoZSBvcmlnaW5hbCBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IG9mIGEgcGFydGljdWxhcgotKyAgIGZpbGUsIGFuZCB0aGUgY3VycmVudCBwYXRobmFtZSBvZiB0aGlzIGZpbGUuICBSZXR1cm5zIE5VTEwgdXBvbiBmYWlsdXJlLiAgKi8KLStleHRlcm4gY29uc3QgY2hhciAqIGNvbXB1dGVfY3Vycl9wcmVmaXggKGNvbnN0IGNoYXIgKm9yaWdfaW5zdGFsbHByZWZpeCwKLSsJCQkJCSBjb25zdCBjaGFyICpvcmlnX2luc3RhbGxkaXIsCi0rCQkJCQkgY29uc3QgY2hhciAqY3Vycl9wYXRobmFtZSk7Ci0rCi0rI2Vsc2UKLSsKLSsvKiBCeSBkZWZhdWx0LCB3ZSB1c2UgdGhlIGhhcmR3aXJlZCBwYXRobmFtZXMuICAqLwotKyNkZWZpbmUgcmVsb2NhdGUocGF0aG5hbWUpIChwYXRobmFtZSkKLSsKLSsjZW5kaWYKLSsKLSsKLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rCi0rI2VuZGlmIC8qIF9SRUxPQ0FUQUJMRV9IICovCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvdGV4dGRvbWFpbi5jCTE5OTgtMDQtMjYgMDk6MjI6MzcuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3RleHRkb21haW4uYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjY1NjcwMjMzNiAtMDQwMAotQEAgLTEsNTEgKzEsNjAgQEAKLS0vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgdGV4dGRvbWFpbigzKSBmdW5jdGlvbgotLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0gICBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgdGV4dGRvbWFpbigzKSBmdW5jdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OCwgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgIGFueSBsYXRlciB2ZXJzaW9uLgotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgX0xJQkMKLS0jIGluY2x1ZGUgPHN0ZGxpYi5oPgotLSNlbmRpZgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0tI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgSEFWRV9TVFJJTkdfSCB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaWZkZWYgX0xJQkMKLSsjIGluY2x1ZGUgPGxpYmludGwuaD4KLSAjZWxzZQotLSMgaW5jbHVkZSA8c3RyaW5ncy5oPgotLSMgaWZuZGVmIG1lbWNweQotLSMgIGRlZmluZSBtZW1jcHkoRHN0LCBTcmMsIE51bSkgYmNvcHkgKFNyYywgRHN0LCBOdW0pCi0tIyBlbmRpZgotKyMgaW5jbHVkZSAibGliZ251aW50bC5oIgotICNlbmRpZgotKyNpbmNsdWRlICJnZXR0ZXh0UC5oIgotIAotICNpZmRlZiBfTElCQwotLSMgaW5jbHVkZSA8bGliaW50bC5oPgotKy8qIFdlIGhhdmUgdG8gaGFuZGxlIG11bHRpLXRocmVhZGVkIGFwcGxpY2F0aW9ucy4gICovCi0rIyBpbmNsdWRlIDxiaXRzL2xpYmMtbG9jay5oPgotICNlbHNlCi0tIyBpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCi0rLyogUHJvdmlkZSBkdW1teSBpbXBsZW1lbnRhdGlvbiBpZiB0aGlzIGlzIG91dHNpZGUgZ2xpYmMuICAqLwotKyMgZGVmaW5lIF9fbGliY19yd2xvY2tfZGVmaW5lKENMQVNTLCBOQU1FKQotKyMgZGVmaW5lIF9fbGliY19yd2xvY2tfd3Jsb2NrKE5BTUUpCi0rIyBkZWZpbmUgX19saWJjX3J3bG9ja191bmxvY2soTkFNRSkKLSsjZW5kaWYKLSsKLSsvKiBUaGUgaW50ZXJuYWwgdmFyaWFibGVzIGluIHRoZSBzdGFuZGFsb25lIGxpYmludGwuYSBtdXN0IGhhdmUgZGlmZmVyZW50Ci0rICAgbmFtZXMgdGhhbiB0aGUgaW50ZXJuYWwgdmFyaWFibGVzIGluIEdOVSBsaWJjLCBvdGhlcndpc2UgcHJvZ3JhbXMKLSsgICB1c2luZyBsaWJpbnRsLmEgY2Fubm90IGJlIGxpbmtlZCBzdGF0aWNhbGx5LiAgKi8KLSsjaWYgIWRlZmluZWQgX0xJQkMKLSsjIGRlZmluZSBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbiBsaWJpbnRsX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW4KLSsjIGRlZmluZSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbiBsaWJpbnRsX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4KLSAjZW5kaWYKLSAKLSAvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0gCi0gLyogTmFtZSBvZiB0aGUgZGVmYXVsdCB0ZXh0IGRvbWFpbi4gICovCi0tZXh0ZXJuIGNvbnN0IGNoYXIgX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW5bXTsKLStleHRlcm4gY29uc3QgY2hhciBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbltdIGF0dHJpYnV0ZV9oaWRkZW47Ci0gCi0gLyogRGVmYXVsdCB0ZXh0IGRvbWFpbiBpbiB3aGljaCBlbnRyaWVzIGZvciBnZXR0ZXh0KDMpIGFyZSB0byBiZSBmb3VuZC4gICovCi0tZXh0ZXJuIGNvbnN0IGNoYXIgKl9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluOwotK2V4dGVybiBjb25zdCBjaGFyICpfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbiBhdHRyaWJ1dGVfaGlkZGVuOwotIAotIAotIC8qIE5hbWVzIGZvciB0aGUgbGliaW50bCBmdW5jdGlvbnMgYXJlIGEgcHJvYmxlbS4gIFRoZXkgbXVzdCBub3QgY2xhc2gKLUBAIC01NCw1MCArNjMsNzYgQEAKLSAgICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLwotICNpZmRlZiBfTElCQwotICMgZGVmaW5lIFRFWFRET01BSU4gX190ZXh0ZG9tYWluCi0tIyBkZWZpbmUgc3RyZHVwKHN0cikgX19zdHJkdXAgKHN0cikKLSsjIGlmbmRlZiBzdHJkdXAKLSsjICBkZWZpbmUgc3RyZHVwKHN0cikgX19zdHJkdXAgKHN0cikKLSsjIGVuZGlmCi0gI2Vsc2UKLS0jIGRlZmluZSBURVhURE9NQUlOIHRleHRkb21haW5fXwotKyMgZGVmaW5lIFRFWFRET01BSU4gbGliaW50bF90ZXh0ZG9tYWluCi0gI2VuZGlmCi0gCi0rLyogTG9jayB2YXJpYWJsZSB0byBwcm90ZWN0IHRoZSBnbG9iYWwgZGF0YSBpbiB0aGUgZ2V0dGV4dCBpbXBsZW1lbnRhdGlvbi4gICovCi0rX19saWJjX3J3bG9ja19kZWZpbmUgKGV4dGVybiwgX25sX3N0YXRlX2xvY2sgYXR0cmlidXRlX2hpZGRlbikKLSsKLSAvKiBTZXQgdGhlIGN1cnJlbnQgZGVmYXVsdCBtZXNzYWdlIGNhdGFsb2cgdG8gRE9NQUlOTkFNRS4KLSAgICBJZiBET01BSU5OQU1FIGlzIG51bGwsIHJldHVybiB0aGUgY3VycmVudCBkZWZhdWx0LgotICAgIElmIERPTUFJTk5BTUUgaXMgIiIsIHJlc2V0IHRvIHRoZSBkZWZhdWx0IG9mICJtZXNzYWdlcyIuICAqLwotIGNoYXIgKgotLVRFWFRET01BSU4gKGRvbWFpbm5hbWUpCi0tICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOwotK1RFWFRET01BSU4gKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUpCi0gewotLSAgY2hhciAqb2xkOwotKyAgY2hhciAqbmV3X2RvbWFpbjsKLSsgIGNoYXIgKm9sZF9kb21haW47Ci0gCi0gICAvKiBBIE5VTEwgcG9pbnRlciByZXF1ZXN0cyB0aGUgY3VycmVudCBzZXR0aW5nLiAgKi8KLSAgIGlmIChkb21haW5uYW1lID09IE5VTEwpCi0gICAgIHJldHVybiAoY2hhciAqKSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbjsKLSAKLS0gIG9sZCA9IChjaGFyICopIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluOwotKyAgX19saWJjX3J3bG9ja193cmxvY2sgKF9ubF9zdGF0ZV9sb2NrKTsKLSsKLSsgIG9sZF9kb21haW4gPSAoY2hhciAqKSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbjsKLSAKLSAgIC8qIElmIGRvbWFpbiBuYW1lIGlzIHRoZSBudWxsIHN0cmluZyBzZXQgdG8gZGVmYXVsdCBkb21haW4gIm1lc3NhZ2VzIi4gICovCi0gICBpZiAoZG9tYWlubmFtZVswXSA9PSAnXDAnCi0gICAgICAgfHwgc3RyY21wIChkb21haW5uYW1lLCBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbikgPT0gMCkKLS0gICAgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gPSBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbjsKLSsgICAgewotKyAgICAgIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluID0gX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW47Ci0rICAgICAgbmV3X2RvbWFpbiA9IChjaGFyICopIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluOwotKyAgICB9Ci0rICBlbHNlIGlmIChzdHJjbXAgKGRvbWFpbm5hbWUsIG9sZF9kb21haW4pID09IDApCi0rICAgIC8qIFRoaXMgY2FuIGhhcHBlbiBhbmQgcGVvcGxlIHdpbGwgdXNlIGl0IHRvIHNpZ25hbCB0aGF0IHNvbWUKLSsgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGUgY2hhbmdlZC4gICovCi0rICAgIG5ld19kb21haW4gPSBvbGRfZG9tYWluOwotICAgZWxzZQotICAgICB7Ci0gICAgICAgLyogSWYgdGhlIGZvbGxvd2luZyBtYWxsb2MgZmFpbHMgYF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluJwotIAkgd2lsbCBiZSBOVUxMLiAgVGhpcyB2YWx1ZSB3aWxsIGJlIHJldHVybmVkIGFuZCBzbyBzaWduYWxzIHdlCi0gCSBhcmUgb3V0IG9mIGNvcmUuICAqLwotICNpZiBkZWZpbmVkIF9MSUJDIHx8IGRlZmluZWQgSEFWRV9TVFJEVVAKLS0gICAgICBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbiA9IHN0cmR1cCAoZG9tYWlubmFtZSk7Ci0rICAgICAgbmV3X2RvbWFpbiA9IHN0cmR1cCAoZG9tYWlubmFtZSk7Ci0gI2Vsc2UKLSAgICAgICBzaXplX3QgbGVuID0gc3RybGVuIChkb21haW5uYW1lKSArIDE7Ci0tICAgICAgY2hhciAqY3AgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7Ci0tICAgICAgaWYgKGNwICE9IE5VTEwpCi0tCW1lbWNweSAoY3AsIGRvbWFpbm5hbWUsIGxlbik7Ci0tICAgICAgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gPSBjcDsKLSsgICAgICBuZXdfZG9tYWluID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOwotKyAgICAgIGlmIChuZXdfZG9tYWluICE9IE5VTEwpCi0rCW1lbWNweSAobmV3X2RvbWFpbiwgZG9tYWlubmFtZSwgbGVuKTsKLSAjZW5kaWYKLSsKLSsgICAgICBpZiAobmV3X2RvbWFpbiAhPSBOVUxMKQotKwlfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbiA9IG5ld19kb21haW47Ci0gICAgIH0KLSAKLS0gIGlmIChvbGQgIT0gX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW4pCi0tICAgIGZyZWUgKG9sZCk7Ci0rICAvKiBXZSB1c2UgdGhpcyBwb3NzaWJpbGl0eSB0byBzaWduYWwgYSBjaGFuZ2Ugb2YgdGhlIGxvYWRlZCBjYXRhbG9ncwotKyAgICAgc2luY2UgdGhpcyBpcyBtb3N0IGxpa2VseSB0aGUgY2FzZSBhbmQgdGhlcmUgaXMgbm8gb3RoZXIgZWFzeSB3ZQotKyAgICAgdG8gZG8gaXQuICBEbyBpdCBvbmx5IHdoZW4gdGhlIGNhbGwgd2FzIHN1Y2Nlc3NmdWwuICAqLwotKyAgaWYgKG5ld19kb21haW4gIT0gTlVMTCkKLSsgICAgewotKyAgICAgICsrX25sX21zZ19jYXRfY250cjsKLSAKLS0gIHJldHVybiAoY2hhciAqKSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbjsKLSsgICAgICBpZiAob2xkX2RvbWFpbiAhPSBuZXdfZG9tYWluICYmIG9sZF9kb21haW4gIT0gX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW4pCi0rCWZyZWUgKG9sZF9kb21haW4pOwotKyAgICB9Ci0rCi0rICBfX2xpYmNfcndsb2NrX3VubG9jayAoX25sX3N0YXRlX2xvY2spOwotKwotKyAgcmV0dXJuIG5ld19kb21haW47Ci0gfQotIAotICNpZmRlZiBfTElCQwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3Zhc25wcmludGYuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC92YXNucHJpbnRmLmMJMjAwNC0wOS0xMiAxNDo0MDozNC42NjI3MDE0MjQgLTA0MDAKLUBAIC0wLDAgKzEsODg3IEBACi0rLyogdnNwcmludGYgd2l0aCBhdXRvbWF0aWMgbWVtb3J5IGFsbG9jYXRpb24uCi0rICAgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAyLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKy8qIFRlbGwgZ2xpYmMncyA8c3RkaW8uaD4gdG8gcHJvdmlkZSBhIHByb3RvdHlwZSBmb3Igc25wcmludGYoKS4KLSsgICBUaGlzIG11c3QgY29tZSBiZWZvcmUgPGNvbmZpZy5oPiBiZWNhdXNlIDxjb25maWcuaD4gbWF5IGluY2x1ZGUKLSsgICA8ZmVhdHVyZXMuaD4sIGFuZCBvbmNlIDxmZWF0dXJlcy5oPiBoYXMgYmVlbiBpbmNsdWRlZCwgaXQncyB0b28gbGF0ZS4gICovCi0rI2lmbmRlZiBfR05VX1NPVVJDRQotKyMgZGVmaW5lIF9HTlVfU09VUkNFICAgIDEKLSsjZW5kaWYKLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rI2lmbmRlZiBJTl9MSUJJTlRMCi0rIyBpbmNsdWRlIDxhbGxvY2EuaD4KLSsjZW5kaWYKLSsKLSsvKiBTcGVjaWZpY2F0aW9uLiAgKi8KLSsjaWYgV0lERV9DSEFSX1ZFUlNJT04KLSsjIGluY2x1ZGUgInZhc253cHJpbnRmLmgiCi0rI2Vsc2UKLSsjIGluY2x1ZGUgInZhc25wcmludGYuaCIKLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8c3RkaW8uaD4JLyogc25wcmludGYoKSwgc3ByaW50ZigpICovCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgkvKiBhYm9ydCgpLCBtYWxsb2MoKSwgcmVhbGxvYygpLCBmcmVlKCkgKi8KLSsjaW5jbHVkZSA8c3RyaW5nLmg+CS8qIG1lbWNweSgpLCBzdHJsZW4oKSAqLwotKyNpbmNsdWRlIDxlcnJuby5oPgkvKiBlcnJubyAqLwotKyNpbmNsdWRlIDxsaW1pdHMuaD4JLyogQ0hBUl9CSVQgKi8KLSsjaW5jbHVkZSA8ZmxvYXQuaD4JLyogREJMX01BWF9FWFAsIExEQkxfTUFYX0VYUCAqLwotKyNpZiBXSURFX0NIQVJfVkVSU0lPTgotKyMgaW5jbHVkZSAid3ByaW50Zi1wYXJzZS5oIgotKyNlbHNlCi0rIyBpbmNsdWRlICJwcmludGYtcGFyc2UuaCIKLSsjZW5kaWYKLSsKLSsvKiBDaGVja2VkIHNpemVfdCBjb21wdXRhdGlvbnMuICAqLwotKyNpbmNsdWRlICJ4c2l6ZS5oIgotKwotKyNpZmRlZiBIQVZFX1dDSEFSX1QKLSsjIGlmZGVmIEhBVkVfV0NTTEVOCi0rIyAgZGVmaW5lIGxvY2FsX3djc2xlbiB3Y3NsZW4KLSsjIGVsc2UKLSsgICAvKiBTb2xhcmlzIDIuNS4xIGhhcyB3Y3NsZW4oKSBpbiBhIHNlcGFyYXRlIGxpYnJhcnkgbGlidy5zby4gVG8gYXZvaWQKLSsgICAgICBhIGRlcGVuZGVuY3kgdG93YXJkcyB0aGlzIGxpYnJhcnksIGhlcmUgaXMgYSBsb2NhbCBzdWJzdGl0dXRlLgotKyAgICAgIERlZmluZSB0aGlzIHN1YnN0aXR1dGUgb25seSBvbmNlLCBldmVuIGlmIHRoaXMgZmlsZSBpcyBpbmNsdWRlZAotKyAgICAgIHR3aWNlIGluIHRoZSBzYW1lIGNvbXBpbGF0aW9uIHVuaXQuICAqLwotKyMgIGlmbmRlZiBsb2NhbF93Y3NsZW5fZGVmaW5lZAotKyMgICBkZWZpbmUgbG9jYWxfd2NzbGVuX2RlZmluZWQgMQotK3N0YXRpYyBzaXplX3QKLStsb2NhbF93Y3NsZW4gKGNvbnN0IHdjaGFyX3QgKnMpCi0rewotKyAgY29uc3Qgd2NoYXJfdCAqcHRyOwotKwotKyAgZm9yIChwdHIgPSBzOyAqcHRyICE9ICh3Y2hhcl90KSAwOyBwdHIrKykKLSsgICAgOwotKyAgcmV0dXJuIHB0ciAtIHM7Ci0rfQotKyMgIGVuZGlmCi0rIyBlbmRpZgotKyNlbmRpZgotKwotKyNpZiBXSURFX0NIQVJfVkVSU0lPTgotKyMgZGVmaW5lIFZBU05QUklOVEYgdmFzbndwcmludGYKLSsjIGRlZmluZSBDSEFSX1Qgd2NoYXJfdAotKyMgZGVmaW5lIERJUkVDVElWRSB3Y2hhcl90X2RpcmVjdGl2ZQotKyMgZGVmaW5lIERJUkVDVElWRVMgd2NoYXJfdF9kaXJlY3RpdmVzCi0rIyBkZWZpbmUgUFJJTlRGX1BBUlNFIHdwcmludGZfcGFyc2UKLSsjIGRlZmluZSBVU0VfU05QUklOVEYgMQotKyMgaWYgSEFWRV9ERUNMX19TTldQUklOVEYKLSsgICAvKiBPbiBXaW5kb3dzLCB0aGUgZnVuY3Rpb24gc3dwcmludGYoKSBoYXMgYSBkaWZmZXJlbnQgc2lnbmF0dXJlIHRoYW4KLSsgICAgICBvbiBVbml4OyB3ZSB1c2UgdGhlIF9zbndwcmludGYoKSBmdW5jdGlvbiBpbnN0ZWFkLiAgKi8KLSsjICBkZWZpbmUgU05QUklOVEYgX3Nud3ByaW50ZgotKyMgZWxzZQotKyAgIC8qIFVuaXguICAqLwotKyMgIGRlZmluZSBTTlBSSU5URiBzd3ByaW50ZgotKyMgZW5kaWYKLSsjZWxzZQotKyMgZGVmaW5lIFZBU05QUklOVEYgdmFzbnByaW50ZgotKyMgZGVmaW5lIENIQVJfVCBjaGFyCi0rIyBkZWZpbmUgRElSRUNUSVZFIGNoYXJfZGlyZWN0aXZlCi0rIyBkZWZpbmUgRElSRUNUSVZFUyBjaGFyX2RpcmVjdGl2ZXMKLSsjIGRlZmluZSBQUklOVEZfUEFSU0UgcHJpbnRmX3BhcnNlCi0rIyBkZWZpbmUgVVNFX1NOUFJJTlRGIChIQVZFX0RFQ0xfX1NOUFJJTlRGIHx8IEhBVkVfU05QUklOVEYpCi0rIyBpZiBIQVZFX0RFQ0xfX1NOUFJJTlRGCi0rICAgLyogV2luZG93cy4gICovCi0rIyAgZGVmaW5lIFNOUFJJTlRGIF9zbnByaW50ZgotKyMgZWxzZQotKyAgIC8qIFVuaXguICAqLwotKyMgIGRlZmluZSBTTlBSSU5URiBzbnByaW50ZgotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLStDSEFSX1QgKgotK1ZBU05QUklOVEYgKENIQVJfVCAqcmVzdWx0YnVmLCBzaXplX3QgKmxlbmd0aHAsIGNvbnN0IENIQVJfVCAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi0rewotKyAgRElSRUNUSVZFUyBkOwotKyAgYXJndW1lbnRzIGE7Ci0rCi0rICBpZiAoUFJJTlRGX1BBUlNFIChmb3JtYXQsICZkLCAmYSkgPCAwKQotKyAgICB7Ci0rICAgICAgZXJybm8gPSBFSU5WQUw7Ci0rICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsKLSsjZGVmaW5lIENMRUFOVVAoKSBcCi0rICBmcmVlIChkLmRpcik7CQkJCQkJCQlcCi0rICBpZiAoYS5hcmcpCQkJCQkJCQlcCi0rICAgIGZyZWUgKGEuYXJnKTsKLSsKLSsgIGlmIChwcmludGZfZmV0Y2hhcmdzIChhcmdzLCAmYSkgPCAwKQotKyAgICB7Ci0rICAgICAgQ0xFQU5VUCAoKTsKLSsgICAgICBlcnJubyA9IEVJTlZBTDsKLSsgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwotKyAgewotKyAgICBzaXplX3QgYnVmX25lZWRlZGxlbmd0aDsKLSsgICAgQ0hBUl9UICpidWY7Ci0rICAgIENIQVJfVCAqYnVmX21hbGxvY2VkOwotKyAgICBjb25zdCBDSEFSX1QgKmNwOwotKyAgICBzaXplX3QgaTsKLSsgICAgRElSRUNUSVZFICpkcDsKLSsgICAgLyogT3V0cHV0IHN0cmluZyBhY2N1bXVsYXRvci4gICovCi0rICAgIENIQVJfVCAqcmVzdWx0OwotKyAgICBzaXplX3QgYWxsb2NhdGVkOwotKyAgICBzaXplX3QgbGVuZ3RoOwotKwotKyAgICAvKiBBbGxvY2F0ZSBhIHNtYWxsIGJ1ZmZlciB0aGF0IHdpbGwgaG9sZCBhIGRpcmVjdGl2ZSBwYXNzZWQgdG8KLSsgICAgICAgc3ByaW50ZiBvciBzbnByaW50Zi4gICovCi0rICAgIGJ1Zl9uZWVkZWRsZW5ndGggPQotKyAgICAgIHhzdW00ICg3LCBkLm1heF93aWR0aF9sZW5ndGgsIGQubWF4X3ByZWNpc2lvbl9sZW5ndGgsIDYpOwotKyNpZiBIQVZFX0FMTE9DQQotKyAgICBpZiAoYnVmX25lZWRlZGxlbmd0aCA8IDQwMDAgLyBzaXplb2YgKENIQVJfVCkpCi0rICAgICAgewotKwlidWYgPSAoQ0hBUl9UICopIGFsbG9jYSAoYnVmX25lZWRlZGxlbmd0aCAqIHNpemVvZiAoQ0hBUl9UKSk7Ci0rCWJ1Zl9tYWxsb2NlZCA9IE5VTEw7Ci0rICAgICAgfQotKyAgICBlbHNlCi0rI2VuZGlmCi0rICAgICAgewotKwlzaXplX3QgYnVmX21lbXNpemUgPSB4dGltZXMgKGJ1Zl9uZWVkZWRsZW5ndGgsIHNpemVvZiAoQ0hBUl9UKSk7Ci0rCWlmIChzaXplX292ZXJmbG93X3AgKGJ1Zl9tZW1zaXplKSkKLSsJICBnb3RvIG91dF9vZl9tZW1vcnlfMTsKLSsJYnVmID0gKENIQVJfVCAqKSBtYWxsb2MgKGJ1Zl9tZW1zaXplKTsKLSsJaWYgKGJ1ZiA9PSBOVUxMKQotKwkgIGdvdG8gb3V0X29mX21lbW9yeV8xOwotKwlidWZfbWFsbG9jZWQgPSBidWY7Ci0rICAgICAgfQotKwotKyAgICBpZiAocmVzdWx0YnVmICE9IE5VTEwpCi0rICAgICAgewotKwlyZXN1bHQgPSByZXN1bHRidWY7Ci0rCWFsbG9jYXRlZCA9ICpsZW5ndGhwOwotKyAgICAgIH0KLSsgICAgZWxzZQotKyAgICAgIHsKLSsJcmVzdWx0ID0gTlVMTDsKLSsJYWxsb2NhdGVkID0gMDsKLSsgICAgICB9Ci0rICAgIGxlbmd0aCA9IDA7Ci0rICAgIC8qIEludmFyaWFudHM6Ci0rICAgICAgIHJlc3VsdCBpcyBlaXRoZXIgPT0gcmVzdWx0YnVmIG9yID09IE5VTEwgb3IgbWFsbG9jLWFsbG9jYXRlZC4KLSsgICAgICAgSWYgbGVuZ3RoID4gMCwgdGhlbiByZXN1bHQgIT0gTlVMTC4gICovCi0rCi0rICAgIC8qIEVuc3VyZXMgdGhhdCBhbGxvY2F0ZWQgPj0gbmVlZGVkLiAgQWJvcnRzIHRocm91Z2ggYSBqdW1wIHRvCi0rICAgICAgIG91dF9vZl9tZW1vcnkgaWYgbmVlZGVkIGlzIFNJWkVfTUFYIG9yIG90aGVyd2lzZSB0b28gYmlnLiAgKi8KLSsjZGVmaW5lIEVOU1VSRV9BTExPQ0FUSU9OKG5lZWRlZCkgXAotKyAgICBpZiAoKG5lZWRlZCkgPiBhbGxvY2F0ZWQpCQkJCQkJICAgICBcCi0rICAgICAgewkJCQkJCQkJCSAgICAgXAotKwlzaXplX3QgbWVtb3J5X3NpemU7CQkJCQkJICAgICBcCi0rCUNIQVJfVCAqbWVtb3J5OwkJCQkJCQkgICAgIFwKLSsJCQkJCQkJCQkgICAgIFwKLSsJYWxsb2NhdGVkID0gKGFsbG9jYXRlZCA+IDAgPyB4dGltZXMgKGFsbG9jYXRlZCwgMikgOiAxMik7CSAgICAgXAotKwlpZiAoKG5lZWRlZCkgPiBhbGxvY2F0ZWQpCQkJCQkgICAgIFwKLSsJICBhbGxvY2F0ZWQgPSAobmVlZGVkKTsJCQkJCQkgICAgIFwKLSsJbWVtb3J5X3NpemUgPSB4dGltZXMgKGFsbG9jYXRlZCwgc2l6ZW9mIChDSEFSX1QpKTsJCSAgICAgXAotKwlpZiAoc2l6ZV9vdmVyZmxvd19wIChtZW1vcnlfc2l6ZSkpCQkJCSAgICAgXAotKwkgIGdvdG8gb3V0X29mX21lbW9yeTsJCQkJCQkgICAgIFwKLSsJaWYgKHJlc3VsdCA9PSByZXN1bHRidWYgfHwgcmVzdWx0ID09IE5VTEwpCQkJICAgICBcCi0rCSAgbWVtb3J5ID0gKENIQVJfVCAqKSBtYWxsb2MgKG1lbW9yeV9zaXplKTsJCQkgICAgIFwKLSsJZWxzZQkJCQkJCQkJICAgICBcCi0rCSAgbWVtb3J5ID0gKENIQVJfVCAqKSByZWFsbG9jIChyZXN1bHQsIG1lbW9yeV9zaXplKTsJCSAgICAgXAotKwlpZiAobWVtb3J5ID09IE5VTEwpCQkJCQkJICAgICBcCi0rCSAgZ290byBvdXRfb2ZfbWVtb3J5OwkJCQkJCSAgICAgXAotKwlpZiAocmVzdWx0ID09IHJlc3VsdGJ1ZiAmJiBsZW5ndGggPiAwKQkJCQkgICAgIFwKLSsJICBtZW1jcHkgKG1lbW9yeSwgcmVzdWx0LCBsZW5ndGggKiBzaXplb2YgKENIQVJfVCkpOwkJICAgICBcCi0rCXJlc3VsdCA9IG1lbW9yeTsJCQkJCQkgICAgIFwKLSsgICAgICB9Ci0rCi0rICAgIGZvciAoY3AgPSBmb3JtYXQsIGkgPSAwLCBkcCA9ICZkLmRpclswXTsgOyBjcCA9IGRwLT5kaXJfZW5kLCBpKyssIGRwKyspCi0rICAgICAgewotKwlpZiAoY3AgIT0gZHAtPmRpcl9zdGFydCkKLSsJICB7Ci0rCSAgICBzaXplX3QgbiA9IGRwLT5kaXJfc3RhcnQgLSBjcDsKLSsJICAgIHNpemVfdCBhdWdtZW50ZWRfbGVuZ3RoID0geHN1bSAobGVuZ3RoLCBuKTsKLSsKLSsJICAgIEVOU1VSRV9BTExPQ0FUSU9OIChhdWdtZW50ZWRfbGVuZ3RoKTsKLSsJICAgIG1lbWNweSAocmVzdWx0ICsgbGVuZ3RoLCBjcCwgbiAqIHNpemVvZiAoQ0hBUl9UKSk7Ci0rCSAgICBsZW5ndGggPSBhdWdtZW50ZWRfbGVuZ3RoOwotKwkgIH0KLSsJaWYgKGkgPT0gZC5jb3VudCkKLSsJICBicmVhazsKLSsKLSsJLyogRXhlY3V0ZSBhIHNpbmdsZSBkaXJlY3RpdmUuICAqLwotKwlpZiAoZHAtPmNvbnZlcnNpb24gPT0gJyUnKQotKwkgIHsKLSsJICAgIHNpemVfdCBhdWdtZW50ZWRfbGVuZ3RoOwotKwotKwkgICAgaWYgKCEoZHAtPmFyZ19pbmRleCA9PSBBUkdfTk9ORSkpCi0rCSAgICAgIGFib3J0ICgpOwotKwkgICAgYXVnbWVudGVkX2xlbmd0aCA9IHhzdW0gKGxlbmd0aCwgMSk7Ci0rCSAgICBFTlNVUkVfQUxMT0NBVElPTiAoYXVnbWVudGVkX2xlbmd0aCk7Ci0rCSAgICByZXN1bHRbbGVuZ3RoXSA9ICclJzsKLSsJICAgIGxlbmd0aCA9IGF1Z21lbnRlZF9sZW5ndGg7Ci0rCSAgfQotKwllbHNlCi0rCSAgewotKwkgICAgaWYgKCEoZHAtPmFyZ19pbmRleCAhPSBBUkdfTk9ORSkpCi0rCSAgICAgIGFib3J0ICgpOwotKwotKwkgICAgaWYgKGRwLT5jb252ZXJzaW9uID09ICduJykKLSsJICAgICAgewotKwkJc3dpdGNoIChhLmFyZ1tkcC0+YXJnX2luZGV4XS50eXBlKQotKwkJICB7Ci0rCQkgIGNhc2UgVFlQRV9DT1VOVF9TQ0hBUl9QT0lOVEVSOgotKwkJICAgICphLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfY291bnRfc2NoYXJfcG9pbnRlciA9IGxlbmd0aDsKLSsJCSAgICBicmVhazsKLSsJCSAgY2FzZSBUWVBFX0NPVU5UX1NIT1JUX1BPSU5URVI6Ci0rCQkgICAgKmEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9jb3VudF9zaG9ydF9wb2ludGVyID0gbGVuZ3RoOwotKwkJICAgIGJyZWFrOwotKwkJICBjYXNlIFRZUEVfQ09VTlRfSU5UX1BPSU5URVI6Ci0rCQkgICAgKmEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9jb3VudF9pbnRfcG9pbnRlciA9IGxlbmd0aDsKLSsJCSAgICBicmVhazsKLSsJCSAgY2FzZSBUWVBFX0NPVU5UX0xPTkdJTlRfUE9JTlRFUjoKLSsJCSAgICAqYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX2NvdW50X2xvbmdpbnRfcG9pbnRlciA9IGxlbmd0aDsKLSsJCSAgICBicmVhazsKLSsjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSsJCSAgY2FzZSBUWVBFX0NPVU5UX0xPTkdMT05HSU5UX1BPSU5URVI6Ci0rCQkgICAgKmEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9jb3VudF9sb25nbG9uZ2ludF9wb2ludGVyID0gbGVuZ3RoOwotKwkJICAgIGJyZWFrOwotKyNlbmRpZgotKwkJICBkZWZhdWx0OgotKwkJICAgIGFib3J0ICgpOwotKwkJICB9Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJYXJnX3R5cGUgdHlwZSA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLnR5cGU7Ci0rCQlDSEFSX1QgKnA7Ci0rCQl1bnNpZ25lZCBpbnQgcHJlZml4X2NvdW50OwotKwkJaW50IHByZWZpeGVzWzJdOwotKyNpZiAhVVNFX1NOUFJJTlRGCi0rCQlzaXplX3QgdG1wX2xlbmd0aDsKLSsJCUNIQVJfVCB0bXBidWZbNzAwXTsKLSsJCUNIQVJfVCAqdG1wOwotKwotKwkJLyogQWxsb2NhdGUgYSB0ZW1wb3JhcnkgYnVmZmVyIG9mIHN1ZmZpY2llbnQgc2l6ZSBmb3IgY2FsbGluZwotKwkJICAgc3ByaW50Zi4gICovCi0rCQl7Ci0rCQkgIHNpemVfdCB3aWR0aDsKLSsJCSAgc2l6ZV90IHByZWNpc2lvbjsKLSsKLSsJCSAgd2lkdGggPSAwOwotKwkJICBpZiAoZHAtPndpZHRoX3N0YXJ0ICE9IGRwLT53aWR0aF9lbmQpCi0rCQkgICAgewotKwkJICAgICAgaWYgKGRwLT53aWR0aF9hcmdfaW5kZXggIT0gQVJHX05PTkUpCi0rCQkJewotKwkJCSAgaW50IGFyZzsKLSsKLSsJCQkgIGlmICghKGEuYXJnW2RwLT53aWR0aF9hcmdfaW5kZXhdLnR5cGUgPT0gVFlQRV9JTlQpKQotKwkJCSAgICBhYm9ydCAoKTsKLSsJCQkgIGFyZyA9IGEuYXJnW2RwLT53aWR0aF9hcmdfaW5kZXhdLmEuYV9pbnQ7Ci0rCQkJICB3aWR0aCA9IChhcmcgPCAwID8gKHVuc2lnbmVkIGludCkgKC1hcmcpIDogYXJnKTsKLSsJCQl9Ci0rCQkgICAgICBlbHNlCi0rCQkJewotKwkJCSAgY29uc3QgQ0hBUl9UICpkaWdpdHAgPSBkcC0+d2lkdGhfc3RhcnQ7Ci0rCi0rCQkJICBkbwotKwkJCSAgICB3aWR0aCA9IHhzdW0gKHh0aW1lcyAod2lkdGgsIDEwKSwgKmRpZ2l0cCsrIC0gJzAnKTsKLSsJCQkgIHdoaWxlIChkaWdpdHAgIT0gZHAtPndpZHRoX2VuZCk7Ci0rCQkJfQotKwkJICAgIH0KLSsKLSsJCSAgcHJlY2lzaW9uID0gNjsKLSsJCSAgaWYgKGRwLT5wcmVjaXNpb25fc3RhcnQgIT0gZHAtPnByZWNpc2lvbl9lbmQpCi0rCQkgICAgewotKwkJICAgICAgaWYgKGRwLT5wcmVjaXNpb25fYXJnX2luZGV4ICE9IEFSR19OT05FKQotKwkJCXsKLSsJCQkgIGludCBhcmc7Ci0rCi0rCQkJICBpZiAoIShhLmFyZ1tkcC0+cHJlY2lzaW9uX2FyZ19pbmRleF0udHlwZSA9PSBUWVBFX0lOVCkpCi0rCQkJICAgIGFib3J0ICgpOwotKwkJCSAgYXJnID0gYS5hcmdbZHAtPnByZWNpc2lvbl9hcmdfaW5kZXhdLmEuYV9pbnQ7Ci0rCQkJICBwcmVjaXNpb24gPSAoYXJnIDwgMCA/IDAgOiBhcmcpOwotKwkJCX0KLSsJCSAgICAgIGVsc2UKLSsJCQl7Ci0rCQkJICBjb25zdCBDSEFSX1QgKmRpZ2l0cCA9IGRwLT5wcmVjaXNpb25fc3RhcnQgKyAxOwotKwotKwkJCSAgcHJlY2lzaW9uID0gMDsKLSsJCQkgIGRvCi0rCQkJICAgIHByZWNpc2lvbiA9IHhzdW0gKHh0aW1lcyAocHJlY2lzaW9uLCAxMCksICpkaWdpdHArKyAtICcwJyk7Ci0rCQkJICB3aGlsZSAoZGlnaXRwICE9IGRwLT5wcmVjaXNpb25fZW5kKTsKLSsJCQl9Ci0rCQkgICAgfQotKwotKwkJICBzd2l0Y2ggKGRwLT5jb252ZXJzaW9uKQotKwkJICAgIHsKLSsKLSsJCSAgICBjYXNlICdkJzogY2FzZSAnaSc6IGNhc2UgJ3UnOgotKyMgaWZkZWYgSEFWRV9MT05HX0xPTkcKLSsJCSAgICAgIGlmICh0eXBlID09IFRZUEVfTE9OR0xPTkdJTlQgfHwgdHlwZSA9PSBUWVBFX1VMT05HTE9OR0lOVCkKLSsJCQl0bXBfbGVuZ3RoID0KLSsJCQkgICh1bnNpZ25lZCBpbnQpIChzaXplb2YgKHVuc2lnbmVkIGxvbmcgbG9uZykgKiBDSEFSX0JJVAotKwkJCQkJICAqIDAuMzAxMDMgLyogYmluYXJ5IC0+IGRlY2ltYWwgKi8KLSsJCQkJCSAgKiAyIC8qIGVzdGltYXRlIGZvciBGTEFHX0dST1VQICovCi0rCQkJCQkgKQotKwkJCSAgKyAxIC8qIHR1cm4gZmxvb3IgaW50byBjZWlsICovCi0rCQkJICArIDE7IC8qIGFjY291bnQgZm9yIGxlYWRpbmcgc2lnbiAqLwotKwkJICAgICAgZWxzZQotKyMgZW5kaWYKLSsJCSAgICAgIGlmICh0eXBlID09IFRZUEVfTE9OR0lOVCB8fCB0eXBlID09IFRZUEVfVUxPTkdJTlQpCi0rCQkJdG1wX2xlbmd0aCA9Ci0rCQkJICAodW5zaWduZWQgaW50KSAoc2l6ZW9mICh1bnNpZ25lZCBsb25nKSAqIENIQVJfQklUCi0rCQkJCQkgICogMC4zMDEwMyAvKiBiaW5hcnkgLT4gZGVjaW1hbCAqLwotKwkJCQkJICAqIDIgLyogZXN0aW1hdGUgZm9yIEZMQUdfR1JPVVAgKi8KLSsJCQkJCSApCi0rCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KLSsJCQkgICsgMTsgLyogYWNjb3VudCBmb3IgbGVhZGluZyBzaWduICovCi0rCQkgICAgICBlbHNlCi0rCQkJdG1wX2xlbmd0aCA9Ci0rCQkJICAodW5zaWduZWQgaW50KSAoc2l6ZW9mICh1bnNpZ25lZCBpbnQpICogQ0hBUl9CSVQKLSsJCQkJCSAgKiAwLjMwMTAzIC8qIGJpbmFyeSAtPiBkZWNpbWFsICovCi0rCQkJCQkgICogMiAvKiBlc3RpbWF0ZSBmb3IgRkxBR19HUk9VUCAqLwotKwkJCQkJICkKLSsJCQkgICsgMSAvKiB0dXJuIGZsb29yIGludG8gY2VpbCAqLwotKwkJCSAgKyAxOyAvKiBhY2NvdW50IGZvciBsZWFkaW5nIHNpZ24gKi8KLSsJCSAgICAgIGJyZWFrOwotKwotKwkJICAgIGNhc2UgJ28nOgotKyMgaWZkZWYgSEFWRV9MT05HX0xPTkcKLSsJCSAgICAgIGlmICh0eXBlID09IFRZUEVfTE9OR0xPTkdJTlQgfHwgdHlwZSA9PSBUWVBFX1VMT05HTE9OR0lOVCkKLSsJCQl0bXBfbGVuZ3RoID0KLSsJCQkgICh1bnNpZ25lZCBpbnQpIChzaXplb2YgKHVuc2lnbmVkIGxvbmcgbG9uZykgKiBDSEFSX0JJVAotKwkJCQkJICAqIDAuMzMzMzM0IC8qIGJpbmFyeSAtPiBvY3RhbCAqLwotKwkJCQkJICkKLSsJCQkgICsgMSAvKiB0dXJuIGZsb29yIGludG8gY2VpbCAqLwotKwkJCSAgKyAxOyAvKiBhY2NvdW50IGZvciBsZWFkaW5nIHNpZ24gKi8KLSsJCSAgICAgIGVsc2UKLSsjIGVuZGlmCi0rCQkgICAgICBpZiAodHlwZSA9PSBUWVBFX0xPTkdJTlQgfHwgdHlwZSA9PSBUWVBFX1VMT05HSU5UKQotKwkJCXRtcF9sZW5ndGggPQotKwkJCSAgKHVuc2lnbmVkIGludCkgKHNpemVvZiAodW5zaWduZWQgbG9uZykgKiBDSEFSX0JJVAotKwkJCQkJICAqIDAuMzMzMzM0IC8qIGJpbmFyeSAtPiBvY3RhbCAqLwotKwkJCQkJICkKLSsJCQkgICsgMSAvKiB0dXJuIGZsb29yIGludG8gY2VpbCAqLwotKwkJCSAgKyAxOyAvKiBhY2NvdW50IGZvciBsZWFkaW5nIHNpZ24gKi8KLSsJCSAgICAgIGVsc2UKLSsJCQl0bXBfbGVuZ3RoID0KLSsJCQkgICh1bnNpZ25lZCBpbnQpIChzaXplb2YgKHVuc2lnbmVkIGludCkgKiBDSEFSX0JJVAotKwkJCQkJICAqIDAuMzMzMzM0IC8qIGJpbmFyeSAtPiBvY3RhbCAqLwotKwkJCQkJICkKLSsJCQkgICsgMSAvKiB0dXJuIGZsb29yIGludG8gY2VpbCAqLwotKwkJCSAgKyAxOyAvKiBhY2NvdW50IGZvciBsZWFkaW5nIHNpZ24gKi8KLSsJCSAgICAgIGJyZWFrOwotKwotKwkJICAgIGNhc2UgJ3gnOiBjYXNlICdYJzoKLSsjIGlmZGVmIEhBVkVfTE9OR19MT05HCi0rCQkgICAgICBpZiAodHlwZSA9PSBUWVBFX0xPTkdMT05HSU5UIHx8IHR5cGUgPT0gVFlQRV9VTE9OR0xPTkdJTlQpCi0rCQkJdG1wX2xlbmd0aCA9Ci0rCQkJICAodW5zaWduZWQgaW50KSAoc2l6ZW9mICh1bnNpZ25lZCBsb25nIGxvbmcpICogQ0hBUl9CSVQKLSsJCQkJCSAgKiAwLjI1IC8qIGJpbmFyeSAtPiBoZXhhZGVjaW1hbCAqLwotKwkJCQkJICkKLSsJCQkgICsgMSAvKiB0dXJuIGZsb29yIGludG8gY2VpbCAqLwotKwkJCSAgKyAyOyAvKiBhY2NvdW50IGZvciBsZWFkaW5nIHNpZ24gb3IgYWx0ZXJuYXRlIGZvcm0gKi8KLSsJCSAgICAgIGVsc2UKLSsjIGVuZGlmCi0rCQkgICAgICBpZiAodHlwZSA9PSBUWVBFX0xPTkdJTlQgfHwgdHlwZSA9PSBUWVBFX1VMT05HSU5UKQotKwkJCXRtcF9sZW5ndGggPQotKwkJCSAgKHVuc2lnbmVkIGludCkgKHNpemVvZiAodW5zaWduZWQgbG9uZykgKiBDSEFSX0JJVAotKwkJCQkJICAqIDAuMjUgLyogYmluYXJ5IC0+IGhleGFkZWNpbWFsICovCi0rCQkJCQkgKQotKwkJCSAgKyAxIC8qIHR1cm4gZmxvb3IgaW50byBjZWlsICovCi0rCQkJICArIDI7IC8qIGFjY291bnQgZm9yIGxlYWRpbmcgc2lnbiBvciBhbHRlcm5hdGUgZm9ybSAqLwotKwkJICAgICAgZWxzZQotKwkJCXRtcF9sZW5ndGggPQotKwkJCSAgKHVuc2lnbmVkIGludCkgKHNpemVvZiAodW5zaWduZWQgaW50KSAqIENIQVJfQklUCi0rCQkJCQkgICogMC4yNSAvKiBiaW5hcnkgLT4gaGV4YWRlY2ltYWwgKi8KLSsJCQkJCSApCi0rCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KLSsJCQkgICsgMjsgLyogYWNjb3VudCBmb3IgbGVhZGluZyBzaWduIG9yIGFsdGVybmF0ZSBmb3JtICovCi0rCQkgICAgICBicmVhazsKLSsKLSsJCSAgICBjYXNlICdmJzogY2FzZSAnRic6Ci0rIyBpZmRlZiBIQVZFX0xPTkdfRE9VQkxFCi0rCQkgICAgICBpZiAodHlwZSA9PSBUWVBFX0xPTkdET1VCTEUpCi0rCQkJdG1wX2xlbmd0aCA9Ci0rCQkJICAodW5zaWduZWQgaW50KSAoTERCTF9NQVhfRVhQCi0rCQkJCQkgICogMC4zMDEwMyAvKiBiaW5hcnkgLT4gZGVjaW1hbCAqLwotKwkJCQkJICAqIDIgLyogZXN0aW1hdGUgZm9yIEZMQUdfR1JPVVAgKi8KLSsJCQkJCSApCi0rCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KLSsJCQkgICsgMTA7IC8qIHNpZ24sIGRlY2ltYWwgcG9pbnQgZXRjLiAqLwotKwkJICAgICAgZWxzZQotKyMgZW5kaWYKLSsJCQl0bXBfbGVuZ3RoID0KLSsJCQkgICh1bnNpZ25lZCBpbnQpIChEQkxfTUFYX0VYUAotKwkJCQkJICAqIDAuMzAxMDMgLyogYmluYXJ5IC0+IGRlY2ltYWwgKi8KLSsJCQkJCSAgKiAyIC8qIGVzdGltYXRlIGZvciBGTEFHX0dST1VQICovCi0rCQkJCQkgKQotKwkJCSAgKyAxIC8qIHR1cm4gZmxvb3IgaW50byBjZWlsICovCi0rCQkJICArIDEwOyAvKiBzaWduLCBkZWNpbWFsIHBvaW50IGV0Yy4gKi8KLSsJCSAgICAgIHRtcF9sZW5ndGggPSB4c3VtICh0bXBfbGVuZ3RoLCBwcmVjaXNpb24pOwotKwkJICAgICAgYnJlYWs7Ci0rCi0rCQkgICAgY2FzZSAnZSc6IGNhc2UgJ0UnOiBjYXNlICdnJzogY2FzZSAnRyc6Ci0rCQkgICAgY2FzZSAnYSc6IGNhc2UgJ0EnOgotKwkJICAgICAgdG1wX2xlbmd0aCA9Ci0rCQkJMTI7IC8qIHNpZ24sIGRlY2ltYWwgcG9pbnQsIGV4cG9uZW50IGV0Yy4gKi8KLSsJCSAgICAgIHRtcF9sZW5ndGggPSB4c3VtICh0bXBfbGVuZ3RoLCBwcmVjaXNpb24pOwotKwkJICAgICAgYnJlYWs7Ci0rCi0rCQkgICAgY2FzZSAnYyc6Ci0rIyBpZiBkZWZpbmVkIEhBVkVfV0lOVF9UICYmICFXSURFX0NIQVJfVkVSU0lPTgotKwkJICAgICAgaWYgKHR5cGUgPT0gVFlQRV9XSURFX0NIQVIpCi0rCQkJdG1wX2xlbmd0aCA9IE1CX0NVUl9NQVg7Ci0rCQkgICAgICBlbHNlCi0rIyBlbmRpZgotKwkJCXRtcF9sZW5ndGggPSAxOwotKwkJICAgICAgYnJlYWs7Ci0rCi0rCQkgICAgY2FzZSAncyc6Ci0rIyBpZmRlZiBIQVZFX1dDSEFSX1QKLSsJCSAgICAgIGlmICh0eXBlID09IFRZUEVfV0lERV9TVFJJTkcpCi0rCQkJewotKwkJCSAgdG1wX2xlbmd0aCA9Ci0rCQkJICAgIGxvY2FsX3djc2xlbiAoYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3dpZGVfc3RyaW5nKTsKLSsKLSsjICBpZiAhV0lERV9DSEFSX1ZFUlNJT04KLSsJCQkgIHRtcF9sZW5ndGggPSB4dGltZXMgKHRtcF9sZW5ndGgsIE1CX0NVUl9NQVgpOwotKyMgIGVuZGlmCi0rCQkJfQotKwkJICAgICAgZWxzZQotKyMgZW5kaWYKLSsJCQl0bXBfbGVuZ3RoID0gc3RybGVuIChhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfc3RyaW5nKTsKLSsJCSAgICAgIGJyZWFrOwotKwotKwkJICAgIGNhc2UgJ3AnOgotKwkJICAgICAgdG1wX2xlbmd0aCA9Ci0rCQkJKHVuc2lnbmVkIGludCkgKHNpemVvZiAodm9pZCAqKSAqIENIQVJfQklUCi0rCQkJCQkqIDAuMjUgLyogYmluYXJ5IC0+IGhleGFkZWNpbWFsICovCi0rCQkJCSAgICAgICApCi0rCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KLSsJCQkgICsgMjsgLyogYWNjb3VudCBmb3IgbGVhZGluZyAweCAqLwotKwkJICAgICAgYnJlYWs7Ci0rCi0rCQkgICAgZGVmYXVsdDoKLSsJCSAgICAgIGFib3J0ICgpOwotKwkJICAgIH0KLSsKLSsJCSAgaWYgKHRtcF9sZW5ndGggPCB3aWR0aCkKLSsJCSAgICB0bXBfbGVuZ3RoID0gd2lkdGg7Ci0rCi0rCQkgIHRtcF9sZW5ndGggPSB4c3VtICh0bXBfbGVuZ3RoLCAxKTsgLyogYWNjb3VudCBmb3IgdHJhaWxpbmcgTlVMICovCi0rCQl9Ci0rCi0rCQlpZiAodG1wX2xlbmd0aCA8PSBzaXplb2YgKHRtcGJ1ZikgLyBzaXplb2YgKENIQVJfVCkpCi0rCQkgIHRtcCA9IHRtcGJ1ZjsKLSsJCWVsc2UKLSsJCSAgewotKwkJICAgIHNpemVfdCB0bXBfbWVtc2l6ZSA9IHh0aW1lcyAodG1wX2xlbmd0aCwgc2l6ZW9mIChDSEFSX1QpKTsKLSsKLSsJCSAgICBpZiAoc2l6ZV9vdmVyZmxvd19wICh0bXBfbWVtc2l6ZSkpCi0rCQkgICAgICAvKiBPdmVyZmxvdywgd291bGQgbGVhZCB0byBvdXQgb2YgbWVtb3J5LiAgKi8KLSsJCSAgICAgIGdvdG8gb3V0X29mX21lbW9yeTsKLSsJCSAgICB0bXAgPSAoQ0hBUl9UICopIG1hbGxvYyAodG1wX21lbXNpemUpOwotKwkJICAgIGlmICh0bXAgPT0gTlVMTCkKLSsJCSAgICAgIC8qIE91dCBvZiBtZW1vcnkuICAqLwotKwkJICAgICAgZ290byBvdXRfb2ZfbWVtb3J5OwotKwkJICB9Ci0rI2VuZGlmCi0rCi0rCQkvKiBDb25zdHJ1Y3QgdGhlIGZvcm1hdCBzdHJpbmcgZm9yIGNhbGxpbmcgc25wcmludGYgb3IKLSsJCSAgIHNwcmludGYuICAqLwotKwkJcCA9IGJ1ZjsKLSsJCSpwKysgPSAnJSc7Ci0rCQlpZiAoZHAtPmZsYWdzICYgRkxBR19HUk9VUCkKLSsJCSAgKnArKyA9ICdcJyc7Ci0rCQlpZiAoZHAtPmZsYWdzICYgRkxBR19MRUZUKQotKwkJICAqcCsrID0gJy0nOwotKwkJaWYgKGRwLT5mbGFncyAmIEZMQUdfU0hPV1NJR04pCi0rCQkgICpwKysgPSAnKyc7Ci0rCQlpZiAoZHAtPmZsYWdzICYgRkxBR19TUEFDRSkKLSsJCSAgKnArKyA9ICcgJzsKLSsJCWlmIChkcC0+ZmxhZ3MgJiBGTEFHX0FMVCkKLSsJCSAgKnArKyA9ICcjJzsKLSsJCWlmIChkcC0+ZmxhZ3MgJiBGTEFHX1pFUk8pCi0rCQkgICpwKysgPSAnMCc7Ci0rCQlpZiAoZHAtPndpZHRoX3N0YXJ0ICE9IGRwLT53aWR0aF9lbmQpCi0rCQkgIHsKLSsJCSAgICBzaXplX3QgbiA9IGRwLT53aWR0aF9lbmQgLSBkcC0+d2lkdGhfc3RhcnQ7Ci0rCQkgICAgbWVtY3B5IChwLCBkcC0+d2lkdGhfc3RhcnQsIG4gKiBzaXplb2YgKENIQVJfVCkpOwotKwkJICAgIHAgKz0gbjsKLSsJCSAgfQotKwkJaWYgKGRwLT5wcmVjaXNpb25fc3RhcnQgIT0gZHAtPnByZWNpc2lvbl9lbmQpCi0rCQkgIHsKLSsJCSAgICBzaXplX3QgbiA9IGRwLT5wcmVjaXNpb25fZW5kIC0gZHAtPnByZWNpc2lvbl9zdGFydDsKLSsJCSAgICBtZW1jcHkgKHAsIGRwLT5wcmVjaXNpb25fc3RhcnQsIG4gKiBzaXplb2YgKENIQVJfVCkpOwotKwkJICAgIHAgKz0gbjsKLSsJCSAgfQotKwotKwkJc3dpdGNoICh0eXBlKQotKwkJICB7Ci0rI2lmZGVmIEhBVkVfTE9OR19MT05HCi0rCQkgIGNhc2UgVFlQRV9MT05HTE9OR0lOVDoKLSsJCSAgY2FzZSBUWVBFX1VMT05HTE9OR0lOVDoKLSsJCSAgICAqcCsrID0gJ2wnOwotKwkJICAgIC8qRkFMTFRIUk9VR0gqLwotKyNlbmRpZgotKwkJICBjYXNlIFRZUEVfTE9OR0lOVDoKLSsJCSAgY2FzZSBUWVBFX1VMT05HSU5UOgotKyNpZmRlZiBIQVZFX1dJTlRfVAotKwkJICBjYXNlIFRZUEVfV0lERV9DSEFSOgotKyNlbmRpZgotKyNpZmRlZiBIQVZFX1dDSEFSX1QKLSsJCSAgY2FzZSBUWVBFX1dJREVfU1RSSU5HOgotKyNlbmRpZgotKwkJICAgICpwKysgPSAnbCc7Ci0rCQkgICAgYnJlYWs7Ci0rI2lmZGVmIEhBVkVfTE9OR19ET1VCTEUKLSsJCSAgY2FzZSBUWVBFX0xPTkdET1VCTEU6Ci0rCQkgICAgKnArKyA9ICdMJzsKLSsJCSAgICBicmVhazsKLSsjZW5kaWYKLSsJCSAgZGVmYXVsdDoKLSsJCSAgICBicmVhazsKLSsJCSAgfQotKwkJKnAgPSBkcC0+Y29udmVyc2lvbjsKLSsjaWYgVVNFX1NOUFJJTlRGCi0rCQlwWzFdID0gJyUnOwotKwkJcFsyXSA9ICduJzsKLSsJCXBbM10gPSAnXDAnOwotKyNlbHNlCi0rCQlwWzFdID0gJ1wwJzsKLSsjZW5kaWYKLSsKLSsJCS8qIENvbnN0cnVjdCB0aGUgYXJndW1lbnRzIGZvciBjYWxsaW5nIHNucHJpbnRmIG9yIHNwcmludGYuICAqLwotKwkJcHJlZml4X2NvdW50ID0gMDsKLSsJCWlmIChkcC0+d2lkdGhfYXJnX2luZGV4ICE9IEFSR19OT05FKQotKwkJICB7Ci0rCQkgICAgaWYgKCEoYS5hcmdbZHAtPndpZHRoX2FyZ19pbmRleF0udHlwZSA9PSBUWVBFX0lOVCkpCi0rCQkgICAgICBhYm9ydCAoKTsKLSsJCSAgICBwcmVmaXhlc1twcmVmaXhfY291bnQrK10gPSBhLmFyZ1tkcC0+d2lkdGhfYXJnX2luZGV4XS5hLmFfaW50OwotKwkJICB9Ci0rCQlpZiAoZHAtPnByZWNpc2lvbl9hcmdfaW5kZXggIT0gQVJHX05PTkUpCi0rCQkgIHsKLSsJCSAgICBpZiAoIShhLmFyZ1tkcC0+cHJlY2lzaW9uX2FyZ19pbmRleF0udHlwZSA9PSBUWVBFX0lOVCkpCi0rCQkgICAgICBhYm9ydCAoKTsKLSsJCSAgICBwcmVmaXhlc1twcmVmaXhfY291bnQrK10gPSBhLmFyZ1tkcC0+cHJlY2lzaW9uX2FyZ19pbmRleF0uYS5hX2ludDsKLSsJCSAgfQotKwotKyNpZiBVU0VfU05QUklOVEYKLSsJCS8qIFByZXBhcmUgY2hlY2tpbmcgd2hldGhlciBzbnByaW50ZiByZXR1cm5zIHRoZSBjb3VudAotKwkJICAgdmlhICVuLiAgKi8KLSsJCUVOU1VSRV9BTExPQ0FUSU9OICh4c3VtIChsZW5ndGgsIDEpKTsKLSsJCXJlc3VsdFtsZW5ndGhdID0gJ1wwJzsKLSsjZW5kaWYKLSsKLSsJCWZvciAoOzspCi0rCQkgIHsKLSsJCSAgICBzaXplX3QgbWF4bGVuOwotKwkJICAgIGludCBjb3VudDsKLSsJCSAgICBpbnQgcmV0Y291bnQ7Ci0rCi0rCQkgICAgbWF4bGVuID0gYWxsb2NhdGVkIC0gbGVuZ3RoOwotKwkJICAgIGNvdW50ID0gLTE7Ci0rCQkgICAgcmV0Y291bnQgPSAwOwotKwotKyNpZiBVU0VfU05QUklOVEYKLSsjIGRlZmluZSBTTlBSSU5URl9CVUYoYXJnKSBcCi0rCQkgICAgc3dpdGNoIChwcmVmaXhfY291bnQpCQkJCSAgICBcCi0rCQkgICAgICB7CQkJCQkJCSAgICBcCi0rCQkgICAgICBjYXNlIDA6CQkJCQkJICAgIFwKLSsJCQlyZXRjb3VudCA9IFNOUFJJTlRGIChyZXN1bHQgKyBsZW5ndGgsIG1heGxlbiwgYnVmLCAgXAotKwkJCQkJICAgICBhcmcsICZjb3VudCk7CQkgICAgXAotKwkJCWJyZWFrOwkJCQkJCSAgICBcCi0rCQkgICAgICBjYXNlIDE6CQkJCQkJICAgIFwKLSsJCQlyZXRjb3VudCA9IFNOUFJJTlRGIChyZXN1bHQgKyBsZW5ndGgsIG1heGxlbiwgYnVmLCAgXAotKwkJCQkJICAgICBwcmVmaXhlc1swXSwgYXJnLCAmY291bnQpOwkgICAgXAotKwkJCWJyZWFrOwkJCQkJCSAgICBcCi0rCQkgICAgICBjYXNlIDI6CQkJCQkJICAgIFwKLSsJCQlyZXRjb3VudCA9IFNOUFJJTlRGIChyZXN1bHQgKyBsZW5ndGgsIG1heGxlbiwgYnVmLCAgXAotKwkJCQkJICAgICBwcmVmaXhlc1swXSwgcHJlZml4ZXNbMV0sIGFyZywgXAotKwkJCQkJICAgICAmY291bnQpOwkJCSAgICBcCi0rCQkJYnJlYWs7CQkJCQkJICAgIFwKLSsJCSAgICAgIGRlZmF1bHQ6CQkJCQkJICAgIFwKLSsJCQlhYm9ydCAoKTsJCQkJCSAgICBcCi0rCQkgICAgICB9Ci0rI2Vsc2UKLSsjIGRlZmluZSBTTlBSSU5URl9CVUYoYXJnKSBcCi0rCQkgICAgc3dpdGNoIChwcmVmaXhfY291bnQpCQkJCSAgICBcCi0rCQkgICAgICB7CQkJCQkJCSAgICBcCi0rCQkgICAgICBjYXNlIDA6CQkJCQkJICAgIFwKLSsJCQljb3VudCA9IHNwcmludGYgKHRtcCwgYnVmLCBhcmcpOwkJICAgIFwKLSsJCQlicmVhazsJCQkJCQkgICAgXAotKwkJICAgICAgY2FzZSAxOgkJCQkJCSAgICBcCi0rCQkJY291bnQgPSBzcHJpbnRmICh0bXAsIGJ1ZiwgcHJlZml4ZXNbMF0sIGFyZyk7CSAgICBcCi0rCQkJYnJlYWs7CQkJCQkJICAgIFwKLSsJCSAgICAgIGNhc2UgMjoJCQkJCQkgICAgXAotKwkJCWNvdW50ID0gc3ByaW50ZiAodG1wLCBidWYsIHByZWZpeGVzWzBdLCBwcmVmaXhlc1sxXSxcCi0rCQkJCQkgYXJnKTsJCQkJICAgIFwKLSsJCQlicmVhazsJCQkJCQkgICAgXAotKwkJICAgICAgZGVmYXVsdDoJCQkJCQkgICAgXAotKwkJCWFib3J0ICgpOwkJCQkJICAgIFwKLSsJCSAgICAgIH0KLSsjZW5kaWYKLSsKLSsJCSAgICBzd2l0Y2ggKHR5cGUpCi0rCQkgICAgICB7Ci0rCQkgICAgICBjYXNlIFRZUEVfU0NIQVI6Ci0rCQkJewotKwkJCSAgaW50IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9zY2hhcjsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rCQkgICAgICBjYXNlIFRZUEVfVUNIQVI6Ci0rCQkJewotKwkJCSAgdW5zaWduZWQgaW50IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV91Y2hhcjsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rCQkgICAgICBjYXNlIFRZUEVfU0hPUlQ6Ci0rCQkJewotKwkJCSAgaW50IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9zaG9ydDsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rCQkgICAgICBjYXNlIFRZUEVfVVNIT1JUOgotKwkJCXsKLSsJCQkgIHVuc2lnbmVkIGludCBhcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfdXNob3J0OwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsJCSAgICAgIGNhc2UgVFlQRV9JTlQ6Ci0rCQkJewotKwkJCSAgaW50IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9pbnQ7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKwkJICAgICAgY2FzZSBUWVBFX1VJTlQ6Ci0rCQkJewotKwkJCSAgdW5zaWduZWQgaW50IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV91aW50OwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsJCSAgICAgIGNhc2UgVFlQRV9MT05HSU5UOgotKwkJCXsKLSsJCQkgIGxvbmcgaW50IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9sb25naW50OwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsJCSAgICAgIGNhc2UgVFlQRV9VTE9OR0lOVDoKLSsJCQl7Ci0rCQkJICB1bnNpZ25lZCBsb25nIGludCBhcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfdWxvbmdpbnQ7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKyNpZmRlZiBIQVZFX0xPTkdfTE9ORwotKwkJICAgICAgY2FzZSBUWVBFX0xPTkdMT05HSU5UOgotKwkJCXsKLSsJCQkgIGxvbmcgbG9uZyBpbnQgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX2xvbmdsb25naW50OwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsJCSAgICAgIGNhc2UgVFlQRV9VTE9OR0xPTkdJTlQ6Ci0rCQkJewotKwkJCSAgdW5zaWduZWQgbG9uZyBsb25nIGludCBhcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfdWxvbmdsb25naW50OwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsjZW5kaWYKLSsJCSAgICAgIGNhc2UgVFlQRV9ET1VCTEU6Ci0rCQkJewotKwkJCSAgZG91YmxlIGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9kb3VibGU7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKyNpZmRlZiBIQVZFX0xPTkdfRE9VQkxFCi0rCQkgICAgICBjYXNlIFRZUEVfTE9OR0RPVUJMRToKLSsJCQl7Ci0rCQkJICBsb25nIGRvdWJsZSBhcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfbG9uZ2RvdWJsZTsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rI2VuZGlmCi0rCQkgICAgICBjYXNlIFRZUEVfQ0hBUjoKLSsJCQl7Ci0rCQkJICBpbnQgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX2NoYXI7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKyNpZmRlZiBIQVZFX1dJTlRfVAotKwkJICAgICAgY2FzZSBUWVBFX1dJREVfQ0hBUjoKLSsJCQl7Ci0rCQkJICB3aW50X3QgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3dpZGVfY2hhcjsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rI2VuZGlmCi0rCQkgICAgICBjYXNlIFRZUEVfU1RSSU5HOgotKwkJCXsKLSsJCQkgIGNvbnN0IGNoYXIgKmFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9zdHJpbmc7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKyNpZmRlZiBIQVZFX1dDSEFSX1QKLSsJCSAgICAgIGNhc2UgVFlQRV9XSURFX1NUUklORzoKLSsJCQl7Ci0rCQkJICBjb25zdCB3Y2hhcl90ICphcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfd2lkZV9zdHJpbmc7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKyNlbmRpZgotKwkJICAgICAgY2FzZSBUWVBFX1BPSU5URVI6Ci0rCQkJewotKwkJCSAgdm9pZCAqYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3BvaW50ZXI7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKwkJICAgICAgZGVmYXVsdDoKLSsJCQlhYm9ydCAoKTsKLSsJCSAgICAgIH0KLSsKLSsjaWYgVVNFX1NOUFJJTlRGCi0rCQkgICAgLyogUG9ydGFiaWxpdHk6IE5vdCBhbGwgaW1wbGVtZW50YXRpb25zIG9mIHNucHJpbnRmKCkKLSsJCSAgICAgICBhcmUgSVNPIEMgOTkgY29tcGxpYW50LiAgRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YKLSsJCSAgICAgICBieXRlcyB0aGF0IHNucHJpbnRmKCkgaGFzIHByb2R1Y2VkIG9yIHdvdWxkIGhhdmUKLSsJCSAgICAgICBwcm9kdWNlZC4gICovCi0rCQkgICAgaWYgKGNvdW50ID49IDApCi0rCQkgICAgICB7Ci0rCQkJLyogVmVyaWZ5IHRoYXQgc25wcmludGYoKSBoYXMgTlVMLXRlcm1pbmF0ZWQgaXRzCi0rCQkJICAgcmVzdWx0LiAgKi8KLSsJCQlpZiAoY291bnQgPCBtYXhsZW4gJiYgcmVzdWx0W2xlbmd0aCArIGNvdW50XSAhPSAnXDAnKQotKwkJCSAgYWJvcnQgKCk7Ci0rCQkJLyogUG9ydGFiaWxpdHkgaGFjay4gICovCi0rCQkJaWYgKHJldGNvdW50ID4gY291bnQpCi0rCQkJICBjb3VudCA9IHJldGNvdW50OwotKwkJICAgICAgfQotKwkJICAgIGVsc2UKLSsJCSAgICAgIHsKLSsJCQkvKiBzbnByaW50ZigpIGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGUgJyVuJwotKwkJCSAgIGRpcmVjdGl2ZS4gICovCi0rCQkJaWYgKHBbMV0gIT0gJ1wwJykKLSsJCQkgIHsKLSsJCQkgICAgLyogRG9uJ3QgdXNlIHRoZSAnJW4nIGRpcmVjdGl2ZTsgaW5zdGVhZCwgbG9vawotKwkJCSAgICAgICBhdCB0aGUgc25wcmludGYoKSByZXR1cm4gdmFsdWUuICAqLwotKwkJCSAgICBwWzFdID0gJ1wwJzsKLSsJCQkgICAgY29udGludWU7Ci0rCQkJICB9Ci0rCQkJZWxzZQotKwkJCSAgewotKwkJCSAgICAvKiBMb29rIGF0IHRoZSBzbnByaW50ZigpIHJldHVybiB2YWx1ZS4gICovCi0rCQkJICAgIGlmIChyZXRjb3VudCA8IDApCi0rCQkJICAgICAgewotKwkJCQkvKiBIUC1VWCAxMC4yMCBzbnByaW50ZigpIGlzIGRvdWJseSBkZWZpY2llbnQ6Ci0rCQkJCSAgIEl0IGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGUgJyVuJyBkaXJlY3RpdmUsCi0rCQkJCSAgICphbmQqIGl0IHJldHVybnMgLTEgKHJhdGhlciB0aGFuIHRoZSBsZW5ndGgKLSsJCQkJICAgdGhhdCB3b3VsZCBoYXZlIGJlZW4gcmVxdWlyZWQpIHdoZW4gdGhlCi0rCQkJCSAgIGJ1ZmZlciBpcyB0b28gc21hbGwuICAqLwotKwkJCQlzaXplX3QgYmlnZ2VyX25lZWQgPQotKwkJCQkgIHhzdW0gKHh0aW1lcyAoYWxsb2NhdGVkLCAyKSwgMTIpOwotKwkJCQlFTlNVUkVfQUxMT0NBVElPTiAoYmlnZ2VyX25lZWQpOwotKwkJCQljb250aW51ZTsKLSsJCQkgICAgICB9Ci0rCQkJICAgIGVsc2UKLSsJCQkgICAgICBjb3VudCA9IHJldGNvdW50OwotKwkJCSAgfQotKwkJICAgICAgfQotKyNlbmRpZgotKwotKwkJICAgIC8qIEF0dGVtcHQgdG8gaGFuZGxlIGZhaWx1cmUuICAqLwotKwkJICAgIGlmIChjb3VudCA8IDApCi0rCQkgICAgICB7Ci0rCQkJaWYgKCEocmVzdWx0ID09IHJlc3VsdGJ1ZiB8fCByZXN1bHQgPT0gTlVMTCkpCi0rCQkJICBmcmVlIChyZXN1bHQpOwotKwkJCWlmIChidWZfbWFsbG9jZWQgIT0gTlVMTCkKLSsJCQkgIGZyZWUgKGJ1Zl9tYWxsb2NlZCk7Ci0rCQkJQ0xFQU5VUCAoKTsKLSsJCQllcnJubyA9IEVJTlZBTDsKLSsJCQlyZXR1cm4gTlVMTDsKLSsJCSAgICAgIH0KLSsKLSsjaWYgIVVTRV9TTlBSSU5URgotKwkJICAgIGlmIChjb3VudCA+PSB0bXBfbGVuZ3RoKQotKwkJICAgICAgLyogdG1wX2xlbmd0aCB3YXMgaW5jb3JyZWN0bHkgY2FsY3VsYXRlZCAtIGZpeCB0aGUKLSsJCQkgY29kZSBhYm92ZSEgICovCi0rCQkgICAgICBhYm9ydCAoKTsKLSsjZW5kaWYKLSsKLSsJCSAgICAvKiBNYWtlIHJvb20gZm9yIHRoZSByZXN1bHQuICAqLwotKwkJICAgIGlmIChjb3VudCA+PSBtYXhsZW4pCi0rCQkgICAgICB7Ci0rCQkJLyogTmVlZCBhdCBsZWFzdCBjb3VudCBieXRlcy4gIEJ1dCBhbGxvY2F0ZQotKwkJCSAgIHByb3BvcnRpb25hbGx5LCB0byBhdm9pZCBsb29waW5nIGV0ZXJuYWxseSBpZgotKwkJCSAgIHNucHJpbnRmKCkgcmVwb3J0cyBhIHRvbyBzbWFsbCBjb3VudC4gICovCi0rCQkJc2l6ZV90IG4gPQotKwkJCSAgeG1heCAoeHN1bSAobGVuZ3RoLCBjb3VudCksIHh0aW1lcyAoYWxsb2NhdGVkLCAyKSk7Ci0rCi0rCQkJRU5TVVJFX0FMTE9DQVRJT04gKG4pOwotKyNpZiBVU0VfU05QUklOVEYKLSsJCQljb250aW51ZTsKLSsjZW5kaWYKLSsJCSAgICAgIH0KLSsKLSsjaWYgVVNFX1NOUFJJTlRGCi0rCQkgICAgLyogVGhlIHNucHJpbnRmKCkgcmVzdWx0IGRpZCBmaXQuICAqLwotKyNlbHNlCi0rCQkgICAgLyogQXBwZW5kIHRoZSBzcHJpbnRmKCkgcmVzdWx0LiAgKi8KLSsJCSAgICBtZW1jcHkgKHJlc3VsdCArIGxlbmd0aCwgdG1wLCBjb3VudCAqIHNpemVvZiAoQ0hBUl9UKSk7Ci0rCQkgICAgaWYgKHRtcCAhPSB0bXBidWYpCi0rCQkgICAgICBmcmVlICh0bXApOwotKyNlbmRpZgotKwotKwkJICAgIGxlbmd0aCArPSBjb3VudDsKLSsJCSAgICBicmVhazsKLSsJCSAgfQotKwkgICAgICB9Ci0rCSAgfQotKyAgICAgIH0KLSsKLSsgICAgLyogQWRkIHRoZSBmaW5hbCBOVUwuICAqLwotKyAgICBFTlNVUkVfQUxMT0NBVElPTiAoeHN1bSAobGVuZ3RoLCAxKSk7Ci0rICAgIHJlc3VsdFtsZW5ndGhdID0gJ1wwJzsKLSsKLSsgICAgaWYgKHJlc3VsdCAhPSByZXN1bHRidWYgJiYgbGVuZ3RoICsgMSA8IGFsbG9jYXRlZCkKLSsgICAgICB7Ci0rCS8qIFNocmluayB0aGUgYWxsb2NhdGVkIG1lbW9yeSBpZiBwb3NzaWJsZS4gICovCi0rCUNIQVJfVCAqbWVtb3J5OwotKwotKwltZW1vcnkgPSAoQ0hBUl9UICopIHJlYWxsb2MgKHJlc3VsdCwgKGxlbmd0aCArIDEpICogc2l6ZW9mIChDSEFSX1QpKTsKLSsJaWYgKG1lbW9yeSAhPSBOVUxMKQotKwkgIHJlc3VsdCA9IG1lbW9yeTsKLSsgICAgICB9Ci0rCi0rICAgIGlmIChidWZfbWFsbG9jZWQgIT0gTlVMTCkKLSsgICAgICBmcmVlIChidWZfbWFsbG9jZWQpOwotKyAgICBDTEVBTlVQICgpOwotKyAgICAqbGVuZ3RocCA9IGxlbmd0aDsKLSsgICAgcmV0dXJuIHJlc3VsdDsKLSsKLSsgIG91dF9vZl9tZW1vcnk6Ci0rICAgIGlmICghKHJlc3VsdCA9PSByZXN1bHRidWYgfHwgcmVzdWx0ID09IE5VTEwpKQotKyAgICAgIGZyZWUgKHJlc3VsdCk7Ci0rICAgIGlmIChidWZfbWFsbG9jZWQgIT0gTlVMTCkKLSsgICAgICBmcmVlIChidWZfbWFsbG9jZWQpOwotKyAgb3V0X29mX21lbW9yeV8xOgotKyAgICBDTEVBTlVQICgpOwotKyAgICBlcnJubyA9IEVOT01FTTsKLSsgICAgcmV0dXJuIE5VTEw7Ci0rICB9Ci0rfQotKwotKyN1bmRlZiBTTlBSSU5URgotKyN1bmRlZiBVU0VfU05QUklOVEYKLSsjdW5kZWYgUFJJTlRGX1BBUlNFCi0rI3VuZGVmIERJUkVDVElWRVMKLSsjdW5kZWYgRElSRUNUSVZFCi0rI3VuZGVmIENIQVJfVAotKyN1bmRlZiBWQVNOUFJJTlRGCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvdmFzbnByaW50Zi5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3Zhc25wcmludGYuaAkyMDA0LTA5LTEyIDE0OjQwOjM0LjY2NzcwMDY2NCAtMDQwMAotQEAgLTAsMCArMSw2MSBAQAotKy8qIHZzcHJpbnRmIHdpdGggYXV0b21hdGljIG1lbW9yeSBhbGxvY2F0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMjAwMi0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZuZGVmIF9WQVNOUFJJTlRGX0gKLSsjZGVmaW5lIF9WQVNOUFJJTlRGX0gKLSsKLSsvKiBHZXQgdmFfbGlzdC4gICovCi0rI2luY2x1ZGUgPHN0ZGFyZy5oPgotKwotKy8qIEdldCBzaXplX3QuICAqLwotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsKLSsjaWZuZGVmIF9fYXR0cmlidXRlX18KLSsvKiBUaGlzIGZlYXR1cmUgaXMgYXZhaWxhYmxlIGluIGdjYyB2ZXJzaW9ucyAyLjUgYW5kIGxhdGVyLiAgKi8KLSsjIGlmIF9fR05VQ19fIDwgMiB8fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA8IDUpIHx8IF9fU1RSSUNUX0FOU0lfXwotKyMgIGRlZmluZSBfX2F0dHJpYnV0ZV9fKFNwZWMpIC8qIGVtcHR5ICovCi0rIyBlbmRpZgotKy8qIFRoZSBfXy1wcm90ZWN0ZWQgdmFyaWFudHMgb2YgYGZvcm1hdCcgYW5kIGBwcmludGYnIGF0dHJpYnV0ZXMKLSsgICBhcmUgYWNjZXB0ZWQgYnkgZ2NjIHZlcnNpb25zIDIuNi40IChlZmZlY3RpdmVseSAyLjcpIGFuZCBsYXRlci4gICovCi0rIyBpZiBfX0dOVUNfXyA8IDIgfHwgKF9fR05VQ19fID09IDIgJiYgX19HTlVDX01JTk9SX18gPCA3KQotKyMgIGRlZmluZSBfX2Zvcm1hdF9fIGZvcm1hdAotKyMgIGRlZmluZSBfX3ByaW50Zl9fIHByaW50ZgotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsjaWZkZWYJX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSsKLSsvKiBXcml0ZSBmb3JtYXR0ZWQgb3V0cHV0IHRvIGEgc3RyaW5nIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCB3aXRoIG1hbGxvYygpLgotKyAgIFlvdSBjYW4gcGFzcyBhIHByZWFsbG9jYXRlZCBidWZmZXIgZm9yIHRoZSByZXN1bHQgaW4gUkVTVUxUQlVGIGFuZCBpdHMKLSsgICBzaXplIGluICpMRU5HVEhQOyBvdGhlcndpc2UgeW91IHBhc3MgUkVTVUxUQlVGID0gTlVMTC4KLSsgICBJZiBzdWNjZXNzZnVsLCByZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIHN0cmluZyAodGhpcyBtYXkgYmUgPSBSRVNVTFRCVUYKLSsgICBpZiBubyBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIHdhcyBuZWNlc3NhcnkpIGFuZCBzZXQgKkxFTkdUSFAgdG8gdGhlCi0rICAgbnVtYmVyIG9mIHJlc3VsdGluZyBieXRlcywgZXhjbHVkaW5nIHRoZSB0cmFpbGluZyBOVUwuICBVcG9uIGVycm9yLCBzZXQKLSsgICBlcnJubyBhbmQgcmV0dXJuIE5VTEwuICAqLwotK2V4dGVybiBjaGFyICogYXNucHJpbnRmIChjaGFyICpyZXN1bHRidWYsIHNpemVfdCAqbGVuZ3RocCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi0rICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwotK2V4dGVybiBjaGFyICogdmFzbnByaW50ZiAoY2hhciAqcmVzdWx0YnVmLCBzaXplX3QgKmxlbmd0aHAsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQotKyAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKLSsKLSsjaWZkZWYJX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rCi0rI2VuZGlmIC8qIF9WQVNOUFJJTlRGX0ggKi8KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC92YXNud3ByaW50Zi5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3Zhc253cHJpbnRmLmgJMjAwNC0wOS0xMiAxNDo0MDozNC42NzM2OTk3NTIgLTA0MDAKLUBAIC0wLDAgKzEsNDYgQEAKLSsvKiB2c3dwcmludGYgd2l0aCBhdXRvbWF0aWMgbWVtb3J5IGFsbG9jYXRpb24uCi0rICAgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZm5kZWYgX1ZBU05XUFJJTlRGX0gKLSsjZGVmaW5lIF9WQVNOV1BSSU5URl9ICi0rCi0rLyogR2V0IHZhX2xpc3QuICAqLwotKyNpbmNsdWRlIDxzdGRhcmcuaD4KLSsKLSsvKiBHZXQgd2NoYXJfdCwgc2l6ZV90LiAgKi8KLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rCi0rI2lmZGVmCV9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0rCi0rLyogV3JpdGUgZm9ybWF0dGVkIG91dHB1dCB0byBhIHN0cmluZyBkeW5hbWljYWxseSBhbGxvY2F0ZWQgd2l0aCBtYWxsb2MoKS4KLSsgICBZb3UgY2FuIHBhc3MgYSBwcmVhbGxvY2F0ZWQgYnVmZmVyIGZvciB0aGUgcmVzdWx0IGluIFJFU1VMVEJVRiBhbmQgaXRzCi0rICAgc2l6ZSBpbiAqTEVOR1RIUDsgb3RoZXJ3aXNlIHlvdSBwYXNzIFJFU1VMVEJVRiA9IE5VTEwuCi0rICAgSWYgc3VjY2Vzc2Z1bCwgcmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBzdHJpbmcgKHRoaXMgbWF5IGJlID0gUkVTVUxUQlVGCi0rICAgaWYgbm8gZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbiB3YXMgbmVjZXNzYXJ5KSBhbmQgc2V0ICpMRU5HVEhQIHRvIHRoZQotKyAgIG51bWJlciBvZiByZXN1bHRpbmcgYnl0ZXMsIGV4Y2x1ZGluZyB0aGUgdHJhaWxpbmcgTlVMLiAgVXBvbiBlcnJvciwgc2V0Ci0rICAgZXJybm8gYW5kIHJldHVybiBOVUxMLiAgKi8KLStleHRlcm4gd2NoYXJfdCAqIGFzbndwcmludGYgKHdjaGFyX3QgKnJlc3VsdGJ1Ziwgc2l6ZV90ICpsZW5ndGhwLCBjb25zdCB3Y2hhcl90ICpmb3JtYXQsIC4uLik7Ci0rZXh0ZXJuIHdjaGFyX3QgKiB2YXNud3ByaW50ZiAod2NoYXJfdCAqcmVzdWx0YnVmLCBzaXplX3QgKmxlbmd0aHAsIGNvbnN0IHdjaGFyX3QgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKTsKLSsKLSsjaWZkZWYJX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rCi0rI2VuZGlmIC8qIF9WQVNOV1BSSU5URl9IICovCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvVkVSU0lPTgkxOTk4LTA0LTI2IDA5OjIyOjM3LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9WRVJTSU9OCTIwMDQtMDktMTIgMTQ6NDA6MzQuNjc5Njk4ODQwIC0wNDAwCi1AQCAtMSArMSBAQAotLUdOVSBnZXR0ZXh0IGxpYnJhcnkgZnJvbSBnZXR0ZXh0LTAuMTAuMzIKLStHTlUgZ2V0dGV4dCBsaWJyYXJ5IGZyb20gZ2V0dGV4dC0wLjE0LjEKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC93cHJpbnRmLXBhcnNlLmgJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvd3ByaW50Zi1wYXJzZS5oCTIwMDQtMDktMTIgMTQ6NDA6MzQuNjk1Njk2NDA4IC0wNDAwCi1AQCAtMCwwICsxLDc1IEBACi0rLyogUGFyc2UgcHJpbnRmIGZvcm1hdCBzdHJpbmcuCi0rICAgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAyLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZm5kZWYgX1dQUklOVEZfUEFSU0VfSAotKyNkZWZpbmUgX1dQUklOVEZfUEFSU0VfSAotKwotKyNpbmNsdWRlICJwcmludGYtYXJncy5oIgotKwotKwotKy8qIEZsYWdzICovCi0rI2RlZmluZSBGTEFHX0dST1VQCSAxCS8qICcgZmxhZyAqLwotKyNkZWZpbmUgRkxBR19MRUZUCSAyCS8qIC0gZmxhZyAqLwotKyNkZWZpbmUgRkxBR19TSE9XU0lHTgkgNAkvKiArIGZsYWcgKi8KLSsjZGVmaW5lIEZMQUdfU1BBQ0UJIDgJLyogc3BhY2UgZmxhZyAqLwotKyNkZWZpbmUgRkxBR19BTFQJMTYJLyogIyBmbGFnICovCi0rI2RlZmluZSBGTEFHX1pFUk8JMzIKLSsKLSsvKiBhcmdfaW5kZXggdmFsdWUgaW5kaWNhdGluZyB0aGF0IG5vIGFyZ3VtZW50IGlzIGNvbnN1bWVkLiAgKi8KLSsjZGVmaW5lIEFSR19OT05FCSh+KHNpemVfdCkwKQotKwotKy8qIEEgcGFyc2VkIGRpcmVjdGl2ZS4gICovCi0rdHlwZWRlZiBzdHJ1Y3QKLSt7Ci0rICBjb25zdCB3Y2hhcl90KiBkaXJfc3RhcnQ7Ci0rICBjb25zdCB3Y2hhcl90KiBkaXJfZW5kOwotKyAgaW50IGZsYWdzOwotKyAgY29uc3Qgd2NoYXJfdCogd2lkdGhfc3RhcnQ7Ci0rICBjb25zdCB3Y2hhcl90KiB3aWR0aF9lbmQ7Ci0rICBzaXplX3Qgd2lkdGhfYXJnX2luZGV4OwotKyAgY29uc3Qgd2NoYXJfdCogcHJlY2lzaW9uX3N0YXJ0OwotKyAgY29uc3Qgd2NoYXJfdCogcHJlY2lzaW9uX2VuZDsKLSsgIHNpemVfdCBwcmVjaXNpb25fYXJnX2luZGV4OwotKyAgd2NoYXJfdCBjb252ZXJzaW9uOyAvKiBkIGkgbyB1IHggWCBmIGUgRSBnIEcgYyBzIHAgbiBVICUgYnV0IG5vdCBDIFMgKi8KLSsgIHNpemVfdCBhcmdfaW5kZXg7Ci0rfQotK3djaGFyX3RfZGlyZWN0aXZlOwotKwotKy8qIEEgcGFyc2VkIGZvcm1hdCBzdHJpbmcuICAqLwotK3R5cGVkZWYgc3RydWN0Ci0rewotKyAgc2l6ZV90IGNvdW50OwotKyAgd2NoYXJfdF9kaXJlY3RpdmUgKmRpcjsKLSsgIHNpemVfdCBtYXhfd2lkdGhfbGVuZ3RoOwotKyAgc2l6ZV90IG1heF9wcmVjaXNpb25fbGVuZ3RoOwotK30KLSt3Y2hhcl90X2RpcmVjdGl2ZXM7Ci0rCi0rCi0rLyogUGFyc2VzIHRoZSBmb3JtYXQgc3RyaW5nLiAgRmlsbHMgaW4gdGhlIG51bWJlciBOIG9mIGRpcmVjdGl2ZXMsIGFuZCBmaWxscwotKyAgIGluIGRpcmVjdGl2ZXNbMF0sIC4uLiwgZGlyZWN0aXZlc1tOLTFdLCBhbmQgc2V0cyBkaXJlY3RpdmVzW05dLmRpcl9zdGFydAotKyAgIHRvIHRoZSBlbmQgb2YgdGhlIGZvcm1hdCBzdHJpbmcuICBBbHNvIGZpbGxzIGluIHRoZSBhcmdfdHlwZSBmaWVsZHMgb2YgdGhlCi0rICAgYXJndW1lbnRzIGFuZCB0aGUgbmVlZGVkIGNvdW50IG9mIGFyZ3VtZW50cy4gICovCi0rI2lmZGVmIFNUQVRJQwotK1NUQVRJQwotKyNlbHNlCi0rZXh0ZXJuCi0rI2VuZGlmCi0raW50IHdwcmludGZfcGFyc2UgKGNvbnN0IHdjaGFyX3QgKmZvcm1hdCwgd2NoYXJfdF9kaXJlY3RpdmVzICpkLCBhcmd1bWVudHMgKmEpOwotKwotKyNlbmRpZiAvKiBfV1BSSU5URl9QQVJTRV9IICovCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwveG9wZW4tbXNnLnNlZAkxOTk4LTA0LTI2IDA5OjIwOjUyLjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC94b3Blbi1tc2cuc2VkCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi1AQCAtMSwxMDQgKzAsMCBAQAotLSMgcG8ybXNnLnNlZCAtIENvbnZlcnQgVW5pZm9ydW0gc3R5bGUgLnBvIGZpbGUgdG8gWC9PcGVuIHN0eWxlIC5tc2cgZmlsZQotLSMgQ29weXJpZ2h0IChDKSAxOTk1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLSMgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgotLSMKLS0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLSMgYW55IGxhdGVyIHZlcnNpb24uCi0tIwotLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0jCi0tIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0tIwotLSMKLS0jIFRoZSBmaXJzdCBkaXJlY3RpdmUgaW4gdGhlIC5tc2cgc2hvdWxkIGJlIHRoZSBkZWZpbml0aW9uIG9mIHRoZQotLSMgbWVzc2FnZSBzZXQgbnVtYmVyLiAgV2UgdXNlIGFsd2F5cyBzZXQgbnVtYmVyIDEuCi0tIwotLTEgewotLSAgaVwKLS0kc2V0IDEgIyBBdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYnkgcG8ybXNnLnNlZAotLSAgaAotLSAgcy8uKi8wLwotLSAgeAotLX0KLS0jCi0tIyBXZSBjb3B5IGFsbCBjb21tZW50cyBpbnRvIHRoZSAubXNnIGZpbGUuICBQZXJoYXBzIHRoZXkgY2FuIGhlbHAuCi0tIwotLS9eIy8gcy9eI1sgCV0qLyQgL3AKLS0jCi0tIyBXZSBjb3B5IHRoZSBvcmlnaW5hbCBtZXNzYWdlIGFzIGEgY29tbWVudCBpbnRvIHRoZSAubXNnIGZpbGUuCi0tIwotLS9ebXNnaWQvIHsKLS0jIERvZXMgbm90IHdvcmsgbm93Ci0tIyAgLyIkLyEgewotLSMgICAgcy9cXCQvLwotLSMgICAgcy8kLyAuLi4gKG1vcmUgbGluZXMgZm9sbG93aW5nKSIvCi0tIyAgfQotLSAgcy9ebXNnaWRbIAldKiJcKC4qXCkiJC8kIE9yaWdpbmFsIE1lc3NhZ2U6IFwxLwotLSAgcAotLX0KLS0jCi0tIyBUaGUgLm1zZyBmaWxlIGNvbnRhaW5zLCBvdGhlciB0aGVuIHRoZSAucG8gZmlsZSwgb25seSB0aGUgdHJhbnNsYXRpb25zCi0tIyBidXQgZWFjaCBnaXZlbiBhIHVuaXF1ZSBJRC4gIFN0YXJ0aW5nIGZyb20gMSBhbmQgaW5jcmVtZW50aW5nIGJ5IDEgZm9yCi0tIyBlYWNoIG1lc3NhZ2Ugd2UgYXNzaWduIHRoZW0gdG8gdGhlIG1lc3NhZ2VzLgotLSMgSXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlIC5wbyBmaWxlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGNhdC1pZC10YmwuYyBmaWxlCi0tIyAod2l0aCBwby10by10YmwpIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgdXNlZCBoZXJlLiAgKEF0IGxlYXN0IHRoZSBvcmRlcgotLSMgb2YgZGVjbGFyYXRpb25zIG11c3Qgbm90IGJlIGNoYW5nZWQuKQotLSMKLS0vXm1zZ3N0ci8gewotLSAgcy9tc2dzdHJbIAldKiJcKC4qXCkiL1wxLwotLSAgeAotLSMgVGhlIGZvbGxvd2luZyBuaWNlIHNvbHV0aW9uIGlzIGJ5Ci0tIyBCcnVubyA8SGFpYmxlQG1hMnMyLm1hdGhlbWF0aWsudW5pLWthcmxzcnVoZS5kZT4KLS0gIHRkCi0tIyBJbmNyZW1lbnQgYSBkZWNpbWFsIG51bWJlciBpbiBwYXR0ZXJuIHNwYWNlLgotLSMgRmlyc3QgaGlkZSB0cmFpbGluZyBgOScgZGlnaXRzLgotLSAgOmQKLS0gIHMvOVwoXypcKSQvX1wxLwotLSAgdGQKLS0jIEFzc3VyZSBhdCBsZWFzdCBvbmUgZGlnaXQgaXMgYXZhaWxhYmxlLgotLSAgcy9eXChfKlwpJC8wXDEvCi0tIyBJbmNyZW1lbnQgdGhlIGxhc3QgZGlnaXQuCi0tICBzLzhcKF8qXCkkLzlcMS8KLS0gIHMvN1woXypcKSQvOFwxLwotLSAgcy82XChfKlwpJC83XDEvCi0tICBzLzVcKF8qXCkkLzZcMS8KLS0gIHMvNFwoXypcKSQvNVwxLwotLSAgcy8zXChfKlwpJC80XDEvCi0tICBzLzJcKF8qXCkkLzNcMS8KLS0gIHMvMVwoXypcKSQvMlwxLwotLSAgcy8wXChfKlwpJC8xXDEvCi0tIyBDb252ZXJ0IHRoZSBoaWRkZW4gYDknIGRpZ2l0cyB0byBgMCdzLgotLSAgcy9fLzAvZwotLSAgeAotLSMgQnJpbmcgdGhlIGxpbmUgaW4gdGhlIGZvcm1hdCBgPG51bWJlcj4gPG1lc3NhZ2U+JwotLSAgRwotLSAgcy9eW15cbl0qJC8mIC8KLS0gIHMvXCguKlwpXG5cKFswLTldKlwpL1wyIFwxLwotLSMgQ2xlYXIgZmxhZyBmcm9tIGxhc3Qgc3Vic3RpdHV0aW9uLgotLSAgdGIKLS0jIEFwcGVuZCB0aGUgbmV4dCBsaW5lLgotLSAgOmIKLS0gIE4KLS0jIExvb2sgd2hldGhlciBzZWNvbmQgcGFydCBpcyBhIGNvbnRpbnVhdGlvbiBsaW5lLgotLSAgcy9cKC4qXG5cKSJcKC4qXCkiL1wxXDIvCi0tIyBZZXMsIHRoZW4gYnJhbmNoLgotLSAgdGEKLS0gIFAKLS0gIEQKLS0jIE5vdGUgdGhhdCBgRCcgaW5jbHVkZXMgYSBqdW1wIHRvIHRoZSBzdGFydCEhCi0tIyBXZSBmb3VuZCBhIGNvbnRpbnVhdGlvbiBsaW5lLiAgQnV0IGJlZm9yZSBwcmludGluZyBpbnNlcnQgJ1wnLgotLSAgOmEKLS0gIHMvXCguKlwpXChcbi4qXCkvXDFcXFwyLwotLSAgUAotLSMgV2UgY2Fubm90IHVzZSB0aGUgc2VkIGNvbW1hbmQgYEQnIGhlcmUKLS0gIHMvLipcblwoLipcKS9cMS8KLS0gIHRiCi0tfQotLWQKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC94c2l6ZS5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3hzaXplLmgJMjAwNC0wOS0xMiAxNDo0MDozNC43MDA2OTU2NDggLTA0MDAKLUBAIC0wLDAgKzEsMTA5IEBACi0rLyogeHNpemUuaCAtLSBDaGVja2VkIHNpemVfdCBjb21wdXRhdGlvbnMuCi0rCi0rICAgQ29weXJpZ2h0IChDKSAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZuZGVmIF9YU0laRV9ICi0rI2RlZmluZSBfWFNJWkVfSAotKwotKy8qIEdldCBzaXplX3QuICAqLwotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsKLSsvKiBHZXQgU0laRV9NQVguICAqLwotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSsjaWYgSEFWRV9TVERJTlRfSAotKyMgaW5jbHVkZSA8c3RkaW50Lmg+Ci0rI2VuZGlmCi0rCi0rLyogVGhlIHNpemUgb2YgbWVtb3J5IG9iamVjdHMgaXMgb2Z0ZW4gY29tcHV0ZWQgdGhyb3VnaCBleHByZXNzaW9ucyBvZgotKyAgIHR5cGUgc2l6ZV90LiBFeGFtcGxlOgotKyAgICAgIHZvaWQqIHAgPSBtYWxsb2MgKGhlYWRlcl9zaXplICsgbiAqIGVsZW1lbnRfc2l6ZSkuCi0rICAgVGhlc2UgY29tcHV0YXRpb25zIGNhbiBsZWFkIHRvIG92ZXJmbG93LiAgV2hlbiB0aGlzIGhhcHBlbnMsIG1hbGxvYygpCi0rICAgcmV0dXJucyBhIHBpZWNlIG9mIG1lbW9yeSB0aGF0IGlzIHdheSB0b28gc21hbGwsIGFuZCB0aGUgcHJvZ3JhbSB0aGVuCi0rICAgY3Jhc2hlcyB3aGlsZSBhdHRlbXB0aW5nIHRvIGZpbGwgdGhlIG1lbW9yeS4KLSsgICBUbyBhdm9pZCB0aGlzLCB0aGUgZnVuY3Rpb25zIGFuZCBtYWNyb3MgaW4gdGhpcyBmaWxlIGNoZWNrIGZvciBvdmVyZmxvdy4KLSsgICBUaGUgY29udmVudGlvbiBpcyB0aGF0IFNJWkVfTUFYIHJlcHJlc2VudHMgb3ZlcmZsb3cuCi0rICAgbWFsbG9jIChTSVpFX01BWCkgaXMgbm90IGd1YXJhbnRlZWQgdG8gZmFpbCAtLSB0aGluayBvZiBhIG1hbGxvYwotKyAgIGltcGxlbWVudGF0aW9uIHRoYXQgdXNlcyBtbWFwIC0tLCBpdCdzIHJlY29tbWVuZGVkIHRvIHVzZSBzaXplX292ZXJmbG93X3AoKQotKyAgIG9yIHNpemVfaW5fYm91bmRzX3AoKSBiZWZvcmUgaW52b2tpbmcgbWFsbG9jKCkuCi0rICAgVGhlIGV4YW1wbGUgdGh1cyBiZWNvbWVzOgotKyAgICAgIHNpemVfdCBzaXplID0geHN1bSAoaGVhZGVyX3NpemUsIHh0aW1lcyAobiwgZWxlbWVudF9zaXplKSk7Ci0rICAgICAgdm9pZCAqcCA9IChzaXplX2luX2JvdW5kc19wIChzaXplKSA/IG1hbGxvYyAoc2l6ZSkgOiBOVUxMKTsKLSsqLwotKwotKy8qIENvbnZlcnQgYW4gYXJiaXRyYXJ5IHZhbHVlID49IDAgdG8gdHlwZSBzaXplX3QuICAqLwotKyNkZWZpbmUgeGNhc3Rfc2l6ZV90KE4pIFwKLSsgICgoTikgPD0gU0laRV9NQVggPyAoc2l6ZV90KSAoTikgOiBTSVpFX01BWCkKLSsKLSsvKiBTdW0gb2YgdHdvIHNpemVzLCB3aXRoIG92ZXJmbG93IGNoZWNrLiAgKi8KLStzdGF0aWMgaW5saW5lIHNpemVfdAotKyNpZiBfX0dOVUNfXyA+PSAzCi0rX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkKLSsjZW5kaWYKLSt4c3VtIChzaXplX3Qgc2l6ZTEsIHNpemVfdCBzaXplMikKLSt7Ci0rICBzaXplX3Qgc3VtID0gc2l6ZTEgKyBzaXplMjsKLSsgIHJldHVybiAoc3VtID49IHNpemUxID8gc3VtIDogU0laRV9NQVgpOwotK30KLSsKLSsvKiBTdW0gb2YgdGhyZWUgc2l6ZXMsIHdpdGggb3ZlcmZsb3cgY2hlY2suICAqLwotK3N0YXRpYyBpbmxpbmUgc2l6ZV90Ci0rI2lmIF9fR05VQ19fID49IDMKLStfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKQotKyNlbmRpZgotK3hzdW0zIChzaXplX3Qgc2l6ZTEsIHNpemVfdCBzaXplMiwgc2l6ZV90IHNpemUzKQotK3sKLSsgIHJldHVybiB4c3VtICh4c3VtIChzaXplMSwgc2l6ZTIpLCBzaXplMyk7Ci0rfQotKwotKy8qIFN1bSBvZiBmb3VyIHNpemVzLCB3aXRoIG92ZXJmbG93IGNoZWNrLiAgKi8KLStzdGF0aWMgaW5saW5lIHNpemVfdAotKyNpZiBfX0dOVUNfXyA+PSAzCi0rX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkKLSsjZW5kaWYKLSt4c3VtNCAoc2l6ZV90IHNpemUxLCBzaXplX3Qgc2l6ZTIsIHNpemVfdCBzaXplMywgc2l6ZV90IHNpemU0KQotK3sKLSsgIHJldHVybiB4c3VtICh4c3VtICh4c3VtIChzaXplMSwgc2l6ZTIpLCBzaXplMyksIHNpemU0KTsKLSt9Ci0rCi0rLyogTWF4aW11bSBvZiB0d28gc2l6ZXMsIHdpdGggb3ZlcmZsb3cgY2hlY2suICAqLwotK3N0YXRpYyBpbmxpbmUgc2l6ZV90Ci0rI2lmIF9fR05VQ19fID49IDMKLStfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKQotKyNlbmRpZgotK3htYXggKHNpemVfdCBzaXplMSwgc2l6ZV90IHNpemUyKQotK3sKLSsgIC8qIE5vIGV4cGxpY2l0IGNoZWNrIGlzIG5lZWRlZCBoZXJlLCBiZWNhdXNlIGZvciBhbnkgbjoKLSsgICAgIG1heCAoU0laRV9NQVgsIG4pID09IFNJWkVfTUFYIGFuZCBtYXggKG4sIFNJWkVfTUFYKSA9PSBTSVpFX01BWC4gICovCi0rICByZXR1cm4gKHNpemUxID49IHNpemUyID8gc2l6ZTEgOiBzaXplMik7Ci0rfQotKwotKy8qIE11bHRpcGxpY2F0aW9uIG9mIGEgY291bnQgd2l0aCBhbiBlbGVtZW50IHNpemUsIHdpdGggb3ZlcmZsb3cgY2hlY2suCi0rICAgVGhlIGNvdW50IG11c3QgYmUgPj0gMCBhbmQgdGhlIGVsZW1lbnQgc2l6ZSBtdXN0IGJlID4gMC4KLSsgICBUaGlzIGlzIGEgbWFjcm8sIG5vdCBhbiBpbmxpbmUgZnVuY3Rpb24sIHNvIHRoYXQgaXQgd29ya3MgY29ycmVjdGx5IGV2ZW4KLSsgICB3aGVuIE4gaXMgb2YgYSB3aWRlciB0dXBlIGFuZCBOID4gU0laRV9NQVguICAqLwotKyNkZWZpbmUgeHRpbWVzKE4sIEVMU0laRSkgXAotKyAgKChOKSA8PSBTSVpFX01BWCAvIChFTFNJWkUpID8gKHNpemVfdCkgKE4pICogKEVMU0laRSkgOiBTSVpFX01BWCkKLSsKLSsvKiBDaGVjayBmb3Igb3ZlcmZsb3cuICAqLwotKyNkZWZpbmUgc2l6ZV9vdmVyZmxvd19wKFNJWkUpIFwKLSsgICgoU0laRSkgPT0gU0laRV9NQVgpCi0rLyogQ2hlY2sgYWdhaW5zdCBvdmVyZmxvdy4gICovCi0rI2RlZmluZSBzaXplX2luX2JvdW5kc19wKFNJWkUpIFwKLSsgICgoU0laRSkgIT0gU0laRV9NQVgpCi0rCi0rI2VuZGlmIC8qIF9YU0laRV9IICovCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L0NoYW5nZUxvZwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvQ2hhbmdlTG9nCTIwMDQtMDktMTIgMTQ6NDA6MzUuMDU0NjQxODQwIC0wNDAwCi1AQCAtMCwwICsxLDMyIEBACi0rMjAwNC0wOS0xMiAgZ2V0dGV4dGl6ZSAgPGJ1Zy1nbnUtZ2V0dGV4dEBnbnUub3JnPgotKwotKwkqIGNvZGVzZXQubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGdldHRleHQubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGdsaWJjMjEubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGljb252Lm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBpbnRkaXYwLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBpbnRtYXgubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGludHR5cGVzLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBpbnR0eXBlc19oLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBpbnR0eXBlcy1wcmkubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGlzYy1wb3NpeC5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogbGNtZXNzYWdlLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBsaWItbGQubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGxpYi1saW5rLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBsaWItcHJlZml4Lm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBsb25nZG91YmxlLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBsb25nbG9uZy5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogbmxzLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBwby5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogcHJpbnRmLXBvc2l4Lm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBwcm9ndGVzdC5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogc2lnbmVkLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBzaXplX21heC5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogc3RkaW50X2gubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIHVpbnRtYXhfdC5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogdWxvbmdsb25nLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiB3Y2hhcl90Lm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiB3aW50X3QubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIHhzaXplLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBNYWtlZmlsZS5hbTogTmV3IGZpbGUuCi0rCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L2NvZGVzZXQubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L2NvZGVzZXQubTQJMjAwNC0wOS0xMiAxNDo0MDozNC44MjA2Nzc0MDggLTA0MDAKLUBAIC0wLDAgKzEsMjMgQEAKLSsjIGNvZGVzZXQubTQgc2VyaWFsIEFNMSAoZ2V0dGV4dC0wLjEwLjQwKQotK2RubCBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KLSsKLStBQ19ERUZVTihbQU1fTEFOR0lORk9fQ09ERVNFVF0sCi0rWwotKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBubF9sYW5naW5mbyBhbmQgQ09ERVNFVF0sIGFtX2N2X2xhbmdpbmZvX2NvZGVzZXQsCi0rICAgIFtBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxhbmdpbmZvLmg+XSwKLSsgICAgICBbY2hhciogY3MgPSBubF9sYW5naW5mbyhDT0RFU0VUKTtdLAotKyAgICAgIGFtX2N2X2xhbmdpbmZvX2NvZGVzZXQ9eWVzLAotKyAgICAgIGFtX2N2X2xhbmdpbmZvX2NvZGVzZXQ9bm8pCi0rICAgIF0pCi0rICBpZiB0ZXN0ICRhbV9jdl9sYW5naW5mb19jb2Rlc2V0ID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORShIQVZFX0xBTkdJTkZPX0NPREVTRVQsIDEsCi0rICAgICAgW0RlZmluZSBpZiB5b3UgaGF2ZSA8bGFuZ2luZm8uaD4gYW5kIG5sX2xhbmdpbmZvKENPREVTRVQpLl0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L2dldHRleHQubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L2dldHRleHQubTQJMjAwNC0wOS0xMiAxNDo0MDozNC44MjY2NzY0OTYgLTA0MDAKLUBAIC0wLDAgKzEsNDg3IEBACi0rIyBnZXR0ZXh0Lm00IHNlcmlhbCAyOCAoZ2V0dGV4dC0wLjEzKQotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotK2RubAotK2RubCBUaGlzIGZpbGUgY2FuIGNhbiBiZSB1c2VkIGluIHByb2plY3RzIHdoaWNoIGFyZSBub3QgYXZhaWxhYmxlIHVuZGVyCi0rZG5sIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBvciB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLStkbmwgTGljZW5zZSBidXQgd2hpY2ggc3RpbGwgd2FudCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHTlUgZ2V0dGV4dAotK2RubCBmdW5jdGlvbmFsaXR5LgotK2RubCBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgY29kZSBvZiB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpcyBjb3ZlcmVkCi0rZG5sIGJ5IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhbmQgdGhlIHJlc3Qgb2YgdGhlIEdOVQotK2RubCBnZXR0ZXh0IHBhY2thZ2UgcGFja2FnZSBpcyBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLStkbmwgVGhleSBhcmUgKm5vdCogaW4gdGhlIHB1YmxpYyBkb21haW4uCi0rCi0rZG5sIEF1dGhvcnM6Ci0rZG5sICAgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDE5OTUtMjAwMC4KLStkbmwgICBCcnVubyBIYWlibGUgPGhhaWJsZUBjbGlzcC5jb25zLm9yZz4sIDIwMDAtMjAwMy4KLSsKLStkbmwgTWFjcm8gdG8gYWRkIGZvciB1c2luZyBHTlUgZ2V0dGV4dC4KLSsKLStkbmwgVXNhZ2U6IEFNX0dOVV9HRVRURVhUKFtJTlRMU1lNQk9MXSwgW05FRURTWU1CT0xdLCBbSU5UTERJUl0pLgotK2RubCBJTlRMU1lNQk9MIGNhbiBiZSBvbmUgb2YgJ2V4dGVybmFsJywgJ25vLWxpYnRvb2wnLCAndXNlLWxpYnRvb2wnLiBUaGUKLStkbmwgICAgZGVmYXVsdCAoaWYgaXQgaXMgbm90IHNwZWNpZmllZCBvciBlbXB0eSkgaXMgJ25vLWxpYnRvb2wnLgotK2RubCAgICBJTlRMU1lNQk9MIHNob3VsZCBiZSAnZXh0ZXJuYWwnIGZvciBwYWNrYWdlcyB3aXRoIG5vIGludGwgZGlyZWN0b3J5LAotK2RubCAgICBhbmQgJ25vLWxpYnRvb2wnIG9yICd1c2UtbGlidG9vbCcgZm9yIHBhY2thZ2VzIHdpdGggYW4gaW50bCBkaXJlY3RvcnkuCi0rZG5sICAgIElmIElOVExTWU1CT0wgaXMgJ3VzZS1saWJ0b29sJywgdGhlbiBhIGxpYnRvb2wgbGlicmFyeQotK2RubCAgICAkKHRvcF9idWlsZGRpcikvaW50bC9saWJpbnRsLmxhIHdpbGwgYmUgY3JlYXRlZCAoc2hhcmVkIGFuZC9vciBzdGF0aWMsCi0rZG5sICAgIGRlcGVuZGluZyBvbiAtLXtlbmFibGUsZGlzYWJsZX0te3NoYXJlZCxzdGF0aWN9IGFuZCBvbiB0aGUgcHJlc2VuY2Ugb2YKLStkbmwgICAgQU0tRElTQUJMRS1TSEFSRUQpLiBJZiBJTlRMU1lNQk9MIGlzICduby1saWJ0b29sJywgYSBzdGF0aWMgbGlicmFyeQotK2RubCAgICAkKHRvcF9idWlsZGRpcikvaW50bC9saWJpbnRsLmEgd2lsbCBiZSBjcmVhdGVkLgotK2RubCBJZiBORUVEU1lNQk9MIGlzIHNwZWNpZmllZCBhbmQgaXMgJ25lZWQtbmdldHRleHQnLCB0aGVuIEdOVSBnZXR0ZXh0Ci0rZG5sICAgIGltcGxlbWVudGF0aW9ucyAoaW4gbGliYyBvciBsaWJpbnRsKSB3aXRob3V0IHRoZSBuZ2V0dGV4dCgpIGZ1bmN0aW9uCi0rZG5sICAgIHdpbGwgYmUgaWdub3JlZC4gIElmIE5FRURTWU1CT0wgaXMgc3BlY2lmaWVkIGFuZCBpcwotK2RubCAgICAnbmVlZC1mb3JtYXRzdHJpbmctbWFjcm9zJywgdGhlbiBHTlUgZ2V0dGV4dCBpbXBsZW1lbnRhdGlvbnMgdGhhdCBkb24ndAotK2RubCAgICBzdXBwb3J0IHRoZSBJU08gQyA5OSA8aW50dHlwZXMuaD4gZm9ybWF0c3RyaW5nIG1hY3JvcyB3aWxsIGJlIGlnbm9yZWQuCi0rZG5sIElOVExESVIgaXMgdXNlZCB0byBmaW5kIHRoZSBpbnRsIGxpYnJhcmllcy4gIElmIGVtcHR5LAotK2RubCAgICB0aGUgdmFsdWUgYCQodG9wX2J1aWxkZGlyKS9pbnRsLycgaXMgdXNlZC4KLStkbmwKLStkbmwgVGhlIHJlc3VsdCBvZiB0aGUgY29uZmlndXJhdGlvbiBpcyBvbmUgb2YgdGhyZWUgY2FzZXM6Ci0rZG5sIDEpIEdOVSBnZXR0ZXh0LCBhcyBpbmNsdWRlZCBpbiB0aGUgaW50bCBzdWJkaXJlY3RvcnksIHdpbGwgYmUgY29tcGlsZWQKLStkbmwgICAgYW5kIHVzZWQuCi0rZG5sICAgIENhdGFsb2cgZm9ybWF0OiBHTlUgLS0+IGluc3RhbGwgaW4gJChkYXRhZGlyKQotK2RubCAgICBDYXRhbG9nIGV4dGVuc2lvbjogLm1vIGFmdGVyIGluc3RhbGxhdGlvbiwgLmdtbyBpbiBzb3VyY2UgdHJlZQotK2RubCAyKSBHTlUgZ2V0dGV4dCBoYXMgYmVlbiBmb3VuZCBpbiB0aGUgc3lzdGVtJ3MgQyBsaWJyYXJ5LgotK2RubCAgICBDYXRhbG9nIGZvcm1hdDogR05VIC0tPiBpbnN0YWxsIGluICQoZGF0YWRpcikKLStkbmwgICAgQ2F0YWxvZyBleHRlbnNpb246IC5tbyBhZnRlciBpbnN0YWxsYXRpb24sIC5nbW8gaW4gc291cmNlIHRyZWUKLStkbmwgMykgTm8gaW50ZXJuYXRpb25hbGl6YXRpb24sIGFsd2F5cyB1c2UgRW5nbGlzaCBtc2dpZC4KLStkbmwgICAgQ2F0YWxvZyBmb3JtYXQ6IG5vbmUKLStkbmwgICAgQ2F0YWxvZyBleHRlbnNpb246IG5vbmUKLStkbmwgSWYgSU5UTFNZTUJPTCBpcyAnZXh0ZXJuYWwnLCBvbmx5IGNhc2VzIDIgYW5kIDMgY2FuIG9jY3VyLgotK2RubCBUaGUgdXNlIG9mIC5nbW8gaXMgaGlzdG9yaWNhbCAoaXQgd2FzIG5lZWRlZCB0byBhdm9pZCBvdmVyd3JpdGluZyB0aGUKLStkbmwgR05VIGZvcm1hdCBjYXRhbG9ncyB3aGVuIGJ1aWxkaW5nIG9uIGEgcGxhdGZvcm0gd2l0aCBhbiBYL09wZW4gZ2V0dGV4dCksCi0rZG5sIGJ1dCB3ZSBrZWVwIGl0IGluIG9yZGVyIG5vdCB0byBmb3JjZSBpcnJlbGV2YW50IGZpbGVuYW1lIGNoYW5nZXMgb24gdGhlCi0rZG5sIG1haW50YWluZXJzLgotK2RubAotK0FDX0RFRlVOKFtBTV9HTlVfR0VUVEVYVF0sCi0rWwotKyAgZG5sIEFyZ3VtZW50IGNoZWNraW5nLgotKyAgaWZlbHNlKFskMV0sIFtdLCAsIFtpZmVsc2UoWyQxXSwgW2V4dGVybmFsXSwgLCBbaWZlbHNlKFskMV0sIFtuby1saWJ0b29sXSwgLCBbaWZlbHNlKFskMV0sIFt1c2UtbGlidG9vbF0sICwKLSsgICAgW2VycnByaW50KFtFUlJPUjogaW52YWxpZCBmaXJzdCBhcmd1bWVudCB0byBBTV9HTlVfR0VUVEVYVAotK10pXSldKV0pXSkKLSsgIGlmZWxzZShbJDJdLCBbXSwgLCBbaWZlbHNlKFskMl0sIFtuZWVkLW5nZXR0ZXh0XSwgLCBbaWZlbHNlKFskMl0sIFtuZWVkLWZvcm1hdHN0cmluZy1tYWNyb3NdLCAsCi0rICAgIFtlcnJwcmludChbRVJST1I6IGludmFsaWQgc2Vjb25kIGFyZ3VtZW50IHRvIEFNX0dOVV9HRVRURVhUCi0rXSldKV0pXSkKLSsgIGRlZmluZShndF9pbmNsdWRlZF9pbnRsLCBpZmVsc2UoWyQxXSwgW2V4dGVybmFsXSwgW25vXSwgW3llc10pKQotKyAgZGVmaW5lKGd0X2xpYnRvb2xfc3VmZml4X3ByZWZpeCwgaWZlbHNlKFskMV0sIFt1c2UtbGlidG9vbF0sIFtsXSwgW10pKQotKwotKyAgQUNfUkVRVUlSRShbQU1fUE9fU1VCRElSU10pZG5sCi0rICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCBbCi0rICAgIEFDX1JFUVVJUkUoW0FNX0lOVExfU1VCRElSXSlkbmwKLSsgIF0pCi0rCi0rICBkbmwgUHJlcmVxdWlzaXRlcyBvZiBBQ19MSUJfTElOS0ZMQUdTX0JPRFkuCi0rICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJFUEFSRV9QUkVGSVhdKQotKyAgQUNfUkVRVUlSRShbQUNfTElCX1JQQVRIXSkKLSsKLSsgIGRubCBTb21ldGltZXMgbGliaW50bCByZXF1aXJlcyBsaWJpY29udiwgc28gZmlyc3Qgc2VhcmNoIGZvciBsaWJpY29udi4KLSsgIGRubCBJZGVhbGx5IHdlIHdvdWxkIGRvIHRoaXMgc2VhcmNoIG9ubHkgYWZ0ZXIgdGhlCi0rICBkbmwgICAgICBpZiB0ZXN0ICIkVVNFX05MUyIgPSAieWVzIjsgdGhlbgotKyAgZG5sICAgICAgICBpZiB0ZXN0ICIkZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmMiICE9ICJ5ZXMiOyB0aGVuCi0rICBkbmwgdGVzdHMuIEJ1dCBpZiBjb25maWd1cmUuaW4gaW52b2tlcyBBTV9JQ09OViBhZnRlciBBTV9HTlVfR0VUVEVYVAotKyAgZG5sIHRoZSBjb25maWd1cmUgc2NyaXB0IHdvdWxkIG5lZWQgdG8gY29udGFpbiB0aGUgc2FtZSBzaGVsbCBjb2RlCi0rICBkbmwgYWdhaW4sIG91dHNpZGUgYW55ICdpZicuIFRoZXJlIGFyZSB0d28gc29sdXRpb25zOgotKyAgZG5sIC0gSW52b2tlIEFNX0lDT05WX0xJTktGTEFHU19CT0RZIGhlcmUsIG91dHNpZGUgYW55ICdpZicuCi0rICBkbmwgLSBDb250cm9sIHRoZSBleHBhbnNpb25zIGluIG1vcmUgZGV0YWlsIHVzaW5nIEFDX1BST1ZJREVfSUZFTFNFLgotKyAgZG5sIFNpbmNlIEFDX1BST1ZJREVfSUZFTFNFIGlzIG9ubHkgaW4gYXV0b2NvbmYgPj0gMi41MiBhbmQgbm90Ci0rICBkbmwgZG9jdW1lbnRlZCwgd2UgYXZvaWQgaXQuCi0rICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCAsIFsKLSsgICAgQUNfUkVRVUlSRShbQU1fSUNPTlZfTElOS0ZMQUdTX0JPRFldKQotKyAgXSkKLSsKLSsgIGRubCBTZXQgVVNFX05MUy4KLSsgIEFNX05MUwotKwotKyAgaWZlbHNlKGd0X2luY2x1ZGVkX2ludGwsIHllcywgWwotKyAgICBCVUlMRF9JTkNMVURFRF9MSUJJTlRMPW5vCi0rICAgIFVTRV9JTkNMVURFRF9MSUJJTlRMPW5vCi0rICBdKQotKyAgTElCSU5UTD0KLSsgIExUTElCSU5UTD0KLSsgIFBPU1VCPQotKwotKyAgZG5sIElmIHdlIHVzZSBOTFMgZmlndXJlIG91dCB3aGF0IG1ldGhvZAotKyAgaWYgdGVzdCAiJFVTRV9OTFMiID0gInllcyI7IHRoZW4KLSsgICAgZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0PW5vCi0rICAgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsIFsKLSsgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgaW5jbHVkZWQgZ2V0dGV4dCBpcyByZXF1ZXN0ZWRdKQotKyAgICAgIEFDX0FSR19XSVRIKGluY2x1ZGVkLWdldHRleHQsCi0rICAgICAgICBbICAtLXdpdGgtaW5jbHVkZWQtZ2V0dGV4dCB1c2UgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgaW5jbHVkZWQgaGVyZV0sCi0rICAgICAgICBubHNfY3ZfZm9yY2VfdXNlX2dudV9nZXR0ZXh0PSR3aXRodmFsLAotKyAgICAgICAgbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dD1ubykKLSsgICAgICBBQ19NU0dfUkVTVUxUKCRubHNfY3ZfZm9yY2VfdXNlX2dudV9nZXR0ZXh0KQotKwotKyAgICAgIG5sc19jdl91c2VfZ251X2dldHRleHQ9IiRubHNfY3ZfZm9yY2VfdXNlX2dudV9nZXR0ZXh0IgotKyAgICAgIGlmIHRlc3QgIiRubHNfY3ZfZm9yY2VfdXNlX2dudV9nZXR0ZXh0IiAhPSAieWVzIjsgdGhlbgotKyAgICBdKQotKyAgICAgICAgZG5sIFVzZXIgZG9lcyBub3QgaW5zaXN0IG9uIHVzaW5nIEdOVSBOTFMgbGlicmFyeS4gIEZpZ3VyZSBvdXQgd2hhdAotKyAgICAgICAgZG5sIHRvIHVzZS4gIElmIEdOVSBnZXR0ZXh0IGlzIGF2YWlsYWJsZSB3ZSB1c2UgdGhpcy4gIEVsc2Ugd2UgaGF2ZQotKyAgICAgICAgZG5sIHRvIGZhbGwgYmFjayB0byBHTlUgTkxTIGxpYnJhcnkuCi0rCi0rICAgICAgICBkbmwgQWRkIGEgdmVyc2lvbiBudW1iZXIgdG8gdGhlIGNhY2hlIG1hY3Jvcy4KLSsgICAgICAgIGRlZmluZShbZ3RfYXBpX3ZlcnNpb25dLCBpZmVsc2UoWyQyXSwgW25lZWQtZm9ybWF0c3RyaW5nLW1hY3Jvc10sIDMsIGlmZWxzZShbJDJdLCBbbmVlZC1uZ2V0dGV4dF0sIDIsIDEpKSkKLSsgICAgICAgIGRlZmluZShbZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmNdLCBbZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0XWd0X2FwaV92ZXJzaW9uW19saWJjXSkKLSsgICAgICAgIGRlZmluZShbZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmludGxdLCBbZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0XWd0X2FwaV92ZXJzaW9uW19saWJpbnRsXSkKLSsKLSsgICAgICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgR05VIGdldHRleHQgaW4gbGliY10sIGd0X2N2X2Z1bmNfZ251Z2V0dGV4dF9saWJjLAotKyAgICAgICAgIFtBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYmludGwuaD4KLStdaWZlbHNlKFskMl0sIFtuZWVkLWZvcm1hdHN0cmluZy1tYWNyb3NdLAotK1sjaWZuZGVmIF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OCi0rI2RlZmluZSBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTihtYWpvcikgKChtYWpvcikgPT0gMCA/IDAgOiAtMSkKLSsjZW5kaWYKLStjaGFuZ2VxdW90ZSgsKWRubAotK3R5cGVkZWYgaW50IGFycmF5IFsyICogKF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OKDApID49IDEpIC0gMV07Ci0rY2hhbmdlcXVvdGUoWyxdKWRubAotK10sIFtdKVtleHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7Ci0rZXh0ZXJuIGludCAqX25sX2RvbWFpbl9iaW5kaW5ncztdLAotKyAgICAgICAgICAgIFtiaW5kdGV4dGRvbWFpbiAoIiIsICIiKTsKLStyZXR1cm4gKGludCkgZ2V0dGV4dCAoIiIpXWlmZWxzZShbJDJdLCBbbmVlZC1uZ2V0dGV4dF0sIFsgKyAoaW50KSBuZ2V0dGV4dCAoIiIsICIiLCAwKV0sIFtdKVsgKyBfbmxfbXNnX2NhdF9jbnRyICsgKl9ubF9kb21haW5fYmluZGluZ3NdLAotKyAgICAgICAgICAgIGd0X2N2X2Z1bmNfZ251Z2V0dGV4dF9saWJjPXllcywKLSsgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHRfbGliYz1ubyldKQotKwotKyAgICAgICAgaWYgdGVzdCAiJGd0X2N2X2Z1bmNfZ251Z2V0dGV4dF9saWJjIiAhPSAieWVzIjsgdGhlbgotKyAgICAgICAgICBkbmwgU29tZXRpbWVzIGxpYmludGwgcmVxdWlyZXMgbGliaWNvbnYsIHNvIGZpcnN0IHNlYXJjaCBmb3IgbGliaWNvbnYuCi0rICAgICAgICAgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsICwgWwotKyAgICAgICAgICAgIEFNX0lDT05WX0xJTksKLSsgICAgICAgICAgXSkKLSsgICAgICAgICAgZG5sIFNlYXJjaCBmb3IgbGliaW50bCBhbmQgZGVmaW5lIExJQklOVEwsIExUTElCSU5UTCBhbmQgSU5DSU5UTAotKyAgICAgICAgICBkbmwgYWNjb3JkaW5nbHkuIERvbid0IHVzZSBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW2ludGxdLFtpY29udl0pCi0rICAgICAgICAgIGRubCBiZWNhdXNlIHRoYXQgd291bGQgYWRkICItbGljb252IiB0byBMSUJJTlRMIGFuZCBMVExJQklOVEwKLSsgICAgICAgICAgZG5sIGV2ZW4gaWYgbGliaWNvbnYgZG9lc24ndCBleGlzdC4KLSsgICAgICAgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFtpbnRsXSkKLSsgICAgICAgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBHTlUgZ2V0dGV4dCBpbiBsaWJpbnRsXSwKLSsgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHRfbGliaW50bCwKLSsgICAgICAgICAgIFtndF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0rICAgICAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkSU5DSU5UTCIKLSsgICAgICAgICAgICBndF9zYXZlX0xJQlM9IiRMSUJTIgotKyAgICAgICAgICAgIExJQlM9IiRMSUJTICRMSUJJTlRMIgotKyAgICAgICAgICAgIGRubCBOb3cgc2VlIHdoZXRoZXIgbGliaW50bCBleGlzdHMgYW5kIGRvZXMgbm90IGRlcGVuZCBvbiBsaWJpY29udi4KLSsgICAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYmludGwuaD4KLStdaWZlbHNlKFskMl0sIFtuZWVkLWZvcm1hdHN0cmluZy1tYWNyb3NdLAotK1sjaWZuZGVmIF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OCi0rI2RlZmluZSBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTihtYWpvcikgKChtYWpvcikgPT0gMCA/IDAgOiAtMSkKLSsjZW5kaWYKLStjaGFuZ2VxdW90ZSgsKWRubAotK3R5cGVkZWYgaW50IGFycmF5IFsyICogKF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OKDApID49IDEpIC0gMV07Ci0rY2hhbmdlcXVvdGUoWyxdKWRubAotK10sIFtdKVtleHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7Ci0rZXh0ZXJuCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rIkMiCi0rI2VuZGlmCi0rY29uc3QgY2hhciAqX25sX2V4cGFuZF9hbGlhcyAoKTtdLAotKyAgICAgICAgICAgICAgW2JpbmR0ZXh0ZG9tYWluICgiIiwgIiIpOwotK3JldHVybiAoaW50KSBnZXR0ZXh0ICgiIildaWZlbHNlKFskMl0sIFtuZWVkLW5nZXR0ZXh0XSwgWyArIChpbnQpIG5nZXR0ZXh0ICgiIiwgIiIsIDApXSwgW10pWyArIF9ubF9tc2dfY2F0X2NudHIgKyAqX25sX2V4cGFuZF9hbGlhcyAoMCldLAotKyAgICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmludGw9eWVzLAotKyAgICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmludGw9bm8pCi0rICAgICAgICAgICAgZG5sIE5vdyBzZWUgd2hldGhlciBsaWJpbnRsIGV4aXN0cyBhbmQgZGVwZW5kcyBvbiBsaWJpY29udi4KLSsgICAgICAgICAgICBpZiB0ZXN0ICIkZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmludGwiICE9IHllcyAmJiB0ZXN0IC1uICIkTElCSUNPTlYiOyB0aGVuCi0rICAgICAgICAgICAgICBMSUJTPSIkTElCUyAkTElCSUNPTlYiCi0rICAgICAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYmludGwuaD4KLStdaWZlbHNlKFskMl0sIFtuZWVkLWZvcm1hdHN0cmluZy1tYWNyb3NdLAotK1sjaWZuZGVmIF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OCi0rI2RlZmluZSBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTihtYWpvcikgKChtYWpvcikgPT0gMCA/IDAgOiAtMSkKLSsjZW5kaWYKLStjaGFuZ2VxdW90ZSgsKWRubAotK3R5cGVkZWYgaW50IGFycmF5IFsyICogKF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OKDApID49IDEpIC0gMV07Ci0rY2hhbmdlcXVvdGUoWyxdKWRubAotK10sIFtdKVtleHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7Ci0rZXh0ZXJuCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rIkMiCi0rI2VuZGlmCi0rY29uc3QgY2hhciAqX25sX2V4cGFuZF9hbGlhcyAoKTtdLAotKyAgICAgICAgICAgICAgICBbYmluZHRleHRkb21haW4gKCIiLCAiIik7Ci0rcmV0dXJuIChpbnQpIGdldHRleHQgKCIiKV1pZmVsc2UoWyQyXSwgW25lZWQtbmdldHRleHRdLCBbICsgKGludCkgbmdldHRleHQgKCIiLCAiIiwgMCldLCBbXSlbICsgX25sX21zZ19jYXRfY250ciArICpfbmxfZXhwYW5kX2FsaWFzICgwKV0sCi0rICAgICAgICAgICAgICAgW0xJQklOVEw9IiRMSUJJTlRMICRMSUJJQ09OViIKLSsgICAgICAgICAgICAgICAgTFRMSUJJTlRMPSIkTFRMSUJJTlRMICRMVExJQklDT05WIgotKyAgICAgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHRfbGliaW50bD15ZXMKLSsgICAgICAgICAgICAgICBdKQotKyAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgQ1BQRkxBR1M9IiRndF9zYXZlX0NQUEZMQUdTIgotKyAgICAgICAgICAgIExJQlM9IiRndF9zYXZlX0xJQlMiXSkKLSsgICAgICAgIGZpCi0rCi0rICAgICAgICBkbmwgSWYgYW4gYWxyZWFkeSBwcmVzZW50IG9yIHByZWluc3RhbGxlZCBHTlUgZ2V0dGV4dCgpIGlzIGZvdW5kLAotKyAgICAgICAgZG5sIHVzZSBpdC4gIEJ1dCBpZiB0aGlzIG1hY3JvIGlzIHVzZWQgaW4gR05VIGdldHRleHQsIGFuZCBHTlUKLSsgICAgICAgIGRubCBnZXR0ZXh0IGlzIGFscmVhZHkgcHJlaW5zdGFsbGVkIGluIGxpYmludGwsIHdlIHVwZGF0ZSB0aGlzCi0rICAgICAgICBkbmwgbGliaW50bC4gIChDZi4gdGhlIGluc3RhbGwgcnVsZSBpbiBpbnRsL01ha2VmaWxlLmluLikKLSsgICAgICAgIGlmIHRlc3QgIiRndF9jdl9mdW5jX2dudWdldHRleHRfbGliYyIgPSAieWVzIiBcCi0rICAgICAgICAgICB8fCB7IHRlc3QgIiRndF9jdl9mdW5jX2dudWdldHRleHRfbGliaW50bCIgPSAieWVzIiBcCi0rICAgICAgICAgICAgICAgICYmIHRlc3QgIiRQQUNLQUdFIiAhPSBnZXR0ZXh0LXJ1bnRpbWUgXAotKyAgICAgICAgICAgICAgICAmJiB0ZXN0ICIkUEFDS0FHRSIgIT0gZ2V0dGV4dC10b29sczsgfTsgdGhlbgotKyAgICAgICAgICBndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQ9eWVzCi0rICAgICAgICBlbHNlCi0rICAgICAgICAgIGRubCBSZXNldCB0aGUgdmFsdWVzIHNldCBieSBzZWFyY2hpbmcgZm9yIGxpYmludGwuCi0rICAgICAgICAgIExJQklOVEw9Ci0rICAgICAgICAgIExUTElCSU5UTD0KLSsgICAgICAgICAgSU5DSU5UTD0KLSsgICAgICAgIGZpCi0rCi0rICAgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsIFsKLSsgICAgICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiICE9ICJ5ZXMiOyB0aGVuCi0rICAgICAgICAgIGRubCBHTlUgZ2V0dGV4dCBpcyBub3QgZm91bmQgaW4gdGhlIEMgbGlicmFyeS4KLSsgICAgICAgICAgZG5sIEZhbGwgYmFjayBvbiBpbmNsdWRlZCBHTlUgZ2V0dGV4dCBsaWJyYXJ5LgotKyAgICAgICAgICBubHNfY3ZfdXNlX2dudV9nZXR0ZXh0PXllcwotKyAgICAgICAgZmkKLSsgICAgICBmaQotKwotKyAgICAgIGlmIHRlc3QgIiRubHNfY3ZfdXNlX2dudV9nZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCi0rICAgICAgICBkbmwgTWFyayBhY3Rpb25zIHVzZWQgdG8gZ2VuZXJhdGUgR05VIE5MUyBsaWJyYXJ5LgotKyAgICAgICAgQlVJTERfSU5DTFVERURfTElCSU5UTD15ZXMKLSsgICAgICAgIFVTRV9JTkNMVURFRF9MSUJJTlRMPXllcwotKyAgICAgICAgTElCSU5UTD0iaWZlbHNlKFskM10sW10sXCR7dG9wX2J1aWxkZGlyfS9pbnRsLFskM10pL2xpYmludGwuW11ndF9saWJ0b29sX3N1ZmZpeF9wcmVmaXhbXWEgJExJQklDT05WIgotKyAgICAgICAgTFRMSUJJTlRMPSJpZmVsc2UoWyQzXSxbXSxcJHt0b3BfYnVpbGRkaXJ9L2ludGwsWyQzXSkvbGliaW50bC5bXWd0X2xpYnRvb2xfc3VmZml4X3ByZWZpeFtdYSAkTFRMSUJJQ09OViIKLSsgICAgICAgIExJQlM9YGVjaG8gIiAkTElCUyAiIHwgc2VkIC1lICdzLyAtbGludGwgLyAvJyAtZSAncy9eIC8vJyAtZSAncy8gJC8vJ2AKLSsgICAgICBmaQotKwotKyAgICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyIgXAotKyAgICAgICAgIHx8IHRlc3QgIiRubHNfY3ZfdXNlX2dudV9nZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCi0rICAgICAgICBkbmwgTWFyayBhY3Rpb25zIHRvIHVzZSBHTlUgZ2V0dGV4dCB0b29scy4KLSsgICAgICAgIENBVE9CSkVYVD0uZ21vCi0rICAgICAgZmkKLSsgICAgXSkKLSsKLSsgICAgaWYgdGVzdCAiJGd0X3VzZV9wcmVpbnN0YWxsZWRfZ251Z2V0dGV4dCIgPSAieWVzIiBcCi0rICAgICAgIHx8IHRlc3QgIiRubHNfY3ZfdXNlX2dudV9nZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCi0rICAgICAgQUNfREVGSU5FKEVOQUJMRV9OTFMsIDEsCi0rICAgICAgICBbRGVmaW5lIHRvIDEgaWYgdHJhbnNsYXRpb24gb2YgcHJvZ3JhbSBtZXNzYWdlcyB0byB0aGUgdXNlcidzIG5hdGl2ZSBsYW5ndWFnZQotKyAgIGlzIHJlcXVlc3RlZC5dKQotKyAgICBlbHNlCi0rICAgICAgVVNFX05MUz1ubwotKyAgICBmaQotKyAgZmkKLSsKLSsgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byB1c2UgTkxTXSkKLSsgIEFDX01TR19SRVNVTFQoWyRVU0VfTkxTXSkKLSsgIGlmIHRlc3QgIiRVU0VfTkxTIiA9ICJ5ZXMiOyB0aGVuCi0rICAgIEFDX01TR19DSEVDS0lORyhbd2hlcmUgdGhlIGdldHRleHQgZnVuY3Rpb24gY29tZXMgZnJvbV0pCi0rICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyI7IHRoZW4KLSsgICAgICBpZiB0ZXN0ICIkZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmludGwiID0gInllcyI7IHRoZW4KLSsgICAgICAgIGd0X3NvdXJjZT0iZXh0ZXJuYWwgbGliaW50bCIKLSsgICAgICBlbHNlCi0rICAgICAgICBndF9zb3VyY2U9ImxpYmMiCi0rICAgICAgZmkKLSsgICAgZWxzZQotKyAgICAgIGd0X3NvdXJjZT0iaW5jbHVkZWQgaW50bCBkaXJlY3RvcnkiCi0rICAgIGZpCi0rICAgIEFDX01TR19SRVNVTFQoWyRndF9zb3VyY2VdKQotKyAgZmkKLSsKLSsgIGlmIHRlc3QgIiRVU0VfTkxTIiA9ICJ5ZXMiOyB0aGVuCi0rCi0rICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyI7IHRoZW4KLSsgICAgICBpZiB0ZXN0ICIkZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmludGwiID0gInllcyI7IHRoZW4KLSsgICAgICAgIEFDX01TR19DSEVDS0lORyhbaG93IHRvIGxpbmsgd2l0aCBsaWJpbnRsXSkKLSsgICAgICAgIEFDX01TR19SRVNVTFQoWyRMSUJJTlRMXSkKLSsgICAgICAgIEFDX0xJQl9BUFBFTkRUT1ZBUihbQ1BQRkxBR1NdLCBbJElOQ0lOVExdKQotKyAgICAgIGZpCi0rCi0rICAgICAgZG5sIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBTb21lIHBhY2thZ2VzIG1heSBiZSB1c2luZyB0aGlzLgotKyAgICAgIEFDX0RFRklORShIQVZFX0dFVFRFWFQsIDEsCi0rICAgICAgIFtEZWZpbmUgaWYgdGhlIEdOVSBnZXR0ZXh0KCkgZnVuY3Rpb24gaXMgYWxyZWFkeSBwcmVzZW50IG9yIHByZWluc3RhbGxlZC5dKQotKyAgICAgIEFDX0RFRklORShIQVZFX0RDR0VUVEVYVCwgMSwKLSsgICAgICAgW0RlZmluZSBpZiB0aGUgR05VIGRjZ2V0dGV4dCgpIGZ1bmN0aW9uIGlzIGFscmVhZHkgcHJlc2VudCBvciBwcmVpbnN0YWxsZWQuXSkKLSsgICAgZmkKLSsKLSsgICAgZG5sIFdlIG5lZWQgdG8gcHJvY2VzcyB0aGUgcG8vIGRpcmVjdG9yeS4KLSsgICAgUE9TVUI9cG8KLSsgIGZpCi0rCi0rICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCBbCi0rICAgIGRubCBJZiB0aGlzIGlzIHVzZWQgaW4gR05VIGdldHRleHQgd2UgaGF2ZSB0byBzZXQgQlVJTERfSU5DTFVERURfTElCSU5UTAotKyAgICBkbmwgdG8gJ3llcycgYmVjYXVzZSBzb21lIG9mIHRoZSB0ZXN0c3VpdGUgcmVxdWlyZXMgaXQuCi0rICAgIGlmIHRlc3QgIiRQQUNLQUdFIiA9IGdldHRleHQtcnVudGltZSB8fCB0ZXN0ICIkUEFDS0FHRSIgPSBnZXR0ZXh0LXRvb2xzOyB0aGVuCi0rICAgICAgQlVJTERfSU5DTFVERURfTElCSU5UTD15ZXMKLSsgICAgZmkKLSsKLSsgICAgZG5sIE1ha2UgYWxsIHZhcmlhYmxlcyB3ZSB1c2Uga25vd24gdG8gYXV0b2NvbmYuCi0rICAgIEFDX1NVQlNUKEJVSUxEX0lOQ0xVREVEX0xJQklOVEwpCi0rICAgIEFDX1NVQlNUKFVTRV9JTkNMVURFRF9MSUJJTlRMKQotKyAgICBBQ19TVUJTVChDQVRPQkpFWFQpCi0rCi0rICAgIGRubCBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gU29tZSBjb25maWd1cmUuaW5zIG1heSBiZSB1c2luZyB0aGlzLgotKyAgICBubHNfY3ZfaGVhZGVyX2ludGw9Ci0rICAgIG5sc19jdl9oZWFkZXJfbGliZ3Q9Ci0rCi0rICAgIGRubCBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gU29tZSBNYWtlZmlsZXMgbWF5IGJlIHVzaW5nIHRoaXMuCi0rICAgIERBVEFESVJOQU1FPXNoYXJlCi0rICAgIEFDX1NVQlNUKERBVEFESVJOQU1FKQotKwotKyAgICBkbmwgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFNvbWUgTWFrZWZpbGVzIG1heSBiZSB1c2luZyB0aGlzLgotKyAgICBJTlNUT0JKRVhUPS5tbwotKyAgICBBQ19TVUJTVChJTlNUT0JKRVhUKQotKwotKyAgICBkbmwgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFNvbWUgTWFrZWZpbGVzIG1heSBiZSB1c2luZyB0aGlzLgotKyAgICBHRU5DQVQ9Z2VuY2F0Ci0rICAgIEFDX1NVQlNUKEdFTkNBVCkKLSsKLSsgICAgZG5sIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBTb21lIE1ha2VmaWxlcyBtYXkgYmUgdXNpbmcgdGhpcy4KLSsgICAgaWYgdGVzdCAiJFVTRV9JTkNMVURFRF9MSUJJTlRMIiA9IHllczsgdGhlbgotKyAgICAgIElOVExPQkpTPSJcJChHRVRUT0JKUykiCi0rICAgIGZpCi0rICAgIEFDX1NVQlNUKElOVExPQkpTKQotKwotKyAgICBkbmwgRW5hYmxlIGxpYnRvb2wgc3VwcG9ydCBpZiB0aGUgc3Vycm91bmRpbmcgcGFja2FnZSB3aXNoZXMgaXQuCi0rICAgIElOVExfTElCVE9PTF9TVUZGSVhfUFJFRklYPWd0X2xpYnRvb2xfc3VmZml4X3ByZWZpeAotKyAgICBBQ19TVUJTVChJTlRMX0xJQlRPT0xfU1VGRklYX1BSRUZJWCkKLSsgIF0pCi0rCi0rICBkbmwgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFNvbWUgTWFrZWZpbGVzIG1heSBiZSB1c2luZyB0aGlzLgotKyAgSU5UTExJQlM9IiRMSUJJTlRMIgotKyAgQUNfU1VCU1QoSU5UTExJQlMpCi0rCi0rICBkbmwgTWFrZSBhbGwgZG9jdW1lbnRlZCB2YXJpYWJsZXMga25vd24gdG8gYXV0b2NvbmYuCi0rICBBQ19TVUJTVChMSUJJTlRMKQotKyAgQUNfU1VCU1QoTFRMSUJJTlRMKQotKyAgQUNfU1VCU1QoUE9TVUIpCi0rXSkKLSsKLSsKLStkbmwgQ2hlY2tzIGZvciBhbGwgcHJlcmVxdWlzaXRlcyBvZiB0aGUgaW50bCBzdWJkaXJlY3RvcnksCi0rZG5sIGV4Y2VwdCBmb3IgSU5UTF9MSUJUT09MX1NVRkZJWF9QUkVGSVggKGFuZCBwb3NzaWJseSBMSUJUT09MKSwgSU5UTE9CSlMsCi0rZG5sICAgICAgICAgICAgVVNFX0lOQ0xVREVEX0xJQklOVEwsIEJVSUxEX0lOQ0xVREVEX0xJQklOVEwuCi0rQUNfREVGVU4oW0FNX0lOVExfU1VCRElSXSwKLStbCi0rICBBQ19SRVFVSVJFKFtBQ19QUk9HX0lOU1RBTExdKWRubAotKyAgQUNfUkVRVUlSRShbQU1fTUtJTlNUQUxMRElSU10pZG5sCi0rICBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FDX1BST0dfUkFOTElCXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FDX0lTQ19QT1NJWF0pZG5sCi0rICBBQ19SRVFVSVJFKFtBQ19IRUFERVJfU1REQ10pZG5sCi0rICBBQ19SRVFVSVJFKFtBQ19DX0NPTlNUXSlkbmwKLSsgIEFDX1JFUVVJUkUoW2JoX0NfU0lHTkVEXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FDX0NfSU5MSU5FXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FDX1RZUEVfT0ZGX1RdKWRubAotKyAgQUNfUkVRVUlSRShbQUNfVFlQRV9TSVpFX1RdKWRubAotKyAgQUNfUkVRVUlSRShbam1fQUNfVFlQRV9MT05HX0xPTkddKWRubAotKyAgQUNfUkVRVUlSRShbZ3RfVFlQRV9MT05HRE9VQkxFXSlkbmwKLSsgIEFDX1JFUVVJUkUoW2d0X1RZUEVfV0NIQVJfVF0pZG5sCi0rICBBQ19SRVFVSVJFKFtndF9UWVBFX1dJTlRfVF0pZG5sCi0rICBBQ19SRVFVSVJFKFtqbV9BQ19IRUFERVJfSU5UVFlQRVNfSF0pCi0rICBBQ19SRVFVSVJFKFtqbV9BQ19IRUFERVJfU1RESU5UX0hdKQotKyAgQUNfUkVRVUlSRShbZ3RfVFlQRV9JTlRNQVhfVF0pCi0rICBBQ19SRVFVSVJFKFtndF9QUklOVEZfUE9TSVhdKQotKyAgQUNfUkVRVUlSRShbQUNfRlVOQ19BTExPQ0FdKWRubAotKyAgQUNfUkVRVUlSRShbQUNfRlVOQ19NTUFQXSlkbmwKLSsgIEFDX1JFUVVJUkUoW2ptX0dMSUJDMjFdKWRubAotKyAgQUNfUkVRVUlSRShbZ3RfSU5URElWMF0pZG5sCi0rICBBQ19SRVFVSVJFKFtqbV9BQ19UWVBFX1VJTlRNQVhfVF0pZG5sCi0rICBBQ19SRVFVSVJFKFtndF9IRUFERVJfSU5UVFlQRVNfSF0pZG5sCi0rICBBQ19SRVFVSVJFKFtndF9JTlRUWVBFU19QUkldKWRubAotKyAgQUNfUkVRVUlSRShbZ2xfWFNJWkVdKWRubAotKwotKyAgQUNfQ0hFQ0tfVFlQRShbcHRyZGlmZl90XSwgLAotKyAgICBbQUNfREVGSU5FKFtwdHJkaWZmX3RdLCBbbG9uZ10sCi0rICAgICAgIFtEZWZpbmUgYXMgdGhlIHR5cGUgb2YgdGhlIHJlc3VsdCBvZiBzdWJ0cmFjdGluZyB0d28gcG9pbnRlcnMsIGlmIHRoZSBzeXN0ZW0gZG9lc24ndCBkZWZpbmUgaXQuXSkKLSsgICAgXSkKLSsgIEFDX0NIRUNLX0hFQURFUlMoW2FyZ3ouaCBsaW1pdHMuaCBsb2NhbGUuaCBubF90eXBlcy5oIG1hbGxvYy5oIHN0ZGRlZi5oIFwKLStzdGRsaWIuaCBzdHJpbmcuaCB1bmlzdGQuaCBzeXMvcGFyYW0uaF0pCi0rICBBQ19DSEVDS19GVU5DUyhbYXNwcmludGYgZndwcmludGYgZ2V0Y3dkIGdldGVnaWQgZ2V0ZXVpZCBnZXRnaWQgZ2V0dWlkIFwKLSttZW1wY3B5IG11bm1hcCBwdXRlbnYgc2V0ZW52IHNldGxvY2FsZSBzbnByaW50ZiBzdHBjcHkgc3RyY2FzZWNtcCBzdHJkdXAgXAotK3N0cnRvdWwgdHNlYXJjaCB3Y3NsZW4gX19hcmd6X2NvdW50IF9fYXJnel9zdHJpbmdpZnkgX19hcmd6X25leHQgXAotK19fZnNldGxvY2tpbmddKQotKwotKyAgZG5sIFVzZSB0aGUgX3NucHJpbnRmIGZ1bmN0aW9uIG9ubHkgaWYgaXQgaXMgZGVjbGFyZWQgKGJlY2F1c2Ugb24gTmV0QlNEIGl0Ci0rICBkbmwgaXMgZGVmaW5lZCBhcyBhIHdlYWsgYWxpYXMgb2Ygc25wcmludGY7IHdlIHByZWZlciB0byB1c2UgdGhlIGxhdHRlcikuCi0rICBndF9DSEVDS19ERUNMKF9zbnByaW50ZiwgWyNpbmNsdWRlIDxzdGRpby5oPl0pCi0rICBndF9DSEVDS19ERUNMKF9zbndwcmludGYsIFsjaW5jbHVkZSA8c3RkaW8uaD5dKQotKwotKyAgZG5sIFVzZSB0aGUgKl91bmxvY2tlZCBmdW5jdGlvbnMgb25seSBpZiB0aGV5IGFyZSBkZWNsYXJlZC4KLSsgIGRubCAoYmVjYXVzZSBzb21lIG9mIHRoZW0gd2VyZSBkZWZpbmVkIHdpdGhvdXQgYmVpbmcgZGVjbGFyZWQgaW4gU29sYXJpcwotKyAgZG5sIDIuNS4xIGJ1dCB3ZXJlIHJlbW92ZWQgaW4gU29sYXJpcyAyLjYsIHdoZXJlYXMgd2Ugd2FudCBiaW5hcmllcyBidWlsdAotKyAgZG5sIG9uIFNvbGFyaXMgMi41LjEgdG8gcnVuIG9uIFNvbGFyaXMgMi42KS4KLSsgIGRubCBEb24ndCB1c2UgQUNfQ0hFQ0tfREVDTFMgYmVjYXVzZSBpdCBpc24ndCBzdXBwb3J0ZWQgaW4gYXV0b2NvbmYtMi4xMy4KLSsgIGd0X0NIRUNLX0RFQ0woZmVvZl91bmxvY2tlZCwgWyNpbmNsdWRlIDxzdGRpby5oPl0pCi0rICBndF9DSEVDS19ERUNMKGZnZXRzX3VubG9ja2VkLCBbI2luY2x1ZGUgPHN0ZGlvLmg+XSkKLSsgIGd0X0NIRUNLX0RFQ0woZ2V0Y191bmxvY2tlZCwgWyNpbmNsdWRlIDxzdGRpby5oPl0pCi0rCi0rICBjYXNlICRndF9jdl9mdW5jX3ByaW50Zl9wb3NpeCBpbgotKyAgICAqeWVzKSBIQVZFX1BPU0lYX1BSSU5URj0xIDs7Ci0rICAgICopIEhBVkVfUE9TSVhfUFJJTlRGPTAgOzsKLSsgIGVzYWMKLSsgIEFDX1NVQlNUKFtIQVZFX1BPU0lYX1BSSU5URl0pCi0rICBpZiB0ZXN0ICIkYWNfY3ZfZnVuY19hc3ByaW50ZiIgPSB5ZXM7IHRoZW4KLSsgICAgSEFWRV9BU1BSSU5URj0xCi0rICBlbHNlCi0rICAgIEhBVkVfQVNQUklOVEY9MAotKyAgZmkKLSsgIEFDX1NVQlNUKFtIQVZFX0FTUFJJTlRGXSkKLSsgIGlmIHRlc3QgIiRhY19jdl9mdW5jX3NucHJpbnRmIiA9IHllczsgdGhlbgotKyAgICBIQVZFX1NOUFJJTlRGPTEKLSsgIGVsc2UKLSsgICAgSEFWRV9TTlBSSU5URj0wCi0rICBmaQotKyAgQUNfU1VCU1QoW0hBVkVfU05QUklOVEZdKQotKyAgaWYgdGVzdCAiJGFjX2N2X2Z1bmNfd3ByaW50ZiIgPSB5ZXM7IHRoZW4KLSsgICAgSEFWRV9XUFJJTlRGPTEKLSsgIGVsc2UKLSsgICAgSEFWRV9XUFJJTlRGPTAKLSsgIGZpCi0rICBBQ19TVUJTVChbSEFWRV9XUFJJTlRGXSkKLSsKLSsgIEFNX0lDT05WCi0rICBBTV9MQU5HSU5GT19DT0RFU0VUCi0rICBpZiB0ZXN0ICRhY19jdl9oZWFkZXJfbG9jYWxlX2ggPSB5ZXM7IHRoZW4KLSsgICAgQU1fTENfTUVTU0FHRVMKLSsgIGZpCi0rCi0rICBkbmwgaW50bC9wbHVyYWwuYyBpcyBnZW5lcmF0ZWQgZnJvbSBpbnRsL3BsdXJhbC55LiBJdCByZXF1aXJlcyBiaXNvbiwKLSsgIGRubCBiZWNhdXNlIHBsdXJhbC55IHVzZXMgYmlzb24gc3BlY2lmaWMgZmVhdHVyZXMuIEl0IHJlcXVpcmVzIGF0IGxlYXN0Ci0rICBkbmwgYmlzb24tMS4yNiBiZWNhdXNlIGVhcmxpZXIgdmVyc2lvbnMgZ2VuZXJhdGUgYSBwbHVyYWwuYyB0aGF0IGRvZXNuJ3QKLSsgIGRubCBjb21waWxlLgotKyAgZG5sIGJpc29uIGlzIG9ubHkgbmVlZGVkIGZvciB0aGUgbWFpbnRhaW5lciAod2hvIHRvdWNoZXMgcGx1cmFsLnkpLiBCdXQgaW4KLSsgIGRubCBvcmRlciB0byBhdm9pZCBzZXBhcmF0ZSBNYWtlZmlsZXMgb3IgLS1lbmFibGUtbWFpbnRhaW5lci1tb2RlLCB3ZSBwdXQKLSsgIGRubCB0aGUgcnVsZSBpbiBnZW5lcmFsIE1ha2VmaWxlLiBOb3csIHNvbWUgcGVvcGxlIGNhcmVsZXNzbHkgdG91Y2ggdGhlCi0rICBkbmwgZmlsZXMgb3IgaGF2ZSBhIGJyb2tlbiAibWFrZSIgcHJvZ3JhbSwgaGVuY2UgdGhlIHBsdXJhbC5jIHJ1bGUgd2lsbAotKyAgZG5sIHNvbWV0aW1lcyBmaXJlLiBUbyBhdm9pZCBhbiBlcnJvciwgZGVmaW5lcyBCSVNPTiB0byAiOiIgaWYgaXQgaXMgbm90Ci0rICBkbmwgcHJlc2VudCBvciB0b28gb2xkLgotKyAgQUNfQ0hFQ0tfUFJPR1MoW0lOVExCSVNPTl0sIFtiaXNvbl0pCi0rICBpZiB0ZXN0IC16ICIkSU5UTEJJU09OIjsgdGhlbgotKyAgICBhY192ZXJjX2ZhaWw9eWVzCi0rICBlbHNlCi0rICAgIGRubCBGb3VuZCBpdCwgbm93IGNoZWNrIHRoZSB2ZXJzaW9uLgotKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW3ZlcnNpb24gb2YgYmlzb25dKQotK2NoYW5nZXF1b3RlKDw8LD4+KWRubAotKyAgICBhY19wcm9nX3ZlcnNpb249YCRJTlRMQklTT04gLS12ZXJzaW9uIDI+JjEgfCBzZWQgLW4gJ3MvXi4qR05VIEJpc29uLiogXChbMC05XSpcLlswLTkuXSpcKS4qJC9cMS9wJ2AKLSsgICAgY2FzZSAkYWNfcHJvZ192ZXJzaW9uIGluCi0rICAgICAgJycpIGFjX3Byb2dfdmVyc2lvbj0idi4gPy4/PywgYmFkIjsgYWNfdmVyY19mYWlsPXllczs7Ci0rICAgICAgMS4yWzYtOV0qIHwgMS5bMy05XVswLTldKiB8IFsyLTldLiopCi0rY2hhbmdlcXVvdGUoWyxdKWRubAotKyAgICAgICAgIGFjX3Byb2dfdmVyc2lvbj0iJGFjX3Byb2dfdmVyc2lvbiwgb2siOyBhY192ZXJjX2ZhaWw9bm87OwotKyAgICAgICopIGFjX3Byb2dfdmVyc2lvbj0iJGFjX3Byb2dfdmVyc2lvbiwgYmFkIjsgYWNfdmVyY19mYWlsPXllczs7Ci0rICAgIGVzYWMKLSsgICAgQUNfTVNHX1JFU1VMVChbJGFjX3Byb2dfdmVyc2lvbl0pCi0rICBmaQotKyAgaWYgdGVzdCAkYWNfdmVyY19mYWlsID0geWVzOyB0aGVuCi0rICAgIElOVExCSVNPTj06Ci0rICBmaQotK10pCi0rCi0rCi0rZG5sIGd0X0NIRUNLX0RFQ0woRlVOQywgSU5DTFVERVMpCi0rZG5sIENoZWNrIHdoZXRoZXIgYSBmdW5jdGlvbiBpcyBkZWNsYXJlZC4KLStBQ19ERUZVTihbZ3RfQ0hFQ0tfREVDTF0sCi0rWwotKyAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgJDEgaXMgZGVjbGFyZWRdLCBhY19jdl9oYXZlX2RlY2xfJDEsCi0rICAgIFtBQ19UUllfQ09NUElMRShbJDJdLCBbCi0rI2lmbmRlZiAkMQotKyAgY2hhciAqcCA9IChjaGFyICopICQxOwotKyNlbmRpZgotK10sIGFjX2N2X2hhdmVfZGVjbF8kMT15ZXMsIGFjX2N2X2hhdmVfZGVjbF8kMT1ubyldKQotKyAgaWYgdGVzdCAkYWNfY3ZfaGF2ZV9kZWNsXyQxID0geWVzOyB0aGVuCi0rICAgIGd0X3ZhbHVlPTEKLSsgIGVsc2UKLSsgICAgZ3RfdmFsdWU9MAotKyAgZmkKLSsgIEFDX0RFRklORV9VTlFVT1RFRChbSEFWRV9ERUNMX110cmFuc2xpdCgkMSwgW2Etel0sIFtBLVpdKSwgWyRndF92YWx1ZV0sCi0rICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYCQxJywgYW5kIHRvIDAgaWYgeW91IGRvbid0Ll0pCi0rXSkKLSsKLSsKLStkbmwgVXNhZ2U6IEFNX0dOVV9HRVRURVhUX1ZFUlNJT04oW2dldHRleHQtdmVyc2lvbl0pCi0rQUNfREVGVU4oW0FNX0dOVV9HRVRURVhUX1ZFUlNJT05dLCBbXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvZ2xpYmMyMS5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvZ2xpYmMyMS5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0LjgzMzY3NTQzMiAtMDQwMAotQEAgLTAsMCArMSwzMiBAQAotKyMgZ2xpYmMyMS5tNCBzZXJpYWwgMiAoZmlsZXV0aWxzLTQuMS4zLCBnZXR0ZXh0LTAuMTAuNDApCi0rZG5sIENvcHlyaWdodCAoQykgMjAwMC0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rIyBUZXN0IGZvciB0aGUgR05VIEMgTGlicmFyeSwgdmVyc2lvbiAyLjEgb3IgbmV3ZXIuCi0rIyBGcm9tIEJydW5vIEhhaWJsZS4KLSsKLStBQ19ERUZVTihbam1fR0xJQkMyMV0sCi0rICBbCi0rICAgIEFDX0NBQ0hFX0NIRUNLKHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBMaWJyYXJ5IDIuMSBvciBuZXdlciwKLSsgICAgICBhY19jdl9nbnVfbGlicmFyeV8yXzEsCi0rICAgICAgW0FDX0VHUkVQX0NQUChbTHVja3kgR05VIHVzZXJdLAotKwlbCi0rI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0rI2lmZGVmIF9fR05VX0xJQlJBUllfXwotKyAjaWYgKF9fR0xJQkNfXyA9PSAyICYmIF9fR0xJQkNfTUlOT1JfXyA+PSAxKSB8fCAoX19HTElCQ19fID4gMikKLSsgIEx1Y2t5IEdOVSB1c2VyCi0rICNlbmRpZgotKyNlbmRpZgotKwldLAotKwlhY19jdl9nbnVfbGlicmFyeV8yXzE9eWVzLAotKwlhY19jdl9nbnVfbGlicmFyeV8yXzE9bm8pCi0rICAgICAgXQotKyAgICApCi0rICAgIEFDX1NVQlNUKEdMSUJDMjEpCi0rICAgIEdMSUJDMjE9IiRhY19jdl9nbnVfbGlicmFyeV8yXzEiCi0rICBdCi0rKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9pY29udi5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvaWNvbnYubTQJMjAwNC0wOS0xMiAxNDo0MDozNC44Mzk2NzQ1MjAgLTA0MDAKLUBAIC0wLDAgKzEsMTAzIEBACi0rIyBpY29udi5tNCBzZXJpYWwgQU00IChnZXR0ZXh0LTAuMTEuMykKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBCcnVubyBIYWlibGUuCi0rCi0rQUNfREVGVU4oW0FNX0lDT05WX0xJTktGTEFHU19CT0RZXSwKLStbCi0rICBkbmwgUHJlcmVxdWlzaXRlcyBvZiBBQ19MSUJfTElOS0ZMQUdTX0JPRFkuCi0rICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJFUEFSRV9QUkVGSVhdKQotKyAgQUNfUkVRVUlSRShbQUNfTElCX1JQQVRIXSkKLSsKLSsgIGRubCBTZWFyY2ggZm9yIGxpYmljb252IGFuZCBkZWZpbmUgTElCSUNPTlYsIExUTElCSUNPTlYgYW5kIElOQ0lDT05WCi0rICBkbmwgYWNjb3JkaW5nbHkuCi0rICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW2ljb252XSkKLStdKQotKwotK0FDX0RFRlVOKFtBTV9JQ09OVl9MSU5LXSwKLStbCi0rICBkbmwgU29tZSBzeXN0ZW1zIGhhdmUgaWNvbnYgaW4gbGliYywgc29tZSBoYXZlIGl0IGluIGxpYmljb252IChPU0YvMSBhbmQKLSsgIGRubCB0aG9zZSB3aXRoIHRoZSBzdGFuZGFsb25lIHBvcnRhYmxlIEdOVSBsaWJpY29udiBpbnN0YWxsZWQpLgotKwotKyAgZG5sIFNlYXJjaCBmb3IgbGliaWNvbnYgYW5kIGRlZmluZSBMSUJJQ09OViwgTFRMSUJJQ09OViBhbmQgSU5DSUNPTlYKLSsgIGRubCBhY2NvcmRpbmdseS4KLSsgIEFDX1JFUVVJUkUoW0FNX0lDT05WX0xJTktGTEFHU19CT0RZXSkKLSsKLSsgIGRubCBBZGQgJElOQ0lDT05WIHRvIENQUEZMQUdTIGJlZm9yZSBwZXJmb3JtaW5nIHRoZSBmb2xsb3dpbmcgY2hlY2tzLAotKyAgZG5sIGJlY2F1c2UgaWYgdGhlIHVzZXIgaGFzIGluc3RhbGxlZCBsaWJpY29udiBhbmQgbm90IGRpc2FibGVkIGl0cyB1c2UKLSsgIGRubCB2aWEgLS13aXRob3V0LWxpYmljb252LXByZWZpeCwgaGUgd2FudHMgdG8gdXNlIGl0LiBUaGUgZmlyc3QKLSsgIGRubCBBQ19UUllfTElOSyB3aWxsIHRoZW4gZmFpbCwgdGhlIHNlY29uZCBBQ19UUllfTElOSyB3aWxsIHN1Y2NlZWQuCi0rICBhbV9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0rICBBQ19MSUJfQVBQRU5EVE9WQVIoW0NQUEZMQUdTXSwgWyRJTkNJQ09OVl0pCi0rCi0rICBBQ19DQUNIRV9DSEVDSyhmb3IgaWNvbnYsIGFtX2N2X2Z1bmNfaWNvbnYsIFsKLSsgICAgYW1fY3ZfZnVuY19pY29udj0ibm8sIGNvbnNpZGVyIGluc3RhbGxpbmcgR05VIGxpYmljb252IgotKyAgICBhbV9jdl9saWJfaWNvbnY9bm8KLSsgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8aWNvbnYuaD5dLAotKyAgICAgIFtpY29udl90IGNkID0gaWNvbnZfb3BlbigiIiwiIik7Ci0rICAgICAgIGljb252KGNkLE5VTEwsTlVMTCxOVUxMLE5VTEwpOwotKyAgICAgICBpY29udl9jbG9zZShjZCk7XSwKLSsgICAgICBhbV9jdl9mdW5jX2ljb252PXllcykKLSsgICAgaWYgdGVzdCAiJGFtX2N2X2Z1bmNfaWNvbnYiICE9IHllczsgdGhlbgotKyAgICAgIGFtX3NhdmVfTElCUz0iJExJQlMiCi0rICAgICAgTElCUz0iJExJQlMgJExJQklDT05WIgotKyAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPGljb252Lmg+XSwKLSsgICAgICAgIFtpY29udl90IGNkID0gaWNvbnZfb3BlbigiIiwiIik7Ci0rICAgICAgICAgaWNvbnYoY2QsTlVMTCxOVUxMLE5VTEwsTlVMTCk7Ci0rICAgICAgICAgaWNvbnZfY2xvc2UoY2QpO10sCi0rICAgICAgICBhbV9jdl9saWJfaWNvbnY9eWVzCi0rICAgICAgICBhbV9jdl9mdW5jX2ljb252PXllcykKLSsgICAgICBMSUJTPSIkYW1fc2F2ZV9MSUJTIgotKyAgICBmaQotKyAgXSkKLSsgIGlmIHRlc3QgIiRhbV9jdl9mdW5jX2ljb252IiA9IHllczsgdGhlbgotKyAgICBBQ19ERUZJTkUoSEFWRV9JQ09OViwgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgaWNvbnYoKSBmdW5jdGlvbi5dKQotKyAgZmkKLSsgIGlmIHRlc3QgIiRhbV9jdl9saWJfaWNvbnYiID0geWVzOyB0aGVuCi0rICAgIEFDX01TR19DSEVDS0lORyhbaG93IHRvIGxpbmsgd2l0aCBsaWJpY29udl0pCi0rICAgIEFDX01TR19SRVNVTFQoWyRMSUJJQ09OVl0pCi0rICBlbHNlCi0rICAgIGRubCBJZiAkTElCSUNPTlYgZGlkbid0IGxlYWQgdG8gYSB1c2FibGUgbGlicmFyeSwgd2UgZG9uJ3QgbmVlZCAkSU5DSUNPTlYKLSsgICAgZG5sIGVpdGhlci4KLSsgICAgQ1BQRkxBR1M9IiRhbV9zYXZlX0NQUEZMQUdTIgotKyAgICBMSUJJQ09OVj0KLSsgICAgTFRMSUJJQ09OVj0KLSsgIGZpCi0rICBBQ19TVUJTVChMSUJJQ09OVikKLSsgIEFDX1NVQlNUKExUTElCSUNPTlYpCi0rXSkKLSsKLStBQ19ERUZVTihbQU1fSUNPTlZdLAotK1sKLSsgIEFNX0lDT05WX0xJTksKLSsgIGlmIHRlc3QgIiRhbV9jdl9mdW5jX2ljb252IiA9IHllczsgdGhlbgotKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBpY29udiBkZWNsYXJhdGlvbl0pCi0rICAgIEFDX0NBQ0hFX1ZBTChhbV9jdl9wcm90b19pY29udiwgWwotKyAgICAgIEFDX1RSWV9DT01QSUxFKFsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPGljb252Lmg+Ci0rZXh0ZXJuCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rIkMiCi0rI2VuZGlmCi0rI2lmIGRlZmluZWQoX19TVERDX18pIHx8IGRlZmluZWQoX19jcGx1c3BsdXMpCi0rc2l6ZV90IGljb252IChpY29udl90IGNkLCBjaGFyICogKmluYnVmLCBzaXplX3QgKmluYnl0ZXNsZWZ0LCBjaGFyICogKm91dGJ1Ziwgc2l6ZV90ICpvdXRieXRlc2xlZnQpOwotKyNlbHNlCi0rc2l6ZV90IGljb252KCk7Ci0rI2VuZGlmCi0rXSwgW10sIGFtX2N2X3Byb3RvX2ljb252X2FyZzE9IiIsIGFtX2N2X3Byb3RvX2ljb252X2FyZzE9ImNvbnN0IikKLSsgICAgICBhbV9jdl9wcm90b19pY29udj0iZXh0ZXJuIHNpemVfdCBpY29udiAoaWNvbnZfdCBjZCwgJGFtX2N2X3Byb3RvX2ljb252X2FyZzEgY2hhciAqICppbmJ1Ziwgc2l6ZV90ICppbmJ5dGVzbGVmdCwgY2hhciAqICpvdXRidWYsIHNpemVfdCAqb3V0Ynl0ZXNsZWZ0KTsiXSkKLSsgICAgYW1fY3ZfcHJvdG9faWNvbnY9YGVjaG8gIlskXWFtX2N2X3Byb3RvX2ljb252IiB8IHRyIC1zICcgJyB8IHNlZCAtZSAncy8oIC8oLydgCi0rICAgIEFDX01TR19SRVNVTFQoWyRde2FjX3Q6LQotKyAgICAgICAgIH1bJF1hbV9jdl9wcm90b19pY29udikKLSsgICAgQUNfREVGSU5FX1VOUVVPVEVEKElDT05WX0NPTlNULCAkYW1fY3ZfcHJvdG9faWNvbnZfYXJnMSwKLSsgICAgICBbRGVmaW5lIGFzIGNvbnN0IGlmIHRoZSBkZWNsYXJhdGlvbiBvZiBpY29udigpIG5lZWRzIGNvbnN0Ll0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L2ludGRpdjAubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L2ludGRpdjAubTQJMjAwNC0wOS0xMiAxNDo0MDozNC44NDU2NzM2MDggLTA0MDAKLUBAIC0wLDAgKzEsNzIgQEAKLSsjIGludGRpdjAubTQgc2VyaWFsIDEgKGdldHRleHQtMC4xMS4zKQotK2RubCBDb3B5cmlnaHQgKEMpIDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBCcnVubyBIYWlibGUuCi0rCi0rQUNfREVGVU4oW2d0X0lOVERJVjBdLAotK1sKLSsgIEFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAotKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAotKwotKyAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgaW50ZWdlciBkaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyBTSUdGUEVdLAotKyAgICBndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZSwKLSsgICAgWwotKyAgICAgIEFDX1RSWV9SVU4oWwotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c2lnbmFsLmg+Ci0rCi0rc3RhdGljIHZvaWQKLSsjaWZkZWYgX19jcGx1c3BsdXMKLStzaWdmcGVfaGFuZGxlciAoaW50IHNpZykKLSsjZWxzZQotK3NpZ2ZwZV9oYW5kbGVyIChzaWcpIGludCBzaWc7Ci0rI2VuZGlmCi0rewotKyAgLyogRXhpdCB3aXRoIGNvZGUgMCBpZiBTSUdGUEUsIHdpdGggY29kZSAxIGlmIGFueSBvdGhlciBzaWduYWwuICAqLwotKyAgZXhpdCAoc2lnICE9IFNJR0ZQRSk7Ci0rfQotKwotK2ludCB4ID0gMTsKLStpbnQgeSA9IDA7Ci0raW50IHo7Ci0raW50IG5hbjsKLSsKLStpbnQgbWFpbiAoKQotK3sKLSsgIHNpZ25hbCAoU0lHRlBFLCBzaWdmcGVfaGFuZGxlcik7Ci0rLyogSVJJWCBhbmQgQUlYICh3aGVuICJ4bGMgLXFjaGVjayIgaXMgdXNlZCkgeWllbGQgc2lnbmFsIFNJR1RSQVAuICAqLwotKyNpZiAoZGVmaW5lZCAoX19zZ2kpIHx8IGRlZmluZWQgKF9BSVgpKSAmJiBkZWZpbmVkIChTSUdUUkFQKQotKyAgc2lnbmFsIChTSUdUUkFQLCBzaWdmcGVfaGFuZGxlcik7Ci0rI2VuZGlmCi0rLyogTGludXgvU1BBUkMgeWllbGRzIHNpZ25hbCBTSUdJTEwuICAqLwotKyNpZiBkZWZpbmVkIChfX3NwYXJjX18pICYmIGRlZmluZWQgKF9fbGludXhfXykKLSsgIHNpZ25hbCAoU0lHSUxMLCBzaWdmcGVfaGFuZGxlcik7Ci0rI2VuZGlmCi0rCi0rICB6ID0geCAvIHk7Ci0rICBuYW4gPSB5IC8geTsKLSsgIGV4aXQgKDEpOwotK30KLStdLCBndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZT15ZXMsIGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlPW5vLAotKyAgICAgICAgWwotKyAgICAgICAgICAjIEd1ZXNzIGJhc2VkIG9uIHRoZSBDUFUuCi0rICAgICAgICAgIGNhc2UgIiRob3N0X2NwdSIgaW4KLSsgICAgICAgICAgICBhbHBoYSogfCBpWzM0NTY3XTg2IHwgbTY4ayB8IHMzOTAqKQotKyAgICAgICAgICAgICAgZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGU9Imd1ZXNzaW5nIHllcyI7OwotKyAgICAgICAgICAgICopCi0rICAgICAgICAgICAgICBndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZT0iZ3Vlc3Npbmcgbm8iOzsKLSsgICAgICAgICAgZXNhYwotKyAgICAgICAgXSkKLSsgICAgXSkKLSsgIGNhc2UgIiRndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZSIgaW4KLSsgICAgKnllcykgdmFsdWU9MTs7Ci0rICAgICopIHZhbHVlPTA7OwotKyAgZXNhYwotKyAgQUNfREVGSU5FX1VOUVVPVEVEKElOVERJVjBfUkFJU0VTX1NJR0ZQRSwgJHZhbHVlLAotKyAgICBbRGVmaW5lIGlmIGludGVnZXIgZGl2aXNpb24gYnkgemVybyByYWlzZXMgc2lnbmFsIFNJR0ZQRS5dKQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L2ludG1heC5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvaW50bWF4Lm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuODU1NjcyMDg4IC0wNDAwCi1AQCAtMCwwICsxLDMyIEBACi0rIyBpbnRtYXgubTQgc2VyaWFsIDEgKGdldHRleHQtMC4xMikKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBCcnVubyBIYWlibGUuCi0rZG5sIFRlc3Qgd2hldGhlciB0aGUgc3lzdGVtIGhhcyB0aGUgJ2ludG1heF90JyB0eXBlLCBidXQgZG9uJ3QgYXR0ZW1wdCB0bwotK2RubCBmaW5kIGEgcmVwbGFjZW1lbnQgaWYgaXQgaXMgbGFja2luZy4KLSsKLStBQ19ERUZVTihbZ3RfVFlQRV9JTlRNQVhfVF0sCi0rWwotKyAgQUNfUkVRVUlSRShbam1fQUNfSEVBREVSX0lOVFRZUEVTX0hdKQotKyAgQUNfUkVRVUlSRShbam1fQUNfSEVBREVSX1NURElOVF9IXSkKLSsgIEFDX0NBQ0hFX0NIRUNLKGZvciBpbnRtYXhfdCwgZ3RfY3ZfY19pbnRtYXhfdCwKLSsgICAgW0FDX1RSWV9DT01QSUxFKFsKLSsjaW5jbHVkZSA8c3RkZGVmLmg+IAotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaWYgSEFWRV9TVERJTlRfSF9XSVRIX1VJTlRNQVgKLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0rI2VuZGlmCi0rI2lmIEhBVkVfSU5UVFlQRVNfSF9XSVRIX1VJTlRNQVgKLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsjZW5kaWYKLStdLCBbaW50bWF4X3QgeCA9IC0xO10sIGd0X2N2X2NfaW50bWF4X3Q9eWVzLCBndF9jdl9jX2ludG1heF90PW5vKV0pCi0rICBpZiB0ZXN0ICRndF9jdl9jX2ludG1heF90ID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORShIQVZFX0lOVE1BWF9ULCAxLAotKyAgICAgIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdpbnRtYXhfdCcgdHlwZSBpbiA8c3RkaW50Lmg+IG9yIDxpbnR0eXBlcy5oPi5dKQotKyAgZmkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9pbnR0eXBlc19oLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9pbnR0eXBlc19oLm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuODY4NjcwMTEyIC0wNDAwCi1AQCAtMCwwICsxLDI4IEBACi0rIyBpbnR0eXBlc19oLm00IHNlcmlhbCA1IChnZXR0ZXh0LTAuMTIpCi0rZG5sIENvcHlyaWdodCAoQykgMTk5Ny0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gUGF1bCBFZ2dlcnQuCi0rCi0rIyBEZWZpbmUgSEFWRV9JTlRUWVBFU19IX1dJVEhfVUlOVE1BWCBpZiA8aW50dHlwZXMuaD4gZXhpc3RzLAotKyMgZG9lc24ndCBjbGFzaCB3aXRoIDxzeXMvdHlwZXMuaD4sIGFuZCBkZWNsYXJlcyB1aW50bWF4X3QuCi0rCi0rQUNfREVGVU4oW2ptX0FDX0hFQURFUl9JTlRUWVBFU19IXSwKLStbCi0rICBBQ19DQUNIRV9DSEVDSyhbZm9yIGludHR5cGVzLmhdLCBqbV9hY19jdl9oZWFkZXJfaW50dHlwZXNfaCwKLSsgIFtBQ19UUllfQ09NUElMRSgKLSsgICAgWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD5dLAotKyAgICBbdWludG1heF90IGkgPSAodWludG1heF90KSAtMTtdLAotKyAgICBqbV9hY19jdl9oZWFkZXJfaW50dHlwZXNfaD15ZXMsCi0rICAgIGptX2FjX2N2X2hlYWRlcl9pbnR0eXBlc19oPW5vKV0pCi0rICBpZiB0ZXN0ICRqbV9hY19jdl9oZWFkZXJfaW50dHlwZXNfaCA9IHllczsgdGhlbgotKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9JTlRUWVBFU19IX1dJVEhfVUlOVE1BWCwgMSwKLSsgICAgICBbRGVmaW5lIGlmIDxpbnR0eXBlcy5oPiBleGlzdHMsIGRvZXNuJ3QgY2xhc2ggd2l0aCA8c3lzL3R5cGVzLmg+LAotKyAgICAgICBhbmQgZGVjbGFyZXMgdWludG1heF90LiBdKQotKyAgZmkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9pbnR0eXBlcy5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvaW50dHlwZXMubTQJMjAwNC0wOS0xMiAxNDo0MDozNC44NjE2NzExNzYgLTA0MDAKLUBAIC0wLDAgKzEsMjcgQEAKLSsjIGludHR5cGVzLm00IHNlcmlhbCAxIChnZXR0ZXh0LTAuMTEuNCkKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk3LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBQYXVsIEVnZ2VydC4KLSsKLSsjIERlZmluZSBIQVZFX0lOVFRZUEVTX0ggaWYgPGludHR5cGVzLmg+IGV4aXN0cyBhbmQgZG9lc24ndCBjbGFzaCB3aXRoCi0rIyA8c3lzL3R5cGVzLmg+LgotKwotK0FDX0RFRlVOKFtndF9IRUFERVJfSU5UVFlQRVNfSF0sCi0rWwotKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBpbnR0eXBlcy5oXSwgZ3RfY3ZfaGVhZGVyX2ludHR5cGVzX2gsCi0rICBbCi0rICAgIEFDX1RSWV9DT01QSUxFKAotKyAgICAgIFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rI2luY2x1ZGUgPGludHR5cGVzLmg+XSwKLSsgICAgICBbXSwgZ3RfY3ZfaGVhZGVyX2ludHR5cGVzX2g9eWVzLCBndF9jdl9oZWFkZXJfaW50dHlwZXNfaD1ubykKLSsgIF0pCi0rICBpZiB0ZXN0ICRndF9jdl9oZWFkZXJfaW50dHlwZXNfaCA9IHllczsgdGhlbgotKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9JTlRUWVBFU19ILCAxLAotKyAgICAgIFtEZWZpbmUgaWYgPGludHR5cGVzLmg+IGV4aXN0cyBhbmQgZG9lc24ndCBjbGFzaCB3aXRoIDxzeXMvdHlwZXMuaD4uXSkKLSsgIGZpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvaW50dHlwZXMtcHJpLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9pbnR0eXBlcy1wcmkubTQJMjAwNC0wOS0xMiAxNDo0MDozNC44NzQ2NjkyMDAgLTA0MDAKLUBAIC0wLDAgKzEsMzIgQEAKLSsjIGludHR5cGVzLXByaS5tNCBzZXJpYWwgMSAoZ2V0dGV4dC0wLjExLjQpCi0rZG5sIENvcHlyaWdodCAoQykgMTk5Ny0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotKwotKyMgRGVmaW5lIFBSSV9NQUNST1NfQlJPS0VOIGlmIDxpbnR0eXBlcy5oPiBleGlzdHMgYW5kIGRlZmluZXMgdGhlIFBSSSoKLSsjIG1hY3JvcyB0byBub24tc3RyaW5nIHZhbHVlcy4gIFRoaXMgaXMgdGhlIGNhc2Ugb24gQUlYIDQuMy4zLgotKwotK0FDX0RFRlVOKFtndF9JTlRUWVBFU19QUkldLAotK1sKLSsgIEFDX1JFUVVJUkUoW2d0X0hFQURFUl9JTlRUWVBFU19IXSkKLSsgIGlmIHRlc3QgJGd0X2N2X2hlYWRlcl9pbnR0eXBlc19oID0geWVzOyB0aGVuCi0rICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBpbnR0eXBlcy5oIFBSSXhOTiBtYWNyb3MgYXJlIGJyb2tlbl0sCi0rICAgICAgZ3RfY3ZfaW50dHlwZXNfcHJpX2Jyb2tlbiwKLSsgICAgICBbCi0rICAgICAgICBBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0rI2lmZGVmIFBSSWQzMgotK2NoYXIgKnAgPSBQUklkMzI7Ci0rI2VuZGlmCi0rXSwgW10sIGd0X2N2X2ludHR5cGVzX3ByaV9icm9rZW49bm8sIGd0X2N2X2ludHR5cGVzX3ByaV9icm9rZW49eWVzKQotKyAgICAgIF0pCi0rICBmaQotKyAgaWYgdGVzdCAiJGd0X2N2X2ludHR5cGVzX3ByaV9icm9rZW4iID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORV9VTlFVT1RFRChQUklfTUFDUk9TX0JST0tFTiwgMSwKLSsgICAgICBbRGVmaW5lIGlmIDxpbnR0eXBlcy5oPiBleGlzdHMgYW5kIGRlZmluZXMgdW51c2FibGUgUFJJKiBtYWNyb3MuXSkKLSsgIGZpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvaXNjLXBvc2l4Lm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9pc2MtcG9zaXgubTQJMjAwNC0wOS0xMiAxNDo0MDozNC44ODU2Njc1MjggLTA0MDAKLUBAIC0wLDAgKzEsMjYgQEAKLSsjIGlzYy1wb3NpeC5tNCBzZXJpYWwgMiAoZ2V0dGV4dC0wLjExLjIpCi0rZG5sIENvcHlyaWdodCAoQykgMTk5NS0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rIyBUaGlzIGZpbGUgaXMgbm90IG5lZWRlZCB3aXRoIGF1dG9jb25mLTIuNTMgYW5kIG5ld2VyLiAgUmVtb3ZlIGl0IGluIDIwMDUuCi0rCi0rIyBUaGlzIHRlc3QgcmVwbGFjZXMgdGhlIG9uZSBpbiBhdXRvY29uZi4KLSsjIEN1cnJlbnRseSB0aGlzIG1hY3JvIHNob3VsZCBoYXZlIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGF1dG9jb25mIG1hY3JvCi0rIyBiZWNhdXNlIGdldHRleHQncyBnZXR0ZXh0Lm00IChkaXN0cmlidXRlZCBpbiB0aGUgYXV0b21ha2UgcGFja2FnZSkKLSsjIHN0aWxsIHVzZXMgaXQuICBPdGhlcndpc2UsIHRoZSB1c2UgaW4gZ2V0dGV4dC5tNCBtYWtlcyBhdXRvaGVhZGVyCi0rIyBnaXZlIHRoZXNlIGRpYWdub3N0aWNzOgotKyMgICBjb25maWd1cmUuaW46NTU2OiBBQ19UUllfQ09NUElMRSB3YXMgY2FsbGVkIGJlZm9yZSBBQ19JU0NfUE9TSVgKLSsjICAgY29uZmlndXJlLmluOjU1NjogQUNfVFJZX1JVTiB3YXMgY2FsbGVkIGJlZm9yZSBBQ19JU0NfUE9TSVgKLSsKLSt1bmRlZmluZShbQUNfSVNDX1BPU0lYXSkKLSsKLStBQ19ERUZVTihbQUNfSVNDX1BPU0lYXSwKLSsgIFsKLSsgICAgZG5sIFRoaXMgdGVzdCByZXBsYWNlcyB0aGUgb2Jzb2xlc2NlbnQgQUNfSVNDX1BPU0lYIGtsdWRnZS4KLSsgICAgQUNfQ0hFQ0tfTElCKGNwb3NpeCwgc3RyZXJyb3IsIFtMSUJTPSIkTElCUyAtbGNwb3NpeCJdKQotKyAgXQotKykKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvbGNtZXNzYWdlLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9sY21lc3NhZ2UubTQJMjAwNC0wOS0xMiAxNDo0MDozNC45MDI2NjQ5NDQgLTA0MDAKLUBAIC0wLDAgKzEsMzIgQEAKLSsjIGxjbWVzc2FnZS5tNCBzZXJpYWwgMyAoZ2V0dGV4dC0wLjExLjMpCi0rZG5sIENvcHlyaWdodCAoQykgMTk5NS0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rZG5sCi0rZG5sIFRoaXMgZmlsZSBjYW4gY2FuIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIKLStkbmwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0Ci0rZG5sIGZ1bmN0aW9uYWxpdHkuCi0rZG5sIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKLStkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCi0rZG5sIGdldHRleHQgcGFja2FnZSBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotK2RubCBUaGV5IGFyZSAqbm90KiBpbiB0aGUgcHVibGljIGRvbWFpbi4KLSsKLStkbmwgQXV0aG9yczoKLStkbmwgICBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5NS4KLSsKLSsjIENoZWNrIHdoZXRoZXIgTENfTUVTU0FHRVMgaXMgYXZhaWxhYmxlIGluIDxsb2NhbGUuaD4uCi0rCi0rQUNfREVGVU4oW0FNX0xDX01FU1NBR0VTXSwKLStbCi0rICBBQ19DQUNIRV9DSEVDSyhbZm9yIExDX01FU1NBR0VTXSwgYW1fY3ZfdmFsX0xDX01FU1NBR0VTLAotKyAgICBbQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsb2NhbGUuaD5dLCBbcmV0dXJuIExDX01FU1NBR0VTXSwKLSsgICAgICAgYW1fY3ZfdmFsX0xDX01FU1NBR0VTPXllcywgYW1fY3ZfdmFsX0xDX01FU1NBR0VTPW5vKV0pCi0rICBpZiB0ZXN0ICRhbV9jdl92YWxfTENfTUVTU0FHRVMgPSB5ZXM7IHRoZW4KLSsgICAgQUNfREVGSU5FKEhBVkVfTENfTUVTU0FHRVMsIDEsCi0rICAgICAgW0RlZmluZSBpZiB5b3VyIDxsb2NhbGUuaD4gZmlsZSBkZWZpbmVzIExDX01FU1NBR0VTLl0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L2xpYi1sZC5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvbGliLWxkLm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuOTA4NjY0MDMyIC0wNDAwCi1AQCAtMCwwICsxLDExMiBAQAotKyMgbGliLWxkLm00IHNlcmlhbCAzIChnZXR0ZXh0LTAuMTMpCi0rZG5sIENvcHlyaWdodCAoQykgMTk5Ni0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIFN1YnJvdXRpbmVzIG9mIGxpYnRvb2wubTQsCi0rZG5sIHdpdGggcmVwbGFjZW1lbnRzIHMvQUNfL0FDX0xJQi8gYW5kIHMvbHRfY3YvYWNsX2N2LyB0byBhdm9pZCBjb2xsaXNpb24KLStkbmwgd2l0aCBsaWJ0b29sLm00LgotKwotK2RubCBGcm9tIGxpYnRvb2wtMS40LiBTZXRzIHRoZSB2YXJpYWJsZSB3aXRoX2dudV9sZCB0byB5ZXMgb3Igbm8uCi0rQUNfREVGVU4oW0FDX0xJQl9QUk9HX0xEX0dOVV0sCi0rW0FDX0NBQ0hFX0NIRUNLKFtpZiB0aGUgbGlua2VyICgkTEQpIGlzIEdOVSBsZF0sIGFjbF9jdl9wcm9nX2dudV9sZCwKLStbIyBJJ2QgcmF0aGVyIHVzZSAtLXZlcnNpb24gaGVyZSwgYnV0IGFwcGFyZW50bHkgc29tZSBHTlUgbGQncyBvbmx5IGFjY2VwdCAtdi4KLStjYXNlIGAkTEQgLXYgMj4mMSA8L2Rldi9udWxsYCBpbgotKypHTlUqIHwgKid3aXRoIEJGRCcqKQotKyAgYWNsX2N2X3Byb2dfZ251X2xkPXllcyA7OwotKyopCi0rICBhY2xfY3ZfcHJvZ19nbnVfbGQ9bm8gOzsKLStlc2FjXSkKLSt3aXRoX2dudV9sZD0kYWNsX2N2X3Byb2dfZ251X2xkCi0rXSkKLSsKLStkbmwgRnJvbSBsaWJ0b29sLTEuNC4gU2V0cyB0aGUgdmFyaWFibGUgTEQuCi0rQUNfREVGVU4oW0FDX0xJQl9QUk9HX0xEXSwKLStbQUNfQVJHX1dJVEgoZ251LWxkLAotK1sgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub11dLAotK3Rlc3QgIiR3aXRodmFsIiA9IG5vIHx8IHdpdGhfZ251X2xkPXllcywgd2l0aF9nbnVfbGQ9bm8pCi0rQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pZG5sCi0rQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAotKyMgUHJlcGFyZSBQQVRIX1NFUEFSQVRPUi4KLSsjIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4KLStpZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbgotKyAgZWNobyAiIyEgL2Jpbi9zaCIgPmNvbmYkJC5zaAotKyAgZWNobyAgImV4aXQgMCIgICA+PmNvbmYkJC5zaAotKyAgY2htb2QgK3ggY29uZiQkLnNoCi0rICBpZiAoUEFUSD0iL25vbmV4aXN0ZW50Oy4iOyBjb25mJCQuc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICBQQVRIX1NFUEFSQVRPUj0nOycKLSsgIGVsc2UKLSsgICAgUEFUSF9TRVBBUkFUT1I9OgotKyAgZmkKLSsgIHJtIC1mIGNvbmYkJC5zaAotK2ZpCi0rYWNfcHJvZz1sZAotK2lmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAjIENoZWNrIGlmIGdjYyAtcHJpbnQtcHJvZy1uYW1lPWxkIGdpdmVzIGEgcGF0aC4KLSsgIEFDX01TR19DSEVDS0lORyhbZm9yIGxkIHVzZWQgYnkgR0NDXSkKLSsgIGNhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyopCi0rICAgICMgZ2NjIGxlYXZlcyBhIHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiB3aGljaCB1cHNldHMgbWluZ3cKLSsgICAgYWNfcHJvZz1gKCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkKSAyPiY1IHwgdHIgLWQgJ1wwMTUnYCA7OwotKyAgKikKLSsgICAgYWNfcHJvZz1gKCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkKSAyPiY1YCA7OwotKyAgZXNhYwotKyAgY2FzZSAkYWNfcHJvZyBpbgotKyAgICAjIEFjY2VwdCBhYnNvbHV0ZSBwYXRocy4KLSsgICAgW1tcXC9dKiB8IFtBLVphLXpdOltcXC9dKildCi0rICAgICAgW3JlX2RpcmVsdD0nL1teL11bXi9dKi9cLlwuLyddCi0rICAgICAgIyBDYW5vbmljYWxpemUgdGhlIHBhdGggb2YgbGQKLSsgICAgICBhY19wcm9nPWBlY2hvICRhY19wcm9nfCBzZWQgJ3MlXFxcXCUvJWcnYAotKyAgICAgIHdoaWxlIGVjaG8gJGFjX3Byb2cgfCBncmVwICIkcmVfZGlyZWx0IiA+IC9kZXYvbnVsbCAyPiYxOyBkbwotKwlhY19wcm9nPWBlY2hvICRhY19wcm9nfCBzZWQgInMlJHJlX2RpcmVsdCUvJSJgCi0rICAgICAgZG9uZQotKyAgICAgIHRlc3QgLXogIiRMRCIgJiYgTEQ9IiRhY19wcm9nIgotKyAgICAgIDs7Ci0rICAiIikKLSsgICAgIyBJZiBpdCBmYWlscywgdGhlbiBwcmV0ZW5kIHdlIGFyZW4ndCB1c2luZyBHQ0MuCi0rICAgIGFjX3Byb2c9bGQKLSsgICAgOzsKLSsgICopCi0rICAgICMgSWYgaXQgaXMgcmVsYXRpdmUsIHRoZW4gc2VhcmNoIGZvciB0aGUgZmlyc3QgbGQgaW4gUEFUSC4KLSsgICAgd2l0aF9nbnVfbGQ9dW5rbm93bgotKyAgICA7OwotKyAgZXNhYwotK2VsaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgotKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgR05VIGxkXSkKLStlbHNlCi0rICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBub24tR05VIGxkXSkKLStmaQotK0FDX0NBQ0hFX1ZBTChhY2xfY3ZfcGF0aF9MRCwKLStbaWYgdGVzdCAteiAiJExEIjsgdGhlbgotKyAgSUZTPSIke0lGUz0gCX0iOyBhY19zYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9JHtQQVRIX1NFUEFSQVRPUi06fSIKLSsgIGZvciBhY19kaXIgaW4gJFBBVEg7IGRvCi0rICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0rICAgIGlmIHRlc3QgLWYgIiRhY19kaXIvJGFjX3Byb2ciIHx8IHRlc3QgLWYgIiRhY19kaXIvJGFjX3Byb2ckYWNfZXhlZXh0IjsgdGhlbgotKyAgICAgIGFjbF9jdl9wYXRoX0xEPSIkYWNfZGlyLyRhY19wcm9nIgotKyAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBwcm9ncmFtIGlzIEdOVSBsZC4gIEknZCByYXRoZXIgdXNlIC0tdmVyc2lvbiwKLSsgICAgICAjIGJ1dCBhcHBhcmVudGx5IHNvbWUgR05VIGxkJ3Mgb25seSBhY2NlcHQgLXYuCi0rICAgICAgIyBCcmVhayBvbmx5IGlmIGl0IHdhcyB0aGUgR05VL25vbi1HTlUgbGQgdGhhdCB3ZSBwcmVmZXIuCi0rICAgICAgY2FzZSBgIiRhY2xfY3ZfcGF0aF9MRCIgLXYgMj4mMSA8IC9kZXYvbnVsbGAgaW4KLSsgICAgICAqR05VKiB8ICond2l0aCBCRkQnKikKLSsJdGVzdCAiJHdpdGhfZ251X2xkIiAhPSBubyAmJiBicmVhayA7OwotKyAgICAgICopCi0rCXRlc3QgIiR3aXRoX2dudV9sZCIgIT0geWVzICYmIGJyZWFrIDs7Ci0rICAgICAgZXNhYwotKyAgICBmaQotKyAgZG9uZQotKyAgSUZTPSIkYWNfc2F2ZV9pZnMiCi0rZWxzZQotKyAgYWNsX2N2X3BhdGhfTEQ9IiRMRCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCi0rZmldKQotK0xEPSIkYWNsX2N2X3BhdGhfTEQiCi0raWYgdGVzdCAtbiAiJExEIjsgdGhlbgotKyAgQUNfTVNHX1JFU1VMVCgkTEQpCi0rZWxzZQotKyAgQUNfTVNHX1JFU1VMVChubykKLStmaQotK3Rlc3QgLXogIiRMRCIgJiYgQUNfTVNHX0VSUk9SKFtubyBhY2NlcHRhYmxlIGxkIGZvdW5kIGluIFwkUEFUSF0pCi0rQUNfTElCX1BST0dfTERfR05VCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvbGliLWxpbmsubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L2xpYi1saW5rLm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuOTE0NjYzMTIwIC0wNDAwCi1AQCAtMCwwICsxLDU1MSBAQAotKyMgbGliLWxpbmsubTQgc2VyaWFsIDQgKGdldHRleHQtMC4xMikKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBCcnVubyBIYWlibGUuCi0rCi0rZG5sIEFDX0xJQl9MSU5LRkxBR1MobmFtZSBbLCBkZXBlbmRlbmNpZXNdKSBzZWFyY2hlcyBmb3IgbGlibmFtZSBhbmQKLStkbmwgdGhlIGxpYnJhcmllcyBjb3JyZXNwb25kaW5nIHRvIGV4cGxpY2l0IGFuZCBpbXBsaWNpdCBkZXBlbmRlbmNpZXMuCi0rZG5sIFNldHMgYW5kIEFDX1NVQlNUcyB0aGUgTElCJHtOQU1FfSBhbmQgTFRMSUIke05BTUV9IHZhcmlhYmxlcyBhbmQKLStkbmwgYXVnbWVudHMgdGhlIENQUEZMQUdTIHZhcmlhYmxlLgotK0FDX0RFRlVOKFtBQ19MSUJfTElOS0ZMQUdTXSwKLStbCi0rICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJFUEFSRV9QUkVGSVhdKQotKyAgQUNfUkVRVUlSRShbQUNfTElCX1JQQVRIXSkKLSsgIGRlZmluZShbTmFtZV0sW3RyYW5zbGl0KFskMV0sWy4vLV0sIFtfX19dKV0pCi0rICBkZWZpbmUoW05BTUVdLFt0cmFuc2xpdChbJDFdLFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vLV0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX10pXSkKLSsgIEFDX0NBQ0hFX0NIRUNLKFtob3cgdG8gbGluayB3aXRoIGxpYltdJDFdLCBbYWNfY3ZfbGliW11OYW1lW11fbGlic10sIFsKLSsgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFskMV0sIFskMl0pCi0rICAgIGFjX2N2X2xpYltdTmFtZVtdX2xpYnM9IiRMSUJbXU5BTUUiCi0rICAgIGFjX2N2X2xpYltdTmFtZVtdX2x0bGlicz0iJExUTElCW11OQU1FIgotKyAgICBhY19jdl9saWJbXU5hbWVbXV9jcHBmbGFncz0iJElOQ1tdTkFNRSIKLSsgIF0pCi0rICBMSUJbXU5BTUU9IiRhY19jdl9saWJbXU5hbWVbXV9saWJzIgotKyAgTFRMSUJbXU5BTUU9IiRhY19jdl9saWJbXU5hbWVbXV9sdGxpYnMiCi0rICBJTkNbXU5BTUU9IiRhY19jdl9saWJbXU5hbWVbXV9jcHBmbGFncyIKLSsgIEFDX0xJQl9BUFBFTkRUT1ZBUihbQ1BQRkxBR1NdLCBbJElOQ11OQU1FKQotKyAgQUNfU1VCU1QoW0xJQl1OQU1FKQotKyAgQUNfU1VCU1QoW0xUTElCXU5BTUUpCi0rICBkbmwgQWxzbyBzZXQgSEFWRV9MSUJbXU5BTUUgc28gdGhhdCBBQ19MSUJfSEFWRV9MSU5LRkxBR1MgY2FuIHJldXNlIHRoZQotKyAgZG5sIHJlc3VsdHMgb2YgdGhpcyBzZWFyY2ggd2hlbiB0aGlzIGxpYnJhcnkgYXBwZWFycyBhcyBhIGRlcGVuZGVuY3kuCi0rICBIQVZFX0xJQltdTkFNRT15ZXMKLSsgIHVuZGVmaW5lKFtOYW1lXSkKLSsgIHVuZGVmaW5lKFtOQU1FXSkKLStdKQotKwotK2RubCBBQ19MSUJfSEFWRV9MSU5LRkxBR1MobmFtZSwgZGVwZW5kZW5jaWVzLCBpbmNsdWRlcywgdGVzdGNvZGUpCi0rZG5sIHNlYXJjaGVzIGZvciBsaWJuYW1lIGFuZCB0aGUgbGlicmFyaWVzIGNvcnJlc3BvbmRpbmcgdG8gZXhwbGljaXQgYW5kCi0rZG5sIGltcGxpY2l0IGRlcGVuZGVuY2llcywgdG9nZXRoZXIgd2l0aCB0aGUgc3BlY2lmaWVkIGluY2x1ZGUgZmlsZXMgYW5kCi0rZG5sIHRoZSBhYmlsaXR5IHRvIGNvbXBpbGUgYW5kIGxpbmsgdGhlIHNwZWNpZmllZCB0ZXN0Y29kZS4gSWYgZm91bmQsIGl0Ci0rZG5sIHNldHMgYW5kIEFDX1NVQlNUcyBIQVZFX0xJQiR7TkFNRX09eWVzIGFuZCB0aGUgTElCJHtOQU1FfSBhbmQKLStkbmwgTFRMSUIke05BTUV9IHZhcmlhYmxlcyBhbmQgYXVnbWVudHMgdGhlIENQUEZMQUdTIHZhcmlhYmxlLCBhbmQKLStkbmwgI2RlZmluZXMgSEFWRV9MSUIke05BTUV9IHRvIDEuIE90aGVyd2lzZSwgaXQgc2V0cyBhbmQgQUNfU1VCU1RzCi0rZG5sIEhBVkVfTElCJHtOQU1FfT1ubyBhbmQgTElCJHtOQU1FfSBhbmQgTFRMSUIke05BTUV9IHRvIGVtcHR5LgotK0FDX0RFRlVOKFtBQ19MSUJfSEFWRV9MSU5LRkxBR1NdLAotK1sKLSsgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX1BSRUZJWF0pCi0rICBBQ19SRVFVSVJFKFtBQ19MSUJfUlBBVEhdKQotKyAgZGVmaW5lKFtOYW1lXSxbdHJhbnNsaXQoWyQxXSxbLi8tXSwgW19fX10pXSkKLSsgIGRlZmluZShbTkFNRV0sW3RyYW5zbGl0KFskMV0sW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fXSldKQotKwotKyAgZG5sIFNlYXJjaCBmb3IgbGliW11OYW1lIGFuZCBkZWZpbmUgTElCW11OQU1FLCBMVExJQltdTkFNRSBhbmQgSU5DW11OQU1FCi0rICBkbmwgYWNjb3JkaW5nbHkuCi0rICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoWyQxXSwgWyQyXSkKLSsKLSsgIGRubCBBZGQgJElOQ1tdTkFNRSB0byBDUFBGTEFHUyBiZWZvcmUgcGVyZm9ybWluZyB0aGUgZm9sbG93aW5nIGNoZWNrcywKLSsgIGRubCBiZWNhdXNlIGlmIHRoZSB1c2VyIGhhcyBpbnN0YWxsZWQgbGliW11OYW1lIGFuZCBub3QgZGlzYWJsZWQgaXRzIHVzZQotKyAgZG5sIHZpYSAtLXdpdGhvdXQtbGliW11OYW1lLXByZWZpeCwgaGUgd2FudHMgdG8gdXNlIGl0LgotKyAgYWNfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgotKyAgQUNfTElCX0FQUEVORFRPVkFSKFtDUFBGTEFHU10sIFskSU5DXU5BTUUpCi0rCi0rICBBQ19DQUNIRV9DSEVDSyhbZm9yIGxpYltdJDFdLCBbYWNfY3ZfbGliW11OYW1lXSwgWwotKyAgICBhY19zYXZlX0xJQlM9IiRMSUJTIgotKyAgICBMSUJTPSIkTElCUyAkTElCW11OQU1FIgotKyAgICBBQ19UUllfTElOSyhbJDNdLCBbJDRdLCBbYWNfY3ZfbGliW11OYW1lPXllc10sIFthY19jdl9saWJbXU5hbWU9bm9dKQotKyAgICBMSUJTPSIkYWNfc2F2ZV9MSUJTIgotKyAgXSkKLSsgIGlmIHRlc3QgIiRhY19jdl9saWJbXU5hbWUiID0geWVzOyB0aGVuCi0rICAgIEhBVkVfTElCW11OQU1FPXllcwotKyAgICBBQ19ERUZJTkUoW0hBVkVfTElCXU5BTUUsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlICQxIGxpYnJhcnkuXSkKLSsgICAgQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gbGluayB3aXRoIGxpYltdJDFdKQotKyAgICBBQ19NU0dfUkVTVUxUKFskTElCW11OQU1FXSkKLSsgIGVsc2UKLSsgICAgSEFWRV9MSUJbXU5BTUU9bm8KLSsgICAgZG5sIElmICRMSUJbXU5BTUUgZGlkbid0IGxlYWQgdG8gYSB1c2FibGUgbGlicmFyeSwgd2UgZG9uJ3QgbmVlZAotKyAgICBkbmwgJElOQ1tdTkFNRSBlaXRoZXIuCi0rICAgIENQUEZMQUdTPSIkYWNfc2F2ZV9DUFBGTEFHUyIKLSsgICAgTElCW11OQU1FPQotKyAgICBMVExJQltdTkFNRT0KLSsgIGZpCi0rICBBQ19TVUJTVChbSEFWRV9MSUJdTkFNRSkKLSsgIEFDX1NVQlNUKFtMSUJdTkFNRSkKLSsgIEFDX1NVQlNUKFtMVExJQl1OQU1FKQotKyAgdW5kZWZpbmUoW05hbWVdKQotKyAgdW5kZWZpbmUoW05BTUVdKQotK10pCi0rCi0rZG5sIERldGVybWluZSB0aGUgcGxhdGZvcm0gZGVwZW5kZW50IHBhcmFtZXRlcnMgbmVlZGVkIHRvIHVzZSBycGF0aDoKLStkbmwgbGliZXh0LCBzaGxpYmV4dCwgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwKLStkbmwgaGFyZGNvZGVfZGlyZWN0LCBoYXJkY29kZV9taW51c19MLgotK0FDX0RFRlVOKFtBQ19MSUJfUlBBVEhdLAotK1sKLSsgIEFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKSAgICAgICAgICAgICAgICBkbmwgd2UgdXNlICRDQywgJEdDQywgJExERkxBR1MKLSsgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUk9HX0xEXSkgICAgICAgICAgICBkbmwgd2UgdXNlICRMRCwgJHdpdGhfZ251X2xkCi0rICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pICAgICAgICAgZG5sIHdlIHVzZSAkaG9zdAotKyAgQUNfUkVRVUlSRShbQUNfQ09ORklHX0FVWF9ESVJfREVGQVVMVF0pIGRubCB3ZSB1c2UgJGFjX2F1eF9kaXIKLSsgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igc2hhcmVkIGxpYnJhcnkgcnVuIHBhdGggb3JpZ2luXSwgYWNsX2N2X3JwYXRoLCBbCi0rICAgIENDPSIkQ0MiIEdDQz0iJEdDQyIgTERGTEFHUz0iJExERkxBR1MiIExEPSIkTEQiIHdpdGhfZ251X2xkPSIkd2l0aF9nbnVfbGQiIFwKLSsgICAgJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0gIiRhY19hdXhfZGlyL2NvbmZpZy5ycGF0aCIgIiRob3N0IiA+IGNvbmZ0ZXN0LnNoCi0rICAgIC4gLi9jb25mdGVzdC5zaAotKyAgICBybSAtZiAuL2NvbmZ0ZXN0LnNoCi0rICAgIGFjbF9jdl9ycGF0aD1kb25lCi0rICBdKQotKyAgd2w9IiRhY2xfY3Zfd2wiCi0rICBsaWJleHQ9IiRhY2xfY3ZfbGliZXh0IgotKyAgc2hsaWJleHQ9IiRhY2xfY3Zfc2hsaWJleHQiCi0rICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSIkYWNsX2N2X2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiCi0rICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSIkYWNsX2N2X2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiCi0rICBoYXJkY29kZV9kaXJlY3Q9IiRhY2xfY3ZfaGFyZGNvZGVfZGlyZWN0IgotKyAgaGFyZGNvZGVfbWludXNfTD0iJGFjbF9jdl9oYXJkY29kZV9taW51c19MIgotKyAgZG5sIERldGVybWluZSB3aGV0aGVyIHRoZSB1c2VyIHdhbnRzIHJwYXRoIGhhbmRsaW5nIGF0IGFsbC4KLSsgIEFDX0FSR19FTkFCTEUocnBhdGgsCi0rICAgIFsgIC0tZGlzYWJsZS1ycGF0aCAgICAgICAgIGRvIG5vdCBoYXJkY29kZSBydW50aW1lIGxpYnJhcnkgcGF0aHNdLAotKyAgICA6LCBlbmFibGVfcnBhdGg9eWVzKQotK10pCi0rCi0rZG5sIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShuYW1lIFssIGRlcGVuZGVuY2llc10pIHNlYXJjaGVzIGZvciBsaWJuYW1lIGFuZAotK2RubCB0aGUgbGlicmFyaWVzIGNvcnJlc3BvbmRpbmcgdG8gZXhwbGljaXQgYW5kIGltcGxpY2l0IGRlcGVuZGVuY2llcy4KLStkbmwgU2V0cyB0aGUgTElCJHtOQU1FfSwgTFRMSUIke05BTUV9IGFuZCBJTkMke05BTUV9IHZhcmlhYmxlcy4KLStBQ19ERUZVTihbQUNfTElCX0xJTktGTEFHU19CT0RZXSwKLStbCi0rICBkZWZpbmUoW05BTUVdLFt0cmFuc2xpdChbJDFdLFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vLV0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX10pXSkKLSsgIGRubCBCeSBkZWZhdWx0LCBsb29rIGluICRpbmNsdWRlZGlyIGFuZCAkbGliZGlyLgotKyAgdXNlX2FkZGl0aW9uYWw9eWVzCi0rICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoWwotKyAgICBldmFsIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj1cIiRpbmNsdWRlZGlyXCIKLSsgICAgZXZhbCBhZGRpdGlvbmFsX2xpYmRpcj1cIiRsaWJkaXJcIgotKyAgXSkKLSsgIEFDX0xJQl9BUkdfV0lUSChbbGliJDEtcHJlZml4XSwKLStbICAtLXdpdGgtbGliJDEtcHJlZml4Wz1ESVJdICBzZWFyY2ggZm9yIGxpYiQxIGluIERJUi9pbmNsdWRlIGFuZCBESVIvbGliCi0rICAtLXdpdGhvdXQtbGliJDEtcHJlZml4ICAgICBkb24ndCBzZWFyY2ggZm9yIGxpYiQxIGluIGluY2x1ZGVkaXIgYW5kIGxpYmRpcl0sCi0rWwotKyAgICBpZiB0ZXN0ICJYJHdpdGh2YWwiID0gIlhubyI7IHRoZW4KLSsgICAgICB1c2VfYWRkaXRpb25hbD1ubwotKyAgICBlbHNlCi0rICAgICAgaWYgdGVzdCAiWCR3aXRodmFsIiA9ICJYIjsgdGhlbgotKyAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFsKLSsgICAgICAgICAgZXZhbCBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9XCIkaW5jbHVkZWRpclwiCi0rICAgICAgICAgIGV2YWwgYWRkaXRpb25hbF9saWJkaXI9XCIkbGliZGlyXCIKLSsgICAgICAgIF0pCi0rICAgICAgZWxzZQotKyAgICAgICAgYWRkaXRpb25hbF9pbmNsdWRlZGlyPSIkd2l0aHZhbC9pbmNsdWRlIgotKyAgICAgICAgYWRkaXRpb25hbF9saWJkaXI9IiR3aXRodmFsL2xpYiIKLSsgICAgICBmaQotKyAgICBmaQotK10pCi0rICBkbmwgU2VhcmNoIHRoZSBsaWJyYXJ5IGFuZCBpdHMgZGVwZW5kZW5jaWVzIGluICRhZGRpdGlvbmFsX2xpYmRpciBhbmQKLSsgIGRubCAkTERGTEFHUy4gVXNpbmcgYnJlYWR0aC1maXJzdC1zZWFjaC4KLSsgIExJQltdTkFNRT0KLSsgIExUTElCW11OQU1FPQotKyAgSU5DW11OQU1FPQotKyAgcnBhdGhkaXJzPQotKyAgbHRycGF0aGRpcnM9Ci0rICBuYW1lc19hbHJlYWR5X2hhbmRsZWQ9Ci0rICBuYW1lc19uZXh0X3JvdW5kPSckMSAkMicKLSsgIHdoaWxlIHRlc3QgLW4gIiRuYW1lc19uZXh0X3JvdW5kIjsgZG8KLSsgICAgbmFtZXNfdGhpc19yb3VuZD0iJG5hbWVzX25leHRfcm91bmQiCi0rICAgIG5hbWVzX25leHRfcm91bmQ9Ci0rICAgIGZvciBuYW1lIGluICRuYW1lc190aGlzX3JvdW5kOyBkbwotKyAgICAgIGFscmVhZHlfaGFuZGxlZD0KLSsgICAgICBmb3IgbiBpbiAkbmFtZXNfYWxyZWFkeV9oYW5kbGVkOyBkbwotKyAgICAgICAgaWYgdGVzdCAiJG4iID0gIiRuYW1lIjsgdGhlbgotKyAgICAgICAgICBhbHJlYWR5X2hhbmRsZWQ9eWVzCi0rICAgICAgICAgIGJyZWFrCi0rICAgICAgICBmaQotKyAgICAgIGRvbmUKLSsgICAgICBpZiB0ZXN0IC16ICIkYWxyZWFkeV9oYW5kbGVkIjsgdGhlbgotKyAgICAgICAgbmFtZXNfYWxyZWFkeV9oYW5kbGVkPSIkbmFtZXNfYWxyZWFkeV9oYW5kbGVkICRuYW1lIgotKyAgICAgICAgZG5sIFNlZSBpZiBpdCB3YXMgYWxyZWFkeSBsb2NhdGVkIGJ5IGFuIGVhcmxpZXIgQUNfTElCX0xJTktGTEFHUwotKyAgICAgICAgZG5sIG9yIEFDX0xJQl9IQVZFX0xJTktGTEFHUyBjYWxsLgotKyAgICAgICAgdXBwZXJuYW1lPWBlY2hvICIkbmFtZSIgfCBzZWQgLWUgJ3l8YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLy18QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX198J2AKLSsgICAgICAgIGV2YWwgdmFsdWU9XCJcJEhBVkVfTElCJHVwcGVybmFtZVwiCi0rICAgICAgICBpZiB0ZXN0IC1uICIkdmFsdWUiOyB0aGVuCi0rICAgICAgICAgIGlmIHRlc3QgIiR2YWx1ZSIgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgICBldmFsIHZhbHVlPVwiXCRMSUIkdXBwZXJuYW1lXCIKLSsgICAgICAgICAgICB0ZXN0IC16ICIkdmFsdWUiIHx8IExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JHZhbHVlIgotKyAgICAgICAgICAgIGV2YWwgdmFsdWU9XCJcJExUTElCJHVwcGVybmFtZVwiCi0rICAgICAgICAgICAgdGVzdCAteiAiJHZhbHVlIiB8fCBMVExJQltdTkFNRT0iJHtMVExJQltdTkFNRX0ke0xUTElCW11OQU1FOisgfSR2YWx1ZSIKLSsgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgIGRubCBBbiBlYXJsaWVyIGNhbGwgdG8gQUNfTElCX0hBVkVfTElOS0ZMQUdTIGhhcyBkZXRlcm1pbmVkCi0rICAgICAgICAgICAgZG5sIHRoYXQgdGhpcyBsaWJyYXJ5IGRvZXNuJ3QgZXhpc3QuIFNvIGp1c3QgZHJvcCBpdC4KLSsgICAgICAgICAgICA6Ci0rICAgICAgICAgIGZpCi0rICAgICAgICBlbHNlCi0rICAgICAgICAgIGRubCBTZWFyY2ggdGhlIGxpYnJhcnkgbGliJG5hbWUgaW4gJGFkZGl0aW9uYWxfbGliZGlyIGFuZCAkTERGTEFHUwotKyAgICAgICAgICBkbmwgYW5kIHRoZSBhbHJlYWR5IGNvbnN0cnVjdGVkICRMSUJOQU1FLyRMVExJQk5BTUUuCi0rICAgICAgICAgIGZvdW5kX2Rpcj0KLSsgICAgICAgICAgZm91bmRfbGE9Ci0rICAgICAgICAgIGZvdW5kX3NvPQotKyAgICAgICAgICBmb3VuZF9hPQotKyAgICAgICAgICBpZiB0ZXN0ICR1c2VfYWRkaXRpb25hbCA9IHllczsgdGhlbgotKyAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYmV4dCIgJiYgdGVzdCAtZiAiJGFkZGl0aW9uYWxfbGliZGlyL2xpYiRuYW1lLiRzaGxpYmV4dCI7IHRoZW4KLSsgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGFkZGl0aW9uYWxfbGliZGlyIgotKyAgICAgICAgICAgICAgZm91bmRfc289IiRhZGRpdGlvbmFsX2xpYmRpci9saWIkbmFtZS4kc2hsaWJleHQiCi0rICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkYWRkaXRpb25hbF9saWJkaXIvbGliJG5hbWUubGEiOyB0aGVuCi0rICAgICAgICAgICAgICAgIGZvdW5kX2xhPSIkYWRkaXRpb25hbF9saWJkaXIvbGliJG5hbWUubGEiCi0rICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRhZGRpdGlvbmFsX2xpYmRpci9saWIkbmFtZS4kbGliZXh0IjsgdGhlbgotKyAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRhZGRpdGlvbmFsX2xpYmRpciIKLSsgICAgICAgICAgICAgICAgZm91bmRfYT0iJGFkZGl0aW9uYWxfbGliZGlyL2xpYiRuYW1lLiRsaWJleHQiCi0rICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRhZGRpdGlvbmFsX2xpYmRpci9saWIkbmFtZS5sYSI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICBmb3VuZF9sYT0iJGFkZGl0aW9uYWxfbGliZGlyL2xpYiRuYW1lLmxhIgotKyAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICBmaQotKyAgICAgICAgICBmaQotKyAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgPSAiWCI7IHRoZW4KLSsgICAgICAgICAgICBmb3IgeCBpbiAkTERGTEFHUyAkTFRMSUJbXU5BTUU7IGRvCi0rICAgICAgICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQotKyAgICAgICAgICAgICAgY2FzZSAiJHgiIGluCi0rICAgICAgICAgICAgICAgIC1MKikKLSsgICAgICAgICAgICAgICAgICBkaXI9YGVjaG8gIlgkeCIgfCBzZWQgLWUgJ3MvXlgtTC8vJ2AKLSsgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkc2hsaWJleHQiICYmIHRlc3QgLWYgIiRkaXIvbGliJG5hbWUuJHNobGliZXh0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgotKyAgICAgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIvbGliJG5hbWUuJHNobGliZXh0IgotKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci9saWIkbmFtZS5sYSI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgZm91bmRfbGE9IiRkaXIvbGliJG5hbWUubGEiCi0rICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvbGliJG5hbWUuJGxpYmV4dCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgotKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9hPSIkZGlyL2xpYiRuYW1lLiRsaWJleHQiCi0rICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvbGliJG5hbWUubGEiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfbGE9IiRkaXIvbGliJG5hbWUubGEiCi0rICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgOzsKLSsgICAgICAgICAgICAgIGVzYWMKLSsgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiAhPSAiWCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgZG9uZQotKyAgICAgICAgICBmaQotKyAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgIT0gIlgiOyB0aGVuCi0rICAgICAgICAgICAgZG5sIEZvdW5kIHRoZSBsaWJyYXJ5LgotKyAgICAgICAgICAgIExUTElCW11OQU1FPSIke0xUTElCW11OQU1FfSR7TFRMSUJbXU5BTUU6KyB9LUwkZm91bmRfZGlyIC1sJG5hbWUiCi0rICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9zbyIgIT0gIlgiOyB0aGVuCi0rICAgICAgICAgICAgICBkbmwgTGlua2luZyB3aXRoIGEgc2hhcmVkIGxpYnJhcnkuIFdlIGF0dGVtcHQgdG8gaGFyZGNvZGUgaXRzCi0rICAgICAgICAgICAgICBkbmwgZGlyZWN0b3J5IGludG8gdGhlIGV4ZWN1dGFibGUncyBydW5wYXRoLCB1bmxlc3MgaXQncyB0aGUKLSsgICAgICAgICAgICAgIGRubCBzdGFuZGFyZCAvdXNyL2xpYi4KLSsgICAgICAgICAgICAgIGlmIHRlc3QgIiRlbmFibGVfcnBhdGgiID0gbm8gfHwgdGVzdCAiWCRmb3VuZF9kaXIiID0gIlgvdXNyL2xpYiI7IHRoZW4KLSsgICAgICAgICAgICAgICAgZG5sIE5vIGhhcmRjb2RpbmcgaXMgbmVlZGVkLgotKyAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmb3VuZF9zbyIKLSsgICAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgZG5sIFVzZSBhbiBleHBsaWNpdCBvcHRpb24gdG8gaGFyZGNvZGUgRElSIGludG8gdGhlIHJlc3VsdGluZwotKyAgICAgICAgICAgICAgICBkbmwgYmluYXJ5LgotKyAgICAgICAgICAgICAgICBkbmwgUG90ZW50aWFsbHkgYWRkIERJUiB0byBsdHJwYXRoZGlycy4KLSsgICAgICAgICAgICAgICAgZG5sIFRoZSBsdHJwYXRoZGlycyB3aWxsIGJlIGFwcGVuZGVkIHRvICRMVExJQk5BTUUgYXQgdGhlIGVuZC4KLSsgICAgICAgICAgICAgICAgaGF2ZWl0PQotKyAgICAgICAgICAgICAgICBmb3IgeCBpbiAkbHRycGF0aGRpcnM7IGRvCi0rICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYJGZvdW5kX2RpciI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKLSsgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgZG9uZQotKyAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgIGx0cnBhdGhkaXJzPSIkbHRycGF0aGRpcnMgJGZvdW5kX2RpciIKLSsgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgZG5sIFRoZSBoYXJkY29kaW5nIGludG8gJExJQk5BTUUgaXMgc3lzdGVtIGRlcGVuZGVudC4KLSsgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGhhcmRjb2RlX2RpcmVjdCIgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgICAgICAgICBkbmwgVXNpbmcgRElSL2xpYk5BTUUuc28gZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUiBpbnRvIHRoZQotKyAgICAgICAgICAgICAgICAgIGRubCByZXN1bHRpbmcgYmluYXJ5LgotKyAgICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZvdW5kX3NvIgotKyAgICAgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiICYmIHRlc3QgIiRoYXJkY29kZV9taW51c19MIiA9IG5vOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICBkbmwgVXNlIGFuIGV4cGxpY2l0IG9wdGlvbiB0byBoYXJkY29kZSBESVIgaW50byB0aGUgcmVzdWx0aW5nCi0rICAgICAgICAgICAgICAgICAgICBkbmwgYmluYXJ5LgotKyAgICAgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZm91bmRfc28iCi0rICAgICAgICAgICAgICAgICAgICBkbmwgUG90ZW50aWFsbHkgYWRkIERJUiB0byBycGF0aGRpcnMuCi0rICAgICAgICAgICAgICAgICAgICBkbmwgVGhlIHJwYXRoZGlycyB3aWxsIGJlIGFwcGVuZGVkIHRvICRMSUJOQU1FIGF0IHRoZSBlbmQuCi0rICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9Ci0rICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkcnBhdGhkaXJzOyBkbwotKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZm91bmRfZGlyIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotKyAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgZG9uZQotKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgcnBhdGhkaXJzPSIkcnBhdGhkaXJzICRmb3VuZF9kaXIiCi0rICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgICAgIGRubCBSZWx5IG9uICItTCRmb3VuZF9kaXIiLgotKyAgICAgICAgICAgICAgICAgICAgZG5sIEJ1dCBkb24ndCBhZGQgaXQgaWYgaXQncyBhbHJlYWR5IGNvbnRhaW5lZCBpbiB0aGUgTERGTEFHUwotKyAgICAgICAgICAgICAgICAgICAgZG5sIG9yIHRoZSBhbHJlYWR5IGNvbnN0cnVjdGVkICRMSUJOQU1FCi0rICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9Ci0rICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkTERGTEFHUyAkTElCW11OQU1FOyBkbwotKyAgICAgICAgICAgICAgICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQotKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtTCRmb3VuZF9kaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcwotKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICBkb25lCi0rICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfS1MJGZvdW5kX2RpciIKLSsgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkaGFyZGNvZGVfbWludXNfTCIgIT0gbm87IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgZG5sIEZJWE1FOiBOb3Qgc3VyZSB3aGV0aGVyIHdlIHNob3VsZCB1c2UKLSsgICAgICAgICAgICAgICAgICAgICAgZG5sICItTCRmb3VuZF9kaXIgLWwkbmFtZSIgb3IgIi1MJGZvdW5kX2RpciAkZm91bmRfc28iCi0rICAgICAgICAgICAgICAgICAgICAgIGRubCBoZXJlLgotKyAgICAgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmb3VuZF9zbyIKLSsgICAgICAgICAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgICAgICAgZG5sIFdlIGNhbm5vdCB1c2UgJGhhcmRjb2RlX3J1bnBhdGhfdmFyIGFuZCBMRF9SVU5fUEFUSAotKyAgICAgICAgICAgICAgICAgICAgICBkbmwgaGVyZSwgYmVjYXVzZSB0aGlzIGRvZXNuJ3QgZml0IGluIGZsYWdzIHBhc3NlZCB0byB0aGUKLSsgICAgICAgICAgICAgICAgICAgICAgZG5sIGNvbXBpbGVyLiBTbyBnaXZlIHVwLiBObyBoYXJkY29kaW5nLiBUaGlzIGFmZmVjdHMgb25seQotKyAgICAgICAgICAgICAgICAgICAgICBkbmwgdmVyeSBvbGQgc3lzdGVtcy4KLSsgICAgICAgICAgICAgICAgICAgICAgZG5sIEZJWE1FOiBOb3Qgc3VyZSB3aGV0aGVyIHdlIHNob3VsZCB1c2UKLSsgICAgICAgICAgICAgICAgICAgICAgZG5sICItTCRmb3VuZF9kaXIgLWwkbmFtZSIgb3IgIi1MJGZvdW5kX2RpciAkZm91bmRfc28iCi0rICAgICAgICAgICAgICAgICAgICAgIGRubCBoZXJlLgotKyAgICAgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfS1sJG5hbWUiCi0rICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfYSIgIT0gIlgiOyB0aGVuCi0rICAgICAgICAgICAgICAgIGRubCBMaW5raW5nIHdpdGggYSBzdGF0aWMgbGlicmFyeS4KLSsgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZm91bmRfYSIKLSsgICAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgZG5sIFdlIHNob3VsZG4ndCBjb21lIGhlcmUsIGJ1dCBhbnl3YXkgaXQncyBnb29kIHRvIGhhdmUgYQotKyAgICAgICAgICAgICAgICBkbmwgZmFsbGJhY2suCi0rICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9LUwkZm91bmRfZGlyIC1sJG5hbWUiCi0rICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgZG5sIEFzc3VtZSB0aGUgaW5jbHVkZSBmaWxlcyBhcmUgbmVhcmJ5LgotKyAgICAgICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0KLSsgICAgICAgICAgICBjYXNlICIkZm91bmRfZGlyIiBpbgotKyAgICAgICAgICAgICAgKi9saWIgfCAqL2xpYi8pCi0rICAgICAgICAgICAgICAgIGJhc2VkaXI9YGVjaG8gIlgkZm91bmRfZGlyIiB8IHNlZCAtZSAncyxeWCwsJyAtZSAncywvbGliLyokLCwnYAotKyAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9IiRiYXNlZGlyL2luY2x1ZGUiCi0rICAgICAgICAgICAgICAgIDs7Ci0rICAgICAgICAgICAgZXNhYwotKyAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9pbmNsdWRlZGlyIiAhPSAiWCI7IHRoZW4KLSsgICAgICAgICAgICAgIGRubCBQb3RlbnRpYWxseSBhZGQgJGFkZGl0aW9uYWxfaW5jbHVkZWRpciB0byAkSU5DTkFNRS4KLSsgICAgICAgICAgICAgIGRubCBCdXQgZG9uJ3QgYWRkIGl0Ci0rICAgICAgICAgICAgICBkbmwgICAxLiBpZiBpdCdzIHRoZSBzdGFuZGFyZCAvdXNyL2luY2x1ZGUsCi0rICAgICAgICAgICAgICBkbmwgICAyLiBpZiBpdCdzIC91c3IvbG9jYWwvaW5jbHVkZSBhbmQgd2UgYXJlIHVzaW5nIEdDQyBvbiBMaW51eCwKLSsgICAgICAgICAgICAgIGRubCAgIDMuIGlmIGl0J3MgYWxyZWFkeSBwcmVzZW50IGluICRDUFBGTEFHUyBvciB0aGUgYWxyZWFkeQotKyAgICAgICAgICAgICAgZG5sICAgICAgY29uc3RydWN0ZWQgJElOQ05BTUUsCi0rICAgICAgICAgICAgICBkbmwgICA0LiBpZiBpdCBkb2Vzbid0IGV4aXN0IGFzIGEgZGlyZWN0b3J5LgotKyAgICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiICE9ICJYL3Vzci9pbmNsdWRlIjsgdGhlbgotKyAgICAgICAgICAgICAgICBoYXZlaXQ9Ci0rICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9pbmNsdWRlZGlyIiA9ICJYL3Vzci9sb2NhbC9pbmNsdWRlIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRHQ0MiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICBjYXNlICRob3N0X29zIGluCi0rICAgICAgICAgICAgICAgICAgICAgIGxpbnV4KikgaGF2ZWl0PXllczs7Ci0rICAgICAgICAgICAgICAgICAgICBlc2FjCi0rICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkQ1BQRkxBR1MgJElOQ1tdTkFNRTsgZG8KLSsgICAgICAgICAgICAgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbZXZhbCB4PVwiJHhcIl0pCi0rICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtSSRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgZG9uZQotKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9pbmNsdWRlZGlyIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICBkbmwgUmVhbGx5IGFkZCAkYWRkaXRpb25hbF9pbmNsdWRlZGlyIHRvICRJTkNOQU1FLgotKyAgICAgICAgICAgICAgICAgICAgICBJTkNbXU5BTUU9IiR7SU5DW11OQU1FfSR7SU5DW11OQU1FOisgfS1JJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIKLSsgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICBkbmwgTG9vayBmb3IgZGVwZW5kZW5jaWVzLgotKyAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRmb3VuZF9sYSI7IHRoZW4KLSsgICAgICAgICAgICAgIGRubCBSZWFkIHRoZSAubGEgZmlsZS4gSXQgZGVmaW5lcyB0aGUgdmFyaWFibGVzCi0rICAgICAgICAgICAgICBkbmwgZGxuYW1lLCBsaWJyYXJ5X25hbWVzLCBvbGRfbGlicmFyeSwgZGVwZW5kZW5jeV9saWJzLCBjdXJyZW50LAotKyAgICAgICAgICAgICAgZG5sIGFnZSwgcmV2aXNpb24sIGluc3RhbGxlZCwgZGxvcGVuLCBkbHByZW9wZW4sIGxpYmRpci4KLSsgICAgICAgICAgICAgIHNhdmVfbGliZGlyPSIkbGliZGlyIgotKyAgICAgICAgICAgICAgY2FzZSAiJGZvdW5kX2xhIiBpbgotKyAgICAgICAgICAgICAgICAqLyogfCAqXFwqKSAuICIkZm91bmRfbGEiIDs7Ci0rICAgICAgICAgICAgICAgICopIC4gIi4vJGZvdW5kX2xhIiA7OwotKyAgICAgICAgICAgICAgZXNhYwotKyAgICAgICAgICAgICAgbGliZGlyPSIkc2F2ZV9saWJkaXIiCi0rICAgICAgICAgICAgICBkbmwgV2UgdXNlIG9ubHkgZGVwZW5kZW5jeV9saWJzLgotKyAgICAgICAgICAgICAgZm9yIGRlcCBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwotKyAgICAgICAgICAgICAgICBjYXNlICIkZGVwIiBpbgotKyAgICAgICAgICAgICAgICAgIC1MKikKLSsgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfbGliZGlyPWBlY2hvICJYJGRlcCIgfCBzZWQgLWUgJ3MvXlgtTC8vJ2AKLSsgICAgICAgICAgICAgICAgICAgIGRubCBQb3RlbnRpYWxseSBhZGQgJGFkZGl0aW9uYWxfbGliZGlyIHRvICRMSUJOQU1FIGFuZCAkTFRMSUJOQU1FLgotKyAgICAgICAgICAgICAgICAgICAgZG5sIEJ1dCBkb24ndCBhZGQgaXQKLSsgICAgICAgICAgICAgICAgICAgIGRubCAgIDEuIGlmIGl0J3MgdGhlIHN0YW5kYXJkIC91c3IvbGliLAotKyAgICAgICAgICAgICAgICAgICAgZG5sICAgMi4gaWYgaXQncyAvdXNyL2xvY2FsL2xpYiBhbmQgd2UgYXJlIHVzaW5nIEdDQyBvbiBMaW51eCwKLSsgICAgICAgICAgICAgICAgICAgIGRubCAgIDMuIGlmIGl0J3MgYWxyZWFkeSBwcmVzZW50IGluICRMREZMQUdTIG9yIHRoZSBhbHJlYWR5Ci0rICAgICAgICAgICAgICAgICAgICBkbmwgICAgICBjb25zdHJ1Y3RlZCAkTElCTkFNRSwKLSsgICAgICAgICAgICAgICAgICAgIGRubCAgIDQuIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYXMgYSBkaXJlY3RvcnkuCi0rICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiAhPSAiWC91c3IvbGliIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9Ci0rICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9saWJkaXIiID0gIlgvdXNyL2xvY2FsL2xpYiI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkR0NDIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW51eCopIGhhdmVpdD15ZXM7OwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXNhYwotKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQotKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRMREZMQUdTICRMSUJbXU5BTUU7IGRvCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUwkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAgICAgZG9uZQotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRubCBSZWFsbHkgYWRkICRhZGRpdGlvbmFsX2xpYmRpciB0byAkTElCTkFNRS4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0tTCRhZGRpdGlvbmFsX2xpYmRpciIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJExERkxBR1MgJExUTElCW11OQU1FOyBkbwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1MJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbmwgUmVhbGx5IGFkZCAkYWRkaXRpb25hbF9saWJkaXIgdG8gJExUTElCTkFNRS4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFRMSUJbXU5BTUU9IiR7TFRMSUJbXU5BTUV9JHtMVExJQltdTkFNRTorIH0tTCRhZGRpdGlvbmFsX2xpYmRpciIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICA7OwotKyAgICAgICAgICAgICAgICAgIC1SKikKLSsgICAgICAgICAgICAgICAgICAgIGRpcj1gZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzL15YLVIvLydgCi0rICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkZW5hYmxlX3JwYXRoIiAhPSBubzsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICBkbmwgUG90ZW50aWFsbHkgYWRkIERJUiB0byBycGF0aGRpcnMuCi0rICAgICAgICAgICAgICAgICAgICAgIGRubCBUaGUgcnBhdGhkaXJzIHdpbGwgYmUgYXBwZW5kZWQgdG8gJExJQk5BTUUgYXQgdGhlIGVuZC4KLSsgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQotKyAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkcnBhdGhkaXJzOyBkbwotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRkaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICBycGF0aGRpcnM9IiRycGF0aGRpcnMgJGRpciIKLSsgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgICAgZG5sIFBvdGVudGlhbGx5IGFkZCBESVIgdG8gbHRycGF0aGRpcnMuCi0rICAgICAgICAgICAgICAgICAgICAgIGRubCBUaGUgbHRycGF0aGRpcnMgd2lsbCBiZSBhcHBlbmRlZCB0byAkTFRMSUJOQU1FIGF0IHRoZSBlbmQuCi0rICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KLSsgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJGx0cnBhdGhkaXJzOyBkbwotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRkaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICBsdHJwYXRoZGlycz0iJGx0cnBhdGhkaXJzICRkaXIiCi0rICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgOzsKLSsgICAgICAgICAgICAgICAgICAtbCopCi0rICAgICAgICAgICAgICAgICAgICBkbmwgSGFuZGxlIHRoaXMgaW4gdGhlIG5leHQgcm91bmQuCi0rICAgICAgICAgICAgICAgICAgICBuYW1lc19uZXh0X3JvdW5kPSIkbmFtZXNfbmV4dF9yb3VuZCAiYGVjaG8gIlgkZGVwIiB8IHNlZCAtZSAncy9eWC1sLy8nYAotKyAgICAgICAgICAgICAgICAgICAgOzsKLSsgICAgICAgICAgICAgICAgICAqLmxhKQotKyAgICAgICAgICAgICAgICAgICAgZG5sIEhhbmRsZSB0aGlzIGluIHRoZSBuZXh0IHJvdW5kLiBUaHJvdyBhd2F5IHRoZSAubGEncwotKyAgICAgICAgICAgICAgICAgICAgZG5sIGRpcmVjdG9yeTsgaXQgaXMgYWxyZWFkeSBjb250YWluZWQgaW4gYSBwcmVjZWRpbmcgLUwKLSsgICAgICAgICAgICAgICAgICAgIGRubCBvcHRpb24uCi0rICAgICAgICAgICAgICAgICAgICBuYW1lc19uZXh0X3JvdW5kPSIkbmFtZXNfbmV4dF9yb3VuZCAiYGVjaG8gIlgkZGVwIiB8IHNlZCAtZSAncyxeWC4qLywsJyAtZSAncyxebGliLCwnIC1lICdzLFwubGEkLCwnYAotKyAgICAgICAgICAgICAgICAgICAgOzsKLSsgICAgICAgICAgICAgICAgICAqKQotKyAgICAgICAgICAgICAgICAgICAgZG5sIE1vc3QgbGlrZWx5IGFuIGltbWVkaWF0ZSBsaWJyYXJ5IG5hbWUuCi0rICAgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRkZXAiCi0rICAgICAgICAgICAgICAgICAgICBMVExJQltdTkFNRT0iJHtMVExJQltdTkFNRX0ke0xUTElCW11OQU1FOisgfSRkZXAiCi0rICAgICAgICAgICAgICAgICAgICA7OwotKyAgICAgICAgICAgICAgICBlc2FjCi0rICAgICAgICAgICAgICBkb25lCi0rICAgICAgICAgICAgZmkKLSsgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgIGRubCBEaWRuJ3QgZmluZCB0aGUgbGlicmFyeTsgYXNzdW1lIGl0IGlzIGluIHRoZSBzeXN0ZW0gZGlyZWN0b3JpZXMKLSsgICAgICAgICAgICBkbmwga25vd24gdG8gdGhlIGxpbmtlciBhbmQgcnVudGltZSBsb2FkZXIuIChBbGwgdGhlIHN5c3RlbQotKyAgICAgICAgICAgIGRubCBkaXJlY3RvcmllcyBrbm93biB0byB0aGUgbGlua2VyIHNob3VsZCBhbHNvIGJlIGtub3duIHRvIHRoZQotKyAgICAgICAgICAgIGRubCBydW50aW1lIGxvYWRlciwgb3RoZXJ3aXNlIHRoZSBzeXN0ZW0gaXMgc2V2ZXJlbHkgbWlzY29uZmlndXJlZC4pCi0rICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0tbCRuYW1lIgotKyAgICAgICAgICAgIExUTElCW11OQU1FPSIke0xUTElCW11OQU1FfSR7TFRMSUJbXU5BTUU6KyB9LWwkbmFtZSIKLSsgICAgICAgICAgZmkKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgZG9uZQotKyAgZG9uZQotKyAgaWYgdGVzdCAiWCRycGF0aGRpcnMiICE9ICJYIjsgdGhlbgotKyAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KLSsgICAgICBkbmwgV2VpcmQgcGxhdGZvcm06IG9ubHkgdGhlIGxhc3QgLXJwYXRoIG9wdGlvbiBjb3VudHMsIHRoZSB1c2VyIG11c3QKLSsgICAgICBkbmwgcGFzcyBhbGwgcGF0aCBlbGVtZW50cyBpbiBvbmUgb3B0aW9uLiBXZSBjYW4gYXJyYW5nZSB0aGF0IGZvciBhCi0rICAgICAgZG5sIHNpbmdsZSBsaWJyYXJ5LCBidXQgbm90IHdoZW4gbW9yZSB0aGFuIG9uZSAkTElCTkFNRXMgYXJlIHVzZWQuCi0rICAgICAgYWxsZGlycz0KLSsgICAgICBmb3IgZm91bmRfZGlyIGluICRycGF0aGRpcnM7IGRvCi0rICAgICAgICBhbGxkaXJzPSIke2FsbGRpcnN9JHthbGxkaXJzOiskaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcn0kZm91bmRfZGlyIgotKyAgICAgIGRvbmUKLSsgICAgICBkbmwgTm90ZTogaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyB1c2VzICRsaWJkaXIgYW5kICR3bC4KLSsgICAgICBhY2xfc2F2ZV9saWJkaXI9IiRsaWJkaXIiCi0rICAgICAgbGliZGlyPSIkYWxsZGlycyIKLSsgICAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0rICAgICAgbGliZGlyPSIkYWNsX3NhdmVfbGliZGlyIgotKyAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZsYWciCi0rICAgIGVsc2UKLSsgICAgICBkbmwgVGhlIC1ycGF0aCBvcHRpb25zIGFyZSBjdW11bGF0aXZlLgotKyAgICAgIGZvciBmb3VuZF9kaXIgaW4gJHJwYXRoZGlyczsgZG8KLSsgICAgICAgIGFjbF9zYXZlX2xpYmRpcj0iJGxpYmRpciIKLSsgICAgICAgIGxpYmRpcj0iJGZvdW5kX2RpciIKLSsgICAgICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSsgICAgICAgIGxpYmRpcj0iJGFjbF9zYXZlX2xpYmRpciIKLSsgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZsYWciCi0rICAgICAgZG9uZQotKyAgICBmaQotKyAgZmkKLSsgIGlmIHRlc3QgIlgkbHRycGF0aGRpcnMiICE9ICJYIjsgdGhlbgotKyAgICBkbmwgV2hlbiB1c2luZyBsaWJ0b29sLCB0aGUgb3B0aW9uIHRoYXQgd29ya3MgZm9yIGJvdGggbGlicmFyaWVzIGFuZAotKyAgICBkbmwgZXhlY3V0YWJsZXMgaXMgLVIuIFRoZSAtUiBvcHRpb25zIGFyZSBjdW11bGF0aXZlLgotKyAgICBmb3IgZm91bmRfZGlyIGluICRsdHJwYXRoZGlyczsgZG8KLSsgICAgICBMVExJQltdTkFNRT0iJHtMVExJQltdTkFNRX0ke0xUTElCW11OQU1FOisgfS1SJGZvdW5kX2RpciIKLSsgICAgZG9uZQotKyAgZmkKLStdKQotKwotK2RubCBBQ19MSUJfQVBQRU5EVE9WQVIoVkFSLCBDT05URU5UUykgYXBwZW5kcyB0aGUgZWxlbWVudHMgb2YgQ09OVEVOVFMgdG8gVkFSLAotK2RubCB1bmxlc3MgYWxyZWFkeSBwcmVzZW50IGluIFZBUi4KLStkbmwgV29ya3Mgb25seSBmb3IgQ1BQRkxBR1MsIG5vdCBmb3IgTElCKiB2YXJpYWJsZXMgYmVjYXVzZSB0aGF0IHNvbWV0aW1lcwotK2RubCBjb250YWlucyB0d28gb3IgdGhyZWUgY29uc2VjdXRpdmUgZWxlbWVudHMgdGhhdCBiZWxvbmcgdG9nZXRoZXIuCi0rQUNfREVGVU4oW0FDX0xJQl9BUFBFTkRUT1ZBUl0sCi0rWwotKyAgZm9yIGVsZW1lbnQgaW4gWyQyXTsgZG8KLSsgICAgaGF2ZWl0PQotKyAgICBmb3IgeCBpbiAkWyQxXTsgZG8KLSsgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQotKyAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRlbGVtZW50IjsgdGhlbgotKyAgICAgICAgaGF2ZWl0PXllcwotKyAgICAgICAgYnJlYWsKLSsgICAgICBmaQotKyAgICBkb25lCi0rICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgWyQxXT0iJHtbJDFdfSR7WyQxXTorIH0kZWxlbWVudCIKLSsgICAgZmkKLSsgIGRvbmUKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9saWItcHJlZml4Lm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9saWItcHJlZml4Lm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuOTIxNjYyMDU2IC0wNDAwCi1AQCAtMCwwICsxLDE1NSBAQAotKyMgbGliLXByZWZpeC5tNCBzZXJpYWwgMyAoZ2V0dGV4dC0wLjEzKQotK2RubCBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KLSsKLStkbmwgQUNfTElCX0FSR19XSVRIIGlzIHN5bm9ueW1vdXMgdG8gQUNfQVJHX1dJVEggaW4gYXV0b2NvbmYtMi4xMywgYW5kCi0rZG5sIHNpbWlsYXIgdG8gQUNfQVJHX1dJVEggaW4gYXV0b2NvbmYgMi41Mi4uLjIuNTcgZXhjZXB0IHRoYXQgaXMgZG9lc24ndAotK2RubCByZXF1aXJlIGV4Y2Vzc2l2ZSBicmFja2V0aW5nLgotK2lmZGVmKFtBQ19IRUxQX1NUUklOR10sCi0rW0FDX0RFRlVOKFtBQ19MSUJfQVJHX1dJVEhdLCBbQUNfQVJHX1dJVEgoWyQxXSxbWyQyXV0sWyQzXSxbJDRdKV0pXSwKLStbQUNfREVGVU4oW0FDX11bTElCX0FSR19XSVRIXSwgW0FDX0FSR19XSVRIKFskMV0sWyQyXSxbJDNdLFskNF0pXSldKQotKwotK2RubCBBQ19MSUJfUFJFRklYIGFkZHMgdG8gdGhlIENQUEZMQUdTIGFuZCBMREZMQUdTIHRoZSBmbGFncyB0aGF0IGFyZSBuZWVkZWQKLStkbmwgdG8gYWNjZXNzIHByZXZpb3VzbHkgaW5zdGFsbGVkIGxpYnJhcmllcy4gVGhlIGJhc2ljIGFzc3VtcHRpb24gaXMgdGhhdAotK2RubCBhIHVzZXIgd2lsbCB3YW50IHBhY2thZ2VzIHRvIHVzZSBvdGhlciBwYWNrYWdlcyBoZSBwcmV2aW91c2x5IGluc3RhbGxlZAotK2RubCB3aXRoIHRoZSBzYW1lIC0tcHJlZml4IG9wdGlvbi4KLStkbmwgVGhpcyBtYWNybyBpcyBub3QgbmVlZGVkIGlmIG9ubHkgQUNfTElCX0xJTktGTEFHUyBpcyB1c2VkIHRvIGxvY2F0ZQotK2RubCBsaWJyYXJpZXMsIGJ1dCBpcyBvdGhlcndpc2UgdmVyeSBjb252ZW5pZW50LgotK0FDX0RFRlVOKFtBQ19MSUJfUFJFRklYXSwKLStbCi0rICBBQ19CRUZPUkUoWyQwXSwgW0FDX0xJQl9MSU5LRkxBR1NdKQotKyAgQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pCi0rICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCi0rICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJFUEFSRV9QUkVGSVhdKQotKyAgZG5sIEJ5IGRlZmF1bHQsIGxvb2sgaW4gJGluY2x1ZGVkaXIgYW5kICRsaWJkaXIuCi0rICB1c2VfYWRkaXRpb25hbD15ZXMKLSsgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbCi0rICAgIGV2YWwgYWRkaXRpb25hbF9pbmNsdWRlZGlyPVwiJGluY2x1ZGVkaXJcIgotKyAgICBldmFsIGFkZGl0aW9uYWxfbGliZGlyPVwiJGxpYmRpclwiCi0rICBdKQotKyAgQUNfTElCX0FSR19XSVRIKFtsaWItcHJlZml4XSwKLStbICAtLXdpdGgtbGliLXByZWZpeFs9RElSXSBzZWFyY2ggZm9yIGxpYnJhcmllcyBpbiBESVIvaW5jbHVkZSBhbmQgRElSL2xpYgotKyAgLS13aXRob3V0LWxpYi1wcmVmaXggICAgZG9uJ3Qgc2VhcmNoIGZvciBsaWJyYXJpZXMgaW4gaW5jbHVkZWRpciBhbmQgbGliZGlyXSwKLStbCi0rICAgIGlmIHRlc3QgIlgkd2l0aHZhbCIgPSAiWG5vIjsgdGhlbgotKyAgICAgIHVzZV9hZGRpdGlvbmFsPW5vCi0rICAgIGVsc2UKLSsgICAgICBpZiB0ZXN0ICJYJHdpdGh2YWwiID0gIlgiOyB0aGVuCi0rICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoWwotKyAgICAgICAgICBldmFsIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj1cIiRpbmNsdWRlZGlyXCIKLSsgICAgICAgICAgZXZhbCBhZGRpdGlvbmFsX2xpYmRpcj1cIiRsaWJkaXJcIgotKyAgICAgICAgXSkKLSsgICAgICBlbHNlCi0rICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9IiR3aXRodmFsL2luY2x1ZGUiCi0rICAgICAgICBhZGRpdGlvbmFsX2xpYmRpcj0iJHdpdGh2YWwvbGliIgotKyAgICAgIGZpCi0rICAgIGZpCi0rXSkKLSsgIGlmIHRlc3QgJHVzZV9hZGRpdGlvbmFsID0geWVzOyB0aGVuCi0rICAgIGRubCBQb3RlbnRpYWxseSBhZGQgJGFkZGl0aW9uYWxfaW5jbHVkZWRpciB0byAkQ1BQRkxBR1MuCi0rICAgIGRubCBCdXQgZG9uJ3QgYWRkIGl0Ci0rICAgIGRubCAgIDEuIGlmIGl0J3MgdGhlIHN0YW5kYXJkIC91c3IvaW5jbHVkZSwKLSsgICAgZG5sICAgMi4gaWYgaXQncyBhbHJlYWR5IHByZXNlbnQgaW4gJENQUEZMQUdTLAotKyAgICBkbmwgICAzLiBpZiBpdCdzIC91c3IvbG9jYWwvaW5jbHVkZSBhbmQgd2UgYXJlIHVzaW5nIEdDQyBvbiBMaW51eCwKLSsgICAgZG5sICAgNC4gaWYgaXQgZG9lc24ndCBleGlzdCBhcyBhIGRpcmVjdG9yeS4KLSsgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiICE9ICJYL3Vzci9pbmNsdWRlIjsgdGhlbgotKyAgICAgIGhhdmVpdD0KLSsgICAgICBmb3IgeCBpbiAkQ1BQRkxBR1M7IGRvCi0rICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQotKyAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUkkYWRkaXRpb25hbF9pbmNsdWRlZGlyIjsgdGhlbgotKyAgICAgICAgICBoYXZlaXQ9eWVzCi0rICAgICAgICAgIGJyZWFrCi0rICAgICAgICBmaQotKyAgICAgIGRvbmUKLSsgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiID0gIlgvdXNyL2xvY2FsL2luY2x1ZGUiOyB0aGVuCi0rICAgICAgICAgIGlmIHRlc3QgLW4gIiRHQ0MiOyB0aGVuCi0rICAgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbgotKyAgICAgICAgICAgICAgbGludXgqKSBoYXZlaXQ9eWVzOzsKLSsgICAgICAgICAgICBlc2FjCi0rICAgICAgICAgIGZpCi0rICAgICAgICBmaQotKyAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9uYWxfaW5jbHVkZWRpciI7IHRoZW4KLSsgICAgICAgICAgICBkbmwgUmVhbGx5IGFkZCAkYWRkaXRpb25hbF9pbmNsdWRlZGlyIHRvICRDUFBGTEFHUy4KLSsgICAgICAgICAgICBDUFBGTEFHUz0iJHtDUFBGTEFHU30ke0NQUEZMQUdTOisgfS1JJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIKLSsgICAgICAgICAgZmkKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgZmkKLSsgICAgZG5sIFBvdGVudGlhbGx5IGFkZCAkYWRkaXRpb25hbF9saWJkaXIgdG8gJExERkxBR1MuCi0rICAgIGRubCBCdXQgZG9uJ3QgYWRkIGl0Ci0rICAgIGRubCAgIDEuIGlmIGl0J3MgdGhlIHN0YW5kYXJkIC91c3IvbGliLAotKyAgICBkbmwgICAyLiBpZiBpdCdzIGFscmVhZHkgcHJlc2VudCBpbiAkTERGTEFHUywKLSsgICAgZG5sICAgMy4gaWYgaXQncyAvdXNyL2xvY2FsL2xpYiBhbmQgd2UgYXJlIHVzaW5nIEdDQyBvbiBMaW51eCwKLSsgICAgZG5sICAgNC4gaWYgaXQgZG9lc24ndCBleGlzdCBhcyBhIGRpcmVjdG9yeS4KLSsgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgIT0gIlgvdXNyL2xpYiI7IHRoZW4KLSsgICAgICBoYXZlaXQ9Ci0rICAgICAgZm9yIHggaW4gJExERkxBR1M7IGRvCi0rICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQotKyAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUwkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCi0rICAgICAgICAgIGhhdmVpdD15ZXMKLSsgICAgICAgICAgYnJlYWsKLSsgICAgICAgIGZpCi0rICAgICAgZG9uZQotKyAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiA9ICJYL3Vzci9sb2NhbC9saWIiOyB0aGVuCi0rICAgICAgICAgIGlmIHRlc3QgLW4gIiRHQ0MiOyB0aGVuCi0rICAgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbgotKyAgICAgICAgICAgICAgbGludXgqKSBoYXZlaXQ9eWVzOzsKLSsgICAgICAgICAgICBlc2FjCi0rICAgICAgICAgIGZpCi0rICAgICAgICBmaQotKyAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgotKyAgICAgICAgICAgIGRubCBSZWFsbHkgYWRkICRhZGRpdGlvbmFsX2xpYmRpciB0byAkTERGTEFHUy4KLSsgICAgICAgICAgICBMREZMQUdTPSIke0xERkxBR1N9JHtMREZMQUdTOisgfS1MJGFkZGl0aW9uYWxfbGliZGlyIgotKyAgICAgICAgICBmaQotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICBmaQotKyAgZmkKLStdKQotKwotK2RubCBBQ19MSUJfUFJFUEFSRV9QUkVGSVggY3JlYXRlcyB2YXJpYWJsZXMgYWNsX2ZpbmFsX3ByZWZpeCwKLStkbmwgYWNsX2ZpbmFsX2V4ZWNfcHJlZml4LCBjb250YWluaW5nIHRoZSB2YWx1ZXMgdG8gd2hpY2ggJHByZWZpeCBhbmQKLStkbmwgJGV4ZWNfcHJlZml4IHdpbGwgZXhwYW5kIGF0IHRoZSBlbmQgb2YgdGhlIGNvbmZpZ3VyZSBzY3JpcHQuCi0rQUNfREVGVU4oW0FDX0xJQl9QUkVQQVJFX1BSRUZJWF0sCi0rWwotKyAgZG5sIFVuZm9ydHVuYXRlbHksIHByZWZpeCBhbmQgZXhlY19wcmVmaXggZ2V0IG9ubHkgZmluYWxseSBkZXRlcm1pbmVkCi0rICBkbmwgYXQgdGhlIGVuZCBvZiBjb25maWd1cmUuCi0rICBpZiB0ZXN0ICJYJHByZWZpeCIgPSAiWE5PTkUiOyB0aGVuCi0rICAgIGFjbF9maW5hbF9wcmVmaXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKLSsgIGVsc2UKLSsgICAgYWNsX2ZpbmFsX3ByZWZpeD0iJHByZWZpeCIKLSsgIGZpCi0rICBpZiB0ZXN0ICJYJGV4ZWNfcHJlZml4IiA9ICJYTk9ORSI7IHRoZW4KLSsgICAgYWNsX2ZpbmFsX2V4ZWNfcHJlZml4PScke3ByZWZpeH0nCi0rICBlbHNlCi0rICAgIGFjbF9maW5hbF9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4IgotKyAgZmkKLSsgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKLSsgIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCi0rICBldmFsIGFjbF9maW5hbF9leGVjX3ByZWZpeD1cIiRhY2xfZmluYWxfZXhlY19wcmVmaXhcIgotKyAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgotK10pCi0rCi0rZG5sIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbc3RhdGVtZW50XSkgZXZhbHVhdGVzIHN0YXRlbWVudCwgd2l0aCB0aGUKLStkbmwgdmFyaWFibGVzIHByZWZpeCBhbmQgZXhlY19wcmVmaXggYm91bmQgdG8gdGhlIHZhbHVlcyB0aGV5IHdpbGwgaGF2ZQotK2RubCBhdCB0aGUgZW5kIG9mIHRoZSBjb25maWd1cmUgc2NyaXB0LgotK0FDX0RFRlVOKFtBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVhdLAotK1sKLSsgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKLSsgIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCi0rICBhY2xfc2F2ZV9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4IgotKyAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCi0rICAkMQotKyAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKLSsgIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9sb25nZG91YmxlLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9sb25nZG91YmxlLm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuOTQyNjU4ODY0IC0wNDAwCi1AQCAtMCwwICsxLDMwIEBACi0rIyBsb25nZG91YmxlLm00IHNlcmlhbCAxIChnZXR0ZXh0LTAuMTIpCi0rZG5sIENvcHlyaWdodCAoQykgMjAwMi0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotK2RubCBUZXN0IHdoZXRoZXIgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIHRoZSAnbG9uZyBkb3VibGUnIHR5cGUuCi0rZG5sIFByZXJlcXVpc2l0ZTogQUNfUFJPR19DQwotKwotK0FDX0RFRlVOKFtndF9UWVBFX0xPTkdET1VCTEVdLAotK1sKLSsgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgbG9uZyBkb3VibGVdLCBndF9jdl9jX2xvbmdfZG91YmxlLAotKyAgICBbaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgICAgZ3RfY3ZfY19sb25nX2RvdWJsZT15ZXMKLSsgICAgIGVsc2UKLSsgICAgICAgQUNfVFJZX0NPTVBJTEUoWwotKyAgICAgICAgIC8qIFRoZSBTdGFyZGVudCBWaXN0cmEga25vd3Mgc2l6ZW9mKGxvbmcgZG91YmxlKSwgYnV0IGRvZXMgbm90IHN1cHBvcnQgaXQuICAqLwotKyAgICAgICAgIGxvbmcgZG91YmxlIGZvbyA9IDAuMDsKLSsgICAgICAgICAvKiBPbiBVbHRyaXggNC4zIGNjLCBsb25nIGRvdWJsZSBpcyA0IGFuZCBkb3VibGUgaXMgOC4gICovCi0rICAgICAgICAgaW50IGFycmF5IFsyKihzaXplb2YobG9uZyBkb3VibGUpID49IHNpemVvZihkb3VibGUpKSAtIDFdOwotKyAgICAgICAgIF0sICwKLSsgICAgICAgICBndF9jdl9jX2xvbmdfZG91YmxlPXllcywgZ3RfY3ZfY19sb25nX2RvdWJsZT1ubykKLSsgICAgIGZpXSkKLSsgIGlmIHRlc3QgJGd0X2N2X2NfbG9uZ19kb3VibGUgPSB5ZXM7IHRoZW4KLSsgICAgQUNfREVGSU5FKEhBVkVfTE9OR19ET1VCTEUsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdsb25nIGRvdWJsZScgdHlwZS5dKQotKyAgZmkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9sb25nbG9uZy5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvbG9uZ2xvbmcubTQJMjAwNC0wOS0xMiAxNDo0MDozNC45NDk2NTc4MDAgLTA0MDAKLUBAIC0wLDAgKzEsMjUgQEAKLSsjIGxvbmdsb25nLm00IHNlcmlhbCA0Ci0rZG5sIENvcHlyaWdodCAoQykgMTk5OS0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gUGF1bCBFZ2dlcnQuCi0rCi0rIyBEZWZpbmUgSEFWRV9MT05HX0xPTkcgaWYgJ2xvbmcgbG9uZycgd29ya3MuCi0rCi0rQUNfREVGVU4oW2ptX0FDX1RZUEVfTE9OR19MT05HXSwKLStbCi0rICBBQ19DQUNIRV9DSEVDSyhbZm9yIGxvbmcgbG9uZ10sIGFjX2N2X3R5cGVfbG9uZ19sb25nLAotKyAgW0FDX1RSWV9MSU5LKFtsb25nIGxvbmcgbGwgPSAxTEw7IGludCBpID0gNjM7XSwKLSsgICAgW2xvbmcgbG9uZyBsbG1heCA9IChsb25nIGxvbmcpIC0xOwotKyAgICAgcmV0dXJuIGxsIDw8IGkgfCBsbCA+PiBpIHwgbGxtYXggLyBsbCB8IGxsbWF4ICUgbGw7XSwKLSsgICAgYWNfY3ZfdHlwZV9sb25nX2xvbmc9eWVzLAotKyAgICBhY19jdl90eXBlX2xvbmdfbG9uZz1ubyldKQotKyAgaWYgdGVzdCAkYWNfY3ZfdHlwZV9sb25nX2xvbmcgPSB5ZXM7IHRoZW4KLSsgICAgQUNfREVGSU5FKEhBVkVfTE9OR19MT05HLCAxLAotKyAgICAgIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdsb25nIGxvbmcnIHR5cGUuXSkKLSsgIGZpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvTWFrZWZpbGUuYW0JMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L01ha2VmaWxlLmFtCTIwMDQtMDktMTIgMTQ6NDA6MzUuMDQ4NjQyNzUyIC0wNDAwCi1AQCAtMCwwICsxIEBACi0rRVhUUkFfRElTVCA9IGNvZGVzZXQubTQgZ2V0dGV4dC5tNCBnbGliYzIxLm00IGljb252Lm00IGludGRpdjAubTQgaW50bWF4Lm00IGludHR5cGVzLm00IGludHR5cGVzX2gubTQgaW50dHlwZXMtcHJpLm00IGlzYy1wb3NpeC5tNCBsY21lc3NhZ2UubTQgbGliLWxkLm00IGxpYi1saW5rLm00IGxpYi1wcmVmaXgubTQgbG9uZ2RvdWJsZS5tNCBsb25nbG9uZy5tNCBubHMubTQgcG8ubTQgcHJpbnRmLXBvc2l4Lm00IHByb2d0ZXN0Lm00IHNpZ25lZC5tNCBzaXplX21heC5tNCBzdGRpbnRfaC5tNCB1aW50bWF4X3QubTQgdWxvbmdsb25nLm00IHdjaGFyX3QubTQgd2ludF90Lm00IHhzaXplLm00Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L25scy5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvbmxzLm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuOTU1NjU2ODg4IC0wNDAwCi1AQCAtMCwwICsxLDQ5IEBACi0rIyBubHMubTQgc2VyaWFsIDEgKGdldHRleHQtMC4xMikKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLStkbmwKLStkbmwgVGhpcyBmaWxlIGNhbiBjYW4gYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlcgotK2RubCB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugb3IgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rZG5sIExpY2Vuc2UgYnV0IHdoaWNoIHN0aWxsIHdhbnQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgR05VIGdldHRleHQKLStkbmwgZnVuY3Rpb25hbGl0eS4KLStkbmwgUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIGNvZGUgb2YgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgaXMgY292ZXJlZAotK2RubCBieSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYW5kIHRoZSByZXN0IG9mIHRoZSBHTlUKLStkbmwgZ2V0dGV4dCBwYWNrYWdlIHBhY2thZ2UgaXMgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rZG5sIFRoZXkgYXJlICpub3QqIGluIHRoZSBwdWJsaWMgZG9tYWluLgotKwotK2RubCBBdXRob3JzOgotK2RubCAgIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAxOTk1LTIwMDAuCi0rZG5sICAgQnJ1bm8gSGFpYmxlIDxoYWlibGVAY2xpc3AuY29ucy5vcmc+LCAyMDAwLTIwMDMuCi0rCi0rQUNfREVGVU4oW0FNX05MU10sCi0rWwotKyAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIE5MUyBpcyByZXF1ZXN0ZWRdKQotKyAgZG5sIERlZmF1bHQgaXMgZW5hYmxlZCBOTFMKLSsgIEFDX0FSR19FTkFCTEUobmxzLAotKyAgICBbICAtLWRpc2FibGUtbmxzICAgICAgICAgICBkbyBub3QgdXNlIE5hdGl2ZSBMYW5ndWFnZSBTdXBwb3J0XSwKLSsgICAgVVNFX05MUz0kZW5hYmxldmFsLCBVU0VfTkxTPXllcykKLSsgIEFDX01TR19SRVNVTFQoJFVTRV9OTFMpCi0rICBBQ19TVUJTVChVU0VfTkxTKQotK10pCi0rCi0rQUNfREVGVU4oW0FNX01LSU5TVEFMTERJUlNdLAotK1sKLSsgIGRubCBJZiB0aGUgQUNfQ09ORklHX0FVWF9ESVIgbWFjcm8gZm9yIGF1dG9jb25mIGlzIHVzZWQgd2UgcG9zc2libHkKLSsgIGRubCBmaW5kIHRoZSBta2luc3RhbGxkaXJzIHNjcmlwdCBpbiBhbm90aGVyIHN1YmRpciBidXQgJCh0b3Bfc3JjZGlyKS4KLSsgIGRubCBUcnkgdG8gbG9jYXRlIGl0LgotKyAgTUtJTlNUQUxMRElSUz0KLSsgIGlmIHRlc3QgLW4gIiRhY19hdXhfZGlyIjsgdGhlbgotKyAgICBjYXNlICIkYWNfYXV4X2RpciIgaW4KLSsgICAgICAvKikgTUtJTlNUQUxMRElSUz0iJGFjX2F1eF9kaXIvbWtpbnN0YWxsZGlycyIgOzsKLSsgICAgICAqKSBNS0lOU1RBTExESVJTPSJcJCh0b3BfYnVpbGRkaXIpLyRhY19hdXhfZGlyL21raW5zdGFsbGRpcnMiIDs7Ci0rICAgIGVzYWMKLSsgIGZpCi0rICBpZiB0ZXN0IC16ICIkTUtJTlNUQUxMRElSUyI7IHRoZW4KLSsgICAgTUtJTlNUQUxMRElSUz0iXCQodG9wX3NyY2RpcikvbWtpbnN0YWxsZGlycyIKLSsgIGZpCi0rICBBQ19TVUJTVChNS0lOU1RBTExESVJTKQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L3BvLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9wby5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0Ljk2MTY1NTk3NiAtMDQwMAotQEAgLTAsMCArMSw0MjYgQEAKLSsjIHBvLm00IHNlcmlhbCAzIChnZXR0ZXh0LTAuMTQpCi0rZG5sIENvcHlyaWdodCAoQykgMTk5NS0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rZG5sCi0rZG5sIFRoaXMgZmlsZSBjYW4gY2FuIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIKLStkbmwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0Ci0rZG5sIGZ1bmN0aW9uYWxpdHkuCi0rZG5sIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKLStkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCi0rZG5sIGdldHRleHQgcGFja2FnZSBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotK2RubCBUaGV5IGFyZSAqbm90KiBpbiB0aGUgcHVibGljIGRvbWFpbi4KLSsKLStkbmwgQXV0aG9yczoKLStkbmwgICBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5NS0yMDAwLgotK2RubCAgIEJydW5vIEhhaWJsZSA8aGFpYmxlQGNsaXNwLmNvbnMub3JnPiwgMjAwMC0yMDAzLgotKwotK2RubCBDaGVja3MgZm9yIGFsbCBwcmVyZXF1aXNpdGVzIG9mIHRoZSBwbyBzdWJkaXJlY3RvcnkuCi0rQUNfREVGVU4oW0FNX1BPX1NVQkRJUlNdLAotK1sKLSsgIEFDX1JFUVVJUkUoW0FDX1BST0dfTUFLRV9TRVRdKWRubAotKyAgQUNfUkVRVUlSRShbQUNfUFJPR19JTlNUQUxMXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FNX01LSU5TVEFMTERJUlNdKWRubAotKyAgQUNfUkVRVUlSRShbQU1fTkxTXSlkbmwKLSsKLSsgIGRubCBQZXJmb3JtIHRoZSBmb2xsb3dpbmcgdGVzdHMgYWxzbyBpZiAtLWRpc2FibGUtbmxzIGhhcyBiZWVuIGdpdmVuLAotKyAgZG5sIGJlY2F1c2UgdGhleSBhcmUgbmVlZGVkIGZvciAibWFrZSBkaXN0IiB0byB3b3JrLgotKwotKyAgZG5sIFNlYXJjaCBmb3IgR05VIG1zZ2ZtdCBpbiB0aGUgUEFUSC4KLSsgIGRubCBUaGUgZmlyc3QgdGVzdCBleGNsdWRlcyBTb2xhcmlzIG1zZ2ZtdCBhbmQgZWFybHkgR05VIG1zZ2ZtdCB2ZXJzaW9ucy4KLSsgIGRubCBUaGUgc2Vjb25kIHRlc3QgZXhjbHVkZXMgRnJlZUJTRCBtc2dmbXQuCi0rICBBTV9QQVRIX1BST0dfV0lUSF9URVNUKE1TR0ZNVCwgbXNnZm10LAotKyAgICBbJGFjX2Rpci8kYWNfd29yZCAtLXN0YXRpc3RpY3MgL2Rldi9udWxsID4vZGV2L251bGwgMj4mMSAmJgotKyAgICAgKGlmICRhY19kaXIvJGFjX3dvcmQgLS1zdGF0aXN0aWNzIC9kZXYvbnVsbCAyPiYxID4vZGV2L251bGwgfCBncmVwIHVzYWdlID4vZGV2L251bGw7IHRoZW4gZXhpdCAxOyBlbHNlIGV4aXQgMDsgZmkpXSwKLSsgICAgOikKLSsgIEFDX1BBVEhfUFJPRyhHTVNHRk1ULCBnbXNnZm10LCAkTVNHRk1UKQotKwotKyAgZG5sIFNlYXJjaCBmb3IgR05VIHhnZXR0ZXh0IDAuMTIgb3IgbmV3ZXIgaW4gdGhlIFBBVEguCi0rICBkbmwgVGhlIGZpcnN0IHRlc3QgZXhjbHVkZXMgU29sYXJpcyB4Z2V0dGV4dCBhbmQgZWFybHkgR05VIHhnZXR0ZXh0IHZlcnNpb25zLgotKyAgZG5sIFRoZSBzZWNvbmQgdGVzdCBleGNsdWRlcyBGcmVlQlNEIHhnZXR0ZXh0LgotKyAgQU1fUEFUSF9QUk9HX1dJVEhfVEVTVChYR0VUVEVYVCwgeGdldHRleHQsCi0rICAgIFskYWNfZGlyLyRhY193b3JkIC0tb21pdC1oZWFkZXIgLS1jb3B5cmlnaHQtaG9sZGVyPSAtLW1zZ2lkLWJ1Z3MtYWRkcmVzcz0gL2Rldi9udWxsID4vZGV2L251bGwgMj4mMSAmJgotKyAgICAgKGlmICRhY19kaXIvJGFjX3dvcmQgLS1vbWl0LWhlYWRlciAtLWNvcHlyaWdodC1ob2xkZXI9IC0tbXNnaWQtYnVncy1hZGRyZXNzPSAvZGV2L251bGwgMj4mMSA+L2Rldi9udWxsIHwgZ3JlcCB1c2FnZSA+L2Rldi9udWxsOyB0aGVuIGV4aXQgMTsgZWxzZSBleGl0IDA7IGZpKV0sCi0rICAgIDopCi0rICBkbmwgUmVtb3ZlIGxlZnRvdmVyIGZyb20gRnJlZUJTRCB4Z2V0dGV4dCBjYWxsLgotKyAgcm0gLWYgbWVzc2FnZXMucG8KLSsKLSsgIGRubCBTZWFyY2ggZm9yIEdOVSBtc2dtZXJnZSAwLjExIG9yIG5ld2VyIGluIHRoZSBQQVRILgotKyAgQU1fUEFUSF9QUk9HX1dJVEhfVEVTVChNU0dNRVJHRSwgbXNnbWVyZ2UsCi0rICAgIFskYWNfZGlyLyRhY193b3JkIC0tdXBkYXRlIC1xIC9kZXYvbnVsbCAvZGV2L251bGwgPi9kZXYvbnVsbCAyPiYxXSwgOikKLSsKLSsgIGRubCBUaGlzIGNvdWxkIGdvIGF3YXkgc29tZSBkYXk7IHRoZSBQQVRIX1BST0dfV0lUSF9URVNUIGFscmVhZHkgZG9lcyBpdC4KLSsgIGRubCBUZXN0IHdoZXRoZXIgd2UgcmVhbGx5IGZvdW5kIEdOVSBtc2dmbXQuCi0rICBpZiB0ZXN0ICIkR01TR0ZNVCIgIT0gIjoiOyB0aGVuCi0rICAgIGRubCBJZiBpdCBpcyBubyBHTlUgbXNnZm10IHdlIGRlZmluZSBpdCBhcyA6IHNvIHRoYXQgdGhlCi0rICAgIGRubCBNYWtlZmlsZXMgc3RpbGwgY2FuIHdvcmsuCi0rICAgIGlmICRHTVNHRk1UIC0tc3RhdGlzdGljcyAvZGV2L251bGwgPi9kZXYvbnVsbCAyPiYxICYmCi0rICAgICAgIChpZiAkR01TR0ZNVCAtLXN0YXRpc3RpY3MgL2Rldi9udWxsIDI+JjEgPi9kZXYvbnVsbCB8IGdyZXAgdXNhZ2UgPi9kZXYvbnVsbDsgdGhlbiBleGl0IDE7IGVsc2UgZXhpdCAwOyBmaSk7IHRoZW4KLSsgICAgICA6IDsKLSsgICAgZWxzZQotKyAgICAgIEdNU0dGTVQ9YGVjaG8gIiRHTVNHRk1UIiB8IHNlZCAtZSAncyxeLiovLCwnYAotKyAgICAgIEFDX01TR19SRVNVTFQoCi0rICAgICAgICBbZm91bmQgJEdNU0dGTVQgcHJvZ3JhbSBpcyBub3QgR05VIG1zZ2ZtdDsgaWdub3JlIGl0XSkKLSsgICAgICBHTVNHRk1UPSI6IgotKyAgICBmaQotKyAgZmkKLSsKLSsgIGRubCBUaGlzIGNvdWxkIGdvIGF3YXkgc29tZSBkYXk7IHRoZSBQQVRIX1BST0dfV0lUSF9URVNUIGFscmVhZHkgZG9lcyBpdC4KLSsgIGRubCBUZXN0IHdoZXRoZXIgd2UgcmVhbGx5IGZvdW5kIEdOVSB4Z2V0dGV4dC4KLSsgIGlmIHRlc3QgIiRYR0VUVEVYVCIgIT0gIjoiOyB0aGVuCi0rICAgIGRubCBJZiBpdCBpcyBubyBHTlUgeGdldHRleHQgd2UgZGVmaW5lIGl0IGFzIDogc28gdGhhdCB0aGUKLSsgICAgZG5sIE1ha2VmaWxlcyBzdGlsbCBjYW4gd29yay4KLSsgICAgaWYgJFhHRVRURVhUIC0tb21pdC1oZWFkZXIgLS1jb3B5cmlnaHQtaG9sZGVyPSAtLW1zZ2lkLWJ1Z3MtYWRkcmVzcz0gL2Rldi9udWxsID4vZGV2L251bGwgMj4mMSAmJgotKyAgICAgICAoaWYgJFhHRVRURVhUIC0tb21pdC1oZWFkZXIgLS1jb3B5cmlnaHQtaG9sZGVyPSAtLW1zZ2lkLWJ1Z3MtYWRkcmVzcz0gL2Rldi9udWxsIDI+JjEgPi9kZXYvbnVsbCB8IGdyZXAgdXNhZ2UgPi9kZXYvbnVsbDsgdGhlbiBleGl0IDE7IGVsc2UgZXhpdCAwOyBmaSk7IHRoZW4KLSsgICAgICA6IDsKLSsgICAgZWxzZQotKyAgICAgIEFDX01TR19SRVNVTFQoCi0rICAgICAgICBbZm91bmQgeGdldHRleHQgcHJvZ3JhbSBpcyBub3QgR05VIHhnZXR0ZXh0OyBpZ25vcmUgaXRdKQotKyAgICAgIFhHRVRURVhUPSI6IgotKyAgICBmaQotKyAgICBkbmwgUmVtb3ZlIGxlZnRvdmVyIGZyb20gRnJlZUJTRCB4Z2V0dGV4dCBjYWxsLgotKyAgICBybSAtZiBtZXNzYWdlcy5wbwotKyAgZmkKLSsKLSsgIEFDX09VVFBVVF9DT01NQU5EUyhbCi0rICAgIGZvciBhY19maWxlIGluICRDT05GSUdfRklMRVM7IGRvCi0rICAgICAgIyBTdXBwb3J0ICJvdXRmaWxlWzppbmZpbGVbOmluZmlsZS4uLl1dIgotKyAgICAgIGNhc2UgIiRhY19maWxlIiBpbgotKyAgICAgICAgKjoqKSBhY19maWxlPWBlY2hvICIkYWNfZmlsZSJ8c2VkICdzJTouKiUlJ2AgOzsKLSsgICAgICBlc2FjCi0rICAgICAgIyBQTyBkaXJlY3RvcmllcyBoYXZlIGEgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGZyb20gTWFrZWZpbGUuaW4uaW4uCi0rICAgICAgY2FzZSAiJGFjX2ZpbGUiIGluICovTWFrZWZpbGUuaW4pCi0rICAgICAgICAjIEFkanVzdCBhIHJlbGF0aXZlIHNyY2Rpci4KLSsgICAgICAgIGFjX2Rpcj1gZWNobyAiJGFjX2ZpbGUifHNlZCAncyUvW14vXVteL10qJCUlJ2AKLSsgICAgICAgIGFjX2Rpcl9zdWZmaXg9Ii9gZWNobyAiJGFjX2RpciJ8c2VkICdzJV5cLi8lJSdgIgotKyAgICAgICAgYWNfZG90cz1gZWNobyAiJGFjX2Rpcl9zdWZmaXgifHNlZCAncyUvW14vXSolLi4vJWcnYAotKyAgICAgICAgIyBJbiBhdXRvY29uZi0yLjEzIGl0IGlzIGNhbGxlZCAkYWNfZ2l2ZW5fc3JjZGlyLgotKyAgICAgICAgIyBJbiBhdXRvY29uZi0yLjUwIGl0IGlzIGNhbGxlZCAkc3JjZGlyLgotKyAgICAgICAgdGVzdCAtbiAiJGFjX2dpdmVuX3NyY2RpciIgfHwgYWNfZ2l2ZW5fc3JjZGlyPSIkc3JjZGlyIgotKyAgICAgICAgY2FzZSAiJGFjX2dpdmVuX3NyY2RpciIgaW4KLSsgICAgICAgICAgLikgIHRvcF9zcmNkaXI9YGVjaG8gJGFjX2RvdHN8c2VkICdzJS8kJSUnYCA7OwotKyAgICAgICAgICAvKikgdG9wX3NyY2Rpcj0iJGFjX2dpdmVuX3NyY2RpciIgOzsKLSsgICAgICAgICAgKikgIHRvcF9zcmNkaXI9IiRhY19kb3RzJGFjX2dpdmVuX3NyY2RpciIgOzsKLSsgICAgICAgIGVzYWMKLSsgICAgICAgIGlmIHRlc3QgLWYgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9QT1RGSUxFUy5pbiI7IHRoZW4KLSsgICAgICAgICAgcm0gLWYgIiRhY19kaXIvUE9URklMRVMiCi0rICAgICAgICAgIHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBjcmVhdGluZyAkYWNfZGlyL1BPVEZJTEVTIiB8fCBlY2hvICJjcmVhdGluZyAkYWNfZGlyL1BPVEZJTEVTIgotKyAgICAgICAgICBjYXQgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9QT1RGSUxFUy5pbiIgfCBzZWQgLWUgIi9eIy9kIiAtZSAiL15bIAldKlwkL2QiIC1lICJzLC4qLCAgICAgJHRvcF9zcmNkaXIvJiBcXFxcLCIgfCBzZWQgLWUgIlwkcy9cKC4qXCkgXFxcXC9cMS8iID4gIiRhY19kaXIvUE9URklMRVMiCi0rICAgICAgICAgIFBPTUFLRUZJTEVERVBTPSJQT1RGSUxFUy5pbiIKLSsgICAgICAgICAgIyBBTExfTElOR1VBUywgUE9GSUxFUywgVVBEQVRFUE9GSUxFUywgRFVNTVlQT0ZJTEVTLCBHTU9GSUxFUyBkZXBlbmQKLSsgICAgICAgICAgIyBvbiAkYWNfZGlyIGJ1dCBkb24ndCBkZXBlbmQgb24gdXNlci1zcGVjaWZpZWQgY29uZmlndXJhdGlvbgotKyAgICAgICAgICAjIHBhcmFtZXRlcnMuCi0rICAgICAgICAgIGlmIHRlc3QgLWYgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9MSU5HVUFTIjsgdGhlbgotKyAgICAgICAgICAgICMgVGhlIExJTkdVQVMgZmlsZSBjb250YWlucyB0aGUgc2V0IG9mIGF2YWlsYWJsZSBsYW5ndWFnZXMuCi0rICAgICAgICAgICAgaWYgdGVzdCAtbiAiJE9CU09MRVRFX0FMTF9MSU5HVUFTIjsgdGhlbgotKyAgICAgICAgICAgICAgdGVzdCAtbiAiJGFzX21lIiAmJiBlY2hvICIkYXNfbWU6IHNldHRpbmcgQUxMX0xJTkdVQVMgaW4gY29uZmlndXJlLmluIGlzIG9ic29sZXRlIiB8fCBlY2hvICJzZXR0aW5nIEFMTF9MSU5HVUFTIGluIGNvbmZpZ3VyZS5pbiBpcyBvYnNvbGV0ZSIKLSsgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIEFMTF9MSU5HVUFTXz1gc2VkIC1lICIvXiMvZCIgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9MSU5HVUFTImAKLSsgICAgICAgICAgICAjIEhpZGUgdGhlIEFMTF9MSU5HVUFTIGFzc2lnbWVudCBmcm9tIGF1dG9tYWtlLgotKyAgICAgICAgICAgIGV2YWwgJ0FMTF9MSU5HVUFTJyc9JEFMTF9MSU5HVUFTXycKLSsgICAgICAgICAgICBQT01BS0VGSUxFREVQUz0iJFBPTUFLRUZJTEVERVBTIExJTkdVQVMiCi0rICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAjIFRoZSBzZXQgb2YgYXZhaWxhYmxlIGxhbmd1YWdlcyB3YXMgZ2l2ZW4gaW4gY29uZmlndXJlLmluLgotKyAgICAgICAgICAgIGV2YWwgJ0FMTF9MSU5HVUFTJyc9JE9CU09MRVRFX0FMTF9MSU5HVUFTJwotKyAgICAgICAgICBmaQotKyAgICAgICAgICAjIENvbXB1dGUgUE9GSUxFUwotKyAgICAgICAgICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChsYW5nKS5wbykKLSsgICAgICAgICAgIyBDb21wdXRlIFVQREFURVBPRklMRVMKLSsgICAgICAgICAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChsYW5nKS5wby11cGRhdGUpCi0rICAgICAgICAgICMgQ29tcHV0ZSBEVU1NWVBPRklMRVMKLSsgICAgICAgICAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChsYW5nKS5ub3ApCi0rICAgICAgICAgICMgQ29tcHV0ZSBHTU9GSUxFUwotKyAgICAgICAgICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChsYW5nKS5nbW8pCi0rICAgICAgICAgIGNhc2UgIiRhY19naXZlbl9zcmNkaXIiIGluCi0rICAgICAgICAgICAgLikgc3JjZGlycHJlPSA7OwotKyAgICAgICAgICAgICopIHNyY2RpcnByZT0nJChzcmNkaXIpLycgOzsKLSsgICAgICAgICAgZXNhYwotKyAgICAgICAgICBQT0ZJTEVTPQotKyAgICAgICAgICBVUERBVEVQT0ZJTEVTPQotKyAgICAgICAgICBEVU1NWVBPRklMRVM9Ci0rICAgICAgICAgIEdNT0ZJTEVTPQotKyAgICAgICAgICBmb3IgbGFuZyBpbiAkQUxMX0xJTkdVQVM7IGRvCi0rICAgICAgICAgICAgUE9GSUxFUz0iJFBPRklMRVMgJHNyY2RpcnByZSRsYW5nLnBvIgotKyAgICAgICAgICAgIFVQREFURVBPRklMRVM9IiRVUERBVEVQT0ZJTEVTICRsYW5nLnBvLXVwZGF0ZSIKLSsgICAgICAgICAgICBEVU1NWVBPRklMRVM9IiREVU1NWVBPRklMRVMgJGxhbmcubm9wIgotKyAgICAgICAgICAgIEdNT0ZJTEVTPSIkR01PRklMRVMgJHNyY2RpcnByZSRsYW5nLmdtbyIKLSsgICAgICAgICAgZG9uZQotKyAgICAgICAgICAjIENBVEFMT0dTIGRlcGVuZHMgb24gYm90aCAkYWNfZGlyIGFuZCB0aGUgdXNlcidzIExJTkdVQVMKLSsgICAgICAgICAgIyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLSsgICAgICAgICAgSU5TVF9MSU5HVUFTPQotKyAgICAgICAgICBpZiB0ZXN0IC1uICIkQUxMX0xJTkdVQVMiOyB0aGVuCi0rICAgICAgICAgICAgZm9yIHByZXNlbnRsYW5nIGluICRBTExfTElOR1VBUzsgZG8KLSsgICAgICAgICAgICAgIHVzZWl0PW5vCi0rICAgICAgICAgICAgICBpZiB0ZXN0ICIlVU5TRVQlIiAhPSAiJExJTkdVQVMiOyB0aGVuCi0rICAgICAgICAgICAgICAgIGRlc2lyZWRsYW5ndWFnZXM9IiRMSU5HVUFTIgotKyAgICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICBkZXNpcmVkbGFuZ3VhZ2VzPSIkQUxMX0xJTkdVQVMiCi0rICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgZm9yIGRlc2lyZWRsYW5nIGluICRkZXNpcmVkbGFuZ3VhZ2VzOyBkbwotKyAgICAgICAgICAgICAgICAjIFVzZSB0aGUgcHJlc2VudGxhbmcgY2F0YWxvZyBpZiBkZXNpcmVkbGFuZyBpcwotKyAgICAgICAgICAgICAgICAjICAgYS4gZXF1YWwgdG8gcHJlc2VudGxhbmcsIG9yCi0rICAgICAgICAgICAgICAgICMgICBiLiBhIHZhcmlhbnQgb2YgcHJlc2VudGxhbmcgKGJlY2F1c2UgaW4gdGhpcyBjYXNlLAotKyAgICAgICAgICAgICAgICAjICAgICAgcHJlc2VudGxhbmcgY2FuIGJlIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgbWVzc2FnZXMKLSsgICAgICAgICAgICAgICAgIyAgICAgIHdoaWNoIGFyZSBub3QgdHJhbnNsYXRlZCBpbiB0aGUgZGVzaXJlZGxhbmcgY2F0YWxvZykuCi0rICAgICAgICAgICAgICAgIGNhc2UgIiRkZXNpcmVkbGFuZyIgaW4KLSsgICAgICAgICAgICAgICAgICAiJHByZXNlbnRsYW5nIiopIHVzZWl0PXllczs7Ci0rICAgICAgICAgICAgICAgIGVzYWMKLSsgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgICAgIGlmIHRlc3QgJHVzZWl0ID0geWVzOyB0aGVuCi0rICAgICAgICAgICAgICAgIElOU1RfTElOR1VBUz0iJElOU1RfTElOR1VBUyAkcHJlc2VudGxhbmciCi0rICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgZmkKLSsgICAgICAgICAgQ0FUQUxPR1M9Ci0rICAgICAgICAgIGlmIHRlc3QgLW4gIiRJTlNUX0xJTkdVQVMiOyB0aGVuCi0rICAgICAgICAgICAgZm9yIGxhbmcgaW4gJElOU1RfTElOR1VBUzsgZG8KLSsgICAgICAgICAgICAgIENBVEFMT0dTPSIkQ0FUQUxPR1MgJGxhbmcuZ21vIgotKyAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgZmkKLSsgICAgICAgICAgdGVzdCAtbiAiJGFzX21lIiAmJiBlY2hvICIkYXNfbWU6IGNyZWF0aW5nICRhY19kaXIvTWFrZWZpbGUiIHx8IGVjaG8gImNyZWF0aW5nICRhY19kaXIvTWFrZWZpbGUiCi0rICAgICAgICAgIHNlZCAtZSAiL15QT1RGSUxFUyA9L3IgJGFjX2Rpci9QT1RGSUxFUyIgLWUgIi9eIyBNYWtldmFycy9yICRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9NYWtldmFycyIgLWUgInN8QFBPRklMRVNAfCRQT0ZJTEVTfGciIC1lICJzfEBVUERBVEVQT0ZJTEVTQHwkVVBEQVRFUE9GSUxFU3xnIiAtZSAic3xARFVNTVlQT0ZJTEVTQHwkRFVNTVlQT0ZJTEVTfGciIC1lICJzfEBHTU9GSUxFU0B8JEdNT0ZJTEVTfGciIC1lICJzfEBDQVRBTE9HU0B8JENBVEFMT0dTfGciIC1lICJzfEBQT01BS0VGSUxFREVQU0B8JFBPTUFLRUZJTEVERVBTfGciICIkYWNfZGlyL01ha2VmaWxlLmluIiA+ICIkYWNfZGlyL01ha2VmaWxlIgotKyAgICAgICAgICBmb3IgZiBpbiAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyIi9SdWxlcy0qOyBkbwotKyAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRmIjsgdGhlbgotKyAgICAgICAgICAgICAgY2FzZSAiJGYiIGluCi0rICAgICAgICAgICAgICAgICoub3JpZyB8ICouYmFrIHwgKn4pIDs7Ci0rICAgICAgICAgICAgICAgICopIGNhdCAiJGYiID4+ICIkYWNfZGlyL01ha2VmaWxlIiA7OwotKyAgICAgICAgICAgICAgZXNhYwotKyAgICAgICAgICAgIGZpCi0rICAgICAgICAgIGRvbmUKLSsgICAgICAgIGZpCi0rICAgICAgICA7OwotKyAgICAgIGVzYWMKLSsgICAgZG9uZV0sCi0rICAgWyMgQ2FwdHVyZSB0aGUgdmFsdWUgb2Ygb2Jzb2xldGUgQUxMX0xJTkdVQVMgYmVjYXVzZSB3ZSBuZWVkIGl0IHRvIGNvbXB1dGUKLSsgICAgIyBQT0ZJTEVTLCBVUERBVEVQT0ZJTEVTLCBEVU1NWVBPRklMRVMsIEdNT0ZJTEVTLCBDQVRBTE9HUy4gQnV0IGhpZGUgaXQKLSsgICAgIyBmcm9tIGF1dG9tYWtlLgotKyAgICBldmFsICdPQlNPTEVURV9BTExfTElOR1VBUycnPSIkQUxMX0xJTkdVQVMiJwotKyAgICAjIENhcHR1cmUgdGhlIHZhbHVlIG9mIExJTkdVQVMgYmVjYXVzZSB3ZSBuZWVkIGl0IHRvIGNvbXB1dGUgQ0FUQUxPR1MuCi0rICAgIExJTkdVQVM9IiR7TElOR1VBUy0lVU5TRVQlfSIKLSsgICBdKQotK10pCi0rCi0rZG5sIFBvc3Rwcm9jZXNzZXMgYSBNYWtlZmlsZSBpbiBhIGRpcmVjdG9yeSBjb250YWluaW5nIFBPIGZpbGVzLgotK0FDX0RFRlVOKFtBTV9QT1NUUFJPQ0VTU19QT19NQUtFRklMRV0sCi0rWwotKyAgIyBXaGVuIHRoaXMgY29kZSBpcyBydW4sIGluIGNvbmZpZy5zdGF0dXMsIHR3byB2YXJpYWJsZXMgaGF2ZSBhbHJlYWR5IGJlZW4KLSsgICMgc2V0OgotKyAgIyAtIE9CU09MRVRFX0FMTF9MSU5HVUFTIGlzIHRoZSB2YWx1ZSBvZiBMSU5HVUFTIHNldCBpbiBjb25maWd1cmUuaW4sCi0rICAjIC0gTElOR1VBUyBpcyB0aGUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIExJTkdVQVMgYXQgY29uZmlndXJlCi0rICAjICAgdGltZS4KLSsKLStjaGFuZ2VxdW90ZSgsKWRubAotKyAgIyBBZGp1c3QgYSByZWxhdGl2ZSBzcmNkaXIuCi0rICBhY19kaXI9YGVjaG8gIiRhY19maWxlInxzZWQgJ3MlL1teL11bXi9dKiQlJSdgCi0rICBhY19kaXJfc3VmZml4PSIvYGVjaG8gIiRhY19kaXIifHNlZCAncyVeXC4vJSUnYCIKLSsgIGFjX2RvdHM9YGVjaG8gIiRhY19kaXJfc3VmZml4InxzZWQgJ3MlL1teL10qJS4uLyVnJ2AKLSsgICMgSW4gYXV0b2NvbmYtMi4xMyBpdCBpcyBjYWxsZWQgJGFjX2dpdmVuX3NyY2Rpci4KLSsgICMgSW4gYXV0b2NvbmYtMi41MCBpdCBpcyBjYWxsZWQgJHNyY2Rpci4KLSsgIHRlc3QgLW4gIiRhY19naXZlbl9zcmNkaXIiIHx8IGFjX2dpdmVuX3NyY2Rpcj0iJHNyY2RpciIKLSsgIGNhc2UgIiRhY19naXZlbl9zcmNkaXIiIGluCi0rICAgIC4pICB0b3Bfc3JjZGlyPWBlY2hvICRhY19kb3RzfHNlZCAncyUvJCUlJ2AgOzsKLSsgICAgLyopIHRvcF9zcmNkaXI9IiRhY19naXZlbl9zcmNkaXIiIDs7Ci0rICAgICopICB0b3Bfc3JjZGlyPSIkYWNfZG90cyRhY19naXZlbl9zcmNkaXIiIDs7Ci0rICBlc2FjCi0rCi0rICAjIEZpbmQgYSB3YXkgdG8gZWNobyBzdHJpbmdzIHdpdGhvdXQgaW50ZXJwcmV0aW5nIGJhY2tzbGFzaC4KLSsgIGlmIHRlc3QgIlhgKGVjaG8gJ1x0JykgMj4vZGV2L251bGxgIiA9ICdYXHQnOyB0aGVuCi0rICAgIGd0X2VjaG89J2VjaG8nCi0rICBlbHNlCi0rICAgIGlmIHRlc3QgIlhgKHByaW50ZiAnJXNcbicgJ1x0JykgMj4vZGV2L251bGxgIiA9ICdYXHQnOyB0aGVuCi0rICAgICAgZ3RfZWNobz0ncHJpbnRmICVzXG4nCi0rICAgIGVsc2UKLSsgICAgICBlY2hvX2Z1bmMgKCkgewotKyAgICAgICAgY2F0IDw8RU9UCi0rJCoKLStFT1QKLSsgICAgICB9Ci0rICAgICAgZ3RfZWNobz0nZWNob19mdW5jJwotKyAgICBmaQotKyAgZmkKLSsKLSsgICMgQSBzZWQgc2NyaXB0IHRoYXQgZXh0cmFjdHMgdGhlIHZhbHVlIG9mIFZBUklBQkxFIGZyb20gYSBNYWtlZmlsZS4KLSsgIHNlZF94X3ZhcmlhYmxlPScKLSsjIFRlc3QgaWYgdGhlIGhvbGQgc3BhY2UgaXMgZW1wdHkuCi0reAotK3MvUC9QLwotK3gKLSt0YQotKyMgWWVzIGl0IHdhcyBlbXB0eS4gTG9vayBpZiB3ZSBoYXZlIHRoZSBleHBlY3RlZCB2YXJpYWJsZSBkZWZpbml0aW9uLgotKy9eWwkgXSpWQVJJQUJMRVsJIF0qPS97Ci0rICAjIFNlZW4gdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHZhcmlhYmxlIGRlZmluaXRpb24uCi0rICBzL15bCSBdKlZBUklBQkxFWwkgXSo9Ly8KLSsgIGJhCi0rfQotK2JkCi0rOmEKLSsjIEhlcmUgd2UgYXJlIHByb2Nlc3NpbmcgYSBsaW5lIGZyb20gdGhlIHZhcmlhYmxlIGRlZmluaXRpb24uCi0rIyBSZW1vdmUgY29tbWVudCwgbW9yZSBwcmVjaXNlbHkgcmVwbGFjZSBpdCB3aXRoIGEgc3BhY2UuCi0rcy8jLiokLyAvCi0rIyBTZWUgaWYgdGhlIGxpbmUgZW5kcyBpbiBhIGJhY2tzbGFzaC4KLSt0YgotKzpiCi0rcy9cXCQvLwotKyMgUHJpbnQgdGhlIGxpbmUsIHdpdGhvdXQgdGhlIHRyYWlsaW5nIGJhY2tzbGFzaC4KLStwCi0rdGMKLSsjIFRoZXJlIHdhcyBubyB0cmFpbGluZyBiYWNrc2xhc2guIFRoZSBlbmQgb2YgdGhlIHZhcmlhYmxlIGRlZmluaXRpb24gaXMKLSsjIHJlYWNoZWQuIENsZWFyIHRoZSBob2xkIHNwYWNlLgotK3MvXi4qJC8vCi0reAotK2JkCi0rOmMKLSsjIEEgdHJhaWxpbmcgYmFja3NsYXNoIG1lYW5zIHRoYXQgdGhlIHZhcmlhYmxlIGRlZmluaXRpb24gY29udGludWVzIGluIHRoZQotKyMgbmV4dCBsaW5lLiBQdXQgYSBub25lbXB0eSBzdHJpbmcgaW50byB0aGUgaG9sZCBzcGFjZSB0byBpbmRpY2F0ZSB0aGlzLgotK3MvXi4qJC9QLwotK3gKLSs6ZAotKycKLStjaGFuZ2VxdW90ZShbLF0pZG5sCi0rCi0rICAjIFNldCBQT1RGSUxFUyB0byB0aGUgdmFsdWUgb2YgdGhlIE1ha2VmaWxlIHZhcmlhYmxlIFBPVEZJTEVTLgotKyAgc2VkX3hfUE9URklMRVM9ImAkZ3RfZWNobyBcIiRzZWRfeF92YXJpYWJsZVwiIHwgc2VkIC1lICcvXiAqIy9kJyAtZSAncy9WQVJJQUJMRS9QT1RGSUxFUy9nJ2AiCi0rICBQT1RGSUxFUz1gc2VkIC1uIC1lICIkc2VkX3hfUE9URklMRVMiIDwgIiRhY19maWxlImAKLSsgICMgQ29tcHV0ZSBQT1RGSUxFU19ERVBTIGFzCi0rICAjICAgJChmb3JlYWNoIGZpbGUsICQoUE9URklMRVMpLCAkKHRvcF9zcmNkaXIpLyQoZmlsZSkpCi0rICBQT1RGSUxFU19ERVBTPQotKyAgZm9yIGZpbGUgaW4gJFBPVEZJTEVTOyBkbwotKyAgICBQT1RGSUxFU19ERVBTPSIkUE9URklMRVNfREVQUyAiJyQodG9wX3NyY2RpcikvJyIkZmlsZSIKLSsgIGRvbmUKLSsgIFBPTUFLRUZJTEVERVBTPSIiCi0rCi0rICBpZiB0ZXN0IC1uICIkT0JTT0xFVEVfQUxMX0xJTkdVQVMiOyB0aGVuCi0rICAgIHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBzZXR0aW5nIEFMTF9MSU5HVUFTIGluIGNvbmZpZ3VyZS5pbiBpcyBvYnNvbGV0ZSIgfHwgZWNobyAic2V0dGluZyBBTExfTElOR1VBUyBpbiBjb25maWd1cmUuaW4gaXMgb2Jzb2xldGUiCi0rICBmaQotKyAgaWYgdGVzdCAtZiAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL0xJTkdVQVMiOyB0aGVuCi0rICAgICMgVGhlIExJTkdVQVMgZmlsZSBjb250YWlucyB0aGUgc2V0IG9mIGF2YWlsYWJsZSBsYW5ndWFnZXMuCi0rICAgIEFMTF9MSU5HVUFTXz1gc2VkIC1lICIvXiMvZCIgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9MSU5HVUFTImAKLSsgICAgUE9NQUtFRklMRURFUFM9IiRQT01BS0VGSUxFREVQUyBMSU5HVUFTIgotKyAgZWxzZQotKyAgICAjIFNldCBBTExfTElOR1VBUyB0byB0aGUgdmFsdWUgb2YgdGhlIE1ha2VmaWxlIHZhcmlhYmxlIExJTkdVQVMuCi0rICAgIHNlZF94X0xJTkdVQVM9ImAkZ3RfZWNobyBcIiRzZWRfeF92YXJpYWJsZVwiIHwgc2VkIC1lICcvXiAqIy9kJyAtZSAncy9WQVJJQUJMRS9MSU5HVUFTL2cnYCIKLSsgICAgQUxMX0xJTkdVQVNfPWBzZWQgLW4gLWUgIiRzZWRfeF9MSU5HVUFTIiA8ICIkYWNfZmlsZSJgCi0rICBmaQotKyAgIyBIaWRlIHRoZSBBTExfTElOR1VBUyBhc3NpZ21lbnQgZnJvbSBhdXRvbWFrZS4KLSsgIGV2YWwgJ0FMTF9MSU5HVUFTJyc9JEFMTF9MSU5HVUFTXycKLSsgICMgQ29tcHV0ZSBQT0ZJTEVTCi0rICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChsYW5nKS5wbykKLSsgICMgQ29tcHV0ZSBVUERBVEVQT0ZJTEVTCi0rICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKGxhbmcpLnBvLXVwZGF0ZSkKLSsgICMgQ29tcHV0ZSBEVU1NWVBPRklMRVMKLSsgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQobGFuZykubm9wKQotKyAgIyBDb21wdXRlIEdNT0ZJTEVTCi0rICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChsYW5nKS5nbW8pCi0rICAjIENvbXB1dGUgUFJPUEVSVElFU0ZJTEVTCi0rICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHRvcF9zcmNkaXIpLyQoRE9NQUlOKV8kKGxhbmcpLnByb3BlcnRpZXMpCi0rICAjIENvbXB1dGUgQ0xBU1NGSUxFUwotKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJCh0b3Bfc3JjZGlyKS8kKERPTUFJTilfJChsYW5nKS5jbGFzcykKLSsgICMgQ29tcHV0ZSBRTUZJTEVTCi0rICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChsYW5nKS5xbSkKLSsgICMgQ29tcHV0ZSBNU0dGSUxFUwotKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQoZnJvYiAkKGxhbmcpKS5tc2cpCi0rICAjIENvbXB1dGUgUkVTT1VSQ0VTRExMRklMRVMKLSsgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKGZyb2IgJChsYW5nKSkvJChET01BSU4pLnJlc291cmNlcy5kbGwpCi0rICBjYXNlICIkYWNfZ2l2ZW5fc3JjZGlyIiBpbgotKyAgICAuKSBzcmNkaXJwcmU9IDs7Ci0rICAgICopIHNyY2RpcnByZT0nJChzcmNkaXIpLycgOzsKLSsgIGVzYWMKLSsgIFBPRklMRVM9Ci0rICBVUERBVEVQT0ZJTEVTPQotKyAgRFVNTVlQT0ZJTEVTPQotKyAgR01PRklMRVM9Ci0rICBQUk9QRVJUSUVTRklMRVM9Ci0rICBDTEFTU0ZJTEVTPQotKyAgUU1GSUxFUz0KLSsgIE1TR0ZJTEVTPQotKyAgUkVTT1VSQ0VTRExMRklMRVM9Ci0rICBmb3IgbGFuZyBpbiAkQUxMX0xJTkdVQVM7IGRvCi0rICAgIFBPRklMRVM9IiRQT0ZJTEVTICRzcmNkaXJwcmUkbGFuZy5wbyIKLSsgICAgVVBEQVRFUE9GSUxFUz0iJFVQREFURVBPRklMRVMgJGxhbmcucG8tdXBkYXRlIgotKyAgICBEVU1NWVBPRklMRVM9IiREVU1NWVBPRklMRVMgJGxhbmcubm9wIgotKyAgICBHTU9GSUxFUz0iJEdNT0ZJTEVTICRzcmNkaXJwcmUkbGFuZy5nbW8iCi0rICAgIFBST1BFUlRJRVNGSUxFUz0iJFBST1BFUlRJRVNGSUxFUyBcJCh0b3Bfc3JjZGlyKS9cJChET01BSU4pXyRsYW5nLnByb3BlcnRpZXMiCi0rICAgIENMQVNTRklMRVM9IiRDTEFTU0ZJTEVTIFwkKHRvcF9zcmNkaXIpL1wkKERPTUFJTilfJGxhbmcuY2xhc3MiCi0rICAgIFFNRklMRVM9IiRRTUZJTEVTICRzcmNkaXJwcmUkbGFuZy5xbSIKLSsgICAgZnJvYmJlZGxhbmc9YGVjaG8gJGxhbmcgfCBzZWQgLWUgJ3MvXC4uKiQvLycgLWUgJ3kvQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVovYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXovJ2AKLSsgICAgTVNHRklMRVM9IiRNU0dGSUxFUyAkc3JjZGlycHJlJGZyb2JiZWRsYW5nLm1zZyIKLSsgICAgZnJvYmJlZGxhbmc9YGVjaG8gJGxhbmcgfCBzZWQgLWUgJ3MvXy8tL2cnYAotKyAgICBSRVNPVVJDRVNETExGSUxFUz0iJFJFU09VUkNFU0RMTEZJTEVTICRzcmNkaXJwcmUkZnJvYmJlZGxhbmcvXCQoRE9NQUlOKS5yZXNvdXJjZXMuZGxsIgotKyAgZG9uZQotKyAgIyBDQVRBTE9HUyBkZXBlbmRzIG9uIGJvdGggJGFjX2RpciBhbmQgdGhlIHVzZXIncyBMSU5HVUFTCi0rICAjIGVudmlyb25tZW50IHZhcmlhYmxlLgotKyAgSU5TVF9MSU5HVUFTPQotKyAgaWYgdGVzdCAtbiAiJEFMTF9MSU5HVUFTIjsgdGhlbgotKyAgICBmb3IgcHJlc2VudGxhbmcgaW4gJEFMTF9MSU5HVUFTOyBkbwotKyAgICAgIHVzZWl0PW5vCi0rICAgICAgaWYgdGVzdCAiJVVOU0VUJSIgIT0gIiRMSU5HVUFTIjsgdGhlbgotKyAgICAgICAgZGVzaXJlZGxhbmd1YWdlcz0iJExJTkdVQVMiCi0rICAgICAgZWxzZQotKyAgICAgICAgZGVzaXJlZGxhbmd1YWdlcz0iJEFMTF9MSU5HVUFTIgotKyAgICAgIGZpCi0rICAgICAgZm9yIGRlc2lyZWRsYW5nIGluICRkZXNpcmVkbGFuZ3VhZ2VzOyBkbwotKyAgICAgICAgIyBVc2UgdGhlIHByZXNlbnRsYW5nIGNhdGFsb2cgaWYgZGVzaXJlZGxhbmcgaXMKLSsgICAgICAgICMgICBhLiBlcXVhbCB0byBwcmVzZW50bGFuZywgb3IKLSsgICAgICAgICMgICBiLiBhIHZhcmlhbnQgb2YgcHJlc2VudGxhbmcgKGJlY2F1c2UgaW4gdGhpcyBjYXNlLAotKyAgICAgICAgIyAgICAgIHByZXNlbnRsYW5nIGNhbiBiZSB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIG1lc3NhZ2VzCi0rICAgICAgICAjICAgICAgd2hpY2ggYXJlIG5vdCB0cmFuc2xhdGVkIGluIHRoZSBkZXNpcmVkbGFuZyBjYXRhbG9nKS4KLSsgICAgICAgIGNhc2UgIiRkZXNpcmVkbGFuZyIgaW4KLSsgICAgICAgICAgIiRwcmVzZW50bGFuZyIqKSB1c2VpdD15ZXM7OwotKyAgICAgICAgZXNhYwotKyAgICAgIGRvbmUKLSsgICAgICBpZiB0ZXN0ICR1c2VpdCA9IHllczsgdGhlbgotKyAgICAgICAgSU5TVF9MSU5HVUFTPSIkSU5TVF9MSU5HVUFTICRwcmVzZW50bGFuZyIKLSsgICAgICBmaQotKyAgICBkb25lCi0rICBmaQotKyAgQ0FUQUxPR1M9Ci0rICBKQVZBQ0FUQUxPR1M9Ci0rICBRVENBVEFMT0dTPQotKyAgVENMQ0FUQUxPR1M9Ci0rICBDU0hBUlBDQVRBTE9HUz0KLSsgIGlmIHRlc3QgLW4gIiRJTlNUX0xJTkdVQVMiOyB0aGVuCi0rICAgIGZvciBsYW5nIGluICRJTlNUX0xJTkdVQVM7IGRvCi0rICAgICAgQ0FUQUxPR1M9IiRDQVRBTE9HUyAkbGFuZy5nbW8iCi0rICAgICAgSkFWQUNBVEFMT0dTPSIkSkFWQUNBVEFMT0dTIFwkKERPTUFJTilfJGxhbmcucHJvcGVydGllcyIKLSsgICAgICBRVENBVEFMT0dTPSIkUVRDQVRBTE9HUyAkbGFuZy5xbSIKLSsgICAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9cLi4qJC8vJyAtZSAneS9BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei8nYAotKyAgICAgIFRDTENBVEFMT0dTPSIkVENMQ0FUQUxPR1MgJGZyb2JiZWRsYW5nLm1zZyIKLSsgICAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9fLy0vZydgCi0rICAgICAgQ1NIQVJQQ0FUQUxPR1M9IiRDU0hBUlBDQVRBTE9HUyAkZnJvYmJlZGxhbmcvXCQoRE9NQUlOKS5yZXNvdXJjZXMuZGxsIgotKyAgICBkb25lCi0rICBmaQotKwotKyAgc2VkIC1lICJzfEBQT1RGSUxFU19ERVBTQHwkUE9URklMRVNfREVQU3xnIiAtZSAic3xAUE9GSUxFU0B8JFBPRklMRVN8ZyIgLWUgInN8QFVQREFURVBPRklMRVNAfCRVUERBVEVQT0ZJTEVTfGciIC1lICJzfEBEVU1NWVBPRklMRVNAfCREVU1NWVBPRklMRVN8ZyIgLWUgInN8QEdNT0ZJTEVTQHwkR01PRklMRVN8ZyIgLWUgInN8QFBST1BFUlRJRVNGSUxFU0B8JFBST1BFUlRJRVNGSUxFU3xnIiAtZSAic3xAQ0xBU1NGSUxFU0B8JENMQVNTRklMRVN8ZyIgLWUgInN8QFFNRklMRVNAfCRRTUZJTEVTfGciIC1lICJzfEBNU0dGSUxFU0B8JE1TR0ZJTEVTfGciIC1lICJzfEBSRVNPVVJDRVNETExGSUxFU0B8JFJFU09VUkNFU0RMTEZJTEVTfGciIC1lICJzfEBDQVRBTE9HU0B8JENBVEFMT0dTfGciIC1lICJzfEBKQVZBQ0FUQUxPR1NAfCRKQVZBQ0FUQUxPR1N8ZyIgLWUgInN8QFFUQ0FUQUxPR1NAfCRRVENBVEFMT0dTfGciIC1lICJzfEBUQ0xDQVRBTE9HU0B8JFRDTENBVEFMT0dTfGciIC1lICJzfEBDU0hBUlBDQVRBTE9HU0B8JENTSEFSUENBVEFMT0dTfGciIC1lICdzLF4jZGlzdGRpcjosZGlzdGRpcjosJyA8ICIkYWNfZmlsZSIgPiAiJGFjX2ZpbGUudG1wIgotKyAgaWYgZ3JlcCAtbCAnQFRDTENBVEFMT0dTQCcgIiRhY19maWxlIiA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICAjIEFkZCBkZXBlbmRlbmNpZXMgdGhhdCBjYW5ub3QgYmUgZm9ybXVsYXRlZCBhcyBhIHNpbXBsZSBzdWZmaXggcnVsZS4KLSsgICAgZm9yIGxhbmcgaW4gJEFMTF9MSU5HVUFTOyBkbwotKyAgICAgIGZyb2JiZWRsYW5nPWBlY2hvICRsYW5nIHwgc2VkIC1lICdzL1wuLiokLy8nIC1lICd5L0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6LydgCi0rICAgICAgY2F0ID4+ICIkYWNfZmlsZS50bXAiIDw8RU9GCi0rJGZyb2JiZWRsYW5nLm1zZzogJGxhbmcucG8KLSsJQGVjaG8gIlwkKE1TR0ZNVCkgLWMgLS10Y2wgLWQgXCQoc3JjZGlyKSAtbCAkbGFuZyAkc3JjZGlycHJlJGxhbmcucG8iOyBcCi0rCVwkKE1TR0ZNVCkgLWMgLS10Y2wgLWQgIlwkKHNyY2RpcikiIC1sICRsYW5nICRzcmNkaXJwcmUkbGFuZy5wbyB8fCB7IHJtIC1mICJcJChzcmNkaXIpLyRmcm9iYmVkbGFuZy5tc2ciOyBleGl0IDE7IH0KLStFT0YKLSsgICAgZG9uZQotKyAgZmkKLSsgIGlmIGdyZXAgLWwgJ0BDU0hBUlBDQVRBTE9HU0AnICIkYWNfZmlsZSIgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgIyBBZGQgZGVwZW5kZW5jaWVzIHRoYXQgY2Fubm90IGJlIGZvcm11bGF0ZWQgYXMgYSBzaW1wbGUgc3VmZml4IHJ1bGUuCi0rICAgIGZvciBsYW5nIGluICRBTExfTElOR1VBUzsgZG8KLSsgICAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9fLy0vZydgCi0rICAgICAgY2F0ID4+ICIkYWNfZmlsZS50bXAiIDw8RU9GCi0rJGZyb2JiZWRsYW5nL1wkKERPTUFJTikucmVzb3VyY2VzLmRsbDogJGxhbmcucG8KLSsJQGVjaG8gIlwkKE1TR0ZNVCkgLWMgLS1jc2hhcnAgLWQgXCQoc3JjZGlyKSAtbCAkbGFuZyAkc3JjZGlycHJlJGxhbmcucG8gLXIgXCQoRE9NQUlOKSI7IFwKLSsJXCQoTVNHRk1UKSAtYyAtLWNzaGFycCAtZCAiXCQoc3JjZGlyKSIgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIC1yICJcJChET01BSU4pIiB8fCB7IHJtIC1mICJcJChzcmNkaXIpLyRmcm9iYmVkbGFuZy5tc2ciOyBleGl0IDE7IH0KLStFT0YKLSsgICAgZG9uZQotKyAgZmkKLSsgIGlmIHRlc3QgLW4gIiRQT01BS0VGSUxFREVQUyI7IHRoZW4KLSsgICAgY2F0ID4+ICIkYWNfZmlsZS50bXAiIDw8RU9GCi0rTWFrZWZpbGU6ICRQT01BS0VGSUxFREVQUwotK0VPRgotKyAgZmkKLSsgIG12ICIkYWNfZmlsZS50bXAiICIkYWNfZmlsZSIKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9wcmludGYtcG9zaXgubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L3ByaW50Zi1wb3NpeC5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0Ljk3NDY1NDAwMCAtMDQwMAotQEAgLTAsMCArMSw0NiBAQAotKyMgcHJpbnRmLXBvc2l4Lm00IHNlcmlhbCAyIChnZXR0ZXh0LTAuMTMuMSkKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotK2RubCBUZXN0IHdoZXRoZXIgdGhlIHByaW50ZigpIGZ1bmN0aW9uIHN1cHBvcnRzIFBPU0lYL1hTSSBmb3JtYXQgc3RyaW5ncyB3aXRoCi0rZG5sIHBvc2l0aW9ucy4KLSsKLStBQ19ERUZVTihbZ3RfUFJJTlRGX1BPU0lYXSwKLStbCi0rICBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSkKLSsgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHByaW50ZigpIHN1cHBvcnRzIFBPU0lYL1hTSSBmb3JtYXQgc3RyaW5nc10sCi0rICAgIGd0X2N2X2Z1bmNfcHJpbnRmX3Bvc2l4LAotKyAgICBbCi0rICAgICAgQUNfVFJZX1JVTihbCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKy8qIFRoZSBzdHJpbmcgIiUyJGQgJTEkZCIsIHdpdGggZG9sbGFyIGNoYXJhY3RlcnMgcHJvdGVjdGVkIGZyb20gdGhlIHNoZWxsJ3MKLSsgICBkb2xsYXIgZXhwYW5zaW9uIChwb3NzaWJseSBhbiBhdXRvY29uZiBidWcpLiAgKi8KLStzdGF0aWMgY2hhciBmb3JtYXRbXSA9IHsgJyUnLCAnMicsICckJywgJ2QnLCAnICcsICclJywgJzEnLCAnJCcsICdkJywgJ1wwJyB9OwotK3N0YXRpYyBjaGFyIGJ1ZlsxMDBdOwotK2ludCBtYWluICgpCi0rewotKyAgc3ByaW50ZiAoYnVmLCBmb3JtYXQsIDMzLCA1NSk7Ci0rICByZXR1cm4gKHN0cmNtcCAoYnVmLCAiNTUgMzMiKSAhPSAwKTsKLSt9XSwgZ3RfY3ZfZnVuY19wcmludGZfcG9zaXg9eWVzLCBndF9jdl9mdW5jX3ByaW50Zl9wb3NpeD1ubywKLSsgICAgICBbCi0rICAgICAgICBBQ19FR1JFUF9DUFAobm90cG9zaXgsIFsKLSsjaWYgZGVmaW5lZCBfX05ldEJTRF9fIHx8IGRlZmluZWQgX01TQ19WRVIgfHwgZGVmaW5lZCBfX01JTkdXMzJfXyB8fCBkZWZpbmVkIF9fQ1lHV0lOX18KLSsgIG5vdHBvc2l4Ci0rI2VuZGlmCi0rICAgICAgICBdLCBndF9jdl9mdW5jX3ByaW50Zl9wb3NpeD0iZ3Vlc3Npbmcgbm8iLAotKyAgICAgICAgICAgZ3RfY3ZfZnVuY19wcmludGZfcG9zaXg9Imd1ZXNzaW5nIHllcyIpCi0rICAgICAgXSkKLSsgICAgXSkKLSsgIGNhc2UgJGd0X2N2X2Z1bmNfcHJpbnRmX3Bvc2l4IGluCi0rICAgICp5ZXMpCi0rICAgICAgQUNfREVGSU5FKEhBVkVfUE9TSVhfUFJJTlRGLCAxLAotKyAgICAgICAgW0RlZmluZSBpZiB5b3VyIHByaW50ZigpIGZ1bmN0aW9uIHN1cHBvcnRzIGZvcm1hdCBzdHJpbmdzIHdpdGggcG9zaXRpb25zLl0pCi0rICAgICAgOzsKLSsgIGVzYWMKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9wcm9ndGVzdC5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvcHJvZ3Rlc3QubTQJMjAwNC0wOS0xMiAxNDo0MDozNC45OTA2NTE1NjggLTA0MDAKLUBAIC0wLDAgKzEsOTEgQEAKLSsjIHByb2d0ZXN0Lm00IHNlcmlhbCAzIChnZXR0ZXh0LTAuMTIpCi0rZG5sIENvcHlyaWdodCAoQykgMTk5Ni0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rZG5sCi0rZG5sIFRoaXMgZmlsZSBjYW4gY2FuIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIKLStkbmwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0Ci0rZG5sIGZ1bmN0aW9uYWxpdHkuCi0rZG5sIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKLStkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCi0rZG5sIGdldHRleHQgcGFja2FnZSBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotK2RubCBUaGV5IGFyZSAqbm90KiBpbiB0aGUgcHVibGljIGRvbWFpbi4KLSsKLStkbmwgQXV0aG9yczoKLStkbmwgICBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5Ni4KLSsKLSsjIFNlYXJjaCBwYXRoIGZvciBhIHByb2dyYW0gd2hpY2ggcGFzc2VzIHRoZSBnaXZlbiB0ZXN0LgotKwotK2RubCBBTV9QQVRIX1BST0dfV0lUSF9URVNUKFZBUklBQkxFLCBQUk9HLVRPLUNIRUNLLUZPUiwKLStkbmwgICBURVNULVBFUkZPUk1FRC1PTi1GT1VORF9QUk9HUkFNIFssIFZBTFVFLUlGLU5PVC1GT1VORCBbLCBQQVRIXV0pCi0rQUNfREVGVU4oW0FNX1BBVEhfUFJPR19XSVRIX1RFU1RdLAotK1sKLSsjIFByZXBhcmUgUEFUSF9TRVBBUkFUT1IuCi0rIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuCi0raWYgdGVzdCAiJHtQQVRIX1NFUEFSQVRPUitzZXR9IiAhPSBzZXQ7IHRoZW4KLSsgIGVjaG8gIiMhIC9iaW4vc2giID5jb25mJCQuc2gKLSsgIGVjaG8gICJleGl0IDAiICAgPj5jb25mJCQuc2gKLSsgIGNobW9kICt4IGNvbmYkJC5zaAotKyAgaWYgKFBBVEg9Ii9ub25leGlzdGVudDsuIjsgY29uZiQkLnNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgUEFUSF9TRVBBUkFUT1I9JzsnCi0rICBlbHNlCi0rICAgIFBBVEhfU0VQQVJBVE9SPToKLSsgIGZpCi0rICBybSAtZiBjb25mJCQuc2gKLStmaQotKwotKyMgRmluZCBvdXQgaG93IHRvIHRlc3QgZm9yIGV4ZWN1dGFibGUgZmlsZXMuIERvbid0IHVzZSBhIHplcm8tYnl0ZSBmaWxlLAotKyMgYXMgc3lzdGVtcyBtYXkgdXNlIG1ldGhvZHMgb3RoZXIgdGhhbiBtb2RlIGJpdHMgdG8gZGV0ZXJtaW5lIGV4ZWN1dGFiaWxpdHkuCi0rY2F0ID5jb25mJCQuZmlsZSA8PF9BU0VPRgotKyMhIC9iaW4vc2gKLStleGl0IDAKLStfQVNFT0YKLStjaG1vZCAreCBjb25mJCQuZmlsZQotK2lmIHRlc3QgLXggY29uZiQkLmZpbGUgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rICBhY19leGVjdXRhYmxlX3A9InRlc3QgLXgiCi0rZWxzZQotKyAgYWNfZXhlY3V0YWJsZV9wPSJ0ZXN0IC1mIgotK2ZpCi0rcm0gLWYgY29uZiQkLmZpbGUKLSsKLSsjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiQyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJDI7IGFjX3dvcmQ9WyRdMgotK0FDX01TR19DSEVDS0lORyhbZm9yICRhY193b3JkXSkKLStBQ19DQUNIRV9WQUwoYWNfY3ZfcGF0aF8kMSwKLStbY2FzZSAiWyRdJDEiIGluCi0rICBbW1xcL11dKiB8ID86W1tcXC9dXSopCi0rICAgIGFjX2N2X3BhdGhfJDE9IlskXSQxIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KLSsgICAgOzsKLSsgICopCi0rICAgIGFjX3NhdmVfSUZTPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgotKyAgICBmb3IgYWNfZGlyIGluIGlmZWxzZShbJDVdLCAsICRQQVRILCBbJDVdKTsgZG8KLSsgICAgICBJRlM9IiRhY19zYXZlX0lGUyIKLSsgICAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgotKyAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgICAgICAgaWYgJGFjX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgICAgICAgaWYgWyQzXTsgdGhlbgotKyAgICAgICAgICAgIGFjX2N2X3BhdGhfJDE9IiRhY19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCi0rICAgICAgICAgICAgYnJlYWsgMgotKyAgICAgICAgICBmaQotKyAgICAgICAgZmkKLSsgICAgICBkb25lCi0rICAgIGRvbmUKLSsgICAgSUZTPSIkYWNfc2F2ZV9JRlMiCi0rZG5sIElmIG5vIDR0aCBhcmcgaXMgZ2l2ZW4sIGxlYXZlIHRoZSBjYWNoZSB2YXJpYWJsZSB1bnNldCwKLStkbmwgc28gQUNfUEFUSF9QUk9HUyB3aWxsIGtlZXAgbG9va2luZy4KLStpZmVsc2UoWyQ0XSwgLCAsIFsgIHRlc3QgLXogIlskXWFjX2N2X3BhdGhfJDEiICYmIGFjX2N2X3BhdGhfJDE9IiQ0IgotK10pZG5sCi0rICAgIDs7Ci0rZXNhY10pZG5sCi0rJDE9IiRhY19jdl9wYXRoXyQxIgotK2lmIHRlc3QgaWZlbHNlKFskNF0sICwgWy1uICJbJF0kMSJdLCBbIlskXSQxIiAhPSAiJDQiXSk7IHRoZW4KLSsgIEFDX01TR19SRVNVTFQoWyRdJDEpCi0rZWxzZQotKyAgQUNfTVNHX1JFU1VMVChubykKLStmaQotK0FDX1NVQlNUKCQxKWRubAotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L3NpZ25lZC5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvc2lnbmVkLm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuOTk2NjUwNjU2IC0wNDAwCi1AQCAtMCwwICsxLDE5IEBACi0rIyBzaWduZWQubTQgc2VyaWFsIDEgKGdldHRleHQtMC4xMC40MCkKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBCcnVubyBIYWlibGUuCi0rCi0rQUNfREVGVU4oW2JoX0NfU0lHTkVEXSwKLStbCi0rICBBQ19DQUNIRV9DSEVDSyhbZm9yIHNpZ25lZF0sIGJoX2N2X2Nfc2lnbmVkLAotKyAgIFtBQ19UUllfQ09NUElMRSgsIFtzaWduZWQgY2hhciB4O10sIGJoX2N2X2Nfc2lnbmVkPXllcywgYmhfY3ZfY19zaWduZWQ9bm8pXSkKLSsgIGlmIHRlc3QgJGJoX2N2X2Nfc2lnbmVkID0gbm87IHRoZW4KLSsgICAgQUNfREVGSU5FKHNpZ25lZCwgLAotKyAgICAgICAgICAgICAgW0RlZmluZSB0byBlbXB0eSBpZiB0aGUgQyBjb21waWxlciBkb2Vzbid0IHN1cHBvcnQgdGhpcyBrZXl3b3JkLl0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L3NpemVfbWF4Lm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9zaXplX21heC5tNAkyMDA0LTA5LTEyIDE0OjQwOjM1LjAwMzY0OTU5MiAtMDQwMAotQEAgLTAsMCArMSw2MSBAQAotKyMgc2l6ZV9tYXgubTQgc2VyaWFsIDIKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotKwotK0FDX0RFRlVOKFtnbF9TSVpFX01BWF0sCi0rWwotKyAgQUNfQ0hFQ0tfSEVBREVSUyhzdGRpbnQuaCkKLSsgIGRubCBGaXJzdCB0ZXN0IHdoZXRoZXIgdGhlIHN5c3RlbSBhbHJlYWR5IGhhcyBTSVpFX01BWC4KLSsgIEFDX01TR19DSEVDS0lORyhbZm9yIFNJWkVfTUFYXSkKLSsgIHJlc3VsdD0KLSsgIEFDX0VHUkVQX0NQUChbRm91bmQgaXRdLCBbCi0rI2luY2x1ZGUgPGxpbWl0cy5oPgotKyNpZiBIQVZFX1NURElOVF9ICi0rI2luY2x1ZGUgPHN0ZGludC5oPgotKyNlbmRpZgotKyNpZmRlZiBTSVpFX01BWAotK0ZvdW5kIGl0Ci0rI2VuZGlmCi0rXSwgcmVzdWx0PXllcykKLSsgIGlmIHRlc3QgLXogIiRyZXN1bHQiOyB0aGVuCi0rICAgIGRubCBEZWZpbmUgaXQgb3Vyc2VsdmVzLiBIZXJlIHdlIGFzc3VtZSB0aGF0IHRoZSB0eXBlICdzaXplX3QnIGlzIG5vdCB3aWRlcgotKyAgICBkbmwgdGhhbiB0aGUgdHlwZSAndW5zaWduZWQgbG9uZycuCi0rICAgIGRubCBUaGUgX0FDX0NPTVBVVEVfSU5UIG1hY3JvIHdvcmtzIHVwIHRvIExPTkdfTUFYLCBzaW5jZSBpdCB1c2VzICdleHByJywKLSsgICAgZG5sIHdoaWNoIGlzIGd1YXJhbnRlZWQgdG8gd29yayBmcm9tIExPTkdfTUlOIHRvIExPTkdfTUFYLgotKyAgICBfQUNfQ09NUFVURV9JTlQoW34oc2l6ZV90KTAgLyAxMF0sIHJlc19oaSwKLSsgICAgICBbI2luY2x1ZGUgPHN0ZGRlZi5oPl0sIHJlc3VsdD0/KQotKyAgICBfQUNfQ09NUFVURV9JTlQoW34oc2l6ZV90KTAgJSAxMF0sIHJlc19sbywKLSsgICAgICBbI2luY2x1ZGUgPHN0ZGRlZi5oPl0sIHJlc3VsdD0/KQotKyAgICBfQUNfQ09NUFVURV9JTlQoW3NpemVvZiAoc2l6ZV90KSA8PSBzaXplb2YgKHVuc2lnbmVkIGludCldLCBmaXRzX2luX3VpbnQsCi0rICAgICAgWyNpbmNsdWRlIDxzdGRkZWYuaD5dLCByZXN1bHQ9PykKLSsgICAgaWYgdGVzdCAiJGZpdHNfaW5fdWludCIgPSAxOyB0aGVuCi0rICAgICAgZG5sIEV2ZW4gdGhvdWdoIFNJWkVfTUFYIGZpdHMgaW4gYW4gdW5zaWduZWQgaW50LCBpdCBtdXN0IGJlIG9mIHR5cGUKLSsgICAgICBkbmwgJ3Vuc2lnbmVkIGxvbmcnIGlmIHRoZSB0eXBlICdzaXplX3QnIGlzIHRoZSBzYW1lIGFzICd1bnNpZ25lZCBsb25nJy4KLSsgICAgICBBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHN0ZGRlZi5oPgotKyAgICAgICAgZXh0ZXJuIHNpemVfdCBmb287Ci0rICAgICAgICBleHRlcm4gdW5zaWduZWQgbG9uZyBmb287Ci0rICAgICAgICBdLCBbXSwgZml0c19pbl91aW50PTApCi0rICAgIGZpCi0rICAgIGlmIHRlc3QgLXogIiRyZXN1bHQiOyB0aGVuCi0rICAgICAgaWYgdGVzdCAiJGZpdHNfaW5fdWludCIgPSAxOyB0aGVuCi0rICAgICAgICByZXN1bHQ9IiRyZXNfaGkkcmVzX2xvIlUKLSsgICAgICBlbHNlCi0rICAgICAgICByZXN1bHQ9IiRyZXNfaGkkcmVzX2xvIlVMCi0rICAgICAgZmkKLSsgICAgZWxzZQotKyAgICAgIGRubCBTaG91bGRuJ3QgaGFwcGVuLCBidXQgd2hvIGtub3dzLi4uCi0rICAgICAgcmVzdWx0PSd+KHNpemVfdCkwJwotKyAgICBmaQotKyAgZmkKLSsgIEFDX01TR19SRVNVTFQoWyRyZXN1bHRdKQotKyAgaWYgdGVzdCAiJHJlc3VsdCIgIT0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORV9VTlFVT1RFRChbU0laRV9NQVhdLCBbJHJlc3VsdF0sCi0rICAgICAgW0RlZmluZSBhcyB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0eXBlICdzaXplX3QnLCBpZiB0aGUgc3lzdGVtIGRvZXNuJ3QgZGVmaW5lIGl0Ll0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L3N0ZGludF9oLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9zdGRpbnRfaC5tNAkyMDA0LTA5LTEyIDE0OjQwOjM1LjAwOTY0ODY4MCAtMDQwMAotQEAgLTAsMCArMSwyOCBAQAotKyMgc3RkaW50X2gubTQgc2VyaWFsIDMgKGdldHRleHQtMC4xMikKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk3LTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBQYXVsIEVnZ2VydC4KLSsKLSsjIERlZmluZSBIQVZFX1NURElOVF9IX1dJVEhfVUlOVE1BWCBpZiA8c3RkaW50Lmg+IGV4aXN0cywKLSsjIGRvZXNuJ3QgY2xhc2ggd2l0aCA8c3lzL3R5cGVzLmg+LCBhbmQgZGVjbGFyZXMgdWludG1heF90LgotKwotK0FDX0RFRlVOKFtqbV9BQ19IRUFERVJfU1RESU5UX0hdLAotK1sKLSsgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igc3RkaW50LmhdLCBqbV9hY19jdl9oZWFkZXJfc3RkaW50X2gsCi0rICBbQUNfVFJZX0NPTVBJTEUoCi0rICAgIFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rI2luY2x1ZGUgPHN0ZGludC5oPl0sCi0rICAgIFt1aW50bWF4X3QgaSA9ICh1aW50bWF4X3QpIC0xO10sCi0rICAgIGptX2FjX2N2X2hlYWRlcl9zdGRpbnRfaD15ZXMsCi0rICAgIGptX2FjX2N2X2hlYWRlcl9zdGRpbnRfaD1ubyldKQotKyAgaWYgdGVzdCAkam1fYWNfY3ZfaGVhZGVyX3N0ZGludF9oID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1NURElOVF9IX1dJVEhfVUlOVE1BWCwgMSwKLSsgICAgICBbRGVmaW5lIGlmIDxzdGRpbnQuaD4gZXhpc3RzLCBkb2Vzbid0IGNsYXNoIHdpdGggPHN5cy90eXBlcy5oPiwKLSsgICAgICAgYW5kIGRlY2xhcmVzIHVpbnRtYXhfdC4gXSkKLSsgIGZpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvdWludG1heF90Lm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC91aW50bWF4X3QubTQJMjAwNC0wOS0xMiAxNDo0MDozNS4wMjE2NDY4NTYgLTA0MDAKLUBAIC0wLDAgKzEsMzIgQEAKLSsjIHVpbnRtYXhfdC5tNCBzZXJpYWwgNyAoZ2V0dGV4dC0wLjEyKQotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTctMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIFBhdWwgRWdnZXJ0LgotKwotK0FDX1BSRVJFUSgyLjEzKQotKwotKyMgRGVmaW5lIHVpbnRtYXhfdCB0byAndW5zaWduZWQgbG9uZycgb3IgJ3Vuc2lnbmVkIGxvbmcgbG9uZycKLSsjIGlmIGl0IGlzIG5vdCBhbHJlYWR5IGRlZmluZWQgaW4gPHN0ZGludC5oPiBvciA8aW50dHlwZXMuaD4uCi0rCi0rQUNfREVGVU4oW2ptX0FDX1RZUEVfVUlOVE1BWF9UXSwKLStbCi0rICBBQ19SRVFVSVJFKFtqbV9BQ19IRUFERVJfSU5UVFlQRVNfSF0pCi0rICBBQ19SRVFVSVJFKFtqbV9BQ19IRUFERVJfU1RESU5UX0hdKQotKyAgaWYgdGVzdCAkam1fYWNfY3ZfaGVhZGVyX2ludHR5cGVzX2ggPSBubyAmJiB0ZXN0ICRqbV9hY19jdl9oZWFkZXJfc3RkaW50X2ggPSBubzsgdGhlbgotKyAgICBBQ19SRVFVSVJFKFtqbV9BQ19UWVBFX1VOU0lHTkVEX0xPTkdfTE9OR10pCi0rICAgIHRlc3QgJGFjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19sb25nID0geWVzIFwKLSsgICAgICAmJiBhY190eXBlPSd1bnNpZ25lZCBsb25nIGxvbmcnIFwKLSsgICAgICB8fCBhY190eXBlPSd1bnNpZ25lZCBsb25nJwotKyAgICBBQ19ERUZJTkVfVU5RVU9URUQodWludG1heF90LCAkYWNfdHlwZSwKLSsgICAgICBbRGVmaW5lIHRvIHVuc2lnbmVkIGxvbmcgb3IgdW5zaWduZWQgbG9uZyBsb25nCi0rICAgICAgIGlmIDxzdGRpbnQuaD4gYW5kIDxpbnR0eXBlcy5oPiBkb24ndCBkZWZpbmUuXSkKLSsgIGVsc2UKLSsgICAgQUNfREVGSU5FKEhBVkVfVUlOVE1BWF9ULCAxLAotKyAgICAgIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlICd1aW50bWF4X3QnIHR5cGUgaW4gPHN0ZGludC5oPiBvciA8aW50dHlwZXMuaD4uXSkKLSsgIGZpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvdWxvbmdsb25nLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC91bG9uZ2xvbmcubTQJMjAwNC0wOS0xMiAxNDo0MDozNS4wMjg2NDU3OTIgLTA0MDAKLUBAIC0wLDAgKzEsMjUgQEAKLSsjIHVsb25nbG9uZy5tNCBzZXJpYWwgMwotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIFBhdWwgRWdnZXJ0LgotKwotKyMgRGVmaW5lIEhBVkVfVU5TSUdORURfTE9OR19MT05HIGlmICd1bnNpZ25lZCBsb25nIGxvbmcnIHdvcmtzLgotKwotK0FDX0RFRlVOKFtqbV9BQ19UWVBFX1VOU0lHTkVEX0xPTkdfTE9OR10sCi0rWwotKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciB1bnNpZ25lZCBsb25nIGxvbmddLCBhY19jdl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZywKLSsgIFtBQ19UUllfTElOSyhbdW5zaWduZWQgbG9uZyBsb25nIHVsbCA9IDFVTEw7IGludCBpID0gNjM7XSwKLSsgICAgW3Vuc2lnbmVkIGxvbmcgbG9uZyB1bGxtYXggPSAodW5zaWduZWQgbG9uZyBsb25nKSAtMTsKLSsgICAgIHJldHVybiB1bGwgPDwgaSB8IHVsbCA+PiBpIHwgdWxsbWF4IC8gdWxsIHwgdWxsbWF4ICUgdWxsO10sCi0rICAgIGFjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19sb25nPXllcywKLSsgICAgYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmc9bm8pXSkKLSsgIGlmIHRlc3QgJGFjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19sb25nID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORShIQVZFX1VOU0lHTkVEX0xPTkdfTE9ORywgMSwKLSsgICAgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAndW5zaWduZWQgbG9uZyBsb25nJyB0eXBlLl0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L3djaGFyX3QubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L3djaGFyX3QubTQJMjAwNC0wOS0xMiAxNDo0MDozNS4wMzQ2NDQ4ODAgLTA0MDAKLUBAIC0wLDAgKzEsMjIgQEAKLSsjIHdjaGFyX3QubTQgc2VyaWFsIDEgKGdldHRleHQtMC4xMikKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBCcnVubyBIYWlibGUuCi0rZG5sIFRlc3Qgd2hldGhlciA8c3RkZGVmLmg+IGhhcyB0aGUgJ3djaGFyX3QnIHR5cGUuCi0rZG5sIFByZXJlcXVpc2l0ZTogQUNfUFJPR19DQwotKwotK0FDX0RFRlVOKFtndF9UWVBFX1dDSEFSX1RdLAotK1sKLSsgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igd2NoYXJfdF0sIGd0X2N2X2Nfd2NoYXJfdCwKLSsgICAgW0FDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rICAgICAgIHdjaGFyX3QgZm9vID0gKHdjaGFyX3QpJ1wwJztdLCAsCi0rICAgICAgIGd0X2N2X2Nfd2NoYXJfdD15ZXMsIGd0X2N2X2Nfd2NoYXJfdD1ubyldKQotKyAgaWYgdGVzdCAkZ3RfY3ZfY193Y2hhcl90ID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORShIQVZFX1dDSEFSX1QsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlICd3Y2hhcl90JyB0eXBlLl0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L3dpbnRfdC5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvd2ludF90Lm00CTIwMDQtMDktMTIgMTQ6NDA6MzUuMDQwNjQzOTY4IC0wNDAwCi1AQCAtMCwwICsxLDIyIEBACi0rIyB3aW50X3QubTQgc2VyaWFsIDEgKGdldHRleHQtMC4xMikKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotK2RubCBUZXN0IHdoZXRoZXIgPHdjaGFyLmg+IGhhcyB0aGUgJ3dpbnRfdCcgdHlwZS4KLStkbmwgUHJlcmVxdWlzaXRlOiBBQ19QUk9HX0NDCi0rCi0rQUNfREVGVU4oW2d0X1RZUEVfV0lOVF9UXSwKLStbCi0rICBBQ19DQUNIRV9DSEVDSyhbZm9yIHdpbnRfdF0sIGd0X2N2X2Nfd2ludF90LAotKyAgICBbQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDx3Y2hhci5oPgotKyAgICAgICB3aW50X3QgZm9vID0gKHdjaGFyX3QpJ1wwJztdLCAsCi0rICAgICAgIGd0X2N2X2Nfd2ludF90PXllcywgZ3RfY3ZfY193aW50X3Q9bm8pXSkKLSsgIGlmIHRlc3QgJGd0X2N2X2Nfd2ludF90ID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORShIQVZFX1dJTlRfVCwgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ3dpbnRfdCcgdHlwZS5dKQotKyAgZmkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC94c2l6ZS5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQveHNpemUubTQJMjAwNC0wOS0xMiAxNDo0MDozNS4wNDc2NDI5MDQgLTA0MDAKLUBAIC0wLDAgKzEsMTQgQEAKLSsjIHhzaXplLm00IHNlcmlhbCAyCi0rZG5sIENvcHlyaWdodCAoQykgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK0FDX0RFRlVOKFtnbF9YU0laRV0sCi0rWwotKyAgZG5sIFByZXJlcXVpc2l0ZXMgb2YgbGliL3hzaXplLmguCi0rICBBQ19SRVFVSVJFKFtnbF9TSVpFX01BWF0pCi0rICBBQ19DSEVDS19IRUFERVJTKHN0ZGludC5oKQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL01ha2VmaWxlLmFtCTE5OTgtMTItMzAgMDY6MTk6NDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9NYWtlZmlsZS5hbQkyMDA0LTA5LTEyIDE0OjQwOjM1LjEyMTYzMTY1NiAtMDQwMAotQEAgLTEsNSArMSw1IEBACi0gU1VCRElSUyA9IGxpYiBpbnRsIHNyYyBwbyBtYW4gdGVzdHN1aXRlCi0tRVhUUkFfRElTVCA9IGNoZWNrLmxyenN6IENPTVBBVEFCSUxJVFkgUkVBRE1FLmN2cyBSRUFETUUuaXNkbjRsaW51eCBcCi0rRVhUUkFfRElTVCA9IGNvbmZpZy5ycGF0aCAgY2hlY2subHJ6c3ogQ09NUEFUQUJJTElUWSBSRUFETUUuY3ZzIFJFQURNRS5pc2RuNGxpbnV4IFwKLSAJUkVBRE1FLmdldHRleHQgcnBtcmMgYnVpbGRycG0gc3lzdHlwZS5pbiBmYXN0Y2hlY2suc2ggUkVBRE1FLnRlc3RzIFwKLSAJYmVvcy1ydW5waXBlZC5jIGZhc3RjaGVjay5iZW9zCi0gbm9pbnN0X1NDUklQVFM9c3lzdHlwZQotQEAgLTgzLDMgKzgzLDUgQEAKLSBycG06ICQoUFIpLnRhci5neiBTcGVjZmlsZQotIAkkKHNyY2RpcikvYnVpbGRycG0gJChzcmNkaXIpCi0gCi0rCi0rQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvTWFrZWZpbGUuaW4JMTk5OC0xMi0zMCAxMTozMTo0MC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL01ha2VmaWxlLmluCTIwMDQtMDktMTIgMTQ6NDA6MzUuMTA5NjMzNDgwIC0wNDAwCi1AQCAtMTI1LDcgKzEyNSw3IEBACi0gCSAgJiYgQ09ORklHX0ZJTEVTPSRAIENPTkZJR19IRUFERVJTPSAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMKLSAKLSAkKEFDTE9DQUxfTTQpOiAgY29uZmlndXJlLmluICBhY2luY2x1ZGUubTQKLS0JY2QgJChzcmNkaXIpICYmICQoQUNMT0NBTCkKLSsJY2QgJChzcmNkaXIpICYmICQoQUNMT0NBTCkgLUkgbTQKLSAKLSBjb25maWcuc3RhdHVzOiAkKHNyY2RpcikvY29uZmlndXJlCi0gCSQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAtLXJlY2hlY2sKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbWtpbnN0YWxsZGlycwkxOTk4LTA0LTI2IDA5OjIwOjUyLjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvbWtpbnN0YWxsZGlycwkyMDA0LTA5LTEyIDE0OjQwOjM0LjMzNzc1MDgyNCAtMDQwMAotQEAgLTEsMzQgKzEsMTUwIEBACi0gIyEgL2Jpbi9zaAotICMgbWtpbnN0YWxsZGlycyAtLS0gbWFrZSBkaXJlY3RvcnkgaGllcmFyY2h5Ci0tIyBBdXRob3I6IE5vYWggRnJpZWRtYW4gPGZyaWVkbWFuQHByZXAuYWkubWl0LmVkdT4KLSsKLStzY3JpcHR2ZXJzaW9uPTIwMDQtMDItMTUuMjAKLSsKLSsjIE9yaWdpbmFsIGF1dGhvcjogTm9haCBGcmllZG1hbiA8ZnJpZWRtYW5AcHJlcC5haS5taXQuZWR1PgotICMgQ3JlYXRlZDogMTk5My0wNS0xNgotLSMgTGFzdCBtb2RpZmllZDogMTk5NS0wMy0wNQotLSMgUHVibGljIGRvbWFpbgotKyMgUHVibGljIGRvbWFpbi4KLSsjCi0rIyBUaGlzIGZpbGUgaXMgbWFpbnRhaW5lZCBpbiBBdXRvbWFrZSwgcGxlYXNlIHJlcG9ydAotKyMgYnVncyB0byA8YnVnLWF1dG9tYWtlQGdudS5vcmc+IG9yIHNlbmQgcGF0Y2hlcyB0bwotKyMgPGF1dG9tYWtlLXBhdGNoZXNAZ251Lm9yZz4uCi0gCi0gZXJyc3RhdHVzPTAKLStkaXJtb2RlPSIiCi0gCi0tZm9yIGZpbGUgaW4gJHsxKyIkQCJ9IDsgZG8KLS0gICBzZXQgZm5vcmQgYGVjaG8gIjokZmlsZSIgfCBzZWQgLW5lICdzL146XC8vIy87cy9eOi8vO3MvXC8vIC9nO3MvXiMvXC8vO3AnYAotLSAgIHNoaWZ0Ci0rdXNhZ2U9IlwKLStVc2FnZTogbWtpbnN0YWxsZGlycyBbLWhdIFstLWhlbHBdIFstLXZlcnNpb25dIFstbSBNT0RFXSBESVIgLi4uCi0gCi0tICAgcGF0aGNvbXA9Ci0tICAgZm9yIGQgaW4gJHsxKyIkQCJ9IDsgZG8KLS0gICAgIHBhdGhjb21wPSIkcGF0aGNvbXAkZCIKLS0gICAgIGNhc2UgIiRwYXRoY29tcCIgaW4KLS0gICAgICAgLSogKSBwYXRoY29tcD0uLyRwYXRoY29tcCA7OwotLSAgICAgZXNhYwotK0NyZWF0ZSBlYWNoIGRpcmVjdG9yeSBESVIgKHdpdGggbW9kZSBNT0RFLCBpZiBzcGVjaWZpZWQpLCBpbmNsdWRpbmcgYWxsCi0rbGVhZGluZyBmaWxlIG5hbWUgY29tcG9uZW50cy4KLSAKLS0gICAgIGlmIHRlc3QgISAtZCAiJHBhdGhjb21wIjsgdGhlbgotLSAgICAgICAgZWNobyAibWtkaXIgJHBhdGhjb21wIiAxPiYyCi0tICAgICAgICBta2RpciAiJHBhdGhjb21wIiA+IC9kZXYvbnVsbCAyPiYxIHx8IGxhc3RlcnI9JD8KLS0gICAgIGZpCi0rUmVwb3J0IGJ1Z3MgdG8gPGJ1Zy1hdXRvbWFrZUBnbnUub3JnPi4iCi0gCi0tICAgICBpZiB0ZXN0ICEgLWQgIiRwYXRoY29tcCI7IHRoZW4KLSsjIHByb2Nlc3MgY29tbWFuZCBsaW5lIGFyZ3VtZW50cwotK3doaWxlIHRlc3QgJCMgLWd0IDAgOyBkbwotKyAgY2FzZSAkMSBpbgotKyAgICAtaCB8IC0taGVscCB8IC0taCopICAgICAgICAgIyAtaCBmb3IgaGVscAotKyAgICAgIGVjaG8gIiR1c2FnZSIKLSsgICAgICBleGl0IDAKLSsgICAgICA7OwotKyAgICAtbSkgICAgICAgICAgICAgICAgICAgICAgICAgIyAtbSBQRVJNIGFyZwotKyAgICAgIHNoaWZ0Ci0rICAgICAgdGVzdCAkIyAtZXEgMCAmJiB7IGVjaG8gIiR1c2FnZSIgMT4mMjsgZXhpdCAxOyB9Ci0rICAgICAgZGlybW9kZT0kMQotKyAgICAgIHNoaWZ0Ci0rICAgICAgOzsKLSsgICAgLS12ZXJzaW9uKQotKyAgICAgIGVjaG8gIiQwICRzY3JpcHR2ZXJzaW9uIgotKyAgICAgIGV4aXQgMAotKyAgICAgIDs7Ci0rICAgIC0tKSAgICAgICAgICAgICAgICAgICAgICAgICAjIHN0b3Agb3B0aW9uIHByb2Nlc3NpbmcKLSsgICAgICBzaGlmdAotKyAgICAgIGJyZWFrCi0rICAgICAgOzsKLSsgICAgLSopICAgICAgICAgICAgICAgICAgICAgICAgICMgdW5rbm93biBvcHRpb24KLSsgICAgICBlY2hvICIkdXNhZ2UiIDE+JjIKLSsgICAgICBleGl0IDEKLSsgICAgICA7OwotKyAgICAqKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmaXJzdCBub24tb3B0IGFyZwotKyAgICAgIGJyZWFrCi0rICAgICAgOzsKLSsgIGVzYWMKLStkb25lCi0rCi0rZm9yIGZpbGUKLStkbwotKyAgaWYgdGVzdCAtZCAiJGZpbGUiOyB0aGVuCi0rICAgIHNoaWZ0Ci0rICBlbHNlCi0rICAgIGJyZWFrCi0rICBmaQotK2RvbmUKLSsKLStjYXNlICQjIGluCi0rICAwKSBleGl0IDAgOzsKLStlc2FjCi0rCi0rIyBTb2xhcmlzIDgncyBta2RpciAtcCBpc24ndCB0aHJlYWQtc2FmZS4gIElmIHlvdSBta2RpciAtcCBhL2IgYW5kCi0rIyBta2RpciAtcCBhL2MgYXQgdGhlIHNhbWUgdGltZSwgYm90aCB3aWxsIGRldGVjdCB0aGF0IGEgaXMgbWlzc2luZywKLSsjIG9uZSB3aWxsIGNyZWF0ZSBhLCB0aGVuIHRoZSBvdGhlciB3aWxsIHRyeSB0byBjcmVhdGUgYSBhbmQgZGllIHdpdGgKLSsjIGEgIkZpbGUgZXhpc3RzIiBlcnJvci4gIFRoaXMgaXMgYSBwcm9ibGVtIHdoZW4gY2FsbGluZyBta2luc3RhbGxkaXJzCi0rIyBmcm9tIGEgcGFyYWxsZWwgbWFrZS4gIFdlIHVzZSAtLXZlcnNpb24gaW4gdGhlIHByb2JlIHRvIHJlc3RyaWN0Ci0rIyBvdXJzZWx2ZXMgdG8gR05VIG1rZGlyLCB3aGljaCBpcyB0aHJlYWQtc2FmZS4KLStjYXNlICRkaXJtb2RlIGluCi0rICAnJykKLSsgICAgaWYgbWtkaXIgLXAgLS12ZXJzaW9uIC4gPi9kZXYvbnVsbCAyPiYxICYmIHRlc3QgISAtZCAuLy0tdmVyc2lvbjsgdGhlbgotKyAgICAgIGVjaG8gIm1rZGlyIC1wIC0tICQqIgotKyAgICAgIGV4ZWMgbWtkaXIgLXAgLS0gIiRAIgotKyAgICBlbHNlCi0rICAgICAgIyBPbiBOZXh0U3RlcCBhbmQgT3BlblN0ZXAsIHRoZSBgbWtkaXInIGNvbW1hbmQgZG9lcyBub3QKLSsgICAgICAjIHJlY29nbml6ZSBhbnkgb3B0aW9uLiAgSXQgd2lsbCBpbnRlcnByZXQgYWxsIG9wdGlvbnMgYXMKLSsgICAgICAjIGRpcmVjdG9yaWVzIHRvIGNyZWF0ZSwgYW5kIHRoZW4gYWJvcnQgYmVjYXVzZSBgLicgYWxyZWFkeQotKyAgICAgICMgZXhpc3RzLgotKyAgICAgIHRlc3QgLWQgLi8tcCAmJiBybWRpciAuLy1wCi0rICAgICAgdGVzdCAtZCAuLy0tdmVyc2lvbiAmJiBybWRpciAuLy0tdmVyc2lvbgotKyAgICBmaQotKyAgICA7OwotKyAgKikKLSsgICAgaWYgbWtkaXIgLW0gIiRkaXJtb2RlIiAtcCAtLXZlcnNpb24gLiA+L2Rldi9udWxsIDI+JjEgJiYKLSsgICAgICAgdGVzdCAhIC1kIC4vLS12ZXJzaW9uOyB0aGVuCi0rICAgICAgZWNobyAibWtkaXIgLW0gJGRpcm1vZGUgLXAgLS0gJCoiCi0rICAgICAgZXhlYyBta2RpciAtbSAiJGRpcm1vZGUiIC1wIC0tICIkQCIKLSsgICAgZWxzZQotKyAgICAgICMgQ2xlYW4gdXAgYWZ0ZXIgTmV4dFN0ZXAgYW5kIE9wZW5TdGVwIG1rZGlyLgotKyAgICAgIGZvciBkIGluIC4vLW0gLi8tcCAuLy0tdmVyc2lvbiAiLi8kZGlybW9kZSI7Ci0rICAgICAgZG8KLSsgICAgICAgIHRlc3QgLWQgJGQgJiYgcm1kaXIgJGQKLSsgICAgICBkb25lCi0rICAgIGZpCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZvciBmaWxlCi0rZG8KLSsgIHNldCBmbm9yZCBgZWNobyAiOiRmaWxlIiB8IHNlZCAtbmUgJ3MvXjpcLy8jLztzL146Ly87cy9cLy8gL2c7cy9eIy9cLy87cCdgCi0rICBzaGlmdAotKwotKyAgcGF0aGNvbXA9Ci0rICBmb3IgZAotKyAgZG8KLSsgICAgcGF0aGNvbXA9IiRwYXRoY29tcCRkIgotKyAgICBjYXNlICRwYXRoY29tcCBpbgotKyAgICAgIC0qKSBwYXRoY29tcD0uLyRwYXRoY29tcCA7OwotKyAgICBlc2FjCi0rCi0rICAgIGlmIHRlc3QgISAtZCAiJHBhdGhjb21wIjsgdGhlbgotKyAgICAgIGVjaG8gIm1rZGlyICRwYXRoY29tcCIKLSsKLSsgICAgICBta2RpciAiJHBhdGhjb21wIiB8fCBsYXN0ZXJyPSQ/Ci0rCi0rICAgICAgaWYgdGVzdCAhIC1kICIkcGF0aGNvbXAiOyB0aGVuCi0gCWVycnN0YXR1cz0kbGFzdGVycgotLSAgICAgZmkKLSsgICAgICBlbHNlCi0rCWlmIHRlc3QgISAteiAiJGRpcm1vZGUiOyB0aGVuCi0rCSAgZWNobyAiY2htb2QgJGRpcm1vZGUgJHBhdGhjb21wIgotKwkgIGxhc3RlcnI9IiIKLSsJICBjaG1vZCAiJGRpcm1vZGUiICIkcGF0aGNvbXAiIHx8IGxhc3RlcnI9JD8KLSAKLS0gICAgIHBhdGhjb21wPSIkcGF0aGNvbXAvIgotLSAgIGRvbmUKLSsJICBpZiB0ZXN0ICEgLXogIiRsYXN0ZXJyIjsgdGhlbgotKwkgICAgZXJyc3RhdHVzPSRsYXN0ZXJyCi0rCSAgZmkKLSsJZmkKLSsgICAgICBmaQotKyAgICBmaQotKwotKyAgICBwYXRoY29tcD0iJHBhdGhjb21wLyIKLSsgIGRvbmUKLSBkb25lCi0gCi0gZXhpdCAkZXJyc3RhdHVzCi0rCi0rIyBMb2NhbCBWYXJpYWJsZXM6Ci0rIyBtb2RlOiBzaGVsbC1zY3JpcHQKLSsjIHNoLWluZGVudGF0aW9uOiAyCi0rIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCi0rIyB0aW1lLXN0YW1wLXN0YXJ0OiAic2NyaXB0dmVyc2lvbj0iCi0rIyB0aW1lLXN0YW1wLWZvcm1hdDogIiU6eS0lMDJtLSUwMmQuJTAySCIKLSsjIHRpbWUtc3RhbXAtZW5kOiAiJCIKLSsjIEVuZDoKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvcG8vYm9sZHF1b3Quc2VkCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9wby9ib2xkcXVvdC5zZWQJMjAwNC0wOS0xMiAxNDo0MDozNC43MjM2OTIxNTIgLTA0MDAKLUBAIC0wLDAgKzEsMTAgQEAKLStzLyJcKFteIl0qXCkiL+KAnFwx4oCdL2cKLStzL2BcKFteYCddKlwpJy/igJhcMeKAmS9nCi0rcy8gJ1woW15gJ10qXCknIC8g4oCYXDHigJkgL2cKLStzLyAnXChbXmAnXSpcKSckLyDigJhcMeKAmS9nCi0rcy9eJ1woW15gJ10qXCknIC/igJhcMeKAmSAvZwotK3Mv4oCc4oCdLyIiL2cKLStzL+KAnC/igJwbWzFtL2cKLStzL+KAnS8bWzBt4oCdL2cKLStzL+KAmC/igJgbWzFtL2cKLStzL+KAmS8bWzBt4oCZL2cKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvcG8vY2F0LWlkLXRibC5jCTE5OTgtMTItMjkgMDQ6MjQ6MjQuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9wby9jYXQtaWQtdGJsLmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLUBAIC0xLDIzNCArMCwwIEBACi0tLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgcG8ydGJsLnNlZCBmcm9tIGxyenN6LnBvdC4gICovCi0tCi0tI2lmIEhBVkVfQ09ORklHX0gKLS0jIGluY2x1ZGUgPGNvbmZpZy5oPgotLSNlbmRpZgotLQotLSNpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCi0tCi0tY29uc3Qgc3RydWN0IF9tc2dfZW50IF9tc2dfdGJsW10gPSB7Ci0tICB7IiIsIDF9LAotLSAgeyJpb19tb2RlKCwyKSBpbiByYnNiLmMgbm90IGltcGxlbWVudGVkXG4iLCAyfSwKLS0gIHsiY2F1Z2h0IHNpZ25hbCAlZDsgZXhpdGluZyIsIDN9LAotLSAgeyJjb21tYW5kIHRyaWVzIiwgNH0sCi0tICB7InBhY2tldGxlbmd0aCIsIDV9LAotLSAgeyJwYWNrZXRsZW5ndGggb3V0IG9mIHJhbmdlIDI0Li4lbGQiLCA2fSwKLS0gIHsiZnJhbWVsZW5ndGgiLCA3fSwKLS0gIHsiZnJhbWVsZW5ndGggb3V0IG9mIHJhbmdlIDMyLi4lbGQiLCA4fSwKLS0gIHsibWluX2JwcyIsIDl9LAotLSAgeyJtaW5fYnBzIG11c3QgYmUgPj0gMCIsIDEwfSwKLS0gIHsibWluX2Jwc190aW1lIiwgMTF9LAotLSAgeyJtaW5fYnBzX3RpbWUgbXVzdCBiZSA+IDEiLCAxMn0sCi0tICB7ImhvdXIgdG8gbGFyZ2UgKDAuLjIzKSIsIDEzfSwKLS0gIHsidW5wYXJzYWJsZSBzdG9wIHRpbWVcbiIsIDE0fSwKLS0gIHsibWludXRlIHRvIGxhcmdlICgwLi41OSkiLCAxNX0sCi0tICB7InN0b3AgdGltZSB0byBzbWFsbCIsIDE2fSwKLS0gIHsic3RvcC1hdCIsIDE3fSwKLS0gIHsidGltZW91dCIsIDE4fSwKLS0gIHsidGltZW91dCBvdXQgb2YgcmFuZ2UgMTAuLjEwMDAiLCAxOX0sCi0tICB7InNlY3VyaXR5IHZpb2xhdGlvbjogY2FuJ3QgZG8gdGhhdCB1bmRlciByZXN0cmljdGVkIHNoZWxsXG4iLCAyMH0sCi0tICB7IndpbmRvdyBzaXplIiwgMjF9LAotLSAgeyJjYW5ub3QgdHVybm9mZiBzeXNsb2ciLCAyMn0sCi0tICB7InN0YXJ0dXAgZGVsYXkiLCAyM30sCi0tICB7Im91dCBvZiBtZW1vcnkiLCAyNH0sCi0tICB7InRoaXMgcHJvZ3JhbSB3YXMgbmV2ZXIgaW50ZW5kZWQgdG8gYmUgdXNlZCBzZXR1aWRcbiIsIDI1fSwKLS0gIHsibmVlZCBhdCBsZWFzdCBvbmUgZmlsZSB0byBzZW5kIiwgMjZ9LAotLSAgeyJDYW4ndCBzZW5kIGNvbW1hbmQgaW4gcmVzdHJpY3RlZCBtb2RlXG4iLCAyN30sCi0tICB7Imhvc3RuYW1lIHRvbyBsb25nXG4iLCAyOH0sCi0tICB7ImlsbGVnYWwgc2VydmVyIGFkZHJlc3NcbiIsIDI5fSwKLS0gIHsiY2FuIHJlYWQgb25seSBvbmUgZmlsZSBmcm9tIHN0ZGluIiwgMzB9LAotLSAgeyJUcmFuc2ZlciBpbmNvbXBsZXRlXG4iLCAzMX0sCi0tICB7IlRyYW5zZmVyIGNvbXBsZXRlXG4iLCAzMn0sCi0tICB7InNlbmRfcHNldWRvICVzOiBjYW5ub3Qgb3BlbiB0bXBmaWxlICVzOiAlcyIsIDMzfSwKLS0gIHsic2VuZF9wc2V1ZG8gJXM6IGNhbm5vdCBsc3RhdCB0bXBmaWxlICVzOiAlcyIsIDM0fSwKLS0gIHsic2VuZF9wc2V1ZG8gJXM6IGF2b2lkaW5nIHN5bWxpbmsgdHJhcCIsIDM1fSwKLS0gIHsic2VuZF9wc2V1ZG8gJXM6IGNhbm5vdCB3cml0ZSB0byB0bXBmaWxlICVzOiAlcyIsIDM2fSwKLS0gIHsic2VuZF9wc2V1ZG8gJXM6IGZhaWxlZCIsIDM3fSwKLS0gIHsic2VuZF9wc2V1ZG8gJXM6IG9rIiwgMzh9LAotLSAgeyJ0Y3AgcHJvdG9jb2wgaW5pdCBmYWlsZWRcbiIsIDM5fSwKLS0gIHsiQW5zd2VyaW5nIFRJTUVTWU5DIGF0ICVzIiwgNDB9LAotLSAgeyJ0aW1lem9uZSIsIDQxfSwKLS0gIHsidGltZXpvbmUgdW5rbm93biIsIDQyfSwKLS0gIHsiQ2FuJ3Qgb3BlbiBhbnkgcmVxdWVzdGVkIGZpbGVzLiIsIDQzfSwKLS0gIHsic2VjdXJpdHkgdmlvbGF0aW9uOiBub3QgYWxsb3dlZCB0byB1cGxvYWQgZnJvbSAlcyIsIDQ0fSwKLS0gIHsiY2Fubm90IG9wZW4gJXMiLCA0NX0sCi0tICB7ImlzIG5vdCBhIGZpbGU6ICVzIiwgNDZ9LAotLSAgeyIlcy8lczogZXJyb3Igb2NjdXJlZCIsIDQ3fSwKLS0gIHsic2tpcHBlZDogJXMiLCA0OH0sCi0tICB7IiVzLyVzOiBza2lwcGVkIiwgNDl9LAotLSAgeyJCeXRlcyBTZW50OiU3bGQgICBCUFM6JS04bGQgICAgICAgICAgICAgICAgICAgICAgICBcbiIsIDUwfSwKLS0gIHsiU2VuZGluZyAlcywgJWxkIGJsb2NrczogIiwgNTF9LAotLSAgeyJHaXZlIHlvdXIgbG9jYWwgWE1PREVNIHJlY2VpdmUgY29tbWFuZCBub3cuIiwgNTJ9LAotLSAgeyJTZW5kaW5nOiAlc1xuIiwgNTN9LAotLSAgeyJUaW1lb3V0IG9uIHBhdGhuYW1lIiwgNTR9LAotLSAgeyJSZWNlaXZlciBDYW5jZWxsZWQiLCA1NX0sCi0tICB7Ik5vIEFDSyBvbiBFT1QiLCA1Nn0sCi0tICB7Ilhtb2RlbSBzZWN0b3JzL2tieXRlcyBzZW50OiAlM2QvJTJkayIsIDU3fSwKLS0gIHsiWW1vZGVtIHNlY3RvcnMva2J5dGVzIHNlbnQ6ICUzZC8lMmRrIiwgNTh9LAotLSAgeyJDYW5jZWxsZWQiLCA1OX0sCi0tICB7IlRpbWVvdXQgb24gc2VjdG9yIEFDSyIsIDYwfSwKLS0gIHsiTkFLIG9uIHNlY3RvciIsIDYxfSwKLS0gIHsiR290IGJ1cnN0IGZvciBzZWN0b3IgQUNLIiwgNjJ9LAotLSAgeyJHb3QgJTAyeCBmb3Igc2VjdG9yIEFDSyIsIDYzfSwKLS0gIHsiUmV0cnkgQ291bnQgRXhjZWVkZWQiLCA2NH0sCi0tICB7IlRyeSBgJXMgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIsIDY1fSwKLS0gIHsiJXMgdmVyc2lvbiAlc1xuIiwgNjZ9LAotLSAgeyJVc2FnZTogJXMgW29wdGlvbnNdIGZpbGUgLi4uXG4iLCA2N30sCi0tICB7IiAgIG9yOiAlcyBbb3B0aW9uc10gLXtjfGl9IENPTU1BTkRcbiIsIDY4fSwKLS0gIHsiU2VuZCBmaWxlKHMpIHdpdGggWk1PREVNL1lNT0RFTS9YTU9ERU0gcHJvdG9jb2xcbiIsIDY5fSwKLS0gIHsiXAotLSAgICAoWCkgPSBvcHRpb24gYXBwbGllcyB0byBYTU9ERU0gb25seVxuXAotLSAgICAoWSkgPSBvcHRpb24gYXBwbGllcyB0byBZTU9ERU0gb25seVxuXAotLSAgICAoWikgPSBvcHRpb24gYXBwbGllcyB0byBaTU9ERU0gb25seVxuIiwgNzB9LAotLSAgeyJcCi0tICAtKywgLS1hcHBlbmQgICAgICAgICAgICAgICAgYXBwZW5kIHRvIGV4aXN0aW5nIGRlc3RpbmF0aW9uIGZpbGUgKFopXG5cCi0tICAtMiwgLS10d29zdG9wICAgICAgICAgICAgICAgdXNlIDIgc3RvcCBiaXRzXG5cCi0tICAtNCwgLS10cnktNGsgICAgICAgICAgICAgICAgZ28gdXAgdG8gNEsgYmxvY2tzaXplXG5cCi0tICAgICAgLS1zdGFydC00ayAgICAgICAgICAgICAgc3RhcnQgd2l0aCA0SyBibG9ja3NpemUgKGRvZXNuJ3QgdHJ5IDgpXG5cCi0tICAtOCwgLS10cnktOGsgICAgICAgICAgICAgICAgZ28gdXAgdG8gOEsgYmxvY2tzaXplXG5cCi0tICAgICAgLS1zdGFydC04ayAgICAgICAgICAgICAgc3RhcnQgd2l0aCA4SyBibG9ja3NpemVcblwKLS0gIC1hLCAtLWFzY2lpICAgICAgICAgICAgICAgICBBU0NJSSB0cmFuc2ZlciAoY2hhbmdlIENSL0xGIHRvIExGKVxuXAotLSAgLWIsIC0tYmluYXJ5ICAgICAgICAgICAgICAgIGJpbmFyeSB0cmFuc2ZlclxuXAotLSAgLUIsIC0tYnVmc2l6ZSBOICAgICAgICAgICAgIGJ1ZmZlciBOIGJ5dGVzIChOPT1hdXRvOiBidWZmZXIgd2hvbGUgZmlsZSlcblwKLS0gIC1jLCAtLWNvbW1hbmQgQ09NTUFORCAgICAgICBleGVjdXRlIHJlbW90ZSBjb21tYW5kIENPTU1BTkQgKFopXG5cCi0tICAtQywgLS1jb21tYW5kLXRyaWVzIE4gICAgICAgdHJ5IE4gdGltZXMgdG8gZXhlY3V0ZSBhIGNvbW1hbmQgKFopXG5cCi0tICAtZCwgLS1kb3QtdG8tc2xhc2ggICAgICAgICAgY2hhbmdlICcuJyB0byAnLycgaW4gcGF0aG5hbWVzIChZL1opXG5cCi0tICAgICAgLS1kZWxheS1zdGFydHVwIE4gICAgICAgc2xlZXAgTiBzZWNvbmRzIGJlZm9yZSBkb2luZyBhbnl0aGluZ1xuXAotLSAgLWUsIC0tZXNjYXBlICAgICAgICAgICAgICAgIGVzY2FwZSBhbGwgY29udHJvbCBjaGFyYWN0ZXJzIChaKVxuXAotLSAgLUUsIC0tcmVuYW1lICAgICAgICAgICAgICAgIGZvcmNlIHJlY2VpdmVyIHRvIHJlbmFtZSBmaWxlcyBpdCBhbHJlYWR5IGhhc1xuXAotLSAgLWYsIC0tZnVsbC1wYXRoICAgICAgICAgICAgIHNlbmQgZnVsbCBwYXRobmFtZSAoWS9aKVxuXAotLSAgLWksIC0taW1tZWRpYXRlLWNvbW1hbmQgQ01EIHNlbmQgcmVtb3RlIENNRCwgcmV0dXJuIGltbWVkaWF0ZWx5IChaKVxuXAotLSAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgIHByaW50IHRoaXMgdXNhZ2UgbWVzc2FnZVxuXAotLSAgLWssIC0tMWsgICAgICAgICAgICAgICAgICAgIHNlbmQgMTAyNCBieXRlIHBhY2tldHMgKFgpXG5cCi0tICAtTCwgLS1wYWNrZXRsZW4gTiAgICAgICAgICAgbGltaXQgc3VicGFja2V0IGxlbmd0aCB0byBOIGJ5dGVzIChaKVxuXAotLSAgLWwsIC0tZnJhbWVsZW4gTiAgICAgICAgICAgIGxpbWl0IGZyYW1lIGxlbmd0aCB0byBOIGJ5dGVzIChsPj1MKSAoWilcblwKLS0gIC1tLCAtLW1pbi1icHMgTiAgICAgICAgICAgICBzdG9wIHRyYW5zbWlzc2lvbiBpZiBCUFMgYmVsb3cgTlxuXAotLSAgLU0sIC0tbWluLWJwcy10aW1lIE4gICAgICAgICAgZm9yIGF0IGxlYXN0IE4gc2Vjb25kcyAoZGVmYXVsdDogMTIwKVxuIiwgNzF9LAotLSAgeyJcCi0tICAtbiwgLS1uZXdlciAgICAgICAgICAgICAgICAgc2VuZCBmaWxlIGlmIHNvdXJjZSBuZXdlciAoWilcblwKLS0gIC1OLCAtLW5ld2VyLW9yLWxvbmdlciAgICAgICBzZW5kIGZpbGUgaWYgc291cmNlIG5ld2VyIG9yIGxvbmdlciAoWilcblwKLS0gIC1vLCAtLTE2LWJpdC1jcmMgICAgICAgICAgICB1c2UgMTYgYml0IENSQyBpbnN0ZWFkIG9mIDMyIGJpdCBDUkMgKFopXG5cCi0tICAtTywgLS1kaXNhYmxlLXRpbWVvdXRzICAgICAgZGlzYWJsZSB0aW1lb3V0IGNvZGUsIHdhaXQgZm9yZXZlclxuXAotLSAgLXAsIC0tcHJvdGVjdCAgICAgICAgICAgICAgIHByb3RlY3QgZXhpc3RpbmcgZGVzdGluYXRpb24gZmlsZSAoWilcblwKLS0gIC1yLCAtLXJlc3VtZSAgICAgICAgICAgICAgICByZXN1bWUgaW50ZXJydXB0ZWQgZmlsZSB0cmFuc2ZlciAoWilcblwKLS0gIC1SLCAtLXJlc3RyaWN0ZWQgICAgICAgICAgICByZXN0cmljdGVkLCBtb3JlIHNlY3VyZSBtb2RlXG5cCi0tICAtcSwgLS1xdWlldCAgICAgICAgICAgICAgICAgcXVpZXQgKG5vIHByb2dyZXNzIHJlcG9ydHMpXG5cCi0tICAtcywgLS1zdG9wLWF0IHtISDpNTXwrTn0gICAgc3RvcCB0cmFuc21pc3Npb24gYXQgSEg6TU0gb3IgaW4gTiBzZWNvbmRzXG5cCi0tICAgICAgLS10Y3AgICAgICAgICAgICAgICAgICAgYnVpbGQgYSBUQ1AgY29ubmVjdGlvbiB0byB0cmFuc21pdCBmaWxlc1xuXAotLSAgICAgIC0tdGNwLXNlcnZlciAgICAgICAgICAgIG9wZW4gc29ja2V0LCB3YWl0IGZvciBjb25uZWN0aW9uXG5cCi0tICAtdSwgLS11bmxpbmsgICAgICAgICAgICAgICAgdW5saW5rIGZpbGUgYWZ0ZXIgdHJhbnNtaXNzaW9uXG5cCi0tICAtVSwgLS11bnJlc3RyaWN0ICAgICAgICAgICAgdHVybiBvZmYgcmVzdHJpY3RlZCBtb2RlIChpZiBhbGxvd2VkIHRvKVxuXAotLSAgLXYsIC0tdmVyYm9zZSAgICAgICAgICAgICAgIGJlIHZlcmJvc2UsIHByb3ZpZGUgZGVidWdnaW5nIGluZm9ybWF0aW9uXG5cCi0tICAtdywgLS13aW5kb3dzaXplIE4gICAgICAgICAgV2luZG93IGlzIE4gYnl0ZXMgKFopXG5cCi0tICAtWCwgLS14bW9kZW0gICAgICAgICAgICAgICAgdXNlIFhNT0RFTSBwcm90b2NvbFxuXAotLSAgLXksIC0tb3ZlcndyaXRlICAgICAgICAgICAgIG92ZXJ3cml0ZSBleGlzdGluZyBmaWxlc1xuXAotLSAgLVksIC0tb3ZlcndyaXRlLW9yLXNraXAgICAgIG92ZXJ3cml0ZSBleGlzdGluZyBmaWxlcywgZWxzZSBza2lwXG5cCi0tICAgICAgLS15bW9kZW0gICAgICAgICAgICAgICAgdXNlIFlNT0RFTSBwcm90b2NvbFxuXAotLSAgLVosIC0tem1vZGVtICAgICAgICAgICAgICAgIHVzZSBaTU9ERU0gcHJvdG9jb2xcblwKLS1cblwKLS1zaG9ydCBvcHRpb25zIHVzZSB0aGUgc2FtZSBhcmd1bWVudHMgYXMgdGhlIGxvbmcgb25lc1xuIiwgNzJ9LAotLSAgeyJnb3QgWlJRSU5JVCIsIDczfSwKLS0gIHsiZ290IFpDQU4iLCA3NH0sCi0tICB7ImJsa2xlbiBub3cgJWRcbiIsIDc1fSwKLS0gIHsienNlbmRmZGF0YTogYnBzIHJhdGUgJWxkIGJlbG93IG1pbiAlbGQiLCA3Nn0sCi0tICB7InpzZW5kZmRhdGE6IHJlYWNoZWQgc3RvcCB0aW1lIiwgNzd9LAotLSAgeyJCeXRlcyBTZW50OiU3bGQvJTdsZCAgIEJQUzolLThsZCBFVEEgJTAyZDolMDJkICAiLCA3OH0sCi0tICB7ImNhbGNfYmxrbGVuOiByZWR1Y2VkIHRvICVkIGR1ZSB0byBlcnJvclxuIiwgNzl9LAotLSAgeyJjYWxjX2Jsa2xlbjogcmV0dXJuZWQgb2xkIHZhbHVlICVkIGR1ZSB0byBsb3cgYnBlIGRpZmZcbiIsIDgwfSwKLS0gIHsiY2FsY19ibGtsZW46IG9sZCAlbGQsIG5ldyAlbGQsIGQgJWxkXG4iLCA4MX0sCi0tICB7ImNhbGNfYmxrbGVuOiBjYWxjIHRvdGFsX2J5dGVzPSVsZCwgYnBlPSVsZCwgZWM9JWxkXG4iLCA4Mn0sCi0tICB7ImNhbGNfYmxrbGVuOiBibGtsZW4gJWQsIG9rICVsZCwgZmFpbGVkICVsZCAtPiAlbHVcbiIsIDgzfSwKLS0gIHsiY2FsY19ibGtsZW46IHJldHVybmVkICVkIGFzIGJlc3RcbiIsIDg0fSwKLS0gIHsiXAotLVxuXAotLWNvdW50ZW06IFRvdGFsICVkICVsZFxuIiwgODV9LAotLSAgeyJCYWQgZXNjYXBlIHNlcXVlbmNlICV4IiwgODZ9LAotLSAgeyJTZW5kZXIgQ2FuY2VsZWQiLCA4N30sCi0tICB7IlRJTUVPVVQiLCA4OH0sCi0tICB7IkJhZCBkYXRhIHN1YnBhY2tldCIsIDg5fSwKLS0gIHsiRGF0YSBzdWJwYWNrZXQgdG9vIGxvbmciLCA5MH0sCi0tICB7IkdhcmJhZ2UgY291bnQgZXhjZWVkZWQiLCA5MX0sCi0tICB7IkdvdCAlcyIsIDkyfSwKLS0gIHsiUmV0cnkgJWQ6ICIsIDkzfSwKLS0gIHsiZG9uJ3QgaGF2ZSBzZXR0aW1lb2ZkYXksIHdpbGwgbm90IHNldCB0aW1lXG4iLCA5NH0sCi0tICB7Im5vdCBydW5uaW5nIGFzIHJvb3QgKHRoaXMgaXMgZ29vZCEpLCBjYW4gbm90IHNldCB0aW1lXG4iLCA5NX0sCi0tICB7ImJ5dGVzX3Blcl9lcnJvciIsIDk2fSwKLS0gIHsiYnl0ZXMtcGVyLWVycm9yIHNob3VsZCBiZSA+MTAwIiwgOTd9LAotLSAgeyJPX1NZTkMgbm90IHN1cHBvcnRlZCBieSB0aGUga2VybmVsIiwgOTh9LAotLSAgeyJnYXJiYWdlIG9uIGNvbW1hbmRsaW5lIiwgOTl9LAotLSAgeyJVc2FnZTogJXMgW29wdGlvbnNdIFtmaWxlbmFtZS5pZi54bW9kZW1dXG4iLCAxMDB9LAotLSAgeyJSZWNlaXZlIGZpbGVzIHdpdGggWk1PREVNL1lNT0RFTS9YTU9ERU0gcHJvdG9jb2xcbiIsIDEwMX0sCi0tICB7IlwKLS0gIC0rLCAtLWFwcGVuZCAgICAgICAgICAgICAgICBhcHBlbmQgdG8gZXhpc3RpbmcgZmlsZXNcblwKLS0gIC1hLCAtLWFzY2lpICAgICAgICAgICAgICAgICBBU0NJSSB0cmFuc2ZlciAoY2hhbmdlIENSL0xGIHRvIExGKVxuXAotLSAgLWIsIC0tYmluYXJ5ICAgICAgICAgICAgICAgIGJpbmFyeSB0cmFuc2ZlclxuXAotLSAgLUIsIC0tYnVmc2l6ZSBOICAgICAgICAgICAgIGJ1ZmZlciBOIGJ5dGVzIChOPT1hdXRvOiBidWZmZXIgd2hvbGUgZmlsZSlcblwKLS0gIC1jLCAtLXdpdGgtY3JjICAgICAgICAgICAgICBVc2UgMTYgYml0IENSQyAoWClcblwKLS0gIC1DLCAtLWFsbG93LXJlbW90ZS1jb21tYW5kcyBhbGxvdyBleGVjdXRpb24gb2YgcmVtb3RlIGNvbW1hbmRzIChaKVxuXAotLSAgLUQsIC0tbnVsbCAgICAgICAgICAgICAgICAgIHdyaXRlIGFsbCByZWNlaXZlZCBkYXRhIHRvIC9kZXYvbnVsbFxuXAotLSAgICAgIC0tZGVsYXktc3RhcnR1cCBOICAgICAgIHNsZWVwIE4gc2Vjb25kcyBiZWZvcmUgZG9pbmcgYW55dGhpbmdcblwKLS0gIC1lLCAtLWVzY2FwZSAgICAgICAgICAgICAgICBFc2NhcGUgY29udHJvbCBjaGFyYWN0ZXJzIChaKVxuXAotLSAgLUUsIC0tcmVuYW1lICAgICAgICAgICAgICAgIHJlbmFtZSBhbnkgZmlsZXMgYWxyZWFkeSBleGlzdGluZ1xuXAotLSAgICAgIC0tZXJyb3JzIE4gICAgICAgICAgICAgIGdlbmVyYXRlIENSQyBlcnJvciBldmVyeSBOIGJ5dGVzIChkZWJ1Z2dpbmcpXG5cCi0tICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICAgSGVscCwgcHJpbnQgdGhpcyB1c2FnZSBtZXNzYWdlXG5cCi0tICAtbSwgLS1taW4tYnBzIE4gICAgICAgICAgICAgc3RvcCB0cmFuc21pc3Npb24gaWYgQlBTIGJlbG93IE5cblwKLS0gIC1NLCAtLW1pbi1icHMtdGltZSBOICAgICAgICAgIGZvciBhdCBsZWFzdCBOIHNlY29uZHMgKGRlZmF1bHQ6IDEyMClcblwKLS0gIC1PLCAtLWRpc2FibGUtdGltZW91dHMgICAgICBkaXNhYmxlIHRpbWVvdXQgY29kZSwgd2FpdCBmb3JldmVyIGZvciBkYXRhXG5cCi0tICAgICAgLS1vLXN5bmMgICAgICAgICAgICAgICAgb3BlbiBvdXRwdXQgZmlsZShzKSBpbiBzeW5jaHJvbm91cyB3cml0ZSBtb2RlXG5cCi0tICAtcCwgLS1wcm90ZWN0ICAgICAgICAgICAgICAgcHJvdGVjdCBleGlzdGluZyBmaWxlc1xuXAotLSAgLXEsIC0tcXVpZXQgICAgICAgICAgICAgICAgIHF1aWV0LCBubyBwcm9ncmVzcyByZXBvcnRzXG5cCi0tICAtciwgLS1yZXN1bWUgICAgICAgICAgICAgICAgdHJ5IHRvIHJlc3VtZSBpbnRlcnJ1cHRlZCBmaWxlIHRyYW5zZmVyIChaKVxuXAotLSAgLVIsIC0tcmVzdHJpY3RlZCAgICAgICAgICAgIHJlc3RyaWN0ZWQsIG1vcmUgc2VjdXJlIG1vZGVcblwKLS0gIC1zLCAtLXN0b3AtYXQge0hIOk1NfCtOfSAgICBzdG9wIHRyYW5zbWlzc2lvbiBhdCBISDpNTSBvciBpbiBOIHNlY29uZHNcblwKLS0gIC1TLCAtLXRpbWVzeW5jICAgICAgICAgICAgICByZXF1ZXN0IHJlbW90ZSB0aW1lICh0d2ljZTogc2V0IGxvY2FsIHRpbWUpXG5cCi0tICAgICAgLS1zeXNsb2dbPW9mZl0gICAgICAgICAgdHVybiBzeXNsb2cgb24gb3Igb2ZmLCBpZiBwb3NzaWJsZVxuXAotLSAgLXQsIC0tdGltZW91dCBOICAgICAgICAgICAgIHNldCB0aW1lb3V0IHRvIE4gdGVudGhzIG9mIGEgc2Vjb25kXG5cCi0tICAtdSwgLS1rZWVwLXVwcGVyY2FzZSAgICAgICAga2VlcCB1cHBlciBjYXNlIGZpbGVuYW1lc1xuXAotLSAgLVUsIC0tdW5yZXN0cmljdCAgICAgICAgICAgIGRpc2FibGUgcmVzdHJpY3RlZCBtb2RlIChpZiBhbGxvd2VkIHRvKVxuXAotLSAgLXYsIC0tdmVyYm9zZSAgICAgICAgICAgICAgIGJlIHZlcmJvc2UsIHByb3ZpZGUgZGVidWdnaW5nIGluZm9ybWF0aW9uXG5cCi0tICAtdywgLS13aW5kb3dzaXplIE4gICAgICAgICAgV2luZG93IGlzIE4gYnl0ZXMgKFopXG5cCi0tICAtWCAgLS14bW9kZW0gICAgICAgICAgICAgICAgdXNlIFhNT0RFTSBwcm90b2NvbFxuXAotLSAgLXksIC0tb3ZlcndyaXRlICAgICAgICAgICAgIFllcywgY2xvYmJlciBleGlzdGluZyBmaWxlIGlmIGFueVxuXAotLSAgICAgIC0teW1vZGVtICAgICAgICAgICAgICAgIHVzZSBZTU9ERU0gcHJvdG9jb2xcblwKLS0gIC1aLCAtLXptb2RlbSAgICAgICAgICAgICAgICB1c2UgWk1PREVNIHByb3RvY29sXG5cCi0tXG5cCi0tc2hvcnQgb3B0aW9ucyB1c2UgdGhlIHNhbWUgYXJndW1lbnRzIGFzIHRoZSBsb25nIG9uZXNcbiIsIDEwMn0sCi0tICB7IiVzIHdhaXRpbmcgdG8gcmVjZWl2ZS4iLCAxMDN9LAotLSAgeyJcckJ5dGVzIHJlY2VpdmVkOiAlN2xkLyU3bGQgICBCUFM6JS02bGQgICAgICAgICAgICAgICAgXHJcbiIsIDEwNH0sCi0tICB7IiVzOiByZWFkeSB0byByZWNlaXZlICVzIiwgMTA1fSwKLS0gIHsiXHJCeXRlcyByZWNlaXZlZDogJTdsZCAgIEJQUzolLTZsZCAgICAgICAgICAgICAgICBcclxuIiwgMTA2fSwKLS0gIHsiXAotLVxyXG5cCi0tJXM6ICVzIHJlbW92ZWQuXHJcbiIsIDEwN30sCi0tICB7IlBhdGhuYW1lIGZldGNoIHJldHVybmVkIEVPVCIsIDEwOH0sCi0tICB7IlJlY2VpdmVkIGR1cCBTZWN0b3IiLCAxMDl9LAotLSAgeyJTeW5jIEVycm9yIiwgMTEwfSwKLS0gIHsiQ1JDIiwgMTExfSwKLS0gIHsiQ2hlY2tzdW0iLCAxMTJ9LAotLSAgeyJTZWN0b3IgbnVtYmVyIGdhcmJsZWQiLCAxMTN9LAotLSAgeyJTZW5kZXIgQ2FuY2VsbGVkIiwgMTE0fSwKLS0gIHsiR290IDAlbyBzZWN0b3IgaGVhZGVyIiwgMTE1fSwKLS0gIHsiZmlsZSBuYW1lIGVuZHMgd2l0aCBhIC8sIHNraXBwZWQ6ICVzXG4iLCAxMTZ9LAotLSAgeyJ6bWFuYWc9JWQsIEx6bWFuYWc9JWRcbiIsIDExN30sCi0tICB7Inpjb252PSVkXG4iLCAxMTh9LAotLSAgeyJmaWxlIGV4aXN0cywgc2tpcHBlZDogJXNcbiIsIDExOX0sCi0tICB7IlRJTUVTWU5DOiBoZXJlICVsZCwgcmVtb3RlICVsZCwgZGlmZiAlbGQgc2Vjb25kc1xuIiwgMTIwfSwKLS0gIHsiVElNRVNZTkM6IGNhbm5vdCBzZXQgdGltZTogJXNcbiIsIDEyMX0sCi0tICB7ImNhbm5vdCB0bXBmaWxlKCkgZm9yIHRjcCBwcm90b2NvbCBzeW5jaHJvbml6YXRpb24iLCAxMjJ9LAotLSAgeyJUb3BpcGUiLCAxMjN9LAotLSAgeyJSZWNlaXZpbmc6ICVzXG4iLCAxMjR9LAotLSAgeyJCbG9ja3MgcmVjZWl2ZWQ6ICVkIiwgMTI1fSwKLS0gIHsiJXM6ICVzIGV4aXN0c1xuIiwgMTI2fSwKLS0gIHsiJXM6XHRTZWN1cml0eSBWaW9sYXRpb24iLCAxMjd9LAotLSAgeyJyZW1vdGUgY29tbWFuZCBleGVjdXRpb24gcmVxdWVzdGVkIiwgMTI4fSwKLS0gIHsibm90IGV4ZWN1dGVkIiwgMTI5fSwKLS0gIHsiZ290IFpSSU5JVCIsIDEzMH0sCi0tICB7IlNraXBwZWQiLCAxMzF9LAotLSAgeyJyemZpbGU6IGJwcyByYXRlICVsZCBiZWxvdyBtaW4gJWxkIiwgMTMyfSwKLS0gIHsicnpmaWxlOiByZWFjaGVkIHN0b3AgdGltZSIsIDEzM30sCi0tICB7IlxyQnl0ZXMgcmVjZWl2ZWQ6ICU3bGQvJTdsZCAgIEJQUzolLTZsZCBFVEEgJTAyZDolMDJkICAiLCAxMzR9LAotLSAgeyJmZ2V0cyBmb3IgdGNwIHByb3RvY29sIHN5bmNocm9uaXphdGlvbiBmYWlsZWQ6ICIsIDEzNX0sCi0tICB7ImZpbGUgY2xvc2UgZXJyb3IiLCAxMzZ9LAotLX07Ci0tCi0taW50IF9tc2dfdGJsX2xlbmd0aCA9IDEzNjsKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvcG8vQ2hhbmdlTG9nCTE5OTgtMDQtMjYgMDk6MjA6NTIuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9wby9DaGFuZ2VMb2cJMjAwNC0wOS0xMiAxNDo0MDozNC43OTM2ODE1MTIgLTA0MDAKLUBAIC0xLDMgKzEsMTUgQEAKLSsyMDA0LTA5LTEyICBnZXR0ZXh0aXplICA8YnVnLWdudS1nZXR0ZXh0QGdudS5vcmc+Ci0rCi0rCSogYm9sZHF1b3Quc2VkOiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBlbkBib2xkcXVvdC5oZWFkZXI6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGVuQHF1b3QuaGVhZGVyOiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBpbnNlcnQtaGVhZGVyLnNpbjogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogcXVvdC5zZWQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIHJlbW92ZS1wb3RjZGF0ZS5zaW46IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIFJ1bGVzLXF1b3Q6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGNhdC1pZC10YmwuYzogUmVtb3ZlIGZpbGUuCi0rCSogc3RhbXAtY2F0LWlkOiBSZW1vdmUgZmlsZS4KLSsKLSAvKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBwbzJ0Ymwuc2VkIGZyb20gbHJ6c3oucG90LiAgKi8KLSAKLSAjaWYgSEFWRV9DT05GSUdfSAotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9wby9lbkBib2xkcXVvdC5oZWFkZXIJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL3BvL2VuQGJvbGRxdW90LmhlYWRlcgkyMDA0LTA5LTEyIDE0OjQwOjM0LjczMTY5MDkzNiAtMDQwMAotQEAgLTAsMCArMSwyNSBAQAotKyMgQWxsIHRoaXMgY2F0YWxvZyAidHJhbnNsYXRlcyIgYXJlIHF1b3RhdGlvbiBjaGFyYWN0ZXJzLgotKyMgVGhlIG1zZ2lkcyBtdXN0IGJlIEFTQ0lJIGFuZCB0aGVyZWZvcmUgY2Fubm90IGNvbnRhaW4gcmVhbCBxdW90YXRpb24KLSsjIGNoYXJhY3RlcnMsIG9ubHkgc3Vic3RpdHV0ZXMgbGlrZSBncmF2ZSBhY2NlbnQgKDB4NjApLCBhcG9zdHJvcGhlICgweDI3KQotKyMgYW5kIGRvdWJsZSBxdW90ZSAoMHgyMikuIFRoZXNlIHN1YnN0aXR1dGVzIGxvb2sgc3RyYW5nZTsgc2VlCi0rIyBodHRwOi8vd3d3LmNsLmNhbS5hYy51ay9+bWdrMjUvdWNzL3F1b3Rlcy5odG1sCi0rIwotKyMgVGhpcyBjYXRhbG9nIHRyYW5zbGF0ZXMgZ3JhdmUgYWNjZW50ICgweDYwKSBhbmQgYXBvc3Ryb3BoZSAoMHgyNykgdG8KLSsjIGxlZnQgc2luZ2xlIHF1b3RhdGlvbiBtYXJrIChVKzIwMTgpIGFuZCByaWdodCBzaW5nbGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxOSkuCi0rIyBJdCBhbHNvIHRyYW5zbGF0ZXMgcGFpcnMgb2YgYXBvc3Ryb3BoZSAoMHgyNykgdG8KLSsjIGxlZnQgc2luZ2xlIHF1b3RhdGlvbiBtYXJrIChVKzIwMTgpIGFuZCByaWdodCBzaW5nbGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxOSkKLSsjIGFuZCBwYWlycyBvZiBxdW90YXRpb24gbWFyayAoMHgyMikgdG8KLSsjIGxlZnQgZG91YmxlIHF1b3RhdGlvbiBtYXJrIChVKzIwMUMpIGFuZCByaWdodCBkb3VibGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxRCkuCi0rIwotKyMgV2hlbiBvdXRwdXQgdG8gYW4gVVRGLTggdGVybWluYWwsIHRoZSBxdW90YXRpb24gY2hhcmFjdGVycyBhcHBlYXIgcGVyZmVjdGx5LgotKyMgV2hlbiBvdXRwdXQgdG8gYW4gSVNPLTg4NTktMSB0ZXJtaW5hbCwgdGhlIHNpbmdsZSBxdW90YXRpb24gbWFya3MgYXJlCi0rIyB0cmFuc2xpdGVyYXRlZCB0byBhcG9zdHJvcGhlcyAoYnkgaWNvbnYgaW4gZ2xpYmMgMi4yIG9yIG5ld2VyKSBvciB0bwotKyMgZ3JhdmUvYWN1dGUgYWNjZW50IChieSBsaWJpY29udiksIGFuZCB0aGUgZG91YmxlIHF1b3RhdGlvbiBtYXJrcyBhcmUKLSsjIHRyYW5zbGl0ZXJhdGVkIHRvIDB4MjIuCi0rIyBXaGVuIG91dHB1dCB0byBhbiBBU0NJSSB0ZXJtaW5hbCwgdGhlIHNpbmdsZSBxdW90YXRpb24gbWFya3MgYXJlCi0rIyB0cmFuc2xpdGVyYXRlZCB0byBhcG9zdHJvcGhlcywgYW5kIHRoZSBkb3VibGUgcXVvdGF0aW9uIG1hcmtzIGFyZQotKyMgdHJhbnNsaXRlcmF0ZWQgdG8gMHgyMi4KLSsjCi0rIyBUaGlzIGNhdGFsb2cgZnVydGhlcm1vcmUgZGlzcGxheXMgdGhlIHRleHQgYmV0d2VlbiB0aGUgcXVvdGF0aW9uIG1hcmtzIGluCi0rIyBib2xkIGZhY2UsIGFzc3VtaW5nIHRoZSBWVDEwMC9YVGVybSBlc2NhcGUgc2VxdWVuY2VzLgotKyMKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvcG8vZW5AcXVvdC5oZWFkZXIJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL3BvL2VuQHF1b3QuaGVhZGVyCTIwMDQtMDktMTIgMTQ6NDA6MzQuNzM3NjkwMDI0IC0wNDAwCi1AQCAtMCwwICsxLDIyIEBACi0rIyBBbGwgdGhpcyBjYXRhbG9nICJ0cmFuc2xhdGVzIiBhcmUgcXVvdGF0aW9uIGNoYXJhY3RlcnMuCi0rIyBUaGUgbXNnaWRzIG11c3QgYmUgQVNDSUkgYW5kIHRoZXJlZm9yZSBjYW5ub3QgY29udGFpbiByZWFsIHF1b3RhdGlvbgotKyMgY2hhcmFjdGVycywgb25seSBzdWJzdGl0dXRlcyBsaWtlIGdyYXZlIGFjY2VudCAoMHg2MCksIGFwb3N0cm9waGUgKDB4MjcpCi0rIyBhbmQgZG91YmxlIHF1b3RlICgweDIyKS4gVGhlc2Ugc3Vic3RpdHV0ZXMgbG9vayBzdHJhbmdlOyBzZWUKLSsjIGh0dHA6Ly93d3cuY2wuY2FtLmFjLnVrL35tZ2syNS91Y3MvcXVvdGVzLmh0bWwKLSsjCi0rIyBUaGlzIGNhdGFsb2cgdHJhbnNsYXRlcyBncmF2ZSBhY2NlbnQgKDB4NjApIGFuZCBhcG9zdHJvcGhlICgweDI3KSB0bwotKyMgbGVmdCBzaW5nbGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxOCkgYW5kIHJpZ2h0IHNpbmdsZSBxdW90YXRpb24gbWFyayAoVSsyMDE5KS4KLSsjIEl0IGFsc28gdHJhbnNsYXRlcyBwYWlycyBvZiBhcG9zdHJvcGhlICgweDI3KSB0bwotKyMgbGVmdCBzaW5nbGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxOCkgYW5kIHJpZ2h0IHNpbmdsZSBxdW90YXRpb24gbWFyayAoVSsyMDE5KQotKyMgYW5kIHBhaXJzIG9mIHF1b3RhdGlvbiBtYXJrICgweDIyKSB0bwotKyMgbGVmdCBkb3VibGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxQykgYW5kIHJpZ2h0IGRvdWJsZSBxdW90YXRpb24gbWFyayAoVSsyMDFEKS4KLSsjCi0rIyBXaGVuIG91dHB1dCB0byBhbiBVVEYtOCB0ZXJtaW5hbCwgdGhlIHF1b3RhdGlvbiBjaGFyYWN0ZXJzIGFwcGVhciBwZXJmZWN0bHkuCi0rIyBXaGVuIG91dHB1dCB0byBhbiBJU08tODg1OS0xIHRlcm1pbmFsLCB0aGUgc2luZ2xlIHF1b3RhdGlvbiBtYXJrcyBhcmUKLSsjIHRyYW5zbGl0ZXJhdGVkIHRvIGFwb3N0cm9waGVzIChieSBpY29udiBpbiBnbGliYyAyLjIgb3IgbmV3ZXIpIG9yIHRvCi0rIyBncmF2ZS9hY3V0ZSBhY2NlbnQgKGJ5IGxpYmljb252KSwgYW5kIHRoZSBkb3VibGUgcXVvdGF0aW9uIG1hcmtzIGFyZQotKyMgdHJhbnNsaXRlcmF0ZWQgdG8gMHgyMi4KLSsjIFdoZW4gb3V0cHV0IHRvIGFuIEFTQ0lJIHRlcm1pbmFsLCB0aGUgc2luZ2xlIHF1b3RhdGlvbiBtYXJrcyBhcmUKLSsjIHRyYW5zbGl0ZXJhdGVkIHRvIGFwb3N0cm9waGVzLCBhbmQgdGhlIGRvdWJsZSBxdW90YXRpb24gbWFya3MgYXJlCi0rIyB0cmFuc2xpdGVyYXRlZCB0byAweDIyLgotKyMKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvcG8vaW5zZXJ0LWhlYWRlci5zaW4JMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL3BvL2luc2VydC1oZWFkZXIuc2luCTIwMDQtMDktMTIgMTQ6NDA6MzQuNzQzNjg5MTEyIC0wNDAwCi1AQCAtMCwwICsxLDIzIEBACi0rIyBTZWQgc2NyaXB0IHRoYXQgaW5zZXJ0cyB0aGUgZmlsZSBjYWxsZWQgSEVBREVSIGJlZm9yZSB0aGUgaGVhZGVyIGVudHJ5LgotKyMKLSsjIEF0IGVhY2ggb2NjdXJyZW5jZSBvZiBhIGxpbmUgc3RhcnRpbmcgd2l0aCAibXNnaWQgIiwgd2UgZXhlY3V0ZSB0aGUgZm9sbG93aW5nCi0rIyBjb21tYW5kcy4gQXQgdGhlIGZpcnN0IG9jY3VycmVuY2UsIGluc2VydCB0aGUgZmlsZS4gQXQgdGhlIGZvbGxvd2luZwotKyMgb2NjdXJyZW5jZXMsIGRvIG5vdGhpbmcuIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgdGhlIGZvbGxvd2luZwotKyMgb2NjdXJyZW5jZXMgaXMgYWNoaWV2ZWQgYnkgbG9va2luZyBhdCB0aGUgaG9sZCBzcGFjZS4KLSsvXm1zZ2lkIC97Ci0reAotKyMgVGVzdCBpZiB0aGUgaG9sZCBzcGFjZSBpcyBlbXB0eS4KLStzL20vbS8KLSt0YQotKyMgWWVzIGl0IHdhcyBlbXB0eS4gRmlyc3Qgb2NjdXJyZW5jZS4gUmVhZCB0aGUgZmlsZS4KLStyIEhFQURFUgotKyMgT3V0cHV0IHRoZSBmaWxlJ3MgY29udGVudHMgYnkgcmVhZGluZyB0aGUgbmV4dCBsaW5lLiBCdXQgZG9uJ3QgbG9zZSB0aGUKLSsjIGN1cnJlbnQgbGluZSB3aGlsZSBkb2luZyB0aGlzLgotK2cKLStOCi0rYmIKLSs6YQotKyMgVGhlIGhvbGQgc3BhY2Ugd2FzIG5vbmVtcHR5LiBGb2xsb3dpbmcgb2NjdXJyZW5jZXMuIERvIG5vdGhpbmcuCi0reAotKzpiCi0rfQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9wby9NYWtldmFycwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvcG8vTWFrZXZhcnMJMjAwNC0wOS0xMiAxNDo0MDozNC43NDg2ODgzNTIgLTA0MDAKLUBAIC0wLDAgKzEsNDEgQEAKLSsjIE1ha2VmaWxlIHZhcmlhYmxlcyBmb3IgUE8gZGlyZWN0b3J5IGluIGFueSBwYWNrYWdlIHVzaW5nIEdOVSBnZXR0ZXh0LgotKwotKyMgVXN1YWxseSB0aGUgbWVzc2FnZSBkb21haW4gaXMgdGhlIHNhbWUgYXMgdGhlIHBhY2thZ2UgbmFtZS4KLStET01BSU4gPSAkKFBBQ0tBR0UpCi0rCi0rIyBUaGVzZSB0d28gdmFyaWFibGVzIGRlcGVuZCBvbiB0aGUgbG9jYXRpb24gb2YgdGhpcyBkaXJlY3RvcnkuCi0rc3ViZGlyID0gcG8KLSt0b3BfYnVpbGRkaXIgPSAuLgotKwotKyMgVGhlc2Ugb3B0aW9ucyBnZXQgcGFzc2VkIHRvIHhnZXR0ZXh0LgotK1hHRVRURVhUX09QVElPTlMgPSAtLWtleXdvcmQ9XyAtLWtleXdvcmQ9Tl8KLSsKLSsjIFRoaXMgaXMgdGhlIGNvcHlyaWdodCBob2xkZXIgdGhhdCBnZXRzIGluc2VydGVkIGludG8gdGhlIGhlYWRlciBvZiB0aGUKLSsjICQoRE9NQUlOKS5wb3QgZmlsZS4gIFNldCB0aGlzIHRvIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG9mIHRoZSBzdXJyb3VuZGluZwotKyMgcGFja2FnZS4gIChOb3RlIHRoYXQgdGhlIG1zZ3N0ciBzdHJpbmdzLCBleHRyYWN0ZWQgZnJvbSB0aGUgcGFja2FnZSdzCi0rIyBzb3VyY2VzLCBiZWxvbmcgdG8gdGhlIGNvcHlyaWdodCBob2xkZXIgb2YgdGhlIHBhY2thZ2UuKSAgVHJhbnNsYXRvcnMgYXJlCi0rIyBleHBlY3RlZCB0byB0cmFuc2ZlciB0aGUgY29weXJpZ2h0IGZvciB0aGVpciB0cmFuc2xhdGlvbnMgdG8gdGhpcyBwZXJzb24KLSsjIG9yIGVudGl0eSwgb3IgdG8gZGlzY2xhaW0gdGhlaXIgY29weXJpZ2h0LiAgVGhlIGVtcHR5IHN0cmluZyBzdGFuZHMgZm9yCi0rIyB0aGUgcHVibGljIGRvbWFpbjsgaW4gdGhpcyBjYXNlIHRoZSB0cmFuc2xhdG9ycyBhcmUgZXhwZWN0ZWQgdG8gZGlzY2xhaW0KLSsjIHRoZWlyIGNvcHlyaWdodC4KLStDT1BZUklHSFRfSE9MREVSID0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIGlzIHRoZSBlbWFpbCBhZGRyZXNzIG9yIFVSTCB0byB3aGljaCB0aGUgdHJhbnNsYXRvcnMgc2hhbGwgcmVwb3J0Ci0rIyBidWdzIGluIHRoZSB1bnRyYW5zbGF0ZWQgc3RyaW5nczoKLSsjIC0gU3RyaW5ncyB3aGljaCBhcmUgbm90IGVudGlyZSBzZW50ZW5jZXMsIHNlZSB0aGUgbWFpbnRhaW5lciBndWlkZWxpbmVzCi0rIyAgIGluIHRoZSBHTlUgZ2V0dGV4dCBkb2N1bWVudGF0aW9uLCBzZWN0aW9uICdQcmVwYXJpbmcgU3RyaW5ncycuCi0rIyAtIFN0cmluZ3Mgd2hpY2ggdXNlIHVuY2xlYXIgdGVybXMgb3IgcmVxdWlyZSBhZGRpdGlvbmFsIGNvbnRleHQgdG8gYmUKLSsjICAgdW5kZXJzdG9vZC4KLSsjIC0gU3RyaW5ncyB3aGljaCBtYWtlIGludmFsaWQgYXNzdW1wdGlvbnMgYWJvdXQgbm90YXRpb24gb2YgZGF0ZSwgdGltZSBvcgotKyMgICBtb25leS4KLSsjIC0gUGx1cmFsaXNhdGlvbiBwcm9ibGVtcy4KLSsjIC0gSW5jb3JyZWN0IEVuZ2xpc2ggc3BlbGxpbmcuCi0rIyAtIEluY29ycmVjdCBmb3JtYXR0aW5nLgotKyMgSXQgY2FuIGJlIHlvdXIgZW1haWwgYWRkcmVzcywgb3IgYSBtYWlsaW5nIGxpc3QgYWRkcmVzcyB3aGVyZSB0cmFuc2xhdG9ycwotKyMgY2FuIHdyaXRlIHRvIHdpdGhvdXQgYmVpbmcgc3Vic2NyaWJlZCwgb3IgdGhlIFVSTCBvZiBhIHdlYiBwYWdlIHRocm91Z2gKLSsjIHdoaWNoIHRoZSB0cmFuc2xhdG9ycyBjYW4gY29udGFjdCB5b3UuCi0rTVNHSURfQlVHU19BRERSRVNTID0KLSsKLSsjIFRoaXMgaXMgdGhlIGxpc3Qgb2YgbG9jYWxlIGNhdGVnb3JpZXMsIGJleW9uZCBMQ19NRVNTQUdFUywgZm9yIHdoaWNoIHRoZQotKyMgbWVzc2FnZSBjYXRhbG9ncyBzaGFsbCBiZSB1c2VkLiAgSXQgaXMgdXN1YWxseSBlbXB0eS4KLStFWFRSQV9MT0NBTEVfQ0FURUdPUklFUyA9Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL3BvL3F1b3Quc2VkCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9wby9xdW90LnNlZAkyMDA0LTA5LTEyIDE0OjQwOjM0Ljc1NDY4NzQ0MCAtMDQwMAotQEAgLTAsMCArMSw2IEBACi0rcy8iXChbXiJdKlwpIi/igJxcMeKAnS9nCi0rcy9gXChbXmAnXSpcKScv4oCYXDHigJkvZwotK3MvICdcKFteYCddKlwpJyAvIOKAmFwx4oCZIC9nCi0rcy8gJ1woW15gJ10qXCknJC8g4oCYXDHigJkvZwotK3MvXidcKFteYCddKlwpJyAv4oCYXDHigJkgL2cKLStzL+KAnOKAnS8iIi9nCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL3BvL3JlbW92ZS1wb3RjZGF0ZS5zaW4JMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL3BvL3JlbW92ZS1wb3RjZGF0ZS5zaW4JMjAwNC0wOS0xMiAxNDo0MDozNC43NjI2ODYyMjQgLTA0MDAKLUBAIC0wLDAgKzEsMTkgQEAKLSsjIFNlZCBzY3JpcHQgdGhhdCByZW1vdmUgdGhlIFBPVC1DcmVhdGlvbi1EYXRlIGxpbmUgaW4gdGhlIGhlYWRlciBlbnRyeQotKyMgZnJvbSBhIFBPVCBmaWxlLgotKyMKLSsjIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgdGhlIGZvbGxvd2luZyBvY2N1cnJlbmNlcyBvZiB0aGUKLSsjIHBhdHRlcm4gaXMgYWNoaWV2ZWQgYnkgbG9va2luZyBhdCB0aGUgaG9sZCBzcGFjZS4KLSsvXiJQT1QtQ3JlYXRpb24tRGF0ZTogLioiJC97Ci0reAotKyMgVGVzdCBpZiB0aGUgaG9sZCBzcGFjZSBpcyBlbXB0eS4KLStzL1AvUC8KLSt0YQotKyMgWWVzIGl0IHdhcyBlbXB0eS4gRmlyc3Qgb2NjdXJyZW5jZS4gUmVtb3ZlIHRoZSBsaW5lLgotK2cKLStkCi0rYmIKLSs6YQotKyMgVGhlIGhvbGQgc3BhY2Ugd2FzIG5vbmVtcHR5LiBGb2xsb3dpbmcgb2NjdXJyZW5jZXMuIERvIG5vdGhpbmcuCi0reAotKzpiCi0rfQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9wby9SdWxlcy1xdW90CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9wby9SdWxlcy1xdW90CTIwMDQtMDktMTIgMTQ6NDA6MzQuNzc4NjgzNzkyIC0wNDAwCi1AQCAtMCwwICsxLDQ3IEBACi0rIyBTcGVjaWFsIE1ha2VmaWxlIHJ1bGVzIGZvciBFbmdsaXNoIG1lc3NhZ2UgY2F0YWxvZ3Mgd2l0aCBxdW90YXRpb24gbWFya3MuCi0rCi0rRElTVEZJTEVTLmNvbW1vbi5leHRyYTEgPSBxdW90LnNlZCBib2xkcXVvdC5zZWQgZW5AcXVvdC5oZWFkZXIgZW5AYm9sZHF1b3QuaGVhZGVyIGluc2VydC1oZWFkZXIuc2luIFJ1bGVzLXF1b3QKLSsKLSsuU1VGRklYRVM6IC5pbnNlcnQtaGVhZGVyIC5wby11cGRhdGUtZW4KLSsKLStlbkBxdW90LnBvLWNyZWF0ZToKLSsJJChNQUtFKSBlbkBxdW90LnBvLXVwZGF0ZQotK2VuQGJvbGRxdW90LnBvLWNyZWF0ZToKLSsJJChNQUtFKSBlbkBib2xkcXVvdC5wby11cGRhdGUKLSsKLStlbkBxdW90LnBvLXVwZGF0ZTogZW5AcXVvdC5wby11cGRhdGUtZW4KLStlbkBib2xkcXVvdC5wby11cGRhdGU6IGVuQGJvbGRxdW90LnBvLXVwZGF0ZS1lbgotKwotKy5pbnNlcnQtaGVhZGVyLnBvLXVwZGF0ZS1lbjoKLSsJQGxhbmc9YGVjaG8gJEAgfCBzZWQgLWUgJ3MvXC5wby11cGRhdGUtZW4kJC8vJ2A7IFwKLSsJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dCI7IHRoZW4gUEFUSD1gcHdkYC8uLi9zcmM6JCRQQVRIOyBHRVRURVhUTElCRElSPWBjZCAkKHRvcF9zcmNkaXIpL3NyYyAmJiBwd2RgOyBleHBvcnQgR0VUVEVYVExJQkRJUjsgZmk7IFwKLSsJdG1wZGlyPWBwd2RgOyBcCi0rCWVjaG8gIiQkbGFuZzoiOyBcCi0rCWxsPWBlY2hvICQkbGFuZyB8IHNlZCAtZSAncy9ALiovLydgOyBcCi0rCUxDX0FMTD1DOyBleHBvcnQgTENfQUxMOyBcCi0rCWNkICQoc3JjZGlyKTsgXAotKwlpZiAkKE1TR0lOSVQpIC1pICQoRE9NQUlOKS5wb3QgLS1uby10cmFuc2xhdG9yIC1sICQkbGwgLW8gLSAyPi9kZXYvbnVsbCB8IHNlZCAtZiAkJHRtcGRpci8kJGxhbmcuaW5zZXJ0LWhlYWRlciB8ICQoTVNHQ09OVikgLXQgVVRGLTggfCAkKE1TR0ZJTFRFUikgc2VkIC1mIGBlY2hvICQkbGFuZyB8IHNlZCAtZSAncy8uKkAvLydgLnNlZCAyPi9kZXYvbnVsbCA+ICQkdG1wZGlyLyQkbGFuZy5uZXcucG87IHRoZW4gXAotKwkgIGlmIGNtcCAkJGxhbmcucG8gJCR0bXBkaXIvJCRsYW5nLm5ldy5wbyA+L2Rldi9udWxsIDI+JjE7IHRoZW4gXAotKwkgICAgcm0gLWYgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbzsgXAotKwkgIGVsc2UgXAotKwkgICAgaWYgbXYgLWYgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbyAkJGxhbmcucG87IHRoZW4gXAotKwkgICAgICA6OyBcCi0rCSAgICBlbHNlIFwKLSsJICAgICAgZWNobyAiY3JlYXRpb24gb2YgJCRsYW5nLnBvIGZhaWxlZDogY2Fubm90IG1vdmUgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbyB0byAkJGxhbmcucG8iIDE+JjI7IFwKLSsJICAgICAgZXhpdCAxOyBcCi0rCSAgICBmaTsgXAotKwkgIGZpOyBcCi0rCWVsc2UgXAotKwkgIGVjaG8gImNyZWF0aW9uIG9mICQkbGFuZy5wbyBmYWlsZWQhIiAxPiYyOyBcCi0rCSAgcm0gLWYgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbzsgXAotKwlmaQotKwotK2VuQHF1b3QuaW5zZXJ0LWhlYWRlcjogaW5zZXJ0LWhlYWRlci5zaW4KLSsJc2VkIC1lICcvXiMvZCcgLWUgJ3MvSEVBREVSL2VuQHF1b3QuaGVhZGVyL2cnICQoc3JjZGlyKS9pbnNlcnQtaGVhZGVyLnNpbiA+IGVuQHF1b3QuaW5zZXJ0LWhlYWRlcgotKwotK2VuQGJvbGRxdW90Lmluc2VydC1oZWFkZXI6IGluc2VydC1oZWFkZXIuc2luCi0rCXNlZCAtZSAnL14jL2QnIC1lICdzL0hFQURFUi9lbkBib2xkcXVvdC5oZWFkZXIvZycgJChzcmNkaXIpL2luc2VydC1oZWFkZXIuc2luID4gZW5AYm9sZHF1b3QuaW5zZXJ0LWhlYWRlcgotKwotK21vc3RseWNsZWFuOiBtb3N0bHljbGVhbi1xdW90Ci0rbW9zdGx5Y2xlYW4tcXVvdDoKLSsJcm0gLWYgKi5pbnNlcnQtaGVhZGVyCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL3BvL3N0YW1wLWNhdC1pZAkxOTk4LTEyLTMwIDAyOjUwOjAxLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvcG8vc3RhbXAtY2F0LWlkCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi1AQCAtMSArMCwwIEBACi0tdGltZXN0YW1wCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL3NyYy9NYWtlZmlsZS5hbQkxOTk4LTEyLTI4IDAzOjM4OjQ3LjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvc3JjL01ha2VmaWxlLmFtCTIwMDQtMDktMTIgMTQ6NDA6NTMuNjY1ODEyNTEyIC0wNDAwCi1AQCAtMiwxMiArMiwxMiBAQAotIGxyel9TT1VSQ0VTPWxyei5jIHRpbWluZy5jIHpwZXJyLmMgenJlYWRsaW5lLmMgY3JjdGFiLmMgcmJzYi5jIHptLmMgcHJvdG5hbWUuYyB0Y3AuYyBsc3lzbG9nLmMgY2FuaXQuYwotIGxzel9TT1VSQ0VTPWxzei5jIHRpbWluZy5jIHpwZXJyLmMgenJlYWRsaW5lLmMgY3JjdGFiLmMgcmJzYi5jIHptLmMgcHJvdG5hbWUuYyB0Y3AuYyBsc3lzbG9nLmMgY2FuaXQuYwotIG5vaW5zdF9IRUFERVJTID0gdGltaW5nLmggemdsb2JhbC5oIHptb2RlbS5oCi0tZGF0YWRpciA9ICQocHJlZml4KS9AREFUQURJUk5BTUVACi0rZGF0YWRpciA9ICQocHJlZml4KS9zaGFyZQotIGxvY2FsZWRpciA9ICQoZGF0YWRpcikvbG9jYWxlCi0gQ0ZMQUdTPUBDRkxBR1NACi0gRElTVENMRUFOX0ZJTEVTPWxyenN6YnVnCi0gCi0tTERBREQgPSAuLi9saWIvbGliem1vZGVtLmEgQElOVExMSUJTQAotK0xEQUREID0gLi4vbGliL2xpYnptb2RlbS5hIEBMSUJJTlRMQAotIEFVVE9NQUtFX09QVElPTlM9YW5zaTJrbnIKLSBFWFRSQV9ESVNUID0gYW5zaTJrbnIuMSBhbnNpMmtuci5jIGxyenN6YnVnLmluCi0gSU5DTFVERVMgPSAtSS4uIC1JJChzcmNkaXIpIC1JJCh0b3Bfc3JjZGlyKS9zcmMgLUkuLi9pbnRsIC1JJCh0b3Bfc3JjZGlyKS9saWIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzei0wLjEyLjIwL2xyenN6X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzei0wLjEyLjIwL2xyenN6X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjgyZjFjOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3otMC4xMi4yMC9scnpzel9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotVGhpcyBwYXRjaCBmaXhlcyBmb2xsb3dpbmcgaXNzdWUgd2l0aCBhdXRvbWFrZSAxLjEyCi0KLXwgY29uZmlndXJlLmluOjk1OiBlcnJvcjogYXV0b21hdGljIGRlLUFOU0ktZmljYXRpb24gc3VwcG9ydCBoYXMgYmVlbiByZW1vdmVkCi0uLi4KLXwgbGliL01ha2VmaWxlLmFtOjM6IGVycm9yOiBhdXRvbWF0aWMgZGUtQU5TSS1maWNhdGlvbiBzdXBwb3J0IGhhcyBiZWVuIHJlbW92ZWQKLXwgbGliL01ha2VmaWxlLmFtOiBpbnN0YWxsaW5nICcuL2RlcGNvbXAnCi18IHNyYy9NYWtlZmlsZS5hbToxMTogZXJyb3I6IGF1dG9tYXRpYyBkZS1BTlNJLWZpY2F0aW9uIHN1cHBvcnQgaGFzIGJlZW4gcmVtb3ZlZAotCi0KLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0yMDEyLzA1LzAzCi0KLUluZGV4OiBscnpzei0wLjEyLjIwL2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxyenN6LTAuMTIuMjAub3JpZy9jb25maWd1cmUuaW4KLSsrKyBscnpzei0wLjEyLjIwL2NvbmZpZ3VyZS5pbgotQEAgLTkyLDcgKzkyLDYgQEAgQUNfUFJPR19SQU5MSUIKLSBBQ19JU0NfUE9TSVgKLSBBQ19BSVgKLSBBQ19NSU5JWAotLUFNX0NfUFJPVE9UWVBFUwotIEFDX0NfQ09OU1QKLSBBQ19DX0lOTElORQotIAotSW5kZXg6IGxyenN6LTAuMTIuMjAvbGliL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbHJ6c3otMC4xMi4yMC5vcmlnL2xpYi9NYWtlZmlsZS5hbQotKysrIGxyenN6LTAuMTIuMjAvbGliL01ha2VmaWxlLmFtCi1AQCAtMSw2ICsxLDUgQEAKLSBub2luc3RfTElCUkFSSUVTPWxpYnptb2RlbS5hCi0gQ0ZMQUdTPUBDRkxBR1NACi0tQVVUT01BS0VfT1BUSU9OUz1hbnNpMmtucgotIAotIEVYVFJBX0RJU1QgPSBhbGxvY2EuYyBhbnNpMmtuci4xIGFuc2kya25yLmMgXAotIAlnZXRvcHQuYyBnZXRvcHQxLmMgbWtkaXIuYyBta3RpbWUuYyBcCi1JbmRleDogbHJ6c3otMC4xMi4yMC9zcmMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBscnpzei0wLjEyLjIwLm9yaWcvc3JjL01ha2VmaWxlLmFtCi0rKysgbHJ6c3otMC4xMi4yMC9zcmMvTWFrZWZpbGUuYW0KLUBAIC04LDcgKzgsNiBAQCBDRkxBR1M9QENGTEFHU0AKLSBESVNUQ0xFQU5fRklMRVM9bHJ6c3pidWcKLSAKLSBMREFERCA9IC4uL2xpYi9saWJ6bW9kZW0uYSBATElCSU5UTEAKLS1BVVRPTUFLRV9PUFRJT05TPWFuc2kya25yCi0gRVhUUkFfRElTVCA9IGFuc2kya25yLjEgYW5zaTJrbnIuYyBscnpzemJ1Zy5pbgotIElOQ0xVREVTID0gLUkuLiAtSSQoc3JjZGlyKSAtSSQodG9wX3NyY2Rpcikvc3JjIC1JLi4vaW50bCAtSSQodG9wX3NyY2RpcikvbGliCi0gI0RFRlMgPSAtRExPQ0FMRURJUj1cIiQobG9jYWxlZGlyKVwiIC1ET1M9XCJAaG9zdF9vc0BcIiAtRENQVT1cIkBob3N0X2NwdUBcIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xyenN6L2xyenN6XzAuMTIuMjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3pfMC4xMi4yMC5iYgppbmRleCAzNDU1NmIyLi40MTI5MjM3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3pfMC4xMi4yMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3pfMC4xMi4yMC5iYgpAQCAtMTMsMTEgKzEzLDkgQEAKIFBSID0gInI2IgogCiBTUkNfVVJJID0gImh0dHA6Ly93d3cub2hzZS5kZS91d2UvcmVsZWFzZXMvbHJ6c3otJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2F1dG90b29scy11cGRhdGUucGF0Y2ggXAogCSAgIGZpbGU6Ly9hdXRvdG9vbHMucGF0Y2ggXAogCSAgIGZpbGU6Ly9tYWtlZmlsZS5wYXRjaCBcCi0JICAgZmlsZTovL2dldHRleHQucGF0Y2ggXAotCSAgIGZpbGU6Ly9hY2RlZmluZS5wYXRjaCBcCi0JICAgZmlsZTovL2xyenN6X2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9scnpzei1jaGVjay1sb2NhbGUuaC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9jdmUtMjAxOC0xMDE5NS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlLnBhdGNoIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9vcGVuc2JpL2ZpbGVzLzAwMDEtTWFrZWZpbGUtRG9uLXQtc3BlY2lmeS1tYWJpLW9yLW1hcmNoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvZmlsZXMvMDAwMS1NYWtlZmlsZS1Eb24tdC1zcGVjaWZ5LW1hYmktb3ItbWFyY2gucGF0Y2gKaW5kZXggOWMyZDBlYi4uZDJhODA0OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvZmlsZXMvMDAwMS1NYWtlZmlsZS1Eb24tdC1zcGVjaWZ5LW1hYmktb3ItbWFyY2gucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvZmlsZXMvMDAwMS1NYWtlZmlsZS1Eb24tdC1zcGVjaWZ5LW1hYmktb3ItbWFyY2gucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGY1ODcxZTFmMzY1MGQ2YzhhMDMyOTI4Y2I1ZDhjYTAwYzI3NWMzNzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGZlOTg2MGZkODVlNDlhNzViZWY1NDVlNWQ5OTE0MDcwNDkxZTgwMDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CiBEYXRlOiBGcmksIDE1IEZlYiAyMDE5IDE0OjU3OjQxIC0wODAwCiBTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBEb24ndCBzcGVjaWZ5IG1hYmkgb3IgbWFyY2gKQEAgLTcsMjUgKzcsMjYgQEAKICAgICBjYW4ndCBsaW5rIGRvdWJsZS1mbG9hdCBtb2R1bGVzIHdpdGggc29mdC1mbG9hdCBtb2R1bGVzCiBlcnJvcnMgd2hlbiBidWlsZGluZyAzMi1iaXQgb3BlblNCSSBkb24ndCBzcGVjaWZ5IG1hYmkgb3IgbWFyY2guCiAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbRml4ZXMgYSAzMi1iaXQgWW9jdG8gZmxvdyBidWddCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0ZpeGVzIGEgMzItYml0IE9FIGZsb3cgYnVnXQogU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorCiAtLS0KICBNYWtlZmlsZSB8IDIgLS0KICAxIGZpbGUgY2hhbmdlZCwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IGFlNjhmNTUuLjEwODUxZmMgMTAwNjQ0CitpbmRleCBjY2Y4ZWEzLi42OWU1YjM4IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUKICsrKyBiL01ha2VmaWxlCi1AQCAtMTQ1LDcgKzE0NSw2IEBAIEdFTkZMQUdTCSs9CSQoZmlybXdhcmUtZ2VuZmxhZ3MteSkKLSBDRkxBR1MJCT0JLWcgLVdhbGwgLVdlcnJvciAtbm9zdGRsaWIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLU8yCitAQCAtMTY5LDcgKzE2OSw2IEBAIEdFTkZMQUdTCSs9CSQoZmlybXdhcmUtZ2VuZmxhZ3MteSkKKyBDRkxBR1MJCT0JLWcgLVdhbGwgLVdlcnJvciAtZmZyZWVzdGFuZGluZyAtbm9zdGRsaWIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLU8yCiAgQ0ZMQUdTCQkrPQktZm5vLW9taXQtZnJhbWUtcG9pbnRlciAtZm5vLW9wdGltaXplLXNpYmxpbmctY2FsbHMKICBDRkxBR1MJCSs9CS1tbm8tc2F2ZS1yZXN0b3JlIC1tc3RyaWN0LWFsaWduCiAtQ0ZMQUdTCQkrPQktbWFiaT0kKFBMQVRGT1JNX1JJU0NWX0FCSSkgLW1hcmNoPSQoUExBVEZPUk1fUklTQ1ZfSVNBKQogIENGTEFHUwkJKz0JLW1jbW9kZWw9JChQTEFURk9STV9SSVNDVl9DT0RFX01PREVMKQogIENGTEFHUwkJKz0JJChHRU5GTEFHUykKICBDRkxBR1MJCSs9CSQocGxhdGZvcm0tY2ZsYWdzLXkpCi1AQCAtMTU4LDcgKzE1Nyw2IEBAIENQUEZMQUdTCSs9CSQoZmlybXdhcmUtY3BwZmxhZ3MteSkKK0BAIC0xODMsNyArMTgyLDYgQEAgQ1BQRkxBR1MJKz0JJChmaXJtd2FyZS1jcHBmbGFncy15KQogIEFTRkxBR1MJCT0JLWcgLVdhbGwgLW5vc3RkbGliIC1EX19BU1NFTUJMWV9fCiAgQVNGTEFHUwkJKz0JLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgLWZuby1vcHRpbWl6ZS1zaWJsaW5nLWNhbGxzCiAgQVNGTEFHUwkJKz0JLW1uby1zYXZlLXJlc3RvcmUgLW1zdHJpY3QtYWxpZ24KQEAgLTMzLDYgKzM0LDMgQEAKICBBU0ZMQUdTCQkrPQktbWNtb2RlbD0kKFBMQVRGT1JNX1JJU0NWX0NPREVfTU9ERUwpCiAgQVNGTEFHUwkJKz0JJChHRU5GTEFHUykKICBBU0ZMQUdTCQkrPQkkKHBsYXRmb3JtLWFzZmxhZ3MteSkKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9vcGVuc2JpL29wZW5zYmktcGF5bG9hZHMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvb3BlbnNiaS1wYXlsb2Fkcy5pbmMKaW5kZXggYjk3MTRhNy4uMmUzMjk0MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvb3BlbnNiaS1wYXlsb2Fkcy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvb3BlbnNiaS1wYXlsb2Fkcy5pbmMKQEAgLTcsMTggKzcsOCBAQAogCiAgICAgcmV0dXJuICJGV19QQVlMT0FEX1BBVEg9IiArIGRlcGxveV9kaXIgKyAiLyIgKyBzYmlfcGF5bG9hZAogCi1kZWYgcmlzY3ZfZ2V0X2V4dHJhX29lbWFrZV9mZHQoZCk6Ci0gICAgc2JpX2ZkdF9wYXlsb2FkID0gZC5nZXRWYXIoJ1JJU0NWX1NCSV9GRFQnKQotICAgIGRlcGxveV9kaXIgPSBkLmdldFZhcignREVQTE9ZX0RJUl9JTUFHRScpCi0KLSAgICBpZiBzYmlfZmR0X3BheWxvYWQgaXMgTm9uZToKLSAgICAgICAgcmV0dXJuICIiCi0KLSAgICByZXR1cm4gIkZXX1BBWUxPQURfRkRUX1BBVEg9IiArIGRlcGxveV9kaXIgKyAiLyIgKyBzYmlfZmR0X3BheWxvYWQKLQogZGVmIHJpc2N2X2dldF9kb19jb21waWxlX2RlcGVuZHMoZCk6CiAgICAgc2JpX3BheWxvYWQgPSBkLmdldFZhcignUklTQ1ZfU0JJX1BBWUxPQUQnKQotICAgIHNiaV9mZHRfcGF5bG9hZCA9IGQuZ2V0VmFyKCdSSVNDVl9TQklfRkRUJykKIAogICAgIGlmIHNiaV9wYXlsb2FkIGlzIE5vbmU6CiAgICAgICAgIHJldHVybiAiIgpAQCAtMjYsMTQgKzE2LDYgQEAKICAgICBpZiAnbGludXgnIGluIHNiaV9wYXlsb2FkIG9yICdJbWFnZScgaW4gc2JpX3BheWxvYWQ6CiAgICAgICAgIHJldHVybiAidmlydHVhbC9rZXJuZWw6ZG9fZGVwbG95IgogICAgIGlmICd1LWJvb3QuYmluJyBpbiBzYmlfcGF5bG9hZDoKLSAgICAgICAgIyBJZiB3ZSB3YW50IFUtQm9vdCBhbmQgYSBGRFQgdGhlbiB3ZSBuZWVkIHRvIGRlcGVuZCBvbiBVLUJvb3QgYW5kCi0gICAgICAgICMgdGhlIGtlcm5lbAotICAgICAgICBpZiBzYmlfZmR0X3BheWxvYWQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gInZpcnR1YWwvYm9vdGxvYWRlcjpkb19kZXBsb3kgdmlydHVhbC9rZXJuZWw6ZG9fZGVwbG95IgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICJ2aXJ0dWFsL2Jvb3Rsb2FkZXI6ZG9fZGVwbG95IgotICAgICMgSWYgd2Ugd2FudCBhIGN1c3RvbSBGRFQgdGhlbiB3ZSBuZWVkIHRvIGRlcGVuZCBvbiB0aGUga2VybmVsCi0gICAgaWYgc2JpX2ZkdF9wYXlsb2FkIGlzIG5vdCBOb25lOgotICAgICAgICByZXR1cm4gInZpcnR1YWwva2VybmVsOmRvX2RlcGxveSIKKyAgICAgICAgcmV0dXJuICJ2aXJ0dWFsL2Jvb3Rsb2FkZXI6ZG9fZGVwbG95IgogCiAgICAgcmV0dXJuICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3Avb3BlbnNiaS9vcGVuc2JpXzAuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9vcGVuc2JpL29wZW5zYmlfMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTliYmJmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9vcGVuc2JpL29wZW5zYmlfMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotU1VNTUFSWSA9ICJSSVNDLVYgT3BlbiBTb3VyY2UgU3VwZXJ2aXNvciBCaW5hcnkgSW50ZXJmYWNlIChPcGVuU0JJKSIKLURFU0NSSVBUSU9OID0gIk9wZW5TQkkgYWltcyB0byBwcm92aWRlIGFuIG9wZW4tc291cmNlIGFuZCBleHRlbnNpYmxlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSSVNDLVYgU0JJIHNwZWNpZmljYXRpb24gZm9yIGEgcGxhdGZvcm0gc3BlY2lmaWMgZmlybXdhcmUgKE0tbW9kZSkgYW5kIGEgZ2VuZXJhbCBwdXJwb3NlIE9TLCBoeXBlcnZpc29yIG9yIGJvb3Rsb2FkZXIgKFMtbW9kZSBvciBIUy1tb2RlKS4gT3BlblNCSSBpbXBsZW1lbnRhdGlvbiBjYW4gYmUgZWFzaWx5IGV4dGVuZGVkIGJ5IFJJU0MtViBwbGF0Zm9ybSBvciBTeXN0ZW0tb24tQ2hpcCB2ZW5kb3JzIHRvIGZpdCBhIHBhcnRpY3VsYXIgaGFkd2FyZSBjb25maWd1cmF0aW9uLiIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5CU0Q7bWQ1PTQyZGQ5NTU1ZWIxNzdmMzUxNTBjZjlhYTI0MGI2MWU1IgotREVQRU5EUyArPSAiZHRjLW5hdGl2ZSIKLQotcmVxdWlyZSBvcGVuc2JpLXBheWxvYWRzLmluYwotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZGVwbG95Ci0KLVNSQ1JFViA9ICJiZTkyZGEyODBkODdjMzhhMmUwYWRjNWQzZjQzYmFiN2I1NDY4ZjA5IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3Jpc2N2L29wZW5zYmkuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtRG9uLXQtc3BlY2lmeS1tYWJpLW9yLW1hcmNoLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2MjFmMzhkODIwNWVmNWZiMTg1ZTQwNTUwMjVlNzNkZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwN2YxOGI3M2FiZjNiODVhYWJlNWJlYWQxOWE5MjM3MTZjMTAwZDMwZWI1ODAzMzQ1OWYzOWMzYTIyNGJlMzAwIgotCi1FWFRSQV9PRU1BS0UgKz0gIlBMQVRGT1JNPSR7UklTQ1ZfU0JJX1BMQVR9IEk9JHtEfSIKLSMgSWYgUklTQ1ZfU0JJX1BBWUxPQUQgaXMgc2V0IHRoZW4gaW5jbHVkZSBpdCBhcyBhIHBheWxvYWQKLUVYVFJBX09FTUFLRV9hcHBlbmQgPSAiICR7QHJpc2N2X2dldF9leHRyYV9vZW1ha2VfaW1hZ2UoZCl9ICR7QHJpc2N2X2dldF9leHRyYV9vZW1ha2VfZmR0KGQpfSIKLQotIyBSZXF1aXJlZCBpZiBzcGVjaWZ5aW5nIGEgY3VzdG9tIHBheWxvYWQKLWRvX2NvbXBpbGVbZGVwZW5kc10gKz0gIiR7QHJpc2N2X2dldF9kb19jb21waWxlX2RlcGVuZHMoZCl9IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIEluIHRoZSBmdXR1cmUgdGhlc2UgbWlnaHQgYmUgcmVxdWlyZWQgYXMgYSBkZXBlbmRlbmN5IGZvciBvdGhlciBwYWNrYWdlcy4KLQkjIEF0IHRoZSBtb21lbnQganVzdCBkZWxldGUgdGhlbSB0byBhdm9pZCB3YXJuaW5ncwotCXJtIC1yICR7RH0vaW5jbHVkZQotCXJtIC1yICR7RH0vcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vbGliCi0Jcm0gLXIgJHtEfS9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9maXJtd2FyZS9wYXlsb2FkcwotCXJtIC1yICR7RH0vbGliCi19Ci0KLWRvX2RlcGxveSAoKSB7Ci0JaW5zdGFsbCAtbSA3NTUgJHtEfS9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9maXJtd2FyZS9md19wYXlsb2FkLiogJHtERVBMT1lESVJ9LwotCWluc3RhbGwgLW0gNzU1ICR7RH0vcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vZmlybXdhcmUvZndfanVtcC4qICR7REVQTE9ZRElSfS8KLQlpbnN0YWxsIC1tIDc1NSAke0R9L3BsYXRmb3JtLyR7UklTQ1ZfU0JJX1BMQVR9L2Zpcm13YXJlL2Z3X2R5bmFtaWMuKiAke0RFUExPWURJUn0vCi19Ci0KLWFkZHRhc2sgZGVwbG95IGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19pbnN0YWxsCi0KLUZJTEVTXyR7UE59ICs9ICIvcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vZmlybXdhcmUvZndfanVtcC4qIgotRklMRVNfJHtQTn0gKz0gIi9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9maXJtd2FyZS9md19wYXlsb2FkLioiCi1GSUxFU18ke1BOfSArPSAiL3BsYXRmb3JtLyR7UklTQ1ZfU0JJX1BMQVR9L2Zpcm13YXJlL2Z3X2R5bmFtaWMuKiIKLQotCi1DT01QQVRJQkxFX0hPU1QgPSAiKHJpc2N2NjR8cmlzY3YzMikuKiIKLUlOSElCSVRfUEFDS0FHRV9TVFJJUCA9ICIxIgotCi1TRUNVUklUWV9DRkxBR1MgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvb3BlbnNiaV8wLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3Avb3BlbnNiaS9vcGVuc2JpXzAuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmYyZDRiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvb3BlbnNiaV8wLjYuYmIKQEAgLTAsMCArMSw0OCBAQAorU1VNTUFSWSA9ICJSSVNDLVYgT3BlbiBTb3VyY2UgU3VwZXJ2aXNvciBCaW5hcnkgSW50ZXJmYWNlIChPcGVuU0JJKSIKK0RFU0NSSVBUSU9OID0gIk9wZW5TQkkgYWltcyB0byBwcm92aWRlIGFuIG9wZW4tc291cmNlIGFuZCBleHRlbnNpYmxlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSSVNDLVYgU0JJIHNwZWNpZmljYXRpb24gZm9yIGEgcGxhdGZvcm0gc3BlY2lmaWMgZmlybXdhcmUgKE0tbW9kZSkgYW5kIGEgZ2VuZXJhbCBwdXJwb3NlIE9TLCBoeXBlcnZpc29yIG9yIGJvb3Rsb2FkZXIgKFMtbW9kZSBvciBIUy1tb2RlKS4gT3BlblNCSSBpbXBsZW1lbnRhdGlvbiBjYW4gYmUgZWFzaWx5IGV4dGVuZGVkIGJ5IFJJU0MtViBwbGF0Zm9ybSBvciBTeXN0ZW0tb24tQ2hpcCB2ZW5kb3JzIHRvIGZpdCBhIHBhcnRpY3VsYXIgaGFkd2FyZSBjb25maWd1cmF0aW9uLiIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5CU0Q7bWQ1PTQyZGQ5NTU1ZWIxNzdmMzUxNTBjZjlhYTI0MGI2MWU1IgorCityZXF1aXJlIG9wZW5zYmktcGF5bG9hZHMuaW5jCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBkZXBsb3kKKworU1JDUkVWID0gImFjNWU4MjFkNTBiZTYzMWYyNjI3NDc2NWE1OWJjMWI0NDRmZmQ4NjIiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmlzY3Yvb3BlbnNiaS5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS1Eb24tdC1zcGVjaWZ5LW1hYmktb3ItbWFyY2gucGF0Y2ggXAorICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworRVhUUkFfT0VNQUtFICs9ICJQTEFURk9STT0ke1JJU0NWX1NCSV9QTEFUfSBJPSR7RH0iCisjIElmIFJJU0NWX1NCSV9QQVlMT0FEIGlzIHNldCB0aGVuIGluY2x1ZGUgaXQgYXMgYSBwYXlsb2FkCitFWFRSQV9PRU1BS0VfYXBwZW5kID0gIiAke0ByaXNjdl9nZXRfZXh0cmFfb2VtYWtlX2ltYWdlKGQpfSIKKworIyBSZXF1aXJlZCBpZiBzcGVjaWZ5aW5nIGEgY3VzdG9tIHBheWxvYWQKK2RvX2NvbXBpbGVbZGVwZW5kc10gKz0gIiR7QHJpc2N2X2dldF9kb19jb21waWxlX2RlcGVuZHMoZCl9IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIEluIHRoZSBmdXR1cmUgdGhlc2UgbWlnaHQgYmUgcmVxdWlyZWQgYXMgYSBkZXBlbmRlbmN5IGZvciBvdGhlciBwYWNrYWdlcy4KKwkjIEF0IHRoZSBtb21lbnQganVzdCBkZWxldGUgdGhlbSB0byBhdm9pZCB3YXJuaW5ncworCXJtIC1yICR7RH0vaW5jbHVkZQorCXJtIC1yICR7RH0vcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vbGliCisJcm0gLXIgJHtEfS9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9maXJtd2FyZS9wYXlsb2FkcworCXJtIC1yICR7RH0vbGliCit9CisKK2RvX2RlcGxveSAoKSB7CisJaW5zdGFsbCAtbSA3NTUgJHtEfS9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9maXJtd2FyZS9md19wYXlsb2FkLiogJHtERVBMT1lESVJ9LworCWluc3RhbGwgLW0gNzU1ICR7RH0vcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vZmlybXdhcmUvZndfanVtcC4qICR7REVQTE9ZRElSfS8KKwlpbnN0YWxsIC1tIDc1NSAke0R9L3BsYXRmb3JtLyR7UklTQ1ZfU0JJX1BMQVR9L2Zpcm13YXJlL2Z3X2R5bmFtaWMuKiAke0RFUExPWURJUn0vCit9CisKK2FkZHRhc2sgZGVwbG95IGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19pbnN0YWxsCisKK0ZJTEVTXyR7UE59ICs9ICIvcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vZmlybXdhcmUvZndfanVtcC4qIgorRklMRVNfJHtQTn0gKz0gIi9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9maXJtd2FyZS9md19wYXlsb2FkLioiCitGSUxFU18ke1BOfSArPSAiL3BsYXRmb3JtLyR7UklTQ1ZfU0JJX1BMQVR9L2Zpcm13YXJlL2Z3X2R5bmFtaWMuKiIKKworQ09NUEFUSUJMRV9IT1NUID0gIihyaXNjdjY0fHJpc2N2MzIpLioiCitJTkhJQklUX1BBQ0tBR0VfU1RSSVAgPSAiMSIKKworU0VDVVJJVFlfQ0ZMQUdTID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlscy9jb25maWd1cmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHMvY29uZmlndXJlLnBhdGNoCmluZGV4IGE3ZTQ0NTcuLmU0NDRjMTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlscy9jb25maWd1cmUucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzL2NvbmZpZ3VyZS5wYXRjaApAQCAtMjQsNyArMjQsNyBAQAogLQkkKENDKSAkKExERkxBR1MpICQoVEFSR0VUX0FSQ0gpICReICQoTERMSUJTKSAtbyAkQAogKwkkKENDKSAkKExERkxBR1MpICQoVEFSR0VUX0FSQ0gpICReICQoTElCX0xETElCUykgJChMRExJQlMpIC1vICRACiAgCi0gJS44ICUuNzogJS5tYW4KKyAlLjggJS43ICUuNTogJS5tYW4KICAJTT1gZWNobyAkKERBVEUpIHwgc2VkICdzLy0wMS0vLUphbnVhcnktLztzLy0wMi0vLUZlYnJ1YXJ5LS87cy8tMDMtLy1NYXJjaC0vO3MvLTA0LS8tQXByaWwtLztzLy0wNS0vLU1heS0vO3MvLTA2LS8tSnVuZS0vO3MvLTA3LS8tSnVseS0vO3MvLTA4LS8tQXVndXN0LS87cy8tMDktLy1TZXB0ZW1iZXItLztzLy0xMC0vLU9jdG9iZXItLztzLy0xMS0vLU5vdmVtYmVyLS87cy8tMTItLy1EZWNlbWJlci0vO3MvXCguKlwpLVwoLipcKS1cKC4qXCkvXDMgXDIgXDEvJ2AgOyBzZWQgPCQ8ID4kQCAicy9AVE9EQVlALyQkTS87cy9AVkVSU0lPTkAvcGNpdXRpbHMtJChWRVJTSU9OKS87cyNASURTRElSQCMkKElEU0RJUikjIgogSW5kZXg6IHBjaXV0aWxzLTMuNS42L2xpYi9jb25maWd1cmUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTcwLDcgKzcwLDcgQEAKICBmaQogIFsgLW4gIiRSRUxFQVNFIiBdICYmIHJlbD0iJHtSRUxFQVNFfSIKICAjIENBVkVBVDogdHIgb24gU29sYXJpcyBpcyBhIGJpdCB3ZWlyZCBhbmQgdGhlIGV4dHJhIFtdIGlzIG90aGVyd2lzZSBoYXJtbGVzcy4KLUBAIC00NCw2ICs0OCw4IEBAIGNwdT1gZWNobyAkaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14KK0BAIC00NCw2ICs0OCw4IEBAIGNwdT1gZWNobyAkaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wxLydgCiAgc3lzPWBlY2hvICRob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKICBlY2hvICIgJGhvc3QgJHJlbCAkY3B1ICRzeXMiCiAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy42LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy42LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxMzQyMWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotU1VNTUFSWSA9ICJQQ0kgdXRpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAnVGhlIFBDSSBVdGlsaXRpZXMgcGFja2FnZSBjb250YWlucyBhIGxpYnJhcnkgZm9yIHBvcnRhYmxlIGFjY2VzcyBcCi10byBQQ0kgYnVzIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIHNldmVyYWwgdXRpbGl0aWVzIGJhc2VkIG9uIHRoaXMgbGlicmFyeS4nCi1IT01FUEFHRSA9ICJodHRwOi8vYXRyZXkua2FybGluLm1mZi5jdW5pLmN6L35tai9wY2l1dGlscy5zaHRtbCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLURFUEVORFMgPSAiemxpYiBrbW9kIgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvdXRpbHMvcGNpdXRpbHMvcGNpdXRpbHMtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjc3OTYzNzk2ZDFiZTRmNDUxYjgzZTZkYTI4YmE0ZjgyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRiNDUyZWM5ODZlZGVmZDg4YWYwZDIyMmQyMmY2MTAyZjgwMzBhODYzM2ZkZmU4NDZjM2FlNGJkZTliYjkzZjMiCi0KLWluaGVyaXQgbXVsdGlsaWJfaGVhZGVyIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ2h3ZGInLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR1tod2RiXSA9ICJIV0RCPXllcyxIV0RCPW5vLHVkZXYiCi0KLVBDSV9DT05GX0ZMQUcgPSAiWkxJQj15ZXMgRE5TPXllcyBTSEFSRUQ9eWVzIFNUUklQPSBMSUJESVI9JHtsaWJkaXJ9IgotCi0jIHNlZSBjb25maWd1cmUucGF0Y2gKLWRvX2NvbmZpZ3VyZSAoKSB7Ci0JKAotCSAgY2QgbGliICYmIFwKLQkgICMgUEFDS0FHRUNPTkZJR19DT05GQVJHUyBmb3IgdGhpcyByZWNpcGUgY291bGQgb25seSBwb3NzaWJseSBjb250YWluICdIV0RCPXllcy9ubycsCi0JICAjIHNvIHdlIHB1dCBpdCBiZWZvcmUgLi9jb25maWd1cmUKLQkgICR7UENJX0NPTkZfRkxBR30gJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSAuL2NvbmZpZ3VyZSAke1BWfSAke2RhdGFkaXJ9ICR7VEFSR0VUX09TfSAke1RBUkdFVF9BUkNIfQotCSkKLX0KLQotZXhwb3J0IFBSRUZJWCA9ICIke3ByZWZpeH0iCi1leHBvcnQgU0JJTkRJUiA9ICIke3NiaW5kaXJ9IgotZXhwb3J0IFNIQVJFRElSID0gIiR7ZGF0YWRpcn0iCi1leHBvcnQgTUFORElSID0gIiR7bWFuZGlyfSIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0gJHtQQ0lfQ09ORl9GTEFHfSIKLQotQVNORUVERUQgPSAiIgotCi0jIFRoZSBjb25maWd1cmUgc2NyaXB0IGJyZWFrcyBpZiB0aGUgSE9TVCB2YXJpYWJsZSBpcyBzZXQKLUhPU1RbdW5leHBvcnRdID0gIjEiCi0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwgaW5zdGFsbC1saWIKLQotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWxuIC1zIC4uL3NiaW4vbHNwY2kgJHtEfSR7YmluZGlyfS9sc3BjaQotCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIHBjaS9jb25maWcuaAotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0taWRzIGxpYnBjaSIKLUZJTEVTXyR7UE59LWlkcyA9ICIke2RhdGFkaXJ9L3BjaS5pZHMqIgotRklMRVNfbGlicGNpID0gIiR7bGliZGlyfS9saWJwY2kuc28uKiIKLVNVTU1BUllfJHtQTn0taWRzID0gIlBDSSB1dGlsaXRpZXMgLSBkZXZpY2UgSUQgZGF0YWJhc2UiCi1ERVNDUklQVElPTl8ke1BOfS1pZHMgPSAiUGFja2FnZSBwcm92aWRpbmcgdGhlIFBDSSBkZXZpY2UgSUQgZGF0YWJhc2UgZm9yIHBjaXV0aWxzLiIKLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1pZHMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy42LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy42LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM0YmI2MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjYuNC5iYgpAQCAtMCwwICsxLDYwIEBACitTVU1NQVJZID0gIlBDSSB1dGlsaXRpZXMiCitERVNDUklQVElPTiA9ICdUaGUgUENJIFV0aWxpdGllcyBwYWNrYWdlIGNvbnRhaW5zIGEgbGlicmFyeSBmb3IgcG9ydGFibGUgYWNjZXNzIFwKK3RvIFBDSSBidXMgY29uZmlndXJhdGlvbiBzcGFjZSBhbmQgc2V2ZXJhbCB1dGlsaXRpZXMgYmFzZWQgb24gdGhpcyBsaWJyYXJ5LicKK0hPTUVQQUdFID0gImh0dHA6Ly9hdHJleS5rYXJsaW4ubWZmLmN1bmkuY3ovfm1qL3BjaXV0aWxzLnNodG1sIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorREVQRU5EUyA9ICJ6bGliIGttb2QiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS91dGlscy9wY2l1dGlscy9wY2l1dGlscy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDM0M2IzN2UxOWYzMTljZThmM2Q1OWMzMDAzMTc5MGUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjY3ZmY3MzI5NzZlMmRiMmE1Y2NkZjM5NjAwMjA3OTY1MjZiYTZiMDVmNmIxY2RkMjRiN2IyMDZhZjcwNjA1NSIKKworaW5oZXJpdCBtdWx0aWxpYl9oZWFkZXIgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnaHdkYicsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW2h3ZGJdID0gIkhXREI9eWVzLEhXREI9bm8sdWRldiIKKworUENJX0NPTkZfRkxBRyA9ICJaTElCPXllcyBETlM9eWVzIFNIQVJFRD15ZXMgU1RSSVA9IExJQkRJUj0ke2xpYmRpcn0iCisKKyMgc2VlIGNvbmZpZ3VyZS5wYXRjaAorZG9fY29uZmlndXJlICgpIHsKKwkoCisJICBjZCBsaWIgJiYgXAorCSAgIyBQQUNLQUdFQ09ORklHX0NPTkZBUkdTIGZvciB0aGlzIHJlY2lwZSBjb3VsZCBvbmx5IHBvc3NpYmx5IGNvbnRhaW4gJ0hXREI9eWVzL25vJywKKwkgICMgc28gd2UgcHV0IGl0IGJlZm9yZSAuL2NvbmZpZ3VyZQorCSAgJHtQQ0lfQ09ORl9GTEFHfSAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IC4vY29uZmlndXJlICR7UFZ9ICR7ZGF0YWRpcn0gJHtUQVJHRVRfT1N9ICR7VEFSR0VUX0FSQ0h9CisJKQorfQorCitleHBvcnQgUFJFRklYID0gIiR7cHJlZml4fSIKK2V4cG9ydCBTQklORElSID0gIiR7c2JpbmRpcn0iCitleHBvcnQgU0hBUkVESVIgPSAiJHtkYXRhZGlyfSIKK2V4cG9ydCBNQU5ESVIgPSAiJHttYW5kaXJ9IgorCitFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSAke1BDSV9DT05GX0ZMQUd9IgorCitBU05FRURFRCA9ICIiCisKKyMgVGhlIGNvbmZpZ3VyZSBzY3JpcHQgYnJlYWtzIGlmIHRoZSBIT1NUIHZhcmlhYmxlIGlzIHNldAorSE9TVFt1bmV4cG9ydF0gPSAiMSIKKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbCBpbnN0YWxsLWxpYgorCisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJbG4gLXMgLi4vc2Jpbi9sc3BjaSAke0R9JHtiaW5kaXJ9L2xzcGNpCisKKwlvZV9tdWx0aWxpYl9oZWFkZXIgcGNpL2NvbmZpZy5oCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1pZHMgbGlicGNpIgorRklMRVNfJHtQTn0taWRzID0gIiR7ZGF0YWRpcn0vcGNpLmlkcyoiCitGSUxFU19saWJwY2kgPSAiJHtsaWJkaXJ9L2xpYnBjaS5zby4qIgorU1VNTUFSWV8ke1BOfS1pZHMgPSAiUENJIHV0aWxpdGllcyAtIGRldmljZSBJRCBkYXRhYmFzZSIKK0RFU0NSSVBUSU9OXyR7UE59LWlkcyA9ICJQYWNrYWdlIHByb3ZpZGluZyB0aGUgUENJIGRldmljZSBJRCBkYXRhYmFzZSBmb3IgcGNpdXRpbHMuIgorUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWlkcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvMDAwMS1pbmNsdWRlLWVudi5oLUVuc3VyZS11bG9uZy1pcy1kZWZpbmVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy8wMDAxLWluY2x1ZGUtZW52LmgtRW5zdXJlLXVsb25nLWlzLWRlZmluZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5MTE4MTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy8wMDAxLWluY2x1ZGUtZW52LmgtRW5zdXJlLXVsb25nLWlzLWRlZmluZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDA1NjVhMDgwZDE1M2Q1YmFhYWFjZmViNTA0NWE4MzJlMTI2ZjRmOWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+Ci1EYXRlOiBNb24sIDE0IE9jdCAyMDE5IDE3OjM3OjMwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUvZW52Lmg6IEVuc3VyZSB1bG9uZyBpcyBkZWZpbmVkCi0KLVRvIGZpeCB0aGVzZSBmYWlsdXJlcyB3aGVuIGJ1aWxkaW5nIHdpdGggbXVzbDoKLSAgIGluY2x1ZGUvZW52Lmg6MTY2OjE6IGVycm9yOiB1bmtub3duIHR5cGUgbmFtZSAndWxvbmcnOyBkaWQgeW91IG1lYW4gJ2xvbmcnPwotZW5zdXJlIHRoYXQgdWxvbmcgaXMgZGVmaW5lZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+Ci0tLS0KLSBpbmNsdWRlL2Vudi5oIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvZW52LmggYi9pbmNsdWRlL2Vudi5oCi1pbmRleCBiNzIyMzlmNmE1Li41Y2E0OWEzNDU2IDEwMDY0NAotLS0tIGEvaW5jbHVkZS9lbnYuaAotKysrIGIvaW5jbHVkZS9lbnYuaAotQEAgLTEzLDYgKzEzLDggQEAKLSAjaW5jbHVkZSA8c3RkYm9vbC5oPgotICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotIAotK3R5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICAgICAgdWxvbmc7Ci0rCi0gc3RydWN0IGVudmlyb25tZW50X3M7Ci0gCi0gLyogVmFsdWUgZm9yIGVudmlyb25tZW50IHZhbGlkaXR5ICovCi0tLSAKLTIuMjMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2xpYnVib290ZW52XzAuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvbGlidWJvb3RlbnZfMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNTFkMGYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2xpYnVib290ZW52XzAuMi5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIlUtQm9vdCBsaWJyYXJpZXMgYW5kIHRvb2xzIHRvIGFjY2VzcyBlbnZpcm9ubWVudCIKK0RFUEVORFMgKz0gIm10ZC11dGlscyIKKworREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRvb2xzIGFuZCBsaWJyYXJpZXMgdG8gcmVhZCBcCithbmQgbW9kaWZ5IFUtQm9vdCBlbnZpcm9ubWVudC4gXAorSXQgcHJvdmlkZXMgYSBoYXJkd2FyZS1pbmRlcGVuZGVudCByZXBsYWNlbWVudCBmb3IgZndfcHJpbnRlbnYvc2V0ZW52IHV0aWxpdGllcyBcCitwcm92aWRlZCBieSBVLUJvb3QiCisKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zYmFiaWMvbGlidWJvb3RlbnYiCitMSUNFTlNFID0gIkxHUEwtMi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTGljZW5zZXMvbGdwbC0yLjEudHh0O21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKK1NFQ1RJT04gPSAibGlicyIKKworUFYgPSAiMC4yK2dpdCR7U1JDUFZ9IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3NiYWJpYy9saWJ1Ym9vdGVudjtwcm90b2NvbD1odHRwcyIKK1NSQ1JFViA9ICJmNGI5Y2RlMzgxNWFiZTg0YTk4MDc5Y2VkZDUxNTI4M2VhMDhjMTZiIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlIGxpYl9wYWNrYWdlCisKK0VYVFJBX09FQ01BS0UgPSAiLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UiCisKK1BST1ZJREVTICs9ICJ1LWJvb3QtZnctdXRpbHMiCitSUFJPVklERVNfJHtQTn0tYmluICs9ICJ1LWJvb3QtZnctdXRpbHMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbi5pbmMKaW5kZXggYzNlNDU4ZS4uZjQ3OTA1MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1jb21tb24uaW5jCkBAIC0xMiw5ICsxMiwxMSBAQAogCiAjIFdlIHVzZSB0aGUgcmV2aXNpb24gaW4gb3JkZXIgdG8gYXZvaWQgaGF2aW5nIHRvIGZldGNoIGl0IGZyb20gdGhlCiAjIHJlcG8gZHVyaW5nIHBhcnNlCi1TUkNSRVYgPSAiNjFiYTEyNDRiNTQ4NDYzZGJmYjNjNTI4NWI2YjIyZTdjNzcyYzViZCIKK1NSQ1JFViA9ICIxMDc5ZWMwYTc3YzNmZGE1MTBmMDc4NjBiMjU0OWM0N2YzYTQ2YzIxIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC5kZW54LmRlL3UtYm9vdC5naXQgXAogICAgICAgICAgICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKK0IgPSAiJHtXT1JLRElSfS9idWlsZCIKK2RvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdID0gIiR7Qn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1mdy11dGlsc18yMDE5LjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtZnctdXRpbHNfMjAxOS4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQzMjFiNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1mdy11dGlsc18yMDE5LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotcmVxdWlyZSB1LWJvb3QtY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlUtQm9vdCBib290bG9hZGVyIGZ3X3ByaW50ZW52L3NldGVudiB1dGlsaXRpZXMiCi1ERVBFTkRTICs9ICJtdGQtdXRpbHMiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWluY2x1ZGUtZW52LmgtRW5zdXJlLXVsb25nLWlzLWRlZmluZWQucGF0Y2giCi0KLUlOU0FORV9TS0lQXyR7UE59ID0gImFscmVhZHktc3RyaXBwZWQiCi1FWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gJ0NST1NTX0NPTVBJTEU9JHtUQVJHRVRfUFJFRklYfSBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFY9MScKLUVYVFJBX09FTUFLRV9jbGFzcy1jcm9zcyA9ICdIT1NUQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBWPTEnCi0KLWluaGVyaXQgdWJvb3QtY29uZmlnCi0KLWRvX2NvbXBpbGUgKCkgewotCW9lX3J1bm1ha2UgJHtVQk9PVF9NQUNISU5FfQotCW9lX3J1bm1ha2UgZW52dG9vbHMKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiYXNlX3NiaW5kaXJ9Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQotCWluc3RhbGwgLW0gNzU1ICR7U30vdG9vbHMvZW52L2Z3X3ByaW50ZW52ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZndfcHJpbnRlbnYKLQlpbnN0YWxsIC1tIDc1NSAke1N9L3Rvb2xzL2Vudi9md19wcmludGVudiAke0R9JHtiYXNlX3NiaW5kaXJ9L2Z3X3NldGVudgotCWluc3RhbGwgLW0gMDY0NCAke1N9L3Rvb2xzL2Vudi9md19lbnYuY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L2Z3X2Vudi5jb25maWcKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1jcm9zcyAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJfY3Jvc3N9Ci0JaW5zdGFsbCAtbSA3NTUgJHtTfS90b29scy9lbnYvZndfcHJpbnRlbnYgJHtEfSR7YmluZGlyX2Nyb3NzfS9md19wcmludGVudgotCWluc3RhbGwgLW0gNzU1ICR7U30vdG9vbHMvZW52L2Z3X3ByaW50ZW52ICR7RH0ke2JpbmRpcl9jcm9zc30vZndfc2V0ZW52Ci19Ci0KLVNZU1JPT1RfRElSU19hcHBlbmRfY2xhc3MtY3Jvc3MgPSAiICR7YmluZGlyX2Nyb3NzfSIKLQotUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKLUJCQ0xBU1NFWFRFTkQgPSAiY3Jvc3MiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC10b29scy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC10b29scy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFlMjkwYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LXRvb2xzLmluYwpAQCAtMCwwICsxLDY2IEBACitTVU1NQVJZID0gIlUtQm9vdCBib290bG9hZGVyIHRvb2xzIgorREVQRU5EUyArPSAib3BlbnNzbCIKKworUFJPVklERVMgPSAiJHtNTFBSRUZJWH11LWJvb3QtbWtpbWFnZSAke01MUFJFRklYfXUtYm9vdC1ta2VudmltYWdlIgorUFJPVklERVNfY2xhc3MtbmF0aXZlID0gInUtYm9vdC1ta2ltYWdlLW5hdGl2ZSB1LWJvb3QtbWtlbnZpbWFnZS1uYXRpdmUiCisKK1BBQ0tBR0VTICs9ICIke1BOfS1ta2ltYWdlICR7UE59LW1rZW52aW1hZ2UiCisKKyMgUmVxdWlyZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCAidS1ib290LW1raW1hZ2UteHh4LmJiIgorUlBST1ZJREVTXyR7UE59LW1raW1hZ2UgPSAidS1ib290LW1raW1hZ2UiCitSUkVQTEFDRVNfJHtQTn0tbWtpbWFnZSA9ICJ1LWJvb3QtbWtpbWFnZSIKK1JDT05GTElDVFNfJHtQTn0tbWtpbWFnZSA9ICJ1LWJvb3QtbWtpbWFnZSIKKworRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICdDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IiBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJworRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICdDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJworRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZXNkayA9ICdDUk9TU19DT01QSUxFPSIke0hPU1RfUFJFRklYfSIgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKKworU0VEX0NPTkZJR19FRkkgPSAnLWUgInMvQ09ORklHX0VGSV9MT0FERVI9LiovIyBDT05GSUdfRUZJX0xPQURFUiBpcyBub3Qgc2V0LyInCitTRURfQ09ORklHX0VGSV94ODYgPSAnJworU0VEX0NPTkZJR19FRklfeDg2LTY0ID0gJycKK1NFRF9DT05GSUdfRUZJX2FybSA9ICcnCitTRURfQ09ORklHX0VGSV9hcm1lYiA9ICcnCitTRURfQ09ORklHX0VGSV9hYXJjaDY0ID0gJycKKworZG9fY29tcGlsZSAoKSB7CisJb2VfcnVubWFrZSAtQyAke1N9IHNhbmRib3hfZGVmY29uZmlnIE89JHtCfQorCisJIyBEaXNhYmxlIENPTkZJR19DTURfTElDRU5TRSwgbGljZW5zZS5oIGlzIG5vdCB1c2VkIGJ5IHRvb2xzIGFuZAorCSMgZ2VuZXJhdGluZyBpdCByZXF1aXJlcyBiaW4yaGVhZGVyIHRvb2wsIHdoaWNoIGZvciB0YXJnZXQgYnVpbGQKKwkjIGlzIGJ1aWx0IHdpdGggdGFyZ2V0IHRvb2xzIGFuZCB0aHVzIGNhbm5vdCBiZSBleGVjdXRlZCBvbiBob3N0LgorCXNlZCAtaSAtZSAicy9DT05GSUdfQ01EX0xJQ0VOU0U9LiovIyBDT05GSUdfQ01EX0xJQ0VOU0UgaXMgbm90IHNldC8iICR7U0VEX0NPTkZJR19FRkl9ICR7Qn0vLmNvbmZpZworCisJb2VfcnVubWFrZSAtQyAke1N9IGNyb3NzX3Rvb2xzIE5PX1NETD0xIE89JHtCfQorfQorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKworCSMgbWtpbWFnZQorCWluc3RhbGwgLW0gMDc1NSB0b29scy9ta2ltYWdlICR7RH0ke2JpbmRpcn0vdWJvb3QtbWtpbWFnZQorCWxuIC1zZiB1Ym9vdC1ta2ltYWdlICR7RH0ke2JpbmRpcn0vbWtpbWFnZQorCisJIyBta2VudmltYWdlCisJaW5zdGFsbCAtbSAwNzU1IHRvb2xzL21rZW52aW1hZ2UgJHtEfSR7YmluZGlyfS91Ym9vdC1ta2VudmltYWdlCisJbG4gLXNmIHVib290LW1rZW52aW1hZ2UgJHtEfSR7YmluZGlyfS9ta2VudmltYWdlCisKKwkjIGR1bXBpbWFnZQorCWluc3RhbGwgLW0gMDc1NSB0b29scy9kdW1waW1hZ2UgJHtEfSR7YmluZGlyfS91Ym9vdC1kdW1waW1hZ2UKKwlsbiAtc2YgdWJvb3QtZHVtcGltYWdlICR7RH0ke2JpbmRpcn0vZHVtcGltYWdlCisKKwkjIGZpdF9jaGVja19zaWduCisJaW5zdGFsbCAtbSAwNzU1IHRvb2xzL2ZpdF9jaGVja19zaWduICR7RH0ke2JpbmRpcn0vdWJvb3QtZml0X2NoZWNrX3NpZ24KKwlsbiAtc2YgdWJvb3QtZml0X2NoZWNrX3NpZ24gJHtEfSR7YmluZGlyfS9maXRfY2hlY2tfc2lnbgorfQorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorRklMRVNfJHtQTn0gPSAiIgorRklMRVNfJHtQTn0tbWtpbWFnZSA9ICIke2JpbmRpcn0vdWJvb3QtbWtpbWFnZSAke2JpbmRpcn0vbWtpbWFnZSAke2JpbmRpcn0vdWJvb3QtZHVtcGltYWdlICR7YmluZGlyfS9kdW1waW1hZ2UgJHtiaW5kaXJ9L3Vib290LWZpdF9jaGVja19zaWduICR7YmluZGlyfS9maXRfY2hlY2tfc2lnbiIKK0ZJTEVTXyR7UE59LW1rZW52aW1hZ2UgPSAiJHtiaW5kaXJ9L3Vib290LW1rZW52aW1hZ2UgJHtiaW5kaXJ9L21rZW52aW1hZ2UiCisKK1JERVBFTkRTXyR7UE59LW1raW1hZ2UgKz0gImR0YyIKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1ta2ltYWdlICR7UE59LW1rZW52aW1hZ2UiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LXRvb2xzXzIwMTkuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC10b29sc18yMDE5LjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWRlOTg0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LXRvb2xzXzIwMTkuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi1yZXF1aXJlIHUtYm9vdC1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiVS1Cb290IGJvb3Rsb2FkZXIgdG9vbHMiCi1ERVBFTkRTICs9ICJvcGVuc3NsIgotCi1QUk9WSURFUyA9ICIke01MUFJFRklYfXUtYm9vdC1ta2ltYWdlICR7TUxQUkVGSVh9dS1ib290LW1rZW52aW1hZ2UiCi1QUk9WSURFU19jbGFzcy1uYXRpdmUgPSAidS1ib290LW1raW1hZ2UtbmF0aXZlIHUtYm9vdC1ta2VudmltYWdlLW5hdGl2ZSIKLQotUEFDS0FHRVMgKz0gIiR7UE59LW1raW1hZ2UgJHtQTn0tbWtlbnZpbWFnZSIKLQotIyBSZXF1aXJlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoICJ1LWJvb3QtbWtpbWFnZS14eHguYmIiCi1SUFJPVklERVNfJHtQTn0tbWtpbWFnZSA9ICJ1LWJvb3QtbWtpbWFnZSIKLVJSRVBMQUNFU18ke1BOfS1ta2ltYWdlID0gInUtYm9vdC1ta2ltYWdlIgotUkNPTkZMSUNUU18ke1BOfS1ta2ltYWdlID0gInUtYm9vdC1ta2ltYWdlIgotCi1FWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gJ0NST1NTX0NPTVBJTEU9IiR7VEFSR0VUX1BSRUZJWH0iIENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgU1RSSVA9dHJ1ZSBWPTEnCi1FWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlID0gJ0NDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgU1RSSVA9dHJ1ZSBWPTEnCi1FWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlc2RrID0gJ0NST1NTX0NPTVBJTEU9IiR7SE9TVF9QUkVGSVh9IiBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJwotCi1TRURfQ09ORklHX0VGSSA9ICctZSAicy9DT05GSUdfRUZJX0xPQURFUj0uKi8jIENPTkZJR19FRklfTE9BREVSIGlzIG5vdCBzZXQvIicKLVNFRF9DT05GSUdfRUZJX3g4NiA9ICcnCi1TRURfQ09ORklHX0VGSV94ODYtNjQgPSAnJwotU0VEX0NPTkZJR19FRklfYXJtID0gJycKLVNFRF9DT05GSUdfRUZJX2FybWViID0gJycKLVNFRF9DT05GSUdfRUZJX2FhcmNoNjQgPSAnJwotCi1kb19jb21waWxlICgpIHsKLQlvZV9ydW5tYWtlIHNhbmRib3hfZGVmY29uZmlnCi0KLQkjIERpc2FibGUgQ09ORklHX0NNRF9MSUNFTlNFLCBsaWNlbnNlLmggaXMgbm90IHVzZWQgYnkgdG9vbHMgYW5kCi0JIyBnZW5lcmF0aW5nIGl0IHJlcXVpcmVzIGJpbjJoZWFkZXIgdG9vbCwgd2hpY2ggZm9yIHRhcmdldCBidWlsZAotCSMgaXMgYnVpbHQgd2l0aCB0YXJnZXQgdG9vbHMgYW5kIHRodXMgY2Fubm90IGJlIGV4ZWN1dGVkIG9uIGhvc3QuCi0Jc2VkIC1pIC1lICJzL0NPTkZJR19DTURfTElDRU5TRT0uKi8jIENPTkZJR19DTURfTElDRU5TRSBpcyBub3Qgc2V0LyIgJHtTRURfQ09ORklHX0VGSX0gLmNvbmZpZwotCi0Jb2VfcnVubWFrZSBjcm9zc190b29scyBOT19TREw9MQotfQotCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLQotCSMgbWtpbWFnZQotCWluc3RhbGwgLW0gMDc1NSB0b29scy9ta2ltYWdlICR7RH0ke2JpbmRpcn0vdWJvb3QtbWtpbWFnZQotCWxuIC1zZiB1Ym9vdC1ta2ltYWdlICR7RH0ke2JpbmRpcn0vbWtpbWFnZQotCi0JIyBta2VudmltYWdlCi0JaW5zdGFsbCAtbSAwNzU1IHRvb2xzL21rZW52aW1hZ2UgJHtEfSR7YmluZGlyfS91Ym9vdC1ta2VudmltYWdlCi0JbG4gLXNmIHVib290LW1rZW52aW1hZ2UgJHtEfSR7YmluZGlyfS9ta2VudmltYWdlCi0KLQkjIGR1bXBpbWFnZQotCWluc3RhbGwgLW0gMDc1NSB0b29scy9kdW1waW1hZ2UgJHtEfSR7YmluZGlyfS91Ym9vdC1kdW1waW1hZ2UKLQlsbiAtc2YgdWJvb3QtZHVtcGltYWdlICR7RH0ke2JpbmRpcn0vZHVtcGltYWdlCi0KLQkjIGZpdF9jaGVja19zaWduCi0JaW5zdGFsbCAtbSAwNzU1IHRvb2xzL2ZpdF9jaGVja19zaWduICR7RH0ke2JpbmRpcn0vdWJvb3QtZml0X2NoZWNrX3NpZ24KLQlsbiAtc2YgdWJvb3QtZml0X2NoZWNrX3NpZ24gJHtEfSR7YmluZGlyfS9maXRfY2hlY2tfc2lnbgotfQotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotRklMRVNfJHtQTn0gPSAiIgotRklMRVNfJHtQTn0tbWtpbWFnZSA9ICIke2JpbmRpcn0vdWJvb3QtbWtpbWFnZSAke2JpbmRpcn0vbWtpbWFnZSAke2JpbmRpcn0vdWJvb3QtZHVtcGltYWdlICR7YmluZGlyfS9kdW1waW1hZ2UgJHtiaW5kaXJ9L3Vib290LWZpdF9jaGVja19zaWduICR7YmluZGlyfS9maXRfY2hlY2tfc2lnbiIKLUZJTEVTXyR7UE59LW1rZW52aW1hZ2UgPSAiJHtiaW5kaXJ9L3Vib290LW1rZW52aW1hZ2UgJHtiaW5kaXJ9L21rZW52aW1hZ2UiCi0KLVJERVBFTkRTXyR7UE59LW1raW1hZ2UgKz0gImR0YyIKLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1ta2ltYWdlICR7UE59LW1rZW52aW1hZ2UiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC10b29sc18yMDIwLjA0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtdG9vbHNfMjAyMC4wNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWFmNzIxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtdG9vbHNfMjAyMC4wNC5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgdS1ib290LWNvbW1vbi5pbmMKK3JlcXVpcmUgdS1ib290LXRvb2xzLmluYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QuaW5jCmluZGV4IDlhNzU0ZmQuLjgwZjgyOGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC5pbmMKQEAgLTEsMTkgKzEsMTcgQEAKIFNVTU1BUlkgPSAiVW5pdmVyc2FsIEJvb3QgTG9hZGVyIGZvciBlbWJlZGRlZCBkZXZpY2VzIgogUFJPVklERVMgPSAidmlydHVhbC9ib290bG9hZGVyIgogCi1CID0gIiR7V09SS0RJUn0vYnVpbGQiCi0KIFBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCiAKIERFUEVORFMgKz0gImtlcm4tdG9vbHMtbmF0aXZlIgogCi1pbmhlcml0IHVib290LWNvbmZpZyB1Ym9vdC1leHRsaW51eC1jb25maWcgdWJvb3Qtc2lnbiBkZXBsb3kgY21sMQoraW5oZXJpdCB1Ym9vdC1jb25maWcgdWJvb3QtZXh0bGludXgtY29uZmlnIHVib290LXNpZ24gZGVwbG95IGNtbDEgcHl0aG9uM25hdGl2ZQogCi1ERVBFTkRTICs9ICJzd2lnLW5hdGl2ZSBweXRob24tbmF0aXZlIgorREVQRU5EUyArPSAic3dpZy1uYXRpdmUiCiAKIEVYVFJBX09FTUFLRSA9ICdDUk9TU19DT01QSUxFPSR7VEFSR0VUX1BSRUZJWH0gQ0M9IiR7VEFSR0VUX1BSRUZJWH1nY2MgJHtUT09MQ0hBSU5fT1BUSU9OU30iIFY9MScKIEVYVFJBX09FTUFLRSArPSAnSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSInCi1FWFRSQV9PRU1BS0UgKz0gJ1BZVEhPTjI9bmF0aXZlcHl0aG9uIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0nCitFWFRSQV9PRU1BS0UgKz0gJ1NUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0nCiAKIFBBQ0tBR0VDT05GSUcgPz89ICJvcGVuc3NsIgogIyB1LWJvb3Qgd2lsbCBjb21waWxlIGl0cyBvd24gdG9vbHMgZHVyaW5nIHRoZSBidWlsZCwgd2l0aCBzcGVjaWZpYwpAQCAtODcsNiArODUsOCBAQAogICAgICAgICBmaQogICAgICAgICBtZXJnZV9jb25maWcuc2ggLW0gLmNvbmZpZyAke0AiICIuam9pbihmaW5kX2NmZ3MoZCkpfQogICAgICAgICBjbWwxX2RvX2NvbmZpZ3VyZQorICAgIGVsc2UKKyAgICAgICAgREVWVE9PTF9ESVNBQkxFX01FTlVDT05GSUc9dHJ1ZQogICAgIGZpCiB9CiAKQEAgLTEyMiw2ICsxMjIsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcCAke0J9LyR7Y29uZmlnfS8ke2JpbmFyeX0gJHtCfS8ke2NvbmZpZ30vdS1ib290LSR7dHlwZX0uJHtVQk9PVF9TVUZGSVh9CiAgICAgICAgICAgICAgICAgICAgICAgICBmaQogICAgICAgICAgICAgICAgICAgICBkb25lCisKKyAgICAgICAgICAgICAgICAgICAgIyBHZW5lcmF0ZSB0aGUgdWJvb3QtaW5pdGlhbC1lbnYKKyAgICAgICAgICAgICAgICAgICAgb2VfcnVubWFrZSAtQyAke1N9IE89JHtCfS8ke2NvbmZpZ30gdS1ib290LWluaXRpYWwtZW52CisgICAgICAgICAgICAgICAgICAgIGNwICR7Qn0vJHtjb25maWd9L3UtYm9vdC1pbml0aWFsLWVudiAke0J9LyR7Y29uZmlnfS91LWJvb3QtaW5pdGlhbC1lbnYtJHt0eXBlfQorCiAgICAgICAgICAgICAgICAgICAgIHVuc2V0IGsKICAgICAgICAgICAgICAgICBmaQogICAgICAgICAgICAgZG9uZQpAQCAtMTMwLDYgKzEzNSw5IEBACiAgICAgICAgIHVuc2V0ICBpCiAgICAgZWxzZQogICAgICAgICBvZV9ydW5tYWtlIC1DICR7U30gTz0ke0J9ICR7VUJPT1RfTUFLRV9UQVJHRVR9CisKKyAgICAgICAgIyBHZW5lcmF0ZSB0aGUgdWJvb3QtaW5pdGlhbC1lbnYKKyAgICAgICAgb2VfcnVubWFrZSAtQyAke1N9IE89JHtCfSB1LWJvb3QtaW5pdGlhbC1lbnYKICAgICBmaQogCiB9CkBAIC0xNDMsMTkgKzE1MSwyOCBAQAogICAgICAgICAgICAgICAgIGo9JChleHByICRqICsgMSk7CiAgICAgICAgICAgICAgICAgaWYgWyAkaiAtZXEgJGkgXQogICAgICAgICAgICAgICAgIHRoZW4KLSAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9L2Jvb3QKLSAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtCfS8ke2NvbmZpZ30vdS1ib290LSR7dHlwZX0uJHtVQk9PVF9TVUZGSVh9ICR7RH0vYm9vdC91LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX1NVRkZJWH0KKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSA2NDQgJHtCfS8ke2NvbmZpZ30vdS1ib290LSR7dHlwZX0uJHtVQk9PVF9TVUZGSVh9ICR7RH0vYm9vdC91LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX1NVRkZJWH0KICAgICAgICAgICAgICAgICAgICAgbG4gLXNmIHUtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfU1VGRklYfSAke0R9L2Jvb3QvJHtVQk9PVF9CSU5BUll9LSR7dHlwZX0KICAgICAgICAgICAgICAgICAgICAgbG4gLXNmIHUtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfU1VGRklYfSAke0R9L2Jvb3QvJHtVQk9PVF9CSU5BUll9CisKKyAgICAgICAgICAgICAgICAgICAgIyBJbnN0YWxsIHRoZSB1Ym9vdC1pbml0aWFsLWVudgorICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDY0NCAke0J9LyR7Y29uZmlnfS91LWJvb3QtaW5pdGlhbC1lbnYtJHt0eXBlfSAke0R9LyR7c3lzY29uZmRpcn0vJHtQTn0taW5pdGlhbC1lbnYtJHtNQUNISU5FfS0ke3R5cGV9LSR7UFZ9LSR7UFJ9CisgICAgICAgICAgICAgICAgICAgIGxuIC1zZiAke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7dHlwZX0tJHtQVn0tJHtQUn0gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7UE59LWluaXRpYWwtZW52LSR7TUFDSElORX0tJHt0eXBlfQorICAgICAgICAgICAgICAgICAgICBsbiAtc2YgJHtQTn0taW5pdGlhbC1lbnYtJHtNQUNISU5FfS0ke3R5cGV9LSR7UFZ9LSR7UFJ9ICR7RH0vJHtzeXNjb25mZGlyfS8ke1BOfS1pbml0aWFsLWVudi0ke3R5cGV9CisgICAgICAgICAgICAgICAgICAgIGxuIC1zZiAke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7dHlwZX0tJHtQVn0tJHtQUn0gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7UE59LWluaXRpYWwtZW52CiAgICAgICAgICAgICAgICAgZmkKICAgICAgICAgICAgIGRvbmUKICAgICAgICAgICAgIHVuc2V0ICBqCiAgICAgICAgIGRvbmUKICAgICAgICAgdW5zZXQgIGkKICAgICBlbHNlCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfS9ib290Ci0gICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7Qn0vJHtVQk9PVF9CSU5BUll9ICR7RH0vYm9vdC8ke1VCT09UX0lNQUdFfQorICAgICAgICBpbnN0YWxsIC1EIC1tIDY0NCAke0J9LyR7VUJPT1RfQklOQVJZfSAke0R9L2Jvb3QvJHtVQk9PVF9JTUFHRX0KICAgICAgICAgbG4gLXNmICR7VUJPT1RfSU1BR0V9ICR7RH0vYm9vdC8ke1VCT09UX0JJTkFSWX0KKworICAgICAgICAjIEluc3RhbGwgdGhlIHVib290LWluaXRpYWwtZW52CisgICAgICAgIGluc3RhbGwgLUQgLW0gNjQ0ICR7Qn0vdS1ib290LWluaXRpYWwtZW52ICR7RH0vJHtzeXNjb25mZGlyfS8ke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7UFZ9LSR7UFJ9CisgICAgICAgIGxuIC1zZiAke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7UFZ9LSR7UFJ9ICR7RH0vJHtzeXNjb25mZGlyfS8ke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9CisgICAgICAgIGxuIC1zZiAke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7UFZ9LSR7UFJ9ICR7RH0vJHtzeXNjb25mZGlyfS8ke1BOfS1pbml0aWFsLWVudgogICAgIGZpCiAKICAgICBpZiBbIC1uICIke1VCT09UX0VMRn0iIF0KQEAgLTIyNCw3ICsyNDEsMTYgQEAKIAogfQogCi1GSUxFU18ke1BOfSA9ICIvYm9vdCAke3N5c2NvbmZkaXJ9ICR7ZGF0YWRpcn0iCitQQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtQTn0tZW52IgorCitSUFJPVklERVNfJHtQTn0tZW52ICs9ICJ1LWJvb3QtZGVmYXVsdC1lbnYiCitGSUxFU18ke1BOfS1lbnYgPSAiIFwKKyAgICAke3N5c2NvbmZkaXJ9LyR7UE59LWluaXRpYWwtZW52KiBcCisgICAgJHtzeXNjb25mZGlyfS9md19lbnYuY29uZmlnIFwKKyIKKworRklMRVNfJHtQTn0gPSAiL2Jvb3QgJHtkYXRhZGlyfSIKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1lbnYiCiAKIGRvX2RlcGxveSAoKSB7CiAgICAgaWYgWyAtbiAiJHtVQk9PVF9DT05GSUd9IiBdCkBAIC0yMzUsMjUgKzI2MSw0MyBAQAogICAgICAgICAgICAgICAgIGo9JChleHByICRqICsgMSk7CiAgICAgICAgICAgICAgICAgaWYgWyAkaiAtZXEgJGkgXQogICAgICAgICAgICAgICAgIHRoZW4KLSAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtZCAke0RFUExPWURJUn0KLSAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtCfS8ke2NvbmZpZ30vdS1ib290LSR7dHlwZX0uJHtVQk9PVF9TVUZGSVh9ICR7REVQTE9ZRElSfS91LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX1NVRkZJWH0KKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSA2NDQgJHtCfS8ke2NvbmZpZ30vdS1ib290LSR7dHlwZX0uJHtVQk9PVF9TVUZGSVh9ICR7REVQTE9ZRElSfS91LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX1NVRkZJWH0KICAgICAgICAgICAgICAgICAgICAgY2QgJHtERVBMT1lESVJ9CiAgICAgICAgICAgICAgICAgICAgIGxuIC1zZiB1LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX1NVRkZJWH0gJHtVQk9PVF9TWU1MSU5LfS0ke3R5cGV9CiAgICAgICAgICAgICAgICAgICAgIGxuIC1zZiB1LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX1NVRkZJWH0gJHtVQk9PVF9TWU1MSU5LfQogICAgICAgICAgICAgICAgICAgICBsbiAtc2YgdS1ib290LSR7dHlwZX0tJHtQVn0tJHtQUn0uJHtVQk9PVF9TVUZGSVh9ICR7VUJPT1RfQklOQVJZfS0ke3R5cGV9CiAgICAgICAgICAgICAgICAgICAgIGxuIC1zZiB1LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX1NVRkZJWH0gJHtVQk9PVF9CSU5BUll9CisKKyAgICAgICAgICAgICAgICAgICAgIyBEZXBsb3kgdGhlIHVib290LWluaXRpYWwtZW52CisgICAgICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gNjQ0ICR7Qn0vJHtjb25maWd9L3UtYm9vdC1pbml0aWFsLWVudi0ke3R5cGV9ICR7REVQTE9ZRElSfS8ke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7dHlwZX0tJHtQVn0tJHtQUn0KKyAgICAgICAgICAgICAgICAgICAgY2QgJHtERVBMT1lESVJ9CisgICAgICAgICAgICAgICAgICAgIGxuIC1zZiAke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7dHlwZX0tJHtQVn0tJHtQUn0gJHtQTn0taW5pdGlhbC1lbnYtJHtNQUNISU5FfS0ke3R5cGV9CisgICAgICAgICAgICAgICAgICAgIGxuIC1zZiAke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7dHlwZX0tJHtQVn0tJHtQUn0gJHtQTn0taW5pdGlhbC1lbnYtJHt0eXBlfQogICAgICAgICAgICAgICAgIGZpCiAgICAgICAgICAgICBkb25lCiAgICAgICAgICAgICB1bnNldCAgagogICAgICAgICBkb25lCiAgICAgICAgIHVuc2V0ICBpCiAgICAgZWxzZQotICAgICAgICBpbnN0YWxsIC1kICR7REVQTE9ZRElSfQotICAgICAgICBpbnN0YWxsIC1tIDY0NCAke0J9LyR7VUJPT1RfQklOQVJZfSAke0RFUExPWURJUn0vJHtVQk9PVF9JTUFHRX0KKyAgICAgICAgaW5zdGFsbCAtRCAtbSA2NDQgJHtCfS8ke1VCT09UX0JJTkFSWX0gJHtERVBMT1lESVJ9LyR7VUJPT1RfSU1BR0V9CisKICAgICAgICAgY2QgJHtERVBMT1lESVJ9CiAgICAgICAgIHJtIC1mICR7VUJPT1RfQklOQVJZfSAke1VCT09UX1NZTUxJTkt9CiAgICAgICAgIGxuIC1zZiAke1VCT09UX0lNQUdFfSAke1VCT09UX1NZTUxJTkt9CiAgICAgICAgIGxuIC1zZiAke1VCT09UX0lNQUdFfSAke1VCT09UX0JJTkFSWX0KKworICAgICAgICAjIERlcGxveSB0aGUgdWJvb3QtaW5pdGlhbC1lbnYKKyAgICAgICAgaW5zdGFsbCAtRCAtbSA2NDQgJHtCfS91LWJvb3QtaW5pdGlhbC1lbnYgJHtERVBMT1lESVJ9LyR7UE59LWluaXRpYWwtZW52LSR7TUFDSElORX0tJHtQVn0tJHtQUn0KKyAgICAgICAgY2QgJHtERVBMT1lESVJ9CisgICAgICAgIGxuIC1zZiAke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7UFZ9LSR7UFJ9ICR7UE59LWluaXRpYWwtZW52LSR7TUFDSElORX0KKyAgICAgICAgbG4gLXNmICR7UE59LWluaXRpYWwtZW52LSR7TUFDSElORX0tJHtQVn0tJHtQUn0gJHtQTn0taW5pdGlhbC1lbnYKKyAgICBmaQorCisgICAgaWYgWyAtZSAke1dPUktESVJ9L2Z3X2Vudi5jb25maWcgXSA7IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS9md19lbnYuY29uZmlnICR7REVQTE9ZRElSfS9md19lbnYuY29uZmlnLSR7TUFDSElORX0tJHtQVn0tJHtQUn0KKyAgICAgICAgY2QgJHtERVBMT1lESVJ9CisgICAgICAgIGxuIC1zZiBmd19lbnYuY29uZmlnLSR7TUFDSElORX0tJHtQVn0tJHtQUn0gZndfZW52LmNvbmZpZy0ke01BQ0hJTkV9CisgICAgICAgIGxuIC1zZiBmd19lbnYuY29uZmlnLSR7TUFDSElORX0tJHtQVn0tJHtQUn0gZndfZW52LmNvbmZpZwogICAgIGZpCiAKICAgICBpZiBbIC1uICIke1VCT09UX0VMRn0iIF0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XzIwMTkuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8yMDIwLjA0LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8yMDE5LjEwLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8yMDIwLjA0LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGlfMC43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpXzAuNy5iYgppbmRleCAyZTA0ZDMwLi4yNDUyM2M3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGlfMC43LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaV8wLjcuYmIKQEAgLTEwLDYgKzEwLDE2IEBACiAKIFBBQ0tBR0VTID0rICJsaWJhdmFoaS1nb2JqZWN0IGF2YWhpLWRhZW1vbiBsaWJhdmFoaS1jb21tb24gbGliYXZhaGktY29yZSBsaWJhdmFoaS1jbGllbnQgYXZhaGktZG5zY29uZmQgbGliYXZhaGktZ2xpYiBhdmFoaS1hdXRvaXBkIGF2YWhpLXV0aWxzIgogCitMSUNFTlNFX2xpYmF2YWhpLWdvYmplY3QgPSAiTEdQTHYyLjErIgorTElDRU5TRV9hdmFoaS1kYWVtb24gPSAiTEdQTHYyLjErIgorTElDRU5TRV9saWJhdmFoaS1jb21tb24gPSAiTEdQTHYyLjErIgorTElDRU5TRV9saWJhdmFoaS1jb3JlID0gIkxHUEx2Mi4xKyIKK0xJQ0VOU0VfYXZhaGktY2xpZW50ID0gIkxHUEx2Mi4xKyIKK0xJQ0VOU0VfYXZhaGktZG5zY29uZmQgPSAiTEdQTHYyLjErIgorTElDRU5TRV9saWJhdmFoaS1nbGliID0gIkxHUEx2Mi4xKyIKK0xJQ0VOU0VfYXZhaGktYXV0b2lwZCA9ICJMR1BMdjIuMSsiCitMSUNFTlNFX2F2YWhpLXV0aWxzID0gIkxHUEx2Mi4xKyIKKwogIyBBcyBhdmFoaSBkb2Vzbid0IHB1dCBhbnkgZmlsZXMgaW50byBQTiwgY2xlYXIgdGhlIGZpbGVzIGxpc3QgdG8gYXZvaWQgcHJvYmxlbXMKICMgaWYgZXh0cmEgbGlicmFyaWVzIGFwcGVhci4KIEZJTEVTXyR7UE59ID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1iaW5kLWZpeC1DVkUtMjAxOS02NDcxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWJpbmQtZml4LUNWRS0yMDE5LTY0NzEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmZWQ5OWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWJpbmQtZml4LUNWRS0yMDE5LTY0NzEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi1CYWNrcG9ydCBwYXRjaCB0byBmaXggQ1ZFLTIwMTktNjQ3MS4KLQotUmVmOgotaHR0cHM6Ly9zZWN1cml0eS10cmFja2VyLmRlYmlhbi5vcmcvdHJhY2tlci9DVkUtMjAxOS02NDcxCi0KLUNWRTogQ1ZFLTIwMTktNjQ3MQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuaXNjLm9yZy9pc2MtcHJvamVjdHMvYmluZDkvY29tbWl0LzNhOWM3YmJdCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotCi1Gcm9tIDNhOWM3YmI4MGQ0YTYwOWI4NjQyNzQwNmQ5ZGQ3ODMxOTk5MjBiNWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJrIEFuZHJld3MgPG1hcmthQGlzYy5vcmc+Ci1EYXRlOiBUdWUsIDE5IE1hciAyMDE5IDE0OjE0OjIxICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1vdmUgaXRlbV9vdXQgdGVzdCBpbnNpZGUgbG9jayBpbiBkbnNfZGlzcGF0Y2hfZ2V0bmV4dCgpCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDYwYzQyZjg0OWQ1MjA1NjRlZDQyZTVlZDBiYTQ2YjRiNjljMDc3MTIpCi0tLS0KLSBsaWIvZG5zL2Rpc3BhdGNoLmMgfCAxMiArKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliL2Rucy9kaXNwYXRjaC5jIGIvbGliL2Rucy9kaXNwYXRjaC5jCi1pbmRleCA0MDhiZWRhMzY3Li4zMjc4ZGI0YTA3IDEwMDY0NAotLS0tIGEvbGliL2Rucy9kaXNwYXRjaC5jCi0rKysgYi9saWIvZG5zL2Rpc3BhdGNoLmMKLUBAIC0xMzQsNyArMTM0LDcgQEAgc3RydWN0IGRuc19kaXNwZW50cnkgewotIAlpc2NfdGFza190CQkgICAgICAgKnRhc2s7Ci0gCWlzY190YXNrYWN0aW9uX3QJCWFjdGlvbjsKLSAJdm9pZAkJCSAgICAgICAqYXJnOwotLQlib29sCQkJaXRlbV9vdXQ7Ci0rCWJvb2wJCQkJaXRlbV9vdXQ7Ci0gCWRpc3Bzb2NrZXRfdAkJCSpkaXNwc29ja2V0OwotIAlJU0NfTElTVChkbnNfZGlzcGF0Y2hldmVudF90KQlpdGVtczsKLSAJSVNDX0xJTksoZG5zX2Rpc3BlbnRyeV90KQlsaW5rOwotQEAgLTM0MjIsMTMgKzM0MjIsMTQgQEAgZG5zX2Rpc3BhdGNoX2dldG5leHQoZG5zX2Rpc3BlbnRyeV90ICpyZXNwLCBkbnNfZGlzcGF0Y2hldmVudF90ICoqc29ja2V2ZW50KSB7Ci0gCWRpc3AgPSByZXNwLT5kaXNwOwotIAlSRVFVSVJFKFZBTElEX0RJU1BBVENIKGRpc3ApKTsKLSAKLS0JUkVRVUlSRShyZXNwLT5pdGVtX291dCA9PSB0cnVlKTsKLS0JcmVzcC0+aXRlbV9vdXQgPSBmYWxzZTsKLS0KLSAJZXYgPSAqc29ja2V2ZW50OwotIAkqc29ja2V2ZW50ID0gTlVMTDsKLSAKLSAJTE9DSygmZGlzcC0+bG9jayk7Ci0rCi0rCVJFUVVJUkUocmVzcC0+aXRlbV9vdXQgPT0gdHJ1ZSk7Ci0rCXJlc3AtPml0ZW1fb3V0ID0gZmFsc2U7Ci0rCi0gCWlmIChldi0+YnVmZmVyLmJhc2UgIT0gTlVMTCkKLSAJCWZyZWVfYnVmZmVyKGRpc3AsIGV2LT5idWZmZXIuYmFzZSwgZXYtPmJ1ZmZlci5sZW5ndGgpOwotIAlmcmVlX2RldmVudChkaXNwLCBldik7Ci1AQCAtMzU3Myw2ICszNTc0LDkgQEAgZG5zX2Rpc3BhdGNoX3JlbW92ZXJlc3BvbnNlKGRuc19kaXNwZW50cnlfdCAqKnJlc3AsCi0gCQlpc2NfdGFza19zZW5kKGRpc3AtPnRhc2tbMF0sICZkaXNwLT5jdGxldmVudCk7Ci0gfQotIAotKy8qCi0rICogZGlzcCBtdXN0IGJlIGxvY2tlZC4KLSsgKi8KLSBzdGF0aWMgdm9pZAotIGRvX2NhbmNlbChkbnNfZGlzcGF0Y2hfdCAqZGlzcCkgewotIAlkbnNfZGlzcGF0Y2hldmVudF90ICpldjsKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1jb25maWd1cmUuaW4tcmVtb3ZlLXVzZWxlc3MtTC11c2Vfb3BlbnNzbC1saWIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtY29uZmlndXJlLmluLXJlbW92ZS11c2VsZXNzLUwtdXNlX29wZW5zc2wtbGliLnBhdGNoCmluZGV4IDg3MWJiMmEuLjlkMzFiOTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1jb25maWd1cmUuaW4tcmVtb3ZlLXVzZWxlc3MtTC11c2Vfb3BlbnNzbC1saWIucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtdXNlbGVzcy1MLXVzZV9vcGVuc3NsLWxpYi5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gOTUwODY3ZDlmZDNmNjkwZTI3MWM4YzgwN2I2ZWVkMTQ0YjI5MzViMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMjMyNWE5MmYxODk2YTJhN2Y1ODY2MTE2ODY4MDFiNDFmYmM5MWI1MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIERhdGU6IE1vbiwgMjcgQXVnIDIwMTggMTU6MDA6NTEgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmluOiByZW1vdmUgdXNlbGVzcyBgLUwkdXNlX29wZW5zc2wvbGliJwpAQCAtMTAsMTUgKzEwLDE2IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKwogLS0tCi0gY29uZmlndXJlLmluIHwgMiArLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggNTRlZmM1NS4uNzZhYzBlYiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMTY5MSw3ICsxNjkxLDcgQEAgSWYgeW91IGRvbid0IHdhbnQgT3BlblNTTCwgdXNlIC0td2l0aG91dC1vcGVuc3NsXSkKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGU4NWE1YzYuLjJiYmZjNTggMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE2MzEsNyArMTYzMSw3IEBAIElmIHlvdSBkb24ndCB3YW50IE9wZW5TU0wsIHVzZSAtLXdpdGhvdXQtb3BlbnNzbF0pCiAgCQkJCWZpCiAgCQkJCTs7CiAgCQkJKikKQEAgLTI3LDYgKzI4LDMgQEAKICAJCQkJOzsKICAJCQllc2FjCiAgCQlmaQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtZml4LWVuZm9yY2VtZW50LW9mLXRjcC1jbGllbnRzLXYxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWZpeC1lbmZvcmNlbWVudC1vZi10Y3AtY2xpZW50cy12MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhhZTEyNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtZml4LWVuZm9yY2VtZW50LW9mLXRjcC1jbGllbnRzLXYxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotQmFja3BvcnQgcGF0Y2ggdG8gZml4IENWRS0yMDE4LTU3NDMuCi0KLVJlZjoKLWh0dHBzOi8vc2VjdXJpdHktdHJhY2tlci5kZWJpYW4ub3JnL3RyYWNrZXIvQ1ZFLTIwMTgtNTc0MwotCi1DVkU6IENWRS0yMDE4LTU3NDMKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmlzYy5vcmcvaXNjLXByb2plY3RzL2JpbmQ5L2NvbW1pdC9lYzJkNTBkXQotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLQotRnJvbSBlYzJkNTBkYThkODE4MTQ2NDBlMjg1OTNkOTEyZjRiOTZjN2VmZWNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP1dpdG9sZD0yMEtyPUM0PTk5Y2lja2k/PSA8d3BrQGlzYy5vcmc+Ci1EYXRlOiBUaHUsIDMgSmFuIDIwMTkgMTQ6MTc6NDMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzZdIGZpeCBlbmZvcmNlbWVudCBvZiB0Y3AtY2xpZW50cyAodjEpCi0KLXRjcC1jbGllbnRzIHNldHRpbmdzIGNvdWxkIGJlIGV4Y2VlZGVkIGluIHNvbWUgY2FzZXMgYnkKLWNyZWF0aW5nIG1vcmUgYW5kIG1vcmUgYWN0aXZlIFRDUCBjbGllbnRzIHRoYXQgYXJlIG92ZXIKLXRoZSBzZXQgcXVvdGEgbGltaXQsIHdoaWNoIGluIHRoZSBlbmQgY291bGQgbGVhZCB0byBhCi1Eb1MgYXR0YWNrIGJ5IGUuZy4gZXhoYXVzdGlvbiBvZiBmaWxlIGRlc2NyaXB0b3JzLgotCi1JZiBUQ1AgY2xpZW50IHdlJ3JlIGNsb3Npbmcgd2VudCBvdmVyIHRoZSBxdW90YSAoc28gaXQncwotbm90IGF0dGFjaGVkIHRvIGEgcXVvdGEpIG1hcmsgaXQgYXMgbW9ydGFsIC0gc28gdGhhdCBpdAotd2lsbCBiZSBkZXN0cm95ZWQgYW5kIG5vdCBzZXQgdXAgdG8gbGlzdGVuIGZvciBuZXcKLWNvbm5lY3Rpb25zIC0gdW5sZXNzIGl0J3MgdGhlIGxhc3QgY2xpZW50IGZvciBhIHNwZWNpZmljCi1pbnRlcmZhY2UuCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGY5NzEzMWQyMWI5NzM4MWNlZjcyYjk3MWIxNTczNDVjMWY5YjQxMTUpCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA5Njg5ZmZjNDg1ZGY4Zjk3MWYwYWQ4MWFiOGFiMWY1Mzg5NDkzNzc2KQotLS0tCi0gYmluL25hbWVkL2NsaWVudC5jIHwgMTMgKysrKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvY2xpZW50LmMgYi9iaW4vbmFtZWQvY2xpZW50LmMKLWluZGV4IGQ0ODJkYTcxMjEuLjA3MzlkZDQ4YWYgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvY2xpZW50LmMKLSsrKyBiL2Jpbi9uYW1lZC9jbGllbnQuYwotQEAgLTQyMSw4ICs0MjEsMTkgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkJaXNjX3NvY2tldF9kZXRhY2goJmNsaWVudC0+dGNwc29ja2V0KTsKLSAJCX0KLSAKLS0JCWlmIChjbGllbnQtPnRjcHF1b3RhICE9IE5VTEwpCi0rCQlpZiAoY2xpZW50LT50Y3BxdW90YSAhPSBOVUxMKSB7Ci0gCQkJaXNjX3F1b3RhX2RldGFjaCgmY2xpZW50LT50Y3BxdW90YSk7Ci0rCQl9IGVsc2UgewotKwkJCS8qCi0rCQkJICogV2Ugd2VudCBvdmVyIHF1b3RhIHdpdGggdGhpcyBjbGllbnQsIHdlIGRvbid0Ci0rCQkJICogd2FudCB0byByZXN0YXJ0IGxpc3RlbmluZyB1bmxlc3MgdGhpcyBpcyB0aGUKLSsJCQkgKiBsYXN0IGNsaWVudCBvbiB0aGlzIGludGVyZmFjZSwgd2hpY2ggaXMKLSsJCQkgKiBjaGVja2VkIGxhdGVyLgotKwkJCSAqLwotKwkJCWlmIChUQ1BfQ0xJRU5UKGNsaWVudCkpIHsKLSsJCQkJY2xpZW50LT5tb3J0YWwgPSB0cnVlOwotKwkJCX0KLSsJCX0KLSAKLSAJCWlmIChjbGllbnQtPnRpbWVyc2V0KSB7Ci0gCQkJKHZvaWQpaXNjX3RpbWVyX3Jlc2V0KGNsaWVudC0+dGltZXIsCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtZ2VuLmMtZXh0ZW5kLURJUk5BTUVTSVpFLWZyb20tMjU2LXRvLTUxMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1nZW4uYy1leHRlbmQtRElSTkFNRVNJWkUtZnJvbS0yNTYtdG8tNTEyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGQ2MDFkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1nZW4uYy1leHRlbmQtRElSTkFNRVNJWkUtZnJvbS0yNTYtdG8tNTEyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVN1YmplY3Q6IGdlbi5jOiBleHRlbmQgRElSTkFNRVNJWkUgZnJvbSAyNTYgdG8gNTEyCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYi9kbnMvZ2VuLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBiaW5kLTkuMTEuMy9saWIvZG5zL2dlbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYmluZC05LjExLjMub3JpZy9saWIvZG5zL2dlbi5jCi0rKysgYmluZC05LjExLjMvbGliL2Rucy9nZW4uYwotQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgY29uc3QgY2hhciBjb3B5cmlnaHRbXSA9Ci0gI2RlZmluZSBUWVBFQ0xBU1NCVUYgKFRZUEVDTEFTU0xFTiArIDEpCi0gI2RlZmluZSBUWVBFQ0xBU1NGTVQgIiUiIFNUUihUWVBFQ0xBU1NMRU4pICJbLTAtOWEtel1fJWQiCi0gI2RlZmluZSBBVFRSSUJVVEVTSVpFIDI1NgotLSNkZWZpbmUgRElSTkFNRVNJWkUgMjU2Ci0rI2RlZmluZSBESVJOQU1FU0laRSA1MTIKLSAKLSBzdGF0aWMgc3RydWN0IGNjIHsKLSAJc3RydWN0IGNjICpuZXh0OwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWxpYi1kbnMtZ2VuLmMtZml4LXRvby1sb25nLWVycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWxpYi1kbnMtZ2VuLmMtZml4LXRvby1sb25nLWVycm9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTg3NGE0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1saWItZG5zLWdlbi5jLWZpeC10b28tbG9uZy1lcnJvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gNWJjMzE2N2E4YjcxNGVjMGM0YTNmMWM3ZjNiOTQxMTI5NmVjMGEyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAxNiBTZXAgMjAxNSAyMDoyMzo0NyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBsaWIvZG5zL2dlbi5jOiBmaXggdG9vIGxvbmcgZXJyb3IKLQotVGhlIDUxMiBpcyBhIGxpdHRsZSBzaG9ydCB3aGVuIGJ1aWxkIGluIGRlZXAgZGlyLCBhbmQgY2F1c2UgInRvbyBsb25nIgotZXJyb3IsIHVzZSBQQVRIX01BWCBpZiBkZWZpbmVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWIvZG5zL2dlbi5jIHwgICAgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1JbmRleDogYmluZC05LjExLjMvbGliL2Rucy9nZW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGJpbmQtOS4xMS4zLm9yaWcvbGliL2Rucy9nZW4uYwotKysrIGJpbmQtOS4xMS4zL2xpYi9kbnMvZ2VuLmMKLUBAIC0xMzAsNyArMTMwLDExIEBAIHN0YXRpYyBjb25zdCBjaGFyIGNvcHlyaWdodFtdID0KLSAjZGVmaW5lIFRZUEVDTEFTU0JVRiAoVFlQRUNMQVNTTEVOICsgMSkKLSAjZGVmaW5lIFRZUEVDTEFTU0ZNVCAiJSIgU1RSKFRZUEVDTEFTU0xFTikgIlstMC05YS16XV8lZCIKLSAjZGVmaW5lIEFUVFJJQlVURVNJWkUgMjU2Ci0rI2lmZGVmIFBBVEhfTUFYCi0rI2RlZmluZSBESVJOQU1FU0laRSBQQVRIX01BWAotKyNlbHNlCi0gI2RlZmluZSBESVJOQU1FU0laRSA1MTIKLSsjZW5kaWYKLSAKLSBzdGF0aWMgc3RydWN0IGNjIHsKLSAJc3RydWN0IGNjICpuZXh0OwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAyLXRjcC1jbGllbnRzLWNvdWxkLXN0aWxsLWJlLWV4Y2VlZGVkLXYyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAyLXRjcC1jbGllbnRzLWNvdWxkLXN0aWxsLWJlLWV4Y2VlZGVkLXYyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTRlOGIxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMi10Y3AtY2xpZW50cy1jb3VsZC1zdGlsbC1iZS1leGNlZWRlZC12Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY3MCArMCwwIEBACi1CYWNrcG9ydCBwYXRjaCB0byBmaXggQ1ZFLTIwMTgtNTc0My4KLQotUmVmOgotaHR0cHM6Ly9zZWN1cml0eS10cmFja2VyLmRlYmlhbi5vcmcvdHJhY2tlci9DVkUtMjAxOC01NzQzCi0KLUNWRTogQ1ZFLTIwMTgtNTc0MwotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuaXNjLm9yZy9pc2MtcHJvamVjdHMvYmluZDkvY29tbWl0LzcxOWY2MDRdCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotCi1Gcm9tIDcxOWY2MDRlM2ZhZDViNzQ3OWJkMTRlMmZhMGVmNDQxM2YwYThmZGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/V2l0b2xkPTIwS3I9QzQ9OTljaWNraT89IDx3cGtAaXNjLm9yZz4KLURhdGU6IEZyaSwgNCBKYW4gMjAxOSAxMjo1MDo1MSArMDEwMAotU3ViamVjdDogW1BBVENIIDIvNl0gdGNwLWNsaWVudHMgY291bGQgc3RpbGwgYmUgZXhjZWVkZWQgKHYyKQotCi10aGUgVENQIGNsaWVudCBxdW90YSBjb3VsZCBzdGlsbCBiZSBpbmVmZmVjdGl2ZSB1bmRlciBzb21lCi1jaXJjdW1zdGFuY2VzLiAgdGhpcyBjaGFuZ2U6Ci0KLS0gaW1wcm92ZXMgcXVvdGEgYWNjb3VudGluZyB0byBlbnN1cmUgdGhhdCBUQ1AgY2xpZW50cyBhcmUKLSAgcHJvcGVybHkgbGltaXRlZCwgd2hpbGUgc3RpbGwgZ3VhcmFudGVlaW5nIHRoYXQgYXQgbGVhc3Qgb25lIGNsaWVudAotICBpcyBhbHdheXMgYXZhaWxhYmxlIHRvIHNlcnZlIFRDUCBjb25uZWN0aW9ucyBvbiBlYWNoIGludGVyZmFjZS4KLS0gdXNlcyBtb3JlIGRlc2NyaXB0aXZlIG5hbWVzIGFuZCByZW1vdmVzIG9uZSAobnRjcHRhcmdldCkgdGhhdAotICB3YXMgbm8gbG9uZ2VyIG5lZWRlZAotLSBhZGRzIGNvbW1lbnRzCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDkyNDY1MWYxZDVlNjA1Y2QxODZkMDNmNGY3MzQwYmNjNTRkNzdjYzIpCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA1NWE3YTQ1OGUzMGU0Nzg3NGQzNGJkZjEwNzllYjg2M2EwNTEyMzk2KQotLS0tCi0gYmluL25hbWVkL2NsaWVudC5jICAgICAgICAgICAgICAgICAgICAgfCAzMTEgKysrKysrKysrKysrKysrKysrKystLS0tLQotIGJpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oICAgICAgIHwgIDE0ICstCi0gYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvaW50ZXJmYWNlbWdyLmggfCAgMTEgKy0KLSBiaW4vbmFtZWQvaW50ZXJmYWNlbWdyLmMgICAgICAgICAgICAgICB8ICAgOCArLQotIDQgZmlsZXMgY2hhbmdlZCwgMjY3IGluc2VydGlvbnMoKyksIDc3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2NsaWVudC5jIGIvYmluL25hbWVkL2NsaWVudC5jCi1pbmRleCAwNzM5ZGQ0OGFmLi5hN2I0OWEwZjcxIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2NsaWVudC5jCi0rKysgYi9iaW4vbmFtZWQvY2xpZW50LmMKLUBAIC0yNDYsMTAgKzI0NiwxMSBAQCBzdGF0aWMgdm9pZCBuc19jbGllbnRfZHVtcG1lc3NhZ2UobnNfY2xpZW50X3QgKmNsaWVudCwgY29uc3QgY2hhciAqcmVhc29uKTsKLSBzdGF0aWMgaXNjX3Jlc3VsdF90IGdldF9jbGllbnQobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsCi0gCQkJICAgICAgIGRuc19kaXNwYXRjaF90ICpkaXNwLCBib29sIHRjcCk7Ci0gc3RhdGljIGlzY19yZXN1bHRfdCBnZXRfd29ya2VyKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLAotLQkJCSAgICAgICBpc2Nfc29ja2V0X3QgKnNvY2spOwotKwkJCSAgICAgICBpc2Nfc29ja2V0X3QgKnNvY2ssIG5zX2NsaWVudF90ICpvbGRjbGllbnQpOwotIHN0YXRpYyBpbmxpbmUgYm9vbAotLWFsbG93ZWQoaXNjX25ldGFkZHJfdCAqYWRkciwgZG5zX25hbWVfdCAqc2lnbmVyLCBpc2NfbmV0YWRkcl90ICplY3NfYWRkciwKLS0JdWludDhfdCBlY3NfYWRkcmxlbiwgdWludDhfdCAqZWNzX3Njb3BlLCBkbnNfYWNsX3QgKmFjbCk7Ci0rYWxsb3dlZChpc2NfbmV0YWRkcl90ICphZGRyLCBkbnNfbmFtZV90ICpzaWduZXIsCi0rCWlzY19uZXRhZGRyX3QgKmVjc19hZGRyLCB1aW50OF90IGVjc19hZGRybGVuLAotKwl1aW50OF90ICplY3Nfc2NvcGUsIGRuc19hY2xfdCAqYWNsKQotIHN0YXRpYyB2b2lkIGNvbXB1dGVfY29va2llKG5zX2NsaWVudF90ICpjbGllbnQsIHVpbnQzMl90IHdoZW4sCi0gCQkJICAgdWludDMyX3Qgbm9uY2UsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlY3JldCwKLSAJCQkgICBpc2NfYnVmZmVyX3QgKmJ1Zik7Ci1AQCAtNDA1LDggKzQwNiwxMSBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCSAqLwotIAkJSU5TSVNUKGNsaWVudC0+cmVjdXJzaW9ucXVvdGEgPT0gTlVMTCk7Ci0gCQlJTlNJU1QoY2xpZW50LT5uZXdzdGF0ZSA8PSBOU19DTElFTlRTVEFURV9SRUFEWSk7Ci0tCQlpZiAoY2xpZW50LT5ucmVhZHMgPiAwKQotKwotKwkJaWYgKGNsaWVudC0+bnJlYWRzID4gMCkgewotIAkJCWRuc190Y3Btc2dfY2FuY2VscmVhZCgmY2xpZW50LT50Y3Btc2cpOwotKwkJfQotKwotIAkJaWYgKGNsaWVudC0+bnJlYWRzICE9IDApIHsKLSAJCQkvKiBTdGlsbCB3YWl0aW5nIGZvciByZWFkIGNhbmNlbCBjb21wbGV0aW9uLiAqLwotIAkJCXJldHVybiAodHJ1ZSk7Ci1AQCAtNDE2LDI1ICs0MjAsNTggQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkJZG5zX3RjcG1zZ19pbnZhbGlkYXRlKCZjbGllbnQtPnRjcG1zZyk7Ci0gCQkJY2xpZW50LT50Y3Btc2dfdmFsaWQgPSBmYWxzZTsKLSAJCX0KLSsKLSAJCWlmIChjbGllbnQtPnRjcHNvY2tldCAhPSBOVUxMKSB7Ci0gCQkJQ1RSQUNFKCJjbG9zZXRjcCIpOwotIAkJCWlzY19zb2NrZXRfZGV0YWNoKCZjbGllbnQtPnRjcHNvY2tldCk7Ci0rCi0rCQkJaWYgKGNsaWVudC0+dGNwYWN0aXZlKSB7Ci0rCQkJCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsJCQkJSU5TSVNUKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlID4gMCk7Ci0rCQkJCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLS07Ci0rCQkJCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwkJCQljbGllbnQtPnRjcGFjdGl2ZSA9IGZhbHNlOwotKwkJCX0KLSAJCX0KLSAKLSAJCWlmIChjbGllbnQtPnRjcHF1b3RhICE9IE5VTEwpIHsKLS0JCQlpc2NfcXVvdGFfZGV0YWNoKCZjbGllbnQtPnRjcHF1b3RhKTsKLS0JCX0gZWxzZSB7Ci0gCQkJLyoKLS0JCQkgKiBXZSB3ZW50IG92ZXIgcXVvdGEgd2l0aCB0aGlzIGNsaWVudCwgd2UgZG9uJ3QKLS0JCQkgKiB3YW50IHRvIHJlc3RhcnQgbGlzdGVuaW5nIHVubGVzcyB0aGlzIGlzIHRoZQotLQkJCSAqIGxhc3QgY2xpZW50IG9uIHRoaXMgaW50ZXJmYWNlLCB3aGljaCBpcwotLQkJCSAqIGNoZWNrZWQgbGF0ZXIuCi0rCQkJICogSWYgd2UgYXJlIG5vdCBpbiBhIHBpcGVsaW5lIGdyb3VwLCBvcgotKwkJCSAqIHdlIGFyZSB0aGUgbGFzdCBjbGllbnQgaW4gdGhlIGdyb3VwLCBkZXRhY2ggZnJvbQotKwkJCSAqIHRjcHF1b3RhOyBvdGhlcndpc2UsIHRyYW5zZmVyIHRoZSBxdW90YSB0bwotKwkJCSAqIGFub3RoZXIgY2xpZW50IGluIHRoZSBzYW1lIGdyb3VwLgotIAkJCSAqLwotLQkJCWlmIChUQ1BfQ0xJRU5UKGNsaWVudCkpIHsKLS0JCQkJY2xpZW50LT5tb3J0YWwgPSB0cnVlOwotKwkJCWlmICghSVNDX0xJTktfTElOS0VEKGNsaWVudCwgZ2xpbmspIHx8Ci0rCQkJICAgIChjbGllbnQtPmdsaW5rLm5leHQgPT0gTlVMTCAmJgotKwkJCSAgICAgY2xpZW50LT5nbGluay5wcmV2ID09IE5VTEwpKQotKwkJCXsKLSsJCQkJaXNjX3F1b3RhX2RldGFjaCgmY2xpZW50LT50Y3BxdW90YSk7Ci0rCQkJfSBlbHNlIGlmIChjbGllbnQtPmdsaW5rLm5leHQgIT0gTlVMTCkgewotKwkJCQlJTlNJU1QoY2xpZW50LT5nbGluay5uZXh0LT50Y3BxdW90YSA9PSBOVUxMKTsKLSsJCQkJY2xpZW50LT5nbGluay5uZXh0LT50Y3BxdW90YSA9IGNsaWVudC0+dGNwcXVvdGE7Ci0rCQkJCWNsaWVudC0+dGNwcXVvdGEgPSBOVUxMOwotKwkJCX0gZWxzZSB7Ci0rCQkJCUlOU0lTVChjbGllbnQtPmdsaW5rLnByZXYtPnRjcHF1b3RhID09IE5VTEwpOwotKwkJCQljbGllbnQtPmdsaW5rLnByZXYtPnRjcHF1b3RhID0gY2xpZW50LT50Y3BxdW90YTsKLSsJCQkJY2xpZW50LT50Y3BxdW90YSA9IE5VTEw7Ci0gCQkJfQotIAkJfQotIAotKwkJLyoKLSsJCSAqIFVubGluayBmcm9tIHBpcGVsaW5lIGdyb3VwLgotKwkJICovCi0rCQlpZiAoSVNDX0xJTktfTElOS0VEKGNsaWVudCwgZ2xpbmspKSB7Ci0rCQkJaWYgKGNsaWVudC0+Z2xpbmsubmV4dCAhPSBOVUxMKSB7Ci0rCQkJCWNsaWVudC0+Z2xpbmsubmV4dC0+Z2xpbmsucHJldiA9Ci0rCQkJCQljbGllbnQtPmdsaW5rLnByZXY7Ci0rCQkJfQotKwkJCWlmIChjbGllbnQtPmdsaW5rLnByZXYgIT0gTlVMTCkgewotKwkJCQljbGllbnQtPmdsaW5rLnByZXYtPmdsaW5rLm5leHQgPQotKwkJCQkJY2xpZW50LT5nbGluay5uZXh0OwotKwkJCX0KLSsJCQlJU0NfTElOS19JTklUKGNsaWVudCwgZ2xpbmspOwotKwkJfQotKwotIAkJaWYgKGNsaWVudC0+dGltZXJzZXQpIHsKLSAJCQkodm9pZClpc2NfdGltZXJfcmVzZXQoY2xpZW50LT50aW1lciwKLSAJCQkJCSAgICAgIGlzY190aW1lcnR5cGVfaW5hY3RpdmUsCi1AQCAtNDU1LDE1ICs0OTIsMTYgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkgKiB0aGF0IGFscmVhZHkuICBDaGVjayB3aGV0aGVyIHRoaXMgY2xpZW50IG5lZWRzIHRvIHJlbWFpbgotIAkJICogYWN0aXZlIGFuZCBmb3JjZSBpdCB0byBnbyBpbmFjdGl2ZSBpZiBub3QuCi0gCQkgKgotLQkJICogVURQIGNsaWVudHMgZ28gaW5hY3RpdmUgYXQgdGhpcyBwb2ludCwgYnV0IFRDUCBjbGllbnRzCi0tCQkgKiBtYXkgcmVtYWluIGFjdGl2ZSBpZiB3ZSBoYXZlIGZld2VyIGFjdGl2ZSBUQ1AgY2xpZW50Ci0tCQkgKiBvYmplY3RzIHRoYW4gZGVzaXJlZCBkdWUgdG8gYW4gZWFybGllciBxdW90YSBleGhhdXN0aW9uLgotKwkJICogVURQIGNsaWVudHMgZ28gaW5hY3RpdmUgYXQgdGhpcyBwb2ludCwgYnV0IGEgVENQIGNsaWVudAotKwkJICogd2lsbCBuZWVkcyB0byByZW1haW4gYWN0aXZlIGlmIG5vIG90aGVyIGNsaWVudHMgYXJlCi0rCQkgKiBsaXN0ZW5pbmcgZm9yIFRDUCByZXF1ZXN0cyBvbiB0aGlzIGludGVyZmFjZSwgdG8KLSsJCSAqIHByZXZlbnQgdGhpcyBpbnRlcmZhY2UgZnJvbSBnb2luZyBub25yZXNwb25zaXZlLgotIAkJICovCi0gCQlpZiAoY2xpZW50LT5tb3J0YWwgJiYgVENQX0NMSUVOVChjbGllbnQpICYmICFuc19nX2NsaWVudHRlc3QpIHsKLSAJCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCQkJaWYgKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwY3VycmVudCA8Ci0tCQkJCSAgICBjbGllbnQtPmludGVyZmFjZS0+bnRjcHRhcmdldCkKLSsJCQlpZiAoY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcgPT0gMCkgewotIAkJCQljbGllbnQtPm1vcnRhbCA9IGZhbHNlOwotKwkJCX0KLSAJCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSAJCX0KLSAKLUBAIC00NzIsMTUgKzUxMCwxNyBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCSAqIHF1ZXVlIGZvciByZWN5Y2xpbmcuCi0gCQkgKi8KLSAJCWlmIChjbGllbnQtPm1vcnRhbCkgewotLQkJCWlmIChjbGllbnQtPm5ld3N0YXRlID4gTlNfQ0xJRU5UU1RBVEVfSU5BQ1RJVkUpCi0rCQkJaWYgKGNsaWVudC0+bmV3c3RhdGUgPiBOU19DTElFTlRTVEFURV9JTkFDVElWRSkgewotIAkJCQljbGllbnQtPm5ld3N0YXRlID0gTlNfQ0xJRU5UU1RBVEVfSU5BQ1RJVkU7Ci0rCQkJfQotIAkJfQotIAotIAkJaWYgKE5TX0NMSUVOVFNUQVRFX1JFQURZID09IGNsaWVudC0+bmV3c3RhdGUpIHsKLSAJCQlpZiAoVENQX0NMSUVOVChjbGllbnQpKSB7Ci0gCQkJCWNsaWVudF9hY2NlcHQoY2xpZW50KTsKLS0JCQl9IGVsc2UKLSsJCQl9IGVsc2UgewotIAkJCQljbGllbnRfdWRwcmVjdihjbGllbnQpOwotKwkJCX0KLSAJCQljbGllbnQtPm5ld3N0YXRlID0gTlNfQ0xJRU5UU1RBVEVfTUFYOwotIAkJCXJldHVybiAodHJ1ZSk7Ci0gCQl9Ci1AQCAtNDkyLDQxICs1MzIsNTcgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkvKgotIAkJICogV2UgYXJlIHRyeWluZyB0byBlbnRlciB0aGUgaW5hY3RpdmUgc3RhdGUuCi0gCQkgKi8KLS0JCWlmIChjbGllbnQtPm5hY2NlcHRzID4gMCkKLSsJCWlmIChjbGllbnQtPm5hY2NlcHRzID4gMCkgewotIAkJCWlzY19zb2NrZXRfY2FuY2VsKGNsaWVudC0+dGNwbGlzdGVuZXIsIGNsaWVudC0+dGFzaywKLSAJCQkJCSAgSVNDX1NPQ0tDQU5DRUxfQUNDRVBUKTsKLSsJCX0KLSAKLSAJCS8qIFN0aWxsIHdhaXRpbmcgZm9yIGFjY2VwdCBjYW5jZWwgY29tcGxldGlvbi4gKi8KLS0JCWlmICghIChjbGllbnQtPm5hY2NlcHRzID09IDApKQotKwkJaWYgKCEgKGNsaWVudC0+bmFjY2VwdHMgPT0gMCkpIHsKLSAJCQlyZXR1cm4gKHRydWUpOwotKwkJfQotIAotIAkJLyogQWNjZXB0IGNhbmNlbCBpcyBjb21wbGV0ZS4gKi8KLS0JCWlmIChjbGllbnQtPm5yZWN2cyA+IDApCi0rCQlpZiAoY2xpZW50LT5ucmVjdnMgPiAwKSB7Ci0gCQkJaXNjX3NvY2tldF9jYW5jZWwoY2xpZW50LT51ZHBzb2NrZXQsIGNsaWVudC0+dGFzaywKLSAJCQkJCSAgSVNDX1NPQ0tDQU5DRUxfUkVDVik7Ci0rCQl9Ci0gCi0gCQkvKiBTdGlsbCB3YWl0aW5nIGZvciByZWN2IGNhbmNlbCBjb21wbGV0aW9uLiAqLwotLQkJaWYgKCEgKGNsaWVudC0+bnJlY3ZzID09IDApKQotKwkJaWYgKCEgKGNsaWVudC0+bnJlY3ZzID09IDApKSB7Ci0gCQkJcmV0dXJuICh0cnVlKTsKLSsJCX0KLSAKLSAJCS8qIFN0aWxsIHdhaXRpbmcgZm9yIGNvbnRyb2wgZXZlbnQgdG8gYmUgZGVsaXZlcmVkICovCi0tCQlpZiAoY2xpZW50LT5uY3RscyA+IDApCi0rCQlpZiAoY2xpZW50LT5uY3RscyA+IDApIHsKLSAJCQlyZXR1cm4gKHRydWUpOwotLQotLQkJLyogRGVhY3RpdmF0ZSB0aGUgY2xpZW50LiAqLwotLQkJaWYgKGNsaWVudC0+aW50ZXJmYWNlKQotLQkJCW5zX2ludGVyZmFjZV9kZXRhY2goJmNsaWVudC0+aW50ZXJmYWNlKTsKLSsJCX0KLSAKLSAJCUlOU0lTVChjbGllbnQtPm5hY2NlcHRzID09IDApOwotIAkJSU5TSVNUKGNsaWVudC0+cmVjdXJzaW9ucXVvdGEgPT0gTlVMTCk7Ci0tCQlpZiAoY2xpZW50LT50Y3BsaXN0ZW5lciAhPSBOVUxMKQotKwkJaWYgKGNsaWVudC0+dGNwbGlzdGVuZXIgIT0gTlVMTCkgewotIAkJCWlzY19zb2NrZXRfZGV0YWNoKCZjbGllbnQtPnRjcGxpc3RlbmVyKTsKLSAKLS0JCWlmIChjbGllbnQtPnVkcHNvY2tldCAhPSBOVUxMKQotKwkJCWlmIChjbGllbnQtPnRjcGFjdGl2ZSkgewotKwkJCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCQkJCUlOU0lTVChjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSA+IDApOwotKwkJCQljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZS0tOwotKwkJCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsJCQkJY2xpZW50LT50Y3BhY3RpdmUgPSBmYWxzZTsKLSsJCQl9Ci0rCQl9Ci0rCQlpZiAoY2xpZW50LT51ZHBzb2NrZXQgIT0gTlVMTCkgewotIAkJCWlzY19zb2NrZXRfZGV0YWNoKCZjbGllbnQtPnVkcHNvY2tldCk7Ci0rCQl9Ci0gCi0tCQlpZiAoY2xpZW50LT5kaXNwYXRjaCAhPSBOVUxMKQotKwkJLyogRGVhY3RpdmF0ZSB0aGUgY2xpZW50LiAqLwotKwkJaWYgKGNsaWVudC0+aW50ZXJmYWNlICE9IE5VTEwpIHsKLSsJCQluc19pbnRlcmZhY2VfZGV0YWNoKCZjbGllbnQtPmludGVyZmFjZSk7Ci0rCQl9Ci0rCi0rCQlpZiAoY2xpZW50LT5kaXNwYXRjaCAhPSBOVUxMKSB7Ci0gCQkJZG5zX2Rpc3BhdGNoX2RldGFjaCgmY2xpZW50LT5kaXNwYXRjaCk7Ci0rCQl9Ci0gCi0gCQljbGllbnQtPmF0dHJpYnV0ZXMgPSAwOwotIAkJY2xpZW50LT5tb3J0YWwgPSBmYWxzZTsKLUBAIC01NTEsMTAgKzYwNywxMyBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCQljbGllbnQtPm5ld3N0YXRlID0gTlNfQ0xJRU5UU1RBVEVfTUFYOwotIAkJCWlmICghbnNfZ19jbGllbnR0ZXN0ICYmIG1hbmFnZXIgIT0gTlVMTCAmJgotIAkJCSAgICAhbWFuYWdlci0+ZXhpdGluZykKLSsJCQl7Ci0gCQkJCUlTQ19RVUVVRV9QVVNIKG1hbmFnZXItPmluYWN0aXZlLCBjbGllbnQsCi0gCQkJCQkgICAgICAgaWxpbmspOwotLQkJCWlmIChjbGllbnQtPm5lZWRzaHV0ZG93bikKLSsJCQl9Ci0rCQkJaWYgKGNsaWVudC0+bmVlZHNodXRkb3duKSB7Ci0gCQkJCWlzY190YXNrX3NodXRkb3duKGNsaWVudC0+dGFzayk7Ci0rCQkJfQotIAkJCXJldHVybiAodHJ1ZSk7Ci0gCQl9Ci0gCX0KLUBAIC02NzUsNyArNzM0LDYgQEAgY2xpZW50X3N0YXJ0KGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAl9Ci0gfQotIAotLQotIC8qJQotICAqIFRoZSBjbGllbnQncyB0YXNrIGhhcyByZWNlaXZlZCBhIHNodXRkb3duIGV2ZW50LgotICAqLwotQEAgLTI1MDcsMTcgKzI1NjUsMTIgQEAgY2xpZW50X3JlcXVlc3QoaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCS8qCi0gCSAqIFBpcGVsaW5lIFRDUCBxdWVyeSBwcm9jZXNzaW5nLgotIAkgKi8KLS0JaWYgKGNsaWVudC0+bWVzc2FnZS0+b3Bjb2RlICE9IGRuc19vcGNvZGVfcXVlcnkpCi0rCWlmIChjbGllbnQtPm1lc3NhZ2UtPm9wY29kZSAhPSBkbnNfb3Bjb2RlX3F1ZXJ5KSB7Ci0gCQljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotKwl9Ci0gCWlmIChUQ1BfQ0xJRU5UKGNsaWVudCkgJiYgY2xpZW50LT5waXBlbGluZWQpIHsKLS0JCXJlc3VsdCA9IGlzY19xdW90YV9yZXNlcnZlKCZuc19nX3NlcnZlci0+dGNwcXVvdGEpOwotLQkJaWYgKHJlc3VsdCA9PSBJU0NfUl9TVUNDRVNTKQotLQkJCXJlc3VsdCA9IG5zX2NsaWVudF9yZXBsYWNlKGNsaWVudCk7Ci0rCQlyZXN1bHQgPSBuc19jbGllbnRfcmVwbGFjZShjbGllbnQpOwotIAkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKSB7Ci0tCQkJbnNfY2xpZW50X2xvZyhjbGllbnQsIE5TX0xPR0NBVEVHT1JZX0NMSUVOVCwKLS0JCQkJICAgICAgTlNfTE9HTU9EVUxFX0NMSUVOVCwgSVNDX0xPR19XQVJOSU5HLAotLQkJCQkgICAgICAibm8gbW9yZSBUQ1AgY2xpZW50cyhyZWFkKTogJXMiLAotLQkJCQkgICAgICBpc2NfcmVzdWx0X3RvdGV4dChyZXN1bHQpKTsKLSAJCQljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotIAkJfQotIAl9Ci1AQCAtMzA4Nyw2ICszMTQwLDcgQEAgY2xpZW50X2NyZWF0ZShuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfY2xpZW50X3QgKipjbGllbnRwKSB7Ci0gCWNsaWVudC0+ZmlsdGVyX2FhYWEgPSBkbnNfYWFhYV9vazsKLSAjZW5kaWYKLSAJY2xpZW50LT5uZWVkc2h1dGRvd24gPSBuc19nX2NsaWVudHRlc3Q7Ci0rCWNsaWVudC0+dGNwYWN0aXZlID0gZmFsc2U7Ci0gCi0gCUlTQ19FVkVOVF9JTklUKCZjbGllbnQtPmN0bGV2ZW50LCBzaXplb2YoY2xpZW50LT5jdGxldmVudCksIDAsIE5VTEwsCi0gCQkgICAgICAgTlNfRVZFTlRfQ0xJRU5UQ09OVFJPTCwgY2xpZW50X3N0YXJ0LCBjbGllbnQsIGNsaWVudCwKLUBAIC0zMTAwLDYgKzMxNTQsNyBAQCBjbGllbnRfY3JlYXRlKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19jbGllbnRfdCAqKmNsaWVudHApIHsKLSAJY2xpZW50LT5mb3JtZXJyY2FjaGUuaWQgPSAwOwotIAlJU0NfTElOS19JTklUKGNsaWVudCwgbGluayk7Ci0gCUlTQ19MSU5LX0lOSVQoY2xpZW50LCBybGluayk7Ci0rCUlTQ19MSU5LX0lOSVQoY2xpZW50LCBnbGluayk7Ci0gCUlTQ19RTElOS19JTklUKGNsaWVudCwgaWxpbmspOwotIAljbGllbnQtPmtleXRhZyA9IE5VTEw7Ci0gCWNsaWVudC0+a2V5dGFnX2xlbiA9IDA7Ci1AQCAtMzE5MywxMiArMzI0OCwxOSBAQCBjbGllbnRfbmV3Y29ubihpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAKLSAJSU5TSVNUKGNsaWVudC0+c3RhdGUgPT0gTlNfQ0xJRU5UU1RBVEVfUkVBRFkpOwotIAotKwkvKgotKwkgKiBUaGUgYWNjZXB0KCkgd2FzIHN1Y2Nlc3NmdWwgYW5kIHdlJ3JlIG5vdyBlc3RhYmxpc2hpbmcgYSBuZXcKLSsJICogY29ubmVjdGlvbi4gV2UgbmVlZCB0byBtYWtlIG5vdGUgb2YgaXQgaW4gdGhlIGNsaWVudCBhbmQKLSsJICogaW50ZXJmYWNlIG9iamVjdHMgc28gY2xpZW50IG9iamVjdHMgY2FuIGRvIHRoZSByaWdodCB0aGluZwotKwkgKiB3aGVuIGdvaW5nIGluYWN0aXZlIGluIGV4aXRfY2hlY2soKSAoc2VlIGNvbW1lbnRzIGluCi0rCSAqIGNsaWVudF9hY2NlcHQoKSBmb3IgZGV0YWlscykuCi0rCSAqLwotIAlJTlNJU1QoY2xpZW50LT5uYWNjZXB0cyA9PSAxKTsKLSAJY2xpZW50LT5uYWNjZXB0cy0tOwotIAotIAlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCUlOU0lTVChjbGllbnQtPmludGVyZmFjZS0+bnRjcGN1cnJlbnQgPiAwKTsKLS0JY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BjdXJyZW50LS07Ci0rCUlOU0lTVChjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZyA+IDApOwotKwljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZy0tOwotIAlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSAKLSAJLyoKLUBAIC0zMjMyLDYgKzMyOTQsOSBAQCBjbGllbnRfbmV3Y29ubihpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJCQkgICAgICBOU19MT0dNT0RVTEVfQ0xJRU5ULCBJU0NfTE9HX0RFQlVHKDMpLAotIAkJCSAgICAgICJhY2NlcHQgZmFpbGVkOiAlcyIsCi0gCQkJICAgICAgaXNjX3Jlc3VsdF90b3RleHQobmV2ZW50LT5yZXN1bHQpKTsKLSsJCWlmIChjbGllbnQtPnRjcHF1b3RhICE9IE5VTEwpIHsKLSsJCQlpc2NfcXVvdGFfZGV0YWNoKCZjbGllbnQtPnRjcHF1b3RhKTsKLSsJCX0KLSAJfQotIAotIAlpZiAoZXhpdF9jaGVjayhjbGllbnQpKQotQEAgLTMyNzAsMTggKzMzMzUsMTIgQEAgY2xpZW50X25ld2Nvbm4oaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCQkgKiBkZW55IHNlcnZpY2UgdG8gbGVnaXRpbWF0ZSBUQ1AgY2xpZW50cy4KLSAJCSAqLwotIAkJY2xpZW50LT5waXBlbGluZWQgPSBmYWxzZTsKLS0JCXJlc3VsdCA9IGlzY19xdW90YV9hdHRhY2goJm5zX2dfc2VydmVyLT50Y3BxdW90YSwKLS0JCQkJCSAgJmNsaWVudC0+dGNwcXVvdGEpOwotLQkJaWYgKHJlc3VsdCA9PSBJU0NfUl9TVUNDRVNTKQotLQkJCXJlc3VsdCA9IG5zX2NsaWVudF9yZXBsYWNlKGNsaWVudCk7Ci0tCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpIHsKLS0JCQluc19jbGllbnRfbG9nKGNsaWVudCwgTlNfTE9HQ0FURUdPUllfQ0xJRU5ULAotLQkJCQkgICAgICBOU19MT0dNT0RVTEVfQ0xJRU5ULCBJU0NfTE9HX1dBUk5JTkcsCi0tCQkJCSAgICAgICJubyBtb3JlIFRDUCBjbGllbnRzKGFjY2VwdCk6ICVzIiwKLS0JCQkJICAgICAgaXNjX3Jlc3VsdF90b3RleHQocmVzdWx0KSk7Ci0tCQl9IGVsc2UgaWYgKG5zX2dfc2VydmVyLT5rZWVwcmVzcG9yZGVyID09IE5VTEwgfHwKLS0JCQkgICAhYWxsb3dlZCgmbmV0YWRkciwgTlVMTCwgTlVMTCwgMCwgTlVMTCwKLS0JCQkJICAgIG5zX2dfc2VydmVyLT5rZWVwcmVzcG9yZGVyKSkgewotKwkJcmVzdWx0ID0gbnNfY2xpZW50X3JlcGxhY2UoY2xpZW50KTsKLSsJCWlmIChyZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUyAmJgotKwkJICAgIChjbGllbnQtPnNjdHgtPmtlZXByZXNwb3JkZXIgPT0gTlVMTCB8fAotKwkJICAgICAhYWxsb3dlZCgmbmV0YWRkciwgTlVMTCwgTlVMTCwgMCwgTlVMTCwKLSsJCQkgICAgICBuc19nX3NlcnZlci0+a2VlcHJlc3BvcmRlcikpKQotKwkJewotIAkJCWNsaWVudC0+cGlwZWxpbmVkID0gdHJ1ZTsKLSAJCX0KLSAKLUBAIC0zMjk4LDEyICszMzU3LDgwIEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAotIAlDVFJBQ0UoImFjY2VwdCIpOwotIAotKwkvKgotKwkgKiBUaGUgdGNwcXVvdGEgb2JqZWN0IGNhbiBvbmx5IGJlIHNpbXVsdGFuZW91c2x5IHJlZmVyZW5jZWQgYQotKwkgKiBwcmUtZGVmaW5lZCBudW1iZXIgb2YgdGltZXM7IHRoaXMgaXMgY29uZmlndXJlZCBieSAndGNwLWNsaWVudHMnCi0rCSAqIGluIG5hbWVkLmNvbmYuIElmIHdlIGNhbid0IGF0dGFjaCB0byBpdCBoZXJlLCB0aGF0IG1lYW5zIHRoZSBUQ1AKLSsJICogY2xpZW50IHF1b3RhIGhhcyBiZWVuIGV4Y2VlZGVkLgotKwkgKi8KLSsJcmVzdWx0ID0gaXNjX3F1b3RhX2F0dGFjaCgmY2xpZW50LT5zY3R4LT50Y3BxdW90YSwKLSsJCQkJICAmY2xpZW50LT50Y3BxdW90YSk7Ci0rCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykgewotKwkJCWJvb2wgZXhpdDsKLSsKLSsJCQluc19jbGllbnRfbG9nKGNsaWVudCwgTlNfTE9HQ0FURUdPUllfQ0xJRU5ULAotKwkJCQkgICAgICBOU19MT0dNT0RVTEVfQ0xJRU5ULCBJU0NfTE9HX0RFQlVHKDEpLAotKwkJCQkgICAgICAibm8gbW9yZSBUQ1AgY2xpZW50czogJXMiLAotKwkJCQkgICAgICBpc2NfcmVzdWx0X3RvdGV4dChyZXN1bHQpKTsKLSsKLSsJCQkvKgotKwkJCSAqIFdlIGhhdmUgZXhjZWVkZWQgdGhlIHN5c3RlbS13aWRlIFRDUCBjbGllbnQKLSsJCQkgKiBxdW90YS4gIEJ1dCwgd2UgY2FuJ3QganVzdCBibG9jayB0aGlzIGFjY2VwdAotKwkJCSAqIGluIGFsbCBjYXNlcywgYmVjYXVzZSBpZiB3ZSBkaWQsIGEgaGVhdnkgVENQCi0rCQkJICogbG9hZCBvbiBvdGhlciBpbnRlcmZhY2VzIG1pZ2h0IGNhdXNlIHRoaXMKLSsJCQkgKiBpbnRlcmZhY2UgdG8gYmUgc3RhcnZlZCwgd2l0aCBubyBjbGllbnRzIGFibGUKLSsJCQkgKiB0byBhY2NlcHQgbmV3IGNvbm5lY3Rpb25zLgotKwkJCSAqCi0rCQkJICogU28sIHdlIGNoZWNrIGhlcmUgdG8gc2VlIGlmIGFueSBvdGhlciBjbGllbnQKLSsJCQkgKiBpcyBhbHJlYWR5IHNlcnZpY2luZyBUQ1AgcXVlcmllcyBvbiB0aGlzCi0rCQkJICogaW50ZXJmYWNlICh3aGV0aGVyIGFjY2VwdGluZywgcmVhZGluZywgb3IKLSsJCQkgKiBwcm9jZXNzaW5nKS4KLSsJCQkgKgotKwkJCSAqIElmIHNvLCB0aGVuIGl0J3Mgb2theSAqbm90KiB0byBjYWxsCi0rCQkJICogYWNjZXB0IC0gd2UgY2FuIGxldCB0aGlzIGNsaWVudCB0byBnbyBpbmFjdGl2ZQotKwkJCSAqIGFuZCB0aGUgb3RoZXIgb25lIGhhbmRsZSB0aGUgbmV4dCBjb25uZWN0aW9uCi0rCQkJICogd2hlbiBpdCdzIHJlYWR5LgotKwkJCSAqCi0rCQkJICogQnV0IGlmIG5vdCwgdGhlbiB3ZSBuZWVkIHRvIGJlIGEgbGl0dGxlIGJpdAotKwkJCSAqIGZsZXhpYmxlIGFib3V0IHRoZSBxdW90YS4gV2UgYWxsb3cgKm9uZSogZXh0cmEKLSsJCQkgKiBUQ1AgY2xpZW50IHRocm91Z2gsIHRvIGVuc3VyZSB3ZSdyZSBsaXN0ZW5pbmcgb24KLSsJCQkgKiBldmVyeSBpbnRlcmZhY2UuCi0rCQkJICoKLSsJCQkgKiAoTm90ZTogSW4gcHJhY3RpY2UgdGhpcyBtZWFucyB0aGF0IHRoZSAqcmVhbCoKLSsJCQkgKiBUQ1AgY2xpZW50IHF1b3RhIGlzIHRjcC1jbGllbnRzIHBsdXMgdGhlIG51bWJlcgotKwkJCSAqIG9mIGludGVyZmFjZXMuKQotKwkJCSAqLwotKwkJCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsJCQlleGl0ID0gKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlID4gMCk7Ci0rCQkJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCi0rCQkJaWYgKGV4aXQpIHsKLSsJCQkJY2xpZW50LT5uZXdzdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX0lOQUNUSVZFOwotKwkJCQkodm9pZClleGl0X2NoZWNrKGNsaWVudCk7Ci0rCQkJCXJldHVybjsKLSsJCQl9Ci0rCX0KLSsKLSsJLyoKLSsJICogQnkgaW5jcmVtZW50aW5nIHRoZSBpbnRlcmZhY2UncyBudGNwYWN0aXZlIGNvdW50ZXIgd2Ugc2lnbmFsCi0rCSAqIHRoYXQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNsaWVudCBzZXJ2aWNpbmcgVENQIHF1ZXJpZXMgZm9yIHRoZQotKwkgKiBpbnRlcmZhY2UuCi0rCSAqCi0rCSAqIFdlIGFsc28gbWFrZSBub3RlIG9mIHRoZSBmYWN0IGluIHRoZSBjbGllbnQgaXRzZWxmIHdpdGggdGhlCi0rCSAqIHRjcGFjdGl2ZSBmbGFnLiBUaGlzIGVuc3VyZXMgcHJvcGVyIGFjY291bnRpbmcgYnkgcHJldmVudGluZwotKwkgKiB1cyBmcm9tIGFjY2lkZW50YWxseSBpbmNyZW1lbnRpbmcgb3IgZGVjcmVtZW50aW5nIG50Y3BhY3RpdmUKLSsJICogbW9yZSB0aGFuIG9uY2UgcGVyIGNsaWVudCBvYmplY3QuCi0rCSAqLwotKwlpZiAoIWNsaWVudC0+dGNwYWN0aXZlKSB7Ci0rCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCQljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSsrOwotKwkJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCQljbGllbnQtPnRjcGFjdGl2ZSA9IHRydWU7Ci0rCX0KLSsKLSAJcmVzdWx0ID0gaXNjX3NvY2tldF9hY2NlcHQoY2xpZW50LT50Y3BsaXN0ZW5lciwgY2xpZW50LT50YXNrLAotIAkJCQkgICBjbGllbnRfbmV3Y29ubiwgY2xpZW50KTsKLSAJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKSB7Ci0tCQlVTkVYUEVDVEVEX0VSUk9SKF9fRklMRV9fLCBfX0xJTkVfXywKLS0JCQkJICJpc2Nfc29ja2V0X2FjY2VwdCgpIGZhaWxlZDogJXMiLAotLQkJCQkgaXNjX3Jlc3VsdF90b3RleHQocmVzdWx0KSk7Ci0gCQkvKgotIAkJICogWFhYUlRIICBXaGF0IHNob3VsZCB3ZSBkbz8gIFdlJ3JlIHRyeWluZyB0byBhY2NlcHQgYnV0Ci0gCQkgKgkgICBpdCBkaWRuJ3Qgd29yay4gIElmIHdlIGp1c3QgZ2l2ZSB1cCwgdGhlbiBUQ1AKLUBAIC0zMzExLDEyICszNDM4LDM5IEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJICoKLSAJCSAqCSAgIEZvciBub3csIHdlIGp1c3QgZ28gaWRsZS4KLSAJCSAqLwotKwkJVU5FWFBFQ1RFRF9FUlJPUihfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkJCSAiaXNjX3NvY2tldF9hY2NlcHQoKSBmYWlsZWQ6ICVzIiwKLSsJCQkJIGlzY19yZXN1bHRfdG90ZXh0KHJlc3VsdCkpOwotKwkJaWYgKGNsaWVudC0+dGNwcXVvdGEgIT0gTlVMTCkgewotKwkJCWlzY19xdW90YV9kZXRhY2goJmNsaWVudC0+dGNwcXVvdGEpOwotKwkJfQotIAkJcmV0dXJuOwotIAl9Ci0rCi0rCS8qCi0rCSAqIFRoZSBjbGllbnQncyAnbmFjY2VwdHMnIGNvdW50ZXIgaW5kaWNhdGVzIHRoYXQgdGhpcyBjbGllbnQgaGFzCi0rCSAqIGNhbGxlZCBhY2NlcHQoKSBhbmQgaXMgd2FpdGluZyBmb3IgYSBuZXcgY29ubmVjdGlvbi4gSXQgc2hvdWxkCi0rCSAqIG5ldmVyIGV4Y2VlZCAxLgotKwkgKi8KLSAJSU5TSVNUKGNsaWVudC0+bmFjY2VwdHMgPT0gMCk7Ci0gCWNsaWVudC0+bmFjY2VwdHMrKzsKLSsKLSsJLyoKLSsJICogVGhlIGludGVyZmFjZSdzICdudGNwYWNjZXB0aW5nJyBjb3VudGVyIGlzIGluY3JlbWVudGVkIHdoZW4KLSsJICogYW55IGNsaWVudCBjYWxscyBhY2NlcHQoKSwgYW5kIGRlY3JlbWVudGVkIGluIGNsaWVudF9uZXdjb25uKCkKLSsJICogb25jZSB0aGUgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZC4KLSsJICoKLSsJICogV2hlbiB0aGUgY2xpZW50IG9iamVjdCBpcyBzaHV0dGluZyBkb3duIGFmdGVyIGhhbmRsaW5nIGEgVENQCi0rCSAqIHJlcXVlc3QgKHNlZSBleGl0X2NoZWNrKCkpLCBpdCBsb29rcyB0byBzZWUgd2hldGhlciB0aGlzIHZhbHVlIGlzCi0rCSAqIG5vbi16ZXJvLiBJZiBzbywgdGhhdCBtZWFucyBhbm90aGVyIGNsaWVudCBoYXMgYWxyZWFkeSBjYWxsZWQKLSsJICogYWNjZXB0KCkgYW5kIGlzIHdhaXRpbmcgdG8gZXN0YWJsaXNoIHRoZSBuZXh0IGNvbm5lY3Rpb24sIHdoaWNoCi0rCSAqIG1lYW5zIHRoZSBmaXJzdCBjbGllbnQgaXMgZnJlZSB0byBnbyBpbmFjdGl2ZS4gT3RoZXJ3aXNlLAotKwkgKiB0aGUgZmlyc3QgY2xpZW50IG11c3QgY29tZSBiYWNrIGFuZCBjYWxsIGFjY2VwdCgpIGFnYWluOyB0aGlzCi0rCSAqIGd1YXJhbnRlZXMgdGhlcmUgd2lsbCBhbHdheXMgYmUgYXQgbGVhc3Qgb25lIGNsaWVudCBsaXN0ZW5pbmcKLSsJICogZm9yIG5ldyBUQ1AgY29ubmVjdGlvbnMgb24gZWFjaCBpbnRlcmZhY2UuCi0rCSAqLwotIAlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwY3VycmVudCsrOwotKwljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZysrOwotIAlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSB9Ci0gCi1AQCAtMzM5MCwxMyArMzU0NCwxNCBAQCBuc19jbGllbnRfcmVwbGFjZShuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCXRjcCA9IFRDUF9DTElFTlQoY2xpZW50KTsKLSAJaWYgKHRjcCAmJiBjbGllbnQtPnBpcGVsaW5lZCkgewotIAkJcmVzdWx0ID0gZ2V0X3dvcmtlcihjbGllbnQtPm1hbmFnZXIsIGNsaWVudC0+aW50ZXJmYWNlLAotLQkJCQkgICAgY2xpZW50LT50Y3Bzb2NrZXQpOwotKwkJCQkgICAgY2xpZW50LT50Y3Bzb2NrZXQsIGNsaWVudCk7Ci0gCX0gZWxzZSB7Ci0gCQlyZXN1bHQgPSBnZXRfY2xpZW50KGNsaWVudC0+bWFuYWdlciwgY2xpZW50LT5pbnRlcmZhY2UsCi0gCQkJCSAgICBjbGllbnQtPmRpc3BhdGNoLCB0Y3ApOwotIAl9Ci0tCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykKLSsJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKSB7Ci0gCQlyZXR1cm4gKHJlc3VsdCk7Ci0rCX0KLSAKLSAJLyoKLSAJICogVGhlIHJlc3BvbnNpYmlsaXR5IGZvciBsaXN0ZW5pbmcgZm9yIG5ldyByZXF1ZXN0cyBpcyBoZXJlYnkKLUBAIC0zNTg1LDYgKzM3NDAsNyBAQCBnZXRfY2xpZW50KG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLAotIAkJY2xpZW50LT5hdHRyaWJ1dGVzIHw9IE5TX0NMSUVOVEFUVFJfVENQOwotIAkJaXNjX3NvY2tldF9hdHRhY2goaWZwLT50Y3Bzb2NrZXQsCi0gCQkJCSAgJmNsaWVudC0+dGNwbGlzdGVuZXIpOwotKwotIAl9IGVsc2UgewotIAkJaXNjX3NvY2tldF90ICpzb2NrOwotIAotQEAgLTM2MDIsNyArMzc1OCw4IEBAIGdldF9jbGllbnQobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsCi0gfQotIAotIHN0YXRpYyBpc2NfcmVzdWx0X3QKLS1nZXRfd29ya2VyKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLCBpc2Nfc29ja2V0X3QgKnNvY2spCi0rZ2V0X3dvcmtlcihuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwgaXNjX3NvY2tldF90ICpzb2NrLAotKwkgICBuc19jbGllbnRfdCAqb2xkY2xpZW50KQotIHsKLSAJaXNjX3Jlc3VsdF90IHJlc3VsdCA9IElTQ19SX1NVQ0NFU1M7Ci0gCWlzY19ldmVudF90ICpldjsKLUBAIC0zNjEwLDYgKzM3NjcsNyBAQCBnZXRfd29ya2VyKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLCBpc2Nfc29ja2V0X3QgKnNvY2spCi0gCU1UUkFDRSgiZ2V0IHdvcmtlciIpOwotIAotIAlSRVFVSVJFKG1hbmFnZXIgIT0gTlVMTCk7Ci0rCVJFUVVJUkUob2xkY2xpZW50ICE9IE5VTEwpOwotIAotIAlpZiAobWFuYWdlci0+ZXhpdGluZykKLSAJCXJldHVybiAoSVNDX1JfU0hVVFRJTkdET1dOKTsKLUBAIC0zNjQyLDcgKzM4MDAsMjggQEAgZ2V0X3dvcmtlcihuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwgaXNjX3NvY2tldF90ICpzb2NrKQotIAluc19pbnRlcmZhY2VfYXR0YWNoKGlmcCwgJmNsaWVudC0+aW50ZXJmYWNlKTsKLSAJY2xpZW50LT5uZXdzdGF0ZSA9IGNsaWVudC0+c3RhdGUgPSBOU19DTElFTlRTVEFURV9XT1JLSU5HOwotIAlJTlNJU1QoY2xpZW50LT5yZWN1cnNpb25xdW90YSA9PSBOVUxMKTsKLS0JY2xpZW50LT50Y3BxdW90YSA9ICZuc19nX3NlcnZlci0+dGNwcXVvdGE7Ci0rCi0rCS8qCi0rCSAqIFRyYW5zZmVyIFRDUCBxdW90YSB0byB0aGUgbmV3IGNsaWVudC4KLSsJICovCi0rCUlOU0lTVChjbGllbnQtPnRjcHF1b3RhID09IE5VTEwpOwotKwlJTlNJU1Qob2xkY2xpZW50LT50Y3BxdW90YSAhPSBOVUxMKTsKLSsJY2xpZW50LT50Y3BxdW90YSA9IG9sZGNsaWVudC0+dGNwcXVvdGE7Ci0rCW9sZGNsaWVudC0+dGNwcXVvdGEgPSBOVUxMOwotKwotKwkvKgotKwkgKiBMaW5rIHRvIGEgcGlwZWxpbmUgZ3JvdXAsIGNyZWF0aW5nIGl0IGlmIG5lZWRlZC4KLSsJICovCi0rCWlmICghSVNDX0xJTktfTElOS0VEKG9sZGNsaWVudCwgZ2xpbmspKSB7Ci0rCQlvbGRjbGllbnQtPmdsaW5rLm5leHQgPSBOVUxMOwotKwkJb2xkY2xpZW50LT5nbGluay5wcmV2ID0gTlVMTDsKLSsJfQotKwljbGllbnQtPmdsaW5rLm5leHQgPSBvbGRjbGllbnQtPmdsaW5rLm5leHQ7Ci0rCWNsaWVudC0+Z2xpbmsucHJldiA9IG9sZGNsaWVudDsKLSsJaWYgKG9sZGNsaWVudC0+Z2xpbmsubmV4dCAhPSBOVUxMKSB7Ci0rCQlvbGRjbGllbnQtPmdsaW5rLm5leHQtPmdsaW5rLnByZXYgPSBjbGllbnQ7Ci0rCX0KLSsJb2xkY2xpZW50LT5nbGluay5uZXh0ID0gY2xpZW50OwotIAotIAljbGllbnQtPmRzY3AgPSBpZnAtPmRzY3A7Ci0gCi1AQCAtMzY1Niw2ICszODM1LDEyIEBAIGdldF93b3JrZXIobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsIGlzY19zb2NrZXRfdCAqc29jaykKLSAJKHZvaWQpaXNjX3NvY2tldF9nZXRwZWVybmFtZShjbGllbnQtPnRjcHNvY2tldCwgJmNsaWVudC0+cGVlcmFkZHIpOwotIAljbGllbnQtPnBlZXJhZGRyX3ZhbGlkID0gdHJ1ZTsKLSAKLSsJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSsrOwotKwlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsKLSsJY2xpZW50LT50Y3BhY3RpdmUgPSB0cnVlOwotKwotIAlJTlNJU1QoY2xpZW50LT50Y3Btc2dfdmFsaWQgPT0gZmFsc2UpOwotIAlkbnNfdGNwbXNnX2luaXQoY2xpZW50LT5tY3R4LCBjbGllbnQtPnRjcHNvY2tldCwgJmNsaWVudC0+dGNwbXNnKTsKLSAJY2xpZW50LT50Y3Btc2dfdmFsaWQgPSB0cnVlOwotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oIGIvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmgKLWluZGV4IGIyM2E3YjE5MWQuLjFmNzk3M2Y5YzUgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaAotKysrIGIvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmgKLUBAIC05NCw3ICs5NCw4IEBAIHN0cnVjdCBuc19jbGllbnQgewotIAlpbnQJCQludXBkYXRlczsKLSAJaW50CQkJbmN0bHM7Ci0gCWludAkJCXJlZmVyZW5jZXM7Ci0tCWJvb2wJCW5lZWRzaHV0ZG93bjsgCS8qCi0rCWJvb2wJCQl0Y3BhY3RpdmU7Ci0rCWJvb2wJCQluZWVkc2h1dGRvd247IAkvKgotIAkJCQkJCSAqIFVzZWQgYnkgY2xpZW50dGVzdCB0byBnZXQKLSAJCQkJCQkgKiB0aGUgY2xpZW50IHRvIGdvIGZyb20KLSAJCQkJCQkgKiBpbmFjdGl2ZSB0byBmcmVlIHN0YXRlCi1AQCAtMTMwLDkgKzEzMSw5IEBAIHN0cnVjdCBuc19jbGllbnQgewotIAlpc2Nfc3RkdGltZV90CQlub3c7Ci0gCWlzY190aW1lX3QJCXRub3c7Ci0gCWRuc19uYW1lX3QJCXNpZ25lcm5hbWU7ICAgLyolPCBbVF1TSUcga2V5IG5hbWUgKi8KLS0JZG5zX25hbWVfdCAqCQlzaWduZXI7CSAgICAgIC8qJTwgTlVMTCBpZiBub3QgdmFsaWQgc2lnICovCi0tCWJvb2wJCW1vcnRhbDsJICAgICAgLyolPCBEaWUgYWZ0ZXIgaGFuZGxpbmcgcmVxdWVzdCAqLwotLQlib29sCQlwaXBlbGluZWQ7ICAgLyolPCBUQ1AgcXVlcmllcyBub3QgaW4gc2VxdWVuY2UgKi8KLSsJZG5zX25hbWVfdAkJKnNpZ25lcjsgICAgICAvKiU8IE5VTEwgaWYgbm90IHZhbGlkIHNpZyAqLwotKwlib29sCQkJbW9ydGFsOwkgICAgICAvKiU8IERpZSBhZnRlciBoYW5kbGluZyByZXF1ZXN0ICovCi0rCWJvb2wJCQlwaXBlbGluZWQ7ICAgLyolPCBUQ1AgcXVlcmllcyBub3QgaW4gc2VxdWVuY2UgKi8KLSAJaXNjX3F1b3RhX3QJCSp0Y3BxdW90YTsKLSAJaXNjX3F1b3RhX3QJCSpyZWN1cnNpb25xdW90YTsKLSAJbnNfaW50ZXJmYWNlX3QJCSppbnRlcmZhY2U7Ci1AQCAtMTQzLDggKzE0NCw4IEBAIHN0cnVjdCBuc19jbGllbnQgewotIAlpc2Nfc29ja2FkZHJfdAkJZGVzdHNvY2thZGRyOwotIAotIAlpc2NfbmV0YWRkcl90CQllY3NfYWRkcjsJLyolPCBFRE5TIGNsaWVudCBzdWJuZXQgKi8KLS0JdWludDhfdAkJZWNzX2FkZHJsZW47Ci0tCXVpbnQ4X3QJCWVjc19zY29wZTsKLSsJdWludDhfdAkJCWVjc19hZGRybGVuOwotKwl1aW50OF90CQkJZWNzX3Njb3BlOwotIAotIAlzdHJ1Y3QgaW42X3BrdGluZm8JcGt0aW5mbzsKLSAJaXNjX2RzY3BfdAkJZHNjcDsKLUBAIC0xNjYsNiArMTY3LDcgQEAgc3RydWN0IG5zX2NsaWVudCB7Ci0gCi0gCUlTQ19MSU5LKG5zX2NsaWVudF90KQlsaW5rOwotIAlJU0NfTElOSyhuc19jbGllbnRfdCkJcmxpbms7Ci0rCUlTQ19MSU5LKG5zX2NsaWVudF90KQlnbGluazsKLSAJSVNDX1FMSU5LKG5zX2NsaWVudF90KQlpbGluazsKLSAJdW5zaWduZWQgY2hhcgkJY29va2llWzhdOwotIAl1aW50MzJfdAkJZXhwaXJlOwotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2ludGVyZmFjZW1nci5oIGIvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvaW50ZXJmYWNlbWdyLmgKLWluZGV4IDdkMTg4M2UxZTguLjYxYjA4ODI2YTYgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9pbnRlcmZhY2VtZ3IuaAotKysrIGIvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvaW50ZXJmYWNlbWdyLmgKLUBAIC03Nyw5ICs3NywxNCBAQCBzdHJ1Y3QgbnNfaW50ZXJmYWNlIHsKLSAJCQkJCQkvKiU8IFVEUCBkaXNwYXRjaGVycy4gKi8KLSAJaXNjX3NvY2tldF90ICoJCXRjcHNvY2tldDsJLyolPCBUQ1Agc29ja2V0LiAqLwotIAlpc2NfZHNjcF90CQlkc2NwOwkJLyolPCAibGlzdGVuLW9uIiBEU0NQIHZhbHVlICovCi0tCWludAkJCW50Y3B0YXJnZXQ7CS8qJTwgRGVzaXJlZCBudW1iZXIgb2YgY29uY3VycmVudAotLQkJCQkJCSAgICAgVENQIGFjY2VwdHMgKi8KLS0JaW50CQkJbnRjcGN1cnJlbnQ7CS8qJTwgQ3VycmVudCBkaXR0bywgbG9ja2VkICovCi0rCWludAkJCW50Y3BhY2NlcHRpbmc7CS8qJTwgTnVtYmVyIG9mIGNsaWVudHMKLSsJCQkJCQkgICAgIHJlYWR5IHRvIGFjY2VwdCBuZXcKLSsJCQkJCQkgICAgIFRDUCBjb25uZWN0aW9ucyBvbiB0aGlzCi0rCQkJCQkJICAgICBpbnRlcmZhY2UgKi8KLSsJaW50CQkJbnRjcGFjdGl2ZTsJLyolPCBOdW1iZXIgb2YgY2xpZW50cwotKwkJCQkJCSAgICAgc2VydmljaW5nIFRDUCBxdWVyaWVzCi0rCQkJCQkJICAgICAod2hldGhlciBhY2NlcHRpbmcgb3IKLSsJCQkJCQkgICAgIGNvbm5lY3RlZCkgKi8KLSAJaW50CQkJbnVkcGRpc3BhdGNoOwkvKiU8IE51bWJlciBvZiBVRFAgZGlzcGF0Y2hlcyAqLwotIAluc19jbGllbnRtZ3JfdCAqCWNsaWVudG1ncjsJLyolPCBDbGllbnQgbWFuYWdlci4gKi8KLSAJSVNDX0xJTksobnNfaW50ZXJmYWNlX3QpIGxpbms7Ci1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2ludGVyZmFjZW1nci5jIGIvYmluL25hbWVkL2ludGVyZmFjZW1nci5jCi1pbmRleCA0MTk5MjdiZjU0Li45NTUwOTZlZjQ3IDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2ludGVyZmFjZW1nci5jCi0rKysgYi9iaW4vbmFtZWQvaW50ZXJmYWNlbWdyLmMKLUBAIC0zODYsOCArMzg2LDggQEAgbnNfaW50ZXJmYWNlX2NyZWF0ZShuc19pbnRlcmZhY2VtZ3JfdCAqbWdyLCBpc2Nfc29ja2FkZHJfdCAqYWRkciwKLSAJICogY29ubmVjdGlvbnMgd2lsbCBiZSBoYW5kbGVkIGluIHBhcmFsbGVsIGV2ZW4gdGhvdWdoIHRoZXJlIGlzCi0gCSAqIG9ubHkgb25lIGNsaWVudCBpbml0aWFsbHkuCi0gCSAqLwotLQlpZnAtPm50Y3B0YXJnZXQgPSAxOwotLQlpZnAtPm50Y3BjdXJyZW50ID0gMDsKLSsJaWZwLT5udGNwYWNjZXB0aW5nID0gMDsKLSsJaWZwLT5udGNwYWN0aXZlID0gMDsKLSAJaWZwLT5udWRwZGlzcGF0Y2ggPSAwOwotIAotIAlpZnAtPmRzY3AgPSAtMTsKLUBAIC01MjIsOSArNTIyLDcgQEAgbnNfaW50ZXJmYWNlX2FjY2VwdHRjcChuc19pbnRlcmZhY2VfdCAqaWZwKSB7Ci0gCSAqLwotIAkodm9pZClpc2Nfc29ja2V0X2ZpbHRlcihpZnAtPnRjcHNvY2tldCwgImRhdGFyZWFkeSIpOwotIAotLQlyZXN1bHQgPSBuc19jbGllbnRtZ3JfY3JlYXRlY2xpZW50cyhpZnAtPmNsaWVudG1nciwKLS0JCQkJCSAgICBpZnAtPm50Y3B0YXJnZXQsIGlmcCwKLS0JCQkJCSAgICB0cnVlKTsKLSsJcmVzdWx0ID0gbnNfY2xpZW50bWdyX2NyZWF0ZWNsaWVudHMoaWZwLT5jbGllbnRtZ3IsIDEsIGlmcCwgdHJ1ZSk7Ci0gCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykgewotIAkJVU5FWFBFQ1RFRF9FUlJPUihfX0ZJTEVfXywgX19MSU5FX18sCi0gCQkJCSAiVENQIG5zX2NsaWVudG1ncl9jcmVhdGVjbGllbnRzKCk6ICVzIiwKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMy11c2UtcmVmZXJlbmNlLWNvdW50ZXItZm9yLXBpcGVsaW5lLWdyb3Vwcy12My5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMy11c2UtcmVmZXJlbmNlLWNvdW50ZXItZm9yLXBpcGVsaW5lLWdyb3Vwcy12My5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMyY2ZiOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDMtdXNlLXJlZmVyZW5jZS1jb3VudGVyLWZvci1waXBlbGluZS1ncm91cHMtdjMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNzggKzAsMCBAQAotQmFja3BvcnQgcGF0Y2ggdG8gZml4IENWRS0yMDE4LTU3NDMuCi0KLVJlZjoKLWh0dHBzOi8vc2VjdXJpdHktdHJhY2tlci5kZWJpYW4ub3JnL3RyYWNrZXIvQ1ZFLTIwMTgtNTc0MwotCi1DVkU6IENWRS0yMDE4LTU3NDMKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmlzYy5vcmcvaXNjLXByb2plY3RzL2JpbmQ5L2NvbW1pdC8zNjZiNGUxXQotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLQotRnJvbSAzNjZiNGUxZWRlOGFlZDY5MGU5ODFlMDcxMzdjYjFjYjc3ODc5YzM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP01pY2hhPUM1PTgyPTIwSz1DND05OXBpZT1DNT04ND89IDxtaWNoYWxAaXNjLm9yZz4KLURhdGU6IFRodSwgMTcgSmFuIDIwMTkgMTU6NTM6MzggKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzZdIHVzZSByZWZlcmVuY2UgY291bnRlciBmb3IgcGlwZWxpbmUgZ3JvdXBzICh2MykKLQotVHJhY2sgcGlwZWxpbmUgZ3JvdXBzIHVzaW5nIGEgc2hhcmVkIHJlZmVyZW5jZSBjb3VudGVyCi1pbnN0ZWFkIG9mIGEgbGlua2VkIGxpc3QuCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDUxM2FmZDMzZWIxN2Q1ZGM0MWEzZjBkMmQzODIwNGVmOGM1ZjZmOTEpCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA5NDQ2NjI5YjczMGM1OWM0MjE1ZjA4ZDM3ZmJhZjgxMDI4MmZiY2NiKQotLS0tCi0gYmluL25hbWVkL2NsaWVudC5jICAgICAgICAgICAgICAgfCAxNzEgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQotIGJpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oIHwgICAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgNjMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvY2xpZW50LmMgYi9iaW4vbmFtZWQvY2xpZW50LmMKLWluZGV4IGE3YjQ5YTBmNzEuLjI3NzY1NmNlZjAgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvY2xpZW50LmMKLSsrKyBiL2Jpbi9uYW1lZC9jbGllbnQuYwotQEAgLTI5OSw2ICsyOTksNzUgQEAgbnNfY2xpZW50X3NldHRpbWVvdXQobnNfY2xpZW50X3QgKmNsaWVudCwgdW5zaWduZWQgaW50IHNlY29uZHMpIHsKLSAJfQotIH0KLSAKLSsvKiUKLSsgKiBBbGxvY2F0ZSBhIHJlZmVyZW5jZSBjb3VudGVyIHRoYXQgd2lsbCB0cmFjayB0aGUgbnVtYmVyIG9mIGNsaWVudCBzdHJ1Y3R1cmVzCi0rICogdXNpbmcgdGhlIFRDUCBjb25uZWN0aW9uIHRoYXQgJ2NsaWVudCcgY2FsbGVkIGFjY2VwdCgpIGZvci4gIFRoaXMgY291bnRlcgotKyAqIHdpbGwgYmUgc2hhcmVkIGJldHdlZW4gYWxsIGNsaWVudCBzdHJ1Y3R1cmVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFRDUAotKyAqIGNvbm5lY3Rpb24uCi0rICovCi0rc3RhdGljIHZvaWQKLStwaXBlbGluZV9pbml0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSsJaXNjX3JlZmNvdW50X3QgKnJlZnM7Ci0rCi0rCVJFUVVJUkUoY2xpZW50LT5waXBlbGluZV9yZWZzID09IE5VTEwpOwotKwotKwkvKgotKwkgKiBBIGdsb2JhbCBtZW1vcnkgY29udGV4dCBpcyB1c2VkIGZvciB0aGUgYWxsb2NhdGlvbiBhcyBkaWZmZXJlbnQKLSsJICogY2xpZW50IHN0cnVjdHVyZXMgbWF5IGhhdmUgZGlmZmVyZW50IG1lbW9yeSBjb250ZXh0cyBhc3NpZ25lZCBhbmQgYQotKwkgKiByZWZlcmVuY2UgY291bnRlciBhbGxvY2F0ZWQgaGVyZSBtaWdodCBuZWVkIHRvIGJlIGZyZWVkIGJ5IGEKLSsJICogZGlmZmVyZW50IGNsaWVudC4gIFRoZSBwZXJmb3JtYW5jZSBpbXBhY3QgY2F1c2VkIGJ5IG1lbW9yeSBjb250ZXh0Ci0rCSAqIGNvbnRlbnRpb24gaGVyZSBpcyBleHBlY3RlZCB0byBiZSBuZWdsaWdpYmxlLCBnaXZlbiB0aGF0IHRoaXMgY29kZQotKwkgKiBpcyBvbmx5IGV4ZWN1dGVkIGZvciBUQ1AgY29ubmVjdGlvbnMuCi0rCSAqLwotKwlyZWZzID0gaXNjX21lbV9hbGxvY2F0ZShjbGllbnQtPnNjdHgtPm1jdHgsIHNpemVvZigqcmVmcykpOwotKwlpc2NfcmVmY291bnRfaW5pdChyZWZzLCAxKTsKLSsJY2xpZW50LT5waXBlbGluZV9yZWZzID0gcmVmczsKLSt9Ci0rCi0rLyolCi0rICogSW5jcmVhc2UgdGhlIGNvdW50IG9mIGNsaWVudCBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBUQ1AgY29ubmVjdGlvbiB0aGF0Ci0rICogJ3NvdXJjZScgaXMgYXNzb2NpYXRlZCB3aXRoIGFuZCBwdXQgYSBwb2ludGVyIHRvIHRoYXQgY291bnQgaW4gJ3RhcmdldCcsCi0rICogdGh1cyBhc3NvY2lhdGluZyBpdCB3aXRoIHRoZSBzYW1lIFRDUCBjb25uZWN0aW9uLgotKyAqLwotK3N0YXRpYyB2b2lkCi0rcGlwZWxpbmVfYXR0YWNoKG5zX2NsaWVudF90ICpzb3VyY2UsIG5zX2NsaWVudF90ICp0YXJnZXQpIHsKLSsJaW50IG9sZF9yZWZzOwotKwotKwlSRVFVSVJFKHNvdXJjZS0+cGlwZWxpbmVfcmVmcyAhPSBOVUxMKTsKLSsJUkVRVUlSRSh0YXJnZXQtPnBpcGVsaW5lX3JlZnMgPT0gTlVMTCk7Ci0rCi0rCW9sZF9yZWZzID0gaXNjX3JlZmNvdW50X2luY3JlbWVudChzb3VyY2UtPnBpcGVsaW5lX3JlZnMpOwotKwlJTlNJU1Qob2xkX3JlZnMgPiAwKTsKLSsJdGFyZ2V0LT5waXBlbGluZV9yZWZzID0gc291cmNlLT5waXBlbGluZV9yZWZzOwotK30KLSsKLSsvKiUKLSsgKiBEZWNyZWFzZSB0aGUgY291bnQgb2YgY2xpZW50IHN0cnVjdHVyZXMgdXNpbmcgdGhlIFRDUCBjb25uZWN0aW9uIHRoYXQKLSsgKiAnY2xpZW50JyBpcyBhc3NvY2lhdGVkIHdpdGguICBJZiB0aGlzIGlzIHRoZSBsYXN0IGNsaWVudCB1c2luZyB0aGlzIFRDUAotKyAqIGNvbm5lY3Rpb24sIGZyZWUgdGhlIHJlZmVyZW5jZSBjb3VudGVyIGFuZCByZXR1cm4gdHJ1ZTsgb3RoZXJ3aXNlLCByZXR1cm4KLSsgKiBmYWxzZS4KLSsgKi8KLStzdGF0aWMgYm9vbAotK3BpcGVsaW5lX2RldGFjaChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0rCWlzY19yZWZjb3VudF90ICpyZWZzOwotKwlpbnQgb2xkX3JlZnM7Ci0rCi0rCVJFUVVJUkUoY2xpZW50LT5waXBlbGluZV9yZWZzICE9IE5VTEwpOwotKwotKwlyZWZzID0gY2xpZW50LT5waXBlbGluZV9yZWZzOwotKwljbGllbnQtPnBpcGVsaW5lX3JlZnMgPSBOVUxMOwotKwotKwlvbGRfcmVmcyA9IGlzY19yZWZjb3VudF9kZWNyZW1lbnQocmVmcyk7Ci0rCUlOU0lTVChvbGRfcmVmcyA+IDApOwotKwotKwlpZiAob2xkX3JlZnMgPT0gMSkgewotKwkJaXNjX21lbV9mcmVlKGNsaWVudC0+c2N0eC0+bWN0eCwgcmVmcyk7Ci0rCQlyZXR1cm4gKHRydWUpOwotKwl9Ci0rCi0rCXJldHVybiAoZmFsc2UpOwotK30KLSsKLSAvKiUKLSAgKiBDaGVjayBmb3IgYSBkZWFjdGl2YXRpb24gb3Igc2h1dGRvd24gcmVxdWVzdCBhbmQgdGFrZSBhcHByb3ByaWF0ZQotICAqIGFjdGlvbi4gIFJldHVybnMgdHJ1ZSBpZiBlaXRoZXIgaXMgaW4gcHJvZ3Jlc3M7IGluIHRoaXMgY2FzZQotQEAgLTQyMSw2ICs0OTAsNDAgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkJY2xpZW50LT50Y3Btc2dfdmFsaWQgPSBmYWxzZTsKLSAJCX0KLSAKLSsJCWlmIChjbGllbnQtPnRjcHF1b3RhICE9IE5VTEwpIHsKLSsJCQlpZiAoY2xpZW50LT5waXBlbGluZV9yZWZzID09IE5VTEwgfHwKLSsJCQkgICAgcGlwZWxpbmVfZGV0YWNoKGNsaWVudCkpCi0rCQkJewotKwkJCQkvKgotKwkJCQkgKiBPbmx5IGRldGFjaCBmcm9tIHRoZSBUQ1AgY2xpZW50IHF1b3RhIGlmCi0rCQkJCSAqIHRoZXJlIGFyZSBubyBtb3JlIGNsaWVudCBzdHJ1Y3R1cmVzIHVzaW5nCi0rCQkJCSAqIHRoaXMgVENQIGNvbm5lY3Rpb24uCi0rCQkJCSAqCi0rCQkJCSAqIE5vdGUgdGhhdCB3ZSBjaGVjayAncGlwZWxpbmVfcmVmcycgYW5kIG5vdAotKwkJCQkgKiAncGlwZWxpbmVkJyBiZWNhdXNlIGluIHNvbWUgY2FzZXMgKGUuZy4KLSsJCQkJICogYWZ0ZXIgcmVjZWl2aW5nIGEgcmVxdWVzdCB3aXRoIGFuIG9wY29kZQotKwkJCQkgKiBkaWZmZXJlbnQgdGhhbiBRVUVSWSkgJ3BpcGVsaW5lZCcgaXMgc2V0IHRvCi0rCQkJCSAqIGZhbHNlIGFmdGVyIHRoZSByZWZlcmVuY2UgY291bnRlciBnZXRzCi0rCQkJCSAqIGFsbG9jYXRlZCBpbiBwaXBlbGluZV9pbml0KCkgYW5kIHdlIG11c3QKLSsJCQkJICogc3RpbGwgZHJvcCBvdXIgcmVmZXJlbmNlIGFzIGZhaWxpbmcgdG8gZG8gc28KLSsJCQkJICogd291bGQgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50ZXIgaXRzZWxmCi0rCQkJCSAqIGZyb20gYmVpbmcgZnJlZWQuCi0rCQkJCSAqLwotKwkJCQlpc2NfcXVvdGFfZGV0YWNoKCZjbGllbnQtPnRjcHF1b3RhKTsKLSsJCQl9IGVsc2UgewotKwkJCQkvKgotKwkJCQkgKiBUaGVyZSBhcmUgb3RoZXIgY2xpZW50IHN0cnVjdHVyZXMgdXNpbmcgdGhpcwotKwkJCQkgKiBUQ1AgY29ubmVjdGlvbiwgc28gd2UgY2Fubm90IGRldGFjaCBmcm9tIHRoZQotKwkJCQkgKiBUQ1AgY2xpZW50IHF1b3RhIHRvIHByZXZlbnQgZXhjZXNzIFRDUAotKwkJCQkgKiBjb25uZWN0aW9ucyBmcm9tIGJlaW5nIGFjY2VwdGVkLiAgSG93ZXZlciwKLSsJCQkJICogdGhpcyBjbGllbnQgc3RydWN0dXJlIG1pZ2h0IGxhdGVyIGJlIHJldXNlZAotKwkJCQkgKiBmb3IgYWNjZXB0aW5nIG5ldyBjb25uZWN0aW9ucyBhbmQgdGh1cyBtdXN0Ci0rCQkJCSAqIGhhdmUgaXRzICd0Y3BxdW90YScgZmllbGQgc2V0IHRvIE5VTEwuCi0rCQkJCSAqLwotKwkJCQljbGllbnQtPnRjcHF1b3RhID0gTlVMTDsKLSsJCQl9Ci0rCQl9Ci0rCi0gCQlpZiAoY2xpZW50LT50Y3Bzb2NrZXQgIT0gTlVMTCkgewotIAkJCUNUUkFDRSgiY2xvc2V0Y3AiKTsKLSAJCQlpc2Nfc29ja2V0X2RldGFjaCgmY2xpZW50LT50Y3Bzb2NrZXQpOwotQEAgLTQzNCw0NCArNTM3LDYgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkJfQotIAkJfQotIAotLQkJaWYgKGNsaWVudC0+dGNwcXVvdGEgIT0gTlVMTCkgewotLQkJCS8qCi0tCQkJICogSWYgd2UgYXJlIG5vdCBpbiBhIHBpcGVsaW5lIGdyb3VwLCBvcgotLQkJCSAqIHdlIGFyZSB0aGUgbGFzdCBjbGllbnQgaW4gdGhlIGdyb3VwLCBkZXRhY2ggZnJvbQotLQkJCSAqIHRjcHF1b3RhOyBvdGhlcndpc2UsIHRyYW5zZmVyIHRoZSBxdW90YSB0bwotLQkJCSAqIGFub3RoZXIgY2xpZW50IGluIHRoZSBzYW1lIGdyb3VwLgotLQkJCSAqLwotLQkJCWlmICghSVNDX0xJTktfTElOS0VEKGNsaWVudCwgZ2xpbmspIHx8Ci0tCQkJICAgIChjbGllbnQtPmdsaW5rLm5leHQgPT0gTlVMTCAmJgotLQkJCSAgICAgY2xpZW50LT5nbGluay5wcmV2ID09IE5VTEwpKQotLQkJCXsKLS0JCQkJaXNjX3F1b3RhX2RldGFjaCgmY2xpZW50LT50Y3BxdW90YSk7Ci0tCQkJfSBlbHNlIGlmIChjbGllbnQtPmdsaW5rLm5leHQgIT0gTlVMTCkgewotLQkJCQlJTlNJU1QoY2xpZW50LT5nbGluay5uZXh0LT50Y3BxdW90YSA9PSBOVUxMKTsKLS0JCQkJY2xpZW50LT5nbGluay5uZXh0LT50Y3BxdW90YSA9IGNsaWVudC0+dGNwcXVvdGE7Ci0tCQkJCWNsaWVudC0+dGNwcXVvdGEgPSBOVUxMOwotLQkJCX0gZWxzZSB7Ci0tCQkJCUlOU0lTVChjbGllbnQtPmdsaW5rLnByZXYtPnRjcHF1b3RhID09IE5VTEwpOwotLQkJCQljbGllbnQtPmdsaW5rLnByZXYtPnRjcHF1b3RhID0gY2xpZW50LT50Y3BxdW90YTsKLS0JCQkJY2xpZW50LT50Y3BxdW90YSA9IE5VTEw7Ci0tCQkJfQotLQkJfQotLQotLQkJLyoKLS0JCSAqIFVubGluayBmcm9tIHBpcGVsaW5lIGdyb3VwLgotLQkJICovCi0tCQlpZiAoSVNDX0xJTktfTElOS0VEKGNsaWVudCwgZ2xpbmspKSB7Ci0tCQkJaWYgKGNsaWVudC0+Z2xpbmsubmV4dCAhPSBOVUxMKSB7Ci0tCQkJCWNsaWVudC0+Z2xpbmsubmV4dC0+Z2xpbmsucHJldiA9Ci0tCQkJCQljbGllbnQtPmdsaW5rLnByZXY7Ci0tCQkJfQotLQkJCWlmIChjbGllbnQtPmdsaW5rLnByZXYgIT0gTlVMTCkgewotLQkJCQljbGllbnQtPmdsaW5rLnByZXYtPmdsaW5rLm5leHQgPQotLQkJCQkJY2xpZW50LT5nbGluay5uZXh0OwotLQkJCX0KLS0JCQlJU0NfTElOS19JTklUKGNsaWVudCwgZ2xpbmspOwotLQkJfQotLQotIAkJaWYgKGNsaWVudC0+dGltZXJzZXQpIHsKLSAJCQkodm9pZClpc2NfdGltZXJfcmVzZXQoY2xpZW50LT50aW1lciwKLSAJCQkJCSAgICAgIGlzY190aW1lcnR5cGVfaW5hY3RpdmUsCi1AQCAtMzEzMCw2ICszMTk1LDcgQEAgY2xpZW50X2NyZWF0ZShuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfY2xpZW50X3QgKipjbGllbnRwKSB7Ci0gCWRuc19uYW1lX2luaXQoJmNsaWVudC0+c2lnbmVybmFtZSwgTlVMTCk7Ci0gCWNsaWVudC0+bW9ydGFsID0gZmFsc2U7Ci0gCWNsaWVudC0+cGlwZWxpbmVkID0gZmFsc2U7Ci0rCWNsaWVudC0+cGlwZWxpbmVfcmVmcyA9IE5VTEw7Ci0gCWNsaWVudC0+dGNwcXVvdGEgPSBOVUxMOwotIAljbGllbnQtPnJlY3Vyc2lvbnF1b3RhID0gTlVMTDsKLSAJY2xpZW50LT5pbnRlcmZhY2UgPSBOVUxMOwotQEAgLTMxNTQsNyArMzIyMCw2IEBAIGNsaWVudF9jcmVhdGUobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2NsaWVudF90ICoqY2xpZW50cCkgewotIAljbGllbnQtPmZvcm1lcnJjYWNoZS5pZCA9IDA7Ci0gCUlTQ19MSU5LX0lOSVQoY2xpZW50LCBsaW5rKTsKLSAJSVNDX0xJTktfSU5JVChjbGllbnQsIHJsaW5rKTsKLS0JSVNDX0xJTktfSU5JVChjbGllbnQsIGdsaW5rKTsKLSAJSVNDX1FMSU5LX0lOSVQoY2xpZW50LCBpbGluayk7Ci0gCWNsaWVudC0+a2V5dGFnID0gTlVMTDsKLSAJY2xpZW50LT5rZXl0YWdfbGVuID0gMDsKLUBAIC0zMzQxLDYgKzM0MDYsNyBAQCBjbGllbnRfbmV3Y29ubihpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJCSAgICAgIWFsbG93ZWQoJm5ldGFkZHIsIE5VTEwsIE5VTEwsIDAsIE5VTEwsCi0gCQkJICAgICAgbnNfZ19zZXJ2ZXItPmtlZXByZXNwb3JkZXIpKSkKLSAJCXsKLSsJCQlwaXBlbGluZV9pbml0KGNsaWVudCk7Ci0gCQkJY2xpZW50LT5waXBlbGluZWQgPSB0cnVlOwotIAkJfQotIAotQEAgLTM4MDAsMzUgKzM4NjYsMTYgQEAgZ2V0X3dvcmtlcihuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwgaXNjX3NvY2tldF90ICpzb2NrLAotIAluc19pbnRlcmZhY2VfYXR0YWNoKGlmcCwgJmNsaWVudC0+aW50ZXJmYWNlKTsKLSAJY2xpZW50LT5uZXdzdGF0ZSA9IGNsaWVudC0+c3RhdGUgPSBOU19DTElFTlRTVEFURV9XT1JLSU5HOwotIAlJTlNJU1QoY2xpZW50LT5yZWN1cnNpb25xdW90YSA9PSBOVUxMKTsKLS0KLS0JLyoKLS0JICogVHJhbnNmZXIgVENQIHF1b3RhIHRvIHRoZSBuZXcgY2xpZW50LgotLQkgKi8KLS0JSU5TSVNUKGNsaWVudC0+dGNwcXVvdGEgPT0gTlVMTCk7Ci0tCUlOU0lTVChvbGRjbGllbnQtPnRjcHF1b3RhICE9IE5VTEwpOwotLQljbGllbnQtPnRjcHF1b3RhID0gb2xkY2xpZW50LT50Y3BxdW90YTsKLS0Jb2xkY2xpZW50LT50Y3BxdW90YSA9IE5VTEw7Ci0tCi0tCS8qCi0tCSAqIExpbmsgdG8gYSBwaXBlbGluZSBncm91cCwgY3JlYXRpbmcgaXQgaWYgbmVlZGVkLgotLQkgKi8KLS0JaWYgKCFJU0NfTElOS19MSU5LRUQob2xkY2xpZW50LCBnbGluaykpIHsKLS0JCW9sZGNsaWVudC0+Z2xpbmsubmV4dCA9IE5VTEw7Ci0tCQlvbGRjbGllbnQtPmdsaW5rLnByZXYgPSBOVUxMOwotLQl9Ci0tCWNsaWVudC0+Z2xpbmsubmV4dCA9IG9sZGNsaWVudC0+Z2xpbmsubmV4dDsKLS0JY2xpZW50LT5nbGluay5wcmV2ID0gb2xkY2xpZW50OwotLQlpZiAob2xkY2xpZW50LT5nbGluay5uZXh0ICE9IE5VTEwpIHsKLS0JCW9sZGNsaWVudC0+Z2xpbmsubmV4dC0+Z2xpbmsucHJldiA9IGNsaWVudDsKLS0JfQotLQlvbGRjbGllbnQtPmdsaW5rLm5leHQgPSBjbGllbnQ7Ci0rCWNsaWVudC0+dGNwcXVvdGEgPSAmY2xpZW50LT5zY3R4LT50Y3BxdW90YTsKLSAKLSAJY2xpZW50LT5kc2NwID0gaWZwLT5kc2NwOwotIAotIAljbGllbnQtPmF0dHJpYnV0ZXMgfD0gTlNfQ0xJRU5UQVRUUl9UQ1A7Ci0tCWNsaWVudC0+cGlwZWxpbmVkID0gdHJ1ZTsKLSAJY2xpZW50LT5tb3J0YWwgPSB0cnVlOwotIAotKwlwaXBlbGluZV9hdHRhY2gob2xkY2xpZW50LCBjbGllbnQpOwotKwljbGllbnQtPnBpcGVsaW5lZCA9IHRydWU7Ci0rCi0gCWlzY19zb2NrZXRfYXR0YWNoKGlmcC0+dGNwc29ja2V0LCAmY2xpZW50LT50Y3BsaXN0ZW5lcik7Ci0gCWlzY19zb2NrZXRfYXR0YWNoKHNvY2ssICZjbGllbnQtPnRjcHNvY2tldCk7Ci0gCWlzY19zb2NrZXRfc2V0bmFtZShjbGllbnQtPnRjcHNvY2tldCwgIndvcmtlci10Y3AiLCBOVUxMKTsKLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaCBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oCi1pbmRleCAxZjc5NzNmOWM1Li5hZWVkOWNjZGRhIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmgKLSsrKyBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oCi1AQCAtMTM0LDYgKzEzNCw3IEBAIHN0cnVjdCBuc19jbGllbnQgewotIAlkbnNfbmFtZV90CQkqc2lnbmVyOyAgICAgIC8qJTwgTlVMTCBpZiBub3QgdmFsaWQgc2lnICovCi0gCWJvb2wJCQltb3J0YWw7CSAgICAgIC8qJTwgRGllIGFmdGVyIGhhbmRsaW5nIHJlcXVlc3QgKi8KLSAJYm9vbAkJCXBpcGVsaW5lZDsgICAvKiU8IFRDUCBxdWVyaWVzIG5vdCBpbiBzZXF1ZW5jZSAqLwotKwlpc2NfcmVmY291bnRfdAkJKnBpcGVsaW5lX3JlZnM7Ci0gCWlzY19xdW90YV90CQkqdGNwcXVvdGE7Ci0gCWlzY19xdW90YV90CQkqcmVjdXJzaW9ucXVvdGE7Ci0gCW5zX2ludGVyZmFjZV90CQkqaW50ZXJmYWNlOwotQEAgLTE2Nyw3ICsxNjgsNiBAQCBzdHJ1Y3QgbnNfY2xpZW50IHsKLSAKLSAJSVNDX0xJTksobnNfY2xpZW50X3QpCWxpbms7Ci0gCUlTQ19MSU5LKG5zX2NsaWVudF90KQlybGluazsKLS0JSVNDX0xJTksobnNfY2xpZW50X3QpCWdsaW5rOwotIAlJU0NfUUxJTksobnNfY2xpZW50X3QpCWlsaW5rOwotIAl1bnNpZ25lZCBjaGFyCQljb29raWVbOF07Ci0gCXVpbnQzMl90CQlleHBpcmU7Ci0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDQtYmV0dGVyLXRjcHF1b3RhLWFjY291bnRpbmctYW5kLWNsaWVudC1tb3J0YWxpdHktY2hlYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwNC1iZXR0ZXItdGNwcXVvdGEtYWNjb3VudGluZy1hbmQtY2xpZW50LW1vcnRhbGl0eS1jaGVjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzRhYjEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwNC1iZXR0ZXItdGNwcXVvdGEtYWNjb3VudGluZy1hbmQtY2xpZW50LW1vcnRhbGl0eS1jaGVjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEyICswLDAgQEAKLUJhY2twb3J0IHBhdGNoIHRvIGZpeCBDVkUtMjAxOC01NzQzLgotCi1SZWY6Ci1odHRwczovL3NlY3VyaXR5LXRyYWNrZXIuZGViaWFuLm9yZy90cmFja2VyL0NWRS0yMDE4LTU3NDMKLQotQ1ZFOiBDVkUtMjAxOC01NzQzCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5pc2Mub3JnL2lzYy1wcm9qZWN0cy9iaW5kOS9jb21taXQvMmFiOGEwOF0KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLUZyb20gMmFiOGEwODViM2M2NjZmMjhmMWY5MjI5YmQ2ZWNiNTk5MTViMjZjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEV2YW4gSHVudCA8ZWFjaEBpc2Mub3JnPgotRGF0ZTogRnJpLCA1IEFwciAyMDE5IDE2OjEyOjE4IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggNC82XSBiZXR0ZXIgdGNwcXVvdGEgYWNjb3VudGluZyBhbmQgY2xpZW50IG1vcnRhbGl0eSBjaGVja3MKLQotLSBlbnN1cmUgdGhhdCB0Y3BhY3RpdmUgaXMgY2xlYW5lZCB1cCBjb3JyZWN0bHkgd2hlbiBhY2NlcHQoKSBmYWlscy4KLS0gc2V0ICdjbGllbnQtPnRjcGF0dGFjaGVkJyB3aGVuIHRoZSBjbGllbnQgaXMgYXR0YWNoZWQgdG8gdGhlIHRjcHF1b3RhLgotICBjYXJyeSB0aGlzIHZhbHVlIG9uIHRvIG5ldyBjbGllbnRzIHNoYXJpbmcgdGhlIHNhbWUgcGlwZWxpbmUgZ3JvdXAuCi0gIGRvbid0IGNhbGwgaXNjX3F1b3RhX2RldGFjaCgpIG9uIHRoZSB0Y3BxdW90YSB1bmxlc3MgdGNwYXR0YWNoZWQgaXMKLSAgc2V0LiAgdGhpcyB3YXkgY2xpZW50cyB0aGF0IHdlcmUgYWxsb3dlZCB0byBhY2NlcHQgVENQIGNvbm5lY3Rpb25zCi0gIGRlc3BpdGUgYmVpbmcgb3ZlciBxdW90YSAoYW5kIHRoZXJlZm9yZSwgd2VyZSBuZXZlciBhdHRhY2hlZCB0byB0aGUKLSAgcXVvdGEpIHdpbGwgbm90IGluYWR2ZXJ0ZW50bHkgZGV0YWNoIGZyb20gaXQgYW5kIG1lc3MgdXAgdGhlCi0gIGFjY291bnRpbmcuCi0tIHNpbXBsaWZ5IHRoZSBjb2RlIGZvciB0Y3BxdW90YSBkaXNjb25uZWN0aW9uIGJ5IHVzaW5nIGEgbmV3IGZ1bmN0aW9uCi0gIHRjcHF1b3RhX2Rpc2Nvbm5lY3QoKS4KLS0gYmVmb3JlIGRlY2lkaW5nIHdoZXRoZXIgdG8gcmVqZWN0IGEgbmV3IGNvbm5lY3Rpb24gZHVlIHRvIHF1b3RhCi0gIGV4aGF1c3Rpb24sIGNoZWNrIHRvIHNlZSB3aGV0aGVyIHRoZXJlIGFyZSBhdCBsZWFzdCB0d28gYWN0aXZlCi0gIGNsaWVudHMuIHByZXZpb3VzbHksIHRoaXMgd2FzICJhdCBsZWFzdCBvbmUiLCBidXQgdGhhdCBjb3VsZCBiZQotICBpbnN1ZmZpY2llbnQgaWYgdGhlcmUgd2FzIG9uZSBvdGhlciBjbGllbnQgaW4gUkVBRElORyBzdGF0ZSAod2FpdGluZwotICBmb3IgbWVzc2FnZXMgb24gYW4gb3BlbiBjb25uZWN0aW9uKSBidXQgbm9uZSBpbiBSRUFEWSAobGlzdGVuaW5nCi0gIGZvciBuZXcgY29ubmVjdGlvbnMpLgotLSBiZWZvcmUgZGVjaWRpbmcgd2hldGhlciBhIFRDUCBjbGllbnQgb2JqZWN0IGNhbiB0byBnbyBpbmFjdGl2ZSwgd2UKLSAgbXVzdCBlbnN1cmUgdGhlcmUgYXJlIGVub3VnaCBvdGhlciBjbGllbnRzIHRvIG1haW50YWluIHNlcnZpY2UKLSAgYWZ0ZXJ3YXJkIC0tIGJvdGggYWNjZXB0aW5nIG5ldyBjb25uZWN0aW9ucyBhbmQgcmVhZGluZy9wcm9jZXNzaW5nIG5ldwotICBxdWVyaWVzLiAgQSBUQ1AgY2xpZW50IGNhbid0IHNodXQgZG93biB1bmxlc3MgYXQgbGVhc3Qgb25lCi0gIGNsaWVudCBpcyBhY2NlcHRpbmcgbmV3IGNvbm5lY3Rpb25zIGFuZCAoaW4gdGhlIGNhc2Ugb2YgcGlwZWxpbmVkCi0gIGNsaWVudHMpIGF0IGxlYXN0IG9uZSBhZGRpdGlvbmFsIGNsaWVudCBpcyB3YWl0aW5nIHRvIHJlYWQuCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGM3Mzk0NzM4YjI0NDVjMTZmNzI4YTg4Mzk0ODY0ZGQ2MWJhYWQ5MDApCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBlOTY1ZDVmMTFkM2QwZjZkNTk3MDRlNjE0ZmNlY2EyMDkzY2IxODU2KQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgODdkNDMxMTYxNDUwNzc3ZWEwOTM4MjEyMTJhYmZiNTJkNTFiMzZlMykKLS0tLQotIGJpbi9uYW1lZC9jbGllbnQuYyAgICAgICAgICAgICAgIHwgMjQ0ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KLSBiaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaCB8ICAgMyArLQotIDIgZmlsZXMgY2hhbmdlZCwgMTUyIGluc2VydGlvbnMoKyksIDk1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2NsaWVudC5jIGIvYmluL25hbWVkL2NsaWVudC5jCi1pbmRleCAyNzc2NTZjZWYwLi42MWU5NmRkMjhjIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2NsaWVudC5jCi0rKysgYi9iaW4vbmFtZWQvY2xpZW50LmMKLUBAIC0yNDQsMTMgKzI0NCwxNCBAQCBzdGF0aWMgdm9pZCBjbGllbnRfc3RhcnQoaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KTsKLSBzdGF0aWMgdm9pZCBjbGllbnRfcmVxdWVzdChpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpOwotIHN0YXRpYyB2b2lkIG5zX2NsaWVudF9kdW1wbWVzc2FnZShuc19jbGllbnRfdCAqY2xpZW50LCBjb25zdCBjaGFyICpyZWFzb24pOwotIHN0YXRpYyBpc2NfcmVzdWx0X3QgZ2V0X2NsaWVudChuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwKLS0JCQkgICAgICAgZG5zX2Rpc3BhdGNoX3QgKmRpc3AsIGJvb2wgdGNwKTsKLSsJCQkgICAgICAgZG5zX2Rpc3BhdGNoX3QgKmRpc3AsIG5zX2NsaWVudF90ICpvbGRjbGllbnQsCi0rCQkJICAgICAgIGJvb2wgdGNwKTsKLSBzdGF0aWMgaXNjX3Jlc3VsdF90IGdldF93b3JrZXIobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsCi0gCQkJICAgICAgIGlzY19zb2NrZXRfdCAqc29jaywgbnNfY2xpZW50X3QgKm9sZGNsaWVudCk7Ci0gc3RhdGljIGlubGluZSBib29sCi0gYWxsb3dlZChpc2NfbmV0YWRkcl90ICphZGRyLCBkbnNfbmFtZV90ICpzaWduZXIsCi0gCWlzY19uZXRhZGRyX3QgKmVjc19hZGRyLCB1aW50OF90IGVjc19hZGRybGVuLAotLQl1aW50OF90ICplY3Nfc2NvcGUsIGRuc19hY2xfdCAqYWNsKQotKwl1aW50OF90ICplY3Nfc2NvcGUsIGRuc19hY2xfdCAqYWNsKTsKLSBzdGF0aWMgdm9pZCBjb21wdXRlX2Nvb2tpZShuc19jbGllbnRfdCAqY2xpZW50LCB1aW50MzJfdCB3aGVuLAotIAkJCSAgIHVpbnQzMl90IG5vbmNlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzZWNyZXQsCi0gCQkJICAgaXNjX2J1ZmZlcl90ICpidWYpOwotQEAgLTMxOSw3ICszMjAsNyBAQCBwaXBlbGluZV9pbml0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJICogY29udGVudGlvbiBoZXJlIGlzIGV4cGVjdGVkIHRvIGJlIG5lZ2xpZ2libGUsIGdpdmVuIHRoYXQgdGhpcyBjb2RlCi0gCSAqIGlzIG9ubHkgZXhlY3V0ZWQgZm9yIFRDUCBjb25uZWN0aW9ucy4KLSAJICovCi0tCXJlZnMgPSBpc2NfbWVtX2FsbG9jYXRlKGNsaWVudC0+c2N0eC0+bWN0eCwgc2l6ZW9mKCpyZWZzKSk7Ci0rCXJlZnMgPSBpc2NfbWVtX2FsbG9jYXRlKG5zX2dfbWN0eCwgc2l6ZW9mKCpyZWZzKSk7Ci0gCWlzY19yZWZjb3VudF9pbml0KHJlZnMsIDEpOwotIAljbGllbnQtPnBpcGVsaW5lX3JlZnMgPSByZWZzOwotIH0KLUBAIC0zMzEsMTMgKzMzMiwxMyBAQCBwaXBlbGluZV9pbml0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAgKi8KLSBzdGF0aWMgdm9pZAotIHBpcGVsaW5lX2F0dGFjaChuc19jbGllbnRfdCAqc291cmNlLCBuc19jbGllbnRfdCAqdGFyZ2V0KSB7Ci0tCWludCBvbGRfcmVmczsKLSsJaW50IHJlZnM7Ci0gCi0gCVJFUVVJUkUoc291cmNlLT5waXBlbGluZV9yZWZzICE9IE5VTEwpOwotIAlSRVFVSVJFKHRhcmdldC0+cGlwZWxpbmVfcmVmcyA9PSBOVUxMKTsKLSAKLS0Jb2xkX3JlZnMgPSBpc2NfcmVmY291bnRfaW5jcmVtZW50KHNvdXJjZS0+cGlwZWxpbmVfcmVmcyk7Ci0tCUlOU0lTVChvbGRfcmVmcyA+IDApOwotKwlpc2NfcmVmY291bnRfaW5jcmVtZW50KHNvdXJjZS0+cGlwZWxpbmVfcmVmcywgJnJlZnMpOwotKwlJTlNJU1QocmVmcyA+IDEpOwotIAl0YXJnZXQtPnBpcGVsaW5lX3JlZnMgPSBzb3VyY2UtPnBpcGVsaW5lX3JlZnM7Ci0gfQotIAotQEAgLTM0OSwyNSArMzUwLDUxIEBAIHBpcGVsaW5lX2F0dGFjaChuc19jbGllbnRfdCAqc291cmNlLCBuc19jbGllbnRfdCAqdGFyZ2V0KSB7Ci0gICovCi0gc3RhdGljIGJvb2wKLSBwaXBlbGluZV9kZXRhY2gobnNfY2xpZW50X3QgKmNsaWVudCkgewotLQlpc2NfcmVmY291bnRfdCAqcmVmczsKLS0JaW50IG9sZF9yZWZzOwotKwlpc2NfcmVmY291bnRfdCAqcmVmY291bnQ7Ci0rCWludCByZWZzOwotIAotIAlSRVFVSVJFKGNsaWVudC0+cGlwZWxpbmVfcmVmcyAhPSBOVUxMKTsKLSAKLS0JcmVmcyA9IGNsaWVudC0+cGlwZWxpbmVfcmVmczsKLSsJcmVmY291bnQgPSBjbGllbnQtPnBpcGVsaW5lX3JlZnM7Ci0gCWNsaWVudC0+cGlwZWxpbmVfcmVmcyA9IE5VTEw7Ci0gCi0tCW9sZF9yZWZzID0gaXNjX3JlZmNvdW50X2RlY3JlbWVudChyZWZzKTsKLS0JSU5TSVNUKG9sZF9yZWZzID4gMCk7Ci0rCWlzY19yZWZjb3VudF9kZWNyZW1lbnQocmVmY291bnQsIHJlZnMpOwotIAotLQlpZiAob2xkX3JlZnMgPT0gMSkgewotLQkJaXNjX21lbV9mcmVlKGNsaWVudC0+c2N0eC0+bWN0eCwgcmVmcyk7Ci0rCWlmIChyZWZzID09IDApIHsKLSsJCWlzY19tZW1fZnJlZShuc19nX21jdHgsIHJlZnMpOwotIAkJcmV0dXJuICh0cnVlKTsKLSAJfQotIAotIAlyZXR1cm4gKGZhbHNlKTsKLSB9Ci0gCi0rLyoKLSsgKiBEZXRhY2ggYSBjbGllbnQgZnJvbSB0aGUgVENQIGNsaWVudCBxdW90YSBpZiBhcHByb3ByaWF0ZSwgYW5kIHNldAotKyAqIHRoZSBxdW90YSBwb2ludGVyIHRvIE5VTEwuCi0rICoKLSsgKiBTb21ldGltZXMgd2hlbiB0aGUgVENQIGNsaWVudCBxdW90YSBpcyBleGhhdXN0ZWQgYnV0IHRoZXJlIGFyZSBubyBvdGhlcgotKyAqIGNsaWVudHMgc2VydmljaW5nIHRoZSBpbnRlcmZhY2UsIGEgY2xpZW50IHdpbGwgYmUgYWxsb3dlZCB0byBjb250aW51ZQotKyAqIHJ1bm5pbmcgZGVzcGl0ZSBub3QgaGF2aW5nIGJlZW4gYXR0YWNoZWQgdG8gdGhlIHF1b3RhLiBJbiB0aGlzIGV2ZW50LAotKyAqIHRoZSBUQ1AgcXVvdGEgd2FzIG5ldmVyIGF0dGFjaGVkIHRvIHRoZSBjbGllbnQsIHNvIHdoZW4gdGhlIGNsaWVudCAob3IKLSsgKiBhc3NvY2lhdGVkIHBpcGVsaW5lIGdyb3VwKSBzaHV0cyBkb3duLCB0aGUgcXVvdGEgbXVzdCBOT1QgYmUgZGV0YWNoZWQuCi0rICoKLSsgKiBPdGhlcndpc2UsIGlmIHRoZSBxdW90YSBwb2ludGVyIGlzIHNldCwgaXQgc2hvdWxkIGJlIGRldGFjaGVkLiBJZiBub3QKLSsgKiBzZXQgYXQgYWxsLCB3ZSBqdXN0IHJldHVybiB3aXRob3V0IGRvaW5nIGFueXRoaW5nLgotKyAqLwotK3N0YXRpYyB2b2lkCi0rdGNwcXVvdGFfZGlzY29ubmVjdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0rCWlmIChjbGllbnQtPnRjcHF1b3RhID09IE5VTEwpIHsKLSsJCXJldHVybjsKLSsJfQotKwotKwlpZiAoY2xpZW50LT50Y3BhdHRhY2hlZCkgewotKwkJaXNjX3F1b3RhX2RldGFjaCgmY2xpZW50LT50Y3BxdW90YSk7Ci0rCQljbGllbnQtPnRjcGF0dGFjaGVkID0gZmFsc2U7Ci0rCX0gZWxzZSB7Ci0rCQljbGllbnQtPnRjcHF1b3RhID0gTlVMTDsKLSsJfQotK30KLSsKLSAvKiUKLSAgKiBDaGVjayBmb3IgYSBkZWFjdGl2YXRpb24gb3Igc2h1dGRvd24gcmVxdWVzdCBhbmQgdGFrZSBhcHByb3ByaWF0ZQotICAqIGFjdGlvbi4gIFJldHVybnMgdHJ1ZSBpZiBlaXRoZXIgaXMgaW4gcHJvZ3Jlc3M7IGluIHRoaXMgY2FzZQotQEAgLTQ5MCwzOCArNTE3LDMxIEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJCWNsaWVudC0+dGNwbXNnX3ZhbGlkID0gZmFsc2U7Ci0gCQl9Ci0gCi0tCQlpZiAoY2xpZW50LT50Y3BxdW90YSAhPSBOVUxMKSB7Ci0tCQkJaWYgKGNsaWVudC0+cGlwZWxpbmVfcmVmcyA9PSBOVUxMIHx8Ci0tCQkJICAgIHBpcGVsaW5lX2RldGFjaChjbGllbnQpKQotLQkJCXsKLS0JCQkJLyoKLS0JCQkJICogT25seSBkZXRhY2ggZnJvbSB0aGUgVENQIGNsaWVudCBxdW90YSBpZgotLQkJCQkgKiB0aGVyZSBhcmUgbm8gbW9yZSBjbGllbnQgc3RydWN0dXJlcyB1c2luZwotLQkJCQkgKiB0aGlzIFRDUCBjb25uZWN0aW9uLgotLQkJCQkgKgotLQkJCQkgKiBOb3RlIHRoYXQgd2UgY2hlY2sgJ3BpcGVsaW5lX3JlZnMnIGFuZCBub3QKLS0JCQkJICogJ3BpcGVsaW5lZCcgYmVjYXVzZSBpbiBzb21lIGNhc2VzIChlLmcuCi0tCQkJCSAqIGFmdGVyIHJlY2VpdmluZyBhIHJlcXVlc3Qgd2l0aCBhbiBvcGNvZGUKLS0JCQkJICogZGlmZmVyZW50IHRoYW4gUVVFUlkpICdwaXBlbGluZWQnIGlzIHNldCB0bwotLQkJCQkgKiBmYWxzZSBhZnRlciB0aGUgcmVmZXJlbmNlIGNvdW50ZXIgZ2V0cwotLQkJCQkgKiBhbGxvY2F0ZWQgaW4gcGlwZWxpbmVfaW5pdCgpIGFuZCB3ZSBtdXN0Ci0tCQkJCSAqIHN0aWxsIGRyb3Agb3VyIHJlZmVyZW5jZSBhcyBmYWlsaW5nIHRvIGRvIHNvCi0tCQkJCSAqIHdvdWxkIHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudGVyIGl0c2VsZgotLQkJCQkgKiBmcm9tIGJlaW5nIGZyZWVkLgotLQkJCQkgKi8KLS0JCQkJaXNjX3F1b3RhX2RldGFjaCgmY2xpZW50LT50Y3BxdW90YSk7Ci0tCQkJfSBlbHNlIHsKLS0JCQkJLyoKLS0JCQkJICogVGhlcmUgYXJlIG90aGVyIGNsaWVudCBzdHJ1Y3R1cmVzIHVzaW5nIHRoaXMKLS0JCQkJICogVENQIGNvbm5lY3Rpb24sIHNvIHdlIGNhbm5vdCBkZXRhY2ggZnJvbSB0aGUKLS0JCQkJICogVENQIGNsaWVudCBxdW90YSB0byBwcmV2ZW50IGV4Y2VzcyBUQ1AKLS0JCQkJICogY29ubmVjdGlvbnMgZnJvbSBiZWluZyBhY2NlcHRlZC4gIEhvd2V2ZXIsCi0tCQkJCSAqIHRoaXMgY2xpZW50IHN0cnVjdHVyZSBtaWdodCBsYXRlciBiZSByZXVzZWQKLS0JCQkJICogZm9yIGFjY2VwdGluZyBuZXcgY29ubmVjdGlvbnMgYW5kIHRodXMgbXVzdAotLQkJCQkgKiBoYXZlIGl0cyAndGNwcXVvdGEnIGZpZWxkIHNldCB0byBOVUxMLgotLQkJCQkgKi8KLS0JCQkJY2xpZW50LT50Y3BxdW90YSA9IE5VTEw7Ci0tCQkJfQotKwkJLyoKLSsJCSAqIERldGFjaCBmcm9tIHBpcGVsaW5lIGdyb3VwIGFuZCBmcm9tIFRDUCBjbGllbnQgcXVvdGEsCi0rCQkgKiBpZiBhcHByb3ByaWF0ZS4KLSsJCSAqCi0rCQkgKiAtIElmIG5vIHBpcGVsaW5lIGdyb3VwIGlzIGFjdGl2ZSwgYXR0ZW1wdCB0bwotKwkJICogICBkZXRhY2ggZnJvbSB0aGUgVENQIGNsaWVudCBxdW90YS4KLSsJCSAqCi0rCQkgKiAtIElmIGEgcGlwZWxpbmUgZ3JvdXAgaXMgYWN0aXZlLCBkZXRhY2ggZnJvbSBpdDsKLSsJCSAqICAgaWYgdGhlIHJldHVybiBjb2RlIGluZGljYXRlcyB0aGF0IHRoZXJlIG5vIG1vcmUKLSsJCSAqICAgY2xpZW50cyBsZWZ0IGlmIHRoaXMgcGlwZWxpbmUgZ3JvdXAsIHdlIGFsc28gZGV0YWNoCi0rCQkgKiAgIGZyb20gdGhlIFRDUCBjbGllbnQgcXVvdGEuCi0rCQkgKgotKwkJICogLSBPdGhlcndpc2Ugd2UgZG9uJ3QgdHJ5IHRvIGRldGFjaCwgd2UganVzdCBzZXQgdGhlCi0rCQkgKiAgIFRDUCBxdW90YSBwb2ludGVyIHRvIE5VTEwgaWYgaXQgd2Fzbid0IE5VTEwgYWxyZWFkeS4KLSsJCSAqCi0rCQkgKiB0Y3BxdW90YV9kaXNjb25uZWN0KCkgd2lsbCBzZXQgdGNwcXVvdGEgdG8gTlVMTCwgZWl0aGVyCi0rCQkgKiBieSBkZXRhY2hpbmcgaXQgb3IgYnkgYXNzaWdubWVudCwgZGVwZW5kaW5nIG9uIHRoZQotKwkJICogbmVlZHMgb2YgdGhlIGNsaWVudC4gU2VlIHRoZSBjb21tZW50cyBvbiB0aGF0IGZ1bmN0aW9uCi0rCQkgKiBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4KLSsJCSAqLwotKwkJaWYgKGNsaWVudC0+cGlwZWxpbmVfcmVmcyA9PSBOVUxMIHx8IHBpcGVsaW5lX2RldGFjaChjbGllbnQpKSB7Ci0rCQkJdGNwcXVvdGFfZGlzY29ubmVjdChjbGllbnQpOwotKwkJfSBlbHNlIHsKLSsJCQljbGllbnQtPnRjcHF1b3RhID0gTlVMTDsKLSsJCQljbGllbnQtPnRjcGF0dGFjaGVkID0gZmFsc2U7Ci0gCQl9Ci0gCi0gCQlpZiAoY2xpZW50LT50Y3Bzb2NrZXQgIT0gTlVMTCkgewotQEAgLTU0NCw4ICs1NjQsNiBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCQljbGllbnQtPnRpbWVyc2V0ID0gZmFsc2U7Ci0gCQl9Ci0gCi0tCQljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotLQotIAkJY2xpZW50LT5wZWVyYWRkcl92YWxpZCA9IGZhbHNlOwotIAotIAkJY2xpZW50LT5zdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX1JFQURZOwotQEAgLTU1OCwxOCArNTc2LDI3IEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJICogYWN0aXZlIGFuZCBmb3JjZSBpdCB0byBnbyBpbmFjdGl2ZSBpZiBub3QuCi0gCQkgKgotIAkJICogVURQIGNsaWVudHMgZ28gaW5hY3RpdmUgYXQgdGhpcyBwb2ludCwgYnV0IGEgVENQIGNsaWVudAotLQkJICogd2lsbCBuZWVkcyB0byByZW1haW4gYWN0aXZlIGlmIG5vIG90aGVyIGNsaWVudHMgYXJlCi0tCQkgKiBsaXN0ZW5pbmcgZm9yIFRDUCByZXF1ZXN0cyBvbiB0aGlzIGludGVyZmFjZSwgdG8KLS0JCSAqIHByZXZlbnQgdGhpcyBpbnRlcmZhY2UgZnJvbSBnb2luZyBub25yZXNwb25zaXZlLgotKwkJICogbWF5IG5lZWQgdG8gcmVtYWluIGFjdGl2ZSBhbmQgZ28gaW50byByZWFkeSBzdGF0ZSBpZgotKwkJICogbm8gb3RoZXIgY2xpZW50cyBhcmUgYXZhaWxhYmxlIHRvIGxpc3RlbiBmb3IgVENQCi0rCQkgKiByZXF1ZXN0cyBvbiB0aGlzIGludGVyZmFjZSBvciAoaW4gdGhlIGNhc2Ugb2YgcGlwZWxpbmVkCi0rCQkgKiBjbGllbnRzKSB0byByZWFkIGZvciBhZGRpdGlvbmFsIG1lc3NhZ2VzIG9uIHRoZSBjdXJyZW50Ci0rCQkgKiBjb25uZWN0aW9uLgotIAkJICovCi0gCQlpZiAoY2xpZW50LT5tb3J0YWwgJiYgVENQX0NMSUVOVChjbGllbnQpICYmICFuc19nX2NsaWVudHRlc3QpIHsKLSAJCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCQkJaWYgKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nID09IDApIHsKLSsJCQlpZiAoKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nID09IDAgfHwKLSsJCQkgICAgKGNsaWVudC0+cGlwZWxpbmVkICYmCi0rCQkJICAgICBjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSA8IDIpKSAmJgotKwkJCSAgICBjbGllbnQtPm5ld3N0YXRlICE9IE5TX0NMSUVOVFNUQVRFX0ZSRUVEKQotKwkJCXsKLSAJCQkJY2xpZW50LT5tb3J0YWwgPSBmYWxzZTsKLSsJCQkJY2xpZW50LT5uZXdzdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX1JFQURZOwotIAkJCX0KLSAJCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSAJCX0KLSAKLSsJCWNsaWVudC0+cGlwZWxpbmVkID0gZmFsc2U7Ci0rCi0gCQkvKgotIAkJICogV2UgZG9uJ3QgbmVlZCB0aGUgY2xpZW50OyBzZW5kIGl0IHRvIHRoZSBpbmFjdGl2ZQotIAkJICogcXVldWUgZm9yIHJlY3ljbGluZy4KLUBAIC0yNjM0LDYgKzI2NjEsMTggQEAgY2xpZW50X3JlcXVlc3QoaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCQljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotIAl9Ci0gCWlmIChUQ1BfQ0xJRU5UKGNsaWVudCkgJiYgY2xpZW50LT5waXBlbGluZWQpIHsKLSsJCS8qCi0rCQkgKiBXZSdyZSBwaXBlbGluaW5nLiBSZXBsYWNlIHRoZSBjbGllbnQ7IHRoZQotKwkJICogdGhlIHJlcGxhY2VtZW50IGNhbiByZWFkIHRoZSBUQ1Agc29ja2V0IGxvb2tpbmcKLSsJCSAqIGZvciBuZXcgbWVzc2FnZXMgYW5kIHRoaXMgY2xpZW50IGNhbiBwcm9jZXNzIHRoZQotKwkJICogY3VycmVudCBtZXNzYWdlIGFzeW5jaHJvbm91c2x5LgotKwkJICoKLSsJCSAqIFRoZXJlIGFyZSBub3cgYXQgbGVhc3QgdGhyZWUgY2xpZW50cyB1c2luZyB0aGlzCi0rCQkgKiBUQ1Agc29ja2V0IC0gb25lIGFjY2VwdGluZyBuZXcgY29ubmVjdGlvbnMsCi0rCQkgKiBvbmUgcmVhZGluZyBhbiBleGlzdGluZyBjb25uZWN0aW9uIHRvIGdldCBuZXcKLSsJCSAqIG1lc3NhZ2VzLCBhbmQgb25lIGFuc3dlcmluZyB0aGUgbWVzc2FnZSBhbHJlYWR5Ci0rCQkgKiByZWNlaXZlZC4KLSsJCSAqLwotIAkJcmVzdWx0ID0gbnNfY2xpZW50X3JlcGxhY2UoY2xpZW50KTsKLSAJCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykgewotIAkJCWNsaWVudC0+cGlwZWxpbmVkID0gZmFsc2U7Ci1AQCAtMzE5Nyw2ICszMjM2LDcgQEAgY2xpZW50X2NyZWF0ZShuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfY2xpZW50X3QgKipjbGllbnRwKSB7Ci0gCWNsaWVudC0+cGlwZWxpbmVkID0gZmFsc2U7Ci0gCWNsaWVudC0+cGlwZWxpbmVfcmVmcyA9IE5VTEw7Ci0gCWNsaWVudC0+dGNwcXVvdGEgPSBOVUxMOwotKwljbGllbnQtPnRjcGF0dGFjaGVkID0gZmFsc2U7Ci0gCWNsaWVudC0+cmVjdXJzaW9ucXVvdGEgPSBOVUxMOwotIAljbGllbnQtPmludGVyZmFjZSA9IE5VTEw7Ci0gCWNsaWVudC0+cGVlcmFkZHJfdmFsaWQgPSBmYWxzZTsKLUBAIC0zMzU5LDkgKzMzOTksNyBAQCBjbGllbnRfbmV3Y29ubihpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJCQkgICAgICBOU19MT0dNT0RVTEVfQ0xJRU5ULCBJU0NfTE9HX0RFQlVHKDMpLAotIAkJCSAgICAgICJhY2NlcHQgZmFpbGVkOiAlcyIsCi0gCQkJICAgICAgaXNjX3Jlc3VsdF90b3RleHQobmV2ZW50LT5yZXN1bHQpKTsKLS0JCWlmIChjbGllbnQtPnRjcHF1b3RhICE9IE5VTEwpIHsKLS0JCQlpc2NfcXVvdGFfZGV0YWNoKCZjbGllbnQtPnRjcHF1b3RhKTsKLS0JCX0KLSsJCXRjcHF1b3RhX2Rpc2Nvbm5lY3QoY2xpZW50KTsKLSAJfQotIAotIAlpZiAoZXhpdF9jaGVjayhjbGllbnQpKQotQEAgLTM0MDIsNyArMzQ0MCw3IEBAIGNsaWVudF9uZXdjb25uKGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAkJY2xpZW50LT5waXBlbGluZWQgPSBmYWxzZTsKLSAJCXJlc3VsdCA9IG5zX2NsaWVudF9yZXBsYWNlKGNsaWVudCk7Ci0gCQlpZiAocmVzdWx0ID09IElTQ19SX1NVQ0NFU1MgJiYKLS0JCSAgICAoY2xpZW50LT5zY3R4LT5rZWVwcmVzcG9yZGVyID09IE5VTEwgfHwKLSsJCSAgICAobnNfZ19zZXJ2ZXItPmtlZXByZXNwb3JkZXIgPT0gTlVMTCB8fAotIAkJICAgICAhYWxsb3dlZCgmbmV0YWRkciwgTlVMTCwgTlVMTCwgMCwgTlVMTCwKLSAJCQkgICAgICBuc19nX3NlcnZlci0+a2VlcHJlc3BvcmRlcikpKQotIAkJewotQEAgLTM0MjksNyArMzQ2Nyw3IEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkgKiBpbiBuYW1lZC5jb25mLiBJZiB3ZSBjYW4ndCBhdHRhY2ggdG8gaXQgaGVyZSwgdGhhdCBtZWFucyB0aGUgVENQCi0gCSAqIGNsaWVudCBxdW90YSBoYXMgYmVlbiBleGNlZWRlZC4KLSAJICovCi0tCXJlc3VsdCA9IGlzY19xdW90YV9hdHRhY2goJmNsaWVudC0+c2N0eC0+dGNwcXVvdGEsCi0rCXJlc3VsdCA9IGlzY19xdW90YV9hdHRhY2goJm5zX2dfc2VydmVyLT50Y3BxdW90YSwKLSAJCQkJICAmY2xpZW50LT50Y3BxdW90YSk7Ci0gCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykgewotIAkJCWJvb2wgZXhpdDsKLUBAIC0zNDQ3LDI3ICszNDg1LDI3IEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJCSAqIGludGVyZmFjZSB0byBiZSBzdGFydmVkLCB3aXRoIG5vIGNsaWVudHMgYWJsZQotIAkJCSAqIHRvIGFjY2VwdCBuZXcgY29ubmVjdGlvbnMuCi0gCQkJICoKLS0JCQkgKiBTbywgd2UgY2hlY2sgaGVyZSB0byBzZWUgaWYgYW55IG90aGVyIGNsaWVudAotLQkJCSAqIGlzIGFscmVhZHkgc2VydmljaW5nIFRDUCBxdWVyaWVzIG9uIHRoaXMKLSsJCQkgKiBTbywgd2UgY2hlY2sgaGVyZSB0byBzZWUgaWYgYW55IG90aGVyIGNsaWVudHMKLSsJCQkgKiBhcmUgYWxyZWFkeSBzZXJ2aWNpbmcgVENQIHF1ZXJpZXMgb24gdGhpcwotIAkJCSAqIGludGVyZmFjZSAod2hldGhlciBhY2NlcHRpbmcsIHJlYWRpbmcsIG9yCi0tCQkJICogcHJvY2Vzc2luZykuCi0tCQkJICoKLS0JCQkgKiBJZiBzbywgdGhlbiBpdCdzIG9rYXkgKm5vdCogdG8gY2FsbAotLQkJCSAqIGFjY2VwdCAtIHdlIGNhbiBsZXQgdGhpcyBjbGllbnQgdG8gZ28gaW5hY3RpdmUKLS0JCQkgKiBhbmQgdGhlIG90aGVyIG9uZSBoYW5kbGUgdGhlIG5leHQgY29ubmVjdGlvbgotLQkJCSAqIHdoZW4gaXQncyByZWFkeS4KLSsJCQkgKiBwcm9jZXNzaW5nKS4gSWYgdGhlcmUgYXJlIGF0IGxlYXN0IHR3bwotKwkJCSAqIChvbmUgcmVhZGluZyBhbmQgb25lIHByb2Nlc3NpbmcgYSByZXF1ZXN0KQotKwkJCSAqIHRoZW4gaXQncyBva2F5ICpub3QqIHRvIGNhbGwgYWNjZXB0IC0gd2UKLSsJCQkgKiBjYW4gbGV0IHRoaXMgY2xpZW50IGdvIGluYWN0aXZlIGFuZCBhbm90aGVyCi0rCQkJICogb25lIHdpbGwgcmVzdW1lIGFjY2VwdGluZyB3aGVuIGl0J3MgZG9uZS4KLSAJCQkgKgotLQkJCSAqIEJ1dCBpZiBub3QsIHRoZW4gd2UgbmVlZCB0byBiZSBhIGxpdHRsZSBiaXQKLS0JCQkgKiBmbGV4aWJsZSBhYm91dCB0aGUgcXVvdGEuIFdlIGFsbG93ICpvbmUqIGV4dHJhCi0tCQkJICogVENQIGNsaWVudCB0aHJvdWdoLCB0byBlbnN1cmUgd2UncmUgbGlzdGVuaW5nIG9uCi0tCQkJICogZXZlcnkgaW50ZXJmYWNlLgotKwkJCSAqIElmIHRoZXJlIGFyZW4ndCBlbm91Z2ggYWN0aXZlIGNsaWVudHMgb24gdGhlCi0rCQkJICogaW50ZXJmYWNlLCB0aGVuIHdlIGNhbiBiZSBhIGxpdHRsZSBiaXQKLSsJCQkgKiBmbGV4aWJsZSBhYm91dCB0aGUgcXVvdGEuIFdlJ2xsIGFsbG93ICpvbmUqCi0rCQkJICogZXh0cmEgY2xpZW50IHRocm91Z2ggdG8gZW5zdXJlIHdlJ3JlIGxpc3RlbmluZwotKwkJCSAqIG9uIGV2ZXJ5IGludGVyZmFjZS4KLSAJCQkgKgotLQkJCSAqIChOb3RlOiBJbiBwcmFjdGljZSB0aGlzIG1lYW5zIHRoYXQgdGhlICpyZWFsKgotLQkJCSAqIFRDUCBjbGllbnQgcXVvdGEgaXMgdGNwLWNsaWVudHMgcGx1cyB0aGUgbnVtYmVyCi0tCQkJICogb2YgaW50ZXJmYWNlcy4pCi0rCQkJICogKE5vdGU6IEluIHByYWN0aWNlIHRoaXMgbWVhbnMgdGhhdCB0aGUgcmVhbAotKwkJCSAqIFRDUCBjbGllbnQgcXVvdGEgaXMgdGNwLWNsaWVudHMgcGx1cyB0aGUKLSsJCQkgKiBudW1iZXIgb2YgbGlzdGVuaW5nIGludGVyZmFjZXMgcGx1cyAyLikKLSAJCQkgKi8KLSAJCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCQkJZXhpdCA9IChjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSA+IDApOwotKwkJCWV4aXQgPSAoY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUgPiAxKTsKLSAJCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSAKLSAJCQlpZiAoZXhpdCkgewotQEAgLTM0NzUsNiArMzUxMyw5IEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJCQkodm9pZClleGl0X2NoZWNrKGNsaWVudCk7Ci0gCQkJCXJldHVybjsKLSAJCQl9Ci0rCi0rCX0gZWxzZSB7Ci0rCQljbGllbnQtPnRjcGF0dGFjaGVkID0gdHJ1ZTsKLSAJfQotIAotIAkvKgotQEAgLTM1MDcsOSArMzU0OCwxNiBAQCBjbGllbnRfYWNjZXB0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCVVORVhQRUNURURfRVJST1IoX19GSUxFX18sIF9fTElORV9fLAotIAkJCQkgImlzY19zb2NrZXRfYWNjZXB0KCkgZmFpbGVkOiAlcyIsCi0gCQkJCSBpc2NfcmVzdWx0X3RvdGV4dChyZXN1bHQpKTsKLS0JCWlmIChjbGllbnQtPnRjcHF1b3RhICE9IE5VTEwpIHsKLS0JCQlpc2NfcXVvdGFfZGV0YWNoKCZjbGllbnQtPnRjcHF1b3RhKTsKLSsKLSsJCXRjcHF1b3RhX2Rpc2Nvbm5lY3QoY2xpZW50KTsKLSsKLSsJCWlmIChjbGllbnQtPnRjcGFjdGl2ZSkgewotKwkJCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsJCQljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZS0tOwotKwkJCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwkJCWNsaWVudC0+dGNwYWN0aXZlID0gZmFsc2U7Ci0gCQl9Ci0rCi0gCQlyZXR1cm47Ci0gCX0KLSAKLUBAIC0zNTI3LDEzICszNTc1LDEyIEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkgKiBvbmNlIHRoZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLgotIAkgKgotIAkgKiBXaGVuIHRoZSBjbGllbnQgb2JqZWN0IGlzIHNodXR0aW5nIGRvd24gYWZ0ZXIgaGFuZGxpbmcgYSBUQ1AKLS0JICogcmVxdWVzdCAoc2VlIGV4aXRfY2hlY2soKSksIGl0IGxvb2tzIHRvIHNlZSB3aGV0aGVyIHRoaXMgdmFsdWUgaXMKLS0JICogbm9uLXplcm8uIElmIHNvLCB0aGF0IG1lYW5zIGFub3RoZXIgY2xpZW50IGhhcyBhbHJlYWR5IGNhbGxlZAotLQkgKiBhY2NlcHQoKSBhbmQgaXMgd2FpdGluZyB0byBlc3RhYmxpc2ggdGhlIG5leHQgY29ubmVjdGlvbiwgd2hpY2gKLS0JICogbWVhbnMgdGhlIGZpcnN0IGNsaWVudCBpcyBmcmVlIHRvIGdvIGluYWN0aXZlLiBPdGhlcndpc2UsCi0tCSAqIHRoZSBmaXJzdCBjbGllbnQgbXVzdCBjb21lIGJhY2sgYW5kIGNhbGwgYWNjZXB0KCkgYWdhaW47IHRoaXMKLS0JICogZ3VhcmFudGVlcyB0aGVyZSB3aWxsIGFsd2F5cyBiZSBhdCBsZWFzdCBvbmUgY2xpZW50IGxpc3RlbmluZwotLQkgKiBmb3IgbmV3IFRDUCBjb25uZWN0aW9ucyBvbiBlYWNoIGludGVyZmFjZS4KLSsJICogcmVxdWVzdCAoc2VlIGV4aXRfY2hlY2soKSksIGlmIHRoaXMgdmFsdWUgaXMgYXQgbGVhc3Qgb25lLCB0aGF0Ci0rCSAqIG1lYW5zIGFub3RoZXIgY2xpZW50IGhhcyBjYWxsZWQgYWNjZXB0KCkgYW5kIGlzIHdhaXRpbmcgdG8KLSsJICogZXN0YWJsaXNoIHRoZSBuZXh0IGNvbm5lY3Rpb24uIFRoYXQgbWVhbnMgdGhlIGNsaWVudCBtYXkgYmUKLSsJICogYmUgZnJlZSB0byBiZWNvbWUgaW5hY3RpdmU7IG90aGVyd2lzZSBpdCBtYXkgbmVlZCB0byBzdGFydAotKwkgKiBsaXN0ZW5pbmcgZm9yIGNvbm5lY3Rpb25zIGl0c2VsZiB0byBwcmV2ZW50IHRoZSBpbnRlcmZhY2UKLSsJICogZ29pbmcgZGVhZC4KLSAJICovCi0gCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSAJY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcrKzsKLUBAIC0zNjEzLDE5ICszNjYwLDE5IEBAIG5zX2NsaWVudF9yZXBsYWNlKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCQkJICAgIGNsaWVudC0+dGNwc29ja2V0LCBjbGllbnQpOwotIAl9IGVsc2UgewotIAkJcmVzdWx0ID0gZ2V0X2NsaWVudChjbGllbnQtPm1hbmFnZXIsIGNsaWVudC0+aW50ZXJmYWNlLAotLQkJCQkgICAgY2xpZW50LT5kaXNwYXRjaCwgdGNwKTsKLSsJCQkJICAgIGNsaWVudC0+ZGlzcGF0Y2gsIGNsaWVudCwgdGNwKTsKLSsKLSsJCS8qCi0rCQkgKiBUaGUgcmVzcG9uc2liaWxpdHkgZm9yIGxpc3RlbmluZyBmb3IgbmV3IHJlcXVlc3RzIGlzIGhlcmVieQotKwkJICogdHJhbnNmZXJyZWQgdG8gdGhlIG5ldyBjbGllbnQuICBUaGVyZWZvcmUsIHRoZSBvbGQgY2xpZW50Ci0rCQkgKiBzaG91bGQgcmVmcmFpbiBmcm9tIGxpc3RlbmluZyBmb3IgYW55IG1vcmUgcmVxdWVzdHMuCi0rCQkgKi8KLSsJCWNsaWVudC0+bW9ydGFsID0gdHJ1ZTsKLSAJfQotIAlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpIHsKLSAJCXJldHVybiAocmVzdWx0KTsKLSAJfQotIAotLQkvKgotLQkgKiBUaGUgcmVzcG9uc2liaWxpdHkgZm9yIGxpc3RlbmluZyBmb3IgbmV3IHJlcXVlc3RzIGlzIGhlcmVieQotLQkgKiB0cmFuc2ZlcnJlZCB0byB0aGUgbmV3IGNsaWVudC4gIFRoZXJlZm9yZSwgdGhlIG9sZCBjbGllbnQKLS0JICogc2hvdWxkIHJlZnJhaW4gZnJvbSBsaXN0ZW5pbmcgZm9yIGFueSBtb3JlIHJlcXVlc3RzLgotLQkgKi8KLS0JY2xpZW50LT5tb3J0YWwgPSB0cnVlOwotLQotIAlyZXR1cm4gKElTQ19SX1NVQ0NFU1MpOwotIH0KLSAKLUBAIC0zNzU5LDcgKzM4MDYsNyBAQCBuc19jbGllbnRtZ3JfZGVzdHJveShuc19jbGllbnRtZ3JfdCAqKm1hbmFnZXJwKSB7Ci0gCi0gc3RhdGljIGlzY19yZXN1bHRfdAotIGdldF9jbGllbnQobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsCi0tCSAgIGRuc19kaXNwYXRjaF90ICpkaXNwLCBib29sIHRjcCkKLSsJICAgZG5zX2Rpc3BhdGNoX3QgKmRpc3AsIG5zX2NsaWVudF90ICpvbGRjbGllbnQsIGJvb2wgdGNwKQotIHsKLSAJaXNjX3Jlc3VsdF90IHJlc3VsdCA9IElTQ19SX1NVQ0NFU1M7Ci0gCWlzY19ldmVudF90ICpldjsKLUBAIC0zODAzLDYgKzM4NTAsMTYgQEAgZ2V0X2NsaWVudChuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwKLSAJY2xpZW50LT5kc2NwID0gaWZwLT5kc2NwOwotIAotIAlpZiAodGNwKSB7Ci0rCQljbGllbnQtPnRjcGF0dGFjaGVkID0gZmFsc2U7Ci0rCQlpZiAob2xkY2xpZW50ICE9IE5VTEwpIHsKLSsJCQljbGllbnQtPnRjcGF0dGFjaGVkID0gb2xkY2xpZW50LT50Y3BhdHRhY2hlZDsKLSsJCX0KLSsKLSsJCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsJCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlKys7Ci0rCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsJCWNsaWVudC0+dGNwYWN0aXZlID0gdHJ1ZTsKLSsKLSAJCWNsaWVudC0+YXR0cmlidXRlcyB8PSBOU19DTElFTlRBVFRSX1RDUDsKLSAJCWlzY19zb2NrZXRfYXR0YWNoKGlmcC0+dGNwc29ja2V0LAotIAkJCQkgICZjbGllbnQtPnRjcGxpc3RlbmVyKTsKLUBAIC0zODY2LDcgKzM5MjMsOCBAQCBnZXRfd29ya2VyKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLCBpc2Nfc29ja2V0X3QgKnNvY2ssCi0gCW5zX2ludGVyZmFjZV9hdHRhY2goaWZwLCAmY2xpZW50LT5pbnRlcmZhY2UpOwotIAljbGllbnQtPm5ld3N0YXRlID0gY2xpZW50LT5zdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX1dPUktJTkc7Ci0gCUlOU0lTVChjbGllbnQtPnJlY3Vyc2lvbnF1b3RhID09IE5VTEwpOwotLQljbGllbnQtPnRjcHF1b3RhID0gJmNsaWVudC0+c2N0eC0+dGNwcXVvdGE7Ci0rCWNsaWVudC0+dGNwcXVvdGEgPSAmbnNfZ19zZXJ2ZXItPnRjcHF1b3RhOwotKwljbGllbnQtPnRjcGF0dGFjaGVkID0gb2xkY2xpZW50LT50Y3BhdHRhY2hlZDsKLSAKLSAJY2xpZW50LT5kc2NwID0gaWZwLT5kc2NwOwotIAotQEAgLTM4ODUsNyArMzk0Myw2IEBAIGdldF93b3JrZXIobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsIGlzY19zb2NrZXRfdCAqc29jaywKLSAJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotIAljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSsrOwotIAlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0KLSAJY2xpZW50LT50Y3BhY3RpdmUgPSB0cnVlOwotIAotIAlJTlNJU1QoY2xpZW50LT50Y3Btc2dfdmFsaWQgPT0gZmFsc2UpOwotQEAgLTM5MTMsNyArMzk3MCw4IEBAIG5zX2NsaWVudG1ncl9jcmVhdGVjbGllbnRzKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCB1bnNpZ25lZCBpbnQgbiwKLSAJTVRSQUNFKCJjcmVhdGVjbGllbnRzIik7Ci0gCi0gCWZvciAoZGlzcCA9IDA7IGRpc3AgPCBuOyBkaXNwKyspIHsKLS0JCXJlc3VsdCA9IGdldF9jbGllbnQobWFuYWdlciwgaWZwLCBpZnAtPnVkcGRpc3BhdGNoW2Rpc3BdLCB0Y3ApOwotKwkJcmVzdWx0ID0gZ2V0X2NsaWVudChtYW5hZ2VyLCBpZnAsIGlmcC0+dWRwZGlzcGF0Y2hbZGlzcF0sCi0rCQkJCSAgICBOVUxMLCB0Y3ApOwotIAkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKQotIAkJCWJyZWFrOwotIAl9Ci1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmggYi9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaAotaW5kZXggYWVlZDljY2RkYS4uZTJjNDBhY2QyOCAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oCi0rKysgYi9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaAotQEAgLTksOCArOSw2IEBACi0gICogaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuCi0gICovCi0gCi0tLyogJElkOiBjbGllbnQuaCx2IDEuOTYgMjAxMi8wMS8zMSAyMzo0NzozMSB0Ym94IEV4cCAkICovCi0tCi0gI2lmbmRlZiBOQU1FRF9DTElFTlRfSAotICNkZWZpbmUgTkFNRURfQ0xJRU5UX0ggMQotIAotQEAgLTEzNiw2ICsxMzQsNyBAQCBzdHJ1Y3QgbnNfY2xpZW50IHsKLSAJYm9vbAkJCXBpcGVsaW5lZDsgICAvKiU8IFRDUCBxdWVyaWVzIG5vdCBpbiBzZXF1ZW5jZSAqLwotIAlpc2NfcmVmY291bnRfdAkJKnBpcGVsaW5lX3JlZnM7Ci0gCWlzY19xdW90YV90CQkqdGNwcXVvdGE7Ci0rCWJvb2wJCQl0Y3BhdHRhY2hlZDsKLSAJaXNjX3F1b3RhX3QJCSpyZWN1cnNpb25xdW90YTsKLSAJbnNfaW50ZXJmYWNlX3QJCSppbnRlcmZhY2U7Ci0gCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDUtcmVmYWN0b3ItdGNwcXVvdGEtYW5kLXBpcGVsaW5lLXJlZnMtYWxsb3ctc3BlY2lhbC1jYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwNS1yZWZhY3Rvci10Y3BxdW90YS1hbmQtcGlwZWxpbmUtcmVmcy1hbGxvdy1zcGVjaWFsLWNhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODdlNzViLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwNS1yZWZhY3Rvci10Y3BxdW90YS1hbmQtcGlwZWxpbmUtcmVmcy1hbGxvdy1zcGVjaWFsLWNhLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTExICswLDAgQEAKLUJhY2twb3J0IHBhdGNoIHRvIGZpeCBDVkUtMjAxOC01NzQzLgotCi1SZWY6Ci1odHRwczovL3NlY3VyaXR5LXRyYWNrZXIuZGViaWFuLm9yZy90cmFja2VyL0NWRS0yMDE4LTU3NDMKLQotQ1ZFOiBDVkUtMjAxOC01NzQzCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5pc2Mub3JnL2lzYy1wcm9qZWN0cy9iaW5kOS9jb21taXQvYzQ3Y2NmNl0KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLUZyb20gYzQ3Y2NmNjMwZjE0NzM3ODU2OGIzM2U4ZmRiN2I3NTRmMjI4YzM0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEV2YW4gSHVudCA8ZWFjaEBpc2Mub3JnPgotRGF0ZTogRnJpLCA1IEFwciAyMDE5IDE2OjI2OjA1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggNS82XSByZWZhY3RvciB0Y3BxdW90YSBhbmQgcGlwZWxpbmUgcmVmczsgYWxsb3cgc3BlY2lhbC1jYXNlCi0gb3ZlcnJ1biBpbiBpc2NfcXVvdGEKLQotLSBpZiB0aGUgVENQIHF1b3RhIGhhcyBiZWVuIGV4Y2VlZGVkIGJ1dCB0aGVyZSBhcmUgbm8gY2xpZW50cyBsaXN0ZW5pbmcKLSAgZm9yIG5ldyBjb25uZWN0aW9ucyBvbiB0aGUgaW50ZXJmYWNlLCB3ZSBjYW4gbm93IGZvcmNlIGF0dGFjaG1lbnQgdG8gdGhlCi0gIHF1b3RhIHVzaW5nIGlzY19xdW90YV9mb3JjZSgpLCBpbnN0ZWFkIG9mIGNhcnJ5aW5nIG9uIHdpdGggdGhlIHF1b3RhIG5vdAotICBhdHRhY2hlZC4KLS0gdGhlIFRDUCBjbGllbnQgcXVvdGEgaXMgbm93IHJlZmVyZW5jZWQgdmlhIGEgcmVmZXJlbmNlLWNvdW50ZWQKLSAgJ25zX3RjcGNvbm4nIG9iamVjdCwgb25lIG9mIHdoaWNoIGlzIGNyZWF0ZWQgd2hlbmV2ZXIgYSBjbGllbnQgYmVnaW5zCi0gIGxpc3RlbmluZyBmb3IgbmV3IGNvbm5lY3Rpb25zLCBhbmQgYXR0YWNoZWQgdG8gYnkgbWVtYmVycyBvZiB0aGF0Ci0gIGNsaWVudCdzIHBpcGVsaW5lIGdyb3VwLiB3aGVuIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGUgdGNwY29ubgotICBvYmplY3QgaXMgZGV0YWNoZWQsIGl0IGlzIGZyZWVkIGFuZCB0aGUgVENQIHF1b3RhIHNsb3QgaXMgcmVsZWFzZWQuCi0tIHJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uIGJ5IGFkZGluZyBtYXJrX3RjcF9hY3RpdmUoKSBmdW5jdGlvbi4KLS0gY29udmVydCBjb3VudGVycyB0byBhdG9taWMuCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDdlODIyMjM3OGNhMjRmMTMwMmEwYzFjNjM4NTY1MDUwYWIwNDY4MWIpCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA0OTM5NDUxMjc1NzIyYmZkYTQ5MGVhODZjYTEzZTg0ZjZiYzcxZTQ2KQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMTNmN2M5MThiODcyMGQ4OTA0MDhmNjc4YmQ3M2MyMGU2MzQ1MzlkOSkKLS0tLQotIGJpbi9uYW1lZC9jbGllbnQuYyAgICAgICAgICAgICAgICAgICAgIHwgNDQ0ICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KLSBiaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaCAgICAgICB8ICAxMiArLQotIGJpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2ludGVyZmFjZW1nci5oIHwgICA2ICstCi0gYmluL25hbWVkL2ludGVyZmFjZW1nci5jICAgICAgICAgICAgICAgfCAgIDEgKwotIGxpYi9pc2MvaW5jbHVkZS9pc2MvcXVvdGEuaCAgICAgICAgICAgIHwgICA3ICsKLSBsaWIvaXNjL3F1b3RhLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMyArLQotIGxpYi9pc2Mvd2luMzIvbGliaXNjLmRlZi5pbiAgICAgICAgICAgIHwgICAxICsKLSA3IGZpbGVzIGNoYW5nZWQsIDIzNiBpbnNlcnRpb25zKCspLCAyNjggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvY2xpZW50LmMgYi9iaW4vbmFtZWQvY2xpZW50LmMKLWluZGV4IDYxZTk2ZGQyOGMuLmQ4MjZhYjMyYmYgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvY2xpZW50LmMKLSsrKyBiL2Jpbi9uYW1lZC9jbGllbnQuYwotQEAgLTI0NCw4ICsyNDQsNyBAQCBzdGF0aWMgdm9pZCBjbGllbnRfc3RhcnQoaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KTsKLSBzdGF0aWMgdm9pZCBjbGllbnRfcmVxdWVzdChpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpOwotIHN0YXRpYyB2b2lkIG5zX2NsaWVudF9kdW1wbWVzc2FnZShuc19jbGllbnRfdCAqY2xpZW50LCBjb25zdCBjaGFyICpyZWFzb24pOwotIHN0YXRpYyBpc2NfcmVzdWx0X3QgZ2V0X2NsaWVudChuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwKLS0JCQkgICAgICAgZG5zX2Rpc3BhdGNoX3QgKmRpc3AsIG5zX2NsaWVudF90ICpvbGRjbGllbnQsCi0tCQkJICAgICAgIGJvb2wgdGNwKTsKLSsJCQkgICAgICAgZG5zX2Rpc3BhdGNoX3QgKmRpc3AsIGJvb2wgdGNwKTsKLSBzdGF0aWMgaXNjX3Jlc3VsdF90IGdldF93b3JrZXIobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsCi0gCQkJICAgICAgIGlzY19zb2NrZXRfdCAqc29jaywgbnNfY2xpZW50X3QgKm9sZGNsaWVudCk7Ci0gc3RhdGljIGlubGluZSBib29sCi1AQCAtMzAxLDE2ICszMDAsMzIgQEAgbnNfY2xpZW50X3NldHRpbWVvdXQobnNfY2xpZW50X3QgKmNsaWVudCwgdW5zaWduZWQgaW50IHNlY29uZHMpIHsKLSB9Ci0gCi0gLyolCi0tICogQWxsb2NhdGUgYSByZWZlcmVuY2UgY291bnRlciB0aGF0IHdpbGwgdHJhY2sgdGhlIG51bWJlciBvZiBjbGllbnQgc3RydWN0dXJlcwotLSAqIHVzaW5nIHRoZSBUQ1AgY29ubmVjdGlvbiB0aGF0ICdjbGllbnQnIGNhbGxlZCBhY2NlcHQoKSBmb3IuICBUaGlzIGNvdW50ZXIKLS0gKiB3aWxsIGJlIHNoYXJlZCBiZXR3ZWVuIGFsbCBjbGllbnQgc3RydWN0dXJlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBUQ1AKLS0gKiBjb25uZWN0aW9uLgotKyAqIEFsbG9jYXRlIGEgcmVmZXJlbmNlLWNvdW50ZWQgb2JqZWN0IHRoYXQgd2lsbCBtYWludGFpbiBhIHNpbmdsZSBwb2ludGVyIHRvCi0rICogdGhlIChhbHNvIHJlZmVyZW5jZS1jb3VudGVkKSBUQ1AgY2xpZW50IHF1b3RhLCBzaGFyZWQgYmV0d2VlbiBhbGwgdGhlCi0rICogY2xpZW50cyBwcm9jZXNzaW5nIHF1ZXJpZXMgb24gYSBzaW5nbGUgVENQIGNvbm5lY3Rpb24sIHNvIHRoYXQgYWxsCi0rICogY2xpZW50cyBzaGFyaW5nIHRoZSBvbmUgc29ja2V0IHdpbGwgdG9nZXRoZXIgY29uc3VtZSBvbmx5IG9uZSBzbG90IGluCi0rICogdGhlICd0Y3AtY2xpZW50cycgcXVvdGEuCi0gICovCi0tc3RhdGljIHZvaWQKLS1waXBlbGluZV9pbml0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLS0JaXNjX3JlZmNvdW50X3QgKnJlZnM7Ci0rc3RhdGljIGlzY19yZXN1bHRfdAotK3RjcGNvbm5faW5pdChuc19jbGllbnRfdCAqY2xpZW50LCBib29sIGZvcmNlKSB7Ci0rCWlzY19yZXN1bHRfdCByZXN1bHQ7Ci0rCWlzY19xdW90YV90ICpxdW90YSA9IE5VTEw7Ci0rCW5zX3RjcGNvbm5fdCAqdGNvbm4gPSBOVUxMOwotIAotLQlSRVFVSVJFKGNsaWVudC0+cGlwZWxpbmVfcmVmcyA9PSBOVUxMKTsKLSsJUkVRVUlSRShjbGllbnQtPnRjcGNvbm4gPT0gTlVMTCk7Ci0rCi0rCS8qCi0rCSAqIFRyeSB0byBhdHRhY2ggdG8gdGhlIHF1b3RhIGZpcnN0LCBzbyB3ZSB3b24ndCBwb2ludGxlc3NseQotKwkgKiBhbGxvY2F0ZSBtZW1vcnkgZm9yIGEgdGNwY29ubiBvYmplY3QgaWYgd2UgY2FuJ3QgZ2V0IG9uZS4KLSsJICovCi0rCWlmIChmb3JjZSkgewotKwkJcmVzdWx0ID0gaXNjX3F1b3RhX2ZvcmNlKCZuc19nX3NlcnZlci0+dGNwcXVvdGEsICZxdW90YSk7Ci0rCX0gZWxzZSB7Ci0rCQlyZXN1bHQgPSBpc2NfcXVvdGFfYXR0YWNoKCZuc19nX3NlcnZlci0+dGNwcXVvdGEsICZxdW90YSk7Ci0rCX0KLSsJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKSB7Ci0rCQlyZXR1cm4gKHJlc3VsdCk7Ci0rCX0KLSAKLSAJLyoKLSAJICogQSBnbG9iYWwgbWVtb3J5IGNvbnRleHQgaXMgdXNlZCBmb3IgdGhlIGFsbG9jYXRpb24gYXMgZGlmZmVyZW50Ci1AQCAtMzIwLDc4ICszMzUsODAgQEAgcGlwZWxpbmVfaW5pdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCSAqIGNvbnRlbnRpb24gaGVyZSBpcyBleHBlY3RlZCB0byBiZSBuZWdsaWdpYmxlLCBnaXZlbiB0aGF0IHRoaXMgY29kZQotIAkgKiBpcyBvbmx5IGV4ZWN1dGVkIGZvciBUQ1AgY29ubmVjdGlvbnMuCi0gCSAqLwotLQlyZWZzID0gaXNjX21lbV9hbGxvY2F0ZShuc19nX21jdHgsIHNpemVvZigqcmVmcykpOwotLQlpc2NfcmVmY291bnRfaW5pdChyZWZzLCAxKTsKLS0JY2xpZW50LT5waXBlbGluZV9yZWZzID0gcmVmczsKLSsJdGNvbm4gPSBpc2NfbWVtX2FsbG9jYXRlKG5zX2dfbWN0eCwgc2l6ZW9mKCp0Y29ubikpOwotKwotKwlpc2NfcmVmY291bnRfaW5pdCgmdGNvbm4tPnJlZnMsIDEpOwotKwl0Y29ubi0+dGNwcXVvdGEgPSBxdW90YTsKLSsJcXVvdGEgPSBOVUxMOwotKwl0Y29ubi0+cGlwZWxpbmVkID0gZmFsc2U7Ci0rCi0rCWNsaWVudC0+dGNwY29ubiA9IHRjb25uOwotKwotKwlyZXR1cm4gKElTQ19SX1NVQ0NFU1MpOwotIH0KLSAKLSAvKiUKLS0gKiBJbmNyZWFzZSB0aGUgY291bnQgb2YgY2xpZW50IHN0cnVjdHVyZXMgdXNpbmcgdGhlIFRDUCBjb25uZWN0aW9uIHRoYXQKLS0gKiAnc291cmNlJyBpcyBhc3NvY2lhdGVkIHdpdGggYW5kIHB1dCBhIHBvaW50ZXIgdG8gdGhhdCBjb3VudCBpbiAndGFyZ2V0JywKLS0gKiB0aHVzIGFzc29jaWF0aW5nIGl0IHdpdGggdGhlIHNhbWUgVENQIGNvbm5lY3Rpb24uCi0rICogSW5jcmVhc2UgdGhlIGNvdW50IG9mIGNsaWVudCBzdHJ1Y3R1cmVzIHNoYXJpbmcgdGhlIFRDUCBjb25uZWN0aW9uCi0rICogdGhhdCAnc291cmNlJyBpcyBhc3NvY2lhdGVkIHdpdGg7IGFkZCBhIHBvaW50ZXIgdG8gdGhlIHNhbWUgdGNwY29ubgotKyAqIHRvICd0YXJnZXQnLCB0aHVzIGFzc29jaWF0aW5nIGl0IHdpdGggdGhlIHNhbWUgVENQIGNvbm5lY3Rpb24uCi0gICovCi0gc3RhdGljIHZvaWQKLS1waXBlbGluZV9hdHRhY2gobnNfY2xpZW50X3QgKnNvdXJjZSwgbnNfY2xpZW50X3QgKnRhcmdldCkgewotK3RjcGNvbm5fYXR0YWNoKG5zX2NsaWVudF90ICpzb3VyY2UsIG5zX2NsaWVudF90ICp0YXJnZXQpIHsKLSAJaW50IHJlZnM7Ci0gCi0tCVJFUVVJUkUoc291cmNlLT5waXBlbGluZV9yZWZzICE9IE5VTEwpOwotLQlSRVFVSVJFKHRhcmdldC0+cGlwZWxpbmVfcmVmcyA9PSBOVUxMKTsKLSsJUkVRVUlSRShzb3VyY2UtPnRjcGNvbm4gIT0gTlVMTCk7Ci0rCVJFUVVJUkUodGFyZ2V0LT50Y3Bjb25uID09IE5VTEwpOwotKwlSRVFVSVJFKHNvdXJjZS0+dGNwY29ubi0+cGlwZWxpbmVkKTsKLSAKLS0JaXNjX3JlZmNvdW50X2luY3JlbWVudChzb3VyY2UtPnBpcGVsaW5lX3JlZnMsICZyZWZzKTsKLSsJaXNjX3JlZmNvdW50X2luY3JlbWVudCgmc291cmNlLT50Y3Bjb25uLT5yZWZzLCAmcmVmcyk7Ci0gCUlOU0lTVChyZWZzID4gMSk7Ci0tCXRhcmdldC0+cGlwZWxpbmVfcmVmcyA9IHNvdXJjZS0+cGlwZWxpbmVfcmVmczsKLSsJdGFyZ2V0LT50Y3Bjb25uID0gc291cmNlLT50Y3Bjb25uOwotIH0KLSAKLSAvKiUKLS0gKiBEZWNyZWFzZSB0aGUgY291bnQgb2YgY2xpZW50IHN0cnVjdHVyZXMgdXNpbmcgdGhlIFRDUCBjb25uZWN0aW9uIHRoYXQKLSsgKiBEZWNyZWFzZSB0aGUgY291bnQgb2YgY2xpZW50IHN0cnVjdHVyZXMgc2hhcmluZyB0aGUgVENQIGNvbm5lY3Rpb24gdGhhdAotICAqICdjbGllbnQnIGlzIGFzc29jaWF0ZWQgd2l0aC4gIElmIHRoaXMgaXMgdGhlIGxhc3QgY2xpZW50IHVzaW5nIHRoaXMgVENQCi0tICogY29ubmVjdGlvbiwgZnJlZSB0aGUgcmVmZXJlbmNlIGNvdW50ZXIgYW5kIHJldHVybiB0cnVlOyBvdGhlcndpc2UsIHJldHVybgotLSAqIGZhbHNlLgotKyAqIGNvbm5lY3Rpb24sIHdlIGRldGFjaCBmcm9tIHRoZSBUQ1AgcXVvdGEgYW5kIGZyZWUgdGhlIHRjcGNvbm4KLSsgKiBvYmplY3QuIEVpdGhlciB3YXksIGNsaWVudC0+dGNwY29ubiBpcyBzZXQgdG8gTlVMTC4KLSAgKi8KLS1zdGF0aWMgYm9vbAotLXBpcGVsaW5lX2RldGFjaChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0tCWlzY19yZWZjb3VudF90ICpyZWZjb3VudDsKLStzdGF0aWMgdm9pZAotK3RjcGNvbm5fZGV0YWNoKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSsJbnNfdGNwY29ubl90ICp0Y29ubiA9IE5VTEw7Ci0gCWludCByZWZzOwotIAotLQlSRVFVSVJFKGNsaWVudC0+cGlwZWxpbmVfcmVmcyAhPSBOVUxMKTsKLS0KLS0JcmVmY291bnQgPSBjbGllbnQtPnBpcGVsaW5lX3JlZnM7Ci0tCWNsaWVudC0+cGlwZWxpbmVfcmVmcyA9IE5VTEw7Ci0rCVJFUVVJUkUoY2xpZW50LT50Y3Bjb25uICE9IE5VTEwpOwotIAotLQlpc2NfcmVmY291bnRfZGVjcmVtZW50KHJlZmNvdW50LCByZWZzKTsKLSsJdGNvbm4gPSBjbGllbnQtPnRjcGNvbm47Ci0rCWNsaWVudC0+dGNwY29ubiA9IE5VTEw7Ci0gCi0rCWlzY19yZWZjb3VudF9kZWNyZW1lbnQoJnRjb25uLT5yZWZzLCAmcmVmcyk7Ci0gCWlmIChyZWZzID09IDApIHsKLS0JCWlzY19tZW1fZnJlZShuc19nX21jdHgsIHJlZnMpOwotLQkJcmV0dXJuICh0cnVlKTsKLSsJCWlzY19xdW90YV9kZXRhY2goJnRjb25uLT50Y3BxdW90YSk7Ci0rCQlpc2NfbWVtX2ZyZWUobnNfZ19tY3R4LCB0Y29ubik7Ci0gCX0KLS0KLS0JcmV0dXJuIChmYWxzZSk7Ci0gfQotIAotLS8qCi0tICogRGV0YWNoIGEgY2xpZW50IGZyb20gdGhlIFRDUCBjbGllbnQgcXVvdGEgaWYgYXBwcm9wcmlhdGUsIGFuZCBzZXQKLS0gKiB0aGUgcXVvdGEgcG9pbnRlciB0byBOVUxMLgotLSAqCi0tICogU29tZXRpbWVzIHdoZW4gdGhlIFRDUCBjbGllbnQgcXVvdGEgaXMgZXhoYXVzdGVkIGJ1dCB0aGVyZSBhcmUgbm8gb3RoZXIKLS0gKiBjbGllbnRzIHNlcnZpY2luZyB0aGUgaW50ZXJmYWNlLCBhIGNsaWVudCB3aWxsIGJlIGFsbG93ZWQgdG8gY29udGludWUKLS0gKiBydW5uaW5nIGRlc3BpdGUgbm90IGhhdmluZyBiZWVuIGF0dGFjaGVkIHRvIHRoZSBxdW90YS4gSW4gdGhpcyBldmVudCwKLS0gKiB0aGUgVENQIHF1b3RhIHdhcyBuZXZlciBhdHRhY2hlZCB0byB0aGUgY2xpZW50LCBzbyB3aGVuIHRoZSBjbGllbnQgKG9yCi0tICogYXNzb2NpYXRlZCBwaXBlbGluZSBncm91cCkgc2h1dHMgZG93biwgdGhlIHF1b3RhIG11c3QgTk9UIGJlIGRldGFjaGVkLgotKy8qJQotKyAqIE1hcmsgYSBjbGllbnQgYXMgYWN0aXZlIGFuZCBpbmNyZW1lbnQgdGhlIGludGVyZmFjZSdzICdudGNwYWN0aXZlJwotKyAqIGNvdW50ZXIsIGFzIGEgc2lnbmFsIHRoYXQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNsaWVudCBzZXJ2aWNpbmcKLSsgKiBUQ1AgcXVlcmllcyBmb3IgdGhlIGludGVyZmFjZS4gSWYgd2UgcmVhY2ggdGhlIFRDUCBjbGllbnQgcXVvdGEgYXQKLSsgKiBzb21lIHBvaW50LCB0aGlzIHdpbGwgYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciBhIHF1b3RhIG92ZXJydW4KLSsgKiBzaG91bGQgYmUgcGVybWl0dGVkLgotICAqCi0tICogT3RoZXJ3aXNlLCBpZiB0aGUgcXVvdGEgcG9pbnRlciBpcyBzZXQsIGl0IHNob3VsZCBiZSBkZXRhY2hlZC4gSWYgbm90Ci0tICogc2V0IGF0IGFsbCwgd2UganVzdCByZXR1cm4gd2l0aG91dCBkb2luZyBhbnl0aGluZy4KLSsgKiBNYXJraW5nIHRoZSBjbGllbnQgYWN0aXZlIHdpdGggdGhlICd0Y3BhY3RpdmUnIGZsYWcgZW5zdXJlcyBwcm9wZXIKLSsgKiBhY2NvdW50aW5nLCBieSBwcmV2ZW50aW5nIHVzIGZyb20gaW5jcmVtZW50aW5nIG9yIGRlY3JlbWVudGluZwotKyAqICdudGNwYWN0aXZlJyBtb3JlIHRoYW4gb25jZSBwZXIgY2xpZW50LgotICAqLwotIHN0YXRpYyB2b2lkCi0tdGNwcXVvdGFfZGlzY29ubmVjdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0tCWlmIChjbGllbnQtPnRjcHF1b3RhID09IE5VTEwpIHsKLS0JCXJldHVybjsKLS0JfQotLQotLQlpZiAoY2xpZW50LT50Y3BhdHRhY2hlZCkgewotLQkJaXNjX3F1b3RhX2RldGFjaCgmY2xpZW50LT50Y3BxdW90YSk7Ci0tCQljbGllbnQtPnRjcGF0dGFjaGVkID0gZmFsc2U7Ci0tCX0gZWxzZSB7Ci0tCQljbGllbnQtPnRjcHF1b3RhID0gTlVMTDsKLSttYXJrX3RjcF9hY3RpdmUobnNfY2xpZW50X3QgKmNsaWVudCwgYm9vbCBhY3RpdmUpIHsKLSsJaWYgKGFjdGl2ZSAmJiAhY2xpZW50LT50Y3BhY3RpdmUpIHsKLSsJCWlzY19hdG9taWNfeGFkZCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUsIDEpOwotKwkJY2xpZW50LT50Y3BhY3RpdmUgPSBhY3RpdmU7Ci0rCX0gZWxzZSBpZiAoIWFjdGl2ZSAmJiBjbGllbnQtPnRjcGFjdGl2ZSkgewotKwkJdWludDMyX3Qgb2xkID0KLSsJCQlpc2NfYXRvbWljX3hhZGQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLCAtMSk7Ci0rCQlJTlNJU1Qob2xkID4gMCk7Ci0rCQljbGllbnQtPnRjcGFjdGl2ZSA9IGFjdGl2ZTsKLSAJfQotIH0KLSAKLUBAIC00ODQsNyArNTAxLDggQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQlJTlNJU1QoY2xpZW50LT5yZWN1cnNpb25xdW90YSA9PSBOVUxMKTsKLSAKLSAJCWlmIChOU19DTElFTlRTVEFURV9SRUFESU5HID09IGNsaWVudC0+bmV3c3RhdGUpIHsKLS0JCQlpZiAoIWNsaWVudC0+cGlwZWxpbmVkKSB7Ci0rCQkJSU5TSVNUKGNsaWVudC0+dGNwY29ubiAhPSBOVUxMKTsKLSsJCQlpZiAoIWNsaWVudC0+dGNwY29ubi0+cGlwZWxpbmVkKSB7Ci0gCQkJCWNsaWVudF9yZWFkKGNsaWVudCk7Ci0gCQkJCWNsaWVudC0+bmV3c3RhdGUgPSBOU19DTElFTlRTVEFURV9NQVg7Ci0gCQkJCXJldHVybiAodHJ1ZSk7IC8qIFdlJ3JlIGRvbmUuICovCi1AQCAtNTA3LDggKzUyNSw4IEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJCWRuc190Y3Btc2dfY2FuY2VscmVhZCgmY2xpZW50LT50Y3Btc2cpOwotIAkJfQotIAotLQkJaWYgKGNsaWVudC0+bnJlYWRzICE9IDApIHsKLS0JCQkvKiBTdGlsbCB3YWl0aW5nIGZvciByZWFkIGNhbmNlbCBjb21wbGV0aW9uLiAqLwotKwkJLyogU3RpbGwgd2FpdGluZyBmb3IgcmVhZCBjYW5jZWwgY29tcGxldGlvbi4gKi8KLSsJCWlmIChjbGllbnQtPm5yZWFkcyA+IDApIHsKLSAJCQlyZXR1cm4gKHRydWUpOwotIAkJfQotIAotQEAgLTUxOCw0MyArNTM2LDQ1IEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJfQotIAotIAkJLyoKLS0JCSAqIERldGFjaCBmcm9tIHBpcGVsaW5lIGdyb3VwIGFuZCBmcm9tIFRDUCBjbGllbnQgcXVvdGEsCi0tCQkgKiBpZiBhcHByb3ByaWF0ZS4KLSsJCSAqIFNvb24gdGhlIGNsaWVudCB3aWxsIGJlIHJlYWR5IHRvIGFjY2VwdCBhIG5ldyBUQ1AKLSsJCSAqIGNvbm5lY3Rpb24gb3IgVURQIHJlcXVlc3QsIGJ1dCB3ZSBtYXkgaGF2ZSBlbm91Z2gKLSsJCSAqIGNsaWVudHMgZG9pbmcgdGhhdCBhbHJlYWR5LiAgQ2hlY2sgd2hldGhlciB0aGlzIGNsaWVudAotKwkJICogbmVlZHMgdG8gcmVtYWluIGFjdGl2ZSBhbmQgYWxsb3cgaXQgZ28gaW5hY3RpdmUgaWYKLSsJCSAqIG5vdC4KLSAJCSAqCi0tCQkgKiAtIElmIG5vIHBpcGVsaW5lIGdyb3VwIGlzIGFjdGl2ZSwgYXR0ZW1wdCB0bwotLQkJICogICBkZXRhY2ggZnJvbSB0aGUgVENQIGNsaWVudCBxdW90YS4KLSsJCSAqIFVEUCBjbGllbnRzIGFsd2F5cyBnbyBpbmFjdGl2ZSBhdCB0aGlzIHBvaW50LCBidXQgYSBUQ1AKLSsJCSAqIGNsaWVudCBtYXkgbmVlZCB0byBzdGF5IGFjdGl2ZSBhbmQgcmV0dXJuIHRvIFJFQURZCi0rCQkgKiBzdGF0ZSBpZiBubyBvdGhlciBjbGllbnRzIGFyZSBhdmFpbGFibGUgdG8gbGlzdGVuCi0rCQkgKiBmb3IgVENQIHJlcXVlc3RzIG9uIHRoaXMgaW50ZXJmYWNlLgotIAkJICoKLS0JCSAqIC0gSWYgYSBwaXBlbGluZSBncm91cCBpcyBhY3RpdmUsIGRldGFjaCBmcm9tIGl0OwotLQkJICogICBpZiB0aGUgcmV0dXJuIGNvZGUgaW5kaWNhdGVzIHRoYXQgdGhlcmUgbm8gbW9yZQotLQkJICogICBjbGllbnRzIGxlZnQgaWYgdGhpcyBwaXBlbGluZSBncm91cCwgd2UgYWxzbyBkZXRhY2gKLS0JCSAqICAgZnJvbSB0aGUgVENQIGNsaWVudCBxdW90YS4KLS0JCSAqCi0tCQkgKiAtIE90aGVyd2lzZSB3ZSBkb24ndCB0cnkgdG8gZGV0YWNoLCB3ZSBqdXN0IHNldCB0aGUKLS0JCSAqICAgVENQIHF1b3RhIHBvaW50ZXIgdG8gTlVMTCBpZiBpdCB3YXNuJ3QgTlVMTCBhbHJlYWR5LgotLQkJICoKLS0JCSAqIHRjcHF1b3RhX2Rpc2Nvbm5lY3QoKSB3aWxsIHNldCB0Y3BxdW90YSB0byBOVUxMLCBlaXRoZXIKLS0JCSAqIGJ5IGRldGFjaGluZyBpdCBvciBieSBhc3NpZ25tZW50LCBkZXBlbmRpbmcgb24gdGhlCi0tCQkgKiBuZWVkcyBvZiB0aGUgY2xpZW50LiBTZWUgdGhlIGNvbW1lbnRzIG9uIHRoYXQgZnVuY3Rpb24KLS0JCSAqIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgotKwkJICogUmVnYXJkbGVzcywgaWYgd2UncmUgZ29pbmcgdG8gRlJFRUQgc3RhdGUsIHRoYXQgbWVhbnMKLSsJCSAqIHRoZSBzeXN0ZW0gaXMgc2h1dHRpbmcgZG93biBhbmQgd2UgZG9uJ3QgbmVlZCB0bwotKwkJICogcmV0YWluIGNsaWVudHMuCi0gCQkgKi8KLS0JCWlmIChjbGllbnQtPnBpcGVsaW5lX3JlZnMgPT0gTlVMTCB8fCBwaXBlbGluZV9kZXRhY2goY2xpZW50KSkgewotLQkJCXRjcHF1b3RhX2Rpc2Nvbm5lY3QoY2xpZW50KTsKLS0JCX0gZWxzZSB7Ci0tCQkJY2xpZW50LT50Y3BxdW90YSA9IE5VTEw7Ci0tCQkJY2xpZW50LT50Y3BhdHRhY2hlZCA9IGZhbHNlOwotKwkJaWYgKGNsaWVudC0+bW9ydGFsICYmIFRDUF9DTElFTlQoY2xpZW50KSAmJgotKwkJICAgIGNsaWVudC0+bmV3c3RhdGUgIT0gTlNfQ0xJRU5UU1RBVEVfRlJFRUQgJiYKLSsJCSAgICAhbnNfZ19jbGllbnR0ZXN0ICYmCi0rCQkgICAgaXNjX2F0b21pY194YWRkKCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZywgMCkgPT0gMCkKLSsJCXsKLSsJCQkvKiBOb2JvZHkgZWxzZSBpcyBhY2NlcHRpbmcgKi8KLSsJCQljbGllbnQtPm1vcnRhbCA9IGZhbHNlOwotKwkJCWNsaWVudC0+bmV3c3RhdGUgPSBOU19DTElFTlRTVEFURV9SRUFEWTsKLSsJCX0KLSsKLSsJCS8qCi0rCQkgKiBEZXRhY2ggZnJvbSBUQ1AgY29ubmVjdGlvbiBhbmQgVENQIGNsaWVudCBxdW90YSwKLSsJCSAqIGlmIGFwcHJvcHJpYXRlLiBJZiB0aGlzIGlzIHRoZSBsYXN0IHJlZmVyZW5jZSB0bwotKwkJICogdGhlIFRDUCBjb25uZWN0aW9uIGluIG91ciBwaXBlbGluZSBncm91cCwgdGhlCi0rCQkgKiBUQ1AgcXVvdGEgc2xvdCB3aWxsIGJlIHJlbGVhc2VkLgotKwkJICovCi0rCQlpZiAoY2xpZW50LT50Y3Bjb25uKSB7Ci0rCQkJdGNwY29ubl9kZXRhY2goY2xpZW50KTsKLSAJCX0KLSAKLSAJCWlmIChjbGllbnQtPnRjcHNvY2tldCAhPSBOVUxMKSB7Ci0gCQkJQ1RSQUNFKCJjbG9zZXRjcCIpOwotIAkJCWlzY19zb2NrZXRfZGV0YWNoKCZjbGllbnQtPnRjcHNvY2tldCk7Ci0tCi0tCQkJaWYgKGNsaWVudC0+dGNwYWN0aXZlKSB7Ci0tCQkJCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCQkJSU5TSVNUKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlID4gMCk7Ci0tCQkJCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLS07Ci0tCQkJCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQkJCQljbGllbnQtPnRjcGFjdGl2ZSA9IGZhbHNlOwotLQkJCX0KLSsJCQltYXJrX3RjcF9hY3RpdmUoY2xpZW50LCBmYWxzZSk7Ci0gCQl9Ci0gCi0gCQlpZiAoY2xpZW50LT50aW1lcnNldCkgewotQEAgLTU2NywzNSArNTg3LDYgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQljbGllbnQtPnBlZXJhZGRyX3ZhbGlkID0gZmFsc2U7Ci0gCi0gCQljbGllbnQtPnN0YXRlID0gTlNfQ0xJRU5UU1RBVEVfUkVBRFk7Ci0tCQlJTlNJU1QoY2xpZW50LT5yZWN1cnNpb25xdW90YSA9PSBOVUxMKTsKLS0KLS0JCS8qCi0tCQkgKiBOb3cgdGhlIGNsaWVudCBpcyByZWFkeSB0byBhY2NlcHQgYSBuZXcgVENQIGNvbm5lY3Rpb24KLS0JCSAqIG9yIFVEUCByZXF1ZXN0LCBidXQgd2UgbWF5IGhhdmUgZW5vdWdoIGNsaWVudHMgZG9pbmcKLS0JCSAqIHRoYXQgYWxyZWFkeS4gIENoZWNrIHdoZXRoZXIgdGhpcyBjbGllbnQgbmVlZHMgdG8gcmVtYWluCi0tCQkgKiBhY3RpdmUgYW5kIGZvcmNlIGl0IHRvIGdvIGluYWN0aXZlIGlmIG5vdC4KLS0JCSAqCi0tCQkgKiBVRFAgY2xpZW50cyBnbyBpbmFjdGl2ZSBhdCB0aGlzIHBvaW50LCBidXQgYSBUQ1AgY2xpZW50Ci0tCQkgKiBtYXkgbmVlZCB0byByZW1haW4gYWN0aXZlIGFuZCBnbyBpbnRvIHJlYWR5IHN0YXRlIGlmCi0tCQkgKiBubyBvdGhlciBjbGllbnRzIGFyZSBhdmFpbGFibGUgdG8gbGlzdGVuIGZvciBUQ1AKLS0JCSAqIHJlcXVlc3RzIG9uIHRoaXMgaW50ZXJmYWNlIG9yIChpbiB0aGUgY2FzZSBvZiBwaXBlbGluZWQKLS0JCSAqIGNsaWVudHMpIHRvIHJlYWQgZm9yIGFkZGl0aW9uYWwgbWVzc2FnZXMgb24gdGhlIGN1cnJlbnQKLS0JCSAqIGNvbm5lY3Rpb24uCi0tCQkgKi8KLS0JCWlmIChjbGllbnQtPm1vcnRhbCAmJiBUQ1BfQ0xJRU5UKGNsaWVudCkgJiYgIW5zX2dfY2xpZW50dGVzdCkgewotLQkJCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCQlpZiAoKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nID09IDAgfHwKLS0JCQkgICAgKGNsaWVudC0+cGlwZWxpbmVkICYmCi0tCQkJICAgICBjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSA8IDIpKSAmJgotLQkJCSAgICBjbGllbnQtPm5ld3N0YXRlICE9IE5TX0NMSUVOVFNUQVRFX0ZSRUVEKQotLQkJCXsKLS0JCQkJY2xpZW50LT5tb3J0YWwgPSBmYWxzZTsKLS0JCQkJY2xpZW50LT5uZXdzdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX1JFQURZOwotLQkJCX0KLS0JCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCX0KLS0KLS0JCWNsaWVudC0+cGlwZWxpbmVkID0gZmFsc2U7Ci0gCi0gCQkvKgotIAkJICogV2UgZG9uJ3QgbmVlZCB0aGUgY2xpZW50OyBzZW5kIGl0IHRvIHRoZSBpbmFjdGl2ZQotQEAgLTYzMCw3ICs2MjEsNyBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCX0KLSAKLSAJCS8qIFN0aWxsIHdhaXRpbmcgZm9yIGFjY2VwdCBjYW5jZWwgY29tcGxldGlvbi4gKi8KLS0JCWlmICghIChjbGllbnQtPm5hY2NlcHRzID09IDApKSB7Ci0rCQlpZiAoY2xpZW50LT5uYWNjZXB0cyA+IDApIHsKLSAJCQlyZXR1cm4gKHRydWUpOwotIAkJfQotIAotQEAgLTY0MSw3ICs2MzIsNyBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCX0KLSAKLSAJCS8qIFN0aWxsIHdhaXRpbmcgZm9yIHJlY3YgY2FuY2VsIGNvbXBsZXRpb24uICovCi0tCQlpZiAoISAoY2xpZW50LT5ucmVjdnMgPT0gMCkpIHsKLSsJCWlmIChjbGllbnQtPm5yZWN2cyA+IDApIHsKLSAJCQlyZXR1cm4gKHRydWUpOwotIAkJfQotIAotQEAgLTY1NCwxNCArNjQ1LDcgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQlJTlNJU1QoY2xpZW50LT5yZWN1cnNpb25xdW90YSA9PSBOVUxMKTsKLSAJCWlmIChjbGllbnQtPnRjcGxpc3RlbmVyICE9IE5VTEwpIHsKLSAJCQlpc2Nfc29ja2V0X2RldGFjaCgmY2xpZW50LT50Y3BsaXN0ZW5lcik7Ci0tCi0tCQkJaWYgKGNsaWVudC0+dGNwYWN0aXZlKSB7Ci0tCQkJCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCQkJSU5TSVNUKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlID4gMCk7Ci0tCQkJCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLS07Ci0tCQkJCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQkJCQljbGllbnQtPnRjcGFjdGl2ZSA9IGZhbHNlOwotLQkJCX0KLSsJCQltYXJrX3RjcF9hY3RpdmUoY2xpZW50LCBmYWxzZSk7Ci0gCQl9Ci0gCQlpZiAoY2xpZW50LT51ZHBzb2NrZXQgIT0gTlVMTCkgewotIAkJCWlzY19zb2NrZXRfZGV0YWNoKCZjbGllbnQtPnVkcHNvY2tldCk7Ci1AQCAtODE2LDcgKzgwMCw3IEBAIGNsaWVudF9zdGFydChpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJCXJldHVybjsKLSAKLSAJaWYgKFRDUF9DTElFTlQoY2xpZW50KSkgewotLQkJaWYgKGNsaWVudC0+cGlwZWxpbmVkKSB7Ci0rCQlpZiAoY2xpZW50LT50Y3Bjb25uICE9IE5VTEwpIHsKLSAJCQljbGllbnRfcmVhZChjbGllbnQpOwotIAkJfSBlbHNlIHsKLSAJCQljbGllbnRfYWNjZXB0KGNsaWVudCk7Ci1AQCAtMjQ3MCw2ICsyNDU0LDcgQEAgY2xpZW50X3JlcXVlc3QoaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCQljbGllbnQtPm5yZWN2cy0tOwotIAl9IGVsc2UgewotIAkJSU5TSVNUKFRDUF9DTElFTlQoY2xpZW50KSk7Ci0rCQlJTlNJU1QoY2xpZW50LT50Y3Bjb25uICE9IE5VTEwpOwotIAkJUkVRVUlSRShldmVudC0+ZXZfdHlwZSA9PSBETlNfRVZFTlRfVENQTVNHKTsKLSAJCVJFUVVJUkUoZXZlbnQtPmV2X3NlbmRlciA9PSAmY2xpZW50LT50Y3Btc2cpOwotIAkJYnVmZmVyID0gJmNsaWVudC0+dGNwbXNnLmJ1ZmZlcjsKLUBAIC0yNjU3LDE3ICsyNjQyLDE5IEBAIGNsaWVudF9yZXF1ZXN0KGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAkvKgotIAkgKiBQaXBlbGluZSBUQ1AgcXVlcnkgcHJvY2Vzc2luZy4KLSAJICovCi0tCWlmIChjbGllbnQtPm1lc3NhZ2UtPm9wY29kZSAhPSBkbnNfb3Bjb2RlX3F1ZXJ5KSB7Ci0tCQljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotKwlpZiAoVENQX0NMSUVOVChjbGllbnQpICYmCi0rCSAgICBjbGllbnQtPm1lc3NhZ2UtPm9wY29kZSAhPSBkbnNfb3Bjb2RlX3F1ZXJ5KQotKwl7Ci0rCQljbGllbnQtPnRjcGNvbm4tPnBpcGVsaW5lZCA9IGZhbHNlOwotIAl9Ci0tCWlmIChUQ1BfQ0xJRU5UKGNsaWVudCkgJiYgY2xpZW50LT5waXBlbGluZWQpIHsKLSsJaWYgKFRDUF9DTElFTlQoY2xpZW50KSAmJiBjbGllbnQtPnRjcGNvbm4tPnBpcGVsaW5lZCkgewotIAkJLyoKLSAJCSAqIFdlJ3JlIHBpcGVsaW5pbmcuIFJlcGxhY2UgdGhlIGNsaWVudDsgdGhlCi0tCQkgKiB0aGUgcmVwbGFjZW1lbnQgY2FuIHJlYWQgdGhlIFRDUCBzb2NrZXQgbG9va2luZwotLQkJICogZm9yIG5ldyBtZXNzYWdlcyBhbmQgdGhpcyBjbGllbnQgY2FuIHByb2Nlc3MgdGhlCi0rCQkgKiByZXBsYWNlbWVudCBjYW4gcmVhZCB0aGUgVENQIHNvY2tldCBsb29raW5nCi0rCQkgKiBmb3IgbmV3IG1lc3NhZ2VzIGFuZCB0aGlzIG9uZSBjYW4gcHJvY2VzcyB0aGUKLSAJCSAqIGN1cnJlbnQgbWVzc2FnZSBhc3luY2hyb25vdXNseS4KLSAJCSAqCi0tCQkgKiBUaGVyZSBhcmUgbm93IGF0IGxlYXN0IHRocmVlIGNsaWVudHMgdXNpbmcgdGhpcwotKwkJICogVGhlcmUgd2lsbCBub3cgYmUgYXQgbGVhc3QgdGhyZWUgY2xpZW50cyB1c2luZyB0aGlzCi0gCQkgKiBUQ1Agc29ja2V0IC0gb25lIGFjY2VwdGluZyBuZXcgY29ubmVjdGlvbnMsCi0gCQkgKiBvbmUgcmVhZGluZyBhbiBleGlzdGluZyBjb25uZWN0aW9uIHRvIGdldCBuZXcKLSAJCSAqIG1lc3NhZ2VzLCBhbmQgb25lIGFuc3dlcmluZyB0aGUgbWVzc2FnZSBhbHJlYWR5Ci1AQCAtMjY3NSw3ICsyNjYyLDcgQEAgY2xpZW50X3JlcXVlc3QoaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCQkgKi8KLSAJCXJlc3VsdCA9IG5zX2NsaWVudF9yZXBsYWNlKGNsaWVudCk7Ci0gCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpIHsKLS0JCQljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotKwkJCWNsaWVudC0+dGNwY29ubi0+cGlwZWxpbmVkID0gZmFsc2U7Ci0gCQl9Ci0gCX0KLSAKLUBAIC0zMjMzLDEwICszMjIwLDcgQEAgY2xpZW50X2NyZWF0ZShuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfY2xpZW50X3QgKipjbGllbnRwKSB7Ci0gCWNsaWVudC0+c2lnbmVyID0gTlVMTDsKLSAJZG5zX25hbWVfaW5pdCgmY2xpZW50LT5zaWduZXJuYW1lLCBOVUxMKTsKLSAJY2xpZW50LT5tb3J0YWwgPSBmYWxzZTsKLS0JY2xpZW50LT5waXBlbGluZWQgPSBmYWxzZTsKLS0JY2xpZW50LT5waXBlbGluZV9yZWZzID0gTlVMTDsKLS0JY2xpZW50LT50Y3BxdW90YSA9IE5VTEw7Ci0tCWNsaWVudC0+dGNwYXR0YWNoZWQgPSBmYWxzZTsKLSsJY2xpZW50LT50Y3Bjb25uID0gTlVMTDsKLSAJY2xpZW50LT5yZWN1cnNpb25xdW90YSA9IE5VTEw7Ci0gCWNsaWVudC0+aW50ZXJmYWNlID0gTlVMTDsKLSAJY2xpZW50LT5wZWVyYWRkcl92YWxpZCA9IGZhbHNlOwotQEAgLTMzNDEsOSArMzMyNSwxMCBAQCBjbGllbnRfcmVhZChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCi0gc3RhdGljIHZvaWQKLSBjbGllbnRfbmV3Y29ubihpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSsJaXNjX3Jlc3VsdF90IHJlc3VsdDsKLSAJbnNfY2xpZW50X3QgKmNsaWVudCA9IGV2ZW50LT5ldl9hcmc7Ci0gCWlzY19zb2NrZXRfbmV3Y29ubmV2X3QgKm5ldmVudCA9IChpc2Nfc29ja2V0X25ld2Nvbm5ldl90ICopZXZlbnQ7Ci0tCWlzY19yZXN1bHRfdCByZXN1bHQ7Ci0rCXVpbnQzMl90IG9sZDsKLSAKLSAJUkVRVUlSRShldmVudC0+ZXZfdHlwZSA9PSBJU0NfU09DS0VWRU5UX05FV0NPTk4pOwotIAlSRVFVSVJFKE5TX0NMSUVOVF9WQUxJRChjbGllbnQpKTsKLUBAIC0zMzYzLDEwICszMzQ4LDggQEAgY2xpZW50X25ld2Nvbm4oaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCUlOU0lTVChjbGllbnQtPm5hY2NlcHRzID09IDEpOwotIAljbGllbnQtPm5hY2NlcHRzLS07Ci0gCi0tCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JSU5TSVNUKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nID4gMCk7Ci0tCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nLS07Ci0tCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwlvbGQgPSBpc2NfYXRvbWljX3hhZGQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nLCAtMSk7Ci0rCUlOU0lTVChvbGQgPiAwKTsKLSAKLSAJLyoKLSAJICogV2UgbXVzdCB0YWtlIG93bmVyc2hpcCBvZiB0aGUgbmV3IHNvY2tldCBiZWZvcmUgdGhlIGV4aXQKLUBAIC0zMzk5LDcgKzMzODIsNyBAQCBjbGllbnRfbmV3Y29ubihpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJCQkgICAgICBOU19MT0dNT0RVTEVfQ0xJRU5ULCBJU0NfTE9HX0RFQlVHKDMpLAotIAkJCSAgICAgICJhY2NlcHQgZmFpbGVkOiAlcyIsCi0gCQkJICAgICAgaXNjX3Jlc3VsdF90b3RleHQobmV2ZW50LT5yZXN1bHQpKTsKLS0JCXRjcHF1b3RhX2Rpc2Nvbm5lY3QoY2xpZW50KTsKLSsJCXRjcGNvbm5fZGV0YWNoKGNsaWVudCk7Ci0gCX0KLSAKLSAJaWYgKGV4aXRfY2hlY2soY2xpZW50KSkKLUBAIC0zNDM3LDE1ICszNDIwLDEzIEBAIGNsaWVudF9uZXdjb25uKGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAkJICogdGVsbmV0dGluZyB0byBwb3J0IDUzIChvbmNlIHBlciBDUFUpIHdpbGwKLSAJCSAqIGRlbnkgc2VydmljZSB0byBsZWdpdGltYXRlIFRDUCBjbGllbnRzLgotIAkJICovCi0tCQljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotIAkJcmVzdWx0ID0gbnNfY2xpZW50X3JlcGxhY2UoY2xpZW50KTsKLSAJCWlmIChyZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUyAmJgotIAkJICAgIChuc19nX3NlcnZlci0+a2VlcHJlc3BvcmRlciA9PSBOVUxMIHx8Ci0gCQkgICAgICFhbGxvd2VkKCZuZXRhZGRyLCBOVUxMLCBOVUxMLCAwLCBOVUxMLAotIAkJCSAgICAgIG5zX2dfc2VydmVyLT5rZWVwcmVzcG9yZGVyKSkpCi0gCQl7Ci0tCQkJcGlwZWxpbmVfaW5pdChjbGllbnQpOwotLQkJCWNsaWVudC0+cGlwZWxpbmVkID0gdHJ1ZTsKLSsJCQljbGllbnQtPnRjcGNvbm4tPnBpcGVsaW5lZCA9IHRydWU7Ci0gCQl9Ci0gCi0gCQljbGllbnRfcmVhZChjbGllbnQpOwotQEAgLTM0NjIsNzggKzM0NDMsNTkgQEAgY2xpZW50X2FjY2VwdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCUNUUkFDRSgiYWNjZXB0Iik7Ci0gCi0gCS8qCi0tCSAqIFRoZSB0Y3BxdW90YSBvYmplY3QgY2FuIG9ubHkgYmUgc2ltdWx0YW5lb3VzbHkgcmVmZXJlbmNlZCBhCi0tCSAqIHByZS1kZWZpbmVkIG51bWJlciBvZiB0aW1lczsgdGhpcyBpcyBjb25maWd1cmVkIGJ5ICd0Y3AtY2xpZW50cycKLS0JICogaW4gbmFtZWQuY29uZi4gSWYgd2UgY2FuJ3QgYXR0YWNoIHRvIGl0IGhlcmUsIHRoYXQgbWVhbnMgdGhlIFRDUAotLQkgKiBjbGllbnQgcXVvdGEgaGFzIGJlZW4gZXhjZWVkZWQuCi0rCSAqIFNldCB1cCBhIG5ldyBUQ1AgY29ubmVjdGlvbi4gVGhpcyBtZWFucyB0cnkgdG8gYXR0YWNoIHRvIHRoZQotKwkgKiBUQ1AgY2xpZW50IHF1b3RhICh0Y3AtY2xpZW50cyksIGJ1dCBmYWlsIGlmIHdlJ3JlIG92ZXIgcXVvdGEuCi0gCSAqLwotLQlyZXN1bHQgPSBpc2NfcXVvdGFfYXR0YWNoKCZuc19nX3NlcnZlci0+dGNwcXVvdGEsCi0tCQkJCSAgJmNsaWVudC0+dGNwcXVvdGEpOwotKwlyZXN1bHQgPSB0Y3Bjb25uX2luaXQoY2xpZW50LCBmYWxzZSk7Ci0gCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykgewotLQkJCWJvb2wgZXhpdDsKLSsJCWJvb2wgZXhpdDsKLSAKLS0JCQluc19jbGllbnRfbG9nKGNsaWVudCwgTlNfTE9HQ0FURUdPUllfQ0xJRU5ULAotLQkJCQkgICAgICBOU19MT0dNT0RVTEVfQ0xJRU5ULCBJU0NfTE9HX0RFQlVHKDEpLAotLQkJCQkgICAgICAibm8gbW9yZSBUQ1AgY2xpZW50czogJXMiLAotLQkJCQkgICAgICBpc2NfcmVzdWx0X3RvdGV4dChyZXN1bHQpKTsKLS0KLS0JCQkvKgotLQkJCSAqIFdlIGhhdmUgZXhjZWVkZWQgdGhlIHN5c3RlbS13aWRlIFRDUCBjbGllbnQKLS0JCQkgKiBxdW90YS4gIEJ1dCwgd2UgY2FuJ3QganVzdCBibG9jayB0aGlzIGFjY2VwdAotLQkJCSAqIGluIGFsbCBjYXNlcywgYmVjYXVzZSBpZiB3ZSBkaWQsIGEgaGVhdnkgVENQCi0tCQkJICogbG9hZCBvbiBvdGhlciBpbnRlcmZhY2VzIG1pZ2h0IGNhdXNlIHRoaXMKLS0JCQkgKiBpbnRlcmZhY2UgdG8gYmUgc3RhcnZlZCwgd2l0aCBubyBjbGllbnRzIGFibGUKLS0JCQkgKiB0byBhY2NlcHQgbmV3IGNvbm5lY3Rpb25zLgotLQkJCSAqCi0tCQkJICogU28sIHdlIGNoZWNrIGhlcmUgdG8gc2VlIGlmIGFueSBvdGhlciBjbGllbnRzCi0tCQkJICogYXJlIGFscmVhZHkgc2VydmljaW5nIFRDUCBxdWVyaWVzIG9uIHRoaXMKLS0JCQkgKiBpbnRlcmZhY2UgKHdoZXRoZXIgYWNjZXB0aW5nLCByZWFkaW5nLCBvcgotLQkJCSAqIHByb2Nlc3NpbmcpLiBJZiB0aGVyZSBhcmUgYXQgbGVhc3QgdHdvCi0tCQkJICogKG9uZSByZWFkaW5nIGFuZCBvbmUgcHJvY2Vzc2luZyBhIHJlcXVlc3QpCi0tCQkJICogdGhlbiBpdCdzIG9rYXkgKm5vdCogdG8gY2FsbCBhY2NlcHQgLSB3ZQotLQkJCSAqIGNhbiBsZXQgdGhpcyBjbGllbnQgZ28gaW5hY3RpdmUgYW5kIGFub3RoZXIKLS0JCQkgKiBvbmUgd2lsbCByZXN1bWUgYWNjZXB0aW5nIHdoZW4gaXQncyBkb25lLgotLQkJCSAqCi0tCQkJICogSWYgdGhlcmUgYXJlbid0IGVub3VnaCBhY3RpdmUgY2xpZW50cyBvbiB0aGUKLS0JCQkgKiBpbnRlcmZhY2UsIHRoZW4gd2UgY2FuIGJlIGEgbGl0dGxlIGJpdAotLQkJCSAqIGZsZXhpYmxlIGFib3V0IHRoZSBxdW90YS4gV2UnbGwgYWxsb3cgKm9uZSoKLS0JCQkgKiBleHRyYSBjbGllbnQgdGhyb3VnaCB0byBlbnN1cmUgd2UncmUgbGlzdGVuaW5nCi0tCQkJICogb24gZXZlcnkgaW50ZXJmYWNlLgotLQkJCSAqCi0tCQkJICogKE5vdGU6IEluIHByYWN0aWNlIHRoaXMgbWVhbnMgdGhhdCB0aGUgcmVhbAotLQkJCSAqIFRDUCBjbGllbnQgcXVvdGEgaXMgdGNwLWNsaWVudHMgcGx1cyB0aGUKLS0JCQkgKiBudW1iZXIgb2YgbGlzdGVuaW5nIGludGVyZmFjZXMgcGx1cyAyLikKLS0JCQkgKi8KLS0JCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCQkJZXhpdCA9IChjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSA+IDEpOwotLQkJCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwkJbnNfY2xpZW50X2xvZyhjbGllbnQsIE5TX0xPR0NBVEVHT1JZX0NMSUVOVCwKLSsJCQkgICAgICBOU19MT0dNT0RVTEVfQ0xJRU5ULCBJU0NfTE9HX1dBUk5JTkcsCi0rCQkJICAgICAgIlRDUCBjbGllbnQgcXVvdGEgcmVhY2hlZDogJXMiLAotKwkJCSAgICAgIGlzY19yZXN1bHRfdG90ZXh0KHJlc3VsdCkpOwotIAotLQkJCWlmIChleGl0KSB7Ci0tCQkJCWNsaWVudC0+bmV3c3RhdGUgPSBOU19DTElFTlRTVEFURV9JTkFDVElWRTsKLS0JCQkJKHZvaWQpZXhpdF9jaGVjayhjbGllbnQpOwotLQkJCQlyZXR1cm47Ci0tCQkJfQotKwkJLyoKLSsJCSAqIFdlIGhhdmUgZXhjZWVkZWQgdGhlIHN5c3RlbS13aWRlIFRDUCBjbGllbnQgcXVvdGEuICBCdXQsCi0rCQkgKiB3ZSBjYW4ndCBqdXN0IGJsb2NrIHRoaXMgYWNjZXB0IGluIGFsbCBjYXNlcywgYmVjYXVzZSBpZgotKwkJICogd2UgZGlkLCBhIGhlYXZ5IFRDUCBsb2FkIG9uIG90aGVyIGludGVyZmFjZXMgbWlnaHQgY2F1c2UKLSsJCSAqIHRoaXMgaW50ZXJmYWNlIHRvIGJlIHN0YXJ2ZWQsIHdpdGggbm8gY2xpZW50cyBhYmxlIHRvCi0rCQkgKiBhY2NlcHQgbmV3IGNvbm5lY3Rpb25zLgotKwkJICoKLSsJCSAqIFNvLCB3ZSBjaGVjayBoZXJlIHRvIHNlZSBpZiBhbnkgb3RoZXIgY2xpZW50cyBhcmUKLSsJCSAqIGFscmVhZHkgc2VydmljaW5nIFRDUCBxdWVyaWVzIG9uIHRoaXMgaW50ZXJmYWNlICh3aGV0aGVyCi0rCQkgKiBhY2NlcHRpbmcsIHJlYWRpbmcsIG9yIHByb2Nlc3NpbmcpLiBJZiB3ZSBmaW5kIGF0IGxlYXN0Ci0rCQkgKiBvbmUsIHRoZW4gaXQncyBva2F5ICpub3QqIHRvIGNhbGwgYWNjZXB0IC0gd2UgY2FuIGxldCB0aGlzCi0rCQkgKiBjbGllbnQgZ28gaW5hY3RpdmUgYW5kIGFub3RoZXIgd2lsbCB0YWtlIG92ZXIgd2hlbiBpdCdzCi0rCQkgKiBkb25lLgotKwkJICoKLSsJCSAqIElmIHRoZXJlIGFyZW4ndCBlbm91Z2ggYWN0aXZlIGNsaWVudHMgb24gdGhlIGludGVyZmFjZSwKLSsJCSAqIHRoZW4gd2UgY2FuIGJlIGEgbGl0dGxlIGJpdCBmbGV4aWJsZSBhYm91dCB0aGUgcXVvdGEuCi0rCQkgKiBXZSdsbCBhbGxvdyAqb25lKiBleHRyYSBjbGllbnQgdGhyb3VnaCB0byBlbnN1cmUgd2UncmUKLSsJCSAqIGxpc3RlbmluZyBvbiBldmVyeSBpbnRlcmZhY2U7IHdlIGRvIHRoaXMgYnkgc2V0dGluZyB0aGUKLSsJCSAqICdmb3JjZScgb3B0aW9uIHRvIHRjcGNvbm5faW5pdCgpLgotKwkJICoKLSsJCSAqIChOb3RlOiBJbiBwcmFjdGljZSB0aGlzIG1lYW5zIHRoYXQgdGhlIHJlYWwgVENQIGNsaWVudAotKwkJICogcXVvdGEgaXMgdGNwLWNsaWVudHMgcGx1cyB0aGUgbnVtYmVyIG9mIGxpc3RlbmluZwotKwkJICogaW50ZXJmYWNlcyBwbHVzIDEuKQotKwkJICovCi0rCQlleGl0ID0gKGlzY19hdG9taWNfeGFkZCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUsIDApID4gMCk7Ci0rCQlpZiAoZXhpdCkgewotKwkJCWNsaWVudC0+bmV3c3RhdGUgPSBOU19DTElFTlRTVEFURV9JTkFDVElWRTsKLSsJCQkodm9pZClleGl0X2NoZWNrKGNsaWVudCk7Ci0rCQkJcmV0dXJuOwotKwkJfQotIAotLQl9IGVsc2UgewotLQkJY2xpZW50LT50Y3BhdHRhY2hlZCA9IHRydWU7Ci0rCQlyZXN1bHQgPSB0Y3Bjb25uX2luaXQoY2xpZW50LCB0cnVlKTsKLSsJCVJVTlRJTUVfQ0hFQ0socmVzdWx0ID09IElTQ19SX1NVQ0NFU1MpOwotIAl9Ci0gCi0gCS8qCi0tCSAqIEJ5IGluY3JlbWVudGluZyB0aGUgaW50ZXJmYWNlJ3MgbnRjcGFjdGl2ZSBjb3VudGVyIHdlIHNpZ25hbAotLQkgKiB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjbGllbnQgc2VydmljaW5nIFRDUCBxdWVyaWVzIGZvciB0aGUKLS0JICogaW50ZXJmYWNlLgotLQkgKgotLQkgKiBXZSBhbHNvIG1ha2Ugbm90ZSBvZiB0aGUgZmFjdCBpbiB0aGUgY2xpZW50IGl0c2VsZiB3aXRoIHRoZQotLQkgKiB0Y3BhY3RpdmUgZmxhZy4gVGhpcyBlbnN1cmVzIHByb3BlciBhY2NvdW50aW5nIGJ5IHByZXZlbnRpbmcKLS0JICogdXMgZnJvbSBhY2NpZGVudGFsbHkgaW5jcmVtZW50aW5nIG9yIGRlY3JlbWVudGluZyBudGNwYWN0aXZlCi0tCSAqIG1vcmUgdGhhbiBvbmNlIHBlciBjbGllbnQgb2JqZWN0LgotKwkgKiBJZiB0aGlzIGNsaWVudCB3YXMgc2V0IHVwIHVzaW5nIGdldF9jbGllbnQoKSBvciBnZXRfd29ya2VyKCksCi0rCSAqIHRoZW4gVENQIGlzIGFscmVhZHkgbWFya2VkIGFjdGl2ZS4gSG93ZXZlciwgaWYgaXQgd2FzIHJlc3RhcnRlZAotKwkgKiBmcm9tIGV4aXRfY2hlY2soKSwgaXQgbWlnaHQgbm90IGJlLCBzbyB3ZSB0YWtlIGNhcmUgb2YgaXQgbm93LgotIAkgKi8KLS0JaWYgKCFjbGllbnQtPnRjcGFjdGl2ZSkgewotLQkJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQkJY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUrKzsKLS0JCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQkJY2xpZW50LT50Y3BhY3RpdmUgPSB0cnVlOwotLQl9Ci0rCW1hcmtfdGNwX2FjdGl2ZShjbGllbnQsIHRydWUpOwotIAotIAlyZXN1bHQgPSBpc2Nfc29ja2V0X2FjY2VwdChjbGllbnQtPnRjcGxpc3RlbmVyLCBjbGllbnQtPnRhc2ssCi0gCQkJCSAgIGNsaWVudF9uZXdjb25uLCBjbGllbnQpOwotQEAgLTM1NDksMTUgKzM1MTEsOCBAQCBjbGllbnRfYWNjZXB0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCQkJICJpc2Nfc29ja2V0X2FjY2VwdCgpIGZhaWxlZDogJXMiLAotIAkJCQkgaXNjX3Jlc3VsdF90b3RleHQocmVzdWx0KSk7Ci0gCi0tCQl0Y3BxdW90YV9kaXNjb25uZWN0KGNsaWVudCk7Ci0tCi0tCQlpZiAoY2xpZW50LT50Y3BhY3RpdmUpIHsKLS0JCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCQkJY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUtLTsKLS0JCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCQljbGllbnQtPnRjcGFjdGl2ZSA9IGZhbHNlOwotLQkJfQotLQotKwkJdGNwY29ubl9kZXRhY2goY2xpZW50KTsKLSsJCW1hcmtfdGNwX2FjdGl2ZShjbGllbnQsIGZhbHNlKTsKLSAJCXJldHVybjsKLSAJfQotIAotQEAgLTM1ODIsOSArMzUzNyw3IEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkgKiBsaXN0ZW5pbmcgZm9yIGNvbm5lY3Rpb25zIGl0c2VsZiB0byBwcmV2ZW50IHRoZSBpbnRlcmZhY2UKLSAJICogZ29pbmcgZGVhZC4KLSAJICovCi0tCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcrKzsKLS0JVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCWlzY19hdG9taWNfeGFkZCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcsIDEpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotQEAgLTM2NTUsMjQgKzM2MDgsMjUgQEAgbnNfY2xpZW50X3JlcGxhY2UobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAlSRVFVSVJFKGNsaWVudC0+bWFuYWdlciAhPSBOVUxMKTsKLSAKLSAJdGNwID0gVENQX0NMSUVOVChjbGllbnQpOwotLQlpZiAodGNwICYmIGNsaWVudC0+cGlwZWxpbmVkKSB7Ci0rCWlmICh0Y3AgJiYgY2xpZW50LT50Y3Bjb25uICE9IE5VTEwgJiYgY2xpZW50LT50Y3Bjb25uLT5waXBlbGluZWQpIHsKLSAJCXJlc3VsdCA9IGdldF93b3JrZXIoY2xpZW50LT5tYW5hZ2VyLCBjbGllbnQtPmludGVyZmFjZSwKLSAJCQkJICAgIGNsaWVudC0+dGNwc29ja2V0LCBjbGllbnQpOwotIAl9IGVsc2UgewotIAkJcmVzdWx0ID0gZ2V0X2NsaWVudChjbGllbnQtPm1hbmFnZXIsIGNsaWVudC0+aW50ZXJmYWNlLAotLQkJCQkgICAgY2xpZW50LT5kaXNwYXRjaCwgY2xpZW50LCB0Y3ApOwotKwkJCQkgICAgY2xpZW50LT5kaXNwYXRjaCwgdGNwKTsKLSAKLS0JCS8qCi0tCQkgKiBUaGUgcmVzcG9uc2liaWxpdHkgZm9yIGxpc3RlbmluZyBmb3IgbmV3IHJlcXVlc3RzIGlzIGhlcmVieQotLQkJICogdHJhbnNmZXJyZWQgdG8gdGhlIG5ldyBjbGllbnQuICBUaGVyZWZvcmUsIHRoZSBvbGQgY2xpZW50Ci0tCQkgKiBzaG91bGQgcmVmcmFpbiBmcm9tIGxpc3RlbmluZyBmb3IgYW55IG1vcmUgcmVxdWVzdHMuCi0tCQkgKi8KLS0JCWNsaWVudC0+bW9ydGFsID0gdHJ1ZTsKLSAJfQotIAlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpIHsKLSAJCXJldHVybiAocmVzdWx0KTsKLSAJfQotIAotKwkvKgotKwkgKiBUaGUgcmVzcG9uc2liaWxpdHkgZm9yIGxpc3RlbmluZyBmb3IgbmV3IHJlcXVlc3RzIGlzIGhlcmVieQotKwkgKiB0cmFuc2ZlcnJlZCB0byB0aGUgbmV3IGNsaWVudC4gIFRoZXJlZm9yZSwgdGhlIG9sZCBjbGllbnQKLSsJICogc2hvdWxkIHJlZnJhaW4gZnJvbSBsaXN0ZW5pbmcgZm9yIGFueSBtb3JlIHJlcXVlc3RzLgotKwkgKi8KLSsJY2xpZW50LT5tb3J0YWwgPSB0cnVlOwotKwotIAlyZXR1cm4gKElTQ19SX1NVQ0NFU1MpOwotIH0KLSAKLUBAIC0zODA2LDcgKzM3NjAsNyBAQCBuc19jbGllbnRtZ3JfZGVzdHJveShuc19jbGllbnRtZ3JfdCAqKm1hbmFnZXJwKSB7Ci0gCi0gc3RhdGljIGlzY19yZXN1bHRfdAotIGdldF9jbGllbnQobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsCi0tCSAgIGRuc19kaXNwYXRjaF90ICpkaXNwLCBuc19jbGllbnRfdCAqb2xkY2xpZW50LCBib29sIHRjcCkKLSsJICAgZG5zX2Rpc3BhdGNoX3QgKmRpc3AsIGJvb2wgdGNwKQotIHsKLSAJaXNjX3Jlc3VsdF90IHJlc3VsdCA9IElTQ19SX1NVQ0NFU1M7Ci0gCWlzY19ldmVudF90ICpldjsKLUBAIC0zODUwLDE1ICszODA0LDcgQEAgZ2V0X2NsaWVudChuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwKLSAJY2xpZW50LT5kc2NwID0gaWZwLT5kc2NwOwotIAotIAlpZiAodGNwKSB7Ci0tCQljbGllbnQtPnRjcGF0dGFjaGVkID0gZmFsc2U7Ci0tCQlpZiAob2xkY2xpZW50ICE9IE5VTEwpIHsKLS0JCQljbGllbnQtPnRjcGF0dGFjaGVkID0gb2xkY2xpZW50LT50Y3BhdHRhY2hlZDsKLS0JCX0KLS0KLS0JCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlKys7Ci0tCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCWNsaWVudC0+dGNwYWN0aXZlID0gdHJ1ZTsKLSsJCW1hcmtfdGNwX2FjdGl2ZShjbGllbnQsIHRydWUpOwotIAotIAkJY2xpZW50LT5hdHRyaWJ1dGVzIHw9IE5TX0NMSUVOVEFUVFJfVENQOwotIAkJaXNjX3NvY2tldF9hdHRhY2goaWZwLT50Y3Bzb2NrZXQsCi1AQCAtMzkyMywxNiArMzg2OSwxNCBAQCBnZXRfd29ya2VyKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLCBpc2Nfc29ja2V0X3QgKnNvY2ssCi0gCW5zX2ludGVyZmFjZV9hdHRhY2goaWZwLCAmY2xpZW50LT5pbnRlcmZhY2UpOwotIAljbGllbnQtPm5ld3N0YXRlID0gY2xpZW50LT5zdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX1dPUktJTkc7Ci0gCUlOU0lTVChjbGllbnQtPnJlY3Vyc2lvbnF1b3RhID09IE5VTEwpOwotLQljbGllbnQtPnRjcHF1b3RhID0gJm5zX2dfc2VydmVyLT50Y3BxdW90YTsKLS0JY2xpZW50LT50Y3BhdHRhY2hlZCA9IG9sZGNsaWVudC0+dGNwYXR0YWNoZWQ7Ci0gCi0gCWNsaWVudC0+ZHNjcCA9IGlmcC0+ZHNjcDsKLSAKLSAJY2xpZW50LT5hdHRyaWJ1dGVzIHw9IE5TX0NMSUVOVEFUVFJfVENQOwotIAljbGllbnQtPm1vcnRhbCA9IHRydWU7Ci0gCi0tCXBpcGVsaW5lX2F0dGFjaChvbGRjbGllbnQsIGNsaWVudCk7Ci0tCWNsaWVudC0+cGlwZWxpbmVkID0gdHJ1ZTsKLSsJdGNwY29ubl9hdHRhY2gob2xkY2xpZW50LCBjbGllbnQpOwotKwltYXJrX3RjcF9hY3RpdmUoY2xpZW50LCB0cnVlKTsKLSAKLSAJaXNjX3NvY2tldF9hdHRhY2goaWZwLT50Y3Bzb2NrZXQsICZjbGllbnQtPnRjcGxpc3RlbmVyKTsKLSAJaXNjX3NvY2tldF9hdHRhY2goc29jaywgJmNsaWVudC0+dGNwc29ja2V0KTsKLUBAIC0zOTQwLDExICszODg0LDYgQEAgZ2V0X3dvcmtlcihuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwgaXNjX3NvY2tldF90ICpzb2NrLAotIAkodm9pZClpc2Nfc29ja2V0X2dldHBlZXJuYW1lKGNsaWVudC0+dGNwc29ja2V0LCAmY2xpZW50LT5wZWVyYWRkcik7Ci0gCWNsaWVudC0+cGVlcmFkZHJfdmFsaWQgPSB0cnVlOwotIAotLQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlKys7Ci0tCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQljbGllbnQtPnRjcGFjdGl2ZSA9IHRydWU7Ci0tCi0gCUlOU0lTVChjbGllbnQtPnRjcG1zZ192YWxpZCA9PSBmYWxzZSk7Ci0gCWRuc190Y3Btc2dfaW5pdChjbGllbnQtPm1jdHgsIGNsaWVudC0+dGNwc29ja2V0LCAmY2xpZW50LT50Y3Btc2cpOwotIAljbGllbnQtPnRjcG1zZ192YWxpZCA9IHRydWU7Ci1AQCAtMzk3MCw4ICszOTA5LDcgQEAgbnNfY2xpZW50bWdyX2NyZWF0ZWNsaWVudHMobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIHVuc2lnbmVkIGludCBuLAotIAlNVFJBQ0UoImNyZWF0ZWNsaWVudHMiKTsKLSAKLSAJZm9yIChkaXNwID0gMDsgZGlzcCA8IG47IGRpc3ArKykgewotLQkJcmVzdWx0ID0gZ2V0X2NsaWVudChtYW5hZ2VyLCBpZnAsIGlmcC0+dWRwZGlzcGF0Y2hbZGlzcF0sCi0tCQkJCSAgICBOVUxMLCB0Y3ApOwotKwkJcmVzdWx0ID0gZ2V0X2NsaWVudChtYW5hZ2VyLCBpZnAsIGlmcC0+dWRwZGlzcGF0Y2hbZGlzcF0sIHRjcCk7Ci0gCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCi0gCQkJYnJlYWs7Ci0gCX0KLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaCBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oCi1pbmRleCBlMmM0MGFjZDI4Li45NjllZTRjMDhmIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmgKLSsrKyBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oCi1AQCAtNzgsNiArNzgsMTMgQEAKLSAgKioqIFR5cGVzCi0gICoqKi8KLSAKLSsvKiUgcmVmZXJlbmNlLWNvdW50ZWQgVENQIGNvbm5lY3Rpb24gb2JqZWN0ICovCi0rdHlwZWRlZiBzdHJ1Y3QgbnNfdGNwY29ubiB7Ci0rCWlzY19yZWZjb3VudF90CQlyZWZzOwotKwlpc2NfcXVvdGFfdAkJKnRjcHF1b3RhOwotKwlib29sCQkJcGlwZWxpbmVkOwotK30gbnNfdGNwY29ubl90OwotKwotIC8qJSBuYW1lc2VydmVyIGNsaWVudCBzdHJ1Y3R1cmUgKi8KLSBzdHJ1Y3QgbnNfY2xpZW50IHsKLSAJdW5zaWduZWQgaW50CQltYWdpYzsKLUBAIC0xMzEsMTAgKzEzOCw3IEBAIHN0cnVjdCBuc19jbGllbnQgewotIAlkbnNfbmFtZV90CQlzaWduZXJuYW1lOyAgIC8qJTwgW1RdU0lHIGtleSBuYW1lICovCi0gCWRuc19uYW1lX3QJCSpzaWduZXI7ICAgICAgLyolPCBOVUxMIGlmIG5vdCB2YWxpZCBzaWcgKi8KLSAJYm9vbAkJCW1vcnRhbDsJICAgICAgLyolPCBEaWUgYWZ0ZXIgaGFuZGxpbmcgcmVxdWVzdCAqLwotLQlib29sCQkJcGlwZWxpbmVkOyAgIC8qJTwgVENQIHF1ZXJpZXMgbm90IGluIHNlcXVlbmNlICovCi0tCWlzY19yZWZjb3VudF90CQkqcGlwZWxpbmVfcmVmczsKLS0JaXNjX3F1b3RhX3QJCSp0Y3BxdW90YTsKLS0JYm9vbAkJCXRjcGF0dGFjaGVkOwotKwluc190Y3Bjb25uX3QJCSp0Y3Bjb25uOwotIAlpc2NfcXVvdGFfdAkJKnJlY3Vyc2lvbnF1b3RhOwotIAluc19pbnRlcmZhY2VfdAkJKmludGVyZmFjZTsKLSAKLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9pbnRlcmZhY2VtZ3IuaCBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2ludGVyZmFjZW1nci5oCi1pbmRleCA2MWIwODgyNmE2Li4zNTM1ZWYyMmE4IDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvaW50ZXJmYWNlbWdyLmgKLSsrKyBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2ludGVyZmFjZW1nci5oCi1AQCAtOSw4ICs5LDYgQEAKLSAgKiBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4KLSAgKi8KLSAKLS0vKiAkSWQ6IGludGVyZmFjZW1nci5oLHYgMS4zNSAyMDExLzA3LzI4IDIzOjQ3OjU4IHRib3ggRXhwICQgKi8KLS0KLSAjaWZuZGVmIE5BTUVEX0lOVEVSRkFDRU1HUl9ICi0gI2RlZmluZSBOQU1FRF9JTlRFUkZBQ0VNR1JfSCAxCi0gCi1AQCAtNzcsMTEgKzc1LDExIEBAIHN0cnVjdCBuc19pbnRlcmZhY2UgewotIAkJCQkJCS8qJTwgVURQIGRpc3BhdGNoZXJzLiAqLwotIAlpc2Nfc29ja2V0X3QgKgkJdGNwc29ja2V0OwkvKiU8IFRDUCBzb2NrZXQuICovCi0gCWlzY19kc2NwX3QJCWRzY3A7CQkvKiU8ICJsaXN0ZW4tb24iIERTQ1AgdmFsdWUgKi8KLS0JaW50CQkJbnRjcGFjY2VwdGluZzsJLyolPCBOdW1iZXIgb2YgY2xpZW50cwotKwlpbnQzMl90CQkJbnRjcGFjY2VwdGluZzsJLyolPCBOdW1iZXIgb2YgY2xpZW50cwotIAkJCQkJCSAgICAgcmVhZHkgdG8gYWNjZXB0IG5ldwotIAkJCQkJCSAgICAgVENQIGNvbm5lY3Rpb25zIG9uIHRoaXMKLSAJCQkJCQkgICAgIGludGVyZmFjZSAqLwotLQlpbnQJCQludGNwYWN0aXZlOwkvKiU8IE51bWJlciBvZiBjbGllbnRzCi0rCWludDMyX3QJCQludGNwYWN0aXZlOwkvKiU8IE51bWJlciBvZiBjbGllbnRzCi0gCQkJCQkJICAgICBzZXJ2aWNpbmcgVENQIHF1ZXJpZXMKLSAJCQkJCQkgICAgICh3aGV0aGVyIGFjY2VwdGluZyBvcgotIAkJCQkJCSAgICAgY29ubmVjdGVkKSAqLwotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9pbnRlcmZhY2VtZ3IuYyBiL2Jpbi9uYW1lZC9pbnRlcmZhY2VtZ3IuYwotaW5kZXggOTU1MDk2ZWY0Ny4uZDlmNmRmNTgwMiAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9pbnRlcmZhY2VtZ3IuYwotKysrIGIvYmluL25hbWVkL2ludGVyZmFjZW1nci5jCi1AQCAtMzg4LDYgKzM4OCw3IEBAIG5zX2ludGVyZmFjZV9jcmVhdGUobnNfaW50ZXJmYWNlbWdyX3QgKm1nciwgaXNjX3NvY2thZGRyX3QgKmFkZHIsCi0gCSAqLwotIAlpZnAtPm50Y3BhY2NlcHRpbmcgPSAwOwotIAlpZnAtPm50Y3BhY3RpdmUgPSAwOwotKwotIAlpZnAtPm51ZHBkaXNwYXRjaCA9IDA7Ci0gCi0gCWlmcC0+ZHNjcCA9IC0xOwotZGlmZiAtLWdpdCBhL2xpYi9pc2MvaW5jbHVkZS9pc2MvcXVvdGEuaCBiL2xpYi9pc2MvaW5jbHVkZS9pc2MvcXVvdGEuaAotaW5kZXggYjliZjU5ODc3YS4uMzZjNTgzMDI0MiAxMDA2NDQKLS0tLSBhL2xpYi9pc2MvaW5jbHVkZS9pc2MvcXVvdGEuaAotKysrIGIvbGliL2lzYy9pbmNsdWRlL2lzYy9xdW90YS5oCi1AQCAtMTAwLDYgKzEwMCwxMyBAQCBpc2NfcXVvdGFfYXR0YWNoKGlzY19xdW90YV90ICpxdW90YSwgaXNjX3F1b3RhX3QgKipwKTsKLSAgKiBxdW90YSBpZiBzdWNjZXNzZnVsIChJU0NfUl9TVUNDRVNTIG9yIElTQ19SX1NPRlRRVU9UQSkuCi0gICovCi0gCi0raXNjX3Jlc3VsdF90Ci0raXNjX3F1b3RhX2ZvcmNlKGlzY19xdW90YV90ICpxdW90YSwgaXNjX3F1b3RhX3QgKipwKTsKLSsvKiU8Ci0rICogTGlrZSBpc2NfcXVvdGFfYXR0YWNoLCBidXQgd2lsbCBhdHRhY2ggJypwJyB0byB0aGUgcXVvdGEKLSsgKiBldmVuIGlmIHRoZSBoYXJkIHF1b3RhIGhhcyBiZWVuIGV4Y2VlZGVkLgotKyAqLwotKwotIHZvaWQKLSBpc2NfcXVvdGFfZGV0YWNoKGlzY19xdW90YV90ICoqcCk7Ci0gLyolPAotZGlmZiAtLWdpdCBhL2xpYi9pc2MvcXVvdGEuYyBiL2xpYi9pc2MvcXVvdGEuYwotaW5kZXggM2RkZmYwZDg3NS4uNTU2YTYxZjIxZCAxMDA2NDQKLS0tLSBhL2xpYi9pc2MvcXVvdGEuYwotKysrIGIvbGliL2lzYy9xdW90YS5jCi1AQCAtNzQsMjAgKzc0LDM5IEBAIGlzY19xdW90YV9yZWxlYXNlKGlzY19xdW90YV90ICpxdW90YSkgewotIAlVTkxPQ0soJnF1b3RhLT5sb2NrKTsKLSB9Ci0gCi0taXNjX3Jlc3VsdF90Ci0taXNjX3F1b3RhX2F0dGFjaChpc2NfcXVvdGFfdCAqcXVvdGEsIGlzY19xdW90YV90ICoqcCkKLS17Ci0rc3RhdGljIGlzY19yZXN1bHRfdAotK2RvYXR0YWNoKGlzY19xdW90YV90ICpxdW90YSwgaXNjX3F1b3RhX3QgKipwLCBib29sIGZvcmNlKSB7Ci0gCWlzY19yZXN1bHRfdCByZXN1bHQ7Ci0tCUlOU0lTVChwICE9IE5VTEwgJiYgKnAgPT0gTlVMTCk7Ci0rCVJFUVVJUkUocCAhPSBOVUxMICYmICpwID09IE5VTEwpOwotKwotIAlyZXN1bHQgPSBpc2NfcXVvdGFfcmVzZXJ2ZShxdW90YSk7Ci0tCWlmIChyZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUyB8fCByZXN1bHQgPT0gSVNDX1JfU09GVFFVT1RBKQotKwlpZiAocmVzdWx0ID09IElTQ19SX1NVQ0NFU1MgfHwgcmVzdWx0ID09IElTQ19SX1NPRlRRVU9UQSkgewotKwkJKnAgPSBxdW90YTsKLSsJfSBlbHNlIGlmIChyZXN1bHQgPT0gSVNDX1JfUVVPVEEgJiYgZm9yY2UpIHsKLSsJCS8qIGF0dGFjaCBhbnl3YXkgKi8KLSsJCUxPQ0soJnF1b3RhLT5sb2NrKTsKLSsJCXF1b3RhLT51c2VkKys7Ci0rCQlVTkxPQ0soJnF1b3RhLT5sb2NrKTsKLSsKLSAJCSpwID0gcXVvdGE7Ci0rCQlyZXN1bHQgPSBJU0NfUl9TVUNDRVNTOwotKwl9Ci0rCi0gCXJldHVybiAocmVzdWx0KTsKLSB9Ci0gCi0raXNjX3Jlc3VsdF90Ci0raXNjX3F1b3RhX2F0dGFjaChpc2NfcXVvdGFfdCAqcXVvdGEsIGlzY19xdW90YV90ICoqcCkgewotKwlyZXR1cm4gKGRvYXR0YWNoKHF1b3RhLCBwLCBmYWxzZSkpOwotK30KLSsKLStpc2NfcmVzdWx0X3QKLStpc2NfcXVvdGFfZm9yY2UoaXNjX3F1b3RhX3QgKnF1b3RhLCBpc2NfcXVvdGFfdCAqKnApIHsKLSsJcmV0dXJuIChkb2F0dGFjaChxdW90YSwgcCwgdHJ1ZSkpOwotK30KLSsKLSB2b2lkCi0taXNjX3F1b3RhX2RldGFjaChpc2NfcXVvdGFfdCAqKnApCi0tewotK2lzY19xdW90YV9kZXRhY2goaXNjX3F1b3RhX3QgKipwKSB7Ci0gCUlOU0lTVChwICE9IE5VTEwgJiYgKnAgIT0gTlVMTCk7Ci0gCWlzY19xdW90YV9yZWxlYXNlKCpwKTsKLSAJKnAgPSBOVUxMOwotZGlmZiAtLWdpdCBhL2xpYi9pc2Mvd2luMzIvbGliaXNjLmRlZi5pbiBiL2xpYi9pc2Mvd2luMzIvbGliaXNjLmRlZi5pbgotaW5kZXggYTgyZmFjZWMwZi4uN2I5ZjIzZDc3NiAxMDA2NDQKLS0tLSBhL2xpYi9pc2Mvd2luMzIvbGliaXNjLmRlZi5pbgotKysrIGIvbGliL2lzYy93aW4zMi9saWJpc2MuZGVmLmluCi1AQCAtNTE5LDYgKzUxOSw3IEBAIGlzY19wb3J0c2V0X3JlbW92ZXJhbmdlCi0gaXNjX3F1b3RhX2F0dGFjaAotIGlzY19xdW90YV9kZXN0cm95Ci0gaXNjX3F1b3RhX2RldGFjaAotK2lzY19xdW90YV9mb3JjZQotIGlzY19xdW90YV9pbml0Ci0gaXNjX3F1b3RhX21heAotIGlzY19xdW90YV9yZWxlYXNlCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDYtcmVzdG9yZS1hbGxvd2FuY2UtZm9yLXRjcC1jbGllbnRzLWludGVyZmFjZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDYtcmVzdG9yZS1hbGxvd2FuY2UtZm9yLXRjcC1jbGllbnRzLWludGVyZmFjZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MjFkMTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDA2LXJlc3RvcmUtYWxsb3dhbmNlLWZvci10Y3AtY2xpZW50cy1pbnRlcmZhY2VzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotQmFja3BvcnQgcGF0Y2ggdG8gZml4IENWRS0yMDE4LTU3NDMuCi0KLVJlZjoKLWh0dHBzOi8vc2VjdXJpdHktdHJhY2tlci5kZWJpYW4ub3JnL3RyYWNrZXIvQ1ZFLTIwMTgtNTc0MwotCi1DVkU6IENWRS0yMDE4LTU3NDMKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmlzYy5vcmcvaXNjLXByb2plY3RzL2JpbmQ5L2NvbW1pdC81OTQzNGI5XQotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLQotRnJvbSA1OTQzNGI5ODdlOGViNDM2YjA4YzI0ZTU1OWVlMDk0YzRlOTM5ZGFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRXZhbiBIdW50IDxlYWNoQGlzYy5vcmc+Ci1EYXRlOiBGcmksIDUgQXByIDIwMTkgMTY6MjY6MTkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCA2LzZdIHJlc3RvcmUgYWxsb3dhbmNlIGZvciB0Y3AtY2xpZW50cyA8IGludGVyZmFjZXMKLQotaW4gdGhlICJyZWZhY3RvciB0Y3BxdW90YSBhbmQgcGlwZWxpbmUgcmVmcyIgY29tbWl0LCB0aGUgY291bnRpbmcKLW9mIGFjdGl2ZSBpbnRlcmZhY2VzIHdhcyB0aWdodGVuZWQgaW4gc3VjaCBhIHdheSB0aGF0IG5hbWVkIGNvdWxkCi1mYWlsIHRvIGxpc3RlbiBvbiBhbiBpbnRlcmZhY2UgaWYgdGhlcmUgd2VyZSBtb3JlIGludGVyZmFjZXMgdGhhbgotdGNwLWNsaWVudHMuIHdoZW4gY2hlY2tpbmcgdGhlIHF1b3RhIHRvIHN0YXJ0IGFjY2VwdGluZyBvbiBhbgotaW50ZXJmYWNlLCBpZiB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBjbGllbnRzIHdhcyBhYm92ZSB6ZXJvLCB0aGVuCi1pdCB3YXMgcHJlc3VtZWQgdGhhdCBzb21lIG90aGVyIGNsaWVudCB3YXMgYWJsZSB0byBoYW5kbGUgYWNjZXB0aW5nCi1uZXcgY29ubmVjdGlvbnMuIHRoaXMsIGhvd2V2ZXIsIGlnbm9yZWQgdGhlIGZhY3QgdGhhdCB0aGUgY3VycmVudCBjbGllbnQKLWNvdWxkIGJlIGluY2x1ZGVkIGluIHRoYXQgY291bnQsIHNvIGlmIHRoZSBxdW90YSB3YXMgYWxyZWFkeSBleGNlZWRlZAotYmVmb3JlIGFsbCB0aGUgaW50ZXJmYWNlcyB3ZXJlIGxpc3RlbmluZywgc29tZSBpbnRlcmZhY2VzIHdvdWxkIG5ldmVyCi1saXN0ZW4uCi0KLXdlIG5vdyBjaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IGNsaWVudCBoYXMgYmVlbiBtYXJrZWQgYWN0aXZlOyBpZiBzbywKLXRoZW4gdGhlIG51bWJlciBvZiBhY3RpdmUgY2xpZW50cyBvbiB0aGUgaW50ZXJmYWNlIG11c3QgYmUgZ3JlYXRlcgotdGhhbiAxLCBub3QgMC4KLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMGI0ZTJjZDRjMzE5MmJhODg1NjlkZDM0NGY1NDJhOGNjNDM3NDJiNSkKLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGQwMTAyM2FhYWMzNTU0M2RhZmZiZGY0ODQ2NGUzMjAxNTAyMzVkNDEpCi0tLS0KLSBiaW4vbmFtZWQvY2xpZW50LmMgICAgICB8IDggKysrKystLS0KLSBkb2MvYXJtL0J2OUFSTS1ib29rLnhtbCB8IDMgKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvY2xpZW50LmMgYi9iaW4vbmFtZWQvY2xpZW50LmMKLWluZGV4IGQ4MjZhYjMyYmYuLjg0NTMyNmFiYzAgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvY2xpZW50LmMKLSsrKyBiL2Jpbi9uYW1lZC9jbGllbnQuYwotQEAgLTM0NjQsOCArMzQ2NCw5IEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJICoKLSAJCSAqIFNvLCB3ZSBjaGVjayBoZXJlIHRvIHNlZSBpZiBhbnkgb3RoZXIgY2xpZW50cyBhcmUKLSAJCSAqIGFscmVhZHkgc2VydmljaW5nIFRDUCBxdWVyaWVzIG9uIHRoaXMgaW50ZXJmYWNlICh3aGV0aGVyCi0tCQkgKiBhY2NlcHRpbmcsIHJlYWRpbmcsIG9yIHByb2Nlc3NpbmcpLiBJZiB3ZSBmaW5kIGF0IGxlYXN0Ci0tCQkgKiBvbmUsIHRoZW4gaXQncyBva2F5ICpub3QqIHRvIGNhbGwgYWNjZXB0IC0gd2UgY2FuIGxldCB0aGlzCi0rCQkgKiBhY2NlcHRpbmcsIHJlYWRpbmcsIG9yIHByb2Nlc3NpbmcpLiBJZiB3ZSBmaW5kIHRoYXQgYXQKLSsJCSAqIGxlYXN0IG9uZSBjbGllbnQgb3RoZXIgdGhhbiB0aGlzIG9uZSBpcyBhY3RpdmUsIHRoZW4KLSsJCSAqIGl0J3Mgb2theSAqbm90KiB0byBjYWxsIGFjY2VwdCAtIHdlIGNhbiBsZXQgdGhpcwotIAkJICogY2xpZW50IGdvIGluYWN0aXZlIGFuZCBhbm90aGVyIHdpbGwgdGFrZSBvdmVyIHdoZW4gaXQncwotIAkJICogZG9uZS4KLSAJCSAqCi1AQCAtMzQ3OSw3ICszNDgwLDggQEAgY2xpZW50X2FjY2VwdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkgKiBxdW90YSBpcyB0Y3AtY2xpZW50cyBwbHVzIHRoZSBudW1iZXIgb2YgbGlzdGVuaW5nCi0gCQkgKiBpbnRlcmZhY2VzIHBsdXMgMS4pCi0gCQkgKi8KLS0JCWV4aXQgPSAoaXNjX2F0b21pY194YWRkKCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSwgMCkgPiAwKTsKLSsJCWV4aXQgPSAoaXNjX2F0b21pY194YWRkKCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSwgMCkgPgotKwkJCShjbGllbnQtPnRjcGFjdGl2ZSA/IDEgOiAwKSk7Ci0gCQlpZiAoZXhpdCkgewotIAkJCWNsaWVudC0+bmV3c3RhdGUgPSBOU19DTElFTlRTVEFURV9JTkFDVElWRTsKLSAJCQkodm9pZClleGl0X2NoZWNrKGNsaWVudCk7Ci1kaWZmIC0tZ2l0IGEvZG9jL2FybS9CdjlBUk0tYm9vay54bWwgYi9kb2MvYXJtL0J2OUFSTS1ib29rLnhtbAotaW5kZXggMzgxNzY4ZDU0MC4uOWM3NmQzY2Q2ZiAxMDA2NDQKLS0tLSBhL2RvYy9hcm0vQnY5QVJNLWJvb2sueG1sCi0rKysgYi9kb2MvYXJtL0J2OUFSTS1ib29rLnhtbAotQEAgLTg0OTMsNyArODQ5Myw4IEBAIGF2b2lkLXY2LXVkcC1wb3J0cyB7IDQwMDAwOyByYW5nZSA1MDAwMCA2MDAwMDsgfTsKLSAJCTxwYXJhPgotIAkJICBUaGUgbnVtYmVyIG9mIGZpbGUgZGVzY3JpcHRvcnMgcmVzZXJ2ZWQgZm9yIFRDUCwgc3RkaW8sCi0gCQkgIGV0Yy4gIFRoaXMgbmVlZHMgdG8gYmUgYmlnIGVub3VnaCB0byBjb3ZlciB0aGUgbnVtYmVyIG9mCi0tCQkgIGludGVyZmFjZXMgPGNvbW1hbmQ+bmFtZWQ8L2NvbW1hbmQ+IGxpc3RlbnMgb24sIDxjb21tYW5kPnRjcC1jbGllbnRzPC9jb21tYW5kPiBhcyB3ZWxsIGFzCi0rCQkgIGludGVyZmFjZXMgPGNvbW1hbmQ+bmFtZWQ8L2NvbW1hbmQ+IGxpc3RlbnMgb24gcGx1cwotKwkJICA8Y29tbWFuZD50Y3AtY2xpZW50czwvY29tbWFuZD4sIGFzIHdlbGwgYXMKLSAJCSAgdG8gcHJvdmlkZSByb29tIGZvciBvdXRnb2luZyBUQ1AgcXVlcmllcyBhbmQgaW5jb21pbmcgem9uZQotIAkJICB0cmFuc2ZlcnMuICBUaGUgZGVmYXVsdCBpcyA8bGl0ZXJhbD41MTI8L2xpdGVyYWw+LgotIAkJICBUaGUgbWluaW11bSB2YWx1ZSBpcyA8bGl0ZXJhbD4xMjg8L2xpdGVyYWw+IGFuZCB0aGUKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwNy1SZXBsYWNlLWF0b21pYy1vcGVyYXRpb25zLWluLWJpbi1uYW1lZC1jbGllbnQuYy13aXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDA3LVJlcGxhY2UtYXRvbWljLW9wZXJhdGlvbnMtaW4tYmluLW5hbWVkLWNsaWVudC5jLXdpdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhODRlY2EuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDA3LVJlcGxhY2UtYXRvbWljLW9wZXJhdGlvbnMtaW4tYmluLW5hbWVkLWNsaWVudC5jLXdpdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotQmFja3BvcnQgY29tbWl0IHRvIGZpeCBjb21waWxlIGVycm9yIG9uIGFybSBjYXVzZWQgYnkgY29tbWl0cyB3aGljaCBhcmUKLXRvIGZpeCBDVkUtMjAxOC01NzQzLgotCi1DVkU6IENWRS0yMDE4LTU3NDMKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmlzYy5vcmcvaXNjLXByb2plY3RzL2JpbmQ5L2NvbW1pdC9lZjQ5NzgwXQotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLQotRnJvbSBlZjQ5NzgwZDMwZDNkZGM1NzM1Y2ZjMzI1NjFiNjc4YTYzNGZhNzJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP09uZD1DNT05OWVqPTIwU3VyPUMzPUJEPz0gPG9uZHJlakBzdXJ5Lm9yZz4KLURhdGU6IFdlZCwgMTcgQXByIDIwMTkgMTU6MjI6MjcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gUmVwbGFjZSBhdG9taWMgb3BlcmF0aW9ucyBpbiBiaW4vbmFtZWQvY2xpZW50LmMgd2l0aAotIGlzY19yZWZjb3VudCByZWZlcmVuY2UgY291bnRpbmcKLQotLS0tCi0gYmluL25hbWVkL2NsaWVudC5jICAgICAgICAgICAgICAgICAgICAgfCAxOCArKysrKysrLS0tLS0tLS0tLS0KLSBiaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9pbnRlcmZhY2VtZ3IuaCB8ICA1ICsrKy0tCi0gYmluL25hbWVkL2ludGVyZmFjZW1nci5jICAgICAgICAgICAgICAgfCAgNyArKysrKy0tCi0gMyBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9jbGllbnQuYyBiL2Jpbi9uYW1lZC9jbGllbnQuYwotaW5kZXggODQ1MzI2YWJjMC4uMjlmZWNhZGNhOCAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9jbGllbnQuYwotKysrIGIvYmluL25hbWVkL2NsaWVudC5jCi1AQCAtNDAyLDEyICs0MDIsMTAgQEAgdGNwY29ubl9kZXRhY2gobnNfY2xpZW50X3QgKmNsaWVudCkgewotIHN0YXRpYyB2b2lkCi0gbWFya190Y3BfYWN0aXZlKG5zX2NsaWVudF90ICpjbGllbnQsIGJvb2wgYWN0aXZlKSB7Ci0gCWlmIChhY3RpdmUgJiYgIWNsaWVudC0+dGNwYWN0aXZlKSB7Ci0tCQlpc2NfYXRvbWljX3hhZGQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLCAxKTsKLSsJCWlzY19yZWZjb3VudF9pbmNyZW1lbnQwKCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSwgTlVMTCk7Ci0gCQljbGllbnQtPnRjcGFjdGl2ZSA9IGFjdGl2ZTsKLSAJfSBlbHNlIGlmICghYWN0aXZlICYmIGNsaWVudC0+dGNwYWN0aXZlKSB7Ci0tCQl1aW50MzJfdCBvbGQgPQotLQkJCWlzY19hdG9taWNfeGFkZCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUsIC0xKTsKLS0JCUlOU0lTVChvbGQgPiAwKTsKLSsJCWlzY19yZWZjb3VudF9kZWNyZW1lbnQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLCBOVUxMKTsKLSAJCWNsaWVudC0+dGNwYWN0aXZlID0gYWN0aXZlOwotIAl9Ci0gfQotQEAgLTU1NCw3ICs1NTIsNyBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCWlmIChjbGllbnQtPm1vcnRhbCAmJiBUQ1BfQ0xJRU5UKGNsaWVudCkgJiYKLSAJCSAgICBjbGllbnQtPm5ld3N0YXRlICE9IE5TX0NMSUVOVFNUQVRFX0ZSRUVEICYmCi0gCQkgICAgIW5zX2dfY2xpZW50dGVzdCAmJgotLQkJICAgIGlzY19hdG9taWNfeGFkZCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcsIDApID09IDApCi0rCQkgICAgaXNjX3JlZmNvdW50X2N1cnJlbnQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nKSA9PSAwKQotIAkJewotIAkJCS8qIE5vYm9keSBlbHNlIGlzIGFjY2VwdGluZyAqLwotIAkJCWNsaWVudC0+bW9ydGFsID0gZmFsc2U7Ci1AQCAtMzMyOCw3ICszMzI2LDYgQEAgY2xpZW50X25ld2Nvbm4oaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCWlzY19yZXN1bHRfdCByZXN1bHQ7Ci0gCW5zX2NsaWVudF90ICpjbGllbnQgPSBldmVudC0+ZXZfYXJnOwotIAlpc2Nfc29ja2V0X25ld2Nvbm5ldl90ICpuZXZlbnQgPSAoaXNjX3NvY2tldF9uZXdjb25uZXZfdCAqKWV2ZW50OwotLQl1aW50MzJfdCBvbGQ7Ci0gCi0gCVJFUVVJUkUoZXZlbnQtPmV2X3R5cGUgPT0gSVNDX1NPQ0tFVkVOVF9ORVdDT05OKTsKLSAJUkVRVUlSRShOU19DTElFTlRfVkFMSUQoY2xpZW50KSk7Ci1AQCAtMzM0OCw4ICszMzQ1LDcgQEAgY2xpZW50X25ld2Nvbm4oaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCUlOU0lTVChjbGllbnQtPm5hY2NlcHRzID09IDEpOwotIAljbGllbnQtPm5hY2NlcHRzLS07Ci0gCi0tCW9sZCA9IGlzY19hdG9taWNfeGFkZCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcsIC0xKTsKLS0JSU5TSVNUKG9sZCA+IDApOwotKwlpc2NfcmVmY291bnRfZGVjcmVtZW50KCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZywgTlVMTCk7Ci0gCi0gCS8qCi0gCSAqIFdlIG11c3QgdGFrZSBvd25lcnNoaXAgb2YgdGhlIG5ldyBzb2NrZXQgYmVmb3JlIHRoZSBleGl0Ci1AQCAtMzQ4MCw4ICszNDc2LDggQEAgY2xpZW50X2FjY2VwdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkgKiBxdW90YSBpcyB0Y3AtY2xpZW50cyBwbHVzIHRoZSBudW1iZXIgb2YgbGlzdGVuaW5nCi0gCQkgKiBpbnRlcmZhY2VzIHBsdXMgMS4pCi0gCQkgKi8KLS0JCWV4aXQgPSAoaXNjX2F0b21pY194YWRkKCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSwgMCkgPgotLQkJCShjbGllbnQtPnRjcGFjdGl2ZSA/IDEgOiAwKSk7Ci0rCQlleGl0ID0gKGlzY19yZWZjb3VudF9jdXJyZW50KCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSkgPgotKwkJCShjbGllbnQtPnRjcGFjdGl2ZSA/IDFVIDogMFUpKTsKLSAJCWlmIChleGl0KSB7Ci0gCQkJY2xpZW50LT5uZXdzdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX0lOQUNUSVZFOwotIAkJCSh2b2lkKWV4aXRfY2hlY2soY2xpZW50KTsKLUBAIC0zNTM5LDcgKzM1MzUsNyBAQCBjbGllbnRfYWNjZXB0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJICogbGlzdGVuaW5nIGZvciBjb25uZWN0aW9ucyBpdHNlbGYgdG8gcHJldmVudCB0aGUgaW50ZXJmYWNlCi0gCSAqIGdvaW5nIGRlYWQuCi0gCSAqLwotLQlpc2NfYXRvbWljX3hhZGQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nLCAxKTsKLSsJaXNjX3JlZmNvdW50X2luY3JlbWVudDAoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nLCBOVUxMKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9pbnRlcmZhY2VtZ3IuaCBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2ludGVyZmFjZW1nci5oCi1pbmRleCAzNTM1ZWYyMmE4Li42ZTEwZjIxMGZkIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvaW50ZXJmYWNlbWdyLmgKLSsrKyBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2ludGVyZmFjZW1nci5oCi1AQCAtNDUsNiArNDUsNyBAQAotICNpbmNsdWRlIDxpc2MvbWFnaWMuaD4KLSAjaW5jbHVkZSA8aXNjL21lbS5oPgotICNpbmNsdWRlIDxpc2Mvc29ja2V0Lmg+Ci0rI2luY2x1ZGUgPGlzYy9yZWZjb3VudC5oPgotIAotICNpbmNsdWRlIDxkbnMvcmVzdWx0Lmg+Ci0gCi1AQCAtNzUsMTEgKzc2LDExIEBAIHN0cnVjdCBuc19pbnRlcmZhY2UgewotIAkJCQkJCS8qJTwgVURQIGRpc3BhdGNoZXJzLiAqLwotIAlpc2Nfc29ja2V0X3QgKgkJdGNwc29ja2V0OwkvKiU8IFRDUCBzb2NrZXQuICovCi0gCWlzY19kc2NwX3QJCWRzY3A7CQkvKiU8ICJsaXN0ZW4tb24iIERTQ1AgdmFsdWUgKi8KLS0JaW50MzJfdAkJCW50Y3BhY2NlcHRpbmc7CS8qJTwgTnVtYmVyIG9mIGNsaWVudHMKLSsJaXNjX3JlZmNvdW50X3QJCW50Y3BhY2NlcHRpbmc7CS8qJTwgTnVtYmVyIG9mIGNsaWVudHMKLSAJCQkJCQkgICAgIHJlYWR5IHRvIGFjY2VwdCBuZXcKLSAJCQkJCQkgICAgIFRDUCBjb25uZWN0aW9ucyBvbiB0aGlzCi0gCQkJCQkJICAgICBpbnRlcmZhY2UgKi8KLS0JaW50MzJfdAkJCW50Y3BhY3RpdmU7CS8qJTwgTnVtYmVyIG9mIGNsaWVudHMKLSsJaXNjX3JlZmNvdW50X3QJCW50Y3BhY3RpdmU7CS8qJTwgTnVtYmVyIG9mIGNsaWVudHMKLSAJCQkJCQkgICAgIHNlcnZpY2luZyBUQ1AgcXVlcmllcwotIAkJCQkJCSAgICAgKHdoZXRoZXIgYWNjZXB0aW5nIG9yCi0gCQkJCQkJICAgICBjb25uZWN0ZWQpICovCi1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2ludGVyZmFjZW1nci5jIGIvYmluL25hbWVkL2ludGVyZmFjZW1nci5jCi1pbmRleCBkOWY2ZGY1ODAyLi4xMzU1MzNiZTZiIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2ludGVyZmFjZW1nci5jCi0rKysgYi9iaW4vbmFtZWQvaW50ZXJmYWNlbWdyLmMKLUBAIC0zODYsOCArMzg2LDggQEAgbnNfaW50ZXJmYWNlX2NyZWF0ZShuc19pbnRlcmZhY2VtZ3JfdCAqbWdyLCBpc2Nfc29ja2FkZHJfdCAqYWRkciwKLSAJICogY29ubmVjdGlvbnMgd2lsbCBiZSBoYW5kbGVkIGluIHBhcmFsbGVsIGV2ZW4gdGhvdWdoIHRoZXJlIGlzCi0gCSAqIG9ubHkgb25lIGNsaWVudCBpbml0aWFsbHkuCi0gCSAqLwotLQlpZnAtPm50Y3BhY2NlcHRpbmcgPSAwOwotLQlpZnAtPm50Y3BhY3RpdmUgPSAwOwotKwlpc2NfcmVmY291bnRfaW5pdCgmaWZwLT5udGNwYWNjZXB0aW5nLCAwKTsKLSsJaXNjX3JlZmNvdW50X2luaXQoJmlmcC0+bnRjcGFjdGl2ZSwgMCk7Ci0gCi0gCWlmcC0+bnVkcGRpc3BhdGNoID0gMDsKLSAKLUBAIC02MTgsNiArNjE4LDkgQEAgbnNfaW50ZXJmYWNlX2Rlc3Ryb3kobnNfaW50ZXJmYWNlX3QgKmlmcCkgewotIAotIAluc19pbnRlcmZhY2VtZ3JfZGV0YWNoKCZpZnAtPm1ncik7Ci0gCi0rCWlzY19yZWZjb3VudF9kZXN0cm95KCZpZnAtPm50Y3BhY3RpdmUpOwotKwlpc2NfcmVmY291bnRfZGVzdHJveSgmaWZwLT5udGNwYWNjZXB0aW5nKTsKLSsKLSAJaWZwLT5tYWdpYyA9IDA7Ci0gCWlzY19tZW1fcHV0KG1jdHgsIGlmcCwgc2l6ZW9mKCppZnApKTsKLSB9Ci0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2JpbmQtZW5zdXJlLXNlYXJjaGluZy1mb3ItanNvbi1oZWFkZXJzLXNlYXJjaGVzLXN5c3IucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2JpbmQtZW5zdXJlLXNlYXJjaGluZy1mb3ItanNvbi1oZWFkZXJzLXNlYXJjaGVzLXN5c3IucGF0Y2gKaW5kZXggMzdlMjEwZS4uODQ1NTllNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9iaW5kLWVuc3VyZS1zZWFyY2hpbmctZm9yLWpzb24taGVhZGVycy1zZWFyY2hlcy1zeXNyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvYmluZC1lbnN1cmUtc2VhcmNoaW5nLWZvci1qc29uLWhlYWRlcnMtc2VhcmNoZXMtc3lzci5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gOTQ3M2QyOTg0MzU3OTgwMmU5NmIwMjkzYTNlOTUzZmVkOTNkZTgyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZWRkYTIwZmI1YTZlODg1NDhmODVlMzlkMzRkNmMwNzQzMDZlMTViYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgogRGF0ZTogVHVlLCA5IEp1biAyMDE1IDExOjIyOjAwIC0wNDAwCiBTdWJqZWN0OiBbUEFUQ0hdIGJpbmQ6IGVuc3VyZSBzZWFyY2hpbmcgZm9yIGpzb24gaGVhZGVycyBzZWFyY2hlcyBzeXNyb290CkBAIC0yNywxNSArMjcsMTYgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBTcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgorCiAtLS0KLSBjb25maWd1cmUuaW4gfCAyICstCisgY29uZmlndXJlLmFjIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1JbmRleDogYmluZC05LjExLjMvY29uZmlndXJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYmluZC05LjExLjMub3JpZy9jb25maWd1cmUuaW4KLSsrKyBiaW5kLTkuMTEuMy9jb25maWd1cmUuaW4KLUBAIC0yNTc0LDcgKzI1NzQsNyBAQCBjYXNlICIkdXNlX2xpYmpzb24iIGluCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAxNzM5MmZkLi5lODVhNWM2IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0yNDQ5LDcgKzI0NDksNyBAQCBjYXNlICIkdXNlX2xpYmpzb24iIGluCiAgCQlsaWJqc29uX2xpYnM9IiIKICAJCTs7CiAgCWF1dG98eWVzKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjExLjEzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjExLjEzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNjQxNzEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTEuMTMuYmIKQEAgLTAsMCArMSwxNDEgQEAKK1NVTU1BUlkgPSAiSVNDIEludGVybmV0IERvbWFpbiBOYW1lIFNlcnZlciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuaXNjLm9yZy9zdy9iaW5kLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorCitMSUNFTlNFID0gIklTQyAmIEJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9OGYxN2Y2NGU0N2U4M2I2MGNkOTIwYTFlNGI1NDQxOWUiCisKK0RFUEVORFMgPSAib3BlbnNzbCBsaWJjYXAgemxpYiIKKworU1JDX1VSSSA9ICJodHRwczovL2Z0cC5pc2Mub3JnL2lzYy9iaW5kOS8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbmFtZWQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9iaW5kOSBcCisgICAgICAgICAgIGZpbGU6Ly9nZW5lcmF0ZS1ybmRjLWtleS5zaCBcCisgICAgICAgICAgIGZpbGU6Ly9tYWtlLWV0Yy1pbml0ZC1iaW5kLXN0b3Atd29yay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0LmQtYWRkLXN1cHBvcnQtZm9yLXJlYWQtb25seS1yb290ZnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYmluZC1lbnN1cmUtc2VhcmNoaW5nLWZvci1qc29uLWhlYWRlcnMtc2VhcmNoZXMtc3lzci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtdXNlbGVzcy1MLXVzZV9vcGVuc3NsLWxpYi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5hbWVkLWx3cmVzZC1WLWFuZC1zdGFydC1sb2ctaGlkZS1idWlsZC1vcHRpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYXZvaWQtc3RhcnQtZmFpbHVyZS13aXRoLWJpbmQtdXNlci5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjE3ZGUwZDAyNGFiMWVhYzM3N2YxYzI4NTRkYzI1MDU3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZkM2YzY2M5ZmNmY2RhYTc1MmRiMzVlYjI0NTk4YWZhMWZkY2MyNTA5ZDMyMjdmYzkwYTg2MzFiN2I0MDBmN2QiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2Z0cC5pc2Mub3JnL2lzYy9iaW5kOS8iCisjIHN0YXkgYXQgOS4xMSB1bnRpbCA5LjE2LCBmcm9tIDkuMTYgZm9sbG93IHRoZSBFU1YgdmVyc2lvbnMgZGl2aXNpYmxlIGJ5IDQKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPjkuKDExfDE2fDIwfDI0fDI4KShcLlxkKykrKC1QXGQrKSopLyIKKworIyBCSU5EID49IDkuMTEuMiBuZWVkIGRoY3BkID49IDQuNC4wLAorIyBkb24ndCByZXBvcnQgaXQgaGVyZSBzaW5jZSBkaGNwZCBpcyBhbHJlYWR5IHJlY2VudCBlbm91Z2guCitDVkVfQ0hFQ0tfV0hJVEVMSVNUICs9ICJDVkUtMjAxOS02NDcwIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kIHVzZXJhZGQgcGtnY29uZmlnIG11bHRpbGliX3NjcmlwdCBtdWx0aWxpYl9oZWFkZXIKKworTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfToke2JpbmRpcn0vYmluZDktY29uZmlnICR7UE59OiR7YmluZGlyfS9pc2MtY29uZmlnLnNoIgorCisjIFBBQ0tBR0VDT05GSUdzIHJlYWRsaW5lIGFuZCBsaWJlZGl0IHNob3VsZCBOT1QgYmUgc2V0IGF0IHNhbWUgdGltZQorUEFDS0FHRUNPTkZJRyA/PSAicmVhZGxpbmUiCitQQUNLQUdFQ09ORklHW2h0dHBzdGF0c10gPSAiLS13aXRoLWxpYnhtbDI9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSwtLXdpdGhvdXQtbGlieG1sMixsaWJ4bWwyIgorUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLXJlYWRsaW5lPS1scmVhZGxpbmUsLHJlYWRsaW5lIgorUEFDS0FHRUNPTkZJR1tsaWJlZGl0XSA9ICItLXdpdGgtcmVhZGxpbmU9LWxlZGl0LCxsaWJlZGl0IgorUEFDS0FHRUNPTkZJR1t1cmFuZG9tXSA9ICItLXdpdGgtcmFuZG9tZGV2PS9kZXYvdXJhbmRvbSwtLXdpdGgtcmFuZG9tZGV2PS9kZXYvcmFuZG9tLCwiCitQQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIi0td2l0aC1weXRob249eWVzIC0td2l0aC1weXRob24taW5zdGFsbC1kaXI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gLCAtLXdpdGhvdXQtcHl0aG9uLCBweXRob24zLXBseS1uYXRpdmUsIgorCitFTkFCTEVfSVBWNiA9ICItLWVuYWJsZS1pcHY2PSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICd5ZXMnLCAnbm8nLCBkKX0iCitFWFRSQV9PRUNPTkYgPSAiICR7RU5BQkxFX0lQVjZ9IC0td2l0aC1saWJ0b29sIC0tZW5hYmxlLXRocmVhZHMgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGV2cG9sbCAtLWVuYWJsZS1lcG9sbCAtLXdpdGgtZ29zdD1ubyBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1nc3NhcGk9bm8gLS13aXRoLWVjZHNhPXllcyAtLXdpdGgtZWRkc2E9bm8gXAorICAgICAgICAgICAgICAgICAtLXdpdGgtbG1kYj1ubyBcCisgICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9L2JpbmQgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtb3BlbnNzbD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKKyAgICAgICAgICAgICAgICIKKworaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjNuYXRpdmUgZGlzdHV0aWxzMy1iYXNlJywgJycsIGQpfQorCisjIGRoY3AgbmVlZHMgLmxhIHNvIGtlZXAgdGhlbQorUkVNT1ZFX0xJQlRPT0xfTEEgPSAiMCIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1ob21lICR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvYmluZCAtLW5vLWNyZWF0ZS1ob21lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLS11c2VyLWdyb3VwIGJpbmQiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJiaW5kIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJuYW1lZC5zZXJ2aWNlIgorCitkb19pbnN0YWxsX3ByZXBlbmQoKSB7CisJIyBjbGVhbiBob3N0IHBhdGggaW4gaXNjLWNvbmZpZy5zaCBiZWZvcmUgdGhlIGhhcmRsaW5rIGNyZWF0ZWQKKwkjIGJ5ICJtYWtlIGluc3RhbGwiOgorCSMgICBiaW5kOS1jb25maWcgLT4gaXNjLWNvbmZpZy5zaAorCXNlZCAtaSAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sIiAke0J9L2lzYy1jb25maWcuc2gKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisKKwlybWRpciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgorCXJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKKwlpbnN0YWxsIC1kIC1vIGJpbmQgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2JpbmQiCisJaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vYmluZCIKKwlpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQiCisJaW5zdGFsbCAtbSA2NDQgJHtTfS9jb25mLyogIiR7RH0ke3N5c2NvbmZkaXJ9L2JpbmQvIgorCWluc3RhbGwgLW0gNzU1ICIke1N9L2luaXQuZCIgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9iaW5kIgorICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uMywjISAvdXNyL2Jpbi9weXRob24zLCcgXAorCQkke0R9JHtzYmluZGlyfS9kbnNzZWMtY292ZXJhZ2UgXAorCQkke0R9JHtzYmluZGlyfS9kbnNzZWMtY2hlY2tkcyBcCisJCSR7RH0ke3NiaW5kaXJ9L2Ruc3NlYy1rZXltZ3IKKwlmaQorCisJIyBJbnN0YWxsIHN5c3RlbWQgcmVsYXRlZCBmaWxlcworCWluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KKwlpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2dlbmVyYXRlLXJuZGMta2V5LnNoICR7RH0ke3NiaW5kaXJ9CisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25hbWVkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCisJICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbmFtZWQuc2VydmljZQorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0CisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYmluZDkgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAorCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisJCWVjaG8gImQgL3J1bi9uYW1lZCAwNzU1IGJpbmQgYmluZCAtIC0iID4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9iaW5kLmNvbmYKKwlmaQorCisgICAgb2VfbXVsdGlsaWJfaGVhZGVyIGlzYy9wbGF0Zm9ybS5oCit9CisKK0NPTkZGSUxFU18ke1BOfSA9ICIgXAorCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZi5sb2NhbCBcCisJJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYub3B0aW9ucyBcCisJJHtzeXNjb25mZGlyfS9iaW5kL2RiLjAgXAorCSR7c3lzY29uZmRpcn0vYmluZC9kYi4xMjcgXAorCSR7c3lzY29uZmRpcn0vYmluZC9kYi5lbXB0eSBcCisJJHtzeXNjb25mZGlyfS9iaW5kL2RiLmxvY2FsIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvZGIucm9vdCBcCisJIgorCitBTFRFUk5BVElWRV8ke1BOfS11dGlscyA9ICJuc2xvb2t1cCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtuc2xvb2t1cF0gPSAiJHtiaW5kaXJ9L25zbG9va3VwIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitQQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtQTn0tdXRpbHMiCitGSUxFU18ke1BOfS11dGlscyA9ICIke2JpbmRpcn0vaG9zdCAke2JpbmRpcn0vZGlnICR7YmluZGlyfS9tZGlnICR7YmluZGlyfS9uc2xvb2t1cCAke2JpbmRpcn0vbnN1cGRhdGUiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9pc2MtY29uZmlnLmgiCitGSUxFU18ke1BOfSArPSAiJHtzYmluZGlyfS9nZW5lcmF0ZS1ybmRjLWtleS5zaCIKKworUEFDS0FHRV9CRUZPUkVfUE4gKz0gIiR7UE59LWxpYnMiCitGSUxFU18ke1BOfS1saWJzID0gIiR7bGliZGlyfS8qLnNvKiIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9LyoubGEiCisKK1BBQ0tBR0VfQkVGT1JFX1BOICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjMtYmluZCcsICcnLCBkKX0iCitGSUxFU19weXRob24zLWJpbmQgPSAiJHtzYmluZGlyfS9kbnNzZWMtY292ZXJhZ2UgJHtzYmluZGlyfS9kbnNzZWMtY2hlY2tkcyBcCisgICAgICAgICAgICAgICAgJHtzYmluZGlyfS9kbnNzZWMta2V5bWdyICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCitSREVQRU5EU18ke1BOfS1kZXYgPSAiIgorUkRFUEVORFNfcHl0aG9uMy1iaW5kID0gInB5dGhvbjMtY29yZSBweXRob24zLXBseSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMS41LVA0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjExLjUtUDQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4OTc3MDYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjExLjUtUDQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJJU0MgSW50ZXJuZXQgRG9tYWluIE5hbWUgU2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pc2Mub3JnL3N3L2JpbmQvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLUxJQ0VOU0UgPSAiSVNDICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT04ZjE3ZjY0ZTQ3ZTgzYjYwY2Q5MjBhMWU0YjU0NDE5ZSIKLQotREVQRU5EUyA9ICJvcGVuc3NsIGxpYmNhcCB6bGliIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZnRwLmlzYy5vcmcvaXNjL2JpbmQ5LyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vY29uZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uYW1lZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL2JpbmQ5IFwKLSAgICAgICAgICAgZmlsZTovL2dlbmVyYXRlLXJuZGMta2V5LnNoIFwKLSAgICAgICAgICAgZmlsZTovL21ha2UtZXRjLWluaXRkLWJpbmQtc3RvcC13b3JrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2luaXQuZC1hZGQtc3VwcG9ydC1mb3ItcmVhZC1vbmx5LXJvb3Rmcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9iaW5kLWVuc3VyZS1zZWFyY2hpbmctZm9yLWpzb24taGVhZGVycy1zZWFyY2hlcy1zeXNyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ2VuLmMtZXh0ZW5kLURJUk5BTUVTSVpFLWZyb20tMjU2LXRvLTUxMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYi1kbnMtZ2VuLmMtZml4LXRvby1sb25nLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmluLXJlbW92ZS11c2VsZXNzLUwtdXNlX29wZW5zc2wtbGliLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbmFtZWQtbHdyZXNkLVYtYW5kLXN0YXJ0LWxvZy1oaWRlLWJ1aWxkLW9wdGlvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hdm9pZC1zdGFydC1mYWlsdXJlLXdpdGgtYmluZC11c2VyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYmluZC1maXgtQ1ZFLTIwMTktNjQ3MS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1lbmZvcmNlbWVudC1vZi10Y3AtY2xpZW50cy12MS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXRjcC1jbGllbnRzLWNvdWxkLXN0aWxsLWJlLWV4Y2VlZGVkLXYyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtdXNlLXJlZmVyZW5jZS1jb3VudGVyLWZvci1waXBlbGluZS1ncm91cHMtdjMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1iZXR0ZXItdGNwcXVvdGEtYWNjb3VudGluZy1hbmQtY2xpZW50LW1vcnRhbGl0eS1jaGVjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtcmVmYWN0b3ItdGNwcXVvdGEtYW5kLXBpcGVsaW5lLXJlZnMtYWxsb3ctc3BlY2lhbC1jYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LXJlc3RvcmUtYWxsb3dhbmNlLWZvci10Y3AtY2xpZW50cy1pbnRlcmZhY2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctUmVwbGFjZS1hdG9taWMtb3BlcmF0aW9ucy1pbi1iaW4tbmFtZWQtY2xpZW50LmMtd2l0aC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4ZGRhYjRiNjFmYTQ1MTZmZTQwNDY3OWM3NGUzNzk2MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZThjMDgxOTJiY2JhZWI2ZTlmMjM5MWE3MGU2NzU4M2IwMjdiOTBlOGM0YmMxNjA1ZGE2ZWIxMjZlZGRlNDM0IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9mdHAuaXNjLm9yZy9pc2MvYmluZDkvIgotIyBzdGF5IGF0IDkuMTEgdW50aWwgOS4xNiwgZnJvbSA5LjE2IGZvbGxvdyB0aGUgRVNWIHZlcnNpb25zIGRpdmlzaWJsZSBieSA0Ci1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj45LigxMXwxNnwyMHwyNHwyOCkoXC5cZCspKygtUFxkKykqKS8iCi0KLSMgQklORCA+PSA5LjExLjIgbmVlZCBkaGNwZCA+PSA0LjQuMCwKLSMgZG9uJ3QgcmVwb3J0IGl0IGhlcmUgc2luY2UgZGhjcGQgaXMgYWxyZWFkeSByZWNlbnQgZW5vdWdoLgotQ1ZFX0NIRUNLX1dISVRFTElTVCArPSAiQ1ZFLTIwMTktNjQ3MCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZCB1c2VyYWRkIHBrZ2NvbmZpZyBtdWx0aWxpYl9zY3JpcHQKLQotTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfToke2JpbmRpcn0vYmluZDktY29uZmlnICR7UE59OiR7YmluZGlyfS9pc2MtY29uZmlnLnNoIgotCi0jIFBBQ0tBR0VDT05GSUdzIHJlYWRsaW5lIGFuZCBsaWJlZGl0IHNob3VsZCBOT1QgYmUgc2V0IGF0IHNhbWUgdGltZQotUEFDS0FHRUNPTkZJRyA/PSAicmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW2h0dHBzdGF0c10gPSAiLS13aXRoLWxpYnhtbDI9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSwtLXdpdGhvdXQtbGlieG1sMixsaWJ4bWwyIgotUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLXJlYWRsaW5lPS1scmVhZGxpbmUsLHJlYWRsaW5lIgotUEFDS0FHRUNPTkZJR1tsaWJlZGl0XSA9ICItLXdpdGgtcmVhZGxpbmU9LWxlZGl0LCxsaWJlZGl0IgotUEFDS0FHRUNPTkZJR1t1cmFuZG9tXSA9ICItLXdpdGgtcmFuZG9tZGV2PS9kZXYvdXJhbmRvbSwtLXdpdGgtcmFuZG9tZGV2PS9kZXYvcmFuZG9tLCwiCi1QQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIi0td2l0aC1weXRob249eWVzIC0td2l0aC1weXRob24taW5zdGFsbC1kaXI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gLCAtLXdpdGhvdXQtcHl0aG9uLCBweXRob24zLXBseS1uYXRpdmUsIgotCi1FTkFCTEVfSVBWNiA9ICItLWVuYWJsZS1pcHY2PSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICd5ZXMnLCAnbm8nLCBkKX0iCi1FWFRSQV9PRUNPTkYgPSAiICR7RU5BQkxFX0lQVjZ9IC0td2l0aC1saWJ0b29sIC0tZW5hYmxlLXRocmVhZHMgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGV2cG9sbCAtLWVuYWJsZS1lcG9sbCAtLXdpdGgtZ29zdD1ubyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1nc3NhcGk9bm8gLS13aXRoLWVjZHNhPXllcyAtLXdpdGgtZWRkc2E9bm8gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtbG1kYj1ubyBcCi0gICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9L2JpbmQgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtb3BlbnNzbD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKLSAgICAgICAgICAgICAgICIKLQotaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjNuYXRpdmUgZGlzdHV0aWxzMy1iYXNlJywgJycsIGQpfQotCi0jIGRoY3AgbmVlZHMgLmxhIHNvIGtlZXAgdGhlbQotUkVNT1ZFX0xJQlRPT0xfTEEgPSAiMCIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1ob21lICR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvYmluZCAtLW5vLWNyZWF0ZS1ob21lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLS11c2VyLWdyb3VwIGJpbmQiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJiaW5kIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJuYW1lZC5zZXJ2aWNlIgotCi1kb19pbnN0YWxsX3ByZXBlbmQoKSB7Ci0JIyBjbGVhbiBob3N0IHBhdGggaW4gaXNjLWNvbmZpZy5zaCBiZWZvcmUgdGhlIGhhcmRsaW5rIGNyZWF0ZWQKLQkjIGJ5ICJtYWtlIGluc3RhbGwiOgotCSMgICBiaW5kOS1jb25maWcgLT4gaXNjLWNvbmZpZy5zaAotCXNlZCAtaSAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sIiAke0J9L2lzYy1jb25maWcuc2gKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0KLQlybWRpciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgotCXJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKLQlpbnN0YWxsIC1kIC1vIGJpbmQgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2JpbmQiCi0JaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vYmluZCIKLQlpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQiCi0JaW5zdGFsbCAtbSA2NDQgJHtTfS9jb25mLyogIiR7RH0ke3N5c2NvbmZkaXJ9L2JpbmQvIgotCWluc3RhbGwgLW0gNzU1ICIke1N9L2luaXQuZCIgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9iaW5kIgotICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uMywjISAvdXNyL2Jpbi9weXRob24zLCcgXAotCQkke0R9JHtzYmluZGlyfS9kbnNzZWMtY292ZXJhZ2UgXAotCQkke0R9JHtzYmluZGlyfS9kbnNzZWMtY2hlY2tkcyBcCi0JCSR7RH0ke3NiaW5kaXJ9L2Ruc3NlYy1rZXltZ3IKLQlmaQotCi0JIyBJbnN0YWxsIHN5c3RlbWQgcmVsYXRlZCBmaWxlcwotCWluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KLQlpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2dlbmVyYXRlLXJuZGMta2V5LnNoICR7RH0ke3NiaW5kaXJ9Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25hbWVkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCi0JICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbmFtZWQuc2VydmljZQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0Ci0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYmluZDkgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCi0JCWVjaG8gImQgL3J1bi9uYW1lZCAwNzU1IGJpbmQgYmluZCAtIC0iID4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9iaW5kLmNvbmYKLQlmaQotfQotCi1DT05GRklMRVNfJHtQTn0gPSAiIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZiBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYubG9jYWwgXAotCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mLm9wdGlvbnMgXAotCSR7c3lzY29uZmRpcn0vYmluZC9kYi4wIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuMTI3IFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuZW1wdHkgXAotCSR7c3lzY29uZmRpcn0vYmluZC9kYi5sb2NhbCBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL2RiLnJvb3QgXAotCSIKLQotQUxURVJOQVRJVkVfJHtQTn0tdXRpbHMgPSAibnNsb29rdXAiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbnNsb29rdXBdID0gIiR7YmluZGlyfS9uc2xvb2t1cCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotUEFDS0FHRV9CRUZPUkVfUE4gKz0gIiR7UE59LXV0aWxzIgotRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9L2hvc3QgJHtiaW5kaXJ9L2RpZyAke2JpbmRpcn0vbWRpZyAke2JpbmRpcn0vbnNsb29rdXAgJHtiaW5kaXJ9L25zdXBkYXRlIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vaXNjLWNvbmZpZy5oIgotRklMRVNfJHtQTn0gKz0gIiR7c2JpbmRpcn0vZ2VuZXJhdGUtcm5kYy1rZXkuc2giCi0KLVBBQ0tBR0VfQkVGT1JFX1BOICs9ICIke1BOfS1saWJzIgotRklMRVNfJHtQTn0tbGlicyA9ICIke2xpYmRpcn0vKi5zbyoiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS8qLmxhIgotCi1QQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zLWJpbmQnLCAnJywgZCl9IgotRklMRVNfcHl0aG9uMy1iaW5kID0gIiR7c2JpbmRpcn0vZG5zc2VjLWNvdmVyYWdlICR7c2JpbmRpcn0vZG5zc2VjLWNoZWNrZHMgXAotICAgICAgICAgICAgICAgICR7c2JpbmRpcn0vZG5zc2VjLWtleW1nciAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLQotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLVJERVBFTkRTX3B5dGhvbjMtYmluZCA9ICJweXRob24zLWNvcmUgcHl0aG9uMy1wbHkiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS5pbmMKaW5kZXggNDg0NTA5My4uMTUwZDkwOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LmluYwpAQCAtNDYsMjAgKzQ2LDEzIEBACiBQQUNLQUdFQ09ORklHW2J0cGNsaWVudF0gPSAiLS1lbmFibGUtYnRwY2xpZW50LC0tZGlzYWJsZS1idHBjbGllbnQsIGVsbCIKIFBBQ0tBR0VDT05GSUdbdWRldl0gPSAiLS1lbmFibGUtdWRldiwtLWRpc2FibGUtdWRldix1ZGV2IgogCi1TUkNfVVJJID0gIlwKLSAgICAke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2JsdWV0b290aC9ibHVlei0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly9vdXQtb2YtdHJlZS5wYXRjaCBcCi0gICAgZmlsZTovL2luaXQgXAotICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICcnLCAnZmlsZTovLzAwMDEtQWxsb3ctdXNpbmctb2JleGQtd2l0aG91dC1zeXN0ZW1kLWluLXRoZS11c2VyLXNlc3Npby5wYXRjaCcsIGQpfSBcCi0gICAgZmlsZTovLzAwMDEtdGVzdHMtYWRkLWEtdGFyZ2V0LWZvci1idWlsZGluZy10ZXN0cy13aXRob3V0LXJ1bm5pbi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtdGVzdC1nYXR0LUZpeC1odW5nLWlzc3VlLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS5hbS1GaXgtYS1yYWNlLWlzc3VlLWZvci10b29scy5wYXRjaCBcCi0gICAgZmlsZTovL0NWRS0yMDE4LTEwOTEwLnBhdGNoIFwKLSAgICBmaWxlOi8vZ2NjOS1maXhlcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtdG9vbHMtRml4LWJ1aWxkLWFmdGVyLXkyMDM4LWNoYW5nZXMtaW4tZ2xpYmMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXRvb2xzLWJ0cGNsaWVudC5jLWluY2x1ZGUtc2lnbmFsLmgucGF0Y2ggXAotIgorU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2JsdWV0b290aC9ibHVlei0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnJywgJ2ZpbGU6Ly8wMDAxLUFsbG93LXVzaW5nLW9iZXhkLXdpdGhvdXQtc3lzdGVtZC1pbi10aGUtdXNlci1zZXNzaW8ucGF0Y2gnLCBkKX0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1hZGQtYS10YXJnZXQtZm9yLWJ1aWxkaW5nLXRlc3RzLXdpdGhvdXQtcnVubmluLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdC1nYXR0LUZpeC1odW5nLWlzc3VlLnBhdGNoIFwKKyAgICAgICAgICAgIgogUyA9ICIke1dPUktESVJ9L2JsdWV6LSR7UFZ9IgogCiBDVkVfUFJPRFVDVCA9ICJibHVleiIKQEAgLTcwLDYgKzYzLDcgQEAKICAgLS1lbmFibGUtdGVzdCBcCiAgIC0tZW5hYmxlLWRhdGFmaWxlcyBcCiAgIC0tZW5hYmxlLWxpYnJhcnkgXAorICAtLXdpdGhvdXQtenNoLWNvbXBsZXRpb24tZGlyIFwKICIKIAogIyBibHVlejUgYnVpbGRzIGEgbGFyZ2UgbnVtYmVyIG9mIHVzZWZ1bCB1dGlsaXRpZXMgYnV0IGRvZXMgbm90CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLUFsbG93LXVzaW5nLW9iZXhkLXdpdGhvdXQtc3lzdGVtZC1pbi10aGUtdXNlci1zZXNzaW8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLUFsbG93LXVzaW5nLW9iZXhkLXdpdGhvdXQtc3lzdGVtZC1pbi10aGUtdXNlci1zZXNzaW8ucGF0Y2gKaW5kZXggZGE3MTQwOS4uNjE4ZWQ3MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS1BbGxvdy11c2luZy1vYmV4ZC13aXRob3V0LXN5c3RlbWQtaW4tdGhlLXVzZXItc2Vzc2lvLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtQWxsb3ctdXNpbmctb2JleGQtd2l0aG91dC1zeXN0ZW1kLWluLXRoZS11c2VyLXNlc3Npby5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gOTljY2RiZTE1NTAyOGM0Yzc4OTgwM2E0MjkwNzI2NzViODdkMGMzYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZjc0ZWI5N2M5ZmIzYzBlZTI4OTU3NDJlNzczYWM2YTNjNDFjOTk5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEdpb3Zhbm5pIENhbXBhZ25hIDxnY2FtcGFnbmEtY05VZGxSb3RGTW5OTHhqVGVuTGV0d0BwdWJsaWMuZ21hbmUub3JnPgogRGF0ZTogU2F0LCAxMiBPY3QgMjAxMyAxNzo0NToyNSArMDIwMAogU3ViamVjdDogW1BBVENIXSBBbGxvdyB1c2luZyBvYmV4ZCB3aXRob3V0IHN5c3RlbWQgaW4gdGhlIHVzZXIgc2Vzc2lvbgpAQCAtMTcsMjIgKzE3LDIyIEBACiBTaWduZWQtb2ZmLWJ5OiBKYXZpZXIgVmlndWVyYSA8amF2aWVyLnZpZ3VlcmFAZGlnaS5jb20+CiAKIC0tLQotIE1ha2VmaWxlLm9iZXhkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIG9iZXhkL3NyYy97b3JnLmJsdWV6Lm9iZXguc2VydmljZSA9PiBvcmcuYmx1ZXoub2JleC5zZXJ2aWNlLmlufSB8IDIgKy0KKyBNYWtlZmlsZS5vYmV4ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgLi4uL3NyYy97b3JnLmJsdWV6Lm9iZXguc2VydmljZSA9PiBvcmcuYmx1ZXoub2JleC5zZXJ2aWNlLmlufSB8IDIgKy0KICAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKICByZW5hbWUgb2JleGQvc3JjL3tvcmcuYmx1ZXoub2JleC5zZXJ2aWNlID0+IG9yZy5ibHVlei5vYmV4LnNlcnZpY2UuaW59ICg3NiUpCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5vYmV4ZCBiL01ha2VmaWxlLm9iZXhkCi1pbmRleCBjNDYyNjkyLi4wMzI1ZjY2IDEwMDY0NAoraW5kZXggZGU1OWQyOS4uNzMwMDRhMyAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLm9iZXhkCiArKysgYi9NYWtlZmlsZS5vYmV4ZAogQEAgLTEsMTIgKzEsMTIgQEAKICBpZiBTWVNURU1ECi0gc3lzdGVtZHVzZXJ1bml0ZGlyID0gQFNZU1RFTURfVVNFUlVOSVRESVJACisgc3lzdGVtZHVzZXJ1bml0ZGlyID0gJChTWVNURU1EX1VTRVJVTklURElSKQogIHN5c3RlbWR1c2VydW5pdF9EQVRBID0gb2JleGQvc3JjL29iZXguc2VydmljZQogK2VuZGlmCiAgCi0gZGJ1c3Nlc3Npb25idXNkaXIgPSBAREJVU19TRVNTSU9OQlVTRElSQAorIGRidXNzZXNzaW9uYnVzZGlyID0gJChEQlVTX1NFU1NJT05CVVNESVIpCiAgZGJ1c3Nlc3Npb25idXNfREFUQSA9IG9iZXhkL3NyYy9vcmcuYmx1ZXoub2JleC5zZXJ2aWNlCiAtZW5kaWYKICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtTWFrZWZpbGUuYW0tRml4LWEtcmFjZS1pc3N1ZS1mb3ItdG9vbHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLU1ha2VmaWxlLmFtLUZpeC1hLXJhY2UtaXNzdWUtZm9yLXRvb2xzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmNiOTc4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtTWFrZWZpbGUuYW0tRml4LWEtcmFjZS1pc3N1ZS1mb3ItdG9vbHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDExN2M0MTI0MmMwMWUwNTcyOTVhZWQ4MGVkOTczYzZkYzdlMzVmZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotRGF0ZTogVHVlLCA4IE9jdCAyMDE5IDExOjAxOjU2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggQmx1ZVpdIE1ha2VmaWxlLmFtOiBhZGQgbWlzc2luZyBta2RpciBpbiBydWxlcyBnZW5lcmF0aW9uCi0KLUluIHBhcmFsbGVsIG91dC1vZi10cmVlIGJ1aWxkcyBpdCdzIHBvc3NpYmxlIHRoYXQgdG9vbHMvKi5ydWxlcyBhcmUKLWdlbmVyYXRlZCBiZWZvcmUgdGhlIHRhcmdldCBkaXJlY3RvcnkgaGFzIGJlZW4gaW1wbGljaXRseSBjcmVhdGVkLiBTb2x2ZSB0aGlzIGJ5Ci1jcmVhdGluZyB0aGUgZGlyZWN0b3J5IGJlZm9yZSB3cml0aW5nIGludG8gaXQuCi0tLS0KLSBNYWtlZmlsZS5hbSB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggMmFjMjhiMjNkLi5lN2JjZDIzNjYgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC01ODksNiArNTg5LDcgQEAgc3JjL2J1aWx0aW4uaDogc3JjL2dlbmJ1aWx0aW4gJChidWlsdGluX3NvdXJjZXMpCi0gCSQoQU1fVl9HRU4pJChzcmNkaXIpL3NyYy9nZW5idWlsdGluICQoYnVpbHRpbl9tb2R1bGVzKSA+ICRACi0gCi0gdG9vbHMvJS5ydWxlczoKLSsJJChBTV9WX2F0KSQoTUtESVJfUCkgdG9vbHMKLSAJJChBTV9WX0dFTiljcCAkKHNyY2RpcikvJChzdWJzdCA5Ny0sLCRAKSAkQAotIAotICQobGliX2xpYmJsdWV0b290aF9sYV9PQkpFQ1RTKTogJChsb2NhbF9oZWFkZXJzKQotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS10b29scy1GaXgtYnVpbGQtYWZ0ZXIteTIwMzgtY2hhbmdlcy1pbi1nbGliYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtdG9vbHMtRml4LWJ1aWxkLWFmdGVyLXkyMDM4LWNoYW5nZXMtaW4tZ2xpYmMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljYTIwYWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS10b29scy1GaXgtYnVpbGQtYWZ0ZXIteTIwMzgtY2hhbmdlcy1pbi1nbGliYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLUZyb20gZjM2ZjcxZjYwYjFlNjhjMGYxMmU2MTViOWIxMjhkMDg5ZWMzZGQxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJhc3RpZW4gTm9jZXJhIDxoYWRlc3NAaGFkZXNzLm5ldD4KLURhdGU6IEZyaSwgNyBKdW4gMjAxOSAwOTo1MTozMyArMDIwMAotU3ViamVjdDogW1BBVENIXSB0b29sczogRml4IGJ1aWxkIGFmdGVyIHkyMDM4IGNoYW5nZXMgaW4gZ2xpYmMKLQotVGhlIDMyLWJpdCBTSU9DR1NUQU1QIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSB0aGUgZGVwcmVjYXRlZCBuYW1lCi10byBmaXggdGhlIGJ1aWxkLgotCi1VcHN0cmVhbS1TdGF0dXM6IGJhY2twb3J0IGNvbW1pdCBmMzZmNzFmNjBiMWU2OGMwZjEyZTYxNWI5YjEyOGQwODllYzNkZDE5Ci0KLVNpZ25lZC1vZmYtYnk6IEJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEBnbWFpbC5jb20+Ci0KLS0tLQotIHRvb2xzL2wydGVzdC5jIHwgNiArKysrKy0KLSB0b29scy9yY3Rlc3QuYyB8IDYgKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdG9vbHMvbDJ0ZXN0LmMgYi90b29scy9sMnRlc3QuYwotaW5kZXggZTc1NWFjODgxLi5lNzg3YzJjZTIgMTAwNjQ0Ci0tLS0gYS90b29scy9sMnRlc3QuYwotKysrIGIvdG9vbHMvbDJ0ZXN0LmMKLUBAIC01NSw2ICs1NSwxMCBAQAotICNkZWZpbmUgQlJFRFJfREVGQVVMVF9QU00JMHgxMDExCi0gI2RlZmluZSBMRV9ERUZBVUxUX1BTTQkJMHgwMDgwCi0gCi0rI2lmbmRlZiBTSU9DR1NUQU1QX09MRAotKyNkZWZpbmUgU0lPQ0dTVEFNUF9PTEQgU0lPQ0dTVEFNUAotKyNlbmRpZgotKwotIC8qIFRlc3QgbW9kZXMgKi8KLSBlbnVtIHsKLSAJU0VORCwKLUBAIC05MDcsNyArOTExLDcgQEAgc3RhdGljIHZvaWQgcmVjdl9tb2RlKGludCBzaykKLSAJCQlpZiAodGltZXN0YW1wKSB7Ci0gCQkJCXN0cnVjdCB0aW1ldmFsIHR2OwotIAotLQkJCQlpZiAoaW9jdGwoc2ssIFNJT0NHU1RBTVAsICZ0dikgPCAwKSB7Ci0rCQkJCWlmIChpb2N0bChzaywgU0lPQ0dTVEFNUF9PTEQsICZ0dikgPCAwKSB7Ci0gCQkJCQl0aW1lc3RhbXAgPSAwOwotIAkJCQkJbWVtc2V0KHRzLCAwLCBzaXplb2YodHMpKTsKLSAJCQkJfSBlbHNlIHsKLWRpZmYgLS1naXQgYS90b29scy9yY3Rlc3QuYyBiL3Rvb2xzL3JjdGVzdC5jCi1pbmRleCA5NDQ5MGY0NjIuLmJjOGVkODc1ZCAxMDA2NDQKLS0tLSBhL3Rvb2xzL3JjdGVzdC5jCi0rKysgYi90b29scy9yY3Rlc3QuYwotQEAgLTUwLDYgKzUwLDEwIEBACi0gCi0gI2luY2x1ZGUgInNyYy9zaGFyZWQvdXRpbC5oIgotIAotKyNpZm5kZWYgU0lPQ0dTVEFNUF9PTEQKLSsjZGVmaW5lIFNJT0NHU1RBTVBfT0xEIFNJT0NHU1RBTVAKLSsjZW5kaWYKLSsKLSAvKiBUZXN0IG1vZGVzICovCi0gZW51bSB7Ci0gCVNFTkQsCi1AQCAtNTA1LDcgKzUwOSw3IEBAIHN0YXRpYyB2b2lkIHJlY3ZfbW9kZShpbnQgc2spCi0gCQkJaWYgKHRpbWVzdGFtcCkgewotIAkJCQlzdHJ1Y3QgdGltZXZhbCB0djsKLSAKLS0JCQkJaWYgKGlvY3RsKHNrLCBTSU9DR1NUQU1QLCAmdHYpIDwgMCkgewotKwkJCQlpZiAoaW9jdGwoc2ssIFNJT0NHU1RBTVBfT0xELCAmdHYpIDwgMCkgewotIAkJCQkJdGltZXN0YW1wID0gMDsKLSAJCQkJCW1lbXNldCh0cywgMCwgc2l6ZW9mKHRzKSk7Ci0gCQkJCX0gZWxzZSB7Ci0tLSAKLTIuMTkuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLXRvb2xzLWJ0cGNsaWVudC5jLWluY2x1ZGUtc2lnbmFsLmgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLXRvb2xzLWJ0cGNsaWVudC5jLWluY2x1ZGUtc2lnbmFsLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyMGFhYWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS10b29scy1idHBjbGllbnQuYy1pbmNsdWRlLXNpZ25hbC5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSAwYjE3NjY1MTRmNjg0N2M3MzY3ZmNlMDdmMTlhNzUwZWM3NGMxMWE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDI2IFNlcCAyMDE5IDE2OjE5OjM0ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRvb2xzL2J0cGNsaWVudC5jOiBpbmNsdWRlIHNpZ25hbC5oCi0KLUZpeCBjb21waWxlIGZhaWx1cmUgd2hlbiBjb25maWd1cmUgLS1lbmFibGUtYnRwY2xpZW50OgotYnRwY2xpZW50LmM6MjgzNDo3OiBlcnJvcjogJ1NJR0lOVCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW0Egc3Vic2V0IG9mIHRoZSBmdWxsIGZpeCB0aGF0IHdlbnQgdXBzdHJlYW1dCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gdG9vbHMvYnRwY2xpZW50LmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3Rvb2xzL2J0cGNsaWVudC5jIGIvdG9vbHMvYnRwY2xpZW50LmMKLWluZGV4IGIyMTdkZjUuLmFlY2U3ZmUgMTAwNjQ0Ci0tLS0gYS90b29scy9idHBjbGllbnQuYwotKysrIGIvdG9vbHMvYnRwY2xpZW50LmMKLUBAIC0yOSw2ICsyOSw3IEBACi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8Z2V0b3B0Lmg+Ci0rI2luY2x1ZGUgPHNpZ25hbC5oPgotIAotICNpbmNsdWRlIDxlbGwvZWxsLmg+Ci0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L0NWRS0yMDE4LTEwOTEwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvQ1ZFLTIwMTgtMTA5MTAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhNzgwNzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvQ1ZFLTIwMTgtMTA5MTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MDUgKzAsMCBAQAotRnJvbSA5NzczMjFmMmM3Zjk3NGVhNjhhM2Q5MGRmMjk2YzY2MTg5YTNmMjU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgotRGF0ZTogRnJpLCAyMSBKdW4gMjAxOSAxNzo1NzozNSArMDkwMAotU3ViamVjdDogW1BBVENIXSBDVkUtMjAxOC0xMDkxMAotCi1BIGJ1ZyBpbiBCbHVleiBtYXkgYWxsb3cgZm9yIHRoZSBCbHVldG9vdGggRGlzY292ZXJhYmxlIHN0YXRlIGJlaW5nIHNldCB0byBvbgotd2hlbiBubyBCbHVldG9vdGggYWdlbnQgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBzeXN0ZW0uIFRoaXMgc2l0dWF0aW9uIGNvdWxkCi1sZWFkIHRvIHRoZSB1bmF1dGhvcml6ZWQgcGFpcmluZyBvZiBjZXJ0YWluIEJsdWV0b290aCBkZXZpY2VzIHdpdGhvdXQgYW55Ci1mb3JtIG9mIGF1dGhlbnRpY2F0aW9uLgotCi1DVkU6IENWRS0yMDE4LTEwOTEwCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1TdWJqZWN0OiAgICBbUEFUQ0ggQmx1ZVogMS80XSBjbGllbnQ6IEFkZCBkaXNjb3ZlcmFibGUtdGltZW91dCBjb21tYW5kCi1Gcm9tOiAgICAgICBMdWl6IEF1Z3VzdG8gdm9uIERlbnR6IDxsdWl6LmRlbnR6ICgpIGdtYWlsICEgY29tPgotRGF0ZTogICAgICAgMjAxOC0wNy0yNSAxMDoyMDozMgotTWVzc2FnZS1JRDogMjAxODA3MjUxMDIwMzUuMTk0MzktMS1sdWl6LmRlbnR6ICgpIGdtYWlsICEgY29tCi1bRG93bmxvYWQgUkFXIG1lc3NhZ2Ugb3IgYm9keV0KLQotRnJvbTogTHVpeiBBdWd1c3RvIHZvbiBEZW50eiA8bHVpei52b24uZGVudHpAaW50ZWwuY29tPgotCi1UaGlzIGFkZHMgZGlzY292ZXJhYmxlLXRpbWVvdXQgY29tbWFuZCB3aGljaCBjYW4gYmUgdXNlZCB0byBnZXQvc2V0Ci1EaXNjb3ZlcmFibGVUaW1lb3V0IHByb3BlcnR5OgotCi1bYmx1ZXRvb3RoXSMgZGlzY292ZXJhYmxlLXRpbWVvdXQgMTgwCi1DaGFuZ2luZyBkaXNjb3ZlcmFibGUtdGltZW91dCAxODAgc3VjY2VlZGVkCi0tLS0KLSBjbGllbnQvbWFpbi5jICAgICAgIHwgIDgyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSBkb2MvYWRhcHRlci1hcGkudHh0IHwgICA2ICsrKwotIHNyYy9hZGFwdGVyLmMgICAgICAgfCAxMjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMTk4IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY2xpZW50L21haW4uYyBiL2NsaWVudC9tYWluLmMKLWluZGV4IDg3MzIzZDguLjFhNjZhM2EgMTAwNjQ0Ci0tLS0gYS9jbGllbnQvbWFpbi5jCi0rKysgYi9jbGllbnQvbWFpbi5jCi1AQCAtODc3LDYgKzg3Nyw3IEBAIHN0YXRpYyB2b2lkIGNtZF9zaG93KGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCXByaW50X3Byb3BlcnR5KHByb3h5LCAiQ2xhc3MiKTsKLSAJcHJpbnRfcHJvcGVydHkocHJveHksICJQb3dlcmVkIik7Ci0gCXByaW50X3Byb3BlcnR5KHByb3h5LCAiRGlzY292ZXJhYmxlIik7Ci0rCXByaW50X3Byb3BlcnR5KHByb3h5LCAiRGlzY292ZXJhYmxlVGltZW91dCIpOwotIAlwcmludF9wcm9wZXJ0eShwcm94eSwgIlBhaXJhYmxlIik7Ci0gCXByaW50X3V1aWRzKHByb3h5KTsKLSAJcHJpbnRfcHJvcGVydHkocHJveHksICJNb2RhbGlhcyIpOwotQEAgLTEwNjEsNiArMTA2Miw0NyBAQCBzdGF0aWMgdm9pZCBjbWRfZGlzY292ZXJhYmxlKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCXJldHVybiBidF9zaGVsbF9ub25pbnRlcmFjdGl2ZV9xdWl0KEVYSVRfRkFJTFVSRSk7Ci0gfQotIAotK3N0YXRpYyB2b2lkIGNtZF9kaXNjb3ZlcmFibGVfdGltZW91dChpbnQgYXJnYywgY2hhciAqYXJndltdKQotK3sKLSsJdWludDMyX3QgdmFsdWU7Ci0rCWNoYXIgKmVuZHB0ciA9IE5VTEw7Ci0rCWNoYXIgKnN0cjsKLSsKLSsJaWYgKGFyZ2MgPCAyKSB7Ci0rCQlEQnVzTWVzc2FnZUl0ZXIgaXRlcjsKLSsKLSsJCWlmICghZ19kYnVzX3Byb3h5X2dldF9wcm9wZXJ0eShkZWZhdWx0X2N0cmwtPnByb3h5LAotKwkJCQkJIkRpc2NvdmVyYWJsZVRpbWVvdXQiLCAmaXRlcikpIHsKLSsJCQlidF9zaGVsbF9wcmludGYoIlVuYWJsZSB0byBnZXQgRGlzY292ZXJhYmxlVGltZW91dFxuIik7Ci0rCQkJcmV0dXJuIGJ0X3NoZWxsX25vbmludGVyYWN0aXZlX3F1aXQoRVhJVF9GQUlMVVJFKTsKLSsJCX0KLSsKLSsJCWRidXNfbWVzc2FnZV9pdGVyX2dldF9iYXNpYygmaXRlciwgJnZhbHVlKTsKLSsKLSsJCWJ0X3NoZWxsX3ByaW50ZigiRGlzY292ZXJhYmxlVGltZW91dDogJWQgc2Vjb25kc1xuIiwgdmFsdWUpOwotKwotKwkJcmV0dXJuOwotKwl9Ci0rCi0rCXZhbHVlID0gc3RydG9sKGFyZ3ZbMV0sICZlbmRwdHIsIDApOwotKwlpZiAoIWVuZHB0ciB8fCAqZW5kcHRyICE9ICdcMCcgfHwgdmFsdWUgPiBVSU5UMzJfTUFYKSB7Ci0rCQlidF9zaGVsbF9wcmludGYoIkludmFsaWQgYXJndW1lbnRcbiIpOwotKwkJcmV0dXJuIGJ0X3NoZWxsX25vbmludGVyYWN0aXZlX3F1aXQoRVhJVF9GQUlMVVJFKTsKLSsJfQotKwotKwlzdHIgPSBnX3N0cmR1cF9wcmludGYoImRpc2NvdmVyYWJsZS10aW1lb3V0ICVkIiwgdmFsdWUpOwotKwotKwlpZiAoZ19kYnVzX3Byb3h5X3NldF9wcm9wZXJ0eV9iYXNpYyhkZWZhdWx0X2N0cmwtPnByb3h5LAotKwkJCQkJIkRpc2NvdmVyYWJsZVRpbWVvdXQiLAotKwkJCQkJREJVU19UWVBFX1VJTlQzMiwgJnZhbHVlLAotKwkJCQkJZ2VuZXJpY19jYWxsYmFjaywgc3RyLCBnX2ZyZWUpKQotKwkJcmV0dXJuOwotKwotKwlnX2ZyZWUoc3RyKTsKLSsKLSsJcmV0dXJuIGJ0X3NoZWxsX25vbmludGVyYWN0aXZlX3F1aXQoRVhJVF9GQUlMVVJFKTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQgY21kX2FnZW50KGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gewotIAlkYnVzX2Jvb2xfdCBlbmFibGU7Ci1AQCAtMTEyNCw2ICsxMTY2LDcgQEAgc3RhdGljIHN0cnVjdCBzZXRfZGlzY292ZXJ5X2ZpbHRlcl9hcmdzIHsKLSAJY2hhciAqKnV1aWRzOwotIAlzaXplX3QgdXVpZHNfbGVuOwotIAlkYnVzX2Jvb2xfdCBkdXBsaWNhdGU7Ci0rCWRidXNfYm9vbF90IGRpc2NvdmVyYWJsZTsKLSAJYm9vbCBzZXQ7Ci0gfSBmaWx0ZXIgPSB7Ci0gCS5yc3NpID0gRElTVEFOQ0VfVkFMX0lOVkFMSUQsCi1AQCAtMTE2Myw2ICsxMjA2LDExIEBAIHN0YXRpYyB2b2lkIHNldF9kaXNjb3ZlcnlfZmlsdGVyX3NldHVwKERCdXNNZXNzYWdlSXRlciAqaXRlciwgdm9pZCAqdXNlcl9kYXRhKQotIAkJCQkJCURCVVNfVFlQRV9CT09MRUFOLAotIAkJCQkJCSZhcmdzLT5kdXBsaWNhdGUpOwotIAotKwlpZiAoYXJncy0+ZGlzY292ZXJhYmxlKQotKwkJZ19kYnVzX2RpY3RfYXBwZW5kX2VudHJ5KCZkaWN0LCAiRGlzY292ZXJhYmxlIiwKLSsJCQkJCQlEQlVTX1RZUEVfQk9PTEVBTiwKLSsJCQkJCQkmYXJncy0+ZGlzY292ZXJhYmxlKTsKLSsKLSAJZGJ1c19tZXNzYWdlX2l0ZXJfY2xvc2VfY29udGFpbmVyKGl0ZXIsICZkaWN0KTsKLSB9Ci0gCi1AQCAtMTMyMCw2ICsxMzY4LDI2IEBAIHN0YXRpYyB2b2lkIGNtZF9zY2FuX2ZpbHRlcl9kdXBsaWNhdGVfZGF0YShpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAlmaWx0ZXIuc2V0ID0gZmFsc2U7Ci0gfQotIAotK3N0YXRpYyB2b2lkIGNtZF9zY2FuX2ZpbHRlcl9kaXNjb3ZlcmFibGUoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSt7Ci0rCWlmIChhcmdjIDwgMiB8fCAhc3RybGVuKGFyZ3ZbMV0pKSB7Ci0rCQlidF9zaGVsbF9wcmludGYoIkRpc2NvdmVyYWJsZTogJXNcbiIsCi0rCQkJCWZpbHRlci5kaXNjb3ZlcmFibGUgPyAib24iIDogIm9mZiIpOwotKwkJcmV0dXJuIGJ0X3NoZWxsX25vbmludGVyYWN0aXZlX3F1aXQoRVhJVF9TVUNDRVNTKTsKLSsJfQotKwotKwlpZiAoIXN0cmNtcChhcmd2WzFdLCAib24iKSkKLSsJCWZpbHRlci5kaXNjb3ZlcmFibGUgPSB0cnVlOwotKwllbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICJvZmYiKSkKLSsJCWZpbHRlci5kaXNjb3ZlcmFibGUgPSBmYWxzZTsKLSsJZWxzZSB7Ci0rCQlidF9zaGVsbF9wcmludGYoIkludmFsaWQgb3B0aW9uOiAlc1xuIiwgYXJndlsxXSk7Ci0rCQlyZXR1cm4gYnRfc2hlbGxfbm9uaW50ZXJhY3RpdmVfcXVpdChFWElUX0ZBSUxVUkUpOwotKwl9Ci0rCi0rCWZpbHRlci5zZXQgPSBmYWxzZTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQgZmlsdGVyX2NsZWFyX3V1aWRzKHZvaWQpCi0gewotIAlnX3N0cmZyZWV2KGZpbHRlci51dWlkcyk7Ci1AQCAtMTM0OCw2ICsxNDE2LDExIEBAIHN0YXRpYyB2b2lkIGZpbHRlcl9jbGVhcl9kdXBsaWNhdGUodm9pZCkKLSAJZmlsdGVyLmR1cGxpY2F0ZSA9IGZhbHNlOwotIH0KLSAKLStzdGF0aWMgdm9pZCBmaWx0ZXJfY2xlYXJfZGlzY292ZXJhYmxlKHZvaWQpCi0rewotKwlmaWx0ZXIuZGlzY292ZXJhYmxlID0gZmFsc2U7Ci0rfQotKwotIHN0cnVjdCBjbGVhcl9lbnRyeSB7Ci0gCWNvbnN0IGNoYXIgKm5hbWU7Ci0gCXZvaWQgKCpjbGVhcikgKHZvaWQpOwotQEAgLTEzNTksNiArMTQzMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY2xlYXJfZW50cnkgZmlsdGVyX2NsZWFyW10gPSB7Ci0gCXsgInBhdGhsb3NzIiwgZmlsdGVyX2NsZWFyX3BhdGhsb3NzIH0sCi0gCXsgInRyYW5zcG9ydCIsIGZpbHRlcl9jbGVhcl90cmFuc3BvcnQgfSwKLSAJeyAiZHVwbGljYXRlLWRhdGEiLCBmaWx0ZXJfY2xlYXJfZHVwbGljYXRlIH0sCi0rCXsgImRpc2NvdmVyYWJsZSIsIGZpbHRlcl9jbGVhcl9kaXNjb3ZlcmFibGUgfSwKLSAJe30KLSB9OwotIAotQEAgLTI0NjgsNyArMjU0MiwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJ0X3NoZWxsX21lbnUgc2Nhbl9tZW51ID0gewotIAl7ICJkdXBsaWNhdGUtZGF0YSIsICJbb24vb2ZmXSIsIGNtZF9zY2FuX2ZpbHRlcl9kdXBsaWNhdGVfZGF0YSwKLSAJCQkJIlNldC9HZXQgZHVwbGljYXRlIGRhdGEgZmlsdGVyIiwKLSAJCQkJTlVMTCB9LAotLQl7ICJjbGVhciIsICJbdXVpZHMvcnNzaS9wYXRobG9zcy90cmFuc3BvcnQvZHVwbGljYXRlLWRhdGFdIiwKLSsJeyAiZGlzY292ZXJhYmxlIiwgIltvbi9vZmZdIiwgY21kX3NjYW5fZmlsdGVyX2Rpc2NvdmVyYWJsZSwKLSsJCQkJIlNldC9HZXQgZGlzY292ZXJhYmxlIGZpbHRlciIsCi0rCQkJCU5VTEwgfSwKLSsJeyAiY2xlYXIiLAotKwkJIlt1dWlkcy9yc3NpL3BhdGhsb3NzL3RyYW5zcG9ydC9kdXBsaWNhdGUtZGF0YS9kaXNjb3ZlcmFibGVdIiwKLSAJCQkJY21kX3NjYW5fZmlsdGVyX2NsZWFyLAotIAkJCQkiQ2xlYXJzIGRpc2NvdmVyeSBmaWx0ZXIuIiwKLSAJCQkJZmlsdGVyX2NsZWFyX2dlbmVyYXRvciB9LAotQEAgLTI1NDksNiArMjYyNyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYnRfc2hlbGxfbWVudSBtYWluX21lbnUgPSB7Ci0gCXsgImRpc2NvdmVyYWJsZSIsICI8b24vb2ZmPiIsIGNtZF9kaXNjb3ZlcmFibGUsCi0gCQkJCQkiU2V0IGNvbnRyb2xsZXIgZGlzY292ZXJhYmxlIG1vZGUiLAotIAkJCQkJCQlOVUxMIH0sCi0rCXsgImRpc2NvdmVyYWJsZS10aW1lb3V0IiwgIlt2YWx1ZV0iLCBjbWRfZGlzY292ZXJhYmxlX3RpbWVvdXQsCi0rCQkJCQkiU2V0IGRpc2NvdmVyYWJsZSB0aW1lb3V0IiwgTlVMTCB9LAotIAl7ICJhZ2VudCIsICAgICAgICAiPG9uL29mZi9jYXBhYmlsaXR5PiIsIGNtZF9hZ2VudCwKLSAJCQkJIkVuYWJsZS9kaXNhYmxlIGFnZW50IHdpdGggZ2l2ZW4gY2FwYWJpbGl0eSIsCi0gCQkJCQkJCWNhcGFiaWxpdHlfZ2VuZXJhdG9yfSwKLWRpZmYgLS1naXQgYS9kb2MvYWRhcHRlci1hcGkudHh0IGIvZG9jL2FkYXB0ZXItYXBpLnR4dAotaW5kZXggZDE0ZDBjYS4uNDc5MWFmMiAxMDA2NDQKLS0tLSBhL2RvYy9hZGFwdGVyLWFwaS50eHQKLSsrKyBiL2RvYy9hZGFwdGVyLWFwaS50eHQKLUBAIC0xMTMsNiArMTEzLDEyIEBAIE1ldGhvZHMJCXZvaWQgU3RhcnREaXNjb3ZlcnkoKQotIAkJCQlnZW5lcmF0ZWQgZm9yIGVpdGhlciBNYW51ZmFjdHVyZXJEYXRhIGFuZAotIAkJCQlTZXJ2aWNlRGF0YSBldmVyeXRpbWUgdGhleSBhcmUgZGlzY292ZXJlZC4KLSAKLSsJCQlib29sIERpc2NvdmVyYWJsZSAoRGVmYXVsdDogZmFsc2UpCi0rCi0rCQkJCU1ha2UgYWRhcHRlciBkaXNjb3ZlcmFibGUgd2hpbGUgZGlzY292ZXJpbmcsCi0rCQkJCWlmIHRoZSBhZGFwdGVyIGlzIGFscmVhZHkgZGlzY292ZXJhYmxlIHRoaXMKLSsJCQkJc2V0dGluZyB0aGlzIGZpbHRlciB3b24ndCBkbyBhbnl0aGluZy4KLSsKLSAJCQlXaGVuIGRpc2NvdmVyeSBmaWx0ZXIgaXMgc2V0LCBEZXZpY2Ugb2JqZWN0cyB3aWxsIGJlCi0gCQkJY3JlYXRlZCBhcyBuZXcgZGV2aWNlcyB3aXRoIG1hdGNoaW5nIGNyaXRlcmlhIGFyZQotIAkJCWRpc2NvdmVyZWQgcmVnYXJkbGVzcyBvZiB0aGV5IGFyZSBjb25uZWN0YWJsZSBvcgotZGlmZiAtLWdpdCBhL3NyYy9hZGFwdGVyLmMgYi9zcmMvYWRhcHRlci5jCi1pbmRleCBhZjM0MGZkLi44MjJiZDM0IDEwMDY0NAotLS0tIGEvc3JjL2FkYXB0ZXIuYwotKysrIGIvc3JjL2FkYXB0ZXIuYwotQEAgLTE1Nyw2ICsxNTcsNyBAQCBzdHJ1Y3QgZGlzY292ZXJ5X2ZpbHRlciB7Ci0gCWludDE2X3QgcnNzaTsKLSAJR1NMaXN0ICp1dWlkczsKLSAJYm9vbCBkdXBsaWNhdGU7Ci0rCWJvb2wgZGlzY292ZXJhYmxlOwotIH07Ci0gCi0gc3RydWN0IHdhdGNoX2NsaWVudCB7Ci1AQCAtMTk2LDYgKzE5Nyw3IEBAIHN0cnVjdCBidGRfYWRhcHRlciB7Ci0gCWNoYXIgKm5hbWU7CQkJLyogY29udHJvbGxlciBkZXZpY2UgbmFtZSAqLwotIAljaGFyICpzaG9ydF9uYW1lOwkJLyogY29udHJvbGxlciBzaG9ydCBuYW1lICovCi0gCXVpbnQzMl90IHN1cHBvcnRlZF9zZXR0aW5nczsJLyogY29udHJvbGxlciBzdXBwb3J0ZWQgc2V0dGluZ3MgKi8KLSsJdWludDMyX3QgcGVuZGluZ19zZXR0aW5nczsJLyogcGVuZGluZyBjb250cm9sbGVyIHNldHRpbmdzICovCi0gCXVpbnQzMl90IGN1cnJlbnRfc2V0dGluZ3M7CS8qIGN1cnJlbnQgY29udHJvbGxlciBzZXR0aW5ncyAqLwotIAotIAljaGFyICpwYXRoOwkJCS8qIGFkYXB0ZXIgb2JqZWN0IHBhdGggKi8KLUBAIC0yMTMsNiArMjE1LDcgQEAgc3RydWN0IGJ0ZF9hZGFwdGVyIHsKLSAKLSAJYm9vbCBkaXNjb3ZlcmluZzsJCS8qIGRpc2NvdmVyaW5nIHByb3BlcnR5IHN0YXRlICovCi0gCWJvb2wgZmlsdGVyZWRfZGlzY292ZXJ5OwkvKiB3ZSBhcmUgZG9pbmcgZmlsdGVyZWQgZGlzY292ZXJ5ICovCi0rCWJvb2wgZmlsdGVyZWRfZGlzY292ZXJhYmxlOwkvKiB3ZSBhcmUgZG9pbmcgZmlsdGVyZWQgZGlzY292ZXJ5ICovCi0gCWJvb2wgbm9fc2Nhbl9yZXN0YXJ0X2RlbGF5OwkvKiB3aGVuIHRoaXMgZmxhZyBpcyBzZXQsIHJlc3RhcnQgc2NhbgotIAkJCQkJICogd2l0aG91dCBkZWxheSAqLwotIAl1aW50OF90IGRpc2NvdmVyeV90eXBlOwkJLyogY3VycmVudCBhY3RpdmUgZGlzY292ZXJ5IHR5cGUgKi8KLUBAIC01MDksOCArNTEyLDEwIEBAIHN0YXRpYyB2b2lkIHNldHRpbmdzX2NoYW5nZWQoc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyLCB1aW50MzJfdCBzZXR0aW5ncykKLSAJY2hhbmdlZF9tYXNrID0gYWRhcHRlci0+Y3VycmVudF9zZXR0aW5ncyBeIHNldHRpbmdzOwotIAotIAlhZGFwdGVyLT5jdXJyZW50X3NldHRpbmdzID0gc2V0dGluZ3M7Ci0rCWFkYXB0ZXItPnBlbmRpbmdfc2V0dGluZ3MgJj0gfmNoYW5nZWRfbWFzazsKLSAKLSAJREJHKCJDaGFuZ2VkIHNldHRpbmdzOiAweCUwOHgiLCBjaGFuZ2VkX21hc2spOwotKwlEQkcoIlBlbmRpbmcgc2V0dGluZ3M6IDB4JTA4eCIsIGFkYXB0ZXItPnBlbmRpbmdfc2V0dGluZ3MpOwotIAotIAlpZiAoY2hhbmdlZF9tYXNrICYgTUdNVF9TRVRUSU5HX1BPV0VSRUQpIHsKLSAJICAgICAgICBnX2RidXNfZW1pdF9wcm9wZXJ0eV9jaGFuZ2VkKGRidXNfY29ubiwgYWRhcHRlci0+cGF0aCwKLUBAIC01OTYsMTAgKzYwMSwzMSBAQCBzdGF0aWMgYm9vbCBzZXRfbW9kZShzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIsIHVpbnQxNl90IG9wY29kZSwKLSAJCQkJCQkJdWludDhfdCBtb2RlKQotIHsKLSAJc3RydWN0IG1nbXRfbW9kZSBjcDsKLSsJdWludDMyX3Qgc2V0dGluZyA9IDA7Ci0gCi0gCW1lbXNldCgmY3AsIDAsIHNpemVvZihjcCkpOwotIAljcC52YWwgPSBtb2RlOwotIAotKwlzd2l0Y2ggKG1vZGUpIHsKLSsJY2FzZSBNR01UX09QX1NFVF9QT1dFUkVEOgotKwkJc2V0dGluZyA9IE1HTVRfU0VUVElOR19QT1dFUkVEOwotKwkJYnJlYWs7Ci0rCWNhc2UgTUdNVF9PUF9TRVRfQ09OTkVDVEFCTEU6Ci0rCQlzZXR0aW5nID0gTUdNVF9TRVRUSU5HX0NPTk5FQ1RBQkxFOwotKwkJYnJlYWs7Ci0rCWNhc2UgTUdNVF9PUF9TRVRfRkFTVF9DT05ORUNUQUJMRToKLSsJCXNldHRpbmcgPSBNR01UX1NFVFRJTkdfRkFTVF9DT05ORUNUQUJMRTsKLSsJCWJyZWFrOwotKwljYXNlIE1HTVRfT1BfU0VUX0RJU0NPVkVSQUJMRToKLSsJCXNldHRpbmcgPSBNR01UX1NFVFRJTkdfRElTQ09WRVJBQkxFOwotKwkJYnJlYWs7Ci0rCWNhc2UgTUdNVF9PUF9TRVRfQk9OREFCTEU6Ci0rCQlzZXR0aW5nID0gTUdNVF9TRVRUSU5HX0RJU0NPVkVSQUJMRTsKLSsJCWJyZWFrOwotKwl9Ci0rCi0rCWFkYXB0ZXItPnBlbmRpbmdfc2V0dGluZ3MgfD0gc2V0dGluZzsKLSsKLSAJREJHKCJzZW5kaW5nIHNldCBtb2RlIGNvbW1hbmQgZm9yIGluZGV4ICV1IiwgYWRhcHRlci0+ZGV2X2lkKTsKLSAKLSAJaWYgKG1nbXRfc2VuZChhZGFwdGVyLT5tZ210LCBvcGNvZGUsCi1AQCAtMTgxOCw3ICsxODQ0LDE3IEBAIHN0YXRpYyB2b2lkIGRpc2NvdmVyeV9mcmVlKHZvaWQgKnVzZXJfZGF0YSkKLSAJZ19mcmVlKGNsaWVudCk7Ci0gfQotIAotLXN0YXRpYyB2b2lkIGRpc2NvdmVyeV9yZW1vdmUoc3RydWN0IHdhdGNoX2NsaWVudCAqY2xpZW50KQotK3N0YXRpYyBib29sIHNldF9maWx0ZXJlZF9kaXNjb3ZlcmFibGUoc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyLCBib29sIGVuYWJsZSkKLSt7Ci0rCWlmIChhZGFwdGVyLT5maWx0ZXJlZF9kaXNjb3ZlcmFibGUgPT0gZW5hYmxlKQotKwkJcmV0dXJuIHRydWU7Ci0rCi0rCWFkYXB0ZXItPmZpbHRlcmVkX2Rpc2NvdmVyYWJsZSA9IGVuYWJsZTsKLSsKLSsJcmV0dXJuIHNldF9kaXNjb3ZlcmFibGUoYWRhcHRlciwgZW5hYmxlLCAwKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgZGlzY292ZXJ5X3JlbW92ZShzdHJ1Y3Qgd2F0Y2hfY2xpZW50ICpjbGllbnQsIGJvb2wgZXhpdCkKLSB7Ci0gCXN0cnVjdCBidGRfYWRhcHRlciAqYWRhcHRlciA9IGNsaWVudC0+YWRhcHRlcjsKLSAKLUBAIC0xODMwLDcgKzE4NjYsMjcgQEAgc3RhdGljIHZvaWQgZGlzY292ZXJ5X3JlbW92ZShzdHJ1Y3Qgd2F0Y2hfY2xpZW50ICpjbGllbnQpCi0gCWFkYXB0ZXItPmRpc2NvdmVyeV9saXN0ID0gZ19zbGlzdF9yZW1vdmUoYWRhcHRlci0+ZGlzY292ZXJ5X2xpc3QsCi0gCQkJCQkJCQljbGllbnQpOwotIAotLQlkaXNjb3ZlcnlfZnJlZShjbGllbnQpOwotKwlpZiAoYWRhcHRlci0+ZmlsdGVyZWRfZGlzY292ZXJhYmxlICYmCi0rCQkJY2xpZW50LT5kaXNjb3ZlcnlfZmlsdGVyLT5kaXNjb3ZlcmFibGUpIHsKLSsJCUdTTGlzdCAqbDsKLSsKLSsJCWZvciAobCA9IGFkYXB0ZXItPmRpc2NvdmVyeV9saXN0OyBsOyBsID0gZ19zbGlzdF9uZXh0KGwpKSB7Ci0rCQkJc3RydWN0IHdhdGNoX2NsaWVudCAqY2xpZW50ID0gbC0+ZGF0YTsKLSsKLSsJCQlpZiAoY2xpZW50LT5kaXNjb3ZlcnlfZmlsdGVyLT5kaXNjb3ZlcmFibGUpCi0rCQkJCWJyZWFrOwotKwkJfQotKwotKwkJLyogRGlzYWJsZSBmaWx0ZXJlZCBkaXNjb3ZlcmFibGUgaWYgdGhlcmUgYXJlIG5vIGNsaWVudHMgKi8KLSsJCWlmICghbCkKLSsJCQlzZXRfZmlsdGVyZWRfZGlzY292ZXJhYmxlKGFkYXB0ZXIsIGZhbHNlKTsKLSsJfQotKwotKwlpZiAoIWV4aXQgJiYgY2xpZW50LT5kaXNjb3ZlcnlfZmlsdGVyKQotKwkJYWRhcHRlci0+c2V0X2ZpbHRlcl9saXN0ID0gZ19zbGlzdF9wcmVwZW5kKAotKwkJCQkJYWRhcHRlci0+c2V0X2ZpbHRlcl9saXN0LCBjbGllbnQpOwotKwllbHNlCi0rCQlkaXNjb3ZlcnlfZnJlZShjbGllbnQpOwotIAotIAkvKgotIAkgKiBJZiB0aGVyZSBhcmUgb3RoZXIgY2xpZW50IGRpc2NvdmVyaWVzIGluIHByb2dyZXNzLCB0aGVuIGxlYXZlCi1AQCAtMTg1OSw4ICsxOTE1LDExIEBAIHN0YXRpYyB2b2lkIHN0b3BfZGlzY292ZXJ5X2NvbXBsZXRlKHVpbnQ4X3Qgc3RhdHVzLCB1aW50MTZfdCBsZW5ndGgsCi0gCQlnb3RvIGRvbmU7Ci0gCX0KLSAKLS0JaWYgKGNsaWVudC0+bXNnKQotKwlpZiAoY2xpZW50LT5tc2cpIHsKLSAJCWdfZGJ1c19zZW5kX3JlcGx5KGRidXNfY29ubiwgY2xpZW50LT5tc2csIERCVVNfVFlQRV9JTlZBTElEKTsKLSsJCWRidXNfbWVzc2FnZV91bnJlZihjbGllbnQtPm1zZyk7Ci0rCQljbGllbnQtPm1zZyA9IE5VTEw7Ci0rCX0KLSAKLSAJYWRhcHRlci0+ZGlzY292ZXJ5X3R5cGUgPSAweDAwOwotIAlhZGFwdGVyLT5kaXNjb3ZlcnlfZW5hYmxlID0gMHgwMDsKLUBAIC0xODczLDcgKzE5MzIsNyBAQCBzdGF0aWMgdm9pZCBzdG9wX2Rpc2NvdmVyeV9jb21wbGV0ZSh1aW50OF90IHN0YXR1cywgdWludDE2X3QgbGVuZ3RoLAotIAl0cmlnZ2VyX3Bhc3NpdmVfc2Nhbm5pbmcoYWRhcHRlcik7Ci0gCi0gZG9uZToKLS0JZGlzY292ZXJ5X3JlbW92ZShjbGllbnQpOwotKwlkaXNjb3ZlcnlfcmVtb3ZlKGNsaWVudCwgZmFsc2UpOwotIH0KLSAKLSBzdGF0aWMgaW50IGNvbXBhcmVfc2VuZGVyKGdjb25zdHBvaW50ZXIgYSwgZ2NvbnN0cG9pbnRlciBiKQotQEAgLTIwOTQsMTQgKzIxNTMsMTQgQEAgc3RhdGljIGludCB1cGRhdGVfZGlzY292ZXJ5X2ZpbHRlcihzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIpCi0gCXJldHVybiAtRUlOUFJPR1JFU1M7Ci0gfQotIAotLXN0YXRpYyBpbnQgZGlzY292ZXJ5X3N0b3Aoc3RydWN0IHdhdGNoX2NsaWVudCAqY2xpZW50KQotK3N0YXRpYyBpbnQgZGlzY292ZXJ5X3N0b3Aoc3RydWN0IHdhdGNoX2NsaWVudCAqY2xpZW50LCBib29sIGV4aXQpCi0gewotIAlzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIgPSBjbGllbnQtPmFkYXB0ZXI7Ci0gCXN0cnVjdCBtZ210X2NwX3N0b3BfZGlzY292ZXJ5IGNwOwotIAotIAkvKiBDaGVjayBpZiB0aGVyZSBhcmUgbW9yZSBjbGllbnQgZGlzY292ZXJpbmcgKi8KLSAJaWYgKGdfc2xpc3RfbmV4dChhZGFwdGVyLT5kaXNjb3ZlcnlfbGlzdCkpIHsKLS0JCWRpc2NvdmVyeV9yZW1vdmUoY2xpZW50KTsKLSsJCWRpc2NvdmVyeV9yZW1vdmUoY2xpZW50LCBleGl0KTsKLSAJCXVwZGF0ZV9kaXNjb3ZlcnlfZmlsdGVyKGFkYXB0ZXIpOwotIAkJcmV0dXJuIDA7Ci0gCX0KLUBAIC0yMTExLDcgKzIxNzAsNyBAQCBzdGF0aWMgaW50IGRpc2NvdmVyeV9zdG9wKHN0cnVjdCB3YXRjaF9jbGllbnQgKmNsaWVudCkKLSAJICogYW5kIHNvIGl0IGlzIGVub3VnaCB0byBzZW5kIG91dCB0aGUgc2lnbmFsIGFuZCBqdXN0IHJldHVybi4KLSAJICovCi0gCWlmIChhZGFwdGVyLT5kaXNjb3ZlcnlfZW5hYmxlID09IDB4MDApIHsKLS0JCWRpc2NvdmVyeV9yZW1vdmUoY2xpZW50KTsKLSsJCWRpc2NvdmVyeV9yZW1vdmUoY2xpZW50LCBleGl0KTsKLSAJCWFkYXB0ZXItPmRpc2NvdmVyaW5nID0gZmFsc2U7Ci0gCQlnX2RidXNfZW1pdF9wcm9wZXJ0eV9jaGFuZ2VkKGRidXNfY29ubiwgYWRhcHRlci0+cGF0aCwKLSAJCQkJCUFEQVBURVJfSU5URVJGQUNFLCAiRGlzY292ZXJpbmciKTsKLUBAIC0yMTM2LDcgKzIxOTUsNyBAQCBzdGF0aWMgdm9pZCBkaXNjb3ZlcnlfZGlzY29ubmVjdChEQnVzQ29ubmVjdGlvbiAqY29ubiwgdm9pZCAqdXNlcl9kYXRhKQotIAotIAlEQkcoIm93bmVyICVzIiwgY2xpZW50LT5vd25lcik7Ci0gCi0tCWRpc2NvdmVyeV9zdG9wKGNsaWVudCk7Ci0rCWRpc2NvdmVyeV9zdG9wKGNsaWVudCwgdHJ1ZSk7Ci0gfQotIAotIC8qCi1AQCAtMjIwMCw2ICsyMjU5LDE1IEBAIHN0YXRpYyBEQnVzTWVzc2FnZSAqc3RhcnRfZGlzY292ZXJ5KERCdXNDb25uZWN0aW9uICpjb25uLAotIAkJCQkJICAgICBhZGFwdGVyLT5zZXRfZmlsdGVyX2xpc3QsIGNsaWVudCk7Ci0gCQlhZGFwdGVyLT5kaXNjb3ZlcnlfbGlzdCA9IGdfc2xpc3RfcHJlcGVuZCgKLSAJCQkJCSAgICAgIGFkYXB0ZXItPmRpc2NvdmVyeV9saXN0LCBjbGllbnQpOwotKwotKwkJLyogUmVzZXQgZGlzY292ZXJhYmxlIGZpbHRlciBpZiBhbHJlYWR5IHNldCAqLwotKwkJaWYgKGFkYXB0ZXItPmN1cnJlbnRfc2V0dGluZ3MgJiBNR01UX09QX1NFVF9ESVNDT1ZFUkFCTEUpCi0rCQkJZ290byBkb25lOwotKwotKwkJLyogU2V0IGRpc2NvdmVyYWJsZSBpZiBmaWx0ZXIgcmVxdWlyZXMgYW5kIGl0Ki8KLSsJCWlmIChjbGllbnQtPmRpc2NvdmVyeV9maWx0ZXItPmRpc2NvdmVyYWJsZSkKLSsJCQlzZXRfZmlsdGVyZWRfZGlzY292ZXJhYmxlKGFkYXB0ZXIsIHRydWUpOwotKwotIAkJZ290byBkb25lOwotIAl9Ci0gCi1AQCAtMjMyNCw2ICsyMzkyLDE3IEBAIHN0YXRpYyBib29sIHBhcnNlX2R1cGxpY2F0ZV9kYXRhKERCdXNNZXNzYWdlSXRlciAqdmFsdWUsCi0gCXJldHVybiB0cnVlOwotIH0KLSAKLStzdGF0aWMgYm9vbCBwYXJzZV9kaXNjb3ZlcmFibGUoREJ1c01lc3NhZ2VJdGVyICp2YWx1ZSwKLSsJCQkJCXN0cnVjdCBkaXNjb3ZlcnlfZmlsdGVyICpmaWx0ZXIpCi0rewotKwlpZiAoZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2FyZ190eXBlKHZhbHVlKSAhPSBEQlVTX1RZUEVfQk9PTEVBTikKLSsJCXJldHVybiBmYWxzZTsKLSsKLSsJZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2Jhc2ljKHZhbHVlLCAmZmlsdGVyLT5kaXNjb3ZlcmFibGUpOwotKwotKwlyZXR1cm4gdHJ1ZTsKLSt9Ci0rCi0gc3RydWN0IGZpbHRlcl9wYXJzZXIgewotIAljb25zdCBjaGFyICpuYW1lOwotIAlib29sICgqZnVuYykoREJ1c01lc3NhZ2VJdGVyICppdGVyLCBzdHJ1Y3QgZGlzY292ZXJ5X2ZpbHRlciAqZmlsdGVyKTsKLUBAIC0yMzMzLDYgKzI0MTIsNyBAQCBzdHJ1Y3QgZmlsdGVyX3BhcnNlciB7Ci0gCXsgIlBhdGhsb3NzIiwgcGFyc2VfcGF0aGxvc3MgfSwKLSAJeyAiVHJhbnNwb3J0IiwgcGFyc2VfdHJhbnNwb3J0IH0sCi0gCXsgIkR1cGxpY2F0ZURhdGEiLCBwYXJzZV9kdXBsaWNhdGVfZGF0YSB9LAotKwl7ICJEaXNjb3ZlcmFibGUiLCBwYXJzZV9kaXNjb3ZlcmFibGUgfSwKLSAJeyB9Ci0gfTsKLSAKLUBAIC0yMzcyLDYgKzI0NTIsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZV9kaXNjb3ZlcnlfZmlsdGVyX2RpY3Qoc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyLAotIAkoKmZpbHRlciktPnJzc2kgPSBESVNUQU5DRV9WQUxfSU5WQUxJRDsKLSAJKCpmaWx0ZXIpLT50eXBlID0gZ2V0X3NjYW5fdHlwZShhZGFwdGVyKTsKLSAJKCpmaWx0ZXIpLT5kdXBsaWNhdGUgPSBmYWxzZTsKLSsJKCpmaWx0ZXIpLT5kaXNjb3ZlcmFibGUgPSBmYWxzZTsKLSAKLSAJZGJ1c19tZXNzYWdlX2l0ZXJfaW5pdChtc2csICZpdGVyKTsKLSAJaWYgKGRidXNfbWVzc2FnZV9pdGVyX2dldF9hcmdfdHlwZSgmaXRlcikgIT0gREJVU19UWVBFX0FSUkFZIHx8Ci1AQCAtMjQxNyw4ICsyNDk4LDEwIEBAIHN0YXRpYyBib29sIHBhcnNlX2Rpc2NvdmVyeV9maWx0ZXJfZGljdChzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIsCi0gCQlnb3RvIGludmFsaWRfYXJnczsKLSAKLSAJREJHKCJmaWx0ZXJlZCBkaXNjb3ZlcnkgcGFyYW1zOiB0cmFuc3BvcnQ6ICVkIHJzc2k6ICVkIHBhdGhsb3NzOiAlZCAiCi0tCQkiIGR1cGxpY2F0ZSBkYXRhOiAlcyAiLCAoKmZpbHRlciktPnR5cGUsICgqZmlsdGVyKS0+cnNzaSwKLS0JCSgqZmlsdGVyKS0+cGF0aGxvc3MsICgqZmlsdGVyKS0+ZHVwbGljYXRlID8gInRydWUiIDogImZhbHNlIik7Ci0rCQkiIGR1cGxpY2F0ZSBkYXRhOiAlcyBkaXNjb3ZlcmFibGUgJXMiLCAoKmZpbHRlciktPnR5cGUsCi0rCQkoKmZpbHRlciktPnJzc2ksICgqZmlsdGVyKS0+cGF0aGxvc3MsCi0rCQkoKmZpbHRlciktPmR1cGxpY2F0ZSA/ICJ0cnVlIiA6ICJmYWxzZSIsCi0rCQkoKmZpbHRlciktPmRpc2NvdmVyYWJsZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwotIAotIAlyZXR1cm4gdHJ1ZTsKLSAKLUBAIC0yNTEwLDcgKzI1OTMsNyBAQCBzdGF0aWMgREJ1c01lc3NhZ2UgKnN0b3BfZGlzY292ZXJ5KERCdXNDb25uZWN0aW9uICpjb25uLAotIAlpZiAoY2xpZW50LT5tc2cpCi0gCQlyZXR1cm4gYnRkX2Vycm9yX2J1c3kobXNnKTsKLSAKLS0JZXJyID0gZGlzY292ZXJ5X3N0b3AoY2xpZW50KTsKLSsJZXJyID0gZGlzY292ZXJ5X3N0b3AoY2xpZW50LCBmYWxzZSk7Ci0gCXN3aXRjaCAoZXJyKSB7Ci0gCWNhc2UgMDoKLSAJCXJldHVybiBkYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9yZXR1cm4obXNnKTsKLUBAIC0yNzM5LDEzICsyODIyLDE1IEBAIHN0YXRpYyB2b2lkIHByb3BlcnR5X3NldF9tb2RlKHN0cnVjdCBidGRfYWRhcHRlciAqYWRhcHRlciwgdWludDMyX3Qgc2V0dGluZywKLSAJZWxzZQotIAkJY3VycmVudF9lbmFibGUgPSBGQUxTRTsKLSAKLS0JaWYgKGVuYWJsZSA9PSBjdXJyZW50X2VuYWJsZSkgewotKwlpZiAoZW5hYmxlID09IGN1cnJlbnRfZW5hYmxlIHx8IGFkYXB0ZXItPnBlbmRpbmdfc2V0dGluZ3MgJiBzZXR0aW5nKSB7Ci0gCQlnX2RidXNfcGVuZGluZ19wcm9wZXJ0eV9zdWNjZXNzKGlkKTsKLSAJCXJldHVybjsKLSAJfQotIAotIAltb2RlID0gKGVuYWJsZSA9PSBUUlVFKSA/IDB4MDEgOiAweDAwOwotIAotKwlhZGFwdGVyLT5wZW5kaW5nX3NldHRpbmdzIHw9IHNldHRpbmc7Ci0rCi0gCXN3aXRjaCAoc2V0dGluZykgewotIAljYXNlIE1HTVRfU0VUVElOR19QT1dFUkVEOgotIAkJb3Bjb2RlID0gTUdNVF9PUF9TRVRfUE9XRVJFRDsKLUBAIC0yNzk4LDcgKzI4ODMsNyBAQCBzdGF0aWMgdm9pZCBwcm9wZXJ0eV9zZXRfbW9kZShzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIsIHVpbnQzMl90IHNldHRpbmcsCi0gCWRhdGEtPmlkID0gaWQ7Ci0gCi0gCWlmIChtZ210X3NlbmQoYWRhcHRlci0+bWdtdCwgb3Bjb2RlLCBhZGFwdGVyLT5kZXZfaWQsIGxlbiwgcGFyYW0sCi0tCQkJCXByb3BlcnR5X3NldF9tb2RlX2NvbXBsZXRlLCBkYXRhLCBnX2ZyZWUpID4gMCkKLSsJCQlwcm9wZXJ0eV9zZXRfbW9kZV9jb21wbGV0ZSwgZGF0YSwgZ19mcmVlKSA+IDApCi0gCQlyZXR1cm47Ci0gCi0gCWdfZnJlZShkYXRhKTsKLUBAIC0yODc1LDYgKzI5NjAsNyBAQCBzdGF0aWMgdm9pZCBwcm9wZXJ0eV9zZXRfZGlzY292ZXJhYmxlX3RpbWVvdXQoCi0gCQkJCUdEQnVzUGVuZGluZ1Byb3BlcnR5U2V0IGlkLCB2b2lkICp1c2VyX2RhdGEpCi0gewotIAlzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIgPSB1c2VyX2RhdGE7Ci0rCWJvb2wgZW5hYmxlZDsKLSAJZGJ1c191aW50MzJfdCB2YWx1ZTsKLSAKLSAJZGJ1c19tZXNzYWdlX2l0ZXJfZ2V0X2Jhc2ljKGl0ZXIsICZ2YWx1ZSk7Ci1AQCAtMjg4OCw4ICsyOTc0LDE5IEBAIHN0YXRpYyB2b2lkIHByb3BlcnR5X3NldF9kaXNjb3ZlcmFibGVfdGltZW91dCgKLSAJZ19kYnVzX2VtaXRfcHJvcGVydHlfY2hhbmdlZChkYnVzX2Nvbm4sIGFkYXB0ZXItPnBhdGgsCi0gCQkJCUFEQVBURVJfSU5URVJGQUNFLCAiRGlzY292ZXJhYmxlVGltZW91dCIpOwotIAotKwlpZiAoYWRhcHRlci0+cGVuZGluZ19zZXR0aW5ncyAmIE1HTVRfU0VUVElOR19ESVNDT1ZFUkFCTEUpIHsKLSsJCWlmIChhZGFwdGVyLT5jdXJyZW50X3NldHRpbmdzICYgTUdNVF9TRVRUSU5HX0RJU0NPVkVSQUJMRSkKLSsJCQllbmFibGVkID0gZmFsc2U7Ci0rCQllbHNlCi0rCQkJZW5hYmxlZCA9IHRydWU7Ci0rCX0gZWxzZSB7Ci0rCQlpZiAoYWRhcHRlci0+Y3VycmVudF9zZXR0aW5ncyAmIE1HTVRfU0VUVElOR19ESVNDT1ZFUkFCTEUpCi0rCQkJZW5hYmxlZCA9IHRydWU7Ci0rCQllbHNlCi0rCQkJZW5hYmxlZCA9IGZhbHNlOwotKwl9Ci0gCi0tCWlmIChhZGFwdGVyLT5jdXJyZW50X3NldHRpbmdzICYgTUdNVF9TRVRUSU5HX0RJU0NPVkVSQUJMRSkKLSsJaWYgKGVuYWJsZWQpCi0gCQlzZXRfZGlzY292ZXJhYmxlKGFkYXB0ZXIsIDB4MDEsIGFkYXB0ZXItPmRpc2NvdmVyYWJsZV90aW1lb3V0KTsKLSB9Ci0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L2djYzktZml4ZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9nY2M5LWZpeGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTY3OGU2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L2djYzktZml4ZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMDEgKzAsMCBAQAotQmFja3BvcnRlZCBjb21taXQgZnJvbSB1cHN0cmVhbSBtYXN0ZXIgYnJhbmNoIChwb3N0IDUuNTAgcmVsZWFzZSksIHdoaWNoCi1yZXNvbHZlcyBhc3NlcnRpb24gZmFpbHVyZXMgaW4gc2V2ZXJhbCB1bml0IHRlc3RzLgotCi1odHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vYmx1ZXRvb3RoL2JsdWV6LmdpdC9wYXRjaC8/aWQ9MGJlNTI0NjE3MAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvdW5pdC90ZXN0LWF2Y3RwLmMgYi91bml0L3Rlc3QtYXZjdHAuYwotaW5kZXggM2JjMzU2OS4uMjRkZTY2MyAxMDA2NDQKLS0tLSBhL3VuaXQvdGVzdC1hdmN0cC5jCi0rKysgYi91bml0L3Rlc3QtYXZjdHAuYwotQEAgLTQzLDcgKzQzLDcgQEAKLSAKLSBzdHJ1Y3QgdGVzdF9wZHUgewotIAlib29sIHZhbGlkOwotLQljb25zdCB1aW50OF90ICpkYXRhOwotKwl1aW50OF90ICpkYXRhOwotIAlzaXplX3Qgc2l6ZTsKLSB9OwotIAotQEAgLTY2LDcgKzY2LDcgQEAgc3RydWN0IGNvbnRleHQgewotICNkZWZpbmUgcmF3X3BkdShhcmdzLi4uKQkJCQkJXAotIAl7CQkJCQkJCVwKLSAJCS52YWxpZCA9IHRydWUsCQkJCQlcCi0tCQkuZGF0YSA9IGRhdGEoYXJncyksCQkJCVwKLSsJCS5kYXRhID0gZ19tZW1kdXAoZGF0YShhcmdzKSwgc2l6ZW9mKGRhdGEoYXJncykpKSwgXAotIAkJLnNpemUgPSBzaXplb2YoZGF0YShhcmdzKSksCQkJXAotIAl9Ci0gCi1AQCAtOTEsNiArOTEsMTEgQEAgc3RhdGljIHZvaWQgdGVzdF9kZWJ1Zyhjb25zdCBjaGFyICpzdHIsIHZvaWQgKnVzZXJfZGF0YSkKLSBzdGF0aWMgdm9pZCB0ZXN0X2ZyZWUoZ2NvbnN0cG9pbnRlciB1c2VyX2RhdGEpCi0gewotIAljb25zdCBzdHJ1Y3QgdGVzdF9kYXRhICpkYXRhID0gdXNlcl9kYXRhOwotKwlzdHJ1Y3QgdGVzdF9wZHUgKnBkdTsKLSsJaW50IGk7Ci0rCi0rCWZvciAoaSA9IDA7IChwZHUgPSAmZGF0YS0+cGR1X2xpc3RbaV0pICYmIHBkdS0+dmFsaWQ7IGkrKykKLSsJCWdfZnJlZShwZHUtPmRhdGEpOwotIAotIAlnX2ZyZWUoZGF0YS0+dGVzdF9uYW1lKTsKLSAJZ19mcmVlKGRhdGEtPnBkdV9saXN0KTsKLWRpZmYgLS1naXQgYS91bml0L3Rlc3QtYXZkdHAuYyBiL3VuaXQvdGVzdC1hdmR0cC5jCi1pbmRleCBkZDhhZWQ3Li5lMmM5NTFhIDEwMDY0NAotLS0tIGEvdW5pdC90ZXN0LWF2ZHRwLmMKLSsrKyBiL3VuaXQvdGVzdC1hdmR0cC5jCi1AQCAtNDcsNyArNDcsNyBAQAotIHN0cnVjdCB0ZXN0X3BkdSB7Ci0gCWJvb2wgdmFsaWQ7Ci0gCWJvb2wgZnJhZ21lbnRlZDsKLS0JY29uc3QgdWludDhfdCAqZGF0YTsKLSsJdWludDhfdCAqZGF0YTsKLSAJc2l6ZV90IHNpemU7Ci0gfTsKLSAKLUBAIC02MSw3ICs2MSw3IEBAIHN0cnVjdCB0ZXN0X2RhdGEgewotICNkZWZpbmUgcmF3X3BkdShhcmdzLi4uKSBcCi0gCXsJCQkJCQkJXAotIAkJLnZhbGlkID0gdHJ1ZSwJCQkJCVwKLS0JCS5kYXRhID0gZGF0YShhcmdzKSwJCQkJXAotKwkJLmRhdGEgPSBnX21lbWR1cChkYXRhKGFyZ3MpLCBzaXplb2YoZGF0YShhcmdzKSkpLCBcCi0gCQkuc2l6ZSA9IHNpemVvZihkYXRhKGFyZ3MpKSwJCQlcCi0gCX0KLSAKLUBAIC02OSw3ICs2OSw3IEBAIHN0cnVjdCB0ZXN0X2RhdGEgewotIAl7CQkJCQkJCVwKLSAJCS52YWxpZCA9IHRydWUsCQkJCQlcCi0gCQkuZnJhZ21lbnRlZCA9IHRydWUsCQkJCVwKLS0JCS5kYXRhID0gZGF0YShhcmdzKSwJCQkJXAotKwkJLmRhdGEgPSBnX21lbWR1cChkYXRhKGFyZ3MpLCBzaXplb2YoZGF0YShhcmdzKSkpLCBcCi0gCQkuc2l6ZSA9IHNpemVvZihkYXRhKGFyZ3MpKSwJCQlcCi0gCX0KLSAKLUBAIC04MSw3ICs4MSw3IEBAIHN0cnVjdCB0ZXN0X2RhdGEgewotIAkJc3RhdGljIHN0cnVjdCB0ZXN0X2RhdGEgZGF0YTsJCQkJXAotIAkJZGF0YS50ZXN0X25hbWUgPSBnX3N0cmR1cChuYW1lKTsJCQlcCi0gCQlkYXRhLnBkdV9saXN0ID0gZ19tZW1kdXAocGR1cywgc2l6ZW9mKHBkdXMpKTsJCVwKLS0JCXRlc3Rlcl9hZGQobmFtZSwgJmRhdGEsIE5VTEwsIGZ1bmN0aW9uLCBOVUxMKTsJCVwKLSsJCXRlc3Rlcl9hZGQobmFtZSwgJmRhdGEsIE5VTEwsIGZ1bmN0aW9uLCBOVUxMKTsJXAotIAl9IHdoaWxlICgwKQotIAotIHN0cnVjdCBjb250ZXh0IHsKLUBAIC0xMDksNiArMTA5LDExIEBAIHN0YXRpYyB2b2lkIHRlc3RfZGVidWcoY29uc3QgY2hhciAqc3RyLCB2b2lkICp1c2VyX2RhdGEpCi0gc3RhdGljIHZvaWQgdGVzdF9mcmVlKGdjb25zdHBvaW50ZXIgdXNlcl9kYXRhKQotIHsKLSAJY29uc3Qgc3RydWN0IHRlc3RfZGF0YSAqZGF0YSA9IHVzZXJfZGF0YTsKLSsJc3RydWN0IHRlc3RfcGR1ICpwZHU7Ci0rCWludCBpOwotKwotKwlmb3IgKGkgPSAwOyAocGR1ID0gJmRhdGEtPnBkdV9saXN0W2ldKSAmJiBwZHUtPnZhbGlkOyBpKyspCi0rCQlnX2ZyZWUocGR1LT5kYXRhKTsKLSAKLSAJZ19mcmVlKGRhdGEtPnRlc3RfbmFtZSk7Ci0gCWdfZnJlZShkYXRhLT5wZHVfbGlzdCk7Ci1kaWZmIC0tZ2l0IGEvdW5pdC90ZXN0LWF2cmNwLmMgYi91bml0L3Rlc3QtYXZyY3AuYwotaW5kZXggMDEzMDdlNi4uZjFhYTM1MyAxMDA2NDQKLS0tLSBhL3VuaXQvdGVzdC1hdnJjcC5jCi0rKysgYi91bml0L3Rlc3QtYXZyY3AuYwotQEAgLTQ5LDcgKzQ5LDcgQEAgc3RydWN0IHRlc3RfcGR1IHsKLSAJYm9vbCBmcmFnbWVudGVkOwotIAlib29sIGNvbnRpbnVpbmc7Ci0gCWJvb2wgYnJvd3NlOwotLQljb25zdCB1aW50OF90ICpkYXRhOwotKwl1aW50OF90ICpkYXRhOwotIAlzaXplX3Qgc2l6ZTsKLSB9OwotIAotQEAgLTc0LDcgKzc0LDcgQEAgc3RydWN0IGNvbnRleHQgewotICNkZWZpbmUgcmF3X3BkdShhcmdzLi4uKQkJCQkJXAotIAl7CQkJCQkJCVwKLSAJCS52YWxpZCA9IHRydWUsCQkJCQlcCi0tCQkuZGF0YSA9IGRhdGEoYXJncyksCQkJCVwKLSsJCS5kYXRhID0gZ19tZW1kdXAoZGF0YShhcmdzKSwgc2l6ZW9mKGRhdGEoYXJncykpKSwgXAotIAkJLnNpemUgPSBzaXplb2YoZGF0YShhcmdzKSksCQkJXAotIAl9Ci0gCi1AQCAtODIsNyArODIsNyBAQCBzdHJ1Y3QgY29udGV4dCB7Ci0gCXsJCQkJCQkJXAotIAkJLnZhbGlkID0gdHJ1ZSwJCQkJCVwKLSAJCS5icm93c2UgPSB0cnVlLAkJCQkJXAotLQkJLmRhdGEgPSBkYXRhKGFyZ3MpLAkJCQlcCi0rCQkuZGF0YSA9IGdfbWVtZHVwKGRhdGEoYXJncyksIHNpemVvZihkYXRhKGFyZ3MpKSksIFwKLSAJCS5zaXplID0gc2l6ZW9mKGRhdGEoYXJncykpLAkJCVwKLSAJfQotIAotQEAgLTkwLDcgKzkwLDcgQEAgc3RydWN0IGNvbnRleHQgewotIAl7CQkJCQkJCVwKLSAJCS52YWxpZCA9IHRydWUsCQkJCQlcCi0gCQkuZnJhZ21lbnRlZCA9IHRydWUsCQkJCVwKLS0JCS5kYXRhID0gZGF0YShhcmdzKSwJCQkJXAotKwkJLmRhdGEgPSBnX21lbWR1cChkYXRhKGFyZ3MpLCBzaXplb2YoZGF0YShhcmdzKSkpLCBcCi0gCQkuc2l6ZSA9IHNpemVvZihkYXRhKGFyZ3MpKSwJCQlcCi0gCX0KLSAKLUBAIC05OCw3ICs5OCw3IEBAIHN0cnVjdCBjb250ZXh0IHsKLSAJewkJCQkJCQlcCi0gCQkudmFsaWQgPSB0cnVlLAkJCQkJXAotIAkJLmNvbnRpbnVpbmcgPSB0cnVlLAkJCQlcCi0tCQkuZGF0YSA9IGRhdGEoYXJncyksCQkJCVwKLSsJCS5kYXRhID0gZ19tZW1kdXAoZGF0YShhcmdzKSwgc2l6ZW9mKGRhdGEoYXJncykpKSwgXAotIAkJLnNpemUgPSBzaXplb2YoZGF0YShhcmdzKSksCQkJXAotIAl9Ci0gCi1AQCAtMTIzLDYgKzEyMywxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0X2RlYnVnKGNvbnN0IGNoYXIgKnN0ciwgdm9pZCAqdXNlcl9kYXRhKQotIHN0YXRpYyB2b2lkIHRlc3RfZnJlZShnY29uc3Rwb2ludGVyIHVzZXJfZGF0YSkKLSB7Ci0gCWNvbnN0IHN0cnVjdCB0ZXN0X2RhdGEgKmRhdGEgPSB1c2VyX2RhdGE7Ci0rCXN0cnVjdCB0ZXN0X3BkdSAqcGR1OwotKwlpbnQgaTsKLSsKLSsJZm9yIChpID0gMDsgKHBkdSA9ICZkYXRhLT5wZHVfbGlzdFtpXSkgJiYgcGR1LT52YWxpZDsgaSsrKQotKwkJZ19mcmVlKHBkdS0+ZGF0YSk7Ci0gCi0gCWdfZnJlZShkYXRhLT50ZXN0X25hbWUpOwotIAlnX2ZyZWUoZGF0YS0+cGR1X2xpc3QpOwotZGlmZiAtLWdpdCBhL3VuaXQvdGVzdC1nYXR0LmMgYi91bml0L3Rlc3QtZ2F0dC5jCi1pbmRleCBjN2UyOGY4Li5kNDlmN2EwIDEwMDY0NAotLS0tIGEvdW5pdC90ZXN0LWdhdHQuYwotKysrIGIvdW5pdC90ZXN0LWdhdHQuYwotQEAgLTQ4LDcgKzQ4LDcgQEAKLSAKLSBzdHJ1Y3QgdGVzdF9wZHUgewotIAlib29sIHZhbGlkOwotLQljb25zdCB1aW50OF90ICpkYXRhOwotKwl1aW50OF90ICpkYXRhOwotIAlzaXplX3Qgc2l6ZTsKLSB9OwotIAotQEAgLTg2LDcgKzg2LDcgQEAgc3RydWN0IGNvbnRleHQgewotICNkZWZpbmUgcmF3X3BkdShhcmdzLi4uKQkJCQkJXAotIAl7CQkJCQkJCVwKLSAJCS52YWxpZCA9IHRydWUsCQkJCQlcCi0tCQkuZGF0YSA9IGRhdGEoYXJncyksCQkJCVwKLSsJCS5kYXRhID0gZ19tZW1kdXAoZGF0YShhcmdzKSwgc2l6ZW9mKGRhdGEoYXJncykpKSwgXAotIAkJLnNpemUgPSBzaXplb2YoZGF0YShhcmdzKSksCQkJXAotIAl9Ci0gCi1AQCAtMzA2LDYgKzMwNiwxMSBAQCBzdGF0aWMgYnRfdXVpZF90IHV1aWRfY2hhcl8xMjggPSB7Ci0gc3RhdGljIHZvaWQgdGVzdF9mcmVlKGdjb25zdHBvaW50ZXIgdXNlcl9kYXRhKQotIHsKLSAJY29uc3Qgc3RydWN0IHRlc3RfZGF0YSAqZGF0YSA9IHVzZXJfZGF0YTsKLSsJc3RydWN0IHRlc3RfcGR1ICpwZHU7Ci0rCWludCBpOwotKwotKwlmb3IgKGkgPSAwOyAocGR1ID0gJmRhdGEtPnBkdV9saXN0W2ldKSAmJiBwZHUtPnZhbGlkOyBpKyspCi0rCQlnX2ZyZWUocGR1LT5kYXRhKTsKLSAKLSAJZ19mcmVlKGRhdGEtPnRlc3RfbmFtZSk7Ci0gCWdfZnJlZShkYXRhLT5wZHVfbGlzdCk7Ci1AQCAtMTkxMSw2ICsxOTE2LDggQEAgc3RhdGljIHZvaWQgdGVzdF9zZXJ2ZXIoZ2NvbnN0cG9pbnRlciBkYXRhKQotIAlnX2Fzc2VydF9jbXBpbnQobGVuLCA9PSwgcGR1LnNpemUpOwotIAotIAl1dGlsX2hleGR1bXAoJzwnLCBwZHUuZGF0YSwgbGVuLCB0ZXN0X2RlYnVnLCAiR0FUVDogIik7Ci0rCi0rCWdfZnJlZShwZHUuZGF0YSk7Ci0gfQotIAotIHN0YXRpYyB2b2lkIHRlc3Rfc2VhcmNoX3ByaW1hcnkoZ2NvbnN0cG9pbnRlciBkYXRhKQotZGlmZiAtLWdpdCBhL3VuaXQvdGVzdC1oZnAuYyBiL3VuaXQvdGVzdC1oZnAuYwotaW5kZXggZjJiOTYyMi4uODkwZWVlNiAxMDA2NDQKLS0tLSBhL3VuaXQvdGVzdC1oZnAuYwotKysrIGIvdW5pdC90ZXN0LWhmcC5jCi1AQCAtNDMsNyArNDMsNyBAQCBzdHJ1Y3QgY29udGV4dCB7Ci0gCi0gc3RydWN0IHRlc3RfcGR1IHsKLSAJYm9vbCB2YWxpZDsKLS0JY29uc3QgdWludDhfdCAqZGF0YTsKLSsJdWludDhfdCAqZGF0YTsKLSAJc2l6ZV90IHNpemU7Ci0gCWVudW0gaGZwX2d3X2NtZF90eXBlIHR5cGU7Ci0gCWJvb2wgZnJhZ21lbnRlZDsKLUBAIC02Myw3ICs2Myw3IEBAIHN0cnVjdCB0ZXN0X2RhdGEgewotICNkZWZpbmUgcmF3X3BkdShhcmdzLi4uKQkJCQkJXAotIAl7CQkJCQkJCVwKLSAJCS52YWxpZCA9IHRydWUsCQkJCQlcCi0tCQkuZGF0YSA9IGRhdGEoYXJncyksCQkJCVwKLSsJCS5kYXRhID0gZ19tZW1kdXAoZGF0YShhcmdzKSwgc2l6ZW9mKGRhdGEoYXJncykpKSwgXAotIAkJLnNpemUgPSBzaXplb2YoZGF0YShhcmdzKSksCQkJXAotIAl9Ci0gCi1AQCAtNzUsNyArNzUsNyBAQCBzdHJ1Y3QgdGVzdF9kYXRhIHsKLSAjZGVmaW5lIHR5cGVfcGR1KGNtZF90eXBlLCBhcmdzLi4uKQkJCQlcCi0gCXsJCQkJCQkJXAotIAkJLnZhbGlkID0gdHJ1ZSwJCQkJCVwKLS0JCS5kYXRhID0gZGF0YShhcmdzKSwJCQkJXAotKwkJLmRhdGEgPSBnX21lbWR1cChkYXRhKGFyZ3MpLCBzaXplb2YoZGF0YShhcmdzKSkpLCBcCi0gCQkuc2l6ZSA9IHNpemVvZihkYXRhKGFyZ3MpKSwJCQlcCi0gCQkudHlwZSA9IGNtZF90eXBlLAkJCQlcCi0gCX0KLUBAIC04Myw3ICs4Myw3IEBAIHN0cnVjdCB0ZXN0X2RhdGEgewotICNkZWZpbmUgZnJnX3BkdShhcmdzLi4uKQkJCQkJXAotIAl7CQkJCQkJCVwKLSAJCS52YWxpZCA9IHRydWUsCQkJCQlcCi0tCQkuZGF0YSA9IGRhdGEoYXJncyksCQkJCVwKLSsJCS5kYXRhID0gZ19tZW1kdXAoZGF0YShhcmdzKSwgc2l6ZW9mKGRhdGEoYXJncykpKSwgXAotIAkJLnNpemUgPSBzaXplb2YoZGF0YShhcmdzKSksCQkJXAotIAkJLmZyYWdtZW50ZWQgPSB0cnVlLAkJCQlcCi0gCX0KLUBAIC0xMTksNiArMTE5LDExIEBAIHN0cnVjdCB0ZXN0X2RhdGEgewotIHN0YXRpYyB2b2lkIHRlc3RfZnJlZShnY29uc3Rwb2ludGVyIHVzZXJfZGF0YSkKLSB7Ci0gCWNvbnN0IHN0cnVjdCB0ZXN0X2RhdGEgKmRhdGEgPSB1c2VyX2RhdGE7Ci0rCXN0cnVjdCB0ZXN0X3BkdSAqcGR1OwotKwlpbnQgaTsKLSsKLSsJZm9yIChpID0gMDsgKHBkdSA9ICZkYXRhLT5wZHVfbGlzdFtpXSkgJiYgcGR1LT52YWxpZDsgaSsrKQotKwkJZ19mcmVlKHBkdS0+ZGF0YSk7Ci0gCi0gCWdfZnJlZShkYXRhLT50ZXN0X25hbWUpOwotIAlnX2ZyZWUoZGF0YS0+cGR1X2xpc3QpOwotZGlmZiAtLWdpdCBhL3VuaXQvdGVzdC1ob2cuYyBiL3VuaXQvdGVzdC1ob2cuYwotaW5kZXggZDExNzk2OC4uMjViZGI0MiAxMDA2NDQKLS0tLSBhL3VuaXQvdGVzdC1ob2cuYwotKysrIGIvdW5pdC90ZXN0LWhvZy5jCi1AQCAtNjgsMTEgKzY4LDExIEBAIHN0cnVjdCBjb250ZXh0IHsKLSAKLSAjZGVmaW5lIGRhdGEoYXJncy4uLikgKChjb25zdCB1bnNpZ25lZCBjaGFyW10pIHsgYXJncyB9KQotIAotLSNkZWZpbmUgcmF3X3BkdShhcmdzLi4uKSAgICBcCi0teyAgICAgIFwKLS0JLnZhbGlkID0gdHJ1ZSwJCVwKLS0JLmRhdGEgPSBkYXRhKGFyZ3MpLCBcCi0tCS5zaXplID0gc2l6ZW9mKGRhdGEoYXJncykpLFwKLSsjZGVmaW5lIHJhd19wZHUoYXJncy4uLikJCQkJCVwKLSt7CQkJCQkJCQlcCi0rCS52YWxpZCA9IHRydWUsCQkJCQkJXAotKwkuZGF0YSA9IGdfbWVtZHVwKGRhdGEoYXJncyksIHNpemVvZihkYXRhKGFyZ3MpKSksCVwKLSsJLnNpemUgPSBzaXplb2YoZGF0YShhcmdzKSksCQkJCVwKLSB9Ci0gCi0gI2RlZmluZSBmYWxzZV9wZHUoKQlcCi1kaWZmIC0tZ2l0IGEvdW5pdC90ZXN0LXNkcC5jIGIvdW5pdC90ZXN0LXNkcC5jCi1pbmRleCBhYzkyMWE5Li5jNzFlZTFmIDEwMDY0NAotLS0tIGEvdW5pdC90ZXN0LXNkcC5jCi0rKysgYi91bml0L3Rlc3Qtc2RwLmMKLUBAIC01OSwxNCArNTksMTQgQEAgc3RydWN0IHRlc3RfZGF0YSB7Ci0gI2RlZmluZSByYXdfcGR1KGFyZ3MuLi4pIFwKLSAJewkJCQkJCQlcCi0gCQkudmFsaWQgPSB0cnVlLAkJCQkJXAotLQkJLnJhd19kYXRhID0gcmF3X2RhdGEoYXJncyksCQkJXAotKwkJLnJhd19kYXRhID0gZ19tZW1kdXAocmF3X2RhdGEoYXJncyksIHNpemVvZihyYXdfZGF0YShhcmdzKSkpLCBcCi0gCQkucmF3X3NpemUgPSBzaXplb2YocmF3X2RhdGEoYXJncykpLAkJXAotIAl9Ci0gCi0gI2RlZmluZSByYXdfcGR1X2NvbnQoY29udCwgYXJncy4uLikgXAotIAl7CQkJCQkJCVwKLSAJCS52YWxpZCA9IHRydWUsCQkJCQlcCi0tCQkucmF3X2RhdGEgPSByYXdfZGF0YShhcmdzKSwJCQlcCi0rCQkucmF3X2RhdGEgPSBnX21lbWR1cChyYXdfZGF0YShhcmdzKSwgc2l6ZW9mKHJhd19kYXRhKGFyZ3MpKSksIFwKLSAJCS5yYXdfc2l6ZSA9IHNpemVvZihyYXdfZGF0YShhcmdzKSksCQlcCi0gCQkuY29udF9sZW4gPSBjb250LAkJCQlcCi0gCX0KLUBAIC0xMDMsNyArMTAzLDcgQEAgc3RydWN0IHRlc3RfZGF0YV9kZSB7Ci0gI2RlZmluZSBkZWZpbmVfdGVzdF9kZV9hdHRyKG5hbWUsIGlucHV0LCBleHApIFwKLSAJZG8gewkJCQkJCQkJXAotIAkJc3RhdGljIHN0cnVjdCB0ZXN0X2RhdGFfZGUgZGF0YTsJCQlcCi0tCQlkYXRhLmlucHV0X2RhdGEgPSBpbnB1dDsJCQkJXAotKwkJZGF0YS5pbnB1dF9kYXRhID0gZ19tZW1kdXAoaW5wdXQsIHNpemVvZihpbnB1dCkpOwlcCi0gCQlkYXRhLmlucHV0X3NpemUgPSBzaXplb2YoaW5wdXQpOwkJCVwKLSAJCWRhdGEuZXhwZWN0ZWQgPSBleHA7CQkJCQlcCi0gCQl0ZXN0ZXJfYWRkKCIvc2RwL0RFL0FUVFIvIiBuYW1lLCAmZGF0YSwJTlVMTCwJCVwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L291dC1vZi10cmVlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvb3V0LW9mLXRyZWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2ZWQ3NzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvb3V0LW9mLXRyZWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1Gcm9tIGVkNTViNDlhMjI2Y2EzOTA5ZjUyNDE2YmUyYWU1Y2UxYzVjYTJjYjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotRGF0ZTogRnJpLCAyMiBBcHIgMjAxNiAxNTo0MDozNyArMDEwMAotU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZS5vYmV4ZDogYWRkIG1pc3NpbmcgbWtkaXIgaW4gYnVpbHRpbi5oIGdlbmVyYXRpb24KLQotSW4gcGFyYWxsZWwgb3V0LW9mLXRyZWUgYnVpbGRzIGl0J3MgcG9zc2libGUgdGhhdCBvYmV4ZC9zcmMvYnVpbHRpbi5oIGlzCi1nZW5lcmF0ZWQgYmVmb3JlIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGhhcyBiZWVuIGltcGxpY2l0bHkgY3JlYXRlZC4gU29sdmUgdGhpcyBieQotY3JlYXRpbmcgdGhlIGRpcmVjdG9yeSBiZWZvcmUgd3JpdGluZyBpbnRvIGl0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotLS0tCi0gTWFrZWZpbGUub2JleGQgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLm9iZXhkIGIvTWFrZWZpbGUub2JleGQKLWluZGV4IDJlMzNjYmMuLmM4Mjg2ZjAgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5vYmV4ZAotKysrIGIvTWFrZWZpbGUub2JleGQKLUBAIC0xMDUsMiArMTA1LDMgQEAgb2JleGQvc3JjL3BsdWdpbi4kKE9CSkVYVCk6IG9iZXhkL3NyYy9idWlsdGluLmgKLSBvYmV4ZC9zcmMvYnVpbHRpbi5oOiBvYmV4ZC9zcmMvZ2VuYnVpbHRpbiAkKG9iZXhkX2J1aWx0aW5fc291cmNlcykKLSsJJChBTV9WX2F0KSQoTUtESVJfUCkgJChkaXIgJEApCi0gCSQoQU1fVl9HRU4pJChzcmNkaXIpL29iZXhkL3NyYy9nZW5idWlsdGluICQob2JleGRfYnVpbHRpbl9tb2R1bGVzKSA+ICRACi0tLSAKLTIuOC4wLnJjMwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9ydW4tcHRlc3QKaW5kZXggMjFkZjAwYy4uMDMzNWU2OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvcnVuLXB0ZXN0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L3J1bi1wdGVzdApAQCAtNiw3ICs2LDcgQEAKIGFsbD0wCiAKIGZvciBmIGluIHRlc3QtKjsgZG8KLSAgICAiLi8kZiIKKyAgICAiLi8kZiIgLXEKICAgICBjYXNlICIkPyIgaW4KICAgICAgICAgMCkKICAgICAgICAgICAgIGVjaG8gIlBBU1M6ICRmIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS41MC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlNDQzZTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS41MC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLXJlcXVpcmUgYmx1ZXo1LmluYwotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGUzNWM2N2M4MWE1NWQzYWQ0YzlmMjIyODBkYWUxNzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWZmY2FhZTE4YmJiNjE1NWYxNTkxYmU4YzI0ODk4ZGMxMmYwNjIwNzVhNDBiNTM4Yjc0NWJmZDQ3NzQ4MTkxMSIKLQotIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gUkVBRExJTkUKLSMgc3VwcG9ydAotTk9JTlNUX1RPT0xTX1JFQURMSU5FID89ICIgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2RlcHJlY2F0ZWQnLCAnYXR0cmliL2dhdHR0b29sJywgJycsIGQpfSBcCi0gICAgdG9vbHMvb2JleC1jbGllbnQtdG9vbCBcCi0gICAgdG9vbHMvb2JleC1zZXJ2ZXItdG9vbCBcCi0gICAgdG9vbHMvYmx1ZXRvb3RoLXBsYXllciBcCi0gICAgdG9vbHMvb2JleGN0bCBcCi0gICAgdG9vbHMvYnRtZ210IFwKLSIKLQotIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gVEVTVElORwotIyBzdXBwb3J0Ci1OT0lOU1RfVE9PTFNfVEVTVElORyA/PSAiIFwKLSAgICBlbXVsYXRvci9idHZpcnQgXAotICAgIGVtdWxhdG9yL2IxZWUgXAotICAgIGVtdWxhdG9yL2hmcCBcCi0gICAgcGVyaXBoZXJhbC9idHNlbnNvciBcCi0gICAgdG9vbHMvM2RzcCBcCi0gICAgdG9vbHMvbWdtdC10ZXN0ZXIgXAotICAgIHRvb2xzL2dhcC10ZXN0ZXIgXAotICAgIHRvb2xzL2wyY2FwLXRlc3RlciBcCi0gICAgdG9vbHMvc2NvLXRlc3RlciBcCi0gICAgdG9vbHMvc21wLXRlc3RlciBcCi0gICAgdG9vbHMvaGNpLXRlc3RlciBcCi0gICAgdG9vbHMvcmZjb21tLXRlc3RlciBcCi0gICAgdG9vbHMvYm5lcC10ZXN0ZXIgXAotICAgIHRvb2xzL3VzZXJjaGFuLXRlc3RlciBcCi0iCi0KLSMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFRPT0xTCi0jIHN1cHBvcnQKLU5PSU5TVF9UT09MU19CVCA/PSAiIFwKLSAgICB0b29scy9iZGFkZHIgXAotICAgIHRvb2xzL2F2aW5mbyBcCi0gICAgdG9vbHMvYXZ0ZXN0IFwKLSAgICB0b29scy9zY290ZXN0IFwKLSAgICB0b29scy9hbXB0ZXN0IFwKLSAgICB0b29scy9od2RiIFwKLSAgICB0b29scy9oY2lldmVudG1hc2sgXAotICAgIHRvb2xzL2hjaXNlY2ZpbHRlciBcCi0gICAgdG9vbHMvYnRpbmZvIFwKLSAgICB0b29scy9idHNub29wIFwKLSAgICB0b29scy9idHByb3h5IFwKLSAgICB0b29scy9idGlvdGVzdCBcCi0gICAgdG9vbHMvYm5lcHRlc3QgXAotICAgIHRvb2xzL21jYXB0ZXN0IFwKLSAgICB0b29scy9jbHRlc3QgXAotICAgIHRvb2xzL29vYnRlc3QgXAotICAgIHRvb2xzL2FkdnRlc3QgXAotICAgIHRvb2xzL3NlcTJic2VxIFwKLSAgICB0b29scy9ub2tmdyBcCi0gICAgdG9vbHMvY3JlYXRlLWltYWdlIFwKLSAgICB0b29scy9lZGR5c3RvbmUgXAotICAgIHRvb2xzL2liZWFjb24gXAotICAgIHRvb2xzL2J0Z2F0dC1jbGllbnQgXAotICAgIHRvb2xzL2J0Z2F0dC1zZXJ2ZXIgXAotICAgIHRvb2xzL3Rlc3QtcnVubmVyIFwKLSAgICB0b29scy9jaGVjay1zZWxmdGVzdCBcCi0gICAgdG9vbHMvZ2F0dC1zZXJ2aWNlIFwKLSAgICBwcm9maWxlcy9pYXAvaWFwZCBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYnRwY2xpZW50JywgJ3Rvb2xzL2J0cGNsaWVudCcsICcnLCBkKX0gXAotIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS41NC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYwZWVlMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNTQuYmIKQEAgLTAsMCArMSw2OCBAQAorcmVxdWlyZSBibHVlejUuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlNjM3ZmViMmRiYjc1ODJiYmJmZjE3MDgzNjdhODQ3YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2OGNkYWI5ZTYzZTg4MzJiMTMwZDU5NzlkYzhjOTZmZGIwODdiMzEyNzhmMzQyODc0ZDk5MmFmM2U1NjY1NmRjIgorCisjIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBSRUFETElORQorIyBzdXBwb3J0CitOT0lOU1RfVE9PTFNfUkVBRExJTkUgPz0gIiBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZGVwcmVjYXRlZCcsICdhdHRyaWIvZ2F0dHRvb2wnLCAnJywgZCl9IFwKKyAgICB0b29scy9vYmV4LWNsaWVudC10b29sIFwKKyAgICB0b29scy9vYmV4LXNlcnZlci10b29sIFwKKyAgICB0b29scy9ibHVldG9vdGgtcGxheWVyIFwKKyAgICB0b29scy9vYmV4Y3RsIFwKKyAgICB0b29scy9idG1nbXQgXAorIgorCisjIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBURVNUSU5HCisjIHN1cHBvcnQKK05PSU5TVF9UT09MU19URVNUSU5HID89ICIgXAorICAgIGVtdWxhdG9yL2J0dmlydCBcCisgICAgZW11bGF0b3IvYjFlZSBcCisgICAgZW11bGF0b3IvaGZwIFwKKyAgICBwZXJpcGhlcmFsL2J0c2Vuc29yIFwKKyAgICB0b29scy8zZHNwIFwKKyAgICB0b29scy9tZ210LXRlc3RlciBcCisgICAgdG9vbHMvZ2FwLXRlc3RlciBcCisgICAgdG9vbHMvbDJjYXAtdGVzdGVyIFwKKyAgICB0b29scy9zY28tdGVzdGVyIFwKKyAgICB0b29scy9zbXAtdGVzdGVyIFwKKyAgICB0b29scy9oY2ktdGVzdGVyIFwKKyAgICB0b29scy9yZmNvbW0tdGVzdGVyIFwKKyAgICB0b29scy9ibmVwLXRlc3RlciBcCisgICAgdG9vbHMvdXNlcmNoYW4tdGVzdGVyIFwKKyIKKworIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gVE9PTFMKKyMgc3VwcG9ydAorTk9JTlNUX1RPT0xTX0JUID89ICIgXAorICAgIHRvb2xzL2JkYWRkciBcCisgICAgdG9vbHMvYXZpbmZvIFwKKyAgICB0b29scy9hdnRlc3QgXAorICAgIHRvb2xzL3Njb3Rlc3QgXAorICAgIHRvb2xzL2FtcHRlc3QgXAorICAgIHRvb2xzL2h3ZGIgXAorICAgIHRvb2xzL2hjaWV2ZW50bWFzayBcCisgICAgdG9vbHMvaGNpc2VjZmlsdGVyIFwKKyAgICB0b29scy9idGluZm8gXAorICAgIHRvb2xzL2J0c25vb3AgXAorICAgIHRvb2xzL2J0cHJveHkgXAorICAgIHRvb2xzL2J0aW90ZXN0IFwKKyAgICB0b29scy9ibmVwdGVzdCBcCisgICAgdG9vbHMvbWNhcHRlc3QgXAorICAgIHRvb2xzL2NsdGVzdCBcCisgICAgdG9vbHMvb29idGVzdCBcCisgICAgdG9vbHMvYWR2dGVzdCBcCisgICAgdG9vbHMvc2VxMmJzZXEgXAorICAgIHRvb2xzL25va2Z3IFwKKyAgICB0b29scy9jcmVhdGUtaW1hZ2UgXAorICAgIHRvb2xzL2VkZHlzdG9uZSBcCisgICAgdG9vbHMvaWJlYWNvbiBcCisgICAgdG9vbHMvYnRnYXR0LWNsaWVudCBcCisgICAgdG9vbHMvYnRnYXR0LXNlcnZlciBcCisgICAgdG9vbHMvdGVzdC1ydW5uZXIgXAorICAgIHRvb2xzL2NoZWNrLXNlbGZ0ZXN0IFwKKyAgICB0b29scy9nYXR0LXNlcnZpY2UgXAorICAgIHByb2ZpbGVzL2lhcC9pYXBkIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdidHBjbGllbnQnLCAndG9vbHMvYnRwY2xpZW50JywgJycsIGQpfSBcCisiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4uaW5jCmluZGV4IGZiMzhhYjQuLmQzZWViM2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4uaW5jCkBAIC0xNSw3ICsxNSw3IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKIAotREVQRU5EUyAgPSAiZGJ1cyBnbGliLTIuMCBwcHAgcmVhZGxpbmUiCitERVBFTkRTICA9ICJkYnVzIGdsaWItMi4wIHBwcCIKIAogSU5DX1BSID0gInIyMCIKIApAQCAtMjcsMTMgKzI3LDExIEBACiAgICAgLS1lbmFibGUtZXRoZXJuZXQgXAogICAgIC0tZW5hYmxlLXRvb2xzIFwKICAgICAtLWRpc2FibGUtcG9sa2l0IFwKLSAgICAtLWVuYWJsZS1jbGllbnQgXAogIgogCi1QQUNLQUdFQ09ORklHID8/PSAid2lzcHIgXAorUEFDS0FHRUNPTkZJRyA/Pz0gIndpc3ByIGlwdGFibGVzIGNsaWVudFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICczZyBzeXN0ZW1kIHdpZmknLCBkKX0gXAogICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgaXB0YWJsZXMgXAogIgogCiAjIElmIHlvdSB3YW50IENvbm5NYW4gdG8gc3VwcG9ydCBWUE4sIGFkZCBmb2xsb3dpbmcgc3RhdGVtZW50IGludG8KQEAgLTUxLDkgKzQ5LDEwIEBACiBQQUNLQUdFQ09ORklHW3BwdHBdID0gIi0tZW5hYmxlLXBwdHAgLS13aXRoLXBwdHA9JHtzYmluZGlyfS9wcHRwLC0tZGlzYWJsZS1wcHRwLCxwcHRwLWxpbnV4IgogIyBXSVNQciBzdXBwb3J0IGZvciBsb2dnaW5nIGludG8gaG90c3BvdHMsIHJlcXVpcmVzIFRMUwogUEFDS0FHRUNPTkZJR1t3aXNwcl0gPSAiLS1lbmFibGUtd2lzcHIsLS1kaXNhYmxlLXdpc3ByLGdudXRscywiCi1QQUNLQUdFQ09ORklHW25mdGFibGVzXSA9ICItLXdpdGgtZmlyZXdhbGw9bmZ0YWJsZXMgLCxsaWJtbmwgbGlibmZ0bmwsLGtlcm5lbC1tb2R1bGUtbmYtdGFibGVzLWlwdjQga2VybmVsLW1vZHVsZS1uZnQtY2hhaW4tbmF0LWlwdjQga2VybmVsLW1vZHVsZS1uZnQtY2hhaW4tcm91dGUtaXB2NCBrZXJuZWwtbW9kdWxlLW5mdC1tZXRhIGtlcm5lbC1tb2R1bGUtbmZ0LW1hc3EtaXB2NCBrZXJuZWwtbW9kdWxlLW5mdC1uYXQiCitQQUNLQUdFQ09ORklHW25mdGFibGVzXSA9ICItLXdpdGgtZmlyZXdhbGw9bmZ0YWJsZXMgLCxsaWJtbmwgbGlibmZ0bmwsLGtlcm5lbC1tb2R1bGUtbmYtdGFibGVzIGtlcm5lbC1tb2R1bGUtbmZ0LWNoYWluLW5hdC1pcHY0IGtlcm5lbC1tb2R1bGUtbmZ0LWNoYWluLXJvdXRlLWlwdjQga2VybmVsLW1vZHVsZS1uZnQtbWFzcS1pcHY0IGtlcm5lbC1tb2R1bGUtbmZ0LW5hdCIKIFBBQ0tBR0VDT05GSUdbaXB0YWJsZXNdID0gIi0td2l0aC1maXJld2FsbD1pcHRhYmxlcyAsLGlwdGFibGVzLGlwdGFibGVzIgogUEFDS0FHRUNPTkZJR1tuZmNdID0gIi0tZW5hYmxlLW5lYXJkLCAtLWRpc2FibGUtbmVhcmQsIG5lYXJkLCBuZWFyZCIKK1BBQ0tBR0VDT05GSUdbY2xpZW50XSA9ICItLWVuYWJsZS1jbGllbnQsLS1kaXNhYmxlLWNsaWVudCxyZWFkbGluZSIKIAogSU5JVFNDUklQVF9OQU1FID0gImNvbm5tYW4iCiBJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAwNSA1IDIgMyAuIHN0b3AgMjIgMCAxIDYgLiIKQEAgLTg3LDcgKzg2LDYgQEAKIAlpZiBbIC1lICR7Qn0vdG9vbHMvd2lzcHIgXTsgdGhlbgogCQlpbnN0YWxsIC1tIDA3NTUgJHtCfS90b29scy93aXNwciAke0R9JHtiaW5kaXJ9CiAJZmkKLQlpbnN0YWxsIC1tIDA3NTUgJHtCfS9jbGllbnQvY29ubm1hbmN0bCAke0R9JHtiaW5kaXJ9CiAKIAkjIFdlIGRvbid0IG5lZWQgdG8gcGFja2FnZSBhbiBlbXB0eSBkaXJlY3RvcnkKIAlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsaWJkaXJ9L2Nvbm5tYW4vc2NyaXB0cwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLmluYwppbmRleCBjNDY5N2JlLi5kNDYxMzBkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLmluYwpAQCAtMTAwLDYgKzEwMCw3IEBACiBQQUNLQUdFUyArPSAiZGhjcC1saWJzIGRoY3Atc2VydmVyIGRoY3Atc2VydmVyLWNvbmZpZyBkaGNwLWNsaWVudCBkaGNwLXJlbGF5IGRoY3Atb21zaGVsbCIKIAogUEFDS0FHRVNfcmVtb3ZlID0gIiR7UE59IgorUkRFUEVORFNfJHtQTn0tY2xpZW50ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnaXByb3V0ZTInLCAnJywgZCl9IgogUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKIFJERVBFTkRTXyR7UE59LXN0YXRpY2RldiA9ICIiCiBGSUxFU18ke1BOfS1saWJzID0gIiR7bGliZGlyfS9saWJkaGNwY3RsLnNvLjAqICR7bGliZGlyfS9saWJvbWFwaS5zby4wKiAke2xpYmRpcn0vbGliZGhjcC5zby4wKiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMS1GaXgtYS1OU1VQREFURS1jb21waWxpbmctaXNzdWUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtRml4LWEtTlNVUERBVEUtY29tcGlsaW5nLWlzc3VlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTJhMTEyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMS1GaXgtYS1OU1VQREFURS1jb21waWxpbmctaXNzdWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1Gcm9tIGE1OWNiOThhNDczY2FhMmFmZDY0ZDdhZTM2ODQ4MGI2ZTlmOTFiM2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaW5nIExpdSA8bGl1Lm1pbmc1MEBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE0IE1heSAyMDE5IDExOjA3OjE1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBhIE5TVVBEQVRFIGNvbXBpbGluZyBpc3N1ZQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW1BhdGNoIHNlbnQgdG86IGh0dHBzOi8vZ2l0bGFiLmlzYy5vcmcvaXNjLXByb2plY3RzL2RoY3AvaXNzdWVzLzE2XQotCi1BIGZvbGxvd2luZyBlcnJvciB3YXMgb2JzZXJ2ZWQgd2hlbiBOU1VQREFURSBpcyBub3QgZGVmaW5lZDoKLXwgb21hcGlwL2lzY2xpYi5jOiBJbiBmdW5jdGlvbiAnZG5zX2NsaWVudF9pbml0JzoKLXwgb21hcGlwL2lzY2xpYi5jOjM1NjoxODogZXJyb3I6ICdkaGNwX2NvbnRleHRfdCB7YWthIHN0cnVjdCBkaGNwX2NvbnRleHR9JyBoYXMgbm8gbWVtYmVyIG5hbWVkICdkbnNjbGllbnQnCi18ICAgaWYgKGRoY3BfZ2JsX2N0eC5kbnNjbGllbnQgPT0gTlVMTCkgewotfCAgICAgICAgICAgICAgICAgICBeCi18IG9tYXBpcC9pc2NsaWIuYzozNjM6MjQ6IGVycm9yOiAnZGhjcF9jb250ZXh0X3Qge2FrYSBzdHJ1Y3QgZGhjcF9jb250ZXh0fScgaGFzIG5vIG1lbWJlciBuYW1lZCAnZG5zY2xpZW50JwotfCAgICAgICAgICAgICZkaGNwX2dibF9jdHguZG5zY2xpZW50LAotfCAgICAgICAgICAgICAgICAgICAgICAgICBeCi18IG9tYXBpcC9pc2NsaWIuYzozNjQ6MjQ6IGVycm9yOiAnZGhjcF9jb250ZXh0X3Qge2FrYSBzdHJ1Y3QgZGhjcF9jb250ZXh0fScgaGFzIG5vIG1lbWJlciBuYW1lZCAndXNlX2xvY2FsNCcKLXwgICAgICAgICAgICAoZGhjcF9nYmxfY3R4LnVzZV9sb2NhbDQgPwotfCAgICAgICAgICAgICAgICAgICAgICAgICBeCi18IG9tYXBpcC9pc2NsaWIuYzozNjU6MjU6IGVycm9yOiAnZGhjcF9jb250ZXh0X3Qge2FrYSBzdHJ1Y3QgZGhjcF9jb250ZXh0fScgaGFzIG5vIG1lbWJlciBuYW1lZCAnbG9jYWw0X3NvY2thZGRyJwotfCAgICAgICAgICAgICAmZGhjcF9nYmxfY3R4LmxvY2FsNF9zb2NrYWRkcgotfCAgICAgICAgICAgICAgICAgICAgICAgICAgXgotfCBvbWFwaXAvaXNjbGliLmM6MzY3OjI0OiBlcnJvcjogJ2RoY3BfY29udGV4dF90IHtha2Egc3RydWN0IGRoY3BfY29udGV4dH0nIGhhcyBubyBtZW1iZXIgbmFtZWQgJ3VzZV9sb2NhbDYnCi18ICAgICAgICAgICAgKGRoY3BfZ2JsX2N0eC51c2VfbG9jYWw2ID8KLXwgICAgICAgICAgICAgICAgICAgICAgICAgXgotfCBvbWFwaXAvaXNjbGliLmM6MzY4OjI1OiBlcnJvcjogJ2RoY3BfY29udGV4dF90IHtha2Egc3RydWN0IGRoY3BfY29udGV4dH0nIGhhcyBubyBtZW1iZXIgbmFtZWQgJ2xvY2FsNl9zb2NrYWRkcicKLXwgICAgICAgICAgICAgJmRoY3BfZ2JsX2N0eC5sb2NhbDZfc29ja2FkZHIKLQotRml4IGl0IGJ5IGFkZGluZyBOU1VQREFURSBjb25kaXRpb25hbCBjaGVja2luZy4KLQotU2lnbmVkLW9mZi1ieTogTWluZyBMaXUgPGxpdS5taW5nNTBAZ21haWwuY29tPgotLS0tCi0gaW5jbHVkZXMvb21hcGlwL2lzY2xpYi5oIHwgMiArKwotIG9tYXBpcC9pc2NsaWIuYyAgICAgICAgICB8IDIgKysKLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZXMvb21hcGlwL2lzY2xpYi5oIGIvaW5jbHVkZXMvb21hcGlwL2lzY2xpYi5oCi1pbmRleCA1MzhiOTI3Li42YzIwNTg0IDEwMDY0NAotLS0tIGEvaW5jbHVkZXMvb21hcGlwL2lzY2xpYi5oCi0rKysgYi9pbmNsdWRlcy9vbWFwaXAvaXNjbGliLmgKLUBAIC0xNDEsNiArMTQxLDggQEAgdm9pZCBpc2NsaWJfY2xlYW51cCh2b2lkKTsKLSB2b2lkIGRoY3Bfc2lnbmFsX2hhbmRsZXIoaW50IHNpZ25hbCk7Ci0gZXh0ZXJuIGludCBzaHV0ZG93bl9zaWduYWw7Ci0gCi0rI2lmIGRlZmluZWQgKE5TVVBEQVRFKQotIGlzY19yZXN1bHRfdCBkbnNfY2xpZW50X2luaXQoKTsKLSsjZW5kaWYKLSAKLSAjZW5kaWYgLyogSVNDTElCX0ggKi8KLWRpZmYgLS1naXQgYS9vbWFwaXAvaXNjbGliLmMgYi9vbWFwaXAvaXNjbGliLmMKLWluZGV4IGRiM2I4OTUuLmNlNGI0YTEgMTAwNjQ0Ci0tLS0gYS9vbWFwaXAvaXNjbGliLmMKLSsrKyBiL29tYXBpcC9pc2NsaWIuYwotQEAgLTM1MSw2ICszNTEsNyBAQCB2b2lkIGRoY3Bfc2lnbmFsX2hhbmRsZXIoaW50IHNpZ25hbCkgewotIAl9Ci0gfQotIAotKyNpZiBkZWZpbmVkIChOU1VQREFURSkKLSBpc2NfcmVzdWx0X3QgZG5zX2NsaWVudF9pbml0KCkgewotIAlpc2NfcmVzdWx0X3QgcmVzdWx0OwotIAlpZiAoZGhjcF9nYmxfY3R4LmRuc2NsaWVudCA9PSBOVUxMKSB7Ci1AQCAtMzg3LDMgKzM4OCw0IEBAIGlzY19yZXN1bHRfdCBkbnNfY2xpZW50X2luaXQoKSB7Ci0gCi0gCXJldHVybiBJU0NfUl9TVUNDRVNTOwotIH0KLSsjZW5kaWYKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAxLW1hc3Rlci1BZGRlZC1pbmNsdWRlcy1vZi1uZXctQklORDktY29tcGF0aWJpbGl0eS1oZWEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtbWFzdGVyLUFkZGVkLWluY2x1ZGVzLW9mLW5ldy1CSU5EOS1jb21wYXRpYmlsaXR5LWhlYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJjMTQyMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtbWFzdGVyLUFkZGVkLWluY2x1ZGVzLW9mLW5ldy1CSU5EOS1jb21wYXRpYmlsaXR5LWhlYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLUZyb20gODE5NGRhYWJmZDU5MGYxNzgyNWYwYzYxZTk1MzRiZWU1Yzk5Y2M4NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRob21hcyBNYXJrd2FsZGVyIDx0bWFya0Bpc2Mub3JnPgotRGF0ZTogRnJpLCAxNCBTZXAgMjAxOCAxMzo0MTo0MSAtMDQwMAotU3ViamVjdDogW21hc3Rlcl0gQWRkZWQgaW5jbHVkZXMgb2YgbmV3IEJJTkQ5IGNvbXBhdGliaWxpdHkgaGVhZGVycwotCi0gICAgTWVyZ2VzIGluIHJ0NDgwNzIuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEFkcmlhbiBCdW5rIDxidW5rQHN0dXN0YS5kZT4KLQotZGlmZiAtLWdpdCBhL2luY2x1ZGVzL29tYXBpcC9pc2NsaWIuaCBiL2luY2x1ZGVzL29tYXBpcC9pc2NsaWIuaAotaW5kZXggNzVhODdmZjYuLjUzOGI5MjdmIDEwMDY0NAotLS0tIGEvaW5jbHVkZXMvb21hcGlwL2lzY2xpYi5oCi0rKysgYi9pbmNsdWRlcy9vbWFwaXAvaXNjbGliLmgKLUBAIC00OCw2ICs0OCw5IEBACi0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxuZXRkYi5oPgotIAotKyNpbmNsdWRlIDxpc2MvYm9vbGVhbi5oPgotKyNpbmNsdWRlIDxpc2MvaW50Lmg+Ci0rCi0gI2luY2x1ZGUgPGlzYy9idWZmZXIuaD4KLSAjaW5jbHVkZSA8aXNjL2xleC5oPgotICNpbmNsdWRlIDxpc2MvbGliLmg+Ci1kaWZmIC0tZ2l0IGEvaW5jbHVkZXMvb21hcGlwL3Jlc3VsdC5oIGIvaW5jbHVkZXMvb21hcGlwL3Jlc3VsdC5oCi1pbmRleCA5MTI0M2UxYi4uODYwMjk4ZjYgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlcy9vbWFwaXAvcmVzdWx0LmgKLSsrKyBiL2luY2x1ZGVzL29tYXBpcC9yZXN1bHQuaAotQEAgLTI2LDYgKzI2LDcgQEAKLSAjaWZuZGVmIERIQ1BfUkVTVUxUX0gKLSAjZGVmaW5lIERIQ1BfUkVTVUxUX0ggMQotIAotKyNpbmNsdWRlIDxpc2MvYm9vbGVhbi5oPgotICNpbmNsdWRlIDxpc2MvbGFuZy5oPgotICNpbmNsdWRlIDxpc2MvcmVzdWx0Y2xhc3MuaD4KLSAjaW5jbHVkZSA8aXNjL3R5cGVzLmg+Ci1kaWZmIC0tZ2l0IGEvc2VydmVyL2RoY3B2Ni5jIGIvc2VydmVyL2RoY3B2Ni5jCi1pbmRleCBhNzExMGY5OC4uY2RlNGY2MTcgMTAwNjQ0Ci0tLS0gYS9zZXJ2ZXIvZGhjcHY2LmMKLSsrKyBiL3NlcnZlci9kaGNwdjYuYwotQEAgLTEwMzQsNyArMTAzNCw4IEBAIHZvaWQgY2hlY2tfcG9vbDZfdGhyZXNob2xkKHN0cnVjdCByZXBseV9zdGF0ZSAqcmVwbHksCi0gCQkJCSAgc2hhcmVkX25hbWUsCi0gCQkJCSAgaW5ldF9udG9wKEFGX0lORVQ2LCAmbGVhc2UtPmFkZHIsCi0gCQkJCQkgICAgdG1wX2FkZHIsIHNpemVvZih0bXBfYWRkcikpLAotLQkJCQkgIHVzZWQsIGNvdW50KTsKLSsJCQkJICAobG9uZyBsb25nIHVuc2lnbmVkKSh1c2VkKSwKLSsJCQkJICAobG9uZyBsb25nIHVuc2lnbmVkKShjb3VudCkpOwotIAkJfQotIAkJcmV0dXJuOwotIAl9Ci1AQCAtMTA2Niw3ICsxMDY3LDggQEAgdm9pZCBjaGVja19wb29sNl90aHJlc2hvbGQoc3RydWN0IHJlcGx5X3N0YXRlICpyZXBseSwKLSAJCSAgImFkZHJlc3M6ICVzOyBoaWdoIHRocmVzaG9sZCAlZCUlICVsbHUvJWxsdS4iLAotIAkJICBzaGFyZWRfbmFtZSwKLSAJCSAgaW5ldF9udG9wKEFGX0lORVQ2LCAmbGVhc2UtPmFkZHIsIHRtcF9hZGRyLCBzaXplb2YodG1wX2FkZHIpKSwKLS0JCSAgcG9vbGhpZ2gsIHVzZWQsIGNvdW50KTsKLSsJCSAgcG9vbGhpZ2gsIChsb25nIGxvbmcgdW5zaWduZWQpKHVzZWQpLAotKwkJICAobG9uZyBsb25nIHVuc2lnbmVkKShjb3VudCkpOwotIAotIAkvKiBoYW5kbGUgdGhlIGxvdyB0aHJlc2hvbGQgbm93LCBpZiB3ZSBkb24ndAotIAkgKiBoYXZlIG9uZSB3ZSBkZWZhdWx0IHRvIDAuICovCi1AQCAtMTQzNiwxMiArMTQzOCwxNSBAQCBwaWNrX3Y2X2FkZHJlc3Moc3RydWN0IHJlcGx5X3N0YXRlICpyZXBseSkKLSAJCWxvZ19kZWJ1ZygiVW5hYmxlIHRvIHBpY2sgY2xpZW50IGFkZHJlc3M6ICIKLSAJCQkgICJubyBhZGRyZXNzZXMgYXZhaWxhYmxlICAtIHNoYXJlZCBuZXR3b3JrICVzOiAiCi0gCQkJICAiIDJeNjQtMSA8IHRvdGFsLCAlbGx1IGFjdGl2ZSwgICVsbHUgYWJhbmRvbmVkIiwKLS0JCQkgIHNoYXJlZF9uYW1lLCBhY3RpdmUgLSBhYmFuZG9uZWQsIGFiYW5kb25lZCk7Ci0rCQkJICBzaGFyZWRfbmFtZSwgKGxvbmcgbG9uZyB1bnNpZ25lZCkoYWN0aXZlIC0gYWJhbmRvbmVkKSwKLSsJCQkgIChsb25nIGxvbmcgdW5zaWduZWQpKGFiYW5kb25lZCkpOwotIAl9IGVsc2UgewotIAkJbG9nX2RlYnVnKCJVbmFibGUgdG8gcGljayBjbGllbnQgYWRkcmVzczogIgotIAkJCSAgIm5vIGFkZHJlc3NlcyBhdmFpbGFibGUgIC0gc2hhcmVkIG5ldHdvcmsgJXM6ICIKLSAJCQkgICIlbGx1IHRvdGFsLCAlbGx1IGFjdGl2ZSwgICVsbHUgYWJhbmRvbmVkIiwKLS0JCQkgIHNoYXJlZF9uYW1lLCB0b3RhbCwgYWN0aXZlIC0gYWJhbmRvbmVkLCBhYmFuZG9uZWQpOwotKwkJCSAgc2hhcmVkX25hbWUsIChsb25nIGxvbmcgdW5zaWduZWQpKHRvdGFsKSwKLSsJCQkgIChsb25nIGxvbmcgdW5zaWduZWQpKGFjdGl2ZSAtIGFiYW5kb25lZCksCi0rCQkgICAgICAgICAgKGxvbmcgbG9uZyB1bnNpZ25lZCkoYWJhbmRvbmVkKSk7Ci0gCX0KLSAKLSAJcmV0dXJuIElTQ19SX05PUkVTT1VSQ0VTOwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCmluZGV4IGI3MWM5M2QuLjdiNTc3MzAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCkBAIC04NSw5ICs4NSwxMSBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGRoY3AtNC40LjEub3JpZy9yZWxheS9NYWtlZmlsZS5hbQogKysrIGRoY3AtNC40LjEvcmVsYXkvTWFrZWZpbGUuYW0KLUBAIC0xLDQgKzEsNCBAQAorQEAgLTEsNiArMSw2IEBACisgU1VCRElSUyA9IC4gdGVzdHMKKwogLUFNX0NQUEZMQUdTID0gLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicKICtBTV9DUFBGTEFHUyA9IC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwotIAorCiAgc2Jpbl9QUk9HUkFNUyA9IGRoY3JlbGF5CiAgZGhjcmVsYXlfU09VUkNFUyA9IGRoY3JlbGF5LmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC40LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXzQuNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjA3NzdiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1yZXF1aXJlIGRoY3AuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWRlZmluZS1tYWNyby1fUEFUSF9ESENQRF9DT05GLWFuZC1fUEFUSF9ESENMSUVOVF9DT04ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDItZGhjbGllbnQtZGJ1cy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMy1saW5rLXdpdGgtbGNyeXB0by5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA1LWRoY3AtY2xpZW50LWZpeC1pbnZva2UtZGhjbGllbnQtc2NyaXB0LWZhaWxlZC1vbi1SZWEucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDctQWRkLWNvbmZpZ3VyZS1hcmd1bWVudC10by1tYWtlLXRoZS1saWJ4bWwyLWRlcGVuZGVuYy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwOS1yZW1vdmUtZGhjbGllbnQtc2NyaXB0LWJhc2gtZGVwZW5kZW5jeS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAxMi1kaGNwLWNvcnJlY3QtdGhlLWludGVudGlvbi1mb3IteG1sMi1saWItc2VhcmNoLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDEzLWZpeHVwX3VzZV9saWJiaW5kLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1hc3Rlci1BZGRlZC1pbmNsdWRlcy1vZi1uZXctQklORDktY29tcGF0aWJpbGl0eS1oZWEucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWEtTlNVUERBVEUtY29tcGlsaW5nLWlzc3VlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXdvcmthcm91bmQtYnVzeWJveC1saW1pdGF0aW9uLWluLWxpbnV4LWRoY2xpZW50LXNjcmlwdC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxOGM3ZjRkY2JiMGE2M2RmMjUwOTgyMTZkNDdiMWVkZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYTIyNTA4OTIyYWIzNjdiNGFmNDY2NGEwNDcyZGMyMjBjYzk2MDM0ODJjZjNjMTZkOWFmZjE0ZjNhNzZiNjA4IgotCi1MREZMQUdTX2FwcGVuZCA9ICIgLXB0aHJlYWQiCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiIKLVBBQ0tBR0VDT05GSUdbYmluZC1odHRwc3RhdHNdID0gIi0td2l0aC1saWJ4bWwyLC0td2l0aG91dC1saWJ4bWwyLGxpYnhtbDIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXzQuNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTZhMjA0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjQuMi5iYgpAQCAtMCwwICsxLDIxIEBACityZXF1aXJlIGRoY3AuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWRlZmluZS1tYWNyby1fUEFUSF9ESENQRF9DT05GLWFuZC1fUEFUSF9ESENMSUVOVF9DT04ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDItZGhjbGllbnQtZGJ1cy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMy1saW5rLXdpdGgtbGNyeXB0by5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA1LWRoY3AtY2xpZW50LWZpeC1pbnZva2UtZGhjbGllbnQtc2NyaXB0LWZhaWxlZC1vbi1SZWEucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDctQWRkLWNvbmZpZ3VyZS1hcmd1bWVudC10by1tYWtlLXRoZS1saWJ4bWwyLWRlcGVuZGVuYy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwOS1yZW1vdmUtZGhjbGllbnQtc2NyaXB0LWJhc2gtZGVwZW5kZW5jeS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAxMi1kaGNwLWNvcnJlY3QtdGhlLWludGVudGlvbi1mb3IteG1sMi1saWItc2VhcmNoLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDEzLWZpeHVwX3VzZV9saWJiaW5kLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXdvcmthcm91bmQtYnVzeWJveC1saW1pdGF0aW9uLWluLWxpbnV4LWRoY2xpZW50LXNjcmlwdC5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyYWZkYWY4NDk4ZGMxZWRhZjMwMTJlZmRkNTg5YjNlMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYTdjY2Q2NGExNmU1ZTY4ZjdiNWUwZjUyN2ZkMDcyNDBhMjg5MmVhNTNmZTI0NTYyMGY0ZjVmNjA3MDA0NTIxIgorCitMREZMQUdTX2FwcGVuZCA9ICIgLXB0aHJlYWQiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiIKK1BBQ0tBR0VDT05GSUdbYmluZC1odHRwc3RhdHNdID0gIi0td2l0aC1saWJ4bWwyLC0td2l0aG91dC1saWJ4bWwyLGxpYnhtbDIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaW5ldHV0aWxzL2luZXR1dGlsc18xLjkuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pbmV0dXRpbHMvaW5ldHV0aWxzXzEuOS40LmJiCmluZGV4IDY4NGZiZTAuLmNjOTQxMGIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pbmV0dXRpbHMvaW5ldHV0aWxzXzEuOS40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pbmV0dXRpbHMvaW5ldHV0aWxzXzEuOS40LmJiCkBAIC0xNDMsMTEgKzE0MywxNSBAQAogQUxURVJOQVRJVkVfJHtQTn0taG9zdG5hbWUgPSAiaG9zdG5hbWUiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbaG9zdG5hbWVdICA9ICIke2Jhc2VfYmluZGlyfS9ob3N0bmFtZSIKIAotQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gImhvc3RuYW1lLjEgZG5zZG9tYWlubmFtZS4xIGxvZ2dlci4xIHN5c2xvZ2QuOCIKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJob3N0bmFtZS4xIGRuc2RvbWFpbm5hbWUuMSBsb2dnZXIuMSBzeXNsb2dkLjggXAorICAgICAgICAgICAgICAgICAgICAgICAgIHRmdHBkLjggdGZ0cC4xIHRlbG5ldGQuOCIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtob3N0bmFtZS4xXSA9ICIke21hbmRpcn0vbWFuMS9ob3N0bmFtZS4xIgogQUxURVJOQVRJVkVfTElOS19OQU1FW2Ruc2RvbWFpbm5hbWUuMV0gPSAiJHttYW5kaXJ9L21hbjEvZG5zZG9tYWlubmFtZS4xIgogQUxURVJOQVRJVkVfTElOS19OQU1FW2xvZ2dlci4xXSA9ICIke21hbmRpcn0vbWFuMS9sb2dnZXIuMSIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtzeXNsb2dkLjhdID0gIiR7bWFuZGlyfS9tYW44L3N5c2xvZ2QuOCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt0ZWxuZXRkLjhdID0gIiR7bWFuZGlyfS9tYW44L3RlbG5ldGQuOCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt0ZnRwZC44XSA9ICIke21hbmRpcn0vbWFuOC90ZnRwZC44IgorQUxURVJOQVRJVkVfTElOS19OQU1FW3RmdHAuMV0gPSAiJHttYW5kaXJ9L21hbjEvdGZ0cC4xIgogCiBBTFRFUk5BVElWRV8ke1BOfS1pZmNvbmZpZyA9ICJpZmNvbmZpZyIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtpZmNvbmZpZ10gID0gIiR7YmFzZV9zYmluZGlyfS9pZmNvbmZpZyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIuaW5jCmluZGV4IGZjMzFiODQuLjQwM2QyNjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLmluYwpAQCAtMTUsMTIgKzE1LDE5IEBACiAKIENMRUFOQlJPS0VOID0gIjEiCiAKLVBBQ0tBR0VDT05GSUcgPz89ICJ0aXBjIGVsZiIKK1BBQ0tBR0VDT05GSUcgPz89ICJ0aXBjIGVsZiBkZXZsaW5rIgogUEFDS0FHRUNPTkZJR1t0aXBjXSA9ICIsLGxpYm1ubCwiCiBQQUNLQUdFQ09ORklHW2VsZl0gPSAiLCxlbGZ1dGlscywiCitQQUNLQUdFQ09ORklHW2RldmxpbmtdID0gIiwsbGlibW5sLCIKIAotRVhUUkFfT0VNQUtFID0gIkNDPScke0NDfScgS0VSTkVMX0lOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0gRE9DRElSPSR7ZG9jZGlyfS9pcHJvdXRlMiBTVUJESVJTPSdsaWIgdGMgaXAgYnJpZGdlIG1pc2MgZ2VubCBcCi0gICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGlwYycsICd0aXBjJywgJycsIGQpfScgU0JJTkRJUj0nJHtiYXNlX3NiaW5kaXJ9JyBMSUJESVI9JyR7bGliZGlyfSciCitFWFRSQV9PRU1BS0UgPSAiXAorICAgIENDPScke0NDfScgXAorICAgIEtFUk5FTF9JTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9IFwKKyAgICBET0NESVI9JHtkb2NkaXJ9L2lwcm91dGUyIFwKKyAgICBTVUJESVJTPSdsaWIgdGMgaXAgYnJpZGdlIG1pc2MgZ2VubCAke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAnZGV2bGluayB0aXBjJywgZCl9JyBcCisgICAgU0JJTkRJUj0nJHtiYXNlX3NiaW5kaXJ9JyBcCisgICAgTElCRElSPScke2xpYmRpcn0nIFwKKyIKIAogZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7CiAgICAgc2ggY29uZmlndXJlICR7U1RBR0lOR19JTkNESVJ9CkBAIC0zOSwxNCArNDYsMTggQEAKICMgVGhlIC5zbyBmaWxlcyBpbiBpcHJvdXRlMi10YyBhcmUgbW9kdWxlcywgbm90IHRyYWRpdGlvbmFsIGxpYnJhcmllcwogSU5TQU5FX1NLSVBfJHtQTn0tdGMgPSAiZGV2LXNvIgogCi1QQUNLQUdFUyA9KyAiJHtQTn0tdGMgXAotICAgICAgICAgICAgICR7UE59LWxuc3RhdCBcCi0gICAgICAgICAgICAgJHtQTn0taWZzdGF0IFwKLSAgICAgICAgICAgICAke1BOfS1nZW5sIFwKLSAgICAgICAgICAgICAke1BOfS1ydGFjY3QgXAotICAgICAgICAgICAgICR7UE59LW5zdGF0IFwKLSAgICAgICAgICAgICAke1BOfS1zcyBcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGlwYycsICcke1BOfS10aXBjJywgJycsIGQpfSIKK1BBQ0tBR0VTID0rICJcCisgICAgJHtQTn0tZGV2bGluayBcCisgICAgJHtQTn0tZ2VubCBcCisgICAgJHtQTn0taWZzdGF0IFwKKyAgICAke1BOfS1sbnN0YXQgXAorICAgICR7UE59LW5zdGF0IFwKKyAgICAke1BOfS1ydGFjY3QgXAorICAgICR7UE59LXNzIFwKKyAgICAke1BOfS10YyBcCisgICAgJHtQTn0tdGlwYyBcCisiCisKIEZJTEVTXyR7UE59LXRjID0gIiR7YmFzZV9zYmluZGlyfS90YyogXAogICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3RjLyouc28iCiBGSUxFU18ke1BOfS1sbnN0YXQgPSAiJHtiYXNlX3NiaW5kaXJ9L2xuc3RhdCBcCkBAIC01OCw2ICs2OSw3IEBACiBGSUxFU18ke1BOfS1uc3RhdCA9ICIke2Jhc2Vfc2JpbmRpcn0vbnN0YXQiCiBGSUxFU18ke1BOfS1zcyA9ICIke2Jhc2Vfc2JpbmRpcn0vc3MiCiBGSUxFU18ke1BOfS10aXBjID0gIiR7YmFzZV9zYmluZGlyfS90aXBjIgorRklMRVNfJHtQTn0tZGV2bGluayA9ICIke2Jhc2Vfc2JpbmRpcn0vZGV2bGluayIKIAogQUxURVJOQVRJVkVfJHtQTn0gPSAiaXAiCiBBTFRFUk5BVElWRV9UQVJHRVRbaXBdID0gIiR7YmFzZV9zYmluZGlyfS9pcC4ke0JQTn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNS4zLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNS4zLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhODZjYmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzUuMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotcmVxdWlyZSBpcHJvdXRlMi5pbmMKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL25ldC8ke0JQTn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1hZGQtbXVzbC13b3JrYXJvdW5kLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyMjc0MDQ0MTNjOGQ2ZGI2NDlkNjE4OGVhZDFlNWE2ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjYjFjMWU0NTk5M2EzYmQyNDM4NTQzZmQ0MzMyZDcwZjE3MjZhNmU2ZmY5N2RjNjEzYTgyNThjOTkzMTE3YjNmIgotCi0jIENGTEFHUyBhcmUgY29tcHV0ZWQgaW4gTWFrZWZpbGUgYW5kIHJlZmVyZW5jZSBDQ09QVFMKLSMKLUVYVFJBX09FTUFLRV9hcHBlbmQgPSAiIENDT1BUUz0nJHtDRkxBR1N9JyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl81LjUuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl81LjUuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDBhYjEzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzUuNS4wLmJiCkBAIC0wLDAgKzEsMTIgQEAKK3JlcXVpcmUgaXByb3V0ZTIuaW5jCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9uZXQvJHtCUE59LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtYWRkLW11c2wtd29ya2Fyb3VuZC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZWU4ZTJjZGI0MTZkNGE4ZWYzOTUyNWQzOWFiN2MyZDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmFjNTQzNDM1Y2FjMjA4YTExZGI0NGM5Y2M4ZTM1YWE5MDJiZWZlZjg3NTA1OTQ2NTRlZTcxOTQxYzM4OGY3YiIKKworIyBDRkxBR1MgYXJlIGNvbXB1dGVkIGluIE1ha2VmaWxlIGFuZCByZWZlcmVuY2UgQ0NPUFRTCisjCitFWFRSQV9PRU1BS0VfYXBwZW5kID0gIiBDQ09QVFM9JyR7Q0ZMQUdTfSAtZmNvbW1vbiciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXcvc2VwYXJhdGUtb2JqZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3L3NlcGFyYXRlLW9iamRpci5wYXRjaAppbmRleCBlYjAxYTVhLi4xNzlmZDkwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXcvc2VwYXJhdGUtb2JqZGlyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pdy9zZXBhcmF0ZS1vYmpkaXIucGF0Y2gKQEAgLTEsMyArMSw2IEBACitGcm9tIGZmOWYwYTYzMWM5OWZiNmUyNjc3YzAyYmY1NzJhNWU2OWM3MGY1Y2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAZ21haWwuY29tPgorRGF0ZTogTW9uLCAyNyBKYW4gMjAyMCAyMjo0ODowMyArMDEwMAogU3ViamVjdDogW1BBVENIXSBTdXBwb3J0IHNlcGFyYXRpb24gb2YgU1JDRElSIGFuZCBPQkpESVIKIAogVHlwaWNhbCB1c2Ugb2YgVlBBVEggdG8gbG9jYXRlIHRoZSBzb3VyY2VzLgpAQCAtMTEsMTIgKzE0LDEyIEBACiAgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDMzYWFmNmEuLjkwMzA3OTYgMTAwNjQ0CitpbmRleCA5MGYyMjUxLi43MTRjZGI5IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUKICsrKyBiL01ha2VmaWxlCiBAQCAtMSw1ICsxLDkgQEAKICBNQUtFRkxBR1MgKz0gLS1uby1wcmludC1kaXJlY3RvcnkKLQorIAogK1NSQ0RJUiA/PSAkKGRpciAkKGxhc3R3b3JkICQoTUFLRUZJTEVfTElTVCkpKQogK09CSkRJUiA/PSAkKFBXRCkKICtWUEFUSCA9ICQoU1JDRElSKQpAQCAtMjQsMTkgKzI3LDI0IEBACiAgUFJFRklYID89IC91c3IKICBTQklORElSID89ICQoUFJFRklYKS9zYmluCiAgTUFORElSID89ICQoUFJFRklYKS9zaGFyZS9tYW4KLUBAIC0xMDMsMTEgKzEwNywxMSBAQCBWRVJTSU9OX09CSlMgOj0gJChmaWx0ZXItb3V0IHZlcnNpb24ubywgJChPQkpTKSkKK0BAIC05Miw3ICs5Niw3IEBAIGFsbDogJChBTEwpCiAgdmVyc2lvbi5jOiB2ZXJzaW9uLnNoICQocGF0c3Vic3QgJS5vLCUuYywkKFZFUlNJT05fT0JKUykpIG5sODAyMTEuaCBpdy5oIE1ha2VmaWxlIFwKICAJCSQod2lsZGNhcmQgLmdpdC9pbmRleCAuZ2l0L3JlZnMvdGFncykKICAJQCQoTlEpICcgR0VOICcgJEAKIC0JJChRKS4vdmVyc2lvbi5zaCAkQAogKwkkKFEpY2QgJChTUkNESVIpICYmIC4vdmVyc2lvbi5zaCAkKE9CSkRJUikvJEAKLQotICUubzogJS5jIGl3Lmggbmw4MDIxMS5oCisgCisgbmw4MDIxMS1jb21tYW5kcy5pbmM6IG5sODAyMTEuaAorIAlAJChOUSkgJyBHRU4gJyAkQAorQEAgLTEwMCw3ICsxMDQsNyBAQCBubDgwMjExLWNvbW1hbmRzLmluYzogbmw4MDIxMS5oCisgCisgJS5vOiAlLmMgaXcuaCBubDgwMjExLmggbmw4MDIxMS1jb21tYW5kcy5pbmMKICAJQCQoTlEpICcgQ0MgICcgJEAKIC0JJChRKSQoQ0MpICQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAtYyAtbyAkQCAkPAogKwkkKFEpJChDQykgLUkkKFNSQ0RJUikgJChDRkxBR1MpICQoQ1BQRkxBR1MpIC1jIC1vICRAICQ8Ci0KKyAKICBpZmVxICgkKElXX0FORFJPSURfQlVJTEQpLCkKICBpdzoJJChPQkpTKQotLS0KLTIuMjAuMSAoQXBwbGUgR2l0LTExNykKKy0tIAorMi4yMy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pd181LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXdfNS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2YxM2Y1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pd181LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TVU1NQVJZID0gIm5sODAyMTEgYmFzZWQgQ0xJIGNvbmZpZ3VyYXRpb24gdXRpbGl0eSBmb3Igd2lyZWxlc3MgZGV2aWNlcyIKLURFU0NSSVBUSU9OID0gIml3IGlzIGEgbmV3IG5sODAyMTEgYmFzZWQgQ0xJIGNvbmZpZ3VyYXRpb24gdXRpbGl0eSBmb3IgXAotd2lyZWxlc3MgZGV2aWNlcy4gSXQgc3VwcG9ydHMgYWxtb3N0IGFsbCBuZXcgZHJpdmVycyB0aGF0IGhhdmUgYmVlbiBhZGRlZCBcCi10byB0aGUga2VybmVsIHJlY2VudGx5LiAiCi1IT01FUEFHRSA9ICJodHRwOi8vd2lyZWxlc3Mua2VybmVsLm9yZy9lbi91c2Vycy9Eb2N1bWVudGF0aW9uL2l3IgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Nzg2MThhNWM0YWYyNWU5YjkzZWYwYmUxYTkzZjc3NCIKLQotREVQRU5EUyA9ICJsaWJubCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvaXcvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaXctdmVyc2lvbi5zaC1kb24tdC11c2UtZ2l0LWRlc2NyaWJlLWZvci12ZXJzaW9uaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NlcGFyYXRlLW9iamRpci5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZDRkMWMwZWUzNGYzYTdiZGEwZTZhYWZjZDdhYWYzMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxNzVhYmJmY2U4NjM0OGMwYjcwZTc3OGMxM2E5NGMwYmZjOWFiYzdhNTA2ZDJiZDYwODI2MTU4M2FlZWRmNjRhIgotCi1pbmhlcml0IHBrZ2NvbmZpZwotCi1FWFRSQV9PRU1BS0UgPSAiXAotICAgIC1mICcke1N9L01ha2VmaWxlJyBcCi0gICAgXAotICAgICdQUkVGSVg9JHtwcmVmaXh9JyBcCi0gICAgJ1NCSU5ESVI9JHtzYmluZGlyfScgXAotICAgICdNQU5ESVI9JHttYW5kaXJ9JyBcCi0iCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXdfNS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3XzUuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjU4ZTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3XzUuNC5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIm5sODAyMTEgYmFzZWQgQ0xJIGNvbmZpZ3VyYXRpb24gdXRpbGl0eSBmb3Igd2lyZWxlc3MgZGV2aWNlcyIKK0RFU0NSSVBUSU9OID0gIml3IGlzIGEgbmV3IG5sODAyMTEgYmFzZWQgQ0xJIGNvbmZpZ3VyYXRpb24gdXRpbGl0eSBmb3IgXAord2lyZWxlc3MgZGV2aWNlcy4gSXQgc3VwcG9ydHMgYWxtb3N0IGFsbCBuZXcgZHJpdmVycyB0aGF0IGhhdmUgYmVlbiBhZGRlZCBcCit0byB0aGUga2VybmVsIHJlY2VudGx5LiAiCitIT01FUEFHRSA9ICJodHRwOi8vd2lyZWxlc3Mua2VybmVsLm9yZy9lbi91c2Vycy9Eb2N1bWVudGF0aW9uL2l3IgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Nzg2MThhNWM0YWYyNWU5YjkzZWYwYmUxYTkzZjc3NCIKKworREVQRU5EUyA9ICJsaWJubCIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvaXcvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaXctdmVyc2lvbi5zaC1kb24tdC11c2UtZ2l0LWRlc2NyaWJlLWZvci12ZXJzaW9uaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NlcGFyYXRlLW9iamRpci5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwOGE0ZjU4MWEzOWRjNjJmYTg1ZDNhZjc5NmQ4NDRiNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NDNjZDI0NDZhNmM3MjQyZmRlZDM3NjZkMDU0YWIyYTIxNGEzNTE0YjlhOGI3ZTk0MmZlZDhmYjEzYzEzNzBjIgorCitpbmhlcml0IHBrZ2NvbmZpZworCitFWFRSQV9PRU1BS0UgPSAiXAorICAgIC1mICcke1N9L01ha2VmaWxlJyBcCisgICAgXAorICAgICdQUkVGSVg9JHtwcmVmaXh9JyBcCisgICAgJ1NCSU5ESVI9JHtzYmluZGlyfScgXAorICAgICdNQU5ESVI9JHttYW5kaXJ9JyBcCisiCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibnNzLW1kbnMvbGlibnNzLW1kbnNfMC4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJuc3MtbWRucy9saWJuc3MtbWRuc18wLjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTM1MDU5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJuc3MtbWRucy9saWJuc3MtbWRuc18wLjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotU1VNTUFSWSA9ICJOYW1lIFNlcnZpY2UgU3dpdGNoIG1vZHVsZSBmb3IgTXVsdGljYXN0IEROUyAoemVyb2NvbmYpIG5hbWUgcmVzb2x1dGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly8wcG9pbnRlci5kZS9sZW5uYXJ0L3Byb2plY3RzL25zcy1tZG5zLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSIKLQotREVQRU5EUyA9ICJhdmFoaSIKLVBSID0gInI3IgotCi1TUkNfVVJJID0gImh0dHA6Ly8wcG9pbnRlci5kZS9sZW5uYXJ0L3Byb2plY3RzL25zcy1tZG5zL25zcy1tZG5zLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjAzOTM4ZjE3NjQ2ZWZiYjUwYWE3MGJhNWY5OWY1MWQ3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFlNjgzYzJlN2MzOTIxODE0NzA2ZDYyZmJiZDNlOWNiZjQ5M2E3NWZhMDAyNTVlMGU3MTU1MDhkODEzNGZhNmQiCi0KLVMgPSAiJHtXT1JLRElSfS9uc3MtbWRucy0ke1BWfSIKLQotbG9jYWxzdGF0ZWRpciA9ICIvIgotCi1pbmhlcml0IGF1dG90b29scwotCi1DT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsID0gJ251bGwnCi0KLUVYVFJBX09FQ09ORiA9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSAtLWRpc2FibGUtbHlueCAtLWVuYWJsZS1hdmFoaSIKLQotIyBzdXBwcmVzcyB3YXJuaW5nLCBidXQgZG9uJ3QgYm90aGVyIHdpdGggYXV0b25hbWVyCi1MRUFEX1NPTkFNRSA9ICJsaWJuc3NfbWRucy5zbyIKLURFQklBTk5BTUVfJHtQTn0gPSAibGlibnNzLW1kbnMiCi0KLVJERVBFTkRTXyR7UE59ID0gImF2YWhpLWRhZW1vbiIKLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLQlzZWQgJwotCQkvXmhvc3RzOi8gIWIKLQkJL1w8bWRuc1woNFx8NlwpXD9cKF9taW5pbWFsXClcP1w+LyBiCi0JCXMvXChbWzpibGFuazpdXVwrXClkbnNcPi9cMW1kbnM0X21pbmltYWwgW05PVEZPVU5EPXJldHVybl0gZG5zL2cKLQkJJyAtaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgotfQotCi1wa2dfcHJlcm1fJHtQTn0gKCkgewotCXNlZCAnCi0JCS9eaG9zdHM6LyAhYgotCQlzL1tbOmJsYW5rOl1dXCttZG5zXCg0XHw2XClcP1woX21pbmltYWxcKCBcW05PVEZPVU5EPXJldHVyblxdXClcP1wpXD8vL2cKLQkJJyAtaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm5zcy1tZG5zL2xpYm5zcy1tZG5zXzAuMTQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJuc3MtbWRucy9saWJuc3MtbWRuc18wLjE0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU0NDYwMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJuc3MtbWRucy9saWJuc3MtbWRuc18wLjE0LjEuYmIKQEAgLTAsMCArMSwzOCBAQAorU1VNTUFSWSA9ICJOYW1lIFNlcnZpY2UgU3dpdGNoIG1vZHVsZSBmb3IgTXVsdGljYXN0IEROUyAoemVyb2NvbmYpIG5hbWUgcmVzb2x1dGlvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9sYXRoaWF0L25zcy1tZG5zIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIgorCitERVBFTkRTID0gImF2YWhpIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGF0aGlhdC9uc3MtbWRucyBcCisgICAgICAgICAgICIKKworU1JDUkVWID0gIjQxYzljNWU3OGYyODdlZDRiNDFhYzQzOGMxODczZmE3MWJmYTcwYWUiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitDT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsID0gJ251bGwnCisKK0VYVFJBX09FQ09ORiA9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSIKKworUkRFUEVORFNfJHtQTn0gPSAiYXZhaGktZGFlbW9uIgorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworCXNlZCAnCisJCS9eaG9zdHM6LyAhYgorCQkvXDxtZG5zXCg0XHw2XClcP1woX21pbmltYWxcKVw/XD4vIGIKKwkJcy9cKFtbOmJsYW5rOl1dXCtcKWRuc1w+L1wxbWRuczRfbWluaW1hbCBbTk9URk9VTkQ9cmV0dXJuXSBkbnMvZworCQknIC1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCit9CisKK3BrZ19wcmVybV8ke1BOfSAoKSB7CisJc2VkICcKKwkJL15ob3N0czovICFiCisJCXMvW1s6Ymxhbms6XV1cK21kbnNcKDRcfDZcKVw/XChfbWluaW1hbFwoIFxbTk9URk9VTkQ9cmV0dXJuXF1cKVw/XClcPy8vZworCQknIC1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLURvbi10LWJ1aWxkLXRvb2xzLXdpdGgtQ0NfRk9SX0JVSUxELnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1Eb24tdC1idWlsZC10b29scy13aXRoLUNDX0ZPUl9CVUlMRC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNiYzNlYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLURvbi10LWJ1aWxkLXRvb2xzLXdpdGgtQ0NfRk9SX0JVSUxELnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSA3OTAxOWQ5NzY1ODRjNTk4ZjhkMGE5ZDhkZTQzYzk4OTk0NmY5NzRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGFzY2FsIEJhY2ggPHBhc2NhbC5iYWNoQHNpZW1lbnMuY29tPgotRGF0ZTogV2VkLCAxMyBGZWIgMjAxOSAwOToyODowNyArMDEwMAotU3ViamVjdDogW1BBVENIXSBEb24ndCBidWlsZCB0b29scyB3aXRoIENDX0ZPUl9CVUlMRAotCi1UaGUgdG9vbHMgYXJlIGludGVuZGVkIGZvciB0aGUgdGFyZ2V0IG5vdCBmb3IgdGhlIGhvc3QuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+Ci0tLS0KLSB0b29scy9sb2NrdGVzdC9NYWtlZmlsZS5hbSB8IDEgLQotIHRvb2xzL3JwY2dlbi9NYWtlZmlsZS5hbSAgIHwgMSAtCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdG9vbHMvbG9ja3Rlc3QvTWFrZWZpbGUuYW0gYi90b29scy9sb2NrdGVzdC9NYWtlZmlsZS5hbQotaW5kZXggMzE1NjgxNS4uODdkMGJhYyAxMDA2NDQKLS0tLSBhL3Rvb2xzL2xvY2t0ZXN0L01ha2VmaWxlLmFtCi0rKysgYi90b29scy9sb2NrdGVzdC9NYWtlZmlsZS5hbQotQEAgLTEsNiArMSw1IEBACi0gIyMgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvbWFrZSB0byBwcm9kdWNlIE1ha2VmaWxlLmluCi0gCi0tQ0M9JChDQ19GT1JfQlVJTEQpCi0gTElCVE9PTCA9IEBMSUJUT09MQCAtLXRhZz1DQwotIAotIG5vaW5zdF9QUk9HUkFNUyA9IHRlc3RsawotZGlmZiAtLWdpdCBhL3Rvb2xzL3JwY2dlbi9NYWtlZmlsZS5hbSBiL3Rvb2xzL3JwY2dlbi9NYWtlZmlsZS5hbQotaW5kZXggOGE5ZWM4OS4uM2UwOTJjOSAxMDA2NDQKLS0tLSBhL3Rvb2xzL3JwY2dlbi9NYWtlZmlsZS5hbQotKysrIGIvdG9vbHMvcnBjZ2VuL01ha2VmaWxlLmFtCi1AQCAtMSw2ICsxLDUgQEAKLSAjIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9tYWtlIHRvIHByb2R1Y2UgTWFrZWZpbGUuaW4KLSAKLS1DQz0kKENDX0ZPUl9CVUlMRCkKLSBMSUJUT09MID0gQExJQlRPT0xAIC0tdGFnPUNDCi0gCi0gbm9pbnN0X1BST0dSQU1TID0gcnBjZ2VuCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLUZpeC1pbmNsdWRlLW9yZGVyLWJldHdlZW4tY29uZmlnLmgtYW5kLXN0YXQuaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtRml4LWluY2x1ZGUtb3JkZXItYmV0d2Vlbi1jb25maWcuaC1hbmQtc3RhdC5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjBmOTM1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtRml4LWluY2x1ZGUtb3JkZXItYmV0d2Vlbi1jb25maWcuaC1hbmQtc3RhdC5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTU2ICswLDAgQEAKLUZyb20gMmZiYzYyZTJhMTNmYzIyYjZhZTQ5MTBlMjk1YTJjMTBmYjc5MDQ4NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFpvbHRhbiBLYXJjYWdpIDx6a3I3NDMyQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTIgQXVnIDIwMTkgMTM6Mjc6MTYgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGluY2x1ZGUgb3JkZXIgYmV0d2VlbiBjb25maWcuaCBhbmQgc3RhdC5oCi0KLUF0IGxlYXN0IG9uIEFyY2ggbGludXggQVJNLCB0aGUgZGVmaW5pdGlvbiBvZiBzdHJ1Y3Qgc3RhdCBpbiBzdGF0LmggZGVwZW5kcwotb24gX19VU0VfRklMRV9PRkZTRVQ2NC4gVGhpcyBzeW1ib2wgY29tZXMgZnJvbSBjb25maWcuaCB3aGVuIGRlZmluZWQsCi10aGVyZWZvcmUgY29uZmlnLmggbXVzdCBhbHdheXMgYmUgaW5jbHVkZWQgYmVmb3JlIHN0YXQuaC4gRml4IGFsbAotb2NjdXJyZW5jZXMgd2hlcmUgdGhlIG9yZGVyIGlzIHdyb25nIGJ5IG1vdmluZyBjb25maWcuaCB0byB0aGUgdG9wLgotCi1UaGlzIGZpeGVzIHRoZSBjbGllbnQgc2lkZSBlcnJvciAiU3RhbGUgZmlsZSBoYW5kbGUiIHdoZW4gbW91bnRpbmcgZnJvbQotYSBzZXJ2ZXIgcnVubmluZyBBcmNoIExpbnV4IEFSTS4KLQotU2lnbmVkLW9mZi1ieTogWm9sdGFuIEthcmNhZ2kgPHprcjc0MzJAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogU3RldmUgRGlja3NvbiA8c3RldmVkQHJlZGhhdC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwOi8vZ2l0LmxpbnV4LW5mcy5vcmcvP3A9c3RldmVkL25mcy11dGlscy5naXQ7YT1jb21taXQ7aD0yZmJjNjJlMmExM2ZjMjJiNmFlNDkxMGUyOTVhMmMxMGZiNzkwNDg2XQotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzdXBwb3J0L21pc2MvbmZzZF9wYXRoLmMgICAgICAgICB8IDUgKysrKy0KLSBzdXBwb3J0L21pc2MveHN0YXQuYyAgICAgICAgICAgICB8IDUgKysrKy0KLSBzdXBwb3J0L25mcy9jb25mZmlsZS5jICAgICAgICAgICB8IDggKysrKysrKy0KLSB1dGlscy9ibGttYXBkL2RldmljZS1kaXNjb3ZlcnkuYyB8IDggKysrKy0tLS0KLSB1dGlscy9pZG1hcGQvaWRtYXBkLmMgICAgICAgICAgICB8IDggKysrKy0tLS0KLSA1IGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3VwcG9ydC9taXNjL25mc2RfcGF0aC5jIGIvc3VwcG9ydC9taXNjL25mc2RfcGF0aC5jCi1pbmRleCA4NGU0ODAyLi5mMDc4YTY2IDEwMDY0NAotLS0tIGEvc3VwcG9ydC9taXNjL25mc2RfcGF0aC5jCi0rKysgYi9zdXBwb3J0L21pc2MvbmZzZF9wYXRoLmMKLUBAIC0xLDMgKzEsNyBAQAotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLUBAIC01LDcgKzksNiBAQAotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gCi0tI2luY2x1ZGUgImNvbmZpZy5oIgotICNpbmNsdWRlICJjb25mZmlsZS5oIgotICNpbmNsdWRlICJ4bWFsbG9jLmgiCi0gI2luY2x1ZGUgInhsb2cuaCIKLWRpZmYgLS1naXQgYS9zdXBwb3J0L21pc2MveHN0YXQuYyBiL3N1cHBvcnQvbWlzYy94c3RhdC5jCi1pbmRleCBmYTA0Nzg4Li40Yzk5N2VlIDEwMDY0NAotLS0tIGEvc3VwcG9ydC9taXNjL3hzdGF0LmMKLSsrKyBiL3N1cHBvcnQvbWlzYy94c3RhdC5jCi1AQCAtMSwzICsxLDcgQEAKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci1AQCAtNSw3ICs5LDYgQEAKLSAjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLS0jaW5jbHVkZSAiY29uZmlnLmgiCi0gI2luY2x1ZGUgInhzdGF0LmgiCi0gCi0gI2lmZGVmIEhBVkVfRlNUQVRBVAotZGlmZiAtLWdpdCBhL3N1cHBvcnQvbmZzL2NvbmZmaWxlLmMgYi9zdXBwb3J0L25mcy9jb25mZmlsZS5jCi1pbmRleCBiNjQwMGJlLi42YmE4YTM1IDEwMDY0NAotLS0tIGEvc3VwcG9ydC9uZnMvY29uZmZpbGUuYwotKysrIGIvc3VwcG9ydC9uZnMvY29uZmZpbGUuYwotQEAgLTUwMCw3ICs1MDAsNyBAQCBjb25mX3JlYWRmaWxlKGNvbnN0IGNoYXIgKnBhdGgpCi0gCi0gCWlmICgoc3RhdCAocGF0aCwgJnNiKSA9PSAwKSB8fCAoZXJybm8gIT0gRU5PRU5UKSkgewotIAkJY2hhciAqbmV3X2NvbmZfYWRkciA9IE5VTEw7Ci0tCQlzaXplX3Qgc3ogPSBzYi5zdF9zaXplOwotKwkJb2ZmX3Qgc3o7Ci0gCQlpbnQgZmQgPSBvcGVuIChwYXRoLCBPX1JET05MWSwgMCk7Ci0gCi0gCQlpZiAoZmQgPT0gLTEpIHsKLUBAIC01MTcsNiArNTE3LDExIEBAIGNvbmZfcmVhZGZpbGUoY29uc3QgY2hhciAqcGF0aCkKLSAKLSAJCS8qIG9ubHkgYWZ0ZXIgd2UgaGF2ZSB0aGUgbG9jaywgY2hlY2sgdGhlIGZpbGUgc2l6ZSByZWFkeSB0byByZWFkIGl0ICovCi0gCQlzeiA9IGxzZWVrKGZkLCAwLCBTRUVLX0VORCk7Ci0rCQlpZiAoc3ogPCAwKSB7Ci0rCQkJeGxvZ193YXJuKCJjb25mX3JlYWRmaWxlOiB1bmFibGUgdG8gZGV0ZXJtaW5lIGZpbGUgc2l6ZTogJXMiLAotKwkJCQkgIHN0cmVycm9yKGVycm5vKSk7Ci0rCQkJZ290byBmYWlsOwotKwkJfQotIAkJbHNlZWsoZmQsIDAsIFNFRUtfU0VUKTsKLSAKLSAJCW5ld19jb25mX2FkZHIgPSBtYWxsb2Moc3orMSk7Ci1AQCAtMjE2Miw2ICsyMTY3LDcgQEAgY29uZl93cml0ZShjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqc2VjdGlvbiwgY29uc3QgY2hhciAqYXJnLAotIAlyZXQgPSAwOwotIAotIGNsZWFudXA6Ci0rCWZsdXNoX291dHF1ZXVlKCZpbnF1ZXVlLCBOVUxMKTsKLSAJZmx1c2hfb3V0cXVldWUoJm91dHF1ZXVlLCBOVUxMKTsKLSAKLSAJaWYgKGJ1ZmYpCi1kaWZmIC0tZ2l0IGEvdXRpbHMvYmxrbWFwZC9kZXZpY2UtZGlzY292ZXJ5LmMgYi91dGlscy9ibGttYXBkL2RldmljZS1kaXNjb3ZlcnkuYwotaW5kZXggZTgxMTcwMy4uZjVmOWIxMCAxMDA2NDQKLS0tLSBhL3V0aWxzL2Jsa21hcGQvZGV2aWNlLWRpc2NvdmVyeS5jCi0rKysgYi91dGlscy9ibGttYXBkL2RldmljZS1kaXNjb3ZlcnkuYwotQEAgLTI2LDYgKzI2LDEwIEBACi0gICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAgKi8KLSAKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjZW5kaWYgLyogSEFWRV9DT05GSUdfSCAqLwotKwotICNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotQEAgLTUxLDEwICs1NSw2IEBACi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGxpYmRldm1hcHBlci5oPgotIAotLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0tI2luY2x1ZGUgImNvbmZpZy5oIgotLSNlbmRpZiAvKiBIQVZFX0NPTkZJR19IICovCi0tCi0gI2luY2x1ZGUgImRldmljZS1kaXNjb3ZlcnkuaCIKLSAjaW5jbHVkZSAieGNvbW1vbi5oIgotICNpbmNsdWRlICJuZnNsaWIuaCIKLWRpZmYgLS1naXQgYS91dGlscy9pZG1hcGQvaWRtYXBkLmMgYi91dGlscy9pZG1hcGQvaWRtYXBkLmMKLWluZGV4IDYyZTM3YjguLjI2N2FjZWEgMTAwNjQ0Ci0tLS0gYS91dGlscy9pZG1hcGQvaWRtYXBkLmMKLSsrKyBiL3V0aWxzL2lkbWFwZC9pZG1hcGQuYwotQEAgLTM0LDYgKzM0LDEwIEBACi0gICogIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICAqLwotIAotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKyNlbmRpZiAvKiBIQVZFX0NPTkZJR19IICovCi0rCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvdGltZS5oPgotICNpbmNsdWRlIDxzeXMvaW5vdGlmeS5oPgotQEAgLTYyLDEwICs2Niw2IEBACi0gI2luY2x1ZGUgPGxpYmdlbi5oPgotICNpbmNsdWRlIDxuZnNpZG1hcC5oPgotIAotLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0tI2luY2x1ZGUgImNvbmZpZy5oIgotLSNlbmRpZiAvKiBIQVZFX0NPTkZJR19IICovCi0tCi0gI2luY2x1ZGUgInhsb2cuaCIKLSAjaW5jbHVkZSAiY29uZmZpbGUuaCIKLSAjaW5jbHVkZSAicXVldWUuaCIKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLWZ1bmN0aW9uLWZvci1saWJuc20uYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtTWFrZWZpbGUuYW0tZml4LXVuZGVmaW5lZC1mdW5jdGlvbi1mb3ItbGlibnNtLmEucGF0Y2gKaW5kZXggZmNiMGU5OS4uYmQzNTAxNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLWZ1bmN0aW9uLWZvci1saWJuc20uYS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLU1ha2VmaWxlLmFtLWZpeC11bmRlZmluZWQtZnVuY3Rpb24tZm9yLWxpYm5zbS5hLnBhdGNoCkBAIC0yOCwxMCArMjgsMTAgQEAKIFNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgogLS0tCiAgc3VwcG9ydC9taXNjL01ha2VmaWxlLmFtIHwgICAyICstCi0gc3VwcG9ydC9taXNjL2ZpbGUuYyAgICAgIHwgMTExIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHN1cHBvcnQvbWlzYy9maWxlLmMgICAgICB8IDExNSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBzdXBwb3J0L21pc2MvbWlzYy5jICAgICAgfCAxMTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAgc3VwcG9ydC9uc20vTWFrZWZpbGUuYW0gIHwgICAyICstCi0gNCBmaWxlcyBjaGFuZ2VkLCAxMTMgaW5zZXJ0aW9ucygrKSwgMTEzIGRlbGV0aW9ucygtKQorIDQgZmlsZXMgY2hhbmdlZCwgMTEzIGluc2VydGlvbnMoKyksIDExNyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3N1cHBvcnQvbWlzYy9NYWtlZmlsZS5hbSBiL3N1cHBvcnQvbWlzYy9NYWtlZmlsZS5hbQogaW5kZXggZjk5OTNlMy4uOGIwZTlkYiAxMDA2NDQKQEAgLTQ4LDEwICs0OCwxMCBAQAogIE1BSU5UQUlORVJDTEVBTkZJTEVTID0gTWFrZWZpbGUuaW4KIGRpZmYgLS1naXQgYS9zdXBwb3J0L21pc2MvZmlsZS5jIGIvc3VwcG9ydC9taXNjL2ZpbGUuYwogZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCBlN2MzODE5Li4wMDAwMDAwCitpbmRleCAwNmY2YmIyLi4wMDAwMDAwCiAtLS0gYS9zdXBwb3J0L21pc2MvZmlsZS5jCiArKysgL2Rldi9udWxsCi1AQCAtMSwxMTEgKzAsMCBAQAorQEAgLTEsMTE1ICswLDAgQEAKIC0vKgogLSAqIENvcHlyaWdodCAyMDA5IE9yYWNsZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAtICogQ29weXJpZ2h0IDIwMTcgUmVkIEhhdCwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTcyLDYgKzcyLDEwIEBACiAtICogYWxvbmcgd2l0aCBuZnMtdXRpbHMuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAtICovCiAtCistI2lmZGVmIEhBVkVfQ09ORklHX0gKKy0jaW5jbHVkZSA8Y29uZmlnLmg+CistI2VuZGlmCistCiAtI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAtCiAtI2luY2x1ZGUgPHN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1jb25maWd1cmUuYWMtRG8tbm90LWZhdGFsaXplLVdtaXNzaW5nLXByb3RvdHlwZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWNvbmZpZ3VyZS5hYy1Eby1ub3QtZmF0YWxpemUtV21pc3NpbmctcHJvdG90eXBlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE0ZjA3OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWNvbmZpZ3VyZS5hYy1Eby1ub3QtZmF0YWxpemUtV21pc3NpbmctcHJvdG90eXBlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gNjY0NzFmYmY3MTA2OTE3ZGE3YTE1MzZiMThhMGE3N2QwNzQ3OTc3OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDE3IERlYyAyMDE4IDE1OjI5OjQ3ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogRG8gbm90IGZhdGFsaXplIC1XbWlzc2luZy1wcm90b3R5cGVzCi0KLVRoZXJlIGNvbWVzIGJlbG93IGVycm9yIHdoZW4gcnVuICJtYWtlIC1DIHRlc3RzL25zbV9jbGllbnQgbnNtX2NsaWVudCIKLXwgbmxtX3NtX2ludGVyX3N2Yy5jOjIwOjE6IGVycm9yOiBubyBwcmV2aW91cyBwcm90b3R5cGUgZm9yICdubG1fc21fcHJvZ18zJyBbLVdlcnJvcj1taXNzaW5nLXByb3RvdHlwZXNdCi0KLUl0IGlzIGJlY2F1c2UgcnBjZ2VuIGRvZXNuJ3QgZ2VuZXJhdGUgLVdtaXNzaW5nLXByb3RvdHlwZXMKLWZyZWUgY29kZSBmb3IgbmxtX3NtX2ludGVyX3N2Yy5jIHdpdGggYmVsb3cgbG9naWMKLWluIHRlc3RzL25zbV9jbGllbnQvTWFrZWZpbGUuYW0KLVtzbmlwXQotR0VORklMRVNfU1ZDICAgID0gbmxtX3NtX2ludGVyX3N2Yy5jCi1bc25pcF0KLSQoR0VORklMRVNfU1ZDKTogJV9zdmMuYzogJS54ICQoUlBDR0VOKQotICAgICAgICB0ZXN0IC1mICRAICYmIHJtIC1yZiAkQCB8fCB0cnVlCi0gICAgICAgICQoUlBDR0VOKSAtbSAtbyAkQCAkPAotCi1TbyBhZGQgdGhlIGxvZ2ljIG5vdCB0byBmYXRhbGl6ZSAtV21pc3NpbmctcHJvdG90eXBlcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWRbaHR0cHM6Ly9tYXJjLmluZm8vP2w9bGludXgtbmZzJm09MTU0NTAzMjYwMzIzOTM2Jnc9Ml0KLQotU2lnbmVkLW9mZi1ieTogTWluZ2xpIFl1IDxNaW5nbGkuWXVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNTAwMDJiNC4uYWViZmYwMSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNTgyLDcgKzU4Miw3IEBAIG15X2FtX2NmbGFncz0iXAotICAtV2FsbCBcCi0gIC1XZXh0cmEgXAotICAkcnBjZ2VuX2NmbGFncyBcCi0tIC1XZXJyb3I9bWlzc2luZy1wcm90b3R5cGVzIFwKLSsgLVdtaXNzaW5nLXByb3RvdHlwZXMgXAotICAtV2Vycm9yPW1pc3NpbmctZGVjbGFyYXRpb25zIFwKLSAgLVdlcnJvcj1mb3JtYXQ9MiBcCi0gIC1XZXJyb3I9dW5kZWYgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvY2xhbmctZm9ybWF0LXN0cmluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL2NsYW5nLWZvcm1hdC1zdHJpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkNjkzZTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvY2xhbmctZm9ybWF0LXN0cmluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4MyArMCwwIEBACi1DbGFuZyBjb21lcyB1cCB3aXRoIG1vcmUgcHJpbnRmIGZvcm1hdCB3YXJuaW5ncwotQ29ycmVjdGluZyDigJxmb3JtYXQgc3RyaW5nIGlzIG5vdCBhIHN0cmluZyBsaXRlcmFs4oCdIHdhcm5pbmcKLXJlcXVpcmVzIHVzIHRvIGRlY2xhcmUgdGhhdCBwYXJhbWV0ZXIgaXMgYSBwcmludGYgc3R5bGUgCi1mb3JtYXQgdXNpbmcgdGhlIGF0dHJpYnV0ZSBmbGFnCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1JbmRleDogbmZzLXV0aWxzLTIuMy4zL3N1cHBvcnQvaW5jbHVkZS94Y29tbW9uLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZnMtdXRpbHMtMi4zLjMub3JpZy9zdXBwb3J0L2luY2x1ZGUveGNvbW1vbi5oCi0rKysgbmZzLXV0aWxzLTIuMy4zL3N1cHBvcnQvaW5jbHVkZS94Y29tbW9uLmgKLUBAIC0yNyw3ICsyNyw3IEBACi0gCi0gLyogRnVuY3Rpb25zIGluIHN1bmRyaWVzLmMgdGhhdCBhcmUgdXNlZCBpbiBtb3VudC5jIGFuZCB1bW91bnQuYyAgKi8gCi0gY2hhciAqY2Fub25pY2FsaXplIChjb25zdCBjaGFyICpwYXRoKTsKLS12b2lkIG5mc19lcnJvciAoY29uc3QgY2hhciAqZm10LCAuLi4pOwotK3ZvaWQgbmZzX2Vycm9yIChjb25zdCBjaGFyICpmbXQsIC4uLikgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyAoX19wcmludGZfXywgMSwgMikpKTsKLSB2b2lkICp4bWFsbG9jIChzaXplX3Qgc2l6ZSk7Ci0gdm9pZCAqeHJlYWxsb2Modm9pZCAqcCwgc2l6ZV90IHNpemUpOwotIHZvaWQgeGZyZWUodm9pZCAqKTsKLUBAIC0zNiw5ICszNiw5IEBAIGNoYXIgKnhzdHJuZHVwIChjb25zdCBjaGFyICpzLCBpbnQgbik7Ci0gY2hhciAqeHN0cmNvbmNhdDIgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKLSBjaGFyICp4c3RyY29uY2F0MyAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7Ci0gY2hhciAqeHN0cmNvbmNhdDQgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7Ci0tdm9pZCBkaWUgKGludCBlcnJjb2RlLCBjb25zdCBjaGFyICpmbXQsIC4uLik7Ci0rdm9pZCBkaWUgKGludCBlcnJjb2RlLCBjb25zdCBjaGFyICpmbXQsIC4uLikgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKLSAKLS1leHRlcm4gdm9pZCBkaWUoaW50IGVyciwgY29uc3QgY2hhciAqZm10LCAuLi4pOwotK2V4dGVybiB2b2lkIGRpZShpbnQgZXJyLCBjb25zdCBjaGFyICpmbXQsIC4uLikgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKLSBleHRlcm4gdm9pZCAoKmF0X2RpZSkodm9pZCk7Ci0gCi0gLyogZXhpdCBzdGF0dXMgLSBiaXRzIGJlbG93IGFyZSBPUmVkICovCi1JbmRleDogbmZzLXV0aWxzLTIuMy4zL3N1cHBvcnQvaW5jbHVkZS94bG9nLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZnMtdXRpbHMtMi4zLjMub3JpZy9zdXBwb3J0L2luY2x1ZGUveGxvZy5oCi0rKysgbmZzLXV0aWxzLTIuMy4zL3N1cHBvcnQvaW5jbHVkZS94bG9nLmgKLUBAIC00MywxMCArNDMsMTAgQEAgdm9pZAkJCXhsb2dfY29uZmlnKGludCBmYWMsIGludCBvbik7Ci0gdm9pZAkJCXhsb2dfc2NvbmZpZyhjaGFyICosIGludCBvbik7Ci0gdm9pZAkJCXhsb2dfZnJvbV9jb25mZmlsZShjaGFyICopOwotIGludAkJCXhsb2dfZW5hYmxlZChpbnQgZmFjKTsKLS12b2lkCQkJeGxvZyhpbnQgZmFjLCBjb25zdCBjaGFyICpmbXQsIC4uLik7Ci0tdm9pZAkJCXhsb2dfd2Fybihjb25zdCBjaGFyICpmbXQsIC4uLik7Ci0tdm9pZAkJCXhsb2dfZXJyKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKLS12b2lkCQkJeGxvZ19lcnJubyhpbnQgZXJyLCBjb25zdCBjaGFyICpmbXQsIC4uLik7Ci0tdm9pZAkJCXhsb2dfYmFja2VuZChpbnQgZmFjLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncyk7Ci0rdm9pZAkJCXhsb2coaW50IGZhYywgY29uc3QgY2hhciAqZm10LCAuLi4pIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7Ci0rdm9pZAkJCXhsb2dfd2Fybihjb25zdCBjaGFyICpmbXQsIC4uLikgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyAoX19wcmludGZfXywgMSwgMikpKTsKLSt2b2lkCQkJeGxvZ19lcnIoY29uc3QgY2hhciAqZm10LCAuLi4pIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDEsIDIpKSk7Ci0rdm9pZAkJCXhsb2dfZXJybm8oaW50IGVyciwgY29uc3QgY2hhciAqZm10LCAuLi4pIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7Ci0rdm9pZAkJCXhsb2dfYmFja2VuZChpbnQgZmFjLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncykgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKLSAKLSAjZW5kaWYgLyogWExPR19IICovCi1JbmRleDogbmZzLXV0aWxzLTIuMy4zL3N1cHBvcnQvbmZzL3hjb21tb24uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5mcy11dGlscy0yLjMuMy5vcmlnL3N1cHBvcnQvbmZzL3hjb21tb24uYwotKysrIG5mcy11dGlscy0yLjMuMy9zdXBwb3J0L25mcy94Y29tbW9uLmMKLUBAIC05Myw3ICs5MywxMCBAQCBuZnNfZXJyb3IgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKSB7Ci0gCi0gICAgICBmbXQyID0geHN0cmNvbmNhdDIgKGZtdCwgIlxuIik7Ci0gICAgICB2YV9zdGFydCAoYXJncywgZm10KTsKLSsjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Zvcm1hdC1ub25saXRlcmFsIgotICAgICAgdmZwcmludGYgKHN0ZGVyciwgZm10MiwgYXJncyk7Ci0rI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotICAgICAgdmFfZW5kIChhcmdzKTsKLSAgICAgIGZyZWUgKGZtdDIpOwotIH0KLUluZGV4OiBuZnMtdXRpbHMtMi4zLjMvdXRpbHMvZXhwb3J0ZnMvZXhwb3J0ZnMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5mcy11dGlscy0yLjMuMy5vcmlnL3V0aWxzL2V4cG9ydGZzL2V4cG9ydGZzLmMKLSsrKyBuZnMtdXRpbHMtMi4zLjMvdXRpbHMvZXhwb3J0ZnMvZXhwb3J0ZnMuYwotQEAgLTY0NCw2ICs2NDQsNyBAQCBvdXQ6Ci0gCXJldHVybiByZXN1bHQ7Ci0gfQotIAotK19fYXR0cmlidXRlX18oKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSkKLSBzdGF0aWMgY2hhcgotIGR1bXBvcHQoY2hhciBjLCBjaGFyICpmbXQsIC4uLikKLSB7Ci1JbmRleDogbmZzLXV0aWxzLTIuMy4zL3V0aWxzL3N0YXRkL3N0YXRkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZnMtdXRpbHMtMi4zLjMub3JpZy91dGlscy9zdGF0ZC9zdGF0ZC5jCi0rKysgbmZzLXV0aWxzLTIuMy4zL3V0aWxzL3N0YXRkL3N0YXRkLmMKLUBAIC0xMzYsNyArMTM2LDcgQEAgc3RhdGljIHZvaWQgbG9nX21vZGVzKHZvaWQpCi0gCXN0cmNhdChidWYsICJUSS1SUEMgIik7Ci0gI2VuZGlmCi0gCi0tCXhsb2dfd2FybihidWYpOwotKwl4bG9nX3dhcm4oIiVzIiwgYnVmKTsKLSB9Ci0gCi0gLyoKLUluZGV4OiBuZnMtdXRpbHMtMi4zLjMvc3VwcG9ydC9uZnMvc3ZjX2NyZWF0ZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmZzLXV0aWxzLTIuMy4zLm9yaWcvc3VwcG9ydC9uZnMvc3ZjX2NyZWF0ZS5jCi0rKysgbmZzLXV0aWxzLTIuMy4zL3N1cHBvcnQvbmZzL3N2Y19jcmVhdGUuYwotQEAgLTE4NCw3ICsxODQsNyBAQCBzdmNfY3JlYXRlX3NvY2soY29uc3Qgc3RydWN0IHNvY2thZGRyICpzCi0gCQl0eXBlID0gU09DS19TVFJFQU07Ci0gCQlicmVhazsKLSAJZGVmYXVsdDoKLS0JCXhsb2coRF9HRU5FUkFMLCAiJXM6IFVucmVjb2duaXplZCBiaW5kIGFkZHJlc3Mgc2VtYW50aWNzOiAldSIsCi0rCQl4bG9nKERfR0VORVJBTCwgIiVzOiBVbnJlY29nbml6ZWQgYmluZCBhZGRyZXNzIHNlbWFudGljczogJWx1IiwKLSAJCQlfX2Z1bmNfXywgbmNvbmYtPm5jX3NlbWFudGljcyk7Ci0gCQlyZXR1cm4gLTE7Ci0gCX0KLUluZGV4OiBuZnMtdXRpbHMtMi4zLjMvc3VwcG9ydC9uc20vcnBjLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZnMtdXRpbHMtMi4zLjMub3JpZy9zdXBwb3J0L25zbS9ycGMuYwotKysrIG5mcy11dGlscy0yLjMuMy9zdXBwb3J0L25zbS9ycGMuYwotQEAgLTE4Miw3ICsxODIsNyBAQCBuc21feG1pdF9nZXRwb3J0KGNvbnN0IGludCBzb2NrLCBjb25zdCBzCi0gCXVpbnQzMl90IHhpZDsKLSAJWERSIHhkcjsKLSAKLS0JeGxvZyhEX0NBTEwsICJTZW5kaW5nIFBNQVBfR0VUUE9SVCBmb3IgJXUsICV1LCB1ZHAiLCBwcm9ncmFtLCB2ZXJzaW9uKTsKLSsJeGxvZyhEX0NBTEwsICJTZW5kaW5nIFBNQVBfR0VUUE9SVCBmb3IgJWx1LCAlbHUsIHVkcCIsIHByb2dyYW0sIHZlcnNpb24pOwotIAotIAluc21faW5pdF94ZHJtZW0obXNnYnVmLCBOU01fTUFYTVNHU0laRSwgJnhkcik7Ci0gCXhpZCA9IG5zbV9pbml0X3JwY19oZWFkZXIoUE1BUFBST0csIFBNQVBWRVJTLAotSW5kZXg6IG5mcy11dGlscy0yLjMuMy91dGlscy9tb3VudGQvY2FjaGUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5mcy11dGlscy0yLjMuMy5vcmlnL3V0aWxzL21vdW50ZC9jYWNoZS5jCi0rKysgbmZzLXV0aWxzLTIuMy4zL3V0aWxzL21vdW50ZC9jYWNoZS5jCi1AQCAtOTY4LDggKzk2OCw3IEBAIGxvb2t1cF9leHBvcnQoY2hhciAqZG9tLCBjaGFyICpwYXRoLCBzdHIKLSAJCQl9IGVsc2UgaWYgKGZvdW5kX3R5cGUgPT0gaSAmJiBmb3VuZC0+bV93YXJuZWQgPT0gMCkgewotIAkJCQl4bG9nKExfV0FSTklORywgIiVzIGV4cG9ydGVkIHRvIGJvdGggJXMgYW5kICVzLCAiCi0gCQkJCSAgICAgImFyYml0cmFyaWx5IGNob29zaW5nIG9wdGlvbnMgZnJvbSBmaXJzdCIsCi0tCQkJCSAgICAgcGF0aCwgZm91bmQtPm1fY2xpZW50LT5tX2hvc3RuYW1lLCBleHAtPm1fY2xpZW50LT5tX2hvc3RuYW1lLAotLQkJCQkgICAgIGRvbSk7Ci0rCQkJCSAgICAgcGF0aCwgZm91bmQtPm1fY2xpZW50LT5tX2hvc3RuYW1lLCBleHAtPm1fY2xpZW50LT5tX2hvc3RuYW1lKTsKLSAJCQkJZm91bmQtPm1fd2FybmVkID0gMTsKLSAJCQl9Ci0gCQl9Ci1JbmRleDogbmZzLXV0aWxzLTIuMy4zL3V0aWxzL21vdW50ZC9tb3VudGQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5mcy11dGlscy0yLjMuMy5vcmlnL3V0aWxzL21vdW50ZC9tb3VudGQuYwotKysrIG5mcy11dGlscy0yLjMuMy91dGlscy9tb3VudGQvbW91bnRkLmMKLUBAIC0yMTMsNyArMjEzLDcgQEAgc3RhdGljIHZvaWQKLSBzaWdfaHVwIChpbnQgc2lnKQotIHsKLSAJLyogZG9uJ3QgZXhpdCBvbiBTSUdIVVAgKi8KLS0JeGxvZyAoTF9OT1RJQ0UsICJSZWNlaXZlZCBTSUdIVVAuLi4gSWdub3JpbmcuXG4iLCBzaWcpOwotKwl4bG9nIChMX05PVElDRSwgIlJlY2VpdmVkIFNJR0hVUCglZCkuLi4gSWdub3JpbmcuXG4iLCBzaWcpOwotIAlyZXR1cm47Ci0gfQotIAotSW5kZXg6IG5mcy11dGlscy0yLjMuMy91dGlscy9zdGF0ZC9ybXRjYWxsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZnMtdXRpbHMtMi4zLjMub3JpZy91dGlscy9zdGF0ZC9ybXRjYWxsLmMKLSsrKyBuZnMtdXRpbHMtMi4zLjMvdXRpbHMvc3RhdGQvcm10Y2FsbC5jCi1AQCAtMjQ3LDcgKzI0Nyw3IEBAIHByb2Nlc3NfcmVwbHkoRkRfU0VUX1RZUEUgKnJmZHMpCi0gCQl4bG9nX3dhcm4oIiVzOiBzZXJ2aWNlICVkIG5vdCByZWdpc3RlcmVkIG9uIGxvY2FsaG9zdCIsCi0gCQkJX19mdW5jX18sIE5MX01ZX1BST0cobHApKTsKLSAJfSBlbHNlIHsKLS0JCXhsb2coRF9HRU5FUkFMLCAiJXM6IENhbGxiYWNrIHRvICVzIChmb3IgJWQpIHN1Y2NlZWRlZCIsCi0rCQl4bG9nKERfR0VORVJBTCwgIiVzOiBDYWxsYmFjayB0byAlcyAoZm9yICVzKSBzdWNjZWVkZWQiLAotIAkJCV9fZnVuY19fLCBOTF9NWV9OQU1FKGxwKSwgTkxfTU9OX05BTUUobHApKTsKLSAJfQotIAlubGlzdF9mcmVlKCZub3RpZnksIGxwKTsKLUluZGV4OiBuZnMtdXRpbHMtMi4zLjMvdXRpbHMvc3RhdGQvc3ZjX3J1bi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmZzLXV0aWxzLTIuMy4zLm9yaWcvdXRpbHMvc3RhdGQvc3ZjX3J1bi5jCi0rKysgbmZzLXV0aWxzLTIuMy4zL3V0aWxzL3N0YXRkL3N2Y19ydW4uYwotQEAgLTUzLDYgKzUzLDcgQEAKLSAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8dGltZS5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlICJzdGF0ZC5oIgotICNpbmNsdWRlICJub3RsaXN0LmgiCi0gCi1AQCAtMTA0LDggKzEwNSw4IEBAIG15X3N2Y19ydW4oaW50IHNvY2tmZCkKLSAKLSAJCQl0di50dl9zZWMgID0gTkxfV0hFTihub3RpZnkpIC0gbm93OwotIAkJCXR2LnR2X3VzZWMgPSAwOwotLQkJCXhsb2coRF9HRU5FUkFMLCAiV2FpdGluZyBmb3IgcmVwbHkuLi4gKHRpbWVvICVkKSIsCi0tCQkJCQkJCXR2LnR2X3NlYyk7Ci0rCQkJeGxvZyhEX0dFTkVSQUwsICJXYWl0aW5nIGZvciByZXBseS4uLiAodGltZW8gJWpkKSIsCi0rCQkJCQkJCShpbnRtYXhfdCl0di50dl9zZWMpOwotIAkJCXNlbHJldCA9IHNlbGVjdChGRF9TRVRTSVpFLCAmcmVhZGZkcywKLSAJCQkJKHZvaWQgKikgMCwgKHZvaWQgKikgMCwgJnR2KTsKLSAJCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9jbGFuZy13YXJuaW5ncy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL2NsYW5nLXdhcm5pbmdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNDAwZmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9jbGFuZy13YXJuaW5ncy5wYXRjaApAQCAtMCwwICsxLDYxIEBACitEZXRlY3Qgd2FybmluZyBvcHRpb25zIGR1cmluZyBjb25maWd1cmUKKworQ2VydGFpbiBvcHRpb25zIG1heWJlIGNvbXBpbGVyIHNwZWNpZmljIHRoZXJlZm9yZSBpdHMgYmV0dGVyCit0byBkZXRlY3QgdGhlbSBiZWZvcmUgdXNlLgorCituZnNfZXJyb3IgY29waWVzIHRoZSBmb3JtYXQgc3RyaW5nIGFuZCBhcHBlbmRzIG5ld2xpbmUgdG8gaXQKK2J1dCBjb21waWxlciBjYW4gZm9yZ2V0IHRoYXQgaXQgd2FzIGZvcm1hdCBzdHJpbmcgc2luY2UgaXRzIG5vdAorc2FtZSBmbXQgc3RyaW5nIHRoYXQgd2FzIHBhc3NlZC4gSWdub3JlIHRoZSB3YXJuaW5nCisKK1dkaXNjYXJkZWQtcXVhbGlmaWVycyBpcyBnY2Mgc3BlY2lmaWMgYW5kIHRoaXMgaXMgbm8gbG9uZ2VyIG5lZWRlZAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNTk5LDcgKzU5OSw2IEBAIG15X2FtX2NmbGFncz0iXAorICAtV2Vycm9yPXBhcmVudGhlc2VzIFwKKyAgLVdlcnJvcj1hZ2dyZWdhdGUtcmV0dXJuIFwKKyAgLVdlcnJvcj11bnVzZWQtcmVzdWx0IFwKKy0gLVduby1jYXN0LWZ1bmN0aW9uLXR5cGUgXAorICAtZm5vLXN0cmljdC1hbGlhc2luZyBcCisgIgorIAorQEAgLTYxOSw5ICs2MTgsMTAgQEAgQ0hFQ0tfQ0NTVVBQT1JUKFstV2Vycm9yPWZvcm1hdC1vdmVyZmxvdworIENIRUNLX0NDU1VQUE9SVChbLVdlcnJvcj1pbnQtY29udmVyc2lvbl0sIFtmbGcyXSkKKyBDSEVDS19DQ1NVUFBPUlQoWy1XZXJyb3I9aW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXNdLCBbZmxnM10pCisgQ0hFQ0tfQ0NTVVBQT1JUKFstV2Vycm9yPW1pc2xlYWRpbmctaW5kZW50YXRpb25dLCBbZmxnNF0pCisrQ0hFQ0tfQ0NTVVBQT1JUKFstV25vLWNhc3QtZnVuY3Rpb24tdHlwZV0sIFtmbGc1XSkKKyBBWF9HQ0NfRlVOQ19BVFRSSUJVVEUoW2Zvcm1hdF0pCisgCistQUNfU1VCU1QoW0FNX0NGTEFHU10sIFsiJG15X2FtX2NmbGFncyAkZmxnMSAkZmxnMiAkZmxnMyAkZmxnNCJdKQorK0FDX1NVQlNUKFtBTV9DRkxBR1NdLCBbIiRteV9hbV9jZmxhZ3MgJGZsZzEgJGZsZzIgJGZsZzMgJGZsZzQgJGZsZzUiXSkKKyAKKyAjIE1ha2Ugc3VyZSB0aGF0ICRBQ0xPQ0FMX0ZMQUdTIGFyZSB1c2VkIGR1cmluZyBhIHJlYnVpbGQKKyBBQ19TVUJTVChbQUNMT0NBTF9BTUZMQUdTXSwgWyItSSAkYWNfbWFjcm9fZGlyIFwkKEFDTE9DQUxfRkxBR1MpIl0pCistLS0gYS9zdXBwb3J0L25mcy94Y29tbW9uLmMKKysrKyBiL3N1cHBvcnQvbmZzL3hjb21tb24uYworQEAgLTk4LDcgKzk4LDEwIEBAIG5mc19lcnJvciAoY29uc3QgY2hhciAqZm10LCAuLi4pIHsKKyAKKyAgICAgIGZtdDIgPSB4c3RyY29uY2F0MiAoZm10LCAiXG4iKTsKKyAgICAgIHZhX3N0YXJ0IChhcmdzLCBmbXQpOworKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdmb3JtYXQtbm9ubGl0ZXJhbCIKKyAgICAgIHZmcHJpbnRmIChzdGRlcnIsIGZtdDIsIGFyZ3MpOworKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisgICAgICB2YV9lbmQgKGFyZ3MpOworICAgICAgZnJlZSAoZm10Mik7CisgfQorLS0tIGEvdXRpbHMvbW91bnQvc3Ryb3B0cy5jCisrKysgYi91dGlscy9tb3VudC9zdHJvcHRzLmMKK0BAIC0xMDk0LDkgKzEwOTQsNyBAQCBzdGF0aWMgaW50IG5mc21vdW50X2ZnKHN0cnVjdCBuZnNtb3VudF9pCisgCQlpZiAobmZzX3RyeV9tb3VudChtaSkpCisgCQkJcmV0dXJuIEVYX1NVQ0NFU1M7CisgCistI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Rpc2NhcmRlZC1xdWFsaWZpZXJzIgorIAkJaWYgKGVycm5vID09IEVCVVNZICYmIGlzX21vdW50cG9pbnQobWktPm5vZGUpKSB7CistI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyB3YXJuaW5nICItV2Rpc2NhcmRlZC1xdWFsaWZpZXJzIgorIAkJCS8qCisgCQkJICogRUJVU1kgY2FuIGhhcHBlbiB3aGVuIG1vdW50aW5nIGEgZmlsZXN5c3RlbSB0aGF0CisgCQkJICogaXMgYWxyZWFkeSBtb3VudGVkIG9yIHdoZW4gdGhlIGNvbnRleHQ9IGFyZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvbmZzLXV0aWxzLW11c2wtcmVzX3F1ZXJ5ZG9tYWluLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvbmZzLXV0aWxzLW11c2wtcmVzX3F1ZXJ5ZG9tYWluLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjFmNWVkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL25mcy11dGlscy1tdXNsLXJlc19xdWVyeWRvbWFpbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gY2FhMTkyMzExOTZkNzM1NDE0NDU3MjhlNjgxM2M4ZmE3MDM0NWFjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAyNiBKdW4gMjAxOCAxNTo1OTowMCArMDgwMAotU3ViamVjdDogW1BBVENIXSBuZnMtdXRpbHM6IDIuMS4xIC0+IDIuMy4xCi0KLUZpeGVkOgotY29uZmlndXJlOiBlcnJvcjogcmVzX3F1ZXJ5ZG9tYWluIG5lZWRlZAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2h0dHBzOi8vZ2l0aHViLmNvbS9hbHBpbmVsaW51eC9hcG9ydHMvYmxvYi9tYXN0ZXIvbWFpbi9uZnMtdXRpbHMvbXVzbC1jb25maWd1cmVfYWMucGF0Y2hdCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBjb25maWd1cmUuYWMgfCA5ICsrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDUwMDAyYjQuLmRjYWRiMjMgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTU4MiwxMCArNTgyLDEwIEBAIG15X2FtX2NmbGFncz0iXAotICAtV2FsbCBcCi0gIC1XZXh0cmEgXAotICAkcnBjZ2VuX2NmbGFncyBcCi0tIC1XZXJyb3I9bWlzc2luZy1wcm90b3R5cGVzIFwKLS0gLVdlcnJvcj1taXNzaW5nLWRlY2xhcmF0aW9ucyBcCi0rIC1XbWlzc2luZy1wcm90b3R5cGVzIFwKLSsgLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyBcCi0gIC1XZXJyb3I9Zm9ybWF0PTIgXAotLSAtV2Vycm9yPXVuZGVmIFwKLSsgLVd1bmRlZiBcCi0gIC1XZXJyb3I9bWlzc2luZy1pbmNsdWRlLWRpcnMgXAotICAtV2Vycm9yPXN0cmljdC1hbGlhc2luZz0yIFwKLSAgLVdlcnJvcj1pbml0LXNlbGYgXAotQEAgLTYxNCwxMCArNjE0LDkgQEAgQUNfREVGVU4oW0NIRUNLX0NDU1VQUE9SVF0sIFsKLSAKLSBDSEVDS19DQ1NVUFBPUlQoWy1XZXJyb3I9Zm9ybWF0LW92ZXJmbG93PTJdLCBbZmxnMV0pCi0gQ0hFQ0tfQ0NTVVBQT1JUKFstV2Vycm9yPWludC1jb252ZXJzaW9uXSwgW2ZsZzJdKQotLUNIRUNLX0NDU1VQUE9SVChbLVdlcnJvcj1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlc10sIFtmbGczXSkKLSBDSEVDS19DQ1NVUFBPUlQoWy1XZXJyb3I9bWlzbGVhZGluZy1pbmRlbnRhdGlvbl0sIFtmbGc0XSkKLSAKLS1BQ19TVUJTVChbQU1fQ0ZMQUdTXSwgWyIkbXlfYW1fY2ZsYWdzICRmbGcxICRmbGcyICRmbGczICRmbGc0Il0pCi0rQUNfU1VCU1QoW0FNX0NGTEFHU10sIFsiJG15X2FtX2NmbGFncyAkZmxnMSAkZmxnMiAkZmxnNCJdKQotIAotICMgTWFrZSBzdXJlIHRoYXQgJEFDTE9DQUxfRkxBR1MgYXJlIHVzZWQgZHVyaW5nIGEgcmVidWlsZAotIEFDX1NVQlNUKFtBQ0xPQ0FMX0FNRkxBR1NdLCBbIi1JICRhY19tYWNyb19kaXIgXCQoQUNMT0NBTF9GTEFHUykiXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMi40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViMzJiY2MuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMi40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJ1c2Vyc3BhY2UgdXRpbGl0aWVzIGZvciBrZXJuZWwgbmZzIgotREVTQ1JJUFRJT04gPSAiVGhlIG5mcy11dGlscyBwYWNrYWdlIHByb3ZpZGVzIGEgZGFlbW9uIGZvciB0aGUga2VybmVsIFwKLU5GUyBzZXJ2ZXIgYW5kIHJlbGF0ZWQgdG9vbHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL25mcy5zb3VyY2Vmb3JnZS5uZXQvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLUxJQ0VOU0UgPSAiTUlUICYgR1BMdjIrICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTVmM2E5M2E1YzNjNzg4OGRlNjIzYjQ2ZWEwODVhODQiCi0KLSMgdXRpbC1saW51eCBmb3IgbGliYmxraWQKLURFUEVORFMgPSAibGliY2FwIGxpYmV2ZW50IHV0aWwtbGludXggc3FsaXRlMyBsaWJ0aXJwYyIKLVJERVBFTkRTXyR7UE59ID0gIiR7UE59LWNsaWVudCIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtbmZzZCIKLQotaW5oZXJpdCB1c2VyYWRkCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0tY2xpZW50IgotVVNFUkFERF9QQVJBTV8ke1BOfS1jbGllbnQgPSAiLS1zeXN0ZW0gIC0taG9tZS1kaXIgL3Zhci9saWIvbmZzIFwKLQkJCSAgICAgIC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgcnBjdXNlciIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL25mcy11dGlscy8ke1BWfS9uZnMtdXRpbHMtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL25mc3NlcnZlciBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnNjb21tb24gXAotICAgICAgICAgICBmaWxlOi8vbmZzLXV0aWxzLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vbmZzLXNlcnZlci5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL25mcy1tb3VudGQuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnMtc3RhdGQuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9wcm9jLWZzLW5mc2QubW91bnQgXAotICAgICAgICAgICBmaWxlOi8vbmZzLXV0aWxzLWRlYmlhbml6ZS1zdGFydC1zdGF0ZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idWdmaXgtYWRqdXN0LXN0YXRkLXNlcnZpY2UtbmFtZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNhY2hlaW8tdXNlLWludG1heF90LWZvci1mb3JtYXR0ZWQtSU8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY2xhbmctZm9ybWF0LXN0cmluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLWZpeC11bmRlZmluZWQtZnVuY3Rpb24tZm9yLWxpYm5zbS5hLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtYnVpbGQtdG9vbHMtd2l0aC1DQ19GT1JfQlVJTEQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtaW5jbHVkZS1vcmRlci1iZXR3ZWVuLWNvbmZpZy5oLWFuZC1zdGF0LmgucGF0Y2ggXAotIgotU1JDX1VSSV9hcHBlbmRfbGliYy1nbGliYyA9ICIgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLURvLW5vdC1mYXRhbGl6ZS1XbWlzc2luZy1wcm90b3R5cGVzLnBhdGNoIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vbmZzLXV0aWxzLW11c2wtcmVzX3F1ZXJ5ZG9tYWluLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTYxZWZlNDY5ZWMxYjA2ZjFjNzUwYmQ4N2Y4YmE2ZGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODUyNzRhZGE5NDQ3OWIxYmViYTlmOGVlZmZkMTlmNDc3YzUzYTY3MTBiOTk5OGQxMTkyYzgwNzg1NDA4NzczNiIKLQotIyBPbmx5IGtlcm5lbC1tb2R1bGUtbmZzZCBpcyByZXF1aXJlZCBoZXJlIChidXQgY2FuIGJlIGJ1aWx0LWluKSAgLSB0aGUgbmZzZCBtb2R1bGUgd2lsbAotIyBwdWxsIGluIHRoZSByZW1haW5kZXIgb2YgdGhlIGRlcGVuZGVuY2llcy4KLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1jbGllbnQiCi1JTklUU0NSSVBUX05BTUUgPSAibmZzc2VydmVyIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCi1JTklUU0NSSVBUX05BTUVfJHtQTn0tY2xpZW50ID0gIm5mc2NvbW1vbiIKLUlOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LWNsaWVudCA9ICJkZWZhdWx0cyAxOSAyMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQgcGtnY29uZmlnCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tY2xpZW50IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm5mcy1zZXJ2ZXIuc2VydmljZSBuZnMtbW91bnRkLnNlcnZpY2UiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tY2xpZW50ID0gIm5mcy1zdGF0ZC5zZXJ2aWNlIgotCi0jIC0tZW5hYmxlLXV1aWQgaXMgbmVlZCBmb3IgY3Jvc3MtY29tcGlsaW5nCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXN0YXRkdXNlcj1ycGN1c2VyIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1tb3VudGNvbmZpZyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbGlibW91bnQtbW91bnQgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXV1aWQgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1nc3MgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uZnNkY2x0cmFjayBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXN0YXRkcGF0aD0vdmFyL2xpYi9uZnMvc3RhdGQgXAotICAgICAgICAgICAgICAgIgotCi1DRkxBR1MgKz0gIi1Xbm8tZXJyb3I9Zm9ybWF0LW92ZXJmbG93IgotCi1QQUNLQUdFQ09ORklHID8/PSAidGNwLXdyYXBwZXJzIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpYmMtbXVzbCA9ICJ0Y3Atd3JhcHBlcnMiCi1QQUNLQUdFQ09ORklHW3RjcC13cmFwcGVyc10gPSAiLS13aXRoLXRjcC13cmFwcGVycywtLXdpdGhvdXQtdGNwLXdyYXBwZXJzLHRjcC13cmFwcGVycyIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0jIGxpYmRldm1hcHBlciBpcyBhdmFpbGFibGUgaW4gbWV0YS1vZQotUEFDS0FHRUNPTkZJR1tuZnN2NDFdID0gIi0tZW5hYmxlLW5mc3Y0MSwtLWRpc2FibGUtbmZzdjQxLGxpYmRldm1hcHBlciIKLSMga2V5dXRpbHMgaXMgYXZhaWxhYmxlIGluIG1ldGEtc2VjdXJpdHkKLVBBQ0tBR0VDT05GSUdbbmZzdjRdID0gIi0tZW5hYmxlLW5mc3Y0LC0tZGlzYWJsZS1uZnN2NCxrZXl1dGlscyIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWNsaWVudCAke1BOfS1tb3VudCAke1BOfS1zdGF0cyIKLQotQ09ORkZJTEVTXyR7UE59LWNsaWVudCArPSAiJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL2V0YWIgXAotCQkJICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3JtdGFiIFwKLQkJCSAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy94dGFiIFwKLQkJCSAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9zdGF0ZC9zdGF0ZSBcCi0JCQkgICAke3N5c2NvbmZkaXJ9L25mc21vdW50LmNvbmYiCi0KLUZJTEVTXyR7UE59LWNsaWVudCA9ICIke3NiaW5kaXJ9LypzdGF0ZCBcCi0JCSAgICAgICR7c2JpbmRpcn0vcnBjLmlkbWFwZCAke3NiaW5kaXJ9L3NtLW5vdGlmeSBcCi0JCSAgICAgICR7c2JpbmRpcn0vc2hvd21vdW50ICR7c2JpbmRpcn0vbmZzc3RhdCBcCi0JCSAgICAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcyBcCi0JCSAgICAgICR7c3lzY29uZmRpcn0vbmZzLXV0aWxzLmNvbmYgXAotCQkgICAgICAke3N5c2NvbmZkaXJ9L25mc21vdW50LmNvbmYgXAotCQkgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9uZnNjb21tb24gXAotCQkgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL25mcy1zdGF0ZC5zZXJ2aWNlIgotUkRFUEVORFNfJHtQTn0tY2xpZW50ID0gIiR7UE59LW1vdW50IHJwY2JpbmQiCi0KLUZJTEVTXyR7UE59LW1vdW50ID0gIiR7YmFzZV9zYmluZGlyfS8qbW91bnQubmZzKiIKLQotRklMRVNfJHtQTn0tc3RhdHMgPSAiJHtzYmluZGlyfS9tb3VudHN0YXRzICR7c2JpbmRpcn0vbmZzaW9zdGF0IgotUkRFUEVORFNfJHtQTn0tc3RhdHMgPSAicHl0aG9uMy1jb3JlIgotCi1GSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAgICAgc2VkIC1pIC1lICdzLHNiaW5kaXIgPSAvc2JpbixzYmluZGlyID0gJHtiYXNlX3NiaW5kaXJ9LGcnIFwKLSAgICAgICAgICAgICR7U30vdXRpbHMvbW91bnQvTWFrZWZpbGUuYW0KLX0KLQotIyBNYWtlIGNsZWFuIG5lZWRlZCBiZWNhdXNlIHRoZSBwYWNrYWdlIGNvbWVzIHdpdGgKLSMgcHJlY29tcGlsZWQgNjQtYml0IG9iamVjdHMgdGhhdCBicmVhayB0aGUgYnVpbGQKLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQltYWtlIGNsZWFuCi19Ci0KLSMgV29ya3Mgb24gc3lzdGVtZCBvbmx5Ci1ISUdIX1JMSU1JVF9OT0ZJTEUgPz89ICI0MDk2IgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnNzZXJ2ZXIgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL25mc3NlcnZlcgotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L25mc2NvbW1vbiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbmZzY29tbW9uCi0KLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnMtdXRpbHMuY29uZiAke0R9JHtzeXNjb25mZGlyfQotCWluc3RhbGwgLW0gMDc1NSAke1N9L3V0aWxzL21vdW50L25mc21vdW50LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uZnMtc2VydmVyLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmZzLW1vdW50ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25mcy1zdGF0ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotCXNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0JCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLQkJLWUgJ3MsQEhJR0hfUkxJTUlUX05PRklMRUAsJHtISUdIX1JMSU1JVF9OT0ZJTEV9LGcnIFwKLQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotCSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9wcm9jLWZzLW5mc2QubW91bnQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0JICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvCi0JICAgIGxuIC1zZiAuLi9wcm9jLWZzLW5mc2QubW91bnQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvcHJvYy1mcy1uZnNkLm1vdW50Ci0JZmkKLQotCSMga2VybmVsIGNvZGUgYXMgb2YgMy44IGhhcmQtY29kZXMgdGhpcyBwYXRoIGFzIGEgZGVmYXVsdAotCWluc3RhbGwgLWQgJHtEfS92YXIvbGliL25mcy92NHJlY292ZXJ5Ci0KLQkjIGNob3duIHRoZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMKLQljaG93biAtUiBycGN1c2VyOnJwY3VzZXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9zdGF0ZAotCWNobW9kIDA2NDQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9zdGF0ZC9zdGF0ZQotCi0gICAgICAgICMgTWFrZSBweXRob24gdG9vbHMgdXNlIHB5dGhvbiAzCi0gICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbi4qLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtzYmluZGlyfS9tb3VudHN0YXRzICR7RH0ke3NiaW5kaXJ9L25mc2lvc3RhdAotCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjQuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliZGI2ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjQuMy5iYgpAQCAtMCwwICsxLDE0NyBAQAorU1VNTUFSWSA9ICJ1c2Vyc3BhY2UgdXRpbGl0aWVzIGZvciBrZXJuZWwgbmZzIgorREVTQ1JJUFRJT04gPSAiVGhlIG5mcy11dGlscyBwYWNrYWdlIHByb3ZpZGVzIGEgZGFlbW9uIGZvciB0aGUga2VybmVsIFwKK05GUyBzZXJ2ZXIgYW5kIHJlbGF0ZWQgdG9vbHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL25mcy5zb3VyY2Vmb3JnZS5uZXQvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiTUlUICYgR1BMdjIrICYgQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTVmM2E5M2E1YzNjNzg4OGRlNjIzYjQ2ZWEwODVhODQiCisKKyMgdXRpbC1saW51eCBmb3IgbGliYmxraWQKK0RFUEVORFMgPSAibGliY2FwIGxpYmV2ZW50IHV0aWwtbGludXggc3FsaXRlMyBsaWJ0aXJwYyIKK1JERVBFTkRTXyR7UE59ID0gIiR7UE59LWNsaWVudCIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtbmZzZCIKKworaW5oZXJpdCB1c2VyYWRkCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0tY2xpZW50IgorVVNFUkFERF9QQVJBTV8ke1BOfS1jbGllbnQgPSAiLS1zeXN0ZW0gIC0taG9tZS1kaXIgL3Zhci9saWIvbmZzIFwKKwkJCSAgICAgIC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgcnBjdXNlciIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL25mcy11dGlscy8ke1BWfS9uZnMtdXRpbHMtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL25mc3NlcnZlciBcCisgICAgICAgICAgIGZpbGU6Ly9uZnNjb21tb24gXAorICAgICAgICAgICBmaWxlOi8vbmZzLXV0aWxzLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vbmZzLXNlcnZlci5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL25mcy1tb3VudGQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9uZnMtc3RhdGQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9wcm9jLWZzLW5mc2QubW91bnQgXAorICAgICAgICAgICBmaWxlOi8vbmZzLXV0aWxzLWRlYmlhbml6ZS1zdGFydC1zdGF0ZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9idWdmaXgtYWRqdXN0LXN0YXRkLXNlcnZpY2UtbmFtZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNhY2hlaW8tdXNlLWludG1heF90LWZvci1mb3JtYXR0ZWQtSU8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLWZ1bmN0aW9uLWZvci1saWJuc20uYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jbGFuZy13YXJuaW5ncy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNjAyMGM3NmY1MzFlZDk3ZjMxNDU1MTQ5MDFlMGU3YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZjY1ZmNlNWRkODM3MGNmZjllYWQ2N2JhYWM1YTZjZDY5YzM3NmRjYWRmZWYyNjRkYzJjNzhjOTA0ZjI2NTk5IgorCisjIE9ubHkga2VybmVsLW1vZHVsZS1uZnNkIGlzIHJlcXVpcmVkIGhlcmUgKGJ1dCBjYW4gYmUgYnVpbHQtaW4pICAtIHRoZSBuZnNkIG1vZHVsZSB3aWxsCisjIHB1bGwgaW4gdGhlIHJlbWFpbmRlciBvZiB0aGUgZGVwZW5kZW5jaWVzLgorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWNsaWVudCIKK0lOSVRTQ1JJUFRfTkFNRSA9ICJuZnNzZXJ2ZXIiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKK0lOSVRTQ1JJUFRfTkFNRV8ke1BOfS1jbGllbnQgPSAibmZzY29tbW9uIgorSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0tY2xpZW50ID0gImRlZmF1bHRzIDE5IDIxIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQgc3lzdGVtZCBwa2djb25maWcKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1jbGllbnQiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibmZzLXNlcnZlci5zZXJ2aWNlIG5mcy1tb3VudGQuc2VydmljZSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1jbGllbnQgPSAibmZzLXN0YXRkLnNlcnZpY2UiCisKKyMgLS1lbmFibGUtdXVpZCBpcyBuZWVkIGZvciBjcm9zcy1jb21waWxpbmcKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtc3RhdGR1c2VyPXJwY3VzZXIgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLW1vdW50Y29uZmlnIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1saWJtb3VudC1tb3VudCBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtdXVpZCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdzcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW5mc2RjbHRyYWNrIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtc3RhdGRwYXRoPS92YXIvbGliL25mcy9zdGF0ZCBcCisgICAgICAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ0Y3Atd3JhcHBlcnMgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gInRjcC13cmFwcGVycyIKK1BBQ0tBR0VDT05GSUdbdGNwLXdyYXBwZXJzXSA9ICItLXdpdGgtdGNwLXdyYXBwZXJzLC0td2l0aG91dC10Y3Atd3JhcHBlcnMsdGNwLXdyYXBwZXJzIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKKyMgbGliZGV2bWFwcGVyIGlzIGF2YWlsYWJsZSBpbiBtZXRhLW9lCitQQUNLQUdFQ09ORklHW25mc3Y0MV0gPSAiLS1lbmFibGUtbmZzdjQxLC0tZGlzYWJsZS1uZnN2NDEsbGliZGV2bWFwcGVyLGxpYmRldm1hcHBlciIKKyMga2V5dXRpbHMgaXMgYXZhaWxhYmxlIGluIG1ldGEtb2UKK1BBQ0tBR0VDT05GSUdbbmZzdjRdID0gIi0tZW5hYmxlLW5mc3Y0LC0tZGlzYWJsZS1uZnN2NCxrZXl1dGlscyxweXRob24zLWNvcmUiCisKK1BBQ0tBR0VTID0rICIke1BOfS1jbGllbnQgJHtQTn0tbW91bnQgJHtQTn0tc3RhdHMiCisKK0NPTkZGSUxFU18ke1BOfS1jbGllbnQgKz0gIiR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9ldGFiIFwKKwkJCSAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9ybXRhYiBcCisJCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMveHRhYiBcCisJCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvc3RhdGQvc3RhdGUgXAorCQkJICAgJHtzeXNjb25mZGlyfS9uZnNtb3VudC5jb25mIgorCitGSUxFU18ke1BOfS1jbGllbnQgPSAiJHtzYmluZGlyfS8qc3RhdGQgXAorCQkgICAgICAke3NiaW5kaXJ9L3JwYy5pZG1hcGQgJHtzYmluZGlyfS9zbS1ub3RpZnkgXAorCQkgICAgICAke3NiaW5kaXJ9L3Nob3dtb3VudCAke3NiaW5kaXJ9L25mc3N0YXQgXAorCQkgICAgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMgXAorCQkgICAgICAke3N5c2NvbmZkaXJ9L25mcy11dGlscy5jb25mIFwKKwkJICAgICAgJHtzeXNjb25mZGlyfS9uZnNtb3VudC5jb25mIFwKKwkJICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvbmZzY29tbW9uIFwKKwkJICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9uZnMtc3RhdGQuc2VydmljZSIKK1JERVBFTkRTXyR7UE59LWNsaWVudCA9ICIke1BOfS1tb3VudCBycGNiaW5kIgorCitGSUxFU18ke1BOfS1tb3VudCA9ICIke2Jhc2Vfc2JpbmRpcn0vKm1vdW50Lm5mcyoiCisKK0ZJTEVTXyR7UE59LXN0YXRzID0gIiR7c2JpbmRpcn0vbW91bnRzdGF0cyAke3NiaW5kaXJ9L25mc2lvc3RhdCIKK1JERVBFTkRTXyR7UE59LXN0YXRzID0gInB5dGhvbjMtY29yZSIKKworRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vbGlibmZzaWRtYXAvKi5hIgorCitGSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9ICR7bGliZGlyfS9saWJuZnNpZG1hcC8iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICAgICBzZWQgLWkgLWUgJ3Msc2JpbmRpciA9IC9zYmluLHNiaW5kaXIgPSAke2Jhc2Vfc2JpbmRpcn0sZycgXAorICAgICAgICAgICAgJHtTfS91dGlscy9tb3VudC9NYWtlZmlsZS5hbQorfQorCisjIE1ha2UgY2xlYW4gbmVlZGVkIGJlY2F1c2UgdGhlIHBhY2thZ2UgY29tZXMgd2l0aAorIyBwcmVjb21waWxlZCA2NC1iaXQgb2JqZWN0cyB0aGF0IGJyZWFrIHRoZSBidWlsZAorZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCW1ha2UgY2xlYW4KK30KKworIyBXb3JrcyBvbiBzeXN0ZW1kIG9ubHkKK0hJR0hfUkxJTUlUX05PRklMRSA/Pz0gIjQwOTYiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L25mc3NlcnZlciAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbmZzc2VydmVyCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbmZzY29tbW9uICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9uZnNjb21tb24KKworCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L25mcy11dGlscy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9CisJaW5zdGFsbCAtbSAwNzU1ICR7U30vdXRpbHMvbW91bnQvbmZzbW91bnQuY29uZiAke0R9JHtzeXNjb25mZGlyfQorCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25mcy1zZXJ2ZXIuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uZnMtbW91bnRkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmZzLXN0YXRkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisJc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAorCQktZSAncyxASElHSF9STElNSVRfTk9GSUxFQCwke0hJR0hfUkxJTUlUX05PRklMRX0sZycgXAorCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisJICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Byb2MtZnMtbmZzZC5tb3VudCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKwkgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy8KKwkgICAgbG4gLXNmIC4uL3Byb2MtZnMtbmZzZC5tb3VudCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9wcm9jLWZzLW5mc2QubW91bnQKKwlmaQorCisJIyBrZXJuZWwgY29kZSBhcyBvZiAzLjggaGFyZC1jb2RlcyB0aGlzIHBhdGggYXMgYSBkZWZhdWx0CisJaW5zdGFsbCAtZCAke0R9L3Zhci9saWIvbmZzL3Y0cmVjb3ZlcnkKKworCSMgY2hvd24gdGhlIGRpcmVjdG9yaWVzIGFuZCBmaWxlcworCWNob3duIC1SIHJwY3VzZXI6cnBjdXNlciAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3N0YXRkCisJY2htb2QgMDY0NCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3N0YXRkL3N0YXRlCisKKyAgICAgICAgIyBNYWtlIHB5dGhvbiB0b29scyB1c2UgcHl0aG9uIDMKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLiosIyEke2JpbmRpcn0vcHl0aG9uMywnICR7RH0ke3NiaW5kaXJ9L21vdW50c3RhdHMgJHtEfSR7c2JpbmRpcn0vbmZzaW9zdGF0CisKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvMDAwMS11cHN0cmVhbS1maXgtaW50ZWdlci1vdmVyZmxvdy1pbi1YTVNTLXByaXZhdGUta2V5LXBhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC8wMDAxLXVwc3RyZWFtLWZpeC1pbnRlZ2VyLW92ZXJmbG93LWluLVhNU1MtcHJpdmF0ZS1rZXktcGEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyNjViZTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC8wMDAxLXVwc3RyZWFtLWZpeC1pbnRlZ2VyLW92ZXJmbG93LWluLVhNU1MtcHJpdmF0ZS1rZXktcGEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDIwMTRmYWQzZDI4MDkwYjU5ZDJmOGEwOTcxMTY2YzA2ZTVmYTZkYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDE4IE9jdCAyMDE5IDE0OjU2OjU4ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVwc3RyZWFtOiBmaXggaW50ZWdlciBvdmVyZmxvdyBpbiBYTVNTIHByaXZhdGUga2V5IHBhcnNpbmcuCi0KLVJlcG9ydGVkIGJ5IEFkYW0gWmFicm9ja2kgdmlhIFNlY3VyaVRlYW0ncyBTU0ggcHJvZ3JhbS4KLQotTm90ZSB0aGF0IHRoaXMgY29kZSBpcyBleHBlcmltZW50YWwgYW5kIG5vdCBjb21waWxlZCBieSBkZWZhdWx0LgotCi1vayBtYXJrdXNACi0KLU9wZW5CU0QtQ29tbWl0LUlEOiBjZDAzNjE4OTZkMTVlOGExYmFjNDk1YWM1ODNmZjA2NWZmY2EyYmUxCi0KLVNpZ25lZC1vZmYtYnk6ICJkam1Ab3BlbmJzZC5vcmciIDxkam1Ab3BlbmJzZC5vcmc+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVuc3NoL29wZW5zc2gtcG9ydGFibGUvY29tbWl0L2E1NDZiMTdiYmFlYjEyYmVhYzRjOWFlZWQ1NmY3NGE0MmIxOGE5M2FdCi1DVkU6IENWRS0yMDE5LTE2OTA1Ci0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNzaGtleS14bXNzLmMgfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NzaGtleS14bXNzLmMgYi9zc2hrZXkteG1zcy5jCi1pbmRleCBhYWFlNzAyLi5jNTc2ODFhIDEwMDY0NAotLS0tIGEvc3Noa2V5LXhtc3MuYwotKysrIGIvc3Noa2V5LXhtc3MuYwotQEAgLTk3Nyw3ICs5NzcsOCBAQCBzc2hrZXlfeG1zc19kZWNyeXB0X3N0YXRlKGNvbnN0IHN0cnVjdCBzc2hrZXkgKmssIHN0cnVjdCBzc2hidWYgKmVuY29kZWQsCi0gCQlnb3RvIG91dDsKLSAJfQotIAkvKiBjaGVjayB0aGF0IGFuIGFwcHJvcHJpYXRlIGFtb3VudCBvZiBhdXRoIGRhdGEgaXMgcHJlc2VudCAqLwotLQlpZiAoc3NoYnVmX2xlbihlbmNvZGVkKSA8IGVuY3J5cHRlZF9sZW4gKyBhdXRobGVuKSB7Ci0rCWlmIChzc2hidWZfbGVuKGVuY29kZWQpIDwgYXV0aGxlbiB8fAotKwkgICAgc3NoYnVmX2xlbihlbmNvZGVkKSAtIGF1dGhsZW4gPCBlbmNyeXB0ZWRfbGVuKSB7Ci0gCQlyID0gU1NIX0VSUl9JTlZBTElEX0ZPUk1BVDsKLSAJCWdvdG8gb3V0OwotIAl9Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9ydW4tcHRlc3QKaW5kZXggZGFmNjJjYy4uYWUwM2U5MiAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9ydW4tcHRlc3QKQEAgLTEsNiArMSw3IEBACiAjIS9iaW4vc2gKIAogZXhwb3J0IFRFU1RfU0hFTEw9c2gKK2V4cG9ydCBTS0lQX1VOSVQ9MQogCiBjZCByZWdyZXNzCiBzZWQgLWkgIi9cdFx0YWdlbnQtcHRyYWNlIC9kIiBNYWtlZmlsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkLnNvY2tldCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoZC5zb2NrZXQKaW5kZXggMTJjMzliMi4uOGQ3NmQ2MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkLnNvY2tldAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGQuc29ja2V0CkBAIC0xLDUgKzEsNiBAQAogW1VuaXRdCiBDb25mbGljdHM9c3NoZC5zZXJ2aWNlCitXYW50cz1zc2hkZ2Vua2V5cy5zZXJ2aWNlCiAKIFtTb2NrZXRdCiBFeGVjU3RhcnRQcmU9QEJBU0VfQklORElSQC9ta2RpciAtcCAvdmFyL3J1bi9zc2hkCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGRALnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGRALnNlcnZpY2UKaW5kZXggOWQ4M2RmYi4uNDIyNDUwYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkQC5zZXJ2aWNlCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoZEAuc2VydmljZQpAQCAtMSwxMyArMSwxMSBAQAogW1VuaXRdCiBEZXNjcmlwdGlvbj1PcGVuU1NIIFBlci1Db25uZWN0aW9uIERhZW1vbgotV2FudHM9c3NoZGdlbmtleXMuc2VydmljZQogQWZ0ZXI9c3NoZGdlbmtleXMuc2VydmljZQogCiBbU2VydmljZV0KIEVudmlyb25tZW50PSJTU0hEX09QVFM9IgogRW52aXJvbm1lbnRGaWxlPS0vZXRjL2RlZmF1bHQvc3NoCiBFeGVjU3RhcnQ9LUBTQklORElSQC9zc2hkIC1pICRTU0hEX09QVFMKLUV4ZWNSZWxvYWQ9QEJBU0VfQklORElSQC9raWxsIC1IVVAgJE1BSU5QSUQKIFN0YW5kYXJkSW5wdXQ9c29ja2V0CiBTdGFuZGFyZEVycm9yPXN5c2xvZwogS2lsbE1vZGU9cHJvY2VzcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF84LjBwMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfOC4wcDEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmZmJjOWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF84LjBwMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi1TVU1NQVJZID0gIkEgc3VpdGUgb2Ygc2VjdXJpdHktcmVsYXRlZCBuZXR3b3JrIHV0aWxpdGllcyBiYXNlZCBvbiBcCi10aGUgU1NIIHByb3RvY29sIGluY2x1ZGluZyB0aGUgc3NoIGNsaWVudCBhbmQgc3NoZCBzZXJ2ZXIiCi1ERVNDUklQVElPTiA9ICJTZWN1cmUgcmxvZ2luL3JzaC9yY3AvdGVsbmV0IHJlcGxhY2VtZW50IChPcGVuU1NIKSBcCi1Tc2ggKFNlY3VyZSBTaGVsbCkgaXMgYSBwcm9ncmFtIGZvciBsb2dnaW5nIGludG8gYSByZW1vdGUgbWFjaGluZSBcCi1hbmQgZm9yIGV4ZWN1dGluZyBjb21tYW5kcyBvbiBhIHJlbW90ZSBtYWNoaW5lLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNzaC5jb20vIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIkJTRCAmIElTQyAmIE1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTQyOTY1OGM2NjEyZjNhOWIxMjkzNzgyMzY2YWIyOWQ4IgotCi1ERVBFTkRTID0gInpsaWIgb3BlbnNzbCB2aXJ0dWFsL2NyeXB0IgotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLm9wZW5ic2Qub3JnL3B1Yi9PcGVuQlNEL09wZW5TU0gvcG9ydGFibGUvb3BlbnNzaC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vc3NoZF9jb25maWcgXAotICAgICAgICAgICBmaWxlOi8vc3NoX2NvbmZpZyBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0IFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKLSAgICAgICAgICAgZmlsZTovL3NzaGQuc29ja2V0IFwKLSAgICAgICAgICAgZmlsZTovL3NzaGRALnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vc3NoZGdlbmtleXMuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuOTlfc3NoZCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vZml4LXBvdGVudGlhbC1zaWduZWQtb3ZlcmZsb3ctaW4tcG9pbnRlci1hcml0aG1hdGljLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NzaGRfY2hlY2tfa2V5cyBcCi0gICAgICAgICAgIGZpbGU6Ly9hZGQtdGVzdC1zdXBwb3J0LWZvci1idXN5Ym94LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdXBzdHJlYW0tZml4LWludGVnZXItb3ZlcmZsb3ctaW4tWE1TUy1wcml2YXRlLWtleS1wYS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiZjA1MGYwMDJmZTUxMGUxZGFlY2QzOTA0NGUxMTIyZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiZDk0Mzg3OWU2OTQ5OGU4MDMxZWI2YjdmNDRkMDhjZGMzN2Q1OWE3YWI2ODlhYTBiNDM3MzIwYzM0ODFmZDY4IgotCi1QQU1fU1JDX1VSSSA9ICJmaWxlOi8vc3NoZCIKLQotaW5oZXJpdCB1c2VyYWRkIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgc3lzdGVtZAotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCi1VU0VSQUREX1BBUkFNXyR7UE59LXNzaGQgPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLWhvbWUtZGlyIC92YXIvcnVuL3NzaGQgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBzc2hkIgotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgotSU5JVFNDUklQVF9OQU1FXyR7UE59LXNzaGQgPSAic3NoZCIKLUlOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXNzaGQgPSAiZGVmYXVsdHMgOSIKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNzaGQgPSAic3NoZC5zb2NrZXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAotCi1FWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKLQotIyBsb2dpbiBwYXRoIGlzIGhhcmRjb2RlZCBpbiBzc2hkCi1FWFRSQV9PRUNPTkYgPSAiJ0xPR0lOX1BST0dSQU09JHtiYXNlX2JpbmRpcn0vbG9naW4nIFwKLSAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLXdpdGgtcGFtJywgJy0td2l0aG91dC1wYW0nLCBkKX0gXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC16bGliLXZlcnNpb24tY2hlY2sgXAotICAgICAgICAgICAgICAgIC0td2l0aC1wcml2c2VwLXBhdGg9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3NoZCBcCi0gICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vc3NoIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgteGF1dGg9JHtiaW5kaXJ9L3hhdXRoIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3RyaXAgXAotICAgICAgICAgICAgICAgICIKLQotIyBtdXNsIGRvZXNuJ3QgaW1wbGVtZW50IHd0bXAvdXRtcAotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS13dG1wIgotCi0jIFNpbmNlIHdlIGRvIG5vdCBkZXBlbmQgb24gbGliYnNkLCB3ZSBkbyBub3Qgd2FudCBjb25maWd1cmUgdG8gdXNlIGl0Ci0jIGp1c3QgYmVjYXVzZSBpdCBmaW5kcyBsaWJ1dGlsLmguICBCdXQsIHNwZWNpZnlpbmcgLS1kaXNhYmxlLWxpYnV0aWwKLSMgY2F1c2VzIGNvbXBpbGUgZXJyb3JzLCBzby4uLgotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9ic2RfbGlidXRpbF9oPW5vIGFjX2N2X2hlYWRlcl9saWJ1dGlsX2g9bm8iCi0KLSMgcGFzc3dkIHBhdGggaXMgaGFyZGNvZGVkIGluIHNzaGQKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BBVEhfUEFTU1dEX1BST0c9JHtiaW5kaXJ9L3Bhc3N3ZCIKLQotIyBXZSBkb24ndCB3YW50IHRvIGRlcGVuZCBvbiBsaWJibG9ja2ZpbGUKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfbWFpbGxvY2tfaD1ubyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCWV4cG9ydCBMRD0iJHtDQ30iCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZF9jb25maWcgJHtCfS8KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hfY29uZmlnICR7Qn0vCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgICAgICMgc2tpcCByZWdyZXNzL3VuaXR0ZXN0cy8gYmluYXJpZXM6IHRoaXMgd2lsbCBzaWxlbnRseSBza2lwCi0gICAgICAgICMgdW5pdHRlc3RzIGluIHJ1bi1wdGVzdHMgd2hpY2ggaXMgZ29vZCBiZWNhdXNlIHRoZXkgYXJlIHNvIHNsb3cuCi0gICAgICAgIG9lX3J1bm1ha2UgcmVncmVzcy9tb2RwaXBlIHJlZ3Jlc3Mvc2V0dWlkLWFsbG93ZWQgcmVncmVzcy9uZXRjYXQgXAotICAgICAgICAgICAgICAgICAgIHJlZ3Jlc3MvY2hlY2stcGVybSByZWdyZXNzL21rZHRlbXAKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgotCQlpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL3NzaGQKLQkJc2VkIC1pIC1lICdzOiNVc2VQQU0gbm86VXNlUEFNIHllczonICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZwotCWZpCi0KLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iIF07IHRoZW4KLQkJc2VkIC1pIC1lICdzOiNYMTFGb3J3YXJkaW5nIG5vOlgxMUZvcndhcmRpbmcgeWVzOicgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnCi0JZmkKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAotCXJtIC1mICR7RH0ke2JpbmRpcn0vc2xvZ2luICR7RH0ke2RhdGFkaXJ9L1NzaC5iaW4KLQlybWRpciAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3NoZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4gJHtEfSR7bG9jYWxzdGF0ZWRpcn0KLQlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcwotCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjk5X3NzaGQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQKLQlpbnN0YWxsIC1tIDA3NTUgJHtTfS9jb250cmliL3NzaC1jb3B5LWlkICR7RH0ke2JpbmRpcn0KLQotCSMgQ3JlYXRlIGNvbmZpZyBmaWxlcyBmb3IgcmVhZC1vbmx5IHJvb3RmcwotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3NoCi0JaW5zdGFsbCAtbSA2NDQgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCXNlZCAtaSAnL0hvc3RLZXkvZCcgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0JZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfcnNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0JZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZWNkc2Ffa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKLQllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9lZDI1NTE5X2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZC5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkQC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZGdlbmtleXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotCQktZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgXAotCQktZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAotCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zc2hkLnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UKLQotCXNlZCAtaSAtZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAotCQkke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAotCi0JaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0vc3NoZF9jaGVja19rZXlzICR7RH0ke2xpYmV4ZWNkaXJ9LyR7QlBOfS9zc2hkX2NoZWNrX2tleXMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0Jc2VkIC1pIC1lICJzfF5TRlRQU0VSVkVSPS4qfFNGVFBTRVJWRVI9JHtsaWJleGVjZGlyfS9zZnRwLXNlcnZlcnwiIHJlZ3Jlc3MvdGVzdC1leGVjLnNoCi0JY3AgLXIgcmVncmVzcyAke0R9JHtQVEVTVF9QQVRIfQotfQotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0ta2V5Z2VuICR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1zZnRwICR7UE59LW1pc2MgJHtQTn0tc2Z0cC1zZXJ2ZXIiCi1GSUxFU18ke1BOfS1zY3AgPSAiJHtiaW5kaXJ9L3NjcC4ke0JQTn0iCi1GSUxFU18ke1BOfS1zc2ggPSAiJHtiaW5kaXJ9L3NzaC4ke0JQTn0gJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKLUZJTEVTXyR7UE59LXNzaGQgPSAiJHtzYmluZGlyfS9zc2hkICR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSIKLUZJTEVTXyR7UE59LXNzaGQgKz0gIiR7c3lzY29uZmRpcn0vc3NoL21vZHVsaSAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQgJHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkIgotRklMRVNfJHtQTn0tc3NoZCArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vc3NoZF9jaGVja19rZXlzIgotRklMRVNfJHtQTn0tc2Z0cCA9ICIke2JpbmRpcn0vc2Z0cCIKLUZJTEVTXyR7UE59LXNmdHAtc2VydmVyID0gIiR7bGliZXhlY2Rpcn0vc2Z0cC1zZXJ2ZXIiCi1GSUxFU18ke1BOfS1taXNjID0gIiR7YmluZGlyfS9zc2gqICR7bGliZXhlY2Rpcn0vc3NoKiIKLUZJTEVTXyR7UE59LWtleWdlbiA9ICIke2JpbmRpcn0vc3NoLWtleWdlbiIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1rZXlnZW4iCi1SREVQRU5EU18ke1BOfS1zc2hkICs9ICIke1BOfS1rZXlnZW4gJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1rZXlpbml0IHBhbS1wbHVnaW4tbG9naW51aWQnLCAnJywgZCl9IgotUlJFQ09NTUVORFNfJHtQTn0tc3NoZF9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBybmctdG9vbHMiCi0jIGdkYiB3b3VsZCBtYWtlIGF0dGFjaC1wdHJhY2UgdGVzdCBwYXNzIHJhdGhlciB0aGFuIHNraXAgYnV0IG5vdCB3b3J0aCB0aGUgYnVpbGQgZGVwZW5kZW5jaWVzCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tc2Z0cCAke1BOfS1taXNjICR7UE59LXNmdHAtc2VydmVyIG1ha2Ugc2VkIHN1ZG8gY29yZXV0aWxzIgotCi1SUFJPVklERVNfJHtQTn0tc3NoID0gInNzaCIKLVJQUk9WSURFU18ke1BOfS1zc2hkID0gInNzaGQiCi0KLVJDT05GTElDVFNfJHtQTn0gPSAiZHJvcGJlYXIiCi1SQ09ORkxJQ1RTXyR7UE59LXNzaGQgPSAiZHJvcGJlYXIiCi0KLUNPTkZGSUxFU18ke1BOfS1zc2hkID0gIiR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnIgotQ09ORkZJTEVTXyR7UE59LXNzaCA9ICIke3N5c2NvbmZkaXJ9L3NzaC9zc2hfY29uZmlnIgotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICI5MCIKLUFMVEVSTkFUSVZFXyR7UE59LXNjcCA9ICJzY3AiCi1BTFRFUk5BVElWRV8ke1BOfS1zc2ggPSAic3NoIgotCi1CQkNMQVNTRVhURU5EICs9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzguMnAxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF84LjJwMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODc5ZWZjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF84LjJwMS5iYgpAQCAtMCwwICsxLDE3MCBAQAorU1VNTUFSWSA9ICJBIHN1aXRlIG9mIHNlY3VyaXR5LXJlbGF0ZWQgbmV0d29yayB1dGlsaXRpZXMgYmFzZWQgb24gXAordGhlIFNTSCBwcm90b2NvbCBpbmNsdWRpbmcgdGhlIHNzaCBjbGllbnQgYW5kIHNzaGQgc2VydmVyIgorREVTQ1JJUFRJT04gPSAiU2VjdXJlIHJsb2dpbi9yc2gvcmNwL3RlbG5ldCByZXBsYWNlbWVudCAoT3BlblNTSCkgXAorU3NoIChTZWN1cmUgU2hlbGwpIGlzIGEgcHJvZ3JhbSBmb3IgbG9nZ2luZyBpbnRvIGEgcmVtb3RlIG1hY2hpbmUgXAorYW5kIGZvciBleGVjdXRpbmcgY29tbWFuZHMgb24gYSByZW1vdGUgbWFjaGluZS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zc2guY29tLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJCU0QgJiBJU0MgJiBNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT0xOGQ5ZTVhOGIzZGQxNzkwZDczNTAyZjUwNDI2ZDRkMyIKKworREVQRU5EUyA9ICJ6bGliIG9wZW5zc2wgdmlydHVhbC9jcnlwdCIKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5vcGVuYnNkLm9yZy9wdWIvT3BlbkJTRC9PcGVuU1NIL3BvcnRhYmxlL29wZW5zc2gtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3NzaGRfY29uZmlnIFwKKyAgICAgICAgICAgZmlsZTovL3NzaF9jb25maWcgXAorICAgICAgICAgICBmaWxlOi8vaW5pdCBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hkLnNvY2tldCBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hkQC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3NzaGRnZW5rZXlzLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjk5X3NzaGQgXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1wb3RlbnRpYWwtc2lnbmVkLW92ZXJmbG93LWluLXBvaW50ZXItYXJpdGhtYXRpYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hkX2NoZWNrX2tleXMgXAorICAgICAgICAgICBmaWxlOi8vYWRkLXRlc3Qtc3VwcG9ydC1mb3ItYnVzeWJveC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMDc2ZTY0MTNlOGRiZTU2ZDMzODQ4YzEwNTRhYzA5MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MzkyNTE1MWU2Y2Y2Y2VlMTQ1MDE5MGMwZTlhZjRkYzM2YjQxYzEyNzM3NjE5ZWRmZjhiY2ViZGZmNjRlNjcxIgorCitQQU1fU1JDX1VSSSA9ICJmaWxlOi8vc3NoZCIKKworaW5oZXJpdCBtYW5wYWdlcyB1c2VyYWRkIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgc3lzdGVtZAorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCitVU0VSQUREX1BBUkFNXyR7UE59LXNzaGQgPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLWhvbWUtZGlyIC92YXIvcnVuL3NzaGQgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBzc2hkIgorSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgorSU5JVFNDUklQVF9OQU1FXyR7UE59LXNzaGQgPSAic3NoZCIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXNzaGQgPSAiZGVmYXVsdHMgOSIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNzaGQgPSAic3NoZC5zb2NrZXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1trZXJiZXJvc10gPSAiLS13aXRoLWtlcmJlcm9zNSwtLXdpdGhvdXQta2VyYmVyb3M1LGtyYjUiCitQQUNLQUdFQ09ORklHW2xkbnNdID0gIi0td2l0aC1sZG5zLC0td2l0aG91dC1sZG5zLGxkbnMiCitQQUNLQUdFQ09ORklHW2xpYmVkaXRdID0gIi0td2l0aC1saWJlZGl0LC0td2l0aG91dC1saWJlZGl0LGxpYmVkaXQiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLXdpdGgtbWFudHlwZT1tYW4sLS13aXRoLW1hbnR5cGU9Y2F0IgorCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKKworIyBsb2dpbiBwYXRoIGlzIGhhcmRjb2RlZCBpbiBzc2hkCitFWFRSQV9PRUNPTkYgPSAiJ0xPR0lOX1BST0dSQU09JHtiYXNlX2JpbmRpcn0vbG9naW4nIFwKKyAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLXdpdGgtcGFtJywgJy0td2l0aG91dC1wYW0nLCBkKX0gXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC16bGliLXZlcnNpb24tY2hlY2sgXAorICAgICAgICAgICAgICAgIC0td2l0aC1wcml2c2VwLXBhdGg9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3NoZCBcCisgICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vc3NoIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgteGF1dGg9JHtiaW5kaXJ9L3hhdXRoIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3RyaXAgXAorICAgICAgICAgICAgICAgICIKKworIyBtdXNsIGRvZXNuJ3QgaW1wbGVtZW50IHd0bXAvdXRtcAorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS13dG1wIgorCisjIFNpbmNlIHdlIGRvIG5vdCBkZXBlbmQgb24gbGliYnNkLCB3ZSBkbyBub3Qgd2FudCBjb25maWd1cmUgdG8gdXNlIGl0CisjIGp1c3QgYmVjYXVzZSBpdCBmaW5kcyBsaWJ1dGlsLmguICBCdXQsIHNwZWNpZnlpbmcgLS1kaXNhYmxlLWxpYnV0aWwKKyMgY2F1c2VzIGNvbXBpbGUgZXJyb3JzLCBzby4uLgorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9ic2RfbGlidXRpbF9oPW5vIGFjX2N2X2hlYWRlcl9saWJ1dGlsX2g9bm8iCisKKyMgcGFzc3dkIHBhdGggaXMgaGFyZGNvZGVkIGluIHNzaGQKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BBVEhfUEFTU1dEX1BST0c9JHtiaW5kaXJ9L3Bhc3N3ZCIKKworIyBXZSBkb24ndCB3YW50IHRvIGRlcGVuZCBvbiBsaWJibG9ja2ZpbGUKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfbWFpbGxvY2tfaD1ubyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCWV4cG9ydCBMRD0iJHtDQ30iCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZF9jb25maWcgJHtCfS8KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hfY29uZmlnICR7Qn0vCit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgICAgICMgc2tpcCByZWdyZXNzL3VuaXR0ZXN0cy8gYmluYXJpZXM6IHRoaXMgd2lsbCBzaWxlbnRseSBza2lwCisgICAgICAgICMgdW5pdHRlc3RzIGluIHJ1bi1wdGVzdHMgd2hpY2ggaXMgZ29vZCBiZWNhdXNlIHRoZXkgYXJlIHNvIHNsb3cuCisgICAgICAgIG9lX3J1bm1ha2UgcmVncmVzcy9tb2RwaXBlIHJlZ3Jlc3Mvc2V0dWlkLWFsbG93ZWQgcmVncmVzcy9uZXRjYXQgXAorICAgICAgICAgICAgICAgICAgIHJlZ3Jlc3MvY2hlY2stcGVybSByZWdyZXNzL21rZHRlbXAKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL3NzaGQKKwkJc2VkIC1pIC1lICdzOiNVc2VQQU0gbm86VXNlUEFNIHllczonICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZworCWZpCisKKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iIF07IHRoZW4KKwkJc2VkIC1pIC1lICdzOiNYMTFGb3J3YXJkaW5nIG5vOlgxMUZvcndhcmRpbmcgeWVzOicgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnCisJZmkKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAorCXJtIC1mICR7RH0ke2JpbmRpcn0vc2xvZ2luICR7RH0ke2RhdGFkaXJ9L1NzaC5iaW4KKwlybWRpciAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3NoZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4gJHtEfSR7bG9jYWxzdGF0ZWRpcn0KKwlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjk5X3NzaGQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQKKwlpbnN0YWxsIC1tIDA3NTUgJHtTfS9jb250cmliL3NzaC1jb3B5LWlkICR7RH0ke2JpbmRpcn0KKworCSMgQ3JlYXRlIGNvbmZpZyBmaWxlcyBmb3IgcmVhZC1vbmx5IHJvb3RmcworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3NoCisJaW5zdGFsbCAtbSA2NDQgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCXNlZCAtaSAnL0hvc3RLZXkvZCcgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfcnNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZWNkc2Ffa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKKwllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9lZDI1NTE5X2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZC5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkQC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZGdlbmtleXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorCQktZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgXAorCQktZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAorCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zc2hkLnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UKKworCXNlZCAtaSAtZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAorCQkke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAorCisJaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0vc3NoZF9jaGVja19rZXlzICR7RH0ke2xpYmV4ZWNkaXJ9LyR7QlBOfS9zc2hkX2NoZWNrX2tleXMKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisJc2VkIC1pIC1lICJzfF5TRlRQU0VSVkVSPS4qfFNGVFBTRVJWRVI9JHtsaWJleGVjZGlyfS9zZnRwLXNlcnZlcnwiIHJlZ3Jlc3MvdGVzdC1leGVjLnNoCisJY3AgLXIgcmVncmVzcyAke0R9JHtQVEVTVF9QQVRIfQorfQorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitQQUNLQUdFUyA9KyAiJHtQTn0ta2V5Z2VuICR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1zZnRwICR7UE59LW1pc2MgJHtQTn0tc2Z0cC1zZXJ2ZXIiCitGSUxFU18ke1BOfS1zY3AgPSAiJHtiaW5kaXJ9L3NjcC4ke0JQTn0iCitGSUxFU18ke1BOfS1zc2ggPSAiJHtiaW5kaXJ9L3NzaC4ke0JQTn0gJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKK0ZJTEVTXyR7UE59LXNzaGQgPSAiJHtzYmluZGlyfS9zc2hkICR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSIKK0ZJTEVTXyR7UE59LXNzaGQgKz0gIiR7c3lzY29uZmRpcn0vc3NoL21vZHVsaSAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQgJHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkIgorRklMRVNfJHtQTn0tc3NoZCArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vc3NoZF9jaGVja19rZXlzIgorRklMRVNfJHtQTn0tc2Z0cCA9ICIke2JpbmRpcn0vc2Z0cCIKK0ZJTEVTXyR7UE59LXNmdHAtc2VydmVyID0gIiR7bGliZXhlY2Rpcn0vc2Z0cC1zZXJ2ZXIiCitGSUxFU18ke1BOfS1taXNjID0gIiR7YmluZGlyfS9zc2gqICR7bGliZXhlY2Rpcn0vc3NoKiIKK0ZJTEVTXyR7UE59LWtleWdlbiA9ICIke2JpbmRpcn0vc3NoLWtleWdlbiIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1rZXlnZW4iCitSREVQRU5EU18ke1BOfS1zc2hkICs9ICIke1BOfS1rZXlnZW4gJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1rZXlpbml0IHBhbS1wbHVnaW4tbG9naW51aWQnLCAnJywgZCl9IgorUlJFQ09NTUVORFNfJHtQTn0tc3NoZF9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBybmctdG9vbHMiCisjIGdkYiB3b3VsZCBtYWtlIGF0dGFjaC1wdHJhY2UgdGVzdCBwYXNzIHJhdGhlciB0aGFuIHNraXAgYnV0IG5vdCB3b3J0aCB0aGUgYnVpbGQgZGVwZW5kZW5jaWVzCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tc2Z0cCAke1BOfS1taXNjICR7UE59LXNmdHAtc2VydmVyIG1ha2Ugc2VkIHN1ZG8gY29yZXV0aWxzIgorCitSUFJPVklERVNfJHtQTn0tc3NoID0gInNzaCIKK1JQUk9WSURFU18ke1BOfS1zc2hkID0gInNzaGQiCisKK1JDT05GTElDVFNfJHtQTn0gPSAiZHJvcGJlYXIiCitSQ09ORkxJQ1RTXyR7UE59LXNzaGQgPSAiZHJvcGJlYXIiCisKK0NPTkZGSUxFU18ke1BOfS1zc2hkID0gIiR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnIgorQ09ORkZJTEVTXyR7UE59LXNzaCA9ICIke3N5c2NvbmZkaXJ9L3NzaC9zc2hfY29uZmlnIgorCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICI5MCIKK0FMVEVSTkFUSVZFXyR7UE59LXNjcCA9ICJzY3AiCitBTFRFUk5BVElWRV8ke1BOfS1zc2ggPSAic3NoIgorCitCQkNMQVNTRVhURU5EICs9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL3JlcHJvZHVjaWJsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvcmVwcm9kdWNpYmxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyNDI2MGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL3JlcHJvZHVjaWJsZS5wYXRjaApAQCAtMCwwICsxLDMyIEBACitUaGUgdmFsdWUgZm9yIHBlcmxfYXJjaG5hbWUgY2FuIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBob3N0LCBlLmcuIAoreDg2XzY0LWxpbnV4LWdudS10aHJlYWQtbXVsdGkgb3IgeDg2XzY0LWxpbnV4LXRocmVhZC1tdWx0aSB3aGljaAorbWFrZXMgdGhlIHB0ZXN0IHBhY2thZ2Ugbm9uLXJlcHJvZHVjaWJsZS4gSXRzIHVudXNlZCBvdGhlciB0aGFuIAordGhlc2UgcmVmZXJlbmNlcyBzbyBkcm9wIGl0LgorCitSUCAyMDIwLzIvNgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorCitJbmRleDogb3BlbnNzbC0xLjEuMWQvQ29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3BlbnNzbC0xLjEuMWQub3JpZy9Db25maWd1cmUKKysrKyBvcGVuc3NsLTEuMS4xZC9Db25maWd1cmUKK0BAIC0yODYsNyArMjg2LDcgQEAgaWYgKGRlZmluZWQgZW52KCRsb2NhbF9jb25maWdfZW52bmFtZSkpCisgIyBTYXZlIGF3YXkgcGVybCBjb21tYW5kIGluZm9ybWF0aW9uCisgJGNvbmZpZ3twZXJsX2NtZH0gPSAkXlg7CisgJGNvbmZpZ3twZXJsX3ZlcnNpb259ID0gJENvbmZpZ3t2ZXJzaW9ufTsKKy0kY29uZmlne3BlcmxfYXJjaG5hbWV9ID0gJENvbmZpZ3thcmNobmFtZX07CisrIyRjb25maWd7cGVybF9hcmNobmFtZX0gPSAkQ29uZmlne2FyY2huYW1lfTsKKyAKKyAkY29uZmlne3ByZWZpeH09IiI7CisgJGNvbmZpZ3tvcGVuc3NsZGlyfT0iIjsKK0BAIC0yNTE3LDcgKzI1MTcsNyBAQCBfX19fXworICAgICAgICAgICAgICAgICAgICAgICAgICAgQHskY29uZmlne3Blcmxhcmd2fX0pLCAiXG4iOworICAgICAgICAgcHJpbnQgIlxuUGVybCBpbmZvcm1hdGlvbjpcblxuIjsKKyAgICAgICAgIHByaW50ICcgICAgJywkY29uZmlne3BlcmxfY21kfSwiXG4iOworLSAgICAgICAgcHJpbnQgJyAgICAnLCRjb25maWd7cGVybF92ZXJzaW9ufSwnIGZvciAnLCRjb25maWd7cGVybF9hcmNobmFtZX0sIlxuIjsKKysgICAgICAgIHByaW50ICcgICAgJywkY29uZmlne3BlcmxfdmVyc2lvbn0sIlxuIjsKKyAgICAgfQorICAgICBpZiAoJGR1bXAgfHwgJG9wdGlvbnMpIHsKKyAgICAgICAgIG15ICRsb25nZXN0ID0gMDsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4xLjFkLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMWQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4MTllMTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMWQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMDQgKzAsMCBAQAotU1VNTUFSWSA9ICJTZWN1cmUgU29ja2V0IExheWVyIgotREVTQ1JJUFRJT04gPSAiU2VjdXJlIFNvY2tldCBMYXllciAoU1NMKSBiaW5hcnkgYW5kIHJlbGF0ZWQgY3J5cHRvZ3JhcGhpYyB0b29scy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9uZXdzL3Z1bG5lcmFiaWxpdGllcy5odG1sIgotU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCi0KLSMgIm9wZW5zc2wiIGhlcmUgYWN0dWFsbHkgbWVhbnMgYm90aCBPcGVuU1NMIGFuZCBTU0xlYXkgbGljZW5zZXMgYXBwbHkKLSMgKHNlZSBtZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9PcGVuU1NMIHRvIHdoaWNoICJvcGVuc3NsIiBpcyBTUERYTElDRU5TRU1BUHBlZCkKLUxJQ0VOU0UgPSAib3BlbnNzbCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQzNDNlNjJmYzljODMzNzEwYmJiZWQyNWYyNzM2NGM4IgotCi1ERVBFTkRTID0gImhvc3RwZXJsLXJ1bnRpbWUtbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL29wZW5zc2wtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXNraXAtdGVzdF9zeW1ib2xfcHJlc2VuY2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZGluZm8tc3RyaXAtc3lzcm9vdC1hbmQtZGVidWctcHJlZml4LW1hcC1mcm9tLWNvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FmYWxnLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIFwKLSAgICAgICAgICAgZmlsZTovL2Vudmlyb25tZW50LmQtb3BlbnNzbC5zaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNiZTIwOTAwMGRiYzdlMWI5NWJjZGY0Nzk4MGEzYmFhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFlM2E5MWJjMWY5ZGZjZTAxYWYyNjAyNmY4NTZlMDY0ZWFiNGM4ZWUwYThmNDU3YjVhZTMwYjQwYjhiNzExZjIiCi0KLWluaGVyaXQgbGliX3BhY2thZ2UgbXVsdGlsaWJfaGVhZGVyIG11bHRpbGliX3NjcmlwdCBwdGVzdAotTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfS1iaW46JHtiaW5kaXJ9L2NfcmVoYXNoIgotCi1QQUNLQUdFQ09ORklHID89ICIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi0KLVBBQ0tBR0VDT05GSUdbY3J5cHRvZGV2LWxpbnV4XSA9ICJlbmFibGUtZGV2Y3J5cHRvZW5nLGRpc2FibGUtZGV2Y3J5cHRvZW5nLGNyeXB0b2Rldi1saW51eCIKLQotQiA9ICIke1dPUktESVJ9L2J1aWxkIgotZG9fY29uZmlndXJlW2NsZWFuZGlyc10gPSAiJHtCfSIKLQotI3wgLi9saWJjcnlwdG8uc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGdldGNvbnRleHQnCi0jfCAuL2xpYmNyeXB0by5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgc2V0Y29udGV4dCcKLSN8IC4vbGliY3J5cHRvLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBtYWtlY29udGV4dCcKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiBuby1hc3luYyIKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsX3Bvd2VycGM2NCA9ICIgbm8tYXNtIgotCi0jIGFkZGluZyBkZXZyYW5kb20gcHJldmVudHMgb3BlbnNzbCBmcm9tIHVzaW5nIGdldHJhbmRvbSgpIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgb24gb2xkZXIgZ2xpYmMgdmVyc2lvbnMKLSMgKG5hdGl2ZSB2ZXJzaW9ucyBjYW4gYmUgYnVpbHQgd2l0aCBuZXdlciBnbGliYywgYnV0IHRoZW4gcmVsb2NhdGVkIG9udG8gYSBzeXN0ZW0gd2l0aCBvbGRlciBnbGliYykKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRoLXJhbmQtc2VlZD1vcyxkZXZyYW5kb20iCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIi0td2l0aC1yYW5kLXNlZWQ9b3MsZGV2cmFuZG9tIgotCi0jIFJlbHlpbmcgb24gaGFyZGNvZGVkIGJ1aWx0LWluIHBhdGhzIGNhdXNlcyBvcGVuc3NsLW5hdGl2ZSB0byBub3QgYmUgcmVsb2NhdGVhYmxlIGZyb20gc3N0YXRlLgotQ0ZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1ET1BFTlNTTERJUj0vbm90L2J1aWx0aW4gLURFTkdJTkVTRElSPS9ub3QvYnVpbHRpbiIKLUNGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAtRE9QRU5TU0xESVI9L25vdC9idWlsdGluIC1ERU5HSU5FU0RJUj0vbm90L2J1aWx0aW4iCi0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0Jb3M9JHtIT1NUX09TfQotCWNhc2UgJG9zIGluCi0JbGludXgtZ251ZWFiaSB8XAotCWxpbnV4LWdudXNwZSB8XAotCWxpbnV4LW11c2xlYWJpIHxcCi0JbGludXgtbXVzbHNwZSB8XAotCWxpbnV4LW11c2wgKQotCQlvcz1saW51eAotCQk7OwotCSopCi0JCTs7Ci0JZXNhYwotCXRhcmdldD0iJG9zLSR7SE9TVF9BUkNIfSIKLQljYXNlICR0YXJnZXQgaW4KLQlsaW51eC1hcm0qKQotCQl0YXJnZXQ9bGludXgtYXJtdjQKLQkJOzsKLQlsaW51eC1hYXJjaDY0KikKLQkJdGFyZ2V0PWxpbnV4LWFhcmNoNjQKLQkJOzsKLQlsaW51eC1pPzg2IHwgbGludXgtdmlhYzMpCi0JCXRhcmdldD1saW51eC14ODYKLQkJOzsKLQlsaW51eC1nbnV4MzIteDg2XzY0IHwgbGludXgtbXVzbHgzMi14ODZfNjQgKQotCQl0YXJnZXQ9bGludXgteDMyCi0JCTs7Ci0JbGludXgtZ251NjQteDg2XzY0KQotCQl0YXJnZXQ9bGludXgteDg2XzY0Ci0JCTs7Ci0JbGludXgtbWlwcyB8IGxpbnV4LW1pcHNlbCkKLQkJIyBzcGVjaWZ5aW5nIFRBUkdFVF9DQ19BUkNIIHByZXZlbnRzIG9wZW5zc2wgZnJvbSAoaW5jb3JyZWN0bHkpIGFkZGluZyB0YXJnZXQgYXJjaGl0ZWN0dXJlIGZsYWdzCi0JCXRhcmdldD0ibGludXgtbWlwczMyICR7VEFSR0VUX0NDX0FSQ0h9IgotCQk7OwotCWxpbnV4LWdudW4zMi1taXBzKikKLQkJdGFyZ2V0PWxpbnV4LW1pcHM2NAotCQk7OwotCWxpbnV4LSotbWlwczY0IHwgbGludXgtbWlwczY0IHwgbGludXgtKi1taXBzNjRlbCB8IGxpbnV4LW1pcHM2NGVsKQotCQl0YXJnZXQ9bGludXg2NC1taXBzNjQKLQkJOzsKLQlsaW51eC1taWNyb2JsYXplKiB8IGxpbnV4LW5pb3MyKiB8IGxpbnV4LXNoMyB8IGxpbnV4LXNoNCB8IGxpbnV4LWFyYyopCi0JCXRhcmdldD1saW51eC1nZW5lcmljMzIKLQkJOzsKLQlsaW51eC1wb3dlcnBjKQotCQl0YXJnZXQ9bGludXgtcHBjCi0JCTs7Ci0JbGludXgtcG93ZXJwYzY0KQotCQl0YXJnZXQ9bGludXgtcHBjNjQKLQkJOzsKLQlsaW51eC1yaXNjdjMyKQotCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCi0JCTs7Ci0JbGludXgtcmlzY3Y2NCkKLQkJdGFyZ2V0PWxpbnV4LWdlbmVyaWM2NAotCQk7OwotCWxpbnV4LXNwYXJjIHwgbGludXgtc3VwZXJzcGFyYykKLQkJdGFyZ2V0PWxpbnV4LXNwYXJjdjkKLQkJOzsKLQllc2FjCi0KLQl1c2VwcmVmaXg9JHtwcmVmaXh9Ci0JaWYgWyAieCR1c2VwcmVmaXgiID0gIngiIF07IHRoZW4KLQkJdXNlcHJlZml4PS8KLQlmaQotCSMgV0FSTklORzogZG8gbm90IHNldCBjb21waWxlci9saW5rZXIgZmxhZ3MgKC1JLy1EIGV0Yy4pIGluIEVYVFJBX09FQ09ORiwgYXMgdGhleSB3aWxsIGZ1bGx5IHJlcGxhY2UgdGhlCi0JIyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgc2V0IGJ5IGJpdGJha2UuIEFkanVzdCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluc3RlYWQuCi0JUEVSTDVMSUI9IiR7U30vZXh0ZXJuYWwvcGVybC9UZXh0LVRlbXBsYXRlLTEuNDYvbGliLyIgXAotCXBlcmwgJHtTfS9Db25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9ICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gLS1wcmVmaXg9JHVzZXByZWZpeCAtLW9wZW5zc2xkaXI9JHtsaWJkaXJ9L3NzbC0xLjEgLS1saWJkaXI9JHtsaWJkaXJ9ICR0YXJnZXQKLQlwZXJsICR7Qn0vY29uZmlnZGF0YS5wbSAtLWR1bXAKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0Jb2VfcnVubWFrZSBERVNURElSPSIke0R9IiBNQU5ESVI9IiR7bWFuZGlyfSIgTUFOU1VGRklYPXNzbCBpbnN0YWxsCi0KLQlvZV9tdWx0aWxpYl9oZWFkZXIgb3BlbnNzbC9vcGVuc3NsY29uZi5oCi0KLQkjIENyZWF0ZSBTU0wgc3RydWN0dXJlIGZvciBwYWNrYWdlcyBzdWNoIGFzIGNhLWNlcnRpZmljYXRlcyB3aGljaAotCSMgY29udGFpbiBoYXJkLWNvZGVkIHBhdGhzIHRvIC9ldGMvc3NsLiBEZWJpYW4gZG9lcyB0aGUgc2FtZS4KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NzbAotCW12ICR7RH0ke2xpYmRpcn0vc3NsLTEuMS9jZXJ0cyBcCi0JICAgJHtEfSR7bGliZGlyfS9zc2wtMS4xL3ByaXZhdGUgXAotCSAgICR7RH0ke2xpYmRpcn0vc3NsLTEuMS9vcGVuc3NsLmNuZiBcCi0JICAgJHtEfSR7c3lzY29uZmRpcn0vc3NsLwotCi0JIyBBbHRob3VnaCBhYnNvbHV0ZSBzeW1saW5rcyB3b3VsZCBiZSBPSyBmb3IgdGhlIHRhcmdldCwgdGhleSBiZWNvbWUKLQkjIGludmFsaWQgaWYgbmF0aXZlIG9yIG5hdGl2ZXNkayBhcmUgcmVsb2NhdGVkIGZyb20gc3N0YXRlLgotCWxuIC1zZiAke0BvZS5wYXRoLnJlbGF0aXZlKCcke2xpYmRpcn0vc3NsLTEuMScsICcke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cycpfSAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvY2VydHMKLQlsbiAtc2YgJHtAb2UucGF0aC5yZWxhdGl2ZSgnJHtsaWJkaXJ9L3NzbC0xLjEnLCAnJHtzeXNjb25mZGlyfS9zc2wvcHJpdmF0ZScpfSAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvcHJpdmF0ZQotCWxuIC1zZiAke0BvZS5wYXRoLnJlbGF0aXZlKCcke2xpYmRpcn0vc3NsLTEuMScsICcke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZicpfSAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvb3BlbnNzbC5jbmYKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L29wZW5zc2wgXAotCSAgICBPUEVOU1NMX0NPTkY9JHtsaWJkaXJ9L3NzbC0xLjEvb3BlbnNzbC5jbmYgXAotCSAgICBTU0xfQ0VSVF9ESVI9JHtsaWJkaXJ9L3NzbC0xLjEvY2VydHMgXAotCSAgICBTU0xfQ0VSVF9GSUxFPSR7bGliZGlyfS9zc2wtMS4xL2NlcnQucGVtIFwKLQkgICAgT1BFTlNTTF9FTkdJTkVTPSR7bGliZGlyfS9lbmdpbmVzLTEuMQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgewotCW1rZGlyIC1wICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQKLQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2Vudmlyb25tZW50LmQtb3BlbnNzbC5zaCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL29wZW5zc2wuc2gKLQlzZWQgJ3N8L3Vzci9saWIvc3NsL3wvdXNyL2xpYi9zc2wtMS4xL3xnJyAtaSAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL29wZW5zc2wuc2gKLX0KLQotUFRFU1RfQlVJTERfSE9TVF9GSUxFUyArPSAiY29uZmlnZGF0YS5wbSIKLVBURVNUX0JVSUxEX0hPU1RfUEFUVEVSTiA9ICJwZXJsX3ZlcnNpb24gPSIKLWRvX2luc3RhbGxfcHRlc3QgKCkgewotCSMgUHJ1bmUgdGhlIGJ1aWxkIHRyZWUKLQlybSAtZiAke0J9L2Z1enovKi4qICR7Qn0vdGVzdC8qLioKLQotCWNwICR7U30vQ29uZmlndXJlICR7Qn0vY29uZmlnZGF0YS5wbSAke0R9JHtQVEVTVF9QQVRIfQotCWNwIC1yICR7U30vZXh0ZXJuYWwgJHtCfS90ZXN0ICR7U30vdGVzdCAke0J9L2Z1enogJHtTfS91dGlsICR7Qn0vdXRpbCAke0R9JHtQVEVTVF9QQVRIfQotCi0JIyBGb3IgdGVzdF9zaGxpYmxvYWQKLQlsbiAtcyAke2xpYmRpcn0vbGliY3J5cHRvLnNvLjEuMSAke0R9JHtQVEVTVF9QQVRIfS8KLQlsbiAtcyAke2xpYmRpcn0vbGlic3NsLnNvLjEuMSAke0R9JHtQVEVTVF9QQVRIfS8KLQotCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcwotCWxuIC1zICR7YmluZGlyfS9vcGVuc3NsICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKLQlpbnN0YWxsIC1tNjQ0ICR7U30vYXBwcy8qLnBlbSAke1N9L2FwcHMvKi5zcmwgJHtTfS9hcHBzL29wZW5zc2wuY25mICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKLQlpbnN0YWxsIC1tNzU1ICR7Qn0vYXBwcy9DQS5wbCAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCi0KLQlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L2VuZ2luZXMKLQlpbnN0YWxsIC1tNzU1ICR7Qn0vZW5naW5lcy9vc3NsdGVzdC5zbyAke0R9JHtQVEVTVF9QQVRIfS9lbmdpbmVzCi19Ci0KLSMgQWRkIHRoZSBvcGVuc3NsLmNuZiBmaWxlIHRvIHRoZSBvcGVuc3NsLWNvbmYgcGFja2FnZS4gTWFrZSB0aGUgbGliY3J5cHRvCi0jIHBhY2thZ2UgUlJFQ09NTUVORFMgb24gdGhpcyBwYWNrYWdlLiBUaGlzIHdpbGwgZW5hYmxlIHRoZSBjb25maWd1cmF0aW9uCi0jIGZpbGUgdG8gYmUgaW5zdGFsbGVkIGZvciBib3RoIHRoZSBvcGVuc3NsLWJpbiBwYWNrYWdlIGFuZCB0aGUgbGliY3J5cHRvCi0jIHBhY2thZ2Ugc2luY2UgdGhlIG9wZW5zc2wtYmluIHBhY2thZ2UgZGVwZW5kcyBvbiB0aGUgbGliY3J5cHRvIHBhY2thZ2UuCi0KLVBBQ0tBR0VTID0rICJsaWJjcnlwdG8gbGlic3NsIG9wZW5zc2wtY29uZiAke1BOfS1lbmdpbmVzICR7UE59LW1pc2MiCi0KLUZJTEVTX2xpYmNyeXB0byA9ICIke2xpYmRpcn0vbGliY3J5cHRvJHtTT0xJQlN9IgotRklMRVNfbGlic3NsID0gIiR7bGliZGlyfS9saWJzc2wke1NPTElCU30iCi1GSUxFU19vcGVuc3NsLWNvbmYgPSAiJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYiCi1GSUxFU18ke1BOfS1lbmdpbmVzID0gIiR7bGliZGlyfS9lbmdpbmVzLTEuMSIKLUZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3NzbC0xLjEvbWlzYyIKLUZJTEVTXyR7UE59ID0rICIke2xpYmRpcn0vc3NsLTEuMS8qIgotRklMRVNfJHtQTn1fYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgJHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL29wZW5zc2wuc2giCi0KLUNPTkZGSUxFU19vcGVuc3NsLWNvbmYgPSAiJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYiCi0KLVJSRUNPTU1FTkRTX2xpYmNyeXB0byArPSAib3BlbnNzbC1jb25mIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm9wZW5zc2wtYmluIHBlcmwgcGVybC1tb2R1bGVzIGJhc2giCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotQ1ZFX1BST0RVQ1QgPSAib3BlbnNzbDpvcGVuc3NsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMWYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMS4xZi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmEyYjQxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMWYuYmIKQEAgLTAsMCArMSwyMTEgQEAKK1NVTU1BUlkgPSAiU2VjdXJlIFNvY2tldCBMYXllciIKK0RFU0NSSVBUSU9OID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIgKFNTTCkgYmluYXJ5IGFuZCByZWxhdGVkIGNyeXB0b2dyYXBoaWMgdG9vbHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvbmV3cy92dWxuZXJhYmlsaXRpZXMuaHRtbCIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCisjICJvcGVuc3NsIiBoZXJlIGFjdHVhbGx5IG1lYW5zIGJvdGggT3BlblNTTCBhbmQgU1NMZWF5IGxpY2Vuc2VzIGFwcGx5CisjIChzZWUgbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvT3BlblNTTCB0byB3aGljaCAib3BlbnNzbCIgaXMgU1BEWExJQ0VOU0VNQVBwZWQpCitMSUNFTlNFID0gIm9wZW5zc2wiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kMzQzZTYyZmM5YzgzMzcxMGJiYmVkMjVmMjczNjRjOCIKKworREVQRU5EUyA9ICJob3N0cGVybC1ydW50aW1lLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9vcGVuc3NsLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1za2lwLXRlc3Rfc3ltYm9sX3ByZXNlbmNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGRpbmZvLXN0cmlwLXN5c3Jvb3QtYW5kLWRlYnVnLXByZWZpeC1tYXAtZnJvbS1jby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hZmFsZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZXByb2R1Y2libGUucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgXAorICAgICAgICAgICBmaWxlOi8vZW52aXJvbm1lbnQuZC1vcGVuc3NsLnNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTg2YzZiZmU2ZWNmYmE3YTViNDhjNDdmOGExNjczZDBmM2IwZTViYTJlMjU2MDJkZDIzYjYyOTk3NWRhM2YzNSIKKworaW5oZXJpdCBsaWJfcGFja2FnZSBtdWx0aWxpYl9oZWFkZXIgbXVsdGlsaWJfc2NyaXB0IHB0ZXN0CitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWJpbjoke2JpbmRpcn0vY19yZWhhc2giCisKK1BBQ0tBR0VDT05GSUcgPz0gIiIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gIiIKKworUEFDS0FHRUNPTkZJR1tjcnlwdG9kZXYtbGludXhdID0gImVuYWJsZS1kZXZjcnlwdG9lbmcsZGlzYWJsZS1kZXZjcnlwdG9lbmcsY3J5cHRvZGV2LWxpbnV4LCxjcnlwdG9kZXYtbW9kdWxlIgorCitCID0gIiR7V09SS0RJUn0vYnVpbGQiCitkb19jb25maWd1cmVbY2xlYW5kaXJzXSA9ICIke0J9IgorCisjfCAuL2xpYmNyeXB0by5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZ2V0Y29udGV4dCcKKyN8IC4vbGliY3J5cHRvLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBzZXRjb250ZXh0JworI3wgLi9saWJjcnlwdG8uc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYG1ha2Vjb250ZXh0JworRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIG5vLWFzeW5jIgorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2xfcG93ZXJwYzY0ID0gIiBuby1hc20iCisKKyMgYWRkaW5nIGRldnJhbmRvbSBwcmV2ZW50cyBvcGVuc3NsIGZyb20gdXNpbmcgZ2V0cmFuZG9tKCkgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBvbiBvbGRlciBnbGliYyB2ZXJzaW9ucworIyAobmF0aXZlIHZlcnNpb25zIGNhbiBiZSBidWlsdCB3aXRoIG5ld2VyIGdsaWJjLCBidXQgdGhlbiByZWxvY2F0ZWQgb250byBhIHN5c3RlbSB3aXRoIG9sZGVyIGdsaWJjKQorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGgtcmFuZC1zZWVkPW9zLGRldnJhbmRvbSIKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS13aXRoLXJhbmQtc2VlZD1vcyxkZXZyYW5kb20iCisKKyMgUmVseWluZyBvbiBoYXJkY29kZWQgYnVpbHQtaW4gcGF0aHMgY2F1c2VzIG9wZW5zc2wtbmF0aXZlIHRvIG5vdCBiZSByZWxvY2F0ZWFibGUgZnJvbSBzc3RhdGUuCitDRkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLURPUEVOU1NMRElSPS9ub3QvYnVpbHRpbiAtREVOR0lORVNESVI9L25vdC9idWlsdGluIgorQ0ZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1ET1BFTlNTTERJUj0vbm90L2J1aWx0aW4gLURFTkdJTkVTRElSPS9ub3QvYnVpbHRpbiIKKworZG9fY29uZmlndXJlICgpIHsKKwlvcz0ke0hPU1RfT1N9CisJY2FzZSAkb3MgaW4KKwlsaW51eC1nbnVlYWJpIHxcCisJbGludXgtZ251c3BlIHxcCisJbGludXgtbXVzbGVhYmkgfFwKKwlsaW51eC1tdXNsc3BlIHxcCisJbGludXgtbXVzbCApCisJCW9zPWxpbnV4CisJCTs7CisJKikKKwkJOzsKKwllc2FjCisJdGFyZ2V0PSIkb3MtJHtIT1NUX0FSQ0h9IgorCWNhc2UgJHRhcmdldCBpbgorCWxpbnV4LWFybSopCisJCXRhcmdldD1saW51eC1hcm12NAorCQk7OworCWxpbnV4LWFhcmNoNjQqKQorCQl0YXJnZXQ9bGludXgtYWFyY2g2NAorCQk7OworCWxpbnV4LWk/ODYgfCBsaW51eC12aWFjMykKKwkJdGFyZ2V0PWxpbnV4LXg4NgorCQk7OworCWxpbnV4LWdudXgzMi14ODZfNjQgfCBsaW51eC1tdXNseDMyLXg4Nl82NCApCisJCXRhcmdldD1saW51eC14MzIKKwkJOzsKKwlsaW51eC1nbnU2NC14ODZfNjQpCisJCXRhcmdldD1saW51eC14ODZfNjQKKwkJOzsKKwlsaW51eC1taXBzIHwgbGludXgtbWlwc2VsKQorCQkjIHNwZWNpZnlpbmcgVEFSR0VUX0NDX0FSQ0ggcHJldmVudHMgb3BlbnNzbCBmcm9tIChpbmNvcnJlY3RseSkgYWRkaW5nIHRhcmdldCBhcmNoaXRlY3R1cmUgZmxhZ3MKKwkJdGFyZ2V0PSJsaW51eC1taXBzMzIgJHtUQVJHRVRfQ0NfQVJDSH0iCisJCTs7CisJbGludXgtZ251bjMyLW1pcHMqKQorCQl0YXJnZXQ9bGludXgtbWlwczY0CisJCTs7CisJbGludXgtKi1taXBzNjQgfCBsaW51eC1taXBzNjQgfCBsaW51eC0qLW1pcHM2NGVsIHwgbGludXgtbWlwczY0ZWwpCisJCXRhcmdldD1saW51eDY0LW1pcHM2NAorCQk7OworCWxpbnV4LW1pY3JvYmxhemUqIHwgbGludXgtbmlvczIqIHwgbGludXgtc2gzIHwgbGludXgtc2g0IHwgbGludXgtYXJjKikKKwkJdGFyZ2V0PWxpbnV4LWdlbmVyaWMzMgorCQk7OworCWxpbnV4LXBvd2VycGMpCisJCXRhcmdldD1saW51eC1wcGMKKwkJOzsKKwlsaW51eC1wb3dlcnBjNjQpCisJCXRhcmdldD1saW51eC1wcGM2NAorCQk7OworCWxpbnV4LXBvd2VycGM2NGxlKQorCQl0YXJnZXQ9bGludXgtcHBjNjRsZQorCQk7OworCWxpbnV4LXJpc2N2MzIpCisJCXRhcmdldD1saW51eC1nZW5lcmljMzIKKwkJOzsKKwlsaW51eC1yaXNjdjY0KQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzY0CisJCTs7CisJbGludXgtc3BhcmMgfCBsaW51eC1zdXBlcnNwYXJjKQorCQl0YXJnZXQ9bGludXgtc3BhcmN2OQorCQk7OworCWVzYWMKKworCXVzZXByZWZpeD0ke3ByZWZpeH0KKwlpZiBbICJ4JHVzZXByZWZpeCIgPSAieCIgXTsgdGhlbgorCQl1c2VwcmVmaXg9LworCWZpCisJIyBXQVJOSU5HOiBkbyBub3Qgc2V0IGNvbXBpbGVyL2xpbmtlciBmbGFncyAoLUkvLUQgZXRjLikgaW4gRVhUUkFfT0VDT05GLCBhcyB0aGV5IHdpbGwgZnVsbHkgcmVwbGFjZSB0aGUKKwkjIGVudmlyb25tZW50IHZhcmlhYmxlcyBzZXQgYnkgYml0YmFrZS4gQWRqdXN0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW5zdGVhZC4KKwlIQVNIQkFOR1BFUkw9Ii91c3IvYmluL2VudiBwZXJsIiBQRVJMPXBlcmwgUEVSTDVMSUI9IiR7U30vZXh0ZXJuYWwvcGVybC9UZXh0LVRlbXBsYXRlLTEuNDYvbGliLyIgXAorCXBlcmwgJHtTfS9Db25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9ICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gLS1wcmVmaXg9JHVzZXByZWZpeCAtLW9wZW5zc2xkaXI9JHtsaWJkaXJ9L3NzbC0xLjEgLS1saWJkaXI9JHtsaWJkaXJ9ICR0YXJnZXQKKwlwZXJsICR7Qn0vY29uZmlnZGF0YS5wbSAtLWR1bXAKK30KKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSBERVNURElSPSIke0R9IiBNQU5ESVI9IiR7bWFuZGlyfSIgTUFOU1VGRklYPXNzbCBpbnN0YWxsCisKKwlvZV9tdWx0aWxpYl9oZWFkZXIgb3BlbnNzbC9vcGVuc3NsY29uZi5oCisKKwkjIENyZWF0ZSBTU0wgc3RydWN0dXJlIGZvciBwYWNrYWdlcyBzdWNoIGFzIGNhLWNlcnRpZmljYXRlcyB3aGljaAorCSMgY29udGFpbiBoYXJkLWNvZGVkIHBhdGhzIHRvIC9ldGMvc3NsLiBEZWJpYW4gZG9lcyB0aGUgc2FtZS4KKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NzbAorCW12ICR7RH0ke2xpYmRpcn0vc3NsLTEuMS9jZXJ0cyBcCisJICAgJHtEfSR7bGliZGlyfS9zc2wtMS4xL3ByaXZhdGUgXAorCSAgICR7RH0ke2xpYmRpcn0vc3NsLTEuMS9vcGVuc3NsLmNuZiBcCisJICAgJHtEfSR7c3lzY29uZmRpcn0vc3NsLworCisJIyBBbHRob3VnaCBhYnNvbHV0ZSBzeW1saW5rcyB3b3VsZCBiZSBPSyBmb3IgdGhlIHRhcmdldCwgdGhleSBiZWNvbWUKKwkjIGludmFsaWQgaWYgbmF0aXZlIG9yIG5hdGl2ZXNkayBhcmUgcmVsb2NhdGVkIGZyb20gc3N0YXRlLgorCWxuIC1zZiAke0BvZS5wYXRoLnJlbGF0aXZlKCcke2xpYmRpcn0vc3NsLTEuMScsICcke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cycpfSAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvY2VydHMKKwlsbiAtc2YgJHtAb2UucGF0aC5yZWxhdGl2ZSgnJHtsaWJkaXJ9L3NzbC0xLjEnLCAnJHtzeXNjb25mZGlyfS9zc2wvcHJpdmF0ZScpfSAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvcHJpdmF0ZQorCWxuIC1zZiAke0BvZS5wYXRoLnJlbGF0aXZlKCcke2xpYmRpcn0vc3NsLTEuMScsICcke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZicpfSAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvb3BlbnNzbC5jbmYKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKKwljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L29wZW5zc2wgXAorCSAgICBPUEVOU1NMX0NPTkY9JHtsaWJkaXJ9L3NzbC0xLjEvb3BlbnNzbC5jbmYgXAorCSAgICBTU0xfQ0VSVF9ESVI9JHtsaWJkaXJ9L3NzbC0xLjEvY2VydHMgXAorCSAgICBTU0xfQ0VSVF9GSUxFPSR7bGliZGlyfS9zc2wtMS4xL2NlcnQucGVtIFwKKwkgICAgT1BFTlNTTF9FTkdJTkVTPSR7bGliZGlyfS9lbmdpbmVzLTEuMQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgeworCW1rZGlyIC1wICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQKKwlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2Vudmlyb25tZW50LmQtb3BlbnNzbC5zaCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL29wZW5zc2wuc2gKKwlzZWQgJ3N8L3Vzci9saWIvc3NsL3wvdXNyL2xpYi9zc2wtMS4xL3xnJyAtaSAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL29wZW5zc2wuc2gKK30KKworUFRFU1RfQlVJTERfSE9TVF9GSUxFUyArPSAiY29uZmlnZGF0YS5wbSIKK1BURVNUX0JVSUxEX0hPU1RfUEFUVEVSTiA9ICJwZXJsX3ZlcnNpb24gPSIKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworCSMgUHJ1bmUgdGhlIGJ1aWxkIHRyZWUKKwlybSAtZiAke0J9L2Z1enovKi4qICR7Qn0vdGVzdC8qLioKKworCWNwICR7U30vQ29uZmlndXJlICR7Qn0vY29uZmlnZGF0YS5wbSAke0R9JHtQVEVTVF9QQVRIfQorCWNwIC1yICR7U30vZXh0ZXJuYWwgJHtCfS90ZXN0ICR7U30vdGVzdCAke0J9L2Z1enogJHtTfS91dGlsICR7Qn0vdXRpbCAke0R9JHtQVEVTVF9QQVRIfQorCisJIyBGb3IgdGVzdF9zaGxpYmxvYWQKKwlsbiAtcyAke2xpYmRpcn0vbGliY3J5cHRvLnNvLjEuMSAke0R9JHtQVEVTVF9QQVRIfS8KKwlsbiAtcyAke2xpYmRpcn0vbGlic3NsLnNvLjEuMSAke0R9JHtQVEVTVF9QQVRIfS8KKworCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcworCWxuIC1zICR7YmluZGlyfS9vcGVuc3NsICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKKwlpbnN0YWxsIC1tNjQ0ICR7U30vYXBwcy8qLnBlbSAke1N9L2FwcHMvKi5zcmwgJHtTfS9hcHBzL29wZW5zc2wuY25mICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKKwlpbnN0YWxsIC1tNzU1ICR7Qn0vYXBwcy9DQS5wbCAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L2VuZ2luZXMKKwlpbnN0YWxsIC1tNzU1ICR7Qn0vZW5naW5lcy9vc3NsdGVzdC5zbyAke0R9JHtQVEVTVF9QQVRIfS9lbmdpbmVzCit9CisKKyMgQWRkIHRoZSBvcGVuc3NsLmNuZiBmaWxlIHRvIHRoZSBvcGVuc3NsLWNvbmYgcGFja2FnZS4gTWFrZSB0aGUgbGliY3J5cHRvCisjIHBhY2thZ2UgUlJFQ09NTUVORFMgb24gdGhpcyBwYWNrYWdlLiBUaGlzIHdpbGwgZW5hYmxlIHRoZSBjb25maWd1cmF0aW9uCisjIGZpbGUgdG8gYmUgaW5zdGFsbGVkIGZvciBib3RoIHRoZSBvcGVuc3NsLWJpbiBwYWNrYWdlIGFuZCB0aGUgbGliY3J5cHRvCisjIHBhY2thZ2Ugc2luY2UgdGhlIG9wZW5zc2wtYmluIHBhY2thZ2UgZGVwZW5kcyBvbiB0aGUgbGliY3J5cHRvIHBhY2thZ2UuCisKK1BBQ0tBR0VTID0rICJsaWJjcnlwdG8gbGlic3NsIG9wZW5zc2wtY29uZiAke1BOfS1lbmdpbmVzICR7UE59LW1pc2MiCisKK0ZJTEVTX2xpYmNyeXB0byA9ICIke2xpYmRpcn0vbGliY3J5cHRvJHtTT0xJQlN9IgorRklMRVNfbGlic3NsID0gIiR7bGliZGlyfS9saWJzc2wke1NPTElCU30iCitGSUxFU19vcGVuc3NsLWNvbmYgPSAiJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYiCitGSUxFU18ke1BOfS1lbmdpbmVzID0gIiR7bGliZGlyfS9lbmdpbmVzLTEuMSIKK0ZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3NzbC0xLjEvbWlzYyIKK0ZJTEVTXyR7UE59ID0rICIke2xpYmRpcn0vc3NsLTEuMS8qIgorRklMRVNfJHtQTn1fYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgJHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL29wZW5zc2wuc2giCisKK0NPTkZGSUxFU19vcGVuc3NsLWNvbmYgPSAiJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYiCisKK1JSRUNPTU1FTkRTX2xpYmNyeXB0byArPSAib3BlbnNzbC1jb25mIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm9wZW5zc2wtYmluIHBlcmwgcGVybC1tb2R1bGVzIGJhc2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworQ1ZFX1BST0RVQ1QgPSAib3BlbnNzbDpvcGVuc3NsIgorCisjIE9ubHkgYWZmZWN0cyBPcGVuU1NMID49IDEuMS4xIGluIGNvbWJpbmF0aW9uIHdpdGggQXBhY2hlIDwgMi40LjM3CisjIEFwYWNoZSBpbiBtZXRhLXdlYnNlcnZlciBpcyBhbHJlYWR5IHJlY2VudCBlbm91Z2gKK0NWRV9DSEVDS19XSElURUxJU1QgKz0gIkNWRS0yMDE5LTAxOTAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC8wMDAxLXBwcGQtRml4LWJvdW5kcy1jaGVjay1pbi1FQVAtY29kZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwLzAwMDEtcHBwZC1GaXgtYm91bmRzLWNoZWNrLWluLUVBUC1jb2RlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3YmE3YmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC8wMDAxLXBwcGQtRml4LWJvdW5kcy1jaGVjay1pbi1FQVAtY29kZS5wYXRjaApAQCAtMCwwICsxLDQ3IEBACitGcm9tIDhkNzk3MGI4ZjNkYjcyN2ZlNzk4YjY1ZjMzNzdmZTY3ODc1NzU0MjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIE1hY2tlcnJhcyA8cGF1bHVzQG96bGFicy5vcmc+CitEYXRlOiBNb24sIDMgRmViIDIwMjAgMTU6NTM6MjggKzExMDAKK1N1YmplY3Q6IFtQQVRDSF0gcHBwZDogRml4IGJvdW5kcyBjaGVjayBpbiBFQVAgY29kZQorCitHaXZlbiB0aGF0IHdlIGhhdmUganVzdCBjaGVja2VkIHZhbGxlbiA8IGxlbiwgaXQgY2FuIG5ldmVyIGJlIHRoZSBjYXNlCit0aGF0IHZhbGxlbiA+PSBsZW4gKyBzaXplb2Yocmhvc3RuYW1lKS4gIFRoaXMgZml4ZXMgdGhlIGNoZWNrIHNvIHdlCithY3R1YWxseSBhdm9pZCBvdmVyZmxvd2luZyB0aGUgcmhvc3RuYW1lIGFycmF5LgorCitSZXBvcnRlZC1ieTogSWxqYSBWYW4gU3BydW5kZWwgPGl2YW5zcHJ1bmRlbEBpb2FjdGl2ZS5jb20+CitTaWduZWQtb2ZmLWJ5OiBQYXVsIE1hY2tlcnJhcyA8cGF1bHVzQG96bGFicy5vcmc+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGh1Yi5jb20vcGF1bHVzbWFjay9wcHAvY29tbWl0LzhkNzk3MGI4ZjNkYjcyN2ZlNzk4YjY1ZjMzNzdmZTY3ODc1NzU0MjZdCisKK0NWRTogQ1ZFLTIwMjAtODU5NworCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBwcHBkL2VhcC5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3BwcGQvZWFwLmMgYi9wcHBkL2VhcC5jCitpbmRleCA5NDQwN2Y1Li4xYjkzZGIwIDEwMDY0NAorLS0tIGEvcHBwZC9lYXAuYworKysrIGIvcHBwZC9lYXAuYworQEAgLTE0MjAsNyArMTQyMCw3IEBAIGludCBsZW47CisgCQl9CisgCisgCQkvKiBOb3Qgc28gbGlrZWx5IHRvIGhhcHBlbi4gKi8KKy0JCWlmICh2YWxsZW4gPj0gbGVuICsgc2l6ZW9mIChyaG9zdG5hbWUpKSB7CisrCQlpZiAobGVuIC0gdmFsbGVuID49IHNpemVvZiAocmhvc3RuYW1lKSkgeworIAkJCWRiZ2xvZygiRUFQOiB0cmltbWluZyByZWFsbHkgbG9uZyBwZWVyIG5hbWUgZG93biIpOworIAkJCUJDT1BZKGlucCArIHZhbGxlbiwgcmhvc3RuYW1lLCBzaXplb2YgKHJob3N0bmFtZSkgLSAxKTsKKyAJCQlyaG9zdG5hbWVbc2l6ZW9mIChyaG9zdG5hbWUpIC0gMV0gPSAnXDAnOworQEAgLTE4NDYsNyArMTg0Niw3IEBAIGludCBsZW47CisgCQl9CisgCisgCQkvKiBOb3Qgc28gbGlrZWx5IHRvIGhhcHBlbi4gKi8KKy0JCWlmICh2YWxsZW4gPj0gbGVuICsgc2l6ZW9mIChyaG9zdG5hbWUpKSB7CisrCQlpZiAobGVuIC0gdmFsbGVuID49IHNpemVvZiAocmhvc3RuYW1lKSkgeworIAkJCWRiZ2xvZygiRUFQOiB0cmltbWluZyByZWFsbHkgbG9uZyBwZWVyIG5hbWUgZG93biIpOworIAkJCUJDT1BZKGlucCArIHZhbGxlbiwgcmhvc3RuYW1lLCBzaXplb2YgKHJob3N0bmFtZSkgLSAxKTsKKyAJCQlyaG9zdG5hbWVbc2l6ZW9mIChyaG9zdG5hbWUpIC0gMV0gPSAnXDAnOworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHBfMi40LjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcF8yLjQuNy5iYgppbmRleCA2NDRjZGU0Li42MGM1NmRkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcF8yLjQuNy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcF8yLjQuNy5iYgpAQCAtMzMsNiArMzMsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1wcHBvZS1pbmNsdWRlLW5ldGluZXQtaW4uaC1iZWZvcmUtbGludXgtaW4uaC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBwcC1SZW1vdmUtdW5uZWVkZWQtaW5jbHVkZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9wcHAtMi40LjctREVTLW9wZW5zc2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wcHBkLUZpeC1ib3VuZHMtY2hlY2staW4tRUFQLWNvZGUucGF0Y2ggXAogIgogCiBTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Jlc29sdmNvbmYvcmVzb2x2Y29uZl8xLjc5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Jlc29sdmNvbmYvcmVzb2x2Y29uZl8xLjc5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTUwMTc3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZXNvbHZjb25mL3Jlc29sdmNvbmZfMS43OS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLVNVTU1BUlkgPSAibmFtZSBzZXJ2ZXIgaW5mb3JtYXRpb24gaGFuZGxlciIKLURFU0NSSVBUSU9OID0gIlJlc29sdmNvbmYgaXMgYSBmcmFtZXdvcmsgZm9yIGtlZXBpbmcgdHJhY2sgb2YgdGhlIHN5c3RlbSdzIFwKLWluZm9ybWF0aW9uIGFib3V0IGN1cnJlbnRseSBhdmFpbGFibGUgbmFtZXNlcnZlcnMuIEl0IHNldHMgXAotaXRzZWxmIHVwIGFzIHRoZSBpbnRlcm1lZGlhcnkgYmV0d2VlbiBwcm9ncmFtcyB0aGF0IHN1cHBseSBcCi1uYW1lc2VydmVyIGluZm9ybWF0aW9uIGFuZCBwcm9ncmFtcyB0aGF0IG5lZWQgbmFtZXNlcnZlciBcCi1pbmZvcm1hdGlvbi4iCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzkzYzA1NTBiZDMxNzNmNDUwNGIyY2JkODk5MWU1MGIiCi1BVVRIT1IgPSAiVGhvbWFzIEhvb2QiCi1IT01FUEFHRSA9ICJodHRwOi8vcGFja2FnZXMuZGViaWFuLm9yZy9yZXNvbHZjb25mIgotUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKLQotU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE2MDUyMFQwNDQzNDBaL3Bvb2wvbWFpbi9yLyR7QlBOfS8ke0JQTn1fMS43OS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vZml4LXBhdGgtZm9yLWJ1c3lib3gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vOTlfcmVzb2x2Y29uZiBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYWFiMjM4MjAyMGZjNTE4ZjA2YTA2ZTkyNGM1NmQzMDAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGUyODQzY2Q0MTYyYjcwNmYwNDgxYjNjMjgxNjU3NzI4Y2JjMjgyMmU1MGE2NGZmZjc5Yjc5YmQ4YWE4NzBhMCIKLQotIyB0aGUgcGFja2FnZSBpcyB0YWtlbiBmcm9tIHNuYXBzaG90cy5kZWJpYW4ub3JnOyB0aGF0IHNvdXJjZSBpcyBzdGF0aWMgYW5kIGdvZXMgc3RhbGUKLSMgc28gd2UgY2hlY2sgdGhlIGxhdGVzdCB1cHN0cmVhbSBmcm9tIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBnZXQgdXBkYXRlZAotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9yL3Jlc29sdmNvbmYvIgotCi1pbmhlcml0IGFsbGFyY2gKLQotZG9fY29tcGlsZSAoKSB7Ci0JOgotfQotCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vOTlfcmVzb2x2Y29uZiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcwotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotCQllY2hvICJkIC9ydW4vJHtCUE59L2ludGVyZmFjZSAtIC0gLSAtIiBcCi0JCSAgICAgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3Jlc29sdmNvbmYuY29uZgotCWZpCi0JaW5zdGFsbCAtZCAke0R9JHtiYXNlX2xpYmRpcn0vJHtCUE59Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0KLQlsbiAtc25mICR7bG9jYWxzdGF0ZWRpcn0vcnVuLyR7QlBOfSAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vcnVuCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfSAke0R9JHtiYXNlX3NiaW5kaXJ9Ci0JaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjggJHtEfSR7ZG9jZGlyfS8ke1B9Ci0JY3AgLXBQUiBldGMvKiAke0R9JHtzeXNjb25mZGlyfS8KLQljaG93biAtUiByb290OnJvb3QgJHtEfSR7c3lzY29uZmRpcn0vCi0JaW5zdGFsbCAtbSAwNzU1IGJpbi9yZXNvbHZjb25mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vCi0JaW5zdGFsbCAtbSAwNzU1IGJpbi9saXN0LXJlY29yZHMgJHtEfSR7YmFzZV9saWJkaXJ9LyR7QlBOfQotCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtdXAuZAotCWluc3RhbGwgLW0gMDc1NSBkZWJpYW4vcmVzb2x2Y29uZi4wMDByZXNvbHZjb25mLmlmLXVwICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQvMDAwcmVzb2x2Y29uZgotCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtZG93bi5kCi0JaW5zdGFsbCAtbSAwNzU1IGRlYmlhbi9yZXNvbHZjb25mLnJlc29sdmNvbmYuaWYtZG93biAke0R9LyR7c3lzY29uZmRpcn0vbmV0d29yay9pZi1kb3duLmQvcmVzb2x2Y29uZgotCWluc3RhbGwgLW0gMDY0NCBSRUFETUUgJHtEfSR7ZG9jZGlyfS8ke1B9LwotCWluc3RhbGwgLW0gMDY0NCBtYW4vcmVzb2x2Y29uZi44ICR7RH0ke21hbmRpcn0vbWFuOC8KLX0KLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLQlpZiBbIC16ICIkRCIgXTsgdGhlbgotCQlpZiBjb21tYW5kIC12IHN5c3RlbWQtdG1wZmlsZXMgPi9kZXYvbnVsbDsgdGhlbgotCQkJc3lzdGVtZC10bXBmaWxlcyAtLWNyZWF0ZSAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvcmVzb2x2Y29uZi5jb25mCi0JCWVsaWYgWyAtZSAke3N5c2NvbmZkaXJ9L2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdOyB0aGVuCi0JCQkke3N5c2NvbmZkaXJ9L2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKLQkJZmkKLQlmaQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtiYXNlX2xpYmRpcn0vJHtCUE59IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Jlc29sdmNvbmYvcmVzb2x2Y29uZl8xLjgyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Jlc29sdmNvbmYvcmVzb2x2Y29uZl8xLjgyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3OTU5NTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmVzb2x2Y29uZi9yZXNvbHZjb25mXzEuODIuYmIKQEAgLTAsMCArMSw2OCBAQAorU1VNTUFSWSA9ICJuYW1lIHNlcnZlciBpbmZvcm1hdGlvbiBoYW5kbGVyIgorREVTQ1JJUFRJT04gPSAiUmVzb2x2Y29uZiBpcyBhIGZyYW1ld29yayBmb3Iga2VlcGluZyB0cmFjayBvZiB0aGUgc3lzdGVtJ3MgXAoraW5mb3JtYXRpb24gYWJvdXQgY3VycmVudGx5IGF2YWlsYWJsZSBuYW1lc2VydmVycy4gSXQgc2V0cyBcCitpdHNlbGYgdXAgYXMgdGhlIGludGVybWVkaWFyeSBiZXR3ZWVuIHByb2dyYW1zIHRoYXQgc3VwcGx5IFwKK25hbWVzZXJ2ZXIgaW5mb3JtYXRpb24gYW5kIHByb2dyYW1zIHRoYXQgbmVlZCBuYW1lc2VydmVyIFwKK2luZm9ybWF0aW9uLiIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jOTNjMDU1MGJkMzE3M2Y0NTA0YjJjYmQ4OTkxZTUwYiIKK0FVVEhPUiA9ICJUaG9tYXMgSG9vZCIKK0hPTUVQQUdFID0gImh0dHA6Ly9wYWNrYWdlcy5kZWJpYW4ub3JnL3Jlc29sdmNvbmYiCitSREVQRU5EU18ke1BOfSA9ICJiYXNoIgorCitTUkNfVVJJID0gImdpdDovL3NhbHNhLmRlYmlhbi5vcmcvZGViaWFuL3Jlc29sdmNvbmYuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1wYXRoLWZvci1idXN5Ym94LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzk5X3Jlc29sdmNvbmYgXAorICAgICAgICAgICIKKworU1JDUkVWID0gImNiMTliYmZiZTdlNTIxNzQzMzJmNjhiZjJmMjk1YjM5ZDExOWZhZDMiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKKyMgdGhlIHBhY2thZ2UgaXMgdGFrZW4gZnJvbSBzbmFwc2hvdHMuZGViaWFuLm9yZzsgdGhhdCBzb3VyY2UgaXMgc3RhdGljIGFuZCBnb2VzIHN0YWxlCisjIHNvIHdlIGNoZWNrIHRoZSBsYXRlc3QgdXBzdHJlYW0gZnJvbSBhIGRpcmVjdG9yeSB0aGF0IGRvZXMgZ2V0IHVwZGF0ZWQKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vci9yZXNvbHZjb25mLyIKKworaW5oZXJpdCBhbGxhcmNoCisKK2RvX2NvbXBpbGUgKCkgeworCToKK30KKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9Lzk5X3Jlc29sdmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKKwkJZWNobyAiZCAvcnVuLyR7QlBOfS9pbnRlcmZhY2UgLSAtIC0gLSIgXAorCQkgICAgID4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9yZXNvbHZjb25mLmNvbmYKKwlmaQorCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9saWJkaXJ9LyR7QlBOfQorCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59CisJbG4gLXNuZiAke2xvY2Fsc3RhdGVkaXJ9L3J1bi8ke0JQTn0gJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59L3J1bgorCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0gJHtEfSR7YmFzZV9zYmluZGlyfQorCWluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44ICR7RH0ke2RvY2Rpcn0vJHtQfQorCWNwIC1wUFIgZXRjLyogJHtEfSR7c3lzY29uZmRpcn0vCisJY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke3N5c2NvbmZkaXJ9LworCWluc3RhbGwgLW0gMDc1NSBiaW4vcmVzb2x2Y29uZiAke0R9JHtiYXNlX3NiaW5kaXJ9LworCWluc3RhbGwgLW0gMDc1NSBiaW4vbGlzdC1yZWNvcmRzICR7RH0ke2Jhc2VfbGliZGlyfS8ke0JQTn0KKwlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQKKwlpbnN0YWxsIC1tIDA3NTUgZGViaWFuL3Jlc29sdmNvbmYuMDAwcmVzb2x2Y29uZi5pZi11cCAke0R9LyR7c3lzY29uZmRpcn0vbmV0d29yay9pZi11cC5kLzAwMHJlc29sdmNvbmYKKwlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLWRvd24uZAorCWluc3RhbGwgLW0gMDc1NSBkZWJpYW4vcmVzb2x2Y29uZi5yZXNvbHZjb25mLmlmLWRvd24gJHtEfS8ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtZG93bi5kL3Jlc29sdmNvbmYKKwlpbnN0YWxsIC1tIDA2NDQgUkVBRE1FICR7RH0ke2RvY2Rpcn0vJHtQfS8KKwlpbnN0YWxsIC1tIDA2NDQgbWFuL3Jlc29sdmNvbmYuOCAke0R9JHttYW5kaXJ9L21hbjgvCit9CisKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisJaWYgWyAteiAiJEQiIF07IHRoZW4KKwkJaWYgY29tbWFuZCAtdiBzeXN0ZW1kLXRtcGZpbGVzID4vZGV2L251bGw7IHRoZW4KKwkJCXN5c3RlbWQtdG1wZmlsZXMgLS1jcmVhdGUgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3Jlc29sdmNvbmYuY29uZgorCQllbGlmIFsgLWUgJHtzeXNjb25mZGlyfS9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggXTsgdGhlbgorCQkJJHtzeXNjb25mZGlyfS9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggdXBkYXRlCisJCWZpCisJZmkKK30KKworRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9saWJkaXJ9LyR7QlBOfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zb2NhdC9zb2NhdF8xLjcuMy4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NvY2F0L3NvY2F0XzEuNy4zLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkYmJlNWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NvY2F0L3NvY2F0XzEuNy4zLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1TVU1NQVJZID0gIk11bHRpcHVycG9zZSByZWxheSBmb3IgYmlkaXJlY3Rpb25hbCBkYXRhIHRyYW5zZmVyIgotREVTQ1JJUFRJT04gPSAiU29jYXQgaXMgYSByZWxheSBmb3IgYmlkaXJlY3Rpb25hbCBkYXRhIFwKLXRyYW5zZmVyIGJldHdlZW4gdHdvIGluZGVwZW5kZW50IGRhdGEgY2hhbm5lbHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5kZXN0LXVucmVhY2gub3JnL3NvY2F0LyIKLQotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLURFUEVORFMgPSAib3BlbnNzbCIKLQotTElDRU5TRSA9ICJHUEwtMi4wLXdpdGgtT3BlblNTTC1leGNlcHRpb24iCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTI1NztlbmRsaW5lPTI4NzttZDU9MzM4YzA1ZWFkZDAxMzg3MmFiYjFkNmUxOThlMTBhM2YiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5kZXN0LXVucmVhY2gub3JnL3NvY2F0L2Rvd25sb2FkL3NvY2F0LSR7UFZ9LnRhci5iejIgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjJhMDMyYTQ3YjhiODlhMTg0ODU2OTdmYTk3NTE1NGYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGRkNjNmZmU0OTgxNjhhNGFhYzQxZDMwNzU5NGM1MDc2ZmYzMDdhYTBhYzA0YjE0MWY4ZjFjZWM2NTk0ZDA0YSIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWF1dG9oZWFkZXIiCi0KLUVYVFJBX09FQ09ORiArPSAiYWNfY3ZfaGF2ZV96X21vZGlmaWVyPXllcyBcCi0gICAgICAgICAgICAgICAgIGFjX2N2X2hlYWRlcl9ic2RfbGlidXRpbF9oPW5vIFwKLSAgICAgICAgICAgICAgICAgc2NfY3ZfdGVybWlvc19pc3BlZWQ9bm8gXAotICAgICAgICAgICAgICAgICAke1RFUk1CSVRTX1NISUZUU30gXAotIgotCi1URVJNQklUU19TSElGVFMgPz0gInNjX2N2X3N5c19jcmRseV9zaGlmdD05IFwKLSAgICAgICAgICAgICAgICAgICAgc2NfY3Zfc3lzX3RhYmRseV9zaGlmdD0xMSBcCi0gICAgICAgICAgICAgICAgICAgIHNjX2N2X3N5c19jc2l6ZV9zaGlmdD00IgotCi1URVJNQklUU19TSElGVFNfcG93ZXJwYyA9ICJzY19jdl9zeXNfY3JkbHlfc2hpZnQ9MTIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NfY3Zfc3lzX3RhYmRseV9zaGlmdD0xMCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzY19jdl9zeXNfY3NpemVfc2hpZnQ9OCIKLQotVEVSTUJJVFNfU0hJRlRTX3Bvd2VycGM2NCA9ICJzY19jdl9zeXNfY3JkbHlfc2hpZnQ9MTIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY19jdl9zeXNfdGFiZGx5X3NoaWZ0PTEwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NfY3Zfc3lzX2NzaXplX3NoaWZ0PTgiCi0KLVBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAidGNwLXdyYXBwZXJzIHJlYWRsaW5lIgotUEFDS0FHRUNPTkZJRyA/Pz0gInJlYWRsaW5lIgotUEFDS0FHRUNPTkZJR1t0Y3Atd3JhcHBlcnNdID0gIi0tZW5hYmxlLWxpYndyYXAsLS1kaXNhYmxlLWxpYndyYXAsdGNwLXdyYXBwZXJzIgotUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS1lbmFibGUtcmVhZGxpbmUsLS1kaXNhYmxlLXJlYWRsaW5lLHJlYWRsaW5lIgotCi1kb19pbnN0YWxsX3ByZXBlbmQgKCkgewotICAgIG1rZGlyIC1wICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0gJHtEfSR7bWFuZGlyfS9tYW4xCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zb2NhdC9zb2NhdF8xLjcuMy40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NvY2F0L3NvY2F0XzEuNy4zLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIwZDQwNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zb2NhdC9zb2NhdF8xLjcuMy40LmJiCkBAIC0wLDAgKzEsNTQgQEAKK1NVTU1BUlkgPSAiTXVsdGlwdXJwb3NlIHJlbGF5IGZvciBiaWRpcmVjdGlvbmFsIGRhdGEgdHJhbnNmZXIiCitERVNDUklQVElPTiA9ICJTb2NhdCBpcyBhIHJlbGF5IGZvciBiaWRpcmVjdGlvbmFsIGRhdGEgXAordHJhbnNmZXIgYmV0d2VlbiB0d28gaW5kZXBlbmRlbnQgZGF0YSBjaGFubmVscy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmRlc3QtdW5yZWFjaC5vcmcvc29jYXQvIgorCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKKworREVQRU5EUyA9ICJvcGVuc3NsIgorCitMSUNFTlNFID0gIkdQTC0yLjAtd2l0aC1PcGVuU1NMLWV4Y2VwdGlvbiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MjU3O2VuZGxpbmU9Mjg3O21kNT0zMzhjMDVlYWRkMDEzODcyYWJiMWQ2ZTE5OGUxMGEzZiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmRlc3QtdW5yZWFjaC5vcmcvc29jYXQvZG93bmxvYWQvc29jYXQtJHtQVn0udGFyLmJ6MiBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzY2NhNGY4Y2Q5ZDJkMWNhYWJkOWNjMDk5NDUxYmFjOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NzIzNzRjYTg2ZjY1NDk4ZTIzZTMyNTljMmVlMWI4ZjlkYmViMDRkMTJjMmE3OGMwYzliNWQxY2I5N2RmZGZjIgorCitpbmhlcml0IGF1dG90b29scworCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciIKKworRVhUUkFfT0VDT05GICs9ICJhY19jdl9oYXZlX3pfbW9kaWZpZXI9eWVzIFwKKyAgICAgICAgICAgICAgICAgYWNfY3ZfaGVhZGVyX2JzZF9saWJ1dGlsX2g9bm8gXAorICAgICAgICAgICAgICAgICBzY19jdl90ZXJtaW9zX2lzcGVlZD1ubyBcCisgICAgICAgICAgICAgICAgICR7VEVSTUJJVFNfU0hJRlRTfSBcCisiCisKK1RFUk1CSVRTX1NISUZUUyA/PSAic2NfY3Zfc3lzX2NyZGx5X3NoaWZ0PTkgXAorICAgICAgICAgICAgICAgICAgICBzY19jdl9zeXNfdGFiZGx5X3NoaWZ0PTExIFwKKyAgICAgICAgICAgICAgICAgICAgc2NfY3Zfc3lzX2NzaXplX3NoaWZ0PTQiCisKK1RFUk1CSVRTX1NISUZUU19wb3dlcnBjID0gInNjX2N2X3N5c19jcmRseV9zaGlmdD0xMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzY19jdl9zeXNfdGFiZGx5X3NoaWZ0PTEwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjX2N2X3N5c19jc2l6ZV9zaGlmdD04IgorCitURVJNQklUU19TSElGVFNfcG93ZXJwYzY0ID0gInNjX2N2X3N5c19jcmRseV9zaGlmdD0xMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjX2N2X3N5c190YWJkbHlfc2hpZnQ9MTAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY19jdl9zeXNfY3NpemVfc2hpZnQ9OCIKKworUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPz89ICJ0Y3Atd3JhcHBlcnMgcmVhZGxpbmUiCitQQUNLQUdFQ09ORklHID8/PSAicmVhZGxpbmUiCitQQUNLQUdFQ09ORklHW3RjcC13cmFwcGVyc10gPSAiLS1lbmFibGUtbGlid3JhcCwtLWRpc2FibGUtbGlid3JhcCx0Y3Atd3JhcHBlcnMiCitQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLWVuYWJsZS1yZWFkbGluZSwtLWRpc2FibGUtcmVhZGxpbmUscmVhZGxpbmUiCisKK0NGTEFHUyArPSAiLWZjb21tb24iCisKK2RvX2luc3RhbGxfcHJlcGVuZCAoKSB7CisgICAgbWtkaXIgLXAgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfSAke0R9JHttYW5kaXJ9L21hbjEKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMvZnN0YWIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy9mc3RhYgppbmRleCBkNzlhMDE2Li43MGU0MDBmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy9mc3RhYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy9mc3RhYgpAQCAtMiw3ICsyLDcgQEAKIAogL2Rldi9yb290ICAgICAgICAgICAgLyAgICAgICAgICAgICAgICAgICAgYXV0byAgICAgICBkZWZhdWx0cyAgICAgICAgICAgICAgMSAgMQogcHJvYyAgICAgICAgICAgICAgICAgL3Byb2MgICAgICAgICAgICAgICAgcHJvYyAgICAgICBkZWZhdWx0cyAgICAgICAgICAgICAgMCAgMAotZGV2cHRzICAgICAgICAgICAgICAgL2Rldi9wdHMgICAgICAgICAgICAgZGV2cHRzICAgICBtb2RlPTA2MjAsZ2lkPTUgICAgICAgMCAgMAorZGV2cHRzICAgICAgICAgICAgICAgL2Rldi9wdHMgICAgICAgICAgICAgZGV2cHRzICAgICBtb2RlPTA2MjAscHRteG1vZGU9MDY2NixnaWQ9NSAgICAgIDAgIDAKIHRtcGZzICAgICAgICAgICAgICAgIC9ydW4gICAgICAgICAgICAgICAgIHRtcGZzICAgICAgbW9kZT0wNzU1LG5vZGV2LG5vc3VpZCxzdHJpY3RhdGltZSAwICAwCiB0bXBmcyAgICAgICAgICAgICAgICAvdmFyL3ZvbGF0aWxlICAgICAgICB0bXBmcyAgICAgIGRlZmF1bHRzICAgICAgICAgICAgICAwICAwCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1wYXNzd2QvYmFzZS1wYXNzd2RfMy41LjI5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLXBhc3N3ZC9iYXNlLXBhc3N3ZF8zLjUuMjkuYmIKaW5kZXggZDFhYWIwOS4uZDAxY2Q3ZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLXBhc3N3ZC9iYXNlLXBhc3N3ZF8zLjUuMjkuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLXBhc3N3ZC9iYXNlLXBhc3N3ZF8zLjUuMjkuYmIKQEAgLTEsNyArMSw3IEBACiBTVU1NQVJZID0gIkJhc2Ugc3lzdGVtIG1hc3RlciBwYXNzd29yZC9ncm91cCBmaWxlcyIKIERFU0NSSVBUSU9OID0gIlRoZSBtYXN0ZXIgY29waWVzIG9mIHRoZSB1c2VyIGRhdGFiYXNlIGZpbGVzICgvZXRjL3Bhc3N3ZCBhbmQgL2V0Yy9ncm91cCkuICBUaGUgdXBkYXRlLXBhc3N3ZCB0b29sIGlzIGFsc28gcHJvdmlkZWQgdG8ga2VlcCB0aGUgc3lzdGVtIGRhdGFiYXNlcyBzeW5jaHJvbml6ZWQgd2l0aCB0aGVzZSBtYXN0ZXIgZmlsZXMuIgogU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MisiCitMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEiCiAKIFJFQ0lQRV9OT19VUERBVEVfUkVBU09OID0gIlZlcnNpb24gMy41LjM4IHJlcXVpcmVzIGNkZWJjb25mIGZvciB1cGRhdGUtcGFzc3dkIHV0aWxpdHkiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC5pbmMKaW5kZXggZDA4ZmE4ZC4uNmNmZGNkNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3guaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LmluYwpAQCAtMSwxMyArMSwxMyBAQAogU1VNTUFSWSA9ICJUaW55IHZlcnNpb25zIG9mIG1hbnkgY29tbW9uIFVOSVggdXRpbGl0aWVzIGluIGEgc2luZ2xlIHNtYWxsIGV4ZWN1dGFibGUiCiBERVNDUklQVElPTiA9ICJCdXN5Qm94IGNvbWJpbmVzIHRpbnkgdmVyc2lvbnMgb2YgbWFueSBjb21tb24gVU5JWCB1dGlsaXRpZXMgaW50byBhIHNpbmdsZSBzbWFsbCBleGVjdXRhYmxlLiBJdCBwcm92aWRlcyBtaW5pbWFsaXN0IHJlcGxhY2VtZW50cyBmb3IgbW9zdCBvZiB0aGUgdXRpbGl0aWVzIHlvdSB1c3VhbGx5IGZpbmQgaW4gR05VIGZpbGV1dGlscywgc2hlbGx1dGlscywgZXRjLiBUaGUgdXRpbGl0aWVzIGluIEJ1c3lCb3ggZ2VuZXJhbGx5IGhhdmUgZmV3ZXIgb3B0aW9ucyB0aGFuIHRoZWlyIGZ1bGwtZmVhdHVyZWQgR05VIGNvdXNpbnM7IGhvd2V2ZXIsIHRoZSBvcHRpb25zIHRoYXQgYXJlIGluY2x1ZGVkIHByb3ZpZGUgdGhlIGV4cGVjdGVkIGZ1bmN0aW9uYWxpdHkgYW5kIGJlaGF2ZSB2ZXJ5IG11Y2ggbGlrZSB0aGVpciBHTlUgY291bnRlcnBhcnRzLiBCdXN5Qm94IHByb3ZpZGVzIGEgZmFpcmx5IGNvbXBsZXRlIFBPU0lYIGVudmlyb25tZW50IGZvciBhbnkgc21hbGwgb3IgZW1iZWRkZWQgc3lzdGVtLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYnVzeWJveC5uZXQiCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5idXN5Ym94Lm5ldCIKIEJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmJ1c3lib3gubmV0LyIKIAogREVQRU5EUyArPSAia2Vybi10b29scy1uYXRpdmUgdmlydHVhbC9jcnlwdCIKIAogIyBiemlwMiBhcHBsZXQgaW4gYnVzeWJveCBpcyBiYXNlZCBvbiBsaWdodGx5LW1vZGlmaWVkIGJ6aXAyIHNvdXJjZQogIyB0aGUgR1BMIGlzIHZlcnNpb24gMiBvbmx5Ci1MSUNFTlNFID0gIkdQTHYyICYgYnppcDIiCitMSUNFTlNFID0gIkdQTHYyICYgYnppcDItMS4wLjYiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kZTEwZGU0ODY0MmFiNzQzMThlODkzYTYxMTA1YWZiYiIKIAogU0VDVElPTiA9ICJiYXNlIgpAQCAtMzU0LDcgKzM1NCw5IEBACiAKIGRvX2luc3RhbGxfcHRlc3QgKCkgewogCWNwIC1yICR7Qn0vdGVzdHN1aXRlICR7RH0ke1BURVNUX1BBVEh9LwotCWNwICR7Qn0vLmNvbmZpZyAgICAgICR7RH0ke1BURVNUX1BBVEh9LworICAgICAgICAjIFRoZXNlIGFjY2VzcyB0aGUgaW50ZXJuZXQgd2hpY2ggaXMgbm90IGd1YXJhbnRlZWQgdG8gd29yayBvbiBtYWNoaW5lcyBydW5uaW5nIHRoZSB0ZXN0cworICAgICAgICBybSAtcmYgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHN1aXRlL3dnZXQKKwlzb3J0ICR7Qn0vLmNvbmZpZyA+ICR7RH0ke1BURVNUX1BBVEh9Ly5jb25maWcKIAlsbiAtcyAvYmluL2J1c3lib3ggICAke0R9JHtQVEVTVF9QQVRIfS9idXN5Ym94CiB9CiAKQEAgLTQzMSw2ICs0MzMsMzIgQEAKICAgICBkLnByZXBlbmRWYXIoJ3BrZ19wb3N0aW5zdF8lcycgJSBwa2csIHBvc3RpbnN0KQogfQogCitwa2dfcG9zdGluc3RfJHtQTn1fcHJlcGVuZCAoKSB7CisgICAgICAgICMgTmVlZCBwYXRoIHRvIHNhdmVkIHV0aWxzLCBidXQgdGhleSBtYXkgaGF2ZSBiZSByZW1vdmVkIG9uIHVwZ3JhZGUgb2YgYnVzeWJveAorICAgICAgICAjIE9ubHkgdXNlIHNoZWxsIHRvIGdldCBwYXRocy4gQWxzbyBjYXB0dXJlIGlmIGJ1c3lib3ggd2FzIHNhdmVkLgorICAgICAgICBCVVNZQk9YPSIiCisgICAgICAgIGlmIFsgIngkRCIgPSAieCIgXSA7IHRoZW4gCisgICAgICAgICAgIGZvciBidXN5Ym94X3JtZGlyIGluIC90bXAvYnVzeWJveHJtLSo7IGRvCisgICAgICAgICAgICAgICBpZiBbICIkYnVzeWJveF9ybWRpciIgIT0gJy90bXAvYnVzeWJveHJtLSonIF0gOyB0aGVuCisgICAgICAgICAgICAgICAgICBleHBvcnQgUEFUSD0kYnVzeWJveF9ybWRpcjokUEFUSAorICAgICAgICAgICAgICAgICAgaWYgWyAtZSAkYnVzeWJveF9ybWRpci9idXN5Ym94KiBdIDsgdGhlbgorICAgICAgICAgICAgICAgICAgICBCVVNZQk9YPSIkYnVzeWJveF9ybWRpci9idXN5Ym94KiIKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICBmaQorICAgICAgICAgICBkb25lCisgICAgICAgIGZpCit9CisKK3BrZ19wb3N0aW5zdF8ke1BOfV9hcHBlbmQgKCkgeworICAgICAgICAjIElmIGJ1c3lib3ggZXhpc3RzIGluIHRoZSByZW1vdmUgZGlyZWN0b3J5IGl0IGlzIGJlY2F1c2UgaXQgd2FzIHRoZSBvbmx5IHNoZWxsIGxlZnQuCisgICAgICAgIGlmIFsgIngkRCIgPSAieCIgXSA7IHRoZW4KKyAgICAgICAgICAgaWYgWyAieCRCVVNZQk9YIiAhPSAieCIgXSA7IHRoZW4KKyAgICAgICAgICAgICAgdXBkYXRlLWFsdGVybmF0aXZlcyAtLXJlbW92ZSBzaCAkQlVTWUJPWAorICAgICAgICAgICAgICBybSAtZiAkQlVTWUJPWAorICAgICAgICAgICBmaQorICAgICAgICBmaQorfSAKKwogcGtnX3ByZXJtXyR7UE59ICgpIHsKIAkjIFRoaXMgaXMgc28geW91IGNhbiBtYWtlIGJ1c3lib3ggY29tbWl0IHN1aWNpZGUgLSByZW1vdmluZyBidXN5Ym94IHdpdGggbm8gb3RoZXIgcGFja2FnZXMKIAkjIHByb3ZpZGluZyBpdHMgZmlsZXMsIHRoaXMgd2lsbCBtYWtlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgd29yaywgYnV0IHRoZSB1cGRhdGUtcmMuZCBwYXJ0CkBAIC00NTEsOSArNDc5LDI2IEBACiAJbG4gLXMgJHtiYXNlX2JpbmRpcn0vYnVzeWJveCAkdG1wZGlyL2dyZXAKIAlsbiAtcyAke2Jhc2VfYmluZGlyfS9idXN5Ym94ICR0bXBkaXIvdGFpbAogCWV4cG9ydCBQQVRIPSRQQVRIOiR0bXBkaXIKKworICAgICAgICAjIElmIGJ1c3lib3ggaXMgdGhlIHNoZWxsLCB3ZSBuZWVkIHRvIHNhdmUgaXQgc2luY2UgaXRzIHRoZSBsb3dlc3QgcHJpb3JpdHkgc2hlbGwKKyAgICAgICAgIyBSZWdpc3RlciBzYXZlZCBiaXRiYWtlIGFzIHRoZSBsb3dlc3QgcHJpb3JpdHkgc2hlbGwgcG9zc2libGUgYXMgYmFjayB1cC4KKyAgICAgICAgaWYgWyAtbiAiJChyZWFkbGluayAtZiAvYmluL3NoIHwgZ3JlcCBidXN5Ym94KSIgXSA7IHRoZW4KKyAgICAgICAgICAgQlVTWUJPWD0kKHJlYWRsaW5rIC1mIC9iaW4vc2gpCisgICAgICAgICAgIGNwICRCVVNZQk9YICR0bXBkaXIvJChiYXNlbmFtZSAkQlVTWUJPWCkKKyAgICAgICAgICAgdXBkYXRlLWFsdGVybmF0aXZlcyAtLWluc3RhbGwgL2Jpbi9zaCBzaCAkdG1wZGlyLyQoYmFzZW5hbWUgJEJVU1lCT1gpIDEgCisgICAgICAgIGZpCiB9CiAKIHBrZ19wb3N0cm1fJHtQTn0gKCkgeworICAgICAgICAjIEFkZCBwYXRoIHRvIHJlbW92ZSBkaXIgaW4gY2FzZSB3ZSByZW1vdmVkIG91ciBvbmx5IGdyZXAKKyAgICAgICAgaWYgWyAieCREIiA9ICJ4IiBdIDsgdGhlbgorICAgICAgICAgICBmb3IgYnVzeWJveF9ybWRpciBpbiAvdG1wL2J1c3lib3hybS0qOyBkbworICAgICAgICAgICAgICAgaWYgWyAiJGJ1c3lib3hfcm1kaXIiICE9ICcvdG1wL2J1c3lib3hybS0qJyBdIDsgdGhlbgorICAgICAgICAgICAgICAgICAgZXhwb3J0IFBBVEg9JGJ1c3lib3hfcm1kaXI6JFBBVEgKKyAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgIGRvbmUKKyAgICAgICAgZmkKKwogCWlmIGdyZXAgLXEgIl4ke2Jhc2VfYmluZGlyfS9iYXNoJCIgJEQke3N5c2NvbmZkaXJ9L2J1c3lib3gubGlua3MqICYmIFsgISAtZSAkRCR7YmFzZV9iaW5kaXJ9L2Jhc2ggXTsgdGhlbgogCQlwcmludGYgIiQoZ3JlcCAtdiAiXiR7YmFzZV9iaW5kaXJ9L2Jhc2gkIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzKVxuIiA+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKIAlmaQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1SZW1vdmUtc3RpbWUtZnVuY3Rpb24tY2FsbHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLVJlbW92ZS1zdGltZS1mdW5jdGlvbi1jYWxscy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Yjk0MzI4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1SZW1vdmUtc3RpbWUtZnVuY3Rpb24tY2FsbHMucGF0Y2gKQEAgLTAsMCArMSw4NSBAQAorRnJvbSBkMzUzOWJlOGYyN2I4Y2JmZGZlZTQ2MGZlMDgyOTkxNThmMDhiY2Q5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorRGF0ZTogVHVlLCAxOSBOb3YgMjAxOSAxMzowNjo0MCArMDEwMAorU3ViamVjdDogW1BBVENIXSBSZW1vdmUgc3RpbWUoKSBmdW5jdGlvbiBjYWxscworCitzdGltZSgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZ2xpYmMgMi4zMSBhbmQgcmVwbGFjZWQgd2l0aAorY2xvY2tfc2V0dGltZSgpLiBMZXQncyByZXBsYWNlIHRoZSBzdGltZSgpIGZ1bmN0aW9uIGNhbGxzIHdpdGgKK2Nsb2NrX3NldHRpbWUoKSBpbiBwcmVwZXJhdGlvbi4KKworZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQgICAgIG5ldyAgIGRlbHRhCityZGF0ZV9tYWluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5NyAgICAgMjI0ICAgICArMjcKK2Nsb2NrX3NldHRpbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtICAgICAgMjcgICAgICsyNworZGF0ZV9tYWluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5MjYgICAgIDk0MSAgICAgKzE1CitzdGltZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNyAgICAgICAtICAgICAtMzcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKGFkZC9yZW1vdmU6IDIvMiBncm93L3NocmluazogMi8wIHVwL2Rvd246IDY5Ly0zNykgICAgICAgICAgICAgVG90YWw6IDMyIGJ5dGVzCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0Lz9pZD1kMzUzOWJlOGYyN2I4Y2JmZGZlZTQ2MGZlMDgyOTkxNThmMDhiY2Q5XSAKK1NpZ25lZC1vZmYtYnk6IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KK1NpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+CistLS0KKyBjb3JldXRpbHMvZGF0ZS5jICAgICAgICAgfCA2ICsrKysrLQorIGxpYmJiL21pc3Npbmdfc3lzY2FsbHMuYyB8IDggLS0tLS0tLS0KKyB1dGlsLWxpbnV4L3JkYXRlLmMgICAgICAgfCA4ICsrKysrKy0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKKworLS0tIGEvY29yZXV0aWxzL2RhdGUuYworKysrIGIvY29yZXV0aWxzL2RhdGUuYworQEAgLTI3OSw2ICsyNzksOSBAQCBpbnQgZGF0ZV9tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhCisgCQl0aW1lKCZ0cy50dl9zZWMpOworICNlbmRpZgorIAl9CisrI2lmICFFTkFCTEVfRkVBVFVSRV9EQVRFX05BTk8KKysJdHMudHZfbnNlYyA9IDA7CisrI2VuZGlmCisgCWxvY2FsdGltZV9yKCZ0cy50dl9zZWMsICZ0bV90aW1lKTsKKyAKKyAJLyogSWYgZGF0ZSBzdHJpbmcgaXMgZ2l2ZW4sIHVwZGF0ZSB0bV90aW1lLCBhbmQgbWF5YmUgc2V0IGRhdGUgKi8KK0BAIC0zMDEsOSArMzA0LDEwIEBAIGludCBkYXRlX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGEKKyAJCWlmIChkYXRlX3N0clswXSAhPSAnQCcpCisgCQkJdG1fdGltZS50bV9pc2RzdCA9IC0xOworIAkJdHMudHZfc2VjID0gdmFsaWRhdGVfdG1fdGltZShkYXRlX3N0ciwgJnRtX3RpbWUpOworKwkJdHMudHZfbnNlYyA9IDA7CisgCisgCQkvKiBpZiBzZXR0aW5nIHRpbWUsIHNldCBpdCAqLworLQkJaWYgKChvcHQgJiBPUFRfU0VUKSAmJiBzdGltZSgmdHMudHZfc2VjKSA8IDApIHsKKysJCWlmICgob3B0ICYgT1BUX1NFVCkgJiYgY2xvY2tfc2V0dGltZShDTE9DS19SRUFMVElNRSwgJnRzKSA8IDApIHsKKyAJCQliYl9wZXJyb3JfbXNnKCJjYW4ndCBzZXQgZGF0ZSIpOworIAkJfQorIAl9CistLS0gYS9saWJiYi9taXNzaW5nX3N5c2NhbGxzLmMKKysrKyBiL2xpYmJiL21pc3Npbmdfc3lzY2FsbHMuYworQEAgLTE1LDE0ICsxNSw2IEBAIHBpZF90IGdldHNpZChwaWRfdCBwaWQpCisgCXJldHVybiBzeXNjYWxsKF9fTlJfZ2V0c2lkLCBwaWQpOworIH0KKyAKKy1pbnQgc3RpbWUoY29uc3QgdGltZV90ICp0KQorLXsKKy0Jc3RydWN0IHRpbWV2YWwgdHY7CistCXR2LnR2X3NlYyA9ICp0OworLQl0di50dl91c2VjID0gMDsKKy0JcmV0dXJuIHNldHRpbWVvZmRheSgmdHYsIE5VTEwpOworLX0KKy0KKyBpbnQgc2V0aG9zdG5hbWUoY29uc3QgY2hhciAqbmFtZSwgc2l6ZV90IGxlbikKKyB7CisgCXJldHVybiBzeXNjYWxsKF9fTlJfc2V0aG9zdG5hbWUsIG5hbWUsIGxlbik7CistLS0gYS91dGlsLWxpbnV4L3JkYXRlLmMKKysrKyBiL3V0aWwtbGludXgvcmRhdGUuYworQEAgLTk1LDkgKzk1LDEzIEBAIGludCByZGF0ZV9tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2gKKyAJaWYgKCEoZmxhZ3MgJiAyKSkgeyAvKiBubyAtcCAoLXMgbWF5IGJlIHByZXNlbnQpICovCisgCQlpZiAodGltZShOVUxMKSA9PSByZW1vdGVfdGltZSkKKyAJCQliYl9lcnJvcl9tc2coImN1cnJlbnQgdGltZSBtYXRjaGVzIHJlbW90ZSB0aW1lIik7CistCQllbHNlCistCQkJaWYgKHN0aW1lKCZyZW1vdGVfdGltZSkgPCAwKQorKwkJZWxzZSB7CisrCQkJc3RydWN0IHRpbWVzcGVjIHRzOworKwkJCXRzLnR2X3NlYyA9IHJlbW90ZV90aW1lOworKwkJCXRzLnR2X25zZWMgPSAwOworKwkJCWlmIChjbG9ja19zZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmdHMpIDwgMCkKKyAJCQkJYmJfcGVycm9yX21zZ19hbmRfZGllKCJjYW4ndCBzZXQgdGltZSBvZiBkYXkiKTsKKysJCX0KKyAJfQorIAorIAlpZiAoZmxhZ3MgIT0gMSkgLyogbm90IGxvbmUgLXMgKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtUmVtb3ZlLXN5c2NhbGwtd3JhcHBlcnMtYXJvdW5kLWNsb2NrX2dldHRpbWUtY2xvc2VzLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtUmVtb3ZlLXN5c2NhbGwtd3JhcHBlcnMtYXJvdW5kLWNsb2NrX2dldHRpbWUtY2xvc2VzLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzdmOWI4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1SZW1vdmUtc3lzY2FsbC13cmFwcGVycy1hcm91bmQtY2xvY2tfZ2V0dGltZS1jbG9zZXMtLnBhdGNoCkBAIC0wLDAgKzEsMTIwIEBACitGcm9tIGJlNWE1MDVkNzcxYTc3YzY0MGFjYzM1Y2VhYTQ3MGM4MGU2MmY5NTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgorRGF0ZTogVGh1LCAyNCBPY3QgMjAxOSAxNjoyNjo1NSArMDIwMAorU3ViamVjdDogW1BBVENIXSBSZW1vdmUgc3lzY2FsbCB3cmFwcGVycyBhcm91bmQgY2xvY2tfZ2V0dGltZSwgY2xvc2VzIDEyMDkxCisKKzEyMDkxICJEaXJlY3QgdXNlIG9mIF9fTlJfY2xvY2tfZ2V0dGltZSBpcyBub3QgdGltZTY0LXNhZmUiLgorCitmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZCAgICAgbmV3ICAgZGVsdGEKK3J1bnN2X21haW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjk4ICAgIDE3MTIgICAgICsxNAorc3RhcnRzZXJ2aWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNzggICAgIDM4MyAgICAgICs1CitnZXRfbW9ubyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMSAgICAgIDI1ICAgICAgLTYKK2RhdGVfbWFpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTMyICAgICA5MjYgICAgICAtNgorZ2V0dGltZW9mZGF5X25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTcgICAgICAgLSAgICAgLTE3CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyhhZGQvcmVtb3ZlOiAwLzEgZ3Jvdy9zaHJpbms6IDIvMiB1cC9kb3duOiAxOS8tMjkpICAgICAgICAgICAgVG90YWw6IC0xMCBieXRlcworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9YmU1YTUwNWQ3NzFhNzdjNjQwYWNjMzVjZWFhNDcwYzgwZTYyZjk1NF0KK1NpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5mbGFncyAgIHwgIDYgKysrKy0tCisgY29yZXV0aWxzL2RhdGUuYyB8IDE2ICsrKy0tLS0tLS0tLS0tLS0KKyBsaWJiYi90aW1lLmMgICAgIHwgMTEgKy0tLS0tLS0tLS0KKyBydW5pdC9ydW5zdi5jICAgIHwgMTEgKy0tLS0tLS0tLS0KKyA0IGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCisKKy0tLSBhL01ha2VmaWxlLmZsYWdzCisrKysgYi9NYWtlZmlsZS5mbGFncworQEAgLTEyOSwxMCArMTI5LDEyIEBAIGVuZGlmCisgIyBmYWxsIGJhY2sgdG8gdXNpbmcgYSB0ZW1wIGZpbGU6CisgQ1JZUFRfQVZBSUxBQkxFIDo9ICQoc2hlbGwgZWNobyAnaW50IG1haW4odm9pZCl7cmV0dXJuIDA7fScgPmNyeXB0dGVzdC5jOyAkKENDKSAkKENGTEFHUykgLWxjcnlwdCAtbyAvZGV2L251bGwgY3J5cHR0ZXN0LmMgPi9kZXYvbnVsbCAyPiYxICYmIGVjaG8gInkiOyBybSBjcnlwdHRlc3QuYykKKyBpZmVxICgkKENSWVBUX0FWQUlMQUJMRSkseSkKKy1MRExJQlMgKz0gbSBjcnlwdAorK0xETElCUyArPSBtIHJ0IGNyeXB0CisgZWxzZQorLUxETElCUyArPSBtCisrTERMSUJTICs9IG0gcnQKKyBlbmRpZgorKyMgbGlibSBtYXkgYmUgbmVlZGVkIGZvciBkYywgYXdrLCBudHBkCisrIyBsaWJydCBtYXkgYmUgbmVlZGVkIGZvciBjbG9ja19nZXR0aW1lKCkKKyAKKyAjIGxpYnBhbSBtYXkgdXNlIGxpYnB0aHJlYWQsIGxpYmRsIGFuZC9vciBsaWJhdWRpdC4KKyAjIE9uIHNvbWUgcGxhdGZvcm1zIHRoYXQgcmVxdWlyZXMgYW4gZXhwbGljaXQgLWxwdGhyZWFkLCAtbGRsLCAtbGF1ZGl0LgorLS0tIGEvY29yZXV0aWxzL2RhdGUuYworKysrIGIvY29yZXV0aWxzL2RhdGUuYworQEAgLTMzLDEwICszMyw5IEBACisgLy9jb25maWc6CUVuYWJsZSBvcHRpb24gKC1JKSB0byBvdXRwdXQgYW4gSVNPLTg2MDEgY29tcGxpYW50CisgLy9jb25maWc6CWRhdGUvdGltZSBzdHJpbmcuCisgLy9jb25maWc6CistLy9jb25maWc6IyBkZWZhdWx0cyB0byAibm8iOiBzdGF0J3MgbmFub3NlY29uZCBmaWVsZCBpcyBhIGJpdCBub24tcG9ydGFibGUKKyAvL2NvbmZpZzpjb25maWcgRkVBVFVSRV9EQVRFX05BTk8KKyAvL2NvbmZpZzoJYm9vbCAiU3VwcG9ydCAlW251bV1OIG5hbm9zZWNvbmQgZm9ybWF0IHNwZWNpZmllciIKKy0vL2NvbmZpZzoJZGVmYXVsdCBuICAjIHN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lKSBvciBzeXNjYWxsKF9fTlJfY2xvY2tfZ2V0dGltZTY0KQorKy8vY29uZmlnOglkZWZhdWx0IG4gIyBzdGF0J3MgbmFub3NlY29uZCBmaWVsZCBpcyBhIGJpdCBub24tcG9ydGFibGUKKyAvL2NvbmZpZzoJZGVwZW5kcyBvbiBEQVRFCisgLy9jb25maWc6CXNlbGVjdCBQTEFURk9STV9MSU5VWAorIC8vY29uZmlnOgloZWxwCitAQCAtMjcxLDE3ICsyNzAsOCBAQCBpbnQgZGF0ZV9tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhCisgCQkgKi8KKyAjZW5kaWYKKyAJfSBlbHNlIHsKKy0jaWYgRU5BQkxFX0ZFQVRVUkVfREFURV9OQU5PICYmIGRlZmluZWQoX19OUl9jbG9ja19nZXR0aW1lKQorLQkJLyogbGliYyBoYXMgaW5jcmVkaWJseSBtZXNzeSB3YXkgb2YgZG9pbmcgdGhpcywKKy0JCSAqIHR5cGljYWxseSByZXF1aXJpbmcgLWxydC4gV2UganVzdCBza2lwIGFsbCB0aGlzIG1lc3MgKi8KKy0JCXN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lLCBDTE9DS19SRUFMVElNRSwgJnRzKTsKKy0jZWxpZiBFTkFCTEVfRkVBVFVSRV9EQVRFX05BTk8gJiYgX19USU1FU0laRSA9PSA2NAorLQkJLyogTGV0J3Mgb25seSBzdXBwb3J0IHRoZSA2NCBzdWZmaXggc3lzY2FsbHMgZm9yIDY0LWJpdCB0aW1lX3QuCistCQkgKiBUaGlzIHNpbXBsaWZpZXMgdGhlIGNvZGUgZm9yIHVzIGFzIHdlIGRvbid0IG5lZWQgdG8gY29udmVydAorLQkJICogYmV0d2VlbiA2NC1iaXQgYW5kIDMyLWJpdC4gV2UgYWxzbyBkb24ndCBoYXZlIGEgd2F5IHRvCistCQkgKiByZXBvcnQgb3ZlcmZsb3cgZXJyb3JzIGhlcmUuCistCQkgKi8KKy0JCXN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lNjQsIENMT0NLX1JFQUxUSU1FLCAmdHMpOworKyNpZiBFTkFCTEVfRkVBVFVSRV9EQVRFX05BTk8KKysJCWNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZ0cyk7CisgI2Vsc2UKKyAJCXRpbWUoJnRzLnR2X3NlYyk7CisgI2VuZGlmCistLS0gYS9saWJiYi90aW1lLmMKKysrKyBiL2xpYmJiL3RpbWUuYworQEAgLTI1MywxOCArMjUzLDkgQEAgY2hhciogRkFTVF9GVU5DIHN0cmZ0aW1lX1lZWVlNTURESEhNTVNTKAorICNkZWZpbmUgQ0xPQ0tfTU9OT1RPTklDIDEKKyAjZW5kaWYKKyAKKy0vKiBsaWJjIGhhcyBpbmNyZWRpYmx5IG1lc3N5IHdheSBvZiBkb2luZyB0aGlzLAorLSAqIHR5cGljYWxseSByZXF1aXJpbmcgLWxydC4gV2UganVzdCBza2lwIGFsbCB0aGlzIG1lc3MgKi8KKyBzdGF0aWMgdm9pZCBnZXRfbW9ubyhzdHJ1Y3QgdGltZXNwZWMgKnRzKQorIHsKKy0jaWYgZGVmaW5lZChfX05SX2Nsb2NrX2dldHRpbWUpCistIAlpZiAoc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWUsIENMT0NLX01PTk9UT05JQywgdHMpKQorLSNlbGlmIF9fVElNRVNJWkUgPT0gNjQKKy0JaWYgKHN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lNjQsIENMT0NLX01PTk9UT05JQywgdHMpKQorLSNlbHNlCistIyBlcnJvciAiV2UgY3VycmVudGx5IGRvbid0IHN1cHBvcnQgYXJjaGl0ZWN0dXJlcyB3aXRob3V0ICIgXAorLQkidGhlIF9fTlJfY2xvY2tfZ2V0dGltZSBzeXNjYWxsIGFuZCAzMi1iaXQgdGltZV90IgorLSNlbmRpZgorKwlpZiAoY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsIHRzKSkKKyAJCWJiX2Vycm9yX21zZ19hbmRfZGllKCJjbG9ja19nZXR0aW1lKE1PTk9UT05JQykgZmFpbGVkIik7CisgfQorIHVuc2lnbmVkIGxvbmcgbG9uZyBGQVNUX0ZVTkMgbW9ub3RvbmljX25zKHZvaWQpCistLS0gYS9ydW5pdC9ydW5zdi5jCisrKysgYi9ydW5pdC9ydW5zdi5jCitAQCAtNTEsMTggKzUxLDkgQEAgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BRworICNpZiBFTkFCTEVfTU9OT1RPTklDX1NZU0NBTEwKKyAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKyAKKy0vKiBsaWJjIGhhcyBpbmNyZWRpYmx5IG1lc3N5IHdheSBvZiBkb2luZyB0aGlzLAorLSAqIHR5cGljYWxseSByZXF1aXJpbmcgLWxydC4gV2UganVzdCBza2lwIGFsbCB0aGlzIG1lc3MgKi8KKyBzdGF0aWMgdm9pZCBnZXR0aW1lb2ZkYXlfbnMoc3RydWN0IHRpbWVzcGVjICp0cykKKyB7CistI2lmIGRlZmluZWQoX19OUl9jbG9ja19nZXR0aW1lKQorLQlzeXNjYWxsKF9fTlJfY2xvY2tfZ2V0dGltZSwgQ0xPQ0tfUkVBTFRJTUUsIHRzKTsKKy0jZWxpZiBfX1RJTUVTSVpFID09IDY0CistCXN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lNjQsIENMT0NLX1JFQUxUSU1FLCB0cyk7CistI2Vsc2UKKy0jIGVycm9yICJXZSBjdXJyZW50bHkgZG9uJ3Qgc3VwcG9ydCBhcmNoaXRlY3R1cmVzIHdpdGhvdXQgIiBcCistCSJ0aGUgX19OUl9jbG9ja19nZXR0aW1lIHN5c2NhbGwgYW5kIDMyLWJpdCB0aW1lX3QiCistI2VuZGlmCisrCWNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsIHRzKTsKKyB9CisgI2Vsc2UKKyBzdGF0aWMgdm9pZCBnZXR0aW1lb2ZkYXlfbnMoc3RydWN0IHRpbWVzcGVjICp0cykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtZGF0ZS1Vc2UtNjQtcHJlZml4LXN5c2NhbGwtaWYtd2UtaGF2ZS10by5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtZGF0ZS1Vc2UtNjQtcHJlZml4LXN5c2NhbGwtaWYtd2UtaGF2ZS10by5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDQ1MjZiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1kYXRlLVVzZS02NC1wcmVmaXgtc3lzY2FsbC1pZi13ZS1oYXZlLXRvLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gYjdiNzQ1MmYyOTJmMDNlZWZhZmE2ZmQxZGE5YmNmYzkzM2RlZTE1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KK0RhdGU6IFdlZCwgMTggU2VwIDIwMTkgMDk6Mjg6NDkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gZGF0ZTogVXNlIDY0IHByZWZpeCBzeXNjYWxsIGlmIHdlIGhhdmUgdG8KKworU29tZSAzMi1iaXQgYXJjaGl0ZWN0dXJlcyBubyBsb25nZXIgaGF2ZSB0aGUgMzItYml0IHRpbWVfdCBzeXNjYWxscy4KK0luc3RlYWQgdGhleSBoYXZlIHN1ZmZpeGVkIHN5c2NhbGxzIHRoYXQgcmV0dXJucyBhIDY0LWJpdCB0aW1lX3QuIElmCit0aGUgYXJjaGl0ZWN0dXJlIGRvZXNuJ3QgaGF2ZSB0aGUgbm9uLXN1ZmZpeGVkIHN5c2NhbGwgYW5kIGlzIHVzaW5nIGEKKzY0LWJpdCB0aW1lX3QgbGV0J3MgdXNlIHRoZSBzdWZmaXhlZCBzeXNjYWxsIGluc3RlYWQuCisKK1RoaXMgZml4ZXMgYnVpbGQgaXNzdWVzIHdoZW4gYnVpbGRpbmcgZm9yIFJJU0MtViAzMi1iaXQgd2l0aCA1LjErIGtlcm5lbAoraGVhZGVycy4KKworSWYgYW4gYXJjaGl0ZWN0dXJlIG9ubHkgc3VwcG9ydHMgdGhlIHN1ZmZpeGVkIHN5c2NhbGxzLCBidXQgaXMgc3RpbGwKK3VzaW5nIGEgMzItYml0IHRpbWVfdCBmYWxsIGJhY2sgdG8gdGhlIGxpYmMgY2FsbC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPWI3Yjc0NTJmMjkyZjAzZWVmYWZhNmZkMWRhOWJjZmM5MzNkZWUxNWFdCitTaWduZWQtb2ZmLWJ5OiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CitTaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgorLS0tCisgY29yZXV0aWxzL2RhdGUuYyB8IDExICsrKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworLS0tIGEvY29yZXV0aWxzL2RhdGUuYworKysrIGIvY29yZXV0aWxzL2RhdGUuYworQEAgLTM2LDcgKzM2LDcgQEAKKyAvL2NvbmZpZzojIGRlZmF1bHRzIHRvICJubyI6IHN0YXQncyBuYW5vc2Vjb25kIGZpZWxkIGlzIGEgYml0IG5vbi1wb3J0YWJsZQorIC8vY29uZmlnOmNvbmZpZyBGRUFUVVJFX0RBVEVfTkFOTworIC8vY29uZmlnOglib29sICJTdXBwb3J0ICVbbnVtXU4gbmFub3NlY29uZCBmb3JtYXQgc3BlY2lmaWVyIgorLS8vY29uZmlnOglkZWZhdWx0IG4gICMgc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWUpCisrLy9jb25maWc6CWRlZmF1bHQgbiAgIyBzeXNjYWxsKF9fTlJfY2xvY2tfZ2V0dGltZSkgb3Igc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWU2NCkKKyAvL2NvbmZpZzoJZGVwZW5kcyBvbiBEQVRFCisgLy9jb25maWc6CXNlbGVjdCBQTEFURk9STV9MSU5VWAorIC8vY29uZmlnOgloZWxwCitAQCAtMjcxLDEwICsyNzEsMTcgQEAgaW50IGRhdGVfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYQorIAkJICovCisgI2VuZGlmCisgCX0gZWxzZSB7CistI2lmIEVOQUJMRV9GRUFUVVJFX0RBVEVfTkFOTworKyNpZiBFTkFCTEVfRkVBVFVSRV9EQVRFX05BTk8gJiYgZGVmaW5lZChfX05SX2Nsb2NrX2dldHRpbWUpCisgCQkvKiBsaWJjIGhhcyBpbmNyZWRpYmx5IG1lc3N5IHdheSBvZiBkb2luZyB0aGlzLAorIAkJICogdHlwaWNhbGx5IHJlcXVpcmluZyAtbHJ0LiBXZSBqdXN0IHNraXAgYWxsIHRoaXMgbWVzcyAqLworIAkJc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWUsIENMT0NLX1JFQUxUSU1FLCAmdHMpOworKyNlbGlmIEVOQUJMRV9GRUFUVVJFX0RBVEVfTkFOTyAmJiBfX1RJTUVTSVpFID09IDY0CisrCQkvKiBMZXQncyBvbmx5IHN1cHBvcnQgdGhlIDY0IHN1ZmZpeCBzeXNjYWxscyBmb3IgNjQtYml0IHRpbWVfdC4KKysJCSAqIFRoaXMgc2ltcGxpZmllcyB0aGUgY29kZSBmb3IgdXMgYXMgd2UgZG9uJ3QgbmVlZCB0byBjb252ZXJ0CisrCQkgKiBiZXR3ZWVuIDY0LWJpdCBhbmQgMzItYml0LiBXZSBhbHNvIGRvbid0IGhhdmUgYSB3YXkgdG8KKysJCSAqIHJlcG9ydCBvdmVyZmxvdyBlcnJvcnMgaGVyZS4KKysJCSAqLworKwkJc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWU2NCwgQ0xPQ0tfUkVBTFRJTUUsICZ0cyk7CisgI2Vsc2UKKyAJCXRpbWUoJnRzLnR2X3NlYyk7CisgI2VuZGlmCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLXN5c2N0bC1pZ25vcmUtRUlPLW9mLXN0YWJsZV9zZWNyZXQtYmVsb3ctcHJvYy1zeXMtbmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLXN5c2N0bC1pZ25vcmUtRUlPLW9mLXN0YWJsZV9zZWNyZXQtYmVsb3ctcHJvYy1zeXMtbmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY1OGVhZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtc3lzY3RsLWlnbm9yZS1FSU8tb2Ytc3RhYmxlX3NlY3JldC1iZWxvdy1wcm9jLXN5cy1uZS5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDNiZWUwNDYwZDc0YmFkODhlY2E2NTkyZTYzY2E5MjY5NjFiNDNiNjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDYgTWFyIDIwMjAgMTY6MDk6MjYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3lzY3RsOiBpZ25vcmUgRUlPIG9mIHN0YWJsZV9zZWNyZXQgYmVsb3cKKyAvcHJvYy9zeXMvbmV0L2lwdjYvY29uZgorCitBdm9pZCBjb25mdXNpbmcgbWVzc2FnZXMgY2F1c2VkIGJ5IEVJTyBvbiByZWFkaW5nCisvcHJvYy9zeXMvbmV0L2lwdjYvY29uZi8qL3N0YWJsZV9zZWNyZXQgaWYgdGhvc2UgYXJlIG5vdCBzZXQgeWV0LgorTWFrZSBpdCBiZWhhdmUgdGhlIHNhbWUgYXMgcHJvY3BzKD49My4zLjEzKS4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2J1c3lib3hAYnVzeWJveC5uZXQgbWFpbGluZyBsaXN0XQorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBwcm9jcHMvc3lzY3RsLmMgfCA5ICsrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Byb2Nwcy9zeXNjdGwuYyBiL3Byb2Nwcy9zeXNjdGwuYworaW5kZXggNmQ3NzE4NWNhLi40MmM1MWNjOTEgMTAwNjQ0CistLS0gYS9wcm9jcHMvc3lzY3RsLmMKKysrKyBiL3Byb2Nwcy9zeXNjdGwuYworQEAgLTIwMiw3ICsyMDIsMTQgQEAgc3RhdGljIGludCBzeXNjdGxfYWN0X29uX3NldHRpbmcoY2hhciAqc2V0dGluZykKKyAJCXZhbHVlID0gY3B0ciA9IHhtYWxsb2NfcmVhZChmZCwgTlVMTCk7CisgCQljbG9zZShmZCk7CisgCQlpZiAodmFsdWUgPT0gTlVMTCkgeworLQkJCWJiX3BlcnJvcl9tc2coImVycm9yIHJlYWRpbmcga2V5ICclcyciLCBvdXRuYW1lKTsKKysJCQlzd2l0Y2ggKGVycm5vKSB7CisrCQkJCWNhc2UgRUlPOgorKwkJCQkJLyogSWdub3JlIHN0YWJsZV9zZWNyZXQgYmVsb3cgL3Byb2Mvc3lzL25ldC9pcHY2L2NvbmYgKi8KKysJCQkJCWJyZWFrOworKwkJCQlkZWZhdWx0OgorKwkJCQkJYmJfcGVycm9yX21zZygiZXJyb3IgcmVhZGluZyBrZXkgJyVzJyIsIG91dG5hbWUpOworKwkJCQkJYnJlYWs7CisrCQkJfQorIAkJCXJldHZhbCA9IEVYSVRfRkFJTFVSRTsKKyAJCQlnb3RvIGVuZDsKKyAJCX0KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtdGltZS1Vc2UtNjQtcHJlZml4LXN5c2NhbGwtaWYtd2UtaGF2ZS10by5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtdGltZS1Vc2UtNjQtcHJlZml4LXN5c2NhbGwtaWYtd2UtaGF2ZS10by5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGE2YzBkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS10aW1lLVVzZS02NC1wcmVmaXgtc3lzY2FsbC1pZi13ZS1oYXZlLXRvLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gOTAyZDM5OTI5MjJmYzhkYjg0OTVkNWZiMzBhNDU4MTcxMWI2MGM2MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KK0RhdGU6IFdlZCwgMTggU2VwIDIwMTkgMDk6Mjg6NTAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gdGltZTogVXNlIDY0IHByZWZpeCBzeXNjYWxsIGlmIHdlIGhhdmUgdG8KKworU29tZSAzMi1iaXQgYXJjaGl0ZWN0dXJlcyBubyBsb25nZXIgaGF2ZSB0aGUgMzItYml0IHRpbWVfdCBzeXNjYWxscy4KK0luc3RlYWQgdGhleSBoYXZlIHN1ZmZpeGVkIHN5c2NhbGxzIHRoYXQgcmV0dXJucyBhIDY0LWJpdCB0aW1lX3QuIElmCit0aGUgYXJjaGl0ZWN0dXJlIGRvZXNuJ3QgaGF2ZSB0aGUgbm9uLXN1ZmZpeGVkIHN5c2NhbGwgYW5kIGlzIHVzaW5nIGEKKzY0LWJpdCB0aW1lX3QgbGV0J3MgdXNlIHRoZSBzdWZmaXhlZCBzeXNjYWxsIGluc3RlYWQuCisKK1RoaXMgZml4ZXMgYnVpbGQgaXNzdWVzIHdoZW4gYnVpbGRpbmcgZm9yIFJJU0MtViAzMi1iaXQgd2l0aCA1LjErIGtlcm5lbAoraGVhZGVycy4KKworSWYgYW4gYXJjaGl0ZWN0dXJlIG9ubHkgc3VwcG9ydHMgdGhlIHN1ZmZpeGVkIHN5c2NhbGxzLCBidXQgaXMgc3RpbGwKK3VzaW5nIGEgMzItYml0IHRpbWVfdCByZXBvcnQgYSBjb21waWxhdGlvbiBlcnJvci4gVGhpcyBhdm9pZHMgdXMgaGF2ZSB0bworZGVhbCB3aXRoIGNvbnZlcnRpbmcgYmV0d2VlbiA2NC1iaXQgYW5kIDMyLWJpdCB2YWx1ZXMuIFRoZXJlIGFyZQorY3VycmVudGx5IG5vIGFyY2hpdGVjdHVyZXMgd2hlcmUgdGhpcyBpcyB0aGUgY2FzZS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPTkwMmQzOTkyOTIyZmM4ZGI4NDk1ZDVmYjMwYTQ1ODE3MTFiNjBjNjJdCitTaWduZWQtb2ZmLWJ5OiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CitTaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgorLS0tCisgbGliYmIvdGltZS5jIHwgNyArKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQorCistLS0gYS9saWJiYi90aW1lLmMKKysrKyBiL2xpYmJiL3RpbWUuYworQEAgLTI1Nyw3ICsyNTcsMTQgQEAgY2hhciogRkFTVF9GVU5DIHN0cmZ0aW1lX1lZWVlNTURESEhNTVNTKAorICAqIHR5cGljYWxseSByZXF1aXJpbmcgLWxydC4gV2UganVzdCBza2lwIGFsbCB0aGlzIG1lc3MgKi8KKyBzdGF0aWMgdm9pZCBnZXRfbW9ubyhzdHJ1Y3QgdGltZXNwZWMgKnRzKQorIHsKKy0JaWYgKHN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lLCBDTE9DS19NT05PVE9OSUMsIHRzKSkKKysjaWYgZGVmaW5lZChfX05SX2Nsb2NrX2dldHRpbWUpCisrIAlpZiAoc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWUsIENMT0NLX01PTk9UT05JQywgdHMpKQorKyNlbGlmIF9fVElNRVNJWkUgPT0gNjQKKysJaWYgKHN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lNjQsIENMT0NLX01PTk9UT05JQywgdHMpKQorKyNlbHNlCisrIyBlcnJvciAiV2UgY3VycmVudGx5IGRvbid0IHN1cHBvcnQgYXJjaGl0ZWN0dXJlcyB3aXRob3V0ICIgXAorKwkidGhlIF9fTlJfY2xvY2tfZ2V0dGltZSBzeXNjYWxsIGFuZCAzMi1iaXQgdGltZV90IgorKyNlbmRpZgorIAkJYmJfZXJyb3JfbXNnX2FuZF9kaWUoImNsb2NrX2dldHRpbWUoTU9OT1RPTklDKSBmYWlsZWQiKTsKKyB9CisgdW5zaWduZWQgbG9uZyBsb25nIEZBU1RfRlVOQyBtb25vdG9uaWNfbnModm9pZCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDMtcnVuc3YtVXNlLTY0LXByZWZpeC1zeXNjYWxsLWlmLXdlLWhhdmUtdG8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAzLXJ1bnN2LVVzZS02NC1wcmVmaXgtc3lzY2FsbC1pZi13ZS1oYXZlLXRvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NjA1NzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAzLXJ1bnN2LVVzZS02NC1wcmVmaXgtc3lzY2FsbC1pZi13ZS1oYXZlLXRvLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gOGM3NDE5NjQ5ZDZlNmZkYThmYTdkMGU4NjMwODRjNzhhYzcyODYyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KK0RhdGU6IFdlZCwgMjggQXVnIDIwMTkgMTA6NTQ6MTUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIHJ1bnN2OiBVc2UgNjQgcHJlZml4IHN5c2NhbGwgaWYgd2UgaGF2ZSB0bworCitTb21lIDMyLWJpdCBhcmNoaXRlY3R1cmVzIG5vIGxvbmdlciBoYXZlIHRoZSAzMi1iaXQgdGltZV90IHN5c2NhbGxzLgorSW5zdGVhZCB0aGV5IGhhdmUgc3VmZml4ZWQgc3lzY2FsbHMgdGhhdCByZXR1cm5zIGEgNjQtYml0IHRpbWVfdC4gSWYKK3RoZSBhcmNoaXRlY3R1cmUgZG9lc24ndCBoYXZlIHRoZSBub24tc3VmZml4ZWQgc3lzY2FsbCBhbmQgaXMgdXNpbmcgYQorNjQtYml0IHRpbWVfdCBsZXQncyB1c2UgdGhlIHN1ZmZpeGVkIHN5c2NhbGwgaW5zdGVhZC4KKworVGhpcyBmaXhlcyBidWlsZCBpc3N1ZXMgd2hlbiBidWlsZGluZyBmb3IgUklTQy1WIDMyLWJpdCB3aXRoIDUuMSsga2VybmVsCitoZWFkZXJzLgorCitJZiBhbiBhcmNoaXRlY3R1cmUgb25seSBzdXBwb3J0cyB0aGUgc3VmZml4ZWQgc3lzY2FsbHMsIGJ1dCBpcyBzdGlsbAordXNpbmcgYSAzMi1iaXQgdGltZV90IHJlcG9ydCBhIGNvbXBpbGF0aW9uIGVycm9yLiBUaGlzIGF2b2lkcyB1cyBoYXZlIHRvCitkZWFsIHdpdGggY29udmVydGluZyBiZXR3ZWVuIDY0LWJpdCBhbmQgMzItYml0IHZhbHVlcy4gVGhlcmUgYXJlCitjdXJyZW50bHkgbm8gYXJjaGl0ZWN0dXJlcyB3aGVyZSB0aGlzIGlzIHRoZSBjYXNlLgorCitTaWduZWQtb2ZmLWJ5OiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9YWQyN2Q0NGViZTk1MDMzNTYxNmYzN2UzNjg2MzQ2OWRjMTgxYjQ1NV0KKy0tLQorIHJ1bml0L3J1bnN2LmMgfCA3ICsrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9ydW5pdC9ydW5zdi5jIGIvcnVuaXQvcnVuc3YuYworaW5kZXggY2NjNzYyZDc4Li43Mzc5MDliMGUgMTAwNjQ0CistLS0gYS9ydW5pdC9ydW5zdi5jCisrKysgYi9ydW5pdC9ydW5zdi5jCitAQCAtNTUsNyArNTUsMTQgQEAgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgICogdHlwaWNhbGx5IHJlcXVpcmluZyAtbHJ0LiBXZSBqdXN0IHNraXAgYWxsIHRoaXMgbWVzcyAqLworIHN0YXRpYyB2b2lkIGdldHRpbWVvZmRheV9ucyhzdHJ1Y3QgdGltZXNwZWMgKnRzKQorIHsKKysjaWYgZGVmaW5lZChfX05SX2Nsb2NrX2dldHRpbWUpCisgCXN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lLCBDTE9DS19SRUFMVElNRSwgdHMpOworKyNlbGlmIF9fVElNRVNJWkUgPT0gNjQKKysJc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWU2NCwgQ0xPQ0tfUkVBTFRJTUUsIHRzKTsKKysjZWxzZQorKyMgZXJyb3IgIldlIGN1cnJlbnRseSBkb24ndCBzdXBwb3J0IGFyY2hpdGVjdHVyZXMgd2l0aG91dCAiIFwKKysJInRoZSBfX05SX2Nsb2NrX2dldHRpbWUgc3lzY2FsbCBhbmQgMzItYml0IHRpbWVfdCIKKysjZW5kaWYKKyB9CisgI2Vsc2UKKyBzdGF0aWMgdm9pZCBnZXR0aW1lb2ZkYXlfbnMoc3RydWN0IHRpbWVzcGVjICp0cykKKy0tIAorMi4yMi4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMzEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMzEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRiMWYyYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjMxLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1yZXF1aXJlIGJ1c3lib3guaW5jCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5idXN5Ym94Lm5ldC9kb3dubG9hZHMvYnVzeWJveC0ke1BWfS50YXIuYnoyO25hbWU9dGFyYmFsbCBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXVkaGNwYy1ub19kZWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maW5kLXRvdWNoc2NyZWVuLnNoIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtY3JvbiBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWh0dHBkIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtdWRoY3BkIFwKLSAgICAgICAgICAgZmlsZTovL2RlZmF1bHQuc2NyaXB0IFwKLSAgICAgICAgICAgZmlsZTovL3NpbXBsZS5zY3JpcHQgXAotICAgICAgICAgICBmaWxlOi8vaHdjbG9jay5zaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zeXNsb2cgXAotICAgICAgICAgICBmaWxlOi8vc3lzbG9nLXN0YXJ0dXAuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9zeXNsb2cuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXN5c2xvZy5kZWZhdWx0IFwKLSAgICAgICAgICAgZmlsZTovL21kZXYgXAotICAgICAgICAgICBmaWxlOi8vbWRldi5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL21kZXYtbW91bnQuc2ggXAotICAgICAgICAgICBmaWxlOi8vZGVmY29uZmlnIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtc3lzbG9nLnNlcnZpY2UuaW4gXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1rbG9nZC5zZXJ2aWNlLmluIFwKLSAgICAgICAgICAgZmlsZTovL2ZhaWxfb25fbm9fbWVkaWEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2luZXRkLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vaW5ldGQgXAotICAgICAgICAgICBmaWxlOi8vbG9naW4tdXRpbGl0aWVzLmNmZyBcCi0gICAgICAgICAgIGZpbGU6Ly9yZWNvZ25pemVfY29ubm1hbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1jcm9zcy1tZW51Y29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLUNDLXdoZW4tbGlua2luZy1pbnN0ZWFkLW9mLUxELWFuZC11c2UtQ0ZMQUdTLWFuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tb3VudC12aWEtbGFiZWwuY2ZnIFwKLSAgICAgICAgICAgZmlsZTovL3NoYTFzdW0uY2ZnIFwKLSAgICAgICAgICAgZmlsZTovL3NoYTI1NnN1bS5jZmcgXAotICAgICAgICAgICBmaWxlOi8vZ2V0b3B0cy5jZmcgXAotICAgICAgICAgICBmaWxlOi8vcmVzaXplLmNmZyBcCi0gICAgICAgICAgICR7QFsiIiwgImZpbGU6Ly9pbml0LmNmZyJdWyhkLmdldFZhcignVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlcicpID09ICdidXN5Ym94JyldfSBcCi0gICAgICAgICAgICR7QFsiIiwgImZpbGU6Ly9tZGV2LmNmZyJdWyhkLmdldFZhcignVklSVFVBTC1SVU5USU1FX2Rldl9tYW5hZ2VyJykgPT0gJ2J1c3lib3gtbWRldicpXX0gXAotICAgICAgICAgICBmaWxlOi8vc3lzbG9nLmNmZyBcCi0gICAgICAgICAgIGZpbGU6Ly91bmljb2RlLmNmZyBcCi0gICAgICAgICAgIGZpbGU6Ly9yY1MgXAotICAgICAgICAgICBmaWxlOi8vcmNLIFwKLSAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLWxpYmJiLXJhY2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0c3VpdGUtY2hlY2stdXVkZWNvZGUtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHN1aXRlLXVzZS13d3cuZXhhbXBsZS5vcmctZm9yLXdnZXQtdGVzdC1jYXNlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWR1LWwtd29ya3MtZml4LXRvLXVzZS0xNDUtaW5zdGVhZC1vZi0xNDQucGF0Y2ggXAotIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vbXVzbC5jZmcgIgotCi1TUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICJjZGJhNWQ0NDU4Zjk0NGNlZWM1Y2RjZjdjNDkxNGI2OSIKLVNSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gIjBlNDkyNTM5MmZkOWYzNzQzY2M1MTdlMDMxYjY4YjAxMmIyNGE2M2IwY2Y2YzFmZjAzY2NlN2JiMzg0NmNjOTkiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjMxLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjMxLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJiMWQ1OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMzEuMS5iYgpAQCAtMCwwICsxLDU1IEBACityZXF1aXJlIGJ1c3lib3guaW5jCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9idXN5Ym94Lm5ldC9kb3dubG9hZHMvYnVzeWJveC0ke1BWfS50YXIuYnoyO25hbWU9dGFyYmFsbCBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXVkaGNwYy1ub19kZWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maW5kLXRvdWNoc2NyZWVuLnNoIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtY3JvbiBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWh0dHBkIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtdWRoY3BkIFwKKyAgICAgICAgICAgZmlsZTovL2RlZmF1bHQuc2NyaXB0IFwKKyAgICAgICAgICAgZmlsZTovL3NpbXBsZS5zY3JpcHQgXAorICAgICAgICAgICBmaWxlOi8vaHdjbG9jay5zaCBcCisgICAgICAgICAgIGZpbGU6Ly9zeXNsb2cgXAorICAgICAgICAgICBmaWxlOi8vc3lzbG9nLXN0YXJ0dXAuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9zeXNsb2cuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXN5c2xvZy5kZWZhdWx0IFwKKyAgICAgICAgICAgZmlsZTovL21kZXYgXAorICAgICAgICAgICBmaWxlOi8vbWRldi5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL21kZXYtbW91bnQuc2ggXAorICAgICAgICAgICBmaWxlOi8vZGVmY29uZmlnIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtc3lzbG9nLnNlcnZpY2UuaW4gXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1rbG9nZC5zZXJ2aWNlLmluIFwKKyAgICAgICAgICAgZmlsZTovL2ZhaWxfb25fbm9fbWVkaWEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2luZXRkLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vaW5ldGQgXAorICAgICAgICAgICBmaWxlOi8vbG9naW4tdXRpbGl0aWVzLmNmZyBcCisgICAgICAgICAgIGZpbGU6Ly9yZWNvZ25pemVfY29ubm1hbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1jcm9zcy1tZW51Y29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLUNDLXdoZW4tbGlua2luZy1pbnN0ZWFkLW9mLUxELWFuZC11c2UtQ0ZMQUdTLWFuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tb3VudC12aWEtbGFiZWwuY2ZnIFwKKyAgICAgICAgICAgZmlsZTovL3NoYTFzdW0uY2ZnIFwKKyAgICAgICAgICAgZmlsZTovL3NoYTI1NnN1bS5jZmcgXAorICAgICAgICAgICBmaWxlOi8vZ2V0b3B0cy5jZmcgXAorICAgICAgICAgICBmaWxlOi8vcmVzaXplLmNmZyBcCisgICAgICAgICAgICR7QFsiIiwgImZpbGU6Ly9pbml0LmNmZyJdWyhkLmdldFZhcignVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlcicpID09ICdidXN5Ym94JyldfSBcCisgICAgICAgICAgICR7QFsiIiwgImZpbGU6Ly9tZGV2LmNmZyJdWyhkLmdldFZhcignVklSVFVBTC1SVU5USU1FX2Rldl9tYW5hZ2VyJykgPT0gJ2J1c3lib3gtbWRldicpXX0gXAorICAgICAgICAgICBmaWxlOi8vc3lzbG9nLmNmZyBcCisgICAgICAgICAgIGZpbGU6Ly91bmljb2RlLmNmZyBcCisgICAgICAgICAgIGZpbGU6Ly9yY1MgXAorICAgICAgICAgICBmaWxlOi8vcmNLIFwKKyAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLWxpYmJiLXJhY2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0c3VpdGUtY2hlY2stdXVkZWNvZGUtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHN1aXRlLXVzZS13d3cuZXhhbXBsZS5vcmctZm9yLXdnZXQtdGVzdC1jYXNlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWR1LWwtd29ya3MtZml4LXRvLXVzZS0xNDUtaW5zdGVhZC1vZi0xNDQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kYXRlLVVzZS02NC1wcmVmaXgtc3lzY2FsbC1pZi13ZS1oYXZlLXRvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGltZS1Vc2UtNjQtcHJlZml4LXN5c2NhbGwtaWYtd2UtaGF2ZS10by5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXJ1bnN2LVVzZS02NC1wcmVmaXgtc3lzY2FsbC1pZi13ZS1oYXZlLXRvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXN5c2NhbGwtd3JhcHBlcnMtYXJvdW5kLWNsb2NrX2dldHRpbWUtY2xvc2VzLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1zdGltZS1mdW5jdGlvbi1jYWxscy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN5c2N0bC1pZ25vcmUtRUlPLW9mLXN0YWJsZV9zZWNyZXQtYmVsb3ctcHJvYy1zeXMtbmUucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vbXVzbC5jZmcgIgorCitTUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICI3MDkxM2VkYWYyMjYzYTE1NzM5M2FmMDc1NjVjMTdmMCIKK1NSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gImQwZjk0MGE3MmY2NDg5NDNjMWYyMjExZTBlMzExNzM4N2MzMWQ3NjUxMzdkOTJiZDgyODRhM2ZiOTc1MmE5OTgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvZmlsZXMvaW5pdHRhYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9pbml0dGFiCmluZGV4IDJiYzgzMWMuLmU4ZWMyYWIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9pbml0dGFiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9pbml0dGFiCkBAIC04LDExICs4LDE3IEBACiA6OnN5c2luaXQ6L2Jpbi9ta2RpciAtcCAvZGV2L3B0cwogOjpzeXNpbml0Oi9iaW4vbW91bnQgLXQgZGV2cHRzIGRldnB0cyAvZGV2L3B0cwogOjpzeXNpbml0Oi9iaW4vbW91bnQgLWEKLQorOjpzeXNpbml0Oi9zYmluL3N3YXBvbiAtYQorbnVsbDo6c3lzaW5pdDovYmluL2xuIC1zZiAvcHJvYy9zZWxmL2ZkIC9kZXYvZmQKK251bGw6OnN5c2luaXQ6L2Jpbi9sbiAtc2YgL3Byb2Mvc2VsZi9mZC8wIC9kZXYvc3RkaW4KK251bGw6OnN5c2luaXQ6L2Jpbi9sbiAtc2YgL3Byb2Mvc2VsZi9mZC8xIC9kZXYvc3Rkb3V0CitudWxsOjpzeXNpbml0Oi9iaW4vbG4gLXNmIC9wcm9jL3NlbGYvZmQvMiAvZGV2L3N0ZGVycgorIyBzZXQgaG9zdG5hbWUKK251bGw6OnN5c2luaXQ6L2Jpbi9idXN5Ym94IGhvc3RuYW1lIC1GIC9ldGMvaG9zdG5hbWUKIDo6c3lzaW5pdDovZXRjL2luaXQuZC9yY1MKIAogIyBTdHVmZiB0byBkbyBiZWZvcmUgcmVib290aW5nCi06OmN0cmxhbHRkZWw6L3NiaW4vcmVib290CisjOjpjdHJsYWx0ZGVsOi9zYmluL3JlYm9vdAogOjpzaHV0ZG93bjovZXRjL2luaXQuZC9yY0sKIDo6c2h1dGRvd246L3NiaW4vc3dhcG9mZiAtYQogOjpzaHV0ZG93bjovYmluL3Vtb3VudCAtYSAtcgpAQCAtMjAsNSArMjYsMyBAQAogIyBTdHVmZiB0byBkbyB3aGVuIHJlc3RhcnRpbmcgdGhlIGluaXQgcHJvY2VzcwogOjpyZXN0YXJ0Oi9zYmluL2luaXQKIAotIyBzZXQgaG9zdG5hbWUKLW51bGw6OnN5c2luaXQ6L2Jpbi9idXN5Ym94IGhvc3RuYW1lIC1GIC9ldGMvaG9zdG5hbWUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvZmlsZXMvcnVuLXB0ZXN0CmluZGV4IGIxOWU1YjUuLjc2ODczYzkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2ZpbGVzL3J1bi1wdGVzdApAQCAtNiw0ICs2LDQgQEAKIGV4cG9ydCBTS0lQX0tOT1dOX0JVR1M9MQogCiBjZCB0ZXN0c3VpdGUgfHwgZXhpdCAxCi0uL3J1bnRlc3QgLXYgfCBzZWQgLXIgJ3MvXihTS0lQUEVEfFVOVEVTVEVEKTovU0tJUDovJworTEFORz1DLlVURi04IC4vcnVudGVzdCAtdiB8IHNlZCAtciAncy9eKFNLSVBQRUR8VU5URVNURUQpOi9TS0lQOi8nCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvZmlsZXMvc2ltcGxlLnNjcmlwdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9zaW1wbGUuc2NyaXB0CmluZGV4IDZlZDAyOTMuLjAxMzQ0MDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9zaW1wbGUuc2NyaXB0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9zaW1wbGUuc2NyaXB0CkBAIC0yOCw3ICsyOCw3IEBACiAJCWZpCiAJCWlmICEgcm9vdF9pc19uZnMgOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBbICRoYXZlX2Jpbl9pcCAtZXEgMSBdOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9TQklOX0RJUi9pcCBhZGRyIGZsdXNoIGRldiAkaW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9TQklOX0RJUi9pcCAtNCBhZGRyIGZsdXNoIGRldiAkaW50ZXJmYWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9TQklOX0RJUi9pcCBsaW5rIHNldCBkZXYgJGludGVyZmFjZSB1cAogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvU0JJTl9ESVIvaWZjb25maWcgJGludGVyZmFjZSAwLjAuMC4wCkBAIC01OSw3ICs1OSw3IEBACiAJCQltZXRyaWM9MTAKIAkJCWZvciBpIGluICRyb3V0ZXIgOyBkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBbICRoYXZlX2Jpbl9pcCAtZXEgMSBdOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL1NCSU5fRElSL2lwIHJvdXRlIGFkZCBkZWZhdWx0IHZpYSAkaSBtZXRyaWMgJG1ldHJpYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9TQklOX0RJUi9pcCByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgJGkgbWV0cmljICRtZXRyaWMgZGV2ICRpbnRlcmZhY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9TQklOX0RJUi9yb3V0ZSBhZGQgZGVmYXVsdCBndyAkaSBkZXYgJGludGVyZmFjZSBtZXRyaWMgJG1ldHJpYyAyPi9kZXYvbnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvMDAwMS1Db3Zlci10aGUtZWxzZS13aXRoLV9fR0xJQkNfXy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yLzAwMDEtQ292ZXItdGhlLWVsc2Utd2l0aC1fX0dMSUJDX18ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjZTRiZjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvMDAwMS1Db3Zlci10aGUtZWxzZS13aXRoLV9fR0xJQkNfXy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gYjZhNTliMDVmMWZhNTE0YzZiMzg3Yzk1NDRiZDYzYjFiZmNmMmVlZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDEzIEphbiAyMDE2IDA1OjM4OjI5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIENvdmVyIHRoZSBlbHNlIHdpdGggX19HTElCQ19fCi0KLUZpeGVzIGJ1aWxkIGVycm9ycyBvbiBtdXNsL3g4NgotCi18IEluIGZpbGUgaW5jbHVkZWQgZnJvbQotL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS9hc20vdGVybWlvcy5oOjE6MCwKLXwgICAgICAgICAgICAgICAgICBmcm9tCi0vaG9tZS91YnVudHUvd29yay9vZS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtbXVzbC9zeXNyb290cy9xZW11eDg2L3Vzci9pbmNsdWRlL2xpbnV4L3Rlcm1pb3MuaDo1LAotfCAgICAgICAgICAgICAgICAgIGZyb20KLS9ob21lL3VidW50dS93b3JrL29lL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1tdXNsL3dvcmsvaTU4Ni1vZS1saW51eC1tdXNsL2NvbnNvbGUtdG9vbHMvMC4zLjItcjgvY29uc29sZS10b29scy0wLjMuMi92dHRvb2xzL3Jlc2l6ZWNvbnMuYzo4NjoKLXwKLS9ob21lL3VidW50dS93b3JrL29lL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1tdXNsL3N5c3Jvb3RzL3FlbXV4ODYvdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvdGVybWlvcy5oOjE0Ojg6Ci1lcnJvcjogcmVkZWZpbml0aW9uIG9mICdzdHJ1Y3Qgd2luc2l6ZScKLXwgIHN0cnVjdCB3aW5zaXplIHsKLXwgICAgICAgICBeCi18IEluIGZpbGUgaW5jbHVkZWQgZnJvbQotL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS9zeXMvaW9jdGwuaDo3OjAsCi18ICAgICAgICAgICAgICAgICAgZnJvbQotL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvd29yay9pNTg2LW9lLWxpbnV4LW11c2wvY29uc29sZS10b29scy8wLjMuMi1yOC9jb25zb2xlLXRvb2xzLTAuMy4yL3Z0dG9vbHMvcmVzaXplY29ucy5jOjgxOgotfAotL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS9iaXRzL2lvY3RsLmg6OTA6ODoKLW5vdGU6IG9yaWdpbmFsbHkgZGVmaW5lZCBoZXJlCi18ICBzdHJ1Y3Qgd2luc2l6ZSB7Ci18ICAgICAgICAgXgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHZ0dG9vbHMvcmVzaXplY29ucy5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdnR0b29scy9yZXNpemVjb25zLmMgYi92dHRvb2xzL3Jlc2l6ZWNvbnMuYwotaW5kZXggZjBhNzA1NS4uZTg3NTNiMSAxMDA2NDQKLS0tLSBhL3Z0dG9vbHMvcmVzaXplY29ucy5jCi0rKysgYi92dHRvb2xzL3Jlc2l6ZWNvbnMuYwotQEAgLTgxLDcgKzgxLDcgQEAKLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2lmIChfX0dOVV9MSUJSQVJZX18gPj0gNikKLSAjIGluY2x1ZGUgPHN5cy9wZXJtLmg+Ci0tI2Vsc2UKLSsjZWxpZiBkZWZpbmVkIF9fR0xJQkNfXwotICMgaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSAjIGluY2x1ZGUgPGxpbnV4L3Rlcm1pb3MuaD4KLSAjZW5kaWYKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvMDAwMS1GaXgtZm9ybWF0LXNlY3VyaXR5LWNvbXBpbGF0aW9uLWVycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvMDAwMS1GaXgtZm9ybWF0LXNlY3VyaXR5LWNvbXBpbGF0aW9uLWVycm9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTcyZWM2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yLzAwMDEtRml4LWZvcm1hdC1zZWN1cml0eS1jb21waWxhdGlvbi1lcnJvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLVN1YmplY3Q6IEZpeCAnZm9ybWF0LXNlY3VyaXR5JyBjb21waWxhdGlvbiBlcnJvci4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGtiZHRvb2xzL2tiZF9tb2RlLmMgICAgfCA2ICsrKy0tLQotIGtiZHRvb2xzL3NldG1ldGFtb2RlLmMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9rYmR0b29scy9rYmRfbW9kZS5jIGIva2JkdG9vbHMva2JkX21vZGUuYwotaW5kZXggMDJkY2EzOC4uOGRiY2QzOSAxMDA2NDQKLS0tLSBhL2tiZHRvb2xzL2tiZF9tb2RlLmMKLSsrKyBiL2tiZHRvb2xzL2tiZF9tb2RlLmMKLUBAIC0xMjAsNyArMTIwLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgICAgICAvKiByZXBvcnQgbW9kZSAqLwotICAgICAgIGlmIChpb2N0bChmZCwgS0RHS0JNT0RFLCAmbW9kZSkpIAotIAl7Ci0tCSAgZnByaW50ZihzdGRlcnIsIHByb2duYW1lKTsKLSsJICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgcHJvZ25hbWUpOwotIAkgIHBlcnJvcihfKCI6IGVycm9yIHJlYWRpbmcga2V5Ym9hcmQgbW9kZVxuIikpOwotIAkgIGV4aXQoMSk7Ci0gCX0KLUBAIC0xNTEsNyArMTUxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgICAga2JkX3JlcC5wZXJpb2QgPSByYXRlOwotICAgICBpZiAoaW9jdGwoZmQsIEtES0JEUkVQLCAma2JkX3JlcCkpCi0gICAgICAgewotLQlmcHJpbnRmKHN0ZGVyciwgcHJvZ25hbWUpOwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzIiwgcHJvZ25hbWUpOwotIAlwZXJyb3IoXygiOiBlcnJvciBzZXR0aW5nIGtleWJvYXJkIHJlcGVhdCBtb2RlXG4iKSk7Ci0gCWV4aXQoMSk7Ci0gICAgICAgfQotQEAgLTE2MCw3ICsxNjAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgCi0gICBpZiAoaW9jdGwoZmQsIEtEU0tCTU9ERSwgbW9kZSkpCi0gICAgIHsKLS0gICAgICBmcHJpbnRmKHN0ZGVyciwgcHJvZ25hbWUpOwotKyAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMiLCBwcm9nbmFtZSk7Ci0gICAgICAgcGVycm9yKF8oIjogZXJyb3Igc2V0dGluZyBrZXlib2FyZCBtb2RlXG4iKSk7Ci0gICAgICAgZXhpdCgxKTsKLSAgICAgfQotZGlmZiAtLWdpdCBhL2tiZHRvb2xzL3NldG1ldGFtb2RlLmMgYi9rYmR0b29scy9zZXRtZXRhbW9kZS5jCi1pbmRleCA1YmVkOTQ1Li4wYmE3Njc2IDEwMDY0NAotLS0tIGEva2JkdG9vbHMvc2V0bWV0YW1vZGUuYwotKysrIGIva2JkdG9vbHMvc2V0bWV0YW1vZGUuYwotQEAgLTQyLDcgKzQyLDcgQEAgdm9pZCByZXBvcnQoaW50IG1ldGEpCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgcyA9IE5fKCJTdHJhbmdlIG1vZGUgZm9yIE1ldGEga2V5P1xuIik7Ci0gICAgIH0KLS0gIHByaW50ZihfKHMpKTsKLSsgIHByaW50ZigiJXMiLCBfKHMpKTsKLSB9Ci0gCi0gc3RydWN0IG1ldGEgCi0tLSAKLTIuOC4zCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yLzAwMDEta2JkdG9vbHMtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItdV9jaGFyLWFuZC11X3Nob3J0LS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yLzAwMDEta2JkdG9vbHMtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItdV9jaGFyLWFuZC11X3Nob3J0LS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRiNWIwNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi8wMDAxLWtiZHRvb2xzLUluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLXVfY2hhci1hbmQtdV9zaG9ydC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIDBmZDVkZGE1MWQ2OGUxZWMyYTg3ZTI3YjVlZDBkZmYzNTAzYjQ2ODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAwODoxMjozOCArMDAwMAotU3ViamVjdDogW1BBVENIXSBrYmR0b29sczogSW5jbHVkZSBzeXMvdHlwZXMuaCBmb3IgdV9jaGFyIGFuZCB1X3Nob3J0Ci0gZGVmaW5pdGlvbgotCi1vbiBtdXNsIHRoaXMgZ2V0cyBleHBvc2VkIHNpbmNlIHN5cy90eXBlcy5oIGlzIG5vdAotaW5jbHVkZWQgdmlhIHNvbWUgb3RoZXIgaW5kaXJlY3QgaW5jbHVzaW9uIGFzIGlzIHRoZSBjYXNlIHdpdGggZ2xpYmMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBrYmR0b29scy9kdW1wa2V5cy5jIHwgMSArCi0ga2JkdG9vbHMvbG9hZGtleXMueSB8IDEgKwotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9rYmR0b29scy9kdW1wa2V5cy5jIGIva2JkdG9vbHMvZHVtcGtleXMuYwotaW5kZXggNjE1OWQ0OS4uYzE5ZmIyMSAxMDA2NDQKLS0tLSBhL2tiZHRvb2xzL2R1bXBrZXlzLmMKLSsrKyBiL2tiZHRvb2xzL2R1bXBrZXlzLmMKLUBAIC0yNiw2ICsyNiw3IEBACi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN5c2V4aXRzLmg+Ci0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSAjaW5jbHVkZSA8bGludXgva2QuaD4KLSAjaW5jbHVkZSA8bGludXgva2V5Ym9hcmQuaD4KLWRpZmYgLS1naXQgYS9rYmR0b29scy9sb2Fka2V5cy55IGIva2JkdG9vbHMvbG9hZGtleXMueQotaW5kZXggYjZhOGUwMS4uNDQ2OGY3NyAxMDA2NDQKLS0tLSBhL2tiZHRvb2xzL2xvYWRrZXlzLnkKLSsrKyBiL2tiZHRvb2xzL2xvYWRrZXlzLnkKLUBAIC03MSw2ICs3MSw3IEBACi0gI2luY2x1ZGUgPGxpbnV4L2tkLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2tleWJvYXJkLmg+Ci0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8c3lzZXhpdHMuaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0tLSAKLTIuNi40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL01ha2V2YXJzIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvTWFrZXZhcnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyNjkyYWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvTWFrZXZhcnMKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0jIE1ha2VmaWxlIHZhcmlhYmxlcyBmb3IgUE8gZGlyZWN0b3J5IGluIGFueSBwYWNrYWdlIHVzaW5nIEdOVSBnZXR0ZXh0LgotCi0jIFVzdWFsbHkgdGhlIG1lc3NhZ2UgZG9tYWluIGlzIHRoZSBzYW1lIGFzIHRoZSBwYWNrYWdlIG5hbWUuCi1ET01BSU4gPSAkKFBBQ0tBR0UpCi0KLSMgVGhlc2UgdHdvIHZhcmlhYmxlcyBkZXBlbmQgb24gdGhlIGxvY2F0aW9uIG9mIHRoaXMgZGlyZWN0b3J5Lgotc3ViZGlyID0gcG8KLXRvcF9idWlsZGRpciA9IC4uCi0KLSMgVGhlc2Ugb3B0aW9ucyBnZXQgcGFzc2VkIHRvIHhnZXR0ZXh0LgotWEdFVFRFWFRfT1BUSU9OUyA9IC0ta2V5d29yZD1fIC0ta2V5d29yZD1OXwotCi0jIFRoaXMgaXMgdGhlIGNvcHlyaWdodCBob2xkZXIgdGhhdCBnZXRzIGluc2VydGVkIGludG8gdGhlIGhlYWRlciBvZiB0aGUKLSMgJChET01BSU4pLnBvdCBmaWxlLiAgU2V0IHRoaXMgdG8gdGhlIGNvcHlyaWdodCBob2xkZXIgb2YgdGhlIHN1cnJvdW5kaW5nCi0jIHBhY2thZ2UuICAoTm90ZSB0aGF0IHRoZSBtc2dzdHIgc3RyaW5ncywgZXh0cmFjdGVkIGZyb20gdGhlIHBhY2thZ2UncwotIyBzb3VyY2VzLCBiZWxvbmcgdG8gdGhlIGNvcHlyaWdodCBob2xkZXIgb2YgdGhlIHBhY2thZ2UuKSAgVHJhbnNsYXRvcnMgYXJlCi0jIGV4cGVjdGVkIHRvIHRyYW5zZmVyIHRoZSBjb3B5cmlnaHQgZm9yIHRoZWlyIHRyYW5zbGF0aW9ucyB0byB0aGlzIHBlcnNvbgotIyBvciBlbnRpdHksIG9yIHRvIGRpc2NsYWltIHRoZWlyIGNvcHlyaWdodC4gIFRoZSBlbXB0eSBzdHJpbmcgc3RhbmRzIGZvcgotIyB0aGUgcHVibGljIGRvbWFpbjsgaW4gdGhpcyBjYXNlIHRoZSB0cmFuc2xhdG9ycyBhcmUgZXhwZWN0ZWQgdG8gZGlzY2xhaW0KLSMgdGhlaXIgY29weXJpZ2h0LgotQ09QWVJJR0hUX0hPTERFUiA9IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotCi0jIFRoaXMgaXMgdGhlIGVtYWlsIGFkZHJlc3Mgb3IgVVJMIHRvIHdoaWNoIHRoZSB0cmFuc2xhdG9ycyBzaGFsbCByZXBvcnQKLSMgYnVncyBpbiB0aGUgdW50cmFuc2xhdGVkIHN0cmluZ3M6Ci0jIC0gU3RyaW5ncyB3aGljaCBhcmUgbm90IGVudGlyZSBzZW50ZW5jZXMsIHNlZSB0aGUgbWFpbnRhaW5lciBndWlkZWxpbmVzCi0jICAgaW4gdGhlIEdOVSBnZXR0ZXh0IGRvY3VtZW50YXRpb24sIHNlY3Rpb24gJ1ByZXBhcmluZyBTdHJpbmdzJy4KLSMgLSBTdHJpbmdzIHdoaWNoIHVzZSB1bmNsZWFyIHRlcm1zIG9yIHJlcXVpcmUgYWRkaXRpb25hbCBjb250ZXh0IHRvIGJlCi0jICAgdW5kZXJzdG9vZC4KLSMgLSBTdHJpbmdzIHdoaWNoIG1ha2UgaW52YWxpZCBhc3N1bXB0aW9ucyBhYm91dCBub3RhdGlvbiBvZiBkYXRlLCB0aW1lIG9yCi0jICAgbW9uZXkuCi0jIC0gUGx1cmFsaXNhdGlvbiBwcm9ibGVtcy4KLSMgLSBJbmNvcnJlY3QgRW5nbGlzaCBzcGVsbGluZy4KLSMgLSBJbmNvcnJlY3QgZm9ybWF0dGluZy4KLSMgSXQgY2FuIGJlIHlvdXIgZW1haWwgYWRkcmVzcywgb3IgYSBtYWlsaW5nIGxpc3QgYWRkcmVzcyB3aGVyZSB0cmFuc2xhdG9ycwotIyBjYW4gd3JpdGUgdG8gd2l0aG91dCBiZWluZyBzdWJzY3JpYmVkLCBvciB0aGUgVVJMIG9mIGEgd2ViIHBhZ2UgdGhyb3VnaAotIyB3aGljaCB0aGUgdHJhbnNsYXRvcnMgY2FuIGNvbnRhY3QgeW91LgotTVNHSURfQlVHU19BRERSRVNTID0KLQotIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGxvY2FsZSBjYXRlZ29yaWVzLCBiZXlvbmQgTENfTUVTU0FHRVMsIGZvciB3aGljaCB0aGUKLSMgbWVzc2FnZSBjYXRhbG9ncyBzaGFsbCBiZSB1c2VkLiAgSXQgaXMgdXN1YWxseSBlbXB0eS4KLUVYVFJBX0xPQ0FMRV9DQVRFR09SSUVTID0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2NvZGVwYWdlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvY29kZXBhZ2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyODcwMTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvY29kZXBhZ2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIwotIyBQYXRjaCBtYW5hZ2VkIGJ5IGh0dHA6Ly93d3cubW4tbG9naXN0aWsuZGUvdW5zdXBwb3J0ZWQvcHhhMjUwL3BhdGNoZXIKLSMKLQotLS0tIGNvbnNvbGUtdG9vbHMtMC4zLjIvY29udHJpYi9jb2RlcGFnZS5jfmNvZGVwYWdlCi0rKysgY29uc29sZS10b29scy0wLjMuMi9jb250cmliL2NvZGVwYWdlLmMKLUBAIC0yMjksNyArMjI5LDcgQEAKLSAJICByZXR1cm4gMDsKLSAKLSAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiXAotLVdhcm5pbmc6IENQIGZvcm1hdCBpcyBhIGhhY2shXG4KLStXYXJuaW5nOiBDUCBmb3JtYXQgaXMgYSBoYWNrIVxuXAotICAgICAgICAgIFRoZSBmaWxlcyBwcm9kdWNlZCBtYXkgb3IgbWF5IG5vdCBiZSB1c2FibGUhXG4iKTsKLSAKLSAJc3ByaW50ZihvdXRmaWxlLCAiJWQuY3AiLCBDUEVudHJ5SGVhZGVyLmNvZGVwYWdlKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2NvbXBpbGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9jb21waWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTNmNTExLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2NvbXBpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotLS0tIGNvbnNvbGUtdG9vbHMtMC4zLjIva2JkdG9vbHMvc2hvd2tleS5jfmNvbXBpbGUJMTk5OS0wOC0yNSAxNzoyMDowOC4wMDAwMDAwMDAgLTA0MDAKLSsrKyBjb25zb2xlLXRvb2xzLTAuMy4yL2tiZHRvb2xzL3Nob3drZXkuYwkyMDA0LTA1LTA5IDAzOjAzOjIzLjAwMDAwMDAwMCAtMDQwMAotQEAgLTI2NCw3ICsyNjQsNiBAQAotIAkgIGJyZWFrOwotIAljYXNlIGNtZF9rZXltYXA6Ci0gCSAgcHJpbnRmKCIpXG4iKTsKLS0JZGVmYXVsdDoKLSAJfQotICAgICB9Ci0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9jb25maWd1cmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1YzEwMGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvY29uZmlndXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLSBjb25zb2xlLXRvb2xzLTAuMy4yL2NvbmZpZ3VyZS5pbn5jb25maWd1cmUKLSsrKyBjb25zb2xlLXRvb2xzLTAuMy4yL2NvbmZpZ3VyZS5pbgotQEAgLTIsMTMgKzIsMTQgQEAKLSBkbmwgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvY29uZiB0byBwcm9kdWNlIGEgY29uZmlndXJlIHNjcmlwdC4KLSAKLSAjIEluaXRpYWxpemUKLS1BQ19JTklUKGtiZHRvb2xzL2xvYWRrZXlzLnkpCi0rQUNfSU5JVAotK0FDX0NPTkZJR19TUkNESVIoW2tiZHRvb2xzL2xvYWRrZXlzLnldKQotIAotIGRlZmluZShjdF91bmljb2RlZGF0YV9kZWZhdWx0LC91c3Ivc2hhcmUvdW5pZGF0YS9Vbmljb2RlRGF0YS0yLnR4dCkKLSBjdF9sb2NhbGRhdGFkaXJfZGVmYXVsdD0vdXNyL2xvY2FsL3NoYXJlICAgICAjIGlmZiAtLWVuYWJsZS1sb2NhbGRhdGFkaXIgd2l0aG91dCBzcGVjaWZpYyBkaXIKLSAKLSAjQUNfQ09ORklHX0FVWF9ESVIoYXV0b2NvbmYpCi0tQUNfQ0FOT05JQ0FMX1NZU1RFTQotK0FDX0NBTk9OSUNBTF9UQVJHRVQoW10pCi0gQU1fSU5JVF9BVVRPTUFLRShjb25zb2xlLXRvb2xzLCAwLjMuMikKLSAKLSAjIERlZmF1bHRzCi1AQCAtMjUsNyArMjYsNiBAQAotICMgaTE4biBzdHVmZgotIEFMTF9MSU5HVUFTPSJjcyBkZSBydSBnYSBmciIKLSBBTV9HTlVfR0VUVEVYVAotLUFDX09VVFBVVF9DT01NQU5EUyhbc2VkIC1lICIvUE9URklMRVMgPS9yIHBvL1BPVEZJTEVTIiBwby9NYWtlZmlsZS5pbiA+IHBvL01ha2VmaWxlXSkKLSAKLSBBQ19ERUZJTkVfVU5RVU9URUQoTE9DQUxFRElSLCAiL3Vzci9zaGFyZS9sb2NhbGUiKQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvZml4LWxpYmNvbnNvbGUtbGlua2luZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2ZpeC1saWJjb25zb2xlLWxpbmtpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlNjFlYjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvZml4LWxpYmNvbnNvbGUtbGlua2luZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZpeCB0aGUgZm9sbG93aW5nIGVycm9yIGRldGVjdGVkIHdpdGggaTU4Ni1wb2t5bWxsaWIzMi1saW51eC1nY2MgKHRoZQotbXVsdGlsaWIgeDg2LTY0IGxpYjMyIGNvbXBpbGVyKToKLSAgICAuLi9saWIvY3R1dGlscy8ubGlicy9saWJjdHV0aWxzLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBnZXRfa2VybmVsX3NmbScKLSAgICBjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKLQotSXQgc2VlbXMgdGhhdCBsaWJjdHV0aWxzLnNvICh0aGUgbGlicmFyeSB0aGF0IHVzZXMgZ2V0X2tlcm5lbF9zZm0pIG11c3QKLWJlIHN0YXRlZCBiZWZvcmUgbGliY29uc29sZS5zbyAodGhlIGxpYnJhcnkgdGhhdCBleHBvcnRzIHRoZSBmdW5jdGlvbikgd2hlbgotdXNpbmcgbXVsdGlsaWIgZ2NjCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQ29uc3RhbnRpbiBNdXNjYSA8Y29uc3RhbnRpbngubXVzY2FAaW50ZWwuY29tPgotCi1JbmRleDogY29uc29sZS10b29scy0wLjMuMi9mb250ZmlsZXRvb2xzL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY29uc29sZS10b29scy0wLjMuMi5vcmlnL2ZvbnRmaWxldG9vbHMvTWFrZWZpbGUuYW0KLSsrKyBjb25zb2xlLXRvb2xzLTAuMy4yL2ZvbnRmaWxldG9vbHMvTWFrZWZpbGUuYW0KLUBAIC0xMCw1ICsxMCw1IEBAIEVYVFJBX0RJU1QgPSBmb250czJ2aXJmb250LmMgdmlyZm9udC5oCi0gCi0gIyBsaWJjb25zb2xlIGlzIG5lZWRlZCBieSBjdHV0aWxzCi0gTERBREQgPSAuLi9saWIvY3Rsb2NhbC9saWJjdGxvY2FsLmEgLi4vbGliL2Nmb250L2xpYmNmb250LmxhIFwKLS0JLi4vbGliL2NvbnNvbGUvbGliY29uc29sZS5sYSBcCi0tCS4uL2xpYi9jdHV0aWxzL2xpYmN0dXRpbHMubGEgLi4vbGliL2dlbmVyaWMvbGliY3RnZW5lcmljLmxhCi0rCS4uL2xpYi9jdHV0aWxzL2xpYmN0dXRpbHMubGEgXAotKwkuLi9saWIvY29uc29sZS9saWJjb25zb2xlLmxhIC4uL2xpYi9nZW5lcmljL2xpYmN0Z2VuZXJpYy5sYQotSW5kZXg6IGNvbnNvbGUtdG9vbHMtMC4zLjIvdnR0b29scy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNvbnNvbGUtdG9vbHMtMC4zLjIub3JpZy92dHRvb2xzL01ha2VmaWxlLmFtCi0rKysgY29uc29sZS10b29scy0wLjMuMi92dHRvb2xzL01ha2VmaWxlLmFtCi1AQCAtNyw5ICs3LDkgQEAgYmluX1BST0dSQU1TID0gY2h2dCBkZWFsbG9jdnQgd3JpdGV2dCBmZwotIAl2Y3N0aW1lIHZ0LWlzLVVURjggb3BlbnZ0IEBSRVNJWkVDT05TQAotIEVYVFJBX1BST0dSQU1TID0gcmVzaXplY29ucwotIAotLUxEQUREID0gLi4vbGliL2N0bG9jYWwvbGliY3Rsb2NhbC5hIC4uL2xpYi9jb25zb2xlL2xpYmNvbnNvbGUubGEgXAotK0xEQUREID0gLi4vbGliL2N0bG9jYWwvbGliY3Rsb2NhbC5hIC4uL2xpYi9jdHV0aWxzL2xpYmN0dXRpbHMubGEgXAotIAkuLi9saWIvY2ZvbnQvbGliY2ZvbnQubGEgXAotLQkuLi9saWIvY3R1dGlscy9saWJjdHV0aWxzLmxhIC4uL2xpYi9nZW5lcmljL2xpYmN0Z2VuZXJpYy5sYQotKwkuLi9saWIvY29uc29sZS9saWJjb25zb2xlLmxhIC4uL2xpYi9nZW5lcmljL2xpYmN0Z2VuZXJpYy5sYQotIAotIHZjc3RpbWVfTERBREQgPSAuLi9saWIvY3Rsb2NhbC9saWJjdGxvY2FsLmEKLSBzY3JlZW5kdW1wX0xEQUREID0gLi4vbGliL2N0bG9jYWwvbGliY3Rsb2NhbC5hCi1JbmRleDogY29uc29sZS10b29scy0wLjMuMi9rYmR0b29scy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNvbnNvbGUtdG9vbHMtMC4zLjIub3JpZy9rYmR0b29scy9NYWtlZmlsZS5hbQotKysrIGNvbnNvbGUtdG9vbHMtMC4zLjIva2JkdG9vbHMvTWFrZWZpbGUuYW0KLUBAIC0xNSw5ICsxNSw5IEBAIEVYVFJBX1BST0dSQU1TID0gZ2V0a2V5Y29kZXMgc2V0a2V5Y29kZXMKLSBsb2Fka2V5c19TT1VSQ0VTID0gbG9hZGtleXMueSBhbmFseXplLmwKLSAKLSBZRkxBR1MgPSAtZAotLUxEQUREID0gLi4vbGliL2N0bG9jYWwvbGliY3Rsb2NhbC5hIC4uL2xpYi9jb25zb2xlL2xpYmNvbnNvbGUubGEgXAotK0xEQUREID0gLi4vbGliL2N0bG9jYWwvbGliY3Rsb2NhbC5hIC4uL2xpYi9jdHV0aWxzL2xpYmN0dXRpbHMubGEgXAotIAkuLi9saWIvY2ZvbnQvbGliY2ZvbnQubGEgXAotLQkuLi9saWIvY3R1dGlscy9saWJjdHV0aWxzLmxhIC4uL2xpYi9nZW5lcmljL2xpYmN0Z2VuZXJpYy5sYQotKwkuLi9saWIvY29uc29sZS9saWJjb25zb2xlLmxhIC4uL2xpYi9nZW5lcmljL2xpYmN0Z2VuZXJpYy5sYQotIAotIGxvYWRrZXlzX0xEQUREID0gJChMREFERCkgQExFWExJQkAKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2tiZHJhdGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9rYmRyYXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzcwYmU4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2tiZHJhdGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1QYXRjaCBmcm9tIE1hdHRoaWFzIEdvZWJsIDxvZUBtLmdvZWJsLm5ldD4KLUFkZGVkIHZpYSBPRSBidWd0cmFja2VyOiBidWcgIzQ3OAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotLS0tIGNvbnNvbGUtdG9vbHMtMC4zLjIva2JkdG9vbHMva2JkX21vZGUuYy5vcmlnCi0rKysgY29uc29sZS10b29scy0wLjMuMi9rYmR0b29scy9rYmRfbW9kZS5jCi1AQCAtMjksMTEgKzI5LDE2IEBACi0gICBPUFQoIi11IC0tdW5pY29kZSAgIiwgXygiVVRGLTggbW9kZSAoVU5JQ09ERSkiKSk7Ci0gICBPUFQoIi1zIC0tc2NhbmNvZGUgIiwgXygic2NhbmNvZGUgbW9kZSAoUkFXKSIpKTsKLSAgIE9QVCgiICAgLS1tb2RlPXs4Yml0LGtleWNvZGUsdW5pY29kZSxzY2FuY29kZX0gIiwgXygic2V0IG1vZGUiKSk7Ci0rICBPUFQoIi1yIC0tcmF0ZT1SQVRFICIsIF8oInNldCByZXBlYXQgcmF0ZSAoZGVmYXVsdDogMzMpIikpOwotKyAgT1BUKCItZCAtLWRlbGF5PURFTEFZICIsIF8oInNldCByZXBlYXQgZGVsYXkgKGRlZmF1bHQ6IDI1MCkiKSk7Ci0gCi0gICBPUFQoIi1oIC0taGVscCAgICAgIiwgSEVMUERFU0MpOwotICAgT1BUKCItViAtLXZlcnNpb24gICIsIFZFUlNJT05ERVNDKTsKLSB9Ci0gCi0raW50IHJhdGU9LTE7Ci0raW50IGRlbGF5PS0xOwotKwotIHN0YXRpYyBpbnQgcGFyc2VfY21kbGluZSAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSB7Ci0gICAgIGludCBtb2RlID0gLTE7Ci1AQCAtNDYsMTEgKzUxLDEzIEBACi0gICAgICAgeyAibW9kZSIgICAgICwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdtJyB9LAotICAgICAgIHsgInNjYW5jb2RlIiAsIG5vX2FyZ3VtZW50LCBOVUxMLCAncycgfSwKLSAgICAgICB7ICJ1bmljb2RlIiAgLCBub19hcmd1bWVudCwgTlVMTCwgJ3UnIH0sCi0rICAgICAgeyAicmF0ZSIgICAgICwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdyJyB9LAotKyAgICAgIHsgImRlbGF5IiAgICAsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnZCcgfSwKLSAgICAgICB7IE5VTEwsIDAsIE5VTEwsIDAgfQotICAgICB9OwotICAgICBpbnQgYzsKLSAKLS0gICAgd2hpbGUgKCAoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiVmhha3N1IiwgbG9uZ19vcHRzLCBOVUxMKSkgIT0gRU9GKSAKLSsgICAgd2hpbGUgKCAoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiVmhha3N1cjpkOiIsIGxvbmdfb3B0cywgTlVMTCkpICE9IEVPRikgCi0gICAgICAgc3dpdGNoIChjKSB7Ci0gICAgICAgY2FzZSAnaCc6Ci0gCXVzYWdlICgpOwotQEAgLTU4LDYgKzY1LDE0IEBACi0gICAgICAgY2FzZSAnVic6Ci0gCXZlcnNpb24gKCk7Ci0gCWV4aXQoMCk7Ci0rICAgICAgY2FzZSAncic6Ci0rCXJhdGUgPSBhdG9pKG9wdGFyZyk7Ci0rCW1vZGUgPSAtMjsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSAnZCc6Ci0rCWRlbGF5ID0gYXRvaShvcHRhcmcpOwotKwltb2RlID0gLTI7Ci0rCWJyZWFrOwotICAgICAgIGNhc2UgJ2EnOgotIAltb2RlID0gS19YTEFURTsKLSAJYnJlYWs7Ci1AQCAtMTI5LDYgKzE0NCwyMCBAQAotICAgICAgIGV4aXQoMCk7Ci0gICAgIH0KLSAgIAotKyAgaWYgKCByYXRlICE9IC0xIHx8IGRlbGF5ICE9IC0xICkKLSsgICAgewotKyAgICBzdHJ1Y3Qga2JkX3JlcGVhdCBrYmRfcmVwOwotKyAgICBrYmRfcmVwLmRlbGF5ID0gZGVsYXk7Ci0rICAgIGtiZF9yZXAucGVyaW9kID0gcmF0ZTsKLSsgICAgaWYgKGlvY3RsKGZkLCBLREtCRFJFUCwgJmtiZF9yZXApKQotKyAgICAgIHsKLSsJZnByaW50ZihzdGRlcnIsIHByb2duYW1lKTsKLSsJcGVycm9yKF8oIjogZXJyb3Igc2V0dGluZyBrZXlib2FyZCByZXBlYXQgbW9kZVxuIikpOwotKwlleGl0KDEpOwotKyAgICAgIH0KLSsgICAgaWYobW9kZT09LTIpIGV4aXQoMCk7Ci0rICAgIH0KLSsgIAotICAgaWYgKGlvY3RsKGZkLCBLRFNLQk1PREUsIG1vZGUpKQotICAgICB7Ci0gICAgICAgZnByaW50ZihzdGRlcnIsIHByb2duYW1lKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2xjbWVzc2FnZS5tNCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2xjbWVzc2FnZS5tNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThkNDdhOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9sY21lc3NhZ2UubTQKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0jIENoZWNrIHdoZXRoZXIgTENfTUVTU0FHRVMgaXMgYXZhaWxhYmxlIGluIDxsb2NhbGUuaD4uCi0jIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAxOTk1LgotIwotIyBUaGlzIGZpbGUgY2FuIGJlIGNvcGllZCBhbmQgdXNlZCBmcmVlbHkgd2l0aG91dCByZXN0cmljdGlvbnMuICBJdCBjYW4KLSMgYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2Ugb3IgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYnV0IHdoaWNoIHN0aWxsIHdhbnQKLSMgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgR05VIGdldHRleHQgZnVuY3Rpb25hbGl0eS4KLSMgUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIGNvZGUgb2YgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgaXMgY292ZXJlZAotIyBieSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYW5kIHRoZSByZXN0IG9mIHRoZSBHTlUKLSMgZ2V0dGV4dCBwYWNrYWdlIHBhY2thZ2UgaXMgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0jIFRoZXkgYXJlICpub3QqIGluIHRoZSBwdWJsaWMgZG9tYWluLgotCi0jIHNlcmlhbCAyCi0KLUFDX0RFRlVOKFtBTV9MQ19NRVNTQUdFU10sCi0gIFtpZiB0ZXN0ICRhY19jdl9oZWFkZXJfbG9jYWxlX2ggPSB5ZXM7IHRoZW4KLSAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIExDX01FU1NBR0VTXSwgYW1fY3ZfdmFsX0xDX01FU1NBR0VTLAotICAgICAgW0FDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bG9jYWxlLmg+XSwgW3JldHVybiBMQ19NRVNTQUdFU10sCi0gICAgICAgYW1fY3ZfdmFsX0xDX01FU1NBR0VTPXllcywgYW1fY3ZfdmFsX0xDX01FU1NBR0VTPW5vKV0pCi0gICAgaWYgdGVzdCAkYW1fY3ZfdmFsX0xDX01FU1NBR0VTID0geWVzOyB0aGVuCi0gICAgICBBQ19ERUZJTkUoSEFWRV9MQ19NRVNTQUdFUywgMSwKLSAgICAgICAgW0RlZmluZSBpZiB5b3VyIDxsb2NhbGUuaD4gZmlsZSBkZWZpbmVzIExDX01FU1NBR0VTLl0pCi0gICAgZmkKLSAgZmldKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvbm8tZGVwLW9uLWxpYmZsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvbm8tZGVwLW9uLWxpYmZsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjczNWE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL25vLWRlcC1vbi1saWJmbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLU5vIHJlYXNvbiB0byBsaW5rIHdpdGggbGliZmwgc2luY2UgJ2xvYWRrZXlzJyBpbXBsZW1lbnRzCi1pdHMgb3duIHl5d3JhcCgpL3l5bGV4KCkgZnVuY3Rpb25zLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEphY29iIEtyb29uIDxqYWNvYi5rcm9vbkBtaWtyb2RpZGFrdC5zZT4KLQotSW5kZXg6IGNvbnNvbGUtdG9vbHMtMC4zLjIva2JkdG9vbHMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjb25zb2xlLXRvb2xzLTAuMy4yLm9yaWcva2JkdG9vbHMvTWFrZWZpbGUuYW0KLSsrKyBjb25zb2xlLXRvb2xzLTAuMy4yL2tiZHRvb2xzL01ha2VmaWxlLmFtCi1AQCAtMTksOCArMTksNiBAQCBMREFERCA9IC4uL2xpYi9jdGxvY2FsL2xpYmN0bG9jYWwuYSAuLi9sCi0gCS4uL2xpYi9jZm9udC9saWJjZm9udC5sYSBcCi0gCS4uL2xpYi9jb25zb2xlL2xpYmNvbnNvbGUubGEgLi4vbGliL2dlbmVyaWMvbGliY3RnZW5lcmljLmxhCi0gCi0tbG9hZGtleXNfTERBREQgPSAkKExEQUREKSBATEVYTElCQAotLQotIGJpbl9TQ1JJUFRTID0gbWtfbW9kbWFwCi0gCi0gbm9pbnN0X0hFQURFUlMgPSBsb2Fka2V5cy5oCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9ub2RvY3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9ub2RvY3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlZDYwOTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvbm9kb2NzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhlIGRvY3MgbmVlZCB0b29scyB3ZSBkb24ndCBoYXZlIHRvIGJ1aWxkIHNvIGRpc2FibGUgdGhlbS4KLQotQWxzbyByZW1vdmUgaW50bCBzaW5jZSB0aGUgTWFrZWZpbGUgZG9lc24ndCB3b3JrIHdpdGggMy44MiBhbmQgd2UKLWRvbid0IHdhbnQgdG8gYnVpbGQgbGliaW50bCBhbnl3YXkuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLVJQIDIwMTIvMTAvMTcKLQotSW5kZXg6IGNvbnNvbGUtdG9vbHMtMC4zLjIvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjb25zb2xlLXRvb2xzLTAuMy4yLm9yaWcvTWFrZWZpbGUuYW0JMTk5OS0wNC0xNSAwMTozMzoyNC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBjb25zb2xlLXRvb2xzLTAuMy4yL01ha2VmaWxlLmFtCTIwMTItMTAtMTcgMTE6NDg6MTQuMTA3MDY5MTQ1ICswMDAwCi1AQCAtMSw3ICsxLDcgQEAKLSAjIC0qLSBtYWtlZmlsZSAtKi0KLSBBVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbgotIAotLVNVQkRJUlMgPSBsaWIgZm9udGZpbGV0b29scyB2dHRvb2xzIGtiZHRvb2xzIHNjcmVlbmZvbnR0b29scyBjb250cmliIGRvYyBcCi0tCWNvbXBhdCBpbmNsdWRlIGV4YW1wbGVzIHBvIGludGwKLStTVUJESVJTID0gbGliIGZvbnRmaWxldG9vbHMgdnR0b29scyBrYmR0b29scyBzY3JlZW5mb250dG9vbHMgY29udHJpYiBcCi0rCWNvbXBhdCBpbmNsdWRlIGV4YW1wbGVzIHBvCi0gCi0gRVhUUkFfRElTVCA9IEJVR1MgUkVMRUFTRSBDUkVESVRTIENPUFlJTkcua2JkIGxvY2FsLXNjcmlwdHMvKiBkZWJpYW4vKiAqLmxzbQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvdWNsaWJjLWZpbGVuby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL3VjbGliYy1maWxlbm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjOTUwNjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvdWNsaWJjLWZpbGVuby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZpeGluZyB0aGUgbG9jYWxlIGlzc3VlcyBpc24ndCBlbm91Z2gsIGNvbnNvbGUtdG9vbHMgYWxzbyBkb2VzIGEgY291cGxlIG9mCi1vdGhlciBwcmV0dHkgc3R1cGlkIHRoaW5ncyAobGlrZSBGSUxFICpmOyBmLT5fZmlsZW5vIGluc3RlYWQgb2YgZmlsZW5vKGYpKSwKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLSBjb25zb2xlLXRvb2xzLTAuMy4yL2xpYi9jZm9udC9mb250c3RydWN0LmMuYXJrCTIwMDUtMDUtMjIgMTk6MTI6MzguMDAwMDAwMDAwICswMDAwCi0rKysgY29uc29sZS10b29scy0wLjMuMi9saWIvY2ZvbnQvZm9udHN0cnVjdC5jCTIwMDUtMDUtMjIgMTk6MTM6MjMuMDAwMDAwMDAwICswMDAwCi1AQCAtNTAsOCArNTAsNyBAQAotICAgICogZ2V0IGZpbGVzaXplCi0gICAgKi8KLSAgIAotLSAgLyogRklYTUU6IHNob3VsZCBub3QgdXNlIF9maWxlbm8gISAqLwotLSAgaWYgKGZzdGF0KGZvbnRmaWxlLT5fZmlsZW5vLCAmc3RidWYpID09IC0xKQotKyAgaWYgKGZzdGF0KGZpbGVubyhmb250ZmlsZSksICZzdGJ1ZikgPT0gLTEpCi0gICAgIGdvdG8gcnNmX3JldHVybl9lcnJvcjsKLSAgIAotICAgaWYgKFNfSVNSRUcoc3RidWYuc3RfbW9kZSkpCi1AQCAtMjExLDggKzIxMCw3IEBACi0gICAgKiBnZXQgZmlsZXNpemUKLSAgICAqLwotICAgCi0tICAvKiBGSVhNRTogc2hvdWxkIG5vdCB1c2UgX2ZpbGVubyAhICovCi0tICBpZiAoZnN0YXQoZm9udGZpbGUtPl9maWxlbm8sICZzdGJ1ZikgPT0gLTEpCi0rICBpZiAoZnN0YXQoZmlsZW5vKGZvbnRmaWxlKSwgJnN0YnVmKSA9PSAtMSkKLSAgICAgZ290byByZmdfcmV0dXJuX2Vycm9yOwotICAgCi0gICBpZiAoU19JU1JFRyhzdGJ1Zi5zdF9tb2RlKSkKLS0tLSBjb25zb2xlLXRvb2xzLTAuMy4yL2xpYi9jb25zb2xlL2FjbS5jLmFyawkyMDA1LTA1LTIyIDE5OjE3OjE1LjAwMDAwMDAwMCArMDAwMAotKysrIGNvbnNvbGUtdG9vbHMtMC4zLjIvbGliL2NvbnNvbGUvYWNtLmMJMjAwNS0wNS0yMiAxOToxNzoyMy4wMDAwMDAwMDAgKzAwMDAKLUBAIC0zMCw3ICszMCw3IEBACi0gICBsY3RfYm9vbGVhbiBwYXJzZV9mYWlsZWQgPSBGYWxzZTsKLSAgIGxjdF9ib29sZWFuIGlzX3VuaWNvZGU7Ci0gCi0tICBpZiAoZnN0YXQoZnAtPl9maWxlbm8sICZzdGJ1ZikpIAotKyAgaWYgKGZzdGF0KGZpbGVubyhmcCksICZzdGJ1ZikpIAotICAgICBwZXJyb3IoXygiQ2Fubm90IHN0YXQgQUNNIGZpbGUiKSksIGV4aXQoMSk7Ci0gCi0gICAvKiBmaXJzdCB0cnkgYSB3ZzE1LWNoYXJtYXAgKGdsaWJjKSBmaWxlIGZvcm1hdCAqLwotLS0tIGNvbnNvbGUtdG9vbHMtMC4zLjIvaW5jbHVkZS9sY3QvbG9jYWwuaC5hcmsJMjAwNS0wNS0yMiAxOTowODo1NC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBjb25zb2xlLXRvb2xzLTAuMy4yL2luY2x1ZGUvbGN0L2xvY2FsLmgJMjAwNS0wNS0yMiAxOTowOToxMi4wMDAwMDAwMDAgKzAwMDAKLUBAIC04LDcgKzgsNyBAQAotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAKLSAKLS0jaWZkZWYgSEFWRV9MT0NBTEVfSAotKyNpZiBkZWZpbmVkKEhBVkVfTE9DQUxFX0gpICYmIGRlZmluZWQoSEFWRV9MSUJJTlRMX0gpCi0gIyBpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gIyBkZWZpbmUgXyhTdHJpbmcpIGdldHRleHQgKFN0cmluZykKLSAjIGlmZGVmIGdldHRleHRfbm9vcApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHNfMC4zLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29sc18wLjMuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE0NGZiZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29sc18wLjMuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLVNVTU1BUlkgPSAiQWxsb3dzIHlvdSB0byBzZXQtdXAgYW5kIG1hbmlwdWxhdGUgdGhlIExpbnV4IGNvbnNvbGUiCi1ERVNDUklQVElPTiA9ICJQcm92aWRlcyB0b29scyB0aGF0IGVuYWJsZSB0aGUgc2V0LXVwIGFuZCBtYW5pcHVsYXRpb24gb2YgdGhlIGxpbnV4IGNvbnNvbGUgYW5kIGNvbnNvbGUtZm9udCBmaWxlcy4iCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5rYmQ7bWQ1PTliMmQ5MTUxMWQzZDgwZDRkMjBhYzZlNmIwMTM3ZmU5IgotREVQRU5EUyA9ICJmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCi1QUiA9ICJyOCIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vbGN0L2NvbnNvbGUtdG9vbHMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2NvZGVwYWdlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb21waWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2tiZHJhdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdWNsaWJjLWZpbGVuby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ub2RvY3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWxpYmNvbnNvbGUtbGlua2luZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1kZXAtb24tbGliZmwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1rYmR0b29scy1JbmNsdWRlLXN5cy10eXBlcy5oLWZvci11X2NoYXItYW5kLXVfc2hvcnQtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ292ZXItdGhlLWVsc2Utd2l0aC1fX0dMSUJDX18ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtZm9ybWF0LXNlY3VyaXR5LWNvbXBpbGF0aW9uLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xjbWVzc2FnZS5tNCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtldmFycyIKLQotU1JDX1VSSVttZDVzdW1dID0gImJmMjE1NjRmYzM4YjNhZjg1M2VmNzI0YmFiZGRiYWNkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVlYTZiNDQxNjcyZGFjZDI1MTA3OWZjODVlZDMyMmUxOTYyODJlMGU2NmMxNjMwM2VjNjRjM2EyYjFjMTI2YzIiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xjdC9maWxlcy9jb25zb2xlLXRvb2xzLWRldmVsLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9jb25zb2xlLXRvb2xzLWRldmVsLyg/UDxwdmVyPihcZFxkP1wuKStcZFxkPykvIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQ0ZMQUdTX2FwcGVuZF9hYXJjaDY0ID0gIiAtRF9VU0VfVEVSTUlPUyAiCi0KLUFTTkVFREVEID0gIiIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCW1rZGlyIC1wICR7U30vbTQKLQljcCAke1dPUktESVJ9L2xjbWVzc2FnZS5tNCAke1N9L200LwotCXJtIC1mICR7U30vYWNpbmNsdWRlLm00Ci0JY3AgJHtXT1JLRElSfS9NYWtldmFycyAke1N9L3BvLwotfQotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIzMCIKLQotYmluZGlyX3Byb2dzID0gImNodnQgZGVhbGxvY3Z0IGZnY29uc29sZSBvcGVudnQiCi1BTFRFUk5BVElWRV8ke1BOfSA9ICIke2JpbmRpcl9wcm9nc30iCi0KLVJERVBFTkRTXyR7UE59ID0gImJhc2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42ZDRhN2IzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzL3J1bi1wdGVzdApAQCAtMCwwICsxLDE3IEBACisjIS9iaW4vc2gKKworIyByZW1vdmUgYW55IHN0YWxlIGxvY2sgZmlsZXMgc28gdGhhdCB0aGUgY2FsbHMgdG8gZ3JvdXBhZGQvdXNlcmFkZCBkb24ndCBzdG9wCisjIHRoZSBwdGVzdCBpZiByZS11c2luZyB0aGUgc2FtZSBpbWFnZQorcm0gLXJmIC9ldGMvcGFzc3dkLmxvY2sgL2V0Yy9ncm91cC5sb2NrIC9ldGMvZ3NoYWRvdy5sb2NrCisKK0NPUkVVVElMU0xJQj1AbGliZGlyQC9jb3JldXRpbHMKK0xPRz0iJHtDT1JFVVRJTFNMSUJ9L3B0ZXN0L2NvcmV1dGlsc19wdGVzdF8kKGRhdGUgKyVZJW0lZC0lSCVNJVMpLmxvZyIKK1VTRVJOQU1FPSJ0ZXN0ZXIiCitncm91cGFkZCB1Z3JvdXAxCitncm91cGFkZCB1Z3JvdXAyCit1c2VyYWRkIC1HIHVncm91cDEsdWdyb3VwMiAkVVNFUk5BTUUgfHwgZWNobyAidXNlciAkVVNFUk5BTUUgYWxyZWFkeSBleGlzdHMiCisKK3N1IHRlc3RlciAtYyAiY2QgJHtDT1JFVVRJTFNMSUJ9L3B0ZXN0ICYmIG1ha2UgY2hlY2stVEVTVFMgdG9wX3NyY2Rpcj0uIHNyY2Rpcj0uIiAyPiYxIHwgdGVlIC1hICR7TE9HfQordXNlcmRlbCAkVVNFUk5BTUUgCitncm91cGRlbCB1Z3JvdXAxCitncm91cGRlbCB1Z3JvdXAyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4zMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjMxLmJiCmluZGV4IDU3YjJjMWIuLjJiMTk2YjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjMxLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjMxLmJiCkBAIC0xOCw2ICsxOCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXVuYW1lLXJlcG9ydC1wcm9jZXNzb3ItYW5kLWhhcmR3YXJlLWNvcnJlY3RseS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWxzLW91dHB1dC1xdW90aW5nLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbG9jYWwubWstZml4LWNyb3NzLWNvbXBpbGluZy1wcm9ibGVtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAgICAgICAgICAgIgogCiBTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiZmlsZTovL3N0cnRvZF9maXhfY2xhc2hfd2l0aF9zdHJ0b2xkLnBhdGNoIgpAQCAtMTQzLDMgKzE0NCw0NyBAQAogfQogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK2luaGVyaXQgcHRlc3QKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2ggZmluZHV0aWxzIGdhd2sgbGliZXJyb3ItcGVybCBsaWJtb2R1bGUtYnVpbGQtcGVybCBtYWtlIHBlcmwgcGVybC1tb2R1bGUtZmlsZS1zdGF0IHB5dGhvbjMtY29yZSBzZWQgc2hhZG93IgorCisjIC1kZXYgYXV0b21hdGljIGRlcGVuZGVuY2llcyBmYWlscyBhcyB3ZSBkb24ndCB3YW50IGxpYm1vZHVsZS1idWlsZC1wZXJsLWRldiwgaXRzIHRvbyBoZWF2eQorIyBtYXkgbmVlZCB0d2Vha2luZyBpZiBERVBFTkRTIGNoYW5nZXMKK1JSRUNPTU1FTkRTX2NvcmV1dGlscy1kZXZbbm9kZXBycmVjc10gPSAiMSIKK1JSRUNPTU1FTkRTX2NvcmV1dGlscy1kZXYgPSAiYWNsLWRldiBhdHRyLWRldiBnbXAtZGV2IGxpYmNhcC1kZXYgYmFzaC1kZXYgZmluZHV0aWxzLWRldiBnYXdrLWRldiBzaGFkb3ctZGV2IgorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgY3AgLXIgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgc2VkIC1pICdzL2dpbnN0YWxsL2luc3RhbGwvZycgIGBncmVwIC1SIGdpbnN0YWxsICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzIHwgYXdrIC1GOiAne3ByaW50ICQxfScgfCB1bmlxYAorICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vYnVpbGQtYXV4CisgICAgaW5zdGFsbCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfS9idWlsZC1hdXgvCisgICAgY3AgJHtCfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfS8KKyAgICBjcCAke1N9L2luaXQuY2ZnICR7RH0ke1BURVNUX1BBVEh9LworICAgIGNwIC1yICR7Qn0vc3JjICR7RH0ke1BURVNUX1BBVEh9LworICAgIGNwIC1yICR7U30vc3JjLyouYyAke0R9JHtQVEVTVF9QQVRIfS9zcmMKKyAgICBzZWQgLWkgJy9eVlBBVEgvcy89IC4qJC89IC4vZycgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICBzZWQgLWkgJy9eUFJPR1JBTVMvcy9eLyMvZycgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICBzZWQgLWkgJy9eTWFrZWZpbGU6IC9zL14uKiQvTWFrZWZpbGU6L2cnICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisgICAgc2VkIC1pICcvXmFic19zcmNkaXIvcy89IC4qJC89IFwkXHtQV0RcfS9nJyAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorICAgIHNlZCAtaSAnL15hYnNfdG9wX2J1aWxkZGlyL3MvPSAuKiQvPSBcJFx7UFdEXH0vZycgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICBzZWQgLWkgJy9eYWJzX3RvcF9zcmNkaXIvcy89IC4qJC89IFwkXHtQV0RcfS9nJyAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorICAgIHNlZCAtaSAnL15idWlsdF9wcm9ncmFtcy9zL2dpbnN0YWxsL2luc3RhbGwvZycgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICBjaG1vZCAtUiA3NzcgJHtEfSR7UFRFU1RfUEFUSH0KKworICAgICMgRGlzYWJsZSBzdWJjYXNlIHN0dHktcGFpcnMuc2gsIGl0IHdpbGwgY2F1c2UgdGVzdCBmcmFtZXdvcmsgaGFuZworICAgIHNlZCAtaSAnL3N0dHktcGFpcnMuc2gvZCcgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKworICAgICMgRGlzYWJsZSBzdWJjYXNlIHRhaWwtMi9hc3NlcnQuc2ggYXMgaXQgaGFzIGlzc3VlcyBvbiAzMi1iaXQgc3lzdGVtcworICAgIHNlZCAtaSAnL2Fzc2VydC5zaC9kJyAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorCisgICAgIyBUd2VhayB0ZXN0IGRfdHlwZS1jaGVjayB0byB1c2UgcHl0aG9uMyBpbnN0ZWFkIG9mIHB5dGhvbgorICAgIHNlZCAtaSAiMXNALipAIyEvdXNyL2Jpbi9weXRob24zQCIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvZF90eXBlLWNoZWNrCisgICAgaW5zdGFsbCAke0J9L3NyYy9nZXRsaW1pdHMgJHtEfS8ke2JpbmRpcn0KKyAgICAKKyAgICAjIGhhbmRsZSBtdWx0aWxpYgorICAgIHNlZCAtaSBzOkBsaWJkaXJAOiR7bGliZGlyfTpnICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAorfQorCitGSUxFU18ke1BOfS1wdGVzdCArPSAiJHtiaW5kaXJ9L2dldGxpbWl0cyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWdsaWJfMC4xMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1nbGliXzAuMTEwLmJiCmluZGV4IDlhZmJjMmIuLjBiNDU4MDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWdsaWJfMC4xMTAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtZ2xpYl8wLjExMC5iYgpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiSGlnaCBsZXZlbCBsYW5ndWFnZSAoR0xpYikgYmluZGluZyBmb3IgRC1CdXMiCiBERVNDUklQVElPTiA9ICJHTGliIGJpbmRpbmdzIGZvciB0aGUgRC1CdXMgbWVzc2FnZSBidXMgdGhhdCBpbnRlZ3JhdGUgXAogdGhlIEQtQnVzIGxpYnJhcnkgd2l0aCB0aGUgR0xpYiB0aHJlYWQgYWJzdHJhY3Rpb24gYW5kIG1haW4gbG9vcC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9Tb2Z0d2FyZS9kYnVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL1NvZnR3YXJlL2RidXMiCiBMSUNFTlNFID0gIkFGTC0yLjEgfCBHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jZjViM2EyZjcwODM3NTBkNTA0MzMzMTE0ZTczODY1NiBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYnVzL2RidXMtZ2xpYi5oO2JlZ2lubGluZT03O2VuZGxpbmU9MjE7bWQ1PTc3NTVjOWQ3YWJjY2Q1ZGJkMjVhNmE5NzQ1MzhiYjNjIgpAQCAtMTAsNyArMTAsNyBAQAogREVQRU5EUyA9ICJleHBhdCBnbGliLTIuMCB2aXJ0dWFsL2xpYmludGwgZGJ1cy1nbGliLW5hdGl2ZSBkYnVzIgogREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiZ2xpYi0yLjAtbmF0aXZlIGRidXMtbmF0aXZlIgogCi1TUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzLWdsaWIvZGJ1cy1nbGliLSR7UFZ9LnRhci5neiBcCitTUkNfVVJJID0gImh0dHBzOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy1nbGliL2RidXMtZ2xpYi0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vbm8tZXhhbXBsZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vdGVzdC1pbnN0YWxsLW1ha2VmaWxlLnBhdGNoIFwKICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzL3J1bi1wdGVzdAppbmRleCA0ODUzNWUxLi5kM2VlYzA4IDEwMDc1NQotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvcnVuLXB0ZXN0CkBAIC0xOSwxMCArMTksMTIgQEAKIGZvciBpIGluICRmaWxlcwogZG8KICAgICAgI3RoZXNlIHByb2dyYW1zIGFyZSB1c2VkIGJ5IHRlc3RjYXNlIHRlc3QtYnVzLCBkb24ndCBydW4gaGVyZQorICAgICAjYWRkaXRpb25hbGx5LCB0ZXN0LW5hbWVzIG5lZWRzIHRvIGJlIHJ1biB1bmRlciBYCiAgICAgIGlmIFsgJGkgPSAidGVzdC90ZXN0LXNlcnZpY2UiIF0gXAogICAgICAgICB8fCBbICRpID0gInRlc3QvdGVzdC1zaGVsbC1zZXJ2aWNlIiBdIFwKICAgICAgICAgfHwgWyAkaSA9ICJ0ZXN0L3Rlc3Qtc2VnZmF1bHQiIF0gXAotICAgICAgICB8fCBbICRpID0gInRlc3QvdGVzdC1idXMiIF0KKyAgICAgICAgfHwgWyAkaSA9ICJ0ZXN0L3Rlc3QtYnVzIiBdIFwKKyAgICAgICAgfHwgWyAkaSA9ICJ0ZXN0L3Rlc3QtbmFtZXMiIF0KICAgICAgdGhlbgogICAgICAgICAgY29udGludWUKICAgICAgZmkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTIuMTYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18xLjEyLjE2LmJiCmluZGV4IDk2YjUwMzYuLjgyYmI3NTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTIuMTYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMi4xNi5iYgpAQCAtMSw2ICsxLDYgQEAKIFNVTU1BUlkgPSAiRC1CdXMgbWVzc2FnZSBidXMiCiBERVNDUklQVElPTiA9ICJELUJ1cyBpcyBhIG1lc3NhZ2UgYnVzIHN5c3RlbSwgYSBzaW1wbGUgd2F5IGZvciBhcHBsaWNhdGlvbnMgdG8gdGFsayB0byBvbmUgYW5vdGhlci4gSW4gYWRkaXRpb24gdG8gaW50ZXJwcm9jZXNzIGNvbW11bmljYXRpb24sIEQtQnVzIGhlbHBzIGNvb3JkaW5hdGUgcHJvY2VzcyBsaWZlY3ljbGU7IGl0IG1ha2VzIGl0IHNpbXBsZSBhbmQgcmVsaWFibGUgdG8gY29kZSBhIFwic2luZ2xlIGluc3RhbmNlXCIgYXBwbGljYXRpb24gb3IgZGFlbW9uLCBhbmQgdG8gbGF1bmNoIGFwcGxpY2F0aW9ucyBhbmQgZGFlbW9ucyBvbiBkZW1hbmQgd2hlbiB0aGVpciBzZXJ2aWNlcyBhcmUgbmVlZGVkLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmciCiBTRUNUSU9OID0gImJhc2UiCiBMSUNFTlNFID0gIkFGTC0yLjEgfCBHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMGRkZWQzYjU4MTQ4ZjNmMWZkODA0YjI2MzU0YWYzZSBcCkBAIC0xMiw3ICsxMiw3IEBACiBBTExPV19FTVBUWV9kYnVzLXB0ZXN0ID0gIjEiCiBSREVQRU5EU19kYnVzLXB0ZXN0X2NsYXNzLXRhcmdldCA9ICJkYnVzLXRlc3QtcHRlc3QiCiAKLVNSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMvZGJ1cy0ke1BWfS50YXIuZ3ogXAorU1JDX1VSSSA9ICJodHRwczovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMvZGJ1cy0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vdG1wZGlyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2RidXMtMS5pbml0IFwKICAgICAgICAgICAgZmlsZTovL2NsZWFyLWd1aWRfZnJvbV9zZXJ2ZXItaWYtc2VuZF9uZWdvdGlhdGVfdW5peF9mLnBhdGNoIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZWxsL2VsbF8wLjI2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9lbGwvZWxsXzAuMjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxZjI1MmMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9lbGwvZWxsXzAuMjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZICA9ICJFbWJlZGRlZCBMaW51eCBMaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiVGhlIEVtYmVkZGVkIExpbnV4IExpYnJhcnkgKEVMTCkgcHJvdmlkZXMgY29yZSwgXAotbG93LWxldmVsIGZ1bmN0aW9uYWxpdHkgZm9yIHN5c3RlbSBkYWVtb25zLiBJdCB0eXBpY2FsbHkgaGFzIG5vIFwKLWRlcGVuZGVuY2llcyBvdGhlciB0aGFuIHRoZSBMaW51eCBrZXJuZWwsIEMgc3RhbmRhcmQgbGlicmFyeSwgYW5kIFwKLWxpYmRsIChmb3IgZHluYW1pYyBsaW5raW5nKS4gV2hpbGUgRUxMIGlzIGRlc2lnbmVkIHRvIGJlIGVmZmljaWVudCBcCi1hbmQgY29tcGFjdCBlbm91Z2ggZm9yIHVzZSBvbiBlbWJlZGRlZCBMaW51eCBwbGF0Zm9ybXMsIGl0IGlzIG5vdCBcCi1saW1pdGVkIHRvIHJlc291cmNlLWNvbnN0cmFpbmVkIHN5c3RlbXMuIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSAgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYjUwNGI2N2M1MDMzMWZjNzg3MzRmZWQ5MGZiMGUwOSIKLQotREVQRU5EUyA9ICJkYnVzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotU1JDX1VSSSA9ICJodHRwczovL21pcnJvcnMuZWRnZS5rZXJuZWwub3JnL3B1Yi9saW51eC9saWJzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gIjQ2NjBlMjU1NDEwNzFlOTMzYTJiYjAyZWYyZjk0ZTdkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc4NTViNGI4ZjI3MWJhNmVlNjdkODdkMDk2NWI5NzVhOWE4ZGJlYWE2MTY2NjVjYTIyNDhhZmEzYjVmY2JjNzciCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICBta2RpciAtcCAke1N9L2J1aWxkLWF1eAotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9lbGwvZWxsXzAuMzEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2VsbC9lbGxfMC4zMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGI3MTMxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9lbGwvZWxsXzAuMzEuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSAgPSAiRW1iZWRkZWQgTGludXggTGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIlRoZSBFbWJlZGRlZCBMaW51eCBMaWJyYXJ5IChFTEwpIHByb3ZpZGVzIGNvcmUsIFwKK2xvdy1sZXZlbCBmdW5jdGlvbmFsaXR5IGZvciBzeXN0ZW0gZGFlbW9ucy4gSXQgdHlwaWNhbGx5IGhhcyBubyBcCitkZXBlbmRlbmNpZXMgb3RoZXIgdGhhbiB0aGUgTGludXgga2VybmVsLCBDIHN0YW5kYXJkIGxpYnJhcnksIGFuZCBcCitsaWJkbCAoZm9yIGR5bmFtaWMgbGlua2luZykuIFdoaWxlIEVMTCBpcyBkZXNpZ25lZCB0byBiZSBlZmZpY2llbnQgXAorYW5kIGNvbXBhY3QgZW5vdWdoIGZvciB1c2Ugb24gZW1iZWRkZWQgTGludXggcGxhdGZvcm1zLCBpdCBpcyBub3QgXAorbGltaXRlZCB0byByZXNvdXJjZS1jb25zdHJhaW5lZCBzeXN0ZW1zLiIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmI1MDRiNjdjNTAzMzFmYzc4NzM0ZmVkOTBmYjBlMDkiCisKK0RFUEVORFMgPSAiZGJ1cyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9taXJyb3JzLmVkZ2Uua2VybmVsLm9yZy9wdWIvbGludXgvbGlicy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzZjY3MDIzMGJlNGQ4OWQ2MjFiMDUwOGM3MGIxZDM2YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZTg4NjE3Mjc1NDUyZjlmNTg0MGIyMzY1ZTMzZTZjN2ZiNmZhMzQwNWQ0MmNiZjkzNjdkZTY0MmVlOGI2NzAxIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisgICAgbWtkaXIgLXAgJHtTfS9idWlsZC1hdXgKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL2NyLXN0YXRlbWVudC5jLXRpbXNvcnQuaC1maXgtZm9ybWF0dGluZy1pc3N1ZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9jci1zdGF0ZW1lbnQuYy10aW1zb3J0LmgtZml4LWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWYxNjA0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL2NyLXN0YXRlbWVudC5jLXRpbXNvcnQuaC1maXgtZm9ybWF0dGluZy1pc3N1ZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi1Gcm9tIGU1NDZkZTY1YTMzMzc4OWU4M2Y1NDg1NzU3OTY3Y2VlMjllZTM2ODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFN1biwgMTkgRmViIDIwMTcgMjM6MzI6NDYgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gY3Itc3RhdGVtZW50LmMvdGltc29ydC5oOiBmaXggZm9ybWF0dGluZyBpc3N1ZXMKLQotRml4ZWQgd2hlbiBjb21waWxlIHdpdGggIi1XZm9ybWF0IC1XZm9ybWF0LXNlY3VyaXR5IC1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5IjoKLXwgZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYmNyb2NvL2NyLXN0YXRlbWVudC5jOiBJbiBmdW5jdGlvbiAnY3Jfc3RhdGVtZW50X2R1bXBfY2hhcnNldCc6Ci18IGdldHRleHQtdG9vbHMvZ251bGliLWxpYi9saWJjcm9jby9jci1zdGF0ZW1lbnQuYzoyNjYxOjE3OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCBzdHIpIDsKLQotQW5kOgotZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYnhtbC90aW1zb3J0Lmg6MzI2OjgwOiB3YXJuaW5nOiBmb3JtYXQgJyVsdScgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlICdsb25nIHVuc2lnbmVkIGludCcsIGJ1dCBhcmd1bWVudCAzIGhhcyB0eXBlICd1bnNpZ25lZCBpbnQnIFstV2Zvcm1hdD1dCi0gICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvciBhbGxvY2F0aW5nIHRlbXBvcmFyeSBzdG9yYWdlIGZvciB0aW0gc29ydDogbmVlZCAlbHUgYnl0ZXMiLCBzaXplb2YoU09SVF9UWVBFKSAqIG5ld19zaXplKTsKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYmNyb2NvL2NyLXN0YXRlbWVudC5jIHwgMTAgKysrKystLS0tLQotIGdldHRleHQtdG9vbHMvZ251bGliLWxpYi9saWJ4bWwvdGltc29ydC5oICAgICAgICB8ICAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvbGliY3JvY28vY3Itc3RhdGVtZW50LmMgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvbGliY3JvY28vY3Itc3RhdGVtZW50LmMKLWluZGV4IDYxNzUyMGYuLjEwMDEwNGIgMTAwNjQ0Ci0tLS0gYS9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvbGliY3JvY28vY3Itc3RhdGVtZW50LmMKLSsrKyBiL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi9saWJjcm9jby9jci1zdGF0ZW1lbnQuYwotQEAgLTI2MDcsNyArMjYwNyw3IEBAIGNyX3N0YXRlbWVudF9kdW1wX3J1bGVzZXQgKENSU3RhdGVtZW50ICogYV90aGlzLCBGSUxFICogYV9mcCwgZ2xvbmcgYV9pbmRlbnQpCi0gICAgICAgICBnX3JldHVybl9pZl9mYWlsIChhX2ZwICYmIGFfdGhpcyk7Ci0gICAgICAgICBzdHIgPSBjcl9zdGF0ZW1lbnRfcnVsZXNldF90b19zdHJpbmcgKGFfdGhpcywgYV9pbmRlbnQpOwotICAgICAgICAgaWYgKHN0cikgewotLSAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCBzdHIpOwotKyAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCAiJXMiLCBzdHIpOwotICAgICAgICAgICAgICAgICBnX2ZyZWUgKHN0cik7Ci0gICAgICAgICAgICAgICAgIHN0ciA9IE5VTEw7Ci0gICAgICAgICB9Ci1AQCAtMjY1OCw3ICsyNjU4LDcgQEAgY3Jfc3RhdGVtZW50X2R1bXBfY2hhcnNldCAoQ1JTdGF0ZW1lbnQgKiBhX3RoaXMsIEZJTEUgKiBhX2ZwLCBndWxvbmcgYV9pbmRlbnQpCi0gICAgICAgICBzdHIgPSBjcl9zdGF0ZW1lbnRfY2hhcnNldF90b19zdHJpbmcgKGFfdGhpcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYV9pbmRlbnQpIDsKLSAgICAgICAgIGlmIChzdHIpIHsKLS0gICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgc3RyKSA7Ci0rICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsICIlcyIsIHN0cikgOwotICAgICAgICAgICAgICAgICBnX2ZyZWUgKHN0cikgOwotICAgICAgICAgICAgICAgICBzdHIgPSBOVUxMIDsKLSAgICAgICAgIH0KLUBAIC0yNjg1LDcgKzI2ODUsNyBAQCBjcl9zdGF0ZW1lbnRfZHVtcF9wYWdlIChDUlN0YXRlbWVudCAqIGFfdGhpcywgRklMRSAqIGFfZnAsIGd1bG9uZyBhX2luZGVudCkKLSAKLSAgICAgICAgIHN0ciA9IGNyX3N0YXRlbWVudF9hdF9wYWdlX3J1bGVfdG9fc3RyaW5nIChhX3RoaXMsIGFfaW5kZW50KSA7Ci0gICAgICAgICBpZiAoc3RyKSB7Ci0tICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsIHN0cik7Ci0rICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsICIlcyIsIHN0cik7Ci0gICAgICAgICAgICAgICAgIGdfZnJlZSAoc3RyKSA7Ci0gICAgICAgICAgICAgICAgIHN0ciA9IE5VTEwgOyAKLSAgICAgICAgIH0KLUBAIC0yNzExLDcgKzI3MTEsNyBAQCBjcl9zdGF0ZW1lbnRfZHVtcF9tZWRpYV9ydWxlIChDUlN0YXRlbWVudCAqIGFfdGhpcywKLSAKLSAgICAgICAgIHN0ciA9IGNyX3N0YXRlbWVudF9tZWRpYV9ydWxlX3RvX3N0cmluZyAoYV90aGlzLCBhX2luZGVudCkgOwotICAgICAgICAgaWYgKHN0cikgewotLSAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCBzdHIpIDsKLSsgICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgIiVzIiwgc3RyKSA7Ci0gICAgICAgICAgICAgICAgIGdfZnJlZSAoc3RyKSA7Ci0gICAgICAgICAgICAgICAgIHN0ciA9IE5VTEwgOwotICAgICAgICAgfQotQEAgLTI3MzcsNyArMjczNyw3IEBAIGNyX3N0YXRlbWVudF9kdW1wX2ltcG9ydF9ydWxlIChDUlN0YXRlbWVudCAqIGFfdGhpcywgRklMRSAqIGFfZnAsCi0gCi0gICAgICAgICBzdHIgPSBjcl9zdGF0ZW1lbnRfaW1wb3J0X3J1bGVfdG9fc3RyaW5nIChhX3RoaXMsIGFfaW5kZW50KSA7Ci0gICAgICAgICBpZiAoc3RyKSB7Ci0tICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsIHN0cikgOwotKyAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCAiJXMiLCBzdHIpIDsKLSAgICAgICAgICAgICAgICAgZ19mcmVlIChzdHIpIDsKLSAgICAgICAgICAgICAgICAgc3RyID0gTlVMTCA7Ci0gICAgICAgICB9Ci1kaWZmIC0tZ2l0IGEvZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYnhtbC90aW1zb3J0LmggYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvbGlieG1sL3RpbXNvcnQuaAotaW5kZXggNzk1ZjI3Mi4uNDQzOTE4YSAxMDA2NDQKLS0tLSBhL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi9saWJ4bWwvdGltc29ydC5oCi0rKysgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvbGlieG1sL3RpbXNvcnQuaAotQEAgLTMyMyw3ICszMjMsNyBAQCBzdGF0aWMgdm9pZCBUSU1fU09SVF9SRVNJWkUoVEVNUF9TVE9SQUdFX1QgKnN0b3JlLCBjb25zdCBzaXplX3QgbmV3X3NpemUpCi0gICAgIFNPUlRfVFlQRSAqdGVtcHN0b3JlID0gKFNPUlRfVFlQRSAqKXJlYWxsb2Moc3RvcmUtPnN0b3JhZ2UsIG5ld19zaXplICogc2l6ZW9mKFNPUlRfVFlQRSkpOwotICAgICBpZiAodGVtcHN0b3JlID09IE5VTEwpCi0gICAgIHsKLS0gICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGFsbG9jYXRpbmcgdGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIHRpbSBzb3J0OiBuZWVkICVsdSBieXRlcyIsIHNpemVvZihTT1JUX1RZUEUpICogbmV3X3NpemUpOwotKyAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IgYWxsb2NhdGluZyB0ZW1wb3Jhcnkgc3RvcmFnZSBmb3IgdGltIHNvcnQ6IG5lZWQgJXp1IGJ5dGVzIiwgc2l6ZW9mKFNPUlRfVFlQRSkgKiBuZXdfc2l6ZSk7Ci0gICAgICAgZXhpdCgxKTsKLSAgICAgfQotICAgICBzdG9yZS0+c3RvcmFnZSA9IHRlbXBzdG9yZTsKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL2ZpeC1DVkUtMjAxOC0xODc1MS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL2ZpeC1DVkUtMjAxOC0xODc1MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRmZTIwMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9maXgtQ1ZFLTIwMTgtMTg3NTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Z2V0dGV4dC5naXQ7YT1jb21taXQ7aD1kY2UzYTE2XQotQ1ZFOiBDVkUtMjAxOC0xODc1MQotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLQotRnJvbSBkY2UzYTE2ZTVlOTM2ODI0NTczNWUyOWJmNDk4ZGNkNWUzZTQ3NGE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGFpa2kgVWVubyA8dWVub0BnbnUub3JnPgotRGF0ZTogVGh1LCAxNSBTZXAgMjAxNiAxMzo1NzoyNCArMDIwMAotU3ViamVjdDogW1BBVENIXSB4Z2V0dGV4dDogRml4IGNyYXNoIHdpdGggKi5wbyBmaWxlIGlucHV0Ci0KLVdoZW4geGdldHRleHQgd2FzIGdpdmVuIHR3byAqLnBvIGZpbGVzIHdpdGggdGhlIHNhbWUgbXNnaWRfcGx1cmFsLCBpdAotY3Jhc2hlZCB3aXRoIGRvdWJsZS1mcmVlLiAgUHJvYmxlbSByZXBvcnRlZCBieSBEYXZsZXQgUGFuZWNoIGluOgotaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1nZXR0ZXh0LzIwMTYtMDkvbXNnMDAwMDEuaHRtbAotKiBnZXR0ZXh0LXRvb2xzL3NyYy9wby1ncmFtLWdlbi55OiBEb24ndCBmcmVlIG1zZ2lkX3BsdXJhbGZvcm0gYWZ0ZXIKLWNhbGxpbmcgZG9fY2FsbGJhY2tfbWVzc2FnZSwgYXNzdW1pbmcgdGhhdCBpdCB0YWtlcyBvd25lcnNoaXAuCi0qIGdldHRleHQtdG9vbHMvc3JjL3JlYWQtY2F0YWxvZy5jIChkZWZhdWx0X2FkZF9tZXNzYWdlKTogRnJlZQotbXNnaWRfcGx1cmFsIGFmdGVyIGNhbGxpbmcgbWVzc2FnZV9hbGxvYy4KLSogZ2V0dGV4dC10b29scy90ZXN0cy94Z2V0dGV4dC1wby0yOiBOZXcgZmlsZS4KLSogZ2V0dGV4dC10b29scy90ZXN0cy9NYWtlZmlsZS5hbSAoVEVTVFMpOiBBZGQgbmV3IHRlc3QuCi0tLS0KLSBnZXR0ZXh0LXRvb2xzL3NyYy9wby1ncmFtLWdlbi55ICAgfCAxMyArKysrLS0tLS0KLSBnZXR0ZXh0LXRvb2xzL3NyYy9yZWFkLWNhdGFsb2cuYyAgfCAgMiArKwotIGdldHRleHQtdG9vbHMvdGVzdHMvTWFrZWZpbGUuYW0gICB8ICAyICstCi0gZ2V0dGV4dC10b29scy90ZXN0cy94Z2V0dGV4dC1wby0yIHwgNTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gNCBmaWxlcyBjaGFuZ2VkLCA2MyBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDc1NSBnZXR0ZXh0LXRvb2xzL3Rlc3RzL3hnZXR0ZXh0LXBvLTIKLQotZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvc3JjL3BvLWdyYW0tZ2VuLnkgYi9nZXR0ZXh0LXRvb2xzL3NyYy9wby1ncmFtLWdlbi55Ci1pbmRleCBiZWNmNWU2Li40NDI4ZTc3IDEwMDY0NAotLS0tIGEvZ2V0dGV4dC10b29scy9zcmMvcG8tZ3JhbS1nZW4ueQotKysrIGIvZ2V0dGV4dC10b29scy9zcmMvcG8tZ3JhbS1nZW4ueQotQEAgLTIyMSwxNCArMjIxLDExIEBAIG1lc3NhZ2UKLSAgICAgICAgICAgICAgICAgICBjaGVja19vYnNvbGV0ZSAoJDEsICQzKTsKLSAgICAgICAgICAgICAgICAgICBjaGVja19vYnNvbGV0ZSAoJDEsICQ0KTsKLSAgICAgICAgICAgICAgICAgICBpZiAoISQxLm9ic29sZXRlIHx8IHBhc3Nfb2Jzb2xldGVfZW50cmllcykKLS0gICAgICAgICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgICAgICAgZG9fY2FsbGJhY2tfbWVzc2FnZSAoJDEuY3R4dCwgc3RyaW5nMiwgJiQxLnBvcywgJDMuc3RyaW5nLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNC5yaHMubXNnc3RyLCAkNC5yaHMubXNnc3RyX2xlbiwgJiQ0LnBvcywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDEucHJldl9jdHh0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkMS5wcmV2X2lkLCAkMS5wcmV2X2lkX3BsdXJhbCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDEub2Jzb2xldGUpOwotLSAgICAgICAgICAgICAgICAgICAgICBmcmVlICgkMy5zdHJpbmcpOwotLSAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAgICAgZG9fY2FsbGJhY2tfbWVzc2FnZSAoJDEuY3R4dCwgc3RyaW5nMiwgJiQxLnBvcywgJDMuc3RyaW5nLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDQucmhzLm1zZ3N0ciwgJDQucmhzLm1zZ3N0cl9sZW4sICYkNC5wb3MsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkMS5wcmV2X2N0eHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkMS5wcmV2X2lkLCAkMS5wcmV2X2lkX3BsdXJhbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQxLm9ic29sZXRlKTsKLSAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIGZyZWVfbWVzc2FnZV9pbnRybyAoJDEpOwotZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvc3JjL3JlYWQtY2F0YWxvZy5jIGIvZ2V0dGV4dC10b29scy9zcmMvcmVhZC1jYXRhbG9nLmMKLWluZGV4IDU3MWQxOGUuLjZhZjZkMjAgMTAwNjQ0Ci0tLS0gYS9nZXR0ZXh0LXRvb2xzL3NyYy9yZWFkLWNhdGFsb2cuYwotKysrIGIvZ2V0dGV4dC10b29scy9zcmMvcmVhZC1jYXRhbG9nLmMKLUBAIC0zOTcsNiArMzk3LDggQEAgZGVmYXVsdF9hZGRfbWVzc2FnZSAoZGVmYXVsdF9jYXRhbG9nX3JlYWRlcl90eSAqdGhpcywKLSAgICAgICAgICBhcHByb3ByaWF0ZS4gICovCi0gICAgICAgbXAgPSBtZXNzYWdlX2FsbG9jIChtc2djdHh0LCBtc2dpZCwgbXNnaWRfcGx1cmFsLCBtc2dzdHIsIG1zZ3N0cl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dzdHJfcG9zKTsKLSsgICAgICBpZiAobXNnaWRfcGx1cmFsICE9IE5VTEwpCi0rICAgICAgICBmcmVlIChtc2dpZF9wbHVyYWwpOwotICAgICAgIG1wLT5wcmV2X21zZ2N0eHQgPSBwcmV2X21zZ2N0eHQ7Ci0gICAgICAgbXAtPnByZXZfbXNnaWQgPSBwcmV2X21zZ2lkOwotICAgICAgIG1wLT5wcmV2X21zZ2lkX3BsdXJhbCA9IHByZXZfbXNnaWRfcGx1cmFsOwotZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvdGVzdHMvTWFrZWZpbGUuYW0gYi9nZXR0ZXh0LXRvb2xzL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCAyM2IwOWIxLi4wZGZiNGQ4IDEwMDY0NAotLS0tIGEvZ2V0dGV4dC10b29scy90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGIvZ2V0dGV4dC10b29scy90ZXN0cy9NYWtlZmlsZS5hbQotQEAgLTk1LDcgKzk1LDcgQEAgVEVTVFMgPSBnZXR0ZXh0LTEgZ2V0dGV4dC0yIGdldHRleHQtMyBnZXR0ZXh0LTQgZ2V0dGV4dC01IGdldHRleHQtNiBnZXR0ZXh0LTcgXAotIAl4Z2V0dGV4dC1wZXJsLTEgeGdldHRleHQtcGVybC0yIHhnZXR0ZXh0LXBlcmwtMyB4Z2V0dGV4dC1wZXJsLTQgXAotIAl4Z2V0dGV4dC1wZXJsLTUgeGdldHRleHQtcGVybC02IHhnZXR0ZXh0LXBlcmwtNyB4Z2V0dGV4dC1wZXJsLTggXAotIAl4Z2V0dGV4dC1waHAtMSB4Z2V0dGV4dC1waHAtMiB4Z2V0dGV4dC1waHAtMyB4Z2V0dGV4dC1waHAtNCBcCi0tCXhnZXR0ZXh0LXBvLTEgXAotKwl4Z2V0dGV4dC1wby0xIHhnZXR0ZXh0LXBvLTIgXAotIAl4Z2V0dGV4dC1wcm9wZXJ0aWVzLTEgXAotIAl4Z2V0dGV4dC1weXRob24tMSB4Z2V0dGV4dC1weXRob24tMiB4Z2V0dGV4dC1weXRob24tMyBcCi0gCXhnZXR0ZXh0LXB5dGhvbi00IFwKLWRpZmYgLS1naXQgYS9nZXR0ZXh0LXRvb2xzL3Rlc3RzL3hnZXR0ZXh0LXBvLTIgYi9nZXR0ZXh0LXRvb2xzL3Rlc3RzL3hnZXR0ZXh0LXBvLTIKLW5ldyBmaWxlIG1vZGUgMTAwNzU1Ci1pbmRleCAwMDAwMDAwLi5jNGJkOWQwCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZXR0ZXh0LXRvb2xzL3Rlc3RzL3hnZXR0ZXh0LXBvLTIKLUBAIC0wLDAgKzEsNTUgQEAKLSsjISAvYmluL3NoCi0rLiAiJHtzcmNkaXI9Ln0vaW5pdC5zaCI7IHBhdGhfcHJlcGVuZF8gLiAuLi9zcmMKLSsKLSsjIFRlc3QgUE8gZXh0cmFjdG9ycyB3aXRoIG11bHRpcGxlIGlucHV0IGZpbGVzLgotKwotK2NhdCA8PEVPRiA+IHhnLXBvLTItMS5wbwotK21zZ2lkICJmaXJzdCBtc2dpZCIKLSttc2dpZF9wbHVyYWwgImZpcnN0IG1zZ2lkIChwbHVyYWwpIgotK21zZ3N0clswXSAiIgotK21zZ3N0clsxXSAiIgotKwotK21zZ2lkICJzZWNvbmQgbXNnaWQiCi0rbXNnaWRfcGx1cmFsICJzZWNvbmQgbXNnaWQgKHBsdXJhbCkiCi0rbXNnc3RyWzBdICIiCi0rbXNnc3RyWzFdICIiCi0rRU9GCi0rCi0rY2F0IDw8RU9GID4geGctcG8tMi0yLnBvCi0rbXNnaWQgInRoaXJkIG1zZ2lkIgotK21zZ2lkX3BsdXJhbCAidGhpcmQgbXNnaWQgKHBsdXJhbCkiCi0rbXNnc3RyWzBdICIiCi0rbXNnc3RyWzFdICIiCi0rCi0rbXNnaWQgInNlY29uZCBtc2dpZCIKLSttc2dpZF9wbHVyYWwgInNlY29uZCBtc2dpZCAocGx1cmFsKSIKLSttc2dzdHJbMF0gIiIKLSttc2dzdHJbMV0gIiIKLStFT0YKLSsKLSs6ICR7WEdFVFRFWFQ9eGdldHRleHR9Ci0rJHtYR0VUVEVYVH0gLS1vbWl0LWhlYWRlciB4Zy1wby0yLTEucG8geGctcG8tMi0yLnBvIC1vIHhnLXBvLTIudG1wLnBvIHx8IEV4aXQgMQotK0xDX0FMTD1DIHRyIC1kICdccicgPCB4Zy1wby0yLnRtcC5wbyA+IHhnLXBvLTIucG8gfHwgRXhpdCAxCi0rCi0rY2F0IDw8RU9GID4geGctcG8tMi5vawotK21zZ2lkICJmaXJzdCBtc2dpZCIKLSttc2dpZF9wbHVyYWwgImZpcnN0IG1zZ2lkIChwbHVyYWwpIgotK21zZ3N0clswXSAiIgotK21zZ3N0clsxXSAiIgotKwotK21zZ2lkICJzZWNvbmQgbXNnaWQiCi0rbXNnaWRfcGx1cmFsICJzZWNvbmQgbXNnaWQgKHBsdXJhbCkiCi0rbXNnc3RyWzBdICIiCi0rbXNnc3RyWzFdICIiCi0rCi0rbXNnaWQgInRoaXJkIG1zZ2lkIgotK21zZ2lkX3BsdXJhbCAidGhpcmQgbXNnaWQgKHBsdXJhbCkiCi0rbXNnc3RyWzBdICIiCi0rbXNnc3RyWzFdICIiCi0rRU9GCi0rCi0rOiAke0RJRkY9ZGlmZn0KLSske0RJRkZ9IHhnLXBvLTIub2sgeGctcG8tMi5wbwotK3Jlc3VsdD0kPwotKwotK2V4aXQgJHJlc3VsdAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9wYXJhbGxlbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL3BhcmFsbGVsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGUyYzk0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL3BhcmFsbGVsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotaW5zdGFsIGxpYmdldHRleHRsaWIuYSBiZWZvcmUgcmVtb3ZpbmcgaXQKLQotSW4gYSBtdWx0aXBsZSBqb2IgYnVpbGQsIE1ha2VmaWxlIGNhbiBzaW11bHRhbmVvdXNseQotYmUgaW5zdGFsbGluZyBhbmQgcmVtb3ZpbmcgbGliZ2V0dGV4dGxpYi5hLiAgV2Ugc2VyaWFsaXplCi10aGUgb3BlcmF0aW9ucy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpzbGF0ZXJAd2luZHJpdmVyLmNvbT4KLQotLS0tIGEvZ2V0dGV4dC10b29scy9nbnVsaWItbGliL01ha2VmaWxlLmFtCi0rKysgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvTWFrZWZpbGUuYW0KLUBAIC01Nyw2ICs1NywxMCBAQCBlbmRpZgotICMgUnVsZXMgZ2VuZXJhdGVkIGFuZCBjb2xsZWN0ZWQgYnkgZ251bGliLXRvb2wuCi0gaW5jbHVkZSBNYWtlZmlsZS5nbnVsaWIKLSAKLSsjIGRlZmluZWQgaW4gTWFrZWZpbGUuZ251bGliIGJ1dCBtaXNzaW5nIHRoaXMgZGVwZW5kZW5jeQotKyMKLStpbnN0YWxsLWV4ZWMtY2xlYW46IGluc3RhbGwtbGliTFRMSUJSQVJJRVMKLSsKLSAjIFdoaWNoIGNsYXNzZXMgdG8gZXhwb3J0IGZyb20gdGhlIHNoYXJlZCBsaWJyYXJ5LgotIE1PT1BQRkxBR1MgKz0gLS1kbGxleHBvcnQ9c3R5bGVkX29zdHJlYW0KLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL3NlcmlhbC10ZXN0cy1jb25maWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9zZXJpYWwtdGVzdHMtY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWZmOTEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL3NlcmlhbC10ZXN0cy1jb25maWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1Gcm9tIGM0YjFmM2EwYzdiN2M0MGIzNDNiZTliOTVkZWI4NGUwNDg1NjQzYmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiSG9uZ2p1bi5ZYW5nIiA8aG9uZ2p1bi55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDI4IEp1bCAyMDE2IDEyOjM2OjE1ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBmb3IgcHRlc3QKLQotQWRkIHNlcmlhbC10ZXN0cyBzdXBwb3J0LCBwdGVzdCBuZWVkIGl0Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgIHwgMiArLQotIGdldHRleHQtcnVudGltZS9jb25maWd1cmUuYWMgfCAyICstCi0gZ2V0dGV4dC10b29scy9jb25maWd1cmUuYWMgICB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNWU5OTZmYS4uODgwNTgxZiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjMsNyArMjMsNyBAQCBBQ19JTklUKFtnZXR0ZXh0XSwKLSAJW2J1Zy1nbnUtZ2V0dGV4dEBnbnUub3JnXSkKLSBBQ19DT05GSUdfU1JDRElSKFtnZXR0ZXh0LXRvb2xzL3NyYy9tc2dmbXQuY10pCi0gQUNfQ09ORklHX0FVWF9ESVIoW2J1aWxkLWF1eF0pCi0tQU1fSU5JVF9BVVRPTUFLRShbMS4xMyBzaWxlbnQtcnVsZXMgcGFyYWxsZWwtdGVzdHMgZGlzdC14eiBkaXN0LWx6aXBdKQotK0FNX0lOSVRfQVVUT01BS0UoWzEuMTMgc2lsZW50LXJ1bGVzIHNlcmlhbC10ZXN0cyBkaXN0LXh6IGRpc3QtbHppcF0pCi0gCi0gZG5sIE92ZXJyaWRlIGF1dG9tYWtlJ3MgdGFyIGNvbW1hbmQgdXNlZCBmb3IgY3JlYXRpbmcgZGlzdHJpYnV0aW9ucy4KLSBhbV9fdGFyPScke0FNVEFSfSBjaG9mIC0gLS1vd25lcj1yb290IC0tZ3JvdXA9cm9vdCAiJCR0YXJkaXIiJwotZGlmZiAtLWdpdCBhL2dldHRleHQtcnVudGltZS9jb25maWd1cmUuYWMgYi9nZXR0ZXh0LXJ1bnRpbWUvY29uZmlndXJlLmFjCi1pbmRleCBlOTI5OWI2Li5kNGY1NTI4IDEwMDY0NAotLS0tIGEvZ2V0dGV4dC1ydW50aW1lL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2V0dGV4dC1ydW50aW1lL2NvbmZpZ3VyZS5hYwotQEAgLTIyLDcgKzIyLDcgQEAgQUNfSU5JVChbZ2V0dGV4dC1ydW50aW1lXSwKLSAJW2J1Zy1nbnUtZ2V0dGV4dEBnbnUub3JnXSkKLSBBQ19DT05GSUdfU1JDRElSKFtpbnRsL2RjaWdldHRleHQuY10pCi0gQUNfQ09ORklHX0FVWF9ESVIoWy4uL2J1aWxkLWF1eF0pCi0tQU1fSU5JVF9BVVRPTUFLRShbMS4xMS4xIHNpbGVudC1ydWxlcyBwYXJhbGxlbC10ZXN0c10pCi0rQU1fSU5JVF9BVVRPTUFLRShbMS4xMS4xIHNpbGVudC1ydWxlcyBzZXJpYWwtdGVzdHNdKQotIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCi0gCi0gZG5sIEluc3RhbGxhdGlvbiBkaXJlY3Rvcmllcy4KLWRpZmYgLS1naXQgYS9nZXR0ZXh0LXRvb2xzL2NvbmZpZ3VyZS5hYyBiL2dldHRleHQtdG9vbHMvY29uZmlndXJlLmFjCi1pbmRleCA5MjBlZWI2Li5jNTA3NDM0IDEwMDY0NAotLS0tIGEvZ2V0dGV4dC10b29scy9jb25maWd1cmUuYWMKLSsrKyBiL2dldHRleHQtdG9vbHMvY29uZmlndXJlLmFjCi1AQCAtMjIsNyArMjIsNyBAQCBBQ19JTklUKFtnZXR0ZXh0LXRvb2xzXSwKLSAJW2J1Zy1nbnUtZ2V0dGV4dEBnbnUub3JnXSkKLSBBQ19DT05GSUdfU1JDRElSKFtzcmMvbXNnZm10LmNdKQotIEFDX0NPTkZJR19BVVhfRElSKFsuLi9idWlsZC1hdXhdKQotLUFNX0lOSVRfQVVUT01BS0UoWzEuMTEuMSBzaWxlbnQtcnVsZXMgcGFyYWxsZWwtdGVzdHNdKQotK0FNX0lOSVRfQVVUT01BS0UoWzEuMTEuMSBzaWxlbnQtcnVsZXMgc2VyaWFsLXRlc3RzXSkKLSBBQ19DT05GSUdfSEVBREVSUyhbY29uZmlnLmhdKQotIAotIGRubCBJbnN0YWxsYXRpb24gZGlyZWN0b3JpZXMuCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL3VzZS1wa2djb25maWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS91c2UtcGtnY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTU2YTE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL3VzZS1wa2djb25maWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMjEgKzAsMCBAQAotRm9yIHJlYXNvbnMgd2hpY2ggSSBqdXN0IGNhbid0IGZhdGhvbSBnbnVsaWIgZG9lc24ndCB1c2UgdGhlIGV4cGVjdGVkIHRvb2xzIHRvCi1maW5kIGxpYnJhcmllcyBidXQgYmFkbHkgcmVpbnZlbnRzIHRoZSB3aGVlbC4gIFRoaXMgd2lsbCB0cml2aWFsbHkgbGVhZCB0byBob3N0Ci1jb250YW1pbmF0aW9uIChleHBsaWNpdCBzZWFyY2hlcyBvZiAvdXNyL2xpYikgb3IgaW5jb3JyZWN0IFJQQVRIcyAoYmFkCi1jYW5vbmljYWxpc2F0aW9uIHJlc3VsdGluZyBpbiByZWxhdGl2ZSBwYXRocykuCi0KLVNpbXBseSBkZWxldGUgYWxsIHRoZSBjcmF6eSwgYW5kIHJlcGxhY2Ugd2l0aCBhIHNpbmdsZSBjYWxsIHRvIHBrZy1jb25maWcuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSAodXBzdHJlYW0gc3RpbGwgcmVmdXNlIHRvIGNvbnNpZGVyIHBrZy1jb25maWcpCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvZ251bGliLWxvY2FsL200L2xpYmNyb2NvLm00IGIvZ251bGliLWxvY2FsL200L2xpYmNyb2NvLm00Ci1pbmRleCBmNzllYTgyZjEuLjFmNjcyNzRkYiAxMDA2NDQKLS0tLSBhL2dldHRleHQtdG9vbHMvZ251bGliLW00L2xpYmNyb2NvLm00Ci0rKysgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJjcm9jby5tNAotQEAgLTgsNiArOCw3IEBAIGRubCBGcm9tIEJydW5vIEhhaWJsZS4KLSAKLSBBQ19ERUZVTihbZ2xfTElCQ1JPQ09dLAotIFsKLSsgIEFDX1JFUVVJUkUoW1BLR19QUk9HX1BLR19DT05GSUddKQotICAgZG5sIGxpYmNyb2NvIGRlcGVuZHMgb24gbGliZ2xpYi4KLSAgIEFDX1JFUVVJUkUoW2dsX0xJQkdMSUJdKQotIAotQEAgLTIzLDY1ICsyNCwxMCBAQCBBQ19ERUZVTihbZ2xfTElCQ1JPQ09dLAotICAgTFRMSUJDUk9DTz0KLSAgIElOQ0NST0NPPQotICAgaWYgdGVzdCAiJGdsX2N2X2xpYmNyb2NvX3VzZV9pbmNsdWRlZCIgIT0geWVzOyB0aGVuCi0tICAgIGRubCBGaWd1cmUgb3V0IHdoZXRoZXIgd2UgY2FuIHVzZSBhIHByZWluc3RhbGxlZCBsaWJjcm9jby0wLjYsIG9yIGhhdmUgdG8KLS0gICAgZG5sIHVzZSB0aGUgaW5jbHVkZWQgb25lLgotLSAgICBBQ19DQUNIRV9WQUwoW2dsX2N2X2xpYmNyb2NvXSwgWwotLSAgICAgIGdsX2N2X2xpYmNyb2NvPW5vCi0tICAgICAgZ2xfY3ZfTElCQ1JPQ089Ci0tICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0KLS0gICAgICBnbF9jdl9JTkNDUk9DTz0KLS0gICAgICBnbF9zYXZlX0xJQlM9IiRMSUJTIgotLSAgICAgIGRubCBTZWFyY2ggZm9yIGxpYmNyb2NvIGFuZCBkZWZpbmUgTElCQ1JPQ09fMF82LCBMVExJQkNST0NPXzBfNiBhbmQKLS0gICAgICBkbmwgSU5DQ1JPQ09fMF82IGFjY29yZGluZ2x5LgotLSAgICAgIGRubCBEb24ndCB1c2UgY3JvY28tMC42LWNvbmZpZyBub3IgcGtnLWNvbmZpZywgc2luY2UgaXQgZG9lc24ndCB3b3JrIHdoZW4KLS0gICAgICBkbmwgY3Jvc3MtY29tcGlsaW5nIG9yIHdoZW4gdGhlIEMgY29tcGlsZXIgaW4gdXNlIGlzIGRpZmZlcmVudCBmcm9tIHRoZQotLSAgICAgIGRubCBvbmUgdGhhdCBidWlsdCB0aGUgbGlicmFyeS4KLS0gICAgICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW2Nyb2NvLTAuNl0sIFtnbGliLTIuMF0pCi0tICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyAkTElCQ1JPQ09fMF82IgotLSAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGliY3JvY28tY29uZmlnLmg+XSwKLS0gICAgICAgIFtjb25zdCBjaGFyICp2ZXJzaW9uID0gTElCQ1JPQ09fVkVSU0lPTjsgcmV0dXJuICF2ZXJzaW9uO10sCi0tICAgICAgICBbZ2xfY3ZfbGliY3JvY289eWVzCi0tICAgICAgICAgZ2xfY3ZfTElCQ1JPQ089IiRMSUJDUk9DT18wXzYiCi0tICAgICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0iJExUTElCQ1JPQ09fMF82IgotLSAgICAgICAgXSkKLS0gICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliY3JvY28iICE9IHllczsgdGhlbgotLSAgICAgICAgZ2xfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgotLSAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkSU5DQ1JPQ09fMF82IgotLSAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJjcm9jby1jb25maWcuaD5dLAotLSAgICAgICAgICBbY29uc3QgY2hhciAqdmVyc2lvbiA9IExJQkNST0NPX1ZFUlNJT047IHJldHVybiAhdmVyc2lvbjtdLAotLSAgICAgICAgICBbZ2xfY3ZfbGliY3JvY289eWVzCi0tICAgICAgICAgICBnbF9jdl9MSUJDUk9DTz0iJExJQkNST0NPXzBfNiIKLS0gICAgICAgICAgIGdsX2N2X0xUTElCQ1JPQ089IiRMVExJQkNST0NPXzBfNiIKLS0gICAgICAgICAgIGdsX2N2X0lOQ0NST0NPPSIkSU5DQ1JPQ09fMF82IgotLSAgICAgICAgICBdKQotLSAgICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYmNyb2NvIiAhPSB5ZXM7IHRoZW4KLS0gICAgICAgICAgZG5sIE9mdGVuIHRoZSBpbmNsdWRlIGZpbGVzIGFyZSBpbnN0YWxsZWQgaW4KLS0gICAgICAgICAgZG5sIC91c3IvaW5jbHVkZS9saWJjcm9jby0wLjYvbGliY3JvY28uCi0tICAgICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGliY3JvY28tMC42L2xpYmNyb2NvL2xpYmNyb2NvLWNvbmZpZy5oPl0sCi0tICAgICAgICAgICAgW2NvbnN0IGNoYXIgKnZlcnNpb24gPSBMSUJDUk9DT19WRVJTSU9OOyByZXR1cm4gIXZlcnNpb247XSwKLS0gICAgICAgICAgICBbZ2xfQUJTT0xVVEVfSEVBREVSKFtsaWJjcm9jby0wLjYvbGliY3JvY28vbGliY3JvY28tY29uZmlnLmhdKQotLSAgICAgICAgICAgICBsaWJjcm9jb19pbmNsdWRlX2Rpcj1gZWNobyAiJGdsX2N2X2Fic29sdXRlX2xpYmNyb2NvXzBfNl9saWJjcm9jb19saWJjcm9jb19jb25maWdfaCIgfCBzZWQgLWUgJ3MsLmxpYmNyb2NvLWNvbmZpZ1wuaCQsLCdgCi0tICAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRsaWJjcm9jb19pbmNsdWRlX2RpciI7IHRoZW4KLS0gICAgICAgICAgICAgICBnbF9jdl9saWJjcm9jbz15ZXMKLS0gICAgICAgICAgICAgICBnbF9jdl9MSUJDUk9DTz0iJExJQkNST0NPXzBfNiIKLS0gICAgICAgICAgICAgICBnbF9jdl9MVExJQkNST0NPPSIkTFRMSUJDUk9DT18wXzYiCi0tICAgICAgICAgICAgICAgZ2xfY3ZfSU5DQ1JPQ089Ii1JJGxpYmNyb2NvX2luY2x1ZGVfZGlyIgotLSAgICAgICAgICAgICBmaQotLSAgICAgICAgICAgIF0pCi0tICAgICAgICBmaQotLSAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIgotLSAgICAgIGZpCi0tICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyIKLS0gICAgXSkKLS0gICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgbGliY3JvY29dKQotLSAgICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliY3JvY29dKQotLSAgICBpZiB0ZXN0ICRnbF9jdl9saWJjcm9jbyA9IHllczsgdGhlbgotLSAgICAgIExJQkNST0NPPSIkZ2xfY3ZfTElCQ1JPQ08iCi0tICAgICAgTFRMSUJDUk9DTz0iJGdsX2N2X0xUTElCQ1JPQ08iCi0tICAgICAgSU5DQ1JPQ089IiRnbF9jdl9JTkNDUk9DTyIKLS0gICAgZWxzZQotLSAgICAgIGdsX2N2X2xpYmNyb2NvX3VzZV9pbmNsdWRlZD15ZXMKLS0gICAgZmkKLSsgICAgUEtHX0NIRUNLX01PRFVMRVMoW0NST0NPXSwgW2xpYmNyb2NvLTAuNl0pCi0rICAgIExJQkNST0NPPSRDUk9DT19MSUJTCi0rICAgIExUTElCQ1JPQ089JENST0NPX0xJQlMKLSsgICAgSU5DQ1JPQ089JENST0NPX0NGTEFHUwotICAgZmkKLSAgIEFDX1NVQlNUKFtMSUJDUk9DT10pCi0gICBBQ19TVUJTVChbTFRMSUJDUk9DT10pCi1kaWZmIC0tZ2l0IGEvZ251bGliLWxvY2FsL200L2xpYmdsaWIubTQgYi9nbnVsaWItbG9jYWwvbTQvbGliZ2xpYi5tNAotaW5kZXggNDJlNTVlNmZkLi5hYjI1YTViMjIgMTAwNjQ0Ci0tLS0gYS9nZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJnbGliLm00Ci0rKysgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJnbGliLm00Ci1AQCAtOCw2ICs4LDcgQEAgZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotIAotIEFDX0RFRlVOKFtnbF9MSUJHTElCXSwKLSBbCi0rICBBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKLSAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBpbmNsdWRlZCBnbGliIGlzIHJlcXVlc3RlZF0pCi0gICBBQ19BUkdfV0lUSChbaW5jbHVkZWQtZ2xpYl0sCi0gICAgIFsgIC0td2l0aC1pbmNsdWRlZC1nbGliICAgIHVzZSB0aGUgZ2xpYjIgaW5jbHVkZWQgaGVyZV0sCi1AQCAtMjAsNzYgKzIxLDEwIEBAIEFDX0RFRlVOKFtnbF9MSUJHTElCXSwKLSAgIExUTElCR0xJQj0KLSAgIElOQ0dMSUI9Ci0gICBpZiB0ZXN0ICIkZ2xfY3ZfbGliZ2xpYl91c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgotLSAgICBkbmwgRmlndXJlIG91dCB3aGV0aGVyIHdlIGNhbiB1c2UgYSBwcmVpbnN0YWxsZWQgbGliZ2xpYi0yLjAsIG9yIGhhdmUgdG8gdXNlCi0tICAgIGRubCB0aGUgaW5jbHVkZWQgb25lLgotLSAgICBBQ19DQUNIRV9WQUwoW2dsX2N2X2xpYmdsaWJdLCBbCi0tICAgICAgZ2xfY3ZfbGliZ2xpYj1ubwotLSAgICAgIGdsX2N2X0xJQkdMSUI9Ci0tICAgICAgZ2xfY3ZfTFRMSUJHTElCPQotLSAgICAgIGdsX2N2X0lOQ0dMSUI9Ci0tICAgICAgZ2xfc2F2ZV9MSUJTPSIkTElCUyIKLS0gICAgICBkbmwgU2VhcmNoIGZvciBsaWJnbGliMiBhbmQgZGVmaW5lIExJQkdMSUJfMl8wLCBMVExJQkdMSUJfMl8wIGFuZAotLSAgICAgIGRubCBJTkNHTElCXzJfMCBhY2NvcmRpbmdseS4KLS0gICAgICBkbmwgRG9uJ3QgdXNlIGdsaWItY29uZmlnIG5vciBwa2ctY29uZmlnLCBzaW5jZSBpdCBkb2Vzbid0IHdvcmsgd2hlbgotLSAgICAgIGRubCBjcm9zcy1jb21waWxpbmcgb3Igd2hlbiB0aGUgQyBjb21waWxlciBpbiB1c2UgaXMgZGlmZmVyZW50IGZyb20gdGhlCi0tICAgICAgZG5sIG9uZSB0aGF0IGJ1aWx0IHRoZSBsaWJyYXJ5LgotLSAgICAgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbZ2xpYi0yLjBdKQotLSAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMgJExJQkdMSUJfMl8wIgotLSAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8Z2xpYi5oPgotLSNpZm5kZWYgR19CRUdJTl9ERUNMUwotLWVycm9yIHRoaXMgZ2xpYi5oIGluY2x1ZGVzIGEgZ2xpYmNvbmZpZy5oIGZyb20gYSBnbGliIHZlcnNpb24gMS54Ci0tI2VuZGlmCi0tXSwKLS0gICAgICAgIFtnX3N0cmluZ19uZXcgKCJmb28iKTtdLAotLSAgICAgICAgW2dsX2N2X2xpYmdsaWI9eWVzCi0tICAgICAgICAgZ2xfY3ZfTElCR0xJQj0iJExJQkdMSUJfMl8wIgotLSAgICAgICAgIGdsX2N2X0xUTElCR0xJQj0iJExUTElCR0xJQl8yXzAiCi0tICAgICAgICBdKQotLSAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJnbGliIiAhPSB5ZXM7IHRoZW4KLS0gICAgICAgIGdsX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKLS0gICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJElOQ0dMSUJfMl8wIgotLSAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxnbGliLmg+Ci0tI2lmbmRlZiBHX0JFR0lOX0RFQ0xTCi0tZXJyb3IgdGhpcyBnbGliLmggaW5jbHVkZXMgYSBnbGliY29uZmlnLmggZnJvbSBhIGdsaWIgdmVyc2lvbiAxLngKLS0jZW5kaWYKLS1dLAotLSAgICAgICAgICBbZ19zdHJpbmdfbmV3ICgiZm9vIik7XSwKLS0gICAgICAgICAgW2dsX2N2X2xpYmdsaWI9eWVzCi0tICAgICAgICAgICBnbF9jdl9MSUJHTElCPSIkTElCR0xJQl8yXzAiCi0tICAgICAgICAgICBnbF9jdl9MVExJQkdMSUI9IiRMVExJQkdMSUJfMl8wIgotLSAgICAgICAgICAgZ2xfY3ZfSU5DR0xJQj0iJElOQ0dMSUJfMl8wIgotLSAgICAgICAgICBdKQotLSAgICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYmdsaWIiICE9IHllczsgdGhlbgotLSAgICAgICAgICBkbmwgT2Z0ZW4gdGhlIGluY2x1ZGUgZmlsZXMgYXJlIGluc3RhbGxlZCBpbiAvdXNyL2luY2x1ZGUvZ2xpYi0yLjAKLS0gICAgICAgICAgZG5sIGFuZCAvdXNyL2xpYi9nbGliLTIuMC9pbmNsdWRlLgotLSAgICAgICAgICBpZiB0ZXN0IC1uICIkTElCR0xJQl8yXzBfUFJFRklYIjsgdGhlbgotLSAgICAgICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyAtSSRMSUJHTElCXzJfMF9QUkVGSVgvaW5jbHVkZS9nbGliLTIuMCAtSSRMSUJHTElCXzJfMF9QUkVGSVgvJGFjbF9saWJkaXJzdGVtL2dsaWItMi4wL2luY2x1ZGUiCi0tICAgICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxnbGliLmg+Ci0tI2lmbmRlZiBHX0JFR0lOX0RFQ0xTCi0tZXJyb3IgdGhpcyBnbGliLmggaW5jbHVkZXMgYSBnbGliY29uZmlnLmggZnJvbSBhIGdsaWIgdmVyc2lvbiAxLngKLS0jZW5kaWYKLS1dLAotLSAgICAgICAgICAgICAgW2dfc3RyaW5nX25ldyAoImZvbyIpO10sCi0tICAgICAgICAgICAgICBbZ2xfY3ZfbGliZ2xpYj15ZXMKLS0gICAgICAgICAgICAgICBnbF9jdl9MSUJHTElCPSIkTElCR0xJQl8yXzAiCi0tICAgICAgICAgICAgICAgZ2xfY3ZfTFRMSUJHTElCPSIkTFRMSUJHTElCXzJfMCIKLS0gICAgICAgICAgICAgICBnbF9jdl9JTkNHTElCPSItSSRMSUJHTElCXzJfMF9QUkVGSVgvaW5jbHVkZS9nbGliLTIuMCAtSSRMSUJHTElCXzJfMF9QUkVGSVgvJGFjbF9saWJkaXJzdGVtL2dsaWItMi4wL2luY2x1ZGUiCi0tICAgICAgICAgICAgICBdKQotLSAgICAgICAgICBmaQotLSAgICAgICAgZmkKLS0gICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyIKLS0gICAgICBmaQotLSAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMiCi0tICAgIF0pCi0tICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGdsaWJdKQotLSAgICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliZ2xpYl0pCi0tICAgIGlmIHRlc3QgJGdsX2N2X2xpYmdsaWIgPSB5ZXM7IHRoZW4KLS0gICAgICBMSUJHTElCPSIkZ2xfY3ZfTElCR0xJQiIKLS0gICAgICBMVExJQkdMSUI9IiRnbF9jdl9MVExJQkdMSUIiCi0tICAgICAgSU5DR0xJQj0iJGdsX2N2X0lOQ0dMSUIiCi0tICAgIGVsc2UKLS0gICAgICBnbF9jdl9saWJnbGliX3VzZV9pbmNsdWRlZD15ZXMKLS0gICAgZmkKLSsgICAgUEtHX0NIRUNLX01PRFVMRVMoW0dMSUJdLCBbZ2xpYi0yLjBdKQotKyAgICBMSUJHTElCPSIkR0xJQl9MSUJTIgotKyAgICBMVExJQkdMSUI9IiRHTElCX0xJQlMiCi0rICAgIElOQ0dMSUI9IiRHTElCX0NGTEFHUyIKLSAgIGZpCi0gICBBQ19TVUJTVChbTElCR0xJQl0pCi0gICBBQ19TVUJTVChbTFRMSUJHTElCXSkKLWRpZmYgLS1naXQgYS9nbnVsaWItbG9jYWwvbTQvbGlieG1sLm00IGIvZ251bGliLWxvY2FsL200L2xpYnhtbC5tNAotaW5kZXggNDgwYzcwMGQyLi5jYjM5MzA5ZDUgMTAwNjQ0Ci0tLS0gYS9nZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJ4bWwubTQKLSsrKyBiL2dldHRleHQtdG9vbHMvZ251bGliLW00L2xpYnhtbC5tNAotQEAgLTgsNiArOCw3IEBAIGRubCBGcm9tIEJydW5vIEhhaWJsZS4KLQotIEFDX0RFRlVOKFtnbF9MSUJYTUxdLAotIFsKLSsgIEFDX1JFUVVJUkUoW1BLR19QUk9HX1BLR19DT05GSUddKQotICAgQUNfUkVRVUlSRShbQU1fSUNPTlZfTElOS10pCi0KLSAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBpbmNsdWRlZCBsaWJ4bWwgaXMgcmVxdWVzdGVkXSkKLUBAIC0yMiwxMDAgKzIyLDEwIEBAIEFDX0RFRlVOKFtnbF9MSUJYTUxdLAotICAgTFRMSUJYTUw9Ci0gICBJTkNYTUw9Ci0gICBpZiB0ZXN0ICIkZ2xfY3ZfbGlieG1sX3VzZV9pbmNsdWRlZCIgIT0geWVzOyB0aGVuCi0tICAgIGRubCBGaWd1cmUgb3V0IHdoZXRoZXIgd2UgY2FuIHVzZSBhIHByZWluc3RhbGxlZCBsaWJ4bWwyLCBvciBoYXZlIHRvIHVzZQotLSAgICBkbmwgdGhlIGluY2x1ZGVkIG9uZS4KLS0gICAgQUNfQ0FDSEVfVkFMKFtnbF9jdl9saWJ4bWxdLCBbCi0tICAgICAgZ2xfY3ZfbGlieG1sPW5vCi0tICAgICAgZ2xfY3ZfTElCWE1MPQotLSAgICAgIGdsX2N2X0xUTElCWE1MPQotLSAgICAgIGdsX2N2X0lOQ1hNTD0KLS0gICAgICBnbF9zYXZlX0xJQlM9IiRMSUJTIgotLSAgICAgIExJQlM9IiRMSUJTICRMSUJJQ09OViIKLS0gICAgICBkbmwgU2VhcmNoIGZvciBsaWJ4bWwyIGFuZCBkZWZpbmUgTElCWE1MMiwgTFRMSUJYTUwyIGFuZCBJTkNYTUwyCi0tICAgICAgZG5sIGFjY29yZGluZ2x5LgotLSAgICAgIGRubCBEb24ndCB1c2UgeG1sMi1jb25maWcgbm9yIHBrZy1jb25maWcsIHNpbmNlIGl0IGRvZXNuJ3Qgd29yayB3aGVuCi0tICAgICAgZG5sIGNyb3NzLWNvbXBpbGluZyBvciB3aGVuIHRoZSBDIGNvbXBpbGVyIGluIHVzZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUKLS0gICAgICBkbmwgb25lIHRoYXQgYnVpbHQgdGhlIGxpYnJhcnkuCi0tICAgICAgZG5sIFVzZSBhIHRlc3QgcHJvZ3JhbSB0aGF0IHRyaWVzIHRvIGludm9rZSB4bWxGcmVlLiBPbiBDeWd3aW4gMS43LngsCi0tICAgICAgZG5sIGxpYnhtbDIgaXMgYnVpbHQgaW4gc3VjaCBhIHdheSB0aGF0IHVzZXMgb2YgeG1sRnJlZSB3b3JrIGZpbmUgd2l0aAotLSAgICAgIGRubCAtV2wsLS1lbmFibGUtYXV0by1pbXBvcnQgYnV0IGxlYWQgdG8gYSBsaW5rIGVycm9yIHdpdGgKLS0gICAgICBkbmwgLVdsLC0tZGlzYWJsZS1hdXRvLWltcG9ydC4KLS0gICAgICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW3htbDJdKQotLSAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMgJExJQlhNTDIgJExJQklDT05WIgotLSAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGlieG1sL3htbHZlcnNpb24uaD4KLS0gICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94bWxtZW1vcnkuaD4KLS0gICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94cGF0aC5oPgotLSAgICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICBbeG1sQ2hlY2tWZXJzaW9uICgwKTsKLS0gICAgICAgICB4bWxGcmVlICgodm9pZCAqKSAwKTsKLS0gICAgICAgICB4bWxYUGF0aFNldENvbnRleHROb2RlICgodm9pZCAqKTAsICh2b2lkICopMCk7Ci0tICAgICAgICBdLAotLSAgICAgICAgW2dsX2N2X2xpYnhtbD15ZXMKLS0gICAgICAgICBnbF9jdl9MSUJYTUw9IiRMSUJYTUwyICRMSUJJQ09OViIKLS0gICAgICAgICBnbF9jdl9MVExJQlhNTD0iJExUTElCWE1MMiAkTFRMSUJJQ09OViIKLS0gICAgICAgIF0pCi0tICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYnhtbCIgIT0geWVzOyB0aGVuCi0tICAgICAgICBnbF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0tICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTICRJTkNYTUwyIgotLSAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJ4bWwveG1sdmVyc2lvbi5oPgotLSAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJ4bWwveG1sbWVtb3J5Lmg+Ci0tICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94cGF0aC5oPgotLSAgICAgICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgW3htbENoZWNrVmVyc2lvbiAoMCk7Ci0tICAgICAgICAgICB4bWxGcmVlICgodm9pZCAqKSAwKTsKLS0gICAgICAgICAgIHhtbFhQYXRoU2V0Q29udGV4dE5vZGUgKCh2b2lkICopMCwgKHZvaWQgKikwKTsKLS0gICAgICAgICAgXSwKLS0gICAgICAgICAgW2dsX2N2X2xpYnhtbD15ZXMKLS0gICAgICAgICAgIGdsX2N2X0xJQlhNTD0iJExJQlhNTDIgJExJQklDT05WIgotLSAgICAgICAgICAgZ2xfY3ZfTFRMSUJYTUw9IiRMVExJQlhNTDIgJExUTElCSUNPTlYiCi0tICAgICAgICAgICBnbF9jdl9JTkNYTUw9IiRJTkNYTUwyIgotLSAgICAgICAgICBdKQotLSAgICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYnhtbCIgIT0geWVzOyB0aGVuCi0tICAgICAgICAgIGRubCBPZnRlbiB0aGUgaW5jbHVkZSBmaWxlcyBhcmUgaW5zdGFsbGVkIGluIC91c3IvaW5jbHVkZS9saWJ4bWwyLgotLSAgICAgICAgICBkbmwgSW4gbGlieG1sMi0yLjUsIDxsaWJ4bWwveG1sdmVyc2lvbi5oPiBpcyBzZWxmLWNvbnRhaW5lZC4KLS0gICAgICAgICAgZG5sIEluIGxpYnhtbDItMi42LCBpdCBpbmNsdWRlcyA8bGlieG1sL3htbGV4cG9ydHMuaD4gd2hpY2ggaXMKLS0gICAgICAgICAgZG5sIHNlbGYtY29udGFpbmVkLgotLSAgICAgICAgICBsaWJ4bWwyX2luY2x1ZGVfZGlyPQotLSAgICAgICAgICBBQ19UUllfQ1BQKFsjaW5jbHVkZSA8bGlieG1sMi9saWJ4bWwveG1sZXhwb3J0cy5oPl0sCi0tICAgICAgICAgICAgW2dsX0FCU09MVVRFX0hFQURFUihbbGlieG1sMi9saWJ4bWwveG1sZXhwb3J0cy5oXSkKLS0gICAgICAgICAgICAgbGlieG1sMl9pbmNsdWRlX2Rpcj1gZWNobyAiJGdsX2N2X2Fic29sdXRlX2xpYnhtbDJfbGlieG1sX3htbGV4cG9ydHNfaCIgfCBzZWQgLWUgJ3MsLmxpYnhtbC54bWxleHBvcnRzXC5oJCwsJ2AKLS0gICAgICAgICAgICBdKQotLSAgICAgICAgICBpZiB0ZXN0IC16ICIkbGlieG1sMl9pbmNsdWRlX2RpciI7IHRoZW4KLS0gICAgICAgICAgICBBQ19UUllfQ1BQKFsjaW5jbHVkZSA8bGlieG1sMi9saWJ4bWwveG1sdmVyc2lvbi5oPl0sCi0tICAgICAgICAgICAgICBbZ2xfQUJTT0xVVEVfSEVBREVSKFtsaWJ4bWwyL2xpYnhtbC94bWx2ZXJzaW9uLmhdKQotLSAgICAgICAgICAgICAgIGxpYnhtbDJfaW5jbHVkZV9kaXI9YGVjaG8gIiRnbF9jdl9hYnNvbHV0ZV9saWJ4bWwyX2xpYnhtbF94bWx2ZXJzaW9uX2giIHwgc2VkIC1lICdzLC5saWJ4bWwueG1sdmVyc2lvblwuaCQsLCdgCi0tICAgICAgICAgICAgICBdKQotLSAgICAgICAgICBmaQotLSAgICAgICAgICBpZiB0ZXN0IC1uICIkbGlieG1sMl9pbmNsdWRlX2RpciIgJiYgdGVzdCAtZCAiJGxpYnhtbDJfaW5jbHVkZV9kaXIiOyB0aGVuCi0tICAgICAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIC1JJGxpYnhtbDJfaW5jbHVkZV9kaXIiCi0tICAgICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJ4bWwveG1sdmVyc2lvbi5oPgotLSAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3htbG1lbW9yeS5oPgotLSAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3hwYXRoLmg+Ci0tICAgICAgICAgICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgIFt4bWxDaGVja1ZlcnNpb24gKDApOwotLSAgICAgICAgICAgICAgIHhtbEZyZWUgKCh2b2lkICopIDApOwotLSAgICAgICAgICAgICAgIHhtbFhQYXRoU2V0Q29udGV4dE5vZGUgKCh2b2lkICopMCwgKHZvaWQgKikwKTsKLS0gICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICBbZ2xfY3ZfbGlieG1sPXllcwotLSAgICAgICAgICAgICAgIGdsX2N2X0xJQlhNTD0iJExJQlhNTDIgJExJQklDT05WIgotLSAgICAgICAgICAgICAgIGdsX2N2X0xUTElCWE1MPSIkTFRMSUJYTUwyICRMVExJQklDT05WIgotLSAgICAgICAgICAgICAgIGdsX2N2X0lOQ1hNTD0iLUkkbGlieG1sMl9pbmNsdWRlX2RpciIKLS0gICAgICAgICAgICAgIF0pCi0tICAgICAgICAgIGZpCi0tICAgICAgICBmaQotLSAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIgotLSAgICAgIGZpCi0tICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyIKLS0gICAgXSkKLS0gICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgbGlieG1sXSkKLS0gICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYnhtbF0pCi0tICAgIGlmIHRlc3QgJGdsX2N2X2xpYnhtbCA9IHllczsgdGhlbgotLSAgICAgIExJQlhNTD0iJGdsX2N2X0xJQlhNTCIKLS0gICAgICBMVExJQlhNTD0iJGdsX2N2X0xUTElCWE1MIgotLSAgICAgIElOQ1hNTD0iJGdsX2N2X0lOQ1hNTCIKLS0gICAgZWxzZQotLSAgICAgIGdsX2N2X2xpYnhtbF91c2VfaW5jbHVkZWQ9eWVzCi0tICAgIGZpCi0rICAgIFBLR19DSEVDS19NT0RVTEVTKFtYTUxdLCBbbGlieG1sLTIuMF0pCi0rICAgIExJQlhNTD0kWE1MX0xJQlMKLSsgICAgTFRMSUJYTUw9JFhNTF9MSUJTCi0rICAgIElOQ1hNTD0kWE1MX0NGTEFHUwotICAgZmkKLSAgIEFDX1NVQlNUKFtMSUJYTUxdKQotICAgQUNfU1VCU1QoW0xUTElCWE1MXSkKLWRpZmYgLS1naXQgYS9nbnVsaWItbG9jYWwvbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0ub28uYyBiL2dudWxpYi1sb2NhbC9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5vby5jCi1pbmRleCA4MWE0MDc0NjcuLjIxODU2NTMyOSAxMDA2NDQKLS0tLSBhL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMKLSsrKyBiL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMKLUBAIC0yNSw0ICsyNSw0IEBACi0tI2luY2x1ZGUgPGNyLW9tLXBhcnNlci5oPgotLSNpbmNsdWRlIDxjci1zZWwtZW5nLmg+Ci0tI2luY2x1ZGUgPGNyLXN0eWxlLmg+Ci0tI2luY2x1ZGUgPGNyLXJnYi5oPgotKyNpbmNsdWRlIDxsaWJjcm9jby9jci1vbS1wYXJzZXIuaD4KLSsjaW5jbHVkZSA8bGliY3JvY28vY3Itc2VsLWVuZy5oPgotKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zdHlsZS5oPgotKyNpbmNsdWRlIDxsaWJjcm9jby9jci1yZ2IuaD4KLUBAIC0zMSArMzEgQEAKLS0jIGluY2x1ZGUgPGNyLWZvbnRzLmg+Ci0rIyBpbmNsdWRlIDxsaWJjcm9jby9jci1mb250cy5oPgotQEAgLTMzICszMyBAQAotLSNpbmNsdWRlIDxjci1zdHJpbmcuaD4KLSsjaW5jbHVkZSA8bGliY3JvY28vY3Itc3RyaW5nLmg+CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvMDAwMS1pbml0LWVudi5pbi1kby1ub3QtYWRkLUMtQ1hYLXBhcmFtZXRlcnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvMDAwMS1pbml0LWVudi5pbi1kby1ub3QtYWRkLUMtQ1hYLXBhcmFtZXRlcnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ1Yjc1OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS8wMDAxLWluaXQtZW52LmluLWRvLW5vdC1hZGQtQy1DWFgtcGFyYW1ldGVycy5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDliOTEyYTQ3Zjc5MGE3YjI4MmVjMGMyMjk1YTE4OGM1ZDhmYjZhN2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgNiBNYXIgMjAyMCAyMTowNDowNSArMDAwMAorU3ViamVjdDogW1BBVENIXSBpbml0LWVudi5pbjogZG8gbm90IGFkZCBDL0NYWCBwYXJhbWV0ZXJzCisKK1RoZXNlIGFyZSB0YWtlbiBmcm9tIHRoZSBjcm9zcyBlbnZpcm9ubWVudCBhbmQgaW5jbHVkZQorc3lzcm9vdCBwYXRocywgc28gYXJlIG5vdCByZXByb2R1Y2libGUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgZ2V0dGV4dC10b29scy90ZXN0cy9pbml0LWVudi5pbiB8IDQgLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2V0dGV4dC10b29scy90ZXN0cy9pbml0LWVudi5pbiBiL2dldHRleHQtdG9vbHMvdGVzdHMvaW5pdC1lbnYuaW4KK2luZGV4IGNjODRmZmQuLmI2OWM5OTAgMTAwNjQ0CistLS0gYS9nZXR0ZXh0LXRvb2xzL3Rlc3RzL2luaXQtZW52LmluCisrKysgYi9nZXR0ZXh0LXRvb2xzL3Rlc3RzL2luaXQtZW52LmluCitAQCAtMywxMCArMyw2IEBAIHRvcF9idWlsZGRpcj0uLi8uLgorIAorIE9CSkVYVD0iQE9CSkVYVEAiCisgRVhFRVhUPSJARVhFRVhUQCIKKy1DQz0iQENDQCIKKy1DRkxBR1M9IkBDRkxBR1NAIgorLUNYWD0iQENYWEAiCistQ1hYRkxBR1M9IkBDWFhGTEFHU0AiCisgQ1BQRkxBR1M9IkBDUFBGTEFHU0AiCisgTERGTEFHUz0iQExERkxBR1NAIgorIExUTElCSU5UTD0iQExUTElCSU5UTEAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvMDAwMS1tc2dtZXJnZS1GaXgtYmVoYXZpb3VyLW9mLWZvci1tc2dmbXQtb24tUE8tZmlsZXMtd2l0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xLzAwMDEtbXNnbWVyZ2UtRml4LWJlaGF2aW91ci1vZi1mb3ItbXNnZm10LW9uLVBPLWZpbGVzLXdpdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjQ1ODg5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xLzAwMDEtbXNnbWVyZ2UtRml4LWJlaGF2aW91ci1vZi1mb3ItbXNnZm10LW9uLVBPLWZpbGVzLXdpdC5wYXRjaApAQCAtMCwwICsxLDg3IEBACitGcm9tIDc1ZTMxNWZkZWM4MmQxYTE3ZWJjZDllMDcxMmQxMDkzMjM1NzhkNjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCcnVubyBIYWlibGUgPGJydW5vQGNsaXNwLm9yZz4KK0RhdGU6IFN1biwgMTkgTWF5IDIwMTkgMTE6MTA6MDYgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gbXNnbWVyZ2U6IEZpeCBiZWhhdmlvdXIgb2YgLS1mb3ItbXNnZm10IG9uIFBPIGZpbGVzIHdpdGggbm8KKyB0cmFuc2xhdGlvbnMuCisKK21zZ21lcmdlOiBGaXggYmVoYXZpb3VyIG9mIC0tZm9yLW1zZ2ZtdCBvbiBQTyBmaWxlcyB3aXRoIG5vIHRyYW5zbGF0aW9ucy4KKworUmVwb3J0ZWQgYnkgRG9uIExhd3JlbmNlIDxkbGF3cmVuY2VAaWVjb2suY29tPgoraW4gPGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmVzL3AxMS1nbHVlLzIwMTktTWF5LzAwMDcwMC5odG1sPgordmlhIERhaWtpIFVlbm8KK2luIDxodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1nZXR0ZXh0LzIwMTktMDUvbXNnMDAxMjQuaHRtbD4uCisKKyogZ2V0dGV4dC10b29scy9zcmMvbXNnbWVyZ2UuYyAobWFpbik6IFRyZWF0IGZvcmNlX3BvIGxpa2UgdHJ1ZSBpZiBmb3JfbXNnZm10CitpcyB0cnVlLgorKiBnZXR0ZXh0LXRvb2xzL3Rlc3RzL21zZ21lcmdlLTI2OiBBZGQgdGVzdCBvZiBQTyBmaWxlIHdpdGggbm8gdHJhbnNsYXRpb25zLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdHdlYi8/cD1nZXR0ZXh0LmdpdDthPWNvbW1pdGRpZmY7aD0yMzM2NDUxZWQ2OGQ5MWZmNGI1YWUxYWNiYzFlY2EzMGU0N2E4NmE5XQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdldHRleHQtdG9vbHMvc3JjL21zZ21lcmdlLmMgICAgfCAgNCArKy0tCisgZ2V0dGV4dC10b29scy90ZXN0cy9tc2dtZXJnZS0yNiB8IDM2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvc3JjL21zZ21lcmdlLmMgYi9nZXR0ZXh0LXRvb2xzL3NyYy9tc2dtZXJnZS5jCitpbmRleCBjZDc2MmMwLi45MmM5YjdhIDEwMDY0NAorLS0tIGEvZ2V0dGV4dC10b29scy9zcmMvbXNnbWVyZ2UuYworKysrIGIvZ2V0dGV4dC10b29scy9zcmMvbXNnbWVyZ2UuYworQEAgLTUyMCw4ICs1MjAsOCBAQCBUaGVyZSBpcyBOTyBXQVJSQU5UWSwgdG8gdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgbGF3LlxuXAorICAgZWxzZQorICAgICB7CisgICAgICAgLyogV3JpdGUgdGhlIG1lcmdlZCBtZXNzYWdlIGxpc3Qgb3V0LiAgKi8KKy0gICAgICBtc2dkb21haW5fbGlzdF9wcmludCAocmVzdWx0LCBvdXRwdXRfZmlsZSwgb3V0cHV0X3N5bnRheCwgZm9yY2VfcG8sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKKysgICAgICBtc2dkb21haW5fbGlzdF9wcmludCAocmVzdWx0LCBvdXRwdXRfZmlsZSwgb3V0cHV0X3N5bnRheCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yX21zZ2ZtdCB8fCBmb3JjZV9wbywgZmFsc2UpOworICAgICB9CisgCisgICBleGl0IChFWElUX1NVQ0NFU1MpOworZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvdGVzdHMvbXNnbWVyZ2UtMjYgYi9nZXR0ZXh0LXRvb2xzL3Rlc3RzL21zZ21lcmdlLTI2CitpbmRleCBjZDM4NjJlLi5iODZmN2EwIDEwMDc1NQorLS0tIGEvZ2V0dGV4dC10b29scy90ZXN0cy9tc2dtZXJnZS0yNgorKysrIGIvZ2V0dGV4dC10b29scy90ZXN0cy9tc2dtZXJnZS0yNgorQEAgLTczLDcgKzczLDM3IEBAIG1zZ3N0ciAiUGFwYXlhIgorIEVPRgorIAorIDogJHtESUZGPWRpZmZ9CistJHtESUZGfSBtbS10ZXN0MjYub2sgbW0tdGVzdDI2Lm91dAorLXJlc3VsdD0kPworKyR7RElGRn0gbW0tdGVzdDI2Lm9rIG1tLXRlc3QyNi5vdXQgfHwgRXhpdCAxCisgCistZXhpdCAkcmVzdWx0CisrIyBUZXN0IHdpdGggYSBQTyBmaWxlIHRoYXQgaGFzIG5vIHRyYW5zbGF0ZWQgbWVzc2FnZXMuCisrCisrY2F0IDw8XEVPRiA+IG1tLXRlc3QyNmEuaW4xCisrbXNnaWQgIiIKKyttc2dzdHIgIiIKKysiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCisrCisrbXNnaWQgIkhlbGxvIHdvcmxkIgorK21zZ3N0ciAiSGFsbG8gV2VsdCIKKytFT0YKKysKKytjYXQgPDxcRU9GID4gbW0tdGVzdDI2YS5pbjIKKyttc2dpZCAiIgorK21zZ3N0ciAiIgorKyJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9QVNDSUlcbiIKKysKKyttc2dpZCAiSGVsbG8sIHdvcmxkISIKKyttc2dzdHIgIiIKKytFT0YKKysKKys6ICR7TVNHTUVSR0U9bXNnbWVyZ2V9CisrJHtNU0dNRVJHRX0gLS1mb3ItbXNnZm10IC1vIG1tLXRlc3QyNmEudG1wIG1tLXRlc3QyNmEuaW4xIG1tLXRlc3QyNmEuaW4yIFwKKysgICAgfHwgRXhpdCAxCisrTENfQUxMPUMgdHIgLWQgJ1xyJyA8IG1tLXRlc3QyNmEudG1wID4gbW0tdGVzdDI2YS5vdXQgfHwgRXhpdCAxCisrCisrY2F0IDw8XEVPRiA+IG1tLXRlc3QyNmEub2sKKyttc2dpZCAiIgorK21zZ3N0ciAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCisrRU9GCisrCisrOiAke0RJRkY9ZGlmZn0KKyske0RJRkZ9IG1tLXRlc3QyNmEub2sgbW0tdGVzdDI2YS5vdXQgfHwgRXhpdCAxCistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvMDAwMS10ZXN0cy1hdXRvcG9pbnQtMy11bnNldC1NQUtFRkxBR1MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvMDAwMS10ZXN0cy1hdXRvcG9pbnQtMy11bnNldC1NQUtFRkxBR1MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBiYzZiOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS8wMDAxLXRlc3RzLWF1dG9wb2ludC0zLXVuc2V0LU1BS0VGTEFHUy5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDM4YjI1NmU1YWE3ZGZlYjQyYWNmZmQ4OTU2NWU1M2EyYzBiYWIzZTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgNyBKYW4gMjAyMCAxNjo0NDozOCArMDEwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0cy9hdXRvcG9pbnQtMzogdW5zZXQgTUFLRUZMQUdTCisKK1RoaXMgaXMgbmVlZGVkIHdoZW4gcnVubmluZyBwdGVzdHMsIGFzIHRoZSBNQUtFRkxBR1MgdmFsdWUgKHNldCB1cCBieSBydW4tcHRlc3QpCitpcyBtZXNzaW5nIHVwIHRoZSB0ZXN0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGdldHRleHQtdG9vbHMvdGVzdHMvYXV0b3BvaW50LTMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvdGVzdHMvYXV0b3BvaW50LTMgYi9nZXR0ZXh0LXRvb2xzL3Rlc3RzL2F1dG9wb2ludC0zCitpbmRleCBlMTM1NTJiLi41NTE4OGRmIDEwMDc1NQorLS0tIGEvZ2V0dGV4dC10b29scy90ZXN0cy9hdXRvcG9pbnQtMworKysrIGIvZ2V0dGV4dC10b29scy90ZXN0cy9hdXRvcG9pbnQtMworQEAgLTEyNiw2ICsxMjYsNyBAQCB0ZXN0ICQ/ID0gMCB8fCB7IGNhdCBhdXRvcG9pbnQuZXJyOyBFeGl0IDE7IH0KKyAke0NPTkZJR19TSEVMTH0gLi9jb25maWd1cmUgPi9kZXYvbnVsbCAyPmF1dHBvaW50LmVycgorIHRlc3QgJD8gPSAwIHx8IHsgY2F0IGF1dG9wb2ludC5lcnI7IEV4aXQgMTsgfQorIAorK3Vuc2V0IE1BS0VGTEFHUworICR7TUFLRX0gPi9kZXYvbnVsbCAyPmF1dG9wb2ludC5lcnIKKyB0ZXN0ICQ/ID0gMCB8fCB7IGNhdCBhdXRvcG9pbnQuZXJyOyBFeGl0IDE7IH0KKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMTkuOC4xL2FkZC13aXRoLWJpc29ubG9jYWxlZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL2FkZC13aXRoLWJpc29ubG9jYWxlZGlyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9hZGQtd2l0aC1iaXNvbmxvY2FsZWRpci5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL2FkZC13aXRoLWJpc29ubG9jYWxlZGlyLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvY3Itc3RhdGVtZW50LmMtdGltc29ydC5oLWZpeC1mb3JtYXR0aW5nLWlzc3Vlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS9jci1zdGF0ZW1lbnQuYy10aW1zb3J0LmgtZml4LWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1NjFlZDcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvY3Itc3RhdGVtZW50LmMtdGltc29ydC5oLWZpeC1mb3JtYXR0aW5nLWlzc3Vlcy5wYXRjaApAQCAtMCwwICsxLDcxIEBACitGcm9tIGY2MjQ1ZWY1NTMwZmMzN2E2MjQzZTc5OGRmMzQxNjJmYmJlYWI2ZjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFN1biwgMTkgRmViIDIwMTcgMjM6MzI6NDYgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gY3Itc3RhdGVtZW50LmMvdGltc29ydC5oOiBmaXggZm9ybWF0dGluZyBpc3N1ZXMKKworRml4ZWQgd2hlbiBjb21waWxlIHdpdGggIi1XZm9ybWF0IC1XZm9ybWF0LXNlY3VyaXR5IC1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5IjoKK3wgZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYmNyb2NvL2NyLXN0YXRlbWVudC5jOiBJbiBmdW5jdGlvbiAnY3Jfc3RhdGVtZW50X2R1bXBfY2hhcnNldCc6Cit8IGdldHRleHQtdG9vbHMvZ251bGliLWxpYi9saWJjcm9jby9jci1zdGF0ZW1lbnQuYzoyNjYxOjE3OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCBzdHIpIDsKKworQW5kOgorZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYnhtbC90aW1zb3J0Lmg6MzI2OjgwOiB3YXJuaW5nOiBmb3JtYXQgJyVsdScgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlICdsb25nIHVuc2lnbmVkIGludCcsIGJ1dCBhcmd1bWVudCAzIGhhcyB0eXBlICd1bnNpZ25lZCBpbnQnIFstV2Zvcm1hdD1dCisgICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvciBhbGxvY2F0aW5nIHRlbXBvcmFyeSBzdG9yYWdlIGZvciB0aW0gc29ydDogbmVlZCAlbHUgYnl0ZXMiLCBzaXplb2YoU09SVF9UWVBFKSAqIG5ld19zaXplKTsKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorCistLS0KKyBsaWJ0ZXh0c3R5bGUvbGliL2xpYmNyb2NvL2NyLXN0YXRlbWVudC5jIHwgMTAgKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJ0ZXh0c3R5bGUvbGliL2xpYmNyb2NvL2NyLXN0YXRlbWVudC5jIGIvbGlidGV4dHN0eWxlL2xpYi9saWJjcm9jby9jci1zdGF0ZW1lbnQuYworaW5kZXggNjE3NTIwZi4uMTAwMTA0YiAxMDA2NDQKKy0tLSBhL2xpYnRleHRzdHlsZS9saWIvbGliY3JvY28vY3Itc3RhdGVtZW50LmMKKysrKyBiL2xpYnRleHRzdHlsZS9saWIvbGliY3JvY28vY3Itc3RhdGVtZW50LmMKK0BAIC0yNjA3LDcgKzI2MDcsNyBAQCBjcl9zdGF0ZW1lbnRfZHVtcF9ydWxlc2V0IChDUlN0YXRlbWVudCAqIGFfdGhpcywgRklMRSAqIGFfZnAsIGdsb25nIGFfaW5kZW50KQorICAgICAgICAgZ19yZXR1cm5faWZfZmFpbCAoYV9mcCAmJiBhX3RoaXMpOworICAgICAgICAgc3RyID0gY3Jfc3RhdGVtZW50X3J1bGVzZXRfdG9fc3RyaW5nIChhX3RoaXMsIGFfaW5kZW50KTsKKyAgICAgICAgIGlmIChzdHIpIHsKKy0gICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgc3RyKTsKKysgICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgIiVzIiwgc3RyKTsKKyAgICAgICAgICAgICAgICAgZ19mcmVlIChzdHIpOworICAgICAgICAgICAgICAgICBzdHIgPSBOVUxMOworICAgICAgICAgfQorQEAgLTI2NTgsNyArMjY1OCw3IEBAIGNyX3N0YXRlbWVudF9kdW1wX2NoYXJzZXQgKENSU3RhdGVtZW50ICogYV90aGlzLCBGSUxFICogYV9mcCwgZ3Vsb25nIGFfaW5kZW50KQorICAgICAgICAgc3RyID0gY3Jfc3RhdGVtZW50X2NoYXJzZXRfdG9fc3RyaW5nIChhX3RoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFfaW5kZW50KSA7CisgICAgICAgICBpZiAoc3RyKSB7CistICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsIHN0cikgOworKyAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCAiJXMiLCBzdHIpIDsKKyAgICAgICAgICAgICAgICAgZ19mcmVlIChzdHIpIDsKKyAgICAgICAgICAgICAgICAgc3RyID0gTlVMTCA7CisgICAgICAgICB9CitAQCAtMjY4NSw3ICsyNjg1LDcgQEAgY3Jfc3RhdGVtZW50X2R1bXBfcGFnZSAoQ1JTdGF0ZW1lbnQgKiBhX3RoaXMsIEZJTEUgKiBhX2ZwLCBndWxvbmcgYV9pbmRlbnQpCisgCisgICAgICAgICBzdHIgPSBjcl9zdGF0ZW1lbnRfYXRfcGFnZV9ydWxlX3RvX3N0cmluZyAoYV90aGlzLCBhX2luZGVudCkgOworICAgICAgICAgaWYgKHN0cikgeworLSAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCBzdHIpOworKyAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCAiJXMiLCBzdHIpOworICAgICAgICAgICAgICAgICBnX2ZyZWUgKHN0cikgOworICAgICAgICAgICAgICAgICBzdHIgPSBOVUxMIDsgCisgICAgICAgICB9CitAQCAtMjcxMSw3ICsyNzExLDcgQEAgY3Jfc3RhdGVtZW50X2R1bXBfbWVkaWFfcnVsZSAoQ1JTdGF0ZW1lbnQgKiBhX3RoaXMsCisgCisgICAgICAgICBzdHIgPSBjcl9zdGF0ZW1lbnRfbWVkaWFfcnVsZV90b19zdHJpbmcgKGFfdGhpcywgYV9pbmRlbnQpIDsKKyAgICAgICAgIGlmIChzdHIpIHsKKy0gICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgc3RyKSA7CisrICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsICIlcyIsIHN0cikgOworICAgICAgICAgICAgICAgICBnX2ZyZWUgKHN0cikgOworICAgICAgICAgICAgICAgICBzdHIgPSBOVUxMIDsKKyAgICAgICAgIH0KK0BAIC0yNzM3LDcgKzI3MzcsNyBAQCBjcl9zdGF0ZW1lbnRfZHVtcF9pbXBvcnRfcnVsZSAoQ1JTdGF0ZW1lbnQgKiBhX3RoaXMsIEZJTEUgKiBhX2ZwLAorIAorICAgICAgICAgc3RyID0gY3Jfc3RhdGVtZW50X2ltcG9ydF9ydWxlX3RvX3N0cmluZyAoYV90aGlzLCBhX2luZGVudCkgOworICAgICAgICAgaWYgKHN0cikgeworLSAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCBzdHIpIDsKKysgICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgIiVzIiwgc3RyKSA7CisgICAgICAgICAgICAgICAgIGdfZnJlZSAoc3RyKSA7CisgICAgICAgICAgICAgICAgIHN0ciA9IE5VTEwgOworICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL3BhcmFsbGVsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL3BhcmFsbGVsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NmEzNzYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvcGFyYWxsZWwucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSA0YTJhMGE5M2I0NjkwOTNiNjBmZmQwYmVjNTVkMzNkMWUwM2Q0NzEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9lIFNsYXRlciA8anNsYXRlckB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCA3IEp1biAyMDEyIDE2OjM3OjAxIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGluc3RhbCBsaWJnZXR0ZXh0bGliLmEgYmVmb3JlIHJlbW92aW5nIGl0CisKK0luIGEgbXVsdGlwbGUgam9iIGJ1aWxkLCBNYWtlZmlsZSBjYW4gc2ltdWx0YW5lb3VzbHkKK2JlIGluc3RhbGxpbmcgYW5kIHJlbW92aW5nIGxpYmdldHRleHRsaWIuYS4gIFdlIHNlcmlhbGl6ZQordGhlIG9wZXJhdGlvbnMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqc2xhdGVyQHdpbmRyaXZlci5jb20+CisKKy0tLQorIGdldHRleHQtdG9vbHMvZ251bGliLWxpYi9NYWtlZmlsZS5hbSB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi9NYWtlZmlsZS5hbSBiL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi9NYWtlZmlsZS5hbQoraW5kZXggMjEyNjY5OS4uZDJkZDdlNCAxMDA2NDQKKy0tLSBhL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi9NYWtlZmlsZS5hbQorKysrIGIvZ2V0dGV4dC10b29scy9nbnVsaWItbGliL01ha2VmaWxlLmFtCitAQCAtNTgsNiArNTgsMTAgQEAgZW5kaWYKKyAjIFJ1bGVzIGdlbmVyYXRlZCBhbmQgY29sbGVjdGVkIGJ5IGdudWxpYi10b29sLgorIGluY2x1ZGUgTWFrZWZpbGUuZ251bGliCisgCisrIyBkZWZpbmVkIGluIE1ha2VmaWxlLmdudWxpYiBidXQgbWlzc2luZyB0aGlzIGRlcGVuZGVuY3kKKysjCisraW5zdGFsbC1leGVjLWNsZWFuOiBpbnN0YWxsLWxpYkxUTElCUkFSSUVTCisrCisgIyBPUy8yIGRvZXMgbm90IHN1cHBvcnQgYSBETEwgbmFtZSBsb25nZXIgdGhhbiA4IGNoYXJhY3RlcnMuCisgaWYgT1MyCisgbGliZ2V0dGV4dGxpYl9sYV9MREZMQUdTICs9IC1vczJkbGxuYW1lIGd0bGliCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvcnVuLXB0ZXN0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9ydW4tcHRlc3QKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS9ydW4tcHRlc3QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS9zZXJpYWwtdGVzdHMtY29uZmlnLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL3NlcmlhbC10ZXN0cy1jb25maWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNmN2MwMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS9zZXJpYWwtdGVzdHMtY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsNTYgQEAKK0Zyb20gZWQ2NGE1NzI0ZWY3ZDZlYjRlOWE4NzZmODE3ZWEyNjZhNTM2ZTE5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJIb25nanVuLllhbmciIDxob25nanVuLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjggSnVsIDIwMTYgMTI6MzY6MTUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGZvciBwdGVzdAorCitBZGQgc2VyaWFsLXRlc3RzIHN1cHBvcnQsIHB0ZXN0IG5lZWQgaXQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKworLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICB8IDIgKy0KKyBnZXR0ZXh0LXJ1bnRpbWUvY29uZmlndXJlLmFjIHwgMiArLQorIGdldHRleHQtdG9vbHMvY29uZmlndXJlLmFjICAgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDM4ZGI2ZmQuLmYwMTlhZTAgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTIyLDcgKzIyLDcgQEAgQUNfSU5JVChbZ2V0dGV4dF0sCisgCVtidWctZ2V0dGV4dEBnbnUub3JnXSkKKyBBQ19DT05GSUdfU1JDRElSKFtnZXR0ZXh0LXRvb2xzL3NyYy9tc2dmbXQuY10pCisgQUNfQ09ORklHX0FVWF9ESVIoW2J1aWxkLWF1eF0pCistQU1fSU5JVF9BVVRPTUFLRShbMS4xMyBzaWxlbnQtcnVsZXMgcGFyYWxsZWwtdGVzdHMgdGFyLXVzdGFyXSkKKytBTV9JTklUX0FVVE9NQUtFKFsxLjEzIHNpbGVudC1ydWxlcyBzZXJpYWwtdGVzdHMgdGFyLXVzdGFyXSkKKyAKKyBkbmwgT3ZlcnJpZGUgYXV0b21ha2UncyB0YXIgY29tbWFuZCB1c2VkIGZvciBjcmVhdGluZyBkaXN0cmlidXRpb25zLgorIGFtX190YXI9JyR7QU1UQVJ9IGNoZiAtIC0tZm9ybWF0PXVzdGFyIC0tb3duZXI9cm9vdCAtLWdyb3VwPXJvb3QgIiQkdGFyZGlyIicKK2RpZmYgLS1naXQgYS9nZXR0ZXh0LXJ1bnRpbWUvY29uZmlndXJlLmFjIGIvZ2V0dGV4dC1ydW50aW1lL2NvbmZpZ3VyZS5hYworaW5kZXggZGUyMDNlNy4uMTM4YTA3ZiAxMDA2NDQKKy0tLSBhL2dldHRleHQtcnVudGltZS9jb25maWd1cmUuYWMKKysrKyBiL2dldHRleHQtcnVudGltZS9jb25maWd1cmUuYWMKK0BAIC0yMiw3ICsyMiw3IEBAIEFDX0lOSVQoW2dldHRleHQtcnVudGltZV0sCisgCVtidWctZ2V0dGV4dEBnbnUub3JnXSkKKyBBQ19DT05GSUdfU1JDRElSKFtpbnRsL2RjaWdldHRleHQuY10pCisgQUNfQ09ORklHX0FVWF9ESVIoWy4uL2J1aWxkLWF1eF0pCistQU1fSU5JVF9BVVRPTUFLRShbMS4xMS4xIHNpbGVudC1ydWxlcyBwYXJhbGxlbC10ZXN0c10pCisrQU1fSU5JVF9BVVRPTUFLRShbMS4xMS4xIHNpbGVudC1ydWxlcyBzZXJpYWwtdGVzdHNdKQorIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCisgCisgZG5sIEluc3RhbGxhdGlvbiBkaXJlY3Rvcmllcy4KK2RpZmYgLS1naXQgYS9nZXR0ZXh0LXRvb2xzL2NvbmZpZ3VyZS5hYyBiL2dldHRleHQtdG9vbHMvY29uZmlndXJlLmFjCitpbmRleCBjZjFkZDczLi5iNTQ0ZDZkIDEwMDY0NAorLS0tIGEvZ2V0dGV4dC10b29scy9jb25maWd1cmUuYWMKKysrKyBiL2dldHRleHQtdG9vbHMvY29uZmlndXJlLmFjCitAQCAtMjIsNyArMjIsNyBAQCBBQ19JTklUKFtnZXR0ZXh0LXRvb2xzXSwKKyAJW2J1Zy1nZXR0ZXh0QGdudS5vcmddKQorIEFDX0NPTkZJR19TUkNESVIoW3NyYy9tc2dmbXQuY10pCisgQUNfQ09ORklHX0FVWF9ESVIoWy4uL2J1aWxkLWF1eF0pCistQU1fSU5JVF9BVVRPTUFLRShbMS4xMS4xIHNpbGVudC1ydWxlcyBwYXJhbGxlbC10ZXN0c10pCisrQU1fSU5JVF9BVVRPTUFLRShbMS4xMS4xIHNpbGVudC1ydWxlcyBzZXJpYWwtdGVzdHNdKQorIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCisgCisgZG5sIEluc3RhbGxhdGlvbiBkaXJlY3Rvcmllcy4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS91c2UtcGtnY29uZmlnLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL3VzZS1wa2djb25maWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNmM2ZlOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS91c2UtcGtnY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsNzEzIEBACitGcm9tIGVmNDE0YjA2YmU4MGM2ZjYwNTczMWFiYzllNjc0ZTM5NmI4MGVjOWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogVHVlLCAyMyBKYW4gMjAxOCAwMDo1NDoxMyArMDAwMAorU3ViamVjdDogW1BBVENIXSBnZXR0ZXh0OiBiZWF0IGxpYnJhcnkgZGV0ZWN0aW9uIGludG8gc2hhcGUKKworRm9yIHJlYXNvbnMgd2hpY2ggSSBqdXN0IGNhbid0IGZhdGhvbSBnbnVsaWIgZG9lc24ndCB1c2UgdGhlIGV4cGVjdGVkIHRvb2xzIHRvCitmaW5kIGxpYnJhcmllcyBidXQgYmFkbHkgcmVpbnZlbnRzIHRoZSB3aGVlbC4gIFRoaXMgd2lsbCB0cml2aWFsbHkgbGVhZCB0byBob3N0Citjb250YW1pbmF0aW9uIChleHBsaWNpdCBzZWFyY2hlcyBvZiAvdXNyL2xpYikgb3IgaW5jb3JyZWN0IFJQQVRIcyAoYmFkCitjYW5vbmljYWxpc2F0aW9uIHJlc3VsdGluZyBpbiByZWxhdGl2ZSBwYXRocykuCisKK1NpbXBseSBkZWxldGUgYWxsIHRoZSBjcmF6eSwgYW5kIHJlcGxhY2Ugd2l0aCBhIHNpbmdsZSBjYWxsIHRvIHBrZy1jb25maWcuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdXBzdHJlYW0gc3RpbGwgcmVmdXNlIHRvIGNvbnNpZGVyIHBrZy1jb25maWddCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCistLS0KKyBnZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJ4bWwubTQgICAgICAgICAgICAgfCAgOTkgKy0tLS0tLS0tLS0tLS0tLS0KKyAuLi4vZ251bGliLWxvY2FsL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMgfCAgMTIgKy0KKyBsaWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL200L2xpYmNyb2NvLm00ICAgICAgfCAgOTkgKysrLS0tLS0tLS0tLS0tLS0KKyBsaWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL200L2xpYmdsaWIubTQgICAgICAgfCAxMDQgKysrLS0tLS0tLS0tLS0tLS0tCisgbGlidGV4dHN0eWxlL2dudWxpYi1tNC9saWJjcm9jby5tNCAgICAgICAgICAgIHwgIDk5ICsrKy0tLS0tLS0tLS0tLS0tCisgbGlidGV4dHN0eWxlL2dudWxpYi1tNC9saWJnbGliLm00ICAgICAgICAgICAgIHwgMTA0ICsrKy0tLS0tLS0tLS0tLS0tLQorIGxpYnRleHRzdHlsZS9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5jICAgICAgICB8ICAxMiArLQorIGxpYnRleHRzdHlsZS9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5vby5jICAgICB8ICAxMiArLQorIDggZmlsZXMgY2hhbmdlZCwgODcgaW5zZXJ0aW9ucygrKSwgNDU0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGlieG1sLm00IGIvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGlieG1sLm00CitpbmRleCAwNWI5NTUwLi4wMzFlZTY1IDEwMDY0NAorLS0tIGEvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGlieG1sLm00CisrKysgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJ4bWwubTQKK0BAIC0xMyw2ICsxMyw3IEBAIGRubCBnbF9MSUJYTUwoRk9SQ0UtSU5DTFVERUQpCisgZG5sICAgZm9yY2VzIHRoZSB1c2Ugb2YgdGhlIGluY2x1ZGVkIG9yIGFuIGV4dGVybmFsIGxpYnhtbC4KKyBBQ19ERUZVTihbZ2xfTElCWE1MXSwKKyBbCisrICBBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKKyAgIEFDX1JFUVVJUkUoW0FNX0lDT05WX0xJTktdKQorIAorICAgaWZlbHNlKFskMV0sICwgWworQEAgLTMwLDEwMCArMzEsMTAgQEAgQUNfREVGVU4oW2dsX0xJQlhNTF0sCisgICBJTkNYTUw9CisgICBpZmVsc2UoWyQxXSwgW3llc10sICwgWworICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGlieG1sX3VzZV9pbmNsdWRlZCIgIT0geWVzOyB0aGVuCistICAgICAgZG5sIEZpZ3VyZSBvdXQgd2hldGhlciB3ZSBjYW4gdXNlIGEgcHJlaW5zdGFsbGVkIGxpYnhtbDIsIG9yIGhhdmUgdG8gdXNlCistICAgICAgZG5sIHRoZSBpbmNsdWRlZCBvbmUuCistICAgICAgQUNfQ0FDSEVfVkFMKFtnbF9jdl9saWJ4bWxdLCBbCistICAgICAgICBnbF9jdl9saWJ4bWw9bm8KKy0gICAgICAgIGdsX2N2X0xJQlhNTD0KKy0gICAgICAgIGdsX2N2X0xUTElCWE1MPQorLSAgICAgICAgZ2xfY3ZfSU5DWE1MPQorLSAgICAgICAgZ2xfc2F2ZV9MSUJTPSIkTElCUyIKKy0gICAgICAgIExJQlM9IiRMSUJTICRMSUJJQ09OViIKKy0gICAgICAgIGRubCBTZWFyY2ggZm9yIGxpYnhtbDIgYW5kIGRlZmluZSBMSUJYTUwyLCBMVExJQlhNTDIgYW5kIElOQ1hNTDIKKy0gICAgICAgIGRubCBhY2NvcmRpbmdseS4KKy0gICAgICAgIGRubCBEb24ndCB1c2UgeG1sMi1jb25maWcgbm9yIHBrZy1jb25maWcsIHNpbmNlIGl0IGRvZXNuJ3Qgd29yayB3aGVuCistICAgICAgICBkbmwgY3Jvc3MtY29tcGlsaW5nIG9yIHdoZW4gdGhlIEMgY29tcGlsZXIgaW4gdXNlIGlzIGRpZmZlcmVudCBmcm9tIHRoZQorLSAgICAgICAgZG5sIG9uZSB0aGF0IGJ1aWx0IHRoZSBsaWJyYXJ5LgorLSAgICAgICAgZG5sIFVzZSBhIHRlc3QgcHJvZ3JhbSB0aGF0IHRyaWVzIHRvIGludm9rZSB4bWxGcmVlLiBPbiBDeWd3aW4gMS43LngsCistICAgICAgICBkbmwgbGlieG1sMiBpcyBidWlsdCBpbiBzdWNoIGEgd2F5IHRoYXQgdXNlcyBvZiB4bWxGcmVlIHdvcmsgZmluZSB3aXRoCistICAgICAgICBkbmwgLVdsLC0tZW5hYmxlLWF1dG8taW1wb3J0IGJ1dCBsZWFkIHRvIGEgbGluayBlcnJvciB3aXRoCistICAgICAgICBkbmwgLVdsLC0tZGlzYWJsZS1hdXRvLWltcG9ydC4KKy0gICAgICAgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbeG1sMl0pCistICAgICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTICRMSUJYTUwyICRMSUJJQ09OViIKKy0gICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGlieG1sL3htbHZlcnNpb24uaD4KKy0gICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3htbG1lbW9yeS5oPgorLSAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJ4bWwveHBhdGguaD4KKy0gICAgICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgIFt4bWxDaGVja1ZlcnNpb24gKDApOworLSAgICAgICAgICAgeG1sRnJlZSAoKHZvaWQgKikgMCk7CistICAgICAgICAgICB4bWxYUGF0aFNldENvbnRleHROb2RlICgodm9pZCAqKTAsICh2b2lkICopMCk7CistICAgICAgICAgIF0sCistICAgICAgICAgIFtnbF9jdl9saWJ4bWw9eWVzCistICAgICAgICAgICBnbF9jdl9MSUJYTUw9IiRMSUJYTUwyICRMSUJJQ09OViIKKy0gICAgICAgICAgIGdsX2N2X0xUTElCWE1MPSIkTFRMSUJYTUwyICRMVExJQklDT05WIgorLSAgICAgICAgICBdKQorLSAgICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYnhtbCIgIT0geWVzOyB0aGVuCistICAgICAgICAgIGdsX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKy0gICAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkSU5DWE1MMiIKKy0gICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJ4bWwveG1sdmVyc2lvbi5oPgorLSAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94bWxtZW1vcnkuaD4KKy0gICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJ4bWwveHBhdGguaD4KKy0gICAgICAgICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbeG1sQ2hlY2tWZXJzaW9uICgwKTsKKy0gICAgICAgICAgICAgeG1sRnJlZSAoKHZvaWQgKikgMCk7CistICAgICAgICAgICAgIHhtbFhQYXRoU2V0Q29udGV4dE5vZGUgKCh2b2lkICopMCwgKHZvaWQgKikwKTsKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtnbF9jdl9saWJ4bWw9eWVzCistICAgICAgICAgICAgIGdsX2N2X0xJQlhNTD0iJExJQlhNTDIgJExJQklDT05WIgorLSAgICAgICAgICAgICBnbF9jdl9MVExJQlhNTD0iJExUTElCWE1MMiAkTFRMSUJJQ09OViIKKy0gICAgICAgICAgICAgZ2xfY3ZfSU5DWE1MPSIkSU5DWE1MMiIKKy0gICAgICAgICAgICBdKQorLSAgICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGlieG1sIiAhPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgICBkbmwgT2Z0ZW4gdGhlIGluY2x1ZGUgZmlsZXMgYXJlIGluc3RhbGxlZCBpbiAvdXNyL2luY2x1ZGUvbGlieG1sMi4KKy0gICAgICAgICAgICBkbmwgSW4gbGlieG1sMi0yLjUsIDxsaWJ4bWwveG1sdmVyc2lvbi5oPiBpcyBzZWxmLWNvbnRhaW5lZC4KKy0gICAgICAgICAgICBkbmwgSW4gbGlieG1sMi0yLjYsIGl0IGluY2x1ZGVzIDxsaWJ4bWwveG1sZXhwb3J0cy5oPiB3aGljaCBpcworLSAgICAgICAgICAgIGRubCBzZWxmLWNvbnRhaW5lZC4KKy0gICAgICAgICAgICBsaWJ4bWwyX2luY2x1ZGVfZGlyPQorLSAgICAgICAgICAgIEFDX1RSWV9DUFAoWyNpbmNsdWRlIDxsaWJ4bWwyL2xpYnhtbC94bWxleHBvcnRzLmg+XSwKKy0gICAgICAgICAgICAgIFtnbF9BQlNPTFVURV9IRUFERVIoW2xpYnhtbDIvbGlieG1sL3htbGV4cG9ydHMuaF0pCistICAgICAgICAgICAgICAgbGlieG1sMl9pbmNsdWRlX2Rpcj1gZWNobyAiJGdsX2N2X2Fic29sdXRlX2xpYnhtbDJfbGlieG1sX3htbGV4cG9ydHNfaCIgfCBzZWQgLWUgJ3MsLmxpYnhtbC54bWxleHBvcnRzXC5oJCwsJ2AKKy0gICAgICAgICAgICAgIF0pCistICAgICAgICAgICAgaWYgdGVzdCAteiAiJGxpYnhtbDJfaW5jbHVkZV9kaXIiOyB0aGVuCistICAgICAgICAgICAgICBBQ19UUllfQ1BQKFsjaW5jbHVkZSA8bGlieG1sMi9saWJ4bWwveG1sdmVyc2lvbi5oPl0sCistICAgICAgICAgICAgICAgIFtnbF9BQlNPTFVURV9IRUFERVIoW2xpYnhtbDIvbGlieG1sL3htbHZlcnNpb24uaF0pCistICAgICAgICAgICAgICAgICBsaWJ4bWwyX2luY2x1ZGVfZGlyPWBlY2hvICIkZ2xfY3ZfYWJzb2x1dGVfbGlieG1sMl9saWJ4bWxfeG1sdmVyc2lvbl9oIiB8IHNlZCAtZSAncywubGlieG1sLnhtbHZlcnNpb25cLmgkLCwnYAorLSAgICAgICAgICAgICAgICBdKQorLSAgICAgICAgICAgIGZpCistICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGxpYnhtbDJfaW5jbHVkZV9kaXIiICYmIHRlc3QgLWQgIiRsaWJ4bWwyX2luY2x1ZGVfZGlyIjsgdGhlbgorLSAgICAgICAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIC1JJGxpYnhtbDJfaW5jbHVkZV9kaXIiCistICAgICAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYnhtbC94bWx2ZXJzaW9uLmg+CistICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94bWxtZW1vcnkuaD4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3hwYXRoLmg+CistICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICBbeG1sQ2hlY2tWZXJzaW9uICgwKTsKKy0gICAgICAgICAgICAgICAgIHhtbEZyZWUgKCh2b2lkICopIDApOworLSAgICAgICAgICAgICAgICAgeG1sWFBhdGhTZXRDb250ZXh0Tm9kZSAoKHZvaWQgKikwLCAodm9pZCAqKTApOworLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICBbZ2xfY3ZfbGlieG1sPXllcworLSAgICAgICAgICAgICAgICAgZ2xfY3ZfTElCWE1MPSIkTElCWE1MMiAkTElCSUNPTlYiCistICAgICAgICAgICAgICAgICBnbF9jdl9MVExJQlhNTD0iJExUTElCWE1MMiAkTFRMSUJJQ09OViIKKy0gICAgICAgICAgICAgICAgIGdsX2N2X0lOQ1hNTD0iLUkkbGlieG1sMl9pbmNsdWRlX2RpciIKKy0gICAgICAgICAgICAgICAgXSkKKy0gICAgICAgICAgICBmaQorLSAgICAgICAgICBmaQorLSAgICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MiCistICAgICAgICBmaQorLSAgICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyIKKy0gICAgICBdKQorLSAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGxpYnhtbF0pCistICAgICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYnhtbF0pCistICAgICAgaWYgdGVzdCAkZ2xfY3ZfbGlieG1sID0geWVzOyB0aGVuCistICAgICAgICBMSUJYTUw9IiRnbF9jdl9MSUJYTUwiCistICAgICAgICBMVExJQlhNTD0iJGdsX2N2X0xUTElCWE1MIgorLSAgICAgICAgSU5DWE1MPSIkZ2xfY3ZfSU5DWE1MIgorLSAgICAgIGVsc2UKKy0gICAgICAgIGdsX2N2X2xpYnhtbF91c2VfaW5jbHVkZWQ9eWVzCistICAgICAgZmkKKysgICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbWE1MXSwgW2xpYnhtbC0yLjBdKQorKyAgICAgIExJQlhNTD0kWE1MX0xJQlMKKysgICAgICBMVExJQlhNTD0kWE1MX0xJQlMKKysgICAgICBJTkNYTUw9JFhNTF9DRkxBR1MKKyAgICAgZmkKKyAgIF0pCisgICBBQ19TVUJTVChbTElCWE1MXSkKK2RpZmYgLS1naXQgYS9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMgYi9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMKK2luZGV4IDJjZmQ0YTguLmQ0MmM4YjQgMTAwNjQ0CistLS0gYS9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMKKysrKyBiL2xpYnRleHRzdHlsZS9nbnVsaWItbG9jYWwvbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0ub28uYworQEAgLTIyLDE1ICsyMiwxNSBAQAorIAorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAKKy0jaW5jbHVkZSA8Y3Itb20tcGFyc2VyLmg+CistI2luY2x1ZGUgPGNyLXNlbC1lbmcuaD4KKy0jaW5jbHVkZSA8Y3Itc3R5bGUuaD4KKy0jaW5jbHVkZSA8Y3ItcmdiLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLW9tLXBhcnNlci5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zZWwtZW5nLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXN0eWxlLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXJnYi5oPgorIC8qIDxjci1mb250cy5oPiBoYXMgYSBicm9rZW4gZG91YmxlLWluY2x1c2lvbiBndWFyZCBpbiBsaWJjcm9jby0wLjYuMS4gICovCisgI2lmbmRlZiBfX0NSX0ZPTlRTX0hfXworLSMgaW5jbHVkZSA8Y3ItZm9udHMuaD4KKysjIGluY2x1ZGUgPGxpYmNyb2NvL2NyLWZvbnRzLmg+CisgI2VuZGlmCistI2luY2x1ZGUgPGNyLXN0cmluZy5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zdHJpbmcuaD4KKyAKKyAjaW5jbHVkZSAidGVybS1vc3RyZWFtLmgiCisgI2luY2x1ZGUgImhhc2guaCIKK2RpZmYgLS1naXQgYS9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL200L2xpYmNyb2NvLm00IGIvbGlidGV4dHN0eWxlL2dudWxpYi1sb2NhbC9tNC9saWJjcm9jby5tNAoraW5kZXggYmM1M2NjNi4uMTBiMjQ1NSAxMDA2NDQKKy0tLSBhL2xpYnRleHRzdHlsZS9nbnVsaWItbG9jYWwvbTQvbGliY3JvY28ubTQKKysrKyBiL2xpYnRleHRzdHlsZS9nbnVsaWItbG9jYWwvbTQvbGliY3JvY28ubTQKK0BAIC0xLDk5ICsxLDM0IEBACistIyBsaWJjcm9jby5tNCBzZXJpYWwgMworLWRubCBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNywgMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjIGxpYmNyb2NvLm00IHNlcmlhbCAyIChnZXR0ZXh0LTAuMTcpCisrZG5sIENvcHlyaWdodCAoQykgMjAwNiwgMjAxNS0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIGRubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisgCisgZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgorIAorLWRubCBnbF9MSUJDUk9DTworLWRubCAgIGdpdmVzIHRoZSB1c2VyIHRoZSBvcHRpb24gdG8gZGVjaWRlIHdoZXRoZXIgdG8gdXNlIHRoZSBpbmNsdWRlZCBvcgorLWRubCAgIGFuIGV4dGVybmFsIGxpYmNyb2NvLgorLWRubCBnbF9MSUJDUk9DTyhGT1JDRS1JTkNMVURFRCkKKy1kbmwgICBmb3JjZXMgdGhlIHVzZSBvZiB0aGUgaW5jbHVkZWQgb3IgYW4gZXh0ZXJuYWwgbGliY3JvY28uCisgQUNfREVGVU4oW2dsX0xJQkNST0NPXSwKKyBbCistICBpZmVsc2UoWyQxXSwgW3llc10sICwgWworLSAgICBkbmwgbGliY3JvY28gZGVwZW5kcyBvbiBsaWJnbGliLgorLSAgICBBQ19SRVFVSVJFKFtnbF9MSUJHTElCXSkKKy0gIF0pCisrICBBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKKysgIGRubCBsaWJjcm9jbyBkZXBlbmRzIG9uIGxpYmdsaWIuCisrICBBQ19SRVFVSVJFKFtnbF9MSUJHTElCXSkKKyAKKy0gIGlmZWxzZShbJDFdLCAsIFsKKy0gICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGluY2x1ZGVkIGxpYmNyb2NvIGlzIHJlcXVlc3RlZF0pCistICAgIEFDX0FSR19XSVRIKFtpbmNsdWRlZC1saWJjcm9jb10sCistICAgICAgWyAgLS13aXRoLWluY2x1ZGVkLWxpYmNyb2NvICB1c2UgdGhlIGxpYmNyb2NvIGluY2x1ZGVkIGhlcmVdLAorLSAgICAgIFtnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZD0kd2l0aHZhbF0sCistICAgICAgW2dsX2N2X2xpYmNyb2NvX2ZvcmNlX2luY2x1ZGVkPW5vXSkKKy0gICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYmNyb2NvX2ZvcmNlX2luY2x1ZGVkXSkKKy0gIF0sIFtnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZD0kMV0pCisrICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgaW5jbHVkZWQgbGliY3JvY28gaXMgcmVxdWVzdGVkXSkKKysgIEFDX0FSR19XSVRIKFtpbmNsdWRlZC1saWJjcm9jb10sCisrICAgIFsgIC0td2l0aC1pbmNsdWRlZC1saWJjcm9jbyAgdXNlIHRoZSBsaWJjcm9jbyBpbmNsdWRlZCBoZXJlXSwKKysgICAgW2dsX2N2X2xpYmNyb2NvX2ZvcmNlX2luY2x1ZGVkPSR3aXRodmFsXSwKKysgICAgW2dsX2N2X2xpYmNyb2NvX2ZvcmNlX2luY2x1ZGVkPW5vXSkKKysgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZF0pCisgCisgICBnbF9jdl9saWJjcm9jb191c2VfaW5jbHVkZWQ9IiRnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZCIKKyAgIExJQkNST0NPPQorICAgTFRMSUJDUk9DTz0KKyAgIElOQ0NST0NPPQorLSAgaWZlbHNlKFskMV0sIFt5ZXNdLCAsIFsKKy0gICAgaWYgdGVzdCAiJGdsX2N2X2xpYmNyb2NvX3VzZV9pbmNsdWRlZCIgIT0geWVzOyB0aGVuCistICAgICAgZG5sIEZpZ3VyZSBvdXQgd2hldGhlciB3ZSBjYW4gdXNlIGEgcHJlaW5zdGFsbGVkIGxpYmNyb2NvLTAuNiwgb3IgaGF2ZSB0bworLSAgICAgIGRubCB1c2UgdGhlIGluY2x1ZGVkIG9uZS4KKy0gICAgICBBQ19DQUNIRV9WQUwoW2dsX2N2X2xpYmNyb2NvXSwgWworLSAgICAgICAgZ2xfY3ZfbGliY3JvY289bm8KKy0gICAgICAgIGdsX2N2X0xJQkNST0NPPQorLSAgICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0KKy0gICAgICAgIGdsX2N2X0lOQ0NST0NPPQorLSAgICAgICAgZ2xfc2F2ZV9MSUJTPSIkTElCUyIKKy0gICAgICAgIGRubCBTZWFyY2ggZm9yIGxpYmNyb2NvIGFuZCBkZWZpbmUgTElCQ1JPQ09fMF82LCBMVExJQkNST0NPXzBfNiBhbmQKKy0gICAgICAgIGRubCBJTkNDUk9DT18wXzYgYWNjb3JkaW5nbHkuCistICAgICAgICBkbmwgRG9uJ3QgdXNlIGNyb2NvLTAuNi1jb25maWcgbm9yIHBrZy1jb25maWcsIHNpbmNlIGl0IGRvZXNuJ3Qgd29yayB3aGVuCistICAgICAgICBkbmwgY3Jvc3MtY29tcGlsaW5nIG9yIHdoZW4gdGhlIEMgY29tcGlsZXIgaW4gdXNlIGlzIGRpZmZlcmVudCBmcm9tIHRoZQorLSAgICAgICAgZG5sIG9uZSB0aGF0IGJ1aWx0IHRoZSBsaWJyYXJ5LgorLSAgICAgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFtjcm9jby0wLjZdLCBbZ2xpYi0yLjBdKQorLSAgICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyAkTElCQ1JPQ09fMF82IgorLSAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJjcm9jby1jb25maWcuaD5dLAorLSAgICAgICAgICBbY29uc3QgY2hhciAqdmVyc2lvbiA9IExJQkNST0NPX1ZFUlNJT047IHJldHVybiAhdmVyc2lvbjtdLAorLSAgICAgICAgICBbZ2xfY3ZfbGliY3JvY289eWVzCistICAgICAgICAgICBnbF9jdl9MSUJDUk9DTz0iJExJQkNST0NPXzBfNiIKKy0gICAgICAgICAgIGdsX2N2X0xUTElCQ1JPQ089IiRMVExJQkNST0NPXzBfNiIKKy0gICAgICAgICAgXSkKKy0gICAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJjcm9jbyIgIT0geWVzOyB0aGVuCistICAgICAgICAgIGdsX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKy0gICAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkSU5DQ1JPQ09fMF82IgorLSAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYmNyb2NvLWNvbmZpZy5oPl0sCistICAgICAgICAgICAgW2NvbnN0IGNoYXIgKnZlcnNpb24gPSBMSUJDUk9DT19WRVJTSU9OOyByZXR1cm4gIXZlcnNpb247XSwKKy0gICAgICAgICAgICBbZ2xfY3ZfbGliY3JvY289eWVzCistICAgICAgICAgICAgIGdsX2N2X0xJQkNST0NPPSIkTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgICBnbF9jdl9MVExJQkNST0NPPSIkTFRMSUJDUk9DT18wXzYiCistICAgICAgICAgICAgIGdsX2N2X0lOQ0NST0NPPSIkSU5DQ1JPQ09fMF82IgorLSAgICAgICAgICAgIF0pCistICAgICAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJjcm9jbyIgIT0geWVzOyB0aGVuCistICAgICAgICAgICAgZG5sIE9mdGVuIHRoZSBpbmNsdWRlIGZpbGVzIGFyZSBpbnN0YWxsZWQgaW4KKy0gICAgICAgICAgICBkbmwgL3Vzci9pbmNsdWRlL2xpYmNyb2NvLTAuNi9saWJjcm9jby4KKy0gICAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYmNyb2NvLTAuNi9saWJjcm9jby9saWJjcm9jby1jb25maWcuaD5dLAorLSAgICAgICAgICAgICAgW2NvbnN0IGNoYXIgKnZlcnNpb24gPSBMSUJDUk9DT19WRVJTSU9OOyByZXR1cm4gIXZlcnNpb247XSwKKy0gICAgICAgICAgICAgIFtnbF9BQlNPTFVURV9IRUFERVIoW2xpYmNyb2NvLTAuNi9saWJjcm9jby9saWJjcm9jby1jb25maWcuaF0pCistICAgICAgICAgICAgICAgbGliY3JvY29faW5jbHVkZV9kaXI9YGVjaG8gIiRnbF9jdl9hYnNvbHV0ZV9saWJjcm9jb18wXzZfbGliY3JvY29fbGliY3JvY29fY29uZmlnX2giIHwgc2VkIC1lICdzLC5saWJjcm9jby1jb25maWdcLmgkLCwnYAorLSAgICAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRsaWJjcm9jb19pbmNsdWRlX2RpciI7IHRoZW4KKy0gICAgICAgICAgICAgICAgIGdsX2N2X2xpYmNyb2NvPXllcworLSAgICAgICAgICAgICAgICAgZ2xfY3ZfTElCQ1JPQ089IiRMSUJDUk9DT18wXzYiCistICAgICAgICAgICAgICAgICBnbF9jdl9MVExJQkNST0NPPSIkTFRMSUJDUk9DT18wXzYiCistICAgICAgICAgICAgICAgICBnbF9jdl9JTkNDUk9DTz0iLUkkbGliY3JvY29faW5jbHVkZV9kaXIiCistICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICAgIF0pCistICAgICAgICAgIGZpCistICAgICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyIKKy0gICAgICAgIGZpCistICAgICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTIgorLSAgICAgIF0pCistICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgbGliY3JvY29dKQorLSAgICAgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJjcm9jb10pCistICAgICAgaWYgdGVzdCAkZ2xfY3ZfbGliY3JvY28gPSB5ZXM7IHRoZW4KKy0gICAgICAgIExJQkNST0NPPSIkZ2xfY3ZfTElCQ1JPQ08iCistICAgICAgICBMVExJQkNST0NPPSIkZ2xfY3ZfTFRMSUJDUk9DTyIKKy0gICAgICAgIElOQ0NST0NPPSIkZ2xfY3ZfSU5DQ1JPQ08iCistICAgICAgZWxzZQorLSAgICAgICAgZ2xfY3ZfbGliY3JvY29fdXNlX2luY2x1ZGVkPXllcworLSAgICAgIGZpCistICAgIGZpCistICBdKQorKyAgaWYgdGVzdCAiJGdsX2N2X2xpYmNyb2NvX3VzZV9pbmNsdWRlZCIgIT0geWVzOyB0aGVuCisrICAgIFBLR19DSEVDS19NT0RVTEVTKFtDUk9DT10sIFtsaWJjcm9jby0wLjZdKQorKyAgICBMSUJDUk9DTz0kQ1JPQ09fTElCUworKyAgICBMVExJQkNST0NPPSRDUk9DT19MSUJTCisrICAgIElOQ0NST0NPPSRDUk9DT19DRkxBR1MKKysgIGZpCisgICBBQ19TVUJTVChbTElCQ1JPQ09dKQorICAgQUNfU1VCU1QoW0xUTElCQ1JPQ09dKQorICAgQUNfU1VCU1QoW0lOQ0NST0NPXSkKK2RpZmYgLS1naXQgYS9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL200L2xpYmdsaWIubTQgYi9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL200L2xpYmdsaWIubTQKK2luZGV4IGJlZjZmYTMuLjg4NDE3NTUgMTAwNjQ0CistLS0gYS9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL200L2xpYmdsaWIubTQKKysrKyBiL2xpYnRleHRzdHlsZS9nbnVsaWItbG9jYWwvbTQvbGliZ2xpYi5tNAorQEAgLTEsMTA1ICsxLDMxIEBACistIyBsaWJnbGliLm00IHNlcmlhbCA0CistZG5sIENvcHlyaWdodCAoQykgMjAwNi0yMDA3LCAyMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgbGliZ2xpYi5tNCBzZXJpYWwgMyAoZ2V0dGV4dC0wLjE3KQorK2RubCBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNywgMjAxNS0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIGRubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisgCisgZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgorIAorLWRubCBnbF9MSUJHTElCCistZG5sICAgZ2l2ZXMgdGhlIHVzZXIgdGhlIG9wdGlvbiB0byBkZWNpZGUgd2hldGhlciB0byB1c2UgdGhlIGluY2x1ZGVkIG9yCistZG5sICAgYW4gZXh0ZXJuYWwgbGliZ2xpYi4KKy1kbmwgZ2xfTElCR0xJQihGT1JDRS1JTkNMVURFRCkKKy1kbmwgICBmb3JjZXMgdGhlIHVzZSBvZiB0aGUgaW5jbHVkZWQgb3IgYW4gZXh0ZXJuYWwgbGliZ2xpYi4KKyBBQ19ERUZVTihbZ2xfTElCR0xJQl0sCisgWworLSAgaWZlbHNlKFskMV0sICwgWworLSAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgaW5jbHVkZWQgZ2xpYiBpcyByZXF1ZXN0ZWRdKQorLSAgICBBQ19BUkdfV0lUSChbaW5jbHVkZWQtZ2xpYl0sCistICAgICAgWyAgLS13aXRoLWluY2x1ZGVkLWdsaWIgICAgdXNlIHRoZSBnbGliMiBpbmNsdWRlZCBoZXJlXSwKKy0gICAgICBbZ2xfY3ZfbGliZ2xpYl9mb3JjZV9pbmNsdWRlZD0kd2l0aHZhbF0sCistICAgICAgW2dsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWQ9bm9dKQorLSAgICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliZ2xpYl9mb3JjZV9pbmNsdWRlZF0pCistICBdLCBbZ2xfY3ZfbGliZ2xpYl9mb3JjZV9pbmNsdWRlZD0kMV0pCisrICBBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKKysgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBpbmNsdWRlZCBnbGliIGlzIHJlcXVlc3RlZF0pCisrICBBQ19BUkdfV0lUSChbaW5jbHVkZWQtZ2xpYl0sCisrICAgIFsgIC0td2l0aC1pbmNsdWRlZC1nbGliICAgIHVzZSB0aGUgZ2xpYjIgaW5jbHVkZWQgaGVyZV0sCisrICAgIFtnbF9jdl9saWJnbGliX2ZvcmNlX2luY2x1ZGVkPSR3aXRodmFsXSwKKysgICAgW2dsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWQ9bm9dKQorKyAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWRdKQorIAorICAgZ2xfY3ZfbGliZ2xpYl91c2VfaW5jbHVkZWQ9IiRnbF9jdl9saWJnbGliX2ZvcmNlX2luY2x1ZGVkIgorICAgTElCR0xJQj0KKyAgIExUTElCR0xJQj0KKyAgIElOQ0dMSUI9CistICBpZmVsc2UoWyQxXSwgW3llc10sICwgWworLSAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliZ2xpYl91c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgorLSAgICAgIGRubCBGaWd1cmUgb3V0IHdoZXRoZXIgd2UgY2FuIHVzZSBhIHByZWluc3RhbGxlZCBsaWJnbGliLTIuMCwgb3IgaGF2ZSB0byB1c2UKKy0gICAgICBkbmwgdGhlIGluY2x1ZGVkIG9uZS4KKy0gICAgICBBQ19DQUNIRV9WQUwoW2dsX2N2X2xpYmdsaWJdLCBbCistICAgICAgICBnbF9jdl9saWJnbGliPW5vCistICAgICAgICBnbF9jdl9MSUJHTElCPQorLSAgICAgICAgZ2xfY3ZfTFRMSUJHTElCPQorLSAgICAgICAgZ2xfY3ZfSU5DR0xJQj0KKy0gICAgICAgIGdsX3NhdmVfTElCUz0iJExJQlMiCistICAgICAgICBkbmwgU2VhcmNoIGZvciBsaWJnbGliMiBhbmQgZGVmaW5lIExJQkdMSUJfMl8wLCBMVExJQkdMSUJfMl8wIGFuZAorLSAgICAgICAgZG5sIElOQ0dMSUJfMl8wIGFjY29yZGluZ2x5LgorLSAgICAgICAgZG5sIERvbid0IHVzZSBnbGliLWNvbmZpZyBub3IgcGtnLWNvbmZpZywgc2luY2UgaXQgZG9lc24ndCB3b3JrIHdoZW4KKy0gICAgICAgIGRubCBjcm9zcy1jb21waWxpbmcgb3Igd2hlbiB0aGUgQyBjb21waWxlciBpbiB1c2UgaXMgZGlmZmVyZW50IGZyb20gdGhlCistICAgICAgICBkbmwgb25lIHRoYXQgYnVpbHQgdGhlIGxpYnJhcnkuCistICAgICAgICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW2dsaWItMi4wXSkKKy0gICAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMgJExJQkdMSUJfMl8wIgorLSAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxnbGliLmg+CistI2lmbmRlZiBHX0JFR0lOX0RFQ0xTCistZXJyb3IgdGhpcyBnbGliLmggaW5jbHVkZXMgYSBnbGliY29uZmlnLmggZnJvbSBhIGdsaWIgdmVyc2lvbiAxLngKKy0jZW5kaWYKKy1dLAorLSAgICAgICAgICBbZ19zdHJpbmdfbmV3ICgiZm9vIik7XSwKKy0gICAgICAgICAgW2dsX2N2X2xpYmdsaWI9eWVzCistICAgICAgICAgICBnbF9jdl9MSUJHTElCPSIkTElCR0xJQl8yXzAiCistICAgICAgICAgICBnbF9jdl9MVExJQkdMSUI9IiRMVExJQkdMSUJfMl8wIgorLSAgICAgICAgICBdKQorLSAgICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYmdsaWIiICE9IHllczsgdGhlbgorLSAgICAgICAgICBnbF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCistICAgICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJElOQ0dMSUJfMl8wIgorLSAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGdsaWIuaD4KKy0jaWZuZGVmIEdfQkVHSU5fREVDTFMKKy1lcnJvciB0aGlzIGdsaWIuaCBpbmNsdWRlcyBhIGdsaWJjb25maWcuaCBmcm9tIGEgZ2xpYiB2ZXJzaW9uIDEueAorLSNlbmRpZgorLV0sCistICAgICAgICAgICAgW2dfc3RyaW5nX25ldyAoImZvbyIpO10sCistICAgICAgICAgICAgW2dsX2N2X2xpYmdsaWI9eWVzCistICAgICAgICAgICAgIGdsX2N2X0xJQkdMSUI9IiRMSUJHTElCXzJfMCIKKy0gICAgICAgICAgICAgZ2xfY3ZfTFRMSUJHTElCPSIkTFRMSUJHTElCXzJfMCIKKy0gICAgICAgICAgICAgZ2xfY3ZfSU5DR0xJQj0iJElOQ0dMSUJfMl8wIgorLSAgICAgICAgICAgIF0pCistICAgICAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJnbGliIiAhPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgICBkbmwgT2Z0ZW4gdGhlIGluY2x1ZGUgZmlsZXMgYXJlIGluc3RhbGxlZCBpbiAvdXNyL2luY2x1ZGUvZ2xpYi0yLjAKKy0gICAgICAgICAgICBkbmwgYW5kIC91c3IvbGliL2dsaWItMi4wL2luY2x1ZGUuCistICAgICAgICAgICAgaWYgdGVzdCAtbiAiJExJQkdMSUJfMl8wX1BSRUZJWCI7IHRoZW4KKy0gICAgICAgICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyAtSSRMSUJHTElCXzJfMF9QUkVGSVgvaW5jbHVkZS9nbGliLTIuMCAtSSRMSUJHTElCXzJfMF9QUkVGSVgvJGFjbF9saWJkaXJzdGVtL2dsaWItMi4wL2luY2x1ZGUiCistICAgICAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGdsaWIuaD4KKy0jaWZuZGVmIEdfQkVHSU5fREVDTFMKKy1lcnJvciB0aGlzIGdsaWIuaCBpbmNsdWRlcyBhIGdsaWJjb25maWcuaCBmcm9tIGEgZ2xpYiB2ZXJzaW9uIDEueAorLSNlbmRpZgorLV0sCistICAgICAgICAgICAgICAgIFtnX3N0cmluZ19uZXcgKCJmb28iKTtdLAorLSAgICAgICAgICAgICAgICBbZ2xfY3ZfbGliZ2xpYj15ZXMKKy0gICAgICAgICAgICAgICAgIGdsX2N2X0xJQkdMSUI9IiRMSUJHTElCXzJfMCIKKy0gICAgICAgICAgICAgICAgIGdsX2N2X0xUTElCR0xJQj0iJExUTElCR0xJQl8yXzAiCistICAgICAgICAgICAgICAgICBnbF9jdl9JTkNHTElCPSItSSRMSUJHTElCXzJfMF9QUkVGSVgvaW5jbHVkZS9nbGliLTIuMCAtSSRMSUJHTElCXzJfMF9QUkVGSVgvJGFjbF9saWJkaXJzdGVtL2dsaWItMi4wL2luY2x1ZGUiCistICAgICAgICAgICAgICAgIF0pCistICAgICAgICAgICAgZmkKKy0gICAgICAgICAgZmkKKy0gICAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIgorLSAgICAgICAgZmkKKy0gICAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMiCistICAgICAgXSkKKy0gICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBnbGliXSkKKy0gICAgICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliZ2xpYl0pCistICAgICAgaWYgdGVzdCAkZ2xfY3ZfbGliZ2xpYiA9IHllczsgdGhlbgorLSAgICAgICAgTElCR0xJQj0iJGdsX2N2X0xJQkdMSUIiCistICAgICAgICBMVExJQkdMSUI9IiRnbF9jdl9MVExJQkdMSUIiCistICAgICAgICBJTkNHTElCPSIkZ2xfY3ZfSU5DR0xJQiIKKy0gICAgICBlbHNlCistICAgICAgICBnbF9jdl9saWJnbGliX3VzZV9pbmNsdWRlZD15ZXMKKy0gICAgICBmaQorLSAgICBmaQorLSAgXSkKKysgIGlmIHRlc3QgIiRnbF9jdl9saWJnbGliX3VzZV9pbmNsdWRlZCIgIT0geWVzOyB0aGVuCisrICAgIFBLR19DSEVDS19NT0RVTEVTKFtHTElCXSwgW2dsaWItMi4wXSkKKysgICAgTElCR0xJQj0iJEdMSUJfTElCUyIKKysgICAgTFRMSUJHTElCPSIkR0xJQl9MSUJTIgorKyAgICBJTkNHTElCPSIkR0xJQl9DRkxBR1MiCisrICBmaQorICAgQUNfU1VCU1QoW0xJQkdMSUJdKQorICAgQUNfU1VCU1QoW0xUTElCR0xJQl0pCisgICBBQ19TVUJTVChbSU5DR0xJQl0pCitkaWZmIC0tZ2l0IGEvbGlidGV4dHN0eWxlL2dudWxpYi1tNC9saWJjcm9jby5tNCBiL2xpYnRleHRzdHlsZS9nbnVsaWItbTQvbGliY3JvY28ubTQKK2luZGV4IGJjNTNjYzYuLjEwYjI0NTUgMTAwNjQ0CistLS0gYS9saWJ0ZXh0c3R5bGUvZ251bGliLW00L2xpYmNyb2NvLm00CisrKysgYi9saWJ0ZXh0c3R5bGUvZ251bGliLW00L2xpYmNyb2NvLm00CitAQCAtMSw5OSArMSwzNCBAQAorLSMgbGliY3JvY28ubTQgc2VyaWFsIDMKKy1kbmwgQ29weXJpZ2h0IChDKSAyMDA2LTIwMDcsIDIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyBsaWJjcm9jby5tNCBzZXJpYWwgMiAoZ2V0dGV4dC0wLjE3KQorK2RubCBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMTUtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyBkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorIAorIGRubCBGcm9tIEJydW5vIEhhaWJsZS4KKyAKKy1kbmwgZ2xfTElCQ1JPQ08KKy1kbmwgICBnaXZlcyB0aGUgdXNlciB0aGUgb3B0aW9uIHRvIGRlY2lkZSB3aGV0aGVyIHRvIHVzZSB0aGUgaW5jbHVkZWQgb3IKKy1kbmwgICBhbiBleHRlcm5hbCBsaWJjcm9jby4KKy1kbmwgZ2xfTElCQ1JPQ08oRk9SQ0UtSU5DTFVERUQpCistZG5sICAgZm9yY2VzIHRoZSB1c2Ugb2YgdGhlIGluY2x1ZGVkIG9yIGFuIGV4dGVybmFsIGxpYmNyb2NvLgorIEFDX0RFRlVOKFtnbF9MSUJDUk9DT10sCisgWworLSAgaWZlbHNlKFskMV0sIFt5ZXNdLCAsIFsKKy0gICAgZG5sIGxpYmNyb2NvIGRlcGVuZHMgb24gbGliZ2xpYi4KKy0gICAgQUNfUkVRVUlSRShbZ2xfTElCR0xJQl0pCistICBdKQorKyAgQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCisrICBkbmwgbGliY3JvY28gZGVwZW5kcyBvbiBsaWJnbGliLgorKyAgQUNfUkVRVUlSRShbZ2xfTElCR0xJQl0pCisgCistICBpZmVsc2UoWyQxXSwgLCBbCistICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBpbmNsdWRlZCBsaWJjcm9jbyBpcyByZXF1ZXN0ZWRdKQorLSAgICBBQ19BUkdfV0lUSChbaW5jbHVkZWQtbGliY3JvY29dLAorLSAgICAgIFsgIC0td2l0aC1pbmNsdWRlZC1saWJjcm9jbyAgdXNlIHRoZSBsaWJjcm9jbyBpbmNsdWRlZCBoZXJlXSwKKy0gICAgICBbZ2xfY3ZfbGliY3JvY29fZm9yY2VfaW5jbHVkZWQ9JHdpdGh2YWxdLAorLSAgICAgIFtnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZD1ub10pCistICAgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZF0pCistICBdLCBbZ2xfY3ZfbGliY3JvY29fZm9yY2VfaW5jbHVkZWQ9JDFdKQorKyAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGluY2x1ZGVkIGxpYmNyb2NvIGlzIHJlcXVlc3RlZF0pCisrICBBQ19BUkdfV0lUSChbaW5jbHVkZWQtbGliY3JvY29dLAorKyAgICBbICAtLXdpdGgtaW5jbHVkZWQtbGliY3JvY28gIHVzZSB0aGUgbGliY3JvY28gaW5jbHVkZWQgaGVyZV0sCisrICAgIFtnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZD0kd2l0aHZhbF0sCisrICAgIFtnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZD1ub10pCisrICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliY3JvY29fZm9yY2VfaW5jbHVkZWRdKQorIAorICAgZ2xfY3ZfbGliY3JvY29fdXNlX2luY2x1ZGVkPSIkZ2xfY3ZfbGliY3JvY29fZm9yY2VfaW5jbHVkZWQiCisgICBMSUJDUk9DTz0KKyAgIExUTElCQ1JPQ089CisgICBJTkNDUk9DTz0KKy0gIGlmZWxzZShbJDFdLCBbeWVzXSwgLCBbCistICAgIGlmIHRlc3QgIiRnbF9jdl9saWJjcm9jb191c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgorLSAgICAgIGRubCBGaWd1cmUgb3V0IHdoZXRoZXIgd2UgY2FuIHVzZSBhIHByZWluc3RhbGxlZCBsaWJjcm9jby0wLjYsIG9yIGhhdmUgdG8KKy0gICAgICBkbmwgdXNlIHRoZSBpbmNsdWRlZCBvbmUuCistICAgICAgQUNfQ0FDSEVfVkFMKFtnbF9jdl9saWJjcm9jb10sIFsKKy0gICAgICAgIGdsX2N2X2xpYmNyb2NvPW5vCistICAgICAgICBnbF9jdl9MSUJDUk9DTz0KKy0gICAgICAgIGdsX2N2X0xUTElCQ1JPQ089CistICAgICAgICBnbF9jdl9JTkNDUk9DTz0KKy0gICAgICAgIGdsX3NhdmVfTElCUz0iJExJQlMiCistICAgICAgICBkbmwgU2VhcmNoIGZvciBsaWJjcm9jbyBhbmQgZGVmaW5lIExJQkNST0NPXzBfNiwgTFRMSUJDUk9DT18wXzYgYW5kCistICAgICAgICBkbmwgSU5DQ1JPQ09fMF82IGFjY29yZGluZ2x5LgorLSAgICAgICAgZG5sIERvbid0IHVzZSBjcm9jby0wLjYtY29uZmlnIG5vciBwa2ctY29uZmlnLCBzaW5jZSBpdCBkb2Vzbid0IHdvcmsgd2hlbgorLSAgICAgICAgZG5sIGNyb3NzLWNvbXBpbGluZyBvciB3aGVuIHRoZSBDIGNvbXBpbGVyIGluIHVzZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUKKy0gICAgICAgIGRubCBvbmUgdGhhdCBidWlsdCB0aGUgbGlicmFyeS4KKy0gICAgICAgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbY3JvY28tMC42XSwgW2dsaWItMi4wXSkKKy0gICAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMgJExJQkNST0NPXzBfNiIKKy0gICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGliY3JvY28tY29uZmlnLmg+XSwKKy0gICAgICAgICAgW2NvbnN0IGNoYXIgKnZlcnNpb24gPSBMSUJDUk9DT19WRVJTSU9OOyByZXR1cm4gIXZlcnNpb247XSwKKy0gICAgICAgICAgW2dsX2N2X2xpYmNyb2NvPXllcworLSAgICAgICAgICAgZ2xfY3ZfTElCQ1JPQ089IiRMSUJDUk9DT18wXzYiCistICAgICAgICAgICBnbF9jdl9MVExJQkNST0NPPSIkTFRMSUJDUk9DT18wXzYiCistICAgICAgICAgIF0pCistICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliY3JvY28iICE9IHllczsgdGhlbgorLSAgICAgICAgICBnbF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCistICAgICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJElOQ0NST0NPXzBfNiIKKy0gICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJjcm9jby1jb25maWcuaD5dLAorLSAgICAgICAgICAgIFtjb25zdCBjaGFyICp2ZXJzaW9uID0gTElCQ1JPQ09fVkVSU0lPTjsgcmV0dXJuICF2ZXJzaW9uO10sCistICAgICAgICAgICAgW2dsX2N2X2xpYmNyb2NvPXllcworLSAgICAgICAgICAgICBnbF9jdl9MSUJDUk9DTz0iJExJQkNST0NPXzBfNiIKKy0gICAgICAgICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0iJExUTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgICBnbF9jdl9JTkNDUk9DTz0iJElOQ0NST0NPXzBfNiIKKy0gICAgICAgICAgICBdKQorLSAgICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliY3JvY28iICE9IHllczsgdGhlbgorLSAgICAgICAgICAgIGRubCBPZnRlbiB0aGUgaW5jbHVkZSBmaWxlcyBhcmUgaW5zdGFsbGVkIGluCistICAgICAgICAgICAgZG5sIC91c3IvaW5jbHVkZS9saWJjcm9jby0wLjYvbGliY3JvY28uCistICAgICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJjcm9jby0wLjYvbGliY3JvY28vbGliY3JvY28tY29uZmlnLmg+XSwKKy0gICAgICAgICAgICAgIFtjb25zdCBjaGFyICp2ZXJzaW9uID0gTElCQ1JPQ09fVkVSU0lPTjsgcmV0dXJuICF2ZXJzaW9uO10sCistICAgICAgICAgICAgICBbZ2xfQUJTT0xVVEVfSEVBREVSKFtsaWJjcm9jby0wLjYvbGliY3JvY28vbGliY3JvY28tY29uZmlnLmhdKQorLSAgICAgICAgICAgICAgIGxpYmNyb2NvX2luY2x1ZGVfZGlyPWBlY2hvICIkZ2xfY3ZfYWJzb2x1dGVfbGliY3JvY29fMF82X2xpYmNyb2NvX2xpYmNyb2NvX2NvbmZpZ19oIiB8IHNlZCAtZSAncywubGliY3JvY28tY29uZmlnXC5oJCwsJ2AKKy0gICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkbGliY3JvY29faW5jbHVkZV9kaXIiOyB0aGVuCistICAgICAgICAgICAgICAgICBnbF9jdl9saWJjcm9jbz15ZXMKKy0gICAgICAgICAgICAgICAgIGdsX2N2X0xJQkNST0NPPSIkTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0iJExUTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgICAgICAgZ2xfY3ZfSU5DQ1JPQ089Ii1JJGxpYmNyb2NvX2luY2x1ZGVfZGlyIgorLSAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICBdKQorLSAgICAgICAgICBmaQorLSAgICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MiCistICAgICAgICBmaQorLSAgICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyIKKy0gICAgICBdKQorLSAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGxpYmNyb2NvXSkKKy0gICAgICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliY3JvY29dKQorLSAgICAgIGlmIHRlc3QgJGdsX2N2X2xpYmNyb2NvID0geWVzOyB0aGVuCistICAgICAgICBMSUJDUk9DTz0iJGdsX2N2X0xJQkNST0NPIgorLSAgICAgICAgTFRMSUJDUk9DTz0iJGdsX2N2X0xUTElCQ1JPQ08iCistICAgICAgICBJTkNDUk9DTz0iJGdsX2N2X0lOQ0NST0NPIgorLSAgICAgIGVsc2UKKy0gICAgICAgIGdsX2N2X2xpYmNyb2NvX3VzZV9pbmNsdWRlZD15ZXMKKy0gICAgICBmaQorLSAgICBmaQorLSAgXSkKKysgIGlmIHRlc3QgIiRnbF9jdl9saWJjcm9jb191c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgorKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbQ1JPQ09dLCBbbGliY3JvY28tMC42XSkKKysgICAgTElCQ1JPQ089JENST0NPX0xJQlMKKysgICAgTFRMSUJDUk9DTz0kQ1JPQ09fTElCUworKyAgICBJTkNDUk9DTz0kQ1JPQ09fQ0ZMQUdTCisrICBmaQorICAgQUNfU1VCU1QoW0xJQkNST0NPXSkKKyAgIEFDX1NVQlNUKFtMVExJQkNST0NPXSkKKyAgIEFDX1NVQlNUKFtJTkNDUk9DT10pCitkaWZmIC0tZ2l0IGEvbGlidGV4dHN0eWxlL2dudWxpYi1tNC9saWJnbGliLm00IGIvbGlidGV4dHN0eWxlL2dudWxpYi1tNC9saWJnbGliLm00CitpbmRleCBiZWY2ZmEzLi44ODQxNzU1IDEwMDY0NAorLS0tIGEvbGlidGV4dHN0eWxlL2dudWxpYi1tNC9saWJnbGliLm00CisrKysgYi9saWJ0ZXh0c3R5bGUvZ251bGliLW00L2xpYmdsaWIubTQKK0BAIC0xLDEwNSArMSwzMSBAQAorLSMgbGliZ2xpYi5tNCBzZXJpYWwgNAorLWRubCBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNywgMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjIGxpYmdsaWIubTQgc2VyaWFsIDMgKGdldHRleHQtMC4xNykKKytkbmwgQ29weXJpZ2h0IChDKSAyMDA2LTIwMDcsIDIwMTUtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyBkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorIAorIGRubCBGcm9tIEJydW5vIEhhaWJsZS4KKyAKKy1kbmwgZ2xfTElCR0xJQgorLWRubCAgIGdpdmVzIHRoZSB1c2VyIHRoZSBvcHRpb24gdG8gZGVjaWRlIHdoZXRoZXIgdG8gdXNlIHRoZSBpbmNsdWRlZCBvcgorLWRubCAgIGFuIGV4dGVybmFsIGxpYmdsaWIuCistZG5sIGdsX0xJQkdMSUIoRk9SQ0UtSU5DTFVERUQpCistZG5sICAgZm9yY2VzIHRoZSB1c2Ugb2YgdGhlIGluY2x1ZGVkIG9yIGFuIGV4dGVybmFsIGxpYmdsaWIuCisgQUNfREVGVU4oW2dsX0xJQkdMSUJdLAorIFsKKy0gIGlmZWxzZShbJDFdLCAsIFsKKy0gICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGluY2x1ZGVkIGdsaWIgaXMgcmVxdWVzdGVkXSkKKy0gICAgQUNfQVJHX1dJVEgoW2luY2x1ZGVkLWdsaWJdLAorLSAgICAgIFsgIC0td2l0aC1pbmNsdWRlZC1nbGliICAgIHVzZSB0aGUgZ2xpYjIgaW5jbHVkZWQgaGVyZV0sCistICAgICAgW2dsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWQ9JHdpdGh2YWxdLAorLSAgICAgIFtnbF9jdl9saWJnbGliX2ZvcmNlX2luY2x1ZGVkPW5vXSkKKy0gICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWRdKQorLSAgXSwgW2dsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWQ9JDFdKQorKyAgQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCisrICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgaW5jbHVkZWQgZ2xpYiBpcyByZXF1ZXN0ZWRdKQorKyAgQUNfQVJHX1dJVEgoW2luY2x1ZGVkLWdsaWJdLAorKyAgICBbICAtLXdpdGgtaW5jbHVkZWQtZ2xpYiAgICB1c2UgdGhlIGdsaWIyIGluY2x1ZGVkIGhlcmVdLAorKyAgICBbZ2xfY3ZfbGliZ2xpYl9mb3JjZV9pbmNsdWRlZD0kd2l0aHZhbF0sCisrICAgIFtnbF9jdl9saWJnbGliX2ZvcmNlX2luY2x1ZGVkPW5vXSkKKysgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJnbGliX2ZvcmNlX2luY2x1ZGVkXSkKKyAKKyAgIGdsX2N2X2xpYmdsaWJfdXNlX2luY2x1ZGVkPSIkZ2xfY3ZfbGliZ2xpYl9mb3JjZV9pbmNsdWRlZCIKKyAgIExJQkdMSUI9CisgICBMVExJQkdMSUI9CisgICBJTkNHTElCPQorLSAgaWZlbHNlKFskMV0sIFt5ZXNdLCAsIFsKKy0gICAgaWYgdGVzdCAiJGdsX2N2X2xpYmdsaWJfdXNlX2luY2x1ZGVkIiAhPSB5ZXM7IHRoZW4KKy0gICAgICBkbmwgRmlndXJlIG91dCB3aGV0aGVyIHdlIGNhbiB1c2UgYSBwcmVpbnN0YWxsZWQgbGliZ2xpYi0yLjAsIG9yIGhhdmUgdG8gdXNlCistICAgICAgZG5sIHRoZSBpbmNsdWRlZCBvbmUuCistICAgICAgQUNfQ0FDSEVfVkFMKFtnbF9jdl9saWJnbGliXSwgWworLSAgICAgICAgZ2xfY3ZfbGliZ2xpYj1ubworLSAgICAgICAgZ2xfY3ZfTElCR0xJQj0KKy0gICAgICAgIGdsX2N2X0xUTElCR0xJQj0KKy0gICAgICAgIGdsX2N2X0lOQ0dMSUI9CistICAgICAgICBnbF9zYXZlX0xJQlM9IiRMSUJTIgorLSAgICAgICAgZG5sIFNlYXJjaCBmb3IgbGliZ2xpYjIgYW5kIGRlZmluZSBMSUJHTElCXzJfMCwgTFRMSUJHTElCXzJfMCBhbmQKKy0gICAgICAgIGRubCBJTkNHTElCXzJfMCBhY2NvcmRpbmdseS4KKy0gICAgICAgIGRubCBEb24ndCB1c2UgZ2xpYi1jb25maWcgbm9yIHBrZy1jb25maWcsIHNpbmNlIGl0IGRvZXNuJ3Qgd29yayB3aGVuCistICAgICAgICBkbmwgY3Jvc3MtY29tcGlsaW5nIG9yIHdoZW4gdGhlIEMgY29tcGlsZXIgaW4gdXNlIGlzIGRpZmZlcmVudCBmcm9tIHRoZQorLSAgICAgICAgZG5sIG9uZSB0aGF0IGJ1aWx0IHRoZSBsaWJyYXJ5LgorLSAgICAgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFtnbGliLTIuMF0pCistICAgICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTICRMSUJHTElCXzJfMCIKKy0gICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8Z2xpYi5oPgorLSNpZm5kZWYgR19CRUdJTl9ERUNMUworLWVycm9yIHRoaXMgZ2xpYi5oIGluY2x1ZGVzIGEgZ2xpYmNvbmZpZy5oIGZyb20gYSBnbGliIHZlcnNpb24gMS54CistI2VuZGlmCistXSwKKy0gICAgICAgICAgW2dfc3RyaW5nX25ldyAoImZvbyIpO10sCistICAgICAgICAgIFtnbF9jdl9saWJnbGliPXllcworLSAgICAgICAgICAgZ2xfY3ZfTElCR0xJQj0iJExJQkdMSUJfMl8wIgorLSAgICAgICAgICAgZ2xfY3ZfTFRMSUJHTElCPSIkTFRMSUJHTElCXzJfMCIKKy0gICAgICAgICAgXSkKKy0gICAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJnbGliIiAhPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgZ2xfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorLSAgICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTICRJTkNHTElCXzJfMCIKKy0gICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxnbGliLmg+CistI2lmbmRlZiBHX0JFR0lOX0RFQ0xTCistZXJyb3IgdGhpcyBnbGliLmggaW5jbHVkZXMgYSBnbGliY29uZmlnLmggZnJvbSBhIGdsaWIgdmVyc2lvbiAxLngKKy0jZW5kaWYKKy1dLAorLSAgICAgICAgICAgIFtnX3N0cmluZ19uZXcgKCJmb28iKTtdLAorLSAgICAgICAgICAgIFtnbF9jdl9saWJnbGliPXllcworLSAgICAgICAgICAgICBnbF9jdl9MSUJHTElCPSIkTElCR0xJQl8yXzAiCistICAgICAgICAgICAgIGdsX2N2X0xUTElCR0xJQj0iJExUTElCR0xJQl8yXzAiCistICAgICAgICAgICAgIGdsX2N2X0lOQ0dMSUI9IiRJTkNHTElCXzJfMCIKKy0gICAgICAgICAgICBdKQorLSAgICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliZ2xpYiIgIT0geWVzOyB0aGVuCistICAgICAgICAgICAgZG5sIE9mdGVuIHRoZSBpbmNsdWRlIGZpbGVzIGFyZSBpbnN0YWxsZWQgaW4gL3Vzci9pbmNsdWRlL2dsaWItMi4wCistICAgICAgICAgICAgZG5sIGFuZCAvdXNyL2xpYi9nbGliLTIuMC9pbmNsdWRlLgorLSAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRMSUJHTElCXzJfMF9QUkVGSVgiOyB0aGVuCistICAgICAgICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MgLUkkTElCR0xJQl8yXzBfUFJFRklYL2luY2x1ZGUvZ2xpYi0yLjAgLUkkTElCR0xJQl8yXzBfUFJFRklYLyRhY2xfbGliZGlyc3RlbS9nbGliLTIuMC9pbmNsdWRlIgorLSAgICAgICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxnbGliLmg+CistI2lmbmRlZiBHX0JFR0lOX0RFQ0xTCistZXJyb3IgdGhpcyBnbGliLmggaW5jbHVkZXMgYSBnbGliY29uZmlnLmggZnJvbSBhIGdsaWIgdmVyc2lvbiAxLngKKy0jZW5kaWYKKy1dLAorLSAgICAgICAgICAgICAgICBbZ19zdHJpbmdfbmV3ICgiZm9vIik7XSwKKy0gICAgICAgICAgICAgICAgW2dsX2N2X2xpYmdsaWI9eWVzCistICAgICAgICAgICAgICAgICBnbF9jdl9MSUJHTElCPSIkTElCR0xJQl8yXzAiCistICAgICAgICAgICAgICAgICBnbF9jdl9MVExJQkdMSUI9IiRMVExJQkdMSUJfMl8wIgorLSAgICAgICAgICAgICAgICAgZ2xfY3ZfSU5DR0xJQj0iLUkkTElCR0xJQl8yXzBfUFJFRklYL2luY2x1ZGUvZ2xpYi0yLjAgLUkkTElCR0xJQl8yXzBfUFJFRklYLyRhY2xfbGliZGlyc3RlbS9nbGliLTIuMC9pbmNsdWRlIgorLSAgICAgICAgICAgICAgICBdKQorLSAgICAgICAgICAgIGZpCistICAgICAgICAgIGZpCistICAgICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyIKKy0gICAgICAgIGZpCistICAgICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTIgorLSAgICAgIF0pCistICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgZ2xpYl0pCistICAgICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYmdsaWJdKQorLSAgICAgIGlmIHRlc3QgJGdsX2N2X2xpYmdsaWIgPSB5ZXM7IHRoZW4KKy0gICAgICAgIExJQkdMSUI9IiRnbF9jdl9MSUJHTElCIgorLSAgICAgICAgTFRMSUJHTElCPSIkZ2xfY3ZfTFRMSUJHTElCIgorLSAgICAgICAgSU5DR0xJQj0iJGdsX2N2X0lOQ0dMSUIiCistICAgICAgZWxzZQorLSAgICAgICAgZ2xfY3ZfbGliZ2xpYl91c2VfaW5jbHVkZWQ9eWVzCistICAgICAgZmkKKy0gICAgZmkKKy0gIF0pCisrICBpZiB0ZXN0ICIkZ2xfY3ZfbGliZ2xpYl91c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgorKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbR0xJQl0sIFtnbGliLTIuMF0pCisrICAgIExJQkdMSUI9IiRHTElCX0xJQlMiCisrICAgIExUTElCR0xJQj0iJEdMSUJfTElCUyIKKysgICAgSU5DR0xJQj0iJEdMSUJfQ0ZMQUdTIgorKyAgZmkKKyAgIEFDX1NVQlNUKFtMSUJHTElCXSkKKyAgIEFDX1NVQlNUKFtMVExJQkdMSUJdKQorICAgQUNfU1VCU1QoW0lOQ0dMSUJdKQorZGlmZiAtLWdpdCBhL2xpYnRleHRzdHlsZS9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5jIGIvbGlidGV4dHN0eWxlL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLmMKK2luZGV4IDM2NzViNWYuLjgxMWU1NDYgMTAwNjQ0CistLS0gYS9saWJ0ZXh0c3R5bGUvbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0uYworKysrIGIvbGlidGV4dHN0eWxlL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLmMKK0BAIC0yOCwxNSArMjgsMTUgQEAKKyAKKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgCistI2luY2x1ZGUgPGNyLW9tLXBhcnNlci5oPgorLSNpbmNsdWRlIDxjci1zZWwtZW5nLmg+CistI2luY2x1ZGUgPGNyLXN0eWxlLmg+CistI2luY2x1ZGUgPGNyLXJnYi5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1vbS1wYXJzZXIuaD4KKysjaW5jbHVkZSA8bGliY3JvY28vY3Itc2VsLWVuZy5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zdHlsZS5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1yZ2IuaD4KKyAvKiA8Y3ItZm9udHMuaD4gaGFzIGEgYnJva2VuIGRvdWJsZS1pbmNsdXNpb24gZ3VhcmQgaW4gbGliY3JvY28tMC42LjEuICAqLworICNpZm5kZWYgX19DUl9GT05UU19IX18KKy0jIGluY2x1ZGUgPGNyLWZvbnRzLmg+CisrIyBpbmNsdWRlIDxsaWJjcm9jby9jci1mb250cy5oPgorICNlbmRpZgorLSNpbmNsdWRlIDxjci1zdHJpbmcuaD4KKysjaW5jbHVkZSA8bGliY3JvY28vY3Itc3RyaW5nLmg+CisgCisgI2luY2x1ZGUgInRlcm0tb3N0cmVhbS5oIgorICNpbmNsdWRlICJoYXNoLmgiCitkaWZmIC0tZ2l0IGEvbGlidGV4dHN0eWxlL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMgYi9saWJ0ZXh0c3R5bGUvbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0ub28uYworaW5kZXggMmNmZDRhOC4uZDQyYzhiNCAxMDA2NDQKKy0tLSBhL2xpYnRleHRzdHlsZS9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5vby5jCisrKysgYi9saWJ0ZXh0c3R5bGUvbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0ub28uYworQEAgLTIyLDE1ICsyMiwxNSBAQAorIAorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAKKy0jaW5jbHVkZSA8Y3Itb20tcGFyc2VyLmg+CistI2luY2x1ZGUgPGNyLXNlbC1lbmcuaD4KKy0jaW5jbHVkZSA8Y3Itc3R5bGUuaD4KKy0jaW5jbHVkZSA8Y3ItcmdiLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLW9tLXBhcnNlci5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zZWwtZW5nLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXN0eWxlLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXJnYi5oPgorIC8qIDxjci1mb250cy5oPiBoYXMgYSBicm9rZW4gZG91YmxlLWluY2x1c2lvbiBndWFyZCBpbiBsaWJjcm9jby0wLjYuMS4gICovCisgI2lmbmRlZiBfX0NSX0ZPTlRTX0hfXworLSMgaW5jbHVkZSA8Y3ItZm9udHMuaD4KKysjIGluY2x1ZGUgPGxpYmNyb2NvL2NyLWZvbnRzLmg+CisgI2VuZGlmCistI2luY2x1ZGUgPGNyLXN0cmluZy5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zdHJpbmcuaD4KKyAKKyAjaW5jbHVkZSAidGVybS1vc3RyZWFtLmgiCisgI2luY2x1ZGUgImhhc2guaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvMDAwMS1QQVRDSC1EaXNhYmxlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS8wMDAxLVBBVENILURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5ZWYyYTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS8wMDAxLVBBVENILURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1bUEFUQ0hdIERpc2FibGUgdGhlIHRlc3QgdG8gY29udmVydCBldWMtanAKLQotUmVtb3ZlIHRoZSB0ZXN0ICJUZXN0IGFnYWluc3QgSFAtVVggMTEuMTEgYnVnOgotTm8gY29udmVydGVyIGZyb20gRVVDLUpQIHRvIFVURi04IGlzIHByb3ZpZGVkIgotc2luY2Ugd2UgZG9uJ3Qgc3VwcG9ydCBIUC1VWCBhbmQgaWYgdGhlIGV1Yy1qcCBpcyBub3QKLWluc3RhbGxlZCBvbiB0aGUgaG9zdCwgdGhlIGRlcGVuZGVuY2Ugd2lsbCBiZSBidWlsdCB3aXRob3V0Ci1pY29udiBzdXBwb3J0IGFuZCB3aWxsIGNhdXNlIGd1aWxlLW5hdGl2ZSBidWlsZGluZyBmYWlsLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBpY29udi5tNCB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9pY29udi5tNCBiL2ljb252Lm00Ci1pbmRleCA0ZTM3MzYzLi4zNWY1NGJkIDEwMDY0NAotLS0tIGEvaWNvbnYubTQKLSsrKyBiL2ljb252Lm00Ci1AQCAtMTY1LDYgKzE2NSw3IEBAIEFDX0RFRlVOKFtBTV9JQ09OVl9MSU5LXSwKLSAgICAgICB9Ci0gICB9Ci0gI2VuZGlmCi0rI2lmIDAKLSAgIC8qIFRlc3QgYWdhaW5zdCBIUC1VWCAxMS4xMSBidWc6IE5vIGNvbnZlcnRlciBmcm9tIEVVQy1KUCB0byBVVEYtOCBpcwotICAgICAgcHJvdmlkZWQuICAqLwotICAgaWYgKC8qIFRyeSBzdGFuZGFyZGl6ZWQgbmFtZXMuICAqLwotQEAgLTE3Niw2ICsxNzcsNyBAQCBBQ19ERUZVTihbQU1fSUNPTlZfTElOS10sCi0gICAgICAgLyogVHJ5IEhQLVVYIG5hbWVzLiAgKi8KLSAgICAgICAmJiBpY29udl9vcGVuICgidXRmOCIsICJldWNKUCIpID09IChpY29udl90KSgtMSkpCi0gICAgIHJlc3VsdCB8PSAxNjsKLSsjZW5kaWYKLSAgIHJldHVybiByZXN1bHQ7Ci0gXV0pXSwKLSAgICAgICAgICAgW2FtX2N2X2Z1bmNfaWNvbnZfd29ya3M9eWVzXSwgLAotLS0gCi0yLjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL01ha2VmaWxlLmluLmluIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS9NYWtlZmlsZS5pbi5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhjMjkzZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL01ha2VmaWxlLmluLmluCisrKyAvZGV2L251bGwKQEAgLTEsNDgzICswLDAgQEAKLSMgTWFrZWZpbGUgZm9yIFBPIGRpcmVjdG9yeSBpbiBhbnkgcGFja2FnZSB1c2luZyBHTlUgZ2V0dGV4dC4KLSMgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTcsIDIwMDAtMjAwNywgMjAwOS0yMDEwIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PgotIwotIyBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAotIyBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKLSMgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIG9mZmVyZWQgYXMtaXMsCi0jIHdpdGhvdXQgYW55IHdhcnJhbnR5LgotIwotIyBPcmlnaW46IGdldHRleHQtMC4xOS44Ci1HRVRURVhUX01BQ1JPX1ZFUlNJT04gPSAwLjE5Ci0KLVBBQ0tBR0UgPSBAUEFDS0FHRUAKLVZFUlNJT04gPSBAVkVSU0lPTkAKLVBBQ0tBR0VfQlVHUkVQT1JUID0gQFBBQ0tBR0VfQlVHUkVQT1JUQAotCi1TRUQgPSBAU0VEQAotU0hFTEwgPSAvYmluL3NoCi1AU0VUX01BS0VACi0KLXNyY2RpciA9IEBzcmNkaXJACi10b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACi1WUEFUSCA9IEBzcmNkaXJACi0KLXByZWZpeCA9IEBwcmVmaXhACi1leGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWRhdGFyb290ZGlyID0gQGRhdGFyb290ZGlyQAotZGF0YWRpciA9IEBkYXRhZGlyQAotbG9jYWxlZGlyID0gQGxvY2FsZWRpckAKLWdldHRleHRzcmNkaXIgPSAkKGRhdGFkaXIpL2dldHRleHQvcG8KLQotSU5TVEFMTCA9IEBJTlNUQUxMQAotSU5TVEFMTF9EQVRBID0gQElOU1RBTExfREFUQUAKLQotIyBXZSB1c2UgJChta2Rpcl9wKS4KLSMgSW4gYXV0b21ha2UgPD0gMS45LngsICQobWtkaXJfcCkgaXMgZGVmaW5lZCBlaXRoZXIgYXMgIm1rZGlyIC1wIC0tIiBvciBhcwotIyAiJChta2luc3RhbGxkaXJzKSIgb3IgYXMgIiQoaW5zdGFsbF9zaCkgLWQiLiBGb3IgdGhlc2UgYXV0b21ha2UgdmVyc2lvbnMsCi0jIEBpbnN0YWxsX3NoQCBkb2VzIG5vdCBzdGFydCB3aXRoICQoU0hFTEwpLCBzbyB3ZSBhZGQgaXQuCi0jIEluIGF1dG9tYWtlID49IDEuMTAsIEBta2Rpcl9wQCBpcyBkZXJpdmVkIGZyb20gJHtNS0RJUl9QfSwgd2hpY2ggaXMgZGVmaW5lZAotIyBlaXRoZXIgYXMgIi9wYXRoL3RvL21rZGlyIC1wIiBvciAiLi4uL2luc3RhbGwtc2ggLWMgLWQiLiBGb3IgdGhlc2UgYXV0b21ha2UKLSMgdmVyc2lvbnMsICQobWtpbnN0YWxsZGlycykgYW5kICQoaW5zdGFsbF9zaCkgYXJlIHVudXNlZC4KLW1raW5zdGFsbGRpcnMgPSAkKFNIRUxMKSBAaW5zdGFsbF9zaEAgLWQKLWluc3RhbGxfc2ggPSAkKFNIRUxMKSBAaW5zdGFsbF9zaEAKLU1LRElSX1AgPSBATUtESVJfUEAKLW1rZGlyX3AgPSBAbWtkaXJfcEAKLQotIyBXaGVuIGJ1aWxkaW5nIGdldHRleHQtdG9vbHMsIHdlIHByZWZlciB0byB1c2UgdGhlIGJ1aWx0IHByb2dyYW1zCi0jIHJhdGhlciB0aGFuIGluc3RhbGxlZCBwcm9ncmFtcy4gIEhvd2V2ZXIsIHdlIGNhbid0IGRvIHRoYXQgd2hlbiB3ZQotIyBhcmUgY3Jvc3MgY29tcGlsaW5nLgotQ1JPU1NfQ09NUElMSU5HID0gQENST1NTX0NPTVBJTElOR0AKLQotR01TR0ZNVF8gPSBAR01TR0ZNVEAKLUdNU0dGTVRfbm8gPSBAR01TR0ZNVEAKLUdNU0dGTVRfeWVzID0gQEdNU0dGTVRfMDE1QAotR01TR0ZNVCA9ICQoR01TR0ZNVF8kKFVTRV9NU0dDVFhUKSkKLU1TR0ZNVF8gPSBATVNHRk1UQAotTVNHRk1UX25vID0gQE1TR0ZNVEAKLU1TR0ZNVF95ZXMgPSBATVNHRk1UXzAxNUAKLU1TR0ZNVCA9ICQoTVNHRk1UXyQoVVNFX01TR0NUWFQpKQotWEdFVFRFWFRfID0gQFhHRVRURVhUQAotWEdFVFRFWFRfbm8gPSBAWEdFVFRFWFRACi1YR0VUVEVYVF95ZXMgPSBAWEdFVFRFWFRfMDE1QAotWEdFVFRFWFQgPSAkKFhHRVRURVhUXyQoVVNFX01TR0NUWFQpKQotTVNHTUVSR0UgPSBtc2dtZXJnZQotTVNHTUVSR0VfVVBEQVRFID0gQE1TR01FUkdFQCAtLXVwZGF0ZQotTVNHSU5JVCA9IG1zZ2luaXQKLU1TR0NPTlYgPSBtc2djb252Ci1NU0dGSUxURVIgPSBtc2dmaWx0ZXIKLQotUE9GSUxFUyA9IEBQT0ZJTEVTQAotR01PRklMRVMgPSBAR01PRklMRVNACi1VUERBVEVQT0ZJTEVTID0gQFVQREFURVBPRklMRVNACi1EVU1NWVBPRklMRVMgPSBARFVNTVlQT0ZJTEVTQAotRElTVEZJTEVTLmNvbW1vbiA9IE1ha2VmaWxlLmluLmluIHJlbW92ZS1wb3RjZGF0ZS5zaW4gXAotJChESVNURklMRVMuY29tbW9uLmV4dHJhMSkgJChESVNURklMRVMuY29tbW9uLmV4dHJhMikgJChESVNURklMRVMuY29tbW9uLmV4dHJhMykKLURJU1RGSUxFUyA9ICQoRElTVEZJTEVTLmNvbW1vbikgTWFrZXZhcnMgUE9URklMRVMuaW4gXAotJChQT0ZJTEVTKSAkKEdNT0ZJTEVTKSBcCi0kKERJU1RGSUxFUy5leHRyYTEpICQoRElTVEZJTEVTLmV4dHJhMikgJChESVNURklMRVMuZXh0cmEzKQotCi1QT1RGSUxFUyA9IFwKLQotQ0FUQUxPR1MgPSBAQ0FUQUxPR1NACi0KLVBPRklMRVNERVBTXyA9ICQoc3JjZGlyKS8kKERPTUFJTikucG90Ci1QT0ZJTEVTREVQU195ZXMgPSAkKFBPRklMRVNERVBTXykKLVBPRklMRVNERVBTX25vID0KLVBPRklMRVNERVBTID0gJChQT0ZJTEVTREVQU18kKFBPX0RFUEVORFNfT05fUE9UKSkKLQotRElTVEZJTEVTREVQU18gPSB1cGRhdGUtcG8KLURJU1RGSUxFU0RFUFNfeWVzID0gJChESVNURklMRVNERVBTXykKLURJU1RGSUxFU0RFUFNfbm8gPQotRElTVEZJTEVTREVQUyA9ICQoRElTVEZJTEVTREVQU18kKERJU1RfREVQRU5EU19PTl9VUERBVEVfUE8pKQotCi0jIE1ha2V2YXJzIGdldHMgaW5zZXJ0ZWQgaGVyZS4gKERvbid0IHJlbW92ZSB0aGlzIGxpbmUhKQotCi0uU1VGRklYRVM6Ci0uU1VGRklYRVM6IC5wbyAuZ21vIC5tbyAuc2VkIC5zaW4gLm5vcCAucG8tY3JlYXRlIC5wby11cGRhdGUKLQotLnBvLm1vOgotCUBlY2hvICIkKE1TR0ZNVCkgLWMgLW8gJEAgJDwiOyBcCi0JJChNU0dGTVQpIC1jIC1vIHQtJEAgJDwgJiYgbXYgdC0kQCAkQAotCi0ucG8uZ21vOgotCUBsYW5nPWBlY2hvICQqIHwgc2VkIC1lICdzLC4qLywsJ2A7IFwKLQl0ZXN0ICIkKHNyY2RpcikiID0gLiAmJiBjZGNtZD0iIiB8fCBjZGNtZD0iY2QgJChzcmNkaXIpICYmICI7IFwKLQllY2hvICIkJHtjZGNtZH1ybSAtZiAkJHtsYW5nfS5nbW8gJiYgJChHTVNHRk1UKSAtYyAtLXN0YXRpc3RpY3MgLS12ZXJib3NlIC1vICQke2xhbmd9LmdtbyAkJHtsYW5nfS5wbyI7IFwKLQljZCAkKHNyY2RpcikgJiYgcm0gLWYgJCR7bGFuZ30uZ21vICYmICQoR01TR0ZNVCkgLWMgLS1zdGF0aXN0aWNzIC0tdmVyYm9zZSAtbyB0LSQke2xhbmd9LmdtbyAkJHtsYW5nfS5wbyAmJiBtdiB0LSQke2xhbmd9LmdtbyAkJHtsYW5nfS5nbW8KLQotLnNpbi5zZWQ6Ci0Jc2VkIC1lICcvXiMvZCcgJDwgPiB0LSRACi0JbXYgdC0kQCAkQAotCi0KLWFsbDogYWxsLUBVU0VfTkxTQAotCi1hbGwteWVzOiBzdGFtcC1wbwotYWxsLW5vOgotCi0jIEVuc3VyZSB0aGF0IHRoZSBnZXR0ZXh0IG1hY3JvcyBhbmQgdGhpcyBNYWtlZmlsZS5pbi5pbiBhcmUgaW4gc3luYy4KLUNIRUNLX01BQ1JPX1ZFUlNJT04gPSBcCi0JdGVzdCAiJChHRVRURVhUX01BQ1JPX1ZFUlNJT04pIiA9ICJAR0VUVEVYVF9NQUNST19WRVJTSU9OQCIgXAotCSAgfHwgeyBlY2hvICIqKiogZXJyb3I6IGdldHRleHQgaW5mcmFzdHJ1Y3R1cmUgbWlzbWF0Y2g6IHVzaW5nIGEgTWFrZWZpbGUuaW4uaW4gZnJvbSBnZXR0ZXh0IHZlcnNpb24gJChHRVRURVhUX01BQ1JPX1ZFUlNJT04pIGJ1dCB0aGUgYXV0b2NvbmYgbWFjcm9zIGFyZSBmcm9tIGdldHRleHQgdmVyc2lvbiBAR0VUVEVYVF9NQUNST19WRVJTSU9OQCIgMT4mMjsgXAotCSAgICAgICBleGl0IDE7IFwKLQkgICAgIH0KLQotIyAkKHNyY2RpcikvJChET01BSU4pLnBvdCBpcyBvbmx5IGNyZWF0ZWQgd2hlbiBuZWVkZWQuIFdoZW4geGdldHRleHQgZmluZHMgbm8KLSMgaW50ZXJuYXRpb25hbGl6ZWQgbWVzc2FnZXMsIG5vICQoc3JjZGlyKS8kKERPTUFJTikucG90IGlzIGNyZWF0ZWQgKGJlY2F1c2UKLSMgd2UgZG9uJ3Qgd2FudCB0byBib3RoZXIgdHJhbnNsYXRvcnMgd2l0aCBlbXB0eSBQT1QgZmlsZXMpLiBXZSBhc3N1bWUgdGhhdAotIyBMSU5HVUFTIGlzIGVtcHR5IGluIHRoaXMgY2FzZSwgaS5lLiAkKFBPRklMRVMpIGFuZCAkKEdNT0ZJTEVTKSBhcmUgZW1wdHkuCi0jIEluIHRoaXMgY2FzZSwgc3RhbXAtcG8gaXMgYSBub3AgKGkuZS4gYSBwaG9ueSB0YXJnZXQpLgotCi0jIHN0YW1wLXBvIGlzIGEgdGltZXN0YW1wIGRlbm90aW5nIHRoZSBsYXN0IHRpbWUgYXQgd2hpY2ggdGhlIENBVEFMT0dTIGhhdmUKLSMgYmVlbiBsb29zZWx5IHVwZGF0ZWQuIEl0cyBwdXJwb3NlIGlzIHRoYXQgd2hlbiBhIGRldmVsb3BlciBvciB0cmFuc2xhdG9yCi0jIGNoZWNrcyBvdXQgdGhlIHBhY2thZ2UgdmlhIENWUywgYW5kIHRoZSAkKERPTUFJTikucG90IGZpbGUgaXMgbm90IGluIENWUywKLSMgIm1ha2UiIHdpbGwgdXBkYXRlIHRoZSAkKERPTUFJTikucG90IGFuZCB0aGUgJChDQVRBTE9HUyksIGJ1dCBzdWJzZXF1ZW50Ci0jIGludm9jYXRpb25zIG9mICJtYWtlIiB3aWxsIGRvIG5vdGhpbmcuIFRoaXMgdGltZXN0YW1wIHdvdWxkIG5vdCBiZSBuZWNlc3NhcnkKLSMgaWYgdXBkYXRpbmcgdGhlICQoQ0FUQUxPR1MpIHdvdWxkIGFsd2F5cyB0b3VjaCB0aGVtOyBob3dldmVyLCB0aGUgcnVsZSBmb3IKLSMgJChQT0ZJTEVTKSBoYXMgYmVlbiBkZXNpZ25lZCB0byBub3QgdG91Y2ggZmlsZXMgdGhhdCBkb24ndCBuZWVkIHRvIGJlCi0jIGNoYW5nZWQuCi1zdGFtcC1wbzogJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QKLQlAJChDSEVDS19NQUNST19WRVJTSU9OKQotCXRlc3QgISAtZiAkKHNyY2RpcikvJChET01BSU4pLnBvdCB8fCBcCi0JICB0ZXN0IC16ICIkKEdNT0ZJTEVTKSIgfHwgJChNQUtFKSAkKEdNT0ZJTEVTKQotCUB0ZXN0ICEgLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgfHwgeyBcCi0JICBlY2hvICJ0b3VjaCBzdGFtcC1wbyIgJiYgXAotCSAgZWNobyB0aW1lc3RhbXAgPiBzdGFtcC1wb1QgJiYgXAotCSAgbXYgc3RhbXAtcG9UIHN0YW1wLXBvOyBcCi0JfQotCi0jIE5vdGU6IFRhcmdldCAnYWxsJyBtdXN0IG5vdCBkZXBlbmQgb24gdGFyZ2V0ICckKERPTUFJTikucG90LXVwZGF0ZScsCi0jIG90aGVyd2lzZSBwYWNrYWdlcyBsaWtlIEdDQyBjYW4gbm90IGJlIGJ1aWx0IGlmIG9ubHkgcGFydHMgb2YgdGhlIHNvdXJjZQotIyBoYXZlIGJlZW4gZG93bmxvYWRlZC4KLQotIyBUaGlzIHRhcmdldCByZWJ1aWxkcyAkKERPTUFJTikucG90OyBpdCBpcyBhbiBleHBlbnNpdmUgb3BlcmF0aW9uLgotIyBOb3RlIHRoYXQgJChET01BSU4pLnBvdCBpcyBub3QgdG91Y2hlZCBpZiBpdCBkb2Vzbid0IG5lZWQgdG8gYmUgY2hhbmdlZC4KLSMgVGhlIGRldGVybWluYXRpb24gb2Ygd2hldGhlciB0aGUgcGFja2FnZSB4eXogaXMgYSBHTlUgb25lIGlzIGJhc2VkIG9uIHRoZQotIyBoZXVyaXN0aWMgd2hldGhlciBzb21lIGZpbGUgaW4gdGhlIHRvcCBsZXZlbCBkaXJlY3RvcnkgbWVudGlvbnMgIkdOVSB4eXoiLgotIyBJZiBHTlUgJ2ZpbmQnIGlzIGF2YWlsYWJsZSwgd2UgYXZvaWQgZ3JlcHBpbmcgdGhyb3VnaCBtb25zdGVyIGZpbGVzLgotJChET01BSU4pLnBvdC11cGRhdGU6ICQoUE9URklMRVMpICQoc3JjZGlyKS9QT1RGSUxFUy5pbiByZW1vdmUtcG90Y2RhdGUuc2VkCi0JcGFja2FnZV9nbnU9IiQoUEFDS0FHRV9HTlUpIjsgXAotCXRlc3QgLW4gIiQkcGFja2FnZV9nbnUiIHx8IHsgXAotCSAgaWYgeyBpZiAoTENfQUxMPUMgZmluZCAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwgZ3JlcCBHTlUgPi9kZXYvbnVsbDsgdGhlbiBcCi0JCSBMQ19BTEw9QyBmaW5kIC1MICQodG9wX3NyY2RpcikgLW1heGRlcHRoIDEgLXR5cGUgZiBcCi0JCQkgICAgICAgLXNpemUgLTEwMDAwMDAwYyAtZXhlYyBncmVwICdHTlUgQFBBQ0tBR0VAJyBcCi0JCQkgICAgICAgL2Rldi9udWxsICd7fScgJzsnIDI+L2Rldi9udWxsOyBcCi0JICAgICAgIGVsc2UgXAotCQkgTENfQUxMPUMgZ3JlcCAnR05VIEBQQUNLQUdFQCcgJCh0b3Bfc3JjZGlyKS8qIDI+L2Rldi9udWxsOyBcCi0JICAgICAgIGZpOyBcCi0JICAgICB9IHwgZ3JlcCAtdiAnbGlidG9vbDonID4vZGV2L251bGw7IHRoZW4gXAotCSAgICAgcGFja2FnZV9nbnU9eWVzOyBcCi0JICAgZWxzZSBcCi0JICAgICBwYWNrYWdlX2dudT1ubzsgXAotCSAgIGZpOyBcCi0JfTsgXAotCWlmIHRlc3QgIiQkcGFja2FnZV9nbnUiID0gInllcyI7IHRoZW4gXAotCSAgcGFja2FnZV9wcmVmaXg9J0dOVSAnOyBcCi0JZWxzZSBcCi0JICBwYWNrYWdlX3ByZWZpeD0nJzsgXAotCWZpOyBcCi0JaWYgdGVzdCAtbiAnJChNU0dJRF9CVUdTX0FERFJFU1MpJyB8fCB0ZXN0ICckKFBBQ0tBR0VfQlVHUkVQT1JUKScgPSAnQCdQQUNLQUdFX0JVR1JFUE9SVCdAJzsgdGhlbiBcCi0JICBtc2dpZF9idWdzX2FkZHJlc3M9JyQoTVNHSURfQlVHU19BRERSRVNTKSc7IFwKLQllbHNlIFwKLQkgIG1zZ2lkX2J1Z3NfYWRkcmVzcz0nJChQQUNLQUdFX0JVR1JFUE9SVCknOyBcCi0JZmk7IFwKLQljYXNlIGAkKFhHRVRURVhUKSAtLXZlcnNpb24gfCBzZWQgMXEgfCBzZWQgLWUgJ3MsXlteMC05XSosLCdgIGluIFwKLQkgICcnIHwgMC5bMC05XSB8IDAuWzAtOV0uKiB8IDAuMVswLTVdIHwgMC4xWzAtNV0uKiB8IDAuMTYgfCAwLjE2LlswLTFdKikgXAotCSAgICAkKFhHRVRURVhUKSAtLWRlZmF1bHQtZG9tYWluPSQoRE9NQUlOKSAtLWRpcmVjdG9yeT0kKHRvcF9zcmNkaXIpIFwKLQkgICAgICAtLWFkZC1jb21tZW50cz1UUkFOU0xBVE9SUzogJChYR0VUVEVYVF9PUFRJT05TKSBAWEdFVFRFWFRfRVhUUkFfT1BUSU9OU0AgXAotCSAgICAgIC0tZmlsZXMtZnJvbT0kKHNyY2RpcikvUE9URklMRVMuaW4gXAotCSAgICAgIC0tY29weXJpZ2h0LWhvbGRlcj0nJChDT1BZUklHSFRfSE9MREVSKScgXAotCSAgICAgIC0tbXNnaWQtYnVncy1hZGRyZXNzPSIkJG1zZ2lkX2J1Z3NfYWRkcmVzcyIgXAotCSAgICA7OyBcCi0JICAqKSBcCi0JICAgICQoWEdFVFRFWFQpIC0tZGVmYXVsdC1kb21haW49JChET01BSU4pIC0tZGlyZWN0b3J5PSQodG9wX3NyY2RpcikgXAotCSAgICAgIC0tYWRkLWNvbW1lbnRzPVRSQU5TTEFUT1JTOiAkKFhHRVRURVhUX09QVElPTlMpIEBYR0VUVEVYVF9FWFRSQV9PUFRJT05TQCBcCi0JICAgICAgLS1maWxlcy1mcm9tPSQoc3JjZGlyKS9QT1RGSUxFUy5pbiBcCi0JICAgICAgLS1jb3B5cmlnaHQtaG9sZGVyPSckKENPUFlSSUdIVF9IT0xERVIpJyBcCi0JICAgICAgLS1wYWNrYWdlLW5hbWU9IiQke3BhY2thZ2VfcHJlZml4fUBQQUNLQUdFQCIgXAotCSAgICAgIC0tcGFja2FnZS12ZXJzaW9uPSdAVkVSU0lPTkAnIFwKLQkgICAgICAtLW1zZ2lkLWJ1Z3MtYWRkcmVzcz0iJCRtc2dpZF9idWdzX2FkZHJlc3MiIFwKLQkgICAgOzsgXAotCWVzYWMKLQl0ZXN0ICEgLWYgJChET01BSU4pLnBvIHx8IHsgXAotCSAgaWYgdGVzdCAtZiAkKHNyY2RpcikvJChET01BSU4pLnBvdC1oZWFkZXI7IHRoZW4gXAotCSAgICBzZWQgLWUgJzEsL14jJCQvZCcgPCAkKERPTUFJTikucG8gPiAkKERPTUFJTikuMXBvICYmIFwKLQkgICAgY2F0ICQoc3JjZGlyKS8kKERPTUFJTikucG90LWhlYWRlciAkKERPTUFJTikuMXBvID4gJChET01BSU4pLnBvOyBcCi0JICAgIHJtIC1mICQoRE9NQUlOKS4xcG87IFwKLQkgIGZpOyBcCi0JICBpZiB0ZXN0IC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90OyB0aGVuIFwKLQkgICAgc2VkIC1mIHJlbW92ZS1wb3RjZGF0ZS5zZWQgPCAkKHNyY2RpcikvJChET01BSU4pLnBvdCA+ICQoRE9NQUlOKS4xcG8gJiYgXAotCSAgICBzZWQgLWYgcmVtb3ZlLXBvdGNkYXRlLnNlZCA8ICQoRE9NQUlOKS5wbyA+ICQoRE9NQUlOKS4ycG8gJiYgXAotCSAgICBpZiBjbXAgJChET01BSU4pLjFwbyAkKERPTUFJTikuMnBvID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCi0JICAgICAgcm0gLWYgJChET01BSU4pLjFwbyAkKERPTUFJTikuMnBvICQoRE9NQUlOKS5wbzsgXAotCSAgICBlbHNlIFwKLQkgICAgICBybSAtZiAkKERPTUFJTikuMXBvICQoRE9NQUlOKS4ycG8gJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgJiYgXAotCSAgICAgIG12ICQoRE9NQUlOKS5wbyAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgXAotCSAgICBmaTsgXAotCSAgZWxzZSBcCi0JICAgIG12ICQoRE9NQUlOKS5wbyAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgXAotCSAgZmk7IFwKLQl9Ci0KLSMgVGhpcyBydWxlIGhhcyBubyBkZXBlbmRlbmNpZXM6IHdlIGRvbid0IG5lZWQgdG8gdXBkYXRlICQoRE9NQUlOKS5wb3QgYXQKLSMgZXZlcnkgIm1ha2UiIGludm9jYXRpb24sIG9ubHkgY3JlYXRlIGl0IHdoZW4gaXQgaXMgbWlzc2luZy4KLSMgT25seSAibWFrZSAkKERPTUFJTikucG90LXVwZGF0ZSIgb3IgIm1ha2UgZGlzdCIgd2lsbCBmb3JjZSBhbiB1cGRhdGUuCi0kKHNyY2RpcikvJChET01BSU4pLnBvdDoKLQkkKE1BS0UpICQoRE9NQUlOKS5wb3QtdXBkYXRlCi0KLSMgVGhpcyB0YXJnZXQgcmVidWlsZHMgYSBQTyBmaWxlIGlmICQoRE9NQUlOKS5wb3QgaGFzIGNoYW5nZWQuCi0jIE5vdGUgdGhhdCBhIFBPIGZpbGUgaXMgbm90IHRvdWNoZWQgaWYgaXQgZG9lc24ndCBuZWVkIHRvIGJlIGNoYW5nZWQuCi0kKFBPRklMRVMpOiAkKFBPRklMRVNERVBTKQotCUBsYW5nPWBlY2hvICRAIHwgc2VkIC1lICdzLC4qLywsJyAtZSAncy9cLnBvJCQvLydgOyBcCi0JaWYgdGVzdCAtZiAiJChzcmNkaXIpLyQke2xhbmd9LnBvIjsgdGhlbiBcCi0JICB0ZXN0IC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90IHx8ICQoTUFLRSkgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3Q7IFwKLQkgIHRlc3QgIiQoc3JjZGlyKSIgPSAuICYmIGNkY21kPSIiIHx8IGNkY21kPSJjZCAkKHNyY2RpcikgJiYgIjsgXAotCSAgZWNobyAiJCR7Y2RjbWR9JChNU0dNRVJHRV9VUERBVEUpICQoTVNHTUVSR0VfT1BUSU9OUykgLS1sYW5nPSQke2xhbmd9ICQke2xhbmd9LnBvICQoRE9NQUlOKS5wb3QiOyBcCi0JICBjZCAkKHNyY2RpcikgXAotCSAgICAmJiB7IGNhc2UgYCQoTVNHTUVSR0UpIC0tdmVyc2lvbiB8IHNlZCAxcSB8IHNlZCAtZSAncyxeW14wLTldKiwsJ2AgaW4gXAotCSAgICAgICAgICAgJycgfCAwLlswLTldIHwgMC5bMC05XS4qIHwgMC4xWzAtN10gfCAwLjFbMC03XS4qKSBcCi0JICAgICAgICAgICAgICQoTVNHTUVSR0VfVVBEQVRFKSAkKE1TR01FUkdFX09QVElPTlMpICQke2xhbmd9LnBvICQoRE9NQUlOKS5wb3Q7OyBcCi0JICAgICAgICAgICAqKSBcCi0JICAgICAgICAgICAgICQoTVNHTUVSR0VfVVBEQVRFKSAkKE1TR01FUkdFX09QVElPTlMpIC0tbGFuZz0kJHtsYW5nfSAkJHtsYW5nfS5wbyAkKERPTUFJTikucG90OzsgXAotCSAgICAgICAgIGVzYWM7IFwKLQkgICAgICAgfTsgXAotCWVsc2UgXAotCSAgJChNQUtFKSAkJHtsYW5nfS5wby1jcmVhdGU7IFwKLQlmaQotCi0KLWluc3RhbGw6IGluc3RhbGwtZXhlYyBpbnN0YWxsLWRhdGEKLWluc3RhbGwtZXhlYzoKLWluc3RhbGwtZGF0YTogaW5zdGFsbC1kYXRhLUBVU0VfTkxTQAotCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKLQkgICQobWtkaXJfcCkgJChERVNURElSKSQoZ2V0dGV4dHNyY2Rpcik7IFwKLQkgIGZvciBmaWxlIGluICQoRElTVEZJTEVTLmNvbW1vbikgTWFrZXZhcnMudGVtcGxhdGU7IGRvIFwKLQkgICAgJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS8kJGZpbGUgXAotCQkJICAgICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAotCSAgZG9uZTsgXAotCSAgZm9yIGZpbGUgaW4gTWFrZXZhcnM7IGRvIFwKLQkgICAgcm0gLWYgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCi0JICBkb25lOyBcCi0JZWxzZSBcCi0JICA6IDsgXAotCWZpCi1pbnN0YWxsLWRhdGEtbm86IGFsbAotaW5zdGFsbC1kYXRhLXllczogYWxsCi0JQGNhdGFsb2dzPSckKENBVEFMT0dTKSc7IFwKLQlmb3IgY2F0IGluICQkY2F0YWxvZ3M7IGRvIFwKLQkgIGNhdD1gYmFzZW5hbWUgJCRjYXRgOyBcCi0JICBsYW5nPWBlY2hvICQkY2F0IHwgc2VkIC1lICdzL1wuZ21vJCQvLydgOyBcCi0JICBkaXI9JChsb2NhbGVkaXIpLyQkbGFuZy9MQ19NRVNTQUdFUzsgXAotCSAgJChta2Rpcl9wKSAkKERFU1RESVIpJCRkaXI7IFwKLQkgIGlmIHRlc3QgLXIgJCRjYXQ7IHRoZW4gcmVhbGNhdD0kJGNhdDsgZWxzZSByZWFsY2F0PSQoc3JjZGlyKS8kJGNhdDsgZmk7IFwKLQkgICQoSU5TVEFMTF9EQVRBKSAkJHJlYWxjYXQgJChERVNURElSKSQkZGlyLyQoRE9NQUlOKS5tbzsgXAotCSAgZWNobyAiaW5zdGFsbGluZyAkJHJlYWxjYXQgYXMgJChERVNURElSKSQkZGlyLyQoRE9NQUlOKS5tbyI7IFwKLQkgIGZvciBsYyBpbiAnJyAkKEVYVFJBX0xPQ0FMRV9DQVRFR09SSUVTKTsgZG8gXAotCSAgICBpZiB0ZXN0IC1uICIkJGxjIjsgdGhlbiBcCi0JICAgICAgaWYgKGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nICYmIExDX0FMTD1DIGxzIC1sIC1kICQkbGMgMj4vZGV2L251bGwpIHwgZ3JlcCAnIC0+ICcgPi9kZXYvbnVsbDsgdGhlbiBcCi0JICAgICAgICBsaW5rPWBjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZyAmJiBMQ19BTEw9QyBscyAtbCAtZCAkJGxjIHwgc2VkIC1lICdzL14uKiAtPiAvLydgOyBcCi0JICAgICAgICBtdiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMub2xkOyBcCi0JICAgICAgICBta2RpciAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCi0JICAgICAgICAoY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQgJiYgXAotCSAgICAgICAgIGZvciBmaWxlIGluICo7IGRvIFwKLQkgICAgICAgICAgIGlmIHRlc3QgLWYgJCRmaWxlOyB0aGVuIFwKLQkgICAgICAgICAgICAgbG4gLXMgLi4vJCRsaW5rLyQkZmlsZSAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQkZmlsZTsgXAotCSAgICAgICAgICAgZmk7IFwKLQkgICAgICAgICBkb25lKTsgXAotCSAgICAgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQ7IFwKLQkgICAgICBlbHNlIFwKLQkgICAgICAgIGlmIHRlc3QgLWQgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgdGhlbiBcCi0JICAgICAgICAgIDo7IFwKLQkgICAgICAgIGVsc2UgXAotCSAgICAgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCi0JICAgICAgICAgIG1rZGlyICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKLQkgICAgICAgIGZpOyBcCi0JICAgICAgZmk7IFwKLQkgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbzsgXAotCSAgICAgIGxuIC1zIC4uL0xDX01FU1NBR0VTLyQoRE9NQUlOKS5tbyAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbyAyPi9kZXYvbnVsbCB8fCBcCi0JICAgICAgbG4gJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvTENfTUVTU0FHRVMvJChET01BSU4pLm1vICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vIDI+L2Rldi9udWxsIHx8IFwKLQkgICAgICBjcCAtcCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy9MQ19NRVNTQUdFUy8kKERPTUFJTikubW8gJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kKERPTUFJTikubW87IFwKLQkgICAgICBlY2hvICJpbnN0YWxsaW5nICQkcmVhbGNhdCBsaW5rIGFzICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vIjsgXAotCSAgICBmaTsgXAotCSAgZG9uZTsgXAotCWRvbmUKLQotaW5zdGFsbC1zdHJpcDogaW5zdGFsbAotCi1pbnN0YWxsZGlyczogaW5zdGFsbGRpcnMtZXhlYyBpbnN0YWxsZGlycy1kYXRhCi1pbnN0YWxsZGlycy1leGVjOgotaW5zdGFsbGRpcnMtZGF0YTogaW5zdGFsbGRpcnMtZGF0YS1AVVNFX05MU0AKLQlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCi0JICAkKG1rZGlyX3ApICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpOyBcCi0JZWxzZSBcCi0JICA6IDsgXAotCWZpCi1pbnN0YWxsZGlycy1kYXRhLW5vOgotaW5zdGFsbGRpcnMtZGF0YS15ZXM6Ci0JQGNhdGFsb2dzPSckKENBVEFMT0dTKSc7IFwKLQlmb3IgY2F0IGluICQkY2F0YWxvZ3M7IGRvIFwKLQkgIGNhdD1gYmFzZW5hbWUgJCRjYXRgOyBcCi0JICBsYW5nPWBlY2hvICQkY2F0IHwgc2VkIC1lICdzL1wuZ21vJCQvLydgOyBcCi0JICBkaXI9JChsb2NhbGVkaXIpLyQkbGFuZy9MQ19NRVNTQUdFUzsgXAotCSAgJChta2Rpcl9wKSAkKERFU1RESVIpJCRkaXI7IFwKLQkgIGZvciBsYyBpbiAnJyAkKEVYVFJBX0xPQ0FMRV9DQVRFR09SSUVTKTsgZG8gXAotCSAgICBpZiB0ZXN0IC1uICIkJGxjIjsgdGhlbiBcCi0JICAgICAgaWYgKGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nICYmIExDX0FMTD1DIGxzIC1sIC1kICQkbGMgMj4vZGV2L251bGwpIHwgZ3JlcCAnIC0+ICcgPi9kZXYvbnVsbDsgdGhlbiBcCi0JICAgICAgICBsaW5rPWBjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZyAmJiBMQ19BTEw9QyBscyAtbCAtZCAkJGxjIHwgc2VkIC1lICdzL14uKiAtPiAvLydgOyBcCi0JICAgICAgICBtdiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMub2xkOyBcCi0JICAgICAgICBta2RpciAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCi0JICAgICAgICAoY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQgJiYgXAotCSAgICAgICAgIGZvciBmaWxlIGluICo7IGRvIFwKLQkgICAgICAgICAgIGlmIHRlc3QgLWYgJCRmaWxlOyB0aGVuIFwKLQkgICAgICAgICAgICAgbG4gLXMgLi4vJCRsaW5rLyQkZmlsZSAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQkZmlsZTsgXAotCSAgICAgICAgICAgZmk7IFwKLQkgICAgICAgICBkb25lKTsgXAotCSAgICAgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQ7IFwKLQkgICAgICBlbHNlIFwKLQkgICAgICAgIGlmIHRlc3QgLWQgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgdGhlbiBcCi0JICAgICAgICAgIDo7IFwKLQkgICAgICAgIGVsc2UgXAotCSAgICAgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCi0JICAgICAgICAgIG1rZGlyICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKLQkgICAgICAgIGZpOyBcCi0JICAgICAgZmk7IFwKLQkgICAgZmk7IFwKLQkgIGRvbmU7IFwKLQlkb25lCi0KLSMgRGVmaW5lIHRoaXMgYXMgZW1wdHkgdW50aWwgSSBmb3VuZCBhIHVzZWZ1bCBhcHBsaWNhdGlvbi4KLWluc3RhbGxjaGVjazoKLQotdW5pbnN0YWxsOiB1bmluc3RhbGwtZXhlYyB1bmluc3RhbGwtZGF0YQotdW5pbnN0YWxsLWV4ZWM6Ci11bmluc3RhbGwtZGF0YTogdW5pbnN0YWxsLWRhdGEtQFVTRV9OTFNACi0JaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IHRoZW4gXAotCSAgZm9yIGZpbGUgaW4gJChESVNURklMRVMuY29tbW9uKSBNYWtldmFycy50ZW1wbGF0ZTsgZG8gXAotCSAgICBybSAtZiAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKS8kJGZpbGU7IFwKLQkgIGRvbmU7IFwKLQllbHNlIFwKLQkgIDogOyBcCi0JZmkKLXVuaW5zdGFsbC1kYXRhLW5vOgotdW5pbnN0YWxsLWRhdGEteWVzOgotCWNhdGFsb2dzPSckKENBVEFMT0dTKSc7IFwKLQlmb3IgY2F0IGluICQkY2F0YWxvZ3M7IGRvIFwKLQkgIGNhdD1gYmFzZW5hbWUgJCRjYXRgOyBcCi0JICBsYW5nPWBlY2hvICQkY2F0IHwgc2VkIC1lICdzL1wuZ21vJCQvLydgOyBcCi0JICBmb3IgbGMgaW4gTENfTUVTU0FHRVMgJChFWFRSQV9MT0NBTEVfQ0FURUdPUklFUyk7IGRvIFwKLQkgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kKERPTUFJTikubW87IFwKLQkgIGRvbmU7IFwKLQlkb25lCi0KLWNoZWNrOiBhbGwKLQotaW5mbyBkdmkgcHMgcGRmIGh0bWwgdGFncyBUQUdTIGN0YWdzIENUQUdTIElEOgotCi1tb3N0bHljbGVhbjoKLQlybSAtZiByZW1vdmUtcG90Y2RhdGUuc2VkCi0Jcm0gLWYgc3RhbXAtcG9UCi0Jcm0gLWYgY29yZSBjb3JlLiogJChET01BSU4pLnBvICQoRE9NQUlOKS4xcG8gJChET01BSU4pLjJwbyAqLm5ldy5wbwotCXJtIC1mciAqLm8KLQotY2xlYW46IG1vc3RseWNsZWFuCi0KLWRpc3RjbGVhbjogY2xlYW4KLQlybSAtZiBNYWtlZmlsZSBNYWtlZmlsZS5pbiBQT1RGSUxFUyAqLm1vCi0KLW1haW50YWluZXItY2xlYW46IGRpc3RjbGVhbgotCUBlY2hvICJUaGlzIGNvbW1hbmQgaXMgaW50ZW5kZWQgZm9yIG1haW50YWluZXJzIHRvIHVzZTsiCi0JQGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBzcGVjaWFsIHRvb2xzIHRvIHJlYnVpbGQuIgotCXJtIC1mIHN0YW1wLXBvICQoR01PRklMRVMpCi0KLWRpc3RkaXIgPSAkKHRvcF9idWlsZGRpcikvJChQQUNLQUdFKS0kKFZFUlNJT04pLyQoc3ViZGlyKQotZGlzdCBkaXN0ZGlyOgotCXRlc3QgLXogIiQoRElTVEZJTEVTREVQUykiIHx8ICQoTUFLRSkgJChESVNURklMRVNERVBTKQotCUAkKE1BS0UpIGRpc3QyCi0jIFRoaXMgaXMgYSBzZXBhcmF0ZSB0YXJnZXQgYmVjYXVzZSAndXBkYXRlLXBvJyBtdXN0IGJlIGV4ZWN1dGVkIGJlZm9yZS4KLWRpc3QyOiBzdGFtcC1wbyAkKERJU1RGSUxFUykKLQlkaXN0cz0iJChESVNURklMRVMpIjsgXAotCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKLQkgIGRpc3RzPSIkJGRpc3RzIE1ha2V2YXJzLnRlbXBsYXRlIjsgXAotCWZpOyBcCi0JaWYgdGVzdCAtZiAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgdGhlbiBcCi0JICBkaXN0cz0iJCRkaXN0cyAkKERPTUFJTikucG90IHN0YW1wLXBvIjsgXAotCWZpOyBcCi0JaWYgdGVzdCAtZiAkKHNyY2RpcikvQ2hhbmdlTG9nOyB0aGVuIFwKLQkgIGRpc3RzPSIkJGRpc3RzIENoYW5nZUxvZyI7IFwKLQlmaTsgXAotCWZvciBpIGluIDAgMSAyIDMgNCA1IDYgNyA4IDk7IGRvIFwKLQkgIGlmIHRlc3QgLWYgJChzcmNkaXIpL0NoYW5nZUxvZy4kJGk7IHRoZW4gXAotCSAgICBkaXN0cz0iJCRkaXN0cyBDaGFuZ2VMb2cuJCRpIjsgXAotCSAgZmk7IFwKLQlkb25lOyBcCi0JaWYgdGVzdCAtZiAkKHNyY2RpcikvTElOR1VBUzsgdGhlbiBkaXN0cz0iJCRkaXN0cyBMSU5HVUFTIjsgZmk7IFwKLQlmb3IgZmlsZSBpbiAkJGRpc3RzOyBkbyBcCi0JICBpZiB0ZXN0IC1mICQkZmlsZTsgdGhlbiBcCi0JICAgIGNwIC1wICQkZmlsZSAkKGRpc3RkaXIpIHx8IGV4aXQgMTsgXAotCSAgZWxzZSBcCi0JICAgIGNwIC1wICQoc3JjZGlyKS8kJGZpbGUgJChkaXN0ZGlyKSB8fCBleGl0IDE7IFwKLQkgIGZpOyBcCi0JZG9uZQotCi11cGRhdGUtcG86IE1ha2VmaWxlCi0JJChNQUtFKSAkKERPTUFJTikucG90LXVwZGF0ZQotCXRlc3QgLXogIiQoVVBEQVRFUE9GSUxFUykiIHx8ICQoTUFLRSkgJChVUERBVEVQT0ZJTEVTKQotCSQoTUFLRSkgdXBkYXRlLWdtbwotCi0jIEdlbmVyYWwgcnVsZSBmb3IgY3JlYXRpbmcgUE8gZmlsZXMuCi0KLS5ub3AucG8tY3JlYXRlOgotCUBsYW5nPWBlY2hvICRAIHwgc2VkIC1lICdzL1wucG8tY3JlYXRlJCQvLydgOyBcCi0JZWNobyAiRmlsZSAkJGxhbmcucG8gZG9lcyBub3QgZXhpc3QuIElmIHlvdSBhcmUgYSB0cmFuc2xhdG9yLCB5b3UgY2FuIGNyZWF0ZSBpdCB0aHJvdWdoICdtc2dpbml0Jy4iIDE+JjI7IFwKLQlleGl0IDEKLQotIyBHZW5lcmFsIHJ1bGUgZm9yIHVwZGF0aW5nIFBPIGZpbGVzLgotCi0ubm9wLnBvLXVwZGF0ZToKLQlAbGFuZz1gZWNobyAkQCB8IHNlZCAtZSAncy9cLnBvLXVwZGF0ZSQkLy8nYDsgXAotCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiICYmIHRlc3QgIiQoQ1JPU1NfQ09NUElMSU5HKSIgIT0gInllcyI7IHRoZW4gUEFUSD1gcHdkYC8uLi9zcmM6JCRQQVRIOyBmaTsgXAotCXRtcGRpcj1gcHdkYDsgXAotCWVjaG8gIiQkbGFuZzoiOyBcCi0JdGVzdCAiJChzcmNkaXIpIiA9IC4gJiYgY2RjbWQ9IiIgfHwgY2RjbWQ9ImNkICQoc3JjZGlyKSAmJiAiOyBcCi0JZWNobyAiJCR7Y2RjbWR9JChNU0dNRVJHRSkgJChNU0dNRVJHRV9PUFRJT05TKSAtLWxhbmc9JCRsYW5nICQkbGFuZy5wbyAkKERPTUFJTikucG90IC1vICQkbGFuZy5uZXcucG8iOyBcCi0JY2QgJChzcmNkaXIpOyBcCi0JaWYgeyBjYXNlIGAkKE1TR01FUkdFKSAtLXZlcnNpb24gfCBzZWQgMXEgfCBzZWQgLWUgJ3MsXlteMC05XSosLCdgIGluIFwKLQkgICAgICAgJycgfCAwLlswLTldIHwgMC5bMC05XS4qIHwgMC4xWzAtN10gfCAwLjFbMC03XS4qKSBcCi0JICAgICAgICAgJChNU0dNRVJHRSkgJChNU0dNRVJHRV9PUFRJT05TKSAtbyAkJHRtcGRpci8kJGxhbmcubmV3LnBvICQkbGFuZy5wbyAkKERPTUFJTikucG90OzsgXAotCSAgICAgICAqKSBcCi0JICAgICAgICAgJChNU0dNRVJHRSkgJChNU0dNRVJHRV9PUFRJT05TKSAtLWxhbmc9JCRsYW5nIC1vICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gJCRsYW5nLnBvICQoRE9NQUlOKS5wb3Q7OyBcCi0JICAgICBlc2FjOyBcCi0JICAgfTsgdGhlbiBcCi0JICBpZiBjbXAgJCRsYW5nLnBvICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKLQkgICAgcm0gLWYgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbzsgXAotCSAgZWxzZSBcCi0JICAgIGlmIG12IC1mICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gJCRsYW5nLnBvOyB0aGVuIFwKLQkgICAgICA6OyBcCi0JICAgIGVsc2UgXAotCSAgICAgIGVjaG8gIm1zZ21lcmdlIGZvciAkJGxhbmcucG8gZmFpbGVkOiBjYW5ub3QgbW92ZSAkJHRtcGRpci8kJGxhbmcubmV3LnBvIHRvICQkbGFuZy5wbyIgMT4mMjsgXAotCSAgICAgIGV4aXQgMTsgXAotCSAgICBmaTsgXAotCSAgZmk7IFwKLQllbHNlIFwKLQkgIGVjaG8gIm1zZ21lcmdlIGZvciAkJGxhbmcucG8gZmFpbGVkISIgMT4mMjsgXAotCSAgcm0gLWYgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbzsgXAotCWZpCi0KLSQoRFVNTVlQT0ZJTEVTKToKLQotdXBkYXRlLWdtbzogTWFrZWZpbGUgJChHTU9GSUxFUykKLQlAOgotCi0jIFJlY3JlYXRlIE1ha2VmaWxlIGJ5IGludm9raW5nIGNvbmZpZy5zdGF0dXMuIEV4cGxpY2l0bHkgaW52b2tlIHRoZSBzaGVsbCwKLSMgYmVjYXVzZSBleGVjdXRpb24gcGVybWlzc2lvbiBiaXRzIG1heSBub3Qgd29yayBvbiB0aGUgY3VycmVudCBmaWxlIHN5c3RlbS4KLSMgVXNlIEBTSEVMTEAsIHdoaWNoIGlzIHRoZSBzaGVsbCBkZXRlcm1pbmVkIGJ5IGF1dG9jb25mIGZvciB0aGUgdXNlIGJ5IGl0cwotIyBzY3JpcHRzLCBub3QgJChTSEVMTCkgd2hpY2ggaXMgaGFyZHdpcmVkIHRvIC9iaW4vc2ggYW5kIG1heSBiZSBkZWZpY2llbnQuCi1NYWtlZmlsZTogTWFrZWZpbGUuaW4uaW4gTWFrZXZhcnMgJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgQFBPTUFLRUZJTEVERVBTQAotCWNkICQodG9wX2J1aWxkZGlyKSBcCi0JICAmJiBAU0hFTExAIC4vY29uZmlnLnN0YXR1cyAkKHN1YmRpcikvJEAuaW4gcG8tZGlyZWN0b3JpZXMKLQotZm9yY2U6Ci0KLSMgVGVsbCB2ZXJzaW9ucyBbMy41OSwzLjYzKSBvZiBHTlUgbWFrZSBub3QgdG8gZXhwb3J0IGFsbCB2YXJpYWJsZXMuCi0jIE90aGVyd2lzZSBhIHN5c3RlbSBsaW1pdCAoZm9yIFN5c1YgYXQgbGVhc3QpIG1heSBiZSBleGNlZWRlZC4KLS5OT0VYUE9SVDoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvYWNsb2NhbC50Z3ogYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL2FjbG9jYWwudGd6CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YjJkMWY1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvYWNsb2NhbC50Z3oKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL2NvbmZpZy5ycGF0aCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvY29uZmlnLnJwYXRoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA5ODE4M2ZmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvY29uZmlnLnJwYXRoCisrKyAvZGV2L251bGwKQEAgLTEsNjg0ICswLDAgQEAKLSMhIC9iaW4vc2gKLSMgT3V0cHV0IGEgc3lzdGVtIGRlcGVuZGVudCBzZXQgb2YgdmFyaWFibGVzLCBkZXNjcmliaW5nIGhvdyB0byBzZXQgdGhlCi0jIHJ1biB0aW1lIHNlYXJjaCBwYXRoIG9mIHNoYXJlZCBsaWJyYXJpZXMgaW4gYW4gZXhlY3V0YWJsZS4KLSMKLSMgICBDb3B5cmlnaHQgMTk5Ni0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIyAgIFRha2VuIGZyb20gR05VIGxpYnRvb2wsIDIwMDEKLSMgICBPcmlnaW5hbGx5IGJ5IEdvcmRvbiBNYXR6aWdrZWl0IDxnb3JkQGdudS5haS5taXQuZWR1PiwgMTk5NgotIwotIyAgIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCi0jICAgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0Ci0jICAgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCi0jCi0jIFRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgdG8gdGhpcyBmaWxlIGlzIHRoZSBjYW5vbmljYWwgaG9zdCBzcGVjaWZpY2F0aW9uLAotIyAgICBDUFVfVFlQRS1NQU5VRkFDVFVSRVItT1BFUkFUSU5HX1NZU1RFTQotIyBvcgotIyAgICBDUFVfVFlQRS1NQU5VRkFDVFVSRVItS0VSTkVMLU9QRVJBVElOR19TWVNURU0KLSMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBDQywgR0NDLCBMREZMQUdTLCBMRCwgd2l0aF9nbnVfbGQKLSMgc2hvdWxkIGJlIHNldCBieSB0aGUgY2FsbGVyLgotIwotIyBUaGUgc2V0IG9mIGRlZmluZWQgdmFyaWFibGVzIGlzIGF0IHRoZSBlbmQgb2YgdGhpcyBzY3JpcHQuCi0KLSMgS25vd24gbGltaXRhdGlvbnM6Ci0jIC0gT24gSVJJWCA2LjUgd2l0aCBDQz0iY2MiLCB0aGUgcnVuIHRpbWUgc2VhcmNoIHBhdGNoIG11c3Qgbm90IGJlIGxvbmdlcgotIyAgIHRoYW4gMjU2IGJ5dGVzLCBvdGhlcndpc2UgdGhlIGNvbXBpbGVyIGRyaXZlciB3aWxsIGR1bXAgY29yZS4gVGhlIG9ubHkKLSMgICBrbm93biB3b3JrYXJvdW5kIGlzIHRvIGNob29zZSBzaG9ydGVyIGRpcmVjdG9yeSBuYW1lcyBmb3IgdGhlIGJ1aWxkCi0jICAgZGlyZWN0b3J5IGFuZC9vciB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeS4KLQotIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgJy5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi0jIHdoaWNoIG5lZWRzICcubGliJykuCi1saWJleHQ9YQotc2hyZXh0PS5zbwotCi1ob3N0PSIkMSIKLWhvc3RfY3B1PWBlY2hvICIkaG9zdCIgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYAotaG9zdF92ZW5kb3I9YGVjaG8gIiRob3N0IiB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wyLydgCi1ob3N0X29zPWBlY2hvICIkaG9zdCIgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYAotCi0jIENvZGUgdGFrZW4gZnJvbSBsaWJ0b29sLm00J3MgX0xUX0NDX0JBU0VOQU1FLgotCi1mb3IgY2NfdGVtcCBpbiAkQ0MiIjsgZG8KLSAgY2FzZSAkY2NfdGVtcCBpbgotICAgIGNvbXBpbGUgfCAqW1xcL11jb21waWxlIHwgY2NhY2hlIHwgKltcXC9dY2NhY2hlICkgOzsKLSAgICBkaXN0Y2MgfCAqW1xcL11kaXN0Y2MgfCBwdXJpZnkgfCAqW1xcL11wdXJpZnkgKSA7OwotICAgIFwtKikgOzsKLSAgICAqKSBicmVhazs7Ci0gIGVzYWMKLWRvbmUKLWNjX2Jhc2VuYW1lPWBlY2hvICIkY2NfdGVtcCIgfCBzZWQgLWUgJ3MlXi4qLyUlJ2AKLQotIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIF9MVF9DT01QSUxFUl9QSUMuCi0KLXdsPQotaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgd2w9Jy1XbCwnCi1lbHNlCi0gIGNhc2UgIiRob3N0X29zIiBpbgotICAgIGFpeCopCi0gICAgICB3bD0nLVdsLCcKLSAgICAgIDs7Ci0gICAgbWluZ3cqIHwgY3lnd2luKiB8IHB3MzIqIHwgb3MyKiB8IGNlZ2NjKikKLSAgICAgIDs7Ci0gICAgaHB1eDkqIHwgaHB1eDEwKiB8IGhwdXgxMSopCi0gICAgICB3bD0nLVdsLCcKLSAgICAgIDs7Ci0gICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgIHdsPSctV2wsJwotICAgICAgOzsKLSAgICBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCi0gICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgICBlY2MqKQotICAgICAgICAgIHdsPSctV2wsJwotICAgICAgICAgIDs7Ci0gICAgICAgIGljYyogfCBpZm9ydCopCi0gICAgICAgICAgd2w9Jy1XbCwnCi0gICAgICAgICAgOzsKLSAgICAgICAgbGY5NSopCi0gICAgICAgICAgd2w9Jy1XbCwnCi0gICAgICAgICAgOzsKLSAgICAgICAgbmFnZm9yKikKLSAgICAgICAgICB3bD0nLVdsLC1XbCwsJwotICAgICAgICAgIDs7Ci0gICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICB3bD0nLVdsLCcKLSAgICAgICAgICA7OwotICAgICAgICBjY2MqKQotICAgICAgICAgIHdsPSctV2wsJwotICAgICAgICAgIDs7Ci0gICAgICAgIHhsKiB8IGJneGwqIHwgYmdmKiB8IG1waXhsKikKLSAgICAgICAgICB3bD0nLVdsLCcKLSAgICAgICAgICA7OwotICAgICAgICBjb21vKQotICAgICAgICAgIHdsPSctbG9wdD0nCi0gICAgICAgICAgOzsKLSAgICAgICAgKikKLSAgICAgICAgICBjYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KLSAgICAgICAgICAgICpTdW5cIEYqIHwgKlN1bipGb3J0cmFuKikKLSAgICAgICAgICAgICAgd2w9Ci0gICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAqU3VuXCBDKikKLSAgICAgICAgICAgICAgd2w9Jy1XbCwnCi0gICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgZXNhYwotICAgICAgICAgIDs7Ci0gICAgICBlc2FjCi0gICAgICA7OwotICAgIG5ld3NvczYpCi0gICAgICA7OwotICAgICpudG8qIHwgKnFueCopCi0gICAgICA7OwotICAgIG9zZjMqIHwgb3NmNCogfCBvc2Y1KikKLSAgICAgIHdsPSctV2wsJwotICAgICAgOzsKLSAgICByZG9zKikKLSAgICAgIDs7Ci0gICAgc29sYXJpcyopCi0gICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCi0gICAgICAgICAgd2w9Jy1Rb3B0aW9uIGxkICcKLSAgICAgICAgICA7OwotICAgICAgICAqKQotICAgICAgICAgIHdsPSctV2wsJwotICAgICAgICAgIDs7Ci0gICAgICBlc2FjCi0gICAgICA7OwotICAgIHN1bm9zNCopCi0gICAgICB3bD0nLVFvcHRpb24gbGQgJwotICAgICAgOzsKLSAgICBzeXN2NCB8IHN5c3Y0LjJ1dzIqIHwgc3lzdjQuMyopCi0gICAgICB3bD0nLVdsLCcKLSAgICAgIDs7Ci0gICAgc3lzdjQqTVAqKQotICAgICAgOzsKLSAgICBzeXN2NSogfCB1bml4d2FyZSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgT3BlblVOSVgqKQotICAgICAgd2w9Jy1XbCwnCi0gICAgICA7OwotICAgIHVuaWNvcyopCi0gICAgICB3bD0nLVdsLCcKLSAgICAgIDs7Ci0gICAgdXRzNCopCi0gICAgICA7OwotICBlc2FjCi1maQotCi0jIENvZGUgdGFrZW4gZnJvbSBsaWJ0b29sLm00J3MgX0xUX0xJTktFUl9TSExJQlMuCi0KLWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci1oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPQotaGFyZGNvZGVfZGlyZWN0PW5vCi1oYXJkY29kZV9taW51c19MPW5vCi0KLWNhc2UgIiRob3N0X29zIiBpbgotICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgIyBGSVhNRTogdGhlIE1TVkMrKyBwb3J0IGhhc24ndCBiZWVuIHRlc3RlZCBpbiBhIGxvb29vbmcgdGltZQotICAgICMgV2hlbiBub3QgdXNpbmcgZ2NjLCB3ZSBjdXJyZW50bHkgYXNzdW1lIHRoYXQgd2UgYXJlIHVzaW5nCi0gICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSAgICAgIHdpdGhfZ251X2xkPW5vCi0gICAgZmkKLSAgICA7OwotICBpbnRlcml4KikKLSAgICAjIHdlIGp1c3QgaG9wZS9hc3N1bWUgdGhpcyBpcyBnY2MgYW5kIG5vdCBjODkgKD0gTVNWQysrKQotICAgIHdpdGhfZ251X2xkPXllcwotICAgIDs7Ci0gIG9wZW5ic2QqKQotICAgIHdpdGhfZ251X2xkPW5vCi0gICAgOzsKLWVzYWMKLQotbGRfc2hsaWJzPXllcwotaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgotICAjIFNldCBzb21lIGRlZmF1bHRzIGZvciBHTlUgbGQgd2l0aCBzaGFyZWQgbGlicmFyeSBzdXBwb3J0LiBUaGVzZQotICAjIGFyZSByZXNldCBsYXRlciBpZiBzaGFyZWQgbGlicmFyaWVzIGFyZSBub3Qgc3VwcG9ydGVkLiBQdXR0aW5nIHRoZW0KLSAgIyBoZXJlIGFsbG93cyB0aGVtIHRvIGJlIG92ZXJyaWRkZW4gaWYgbmVjZXNzYXJ5LgotICAjIFVubGlrZSBsaWJ0b29sLCB3ZSB1c2UgLXJwYXRoIGhlcmUsIG5vdCAtLXJwYXRoLCBzaW5jZSB0aGUgZG9jdW1lbnRlZAotICAjIG9wdGlvbiBvZiBHTlUgbGQgaXMgY2FsbGVkIC1ycGF0aCwgbm90IC0tcnBhdGguCi0gIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgY2FzZSAiJGhvc3Rfb3MiIGluCi0gICAgYWl4WzMtOV0qKQotICAgICAgIyBPbiBBSVgvUFBDLCB0aGUgR05VIGxpbmtlciBpcyB2ZXJ5IGJyb2tlbgotICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiAhPSBpYTY0OyB0aGVuCi0gICAgICAgIGxkX3NobGlicz1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgYW1pZ2FvcyopCi0gICAgICBjYXNlICIkaG9zdF9jcHUiIGluCi0gICAgICAgIHBvd2VycGMpCi0gICAgICAgICAgOzsKLSAgICAgICAgbTY4aykKLSAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0gICAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgICAgICA7OwotICAgICAgZXNhYwotICAgICAgOzsKLSAgICBiZW9zKikKLSAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICA6Ci0gICAgICBlbHNlCi0gICAgICAgIGxkX3NobGlicz1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICA6Ci0gICAgICBlbHNlCi0gICAgICAgIGxkX3NobGlicz1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgaGFpa3UqKQotICAgICAgOzsKLSAgICBpbnRlcml4WzMtOV0qKQotICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCwkbGliZGlyJwotICAgICAgOzsKLSAgICBnbnUqIHwgbGludXgqIHwgdHBmKiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKLSAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICA6Ci0gICAgICBlbHNlCi0gICAgICAgIGxkX3NobGlicz1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgbmV0YnNkKikKLSAgICAgIDs7Ci0gICAgc29sYXJpcyopCi0gICAgICBpZiAkTEQgLXYgMj4mMSB8IGdyZXAgJ0JGRCAyXC44JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICBsZF9zaGxpYnM9bm8KLSAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgIDoKLSAgICAgIGVsc2UKLSAgICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICBmaQotICAgICAgOzsKLSAgICBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqKQotICAgICAgY2FzZSBgJExEIC12IDI+JjFgIGluCi0gICAgICAgICpcIFswMV0uKiB8ICpcIDIuWzAtOV0uKiB8ICpcIDIuMVswLTVdLiopCi0gICAgICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICAgICAgOzsKLSAgICAgICAgKikKLSAgICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9J2B0ZXN0IC16ICIkU0NPQUJTUEFUSCIgJiYgZWNobyAke3dsfS1ycGF0aCwkbGliZGlyYCcKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBsZF9zaGxpYnM9bm8KLSAgICAgICAgICBmaQotICAgICAgICAgIDs7Ci0gICAgICBlc2FjCi0gICAgICA7OwotICAgIHN1bm9zNCopCi0gICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICA7OwotICAgICopCi0gICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgOgotICAgICAgZWxzZQotICAgICAgICBsZF9zaGxpYnM9bm8KLSAgICAgIGZpCi0gICAgICA7OwotICBlc2FjCi0gIGlmIHRlc3QgIiRsZF9zaGxpYnMiID0gbm87IHRoZW4KLSAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotICBmaQotZWxzZQotICBjYXNlICIkaG9zdF9vcyIgaW4KLSAgICBhaXgzKikKLSAgICAgICMgTm90ZTogdGhpcyBsaW5rZXIgaGFyZGNvZGVzIHRoZSBkaXJlY3RvcmllcyBpbiBMSUJQQVRIIGlmIHRoZXJlCi0gICAgICAjIGFyZSBubyBkaXJlY3RvcmllcyBzcGVjaWZpZWQgYnkgLUwuCi0gICAgICBoYXJkY29kZV9taW51c19MPXllcwotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgICAgIyBOZWl0aGVyIGRpcmVjdCBoYXJkY29kaW5nIG5vciBzdGF0aWMgbGlua2luZyBpcyBzdXBwb3J0ZWQgd2l0aCBhCi0gICAgICAgICMgYnJva2VuIGNvbGxlY3QyLgotICAgICAgICBoYXJkY29kZV9kaXJlY3Q9dW5zdXBwb3J0ZWQKLSAgICAgIGZpCi0gICAgICA7OwotICAgIGFpeFs0LTldKikKLSAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCi0gICAgICAgICMgT24gSUE2NCwgdGhlIGxpbmtlciBkb2VzIHJ1biB0aW1lIGxpbmtpbmcgYnkgZGVmYXVsdCwgc28gd2UgZG9uJ3QKLSAgICAgICAgIyBoYXZlIHRvIGRvIGFueXRoaW5nIHNwZWNpYWwuCi0gICAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KLSAgICAgIGVsc2UKLSAgICAgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz1ubwotICAgICAgICAjIFRlc3QgaWYgd2UgYXJlIHRyeWluZyB0byB1c2UgcnVuIHRpbWUgbGlua2luZyBvciBub3JtYWwKLSAgICAgICAgIyBBSVggc3R5bGUgbGlua2luZy4gSWYgLWJydGwgaXMgc29tZXdoZXJlIGluIExERkxBR1MsIHdlCi0gICAgICAgICMgbmVlZCB0byBkbyBydW50aW1lIGxpbmtpbmcuCi0gICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bMjNdfGFpeDQuWzIzXS4qfGFpeFs1LTldKikKLSAgICAgICAgICBmb3IgbGRfZmxhZyBpbiAkTERGTEFHUzsgZG8KLSAgICAgICAgICAgIGlmICh0ZXN0ICRsZF9mbGFnID0gIi1icnRsIiB8fCB0ZXN0ICRsZF9mbGFnID0gIi1XbCwtYnJ0bCIpOyB0aGVuCi0gICAgICAgICAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9eWVzCi0gICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBmaQotICAgICAgICAgIGRvbmUKLSAgICAgICAgICA7OwotICAgICAgICBlc2FjCi0gICAgICBmaQotICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0nOicKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bMDEyXXxhaXg0LlswMTJdLiopCi0gICAgICAgICAgY29sbGVjdDJuYW1lPWAke0NDfSAtcHJpbnQtcHJvZy1uYW1lPWNvbGxlY3QyYAotICAgICAgICAgIGlmIHRlc3QgLWYgIiRjb2xsZWN0Mm5hbWUiICYmIFwKLSAgICAgICAgICAgIHN0cmluZ3MgIiRjb2xsZWN0Mm5hbWUiIHwgZ3JlcCByZXNvbHZlX2xpYl9uYW1lID4vZGV2L251bGwKLSAgICAgICAgICB0aGVuCi0gICAgICAgICAgICAjIFdlIGhhdmUgcmV3b3JrZWQgY29sbGVjdDIKLSAgICAgICAgICAgIDoKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAjIFdlIGhhdmUgb2xkIGNvbGxlY3QyCi0gICAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9dW5zdXBwb3J0ZWQKLSAgICAgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0gICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0gICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPQotICAgICAgICAgIGZpCi0gICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgZmkKLSAgICAgICMgQmVnaW4gX0xUX0FDX1NZU19MSUJQQVRIX0FJWC4KLSAgICAgIGVjaG8gJ2ludCBtYWluICgpIHsgcmV0dXJuIDA7IH0nID4gY29uZnRlc3QuYwotICAgICAgJHtDQ30gJHtMREZMQUdTfSBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0Ci0gICAgICBhaXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCAyPi9kZXYvbnVsbCB8IHNlZCAtbiAtZSAnL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geyAvXjAvIHsgcy9eMCAgKlwoLipcKSQvXDEvOyBwOyB9Ci19J2AKLSAgICAgIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLSAgICAgICAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QgMj4vZGV2L251bGwgfCBzZWQgLW4gLWUgJy9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsgL14wLyB7IHMvXjAgICpcKC4qXCkkL1wxLzsgcDsgfQotfSdgCi0gICAgICBmaQotICAgICAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotICAgICAgICBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiIKLSAgICAgIGZpCi0gICAgICBybSAtZiBjb25mdGVzdC5jIGNvbmZ0ZXN0Ci0gICAgICAjIEVuZCBfTFRfQUNfU1lTX0xJQlBBVEhfQUlYLgotICAgICAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCi0gICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICBlbHNlCi0gICAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCi0gICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tUiAkbGliZGlyOi91c3IvbGliOi9saWInCi0gICAgICAgIGVsc2UKLSAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICBmaQotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgYW1pZ2FvcyopCi0gICAgICBjYXNlICIkaG9zdF9jcHUiIGluCi0gICAgICAgIHBvd2VycGMpCi0gICAgICAgICAgOzsKLSAgICAgICAgbTY4aykKLSAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0gICAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgICAgICA7OwotICAgICAgZXNhYwotICAgICAgOzsKLSAgICBic2RpWzQ1XSopCi0gICAgICA7OwotICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICMgV2hlbiBub3QgdXNpbmcgZ2NjLCB3ZSBjdXJyZW50bHkgYXNzdW1lIHRoYXQgd2UgYXJlIHVzaW5nCi0gICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0gICAgICBsaWJleHQ9bGliCi0gICAgICA7OwotICAgIGRhcndpbiogfCByaGFwc29keSopCi0gICAgICBoYXJkY29kZV9kaXJlY3Q9bm8KLSAgICAgIGlmIHsgY2FzZSAkY2NfYmFzZW5hbWUgaW4gaWZvcnQqKSB0cnVlOzsgKikgdGVzdCAiJEdDQyIgPSB5ZXM7OyBlc2FjOyB9OyB0aGVuCi0gICAgICAgIDoKLSAgICAgIGVsc2UKLSAgICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICBmaQotICAgICAgOzsKLSAgICBkZ3V4KikKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSAgICAgIDs7Ci0gICAgZnJlZWJzZDIuWzAxXSopCi0gICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICBoYXJkY29kZV9taW51c19MPXllcwotICAgICAgOzsKLSAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICA7OwotICAgIGhwdXg5KikKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwotICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06Ci0gICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAotICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCi0gICAgICBoYXJkY29kZV9taW51c19MPXllcwotICAgICAgOzsKLSAgICBocHV4MTAqKQotICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0gICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwotICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKLSAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAotICAgICAgICAjIGJ1dCBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KLSAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgIGZpCi0gICAgICA7OwotICAgIGhwdXgxMSopCi0gICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLSAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0rYiAke3dsfSRsaWJkaXInCi0gICAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotICAgICAgICBjYXNlICRob3N0X2NwdSBpbgotICAgICAgICAgIGhwcGEqNjQqfGlhNjQqKQotICAgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vCi0gICAgICAgICAgICA7OwotICAgICAgICAgICopCi0gICAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICAgICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAotICAgICAgICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCi0gICAgICAgICAgICBoYXJkY29kZV9taW51c19MPXllcwotICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotICAgICAgOzsKLSAgICBuZXRic2QqKQotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgOzsKLSAgICBuZXdzb3M2KQotICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06Ci0gICAgICA7OwotICAgICpudG8qIHwgKnFueCopCi0gICAgICA7OwotICAgIG9wZW5ic2QqKQotICAgICAgaWYgdGVzdCAtZiAvdXNyL2xpYmV4ZWMvbGQuc287IHRoZW4KLSAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgICBpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KLSAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCwkbGliZGlyJwotICAgICAgICBlbHNlCi0gICAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCi0gICAgICAgICAgICBvcGVuYnNkWzAxXS4qIHwgb3BlbmJzZDIuWzAtN10gfCBvcGVuYnNkMi5bMC03XS4qKQotICAgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAqKQotICAgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCwkbGliZGlyJwotICAgICAgICAgICAgICA7OwotICAgICAgICAgIGVzYWMKLSAgICAgICAgZmkKLSAgICAgIGVsc2UKLSAgICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICBmaQotICAgICAgOzsKLSAgICBvczIqKQotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgIDs7Ci0gICAgb3NmMyopCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKLSAgICAgIDs7Ci0gICAgb3NmNCogfCBvc2Y1KikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgIGVsc2UKLSAgICAgICAgIyBCb3RoIGNjIGFuZCBjeHggY29tcGlsZXIgc3VwcG9ydCAtcnBhdGggZGlyZWN0bHkKLSAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLXJwYXRoICRsaWJkaXInCi0gICAgICBmaQotICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06Ci0gICAgICA7OwotICAgIHNvbGFyaXMqKQotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgOzsKLSAgICBzdW5vczQqKQotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgIDs7Ci0gICAgc3lzdjQpCi0gICAgICBjYXNlICRob3N0X3ZlbmRvciBpbgotICAgICAgICBzbmkpCi0gICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcyAjIGlzIHRoaXMgcmVhbGx5IHRydWU/Pz8KLSAgICAgICAgICA7OwotICAgICAgICBzaWVtZW5zKQotICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubwotICAgICAgICAgIDs7Ci0gICAgICAgIG1vdG9yb2xhKQotICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubyAjTW90b3JvbGEgbWFudWFsIHNheXMgeWVzLCBidXQgbXkgdGVzdHMgc2F5IHRoZXkgbGllCi0gICAgICAgICAgOzsKLSAgICAgIGVzYWMKLSAgICAgIDs7Ci0gICAgc3lzdjQuMyopCi0gICAgICA7OwotICAgIHN5c3Y0Kk1QKikKLSAgICAgIGlmIHRlc3QgLWQgL3Vzci9uZWM7IHRoZW4KLSAgICAgICAgbGRfc2hsaWJzPXllcwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgc3lzdjQqdXcyKiB8IHN5c3Y1T3BlblVOSVgqIHwgc3lzdjVVbml4V2FyZTcuWzAxXS5bMTBdKiB8IHVuaXh3YXJlNyogfCBzY28zLjJ2NS4wLlswMjRdKikKLSAgICAgIDs7Ci0gICAgc3lzdjUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KikKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9J2B0ZXN0IC16ICIkU0NPQUJTUEFUSCIgJiYgZWNobyAke3dsfS1SLCRsaWJkaXJgJwotICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0nOicKLSAgICAgIDs7Ci0gICAgdXRzNCopCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0gICAgICA7OwotICAgICopCi0gICAgICBsZF9zaGxpYnM9bm8KLSAgICAgIDs7Ci0gIGVzYWMKLWZpCi0KLSMgQ2hlY2sgZHluYW1pYyBsaW5rZXIgY2hhcmFjdGVyaXN0aWNzCi0jIENvZGUgdGFrZW4gZnJvbSBsaWJ0b29sLm00J3MgX0xUX1NZU19EWU5BTUlDX0xJTktFUi4KLSMgVW5saWtlIGxpYnRvb2wubTQsIGhlcmUgd2UgZG9uJ3QgY2FyZSBhYm91dCBfYWxsXyBuYW1lcyBvZiB0aGUgbGlicmFyeSwgYnV0Ci0jIG9ubHkgYWJvdXQgdGhlIG9uZSB0aGUgbGlua2VyIGZpbmRzIHdoZW4gcGFzc2VkIC1sTkFNRS4gVGhpcyBpcyB0aGUgbGFzdAotIyBlbGVtZW50IG9mIGxpYnJhcnlfbmFtZXNfc3BlYyBpbiBsaWJ0b29sLm00LCBvciBwb3NzaWJseSB0d28gb2YgdGhlbSBpZiB0aGUKLSMgbGlua2VyIGhhcyBzcGVjaWFsIHNlYXJjaCBydWxlcy4KLWxpYnJhcnlfbmFtZXNfc3BlYz0gICAgICAjIHRoZSBsYXN0IGVsZW1lbnQgb2YgbGlicmFyeV9uYW1lc19zcGVjIGluIGxpYnRvb2wubTQKLWxpYm5hbWVfc3BlYz0nbGliJG5hbWUnCi1jYXNlICIkaG9zdF9vcyIgaW4KLSAgYWl4MyopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5hJwotICAgIDs7Ci0gIGFpeFs0LTldKikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBhbWlnYW9zKikKLSAgICBjYXNlICIkaG9zdF9jcHUiIGluCi0gICAgICBwb3dlcnBjKikKLSAgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnIDs7Ci0gICAgICBtNjhrKQotICAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmEnIDs7Ci0gICAgZXNhYwotICAgIDs7Ci0gIGJlb3MqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIGJzZGlbNDVdKikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgc2hyZXh0PS5kbGwKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hICRsaWJuYW1lLmxpYicKLSAgICA7OwotICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotICAgIHNocmV4dD0uZHlsaWIKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBkZ3V4KikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBmcmVlYnNkWzIzXS4qKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JHZlcnN1ZmZpeCcKLSAgICA7OwotICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgZ251KikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBoYWlrdSopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgaHB1eDkqIHwgaHB1eDEwKiB8IGhwdXgxMSopCi0gICAgY2FzZSAkaG9zdF9jcHUgaW4KLSAgICAgIGlhNjQqKQotICAgICAgICBzaHJleHQ9LnNvCi0gICAgICAgIDs7Ci0gICAgICBocHBhKjY0KikKLSAgICAgICAgc2hyZXh0PS5zbAotICAgICAgICA7OwotICAgICAgKikKLSAgICAgICAgc2hyZXh0PS5zbAotICAgICAgICA7OwotICAgIGVzYWMKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBpbnRlcml4WzMtOV0qKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgY2FzZSAiJGhvc3Rfb3MiIGluCi0gICAgICBpcml4NSogfCBub25zdG9wdXgqKQotICAgICAgICBsaWJzdWZmPSBzaGxpYnN1ZmY9Ci0gICAgICAgIDs7Ci0gICAgICAqKQotICAgICAgICBjYXNlICRMRCBpbgotICAgICAgICAgICotMzJ8KiItMzIgInwqLW1lbGYzMmJzbWlwfCoiLW1lbGYzMmJzbWlwICIpIGxpYnN1ZmY9IHNobGlic3VmZj0gOzsKLSAgICAgICAgICAqLW4zMnwqIi1uMzIgInwqLW1lbGYzMmJtaXBuMzJ8KiItbWVsZjMyYm1pcG4zMiAiKSBsaWJzdWZmPTMyIHNobGlic3VmZj1OMzIgOzsKLSAgICAgICAgICAqLTY0fCoiLTY0ICJ8Ki1tZWxmNjRibWlwfCoiLW1lbGY2NGJtaXAgIikgbGlic3VmZj02NCBzaGxpYnN1ZmY9NjQgOzsKLSAgICAgICAgICAqKSBsaWJzdWZmPSBzaGxpYnN1ZmY9IDs7Ci0gICAgICAgIGVzYWMKLSAgICAgICAgOzsKLSAgICBlc2FjCi0gICAgOzsKLSAgbGludXgqb2xkbGQqIHwgbGludXgqYW91dCogfCBsaW51eCpjb2ZmKikKLSAgICA7OwotICBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAga25ldGJzZCotZ251KQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIG5ldGJzZCopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgbmV3c29zNikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICAqbnRvKiB8ICpxbngqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIG9wZW5ic2QqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JHZlcnN1ZmZpeCcKLSAgICA7OwotICBvczIqKQotICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0gICAgc2hyZXh0PS5kbGwKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmEnCi0gICAgOzsKLSAgb3NmMyogfCBvc2Y0KiB8IG9zZjUqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIHJkb3MqKQotICAgIDs7Ci0gIHNvbGFyaXMqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIHN1bm9zNCopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQkdmVyc3VmZml4JwotICAgIDs7Ci0gIHN5c3Y0IHwgc3lzdjQuMyopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgc3lzdjQqTVAqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCogfCBzeXN2NCp1dzIqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIHRwZiopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgdXRzNCopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLWVzYWMKLQotc2VkX3F1b3RlX3N1YnN0PSdzL1woWyJgJFxcXVwpL1xcXDEvZycKLWVzY2FwZWRfd2w9YGVjaG8gIlgkd2wiIHwgc2VkIC1lICdzL15YLy8nIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLXNobGliZXh0PWBlY2hvICIkc2hyZXh0IiB8IHNlZCAtZSAncyxeXC4sLCdgCi1lc2NhcGVkX2xpYm5hbWVfc3BlYz1gZWNobyAiWCRsaWJuYW1lX3NwZWMiIHwgc2VkIC1lICdzL15YLy8nIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLWVzY2FwZWRfbGlicmFyeV9uYW1lc19zcGVjPWBlY2hvICJYJGxpYnJhcnlfbmFtZXNfc3BlYyIgfCBzZWQgLWUgJ3MvXlgvLycgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotZXNjYXBlZF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPWBlY2hvICJYJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiIHwgc2VkIC1lICdzL15YLy8nIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLQotTENfQUxMPUMgc2VkIC1lICdzL15cKFthLXpBLVowLTlfXSpcKT0vYWNsX2N2X1wxPS8nIDw8RU9GCi0KLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLXdsPSIkZXNjYXBlZF93bCIKLQotIyBTdGF0aWMgbGlicmFyeSBzdWZmaXggKG5vcm1hbGx5ICJhIikuCi1saWJleHQ9IiRsaWJleHQiCi0KLSMgU2hhcmVkIGxpYnJhcnkgc3VmZml4IChub3JtYWxseSAic28iKS4KLXNobGliZXh0PSIkc2hsaWJleHQiCi0KLSMgRm9ybWF0IG9mIGxpYnJhcnkgbmFtZSBwcmVmaXguCi1saWJuYW1lX3NwZWM9IiRlc2NhcGVkX2xpYm5hbWVfc3BlYyIKLQotIyBMaWJyYXJ5IG5hbWVzIHRoYXQgdGhlIGxpbmtlciBmaW5kcyB3aGVuIHBhc3NlZCAtbE5BTUUuCi1saWJyYXJ5X25hbWVzX3NwZWM9IiRlc2NhcGVkX2xpYnJhcnlfbmFtZXNfc3BlYyIKLQotIyBGbGFnIHRvIGhhcmRjb2RlIFwkbGliZGlyIGludG8gYSBiaW5hcnkgZHVyaW5nIGxpbmtpbmcuCi0jIFRoaXMgbXVzdCB3b3JrIGV2ZW4gaWYgXCRsaWJkaXIgZG9lcyBub3QgZXhpc3QuCi1oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSIkZXNjYXBlZF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIgotCi0jIFdoZXRoZXIgd2UgbmVlZCBhIHNpbmdsZSAtcnBhdGggZmxhZyB3aXRoIGEgc2VwYXJhdGVkIGFyZ3VtZW50LgotaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0iJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiCi0KLSMgU2V0IHRvIHllcyBpZiB1c2luZyBESVIvbGliTkFNRS5zbyBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMgRElSIGludG8gdGhlCi0jIHJlc3VsdGluZyBiaW5hcnkuCi1oYXJkY29kZV9kaXJlY3Q9IiRoYXJkY29kZV9kaXJlY3QiCi0KLSMgU2V0IHRvIHllcyBpZiB1c2luZyB0aGUgLUxESVIgZmxhZyBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMgRElSIGludG8gdGhlCi0jIHJlc3VsdGluZyBiaW5hcnkuCi1oYXJkY29kZV9taW51c19MPSIkaGFyZGNvZGVfbWludXNfTCIKLQotRU9GCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL3JlbW92ZS1wb3RjZGF0ZS5zaW4gYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL3JlbW92ZS1wb3RjZGF0ZS5zaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MzZjNDkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS9yZW1vdmUtcG90Y2RhdGUuc2luCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotIyBTZWQgc2NyaXB0IHRoYXQgcmVtb3ZlIHRoZSBQT1QtQ3JlYXRpb24tRGF0ZSBsaW5lIGluIHRoZSBoZWFkZXIgZW50cnkKLSMgZnJvbSBhIFBPVCBmaWxlLgotIwotIyBUaGUgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGUgZmlyc3QgYW5kIHRoZSBmb2xsb3dpbmcgb2NjdXJyZW5jZXMgb2YgdGhlCi0jIHBhdHRlcm4gaXMgYWNoaWV2ZWQgYnkgbG9va2luZyBhdCB0aGUgaG9sZCBzcGFjZS4KLS9eIlBPVC1DcmVhdGlvbi1EYXRlOiAuKiIkL3sKLXgKLSMgVGVzdCBpZiB0aGUgaG9sZCBzcGFjZSBpcyBlbXB0eS4KLXMvUC9QLwotdGEKLSMgWWVzIGl0IHdhcyBlbXB0eS4gRmlyc3Qgb2NjdXJyZW5jZS4gUmVtb3ZlIHRoZSBsaW5lLgotZwotZAotYmIKLTphCi0jIFRoZSBob2xkIHNwYWNlIHdhcyBub25lbXB0eS4gRm9sbG93aW5nIG9jY3VycmVuY2VzLiBEbyBub3RoaW5nLgoteAotOmIKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvQ09QWUlORyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL0NPUFlJTkcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvQ09QWUlORwpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvQ09QWUlORwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvTWFrZWZpbGUuaW4uaW4gYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9NYWtlZmlsZS5pbi5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGI2YWQzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvTWFrZWZpbGUuaW4uaW4KQEAgLTAsMCArMSw1MDMgQEAKKyMgTWFrZWZpbGUgZm9yIFBPIGRpcmVjdG9yeSBpbiBhbnkgcGFja2FnZSB1c2luZyBHTlUgZ2V0dGV4dC4KKyMgQ29weXJpZ2h0IChDKSAxOTk1LTIwMDAgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+CisjIENvcHlyaWdodCAoQykgMjAwMC0yMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAorIyBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKKyMgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIG9mZmVyZWQgYXMtaXMsCisjIHdpdGhvdXQgYW55IHdhcnJhbnR5LgorIworIyBPcmlnaW46IGdldHRleHQtMC4yMAorR0VUVEVYVF9NQUNST19WRVJTSU9OID0gMC4yMAorCitQQUNLQUdFID0gQFBBQ0tBR0VACitWRVJTSU9OID0gQFZFUlNJT05ACitQQUNLQUdFX0JVR1JFUE9SVCA9IEBQQUNLQUdFX0JVR1JFUE9SVEAKKworU0VEID0gQFNFREAKK1NIRUxMID0gL2Jpbi9zaAorQFNFVF9NQUtFQAorCitzcmNkaXIgPSBAc3JjZGlyQAordG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAorVlBBVEggPSBAc3JjZGlyQAorCitwcmVmaXggPSBAcHJlZml4QAorZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACitkYXRhcm9vdGRpciA9IEBkYXRhcm9vdGRpckAKK2RhdGFkaXIgPSBAZGF0YWRpckAKK2xvY2FsZWRpciA9IEBsb2NhbGVkaXJACitnZXR0ZXh0c3JjZGlyID0gJChkYXRhZGlyKS9nZXR0ZXh0L3BvCisKK0lOU1RBTEwgPSBASU5TVEFMTEAKK0lOU1RBTExfREFUQSA9IEBJTlNUQUxMX0RBVEFACisKKyMgV2UgdXNlICQobWtkaXJfcCkuCisjIEluIGF1dG9tYWtlIDw9IDEuOS54LCAkKG1rZGlyX3ApIGlzIGRlZmluZWQgZWl0aGVyIGFzICJta2RpciAtcCAtLSIgb3IgYXMKKyMgIiQobWtpbnN0YWxsZGlycykiIG9yIGFzICIkKGluc3RhbGxfc2gpIC1kIi4gRm9yIHRoZXNlIGF1dG9tYWtlIHZlcnNpb25zLAorIyBAaW5zdGFsbF9zaEAgZG9lcyBub3Qgc3RhcnQgd2l0aCAkKFNIRUxMKSwgc28gd2UgYWRkIGl0LgorIyBJbiBhdXRvbWFrZSA+PSAxLjEwLCBAbWtkaXJfcEAgaXMgZGVyaXZlZCBmcm9tICR7TUtESVJfUH0sIHdoaWNoIGlzIGRlZmluZWQKKyMgZWl0aGVyIGFzICIvcGF0aC90by9ta2RpciAtcCIgb3IgIi4uLi9pbnN0YWxsLXNoIC1jIC1kIi4gRm9yIHRoZXNlIGF1dG9tYWtlCisjIHZlcnNpb25zLCAkKG1raW5zdGFsbGRpcnMpIGFuZCAkKGluc3RhbGxfc2gpIGFyZSB1bnVzZWQuCitta2luc3RhbGxkaXJzID0gJChTSEVMTCkgQGluc3RhbGxfc2hAIC1kCitpbnN0YWxsX3NoID0gJChTSEVMTCkgQGluc3RhbGxfc2hACitNS0RJUl9QID0gQE1LRElSX1BACitta2Rpcl9wID0gQG1rZGlyX3BACisKKyMgV2hlbiBidWlsZGluZyBnZXR0ZXh0LXRvb2xzLCB3ZSBwcmVmZXIgdG8gdXNlIHRoZSBidWlsdCBwcm9ncmFtcworIyByYXRoZXIgdGhhbiBpbnN0YWxsZWQgcHJvZ3JhbXMuICBIb3dldmVyLCB3ZSBjYW4ndCBkbyB0aGF0IHdoZW4gd2UKKyMgYXJlIGNyb3NzIGNvbXBpbGluZy4KK0NST1NTX0NPTVBJTElORyA9IEBDUk9TU19DT01QSUxJTkdACisKK0dNU0dGTVRfID0gQEdNU0dGTVRACitHTVNHRk1UX25vID0gQEdNU0dGTVRACitHTVNHRk1UX3llcyA9IEBHTVNHRk1UXzAxNUAKK0dNU0dGTVQgPSAkKEdNU0dGTVRfJChVU0VfTVNHQ1RYVCkpCitYR0VUVEVYVF8gPSBAWEdFVFRFWFRACitYR0VUVEVYVF9ubyA9IEBYR0VUVEVYVEAKK1hHRVRURVhUX3llcyA9IEBYR0VUVEVYVF8wMTVACitYR0VUVEVYVCA9ICQoWEdFVFRFWFRfJChVU0VfTVNHQ1RYVCkpCitNU0dNRVJHRSA9IEBNU0dNRVJHRUAKK01TR01FUkdFX1VQREFURSA9IEBNU0dNRVJHRUAgLS11cGRhdGUKK01TR01FUkdFX0ZPUl9NU0dGTVRfT1BUSU9OID0gQE1TR01FUkdFX0ZPUl9NU0dGTVRfT1BUSU9OQAorTVNHSU5JVCA9IG1zZ2luaXQKK01TR0NPTlYgPSBtc2djb252CitNU0dGSUxURVIgPSBtc2dmaWx0ZXIKKworUE9GSUxFUyA9IEBQT0ZJTEVTQAorR01PRklMRVMgPSBAR01PRklMRVNACitVUERBVEVQT0ZJTEVTID0gQFVQREFURVBPRklMRVNACitEVU1NWVBPRklMRVMgPSBARFVNTVlQT0ZJTEVTQAorRElTVEZJTEVTLmNvbW1vbiA9IE1ha2VmaWxlLmluLmluIHJlbW92ZS1wb3RjZGF0ZS5zaW4gXAorJChESVNURklMRVMuY29tbW9uLmV4dHJhMSkgJChESVNURklMRVMuY29tbW9uLmV4dHJhMikgJChESVNURklMRVMuY29tbW9uLmV4dHJhMykKK0RJU1RGSUxFUyA9ICQoRElTVEZJTEVTLmNvbW1vbikgTWFrZXZhcnMgUE9URklMRVMuaW4gXAorJChQT0ZJTEVTKSAkKEdNT0ZJTEVTKSBcCiskKERJU1RGSUxFUy5leHRyYTEpICQoRElTVEZJTEVTLmV4dHJhMikgJChESVNURklMRVMuZXh0cmEzKQorCitQT1RGSUxFUyA9IFwKKworQ0FUQUxPR1MgPSBAQ0FUQUxPR1NACisKK1BPRklMRVNERVBTXyA9ICQoc3JjZGlyKS8kKERPTUFJTikucG90CitQT0ZJTEVTREVQU195ZXMgPSAkKFBPRklMRVNERVBTXykKK1BPRklMRVNERVBTX25vID0KK1BPRklMRVNERVBTID0gJChQT0ZJTEVTREVQU18kKFBPX0RFUEVORFNfT05fUE9UKSkKKworRElTVEZJTEVTREVQU18gPSB1cGRhdGUtcG8KK0RJU1RGSUxFU0RFUFNfeWVzID0gJChESVNURklMRVNERVBTXykKK0RJU1RGSUxFU0RFUFNfbm8gPQorRElTVEZJTEVTREVQUyA9ICQoRElTVEZJTEVTREVQU18kKERJU1RfREVQRU5EU19PTl9VUERBVEVfUE8pKQorCisjIE1ha2V2YXJzIGdldHMgaW5zZXJ0ZWQgaGVyZS4gKERvbid0IHJlbW92ZSB0aGlzIGxpbmUhKQorCisuU1VGRklYRVM6CisuU1VGRklYRVM6IC5wbyAuZ21vIC5zZWQgLnNpbiAubm9wIC5wby1jcmVhdGUgLnBvLXVwZGF0ZQorCisjIFRoZSAucG90IGZpbGUsIHN0YW1wLXBvLCAucG8gZmlsZXMsIGFuZCAuZ21vIGZpbGVzIGFwcGVhciBpbiByZWxlYXNlIHRhcmJhbGxzLgorIyBUaGUgR05VIENvZGluZyBTdGFuZGFyZHMgc2F5IGluCisjIDxodHRwczovL3d3dy5nbnUub3JnL3ByZXAvc3RhbmRhcmRzL2h0bWxfbm9kZS9NYWtlZmlsZS1CYXNpY3MuaHRtbD46CisjICAgIkdOVSBkaXN0cmlidXRpb25zIHVzdWFsbHkgY29udGFpbiBzb21lIGZpbGVzIHdoaWNoIGFyZSBub3Qgc291cmNlIGZpbGVzCisjICAgIC4uLiAuIFNpbmNlIHRoZXNlIGZpbGVzIG5vcm1hbGx5IGFwcGVhciBpbiB0aGUgc291cmNlIGRpcmVjdG9yeSwgdGhleQorIyAgICBzaG91bGQgYWx3YXlzIGFwcGVhciBpbiB0aGUgc291cmNlIGRpcmVjdG9yeSwgbm90IGluIHRoZSBidWlsZCBkaXJlY3RvcnkuCisjICAgIFNvIE1ha2VmaWxlIHJ1bGVzIHRvIHVwZGF0ZSB0aGVtIHNob3VsZCBwdXQgdGhlIHVwZGF0ZWQgZmlsZXMgaW4gdGhlCisjICAgIHNvdXJjZSBkaXJlY3RvcnkuIgorIyBUaGVyZWZvcmUgd2UgcHV0IHRoZXNlIGZpbGVzIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5LCBub3QgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KKworIyBEdXJpbmcgLnBvIC0+IC5nbW8gY29udmVyc2lvbiwgdGFrZSBpbnRvIGFjY291bnQgdGhlIG1vc3QgcmVjZW50IGNoYW5nZXMgdG8KKyMgdGhlIC5wb3QgZmlsZS4gVGhpcyBlbGltaW5hdGVzIHRoZSBuZWVkIHRvIHVwZGF0ZSB0aGUgLnBvIGZpbGVzIHdoZW4gdGhlCisjIC5wb3QgZmlsZSBoYXMgY2hhbmdlZCwgd2hpY2ggd291bGQgYmUgdHJvdWJsZXNvbWUgaWYgdGhlIC5wbyBmaWxlcyBhcmUgcHV0CisjIHVuZGVyIHZlcnNpb24gY29udHJvbC4KKy5wby5nbW86ICQoc3JjZGlyKS8kKERPTUFJTikucG90CisJQGxhbmc9YGVjaG8gJCogfCBzZWQgLWUgJ3MsLiovLCwnYDsgXAorCXRlc3QgIiQoc3JjZGlyKSIgPSAuICYmIGNkY21kPSIiIHx8IGNkY21kPSJjZCAkKHNyY2RpcikgJiYgIjsgXAorCWVjaG8gIiQke2NkY21kfXJtIC1mICQke2xhbmd9LmdtbyAmJiAkKE1TR01FUkdFKSAkKE1TR01FUkdFX0ZPUl9NU0dGTVRfT1BUSU9OKSAtbyAkJHtsYW5nfS4xcG8gJCR7bGFuZ30ucG8gJChET01BSU4pLnBvdCAmJiAkKEdNU0dGTVQpIC1jIC0tc3RhdGlzdGljcyAtLXZlcmJvc2UgLW8gJCR7bGFuZ30uZ21vICQke2xhbmd9LjFwbyAmJiBybSAtZiAkJHtsYW5nfS4xcG8iOyBcCisJY2QgJChzcmNkaXIpICYmIFwKKwlybSAtZiAkJHtsYW5nfS5nbW8gJiYgXAorCSQoTVNHTUVSR0UpICQoTVNHTUVSR0VfRk9SX01TR0ZNVF9PUFRJT04pIC1vICQke2xhbmd9LjFwbyAkJHtsYW5nfS5wbyAkKERPTUFJTikucG90ICYmIFwKKwkkKEdNU0dGTVQpIC1jIC0tc3RhdGlzdGljcyAtLXZlcmJvc2UgLW8gdC0kJHtsYW5nfS5nbW8gJCR7bGFuZ30uMXBvICYmIFwKKwltdiB0LSQke2xhbmd9LmdtbyAkJHtsYW5nfS5nbW8gJiYgXAorCXJtIC1mICQke2xhbmd9LjFwbworCisuc2luLnNlZDoKKwlzZWQgLWUgJy9eIy9kJyAkPCA+IHQtJEAKKwltdiB0LSRAICRACisKKworYWxsOiBhbGwtQFVTRV9OTFNACisKK2FsbC15ZXM6ICQoc3JjZGlyKS9zdGFtcC1wbworYWxsLW5vOgorCisjIEVuc3VyZSB0aGF0IHRoZSBnZXR0ZXh0IG1hY3JvcyBhbmQgdGhpcyBNYWtlZmlsZS5pbi5pbiBhcmUgaW4gc3luYy4KK0NIRUNLX01BQ1JPX1ZFUlNJT04gPSBcCisJdGVzdCAiJChHRVRURVhUX01BQ1JPX1ZFUlNJT04pIiA9ICJAR0VUVEVYVF9NQUNST19WRVJTSU9OQCIgXAorCSAgfHwgeyBlY2hvICIqKiogZXJyb3I6IGdldHRleHQgaW5mcmFzdHJ1Y3R1cmUgbWlzbWF0Y2g6IHVzaW5nIGEgTWFrZWZpbGUuaW4uaW4gZnJvbSBnZXR0ZXh0IHZlcnNpb24gJChHRVRURVhUX01BQ1JPX1ZFUlNJT04pIGJ1dCB0aGUgYXV0b2NvbmYgbWFjcm9zIGFyZSBmcm9tIGdldHRleHQgdmVyc2lvbiBAR0VUVEVYVF9NQUNST19WRVJTSU9OQCIgMT4mMjsgXAorCSAgICAgICBleGl0IDE7IFwKKwkgICAgIH0KKworIyAkKHNyY2RpcikvJChET01BSU4pLnBvdCBpcyBvbmx5IGNyZWF0ZWQgd2hlbiBuZWVkZWQuIFdoZW4geGdldHRleHQgZmluZHMgbm8KKyMgaW50ZXJuYXRpb25hbGl6ZWQgbWVzc2FnZXMsIG5vICQoc3JjZGlyKS8kKERPTUFJTikucG90IGlzIGNyZWF0ZWQgKGJlY2F1c2UKKyMgd2UgZG9uJ3Qgd2FudCB0byBib3RoZXIgdHJhbnNsYXRvcnMgd2l0aCBlbXB0eSBQT1QgZmlsZXMpLiBXZSBhc3N1bWUgdGhhdAorIyBMSU5HVUFTIGlzIGVtcHR5IGluIHRoaXMgY2FzZSwgaS5lLiAkKFBPRklMRVMpIGFuZCAkKEdNT0ZJTEVTKSBhcmUgZW1wdHkuCisjIEluIHRoaXMgY2FzZSwgJChzcmNkaXIpL3N0YW1wLXBvIGlzIGEgbm9wIChpLmUuIGEgcGhvbnkgdGFyZ2V0KS4KKworIyAkKHNyY2Rpcikvc3RhbXAtcG8gaXMgYSB0aW1lc3RhbXAgZGVub3RpbmcgdGhlIGxhc3QgdGltZSBhdCB3aGljaCB0aGUgQ0FUQUxPR1MKKyMgaGF2ZSBiZWVuIGxvb3NlbHkgdXBkYXRlZC4gSXRzIHB1cnBvc2UgaXMgdGhhdCB3aGVuIGEgZGV2ZWxvcGVyIG9yIHRyYW5zbGF0b3IKKyMgY2hlY2tzIG91dCB0aGUgcGFja2FnZSBmcm9tIGEgdmVyc2lvbiBjb250cm9sIHN5c3RlbSwgYW5kIHRoZSAkKERPTUFJTikucG90CisjIGZpbGUgaXMgbm90IHVuZGVyIHZlcnNpb24gY29udHJvbCwgIm1ha2UiIHdpbGwgdXBkYXRlIHRoZSAkKERPTUFJTikucG90IGFuZAorIyB0aGUgJChDQVRBTE9HUyksIGJ1dCBzdWJzZXF1ZW50IGludm9jYXRpb25zIG9mICJtYWtlIiB3aWxsIGRvIG5vdGhpbmcuIFRoaXMKKyMgdGltZXN0YW1wIHdvdWxkIG5vdCBiZSBuZWNlc3NhcnkgaWYgdXBkYXRpbmcgdGhlICQoQ0FUQUxPR1MpIHdvdWxkIGFsd2F5cworIyB0b3VjaCB0aGVtOyBob3dldmVyLCB0aGUgcnVsZSBmb3IgJChQT0ZJTEVTKSBoYXMgYmVlbiBkZXNpZ25lZCB0byBub3QgdG91Y2gKKyMgZmlsZXMgdGhhdCBkb24ndCBuZWVkIHRvIGJlIGNoYW5nZWQuCiskKHNyY2Rpcikvc3RhbXAtcG86ICQoc3JjZGlyKS8kKERPTUFJTikucG90CisJQCQoQ0hFQ0tfTUFDUk9fVkVSU0lPTikKKwl0ZXN0ICEgLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgfHwgXAorCSAgdGVzdCAteiAiJChHTU9GSUxFUykiIHx8ICQoTUFLRSkgJChHTU9GSUxFUykKKwlAdGVzdCAhIC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90IHx8IHsgXAorCSAgZWNobyAidG91Y2ggJChzcmNkaXIpL3N0YW1wLXBvIiAmJiBcCisJICBlY2hvIHRpbWVzdGFtcCA+ICQoc3JjZGlyKS9zdGFtcC1wb1QgJiYgXAorCSAgbXYgJChzcmNkaXIpL3N0YW1wLXBvVCAkKHNyY2Rpcikvc3RhbXAtcG87IFwKKwl9CisKKyMgTm90ZTogVGFyZ2V0ICdhbGwnIG11c3Qgbm90IGRlcGVuZCBvbiB0YXJnZXQgJyQoRE9NQUlOKS5wb3QtdXBkYXRlJywKKyMgb3RoZXJ3aXNlIHBhY2thZ2VzIGxpa2UgR0NDIGNhbiBub3QgYmUgYnVpbHQgaWYgb25seSBwYXJ0cyBvZiB0aGUgc291cmNlCisjIGhhdmUgYmVlbiBkb3dubG9hZGVkLgorCisjIFRoaXMgdGFyZ2V0IHJlYnVpbGRzICQoRE9NQUlOKS5wb3Q7IGl0IGlzIGFuIGV4cGVuc2l2ZSBvcGVyYXRpb24uCisjIE5vdGUgdGhhdCAkKERPTUFJTikucG90IGlzIG5vdCB0b3VjaGVkIGlmIGl0IGRvZXNuJ3QgbmVlZCB0byBiZSBjaGFuZ2VkLgorIyBUaGUgZGV0ZXJtaW5hdGlvbiBvZiB3aGV0aGVyIHRoZSBwYWNrYWdlIHh5eiBpcyBhIEdOVSBvbmUgaXMgYmFzZWQgb24gdGhlCisjIGhldXJpc3RpYyB3aGV0aGVyIHNvbWUgZmlsZSBpbiB0aGUgdG9wIGxldmVsIGRpcmVjdG9yeSBtZW50aW9ucyAiR05VIHh5eiIuCisjIElmIEdOVSAnZmluZCcgaXMgYXZhaWxhYmxlLCB3ZSBhdm9pZCBncmVwcGluZyB0aHJvdWdoIG1vbnN0ZXIgZmlsZXMuCiskKERPTUFJTikucG90LXVwZGF0ZTogJChQT1RGSUxFUykgJChzcmNkaXIpL1BPVEZJTEVTLmluIHJlbW92ZS1wb3RjZGF0ZS5zZWQKKwlwYWNrYWdlX2dudT0iJChQQUNLQUdFX0dOVSkiOyBcCisJdGVzdCAtbiAiJCRwYWNrYWdlX2dudSIgfHwgeyBcCisJICBpZiB7IGlmIChMQ19BTEw9QyBmaW5kIC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCBncmVwIEdOVSA+L2Rldi9udWxsOyB0aGVuIFwKKwkgICAgICAgICBMQ19BTEw9QyBmaW5kIC1MICQodG9wX3NyY2RpcikgLW1heGRlcHRoIDEgLXR5cGUgZiAtc2l6ZSAtMTAwMDAwMDBjIC1leGVjIGdyZXAgLWkgJ0dOVSBAUEFDS0FHRUAnIC9kZXYvbnVsbCAne30nICc7JyAyPi9kZXYvbnVsbDsgXAorCSAgICAgICBlbHNlIFwKKwkgICAgICAgICBMQ19BTEw9QyBncmVwIC1pICdHTlUgQFBBQ0tBR0VAJyAkKHRvcF9zcmNkaXIpLyogMj4vZGV2L251bGw7IFwKKwkgICAgICAgZmk7IFwKKwkgICAgIH0gfCBncmVwIC12ICdsaWJ0b29sOicgPi9kZXYvbnVsbDsgdGhlbiBcCisJICAgICBwYWNrYWdlX2dudT15ZXM7IFwKKwkgICBlbHNlIFwKKwkgICAgIHBhY2thZ2VfZ251PW5vOyBcCisJICAgZmk7IFwKKwl9OyBcCisJaWYgdGVzdCAiJCRwYWNrYWdlX2dudSIgPSAieWVzIjsgdGhlbiBcCisJICBwYWNrYWdlX3ByZWZpeD0nR05VICc7IFwKKwllbHNlIFwKKwkgIHBhY2thZ2VfcHJlZml4PScnOyBcCisJZmk7IFwKKwlpZiB0ZXN0IC1uICckKE1TR0lEX0JVR1NfQUREUkVTUyknIHx8IHRlc3QgJyQoUEFDS0FHRV9CVUdSRVBPUlQpJyA9ICdAJ1BBQ0tBR0VfQlVHUkVQT1JUJ0AnOyB0aGVuIFwKKwkgIG1zZ2lkX2J1Z3NfYWRkcmVzcz0nJChNU0dJRF9CVUdTX0FERFJFU1MpJzsgXAorCWVsc2UgXAorCSAgbXNnaWRfYnVnc19hZGRyZXNzPSckKFBBQ0tBR0VfQlVHUkVQT1JUKSc7IFwKKwlmaTsgXAorCWNhc2UgYCQoWEdFVFRFWFQpIC0tdmVyc2lvbiB8IHNlZCAxcSB8IHNlZCAtZSAncyxeW14wLTldKiwsJ2AgaW4gXAorCSAgJycgfCAwLlswLTldIHwgMC5bMC05XS4qIHwgMC4xWzAtNV0gfCAwLjFbMC01XS4qIHwgMC4xNiB8IDAuMTYuWzAtMV0qKSBcCisJICAgICQoWEdFVFRFWFQpIC0tZGVmYXVsdC1kb21haW49JChET01BSU4pIC0tZGlyZWN0b3J5PSQodG9wX3NyY2RpcikgXAorCSAgICAgIC0tYWRkLWNvbW1lbnRzPVRSQU5TTEFUT1JTOiBcCisJICAgICAgLS1maWxlcy1mcm9tPSQoc3JjZGlyKS9QT1RGSUxFUy5pbiBcCisJICAgICAgLS1jb3B5cmlnaHQtaG9sZGVyPSckKENPUFlSSUdIVF9IT0xERVIpJyBcCisJICAgICAgLS1tc2dpZC1idWdzLWFkZHJlc3M9IiQkbXNnaWRfYnVnc19hZGRyZXNzIiBcCisJICAgICAgJChYR0VUVEVYVF9PUFRJT05TKSBAWEdFVFRFWFRfRVhUUkFfT1BUSU9OU0AgXAorCSAgICA7OyBcCisJICAqKSBcCisJICAgICQoWEdFVFRFWFQpIC0tZGVmYXVsdC1kb21haW49JChET01BSU4pIC0tZGlyZWN0b3J5PSQodG9wX3NyY2RpcikgXAorCSAgICAgIC0tYWRkLWNvbW1lbnRzPVRSQU5TTEFUT1JTOiBcCisJICAgICAgLS1maWxlcy1mcm9tPSQoc3JjZGlyKS9QT1RGSUxFUy5pbiBcCisJICAgICAgLS1jb3B5cmlnaHQtaG9sZGVyPSckKENPUFlSSUdIVF9IT0xERVIpJyBcCisJICAgICAgLS1wYWNrYWdlLW5hbWU9IiQke3BhY2thZ2VfcHJlZml4fUBQQUNLQUdFQCIgXAorCSAgICAgIC0tcGFja2FnZS12ZXJzaW9uPSdAVkVSU0lPTkAnIFwKKwkgICAgICAtLW1zZ2lkLWJ1Z3MtYWRkcmVzcz0iJCRtc2dpZF9idWdzX2FkZHJlc3MiIFwKKwkgICAgICAkKFhHRVRURVhUX09QVElPTlMpIEBYR0VUVEVYVF9FWFRSQV9PUFRJT05TQCBcCisJICAgIDs7IFwKKwllc2FjCisJdGVzdCAhIC1mICQoRE9NQUlOKS5wbyB8fCB7IFwKKwkgIGlmIHRlc3QgLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QtaGVhZGVyOyB0aGVuIFwKKwkgICAgc2VkIC1lICcxLC9eIyQkL2QnIDwgJChET01BSU4pLnBvID4gJChET01BSU4pLjFwbyAmJiBcCisJICAgIGNhdCAkKHNyY2RpcikvJChET01BSU4pLnBvdC1oZWFkZXIgJChET01BSU4pLjFwbyA+ICQoRE9NQUlOKS5wbyAmJiBcCisJICAgIHJtIC1mICQoRE9NQUlOKS4xcG8gXAorCSAgICB8fCBleGl0IDE7IFwKKwkgIGZpOyBcCisJICBpZiB0ZXN0IC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90OyB0aGVuIFwKKwkgICAgc2VkIC1mIHJlbW92ZS1wb3RjZGF0ZS5zZWQgPCAkKHNyY2RpcikvJChET01BSU4pLnBvdCA+ICQoRE9NQUlOKS4xcG8gJiYgXAorCSAgICBzZWQgLWYgcmVtb3ZlLXBvdGNkYXRlLnNlZCA8ICQoRE9NQUlOKS5wbyA+ICQoRE9NQUlOKS4ycG8gJiYgXAorCSAgICBpZiBjbXAgJChET01BSU4pLjFwbyAkKERPTUFJTikuMnBvID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCisJICAgICAgcm0gLWYgJChET01BSU4pLjFwbyAkKERPTUFJTikuMnBvICQoRE9NQUlOKS5wbzsgXAorCSAgICBlbHNlIFwKKwkgICAgICBybSAtZiAkKERPTUFJTikuMXBvICQoRE9NQUlOKS4ycG8gJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgJiYgXAorCSAgICAgIG12ICQoRE9NQUlOKS5wbyAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgXAorCSAgICBmaTsgXAorCSAgZWxzZSBcCisJICAgIG12ICQoRE9NQUlOKS5wbyAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgXAorCSAgZmk7IFwKKwl9CisKKyMgVGhpcyBydWxlIGhhcyBubyBkZXBlbmRlbmNpZXM6IHdlIGRvbid0IG5lZWQgdG8gdXBkYXRlICQoRE9NQUlOKS5wb3QgYXQKKyMgZXZlcnkgIm1ha2UiIGludm9jYXRpb24sIG9ubHkgY3JlYXRlIGl0IHdoZW4gaXQgaXMgbWlzc2luZy4KKyMgT25seSAibWFrZSAkKERPTUFJTikucG90LXVwZGF0ZSIgb3IgIm1ha2UgZGlzdCIgd2lsbCBmb3JjZSBhbiB1cGRhdGUuCiskKHNyY2RpcikvJChET01BSU4pLnBvdDoKKwkkKE1BS0UpICQoRE9NQUlOKS5wb3QtdXBkYXRlCisKKyMgVGhpcyB0YXJnZXQgcmVidWlsZHMgYSBQTyBmaWxlIGlmICQoRE9NQUlOKS5wb3QgaGFzIGNoYW5nZWQuCisjIE5vdGUgdGhhdCBhIFBPIGZpbGUgaXMgbm90IHRvdWNoZWQgaWYgaXQgZG9lc24ndCBuZWVkIHRvIGJlIGNoYW5nZWQuCiskKFBPRklMRVMpOiAkKFBPRklMRVNERVBTKQorCUB0ZXN0IC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90IHx8ICQoTUFLRSkgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QKKwlAbGFuZz1gZWNobyAkQCB8IHNlZCAtZSAncywuKi8sLCcgLWUgJ3MvXC5wbyQkLy8nYDsgXAorCWlmIHRlc3QgLWYgIiQoc3JjZGlyKS8kJHtsYW5nfS5wbyI7IHRoZW4gXAorCSAgdGVzdCAiJChzcmNkaXIpIiA9IC4gJiYgY2RjbWQ9IiIgfHwgY2RjbWQ9ImNkICQoc3JjZGlyKSAmJiAiOyBcCisJICBlY2hvICIkJHtjZGNtZH0kKE1TR01FUkdFX1VQREFURSkgJChNU0dNRVJHRV9PUFRJT05TKSAtLWxhbmc9JCR7bGFuZ30gLS1wcmV2aW91cyAkJHtsYW5nfS5wbyAkKERPTUFJTikucG90IjsgXAorCSAgY2QgJChzcmNkaXIpIFwKKwkgICAgJiYgeyBjYXNlIGAkKE1TR01FUkdFX1VQREFURSkgLS12ZXJzaW9uIHwgc2VkIDFxIHwgc2VkIC1lICdzLF5bXjAtOV0qLCwnYCBpbiBcCisJICAgICAgICAgICAnJyB8IDAuWzAtOV0gfCAwLlswLTldLiogfCAwLjFbMC01XSB8IDAuMVswLTVdLiopIFwKKwkgICAgICAgICAgICAgJChNU0dNRVJHRV9VUERBVEUpICQoTVNHTUVSR0VfT1BUSU9OUykgJCR7bGFuZ30ucG8gJChET01BSU4pLnBvdDs7IFwKKwkgICAgICAgICAgIDAuMVs2LTddIHwgMC4xWzYtN10uKikgXAorCSAgICAgICAgICAgICAkKE1TR01FUkdFX1VQREFURSkgJChNU0dNRVJHRV9PUFRJT05TKSAtLXByZXZpb3VzICQke2xhbmd9LnBvICQoRE9NQUlOKS5wb3Q7OyBcCisJICAgICAgICAgICAqKSBcCisJICAgICAgICAgICAgICQoTVNHTUVSR0VfVVBEQVRFKSAkKE1TR01FUkdFX09QVElPTlMpIC0tbGFuZz0kJHtsYW5nfSAtLXByZXZpb3VzICQke2xhbmd9LnBvICQoRE9NQUlOKS5wb3Q7OyBcCisJICAgICAgICAgZXNhYzsgXAorCSAgICAgICB9OyBcCisJZWxzZSBcCisJICAkKE1BS0UpICQke2xhbmd9LnBvLWNyZWF0ZTsgXAorCWZpCisKKworaW5zdGFsbDogaW5zdGFsbC1leGVjIGluc3RhbGwtZGF0YQoraW5zdGFsbC1leGVjOgoraW5zdGFsbC1kYXRhOiBpbnN0YWxsLWRhdGEtQFVTRV9OTFNACisJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IHRoZW4gXAorCSAgJChta2Rpcl9wKSAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKTsgXAorCSAgZm9yIGZpbGUgaW4gJChESVNURklMRVMuY29tbW9uKSBNYWtldmFycy50ZW1wbGF0ZTsgZG8gXAorCSAgICAkKElOU1RBTExfREFUQSkgJChzcmNkaXIpLyQkZmlsZSBcCisJCQkgICAgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCisJICBkb25lOyBcCisJICBmb3IgZmlsZSBpbiBNYWtldmFyczsgZG8gXAorCSAgICBybSAtZiAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKS8kJGZpbGU7IFwKKwkgIGRvbmU7IFwKKwllbHNlIFwKKwkgIDogOyBcCisJZmkKK2luc3RhbGwtZGF0YS1ubzogYWxsCitpbnN0YWxsLWRhdGEteWVzOiBhbGwKKwlAY2F0YWxvZ3M9JyQoQ0FUQUxPR1MpJzsgXAorCWZvciBjYXQgaW4gJCRjYXRhbG9nczsgZG8gXAorCSAgY2F0PWBiYXNlbmFtZSAkJGNhdGA7IFwKKwkgIGxhbmc9YGVjaG8gJCRjYXQgfCBzZWQgLWUgJ3MvXC5nbW8kJC8vJ2A7IFwKKwkgIGRpcj0kKGxvY2FsZWRpcikvJCRsYW5nL0xDX01FU1NBR0VTOyBcCisJICAkKG1rZGlyX3ApICQoREVTVERJUikkJGRpcjsgXAorCSAgaWYgdGVzdCAtciAkJGNhdDsgdGhlbiByZWFsY2F0PSQkY2F0OyBlbHNlIHJlYWxjYXQ9JChzcmNkaXIpLyQkY2F0OyBmaTsgXAorCSAgJChJTlNUQUxMX0RBVEEpICQkcmVhbGNhdCAkKERFU1RESVIpJCRkaXIvJChET01BSU4pLm1vOyBcCisJICBlY2hvICJpbnN0YWxsaW5nICQkcmVhbGNhdCBhcyAkKERFU1RESVIpJCRkaXIvJChET01BSU4pLm1vIjsgXAorCSAgZm9yIGxjIGluICcnICQoRVhUUkFfTE9DQUxFX0NBVEVHT1JJRVMpOyBkbyBcCisJICAgIGlmIHRlc3QgLW4gIiQkbGMiOyB0aGVuIFwKKwkgICAgICBpZiAoY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcgJiYgTENfQUxMPUMgbHMgLWwgLWQgJCRsYyAyPi9kZXYvbnVsbCkgfCBncmVwICcgLT4gJyA+L2Rldi9udWxsOyB0aGVuIFwKKwkgICAgICAgIGxpbms9YGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nICYmIExDX0FMTD1DIGxzIC1sIC1kICQkbGMgfCBzZWQgLWUgJ3MvXi4qIC0+IC8vJ2A7IFwKKwkgICAgICAgIG12ICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQ7IFwKKwkgICAgICAgIG1rZGlyICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKKwkgICAgICAgIChjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLm9sZCAmJiBcCisJICAgICAgICAgZm9yIGZpbGUgaW4gKjsgZG8gXAorCSAgICAgICAgICAgaWYgdGVzdCAtZiAkJGZpbGU7IHRoZW4gXAorCSAgICAgICAgICAgICBsbiAtcyAuLi8kJGxpbmsvJCRmaWxlICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJCRmaWxlOyBcCisJICAgICAgICAgICBmaTsgXAorCSAgICAgICAgIGRvbmUpOyBcCisJICAgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLm9sZDsgXAorCSAgICAgIGVsc2UgXAorCSAgICAgICAgaWYgdGVzdCAtZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyB0aGVuIFwKKwkgICAgICAgICAgOjsgXAorCSAgICAgICAgZWxzZSBcCisJICAgICAgICAgIHJtIC1mICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKKwkgICAgICAgICAgbWtkaXIgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgXAorCSAgICAgICAgZmk7IFwKKwkgICAgICBmaTsgXAorCSAgICAgIHJtIC1mICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vOyBcCisJICAgICAgbG4gLXMgLi4vTENfTUVTU0FHRVMvJChET01BSU4pLm1vICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vIDI+L2Rldi9udWxsIHx8IFwKKwkgICAgICBsbiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy9MQ19NRVNTQUdFUy8kKERPTUFJTikubW8gJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kKERPTUFJTikubW8gMj4vZGV2L251bGwgfHwgXAorCSAgICAgIGNwIC1wICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nL0xDX01FU1NBR0VTLyQoRE9NQUlOKS5tbyAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbzsgXAorCSAgICAgIGVjaG8gImluc3RhbGxpbmcgJCRyZWFsY2F0IGxpbmsgYXMgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kKERPTUFJTikubW8iOyBcCisJICAgIGZpOyBcCisJICBkb25lOyBcCisJZG9uZQorCitpbnN0YWxsLXN0cmlwOiBpbnN0YWxsCisKK2luc3RhbGxkaXJzOiBpbnN0YWxsZGlycy1leGVjIGluc3RhbGxkaXJzLWRhdGEKK2luc3RhbGxkaXJzLWV4ZWM6CitpbnN0YWxsZGlycy1kYXRhOiBpbnN0YWxsZGlycy1kYXRhLUBVU0VfTkxTQAorCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKKwkgICQobWtkaXJfcCkgJChERVNURElSKSQoZ2V0dGV4dHNyY2Rpcik7IFwKKwllbHNlIFwKKwkgIDogOyBcCisJZmkKK2luc3RhbGxkaXJzLWRhdGEtbm86CitpbnN0YWxsZGlycy1kYXRhLXllczoKKwlAY2F0YWxvZ3M9JyQoQ0FUQUxPR1MpJzsgXAorCWZvciBjYXQgaW4gJCRjYXRhbG9nczsgZG8gXAorCSAgY2F0PWBiYXNlbmFtZSAkJGNhdGA7IFwKKwkgIGxhbmc9YGVjaG8gJCRjYXQgfCBzZWQgLWUgJ3MvXC5nbW8kJC8vJ2A7IFwKKwkgIGRpcj0kKGxvY2FsZWRpcikvJCRsYW5nL0xDX01FU1NBR0VTOyBcCisJICAkKG1rZGlyX3ApICQoREVTVERJUikkJGRpcjsgXAorCSAgZm9yIGxjIGluICcnICQoRVhUUkFfTE9DQUxFX0NBVEVHT1JJRVMpOyBkbyBcCisJICAgIGlmIHRlc3QgLW4gIiQkbGMiOyB0aGVuIFwKKwkgICAgICBpZiAoY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcgJiYgTENfQUxMPUMgbHMgLWwgLWQgJCRsYyAyPi9kZXYvbnVsbCkgfCBncmVwICcgLT4gJyA+L2Rldi9udWxsOyB0aGVuIFwKKwkgICAgICAgIGxpbms9YGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nICYmIExDX0FMTD1DIGxzIC1sIC1kICQkbGMgfCBzZWQgLWUgJ3MvXi4qIC0+IC8vJ2A7IFwKKwkgICAgICAgIG12ICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQ7IFwKKwkgICAgICAgIG1rZGlyICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKKwkgICAgICAgIChjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLm9sZCAmJiBcCisJICAgICAgICAgZm9yIGZpbGUgaW4gKjsgZG8gXAorCSAgICAgICAgICAgaWYgdGVzdCAtZiAkJGZpbGU7IHRoZW4gXAorCSAgICAgICAgICAgICBsbiAtcyAuLi8kJGxpbmsvJCRmaWxlICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJCRmaWxlOyBcCisJICAgICAgICAgICBmaTsgXAorCSAgICAgICAgIGRvbmUpOyBcCisJICAgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLm9sZDsgXAorCSAgICAgIGVsc2UgXAorCSAgICAgICAgaWYgdGVzdCAtZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyB0aGVuIFwKKwkgICAgICAgICAgOjsgXAorCSAgICAgICAgZWxzZSBcCisJICAgICAgICAgIHJtIC1mICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKKwkgICAgICAgICAgbWtkaXIgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgXAorCSAgICAgICAgZmk7IFwKKwkgICAgICBmaTsgXAorCSAgICBmaTsgXAorCSAgZG9uZTsgXAorCWRvbmUKKworIyBEZWZpbmUgdGhpcyBhcyBlbXB0eSB1bnRpbCBJIGZvdW5kIGEgdXNlZnVsIGFwcGxpY2F0aW9uLgoraW5zdGFsbGNoZWNrOgorCit1bmluc3RhbGw6IHVuaW5zdGFsbC1leGVjIHVuaW5zdGFsbC1kYXRhCit1bmluc3RhbGwtZXhlYzoKK3VuaW5zdGFsbC1kYXRhOiB1bmluc3RhbGwtZGF0YS1AVVNFX05MU0AKKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCisJICBmb3IgZmlsZSBpbiAkKERJU1RGSUxFUy5jb21tb24pIE1ha2V2YXJzLnRlbXBsYXRlOyBkbyBcCisJICAgIHJtIC1mICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAorCSAgZG9uZTsgXAorCWVsc2UgXAorCSAgOiA7IFwKKwlmaQordW5pbnN0YWxsLWRhdGEtbm86Cit1bmluc3RhbGwtZGF0YS15ZXM6CisJY2F0YWxvZ3M9JyQoQ0FUQUxPR1MpJzsgXAorCWZvciBjYXQgaW4gJCRjYXRhbG9nczsgZG8gXAorCSAgY2F0PWBiYXNlbmFtZSAkJGNhdGA7IFwKKwkgIGxhbmc9YGVjaG8gJCRjYXQgfCBzZWQgLWUgJ3MvXC5nbW8kJC8vJ2A7IFwKKwkgIGZvciBsYyBpbiBMQ19NRVNTQUdFUyAkKEVYVFJBX0xPQ0FMRV9DQVRFR09SSUVTKTsgZG8gXAorCSAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbzsgXAorCSAgZG9uZTsgXAorCWRvbmUKKworY2hlY2s6IGFsbAorCitpbmZvIGR2aSBwcyBwZGYgaHRtbCB0YWdzIFRBR1MgY3RhZ3MgQ1RBR1MgSUQ6CisKK2luc3RhbGwtZHZpIGluc3RhbGwtcHMgaW5zdGFsbC1wZGYgaW5zdGFsbC1odG1sOgorCittb3N0bHljbGVhbjoKKwlybSAtZiByZW1vdmUtcG90Y2RhdGUuc2VkCisJcm0gLWYgJChzcmNkaXIpL3N0YW1wLXBvVAorCXJtIC1mIGNvcmUgY29yZS4qICQoRE9NQUlOKS5wbyAkKERPTUFJTikuMXBvICQoRE9NQUlOKS4ycG8gKi5uZXcucG8KKwlybSAtZnIgKi5vCisKK2NsZWFuOiBtb3N0bHljbGVhbgorCitkaXN0Y2xlYW46IGNsZWFuCisJcm0gLWYgTWFrZWZpbGUgTWFrZWZpbGUuaW4gUE9URklMRVMKKworbWFpbnRhaW5lci1jbGVhbjogZGlzdGNsZWFuCisJQGVjaG8gIlRoaXMgY29tbWFuZCBpcyBpbnRlbmRlZCBmb3IgbWFpbnRhaW5lcnMgdG8gdXNlOyIKKwlAZWNobyAiaXQgZGVsZXRlcyBmaWxlcyB0aGF0IG1heSByZXF1aXJlIHNwZWNpYWwgdG9vbHMgdG8gcmVidWlsZC4iCisJcm0gLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgJChzcmNkaXIpL3N0YW1wLXBvICQoR01PRklMRVMpCisKK2Rpc3RkaXIgPSAkKHRvcF9idWlsZGRpcikvJChQQUNLQUdFKS0kKFZFUlNJT04pLyQoc3ViZGlyKQorZGlzdCBkaXN0ZGlyOgorCXRlc3QgLXogIiQoRElTVEZJTEVTREVQUykiIHx8ICQoTUFLRSkgJChESVNURklMRVNERVBTKQorCUAkKE1BS0UpIGRpc3QyCisjIFRoaXMgaXMgYSBzZXBhcmF0ZSB0YXJnZXQgYmVjYXVzZSAndXBkYXRlLXBvJyBtdXN0IGJlIGV4ZWN1dGVkIGJlZm9yZS4KK2Rpc3QyOiAkKHNyY2Rpcikvc3RhbXAtcG8gJChESVNURklMRVMpCisJZGlzdHM9IiQoRElTVEZJTEVTKSI7IFwKKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCisJICBkaXN0cz0iJCRkaXN0cyBNYWtldmFycy50ZW1wbGF0ZSI7IFwKKwlmaTsgXAorCWlmIHRlc3QgLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3Q7IHRoZW4gXAorCSAgZGlzdHM9IiQkZGlzdHMgJChET01BSU4pLnBvdCBzdGFtcC1wbyI7IFwKKwlmaTsgXAorCWlmIHRlc3QgLWYgJChzcmNkaXIpL0NoYW5nZUxvZzsgdGhlbiBcCisJICBkaXN0cz0iJCRkaXN0cyBDaGFuZ2VMb2ciOyBcCisJZmk7IFwKKwlmb3IgaSBpbiAwIDEgMiAzIDQgNSA2IDcgOCA5OyBkbyBcCisJICBpZiB0ZXN0IC1mICQoc3JjZGlyKS9DaGFuZ2VMb2cuJCRpOyB0aGVuIFwKKwkgICAgZGlzdHM9IiQkZGlzdHMgQ2hhbmdlTG9nLiQkaSI7IFwKKwkgIGZpOyBcCisJZG9uZTsgXAorCWlmIHRlc3QgLWYgJChzcmNkaXIpL0xJTkdVQVM7IHRoZW4gZGlzdHM9IiQkZGlzdHMgTElOR1VBUyI7IGZpOyBcCisJZm9yIGZpbGUgaW4gJCRkaXN0czsgZG8gXAorCSAgaWYgdGVzdCAtZiAkJGZpbGU7IHRoZW4gXAorCSAgICBjcCAtcCAkJGZpbGUgJChkaXN0ZGlyKSB8fCBleGl0IDE7IFwKKwkgIGVsc2UgXAorCSAgICBjcCAtcCAkKHNyY2RpcikvJCRmaWxlICQoZGlzdGRpcikgfHwgZXhpdCAxOyBcCisJICBmaTsgXAorCWRvbmUKKwordXBkYXRlLXBvOiBNYWtlZmlsZQorCSQoTUFLRSkgJChET01BSU4pLnBvdC11cGRhdGUKKwl0ZXN0IC16ICIkKFVQREFURVBPRklMRVMpIiB8fCAkKE1BS0UpICQoVVBEQVRFUE9GSUxFUykKKwkkKE1BS0UpIHVwZGF0ZS1nbW8KKworIyBHZW5lcmFsIHJ1bGUgZm9yIGNyZWF0aW5nIFBPIGZpbGVzLgorCisubm9wLnBvLWNyZWF0ZToKKwlAbGFuZz1gZWNobyAkQCB8IHNlZCAtZSAncy9cLnBvLWNyZWF0ZSQkLy8nYDsgXAorCWVjaG8gIkZpbGUgJCRsYW5nLnBvIGRvZXMgbm90IGV4aXN0LiBJZiB5b3UgYXJlIGEgdHJhbnNsYXRvciwgeW91IGNhbiBjcmVhdGUgaXQgdGhyb3VnaCAnbXNnaW5pdCcuIiAxPiYyOyBcCisJZXhpdCAxCisKKyMgR2VuZXJhbCBydWxlIGZvciB1cGRhdGluZyBQTyBmaWxlcy4KKworLm5vcC5wby11cGRhdGU6CisJQGxhbmc9YGVjaG8gJEAgfCBzZWQgLWUgJ3MvXC5wby11cGRhdGUkJC8vJ2A7IFwKKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIiAmJiB0ZXN0ICIkKENST1NTX0NPTVBJTElORykiICE9ICJ5ZXMiOyB0aGVuIFBBVEg9YHB3ZGAvLi4vc3JjOiQkUEFUSDsgZmk7IFwKKwl0bXBkaXI9YHB3ZGA7IFwKKwllY2hvICIkJGxhbmc6IjsgXAorCXRlc3QgIiQoc3JjZGlyKSIgPSAuICYmIGNkY21kPSIiIHx8IGNkY21kPSJjZCAkKHNyY2RpcikgJiYgIjsgXAorCWVjaG8gIiQke2NkY21kfSQoTVNHTUVSR0UpICQoTVNHTUVSR0VfT1BUSU9OUykgLS1sYW5nPSQkbGFuZyAtLXByZXZpb3VzICQkbGFuZy5wbyAkKERPTUFJTikucG90IC1vICQkbGFuZy5uZXcucG8iOyBcCisJY2QgJChzcmNkaXIpOyBcCisJaWYgeyBjYXNlIGAkKE1TR01FUkdFKSAtLXZlcnNpb24gfCBzZWQgMXEgfCBzZWQgLWUgJ3MsXlteMC05XSosLCdgIGluIFwKKwkgICAgICAgJycgfCAwLlswLTldIHwgMC5bMC05XS4qIHwgMC4xWzAtNV0gfCAwLjFbMC01XS4qKSBcCisJICAgICAgICAgJChNU0dNRVJHRSkgJChNU0dNRVJHRV9PUFRJT05TKSAtbyAkJHRtcGRpci8kJGxhbmcubmV3LnBvICQkbGFuZy5wbyAkKERPTUFJTikucG90OzsgXAorCSAgICAgICAwLjFbNi03XSB8IDAuMVs2LTddLiopIFwKKwkgICAgICAgICAkKE1TR01FUkdFKSAkKE1TR01FUkdFX09QVElPTlMpIC0tcHJldmlvdXMgLW8gJCR0bXBkaXIvJCRsYW5nLm5ldy5wbyAkJGxhbmcucG8gJChET01BSU4pLnBvdDs7IFwKKwkgICAgICAgKikgXAorCSAgICAgICAgICQoTVNHTUVSR0UpICQoTVNHTUVSR0VfT1BUSU9OUykgLS1sYW5nPSQkbGFuZyAtLXByZXZpb3VzIC1vICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gJCRsYW5nLnBvICQoRE9NQUlOKS5wb3Q7OyBcCisJICAgICBlc2FjOyBcCisJICAgfTsgdGhlbiBcCisJICBpZiBjbXAgJCRsYW5nLnBvICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKKwkgICAgcm0gLWYgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbzsgXAorCSAgZWxzZSBcCisJICAgIGlmIG12IC1mICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gJCRsYW5nLnBvOyB0aGVuIFwKKwkgICAgICA6OyBcCisJICAgIGVsc2UgXAorCSAgICAgIGVjaG8gIm1zZ21lcmdlIGZvciAkJGxhbmcucG8gZmFpbGVkOiBjYW5ub3QgbW92ZSAkJHRtcGRpci8kJGxhbmcubmV3LnBvIHRvICQkbGFuZy5wbyIgMT4mMjsgXAorCSAgICAgIGV4aXQgMTsgXAorCSAgICBmaTsgXAorCSAgZmk7IFwKKwllbHNlIFwKKwkgIGVjaG8gIm1zZ21lcmdlIGZvciAkJGxhbmcucG8gZmFpbGVkISIgMT4mMjsgXAorCSAgcm0gLWYgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbzsgXAorCWZpCisKKyQoRFVNTVlQT0ZJTEVTKToKKwordXBkYXRlLWdtbzogTWFrZWZpbGUgJChHTU9GSUxFUykKKwlAOgorCisjIFJlY3JlYXRlIE1ha2VmaWxlIGJ5IGludm9raW5nIGNvbmZpZy5zdGF0dXMuIEV4cGxpY2l0bHkgaW52b2tlIHRoZSBzaGVsbCwKKyMgYmVjYXVzZSBleGVjdXRpb24gcGVybWlzc2lvbiBiaXRzIG1heSBub3Qgd29yayBvbiB0aGUgY3VycmVudCBmaWxlIHN5c3RlbS4KKyMgVXNlIEBTSEVMTEAsIHdoaWNoIGlzIHRoZSBzaGVsbCBkZXRlcm1pbmVkIGJ5IGF1dG9jb25mIGZvciB0aGUgdXNlIGJ5IGl0cworIyBzY3JpcHRzLCBub3QgJChTSEVMTCkgd2hpY2ggaXMgaGFyZHdpcmVkIHRvIC9iaW4vc2ggYW5kIG1heSBiZSBkZWZpY2llbnQuCitNYWtlZmlsZTogTWFrZWZpbGUuaW4uaW4gTWFrZXZhcnMgJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgQFBPTUFLRUZJTEVERVBTQAorCWNkICQodG9wX2J1aWxkZGlyKSBcCisJICAmJiBAU0hFTExAIC4vY29uZmlnLnN0YXR1cyAkKHN1YmRpcikvJEAuaW4gcG8tZGlyZWN0b3JpZXMKKworZm9yY2U6CisKKyMgVGVsbCB2ZXJzaW9ucyBbMy41OSwzLjYzKSBvZiBHTlUgbWFrZSBub3QgdG8gZXhwb3J0IGFsbCB2YXJpYWJsZXMuCisjIE90aGVyd2lzZSBhIHN5c3RlbSBsaW1pdCAoZm9yIFN5c1YgYXQgbGVhc3QpIG1heSBiZSBleGNlZWRlZC4KKy5OT0VYUE9SVDoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvZ2V0dGV4dC5tNCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvZ2V0dGV4dC5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzgzMjQxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9nZXR0ZXh0Lm00CkBAIC0wLDAgKzEsMzg2IEBACisjIGdldHRleHQubTQgc2VyaWFsIDcwIChnZXR0ZXh0LTAuMjApCitkbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMTQsIDIwMTYsIDIwMTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KK2RubAorZG5sIFRoaXMgZmlsZSBjYW4gYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlcgorZG5sIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBvciB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0CitkbmwgZnVuY3Rpb25hbGl0eS4KK2RubCBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgY29kZSBvZiB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpcyBjb3ZlcmVkCitkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCitkbmwgZ2V0dGV4dCBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorZG5sIFRoZXkgYXJlICpub3QqIGluIHRoZSBwdWJsaWMgZG9tYWluLgorCitkbmwgQXV0aG9yczoKK2RubCAgIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAxOTk1LTIwMDAuCitkbmwgICBCcnVubyBIYWlibGUgPGhhaWJsZUBjbGlzcC5jb25zLm9yZz4sIDIwMDAtMjAwNiwgMjAwOC0yMDEwLgorCitkbmwgTWFjcm8gdG8gYWRkIGZvciB1c2luZyBHTlUgZ2V0dGV4dC4KKworZG5sIFVzYWdlOiBBTV9HTlVfR0VUVEVYVChbSU5UTFNZTUJPTF0sIFtORUVEU1lNQk9MXSwgW0lOVExESVJdKS4KK2RubCBJTlRMU1lNQk9MIG11c3QgYmUgb25lIG9mICdleHRlcm5hbCcsICd1c2UtbGlidG9vbCcuCitkbmwgICAgSU5UTFNZTUJPTCBzaG91bGQgYmUgJ2V4dGVybmFsJyBmb3IgcGFja2FnZXMgb3RoZXIgdGhhbiBHTlUgZ2V0dGV4dCwgYW5kCitkbmwgICAgJ3VzZS1saWJ0b29sJyBmb3IgdGhlIHBhY2thZ2VzICdnZXR0ZXh0LXJ1bnRpbWUnIGFuZCAnZ2V0dGV4dC10b29scycuCitkbmwgICAgSWYgSU5UTFNZTUJPTCBpcyAndXNlLWxpYnRvb2wnLCB0aGVuIGEgbGlidG9vbCBsaWJyYXJ5CitkbmwgICAgJCh0b3BfYnVpbGRkaXIpL2ludGwvbGliaW50bC5sYSB3aWxsIGJlIGNyZWF0ZWQgKHNoYXJlZCBhbmQvb3Igc3RhdGljLAorZG5sICAgIGRlcGVuZGluZyBvbiAtLXtlbmFibGUsZGlzYWJsZX0te3NoYXJlZCxzdGF0aWN9IGFuZCBvbiB0aGUgcHJlc2VuY2Ugb2YKK2RubCAgICBBTS1ESVNBQkxFLVNIQVJFRCkuCitkbmwgSWYgTkVFRFNZTUJPTCBpcyBzcGVjaWZpZWQgYW5kIGlzICduZWVkLW5nZXR0ZXh0JywgdGhlbiBHTlUgZ2V0dGV4dAorZG5sICAgIGltcGxlbWVudGF0aW9ucyAoaW4gbGliYyBvciBsaWJpbnRsKSB3aXRob3V0IHRoZSBuZ2V0dGV4dCgpIGZ1bmN0aW9uCitkbmwgICAgd2lsbCBiZSBpZ25vcmVkLiAgSWYgTkVFRFNZTUJPTCBpcyBzcGVjaWZpZWQgYW5kIGlzCitkbmwgICAgJ25lZWQtZm9ybWF0c3RyaW5nLW1hY3JvcycsIHRoZW4gR05VIGdldHRleHQgaW1wbGVtZW50YXRpb25zIHRoYXQgZG9uJ3QKK2RubCAgICBzdXBwb3J0IHRoZSBJU08gQyA5OSA8aW50dHlwZXMuaD4gZm9ybWF0c3RyaW5nIG1hY3JvcyB3aWxsIGJlIGlnbm9yZWQuCitkbmwgSU5UTERJUiBpcyB1c2VkIHRvIGZpbmQgdGhlIGludGwgbGlicmFyaWVzLiAgSWYgZW1wdHksCitkbmwgICAgdGhlIHZhbHVlICckKHRvcF9idWlsZGRpcikvaW50bC8nIGlzIHVzZWQuCitkbmwKK2RubCBUaGUgcmVzdWx0IG9mIHRoZSBjb25maWd1cmF0aW9uIGlzIG9uZSBvZiB0aHJlZSBjYXNlczoKK2RubCAxKSBHTlUgZ2V0dGV4dCwgYXMgaW5jbHVkZWQgaW4gdGhlIGludGwgc3ViZGlyZWN0b3J5LCB3aWxsIGJlIGNvbXBpbGVkCitkbmwgICAgYW5kIHVzZWQuCitkbmwgICAgQ2F0YWxvZyBmb3JtYXQ6IEdOVSAtLT4gaW5zdGFsbCBpbiAkKGRhdGFkaXIpCitkbmwgICAgQ2F0YWxvZyBleHRlbnNpb246IC5tbyBhZnRlciBpbnN0YWxsYXRpb24sIC5nbW8gaW4gc291cmNlIHRyZWUKK2RubCAyKSBHTlUgZ2V0dGV4dCBoYXMgYmVlbiBmb3VuZCBpbiB0aGUgc3lzdGVtJ3MgQyBsaWJyYXJ5LgorZG5sICAgIENhdGFsb2cgZm9ybWF0OiBHTlUgLS0+IGluc3RhbGwgaW4gJChkYXRhZGlyKQorZG5sICAgIENhdGFsb2cgZXh0ZW5zaW9uOiAubW8gYWZ0ZXIgaW5zdGFsbGF0aW9uLCAuZ21vIGluIHNvdXJjZSB0cmVlCitkbmwgMykgTm8gaW50ZXJuYXRpb25hbGl6YXRpb24sIGFsd2F5cyB1c2UgRW5nbGlzaCBtc2dpZC4KK2RubCAgICBDYXRhbG9nIGZvcm1hdDogbm9uZQorZG5sICAgIENhdGFsb2cgZXh0ZW5zaW9uOiBub25lCitkbmwgSWYgSU5UTFNZTUJPTCBpcyAnZXh0ZXJuYWwnLCBvbmx5IGNhc2VzIDIgYW5kIDMgY2FuIG9jY3VyLgorZG5sIFRoZSB1c2Ugb2YgLmdtbyBpcyBoaXN0b3JpY2FsIChpdCB3YXMgbmVlZGVkIHRvIGF2b2lkIG92ZXJ3cml0aW5nIHRoZQorZG5sIEdOVSBmb3JtYXQgY2F0YWxvZ3Mgd2hlbiBidWlsZGluZyBvbiBhIHBsYXRmb3JtIHdpdGggYW4gWC9PcGVuIGdldHRleHQpLAorZG5sIGJ1dCB3ZSBrZWVwIGl0IGluIG9yZGVyIG5vdCB0byBmb3JjZSBpcnJlbGV2YW50IGZpbGVuYW1lIGNoYW5nZXMgb24gdGhlCitkbmwgbWFpbnRhaW5lcnMuCitkbmwKK0FDX0RFRlVOKFtBTV9HTlVfR0VUVEVYVF0sCitbCisgIGRubCBBcmd1bWVudCBjaGVja2luZy4KKyAgaWZlbHNlKFskMV0sIFtdLCAsIFtpZmVsc2UoWyQxXSwgW2V4dGVybmFsXSwgLCBbaWZlbHNlKFskMV0sIFt1c2UtbGlidG9vbF0sICwKKyAgICBbZXJycHJpbnQoW0VSUk9SOiBpbnZhbGlkIGZpcnN0IGFyZ3VtZW50IHRvIEFNX0dOVV9HRVRURVhUCitdKV0pXSldKQorICBpZmVsc2UoaWZlbHNlKFskMV0sIFtdLCBbb2xkXSlbXWlmZWxzZShbJDFdLCBbbm8tbGlidG9vbF0sIFtvbGRdKSwgW29sZF0sCisgICAgW2VycnByaW50KFtFUlJPUjogVXNlIG9mIEFNX0dOVV9HRVRURVhUIHdpdGhvdXQgW2V4dGVybmFsXSBhcmd1bWVudCBpcyBubyBsb25nZXIgc3VwcG9ydGVkLgorXSldKQorICBpZmVsc2UoWyQyXSwgW10sICwgW2lmZWxzZShbJDJdLCBbbmVlZC1uZ2V0dGV4dF0sICwgW2lmZWxzZShbJDJdLCBbbmVlZC1mb3JtYXRzdHJpbmctbWFjcm9zXSwgLAorICAgIFtlcnJwcmludChbRVJST1I6IGludmFsaWQgc2Vjb25kIGFyZ3VtZW50IHRvIEFNX0dOVV9HRVRURVhUCitdKV0pXSldKQorICBkZWZpbmUoW2d0X2luY2x1ZGVkX2ludGxdLAorICAgIGlmZWxzZShbJDFdLCBbZXh0ZXJuYWxdLCBbbm9dLCBbeWVzXSkpCisgIGd0X05FRURTX0lOSVQKKyAgQU1fR05VX0dFVFRFWFRfTkVFRChbJDJdKQorCisgIEFDX1JFUVVJUkUoW0FNX1BPX1NVQkRJUlNdKWRubAorICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCBbCisgICAgQUNfUkVRVUlSRShbQU1fSU5UTF9TVUJESVJdKWRubAorICBdKQorCisgIGRubCBQcmVyZXF1aXNpdGVzIG9mIEFDX0xJQl9MSU5LRkxBR1NfQk9EWS4KKyAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfUFJFRklYXSkKKyAgQUNfUkVRVUlSRShbQUNfTElCX1JQQVRIXSkKKworICBkbmwgU29tZXRpbWVzIGxpYmludGwgcmVxdWlyZXMgbGliaWNvbnYsIHNvIGZpcnN0IHNlYXJjaCBmb3IgbGliaWNvbnYuCisgIGRubCBJZGVhbGx5IHdlIHdvdWxkIGRvIHRoaXMgc2VhcmNoIG9ubHkgYWZ0ZXIgdGhlCisgIGRubCAgICAgIGlmIHRlc3QgIiRVU0VfTkxTIiA9ICJ5ZXMiOyB0aGVuCisgIGRubCAgICAgICAgaWYgeyBldmFsICJndF92YWw9XCQkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmMiOyB0ZXN0ICIkZ3RfdmFsIiAhPSAieWVzIjsgfTsgdGhlbgorICBkbmwgdGVzdHMuIEJ1dCBpZiBjb25maWd1cmUuaW4gaW52b2tlcyBBTV9JQ09OViBhZnRlciBBTV9HTlVfR0VUVEVYVAorICBkbmwgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgd291bGQgbmVlZCB0byBjb250YWluIHRoZSBzYW1lIHNoZWxsIGNvZGUKKyAgZG5sIGFnYWluLCBvdXRzaWRlIGFueSAnaWYnLiBUaGVyZSBhcmUgdHdvIHNvbHV0aW9uczoKKyAgZG5sIC0gSW52b2tlIEFNX0lDT05WX0xJTktGTEFHU19CT0RZIGhlcmUsIG91dHNpZGUgYW55ICdpZicuCisgIGRubCAtIENvbnRyb2wgdGhlIGV4cGFuc2lvbnMgaW4gbW9yZSBkZXRhaWwgdXNpbmcgQUNfUFJPVklERV9JRkVMU0UuCisgIGRubCBTaW5jZSBBQ19QUk9WSURFX0lGRUxTRSBpcyBub3QgZG9jdW1lbnRlZCwgd2UgYXZvaWQgaXQuCisgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsICwgWworICAgIEFDX1JFUVVJUkUoW0FNX0lDT05WX0xJTktGTEFHU19CT0RZXSkKKyAgXSkKKworICBkbmwgU29tZXRpbWVzLCBvbiBNYWMgT1MgWCwgbGliaW50bCByZXF1aXJlcyBsaW5raW5nIHdpdGggQ29yZUZvdW5kYXRpb24uCisgIGd0X0lOVExfTUFDT1NYCisKKyAgZG5sIFNldCBVU0VfTkxTLgorICBBQ19SRVFVSVJFKFtBTV9OTFNdKQorCisgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsIFsKKyAgICBCVUlMRF9JTkNMVURFRF9MSUJJTlRMPW5vCisgICAgVVNFX0lOQ0xVREVEX0xJQklOVEw9bm8KKyAgXSkKKyAgTElCSU5UTD0KKyAgTFRMSUJJTlRMPQorICBQT1NVQj0KKworICBkbmwgQWRkIGEgdmVyc2lvbiBudW1iZXIgdG8gdGhlIGNhY2hlIG1hY3Jvcy4KKyAgY2FzZSAiICRndF9uZWVkcyAiIGluCisgICAgKiIgbmVlZC1mb3JtYXRzdHJpbmctbWFjcm9zICIqKSBndF9hcGlfdmVyc2lvbj0zIDs7CisgICAgKiIgbmVlZC1uZ2V0dGV4dCAiKikgZ3RfYXBpX3ZlcnNpb249MiA7OworICAgICopIGd0X2FwaV92ZXJzaW9uPTEgOzsKKyAgZXNhYworICBndF9mdW5jX2dudWdldHRleHRfbGliYz0iZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0JHtndF9hcGlfdmVyc2lvbn1fbGliYyIKKyAgZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmludGw9Imd0X2N2X2Z1bmNfZ251Z2V0dGV4dCR7Z3RfYXBpX3ZlcnNpb259X2xpYmludGwiCisKKyAgZG5sIElmIHdlIHVzZSBOTFMgZmlndXJlIG91dCB3aGF0IG1ldGhvZAorICBpZiB0ZXN0ICIkVVNFX05MUyIgPSAieWVzIjsgdGhlbgorICAgIGd0X3VzZV9wcmVpbnN0YWxsZWRfZ251Z2V0dGV4dD1ubworICAgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsIFsKKyAgICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBpbmNsdWRlZCBnZXR0ZXh0IGlzIHJlcXVlc3RlZF0pCisgICAgICBBQ19BUkdfV0lUSChbaW5jbHVkZWQtZ2V0dGV4dF0sCisgICAgICAgIFsgIC0td2l0aC1pbmNsdWRlZC1nZXR0ZXh0IHVzZSB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpbmNsdWRlZCBoZXJlXSwKKyAgICAgICAgbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dD0kd2l0aHZhbCwKKyAgICAgICAgbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dD1ubykKKyAgICAgIEFDX01TR19SRVNVTFQoWyRubHNfY3ZfZm9yY2VfdXNlX2dudV9nZXR0ZXh0XSkKKworICAgICAgbmxzX2N2X3VzZV9nbnVfZ2V0dGV4dD0iJG5sc19jdl9mb3JjZV91c2VfZ251X2dldHRleHQiCisgICAgICBpZiB0ZXN0ICIkbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dCIgIT0gInllcyI7IHRoZW4KKyAgICBdKQorICAgICAgICBkbmwgVXNlciBkb2VzIG5vdCBpbnNpc3Qgb24gdXNpbmcgR05VIE5MUyBsaWJyYXJ5LiAgRmlndXJlIG91dCB3aGF0CisgICAgICAgIGRubCB0byB1c2UuICBJZiBHTlUgZ2V0dGV4dCBpcyBhdmFpbGFibGUgd2UgdXNlIHRoaXMuICBFbHNlIHdlIGhhdmUKKyAgICAgICAgZG5sIHRvIGZhbGwgYmFjayB0byBHTlUgTkxTIGxpYnJhcnkuCisKKyAgICAgICAgaWYgdGVzdCAkZ3RfYXBpX3ZlcnNpb24gLWdlIDM7IHRoZW4KKyAgICAgICAgICBndF9yZXZpc2lvbl90ZXN0X2NvZGU9JworI2lmbmRlZiBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTgorI2RlZmluZSBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTihtYWpvcikgKChtYWpvcikgPT0gMCA/IDAgOiAtMSkKKyNlbmRpZgorY2hhbmdlcXVvdGUoLClkbmwKK3R5cGVkZWYgaW50IGFycmF5IFsyICogKF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OKDApID49IDEpIC0gMV07CitjaGFuZ2VxdW90ZShbLF0pZG5sCisnCisgICAgICAgIGVsc2UKKyAgICAgICAgICBndF9yZXZpc2lvbl90ZXN0X2NvZGU9CisgICAgICAgIGZpCisgICAgICAgIGlmIHRlc3QgJGd0X2FwaV92ZXJzaW9uIC1nZSAyOyB0aGVuCisgICAgICAgICAgZ3RfZXhwcmVzc2lvbl90ZXN0X2NvZGU9JyArICogbmdldHRleHQgKCIiLCAiIiwgMCknCisgICAgICAgIGVsc2UKKyAgICAgICAgICBndF9leHByZXNzaW9uX3Rlc3RfY29kZT0KKyAgICAgICAgZmkKKworICAgICAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIEdOVSBnZXR0ZXh0IGluIGxpYmNdLCBbJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJjXSwKKyAgICAgICAgIFtBQ19MSU5LX0lGRUxTRSgKKyAgICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgICAgICBbWworI2luY2x1ZGUgPGxpYmludGwuaD4KKyNpZm5kZWYgX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04KK2V4dGVybiBpbnQgX25sX21zZ19jYXRfY250cjsKK2V4dGVybiBpbnQgKl9ubF9kb21haW5fYmluZGluZ3M7CisjZGVmaW5lIF9fR05VX0dFVFRFWFRfU1lNQk9MX0VYUFJFU1NJT04gKF9ubF9tc2dfY2F0X2NudHIgKyAqX25sX2RvbWFpbl9iaW5kaW5ncykKKyNlbHNlCisjZGVmaW5lIF9fR05VX0dFVFRFWFRfU1lNQk9MX0VYUFJFU1NJT04gMAorI2VuZGlmCiskZ3RfcmV2aXNpb25fdGVzdF9jb2RlCisgICAgICAgICAgICAgICBdXSwKKyAgICAgICAgICAgICAgIFtbCitiaW5kdGV4dGRvbWFpbiAoIiIsICIiKTsKK3JldHVybiAqIGdldHRleHQgKCIiKSRndF9leHByZXNzaW9uX3Rlc3RfY29kZSArIF9fR05VX0dFVFRFWFRfU1lNQk9MX0VYUFJFU1NJT04KKyAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICBbZXZhbCAiJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJjPXllcyJdLAorICAgICAgICAgICAgW2V2YWwgIiRndF9mdW5jX2dudWdldHRleHRfbGliYz1ubyJdKV0pCisKKyAgICAgICAgaWYgeyBldmFsICJndF92YWw9XCQkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmMiOyB0ZXN0ICIkZ3RfdmFsIiAhPSAieWVzIjsgfTsgdGhlbgorICAgICAgICAgIGRubCBTb21ldGltZXMgbGliaW50bCByZXF1aXJlcyBsaWJpY29udiwgc28gZmlyc3Qgc2VhcmNoIGZvciBsaWJpY29udi4KKyAgICAgICAgICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCAsIFsKKyAgICAgICAgICAgIEFNX0lDT05WX0xJTksKKyAgICAgICAgICBdKQorICAgICAgICAgIGRubCBTZWFyY2ggZm9yIGxpYmludGwgYW5kIGRlZmluZSBMSUJJTlRMLCBMVExJQklOVEwgYW5kIElOQ0lOVEwKKyAgICAgICAgICBkbmwgYWNjb3JkaW5nbHkuIERvbid0IHVzZSBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW2ludGxdLFtpY29udl0pCisgICAgICAgICAgZG5sIGJlY2F1c2UgdGhhdCB3b3VsZCBhZGQgIi1saWNvbnYiIHRvIExJQklOVEwgYW5kIExUTElCSU5UTAorICAgICAgICAgIGRubCBldmVuIGlmIGxpYmljb252IGRvZXNuJ3QgZXhpc3QuCisgICAgICAgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFtpbnRsXSkKKyAgICAgICAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIEdOVSBnZXR0ZXh0IGluIGxpYmludGxdLAorICAgICAgICAgICAgWyRndF9mdW5jX2dudWdldHRleHRfbGliaW50bF0sCisgICAgICAgICAgIFtndF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisgICAgICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTICRJTkNJTlRMIgorICAgICAgICAgICAgZ3Rfc2F2ZV9MSUJTPSIkTElCUyIKKyAgICAgICAgICAgIExJQlM9IiRMSUJTICRMSUJJTlRMIgorICAgICAgICAgICAgZG5sIE5vdyBzZWUgd2hldGhlciBsaWJpbnRsIGV4aXN0cyBhbmQgZG9lcyBub3QgZGVwZW5kIG9uIGxpYmljb252LgorICAgICAgICAgICAgQUNfTElOS19JRkVMU0UoCisgICAgICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgICAgICAgIFtbCisjaW5jbHVkZSA8bGliaW50bC5oPgorI2lmbmRlZiBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTgorZXh0ZXJuIGludCBfbmxfbXNnX2NhdF9jbnRyOworZXh0ZXJuCisjaWZkZWYgX19jcGx1c3BsdXMKKyJDIgorI2VuZGlmCitjb25zdCBjaGFyICpfbmxfZXhwYW5kX2FsaWFzIChjb25zdCBjaGFyICopOworI2RlZmluZSBfX0dOVV9HRVRURVhUX1NZTUJPTF9FWFBSRVNTSU9OIChfbmxfbXNnX2NhdF9jbnRyICsgKl9ubF9leHBhbmRfYWxpYXMgKCIiKSkKKyNlbHNlCisjZGVmaW5lIF9fR05VX0dFVFRFWFRfU1lNQk9MX0VYUFJFU1NJT04gMAorI2VuZGlmCiskZ3RfcmV2aXNpb25fdGVzdF9jb2RlCisgICAgICAgICAgICAgICAgIF1dLAorICAgICAgICAgICAgICAgICBbWworYmluZHRleHRkb21haW4gKCIiLCAiIik7CityZXR1cm4gKiBnZXR0ZXh0ICgiIikkZ3RfZXhwcmVzc2lvbl90ZXN0X2NvZGUgKyBfX0dOVV9HRVRURVhUX1NZTUJPTF9FWFBSRVNTSU9OCisgICAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgIFtldmFsICIkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmludGw9eWVzIl0sCisgICAgICAgICAgICAgIFtldmFsICIkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmludGw9bm8iXSkKKyAgICAgICAgICAgIGRubCBOb3cgc2VlIHdoZXRoZXIgbGliaW50bCBleGlzdHMgYW5kIGRlcGVuZHMgb24gbGliaWNvbnYuCisgICAgICAgICAgICBpZiB7IGV2YWwgImd0X3ZhbD1cJCRndF9mdW5jX2dudWdldHRleHRfbGliaW50bCI7IHRlc3QgIiRndF92YWwiICE9IHllczsgfSAmJiB0ZXN0IC1uICIkTElCSUNPTlYiOyB0aGVuCisgICAgICAgICAgICAgIExJQlM9IiRMSUJTICRMSUJJQ09OViIKKyAgICAgICAgICAgICAgQUNfTElOS19JRkVMU0UoCisgICAgICAgICAgICAgICAgW0FDX0xBTkdfUFJPR1JBTSgKKyAgICAgICAgICAgICAgICAgICBbWworI2luY2x1ZGUgPGxpYmludGwuaD4KKyNpZm5kZWYgX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04KK2V4dGVybiBpbnQgX25sX21zZ19jYXRfY250cjsKK2V4dGVybgorI2lmZGVmIF9fY3BsdXNwbHVzCisiQyIKKyNlbmRpZgorY29uc3QgY2hhciAqX25sX2V4cGFuZF9hbGlhcyAoY29uc3QgY2hhciAqKTsKKyNkZWZpbmUgX19HTlVfR0VUVEVYVF9TWU1CT0xfRVhQUkVTU0lPTiAoX25sX21zZ19jYXRfY250ciArICpfbmxfZXhwYW5kX2FsaWFzICgiIikpCisjZWxzZQorI2RlZmluZSBfX0dOVV9HRVRURVhUX1NZTUJPTF9FWFBSRVNTSU9OIDAKKyNlbmRpZgorJGd0X3JldmlzaW9uX3Rlc3RfY29kZQorICAgICAgICAgICAgICAgICAgIF1dLAorICAgICAgICAgICAgICAgICAgIFtbCitiaW5kdGV4dGRvbWFpbiAoIiIsICIiKTsKK3JldHVybiAqIGdldHRleHQgKCIiKSRndF9leHByZXNzaW9uX3Rlc3RfY29kZSArIF9fR05VX0dFVFRFWFRfU1lNQk9MX0VYUFJFU1NJT04KKyAgICAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgICAgIFtMSUJJTlRMPSIkTElCSU5UTCAkTElCSUNPTlYiCisgICAgICAgICAgICAgICAgIExUTElCSU5UTD0iJExUTElCSU5UTCAkTFRMSUJJQ09OViIKKyAgICAgICAgICAgICAgICAgZXZhbCAiJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsPXllcyIKKyAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIENQUEZMQUdTPSIkZ3Rfc2F2ZV9DUFBGTEFHUyIKKyAgICAgICAgICAgIExJQlM9IiRndF9zYXZlX0xJQlMiXSkKKyAgICAgICAgZmkKKworICAgICAgICBkbmwgSWYgYW4gYWxyZWFkeSBwcmVzZW50IG9yIHByZWluc3RhbGxlZCBHTlUgZ2V0dGV4dCgpIGlzIGZvdW5kLAorICAgICAgICBkbmwgdXNlIGl0LiAgQnV0IGlmIHRoaXMgbWFjcm8gaXMgdXNlZCBpbiBHTlUgZ2V0dGV4dCwgYW5kIEdOVQorICAgICAgICBkbmwgZ2V0dGV4dCBpcyBhbHJlYWR5IHByZWluc3RhbGxlZCBpbiBsaWJpbnRsLCB3ZSB1cGRhdGUgdGhpcworICAgICAgICBkbmwgbGliaW50bC4gIChDZi4gdGhlIGluc3RhbGwgcnVsZSBpbiBpbnRsL01ha2VmaWxlLmluLikKKyAgICAgICAgaWYgeyBldmFsICJndF92YWw9XCQkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmMiOyB0ZXN0ICIkZ3RfdmFsIiA9ICJ5ZXMiOyB9IFwKKyAgICAgICAgICAgfHwgeyB7IGV2YWwgImd0X3ZhbD1cJCRndF9mdW5jX2dudWdldHRleHRfbGliaW50bCI7IHRlc3QgIiRndF92YWwiID0gInllcyI7IH0gXAorICAgICAgICAgICAgICAgICYmIHRlc3QgIiRQQUNLQUdFIiAhPSBnZXR0ZXh0LXJ1bnRpbWUgXAorICAgICAgICAgICAgICAgICYmIHRlc3QgIiRQQUNLQUdFIiAhPSBnZXR0ZXh0LXRvb2xzOyB9OyB0aGVuCisgICAgICAgICAgZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0PXllcworICAgICAgICBlbHNlCisgICAgICAgICAgZG5sIFJlc2V0IHRoZSB2YWx1ZXMgc2V0IGJ5IHNlYXJjaGluZyBmb3IgbGliaW50bC4KKyAgICAgICAgICBMSUJJTlRMPQorICAgICAgICAgIExUTElCSU5UTD0KKyAgICAgICAgICBJTkNJTlRMPQorICAgICAgICBmaQorCisgICAgaWZlbHNlKGd0X2luY2x1ZGVkX2ludGwsIHllcywgWworICAgICAgICBpZiB0ZXN0ICIkZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0IiAhPSAieWVzIjsgdGhlbgorICAgICAgICAgIGRubCBHTlUgZ2V0dGV4dCBpcyBub3QgZm91bmQgaW4gdGhlIEMgbGlicmFyeS4KKyAgICAgICAgICBkbmwgRmFsbCBiYWNrIG9uIGluY2x1ZGVkIEdOVSBnZXR0ZXh0IGxpYnJhcnkuCisgICAgICAgICAgbmxzX2N2X3VzZV9nbnVfZ2V0dGV4dD15ZXMKKyAgICAgICAgZmkKKyAgICAgIGZpCisKKyAgICAgIGlmIHRlc3QgIiRubHNfY3ZfdXNlX2dudV9nZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgIGRubCBNYXJrIGFjdGlvbnMgdXNlZCB0byBnZW5lcmF0ZSBHTlUgTkxTIGxpYnJhcnkuCisgICAgICAgIEJVSUxEX0lOQ0xVREVEX0xJQklOVEw9eWVzCisgICAgICAgIFVTRV9JTkNMVURFRF9MSUJJTlRMPXllcworICAgICAgICBMSUJJTlRMPSJpZmVsc2UoWyQzXSxbXSxcJHt0b3BfYnVpbGRkaXJ9L2ludGwsWyQzXSkvbGliaW50bC5sYSAkTElCSUNPTlYgJExJQlRIUkVBRCIKKyAgICAgICAgTFRMSUJJTlRMPSJpZmVsc2UoWyQzXSxbXSxcJHt0b3BfYnVpbGRkaXJ9L2ludGwsWyQzXSkvbGliaW50bC5sYSAkTFRMSUJJQ09OViAkTFRMSUJUSFJFQUQiCisgICAgICAgIExJQlM9YGVjaG8gIiAkTElCUyAiIHwgc2VkIC1lICdzLyAtbGludGwgLyAvJyAtZSAncy9eIC8vJyAtZSAncy8gJC8vJ2AKKyAgICAgIGZpCisKKyAgICAgIENBVE9CSkVYVD0KKyAgICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyIgXAorICAgICAgICAgfHwgdGVzdCAiJG5sc19jdl91c2VfZ251X2dldHRleHQiID0gInllcyI7IHRoZW4KKyAgICAgICAgZG5sIE1hcmsgYWN0aW9ucyB0byB1c2UgR05VIGdldHRleHQgdG9vbHMuCisgICAgICAgIENBVE9CSkVYVD0uZ21vCisgICAgICBmaQorICAgIF0pCisKKyAgICBpZiB0ZXN0IC1uICIkSU5UTF9NQUNPU1hfTElCUyI7IHRoZW4KKyAgICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyIgXAorICAgICAgICAgfHwgdGVzdCAiJG5sc19jdl91c2VfZ251X2dldHRleHQiID0gInllcyI7IHRoZW4KKyAgICAgICAgZG5sIFNvbWUgZXh0cmEgZmxhZ3MgYXJlIG5lZWRlZCBkdXJpbmcgbGlua2luZy4KKyAgICAgICAgTElCSU5UTD0iJExJQklOVEwgJElOVExfTUFDT1NYX0xJQlMiCisgICAgICAgIExUTElCSU5UTD0iJExUTElCSU5UTCAkSU5UTF9NQUNPU1hfTElCUyIKKyAgICAgIGZpCisgICAgZmkKKworICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyIgXAorICAgICAgIHx8IHRlc3QgIiRubHNfY3ZfdXNlX2dudV9nZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCisgICAgICBBQ19ERUZJTkUoW0VOQUJMRV9OTFNdLCBbMV0sCisgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB0cmFuc2xhdGlvbiBvZiBwcm9ncmFtIG1lc3NhZ2VzIHRvIHRoZSB1c2VyJ3MgbmF0aXZlIGxhbmd1YWdlCisgICBpcyByZXF1ZXN0ZWQuXSkKKyAgICBlbHNlCisgICAgICBVU0VfTkxTPW5vCisgICAgZmkKKyAgZmkKKworICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gdXNlIE5MU10pCisgIEFDX01TR19SRVNVTFQoWyRVU0VfTkxTXSkKKyAgaWYgdGVzdCAiJFVTRV9OTFMiID0gInllcyI7IHRoZW4KKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXJlIHRoZSBnZXR0ZXh0IGZ1bmN0aW9uIGNvbWVzIGZyb21dKQorICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyI7IHRoZW4KKyAgICAgIGlmIHsgZXZhbCAiZ3RfdmFsPVwkJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsIjsgdGVzdCAiJGd0X3ZhbCIgPSAieWVzIjsgfTsgdGhlbgorICAgICAgICBndF9zb3VyY2U9ImV4dGVybmFsIGxpYmludGwiCisgICAgICBlbHNlCisgICAgICAgIGd0X3NvdXJjZT0ibGliYyIKKyAgICAgIGZpCisgICAgZWxzZQorICAgICAgZ3Rfc291cmNlPSJpbmNsdWRlZCBpbnRsIGRpcmVjdG9yeSIKKyAgICBmaQorICAgIEFDX01TR19SRVNVTFQoWyRndF9zb3VyY2VdKQorICBmaQorCisgIGlmIHRlc3QgIiRVU0VfTkxTIiA9ICJ5ZXMiOyB0aGVuCisKKyAgICBpZiB0ZXN0ICIkZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCisgICAgICBpZiB7IGV2YWwgImd0X3ZhbD1cJCRndF9mdW5jX2dudWdldHRleHRfbGliaW50bCI7IHRlc3QgIiRndF92YWwiID0gInllcyI7IH07IHRoZW4KKyAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gbGluayB3aXRoIGxpYmludGxdKQorICAgICAgICBBQ19NU0dfUkVTVUxUKFskTElCSU5UTF0pCisgICAgICAgIEFDX0xJQl9BUFBFTkRUT1ZBUihbQ1BQRkxBR1NdLCBbJElOQ0lOVExdKQorICAgICAgZmkKKworICAgICAgZG5sIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBTb21lIHBhY2thZ2VzIG1heSBiZSB1c2luZyB0aGlzLgorICAgICAgQUNfREVGSU5FKFtIQVZFX0dFVFRFWFRdLCBbMV0sCisgICAgICAgW0RlZmluZSBpZiB0aGUgR05VIGdldHRleHQoKSBmdW5jdGlvbiBpcyBhbHJlYWR5IHByZXNlbnQgb3IgcHJlaW5zdGFsbGVkLl0pCisgICAgICBBQ19ERUZJTkUoW0hBVkVfRENHRVRURVhUXSwgWzFdLAorICAgICAgIFtEZWZpbmUgaWYgdGhlIEdOVSBkY2dldHRleHQoKSBmdW5jdGlvbiBpcyBhbHJlYWR5IHByZXNlbnQgb3IgcHJlaW5zdGFsbGVkLl0pCisgICAgZmkKKworICAgIGRubCBXZSBuZWVkIHRvIHByb2Nlc3MgdGhlIHBvLyBkaXJlY3RvcnkuCisgICAgUE9TVUI9cG8KKyAgZmkKKworICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCBbCisgICAgZG5sIEluIEdOVSBnZXR0ZXh0IHdlIGhhdmUgdG8gc2V0IEJVSUxEX0lOQ0xVREVEX0xJQklOVEwgdG8gJ3llcycKKyAgICBkbmwgYmVjYXVzZSBzb21lIG9mIHRoZSB0ZXN0c3VpdGUgcmVxdWlyZXMgaXQuCisgICAgQlVJTERfSU5DTFVERURfTElCSU5UTD15ZXMKKworICAgIGRubCBNYWtlIGFsbCB2YXJpYWJsZXMgd2UgdXNlIGtub3duIHRvIGF1dG9jb25mLgorICAgIEFDX1NVQlNUKFtCVUlMRF9JTkNMVURFRF9MSUJJTlRMXSkKKyAgICBBQ19TVUJTVChbVVNFX0lOQ0xVREVEX0xJQklOVExdKQorICAgIEFDX1NVQlNUKFtDQVRPQkpFWFRdKQorICBdKQorCisgIGRubCBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gU29tZSBNYWtlZmlsZXMgbWF5IGJlIHVzaW5nIHRoaXMuCisgIElOVExMSUJTPSIkTElCSU5UTCIKKyAgQUNfU1VCU1QoW0lOVExMSUJTXSkKKworICBkbmwgTWFrZSBhbGwgZG9jdW1lbnRlZCB2YXJpYWJsZXMga25vd24gdG8gYXV0b2NvbmYuCisgIEFDX1NVQlNUKFtMSUJJTlRMXSkKKyAgQUNfU1VCU1QoW0xUTElCSU5UTF0pCisgIEFDX1NVQlNUKFtQT1NVQl0pCitdKQorCisKK2RubCBndF9ORUVEU19JTklUIGVuc3VyZXMgdGhhdCB0aGUgZ3RfbmVlZHMgdmFyaWFibGUgaXMgaW5pdGlhbGl6ZWQuCittNF9kZWZpbmUoW2d0X05FRURTX0lOSVRdLAorWworICBtNF9kaXZlcnRfdGV4dChbREVGQVVMVFNdLCBbZ3RfbmVlZHM9XSkKKyAgbTRfZGVmaW5lKFtndF9ORUVEU19JTklUXSwgW10pCitdKQorCisKK2RubCBVc2FnZTogQU1fR05VX0dFVFRFWFRfTkVFRChbTkVFRFNZTUJPTF0pCitBQ19ERUZVTihbQU1fR05VX0dFVFRFWFRfTkVFRF0sCitbCisgIG00X2RpdmVydF90ZXh0KFtJTklUX1BSRVBBUkVdLCBbZ3RfbmVlZHM9IiRndF9uZWVkcyAkMSJdKQorXSkKKworCitkbmwgVXNhZ2U6IEFNX0dOVV9HRVRURVhUX1ZFUlNJT04oW2dldHRleHQtdmVyc2lvbl0pCitBQ19ERUZVTihbQU1fR05VX0dFVFRFWFRfVkVSU0lPTl0sIFtdKQorCisKK2RubCBVc2FnZTogQU1fR05VX0dFVFRFWFRfUkVRVUlSRV9WRVJTSU9OKFtnZXR0ZXh0LXZlcnNpb25dKQorQUNfREVGVU4oW0FNX0dOVV9HRVRURVhUX1JFUVVJUkVfVkVSU0lPTl0sIFtdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9ob3N0LWNwdS1jLWFiaS5tNCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvaG9zdC1jcHUtYy1hYmkubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQwNzI5NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvaG9zdC1jcHUtYy1hYmkubTQKQEAgLTAsMCArMSw2NDQgQEAKKyMgaG9zdC1jcHUtYy1hYmkubTQgc2VyaWFsIDExCitkbmwgQ29weXJpZ2h0IChDKSAyMDAyLTIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworZG5sIEZyb20gQnJ1bm8gSGFpYmxlIGFuZCBTYW0gU3RlaW5nb2xkLgorCitkbmwgU2V0cyB0aGUgSE9TVF9DUFUgdmFyaWFibGUgdG8gdGhlIGNhbm9uaWNhbCBuYW1lIG9mIHRoZSBDUFUuCitkbmwgU2V0cyB0aGUgSE9TVF9DUFVfQ19BQkkgdmFyaWFibGUgdG8gdGhlIGNhbm9uaWNhbCBuYW1lIG9mIHRoZSBDUFUgd2l0aCBpdHMKK2RubCBDIGxhbmd1YWdlIEFCSSAoYXBwbGljYXRpb24gYmluYXJ5IGludGVyZmFjZSkuCitkbmwgQWxzbyBkZWZpbmVzIF9fJHtIT1NUX0NQVX1fXyBhbmQgX18ke0hPU1RfQ1BVX0NfQUJJfV9fIGFzIEMgbWFjcm9zIGluCitkbmwgY29uZmlnLmguCitkbmwKK2RubCBUaGlzIGNhbm9uaWNhbCBuYW1lIGNhbiBiZSB1c2VkIHRvIHNlbGVjdCBhIHBhcnRpY3VsYXIgYXNzZW1ibHkgbGFuZ3VhZ2UKK2RubCBzb3VyY2UgZmlsZSB0aGF0IHdpbGwgaW50ZXJvcGVyYXRlIHdpdGggQyBjb2RlIG9uIHRoZSBnaXZlbiBob3N0LgorZG5sCitkbmwgRm9yIGV4YW1wbGU6CitkbmwgKiAnaTM4NicgYW5kICdzcGFyYycgYXJlIGRpZmZlcmVudCBjYW5vbmljYWwgbmFtZXMsIGJlY2F1c2UgY29kZSBmb3IgaTM4NgorZG5sICAgd2lsbCBub3QgcnVuIG9uIFNQQVJDIENQVXMgYW5kIHZpY2UgdmVyc2EuIFRoZXkgaGF2ZSBkaWZmZXJlbnQKK2RubCAgIGluc3RydWN0aW9uIHNldHMuCitkbmwgKiAnc3BhcmMnIGFuZCAnc3BhcmM2NCcgYXJlIGRpZmZlcmVudCBjYW5vbmljYWwgbmFtZXMsIGJlY2F1c2UgY29kZSBmb3IKK2RubCAgICdzcGFyYycgYW5kIGNvZGUgZm9yICdzcGFyYzY0JyBjYW5ub3QgYmUgbGlua2VkIHRvZ2V0aGVyOiAnc3BhcmMnIGNvZGUKK2RubCAgIGNvbnRhaW5zIDMyLWJpdCBpbnN0cnVjdGlvbnMsIHdoZXJlYXMgJ3NwYXJjNjQnIGNvZGUgY29udGFpbnMgNjQtYml0CitkbmwgICBpbnN0cnVjdGlvbnMuIEEgcHJvY2VzcyBvbiBhIFNQQVJDIENQVSBjYW4gYmUgaW4gMzItYml0IG1vZGUgb3IgaW4gNjQtYml0CitkbmwgICBtb2RlLCBidXQgbm90IGJvdGguCitkbmwgKiAnbWlwcycgYW5kICdtaXBzbjMyJyBhcmUgZGlmZmVyZW50IGNhbm9uaWNhbCBuYW1lcywgYmVjYXVzZSB0aGV5IHVzZQorZG5sICAgZGlmZmVyZW50IGFyZ3VtZW50IHBhc3NpbmcgYW5kIHJldHVybiBjb252ZW50aW9ucyBmb3IgQyBmdW5jdGlvbnMsIGFuZAorZG5sICAgYWx0aG91Z2ggdGhlIGluc3RydWN0aW9uIHNldCBvZiAnbWlwcycgaXMgYSBsYXJnZSBzdWJzZXQgb2YgdGhlCitkbmwgICBpbnN0cnVjdGlvbiBzZXQgb2YgJ21pcHNuMzInLgorZG5sICogJ21pcHNuMzInIGFuZCAnbWlwczY0JyBhcmUgZGlmZmVyZW50IGNhbm9uaWNhbCBuYW1lcywgYmVjYXVzZSB0aGV5IHVzZQorZG5sICAgZGlmZmVyZW50IHNpemVzIGZvciB0aGUgQyB0eXBlcyBsaWtlICdpbnQnIGFuZCAndm9pZCAqJywgYW5kIGFsdGhvdWdoCitkbmwgICB0aGUgaW5zdHJ1Y3Rpb24gc2V0cyBvZiAnbWlwc24zMicgYW5kICdtaXBzNjQnIGFyZSB0aGUgc2FtZS4KK2RubCAqIFRoZSBzYW1lIGNhbm9uaWNhbCBuYW1lIGlzIHVzZWQgZm9yIGRpZmZlcmVudCBlbmRpYW5uZXNzZXMuIFlvdSBjYW4KK2RubCAgIGRldGVybWluZSB0aGUgZW5kaWFubmVzcyB0aHJvdWdoIHByZXByb2Nlc3NvciBzeW1ib2xzOgorZG5sICAgLSAnYXJtJzogdGVzdCBfX0FSTUVMX18uCitkbmwgICAtICdtaXBzJywgJ21pcHNuMzInLCAnbWlwczY0JzogdGVzdCBfTUlQU0VCIHZzLiBfTUlQU0VMLgorZG5sICAgLSAncG93ZXJwYzY0JzogdGVzdCBfQklHX0VORElBTiB2cy4gX0xJVFRMRV9FTkRJQU4uCitkbmwgKiBUaGUgc2FtZSBuYW1lICdpMzg2JyBpcyB1c2VkIGZvciBDUFVzIG9mIHR5cGUgaTM4NiwgaTQ4NiwgaTU4NgorZG5sICAgKFBlbnRpdW0pLCBBTUQgSzcsIFBlbnRpdW0gSUksIFBlbnRpdW0gSVYsIGV0Yy4sIGJlY2F1c2UKK2RubCAgIC0gSW5zdHJ1Y3Rpb25zIHRoYXQgZG8gbm90IGV4aXN0IG9uIGFsbCBvZiB0aGVzZSBDUFVzIChjbXB4Y2hnLAorZG5sICAgICBNTVgsIFNTRSwgU1NFMiwgM0ROb3chIGV0Yy4pIGFyZSBub3QgZnJlcXVlbnRseSB1c2VkLiBJZiB5b3VyCitkbmwgICAgIGFzc2VtYmx5IGxhbmd1YWdlIHNvdXJjZSBmaWxlcyB1c2Ugc3VjaCBpbnN0cnVjdGlvbnMsIHlvdSB3aWxsCitkbmwgICAgIG5lZWQgdG8gbWFrZSB0aGUgZGlzdGluY3Rpb24uCitkbmwgICAtIFNwZWVkIG9mIGV4ZWN1dGlvbiBvZiB0aGUgY29tbW9uIGluc3RydWN0aW9uIHNldCBpcyByZWFzb25hYmxlIGFjcm9zcworZG5sICAgICB0aGUgZW50aXJlIGZhbWlseSBvZiBDUFVzLiBJZiB5b3UgaGF2ZSBhc3NlbWJseSBsYW5ndWFnZSBzb3VyY2UgZmlsZXMKK2RubCAgICAgdGhhdCBhcmUgb3B0aW1pemVkIGZvciBwYXJ0aWN1bGFyIENQVSB0eXBlcyAobGlrZSBHTlUgZ21wIGhhcyksIHlvdQorZG5sICAgICB3aWxsIG5lZWQgdG8gbWFrZSB0aGUgZGlzdGluY3Rpb24uCitkbmwgICBTZWUgPGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1g4Nl9pbnN0cnVjdGlvbl9saXN0aW5ncz4uCitBQ19ERUZVTihbZ2xfSE9TVF9DUFVfQ19BQkldLAorWworICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCisgIEFDX1JFUVVJUkUoW2dsX0NfQVNNXSkKKyAgQUNfQ0FDSEVfQ0hFQ0soW2hvc3QgQ1BVIGFuZCBDIEFCSV0sIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV0sCisgICAgW2Nhc2UgIiRob3N0X2NwdSIgaW4KKworY2hhbmdlcXVvdGUoLClkbmwKKyAgICAgICBpWzQ1NjddODYgKQorY2hhbmdlcXVvdGUoWyxdKWRubAorICAgICAgICAgZ2xfY3ZfaG9zdF9jcHVfY19hYmk9aTM4NgorICAgICAgICAgOzsKKworICAgICAgIHg4Nl82NCApCisgICAgICAgICAjIE9uIHg4Nl82NCBzeXN0ZW1zLCB0aGUgQyBjb21waWxlciBtYXkgYmUgZ2VuZXJhdGluZyBjb2RlIGluIG9uZSBvZgorICAgICAgICAgIyB0aGVzZSBBQklzOgorICAgICAgICAgIyAtIDY0LWJpdCBpbnN0cnVjdGlvbiBzZXQsIDY0LWJpdCBwb2ludGVycywgNjQtYml0ICdsb25nJzogeDg2XzY0LgorICAgICAgICAgIyAtIDY0LWJpdCBpbnN0cnVjdGlvbiBzZXQsIDY0LWJpdCBwb2ludGVycywgMzItYml0ICdsb25nJzogeDg2XzY0CisgICAgICAgICAjICAgd2l0aCBuYXRpdmUgV2luZG93cyAobWluZ3csIE1TVkMpLgorICAgICAgICAgIyAtIDY0LWJpdCBpbnN0cnVjdGlvbiBzZXQsIDMyLWJpdCBwb2ludGVycywgMzItYml0ICdsb25nJzogeDg2XzY0LXgzMi4KKyAgICAgICAgICMgLSAzMi1iaXQgaW5zdHJ1Y3Rpb24gc2V0LCAzMi1iaXQgcG9pbnRlcnMsIDMyLWJpdCAnbG9uZyc6IGkzODYuCisgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICBbWyNpZiAoZGVmaW5lZCBfX3g4Nl82NF9fIHx8IGRlZmluZWQgX19hbWQ2NF9fIFwKKyAgICAgICAgICAgICAgICAgICAgIHx8IGRlZmluZWQgX01fWDY0IHx8IGRlZmluZWQgX01fQU1ENjQpCisgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgIFtBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9fSUxQMzJfXyB8fCBkZWZpbmVkIF9JTFAzMgorICAgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmk9eDg2XzY0LXgzMl0sCisgICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT14ODZfNjRdKV0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1pMzg2XSkKKyAgICAgICAgIDs7CisKK2NoYW5nZXF1b3RlKCwpZG5sCisgICAgICAgYWxwaGFldls0LThdIHwgYWxwaGFldjU2IHwgYWxwaGFwY2E1WzY3XSB8IGFscGhhZXY2Wzc4XSApCitjaGFuZ2VxdW90ZShbLF0pZG5sCisgICAgICAgICBnbF9jdl9ob3N0X2NwdV9jX2FiaT1hbHBoYQorICAgICAgICAgOzsKKworICAgICAgIGFybSogfCBhYXJjaDY0ICkKKyAgICAgICAgICMgQXNzdW1lIGFybSB3aXRoIEVBQkkuCisgICAgICAgICAjIE9uIGFybTY0IHN5c3RlbXMsIHRoZSBDIGNvbXBpbGVyIG1heSBiZSBnZW5lcmF0aW5nIGNvZGUgaW4gb25lIG9mCisgICAgICAgICAjIHRoZXNlIEFCSXM6CisgICAgICAgICAjIC0gYWFyY2g2NCBpbnN0cnVjdGlvbiBzZXQsIDY0LWJpdCBwb2ludGVycywgNjQtYml0ICdsb25nJzogYXJtNjQuCisgICAgICAgICAjIC0gYWFyY2g2NCBpbnN0cnVjdGlvbiBzZXQsIDMyLWJpdCBwb2ludGVycywgMzItYml0ICdsb25nJzogYXJtNjQtaWxwMzIuCisgICAgICAgICAjIC0gMzItYml0IGluc3RydWN0aW9uIHNldCwgMzItYml0IHBvaW50ZXJzLCAzMi1iaXQgJ2xvbmcnOiBhcm0gb3IgYXJtaGYuCisgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICBbWyNpZmRlZiBfX2FhcmNoNjRfXworICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICBbQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9fSUxQMzJfXyB8fCBkZWZpbmVkIF9JTFAzMgorICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpPWFybTY0LWlscDMyXSwKKyAgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpPWFybTY0XSldLAorICAgICAgICAgICBbIyBEb24ndCBkaXN0aW5ndWlzaCBsaXR0bGUtZW5kaWFuIGFuZCBiaWctZW5kaWFuIGFybSwgc2luY2UgdGhleQorICAgICAgICAgICAgIyBkb24ndCByZXF1aXJlIGRpZmZlcmVudCBtYWNoaW5lIGNvZGUgZm9yIHNpbXBsZSBvcGVyYXRpb25zIGFuZAorICAgICAgICAgICAgIyBzaW5jZSB0aGUgdXNlciBjYW4gZGlzdGluZ3Vpc2ggdGhlbSB0aHJvdWdoIHRoZSBwcmVwcm9jZXNzb3IKKyAgICAgICAgICAgICMgZGVmaW5lcyBfX0FSTUVMX18gdnMuIF9fQVJNRUJfXy4KKyAgICAgICAgICAgICMgQnV0IGRpc3Rpbmd1aXNoIGFybSB3aGljaCBwYXNzZXMgZmxvYXRpbmctcG9pbnQgYXJndW1lbnRzIGFuZAorICAgICAgICAgICAgIyByZXR1cm4gdmFsdWVzIGluIGludGVnZXIgcmVnaXN0ZXJzIChyMCwgcjEsIC4uLikgLSB0aGlzIGlzCisgICAgICAgICAgICAjIGdjYyAtbWZsb2F0LWFiaT1zb2Z0IG9yIGdjYyAtbWZsb2F0LWFiaT1zb2Z0ZnAgLSBmcm9tIGFybSB3aGljaAorICAgICAgICAgICAgIyBwYXNzZXMgdGhlbSBpbiBmbG9hdCByZWdpc3RlcnMgKHMwLCBzMSwgLi4uKSBhbmQgZG91YmxlIHJlZ2lzdGVycworICAgICAgICAgICAgIyAoZDAsIGQxLCAuLi4pIC0gdGhpcyBpcyBnY2MgLW1mbG9hdC1hYmk9aGFyZC4gR0NDIDQuNiBvciBuZXdlcgorICAgICAgICAgICAgIyBzZXRzIHRoZSBwcmVwcm9jZXNzb3IgZGVmaW5lcyBfX0FSTV9QQ1MgKGZvciB0aGUgZmlyc3QgY2FzZSkgYW5kCisgICAgICAgICAgICAjIF9fQVJNX1BDU19WRlAgKGZvciB0aGUgc2Vjb25kIGNhc2UpLCBidXQgb2xkZXIgR0NDIGRvZXMgbm90LgorICAgICAgICAgICAgZWNobyAnZG91YmxlIGRkZDsgdm9pZCBmdW5jIChkb3VibGUgZGQpIHsgZGRkID0gZGQ7IH0nID4gY29uZnRlc3QuYworICAgICAgICAgICAgIyBMb29rIGZvciBhIHJlZmVyZW5jZSB0byB0aGUgcmVnaXN0ZXIgZDAgaW4gdGhlIC5zIGZpbGUuCisgICAgICAgICAgICBBQ19UUllfQ09NTUFORCgke0NDLWNjfSAkQ0ZMQUdTICRDUFBGTEFHUyAkZ2xfY19hc21fb3B0IGNvbmZ0ZXN0LmMpID4vZGV2L251bGwgMj4mMQorICAgICAgICAgICAgaWYgTENfQUxMPUMgZ3JlcCAnZDAsJyBjb25mdGVzdC4kZ2xfYXNtZXh0ID4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgICAgICAgZ2xfY3ZfaG9zdF9jcHVfY19hYmk9YXJtaGYKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgZ2xfY3ZfaG9zdF9jcHVfY19hYmk9YXJtCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgcm0gLWYgY29uZnRlc3QqCisgICAgICAgICAgIF0pCisgICAgICAgICA7OworCisgICAgICAgaHBwYTEuMCB8IGhwcGExLjEgfCBocHBhMi4wKiB8IGhwcGE2NCApCisgICAgICAgICAjIE9uIGhwcGEsIHRoZSBDIGNvbXBpbGVyIG1heSBiZSBnZW5lcmF0aW5nIDMyLWJpdCBjb2RlIG9yIDY0LWJpdAorICAgICAgICAgIyBjb2RlLiBJbiB0aGUgbGF0dGVyIGNhc2UsIGl0IGRlZmluZXMgX0xQNjQgYW5kIF9fTFA2NF9fLgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWZkZWYgX19MUDY0X18KKyAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpPWhwcGE2NF0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1ocHBhXSkKKyAgICAgICAgIDs7CisKKyAgICAgICBpYTY0KiApCisgICAgICAgICAjIE9uIGlhNjQgb24gSFAtVVgsIHRoZSBDIGNvbXBpbGVyIG1heSBiZSBnZW5lcmF0aW5nIDY0LWJpdCBjb2RlIG9yCisgICAgICAgICAjIDMyLWJpdCBjb2RlLiBJbiB0aGUgbGF0dGVyIGNhc2UsIGl0IGRlZmluZXMgX0lMUDMyLgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWZkZWYgX0lMUDMyCisgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1pYTY0LWlscDMyXSwKKyAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpPWlhNjRdKQorICAgICAgICAgOzsKKworICAgICAgIG1pcHMqICkKKyAgICAgICAgICMgV2Ugc2hvdWxkIGFsc28gY2hlY2sgZm9yIChfTUlQU19TWlBUUiA9PSA2NCksIGJ1dCBnY2Mga2VlcHMgdGhpcworICAgICAgICAgIyBhdCAzMi4KKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX01JUFNfU1pMT05HICYmIChfTUlQU19TWkxPTkcgPT0gNjQpCisgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1taXBzNjRdLAorICAgICAgICAgICBbIyBJbiB0aGUgbjMyIEFCSSwgX0FCSU4zMiBpcyBkZWZpbmVkLCBfQUJJTzMyIGlzIG5vdCBkZWZpbmVkIChidXQKKyAgICAgICAgICAgICMgbWF5IGxhdGVyIGdldCBkZWZpbmVkIGJ5IDxzZ2lkZWZzLmg+KSwgYW5kIF9NSVBTX1NJTSA9PSBfQUJJTjMyLgorICAgICAgICAgICAgIyBJbiB0aGUgMzIgQUJJLCBfQUJJTzMyIGlzIGRlZmluZWQsIF9BQklOMzIgaXMgbm90IGRlZmluZWQgKGJ1dAorICAgICAgICAgICAgIyBtYXkgbGF0ZXIgZ2V0IGRlZmluZWQgYnkgPHNnaWRlZnMuaD4pLCBhbmQgX01JUFNfU0lNID09IF9BQklPMzIuCisgICAgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgICBbWyNpZiAoX01JUFNfU0lNID09IF9BQklOMzIpCisgICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1taXBzbjMyXSwKKyAgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpPW1pcHNdKV0pCisgICAgICAgICA7OworCisgICAgICAgcG93ZXJwYyogKQorICAgICAgICAgIyBEaWZmZXJlbnQgQUJJcyBhcmUgaW4gdXNlIG9uIEFJWCB2cy4gTWFjIE9TIFggdnMuIExpbnV4LCpCU0QuCisgICAgICAgICAjIE5vIG5lZWQgdG8gZGlzdGluZ3Vpc2ggdGhlbSBoZXJlOyB0aGUgY2FsbGVyIG1heSBkaXN0aW5ndWlzaAorICAgICAgICAgIyB0aGVtIGJhc2VkIG9uIHRoZSBPUy4KKyAgICAgICAgICMgT24gcG93ZXJwYzY0IHN5c3RlbXMsIHRoZSBDIGNvbXBpbGVyIG1heSBzdGlsbCBiZSBnZW5lcmF0aW5nCisgICAgICAgICAjIDMyLWJpdCBjb2RlLiBBbmQgb24gcG93ZXJwYy1pYm0tYWl4IHN5c3RlbXMsIHRoZSBDIGNvbXBpbGVyIG1heQorICAgICAgICAgIyBiZSBnZW5lcmF0aW5nIDY0LWJpdCBjb2RlLgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWYgZGVmaW5lZCBfX3Bvd2VycGM2NF9fIHx8IGRlZmluZWQgX0FSQ0hfUFBDNjQKKyAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgWyMgT24gcG93ZXJwYzY0LCB0aGVyZSBhcmUgdHdvIEFCSXMgb24gTGludXg6IFRoZSBBSVggY29tcGF0aWJsZQorICAgICAgICAgICAgIyBvbmUgYW5kIHRoZSBFTEZ2MiBvbmUuIFRoZSBsYXR0ZXIgZGVmaW5lcyBfQ0FMTF9FTEY9Mi4KKyAgICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX0NBTExfRUxGICYmIF9DQUxMX0VMRiA9PSAyCisgICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1wb3dlcnBjNjQtZWxmdjJdLAorICAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmk9cG93ZXJwYzY0XSkKKyAgICAgICAgICAgXSwKKyAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpPXBvd2VycGNdKQorICAgICAgICAgOzsKKworICAgICAgIHJzNjAwMCApCisgICAgICAgICBnbF9jdl9ob3N0X2NwdV9jX2FiaT1wb3dlcnBjCisgICAgICAgICA7OworCisgICAgICAgcmlzY3YzMiB8IHJpc2N2NjQgKQorICAgICAgICAgIyBUaGVyZSBhcmUgMiBhcmNoaXRlY3R1cmVzICh3aXRoIHZhcmlhbnRzKTogcnYzMiogYW5kIHJ2NjQqLgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWYgX19yaXNjdl94bGVuID09IDY0CisgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgW2NwdT1yaXNjdjY0XSwKKyAgICAgICAgICAgW2NwdT1yaXNjdjMyXSkKKyAgICAgICAgICMgVGhlcmUgYXJlIDYgQUJJczogaWxwMzIsIGlscDMyZiwgaWxwMzJkLCBscDY0LCBscDY0ZiwgbHA2NGQuCisgICAgICAgICAjIFNpemUgb2YgJ2xvbmcnIGFuZCAndm9pZCAqJzoKKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19MUDY0X18KKyAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICBbbWFpbl9hYmk9bHA2NF0sCisgICAgICAgICAgIFttYWluX2FiaT1pbHAzMl0pCisgICAgICAgICAjIEZsb2F0IEFCSXM6CisgICAgICAgICAjIF9fcmlzY3ZfZmxvYXRfYWJpX2RvdWJsZToKKyAgICAgICAgICMgICAnZmxvYXQnIGFuZCAnZG91YmxlJyBhcmUgcGFzc2VkIGluIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4KKyAgICAgICAgICMgX19yaXNjdl9mbG9hdF9hYmlfc2luZ2xlOgorICAgICAgICAgIyAgICdmbG9hdCcgYXJlIHBhc3NlZCBpbiBmbG9hdGluZy1wb2ludCByZWdpc3RlcnMuCisgICAgICAgICAjIF9fcmlzY3ZfZmxvYXRfYWJpX3NvZnQ6CisgICAgICAgICAjICAgTm8gdmFsdWVzIGFyZSBwYXNzZWQgaW4gZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWYgZGVmaW5lZCBfX3Jpc2N2X2Zsb2F0X2FiaV9kb3VibGUKKyAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICBbZmxvYXRfYWJpPWRdLAorICAgICAgICAgICBbQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgICAgW1sjaWYgZGVmaW5lZCBfX3Jpc2N2X2Zsb2F0X2FiaV9zaW5nbGUKKyAgICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgICBbZmxvYXRfYWJpPWZdLAorICAgICAgICAgICAgICBbZmxvYXRfYWJpPScnXSkKKyAgICAgICAgICAgXSkKKyAgICAgICAgIGdsX2N2X2hvc3RfY3B1X2NfYWJpPSIke2NwdX0tJHttYWluX2FiaX0ke2Zsb2F0X2FiaX0iCisgICAgICAgICA7OworCisgICAgICAgczM5MCogKQorICAgICAgICAgIyBPbiBzMzkweCwgdGhlIEMgY29tcGlsZXIgbWF5IGJlIGdlbmVyYXRpbmcgNjQtYml0ICg9IHMzOTB4KSBjb2RlCisgICAgICAgICAjIG9yIDMxLWJpdCAoPSBzMzkwKSBjb2RlLgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWYgZGVmaW5lZCBfX0xQNjRfXyB8fCBkZWZpbmVkIF9fczM5MHhfXworICAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1zMzkweF0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1zMzkwXSkKKyAgICAgICAgIDs7CisKKyAgICAgICBzcGFyYyB8IHNwYXJjNjQgKQorICAgICAgICAgIyBVbHRyYVNQQVJDcyBydW5uaW5nIExpbnV4IGhhdmUgYHVuYW1lIC1tYCA9ICJzcGFyYzY0IiwgYnV0IHRoZQorICAgICAgICAgIyBDIGNvbXBpbGVyIHN0aWxsIGdlbmVyYXRlcyAzMi1iaXQgY29kZS4KKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19zcGFyY3Y5IHx8IGRlZmluZWQgX19hcmNoNjRfXworICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmk9c3BhcmM2NF0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1zcGFyY10pCisgICAgICAgICA7OworCisgICAgICAgKikKKyAgICAgICAgIGdsX2N2X2hvc3RfY3B1X2NfYWJpPSIkaG9zdF9jcHUiCisgICAgICAgICA7OworICAgICBlc2FjCisgICAgXSkKKworICBkbmwgSW4gbW9zdCBjYXNlcywgJEhPU1RfQ1BVIGFuZCAkSE9TVF9DUFVfQ19BQkkgYXJlIHRoZSBzYW1lLgorICBIT1NUX0NQVT1gZWNobyAiJGdsX2N2X2hvc3RfY3B1X2NfYWJpIiB8IHNlZCAtZSAncy8tLiovLydgCisgIEhPU1RfQ1BVX0NfQUJJPSIkZ2xfY3ZfaG9zdF9jcHVfY19hYmkiCisgIEFDX1NVQlNUKFtIT1NUX0NQVV0pCisgIEFDX1NVQlNUKFtIT1NUX0NQVV9DX0FCSV0pCisKKyAgIyBUaGlzIHdhcworICAjICAgQUNfREVGSU5FX1VOUVVPVEVEKFtfXyR7SE9TVF9DUFV9X19dKQorICAjICAgQUNfREVGSU5FX1VOUVVPVEVEKFtfXyR7SE9TVF9DUFVfQ19BQkl9X19dKQorICAjIGVhcmxpZXIsIGJ1dCBLQUkgQysrIDMuMmQgZG9lc24ndCBsaWtlIHRoaXMuCisgIHNlZCAtZSAncy8tL18vZycgPj4gY29uZmRlZnMuaCA8PEVPRgorI2lmbmRlZiBfXyR7SE9TVF9DUFV9X18KKyNkZWZpbmUgX18ke0hPU1RfQ1BVfV9fIDEKKyNlbmRpZgorI2lmbmRlZiBfXyR7SE9TVF9DUFVfQ19BQkl9X18KKyNkZWZpbmUgX18ke0hPU1RfQ1BVX0NfQUJJfV9fIDEKKyNlbmRpZgorRU9GCisgIEFIX1RPUChbLyogQ1BVIGFuZCBDIEFCSSBpbmRpY2F0b3IgKi8KKyNpZm5kZWYgX19pMzg2X18KKyN1bmRlZiBfX2kzODZfXworI2VuZGlmCisjaWZuZGVmIF9feDg2XzY0X3gzMl9fCisjdW5kZWYgX194ODZfNjRfeDMyX18KKyNlbmRpZgorI2lmbmRlZiBfX3g4Nl82NF9fCisjdW5kZWYgX194ODZfNjRfXworI2VuZGlmCisjaWZuZGVmIF9fYWxwaGFfXworI3VuZGVmIF9fYWxwaGFfXworI2VuZGlmCisjaWZuZGVmIF9fYXJtX18KKyN1bmRlZiBfX2FybV9fCisjZW5kaWYKKyNpZm5kZWYgX19hcm1oZl9fCisjdW5kZWYgX19hcm1oZl9fCisjZW5kaWYKKyNpZm5kZWYgX19hcm02NF9pbHAzMl9fCisjdW5kZWYgX19hcm02NF9pbHAzMl9fCisjZW5kaWYKKyNpZm5kZWYgX19hcm02NF9fCisjdW5kZWYgX19hcm02NF9fCisjZW5kaWYKKyNpZm5kZWYgX19ocHBhX18KKyN1bmRlZiBfX2hwcGFfXworI2VuZGlmCisjaWZuZGVmIF9faHBwYTY0X18KKyN1bmRlZiBfX2hwcGE2NF9fCisjZW5kaWYKKyNpZm5kZWYgX19pYTY0X2lscDMyX18KKyN1bmRlZiBfX2lhNjRfaWxwMzJfXworI2VuZGlmCisjaWZuZGVmIF9faWE2NF9fCisjdW5kZWYgX19pYTY0X18KKyNlbmRpZgorI2lmbmRlZiBfX202OGtfXworI3VuZGVmIF9fbTY4a19fCisjZW5kaWYKKyNpZm5kZWYgX19taXBzX18KKyN1bmRlZiBfX21pcHNfXworI2VuZGlmCisjaWZuZGVmIF9fbWlwc24zMl9fCisjdW5kZWYgX19taXBzbjMyX18KKyNlbmRpZgorI2lmbmRlZiBfX21pcHM2NF9fCisjdW5kZWYgX19taXBzNjRfXworI2VuZGlmCisjaWZuZGVmIF9fcG93ZXJwY19fCisjdW5kZWYgX19wb3dlcnBjX18KKyNlbmRpZgorI2lmbmRlZiBfX3Bvd2VycGM2NF9fCisjdW5kZWYgX19wb3dlcnBjNjRfXworI2VuZGlmCisjaWZuZGVmIF9fcG93ZXJwYzY0X2VsZnYyX18KKyN1bmRlZiBfX3Bvd2VycGM2NF9lbGZ2Ml9fCisjZW5kaWYKKyNpZm5kZWYgX19yaXNjdjMyX18KKyN1bmRlZiBfX3Jpc2N2MzJfXworI2VuZGlmCisjaWZuZGVmIF9fcmlzY3Y2NF9fCisjdW5kZWYgX19yaXNjdjY0X18KKyNlbmRpZgorI2lmbmRlZiBfX3Jpc2N2MzJfaWxwMzJfXworI3VuZGVmIF9fcmlzY3YzMl9pbHAzMl9fCisjZW5kaWYKKyNpZm5kZWYgX19yaXNjdjMyX2lscDMyZl9fCisjdW5kZWYgX19yaXNjdjMyX2lscDMyZl9fCisjZW5kaWYKKyNpZm5kZWYgX19yaXNjdjMyX2lscDMyZF9fCisjdW5kZWYgX19yaXNjdjMyX2lscDMyZF9fCisjZW5kaWYKKyNpZm5kZWYgX19yaXNjdjY0X2lscDMyX18KKyN1bmRlZiBfX3Jpc2N2NjRfaWxwMzJfXworI2VuZGlmCisjaWZuZGVmIF9fcmlzY3Y2NF9pbHAzMmZfXworI3VuZGVmIF9fcmlzY3Y2NF9pbHAzMmZfXworI2VuZGlmCisjaWZuZGVmIF9fcmlzY3Y2NF9pbHAzMmRfXworI3VuZGVmIF9fcmlzY3Y2NF9pbHAzMmRfXworI2VuZGlmCisjaWZuZGVmIF9fcmlzY3Y2NF9scDY0X18KKyN1bmRlZiBfX3Jpc2N2NjRfbHA2NF9fCisjZW5kaWYKKyNpZm5kZWYgX19yaXNjdjY0X2xwNjRmX18KKyN1bmRlZiBfX3Jpc2N2NjRfbHA2NGZfXworI2VuZGlmCisjaWZuZGVmIF9fcmlzY3Y2NF9scDY0ZF9fCisjdW5kZWYgX19yaXNjdjY0X2xwNjRkX18KKyNlbmRpZgorI2lmbmRlZiBfX3MzOTBfXworI3VuZGVmIF9fczM5MF9fCisjZW5kaWYKKyNpZm5kZWYgX19zMzkweF9fCisjdW5kZWYgX19zMzkweF9fCisjZW5kaWYKKyNpZm5kZWYgX19zaF9fCisjdW5kZWYgX19zaF9fCisjZW5kaWYKKyNpZm5kZWYgX19zcGFyY19fCisjdW5kZWYgX19zcGFyY19fCisjZW5kaWYKKyNpZm5kZWYgX19zcGFyYzY0X18KKyN1bmRlZiBfX3NwYXJjNjRfXworI2VuZGlmCitdKQorCitdKQorCisKK2RubCBTZXRzIHRoZSBIT1NUX0NQVV9DX0FCSV8zMkJJVCB2YXJpYWJsZSB0byAneWVzJyBpZiB0aGUgQyBsYW5ndWFnZSBBQkkKK2RubCAoYXBwbGljYXRpb24gYmluYXJ5IGludGVyZmFjZSkgaXMgYSAzMi1iaXQgb25lLCBvciB0byAnbm8nIG90aGVyd2lzZS4KK2RubCBUaGlzIGlzIGEgc2ltcGxpZmllZCB2YXJpYW50IG9mIGdsX0hPU1RfQ1BVX0NfQUJJLgorQUNfREVGVU4oW2dsX0hPU1RfQ1BVX0NfQUJJXzMyQklUXSwKK1sKKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQorICBBQ19DQUNIRV9DSEVDSyhbMzItYml0IGhvc3QgQyBBQkldLCBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXRdLAorICAgIFtpZiB0ZXN0IC1uICIkZ2xfY3ZfaG9zdF9jcHVfY19hYmkiOyB0aGVuCisgICAgICAgY2FzZSAiJGdsX2N2X2hvc3RfY3B1X2NfYWJpIiBpbgorICAgICAgICAgaTM4NiB8IHg4Nl82NC14MzIgfCBhcm0gfCBhcm1oZiB8IGFybTY0LWlscDMyIHwgaHBwYSB8IGlhNjQtaWxwMzIgfCBtaXBzIHwgbWlwc24zMiB8IHBvd2VycGMgfCByaXNjdiotaWxwMzIqIHwgczM5MCB8IHNwYXJjKQorICAgICAgICAgICBnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXMgOzsKKyAgICAgICAgICopCisgICAgICAgICAgIGdsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PW5vIDs7CisgICAgICAgZXNhYworICAgICBlbHNlCisgICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgorCitjaGFuZ2VxdW90ZSgsKWRubAorICAgICAgICAgaVs0NTY3XTg2ICkKK2NoYW5nZXF1b3RlKFssXSlkbmwKKyAgICAgICAgICAgZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9eWVzCisgICAgICAgICAgIDs7CisKKyAgICAgICAgIHg4Nl82NCApCisgICAgICAgICAgICMgT24geDg2XzY0IHN5c3RlbXMsIHRoZSBDIGNvbXBpbGVyIG1heSBiZSBnZW5lcmF0aW5nIGNvZGUgaW4gb25lIG9mCisgICAgICAgICAgICMgdGhlc2UgQUJJczoKKyAgICAgICAgICAgIyAtIDY0LWJpdCBpbnN0cnVjdGlvbiBzZXQsIDY0LWJpdCBwb2ludGVycywgNjQtYml0ICdsb25nJzogeDg2XzY0LgorICAgICAgICAgICAjIC0gNjQtYml0IGluc3RydWN0aW9uIHNldCwgNjQtYml0IHBvaW50ZXJzLCAzMi1iaXQgJ2xvbmcnOiB4ODZfNjQKKyAgICAgICAgICAgIyAgIHdpdGggbmF0aXZlIFdpbmRvd3MgKG1pbmd3LCBNU1ZDKS4KKyAgICAgICAgICAgIyAtIDY0LWJpdCBpbnN0cnVjdGlvbiBzZXQsIDMyLWJpdCBwb2ludGVycywgMzItYml0ICdsb25nJzogeDg2XzY0LXgzMi4KKyAgICAgICAgICAgIyAtIDMyLWJpdCBpbnN0cnVjdGlvbiBzZXQsIDMyLWJpdCBwb2ludGVycywgMzItYml0ICdsb25nJzogaTM4Ni4KKyAgICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgIFtbI2lmIChkZWZpbmVkIF9feDg2XzY0X18gfHwgZGVmaW5lZCBfX2FtZDY0X18gXAorICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkIF9NX1g2NCB8fCBkZWZpbmVkIF9NX0FNRDY0KSBcCisgICAgICAgICAgICAgICAgICAgICAgJiYgIShkZWZpbmVkIF9fSUxQMzJfXyB8fCBkZWZpbmVkIF9JTFAzMikKKyAgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PW5vXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9eWVzXSkKKyAgICAgICAgICAgOzsKKworICAgICAgICAgYXJtKiB8IGFhcmNoNjQgKQorICAgICAgICAgICAjIEFzc3VtZSBhcm0gd2l0aCBFQUJJLgorICAgICAgICAgICAjIE9uIGFybTY0IHN5c3RlbXMsIHRoZSBDIGNvbXBpbGVyIG1heSBiZSBnZW5lcmF0aW5nIGNvZGUgaW4gb25lIG9mCisgICAgICAgICAgICMgdGhlc2UgQUJJczoKKyAgICAgICAgICAgIyAtIGFhcmNoNjQgaW5zdHJ1Y3Rpb24gc2V0LCA2NC1iaXQgcG9pbnRlcnMsIDY0LWJpdCAnbG9uZyc6IGFybTY0LgorICAgICAgICAgICAjIC0gYWFyY2g2NCBpbnN0cnVjdGlvbiBzZXQsIDMyLWJpdCBwb2ludGVycywgMzItYml0ICdsb25nJzogYXJtNjQtaWxwMzIuCisgICAgICAgICAgICMgLSAzMi1iaXQgaW5zdHJ1Y3Rpb24gc2V0LCAzMi1iaXQgcG9pbnRlcnMsIDMyLWJpdCAnbG9uZyc6IGFybSBvciBhcm1oZi4KKyAgICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19hYXJjaDY0X18gJiYgIShkZWZpbmVkIF9fSUxQMzJfXyB8fCBkZWZpbmVkIF9JTFAzMikKKyAgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PW5vXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9eWVzXSkKKyAgICAgICAgICAgOzsKKworICAgICAgICAgaHBwYTEuMCB8IGhwcGExLjEgfCBocHBhMi4wKiB8IGhwcGE2NCApCisgICAgICAgICAgICMgT24gaHBwYSwgdGhlIEMgY29tcGlsZXIgbWF5IGJlIGdlbmVyYXRpbmcgMzItYml0IGNvZGUgb3IgNjQtYml0CisgICAgICAgICAgICMgY29kZS4gSW4gdGhlIGxhdHRlciBjYXNlLCBpdCBkZWZpbmVzIF9MUDY0IGFuZCBfX0xQNjRfXy4KKyAgICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgIFtbI2lmZGVmIF9fTFA2NF9fCisgICAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD1ub10sCisgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PXllc10pCisgICAgICAgICAgIDs7CisKKyAgICAgICAgIGlhNjQqICkKKyAgICAgICAgICAgIyBPbiBpYTY0IG9uIEhQLVVYLCB0aGUgQyBjb21waWxlciBtYXkgYmUgZ2VuZXJhdGluZyA2NC1iaXQgY29kZSBvcgorICAgICAgICAgICAjIDMyLWJpdCBjb2RlLiBJbiB0aGUgbGF0dGVyIGNhc2UsIGl0IGRlZmluZXMgX0lMUDMyLgorICAgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgICAgW1sjaWZkZWYgX0lMUDMyCisgICAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXNdLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD1ub10pCisgICAgICAgICAgIDs7CisKKyAgICAgICAgIG1pcHMqICkKKyAgICAgICAgICAgIyBXZSBzaG91bGQgYWxzbyBjaGVjayBmb3IgKF9NSVBTX1NaUFRSID09IDY0KSwgYnV0IGdjYyBrZWVwcyB0aGlzCisgICAgICAgICAgICMgYXQgMzIuCisgICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9NSVBTX1NaTE9ORyAmJiAoX01JUFNfU1pMT05HID09IDY0KQorICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9bm9dLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXNdKQorICAgICAgICAgICA7OworCisgICAgICAgICBwb3dlcnBjKiApCisgICAgICAgICAgICMgRGlmZmVyZW50IEFCSXMgYXJlIGluIHVzZSBvbiBBSVggdnMuIE1hYyBPUyBYIHZzLiBMaW51eCwqQlNELgorICAgICAgICAgICAjIE5vIG5lZWQgdG8gZGlzdGluZ3Vpc2ggdGhlbSBoZXJlOyB0aGUgY2FsbGVyIG1heSBkaXN0aW5ndWlzaAorICAgICAgICAgICAjIHRoZW0gYmFzZWQgb24gdGhlIE9TLgorICAgICAgICAgICAjIE9uIHBvd2VycGM2NCBzeXN0ZW1zLCB0aGUgQyBjb21waWxlciBtYXkgc3RpbGwgYmUgZ2VuZXJhdGluZworICAgICAgICAgICAjIDMyLWJpdCBjb2RlLiBBbmQgb24gcG93ZXJwYy1pYm0tYWl4IHN5c3RlbXMsIHRoZSBDIGNvbXBpbGVyIG1heQorICAgICAgICAgICAjIGJlIGdlbmVyYXRpbmcgNjQtYml0IGNvZGUuCisgICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9fcG93ZXJwYzY0X18gfHwgZGVmaW5lZCBfQVJDSF9QUEM2NAorICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9bm9dLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXNdKQorICAgICAgICAgICA7OworCisgICAgICAgICByczYwMDAgKQorICAgICAgICAgICBnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXMKKyAgICAgICAgICAgOzsKKworICAgICAgICAgcmlzY3YzMiB8IHJpc2N2NjQgKQorICAgICAgICAgICAjIFRoZXJlIGFyZSA2IEFCSXM6IGlscDMyLCBpbHAzMmYsIGlscDMyZCwgbHA2NCwgbHA2NGYsIGxwNjRkLgorICAgICAgICAgICAjIFNpemUgb2YgJ2xvbmcnIGFuZCAndm9pZCAqJzoKKyAgICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19MUDY0X18KKyAgICAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9bm9dLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXNdKQorICAgICAgICAgICA7OworCisgICAgICAgICBzMzkwKiApCisgICAgICAgICAgICMgT24gczM5MHgsIHRoZSBDIGNvbXBpbGVyIG1heSBiZSBnZW5lcmF0aW5nIDY0LWJpdCAoPSBzMzkweCkgY29kZQorICAgICAgICAgICAjIG9yIDMxLWJpdCAoPSBzMzkwKSBjb2RlLgorICAgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgICAgW1sjaWYgZGVmaW5lZCBfX0xQNjRfXyB8fCBkZWZpbmVkIF9fczM5MHhfXworICAgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD1ub10sCisgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PXllc10pCisgICAgICAgICAgIDs7CisKKyAgICAgICAgIHNwYXJjIHwgc3BhcmM2NCApCisgICAgICAgICAgICMgVWx0cmFTUEFSQ3MgcnVubmluZyBMaW51eCBoYXZlIGB1bmFtZSAtbWAgPSAic3BhcmM2NCIsIGJ1dCB0aGUKKyAgICAgICAgICAgIyBDIGNvbXBpbGVyIHN0aWxsIGdlbmVyYXRlcyAzMi1iaXQgY29kZS4KKyAgICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19zcGFyY3Y5IHx8IGRlZmluZWQgX19hcmNoNjRfXworICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9bm9dLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXNdKQorICAgICAgICAgICA7OworCisgICAgICAgICAqKQorICAgICAgICAgICBnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD1ubworICAgICAgICAgICA7OworICAgICAgIGVzYWMKKyAgICAgZmkKKyAgICBdKQorCisgIEhPU1RfQ1BVX0NfQUJJXzMyQklUPSIkZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQiCitdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9pY29udi5tNCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvaWNvbnYubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI4NWU5ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvaWNvbnYubTQKQEAgLTAsMCArMSwyODggQEAKKyMgaWNvbnYubTQgc2VyaWFsIDIxCitkbmwgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDIsIDIwMDctMjAxNCwgMjAxNi0yMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKK2RubCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgorCitBQ19ERUZVTihbQU1fSUNPTlZfTElOS0ZMQUdTX0JPRFldLAorWworICBkbmwgUHJlcmVxdWlzaXRlcyBvZiBBQ19MSUJfTElOS0ZMQUdTX0JPRFkuCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX1BSRUZJWF0pCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9SUEFUSF0pCisKKyAgZG5sIFNlYXJjaCBmb3IgbGliaWNvbnYgYW5kIGRlZmluZSBMSUJJQ09OViwgTFRMSUJJQ09OViBhbmQgSU5DSUNPTlYKKyAgZG5sIGFjY29yZGluZ2x5LgorICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW2ljb252XSkKK10pCisKK0FDX0RFRlVOKFtBTV9JQ09OVl9MSU5LXSwKK1sKKyAgZG5sIFNvbWUgc3lzdGVtcyBoYXZlIGljb252IGluIGxpYmMsIHNvbWUgaGF2ZSBpdCBpbiBsaWJpY29udiAoT1NGLzEgYW5kCisgIGRubCB0aG9zZSB3aXRoIHRoZSBzdGFuZGFsb25lIHBvcnRhYmxlIEdOVSBsaWJpY29udiBpbnN0YWxsZWQpLgorICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pIGRubCBmb3IgY3Jvc3MtY29tcGlsZXMKKworICBkbmwgU2VhcmNoIGZvciBsaWJpY29udiBhbmQgZGVmaW5lIExJQklDT05WLCBMVExJQklDT05WIGFuZCBJTkNJQ09OVgorICBkbmwgYWNjb3JkaW5nbHkuCisgIEFDX1JFUVVJUkUoW0FNX0lDT05WX0xJTktGTEFHU19CT0RZXSkKKworICBkbmwgQWRkICRJTkNJQ09OViB0byBDUFBGTEFHUyBiZWZvcmUgcGVyZm9ybWluZyB0aGUgZm9sbG93aW5nIGNoZWNrcywKKyAgZG5sIGJlY2F1c2UgaWYgdGhlIHVzZXIgaGFzIGluc3RhbGxlZCBsaWJpY29udiBhbmQgbm90IGRpc2FibGVkIGl0cyB1c2UKKyAgZG5sIHZpYSAtLXdpdGhvdXQtbGliaWNvbnYtcHJlZml4LCBoZSB3YW50cyB0byB1c2UgaXQuIFRoZSBmaXJzdAorICBkbmwgQUNfTElOS19JRkVMU0Ugd2lsbCB0aGVuIGZhaWwsIHRoZSBzZWNvbmQgQUNfTElOS19JRkVMU0Ugd2lsbCBzdWNjZWVkLgorICBhbV9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisgIEFDX0xJQl9BUFBFTkRUT1ZBUihbQ1BQRkxBR1NdLCBbJElOQ0lDT05WXSkKKworICBBQ19DQUNIRV9DSEVDSyhbZm9yIGljb252XSwgW2FtX2N2X2Z1bmNfaWNvbnZdLCBbCisgICAgYW1fY3ZfZnVuY19pY29udj0ibm8sIGNvbnNpZGVyIGluc3RhbGxpbmcgR05VIGxpYmljb252IgorICAgIGFtX2N2X2xpYl9pY29udj1ubworICAgIEFDX0xJTktfSUZFTFNFKAorICAgICAgW0FDX0xBTkdfUFJPR1JBTSgKKyAgICAgICAgIFtbCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8aWNvbnYuaD4KKyAgICAgICAgIF1dLAorICAgICAgICAgW1tpY29udl90IGNkID0gaWNvbnZfb3BlbigiIiwiIik7CisgICAgICAgICAgIGljb252KGNkLE5VTEwsTlVMTCxOVUxMLE5VTEwpOworICAgICAgICAgICBpY29udl9jbG9zZShjZCk7XV0pXSwKKyAgICAgIFthbV9jdl9mdW5jX2ljb252PXllc10pCisgICAgaWYgdGVzdCAiJGFtX2N2X2Z1bmNfaWNvbnYiICE9IHllczsgdGhlbgorICAgICAgYW1fc2F2ZV9MSUJTPSIkTElCUyIKKyAgICAgIExJQlM9IiRMSUJTICRMSUJJQ09OViIKKyAgICAgIEFDX0xJTktfSUZFTFNFKAorICAgICAgICBbQUNfTEFOR19QUk9HUkFNKAorICAgICAgICAgICBbWworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGljb252Lmg+CisgICAgICAgICAgIF1dLAorICAgICAgICAgICBbW2ljb252X3QgY2QgPSBpY29udl9vcGVuKCIiLCIiKTsKKyAgICAgICAgICAgICBpY29udihjZCxOVUxMLE5VTEwsTlVMTCxOVUxMKTsKKyAgICAgICAgICAgICBpY29udl9jbG9zZShjZCk7XV0pXSwKKyAgICAgICAgW2FtX2N2X2xpYl9pY29udj15ZXNdCisgICAgICAgIFthbV9jdl9mdW5jX2ljb252PXllc10pCisgICAgICBMSUJTPSIkYW1fc2F2ZV9MSUJTIgorICAgIGZpCisgIF0pCisgIGlmIHRlc3QgIiRhbV9jdl9mdW5jX2ljb252IiA9IHllczsgdGhlbgorICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igd29ya2luZyBpY29udl0sIFthbV9jdl9mdW5jX2ljb252X3dvcmtzXSwgWworICAgICAgZG5sIFRoaXMgdGVzdHMgYWdhaW5zdCBidWdzIGluIEFJWCA1LjEsIEFJWCA2LjEuLjcuMSwgSFAtVVggMTEuMTEsCisgICAgICBkbmwgU29sYXJpcyAxMC4KKyAgICAgIGFtX3NhdmVfTElCUz0iJExJQlMiCisgICAgICBpZiB0ZXN0ICRhbV9jdl9saWJfaWNvbnYgPSB5ZXM7IHRoZW4KKyAgICAgICAgTElCUz0iJExJQlMgJExJQklDT05WIgorICAgICAgZmkKKyAgICAgIGFtX2N2X2Z1bmNfaWNvbnZfd29ya3M9bm8KKyAgICAgIGZvciBhY19pY29udl9jb25zdCBpbiAnJyAnY29uc3QnOyBkbworICAgICAgICBBQ19SVU5fSUZFTFNFKAorICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgICAgW1sKKyNpbmNsdWRlIDxpY29udi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaWZuZGVmIElDT05WX0NPTlNUCisjIGRlZmluZSBJQ09OVl9DT05TVCAkYWNfaWNvbnZfY29uc3QKKyNlbmRpZgorICAgICAgICAgICAgIF1dLAorICAgICAgICAgICAgIFtbaW50IHJlc3VsdCA9IDA7CisgIC8qIFRlc3QgYWdhaW5zdCBBSVggNS4xIGJ1ZzogRmFpbHVyZXMgYXJlIG5vdCBkaXN0aW5ndWlzaGFibGUgZnJvbSBzdWNjZXNzZnVsCisgICAgIHJldHVybnMuICAqLworICB7CisgICAgaWNvbnZfdCBjZF91dGY4X3RvXzg4NTkxID0gaWNvbnZfb3BlbiAoIklTTzg4NTktMSIsICJVVEYtOCIpOworICAgIGlmIChjZF91dGY4X3RvXzg4NTkxICE9IChpY29udl90KSgtMSkpCisgICAgICB7CisgICAgICAgIHN0YXRpYyBJQ09OVl9DT05TVCBjaGFyIGlucHV0W10gPSAiXDM0MlwyMDJcMjU0IjsgLyogRVVSTyBTSUdOICovCisgICAgICAgIGNoYXIgYnVmWzEwXTsKKyAgICAgICAgSUNPTlZfQ09OU1QgY2hhciAqaW5wdHIgPSBpbnB1dDsKKyAgICAgICAgc2l6ZV90IGluYnl0ZXNsZWZ0ID0gc3RybGVuIChpbnB1dCk7CisgICAgICAgIGNoYXIgKm91dHB0ciA9IGJ1ZjsKKyAgICAgICAgc2l6ZV90IG91dGJ5dGVzbGVmdCA9IHNpemVvZiAoYnVmKTsKKyAgICAgICAgc2l6ZV90IHJlcyA9IGljb252IChjZF91dGY4X3RvXzg4NTkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbnB0ciwgJmluYnl0ZXNsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdHIsICZvdXRieXRlc2xlZnQpOworICAgICAgICBpZiAocmVzID09IDApCisgICAgICAgICAgcmVzdWx0IHw9IDE7CisgICAgICAgIGljb252X2Nsb3NlIChjZF91dGY4X3RvXzg4NTkxKTsKKyAgICAgIH0KKyAgfQorICAvKiBUZXN0IGFnYWluc3QgU29sYXJpcyAxMCBidWc6IEZhaWx1cmVzIGFyZSBub3QgZGlzdGluZ3Vpc2hhYmxlIGZyb20KKyAgICAgc3VjY2Vzc2Z1bCByZXR1cm5zLiAgKi8KKyAgeworICAgIGljb252X3QgY2RfYXNjaWlfdG9fODg1OTEgPSBpY29udl9vcGVuICgiSVNPODg1OS0xIiwgIjY0NiIpOworICAgIGlmIChjZF9hc2NpaV90b184ODU5MSAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgeworICAgICAgICBzdGF0aWMgSUNPTlZfQ09OU1QgY2hhciBpbnB1dFtdID0gIlwyNjMiOworICAgICAgICBjaGFyIGJ1ZlsxMF07CisgICAgICAgIElDT05WX0NPTlNUIGNoYXIgKmlucHRyID0gaW5wdXQ7CisgICAgICAgIHNpemVfdCBpbmJ5dGVzbGVmdCA9IHN0cmxlbiAoaW5wdXQpOworICAgICAgICBjaGFyICpvdXRwdHIgPSBidWY7CisgICAgICAgIHNpemVfdCBvdXRieXRlc2xlZnQgPSBzaXplb2YgKGJ1Zik7CisgICAgICAgIHNpemVfdCByZXMgPSBpY29udiAoY2RfYXNjaWlfdG9fODg1OTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlucHRyLCAmaW5ieXRlc2xlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dHB0ciwgJm91dGJ5dGVzbGVmdCk7CisgICAgICAgIGlmIChyZXMgPT0gMCkKKyAgICAgICAgICByZXN1bHQgfD0gMjsKKyAgICAgICAgaWNvbnZfY2xvc2UgKGNkX2FzY2lpX3RvXzg4NTkxKTsKKyAgICAgIH0KKyAgfQorICAvKiBUZXN0IGFnYWluc3QgQUlYIDYuMS4uNy4xIGJ1ZzogQnVmZmVyIG92ZXJydW4uICAqLworICB7CisgICAgaWNvbnZfdCBjZF84ODU5MV90b191dGY4ID0gaWNvbnZfb3BlbiAoIlVURi04IiwgIklTTy04ODU5LTEiKTsKKyAgICBpZiAoY2RfODg1OTFfdG9fdXRmOCAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgeworICAgICAgICBzdGF0aWMgSUNPTlZfQ09OU1QgY2hhciBpbnB1dFtdID0gIlwzMDQiOworICAgICAgICBzdGF0aWMgY2hhciBidWZbMl0gPSB7IChjaGFyKTB4REUsIChjaGFyKTB4QUQgfTsKKyAgICAgICAgSUNPTlZfQ09OU1QgY2hhciAqaW5wdHIgPSBpbnB1dDsKKyAgICAgICAgc2l6ZV90IGluYnl0ZXNsZWZ0ID0gMTsKKyAgICAgICAgY2hhciAqb3V0cHRyID0gYnVmOworICAgICAgICBzaXplX3Qgb3V0Ynl0ZXNsZWZ0ID0gMTsKKyAgICAgICAgc2l6ZV90IHJlcyA9IGljb252IChjZF84ODU5MV90b191dGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbnB0ciwgJmluYnl0ZXNsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdHIsICZvdXRieXRlc2xlZnQpOworICAgICAgICBpZiAocmVzICE9IChzaXplX3QpKC0xKSB8fCBvdXRwdHIgLSBidWYgPiAxIHx8IGJ1ZlsxXSAhPSAoY2hhcikweEFEKQorICAgICAgICAgIHJlc3VsdCB8PSA0OworICAgICAgICBpY29udl9jbG9zZSAoY2RfODg1OTFfdG9fdXRmOCk7CisgICAgICB9CisgIH0KKyNpZiAwIC8qIFRoaXMgYnVnIGNvdWxkIGJlIHdvcmtlZCBhcm91bmQgYnkgdGhlIGNhbGxlci4gICovCisgIC8qIFRlc3QgYWdhaW5zdCBIUC1VWCAxMS4xMSBidWc6IFBvc2l0aXZlIHJldHVybiB2YWx1ZSBpbnN0ZWFkIG9mIDAuICAqLworICB7CisgICAgaWNvbnZfdCBjZF84ODU5MV90b191dGY4ID0gaWNvbnZfb3BlbiAoInV0ZjgiLCAiaXNvODg1OTEiKTsKKyAgICBpZiAoY2RfODg1OTFfdG9fdXRmOCAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgeworICAgICAgICBzdGF0aWMgSUNPTlZfQ09OU1QgY2hhciBpbnB1dFtdID0gIlwzMDRyZ2VyIG1pdCBiXDM2NnNlbiBCXDM3NGJjaGVuIG9obmUgQXVnZW5tYVwzMzciOworICAgICAgICBjaGFyIGJ1Zls1MF07CisgICAgICAgIElDT05WX0NPTlNUIGNoYXIgKmlucHRyID0gaW5wdXQ7CisgICAgICAgIHNpemVfdCBpbmJ5dGVzbGVmdCA9IHN0cmxlbiAoaW5wdXQpOworICAgICAgICBjaGFyICpvdXRwdHIgPSBidWY7CisgICAgICAgIHNpemVfdCBvdXRieXRlc2xlZnQgPSBzaXplb2YgKGJ1Zik7CisgICAgICAgIHNpemVfdCByZXMgPSBpY29udiAoY2RfODg1OTFfdG9fdXRmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5wdHIsICZpbmJ5dGVzbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHRyLCAmb3V0Ynl0ZXNsZWZ0KTsKKyAgICAgICAgaWYgKChpbnQpcmVzID4gMCkKKyAgICAgICAgICByZXN1bHQgfD0gODsKKyAgICAgICAgaWNvbnZfY2xvc2UgKGNkXzg4NTkxX3RvX3V0ZjgpOworICAgICAgfQorICB9CisjZW5kaWYKKyAgLyogVGVzdCBhZ2FpbnN0IEhQLVVYIDExLjExIGJ1ZzogTm8gY29udmVydGVyIGZyb20gRVVDLUpQIHRvIFVURi04IGlzCisgICAgIHByb3ZpZGVkLiAgKi8KKyAgeworICAgIC8qIFRyeSBzdGFuZGFyZGl6ZWQgbmFtZXMuICAqLworICAgIGljb252X3QgY2QxID0gaWNvbnZfb3BlbiAoIlVURi04IiwgIkVVQy1KUCIpOworICAgIC8qIFRyeSBJUklYLCBPU0YvMSBuYW1lcy4gICovCisgICAgaWNvbnZfdCBjZDIgPSBpY29udl9vcGVuICgiVVRGLTgiLCAiZXVjSlAiKTsKKyAgICAvKiBUcnkgQUlYIG5hbWVzLiAgKi8KKyAgICBpY29udl90IGNkMyA9IGljb252X29wZW4gKCJVVEYtOCIsICJJQk0tZXVjSlAiKTsKKyAgICAvKiBUcnkgSFAtVVggbmFtZXMuICAqLworICAgIGljb252X3QgY2Q0ID0gaWNvbnZfb3BlbiAoInV0ZjgiLCAiZXVjSlAiKTsKKyAgICBpZiAoY2QxID09IChpY29udl90KSgtMSkgJiYgY2QyID09IChpY29udl90KSgtMSkKKyAgICAgICAgJiYgY2QzID09IChpY29udl90KSgtMSkgJiYgY2Q0ID09IChpY29udl90KSgtMSkpCisgICAgICByZXN1bHQgfD0gMTY7CisgICAgaWYgKGNkMSAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgaWNvbnZfY2xvc2UgKGNkMSk7CisgICAgaWYgKGNkMiAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgaWNvbnZfY2xvc2UgKGNkMik7CisgICAgaWYgKGNkMyAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgaWNvbnZfY2xvc2UgKGNkMyk7CisgICAgaWYgKGNkNCAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgaWNvbnZfY2xvc2UgKGNkNCk7CisgIH0KKyAgcmV0dXJuIHJlc3VsdDsKK11dKV0sCisgICAgICAgICAgW2FtX2N2X2Z1bmNfaWNvbnZfd29ya3M9eWVzXSwgLAorICAgICAgICAgIFtjYXNlICIkaG9zdF9vcyIgaW4KKyAgICAgICAgICAgICBhaXgqIHwgaHB1eCopIGFtX2N2X2Z1bmNfaWNvbnZfd29ya3M9Imd1ZXNzaW5nIG5vIiA7OworICAgICAgICAgICAgICopICAgICAgICAgICAgYW1fY3ZfZnVuY19pY29udl93b3Jrcz0iZ3Vlc3NpbmcgeWVzIiA7OworICAgICAgICAgICBlc2FjXSkKKyAgICAgICAgdGVzdCAiJGFtX2N2X2Z1bmNfaWNvbnZfd29ya3MiID0gbm8gfHwgYnJlYWsKKyAgICAgIGRvbmUKKyAgICAgIExJQlM9IiRhbV9zYXZlX0xJQlMiCisgICAgXSkKKyAgICBjYXNlICIkYW1fY3ZfZnVuY19pY29udl93b3JrcyIgaW4KKyAgICAgICpubykgYW1fZnVuY19pY29udj1ubyBhbV9jdl9saWJfaWNvbnY9bm8gOzsKKyAgICAgICopICAgYW1fZnVuY19pY29udj15ZXMgOzsKKyAgICBlc2FjCisgIGVsc2UKKyAgICBhbV9mdW5jX2ljb252PW5vIGFtX2N2X2xpYl9pY29udj1ubworICBmaQorICBpZiB0ZXN0ICIkYW1fZnVuY19pY29udiIgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoW0hBVkVfSUNPTlZdLCBbMV0sCisgICAgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBpY29udigpIGZ1bmN0aW9uIGFuZCBpdCB3b3Jrcy5dKQorICBmaQorICBpZiB0ZXN0ICIkYW1fY3ZfbGliX2ljb252IiA9IHllczsgdGhlbgorICAgIEFDX01TR19DSEVDS0lORyhbaG93IHRvIGxpbmsgd2l0aCBsaWJpY29udl0pCisgICAgQUNfTVNHX1JFU1VMVChbJExJQklDT05WXSkKKyAgZWxzZQorICAgIGRubCBJZiAkTElCSUNPTlYgZGlkbid0IGxlYWQgdG8gYSB1c2FibGUgbGlicmFyeSwgd2UgZG9uJ3QgbmVlZCAkSU5DSUNPTlYKKyAgICBkbmwgZWl0aGVyLgorICAgIENQUEZMQUdTPSIkYW1fc2F2ZV9DUFBGTEFHUyIKKyAgICBMSUJJQ09OVj0KKyAgICBMVExJQklDT05WPQorICBmaQorICBBQ19TVUJTVChbTElCSUNPTlZdKQorICBBQ19TVUJTVChbTFRMSUJJQ09OVl0pCitdKQorCitkbmwgRGVmaW5lIEFNX0lDT05WIHVzaW5nIEFDX0RFRlVOX09OQ0UgZm9yIEF1dG9jb25mID49IDIuNjQsIGluIG9yZGVyIHRvCitkbmwgYXZvaWQgd2FybmluZ3MgbGlrZQorZG5sICJ3YXJuaW5nOiBBQ19SRVFVSVJFOiBgQU1fSUNPTlYnIHdhcyBleHBhbmRlZCBiZWZvcmUgaXQgd2FzIHJlcXVpcmVkIi4KK2RubCBUaGlzIGlzIHRyaWNreSBiZWNhdXNlIG9mIHRoZSB3YXkgJ2FjbG9jYWwnIGlzIGltcGxlbWVudGVkOgorZG5sIC0gSXQgcmVxdWlyZXMgZGVmaW5pbmcgYW4gYXV4aWxpYXJ5IG1hY3JvIHdob3NlIG5hbWUgZW5kcyBpbiBBQ19ERUZVTi4KK2RubCAgIE90aGVyd2lzZSBhY2xvY2FsJ3MgaW5pdGlhbCBzY2FuIHBhc3Mgd291bGQgbWlzcyB0aGUgbWFjcm8gZGVmaW5pdGlvbi4KK2RubCAtIEl0IHJlcXVpcmVzIGEgbGluZSBicmVhayBpbnNpZGUgdGhlIEFDX0RFRlVOX09OQ0UgYW5kIEFDX0RFRlVOIGV4cGFuc2lvbnMuCitkbmwgICBPdGhlcndpc2UgYWNsb2NhbCB3b3VsZCBlbWl0IG1hbnkgIlVzZSBvZiB1bmluaXRpYWxpemVkIHZhbHVlICQxIgorZG5sICAgd2FybmluZ3MuCittNF9kZWZpbmUoW2dsX2ljb252X0FDX0RFRlVOXSwKKyAgbTRfdmVyc2lvbl9wcmVyZXEoWzIuNjRdLAorICAgIFtbQUNfREVGVU5fT05DRSgKKyAgICAgICAgWyQxXSwgWyQyXSldXSwKKyAgICBbbTRfaWZkZWYoW2dsXzAwR05VTElCXSwKKyAgICAgICBbW0FDX0RFRlVOX09OQ0UoCisgICAgICAgICAgIFskMV0sIFskMl0pXV0sCisgICAgICAgW1tBQ19ERUZVTigKKyAgICAgICAgICAgWyQxXSwgWyQyXSldXSldKSkKK2dsX2ljb252X0FDX0RFRlVOKFtBTV9JQ09OVl0sCitbCisgIEFNX0lDT05WX0xJTksKKyAgaWYgdGVzdCAiJGFtX2N2X2Z1bmNfaWNvbnYiID0geWVzOyB0aGVuCisgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgaWNvbnYgZGVjbGFyYXRpb25dKQorICAgIEFDX0NBQ0hFX1ZBTChbYW1fY3ZfcHJvdG9faWNvbnZdLCBbCisgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgW0FDX0xBTkdfUFJPR1JBTSgKKyAgICAgICAgICAgW1sKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxpY29udi5oPgorZXh0ZXJuCisjaWZkZWYgX19jcGx1c3BsdXMKKyJDIgorI2VuZGlmCisjaWYgZGVmaW5lZChfX1NURENfXykgfHwgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX2NwbHVzcGx1cykKK3NpemVfdCBpY29udiAoaWNvbnZfdCBjZCwgY2hhciAqICppbmJ1Ziwgc2l6ZV90ICppbmJ5dGVzbGVmdCwgY2hhciAqICpvdXRidWYsIHNpemVfdCAqb3V0Ynl0ZXNsZWZ0KTsKKyNlbHNlCitzaXplX3QgaWNvbnYoKTsKKyNlbmRpZgorICAgICAgICAgICBdXSwKKyAgICAgICAgICAgW1tdXSldLAorICAgICAgICBbYW1fY3ZfcHJvdG9faWNvbnZfYXJnMT0iIl0sCisgICAgICAgIFthbV9jdl9wcm90b19pY29udl9hcmcxPSJjb25zdCJdKQorICAgICAgYW1fY3ZfcHJvdG9faWNvbnY9ImV4dGVybiBzaXplX3QgaWNvbnYgKGljb252X3QgY2QsICRhbV9jdl9wcm90b19pY29udl9hcmcxIGNoYXIgKiAqaW5idWYsIHNpemVfdCAqaW5ieXRlc2xlZnQsIGNoYXIgKiAqb3V0YnVmLCBzaXplX3QgKm91dGJ5dGVzbGVmdCk7Il0pCisgICAgYW1fY3ZfcHJvdG9faWNvbnY9YGVjaG8gIlskXWFtX2N2X3Byb3RvX2ljb252IiB8IHRyIC1zICcgJyB8IHNlZCAtZSAncy8oIC8oLydgCisgICAgQUNfTVNHX1JFU1VMVChbCisgICAgICAgICAkYW1fY3ZfcHJvdG9faWNvbnZdKQorICBlbHNlCisgICAgZG5sIFdoZW4gY29tcGlsaW5nIEdOVSBsaWJpY29udiBvbiBhIHN5c3RlbSB0aGF0IGRvZXMgbm90IGhhdmUgaWNvbnYgeWV0LAorICAgIGRubCBwaWNrIHRoZSBQT1NJWCBjb21wbGlhbnQgZGVjbGFyYXRpb24gd2l0aG91dCAnY29uc3QnLgorICAgIGFtX2N2X3Byb3RvX2ljb252X2FyZzE9IiIKKyAgZmkKKyAgQUNfREVGSU5FX1VOUVVPVEVEKFtJQ09OVl9DT05TVF0sIFskYW1fY3ZfcHJvdG9faWNvbnZfYXJnMV0sCisgICAgW0RlZmluZSBhcyBjb25zdCBpZiB0aGUgZGVjbGFyYXRpb24gb2YgaWNvbnYoKSBuZWVkcyBjb25zdC5dKQorICBkbmwgQWxzbyBzdWJzdGl0dXRlIElDT05WX0NPTlNUIGluIHRoZSBnbnVsaWIgZ2VuZXJhdGVkIDxpY29udi5oPi4KKyAgbTRfaWZkZWYoW2dsX0lDT05WX0hfREVGQVVMVFNdLAorICAgIFtBQ19SRVFVSVJFKFtnbF9JQ09OVl9IX0RFRkFVTFRTXSkKKyAgICAgaWYgdGVzdCAtbiAiJGFtX2N2X3Byb3RvX2ljb252X2FyZzEiOyB0aGVuCisgICAgICAgSUNPTlZfQ09OU1Q9ImNvbnN0IgorICAgICBmaQorICAgIF0pCitdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9pbnRsbWFjb3N4Lm00IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9pbnRsbWFjb3N4Lm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwZTZmNTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2ludGxtYWNvc3gubTQKQEAgLTAsMCArMSw3MiBAQAorIyBpbnRsbWFjb3N4Lm00IHNlcmlhbCA2IChnZXR0ZXh0LTAuMjApCitkbmwgQ29weXJpZ2h0IChDKSAyMDA0LTIwMTQsIDIwMTYsIDIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KK2RubAorZG5sIFRoaXMgZmlsZSBjYW4gYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlcgorZG5sIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBvciB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0CitkbmwgZnVuY3Rpb25hbGl0eS4KK2RubCBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgY29kZSBvZiB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpcyBjb3ZlcmVkCitkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCitkbmwgZ2V0dGV4dCBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorZG5sIFRoZXkgYXJlICpub3QqIGluIHRoZSBwdWJsaWMgZG9tYWluLgorCitkbmwgQ2hlY2tzIGZvciBzcGVjaWFsIG9wdGlvbnMgbmVlZGVkIG9uIE1hYyBPUyBYLgorZG5sIERlZmluZXMgSU5UTF9NQUNPU1hfTElCUy4KK0FDX0RFRlVOKFtndF9JTlRMX01BQ09TWF0sCitbCisgIGRubCBDaGVjayBmb3IgQVBJIGludHJvZHVjZWQgaW4gTWFjIE9TIFggMTAuNC4KKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlXSwKKyAgICBbZ3RfY3ZfZnVuY19DRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlXSwKKyAgICBbZ3Rfc2F2ZV9MSUJTPSIkTElCUyIKKyAgICAgTElCUz0iJExJQlMgLVdsLC1mcmFtZXdvcmsgLVdsLENvcmVGb3VuZGF0aW9uIgorICAgICBBQ19MSU5LX0lGRUxTRSgKKyAgICAgICBbQUNfTEFOR19QUk9HUkFNKAorICAgICAgICAgIFtbI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGUHJlZmVyZW5jZXMuaD5dXSwKKyAgICAgICAgICBbW0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUoTlVMTCwgTlVMTCldXSldLAorICAgICAgIFtndF9jdl9mdW5jX0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWU9eWVzXSwKKyAgICAgICBbZ3RfY3ZfZnVuY19DRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlPW5vXSkKKyAgICAgTElCUz0iJGd0X3NhdmVfTElCUyJdKQorICBpZiB0ZXN0ICRndF9jdl9mdW5jX0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoW0hBVkVfQ0ZQUkVGRVJFTkNFU0NPUFlBUFBWQUxVRV0sIFsxXSwKKyAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgTWFjIE9TIFggZnVuY3Rpb24gQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZSBpbiB0aGUgQ29yZUZvdW5kYXRpb24gZnJhbWV3b3JrLl0pCisgIGZpCisgIGRubCBDaGVjayBmb3IgQVBJIGludHJvZHVjZWQgaW4gTWFjIE9TIFggMTAuNS4KKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBDRkxvY2FsZUNvcHlDdXJyZW50XSwgW2d0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5Q3VycmVudF0sCisgICAgW2d0X3NhdmVfTElCUz0iJExJQlMiCisgICAgIExJQlM9IiRMSUJTIC1XbCwtZnJhbWV3b3JrIC1XbCxDb3JlRm91bmRhdGlvbiIKKyAgICAgQUNfTElOS19JRkVMU0UoCisgICAgICAgW0FDX0xBTkdfUFJPR1JBTSgKKyAgICAgICAgICBbWyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkxvY2FsZS5oPl1dLAorICAgICAgICAgIFtbQ0ZMb2NhbGVDb3B5Q3VycmVudCgpO11dKV0sCisgICAgICAgW2d0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5Q3VycmVudD15ZXNdLAorICAgICAgIFtndF9jdl9mdW5jX0NGTG9jYWxlQ29weUN1cnJlbnQ9bm9dKQorICAgICBMSUJTPSIkZ3Rfc2F2ZV9MSUJTIl0pCisgIGlmIHRlc3QgJGd0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5Q3VycmVudCA9IHllczsgdGhlbgorICAgIEFDX0RFRklORShbSEFWRV9DRkxPQ0FMRUNPUFlDVVJSRU5UXSwgWzFdLAorICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBNYWMgT1MgWCBmdW5jdGlvbiBDRkxvY2FsZUNvcHlDdXJyZW50IGluIHRoZSBDb3JlRm91bmRhdGlvbiBmcmFtZXdvcmsuXSkKKyAgZmkKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBDRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXNdLCBbZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXNdLAorICAgIFtndF9zYXZlX0xJQlM9IiRMSUJTIgorICAgICBMSUJTPSIkTElCUyAtV2wsLWZyYW1ld29yayAtV2wsQ29yZUZvdW5kYXRpb24iCisgICAgIEFDX0xJTktfSUZFTFNFKAorICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgW1sjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZMb2NhbGUuaD5dXSwKKyAgICAgICAgICBbW0NGTG9jYWxlQ29weVByZWZlcnJlZExhbmd1YWdlcygpO11dKV0sCisgICAgICAgW2d0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5UHJlZmVycmVkTGFuZ3VhZ2VzPXllc10sCisgICAgICAgW2d0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5UHJlZmVycmVkTGFuZ3VhZ2VzPW5vXSkKKyAgICAgTElCUz0iJGd0X3NhdmVfTElCUyJdKQorICBpZiB0ZXN0ICRndF9jdl9mdW5jX0NGTG9jYWxlQ29weVByZWZlcnJlZExhbmd1YWdlcyA9IHllczsgdGhlbgorICAgIEFDX0RFRklORShbSEFWRV9DRkxPQ0FMRUNPUFlQUkVGRVJSRURMQU5HVUFHRVNdLCBbMV0sCisgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIE1hYyBPUyBYIGZ1bmN0aW9uIENGTG9jYWxlQ29weVByZWZlcnJlZExhbmd1YWdlcyBpbiB0aGUgQ29yZUZvdW5kYXRpb24gZnJhbWV3b3JrLl0pCisgIGZpCisgIElOVExfTUFDT1NYX0xJQlM9CisgIGlmIHRlc3QgJGd0X2N2X2Z1bmNfQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZSA9IHllcyBcCisgICAgIHx8IHRlc3QgJGd0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5Q3VycmVudCA9IHllcyBcCisgICAgIHx8IHRlc3QgJGd0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5UHJlZmVycmVkTGFuZ3VhZ2VzID0geWVzOyB0aGVuCisgICAgSU5UTF9NQUNPU1hfTElCUz0iLVdsLC1mcmFtZXdvcmsgLVdsLENvcmVGb3VuZGF0aW9uIgorICBmaQorICBBQ19TVUJTVChbSU5UTF9NQUNPU1hfTElCU10pCitdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9saWItbGQubTQgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2xpYi1sZC5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTg3MTk2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9saWItbGQubTQKQEAgLTAsMCArMSwxNjggQEAKKyMgbGliLWxkLm00IHNlcmlhbCA5CitkbmwgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDMsIDIwMDktMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCitkbmwgU3Vicm91dGluZXMgb2YgbGlidG9vbC5tNCwKK2RubCB3aXRoIHJlcGxhY2VtZW50cyBzL18qTFRfUEFUSC9BQ19MSUJfUFJPRy8gYW5kIHMvbHRfL2FjbF8vIHRvIGF2b2lkCitkbmwgY29sbGlzaW9uIHdpdGggbGlidG9vbC5tNC4KKworZG5sIEZyb20gbGlidG9vbC0yLjQuIFNldHMgdGhlIHZhcmlhYmxlIHdpdGhfZ251X2xkIHRvIHllcyBvciBuby4KK0FDX0RFRlVOKFtBQ19MSUJfUFJPR19MRF9HTlVdLAorW0FDX0NBQ0hFX0NIRUNLKFtpZiB0aGUgbGlua2VyICgkTEQpIGlzIEdOVSBsZF0sIFthY2xfY3ZfcHJvZ19nbnVfbGRdLAorWyMgSSdkIHJhdGhlciB1c2UgLS12ZXJzaW9uIGhlcmUsIGJ1dCBhcHBhcmVudGx5IHNvbWUgR05VIGxkcyBvbmx5IGFjY2VwdCAtdi4KK2Nhc2UgYCRMRCAtdiAyPiYxIDwvZGV2L251bGxgIGluCisqR05VKiB8ICond2l0aCBCRkQnKikKKyAgYWNsX2N2X3Byb2dfZ251X2xkPXllcworICA7OworKikKKyAgYWNsX2N2X3Byb2dfZ251X2xkPW5vCisgIDs7Citlc2FjXSkKK3dpdGhfZ251X2xkPSRhY2xfY3ZfcHJvZ19nbnVfbGQKK10pCisKK2RubCBGcm9tIGxpYnRvb2wtMi40LiBTZXRzIHRoZSB2YXJpYWJsZSBMRC4KK0FDX0RFRlVOKFtBQ19MSUJfUFJPR19MRF0sCitbQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pZG5sCitBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCisKK0FDX0FSR19XSVRIKFtnbnUtbGRdLAorICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWdudS1sZF0sCisgICAgICAgIFthc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dXSldLAorICAgIFt0ZXN0ICIkd2l0aHZhbCIgPSBubyB8fCB3aXRoX2dudV9sZD15ZXNdLAorICAgIFt3aXRoX2dudV9sZD1ub10pZG5sCisKKyMgUHJlcGFyZSBQQVRIX1NFUEFSQVRPUi4KKyMgVGhlIHVzZXIgaXMgYWx3YXlzIHJpZ2h0LgoraWYgdGVzdCAiJHtQQVRIX1NFUEFSQVRPUitzZXR9IiAhPSBzZXQ7IHRoZW4KKyAgIyBEZXRlcm1pbmUgUEFUSF9TRVBBUkFUT1IgYnkgdHJ5aW5nIHRvIGZpbmQgL2Jpbi9zaCBpbiBhIFBBVEggd2hpY2gKKyAgIyBjb250YWlucyBvbmx5IC9iaW4uIE5vdGUgdGhhdCBrc2ggbG9va3MgYWxzbyBhdCB0aGUgRlBBVEggdmFyaWFibGUsCisgICMgc28gd2UgaGF2ZSB0byBzZXQgdGhhdCBhcyB3ZWxsIGZvciB0aGUgdGVzdC4KKyAgUEFUSF9TRVBBUkFUT1I9OgorICAoUEFUSD0nL2JpbjsvYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSBcCisgICAgJiYgeyAoUEFUSD0nL2JpbjovYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSBcCisgICAgICAgICAgIHx8IFBBVEhfU0VQQVJBVE9SPSc7JworICAgICAgIH0KK2ZpCisKK2lmIHRlc3QgLW4gIiRMRCI7IHRoZW4KKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgbGRdKQorZWxpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBsZCB1c2VkIGJ5ICRDQ10pCitlbGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgR05VIGxkXSkKK2Vsc2UKKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3Igbm9uLUdOVSBsZF0pCitmaQoraWYgdGVzdCAtbiAiJExEIjsgdGhlbgorICAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOgorZWxzZQorICBBQ19DQUNIRV9WQUwoW2FjbF9jdl9wYXRoX0xEXSwKKyAgWworICAgIGFjbF9jdl9wYXRoX0xEPSAjIEZpbmFsIHJlc3VsdCBvZiB0aGlzIHRlc3QKKyAgICBhY19wcm9nPWxkICMgUHJvZ3JhbSB0byBzZWFyY2ggaW4gJFBBVEgKKyAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgIyBDaGVjayBpZiBnY2MgLXByaW50LXByb2ctbmFtZT1sZCBnaXZlcyBhIHBhdGguCisgICAgICBjYXNlICRob3N0IGluCisgICAgICAgICotKi1taW5ndyopCisgICAgICAgICAgIyBnY2MgbGVhdmVzIGEgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIHdoaWNoIHVwc2V0cyBtaW5ndworICAgICAgICAgIGFjbF9vdXRwdXQ9YCgkQ0MgLXByaW50LXByb2ctbmFtZT1sZCkgMj4mNSB8IHRyIC1kICdcMDE1J2AgOzsKKyAgICAgICAgKikKKyAgICAgICAgICBhY2xfb3V0cHV0PWAoJENDIC1wcmludC1wcm9nLW5hbWU9bGQpIDI+JjVgIDs7CisgICAgICBlc2FjCisgICAgICBjYXNlICRhY2xfb3V0cHV0IGluCisgICAgICAgICMgQWNjZXB0IGFic29sdXRlIHBhdGhzLgorICAgICAgICBbW1xcL11dKiB8ID86W1tcXC9dXSopCisgICAgICAgICAgcmVfZGlyZWx0PScvW1teL11dW1teL11dKi9cLlwuLycKKyAgICAgICAgICAjIENhbm9uaWNhbGl6ZSB0aGUgcGF0aG5hbWUgb2YgbGQKKyAgICAgICAgICBhY2xfb3V0cHV0PWBlY2hvICIkYWNsX291dHB1dCIgfCBzZWQgJ3MlXFxcXCUvJWcnYAorICAgICAgICAgIHdoaWxlIGVjaG8gIiRhY2xfb3V0cHV0IiB8IGdyZXAgIiRyZV9kaXJlbHQiID4gL2Rldi9udWxsIDI+JjE7IGRvCisgICAgICAgICAgICBhY2xfb3V0cHV0PWBlY2hvICRhY2xfb3V0cHV0IHwgc2VkICJzJSRyZV9kaXJlbHQlLyUiYAorICAgICAgICAgIGRvbmUKKyAgICAgICAgICAjIEdvdCB0aGUgcGF0aG5hbWUuIE5vIHNlYXJjaCBpbiBQQVRIIGlzIG5lZWRlZC4KKyAgICAgICAgICBhY2xfY3ZfcGF0aF9MRD0iJGFjbF9vdXRwdXQiCisgICAgICAgICAgYWNfcHJvZz0KKyAgICAgICAgICA7OworICAgICAgICAiIikKKyAgICAgICAgICAjIElmIGl0IGZhaWxzLCB0aGVuIHByZXRlbmQgd2UgYXJlbid0IHVzaW5nIEdDQy4KKyAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgICMgSWYgaXQgaXMgcmVsYXRpdmUsIHRoZW4gc2VhcmNoIGZvciB0aGUgZmlyc3QgbGQgaW4gUEFUSC4KKyAgICAgICAgICB3aXRoX2dudV9sZD11bmtub3duCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICBmaQorICAgIGlmIHRlc3QgLW4gIiRhY19wcm9nIjsgdGhlbgorICAgICAgIyBTZWFyY2ggZm9yICRhY19wcm9nIGluICRQQVRILgorICAgICAgYWNsX3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgorICAgICAgZm9yIGFjX2RpciBpbiAkUEFUSDsgZG8KKyAgICAgICAgSUZTPSIkYWNsX3NhdmVfaWZzIgorICAgICAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAgICAgICBpZiB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nIiB8fCB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nJGFjX2V4ZWV4dCI7IHRoZW4KKyAgICAgICAgICBhY2xfY3ZfcGF0aF9MRD0iJGFjX2Rpci8kYWNfcHJvZyIKKyAgICAgICAgICAjIENoZWNrIHRvIHNlZSBpZiB0aGUgcHJvZ3JhbSBpcyBHTlUgbGQuICBJJ2QgcmF0aGVyIHVzZSAtLXZlcnNpb24sCisgICAgICAgICAgIyBidXQgYXBwYXJlbnRseSBzb21lIHZhcmlhbnRzIG9mIEdOVSBsZCBvbmx5IGFjY2VwdCAtdi4KKyAgICAgICAgICAjIEJyZWFrIG9ubHkgaWYgaXQgd2FzIHRoZSBHTlUvbm9uLUdOVSBsZCB0aGF0IHdlIHByZWZlci4KKyAgICAgICAgICBjYXNlIGAiJGFjbF9jdl9wYXRoX0xEIiAtdiAyPiYxIDwvZGV2L251bGxgIGluCisgICAgICAgICAgICAqR05VKiB8ICond2l0aCBCRkQnKikKKyAgICAgICAgICAgICAgdGVzdCAiJHdpdGhfZ251X2xkIiAhPSBubyAmJiBicmVhaworICAgICAgICAgICAgICA7OworICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgdGVzdCAiJHdpdGhfZ251X2xkIiAhPSB5ZXMgJiYgYnJlYWsKKyAgICAgICAgICAgICAgOzsKKyAgICAgICAgICBlc2FjCisgICAgICAgIGZpCisgICAgICBkb25lCisgICAgICBJRlM9IiRhY2xfc2F2ZV9pZnMiCisgICAgZmkKKyAgICBjYXNlICRob3N0IGluCisgICAgICAqLSotYWl4KikKKyAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19wb3dlcnBjNjRfXyB8fCBkZWZpbmVkIF9BUkNIX1BQQzY0CisgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICBdXSldLAorICAgICAgICAgIFsjIFRoZSBjb21waWxlciBwcm9kdWNlcyA2NC1iaXQgY29kZS4gQWRkIG9wdGlvbiAnLWI2NCcgc28gdGhhdCB0aGUKKyAgICAgICAgICAgIyBsaW5rZXIgZ3Jva3MgNjQtYml0IG9iamVjdCBmaWxlcy4KKyAgICAgICAgICAgY2FzZSAiJGFjbF9jdl9wYXRoX0xEICIgaW4KKyAgICAgICAgICAgICAqIiAtYjY0ICIqKSA7OworICAgICAgICAgICAgICopIGFjbF9jdl9wYXRoX0xEPSIkYWNsX2N2X3BhdGhfTEQgLWI2NCIgOzsKKyAgICAgICAgICAgZXNhYworICAgICAgICAgIF0sIFtdKQorICAgICAgICA7OworICAgICAgc3BhcmM2NC0qLW5ldGJzZCopCisgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9fc3BhcmN2OSB8fCBkZWZpbmVkIF9fYXJjaDY0X18KKyAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgW10sCisgICAgICAgICAgWyMgVGhlIGNvbXBpbGVyIHByb2R1Y2VzIDMyLWJpdCBjb2RlLiBBZGQgb3B0aW9uICctbSBlbGYzMl9zcGFyYycKKyAgICAgICAgICAgIyBzbyB0aGF0IHRoZSBsaW5rZXIgZ3Jva3MgMzItYml0IG9iamVjdCBmaWxlcy4KKyAgICAgICAgICAgY2FzZSAiJGFjbF9jdl9wYXRoX0xEICIgaW4KKyAgICAgICAgICAgICAqIiAtbSBlbGYzMl9zcGFyYyAiKikgOzsKKyAgICAgICAgICAgICAqKSBhY2xfY3ZfcGF0aF9MRD0iJGFjbF9jdl9wYXRoX0xEIC1tIGVsZjMyX3NwYXJjIiA7OworICAgICAgICAgICBlc2FjCisgICAgICAgICAgXSkKKyAgICAgICAgOzsKKyAgICBlc2FjCisgIF0pCisgIExEPSIkYWNsX2N2X3BhdGhfTEQiCitmaQoraWYgdGVzdCAtbiAiJExEIjsgdGhlbgorICBBQ19NU0dfUkVTVUxUKFskTERdKQorZWxzZQorICBBQ19NU0dfUkVTVUxUKFtub10pCisgIEFDX01TR19FUlJPUihbbm8gYWNjZXB0YWJsZSBsZCBmb3VuZCBpbiBcJFBBVEhdKQorZmkKK0FDX0xJQl9QUk9HX0xEX0dOVQorXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvbGliLWxpbmsubTQgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2xpYi1saW5rLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmZjEwNzMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2xpYi1saW5rLm00CkBAIC0wLDAgKzEsNzc0IEBACisjIGxpYi1saW5rLm00IHNlcmlhbCAyOAorZG5sIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KKworQUNfUFJFUkVRKFsyLjYxXSkKKworZG5sIEFDX0xJQl9MSU5LRkxBR1MobmFtZSBbLCBkZXBlbmRlbmNpZXNdKSBzZWFyY2hlcyBmb3IgbGlibmFtZSBhbmQKK2RubCB0aGUgbGlicmFyaWVzIGNvcnJlc3BvbmRpbmcgdG8gZXhwbGljaXQgYW5kIGltcGxpY2l0IGRlcGVuZGVuY2llcy4KK2RubCBTZXRzIGFuZCBBQ19TVUJTVHMgdGhlIExJQiR7TkFNRX0gYW5kIExUTElCJHtOQU1FfSB2YXJpYWJsZXMgYW5kCitkbmwgYXVnbWVudHMgdGhlIENQUEZMQUdTIHZhcmlhYmxlLgorZG5sIFNldHMgYW5kIEFDX1NVQlNUcyB0aGUgTElCJHtOQU1FfV9QUkVGSVggdmFyaWFibGUgdG8gbm9uZW1wdHkgaWYgbGlibmFtZQorZG5sIHdhcyBmb3VuZCBpbiAke0xJQiR7TkFNRX1fUFJFRklYfS8kYWNsX2xpYmRpcnN0ZW0uCitBQ19ERUZVTihbQUNfTElCX0xJTktGTEFHU10sCitbCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX1BSRUZJWF0pCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9SUEFUSF0pCisgIHB1c2hkZWYoW05hbWVdLFttNF90cmFuc2xpdChbJDFdLFsuLystXSwgW19fX19dKV0pCisgIHB1c2hkZWYoW05BTUVdLFttNF90cmFuc2xpdChbJDFdLFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vKy1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX19fXSldKQorICBBQ19DQUNIRV9DSEVDSyhbaG93IHRvIGxpbmsgd2l0aCBsaWJbXSQxXSwgW2FjX2N2X2xpYltdTmFtZVtdX2xpYnNdLCBbCisgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFskMV0sIFskMl0pCisgICAgYWNfY3ZfbGliW11OYW1lW11fbGlicz0iJExJQltdTkFNRSIKKyAgICBhY19jdl9saWJbXU5hbWVbXV9sdGxpYnM9IiRMVExJQltdTkFNRSIKKyAgICBhY19jdl9saWJbXU5hbWVbXV9jcHBmbGFncz0iJElOQ1tdTkFNRSIKKyAgICBhY19jdl9saWJbXU5hbWVbXV9wcmVmaXg9IiRMSUJbXU5BTUVbXV9QUkVGSVgiCisgIF0pCisgIExJQltdTkFNRT0iJGFjX2N2X2xpYltdTmFtZVtdX2xpYnMiCisgIExUTElCW11OQU1FPSIkYWNfY3ZfbGliW11OYW1lW11fbHRsaWJzIgorICBJTkNbXU5BTUU9IiRhY19jdl9saWJbXU5hbWVbXV9jcHBmbGFncyIKKyAgTElCW11OQU1FW11fUFJFRklYPSIkYWNfY3ZfbGliW11OYW1lW11fcHJlZml4IgorICBBQ19MSUJfQVBQRU5EVE9WQVIoW0NQUEZMQUdTXSwgWyRJTkNdTkFNRSkKKyAgQUNfU1VCU1QoW0xJQl1OQU1FKQorICBBQ19TVUJTVChbTFRMSUJdTkFNRSkKKyAgQUNfU1VCU1QoW0xJQl1OQU1FW19QUkVGSVhdKQorICBkbmwgQWxzbyBzZXQgSEFWRV9MSUJbXU5BTUUgc28gdGhhdCBBQ19MSUJfSEFWRV9MSU5LRkxBR1MgY2FuIHJldXNlIHRoZQorICBkbmwgcmVzdWx0cyBvZiB0aGlzIHNlYXJjaCB3aGVuIHRoaXMgbGlicmFyeSBhcHBlYXJzIGFzIGEgZGVwZW5kZW5jeS4KKyAgSEFWRV9MSUJbXU5BTUU9eWVzCisgIHBvcGRlZihbTkFNRV0pCisgIHBvcGRlZihbTmFtZV0pCitdKQorCitkbmwgQUNfTElCX0hBVkVfTElOS0ZMQUdTKG5hbWUsIGRlcGVuZGVuY2llcywgaW5jbHVkZXMsIHRlc3Rjb2RlLCBbbWlzc2luZy1tZXNzYWdlXSkKK2RubCBzZWFyY2hlcyBmb3IgbGlibmFtZSBhbmQgdGhlIGxpYnJhcmllcyBjb3JyZXNwb25kaW5nIHRvIGV4cGxpY2l0IGFuZAorZG5sIGltcGxpY2l0IGRlcGVuZGVuY2llcywgdG9nZXRoZXIgd2l0aCB0aGUgc3BlY2lmaWVkIGluY2x1ZGUgZmlsZXMgYW5kCitkbmwgdGhlIGFiaWxpdHkgdG8gY29tcGlsZSBhbmQgbGluayB0aGUgc3BlY2lmaWVkIHRlc3Rjb2RlLiBUaGUgbWlzc2luZy1tZXNzYWdlCitkbmwgZGVmYXVsdHMgdG8gJ25vJyBhbmQgbWF5IGNvbnRhaW4gYWRkaXRpb25hbCBoaW50cyBmb3IgdGhlIHVzZXIuCitkbmwgSWYgZm91bmQsIGl0IHNldHMgYW5kIEFDX1NVQlNUcyBIQVZFX0xJQiR7TkFNRX09eWVzIGFuZCB0aGUgTElCJHtOQU1FfQorZG5sIGFuZCBMVExJQiR7TkFNRX0gdmFyaWFibGVzIGFuZCBhdWdtZW50cyB0aGUgQ1BQRkxBR1MgdmFyaWFibGUsIGFuZAorZG5sICNkZWZpbmVzIEhBVkVfTElCJHtOQU1FfSB0byAxLiBPdGhlcndpc2UsIGl0IHNldHMgYW5kIEFDX1NVQlNUcworZG5sIEhBVkVfTElCJHtOQU1FfT1ubyBhbmQgTElCJHtOQU1FfSBhbmQgTFRMSUIke05BTUV9IHRvIGVtcHR5LgorZG5sIFNldHMgYW5kIEFDX1NVQlNUcyB0aGUgTElCJHtOQU1FfV9QUkVGSVggdmFyaWFibGUgdG8gbm9uZW1wdHkgaWYgbGlibmFtZQorZG5sIHdhcyBmb3VuZCBpbiAke0xJQiR7TkFNRX1fUFJFRklYfS8kYWNsX2xpYmRpcnN0ZW0uCitBQ19ERUZVTihbQUNfTElCX0hBVkVfTElOS0ZMQUdTXSwKK1sKKyAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfUFJFRklYXSkKKyAgQUNfUkVRVUlSRShbQUNfTElCX1JQQVRIXSkKKyAgcHVzaGRlZihbTmFtZV0sW200X3RyYW5zbGl0KFskMV0sWy4vKy1dLCBbX19fX10pXSkKKyAgcHVzaGRlZihbTkFNRV0sW200X3RyYW5zbGl0KFskMV0sW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8rLV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX19dKV0pCisKKyAgZG5sIFNlYXJjaCBmb3IgbGliW11OYW1lIGFuZCBkZWZpbmUgTElCW11OQU1FLCBMVExJQltdTkFNRSBhbmQgSU5DW11OQU1FCisgIGRubCBhY2NvcmRpbmdseS4KKyAgQUNfTElCX0xJTktGTEFHU19CT0RZKFskMV0sIFskMl0pCisKKyAgZG5sIEFkZCAkSU5DW11OQU1FIHRvIENQUEZMQUdTIGJlZm9yZSBwZXJmb3JtaW5nIHRoZSBmb2xsb3dpbmcgY2hlY2tzLAorICBkbmwgYmVjYXVzZSBpZiB0aGUgdXNlciBoYXMgaW5zdGFsbGVkIGxpYltdTmFtZSBhbmQgbm90IGRpc2FibGVkIGl0cyB1c2UKKyAgZG5sIHZpYSAtLXdpdGhvdXQtbGliW11OYW1lLXByZWZpeCwgaGUgd2FudHMgdG8gdXNlIGl0LgorICBhY19zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisgIEFDX0xJQl9BUFBFTkRUT1ZBUihbQ1BQRkxBR1NdLCBbJElOQ11OQU1FKQorCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgbGliW10kMV0sIFthY19jdl9saWJbXU5hbWVdLCBbCisgICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKKyAgICBkbmwgSWYgJExJQltdTkFNRSBjb250YWlucyBzb21lIC1sIG9wdGlvbnMsIGFkZCBpdCB0byB0aGUgZW5kIG9mIExJQlMsCisgICAgZG5sIGJlY2F1c2UgdGhlc2UgLWwgb3B0aW9ucyBtaWdodCByZXF1aXJlIC1MIG9wdGlvbnMgdGhhdCBhcmUgcHJlc2VudCBpbgorICAgIGRubCBMSUJTLiAtbCBvcHRpb25zIGJlbmVmaXQgb25seSBmcm9tIHRoZSAtTCBvcHRpb25zIGxpc3RlZCBiZWZvcmUgaXQuCisgICAgZG5sIE90aGVyd2lzZSwgYWRkIGl0IHRvIHRoZSBmcm9udCBvZiBMSUJTLCBiZWNhdXNlIGl0IG1heSBiZSBhIHN0YXRpYworICAgIGRubCBsaWJyYXJ5IHRoYXQgZGVwZW5kcyBvbiBhbm90aGVyIHN0YXRpYyBsaWJyYXJ5IHRoYXQgaXMgcHJlc2VudCBpbiBMSUJTLgorICAgIGRubCBTdGF0aWMgbGlicmFyaWVzIGJlbmVmaXQgb25seSBmcm9tIHRoZSBzdGF0aWMgbGlicmFyaWVzIGxpc3RlZCBhZnRlcgorICAgIGRubCBpdC4KKyAgICBjYXNlICIgJExJQltdTkFNRSIgaW4KKyAgICAgICoiIC1sIiopIExJQlM9IiRMSUJTICRMSUJbXU5BTUUiIDs7CisgICAgICAqKSAgICAgICBMSUJTPSIkTElCW11OQU1FICRMSUJTIiA7OworICAgIGVzYWMKKyAgICBBQ19MSU5LX0lGRUxTRSgKKyAgICAgIFtBQ19MQU5HX1BST0dSQU0oW1skM11dLCBbWyQ0XV0pXSwKKyAgICAgIFthY19jdl9saWJbXU5hbWU9eWVzXSwKKyAgICAgIFthY19jdl9saWJbXU5hbWU9J200X2lmKFskNV0sIFtdLCBbbm9dLCBbWyQ1XV0pJ10pCisgICAgTElCUz0iJGFjX3NhdmVfTElCUyIKKyAgXSkKKyAgaWYgdGVzdCAiJGFjX2N2X2xpYltdTmFtZSIgPSB5ZXM7IHRoZW4KKyAgICBIQVZFX0xJQltdTkFNRT15ZXMKKyAgICBBQ19ERUZJTkUoW0hBVkVfTElCXU5BTUUsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGxpYl1bJDEgbGlicmFyeS5dKQorICAgIEFDX01TR19DSEVDS0lORyhbaG93IHRvIGxpbmsgd2l0aCBsaWJbXSQxXSkKKyAgICBBQ19NU0dfUkVTVUxUKFskTElCW11OQU1FXSkKKyAgZWxzZQorICAgIEhBVkVfTElCW11OQU1FPW5vCisgICAgZG5sIElmICRMSUJbXU5BTUUgZGlkbid0IGxlYWQgdG8gYSB1c2FibGUgbGlicmFyeSwgd2UgZG9uJ3QgbmVlZAorICAgIGRubCAkSU5DW11OQU1FIGVpdGhlci4KKyAgICBDUFBGTEFHUz0iJGFjX3NhdmVfQ1BQRkxBR1MiCisgICAgTElCW11OQU1FPQorICAgIExUTElCW11OQU1FPQorICAgIExJQltdTkFNRVtdX1BSRUZJWD0KKyAgZmkKKyAgQUNfU1VCU1QoW0hBVkVfTElCXU5BTUUpCisgIEFDX1NVQlNUKFtMSUJdTkFNRSkKKyAgQUNfU1VCU1QoW0xUTElCXU5BTUUpCisgIEFDX1NVQlNUKFtMSUJdTkFNRVtfUFJFRklYXSkKKyAgcG9wZGVmKFtOQU1FXSkKKyAgcG9wZGVmKFtOYW1lXSkKK10pCisKK2RubCBEZXRlcm1pbmUgdGhlIHBsYXRmb3JtIGRlcGVuZGVudCBwYXJhbWV0ZXJzIG5lZWRlZCB0byB1c2UgcnBhdGg6CitkbmwgICBhY2xfbGliZXh0LAorZG5sICAgYWNsX3NobGliZXh0LAorZG5sICAgYWNsX2xpYm5hbWVfc3BlYywKK2RubCAgIGFjbF9saWJyYXJ5X25hbWVzX3NwZWMsCitkbmwgICBhY2xfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywKK2RubCAgIGFjbF9oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLAorZG5sICAgYWNsX2hhcmRjb2RlX2RpcmVjdCwKK2RubCAgIGFjbF9oYXJkY29kZV9taW51c19MLgorQUNfREVGVU4oW0FDX0xJQl9SUEFUSF0sCitbCisgIGRubCBDb21wbGFpbiBpZiBjb25maWcucnBhdGggaXMgbWlzc2luZy4KKyAgQUNfUkVRVUlSRV9BVVhfRklMRShbY29uZmlnLnJwYXRoXSkKKyAgQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pICAgICAgICAgICAgICAgIGRubCB3ZSB1c2UgJENDLCAkR0NDLCAkTERGTEFHUworICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJPR19MRF0pICAgICAgICAgICAgZG5sIHdlIHVzZSAkTEQsICR3aXRoX2dudV9sZAorICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pICAgICAgICAgZG5sIHdlIHVzZSAkaG9zdAorICBBQ19SRVFVSVJFKFtBQ19DT05GSUdfQVVYX0RJUl9ERUZBVUxUXSkgZG5sIHdlIHVzZSAkYWNfYXV4X2RpcgorICBBQ19DQUNIRV9DSEVDSyhbZm9yIHNoYXJlZCBsaWJyYXJ5IHJ1biBwYXRoIG9yaWdpbl0sIFthY2xfY3ZfcnBhdGhdLCBbCisgICAgQ0M9IiRDQyIgR0NDPSIkR0NDIiBMREZMQUdTPSIkTERGTEFHUyIgTEQ9IiRMRCIgd2l0aF9nbnVfbGQ9IiR3aXRoX2dudV9sZCIgXAorICAgICR7Q09ORklHX1NIRUxMLS9iaW4vc2h9ICIkYWNfYXV4X2Rpci9jb25maWcucnBhdGgiICIkaG9zdCIgPiBjb25mdGVzdC5zaAorICAgIC4gLi9jb25mdGVzdC5zaAorICAgIHJtIC1mIC4vY29uZnRlc3Quc2gKKyAgICBhY2xfY3ZfcnBhdGg9ZG9uZQorICBdKQorICB3bD0iJGFjbF9jdl93bCIKKyAgYWNsX2xpYmV4dD0iJGFjbF9jdl9saWJleHQiCisgIGFjbF9zaGxpYmV4dD0iJGFjbF9jdl9zaGxpYmV4dCIKKyAgYWNsX2xpYm5hbWVfc3BlYz0iJGFjbF9jdl9saWJuYW1lX3NwZWMiCisgIGFjbF9saWJyYXJ5X25hbWVzX3NwZWM9IiRhY2xfY3ZfbGlicmFyeV9uYW1lc19zcGVjIgorICBhY2xfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0iJGFjbF9jdl9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIgorICBhY2xfaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0iJGFjbF9jdl9oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIgorICBhY2xfaGFyZGNvZGVfZGlyZWN0PSIkYWNsX2N2X2hhcmRjb2RlX2RpcmVjdCIKKyAgYWNsX2hhcmRjb2RlX21pbnVzX0w9IiRhY2xfY3ZfaGFyZGNvZGVfbWludXNfTCIKKyAgZG5sIERldGVybWluZSB3aGV0aGVyIHRoZSB1c2VyIHdhbnRzIHJwYXRoIGhhbmRsaW5nIGF0IGFsbC4KKyAgQUNfQVJHX0VOQUJMRShbcnBhdGhdLAorICAgIFsgIC0tZGlzYWJsZS1ycGF0aCAgICAgICAgIGRvIG5vdCBoYXJkY29kZSBydW50aW1lIGxpYnJhcnkgcGF0aHNdLAorICAgIDosIGVuYWJsZV9ycGF0aD15ZXMpCitdKQorCitkbmwgQUNfTElCX0ZST01QQUNLQUdFKG5hbWUsIHBhY2thZ2UpCitkbmwgZGVjbGFyZXMgdGhhdCBsaWJuYW1lIGNvbWVzIGZyb20gdGhlIGdpdmVuIHBhY2thZ2UuIFRoZSBjb25maWd1cmUgZmlsZQorZG5sIHdpbGwgdGhlbiBub3QgaGF2ZSBhIC0td2l0aC1saWJuYW1lLXByZWZpeCBvcHRpb24gYnV0IGEKK2RubCAtLXdpdGgtcGFja2FnZS1wcmVmaXggb3B0aW9uLiBTZXZlcmFsIGxpYnJhcmllcyBjYW4gY29tZSBmcm9tIHRoZSBzYW1lCitkbmwgcGFja2FnZS4gVGhpcyBkZWNsYXJhdGlvbiBtdXN0IG9jY3VyIGJlZm9yZSBhbiBBQ19MSUJfTElOS0ZMQUdTIG9yIHNpbWlsYXIKK2RubCBtYWNybyBjYWxsIHRoYXQgc2VhcmNoZXMgZm9yIGxpYm5hbWUuCitBQ19ERUZVTihbQUNfTElCX0ZST01QQUNLQUdFXSwKK1sKKyAgcHVzaGRlZihbTkFNRV0sW200X3RyYW5zbGl0KFskMV0sW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8rLV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX19dKV0pCisgIGRlZmluZShbYWNsX2Zyb21wYWNrYWdlX11OQU1FLCBbJDJdKQorICBwb3BkZWYoW05BTUVdKQorICBwdXNoZGVmKFtQQUNLXSxbJDJdKQorICBwdXNoZGVmKFtQQUNLVVBdLFttNF90cmFuc2xpdChQQUNLLFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vKy1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX19dKV0pCisgIGRlZmluZShbYWNsX2xpYnNpbnBhY2thZ2VfXVBBQ0tVUCwKKyAgICBtNF9pZmRlZihbYWNsX2xpYnNpbnBhY2thZ2VfXVBBQ0tVUCwgW200X2RlZm4oW2FjbF9saWJzaW5wYWNrYWdlX11QQUNLVVApWywgXV0sKVtsaWIkMV0pCisgIHBvcGRlZihbUEFDS1VQXSkKKyAgcG9wZGVmKFtQQUNLXSkKK10pCisKK2RubCBBQ19MSUJfTElOS0ZMQUdTX0JPRFkobmFtZSBbLCBkZXBlbmRlbmNpZXNdKSBzZWFyY2hlcyBmb3IgbGlibmFtZSBhbmQKK2RubCB0aGUgbGlicmFyaWVzIGNvcnJlc3BvbmRpbmcgdG8gZXhwbGljaXQgYW5kIGltcGxpY2l0IGRlcGVuZGVuY2llcy4KK2RubCBTZXRzIHRoZSBMSUIke05BTUV9LCBMVExJQiR7TkFNRX0gYW5kIElOQyR7TkFNRX0gdmFyaWFibGVzLgorZG5sIEFsc28sIHNldHMgdGhlIExJQiR7TkFNRX1fUFJFRklYIHZhcmlhYmxlIHRvIG5vbmVtcHR5IGlmIGxpYm5hbWUgd2FzIGZvdW5kCitkbmwgaW4gJHtMSUIke05BTUV9X1BSRUZJWH0vJGFjbF9saWJkaXJzdGVtLgorQUNfREVGVU4oW0FDX0xJQl9MSU5LRkxBR1NfQk9EWV0sCitbCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX01VTFRJTElCXSkKKyAgcHVzaGRlZihbTkFNRV0sW200X3RyYW5zbGl0KFskMV0sW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8rLV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX19dKV0pCisgIHB1c2hkZWYoW1BBQ0tdLFttNF9pZmRlZihbYWNsX2Zyb21wYWNrYWdlX11OQU1FLCBbYWNsX2Zyb21wYWNrYWdlX11OQU1FLCBsaWJbJDFdKV0pCisgIHB1c2hkZWYoW1BBQ0tVUF0sW200X3RyYW5zbGl0KFBBQ0ssW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8rLV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fX10pXSkKKyAgcHVzaGRlZihbUEFDS0xJQlNdLFttNF9pZmRlZihbYWNsX2Zyb21wYWNrYWdlX11OQU1FLCBbYWNsX2xpYnNpbnBhY2thZ2VfXVBBQ0tVUCwgbGliWyQxXSldKQorICBkbmwgQnkgZGVmYXVsdCwgbG9vayBpbiAkaW5jbHVkZWRpciBhbmQgJGxpYmRpci4KKyAgdXNlX2FkZGl0aW9uYWw9eWVzCisgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbCisgICAgZXZhbCBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9XCIkaW5jbHVkZWRpclwiCisgICAgZXZhbCBhZGRpdGlvbmFsX2xpYmRpcj1cIiRsaWJkaXJcIgorICBdKQorICBBQ19BUkdfV0lUSChQQUNLWy1wcmVmaXhdLAorW1sgIC0td2l0aC1dXVBBQ0tbWy1wcmVmaXhbPURJUl0gIHNlYXJjaCBmb3IgXVBBQ0tMSUJTWyBpbiBESVIvaW5jbHVkZSBhbmQgRElSL2xpYgorICAtLXdpdGhvdXQtXV1QQUNLW1stcHJlZml4ICAgICBkb24ndCBzZWFyY2ggZm9yIF1QQUNLTElCU1sgaW4gaW5jbHVkZWRpciBhbmQgbGliZGlyXV0sCitbCisgICAgaWYgdGVzdCAiWCR3aXRodmFsIiA9ICJYbm8iOyB0aGVuCisgICAgICB1c2VfYWRkaXRpb25hbD1ubworICAgIGVsc2UKKyAgICAgIGlmIHRlc3QgIlgkd2l0aHZhbCIgPSAiWCI7IHRoZW4KKyAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFsKKyAgICAgICAgICBldmFsIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj1cIiRpbmNsdWRlZGlyXCIKKyAgICAgICAgICBldmFsIGFkZGl0aW9uYWxfbGliZGlyPVwiJGxpYmRpclwiCisgICAgICAgIF0pCisgICAgICBlbHNlCisgICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0iJHdpdGh2YWwvaW5jbHVkZSIKKyAgICAgICAgYWRkaXRpb25hbF9saWJkaXI9IiR3aXRodmFsLyRhY2xfbGliZGlyc3RlbSIKKyAgICAgICAgaWYgdGVzdCAiJGFjbF9saWJkaXJzdGVtMiIgIT0gIiRhY2xfbGliZGlyc3RlbSIgXAorICAgICAgICAgICAmJiB0ZXN0ICEgLWQgIiR3aXRodmFsLyRhY2xfbGliZGlyc3RlbSI7IHRoZW4KKyAgICAgICAgICBhZGRpdGlvbmFsX2xpYmRpcj0iJHdpdGh2YWwvJGFjbF9saWJkaXJzdGVtMiIKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgZmkKK10pCisgIGRubCBTZWFyY2ggdGhlIGxpYnJhcnkgYW5kIGl0cyBkZXBlbmRlbmNpZXMgaW4gJGFkZGl0aW9uYWxfbGliZGlyIGFuZAorICBkbmwgJExERkxBR1MuIFVzaW5nIGJyZWFkdGgtZmlyc3Qtc2VhY2guCisgIExJQltdTkFNRT0KKyAgTFRMSUJbXU5BTUU9CisgIElOQ1tdTkFNRT0KKyAgTElCW11OQU1FW11fUFJFRklYPQorICBkbmwgSEFWRV9MSUIke05BTUV9IGlzIGFuIGluZGljYXRvciB0aGF0IExJQiR7TkFNRX0sIExUTElCJHtOQU1FfSBoYXZlIGJlZW4KKyAgZG5sIGNvbXB1dGVkLiBTbyBpdCBoYXMgdG8gYmUgcmVzZXQgaGVyZS4KKyAgSEFWRV9MSUJbXU5BTUU9CisgIHJwYXRoZGlycz0KKyAgbHRycGF0aGRpcnM9CisgIG5hbWVzX2FscmVhZHlfaGFuZGxlZD0KKyAgbmFtZXNfbmV4dF9yb3VuZD0nJDEgJDInCisgIHdoaWxlIHRlc3QgLW4gIiRuYW1lc19uZXh0X3JvdW5kIjsgZG8KKyAgICBuYW1lc190aGlzX3JvdW5kPSIkbmFtZXNfbmV4dF9yb3VuZCIKKyAgICBuYW1lc19uZXh0X3JvdW5kPQorICAgIGZvciBuYW1lIGluICRuYW1lc190aGlzX3JvdW5kOyBkbworICAgICAgYWxyZWFkeV9oYW5kbGVkPQorICAgICAgZm9yIG4gaW4gJG5hbWVzX2FscmVhZHlfaGFuZGxlZDsgZG8KKyAgICAgICAgaWYgdGVzdCAiJG4iID0gIiRuYW1lIjsgdGhlbgorICAgICAgICAgIGFscmVhZHlfaGFuZGxlZD15ZXMKKyAgICAgICAgICBicmVhaworICAgICAgICBmaQorICAgICAgZG9uZQorICAgICAgaWYgdGVzdCAteiAiJGFscmVhZHlfaGFuZGxlZCI7IHRoZW4KKyAgICAgICAgbmFtZXNfYWxyZWFkeV9oYW5kbGVkPSIkbmFtZXNfYWxyZWFkeV9oYW5kbGVkICRuYW1lIgorICAgICAgICBkbmwgU2VlIGlmIGl0IHdhcyBhbHJlYWR5IGxvY2F0ZWQgYnkgYW4gZWFybGllciBBQ19MSUJfTElOS0ZMQUdTCisgICAgICAgIGRubCBvciBBQ19MSUJfSEFWRV9MSU5LRkxBR1MgY2FsbC4KKyAgICAgICAgdXBwZXJuYW1lPWBlY2hvICIkbmFtZSIgfCBzZWQgLWUgJ3l8YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLystfEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fX3wnYAorICAgICAgICBldmFsIHZhbHVlPVwiXCRIQVZFX0xJQiR1cHBlcm5hbWVcIgorICAgICAgICBpZiB0ZXN0IC1uICIkdmFsdWUiOyB0aGVuCisgICAgICAgICAgaWYgdGVzdCAiJHZhbHVlIiA9IHllczsgdGhlbgorICAgICAgICAgICAgZXZhbCB2YWx1ZT1cIlwkTElCJHVwcGVybmFtZVwiCisgICAgICAgICAgICB0ZXN0IC16ICIkdmFsdWUiIHx8IExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JHZhbHVlIgorICAgICAgICAgICAgZXZhbCB2YWx1ZT1cIlwkTFRMSUIkdXBwZXJuYW1lXCIKKyAgICAgICAgICAgIHRlc3QgLXogIiR2YWx1ZSIgfHwgTFRMSUJbXU5BTUU9IiR7TFRMSUJbXU5BTUV9JHtMVExJQltdTkFNRTorIH0kdmFsdWUiCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgZG5sIEFuIGVhcmxpZXIgY2FsbCB0byBBQ19MSUJfSEFWRV9MSU5LRkxBR1MgaGFzIGRldGVybWluZWQKKyAgICAgICAgICAgIGRubCB0aGF0IHRoaXMgbGlicmFyeSBkb2Vzbid0IGV4aXN0LiBTbyBqdXN0IGRyb3AgaXQuCisgICAgICAgICAgICA6CisgICAgICAgICAgZmkKKyAgICAgICAgZWxzZQorICAgICAgICAgIGRubCBTZWFyY2ggdGhlIGxpYnJhcnkgbGliJG5hbWUgaW4gJGFkZGl0aW9uYWxfbGliZGlyIGFuZCAkTERGTEFHUworICAgICAgICAgIGRubCBhbmQgdGhlIGFscmVhZHkgY29uc3RydWN0ZWQgJExJQk5BTUUvJExUTElCTkFNRS4KKyAgICAgICAgICBmb3VuZF9kaXI9CisgICAgICAgICAgZm91bmRfbGE9CisgICAgICAgICAgZm91bmRfc289CisgICAgICAgICAgZm91bmRfYT0KKyAgICAgICAgICBldmFsIGxpYm5hbWU9XCIkYWNsX2xpYm5hbWVfc3BlY1wiICAgICMgdHlwaWNhbGx5OiBsaWJuYW1lPWxpYiRuYW1lCisgICAgICAgICAgaWYgdGVzdCAtbiAiJGFjbF9zaGxpYmV4dCI7IHRoZW4KKyAgICAgICAgICAgIHNocmV4dD0iLiRhY2xfc2hsaWJleHQiICAgICAgICAgICAgICMgdHlwaWNhbGx5OiBzaHJleHQ9LnNvCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgc2hyZXh0PQorICAgICAgICAgIGZpCisgICAgICAgICAgaWYgdGVzdCAkdXNlX2FkZGl0aW9uYWwgPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgIGRpcj0iJGFkZGl0aW9uYWxfbGliZGlyIgorICAgICAgICAgICAgZG5sIFRoZSBzYW1lIGNvZGUgYXMgaW4gdGhlIGxvb3AgYmVsb3c6CisgICAgICAgICAgICBkbmwgRmlyc3QgbG9vayBmb3IgYSBzaGFyZWQgbGlicmFyeS4KKyAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRhY2xfc2hsaWJleHQiOyB0aGVuCisgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUkc2hyZXh0IjsgdGhlbgorICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kbGlibmFtZSRzaHJleHQiCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkYWNsX2xpYnJhcnlfbmFtZXNfc3BlYyIgPSAnJGxpYm5hbWUkc2hyZXh0JHZlcnN1ZmZpeCc7IHRoZW4KKyAgICAgICAgICAgICAgICAgIHZlcj1gKGNkICIkZGlyIiAmJiBcCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZiBpbiAiJGxpYm5hbWUkc2hyZXh0Ii4qOyBkbyBlY2hvICIkZiI7IGRvbmUgXAorICAgICAgICAgICAgICAgICAgICAgICAgfCBzZWQgLWUgInMsXiRsaWJuYW1lJHNocmV4dFxcXFwuLCwiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgc29ydCAtdCAnLicgLW4gLXIgLWsxLDEgLWsyLDIgLWszLDMgLWs0LDQgLWs1LDUgXAorICAgICAgICAgICAgICAgICAgICAgICAgfCBzZWQgMXEgKSAyPi9kZXYvbnVsbGAKKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiR2ZXIiICYmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUkc2hyZXh0LiR2ZXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIvJGxpYm5hbWUkc2hyZXh0LiR2ZXIiCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgIGV2YWwgbGlicmFyeV9uYW1lcz1cIiRhY2xfbGlicmFyeV9uYW1lc19zcGVjXCIKKyAgICAgICAgICAgICAgICAgIGZvciBmIGluICRsaWJyYXJ5X25hbWVzOyBkbworICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRmIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kZiIKKyAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgZG5sIFRoZW4gbG9vayBmb3IgYSBzdGF0aWMgbGlicmFyeS4KKyAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYIjsgdGhlbgorICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lLiRhY2xfbGliZXh0IjsgdGhlbgorICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICBmb3VuZF9hPSIkZGlyLyRsaWJuYW1lLiRhY2xfbGliZXh0IgorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZS5sYSI7IHRoZW4KKyAgICAgICAgICAgICAgICBmb3VuZF9sYT0iJGRpci8kbGlibmFtZS5sYSIKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgZmkKKyAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgPSAiWCI7IHRoZW4KKyAgICAgICAgICAgIGZvciB4IGluICRMREZMQUdTICRMVExJQltdTkFNRTsgZG8KKyAgICAgICAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKKyAgICAgICAgICAgICAgY2FzZSAiJHgiIGluCisgICAgICAgICAgICAgICAgLUwqKQorICAgICAgICAgICAgICAgICAgZGlyPWBlY2hvICJYJHgiIHwgc2VkIC1lICdzL15YLUwvLydgCisgICAgICAgICAgICAgICAgICBkbmwgRmlyc3QgbG9vayBmb3IgYSBzaGFyZWQgbGlicmFyeS4KKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRhY2xfc2hsaWJleHQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUkc2hyZXh0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kbGlibmFtZSRzaHJleHQiCisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkYWNsX2xpYnJhcnlfbmFtZXNfc3BlYyIgPSAnJGxpYm5hbWUkc2hyZXh0JHZlcnN1ZmZpeCc7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZlcj1gKGNkICIkZGlyIiAmJiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZiBpbiAiJGxpYm5hbWUkc2hyZXh0Ii4qOyBkbyBlY2hvICIkZiI7IGRvbmUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZWQgLWUgInMsXiRsaWJuYW1lJHNocmV4dFxcXFwuLCwiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc29ydCAtdCAnLicgLW4gLXIgLWsxLDEgLWsyLDIgLWszLDMgLWs0LDQgLWs1LDUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZWQgMXEgKSAyPi9kZXYvbnVsbGAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiR2ZXIiICYmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUkc2hyZXh0LiR2ZXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIvJGxpYm5hbWUkc2hyZXh0LiR2ZXIiCisgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwgbGlicmFyeV9uYW1lcz1cIiRhY2xfbGlicmFyeV9uYW1lc19zcGVjXCIKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmIGluICRsaWJyYXJ5X25hbWVzOyBkbworICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRmIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kZiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgZG5sIFRoZW4gbG9vayBmb3IgYSBzdGF0aWMgbGlicmFyeS4KKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lLiRhY2xfbGliZXh0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9hPSIkZGlyLyRsaWJuYW1lLiRhY2xfbGliZXh0IgorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZS5sYSI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9sYT0iJGRpci8kbGlibmFtZS5sYSIKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZG9uZQorICAgICAgICAgIGZpCisgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiICE9ICJYIjsgdGhlbgorICAgICAgICAgICAgZG5sIEZvdW5kIHRoZSBsaWJyYXJ5LgorICAgICAgICAgICAgTFRMSUJbXU5BTUU9IiR7TFRMSUJbXU5BTUV9JHtMVExJQltdTkFNRTorIH0tTCRmb3VuZF9kaXIgLWwkbmFtZSIKKyAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfc28iICE9ICJYIjsgdGhlbgorICAgICAgICAgICAgICBkbmwgTGlua2luZyB3aXRoIGEgc2hhcmVkIGxpYnJhcnkuIFdlIGF0dGVtcHQgdG8gaGFyZGNvZGUgaXRzCisgICAgICAgICAgICAgIGRubCBkaXJlY3RvcnkgaW50byB0aGUgZXhlY3V0YWJsZSdzIHJ1bnBhdGgsIHVubGVzcyBpdCdzIHRoZQorICAgICAgICAgICAgICBkbmwgc3RhbmRhcmQgL3Vzci9saWIuCisgICAgICAgICAgICAgIGlmIHRlc3QgIiRlbmFibGVfcnBhdGgiID0gbm8gXAorICAgICAgICAgICAgICAgICB8fCB0ZXN0ICJYJGZvdW5kX2RpciIgPSAiWC91c3IvJGFjbF9saWJkaXJzdGVtIiBcCisgICAgICAgICAgICAgICAgIHx8IHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0yIjsgdGhlbgorICAgICAgICAgICAgICAgIGRubCBObyBoYXJkY29kaW5nIGlzIG5lZWRlZC4KKyAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmb3VuZF9zbyIKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRubCBVc2UgYW4gZXhwbGljaXQgb3B0aW9uIHRvIGhhcmRjb2RlIERJUiBpbnRvIHRoZSByZXN1bHRpbmcKKyAgICAgICAgICAgICAgICBkbmwgYmluYXJ5LgorICAgICAgICAgICAgICAgIGRubCBQb3RlbnRpYWxseSBhZGQgRElSIHRvIGx0cnBhdGhkaXJzLgorICAgICAgICAgICAgICAgIGRubCBUaGUgbHRycGF0aGRpcnMgd2lsbCBiZSBhcHBlbmRlZCB0byAkTFRMSUJOQU1FIGF0IHRoZSBlbmQuCisgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgIGZvciB4IGluICRsdHJwYXRoZGlyczsgZG8KKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRmb3VuZF9kaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICBsdHJwYXRoZGlycz0iJGx0cnBhdGhkaXJzICRmb3VuZF9kaXIiCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBkbmwgVGhlIGhhcmRjb2RpbmcgaW50byAkTElCTkFNRSBpcyBzeXN0ZW0gZGVwZW5kZW50LgorICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRhY2xfaGFyZGNvZGVfZGlyZWN0IiA9IHllczsgdGhlbgorICAgICAgICAgICAgICAgICAgZG5sIFVzaW5nIERJUi9saWJOQU1FLnNvIGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcyBESVIgaW50byB0aGUKKyAgICAgICAgICAgICAgICAgIGRubCByZXN1bHRpbmcgYmluYXJ5LgorICAgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZm91bmRfc28iCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGFjbF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIiAmJiB0ZXN0ICIkYWNsX2hhcmRjb2RlX21pbnVzX0wiID0gbm87IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgZG5sIFVzZSBhbiBleHBsaWNpdCBvcHRpb24gdG8gaGFyZGNvZGUgRElSIGludG8gdGhlIHJlc3VsdGluZworICAgICAgICAgICAgICAgICAgICBkbmwgYmluYXJ5LgorICAgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmb3VuZF9zbyIKKyAgICAgICAgICAgICAgICAgICAgZG5sIFBvdGVudGlhbGx5IGFkZCBESVIgdG8gcnBhdGhkaXJzLgorICAgICAgICAgICAgICAgICAgICBkbmwgVGhlIHJwYXRoZGlycyB3aWxsIGJlIGFwcGVuZGVkIHRvICRMSUJOQU1FIGF0IHRoZSBlbmQuCisgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJHJwYXRoZGlyczsgZG8KKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZm91bmRfZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgcnBhdGhkaXJzPSIkcnBhdGhkaXJzICRmb3VuZF9kaXIiCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGRubCBSZWx5IG9uICItTCRmb3VuZF9kaXIiLgorICAgICAgICAgICAgICAgICAgICBkbmwgQnV0IGRvbid0IGFkZCBpdCBpZiBpdCdzIGFscmVhZHkgY29udGFpbmVkIGluIHRoZSBMREZMQUdTCisgICAgICAgICAgICAgICAgICAgIGRubCBvciB0aGUgYWxyZWFkeSBjb25zdHJ1Y3RlZCAkTElCTkFNRQorICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRMREZMQUdTICRMSUJbXU5BTUU7IGRvCisgICAgICAgICAgICAgICAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtTCRmb3VuZF9kaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfS1MJGZvdW5kX2RpciIKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGFjbF9oYXJkY29kZV9taW51c19MIiAhPSBubzsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIGRubCBGSVhNRTogTm90IHN1cmUgd2hldGhlciB3ZSBzaG91bGQgdXNlCisgICAgICAgICAgICAgICAgICAgICAgZG5sICItTCRmb3VuZF9kaXIgLWwkbmFtZSIgb3IgIi1MJGZvdW5kX2RpciAkZm91bmRfc28iCisgICAgICAgICAgICAgICAgICAgICAgZG5sIGhlcmUuCisgICAgICAgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZm91bmRfc28iCisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICBkbmwgV2UgY2Fubm90IHVzZSAkYWNsX2hhcmRjb2RlX3J1bnBhdGhfdmFyIGFuZCBMRF9SVU5fUEFUSAorICAgICAgICAgICAgICAgICAgICAgIGRubCBoZXJlLCBiZWNhdXNlIHRoaXMgZG9lc24ndCBmaXQgaW4gZmxhZ3MgcGFzc2VkIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgIGRubCBjb21waWxlci4gU28gZ2l2ZSB1cC4gTm8gaGFyZGNvZGluZy4gVGhpcyBhZmZlY3RzIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICBkbmwgdmVyeSBvbGQgc3lzdGVtcy4KKyAgICAgICAgICAgICAgICAgICAgICBkbmwgRklYTUU6IE5vdCBzdXJlIHdoZXRoZXIgd2Ugc2hvdWxkIHVzZQorICAgICAgICAgICAgICAgICAgICAgIGRubCAiLUwkZm91bmRfZGlyIC1sJG5hbWUiIG9yICItTCRmb3VuZF9kaXIgJGZvdW5kX3NvIgorICAgICAgICAgICAgICAgICAgICAgIGRubCBoZXJlLgorICAgICAgICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9LWwkbmFtZSIKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9hIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgICBkbmwgTGlua2luZyB3aXRoIGEgc3RhdGljIGxpYnJhcnkuCisgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZm91bmRfYSIKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRubCBXZSBzaG91bGRuJ3QgY29tZSBoZXJlLCBidXQgYW55d2F5IGl0J3MgZ29vZCB0byBoYXZlIGEKKyAgICAgICAgICAgICAgICBkbmwgZmFsbGJhY2suCisgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0tTCRmb3VuZF9kaXIgLWwkbmFtZSIKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgICBkbmwgQXNzdW1lIHRoZSBpbmNsdWRlIGZpbGVzIGFyZSBuZWFyYnkuCisgICAgICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9CisgICAgICAgICAgICBjYXNlICIkZm91bmRfZGlyIiBpbgorICAgICAgICAgICAgICAqLyRhY2xfbGliZGlyc3RlbSB8ICovJGFjbF9saWJkaXJzdGVtLykKKyAgICAgICAgICAgICAgICBiYXNlZGlyPWBlY2hvICJYJGZvdW5kX2RpciIgfCBzZWQgLWUgJ3MsXlgsLCcgLWUgInMsLyRhY2xfbGliZGlyc3RlbS8iJyokLCwnYAorICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRuYW1lIiA9ICckMSc7IHRoZW4KKyAgICAgICAgICAgICAgICAgIExJQltdTkFNRVtdX1BSRUZJWD0iJGJhc2VkaXIiCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9IiRiYXNlZGlyL2luY2x1ZGUiCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgKi8kYWNsX2xpYmRpcnN0ZW0yIHwgKi8kYWNsX2xpYmRpcnN0ZW0yLykKKyAgICAgICAgICAgICAgICBiYXNlZGlyPWBlY2hvICJYJGZvdW5kX2RpciIgfCBzZWQgLWUgJ3MsXlgsLCcgLWUgInMsLyRhY2xfbGliZGlyc3RlbTIvIicqJCwsJ2AKKyAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkbmFtZSIgPSAnJDEnOyB0aGVuCisgICAgICAgICAgICAgICAgICBMSUJbXU5BTUVbXV9QUkVGSVg9IiRiYXNlZGlyIgorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9pbmNsdWRlZGlyPSIkYmFzZWRpci9pbmNsdWRlIgorICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgIT0gIlgiOyB0aGVuCisgICAgICAgICAgICAgIGRubCBQb3RlbnRpYWxseSBhZGQgJGFkZGl0aW9uYWxfaW5jbHVkZWRpciB0byAkSU5DTkFNRS4KKyAgICAgICAgICAgICAgZG5sIEJ1dCBkb24ndCBhZGQgaXQKKyAgICAgICAgICAgICAgZG5sICAgMS4gaWYgaXQncyB0aGUgc3RhbmRhcmQgL3Vzci9pbmNsdWRlLAorICAgICAgICAgICAgICBkbmwgICAyLiBpZiBpdCdzIC91c3IvbG9jYWwvaW5jbHVkZSBhbmQgd2UgYXJlIHVzaW5nIEdDQyBvbiBMaW51eCwKKyAgICAgICAgICAgICAgZG5sICAgMy4gaWYgaXQncyBhbHJlYWR5IHByZXNlbnQgaW4gJENQUEZMQUdTIG9yIHRoZSBhbHJlYWR5CisgICAgICAgICAgICAgIGRubCAgICAgIGNvbnN0cnVjdGVkICRJTkNOQU1FLAorICAgICAgICAgICAgICBkbmwgICA0LiBpZiBpdCBkb2Vzbid0IGV4aXN0IGFzIGEgZGlyZWN0b3J5LgorICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgIT0gIlgvdXNyL2luY2x1ZGUiOyB0aGVuCisgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9pbmNsdWRlZGlyIiA9ICJYL3Vzci9sb2NhbC9pbmNsdWRlIjsgdGhlbgorICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJEdDQyI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgICAgICAgICAgICAgICAgIGxpbnV4KiB8IGdudSogfCBrKmJzZCotZ251KSBoYXZlaXQ9eWVzOzsKKyAgICAgICAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkQ1BQRkxBR1MgJElOQ1tdTkFNRTsgZG8KKyAgICAgICAgICAgICAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUkkYWRkaXRpb25hbF9pbmNsdWRlZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9uYWxfaW5jbHVkZWRpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBkbmwgUmVhbGx5IGFkZCAkYWRkaXRpb25hbF9pbmNsdWRlZGlyIHRvICRJTkNOQU1FLgorICAgICAgICAgICAgICAgICAgICAgIElOQ1tdTkFNRT0iJHtJTkNbXU5BTUV9JHtJTkNbXU5BTUU6KyB9LUkkYWRkaXRpb25hbF9pbmNsdWRlZGlyIgorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGRubCBMb29rIGZvciBkZXBlbmRlbmNpZXMuCisgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZm91bmRfbGEiOyB0aGVuCisgICAgICAgICAgICAgIGRubCBSZWFkIHRoZSAubGEgZmlsZS4gSXQgZGVmaW5lcyB0aGUgdmFyaWFibGVzCisgICAgICAgICAgICAgIGRubCBkbG5hbWUsIGxpYnJhcnlfbmFtZXMsIG9sZF9saWJyYXJ5LCBkZXBlbmRlbmN5X2xpYnMsIGN1cnJlbnQsCisgICAgICAgICAgICAgIGRubCBhZ2UsIHJldmlzaW9uLCBpbnN0YWxsZWQsIGRsb3BlbiwgZGxwcmVvcGVuLCBsaWJkaXIuCisgICAgICAgICAgICAgIHNhdmVfbGliZGlyPSIkbGliZGlyIgorICAgICAgICAgICAgICBjYXNlICIkZm91bmRfbGEiIGluCisgICAgICAgICAgICAgICAgKi8qIHwgKlxcKikgLiAiJGZvdW5kX2xhIiA7OworICAgICAgICAgICAgICAgICopIC4gIi4vJGZvdW5kX2xhIiA7OworICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICAgIGxpYmRpcj0iJHNhdmVfbGliZGlyIgorICAgICAgICAgICAgICBkbmwgV2UgdXNlIG9ubHkgZGVwZW5kZW5jeV9saWJzLgorICAgICAgICAgICAgICBmb3IgZGVwIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCisgICAgICAgICAgICAgICAgY2FzZSAiJGRlcCIgaW4KKyAgICAgICAgICAgICAgICAgIC1MKikKKyAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9saWJkaXI9YGVjaG8gIlgkZGVwIiB8IHNlZCAtZSAncy9eWC1MLy8nYAorICAgICAgICAgICAgICAgICAgICBkbmwgUG90ZW50aWFsbHkgYWRkICRhZGRpdGlvbmFsX2xpYmRpciB0byAkTElCTkFNRSBhbmQgJExUTElCTkFNRS4KKyAgICAgICAgICAgICAgICAgICAgZG5sIEJ1dCBkb24ndCBhZGQgaXQKKyAgICAgICAgICAgICAgICAgICAgZG5sICAgMS4gaWYgaXQncyB0aGUgc3RhbmRhcmQgL3Vzci9saWIsCisgICAgICAgICAgICAgICAgICAgIGRubCAgIDIuIGlmIGl0J3MgL3Vzci9sb2NhbC9saWIgYW5kIHdlIGFyZSB1c2luZyBHQ0Mgb24gTGludXgsCisgICAgICAgICAgICAgICAgICAgIGRubCAgIDMuIGlmIGl0J3MgYWxyZWFkeSBwcmVzZW50IGluICRMREZMQUdTIG9yIHRoZSBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgIGRubCAgICAgIGNvbnN0cnVjdGVkICRMSUJOQU1FLAorICAgICAgICAgICAgICAgICAgICBkbmwgICA0LiBpZiBpdCBkb2Vzbid0IGV4aXN0IGFzIGEgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiAhPSAiWC91c3IvJGFjbF9saWJkaXJzdGVtIiBcCisgICAgICAgICAgICAgICAgICAgICAgICYmIHRlc3QgIlgkYWRkaXRpb25hbF9saWJkaXIiICE9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0yIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiA9ICJYL3Vzci9sb2NhbC8kYWNsX2xpYmRpcnN0ZW0iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICB8fCB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiA9ICJYL3Vzci9sb2NhbC8kYWNsX2xpYmRpcnN0ZW0yIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJEdDQyI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbnV4KiB8IGdudSogfCBrKmJzZCotZ251KSBoYXZlaXQ9eWVzOzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkTERGTEFHUyAkTElCW11OQU1FOyBkbworICAgICAgICAgICAgICAgICAgICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQorICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtTCRhZGRpdGlvbmFsX2xpYmRpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRhZGRpdGlvbmFsX2xpYmRpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbmwgUmVhbGx5IGFkZCAkYWRkaXRpb25hbF9saWJkaXIgdG8gJExJQk5BTUUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0tTCRhZGRpdGlvbmFsX2xpYmRpciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkTERGTEFHUyAkTFRMSUJbXU5BTUU7IGRvCisgICAgICAgICAgICAgICAgICAgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbZXZhbCB4PVwiJHhcIl0pCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1MJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRubCBSZWFsbHkgYWRkICRhZGRpdGlvbmFsX2xpYmRpciB0byAkTFRMSUJOQU1FLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExUTElCW11OQU1FPSIke0xUTElCW11OQU1FfSR7TFRMSUJbXU5BTUU6KyB9LUwkYWRkaXRpb25hbF9saWJkaXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgICAtUiopCisgICAgICAgICAgICAgICAgICAgIGRpcj1gZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzL15YLVIvLydgCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRlbmFibGVfcnBhdGgiICE9IG5vOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgZG5sIFBvdGVudGlhbGx5IGFkZCBESVIgdG8gcnBhdGhkaXJzLgorICAgICAgICAgICAgICAgICAgICAgIGRubCBUaGUgcnBhdGhkaXJzIHdpbGwgYmUgYXBwZW5kZWQgdG8gJExJQk5BTUUgYXQgdGhlIGVuZC4KKyAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJHJwYXRoZGlyczsgZG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRkaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBycGF0aGRpcnM9IiRycGF0aGRpcnMgJGRpciIKKyAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgIGRubCBQb3RlbnRpYWxseSBhZGQgRElSIHRvIGx0cnBhdGhkaXJzLgorICAgICAgICAgICAgICAgICAgICAgIGRubCBUaGUgbHRycGF0aGRpcnMgd2lsbCBiZSBhcHBlbmRlZCB0byAkTFRMSUJOQU1FIGF0IHRoZSBlbmQuCisgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRsdHJwYXRoZGlyczsgZG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRkaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBsdHJwYXRoZGlycz0iJGx0cnBhdGhkaXJzICRkaXIiCisgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICAgIC1sKikKKyAgICAgICAgICAgICAgICAgICAgZG5sIEhhbmRsZSB0aGlzIGluIHRoZSBuZXh0IHJvdW5kLgorICAgICAgICAgICAgICAgICAgICBuYW1lc19uZXh0X3JvdW5kPSIkbmFtZXNfbmV4dF9yb3VuZCAiYGVjaG8gIlgkZGVwIiB8IHNlZCAtZSAncy9eWC1sLy8nYAorICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgICAgKi5sYSkKKyAgICAgICAgICAgICAgICAgICAgZG5sIEhhbmRsZSB0aGlzIGluIHRoZSBuZXh0IHJvdW5kLiBUaHJvdyBhd2F5IHRoZSAubGEncworICAgICAgICAgICAgICAgICAgICBkbmwgZGlyZWN0b3J5OyBpdCBpcyBhbHJlYWR5IGNvbnRhaW5lZCBpbiBhIHByZWNlZGluZyAtTAorICAgICAgICAgICAgICAgICAgICBkbmwgb3B0aW9uLgorICAgICAgICAgICAgICAgICAgICBuYW1lc19uZXh0X3JvdW5kPSIkbmFtZXNfbmV4dF9yb3VuZCAiYGVjaG8gIlgkZGVwIiB8IHNlZCAtZSAncyxeWC4qLywsJyAtZSAncyxebGliLCwnIC1lICdzLFwubGEkLCwnYAorICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgICAgICAgZG5sIE1vc3QgbGlrZWx5IGFuIGltbWVkaWF0ZSBsaWJyYXJ5IG5hbWUuCisgICAgICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGRlcCIKKyAgICAgICAgICAgICAgICAgICAgTFRMSUJbXU5BTUU9IiR7TFRMSUJbXU5BTUV9JHtMVExJQltdTkFNRTorIH0kZGVwIgorICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgZmkKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBkbmwgRGlkbid0IGZpbmQgdGhlIGxpYnJhcnk7IGFzc3VtZSBpdCBpcyBpbiB0aGUgc3lzdGVtIGRpcmVjdG9yaWVzCisgICAgICAgICAgICBkbmwga25vd24gdG8gdGhlIGxpbmtlciBhbmQgcnVudGltZSBsb2FkZXIuIChBbGwgdGhlIHN5c3RlbQorICAgICAgICAgICAgZG5sIGRpcmVjdG9yaWVzIGtub3duIHRvIHRoZSBsaW5rZXIgc2hvdWxkIGFsc28gYmUga25vd24gdG8gdGhlCisgICAgICAgICAgICBkbmwgcnVudGltZSBsb2FkZXIsIG90aGVyd2lzZSB0aGUgc3lzdGVtIGlzIHNldmVyZWx5IG1pc2NvbmZpZ3VyZWQuKQorICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0tbCRuYW1lIgorICAgICAgICAgICAgTFRMSUJbXU5BTUU9IiR7TFRMSUJbXU5BTUV9JHtMVExJQltdTkFNRTorIH0tbCRuYW1lIgorICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgICBmaQorICAgIGRvbmUKKyAgZG9uZQorICBpZiB0ZXN0ICJYJHJwYXRoZGlycyIgIT0gIlgiOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJGFjbF9oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgorICAgICAgZG5sIFdlaXJkIHBsYXRmb3JtOiBvbmx5IHRoZSBsYXN0IC1ycGF0aCBvcHRpb24gY291bnRzLCB0aGUgdXNlciBtdXN0CisgICAgICBkbmwgcGFzcyBhbGwgcGF0aCBlbGVtZW50cyBpbiBvbmUgb3B0aW9uLiBXZSBjYW4gYXJyYW5nZSB0aGF0IGZvciBhCisgICAgICBkbmwgc2luZ2xlIGxpYnJhcnksIGJ1dCBub3Qgd2hlbiBtb3JlIHRoYW4gb25lICRMSUJOQU1FcyBhcmUgdXNlZC4KKyAgICAgIGFsbGRpcnM9CisgICAgICBmb3IgZm91bmRfZGlyIGluICRycGF0aGRpcnM7IGRvCisgICAgICAgIGFsbGRpcnM9IiR7YWxsZGlyc30ke2FsbGRpcnM6KyRhY2xfaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcn0kZm91bmRfZGlyIgorICAgICAgZG9uZQorICAgICAgZG5sIE5vdGU6IGFjbF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIHVzZXMgJGxpYmRpciBhbmQgJHdsLgorICAgICAgYWNsX3NhdmVfbGliZGlyPSIkbGliZGlyIgorICAgICAgbGliZGlyPSIkYWxsZGlycyIKKyAgICAgIGV2YWwgZmxhZz1cIiRhY2xfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisgICAgICBsaWJkaXI9IiRhY2xfc2F2ZV9saWJkaXIiCisgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmbGFnIgorICAgIGVsc2UKKyAgICAgIGRubCBUaGUgLXJwYXRoIG9wdGlvbnMgYXJlIGN1bXVsYXRpdmUuCisgICAgICBmb3IgZm91bmRfZGlyIGluICRycGF0aGRpcnM7IGRvCisgICAgICAgIGFjbF9zYXZlX2xpYmRpcj0iJGxpYmRpciIKKyAgICAgICAgbGliZGlyPSIkZm91bmRfZGlyIgorICAgICAgICBldmFsIGZsYWc9XCIkYWNsX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorICAgICAgICBsaWJkaXI9IiRhY2xfc2F2ZV9saWJkaXIiCisgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZsYWciCisgICAgICBkb25lCisgICAgZmkKKyAgZmkKKyAgaWYgdGVzdCAiWCRsdHJwYXRoZGlycyIgIT0gIlgiOyB0aGVuCisgICAgZG5sIFdoZW4gdXNpbmcgbGlidG9vbCwgdGhlIG9wdGlvbiB0aGF0IHdvcmtzIGZvciBib3RoIGxpYnJhcmllcyBhbmQKKyAgICBkbmwgZXhlY3V0YWJsZXMgaXMgLVIuIFRoZSAtUiBvcHRpb25zIGFyZSBjdW11bGF0aXZlLgorICAgIGZvciBmb3VuZF9kaXIgaW4gJGx0cnBhdGhkaXJzOyBkbworICAgICAgTFRMSUJbXU5BTUU9IiR7TFRMSUJbXU5BTUV9JHtMVExJQltdTkFNRTorIH0tUiRmb3VuZF9kaXIiCisgICAgZG9uZQorICBmaQorICBwb3BkZWYoW1BBQ0tMSUJTXSkKKyAgcG9wZGVmKFtQQUNLVVBdKQorICBwb3BkZWYoW1BBQ0tdKQorICBwb3BkZWYoW05BTUVdKQorXSkKKworZG5sIEFDX0xJQl9BUFBFTkRUT1ZBUihWQVIsIENPTlRFTlRTKSBhcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBDT05URU5UUyB0byBWQVIsCitkbmwgdW5sZXNzIGFscmVhZHkgcHJlc2VudCBpbiBWQVIuCitkbmwgV29ya3Mgb25seSBmb3IgQ1BQRkxBR1MsIG5vdCBmb3IgTElCKiB2YXJpYWJsZXMgYmVjYXVzZSB0aGF0IHNvbWV0aW1lcworZG5sIGNvbnRhaW5zIHR3byBvciB0aHJlZSBjb25zZWN1dGl2ZSBlbGVtZW50cyB0aGF0IGJlbG9uZyB0b2dldGhlci4KK0FDX0RFRlVOKFtBQ19MSUJfQVBQRU5EVE9WQVJdLAorWworICBmb3IgZWxlbWVudCBpbiBbJDJdOyBkbworICAgIGhhdmVpdD0KKyAgICBmb3IgeCBpbiAkWyQxXTsgZG8KKyAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbZXZhbCB4PVwiJHhcIl0pCisgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZWxlbWVudCI7IHRoZW4KKyAgICAgICAgaGF2ZWl0PXllcworICAgICAgICBicmVhaworICAgICAgZmkKKyAgICBkb25lCisgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgIFskMV09IiR7WyQxXX0ke1skMV06KyB9JGVsZW1lbnQiCisgICAgZmkKKyAgZG9uZQorXSkKKworZG5sIEZvciB0aG9zZSBjYXNlcyB3aGVyZSBhIHZhcmlhYmxlIGNvbnRhaW5zIHNldmVyYWwgLUwgYW5kIC1sIG9wdGlvbnMKK2RubCByZWZlcnJpbmcgdG8gdW5rbm93biBsaWJyYXJpZXMgYW5kIGRpcmVjdG9yaWVzLCB0aGlzIG1hY3JvIGRldGVybWluZXMgdGhlCitkbmwgbmVjZXNzYXJ5IGFkZGl0aW9uYWwgbGlua2VyIG9wdGlvbnMgZm9yIHRoZSBydW50aW1lIHBhdGguCitkbmwgQUNfTElCX0xJTktGTEFHU19GUk9NX0xJQlMoW0xEQUREVkFSXSwgW0xJQlNWQUxVRV0sIFtVU0UtTElCVE9PTF0pCitkbmwgc2V0cyBMREFERFZBUiB0byBsaW5rZXIgb3B0aW9ucyBuZWVkZWQgdG9nZXRoZXIgd2l0aCBMSUJTVkFMVUUuCitkbmwgSWYgVVNFLUxJQlRPT0wgZXZhbHVhdGVzIHRvIG5vbi1lbXB0eSwgbGlua2luZyB3aXRoIGxpYnRvb2wgaXMgYXNzdW1lZCwKK2RubCBvdGhlcndpc2UgbGlua2luZyB3aXRob3V0IGxpYnRvb2wgaXMgYXNzdW1lZC4KK0FDX0RFRlVOKFtBQ19MSUJfTElOS0ZMQUdTX0ZST01fTElCU10sCitbCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9SUEFUSF0pCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX01VTFRJTElCXSkKKyAgJDE9CisgIGlmIHRlc3QgIiRlbmFibGVfcnBhdGgiICE9IG5vOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJGFjbF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIiAmJiB0ZXN0ICIkYWNsX2hhcmRjb2RlX21pbnVzX0wiID0gbm87IHRoZW4KKyAgICAgIGRubCBVc2UgYW4gZXhwbGljaXQgb3B0aW9uIHRvIGhhcmRjb2RlIGRpcmVjdG9yaWVzIGludG8gdGhlIHJlc3VsdGluZworICAgICAgZG5sIGJpbmFyeS4KKyAgICAgIHJwYXRoZGlycz0KKyAgICAgIG5leHQ9CisgICAgICBmb3Igb3B0IGluICQyOyBkbworICAgICAgICBpZiB0ZXN0IC1uICIkbmV4dCI7IHRoZW4KKyAgICAgICAgICBkaXI9IiRuZXh0IgorICAgICAgICAgIGRubCBObyBuZWVkIHRvIGhhcmRjb2RlIHRoZSBzdGFuZGFyZCAvdXNyL2xpYi4KKyAgICAgICAgICBpZiB0ZXN0ICJYJGRpciIgIT0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbSIgXAorICAgICAgICAgICAgICYmIHRlc3QgIlgkZGlyIiAhPSAiWC91c3IvJGFjbF9saWJkaXJzdGVtMiI7IHRoZW4KKyAgICAgICAgICAgIHJwYXRoZGlycz0iJHJwYXRoZGlycyAkZGlyIgorICAgICAgICAgIGZpCisgICAgICAgICAgbmV4dD0KKyAgICAgICAgZWxzZQorICAgICAgICAgIGNhc2UgJG9wdCBpbgorICAgICAgICAgICAgLUwpIG5leHQ9eWVzIDs7CisgICAgICAgICAgICAtTCopIGRpcj1gZWNobyAiWCRvcHQiIHwgc2VkIC1lICdzLF5YLUwsLCdgCisgICAgICAgICAgICAgICAgIGRubCBObyBuZWVkIHRvIGhhcmRjb2RlIHRoZSBzdGFuZGFyZCAvdXNyL2xpYi4KKyAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRkaXIiICE9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0iIFwKKyAgICAgICAgICAgICAgICAgICAgJiYgdGVzdCAiWCRkaXIiICE9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0yIjsgdGhlbgorICAgICAgICAgICAgICAgICAgIHJwYXRoZGlycz0iJHJwYXRoZGlycyAkZGlyIgorICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICBuZXh0PSA7OworICAgICAgICAgICAgKikgbmV4dD0gOzsKKyAgICAgICAgICBlc2FjCisgICAgICAgIGZpCisgICAgICBkb25lCisgICAgICBpZiB0ZXN0ICJYJHJwYXRoZGlycyIgIT0gIlgiOyB0aGVuCisgICAgICAgIGlmIHRlc3QgLW4gIiIkMyIiOyB0aGVuCisgICAgICAgICAgZG5sIGxpYnRvb2wgaXMgdXNlZCBmb3IgbGlua2luZy4gVXNlIC1SIG9wdGlvbnMuCisgICAgICAgICAgZm9yIGRpciBpbiAkcnBhdGhkaXJzOyBkbworICAgICAgICAgICAgJDE9IiR7JDF9JHskMTorIH0tUiRkaXIiCisgICAgICAgICAgZG9uZQorICAgICAgICBlbHNlCisgICAgICAgICAgZG5sIFRoZSBsaW5rZXIgaXMgdXNlZCBmb3IgbGlua2luZyBkaXJlY3RseS4KKyAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNsX2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCisgICAgICAgICAgICBkbmwgV2VpcmQgcGxhdGZvcm06IG9ubHkgdGhlIGxhc3QgLXJwYXRoIG9wdGlvbiBjb3VudHMsIHRoZSB1c2VyCisgICAgICAgICAgICBkbmwgbXVzdCBwYXNzIGFsbCBwYXRoIGVsZW1lbnRzIGluIG9uZSBvcHRpb24uCisgICAgICAgICAgICBhbGxkaXJzPQorICAgICAgICAgICAgZm9yIGRpciBpbiAkcnBhdGhkaXJzOyBkbworICAgICAgICAgICAgICBhbGxkaXJzPSIke2FsbGRpcnN9JHthbGxkaXJzOiskYWNsX2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3J9JGRpciIKKyAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgIGFjbF9zYXZlX2xpYmRpcj0iJGxpYmRpciIKKyAgICAgICAgICAgIGxpYmRpcj0iJGFsbGRpcnMiCisgICAgICAgICAgICBldmFsIGZsYWc9XCIkYWNsX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorICAgICAgICAgICAgbGliZGlyPSIkYWNsX3NhdmVfbGliZGlyIgorICAgICAgICAgICAgJDE9IiRmbGFnIgorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRubCBUaGUgLXJwYXRoIG9wdGlvbnMgYXJlIGN1bXVsYXRpdmUuCisgICAgICAgICAgICBmb3IgZGlyIGluICRycGF0aGRpcnM7IGRvCisgICAgICAgICAgICAgIGFjbF9zYXZlX2xpYmRpcj0iJGxpYmRpciIKKyAgICAgICAgICAgICAgbGliZGlyPSIkZGlyIgorICAgICAgICAgICAgICBldmFsIGZsYWc9XCIkYWNsX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorICAgICAgICAgICAgICBsaWJkaXI9IiRhY2xfc2F2ZV9saWJkaXIiCisgICAgICAgICAgICAgICQxPSIkeyQxfSR7JDE6KyB9JGZsYWciCisgICAgICAgICAgICBkb25lCisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgZmkKKyAgZmkKKyAgQUNfU1VCU1QoWyQxXSkKK10pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2xpYi1wcmVmaXgubTQgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2xpYi1wcmVmaXgubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFkYjE3YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvbGliLXByZWZpeC5tNApAQCAtMCwwICsxLDI0OSBAQAorIyBsaWItcHJlZml4Lm00IHNlcmlhbCAxNAorZG5sIENvcHlyaWdodCAoQykgMjAwMS0yMDA1LCAyMDA4LTIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgorCitkbmwgQUNfTElCX1BSRUZJWCBhZGRzIHRvIHRoZSBDUFBGTEFHUyBhbmQgTERGTEFHUyB0aGUgZmxhZ3MgdGhhdCBhcmUgbmVlZGVkCitkbmwgdG8gYWNjZXNzIHByZXZpb3VzbHkgaW5zdGFsbGVkIGxpYnJhcmllcy4gVGhlIGJhc2ljIGFzc3VtcHRpb24gaXMgdGhhdAorZG5sIGEgdXNlciB3aWxsIHdhbnQgcGFja2FnZXMgdG8gdXNlIG90aGVyIHBhY2thZ2VzIGhlIHByZXZpb3VzbHkgaW5zdGFsbGVkCitkbmwgd2l0aCB0aGUgc2FtZSAtLXByZWZpeCBvcHRpb24uCitkbmwgVGhpcyBtYWNybyBpcyBub3QgbmVlZGVkIGlmIG9ubHkgQUNfTElCX0xJTktGTEFHUyBpcyB1c2VkIHRvIGxvY2F0ZQorZG5sIGxpYnJhcmllcywgYnV0IGlzIG90aGVyd2lzZSB2ZXJ5IGNvbnZlbmllbnQuCitBQ19ERUZVTihbQUNfTElCX1BSRUZJWF0sCitbCisgIEFDX0JFRk9SRShbJDBdLCBbQUNfTElCX0xJTktGTEFHU10pCisgIEFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKQorICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX01VTFRJTElCXSkKKyAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfUFJFRklYXSkKKyAgZG5sIEJ5IGRlZmF1bHQsIGxvb2sgaW4gJGluY2x1ZGVkaXIgYW5kICRsaWJkaXIuCisgIHVzZV9hZGRpdGlvbmFsPXllcworICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoWworICAgIGV2YWwgYWRkaXRpb25hbF9pbmNsdWRlZGlyPVwiJGluY2x1ZGVkaXJcIgorICAgIGV2YWwgYWRkaXRpb25hbF9saWJkaXI9XCIkbGliZGlyXCIKKyAgXSkKKyAgQUNfQVJHX1dJVEgoW2xpYi1wcmVmaXhdLAorW1sgIC0td2l0aC1saWItcHJlZml4Wz1ESVJdIHNlYXJjaCBmb3IgbGlicmFyaWVzIGluIERJUi9pbmNsdWRlIGFuZCBESVIvbGliCisgIC0td2l0aG91dC1saWItcHJlZml4ICAgIGRvbid0IHNlYXJjaCBmb3IgbGlicmFyaWVzIGluIGluY2x1ZGVkaXIgYW5kIGxpYmRpcl1dLAorWworICAgIGlmIHRlc3QgIlgkd2l0aHZhbCIgPSAiWG5vIjsgdGhlbgorICAgICAgdXNlX2FkZGl0aW9uYWw9bm8KKyAgICBlbHNlCisgICAgICBpZiB0ZXN0ICJYJHdpdGh2YWwiID0gIlgiOyB0aGVuCisgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbCisgICAgICAgICAgZXZhbCBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9XCIkaW5jbHVkZWRpclwiCisgICAgICAgICAgZXZhbCBhZGRpdGlvbmFsX2xpYmRpcj1cIiRsaWJkaXJcIgorICAgICAgICBdKQorICAgICAgZWxzZQorICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9IiR3aXRodmFsL2luY2x1ZGUiCisgICAgICAgIGFkZGl0aW9uYWxfbGliZGlyPSIkd2l0aHZhbC8kYWNsX2xpYmRpcnN0ZW0iCisgICAgICBmaQorICAgIGZpCitdKQorICBpZiB0ZXN0ICR1c2VfYWRkaXRpb25hbCA9IHllczsgdGhlbgorICAgIGRubCBQb3RlbnRpYWxseSBhZGQgJGFkZGl0aW9uYWxfaW5jbHVkZWRpciB0byAkQ1BQRkxBR1MuCisgICAgZG5sIEJ1dCBkb24ndCBhZGQgaXQKKyAgICBkbmwgICAxLiBpZiBpdCdzIHRoZSBzdGFuZGFyZCAvdXNyL2luY2x1ZGUsCisgICAgZG5sICAgMi4gaWYgaXQncyBhbHJlYWR5IHByZXNlbnQgaW4gJENQUEZMQUdTLAorICAgIGRubCAgIDMuIGlmIGl0J3MgL3Vzci9sb2NhbC9pbmNsdWRlIGFuZCB3ZSBhcmUgdXNpbmcgR0NDIG9uIExpbnV4LAorICAgIGRubCAgIDQuIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYXMgYSBkaXJlY3RvcnkuCisgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiICE9ICJYL3Vzci9pbmNsdWRlIjsgdGhlbgorICAgICAgaGF2ZWl0PQorICAgICAgZm9yIHggaW4gJENQUEZMQUdTOyBkbworICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQorICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtSSRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiOyB0aGVuCisgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgIGJyZWFrCisgICAgICAgIGZpCisgICAgICBkb25lCisgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgPSAiWC91c3IvbG9jYWwvaW5jbHVkZSI7IHRoZW4KKyAgICAgICAgICBpZiB0ZXN0IC1uICIkR0NDIjsgdGhlbgorICAgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgICAgICAgICBsaW51eCogfCBnbnUqIHwgaypic2QqLWdudSkgaGF2ZWl0PXllczs7CisgICAgICAgICAgICBlc2FjCisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9pbmNsdWRlZGlyIjsgdGhlbgorICAgICAgICAgICAgZG5sIFJlYWxseSBhZGQgJGFkZGl0aW9uYWxfaW5jbHVkZWRpciB0byAkQ1BQRkxBR1MuCisgICAgICAgICAgICBDUFBGTEFHUz0iJHtDUFBGTEFHU30ke0NQUEZMQUdTOisgfS1JJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIKKyAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgZmkKKyAgICBmaQorICAgIGRubCBQb3RlbnRpYWxseSBhZGQgJGFkZGl0aW9uYWxfbGliZGlyIHRvICRMREZMQUdTLgorICAgIGRubCBCdXQgZG9uJ3QgYWRkIGl0CisgICAgZG5sICAgMS4gaWYgaXQncyB0aGUgc3RhbmRhcmQgL3Vzci9saWIsCisgICAgZG5sICAgMi4gaWYgaXQncyBhbHJlYWR5IHByZXNlbnQgaW4gJExERkxBR1MsCisgICAgZG5sICAgMy4gaWYgaXQncyAvdXNyL2xvY2FsL2xpYiBhbmQgd2UgYXJlIHVzaW5nIEdDQyBvbiBMaW51eCwKKyAgICBkbmwgICA0LiBpZiBpdCBkb2Vzbid0IGV4aXN0IGFzIGEgZGlyZWN0b3J5LgorICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9saWJkaXIiICE9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0iOyB0aGVuCisgICAgICBoYXZlaXQ9CisgICAgICBmb3IgeCBpbiAkTERGTEFHUzsgZG8KKyAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKKyAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUwkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCisgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgIGJyZWFrCisgICAgICAgIGZpCisgICAgICBkb25lCisgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiA9ICJYL3Vzci9sb2NhbC8kYWNsX2xpYmRpcnN0ZW0iOyB0aGVuCisgICAgICAgICAgaWYgdGVzdCAtbiAiJEdDQyI7IHRoZW4KKyAgICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgICAgICAgICAgbGludXgqKSBoYXZlaXQ9eWVzOzsKKyAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgIGlmIHRlc3QgLWQgIiRhZGRpdGlvbmFsX2xpYmRpciI7IHRoZW4KKyAgICAgICAgICAgIGRubCBSZWFsbHkgYWRkICRhZGRpdGlvbmFsX2xpYmRpciB0byAkTERGTEFHUy4KKyAgICAgICAgICAgIExERkxBR1M9IiR7TERGTEFHU30ke0xERkxBR1M6KyB9LUwkYWRkaXRpb25hbF9saWJkaXIiCisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgZmkKKyAgZmkKK10pCisKK2RubCBBQ19MSUJfUFJFUEFSRV9QUkVGSVggY3JlYXRlcyB2YXJpYWJsZXMgYWNsX2ZpbmFsX3ByZWZpeCwKK2RubCBhY2xfZmluYWxfZXhlY19wcmVmaXgsIGNvbnRhaW5pbmcgdGhlIHZhbHVlcyB0byB3aGljaCAkcHJlZml4IGFuZAorZG5sICRleGVjX3ByZWZpeCB3aWxsIGV4cGFuZCBhdCB0aGUgZW5kIG9mIHRoZSBjb25maWd1cmUgc2NyaXB0LgorQUNfREVGVU4oW0FDX0xJQl9QUkVQQVJFX1BSRUZJWF0sCitbCisgIGRubCBVbmZvcnR1bmF0ZWx5LCBwcmVmaXggYW5kIGV4ZWNfcHJlZml4IGdldCBvbmx5IGZpbmFsbHkgZGV0ZXJtaW5lZAorICBkbmwgYXQgdGhlIGVuZCBvZiBjb25maWd1cmUuCisgIGlmIHRlc3QgIlgkcHJlZml4IiA9ICJYTk9ORSI7IHRoZW4KKyAgICBhY2xfZmluYWxfcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCisgIGVsc2UKKyAgICBhY2xfZmluYWxfcHJlZml4PSIkcHJlZml4IgorICBmaQorICBpZiB0ZXN0ICJYJGV4ZWNfcHJlZml4IiA9ICJYTk9ORSI7IHRoZW4KKyAgICBhY2xfZmluYWxfZXhlY19wcmVmaXg9JyR7cHJlZml4fScKKyAgZWxzZQorICAgIGFjbF9maW5hbF9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4IgorICBmaQorICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVmaXgiCisgIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCisgIGV2YWwgYWNsX2ZpbmFsX2V4ZWNfcHJlZml4PVwiJGFjbF9maW5hbF9leGVjX3ByZWZpeFwiCisgIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKK10pCisKK2RubCBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW3N0YXRlbWVudF0pIGV2YWx1YXRlcyBzdGF0ZW1lbnQsIHdpdGggdGhlCitkbmwgdmFyaWFibGVzIHByZWZpeCBhbmQgZXhlY19wcmVmaXggYm91bmQgdG8gdGhlIHZhbHVlcyB0aGV5IHdpbGwgaGF2ZQorZG5sIGF0IHRoZSBlbmQgb2YgdGhlIGNvbmZpZ3VyZSBzY3JpcHQuCitBQ19ERUZVTihbQUNfTElCX1dJVEhfRklOQUxfUFJFRklYXSwKK1sKKyAgYWNsX3NhdmVfcHJlZml4PSIkcHJlZml4IgorICBwcmVmaXg9IiRhY2xfZmluYWxfcHJlZml4IgorICBhY2xfc2F2ZV9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4IgorICBleGVjX3ByZWZpeD0iJGFjbF9maW5hbF9leGVjX3ByZWZpeCIKKyAgJDEKKyAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKKyAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgorXSkKKworZG5sIEFDX0xJQl9QUkVQQVJFX01VTFRJTElCIGNyZWF0ZXMKK2RubCAtIGEgdmFyaWFibGUgYWNsX2xpYmRpcnN0ZW0sIGNvbnRhaW5pbmcgdGhlIGJhc2VuYW1lIG9mIHRoZSBsaWJkaXIsIGVpdGhlcgorZG5sICAgImxpYiIgb3IgImxpYjY0IiBvciAibGliLzY0IiwKK2RubCAtIGEgdmFyaWFibGUgYWNsX2xpYmRpcnN0ZW0yLCBhcyBhIHNlY29uZGFyeSBwb3NzaWJsZSB2YWx1ZSBmb3IKK2RubCAgIGFjbF9saWJkaXJzdGVtLCBlaXRoZXIgdGhlIHNhbWUgYXMgYWNsX2xpYmRpcnN0ZW0gb3IgImxpYi9zcGFyY3Y5IiBvcgorZG5sICAgImxpYi9hbWQ2NCIuCitBQ19ERUZVTihbQUNfTElCX1BSRVBBUkVfTVVMVElMSUJdLAorWworICBkbmwgVGhlcmUgaXMgbm8gZm9ybWFsIHN0YW5kYXJkIHJlZ2FyZGluZyBsaWIgYW5kIGxpYjY0LgorICBkbmwgT24gZ2xpYmMgc3lzdGVtcywgdGhlIGN1cnJlbnQgcHJhY3RpY2UgaXMgdGhhdCBvbiBhIHN5c3RlbSBzdXBwb3J0aW5nCisgIGRubCAzMi1iaXQgYW5kIDY0LWJpdCBpbnN0cnVjdGlvbiBzZXRzIG9yIEFCSXMsIDY0LWJpdCBsaWJyYXJpZXMgZ28gdW5kZXIKKyAgZG5sICRwcmVmaXgvbGliNjQgYW5kIDMyLWJpdCBsaWJyYXJpZXMgZ28gdW5kZXIgJHByZWZpeC9saWIuIFdlIGRldGVybWluZQorICBkbmwgdGhlIGNvbXBpbGVyJ3MgZGVmYXVsdCBtb2RlIGJ5IGxvb2tpbmcgYXQgdGhlIGNvbXBpbGVyJ3MgbGlicmFyeSBzZWFyY2gKKyAgZG5sIHBhdGguIElmIGF0IGxlYXN0IG9uZSBvZiBpdHMgZWxlbWVudHMgZW5kcyBpbiAvbGliNjQgb3IgcG9pbnRzIHRvIGEKKyAgZG5sIGRpcmVjdG9yeSB3aG9zZSBhYnNvbHV0ZSBwYXRobmFtZSBlbmRzIGluIC9saWI2NCwgd2UgYXNzdW1lIGEgNjQtYml0IEFCSS4KKyAgZG5sIE90aGVyd2lzZSB3ZSB1c2UgdGhlIGRlZmF1bHQsIG5hbWVseSAibGliIi4KKyAgZG5sIE9uIFNvbGFyaXMgc3lzdGVtcywgdGhlIGN1cnJlbnQgcHJhY3RpY2UgaXMgdGhhdCBvbiBhIHN5c3RlbSBzdXBwb3J0aW5nCisgIGRubCAzMi1iaXQgYW5kIDY0LWJpdCBpbnN0cnVjdGlvbiBzZXRzIG9yIEFCSXMsIDY0LWJpdCBsaWJyYXJpZXMgZ28gdW5kZXIKKyAgZG5sICRwcmVmaXgvbGliLzY0ICh3aGljaCBpcyBhIHN5bWxpbmsgdG8gZWl0aGVyICRwcmVmaXgvbGliL3NwYXJjdjkgb3IKKyAgZG5sICRwcmVmaXgvbGliL2FtZDY0KSBhbmQgMzItYml0IGxpYnJhcmllcyBnbyB1bmRlciAkcHJlZml4L2xpYi4KKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQorICBBQ19SRVFVSVJFKFtnbF9IT1NUX0NQVV9DX0FCSV8zMkJJVF0pCisKKyAgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgc29sYXJpcyopCisgICAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIDY0LWJpdCBob3N0XSwgW2dsX2N2X3NvbGFyaXNfNjRiaXRdLAorICAgICAgICBbQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWZkZWYgX0xQNjQKKyAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgW2dsX2N2X3NvbGFyaXNfNjRiaXQ9eWVzXSwKKyAgICAgICAgICAgW2dsX2N2X3NvbGFyaXNfNjRiaXQ9bm9dKQorICAgICAgICBdKTs7CisgIGVzYWMKKworICBkbmwgQWxsb3cgdGhlIHVzZXIgdG8gb3ZlcnJpZGUgdGhlIHJlc3VsdCBieSBzZXR0aW5nIGFjbF9jdl9saWJkaXJzdGVtcy4KKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciB0aGUgY29tbW9uIHN1ZmZpeGVzIG9mIGRpcmVjdG9yaWVzIGluIHRoZSBsaWJyYXJ5IHNlYXJjaCBwYXRoXSwKKyAgICBbYWNsX2N2X2xpYmRpcnN0ZW1zXSwKKyAgICBbYWNsX2xpYmRpcnN0ZW09bGliCisgICAgIGFjbF9saWJkaXJzdGVtMj0KKyAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgICAgc29sYXJpcyopCisgICAgICAgICBkbmwgU2VlIFNvbGFyaXMgMTAgU29mdHdhcmUgRGV2ZWxvcGVyIENvbGxlY3Rpb24gPiBTb2xhcmlzIDY0LWJpdCBEZXZlbG9wZXIncyBHdWlkZSA+IFRoZSBEZXZlbG9wbWVudCBFbnZpcm9ubWVudAorICAgICAgICAgZG5sIDxodHRwczovL2RvY3Mub3JhY2xlLmNvbS9jZC9FMTkyNTMtMDEvODE2LTUxMzgvZGV2LWVudi9pbmRleC5odG1sPi4KKyAgICAgICAgIGRubCAiUG9ydGFibGUgTWFrZWZpbGVzIHNob3VsZCByZWZlciB0byBhbnkgbGlicmFyeSBkaXJlY3RvcmllcyB1c2luZyB0aGUgNjQgc3ltYm9saWMgbGluay4iCisgICAgICAgICBkbmwgQnV0IHdlIHdhbnQgdG8gcmVjb2duaXplIHRoZSBzcGFyY3Y5IG9yIGFtZDY0IHN1YmRpcmVjdG9yeSBhbHNvIGlmIHRoZQorICAgICAgICAgZG5sIHN5bWxpbmsgaXMgbWlzc2luZywgc28gd2Ugc2V0IGFjbF9saWJkaXJzdGVtMiB0b28uCisgICAgICAgICBpZiB0ZXN0ICRnbF9jdl9zb2xhcmlzXzY0Yml0ID0geWVzOyB0aGVuCisgICAgICAgICAgIGFjbF9saWJkaXJzdGVtPWxpYi82NAorICAgICAgICAgICBjYXNlICIkaG9zdF9jcHUiIGluCisgICAgICAgICAgICAgc3BhcmMqKSAgICAgICAgYWNsX2xpYmRpcnN0ZW0yPWxpYi9zcGFyY3Y5IDs7CisgICAgICAgICAgICAgaSo4NiB8IHg4Nl82NCkgYWNsX2xpYmRpcnN0ZW0yPWxpYi9hbWQ2NCA7OworICAgICAgICAgICBlc2FjCisgICAgICAgICBmaQorICAgICAgICAgOzsKKyAgICAgICAqKQorICAgICAgICAgZG5sIElmICRDQyBnZW5lcmF0ZXMgY29kZSBmb3IgYSAzMi1iaXQgQUJJLCB0aGUgbGlicmFyaWVzIGFyZQorICAgICAgICAgZG5sIHN1cmVseSB1bmRlciAkcHJlZml4L2xpYiwgbm90ICRwcmVmaXgvbGliNjQuCisgICAgICAgICBpZiB0ZXN0ICIkSE9TVF9DUFVfQ19BQklfMzJCSVQiICE9IHllczsgdGhlbgorICAgICAgICAgICBkbmwgVGhlIHJlc3VsdCBpcyBhIHByb3BlcnR5IG9mIHRoZSBzeXN0ZW0uIEhvd2V2ZXIsIG5vbi1zeXN0ZW0KKyAgICAgICAgICAgZG5sIGNvbXBpbGVycyBzb21ldGltZXMgaGF2ZSBvZGQgbGlicmFyeSBzZWFyY2ggcGF0aHMuIFRoZXJlZm9yZQorICAgICAgICAgICBkbmwgcHJlZmVyIGFza2luZyAvdXNyL2Jpbi9nY2MsIGlmIGF2YWlsYWJsZSwgcmF0aGVyIHRoYW4gJENDLgorICAgICAgICAgICBzZWFyY2hwYXRoPWAoaWYgdGVzdCAtZiAvdXNyL2Jpbi9nY2MgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgTENfQUxMPUMgL3Vzci9iaW4vZ2NjIC1wcmludC1zZWFyY2gtZGlycyA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTENfQUxMPUMgL3Vzci9iaW4vZ2NjIC1wcmludC1zZWFyY2gtZGlyczsgXAorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIExDX0FMTD1DICRDQyAtcHJpbnQtc2VhcmNoLWRpcnM7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpKSAyPi9kZXYvbnVsbCBcCisgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIC1uIC1lICdzLF5saWJyYXJpZXM6ICwscCcgfCBzZWQgLWUgJ3MsXj0sLCdgCisgICAgICAgICAgIGlmIHRlc3QgLW4gIiRzZWFyY2hwYXRoIjsgdGhlbgorICAgICAgICAgICAgIGFjbF9zYXZlX0lGUz0iJHtJRlM9IAl9IjsgSUZTPSI6IgorICAgICAgICAgICAgIGZvciBzZWFyY2hkaXIgaW4gJHNlYXJjaHBhdGg7IGRvCisgICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkc2VhcmNoZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICBjYXNlICIkc2VhcmNoZGlyIiBpbgorICAgICAgICAgICAgICAgICAgICovbGliNjQvIHwgKi9saWI2NCApIGFjbF9saWJkaXJzdGVtPWxpYjY0IDs7CisgICAgICAgICAgICAgICAgICAgKi8uLi8gfCAqLy4uICkKKyAgICAgICAgICAgICAgICAgICAgICMgQmV0dGVyIGlnbm9yZSBkaXJlY3RvcmllcyBvZiB0aGlzIGZvcm0uIFRoZXkgYXJlIG1pc2xlYWRpbmcuCisgICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgICAgICopIHNlYXJjaGRpcj1gY2QgIiRzZWFyY2hkaXIiICYmIHB3ZGAKKyAgICAgICAgICAgICAgICAgICAgICBjYXNlICIkc2VhcmNoZGlyIiBpbgorICAgICAgICAgICAgICAgICAgICAgICAgKi9saWI2NCApIGFjbF9saWJkaXJzdGVtPWxpYjY0IDs7CisgICAgICAgICAgICAgICAgICAgICAgZXNhYyA7OworICAgICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICBJRlM9IiRhY2xfc2F2ZV9JRlMiCisgICAgICAgICAgIGZpCisgICAgICAgICBmaQorICAgICAgICAgOzsKKyAgICAgZXNhYworICAgICB0ZXN0IC1uICIkYWNsX2xpYmRpcnN0ZW0yIiB8fCBhY2xfbGliZGlyc3RlbTI9IiRhY2xfbGliZGlyc3RlbSIKKyAgICAgYWNsX2N2X2xpYmRpcnN0ZW1zPSIkYWNsX2xpYmRpcnN0ZW0sJGFjbF9saWJkaXJzdGVtMiIKKyAgICBdKQorICAjIERlY29tcG9zZSBhY2xfY3ZfbGliZGlyc3RlbXMgaW50byBhY2xfbGliZGlyc3RlbSBhbmQgYWNsX2xpYmRpcnN0ZW0yLgorICBhY2xfbGliZGlyc3RlbT1gZWNobyAiJGFjbF9jdl9saWJkaXJzdGVtcyIgfCBzZWQgLWUgJ3MvLC4qLy8nYAorICBhY2xfbGliZGlyc3RlbTI9YGVjaG8gIiRhY2xfY3ZfbGliZGlyc3RlbXMiIHwgc2VkIC1lICcvLC9zLy4qLC8vJ2AKK10pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL25scy5tNCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvbmxzLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2MmY2MTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL25scy5tNApAQCAtMCwwICsxLDMyIEBACisjIG5scy5tNCBzZXJpYWwgNSAoZ2V0dGV4dC0wLjE4KQorZG5sIENvcHlyaWdodCAoQykgMTk5NS0yMDAzLCAyMDA1LTIwMDYsIDIwMDgtMjAxNCwgMjAxNiwgMjAxOSBGcmVlIFNvZnR3YXJlCitkbmwgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCitkbmwKK2RubCBUaGlzIGZpbGUgY2FuIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIKK2RubCB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugb3IgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCitkbmwgTGljZW5zZSBidXQgd2hpY2ggc3RpbGwgd2FudCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHTlUgZ2V0dGV4dAorZG5sIGZ1bmN0aW9uYWxpdHkuCitkbmwgUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIGNvZGUgb2YgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgaXMgY292ZXJlZAorZG5sIGJ5IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhbmQgdGhlIHJlc3Qgb2YgdGhlIEdOVQorZG5sIGdldHRleHQgcGFja2FnZSBpcyBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KK2RubCBUaGV5IGFyZSAqbm90KiBpbiB0aGUgcHVibGljIGRvbWFpbi4KKworZG5sIEF1dGhvcnM6CitkbmwgICBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5NS0yMDAwLgorZG5sICAgQnJ1bm8gSGFpYmxlIDxoYWlibGVAY2xpc3AuY29ucy5vcmc+LCAyMDAwLTIwMDMuCisKK0FDX1BSRVJFUShbMi41MF0pCisKK0FDX0RFRlVOKFtBTV9OTFNdLAorWworICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgTkxTIGlzIHJlcXVlc3RlZF0pCisgIGRubCBEZWZhdWx0IGlzIGVuYWJsZWQgTkxTCisgIEFDX0FSR19FTkFCTEUoW25sc10sCisgICAgWyAgLS1kaXNhYmxlLW5scyAgICAgICAgICAgZG8gbm90IHVzZSBOYXRpdmUgTGFuZ3VhZ2UgU3VwcG9ydF0sCisgICAgVVNFX05MUz0kZW5hYmxldmFsLCBVU0VfTkxTPXllcykKKyAgQUNfTVNHX1JFU1VMVChbJFVTRV9OTFNdKQorICBBQ19TVUJTVChbVVNFX05MU10pCitdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9wby5tNCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvcG8ubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQzNzkyZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvcG8ubTQKQEAgLTAsMCArMSw0NTAgQEAKKyMgcG8ubTQgc2VyaWFsIDMwIChnZXR0ZXh0LTAuMjApCitkbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMTQsIDIwMTYsIDIwMTgtMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorZG5sCitkbmwgVGhpcyBmaWxlIGNhbiBiZSB1c2VkIGluIHByb2plY3RzIHdoaWNoIGFyZSBub3QgYXZhaWxhYmxlIHVuZGVyCitkbmwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworZG5sIExpY2Vuc2UgYnV0IHdoaWNoIHN0aWxsIHdhbnQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgR05VIGdldHRleHQKK2RubCBmdW5jdGlvbmFsaXR5LgorZG5sIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKK2RubCBieSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYW5kIHRoZSByZXN0IG9mIHRoZSBHTlUKK2RubCBnZXR0ZXh0IHBhY2thZ2UgaXMgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCitkbmwgVGhleSBhcmUgKm5vdCogaW4gdGhlIHB1YmxpYyBkb21haW4uCisKK2RubCBBdXRob3JzOgorZG5sICAgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDE5OTUtMjAwMC4KK2RubCAgIEJydW5vIEhhaWJsZSA8aGFpYmxlQGNsaXNwLmNvbnMub3JnPiwgMjAwMC0yMDAzLgorCitBQ19QUkVSRVEoWzIuNjBdKQorCitkbmwgQ2hlY2tzIGZvciBhbGwgcHJlcmVxdWlzaXRlcyBvZiB0aGUgcG8gc3ViZGlyZWN0b3J5LgorQUNfREVGVU4oW0FNX1BPX1NVQkRJUlNdLAorWworICBBQ19SRVFVSVJFKFtBQ19QUk9HX01BS0VfU0VUXSlkbmwKKyAgQUNfUkVRVUlSRShbQUNfUFJPR19JTlNUQUxMXSlkbmwKKyAgQUNfUkVRVUlSRShbQUNfUFJPR19NS0RJUl9QXSlkbmwKKyAgQUNfUkVRVUlSRShbQUNfUFJPR19TRURdKWRubAorICBBQ19SRVFVSVJFKFtBTV9OTFNdKWRubAorCisgIGRubCBSZWxlYXNlIHZlcnNpb24gb2YgdGhlIGdldHRleHQgbWFjcm9zLiBUaGlzIGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQKKyAgZG5sIHRoZSBnZXR0ZXh0IG1hY3JvcyBhbmQgcG8vTWFrZWZpbGUuaW4uaW4gYXJlIGluIHN5bmMuCisgIEFDX1NVQlNUKFtHRVRURVhUX01BQ1JPX1ZFUlNJT05dLCBbMC4yMF0pCisKKyAgZG5sIFBlcmZvcm0gdGhlIGZvbGxvd2luZyB0ZXN0cyBhbHNvIGlmIC0tZGlzYWJsZS1ubHMgaGFzIGJlZW4gZ2l2ZW4sCisgIGRubCBiZWNhdXNlIHRoZXkgYXJlIG5lZWRlZCBmb3IgIm1ha2UgZGlzdCIgdG8gd29yay4KKworICBkbmwgU2VhcmNoIGZvciBHTlUgbXNnZm10IGluIHRoZSBQQVRILgorICBkbmwgVGhlIGZpcnN0IHRlc3QgZXhjbHVkZXMgU29sYXJpcyBtc2dmbXQgYW5kIGVhcmx5IEdOVSBtc2dmbXQgdmVyc2lvbnMuCisgIGRubCBUaGUgc2Vjb25kIHRlc3QgZXhjbHVkZXMgRnJlZUJTRCBtc2dmbXQuCisgIEFNX1BBVEhfUFJPR19XSVRIX1RFU1QoTVNHRk1ULCBtc2dmbXQsCisgICAgWyRhY19kaXIvJGFjX3dvcmQgLS1zdGF0aXN0aWNzIC9kZXYvbnVsbCA+Jl1BU19NRVNTQUdFX0xPR19GRFsgMj4mMSAmJgorICAgICAoaWYgJGFjX2Rpci8kYWNfd29yZCAtLXN0YXRpc3RpY3MgL2Rldi9udWxsIDI+JjEgPi9kZXYvbnVsbCB8IGdyZXAgdXNhZ2UgPi9kZXYvbnVsbDsgdGhlbiBleGl0IDE7IGVsc2UgZXhpdCAwOyBmaSldLAorICAgIDopCisgIEFDX1BBVEhfUFJPRyhbR01TR0ZNVF0sIFtnbXNnZm10XSwgWyRNU0dGTVRdKQorCisgIGRubCBUZXN0IHdoZXRoZXIgaXQgaXMgR05VIG1zZ2ZtdCA+PSAwLjE1LgorY2hhbmdlcXVvdGUoLClkbmwKKyAgY2FzZSBgJEdNU0dGTVQgLS12ZXJzaW9uIHwgc2VkIDFxIHwgc2VkIC1lICdzLF5bXjAtOV0qLCwnYCBpbgorICAgICcnIHwgMC5bMC05XSB8IDAuWzAtOV0uKiB8IDAuMVswLTRdIHwgMC4xWzAtNF0uKikgR01TR0ZNVF8wMTU9OiA7OworICAgICopIEdNU0dGTVRfMDE1PSRHTVNHRk1UIDs7CisgIGVzYWMKK2NoYW5nZXF1b3RlKFssXSlkbmwKKyAgQUNfU1VCU1QoW0dNU0dGTVRfMDE1XSkKKworICBkbmwgU2VhcmNoIGZvciBHTlUgeGdldHRleHQgMC4xMiBvciBuZXdlciBpbiB0aGUgUEFUSC4KKyAgZG5sIFRoZSBmaXJzdCB0ZXN0IGV4Y2x1ZGVzIFNvbGFyaXMgeGdldHRleHQgYW5kIGVhcmx5IEdOVSB4Z2V0dGV4dCB2ZXJzaW9ucy4KKyAgZG5sIFRoZSBzZWNvbmQgdGVzdCBleGNsdWRlcyBGcmVlQlNEIHhnZXR0ZXh0LgorICBBTV9QQVRIX1BST0dfV0lUSF9URVNUKFhHRVRURVhULCB4Z2V0dGV4dCwKKyAgICBbJGFjX2Rpci8kYWNfd29yZCAtLW9taXQtaGVhZGVyIC0tY29weXJpZ2h0LWhvbGRlcj0gLS1tc2dpZC1idWdzLWFkZHJlc3M9IC9kZXYvbnVsbCA+Jl1BU19NRVNTQUdFX0xPR19GRFsgMj4mMSAmJgorICAgICAoaWYgJGFjX2Rpci8kYWNfd29yZCAtLW9taXQtaGVhZGVyIC0tY29weXJpZ2h0LWhvbGRlcj0gLS1tc2dpZC1idWdzLWFkZHJlc3M9IC9kZXYvbnVsbCAyPiYxID4vZGV2L251bGwgfCBncmVwIHVzYWdlID4vZGV2L251bGw7IHRoZW4gZXhpdCAxOyBlbHNlIGV4aXQgMDsgZmkpXSwKKyAgICA6KQorICBkbmwgUmVtb3ZlIGxlZnRvdmVyIGZyb20gRnJlZUJTRCB4Z2V0dGV4dCBjYWxsLgorICBybSAtZiBtZXNzYWdlcy5wbworCisgIGRubCBUZXN0IHdoZXRoZXIgaXQgaXMgR05VIHhnZXR0ZXh0ID49IDAuMTUuCitjaGFuZ2VxdW90ZSgsKWRubAorICBjYXNlIGAkWEdFVFRFWFQgLS12ZXJzaW9uIHwgc2VkIDFxIHwgc2VkIC1lICdzLF5bXjAtOV0qLCwnYCBpbgorICAgICcnIHwgMC5bMC05XSB8IDAuWzAtOV0uKiB8IDAuMVswLTRdIHwgMC4xWzAtNF0uKikgWEdFVFRFWFRfMDE1PTogOzsKKyAgICAqKSBYR0VUVEVYVF8wMTU9JFhHRVRURVhUIDs7CisgIGVzYWMKK2NoYW5nZXF1b3RlKFssXSlkbmwKKyAgQUNfU1VCU1QoW1hHRVRURVhUXzAxNV0pCisKKyAgZG5sIFNlYXJjaCBmb3IgR05VIG1zZ21lcmdlIDAuMTEgb3IgbmV3ZXIgaW4gdGhlIFBBVEguCisgIEFNX1BBVEhfUFJPR19XSVRIX1RFU1QoTVNHTUVSR0UsIG1zZ21lcmdlLAorICAgIFskYWNfZGlyLyRhY193b3JkIC0tdXBkYXRlIC1xIC9kZXYvbnVsbCAvZGV2L251bGwgPiZdQVNfTUVTU0FHRV9MT0dfRkRbIDI+JjFdLCA6KQorCisgIGRubCBUZXN0IHdoZXRoZXIgaXQgaXMgR05VIG1zZ21lcmdlID49IDAuMjAuCisgIGlmIExDX0FMTD1DICRNU0dNRVJHRSAtLWhlbHAgfCBncmVwICcgLS1mb3ItbXNnZm10ICcgPi9kZXYvbnVsbDsgdGhlbgorICAgIE1TR01FUkdFX0ZPUl9NU0dGTVRfT1BUSU9OPSctLWZvci1tc2dmbXQnCisgIGVsc2UKKyAgICBkbmwgVGVzdCB3aGV0aGVyIGl0IGlzIEdOVSBtc2dtZXJnZSA+PSAwLjEyLgorICAgIGlmIExDX0FMTD1DICRNU0dNRVJHRSAtLWhlbHAgfCBncmVwICcgLS1uby1mdXp6eS1tYXRjaGluZyAnID4vZGV2L251bGw7IHRoZW4KKyAgICAgIE1TR01FUkdFX0ZPUl9NU0dGTVRfT1BUSU9OPSctLW5vLWZ1enp5LW1hdGNoaW5nIC0tbm8tbG9jYXRpb24gLS1xdWlldCcKKyAgICBlbHNlCisgICAgICBkbmwgV2l0aCB0aGVzZSBvbGQgdmVyc2lvbnMsICQoTVNHTUVSR0UpICQoTVNHTUVSR0VfRk9SX01TR0ZNVF9PUFRJT04pIGlzCisgICAgICBkbmwgc2xvdy4gQnV0IHRoaXMgaXMgbm90IGEgYmlnIHByb2JsZW0sIGFzIHN1Y2ggb2xkIGdldHRleHQgdmVyc2lvbnMgYXJlCisgICAgICBkbmwgaGFyZGx5IGluIHVzZSBhbnkgbW9yZS4KKyAgICAgIE1TR01FUkdFX0ZPUl9NU0dGTVRfT1BUSU9OPSctLW5vLWxvY2F0aW9uIC0tcXVpZXQnCisgICAgZmkKKyAgZmkKKyAgQUNfU1VCU1QoW01TR01FUkdFX0ZPUl9NU0dGTVRfT1BUSU9OXSkKKworICBkbmwgU3VwcG9ydCBmb3IgQU1fWEdFVFRFWFRfT1BUSU9OLgorICB0ZXN0IC1uICIke1hHRVRURVhUX0VYVFJBX09QVElPTlMrc2V0fSIgfHwgWEdFVFRFWFRfRVhUUkFfT1BUSU9OUz0KKyAgQUNfU1VCU1QoW1hHRVRURVhUX0VYVFJBX09QVElPTlNdKQorCisgIEFDX0NPTkZJR19DT01NQU5EUyhbcG8tZGlyZWN0b3JpZXNdLCBbWworICAgIGZvciBhY19maWxlIGluICRDT05GSUdfRklMRVM7IGRvCisgICAgICAjIFN1cHBvcnQgIm91dGZpbGVbOmluZmlsZVs6aW5maWxlLi4uXV0iCisgICAgICBjYXNlICIkYWNfZmlsZSIgaW4KKyAgICAgICAgKjoqKSBhY19maWxlPWBlY2hvICIkYWNfZmlsZSJ8c2VkICdzJTouKiUlJ2AgOzsKKyAgICAgIGVzYWMKKyAgICAgICMgUE8gZGlyZWN0b3JpZXMgaGF2ZSBhIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBmcm9tIE1ha2VmaWxlLmluLmluLgorICAgICAgY2FzZSAiJGFjX2ZpbGUiIGluICovTWFrZWZpbGUuaW4pCisgICAgICAgICMgQWRqdXN0IGEgcmVsYXRpdmUgc3JjZGlyLgorICAgICAgICBhY19kaXI9YGVjaG8gIiRhY19maWxlInxzZWQgJ3MlL1teL11bXi9dKiQlJSdgCisgICAgICAgIGFjX2Rpcl9zdWZmaXg9L2BlY2hvICIkYWNfZGlyInxzZWQgJ3MlXlwuLyUlJ2AKKyAgICAgICAgYWNfZG90cz1gZWNobyAiJGFjX2Rpcl9zdWZmaXgifHNlZCAncyUvW14vXSolLi4vJWcnYAorICAgICAgICAjIEluIGF1dG9jb25mLTIuMTMgaXQgaXMgY2FsbGVkICRhY19naXZlbl9zcmNkaXIuCisgICAgICAgICMgSW4gYXV0b2NvbmYtMi41MCBpdCBpcyBjYWxsZWQgJHNyY2Rpci4KKyAgICAgICAgdGVzdCAtbiAiJGFjX2dpdmVuX3NyY2RpciIgfHwgYWNfZ2l2ZW5fc3JjZGlyPSIkc3JjZGlyIgorICAgICAgICBjYXNlICIkYWNfZ2l2ZW5fc3JjZGlyIiBpbgorICAgICAgICAgIC4pICB0b3Bfc3JjZGlyPWBlY2hvICRhY19kb3RzfHNlZCAncyUvJCUlJ2AgOzsKKyAgICAgICAgICAvKikgdG9wX3NyY2Rpcj0iJGFjX2dpdmVuX3NyY2RpciIgOzsKKyAgICAgICAgICAqKSAgdG9wX3NyY2Rpcj0iJGFjX2RvdHMkYWNfZ2l2ZW5fc3JjZGlyIiA7OworICAgICAgICBlc2FjCisgICAgICAgICMgVHJlYXQgYSBkaXJlY3RvcnkgYXMgYSBQTyBkaXJlY3RvcnkgaWYgYW5kIG9ubHkgaWYgaXQgaGFzIGEKKyAgICAgICAgIyBQT1RGSUxFUy5pbiBmaWxlLiBUaGlzIGFsbG93cyBwYWNrYWdlcyB0byBoYXZlIG11bHRpcGxlIFBPCisgICAgICAgICMgZGlyZWN0b3JpZXMgdW5kZXIgZGlmZmVyZW50IG5hbWVzIG9yIGluIGRpZmZlcmVudCBsb2NhdGlvbnMuCisgICAgICAgIGlmIHRlc3QgLWYgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9QT1RGSUxFUy5pbiI7IHRoZW4KKyAgICAgICAgICBybSAtZiAiJGFjX2Rpci9QT1RGSUxFUyIKKyAgICAgICAgICB0ZXN0IC1uICIkYXNfbWUiICYmIGVjaG8gIiRhc19tZTogY3JlYXRpbmcgJGFjX2Rpci9QT1RGSUxFUyIgfHwgZWNobyAiY3JlYXRpbmcgJGFjX2Rpci9QT1RGSUxFUyIKKyAgICAgICAgICBndF90YWI9YHByaW50ZiAnXHQnYAorICAgICAgICAgIGNhdCAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL1BPVEZJTEVTLmluIiB8IHNlZCAtZSAiL14jL2QiIC1lICIvXlsgJHtndF90YWJ9XSpcJC9kIiAtZSAicywuKiwgICAgICR0b3Bfc3JjZGlyLyYgXFxcXCwiIHwgc2VkIC1lICJcJHMvXCguKlwpIFxcXFwvXDEvIiA+ICIkYWNfZGlyL1BPVEZJTEVTIgorICAgICAgICAgIFBPTUFLRUZJTEVERVBTPSJQT1RGSUxFUy5pbiIKKyAgICAgICAgICAjIEFMTF9MSU5HVUFTLCBQT0ZJTEVTLCBVUERBVEVQT0ZJTEVTLCBEVU1NWVBPRklMRVMsIEdNT0ZJTEVTIGRlcGVuZAorICAgICAgICAgICMgb24gJGFjX2RpciBidXQgZG9uJ3QgZGVwZW5kIG9uIHVzZXItc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAjIHBhcmFtZXRlcnMuCisgICAgICAgICAgaWYgdGVzdCAtZiAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL0xJTkdVQVMiOyB0aGVuCisgICAgICAgICAgICAjIFRoZSBMSU5HVUFTIGZpbGUgY29udGFpbnMgdGhlIHNldCBvZiBhdmFpbGFibGUgbGFuZ3VhZ2VzLgorICAgICAgICAgICAgaWYgdGVzdCAtbiAiJE9CU09MRVRFX0FMTF9MSU5HVUFTIjsgdGhlbgorICAgICAgICAgICAgICB0ZXN0IC1uICIkYXNfbWUiICYmIGVjaG8gIiRhc19tZTogc2V0dGluZyBBTExfTElOR1VBUyBpbiBjb25maWd1cmUuaW4gaXMgb2Jzb2xldGUiIHx8IGVjaG8gInNldHRpbmcgQUxMX0xJTkdVQVMgaW4gY29uZmlndXJlLmluIGlzIG9ic29sZXRlIgorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIEFMTF9MSU5HVUFTPWBzZWQgLWUgIi9eIy9kIiAtZSAicy8jLiovLyIgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9MSU5HVUFTImAKKyAgICAgICAgICAgIFBPTUFLRUZJTEVERVBTPSIkUE9NQUtFRklMRURFUFMgTElOR1VBUyIKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICAjIFRoZSBzZXQgb2YgYXZhaWxhYmxlIGxhbmd1YWdlcyB3YXMgZ2l2ZW4gaW4gY29uZmlndXJlLmluLgorICAgICAgICAgICAgQUxMX0xJTkdVQVM9JE9CU09MRVRFX0FMTF9MSU5HVUFTCisgICAgICAgICAgZmkKKyAgICAgICAgICAjIENvbXB1dGUgUE9GSUxFUworICAgICAgICAgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKGxhbmcpLnBvKQorICAgICAgICAgICMgQ29tcHV0ZSBVUERBVEVQT0ZJTEVTCisgICAgICAgICAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChsYW5nKS5wby11cGRhdGUpCisgICAgICAgICAgIyBDb21wdXRlIERVTU1ZUE9GSUxFUworICAgICAgICAgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQobGFuZykubm9wKQorICAgICAgICAgICMgQ29tcHV0ZSBHTU9GSUxFUworICAgICAgICAgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKGxhbmcpLmdtbykKKyAgICAgICAgICBjYXNlICIkYWNfZ2l2ZW5fc3JjZGlyIiBpbgorICAgICAgICAgICAgLikgc3JjZGlycHJlPSA7OworICAgICAgICAgICAgKikgc3JjZGlycHJlPSckKHNyY2RpcikvJyA7OworICAgICAgICAgIGVzYWMKKyAgICAgICAgICBQT0ZJTEVTPQorICAgICAgICAgIFVQREFURVBPRklMRVM9CisgICAgICAgICAgRFVNTVlQT0ZJTEVTPQorICAgICAgICAgIEdNT0ZJTEVTPQorICAgICAgICAgIGZvciBsYW5nIGluICRBTExfTElOR1VBUzsgZG8KKyAgICAgICAgICAgIFBPRklMRVM9IiRQT0ZJTEVTICRzcmNkaXJwcmUkbGFuZy5wbyIKKyAgICAgICAgICAgIFVQREFURVBPRklMRVM9IiRVUERBVEVQT0ZJTEVTICRsYW5nLnBvLXVwZGF0ZSIKKyAgICAgICAgICAgIERVTU1ZUE9GSUxFUz0iJERVTU1ZUE9GSUxFUyAkbGFuZy5ub3AiCisgICAgICAgICAgICBHTU9GSUxFUz0iJEdNT0ZJTEVTICRzcmNkaXJwcmUkbGFuZy5nbW8iCisgICAgICAgICAgZG9uZQorICAgICAgICAgICMgQ0FUQUxPR1MgZGVwZW5kcyBvbiBib3RoICRhY19kaXIgYW5kIHRoZSB1c2VyJ3MgTElOR1VBUworICAgICAgICAgICMgZW52aXJvbm1lbnQgdmFyaWFibGUuCisgICAgICAgICAgSU5TVF9MSU5HVUFTPQorICAgICAgICAgIGlmIHRlc3QgLW4gIiRBTExfTElOR1VBUyI7IHRoZW4KKyAgICAgICAgICAgIGZvciBwcmVzZW50bGFuZyBpbiAkQUxMX0xJTkdVQVM7IGRvCisgICAgICAgICAgICAgIHVzZWl0PW5vCisgICAgICAgICAgICAgIGlmIHRlc3QgIiVVTlNFVCUiICE9ICIkTElOR1VBUyI7IHRoZW4KKyAgICAgICAgICAgICAgICBkZXNpcmVkbGFuZ3VhZ2VzPSIkTElOR1VBUyIKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRlc2lyZWRsYW5ndWFnZXM9IiRBTExfTElOR1VBUyIKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgZm9yIGRlc2lyZWRsYW5nIGluICRkZXNpcmVkbGFuZ3VhZ2VzOyBkbworICAgICAgICAgICAgICAgICMgVXNlIHRoZSBwcmVzZW50bGFuZyBjYXRhbG9nIGlmIGRlc2lyZWRsYW5nIGlzCisgICAgICAgICAgICAgICAgIyAgIGEuIGVxdWFsIHRvIHByZXNlbnRsYW5nLCBvcgorICAgICAgICAgICAgICAgICMgICBiLiBhIHZhcmlhbnQgb2YgcHJlc2VudGxhbmcgKGJlY2F1c2UgaW4gdGhpcyBjYXNlLAorICAgICAgICAgICAgICAgICMgICAgICBwcmVzZW50bGFuZyBjYW4gYmUgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciBtZXNzYWdlcworICAgICAgICAgICAgICAgICMgICAgICB3aGljaCBhcmUgbm90IHRyYW5zbGF0ZWQgaW4gdGhlIGRlc2lyZWRsYW5nIGNhdGFsb2cpLgorICAgICAgICAgICAgICAgIGNhc2UgIiRkZXNpcmVkbGFuZyIgaW4KKyAgICAgICAgICAgICAgICAgICIkcHJlc2VudGxhbmciKikgdXNlaXQ9eWVzOzsKKyAgICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgaWYgdGVzdCAkdXNlaXQgPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgICAgICBJTlNUX0xJTkdVQVM9IiRJTlNUX0xJTkdVQVMgJHByZXNlbnRsYW5nIgorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZG9uZQorICAgICAgICAgIGZpCisgICAgICAgICAgQ0FUQUxPR1M9CisgICAgICAgICAgaWYgdGVzdCAtbiAiJElOU1RfTElOR1VBUyI7IHRoZW4KKyAgICAgICAgICAgIGZvciBsYW5nIGluICRJTlNUX0xJTkdVQVM7IGRvCisgICAgICAgICAgICAgIENBVEFMT0dTPSIkQ0FUQUxPR1MgJGxhbmcuZ21vIgorICAgICAgICAgICAgZG9uZQorICAgICAgICAgIGZpCisgICAgICAgICAgdGVzdCAtbiAiJGFzX21lIiAmJiBlY2hvICIkYXNfbWU6IGNyZWF0aW5nICRhY19kaXIvTWFrZWZpbGUiIHx8IGVjaG8gImNyZWF0aW5nICRhY19kaXIvTWFrZWZpbGUiCisgICAgICAgICAgc2VkIC1lICIvXlBPVEZJTEVTID0vciAkYWNfZGlyL1BPVEZJTEVTIiAtZSAiL14jIE1ha2V2YXJzL3IgJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL01ha2V2YXJzIiAtZSAic3xAUE9GSUxFU0B8JFBPRklMRVN8ZyIgLWUgInN8QFVQREFURVBPRklMRVNAfCRVUERBVEVQT0ZJTEVTfGciIC1lICJzfEBEVU1NWVBPRklMRVNAfCREVU1NWVBPRklMRVN8ZyIgLWUgInN8QEdNT0ZJTEVTQHwkR01PRklMRVN8ZyIgLWUgInN8QENBVEFMT0dTQHwkQ0FUQUxPR1N8ZyIgLWUgInN8QFBPTUFLRUZJTEVERVBTQHwkUE9NQUtFRklMRURFUFN8ZyIgIiRhY19kaXIvTWFrZWZpbGUuaW4iID4gIiRhY19kaXIvTWFrZWZpbGUiCisgICAgICAgICAgZm9yIGYgaW4gIiRhY19naXZlbl9zcmNkaXIvJGFjX2RpciIvUnVsZXMtKjsgZG8KKyAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRmIjsgdGhlbgorICAgICAgICAgICAgICBjYXNlICIkZiIgaW4KKyAgICAgICAgICAgICAgICAqLm9yaWcgfCAqLmJhayB8ICp+KSA7OworICAgICAgICAgICAgICAgICopIGNhdCAiJGYiID4+ICIkYWNfZGlyL01ha2VmaWxlIiA7OworICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICBmaQorICAgICAgICAgIGRvbmUKKyAgICAgICAgZmkKKyAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICBkb25lXV0sCisgICBbIyBDYXB0dXJlIHRoZSB2YWx1ZSBvZiBvYnNvbGV0ZSBBTExfTElOR1VBUyBiZWNhdXNlIHdlIG5lZWQgaXQgdG8gY29tcHV0ZQorICAgICMgUE9GSUxFUywgVVBEQVRFUE9GSUxFUywgRFVNTVlQT0ZJTEVTLCBHTU9GSUxFUywgQ0FUQUxPR1MuCisgICAgT0JTT0xFVEVfQUxMX0xJTkdVQVM9IiRBTExfTElOR1VBUyIKKyAgICAjIENhcHR1cmUgdGhlIHZhbHVlIG9mIExJTkdVQVMgYmVjYXVzZSB3ZSBuZWVkIGl0IHRvIGNvbXB1dGUgQ0FUQUxPR1MuCisgICAgTElOR1VBUz0iJHtMSU5HVUFTLSVVTlNFVCV9IgorICAgXSkKK10pCisKK2RubCBQb3N0cHJvY2Vzc2VzIGEgTWFrZWZpbGUgaW4gYSBkaXJlY3RvcnkgY29udGFpbmluZyBQTyBmaWxlcy4KK0FDX0RFRlVOKFtBTV9QT1NUUFJPQ0VTU19QT19NQUtFRklMRV0sCitbCisgICMgV2hlbiB0aGlzIGNvZGUgaXMgcnVuLCBpbiBjb25maWcuc3RhdHVzLCB0d28gdmFyaWFibGVzIGhhdmUgYWxyZWFkeSBiZWVuCisgICMgc2V0OgorICAjIC0gT0JTT0xFVEVfQUxMX0xJTkdVQVMgaXMgdGhlIHZhbHVlIG9mIExJTkdVQVMgc2V0IGluIGNvbmZpZ3VyZS5pbiwKKyAgIyAtIExJTkdVQVMgaXMgdGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBMSU5HVUFTIGF0IGNvbmZpZ3VyZQorICAjICAgdGltZS4KKworY2hhbmdlcXVvdGUoLClkbmwKKyAgIyBBZGp1c3QgYSByZWxhdGl2ZSBzcmNkaXIuCisgIGFjX2Rpcj1gZWNobyAiJGFjX2ZpbGUifHNlZCAncyUvW14vXVteL10qJCUlJ2AKKyAgYWNfZGlyX3N1ZmZpeD0vYGVjaG8gIiRhY19kaXIifHNlZCAncyVeXC4vJSUnYAorICBhY19kb3RzPWBlY2hvICIkYWNfZGlyX3N1ZmZpeCJ8c2VkICdzJS9bXi9dKiUuLi8lZydgCisgICMgSW4gYXV0b2NvbmYtMi4xMyBpdCBpcyBjYWxsZWQgJGFjX2dpdmVuX3NyY2Rpci4KKyAgIyBJbiBhdXRvY29uZi0yLjUwIGl0IGlzIGNhbGxlZCAkc3JjZGlyLgorICB0ZXN0IC1uICIkYWNfZ2l2ZW5fc3JjZGlyIiB8fCBhY19naXZlbl9zcmNkaXI9IiRzcmNkaXIiCisgIGNhc2UgIiRhY19naXZlbl9zcmNkaXIiIGluCisgICAgLikgIHRvcF9zcmNkaXI9YGVjaG8gJGFjX2RvdHN8c2VkICdzJS8kJSUnYCA7OworICAgIC8qKSB0b3Bfc3JjZGlyPSIkYWNfZ2l2ZW5fc3JjZGlyIiA7OworICAgICopICB0b3Bfc3JjZGlyPSIkYWNfZG90cyRhY19naXZlbl9zcmNkaXIiIDs7CisgIGVzYWMKKworICAjIEZpbmQgYSB3YXkgdG8gZWNobyBzdHJpbmdzIHdpdGhvdXQgaW50ZXJwcmV0aW5nIGJhY2tzbGFzaC4KKyAgaWYgdGVzdCAiWGAoZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAiID0gJ1hcdCc7IHRoZW4KKyAgICBndF9lY2hvPSdlY2hvJworICBlbHNlCisgICAgaWYgdGVzdCAiWGAocHJpbnRmICclc1xuJyAnXHQnKSAyPi9kZXYvbnVsbGAiID0gJ1hcdCc7IHRoZW4KKyAgICAgIGd0X2VjaG89J3ByaW50ZiAlc1xuJworICAgIGVsc2UKKyAgICAgIGVjaG9fZnVuYyAoKSB7CisgICAgICAgIGNhdCA8PEVPVAorJCoKK0VPVAorICAgICAgfQorICAgICAgZ3RfZWNobz0nZWNob19mdW5jJworICAgIGZpCisgIGZpCisKKyAgIyBBIHNlZCBzY3JpcHQgdGhhdCBleHRyYWN0cyB0aGUgdmFsdWUgb2YgVkFSSUFCTEUgZnJvbSBhIE1ha2VmaWxlLgorICB0YWI9YHByaW50ZiAnXHQnYAorICBzZWRfeF92YXJpYWJsZT0nCisjIFRlc3QgaWYgdGhlIGhvbGQgc3BhY2UgaXMgZW1wdHkuCit4CitzL1AvUC8KK3gKK3RhCisjIFllcyBpdCB3YXMgZW1wdHkuIExvb2sgaWYgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFyaWFibGUgZGVmaW5pdGlvbi4KKy9eWyciJHt0YWJ9IicgXSpWQVJJQUJMRVsnIiR7dGFifSInIF0qPS97CisgICMgU2VlbiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgdmFyaWFibGUgZGVmaW5pdGlvbi4KKyAgcy9eWyciJHt0YWJ9IicgXSpWQVJJQUJMRVsnIiR7dGFifSInIF0qPS8vCisgIGJhCit9CitiZAorOmEKKyMgSGVyZSB3ZSBhcmUgcHJvY2Vzc2luZyBhIGxpbmUgZnJvbSB0aGUgdmFyaWFibGUgZGVmaW5pdGlvbi4KKyMgUmVtb3ZlIGNvbW1lbnQsIG1vcmUgcHJlY2lzZWx5IHJlcGxhY2UgaXQgd2l0aCBhIHNwYWNlLgorcy8jLiokLyAvCisjIFNlZSBpZiB0aGUgbGluZSBlbmRzIGluIGEgYmFja3NsYXNoLgordGIKKzpiCitzL1xcJC8vCisjIFByaW50IHRoZSBsaW5lLCB3aXRob3V0IHRoZSB0cmFpbGluZyBiYWNrc2xhc2guCitwCit0YworIyBUaGVyZSB3YXMgbm8gdHJhaWxpbmcgYmFja3NsYXNoLiBUaGUgZW5kIG9mIHRoZSB2YXJpYWJsZSBkZWZpbml0aW9uIGlzCisjIHJlYWNoZWQuIENsZWFyIHRoZSBob2xkIHNwYWNlLgorcy9eLiokLy8KK3gKK2JkCis6YworIyBBIHRyYWlsaW5nIGJhY2tzbGFzaCBtZWFucyB0aGF0IHRoZSB2YXJpYWJsZSBkZWZpbml0aW9uIGNvbnRpbnVlcyBpbiB0aGUKKyMgbmV4dCBsaW5lLiBQdXQgYSBub25lbXB0eSBzdHJpbmcgaW50byB0aGUgaG9sZCBzcGFjZSB0byBpbmRpY2F0ZSB0aGlzLgorcy9eLiokL1AvCit4Cis6ZAorJworY2hhbmdlcXVvdGUoWyxdKWRubAorCisgICMgU2V0IFBPVEZJTEVTIHRvIHRoZSB2YWx1ZSBvZiB0aGUgTWFrZWZpbGUgdmFyaWFibGUgUE9URklMRVMuCisgIHNlZF94X1BPVEZJTEVTPWAkZ3RfZWNobyAiJHNlZF94X3ZhcmlhYmxlIiB8IHNlZCAtZSAnL14gKiMvZCcgLWUgJ3MvVkFSSUFCTEUvUE9URklMRVMvZydgCisgIFBPVEZJTEVTPWBzZWQgLW4gLWUgIiRzZWRfeF9QT1RGSUxFUyIgPCAiJGFjX2ZpbGUiYAorICAjIENvbXB1dGUgUE9URklMRVNfREVQUyBhcworICAjICAgJChmb3JlYWNoIGZpbGUsICQoUE9URklMRVMpLCAkKHRvcF9zcmNkaXIpLyQoZmlsZSkpCisgIFBPVEZJTEVTX0RFUFM9CisgIGZvciBmaWxlIGluICRQT1RGSUxFUzsgZG8KKyAgICBQT1RGSUxFU19ERVBTPSIkUE9URklMRVNfREVQUyAiJyQodG9wX3NyY2RpcikvJyIkZmlsZSIKKyAgZG9uZQorICBQT01BS0VGSUxFREVQUz0iIgorCisgIGlmIHRlc3QgLW4gIiRPQlNPTEVURV9BTExfTElOR1VBUyI7IHRoZW4KKyAgICB0ZXN0IC1uICIkYXNfbWUiICYmIGVjaG8gIiRhc19tZTogc2V0dGluZyBBTExfTElOR1VBUyBpbiBjb25maWd1cmUuaW4gaXMgb2Jzb2xldGUiIHx8IGVjaG8gInNldHRpbmcgQUxMX0xJTkdVQVMgaW4gY29uZmlndXJlLmluIGlzIG9ic29sZXRlIgorICBmaQorICBpZiB0ZXN0IC1mICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvTElOR1VBUyI7IHRoZW4KKyAgICAjIFRoZSBMSU5HVUFTIGZpbGUgY29udGFpbnMgdGhlIHNldCBvZiBhdmFpbGFibGUgbGFuZ3VhZ2VzLgorICAgIEFMTF9MSU5HVUFTPWBzZWQgLWUgIi9eIy9kIiAtZSAicy8jLiovLyIgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9MSU5HVUFTImAKKyAgICBQT01BS0VGSUxFREVQUz0iJFBPTUFLRUZJTEVERVBTIExJTkdVQVMiCisgIGVsc2UKKyAgICAjIFNldCBBTExfTElOR1VBUyB0byB0aGUgdmFsdWUgb2YgdGhlIE1ha2VmaWxlIHZhcmlhYmxlIExJTkdVQVMuCisgICAgc2VkX3hfTElOR1VBUz1gJGd0X2VjaG8gIiRzZWRfeF92YXJpYWJsZSIgfCBzZWQgLWUgJy9eICojL2QnIC1lICdzL1ZBUklBQkxFL0xJTkdVQVMvZydgCisgICAgQUxMX0xJTkdVQVM9YHNlZCAtbiAtZSAiJHNlZF94X0xJTkdVQVMiIDwgIiRhY19maWxlImAKKyAgZmkKKyAgIyBDb21wdXRlIFBPRklMRVMKKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQobGFuZykucG8pCisgICMgQ29tcHV0ZSBVUERBVEVQT0ZJTEVTCisgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQobGFuZykucG8tdXBkYXRlKQorICAjIENvbXB1dGUgRFVNTVlQT0ZJTEVTCisgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQobGFuZykubm9wKQorICAjIENvbXB1dGUgR01PRklMRVMKKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQobGFuZykuZ21vKQorICAjIENvbXB1dGUgUFJPUEVSVElFU0ZJTEVTCisgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKERPTUFJTilfJChsYW5nKS5wcm9wZXJ0aWVzKQorICAjIENvbXB1dGUgQ0xBU1NGSUxFUworICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChET01BSU4pXyQobGFuZykuY2xhc3MpCisgICMgQ29tcHV0ZSBRTUZJTEVTCisgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKGxhbmcpLnFtKQorICAjIENvbXB1dGUgTVNHRklMRVMKKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQoZnJvYiAkKGxhbmcpKS5tc2cpCisgICMgQ29tcHV0ZSBSRVNPVVJDRVNETExGSUxFUworICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChmcm9iICQobGFuZykpLyQoRE9NQUlOKS5yZXNvdXJjZXMuZGxsKQorICBjYXNlICIkYWNfZ2l2ZW5fc3JjZGlyIiBpbgorICAgIC4pIHNyY2RpcnByZT0gOzsKKyAgICAqKSBzcmNkaXJwcmU9JyQoc3JjZGlyKS8nIDs7CisgIGVzYWMKKyAgUE9GSUxFUz0KKyAgVVBEQVRFUE9GSUxFUz0KKyAgRFVNTVlQT0ZJTEVTPQorICBHTU9GSUxFUz0KKyAgUFJPUEVSVElFU0ZJTEVTPQorICBDTEFTU0ZJTEVTPQorICBRTUZJTEVTPQorICBNU0dGSUxFUz0KKyAgUkVTT1VSQ0VTRExMRklMRVM9CisgIGZvciBsYW5nIGluICRBTExfTElOR1VBUzsgZG8KKyAgICBQT0ZJTEVTPSIkUE9GSUxFUyAkc3JjZGlycHJlJGxhbmcucG8iCisgICAgVVBEQVRFUE9GSUxFUz0iJFVQREFURVBPRklMRVMgJGxhbmcucG8tdXBkYXRlIgorICAgIERVTU1ZUE9GSUxFUz0iJERVTU1ZUE9GSUxFUyAkbGFuZy5ub3AiCisgICAgR01PRklMRVM9IiRHTU9GSUxFUyAkc3JjZGlycHJlJGxhbmcuZ21vIgorICAgIFBST1BFUlRJRVNGSUxFUz0iJFBST1BFUlRJRVNGSUxFUyBcJChzcmNkaXIpL1wkKERPTUFJTilfJGxhbmcucHJvcGVydGllcyIKKyAgICBDTEFTU0ZJTEVTPSIkQ0xBU1NGSUxFUyBcJChzcmNkaXIpL1wkKERPTUFJTilfJGxhbmcuY2xhc3MiCisgICAgUU1GSUxFUz0iJFFNRklMRVMgJHNyY2RpcnByZSRsYW5nLnFtIgorICAgIGZyb2JiZWRsYW5nPWBlY2hvICRsYW5nIHwgc2VkIC1lICdzL1wuLiokLy8nIC1lICd5L0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6LydgCisgICAgTVNHRklMRVM9IiRNU0dGSUxFUyAkc3JjZGlycHJlJGZyb2JiZWRsYW5nLm1zZyIKKyAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9fLy0vZycgLWUgJ3MvXnNyLUNTL3NyLVNQLycgLWUgJ3MvQGxhdGluJC8tTGF0bi8nIC1lICdzL0BjeXJpbGxpYyQvLUN5cmwvJyAtZSAncy9ec3ItU1AkL3NyLVNQLUxhdG4vJyAtZSAncy9edXotVVokL3V6LVVaLUxhdG4vJ2AKKyAgICBSRVNPVVJDRVNETExGSUxFUz0iJFJFU09VUkNFU0RMTEZJTEVTICRzcmNkaXJwcmUkZnJvYmJlZGxhbmcvXCQoRE9NQUlOKS5yZXNvdXJjZXMuZGxsIgorICBkb25lCisgICMgQ0FUQUxPR1MgZGVwZW5kcyBvbiBib3RoICRhY19kaXIgYW5kIHRoZSB1c2VyJ3MgTElOR1VBUworICAjIGVudmlyb25tZW50IHZhcmlhYmxlLgorICBJTlNUX0xJTkdVQVM9CisgIGlmIHRlc3QgLW4gIiRBTExfTElOR1VBUyI7IHRoZW4KKyAgICBmb3IgcHJlc2VudGxhbmcgaW4gJEFMTF9MSU5HVUFTOyBkbworICAgICAgdXNlaXQ9bm8KKyAgICAgIGlmIHRlc3QgIiVVTlNFVCUiICE9ICIkTElOR1VBUyI7IHRoZW4KKyAgICAgICAgZGVzaXJlZGxhbmd1YWdlcz0iJExJTkdVQVMiCisgICAgICBlbHNlCisgICAgICAgIGRlc2lyZWRsYW5ndWFnZXM9IiRBTExfTElOR1VBUyIKKyAgICAgIGZpCisgICAgICBmb3IgZGVzaXJlZGxhbmcgaW4gJGRlc2lyZWRsYW5ndWFnZXM7IGRvCisgICAgICAgICMgVXNlIHRoZSBwcmVzZW50bGFuZyBjYXRhbG9nIGlmIGRlc2lyZWRsYW5nIGlzCisgICAgICAgICMgICBhLiBlcXVhbCB0byBwcmVzZW50bGFuZywgb3IKKyAgICAgICAgIyAgIGIuIGEgdmFyaWFudCBvZiBwcmVzZW50bGFuZyAoYmVjYXVzZSBpbiB0aGlzIGNhc2UsCisgICAgICAgICMgICAgICBwcmVzZW50bGFuZyBjYW4gYmUgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciBtZXNzYWdlcworICAgICAgICAjICAgICAgd2hpY2ggYXJlIG5vdCB0cmFuc2xhdGVkIGluIHRoZSBkZXNpcmVkbGFuZyBjYXRhbG9nKS4KKyAgICAgICAgY2FzZSAiJGRlc2lyZWRsYW5nIiBpbgorICAgICAgICAgICIkcHJlc2VudGxhbmciKikgdXNlaXQ9eWVzOzsKKyAgICAgICAgZXNhYworICAgICAgZG9uZQorICAgICAgaWYgdGVzdCAkdXNlaXQgPSB5ZXM7IHRoZW4KKyAgICAgICAgSU5TVF9MSU5HVUFTPSIkSU5TVF9MSU5HVUFTICRwcmVzZW50bGFuZyIKKyAgICAgIGZpCisgICAgZG9uZQorICBmaQorICBDQVRBTE9HUz0KKyAgSkFWQUNBVEFMT0dTPQorICBRVENBVEFMT0dTPQorICBUQ0xDQVRBTE9HUz0KKyAgQ1NIQVJQQ0FUQUxPR1M9CisgIGlmIHRlc3QgLW4gIiRJTlNUX0xJTkdVQVMiOyB0aGVuCisgICAgZm9yIGxhbmcgaW4gJElOU1RfTElOR1VBUzsgZG8KKyAgICAgIENBVEFMT0dTPSIkQ0FUQUxPR1MgJGxhbmcuZ21vIgorICAgICAgSkFWQUNBVEFMT0dTPSIkSkFWQUNBVEFMT0dTIFwkKERPTUFJTilfJGxhbmcucHJvcGVydGllcyIKKyAgICAgIFFUQ0FUQUxPR1M9IiRRVENBVEFMT0dTICRsYW5nLnFtIgorICAgICAgZnJvYmJlZGxhbmc9YGVjaG8gJGxhbmcgfCBzZWQgLWUgJ3MvXC4uKiQvLycgLWUgJ3kvQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVovYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXovJ2AKKyAgICAgIFRDTENBVEFMT0dTPSIkVENMQ0FUQUxPR1MgJGZyb2JiZWRsYW5nLm1zZyIKKyAgICAgIGZyb2JiZWRsYW5nPWBlY2hvICRsYW5nIHwgc2VkIC1lICdzL18vLS9nJyAtZSAncy9ec3ItQ1Mvc3ItU1AvJyAtZSAncy9AbGF0aW4kLy1MYXRuLycgLWUgJ3MvQGN5cmlsbGljJC8tQ3lybC8nIC1lICdzL15zci1TUCQvc3ItU1AtTGF0bi8nIC1lICdzL151ei1VWiQvdXotVVotTGF0bi8nYAorICAgICAgQ1NIQVJQQ0FUQUxPR1M9IiRDU0hBUlBDQVRBTE9HUyAkZnJvYmJlZGxhbmcvXCQoRE9NQUlOKS5yZXNvdXJjZXMuZGxsIgorICAgIGRvbmUKKyAgZmkKKworICBzZWQgLWUgInN8QFBPVEZJTEVTX0RFUFNAfCRQT1RGSUxFU19ERVBTfGciIC1lICJzfEBQT0ZJTEVTQHwkUE9GSUxFU3xnIiAtZSAic3xAVVBEQVRFUE9GSUxFU0B8JFVQREFURVBPRklMRVN8ZyIgLWUgInN8QERVTU1ZUE9GSUxFU0B8JERVTU1ZUE9GSUxFU3xnIiAtZSAic3xAR01PRklMRVNAfCRHTU9GSUxFU3xnIiAtZSAic3xAUFJPUEVSVElFU0ZJTEVTQHwkUFJPUEVSVElFU0ZJTEVTfGciIC1lICJzfEBDTEFTU0ZJTEVTQHwkQ0xBU1NGSUxFU3xnIiAtZSAic3xAUU1GSUxFU0B8JFFNRklMRVN8ZyIgLWUgInN8QE1TR0ZJTEVTQHwkTVNHRklMRVN8ZyIgLWUgInN8QFJFU09VUkNFU0RMTEZJTEVTQHwkUkVTT1VSQ0VTRExMRklMRVN8ZyIgLWUgInN8QENBVEFMT0dTQHwkQ0FUQUxPR1N8ZyIgLWUgInN8QEpBVkFDQVRBTE9HU0B8JEpBVkFDQVRBTE9HU3xnIiAtZSAic3xAUVRDQVRBTE9HU0B8JFFUQ0FUQUxPR1N8ZyIgLWUgInN8QFRDTENBVEFMT0dTQHwkVENMQ0FUQUxPR1N8ZyIgLWUgInN8QENTSEFSUENBVEFMT0dTQHwkQ1NIQVJQQ0FUQUxPR1N8ZyIgLWUgJ3MsXiNkaXN0ZGlyOixkaXN0ZGlyOiwnIDwgIiRhY19maWxlIiA+ICIkYWNfZmlsZS50bXAiCisgIHRhYj1gcHJpbnRmICdcdCdgCisgIGlmIGdyZXAgLWwgJ0BUQ0xDQVRBTE9HU0AnICIkYWNfZmlsZSIgPiAvZGV2L251bGw7IHRoZW4KKyAgICAjIEFkZCBkZXBlbmRlbmNpZXMgdGhhdCBjYW5ub3QgYmUgZm9ybXVsYXRlZCBhcyBhIHNpbXBsZSBzdWZmaXggcnVsZS4KKyAgICBmb3IgbGFuZyBpbiAkQUxMX0xJTkdVQVM7IGRvCisgICAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9cLi4qJC8vJyAtZSAneS9BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei8nYAorICAgICAgY2F0ID4+ICIkYWNfZmlsZS50bXAiIDw8RU9GCiskZnJvYmJlZGxhbmcubXNnOiAkbGFuZy5wbworJHt0YWJ9QGVjaG8gIlwkKE1TR0ZNVCkgLWMgLS10Y2wgLWQgXCQoc3JjZGlyKSAtbCAkbGFuZyAkc3JjZGlycHJlJGxhbmcucG8iOyBcCiske3RhYn1cJChNU0dGTVQpIC1jIC0tdGNsIC1kICJcJChzcmNkaXIpIiAtbCAkbGFuZyAkc3JjZGlycHJlJGxhbmcucG8gfHwgeyBybSAtZiAiXCQoc3JjZGlyKS8kZnJvYmJlZGxhbmcubXNnIjsgZXhpdCAxOyB9CitFT0YKKyAgICBkb25lCisgIGZpCisgIGlmIGdyZXAgLWwgJ0BDU0hBUlBDQVRBTE9HU0AnICIkYWNfZmlsZSIgPiAvZGV2L251bGw7IHRoZW4KKyAgICAjIEFkZCBkZXBlbmRlbmNpZXMgdGhhdCBjYW5ub3QgYmUgZm9ybXVsYXRlZCBhcyBhIHNpbXBsZSBzdWZmaXggcnVsZS4KKyAgICBmb3IgbGFuZyBpbiAkQUxMX0xJTkdVQVM7IGRvCisgICAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9fLy0vZycgLWUgJ3MvXnNyLUNTL3NyLVNQLycgLWUgJ3MvQGxhdGluJC8tTGF0bi8nIC1lICdzL0BjeXJpbGxpYyQvLUN5cmwvJyAtZSAncy9ec3ItU1AkL3NyLVNQLUxhdG4vJyAtZSAncy9edXotVVokL3V6LVVaLUxhdG4vJ2AKKyAgICAgIGNhdCA+PiAiJGFjX2ZpbGUudG1wIiA8PEVPRgorJGZyb2JiZWRsYW5nL1wkKERPTUFJTikucmVzb3VyY2VzLmRsbDogJGxhbmcucG8KKyR7dGFifUBlY2hvICJcJChNU0dGTVQpIC1jIC0tY3NoYXJwIC1kIFwkKHNyY2RpcikgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIC1yIFwkKERPTUFJTikiOyBcCiske3RhYn1cJChNU0dGTVQpIC1jIC0tY3NoYXJwIC1kICJcJChzcmNkaXIpIiAtbCAkbGFuZyAkc3JjZGlycHJlJGxhbmcucG8gLXIgIlwkKERPTUFJTikiIHx8IHsgcm0gLWYgIlwkKHNyY2RpcikvJGZyb2JiZWRsYW5nLm1zZyI7IGV4aXQgMTsgfQorRU9GCisgICAgZG9uZQorICBmaQorICBpZiB0ZXN0IC1uICIkUE9NQUtFRklMRURFUFMiOyB0aGVuCisgICAgY2F0ID4+ICIkYWNfZmlsZS50bXAiIDw8RU9GCitNYWtlZmlsZTogJFBPTUFLRUZJTEVERVBTCitFT0YKKyAgZmkKKyAgbXYgIiRhY19maWxlLnRtcCIgIiRhY19maWxlIgorXSkKKworZG5sIEluaXRpYWxpemVzIHRoZSBhY2N1bXVsYXRvciB1c2VkIGJ5IEFNX1hHRVRURVhUX09QVElPTi4KK0FDX0RFRlVOKFtBTV9YR0VUVEVYVF9PUFRJT05fSU5JVF0sCitbCisgIFhHRVRURVhUX0VYVFJBX09QVElPTlM9CitdKQorCitkbmwgUmVnaXN0ZXJzIGFuIG9wdGlvbiB0byBiZSBwYXNzZWQgdG8geGdldHRleHQgaW4gdGhlIHBvIHN1YmRpcmVjdG9yeS4KK0FDX0RFRlVOKFtBTV9YR0VUVEVYVF9PUFRJT05dLAorWworICBBQ19SRVFVSVJFKFtBTV9YR0VUVEVYVF9PUFRJT05fSU5JVF0pCisgIFhHRVRURVhUX0VYVFJBX09QVElPTlM9IiRYR0VUVEVYVF9FWFRSQV9PUFRJT05TICQxIgorXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvcHJvZ3Rlc3QubTQgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL3Byb2d0ZXN0Lm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmMTg2YjEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL3Byb2d0ZXN0Lm00CkBAIC0wLDAgKzEsOTEgQEAKKyMgcHJvZ3Rlc3QubTQgc2VyaWFsIDcgKGdldHRleHQtMC4xOC4yKQorZG5sIENvcHlyaWdodCAoQykgMTk5Ni0yMDAzLCAyMDA1LCAyMDA4LTIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KK2RubAorZG5sIFRoaXMgZmlsZSBjYW4gYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlcgorZG5sIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBvciB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0CitkbmwgZnVuY3Rpb25hbGl0eS4KK2RubCBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgY29kZSBvZiB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpcyBjb3ZlcmVkCitkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCitkbmwgZ2V0dGV4dCBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorZG5sIFRoZXkgYXJlICpub3QqIGluIHRoZSBwdWJsaWMgZG9tYWluLgorCitkbmwgQXV0aG9yczoKK2RubCAgIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAxOTk2LgorCitBQ19QUkVSRVEoWzIuNTBdKQorCisjIFNlYXJjaCBwYXRoIGZvciBhIHByb2dyYW0gd2hpY2ggcGFzc2VzIHRoZSBnaXZlbiB0ZXN0LgorCitkbmwgQU1fUEFUSF9QUk9HX1dJVEhfVEVTVChWQVJJQUJMRSwgUFJPRy1UTy1DSEVDSy1GT1IsCitkbmwgICBURVNULVBFUkZPUk1FRC1PTi1GT1VORF9QUk9HUkFNIFssIFZBTFVFLUlGLU5PVC1GT1VORCBbLCBQQVRIXV0pCitBQ19ERUZVTihbQU1fUEFUSF9QUk9HX1dJVEhfVEVTVF0sCitbCisjIFByZXBhcmUgUEFUSF9TRVBBUkFUT1IuCisjIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4KK2lmIHRlc3QgIiR7UEFUSF9TRVBBUkFUT1Irc2V0fSIgIT0gc2V0OyB0aGVuCisgICMgRGV0ZXJtaW5lIFBBVEhfU0VQQVJBVE9SIGJ5IHRyeWluZyB0byBmaW5kIC9iaW4vc2ggaW4gYSBQQVRIIHdoaWNoCisgICMgY29udGFpbnMgb25seSAvYmluLiBOb3RlIHRoYXQga3NoIGxvb2tzIGFsc28gYXQgdGhlIEZQQVRIIHZhcmlhYmxlLAorICAjIHNvIHdlIGhhdmUgdG8gc2V0IHRoYXQgYXMgd2VsbCBmb3IgdGhlIHRlc3QuCisgIFBBVEhfU0VQQVJBVE9SPToKKyAgKFBBVEg9Jy9iaW47L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgXAorICAgICYmIHsgKFBBVEg9Jy9iaW46L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgXAorICAgICAgICAgICB8fCBQQVRIX1NFUEFSQVRPUj0nOycKKyAgICAgICB9CitmaQorCisjIEZpbmQgb3V0IGhvdyB0byB0ZXN0IGZvciBleGVjdXRhYmxlIGZpbGVzLiBEb24ndCB1c2UgYSB6ZXJvLWJ5dGUgZmlsZSwKKyMgYXMgc3lzdGVtcyBtYXkgdXNlIG1ldGhvZHMgb3RoZXIgdGhhbiBtb2RlIGJpdHMgdG8gZGV0ZXJtaW5lIGV4ZWN1dGFiaWxpdHkuCitjYXQgPmNvbmYkJC5maWxlIDw8X0FTRU9GCisjISAvYmluL3NoCitleGl0IDAKK19BU0VPRgorY2htb2QgK3ggY29uZiQkLmZpbGUKK2lmIHRlc3QgLXggY29uZiQkLmZpbGUgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgIGFjX2V4ZWN1dGFibGVfcD0idGVzdCAteCIKK2Vsc2UKKyAgYWNfZXhlY3V0YWJsZV9wPSJ0ZXN0IC1mIgorZmkKK3JtIC1mIGNvbmYkJC5maWxlCisKKyMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJDIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICQyOyBhY193b3JkPVskXTIKK0FDX01TR19DSEVDS0lORyhbZm9yICRhY193b3JkXSkKK0FDX0NBQ0hFX1ZBTChbYWNfY3ZfcGF0aF8kMV0sCitbY2FzZSAiWyRdJDEiIGluCisgIFtbXFwvXV0qIHwgPzpbW1xcL11dKikKKyAgICBhY19jdl9wYXRoXyQxPSJbJF0kMSIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgICAgOzsKKyAgKikKKyAgICBhY19zYXZlX0lGUz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKKyAgICBmb3IgYWNfZGlyIGluIGlmZWxzZShbJDVdLCAsICRQQVRILCBbJDVdKTsgZG8KKyAgICAgIElGUz0iJGFjX3NhdmVfSUZTIgorICAgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgICAgICBpZiAkYWNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgICAgICAgIGVjaG8gIiRhc19tZTogdHJ5aW5nICRhY19kaXIvJGFjX3dvcmQuLi4iID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICAgICBpZiBbJDNdOyB0aGVuCisgICAgICAgICAgICBhY19jdl9wYXRoXyQxPSIkYWNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICAgICAgICAgYnJlYWsgMgorICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgICBkb25lCisgICAgZG9uZQorICAgIElGUz0iJGFjX3NhdmVfSUZTIgorZG5sIElmIG5vIDR0aCBhcmcgaXMgZ2l2ZW4sIGxlYXZlIHRoZSBjYWNoZSB2YXJpYWJsZSB1bnNldCwKK2RubCBzbyBBQ19QQVRIX1BST0dTIHdpbGwga2VlcCBsb29raW5nLgoraWZlbHNlKFskNF0sICwgLCBbICB0ZXN0IC16ICJbJF1hY19jdl9wYXRoXyQxIiAmJiBhY19jdl9wYXRoXyQxPSIkNCIKK10pZG5sCisgICAgOzsKK2VzYWNdKWRubAorJDE9IiRhY19jdl9wYXRoXyQxIgoraWYgdGVzdCBpZmVsc2UoWyQ0XSwgLCBbLW4gIlskXSQxIl0sIFsiWyRdJDEiICE9ICIkNCJdKTsgdGhlbgorICBBQ19NU0dfUkVTVUxUKFskXVskMV0pCitlbHNlCisgIEFDX01TR19SRVNVTFQoW25vXSkKK2ZpCitBQ19TVUJTVChbJDFdKWRubAorXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2NvbmZpZy5ycGF0aCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2NvbmZpZy5ycGF0aApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iZTIwMmMxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvY29uZmlnLnJwYXRoCkBAIC0wLDAgKzEsNjg0IEBACisjISAvYmluL3NoCisjIE91dHB1dCBhIHN5c3RlbSBkZXBlbmRlbnQgc2V0IG9mIHZhcmlhYmxlcywgZGVzY3JpYmluZyBob3cgdG8gc2V0IHRoZQorIyBydW4gdGltZSBzZWFyY2ggcGF0aCBvZiBzaGFyZWQgbGlicmFyaWVzIGluIGFuIGV4ZWN1dGFibGUuCisjCisjICAgQ29weXJpZ2h0IDE5OTYtMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICBUYWtlbiBmcm9tIEdOVSBsaWJ0b29sLCAyMDAxCisjICAgT3JpZ2luYWxseSBieSBHb3Jkb24gTWF0emlna2VpdCA8Z29yZEBnbnUuYWkubWl0LmVkdT4sIDE5OTYKKyMKKyMgICBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcworIyAgIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAorIyAgIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorIworIyBUaGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIHRvIHRoaXMgZmlsZSBpcyB0aGUgY2Fub25pY2FsIGhvc3Qgc3BlY2lmaWNhdGlvbiwKKyMgICAgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLU9QRVJBVElOR19TWVNURU0KKyMgb3IKKyMgICAgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLUtFUk5FTC1PUEVSQVRJTkdfU1lTVEVNCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgQ0MsIEdDQywgTERGTEFHUywgTEQsIHdpdGhfZ251X2xkCisjIHNob3VsZCBiZSBzZXQgYnkgdGhlIGNhbGxlci4KKyMKKyMgVGhlIHNldCBvZiBkZWZpbmVkIHZhcmlhYmxlcyBpcyBhdCB0aGUgZW5kIG9mIHRoaXMgc2NyaXB0LgorCisjIEtub3duIGxpbWl0YXRpb25zOgorIyAtIE9uIElSSVggNi41IHdpdGggQ0M9ImNjIiwgdGhlIHJ1biB0aW1lIHNlYXJjaCBwYXRjaCBtdXN0IG5vdCBiZSBsb25nZXIKKyMgICB0aGFuIDI1NiBieXRlcywgb3RoZXJ3aXNlIHRoZSBjb21waWxlciBkcml2ZXIgd2lsbCBkdW1wIGNvcmUuIFRoZSBvbmx5CisjICAga25vd24gd29ya2Fyb3VuZCBpcyB0byBjaG9vc2Ugc2hvcnRlciBkaXJlY3RvcnkgbmFtZXMgZm9yIHRoZSBidWlsZAorIyAgIGRpcmVjdG9yeSBhbmQvb3IgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCisKKyMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhICcuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorIyB3aGljaCBuZWVkcyAnLmxpYicpLgorbGliZXh0PWEKK3NocmV4dD0uc28KKworaG9zdD0iJDEiCitob3N0X2NwdT1gZWNobyAiJGhvc3QiIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDEvJ2AKK2hvc3RfdmVuZG9yPWBlY2hvICIkaG9zdCIgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYAoraG9zdF9vcz1gZWNobyAiJGhvc3QiIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKKworIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIF9MVF9DQ19CQVNFTkFNRS4KKworZm9yIGNjX3RlbXAgaW4gJENDIiI7IGRvCisgIGNhc2UgJGNjX3RlbXAgaW4KKyAgICBjb21waWxlIHwgKltcXC9dY29tcGlsZSB8IGNjYWNoZSB8ICpbXFwvXWNjYWNoZSApIDs7CisgICAgZGlzdGNjIHwgKltcXC9dZGlzdGNjIHwgcHVyaWZ5IHwgKltcXC9dcHVyaWZ5ICkgOzsKKyAgICBcLSopIDs7CisgICAgKikgYnJlYWs7OworICBlc2FjCitkb25lCitjY19iYXNlbmFtZT1gZWNobyAiJGNjX3RlbXAiIHwgc2VkIC1lICdzJV4uKi8lJSdgCisKKyMgQ29kZSB0YWtlbiBmcm9tIGxpYnRvb2wubTQncyBfTFRfQ09NUElMRVJfUElDLgorCit3bD0KK2lmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgIHdsPSctV2wsJworZWxzZQorICBjYXNlICIkaG9zdF9vcyIgaW4KKyAgICBhaXgqKQorICAgICAgd2w9Jy1XbCwnCisgICAgICA7OworICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBwdzMyKiB8IG9zMiogfCBjZWdjYyopCisgICAgICA7OworICAgIGhwdXg5KiB8IGhwdXgxMCogfCBocHV4MTEqKQorICAgICAgd2w9Jy1XbCwnCisgICAgICA7OworICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICB3bD0nLVdsLCcKKyAgICAgIDs7CisgICAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQorICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgICAgZWNjKikKKyAgICAgICAgICB3bD0nLVdsLCcKKyAgICAgICAgICA7OworICAgICAgICBpY2MqIHwgaWZvcnQqKQorICAgICAgICAgIHdsPSctV2wsJworICAgICAgICAgIDs7CisgICAgICAgIGxmOTUqKQorICAgICAgICAgIHdsPSctV2wsJworICAgICAgICAgIDs7CisgICAgICAgIG5hZ2ZvciopCisgICAgICAgICAgd2w9Jy1XbCwtV2wsLCcKKyAgICAgICAgICA7OworICAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAgd2w9Jy1XbCwnCisgICAgICAgICAgOzsKKyAgICAgICAgY2NjKikKKyAgICAgICAgICB3bD0nLVdsLCcKKyAgICAgICAgICA7OworICAgICAgICB4bCogfCBiZ3hsKiB8IGJnZiogfCBtcGl4bCopCisgICAgICAgICAgd2w9Jy1XbCwnCisgICAgICAgICAgOzsKKyAgICAgICAgY29tbykKKyAgICAgICAgICB3bD0nLWxvcHQ9JworICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCisgICAgICAgICAgICAqU3VuXCBGKiB8ICpTdW4qRm9ydHJhbiopCisgICAgICAgICAgICAgIHdsPQorICAgICAgICAgICAgICA7OworICAgICAgICAgICAgKlN1blwgQyopCisgICAgICAgICAgICAgIHdsPSctV2wsJworICAgICAgICAgICAgICA7OworICAgICAgICAgIGVzYWMKKyAgICAgICAgICA7OworICAgICAgZXNhYworICAgICAgOzsKKyAgICBuZXdzb3M2KQorICAgICAgOzsKKyAgICAqbnRvKiB8ICpxbngqKQorICAgICAgOzsKKyAgICBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCisgICAgICB3bD0nLVdsLCcKKyAgICAgIDs7CisgICAgcmRvcyopCisgICAgICA7OworICAgIHNvbGFyaXMqKQorICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQorICAgICAgICAgIHdsPSctUW9wdGlvbiBsZCAnCisgICAgICAgICAgOzsKKyAgICAgICAgKikKKyAgICAgICAgICB3bD0nLVdsLCcKKyAgICAgICAgICA7OworICAgICAgZXNhYworICAgICAgOzsKKyAgICBzdW5vczQqKQorICAgICAgd2w9Jy1Rb3B0aW9uIGxkICcKKyAgICAgIDs7CisgICAgc3lzdjQgfCBzeXN2NC4ydXcyKiB8IHN5c3Y0LjMqKQorICAgICAgd2w9Jy1XbCwnCisgICAgICA7OworICAgIHN5c3Y0Kk1QKikKKyAgICAgIDs7CisgICAgc3lzdjUqIHwgdW5peHdhcmUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KiB8IE9wZW5VTklYKikKKyAgICAgIHdsPSctV2wsJworICAgICAgOzsKKyAgICB1bmljb3MqKQorICAgICAgd2w9Jy1XbCwnCisgICAgICA7OworICAgIHV0czQqKQorICAgICAgOzsKKyAgZXNhYworZmkKKworIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIF9MVF9MSU5LRVJfU0hMSUJTLgorCitoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQoraGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0KK2hhcmRjb2RlX2RpcmVjdD1ubworaGFyZGNvZGVfbWludXNfTD1ubworCitjYXNlICIkaG9zdF9vcyIgaW4KKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICMgRklYTUU6IHRoZSBNU1ZDKysgcG9ydCBoYXNuJ3QgYmVlbiB0ZXN0ZWQgaW4gYSBsb29vb25nIHRpbWUKKyAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZworICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisgICAgICB3aXRoX2dudV9sZD1ubworICAgIGZpCisgICAgOzsKKyAgaW50ZXJpeCopCisgICAgIyB3ZSBqdXN0IGhvcGUvYXNzdW1lIHRoaXMgaXMgZ2NjIGFuZCBub3QgYzg5ICg9IE1TVkMrKykKKyAgICB3aXRoX2dudV9sZD15ZXMKKyAgICA7OworICBvcGVuYnNkKikKKyAgICB3aXRoX2dudV9sZD1ubworICAgIDs7Citlc2FjCisKK2xkX3NobGlicz15ZXMKK2lmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKyAgIyBTZXQgc29tZSBkZWZhdWx0cyBmb3IgR05VIGxkIHdpdGggc2hhcmVkIGxpYnJhcnkgc3VwcG9ydC4gVGhlc2UKKyAgIyBhcmUgcmVzZXQgbGF0ZXIgaWYgc2hhcmVkIGxpYnJhcmllcyBhcmUgbm90IHN1cHBvcnRlZC4gUHV0dGluZyB0aGVtCisgICMgaGVyZSBhbGxvd3MgdGhlbSB0byBiZSBvdmVycmlkZGVuIGlmIG5lY2Vzc2FyeS4KKyAgIyBVbmxpa2UgbGlidG9vbCwgd2UgdXNlIC1ycGF0aCBoZXJlLCBub3QgLS1ycGF0aCwgc2luY2UgdGhlIGRvY3VtZW50ZWQKKyAgIyBvcHRpb24gb2YgR05VIGxkIGlzIGNhbGxlZCAtcnBhdGgsIG5vdCAtLXJwYXRoLgorICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgIGNhc2UgIiRob3N0X29zIiBpbgorICAgIGFpeFszLTldKikKKyAgICAgICMgT24gQUlYL1BQQywgdGhlIEdOVSBsaW5rZXIgaXMgdmVyeSBicm9rZW4KKyAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgIT0gaWE2NDsgdGhlbgorICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgIGZpCisgICAgICA7OworICAgIGFtaWdhb3MqKQorICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgorICAgICAgICBwb3dlcnBjKQorICAgICAgICAgIDs7CisgICAgICAgIG02OGspCisgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisgICAgYmVvcyopCisgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgOgorICAgICAgZWxzZQorICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgIGZpCisgICAgICA7OworICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCisgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgOgorICAgICAgZWxzZQorICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgIGZpCisgICAgICA7OworICAgIGhhaWt1KikKKyAgICAgIDs7CisgICAgaW50ZXJpeFszLTldKikKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubworICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKyAgICAgIDs7CisgICAgZ251KiB8IGxpbnV4KiB8IHRwZiogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCisgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgOgorICAgICAgZWxzZQorICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgIGZpCisgICAgICA7OworICAgIG5ldGJzZCopCisgICAgICA7OworICAgIHNvbGFyaXMqKQorICAgICAgaWYgJExEIC12IDI+JjEgfCBncmVwICdCRkQgMlwuOCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgbGRfc2hsaWJzPW5vCisgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICA6CisgICAgICBlbHNlCisgICAgICAgIGxkX3NobGlicz1ubworICAgICAgZmkKKyAgICAgIDs7CisgICAgc3lzdjUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KiB8IHVuaXh3YXJlKiB8IE9wZW5VTklYKikKKyAgICAgIGNhc2UgYCRMRCAtdiAyPiYxYCBpbgorICAgICAgICAqXCBbMDFdLiogfCAqXCAyLlswLTldLiogfCAqXCAyLjFbMC01XS4qKQorICAgICAgICAgIGxkX3NobGlicz1ubworICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSdgdGVzdCAteiAiJFNDT0FCU1BBVEgiICYmIGVjaG8gJHt3bH0tcnBhdGgsJGxpYmRpcmAnCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbGRfc2hsaWJzPW5vCisgICAgICAgICAgZmkKKyAgICAgICAgICA7OworICAgICAgZXNhYworICAgICAgOzsKKyAgICBzdW5vczQqKQorICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgOzsKKyAgICAqKQorICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgIDoKKyAgICAgIGVsc2UKKyAgICAgICAgbGRfc2hsaWJzPW5vCisgICAgICBmaQorICAgICAgOzsKKyAgZXNhYworICBpZiB0ZXN0ICIkbGRfc2hsaWJzIiA9IG5vOyB0aGVuCisgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KKyAgZmkKK2Vsc2UKKyAgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgYWl4MyopCisgICAgICAjIE5vdGU6IHRoaXMgbGlua2VyIGhhcmRjb2RlcyB0aGUgZGlyZWN0b3JpZXMgaW4gTElCUEFUSCBpZiB0aGVyZQorICAgICAgIyBhcmUgbm8gZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGJ5IC1MLgorICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgICMgTmVpdGhlciBkaXJlY3QgaGFyZGNvZGluZyBub3Igc3RhdGljIGxpbmtpbmcgaXMgc3VwcG9ydGVkIHdpdGggYQorICAgICAgICAjIGJyb2tlbiBjb2xsZWN0Mi4KKyAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXVuc3VwcG9ydGVkCisgICAgICBmaQorICAgICAgOzsKKyAgICBhaXhbNC05XSopCisgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgICAgICAjIE9uIElBNjQsIHRoZSBsaW5rZXIgZG9lcyBydW4gdGltZSBsaW5raW5nIGJ5IGRlZmF1bHQsIHNvIHdlIGRvbid0CisgICAgICAgICMgaGF2ZSB0byBkbyBhbnl0aGluZyBzcGVjaWFsLgorICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCisgICAgICBlbHNlCisgICAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KKyAgICAgICAgIyBUZXN0IGlmIHdlIGFyZSB0cnlpbmcgdG8gdXNlIHJ1biB0aW1lIGxpbmtpbmcgb3Igbm9ybWFsCisgICAgICAgICMgQUlYIHN0eWxlIGxpbmtpbmcuIElmIC1icnRsIGlzIHNvbWV3aGVyZSBpbiBMREZMQUdTLCB3ZQorICAgICAgICAjIG5lZWQgdG8gZG8gcnVudGltZSBsaW5raW5nLgorICAgICAgICBjYXNlICRob3N0X29zIGluIGFpeDQuWzIzXXxhaXg0LlsyM10uKnxhaXhbNS05XSopCisgICAgICAgICAgZm9yIGxkX2ZsYWcgaW4gJExERkxBR1M7IGRvCisgICAgICAgICAgICBpZiAodGVzdCAkbGRfZmxhZyA9ICItYnJ0bCIgfHwgdGVzdCAkbGRfZmxhZyA9ICItV2wsLWJydGwiKTsgdGhlbgorICAgICAgICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPXllcworICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZmkKKyAgICAgICAgICBkb25lCisgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgZmkKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JzonCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgICBjYXNlICRob3N0X29zIGluIGFpeDQuWzAxMl18YWl4NC5bMDEyXS4qKQorICAgICAgICAgIGNvbGxlY3QybmFtZT1gJHtDQ30gLXByaW50LXByb2ctbmFtZT1jb2xsZWN0MmAKKyAgICAgICAgICBpZiB0ZXN0IC1mICIkY29sbGVjdDJuYW1lIiAmJiBcCisgICAgICAgICAgICBzdHJpbmdzICIkY29sbGVjdDJuYW1lIiB8IGdyZXAgcmVzb2x2ZV9saWJfbmFtZSA+L2Rldi9udWxsCisgICAgICAgICAgdGhlbgorICAgICAgICAgICAgIyBXZSBoYXZlIHJld29ya2VkIGNvbGxlY3QyCisgICAgICAgICAgICA6CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgIyBXZSBoYXZlIG9sZCBjb2xsZWN0MgorICAgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXVuc3VwcG9ydGVkCisgICAgICAgICAgICBoYXJkY29kZV9taW51c19MPXllcworICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0KKyAgICAgICAgICBmaQorICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgIGZpCisgICAgICAjIEJlZ2luIF9MVF9BQ19TWVNfTElCUEFUSF9BSVguCisgICAgICBlY2hvICdpbnQgbWFpbiAoKSB7IHJldHVybiAwOyB9JyA+IGNvbmZ0ZXN0LmMKKyAgICAgICR7Q0N9ICR7TERGTEFHU30gY29uZnRlc3QuYyAtbyBjb25mdGVzdAorICAgICAgYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QgMj4vZGV2L251bGwgfCBzZWQgLW4gLWUgJy9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsgL14wLyB7IHMvXjAgICpcKC4qXCkkL1wxLzsgcDsgfQorfSdgCisgICAgICBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCisgICAgICAgIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0IDI+L2Rldi9udWxsIHwgc2VkIC1uIC1lICcvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7IC9eMC8geyBzL14wICAqXCguKlwpJC9cMS87IHA7IH0KK30nYAorICAgICAgZmkKKyAgICAgIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKyAgICAgICAgYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiCisgICAgICBmaQorICAgICAgcm0gLWYgY29uZnRlc3QuYyBjb25mdGVzdAorICAgICAgIyBFbmQgX0xUX0FDX1NZU19MSUJQQVRIX0FJWC4KKyAgICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgorICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorICAgICAgZWxzZQorICAgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LVIgJGxpYmRpcjovdXNyL2xpYjovbGliJworICAgICAgICBlbHNlCisgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgICA7OworICAgIGFtaWdhb3MqKQorICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgorICAgICAgICBwb3dlcnBjKQorICAgICAgICAgIDs7CisgICAgICAgIG02OGspCisgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisgICAgYnNkaVs0NV0qKQorICAgICAgOzsKKyAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZworICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworICAgICAgbGliZXh0PWxpYgorICAgICAgOzsKKyAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vCisgICAgICBpZiB7IGNhc2UgJGNjX2Jhc2VuYW1lIGluIGlmb3J0KikgdHJ1ZTs7ICopIHRlc3QgIiRHQ0MiID0geWVzOzsgZXNhYzsgfTsgdGhlbgorICAgICAgICA6CisgICAgICBlbHNlCisgICAgICAgIGxkX3NobGlicz1ubworICAgICAgZmkKKyAgICAgIDs7CisgICAgZGd1eCopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCisgICAgICA7OworICAgIGZyZWVic2QyLlswMV0qKQorICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKKyAgICAgIDs7CisgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgOzsKKyAgICBocHV4OSopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfStiICR7d2x9JGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgorICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKKyAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgorICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKKyAgICAgIDs7CisgICAgaHB1eDEwKikKKyAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfStiICR7d2x9JGxpYmRpcicKKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06CisgICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKKyAgICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCisgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICBmaQorICAgICAgOzsKKyAgICBocHV4MTEqKQorICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJworICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKKyAgICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KKyAgICAgICAgICBocHBhKjY0KnxpYTY0KikKKyAgICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubworICAgICAgICAgICAgOzsKKyAgICAgICAgICAqKQorICAgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKKyAgICAgICAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgorICAgICAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKKyAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgIGZpCisgICAgICA7OworICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKKyAgICAgIDs7CisgICAgbmV0YnNkKikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgIDs7CisgICAgbmV3c29zNikKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgorICAgICAgOzsKKyAgICAqbnRvKiB8ICpxbngqKQorICAgICAgOzsKKyAgICBvcGVuYnNkKikKKyAgICAgIGlmIHRlc3QgLWYgL3Vzci9saWJleGVjL2xkLnNvOyB0aGVuCisgICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgZ3JlcCBfX0VMRl9fYCIgfHwgdGVzdCAiJGhvc3Rfb3MtJGhvc3RfY3B1IiA9ICJvcGVuYnNkMi44LXBvd2VycGMiOyB0aGVuCisgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKyAgICAgICAgZWxzZQorICAgICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgorICAgICAgICAgICAgb3BlbmJzZFswMV0uKiB8IG9wZW5ic2QyLlswLTddIHwgb3BlbmJzZDIuWzAtN10uKikKKyAgICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgICAgICAgICA7OworICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKyAgICAgICAgICAgICAgOzsKKyAgICAgICAgICBlc2FjCisgICAgICAgIGZpCisgICAgICBlbHNlCisgICAgICAgIGxkX3NobGlicz1ubworICAgICAgZmkKKyAgICAgIDs7CisgICAgb3MyKikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICA7OworICAgIG9zZjMqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06CisgICAgICA7OworICAgIG9zZjQqIHwgb3NmNSopCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICBlbHNlCisgICAgICAgICMgQm90aCBjYyBhbmQgY3h4IGNvbXBpbGVyIHN1cHBvcnQgLXJwYXRoIGRpcmVjdGx5CisgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1ycGF0aCAkbGliZGlyJworICAgICAgZmkKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgorICAgICAgOzsKKyAgICBzb2xhcmlzKikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgIDs7CisgICAgc3Vub3M0KikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICA7OworICAgIHN5c3Y0KQorICAgICAgY2FzZSAkaG9zdF92ZW5kb3IgaW4KKyAgICAgICAgc25pKQorICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMgIyBpcyB0aGlzIHJlYWxseSB0cnVlPz8/CisgICAgICAgICAgOzsKKyAgICAgICAgc2llbWVucykKKyAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8KKyAgICAgICAgICA7OworICAgICAgICBtb3Rvcm9sYSkKKyAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8gI01vdG9yb2xhIG1hbnVhbCBzYXlzIHllcywgYnV0IG15IHRlc3RzIHNheSB0aGV5IGxpZQorICAgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgICA7OworICAgIHN5c3Y0LjMqKQorICAgICAgOzsKKyAgICBzeXN2NCpNUCopCisgICAgICBpZiB0ZXN0IC1kIC91c3IvbmVjOyB0aGVuCisgICAgICAgIGxkX3NobGlicz15ZXMKKyAgICAgIGZpCisgICAgICA7OworICAgIHN5c3Y0KnV3MiogfCBzeXN2NU9wZW5VTklYKiB8IHN5c3Y1VW5peFdhcmU3LlswMV0uWzEwXSogfCB1bml4d2FyZTcqIHwgc2NvMy4ydjUuMC5bMDI0XSopCisgICAgICA7OworICAgIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSdgdGVzdCAteiAiJFNDT0FCU1BBVEgiICYmIGVjaG8gJHt3bH0tUiwkbGliZGlyYCcKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JzonCisgICAgICA7OworICAgIHV0czQqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgOzsKKyAgICAqKQorICAgICAgbGRfc2hsaWJzPW5vCisgICAgICA7OworICBlc2FjCitmaQorCisjIENoZWNrIGR5bmFtaWMgbGlua2VyIGNoYXJhY3RlcmlzdGljcworIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIF9MVF9TWVNfRFlOQU1JQ19MSU5LRVIuCisjIFVubGlrZSBsaWJ0b29sLm00LCBoZXJlIHdlIGRvbid0IGNhcmUgYWJvdXQgX2FsbF8gbmFtZXMgb2YgdGhlIGxpYnJhcnksIGJ1dAorIyBvbmx5IGFib3V0IHRoZSBvbmUgdGhlIGxpbmtlciBmaW5kcyB3aGVuIHBhc3NlZCAtbE5BTUUuIFRoaXMgaXMgdGhlIGxhc3QKKyMgZWxlbWVudCBvZiBsaWJyYXJ5X25hbWVzX3NwZWMgaW4gbGlidG9vbC5tNCwgb3IgcG9zc2libHkgdHdvIG9mIHRoZW0gaWYgdGhlCisjIGxpbmtlciBoYXMgc3BlY2lhbCBzZWFyY2ggcnVsZXMuCitsaWJyYXJ5X25hbWVzX3NwZWM9ICAgICAgIyB0aGUgbGFzdCBlbGVtZW50IG9mIGxpYnJhcnlfbmFtZXNfc3BlYyBpbiBsaWJ0b29sLm00CitsaWJuYW1lX3NwZWM9J2xpYiRuYW1lJworY2FzZSAiJGhvc3Rfb3MiIGluCisgIGFpeDMqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuYScKKyAgICA7OworICBhaXhbNC05XSopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgYW1pZ2FvcyopCisgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgorICAgICAgcG93ZXJwYyopCisgICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JyA7OworICAgICAgbTY4aykKKyAgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5hJyA7OworICAgIGVzYWMKKyAgICA7OworICBiZW9zKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBic2RpWzQ1XSopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgIHNocmV4dD0uZGxsCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYSAkbGlibmFtZS5saWInCisgICAgOzsKKyAgZGFyd2luKiB8IHJoYXBzb2R5KikKKyAgICBzaHJleHQ9LmR5bGliCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgZGd1eCopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgZnJlZWJzZFsyM10uKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCR2ZXJzdWZmaXgnCisgICAgOzsKKyAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGdudSopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgaGFpa3UqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGhwdXg5KiB8IGhwdXgxMCogfCBocHV4MTEqKQorICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgICBpYTY0KikKKyAgICAgICAgc2hyZXh0PS5zbworICAgICAgICA7OworICAgICAgaHBwYSo2NCopCisgICAgICAgIHNocmV4dD0uc2wKKyAgICAgICAgOzsKKyAgICAgICopCisgICAgICAgIHNocmV4dD0uc2wKKyAgICAgICAgOzsKKyAgICBlc2FjCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgaW50ZXJpeFszLTldKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIGNhc2UgIiRob3N0X29zIiBpbgorICAgICAgaXJpeDUqIHwgbm9uc3RvcHV4KikKKyAgICAgICAgbGlic3VmZj0gc2hsaWJzdWZmPQorICAgICAgICA7OworICAgICAgKikKKyAgICAgICAgY2FzZSAkTEQgaW4KKyAgICAgICAgICAqLTMyfCoiLTMyICJ8Ki1tZWxmMzJic21pcHwqIi1tZWxmMzJic21pcCAiKSBsaWJzdWZmPSBzaGxpYnN1ZmY9IDs7CisgICAgICAgICAgKi1uMzJ8KiItbjMyICJ8Ki1tZWxmMzJibWlwbjMyfCoiLW1lbGYzMmJtaXBuMzIgIikgbGlic3VmZj0zMiBzaGxpYnN1ZmY9TjMyIDs7CisgICAgICAgICAgKi02NHwqIi02NCAifCotbWVsZjY0Ym1pcHwqIi1tZWxmNjRibWlwICIpIGxpYnN1ZmY9NjQgc2hsaWJzdWZmPTY0IDs7CisgICAgICAgICAgKikgbGlic3VmZj0gc2hsaWJzdWZmPSA7OworICAgICAgICBlc2FjCisgICAgICAgIDs7CisgICAgZXNhYworICAgIDs7CisgIGxpbnV4Km9sZGxkKiB8IGxpbnV4KmFvdXQqIHwgbGludXgqY29mZiopCisgICAgOzsKKyAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGtuZXRic2QqLWdudSkKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBuZXRic2QqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIG5ld3NvczYpCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgKm50byogfCAqcW54KikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBvcGVuYnNkKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCR2ZXJzdWZmaXgnCisgICAgOzsKKyAgb3MyKikKKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworICAgIHNocmV4dD0uZGxsCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5hJworICAgIDs7CisgIG9zZjMqIHwgb3NmNCogfCBvc2Y1KikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICByZG9zKikKKyAgICA7OworICBzb2xhcmlzKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBzdW5vczQqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JHZlcnN1ZmZpeCcKKyAgICA7OworICBzeXN2NCB8IHN5c3Y0LjMqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIHN5c3Y0Kk1QKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqIHwgc3lzdjQqdXcyKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICB0cGYqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIHV0czQqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7Citlc2FjCisKK3NlZF9xdW90ZV9zdWJzdD0ncy9cKFsiYCRcXF1cKS9cXFwxL2cnCitlc2NhcGVkX3dsPWBlY2hvICJYJHdsIiB8IHNlZCAtZSAncy9eWC8vJyAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCitzaGxpYmV4dD1gZWNobyAiJHNocmV4dCIgfCBzZWQgLWUgJ3MsXlwuLCwnYAorZXNjYXBlZF9saWJuYW1lX3NwZWM9YGVjaG8gIlgkbGlibmFtZV9zcGVjIiB8IHNlZCAtZSAncy9eWC8vJyAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCitlc2NhcGVkX2xpYnJhcnlfbmFtZXNfc3BlYz1gZWNobyAiWCRsaWJyYXJ5X25hbWVzX3NwZWMiIHwgc2VkIC1lICdzL15YLy8nIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKK2VzY2FwZWRfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz1gZWNobyAiWCRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIiB8IHNlZCAtZSAncy9eWC8vJyAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisKK0xDX0FMTD1DIHNlZCAtZSAncy9eXChbYS16QS1aMC05X10qXCk9L2FjbF9jdl9cMT0vJyA8PEVPRgorCisjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCit3bD0iJGVzY2FwZWRfd2wiCisKKyMgU3RhdGljIGxpYnJhcnkgc3VmZml4IChub3JtYWxseSAiYSIpLgorbGliZXh0PSIkbGliZXh0IgorCisjIFNoYXJlZCBsaWJyYXJ5IHN1ZmZpeCAobm9ybWFsbHkgInNvIikuCitzaGxpYmV4dD0iJHNobGliZXh0IgorCisjIEZvcm1hdCBvZiBsaWJyYXJ5IG5hbWUgcHJlZml4LgorbGlibmFtZV9zcGVjPSIkZXNjYXBlZF9saWJuYW1lX3NwZWMiCisKKyMgTGlicmFyeSBuYW1lcyB0aGF0IHRoZSBsaW5rZXIgZmluZHMgd2hlbiBwYXNzZWQgLWxOQU1FLgorbGlicmFyeV9uYW1lc19zcGVjPSIkZXNjYXBlZF9saWJyYXJ5X25hbWVzX3NwZWMiCisKKyMgRmxhZyB0byBoYXJkY29kZSBcJGxpYmRpciBpbnRvIGEgYmluYXJ5IGR1cmluZyBsaW5raW5nLgorIyBUaGlzIG11c3Qgd29yayBldmVuIGlmIFwkbGliZGlyIGRvZXMgbm90IGV4aXN0LgoraGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0iJGVzY2FwZWRfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIKKworIyBXaGV0aGVyIHdlIG5lZWQgYSBzaW5nbGUgLXJwYXRoIGZsYWcgd2l0aCBhIHNlcGFyYXRlZCBhcmd1bWVudC4KK2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9IiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIgorCisjIFNldCB0byB5ZXMgaWYgdXNpbmcgRElSL2xpYk5BTUUuc28gZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUiBpbnRvIHRoZQorIyByZXN1bHRpbmcgYmluYXJ5LgoraGFyZGNvZGVfZGlyZWN0PSIkaGFyZGNvZGVfZGlyZWN0IgorCisjIFNldCB0byB5ZXMgaWYgdXNpbmcgdGhlIC1MRElSIGZsYWcgZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUiBpbnRvIHRoZQorIyByZXN1bHRpbmcgYmluYXJ5LgoraGFyZGNvZGVfbWludXNfTD0iJGhhcmRjb2RlX21pbnVzX0wiCisKK0VPRgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvcmVtb3ZlLXBvdGNkYXRlLnNpbiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL3JlbW92ZS1wb3RjZGF0ZS5zaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM3MGRmYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL3JlbW92ZS1wb3RjZGF0ZS5zaW4KQEAgLTAsMCArMSwyNSBAQAorIyBTZWQgc2NyaXB0IHRoYXQgcmVtb3ZlcyB0aGUgUE9ULUNyZWF0aW9uLURhdGUgbGluZSBpbiB0aGUgaGVhZGVyIGVudHJ5CisjIGZyb20gYSBQT1QgZmlsZS4KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAorIyBhcmUgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQKKyMgbm90aWNlIGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIG9mZmVyZWQgYXMtaXMsCisjIHdpdGhvdXQgYW55IHdhcnJhbnR5LgorIworIyBUaGUgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGUgZmlyc3QgYW5kIHRoZSBmb2xsb3dpbmcgb2NjdXJyZW5jZXMgb2YgdGhlCisjIHBhdHRlcm4gaXMgYWNoaWV2ZWQgYnkgbG9va2luZyBhdCB0aGUgaG9sZCBzcGFjZS4KKy9eIlBPVC1DcmVhdGlvbi1EYXRlOiAuKiIkL3sKK3gKKyMgVGVzdCBpZiB0aGUgaG9sZCBzcGFjZSBpcyBlbXB0eS4KK3MvUC9QLwordGEKKyMgWWVzIGl0IHdhcyBlbXB0eS4gRmlyc3Qgb2NjdXJyZW5jZS4gUmVtb3ZlIHRoZSBsaW5lLgorZworZAorYmIKKzphCisjIFRoZSBob2xkIHNwYWNlIHdhcyBub25lbXB0eS4gRm9sbG93aW5nIG9jY3VycmVuY2VzLiBEbyBub3RoaW5nLgoreAorOmIKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtbmF0aXZlXzAuMTkuOC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC1uYXRpdmVfMC4xOS44LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2ZmYxOTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC1uYXRpdmVfMC4xOS44LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIk1pbmltYWwgZ2V0dGV4dCBmb3Igc3VwcG9ydGluZyBuYXRpdmUgYXV0b2NvbmYvYXV0b21ha2UiCi1ERVNDUklQVElPTiA9ICJDb250YWlucyB0aGUgbTQgbWFjcm9zIHN1ZmZpY2llbnQgdG8gc3VwcG9ydCBidWlsZGluZyBcCi1hdXRvY29uZi9hdXRvbWFrZS4gVGhpcyBwcm92aWRlcyBhIHNpZ25pZmljYW50IGJ1aWxkIHRpbWUgc3BlZWR1cCBieSBcCi10aGUgcmVtb3ZhbCBvZiBnZXR0ZXh0LW5hdGl2ZSBmcm9tIG1vc3QgZGVwZW5kZW5jeSBjaGFpbnMgKG5vdyBvbmx5IFwKLW5lZWRlZCBmb3IgZ2V0dGV4dCBmb3IgdGhlIHRhcmdldCkuIgotU1JDX1VSSSA9ICJmaWxlOi8vYWNsb2NhbC50Z3ogXAotICAgICAgICAgICBmaWxlOi8vY29uZmlnLnJwYXRoIFwKLSAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLmluLmluIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1wb3RjZGF0ZS5zaW4gXAotICAgICAgICAgICBmaWxlOi8vQ09QWUlORyBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVBBVENILURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2ggXAotIgotCi1JTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgotSU5ISUJJVF9BVVRPVE9PTFNfREVQUyA9ICIxIgotCi1MSUNFTlNFID0gIkZTRi1VbmxpbWl0ZWQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00YmQwOTBhMjBiZmNkMWExOGYxZjc5ODM3YjVlM2U5MSIKLQotaW5oZXJpdCBuYXRpdmUKLQotUyA9ICIke1dPUktESVJ9IgotCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FjbG9jYWwvCi0JY3AgJHtXT1JLRElSfS8qLm00ICR7RH0ke2RhdGFkaXJ9L2FjbG9jYWwvCi0JaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvLwotCWNwICR7V09SS0RJUn0vY29uZmlnLnJwYXRoICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvCi0JY3AgJHtXT1JLRElSfS9NYWtlZmlsZS5pbi5pbiAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvLwotCWNwICR7V09SS0RJUn0vcmVtb3ZlLXBvdGNkYXRlLnNpbiAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvLwotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC1uYXRpdmVfMC4yMC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC1uYXRpdmVfMC4yMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNGRjYmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZV8wLjIwLjEuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJNaW5pbWFsIGdldHRleHQgZm9yIHN1cHBvcnRpbmcgbmF0aXZlIGF1dG9jb25mL2F1dG9tYWtlIgorREVTQ1JJUFRJT04gPSAiQ29udGFpbnMgdGhlIG00IG1hY3JvcyBzdWZmaWNpZW50IHRvIHN1cHBvcnQgYnVpbGRpbmcgXAorYXV0b2NvbmYvYXV0b21ha2UuIFRoaXMgcHJvdmlkZXMgYSBzaWduaWZpY2FudCBidWlsZCB0aW1lIHNwZWVkdXAgYnkgXAordGhlIHJlbW92YWwgb2YgZ2V0dGV4dC1uYXRpdmUgZnJvbSBtb3N0IGRlcGVuZGVuY3kgY2hhaW5zIChub3cgb25seSBcCituZWVkZWQgZm9yIGdldHRleHQgZm9yIHRoZSB0YXJnZXQpLiIKK1NSQ19VUkkgPSAiZmlsZTovL2FjbG9jYWwvIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZy5ycGF0aCBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5pbi5pbiBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtcG90Y2RhdGUuc2luIFwKKyAgICAgICAgICAgZmlsZTovL0NPUFlJTkcgXAorIgorCitJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgorSU5ISUJJVF9BVVRPVE9PTFNfREVQUyA9ICIxIgorCitMSUNFTlNFID0gIkZTRi1VbmxpbWl0ZWQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00YmQwOTBhMjBiZmNkMWExOGYxZjc5ODM3YjVlM2U5MSIKKworaW5oZXJpdCBuYXRpdmUKKworUyA9ICIke1dPUktESVJ9IgorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FjbG9jYWwvCisJY3AgJHtXT1JLRElSfS9hY2xvY2FsLyoubTQgJHtEfSR7ZGF0YWRpcn0vYWNsb2NhbC8KKwlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvcG8vCisJY3AgJHtXT1JLRElSfS9jb25maWcucnBhdGggJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC8KKwljcCAke1dPUktESVJ9L01ha2VmaWxlLmluLmluICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvcG8vCisJY3AgJHtXT1JLRElSfS9yZW1vdmUtcG90Y2RhdGUuc2luICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvcG8vCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dF8wLjE5LjguMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0XzAuMTkuOC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDEyMWFkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0XzAuMTkuOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTg4ICswLDAgQEAKLVNVTU1BUlkgPSAiVXRpbGl0aWVzIGFuZCBsaWJyYXJpZXMgZm9yIHByb2R1Y2luZyBtdWx0aS1saW5ndWFsIG1lc3NhZ2VzIgotREVTQ1JJUFRJT04gPSAiR05VIGdldHRleHQgaXMgYSBzZXQgb2YgdG9vbHMgdGhhdCBwcm92aWRlcyBhIGZyYW1ld29yayB0byBoZWxwIG90aGVyIHByb2dyYW1zIHByb2R1Y2UgbXVsdGktbGluZ3VhbCBtZXNzYWdlcy4gXAotVGhlc2UgdG9vbHMgaW5jbHVkZSBhIHNldCBvZiBjb252ZW50aW9ucyBhYm91dCBob3cgcHJvZ3JhbXMgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gc3VwcG9ydCBtZXNzYWdlIGNhdGFsb2dzLCBhIGRpcmVjdG9yeSBhbmQgZmlsZSBcCi1uYW1pbmcgb3JnYW5pemF0aW9uIGZvciB0aGUgbWVzc2FnZSBjYXRhbG9ncyB0aGVtc2VsdmVzLCBhIHJ1bnRpbWUgbGlicmFyeSBzdXBwb3J0aW5nIHRoZSByZXRyaWV2YWwgb2YgdHJhbnNsYXRlZCBtZXNzYWdlcywgYW5kIFwKLWEgZmV3IHN0YW5kLWFsb25lIHByb2dyYW1zIHRvIG1hc3NhZ2UgaW4gdmFyaW91cyB3YXlzIHRoZSBzZXRzIG9mIHRyYW5zbGF0YWJsZSBhbmQgYWxyZWFkeSB0cmFuc2xhdGVkIHN0cmluZ3MuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dldHRleHQvZ2V0dGV4dC5odG1sIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMLTIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotIyBCZWNhdXNlIHBvLWdyYW0tZ2VuLnkgaGFzIGJlZW4gbW9kaWZpZWQgYnkgZml4LUNWRS0yMDE4LTE4NzUxLnBhdGNoLAotIyBpdCByZXF1aXJlcyB5YWNjIHdoaWNoIHByb3ZpZGVkIGJ5IGJpc29uLW5hdGl2ZQotIyBQbGVhc2UgcmVtb3ZlIGJpc29uLW5hdGl2ZSBmcm9tIERFUEVORFMqIHdoZW4gbmV4dCB1cGdyYWRlCi1ERVBFTkRTID0gImJpc29uLW5hdGl2ZSBnZXR0ZXh0LW5hdGl2ZSB2aXJ0dWFsL2xpYmljb252IgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiYmlzb24tbmF0aXZlIGdldHRleHQtbWluaW1hbC1uYXRpdmUiCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmludGwgdmlydHVhbC9nZXR0ZXh0IgotUFJPVklERVNfY2xhc3MtbmF0aXZlID0gInZpcnR1YWwvZ2V0dGV4dC1uYXRpdmUiCi1SQ09ORkxJQ1RTXyR7UE59ID0gInByb3h5LWxpYmludGwiCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ2V0dGV4dC9nZXR0ZXh0LSR7UFZ9LnRhci5neiBcCi0JICAgZmlsZTovL3BhcmFsbGVsLnBhdGNoIFwKLQkgICBmaWxlOi8vYWRkLXdpdGgtYmlzb25sb2NhbGVkaXIucGF0Y2ggXAotCSAgIGZpbGU6Ly9jci1zdGF0ZW1lbnQuYy10aW1zb3J0LmgtZml4LWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoIFwKLQkgICBmaWxlOi8vdXNlLXBrZ2NvbmZpZy5wYXRjaCBcCi0JICAgZmlsZTovL2ZpeC1DVkUtMjAxOC0xODc1MS5wYXRjaCBcCi0JICAgZmlsZTovL3J1bi1wdGVzdCBcCi0JICAgZmlsZTovL3NlcmlhbC10ZXN0cy1jb25maWcucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTdlMDM0Y2Y4Y2U1YmE3M2EyOGZmNmMzYzA2MzgwOTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmY5NDJhZjBlNDM4Y2VkNGE4YjBlYTRiMGI2ZTBkNmQ2NTcxNTdjNWUyMzY0ZGU1N2JhYTI3OWMxYzEyNWM0MyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBwa2djb25maWcgcHRlc3QKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbGlzcGRpciBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1jc2hhcnAgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYXNwcmludGYgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtamF2YSBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uYXRpdmUtamF2YSBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1vcGVubXAgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtYWNsIFwKLSAgICAgICAgICAgICAgICAgLS13aXRob3V0LWVtYWNzIFwKLSAgICAgICAgICAgICAgICAgLS13aXRob3V0LWN2cyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aG91dC1naXQgXAotICAgICAgICAgICAgICAgICAtLWNhY2hlLWZpbGU9JHtCfS9jb25maWcuY2FjaGUgXAotICAgICAgICAgICAgICAgICIKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1iaXNvbmxvY2FsZWRpcj0ke2RhdGFkaXJ9L2xvY2FsZSBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJjcm9jbyBnbGliIGxpYnhtbCIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gIiIKLQotUEFDS0FHRUNPTkZJR1tjcm9jb10gPSAiLS13aXRob3V0LWluY2x1ZGVkLWxpYmNyb2NvLC0td2l0aC1pbmNsdWRlZC1saWJjcm9jbyxsaWJjcm9jbyIKLVBBQ0tBR0VDT05GSUdbZ2xpYl0gPSAiLS13aXRob3V0LWluY2x1ZGVkLWdsaWIsLS13aXRoLWluY2x1ZGVkLWdsaWIsZ2xpYi0yLjAiCi1QQUNLQUdFQ09ORklHW2xpYnhtbF0gPSAiLS13aXRob3V0LWluY2x1ZGVkLWxpYnhtbCwtLXdpdGgtaW5jbHVkZWQtbGlieG1sLGxpYnhtbDIiCi0jIE5lZWQgcGF0aHMgaGVyZSB0byBhdm9pZCBob3N0IGNvbnRhbWluYXRpb24gYnV0IHRoaXMgY2FuIGNhdXNlIFJQQVRIIHdhcm5pbmdzCi0jIG9yIHByb2JsZW1zIGlmICRsaWJkaXIgaXNuJ3QgJHByZWZpeC9saWIuCi1QQUNLQUdFQ09ORklHW2xpYnVuaXN0cmluZ10gPSAiLS13aXRoLWxpYnVuaXN0cmluZy1wcmVmaXg9JHtTVEFHSU5HX0xJQkRJUn0vLi4sLS13aXRoLWluY2x1ZGVkLWxpYnVuaXN0cmluZyxsaWJ1bmlzdHJpbmciCi1QQUNLQUdFQ09ORklHW21zZ2NhdC1jdXJzZXNdID0gIi0td2l0aC1saWJuY3Vyc2VzLXByZWZpeD0ke1NUQUdJTkdfTElCRElSfS8uLiwtLWRpc2FibGUtY3Vyc2VzLG5jdXJzZXMsIgotCi1hY3BhdGhzID0gJy1JICR7U30vZ2V0dGV4dC1ydW50aW1lL200IFwKLSAgICAgICAgICAgLUkgJHtTfS9nZXR0ZXh0LXRvb2xzL200JwotCi1kb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2wgKCkgewotCXJtIC1mICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcwotCXJtIC1mICR7RH0ke2luY2x1ZGVkaXJ9L2xpYmludGwuaAotCXJtIC1mICR7RH0ke2xpYmRpcn0vbGliaW50bC5sYQotfQotCi0jIHRoZXNlIGxhY2sgdGhlIC54IGJlaGluZCB0aGUgLnNvLCBidXQgc2hvdWxkbid0IGJlIGluIHRoZSAtZGV2IHBhY2thZ2UKLSMgT3RoZXJ3aXNlIHlvdSBnZXQgdGhlIGZvbGxvd2luZyByZXN1bHRzOgotIyA3LjRNICAgIGdsaWJjL2ltYWdlcy9lcDkzeHgvQW5nc3Ryb20tY29uc29sZS1pbWFnZS1nbGliYy1pcGstMjAwOC4xLXRlc3QtMjAwODAxMDQtZXA5M3h4LnJvb3Rmcy50YXIuZ3oKLSMgMjVNICAgICB1Y2xpYmMvaW1hZ2VzL2VwOTN4eC9BbmdzdHJvbS1jb25zb2xlLWltYWdlLXVjbGliYy1pcGstMjAwOC4xLXRlc3QtMjAwODAxMDQtZXA5M3h4LnJvb3Rmcy50YXIuZ3oKLSMgYmVjYXVzZSBnZXR0ZXh0IGRlcGVuZHMgb24gZ2V0dGV4dC1kZXYsIHdoaWNoIHB1bGxzIGluIG1vcmUgLWRldiBwYWNrYWdlczoKLSMgMTUyMjggICBLaUIgL2VwOTN4eC9saWJzdGRjKystZGV2XzQuMi4yLXIyX2VwOTN4eC5pcGsKLSMgMTMwMCAgICBLaUIgL2VwOTN4eC91Y2xpYmMtZGV2XzAuOS4yOS1yOF9lcDkzeHguaXBrCi0jIDE0MCAgICAgS2lCIC9hcm12NHQvZ2V0dGV4dC1kZXZfMC4xNC4xLXI2X2FybXY0dC5pcGsKLSMgNCAgICAgICBLaUIgL2VwOTN4eC9saWJnY2Mtcy1kZXZfNC4yLjItcjJfZXA5M3h4LmlwawotCi1QQUNLQUdFUyA9KyAibGliZ2V0dGV4dGxpYiBsaWJnZXR0ZXh0c3JjIgotRklMRVNfbGliZ2V0dGV4dGxpYiA9ICIke2xpYmRpcn0vbGliZ2V0dGV4dGxpYi0qLnNvKiIKLUZJTEVTX2xpYmdldHRleHRzcmMgPSAiJHtsaWJkaXJ9L2xpYmdldHRleHRzcmMtKi5zbyoiCi0KLVBBQ0tBR0VTID0rICJnZXR0ZXh0LXJ1bnRpbWUgZ2V0dGV4dC1ydW50aW1lLWRldiBnZXR0ZXh0LXJ1bnRpbWUtZG9jIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyR7QlBOfS8qIgotCi0jIFRoZSBpdHMvTWFrZWZpbGUuYW0gaGFzIGRlZmluZWQ6Ci0jIGl0c2RpciA9ICQocGtnZGF0YWRpcikkKFBBQ0tBR0VfU1VGRklYKS9pdHMKLSMgbm90IGl0c2RpciA9ICQocGtnZGF0YWRpciksIHNvIHVzZSB3aWxkY2FyZCB0byBtYXRjaCB0aGUgdmVyc2lvbi4KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyR7QlBOfS0qLyoiCi0KLUZJTEVTX2dldHRleHQtcnVudGltZSA9ICIke2JpbmRpcn0vZ2V0dGV4dCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L25nZXR0ZXh0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZW52c3Vic3QgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9nZXR0ZXh0LnNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliYXNwcmludGYuc28qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vR05VLkdldHRleHQuZGxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICIKLUZJTEVTX2dldHRleHQtcnVudGltZS1kZXYgKz0gIiR7bGliZGlyfS9saWJhc3ByaW50Zi5hIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2F1dG9zcHJpbnRmLmggXAotICAgICAgICAgICAgICAgICAgICAgIgotRklMRVNfZ2V0dGV4dC1ydW50aW1lLWRvYyA9ICIke21hbmRpcn0vbWFuMS9nZXR0ZXh0LiogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9uZ2V0dGV4dC4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvZW52c3Vic3QuKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xLy4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjMvKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9nZXR0ZXh0L2dldHRleHQuKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9nZXR0ZXh0L25nZXR0ZXh0LiogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vZ2V0dGV4dC9lbnZzdWJzdC4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2dldHRleHQvKi4zLmh0bWwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dldHRleHQvQUJPVVQtTkxTIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2dldHRleHQvY3NoYXJwZG9jLyogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vbGliYXNwcmludGYvYXV0b3NwcmludGYuaHRtbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aW5mb2Rpcn0vYXV0b3NwcmludGYuaW5mbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBybSAtZiAke0R9JHtsaWJkaXJ9L3ByZWxvYWRhYmxlX2xpYmludGwuc28KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLQlybSAke0R9JHtkYXRhZGlyfS9hY2xvY2FsLyoKLQlybSAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L2NvbmZpZy5ycGF0aAotCXJtICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4KLQlybSAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvL3JlbW92ZS1wb3RjZGF0ZS5zaW4KLQotICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L21zZ2ZtdCBcCi0gICAgICAgICAgICAgICAgR0VUVEVYVERBVEFESVI9IiR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ2V0dGV4dC0wLjE5LjgvIgotCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgICAgIGNkICR7Qn0vZ2V0dGV4dC10b29scy90ZXN0cy8KLSAgICAgICAgc2VkIC1pICcvXmJ1aWxkdGVzdC1URVNUUzogL2MgYnVpbGR0ZXN0LVRFU1RTOiAkKFRFU1RTKSAkKGNoZWNrX1BST0dSQU1TKScgTWFrZWZpbGUKLSAgICAgICAgb2VfcnVubWFrZSBidWlsZHRlc3QtVEVTVFMKLSAgICAgICAgY2QgLQotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotICAgIGlmIFsgJHtQVEVTVF9FTkFCTEVEfSA9ICIxIiBdOyB0aGVuCi0gICAgICAgIG1rZGlyIC1wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCi0gICAgICAgIG1rZGlyIC1wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3NyYwotICAgICAgICBta2RpciAtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9wbwotICAgICAgICBta2RpciAtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9taXNjCi0gICAgICAgIGNwIC1yZiAke1N9L2dldHRleHQtdG9vbHMvdGVzdHMvKiAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCi0gICAgICAgIGNwIC1yZiAke0J9L2dldHRleHQtdG9vbHMvdGVzdHMvLmxpYnMvKiAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCi0gICAgICAgIGNwIC1yZiAke0J9L2dldHRleHQtcnVudGltZS9pbnRsLy5saWJzL2xpYmdudWludGwuc28uOCogICAgICAgICAke0R9JHtsaWJkaXJ9LwotICAgICAgICBjcCAtcmYgJHtCfS9nZXR0ZXh0LXRvb2xzL3Rlc3RzL01ha2VmaWxlICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cwotICAgICAgICBzZWQgLWkgJy9eTWFrZWZpbGU6L2MgTWFrZWZpbGU6JyAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQotICAgICAgICBzZWQgLWkgLWUgJ3M6Q09ORklHX1NIRUxMPS4qOiYgTE9DQUxFX0ZSPSdmcl9GUi5pc284ODU5MScgTE9DQUxFX0ZSX1VURjg9J2ZyX0ZSLnV0ZjgnIExPQ0FMRV9KQT0namFfSlAuZXVjanAnOmcnIFwKLSAgICAgICAgICAgIC1lICdzOmxhbmctYyBsYW5nLWMrKzpsYW5nLWMrKzpnJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQotICAgICAgICBpbnN0YWxsICR7U30vZ2V0dGV4dC10b29scy9zcmMvbXNndW5mbXQudGNsICAgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKLSAgICAgICAgaW5zdGFsbCAke1N9L2dldHRleHQtdG9vbHMvc3JjL3Byb2plY3QtaWQgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCi0gICAgICAgIGluc3RhbGwgJHtCfS9nZXR0ZXh0LXJ1bnRpbWUvc3JjL2dldHRleHQuc2ggICAgICR7RH0ke1BURVNUX1BBVEh9L3NyYwotICAgICAgICBpbnN0YWxsICR7Qn0vZ2V0dGV4dC1ydW50aW1lL3NyYy9uZ2V0dGV4dCAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKLSAgICAgICAgaW5zdGFsbCAke0J9L2dldHRleHQtcnVudGltZS9zcmMvZW52c3Vic3QgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCi0gICAgICAgIGluc3RhbGwgJHtCfS9nZXR0ZXh0LXJ1bnRpbWUvc3JjL2dldHRleHQgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3NyYwotICAgICAgICBpbnN0YWxsICR7Qn0vZ2V0dGV4dC10b29scy9zcmMvLmxpYnMvY2xkci1wbHVyYWxzICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCi0gICAgICAgIGluc3RhbGwgJHtTfS9nZXR0ZXh0LXRvb2xzL3BvL2dldHRleHQtdG9vbHMucG90ICR7RH0ke1BURVNUX1BBVEh9L3BvCi0gICAgICAgIGluc3RhbGwgJHtCfS9nZXR0ZXh0LXRvb2xzL21pc2MvKiAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9taXNjCi0gICAgICAgIGZpbmQgJHtEfSR7UFRFU1RfUEFUSH0vIC1uYW1lICIqLm8iIC1leGVjIHJtIHt9IFw7Ci0gICAgICAgIGNobW9kIDA3NTUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvbGFuZy12YWxhICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3BsdXJhbC0xICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3hnZXR0ZXh0LXRjbC00IFwKLSAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy94Z2V0dGV4dC12YWxhLTEgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3hnZXR0ZXh0LXBvLTIKLSAgICBmaQotfQotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKLVJERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIlwKLSAgICBnbGliYy1nY29udi1iaWc1IFwKLSAgICBnbGliYy1jaGFybWFwLWJpZzUgXAotICAgIGdsaWJjLWdjb252LWNwMTI1MSBcCi0gICAgZ2xpYmMtY2hhcm1hcC1jcDEyNTEgXAotICAgIGdsaWJjLWNoYXJtYXAtaXNvLTg4NTktOSBcCi0gICAgZ2xpYmMtZ2NvbnYtaXNvODg1OS05IFwKLSAgICBnbGliYy1jaGFybWFwLWtvaTgtciBcCi0gICAgZ2xpYmMtZ2NvbnYta29pOC1yIFwKLSAgICBnbGliYy1nY29udi1pc284ODU5LTIgXAotICAgIGdsaWJjLWNoYXJtYXAtaXNvLTg4NTktMiBcCi0gICAgZ2xpYmMtZ2NvbnYtZXVjLWtyIFwKLSAgICBnbGliYy1jaGFybWFwLWV1Yy1rciBcCi0iCi0KLUlOU0FORV9TS0lQXyR7UE59LXB0ZXN0ICs9ICJsZGZsYWdzIgotSU5TQU5FX1NLSVBfJHtQTn0tcHRlc3QgKz0gInJwYXRocyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHRfMC4yMC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHRfMC4yMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1NDkzZTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dF8wLjIwLjEuYmIKQEAgLTAsMCArMSwyMTIgQEAKK1NVTU1BUlkgPSAiVXRpbGl0aWVzIGFuZCBsaWJyYXJpZXMgZm9yIHByb2R1Y2luZyBtdWx0aS1saW5ndWFsIG1lc3NhZ2VzIgorREVTQ1JJUFRJT04gPSAiR05VIGdldHRleHQgaXMgYSBzZXQgb2YgdG9vbHMgdGhhdCBwcm92aWRlcyBhIGZyYW1ld29yayB0byBoZWxwIG90aGVyIHByb2dyYW1zIHByb2R1Y2UgbXVsdGktbGluZ3VhbCBtZXNzYWdlcy4gXAorVGhlc2UgdG9vbHMgaW5jbHVkZSBhIHNldCBvZiBjb252ZW50aW9ucyBhYm91dCBob3cgcHJvZ3JhbXMgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gc3VwcG9ydCBtZXNzYWdlIGNhdGFsb2dzLCBhIGRpcmVjdG9yeSBhbmQgZmlsZSBcCituYW1pbmcgb3JnYW5pemF0aW9uIGZvciB0aGUgbWVzc2FnZSBjYXRhbG9ncyB0aGVtc2VsdmVzLCBhIHJ1bnRpbWUgbGlicmFyeSBzdXBwb3J0aW5nIHRoZSByZXRyaWV2YWwgb2YgdHJhbnNsYXRlZCBtZXNzYWdlcywgYW5kIFwKK2EgZmV3IHN0YW5kLWFsb25lIHByb2dyYW1zIHRvIG1hc3NhZ2UgaW4gdmFyaW91cyB3YXlzIHRoZSBzZXRzIG9mIHRyYW5zbGF0YWJsZSBhbmQgYWxyZWFkeSB0cmFuc2xhdGVkIHN0cmluZ3MuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dldHRleHQvZ2V0dGV4dC5odG1sIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMLTIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNjc4OTU3YjBjOGU5NjRhYTZjNzBmZDc3NjQxYTcxZSIKKworIyBCZWNhdXNlIHBvLWdyYW0tZ2VuLnkgaGFzIGJlZW4gbW9kaWZpZWQgYnkgZml4LUNWRS0yMDE4LTE4NzUxLnBhdGNoLAorIyBpdCByZXF1aXJlcyB5YWNjIHdoaWNoIHByb3ZpZGVkIGJ5IGJpc29uLW5hdGl2ZQorIyBQbGVhc2UgcmVtb3ZlIGJpc29uLW5hdGl2ZSBmcm9tIERFUEVORFMqIHdoZW4gbmV4dCB1cGdyYWRlCitERVBFTkRTID0gImJpc29uLW5hdGl2ZSBnZXR0ZXh0LW5hdGl2ZSB2aXJ0dWFsL2xpYmljb252IgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiYmlzb24tbmF0aXZlIGdldHRleHQtbWluaW1hbC1uYXRpdmUiCitQUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmludGwgdmlydHVhbC9nZXR0ZXh0IgorUFJPVklERVNfY2xhc3MtbmF0aXZlID0gInZpcnR1YWwvZ2V0dGV4dC1uYXRpdmUiCitSQ09ORkxJQ1RTXyR7UE59ID0gInByb3h5LWxpYmludGwiCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ2V0dGV4dC9nZXR0ZXh0LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hZGQtd2l0aC1iaXNvbmxvY2FsZWRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jci1zdGF0ZW1lbnQuYy10aW1zb3J0LmgtZml4LWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3VzZS1wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3NlcmlhbC10ZXN0cy1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tc2dtZXJnZS1GaXgtYmVoYXZpb3VyLW9mLWZvci1tc2dmbXQtb24tUE8tZmlsZXMtd2l0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtYXV0b3BvaW50LTMtdW5zZXQtTUFLRUZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW5pdC1lbnYuaW4tZG8tbm90LWFkZC1DLUNYWC1wYXJhbWV0ZXJzLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImJiNWIwYzBjYWEwMjgxMDVmM2NhMTkwNWRkYzMwNmUyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2NDE1NjM0YzZlOGMzZmE4YjcxMzYyODc5ZWM3NTc1ZTI3ZGE0M2RhNTYyYzc5OGE4YTJmMjIzZTZlNDdmNWMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gcGtnY29uZmlnIHB0ZXN0CisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWxpc3BkaXIgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtY3NoYXJwIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmFzcHJpbnRmIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWphdmEgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbmF0aXZlLWphdmEgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtb3Blbm1wIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWFjbCBcCisgICAgICAgICAgICAgICAgIC0td2l0aG91dC1lbWFjcyBcCisgICAgICAgICAgICAgICAgIC0td2l0aG91dC1jdnMgXAorICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZ2l0IFwKKyAgICAgICAgICAgICAgICAgLS1jYWNoZS1maWxlPSR7Qn0vY29uZmlnLmNhY2hlIFwKKyAgICAgICAgICAgICAgICAiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtYmlzb25sb2NhbGVkaXI9JHtkYXRhZGlyfS9sb2NhbGUgXAorICAgICAgICAgICAgICAgICBndF9jdl9sb2NhbGVfZnJfdXRmOD1mcl9GUiBcCisgICAgICAgICAgICAgICAgIGd0X2N2X2xvY2FsZV9mcj1mcl9GUi5JU08tODg1OS0xIFwKKyAgICAgICAgICAgICAgICAgZ3RfY3ZfbG9jYWxlX2RlX3V0Zjg9ZGVfREUgXAorICAgICAgICAgICAgICAgICBndF9jdl9sb2NhbGVfZGU9ZGVfREUuSVNPLTg4NTktMSBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJjcm9jbyBnbGliIGxpYnhtbCIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gIiIKKworUEFDS0FHRUNPTkZJR1tjcm9jb10gPSAiLS13aXRob3V0LWluY2x1ZGVkLWxpYmNyb2NvLC0td2l0aC1pbmNsdWRlZC1saWJjcm9jbyxsaWJjcm9jbyIKK1BBQ0tBR0VDT05GSUdbZ2xpYl0gPSAiLS13aXRob3V0LWluY2x1ZGVkLWdsaWIsLS13aXRoLWluY2x1ZGVkLWdsaWIsZ2xpYi0yLjAiCitQQUNLQUdFQ09ORklHW2xpYnhtbF0gPSAiLS13aXRob3V0LWluY2x1ZGVkLWxpYnhtbCwtLXdpdGgtaW5jbHVkZWQtbGlieG1sLGxpYnhtbDIiCisjIE5lZWQgcGF0aHMgaGVyZSB0byBhdm9pZCBob3N0IGNvbnRhbWluYXRpb24gYnV0IHRoaXMgY2FuIGNhdXNlIFJQQVRIIHdhcm5pbmdzCisjIG9yIHByb2JsZW1zIGlmICRsaWJkaXIgaXNuJ3QgJHByZWZpeC9saWIuCitQQUNLQUdFQ09ORklHW2xpYnVuaXN0cmluZ10gPSAiLS13aXRoLWxpYnVuaXN0cmluZy1wcmVmaXg9JHtTVEFHSU5HX0xJQkRJUn0vLi4sLS13aXRoLWluY2x1ZGVkLWxpYnVuaXN0cmluZyxsaWJ1bmlzdHJpbmciCitQQUNLQUdFQ09ORklHW21zZ2NhdC1jdXJzZXNdID0gIi0td2l0aC1saWJuY3Vyc2VzLXByZWZpeD0ke1NUQUdJTkdfTElCRElSfS8uLiwtLWRpc2FibGUtY3Vyc2VzLG5jdXJzZXMsIgorCithY3BhdGhzID0gJy1JICR7U30vZ2V0dGV4dC1ydW50aW1lL200IFwKKyAgICAgICAgICAgLUkgJHtTfS9nZXR0ZXh0LXRvb2xzL200JworCitkb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2wgKCkgeworCXJtIC1mICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcworCXJtIC1mICR7RH0ke2luY2x1ZGVkaXJ9L2xpYmludGwuaAorCXJtIC1mICR7RH0ke2xpYmRpcn0vbGliaW50bC5sYQorfQorCisjIHRoZXNlIGxhY2sgdGhlIC54IGJlaGluZCB0aGUgLnNvLCBidXQgc2hvdWxkbid0IGJlIGluIHRoZSAtZGV2IHBhY2thZ2UKKyMgT3RoZXJ3aXNlIHlvdSBnZXQgdGhlIGZvbGxvd2luZyByZXN1bHRzOgorIyA3LjRNICAgIGdsaWJjL2ltYWdlcy9lcDkzeHgvQW5nc3Ryb20tY29uc29sZS1pbWFnZS1nbGliYy1pcGstMjAwOC4xLXRlc3QtMjAwODAxMDQtZXA5M3h4LnJvb3Rmcy50YXIuZ3oKKyMgMjVNICAgICB1Y2xpYmMvaW1hZ2VzL2VwOTN4eC9BbmdzdHJvbS1jb25zb2xlLWltYWdlLXVjbGliYy1pcGstMjAwOC4xLXRlc3QtMjAwODAxMDQtZXA5M3h4LnJvb3Rmcy50YXIuZ3oKKyMgYmVjYXVzZSBnZXR0ZXh0IGRlcGVuZHMgb24gZ2V0dGV4dC1kZXYsIHdoaWNoIHB1bGxzIGluIG1vcmUgLWRldiBwYWNrYWdlczoKKyMgMTUyMjggICBLaUIgL2VwOTN4eC9saWJzdGRjKystZGV2XzQuMi4yLXIyX2VwOTN4eC5pcGsKKyMgMTMwMCAgICBLaUIgL2VwOTN4eC91Y2xpYmMtZGV2XzAuOS4yOS1yOF9lcDkzeHguaXBrCisjIDE0MCAgICAgS2lCIC9hcm12NHQvZ2V0dGV4dC1kZXZfMC4xNC4xLXI2X2FybXY0dC5pcGsKKyMgNCAgICAgICBLaUIgL2VwOTN4eC9saWJnY2Mtcy1kZXZfNC4yLjItcjJfZXA5M3h4LmlwaworCitQQUNLQUdFUyA9KyAibGliZ2V0dGV4dGxpYiBsaWJnZXR0ZXh0c3JjIgorRklMRVNfbGliZ2V0dGV4dGxpYiA9ICIke2xpYmRpcn0vbGliZ2V0dGV4dGxpYi0qLnNvKiIKK0ZJTEVTX2xpYmdldHRleHRzcmMgPSAiJHtsaWJkaXJ9L2xpYmdldHRleHRzcmMtKi5zbyoiCisKK1BBQ0tBR0VTID0rICJnZXR0ZXh0LXJ1bnRpbWUgZ2V0dGV4dC1ydW50aW1lLWRldiBnZXR0ZXh0LXJ1bnRpbWUtZG9jIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyR7QlBOfS8qIgorCisjIFRoZSBpdHMvTWFrZWZpbGUuYW0gaGFzIGRlZmluZWQ6CisjIGl0c2RpciA9ICQocGtnZGF0YWRpcikkKFBBQ0tBR0VfU1VGRklYKS9pdHMKKyMgbm90IGl0c2RpciA9ICQocGtnZGF0YWRpciksIHNvIHVzZSB3aWxkY2FyZCB0byBtYXRjaCB0aGUgdmVyc2lvbi4KK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyR7QlBOfS0qLyoiCisKK0ZJTEVTX2dldHRleHQtcnVudGltZSA9ICIke2JpbmRpcn0vZ2V0dGV4dCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L25nZXR0ZXh0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZW52c3Vic3QgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9nZXR0ZXh0LnNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliYXNwcmludGYuc28qIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vR05VLkdldHRleHQuZGxsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICIKK0ZJTEVTX2dldHRleHQtcnVudGltZS1kZXYgKz0gIiR7bGliZGlyfS9saWJhc3ByaW50Zi5hIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2F1dG9zcHJpbnRmLmggXAorICAgICAgICAgICAgICAgICAgICAgIgorRklMRVNfZ2V0dGV4dC1ydW50aW1lLWRvYyA9ICIke21hbmRpcn0vbWFuMS9nZXR0ZXh0LiogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9uZ2V0dGV4dC4qIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvZW52c3Vic3QuKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xLy4qIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjMvKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9nZXR0ZXh0L2dldHRleHQuKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9nZXR0ZXh0L25nZXR0ZXh0LiogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vZ2V0dGV4dC9lbnZzdWJzdC4qIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2dldHRleHQvKi4zLmh0bWwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dldHRleHQvQUJPVVQtTkxTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2dldHRleHQvY3NoYXJwZG9jLyogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vbGliYXNwcmludGYvYXV0b3NwcmludGYuaHRtbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aW5mb2Rpcn0vYXV0b3NwcmludGYuaW5mbyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBybSAtZiAke0R9JHtsaWJkaXJ9L3ByZWxvYWRhYmxlX2xpYmludGwuc28KK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKKwlybSAke0R9JHtkYXRhZGlyfS9hY2xvY2FsLyoKKwlybSAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L2NvbmZpZy5ycGF0aAorCXJtICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4KKwlybSAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvL3JlbW92ZS1wb3RjZGF0ZS5zaW4KKworICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L21zZ2ZtdCBcCisgICAgICAgICAgICAgICAgR0VUVEVYVERBVEFESVI9IiR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ2V0dGV4dC0wLjIwLyIKKworfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgICAgICBjZCAke0J9L2dldHRleHQtdG9vbHMvdGVzdHMvCisgICAgICAgIHNlZCAtaSAnL15idWlsZHRlc3QtVEVTVFM6IC9jIGJ1aWxkdGVzdC1URVNUUzogJChURVNUUykgJChjaGVja19QUk9HUkFNUyknIE1ha2VmaWxlCisgICAgICAgIG9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTCisgICAgICAgIGNkIC0KK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICBpZiBbICR7UFRFU1RfRU5BQkxFRH0gPSAiMSIgXTsgdGhlbgorICAgICAgICBta2RpciAtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgICAgICBta2RpciAtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKKyAgICAgICAgbWtkaXIgLXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vcG8KKyAgICAgICAgbWtkaXIgLXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vbWlzYworICAgICAgICBta2RpciAtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9pdHMKKyAgICAgICAgbWtkaXIgLXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3R5bGVzCisgICAgICAgIG1rZGlyIC1wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2dudWxpYi1saWIKKyAgICAgICAgbWtkaXIgLXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vZXhhbXBsZXMKKyAgICAgICAgY3AgLXJmICR7U30vZ2V0dGV4dC10b29scy9pdHMvKiAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vaXRzCisgICAgICAgIGNwIC1yZiAke1N9L2dldHRleHQtdG9vbHMvc3R5bGVzLyogICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3N0eWxlcworICAgICAgICBjcCAtcmYgJHtTfS9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvZ2V0dGV4dC5oICAke0R9JHtQVEVTVF9QQVRIfS9nbnVsaWItbGliCisgICAgICAgIGNwIC1yZiAke1N9L2dldHRleHQtdG9vbHMvZXhhbXBsZXMvaGVsbG8tYyAgICAgICR7RH0ke1BURVNUX1BBVEh9L2V4YW1wbGVzCisgICAgICAgIGNwIC1yZiAke1N9L2dldHRleHQtdG9vbHMvdGVzdHMvKiAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgICAgIGNwIC1yZiAke0J9L2dldHRleHQtdG9vbHMvdGVzdHMvLmxpYnMvKiAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgICAgIGNwIC1yZiAke0J9L2dldHRleHQtcnVudGltZS9pbnRsLy5saWJzL2xpYmdudWludGwuc28uOCogICAgICAgICAke0R9JHtsaWJkaXJ9LworICAgICAgICBjcCAtcmYgJHtCfS9nZXR0ZXh0LXRvb2xzL3Rlc3RzL01ha2VmaWxlICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgICAgICBjcCAtcmYgJHtCfS9nZXR0ZXh0LXRvb2xzL3Rlc3RzL2luaXQtZW52ICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgICAgICBzZWQgLWkgJy9eTWFrZWZpbGU6L2MgTWFrZWZpbGU6JyAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQorICAgICAgICBzZWQgLWkgLWUgJ3M6bGFuZy1jIGxhbmctYysrOmxhbmctYysrOmcnICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQorICAgICAgICBpbnN0YWxsICR7U30vZ2V0dGV4dC10b29scy9zcmMvbXNndW5mbXQudGNsICAgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKKyAgICAgICAgaW5zdGFsbCAke1N9L2dldHRleHQtdG9vbHMvc3JjL3Byb2plY3QtaWQgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCisgICAgICAgIGluc3RhbGwgJHtCfS9nZXR0ZXh0LXJ1bnRpbWUvc3JjL2dldHRleHQuc2ggICAgICR7RH0ke1BURVNUX1BBVEh9L3NyYworICAgICAgICBpbnN0YWxsICR7Qn0vZ2V0dGV4dC1ydW50aW1lL3NyYy9uZ2V0dGV4dCAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKKyAgICAgICAgaW5zdGFsbCAke0J9L2dldHRleHQtcnVudGltZS9zcmMvZW52c3Vic3QgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCisgICAgICAgIGluc3RhbGwgJHtCfS9nZXR0ZXh0LXJ1bnRpbWUvc3JjL2dldHRleHQgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3NyYworICAgICAgICBpbnN0YWxsICR7Qn0vZ2V0dGV4dC10b29scy9zcmMvLmxpYnMvY2xkci1wbHVyYWxzICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCisgICAgICAgIGluc3RhbGwgJHtTfS9nZXR0ZXh0LXRvb2xzL3BvL2dldHRleHQtdG9vbHMucG90ICR7RH0ke1BURVNUX1BBVEh9L3BvCisgICAgICAgIGluc3RhbGwgJHtCfS9nZXR0ZXh0LXRvb2xzL21pc2MvKiAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9taXNjCisgICAgICAgIGZpbmQgJHtEfSR7UFRFU1RfUEFUSH0vIC1uYW1lICIqLm8iIC1leGVjIHJtIHt9IFw7CisgICAgICAgIGNobW9kIDA3NTUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvbGFuZy12YWxhICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3BsdXJhbC0xICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3hnZXR0ZXh0LXRjbC00IFwKKyAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy94Z2V0dGV4dC12YWxhLTEgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3hnZXR0ZXh0LXBvLTIKKyAgICBmaQorfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIlwKKyAgICBnbGliYy1nY29udi1iaWc1IFwKKyAgICBnbGliYy1jaGFybWFwLWJpZzUgXAorICAgIGdsaWJjLWdjb252LWNwMTI1MSBcCisgICAgZ2xpYmMtY2hhcm1hcC1jcDEyNTEgXAorICAgIGdsaWJjLWNoYXJtYXAtaXNvLTg4NTktOSBcCisgICAgZ2xpYmMtZ2NvbnYtaXNvODg1OS05IFwKKyAgICBnbGliYy1jaGFybWFwLWtvaTgtciBcCisgICAgZ2xpYmMtZ2NvbnYta29pOC1yIFwKKyAgICBnbGliYy1nY29udi1pc284ODU5LTIgXAorICAgIGdsaWJjLWNoYXJtYXAtaXNvLTg4NTktMiBcCisgICAgZ2xpYmMtZ2NvbnYtaXNvODg1OS0xIFwKKyAgICBnbGliYy1jaGFybWFwLWlzby04ODU5LTEgXAorICAgIGdsaWJjLWdjb252LWV1Yy1rciBcCisgICAgZ2xpYmMtY2hhcm1hcC1ldWMta3IgXAorICAgIGdsaWJjLWdjb252LWV1Yy1qcCBcCisgICAgZ2xpYmMtY2hhcm1hcC1ldWMtanAgXAorICAgIGxvY2FsZS1iYXNlLWRlLWRlIFwKKyAgICBsb2NhbGUtYmFzZS1mci1mciBcCisiCisKK1JSRUNPTU1FTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIlwKKyAgICBsb2NhbGUtYmFzZS1kZS1kZS5pc28tODg1OS0xIFwKKyAgICBsb2NhbGUtYmFzZS1mci1mci5pc28tODg1OS0xIFwKKyIKKworSU5TQU5FX1NLSVBfJHtQTn0tcHRlc3QgKz0gImxkZmxhZ3MiCitJTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAicnBhdGhzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMDEtZ2lvLXRlc3RzLXJlc291cmNlcy5jLWNvbW1lbnQtb3V0LWEtYnVpbGQtaG9zdC1vbmx5LS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAwMS1naW8tdGVzdHMtcmVzb3VyY2VzLmMtY29tbWVudC1vdXQtYS1idWlsZC1ob3N0LW9ubHktLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkZmVmMTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMDEtZ2lvLXRlc3RzLXJlc291cmNlcy5jLWNvbW1lbnQtb3V0LWEtYnVpbGQtaG9zdC1vbmx5LS5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDczMDgwM2YyYmMzZjJmMWE3NGY0ZGI4MDlhMjI0MDY2ZTdlYWUxMTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgOCBKYW4gMjAyMCAxODoyMjo0NiArMDEwMAorU3ViamVjdDogW1BBVENIXSBnaW8vdGVzdHMvcmVzb3VyY2VzLmM6IGNvbW1lbnQgb3V0IGEgYnVpbGQgaG9zdC1vbmx5IHRlc3QKKworVGhpcyB0ZXN0IHJlcXVpcmVzIGJ1aWxkaW5nIHJlc291cmNlcyBpbiBhIHdheSB0aGF0IGlzCitub3QgY3Jvc3MtY29tcGF0aWJsZSAoaGFyZGNvZGVzIGxkIGFuZCBvYmpjb3B5KS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBnaW8vdGVzdHMvcmVzb3VyY2VzLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9naW8vdGVzdHMvcmVzb3VyY2VzLmMgYi9naW8vdGVzdHMvcmVzb3VyY2VzLmMKK2luZGV4IGM0NGQyMTQuLmUyODlhMDEgMTAwNjQ0CistLS0gYS9naW8vdGVzdHMvcmVzb3VyY2VzLmMKKysrKyBiL2dpby90ZXN0cy9yZXNvdXJjZXMuYworQEAgLTk5Myw3ICs5OTMsNyBAQCBtYWluIChpbnQgICBhcmdjLAorICAgZ190ZXN0X2FkZF9mdW5jICgiL3Jlc291cmNlL2F1dG9tYXRpYyIsIHRlc3RfcmVzb3VyY2VfYXV0b21hdGljKTsKKyAgIC8qIFRoaXMgb25seSB1c2VzIGF1dG9tYXRpYyByZXNvdXJjZXMgdG9vLCBzbyBpdCB0ZXN0cyB0aGUgY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycyAqLworICAgZ190ZXN0X2FkZF9mdW5jICgiL3Jlc291cmNlL21vZHVsZSIsIHRlc3RfcmVzb3VyY2VfbW9kdWxlKTsKKy0gIGdfdGVzdF9hZGRfZnVuYyAoIi9yZXNvdXJjZS9iaW5hcnktbGlua2VkIiwgdGVzdF9yZXNvdXJjZV9iaW5hcnlfbGlua2VkKTsKKysgIC8qIGdfdGVzdF9hZGRfZnVuYyAoIi9yZXNvdXJjZS9iaW5hcnktbGlua2VkIiwgdGVzdF9yZXNvdXJjZV9iaW5hcnlfbGlua2VkKTsgKi8KKyAjZW5kaWYKKyAgIGdfdGVzdF9hZGRfZnVuYyAoIi9yZXNvdXJjZS91cmkvcXVlcnktaW5mbyIsIHRlc3RfdXJpX3F1ZXJ5X2luZm8pOworICAgZ190ZXN0X2FkZF9mdW5jICgiL3Jlc291cmNlL3VyaS9maWxlIiwgdGVzdF91cmlfZmlsZSk7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMTEtR01haW5Db250ZXh0LUZpeC1HU291cmNlLWl0ZXJhdG9yLWlmLWl0ZXJhdGlvbi1jYW4tbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAxMS1HTWFpbkNvbnRleHQtRml4LUdTb3VyY2UtaXRlcmF0b3ItaWYtaXRlcmF0aW9uLWNhbi1tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3Yjc3ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMTEtR01haW5Db250ZXh0LUZpeC1HU291cmNlLWl0ZXJhdG9yLWlmLWl0ZXJhdGlvbi1jYW4tbS5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIGVmMmJlNDI5OThlM2ZjMTAyOTkwNTVhNWEwMWY3Yzc5MTUzODE3NGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/U2ViYXN0aWFuPTIwRHI9QzM9QjZnZT89IDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorRGF0ZTogTW9uLCAzIEZlYiAyMDIwIDE1OjM4OjI4ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEdNYWluQ29udGV4dCAtIEZpeCBHU291cmNlIGl0ZXJhdG9yIGlmIGl0ZXJhdGlvbiBjYW4gbW9kaWZ5CisgdGhlIGxpc3QKKworV2UgZmlyc3QgaGF2ZSB0byByZWYgdGhlIG5leHQgc291cmNlIGFuZCB0aGVuIHVucmVmIHRoZSBwcmV2aW91cyBvbmUuCitUaGlzIG1pZ2h0IGJlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGUgcHJldmlvdXMgc291cmNlLCBhbmQgZnJlZWluZyB0aGUKK3ByZXZpb3VzIHNvdXJjZSBtaWdodCB1bnJlZiBhbmQgZnJlZSB0aGUgbmV4dCBvbmUgd2hpY2ggd291bGQgdGhlbiBsZWF2ZQordXNlIHdpdGggYSBkYW5nbGluZyBwb2ludGVyIGhlcmUuCisKK0ZpeGVzIGh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbGliL2lzc3Vlcy8yMDMxCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbGliLy0vY29tbWl0L2IwNmM0OGRlNzU1NDYwN2ZmM2ZiNThkNmMwNTEwY2ZhNTA4OGU5MDldCisKKy0tLQorIGdsaWIvZ21haW4uYyB8IDggKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2xpYi9nbWFpbi5jIGIvZ2xpYi9nbWFpbi5jCitpbmRleCBhZjk3OWM4Li5hOWEyODdkIDEwMDY0NAorLS0tIGEvZ2xpYi9nbWFpbi5jCisrKysgYi9nbGliL2dtYWluLmMKK0BAIC05NjksMTMgKzk2OSwxNyBAQCBnX3NvdXJjZV9pdGVyX25leHQgKEdTb3VyY2VJdGVyICppdGVyLCBHU291cmNlICoqc291cmNlKQorICAgICogR1NvdXJjZUxpc3QgdG8gYmUgcmVtb3ZlZCBmcm9tIHNvdXJjZV9saXN0cyAoaWYgaXRlci0+c291cmNlIGlzCisgICAgKiB0aGUgb25seSBzb3VyY2UgaW4gaXRzIGxpc3QsIGFuZCBpdCBpcyBkZXN0cm95ZWQpLCBzbyB3ZSBoYXZlIHRvCisgICAgKiBrZWVwIGl0IHJlZmZlZCB1bnRpbCBhZnRlciB3ZSBhZHZhbmNlIGl0ZXItPmN1cnJlbnRfbGlzdCwgYWJvdmUuCisrICAgKgorKyAgICogQWxzbyB3ZSBmaXJzdCBoYXZlIHRvIHJlZiB0aGUgbmV4dCBzb3VyY2UgYmVmb3JlIHVucmVmZmluZyB0aGUKKysgICAqIHByZXZpb3VzIG9uZSBhcyB1bnJlZmZpbmcgdGhlIHByZXZpb3VzIHNvdXJjZSBjYW4gcG90ZW50aWFsbHkKKysgICAqIGZyZWUgdGhlIG5leHQgb25lLgorICAgICovCisrICBpZiAobmV4dF9zb3VyY2UgJiYgaXRlci0+bWF5X21vZGlmeSkKKysgICAgZ19zb3VyY2VfcmVmIChuZXh0X3NvdXJjZSk7CisKKyAgIGlmIChpdGVyLT5zb3VyY2UgJiYgaXRlci0+bWF5X21vZGlmeSkKKyAgICAgZ19zb3VyY2VfdW5yZWZfaW50ZXJuYWwgKGl0ZXItPnNvdXJjZSwgaXRlci0+Y29udGV4dCwgVFJVRSk7CisgICBpdGVyLT5zb3VyY2UgPSBuZXh0X3NvdXJjZTsKKy0gIGlmIChpdGVyLT5zb3VyY2UgJiYgaXRlci0+bWF5X21vZGlmeSkKKy0gICAgZ19zb3VyY2VfcmVmIChpdGVyLT5zb3VyY2UpOworCisgICAqc291cmNlID0gaXRlci0+c291cmNlOworICAgcmV0dXJuICpzb3VyY2UgIT0gTlVMTDsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAxMi1HTWFpbkNvbnRleHQtRml4LW1lbW9yeS1sZWFrcy1hbmQtbWVtb3J5LWNvcnJ1cHRpb24tLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDEyLUdNYWluQ29udGV4dC1GaXgtbWVtb3J5LWxlYWtzLWFuZC1tZW1vcnktY29ycnVwdGlvbi0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y5N2Q5ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAxMi1HTWFpbkNvbnRleHQtRml4LW1lbW9yeS1sZWFrcy1hbmQtbWVtb3J5LWNvcnJ1cHRpb24tLnBhdGNoCkBAIC0wLDAgKzEsMTA5IEBACitGcm9tIDYxMTQzMGEzMmE0NmQwZGM4MDZhODI5MTYxZTJkY2NmOWMwMTk2YTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/U2ViYXN0aWFuPTIwRHI9QzM9QjZnZT89IDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorRGF0ZTogTW9uLCAzIEZlYiAyMDIwIDE1OjM1OjUxICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEdNYWluQ29udGV4dCAtIEZpeCBtZW1vcnkgbGVha3MgYW5kIG1lbW9yeSBjb3JydXB0aW9uIHdoZW4KKyBmcmVlaW5nIHNvdXJjZXMgd2hpbGUgZnJlZWluZyBhIGNvbnRleHQKKworSW5zdGVhZCBvZiBkZXN0cm95aW5nIHNvdXJjZXMgZGlyZWN0bHkgd2hpbGUgZnJlZWluZyB0aGUgY29udGV4dCwgYW5kCitwb3RlbnRpYWxseSBmcmVlaW5nIHRoZW0gaWYgdGhpcyB3YXMgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZW0sIGNvbGxlY3QKK25ldyByZWZlcmVuY2VzIG9mIGFsbCBzb3VyY2VzIGluIGEgc2VwYXJhdGUgbGlzdCBiZWZvcmUgYW5kIGF0IHRoZSBzYW1lCit0aW1lIGludmFsaWRhdGUgdGhlaXIgY29udGV4dCBzbyB0aGF0IHRoZXkgY2FuJ3QgYWNjZXNzIGl0IGFueW1vcmUuIE9ubHkKK29uY2UgYWxsIHNvdXJjZXMgaGF2ZSB0aGVpciBjb250ZXh0IGludmFsaWRhdGVkLCBkZXN0cm95IHRoZW0gd2hpbGUKK3N0aWxsIGtlZXBpbmcgYSByZWZlcmVuY2UgdG8gdGhlbS4gT25jZSBhbGwgc291cmNlcyBhcmUgZGVzdHJveWVkIHdlIGdldAorcmlkIG9mIHRoZSBhZGRpdGlvbmFsIHJlZmVyZW5jZXMgYW5kIGZyZWUgdGhlbSBpZiBub3RoaW5nIGVsc2Uga2VlcHMgYQorcmVmZXJlbmNlIHRvIHRoZW0gYW55bW9yZS4KKworVGhpcyBmaXhlcyBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBieSAyNjA1NjU1OGJlIGluIDIwMTIuCisKK1RoZSBwcmV2aW91cyBjb2RlIHRoYXQgaW52YWxpZGF0ZWQgdGhlIGNvbnRleHQgb2YgZWFjaCBzb3VyY2UgYW5kIHRoZW4KK2Rlc3Ryb3llZCBpdCBiZWZvcmUgZ29pbmcgdG8gdGhlIG5leHQgc291cmNlIHdpdGhvdXQga2VlcGluZyBhbgorYWRkaXRpb25hbCByZWZlcmVuY2UgY2F1c2VkIG1lbW9yeSBsZWFrcyBvciBtZW1vcnkgY29ycnVwdGlvbiBkZXBlbmRpbmcKK29uIHRoZSBvcmRlciBvZiB0aGUgc291cmNlcyBpbiB0aGUgc291cmNlcyBsaXN0cy4KKworSWYgYSBzb3VyY2Ugd2FzIGRlc3Ryb3llZCBpdCBtaWdodCBoYXBwZW4gdGhhdCB0aGlzIHdhcyB0aGUgbGFzdAorcmVmZXJlbmNlIHRvIHRoaXMgc291cmNlLCBhbmQgaXQgd291bGQgdGhlbiBiZSBmcmVlZC4gVGhpcyB3b3VsZCBjYXVzZQordGhlIGZpbmFsaXplIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCwgd2hpY2ggbWlnaHQgZGVzdHJveSBhbmQgdW5yZWYKK2Fub3RoZXIgc291cmNlIGFuZCBwb3RlbnRpYWxseSBmcmVlIGl0LiBUaGlzIG90aGVyIHNvdXJjZSB3b3VsZCB0aGVuCitlaXRoZXIKKy0gZ28gdGhyb3VnaCB0aGUgbm9ybWFsIGZyZWUgbG9naWMgYW5kIGNoYW5nZSB0aGUgaW50ZXJuIGxpbmtlZCBsaXN0CisgIGJldHdlZW4gdGhlIHNvdXJjZXMsIHdoaWxlIG90aGVyIHNvdXJjZXMgdGhhdCBhcmUgdW5yZWZmZWQgYXMgcGFydCBvZgorICB0aGUgbWFpbiBjb250ZXh0IGZyZWVpbmcgd291bGQgbm90LiBBcyBzdWNoIHRoZSBsaXN0IHdvdWxkIGJlIGluIGFuCisgIGluY29uc2lzdGVudCBzdGF0ZSBhbmQgd2UgbWlnaHQgZGVyZWZlcmVuY2UgZnJlZWQgbWVtb3J5LgorLSBnbyB0aHJvdWdoIHRoZSBub3JtYWwgZGVzdHJveSBhbmQgZnJlZSBsb2dpYyBidXQgYmVjYXVzZSB0aGUgY29udGV4dAorICBwb2ludGVyIHdhcyBhbHJlYWR5IGludmFsaWRhdGVkIGl0IHdvdWxkIHNpbXBseSBtYXJrIHRoZSBzb3VyY2UgYXMKKyAgZGVzdHJveWVkIHdpdGhvdXQgYWN0dWFsbHkgcmVtb3ZpbmcgaXQgZnJvbSB0aGUgY29udGV4dC4gVGhpcyB3b3VsZAorICB0aGVuIGNhdXNlIGEgbWVtb3J5IGxlYWsgYmVjYXVzZSB0aGUgcmVmZXJlbmNlIG93bmVkIGJ5IHRoZSBjb250ZXh0IGlzCisgIG5vdCBmcmVlZC4KKworRml4ZXMgaHR0cHM6Ly9naXRodWIuY29tL2d0ay1ycy9nbGliL2lzc3Vlcy81ODMgd2hpbGUgc3RpbGwga2VlcGluZworaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTY2MTc2NyBmaXhlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dsaWIvLS9jb21taXQvYWEyMDE2N2Q0MTljNjQ5ZjM0ZmVkMDZhOTQ2Mzg5MGI0MWIxZWJhMF0KKworLS0tCisgZ2xpYi9nbWFpbi5jIHwgMzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2xpYi9nbWFpbi5jIGIvZ2xpYi9nbWFpbi5jCitpbmRleCBhOWEyODdkLi4xMGJhMmY4IDEwMDY0NAorLS0tIGEvZ2xpYi9nbWFpbi5jCisrKysgYi9nbGliL2dtYWluLmMKK0BAIC01MzgsNiArNTM4LDcgQEAgZ19tYWluX2NvbnRleHRfdW5yZWYgKEdNYWluQ29udGV4dCAqY29udGV4dCkKKyAgIEdTb3VyY2VJdGVyIGl0ZXI7CisgICBHU291cmNlICpzb3VyY2U7CisgICBHTGlzdCAqc2xfaXRlcjsKKysgIEdTTGlzdCAqc19pdGVyLCAqcmVtYWluaW5nX3NvdXJjZXMgPSBOVUxMOworICAgR1NvdXJjZUxpc3QgKmxpc3Q7CisgICBndWludCBpOworCitAQCAtNTU3LDEwICs1NTgsMzAgQEAgZ19tYWluX2NvbnRleHRfdW5yZWYgKEdNYWluQ29udGV4dCAqY29udGV4dCkKKworICAgLyogZ19zb3VyY2VfaXRlcl9uZXh0KCkgYXNzdW1lcyB0aGUgY29udGV4dCBpcyBsb2NrZWQuICovCisgICBMT0NLX0NPTlRFWFQgKGNvbnRleHQpOworLSAgZ19zb3VyY2VfaXRlcl9pbml0ICgmaXRlciwgY29udGV4dCwgVFJVRSk7CisrCisrICAvKiBGaXJzdCBjb2xsZWN0IGFsbCByZW1haW5pbmcgc291cmNlcyBmcm9tIHRoZSBzb3VyY2VzIGxpc3RzIGFuZCBzdG9yZSBhCisrICAgKiBuZXcgcmVmZXJlbmNlIGluIGEgc2VwYXJhdGUgbGlzdC4gQWxzbyBzZXQgdGhlIGNvbnRleHQgb2YgdGhlIHNvdXJjZXMKKysgICAqIHRvIE5VTEwgc28gdGhhdCB0aGV5IGNhbid0IGFjY2VzcyBhIHBhcnRpYWxseSBkZXN0cm95ZWQgY29udGV4dCBhbnltb3JlLgorKyAgICoKKysgICAqIFdlIGhhdmUgdG8gZG8gdGhpcyBmaXJzdCBzbyB0aGF0IHdlIGhhdmUgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIGFsbAorKyAgICogc291cmNlcyBhbmQgZGVzdHJveWluZyB0aGVtIGJlbG93IGRvZXMgbm90IGFsc28gZnJlZSB0aGVtLCBhbmQgc28gdGhhdAorKyAgICogbm9uZSBvZiB0aGUgc291cmNlcyBjYW4gYWNjZXNzIHRoZSBjb250ZXh0IGZyb20gdGhlaXIgZmluYWxpemUvZGlzcG9zZQorKyAgICogZnVuY3Rpb25zLiAqLworKyAgZ19zb3VyY2VfaXRlcl9pbml0ICgmaXRlciwgY29udGV4dCwgRkFMU0UpOworICAgd2hpbGUgKGdfc291cmNlX2l0ZXJfbmV4dCAoJml0ZXIsICZzb3VyY2UpKQorICAgICB7CisgICAgICAgc291cmNlLT5jb250ZXh0ID0gTlVMTDsKKysgICAgICByZW1haW5pbmdfc291cmNlcyA9IGdfc2xpc3RfcHJlcGVuZCAocmVtYWluaW5nX3NvdXJjZXMsIGdfc291cmNlX3JlZiAoc291cmNlKSk7CisrICAgIH0KKysgIGdfc291cmNlX2l0ZXJfY2xlYXIgKCZpdGVyKTsKKysKKysgIC8qIE5leHQgZGVzdHJveSBhbGwgc291cmNlcy4gQXMgd2Ugc3RpbGwgaG9sZCBhIHJlZmVyZW5jZSB0byBhbGwgb2YgdGhlbSwKKysgICAqIHRoaXMgd29uJ3QgY2F1c2UgYW55IG9mIHRoZW0gdG8gYmUgZnJlZWQgeWV0IGFuZCBlc3BlY2lhbGx5IHByZXZlbnRzIGFueQorKyAgICogc291cmNlIHRoYXQgdW5yZWZzIGFub3RoZXIgc291cmNlIGZyb20gaXRzIGZpbmFsaXplIGZ1bmN0aW9uIHRvIGJlIGZyZWVkLgorKyAgICovCisrICBmb3IgKHNfaXRlciA9IHJlbWFpbmluZ19zb3VyY2VzOyBzX2l0ZXI7IHNfaXRlciA9IHNfaXRlci0+bmV4dCkKKysgICAgeworKyAgICAgIHNvdXJjZSA9IHNfaXRlci0+ZGF0YTsKKyAgICAgICBnX3NvdXJjZV9kZXN0cm95X2ludGVybmFsIChzb3VyY2UsIGNvbnRleHQsIFRSVUUpOworICAgICB9CisgICBVTkxPQ0tfQ09OVEVYVCAoY29udGV4dCk7CitAQCAtNTg1LDYgKzYwNiwxOCBAQCBnX21haW5fY29udGV4dF91bnJlZiAoR01haW5Db250ZXh0ICpjb250ZXh0KQorICAgZ19jb25kX2NsZWFyICgmY29udGV4dC0+Y29uZCk7CisKKyAgIGdfZnJlZSAoY29udGV4dCk7CisrCisrICAvKiBBbmQgbm93IGZpbmFsbHkgZ2V0IHJpZCBvZiBvdXIgcmVmZXJlbmNlcyB0byB0aGUgc291cmNlcy4gVGhpcyB3aWxsIGNhdXNlCisrICAgKiB0aGVtIHRvIGJlIGZyZWVkIHVubGVzcyBzb21ldGhpbmcgZWxzZSBzdGlsbCBoYXMgYSByZWZlcmVuY2UgdG8gdGhlbS4gRHVlCisrICAgKiB0byBzZXR0aW5nIHRoZSBjb250ZXh0IHBvaW50ZXJzIGluIHRoZSBzb3VyY2VzIHRvIE5VTEwgYWJvdmUsIHRoaXMgd29uJ3QKKysgICAqIGV2ZXIgYWNjZXNzIHRoZSBjb250ZXh0IG9yIHRoZSBpbnRlcm5hbCBsaW5rZWQgbGlzdCBpbnNpZGUgdGhlIEdTb3VyY2UuCisrICAgKiBXZSBhbHJlYWR5IHJlbW92ZWQgdGhlIHNvdXJjZXMgY29tcGxldGVseSBmcm9tIHRoZSBjb250ZXh0IGFib3ZlLiAqLworKyAgZm9yIChzX2l0ZXIgPSByZW1haW5pbmdfc291cmNlczsgc19pdGVyOyBzX2l0ZXIgPSBzX2l0ZXItPm5leHQpCisrICAgIHsKKysgICAgICBzb3VyY2UgPSBzX2l0ZXItPmRhdGE7CisrICAgICAgZ19zb3VyY2VfdW5yZWZfaW50ZXJuYWwgKHNvdXJjZSwgTlVMTCwgRkFMU0UpOworKyAgICB9CisrICBnX3NsaXN0X2ZyZWUgKHJlbWFpbmluZ19zb3VyY2VzKTsKKyB9CisKKyAvKiBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBtYWlubG9vcC9vdmVyZmxvdyB0ZXN0LgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDEzLUdNYWluQ29udGV4dC1Nb3ZlLW11dGV4LXVubG9ja2luZy1pbi1kZXN0cnVjdG9yLXJpZ2gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMTMtR01haW5Db250ZXh0LU1vdmUtbXV0ZXgtdW5sb2NraW5nLWluLWRlc3RydWN0b3ItcmlnaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzllOWY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDEzLUdNYWluQ29udGV4dC1Nb3ZlLW11dGV4LXVubG9ja2luZy1pbi1kZXN0cnVjdG9yLXJpZ2gucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSAzZTlkODVmMWI3NWUyYjEwOTZkOTY0MzU2M2Q3ZDE3MzgwNzUyZmM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP1NlYmFzdGlhbj0yMERyPUMzPUI2Z2U/PSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KK0RhdGU6IFR1ZSwgMTEgRmViIDIwMjAgMDk6MzQ6MzggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gR01haW5Db250ZXh0IC0gTW92ZSBtdXRleCB1bmxvY2tpbmcgaW4gZGVzdHJ1Y3RvciByaWdodAorIGJlZm9yZSBmcmVlaW5nIHRoZSBtdXRleAorCitUaGlzIGRvZXMgbm90IGhhdmUgYW55IGJlaGF2aW91ciBjaGFuZ2VzIGJ1dCBpcyBjbGVhbmVyLiBUaGUgbXV0ZXggaXMKK29ubHkgdW5sb2NrZWQgbm93IGFmdGVyIGFsbCBvcGVyYXRpb25zIG9uIHRoZSBjb250ZXh0IGFyZSBkb25lIGFuZCByaWdodAorYmVmb3JlIGZyZWVpbmcgdGhlIG11dGV4IGFuZCB0aGUgY29udGV4dCBpdHNlbGYuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbGliLy0vY29tbWl0LzczMGE3NWZjOGU4MjcxYzM4ZmJkNTM2M2QxZjc3YTAwODc2YjlkZGNdCisKKy0tLQorIGdsaWIvZ21haW4uYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2dsaWIvZ21haW4uYyBiL2dsaWIvZ21haW4uYworaW5kZXggMTBiYTJmOC4uYjFkZjQ3MCAxMDA2NDQKKy0tLSBhL2dsaWIvZ21haW4uYworKysrIGIvZ2xpYi9nbWFpbi5jCitAQCAtNTg0LDcgKzU4NCw2IEBAIGdfbWFpbl9jb250ZXh0X3VucmVmIChHTWFpbkNvbnRleHQgKmNvbnRleHQpCisgICAgICAgc291cmNlID0gc19pdGVyLT5kYXRhOworICAgICAgIGdfc291cmNlX2Rlc3Ryb3lfaW50ZXJuYWwgKHNvdXJjZSwgY29udGV4dCwgVFJVRSk7CisgICAgIH0KKy0gIFVOTE9DS19DT05URVhUIChjb250ZXh0KTsKKworICAgZm9yIChzbF9pdGVyID0gY29udGV4dC0+c291cmNlX2xpc3RzOyBzbF9pdGVyOyBzbF9pdGVyID0gc2xfaXRlci0+bmV4dCkKKyAgICAgeworQEAgLTU5NSw2ICs1OTQsNyBAQCBnX21haW5fY29udGV4dF91bnJlZiAoR01haW5Db250ZXh0ICpjb250ZXh0KQorCisgICBnX2hhc2hfdGFibGVfZGVzdHJveSAoY29udGV4dC0+c291cmNlcyk7CisKKysgIFVOTE9DS19DT05URVhUIChjb250ZXh0KTsKKyAgIGdfbXV0ZXhfY2xlYXIgKCZjb250ZXh0LT5tdXRleCk7CisKKyAgIGdfcHRyX2FycmF5X2ZyZWUgKGNvbnRleHQtPnBlbmRpbmdfZGlzcGF0Y2hlcywgVFJVRSk7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvRW5hYmxlLW1vcmUtdGVzdHMtd2hpbGUtY3Jvc3MtY29tcGlsaW5nLnBhdGNoCmluZGV4IGZmMjYyOWYuLjQ4ODk5Y2UgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvRW5hYmxlLW1vcmUtdGVzdHMtd2hpbGUtY3Jvc3MtY29tcGlsaW5nLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvRW5hYmxlLW1vcmUtdGVzdHMtd2hpbGUtY3Jvc3MtY29tcGlsaW5nLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyM2NkMTU3MzUyYWM4YTUzZjk5MmRkYzZkNmQwMWNhYWRmMWM3OWJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwMDYxZDY2MDU3ZGZkN2U3MjY3NzcyZGY2MGIzNjQ3NGZiMTgwZWVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIERhdGU6IE1vbiwgOSBOb3YgMjAxNSAxMTowNzoyNyArMDIwMAogU3ViamVjdDogW1BBVENIXSBFbmFibGUgbW9yZSB0ZXN0cyB3aGlsZSBjcm9zcy1jb21waWxpbmcKQEAgLTExLDE0ICsxMSwxNCBAQAogU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIAogLS0tCi0gZ2lvL3Rlc3RzL21lc29uLmJ1aWxkIHwgMjYgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCisgZ2lvL3Rlc3RzL21lc29uLmJ1aWxkIHwgMjQgKysrKysrKysrKysrLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZ2lvL3Rlc3RzL21lc29uLmJ1aWxkIGIvZ2lvL3Rlc3RzL21lc29uLmJ1aWxkCi1pbmRleCA2NWY0M2UyLi4wMjhiMTk2IDEwMDY0NAoraW5kZXggMzgyZGZjYy4uYzE3MTcxNyAxMDA2NDQKIC0tLSBhL2dpby90ZXN0cy9tZXNvbi5idWlsZAogKysrIGIvZ2lvL3Rlc3RzL21lc29uLmJ1aWxkCi1AQCAtMTg1LDcgKzE4NSw3IEBAIGlmIGhvc3RfbWFjaGluZS5zeXN0ZW0oKSAhPSAnd2luZG93cycKK0BAIC0xOTEsNyArMTkxLDcgQEAgaWYgaG9zdF9tYWNoaW5lLnN5c3RlbSgpICE9ICd3aW5kb3dzJwogIAogICAgIyAgVGVzdCBwcm9ncmFtcyB0aGF0IG5lZWQgdG8gYnJpbmcgdXAgYSBzZXNzaW9uIGJ1cyAocmVxdWlyZXMgZGJ1cy1kYWVtb24pCiAgICBoYXZlX2RidXNfZGFlbW9uID0gZmluZF9wcm9ncmFtKCdkYnVzLWRhZW1vbicsIHJlcXVpcmVkIDogZmFsc2UpLmZvdW5kKCkKQEAgLTI3LDEyICsyNywxMSBAQAogICAgICBhbm5vdGF0ZV9hcmdzID0gWwogICAgICAgICctLWFubm90YXRlJywgJ29yZy5wcm9qZWN0LkJhcicsICdLZXkxJywgJ1ZhbHVlMScsCiAgICAgICAgJy0tYW5ub3RhdGUnLCAnb3JnLnByb2plY3QuQmFyJywgJ29yZy5ndGsuR0RCdXMuSW50ZXJuYWwnLCAnVmFsdWUyJywKLUBAIC00NTMsMTIgKzQ1MywxMyBAQCBpZiBpbnN0YWxsZWRfdGVzdHNfZW5hYmxlZAorQEAgLTQ2NSwxMiArNDY1LDEyIEBAIGlmIGluc3RhbGxlZF90ZXN0c19lbmFibGVkCiAgICBpbnN0YWxsX2RhdGEoJ3N0YXRpYy1saW5rLnB5JywgaW5zdGFsbF9kaXIgOiBpbnN0YWxsZWRfdGVzdHNfZXhlY2RpcikKICBlbmRpZgogIAogLWlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCi0rI2lmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCiAraWYgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKQogIAogICAgcGx1Z2luX3Jlc291cmNlc19jID0gY3VzdG9tX3RhcmdldCgncGx1Z2luLXJlc291cmNlcy5jJywKQEAgLTQzLDcgKzQyLDcgQEAKICAgICAgICAgICAgICAgICAnLS10YXJnZXQ9QE9VVFBVVEAnLAogICAgICAgICAgICAgICAgICctLXNvdXJjZWRpcj0nICsgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCiAgICAgICAgICAgICAgICAgJy0tZ2VuZXJhdGUtc291cmNlJywKLUBAIC00ODIsNyArNDgzLDcgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKK0BAIC00OTQsNyArNDk0LDcgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKICAgIHRlc3RfZ3Jlc291cmNlID0gY3VzdG9tX3RhcmdldCgndGVzdC5ncmVzb3VyY2UnLAogICAgICBpbnB1dCA6ICd0ZXN0LmdyZXNvdXJjZS54bWwnLAogICAgICBvdXRwdXQgOiAndGVzdC5ncmVzb3VyY2UnLApAQCAtNTIsNyArNTEsNyBAQAogICAgICAgICAgICAgICAgICctLXRhcmdldD1AT1VUUFVUQCcsCiAgICAgICAgICAgICAgICAgJy0tc291cmNlZGlyPScgKyBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKICAgICAgICAgICAgICAgICAnLS1zb3VyY2VkaXI9JyArIG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCi1AQCAtNDkzLDcgKzQ5NCw3IEBAIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCitAQCAtNTA1LDcgKzUwNSw3IEBAIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCiAgICB0ZXN0X3Jlc291cmNlczJfYyA9IGN1c3RvbV90YXJnZXQoJ3Rlc3RfcmVzb3VyY2VzMi5jJywKICAgICAgaW5wdXQgOiAndGVzdDMuZ3Jlc291cmNlLnhtbCcsCiAgICAgIG91dHB1dCA6ICd0ZXN0X3Jlc291cmNlczIuYycsCkBAIC02MSw3ICs2MCw3IEBACiAgICAgICAgICAgICAgICAgJy0tdGFyZ2V0PUBPVVRQVVRAJywKICAgICAgICAgICAgICAgICAnLS1zb3VyY2VkaXI9JyArIG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAogICAgICAgICAgICAgICAgICctLWdlbmVyYXRlJywKLUBAIC01MDQsNyArNTA1LDcgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKK0BAIC01MTYsNyArNTE2LDcgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKICAgIHRlc3RfcmVzb3VyY2VzMl9oID0gY3VzdG9tX3RhcmdldCgndGVzdF9yZXNvdXJjZXMyLmgnLAogICAgICBpbnB1dCA6ICd0ZXN0My5ncmVzb3VyY2UueG1sJywKICAgICAgb3V0cHV0IDogJ3Rlc3RfcmVzb3VyY2VzMi5oJywKQEAgLTcwLDcgKzY5LDcgQEAKICAgICAgICAgICAgICAgICAnLS10YXJnZXQ9QE9VVFBVVEAnLAogICAgICAgICAgICAgICAgICctLXNvdXJjZWRpcj0nICsgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCiAgICAgICAgICAgICAgICAgJy0tZ2VuZXJhdGUnLAotQEAgLTUxNiw3ICs1MTcsNyBAQCBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQorQEAgLTUyOCw3ICs1MjgsNyBAQCBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQogICAgICBpbnB1dCA6ICd0ZXN0Mi5ncmVzb3VyY2UueG1sJywKICAgICAgZGVwZW5kcyA6IGJpZ190ZXN0X3Jlc291cmNlLAogICAgICBvdXRwdXQgOiAndGVzdF9yZXNvdXJjZXMuYycsCkBAIC03OSw3ICs3OCw3IEBACiAgICAgICAgICAgICAgICAgJy0tdGFyZ2V0PUBPVVRQVVRAJywKICAgICAgICAgICAgICAgICAnLS1zb3VyY2VkaXI9JyArIG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAogICAgICAgICAgICAgICAgICctLXNvdXJjZWRpcj0nICsgbWVzb24uY3VycmVudF9idWlsZF9kaXIoKSwKLUBAIC01MjcsNyArNTI4LDcgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKK0BAIC01MzksNyArNTM5LDcgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKICAgIGRpZ2l0X3Rlc3RfcmVzb3VyY2VzX2MgPSBjdXN0b21fdGFyZ2V0KCdkaWdpdF90ZXN0X3Jlc291cmNlcy5jJywKICAgICAgaW5wdXQgOiAnMTExX2RpZ2l0X3Rlc3QuZ3Jlc291cmNlLnhtbCcsCiAgICAgIG91dHB1dCA6ICdkaWdpdF90ZXN0X3Jlc291cmNlcy5jJywKQEAgLTg4LDcgKzg3LDcgQEAKICAgICAgICAgICAgICAgICAnLS10YXJnZXQ9QE9VVFBVVEAnLAogICAgICAgICAgICAgICAgICctLXNvdXJjZWRpcj0nICsgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCiAgICAgICAgICAgICAgICAgJy0tc291cmNlZGlyPScgKyBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAotQEAgLTUzOCw3ICs1MzksNyBAQCBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQorQEAgLTU1MCw3ICs1NTAsNyBAQCBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQogICAgZGlnaXRfdGVzdF9yZXNvdXJjZXNfaCA9IGN1c3RvbV90YXJnZXQoJ2RpZ2l0X3Rlc3RfcmVzb3VyY2VzLmgnLAogICAgICBpbnB1dCA6ICcxMTFfZGlnaXRfdGVzdC5ncmVzb3VyY2UueG1sJywKICAgICAgb3V0cHV0IDogJ2RpZ2l0X3Rlc3RfcmVzb3VyY2VzLmgnLApAQCAtOTcsMTIgKzk2LDExIEBACiAgICAgICAgICAgICAgICAgJy0tdGFyZ2V0PUBPVVRQVVRAJywKICAgICAgICAgICAgICAgICAnLS1zb3VyY2VkaXI9JyArIG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAogICAgICAgICAgICAgICAgICctLWdlbmVyYXRlJywKLUBAIC01NjUsMTEgKzU2NiwxMiBAQCBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQotICAgIyBTdXBwb3J0IGZvciAtLWFkZC1zeW1ib2wgd2FzIGFkZGVkIHRvIExMVk0gb2JqY29weSBpbiAyMDE5Ci0gICAjIChodHRwczovL3Jldmlld3MubGx2bS5vcmcvRDU4MjM0KS4gRklYTUU6IFRoaXMgdGVzdCBjb3VsZCBiZSBlbmFibGVkIGZvcgorQEAgLTU3OSwxMSArNTc5LDExIEBAIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCiAgICAjIExMVk0gb25jZSB0aGF0IHN1cHBvcnQgaXMgaW4gYSBzdGFibGUgcmVsZWFzZS4KLS0gIGlmIGJ1aWxkX21hY2hpbmUuc3lzdGVtKCkgPT0gJ2xpbnV4JyBhbmQgY2MuZ2V0X2lkKCkgPT0gJ2djYycKLSsgICNpZiBidWlsZF9tYWNoaW5lLnN5c3RlbSgpID09ICdsaW51eCcgYW5kIGNjLmdldF9pZCgpID09ICdnY2MnCisgICBvYmpjb3B5ID0gZmluZF9wcm9ncmFtKCdvYmpjb3B5JywgcmVxdWlyZWQgOiBmYWxzZSkKKyAKKy0gIGlmIGJ1aWxkX21hY2hpbmUuc3lzdGVtKCkgPT0gJ2xpbnV4JyBhbmQgY2MuZ2V0X2lkKCkgPT0gJ2djYycgYW5kIG9iamNvcHkuZm91bmQoKQogKyAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkKICAgICAgdGVzdF9ncmVzb3VyY2VfYmluYXJ5ID0gY3VzdG9tX3RhcmdldCgndGVzdDUuZ3Jlc291cmNlJywKICAgICAgICBpbnB1dCA6ICd0ZXN0NS5ncmVzb3VyY2UueG1sJywKQEAgLTExMiw3ICsxMTAsNyBAQAogICAgICAgICAgICAgICAgICAgJy0tdGFyZ2V0PUBPVVRQVVRAJywKICAgICAgICAgICAgICAgICAgICctLXNvdXJjZWRpcj0nICsgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCiAgICAgICAgICAgICAgICAgICAnLS1zb3VyY2VkaXI9JyArIG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCi1AQCAtNTgxLDcgKzU4Myw3IEBAIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCitAQCAtNTk1LDcgKzU5NSw3IEBAIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCiAgICAgIHRlc3RfcmVzb3VyY2VzX2JpbmFyeV9jID0gY3VzdG9tX3RhcmdldCgndGVzdF9yZXNvdXJjZXNfYmluYXJ5LmMnLAogICAgICAgIGlucHV0IDogJ3Rlc3Q1LmdyZXNvdXJjZS54bWwnLAogICAgICAgIG91dHB1dCA6ICd0ZXN0X3Jlc291cmNlc19iaW5hcnkuYycsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2dsaWItbWVzb24uY3Jvc3MgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2dsaWItbWVzb24uY3Jvc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ZGY0MDAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9nbGliLW1lc29uLmNyb3NzCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1bcHJvcGVydGllc10KLWhhdmVfYzk5X3ZzbnByaW50ZiA9IHRydWUKLWhhdmVfYzk5X3NucHJpbnRmID0gdHJ1ZQotaGF2ZV91bml4OThfcHJpbnRmID0gdHJ1ZQotdmFfdmFsX2NvcHkgPSB0cnVlCi1ncm93aW5nX3N0YWNrID0gZmFsc2UKLQotW2JpbmFyaWVzXQotZW52ID0gIi91c3IvYmluL2VudiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvbWVzb24uY3Jvc3MuZC9jb21tb24gYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL21lc29uLmNyb3NzLmQvY29tbW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkN2M1ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL21lc29uLmNyb3NzLmQvY29tbW9uCkBAIC0wLDAgKzEsMyBAQAorW3Byb3BlcnRpZXNdCisjIE9uIGFsbCBrbm93biBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcyB0aGUgc3RhY2sgZ3Jvd3MgZG93bgorZ3Jvd2luZ19zdGFjayA9IGZhbHNlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL21lc29uLmNyb3NzLmQvY29tbW9uLWdsaWJjIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9tZXNvbi5jcm9zcy5kL2NvbW1vbi1nbGliYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDY0OGY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9tZXNvbi5jcm9zcy5kL2NvbW1vbi1nbGliYwpAQCAtMCwwICsxLDUgQEAKK1twcm9wZXJ0aWVzXQoraGF2ZV9jOTlfdnNucHJpbnRmID0gdHJ1ZQoraGF2ZV9jOTlfc25wcmludGYgPSB0cnVlCitoYXZlX3VuaXg5OF9wcmludGYgPSB0cnVlCit2YV92YWxfY29weSA9IHRydWUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvbWVzb24uY3Jvc3MuZC9jb21tb24tbGludXggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL21lc29uLmNyb3NzLmQvY29tbW9uLWxpbnV4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNTk2ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL21lc29uLmNyb3NzLmQvY29tbW9uLWxpbnV4CkBAIC0wLDAgKzEsNSBAQAorW3Byb3BlcnRpZXNdCitoYXZlX3Byb2Nfc2VsZl9jbWRsaW5lID0gdHJ1ZQorCitbYmluYXJpZXNdCitlbnYgPSAiL3Vzci9iaW4vZW52IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9tZXNvbi5jcm9zcy5kL2NvbW1vbi1taW5ndyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvbWVzb24uY3Jvc3MuZC9jb21tb24tbWluZ3cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVmOTExYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvbWVzb24uY3Jvc3MuZC9jb21tb24tbWluZ3cKQEAgLTAsMCArMSw2IEBACitbcHJvcGVydGllc10KK2hhdmVfYzk5X3ZzbnByaW50ZiA9IGZhbHNlCitoYXZlX2M5OV9zbnByaW50ZiA9IGZhbHNlCitoYXZlX3VuaXg5OF9wcmludGYgPSBmYWxzZQordmFfdmFsX2NvcHkgPSB0cnVlCitoYXZlX3Byb2Nfc2VsZl9jbWRsaW5lID0gZmFsc2UKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvbWVzb24uY3Jvc3MuZC9jb21tb24tbXVzbCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvbWVzb24uY3Jvc3MuZC9jb21tb24tbXVzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDQ5ZTUxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9tZXNvbi5jcm9zcy5kL2NvbW1vbi1tdXNsCkBAIC0wLDAgKzEsNiBAQAorW3Byb3BlcnRpZXNdCitoYXZlX2M5OV92c25wcmludGYgPSB0cnVlCitoYXZlX2M5OV9zbnByaW50ZiA9IHRydWUKK2hhdmVfdW5peDk4X3ByaW50ZiA9IHRydWUKK3ZhX3ZhbF9jb3B5ID0gdHJ1ZQoraGF2ZV9zdHJsY3B5ID0gdHJ1ZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9yZWxvY2F0ZS1tb2R1bGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9yZWxvY2F0ZS1tb2R1bGVzLnBhdGNoCmluZGV4IDdlOTkyNTguLmZjMzIwZGMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvcmVsb2NhdGUtbW9kdWxlcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL3JlbG9jYXRlLW1vZHVsZXMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDYzMjViZjRlOGEyZjU2OWM1NWM4ZTFhMzZiOTQzOWQzNTY2Zjk4ZjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDhjNjIzYWNkYmVhM2VjYzI4MTJiYmFhZmNmYzg5Mjc1OGZhOTc4ZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogRGF0ZTogRnJpLCAxMSBNYXIgMjAxNiAxNTozNTo1NSArMDAwMAogU3ViamVjdDogW1BBVENIXSBnbGliLTIuMDogcmVsb2NhdGUgdGhlIEdJTyBtb2R1bGUgZGlyZWN0b3J5IGZvciBuYXRpdmUgYnVpbGRzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvcnVuLXB0ZXN0CmluZGV4IGZjNTAwODIuLjdhMjMxYjUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvcnVuLXB0ZXN0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvcnVuLXB0ZXN0CkBAIC0xLDYgKzEsOSBAQAogIyEgL2Jpbi9zaAogCiBzZXQgLWV1eAoraWYgaWQgLXUgZ2xpYjItdGVzdDsgdGhlbgorICAgdXNlcmRlbCBnbGliMi10ZXN0CitmaQogdXNlcmFkZCBnbGliMi10ZXN0CiBzdSBnbGliMi10ZXN0IC1jICdnbm9tZS1kZXNrdG9wLXRlc3RpbmctcnVubmVyIGdsaWInCiB1c2VyZGVsIGdsaWIyLXRlc3QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjBfMi42Mi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjYyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3YTE1YTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjYyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1yZXF1aXJlIGdsaWIuaW5jCi0KLVBFID0gIjEiCi0KLVNIUlRfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L2dsaWIvJHtTSFJUX1ZFUn0vZ2xpYi0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LURBVEFESVJOQU1FLW9uLXVjbGliYy1MaW51eC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtdGhlLXdhcm5pbmctYWJvdXQtZGVwcmVjYXRlZC1wYXRocy1pbi1zY2hlbWFzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSW5zdGFsbC1naW8tcXVlcnltb2R1bGVzLWFzLWxpYmV4ZWNfUFJPR1JBTS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1pZ25vcmUtcmV0dXJuLXZhbHVlLW9mLXdyaXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtRG8tbm90LWhhcmRjb2RlLXB5dGhvbi1wYXRoLWludG8tdmFyaW91cy10b29scy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVNldC1ob3N0X21hY2hpbmUtY29ycmVjdGx5LXdoZW4tYnVpbGRpbmctd2l0aC1taW5ndzMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3Qtd3JpdGUtYmluZGlyLWludG8tcGtnLWNvbmZpZy1maWxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lc29uLVJ1bi1hdG9taWNzLXRlc3Qtb24tY2xhbmctYXMtd2VsbC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vcmVsb2NhdGUtbW9kdWxlcy5wYXRjaCIKLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZmlsZTovL2dsaWItbWVzb24uY3Jvc3MiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiZWQzYTcwMzk3YTAxOTk2NWVmYWMwYzQ5ZjljODE2NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2OTg4MjRhNDEzZjc2ZGYwMzk3MzljMmE3OGY0NWIxMDkzOWQ1MjZhZTc0OTViYWI0ZTY5NGU2NzMwZGViM2YxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjYyLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNjIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDk2MjM1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjYyLjQuYmIKQEAgLTAsMCArMSw1MyBAQAorcmVxdWlyZSBnbGliLmluYworCitQRSA9ICIxIgorCitTSFJUX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9nbGliLyR7U0hSVF9WRVJ9L2dsaWItJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1EQVRBRElSTkFNRS1vbi11Y2xpYmMtTGludXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vRW5hYmxlLW1vcmUtdGVzdHMtd2hpbGUtY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXRoZS13YXJuaW5nLWFib3V0LWRlcHJlY2F0ZWQtcGF0aHMtaW4tc2NoZW1hcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluc3RhbGwtZ2lvLXF1ZXJ5bW9kdWxlcy1hcy1saWJleGVjX1BST0dSQU0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtaWdub3JlLXJldHVybi12YWx1ZS1vZi13cml0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLURvLW5vdC1oYXJkY29kZS1weXRob24tcGF0aC1pbnRvLXZhcmlvdXMtdG9vbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1TZXQtaG9zdF9tYWNoaW5lLWNvcnJlY3RseS13aGVuLWJ1aWxkaW5nLXdpdGgtbWluZ3czLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXdyaXRlLWJpbmRpci1pbnRvLXBrZy1jb25maWctZmlsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tZXNvbi1SdW4tYXRvbWljcy10ZXN0LW9uLWNsYW5nLWFzLXdlbGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1naW8tdGVzdHMtcmVzb3VyY2VzLmMtY29tbWVudC1vdXQtYS1idWlsZC1ob3N0LW9ubHktLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtR01haW5Db250ZXh0LUZpeC1HU291cmNlLWl0ZXJhdG9yLWlmLWl0ZXJhdGlvbi1jYW4tbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEyLUdNYWluQ29udGV4dC1GaXgtbWVtb3J5LWxlYWtzLWFuZC1tZW1vcnktY29ycnVwdGlvbi0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMy1HTWFpbkNvbnRleHQtTW92ZS1tdXRleC11bmxvY2tpbmctaW4tZGVzdHJ1Y3Rvci1yaWdoLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9yZWxvY2F0ZS1tb2R1bGVzLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDUyMjM0ZWNiYTEyODkzMmJlZDkwYmJjMzU1M2JmZTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGM4NDAzMGQ3N2ZhOTcxMjEzNWRmYTgwMzZhZDY2MzkyNTY1NWFlOTViMWQxOTM5OWI2MjAwZTg2OTkyNWJiYyIKKworIyBGaW5kIGFueSBtZXNvbiBjcm9zcyBmaWxlcyBpbiBGSUxFU1BBVEggdGhhdCBhcmUgcmVsZXZhbnQgZm9yIHRoZSBjdXJyZW50CisjIGJ1aWxkICh1c2luZyBzaXRlaW5mbykgYW5kIGFkZCB0aGVtIHRvIEVYVFJBX09FTUVTT04uCitpbmhlcml0IHNpdGVpbmZvCitkZWYgZmluZF9tZXNvbl9jcm9zc19maWxlcyhkKToKKyAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmUnLCBkKToKKyAgICAgICAgcmV0dXJuICIiCisKKyAgICBjb3JlYmFzZSA9IGQuZ2V0VmFyKCJDT1JFQkFTRSIpCisgICAgaW1wb3J0IGNvbGxlY3Rpb25zCisgICAgc2l0ZWRhdGEgPSBzaXRlaW5mb19kYXRhKGQpCisgICAgIyBmaWxlbmFtZSAtPiBmb3VuZAorICAgIGZpbGVzID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKQorICAgIGZvciBwYXRoIGluIGQuZ2V0VmFyKCJGSUxFU1BBVEgiKS5zcGxpdCgiOiIpOgorICAgICAgICBmb3IgZWxlbWVudCBpbiBzaXRlZGF0YToKKyAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4ocGF0aCwgIm1lc29uLmNyb3NzLmQiLCBlbGVtZW50KSkKKyAgICAgICAgICAgIGZpbGVzW2ZpbGVuYW1lLnJlcGxhY2UoY29yZWJhc2UsICIke0NPUkVCQVNFfSIpXSA9IG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKQorCisgICAgaXRlbXMgPSBbIi0tY3Jvc3MtZmlsZT0iICsgayBmb3Igayx2IGluIGZpbGVzLml0ZW1zKCkgaWYgdl0KKyAgICBkLmFwcGVuZFZhcigiRVhUUkFfT0VNRVNPTiIsICIgIiArICIgIi5qb2luKGl0ZW1zKSkKKyAgICBpdGVtcyA9IFsiJXM6JXMiICUgKGssICJUcnVlIiBpZiB2IGVsc2UgIkZhbHNlIikgZm9yIGssdiBpbiBmaWxlcy5pdGVtcygpXQorICAgIGQuYXBwZW5kVmFyRmxhZygiZG9fY29uZmlndXJlIiwgImZpbGUtY2hlY2tzdW1zIiwgIiAiICsgIiAiLmpvaW4oaXRlbXMpKQorCitweXRob24gKCkgeworICAgIGZpbmRfbWVzb25fY3Jvc3NfZmlsZXMoZCkKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWIuaW5jCmluZGV4IGU4MTFiNDIuLjdlYmVkMGUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLmluYwpAQCAtNDksNyArNDksNiBAQAogUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLURpbnN0YWxsZWRfdGVzdHM9dHJ1ZSwtRGluc3RhbGxlZF90ZXN0cz1mYWxzZSxkYnVzIgogCiBFWFRSQV9PRU1FU09OID0gIi1EZHRyYWNlPWZhbHNlIC1EZmFtPWZhbHNlIC1Ec3lzdGVtdGFwPWZhbHNlIC1Ec2VsaW51eD1kaXNhYmxlZCIKLUVYVFJBX09FTUVTT05fYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgLS1jcm9zcy1maWxlICR7V09SS0RJUn0vZ2xpYi1tZXNvbi5jcm9zcyIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CiAJc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vZ2lvL2dkYnVzLTIuMC9jb2RlZ2VuL2dkYnVzLWNvZGVnZW4uaW4KQEAgLTU5LDEzICs1OCwxNSBAQAogICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dpbyBcCiAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9LypnaW8tcXVlcnltb2R1bGVzIFwKICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ2xpYi0yLjAvc2NoZW1hcyIKKworRklMRVNfJHtQTn0tdXRpbHMgKz0gIiR7YmluZGlyfS9nbGliLWdlbm1hcnNoYWwgXAorICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9nbGliLWdldHRleHRpemUgXAorICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9nbGliLW1rZW51bXMgXAorICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9nbGliLWNvbXBpbGUtcmVzb3VyY2VzIgorCiBGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9nbGliLTIuMC9pbmNsdWRlIFwKICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dpby9tb2R1bGVzL2xpYioke1NPTElCU0RFVn0gXAogICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ2lvL21vZHVsZXMvKi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9nbGliLWdlbm1hcnNoYWwgXAotICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ2xpYi1nZXR0ZXh0aXplIFwKLSAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2dsaWItbWtlbnVtcyBcCi0gICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9nbGliLWNvbXBpbGUtcmVzb3VyY2VzIFwKICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nbGliLTIuMC9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluIFwKICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nbGliLTIuMC9zY2hlbWFzL2dzY2hlbWEuZHRkIFwKICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nbGliLTIuMC92YWxncmluZC9nbGliLnN1cHAgXApAQCAtMTI3LDYgKzEyOCwxMSBAQAogCQkJcm0gJHtEfSR7ZGF0YWRpcn0vaW5zdGFsbGVkLXRlc3RzL2dsaWIvZ2RidXMtc2VyaWFsaXphdGlvbi50ZXN0CiAJCWZpCiAJZmkKKwlpZiBbIC1mICR7RH0ke2RhdGFkaXJ9L2luc3RhbGxlZC10ZXN0cy9nbGliL3N0YXRpYy1saW5rLnRlc3QgXTsgdGhlbgorICAgICAgICBpZiB0ZXN0ICJ4JHtNTFBSRUZJWH0iICE9ICJ4IjsgdGhlbgorICAgICAgICAgICAgICAgIG12ICR7RH0ke2RhdGFkaXJ9L2luc3RhbGxlZC10ZXN0cy9nbGliL3N0YXRpYy1saW5rLnRlc3QgJHtEfSR7ZGF0YWRpcn0vaW5zdGFsbGVkLXRlc3RzL2dsaWIvJHtNTFBSRUZJWH1zdGF0aWMtbGluay50ZXN0CisgICAgICAgIGZpCisJZmkKIH0KIAogIyBBcyB3ZSBkbyBub3QgYnVpbGQgcHl0aG9uMyBmb3Igd2luZG93cywgbWFrZXMgbm8gc2Vuc2UgdG8gc2hpcCB0aGUgc2NyaXB0IHRoYXQncyB1c2luZyBpdApAQCAtMTM5LDYgKzE0NSw4IEBACiAKIFJERVBFTkRTXyR7UE59LWNvZGVnZW4gKz0gIiR7Q09ERUdFTl9QWVRIT05fUkRFUEVORFN9IgogCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tdXRpbHMiCisKIFJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJcCiAgICAgICAgICAgICBjb3JldXRpbHMgXAogICAgICAgICAgICAgbGliZ2NjIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi1uZXR3b3JraW5nL2dsaWItbmV0d29ya2luZ18yLjYyLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItbmV0d29ya2luZy9nbGliLW5ldHdvcmtpbmdfMi42Mi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MWQzZmQ0My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItbmV0d29ya2luZy9nbGliLW5ldHdvcmtpbmdfMi42Mi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotU1VNTUFSWSA9ICJHTGliIG5ldHdvcmtpbmcgZXh0ZW5zaW9ucyIKLURFU0NSSVBUSU9OID0gImdsaWItbmV0d29ya2luZyBjb250YWlucyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIGNlcnRhaW4gR0xpYiBuZXR3b3JraW5nIGZlYXR1cmVzIHRoYXQgY2Fubm90IGJlIGltcGxlbWVudGVkIGRpcmVjdGx5IGluIEdMaWIgaXRzZWxmIGJlY2F1c2Ugb2YgdGhlaXIgZGVwZW5kZW5jaWVzLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbGliLW5ldHdvcmtpbmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLVNFQ1RJT04gPSAibGlicyIKLURFUEVORFMgPSAiZ2xpYi0yLjAiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjY0Y2ExZTFlNDNlNjIzYjkxNjA1OTU4NWJmN2U0NzU4IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiM2M1NWFlNjc3MWFkN2E3OWZhNjA2YTgzNGY0Njg2ZWQ1NTVjMjc3NGVkNmU5ZWNlNmYzYzBmNmEzZGFiNzExMCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyIKLQotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi1EZ251dGxzPWVuYWJsZWQsLURnbnV0bHM9ZGlzYWJsZWQsZ251dGxzIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItRG9wZW5zc2w9ZW5hYmxlZCwtRG9wZW5zc2w9ZGlzYWJsZWQsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbbGlicHJveHldID0gIi1EbGlicHJveHk9ZW5hYmxlZCwtRGxpYnByb3h5PWRpc2FibGVkLGxpYnByb3h5IgotCi1FWFRSQV9PRU1FU09OID0gIi1EZ25vbWVfcHJveHk9ZGlzYWJsZWQiCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi1pbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnaW8tbW9kdWxlLWNhY2hlCi0KLUZJTEVTXyR7UE59ICs9ICJcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dpby9tb2R1bGVzL2xpYmdpbyouc28gXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyBcCi0gICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAotICAgICAgICAgICAgICAgICIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dpby9tb2R1bGVzL2xpYmdpbyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9naW8vbW9kdWxlcy9saWJnaW8qLmEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLW5ldHdvcmtpbmcvZ2xpYi1uZXR3b3JraW5nXzIuNjIuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi1uZXR3b3JraW5nL2dsaWItbmV0d29ya2luZ18yLjYyLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk1OTZjZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi1uZXR3b3JraW5nL2dsaWItbmV0d29ya2luZ18yLjYyLjMuYmIKQEAgLTAsMCArMSwzNCBAQAorU1VNTUFSWSA9ICJHTGliIG5ldHdvcmtpbmcgZXh0ZW5zaW9ucyIKK0RFU0NSSVBUSU9OID0gImdsaWItbmV0d29ya2luZyBjb250YWlucyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIGNlcnRhaW4gR0xpYiBuZXR3b3JraW5nIGZlYXR1cmVzIHRoYXQgY2Fubm90IGJlIGltcGxlbWVudGVkIGRpcmVjdGx5IGluIEdMaWIgaXRzZWxmIGJlY2F1c2Ugb2YgdGhlaXIgZGVwZW5kZW5jaWVzLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbGliLW5ldHdvcmtpbmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK1NFQ1RJT04gPSAibGlicyIKK0RFUEVORFMgPSAiZ2xpYi0yLjAiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImE3NThjYTYyYmQ1NDk4MmE3OThiMzljNzQ0Y2JmNzgzIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiOGNhMWY4NmYyM2E3NmI1Yzc2NDA2MjRmN2Q1NDkwNzA1Yzc4ZTgxMzc1ZTE3NDFjOWExYzQxY2U3ZjhmN2ZmNyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyIKKworUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi1EZ251dGxzPWVuYWJsZWQsLURnbnV0bHM9ZGlzYWJsZWQsZ251dGxzIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItRG9wZW5zc2w9ZW5hYmxlZCwtRG9wZW5zc2w9ZGlzYWJsZWQsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbbGlicHJveHldID0gIi1EbGlicHJveHk9ZW5hYmxlZCwtRGxpYnByb3h5PWRpc2FibGVkLGxpYnByb3h5IgorCitFWFRSQV9PRU1FU09OID0gIi1EZ25vbWVfcHJveHk9ZGlzYWJsZWQiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnaW8tbW9kdWxlLWNhY2hlCisKK0ZJTEVTXyR7UE59ICs9ICJcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dpby9tb2R1bGVzL2xpYmdpbyouc28gXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyBcCisgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAorICAgICAgICAgICAgICAgICIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dpby9tb2R1bGVzL2xpYmdpbyoubGEiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9naW8vbW9kdWxlcy9saWJnaW8qLmEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMzAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4zMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjljZDQzZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4zMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVNVTU1BUlkgPSAiQ3Jvc3MgbG9jYWxlIGdlbmVyYXRpb24gdG9vbCBmb3IgZ2xpYmMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliYy9saWJjLmh0bWwiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEwtMi4xIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFUzttZDU9Y2ZjMGVkNzdhOWY2MmZhNjJlZGVkMDQyZWJlMzFkNzIgXAotICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgIGZpbGU6Ly9wb3NpeC9yeHNwZW5jZXIvQ09QWVJJR0hUO21kNT1kYzU0ODViYjM5NGExM2IyMzMyZWMxYzc4NWY1ZDgzYSBcCi0gICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1yZXF1aXJlIGdsaWJjLXZlcnNpb24uaW5jCi0KLSMgVGVsbCBhdXRvdG9vbHMgdGhhdCB3ZSdyZSB3b3JraW5nIGluIHRoZSBsb2NhbGVkZWYgZGlyZWN0b3J5Ci0jCi1BVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9sb2NhbGVkZWYiCi0KLWluaGVyaXQgbmF0aXZlCi1pbmhlcml0IGF1dG90b29scwotCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS8ke1BOfToke0ZJTEVfRElSTkFNRX0vZ2xpYmM6IgotCi1TUkNfVVJJID0gIiR7R0xJQkNfR0lUX1VSSX07YnJhbmNoPSR7U1JDQlJBTkNIfTtuYW1lPWdsaWJjIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9rcmFqL2xvY2FsZWRlZjticmFuY2g9bWFzdGVyO25hbWU9bG9jYWxlZGVmO2Rlc3RzdWZmaXg9Z2l0L2xvY2FsZWRlZiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE2LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNy1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTgtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE5LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMC1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjEtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjQtbG9jYWxlZGVmLWFkZC10by1hcmNoaXZlLXVzZXMtYS1oYXJkLWNvZGVkLWxvY2FsZS1wYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hZGQtY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FsbG93LWNvbXBpbGUtc2VwYXJhdGUtZnJvbS11dGlsLWxpbnV4LWhhcmRsaW5rLnBhdGNoIFwKLSIKLSMgTWFrZXMgZm9yIGEgcmF0aGVyIGxvbmcgcmV2ICgyMiBjaGFyYWN0ZXJzKSwgYnV0Li4uCi0jCi1TUkNSRVZfRk9STUFUID0gImdsaWJjX2xvY2FsZWRlZiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1nbGliYz0ke1N9IgotQ0ZMQUdTICs9ICItZmdudTg5LWlubGluZSAtc3RkPWdudTk5IC1ESVNfSU5cKHhcKT0nMCciCi0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAtbSAwNzU1ICR7Qn0vbG9jYWxlZGVmICR7RH0ke2JpbmRpcn0vY3Jvc3MtbG9jYWxlZGVmCi0JaW5zdGFsbCAtbSAwNzU1ICR7Qn0vY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rICR7RH0ke2JpbmRpcn0vY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4zMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjMxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0ZGU1NWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4zMS5iYgpAQCAtMCwwICsxLDUyIEBACitTVU1NQVJZID0gIkNyb3NzIGxvY2FsZSBnZW5lcmF0aW9uIHRvb2wgZm9yIGdsaWJjIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmMvbGliYy5odG1sIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMLTIuMSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRVM7bWQ1PTE1NDFmZDhmNWU4ZjE1Nzk1MTJiZjA1ZjUzMzM3MWJhIFwKKyAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICBmaWxlOi8vcG9zaXgvcnhzcGVuY2VyL0NPUFlSSUdIVDttZDU9ZGM1NDg1YmIzOTRhMTNiMjMzMmVjMWM3ODVmNWQ4M2EgXAorICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworcmVxdWlyZSBnbGliYy12ZXJzaW9uLmluYworCisjIFRlbGwgYXV0b3Rvb2xzIHRoYXQgd2UncmUgd29ya2luZyBpbiB0aGUgbG9jYWxlZGVmIGRpcmVjdG9yeQorIworQVVUT1RPT0xTX1NDUklQVF9QQVRIID0gIiR7U30vbG9jYWxlZGVmIgorCitpbmhlcml0IG5hdGl2ZQoraW5oZXJpdCBhdXRvdG9vbHMKKworRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vJHtQTn06JHtGSUxFX0RJUk5BTUV9L2dsaWJjOiIKKworU1JDX1VSSSA9ICIke0dMSUJDX0dJVF9VUkl9O2JyYW5jaD0ke1NSQ0JSQU5DSH07bmFtZT1nbGliYyBcCisgICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20va3Jhai9sb2NhbGVkZWY7YnJhbmNoPW1hc3RlcjtuYW1lPWxvY2FsZWRlZjtkZXN0c3VmZml4PWdpdC9sb2NhbGVkZWYgXAorICAgICAgICAgICBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxvY2FsZWRlZi1BZGQtaGFyZGxpbmstcmVzb2x2ZXItdG8tYnVpbGQucGF0Y2g7cGF0Y2hkaXI9bG9jYWxlZGVmIFwKKyAgICAgICAgICAgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1sb2NhbGVkZWYtQWRkLWhhcmRsaW5rLXJlc29sdmVyLWZyb20tdXRpbC1saW51eC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWxvY2FsZWRlZi1maXgtdXBzLWhhcmRsaW5rLXRvLW1ha2UtaXQtY29tcGlsZS5wYXRjaCBcCisgICAgICAgICAgIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTgtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE5LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjEtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIyLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIzLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI0LURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI1LWxvY2FsZWRlZi1hZGQtdG8tYXJjaGl2ZS11c2VzLWEtaGFyZC1jb2RlZC1sb2NhbGUtcGEucGF0Y2ggXAorIgorIyBNYWtlcyBmb3IgYSByYXRoZXIgbG9uZyByZXYgKDIyIGNoYXJhY3RlcnMpLCBidXQuLi4KKyMKK1NSQ1JFVl9GT1JNQVQgPSAiZ2xpYmNfbG9jYWxlZGVmIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWdsaWJjPSR7U30iCitDRkxBR1MgKz0gIi1mZ251ODktaW5saW5lIC1zdGQ9Z251OTkgLURJU19JTlwoeFwpPScwJyIKKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlpbnN0YWxsIC1tIDA3NTUgJHtCfS9sb2NhbGVkZWYgJHtEfSR7YmluZGlyfS9jcm9zcy1sb2NhbGVkZWYKKwlpbnN0YWxsIC1tIDA3NTUgJHtCfS9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsgJHtEfSR7YmluZGlyfS9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtY29tbW9uLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtY29tbW9uLmluYwppbmRleCBmYTQ2ZmQ4Li44ZDQxMmNjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWNvbW1vbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1jb21tb24uaW5jCkBAIC00LDcgKzQsNyBAQAogU0VDVElPTiA9ICJsaWJzIgogTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgogCi1MSUNfRklMRVNfQ0hLU1VNID89ICJmaWxlOi8vTElDRU5TRVM7bWQ1PWNmYzBlZDc3YTlmNjJmYTYyZWRlZDA0MmViZTMxZDcyIFwKK0xJQ19GSUxFU19DSEtTVU0gPz0gImZpbGU6Ly9MSUNFTlNFUzttZDU9MTU0MWZkOGY1ZThmMTU3OTUxMmJmMDVmNTMzMzcxYmEgXAogICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKICAgICAgIGZpbGU6Ly9wb3NpeC9yeHNwZW5jZXIvQ09QWVJJR0hUO21kNT1kYzU0ODViYjM5NGExM2IyMzMyZWMxYzc4NWY1ZDgzYSBcCiAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgpAQCAtMjIsNCArMjIsNCBAQAogIwogQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbF9jbGFzcy10YXJnZXQgPSAibnVsbCIKIAotUFYgPSAiMi4zMCIKK1BWID0gIjIuMzEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZV8yLjMwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGVfMi4zMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGVfMi4zMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGVfMi4zMS5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1tdHJhY2VfMi4zMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbXRyYWNlXzIuMzEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbXRyYWNlXzIuMzAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbXRyYWNlXzIuMzEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtcGFja2FnZS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXBhY2thZ2UuaW5jCmluZGV4IDlkZDVhMGQuLjI4NWE5YWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtcGFja2FnZS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1wYWNrYWdlLmluYwpAQCAtMSw2ICsxLDYgQEAKIElOSElCSVRfU1lTUk9PVF9TVFJJUCA9ICIxIgogCi1QQUNLQUdFUyA9ICIke1BOfS1kYmcgY2F0Y2hzZWd2IHNsbiBuc2NkIGxkZCB0emNvZGUgZ2xpYmMtdGhyZWFkLWRiICR7UE59LXBpYyBsaWJjaWRuIGxpYm1lbXVzYWdlIGxpYm5zcy1kYiBsaWJzZWdmYXVsdCAke1BOfS1wY3Byb2ZpbGUgbGlic290cnVzcyAke1BOfSAke1BOfS11dGlscyBnbGliYy1leHRyYS1uc3MgJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiAke1BOfS1kb2MgbGRjb25maWciCitQQUNLQUdFUyA9ICIke1BOfS1kYmcgY2F0Y2hzZWd2IHNsbiBuc2NkIGxkY29uZmlnIGxkZCB0emNvZGUgZ2xpYmMtdGhyZWFkLWRiICR7UE59LXBpYyBsaWJjaWRuIGxpYm1lbXVzYWdlIGxpYm5zcy1kYiBsaWJzZWdmYXVsdCAke1BOfS1wY3Byb2ZpbGUgbGlic290cnVzcyAke1BOfSAke1BOfS11dGlscyBnbGliYy1leHRyYS1uc3MgJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiAke1BOfS1kb2MiCiAKICMgVGhlIGxkLnNvIGluIHRoaXMgZ2xpYmMgc3VwcG9ydHMgdGhlIEdOVV9IQVNICiBSUFJPVklERVNfJHtQTn0gPSAiZWdsaWJjIHJ0bGQoR05VX0hBU0gpIgpAQCAtNjUsOSArNjUsMjEgQEAKIERFU0NSSVBUSU9OX2xpYnNvdHJ1c3MgPSAiTGlicmFyeSB0byBzdXBwb3J0IHNvdHJ1c3Mgd2hpY2ggdHJhY2VzIGNhbGxzIHRocm91Z2ggUExUcyIKIERFU0NSSVBUSU9OX3R6Y29kZSA9ICJ0emNvZGUsIHRpbWV6b25lIHpvbmVpbmZvIHV0aWxzIC0tIHppYywgemR1bXAsIHR6c2VsZWN0IgogCi1pbmhlcml0IGxpYmMtY29tbW9uIG11bHRpbGliX2hlYWRlcgoraW5oZXJpdCBtdWx0aWxpYl9oZWFkZXIKIAotZG9faW5zdGFsbF9hcHBlbmQgKCkgeworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIGluc3RhbGxfcm9vdD0ke0R9IGluc3RhbGwKKwlpbnN0YWxsIC1EbSAwNjQ0ICR7V09SS0RJUn0vZXRjL2xkLnNvLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYKKwlpbnN0YWxsIC1kICR7RH0ke2xvY2FsZWRpcn0KKwltYWtlIC1mICR7V09SS0RJUn0vZ2VuZXJhdGUtc3VwcG9ydGVkLm1rIElOPSIke1N9L2xvY2FsZWRhdGEvU1VQUE9SVEVEIiBPVVQ9IiR7V09SS0RJUn0vU1VQUE9SVEVEIgorCSMgZ2V0IHJpZCBvZiBzb21lIGJyb2tlbiBmaWxlcy4uLgorCWZvciBpIGluICR7R0xJQkNfQlJPS0VOX0xPQ0FMRVN9OyBkbworCQlzZWQgLWkgIi8kaS9kIiAke1dPUktESVJ9L1NVUFBPUlRFRAorCWRvbmUKKwlybSAtZiAke0R9JHtzeXNjb25mZGlyfS9ycGMKKwlybSAtcmYgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKwlybSAtcmYgJHtEfSR7bGliZXhlY2Rpcn0vZ2V0Y29uZgorCiAJcm0gLWYgJHtEfSR7c3lzY29uZmRpcn0vbG9jYWx0aW1lCiAKIAkjIHJlbW92ZSBlbXB0eSBnbGliYyBkaXIKQEAgLTc1LDcgKzg3LDcgQEAKIAkJcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7bGliZXhlY2Rpcn0KIAlmaQogCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIGJpdHMvc3lzY2FsbC5oIGJpdHMvbG9uZy1kb3VibGUuaCBiaXRzL2Zsb2F0bi5oCisJb2VfbXVsdGlsaWJfaGVhZGVyIGJpdHMvc3lzY2FsbC5oIGJpdHMvbG9uZy1kb3VibGUuaCBiaXRzL2Zsb2F0bi5oIGJpdHMvZW5kaWFubmVzcy5oIGJpdHMvc3RydWN0X3J3bG9jay5oCiAKIAlpZiBbIC1mICR7RH0ke2JpbmRpcn0vbXRyYWNlIF07IHRoZW4KIAkJc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISAke1VTUkJJTlBBVEh9L2VudiBwZXJsLCcgLWUgJzJzLGV4ZWMuKnBlcmwsZXhlYyAke1VTUkJJTlBBVEh9L2VudiBwZXJsLCcgJHtEfSR7YmluZGlyfS9tdHJhY2UKQEAgLTEwOCw2ICsxMjAsMTEgQEAKIAlmaQogfQogCitkZWYgZ2V0X2xpYmNfZnB1X3NldHRpbmcoYmIsIGQpOgorICAgIGlmIGQuZ2V0VmFyKCdUQVJHRVRfRlBVJykgaW4gWyAnc29mdCcsICdwcGMtZWZkJyBdOgorICAgICAgICByZXR1cm4gIi0td2l0aG91dC1mcCIKKyAgICByZXR1cm4gIiIKKwogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewogCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCiAJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZApAQCAtMjEzLDYgKzIzMCw4IEBACiAJcm0gLXJmICRjbGVhbnVwZGlyJHtsaWJkaXJ9L2djb252CiAJcm0gLXJmICRjbGVhbnVwZGlyJHtsb2NhbGVkaXJ9CiAJcm0gLXJmICRjbGVhbnVwZGlyJHtkYXRhZGlyfS9sb2NhbGUKKwlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAkY2xlYW51cGRpciR7ZGF0YWRpcn0KKwogCWlmIFsgIiR7bGliZGlyfSIgIT0gIiR7ZXhlY19wcmVmaXh9L2xpYiIgXSAmJiBbICIke3Jvb3RfcHJlZml4fS9saWIiICE9ICIke2V4ZWNfcHJlZml4fS9saWIiIF07IHRoZW4KIAkJaWYgWyAtZCAiJGNsZWFudXBkaXIke2V4ZWNfcHJlZml4fS9saWIiIF07IHRoZW4KIAkJCWlmIFsgLXogIiR7QVJDSF9EWU5BTUlDX0xPQURFUn0iIC1vIFwKQEAgLTIzMyw2ICsyNTIsMjUgQEAKIAlzdGFzaF9sb2NhbGVfY2xlYW51cCAke1BLR0R9CiB9CiAKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICBpZiBkLmdldFZhcignREVCSUFOX05BTUVTJyk6CisgICAgICAgIHBrZ3MgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCisgICAgICAgIGJwbiA9IGQuZ2V0VmFyKCdCUE4nKQorICAgICAgICBwcmVmaXggPSBkLmdldFZhcignTUxQUkVGSVgnKSBvciAiIgorICAgICAgICAjIFNldCB0aGUgYmFzZSBwYWNrYWdlLi4uCisgICAgICAgIGQuc2V0VmFyKCdQS0dfJyArIHByZWZpeCArIGJwbiwgcHJlZml4ICsgJ2xpYmM2JykKKyAgICAgICAgbGliY3ByZWZpeCA9IHByZWZpeCArIGJwbiArICctJworICAgICAgICBmb3IgcCBpbiBwa2dzOgorICAgICAgICAgICAgIyBBbmQgYWxsIHRoZSBzdWJwYWNrYWdlcy4KKyAgICAgICAgICAgIGlmIHAuc3RhcnRzd2l0aChsaWJjcHJlZml4KToKKyAgICAgICAgICAgICAgICByZW5hbWVkID0gcC5yZXBsYWNlKGJwbiwgJ2xpYmM2JywgMSkKKyAgICAgICAgICAgICAgICBkLnNldFZhcignUEtHXycgKyBwLCByZW5hbWVkKQorICAgICAgICAjIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggb2xkIC1kYmcgcGFja2FnZQorICAgICAgICBkLmFwcGVuZFZhcignUlBST1ZJREVTXycgKyBsaWJjcHJlZml4ICsgJ2RiZycsICcgJyArIHByZWZpeCArICdsaWJjLWRiZycpCisgICAgICAgIGQuYXBwZW5kVmFyKCdSQ09ORkxJQ1RTXycgKyBsaWJjcHJlZml4ICsgJ2RiZycsICcgJyArIHByZWZpeCArICdsaWJjLWRiZycpCisgICAgICAgIGQuYXBwZW5kVmFyKCdSUkVQTEFDRVNfJyArIGxpYmNwcmVmaXggKyAnZGJnJywgJyAnICsgcHJlZml4ICsgJ2xpYmMtZGJnJykKK30KKwogcGtnX3Bvc3RpbnN0X25zY2QgKCkgewogCWlmIFsgLXogIiREIiBdOyB0aGVuCiAJCWlmIGNvbW1hbmQgLXYgc3lzdGVtZC10bXBmaWxlcyA+L2Rldi9udWxsOyB0aGVuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXNjcmlwdHNfMi4zMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtc2NyaXB0c18yLjMxLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXNjcmlwdHNfMi4zMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMzEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtdGVzdGluZy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXRlc3RpbmcuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTQyYWU3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtdGVzdGluZy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCwwIEBACi1kb19jb21waWxlX2FwcGVuZCAoKSB7Ci0JIyBub3cgZ2VuZXJhdGUgc2NyaXB0IHRvIGRyaXZlIHRlc3RpbmcKLQllY2hvICIjIS91c3IvYmluL2VudiBzaCIgPiR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZXQgPj4gJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCSMgcHJ1bmUgb3V0IHRoZSB1bm5lZWRlZCB2YXJzCi0Jc2VkIC1pIC1lICIvXkJBU0gvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15VU0VSL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eT1BUL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eRElSU1RBQ0svZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15FVUlEL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eRlVOQ05BTUUvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15HUk9VUFMvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15IT1NUL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eSE9NRS9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXklGUy9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXkxDX0FMTC9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXkxPR05BTUUvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15NQUNIVFlQRS9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXk9TVFlQRS9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXlBJUEUvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15TSEVMTC9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXicvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15VSUQvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15URVJNL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eUEtHXy9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXlBPU0lYTFlfL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eUFBJRC9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXlBTNC9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXlEvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15TSExWTC9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXlNUQUdJTkcvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15MRF9MSUJSQVJZX1BBVEgvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15QU0VVRE8vZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCi0JIyBwb2ludCB0byByZWFsIHN5c3Jvb3Qgbm90IHRoZSB0b29sY2hhaW4gYm9vdHN0cmFwIHN5c3Jvb3QKLQlzZWQgLWkgLWUgInMvXC10Y2Jvb3RzdHJhcC8vZyIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCi0JIyB1c2UgdGhlIGZpbmFsIGNyb3NzLWdjYyB0byB0ZXN0IHNpbmNlIHNvbWUgdGVzdHMgbmVlZCBsaWJzdGRjKysKLQlzZWQgLWkgLWUgInMvXlBBVEg9LipcLmdjYy1jcm9zcy1pbml0aWFsXDovUEFUSD0vZyIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCi0JIyBhcHBlbmQgZXhlY3V0aW9uIHBhcnQgc2NyaXB0Ci1jYXQgPj4gJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYyA8PCBTVE9QCi10YXJnZXQ9IlwkMSIKLWlmIFsgInhcJHRhcmdldCIgPSAieCIgXQotdGhlbgotCWVjaG8gIlBsZWFzZSBzcGVjaWZ5IHRoZSB0YXJnZXQgbWFjaGluZSBhbmQgcmVtb3RlIHVzZXIgaW4gZm9ybSBvZiB1c2VyQHRhcmdldCIKLQlleGl0IDE7Ci1maQotc3NoIFwkdGFyZ2V0IGxzIFwkUFdEXCAgMj4mMSA+IC9kZXYvbnVsbAotaWYgWyAieFwkPyIgIT0gIngwIiBdCi10aGVuCi0JZWNobyAiRmFpbGVkIGNvbm5lY3RpbmcgdG8gXCR0YXJnZXQgaXQgY291bGQgYmUgYmVjYXVzZSBvZjoiCi0JZWNobyAiMS4gWW91IGRvbnQgaGF2ZSBwYXNzd29yZGxlc3Mgc3NoIHNldHVwIHRvIGFjY2VzcyBcJHRhcmdldCIKLQllY2hvICIyLiBORlMgc2hhcmUgb24gXCR0YXJnZXQgaXMgbm90IG1vdW50ZWQgb3IgaWYgbW91bnRlZCB0aGVuIG5vdCBtYXRjaGluZyB0aGUgYnVpbGQgdHJlZSBsYXlvdXQuIgotCWVjaG8gIiAgIFRoZSB0cmVlIHNob3VsZCBiZSBhY2Nlc3NpYmxlIGF0IHNhbWUgbG9jYXRpb24gb24gYnVpbGQgaG9zdCBhbmQgdGFyZ2V0IgotCWVjaG8gIiAgIFlvdSBjYW4gYWRkIG5mcy1jbGllbnQgdG8gSU1BR0VfRkVBVFVSRVMgdG8gZ2V0IHRoZSBuZnMgY2xpZW50IG9uIHRhcmdldCIKLQllY2hvICIzLiBuZnMgc2VydmVyIG9uIGJ1aWxkIGhvc3QgaXMgbm90IHJ1bm5pbmcuIgotCWVjaG8gIiAgIFBsZWFzZSBtYWtlIHN1cmUgdGhhdCB5b3UgaGF2ZSAnbm9fcm9vdF9zcXVhc2gnIGFkZGVkIGluIC9ldGMvZXhwb3J0cyBpZiB5b3Ugd2FudCIKLQllY2hvICIgICB0byB0ZXN0IGFzIHJvb3QgdXNlciBvbiB0YXJnZXQgKHVzdWFsbHkgaXRzIHJlY29tbWVuZGVkIHRvIGNyZWF0ZSBhIG5vbiIKLQllY2hvICIgICByb290IHVzZXIuIgotCWVjaG8gIiAgIEFzIGEgc2FuaXR5IGNoZWNrIG1ha2Ugc3VyZSB0aGF0IHRhcmdldCBjYW4gcmVhZC93cml0ZSB0byB0aGUgZ2xpYmMgYnVpbGQgdHJlZSIKLQllY2hvICIgICBQbGVhc2UgcmVmZXIgdG8gJHtTfS9FR0xJQkMuY3Jvc3MtdGVzdGluZyBmb3IgZnVydGhlciBpbnN0cnVjdGlvbnMgb24gc2V0dXAiCi0JZXhpdCAxCi1maQotCWVjaG8gIiMgd2UgdGVzdCB1c2luZyBjcm9zcyBjb21waWxlciBmcm9tIHJlYWwgc3lzcm9vdCB0aGVyZWZvcmUgb3ZlcnJpZGUgdGhlIiA+ICR7Qn0vY29uZmlncGFybXMKLQllY2hvICIjIGRlZmluaXRpb25zIHRoYXQgY29tZSBmcm9tICR7Qn0vY29uZmlnLm1ha2UiID4+ICR7Qn0vY29uZmlncGFybXMKLQlmZ3JlcCB0Y2Jvb3RzdHJhcCAke0J9L2NvbmZpZy5tYWtlID4gJHtCfS9jb25maWdwYXJtcwotCXNlZCAtaSAtZSAicy9cLXRjYm9vdHN0cmFwLy9nIiAke0J9L2NvbmZpZ3Bhcm1zCi0KLSMgZysrIHVzZXMgZmxhZyAtbm9zdGRpbmMsIHNvIHRoZSBsb2NhdGlvbnMgb2Ygc3lzdGVtIGluY2x1ZGUgaGVhZGVycyBtdXN0IGJlIGV4cGxpY2l0bHkgc3BlY2lmaWVkCi0jIElmIHRoZSBsb2NhdGlvbnMgYXJlIG5vdCBhbHJlYWR5IHNwZWNpZmllZCBpbiBjb25maWcubWFrZSwgdGhlbiB3ZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgbG9jYXRpb25zOgotIyAgICA8c3lzcm9vdD4vdXNyL2luY2x1ZGUvYysrLzxnKysgdmVyc2lvbj4KLSMgICAgPHN5c3Jvb3Q+L3Vzci9pbmNsdWRlL2MrKy88ZysrIHZlcnNpb24+LzxtYWNoaW5lPgotCi1jeHhpbmNsdWRlcz1cYGNhdCAke0J9L2NvbmZpZy5tYWtlIHwgZ2F3ayAnXCQxID09ICJjKystc3lzaW5jbHVkZXMiJyB8IGdhd2sgLUYiPSIgJ3twcmludCBcJDJ9JyB8IHNlZCAicy9bIFx0XVw/Ly9nIlxgCi0KLWlmIFsgLXogIlwkY3h4aW5jbHVkZXMiIF07IHRoZW4KLSAgc3lzcm9vdD1cYGNhdCAke0J9L2NvbmZpZ3Bhcm1zIHwgc2VkIC1uICIvQ1hYL3AiIHwgc2VkIC1lICJzL14uKi0tc3lzcm9vdD0vLyJcYAotICBjeHg9XGBjYXQgJHtCfS9jb25maWdwYXJtcyB8IGdhd2sgJ1wkMSB+IC9eQ1hYLycgfCBnYXdrIC1GIj0iICd7cHJpbnQgXCQyfScgfCBnYXdrICd7cHJpbnQgXCQxfSdcYAotICBjeHhtYWNoaW5lPVxgXCRjeHggLWR1bXBtYWNoaW5lXGAKLSAgY3h4dmVyc2lvbj1cYFwkY3h4IC1kdW1wdmVyc2lvblxgCi0gICMgcGFzcyB0aGUgbmV3IHZhbHVlIG9mIGMrKy1zeXNpbmNsdWRlcyB2aWEgY29uZmlncGFybXMKLSAgZWNobyAiIyBjKystc3lzaW5jbHVkZXMgYWRkZWQ6IiA+PiAke0J9L2NvbmZpZ3Bhcm1zCi0gIGVjaG8gImMrKy1zeXNpbmNsdWRlcyA9IC1pc3lzdGVtIFwkc3lzcm9vdC91c3IvaW5jbHVkZS9jKysvXCRjeHh2ZXJzaW9uIC1pc3lzdGVtIFwkc3lzcm9vdC91c3IvaW5jbHVkZS9jKysvXCRjeHh2ZXJzaW9uL1wkY3h4bWFjaGluZSIgPj4gJHtCfS9jb25maWdwYXJtcwotZmkKLQotd3JhcHBlcj0iJHtTfS9zY3JpcHRzL2Nyb3NzLXRlc3Qtc3NoLnNoIFwkdGFyZ2V0IgotbG9jYWxlZGVmPSIke1NUQUdJTkdfQklORElSX05BVElWRX0vY3Jvc3MtbG9jYWxlZGVmIC0tbGl0dGxlLWVuZGlhbiAtLXVpbnQzMi1hbGlnbj00IgotbWFrZSB0ZXN0cy1jbGVhbgotbWFrZSBjcm9zcy1sb2NhbGVkZWY9IlwkbG9jYWxlZGVmIiBjcm9zcy10ZXN0LXdyYXBwZXI9Ilwkd3JhcHBlciIgLWsgY2hlY2sKLXJtIC1yZiAke0J9L2NvbmZpZ3Bhcm1zCi1TVE9QCi0KLQljaG1vZCAreCAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXRlc3RzdWl0ZV8yLjMwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy10ZXN0c3VpdGVfMi4zMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjU3ZmQ0ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXRlc3RzdWl0ZV8yLjMwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotcmVxdWlyZSBnbGliY18ke1BWfS5iYgotCi0jIGhhbmRsZSBQTiBkaWZmZXJlbmNlcwotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vZ2xpYmM6IgotCi0jIHN0cmlwIHByb3ZpZGVzCi1QUk9WSURFUyA9ICIiCi0jIHNldHVwIGRlcGVuZHMKLUlOSElCSVRfREVGQVVMVF9ERVBTID0gIiIKLQotcHl0aG9uICgpIHsKLSAgICBsaWJjID0gZC5nZXRWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmMiKQotICAgIGxpYmNsb2NhbGUgPSBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliYy1sb2NhbGUiKQotICAgIGlmIGxpYmMgIT0gImdsaWJjIiBvciBsaWJjbG9jYWxlICE9ICJnbGliYy1sb2NhbGUiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJnbGliYy10ZXN0c3VpdGUgcmVxdWlyZXMgdGhhdCB2aXJ0dWFsL2xpYmMgaXMgZ2xpYmMiKQotfQotCi1ERVBFTkRTICs9ICJnbGliYy1sb2NhbGUgbGliZ2NjIGdjYy1ydW50aW1lIgotCi0jIHJlbW92ZSB0aGUgaW5pdGlhbCBkZXBlbmRzCi1ERVBFTkRTX3JlbW92ZSA9ICJsaWJnY2MtaW5pdGlhbCIKLQotaW5oZXJpdCBxZW11Ci0KLVNSQ19VUkkgKz0gImZpbGU6Ly9jaGVjay10ZXN0LXdyYXBwZXIiCi0KLURFUEVORFMgKz0gIiR7QCdxZW11LW5hdGl2ZScgaWYgZC5nZXRWYXIoJ1RPT0xDSEFJTl9URVNUX1RBUkdFVCcpID09ICd1c2VyJyBlbHNlICcnfSIKLQotVE9PTENIQUlOX1RFU1RfVEFSR0VUID8/PSAidXNlciIKLVRPT0xDSEFJTl9URVNUX0hPU1QgPz89ICJsb2NhbGhvc3QiCi1UT09MQ0hBSU5fVEVTVF9IT1NUX1VTRVIgPz89ICJyb290IgotVE9PTENIQUlOX1RFU1RfSE9TVF9QT1JUID8/PSAiMjIyMiIKLQotZG9fY2hlY2tbZGlyc10gKz0gIiR7Qn0iCi1kb19jaGVja1tub3N0YW1wXSA9ICIxIgotZG9fY2hlY2sgKCkgewotICAgIGNobW9kIDA3NTUgJHtXT1JLRElSfS9jaGVjay10ZXN0LXdyYXBwZXIKLQotICAgICMgY2xlYW4gb3V0IHByZXZpb3VzIHRlc3QgcmVzdWx0cwotICAgIG9lX3J1bm1ha2UgdGVzdHMtY2xlYW4KLSAgICAjIG1ha2VmaWxlcyBkb24ndCBjbGVhbiBlbnRpcmVseSAoYW5kIGFsc28gc29tZXRpbWVzIGZhaWxzIGR1ZSB0byB0b28gbWFueSBhcmdzKQotICAgIGZpbmQgJHtCfSAtdHlwZSBmIC1uYW1lICIqLm91dCIgLWRlbGV0ZQotICAgIGZpbmQgJHtCfSAtdHlwZSBmIC1uYW1lICIqLnRlc3QtcmVzdWx0IiAtZGVsZXRlCi0gICAgZmluZCAke0J9L2NhdGdldHMgLW5hbWUgIiouY2F0IiAtZGVsZXRlCi0gICAgZmluZCAke0J9L2NvbmZvcm0gLW5hbWUgInN5bWxpc3QtKiIgLWRlbGV0ZQotICAgIFsgISAtZSAke0J9L3RpbWV6b25lL3Rlc3RkYXRhIF0gfHwgcm0gLXJmICR7Qn0vdGltZXpvbmUvdGVzdGRhdGEKLQotICAgIG9lX3J1bm1ha2UgLWkgXAotICAgICAgICBRRU1VX1NZU1JPT1Q9IiR7UkVDSVBFX1NZU1JPT1R9IiBcCi0gICAgICAgIFFFTVVfT1BUSU9OUz0iJHtAcWVtdV90YXJnZXRfYmluYXJ5KGQpfSAke1FFTVVfT1BUSU9OU30iIFwKLSAgICAgICAgU1NIX0hPU1Q9IiR7VE9PTENIQUlOX1RFU1RfSE9TVH0iIFwKLSAgICAgICAgU1NIX0hPU1RfVVNFUj0iJHtUT09MQ0hBSU5fVEVTVF9IT1NUX1VTRVJ9IiBcCi0gICAgICAgIFNTSF9IT1NUX1BPUlQ9IiR7VE9PTENIQUlOX1RFU1RfSE9TVF9QT1JUfSIgXAotICAgICAgICB0ZXN0LXdyYXBwZXI9IiR7V09SS0RJUn0vY2hlY2stdGVzdC13cmFwcGVyICR7VE9PTENIQUlOX1RFU1RfVEFSR0VUfSIgXAotICAgICAgICBjaGVjawotfQotYWRkdGFzayBkb19jaGVjayBhZnRlciBkb19jb21waWxlCi0KLWluaGVyaXQgbm9wYWNrYWdlcwotZGVsdGFzayBkb19zdGFzaF9sb2NhbGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtdGVzdHN1aXRlXzIuMzEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXRlc3RzdWl0ZV8yLjMxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ODdhZWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXRlc3RzdWl0ZV8yLjMxLmJiCkBAIC0wLDAgKzEsNjMgQEAKK3JlcXVpcmUgZ2xpYmNfJHtQVn0uYmIKKworRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCisKKyMgaGFuZGxlIFBOIGRpZmZlcmVuY2VzCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9nbGliYzoiCisKKyMgc3RyaXAgcHJvdmlkZXMKK1BST1ZJREVTID0gIiIKKyMgc2V0dXAgZGVwZW5kcworSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiIgorCitweXRob24gKCkgeworICAgIGxpYmMgPSBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliYyIpCisgICAgbGliY2xvY2FsZSA9IGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJjLWxvY2FsZSIpCisgICAgaWYgbGliYyAhPSAiZ2xpYmMiIG9yIGxpYmNsb2NhbGUgIT0gImdsaWJjLWxvY2FsZSI6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoImdsaWJjLXRlc3RzdWl0ZSByZXF1aXJlcyB0aGF0IHZpcnR1YWwvbGliYyBpcyBnbGliYyIpCit9CisKK0RFUEVORFMgKz0gImdsaWJjLWxvY2FsZSBsaWJnY2MgZ2NjLXJ1bnRpbWUiCisKKyMgcmVtb3ZlIHRoZSBpbml0aWFsIGRlcGVuZHMKK0RFUEVORFNfcmVtb3ZlID0gImxpYmdjYy1pbml0aWFsIgorCitpbmhlcml0IHFlbXUKKworU1JDX1VSSSArPSAiZmlsZTovL2NoZWNrLXRlc3Qtd3JhcHBlciIKKworREVQRU5EUyArPSAiJHtAJ3FlbXUtbmF0aXZlJyBpZiBkLmdldFZhcignVE9PTENIQUlOX1RFU1RfVEFSR0VUJykgPT0gJ3VzZXInIGVsc2UgJyd9IgorCitUT09MQ0hBSU5fVEVTVF9UQVJHRVQgPz89ICJ1c2VyIgorVE9PTENIQUlOX1RFU1RfSE9TVCA/Pz0gImxvY2FsaG9zdCIKK1RPT0xDSEFJTl9URVNUX0hPU1RfVVNFUiA/Pz0gInJvb3QiCitUT09MQ0hBSU5fVEVTVF9IT1NUX1BPUlQgPz89ICIyMjIyIgorCitkb19jaGVja1tkaXJzXSArPSAiJHtCfSIKK2RvX2NoZWNrW25vc3RhbXBdID0gIjEiCitkb19jaGVjayAoKSB7CisgICAgY2htb2QgMDc1NSAke1dPUktESVJ9L2NoZWNrLXRlc3Qtd3JhcHBlcgorCisgICAgIyBjbGVhbiBvdXQgcHJldmlvdXMgdGVzdCByZXN1bHRzCisgICAgb2VfcnVubWFrZSB0ZXN0cy1jbGVhbgorICAgICMgbWFrZWZpbGVzIGRvbid0IGNsZWFuIGVudGlyZWx5IChhbmQgYWxzbyBzb21ldGltZXMgZmFpbHMgZHVlIHRvIHRvbyBtYW55IGFyZ3MpCisgICAgZmluZCAke0J9IC10eXBlIGYgLW5hbWUgIioub3V0IiAtZGVsZXRlCisgICAgZmluZCAke0J9IC10eXBlIGYgLW5hbWUgIioudGVzdC1yZXN1bHQiIC1kZWxldGUKKyAgICBmaW5kICR7Qn0vY2F0Z2V0cyAtbmFtZSAiKi5jYXQiIC1kZWxldGUKKyAgICBmaW5kICR7Qn0vY29uZm9ybSAtbmFtZSAic3ltbGlzdC0qIiAtZGVsZXRlCisgICAgWyAhIC1lICR7Qn0vdGltZXpvbmUvdGVzdGRhdGEgXSB8fCBybSAtcmYgJHtCfS90aW1lem9uZS90ZXN0ZGF0YQorCisgICAgb2VfcnVubWFrZSAtaSBcCisgICAgICAgIFFFTVVfU1lTUk9PVD0iJHtSRUNJUEVfU1lTUk9PVH0iIFwKKyAgICAgICAgUUVNVV9PUFRJT05TPSIke0BxZW11X3RhcmdldF9iaW5hcnkoZCl9ICR7UUVNVV9PUFRJT05TfSIgXAorICAgICAgICBTU0hfSE9TVD0iJHtUT09MQ0hBSU5fVEVTVF9IT1NUfSIgXAorICAgICAgICBTU0hfSE9TVF9VU0VSPSIke1RPT0xDSEFJTl9URVNUX0hPU1RfVVNFUn0iIFwKKyAgICAgICAgU1NIX0hPU1RfUE9SVD0iJHtUT09MQ0hBSU5fVEVTVF9IT1NUX1BPUlR9IiBcCisgICAgICAgIHRlc3Qtd3JhcHBlcj0iJHtXT1JLRElSfS9jaGVjay10ZXN0LXdyYXBwZXIgJHtUT09MQ0hBSU5fVEVTVF9UQVJHRVR9IiBcCisgICAgICAgIGNoZWNrCit9CithZGR0YXNrIGRvX2NoZWNrIGFmdGVyIGRvX2NvbXBpbGUKKworaW5oZXJpdCBub3BhY2thZ2VzCitkZWx0YXNrIGRvX3N0YXNoX2xvY2FsZQorZGVsdGFzayBkb19pbnN0YWxsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXZlcnNpb24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy12ZXJzaW9uLmluYwppbmRleCBjMThjNTgzLi40YzcyZWVkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXZlcnNpb24uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtdmVyc2lvbi5pbmMKQEAgLTEsNiArMSw2IEBACi1TUkNCUkFOQ0ggPz0gInJlbGVhc2UvMi4zMC9tYXN0ZXIiCi1QViA9ICIyLjMwIgotU1JDUkVWX2dsaWJjID89ICJiZTlhMzI4YzkzODM0NjQ4ZTBiZWMxMDZhMWY4NjM1N2QxYThjN2UxIgorU1JDQlJBTkNIID89ICJyZWxlYXNlLzIuMzEvbWFzdGVyIgorUFYgPSAiMi4zMStnaXQke1NSQ1BWfSIKK1NSQ1JFVl9nbGliYyA/PSAiNzFmMmIyNDlhMjhlMTdlYWMwZTQ3YzUzYWY0NGQ1YzViNjUxMDFhYSIKIFNSQ1JFVl9sb2NhbGVkZWYgPz0gImNkOWY5NThjNGM5NGE2MzhmYTdiMmI0ZTIxNjI3MzY0ZjFhMWE2NTUiCiAKIEdMSUJDX0dJVF9VUkkgPz0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9nbGliYy5naXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMuaW5jCmluZGV4IGVhOWEwNGEuLjIzYTZjYTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMuaW5jCkBAIC0xLDYgKzEsNSBAQAogcmVxdWlyZSBnbGliYy1jb21tb24uaW5jCiByZXF1aXJlIGdsaWJjLWxkLmluYwotcmVxdWlyZSBnbGliYy10ZXN0aW5nLmluYwogCiBERVBFTkRTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYyBsaWJnY2MtaW5pdGlhbCBsaW51eC1saWJjLWhlYWRlcnMiCiAKQEAgLTEwLDggKzksMTEgQEAKIAogTEVBRF9TT05BTUUgPSAibGliYy5zbyIKIAorIyBtc2dmbXQgY291bGQgY29tZSBmcm9tIGdldHRleHQtbmF0aXZlIGJ1dCB3ZSBkb24ndCBkZXBlbmQgb24gdGhhdCBhbmQKKyMgZGlzYWJsZSBmb3IgcmVwcm9kdWNpYmlsaXR5CiBDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiIFwKICAgYWNfY3ZfcGF0aF9CQVNIX1NIRUxMPSR7YmFzZV9iaW5kaXJ9L2Jhc2ggXAorICBhY19jdl9wcm9nX01TR0ZNVD0gXAogICBsaWJjX2N2X3NsaWJkaXI9JHtiYXNlX2xpYmRpcn0gXAogICBsaWJjX2N2X3Jvb3RzYmluZGlyPSR7YmFzZV9zYmluZGlyfSBcCiAgIGxpYmNfY3ZfbG9jYWxlZGlyPSR7bG9jYWxlZGlyfSBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbG9jYWxlZGVmLUFkZC1oYXJkbGluay1yZXNvbHZlci1mcm9tLXV0aWwtbGludXgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbG9jYWxlZGVmLUFkZC1oYXJkbGluay1yZXNvbHZlci1mcm9tLXV0aWwtbGludXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA3ODZiZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1sb2NhbGVkZWYtQWRkLWhhcmRsaW5rLXJlc29sdmVyLWZyb20tdXRpbC1saW51eC5wYXRjaApAQCAtMCwwICsxLDExMzAgQEAKK0Zyb20gM2RjZjE0NGU5OThhZWQxN2IzZmI5NTdhMjU1YjFlOTIzYmEwN2Q3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitEYXRlOiBTYXQsIDcgRGVjIDIwMTkgMDk6NTk6MjIgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbG9jYWxlZGVmOiBBZGQgaGFyZGxpbmsgcmVzb2x2ZXIgZnJvbSB1dGlsLWxpbnV4CisKK1RoZSBoYXJkIGxpbmsgcmVzb2x2ZXIgdGhhdCBpcyBidWlsdCBpbnRvIGxvY2FsZWRlZiBjYW5ub3QgYmUgcnVuIGluCitwYXJhbGxlbC4gIEl0IHdpbGwgc2VhcmNoIHNpYmxpbmcgZGlyZWN0b3JpZXMgKHdoaWNoIGFyZSBiZSBwcm9jZXNzZWQKK2luIHBhcmFsbGVsKSBhbmQgcGVyZm9ybSBhIGNyZWF0aW9uIG9mIGEgLnRtcCBmaWxlIGFuZCByZW1vdmUgdGhlCitvcmlnaW5hbCBhbmQgbW92ZSB0aGUgLnRtcCBmaWxlIGluLiAgVGhlIHByb2JsZW0gaXMgdGhhdCBpZiBhIHByb2JlCitvY2N1cnMgYSBoYXJkIGxpbmsgY2FuIGJlIHJlcXVlc3RlZCB0byB0aGUgZmlsZSB0aGF0IGlzIGJlaW5nIHJlbW92ZWQuCitUaGlzIHdpbGwgbGVhZCB0byBhIHN0cmF5IGNvcHkgb3IgcG90ZW50aWFsbHksIG9uIGEgbG9hZGVkIHN5c3RlbQorY2F1c2UgcmFjZSBjb25kaXRpb24gd2hpY2ggcHNldWRvIGNhbm5vdCBkZWFsIHdpdGgsIHdoZXJlIGl0IGlzIGxlZnQKK3dpdGggYSBoYXJkIGxpbmsgcmVxdWVzdCB0byBhIGZpbGUgdGhhdCBubyBsb25nZXIgZXhpc3RzLiAgSW4gdGhpcworc2l0dWF0aW9uIHBzdWVkbyB3aWxsIGluaGVyaXQgdGhlIHBlcm1pc3Npb25zIG9mIHdoYXQgZXZlciB0aGUgdGFyZ2V0Citpbm9kZSBoYWQgdG8gb2ZmZXIuCisKK0luIHNob3J0LCB0aGVyZSBhcmUgdHdvIHByb2JsZW1zOgorCisxKSBZb3Ugd2lsbCBiZSBsZWZ0IHdpdGggc3RyYXkgY29waWVzIHdoZW4gdXNpbmcgdGhlIGhhcmQgbGluaworcmVzb2x1dGlvbiB0aGF0IGlzIGJ1aWx0IGluIHdoaWxlIHJ1bm5pbmcgaW4gcGFyYWxsZWwgd2l0aAorbG9jYWxlZGVmLgorCisyKSBXaGVuIHJ1bm5pbmcgdW5kZXIgcHNldWRvIHRoZSBwb3NzaWJpbGl0eSBleGlzdHMgZm9yIHVpZC9naWQKK2xlYWthZ2Ugd2hlbiB0aGUgc291cmNlIGZpbGUgaXMgcmVtb3ZlZCBiZWZvcmUgdGhlIGhhcmQgbGluayBjYW4KK2JlIGNvbXBsZXRlZC4KKworVGhlIHNvbHV0aW9uIGlzIHRvIGNhbGwgbG9jYWxlZGVmIHdpdGggLS1uby1oYXJkLWxpbmtzIGFuZCBzZXBhcmF0ZWx5Citwcm9jZXNzIHRoZSBoYXJkbGlua3MgYXQgYSBsYXRlciBwb2ludC4gIFRvIGRvIHRoaXMgcmVxdWlyZXMgdGhlCitpbmNsdXNpb24gb2YgdGhlIGhhcmRsaW5rIHV0aWxpdHkgZm91bmQgaW4gbW9kZXJuIHZlcnNpb25zIG9mCit1dGlsLWxpbnV4LiAgTW9zdCBob3N0IHN5c3RlbXMgZG8gbm90IGhhdmUgdGhpcywgc28gaXQgd2lsbCBiZQoraW5jbHVkZWQgd2l0aCB0aGUgY3Jvc3MtbG9jYWxlZGVmIGJpbmFyeS4KKworW1lPQ1RPICMxMTI5OV0KK1tZT0NUTyAjMTI0MzRdCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxvY2FsZS9wcm9ncmFtcy9jLmggICAgICAgICAgICAgICAgICAgICAgICB8IDQwNyArKysrKysrKysrKysrKysrCisgbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jIHwgNTI4ICsrKysrKysrKysrKysrKysrKysrKworIGxvY2FsZS9wcm9ncmFtcy94YWxsb2MuaCAgICAgICAgICAgICAgICAgICB8IDEyOSArKysrKworIDMgZmlsZXMgY2hhbmdlZCwgMTA2NCBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxvY2FsZS9wcm9ncmFtcy9jLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxvY2FsZS9wcm9ncmFtcy94YWxsb2MuaAorCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2MuaCBiL2xvY2FsZS9wcm9ncmFtcy9jLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi5kMGE0MDJlOTBlCistLS0gL2Rldi9udWxsCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvYy5oCitAQCAtMCwwICsxLDQwNyBAQAorKy8qCisrICogRnVuZGFtZW50YWwgQyBkZWZpbml0aW9ucy4KKysgKi8KKysKKysjaWZuZGVmIFVUSUxfTElOVVhfQ19ICisrI2RlZmluZSBVVElMX0xJTlVYX0NfSAorKworKyNpbmNsdWRlIDxsaW1pdHMuaD4KKysjaW5jbHVkZSA8c3RkZGVmLmg+CisrI2luY2x1ZGUgPHN0ZGludC5oPgorKyNpbmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDx1bmlzdGQuaD4KKysjaW5jbHVkZSA8c3RkYXJnLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8ZXJybm8uaD4KKysKKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrCisrI2lmZGVmIEhBVkVfRVJSX0gKKysjIGluY2x1ZGUgPGVyci5oPgorKyNlbmRpZgorKworKyNpZmRlZiBIQVZFX1NZU19TWVNNQUNST1NfSAorKyMgaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPiAgICAgLyogZm9yIG1ham9yLCBtaW5vciAqLworKyNlbmRpZgorKworKyNpZm5kZWYgTE9HSU5fTkFNRV9NQVgKKysjIGRlZmluZSBMT0dJTl9OQU1FX01BWCAyNTYKKysjZW5kaWYKKysKKysjaWZuZGVmIE5BTUVfTUFYCisrIyBkZWZpbmUgTkFNRV9NQVggUEFUSF9NQVgKKysjZW5kaWYKKysKKysvKgorKyAqIF9fR05VQ19QUkVSRVEgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgX19oYXNfYXR0cmlidXRlKCkgYW5kCisrICogX19oYXNfZmVhdHVyZSgpLiBUaGUgX19oYXMgbWFjcm9zIGFyZSBzdXBwb3J0ZWQgYnkgY2xhbmcgYW5kIGdjYz49NS4KKysgKi8KKysjaWZuZGVmIF9fR05VQ19QUkVSRVEKKysjIGlmIGRlZmluZWQgX19HTlVDX18gJiYgZGVmaW5lZCBfX0dOVUNfTUlOT1JfXworKyMgIGRlZmluZSBfX0dOVUNfUFJFUkVRKG1haiwgbWluKSBcCisrCSgoX19HTlVDX18gPDwgMTYpICsgX19HTlVDX01JTk9SX18gPj0gKChtYWopIDw8IDE2KSArIChtaW4pKQorKyMgZWxzZQorKyMgIGRlZmluZSBfX0dOVUNfUFJFUkVRKG1haiwgbWluKSAwCisrIyBlbmRpZgorKyNlbmRpZgorKworKyNpZmRlZiBfX0dOVUNfXworKworKy8qICZhWzBdIGRlZ3JhZGVzIHRvIGEgcG9pbnRlcjogYSBkaWZmZXJlbnQgdHlwZSBmcm9tIGFuIGFycmF5ICovCisrIyBkZWZpbmUgX19tdXN0X2JlX2FycmF5KGEpIFwKKysJVUxfQlVJTERfQlVHX09OX1pFUk8oX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcChfX3R5cGVvZl9fKGEpLCBfX3R5cGVvZl9fKCZhWzBdKSkpCisrCisrIyBkZWZpbmUgaWdub3JlX3Jlc3VsdCh4KSBfX2V4dGVuc2lvbl9fICh7IFwKKysJX190eXBlb2ZfXyh4KSBfX2R1bW15IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSA9ICh4KTsgKHZvaWQpIF9fZHVtbXk7IFwKKyt9KQorKworKyNlbHNlIC8qICFfX0dOVUNfXyAqLworKyMgZGVmaW5lIF9fbXVzdF9iZV9hcnJheShhKQkwCisrIyBkZWZpbmUgX19hdHRyaWJ1dGVfXyhfYXJnXykKKysjIGRlZmluZSBpZ25vcmVfcmVzdWx0KHgpICgodm9pZCkgKHgpKQorKyNlbmRpZiAvKiAhX19HTlVDX18gKi8KKysKKysvKgorKyAqIEl0IGV2YWx1YXRlcyB0byAxIGlmIHRoZSBhdHRyaWJ1dGUvZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIGN1cnJlbnQKKysgKiBjb21waWxhdGlvbiB0YXJnZWQuIEZhbGxiYWNrIGZvciBvbGQgY29tcGlsZXJzLgorKyAqLworKyNpZm5kZWYgX19oYXNfYXR0cmlidXRlCisrICAjZGVmaW5lIF9faGFzX2F0dHJpYnV0ZSh4KSAwCisrI2VuZGlmCisrCisrI2lmbmRlZiBfX2hhc19mZWF0dXJlCisrICAjZGVmaW5lIF9faGFzX2ZlYXR1cmUoeCkgMAorKyNlbmRpZgorKworKy8qCisrICogRnVuY3Rpb24gYXR0cmlidXRlcworKyAqLworKyNpZm5kZWYgX191bF9hbGxvY19zaXplCisrIyBpZiAoX19oYXNfYXR0cmlidXRlKGFsbG9jX3NpemUpICYmIF9faGFzX2F0dHJpYnV0ZSh3YXJuX3VudXNlZF9yZXN1bHQpKSB8fCBfX0dOVUNfUFJFUkVRICg0LCAzKQorKyMgIGRlZmluZSBfX3VsX2FsbG9jX3NpemUocykgX19hdHRyaWJ1dGVfXygoYWxsb2Nfc2l6ZShzKSwgd2Fybl91bnVzZWRfcmVzdWx0KSkKKysjIGVsc2UKKysjICBkZWZpbmUgX191bF9hbGxvY19zaXplKHMpCisrIyBlbmRpZgorKyNlbmRpZgorKworKyNpZm5kZWYgX191bF9jYWxsb2Nfc2l6ZQorKyMgaWYgKF9faGFzX2F0dHJpYnV0ZShhbGxvY19zaXplKSAmJiBfX2hhc19hdHRyaWJ1dGUod2Fybl91bnVzZWRfcmVzdWx0KSkgfHwgX19HTlVDX1BSRVJFUSAoNCwgMykKKysjICBkZWZpbmUgX191bF9jYWxsb2Nfc2l6ZShuLCBzKSBfX2F0dHJpYnV0ZV9fKChhbGxvY19zaXplKG4sIHMpLCB3YXJuX3VudXNlZF9yZXN1bHQpKQorKyMgZWxzZQorKyMgIGRlZmluZSBfX3VsX2NhbGxvY19zaXplKG4sIHMpCisrIyBlbmRpZgorKyNlbmRpZgorKworKyNpZiBfX2hhc19hdHRyaWJ1dGUocmV0dXJuc19ub25udWxsKSB8fCBfX0dOVUNfUFJFUkVRICg0LCA5KQorKyMgZGVmaW5lIF9fdWxfcmV0dXJuc19ub25udWxsIF9fYXR0cmlidXRlX18oKHJldHVybnNfbm9ubnVsbCkpCisrI2Vsc2UKKysjIGRlZmluZSBfX3VsX3JldHVybnNfbm9ubnVsbAorKyNlbmRpZgorKworKy8qCisrICogRm9yY2UgYSBjb21waWxhdGlvbiBlcnJvciBpZiBjb25kaXRpb24gaXMgdHJ1ZSwgYnV0IGFsc28gcHJvZHVjZSBhCisrICogcmVzdWx0IChvZiB2YWx1ZSAwIGFuZCB0eXBlIHNpemVfdCksIHNvIHRoZSBleHByZXNzaW9uIGNhbiBiZSB1c2VkCisrICogZS5nLiBpbiBhIHN0cnVjdHVyZSBpbml0aWFsaXplciAob3Igd2hlcmV2ZXIgZWxzZSBjb21tYSBleHByZXNzaW9ucworKyAqIGFyZW4ndCBwZXJtaXR0ZWQpLgorKyAqLworKyNkZWZpbmUgVUxfQlVJTERfQlVHX09OX1pFUk8oZSkgX19leHRlbnNpb25fXyAoc2l6ZW9mKHN0cnVjdCB7IGludDotISEoZSk7IH0pKQorKyNkZWZpbmUgQlVJTERfQlVHX09OX05VTEwoZSkgKCh2b2lkICopc2l6ZW9mKHN0cnVjdCB7IGludDotISEoZSk7IH0pKQorKworKyNpZm5kZWYgQVJSQVlfU0laRQorKyMgZGVmaW5lIEFSUkFZX1NJWkUoYXJyKSAoc2l6ZW9mKGFycikgLyBzaXplb2YoKGFycilbMF0pICsgX19tdXN0X2JlX2FycmF5KGFycikpCisrI2VuZGlmCisrCisrI2lmbmRlZiBQQVRIX01BWAorKyMgZGVmaW5lIFBBVEhfTUFYIDQwOTYKKysjZW5kaWYKKysKKysjaWZuZGVmIFRSVUUKKysjIGRlZmluZSBUUlVFIDEKKysjZW5kaWYKKysKKysjaWZuZGVmIEZBTFNFCisrIyBkZWZpbmUgRkFMU0UgMAorKyNlbmRpZgorKworKyNpZm5kZWYgbWluCisrIyBkZWZpbmUgbWluKHgsIHkpIF9fZXh0ZW5zaW9uX18gKHsJCVwKKysJX190eXBlb2ZfXyh4KSBfbWluMSA9ICh4KTsJCVwKKysJX190eXBlb2ZfXyh5KSBfbWluMiA9ICh5KTsJCVwKKysJKHZvaWQpICgmX21pbjEgPT0gJl9taW4yKTsJCVwKKysJX21pbjEgPCBfbWluMiA/IF9taW4xIDogX21pbjI7IH0pCisrI2VuZGlmCisrCisrI2lmbmRlZiBtYXgKKysjIGRlZmluZSBtYXgoeCwgeSkgX19leHRlbnNpb25fXyAoewkJXAorKwlfX3R5cGVvZl9fKHgpIF9tYXgxID0gKHgpOwkJXAorKwlfX3R5cGVvZl9fKHkpIF9tYXgyID0gKHkpOwkJXAorKwkodm9pZCkgKCZfbWF4MSA9PSAmX21heDIpOwkJXAorKwlfbWF4MSA+IF9tYXgyID8gX21heDEgOiBfbWF4MjsgfSkKKysjZW5kaWYKKysKKysjaWZuZGVmIGNtcF9udW1iZXJzCisrIyBkZWZpbmUgY21wX251bWJlcnMoeCwgeSkgX19leHRlbnNpb25fXyAoewlcCisrCV9fdHlwZW9mX18oeCkgX2EgPSAoeCk7CQkJXAorKwlfX3R5cGVvZl9fKHkpIF9iID0gKHkpOwkJCVwKKysJKHZvaWQpICgmX2EgPT0gJl9iKTsJCQlcCisrCV9hID09IF9iID8gMCA6IF9hID4gX2IgPyAxIDogLTE7IH0pCisrI2VuZGlmCisrCisrI2lmbmRlZiBvZmZzZXRvZgorKyNkZWZpbmUgb2Zmc2V0b2YoVFlQRSwgTUVNQkVSKSAoKHNpemVfdCkgJigoVFlQRSAqKTApLT5NRU1CRVIpCisrI2VuZGlmCisrCisrLyoKKysgKiBjb250YWluZXJfb2YgLSBjYXN0IGEgbWVtYmVyIG9mIGEgc3RydWN0dXJlIG91dCB0byB0aGUgY29udGFpbmluZyBzdHJ1Y3R1cmUKKysgKiBAcHRyOgl0aGUgcG9pbnRlciB0byB0aGUgbWVtYmVyLgorKyAqIEB0eXBlOgl0aGUgdHlwZSBvZiB0aGUgY29udGFpbmVyIHN0cnVjdCB0aGlzIGlzIGVtYmVkZGVkIGluLgorKyAqIEBtZW1iZXI6CXRoZSBuYW1lIG9mIHRoZSBtZW1iZXIgd2l0aGluIHRoZSBzdHJ1Y3QuCisrICovCisrI2lmbmRlZiBjb250YWluZXJfb2YKKysjZGVmaW5lIGNvbnRhaW5lcl9vZihwdHIsIHR5cGUsIG1lbWJlcikgX19leHRlbnNpb25fXyAoewlcCisrCWNvbnN0IF9fdHlwZW9mX18oICgodHlwZSAqKTApLT5tZW1iZXIgKSAqX19tcHRyID0gKHB0cik7IFwKKysJKHR5cGUgKikoIChjaGFyICopX19tcHRyIC0gb2Zmc2V0b2YodHlwZSxtZW1iZXIpICk7fSkKKysjZW5kaWYKKysKKysjaWZuZGVmIEhBVkVfUFJPR1JBTV9JTlZPQ0FUSU9OX1NIT1JUX05BTUUKKysjIGlmZGVmIEhBVkVfX19QUk9HTkFNRQorK2V4dGVybiBjaGFyICpfX3Byb2duYW1lOworKyMgIGRlZmluZSBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSBfX3Byb2duYW1lCisrIyBlbHNlCisrIyAgaWZkZWYgSEFWRV9HRVRFWEVDTkFNRQorKyMgICBkZWZpbmUgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUgXAorKwkJcHJvZ19pbnZfc2hfbm1fZnJvbV9maWxlKGdldGV4ZWNuYW1lKCksIDApCisrIyAgZWxzZQorKyMgICBkZWZpbmUgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUgXAorKwkJcHJvZ19pbnZfc2hfbm1fZnJvbV9maWxlKF9fRklMRV9fLCAxKQorKyMgIGVuZGlmCisrc3RhdGljIGNoYXIgcHJvZ19pbnZfc2hfbm1fYnVmWzI1Nl07Cisrc3RhdGljIGlubGluZSBjaGFyICoKKytwcm9nX2ludl9zaF9ubV9mcm9tX2ZpbGUoY2hhciAqZiwgY2hhciBzdHJpcGV4dCkKKyt7CisrCWNoYXIgKnQ7CisrCisrCWlmICgodCA9IHN0cnJjaHIoZiwgJy8nKSkgIT0gTlVMTCkKKysJCXQrKzsKKysJZWxzZQorKwkJdCA9IGY7CisrCisrCXN0cm5jcHkocHJvZ19pbnZfc2hfbm1fYnVmLCB0LCBzaXplb2YocHJvZ19pbnZfc2hfbm1fYnVmKSAtIDEpOworKwlwcm9nX2ludl9zaF9ubV9idWZbc2l6ZW9mKHByb2dfaW52X3NoX25tX2J1ZikgLSAxXSA9ICdcMCc7CisrCisrCWlmIChzdHJpcGV4dCAmJiAodCA9IHN0cnJjaHIocHJvZ19pbnZfc2hfbm1fYnVmLCAnLicpKSAhPSBOVUxMKQorKwkJKnQgPSAnXDAnOworKworKwlyZXR1cm4gcHJvZ19pbnZfc2hfbm1fYnVmOworK30KKysjIGVuZGlmCisrI2VuZGlmCisrCisrCisrI2lmbmRlZiBIQVZFX0VSUl9ICisrc3RhdGljIGlubGluZSB2b2lkCisrZXJybXNnKGNoYXIgZG9leGl0LCBpbnQgZXhjb2RlLCBjaGFyIGFkZGVyciwgY29uc3QgY2hhciAqZm10LCAuLi4pCisreworKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiAiLCBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSk7CisrCWlmIChmbXQgIT0gTlVMTCkgeworKwkJdmFfbGlzdCBhcmdwOworKwkJdmFfc3RhcnQoYXJncCwgZm10KTsKKysJCXZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcmdwKTsKKysJCXZhX2VuZChhcmdwKTsKKysJCWlmIChhZGRlcnIpCisrCQkJZnByaW50ZihzdGRlcnIsICI6ICIpOworKwl9CisrCWlmIChhZGRlcnIpCisrCQlmcHJpbnRmKHN0ZGVyciwgIiVtIik7CisrCWZwcmludGYoc3RkZXJyLCAiXG4iKTsKKysJaWYgKGRvZXhpdCkKKysJCWV4aXQoZXhjb2RlKTsKKyt9CisrCisrI2lmbmRlZiBIQVZFX0VSUgorKyMgZGVmaW5lIGVycihFLCBGTVQuLi4pIGVycm1zZygxLCBFLCAxLCBGTVQpCisrI2VuZGlmCisrCisrI2lmbmRlZiBIQVZFX0VSUlgKKysjIGRlZmluZSBlcnJ4KEUsIEZNVC4uLikgZXJybXNnKDEsIEUsIDAsIEZNVCkKKysjZW5kaWYKKysKKysjaWZuZGVmIEhBVkVfV0FSTgorKyMgZGVmaW5lIHdhcm4oRk1ULi4uKSBlcnJtc2coMCwgMCwgMSwgRk1UKQorKyNlbmRpZgorKworKyNpZm5kZWYgSEFWRV9XQVJOWAorKyMgZGVmaW5lIHdhcm54KEZNVC4uLikgZXJybXNnKDAsIDAsIDAsIEZNVCkKKysjZW5kaWYKKysjZW5kaWYgLyogIUhBVkVfRVJSX0ggKi8KKysKKysKKysvKiBEb24ndCB1c2UgaW5saW5lIGZ1bmN0aW9uIHRvIGF2b2lkICcjaW5jbHVkZSAibmxzLmgiJyBpbiBjLmgKKysgKi8KKysjZGVmaW5lIGVycnRyeWhlbHAoZXZhbCkgX19leHRlbnNpb25fXyAoeyBcCisrCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgJyVzIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgXAorKwkJCXByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lKTsgXAorKwlleGl0KGV2YWwpOyBcCisrfSkKKysKKysvKiBBZnRlciBmYWlsZWQgZXhlY3ZwKCkgKi8KKysjZGVmaW5lIEVYX0VYRUNfRkFJTEVECQkxMjYJLyogUHJvZ3JhbSBsb2NhdGVkLCBidXQgbm90IHVzYWJsZS4gKi8KKysjZGVmaW5lIEVYX0VYRUNfRU5PRU5UCQkxMjcJLyogQ291bGQgbm90IGZpbmQgcHJvZ3JhbSB0byBleGVjLiAgKi8KKysjZGVmaW5lIGVycmV4ZWMobmFtZSkJZXJyKGVycm5vID09IEVOT0VOVCA/IEVYX0VYRUNfRU5PRU5UIDogRVhfRVhFQ19GQUlMRUQsIFwKKysJCQlfKCJmYWlsZWQgdG8gZXhlY3V0ZSAlcyIpLCBuYW1lKQorKworKworK3N0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoY29uc3QpKSBpbnQgaXNfcG93ZXJfb2ZfMih1bnNpZ25lZCBsb25nIG51bSkKKyt7CisrCXJldHVybiAobnVtICE9IDAgJiYgKChudW0gJiAobnVtIC0gMSkpID09IDApKTsKKyt9CisrCisrI2lmbmRlZiBIQVZFX0xPRkZfVAorK3R5cGVkZWYgaW50NjRfdCBsb2ZmX3Q7CisrI2VuZGlmCisrCisrI2lmICFkZWZpbmVkKEhBVkVfRElSRkQpICYmICghZGVmaW5lZChIQVZFX0RFQ0xfRElSRkQpIHx8IEhBVkVfREVDTF9ESVJGRCA9PSAwKSAmJiBkZWZpbmVkKEhBVkVfRElSX0REX0ZEKQorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKysjaW5jbHVkZSA8ZGlyZW50Lmg+Cisrc3RhdGljIGlubGluZSBpbnQgZGlyZmQoRElSICpkKQorK3sKKysJcmV0dXJuIGQtPmRkX2ZkOworK30KKysjZW5kaWYKKysKKysvKgorKyAqIEZhbGxiYWNrIGRlZmluZXMgZm9yIG9sZCB2ZXJzaW9ucyBvZiBnbGliYworKyAqLworKyNpbmNsdWRlIDxmY250bC5oPgorKworKyNpZmRlZiBPX0NMT0VYRUMKKysjZGVmaW5lIFVMX0NMT0VYRUNTVFIJImUiCisrI2Vsc2UKKysjZGVmaW5lIFVMX0NMT0VYRUNTVFIJIiIKKysjZW5kaWYKKysKKysjaWZuZGVmIE9fQ0xPRVhFQworKyNkZWZpbmUgT19DTE9FWEVDIDAKKysjZW5kaWYKKysKKysjaWZkZWYgX19GcmVlQlNEX2tlcm5lbF9fCisrI2lmbmRlZiBGX0RVUEZEX0NMT0VYRUMKKysjZGVmaW5lIEZfRFVQRkRfQ0xPRVhFQwkxNwkvKiBMaWtlIEZfRFVQRkQsIGJ1dCBGRF9DTE9FWEVDIGlzIHNldCAqLworKyNlbmRpZgorKyNlbmRpZgorKworKworKyNpZm5kZWYgQUlfQUREUkNPTkZJRworKyNkZWZpbmUgQUlfQUREUkNPTkZJRyAweDAwMjAKKysjZW5kaWYKKysKKysjaWZuZGVmIElVVEY4CisrI2RlZmluZSBJVVRGOCAwMDQwMDAwCisrI2VuZGlmCisrCisrLyoKKysgKiBNQVhIT1NUTkFNRUxFTiByZXBsYWNlbWVudAorKyAqLworK3N0YXRpYyBpbmxpbmUgc2l6ZV90IGdldF9ob3N0bmFtZV9tYXgodm9pZCkKKyt7CisrCWxvbmcgbGVuID0gc3lzY29uZihfU0NfSE9TVF9OQU1FX01BWCk7CisrCisrCWlmICgwIDwgbGVuKQorKwkJcmV0dXJuIGxlbjsKKysKKysjaWZkZWYgTUFYSE9TVE5BTUVMRU4KKysJcmV0dXJuIE1BWEhPU1ROQU1FTEVOOworKyNlbGlmIEhPU1RfTkFNRV9NQVgKKysJcmV0dXJuIEhPU1RfTkFNRV9NQVg7CisrI2VuZGlmCisrCXJldHVybiA2NDsKKyt9CisrCisrCisrLyoKKysgKiBDb25zdGFudCBzdHJpbmdzIGZvciB1c2FnZSgpIGZ1bmN0aW9ucy4gRm9yIG1vcmUgaW5mbyBzZWUKKysgKiBEb2N1bWVudGF0aW9uL3tob3d0by11c2FnZS1mdW5jdGlvbi50eHQsYm9pbGVycGxhdGUuY30KKysgKi8KKysjZGVmaW5lIFVTQUdFX0hFQURFUiAgICAgKCJcblVzYWdlOlxuIikKKysjZGVmaW5lIFVTQUdFX09QVElPTlMgICAgKCJcbk9wdGlvbnM6XG4iKQorKyNkZWZpbmUgVVNBR0VfRlVOQ1RJT05TICAoIlxuRnVuY3Rpb25zOlxuIikKKysjZGVmaW5lIFVTQUdFX0NPTU1BTkRTICAgKCJcbkNvbW1hbmRzOlxuIikKKysjZGVmaW5lIFVTQUdFX0NPTFVNTlMgICAgKCJcbkF2YWlsYWJsZSBvdXRwdXQgY29sdW1uczpcbiIpCisrI2RlZmluZSBVU0FHRV9TRVBBUkFUT1IgICAgIlxuIgorKworKyNkZWZpbmUgVVNBR0VfT1BUU1RSX0hFTFAgICAgICgiZGlzcGxheSB0aGlzIGhlbHAiKQorKyNkZWZpbmUgVVNBR0VfT1BUU1RSX1ZFUlNJT04gICgiZGlzcGxheSB2ZXJzaW9uIikKKysKKysjZGVmaW5lIFVTQUdFX0hFTFBfT1BUSU9OUyhtYXJnX2RzYykgXAorKwkJIiUtIiAjbWFyZ19kc2MgInMlc1xuIiBcCisrCQkiJS0iICNtYXJnX2RzYyAicyVzXG4iIFwKKysJCSwgIiAtaCwgLS1oZWxwIiwgICAgVVNBR0VfT1BUU1RSX0hFTFAgXAorKwkJLCAiIC1WLCAtLXZlcnNpb24iLCBVU0FHRV9PUFRTVFJfVkVSU0lPTgorKworKyNkZWZpbmUgVVNBR0VfTUFOX1RBSUwoX21hbikgICAoIlxuRm9yIG1vcmUgZGV0YWlscyBzZWUgJXMuXG4iKSwgX21hbgorKworKyNkZWZpbmUgVVRJTF9MSU5VWF9WRVJTSU9OICgiJXMgZnJvbSAlc1xuIiksIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lLCBQQUNLQUdFX1NUUklORworKworKyNkZWZpbmUgcHJpbnRfdmVyc2lvbihldmFsKSBfX2V4dGVuc2lvbl9fICh7IFwKKysJCXByaW50ZihVVElMX0xJTlVYX1ZFUlNJT04pOyBcCisrCQlleGl0KGV2YWwpOyBcCisrfSkKKysKKysvKgorKyAqIHNjYW5mIG1vZGlmaWVycyBmb3IgInN0cmluZ3MgYWxsb2NhdGlvbiIKKysgKi8KKysjaWZkZWYgSEFWRV9TQ0FORl9NU19NT0RJRklFUgorKyNkZWZpbmUgVUxfU0NOc0EJIiVtcyIKKysjZWxpZiBkZWZpbmVkKEhBVkVfU0NBTkZfQVNfTU9ESUZJRVIpCisrI2RlZmluZSBVTF9TQ05zQQkiJWFzIgorKyNlbmRpZgorKworKy8qCisrICogc2VlayBzdHVmZgorKyAqLworKyNpZm5kZWYgU0VFS19EQVRBCisrIyBkZWZpbmUgU0VFS19EQVRBCTMKKysjZW5kaWYKKysjaWZuZGVmIFNFRUtfSE9MRQorKyMgZGVmaW5lIFNFRUtfSE9MRQk0CisrI2VuZGlmCisrCisrCisrLyoKKysgKiBNYWNyb3MgdG8gY29udmVydCAjZGVmaW5lJ2l0aW9ucyB0byBzdHJpbmdzLCBmb3IgZXhhbXBsZQorKyAqICNkZWZpbmUgWFlYWFkgNDIKKysgKiBwcmludGYgKCIlcz0lc1xuIiwgc3RyaW5naWZ5KFhZWFhZKSwgc3RyaW5naWZ5X3ZhbHVlKFhZWFhZKSk7CisrICovCisrI2RlZmluZSBzdHJpbmdpZnlfdmFsdWUocykgc3RyaW5naWZ5KHMpCisrI2RlZmluZSBzdHJpbmdpZnkocykgI3MKKysKKysvKgorKyAqIFVMX0FTQU5fQkxBQ0tMSVNUIGlzIGEgbWFjcm8gdG8gdGVsbCBBZGRyZXNzU2FuaXRpemVyIChhIGNvbXBpbGUtdGltZQorKyAqIGluc3RydW1lbnRhdGlvbiBzaGlwcGVkIHdpdGggQ2xhbmcgYW5kIEdDQykgdG8gbm90IGluc3RydW1lbnQgdGhlCisrICogYW5ub3RhdGVkIGZ1bmN0aW9uLiAgRnVydGhlcm1vcmUsIGl0IHdpbGwgcHJldmVudCB0aGUgY29tcGlsZXIgZnJvbQorKyAqIGlubGluaW5nIHRoZSBmdW5jdGlvbiBiZWNhdXNlIGlubGluaW5nIGN1cnJlbnRseSBicmVha3MgdGhlIGJsYWNrbGlzdGluZworKyAqIG1lY2hhbmlzbSBvZiBBZGRyZXNzU2FuaXRpemVyLgorKyAqLworKyNpZiBfX2hhc19mZWF0dXJlKGFkZHJlc3Nfc2FuaXRpemVyKSAmJiBfX2hhc19hdHRyaWJ1dGUobm9fc2FuaXRpemVfbWVtb3J5KSAmJiBfX2hhc19hdHRyaWJ1dGUobm9fc2FuaXRpemVfYWRkcmVzcykKKysjIGRlZmluZSBVTF9BU0FOX0JMQUNLTElTVCBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIF9fYXR0cmlidXRlX18oKG5vX3Nhbml0aXplX21lbW9yeSkpIF9fYXR0cmlidXRlX18oKG5vX3Nhbml0aXplX2FkZHJlc3MpKQorKyNlbHNlCisrIyBkZWZpbmUgVUxfQVNBTl9CTEFDS0xJU1QJLyogbm90aGluZyAqLworKyNlbmRpZgorKworKy8qCisrICogTm90ZSB0aGF0IHN5c2NvbmYoX1NDX0dFVFBXX1JfU0laRV9NQVgpIHJldHVybnMgKmluaXRpYWwqIHN1Z2dlc3RlZCBzaXplIGZvcgorKyAqIHB3ZCBidWZmZXIgYW5kIGluIHNvbWUgY2FzZXMgaXQgaXMgbm90IGxhcmdlIGVub3VnaC4gU2VlIFBPU0lYIGFuZAorKyAqIGdldHB3bmFtX3IgbWFuIHBhZ2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKi8KKysjZGVmaW5lIFVMX0dFVFBXX0JVRlNJWgkoMTYgKiAxMDI0KQorKworKy8qCisrICogRGFyd2luIG9yIG90aGVyIEJTRHMgbWF5IG9ubHkgaGF2ZSBNQVBfQU5PTi4gVG8gZ2V0IGl0IG9uIERhcndpbiB3ZSBtdXN0CisrICogZGVmaW5lIF9EQVJXSU5fQ19TT1VSQ0UgYmVmb3JlIGluY2x1ZGluZyBzeXMvbW1hbi5oLiBXZSBkbyB0aGlzIGluIGNvbmZpZy5oLgorKyAqLworKyNpZiAhZGVmaW5lZCBNQVBfQU5PTllNT1VTICYmIGRlZmluZWQgTUFQX0FOT04KKysjIGRlZmluZSBNQVBfQU5PTllNT1VTICAoTUFQX0FOT04pCisrI2VuZGlmCisrCisrI2VuZGlmIC8qIFVUSUxfTElOVVhfQ19IICovCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jIGIvbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNjM2MTU4OTZiMAorLS0tIC9kZXYvbnVsbAorKysrIGIvbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jCitAQCAtMCwwICsxLDUyOCBAQAorKy8qCisrICogaGFyZGxpbmsgLSBjb25zb2xpZGF0ZSBkdXBsaWNhdGUgZmlsZXMgdmlhIGhhcmRsaW5rcworKyAqCisrICogQ29weXJpZ2h0IChDKSAyMDE4IFJlZCBIYXQsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysgKiBXcml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+CisrICoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTkgS2FyZWwgWmFrIDxremFrQHJlZGhhdC5jb20+CisrICoKKysgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd291bGQgYmUgdXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisrICogNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KKysgKi8KKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxnZXRvcHQuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisrI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxkaXJlbnQuaD4KKysjaW5jbHVkZSA8ZmNudGwuaD4KKysjaW5jbHVkZSA8ZXJybm8uaD4KKysjaWZkZWYgSEFWRV9QQ1JFCisrIyBkZWZpbmUgUENSRTJfQ09ERV9VTklUX1dJRFRIIDgKKysjIGluY2x1ZGUgPHBjcmUyLmg+CisrI2VuZGlmCisrCisrI2luY2x1ZGUgImMuaCIKKysjaW5jbHVkZSAieGFsbG9jLmgiCisrI2luY2x1ZGUgIm5scy5oIgorKyNpbmNsdWRlICJjbG9zZXN0cmVhbS5oIgorKworKyNkZWZpbmUgTkhBU0ggICAoMTw8MTcpICAvKiBNdXN0IGJlIGEgcG93ZXIgb2YgMiEgKi8KKysjZGVmaW5lIE5CVUYgICAgNjQKKysKKytzdHJ1Y3QgaGFyZGxpbmtfZmlsZTsKKysKKytzdHJ1Y3QgaGFyZGxpbmtfaGFzaCB7CisrCXN0cnVjdCBoYXJkbGlua19oYXNoICpuZXh0OworKwlzdHJ1Y3QgaGFyZGxpbmtfZmlsZSAqY2hhaW47CisrCW9mZl90IHNpemU7CisrCXRpbWVfdCBtdGltZTsKKyt9OworKworK3N0cnVjdCBoYXJkbGlua19kaXIgeworKwlzdHJ1Y3QgaGFyZGxpbmtfZGlyICpuZXh0OworKwljaGFyIG5hbWVbXTsKKyt9OworKworK3N0cnVjdCBoYXJkbGlua19maWxlIHsKKysJc3RydWN0IGhhcmRsaW5rX2ZpbGUgKm5leHQ7CisrCWlub190IGlubzsKKysJZGV2X3QgZGV2OworKwl1bnNpZ25lZCBpbnQgY2tzdW07CisrCWNoYXIgbmFtZVtdOworK307CisrCisrc3RydWN0IGhhcmRsaW5rX2R5bnN0ciB7CisrCWNoYXIgKmJ1ZjsKKysJc2l6ZV90IGFsbG9jOworK307CisrCisrc3RydWN0IGhhcmRsaW5rX2N0bCB7CisrCXN0cnVjdCBoYXJkbGlua19kaXIgKmRpcnM7CisrCXN0cnVjdCBoYXJkbGlua19oYXNoICpocHNbTkhBU0hdOworKwljaGFyIGlvYnVmMVtCVUZTSVpdOworKwljaGFyIGlvYnVmMltCVUZTSVpdOworKwkvKiBzdW1tYXJ5IGNvdW50ZXJzICovCisrCXVuc2lnbmVkIGxvbmcgbG9uZyBuZGlyczsKKysJdW5zaWduZWQgbG9uZyBsb25nIG5vYmplY3RzOworKwl1bnNpZ25lZCBsb25nIGxvbmcgbnJlZ2ZpbGVzOworKwl1bnNpZ25lZCBsb25nIGxvbmcgbmNvbXA7CisrCXVuc2lnbmVkIGxvbmcgbG9uZyBubGlua3M7CisrCXVuc2lnbmVkIGxvbmcgbG9uZyBuc2F2ZWQ7CisrCS8qIGN1cnJlbnQgZGV2aWNlICovCisrCWRldl90IGRldjsKKysJLyogZmxhZ3MgKi8KKysJdW5zaWduZWQgaW50IHZlcmJvc2U7CisrCXVuc2lnbmVkIGludAorKwkJbm9fbGluazoxLAorKwkJY29udGVudF9vbmx5OjEsCisrCQlmb3JjZToxOworK307CisrLyogY3RsIGlzIGluIGdsb2JhbCBzY29wZSBkdWUgdXNlIGluIGF0ZXhpdCgpICovCisrc3RydWN0IGhhcmRsaW5rX2N0bCBnbG9iYWxfY3RsOworKworK19fYXR0cmlidXRlX18gKChhbHdheXNfaW5saW5lKSkKKytzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBoYXNoKG9mZl90IHNpemUsIHRpbWVfdCBtdGltZSkKKyt7CisrCXJldHVybiAoc2l6ZSBeIG10aW1lKSAmIChOSEFTSCAtIDEpOworK30KKysKKytfX2F0dHJpYnV0ZV9fICgoYWx3YXlzX2lubGluZSkpCisrc3RhdGljIGlubGluZSBpbnQgc3RjbXAoc3RydWN0IHN0YXQgKnN0MSwgc3RydWN0IHN0YXQgKnN0MiwgaW50IGNvbnRlbnRfc2NvcGUpCisreworKwlpZiAoY29udGVudF9zY29wZSkKKysJCXJldHVybiBzdDEtPnN0X3NpemUgIT0gc3QyLT5zdF9zaXplOworKworKwlyZXR1cm4gc3QxLT5zdF9tb2RlICE9IHN0Mi0+c3RfbW9kZQorKwkJfHwgc3QxLT5zdF91aWQgIT0gc3QyLT5zdF91aWQKKysJCXx8IHN0MS0+c3RfZ2lkICE9IHN0Mi0+c3RfZ2lkCisrCQl8fCBzdDEtPnN0X3NpemUgIT0gc3QyLT5zdF9zaXplCisrCQl8fCBzdDEtPnN0X210aW1lICE9IHN0Mi0+c3RfbXRpbWU7CisrfQorKworK3N0YXRpYyB2b2lkIHByaW50X3N1bW1hcnkodm9pZCkKKyt7CisrCXN0cnVjdCBoYXJkbGlua19jdGwgY29uc3QgKmNvbnN0IGN0bCA9ICZnbG9iYWxfY3RsOworKworKwlpZiAoIWN0bC0+dmVyYm9zZSkKKysJCXJldHVybjsKKysKKysJaWYgKGN0bC0+dmVyYm9zZSA+IDEgJiYgY3RsLT5ubGlua3MpCisrCQlmcHV0YygnXG4nLCBzdGRvdXQpOworKworKwlwcmludGYoXygiRGlyZWN0b3JpZXM6ICAgJTlsbGRcbiIpLCBjdGwtPm5kaXJzKTsKKysJcHJpbnRmKF8oIk9iamVjdHM6ICAgICAgICU5bGxkXG4iKSwgY3RsLT5ub2JqZWN0cyk7CisrCXByaW50ZihfKCJSZWd1bGFyIGZpbGVzOiAlOWxsZFxuIiksIGN0bC0+bnJlZ2ZpbGVzKTsKKysJcHJpbnRmKF8oIkNvbXBhcmlzb25zOiAgICU5bGxkXG4iKSwgY3RsLT5uY29tcCk7CisrCXByaW50ZiggICIlcyU5bGxkXG4iLCAoY3RsLT5ub19saW5rID8KKysJICAgICAgIF8oIldvdWxkIGxpbms6ICAgICIpIDoKKysJICAgICAgIF8oIkxpbmtlZDogICAgICAgICIpKSwgY3RsLT5ubGlua3MpOworKwlwcmludGYoICAiJXMgJTlsbGRcbiIsIChjdGwtPm5vX2xpbmsgPworKwkgICAgICAgXygiV291bGQgc2F2ZTogICAiKSA6CisrCSAgICAgICBfKCJTYXZlZDogICAgICAgICIpKSwgY3RsLT5uc2F2ZWQpOworK30KKysKKytzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKSB1c2FnZSh2b2lkKQorK3sKKysJZnB1dHMoVVNBR0VfSEVBREVSLCBzdGRvdXQpOworKwlwcmludGYoXygiICVzIFtvcHRpb25zXSBkaXJlY3RvcnkuLi5cbiIpLCBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSk7CisrCisrCWZwdXRzKFVTQUdFX1NFUEFSQVRPUiwgc3Rkb3V0KTsKKysJcHV0cyhfKCJDb25zb2xpZGF0ZSBkdXBsaWNhdGUgZmlsZXMgdXNpbmcgaGFyZGxpbmtzLiIpKTsKKysKKysJZnB1dHMoVVNBR0VfT1BUSU9OUywgc3Rkb3V0KTsKKysJcHV0cyhfKCIgLWMsIC0tY29udGVudCAgICAgICAgICBjb21wYXJlIG9ubHkgY29udGVudHMsIGlnbm9yZSBwZXJtaXNzaW9uLCBldGMuIikpOworKwlwdXRzKF8oIiAtbiwgLS1kcnktcnVuICAgICAgICAgIGRvbid0IGFjdHVhbGx5IGxpbmsgYW55dGhpbmciKSk7CisrCXB1dHMoXygiIC12LCAtLXZlcmJvc2UgICAgICAgICAgcHJpbnQgc3VtbWFyeSBhZnRlciBoYXJkbGlua2luZyIpKTsKKysJcHV0cyhfKCIgLXZ2ICAgICAgICAgICAgICAgICAgICBwcmludCBldmVyeSBoYXJkbGlua2VkIGZpbGUgYW5kIHN1bW1hcnkiKSk7CisrCXB1dHMoXygiIC1mLCAtLWZvcmNlICAgICAgICAgICAgZm9yY2UgaGFyZGxpbmtpbmcgYWNyb3NzIGZpbGVzeXN0ZW1zIikpOworKwlwdXRzKF8oIiAteCwgLS1leGNsdWRlIDxyZWdleD4gIGV4Y2x1ZGUgZmlsZXMgbWF0Y2hpbmcgcGF0dGVybiIpKTsKKysKKysJZnB1dHMoVVNBR0VfU0VQQVJBVE9SLCBzdGRvdXQpOworKwlwcmludGYoVVNBR0VfSEVMUF9PUFRJT05TKDE2KSk7IC8qIGNoYXIgb2Zmc2V0IHRvIGFsaWduIG9wdGlvbiBkZXNjcmlwdGlvbnMgKi8KKysJcHJpbnRmKFVTQUdFX01BTl9UQUlMKCJoYXJkbGluaygxKSIpKTsKKysJZXhpdChFWElUX1NVQ0NFU1MpOworK30KKysKKytfX2F0dHJpYnV0ZV9fICgoYWx3YXlzX2lubGluZSkpCisrc3RhdGljIGlubGluZSBzaXplX3QgYWRkMihzaXplX3QgYSwgc2l6ZV90IGIpCisreworKwlzaXplX3Qgc3VtID0gYSArIGI7CisrCisrCWlmIChzdW0gPCBhKQorKwkJZXJyeChFWElUX0ZBSUxVUkUsIF8oImludGVnZXIgb3ZlcmZsb3ciKSk7CisrCXJldHVybiBzdW07CisrfQorKworK19fYXR0cmlidXRlX18gKChhbHdheXNfaW5saW5lKSkKKytzdGF0aWMgaW5saW5lIHNpemVfdCBhZGQzKHNpemVfdCBhLCBzaXplX3QgYiwgc2l6ZV90IGMpCisreworKwlyZXR1cm4gYWRkMihhZGQyKGEsIGIpLCBjKTsKKyt9CisrCisrc3RhdGljIHZvaWQgZ3Jvd3N0cihzdHJ1Y3QgaGFyZGxpbmtfZHluc3RyICpzdHIsIHNpemVfdCBuZXdsZW4pCisreworKwlpZiAobmV3bGVuIDwgc3RyLT5hbGxvYykKKysJCXJldHVybjsKKysJc3RyLT5idWYgPSB4cmVhbGxvYyhzdHItPmJ1Ziwgc3RyLT5hbGxvYyA9IGFkZDIobmV3bGVuLCAxKSk7CisrfQorKworK3N0YXRpYyB2b2lkIHByb2Nlc3NfcGF0aChzdHJ1Y3QgaGFyZGxpbmtfY3RsICpjdGwsIGNvbnN0IGNoYXIgKm5hbWUpCisreworKwlzdHJ1Y3Qgc3RhdCBzdCwgc3QyLCBzdDM7CisrCWNvbnN0IHNpemVfdCBuYW1lbGVuID0gc3RybGVuKG5hbWUpOworKworKwljdGwtPm5vYmplY3RzKys7CisrCWlmIChsc3RhdChuYW1lLCAmc3QpKQorKwkJcmV0dXJuOworKworKwlpZiAoc3Quc3RfZGV2ICE9IGN0bC0+ZGV2ICYmICFjdGwtPmZvcmNlKSB7CisrCQlpZiAoY3RsLT5kZXYpCisrCQkJZXJyeChFWElUX0ZBSUxVUkUsCisrCQkJICAgICBfKCIlcyBpcyBvbiBkaWZmZXJlbnQgZmlsZXN5c3RlbSB0aGFuIHRoZSByZXN0ICIKKysJCQkgICAgICAgIih1c2UgLWYgb3B0aW9uIHRvIG92ZXJyaWRlKS4iKSwgbmFtZSk7CisrCQljdGwtPmRldiA9IHN0LnN0X2RldjsKKysJfQorKwlpZiAoU19JU0RJUihzdC5zdF9tb2RlKSkgeworKwkJc3RydWN0IGhhcmRsaW5rX2RpciAqZHAgPSB4bWFsbG9jKGFkZDMoc2l6ZW9mKCpkcCksIG5hbWVsZW4sIDEpKTsKKysJCW1lbWNweShkcC0+bmFtZSwgbmFtZSwgbmFtZWxlbiArIDEpOworKwkJZHAtPm5leHQgPSBjdGwtPmRpcnM7CisrCQljdGwtPmRpcnMgPSBkcDsKKysKKysJfSBlbHNlIGlmIChTX0lTUkVHKHN0LnN0X21vZGUpKSB7CisrCQlpbnQgZmQsIGk7CisrCQlzdHJ1Y3QgaGFyZGxpbmtfZmlsZSAqZnAsICpmcDI7CisrCQlzdHJ1Y3QgaGFyZGxpbmtfaGFzaCAqaHA7CisrCQljb25zdCBjaGFyICpuMSwgKm4yOworKwkJdW5zaWduZWQgaW50IGJ1ZltOQlVGXTsKKysJCWludCBja3N1bXNpemUgPSBzaXplb2YoYnVmKTsKKysJCXVuc2lnbmVkIGludCBja3N1bTsKKysJCXRpbWVfdCBtdGltZSA9IGN0bC0+Y29udGVudF9vbmx5ID8gMCA6IHN0LnN0X210aW1lOworKwkJdW5zaWduZWQgaW50IGhzaCA9IGhhc2goc3Quc3Rfc2l6ZSwgbXRpbWUpOworKwkJb2ZmX3QgZnNpemU7CisrCisrCQljdGwtPm5yZWdmaWxlcysrOworKwkJaWYgKGN0bC0+dmVyYm9zZSA+IDEpCisrCQkJcHJpbnRmKCIlc1xuIiwgbmFtZSk7CisrCisrCQlmZCA9IG9wZW4obmFtZSwgT19SRE9OTFkpOworKwkJaWYgKGZkIDwgMCkKKysJCQlyZXR1cm47CisrCisrCQlpZiAoKHNpemVfdClzdC5zdF9zaXplIDwgc2l6ZW9mKGJ1ZikpIHsKKysJCQlja3N1bXNpemUgPSBzdC5zdF9zaXplOworKwkJCW1lbXNldCgoKGNoYXIgKilidWYpICsgY2tzdW1zaXplLCAwLAorKwkJCSAgICAgICAoc2l6ZW9mKGJ1ZikgLSBja3N1bXNpemUpICUgc2l6ZW9mKGJ1ZlswXSkpOworKwkJfQorKwkJaWYgKHJlYWQoZmQsIGJ1ZiwgY2tzdW1zaXplKSAhPSBja3N1bXNpemUpIHsKKysJCQljbG9zZShmZCk7CisrCQkJcmV0dXJuOworKwkJfQorKwkJY2tzdW1zaXplID0gKGNrc3Vtc2l6ZSArIHNpemVvZihidWZbMF0pIC0gMSkgLyBzaXplb2YoYnVmWzBdKTsKKysJCWZvciAoaSA9IDAsIGNrc3VtID0gMDsgaSA8IGNrc3Vtc2l6ZTsgaSsrKSB7CisrCQkJaWYgKGNrc3VtICsgYnVmW2ldIDwgY2tzdW0pCisrCQkJCWNrc3VtICs9IGJ1ZltpXSArIDE7CisrCQkJZWxzZQorKwkJCQlja3N1bSArPSBidWZbaV07CisrCQl9CisrCQlmb3IgKGhwID0gY3RsLT5ocHNbaHNoXTsgaHA7IGhwID0gaHAtPm5leHQpIHsKKysJCQlpZiAoaHAtPnNpemUgPT0gc3Quc3Rfc2l6ZSAmJiBocC0+bXRpbWUgPT0gbXRpbWUpCisrCQkJCWJyZWFrOworKwkJfQorKwkJaWYgKCFocCkgeworKwkJCWhwID0geG1hbGxvYyhzaXplb2YoKmhwKSk7CisrCQkJaHAtPnNpemUgPSBzdC5zdF9zaXplOworKwkJCWhwLT5tdGltZSA9IG10aW1lOworKwkJCWhwLT5jaGFpbiA9IE5VTEw7CisrCQkJaHAtPm5leHQgPSBjdGwtPmhwc1toc2hdOworKwkJCWN0bC0+aHBzW2hzaF0gPSBocDsKKysJCX0KKysJCWZvciAoZnAgPSBocC0+Y2hhaW47IGZwOyBmcCA9IGZwLT5uZXh0KSB7CisrCQkJaWYgKGZwLT5ja3N1bSA9PSBja3N1bSkKKysJCQkJYnJlYWs7CisrCQl9CisrCQlmb3IgKGZwMiA9IGZwOyBmcDIgJiYgZnAyLT5ja3N1bSA9PSBja3N1bTsgZnAyID0gZnAyLT5uZXh0KSB7CisrCQkJaWYgKGZwMi0+aW5vID09IHN0LnN0X2lubyAmJiBmcDItPmRldiA9PSBzdC5zdF9kZXYpIHsKKysJCQkJY2xvc2UoZmQpOworKwkJCQlyZXR1cm47CisrCQkJfQorKwkJfQorKwkJZm9yIChmcDIgPSBmcDsgZnAyICYmIGZwMi0+Y2tzdW0gPT0gY2tzdW07IGZwMiA9IGZwMi0+bmV4dCkgeworKworKwkJCWlmICghbHN0YXQoZnAyLT5uYW1lLCAmc3QyKSAmJiBTX0lTUkVHKHN0Mi5zdF9tb2RlKSAmJgorKwkJCSAgICAhc3RjbXAoJnN0LCAmc3QyLCBjdGwtPmNvbnRlbnRfb25seSkgJiYKKysJCQkgICAgc3QyLnN0X2lubyAhPSBzdC5zdF9pbm8gJiYKKysJCQkgICAgc3QyLnN0X2RldiA9PSBzdC5zdF9kZXYpIHsKKysKKysJCQkJaW50IGZkMiA9IG9wZW4oZnAyLT5uYW1lLCBPX1JET05MWSk7CisrCQkJCWlmIChmZDIgPCAwKQorKwkJCQkJY29udGludWU7CisrCisrCQkJCWlmIChmc3RhdChmZDIsICZzdDIpIHx8ICFTX0lTUkVHKHN0Mi5zdF9tb2RlKQorKwkJCQkgICAgfHwgc3QyLnN0X3NpemUgPT0gMCkgeworKwkJCQkJY2xvc2UoZmQyKTsKKysJCQkJCWNvbnRpbnVlOworKwkJCQl9CisrCQkJCWN0bC0+bmNvbXArKzsKKysJCQkJbHNlZWsoZmQsIDAsIFNFRUtfU0VUKTsKKysKKysJCQkJZm9yIChmc2l6ZSA9IHN0LnN0X3NpemU7IGZzaXplID4gMDsKKysJCQkJICAgICBmc2l6ZSAtPSAob2ZmX3Qpc2l6ZW9mKGN0bC0+aW9idWYxKSkgeworKwkJCQkJc3NpemVfdCB4c3o7CisrCQkJCQlzc2l6ZV90IHJzaXplID0gZnNpemUgPiAoc3NpemVfdCkgc2l6ZW9mKGN0bC0+aW9idWYxKSA/CisrCQkJCQkJCShzc2l6ZV90KSBzaXplb2YoY3RsLT5pb2J1ZjEpIDogZnNpemU7CisrCisrCQkJCQlpZiAoKHhzeiA9IHJlYWQoZmQsIGN0bC0+aW9idWYxLCByc2l6ZSkpICE9IHJzaXplKQorKwkJCQkJCXdhcm4oXygiY2Fubm90IHJlYWQgJXMiKSwgbmFtZSk7CisrCQkJCQllbHNlIGlmICgoeHN6ID0gcmVhZChmZDIsIGN0bC0+aW9idWYyLCByc2l6ZSkpICE9IHJzaXplKQorKwkJCQkJCXdhcm4oXygiY2Fubm90IHJlYWQgJXMiKSwgZnAyLT5uYW1lKTsKKysKKysJCQkJCWlmICh4c3ogIT0gcnNpemUpIHsKKysJCQkJCQljbG9zZShmZCk7CisrCQkJCQkJY2xvc2UoZmQyKTsKKysJCQkJCQlyZXR1cm47CisrCQkJCQl9CisrCQkJCQlpZiAobWVtY21wKGN0bC0+aW9idWYxLCBjdGwtPmlvYnVmMiwgcnNpemUpKQorKwkJCQkJCWJyZWFrOworKwkJCQl9CisrCQkJCWNsb3NlKGZkMik7CisrCQkJCWlmIChmc2l6ZSA+IDApCisrCQkJCQljb250aW51ZTsKKysJCQkJaWYgKGxzdGF0KG5hbWUsICZzdDMpKSB7CisrCQkJCQl3YXJuKF8oImNhbm5vdCBzdGF0ICVzIiksIG5hbWUpOworKwkJCQkJY2xvc2UoZmQpOworKwkJCQkJcmV0dXJuOworKwkJCQl9CisrCQkJCXN0My5zdF9hdGltZSA9IHN0LnN0X2F0aW1lOworKwkJCQlpZiAoc3RjbXAoJnN0LCAmc3QzLCAwKSkgeworKwkJCQkJd2FybngoXygiZmlsZSAlcyBjaGFuZ2VkIHVuZGVybmVhdGggdXMiKSwgbmFtZSk7CisrCQkJCQljbG9zZShmZCk7CisrCQkJCQlyZXR1cm47CisrCQkJCX0KKysJCQkJbjEgPSBmcDItPm5hbWU7CisrCQkJCW4yID0gbmFtZTsKKysKKysJCQkJaWYgKCFjdGwtPm5vX2xpbmspIHsKKysJCQkJCWNvbnN0IGNoYXIgKnN1ZmZpeCA9CisrCQkJCQkgICAgIi4kJCRfX19jbGVhbml0X19fJCQkIjsKKysJCQkJCWNvbnN0IHNpemVfdCBzdWZmaXhsZW4gPSBzdHJsZW4oc3VmZml4KTsKKysJCQkJCXNpemVfdCBuMmxlbiA9IHN0cmxlbihuMik7CisrCQkJCQlzdHJ1Y3QgaGFyZGxpbmtfZHluc3RyIG5hbTIgPSB7IE5VTEwsIDAgfTsKKysKKysJCQkJCWdyb3dzdHIoJm5hbTIsIGFkZDIobjJsZW4sIHN1ZmZpeGxlbikpOworKwkJCQkJbWVtY3B5KG5hbTIuYnVmLCBuMiwgbjJsZW4pOworKwkJCQkJbWVtY3B5KCZuYW0yLmJ1ZltuMmxlbl0sIHN1ZmZpeCwKKysJCQkJCSAgICAgICBzdWZmaXhsZW4gKyAxKTsKKysJCQkJCS8qIEZpcnN0IGNyZWF0ZSBhIHRlbXBvcmFyeSBsaW5rIHRvIG4xIHVuZGVyIGEgbmV3IG5hbWUgKi8KKysJCQkJCWlmIChsaW5rKG4xLCBuYW0yLmJ1ZikpIHsKKysJCQkJCQl3YXJuKF8oImZhaWxlZCB0byBoYXJkbGluayAlcyB0byAlcyAoY3JlYXRlIHRlbXBvcmFyeSBsaW5rIGFzICVzIGZhaWxlZCkiKSwKKysJCQkJCQkJbjEsIG4yLCBuYW0yLmJ1Zik7CisrCQkJCQkJZnJlZShuYW0yLmJ1Zik7CisrCQkJCQkJY29udGludWU7CisrCQkJCQl9CisrCQkJCQkvKiBUaGVuIHJlbmFtZSBpbnRvIHBsYWNlIG92ZXIgdGhlIGV4aXN0aW5nIG4yICovCisrCQkJCQlpZiAocmVuYW1lKG5hbTIuYnVmLCBuMikpIHsKKysJCQkJCQl3YXJuKF8oImZhaWxlZCB0byBoYXJkbGluayAlcyB0byAlcyAocmVuYW1lIHRlbXBvcmFyeSBsaW5rIHRvICVzIGZhaWxlZCkiKSwKKysJCQkJCQkJbjEsIG4yLCBuMik7CisrCQkJCQkJLyogU29tZXRoaW5nIHdlbnQgd3JvbmcsIHRyeSB0byByZW1vdmUgdGhlIG5vdyByZWR1bmRhbnQgdGVtcG9yYXJ5IGxpbmsgKi8KKysJCQkJCQlpZiAodW5saW5rKG5hbTIuYnVmKSkKKysJCQkJCQkJd2FybihfKCJmYWlsZWQgdG8gcmVtb3ZlIHRlbXBvcmFyeSBsaW5rICVzIiksIG5hbTIuYnVmKTsKKysJCQkJCQlmcmVlKG5hbTIuYnVmKTsKKysJCQkJCQljb250aW51ZTsKKysJCQkJCX0KKysJCQkJCWZyZWUobmFtMi5idWYpOworKwkJCQl9CisrCQkJCWN0bC0+bmxpbmtzKys7CisrCQkJCWlmIChzdDMuc3RfbmxpbmsgPiAxKSB7CisrCQkJCQkvKiBXZSBhY3R1YWxseSBkaWQgbm90IHNhdmUgYW55dGhpbmcgdGhpcyB0aW1lLCBzaW5jZSB0aGUgbGluayBzZWNvbmQgYXJndW1lbnQKKysJCQkJCSAgIGhhZCBzb21lIG90aGVyIGxpbmtzIGFzIHdlbGwuICAqLworKwkJCQkJaWYgKGN0bC0+dmVyYm9zZSA+IDEpCisrCQkJCQkJcHJpbnRmKF8oIiAlcyAlcyB0byAlc1xuIiksCisrCQkJCQkJCShjdGwtPm5vX2xpbmsgPyBfKCJXb3VsZCBsaW5rIikgOiBfKCJMaW5rZWQiKSksCisrCQkJCQkJCW4xLCBuMik7CisrCQkJCX0gZWxzZSB7CisrCQkJCQljdGwtPm5zYXZlZCArPSAoKHN0LnN0X3NpemUgKyA0MDk1KSAvIDQwOTYpICogNDA5NjsKKysJCQkJCWlmIChjdGwtPnZlcmJvc2UgPiAxKQorKwkJCQkJCXByaW50ZihfKCIgJXMgJXMgdG8gJXMsICVzICVqZFxuIiksCisrCQkJCQkJCShjdGwtPm5vX2xpbmsgPyBfKCJXb3VsZCBsaW5rIikgOiBfKCJMaW5rZWQiKSksCisrCQkJCQkJCW4xLCBuMiwKKysJCQkJCQkJKGN0bC0+bm9fbGluayA/IF8oIndvdWxkIHNhdmUiKSA6IF8oInNhdmVkIikpLAorKwkJCQkJCQkoaW50bWF4X3Qpc3Quc3Rfc2l6ZSk7CisrCQkJCX0KKysJCQkJY2xvc2UoZmQpOworKwkJCQlyZXR1cm47CisrCQkJfQorKwkJfQorKwkJZnAyID0geG1hbGxvYyhhZGQzKHNpemVvZigqZnAyKSwgbmFtZWxlbiwgMSkpOworKwkJY2xvc2UoZmQpOworKwkJZnAyLT5pbm8gPSBzdC5zdF9pbm87CisrCQlmcDItPmRldiA9IHN0LnN0X2RldjsKKysJCWZwMi0+Y2tzdW0gPSBja3N1bTsKKysJCW1lbWNweShmcDItPm5hbWUsIG5hbWUsIG5hbWVsZW4gKyAxKTsKKysKKysJCWlmIChmcCkgeworKwkJCWZwMi0+bmV4dCA9IGZwLT5uZXh0OworKwkJCWZwLT5uZXh0ID0gZnAyOworKwkJfSBlbHNlIHsKKysJCQlmcDItPm5leHQgPSBocC0+Y2hhaW47CisrCQkJaHAtPmNoYWluID0gZnAyOworKwkJfQorKwkJcmV0dXJuOworKwl9CisrfQorKworK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyt7CisrCWludCBjaDsKKysJaW50IGk7CisrI2lmZGVmIEhBVkVfUENSRQorKwlpbnQgZXJyb3JudW1iZXI7CisrCVBDUkUyX1NJWkUgZXJyb3JvZmZzZXQ7CisrCXBjcmUyX2NvZGUgKnJlID0gTlVMTDsKKysJUENSRTJfU1BUUiBleGNsdWRlX3BhdHRlcm4gPSBOVUxMOworKwlwY3JlMl9tYXRjaF9kYXRhICptYXRjaF9kYXRhID0gTlVMTDsKKysjZW5kaWYKKysJc3RydWN0IGhhcmRsaW5rX2R5bnN0ciBuYW0xID0geyBOVUxMLCAwIH07CisrCXN0cnVjdCBoYXJkbGlua19jdGwgKmN0bCA9ICZnbG9iYWxfY3RsOworKworKwlzdGF0aWMgY29uc3Qgc3RydWN0IG9wdGlvbiBsb25nb3B0c1tdID0geworKwkJeyAiY29udGVudCIsICAgIG5vX2FyZ3VtZW50LCBOVUxMLCAnYycgfSwKKysJCXsgImRyeS1ydW4iLCAgICBub19hcmd1bWVudCwgTlVMTCwgJ24nIH0sCisrCQl7ICJleGNsdWRlIiwgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd4JyB9LAorKwkJeyAiZm9yY2UiLCAgICAgIG5vX2FyZ3VtZW50LCBOVUxMLCAnZicgfSwKKysJCXsgImhlbHAiLCAgICAgICBub19hcmd1bWVudCwgTlVMTCwgJ2gnIH0sCisrCQl7ICJ2ZXJib3NlIiwgICAgbm9fYXJndW1lbnQsIE5VTEwsICd2JyB9LAorKwkJeyAidmVyc2lvbiIsICAgIG5vX2FyZ3VtZW50LCBOVUxMLCAnVicgfSwKKysJCXsgTlVMTCwgMCwgTlVMTCwgMCB9LAorKwl9OworKworKwlzZXRsb2NhbGUoTENfQUxMLCAiIik7CisrCWJpbmR0ZXh0ZG9tYWluKFBBQ0tBR0UsIExPQ0FMRURJUik7CisrCXRleHRkb21haW4oUEFDS0FHRSk7CisrCWNsb3NlX3N0ZG91dF9hdGV4aXQoKTsKKysKKysJd2hpbGUgKChjaCA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJjbnZmeDpWaCIsIGxvbmdvcHRzLCBOVUxMKSkgIT0gLTEpIHsKKysJCXN3aXRjaCAoY2gpIHsKKysJCWNhc2UgJ24nOgorKwkJCWN0bC0+bm9fbGluayA9IDE7CisrCQkJYnJlYWs7CisrCQljYXNlICd2JzoKKysJCQljdGwtPnZlcmJvc2UrKzsKKysJCQlicmVhazsKKysJCWNhc2UgJ2MnOgorKwkJCWN0bC0+Y29udGVudF9vbmx5ID0gMTsKKysJCQlicmVhazsKKysJCWNhc2UgJ2YnOgorKwkJCWN0bC0+Zm9yY2UgPSAxOworKwkJCWJyZWFrOworKwkJY2FzZSAneCc6CisrI2lmZGVmIEhBVkVfUENSRQorKwkJCWV4Y2x1ZGVfcGF0dGVybiA9IChQQ1JFMl9TUFRSKSBvcHRhcmc7CisrI2Vsc2UKKysJCQllcnJ4KEVYSVRfRkFJTFVSRSwKKysJCQkgICAgIF8oIm9wdGlvbiAtLWV4Y2x1ZGUgbm90IHN1cHBvcnRlZCAoYnVpbHQgd2l0aG91dCBwY3JlMikiKSk7CisrI2VuZGlmCisrCQkJYnJlYWs7CisrCQljYXNlICdWJzoKKysJCQlwcmludF92ZXJzaW9uKEVYSVRfU1VDQ0VTUyk7CisrCQljYXNlICdoJzoKKysJCQl1c2FnZSgpOworKwkJZGVmYXVsdDoKKysJCQllcnJ0cnloZWxwKEVYSVRfRkFJTFVSRSk7CisrCQl9CisrCX0KKysKKysJaWYgKG9wdGluZCA9PSBhcmdjKSB7CisrCQl3YXJueChfKCJubyBkaXJlY3Rvcnkgc3BlY2lmaWVkIikpOworKwkJZXJydHJ5aGVscChFWElUX0ZBSUxVUkUpOworKwl9CisrCisrI2lmZGVmIEhBVkVfUENSRQorKwlpZiAoZXhjbHVkZV9wYXR0ZXJuKSB7CisrCQlyZSA9IHBjcmUyX2NvbXBpbGUoZXhjbHVkZV9wYXR0ZXJuLCAvKiB0aGUgcGF0dGVybiAqLworKwkJCQkgICBQQ1JFMl9aRVJPX1RFUk1JTkFURUQsIC8qIGluZGljYXRlcyBwYXR0ZXJuIGlzIHplcm8tdGVybWluYXRlICovCisrCQkJCSAgIDAsIC8qIGRlZmF1bHQgb3B0aW9ucyAqLworKwkJCQkgICAmZXJyb3JudW1iZXIsICZlcnJvcm9mZnNldCwgTlVMTCk7IC8qIHVzZSBkZWZhdWx0IGNvbXBpbGUgY29udGV4dCAqLworKwkJaWYgKCFyZSkgeworKwkJCVBDUkUyX1VDSEFSIGJ1ZmZlclsyNTZdOworKwkJCXBjcmUyX2dldF9lcnJvcl9tZXNzYWdlKGVycm9ybnVtYmVyLCBidWZmZXIsCisrCQkJCQkJc2l6ZW9mKGJ1ZmZlcikpOworKwkJCWVycngoRVhJVF9GQUlMVVJFLCBfKCJwYXR0ZXJuIGVycm9yIGF0IG9mZnNldCAlZDogJXMiKSwKKysJCQkJKGludCllcnJvcm9mZnNldCwgYnVmZmVyKTsKKysJCX0KKysJCW1hdGNoX2RhdGEgPSBwY3JlMl9tYXRjaF9kYXRhX2NyZWF0ZV9mcm9tX3BhdHRlcm4ocmUsIE5VTEwpOworKwl9CisrI2VuZGlmCisrCWF0ZXhpdChwcmludF9zdW1tYXJ5KTsKKysKKysJZm9yIChpID0gb3B0aW5kOyBpIDwgYXJnYzsgaSsrKQorKwkJcHJvY2Vzc19wYXRoKGN0bCwgYXJndltpXSk7CisrCisrCXdoaWxlIChjdGwtPmRpcnMpIHsKKysJCURJUiAqZGg7CisrCQlzdHJ1Y3QgZGlyZW50ICpkaTsKKysJCXN0cnVjdCBoYXJkbGlua19kaXIgKmRwID0gY3RsLT5kaXJzOworKwkJc2l6ZV90IG5hbTFiYXNlbGVuID0gc3RybGVuKGRwLT5uYW1lKTsKKysKKysJCWN0bC0+ZGlycyA9IGRwLT5uZXh0OworKwkJZ3Jvd3N0cigmbmFtMSwgYWRkMihuYW0xYmFzZWxlbiwgMSkpOworKwkJbWVtY3B5KG5hbTEuYnVmLCBkcC0+bmFtZSwgbmFtMWJhc2VsZW4pOworKwkJZnJlZShkcCk7CisrCQluYW0xLmJ1ZltuYW0xYmFzZWxlbisrXSA9ICcvJzsKKysJCW5hbTEuYnVmW25hbTFiYXNlbGVuXSA9IDA7CisrCQlkaCA9IG9wZW5kaXIobmFtMS5idWYpOworKworKwkJaWYgKGRoID09IE5VTEwpCisrCQkJY29udGludWU7CisrCQljdGwtPm5kaXJzKys7CisrCisrCQl3aGlsZSAoKGRpID0gcmVhZGRpcihkaCkpICE9IE5VTEwpIHsKKysJCQlpZiAoIWRpLT5kX25hbWVbMF0pCisrCQkJCWNvbnRpbnVlOworKwkJCWlmIChkaS0+ZF9uYW1lWzBdID09ICcuJykgeworKwkJCQlpZiAoIWRpLT5kX25hbWVbMV0gfHwgIXN0cmNtcChkaS0+ZF9uYW1lLCAiLi4iKSkKKysJCQkJCWNvbnRpbnVlOworKwkJCX0KKysjaWZkZWYgSEFWRV9QQ1JFCisrCQkJaWYgKHJlICYmIHBjcmUyX21hdGNoKHJlLCAvKiBjb21waWxlZCByZWdleCAqLworKwkJCQkJICAgICAgKFBDUkUyX1NQVFIpIGRpLT5kX25hbWUsIHN0cmxlbihkaS0+ZF9uYW1lKSwgMCwgLyogc3RhcnQgYXQgb2Zmc2V0IDAgKi8KKysJCQkJCSAgICAgIDAsIC8qIGRlZmF1bHQgb3B0aW9ucyAqLworKwkJCQkJICAgICAgbWF0Y2hfZGF0YSwgLyogYmxvY2sgZm9yIHN0b3JpbmcgdGhlIHJlc3VsdCAqLworKwkJCQkJICAgICAgTlVMTCkgLyogdXNlIGRlZmF1bHQgbWF0Y2ggY29udGV4dCAqLworKwkJCSAgICA+PTApIHsKKysJCQkJaWYgKGN0bC0+dmVyYm9zZSkgeworKwkJCQkJbmFtMS5idWZbbmFtMWJhc2VsZW5dID0gMDsKKysJCQkJCXByaW50ZihfKCJTa2lwcGluZyAlcyVzXG4iKSwgbmFtMS5idWYsIGRpLT5kX25hbWUpOworKwkJCQl9CisrCQkJCWNvbnRpbnVlOworKwkJCX0KKysjZW5kaWYKKysJCQl7CisrCQkJCXNpemVfdCBzdWJkaXJsZW47CisrCQkJCWdyb3dzdHIoJm5hbTEsCisrCQkJCQlhZGQyKG5hbTFiYXNlbGVuLCBzdWJkaXJsZW4gPQorKwkJCQkJICAgICBzdHJsZW4oZGktPmRfbmFtZSkpKTsKKysJCQkJbWVtY3B5KCZuYW0xLmJ1ZltuYW0xYmFzZWxlbl0sIGRpLT5kX25hbWUsCisrCQkJCSAgICAgICBhZGQyKHN1YmRpcmxlbiwgMSkpOworKwkJCX0KKysJCQlwcm9jZXNzX3BhdGgoY3RsLCBuYW0xLmJ1Zik7CisrCQl9CisrCQljbG9zZWRpcihkaCk7CisrCX0KKysKKysJcmV0dXJuIDA7CisrfQorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy94YWxsb2MuaCBiL2xvY2FsZS9wcm9ncmFtcy94YWxsb2MuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjAxMjlhODVlMmUKKy0tLSAvZGV2L251bGwKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy94YWxsb2MuaAorQEAgLTAsMCArMSwxMjkgQEAKKysvKgorKyAqIENvcHlyaWdodCAoQykgMjAxMCBEYXZpZGxvaHIgQnVlc28gPGRhdmVAZ251Lm9yZz4KKysgKgorKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCisrICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorKyAqCisrICogR2VuZXJhbCBtZW1vcnkgYWxsb2NhdGlvbiB3cmFwcGVycyBmb3IgbWFsbG9jLCByZWFsbG9jLCBjYWxsb2MgYW5kIHN0cmR1cAorKyAqLworKworKyNpZm5kZWYgVVRJTF9MSU5VWF9YQUxMT0NfSAorKyNkZWZpbmUgVVRJTF9MSU5VWF9YQUxMT0NfSAorKworKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrCisrI2luY2x1ZGUgImMuaCIKKysKKysjaWZuZGVmIFhBTExPQ19FWElUX0NPREUKKysjIGRlZmluZSBYQUxMT0NfRVhJVF9DT0RFIEVYSVRfRkFJTFVSRQorKyNlbmRpZgorKworK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKQorK19fZXJyX29vbShjb25zdCBjaGFyICpmaWxlLCB1bnNpZ25lZCBpbnQgbGluZSkKKyt7CisrCWVycihYQUxMT0NfRVhJVF9DT0RFLCAiJXM6ICV1OiBjYW5ub3QgYWxsb2NhdGUgbWVtb3J5IiwgZmlsZSwgbGluZSk7CisrfQorKworKyNkZWZpbmUgZXJyX29vbSgpCV9fZXJyX29vbShfX0ZJTEVfXywgX19MSU5FX18pCisrCisrc3RhdGljIGlubGluZSBfX3VsX2FsbG9jX3NpemUoMSkgX191bF9yZXR1cm5zX25vbm51bGwKKyt2b2lkICp4bWFsbG9jKGNvbnN0IHNpemVfdCBzaXplKQorK3sKKysgICAgICAgIHZvaWQgKnJldCA9IG1hbGxvYyhzaXplKTsKKysKKysgICAgICAgIGlmICghcmV0ICYmIHNpemUpCisrICAgICAgICAgICAgICAgIGVycihYQUxMT0NfRVhJVF9DT0RFLCAiY2Fubm90IGFsbG9jYXRlICV6dSBieXRlcyIsIHNpemUpOworKyAgICAgICAgcmV0dXJuIHJldDsKKyt9CisrCisrc3RhdGljIGlubGluZSBfX3VsX2FsbG9jX3NpemUoMikgX191bF9yZXR1cm5zX25vbm51bGwKKyt2b2lkICp4cmVhbGxvYyh2b2lkICpwdHIsIGNvbnN0IHNpemVfdCBzaXplKQorK3sKKysgICAgICAgIHZvaWQgKnJldCA9IHJlYWxsb2MocHRyLCBzaXplKTsKKysKKysgICAgICAgIGlmICghcmV0ICYmIHNpemUpCisrICAgICAgICAgICAgICAgIGVycihYQUxMT0NfRVhJVF9DT0RFLCAiY2Fubm90IGFsbG9jYXRlICV6dSBieXRlcyIsIHNpemUpOworKyAgICAgICAgcmV0dXJuIHJldDsKKyt9CisrCisrc3RhdGljIGlubGluZSBfX3VsX2NhbGxvY19zaXplKDEsIDIpIF9fdWxfcmV0dXJuc19ub25udWxsCisrdm9pZCAqeGNhbGxvYyhjb25zdCBzaXplX3QgbmVsZW1zLCBjb25zdCBzaXplX3Qgc2l6ZSkKKyt7CisrICAgICAgICB2b2lkICpyZXQgPSBjYWxsb2MobmVsZW1zLCBzaXplKTsKKysKKysgICAgICAgIGlmICghcmV0ICYmIHNpemUgJiYgbmVsZW1zKQorKyAgICAgICAgICAgICAgICBlcnIoWEFMTE9DX0VYSVRfQ09ERSwgImNhbm5vdCBhbGxvY2F0ZSAlenUgYnl0ZXMiLCBzaXplKTsKKysgICAgICAgIHJldHVybiByZXQ7CisrfQorKworK3N0YXRpYyBpbmxpbmUgY2hhciBfX2F0dHJpYnV0ZV9fKCh3YXJuX3VudXNlZF9yZXN1bHQpKSBfX3VsX3JldHVybnNfbm9ubnVsbAorKyp4c3RyZHVwKGNvbnN0IGNoYXIgKnN0cikKKyt7CisrICAgICAgICBjaGFyICpyZXQ7CisrCisrICAgICAgICBpZiAoIXN0cikKKysgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisrCisrICAgICAgICByZXQgPSBzdHJkdXAoc3RyKTsKKysKKysgICAgICAgIGlmICghcmV0KQorKyAgICAgICAgICAgICAgICBlcnIoWEFMTE9DX0VYSVRfQ09ERSwgImNhbm5vdCBkdXBsaWNhdGUgc3RyaW5nIik7CisrICAgICAgICByZXR1cm4gcmV0OworK30KKysKKytzdGF0aWMgaW5saW5lIGNoYXIgKiBfX2F0dHJpYnV0ZV9fKCh3YXJuX3VudXNlZF9yZXN1bHQpKSBfX3VsX3JldHVybnNfbm9ubnVsbAorK3hzdHJuZHVwKGNvbnN0IGNoYXIgKnN0ciwgc2l6ZV90IHNpemUpCisreworKyAgICAgICAgY2hhciAqcmV0OworKworKyAgICAgICAgaWYgKCFzdHIpCisrICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworKworKyAgICAgICAgcmV0ID0gc3RybmR1cChzdHIsIHNpemUpOworKworKyAgICAgICAgaWYgKCFyZXQpCisrICAgICAgICAgICAgICAgIGVycihYQUxMT0NfRVhJVF9DT0RFLCAiY2Fubm90IGR1cGxpY2F0ZSBzdHJpbmciKTsKKysgICAgICAgIHJldHVybiByZXQ7CisrfQorKworKworK3N0YXRpYyBpbmxpbmUgaW50IF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykpKQorKyAgICB4YXNwcmludGYoY2hhciAqKnN0cnAsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorK3sKKysJaW50IHJldDsKKysJdmFfbGlzdCBhcmdzOworKwl2YV9zdGFydChhcmdzLCBmbXQpOworKwlyZXQgPSB2YXNwcmludGYoJigqc3RycCksIGZtdCwgYXJncyk7CisrCXZhX2VuZChhcmdzKTsKKysJaWYgKHJldCA8IDApCisrCQllcnIoWEFMTE9DX0VYSVRfQ09ERSwgImNhbm5vdCBhbGxvY2F0ZSBzdHJpbmciKTsKKysJcmV0dXJuIHJldDsKKyt9CisrCisrc3RhdGljIGlubGluZSBpbnQgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMCkpKQorK3h2YXNwcmludGYoY2hhciAqKnN0cnAsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcCkKKyt7CisrCWludCByZXQgPSB2YXNwcmludGYoJigqc3RycCksIGZtdCwgYXApOworKwlpZiAocmV0IDwgMCkKKysJCWVycihYQUxMT0NfRVhJVF9DT0RFLCAiY2Fubm90IGFsbG9jYXRlIHN0cmluZyIpOworKwlyZXR1cm4gcmV0OworK30KKysKKysKKytzdGF0aWMgaW5saW5lIGNoYXIgKiBfX2F0dHJpYnV0ZV9fKCh3YXJuX3VudXNlZF9yZXN1bHQpKSB4Z2V0aG9zdG5hbWUodm9pZCkKKyt7CisrCWNoYXIgKm5hbWU7CisrCXNpemVfdCBzeiA9IGdldF9ob3N0bmFtZV9tYXgoKSArIDE7CisrCisrCW5hbWUgPSB4bWFsbG9jKHNpemVvZihjaGFyKSAqIHN6KTsKKysKKysJaWYgKGdldGhvc3RuYW1lKG5hbWUsIHN6KSAhPSAwKSB7CisrCQlmcmVlKG5hbWUpOworKwkJcmV0dXJuIE5VTEw7CisrCX0KKysJbmFtZVtzeiAtIDFdID0gJ1wwJzsKKysJcmV0dXJuIG5hbWU7CisrfQorKworKyNlbmRpZgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLWxvY2FsZWRlZi1BZGQtaGFyZGxpbmstcmVzb2x2ZXItdG8tYnVpbGQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbG9jYWxlZGVmLUFkZC1oYXJkbGluay1yZXNvbHZlci10by1idWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjY1Mjk4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLWxvY2FsZWRlZi1BZGQtaGFyZGxpbmstcmVzb2x2ZXItdG8tYnVpbGQucGF0Y2gKQEAgLTAsMCArMSw1MiBAQAorRnJvbSA1NmFlMjYwYWMyNGFkZTk0ZTJlMGU3N2M4MTc1MTMxMjM3MmQyNTNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFNhdCwgNyBEZWMgMjAxOSAwOTo1NjoyMyAtMDgwMAorU3ViamVjdDogW1BBVENIXSBsb2NhbGVkZWY6IEFkZCBoYXJkbGluayByZXNvbHZlciB0byBidWlsZAorCitUaGUgc291cmNlY29kZSBmb3IgdGhpcyBpcyBpbXBvcnRlZCBmcm9tIHV0aWwtbGludXggYW5kIGlzIGtlcHQgd2l0aAorZ2xpYmMgc291cmNlcworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuaW4gfCA4ICsrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggNzdmYmRlZC4uYTg3ZTViMiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTQwLDYgKzQwLDggQEAgV0FSTkZMQUdTCT0gLVdhbGwgLVduby1mb3JtYXQKKyBGVUxMQ0MJCT0gJChDQykgJChDUFBGTEFHUykgJChDRkxBR1MpIFwKKyAJCSAgJChERUZJTkVTKSAkKElOQ0xVREVTKSAkKFdBUk5GTEFHUykKKyAKKytDUk9TU19MT0NBTEVERUZfSEFSRExJTktfT0JKUyA9IGNyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5vCisrCisgTE9DQUxFREVGX09CSlMJPSBjaGFybWFwLm8gY2hhcm1hcC1kaXIubyBsZC1hZGRyZXNzLm8gbGQtY29sbGF0ZS5vIFwKKyAJCSAgbGQtY3R5cGUubyBsZC1pZGVudGlmaWNhdGlvbi5vIGxkLW1lYXN1cmVtZW50Lm8gXAorIAkJICBsZC1tZXNzYWdlcy5vIGxkLW1vbmV0YXJ5Lm8gbGQtbmFtZS5vIGxkLW51bWVyaWMubyBcCitAQCAtNTQsMTEgKzU2LDE0IEBAIExPQ0FMRURFRl9PQkpTCT0gY2hhcm1hcC5vIGNoYXJtYXAtZGlyLm8gbGQtYWRkcmVzcy5vIGxkLWNvbGxhdGUubyBcCisgCQkgIGFzcHJpbnRmLm8gZ2V0ZGVsaW0ubyBsb2NhbGVkZWZfZXh0cmEubyBcCisgCQkgIG9ic3RhY2tfcHJpbnRmLm8gdmFzcHJpbnRmLm8KKyAKKy1hbGw6CQlsb2NhbGVkZWYkKEVYRUVYVCkKKythbGw6CQlsb2NhbGVkZWYkKEVYRUVYVCkgY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rJChFWEVFWFQpCisgCisgbG9jYWxlZGVmJChFWEVFWFQpOiAkKExPQ0FMRURFRl9PQkpTKQorIAkJJChDQykgLW8gJEAgJChMT0NBTEVERUZfT0JKUykgJChMSUJTKQorIAorK2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluayQoRVhFRVhUKTogJChDUk9TU19MT0NBTEVERUZfSEFSRExJTktfT0JKUykKKysJCSQoQ0MpIC1vICRAICQoQ1JPU1NfTE9DQUxFREVGX0hBUkRMSU5LX09CSlMpICQoTElCUykKKysKKyBjbGVhbjoKKyAJCXJtIC1mIGxvY2FsZSQoRVhFRVhUKSAkKExPQ0FMRURFRl9PQkpTKQorIAorQEAgLTc3LDYgKzgyLDcgQEAgY2xlYW46CisgJS5vOiAkKHNyY2RpcikvJS5jCisgCQkkKEZVTExDQykgLWMgLW8gJEAgJDwKKyAKKytjcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsubzogZ2xpYmMvbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jCisgY2hhcm1hcC5vOiBnbGliYy9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC5jCisgY2hhcm1hcC1kaXIubzogZ2xpYmMvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKKyBsZC1hZGRyZXNzLm86IGdsaWJjL2xvY2FsZS9wcm9ncmFtcy9sZC1hZGRyZXNzLmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4NmQxZDguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1Gcm9tIGY2OTg0YzkyM2I0MTE1NTk3OTc2NGJmYTNmNDQ2MDk1NzJiZTU0MTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTo0ODoyNCArMDAwMAotU3ViamVjdDogW1BBVENIIDAxLzI4XSBuYXRpdmVzZGstZ2xpYmM6IExvb2sgZm9yIGhvc3Qgc3lzdGVtIGxkLnNvLmNhY2hlIGFzCi0gd2VsbAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1UaGUgZGVmYXVsdCBsaWIgc2VhcmNoIHBhdGggb3JkZXIgaXM6Ci0KLSAgMSkgTERfTElCUkFSWV9QQVRICi0gIDIpIFJQQVRIIGZyb20gdGhlIGJpbmFyeQotICAzKSBsZC5zby5jYWNoZQotICA0KSBkZWZhdWx0IHNlYXJjaCBwYXRocyBlbWJlZGRlZCBpbiB0aGUgbGlua2VyCi0KLUZvciBuYXRpdmVzZGsgYmluYXJpZXMgd2hpY2ggYXJlIGJlaW5nIHVzZWQgYWxvbmdzaWRlIGJpbmFyaWVzIG9uIGEgaG9zdCBzeXN0ZW0sIHdlCi1uZWVkIHRoZSBzZWFyY2ggcGF0aHMgdG8gZmlyc3RseSBzZWFyY2ggdGhlIHNoaXBwZWQgbmF0aXZlc2RrIGxpYnMgYnV0IHRoZW4gYWxzbwotY292ZXIgdGhlIGhvc3Qgc3lzdGVtLiBGb3IgZXhhbXBsZSB3ZSB3YW50IHRoZSBob3N0IHN5c3RlbSdzIGxpYkdMIGFuZCB0aGlzIG1heSBiZQotaW4gYSBub24tc3RhbmRhcmQgbG9jYXRpb24gbGlrZSAvdXNyL2xpYi9tZXNhLiBUaGUgb25seSBwbGFjZSB0aGUgbG9jYXRpb24gaXMga25vdwotYWJvdXQgaXMgaW4gdGhlIGxkLnNvLmNhY2hlIG9mIHRoZSBob3N0IHN5c3RlbS4KLQotU2luY2UgbmF0aXZlc2RrIGhhcyBhIHNpbXBsZSBzdHJ1Y3R1cmUgYW5kIGRvZXNuJ3QgbmVlZCB0byB1c2UgYSBjYWNoZSBpdHNlbGYsIHdlCi1yZXB1cnBvc2UgdGhlIGNhY2hlIGZvciB1c2UgYXMgYSBsYXN0IHJlc29ydCBpbiBmaW5kaW5nIGhvc3Qgc3lzdGVtIGJpbmFyaWVzLiBUaGlzCi1tZWFucyB3ZSBuZWVkIHRvIHN3aXRjaCB0aGUgb3JkZXIgb2YgMyBhbmQgNCBhYm92ZSB0byBtYWtlIHRoaXMgd29yayBlZmZlY3RpdmVseS4KLQotUlAgMTQvMTAvMjAxMAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZWxmL2RsLWxvYWQuYyB8IDE2ICsrKysrKysrLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZWxmL2RsLWxvYWQuYyBiL2VsZi9kbC1sb2FkLmMKLWluZGV4IDVhYmViODY3ZjEuLjk4MWJkNWI0YWYgMTAwNjQ0Ci0tLS0gYS9lbGYvZGwtbG9hZC5jCi0rKysgYi9lbGYvZGwtbG9hZC5jCi1AQCAtMjA4MCw2ICsyMDgwLDE0IEBAIF9kbF9tYXBfb2JqZWN0IChzdHJ1Y3QgbGlua19tYXAgKmxvYWRlciwgY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gCi0rICAgICAgLyogdHJ5IHRoZSBkZWZhdWx0IHBhdGguICAqLwotKyAgICAgIGlmIChmZCA9PSAtMQotKwkgICYmICgobCA9IGxvYWRlciA/OiBHTChkbF9ucylbbnNpZF0uX25zX2xvYWRlZCkgPT0gTlVMTAotKwkgICB8fCBfX2J1aWx0aW5fZXhwZWN0ICghKGwtPmxfZmxhZ3NfMSAmIERGXzFfTk9ERUZMSUIpLCAxKSkKLSsJICYmIHJ0bGRfc2VhcmNoX2RpcnMuZGlycyAhPSAodm9pZCAqKSAtMSkKLSsJZmQgPSBvcGVuX3BhdGggKG5hbWUsIG5hbWVsZW4sIG1vZGUgJiBfX1JUTERfU0VDVVJFLCAmcnRsZF9zZWFyY2hfZGlycywKLSsJCQkmcmVhbG5hbWUsICZmYiwgbCwgTEFfU0VSX0RFRkFVTFQsICZmb3VuZF9vdGhlcl9jbGFzcyk7Ci0rICAgICAgLyogRmluYWxseSB0cnkgbGQuc28uY2FjaGUgKi8KLSAjaWZkZWYgVVNFX0xEQ09ORklHCi0gICAgICAgaWYgKGZkID09IC0xCi0gCSAgJiYgKF9fZ2xpYmNfbGlrZWx5ICgobW9kZSAmIF9fUlRMRF9TRUNVUkUpID09IDApCi1AQCAtMjEzOCwxNCArMjE0Niw2IEBAIF9kbF9tYXBfb2JqZWN0IChzdHJ1Y3QgbGlua19tYXAgKmxvYWRlciwgY29uc3QgY2hhciAqbmFtZSwKLSAJfQotICNlbmRpZgotIAotLSAgICAgIC8qIEZpbmFsbHksIHRyeSB0aGUgZGVmYXVsdCBwYXRoLiAgKi8KLS0gICAgICBpZiAoZmQgPT0gLTEKLS0JICAmJiAoKGwgPSBsb2FkZXIgPzogR0woZGxfbnMpW25zaWRdLl9uc19sb2FkZWQpID09IE5VTEwKLS0JICAgICAgfHwgX19nbGliY19saWtlbHkgKCEobC0+bF9mbGFnc18xICYgREZfMV9OT0RFRkxJQikpKQotLQkgICYmIHJ0bGRfc2VhcmNoX2RpcnMuZGlycyAhPSAodm9pZCAqKSAtMSkKLS0JZmQgPSBvcGVuX3BhdGggKG5hbWUsIG5hbWVsZW4sIG1vZGUsICZydGxkX3NlYXJjaF9kaXJzLAotLQkJCSZyZWFsbmFtZSwgJmZiLCBsLCBMQV9TRVJfREVGQVVMVCwgJmZvdW5kX290aGVyX2NsYXNzKTsKLS0KLSAgICAgICAvKiBBZGQgYW5vdGhlciBuZXdsaW5lIHdoZW4gd2UgYXJlIHRyYWNpbmcgdGhlIGxpYnJhcnkgbG9hZGluZy4gICovCi0gICAgICAgaWYgKF9fZ2xpYmNfdW5saWtlbHkgKEdMUk8oZGxfZGVidWdfbWFzaykgJiBETF9ERUJVR19MSUJTKSkKLSAJX2RsX2RlYnVnX3ByaW50ZiAoIlxuIik7Ci0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDItbG9jYWxlZGVmLWZpeC11cHMtaGFyZGxpbmstdG8tbWFrZS1pdC1jb21waWxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLWxvY2FsZWRlZi1maXgtdXBzLWhhcmRsaW5rLXRvLW1ha2UtaXQtY29tcGlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjIyZTM3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLWxvY2FsZWRlZi1maXgtdXBzLWhhcmRsaW5rLXRvLW1ha2UtaXQtY29tcGlsZS5wYXRjaApAQCAtMCwwICsxLDIzOCBAQAorRnJvbSBiNTJkYmExNTUyNzM4MGNjMTg2MzVlMzY5NmUwZWY4N2VmZWU5YTg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFNhdCwgNyBEZWMgMjAxOSAxMDowMTozNyAtMDgwMAorU3ViamVjdDogW1BBVENIXSBsb2NhbGVkZWY6IGZpeC11cHMgaGFyZGxpbmsgdG8gbWFrZSBpdCBjb21waWxlCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsb2NhbGUvcHJvZ3JhbXMvYy5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIGxvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYyB8IDc5ICsrKysrKysrKysrLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2MuaCBiL2xvY2FsZS9wcm9ncmFtcy9jLmgKK2luZGV4IGQwYTQwMmU5MGUuLjE4MDRkMzFjNzMgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvYy5oCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvYy5oCitAQCAtMjQwLDcgKzI0MCw3IEBAIGVycm1zZyhjaGFyIGRvZXhpdCwgaW50IGV4Y29kZSwgY2hhciBhZGRlcnIsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorIC8qIERvbid0IHVzZSBpbmxpbmUgZnVuY3Rpb24gdG8gYXZvaWQgJyNpbmNsdWRlICJubHMuaCInIGluIGMuaAorICAqLworICNkZWZpbmUgZXJydHJ5aGVscChldmFsKSBfX2V4dGVuc2lvbl9fICh7IFwKKy0JZnByaW50ZihzdGRlcnIsIF8oIlRyeSAnJXMgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBcCisrCWZwcmludGYoc3RkZXJyLCAoIlRyeSAnJXMgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBcCisgCQkJcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUpOyBcCisgCWV4aXQoZXZhbCk7IFwKKyB9KQorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYyBiL2xvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYworaW5kZXggNjM2MTU4OTZiMC4uNzI2ZTZkZDk0OCAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jCitAQCAtMjAsNiArMjAsOCBAQAorICAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgICogNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KKyAgKi8KKysKKysjdW5kZWYgSEFWRV9QQ1JFCisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8Z2V0b3B0Lmg+CitAQCAtMzgsOCArNDAsOCBAQAorIAorICNpbmNsdWRlICJjLmgiCisgI2luY2x1ZGUgInhhbGxvYy5oIgorLSNpbmNsdWRlICJubHMuaCIKKy0jaW5jbHVkZSAiY2xvc2VzdHJlYW0uaCIKKysvLyNpbmNsdWRlICJubHMuaCIKKysvLyNpbmNsdWRlICJjbG9zZXN0cmVhbS5oIgorIAorICNkZWZpbmUgTkhBU0ggICAoMTw8MTcpICAvKiBNdXN0IGJlIGEgcG93ZXIgb2YgMiEgKi8KKyAjZGVmaW5lIE5CVUYgICAgNjQKK0BAIC0xMjQsMzMgKzEyNiwzMyBAQCBzdGF0aWMgdm9pZCBwcmludF9zdW1tYXJ5KHZvaWQpCisgCWlmIChjdGwtPnZlcmJvc2UgPiAxICYmIGN0bC0+bmxpbmtzKQorIAkJZnB1dGMoJ1xuJywgc3Rkb3V0KTsKKyAKKy0JcHJpbnRmKF8oIkRpcmVjdG9yaWVzOiAgICU5bGxkXG4iKSwgY3RsLT5uZGlycyk7CistCXByaW50ZihfKCJPYmplY3RzOiAgICAgICAlOWxsZFxuIiksIGN0bC0+bm9iamVjdHMpOworLQlwcmludGYoXygiUmVndWxhciBmaWxlczogJTlsbGRcbiIpLCBjdGwtPm5yZWdmaWxlcyk7CistCXByaW50ZihfKCJDb21wYXJpc29uczogICAlOWxsZFxuIiksIGN0bC0+bmNvbXApOworKwlwcmludGYoKCJEaXJlY3RvcmllczogICAlOWxsZFxuIiksIGN0bC0+bmRpcnMpOworKwlwcmludGYoKCJPYmplY3RzOiAgICAgICAlOWxsZFxuIiksIGN0bC0+bm9iamVjdHMpOworKwlwcmludGYoKCJSZWd1bGFyIGZpbGVzOiAlOWxsZFxuIiksIGN0bC0+bnJlZ2ZpbGVzKTsKKysJcHJpbnRmKCgiQ29tcGFyaXNvbnM6ICAgJTlsbGRcbiIpLCBjdGwtPm5jb21wKTsKKyAJcHJpbnRmKCAgIiVzJTlsbGRcbiIsIChjdGwtPm5vX2xpbmsgPworLQkgICAgICAgXygiV291bGQgbGluazogICAgIikgOgorLQkgICAgICAgXygiTGlua2VkOiAgICAgICAgIikpLCBjdGwtPm5saW5rcyk7CisrCSAgICAgICAoIldvdWxkIGxpbms6ICAgICIpIDoKKysJICAgICAgICgiTGlua2VkOiAgICAgICAgIikpLCBjdGwtPm5saW5rcyk7CisgCXByaW50ZiggICIlcyAlOWxsZFxuIiwgKGN0bC0+bm9fbGluayA/CistCSAgICAgICBfKCJXb3VsZCBzYXZlOiAgICIpIDoKKy0JICAgICAgIF8oIlNhdmVkOiAgICAgICAgIikpLCBjdGwtPm5zYXZlZCk7CisrCSAgICAgICAoIldvdWxkIHNhdmU6ICAgIikgOgorKwkgICAgICAgKCJTYXZlZDogICAgICAgICIpKSwgY3RsLT5uc2F2ZWQpOworIH0KKyAKKyBzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKSB1c2FnZSh2b2lkKQorIHsKKyAJZnB1dHMoVVNBR0VfSEVBREVSLCBzdGRvdXQpOworLQlwcmludGYoXygiICVzIFtvcHRpb25zXSBkaXJlY3RvcnkuLi5cbiIpLCBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSk7CisrCXByaW50ZigoIiAlcyBbb3B0aW9uc10gZGlyZWN0b3J5Li4uXG4iKSwgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUpOworIAorIAlmcHV0cyhVU0FHRV9TRVBBUkFUT1IsIHN0ZG91dCk7CistCXB1dHMoXygiQ29uc29saWRhdGUgZHVwbGljYXRlIGZpbGVzIHVzaW5nIGhhcmRsaW5rcy4iKSk7CisrCXB1dHMoKCJDb25zb2xpZGF0ZSBkdXBsaWNhdGUgZmlsZXMgdXNpbmcgaGFyZGxpbmtzLiIpKTsKKyAKKyAJZnB1dHMoVVNBR0VfT1BUSU9OUywgc3Rkb3V0KTsKKy0JcHV0cyhfKCIgLWMsIC0tY29udGVudCAgICAgICAgICBjb21wYXJlIG9ubHkgY29udGVudHMsIGlnbm9yZSBwZXJtaXNzaW9uLCBldGMuIikpOworLQlwdXRzKF8oIiAtbiwgLS1kcnktcnVuICAgICAgICAgIGRvbid0IGFjdHVhbGx5IGxpbmsgYW55dGhpbmciKSk7CistCXB1dHMoXygiIC12LCAtLXZlcmJvc2UgICAgICAgICAgcHJpbnQgc3VtbWFyeSBhZnRlciBoYXJkbGlua2luZyIpKTsKKy0JcHV0cyhfKCIgLXZ2ICAgICAgICAgICAgICAgICAgICBwcmludCBldmVyeSBoYXJkbGlua2VkIGZpbGUgYW5kIHN1bW1hcnkiKSk7CistCXB1dHMoXygiIC1mLCAtLWZvcmNlICAgICAgICAgICAgZm9yY2UgaGFyZGxpbmtpbmcgYWNyb3NzIGZpbGVzeXN0ZW1zIikpOworLQlwdXRzKF8oIiAteCwgLS1leGNsdWRlIDxyZWdleD4gIGV4Y2x1ZGUgZmlsZXMgbWF0Y2hpbmcgcGF0dGVybiIpKTsKKysJcHV0cygoIiAtYywgLS1jb250ZW50ICAgICAgICAgIGNvbXBhcmUgb25seSBjb250ZW50cywgaWdub3JlIHBlcm1pc3Npb24sIGV0Yy4iKSk7CisrCXB1dHMoKCIgLW4sIC0tZHJ5LXJ1biAgICAgICAgICBkb24ndCBhY3R1YWxseSBsaW5rIGFueXRoaW5nIikpOworKwlwdXRzKCgiIC12LCAtLXZlcmJvc2UgICAgICAgICAgcHJpbnQgc3VtbWFyeSBhZnRlciBoYXJkbGlua2luZyIpKTsKKysJcHV0cygoIiAtdnYgICAgICAgICAgICAgICAgICAgIHByaW50IGV2ZXJ5IGhhcmRsaW5rZWQgZmlsZSBhbmQgc3VtbWFyeSIpKTsKKysJcHV0cygoIiAtZiwgLS1mb3JjZSAgICAgICAgICAgIGZvcmNlIGhhcmRsaW5raW5nIGFjcm9zcyBmaWxlc3lzdGVtcyIpKTsKKysJcHV0cygoIiAteCwgLS1leGNsdWRlIDxyZWdleD4gIGV4Y2x1ZGUgZmlsZXMgbWF0Y2hpbmcgcGF0dGVybiIpKTsKKyAKKyAJZnB1dHMoVVNBR0VfU0VQQVJBVE9SLCBzdGRvdXQpOworIAlwcmludGYoVVNBR0VfSEVMUF9PUFRJT05TKDE2KSk7IC8qIGNoYXIgb2Zmc2V0IHRvIGFsaWduIG9wdGlvbiBkZXNjcmlwdGlvbnMgKi8KK0BAIC0xNjQsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSBzaXplX3QgYWRkMihzaXplX3QgYSwgc2l6ZV90IGIpCisgCXNpemVfdCBzdW0gPSBhICsgYjsKKyAKKyAJaWYgKHN1bSA8IGEpCistCQllcnJ4KEVYSVRfRkFJTFVSRSwgXygiaW50ZWdlciBvdmVyZmxvdyIpKTsKKysJCWVycngoRVhJVF9GQUlMVVJFLCAoImludGVnZXIgb3ZlcmZsb3ciKSk7CisgCXJldHVybiBzdW07CisgfQorIAorQEAgLTE5Myw3ICsxOTUsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3BhdGgoc3RydWN0IGhhcmRsaW5rX2N0bCAqY3RsLCBjb25zdCBjaGFyICpuYW1lKQorIAlpZiAoc3Quc3RfZGV2ICE9IGN0bC0+ZGV2ICYmICFjdGwtPmZvcmNlKSB7CisgCQlpZiAoY3RsLT5kZXYpCisgCQkJZXJyeChFWElUX0ZBSUxVUkUsCistCQkJICAgICBfKCIlcyBpcyBvbiBkaWZmZXJlbnQgZmlsZXN5c3RlbSB0aGFuIHRoZSByZXN0ICIKKysJCQkgICAgICgiJXMgaXMgb24gZGlmZmVyZW50IGZpbGVzeXN0ZW0gdGhhbiB0aGUgcmVzdCAiCisgCQkJICAgICAgICIodXNlIC1mIG9wdGlvbiB0byBvdmVycmlkZSkuIiksIG5hbWUpOworIAkJY3RsLT5kZXYgPSBzdC5zdF9kZXY7CisgCX0KK0BAIC0yODcsOSArMjg5LDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19wYXRoKHN0cnVjdCBoYXJkbGlua19jdGwgKmN0bCwgY29uc3QgY2hhciAqbmFtZSkKKyAJCQkJCQkJKHNzaXplX3QpIHNpemVvZihjdGwtPmlvYnVmMSkgOiBmc2l6ZTsKKyAKKyAJCQkJCWlmICgoeHN6ID0gcmVhZChmZCwgY3RsLT5pb2J1ZjEsIHJzaXplKSkgIT0gcnNpemUpCistCQkJCQkJd2FybihfKCJjYW5ub3QgcmVhZCAlcyIpLCBuYW1lKTsKKysJCQkJCQl3YXJuKCgiY2Fubm90IHJlYWQgJXMiKSwgbmFtZSk7CisgCQkJCQllbHNlIGlmICgoeHN6ID0gcmVhZChmZDIsIGN0bC0+aW9idWYyLCByc2l6ZSkpICE9IHJzaXplKQorLQkJCQkJCXdhcm4oXygiY2Fubm90IHJlYWQgJXMiKSwgZnAyLT5uYW1lKTsKKysJCQkJCQl3YXJuKCgiY2Fubm90IHJlYWQgJXMiKSwgZnAyLT5uYW1lKTsKKyAKKyAJCQkJCWlmICh4c3ogIT0gcnNpemUpIHsKKyAJCQkJCQljbG9zZShmZCk7CitAQCAtMzAzLDEzICszMDUsMTMgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19wYXRoKHN0cnVjdCBoYXJkbGlua19jdGwgKmN0bCwgY29uc3QgY2hhciAqbmFtZSkKKyAJCQkJaWYgKGZzaXplID4gMCkKKyAJCQkJCWNvbnRpbnVlOworIAkJCQlpZiAobHN0YXQobmFtZSwgJnN0MykpIHsKKy0JCQkJCXdhcm4oXygiY2Fubm90IHN0YXQgJXMiKSwgbmFtZSk7CisrCQkJCQl3YXJuKCgiY2Fubm90IHN0YXQgJXMiKSwgbmFtZSk7CisgCQkJCQljbG9zZShmZCk7CisgCQkJCQlyZXR1cm47CisgCQkJCX0KKyAJCQkJc3QzLnN0X2F0aW1lID0gc3Quc3RfYXRpbWU7CisgCQkJCWlmIChzdGNtcCgmc3QsICZzdDMsIDApKSB7CistCQkJCQl3YXJueChfKCJmaWxlICVzIGNoYW5nZWQgdW5kZXJuZWF0aCB1cyIpLCBuYW1lKTsKKysJCQkJCXdhcm54KCgiZmlsZSAlcyBjaGFuZ2VkIHVuZGVybmVhdGggdXMiKSwgbmFtZSk7CisgCQkJCQljbG9zZShmZCk7CisgCQkJCQlyZXR1cm47CisgCQkJCX0KK0BAIC0zMjksMTggKzMzMSwxOCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3BhdGgoc3RydWN0IGhhcmRsaW5rX2N0bCAqY3RsLCBjb25zdCBjaGFyICpuYW1lKQorIAkJCQkJICAgICAgIHN1ZmZpeGxlbiArIDEpOworIAkJCQkJLyogRmlyc3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGxpbmsgdG8gbjEgdW5kZXIgYSBuZXcgbmFtZSAqLworIAkJCQkJaWYgKGxpbmsobjEsIG5hbTIuYnVmKSkgeworLQkJCQkJCXdhcm4oXygiZmFpbGVkIHRvIGhhcmRsaW5rICVzIHRvICVzIChjcmVhdGUgdGVtcG9yYXJ5IGxpbmsgYXMgJXMgZmFpbGVkKSIpLAorKwkJCQkJCXdhcm4oKCJmYWlsZWQgdG8gaGFyZGxpbmsgJXMgdG8gJXMgKGNyZWF0ZSB0ZW1wb3JhcnkgbGluayBhcyAlcyBmYWlsZWQpIiksCisgCQkJCQkJCW4xLCBuMiwgbmFtMi5idWYpOworIAkJCQkJCWZyZWUobmFtMi5idWYpOworIAkJCQkJCWNvbnRpbnVlOworIAkJCQkJfQorIAkJCQkJLyogVGhlbiByZW5hbWUgaW50byBwbGFjZSBvdmVyIHRoZSBleGlzdGluZyBuMiAqLworIAkJCQkJaWYgKHJlbmFtZShuYW0yLmJ1ZiwgbjIpKSB7CistCQkJCQkJd2FybihfKCJmYWlsZWQgdG8gaGFyZGxpbmsgJXMgdG8gJXMgKHJlbmFtZSB0ZW1wb3JhcnkgbGluayB0byAlcyBmYWlsZWQpIiksCisrCQkJCQkJd2FybigoImZhaWxlZCB0byBoYXJkbGluayAlcyB0byAlcyAocmVuYW1lIHRlbXBvcmFyeSBsaW5rIHRvICVzIGZhaWxlZCkiKSwKKyAJCQkJCQkJbjEsIG4yLCBuMik7CisgCQkJCQkJLyogU29tZXRoaW5nIHdlbnQgd3JvbmcsIHRyeSB0byByZW1vdmUgdGhlIG5vdyByZWR1bmRhbnQgdGVtcG9yYXJ5IGxpbmsgKi8KKyAJCQkJCQlpZiAodW5saW5rKG5hbTIuYnVmKSkKKy0JCQkJCQkJd2FybihfKCJmYWlsZWQgdG8gcmVtb3ZlIHRlbXBvcmFyeSBsaW5rICVzIiksIG5hbTIuYnVmKTsKKysJCQkJCQkJd2FybigoImZhaWxlZCB0byByZW1vdmUgdGVtcG9yYXJ5IGxpbmsgJXMiKSwgbmFtMi5idWYpOworIAkJCQkJCWZyZWUobmFtMi5idWYpOworIAkJCQkJCWNvbnRpbnVlOworIAkJCQkJfQorQEAgLTM1MSwxNiArMzUzLDE2IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfcGF0aChzdHJ1Y3QgaGFyZGxpbmtfY3RsICpjdGwsIGNvbnN0IGNoYXIgKm5hbWUpCisgCQkJCQkvKiBXZSBhY3R1YWxseSBkaWQgbm90IHNhdmUgYW55dGhpbmcgdGhpcyB0aW1lLCBzaW5jZSB0aGUgbGluayBzZWNvbmQgYXJndW1lbnQKKyAJCQkJCSAgIGhhZCBzb21lIG90aGVyIGxpbmtzIGFzIHdlbGwuICAqLworIAkJCQkJaWYgKGN0bC0+dmVyYm9zZSA+IDEpCistCQkJCQkJcHJpbnRmKF8oIiAlcyAlcyB0byAlc1xuIiksCistCQkJCQkJCShjdGwtPm5vX2xpbmsgPyBfKCJXb3VsZCBsaW5rIikgOiBfKCJMaW5rZWQiKSksCisrCQkJCQkJcHJpbnRmKCgiICVzICVzIHRvICVzXG4iKSwKKysJCQkJCQkJKGN0bC0+bm9fbGluayA/ICgiV291bGQgbGluayIpIDogKCJMaW5rZWQiKSksCisgCQkJCQkJCW4xLCBuMik7CisgCQkJCX0gZWxzZSB7CisgCQkJCQljdGwtPm5zYXZlZCArPSAoKHN0LnN0X3NpemUgKyA0MDk1KSAvIDQwOTYpICogNDA5NjsKKyAJCQkJCWlmIChjdGwtPnZlcmJvc2UgPiAxKQorLQkJCQkJCXByaW50ZihfKCIgJXMgJXMgdG8gJXMsICVzICVqZFxuIiksCistCQkJCQkJCShjdGwtPm5vX2xpbmsgPyBfKCJXb3VsZCBsaW5rIikgOiBfKCJMaW5rZWQiKSksCisrCQkJCQkJcHJpbnRmKCgiICVzICVzIHRvICVzLCAlcyAlamRcbiIpLAorKwkJCQkJCQkoY3RsLT5ub19saW5rID8gKCJXb3VsZCBsaW5rIikgOiAoIkxpbmtlZCIpKSwKKyAJCQkJCQkJbjEsIG4yLAorLQkJCQkJCQkoY3RsLT5ub19saW5rID8gXygid291bGQgc2F2ZSIpIDogXygic2F2ZWQiKSksCisrCQkJCQkJCShjdGwtPm5vX2xpbmsgPyAoIndvdWxkIHNhdmUiKSA6ICgic2F2ZWQiKSksCisgCQkJCQkJCShpbnRtYXhfdClzdC5zdF9zaXplKTsKKyAJCQkJfQorIAkJCQljbG9zZShmZCk7CitAQCAtNDEwLDExICs0MTIsNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQl7IE5VTEwsIDAsIE5VTEwsIDAgfSwKKyAJfTsKKyAKKy0Jc2V0bG9jYWxlKExDX0FMTCwgIiIpOworLQliaW5kdGV4dGRvbWFpbihQQUNLQUdFLCBMT0NBTEVESVIpOworLQl0ZXh0ZG9tYWluKFBBQ0tBR0UpOworLQljbG9zZV9zdGRvdXRfYXRleGl0KCk7CistCisgCXdoaWxlICgoY2ggPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiY252Zng6VmgiLCBsb25nb3B0cywgTlVMTCkpICE9IC0xKSB7CisgCQlzd2l0Y2ggKGNoKSB7CisgCQljYXNlICduJzoKK0BAIC00MzQsNyArNDMxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJCWV4Y2x1ZGVfcGF0dGVybiA9IChQQ1JFMl9TUFRSKSBvcHRhcmc7CisgI2Vsc2UKKyAJCQllcnJ4KEVYSVRfRkFJTFVSRSwKKy0JCQkgICAgIF8oIm9wdGlvbiAtLWV4Y2x1ZGUgbm90IHN1cHBvcnRlZCAoYnVpbHQgd2l0aG91dCBwY3JlMikiKSk7CisrCQkJICAgICAoIm9wdGlvbiAtLWV4Y2x1ZGUgbm90IHN1cHBvcnRlZCAoYnVpbHQgd2l0aG91dCBwY3JlMikiKSk7CisgI2VuZGlmCisgCQkJYnJlYWs7CisgCQljYXNlICdWJzoKK0BAIC00NDcsNyArNDQ0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAl9CisgCisgCWlmIChvcHRpbmQgPT0gYXJnYykgeworLQkJd2FybngoXygibm8gZGlyZWN0b3J5IHNwZWNpZmllZCIpKTsKKysJCXdhcm54KCgibm8gZGlyZWN0b3J5IHNwZWNpZmllZCIpKTsKKyAJCWVycnRyeWhlbHAoRVhJVF9GQUlMVVJFKTsKKyAJfQorIAorQEAgLTQ2MSw3ICs0NTgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJUENSRTJfVUNIQVIgYnVmZmVyWzI1Nl07CisgCQkJcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2UoZXJyb3JudW1iZXIsIGJ1ZmZlciwKKyAJCQkJCQlzaXplb2YoYnVmZmVyKSk7CistCQkJZXJyeChFWElUX0ZBSUxVUkUsIF8oInBhdHRlcm4gZXJyb3IgYXQgb2Zmc2V0ICVkOiAlcyIpLAorKwkJCWVycngoRVhJVF9GQUlMVVJFLCAoInBhdHRlcm4gZXJyb3IgYXQgb2Zmc2V0ICVkOiAlcyIpLAorIAkJCQkoaW50KWVycm9yb2Zmc2V0LCBidWZmZXIpOworIAkJfQorIAkJbWF0Y2hfZGF0YSA9IHBjcmUyX21hdGNoX2RhdGFfY3JlYXRlX2Zyb21fcGF0dGVybihyZSwgTlVMTCk7CitAQCAtNTA2LDcgKzUwMyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCQkgICAgPj0wKSB7CisgCQkJCWlmIChjdGwtPnZlcmJvc2UpIHsKKyAJCQkJCW5hbTEuYnVmW25hbTFiYXNlbGVuXSA9IDA7CistCQkJCQlwcmludGYoXygiU2tpcHBpbmcgJXMlc1xuIiksIG5hbTEuYnVmLCBkaS0+ZF9uYW1lKTsKKysJCQkJCXByaW50ZigoIlNraXBwaW5nICVzJXNcbiIpLCBuYW0xLmJ1ZiwgZGktPmRfbmFtZSk7CisgCQkJCX0KKyAJCQkJY29udGludWU7CisgCQkJfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM1MzEwOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gYjkxYzMyM2Q4MDkwMzliZjliOGM0NDU0MTg1NzlhOGI1ZmU2MWFlYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjUwOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMjhdIG5hdGl2ZXNkay1nbGliYzogRml4IGJ1ZmZlciBvdmVycnVuIHdpdGggYSByZWxvY2F0ZWQKLSBTREsKLQotV2hlbiBsZC1saW51eC0qLnNvLjIgaXMgcmVsb2NhdGVkIHRvIGEgcGF0aCB0aGF0IGlzIGxvbmdlciB0aGFuIHRoZQotb3JpZ2luYWwgZml4ZWQgbG9jYXRpb24sIHRoZSBkeW5hbWljIGxvYWRlciB3aWxsIGNyYXNoIGluIG9wZW5fcGF0aAotYmVjYXVzZSBpdCBpbXBsaWNpdGx5IGFzc3VtZXMgdGhhdCBtYXhfZGlybmFtZWxlbiBpcyBhIGZpeGVkIHNpemUgdGhhdAotbmV2ZXIgY2hhbmdlcy4KLQotVGhlIGFsbG9jYXRlZCBidWZmZXIgd2lsbCBub3QgYmUgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gdGhlIGRpcmVjdG9yeQotcGF0aCBzdHJpbmcgd2hpY2ggaXMgbGFyZ2VyIHRoYW4gdGhlIGZpeGVkIGxvY2F0aW9uIHByb3ZpZGVkIGF0IGJ1aWxkCi10aW1lLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIFNESyBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBlbGYvZGwtbG9hZC5jIHwgMTIgKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2VsZi9kbC1sb2FkLmMgYi9lbGYvZGwtbG9hZC5jCi1pbmRleCA5ODFiZDViNGFmLi5jN2EwZmE1OGNiIDEwMDY0NAotLS0tIGEvZWxmL2RsLWxvYWQuYwotKysrIGIvZWxmL2RsLWxvYWQuYwotQEAgLTE3ODAsNyArMTc4MCwxOSBAQCBvcGVuX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBuYW1lbGVuLCBpbnQgbW9kZSwKLSAgICAgICAgZ2l2ZW4gb24gdGhlIGNvbW1hbmQgbGluZSB3aGVuIHJ0bGQgaXMgcnVuIGRpcmVjdGx5LiAgKi8KLSAgICAgcmV0dXJuIC0xOwotIAotKyAgZG8KLSsgICAgewotKyAgICAgIHN0cnVjdCByX3NlYXJjaF9wYXRoX2VsZW0gKnRoaXNfZGlyID0gKmRpcnM7Ci0rICAgICAgaWYgKHRoaXNfZGlyLT5kaXJuYW1lbGVuID4gbWF4X2Rpcm5hbWVsZW4pCi0rCXsKLSsJICBtYXhfZGlybmFtZWxlbiA9IHRoaXNfZGlyLT5kaXJuYW1lbGVuOwotKwl9Ci0rICAgIH0KLSsgIHdoaWxlICgqKytkaXJzICE9IE5VTEwpOwotKwotICAgYnVmID0gYWxsb2NhIChtYXhfZGlybmFtZWxlbiArIG1heF9jYXBzdHJsZW4gKyBuYW1lbGVuKTsKLSsKLSsgIGRpcnMgPSBzcHMtPmRpcnM7Ci0gICBkbwotICAgICB7Ci0gICAgICAgc3RydWN0IHJfc2VhcmNoX3BhdGhfZWxlbSAqdGhpc19kaXIgPSAqZGlyczsKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAzLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNkYzgzNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKK0Zyb20gNjk4N2FkMTgzNzcwY2I1NjY4MGNjYzRmNmVhMDY1YTA0ZjMxY2NiNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjQ4OjI0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIG5hdGl2ZXNkay1nbGliYzogTG9vayBmb3IgaG9zdCBzeXN0ZW0gbGQuc28uY2FjaGUgYXMgd2VsbAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitUaGUgZGVmYXVsdCBsaWIgc2VhcmNoIHBhdGggb3JkZXIgaXM6CisKKyAgMSkgTERfTElCUkFSWV9QQVRICisgIDIpIFJQQVRIIGZyb20gdGhlIGJpbmFyeQorICAzKSBsZC5zby5jYWNoZQorICA0KSBkZWZhdWx0IHNlYXJjaCBwYXRocyBlbWJlZGRlZCBpbiB0aGUgbGlua2VyCisKK0ZvciBuYXRpdmVzZGsgYmluYXJpZXMgd2hpY2ggYXJlIGJlaW5nIHVzZWQgYWxvbmdzaWRlIGJpbmFyaWVzIG9uIGEgaG9zdCBzeXN0ZW0sIHdlCituZWVkIHRoZSBzZWFyY2ggcGF0aHMgdG8gZmlyc3RseSBzZWFyY2ggdGhlIHNoaXBwZWQgbmF0aXZlc2RrIGxpYnMgYnV0IHRoZW4gYWxzbworY292ZXIgdGhlIGhvc3Qgc3lzdGVtLiBGb3IgZXhhbXBsZSB3ZSB3YW50IHRoZSBob3N0IHN5c3RlbSdzIGxpYkdMIGFuZCB0aGlzIG1heSBiZQoraW4gYSBub24tc3RhbmRhcmQgbG9jYXRpb24gbGlrZSAvdXNyL2xpYi9tZXNhLiBUaGUgb25seSBwbGFjZSB0aGUgbG9jYXRpb24gaXMga25vdworYWJvdXQgaXMgaW4gdGhlIGxkLnNvLmNhY2hlIG9mIHRoZSBob3N0IHN5c3RlbS4KKworU2luY2UgbmF0aXZlc2RrIGhhcyBhIHNpbXBsZSBzdHJ1Y3R1cmUgYW5kIGRvZXNuJ3QgbmVlZCB0byB1c2UgYSBjYWNoZSBpdHNlbGYsIHdlCityZXB1cnBvc2UgdGhlIGNhY2hlIGZvciB1c2UgYXMgYSBsYXN0IHJlc29ydCBpbiBmaW5kaW5nIGhvc3Qgc3lzdGVtIGJpbmFyaWVzLiBUaGlzCittZWFucyB3ZSBuZWVkIHRvIHN3aXRjaCB0aGUgb3JkZXIgb2YgMyBhbmQgNCBhYm92ZSB0byBtYWtlIHRoaXMgd29yayBlZmZlY3RpdmVseS4KKworUlAgMTQvMTAvMjAxMAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZWxmL2RsLWxvYWQuYyB8IDE2ICsrKysrKysrLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZWxmL2RsLWxvYWQuYyBiL2VsZi9kbC1sb2FkLmMKK2luZGV4IGE2YjgwZjkzOTUuLjMyMjZmMmU1MzEgMTAwNjQ0CistLS0gYS9lbGYvZGwtbG9hZC5jCisrKysgYi9lbGYvZGwtbG9hZC5jCitAQCAtMjA3Myw2ICsyMDczLDE0IEBAIF9kbF9tYXBfb2JqZWN0IChzdHJ1Y3QgbGlua19tYXAgKmxvYWRlciwgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgCisrICAgICAgLyogdHJ5IHRoZSBkZWZhdWx0IHBhdGguICAqLworKyAgICAgIGlmIChmZCA9PSAtMQorKwkgICYmICgobCA9IGxvYWRlciA/OiBHTChkbF9ucylbbnNpZF0uX25zX2xvYWRlZCkgPT0gTlVMTAorKwkgICB8fCBfX2J1aWx0aW5fZXhwZWN0ICghKGwtPmxfZmxhZ3NfMSAmIERGXzFfTk9ERUZMSUIpLCAxKSkKKysJICYmIHJ0bGRfc2VhcmNoX2RpcnMuZGlycyAhPSAodm9pZCAqKSAtMSkKKysJZmQgPSBvcGVuX3BhdGggKG5hbWUsIG5hbWVsZW4sIG1vZGUgJiBfX1JUTERfU0VDVVJFLCAmcnRsZF9zZWFyY2hfZGlycywKKysJCQkmcmVhbG5hbWUsICZmYiwgbCwgTEFfU0VSX0RFRkFVTFQsICZmb3VuZF9vdGhlcl9jbGFzcyk7CisrICAgICAgLyogRmluYWxseSB0cnkgbGQuc28uY2FjaGUgKi8KKyAjaWZkZWYgVVNFX0xEQ09ORklHCisgICAgICAgaWYgKGZkID09IC0xCisgCSAgJiYgKF9fZ2xpYmNfbGlrZWx5ICgobW9kZSAmIF9fUlRMRF9TRUNVUkUpID09IDApCitAQCAtMjEzMSwxNCArMjEzOSw2IEBAIF9kbF9tYXBfb2JqZWN0IChzdHJ1Y3QgbGlua19tYXAgKmxvYWRlciwgY29uc3QgY2hhciAqbmFtZSwKKyAJfQorICNlbmRpZgorIAorLSAgICAgIC8qIEZpbmFsbHksIHRyeSB0aGUgZGVmYXVsdCBwYXRoLiAgKi8KKy0gICAgICBpZiAoZmQgPT0gLTEKKy0JICAmJiAoKGwgPSBsb2FkZXIgPzogR0woZGxfbnMpW25zaWRdLl9uc19sb2FkZWQpID09IE5VTEwKKy0JICAgICAgfHwgX19nbGliY19saWtlbHkgKCEobC0+bF9mbGFnc18xICYgREZfMV9OT0RFRkxJQikpKQorLQkgICYmIHJ0bGRfc2VhcmNoX2RpcnMuZGlycyAhPSAodm9pZCAqKSAtMSkKKy0JZmQgPSBvcGVuX3BhdGggKG5hbWUsIG5hbWVsZW4sIG1vZGUsICZydGxkX3NlYXJjaF9kaXJzLAorLQkJCSZyZWFsbmFtZSwgJmZiLCBsLCBMQV9TRVJfREVGQVVMVCwgJmZvdW5kX290aGVyX2NsYXNzKTsKKy0KKyAgICAgICAvKiBBZGQgYW5vdGhlciBuZXdsaW5lIHdoZW4gd2UgYXJlIHRyYWNpbmcgdGhlIGxpYnJhcnkgbG9hZGluZy4gICovCisgICAgICAgaWYgKF9fZ2xpYmNfdW5saWtlbHkgKEdMUk8oZGxfZGVidWdfbWFzaykgJiBETF9ERUJVR19MSUJTKSkKKyAJX2RsX2RlYnVnX3ByaW50ZiAoIlxuIik7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGY1YTc4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLUZyb20gM2FjZWI4NGUyYmMwZjc5NjIwNGZlMDU5YmVlZGU5MTE3OWIxYmM2ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjUxOjM4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMjhdIG5hdGl2ZXNkay1nbGliYzogUmFpc2UgdGhlIHNpemUgb2YgYXJyYXlzIGNvbnRhaW5pbmcgZGwKLSBwYXRocwotCi1UaGlzIHBhdGNoIHB1dHMgdGhlIGR5bmFtaWMgbG9hZGVyIHBhdGggaW4gdGhlIGJpbmFyaWVzLCBTWVNURU1fRElSUyBzdHJpbmdzCi1hbmQgbGVuZ3RocyBhcyB3ZWxsIGFzIGxkLnNvLmNhY2hlIHBhdGggaW4gdGhlIGR5bmFtaWMgbG9hZGVyIHRvIHNwZWNpZmljCi1zZWN0aW9ucyBpbiBtZW1vcnkuIFRoZSBzZWN0aW9ucyB0aGF0IGNvbnRhaW4gcGF0aHMgaGF2ZSBiZWVuIGFsbG9jYXRlZCBhIDQwOTYKLWJ5dGUgc2VjdGlvbiwgd2hpY2ggaXMgdGhlIG1heGltdW0gcGF0aCBsZW5ndGggaW4gbGludXguIFRoaXMgd2lsbCBhbGxvdyB0aGUKLXJlbG9jYXRpbmcgc2NyaXB0IHRvIHBhcnNlIHRoZSBFTEYgYmluYXJ5LCBkZXRlY3QgdGhlIHNlY3Rpb24gYW5kIGVhc2lseSByZXBsYWNlCi10aGUgc3RyaW5ncyBpbiBhIGNlcnRhaW4gcGF0aC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtTREsgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IExhdXJlbnRpdSBQYWxjdSA8bGF1cmVudGl1LnBhbGN1QGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBlbGYvZGwtY2FjaGUuYyAgICAgICAgICAgICB8IDQgKysrKwotIGVsZi9kbC1sb2FkLmMgICAgICAgICAgICAgIHwgNCArKy0tCi0gZWxmL2ludGVycC5jICAgICAgICAgICAgICAgfCAyICstCi0gZWxmL2xkY29uZmlnLmMgICAgICAgICAgICAgfCAzICsrKwotIGVsZi9ydGxkLmMgICAgICAgICAgICAgICAgIHwgNSArKystLQotIGljb252L2djb252X2NvbmYuYyAgICAgICAgIHwgMiArLQotIHN5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oIHwgNCAtLS0tCi0gNyBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2VsZi9kbC1jYWNoZS5jIGIvZWxmL2RsLWNhY2hlLmMKLWluZGV4IGQ4ZDFlMjM0NGUuLmQyMjQ3YmZjNGYgMTAwNjQ0Ci0tLS0gYS9lbGYvZGwtY2FjaGUuYwotKysrIGIvZWxmL2RsLWNhY2hlLmMKLUBAIC0xMzMsNiArMTMzLDEwIEBAIGRvCQkJCQkJCQkJICAgICAgXAotIHdoaWxlICgwKQotIAotIAotK2NvbnN0IGNoYXIgTERfU09fQ0FDSEVbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIubGRzb2NhY2hlIikpKSA9Ci0rCQlTWVNDT05GRElSICIvbGQuc28uY2FjaGUiOwotKwotKwotIGludAotIF9kbF9jYWNoZV9saWJjbXAgKGNvbnN0IGNoYXIgKnAxLCBjb25zdCBjaGFyICpwMikKLSB7Ci1kaWZmIC0tZ2l0IGEvZWxmL2RsLWxvYWQuYyBiL2VsZi9kbC1sb2FkLmMKLWluZGV4IGM3YTBmYTU4Y2IuLjRiODc1MDVkNDUgMTAwNjQ0Ci0tLS0gYS9lbGYvZGwtbG9hZC5jCi0rKysgYi9lbGYvZGwtbG9hZC5jCi1AQCAtMTEwLDggKzExMCw4IEBAIHN0YXRpYyBzaXplX3QgbWF4X2NhcHN0cmxlbiBhdHRyaWJ1dGVfcmVscm87Ci0gICAgZ2VuLXRydXN0ZWQtZGlycy5hd2suICAqLwotICNpbmNsdWRlICJ0cnVzdGVkLWRpcnMuaCIKLSAKLS1zdGF0aWMgY29uc3QgY2hhciBzeXN0ZW1fZGlyc1tdID0gU1lTVEVNX0RJUlM7Ci0tc3RhdGljIGNvbnN0IHNpemVfdCBzeXN0ZW1fZGlyc19sZW5bXSA9Ci0rc3RhdGljIGNvbnN0IGNoYXIgc3lzdGVtX2RpcnNbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuc3lzZGlycyIpKSkgPSBTWVNURU1fRElSUzsKLSt2b2xhdGlsZSBzdGF0aWMgY29uc3Qgc2l6ZV90IHN5c3RlbV9kaXJzX2xlbltdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLnN5c2RpcnNsZW4iKSkpID0KLSB7Ci0gICBTWVNURU1fRElSU19MRU4KLSB9OwotZGlmZiAtLWdpdCBhL2VsZi9pbnRlcnAuYyBiL2VsZi9pbnRlcnAuYwotaW5kZXggMjQzODI5ZjVmNy4uMGU3NDI0MTcwMyAxMDA2NDQKLS0tLSBhL2VsZi9pbnRlcnAuYwotKysrIGIvZWxmL2ludGVycC5jCi1AQCAtMTgsNSArMTgsNSBAQAotIAotICNpbmNsdWRlIDxydW50aW1lLWxpbmtlci5oPgotIAotLWNvbnN0IGNoYXIgX19pbnZva2VfZHluYW1pY19saW5rZXJfX1tdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmludGVycCIpKSkKLStjb25zdCBjaGFyIF9faW52b2tlX2R5bmFtaWNfbGlua2VyX19bNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuaW50ZXJwIikpKQotICAgPSBSVU5USU1FX0xJTktFUjsKLWRpZmYgLS1naXQgYS9lbGYvbGRjb25maWcuYyBiL2VsZi9sZGNvbmZpZy5jCi1pbmRleCAzYmM5ZTYxODkxLi42YTIzMDk2NDM1IDEwMDY0NAotLS0tIGEvZWxmL2xkY29uZmlnLmMKLSsrKyBiL2VsZi9sZGNvbmZpZy5jCi1AQCAtMTY4LDYgKzE2OCw5IEBAIHN0YXRpYyBzdHJ1Y3QgYXJncCBhcmdwID0KLSAgIG9wdGlvbnMsIHBhcnNlX29wdCwgTlVMTCwgZG9jLCBOVUxMLCBtb3JlX2hlbHAsIE5VTEwKLSB9OwotIAotKwotK2V4dGVybiBjb25zdCBjaGFyIExEX1NPX0NBQ0hFWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmxkc29jYWNoZSIpKSk7Ci0rCi0gLyogQ2hlY2sgaWYgc3RyaW5nIGNvcnJlc3BvbmRzIHRvIGFuIGltcG9ydGFudCBoYXJkd2FyZSBjYXBhYmlsaXR5IG9yCi0gICAgYSBwbGF0Zm9ybS4gICovCi0gc3RhdGljIGludAotZGlmZiAtLWdpdCBhL2VsZi9ydGxkLmMgYi9lbGYvcnRsZC5jCi1pbmRleCBjOTQ5MGZmNjk0Li4zOTYyMzczZWJiIDEwMDY0NAotLS0tIGEvZWxmL3J0bGQuYwotKysrIGIvZWxmL3J0bGQuYwotQEAgLTE3Myw2ICsxNzMsNyBAQCBkc29fbmFtZV92YWxpZF9mb3Jfc3VpZCAoY29uc3QgY2hhciAqcCkKLSAgICAgfQotICAgcmV0dXJuICpwICE9ICdcMCc7Ci0gfQotK2V4dGVybiBjb25zdCBjaGFyIExEX1NPX0NBQ0hFWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmxkc29jYWNoZSIpKSk7Ci0gCi0gLyogTERfQVVESVQgdmFyaWFibGUgY29udGVudHMuICBNdXN0IGJlIHByb2Nlc3NlZCBiZWZvcmUgdGhlCi0gICAgYXVkaXRfbGlzdCBiZWxvdy4gICovCi1AQCAtMTIyMCwxMyArMTIyMSwxMyBAQCBvZiB0aGlzIGhlbHBlciBwcm9ncmFtOyBjaGFuY2VzIGFyZSB5b3UgZGlkIG5vdCBpbnRlbmQgdG8gcnVuIHRoaXMgcHJvZ3JhbS5cblwKLSAgIC0tbGlzdCAgICAgICAgICAgICAgICBsaXN0IGFsbCBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGV5IGFyZSByZXNvbHZlZFxuXAotICAgLS12ZXJpZnkgICAgICAgICAgICAgIHZlcmlmeSB0aGF0IGdpdmVuIG9iamVjdCByZWFsbHkgaXMgYSBkeW5hbWljYWxseSBsaW5rZWRcblwKLSAJCQlvYmplY3Qgd2UgY2FuIGhhbmRsZVxuXAotLSAgLS1pbmhpYml0LWNhY2hlICAgICAgIERvIG5vdCB1c2UgIiBMRF9TT19DQUNIRSAiXG5cCi0rICAtLWluaGliaXQtY2FjaGUgICAgICAgRG8gbm90IHVzZSAlc1xuXAotICAgLS1saWJyYXJ5LXBhdGggUEFUSCAgIHVzZSBnaXZlbiBQQVRIIGluc3RlYWQgb2YgY29udGVudCBvZiB0aGUgZW52aXJvbm1lbnRcblwKLSAJCQl2YXJpYWJsZSBMRF9MSUJSQVJZX1BBVEhcblwKLSAgIC0taW5oaWJpdC1ycGF0aCBMSVNUICBpZ25vcmUgUlVOUEFUSCBhbmQgUlBBVEggaW5mb3JtYXRpb24gaW4gb2JqZWN0IG5hbWVzXG5cCi0gCQkJaW4gTElTVFxuXAotICAgLS1hdWRpdCBMSVNUICAgICAgICAgIHVzZSBvYmplY3RzIG5hbWVkIGluIExJU1QgYXMgYXVkaXRvcnNcblwKLS0gIC0tcHJlbG9hZCBMSVNUICAgICAgICBwcmVsb2FkIG9iamVjdHMgbmFtZWQgaW4gTElTVFxuIik7Ci0rICAtLXByZWxvYWQgTElTVCAgICAgICAgcHJlbG9hZCBvYmplY3RzIG5hbWVkIGluIExJU1RcbiIsIExEX1NPX0NBQ0hFKTsKLSAKLSAgICAgICArK19kbF9za2lwX2FyZ3M7Ci0gICAgICAgLS1fZGxfYXJnYzsKLWRpZmYgLS1naXQgYS9pY29udi9nY29udl9jb25mLmMgYi9pY29udi9nY29udl9jb25mLmMKLWluZGV4IGFlODkzN2NiYTAuLmYzMjFlZTQxOWUgMTAwNjQ0Ci0tLS0gYS9pY29udi9nY29udl9jb25mLmMKLSsrKyBiL2ljb252L2djb252X2NvbmYuYwotQEAgLTM2LDcgKzM2LDcgQEAKLSAKLSAKLSAvKiBUaGlzIGlzIHRoZSBkZWZhdWx0IHBhdGggd2hlcmUgd2UgbG9vayBmb3IgbW9kdWxlIGxpc3RzLiAgKi8KLS1zdGF0aWMgY29uc3QgY2hhciBkZWZhdWx0X2djb252X3BhdGhbXSA9IEdDT05WX1BBVEg7Ci0rc3RhdGljIGNoYXIgZGVmYXVsdF9nY29udl9wYXRoWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdDT05WX1BBVEg7Ci0gCi0gLyogVHlwZSB0byByZXByZXNlbnQgc2VhcmNoIHBhdGguICAqLwotIHN0cnVjdCBwYXRoX2VsZW0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaCBiL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oCi1pbmRleCBiYzhiNDAzMzFkLi5iMGZkZDIxNDRiIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmgKLSsrKyBiL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oCi1AQCAtMjcsMTAgKzI3LDYgQEAKLSAgICgoZmxhZ3MpID09IDEgfHwgKGZsYWdzKSA9PSBfRExfQ0FDSEVfREVGQVVMVF9JRCkKLSAjZW5kaWYKLSAKLS0jaWZuZGVmIExEX1NPX0NBQ0hFCi0tIyBkZWZpbmUgTERfU09fQ0FDSEUgU1lTQ09ORkRJUiAiL2xkLnNvLmNhY2hlIgotLSNlbmRpZgotLQotICNpZm5kZWYgYWRkX3N5c3RlbV9kaXIKLSAjIGRlZmluZSBhZGRfc3lzdGVtX2RpcihkaXIpIGFkZF9kaXIgKGRpcikKLSAjZW5kaWYKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQzZjI5NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDQtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIGU0MWUwNDIxNDllYWMzNDllMDlmYTYyOWZjYWM0YzY0ZTU3NDMyMmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAxNDozNTozNSAtMDgwMAotU3ViamVjdDogW1BBVENIIDA0LzI4XSBuYXRpdmVzZGstZ2xpYmM6IEFsbG93IDY0IGJpdCBhdG9taWNzIGZvciB4ODYKLQotVGhlIGZpeCBjb25zaXN0IG9mIGFsbG93aW5nIDY0Yml0IGF0b21pYyBvcHMgZm9yIHg4Ni4KLVRoaXMgc2hvdWxkIGJlIHNhZmUgZm9yIGk1ODYgYW5kIG5ld2VyIENQVXMuCi1JdCBhbHNvIG1ha2VzIHRoZSBzeW5jaHJvbml6YXRpb24gbW9yZSBlZmZpY2llbnQuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UtU3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzeXNkZXBzL3g4Ni9hdG9taWMtbWFjaGluZS5oIHwgMyArLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3g4Ni9hdG9taWMtbWFjaGluZS5oIGIvc3lzZGVwcy94ODYvYXRvbWljLW1hY2hpbmUuaAotaW5kZXggYWE2MGNhNGNkNi4uM2U0MmUwMDE4MyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMveDg2L2F0b21pYy1tYWNoaW5lLmgKLSsrKyBiL3N5c2RlcHMveDg2L2F0b21pYy1tYWNoaW5lLmgKLUBAIC01OCwxNSArNTgsMTQgQEAgdHlwZWRlZiB1aW50bWF4X3QgdWF0b21pY19tYXhfdDsKLSAjZW5kaWYKLSAKLSAjZGVmaW5lIFVTRV9BVE9NSUNfQ09NUElMRVJfQlVJTFRJTlMJMQotKyMgZGVmaW5lIF9fSEFWRV82NEJfQVRPTUlDUwkJMQotIAotICNpZmRlZiBfX3g4Nl82NF9fCi0tIyBkZWZpbmUgX19IQVZFXzY0Ql9BVE9NSUNTCQkxCi0gIyBkZWZpbmUgU1BfUkVHCQkJCSJyc3AiCi0gIyBkZWZpbmUgU0VHX1JFRwkJCSJmcyIKLSAjIGRlZmluZSBCUl9DT05TVFJBSU5UCQkJInEiCi0gIyBkZWZpbmUgSUJSX0NPTlNUUkFJTlQJCQkiaXEiCi0gI2Vsc2UKLS0jIGRlZmluZSBfX0hBVkVfNjRCX0FUT01JQ1MJCTAKLSAjIGRlZmluZSBTUF9SRUcJCQkJImVzcCIKLSAjIGRlZmluZSBTRUdfUkVHCQkJImdzIgotICMgZGVmaW5lIEJSX0NPTlNUUkFJTlQJCQkiciIKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA0LW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJlMTI4OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gNzgwNjM0MGMyYWNjYzJjNTFlN2U4NjFiNjE4YzI5ZmI1NjA5YTAwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjUwOjAwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIG5hdGl2ZXNkay1nbGliYzogRml4IGJ1ZmZlciBvdmVycnVuIHdpdGggYSByZWxvY2F0ZWQgU0RLCisKK1doZW4gbGQtbGludXgtKi5zby4yIGlzIHJlbG9jYXRlZCB0byBhIHBhdGggdGhhdCBpcyBsb25nZXIgdGhhbiB0aGUKK29yaWdpbmFsIGZpeGVkIGxvY2F0aW9uLCB0aGUgZHluYW1pYyBsb2FkZXIgd2lsbCBjcmFzaCBpbiBvcGVuX3BhdGgKK2JlY2F1c2UgaXQgaW1wbGljaXRseSBhc3N1bWVzIHRoYXQgbWF4X2Rpcm5hbWVsZW4gaXMgYSBmaXhlZCBzaXplIHRoYXQKK25ldmVyIGNoYW5nZXMuCisKK1RoZSBhbGxvY2F0ZWQgYnVmZmVyIHdpbGwgbm90IGJlIGxhcmdlIGVub3VnaCB0byBjb250YWluIHRoZSBkaXJlY3RvcnkKK3BhdGggc3RyaW5nIHdoaWNoIGlzIGxhcmdlciB0aGFuIHRoZSBmaXhlZCBsb2NhdGlvbiBwcm92aWRlZCBhdCBidWlsZAordGltZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBTREsgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZWxmL2RsLWxvYWQuYyB8IDEyICsrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9lbGYvZGwtbG9hZC5jIGIvZWxmL2RsLWxvYWQuYworaW5kZXggMzIyNmYyZTUzMS4uN2NiOGE4NmZhYiAxMDA2NDQKKy0tLSBhL2VsZi9kbC1sb2FkLmMKKysrKyBiL2VsZi9kbC1sb2FkLmMKK0BAIC0xNzczLDcgKzE3NzMsMTkgQEAgb3Blbl9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBzaXplX3QgbmFtZWxlbiwgaW50IG1vZGUsCisgICAgICAgIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUgd2hlbiBydGxkIGlzIHJ1biBkaXJlY3RseS4gICovCisgICAgIHJldHVybiAtMTsKKyAKKysgIGRvCisrICAgIHsKKysgICAgICBzdHJ1Y3Qgcl9zZWFyY2hfcGF0aF9lbGVtICp0aGlzX2RpciA9ICpkaXJzOworKyAgICAgIGlmICh0aGlzX2Rpci0+ZGlybmFtZWxlbiA+IG1heF9kaXJuYW1lbGVuKQorKwl7CisrCSAgbWF4X2Rpcm5hbWVsZW4gPSB0aGlzX2Rpci0+ZGlybmFtZWxlbjsKKysJfQorKyAgICB9CisrICB3aGlsZSAoKisrZGlycyAhPSBOVUxMKTsKKysKKyAgIGJ1ZiA9IGFsbG9jYSAobWF4X2Rpcm5hbWVsZW4gKyBtYXhfY2Fwc3RybGVuICsgbmFtZWxlbik7CisrCisrICBkaXJzID0gc3BzLT5kaXJzOworICAgZG8KKyAgICAgeworICAgICAgIHN0cnVjdCByX3NlYXJjaF9wYXRoX2VsZW0gKnRoaXNfZGlyID0gKmRpcnM7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDUtbmF0aXZlc2RrLWdsaWJjLU1ha2UtcmVsb2NhdGFibGUtaW5zdGFsbC1mb3ItbG9jYWxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNS1uYXRpdmVzZGstZ2xpYmMtTWFrZS1yZWxvY2F0YWJsZS1pbnN0YWxsLWZvci1sb2NhbGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWFkNjAzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNS1uYXRpdmVzZGstZ2xpYmMtTWFrZS1yZWxvY2F0YWJsZS1pbnN0YWxsLWZvci1sb2NhbGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotRnJvbSA1MGFiMGIwYzExNmY0YWUzZDk3NWVjMWIxNWVkNDU5NWZkOTE0N2Y2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMyBBdWcgMjAxOCAwOTo1NToxMiAtMDcwMAotU3ViamVjdDogW1BBVENIIDA1LzI4XSBuYXRpdmVzZGstZ2xpYmM6IE1ha2UgcmVsb2NhdGFibGUgaW5zdGFsbCBmb3IgbG9jYWxlcwotCi1UaGUgZ2xpYmMgbG9jYWxlIHBhdGggaXMgaGFyZC1jb2RlZCB0byB0aGUgaW5zdGFsbCBwcmVmaXgsIGJ1dCBpbiBTREtzIHdlIG5lZWQKLXRvIGJlIGFibGUgdG8gcmVsb2NhdGUgdGhlIGJpbmFyaWVzLiAgRXhwYW5kIHRoZSBzdHJpbmdzIHRvIDRLIGFuZCBwdXQgdGhlbSBpbiBhCi1tYWdpYyBzZWdtZW50IHRoYXQgd2UgY2FuIHJlbG9jYXRlIGF0IGluc3RhbGwgdGltZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIChPRS1zcGVjaWZpYykKLQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsb2NhbGUvZmluZGxvY2FsZS5jICB8IDQgKystLQotIGxvY2FsZS9sb2FkYXJjaGl2ZS5jIHwgMiArLQotIGxvY2FsZS9sb2NhbGVpbmZvLmggIHwgMiArLQotIDMgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL2ZpbmRsb2NhbGUuYyBiL2xvY2FsZS9maW5kbG9jYWxlLmMKLWluZGV4IDlhZjYwNWJkNjQuLmIyYjBhM2Y5M2IgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvZmluZGxvY2FsZS5jCi0rKysgYi9sb2NhbGUvZmluZGxvY2FsZS5jCi1AQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3QgX19sb2NhbGVfZGF0YSAqY29uc3QgX25sX0NbXSBhdHRyaWJ1dGVfaGlkZGVuID0KLSAgICB3aGljaCBhcmUgc29tZWhvdyBhZGRyZXNzZWQuICAqLwotIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKl9ubF9sb2NhbGVfZmlsZV9saXN0W19fTENfTEFTVF07Ci0gCi0tY29uc3QgY2hhciBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aFtdIGF0dHJpYnV0ZV9oaWRkZW4gPSBDT01QTE9DQUxFRElSOwotK2NoYXIgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGhbNDA5Nl0gYXR0cmlidXRlX2hpZGRlbiBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBDT01QTE9DQUxFRElSOwotIAotIC8qIENoZWNrcyBpZiB0aGUgbmFtZSBpcyBhY3R1YWxseSBwcmVzZW50LCB0aGF0IGlzLCBub3QgTlVMTCBhbmQgbm90Ci0gICAgZW1wdHkuICAqLwotQEAgLTE2Nyw3ICsxNjcsNyBAQCBfbmxfZmluZF9sb2NhbGUgKGNvbnN0IGNoYXIgKmxvY2FsZV9wYXRoLCBzaXplX3QgbG9jYWxlX3BhdGhfbGVuLAotIAotICAgICAgIC8qIE5vdGhpbmcgaW4gdGhlIGFyY2hpdmUuICBTZXQgdGhlIGRlZmF1bHQgcGF0aCB0byBzZWFyY2ggYmVsb3cuICAqLwotICAgICAgIGxvY2FsZV9wYXRoID0gX25sX2RlZmF1bHRfbG9jYWxlX3BhdGg7Ci0tICAgICAgbG9jYWxlX3BhdGhfbGVuID0gc2l6ZW9mIF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoOwotKyAgICAgIGxvY2FsZV9wYXRoX2xlbiA9IHN0cmxlbihsb2NhbGVfcGF0aCkgKyAxOwotICAgICB9Ci0gICBlbHNlCi0gICAgIC8qIFdlIHJlYWxseSBoYXZlIHRvIGxvYWQgc29tZSBkYXRhLiAgRmlyc3Qgc2VlIHdoZXRoZXIgdGhlIG5hbWUgaXMKLWRpZmYgLS1naXQgYS9sb2NhbGUvbG9hZGFyY2hpdmUuYyBiL2xvY2FsZS9sb2FkYXJjaGl2ZS5jCi1pbmRleCA4MDNjMWNmMmE0Li45MDIzZjQ3NWI4IDEwMDY0NAotLS0tIGEvbG9jYWxlL2xvYWRhcmNoaXZlLmMKLSsrKyBiL2xvY2FsZS9sb2FkYXJjaGl2ZS5jCi1AQCAtNDIsNyArNDIsNyBAQAotIAotIAotIC8qIE5hbWUgb2YgdGhlIGxvY2FsZSBhcmNoaXZlIGZpbGUuICAqLwotLXN0YXRpYyBjb25zdCBjaGFyIGFyY2hmbmFtZVtdID0gQ09NUExPQ0FMRURJUiAiL2xvY2FsZS1hcmNoaXZlIjsKLStzdGF0aWMgY29uc3QgY2hhciBhcmNoZm5hbWVbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gQ09NUExPQ0FMRURJUiAiL2xvY2FsZS1hcmNoaXZlIjsKLSAKLSAvKiBTaXplIG9mIGluaXRpYWwgbWFwcGluZyB3aW5kb3csIG9wdGltYWwgaWYgbGFyZ2UgZW5vdWdoIHRvCi0gICAgY292ZXIgdGhlIGhlYWRlciBwbHVzIHRoZSBpbml0aWFsIGxvY2FsZS4gICovCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL2xvY2FsZWluZm8uaCBiL2xvY2FsZS9sb2NhbGVpbmZvLmgKLWluZGV4IDdjMWNjM2VlY2IuLjUzY2I4YmZjNTkgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvbG9jYWxlaW5mby5oCi0rKysgYi9sb2NhbGUvbG9jYWxlaW5mby5oCi1AQCAtMzI1LDcgKzMyNSw3IEBAIF9ubF9sb29rdXBfd29yZCAobG9jYWxlX3QgbCwgaW50IGNhdGVnb3J5LCBpbnQgaXRlbSkKLSB9Ci0gCi0gLyogRGVmYXVsdCBzZWFyY2ggcGF0aCBpZiBubyBMT0NQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlLiAgKi8KLS1leHRlcm4gY29uc3QgY2hhciBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aFtdIGF0dHJpYnV0ZV9oaWRkZW47Ci0rZXh0ZXJuIGNoYXIgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGhbNDA5Nl0gYXR0cmlidXRlX2hpZGRlbjsKLSAKLSAvKiBMb2FkIHRoZSBsb2NhbGUgZGF0YSBmb3IgQ0FURUdPUlkgZnJvbSB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgKk5BTUUuCi0gICAgSWYgKk5BTUUgaXMgIiIsIHVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXMgc3BlY2lmaWVkIGJ5IFBPU0lYLCBhbmQKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNS1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk0YzJiOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNS1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoCkBAIC0wLDAgKzEsMTM3IEBACitGcm9tIDFiOTdiZWZiZTY5M2ViOTNhNzdiNjA5OGY2YWUxMzk0YTUzNDYyZjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTo1MTozOCArMDAwMAorU3ViamVjdDogW1BBVENIXSBuYXRpdmVzZGstZ2xpYmM6IFJhaXNlIHRoZSBzaXplIG9mIGFycmF5cyBjb250YWluaW5nIGRsIHBhdGhzCisKK1RoaXMgcGF0Y2ggcHV0cyB0aGUgZHluYW1pYyBsb2FkZXIgcGF0aCBpbiB0aGUgYmluYXJpZXMsIFNZU1RFTV9ESVJTIHN0cmluZ3MKK2FuZCBsZW5ndGhzIGFzIHdlbGwgYXMgbGQuc28uY2FjaGUgcGF0aCBpbiB0aGUgZHluYW1pYyBsb2FkZXIgdG8gc3BlY2lmaWMKK3NlY3Rpb25zIGluIG1lbW9yeS4gVGhlIHNlY3Rpb25zIHRoYXQgY29udGFpbiBwYXRocyBoYXZlIGJlZW4gYWxsb2NhdGVkIGEgNDA5NgorYnl0ZSBzZWN0aW9uLCB3aGljaCBpcyB0aGUgbWF4aW11bSBwYXRoIGxlbmd0aCBpbiBsaW51eC4gVGhpcyB3aWxsIGFsbG93IHRoZQorcmVsb2NhdGluZyBzY3JpcHQgdG8gcGFyc2UgdGhlIEVMRiBiaW5hcnksIGRldGVjdCB0aGUgc2VjdGlvbiBhbmQgZWFzaWx5IHJlcGxhY2UKK3RoZSBzdHJpbmdzIGluIGEgY2VydGFpbiBwYXRoLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1NESyBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogTGF1cmVudGl1IFBhbGN1IDxsYXVyZW50aXUucGFsY3VAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGVsZi9kbC1jYWNoZS5jICAgICAgICAgICAgIHwgNCArKysrCisgZWxmL2RsLWxvYWQuYyAgICAgICAgICAgICAgfCA0ICsrLS0KKyBlbGYvaW50ZXJwLmMgICAgICAgICAgICAgICB8IDIgKy0KKyBlbGYvbGRjb25maWcuYyAgICAgICAgICAgICB8IDMgKysrCisgZWxmL3J0bGQuYyAgICAgICAgICAgICAgICAgfCA1ICsrKy0tCisgaWNvbnYvZ2NvbnZfY29uZi5jICAgICAgICAgfCAyICstCisgc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmggfCA0IC0tLS0KKyA3IGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZWxmL2RsLWNhY2hlLmMgYi9lbGYvZGwtY2FjaGUuYworaW5kZXggM2VlZGQ5YWZjZi4uZWZkZmU1Y2FlNyAxMDA2NDQKKy0tLSBhL2VsZi9kbC1jYWNoZS5jCisrKysgYi9lbGYvZGwtY2FjaGUuYworQEAgLTEzMyw2ICsxMzMsMTAgQEAgZG8JCQkJCQkJCQkgICAgICBcCisgd2hpbGUgKDApCisgCisgCisrY29uc3QgY2hhciBMRF9TT19DQUNIRVs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5sZHNvY2FjaGUiKSkpID0KKysJCVNZU0NPTkZESVIgIi9sZC5zby5jYWNoZSI7CisrCisrCisgaW50CisgX2RsX2NhY2hlX2xpYmNtcCAoY29uc3QgY2hhciAqcDEsIGNvbnN0IGNoYXIgKnAyKQorIHsKK2RpZmYgLS1naXQgYS9lbGYvZGwtbG9hZC5jIGIvZWxmL2RsLWxvYWQuYworaW5kZXggN2NiOGE4NmZhYi4uZTMyZDRhYTkzNiAxMDA2NDQKKy0tLSBhL2VsZi9kbC1sb2FkLmMKKysrKyBiL2VsZi9kbC1sb2FkLmMKK0BAIC0xMTAsOCArMTEwLDggQEAgc3RhdGljIHNpemVfdCBtYXhfY2Fwc3RybGVuIGF0dHJpYnV0ZV9yZWxybzsKKyAgICBnZW4tdHJ1c3RlZC1kaXJzLmF3ay4gICovCisgI2luY2x1ZGUgInRydXN0ZWQtZGlycy5oIgorIAorLXN0YXRpYyBjb25zdCBjaGFyIHN5c3RlbV9kaXJzW10gPSBTWVNURU1fRElSUzsKKy1zdGF0aWMgY29uc3Qgc2l6ZV90IHN5c3RlbV9kaXJzX2xlbltdID0KKytzdGF0aWMgY29uc3QgY2hhciBzeXN0ZW1fZGlyc1s0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5zeXNkaXJzIikpKSA9IFNZU1RFTV9ESVJTOworK3ZvbGF0aWxlIHN0YXRpYyBjb25zdCBzaXplX3Qgc3lzdGVtX2RpcnNfbGVuW10gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuc3lzZGlyc2xlbiIpKSkgPQorIHsKKyAgIFNZU1RFTV9ESVJTX0xFTgorIH07CitkaWZmIC0tZ2l0IGEvZWxmL2ludGVycC5jIGIvZWxmL2ludGVycC5jCitpbmRleCAzMzFjYzFkZjQ4Li44ODViMmQ5NDc2IDEwMDY0NAorLS0tIGEvZWxmL2ludGVycC5jCisrKysgYi9lbGYvaW50ZXJwLmMKK0BAIC0xOCw1ICsxOCw1IEBACisgCisgI2luY2x1ZGUgPHJ1bnRpbWUtbGlua2VyLmg+CisgCistY29uc3QgY2hhciBfX2ludm9rZV9keW5hbWljX2xpbmtlcl9fW10gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuaW50ZXJwIikpKQorK2NvbnN0IGNoYXIgX19pbnZva2VfZHluYW1pY19saW5rZXJfX1s0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5pbnRlcnAiKSkpCisgICA9IFJVTlRJTUVfTElOS0VSOworZGlmZiAtLWdpdCBhL2VsZi9sZGNvbmZpZy5jIGIvZWxmL2xkY29uZmlnLmMKK2luZGV4IDY4MWVkNzg0OTYuLjg4MzNlZDBhNmIgMTAwNjQ0CistLS0gYS9lbGYvbGRjb25maWcuYworKysrIGIvZWxmL2xkY29uZmlnLmMKK0BAIC0xNjgsNiArMTY4LDkgQEAgc3RhdGljIHN0cnVjdCBhcmdwIGFyZ3AgPQorICAgb3B0aW9ucywgcGFyc2Vfb3B0LCBOVUxMLCBkb2MsIE5VTEwsIG1vcmVfaGVscCwgTlVMTAorIH07CisgCisrCisrZXh0ZXJuIGNvbnN0IGNoYXIgTERfU09fQ0FDSEVbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIubGRzb2NhY2hlIikpKTsKKysKKyAvKiBDaGVjayBpZiBzdHJpbmcgY29ycmVzcG9uZHMgdG8gYW4gaW1wb3J0YW50IGhhcmR3YXJlIGNhcGFiaWxpdHkgb3IKKyAgICBhIHBsYXRmb3JtLiAgKi8KKyBzdGF0aWMgaW50CitkaWZmIC0tZ2l0IGEvZWxmL3J0bGQuYyBiL2VsZi9ydGxkLmMKK2luZGV4IDU1M2NmYmQxYjcuLjM5MzQ3YzJjMDMgMTAwNjQ0CistLS0gYS9lbGYvcnRsZC5jCisrKysgYi9lbGYvcnRsZC5jCitAQCAtMTc1LDYgKzE3NSw3IEBAIGRzb19uYW1lX3ZhbGlkX2Zvcl9zdWlkIChjb25zdCBjaGFyICpwKQorICAgICB9CisgICByZXR1cm4gKnAgIT0gJ1wwJzsKKyB9CisrZXh0ZXJuIGNvbnN0IGNoYXIgTERfU09fQ0FDSEVbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIubGRzb2NhY2hlIikpKTsKKyAKKyAvKiBMRF9BVURJVCB2YXJpYWJsZSBjb250ZW50cy4gIE11c3QgYmUgcHJvY2Vzc2VkIGJlZm9yZSB0aGUKKyAgICBhdWRpdF9saXN0IGJlbG93LiAgKi8KK0BAIC0xMjIyLDEzICsxMjIzLDEzIEBAIG9mIHRoaXMgaGVscGVyIHByb2dyYW07IGNoYW5jZXMgYXJlIHlvdSBkaWQgbm90IGludGVuZCB0byBydW4gdGhpcyBwcm9ncmFtLlxuXAorICAgLS1saXN0ICAgICAgICAgICAgICAgIGxpc3QgYWxsIGRlcGVuZGVuY2llcyBhbmQgaG93IHRoZXkgYXJlIHJlc29sdmVkXG5cCisgICAtLXZlcmlmeSAgICAgICAgICAgICAgdmVyaWZ5IHRoYXQgZ2l2ZW4gb2JqZWN0IHJlYWxseSBpcyBhIGR5bmFtaWNhbGx5IGxpbmtlZFxuXAorIAkJCW9iamVjdCB3ZSBjYW4gaGFuZGxlXG5cCistICAtLWluaGliaXQtY2FjaGUgICAgICAgRG8gbm90IHVzZSAiIExEX1NPX0NBQ0hFICJcblwKKysgIC0taW5oaWJpdC1jYWNoZSAgICAgICBEbyBub3QgdXNlICVzXG5cCisgICAtLWxpYnJhcnktcGF0aCBQQVRIICAgdXNlIGdpdmVuIFBBVEggaW5zdGVhZCBvZiBjb250ZW50IG9mIHRoZSBlbnZpcm9ubWVudFxuXAorIAkJCXZhcmlhYmxlIExEX0xJQlJBUllfUEFUSFxuXAorICAgLS1pbmhpYml0LXJwYXRoIExJU1QgIGlnbm9yZSBSVU5QQVRIIGFuZCBSUEFUSCBpbmZvcm1hdGlvbiBpbiBvYmplY3QgbmFtZXNcblwKKyAJCQlpbiBMSVNUXG5cCisgICAtLWF1ZGl0IExJU1QgICAgICAgICAgdXNlIG9iamVjdHMgbmFtZWQgaW4gTElTVCBhcyBhdWRpdG9yc1xuXAorLSAgLS1wcmVsb2FkIExJU1QgICAgICAgIHByZWxvYWQgb2JqZWN0cyBuYW1lZCBpbiBMSVNUXG4iKTsKKysgIC0tcHJlbG9hZCBMSVNUICAgICAgICBwcmVsb2FkIG9iamVjdHMgbmFtZWQgaW4gTElTVFxuIiwgTERfU09fQ0FDSEUpOworIAorICAgICAgICsrX2RsX3NraXBfYXJnczsKKyAgICAgICAtLV9kbF9hcmdjOworZGlmZiAtLWdpdCBhL2ljb252L2djb252X2NvbmYuYyBiL2ljb252L2djb252X2NvbmYuYworaW5kZXggNzM1YmQxZjJkNS4uMjUxMDBiYTY2NiAxMDA2NDQKKy0tLSBhL2ljb252L2djb252X2NvbmYuYworKysrIGIvaWNvbnYvZ2NvbnZfY29uZi5jCitAQCAtMzYsNyArMzYsNyBAQAorIAorIAorIC8qIFRoaXMgaXMgdGhlIGRlZmF1bHQgcGF0aCB3aGVyZSB3ZSBsb29rIGZvciBtb2R1bGUgbGlzdHMuICAqLworLXN0YXRpYyBjb25zdCBjaGFyIGRlZmF1bHRfZ2NvbnZfcGF0aFtdID0gR0NPTlZfUEFUSDsKKytzdGF0aWMgY2hhciBkZWZhdWx0X2djb252X3BhdGhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR0NPTlZfUEFUSDsKKyAKKyAvKiBUeXBlIHRvIHJlcHJlc2VudCBzZWFyY2ggcGF0aC4gICovCisgc3RydWN0IHBhdGhfZWxlbQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oIGIvc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmgKK2luZGV4IDZiMzEwZTllMTUuLjM4NzczMTFkZjQgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaAorKysrIGIvc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmgKK0BAIC0yNywxMCArMjcsNiBAQAorICAgKChmbGFncykgPT0gMSB8fCAoZmxhZ3MpID09IF9ETF9DQUNIRV9ERUZBVUxUX0lEKQorICNlbmRpZgorIAorLSNpZm5kZWYgTERfU09fQ0FDSEUKKy0jIGRlZmluZSBMRF9TT19DQUNIRSBTWVNDT05GRElSICIvbGQuc28uY2FjaGUiCistI2VuZGlmCistCisgI2lmbmRlZiBhZGRfc3lzdGVtX2RpcgorICMgZGVmaW5lIGFkZF9zeXN0ZW1fZGlyKGRpcikgYWRkX2RpciAoZGlyKQorICNlbmRpZgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA2LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDYtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUxYzU5MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDYtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ODQgKzAsMCBAQAotRnJvbSA3Y2NjZjVjZWMwOWYyYTQyY2MzZmU1ZDgyY2UyMWI3MzA5MzMwYjMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MDE6NTAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNi8yOF0gZnNsIGU1MDAvZTU1MDAvZTY1MDAvNjAzZSBmc3FydCBpbXBsZW1lbnRhdGlvbgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEVkbWFyIFdpZW5za29za2kgPGVkbWFyQGZyZWVzY2FsZS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyAgIHwgMTM0ICsrKysrKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jICB8IDEwMSArKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jIHwgMTM0ICsrKysrKysrKysrKysrKysrKwotIC4uLi9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyAgICB8IDEwMSArKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgIHwgMTM0ICsrKysrKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyB8IDEwMSArKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgIHwgMTM0ICsrKysrKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyB8IDEwMSArKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgIHwgMTM0ICsrKysrKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyB8IDEwMSArKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgIHwgMTM0ICsrKysrKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyB8IDEwMSArKysrKysrKysrKysrCi0gLi4uL2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMgIHwgICAxICsKLSAuLi4vcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzICAgICAgfCAgIDIgKwotIC4uLi9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMgICAgICB8ICAgMSArCi0gLi4uL2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzIHwgICAxICsKLSAuLi4vbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMgfCAgIDEgKwotIC4uLi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcyB8ICAgMSArCi0gLi4uL2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzIHwgICAxICsKLSAxOSBmaWxlcyBjaGFuZ2VkLCAxNDE4IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lMzAwYzMvZnB1L0ltcGxpZXMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9JbXBsaWVzCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKLUBAIC0wLDAgKzEsMTM0IEBACi0rLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKLStzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rI2Vsc2UKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoYikKLSsgICAgIGRvdWJsZSBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKLSsgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7Ci0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHUudmFsdWUgPSBiOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgotKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgotKwotKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQotKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KLSsKLSsgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCi0rCi0rICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCi0rICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKLSsgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQotKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KLSsKLSsgICAgICAgICAgZyA9IGIgKiB5OwotKyAgICAgICAgICBoID0gMC41ICogeTsKLSsKLSsgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0rICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLSsgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKwotKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KLSsKLSsgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCi0rICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOwotKwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2ggKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKLUBAIC0wLDAgKzEsMTAxIEBACi0rLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSsgICBzcXVhcmUgcm9vdC4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rI2Vsc2UKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoYikKLSsgICAgIGZsb2F0IGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBkb3VibGUgeSwgeDsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLwotKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7Ci0rCi0rICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsKLSsgICAgICAgICAgLyogQWxsIGRvbmUuICAqLwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4geCAqIGI7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaGYgKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLUBAIC0wLDAgKzEsMTM0IEBACi0rLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKLStzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rI2Vsc2UKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoYikKLSsgICAgIGRvdWJsZSBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKLSsgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7Ci0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHUudmFsdWUgPSBiOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgotKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgotKwotKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQotKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KLSsKLSsgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCi0rCi0rICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCi0rICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKLSsgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQotKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KLSsKLSsgICAgICAgICAgZyA9IGIgKiB5OwotKyAgICAgICAgICBoID0gMC41ICogeTsKLSsKLSsgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0rICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLSsgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKwotKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KLSsKLSsgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCi0rICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOwotKwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2ggKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKLUBAIC0wLDAgKzEsMTAxIEBACi0rLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSsgICBzcXVhcmUgcm9vdC4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rI2Vsc2UKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoYikKLSsgICAgIGZsb2F0IGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBkb3VibGUgeSwgeDsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLwotKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7Ci0rCi0rICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsKLSsgICAgICAgICAgLyogQWxsIGRvbmUuICAqLwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4geCAqIGI7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaGYgKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0wLDAgKzEsMTM0IEBACi0rLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKLStzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rI2Vsc2UKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoYikKLSsgICAgIGRvdWJsZSBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKLSsgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7Ci0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHUudmFsdWUgPSBiOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgotKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgotKwotKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQotKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KLSsKLSsgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCi0rCi0rICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCi0rICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKLSsgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQotKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KLSsKLSsgICAgICAgICAgZyA9IGIgKiB5OwotKyAgICAgICAgICBoID0gMC41ICogeTsKLSsKLSsgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0rICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLSsgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKwotKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KLSsKLSsgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCi0rICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOwotKwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2ggKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC0wLDAgKzEsMTAxIEBACi0rLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSsgICBzcXVhcmUgcm9vdC4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rI2Vsc2UKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoYikKLSsgICAgIGZsb2F0IGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBkb3VibGUgeSwgeDsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLwotKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7Ci0rCi0rICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsKLSsgICAgICAgICAgLyogQWxsIGRvbmUuICAqLwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4geCAqIGI7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaGYgKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0wLDAgKzEsMTM0IEBACi0rLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKLStzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rI2Vsc2UKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoYikKLSsgICAgIGRvdWJsZSBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKLSsgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7Ci0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHUudmFsdWUgPSBiOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgotKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgotKwotKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQotKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KLSsKLSsgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCi0rCi0rICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCi0rICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKLSsgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQotKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KLSsKLSsgICAgICAgICAgZyA9IGIgKiB5OwotKyAgICAgICAgICBoID0gMC41ICogeTsKLSsKLSsgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0rICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLSsgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKwotKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KLSsKLSsgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCi0rICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOwotKwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2ggKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC0wLDAgKzEsMTAxIEBACi0rLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSsgICBzcXVhcmUgcm9vdC4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rI2Vsc2UKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoYikKLSsgICAgIGZsb2F0IGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBkb3VibGUgeSwgeDsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLwotKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7Ci0rCi0rICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsKLSsgICAgICAgICAgLyogQWxsIGRvbmUuICAqLwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4geCAqIGI7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaGYgKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0wLDAgKzEsMTM0IEBACi0rLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKLStzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rI2Vsc2UKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoYikKLSsgICAgIGRvdWJsZSBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKLSsgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7Ci0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHUudmFsdWUgPSBiOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgotKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgotKwotKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQotKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KLSsKLSsgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCi0rCi0rICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCi0rICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKLSsgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQotKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KLSsKLSsgICAgICAgICAgZyA9IGIgKiB5OwotKyAgICAgICAgICBoID0gMC41ICogeTsKLSsKLSsgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0rICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLSsgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKwotKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KLSsKLSsgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCi0rICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOwotKwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2ggKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC0wLDAgKzEsMTAxIEBACi0rLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSsgICBzcXVhcmUgcm9vdC4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rI2Vsc2UKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoYikKLSsgICAgIGZsb2F0IGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBkb3VibGUgeSwgeDsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLwotKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7Ci0rCi0rICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsKLSsgICAgICAgICAgLyogQWxsIGRvbmUuICAqLwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4geCAqIGI7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaGYgKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0wLDAgKzEsMTM0IEBACi0rLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKLStzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rI2Vsc2UKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoYikKLSsgICAgIGRvdWJsZSBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKLSsgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7Ci0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHUudmFsdWUgPSBiOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgotKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgotKwotKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQotKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KLSsKLSsgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCi0rCi0rICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCi0rICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKLSsgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQotKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KLSsKLSsgICAgICAgICAgZyA9IGIgKiB5OwotKyAgICAgICAgICBoID0gMC41ICogeTsKLSsKLSsgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0rICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLSsgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKwotKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KLSsKLSsgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCi0rICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOwotKwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2ggKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC0wLDAgKzEsMTAxIEBACi0rLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSsgICBzcXVhcmUgcm9vdC4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rI2Vsc2UKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoYikKLSsgICAgIGZsb2F0IGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBkb3VibGUgeSwgeDsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLwotKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7Ci0rCi0rICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsKLSsgICAgICAgICAgLyogQWxsIGRvbmUuICAqLwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4geCAqIGI7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaGYgKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLmIxMDNiNGRlYTUKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMKLUBAIC0wLDAgKzEgQEAKLStwb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjY0ZGIxN2ZhZGEKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcwotQEAgLTAsMCArMSwyIEBACi0rIyBlMzAwYzMgaXMgYSB2YXJpYW50IG9mIDYwM2Ugc28gdXNlIHRoZSBzYW1lIG9wdGltaXphdGlvbnMgZm9yIHNxcnQKLStwb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjdlYWM1ZmNmMDIKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcwotQEAgLTAsMCArMSBAQAotK3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uMjY0YjJhNzcwMAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L0ltcGxpZXMKLUBAIC0wLDAgKzEgQEAKLStwb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uYTI1OTM0NDY3YgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMKLUBAIC0wLDAgKzEgQEAKLStwb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uYTdiYzg1NGJlOAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMKLUBAIC0wLDAgKzEgQEAKLStwb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uMDRmZjhjYzE4MQotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L0ltcGxpZXMKLUBAIC0wLDAgKzEgQEAKLStwb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjhiNmMwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA2LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gYTc1Mjg1N2NjMzQyZWU1MTM2YzlhNTkzMDM3YjZlZTZmZjhhZjhlZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE0OjM1OjM1IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIG5hdGl2ZXNkay1nbGliYzogQWxsb3cgNjQgYml0IGF0b21pY3MgZm9yIHg4NgorCitUaGUgZml4IGNvbnNpc3Qgb2YgYWxsb3dpbmcgNjRiaXQgYXRvbWljIG9wcyBmb3IgeDg2LgorVGhpcyBzaG91bGQgYmUgc2FmZSBmb3IgaTU4NiBhbmQgbmV3ZXIgQ1BVcy4KK0l0IGFsc28gbWFrZXMgdGhlIHN5bmNocm9uaXphdGlvbiBtb3JlIGVmZmljaWVudC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMveDg2L2F0b21pYy1tYWNoaW5lLmggfCAzICstLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMveDg2L2F0b21pYy1tYWNoaW5lLmggYi9zeXNkZXBzL3g4Ni9hdG9taWMtbWFjaGluZS5oCitpbmRleCBiYjQ5NjQ4Mzc0Li5hYTA4ZDNjMGE3IDEwMDY0NAorLS0tIGEvc3lzZGVwcy94ODYvYXRvbWljLW1hY2hpbmUuaAorKysrIGIvc3lzZGVwcy94ODYvYXRvbWljLW1hY2hpbmUuaAorQEAgLTU4LDE1ICs1OCwxNCBAQCB0eXBlZGVmIHVpbnRtYXhfdCB1YXRvbWljX21heF90OworICNlbmRpZgorIAorICNkZWZpbmUgVVNFX0FUT01JQ19DT01QSUxFUl9CVUlMVElOUwkxCisrIyBkZWZpbmUgX19IQVZFXzY0Ql9BVE9NSUNTCQkxCisgCisgI2lmZGVmIF9feDg2XzY0X18KKy0jIGRlZmluZSBfX0hBVkVfNjRCX0FUT01JQ1MJCTEKKyAjIGRlZmluZSBTUF9SRUcJCQkJInJzcCIKKyAjIGRlZmluZSBTRUdfUkVHCQkJImZzIgorICMgZGVmaW5lIEJSX0NPTlNUUkFJTlQJCQkicSIKKyAjIGRlZmluZSBJQlJfQ09OU1RSQUlOVAkJCSJpcSIKKyAjZWxzZQorLSMgZGVmaW5lIF9fSEFWRV82NEJfQVRPTUlDUwkJMAorICMgZGVmaW5lIFNQX1JFRwkJCQkiZXNwIgorICMgZGVmaW5lIFNFR19SRUcJCQkiZ3MiCisgIyBkZWZpbmUgQlJfQ09OU1RSQUlOVAkJCSJyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LW5hdGl2ZXNkay1nbGliYy1NYWtlLXJlbG9jYXRhYmxlLWluc3RhbGwtZm9yLWxvY2FsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctbmF0aXZlc2RrLWdsaWJjLU1ha2UtcmVsb2NhdGFibGUtaW5zdGFsbC1mb3ItbG9jYWxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2NkMTdjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LW5hdGl2ZXNkay1nbGliYy1NYWtlLXJlbG9jYXRhYmxlLWluc3RhbGwtZm9yLWxvY2FsZXMucGF0Y2gKQEAgLTAsMCArMSw5OSBAQAorRnJvbSAzZGY5MWQxZDhiOWM3YTAxYjNlZjgxMzNjNGY5Yjk3NjQyMjdkNTgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMyBBdWcgMjAxOCAwOTo1NToxMiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBuYXRpdmVzZGstZ2xpYmM6IE1ha2UgcmVsb2NhdGFibGUgaW5zdGFsbCBmb3IgbG9jYWxlcworCitUaGUgZ2xpYmMgbG9jYWxlIHBhdGggaXMgaGFyZC1jb2RlZCB0byB0aGUgaW5zdGFsbCBwcmVmaXgsIGJ1dCBpbiBTREtzIHdlIG5lZWQKK3RvIGJlIGFibGUgdG8gcmVsb2NhdGUgdGhlIGJpbmFyaWVzLiAgRXhwYW5kIHRoZSBzdHJpbmdzIHRvIDRLIGFuZCBwdXQgdGhlbSBpbiBhCittYWdpYyBzZWdtZW50IHRoYXQgd2UgY2FuIHJlbG9jYXRlIGF0IGluc3RhbGwgdGltZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIChPRS1zcGVjaWZpYykKKworU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsb2NhbGUvZmluZGxvY2FsZS5jICB8IDQgKystLQorIGxvY2FsZS9sb2FkYXJjaGl2ZS5jIHwgMiArLQorIGxvY2FsZS9sb2NhbGVpbmZvLmggIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitJbmRleDogZ2l0L2xvY2FsZS9maW5kbG9jYWxlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9sb2NhbGUvZmluZGxvY2FsZS5jCisrKysgZ2l0L2xvY2FsZS9maW5kbG9jYWxlLmMKK0BAIC01Niw3ICs1Niw3IEBAIHN0cnVjdCBfX2xvY2FsZV9kYXRhICpjb25zdCBfbmxfQ1tdIGF0dHIKKyAgICB3aGljaCBhcmUgc29tZWhvdyBhZGRyZXNzZWQuICAqLworIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKl9ubF9sb2NhbGVfZmlsZV9saXN0W19fTENfTEFTVF07CisgCistY29uc3QgY2hhciBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aFtdIGF0dHJpYnV0ZV9oaWRkZW4gPSBDT01QTE9DQUxFRElSOworK2NoYXIgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGhbNDA5Nl0gYXR0cmlidXRlX2hpZGRlbiBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBDT01QTE9DQUxFRElSOworIAorIC8qIENoZWNrcyBpZiB0aGUgbmFtZSBpcyBhY3R1YWxseSBwcmVzZW50LCB0aGF0IGlzLCBub3QgTlVMTCBhbmQgbm90CisgICAgZW1wdHkuICAqLworQEAgLTE2Niw3ICsxNjYsNyBAQCBfbmxfZmluZF9sb2NhbGUgKGNvbnN0IGNoYXIgKmxvY2FsZV9wYXRoCisgCisgICAgICAgLyogTm90aGluZyBpbiB0aGUgYXJjaGl2ZS4gIFNldCB0aGUgZGVmYXVsdCBwYXRoIHRvIHNlYXJjaCBiZWxvdy4gICovCisgICAgICAgbG9jYWxlX3BhdGggPSBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aDsKKy0gICAgICBsb2NhbGVfcGF0aF9sZW4gPSBzaXplb2YgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGg7CisrICAgICAgbG9jYWxlX3BhdGhfbGVuID0gc3RybGVuKGxvY2FsZV9wYXRoKSArIDE7CisgICAgIH0KKyAgIGVsc2UKKyAgICAgLyogV2UgcmVhbGx5IGhhdmUgdG8gbG9hZCBzb21lIGRhdGEuICBGaXJzdCBzZWUgd2hldGhlciB0aGUgbmFtZSBpcworSW5kZXg6IGdpdC9sb2NhbGUvbG9hZGFyY2hpdmUuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2xvY2FsZS9sb2FkYXJjaGl2ZS5jCisrKysgZ2l0L2xvY2FsZS9sb2FkYXJjaGl2ZS5jCitAQCAtNDIsNyArNDIsNyBAQAorIAorIAorIC8qIE5hbWUgb2YgdGhlIGxvY2FsZSBhcmNoaXZlIGZpbGUuICAqLworLXN0YXRpYyBjb25zdCBjaGFyIGFyY2hmbmFtZVtdID0gQ09NUExPQ0FMRURJUiAiL2xvY2FsZS1hcmNoaXZlIjsKKytzdGF0aWMgY29uc3QgY2hhciBhcmNoZm5hbWVbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gQ09NUExPQ0FMRURJUiAiL2xvY2FsZS1hcmNoaXZlIjsKKyAKKyAvKiBTaXplIG9mIGluaXRpYWwgbWFwcGluZyB3aW5kb3csIG9wdGltYWwgaWYgbGFyZ2UgZW5vdWdoIHRvCisgICAgY292ZXIgdGhlIGhlYWRlciBwbHVzIHRoZSBpbml0aWFsIGxvY2FsZS4gICovCitJbmRleDogZ2l0L2xvY2FsZS9sb2NhbGVpbmZvLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9sb2NhbGUvbG9jYWxlaW5mby5oCisrKysgZ2l0L2xvY2FsZS9sb2NhbGVpbmZvLmgKK0BAIC0zMzEsNyArMzMxLDcgQEAgX25sX2xvb2t1cF93b3JkIChsb2NhbGVfdCBsLCBpbnQgY2F0ZWdvcgorIH0KKyAKKyAvKiBEZWZhdWx0IHNlYXJjaCBwYXRoIGlmIG5vIExPQ1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUuICAqLworLWV4dGVybiBjb25zdCBjaGFyIF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoW10gYXR0cmlidXRlX2hpZGRlbjsKKytleHRlcm4gY2hhciBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aFs0MDk2XSBhdHRyaWJ1dGVfaGlkZGVuOworIAorIC8qIExvYWQgdGhlIGxvY2FsZSBkYXRhIGZvciBDQVRFR09SWSBmcm9tIHRoZSBmaWxlIHNwZWNpZmllZCBieSAqTkFNRS4KKyAgICBJZiAqTkFNRSBpcyAiIiwgdXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcyBzcGVjaWZpZWQgYnkgUE9TSVgsIGFuZAorSW5kZXg6IGdpdC9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlLmMKKysrKyBnaXQvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZS5jCitAQCAtNjMyLDYgKzYzMiw3IEBAIG5hbWVlbnRjbXAgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIKKyAJCSAgKChjb25zdCBzdHJ1Y3QgbmFtZWVudCAqKSBiKS0+bmFtZSk7CisgfQorIAorK3N0YXRpYyBjaGFyIF93cml0ZV9hcmNoaXZlX2xvY2FsZXNfcGF0aFs0MDk2XSBhdHRyaWJ1dGVfaGlkZGVuIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEFSQ0hJVkVfTkFNRTsKKyAKKyBzdGF0aWMgaW50Cisgd3JpdGVfYXJjaGl2ZV9sb2NhbGVzICh2b2lkICoqYWxsX2RhdGFwLCBjaGFyICpsaW5lYnVmKQorQEAgLTY0NSw3ICs2NDYsNyBAQCB3cml0ZV9hcmNoaXZlX2xvY2FsZXMgKHZvaWQgKiphbGxfZGF0YXAsCisgICBpbnQgZmQsIHJldCA9IDA7CisgICB1aW50MzJfdCBjbnQ7CisgCistICBmZCA9IG9wZW42NCAoQVJDSElWRV9OQU1FLCBPX1JET05MWSk7CisrICBmZCA9IG9wZW42NCAoX3dyaXRlX2FyY2hpdmVfbG9jYWxlc19wYXRoLCBPX1JET05MWSk7CisgICBpZiAoZmQgPCAwKQorICAgICByZXR1cm4gMDsKKyAKK0BAIC03MDAsOCArNzAxLDggQEAgd3JpdGVfYXJjaGl2ZV9sb2NhbGVzICh2b2lkICoqYWxsX2RhdGFwLAorIAkgIGlmIChjbnQpCisgCSAgICBwdXRjaGFyX3VubG9ja2VkICgnXG4nKTsKKyAKKy0JICBwcmludGYgKCJsb2NhbGU6ICUtMTUuMTVzIGFyY2hpdmU6ICIgQVJDSElWRV9OQU1FICJcbiVzXG4iLAorLQkJICBuYW1lc1tjbnRdLm5hbWUsIGxpbmVidWYpOworKwkgIHByaW50ZiAoImxvY2FsZTogJS0xNS4xNXMgYXJjaGl2ZTogJXNcbiVzXG4iLAorKwkJICBuYW1lc1tjbnRdLm5hbWUsIF93cml0ZV9hcmNoaXZlX2xvY2FsZXNfcGF0aCwgbGluZWJ1Zik7CisgCisgCSAgbG9jcmVjID0gKHN0cnVjdCBsb2NyZWNlbnQgKikgKGFkZHIgKyBuYW1lc1tjbnRdLmxvY3JlY19vZmZzZXQpOworIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWU2ZmIyNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gZGM3MTVmNmM3MGQwMWU5YzNiMzFjMTgyNWZhNWJjNDQ3OTY3Yzg0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjExOjIyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMjhdIHJlYWRsaWI6IEFkZCBPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMgdG8ga25vd24KLSBuYW1lcwotCi1UaGlzIGJvbHRzIGluIGEgaG9vayBmb3IgT0UgdG8gcGFzcyBpdHMgb3duIHZlcnNpb24gb2YgaW50ZXJwcmV0ZXIKLW5hbWVzIGludG8gZ2xpYmMgZXNwZWNpYWxseSBmb3IgbXVsdGlsaWIgY2FzZSwgd2hlcmUgaXQgZGlmZmVycyBmcm9tIGFueQotb3RoZXIgZGlzdHJvcwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBMaWFuaGFvIEx1IDxsaWFuaGFvLmx1QGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBlbGYvcmVhZGxpYi5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9lbGYvcmVhZGxpYi5jIGIvZWxmL3JlYWRsaWIuYwotaW5kZXggYzk3NDNlNjY5Mi4uNjMwN2Y5MThmYyAxMDA2NDQKLS0tLSBhL2VsZi9yZWFkbGliLmMKLSsrKyBiL2VsZi9yZWFkbGliLmMKLUBAIC01MSw2ICs1MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qga25vd25fbmFtZXMgaW50ZXJwcmV0ZXJzW10gPQotICNpZmRlZiBTWVNERVBfS05PV05fSU5URVJQUkVURVJfTkFNRVMKLSAgIFNZU0RFUF9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUwotICNlbmRpZgotKyAgT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTCi0gfTsKLSAKLSBzdGF0aWMgc3RydWN0IGtub3duX25hbWVzIGtub3duX2xpYnNbXSA9Ci0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDgtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkYWMzMjUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDgtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaApAQCAtMCwwICsxLDE1ODEgQEAKK0Zyb20gNjFiNmM5NzM3ODk3YzU4MjhlZjRiNDA2OTllZTBhNzRjNTcwMDM0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjAxOjUwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGZzbCBlNTAwL2U1NTAwL2U2NTAwLzYwM2UgZnNxcnQgaW1wbGVtZW50YXRpb24KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBFZG1hciBXaWVuc2tvc2tpIDxlZG1hckBmcmVlc2NhbGUuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgICB8IDEzNCArKysrKysrKysrKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyAgfCAxMDEgKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyB8IDEzNCArKysrKysrKysrKysrKysrKysKKyAuLi4vcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgICAgfCAxMDEgKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jICB8IDEzNCArKysrKysrKysrKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgfCAxMDEgKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jICB8IDEzNCArKysrKysrKysrKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgfCAxMDEgKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jICB8IDEzNCArKysrKysrKysrKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgfCAxMDEgKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jICB8IDEzNCArKysrKysrKysrKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgfCAxMDEgKysrKysrKysrKysrKworIC4uLi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzICB8ICAgMSArCisgLi4uL3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcyAgICAgIHwgICAyICsKKyAuLi4vcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9JbXBsaWVzICAgICAgfCAgIDEgKworIC4uLi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcyB8ICAgMSArCisgLi4uL2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzIHwgICAxICsKKyAuLi4vbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMgfCAgIDEgKworIC4uLi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcyB8ICAgMSArCisgMTkgZmlsZXMgY2hhbmdlZCwgMTQxOCBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcworCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4CistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCitAQCAtMCwwICsxLDEzNCBAQAorKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOworK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Cisrc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKysgICBzaW11bHRhbmVvdXNseS4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorKyNlbHNlCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGIpCisrICAgICBkb3VibGUgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7CisrICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OworKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICB1LnZhbHVlID0gYjsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKKysgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KKysKKysgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKKysgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCisrCisrICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLworKworKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQworKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCisrICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKKysgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCisrCisrICAgICAgICAgIGcgPSBiICogeTsKKysgICAgICAgICAgaCA9IDAuNSAqIHk7CisrCisrICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCisrICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysKKysjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCisrCisrICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLworKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKKysKKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCitAQCAtMCwwICsxLDEwMSBAQAorKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisrICAgc3F1YXJlIHJvb3QuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorKyNlbHNlCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGIpCisrICAgICBmbG9hdCBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZG91YmxlIHksIHg7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KKysgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOworKworKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrCisrICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIHggKiBiOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2hmIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCitAQCAtMCwwICsxLDEzNCBAQAorKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOworK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Cisrc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKysgICBzaW11bHRhbmVvdXNseS4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorKyNlbHNlCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGIpCisrICAgICBkb3VibGUgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7CisrICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OworKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICB1LnZhbHVlID0gYjsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKKysgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KKysKKysgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKKysgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCisrCisrICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLworKworKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQworKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCisrICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKKysgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCisrCisrICAgICAgICAgIGcgPSBiICogeTsKKysgICAgICAgICAgaCA9IDAuNSAqIHk7CisrCisrICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCisrICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysKKysjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCisrCisrICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLworKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKKysKKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCitAQCAtMCwwICsxLDEwMSBAQAorKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisrICAgc3F1YXJlIHJvb3QuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorKyNlbHNlCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGIpCisrICAgICBmbG9hdCBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZG91YmxlIHksIHg7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KKysgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOworKworKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrCisrICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIHggKiBiOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2hmIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCitAQCAtMCwwICsxLDEzNCBAQAorKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOworK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Cisrc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKysgICBzaW11bHRhbmVvdXNseS4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorKyNlbHNlCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGIpCisrICAgICBkb3VibGUgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7CisrICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OworKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICB1LnZhbHVlID0gYjsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKKysgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KKysKKysgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKKysgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCisrCisrICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLworKworKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQworKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCisrICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKKysgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCisrCisrICAgICAgICAgIGcgPSBiICogeTsKKysgICAgICAgICAgaCA9IDAuNSAqIHk7CisrCisrICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCisrICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysKKysjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCisrCisrICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLworKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKKysKKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMCwwICsxLDEwMSBAQAorKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisrICAgc3F1YXJlIHJvb3QuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorKyNlbHNlCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGIpCisrICAgICBmbG9hdCBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZG91YmxlIHksIHg7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KKysgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOworKworKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrCisrICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIHggKiBiOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2hmIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCitAQCAtMCwwICsxLDEzNCBAQAorKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOworK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Cisrc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKysgICBzaW11bHRhbmVvdXNseS4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorKyNlbHNlCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGIpCisrICAgICBkb3VibGUgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7CisrICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OworKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICB1LnZhbHVlID0gYjsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKKysgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KKysKKysgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKKysgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCisrCisrICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLworKworKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQworKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCisrICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKKysgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCisrCisrICAgICAgICAgIGcgPSBiICogeTsKKysgICAgICAgICAgaCA9IDAuNSAqIHk7CisrCisrICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCisrICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysKKysjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCisrCisrICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLworKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKKysKKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMCwwICsxLDEwMSBAQAorKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisrICAgc3F1YXJlIHJvb3QuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorKyNlbHNlCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGIpCisrICAgICBmbG9hdCBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZG91YmxlIHksIHg7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KKysgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOworKworKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrCisrICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIHggKiBiOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2hmIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCitAQCAtMCwwICsxLDEzNCBAQAorKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOworK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Cisrc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKysgICBzaW11bHRhbmVvdXNseS4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorKyNlbHNlCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGIpCisrICAgICBkb3VibGUgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7CisrICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OworKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICB1LnZhbHVlID0gYjsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKKysgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KKysKKysgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKKysgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCisrCisrICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLworKworKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQworKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCisrICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKKysgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCisrCisrICAgICAgICAgIGcgPSBiICogeTsKKysgICAgICAgICAgaCA9IDAuNSAqIHk7CisrCisrICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCisrICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysKKysjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCisrCisrICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLworKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKKysKKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMCwwICsxLDEwMSBAQAorKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisrICAgc3F1YXJlIHJvb3QuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorKyNlbHNlCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGIpCisrICAgICBmbG9hdCBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZG91YmxlIHksIHg7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KKysgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOworKworKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrCisrICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIHggKiBiOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2hmIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCitAQCAtMCwwICsxLDEzNCBAQAorKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOworK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Cisrc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKysgICBzaW11bHRhbmVvdXNseS4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorKyNlbHNlCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGIpCisrICAgICBkb3VibGUgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7CisrICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OworKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICB1LnZhbHVlID0gYjsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKKysgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KKysKKysgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKKysgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCisrCisrICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLworKworKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQworKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCisrICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKKysgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCisrCisrICAgICAgICAgIGcgPSBiICogeTsKKysgICAgICAgICAgaCA9IDAuNSAqIHk7CisrCisrICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCisrICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysKKysjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCisrCisrICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLworKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKKysKKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMCwwICsxLDEwMSBAQAorKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisrICAgc3F1YXJlIHJvb3QuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorKyNlbHNlCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGIpCisrICAgICBmbG9hdCBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZG91YmxlIHksIHg7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KKysgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOworKworKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrCisrICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIHggKiBiOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2hmIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi5iMTAzYjRkZWE1CistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzCitAQCAtMCwwICsxIEBACisrcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lMzAwYzMvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lMzAwYzMvZnB1L0ltcGxpZXMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi42NGRiMTdmYWRhCistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lMzAwYzMvZnB1L0ltcGxpZXMKK0BAIC0wLDAgKzEsMiBAQAorKyMgZTMwMGMzIGlzIGEgdmFyaWFudCBvZiA2MDNlIHNvIHVzZSB0aGUgc2FtZSBvcHRpbWl6YXRpb25zIGZvciBzcXJ0CisrcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi43ZWFjNWZjZjAyCistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMKK0BAIC0wLDAgKzEgQEAKKytwb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjI2NGIyYTc3MDAKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzCitAQCAtMCwwICsxIEBACisrcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLmEyNTkzNDQ2N2IKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzCitAQCAtMCwwICsxIEBACisrcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLmE3YmM4NTRiZTgKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzCitAQCAtMCwwICsxIEBACisrcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjA0ZmY4Y2MxODEKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzCitAQCAtMCwwICsxIEBACisrcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDgtcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmVkMjAzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjA4ICswLDAgQEAKLUZyb20gNDJhMDFjNTU3ODZhOTQ3MjkzNGUxMmUwYmYwYzQwOTgzNTc5YjYwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjE1OjA3ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvMjhdIHBwYy9zcXJ0OiBGaXggdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19zcXJ0X2Zpbml0ZScKLQotb24gcHBjIGZpeGVzIHRoZSBlcnJvcnMgbGlrZSBiZWxvdwotfCAuLy5saWJzL2xpYnB1bHNlY29yZS0xLjEuc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fc3FydF9maW5pdGUnCi18IGNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1DaGFuZ2VMb2cKLQotMjAxMi0wMS0wNiAgS2hlbSBSYWogIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLSAgICAgICAgKiBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmM6IEFkZCBfXypfZmluaXRlIGFsaWFzLgotICAgICAgICBSZW1vdmUgY3J1ZnQuCi0gICAgICAgICogc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmM6IERpdHRvLgotICAgICAgICAqIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmM6IERpdHRvLgotICAgICAgICAqIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jOiBEaXR0by4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgICAgfCA3ICstLS0tLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyAgIHwgNyArLS0tLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jICB8IDEgKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgfCAxICsKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMSArCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEgKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jICAgfCAxICsKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgIHwgMSArCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgICB8IDcgKy0tLS0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyAgfCA3ICstLS0tLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMSArCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEgKwotIDEyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKLWluZGV4IDcxZTUxNmQxYzguLjE3OTVmZDZjM2UgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCi1AQCAtMzksMTQgKzM5LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0gICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCi0gICAgc2ltdWx0YW5lb3VzbHkuICAqLwotIAotLSNpZmRlZiBfX1NURENfXwotIGRvdWJsZQotIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLS0jZWxzZQotLWRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChiKQotLSAgICAgZG91YmxlIGI7Ci0tI2VuZGlmCi0gewotICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSAgICAgewotQEAgLTEzMiwzICsxMjYsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwotaW5kZXggMjZmYTA2N2FiZi4uYTkxN2YzMTNhYiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwotQEAgLTM3LDE0ICszNyw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0gICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCi0gICAgc3F1YXJlIHJvb3QuICAqLwotIAotLSNpZmRlZiBfX1NURENfXwotIGZsb2F0Ci0gX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotLSNlbHNlCi0tZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGIpCi0tICAgICBmbG9hdCBiOwotLSNlbmRpZgotIHsKLSAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0gICAgIHsKLUBAIC05OSwzICs5Myw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCi1pbmRleCA3MWU1MTZkMWM4Li5mYzRhNzQ5OTBlIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLUBAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2ggKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCi1pbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwotQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoZiAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCA3MWU1MTZkMWM4Li5mYzRhNzQ5OTBlIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCi1AQCAtMTMyLDMgKzEzMiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDI2ZmEwNjdhYmYuLjlkMTc1MTIyYTggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoZiAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCA3MWU1MTZkMWM4Li5mYzRhNzQ5OTBlIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1AQCAtMTMyLDMgKzEzMiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDI2ZmEwNjdhYmYuLjlkMTc1MTIyYTggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoZiAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCA3MWU1MTZkMWM4Li4xNzk1ZmQ2YzNlIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi1AQCAtMzksMTQgKzM5LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0gICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCi0gICAgc2ltdWx0YW5lb3VzbHkuICAqLwotIAotLSNpZmRlZiBfX1NURENfXwotIGRvdWJsZQotIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLS0jZWxzZQotLWRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChiKQotLSAgICAgZG91YmxlIGI7Ci0tI2VuZGlmCi0gewotICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSAgICAgewotQEAgLTEzMiwzICsxMjYsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCAyNmZhMDY3YWJmLi5hOTE3ZjMxM2FiIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC0zNywxNCArMzcsOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwotICAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAotICAgIHNxdWFyZSByb290LiAgKi8KLSAKLS0jaWZkZWYgX19TVERDX18KLSBmbG9hdAotIF9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLS0jZWxzZQotLWZsb2F0Ci0tX19pZWVlNzU0X3NxcnRmIChiKQotLSAgICAgZmxvYXQgYjsKLS0jZW5kaWYKLSB7Ci0gICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotICAgICB7Ci1AQCAtOTksMyArOTMsNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IDcxZTUxNmQxYzguLmZjNGE3NDk5MGUgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2ggKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggMjZmYTA2N2FiZi4uOWQxNzUxMjJhOCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtOTksMyArOTksNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE1ZDZkOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4NyArMCwwIEBACi1Gcm9tIGEwZmNiOTEzNWJjOGMyYjlkOGExNjFkMTY2YjZmOWQ1NmQ3YWYyNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoxNjozOCArMDAwMAotU3ViamVjdDogW1BBVENIIDA5LzI4XSBfX2llZWU3NTRfc3FydHssZn0gYXJlIG5vdyBpbmxpbmUgZnVuY3Rpb25zIGFuZCBjYWxsCi0gb3V0IF9fc2xvdyB2ZXJzaW9ucwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgICAgfCAxMiArKysrKysrKysrLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyAgIHwgIDggKysrKysrKy0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgIHwgMTQgKysrKysrKysrKystLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIHwgMTIgKysrKysrKysrKy0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgICB8IDE0ICsrKysrKysrKysrLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEyICsrKysrKysrKystLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jICAgfCAgOCArKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyAgfCAgOCArKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jICAgfCAxMiArKysrKysrKysrLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgIHwgIDkgKysrKysrKystCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgICB8IDE0ICsrKysrKysrKysrLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEyICsrKysrKysrKystLQotIDEyIGZpbGVzIGNoYW5nZWQsIDExNCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCi1pbmRleCAxNzk1ZmQ2YzNlLi5kYWE4M2YzZmU4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0gICAgc2ltdWx0YW5lb3VzbHkuICAqLwotIAotIGRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSB7Ci0gICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotICAgICB7Ci1AQCAtNzcsNyArNzcsNyBAQCBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0gCi0gICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLwotICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCi0tICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSsgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0gCi0gI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0xMjYsNCArMTI2LDEyIEBAIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotKwotKyN1bmRlZiBfX2llZWU3NTRfc3FydAotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKLSt7Ci0rICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOwotK30KLSsKLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKLWluZGV4IGE5MTdmMzEzYWIuLmI4MTJjZjE3MDUgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKLUBAIC0zOCw3ICszOCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0gICAgc3F1YXJlIHJvb3QuICAqLwotIAotIGZsb2F0Ci0tX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotIHsKLSAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0gICAgIHsKLUBAIC05Myw0ICs5MywxMCBAQCBfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQotK3sKLSsgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7Ci0rfQotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLWluZGV4IGZjNGE3NDk5MGUuLjcwMzhhNzBiNDcgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwotQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSAKLSAjaWZkZWYgX19TVERDX18KLSBkb3VibGUKLS1fX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rX19zbG93X2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0gI2Vsc2UKLSBkb3VibGUKLS1fX2llZWU3NTRfc3FydCAoYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiKQotICAgICAgZG91YmxlIGI7Ci0gI2VuZGlmCi0gewotQEAgLTgzLDcgKzgzLDcgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gCi0gICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLwotICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCi0tICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSsgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0gCi0gI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0xMzIsNCArMTMyLDEyIEBAIF9faWVlZTc1NF9zcXJ0IChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rCi0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0Ci0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQotK3sKLSsgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDlkMTc1MTIyYTguLjEwZGUxZjBjYzMgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCi1AQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0gCi0gI2lmZGVmIF9fU1REQ19fCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0gI2Vsc2UKLSBmbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgIGZsb2F0IGI7Ci0gI2VuZGlmCi0gewotQEAgLTk5LDQgKzk5LDEyIEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLSsKLSsjdW5kZWYgX19pZWVlNzU0X3NxcnRmCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCi0rewotKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IGZjNGE3NDk5MGUuLjcwMzhhNzBiNDcgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLUBAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0gCi0gI2lmZGVmIF9fU1REQ19fCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotICNlbHNlCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGIpCi0rX19zbG93X2llZWU3NTRfc3FydCAoYikKLSAgICAgIGRvdWJsZSBiOwotICNlbmRpZgotIHsKLUBAIC04Myw3ICs4Myw3IEBAIF9faWVlZTc1NF9zcXJ0IChiKQotIAotICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotIAotICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMTMyLDQgKzEzMiwxMiBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotKwotKyN1bmRlZiBfX2llZWU3NTRfc3FydAotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKLSt7Ci0rICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOwotK30KLSsKLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggOWQxNzUxMjJhOC4uMTBkZTFmMGNjMyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0gCi0gI2lmZGVmIF9fU1REQ19fCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0gI2Vsc2UKLSBmbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgIGZsb2F0IGI7Ci0gI2VuZGlmCi0gewotQEAgLTk5LDQgKzk5LDEyIEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLSsKLSsjdW5kZWYgX19pZWVlNzU0X3NxcnRmCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCi0rewotKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IGZjNGE3NDk5MGUuLjFjMzQyNDRiZDggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0xMzIsNCArMTMyLDEyIEBAIF9faWVlZTc1NF9zcXJ0IChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rCi0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0Ci0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQotK3sKLSsgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCA5ZDE3NTEyMmE4Li44MTI2NTM1NThmIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC05OSw0ICs5OSwxMiBAQCBfX2llZWU3NTRfc3FydGYgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rCi0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQotK3sKLSsgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCAxNzk1ZmQ2YzNlLi4xM2E4MTk3M2UzIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi1AQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSAgICBzaW11bHRhbmVvdXNseS4gICovCi0gCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotIHsKLSAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0gICAgIHsKLUBAIC03Nyw3ICs3Nyw3IEBAIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSAKLSAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0gICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLS0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSAKLSAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTEyNiw0ICsxMjYsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rCi0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0Ci0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQotK3sKLSsgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IGE5MTdmMzEzYWIuLmZhZTJkODEyMTAgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSAgICBzcXVhcmUgcm9vdC4gICovCi0gCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0gewotICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSAgICAgewotQEAgLTkzLDQgKzkzLDExIEBAIF9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLSsjdW5kZWYgX19pZWVlNzU0X3NxcnRmCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCi0rewotKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IGZjNGE3NDk5MGUuLjcwMzhhNzBiNDcgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKLUBAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0gCi0gI2lmZGVmIF9fU1REQ19fCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotICNlbHNlCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGIpCi0rX19zbG93X2llZWU3NTRfc3FydCAoYikKLSAgICAgIGRvdWJsZSBiOwotICNlbmRpZgotIHsKLUBAIC04Myw3ICs4Myw3IEBAIF9faWVlZTc1NF9zcXJ0IChiKQotIAotICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotIAotICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMTMyLDQgKzEzMiwxMiBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotKwotKyN1bmRlZiBfX2llZWU3NTRfc3FydAotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKLSt7Ci0rICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOwotK30KLSsKLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggOWQxNzUxMjJhOC4uMTBkZTFmMGNjMyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0gCi0gI2lmZGVmIF9fU1REQ19fCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0gI2Vsc2UKLSBmbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgIGZsb2F0IGI7Ci0gI2VuZGlmCi0gewotQEAgLTk5LDQgKzk5LDEyIEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLSsKLSsjdW5kZWYgX19pZWVlNzU0X3NxcnRmCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCi0rewotKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTZmOTFmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSAxM2JlYjFmNDI4ZWMwNjc3ODU5MGJmNTI2ZDZlNjQxZjczZDVjZjYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MTE6MjIgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVhZGxpYjogQWRkIE9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUyB0byBrbm93biBuYW1lcworCitUaGlzIGJvbHRzIGluIGEgaG9vayBmb3IgT0UgdG8gcGFzcyBpdHMgb3duIHZlcnNpb24gb2YgaW50ZXJwcmV0ZXIKK25hbWVzIGludG8gZ2xpYmMgZXNwZWNpYWxseSBmb3IgbXVsdGlsaWIgY2FzZSwgd2hlcmUgaXQgZGlmZmVycyBmcm9tIGFueQorb3RoZXIgZGlzdHJvcworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBMaWFuaGFvIEx1IDxsaWFuaGFvLmx1QGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBlbGYvcmVhZGxpYi5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9lbGYvcmVhZGxpYi5jIGIvZWxmL3JlYWRsaWIuYworaW5kZXggOTk0YTQ0MjZhMS4uYmFhYmYwOTliMSAxMDA2NDQKKy0tLSBhL2VsZi9yZWFkbGliLmMKKysrKyBiL2VsZi9yZWFkbGliLmMKK0BAIC01MSw2ICs1MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qga25vd25fbmFtZXMgaW50ZXJwcmV0ZXJzW10gPQorICNpZmRlZiBTWVNERVBfS05PV05fSU5URVJQUkVURVJfTkFNRVMKKyAgIFNZU0RFUF9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUworICNlbmRpZgorKyAgT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTCisgfTsKKyAKKyBzdGF0aWMgc3RydWN0IGtub3duX25hbWVzIGtub3duX2xpYnNbXSA9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTQwYTE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotRnJvbSA5YzFmMjIyOWM0OGMzN2IzODYyOGM0ODVlZjE2ZTAxZjY3ODAxNjBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MjA6MDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8yOF0gUXVvdGUgZnJvbSBidWcgMTQ0MyB3aGljaCBleHBsYWlucyB3aGF0IHRoZSBwYXRjaCBkb2VzCi0gOgotCi0gIFdlIGJ1aWxkIHNvbWUgcmFuZG9tIHByb2dyYW0gYW5kIGxpbmsgaXQgd2l0aCAtbHVzdC4gIFdoZW4gd2UgcnVuIGl0LAotICBpdCBkaWVzIHdpdGggYSBTSUdTRUdWIGJlZm9yZSByZWFjaGluZyBtYWluKCkuCi0KLSAgTGlidXN0LnNvIGRlcGVuZHMgb24gbGlidXJjdS1icC5zbyBmcm9tIHRoZSB1c2VybW9kZS1yY3UgcGFja2FnZS4KLSAgQWx0aG91Z2ggbGlidXN0LnNvIGlzIG5vdCBwcmVsaW5rZWQsIGxpYnVyY3UtYnAuc28gSVMgcHJlbGlua2VkOyB0aGlzCi0gIGlzIGNyaXRpY2FsLgotCi0gIExpYnVzdC5zbyB1c2VzIGEgVExTIC8gX190aHJlYWQgdmFyaWFibGUgdGhhdCBpcyBkZWZpbmVkIGluIGxpYnVyY3UtCi0gIGJwLnNvLiAgVGhlcmUgYXJlIHNwZWNpYWwgQVJNLXNwZWNpZmljIHJlbG9jYXRpb24gdHlwZXMgdGhhdCBhbGxvdyB0d28KLSAgc2hhcmVkIGxpYnJhcmllcyB0byBzaGFyZSB0aHJlYWQtc3BlY2lmaWMgZGF0YS4gIFRoaXMgaXMgY3JpdGljYWwgdG9vLgotCi0gIE9uZSBtb3JlIGNyaXRpY2FsIGlzc3VlOiBhbHRob3VnaCBsaWJ1cmN1LWJwLnNvIGlzIHByZWxpbmtlZCwgd2UgY2FuJ3QKLSAgbG9hZCBpdCBhdCBpdHMgcHJlbGlua2VkIGFkZHJlc3MsIGJlY2F1c2Ugd2UgYWxzbyBsaW5rIGFnYWluc3QKLSAgbGlicnQuc28sIGFuZCBsaWJydC5zbyB1c2VzIHRoYXQgYWRkcmVzcy4KLQotICBUaGUgZHluYW1pYyBsaW5rZXIgaXMgZm9yY2VkIHRvIHJlbGluayBsaWJ1cmN1LWJwLnNvIGF0IGEgZGlmZmVyZW50Ci0gIGFkZHJlc3MuICBJbiB0aGUgY291cnNlIG9mIHJlbGlua2luZywgaXQgcHJvY2Vzc2VzIHRoZSBzcGVjaWFsIEFSTQotICByZWxvY2F0aW9uIHJlY29yZCBtZW50aW9uZWQgYWJvdmUuICBUaGUgcHJlbGlua2VyIGhhcyBhbHJlYWR5IGZpbGxlZAotICBpbiB0aGUgaW5mb3JtYXRpb24sIHdoaWNoIGlzIGEgc2hvcnQgb2Zmc2V0IGludG8gYSB0YWJsZSBvZiB0aHJlYWQtCi0gIHNwZWNpZmljIGRhdGEgdGhhdCBpcyBhbGxvY2F0ZWQgcGVyLXRocmVhZCBmb3IgZWFjaCBsaWJyYXJ5IHRoYXQgdXNlcwotICBUTFMuICBCZWNhdXNlIHRoZSBub3JtYWwgYmVoYXZpb3Igb2YgYSByZWxvY2F0aW9uIGlzIHRvIGFkZCB0aGUgc3ltYm9sCi0gIHZhbHVlIHRvIGFuIGFkZGVuZCBzdG9yZWQgYXQgdGhlIGFkZHJlc3MgYmVpbmcgcmVsb2NhdGVkLCB3ZSBlbmQgdXAKLSAgYWRkaW5nIHRoZSBzaG9ydCBvZmZzZXQgdG8gaXRzZWxmLCBkb3VibGluZyBpdC4KLQotICBOb3cgd2UgaGF2ZSBhbiBhd2t3YXJkIHNpdHVhdGlvbi4gIFRoZSBsaWJ1c3Quc28gbGlicmFyeSBkb2Vzbid0IGtub3cKLSAgYWJvdXQgdGhlIGFkZGVuZCwgc28gaXRzIFRMUyBkYXRhIGZvciB0aGlzIGVsZW1lbnQgaXMgY29ycmVjdC4gIFRoZQotICBsaWJ1cmN1LWJwLnNvIGxpYnJhcnkgaGFzIGEgZGlmZmVyZW50IG9mZnNldCBmb3IgdGhlIGVsZW1lbnQuICBXaGVuIHdlCi0gIGdvIHRvIGluaXRpYWxpemUgdGhlIGVsZW1lbnQgZm9yIHRoZSBmaXJzdCB0aW1lIGluIGxpYnVyY3UtYnAuc28sIHdlCi0gIHdyaXRlIHRoZSBhZGRyZXNzIG9mIHRoZSByZXN1bHQgYXQgdGhlIGRvdWJsZWQgKGJyb2tlbikgb2Zmc2V0LgotICBMYXRlciwgd2hlbiB3ZSByZWZlciB0byB0aGUgYWRkcmVzcyBmcm9tIGxpYnVzdC5zbywgd2UgY2hlY2sgdGhlIHZhbHVlCi0gIGF0IHRoZSBjb3JyZWN0IG9mZnNldCwgYnV0IGl0J3MgTlVMTCwgc28gd2UgZWF0IGhvdCBTSUdTRUdWLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVpIERpbnUgPGFuZHJlaS5hZHJpYW54LmRpbnVAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaCBiL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaAotaW5kZXggN2EyZjlkOWI3OC4uMzZhMWRkMTg4OCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaAotKysrIGIvc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oCi1AQCAtNTEwLDcgKzUxMCw3IEBAIGVsZl9tYWNoaW5lX3JlbCAoc3RydWN0IGxpbmtfbWFwICptYXAsIGNvbnN0IEVsZjMyX1JlbCAqcmVsb2MsCi0gCi0gCWNhc2UgUl9BUk1fVExTX0RUUE9GRjMyOgotIAkgIGlmIChzeW0gIT0gTlVMTCkKLS0JICAgICpyZWxvY19hZGRyICs9IHN5bS0+c3RfdmFsdWU7Ci0rCSAgICAqcmVsb2NfYWRkciA9IHN5bS0+c3RfdmFsdWU7Ci0gCSAgYnJlYWs7Ci0gCi0gCWNhc2UgUl9BUk1fVExTX1RQT0ZGMzI6Ci0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNDQ2YWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaApAQCAtMCwwICsxLDIwNSBAQAorRnJvbSA0NDgzYTgzMDc0YTM0MGE5MjFlMzE5Yjg4ZDcyMTY2ZjE4ZTBkZjBiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MTU6MDcgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gcHBjL3NxcnQ6IEZpeCB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3NxcnRfZmluaXRlJworCitvbiBwcGMgZml4ZXMgdGhlIGVycm9ycyBsaWtlIGJlbG93Cit8IC4vLmxpYnMvbGlicHVsc2Vjb3JlLTEuMS5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19zcXJ0X2Zpbml0ZScKK3wgY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0NoYW5nZUxvZworCisyMDEyLTAxLTA2ICBLaGVtIFJhaiAgPHJhai5raGVtQGdtYWlsLmNvbT4KKworICAgICAgICAqIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYzogQWRkIF9fKl9maW5pdGUgYWxpYXMuCisgICAgICAgIFJlbW92ZSBjcnVmdC4KKyAgICAgICAgKiBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYzogRGl0dG8uCisgICAgICAgICogc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYzogRGl0dG8uCisgICAgICAgICogc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmM6IERpdHRvLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyAgICB8IDcgKy0tLS0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jICAgfCA3ICstLS0tLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgIHwgMSArCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyB8IDEgKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jICAgfCAxICsKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgIHwgMSArCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgICB8IDEgKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyAgfCAxICsKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyAgIHwgNyArLS0tLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jICB8IDcgKy0tLS0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jICAgfCAxICsKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgIHwgMSArCisgMTIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYworaW5kZXggNzFlNTE2ZDFjOC4uMTc5NWZkNmMzZSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKK0BAIC0zOSwxNCArMzksOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKyAgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKyAgICBzaW11bHRhbmVvdXNseS4gICovCisgCistI2lmZGVmIF9fU1REQ19fCisgZG91YmxlCisgX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorLSNlbHNlCistZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGIpCistICAgICBkb3VibGUgYjsKKy0jZW5kaWYKKyB7CisgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorICAgICB7CitAQCAtMTMyLDMgKzEyNiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCitpbmRleCAyNmZhMDY3YWJmLi5hOTE3ZjMxM2FiIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCitAQCAtMzcsMTQgKzM3LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKyAgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKKyAgICBzcXVhcmUgcm9vdC4gICovCisgCistI2lmZGVmIF9fU1REQ19fCisgZmxvYXQKKyBfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCistI2Vsc2UKKy1mbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoYikKKy0gICAgIGZsb2F0IGI7CistI2VuZGlmCisgeworICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKyAgICAgeworQEAgLTk5LDMgKzkzLDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKK2luZGV4IDcxZTUxNmQxYzguLmZjNGE3NDk5MGUgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYworQEAgLTEzMiwzICsxMzIsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKK2luZGV4IDI2ZmEwNjdhYmYuLjlkMTc1MTIyYTggMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCitAQCAtOTksMyArOTksNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKK2luZGV4IDcxZTUxNmQxYzguLmZjNGE3NDk5MGUgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKK0BAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYworaW5kZXggMjZmYTA2N2FiZi4uOWQxNzUxMjJhOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtOTksMyArOTksNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKK2luZGV4IDcxZTUxNmQxYzguLmZjNGE3NDk5MGUgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKK0BAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworaW5kZXggMjZmYTA2N2FiZi4uOWQxNzUxMjJhOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtOTksMyArOTksNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKK2luZGV4IDcxZTUxNmQxYzguLjE3OTVmZDZjM2UgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKK0BAIC0zOSwxNCArMzksOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKyAgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKyAgICBzaW11bHRhbmVvdXNseS4gICovCisgCistI2lmZGVmIF9fU1REQ19fCisgZG91YmxlCisgX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorLSNlbHNlCistZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGIpCistICAgICBkb3VibGUgYjsKKy0jZW5kaWYKKyB7CisgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorICAgICB7CitAQCAtMTMyLDMgKzEyNiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKK2luZGV4IDI2ZmEwNjdhYmYuLmE5MTdmMzEzYWIgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYworQEAgLTM3LDE0ICszNyw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisgICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisgICAgc3F1YXJlIHJvb3QuICAqLworIAorLSNpZmRlZiBfX1NURENfXworIGZsb2F0CisgX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorLSNlbHNlCistZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGIpCistICAgICBmbG9hdCBiOworLSNlbmRpZgorIHsKKyAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisgICAgIHsKK0BAIC05OSwzICs5Myw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYworaW5kZXggNzFlNTE2ZDFjOC4uZmM0YTc0OTkwZSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYworQEAgLTEzMiwzICsxMzIsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitpbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC05OSwzICs5OSw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1MWYzNzIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaApAQCAtMCwwICsxLDM4NCBAQAorRnJvbSAzNDdiMmUzMWQwMTBiMDRjNDJlNzgxNTdhMDI4YWExZDU4ZmUwZjVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MTY6MzggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gX19pZWVlNzU0X3NxcnR7LGZ9IGFyZSBub3cgaW5saW5lIGZ1bmN0aW9ucyBhbmQgY2FsbCBvdXQKKyBfX3Nsb3cgdmVyc2lvbnMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jICAgIHwgMTIgKysrKysrKysrKy0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgICB8ICA4ICsrKysrKystCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jICB8IDE0ICsrKysrKysrKysrLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyB8IDEyICsrKysrKysrKystLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jICAgfCAxNCArKysrKysrKysrKy0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyAgfCAxMiArKysrKysrKysrLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyAgIHwgIDggKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgIHwgIDggKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMTIgKysrKysrKysrKy0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jICB8ICA5ICsrKysrKysrLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jICAgfCAxNCArKysrKysrKysrKy0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyAgfCAxMiArKysrKysrKysrLS0KKyAxMiBmaWxlcyBjaGFuZ2VkLCAxMTQgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYworaW5kZXggMTc5NWZkNmMzZS4uZGFhODNmM2ZlOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKK0BAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworICAgIHNpbXVsdGFuZW91c2x5LiAgKi8KKyAKKyBkb3VibGUKKy1fX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrX19zbG93X2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisgeworICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKyAgICAgeworQEAgLTc3LDcgKzc3LDcgQEAgX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorIAorICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KKyAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQorLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisrICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworIAorICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitAQCAtMTI2LDQgKzEyNiwxMiBAQCBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKysKKysjdW5kZWYgX19pZWVlNzU0X3NxcnQKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIHgpCisreworKyAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCitpbmRleCBhOTE3ZjMxM2FiLi5iODEyY2YxNzA1IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCitAQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworICAgIHNxdWFyZSByb290LiAgKi8KKyAKKyBmbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKyB7CisgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorICAgICB7CitAQCAtOTMsNCArOTMsMTAgQEAgX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorKyN1bmRlZiBfX2llZWU3NTRfc3FydGYKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgeCkKKyt7CisrICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydGYgKHgpOworK30KKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCitpbmRleCBmYzRhNzQ5OTBlLi43MDM4YTcwYjQ3IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKK0BAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisgCisgI2lmZGVmIF9fU1REQ19fCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorICNlbHNlCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGIpCisrX19zbG93X2llZWU3NTRfc3FydCAoYikKKyAgICAgIGRvdWJsZSBiOworICNlbmRpZgorIHsKK0BAIC04Myw3ICs4Myw3IEBAIF9faWVlZTc1NF9zcXJ0IChiKQorIAorICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KKyAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQorLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisrICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworIAorICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitAQCAtMTMyLDQgKzEzMiwxMiBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorKworKyN1bmRlZiBfX2llZWU3NTRfc3FydAorK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKKyt7CisrICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCitpbmRleCA5ZDE3NTEyMmE4Li4xMGRlMWYwY2MzIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYworQEAgLTM5LDEwICszOSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworIAorICNpZmRlZiBfX1NURENfXworIGZsb2F0CistX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorICNlbHNlCisgZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGIpCisrX19zbG93X2llZWU3NTRfc3FydGYgKGIpCisgICAgICBmbG9hdCBiOworICNlbmRpZgorIHsKK0BAIC05OSw0ICs5OSwxMiBAQCBfX2llZWU3NTRfc3FydGYgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9CisrCisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgorK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQorK3sKKysgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCitpbmRleCBmYzRhNzQ5OTBlLi43MDM4YTcwYjQ3IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCitAQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworIAorICNpZmRlZiBfX1NURENfXworIGRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKyAjZWxzZQorIGRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChiKQorK19fc2xvd19pZWVlNzU0X3NxcnQgKGIpCisgICAgICBkb3VibGUgYjsKKyAjZW5kaWYKKyB7CitAQCAtODMsNyArODMsNyBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAKKyAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisgICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKy0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKyAKKyAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorQEAgLTEzMiw0ICsxMzIsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKysKKysjdW5kZWYgX19pZWVlNzU0X3NxcnQKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIHgpCisreworKyAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKK2luZGV4IDlkMTc1MTIyYTguLjEwZGUxZjBjYzMgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYworQEAgLTM5LDEwICszOSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworIAorICNpZmRlZiBfX1NURENfXworIGZsb2F0CistX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorICNlbHNlCisgZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGIpCisrX19zbG93X2llZWU3NTRfc3FydGYgKGIpCisgICAgICBmbG9hdCBiOworICNlbmRpZgorIHsKK0BAIC05OSw0ICs5OSwxMiBAQCBfX2llZWU3NTRfc3FydGYgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9CisrCisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgorK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQorK3sKKysgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCitpbmRleCBmYzRhNzQ5OTBlLi4xYzM0MjQ0YmQ4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCitAQCAtMTMyLDQgKzEzMiwxMiBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorKworKyN1bmRlZiBfX2llZWU3NTRfc3FydAorK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKKyt7CisrICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworaW5kZXggOWQxNzUxMjJhOC4uODEyNjUzNTU4ZiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtOTksNCArOTksMTIgQEAgX19pZWVlNzU0X3NxcnRmIChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorKworKyN1bmRlZiBfX2llZWU3NTRfc3FydGYKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgeCkKKyt7CisrICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydGYgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYworaW5kZXggMTc5NWZkNmMzZS4uMTNhODE5NzNlMyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYworQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisgICAgc2ltdWx0YW5lb3VzbHkuICAqLworIAorIGRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKyB7CisgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorICAgICB7CitAQCAtNzcsNyArNzcsNyBAQCBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisgCisgICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCistICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisgCisgI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0BAIC0xMjYsNCArMTI2LDEyIEBAIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorKworKyN1bmRlZiBfX2llZWU3NTRfc3FydAorK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKKyt7CisrICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitpbmRleCBhOTE3ZjMxM2FiLi5mYWUyZDgxMjEwIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC0zOCw3ICszOCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisgICAgc3F1YXJlIHJvb3QuICAqLworIAorIGZsb2F0CistX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorIHsKKyAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisgICAgIHsKK0BAIC05Myw0ICs5MywxMSBAQCBfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9CisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgorK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQorK3sKKysgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCitpbmRleCBmYzRhNzQ5OTBlLi43MDM4YTcwYjQ3IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCitAQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworIAorICNpZmRlZiBfX1NURENfXworIGRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKyAjZWxzZQorIGRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChiKQorK19fc2xvd19pZWVlNzU0X3NxcnQgKGIpCisgICAgICBkb3VibGUgYjsKKyAjZW5kaWYKKyB7CitAQCAtODMsNyArODMsNyBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAKKyAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisgICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKy0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKyAKKyAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorQEAgLTEzMiw0ICsxMzIsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKysKKysjdW5kZWYgX19pZWVlNzU0X3NxcnQKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIHgpCisreworKyAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKK2luZGV4IDlkMTc1MTIyYTguLjEwZGUxZjBjYzMgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYworQEAgLTM5LDEwICszOSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworIAorICNpZmRlZiBfX1NURENfXworIGZsb2F0CistX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorICNlbHNlCisgZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGIpCisrX19zbG93X2llZWU3NTRfc3FydGYgKGIpCisgICAgICBmbG9hdCBiOworICNlbmRpZgorIHsKK0BAIC05OSw0ICs5OSwxMiBAQCBfX2llZWU3NTRfc3FydGYgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9CisrCisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgorK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQorK3sKKysgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMS1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMS1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I5OTA5Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIDE3MWQyYWZiOTMwOTE3YjBjZmJlOWRmNzcwNzc0ZGExYzkyZGQxODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUaW5nIExpdSA8YjI4NDk1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOiBXZWQsIDE5IERlYyAyMDEyIDA0OjM5OjU3IC0wNjAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMjhdIGVnbGliYzogcnVuIGxpYm0tZXJyLXRhYi5wbCB3aXRoIHNwZWNpZmljIGRpcnMgaW4gJHtTfQotCi1saWJtLWVyci10YWIucGwgd2lsbCBwYXJzZSBhbGwgdGhlIGZpbGVzIG5hbWVkICJsaWJtLXRlc3QtdWxwcyIKLWluIHRoZSBnaXZlbiBkaXIgcmVjdXJzaXZlbHkuIFRvIGF2b2lkIHBhcnNpbmcgdGhlIG9uZSBpbgotJHtTfS8ucGMvIChpdCBkb2VzIGV4aXN0IGFmdGVyIGVnbGliYyBhZGRzIGFhcmNoNjQgc3VwcG9ydCwKLSR7U30vLnBjL2FhcmNoNjQtMDAwMS1nbGliYy1mc2YtdjEtZWFmNmYyMDUucGF0Y2gvcG9ydHMvc3lzZGVwcy8KLWFhcmNoNjQvbGlibS10ZXN0LXVscHMpLCBydW4gbGlibS1lcnItdGFiLnBsIHdpdGggc3BlY2lmaWMgZGlycwotaW4gJHtTfS4KLQotVXBzdHJlYW0tU3RhdHVzOiBpbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogVGluZyBMaXUgPGIyODQ5NUBmcmVlc2NhbGUuY29tPgotLS0tCi0gbWFudWFsL01ha2VmaWxlIHwgMyArKy0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9tYW51YWwvTWFrZWZpbGUgYi9tYW51YWwvTWFrZWZpbGUKLWluZGV4IDRmNzZlZTg1ZDIuLjA0YjhjOGMzMjAgMTAwNjQ0Ci0tLS0gYS9tYW51YWwvTWFrZWZpbGUKLSsrKyBiL21hbnVhbC9NYWtlZmlsZQotQEAgLTEwMyw3ICsxMDMsOCBAQCAkKG9ianBmeClzdGFtcC1saWJtLWVycjogJCguLiltYXRoL2dlbi1saWJtLXRlc3QucHkgXAotIAkJCSAkKHdpbGRjYXJkICQoZm9yZWFjaCBkaXIsJChzeXNkaXJzKSxcCi0gCQkJCQkJICAkKGRpcikvbGlibS10ZXN0LXVscHMpKQotIAlwd2Q9YHB3ZGA7IFwKLS0JJChQWVRIT04pICQ8IC1zICQkcHdkLy4uIC1tICQob2JqcGZ4KWxpYm0tZXJyLXRtcAotKwkkKFBZVEhPTikgJDwgLXMgJCRwd2QvLi4vcG9ydHMgLW0gJChvYmpwZngpbGlibS1lcnItdG1wCi0rCSQoUFlUSE9OKSAkPCAtcyAkJHB3ZC8uLi9zeXNkZXBzIC1tICQob2JqcGZ4KWxpYm0tZXJyLXRtcAotIAkkKG1vdmUtaWYtY2hhbmdlKSAkKG9ianBmeClsaWJtLWVyci10bXAgJChvYmpwZngpbGlibS1lcnIudGV4aQotIAl0b3VjaCAkQAotIAotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGI0NmMwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2gKQEAgLTAsMCArMSw1OCBAQAorRnJvbSA4Y2E4ZTVjZDc4Y2JkMzdhNzEzZTExODFmOGY2NjQxYjU3MzUyYWE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MjA6MDkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gUXVvdGUgZnJvbSBidWcgMTQ0MyB3aGljaCBleHBsYWlucyB3aGF0IHRoZSBwYXRjaCBkb2VzIDoKKworICBXZSBidWlsZCBzb21lIHJhbmRvbSBwcm9ncmFtIGFuZCBsaW5rIGl0IHdpdGggLWx1c3QuICBXaGVuIHdlIHJ1biBpdCwKKyAgaXQgZGllcyB3aXRoIGEgU0lHU0VHViBiZWZvcmUgcmVhY2hpbmcgbWFpbigpLgorCisgIExpYnVzdC5zbyBkZXBlbmRzIG9uIGxpYnVyY3UtYnAuc28gZnJvbSB0aGUgdXNlcm1vZGUtcmN1IHBhY2thZ2UuCisgIEFsdGhvdWdoIGxpYnVzdC5zbyBpcyBub3QgcHJlbGlua2VkLCBsaWJ1cmN1LWJwLnNvIElTIHByZWxpbmtlZDsgdGhpcworICBpcyBjcml0aWNhbC4KKworICBMaWJ1c3Quc28gdXNlcyBhIFRMUyAvIF9fdGhyZWFkIHZhcmlhYmxlIHRoYXQgaXMgZGVmaW5lZCBpbiBsaWJ1cmN1LQorICBicC5zby4gIFRoZXJlIGFyZSBzcGVjaWFsIEFSTS1zcGVjaWZpYyByZWxvY2F0aW9uIHR5cGVzIHRoYXQgYWxsb3cgdHdvCisgIHNoYXJlZCBsaWJyYXJpZXMgdG8gc2hhcmUgdGhyZWFkLXNwZWNpZmljIGRhdGEuICBUaGlzIGlzIGNyaXRpY2FsIHRvby4KKworICBPbmUgbW9yZSBjcml0aWNhbCBpc3N1ZTogYWx0aG91Z2ggbGlidXJjdS1icC5zbyBpcyBwcmVsaW5rZWQsIHdlIGNhbid0CisgIGxvYWQgaXQgYXQgaXRzIHByZWxpbmtlZCBhZGRyZXNzLCBiZWNhdXNlIHdlIGFsc28gbGluayBhZ2FpbnN0CisgIGxpYnJ0LnNvLCBhbmQgbGlicnQuc28gdXNlcyB0aGF0IGFkZHJlc3MuCisKKyAgVGhlIGR5bmFtaWMgbGlua2VyIGlzIGZvcmNlZCB0byByZWxpbmsgbGlidXJjdS1icC5zbyBhdCBhIGRpZmZlcmVudAorICBhZGRyZXNzLiAgSW4gdGhlIGNvdXJzZSBvZiByZWxpbmtpbmcsIGl0IHByb2Nlc3NlcyB0aGUgc3BlY2lhbCBBUk0KKyAgcmVsb2NhdGlvbiByZWNvcmQgbWVudGlvbmVkIGFib3ZlLiAgVGhlIHByZWxpbmtlciBoYXMgYWxyZWFkeSBmaWxsZWQKKyAgaW4gdGhlIGluZm9ybWF0aW9uLCB3aGljaCBpcyBhIHNob3J0IG9mZnNldCBpbnRvIGEgdGFibGUgb2YgdGhyZWFkLQorICBzcGVjaWZpYyBkYXRhIHRoYXQgaXMgYWxsb2NhdGVkIHBlci10aHJlYWQgZm9yIGVhY2ggbGlicmFyeSB0aGF0IHVzZXMKKyAgVExTLiAgQmVjYXVzZSB0aGUgbm9ybWFsIGJlaGF2aW9yIG9mIGEgcmVsb2NhdGlvbiBpcyB0byBhZGQgdGhlIHN5bWJvbAorICB2YWx1ZSB0byBhbiBhZGRlbmQgc3RvcmVkIGF0IHRoZSBhZGRyZXNzIGJlaW5nIHJlbG9jYXRlZCwgd2UgZW5kIHVwCisgIGFkZGluZyB0aGUgc2hvcnQgb2Zmc2V0IHRvIGl0c2VsZiwgZG91YmxpbmcgaXQuCisKKyAgTm93IHdlIGhhdmUgYW4gYXdrd2FyZCBzaXR1YXRpb24uICBUaGUgbGlidXN0LnNvIGxpYnJhcnkgZG9lc24ndCBrbm93CisgIGFib3V0IHRoZSBhZGRlbmQsIHNvIGl0cyBUTFMgZGF0YSBmb3IgdGhpcyBlbGVtZW50IGlzIGNvcnJlY3QuICBUaGUKKyAgbGlidXJjdS1icC5zbyBsaWJyYXJ5IGhhcyBhIGRpZmZlcmVudCBvZmZzZXQgZm9yIHRoZSBlbGVtZW50LiAgV2hlbiB3ZQorICBnbyB0byBpbml0aWFsaXplIHRoZSBlbGVtZW50IGZvciB0aGUgZmlyc3QgdGltZSBpbiBsaWJ1cmN1LWJwLnNvLCB3ZQorICB3cml0ZSB0aGUgYWRkcmVzcyBvZiB0aGUgcmVzdWx0IGF0IHRoZSBkb3VibGVkIChicm9rZW4pIG9mZnNldC4KKyAgTGF0ZXIsIHdoZW4gd2UgcmVmZXIgdG8gdGhlIGFkZHJlc3MgZnJvbSBsaWJ1c3Quc28sIHdlIGNoZWNrIHRoZSB2YWx1ZQorICBhdCB0aGUgY29ycmVjdCBvZmZzZXQsIGJ1dCBpdCdzIE5VTEwsIHNvIHdlIGVhdCBob3QgU0lHU0VHVi4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlaSBEaW51IDxhbmRyZWkuYWRyaWFueC5kaW51QGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL2FybS9kbC1tYWNoaW5lLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmggYi9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmgKK2luZGV4IDkwODU2Nzc5YjEuLmEyOWJiODZjNTYgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmgKKysrKyBiL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaAorQEAgLTUxMCw3ICs1MTAsNyBAQCBlbGZfbWFjaGluZV9yZWwgKHN0cnVjdCBsaW5rX21hcCAqbWFwLCBjb25zdCBFbGYzMl9SZWwgKnJlbG9jLAorIAorIAljYXNlIFJfQVJNX1RMU19EVFBPRkYzMjoKKyAJICBpZiAoc3ltICE9IE5VTEwpCistCSAgICAqcmVsb2NfYWRkciArPSBzeW0tPnN0X3ZhbHVlOworKwkgICAgKnJlbG9jX2FkZHIgPSBzeW0tPnN0X3ZhbHVlOworIAkgIGJyZWFrOworIAorIAljYXNlIFJfQVJNX1RMU19UUE9GRjMyOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTIzM2ZiZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLUZyb20gMzc2YmU3Yjk2MTUyZWY1MDFjOGNmOTVlZDZkYzUyYzAzMThiZDI2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI0OjQ2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvMjhdIF9faWVlZTc1NF9zcXJ0eyxmfSBhcmUgbm93IGlubGluZSBmdW5jdGlvbnMgYW5kIGNhbGwKLSBvdXQgX19zbG93IHZlcnNpb25zCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBjaHVucm9uZyBndW8gPEI0MDI5MEBmcmVlc2NhbGUuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jICB8IDYgKysrLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIHwgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCAxYzM0MjQ0YmQ4Li43MDM4YTcwYjQ3IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1AQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotIAotICNpZmRlZiBfX1NURENfXwotIGRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSAjZWxzZQotIGRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChiKQotK19fc2xvd19pZWVlNzU0X3NxcnQgKGIpCi0gICAgICBkb3VibGUgYjsKLSAjZW5kaWYKLSB7Ci1AQCAtODMsNyArODMsNyBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAKLSAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0gICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLS0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSAKLSAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggODEyNjUzNTU4Zi4uMTBkZTFmMGNjMyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0gCi0gI2lmZGVmIF9fU1REQ19fCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0gI2Vsc2UKLSBmbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgIGZsb2F0IGI7Ci0gI2VuZGlmCi0gewotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEzLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEzLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczNmRlOGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSAyMTUwOTczNTY3ODk5MDc2MGQ1ZWJmOWQwYzY1ZWZhNGI1MmI4MzhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGluZyBMaXUgPGIyODQ5NUBmcmVlc2NhbGUuY29tPgorRGF0ZTogV2VkLCAxOSBEZWMgMjAxMiAwNDozOTo1NyAtMDYwMAorU3ViamVjdDogW1BBVENIXSBlZ2xpYmM6IHJ1biBsaWJtLWVyci10YWIucGwgd2l0aCBzcGVjaWZpYyBkaXJzIGluICR7U30KKworbGlibS1lcnItdGFiLnBsIHdpbGwgcGFyc2UgYWxsIHRoZSBmaWxlcyBuYW1lZCAibGlibS10ZXN0LXVscHMiCitpbiB0aGUgZ2l2ZW4gZGlyIHJlY3Vyc2l2ZWx5LiBUbyBhdm9pZCBwYXJzaW5nIHRoZSBvbmUgaW4KKyR7U30vLnBjLyAoaXQgZG9lcyBleGlzdCBhZnRlciBlZ2xpYmMgYWRkcyBhYXJjaDY0IHN1cHBvcnQsCiske1N9Ly5wYy9hYXJjaDY0LTAwMDEtZ2xpYmMtZnNmLXYxLWVhZjZmMjA1LnBhdGNoL3BvcnRzL3N5c2RlcHMvCithYXJjaDY0L2xpYm0tdGVzdC11bHBzKSwgcnVuIGxpYm0tZXJyLXRhYi5wbCB3aXRoIHNwZWNpZmljIGRpcnMKK2luICR7U30uCisKK1Vwc3RyZWFtLVN0YXR1czogaW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFRpbmcgTGl1IDxiMjg0OTVAZnJlZXNjYWxlLmNvbT4KKy0tLQorIG1hbnVhbC9NYWtlZmlsZSB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWFudWFsL01ha2VmaWxlIGIvbWFudWFsL01ha2VmaWxlCitpbmRleCBjNjFlMTFkY2Q3Li41ZDg1OWU2Zjg0IDEwMDY0NAorLS0tIGEvbWFudWFsL01ha2VmaWxlCisrKysgYi9tYW51YWwvTWFrZWZpbGUKK0BAIC0xMDMsNyArMTAzLDggQEAgJChvYmpwZngpc3RhbXAtbGlibS1lcnI6ICQoLi4pbWF0aC9nZW4tbGlibS10ZXN0LnB5IFwKKyAJCQkgJCh3aWxkY2FyZCAkKGZvcmVhY2ggZGlyLCQoc3lzZGlycyksXAorIAkJCQkJCSAgJChkaXIpL2xpYm0tdGVzdC11bHBzKSkKKyAJcHdkPWBwd2RgOyBcCistCSQoUFlUSE9OKSAkPCAtcyAkJHB3ZC8uLiAtbSAkKG9ianBmeClsaWJtLWVyci10bXAKKysJJChQWVRIT04pICQ8IC1zICQkcHdkLy4uL3BvcnRzIC1tICQob2JqcGZ4KWxpYm0tZXJyLXRtcAorKwkkKFBZVEhPTikgJDwgLXMgJCRwd2QvLi4vc3lzZGVwcyAtbSAkKG9ianBmeClsaWJtLWVyci10bXAKKyAJJChtb3ZlLWlmLWNoYW5nZSkgJChvYmpwZngpbGlibS1lcnItdG1wICQob2JqcGZ4KWxpYm0tZXJyLnRleGkKKyAJdG91Y2ggJEAKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEzLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliYTUyZTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEzLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDFiYTRlOTU3NzQzNzYzMjg1NmQ3MTljYmQ1ZDYzYjVhNzZjYmI0YzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyNzoxMCArMDAwMAotU3ViamVjdDogW1BBVENIIDEzLzI4XSBzeXNkZXBzL2dudS9jb25maWd1cmUuYWM6IGhhbmRsZSBjb3JyZWN0bHkKLSAkbGliY19jdl9yb290c2JpbmRpcgotCi1VcHN0cmVhbS1TdGF0dXM6UGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0aGlldSBDcmFwZXQgPE1hdHRoaWV1LkNyYXBldEBpbmdlbmljby5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy9nbnUvY29uZmlndXJlICAgIHwgMiArLQotIHN5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZSBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQotaW5kZXggYzE1ZDEwODdlOC4uMzdjYzk4M2YyYSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlCi1AQCAtMzIsNiArMzIsNiBAQCBjYXNlICIkcHJlZml4IiBpbgotICAgZWxzZQotICAgICBsaWJjX2N2X2xvY2Fsc3RhdGVkaXI9JGxvY2Fsc3RhdGVkaXIKLSAgICBmaQotLSAgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgotKyAgdGVzdCAtbiAiJGxpYmNfY3Zfcm9vdHNiaW5kaXIiIHx8IGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KLSAgIDs7Ci0gZXNhYwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYwotaW5kZXggNjM0ZmU0ZGUyYS4uM2RiMTY5N2Y0ZiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjCi1AQCAtMjEsNiArMjEsNiBAQCBjYXNlICIkcHJlZml4IiBpbgotICAgZWxzZQotICAgICBsaWJjX2N2X2xvY2Fsc3RhdGVkaXI9JGxvY2Fsc3RhdGVkaXIKLSAgICBmaQotLSAgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgotKyAgdGVzdCAtbiAiJGxpYmNfY3Zfcm9vdHNiaW5kaXIiIHx8IGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KLSAgIDs7Ci0gZXNhYwotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTYwMmJiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNC1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gYjg0OTk5ZGNmNjQyYjA3ZTZjMTRlNmZmNTA3YmUxNDc0MzM0OTk0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI4OjQxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvMjhdIEFkZCB1bnVzZWQgYXR0cmlidXRlCi0KLUhlbHBzIGluIGF2b2lkaW5nIGdjYyB3YXJuaW5nIHdoZW4gaGVhZGVyIGlzIGlzIGluY2x1ZGVkIGluCi1hIHNvdXJjZSBmaWxlIHdoaWNoIGRvZXMgbm90IHVzZSBib3RoIGZ1bmN0aW9ucwotCi0gICAgICAgICogaWNvbnYvZ2NvbnZfY2hhcnNldC5oIChzdHJpcCk6Ci0gICAgICAgIEFkZCB1bnVzZWQgYXR0cmlidXRlLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGljb252L2djb252X2NoYXJzZXQuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2ljb252L2djb252X2NoYXJzZXQuaCBiL2ljb252L2djb252X2NoYXJzZXQuaAotaW5kZXggOTFlMGFkMzE0MS4uMmU5NTQ5ZmU0OSAxMDA2NDQKLS0tLSBhL2ljb252L2djb252X2NoYXJzZXQuaAotKysrIGIvaWNvbnYvZ2NvbnZfY2hhcnNldC5oCi1AQCAtMjEsNyArMjEsNyBAQAotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAKLSAKLS1zdGF0aWMgdm9pZAotK3N0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQotIHN0cmlwIChjaGFyICp3cCwgY29uc3QgY2hhciAqcykKLSB7Ci0gICBpbnQgc2xhc2hfY291bnQgPSAwOwotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzNiNjQwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKQEAgLTAsMCArMSw1OCBAQAorRnJvbSBlMzNkZWIxMTk3MzRlZjQ0M2VmNDRjNDJhMDBhNTY5ZjkwZTFlMTQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MjQ6NDYgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gX19pZWVlNzU0X3NxcnR7LGZ9IGFyZSBub3cgaW5saW5lIGZ1bmN0aW9ucyBhbmQgY2FsbCBvdXQKKyBfX3Nsb3cgdmVyc2lvbnMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IGNodW5yb25nIGd1byA8QjQwMjkwQGZyZWVzY2FsZS5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgIHwgNiArKystLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgfCA0ICsrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKK2luZGV4IDFjMzQyNDRiZDguLjcwMzhhNzBiNDcgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKK0BAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisgCisgI2lmZGVmIF9fU1REQ19fCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorICNlbHNlCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGIpCisrX19zbG93X2llZWU3NTRfc3FydCAoYikKKyAgICAgIGRvdWJsZSBiOworICNlbmRpZgorIHsKK0BAIC04Myw3ICs4Myw3IEBAIF9faWVlZTc1NF9zcXJ0IChiKQorIAorICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KKyAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQorLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisrICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworIAorICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitpbmRleCA4MTI2NTM1NThmLi4xMGRlMWYwY2MzIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC0zOSwxMCArMzksMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKyAKKyAjaWZkZWYgX19TVERDX18KKyBmbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKyAjZWxzZQorIGZsb2F0CistX19pZWVlNzU0X3NxcnRmIChiKQorK19fc2xvd19pZWVlNzU0X3NxcnRmIChiKQorICAgICAgZmxvYXQgYjsKKyAjZW5kaWYKKyB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTUtc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjZGQwNTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTUtc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIGM1MGNhZTM2ZTkwYzQxODQ5MzAxYTlhNjY4YWRmMzFlODFlNDNhMDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyNzoxMCArMDAwMAorU3ViamVjdDogW1BBVENIXSBzeXNkZXBzL2dudS9jb25maWd1cmUuYWM6IGhhbmRsZSBjb3JyZWN0bHkKKyAkbGliY19jdl9yb290c2JpbmRpcgorCitVcHN0cmVhbS1TdGF0dXM6UGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNYXR0aGlldSBDcmFwZXQgPE1hdHRoaWV1LkNyYXBldEBpbmdlbmljby5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy9nbnUvY29uZmlndXJlICAgIHwgMiArLQorIHN5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYyB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZSBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQoraW5kZXggYzE1ZDEwODdlOC4uMzdjYzk4M2YyYSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlCitAQCAtMzIsNiArMzIsNiBAQCBjYXNlICIkcHJlZml4IiBpbgorICAgZWxzZQorICAgICBsaWJjX2N2X2xvY2Fsc3RhdGVkaXI9JGxvY2Fsc3RhdGVkaXIKKyAgICBmaQorLSAgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgorKyAgdGVzdCAtbiAiJGxpYmNfY3Zfcm9vdHNiaW5kaXIiIHx8IGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KKyAgIDs7CisgZXNhYworZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYworaW5kZXggNjM0ZmU0ZGUyYS4uM2RiMTY5N2Y0ZiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjCitAQCAtMjEsNiArMjEsNiBAQCBjYXNlICIkcHJlZml4IiBpbgorICAgZWxzZQorICAgICBsaWJjX2N2X2xvY2Fsc3RhdGVkaXI9JGxvY2Fsc3RhdGVkaXIKKyAgICBmaQorLSAgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgorKyAgdGVzdCAtbiAiJGxpYmNfY3Zfcm9vdHNiaW5kaXIiIHx8IGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KKyAgIDs7CisgZXNhYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDY1NjJhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2MyArMCwwIEBACi1Gcm9tIDdjNTdmODRiZWY0YWFmZmU0MjA0YTdhMzU0NDExYWIzZWE3ZTUyNzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDozMTowNiArMDAwMAotU3ViamVjdDogW1BBVENIIDE1LzI4XSAneWVzJyB3aXRoaW4gdGhlIHBhdGggc2V0cyB3cm9uZyBjb25maWcgdmFyaWFibGVzCi0KLUl0IHNlZW1zIHRoYXQgdGhlICdBQ19FR1JFUF9DUFAoeWVzLi4uJyBleGFtcGxlIGlzIHF1aXRlIHBvcHVsYXIKLWJ1dCBiZWluZyBzdWNoIGEgc2hvcnQgd29yZCB0byBncmVwIGl0IGlzIGxpa2VseSB0byBwcm9kdWNlCi1mYWxzZS1wb3NpdGl2ZSBtYXRjaGVzIHdpdGggdGhlIHBhdGggaXQgaXMgY29uZmlndXJlZCBpbnRvLgotCi1UaGUgY2hhbmdlIGlzIHRvIHVzZSBhIG1vcmUgZWxhYm9yYXRlZCBzdHJpbmcgdG8gZ3JlcCBmb3IuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtsaWJjLWFscGhhQHNvdXJjZXdhcmUub3JnXQotCi1TaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBFc3F1aXZlbCA8YmVuamFtaW4uZXNxdWl2ZWxAbGludXguaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvYXJtL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvbWlwcy9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvbmlvczIvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlICAgICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjICAgICAgICAgICAgICB8IDQgKystLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZSAgICB8IDggKysrKy0tLS0KLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMgfCA4ICsrKystLS0tCi0gMTIgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZQotaW5kZXggNWJkMzU1YTY5MS4uM2JjNTUzN2JjMCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUKLUBAIC0xNDgsMTIgKzE0OCwxMiBAQCBlbHNlCi0gICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotICNpZmRlZiBfX0FBUkNINjRFQl9fCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgICAgICAgICAgICAgICAgICAgICBpc19hYXJjaDY0X2JlCi0gICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gCi0gX0FDRU9GCi0gaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rICAkRUdSRVAgImlzX2FhcmNoNjRfYmUiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X2FhcmNoNjRfYmU9eWVzCi0gZWxzZQotICAgbGliY19jdl9hYXJjaDY0X2JlPW5vCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMKLWluZGV4IDc4NTFkZDRkYWMuLjZlOTIzODE3MWYgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjCi0rKysgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjCi1AQCAtMTAsOCArMTAsOCBAQCBHTElCQ19QUk9WSURFUyBkbmwgU2VlIGFjbG9jYWwubTQgaW4gdGhlIHRvcCBsZXZlbCBzb3VyY2UgZGlyZWN0b3J5LgotICMgdGhlIGR5bmFtaWMgbGlua2VyIHZpYSAlaWZkZWYuCi0gQUNfQ0FDSEVfQ0hFQ0soW2ZvciBiaWcgZW5kaWFuXSwKLSAgIFtsaWJjX2N2X2FhcmNoNjRfYmVdLAotLSAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfX0FBUkNINjRFQl9fCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgW0FDX0VHUkVQX0NQUChpc19hYXJjaDY0X2JlLFsjaWZkZWYgX19BQVJDSDY0RUJfXwotKyAgICAgICAgICAgICAgICAgICAgICBpc19hYXJjaDY0X2JlCi0gICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICBdLCBsaWJjX2N2X2FhcmNoNjRfYmU9eWVzLCBsaWJjX2N2X2FhcmNoNjRfYmU9bm8pXSkKLSBpZiB0ZXN0ICRsaWJjX2N2X2FhcmNoNjRfYmUgPSB5ZXM7IHRoZW4KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9jb25maWd1cmUgYi9zeXNkZXBzL2FybS9jb25maWd1cmUKLWluZGV4IDQzMWU4NDNiMmIuLmUxNTI0NjExMzggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FybS9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZQotQEAgLTE1MSwxMiArMTUxLDEyIEBAIGVsc2UKLSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gI2lmZGVmIF9fQVJNX1BDU19WRlAKLS0JCSAgICAgIHllcwotKwkJICAgICAgdXNlX2FybV9wY3NfdmZwCi0gCQkgICAgICNlbmRpZgotIAotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJ1c2VfYXJtX3Bjc192ZnAiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X2FybV9wY3NfdmZwPXllcwotIGVsc2UKLSAgIGxpYmNfY3ZfYXJtX3Bjc192ZnA9bm8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9jb25maWd1cmUuYWMgYi9zeXNkZXBzL2FybS9jb25maWd1cmUuYWMKLWluZGV4IDkwY2RkNjljNzUuLjA1YTI2MmJhMDAgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FybS9jb25maWd1cmUuYWMKLSsrKyBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYwotQEAgLTE1LDggKzE1LDggQEAgQUNfREVGSU5FKFBJX1NUQVRJQ19BTkRfSElEREVOKQotICMgdGhlIGR5bmFtaWMgbGlua2VyIHZpYSAlaWZkZWYuCi0gQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSBBUk0gaGFyZC1mbG9hdCBBQkldLAotICAgW2xpYmNfY3ZfYXJtX3Bjc192ZnBdLAotLSAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfX0FSTV9QQ1NfVkZQCi0tCQkgICAgICB5ZXMKLSsgIFtBQ19FR1JFUF9DUFAodXNlX2FybV9wY3NfdmZwLFsjaWZkZWYgX19BUk1fUENTX1ZGUAotKwkJICAgICAgdXNlX2FybV9wY3NfdmZwCi0gCQkgICAgICNlbmRpZgotICAgXSwgbGliY19jdl9hcm1fcGNzX3ZmcD15ZXMsIGxpYmNfY3ZfYXJtX3Bjc192ZnA9bm8pXSkKLSBpZiB0ZXN0ICRsaWJjX2N2X2FybV9wY3NfdmZwID0geWVzOyB0aGVuCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZSBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUKLWluZGV4IDRlMTMyNDhjMDMuLmYxNGFmOTUyZDAgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL21pcHMvY29uZmlndXJlCi0rKysgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlCi1AQCAtMTQzLDExICsxNDMsMTEgQEAgZWxzZQotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSBkbmwKLSAjaWZkZWYgX19taXBzX25hbjIwMDgKLS15ZXMKLSt1c2VfbWlwc19uYW4yMDA4Ci0gI2VuZGlmCi0gX0FDRU9GCi0gaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rICAkRUdSRVAgInVzZV9taXBzX25hbjIwMDgiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjCi1pbmRleCBiY2JkYWZmZDlmLi5hZDMwNTdmNGNjIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYwotQEAgLTYsOSArNiw5IEBAIGRubCBwb3NpdGlvbiBpbmRlcGVuZGVudCB3YXkuCi0gZG5sIEFDX0RFRklORShQSV9TVEFUSUNfQU5EX0hJRERFTikKLSAKLSBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIDIwMDggTmFOIGVuY29kaW5nXSwKLS0gIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHllcywgW2RubAotKyAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAodXNlX21pcHNfbmFuMjAwOCwgW2RubAotICNpZmRlZiBfX21pcHNfbmFuMjAwOAotLXllcwotK3VzZV9taXBzX25hbjIwMDgKLSAjZW5kaWZdLCBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMsIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vKV0pCi0gaWYgdGVzdCB4JGxpYmNfY3ZfbWlwc19uYW4yMDA4ID0geHllczsgdGhlbgotICAgQUNfREVGSU5FKEhBVkVfTUlQU19OQU4yMDA4KQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUKLWluZGV4IDE0YzhhM2EwMTQuLmRkZTM4MTRlZjIgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUKLUBAIC0xNDIsMTIgKzE0MiwxMiBAQCBlbHNlCi0gICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotICNpZmRlZiBfX25pb3MyX2JpZ19lbmRpYW5fXwotLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgaXNfbmlvczJfYmUKLSAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAKLSBfQUNFT0YKLSBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSsgICRFR1JFUCAiaXNfbmlvczJfYmUiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X25pb3MyX2JlPXllcwotIGVsc2UKLSAgIGxpYmNfY3ZfbmlvczJfYmU9bm8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjCi1pbmRleCBmMDVmNDM4MDJiLi5kYzg2Mzk5MDJkIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMKLSsrKyBiL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjCi1AQCAtNCw4ICs0LDggQEAgR0xJQkNfUFJPVklERVMgZG5sIFNlZSBhY2xvY2FsLm00IGluIHRoZSB0b3AgbGV2ZWwgc291cmNlIGRpcmVjdG9yeS4KLSAjIE5pb3MgSUkgYmlnIGVuZGlhbiBpcyBub3QgeWV0IHN1cHBvcnRlZC4KLSBBQ19DQUNIRV9DSEVDSyhbZm9yIGJpZyBlbmRpYW5dLAotICAgW2xpYmNfY3ZfbmlvczJfYmVdLAotLSAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfX25pb3MyX2JpZ19lbmRpYW5fXwotLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKLSsgIFtBQ19FR1JFUF9DUFAoaXNfbmlvczJfYmUsWyNpZmRlZiBfX25pb3MyX2JpZ19lbmRpYW5fXwotKyAgICAgICAgICAgICAgICAgICAgICBpc19uaW9zMl9iZQotICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgXSwgbGliY19jdl9uaW9zMl9iZT15ZXMsIGxpYmNfY3ZfbmlvczJfYmU9bm8pXSkKLSBpZiB0ZXN0ICRsaWJjX2N2X25pb3MyX2JlID0geWVzOyB0aGVuCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZQotaW5kZXggMWVlN2Y0MWEzNi4uNzdlMzhiZWJkZSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZQotQEAgLTQxNCwxMSArNDE0LDExIEBAIGVsc2UKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gZG5sCi0gI2lmZGVmIF9fbWlwc19uYW4yMDA4Ci0teWVzCi0rdXNlX21pcHNfbmFuMjAwOAotICNlbmRpZgotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJ1c2VfbWlwc19uYW4yMDA4IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotICAgbGliY19jdl9taXBzX25hbjIwMDg9eWVzCi0gZWxzZQotICAgbGliY19jdl9taXBzX25hbjIwMDg9bm8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjCi1pbmRleCA5MTQ3YWE0NTgyLi43ODk4ZTI0NzM4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjCi1AQCAtMTA1LDkgKzEwNSw5IEBAIEFDX0NPTVBJTEVfSUZFTFNFKAotIExJQkNfQ09ORklHX1ZBUihbbWlwcy1tb2RlLXN3aXRjaF0sWyR7bGliY19taXBzX21vZGVfc3dpdGNofV0pCi0gCi0gQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSAyMDA4IE5hTiBlbmNvZGluZ10sCi0tICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh5ZXMsIFtkbmwKLSsgIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHVzZV9taXBzX25hbjIwMDgsIFtkbmwKLSAjaWZkZWYgX19taXBzX25hbjIwMDgKLS15ZXMKLSt1c2VfbWlwc19uYW4yMDA4Ci0gI2VuZGlmXSwgbGliY19jdl9taXBzX25hbjIwMDg9eWVzLCBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubyldKQotIAotIGxpYmNfbWlwc19uYW49Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlCi1pbmRleCBhZTdmMjU0ZGE0Li44NzQ1MTkwMDBiIDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKLUBAIC0xNTUsMTIgKzE1NSwxMiBAQCBlbHNlCi0gICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotICNpZiBfQ0FMTF9FTEYgPT0gMgotLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgdXNlX3BwY19lbGZ2Ml9hYmkKLSAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAKLSBfQUNFT0YKLSBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSsgICRFR1JFUCAidXNlX3BwY19lbGZ2Ml9hYmkiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT1ubwotQEAgLTE4OCwxMiArMTg4LDEyIEBAIGVsc2UKLSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gI2lmZGVmIF9DQUxMX0VMRgotLSAgICAgICAgICAgICAgICAgICAgICAgICB5ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgaXNfZGVmX2NhbGxfZWxmCi0gICAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAKLSBfQUNFT0YKLSBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSsgICRFR1JFUCAiaXNfZGVmX2NhbGxfZWxmIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotICAgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9eWVzCi0gZWxzZQotICAgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9bm8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMKLWluZGV4IGY5Y2JhNmUxNWQuLmIyMWY3MmYxZTQgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYwotQEAgLTYsOCArNiw4IEBAIExJQkNfU0xJQkRJUl9SVExERElSKFtsaWI2NF0sIFtsaWI2NF0pCi0gIyBEZWZpbmUgZGVmYXVsdC1hYmkgYWNjb3JkaW5nIHRvIGNvbXBpbGVyIGZsYWdzLgotIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgUG93ZXJQQzY0IEVMRnYyIEFCSV0sCi0gICBbbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmldLAotLSAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZiBfQ0FMTF9FTEYgPT0gMgotLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKLSsgIFtBQ19FR1JFUF9DUFAodXNlX3BwY19lbGZ2Ml9hYmksWyNpZiBfQ0FMTF9FTEYgPT0gMgotKyAgICAgICAgICAgICAgICAgICAgICB1c2VfcHBjX2VsZnYyX2FiaQotICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgXSwgbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmk9eWVzLCBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT1ubyldKQotIGlmIHRlc3QgJGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpID0geWVzOyB0aGVuCi1AQCAtMTksOCArMTksOCBAQCBlbHNlCi0gICAjIENvbXBpbGVyIHRoYXQgZG8gbm90IHN1cHBvcnQgRUxGdjIgQUJJIGRvZXMgbm90IGRlZmluZSBfQ0FMTF9FTEYKLSAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBkZWZpbmVzIF9DQUxMX0VMRl0sCi0gICAgIFtsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZl0sCi0tICAgIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWZkZWYgX0NBTExfRUxGCi0tICAgICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgICBbQUNfRUdSRVBfQ1BQKGlzX2RlZl9jYWxsX2VsZixbI2lmZGVmIF9DQUxMX0VMRgotKyAgICAgICAgICAgICAgICAgICAgICAgICBpc19kZWZfY2FsbF9lbGYKLSAgICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgICBdLCBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj15ZXMsIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPW5vKV0pCi0gICBpZiB0ZXN0ICRsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZiA9IG5vOyB0aGVuCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc0ZTdjMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIGMzMjMxMjU3NDQwMjBhMjlmNzllNTBkYzRkMDI0YjU1YzQ4MmVhZmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyODo0MSArMDAwMAorU3ViamVjdDogW1BBVENIXSBBZGQgdW51c2VkIGF0dHJpYnV0ZQorCitIZWxwcyBpbiBhdm9pZGluZyBnY2Mgd2FybmluZyB3aGVuIGhlYWRlciBpcyBpcyBpbmNsdWRlZCBpbgorYSBzb3VyY2UgZmlsZSB3aGljaCBkb2VzIG5vdCB1c2UgYm90aCBmdW5jdGlvbnMKKworICAgICAgICAqIGljb252L2djb252X2NoYXJzZXQuaCAoc3RyaXApOgorICAgICAgICBBZGQgdW51c2VkIGF0dHJpYnV0ZS4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBpY29udi9nY29udl9jaGFyc2V0LmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pY29udi9nY29udl9jaGFyc2V0LmggYi9pY29udi9nY29udl9jaGFyc2V0LmgKK2luZGV4IDM0OGFjYzA4OWIuLmZhOTI0NjVkODkgMTAwNjQ0CistLS0gYS9pY29udi9nY29udl9jaGFyc2V0LmgKKysrKyBiL2ljb252L2djb252X2NoYXJzZXQuaAorQEAgLTIxLDcgKzIxLDcgQEAKKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgCisgCistc3RhdGljIHZvaWQKKytzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKKyBzdHJpcCAoY2hhciAqd3AsIGNvbnN0IGNoYXIgKnMpCisgeworICAgaW50IHNsYXNoX2NvdW50ID0gMDsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkMWNmMzEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1Gcm9tIGE3NGYzMWVhOWVkZjEwNWYxYTZkYzI2NDk3YWEyYTEyYWU3MzY2NjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDozMzowMyArMDAwMAotU3ViamVjdDogW1BBVENIIDE2LzI4XSB0aW1lem9uZTogcmUtd3JpdHRlbiB0enNlbGVjdCBhcyBwb3NpeCBzaAotCi1UbyBhdm9pZCB0aGUgYmFzaCBkZXBlbmRlbmN5LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHRpbWV6b25lL01ha2VmaWxlICAgICB8IDIgKy0KLSB0aW1lem9uZS90enNlbGVjdC5rc2ggfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90aW1lem9uZS9NYWtlZmlsZSBiL3RpbWV6b25lL01ha2VmaWxlCi1pbmRleCA0OTNkZWNhNzkwLi4zNmU1NTllMTZjIDEwMDY0NAotLS0tIGEvdGltZXpvbmUvTWFrZWZpbGUKLSsrKyBiL3RpbWV6b25lL01ha2VmaWxlCi1AQCAtMTIyLDcgKzEyMiw3IEBAICQodGVzdGRhdGEpL1hUJTogdGVzdGRhdGEvWFQlCi0gCWNwICQ8ICRACi0gCi0gJChvYmpwZngpdHpzZWxlY3Q6IHR6c2VsZWN0LmtzaCAkKGNvbW1vbi1vYmpwZngpY29uZmlnLm1ha2UKLS0Jc2VkIC1lICdzfC9iaW4vYmFzaHwkKEJBU0gpfCcgXAotKwlzZWQgLWUgJ3N8L2Jpbi9iYXNofC9iaW4vc2h8JyBcCi0gCSAgICAtZSAnc3xUWkRJUj1bXn1dKnxUWkRJUj0kKHpvbmVkaXIpfCcgXAotIAkgICAgLWUgJy9UWlZFUlNJT049L3N8c2VlX01ha2VmaWxlfCIkKHZlcnNpb24pInwnIFwKLSAJICAgIC1lICcvUEtHVkVSU0lPTj0vc3w9Lip8PSIkKFBLR1ZFUlNJT04pInwnIFwKLWRpZmYgLS1naXQgYS90aW1lem9uZS90enNlbGVjdC5rc2ggYi90aW1lem9uZS90enNlbGVjdC5rc2gKLWluZGV4IDE4ZmNlMjdlMjQuLjcwNzQ1ZjlkMzYgMTAwNzU1Ci0tLS0gYS90aW1lem9uZS90enNlbGVjdC5rc2gKLSsrKyBiL3RpbWV6b25lL3R6c2VsZWN0LmtzaAotQEAgLTM0LDcgKzM0LDcgQEAgUkVQT1JUX0JVR1NfVE89dHpAaWFuYS5vcmcKLSAKLSAjIFNwZWNpZnkgZGVmYXVsdCB2YWx1ZXMgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcyBpZiB0aGV5IGFyZSB1bnNldC4KLSA6ICR7QVdLPWF3a30KLS06ICR7VFpESVI9YHB3ZGB9Ci0rOiAke1RaRElSPSQocHdkKX0KLSAKLSAjIE91dHB1dCBvbmUgYXJndW1lbnQgYXMtaXMgdG8gc3RhbmRhcmQgb3V0cHV0LgotICMgU2FmZXIgdGhhbiAnZWNobycsIHdoaWNoIGNhbiBtaXNoYW5kbGUgJ1wnIG9yIGxlYWRpbmcgJy0nLgotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTctUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRmOGExMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTctUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLUZyb20gOTU4ODJiOTg2NGZmMjBlNDc2ZDE1YzY4MjVjODM3MjhlYjk5NTk3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE0OjMzOjAyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTcvMjhdIFJlbW92ZSBiYXNoIGRlcGVuZGVuY3kgZm9yIG5zY2QgaW5pdCBzY3JpcHQKLQotVGhlIG5zY2QgaW5pdCBzY3JpcHQgdXNlcyAjISAvYmluL2Jhc2ggYnV0IG9ubHkgcmVhbGx5IHVzZXMgb25lIGJhc2hpc20KLSh0cmFuc2xhdGVkIHN0cmluZ3MpLCBzbyByZW1vdmUgdGhlbSBhbmQgc3dpdGNoIHRoZSBzaGVsbCB0byAjIS9iaW4vc2guCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIG5zY2QvbnNjZC5pbml0IHwgMTQgKysrKysrKy0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbnNjZC9uc2NkLmluaXQgYi9uc2NkL25zY2QuaW5pdAotaW5kZXggYTg4MmRhN2Q4Yi4uYjAyOTg2ZWMxNSAxMDA2NDQKLS0tLSBhL25zY2QvbnNjZC5pbml0Ci0rKysgYi9uc2NkL25zY2QuaW5pdAotQEAgLTEsNCArMSw0IEBACi0tIyEvYmluL2Jhc2gKLSsjIS9iaW4vc2gKLSAjCi0gIyBuc2NkOgkJU3RhcnRzIHRoZSBOYW1lIFN3aXRjaCBDYWNoZSBEYWVtb24KLSAjCi1AQCAtNDksNyArNDksNyBAQCBwcm9nPW5zY2QKLSBzdGFydCAoKSB7Ci0gICAgIFsgLWQgL3Zhci9ydW4vbnNjZCBdIHx8IG1rZGlyIC92YXIvcnVuL25zY2QKLSAgICAgWyAtZCAvdmFyL2RiL25zY2QgXSB8fCBta2RpciAvdmFyL2RiL25zY2QKLS0gICAgZWNobyAtbiAkIlN0YXJ0aW5nICRwcm9nOiAiCi0rICAgIGVjaG8gLW4gIlN0YXJ0aW5nICRwcm9nOiAiCi0gICAgIGRhZW1vbiAvdXNyL3NiaW4vbnNjZAotICAgICBSRVRWQUw9JD8KLSAgICAgZWNobwotQEAgLTU4LDcgKzU4LDcgQEAgc3RhcnQgKCkgewotIH0KLSAKLSBzdG9wICgpIHsKLS0gICAgZWNobyAtbiAkIlN0b3BwaW5nICRwcm9nOiAiCi0rICAgIGVjaG8gLW4gIlN0b3BwaW5nICRwcm9nOiAiCi0gICAgIC91c3Ivc2Jpbi9uc2NkIC1LCi0gICAgIFJFVFZBTD0kPwotICAgICBpZiBbICRSRVRWQUwgLWVxIDAgXTsgdGhlbgotQEAgLTY3LDkgKzY3LDkgQEAgc3RvcCAoKSB7Ci0gCSMgYSBub24tcHJpdmlsZWdlZCB1c2VyCi0gCXJtIC1mIC92YXIvcnVuL25zY2QvbnNjZC5waWQKLSAJcm0gLWYgL3Zhci9ydW4vbnNjZC9zb2NrZXQKLS0gICAgICAgCXN1Y2Nlc3MgJCIkcHJvZyBzaHV0ZG93biIKLSsJc3VjY2VzcyAiJHByb2cgc2h1dGRvd24iCi0gICAgIGVsc2UKLS0gICAgICAgCWZhaWx1cmUgJCIkcHJvZyBzaHV0ZG93biIKLSsJZmFpbHVyZSAiJHByb2cgc2h1dGRvd24iCi0gICAgIGZpCi0gICAgIGVjaG8KLSAgICAgcmV0dXJuICRSRVRWQUwKLUBAIC0xMDMsMTMgKzEwMywxMyBAQCBjYXNlICIkMSIgaW4KLSAJUkVUVkFMPSQ/Ci0gCTs7Ci0gICAgIGZvcmNlLXJlbG9hZCB8IHJlbG9hZCkKLS0gICAgCWVjaG8gLW4gJCJSZWxvYWRpbmcgJHByb2c6ICIKLSsJZWNobyAtbiAiUmVsb2FkaW5nICRwcm9nOiAiCi0gCWtpbGxwcm9jIC91c3Ivc2Jpbi9uc2NkIC1IVVAKLSAJUkVUVkFMPSQ/Ci0gCWVjaG8KLSAJOzsKLSAgICAgKikKLS0JZWNobyAkIlVzYWdlOiAkMCB7c3RhcnR8c3RvcHxzdGF0dXN8cmVzdGFydHxyZWxvYWR8Y29uZHJlc3RhcnR9IgotKwllY2hvICJVc2FnZTogJDAge3N0YXJ0fHN0b3B8c3RhdHVzfHJlc3RhcnR8cmVsb2FkfGNvbmRyZXN0YXJ0fSIKLSAJUkVUVkFMPTEKLSAJOzsKLSBlc2FjCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTcteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTcteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDkwODlhZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaApAQCAtMCwwICsxLDI2MCBAQAorRnJvbSBjNDIxY2Q3ZTg4NTQ5N2E5OTE3OWI5ODJkYzRhMjdlODQwNWY4ODU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MzE6MDYgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gJ3llcycgd2l0aGluIHRoZSBwYXRoIHNldHMgd3JvbmcgY29uZmlnIHZhcmlhYmxlcworCitJdCBzZWVtcyB0aGF0IHRoZSAnQUNfRUdSRVBfQ1BQKHllcy4uLicgZXhhbXBsZSBpcyBxdWl0ZSBwb3B1bGFyCitidXQgYmVpbmcgc3VjaCBhIHNob3J0IHdvcmQgdG8gZ3JlcCBpdCBpcyBsaWtlbHkgdG8gcHJvZHVjZQorZmFsc2UtcG9zaXRpdmUgbWF0Y2hlcyB3aXRoIHRoZSBwYXRoIGl0IGlzIGNvbmZpZ3VyZWQgaW50by4KKworVGhlIGNoYW5nZSBpcyB0byB1c2UgYSBtb3JlIGVsYWJvcmF0ZWQgc3RyaW5nIHRvIGdyZXAgZm9yLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbGliYy1hbHBoYUBzb3VyY2V3YXJlLm9yZ10KKworU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gRXNxdWl2ZWwgPGJlbmphbWluLmVzcXVpdmVsQGxpbnV4LmludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL2FybS9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL2FybS9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL21pcHMvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL21pcHMvY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL25pb3MyL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgfCA0ICsrLS0KKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUgICAgfCA4ICsrKystLS0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjIHwgOCArKysrLS0tLQorIDEyIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZSBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUKK2luZGV4IDViZDM1NWE2OTEuLjNiYzU1MzdiYzAgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlCisrKysgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlCitAQCAtMTQ4LDEyICsxNDgsMTIgQEAgZWxzZQorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAjaWZkZWYgX19BQVJDSDY0RUJfXworLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKKysgICAgICAgICAgICAgICAgICAgICAgaXNfYWFyY2g2NF9iZQorICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorIAorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJpc19hYXJjaDY0X2JlIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICAgbGliY19jdl9hYXJjaDY0X2JlPXllcworIGVsc2UKKyAgIGxpYmNfY3ZfYWFyY2g2NF9iZT1ubworZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjCitpbmRleCA3ODUxZGQ0ZGFjLi42ZTkyMzgxNzFmIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYworQEAgLTEwLDggKzEwLDggQEAgR0xJQkNfUFJPVklERVMgZG5sIFNlZSBhY2xvY2FsLm00IGluIHRoZSB0b3AgbGV2ZWwgc291cmNlIGRpcmVjdG9yeS4KKyAjIHRoZSBkeW5hbWljIGxpbmtlciB2aWEgJWlmZGVmLgorIEFDX0NBQ0hFX0NIRUNLKFtmb3IgYmlnIGVuZGlhbl0sCisgICBbbGliY19jdl9hYXJjaDY0X2JlXSwKKy0gIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWZkZWYgX19BQVJDSDY0RUJfXworLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKKysgIFtBQ19FR1JFUF9DUFAoaXNfYWFyY2g2NF9iZSxbI2lmZGVmIF9fQUFSQ0g2NEVCX18KKysgICAgICAgICAgICAgICAgICAgICAgaXNfYWFyY2g2NF9iZQorICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgXSwgbGliY19jdl9hYXJjaDY0X2JlPXllcywgbGliY19jdl9hYXJjaDY0X2JlPW5vKV0pCisgaWYgdGVzdCAkbGliY19jdl9hYXJjaDY0X2JlID0geWVzOyB0aGVuCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vY29uZmlndXJlIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlCitpbmRleCA0MzFlODQzYjJiLi5lMTUyNDYxMTM4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hcm0vY29uZmlndXJlCisrKysgYi9zeXNkZXBzL2FybS9jb25maWd1cmUKK0BAIC0xNTEsMTIgKzE1MSwxMiBAQCBlbHNlCisgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworICNpZmRlZiBfX0FSTV9QQ1NfVkZQCistCQkgICAgICB5ZXMKKysJCSAgICAgIHVzZV9hcm1fcGNzX3ZmcAorIAkJICAgICAjZW5kaWYKKyAKKyBfQUNFT0YKKyBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKysgICRFR1JFUCAidXNlX2FybV9wY3NfdmZwIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICAgbGliY19jdl9hcm1fcGNzX3ZmcD15ZXMKKyBlbHNlCisgICBsaWJjX2N2X2FybV9wY3NfdmZwPW5vCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjCitpbmRleCA5MGNkZDY5Yzc1Li4wNWEyNjJiYTAwIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL2FybS9jb25maWd1cmUuYWMKK0BAIC0xNSw4ICsxNSw4IEBAIEFDX0RFRklORShQSV9TVEFUSUNfQU5EX0hJRERFTikKKyAjIHRoZSBkeW5hbWljIGxpbmtlciB2aWEgJWlmZGVmLgorIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgQVJNIGhhcmQtZmxvYXQgQUJJXSwKKyAgIFtsaWJjX2N2X2FybV9wY3NfdmZwXSwKKy0gIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWZkZWYgX19BUk1fUENTX1ZGUAorLQkJICAgICAgeWVzCisrICBbQUNfRUdSRVBfQ1BQKHVzZV9hcm1fcGNzX3ZmcCxbI2lmZGVmIF9fQVJNX1BDU19WRlAKKysJCSAgICAgIHVzZV9hcm1fcGNzX3ZmcAorIAkJICAgICAjZW5kaWYKKyAgIF0sIGxpYmNfY3ZfYXJtX3Bjc192ZnA9eWVzLCBsaWJjX2N2X2FybV9wY3NfdmZwPW5vKV0pCisgaWYgdGVzdCAkbGliY19jdl9hcm1fcGNzX3ZmcCA9IHllczsgdGhlbgorZGlmZiAtLWdpdCBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlCitpbmRleCA0ZTEzMjQ4YzAzLi5mMTRhZjk1MmQwIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZQorQEAgLTE0MywxMSArMTQzLDExIEBAIGVsc2UKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgZG5sCisgI2lmZGVmIF9fbWlwc19uYW4yMDA4CisteWVzCisrdXNlX21pcHNfbmFuMjAwOAorICNlbmRpZgorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJ1c2VfbWlwc19uYW4yMDA4IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICAgbGliY19jdl9taXBzX25hbjIwMDg9eWVzCisgZWxzZQorICAgbGliY19jdl9taXBzX25hbjIwMDg9bm8KK2RpZmYgLS1naXQgYS9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYworaW5kZXggYmNiZGFmZmQ5Zi4uYWQzMDU3ZjRjYyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMKKysrKyBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMKK0BAIC02LDkgKzYsOSBAQCBkbmwgcG9zaXRpb24gaW5kZXBlbmRlbnQgd2F5LgorIGRubCBBQ19ERUZJTkUoUElfU1RBVElDX0FORF9ISURERU4pCisgCisgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSAyMDA4IE5hTiBlbmNvZGluZ10sCistICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh5ZXMsIFtkbmwKKysgIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHVzZV9taXBzX25hbjIwMDgsIFtkbmwKKyAjaWZkZWYgX19taXBzX25hbjIwMDgKKy15ZXMKKyt1c2VfbWlwc19uYW4yMDA4CisgI2VuZGlmXSwgbGliY19jdl9taXBzX25hbjIwMDg9eWVzLCBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubyldKQorIGlmIHRlc3QgeCRsaWJjX2N2X21pcHNfbmFuMjAwOCA9IHh5ZXM7IHRoZW4KKyAgIEFDX0RFRklORShIQVZFX01JUFNfTkFOMjAwOCkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZSBiL3N5c2RlcHMvbmlvczIvY29uZmlndXJlCitpbmRleCAxNGM4YTNhMDE0Li5kZGUzODE0ZWYyIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUKKysrKyBiL3N5c2RlcHMvbmlvczIvY29uZmlndXJlCitAQCAtMTQyLDEyICsxNDIsMTIgQEAgZWxzZQorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAjaWZkZWYgX19uaW9zMl9iaWdfZW5kaWFuX18KKy0gICAgICAgICAgICAgICAgICAgICAgeWVzCisrICAgICAgICAgICAgICAgICAgICAgIGlzX25pb3MyX2JlCisgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgCisgX0FDRU9GCisgaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrICAkRUdSRVAgImlzX25pb3MyX2JlIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICAgbGliY19jdl9uaW9zMl9iZT15ZXMKKyBlbHNlCisgICBsaWJjX2N2X25pb3MyX2JlPW5vCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYworaW5kZXggZjA1ZjQzODAyYi4uZGM4NjM5OTAyZCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYworQEAgLTQsOCArNCw4IEBAIEdMSUJDX1BST1ZJREVTIGRubCBTZWUgYWNsb2NhbC5tNCBpbiB0aGUgdG9wIGxldmVsIHNvdXJjZSBkaXJlY3RvcnkuCisgIyBOaW9zIElJIGJpZyBlbmRpYW4gaXMgbm90IHlldCBzdXBwb3J0ZWQuCisgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBiaWcgZW5kaWFuXSwKKyAgIFtsaWJjX2N2X25pb3MyX2JlXSwKKy0gIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWZkZWYgX19uaW9zMl9iaWdfZW5kaWFuX18KKy0gICAgICAgICAgICAgICAgICAgICAgeWVzCisrICBbQUNfRUdSRVBfQ1BQKGlzX25pb3MyX2JlLFsjaWZkZWYgX19uaW9zMl9iaWdfZW5kaWFuX18KKysgICAgICAgICAgICAgICAgICAgICAgaXNfbmlvczJfYmUKKyAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgIF0sIGxpYmNfY3ZfbmlvczJfYmU9eWVzLCBsaWJjX2N2X25pb3MyX2JlPW5vKV0pCisgaWYgdGVzdCAkbGliY19jdl9uaW9zMl9iZSA9IHllczsgdGhlbgorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKK2luZGV4IDI1Zjk4ZTBjN2IuLmU5NWJmYWUzNTkgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKK0BAIC00MTQsMTEgKzQxNCwxMSBAQCBlbHNlCisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIGRubAorICNpZmRlZiBfX21pcHNfbmFuMjAwOAorLXllcworK3VzZV9taXBzX25hbjIwMDgKKyAjZW5kaWYKKyBfQUNFT0YKKyBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKysgICRFR1JFUCAidXNlX21pcHNfbmFuMjAwOCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcworIGVsc2UKKyAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYworaW5kZXggM2RiMWIzMmIwOC4uZjhjZDM3NWViYyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYworQEAgLTEwNSw5ICsxMDUsOSBAQCBBQ19DT01QSUxFX0lGRUxTRSgKKyBMSUJDX0NPTkZJR19WQVIoW21pcHMtbW9kZS1zd2l0Y2hdLFske2xpYmNfbWlwc19tb2RlX3N3aXRjaH1dKQorIAorIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgMjAwOCBOYU4gZW5jb2RpbmddLAorLSAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAoeWVzLCBbZG5sCisrICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh1c2VfbWlwc19uYW4yMDA4LCBbZG5sCisgI2lmZGVmIF9fbWlwc19uYW4yMDA4CisteWVzCisrdXNlX21pcHNfbmFuMjAwOAorICNlbmRpZl0sIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcywgbGliY19jdl9taXBzX25hbjIwMDg9bm8pXSkKKyAKKyBsaWJjX21pcHNfbmFuPQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZSBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZQoraW5kZXggYWU3ZjI1NGRhNC4uODc0NTE5MDAwYiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlCitAQCAtMTU1LDEyICsxNTUsMTIgQEAgZWxzZQorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAjaWYgX0NBTExfRUxGID09IDIKKy0gICAgICAgICAgICAgICAgICAgICAgeWVzCisrICAgICAgICAgICAgICAgICAgICAgIHVzZV9wcGNfZWxmdjJfYWJpCisgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgCisgX0FDRU9GCisgaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrICAkRUdSRVAgInVzZV9wcGNfZWxmdjJfYWJpIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICAgbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmk9eWVzCisgZWxzZQorICAgbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmk9bm8KK0BAIC0xODgsMTIgKzE4OCwxMiBAQCBlbHNlCisgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworICNpZmRlZiBfQ0FMTF9FTEYKKy0gICAgICAgICAgICAgICAgICAgICAgICAgeWVzCisrICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2RlZl9jYWxsX2VsZgorICAgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgCisgX0FDRU9GCisgaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrICAkRUdSRVAgImlzX2RlZl9jYWxsX2VsZiIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPXllcworIGVsc2UKKyAgIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPW5vCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjCitpbmRleCBmOWNiYTZlMTVkLi5iMjFmNzJmMWU0IDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMKK0BAIC02LDggKzYsOCBAQCBMSUJDX1NMSUJESVJfUlRMRERJUihbbGliNjRdLCBbbGliNjRdKQorICMgRGVmaW5lIGRlZmF1bHQtYWJpIGFjY29yZGluZyB0byBjb21waWxlciBmbGFncy4KKyBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIFBvd2VyUEM2NCBFTEZ2MiBBQkldLAorICAgW2xpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpXSwKKy0gIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWYgX0NBTExfRUxGID09IDIKKy0gICAgICAgICAgICAgICAgICAgICAgeWVzCisrICBbQUNfRUdSRVBfQ1BQKHVzZV9wcGNfZWxmdjJfYWJpLFsjaWYgX0NBTExfRUxGID09IDIKKysgICAgICAgICAgICAgICAgICAgICAgdXNlX3BwY19lbGZ2Ml9hYmkKKyAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgIF0sIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPXllcywgbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmk9bm8pXSkKKyBpZiB0ZXN0ICRsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaSA9IHllczsgdGhlbgorQEAgLTE5LDggKzE5LDggQEAgZWxzZQorICAgIyBDb21waWxlciB0aGF0IGRvIG5vdCBzdXBwb3J0IEVMRnYyIEFCSSBkb2VzIG5vdCBkZWZpbmUgX0NBTExfRUxGCisgICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgZGVmaW5lcyBfQ0FMTF9FTEZdLAorICAgICBbbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGZdLAorLSAgICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9DQUxMX0VMRgorLSAgICAgICAgICAgICAgICAgICAgICAgICB5ZXMKKysgICAgW0FDX0VHUkVQX0NQUChpc19kZWZfY2FsbF9lbGYsWyNpZmRlZiBfQ0FMTF9FTEYKKysgICAgICAgICAgICAgICAgICAgICAgICAgaXNfZGVmX2NhbGxfZWxmCisgICAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgXSwgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9eWVzLCBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj1ubyldKQorICAgaWYgdGVzdCAkbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGYgPSBubzsgdGhlbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjVlZmM0My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxOSArMCwwIEBACi1Gcm9tIDZiNjAzZDI1Y2M1NzIzYmE2MzFkZmM2MGI1NDQ3NzRkYjExNDdkODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDo0Mjo1OCArMDAwMAotU3ViamVjdDogW1BBVENIIDE4LzI4XSBlZ2xpYmM6IENyb3NzIGJ1aWxkaW5nIGFuZCB0ZXN0aW5nIGluc3RydWN0aW9ucwotCi1Qb3J0ZWQgZnJvbSBlZ2xpYmMKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gR0xJQkMuY3Jvc3MtYnVpbGRpbmcgfCAzODMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIEdMSUJDLmNyb3NzLXRlc3RpbmcgIHwgMjA1ICsrKysrKysrKysrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA1ODggaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBHTElCQy5jcm9zcy1idWlsZGluZwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBHTElCQy5jcm9zcy10ZXN0aW5nCi0KLWRpZmYgLS1naXQgYS9HTElCQy5jcm9zcy1idWlsZGluZyBiL0dMSUJDLmNyb3NzLWJ1aWxkaW5nCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uZTZlMGRhMWFhZgotLS0tIC9kZXYvbnVsbAotKysrIGIvR0xJQkMuY3Jvc3MtYnVpbGRpbmcKLUBAIC0wLDAgKzEsMzgzIEBACi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gbW9kZTogdGV4dCAtKi0KLSsKLSsgICAgICAgICAgICAgICAgICAgICAgICBDcm9zcy1Db21waWxpbmcgR0xJQkMKLSsgICAgICAgICAgICAgICAgICBKaW0gQmxhbmR5IDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+Ci0rCi0rCi0rSW50cm9kdWN0aW9uCi0rCi0rTW9zdCBHTlUgdG9vbHMgaGF2ZSBhIHNpbXBsZSBidWlsZCBwcm9jZWR1cmU6IHlvdSBydW4gdGhlaXIKLSsnY29uZmlndXJlJyBzY3JpcHQsIGFuZCB0aGVuIHlvdSBydW4gJ21ha2UnLiAgVW5mb3J0dW5hdGVseSwgdGhlCi0rcHJvY2VzcyBvZiBjcm9zcy1jb21waWxpbmcgdGhlIEdOVSBDIGxpYnJhcnkgaXMgcXVpdGUgYSBiaXQgbW9yZQotK2ludm9sdmVkOgotKwotKzEpIEJ1aWxkIGEgY3Jvc3MtY29tcGlsZXIsIHdpdGggY2VydGFpbiBmYWNpbGl0aWVzIGRpc2FibGVkLgotKwotKzIpIENvbmZpZ3VyZSB0aGUgQyBsaWJyYXJ5IHVzaW5nIHRoZSBjb21waWxlciB5b3UgYnVpbHQgaW4gc3RlcCAxKS4KLSsgICBCdWlsZCBhIGZldyBvZiB0aGUgQyBydW4tdGltZSBvYmplY3QgZmlsZXMsIGJ1dCBub3QgdGhlIHJlc3Qgb2YgdGhlCi0rICAgbGlicmFyeS4gIEluc3RhbGwgdGhlIGxpYnJhcnkncyBoZWFkZXIgZmlsZXMgYW5kIHRoZSBydW4tdGltZQotKyAgIG9iamVjdCBmaWxlcywgYW5kIGNyZWF0ZSBhIGR1bW15IGxpYmMuc28uCi0rCi0rMykgQnVpbGQgYSBzZWNvbmQgY3Jvc3MtY29tcGlsZXIsIHVzaW5nIHRoZSBoZWFkZXIgZmlsZXMgYW5kIG9iamVjdAotKyAgIGZpbGVzIHlvdSBpbnN0YWxsZWQgaW4gc3RlcCAyLgotKwotKzQpIENvbmZpZ3VyZSwgYnVpbGQsIGFuZCBpbnN0YWxsIGEgZnJlc2ggQyBsaWJyYXJ5LCB1c2luZyB0aGUgY29tcGlsZXIKLSsgICBidWlsdCBpbiBzdGVwIDMuCi0rCi0rNSkgQnVpbGQgYSB0aGlyZCBjcm9zcy1jb21waWxlciwgYmFzZWQgb24gdGhlIEMgbGlicmFyeSBidWlsdCBpbiBzdGVwIDQuCi0rCi0rVGhlIHJlYXNvbiBmb3IgdGhpcyBjb21wbGV4aXR5IGlzIHRoYXQsIGFsdGhvdWdoIEdDQyBhbmQgdGhlIEdOVSBDCi0rbGlicmFyeSBhcmUgZGlzdHJpYnV0ZWQgc2VwYXJhdGVseSwgdGhleSBhcmUgbm90IGFjdHVhbGx5IGluZGVwZW5kZW50Ci0rb2YgZWFjaCBvdGhlcjogR0NDIHJlcXVpcmVzIHRoZSBDIGxpYnJhcnkncyBoZWFkZXJzIGFuZCBzb21lIG9iamVjdAotK2ZpbGVzIHRvIGNvbXBpbGUgaXRzIG93biBsaWJyYXJpZXMsIHdoaWxlIHRoZSBDIGxpYnJhcnkgZGVwZW5kcyBvbgotK0dDQydzIGxpYnJhcmllcy4gIEdMSUJDIGluY2x1ZGVzIGZlYXR1cmVzIGFuZCBidWcgZml4ZXMgdG8gdGhlIHN0b2NrCi0rR05VIEMgbGlicmFyeSB0aGF0IHNpbXBsaWZ5IHRoaXMgcHJvY2VzcywgYnV0IHRoZSBmdW5kYW1lbnRhbAotK2ludGVyZGVwZW5kZW5jeSBzdGFuZHMuCi0rCi0rSW4gdGhpcyBkb2N1bWVudCwgd2UgZXhwbGFpbiBob3cgdG8gY3Jvc3MtY29tcGlsZSBhbiBHTElCQy9HQ0MgcGFpcgotK2Zyb20gc291cmNlLiAgT3VyIGludGVuZGVkIGF1ZGllbmNlIGlzIGRldmVsb3BlcnMgd2hvIGFyZSBhbHJlYWR5Ci0rZmFtaWxpYXIgd2l0aCB0aGUgR05VIHRvb2xjaGFpbiBhbmQgY29tZm9ydGFibGUgd29ya2luZyB3aXRoCi0rY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbHMuICBXaGlsZSB3ZSBkbyBwcmVzZW50IGEgd29ya2VkIGV4YW1wbGUgdG8KLSthY2NvbXBhbnkgdGhlIGV4cGxhbmF0aW9uLCBmb3IgY2xhcml0eSdzIHNha2Ugd2UgZG8gbm90IGNvdmVyIG1hbnkgb2YKLSt0aGUgb3B0aW9ucyBhdmFpbGFibGUgdG8gY3Jvc3MtdG9vbGNoYWluIHVzZXJzLgotKwotKwotK1ByZXBhcmF0aW9uCi0rCi0rR0xJQkMgcmVxdWlyZXMgcmVjZW50IHZlcnNpb25zIG9mIHRoZSBHTlUgYmludXRpbHMsIEdDQywgYW5kIHRoZQotK0xpbnV4IGtlcm5lbC4gIFRoZSB3ZWIgcGFnZSA8aHR0cDovL3d3dy5lZ2xpYmMub3JnL3ByZXJlcXVpc2l0ZXM+Ci0rZG9jdW1lbnRzIHRoZSBjdXJyZW50IHJlcXVpcmVtZW50cywgYW5kIGxpc3RzIHBhdGNoZXMgbmVlZGVkIGZvcgotK2NlcnRhaW4gdGFyZ2V0IGFyY2hpdGVjdHVyZXMuICBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoZXNlIGJ1aWxkCi0raW5zdHJ1Y3Rpb25zIGhhdmUgYmVlbiB0ZXN0ZWQgd2l0aCBiaW51dGlscyAyLjIyLjUxLCBHQ0MgNC42LjIsCi0rYW5kIExpbnV4IDMuMS4KLSsKLStGaXJzdCwgbGV0J3Mgc2V0IHNvbWUgdmFyaWFibGVzLCB0byBzaW1wbGlmeSBsYXRlciBjb21tYW5kcy4gIFdlJ2xsCi0rYnVpbGQgR0xJQkMgYW5kIEdDQyBmb3IgYW4gQVJNIHRhcmdldCwga25vd24gdG8gdGhlIExpbnV4IGtlcm5lbAotK2FzICdhcm0nLCBhbmQgd2UnbGwgZG8gdGhlIGJ1aWxkIG9uIGFuIEludGVsIHg4Nl82NCBMaW51eCBib3g6Ci0rCi0rICAgICQgYnVpbGQ9eDg2XzY0LXBjLWxpbnV4LWdudQotKyAgICAkIGhvc3Q9JGJ1aWxkCi0rICAgICQgdGFyZ2V0PWFybS1ub25lLWxpbnV4LWdudWVhYmkKLSsgICAgJCBsaW51eF9hcmNoPWFybQotKwotK1dlJ3JlIHVzaW5nIHRoZSBhZm9yZW1lbnRpb25lZCB2ZXJzaW9ucyBvZiBCaW51dGlscywgR0NDLCBhbmQgTGludXg6Ci0rCi0rICAgICQgYmludXRpbHN2PWJpbnV0aWxzLTIuMjIuNTEKLSsgICAgJCBnY2N2PWdjYy00LjYuMgotKyAgICAkIGxpbnV4dj1saW51eC0zLjEKLSsKLStXZSdyZSBjYXJyeWluZyBvdXQgdGhlIGVudGlyZSBwcm9jZXNzIHVuZGVyICd+L2Nyb3NzLWJ1aWxkJywgd2hpY2gKLStjb250YWlucyB1bnBhY2tlZCBzb3VyY2UgdHJlZXMgZm9yIGJpbnV0aWxzLCBnY2MsIGFuZCBsaW51eCBrZXJuZWwsCi0rYWxvbmcgd2l0aCBHTElCQyBzdm4gdHJ1bmsgKHdoaWNoIGNhbiBiZSBjaGVja2VkLW91dCB3aXRoCi0rJ3N2biBjbyBodHRwOi8vd3d3LmVnbGliYy5vcmcvc3ZuL3RydW5rIGVnbGliYycpOgotKwotKyAgICAkIHRvcD0kSE9NRS9jcm9zcy1idWlsZC8kdGFyZ2V0Ci0rICAgICQgc3JjPSRIT01FL2Nyb3NzLWJ1aWxkL3NyYwotKyAgICAkIGxzICRzcmMKLSsgICAgYmludXRpbHMtMi4yMi41MSAgZ2xpYmMgIGdjYy00LjYuMiAgbGludXgtMy4xCi0rCi0rV2UncmUgZ29pbmcgdG8gcGxhY2Ugb3VyIGJ1aWxkIGRpcmVjdG9yaWVzIGluIGEgc3ViZGlyZWN0b3J5ICdvYmonLAotK3dlJ2xsIGluc3RhbGwgdGhlIGNyb3NzLWRldmVsb3BtZW50IHRvb2xjaGFpbiBpbiAndG9vbHMnLCBhbmQgd2UnbGwKLStwbGFjZSBvdXIgc3lzcm9vdCAoY29udGFpbmluZyBmaWxlcyB0byBiZSBpbnN0YWxsZWQgb24gdGhlIHRhcmdldAotK3N5c3RlbSkgaW4gJ3N5c3Jvb3QnOgotKwotKyAgICAkIG9iaj0kdG9wL29iagotKyAgICAkIHRvb2xzPSR0b3AvdG9vbHMKLSsgICAgJCBzeXNyb290PSR0b3Avc3lzcm9vdAotKwotKwotK0JpbnV0aWxzCi0rCi0rQ29uZmlndXJpbmcgYW5kIGJ1aWxkaW5nIGJpbnV0aWxzIGZvciB0aGUgdGFyZ2V0IGlzIHN0cmFpZ2h0Zm9yd2FyZDoKLSsKLSsgICAgJCBta2RpciAtcCAkb2JqL2JpbnV0aWxzCi0rICAgICQgY2QgJG9iai9iaW51dGlscwotKyAgICAkICRzcmMvJGJpbnV0aWxzdi9jb25maWd1cmUgXAotKyAgICA+ICAgICAtLXRhcmdldD0kdGFyZ2V0IFwKLSsgICAgPiAgICAgLS1wcmVmaXg9JHRvb2xzIFwKLSsgICAgPiAgICAgLS13aXRoLXN5c3Jvb3Q9JHN5c3Jvb3QKLSsgICAgJCBtYWtlCi0rICAgICQgbWFrZSBpbnN0YWxsCi0rCi0rCi0rVGhlIEZpcnN0IEdDQwotKwotK0ZvciBvdXIgd29yaywgd2UgbmVlZCBhIGNyb3NzLWNvbXBpbGVyIHRhcmdldGluZyBhbiBBUk0gTGludXgKLStzeXN0ZW0uICBIb3dldmVyLCB0aGF0IGNvbmZpZ3VyYXRpb24gaW5jbHVkZXMgdGhlIHNoYXJlZCBsaWJyYXJ5Ci0rJ2xpYmdjY19zLnNvJywgd2hpY2ggaXMgY29tcGlsZWQgYWdhaW5zdCB0aGUgR0xJQkMgaGVhZGVycyAod2hpY2ggd2UKLStoYXZlbid0IGluc3RhbGxlZCB5ZXQpIGFuZCBsaW5rZWQgYWdhaW5zdCAnbGliYy5zbycgKHdoaWNoIHdlIGhhdmVuJ3QKLStidWlsdCB5ZXQpLgotKwotK0ZvcnR1bmF0ZWx5LCB0aGVyZSBhcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBHQ0Mgd2hpY2ggdGVsbCBpdCBub3QKLSt0byBidWlsZCAnbGliZ2NjX3Muc28nLiAgVGhlICctLXdpdGhvdXQtaGVhZGVycycgb3B0aW9uIGlzIHN1cHBvc2VkIHRvCi0rdGFrZSBjYXJlIG9mIHRoaXMsIGJ1dCBpdHMgaW1wbGVtZW50YXRpb24gaXMgaW5jb21wbGV0ZSwgc28geW91IG11c3QKLSthbHNvIGNvbmZpZ3VyZSB3aXRoIHRoZSAnLS13aXRoLW5ld2xpYicgb3B0aW9uLiAgV2hpbGUgJy0td2l0aC1uZXdsaWInCi0rYXBwZWFycyB0byBtZWFuICJVc2UgdGhlIE5ld2xpYiBDIGxpYnJhcnkiLCBpdHMgZWZmZWN0IGlzIHRvIHRlbGwgdGhlCi0rR0NDIGJ1aWxkIG1hY2hpbmVyeSwgIkRvbid0IGFzc3VtZSB0aGVyZSBpcyBhIEMgbGlicmFyeSBhdmFpbGFibGUuIgotKwotK1dlIGFsc28gbmVlZCB0byBkaXNhYmxlIHNvbWUgb2YgdGhlIGxpYnJhcmllcyB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlCi0rYnVpbHQgYWxvbmcgd2l0aCBHQ0MsIGFuZCBzcGVjaWZ5IHRoYXQgb25seSB0aGUgY29tcGlsZXIgZm9yIHRoZSBDCi0rbGFuZ3VhZ2UgaXMgbmVlZGVkLgotKwotK1NvLCB3ZSBjcmVhdGUgYSBidWlsZCBkaXJlY3RvcnksIGNvbmZpZ3VyZSwgbWFrZSwgYW5kIGluc3RhbGwuCi0rCi0rICAgICQgbWtkaXIgLXAgJG9iai9nY2MxCi0rICAgICQgY2QgJG9iai9nY2MxCi0rICAgICQgJHNyYy8kZ2Njdi9jb25maWd1cmUgXAotKyAgICA+ICAgICAtLXRhcmdldD0kdGFyZ2V0IFwKLSsgICAgPiAgICAgLS1wcmVmaXg9JHRvb2xzIFwKLSsgICAgPiAgICAgLS13aXRob3V0LWhlYWRlcnMgLS13aXRoLW5ld2xpYiBcCi0rICAgID4gICAgIC0tZGlzYWJsZS1zaGFyZWQgLS1kaXNhYmxlLXRocmVhZHMgLS1kaXNhYmxlLWxpYnNzcCBcCi0rICAgID4gICAgIC0tZGlzYWJsZS1saWJnb21wIC0tZGlzYWJsZS1saWJtdWRmbGFwIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCi0rICAgID4gICAgIC0tZGlzYWJsZS1kZWNpbWFsLWZsb2F0IC0tZGlzYWJsZS1saWJmZmkgXAotKyAgICA+ICAgICAtLWVuYWJsZS1sYW5ndWFnZXM9YwotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbAotKwotKwotK0xpbnV4IEtlcm5lbCBIZWFkZXJzCi0rCi0rVG8gY29uZmlndXJlIEdMSUJDLCB3ZSBhbHNvIG5lZWQgTGludXgga2VybmVsIGhlYWRlcnMgaW4gcGxhY2UuCi0rRm9ydHVuYXRlbHksIHRoZSBMaW51eCBtYWtlZmlsZXMgaGF2ZSBhIHRhcmdldCB0aGF0IGluc3RhbGxzIHRoZW0gZm9yCi0rdXMuICBTaW5jZSB0aGUgcHJvY2VzcyBkb2VzIG1vZGlmeSB0aGUgc291cmNlIHRyZWUgYSBiaXQsIHdlIG1ha2UgYQotK2NvcHkgZmlyc3Q6Ci0rCi0rICAgICQgY3AgLXIgJHNyYy8kbGludXh2ICRvYmovbGludXgKLSsgICAgJCBjZCAkb2JqL2xpbnV4Ci0rCi0rTm93IHdlJ3JlIHJlYWR5IHRvIGluc3RhbGwgdGhlIGhlYWRlcnMgaW50byB0aGUgc3lzcm9vdDoKLSsKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggXAotKyAgICA+IG1ha2UgaGVhZGVyc19pbnN0YWxsIFwKLSsgICAgPiAgICAgIEFSQ0g9JGxpbnV4X2FyY2ggQ1JPU1NfQ09NUElMRT0kdGFyZ2V0LSBcCi0rICAgID4gICAgICBJTlNUQUxMX0hEUl9QQVRIPSRzeXNyb290L3VzcgotKwotKwotK0dMSUJDIEhlYWRlcnMgYW5kIFByZWxpbWluYXJ5IE9iamVjdHMKLSsKLStVc2luZyB0aGUgY3Jvc3MtY29tcGlsZXIgd2UndmUganVzdCBidWlsdCwgd2UgY2FuIG5vdyBjb25maWd1cmUgR0xJQkMKLSt3ZWxsIGVub3VnaCB0byBpbnN0YWxsIHRoZSBoZWFkZXJzIGFuZCBidWlsZCB0aGUgb2JqZWN0IGZpbGVzIHRoYXQgdGhlCi0rZnVsbCBjcm9zcy1jb21waWxlciB3aWxsIG5lZWQ6Ci0rCi0rICAgICQgbWtkaXIgLXAgJG9iai9nbGliYy1oZWFkZXJzCi0rICAgICQgY2QgJG9iai9nbGliYy1oZWFkZXJzCi0rICAgICQgQlVJTERfQ0M9Z2NjIFwKLSsgICAgPiBDQz0kdG9vbHMvYmluLyR0YXJnZXQtZ2NjIFwKLSsgICAgPiBDWFg9JHRvb2xzL2Jpbi8kdGFyZ2V0LWcrKyBcCi0rICAgID4gQVI9JHRvb2xzL2Jpbi8kdGFyZ2V0LWFyIFwKLSsgICAgPiBSQU5MSUI9JHRvb2xzL2Jpbi8kdGFyZ2V0LXJhbmxpYiBcCi0rICAgID4gJHNyYy9nbGliYy9saWJjL2NvbmZpZ3VyZSBcCi0rICAgID4gICAgIC0tcHJlZml4PS91c3IgXAotKyAgICA+ICAgICAtLXdpdGgtaGVhZGVycz0kc3lzcm9vdC91c3IvaW5jbHVkZSBcCi0rICAgID4gICAgIC0tYnVpbGQ9JGJ1aWxkIFwKLSsgICAgPiAgICAgLS1ob3N0PSR0YXJnZXQgXAotKyAgICA+ICAgICAtLWRpc2FibGUtcHJvZmlsZSAtLXdpdGhvdXQtZ2QgLS13aXRob3V0LWN2cyBcCi0rICAgID4gICAgIC0tZW5hYmxlLWFkZC1vbnM9bnB0bCxsaWJpZG4sLi4vcG9ydHMKLSsKLStUaGUgb3B0aW9uICctLXByZWZpeD0vdXNyJyBtYXkgbG9vayBzdHJhbmdlLCBidXQgeW91IHNob3VsZCBuZXZlcgotK2NvbmZpZ3VyZSBHTElCQyB3aXRoIGEgcHJlZml4IG90aGVyIHRoYW4gJy91c3InOiBpbiB2YXJpb3VzIHBsYWNlcywKLStHTElCQydzIGJ1aWxkIHN5c3RlbSBjaGVja3Mgd2hldGhlciB0aGUgcHJlZml4IGlzICcvdXNyJywgYW5kIGRvZXMKLStzcGVjaWFsIGhhbmRsaW5nIG9ubHkgaWYgdGhhdCBpcyB0aGUgY2FzZS4gIFVubGVzcyB5b3UgdXNlIHRoaXMKLStwcmVmaXgsIHlvdSB3aWxsIGdldCBhIHN5c3Jvb3QgdGhhdCBkb2VzIG5vdCB1c2UgdGhlIHN0YW5kYXJkIExpbnV4Ci0rZGlyZWN0b3J5IGxheW91dHMgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIGEgYmFzaXMgZm9yIHRoZSByb290Ci0rZmlsZXN5c3RlbSBvbiB5b3VyIHRhcmdldCBzeXN0ZW0gY29tcGF0aWJseSB3aXRoIG5vcm1hbCBHTElCQwotK2luc3RhbGxhdGlvbnMuCi0rCi0rVGhlICctLXdpdGgtaGVhZGVycycgb3B0aW9uIHRlbGxzIEdMSUJDIHdoZXJlIHRoZSBMaW51eCBoZWFkZXJzIGhhdmUKLStiZWVuIGluc3RhbGxlZC4KLSsKLStUaGUgJy0tZW5hYmxlLWFkZC1vbnM9bnB0bCxsaWJpZG4sLi4vcG9ydHMnIG9wdGlvbiB0ZWxscyBHTElCQyB0byBsb29rCi0rZm9yIHRoZSBsaXN0ZWQgZ2xpYmMgYWRkLW9ucy4gTW9zdCBub3RhYmx5IHRoZSBwb3J0cyBhZGQtb24gKGxvY2F0ZWQKLStqdXN0IGFib3ZlIHRoZSBsaWJjIHNvdXJjZXMgaW4gdGhlIEdMSUJDIHN2biB0cmVlKSBpcyByZXF1aXJlZCB0bwotK3N1cHBvcnQgQVJNIHRhcmdldHMuCi0rCi0rV2UgY2FuIG5vdyB1c2UgdGhlICdpbnN0YWxsLWhlYWRlcnMnIG1ha2VmaWxlIHRhcmdldCB0byBpbnN0YWxsIHRoZQotK2hlYWRlcnM6Ci0rCi0rICAgICQgbWFrZSBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbF9yb290PSRzeXNyb290IFwKLSsgICAgPiAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzPXllcwotKwotK1RoZSAnaW5zdGFsbF9yb290JyB2YXJpYWJsZSBpbmRpY2F0ZXMgd2hlcmUgdGhlIGZpbGVzIHNob3VsZCBhY3R1YWxseQotK2JlIGluc3RhbGxlZDsgaXRzIHZhbHVlIGlzIHRyZWF0ZWQgYXMgdGhlIHBhcmVudCBvZiB0aGUgJy0tcHJlZml4JwotK2RpcmVjdG9yeSB3ZSBwYXNzZWQgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQsIHNvIHRoZSBoZWFkZXJzIHdpbGwgZ28gaW4KLSsnJHN5c3Jvb3QvdXNyL2luY2x1ZGUnLiAgVGhlICdpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzJyB2YXJpYWJsZQotK3JlcXVlc3RzIHNwZWNpYWwgaGFuZGxpbmcgZm9yIGNlcnRhaW4gdHJpY2t5IGhlYWRlciBmaWxlcy4KLSsKLStOZXh0LCB0aGVyZSBhcmUgYSBmZXcgb2JqZWN0IGZpbGVzIG5lZWRlZCB0byBsaW5rIHNoYXJlZCBsaWJyYXJpZXMsCi0rd2hpY2ggd2UgYnVpbGQgYW5kIGluc3RhbGwgYnkgaGFuZDoKLSsKLSsgICAgJCBta2RpciAtcCAkc3lzcm9vdC91c3IvbGliCi0rICAgICQgbWFrZSBjc3Uvc3ViZGlyX2xpYgotKyAgICAkIGNwIGNzdS9jcnQxLm8gY3N1L2NydGkubyBjc3UvY3J0bi5vICRzeXNyb290L3Vzci9saWIKLSsKLStGaW5hbGx5LCAnbGliZ2NjX3Muc28nIHJlcXVpcmVzIGEgJ2xpYmMuc28nIHRvIGxpbmsgYWdhaW5zdC4gIEhvd2V2ZXIsCi0rc2luY2Ugd2Ugd2lsbCBuZXZlciBhY3R1YWxseSBleGVjdXRlIGl0cyBjb2RlLCBpdCBkb2Vzbid0IG1hdHRlciB3aGF0Ci0raXQgY29udGFpbnMuICBTbywgdHJlYXRpbmcgJy9kZXYvbnVsbCcgYXMgYSBDIHNvdXJjZSBmaWxlLCB3ZSBwcm9kdWNlCi0rYSBkdW1teSAnbGliYy5zbycgaW4gb25lIHN0ZXA6Ci0rCi0rICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyAtbm9zdGRsaWIgLW5vc3RhcnRmaWxlcyAtc2hhcmVkIC14IGMgL2Rldi9udWxsIFwKLSsgICAgPiAgICAgICAgICAgICAgICAgICAgICAgIC1vICRzeXNyb290L3Vzci9saWIvbGliYy5zbwotKwotKwotK1RoZSBTZWNvbmQgR0NDCi0rCi0rV2l0aCB0aGUgR0xJQkMgaGVhZGVycyBhbmQgc2VsZWN0ZWQgb2JqZWN0IGZpbGVzIGluc3RhbGxlZCwgd2UgY2FuCi0rbm93IGJ1aWxkIGEgR0NDIHRoYXQgaXMgY2FwYWJsZSBvZiBjb21waWxpbmcgR0xJQkMuICBXZSBjb25maWd1cmUsCi0rYnVpbGQsIGFuZCBpbnN0YWxsIHRoZSBzZWNvbmQgR0NDLCBhZ2FpbiBidWlsZGluZyBvbmx5IHRoZSBDIGNvbXBpbGVyLAotK2FuZCBhdm9pZGluZyBsaWJyYXJpZXMgd2Ugd29uJ3QgdXNlOgotKwotKyAgICAkIG1rZGlyIC1wICRvYmovZ2NjMgotKyAgICAkIGNkICRvYmovZ2NjMgotKyAgICAkICRzcmMvJGdjY3YvY29uZmlndXJlIFwKLSsgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCi0rICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCi0rICAgID4gICAgIC0td2l0aC1zeXNyb290PSRzeXNyb290IFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLWxpYnNzcCAtLWRpc2FibGUtbGliZ29tcCAtLWRpc2FibGUtbGlibXVkZmxhcCBcCi0rICAgID4gICAgIC0tZGlzYWJsZS1saWJmZmkgLS1kaXNhYmxlLWxpYnF1YWRtYXRoIFwKLSsgICAgPiAgICAgLS1lbmFibGUtbGFuZ3VhZ2VzPWMKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwKLSsKLSsKLStHTElCQywgQ29tcGxldGUKLSsKLStXaXRoIHRoZSBzZWNvbmQgY29tcGlsZXIgYnVpbHQgYW5kIGluc3RhbGxlZCwgd2UncmUgbm93IHJlYWR5IGZvciB0aGUKLStmdWxsIEdMSUJDIGJ1aWxkOgotKwotKyAgICAkIG1rZGlyIC1wICRvYmovZ2xpYmMKLSsgICAgJCBjZCAkb2JqL2dsaWJjCi0rICAgICQgQlVJTERfQ0M9Z2NjIFwKLSsgICAgPiBDQz0kdG9vbHMvYmluLyR0YXJnZXQtZ2NjIFwKLSsgICAgPiBDWFg9JHRvb2xzL2Jpbi8kdGFyZ2V0LWcrKyBcCi0rICAgID4gQVI9JHRvb2xzL2Jpbi8kdGFyZ2V0LWFyIFwKLSsgICAgPiBSQU5MSUI9JHRvb2xzL2Jpbi8kdGFyZ2V0LXJhbmxpYiBcCi0rICAgID4gJHNyYy9nbGliYy9saWJjL2NvbmZpZ3VyZSBcCi0rICAgID4gICAgIC0tcHJlZml4PS91c3IgXAotKyAgICA+ICAgICAtLXdpdGgtaGVhZGVycz0kc3lzcm9vdC91c3IvaW5jbHVkZSBcCi0rICAgID4gICAgIC0td2l0aC1rY29uZmlnPSRvYmovbGludXgvc2NyaXB0cy9rY29uZmlnIFwKLSsgICAgPiAgICAgLS1idWlsZD0kYnVpbGQgXAotKyAgICA+ICAgICAtLWhvc3Q9JHRhcmdldCBcCi0rICAgID4gICAgIC0tZGlzYWJsZS1wcm9maWxlIC0td2l0aG91dC1nZCAtLXdpdGhvdXQtY3ZzIFwKLSsgICAgPiAgICAgLS1lbmFibGUtYWRkLW9ucz1ucHRsLGxpYmlkbiwuLi9wb3J0cwotKwotK05vdGUgdGhlIGFkZGl0aW9uYWwgJy0td2l0aC1rY29uZmlnJyBvcHRpb24uIFRoaXMgdGVsbHMgR0xJQkMgd2hlcmUgdG8KLStmaW5kIHRoZSBob3N0IGNvbmZpZyB0b29scyB1c2VkIGJ5IHRoZSBrZXJuZWwgJ21ha2UgY29uZmlnJyBhbmQgJ21ha2UKLSttZW51Y29uZmlnJy4gIFRoZXNlIHRvb2xzIGNhbiBiZSByZS11c2VkIGJ5IEdMSUJDIGZvciBpdHMgb3duICdtYWtlCi0rKmNvbmZpZycgc3VwcG9ydCwgd2hpY2ggd2lsbCBjcmVhdGUgJ29wdGlvbi1ncm91cHMuY29uZmlnJyBmb3IgeW91LgotK0J1dCBmaXJzdCBtYWtlIHN1cmUgdGhvc2UgdG9vbHMgaGF2ZSBiZWVuIGJ1aWx0IGJ5IHJ1bm5pbmcgc29tZQotK2R1bW15ICdtYWtlICpjb25maWcnIGNhbGxzIGluIHRoZSBrZXJuZWwgZGlyZWN0b3J5OgotKwotKyAgICAkIGNkICRvYmovbGludXgKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBjb25maWcgXAotKyAgICA+ICAgICAgQVJDSD0kbGludXhfYXJjaCBDUk9TU19DT01QSUxFPSR0YXJnZXQtIFwKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBtZW51Y29uZmlnIFwKLSsgICAgPiAgICAgIEFSQ0g9JGxpbnV4X2FyY2ggQ1JPU1NfQ09NUElMRT0kdGFyZ2V0LSBcCi0rCi0rTm93IHdlIGNhbiBjb25maWd1cmUgYW5kIGJ1aWxkIHRoZSBmdWxsIEdMSUJDOgotKwotKyAgICAkIGNkICRvYmovZ2xpYmMKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBkZWZjb25maWcKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBtZW51Y29uZmlnCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsIGluc3RhbGxfcm9vdD0kc3lzcm9vdAotKwotK0F0IHRoaXMgcG9pbnQsIHdlIGhhdmUgYSBjb21wbGV0ZSBHTElCQyBpbnN0YWxsYXRpb24gaW4gJyRzeXNyb290JywKLSt3aXRoIGhlYWRlciBmaWxlcywgbGlicmFyeSBmaWxlcywgYW5kIG1vc3Qgb2YgdGhlIEMgcnVudGltZSBzdGFydHVwCi0rZmlsZXMgaW4gcGxhY2UuCi0rCi0rCi0rVGhlIFRoaXJkIEdDQwotKwotK0ZpbmFsbHksIHdlIHJlY29tcGlsZSBHQ0MgYWdhaW5zdCB0aGlzIGZ1bGwgaW5zdGFsbGF0aW9uLCBlbmFibGluZwotK3doYXRldmVyIGxhbmd1YWdlcyBhbmQgbGlicmFyaWVzIHdlIHdvdWxkIGxpa2UgdG8gdXNlOgotKwotKyAgICAkIG1rZGlyIC1wICRvYmovZ2NjMwotKyAgICAkIGNkICRvYmovZ2NjMwotKyAgICAkICRzcmMvJGdjY3YvY29uZmlndXJlIFwKLSsgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCi0rICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCi0rICAgID4gICAgIC0td2l0aC1zeXNyb290PSRzeXNyb290IFwKLSsgICAgPiAgICAgLS1lbmFibGUtX19jeGFfYXRleGl0IFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLWxpYnNzcCAtLWRpc2FibGUtbGliZ29tcCAtLWRpc2FibGUtbGlibXVkZmxhcCBcCi0rICAgID4gICAgIC0tZW5hYmxlLWxhbmd1YWdlcz1jLGMrKwotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbAotKwotK1RoZSAnLS1lbmFibGUtX19jeGFfYXRleGl0JyBvcHRpb24gdGVsbHMgR0NDIHdoYXQgc29ydCBvZiBDKysKLStkZXN0cnVjdG9yIHN1cHBvcnQgdG8gZXhwZWN0IGZyb20gdGhlIEMgbGlicmFyeTsgaXQncyByZXF1aXJlZCB3aXRoCi0rR0xJQkMuCi0rCi0rQW5kIHNpbmNlIEdDQydzIGluc3RhbGxhdGlvbiBwcm9jZXNzIGlzbid0IGRlc2lnbmVkIHRvIGhlbHAgY29uc3RydWN0Ci0rc3lzcm9vdCB0cmVlcywgd2UgbXVzdCBtYW51YWxseSBjb3B5IGNlcnRhaW4gbGlicmFyaWVzIGludG8gcGxhY2UgaW4KLSt0aGUgc3lzcm9vdC4KLSsKLSsgICAgJCBjcCAtZCAkdG9vbHMvJHRhcmdldC9saWIvbGliZ2NjX3Muc28qICRzeXNyb290L2xpYgotKyAgICAkIGNwIC1kICR0b29scy8kdGFyZ2V0L2xpYi9saWJzdGRjKysuc28qICRzeXNyb290L3Vzci9saWIKLSsKLSsKLStUcnlpbmcgVGhpbmdzIE91dAotKwotK0F0IHRoaXMgcG9pbnQsICckdG9vbHMnIGNvbnRhaW5zIGEgY3Jvc3MgdG9vbGNoYWluIHJlYWR5IHRvIHVzZQotK3RoZSBHTElCQyBpbnN0YWxsYXRpb24gaW4gJyRzeXNyb290JzoKLSsKLSsgICAgJCBjYXQgPiBoZWxsby5jIDw8RU9GCi0rICAgID4gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rICAgID4gaW50Ci0rICAgID4gbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotKyAgICA+IHsKLSsgICAgPiAgIHB1dHMgKCJIZWxsbywgd29ybGQhIik7Ci0rICAgID4gICByZXR1cm4gMDsKLSsgICAgPiB9Ci0rICAgID4gRU9GCi0rICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyAtV2FsbCBoZWxsby5jIC1vIGhlbGxvCi0rICAgICQgY2F0ID4gYysrLWhlbGxvLmNjIDw8RU9GCi0rICAgID4gI2luY2x1ZGUgPGlvc3RyZWFtPgotKyAgICA+IGludAotKyAgICA+IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSsgICAgPiB7Ci0rICAgID4gICBzdGQ6OmNvdXQgPDwgIkhlbGxvLCBDKysgd29ybGQhIiA8PCBzdGQ6OmVuZGw7Ci0rICAgID4gICByZXR1cm4gMDsKLSsgICAgPiB9Ci0rICAgID4gRU9GCi0rICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LWcrKyAtV2FsbCBjKystaGVsbG8uY2MgLW8gYysrLWhlbGxvCi0rCi0rCi0rV2UgY2FuIHVzZSAncmVhZGVsZicgdG8gdmVyaWZ5IHRoYXQgdGhlc2UgYXJlIGluZGVlZCBleGVjdXRhYmxlcyBmb3IKLStvdXIgdGFyZ2V0LCB1c2luZyBvdXIgZHluYW1pYyBsaW5rZXI6Ci0rCi0rICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LXJlYWRlbGYgLWhsIGhlbGxvCi0rICAgIEVMRiBIZWFkZXI6Ci0rICAgIC4uLgotKyAgICAgIFR5cGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhFQyAoRXhlY3V0YWJsZSBmaWxlKQotKyAgICAgIE1hY2hpbmU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgQVJNCi0rCi0rICAgIC4uLgotKyAgICBQcm9ncmFtIEhlYWRlcnM6Ci0rICAgICAgVHlwZSAgICAgICAgICAgT2Zmc2V0ICAgVmlydEFkZHIgICBQaHlzQWRkciAgIEZpbGVTaXogTWVtU2l6ICBGbGcgQWxpZ24KLSsgICAgICBQSERSICAgICAgICAgICAweDAwMDAzNCAweDEwMDAwMDM0IDB4MTAwMDAwMzQgMHgwMDEwMCAweDAwMTAwIFIgRSAweDQKLSsgICAgICBJTlRFUlAgICAgICAgICAweDAwMDEzNCAweDAwMDA4MTM0IDB4MDAwMDgxMzQgMHgwMDAxMyAweDAwMDEzIFIgICAweDEKLSsgICAgICAgICAgW1JlcXVlc3RpbmcgcHJvZ3JhbSBpbnRlcnByZXRlcjogL2xpYi9sZC1saW51eC5zby4zXQotKyAgICAgIExPQUQgICAgICAgICAgIDB4MDAwMDAwIDB4MDAwMDgwMDAgMHgwMDAwODAwMCAweDAwNDJjIDB4MDA0MmMgUiBFIDB4ODAwMAotKyAgICAuLi4KLSsKLStMb29raW5nIGF0IHRoZSBkeW5hbWljIHNlY3Rpb24gb2YgdGhlIGluc3RhbGxlZCAnbGliZ2NjX3Muc28nLCB3ZSBzZWUKLSt0aGF0IHRoZSAnTkVFREVEJyBlbnRyeSBmb3IgdGhlIEMgbGlicmFyeSBkb2VzIGluY2x1ZGUgdGhlICcuNicKLStzdWZmaXgsIGluZGljYXRpbmcgdGhhdCB3YXMgbGlua2VkIGFnYWluc3Qgb3VyIGZ1bGx5IGJ1aWxkIEdMSUJDLCBhbmQKLStub3Qgb3VyIGR1bW15ICdsaWJjLnNvJzoKLSsKLSsgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtcmVhZGVsZiAtZCAkc3lzcm9vdC9saWIvbGliZ2NjX3Muc28uMQotKyAgICBEeW5hbWljIHNlY3Rpb24gYXQgb2Zmc2V0IDB4MTA4M2MgY29udGFpbnMgMjQgZW50cmllczoKLSsgICAgICBUYWcgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZS9WYWx1ZQotKyAgICAgMHgwMDAwMDAwMSAoTkVFREVEKSAgICAgICAgICAgICAgICAgICAgIFNoYXJlZCBsaWJyYXJ5OiBbbGliYy5zby42XQotKyAgICAgMHgwMDAwMDAwZSAoU09OQU1FKSAgICAgICAgICAgICAgICAgICAgIExpYnJhcnkgc29uYW1lOiBbbGliZ2NjX3Muc28uMV0KLSsgICAgLi4uCi0rCi0rCi0rQW5kIG9uIHRoZSB0YXJnZXQgbWFjaGluZSwgd2UgY2FuIHJ1biBvdXIgcHJvZ3JhbXM6Ci0rCi0rICAgICQgJHN5c3Jvb3QvbGliL2xkLnNvLjEgLS1saWJyYXJ5LXBhdGggJHN5c3Jvb3QvbGliOiRzeXNyb290L3Vzci9saWIgXAotKyAgICA+IC4vaGVsbG8KLSsgICAgSGVsbG8sIHdvcmxkIQotKyAgICAkICRzeXNyb290L2xpYi9sZC5zby4xIC0tbGlicmFyeS1wYXRoICRzeXNyb290L2xpYjokc3lzcm9vdC91c3IvbGliIFwKLSsgICAgPiAuL2MrKy1oZWxsbwotKyAgICBIZWxsbywgQysrIHdvcmxkIQotZGlmZiAtLWdpdCBhL0dMSUJDLmNyb3NzLXRlc3RpbmcgYi9HTElCQy5jcm9zcy10ZXN0aW5nCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uYjY3YjQ2ODQ2NgotLS0tIC9kZXYvbnVsbAotKysrIGIvR0xJQkMuY3Jvc3MtdGVzdGluZwotQEAgLTAsMCArMSwyMDUgQEAKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBtb2RlOiB0ZXh0IC0qLQotKwotKyAgICAgICAgICAgICAgICAgICAgICBDcm9zcy1UZXN0aW5nIFdpdGggR0xJQkMKLSsgICAgICAgICAgICAgICAgICBKaW0gQmxhbmR5IDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+Ci0rCi0rCi0rSW50cm9kdWN0aW9uCi0rCi0rRGV2ZWxvcGVycyB3cml0aW5nIHNvZnR3YXJlIGZvciBlbWJlZGRlZCBzeXN0ZW1zIG9mdGVuIHVzZSBhIGRlc2t0b3AKLStvciBvdGhlciBzaW1pbGFybHkgY2FwYWJsZSBjb21wdXRlciBmb3IgZGV2ZWxvcG1lbnQsIGJ1dCBuZWVkIHRvIHJ1bgotK3Rlc3RzIG9uIHRoZSBlbWJlZGRlZCBzeXN0ZW0sIG9yIHBlcmhhcHMgb24gYSBzaW11bGF0b3IuICBXaGVuCi0rY29uZmlndXJlZCBmb3IgY3Jvc3MtY29tcGlsYXRpb24sIHRoZSBzdG9jayBHTlUgQyBsaWJyYXJ5IHNpbXBseQotK2Rpc2FibGVzIHJ1bm5pbmcgdGVzdHMgYWx0b2dldGhlcjogdGhlIGNvbW1hbmQgJ21ha2UgdGVzdHMnIGJ1aWxkcwotK3Rlc3QgcHJvZ3JhbXMsIGJ1dCBkb2VzIG5vdCBydW4gdGhlbS4gIEdMSUJDLCBob3dldmVyLCBwcm92aWRlcwotK2ZhY2lsaXRpZXMgZm9yIGNvbXBpbGluZyB0ZXN0cyBhbmQgZ2VuZXJhdGluZyBkYXRhIGZpbGVzIG9uIHRoZSBidWlsZAotK3N5c3RlbSwgYnV0IHJ1bm5pbmcgdGhlIHRlc3QgcHJvZ3JhbXMgdGhlbXNlbHZlcyBvbiBhIHJlbW90ZSBzeXN0ZW0gb3IKLStzaW11bGF0b3IuCi0rCi0rCi0rVGVzdCBlbnZpcm9ubWVudCByZXF1aXJlbWVudHMKLSsKLStUaGUgdGVzdCBlbnZpcm9ubWVudCBtdXN0IG1lZXQgY2VydGFpbiBjb25kaXRpb25zIGZvciBHTElCQydzCi0rY3Jvc3MtdGVzdGluZyBmYWNpbGl0aWVzIHRvIHdvcms6Ci0rCi0rLSBTaGFyZWQgZmlsZXN5c3RlbXMuICBUaGUgJ2J1aWxkJyBzeXN0ZW0sIG9uIHdoaWNoIHlvdSBjb25maWd1cmUgYW5kCi0rICBjb21waWxlIEdMSUJDLCBhbmQgdGhlICdob3N0JyBzeXN0ZW0sIG9uIHdoaWNoIHlvdSBpbnRlbmQgdG8gcnVuCi0rICBHTElCQywgbXVzdCBzaGFyZSBhIGZpbGVzeXN0ZW0gY29udGFpbmluZyB0aGUgR0xJQkMgYnVpbGQgYW5kCi0rICBzb3VyY2UgdHJlZXMuICBGaWxlcyBtdXN0IGFwcGVhciBhdCB0aGUgc2FtZSBwYXRocyBvbiBib3RoIHN5c3RlbXMuCi0rCi0rLSBSZW1vdGUtc2hlbGwgbGlrZSBpbnZvY2F0aW9uLiAgVGhlcmUgbXVzdCBiZSBhIHdheSB0byBydW4gYSBwcm9ncmFtCi0rICBvbiB0aGUgaG9zdCBzeXN0ZW0gZnJvbSB0aGUgYnVpbGQgc3lzdGVtLCBwYXNzaW5nIGl0IHByb3Blcmx5IHF1b3RlZAotKyAgY29tbWFuZC1saW5lIGFyZ3VtZW50cywgc2V0dGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGFuZAotKyAgaW5oZXJpdGluZyB0aGUgY2FsbGVyJ3Mgc3RhbmRhcmQgaW5wdXQgYW5kIG91dHB1dC4KLSsKLSsKLStVc2FnZQotKwotK1RvIHVzZSBHTElCQydzIGNyb3NzLXRlc3Rpbmcgc3VwcG9ydCwgcHJvdmlkZSB2YWx1ZXMgZm9yIHRoZQotK2ZvbGxvd2luZyBNYWtlIHZhcmlhYmxlcyB3aGVuIHlvdSBpbnZva2UgJ21ha2UnOgotKwotKy0gY3Jvc3MtdGVzdC13cmFwcGVyCi0rCi0rICBUaGlzIHNob3VsZCBiZSB0aGUgbmFtZSBvZiB0aGUgY3Jvc3MtdGVzdGluZyB3cmFwcGVyIGNvbW1hbmQsIGFsb25nCi0rICB3aXRoIGFueSBhcmd1bWVudHMuCi0rCi0rLSBjcm9zcy1sb2NhbGVkZWYKLSsKLSsgIFRoaXMgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIGEgY3Jvc3MtY2FwYWJsZSBsb2NhbGVkZWYgcHJvZ3JhbSwgbGlrZQotKyAgdGhhdCBpbmNsdWRlZCBpbiB0aGUgR0xJQkMgJ2xvY2FsZWRlZicgbW9kdWxlLCBhbG9uZyB3aXRoIGFueQotKyAgYXJndW1lbnRzIG5lZWRlZC4KLSsKLStUaGVzZSBhcmUgZWFjaCBleHBsYWluZWQgaW4gZGV0YWlsIGJlbG93LgotKwotKwotK1RoZSBDcm9zcy1UZXN0aW5nIFdyYXBwZXIKLSsKLStUbyBydW4gdGVzdCBwcm9ncmFtcyByZWxpYWJseSwgdGhlIHN0b2NrIEdOVSBDIGxpYnJhcnkgdGFrZXMgY2FyZSB0bwotK2Vuc3VyZSB0aGF0IHRlc3QgcHJvZ3JhbXMgdXNlIHRoZSBuZXdseSBjb21waWxlZCBkeW5hbWljIGxpbmtlciBhbmQKLStzaGFyZWQgbGlicmFyaWVzLCBhbmQgbmV2ZXIgdGhlIGhvc3Qgc3lzdGVtJ3MgaW5zdGFsbGVkIGxpYnJhcmllcy4gIFRvCi0rYWNjb21wbGlzaCB0aGlzLCBpdCBydW5zIHRoZSB0ZXN0cyBieSBleHBsaWNpdGx5IGludm9raW5nIHRoZSBkeW5hbWljCi0rbGlua2VyIGZyb20gdGhlIGJ1aWxkIHRyZWUsIHBhc3NpbmcgaXQgYSBsaXN0IG9mIGJ1aWxkIHRyZWUKLStkaXJlY3RvcmllcyB0byBzZWFyY2ggZm9yIHNoYXJlZCBsaWJyYXJpZXMsIGZvbGxvd2VkIGJ5IHRoZSBuYW1lIG9mCi0rdGhlIGV4ZWN1dGFibGUgdG8gcnVuIGFuZCBpdHMgYXJndW1lbnRzLgotKwotK0ZvciBleGFtcGxlLCB3aGVyZSBvbmUgbWlnaHQgbm9ybWFsbHkgcnVuIGEgdGVzdCBwcm9ncmFtIGxpa2UgdGhpczoKLSsKLSsgICAgJCAuL3RzdC1mb28gYXJnMSBhcmcyCi0rCi0rdGhlIEdOVSBDIGxpYnJhcnkgbWlnaHQgcnVuIHRoYXQgcHJvZ3JhbSBsaWtlIHRoaXM6Ci0rCi0rICAgICQgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKLSsgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCi0rCi0rKHdoZXJlICRvYmpkaXIgaXMgdGhlIHBhdGggdG8gdGhlIHRvcCBvZiB0aGUgYnVpbGQgdHJlZSwgYW5kIHRoZQotK3RyYWlsaW5nIGJhY2tzbGFzaCBpbmRpY2F0ZXMgYSBjb250aW51YXRpb24gb2YgdGhlIGNvbW1hbmQpLiAgSW4gb3RoZXIKLSt3b3JkcywgZWFjaCB0ZXN0IHByb2dyYW0gaW52b2NhdGlvbiBpcyAnd3JhcHBlZCB1cCcgaW5zaWRlIGFuIGV4cGxpY2l0Ci0raW52b2NhdGlvbiBvZiB0aGUgZHluYW1pYyBsaW5rZXIsIHdoaWNoIG11c3QgaXRzZWxmIGV4ZWN1dGUgdGhlIHRlc3QKLStwcm9ncmFtLCBoYXZpbmcgbG9hZGVkIHNoYXJlZCBsaWJyYXJpZXMgZnJvbSB0aGUgYXBwcm9wcmlhdGUKLStkaXJlY3Rvcmllcy4KLSsKLStUbyBzdXBwb3J0IGNyb3NzLXRlc3RpbmcsIEdMSUJDIGFsbG93cyB0aGUgZGV2ZWxvcGVyIHRvIG9wdGlvbmFsbHkKLStzZXQgdGhlICdjcm9zcy10ZXN0LXdyYXBwZXInIE1ha2UgdmFyaWFibGUgdG8gYW5vdGhlciB3cmFwcGVyIGNvbW1hbmQsCi0rdG8gd2hpY2ggaXQgcGFzc2VzIHRoZSBlbnRpcmUgZHluYW1pYyBsaW5rZXIgaW52b2NhdGlvbiBzaG93biBhYm92ZSBhcwotK2FyZ3VtZW50cy4gIEZvciBleGFtcGxlLCBpZiB0aGUgZGV2ZWxvcGVyIHN1cHBsaWVzIGEgd3JhcHBlciBvZgotKydteS13cmFwcGVyIGhvc3RuYW1lJywgdGhlbiBHTElCQyB3b3VsZCBydW4gdGhlIHRlc3QgYWJvdmUgYXMKLStmb2xsb3dzOgotKwotKyAgICAkIG15LXdyYXBwZXIgaG9zdG5hbWUgXAotKyAgICAgICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCi0rICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgotKwotK1RoZSAnbXktd3JhcHBlcicgY29tbWFuZCBpcyByZXNwb25zaWJsZSBmb3IgZXhlY3V0aW5nIHRoZSBjb21tYW5kCi0rZ2l2ZW4gb24gdGhlIGhvc3Qgc3lzdGVtLgotKwotK1NpbmNlIHRlc3RzIGFyZSBydW4gaW4gdmFyeWluZyBkaXJlY3RvcmllcywgdGhlIHdyYXBwZXIgc2hvdWxkIGVpdGhlcgotK2JlIGluIHlvdXIgY29tbWFuZCBzZWFyY2ggcGF0aCwgb3IgJ2Nyb3NzLXRlc3Qtd3JhcHBlcicgc2hvdWxkIGdpdmUgYW4KLSthYnNvbHV0ZSBwYXRoIGZvciB0aGUgd3JhcHBlci4KLSsKLStUaGUgd3JhcHBlciBtdXN0IG1lZXQgc2V2ZXJhbCByZXF1aXJlbWVudHM6Ci0rCi0rLSBJdCBtdXN0IHByZXNlcnZlIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIEFzIGV4cGxhaW5lZCBhYm92ZSwgdGhlCi0rICBidWlsZCBkaXJlY3RvcnkgdHJlZSBtdXN0IGJlIHZpc2libGUgb24gYm90aCB0aGUgYnVpbGQgYW5kIGhvc3QKLSsgIHN5c3RlbXMsIGF0IHRoZSBzYW1lIHBhdGguICBUaGUgdGVzdCB3cmFwcGVyIG11c3QgZW5zdXJlIHRoYXQgdGhlCi0rICBjdXJyZW50IGRpcmVjdG9yeSBpdCBpbmhlcml0cyBpcyBhbHNvIGluaGVyaXRlZCBieSB0aGUgZHluYW1pYwotKyAgbGlua2VyIChhbmQgdGh1cyB0aGUgdGVzdCBwcm9ncmFtIGl0c2VsZikuCi0rCi0rLSBJdCBtdXN0IHByZXNlcnZlIGVudmlyb25tZW50IHZhcmlhYmxlcycgdmFsdWVzLiAgTWFueSBHTElCQyB0ZXN0cwotKyAgc2V0IGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgdGVzdCBydW5zOyBpbiBuYXRpdmUgdGVzdGluZywgaXQKLSsgIGludm9rZXMgcHJvZ3JhbXMgbGlrZSB0aGlzOgotKwotKyAgICAkIEdDT05WX1BBVEg9JG9iamRpci9pY29udmRhdGEgXAotKyAgICAgICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCi0rICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgotKwotKyAgV2l0aCB0aGUgY3Jvc3MtdGVzdGluZyB3cmFwcGVyLCB0aGF0IGludm9jYXRpb24gYmVjb21lczoKLSsKLSsgICAgJCBHQ09OVl9QQVRIPSRvYmpkaXIvaWNvbnZkYXRhIFwKLSsgICAgICBteS13cmFwcGVyIGhvc3RuYW1lIFwKLSsgICAgICAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAotKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKLSsKLSsgIEhlcmUsICdteS13cmFwcGVyJyBtdXN0IGVuc3VyZSB0aGF0IHRoZSB2YWx1ZSBpdCBzZWVzIGZvcgotKyAgJ0dDT05WX1BBVEgnIHdpbGwgYmUgc2VlbiBieSB0aGUgZHluYW1pYyBsaW5rZXIsIGFuZCB0aHVzICd0c3QtZm9vJwotKyAgaXRzZWxmLiAgKFRoZSB3cmFwcGVyIHN1cHBsaWVkIHdpdGggR0xJQkMgc2ltcGx5IHByZXNlcnZlcyB0aGUKLSsgIHZhbHVlcyBvZiAqYWxsKiBlbnZpcm9tZW50IHZhcmlhYmxlcywgd2l0aCBhIGZpeGVkIHNldCBvZgotKyAgZXhjZXB0aW9ucy4pCi0rCi0rICBJZiB5b3VyIHdyYXBwZXIgaXMgYSBzaGVsbCBzY3JpcHQsIHRha2UgY2FyZSB0byBjb3JyZWN0bHkgcHJvcGFnYXRlCi0rICBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hvc2UgdmFsdWVzIGNvbnRhaW4gc3BhY2VzIGFuZCBzaGVsbAotKyAgbWV0YWNoYXJhY3RlcnMuCi0rCi0rLSBJdCBtdXN0IHBhc3MgdGhlIGNvbW1hbmQncyBhcmd1bWVudHMsIHVubW9kaWZpZWQuICBUaGUgYXJndW1lbnRzCi0rICBzZWVuIGJ5IHRoZSB0ZXN0IHByb2dyYW0gc2hvdWxkIGJlIGV4YWN0bHkgdGhvc2Ugc2VlbiBieSB0aGUgd3JhcHBlcgotKyAgKGFmdGVyIHdoYXRldmVyIGFyZ3VtZW50cyBhcmUgZ2l2ZW4gdG8gdGhlIHdyYXBwZXIgaXRzZWxmKS4gIFRoZQotKyAgR0xJQkMgdGVzdCBmcmFtZXdvcmsgcGVyZm9ybXMgYWxsIG5lZWRlZCBzaGVsbCB3b3JkIHNwbGl0dGluZyBhbmQKLSsgIGV4cGFuc2lvbiAod2lsZGNhcmQgZXhwYW5zaW9uLCBwYXJhbWV0ZXIgc3Vic3RpdHV0aW9uLCBhbmQgc28gb24pCi0rICBiZWZvcmUgaW52b2tpbmcgdGhlIHdyYXBwZXI7IGZ1cnRoZXIgZXhwYW5zaW9uIG1heSBicmVhayB0aGUgdGVzdHMuCi0rCi0rCi0rVGhlICdjcm9zcy10ZXN0LXNzaC5zaCcgc2NyaXB0Ci0rCi0rSWYgeW91IHdhbnQgdG8gdXNlICdzc2gnIChvciBzb21ldGhpbmcgc3VmZmljaWVudGx5IHNpbWlsYXIpIHRvIHJ1bgotK3Rlc3QgcHJvZ3JhbXMgb24geW91ciBob3N0IHN5c3RlbSwgR0xJQkMgaW5jbHVkZXMgYSBzaGVsbCBzY3JpcHQsCi0rJ3NjcmlwdHMvY3Jvc3MtdGVzdC1zc2guc2gnLCB3aGljaCB5b3UgY2FuIHVzZSBhcyB5b3VyIHdyYXBwZXIKLStjb21tYW5kLiAgVGhpcyBzY3JpcHQgdGFrZXMgY2FyZSBvZiBzZXR0aW5nIHRoZSB0ZXN0IGNvbW1hbmQncyBjdXJyZW50Ci0rZGlyZWN0b3J5LCBwcm9wYWdhdGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZSB2YWx1ZXMsIGFuZCBjYXJyeWluZwotK2NvbW1hbmQtbGluZSBhcmd1bWVudHMsIGFsbCBhY3Jvc3MgYW4gJ3NzaCcgY29ubmVjdGlvbi4gIFlvdSBtYXkgZXZlbgotK3N1cHBseSBhbiBhbHRlcm5hdGl2ZSB0byAnc3NoJyBvbiB0aGUgY29tbWFuZCBsaW5lLCBpZiBuZWVkZWQuCi0rCi0rRm9yIG1vcmUgZGV0YWlscywgcGFzcyAnY3Jvc3MtdGVzdC1zc2guc2gnIHRoZSAnLS1oZWxwJyBvcHRpb24uCi0rCi0rCi0rVGhlIENyb3NzLUNvbXBpbGluZyBMb2NhbGUgRGVmaW5pdGlvbiBDb21tYW5kCi0rCi0rU29tZSBHTElCQyB0ZXN0cyByZWx5IG9uIGxvY2FsZXMgZ2VuZXJhdGVkIGVzcGVjaWFsbHkgZm9yIHRoZSB0ZXN0Ci0rcHJvY2Vzcy4gIEluIGEgbmF0aXZlIGNvbmZpZ3VyYXRpb24sIHRoZXNlIHRlc3RzIHNpbXBseSBydW4gdGhlCi0rJ2xvY2FsZWRlZicgY29tbWFuZCBidWlsdCBieSB0aGUgbm9ybWFsIEdMSUJDIGJ1aWxkIHByb2Nlc3MsCi0rJ2xvY2FsZS9sb2NhbGVkZWYnLCB0byBwcm9jZXNzIGFuZCBpbnN0YWxsIHRoZWlyIGxvY2FsZXMuICBIb3dldmVyLCBpbgotK2EgY3Jvc3MtY29tcGlsaW5nIGNvbmZpZ3VyYXRpb24sIHRoaXMgJ2xvY2FsZWRlZicgaXMgYnVpbHQgZm9yIHRoZQotK2hvc3Qgc3lzdGVtLCBub3QgdGhlIGJ1aWxkIHN5c3RlbSwgYW5kIHNpbmNlIGl0IHJlcXVpcmVzIHF1aXRlIGEgYml0Ci0rb2YgbWVtb3J5IHRvIHJ1biAod2UgaGF2ZSBzZWVuIGl0IGZhaWwgb24gc3lzdGVtcyB3aXRoIDY0TWlCIG9mCi0rbWVtb3J5KSwgaXQgbWF5IG5vdCBiZSBwcmFjdGljYWwgdG8gcnVuIGl0IG9uIHRoZSBob3N0IHN5c3RlbS4KLSsKLStJZiBzZXQsIEdMSUJDIHVzZXMgdGhlICdjcm9zcy1sb2NhbGVkZWYnIE1ha2UgdmFyaWFibGUgYXMgdGhlIGNvbW1hbmQKLSt0byBydW4gb24gdGhlIGJ1aWxkIHN5c3RlbSB0byBwcm9jZXNzIGFuZCBpbnN0YWxsIGxvY2FsZXMuICBUaGUKLStsb2NhbGVkZWYgcHJvZ3JhbSBidWlsdCBmcm9tIHRoZSBHTElCQyAnbG9jYWxlZGVmJyBtb2R1bGUgaXMKLStzdWl0YWJsZS4KLSsKLStUaGUgdmFsdWUgb2YgJ2Nyb3NzLWxvY2FsZWRlZicgbWF5IGFsc28gaW5jbHVkZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzCi0rdG8gYmUgcGFzc2VkIHRvIHRoZSBwcm9ncmFtOyBpZiB5b3UgYXJlIHVzaW5nIEdMSUJDJ3MgJ2xvY2FsZWRlZicsCi0reW91IG1heSBpbmNsdWRlIGVuZGlhbm5lc3MgYW5kICd1aW50MzJfdCcgYWxpZ25tZW50IGFyZ3VtZW50cyBoZXJlLgotKwotKwotK0V4YW1wbGUKLSsKLStJbiBkZXZlbG9waW5nIEdMSUJDJ3MgY3Jvc3MtdGVzdGluZyBmYWNpbGl0eSwgd2UgaW52b2tlZCAnbWFrZScgd2l0aAotK3RoZSBmb2xsb3dpbmcgc2NyaXB0OgotKwotKyAgICAjIS9iaW4vc2gKLSsKLSsgICAgc3JjZGlyPS4uLgotKyAgICB0ZXN0X2hvc3RuYW1lPS4uLgotKyAgICBsb2NhbGVkZWZkaXI9Li4uCi0rICAgIGNyb3NzX2d4eD0uLi4tZysrCi0rCi0rICAgIHdyYXBwZXI9IiRzcmNkaXIvc2NyaXB0cy9jcm9zcy10ZXN0LXNzaC5zaCAkdGVzdF9ob3N0bmFtZSIKLSsgICAgbG9jYWxlZGVmPSIkbG9jYWxlZGVmZGlyL2xvY2FsZWRlZiAtLWxpdHRsZS1lbmRpYW4gLS11aW50MzItYWxpZ249NCIKLSsKLSsgICAgbWFrZSBjcm9zcy10ZXN0LXdyYXBwZXI9IiR3cmFwcGVyIiBcCi0rICAgICAgICAgY3Jvc3MtbG9jYWxlZGVmPSIkbG9jYWxlZGVmIiBcCi0rICAgICAgICAgQ1hYPSIkY3Jvc3NfZ3h4IiBcCi0rICAgICAgICAgIiRAIgotKwotKwotK090aGVyIENyb3NzLVRlc3RpbmcgQ29uY2VybnMKLSsKLStIZXJlIGFyZSBub3RlcyBvbiBzb21lIG90aGVyIGlzc3VlcyB3aGljaCB5b3UgbWF5IGVuY291bnRlciBpbiBydW5uaW5nCi0rdGhlIEdMSUJDIHRlc3RzIGluIGEgY3Jvc3MtY29tcGlsaW5nIGVudmlyb25tZW50OgotKwotKy0gU29tZSB0ZXN0cyByZXF1aXJlIGEgQysrIGNyb3NzLWNvbXBpbGVyOyB5b3Ugc2hvdWxkIHNldCB0aGUgJ0NYWCcKLSsgIE1ha2UgdmFyaWFibGUgdG8gdGhlIG5hbWUgb2YgYW4gYXBwcm9wcmlhdGUgY3Jvc3MtY29tcGlsZXIuCi0rCi0rLSBTb21lIHRlc3RzIHJlcXVpcmUgYWNjZXNzIHRvIGxpYnN0ZGMrKy5zby42IGFuZCBsaWJnY2Nfcy5zby4xOyB3ZQotKyAgc2ltcGx5IHBsYWNlIGNvcGllcyBvZiB0aGVzZSBsaWJyYXJpZXMgaW4gdGhlIHRvcCBHTElCQyBidWlsZAotKyAgZGlyZWN0b3J5LgotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGIwZWU5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSAyMDIzZDg4YzM1NWI4YWY2NDU4YzhlMzljZTM4Yjc1YzFjYTRlYTJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MzM6MDMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGltZXpvbmU6IHJlLXdyaXR0ZW4gdHpzZWxlY3QgYXMgcG9zaXggc2gKKworVG8gYXZvaWQgdGhlIGJhc2ggZGVwZW5kZW5jeS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyB0aW1lem9uZS9NYWtlZmlsZSAgICAgfCAyICstCisgdGltZXpvbmUvdHpzZWxlY3Qua3NoIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGltZXpvbmUvTWFrZWZpbGUgYi90aW1lem9uZS9NYWtlZmlsZQoraW5kZXggNzVmMzhkZjUyNy4uNzRlMWFiN2ZmNyAxMDA2NDQKKy0tLSBhL3RpbWV6b25lL01ha2VmaWxlCisrKysgYi90aW1lem9uZS9NYWtlZmlsZQorQEAgLTEyMiw3ICsxMjIsNyBAQCAkKHRlc3RkYXRhKS9YVCU6IHRlc3RkYXRhL1hUJQorIAljcCAkPCAkQAorIAorICQob2JqcGZ4KXR6c2VsZWN0OiB0enNlbGVjdC5rc2ggJChjb21tb24tb2JqcGZ4KWNvbmZpZy5tYWtlCistCXNlZCAtZSAnc3wvYmluL2Jhc2h8JChCQVNIKXwnIFwKKysJc2VkIC1lICdzfC9iaW4vYmFzaHwvYmluL3NofCcgXAorIAkgICAgLWUgJ3N8VFpESVI9W159XSp8VFpESVI9JCh6b25lZGlyKXwnIFwKKyAJICAgIC1lICcvVFpWRVJTSU9OPS9zfHNlZV9NYWtlZmlsZXwiJCh2ZXJzaW9uKSJ8JyBcCisgCSAgICAtZSAnL1BLR1ZFUlNJT049L3N8PS4qfD0iJChQS0dWRVJTSU9OKSJ8JyBcCitkaWZmIC0tZ2l0IGEvdGltZXpvbmUvdHpzZWxlY3Qua3NoIGIvdGltZXpvbmUvdHpzZWxlY3Qua3NoCitpbmRleCAxOGZjZTI3ZTI0Li43MDc0NWY5ZDM2IDEwMDc1NQorLS0tIGEvdGltZXpvbmUvdHpzZWxlY3Qua3NoCisrKysgYi90aW1lem9uZS90enNlbGVjdC5rc2gKK0BAIC0zNCw3ICszNCw3IEBAIFJFUE9SVF9CVUdTX1RPPXR6QGlhbmEub3JnCisgCisgIyBTcGVjaWZ5IGRlZmF1bHQgdmFsdWVzIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaWYgdGhleSBhcmUgdW5zZXQuCisgOiAke0FXSz1hd2t9CistOiAke1RaRElSPWBwd2RgfQorKzogJHtUWkRJUj0kKHB3ZCl9CisgCisgIyBPdXRwdXQgb25lIGFyZ3VtZW50IGFzLWlzIHRvIHN0YW5kYXJkIG91dHB1dC4KKyAjIFNhZmVyIHRoYW4gJ2VjaG8nLCB3aGljaCBjYW4gbWlzaGFuZGxlICdcJyBvciBsZWFkaW5nICctJy4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE5LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWMxNWE1MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoCkBAIC0wLDAgKzEsNzIgQEAKK0Zyb20gMDZkYTIwZDlmODk5MDdlNWYyNzc3NTM3MjQ0ZTY1ODljYTNjOTcwMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE0OjMzOjAyIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBiYXNoIGRlcGVuZGVuY3kgZm9yIG5zY2QgaW5pdCBzY3JpcHQKKworVGhlIG5zY2QgaW5pdCBzY3JpcHQgdXNlcyAjISAvYmluL2Jhc2ggYnV0IG9ubHkgcmVhbGx5IHVzZXMgb25lIGJhc2hpc20KKyh0cmFuc2xhdGVkIHN0cmluZ3MpLCBzbyByZW1vdmUgdGhlbSBhbmQgc3dpdGNoIHRoZSBzaGVsbCB0byAjIS9iaW4vc2guCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIG5zY2QvbnNjZC5pbml0IHwgMTQgKysrKysrKy0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbnNjZC9uc2NkLmluaXQgYi9uc2NkL25zY2QuaW5pdAoraW5kZXggYTg4MmRhN2Q4Yi4uYjAyOTg2ZWMxNSAxMDA2NDQKKy0tLSBhL25zY2QvbnNjZC5pbml0CisrKysgYi9uc2NkL25zY2QuaW5pdAorQEAgLTEsNCArMSw0IEBACistIyEvYmluL2Jhc2gKKysjIS9iaW4vc2gKKyAjCisgIyBuc2NkOgkJU3RhcnRzIHRoZSBOYW1lIFN3aXRjaCBDYWNoZSBEYWVtb24KKyAjCitAQCAtNDksNyArNDksNyBAQCBwcm9nPW5zY2QKKyBzdGFydCAoKSB7CisgICAgIFsgLWQgL3Zhci9ydW4vbnNjZCBdIHx8IG1rZGlyIC92YXIvcnVuL25zY2QKKyAgICAgWyAtZCAvdmFyL2RiL25zY2QgXSB8fCBta2RpciAvdmFyL2RiL25zY2QKKy0gICAgZWNobyAtbiAkIlN0YXJ0aW5nICRwcm9nOiAiCisrICAgIGVjaG8gLW4gIlN0YXJ0aW5nICRwcm9nOiAiCisgICAgIGRhZW1vbiAvdXNyL3NiaW4vbnNjZAorICAgICBSRVRWQUw9JD8KKyAgICAgZWNobworQEAgLTU4LDcgKzU4LDcgQEAgc3RhcnQgKCkgeworIH0KKyAKKyBzdG9wICgpIHsKKy0gICAgZWNobyAtbiAkIlN0b3BwaW5nICRwcm9nOiAiCisrICAgIGVjaG8gLW4gIlN0b3BwaW5nICRwcm9nOiAiCisgICAgIC91c3Ivc2Jpbi9uc2NkIC1LCisgICAgIFJFVFZBTD0kPworICAgICBpZiBbICRSRVRWQUwgLWVxIDAgXTsgdGhlbgorQEAgLTY3LDkgKzY3LDkgQEAgc3RvcCAoKSB7CisgCSMgYSBub24tcHJpdmlsZWdlZCB1c2VyCisgCXJtIC1mIC92YXIvcnVuL25zY2QvbnNjZC5waWQKKyAJcm0gLWYgL3Zhci9ydW4vbnNjZC9zb2NrZXQKKy0gICAgICAgCXN1Y2Nlc3MgJCIkcHJvZyBzaHV0ZG93biIKKysJc3VjY2VzcyAiJHByb2cgc2h1dGRvd24iCisgICAgIGVsc2UKKy0gICAgICAgCWZhaWx1cmUgJCIkcHJvZyBzaHV0ZG93biIKKysJZmFpbHVyZSAiJHByb2cgc2h1dGRvd24iCisgICAgIGZpCisgICAgIGVjaG8KKyAgICAgcmV0dXJuICRSRVRWQUwKK0BAIC0xMDMsMTMgKzEwMywxMyBAQCBjYXNlICIkMSIgaW4KKyAJUkVUVkFMPSQ/CisgCTs7CisgICAgIGZvcmNlLXJlbG9hZCB8IHJlbG9hZCkKKy0gICAgCWVjaG8gLW4gJCJSZWxvYWRpbmcgJHByb2c6ICIKKysJZWNobyAtbiAiUmVsb2FkaW5nICRwcm9nOiAiCisgCWtpbGxwcm9jIC91c3Ivc2Jpbi9uc2NkIC1IVVAKKyAJUkVUVkFMPSQ/CisgCWVjaG8KKyAJOzsKKyAgICAgKikKKy0JZWNobyAkIlVzYWdlOiAkMCB7c3RhcnR8c3RvcHxzdGF0dXN8cmVzdGFydHxyZWxvYWR8Y29uZHJlc3RhcnR9IgorKwllY2hvICJVc2FnZTogJDAge3N0YXJ0fHN0b3B8c3RhdHVzfHJlc3RhcnR8cmVsb2FkfGNvbmRyZXN0YXJ0fSIKKyAJUkVUVkFMPTEKKyAJOzsKKyBlc2FjCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzMzZGIyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLUZyb20gMjg2NGFhYWU5ODRkOTQ1NDQ1ZjNmNzk4NjljNzAzZTBiNzkxZGY4OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjQ5OjI4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTkvMjhdIGVnbGliYzogSGVscCBib290c3RyYXAgY3Jvc3MgdG9vbGNoYWluCi0KLVRha2VuIGZyb20gRUdMSUJDLCByMTQ4NCArIHIxNTI1Ci0KLSAgICAgICAgMjAwNy0wMi0yMCAgSmltIEJsYW5keSAgPGppbWJAY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgICAgICAgICAgICAgICogTWFrZWZpbGUgKGluc3RhbGwtaGVhZGVycyk6IFByZXNlcnZlIG9sZCBiZWhhdmlvcjogZGVwZW5kIG9uCi0gICAgICAgICAgICAgICAgJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oIG9ubHkgaWYgaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycwotICAgICAgICAgICAgICAgIGlzIHNldDsgb3RoZXJ3aXNlLCBwbGFjZSBnbnUvc3R1YnMuaCBvbiB0aGUgJ2luc3RhbGwtb3RoZXJzJyBsaXN0LgotCi0gICAgICAgIDIwMDctMDItMTYgIEppbSBCbGFuZHkgIDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+Ci0KLSAgICAgICAgICAgICAgICAqIE1ha2VmaWxlOiBBbWVuZCBtYWtlIGluc3RhbGwtaGVhZGVycyB0byBpbnN0YWxsIGV2ZXJ5dGhpbmcKLSAgICAgICAgICAgICAgICBuZWNlc3NhcnkgZm9yIGJ1aWxkaW5nIGEgY3Jvc3MtY29tcGlsZXIuICBJbnN0YWxsIGdudS9zdHVicy5oIGFzCi0gICAgICAgICAgICAgICAgcGFydCBvZiAnaW5zdGFsbC1oZWFkZXJzJywgbm90ICdpbnN0YWxsLW90aGVycycuCi0gICAgICAgICAgICAgICAgSWYgaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycyBpcyAneWVzJywgaW5zdGFsbCBhIGR1bW15IGNvcHkgb2YKLSAgICAgICAgICAgICAgICBnbnUvc3R1YnMuaCwgaW5zdGVhZCBvZiBjb21wdXRpbmcgdGhlIHJlYWwgdGhpbmcuCi0gICAgICAgICAgICAgICAgKiBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oOiBOZXcgZmlsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUgICAgICAgICAgICAgICAgICB8IDIyICsrKysrKysrKysrKysrKysrKysrKy0KLSBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oIHwgMTIgKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmgKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDlmYmY3MDUyMDAuLjY0YmZkNDU1YmMgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKLUBAIC03MCw5ICs3MCwxOCBAQCBzdWJkaXItZGlycyA9IGluY2x1ZGUKLSB2cGF0aCAlLmggJChzdWJkaXItZGlycykKLSAKLSAjIFdoYXQgdG8gaW5zdGFsbC4KLS1pbnN0YWxsLW90aGVycyA9ICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaAotIGluc3RhbGwtYmluLXNjcmlwdCA9Ci0gCi0rIyBJZiB3ZSdyZSBib290c3RyYXBwaW5nLCBpbnN0YWxsIGEgZHVtbXkgZ251L3N0dWJzLmggYWxvbmcgd2l0aCB0aGUKLSsjIG90aGVyIGhlYWRlcnMsIHNvICdtYWtlIGluc3RhbGwtaGVhZGVycycgcHJvZHVjZXMgYSB1c2VhYmxlIGluY2x1ZGUKLSsjIHRyZWUuICBPdGhlcndpc2UsIGluc3RhbGwgZ251L3N0dWJzLmggbGF0ZXIsIGFmdGVyIHRoZSByZXN0IG9mIHRoZQotKyMgYnVpbGQgaXMgZG9uZS4KLStpZmVxICgkKGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMpLHllcykKLStpbnN0YWxsLWhlYWRlcnM6ICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaAotK2Vsc2UKLStpbnN0YWxsLW90aGVycyA9ICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaAotK2VuZGlmCi0rCi0gaWZlcSAoeWVzLCQoYnVpbGQtc2hhcmVkKSkKLSBoZWFkZXJzICs9IGdudS9saWItbmFtZXMuaAotIGVuZGlmCi1AQCAtMTk2LDYgKzIwNSwxNiBAQCBvdGhlcnM6ICQoY29tbW9uLW9ianBmeCl0ZXN0cnVuLnNoCi0gCi0gc3ViZGlyLXN0dWJzIDo9ICQoZm9yZWFjaCBkaXIsJChzdWJkaXJzKSwkKGNvbW1vbi1vYmpwZngpJChkaXIpL3N0dWJzKQotIAotKyMgZ251L3N0dWJzLmggZGVwZW5kcyAodmlhIHRoZSBzdWJkaXIgJ3N0dWJzJyB0YXJnZXRzKSBvbiBhbGwgdGhlIC5vCi0rIyBmaWxlcyBpbiBFR0xJQkMuICBGb3IgYm9vdHN0cmFwcGluZyBhIEdDQy9FR0xJQkMgcGFpciwgYW4gZW1wdHkKLSsjIGdudS9zdHVicy5oIGlzIGdvb2QgZW5vdWdoLgotK2lmZXEgKCQoaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycykseWVzKQotKyQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaDogaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaCAkKCtmb3JjZSkKLSsJJChtYWtlLXRhcmdldC1kaXJlY3RvcnkpCi0rCSQoSU5TVEFMTF9EQVRBKSAkPCAkQAotKwotK2luc3RhbGxlZC1zdHVicyA9Ci0rZWxzZQotIGlmbmRlZiBhYmktdmFyaWFudHMKLSBpbnN0YWxsZWQtc3R1YnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKLSBlbHNlCi1AQCAtMjIyLDYgKzI0MSw3IEBAICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaDogJCgrZm9yY2UpCi0gCi0gaW5zdGFsbC1vdGhlcnMtbm9zdWJkaXI6ICQoaW5zdGFsbGVkLXN0dWJzKQotIGVuZGlmCi0rZW5kaWYKLSAKLSAKLSAjIFNpbmNlIHN0dWJzLmggaXMgbmV2ZXIgbmVlZGVkIHdoZW4gYnVpbGRpbmcgdGhlIGxpYnJhcnksIHdlIHNpbXBsaWZ5IHRoZQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmggYi9pbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uMWQyYjY2OWFmZgotLS0tIC9kZXYvbnVsbAotKysrIGIvaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaAotQEAgLTAsMCArMSwxMiBAQAotKy8qIFBsYWNlaG9sZGVyIHN0dWJzLmggZmlsZSBmb3IgYm9vdHN0cmFwcGluZy4KLSsKLSsgICBXaGVuIGJvb3RzdHJhcHBpbmcgYSBHQ0MvRUdMSUJDIHBhaXIsIEdDQyByZXF1aXJlcyB0aGF0IHRoZSBFR0xJQkMKLSsgICBoZWFkZXJzIGJlIGluc3RhbGxlZCwgYnV0IHdlIGNhbid0IGZ1bGx5IGJ1aWxkIEVHTElCQyB3aXRob3V0IHRoYXQKLSsgICBHQ0MuICBTbyB3ZSBydW4gdGhlIGNvbW1hbmQ6Ci0rCi0rICAgICAgbWFrZSBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycz15ZXMKLSsKLSsgICB0byBpbnN0YWxsIHRoZSBoZWFkZXJzIEdDQyBuZWVkcywgYnV0IGF2b2lkIGJ1aWxkaW5nIGNlcnRhaW4KLSsgICBkaWZmaWN1bHQgaGVhZGVycy4gIFRoZSA8Z251L3N0dWJzLmg+IGhlYWRlciBkZXBlbmRzLCB2aWEgdGhlCi0rICAgRUdMSUJDIHN1YmRpciAnc3R1YnMnIG1ha2UgdGFyZ2V0cywgb24gZXZlcnkgLm8gZmlsZSBpbiBFR0xJQkMsIGJ1dAotKyAgIGFuIGVtcHR5IHN0dWJzLmggbGlrZSB0aGlzIHdpbGwgZG8gZmluZSBmb3IgR0NDLiAgKi8KLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2NWFkNjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi1Gcm9tIGUyNjY3MDg2YmY5ODRkZTRkM2YxMjI2Yjk0Njc3NjFjZDVhNGMzOWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAxNToxNTowOSAtMDgwMAotU3ViamVjdDogW1BBVENIIDIwLzI4XSBlZ2xpYmM6IENsZWFyIGNhY2hlIGxpbmVzIG9uIHBwYzh4eAotCi0yMDA3LTA2LTEzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgotICAgICAgICAgICAgTWFyayBTaGlud2VsbCAgPHNoaW53ZWxsQGNvZGVzb3VyY2VyeS5jb20+Ci0KLSAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYwotICAgICAgICAoX19saWJjX3N0YXJ0X21haW4pOiBEZXRlY3QgOHh4IHBhcnRzIGFuZCBjbGVhcgotICAgICAgICBfX2NhY2hlX2xpbmVfc2l6ZSBpZiBkZXRlY3RlZC4KLSAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCi0gICAgICAgIChETF9QTEFURk9STV9BVVhWKTogTGlrZXdpc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYyAgfCAxNCArKysrKysrKysrKysrLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jIHwgMTYgKysrKysrKysrKysrKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCi1pbmRleCBiMDRlY2M0YTRjLi43NWJkYTk3MjQxIDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYwotQEAgLTI0LDkgKzI0LDIxIEBAIGludCBfX2NhY2hlX2xpbmVfc2l6ZSBhdHRyaWJ1dGVfaGlkZGVuOwotIC8qIFNjYW4gdGhlIEF1eCBWZWN0b3IgZm9yIHRoZSAiRGF0YSBDYWNoZSBCbG9jayBTaXplIiBlbnRyeS4gIElmIGZvdW5kCi0gICAgdmVyaWZ5IHRoYXQgdGhlIHN0YXRpYyBleHRlcm4gX19jYWNoZV9saW5lX3NpemUgaXMgZGVmaW5lZCBieSBjaGVja2luZwotICAgIGZvciBub3QgTlVMTC4gIElmIGl0IGlzIGRlZmluZWQgdGhlbiBhc3NpZ24gdGhlIGNhY2hlIGJsb2NrIHNpemUKLS0gICB2YWx1ZSB0byBfX2NhY2hlX2xpbmVfc2l6ZS4gICovCi0rICAgdmFsdWUgdG8gX19jYWNoZV9saW5lX3NpemUuICBUaGlzIGlzIHVzZWQgYnkgbWVtc2V0IHRvCi0rICAgb3B0aW1pemUgc2V0dGluZyB0byB6ZXJvLiAgV2UgaGF2ZSB0byBkZXRlY3QgOHh4IHByb2Nlc3NvcnMsIHdoaWNoCi0rICAgaGF2ZSBidWdneSBkY2J6IGltcGxlbWVudGF0aW9ucyB0aGF0IGNhbm5vdCByZXBvcnQgcGFnZSBmYXVsdHMKLSsgICBjb3JyZWN0bHkuICBUaGF0IHJlcXVpcmVzIHJlYWRpbmcgU1BSLCB3aGljaCBpcyBhIHByaXZpbGVnZWQKLSsgICBvcGVyYXRpb24uICBGb3J0dW5hdGVseSAyLjIuMTggYW5kIGxhdGVyIGVtdWxhdGVzIFBvd2VyUEMgbWZzcHIKLSsgICByZWFkcyBmcm9tIHRoZSBQVlIgcmVnaXN0ZXIuICAgKi8KLSAjZGVmaW5lIERMX1BMQVRGT1JNX0FVWFYJCQkJCQkgICAgICBcCi0gICAgICAgY2FzZSBBVF9EQ0FDSEVCU0laRToJCQkJCQkgICAgICBcCi0rCWlmIChfX0xJTlVYX0tFUk5FTF9WRVJTSU9OID49IDB4MDIwMjE4KQkJCQkgICAgICBcCi0rCSAgewkJCQkJCQkJICAgICAgXAotKwkgICAgdW5zaWduZWQgcHZyID0gMDsJCQkJCQkgICAgICBcCi0rCSAgICBhc20gKCJtZnNwciAlMCwgMjg3IiA6ICI9ciIgKHB2cikpOwkJCQkgICAgICBcCi0rCSAgICBpZiAoKHB2ciAmIDB4ZmZmZjAwMDApID09IDB4MDA1MDAwMDApCQkJICAgICAgXAotKwkgICAgICBicmVhazsJCQkJCQkJICAgICAgXAotKwkgIH0JCQkJCQkJCSAgICAgIFwKLSAJX19jYWNoZV9saW5lX3NpemUgPSBhdi0+YV91bi5hX3ZhbDsJCQkJICAgICAgXAotIAlicmVhazsKLSAKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCi1pbmRleCA0ZmQ1ZjcwNzAwLi4xYTIxZTQ2NzVjIDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCi1AQCAtNzMsMTEgKzczLDI1IEBAIF9fbGliY19zdGFydF9tYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YsCi0gCi0gICAvKiBJbml0aWFsaXplIHRoZSBfX2NhY2hlX2xpbmVfc2l6ZSB2YXJpYWJsZSBmcm9tIHRoZSBhdXggdmVjdG9yLiAgRm9yIHRoZQotICAgICAgc3RhdGljIGNhc2UsIHdlIGFsc28gbmVlZCBfZGxfaHdjYXAsIF9kbF9od2NhcDIgYW5kIF9kbF9wbGF0Zm9ybSwgc28gd2UKLS0gICAgIGNhbiBjYWxsIF9fdGNiX3BhcnNlX2h3Y2FwX2FuZF9jb252ZXJ0X2F0X3BsYXRmb3JtICgpLiAgKi8KLSsgICAgIGNhbiBjYWxsIF9fdGNiX3BhcnNlX2h3Y2FwX2FuZF9jb252ZXJ0X2F0X3BsYXRmb3JtICgpLgotKwotKyAgICAgVGhpcyBpcyB1c2VkIGJ5IG1lbXNldCB0byBvcHRpbWl6ZSBzZXR0aW5nIHRvIHplcm8uICBXZSBoYXZlIHRvCi0rICAgICBkZXRlY3QgOHh4IHByb2Nlc3NvcnMsIHdoaWNoIGhhdmUgYnVnZ3kgZGNieiBpbXBsZW1lbnRhdGlvbnMgdGhhdAotKyAgICAgY2Fubm90IHJlcG9ydCBwYWdlIGZhdWx0cyBjb3JyZWN0bHkuICBUaGF0IHJlcXVpcmVzIHJlYWRpbmcgU1BSLAotKyAgICAgd2hpY2ggaXMgYSBwcml2aWxlZ2VkIG9wZXJhdGlvbi4gIEZvcnR1bmF0ZWx5IDIuMi4xOCBhbmQgbGF0ZXIKLSsgICAgIGVtdWxhdGVzIFBvd2VyUEMgbWZzcHIgcmVhZHMgZnJvbSB0aGUgUFZSIHJlZ2lzdGVyLiAgKi8KLSAgIGZvciAoRWxmVyAoYXV4dl90KSAqIGF2ID0gYXV4dmVjOyBhdi0+YV90eXBlICE9IEFUX05VTEw7ICsrYXYpCi0gICAgIHN3aXRjaCAoYXYtPmFfdHlwZSkKLSAgICAgICB7Ci0gICAgICAgY2FzZSBBVF9EQ0FDSEVCU0laRToKLSsJaWYgKF9fTElOVVhfS0VSTkVMX1ZFUlNJT04gPj0gMHgwMjAyMTgpCi0rCSAgewotKwkgICAgdW5zaWduZWQgcHZyID0gMDsKLSsKLSsJICAgIGFzbSAoIm1mc3ByICUwLCAyODciIDogIj1yIiAocHZyKSA6KTsKLSsJICAgIGlmICgocHZyICYgMHhmZmZmMDAwMCkgPT0gMHgwMDUwMDAwMCkKLSsJICAgICAgYnJlYWs7Ci0rCSAgfQotIAlfX2NhY2hlX2xpbmVfc2l6ZSA9IGF2LT5hX3VuLmFfdmFsOwotIAlicmVhazsKLSAjaWZuZGVmIFNIQVJFRAotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGE1NTY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2gKQEAgLTAsMCArMSw2MTYgQEAKK0Zyb20gNTY0MTQ1MmEyNGY3NmM1ZGFmYTM3NDlhNTQyZmNhYzkzZjc3MzkwZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjQyOjU4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGVnbGliYzogQ3Jvc3MgYnVpbGRpbmcgYW5kIHRlc3RpbmcgaW5zdHJ1Y3Rpb25zCisKK1BvcnRlZCBmcm9tIGVnbGliYworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBHTElCQy5jcm9zcy1idWlsZGluZyB8IDM4MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgR0xJQkMuY3Jvc3MtdGVzdGluZyAgfCAyMDUgKysrKysrKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDU4OCBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IEdMSUJDLmNyb3NzLWJ1aWxkaW5nCisgY3JlYXRlIG1vZGUgMTAwNjQ0IEdMSUJDLmNyb3NzLXRlc3RpbmcKKworZGlmZiAtLWdpdCBhL0dMSUJDLmNyb3NzLWJ1aWxkaW5nIGIvR0xJQkMuY3Jvc3MtYnVpbGRpbmcKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi5lNmUwZGExYWFmCistLS0gL2Rldi9udWxsCisrKysgYi9HTElCQy5jcm9zcy1idWlsZGluZworQEAgLTAsMCArMSwzODMgQEAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBtb2RlOiB0ZXh0IC0qLQorKworKyAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzLUNvbXBpbGluZyBHTElCQworKyAgICAgICAgICAgICAgICAgIEppbSBCbGFuZHkgPGppbWJAY29kZXNvdXJjZXJ5LmNvbT4KKysKKysKKytJbnRyb2R1Y3Rpb24KKysKKytNb3N0IEdOVSB0b29scyBoYXZlIGEgc2ltcGxlIGJ1aWxkIHByb2NlZHVyZTogeW91IHJ1biB0aGVpcgorKydjb25maWd1cmUnIHNjcmlwdCwgYW5kIHRoZW4geW91IHJ1biAnbWFrZScuICBVbmZvcnR1bmF0ZWx5LCB0aGUKKytwcm9jZXNzIG9mIGNyb3NzLWNvbXBpbGluZyB0aGUgR05VIEMgbGlicmFyeSBpcyBxdWl0ZSBhIGJpdCBtb3JlCisraW52b2x2ZWQ6CisrCisrMSkgQnVpbGQgYSBjcm9zcy1jb21waWxlciwgd2l0aCBjZXJ0YWluIGZhY2lsaXRpZXMgZGlzYWJsZWQuCisrCisrMikgQ29uZmlndXJlIHRoZSBDIGxpYnJhcnkgdXNpbmcgdGhlIGNvbXBpbGVyIHlvdSBidWlsdCBpbiBzdGVwIDEpLgorKyAgIEJ1aWxkIGEgZmV3IG9mIHRoZSBDIHJ1bi10aW1lIG9iamVjdCBmaWxlcywgYnV0IG5vdCB0aGUgcmVzdCBvZiB0aGUKKysgICBsaWJyYXJ5LiAgSW5zdGFsbCB0aGUgbGlicmFyeSdzIGhlYWRlciBmaWxlcyBhbmQgdGhlIHJ1bi10aW1lCisrICAgb2JqZWN0IGZpbGVzLCBhbmQgY3JlYXRlIGEgZHVtbXkgbGliYy5zby4KKysKKyszKSBCdWlsZCBhIHNlY29uZCBjcm9zcy1jb21waWxlciwgdXNpbmcgdGhlIGhlYWRlciBmaWxlcyBhbmQgb2JqZWN0CisrICAgZmlsZXMgeW91IGluc3RhbGxlZCBpbiBzdGVwIDIuCisrCisrNCkgQ29uZmlndXJlLCBidWlsZCwgYW5kIGluc3RhbGwgYSBmcmVzaCBDIGxpYnJhcnksIHVzaW5nIHRoZSBjb21waWxlcgorKyAgIGJ1aWx0IGluIHN0ZXAgMy4KKysKKys1KSBCdWlsZCBhIHRoaXJkIGNyb3NzLWNvbXBpbGVyLCBiYXNlZCBvbiB0aGUgQyBsaWJyYXJ5IGJ1aWx0IGluIHN0ZXAgNC4KKysKKytUaGUgcmVhc29uIGZvciB0aGlzIGNvbXBsZXhpdHkgaXMgdGhhdCwgYWx0aG91Z2ggR0NDIGFuZCB0aGUgR05VIEMKKytsaWJyYXJ5IGFyZSBkaXN0cmlidXRlZCBzZXBhcmF0ZWx5LCB0aGV5IGFyZSBub3QgYWN0dWFsbHkgaW5kZXBlbmRlbnQKKytvZiBlYWNoIG90aGVyOiBHQ0MgcmVxdWlyZXMgdGhlIEMgbGlicmFyeSdzIGhlYWRlcnMgYW5kIHNvbWUgb2JqZWN0CisrZmlsZXMgdG8gY29tcGlsZSBpdHMgb3duIGxpYnJhcmllcywgd2hpbGUgdGhlIEMgbGlicmFyeSBkZXBlbmRzIG9uCisrR0NDJ3MgbGlicmFyaWVzLiAgR0xJQkMgaW5jbHVkZXMgZmVhdHVyZXMgYW5kIGJ1ZyBmaXhlcyB0byB0aGUgc3RvY2sKKytHTlUgQyBsaWJyYXJ5IHRoYXQgc2ltcGxpZnkgdGhpcyBwcm9jZXNzLCBidXQgdGhlIGZ1bmRhbWVudGFsCisraW50ZXJkZXBlbmRlbmN5IHN0YW5kcy4KKysKKytJbiB0aGlzIGRvY3VtZW50LCB3ZSBleHBsYWluIGhvdyB0byBjcm9zcy1jb21waWxlIGFuIEdMSUJDL0dDQyBwYWlyCisrZnJvbSBzb3VyY2UuICBPdXIgaW50ZW5kZWQgYXVkaWVuY2UgaXMgZGV2ZWxvcGVycyB3aG8gYXJlIGFscmVhZHkKKytmYW1pbGlhciB3aXRoIHRoZSBHTlUgdG9vbGNoYWluIGFuZCBjb21mb3J0YWJsZSB3b3JraW5nIHdpdGgKKytjcm9zcy1kZXZlbG9wbWVudCB0b29scy4gIFdoaWxlIHdlIGRvIHByZXNlbnQgYSB3b3JrZWQgZXhhbXBsZSB0bworK2FjY29tcGFueSB0aGUgZXhwbGFuYXRpb24sIGZvciBjbGFyaXR5J3Mgc2FrZSB3ZSBkbyBub3QgY292ZXIgbWFueSBvZgorK3RoZSBvcHRpb25zIGF2YWlsYWJsZSB0byBjcm9zcy10b29sY2hhaW4gdXNlcnMuCisrCisrCisrUHJlcGFyYXRpb24KKysKKytHTElCQyByZXF1aXJlcyByZWNlbnQgdmVyc2lvbnMgb2YgdGhlIEdOVSBiaW51dGlscywgR0NDLCBhbmQgdGhlCisrTGludXgga2VybmVsLiAgVGhlIHdlYiBwYWdlIDxodHRwOi8vd3d3LmVnbGliYy5vcmcvcHJlcmVxdWlzaXRlcz4KKytkb2N1bWVudHMgdGhlIGN1cnJlbnQgcmVxdWlyZW1lbnRzLCBhbmQgbGlzdHMgcGF0Y2hlcyBuZWVkZWQgZm9yCisrY2VydGFpbiB0YXJnZXQgYXJjaGl0ZWN0dXJlcy4gIEFzIG9mIHRoaXMgd3JpdGluZywgdGhlc2UgYnVpbGQKKytpbnN0cnVjdGlvbnMgaGF2ZSBiZWVuIHRlc3RlZCB3aXRoIGJpbnV0aWxzIDIuMjIuNTEsIEdDQyA0LjYuMiwKKythbmQgTGludXggMy4xLgorKworK0ZpcnN0LCBsZXQncyBzZXQgc29tZSB2YXJpYWJsZXMsIHRvIHNpbXBsaWZ5IGxhdGVyIGNvbW1hbmRzLiAgV2UnbGwKKytidWlsZCBHTElCQyBhbmQgR0NDIGZvciBhbiBBUk0gdGFyZ2V0LCBrbm93biB0byB0aGUgTGludXgga2VybmVsCisrYXMgJ2FybScsIGFuZCB3ZSdsbCBkbyB0aGUgYnVpbGQgb24gYW4gSW50ZWwgeDg2XzY0IExpbnV4IGJveDoKKysKKysgICAgJCBidWlsZD14ODZfNjQtcGMtbGludXgtZ251CisrICAgICQgaG9zdD0kYnVpbGQKKysgICAgJCB0YXJnZXQ9YXJtLW5vbmUtbGludXgtZ251ZWFiaQorKyAgICAkIGxpbnV4X2FyY2g9YXJtCisrCisrV2UncmUgdXNpbmcgdGhlIGFmb3JlbWVudGlvbmVkIHZlcnNpb25zIG9mIEJpbnV0aWxzLCBHQ0MsIGFuZCBMaW51eDoKKysKKysgICAgJCBiaW51dGlsc3Y9YmludXRpbHMtMi4yMi41MQorKyAgICAkIGdjY3Y9Z2NjLTQuNi4yCisrICAgICQgbGludXh2PWxpbnV4LTMuMQorKworK1dlJ3JlIGNhcnJ5aW5nIG91dCB0aGUgZW50aXJlIHByb2Nlc3MgdW5kZXIgJ34vY3Jvc3MtYnVpbGQnLCB3aGljaAorK2NvbnRhaW5zIHVucGFja2VkIHNvdXJjZSB0cmVlcyBmb3IgYmludXRpbHMsIGdjYywgYW5kIGxpbnV4IGtlcm5lbCwKKythbG9uZyB3aXRoIEdMSUJDIHN2biB0cnVuayAod2hpY2ggY2FuIGJlIGNoZWNrZWQtb3V0IHdpdGgKKysnc3ZuIGNvIGh0dHA6Ly93d3cuZWdsaWJjLm9yZy9zdm4vdHJ1bmsgZWdsaWJjJyk6CisrCisrICAgICQgdG9wPSRIT01FL2Nyb3NzLWJ1aWxkLyR0YXJnZXQKKysgICAgJCBzcmM9JEhPTUUvY3Jvc3MtYnVpbGQvc3JjCisrICAgICQgbHMgJHNyYworKyAgICBiaW51dGlscy0yLjIyLjUxICBnbGliYyAgZ2NjLTQuNi4yICBsaW51eC0zLjEKKysKKytXZSdyZSBnb2luZyB0byBwbGFjZSBvdXIgYnVpbGQgZGlyZWN0b3JpZXMgaW4gYSBzdWJkaXJlY3RvcnkgJ29iaicsCisrd2UnbGwgaW5zdGFsbCB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluIGluICd0b29scycsIGFuZCB3ZSdsbAorK3BsYWNlIG91ciBzeXNyb290IChjb250YWluaW5nIGZpbGVzIHRvIGJlIGluc3RhbGxlZCBvbiB0aGUgdGFyZ2V0Cisrc3lzdGVtKSBpbiAnc3lzcm9vdCc6CisrCisrICAgICQgb2JqPSR0b3Avb2JqCisrICAgICQgdG9vbHM9JHRvcC90b29scworKyAgICAkIHN5c3Jvb3Q9JHRvcC9zeXNyb290CisrCisrCisrQmludXRpbHMKKysKKytDb25maWd1cmluZyBhbmQgYnVpbGRpbmcgYmludXRpbHMgZm9yIHRoZSB0YXJnZXQgaXMgc3RyYWlnaHRmb3J3YXJkOgorKworKyAgICAkIG1rZGlyIC1wICRvYmovYmludXRpbHMKKysgICAgJCBjZCAkb2JqL2JpbnV0aWxzCisrICAgICQgJHNyYy8kYmludXRpbHN2L2NvbmZpZ3VyZSBcCisrICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAorKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAorKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdAorKyAgICAkIG1ha2UKKysgICAgJCBtYWtlIGluc3RhbGwKKysKKysKKytUaGUgRmlyc3QgR0NDCisrCisrRm9yIG91ciB3b3JrLCB3ZSBuZWVkIGEgY3Jvc3MtY29tcGlsZXIgdGFyZ2V0aW5nIGFuIEFSTSBMaW51eAorK3N5c3RlbS4gIEhvd2V2ZXIsIHRoYXQgY29uZmlndXJhdGlvbiBpbmNsdWRlcyB0aGUgc2hhcmVkIGxpYnJhcnkKKysnbGliZ2NjX3Muc28nLCB3aGljaCBpcyBjb21waWxlZCBhZ2FpbnN0IHRoZSBHTElCQyBoZWFkZXJzICh3aGljaCB3ZQorK2hhdmVuJ3QgaW5zdGFsbGVkIHlldCkgYW5kIGxpbmtlZCBhZ2FpbnN0ICdsaWJjLnNvJyAod2hpY2ggd2UgaGF2ZW4ndAorK2J1aWx0IHlldCkuCisrCisrRm9ydHVuYXRlbHksIHRoZXJlIGFyZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEdDQyB3aGljaCB0ZWxsIGl0IG5vdAorK3RvIGJ1aWxkICdsaWJnY2Nfcy5zbycuICBUaGUgJy0td2l0aG91dC1oZWFkZXJzJyBvcHRpb24gaXMgc3VwcG9zZWQgdG8KKyt0YWtlIGNhcmUgb2YgdGhpcywgYnV0IGl0cyBpbXBsZW1lbnRhdGlvbiBpcyBpbmNvbXBsZXRlLCBzbyB5b3UgbXVzdAorK2Fsc28gY29uZmlndXJlIHdpdGggdGhlICctLXdpdGgtbmV3bGliJyBvcHRpb24uICBXaGlsZSAnLS13aXRoLW5ld2xpYicKKythcHBlYXJzIHRvIG1lYW4gIlVzZSB0aGUgTmV3bGliIEMgbGlicmFyeSIsIGl0cyBlZmZlY3QgaXMgdG8gdGVsbCB0aGUKKytHQ0MgYnVpbGQgbWFjaGluZXJ5LCAiRG9uJ3QgYXNzdW1lIHRoZXJlIGlzIGEgQyBsaWJyYXJ5IGF2YWlsYWJsZS4iCisrCisrV2UgYWxzbyBuZWVkIHRvIGRpc2FibGUgc29tZSBvZiB0aGUgbGlicmFyaWVzIHRoYXQgd291bGQgbm9ybWFsbHkgYmUKKytidWlsdCBhbG9uZyB3aXRoIEdDQywgYW5kIHNwZWNpZnkgdGhhdCBvbmx5IHRoZSBjb21waWxlciBmb3IgdGhlIEMKKytsYW5ndWFnZSBpcyBuZWVkZWQuCisrCisrU28sIHdlIGNyZWF0ZSBhIGJ1aWxkIGRpcmVjdG9yeSwgY29uZmlndXJlLCBtYWtlLCBhbmQgaW5zdGFsbC4KKysKKysgICAgJCBta2RpciAtcCAkb2JqL2djYzEKKysgICAgJCBjZCAkb2JqL2djYzEKKysgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCisrICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAorKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAorKyAgICA+ICAgICAtLXdpdGhvdXQtaGVhZGVycyAtLXdpdGgtbmV3bGliIFwKKysgICAgPiAgICAgLS1kaXNhYmxlLXNoYXJlZCAtLWRpc2FibGUtdGhyZWFkcyAtLWRpc2FibGUtbGlic3NwIFwKKysgICAgPiAgICAgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoIFwKKysgICAgPiAgICAgLS1kaXNhYmxlLWRlY2ltYWwtZmxvYXQgLS1kaXNhYmxlLWxpYmZmaSBcCisrICAgID4gICAgIC0tZW5hYmxlLWxhbmd1YWdlcz1jCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsCisrCisrCisrTGludXggS2VybmVsIEhlYWRlcnMKKysKKytUbyBjb25maWd1cmUgR0xJQkMsIHdlIGFsc28gbmVlZCBMaW51eCBrZXJuZWwgaGVhZGVycyBpbiBwbGFjZS4KKytGb3J0dW5hdGVseSwgdGhlIExpbnV4IG1ha2VmaWxlcyBoYXZlIGEgdGFyZ2V0IHRoYXQgaW5zdGFsbHMgdGhlbSBmb3IKKyt1cy4gIFNpbmNlIHRoZSBwcm9jZXNzIGRvZXMgbW9kaWZ5IHRoZSBzb3VyY2UgdHJlZSBhIGJpdCwgd2UgbWFrZSBhCisrY29weSBmaXJzdDoKKysKKysgICAgJCBjcCAtciAkc3JjLyRsaW51eHYgJG9iai9saW51eAorKyAgICAkIGNkICRvYmovbGludXgKKysKKytOb3cgd2UncmUgcmVhZHkgdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBpbnRvIHRoZSBzeXNyb290OgorKworKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBcCisrICAgID4gbWFrZSBoZWFkZXJzX2luc3RhbGwgXAorKyAgICA+ICAgICAgQVJDSD0kbGludXhfYXJjaCBDUk9TU19DT01QSUxFPSR0YXJnZXQtIFwKKysgICAgPiAgICAgIElOU1RBTExfSERSX1BBVEg9JHN5c3Jvb3QvdXNyCisrCisrCisrR0xJQkMgSGVhZGVycyBhbmQgUHJlbGltaW5hcnkgT2JqZWN0cworKworK1VzaW5nIHRoZSBjcm9zcy1jb21waWxlciB3ZSd2ZSBqdXN0IGJ1aWx0LCB3ZSBjYW4gbm93IGNvbmZpZ3VyZSBHTElCQworK3dlbGwgZW5vdWdoIHRvIGluc3RhbGwgdGhlIGhlYWRlcnMgYW5kIGJ1aWxkIHRoZSBvYmplY3QgZmlsZXMgdGhhdCB0aGUKKytmdWxsIGNyb3NzLWNvbXBpbGVyIHdpbGwgbmVlZDoKKysKKysgICAgJCBta2RpciAtcCAkb2JqL2dsaWJjLWhlYWRlcnMKKysgICAgJCBjZCAkb2JqL2dsaWJjLWhlYWRlcnMKKysgICAgJCBCVUlMRF9DQz1nY2MgXAorKyAgICA+IENDPSR0b29scy9iaW4vJHRhcmdldC1nY2MgXAorKyAgICA+IENYWD0kdG9vbHMvYmluLyR0YXJnZXQtZysrIFwKKysgICAgPiBBUj0kdG9vbHMvYmluLyR0YXJnZXQtYXIgXAorKyAgICA+IFJBTkxJQj0kdG9vbHMvYmluLyR0YXJnZXQtcmFubGliIFwKKysgICAgPiAkc3JjL2dsaWJjL2xpYmMvY29uZmlndXJlIFwKKysgICAgPiAgICAgLS1wcmVmaXg9L3VzciBcCisrICAgID4gICAgIC0td2l0aC1oZWFkZXJzPSRzeXNyb290L3Vzci9pbmNsdWRlIFwKKysgICAgPiAgICAgLS1idWlsZD0kYnVpbGQgXAorKyAgICA+ICAgICAtLWhvc3Q9JHRhcmdldCBcCisrICAgID4gICAgIC0tZGlzYWJsZS1wcm9maWxlIC0td2l0aG91dC1nZCAtLXdpdGhvdXQtY3ZzIFwKKysgICAgPiAgICAgLS1lbmFibGUtYWRkLW9ucz1ucHRsLGxpYmlkbiwuLi9wb3J0cworKworK1RoZSBvcHRpb24gJy0tcHJlZml4PS91c3InIG1heSBsb29rIHN0cmFuZ2UsIGJ1dCB5b3Ugc2hvdWxkIG5ldmVyCisrY29uZmlndXJlIEdMSUJDIHdpdGggYSBwcmVmaXggb3RoZXIgdGhhbiAnL3Vzcic6IGluIHZhcmlvdXMgcGxhY2VzLAorK0dMSUJDJ3MgYnVpbGQgc3lzdGVtIGNoZWNrcyB3aGV0aGVyIHRoZSBwcmVmaXggaXMgJy91c3InLCBhbmQgZG9lcworK3NwZWNpYWwgaGFuZGxpbmcgb25seSBpZiB0aGF0IGlzIHRoZSBjYXNlLiAgVW5sZXNzIHlvdSB1c2UgdGhpcworK3ByZWZpeCwgeW91IHdpbGwgZ2V0IGEgc3lzcm9vdCB0aGF0IGRvZXMgbm90IHVzZSB0aGUgc3RhbmRhcmQgTGludXgKKytkaXJlY3RvcnkgbGF5b3V0cyBhbmQgY2Fubm90IGJlIHVzZWQgYXMgYSBiYXNpcyBmb3IgdGhlIHJvb3QKKytmaWxlc3lzdGVtIG9uIHlvdXIgdGFyZ2V0IHN5c3RlbSBjb21wYXRpYmx5IHdpdGggbm9ybWFsIEdMSUJDCisraW5zdGFsbGF0aW9ucy4KKysKKytUaGUgJy0td2l0aC1oZWFkZXJzJyBvcHRpb24gdGVsbHMgR0xJQkMgd2hlcmUgdGhlIExpbnV4IGhlYWRlcnMgaGF2ZQorK2JlZW4gaW5zdGFsbGVkLgorKworK1RoZSAnLS1lbmFibGUtYWRkLW9ucz1ucHRsLGxpYmlkbiwuLi9wb3J0cycgb3B0aW9uIHRlbGxzIEdMSUJDIHRvIGxvb2sKKytmb3IgdGhlIGxpc3RlZCBnbGliYyBhZGQtb25zLiBNb3N0IG5vdGFibHkgdGhlIHBvcnRzIGFkZC1vbiAobG9jYXRlZAorK2p1c3QgYWJvdmUgdGhlIGxpYmMgc291cmNlcyBpbiB0aGUgR0xJQkMgc3ZuIHRyZWUpIGlzIHJlcXVpcmVkIHRvCisrc3VwcG9ydCBBUk0gdGFyZ2V0cy4KKysKKytXZSBjYW4gbm93IHVzZSB0aGUgJ2luc3RhbGwtaGVhZGVycycgbWFrZWZpbGUgdGFyZ2V0IHRvIGluc3RhbGwgdGhlCisraGVhZGVyczoKKysKKysgICAgJCBtYWtlIGluc3RhbGwtaGVhZGVycyBpbnN0YWxsX3Jvb3Q9JHN5c3Jvb3QgXAorKyAgICA+ICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnM9eWVzCisrCisrVGhlICdpbnN0YWxsX3Jvb3QnIHZhcmlhYmxlIGluZGljYXRlcyB3aGVyZSB0aGUgZmlsZXMgc2hvdWxkIGFjdHVhbGx5CisrYmUgaW5zdGFsbGVkOyBpdHMgdmFsdWUgaXMgdHJlYXRlZCBhcyB0aGUgcGFyZW50IG9mIHRoZSAnLS1wcmVmaXgnCisrZGlyZWN0b3J5IHdlIHBhc3NlZCB0byB0aGUgY29uZmlndXJlIHNjcmlwdCwgc28gdGhlIGhlYWRlcnMgd2lsbCBnbyBpbgorKyckc3lzcm9vdC91c3IvaW5jbHVkZScuICBUaGUgJ2luc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMnIHZhcmlhYmxlCisrcmVxdWVzdHMgc3BlY2lhbCBoYW5kbGluZyBmb3IgY2VydGFpbiB0cmlja3kgaGVhZGVyIGZpbGVzLgorKworK05leHQsIHRoZXJlIGFyZSBhIGZldyBvYmplY3QgZmlsZXMgbmVlZGVkIHRvIGxpbmsgc2hhcmVkIGxpYnJhcmllcywKKyt3aGljaCB3ZSBidWlsZCBhbmQgaW5zdGFsbCBieSBoYW5kOgorKworKyAgICAkIG1rZGlyIC1wICRzeXNyb290L3Vzci9saWIKKysgICAgJCBtYWtlIGNzdS9zdWJkaXJfbGliCisrICAgICQgY3AgY3N1L2NydDEubyBjc3UvY3J0aS5vIGNzdS9jcnRuLm8gJHN5c3Jvb3QvdXNyL2xpYgorKworK0ZpbmFsbHksICdsaWJnY2Nfcy5zbycgcmVxdWlyZXMgYSAnbGliYy5zbycgdG8gbGluayBhZ2FpbnN0LiAgSG93ZXZlciwKKytzaW5jZSB3ZSB3aWxsIG5ldmVyIGFjdHVhbGx5IGV4ZWN1dGUgaXRzIGNvZGUsIGl0IGRvZXNuJ3QgbWF0dGVyIHdoYXQKKytpdCBjb250YWlucy4gIFNvLCB0cmVhdGluZyAnL2Rldi9udWxsJyBhcyBhIEMgc291cmNlIGZpbGUsIHdlIHByb2R1Y2UKKythIGR1bW15ICdsaWJjLnNvJyBpbiBvbmUgc3RlcDoKKysKKysgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtZ2NjIC1ub3N0ZGxpYiAtbm9zdGFydGZpbGVzIC1zaGFyZWQgLXggYyAvZGV2L251bGwgXAorKyAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgLW8gJHN5c3Jvb3QvdXNyL2xpYi9saWJjLnNvCisrCisrCisrVGhlIFNlY29uZCBHQ0MKKysKKytXaXRoIHRoZSBHTElCQyBoZWFkZXJzIGFuZCBzZWxlY3RlZCBvYmplY3QgZmlsZXMgaW5zdGFsbGVkLCB3ZSBjYW4KKytub3cgYnVpbGQgYSBHQ0MgdGhhdCBpcyBjYXBhYmxlIG9mIGNvbXBpbGluZyBHTElCQy4gIFdlIGNvbmZpZ3VyZSwKKytidWlsZCwgYW5kIGluc3RhbGwgdGhlIHNlY29uZCBHQ0MsIGFnYWluIGJ1aWxkaW5nIG9ubHkgdGhlIEMgY29tcGlsZXIsCisrYW5kIGF2b2lkaW5nIGxpYnJhcmllcyB3ZSB3b24ndCB1c2U6CisrCisrICAgICQgbWtkaXIgLXAgJG9iai9nY2MyCisrICAgICQgY2QgJG9iai9nY2MyCisrICAgICQgJHNyYy8kZ2Njdi9jb25maWd1cmUgXAorKyAgICA+ICAgICAtLXRhcmdldD0kdGFyZ2V0IFwKKysgICAgPiAgICAgLS1wcmVmaXg9JHRvb2xzIFwKKysgICAgPiAgICAgLS13aXRoLXN5c3Jvb3Q9JHN5c3Jvb3QgXAorKyAgICA+ICAgICAtLWRpc2FibGUtbGlic3NwIC0tZGlzYWJsZS1saWJnb21wIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKKysgICAgPiAgICAgLS1kaXNhYmxlLWxpYmZmaSAtLWRpc2FibGUtbGlicXVhZG1hdGggXAorKyAgICA+ICAgICAtLWVuYWJsZS1sYW5ndWFnZXM9YworKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbAorKworKworK0dMSUJDLCBDb21wbGV0ZQorKworK1dpdGggdGhlIHNlY29uZCBjb21waWxlciBidWlsdCBhbmQgaW5zdGFsbGVkLCB3ZSdyZSBub3cgcmVhZHkgZm9yIHRoZQorK2Z1bGwgR0xJQkMgYnVpbGQ6CisrCisrICAgICQgbWtkaXIgLXAgJG9iai9nbGliYworKyAgICAkIGNkICRvYmovZ2xpYmMKKysgICAgJCBCVUlMRF9DQz1nY2MgXAorKyAgICA+IENDPSR0b29scy9iaW4vJHRhcmdldC1nY2MgXAorKyAgICA+IENYWD0kdG9vbHMvYmluLyR0YXJnZXQtZysrIFwKKysgICAgPiBBUj0kdG9vbHMvYmluLyR0YXJnZXQtYXIgXAorKyAgICA+IFJBTkxJQj0kdG9vbHMvYmluLyR0YXJnZXQtcmFubGliIFwKKysgICAgPiAkc3JjL2dsaWJjL2xpYmMvY29uZmlndXJlIFwKKysgICAgPiAgICAgLS1wcmVmaXg9L3VzciBcCisrICAgID4gICAgIC0td2l0aC1oZWFkZXJzPSRzeXNyb290L3Vzci9pbmNsdWRlIFwKKysgICAgPiAgICAgLS13aXRoLWtjb25maWc9JG9iai9saW51eC9zY3JpcHRzL2tjb25maWcgXAorKyAgICA+ICAgICAtLWJ1aWxkPSRidWlsZCBcCisrICAgID4gICAgIC0taG9zdD0kdGFyZ2V0IFwKKysgICAgPiAgICAgLS1kaXNhYmxlLXByb2ZpbGUgLS13aXRob3V0LWdkIC0td2l0aG91dC1jdnMgXAorKyAgICA+ICAgICAtLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzCisrCisrTm90ZSB0aGUgYWRkaXRpb25hbCAnLS13aXRoLWtjb25maWcnIG9wdGlvbi4gVGhpcyB0ZWxscyBHTElCQyB3aGVyZSB0bworK2ZpbmQgdGhlIGhvc3QgY29uZmlnIHRvb2xzIHVzZWQgYnkgdGhlIGtlcm5lbCAnbWFrZSBjb25maWcnIGFuZCAnbWFrZQorK21lbnVjb25maWcnLiAgVGhlc2UgdG9vbHMgY2FuIGJlIHJlLXVzZWQgYnkgR0xJQkMgZm9yIGl0cyBvd24gJ21ha2UKKysqY29uZmlnJyBzdXBwb3J0LCB3aGljaCB3aWxsIGNyZWF0ZSAnb3B0aW9uLWdyb3Vwcy5jb25maWcnIGZvciB5b3UuCisrQnV0IGZpcnN0IG1ha2Ugc3VyZSB0aG9zZSB0b29scyBoYXZlIGJlZW4gYnVpbHQgYnkgcnVubmluZyBzb21lCisrZHVtbXkgJ21ha2UgKmNvbmZpZycgY2FsbHMgaW4gdGhlIGtlcm5lbCBkaXJlY3Rvcnk6CisrCisrICAgICQgY2QgJG9iai9saW51eAorKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGNvbmZpZyBcCisrICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAorKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIG1lbnVjb25maWcgXAorKyAgICA+ICAgICAgQVJDSD0kbGludXhfYXJjaCBDUk9TU19DT01QSUxFPSR0YXJnZXQtIFwKKysKKytOb3cgd2UgY2FuIGNvbmZpZ3VyZSBhbmQgYnVpbGQgdGhlIGZ1bGwgR0xJQkM6CisrCisrICAgICQgY2QgJG9iai9nbGliYworKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGRlZmNvbmZpZworKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIG1lbnVjb25maWcKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQorKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwgaW5zdGFsbF9yb290PSRzeXNyb290CisrCisrQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSBhIGNvbXBsZXRlIEdMSUJDIGluc3RhbGxhdGlvbiBpbiAnJHN5c3Jvb3QnLAorK3dpdGggaGVhZGVyIGZpbGVzLCBsaWJyYXJ5IGZpbGVzLCBhbmQgbW9zdCBvZiB0aGUgQyBydW50aW1lIHN0YXJ0dXAKKytmaWxlcyBpbiBwbGFjZS4KKysKKysKKytUaGUgVGhpcmQgR0NDCisrCisrRmluYWxseSwgd2UgcmVjb21waWxlIEdDQyBhZ2FpbnN0IHRoaXMgZnVsbCBpbnN0YWxsYXRpb24sIGVuYWJsaW5nCisrd2hhdGV2ZXIgbGFuZ3VhZ2VzIGFuZCBsaWJyYXJpZXMgd2Ugd291bGQgbGlrZSB0byB1c2U6CisrCisrICAgICQgbWtkaXIgLXAgJG9iai9nY2MzCisrICAgICQgY2QgJG9iai9nY2MzCisrICAgICQgJHNyYy8kZ2Njdi9jb25maWd1cmUgXAorKyAgICA+ICAgICAtLXRhcmdldD0kdGFyZ2V0IFwKKysgICAgPiAgICAgLS1wcmVmaXg9JHRvb2xzIFwKKysgICAgPiAgICAgLS13aXRoLXN5c3Jvb3Q9JHN5c3Jvb3QgXAorKyAgICA+ICAgICAtLWVuYWJsZS1fX2N4YV9hdGV4aXQgXAorKyAgICA+ICAgICAtLWRpc2FibGUtbGlic3NwIC0tZGlzYWJsZS1saWJnb21wIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKKysgICAgPiAgICAgLS1lbmFibGUtbGFuZ3VhZ2VzPWMsYysrCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsCisrCisrVGhlICctLWVuYWJsZS1fX2N4YV9hdGV4aXQnIG9wdGlvbiB0ZWxscyBHQ0Mgd2hhdCBzb3J0IG9mIEMrKworK2Rlc3RydWN0b3Igc3VwcG9ydCB0byBleHBlY3QgZnJvbSB0aGUgQyBsaWJyYXJ5OyBpdCdzIHJlcXVpcmVkIHdpdGgKKytHTElCQy4KKysKKytBbmQgc2luY2UgR0NDJ3MgaW5zdGFsbGF0aW9uIHByb2Nlc3MgaXNuJ3QgZGVzaWduZWQgdG8gaGVscCBjb25zdHJ1Y3QKKytzeXNyb290IHRyZWVzLCB3ZSBtdXN0IG1hbnVhbGx5IGNvcHkgY2VydGFpbiBsaWJyYXJpZXMgaW50byBwbGFjZSBpbgorK3RoZSBzeXNyb290LgorKworKyAgICAkIGNwIC1kICR0b29scy8kdGFyZ2V0L2xpYi9saWJnY2Nfcy5zbyogJHN5c3Jvb3QvbGliCisrICAgICQgY3AgLWQgJHRvb2xzLyR0YXJnZXQvbGliL2xpYnN0ZGMrKy5zbyogJHN5c3Jvb3QvdXNyL2xpYgorKworKworK1RyeWluZyBUaGluZ3MgT3V0CisrCisrQXQgdGhpcyBwb2ludCwgJyR0b29scycgY29udGFpbnMgYSBjcm9zcyB0b29sY2hhaW4gcmVhZHkgdG8gdXNlCisrdGhlIEdMSUJDIGluc3RhbGxhdGlvbiBpbiAnJHN5c3Jvb3QnOgorKworKyAgICAkIGNhdCA+IGhlbGxvLmMgPDxFT0YKKysgICAgPiAjaW5jbHVkZSA8c3RkaW8uaD4KKysgICAgPiBpbnQKKysgICAgPiBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisrICAgID4geworKyAgICA+ICAgcHV0cyAoIkhlbGxvLCB3b3JsZCEiKTsKKysgICAgPiAgIHJldHVybiAwOworKyAgICA+IH0KKysgICAgPiBFT0YKKysgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtZ2NjIC1XYWxsIGhlbGxvLmMgLW8gaGVsbG8KKysgICAgJCBjYXQgPiBjKystaGVsbG8uY2MgPDxFT0YKKysgICAgPiAjaW5jbHVkZSA8aW9zdHJlYW0+CisrICAgID4gaW50CisrICAgID4gbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorKyAgICA+IHsKKysgICAgPiAgIHN0ZDo6Y291dCA8PCAiSGVsbG8sIEMrKyB3b3JsZCEiIDw8IHN0ZDo6ZW5kbDsKKysgICAgPiAgIHJldHVybiAwOworKyAgICA+IH0KKysgICAgPiBFT0YKKysgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtZysrIC1XYWxsIGMrKy1oZWxsby5jYyAtbyBjKystaGVsbG8KKysKKysKKytXZSBjYW4gdXNlICdyZWFkZWxmJyB0byB2ZXJpZnkgdGhhdCB0aGVzZSBhcmUgaW5kZWVkIGV4ZWN1dGFibGVzIGZvcgorK291ciB0YXJnZXQsIHVzaW5nIG91ciBkeW5hbWljIGxpbmtlcjoKKysKKysgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtcmVhZGVsZiAtaGwgaGVsbG8KKysgICAgRUxGIEhlYWRlcjoKKysgICAgLi4uCisrICAgICAgVHlwZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWEVDIChFeGVjdXRhYmxlIGZpbGUpCisrICAgICAgTWFjaGluZTogICAgICAgICAgICAgICAgICAgICAgICAgICBBUk0KKysKKysgICAgLi4uCisrICAgIFByb2dyYW0gSGVhZGVyczoKKysgICAgICBUeXBlICAgICAgICAgICBPZmZzZXQgICBWaXJ0QWRkciAgIFBoeXNBZGRyICAgRmlsZVNpeiBNZW1TaXogIEZsZyBBbGlnbgorKyAgICAgIFBIRFIgICAgICAgICAgIDB4MDAwMDM0IDB4MTAwMDAwMzQgMHgxMDAwMDAzNCAweDAwMTAwIDB4MDAxMDAgUiBFIDB4NAorKyAgICAgIElOVEVSUCAgICAgICAgIDB4MDAwMTM0IDB4MDAwMDgxMzQgMHgwMDAwODEzNCAweDAwMDEzIDB4MDAwMTMgUiAgIDB4MQorKyAgICAgICAgICBbUmVxdWVzdGluZyBwcm9ncmFtIGludGVycHJldGVyOiAvbGliL2xkLWxpbnV4LnNvLjNdCisrICAgICAgTE9BRCAgICAgICAgICAgMHgwMDAwMDAgMHgwMDAwODAwMCAweDAwMDA4MDAwIDB4MDA0MmMgMHgwMDQyYyBSIEUgMHg4MDAwCisrICAgIC4uLgorKworK0xvb2tpbmcgYXQgdGhlIGR5bmFtaWMgc2VjdGlvbiBvZiB0aGUgaW5zdGFsbGVkICdsaWJnY2Nfcy5zbycsIHdlIHNlZQorK3RoYXQgdGhlICdORUVERUQnIGVudHJ5IGZvciB0aGUgQyBsaWJyYXJ5IGRvZXMgaW5jbHVkZSB0aGUgJy42JworK3N1ZmZpeCwgaW5kaWNhdGluZyB0aGF0IHdhcyBsaW5rZWQgYWdhaW5zdCBvdXIgZnVsbHkgYnVpbGQgR0xJQkMsIGFuZAorK25vdCBvdXIgZHVtbXkgJ2xpYmMuc28nOgorKworKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1yZWFkZWxmIC1kICRzeXNyb290L2xpYi9saWJnY2Nfcy5zby4xCisrICAgIER5bmFtaWMgc2VjdGlvbiBhdCBvZmZzZXQgMHgxMDgzYyBjb250YWlucyAyNCBlbnRyaWVzOgorKyAgICAgIFRhZyAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lL1ZhbHVlCisrICAgICAweDAwMDAwMDAxIChORUVERUQpICAgICAgICAgICAgICAgICAgICAgU2hhcmVkIGxpYnJhcnk6IFtsaWJjLnNvLjZdCisrICAgICAweDAwMDAwMDBlIChTT05BTUUpICAgICAgICAgICAgICAgICAgICAgTGlicmFyeSBzb25hbWU6IFtsaWJnY2Nfcy5zby4xXQorKyAgICAuLi4KKysKKysKKytBbmQgb24gdGhlIHRhcmdldCBtYWNoaW5lLCB3ZSBjYW4gcnVuIG91ciBwcm9ncmFtczoKKysKKysgICAgJCAkc3lzcm9vdC9saWIvbGQuc28uMSAtLWxpYnJhcnktcGF0aCAkc3lzcm9vdC9saWI6JHN5c3Jvb3QvdXNyL2xpYiBcCisrICAgID4gLi9oZWxsbworKyAgICBIZWxsbywgd29ybGQhCisrICAgICQgJHN5c3Jvb3QvbGliL2xkLnNvLjEgLS1saWJyYXJ5LXBhdGggJHN5c3Jvb3QvbGliOiRzeXNyb290L3Vzci9saWIgXAorKyAgICA+IC4vYysrLWhlbGxvCisrICAgIEhlbGxvLCBDKysgd29ybGQhCitkaWZmIC0tZ2l0IGEvR0xJQkMuY3Jvc3MtdGVzdGluZyBiL0dMSUJDLmNyb3NzLXRlc3RpbmcKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi5iNjdiNDY4NDY2CistLS0gL2Rldi9udWxsCisrKysgYi9HTElCQy5jcm9zcy10ZXN0aW5nCitAQCAtMCwwICsxLDIwNSBAQAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIG1vZGU6IHRleHQgLSotCisrCisrICAgICAgICAgICAgICAgICAgICAgIENyb3NzLVRlc3RpbmcgV2l0aCBHTElCQworKyAgICAgICAgICAgICAgICAgIEppbSBCbGFuZHkgPGppbWJAY29kZXNvdXJjZXJ5LmNvbT4KKysKKysKKytJbnRyb2R1Y3Rpb24KKysKKytEZXZlbG9wZXJzIHdyaXRpbmcgc29mdHdhcmUgZm9yIGVtYmVkZGVkIHN5c3RlbXMgb2Z0ZW4gdXNlIGEgZGVza3RvcAorK29yIG90aGVyIHNpbWlsYXJseSBjYXBhYmxlIGNvbXB1dGVyIGZvciBkZXZlbG9wbWVudCwgYnV0IG5lZWQgdG8gcnVuCisrdGVzdHMgb24gdGhlIGVtYmVkZGVkIHN5c3RlbSwgb3IgcGVyaGFwcyBvbiBhIHNpbXVsYXRvci4gIFdoZW4KKytjb25maWd1cmVkIGZvciBjcm9zcy1jb21waWxhdGlvbiwgdGhlIHN0b2NrIEdOVSBDIGxpYnJhcnkgc2ltcGx5CisrZGlzYWJsZXMgcnVubmluZyB0ZXN0cyBhbHRvZ2V0aGVyOiB0aGUgY29tbWFuZCAnbWFrZSB0ZXN0cycgYnVpbGRzCisrdGVzdCBwcm9ncmFtcywgYnV0IGRvZXMgbm90IHJ1biB0aGVtLiAgR0xJQkMsIGhvd2V2ZXIsIHByb3ZpZGVzCisrZmFjaWxpdGllcyBmb3IgY29tcGlsaW5nIHRlc3RzIGFuZCBnZW5lcmF0aW5nIGRhdGEgZmlsZXMgb24gdGhlIGJ1aWxkCisrc3lzdGVtLCBidXQgcnVubmluZyB0aGUgdGVzdCBwcm9ncmFtcyB0aGVtc2VsdmVzIG9uIGEgcmVtb3RlIHN5c3RlbSBvcgorK3NpbXVsYXRvci4KKysKKysKKytUZXN0IGVudmlyb25tZW50IHJlcXVpcmVtZW50cworKworK1RoZSB0ZXN0IGVudmlyb25tZW50IG11c3QgbWVldCBjZXJ0YWluIGNvbmRpdGlvbnMgZm9yIEdMSUJDJ3MKKytjcm9zcy10ZXN0aW5nIGZhY2lsaXRpZXMgdG8gd29yazoKKysKKystIFNoYXJlZCBmaWxlc3lzdGVtcy4gIFRoZSAnYnVpbGQnIHN5c3RlbSwgb24gd2hpY2ggeW91IGNvbmZpZ3VyZSBhbmQKKysgIGNvbXBpbGUgR0xJQkMsIGFuZCB0aGUgJ2hvc3QnIHN5c3RlbSwgb24gd2hpY2ggeW91IGludGVuZCB0byBydW4KKysgIEdMSUJDLCBtdXN0IHNoYXJlIGEgZmlsZXN5c3RlbSBjb250YWluaW5nIHRoZSBHTElCQyBidWlsZCBhbmQKKysgIHNvdXJjZSB0cmVlcy4gIEZpbGVzIG11c3QgYXBwZWFyIGF0IHRoZSBzYW1lIHBhdGhzIG9uIGJvdGggc3lzdGVtcy4KKysKKystIFJlbW90ZS1zaGVsbCBsaWtlIGludm9jYXRpb24uICBUaGVyZSBtdXN0IGJlIGEgd2F5IHRvIHJ1biBhIHByb2dyYW0KKysgIG9uIHRoZSBob3N0IHN5c3RlbSBmcm9tIHRoZSBidWlsZCBzeXN0ZW0sIHBhc3NpbmcgaXQgcHJvcGVybHkgcXVvdGVkCisrICBjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBzZXR0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcywgYW5kCisrICBpbmhlcml0aW5nIHRoZSBjYWxsZXIncyBzdGFuZGFyZCBpbnB1dCBhbmQgb3V0cHV0LgorKworKworK1VzYWdlCisrCisrVG8gdXNlIEdMSUJDJ3MgY3Jvc3MtdGVzdGluZyBzdXBwb3J0LCBwcm92aWRlIHZhbHVlcyBmb3IgdGhlCisrZm9sbG93aW5nIE1ha2UgdmFyaWFibGVzIHdoZW4geW91IGludm9rZSAnbWFrZSc6CisrCisrLSBjcm9zcy10ZXN0LXdyYXBwZXIKKysKKysgIFRoaXMgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBjcm9zcy10ZXN0aW5nIHdyYXBwZXIgY29tbWFuZCwgYWxvbmcKKysgIHdpdGggYW55IGFyZ3VtZW50cy4KKysKKystIGNyb3NzLWxvY2FsZWRlZgorKworKyAgVGhpcyBzaG91bGQgYmUgdGhlIG5hbWUgb2YgYSBjcm9zcy1jYXBhYmxlIGxvY2FsZWRlZiBwcm9ncmFtLCBsaWtlCisrICB0aGF0IGluY2x1ZGVkIGluIHRoZSBHTElCQyAnbG9jYWxlZGVmJyBtb2R1bGUsIGFsb25nIHdpdGggYW55CisrICBhcmd1bWVudHMgbmVlZGVkLgorKworK1RoZXNlIGFyZSBlYWNoIGV4cGxhaW5lZCBpbiBkZXRhaWwgYmVsb3cuCisrCisrCisrVGhlIENyb3NzLVRlc3RpbmcgV3JhcHBlcgorKworK1RvIHJ1biB0ZXN0IHByb2dyYW1zIHJlbGlhYmx5LCB0aGUgc3RvY2sgR05VIEMgbGlicmFyeSB0YWtlcyBjYXJlIHRvCisrZW5zdXJlIHRoYXQgdGVzdCBwcm9ncmFtcyB1c2UgdGhlIG5ld2x5IGNvbXBpbGVkIGR5bmFtaWMgbGlua2VyIGFuZAorK3NoYXJlZCBsaWJyYXJpZXMsIGFuZCBuZXZlciB0aGUgaG9zdCBzeXN0ZW0ncyBpbnN0YWxsZWQgbGlicmFyaWVzLiAgVG8KKythY2NvbXBsaXNoIHRoaXMsIGl0IHJ1bnMgdGhlIHRlc3RzIGJ5IGV4cGxpY2l0bHkgaW52b2tpbmcgdGhlIGR5bmFtaWMKKytsaW5rZXIgZnJvbSB0aGUgYnVpbGQgdHJlZSwgcGFzc2luZyBpdCBhIGxpc3Qgb2YgYnVpbGQgdHJlZQorK2RpcmVjdG9yaWVzIHRvIHNlYXJjaCBmb3Igc2hhcmVkIGxpYnJhcmllcywgZm9sbG93ZWQgYnkgdGhlIG5hbWUgb2YKKyt0aGUgZXhlY3V0YWJsZSB0byBydW4gYW5kIGl0cyBhcmd1bWVudHMuCisrCisrRm9yIGV4YW1wbGUsIHdoZXJlIG9uZSBtaWdodCBub3JtYWxseSBydW4gYSB0ZXN0IHByb2dyYW0gbGlrZSB0aGlzOgorKworKyAgICAkIC4vdHN0LWZvbyBhcmcxIGFyZzIKKysKKyt0aGUgR05VIEMgbGlicmFyeSBtaWdodCBydW4gdGhhdCBwcm9ncmFtIGxpa2UgdGhpczoKKysKKysgICAgJCAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAorKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKKysKKysod2hlcmUgJG9iamRpciBpcyB0aGUgcGF0aCB0byB0aGUgdG9wIG9mIHRoZSBidWlsZCB0cmVlLCBhbmQgdGhlCisrdHJhaWxpbmcgYmFja3NsYXNoIGluZGljYXRlcyBhIGNvbnRpbnVhdGlvbiBvZiB0aGUgY29tbWFuZCkuICBJbiBvdGhlcgorK3dvcmRzLCBlYWNoIHRlc3QgcHJvZ3JhbSBpbnZvY2F0aW9uIGlzICd3cmFwcGVkIHVwJyBpbnNpZGUgYW4gZXhwbGljaXQKKytpbnZvY2F0aW9uIG9mIHRoZSBkeW5hbWljIGxpbmtlciwgd2hpY2ggbXVzdCBpdHNlbGYgZXhlY3V0ZSB0aGUgdGVzdAorK3Byb2dyYW0sIGhhdmluZyBsb2FkZWQgc2hhcmVkIGxpYnJhcmllcyBmcm9tIHRoZSBhcHByb3ByaWF0ZQorK2RpcmVjdG9yaWVzLgorKworK1RvIHN1cHBvcnQgY3Jvc3MtdGVzdGluZywgR0xJQkMgYWxsb3dzIHRoZSBkZXZlbG9wZXIgdG8gb3B0aW9uYWxseQorK3NldCB0aGUgJ2Nyb3NzLXRlc3Qtd3JhcHBlcicgTWFrZSB2YXJpYWJsZSB0byBhbm90aGVyIHdyYXBwZXIgY29tbWFuZCwKKyt0byB3aGljaCBpdCBwYXNzZXMgdGhlIGVudGlyZSBkeW5hbWljIGxpbmtlciBpbnZvY2F0aW9uIHNob3duIGFib3ZlIGFzCisrYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIGlmIHRoZSBkZXZlbG9wZXIgc3VwcGxpZXMgYSB3cmFwcGVyIG9mCisrJ215LXdyYXBwZXIgaG9zdG5hbWUnLCB0aGVuIEdMSUJDIHdvdWxkIHJ1biB0aGUgdGVzdCBhYm92ZSBhcworK2ZvbGxvd3M6CisrCisrICAgICQgbXktd3JhcHBlciBob3N0bmFtZSBcCisrICAgICAgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKKysgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCisrCisrVGhlICdteS13cmFwcGVyJyBjb21tYW5kIGlzIHJlc3BvbnNpYmxlIGZvciBleGVjdXRpbmcgdGhlIGNvbW1hbmQKKytnaXZlbiBvbiB0aGUgaG9zdCBzeXN0ZW0uCisrCisrU2luY2UgdGVzdHMgYXJlIHJ1biBpbiB2YXJ5aW5nIGRpcmVjdG9yaWVzLCB0aGUgd3JhcHBlciBzaG91bGQgZWl0aGVyCisrYmUgaW4geW91ciBjb21tYW5kIHNlYXJjaCBwYXRoLCBvciAnY3Jvc3MtdGVzdC13cmFwcGVyJyBzaG91bGQgZ2l2ZSBhbgorK2Fic29sdXRlIHBhdGggZm9yIHRoZSB3cmFwcGVyLgorKworK1RoZSB3cmFwcGVyIG11c3QgbWVldCBzZXZlcmFsIHJlcXVpcmVtZW50czoKKysKKystIEl0IG11c3QgcHJlc2VydmUgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAgQXMgZXhwbGFpbmVkIGFib3ZlLCB0aGUKKysgIGJ1aWxkIGRpcmVjdG9yeSB0cmVlIG11c3QgYmUgdmlzaWJsZSBvbiBib3RoIHRoZSBidWlsZCBhbmQgaG9zdAorKyAgc3lzdGVtcywgYXQgdGhlIHNhbWUgcGF0aC4gIFRoZSB0ZXN0IHdyYXBwZXIgbXVzdCBlbnN1cmUgdGhhdCB0aGUKKysgIGN1cnJlbnQgZGlyZWN0b3J5IGl0IGluaGVyaXRzIGlzIGFsc28gaW5oZXJpdGVkIGJ5IHRoZSBkeW5hbWljCisrICBsaW5rZXIgKGFuZCB0aHVzIHRoZSB0ZXN0IHByb2dyYW0gaXRzZWxmKS4KKysKKystIEl0IG11c3QgcHJlc2VydmUgZW52aXJvbm1lbnQgdmFyaWFibGVzJyB2YWx1ZXMuICBNYW55IEdMSUJDIHRlc3RzCisrICBzZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0ZXN0IHJ1bnM7IGluIG5hdGl2ZSB0ZXN0aW5nLCBpdAorKyAgaW52b2tlcyBwcm9ncmFtcyBsaWtlIHRoaXM6CisrCisrICAgICQgR0NPTlZfUEFUSD0kb2JqZGlyL2ljb252ZGF0YSBcCisrICAgICAgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKKysgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCisrCisrICBXaXRoIHRoZSBjcm9zcy10ZXN0aW5nIHdyYXBwZXIsIHRoYXQgaW52b2NhdGlvbiBiZWNvbWVzOgorKworKyAgICAkIEdDT05WX1BBVEg9JG9iamRpci9pY29udmRhdGEgXAorKyAgICAgIG15LXdyYXBwZXIgaG9zdG5hbWUgXAorKyAgICAgICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCisrICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgorKworKyAgSGVyZSwgJ215LXdyYXBwZXInIG11c3QgZW5zdXJlIHRoYXQgdGhlIHZhbHVlIGl0IHNlZXMgZm9yCisrICAnR0NPTlZfUEFUSCcgd2lsbCBiZSBzZWVuIGJ5IHRoZSBkeW5hbWljIGxpbmtlciwgYW5kIHRodXMgJ3RzdC1mb28nCisrICBpdHNlbGYuICAoVGhlIHdyYXBwZXIgc3VwcGxpZWQgd2l0aCBHTElCQyBzaW1wbHkgcHJlc2VydmVzIHRoZQorKyAgdmFsdWVzIG9mICphbGwqIGVudmlyb21lbnQgdmFyaWFibGVzLCB3aXRoIGEgZml4ZWQgc2V0IG9mCisrICBleGNlcHRpb25zLikKKysKKysgIElmIHlvdXIgd3JhcHBlciBpcyBhIHNoZWxsIHNjcmlwdCwgdGFrZSBjYXJlIHRvIGNvcnJlY3RseSBwcm9wYWdhdGUKKysgIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aG9zZSB2YWx1ZXMgY29udGFpbiBzcGFjZXMgYW5kIHNoZWxsCisrICBtZXRhY2hhcmFjdGVycy4KKysKKystIEl0IG11c3QgcGFzcyB0aGUgY29tbWFuZCdzIGFyZ3VtZW50cywgdW5tb2RpZmllZC4gIFRoZSBhcmd1bWVudHMKKysgIHNlZW4gYnkgdGhlIHRlc3QgcHJvZ3JhbSBzaG91bGQgYmUgZXhhY3RseSB0aG9zZSBzZWVuIGJ5IHRoZSB3cmFwcGVyCisrICAoYWZ0ZXIgd2hhdGV2ZXIgYXJndW1lbnRzIGFyZSBnaXZlbiB0byB0aGUgd3JhcHBlciBpdHNlbGYpLiAgVGhlCisrICBHTElCQyB0ZXN0IGZyYW1ld29yayBwZXJmb3JtcyBhbGwgbmVlZGVkIHNoZWxsIHdvcmQgc3BsaXR0aW5nIGFuZAorKyAgZXhwYW5zaW9uICh3aWxkY2FyZCBleHBhbnNpb24sIHBhcmFtZXRlciBzdWJzdGl0dXRpb24sIGFuZCBzbyBvbikKKysgIGJlZm9yZSBpbnZva2luZyB0aGUgd3JhcHBlcjsgZnVydGhlciBleHBhbnNpb24gbWF5IGJyZWFrIHRoZSB0ZXN0cy4KKysKKysKKytUaGUgJ2Nyb3NzLXRlc3Qtc3NoLnNoJyBzY3JpcHQKKysKKytJZiB5b3Ugd2FudCB0byB1c2UgJ3NzaCcgKG9yIHNvbWV0aGluZyBzdWZmaWNpZW50bHkgc2ltaWxhcikgdG8gcnVuCisrdGVzdCBwcm9ncmFtcyBvbiB5b3VyIGhvc3Qgc3lzdGVtLCBHTElCQyBpbmNsdWRlcyBhIHNoZWxsIHNjcmlwdCwKKysnc2NyaXB0cy9jcm9zcy10ZXN0LXNzaC5zaCcsIHdoaWNoIHlvdSBjYW4gdXNlIGFzIHlvdXIgd3JhcHBlcgorK2NvbW1hbmQuICBUaGlzIHNjcmlwdCB0YWtlcyBjYXJlIG9mIHNldHRpbmcgdGhlIHRlc3QgY29tbWFuZCdzIGN1cnJlbnQKKytkaXJlY3RvcnksIHByb3BhZ2F0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlIHZhbHVlcywgYW5kIGNhcnJ5aW5nCisrY29tbWFuZC1saW5lIGFyZ3VtZW50cywgYWxsIGFjcm9zcyBhbiAnc3NoJyBjb25uZWN0aW9uLiAgWW91IG1heSBldmVuCisrc3VwcGx5IGFuIGFsdGVybmF0aXZlIHRvICdzc2gnIG9uIHRoZSBjb21tYW5kIGxpbmUsIGlmIG5lZWRlZC4KKysKKytGb3IgbW9yZSBkZXRhaWxzLCBwYXNzICdjcm9zcy10ZXN0LXNzaC5zaCcgdGhlICctLWhlbHAnIG9wdGlvbi4KKysKKysKKytUaGUgQ3Jvc3MtQ29tcGlsaW5nIExvY2FsZSBEZWZpbml0aW9uIENvbW1hbmQKKysKKytTb21lIEdMSUJDIHRlc3RzIHJlbHkgb24gbG9jYWxlcyBnZW5lcmF0ZWQgZXNwZWNpYWxseSBmb3IgdGhlIHRlc3QKKytwcm9jZXNzLiAgSW4gYSBuYXRpdmUgY29uZmlndXJhdGlvbiwgdGhlc2UgdGVzdHMgc2ltcGx5IHJ1biB0aGUKKysnbG9jYWxlZGVmJyBjb21tYW5kIGJ1aWx0IGJ5IHRoZSBub3JtYWwgR0xJQkMgYnVpbGQgcHJvY2VzcywKKysnbG9jYWxlL2xvY2FsZWRlZicsIHRvIHByb2Nlc3MgYW5kIGluc3RhbGwgdGhlaXIgbG9jYWxlcy4gIEhvd2V2ZXIsIGluCisrYSBjcm9zcy1jb21waWxpbmcgY29uZmlndXJhdGlvbiwgdGhpcyAnbG9jYWxlZGVmJyBpcyBidWlsdCBmb3IgdGhlCisraG9zdCBzeXN0ZW0sIG5vdCB0aGUgYnVpbGQgc3lzdGVtLCBhbmQgc2luY2UgaXQgcmVxdWlyZXMgcXVpdGUgYSBiaXQKKytvZiBtZW1vcnkgdG8gcnVuICh3ZSBoYXZlIHNlZW4gaXQgZmFpbCBvbiBzeXN0ZW1zIHdpdGggNjRNaUIgb2YKKyttZW1vcnkpLCBpdCBtYXkgbm90IGJlIHByYWN0aWNhbCB0byBydW4gaXQgb24gdGhlIGhvc3Qgc3lzdGVtLgorKworK0lmIHNldCwgR0xJQkMgdXNlcyB0aGUgJ2Nyb3NzLWxvY2FsZWRlZicgTWFrZSB2YXJpYWJsZSBhcyB0aGUgY29tbWFuZAorK3RvIHJ1biBvbiB0aGUgYnVpbGQgc3lzdGVtIHRvIHByb2Nlc3MgYW5kIGluc3RhbGwgbG9jYWxlcy4gIFRoZQorK2xvY2FsZWRlZiBwcm9ncmFtIGJ1aWx0IGZyb20gdGhlIEdMSUJDICdsb2NhbGVkZWYnIG1vZHVsZSBpcworK3N1aXRhYmxlLgorKworK1RoZSB2YWx1ZSBvZiAnY3Jvc3MtbG9jYWxlZGVmJyBtYXkgYWxzbyBpbmNsdWRlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMKKyt0byBiZSBwYXNzZWQgdG8gdGhlIHByb2dyYW07IGlmIHlvdSBhcmUgdXNpbmcgR0xJQkMncyAnbG9jYWxlZGVmJywKKyt5b3UgbWF5IGluY2x1ZGUgZW5kaWFubmVzcyBhbmQgJ3VpbnQzMl90JyBhbGlnbm1lbnQgYXJndW1lbnRzIGhlcmUuCisrCisrCisrRXhhbXBsZQorKworK0luIGRldmVsb3BpbmcgR0xJQkMncyBjcm9zcy10ZXN0aW5nIGZhY2lsaXR5LCB3ZSBpbnZva2VkICdtYWtlJyB3aXRoCisrdGhlIGZvbGxvd2luZyBzY3JpcHQ6CisrCisrICAgICMhL2Jpbi9zaAorKworKyAgICBzcmNkaXI9Li4uCisrICAgIHRlc3RfaG9zdG5hbWU9Li4uCisrICAgIGxvY2FsZWRlZmRpcj0uLi4KKysgICAgY3Jvc3NfZ3h4PS4uLi1nKysKKysKKysgICAgd3JhcHBlcj0iJHNyY2Rpci9zY3JpcHRzL2Nyb3NzLXRlc3Qtc3NoLnNoICR0ZXN0X2hvc3RuYW1lIgorKyAgICBsb2NhbGVkZWY9IiRsb2NhbGVkZWZkaXIvbG9jYWxlZGVmIC0tbGl0dGxlLWVuZGlhbiAtLXVpbnQzMi1hbGlnbj00IgorKworKyAgICBtYWtlIGNyb3NzLXRlc3Qtd3JhcHBlcj0iJHdyYXBwZXIiIFwKKysgICAgICAgICBjcm9zcy1sb2NhbGVkZWY9IiRsb2NhbGVkZWYiIFwKKysgICAgICAgICBDWFg9IiRjcm9zc19neHgiIFwKKysgICAgICAgICAiJEAiCisrCisrCisrT3RoZXIgQ3Jvc3MtVGVzdGluZyBDb25jZXJucworKworK0hlcmUgYXJlIG5vdGVzIG9uIHNvbWUgb3RoZXIgaXNzdWVzIHdoaWNoIHlvdSBtYXkgZW5jb3VudGVyIGluIHJ1bm5pbmcKKyt0aGUgR0xJQkMgdGVzdHMgaW4gYSBjcm9zcy1jb21waWxpbmcgZW52aXJvbm1lbnQ6CisrCisrLSBTb21lIHRlc3RzIHJlcXVpcmUgYSBDKysgY3Jvc3MtY29tcGlsZXI7IHlvdSBzaG91bGQgc2V0IHRoZSAnQ1hYJworKyAgTWFrZSB2YXJpYWJsZSB0byB0aGUgbmFtZSBvZiBhbiBhcHByb3ByaWF0ZSBjcm9zcy1jb21waWxlci4KKysKKystIFNvbWUgdGVzdHMgcmVxdWlyZSBhY2Nlc3MgdG8gbGlic3RkYysrLnNvLjYgYW5kIGxpYmdjY19zLnNvLjE7IHdlCisrICBzaW1wbHkgcGxhY2UgY29waWVzIG9mIHRoZXNlIGxpYnJhcmllcyBpbiB0aGUgdG9wIEdMSUJDIGJ1aWxkCisrICBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNzRlYTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaApAQCAtMCwwICsxLDk3IEBACitGcm9tIDZhMzJkNWJmNDBkZWVlNWQxMmQyNGMwNmYzZWE5YjU0NzljMTY4MDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDo0OToyOCArMDAwMAorU3ViamVjdDogW1BBVENIXSBlZ2xpYmM6IEhlbHAgYm9vdHN0cmFwIGNyb3NzIHRvb2xjaGFpbgorCitUYWtlbiBmcm9tIEVHTElCQywgcjE0ODQgKyByMTUyNQorCisgICAgICAgIDIwMDctMDItMjAgIEppbSBCbGFuZHkgIDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICAgICAgICAgICAgICAqIE1ha2VmaWxlIChpbnN0YWxsLWhlYWRlcnMpOiBQcmVzZXJ2ZSBvbGQgYmVoYXZpb3I6IGRlcGVuZCBvbgorICAgICAgICAgICAgICAgICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaCBvbmx5IGlmIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMKKyAgICAgICAgICAgICAgICBpcyBzZXQ7IG90aGVyd2lzZSwgcGxhY2UgZ251L3N0dWJzLmggb24gdGhlICdpbnN0YWxsLW90aGVycycgbGlzdC4KKworICAgICAgICAyMDA3LTAyLTE2ICBKaW0gQmxhbmR5ICA8amltYkBjb2Rlc291cmNlcnkuY29tPgorCisgICAgICAgICAgICAgICAgKiBNYWtlZmlsZTogQW1lbmQgbWFrZSBpbnN0YWxsLWhlYWRlcnMgdG8gaW5zdGFsbCBldmVyeXRoaW5nCisgICAgICAgICAgICAgICAgbmVjZXNzYXJ5IGZvciBidWlsZGluZyBhIGNyb3NzLWNvbXBpbGVyLiAgSW5zdGFsbCBnbnUvc3R1YnMuaCBhcworICAgICAgICAgICAgICAgIHBhcnQgb2YgJ2luc3RhbGwtaGVhZGVycycsIG5vdCAnaW5zdGFsbC1vdGhlcnMnLgorICAgICAgICAgICAgICAgIElmIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMgaXMgJ3llcycsIGluc3RhbGwgYSBkdW1teSBjb3B5IG9mCisgICAgICAgICAgICAgICAgZ251L3N0dWJzLmgsIGluc3RlYWQgb2YgY29tcHV0aW5nIHRoZSByZWFsIHRoaW5nLgorICAgICAgICAgICAgICAgICogaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaDogTmV3IGZpbGUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAyMiArKysrKysrKysrKysrKysrKysrKystCisgaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaCB8IDEyICsrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCA4ZjBhOTNhY2ViLi44ZWJhMjNhODY4IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtNzksOSArNzksMTggQEAgc3ViZGlyLWRpcnMgPSBpbmNsdWRlCisgdnBhdGggJS5oICQoc3ViZGlyLWRpcnMpCisgCisgIyBXaGF0IHRvIGluc3RhbGwuCistaW5zdGFsbC1vdGhlcnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKKyBpbnN0YWxsLWJpbi1zY3JpcHQgPQorIAorKyMgSWYgd2UncmUgYm9vdHN0cmFwcGluZywgaW5zdGFsbCBhIGR1bW15IGdudS9zdHVicy5oIGFsb25nIHdpdGggdGhlCisrIyBvdGhlciBoZWFkZXJzLCBzbyAnbWFrZSBpbnN0YWxsLWhlYWRlcnMnIHByb2R1Y2VzIGEgdXNlYWJsZSBpbmNsdWRlCisrIyB0cmVlLiAgT3RoZXJ3aXNlLCBpbnN0YWxsIGdudS9zdHVicy5oIGxhdGVyLCBhZnRlciB0aGUgcmVzdCBvZiB0aGUKKysjIGJ1aWxkIGlzIGRvbmUuCisraWZlcSAoJChpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzKSx5ZXMpCisraW5zdGFsbC1oZWFkZXJzOiAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKKytlbHNlCisraW5zdGFsbC1vdGhlcnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKKytlbmRpZgorKworIGlmZXEgKHllcywkKGJ1aWxkLXNoYXJlZCkpCisgaGVhZGVycyArPSBnbnUvbGliLW5hbWVzLmgKKyBlbmRpZgorQEAgLTQwNyw2ICs0MTYsMTYgQEAgb3RoZXJzOiAkKGNvbW1vbi1vYmpwZngpdGVzdHJ1bi5zaCAkKGNvbW1vbi1vYmpwZngpZGVidWdnbGliYy5zaAorIAorIHN1YmRpci1zdHVicyA6PSAkKGZvcmVhY2ggZGlyLCQoc3ViZGlycyksJChjb21tb24tb2JqcGZ4KSQoZGlyKS9zdHVicykKKyAKKysjIGdudS9zdHVicy5oIGRlcGVuZHMgKHZpYSB0aGUgc3ViZGlyICdzdHVicycgdGFyZ2V0cykgb24gYWxsIHRoZSAubworKyMgZmlsZXMgaW4gRUdMSUJDLiAgRm9yIGJvb3RzdHJhcHBpbmcgYSBHQ0MvRUdMSUJDIHBhaXIsIGFuIGVtcHR5CisrIyBnbnUvc3R1YnMuaCBpcyBnb29kIGVub3VnaC4KKytpZmVxICgkKGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMpLHllcykKKyskKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmg6IGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmggJCgrZm9yY2UpCisrCSQobWFrZS10YXJnZXQtZGlyZWN0b3J5KQorKwkkKElOU1RBTExfREFUQSkgJDwgJEAKKysKKytpbnN0YWxsZWQtc3R1YnMgPQorK2Vsc2UKKyBpZm5kZWYgYWJpLXZhcmlhbnRzCisgaW5zdGFsbGVkLXN0dWJzID0gJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCisgZWxzZQorQEAgLTQzMyw2ICs0NTIsNyBAQCAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmg6ICQoK2ZvcmNlKQorIAorIGluc3RhbGwtb3RoZXJzLW5vc3ViZGlyOiAkKGluc3RhbGxlZC1zdHVicykKKyBlbmRpZgorK2VuZGlmCisgCisgCisgIyBTaW5jZSBzdHVicy5oIGlzIG5ldmVyIG5lZWRlZCB3aGVuIGJ1aWxkaW5nIHRoZSBsaWJyYXJ5LCB3ZSBzaW1wbGlmeSB0aGUKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oIGIvaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjFkMmI2NjlhZmYKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmgKK0BAIC0wLDAgKzEsMTIgQEAKKysvKiBQbGFjZWhvbGRlciBzdHVicy5oIGZpbGUgZm9yIGJvb3RzdHJhcHBpbmcuCisrCisrICAgV2hlbiBib290c3RyYXBwaW5nIGEgR0NDL0VHTElCQyBwYWlyLCBHQ0MgcmVxdWlyZXMgdGhhdCB0aGUgRUdMSUJDCisrICAgaGVhZGVycyBiZSBpbnN0YWxsZWQsIGJ1dCB3ZSBjYW4ndCBmdWxseSBidWlsZCBFR0xJQkMgd2l0aG91dCB0aGF0CisrICAgR0NDLiAgU28gd2UgcnVuIHRoZSBjb21tYW5kOgorKworKyAgICAgIG1ha2UgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnM9eWVzCisrCisrICAgdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBHQ0MgbmVlZHMsIGJ1dCBhdm9pZCBidWlsZGluZyBjZXJ0YWluCisrICAgZGlmZmljdWx0IGhlYWRlcnMuICBUaGUgPGdudS9zdHVicy5oPiBoZWFkZXIgZGVwZW5kcywgdmlhIHRoZQorKyAgIEVHTElCQyBzdWJkaXIgJ3N0dWJzJyBtYWtlIHRhcmdldHMsIG9uIGV2ZXJ5IC5vIGZpbGUgaW4gRUdMSUJDLCBidXQKKysgICBhbiBlbXB0eSBzdHVicy5oIGxpa2UgdGhpcyB3aWxsIGRvIGZpbmUgZm9yIEdDQy4gICovCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY1NTFjZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSBiNzI5MGU1NGExYmRhN2EwMjEyMTMxNjU1YmMyNzkyNmZjMjJkZTIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NTU6NTMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyMS8yOF0gZWdsaWJjOiBSZXNvbHZlIF9fZnBzY3JfdmFsdWVzIG9uIFNINAotCi0yMDEwLTA5LTI5ICBOb2J1aGlybyBJd2FtYXRzdSAgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotICAgICAgICAgICAgQW5kcmV3IFN0dWJicyAgPGFtc0Bjb2Rlc291cmNlcnkuY29tPgotCi0gICAgICAgIFJlc29sdmUgU0gncyBfX2Zwc2NyX3ZhbHVlcyB0byBzeW1ib2wgaW4gbGliYy5zby4KLQotICAgICAgICAqIHN5c2RlcHMvc2gvc2g0L2ZwdS9mcHVfY29udHJvbC5oOiBBZGQgQysrIF9fc2V0X2Zwc2NyIHByb3RvdHlwZS4KLSAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucyAoR0xJQkNfMi4yKTogQWRkIF9fZnBzY3JfdmFsdWVzLgotICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TIChfX19mcHNjcl92YWx1ZXMpOiBOZXcgY29uc3RhbnQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgfCAgMSArCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMgfCAxMSArKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucwotaW5kZXggZTA5MzhjNDE2NS4uY2ExZDdkYTMzOSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucwotQEAgLTIsNiArMiw3IEBAIGxpYmMgewotICAgR0xJQkNfMi4yIHsKLSAgICAgIyBmdW5jdGlvbnMgdXNlZCBpbiBvdGhlciBsaWJyYXJpZXMKLSAgICAgX194c3RhdDY0OyBfX2Z4c3RhdDY0OyBfX2x4c3RhdDY0OwotKyAgICBfX2Zwc2NyX3ZhbHVlczsKLSAKLSAgICAgIyBhKgotICAgICBhbHBoYXNvcnQ2NDsKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCi1pbmRleCA2Y2UzNmQ2ZGQ1Li40MjU4MTFjYzc3IDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCi1AQCAtMzAsMyArMzAsMTQgQEAgRU5UUlkgKF9fc3lzY2FsbF9lcnJvcikKLSAKLSAjZGVmaW5lIF9fc3lzY2FsbF9lcnJvciBfX3N5c2NhbGxfZXJyb3JfMQotICNpbmNsdWRlIDxzeXNkZXBzL3VuaXgvc2gvc3lzZGVwLlM+Ci0rCi0rICAgICAgIC5kYXRhCi0rICAgICAgIC5hbGlnbiAzCi0rICAgICAgIC5nbG9ibCBfX19mcHNjcl92YWx1ZXMKLSsgICAgICAgLnR5cGUgX19fZnBzY3JfdmFsdWVzLCBAb2JqZWN0Ci0rICAgICAgIC5zaXplIF9fX2Zwc2NyX3ZhbHVlcywgOAotK19fX2Zwc2NyX3ZhbHVlczoKLSsgICAgICAgLmxvbmcgMAotKyAgICAgICAubG9uZyAweDgwMDAwCi0rd2Vha19hbGlhcyAoX19fZnBzY3JfdmFsdWVzLCBfX2Zwc2NyX3ZhbHVlcykKLSsKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDYwMjFhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NjYgKzAsMCBAQAotRnJvbSBiZTM4MmI0ZTBjNmRlNTI1NzNmN2UwMzdmMmQ0ZmY5YjFiNWJiYjZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6MzM6NDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyMi8yOF0gZWdsaWJjOiBGb3J3YXJkIHBvcnQgY3Jvc3MgbG9jYWxlIGdlbmVyYXRpb24gc3VwcG9ydAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxvY2FsZS9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgIDMgKy0KLSBsb2NhbGUvY2F0bmFtZXMuYyAgICAgICAgICAgICB8IDQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBsb2NhbGUvbG9jYWxlaW5mby5oICAgICAgICAgICB8ICAyICstCi0gbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMgfCAgNiArKysrCi0gbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYyAgfCAxNyArKysrKy0tLS0tCi0gbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMgICAgfCAyNyArKysrKysrKy0tLS0tLS0tCi0gbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYyAgICAgfCAzMSArKysrKysrKysrKystLS0tLS0KLSBsb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jICB8ICAyICstCi0gbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jICAgfCAgOCArKysrKwotIGxvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMgICAgIHwgIDUgKystCi0gbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaCAgICAgfCA1OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQotIGxvY2FsZS9zZXRsb2NhbGUuYyAgICAgICAgICAgIHwgMzAgLS0tLS0tLS0tLS0tLS0tLS0tCi0gMTIgZmlsZXMgY2hhbmdlZCwgMTY5IGluc2VydGlvbnMoKyksIDY5IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsb2NhbGUvY2F0bmFtZXMuYwotCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL01ha2VmaWxlIGIvbG9jYWxlL01ha2VmaWxlCi1pbmRleCBkNzhjZjliODNhLi5lMTY2ZjUyNTJlIDEwMDY0NAotLS0tIGEvbG9jYWxlL01ha2VmaWxlCi0rKysgYi9sb2NhbGUvTWFrZWZpbGUKLUBAIC0yNiw3ICsyNiw4IEBAIGhlYWRlcnMJCT0gbGFuZ2luZm8uaCBsb2NhbGUuaCBiaXRzL2xvY2FsZS5oIFwKLSAJCSAgYml0cy90eXBlcy9sb2NhbGVfdC5oIGJpdHMvdHlwZXMvX19sb2NhbGVfdC5oCi0gcm91dGluZXMJPSBzZXRsb2NhbGUgZmluZGxvY2FsZSBsb2FkbG9jYWxlIGxvYWRhcmNoaXZlIFwKLSAJCSAgbG9jYWxlY29udiBubF9sYW5naW5mbyBubF9sYW5naW5mb19sIG1iX2N1cl9tYXggXAotLQkJICBuZXdsb2NhbGUgZHVwbG9jYWxlIGZyZWVsb2NhbGUgdXNlbG9jYWxlCi0rCQkgIG5ld2xvY2FsZSBkdXBsb2NhbGUgZnJlZWxvY2FsZSB1c2Vsb2NhbGUgXAotKwkJICBjYXRuYW1lcwotIHRlc3RzCQk9IHRzdC1DLWxvY2FsZSB0c3QtbG9jbmFtZSB0c3QtZHVwbG9jYWxlCi0gY2F0ZWdvcmllcwk9IGN0eXBlIG1lc3NhZ2VzIG1vbmV0YXJ5IG51bWVyaWMgdGltZSBwYXBlciBuYW1lIFwKLSAJCSAgYWRkcmVzcyB0ZWxlcGhvbmUgbWVhc3VyZW1lbnQgaWRlbnRpZmljYXRpb24gY29sbGF0ZQotZGlmZiAtLWdpdCBhL2xvY2FsZS9jYXRuYW1lcy5jIGIvbG9jYWxlL2NhdG5hbWVzLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi45ZmFkMzU3ZGIxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9sb2NhbGUvY2F0bmFtZXMuYwotQEAgLTAsMCArMSw0OCBAQAotKy8qIENvcHlyaWdodCAoQykgMjAwNiAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlICJsb2NhbGVpbmZvLmgiCi0rCi0rLyogRGVmaW5lIGFuIGFycmF5IG9mIGNhdGVnb3J5IG5hbWVzIChhbHNvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcykuICAqLwotK2NvbnN0IHVuaW9uIGNhdG5hbWVzdHJfdCBfbmxfY2F0ZWdvcnlfbmFtZXMgYXR0cmlidXRlX2hpZGRlbiA9Ci0rICB7Ci0rICAgIHsKLSsjZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKLSsgICAgICBjYXRlZ29yeV9uYW1lLAotKyNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKLSsjdW5kZWYgREVGSU5FX0NBVEVHT1JZCi0rICAgIH0KLSsgIH07Ci0rCi0rY29uc3QgdWludDhfdCBfbmxfY2F0ZWdvcnlfbmFtZV9pZHhzW19fTENfTEFTVF0gYXR0cmlidXRlX2hpZGRlbiA9Ci0rICB7Ci0rI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCi0rICAgIFtjYXRlZ29yeV0gPSBvZmZzZXRvZiAodW5pb24gY2F0bmFtZXN0cl90LCBDQVROQU1FTUYgKF9fTElORV9fKSksCi0rI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgotKyN1bmRlZiBERUZJTkVfQ0FURUdPUlkKLSsgIH07Ci0rCi0rLyogQW4gYXJyYXkgb2YgdGhlaXIgbGVuZ3RocywgZm9yIGNvbnZlbmllbmNlLiAgKi8KLStjb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX3NpemVzW10gYXR0cmlidXRlX2hpZGRlbiA9Ci0rICB7Ci0rI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCi0rICAgIFtjYXRlZ29yeV0gPSBzaXplb2YgKGNhdGVnb3J5X25hbWUpIC0gMSwKLSsjaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCi0rI3VuZGVmCURFRklORV9DQVRFR09SWQotKyAgICBbTENfQUxMXSA9IHNpemVvZiAoIkxDX0FMTCIpIC0gMQotKyAgfTsKLWRpZmYgLS1naXQgYS9sb2NhbGUvbG9jYWxlaW5mby5oIGIvbG9jYWxlL2xvY2FsZWluZm8uaAotaW5kZXggNTNjYjhiZmM1OS4uOTJjNDY2MjAwYyAxMDA2NDQKLS0tLSBhL2xvY2FsZS9sb2NhbGVpbmZvLmgKLSsrKyBiL2xvY2FsZS9sb2NhbGVpbmZvLmgKLUBAIC0yMjQsNyArMjI0LDcgQEAgX19saWJjX3RzZF9kZWZpbmUgKGV4dGVybiwgbG9jYWxlX3QsIExPQ0FMRSkKLSAgICB1bnVzZWQuICBXZSBjYW4gbWFuYWdlIHRoaXMgcGxheWluZyBzb21lIHRyaWNrcyB3aXRoIHdlYWsgcmVmZXJlbmNlcy4KLSAgICBCdXQgd2l0aCB0aHJlYWQtbG9jYWwgbG9jYWxlIHNldHRpbmdzLCBpdCBiZWNvbWVzIHF1aXRlIHVuZ2Fpbmx5IHVubGVzcwotICAgIHdlIGNhbiB1c2UgX190aHJlYWQgdmFyaWFibGVzLiAgU28gb25seSBpbiB0aGF0IGNhc2UgZG8gd2UgYXR0ZW1wdCB0aGlzLiAgKi8KLS0jaWZuZGVmIFNIQVJFRAotKyNpZiAhZGVmaW5lZCBTSEFSRUQgJiYgIWRlZmluZWQgSU5fR0xJQkNfTE9DQUxFREVGCi0gIyBpbmNsdWRlIDx0bHMuaD4KLSAjIGRlZmluZSBOTF9DVVJSRU5UX0lORElSRUNUCTEKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYyBiL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jCi1pbmRleCA5NGMxMjJkZjY4Li44MGU1M2UxMmM4IDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jCi1AQCAtMTgsNyArMTgsOSBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0rI2lmbmRlZiBOT19VTkNPTVBSRVNTCi0gI2luY2x1ZGUgPHNwYXduLmg+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLUBAIC0xNTQsNiArMTU2LDcgQEAgY2hhcm1hcF9jbG9zZWRpciAoQ0hBUk1BUF9ESVIgKmNkaXIpCi0gICByZXR1cm4gY2xvc2VkaXIgKGRpcik7Ci0gfQotIAotKyNpZm5kZWYgTk9fVU5DT01QUkVTUwotIC8qIENyZWF0ZXMgYSBzdWJwcm9jZXNzIGRlY29tcHJlc3NpbmcgdGhlIGdpdmVuIHBhdGhuYW1lLCBhbmQgcmV0dXJucwotICAgIGEgc3RyZWFtIHJlYWRpbmcgaXRzIG91dHB1dCAodGhlIGRlY29tcHJlc3NlZCBkYXRhKS4gICovCi0gc3RhdGljCi1AQCAtMjAyLDYgKzIwNSw3IEBAIGZvcGVuX3VuY29tcHJlc3NlZCAoY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IGNoYXIgKmNvbXByZXNzb3IpCi0gICAgIH0KLSAgIHJldHVybiBOVUxMOwotIH0KLSsjZW5kaWYKLSAKLSAvKiBPcGVucyBhIGNoYXJtYXAgZm9yIHJlYWRpbmcsIGdpdmVuIGl0cyBuYW1lIChub3QgYW4gYWxpYXMgbmFtZSkuICAqLwotIEZJTEUgKgotQEAgLTIyNCw2ICsyMjgsNyBAQCBjaGFybWFwX29wZW4gKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqbmFtZSkKLSAgIGlmIChzdHJlYW0gIT0gTlVMTCkKLSAgICAgcmV0dXJuIHN0cmVhbTsKLSAKLSsjaWZuZGVmIE5PX1VOQ09NUFJFU1MKLSAgIG1lbWNweSAocCwgIi5neiIsIDQpOwotICAgc3RyZWFtID0gZm9wZW5fdW5jb21wcmVzc2VkIChwYXRobmFtZSwgImd6aXAiKTsKLSAgIGlmIChzdHJlYW0gIT0gTlVMTCkKLUBAIC0yMzMsNiArMjM4LDcgQEAgY2hhcm1hcF9vcGVuIChjb25zdCBjaGFyICpkaXJlY3RvcnksIGNvbnN0IGNoYXIgKm5hbWUpCi0gICBzdHJlYW0gPSBmb3Blbl91bmNvbXByZXNzZWQgKHBhdGhuYW1lLCAiYnppcDIiKTsKLSAgIGlmIChzdHJlYW0gIT0gTlVMTCkKLSAgICAgcmV0dXJuIHN0cmVhbTsKLSsjZW5kaWYKLSAKLSAgIHJldHVybiBOVUxMOwotIH0KLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYwotaW5kZXggNmJhYWI2Y2ZiMC4uYjEyYTJmY2VhYiAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMKLUBAIC0zNDksNyArMzQ5LDcgQEAgbmV3X2VsZW1lbnQgKHN0cnVjdCBsb2NhbGVfY29sbGF0ZV90ICpjb2xsYXRlLCBjb25zdCBjaGFyICptYnMsIHNpemVfdCBtYnNsZW4sCi0gICAgIH0KLSAgIGlmICh3Y3MgIT0gTlVMTCkKLSAgICAgewotLSAgICAgIHNpemVfdCBud2NzID0gd2NzbGVuICgod2NoYXJfdCAqKSB3Y3MpOwotKyAgICAgIHNpemVfdCBud2NzID0gd2NzbGVuX3VpbnQzMiAod2NzKTsKLSAgICAgICB1aW50MzJfdCB6ZXJvID0gMDsKLSAgICAgICAvKiBIYW5kbGUgPFUwMDAwPiBhcyBhIHNpbmdsZSBjaGFyYWN0ZXIuICAqLwotICAgICAgIGlmIChud2NzID09IDApCi1AQCAtMTc3Miw4ICsxNzcyLDcgQEAgc3ltYm9sIGAlcycgaGFzIHRoZSBzYW1lIGVuY29kaW5nIGFzIiksICgqZXB0ciktPm5hbWUpOwotIAotIAkgICAgICBpZiAoKCplcHRyKS0+bndjcyA9PSBydW5wLT5ud2NzKQotIAkJewotLQkJICBpbnQgYyA9IHdtZW1jbXAgKCh3Y2hhcl90ICopICgqZXB0ciktPndjcywKLS0JCQkJICAgKHdjaGFyX3QgKikgcnVucC0+d2NzLCBydW5wLT5ud2NzKTsKLSsJCSAgaW50IGMgPSB3bWVtY21wX3VpbnQzMiAoKCplcHRyKS0+d2NzLCBydW5wLT53Y3MsIHJ1bnAtPm53Y3MpOwotIAotIAkJICBpZiAoYyA9PSAwKQotIAkJICAgIHsKLUBAIC0yMDAwLDkgKzE5OTksOSBAQCBhZGRfdG9fdGFibGV3YyAodWludDMyX3QgY2gsIHN0cnVjdCBlbGVtZW50X3QgKnJ1bnApCi0gCSAgICAgb25lIGNvbnNlY3V0aXZlIGVudHJ5LiAgKi8KLSAJICBpZiAocnVucC0+d2NuZXh0ICE9IE5VTEwKLSAJICAgICAgJiYgcnVucC0+bndjcyA9PSBydW5wLT53Y25leHQtPm53Y3MKLS0JICAgICAgJiYgd21lbWNtcCAoKHdjaGFyX3QgKikgcnVucC0+d2NzLAotLQkJCSAgKHdjaGFyX3QgKilydW5wLT53Y25leHQtPndjcywKLS0JCQkgIHJ1bnAtPm53Y3MgLSAxKSA9PSAwCi0rCSAgICAgICYmIHdtZW1jbXBfdWludDMyIChydW5wLT53Y3MsCi0rCQkJCSBydW5wLT53Y25leHQtPndjcywKLSsJCQkJIHJ1bnAtPm53Y3MgLSAxKSA9PSAwCi0gCSAgICAgICYmIChydW5wLT53Y3NbcnVucC0+bndjcyAtIDFdCi0gCQkgID09IHJ1bnAtPndjbmV4dC0+d2NzW3J1bnAtPm53Y3MgLSAxXSArIDEpKQotIAkgICAgewotQEAgLTIwMjYsOSArMjAyNSw5IEBAIGFkZF90b190YWJsZXdjICh1aW50MzJfdCBjaCwgc3RydWN0IGVsZW1lbnRfdCAqcnVucCkKLSAJCXJ1bnAgPSBydW5wLT53Y25leHQ7Ci0gCSAgICAgIHdoaWxlIChydW5wLT53Y25leHQgIT0gTlVMTAotIAkJICAgICAmJiBydW5wLT5ud2NzID09IHJ1bnAtPndjbmV4dC0+bndjcwotLQkJICAgICAmJiB3bWVtY21wICgod2NoYXJfdCAqKSBydW5wLT53Y3MsCi0tCQkJCSAod2NoYXJfdCAqKXJ1bnAtPndjbmV4dC0+d2NzLAotLQkJCQkgcnVucC0+bndjcyAtIDEpID09IDAKLSsJCSAgICAgJiYgd21lbWNtcF91aW50MzIgKHJ1bnAtPndjcywKLSsJCQkJCXJ1bnAtPndjbmV4dC0+d2NzLAotKwkJCQkJcnVucC0+bndjcyAtIDEpID09IDAKLSAJCSAgICAgJiYgKHJ1bnAtPndjc1tydW5wLT5ud2NzIC0gMV0KLSAJCQkgPT0gcnVucC0+d2NuZXh0LT53Y3NbcnVucC0+bndjcyAtIDFdICsgMSkpOwotIAotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMKLWluZGV4IGNmYzljNDNmZDUuLjY1NzJjYzE5OWMgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMKLUBAIC05MTUsNyArOTE1LDcgQEAgY3R5cGVfb3V0cHV0IChzdHJ1Y3QgbG9jYWxlZGVmX3QgKmxvY2FsZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKLSAgIGFsbG9jYXRlX2FycmF5cyAoY3R5cGUsIGNoYXJtYXAsIGN0eXBlLT5yZXBlcnRvaXJlKTsKLSAKLSAgIGRlZmF1bHRfbWlzc2luZ19sZW4gPSAoY3R5cGUtPmRlZmF1bHRfbWlzc2luZwotLQkJCSA/IHdjc2xlbiAoKHdjaGFyX3QgKikgY3R5cGUtPmRlZmF1bHRfbWlzc2luZykKLSsJCQkgPyB3Y3NsZW5fdWludDMyIChjdHlwZS0+ZGVmYXVsdF9taXNzaW5nKQotIAkJCSA6IDApOwotIAotICAgaW5pdF9sb2NhbGVfZGF0YSAoJmZpbGUsIG5lbGVtcyk7Ci1AQCAtMTkyNyw3ICsxOTI3LDcgQEAgcmVhZF90cmFuc2xpdF9lbnRyeSAoc3RydWN0IGxpbmVyZWFkZXIgKmxkZmlsZSwgc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwKLSAJICAgIGlnbm9yZSA9IDE7Ci0gCSAgZWxzZQotIAkgICAgLyogVGhpcyB2YWx1ZSBpcyB1c2FibGUuICAqLwotLQkgICAgb2JzdGFja19ncm93IChvYiwgdG9fd3N0ciwgd2NzbGVuICgod2NoYXJfdCAqKSB0b193c3RyKSAqIDQpOwotKwkgICAgb2JzdGFja19ncm93IChvYiwgdG9fd3N0ciwgd2NzbGVuX3VpbnQzMiAodG9fd3N0cikgKiA0KTsKLSAKLSAJICBmaXJzdCA9IDA7Ci0gCX0KLUBAIC0yNDYxLDggKzI0NjEsOCBAQCB3aXRoIGNoYXJhY3RlciBjb2RlIHJhbmdlIHZhbHVlcyBvbmUgbXVzdCB1c2UgdGhlIGFic29sdXRlIGVsbGlwc2lzIGAuLi4nIikpOwotIAkgICAgfQotIAotIAloYW5kbGVfdG9rX2RpZ2l0OgotLQkgIGNsYXNzX2JpdCA9IF9JU3dkaWdpdDsKLS0JICBjbGFzczI1Nl9iaXQgPSBfSVNkaWdpdDsKLSsJICBjbGFzc19iaXQgPSBCSVR3ICh0b2tfZGlnaXQpOwotKwkgIGNsYXNzMjU2X2JpdCA9IEJJVCAodG9rX2RpZ2l0KTsKLSAJICBoYW5kbGVfZGlnaXRzID0gMTsKLSAJICBnb3RvIHJlYWRfY2hhcmNsYXNzOwotIAotQEAgLTM5MDQsOCArMzkwNCw3IEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKLSAKLSAJICB3aGlsZSAoaWR4IDwgbnVtYmVyKQotIAkgICAgewotLQkgICAgICBpbnQgcmVzID0gd2NzY21wICgoY29uc3Qgd2NoYXJfdCAqKSBzb3J0ZWRbaWR4XS0+ZnJvbSwKLS0JCQkJKGNvbnN0IHdjaGFyX3QgKikgcnVucC0+ZnJvbSk7Ci0rCSAgICAgIGludCByZXMgPSB3Y3NjbXBfdWludDMyIChzb3J0ZWRbaWR4XS0+ZnJvbSwgcnVucC0+ZnJvbSk7Ci0gCSAgICAgIGlmIChyZXMgPT0gMCkKLSAJCXsKLSAJCSAgcmVwbGFjZSA9IDE7Ci1AQCAtMzk0MiwxMSArMzk0MSwxMSBAQCBhbGxvY2F0ZV9hcnJheXMgKHN0cnVjdCBsb2NhbGVfY3R5cGVfdCAqY3R5cGUsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCi0gICAgICAgZm9yIChzaXplX3QgY250ID0gMDsgY250IDwgbnVtYmVyOyArK2NudCkKLSAJewotIAkgIHN0cnVjdCB0cmFuc2xpdF90b190ICpzcnVucDsKLS0JICBmcm9tX2xlbiArPSB3Y3NsZW4gKChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtjbnRdLT5mcm9tKSArIDE7Ci0rCSAgZnJvbV9sZW4gKz0gd2NzbGVuX3VpbnQzMiAoc29ydGVkW2NudF0tPmZyb20pICsgMTsKLSAJICBzcnVucCA9IHNvcnRlZFtjbnRdLT50bzsKLSAJICB3aGlsZSAoc3J1bnAgIT0gTlVMTCkKLSAJICAgIHsKLS0JICAgICAgdG9fbGVuICs9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc3J1bnAtPnN0cikgKyAxOwotKwkgICAgICB0b19sZW4gKz0gd2NzbGVuX3VpbnQzMiAoc3J1bnAtPnN0cikgKyAxOwotIAkgICAgICBzcnVucCA9IHNydW5wLT5uZXh0OwotIAkgICAgfQotIAkgIC8qIFBsdXMgb25lIGZvciB0aGUgZXh0cmEgTlVMIGNoYXJhY3RlciBtYXJraW5nIHRoZSBlbmQgb2YKLUBAIC0zOTcwLDE4ICszOTY5LDE4IEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKLSAJICBjdHlwZS0+dHJhbnNsaXRfZnJvbV9pZHhbY250XSA9IGZyb21fbGVuOwotIAkgIGN0eXBlLT50cmFuc2xpdF90b19pZHhbY250XSA9IHRvX2xlbjsKLSAKLS0JICBsZW4gPSB3Y3NsZW4gKChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtjbnRdLT5mcm9tKSArIDE7Ci0tCSAgd21lbWNweSAoKHdjaGFyX3QgKikgJmN0eXBlLT50cmFuc2xpdF9mcm9tX3RibFtmcm9tX2xlbl0sCi0tCQkgICAoY29uc3Qgd2NoYXJfdCAqKSBzb3J0ZWRbY250XS0+ZnJvbSwgbGVuKTsKLSsJICBsZW4gPSB3Y3NsZW5fdWludDMyIChzb3J0ZWRbY250XS0+ZnJvbSkgKyAxOwotKwkgIHdtZW1jcHlfdWludDMyICgmY3R5cGUtPnRyYW5zbGl0X2Zyb21fdGJsW2Zyb21fbGVuXSwKLSsJCQkgIHNvcnRlZFtjbnRdLT5mcm9tLCBsZW4pOwotIAkgIGZyb21fbGVuICs9IGxlbjsKLSAKLSAJICBjdHlwZS0+dHJhbnNsaXRfdG9faWR4W2NudF0gPSB0b19sZW47Ci0gCSAgc3J1bnAgPSBzb3J0ZWRbY250XS0+dG87Ci0gCSAgd2hpbGUgKHNydW5wICE9IE5VTEwpCi0gCSAgICB7Ci0tCSAgICAgIGxlbiA9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc3J1bnAtPnN0cikgKyAxOwotLQkgICAgICB3bWVtY3B5ICgod2NoYXJfdCAqKSAmY3R5cGUtPnRyYW5zbGl0X3RvX3RibFt0b19sZW5dLAotLQkJICAgICAgIChjb25zdCB3Y2hhcl90ICopIHNydW5wLT5zdHIsIGxlbik7Ci0rCSAgICAgIGxlbiA9IHdjc2xlbl91aW50MzIgKHNydW5wLT5zdHIpICsgMTsKLSsJICAgICAgd21lbWNweV91aW50MzIgKCZjdHlwZS0+dHJhbnNsaXRfdG9fdGJsW3RvX2xlbl0sCi0rCQkJICAgICAgc3J1bnAtPnN0ciwgbGVuKTsKLSAJICAgICAgdG9fbGVuICs9IGxlbjsKLSAJICAgICAgc3J1bnAgPSBzcnVucC0+bmV4dDsKLSAJICAgIH0KLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYwotaW5kZXggOGU5ODQ5ZmRiYS4uMDI4ZDNlZmE5ZiAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMKLUBAIC0yMjAsOCArMjIwLDEwIEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIik7Ci0gCX0KLSAgICAgICBlbHNlCi0gCXsKLSsJICBzdGF0aWMgY29uc3QgdWludDMyX3Qgd3RfZm10X2FtcG1bXQotKwkgICAgPSB7ICclJywnSScsJzonLCclJywnTScsJzonLCclJywnUycsJyAnLCclJywncCcsMCB9OwotIAkgIHRpbWUtPnRfZm10X2FtcG0gPSAiJUk6JU06JVMgJXAiOwotLQkgIHRpbWUtPnd0X2ZtdF9hbXBtID0gKGNvbnN0IHVpbnQzMl90ICopIEwiJUk6JU06JVMgJXAiOwotKwkgIHRpbWUtPnd0X2ZtdF9hbXBtID0gd3RfZm10X2FtcG07Ci0gCX0KLSAgICAgfQotIAotQEAgLTIzMSw3ICsyMzMsNyBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpOwotICAgICAgIGNvbnN0IGludCBkYXlzX3Blcl9tb250aFsxMl0gPSB7IDMxLCAyOSwgMzEsIDMwLCAzMSwgMzAsCi0gCQkJCSAgICAgICAzMSwgMzEsIDMwLCAzMSAsMzAsIDMxIH07Ci0gICAgICAgc2l6ZV90IGlkeDsKLS0gICAgICB3Y2hhcl90ICp3c3RyOwotKyAgICAgIHVpbnQzMl90ICp3c3RyOwotIAotICAgICAgIHRpbWUtPmVyYV9lbnRyaWVzID0KLSAJKHN0cnVjdCBlcmFfZGF0YSAqKSB4bWFsbG9jICh0aW1lLT5udW1fZXJhCi1AQCAtNDU3LDE4ICs0NTksMTggQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKTsKLSAJICAgIH0KLSAKLSAJICAvKiBOb3cgZ2VuZXJhdGUgdGhlIHdpZGUgY2hhcmFjdGVyIG5hbWUgYW5kIGZvcm1hdC4gICovCi0tCSAgd3N0ciA9IHdjc2NociAoKHdjaGFyX3QgKikgdGltZS0+d2VyYVtpZHhdLCBMJzonKTsvKiBlbmQgZGlyZWN0aW9uICovCi0tCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7CS8qIGVuZCBvZmZzZXQgKi8KLS0JICB3c3RyID0gd3N0ciA/IHdjc2NociAod3N0ciArIDEsIEwnOicpIDogTlVMTDsJLyogZW5kIHN0YXJ0ICovCi0tCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7CS8qIGVuZCBlbmQgKi8KLSsJICB3c3RyID0gd2NzY2hyX3VpbnQzMiAodGltZS0+d2VyYVtpZHhdLCBMJzonKTsgLyogZW5kIGRpcmVjdGlvbiAqLwotKwkgIHdzdHIgPSB3c3RyID8gd2NzY2hyX3VpbnQzMiAod3N0ciArIDEsIEwnOicpIDogTlVMTDsgLyogZW5kIG9mZnNldCAqLwotKwkgIHdzdHIgPSB3c3RyID8gd2NzY2hyX3VpbnQzMiAod3N0ciArIDEsIEwnOicpIDogTlVMTDsgLyogZW5kIHN0YXJ0ICovCi0rCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOyAvKiBlbmQgZW5kICovCi0gCSAgaWYgKHdzdHIgIT0gTlVMTCkKLSAJICAgIHsKLS0JICAgICAgdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53bmFtZSA9ICh1aW50MzJfdCAqKSB3c3RyICsgMTsKLS0JICAgICAgd3N0ciA9IHdjc2NociAod3N0ciArIDEsIEwnOicpOwkvKiBlbmQgbmFtZSAqLwotKwkgICAgICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLnduYW1lID0gd3N0ciArIDE7Ci0rCSAgICAgIHdzdHIgPSB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6Jyk7IC8qIGVuZCBuYW1lICovCi0gCSAgICAgIGlmICh3c3RyICE9IE5VTEwpCi0gCQl7Ci0gCQkgICp3c3RyID0gTCdcMCc7Ci0tCQkgIHRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud2Zvcm1hdCA9ICh1aW50MzJfdCAqKSB3c3RyICsgMTsKLSsJCSAgdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53Zm9ybWF0ID0gd3N0ciArIDE7Ci0gCQl9Ci0gCSAgICAgIGVsc2UKLSAJCXRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud25hbWUgPQotQEAgLTUyNyw3ICs1MjksMTYgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKTsKLSAgIGlmICh0aW1lLT5kYXRlX2ZtdCA9PSBOVUxMKQotICAgICB0aW1lLT5kYXRlX2ZtdCA9ICIlYSAlYiAlZSAlSDolTTolUyAlWiAlWSI7Ci0gICBpZiAodGltZS0+d2RhdGVfZm10ID09IE5VTEwpCi0tICAgIHRpbWUtPndkYXRlX2ZtdCA9IChjb25zdCB1aW50MzJfdCAqKSBMIiVhICViICVlICVIOiVNOiVTICVaICVZIjsKLSsgICAgewotKyAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3ZGF0ZV9mbXRbXSA9Ci0rCXsgJyUnLCdhJywnICcsCi0rCSAgJyUnLCdiJywnICcsCi0rCSAgJyUnLCdlJywnICcsCi0rCSAgJyUnLCdIJywnOicsJyUnLCdNJywnOicsJyUnLCdTJywnICcsCi0rCSAgJyUnLCdaJywnICcsCi0rCSAgJyUnLCdZJywwIH07Ci0rICAgICAgdGltZS0+d2RhdGVfZm10ID0gd2RhdGVfZm10OwotKyAgICB9Ci0gfQotIAotIAotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jCi1pbmRleCBlZDNhOTczMWQwLi4zMTc4ZWEwNTdhIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYwotQEAgLTU5NSw3ICs1OTUsNyBAQCBnZXRfc3RyaW5nIChzdHJ1Y3QgbGluZXJlYWRlciAqbHIsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCi0gewotICAgaW50IHJldHVybl93aWRlc3RyID0gbHItPnJldHVybl93aWRlc3RyOwotICAgY2hhciAqYnVmOwotLSAgd2NoYXJfdCAqYnVmMiA9IE5VTEw7Ci0rICB1aW50MzJfdCAqYnVmMiA9IE5VTEw7Ci0gICBzaXplX3QgYnVmYWN0OwotICAgc2l6ZV90IGJ1Zm1heCA9IDU2OwotIAotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYwotaW5kZXggYjdiY2VmODI0OC4uZWZlY2VkMWUwZiAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jCi1AQCAtMTA5LDYgKzEwOSw3IEBAIHZvaWQgKCphcmdwX3Byb2dyYW1fdmVyc2lvbl9ob29rKSAoRklMRSAqLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqKSA9IHByaW50X3ZlcnNpb247Ci0gI2RlZmluZSBPUFRfTk9fV0FSTiA0MDIKLSAjZGVmaW5lIE9QVF9XQVJOIDQwMwotICNkZWZpbmUgT1BUX05PX0hBUkRfTElOS1MgNDA0Ci0rI2RlZmluZSBPUFRfVUlOVDMyX0FMSUdOIDQwNQotIAotIC8qIERlZmluaXRpb25zIG9mIGFyZ3VtZW50cyBmb3IgYXJncCBmdW5jdGlvbnMuICAqLwotIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncF9vcHRpb24gb3B0aW9uc1tdID0KLUBAIC0xNTMsNiArMTU0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiBvcHRpb25zW10gPQotICAgICBOXygiR2VuZXJhdGUgbGl0dGxlLWVuZGlhbiBvdXRwdXQiKSB9LAotICAgeyAiYmlnLWVuZGlhbiIsIE9QVF9CSUdfRU5ESUFOLCBOVUxMLCAwLAotICAgICBOXygiR2VuZXJhdGUgYmlnLWVuZGlhbiBvdXRwdXQiKSB9LAotKyAgeyAidWludDMyLWFsaWduIiwgT1BUX1VJTlQzMl9BTElHTiwgIkFMSUdOTUVOVCIsIDAsCi0rICAgIE5fKCJTZXQgdGhlIHRhcmdldCdzIHVpbnQzMl90IGFsaWdubWVudCBpbiBieXRlcyAoZGVmYXVsdCA0KSIpIH0sCi0gICB7IE5VTEwsIDAsIE5VTEwsIDAsIE5VTEwgfQotIH07Ci0gCi1AQCAtMjQyLDEyICsyNDUsMTQgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgICAgIGN0eXBlIGxvY2FsZS4gIChQMTAwMy4yIDQuMzUuNS4yKSAgKi8KLSAgIHNldGxvY2FsZSAoTENfQ1RZUEUsICJQT1NJWCIpOwotIAotKyNpZm5kZWYgTk9fU1lTQ09ORgotICAgLyogTG9vayB3aGV0aGVyIHRoZSBzeXN0ZW0gcmVhbGx5IGFsbG93cyBsb2NhbGUgZGVmaW5pdGlvbnMuICBQT1NJWAotICAgICAgZGVmaW5lcyBlcnJvciBjb2RlIDMgZm9yIHRoaXMgc2l0dWF0aW9uIHNvIEkgdGhpbmsgaXQgbXVzdCBiZQotICAgICAgYSBmYXRhbCBlcnJvciAoc2VlIFAxMDAzLjIgNC4zNS44KS4gICovCi0gICBpZiAoc3lzY29uZiAoX1NDXzJfTE9DQUxFREVGKSA8IDApCi0gICAgIHJlY29yZF9lcnJvciAoMywgMCwgXygiXAotIEZBVEFMOiBzeXN0ZW0gZG9lcyBub3QgZGVmaW5lIGBfUE9TSVgyX0xPQ0FMRURFRiciKSk7Ci0rI2VuZGlmCi0gCi0gICAvKiBQcm9jZXNzIGNoYXJtYXAgZmlsZS4gICovCi0gICBjaGFybWFwID0gY2hhcm1hcF9yZWFkIChjaGFybWFwX2ZpbGUsIHZlcmJvc2UsIDEsIGJlX3F1aWV0LCAxKTsKLUBAIC0zOTksNiArNDA0LDkgQEAgcGFyc2Vfb3B0IChpbnQga2V5LCBjaGFyICphcmcsIHN0cnVjdCBhcmdwX3N0YXRlICpzdGF0ZSkKLSAgICAgICAvKiBEbyBub3QgaGFyZCBsaW5rIHRvIG90aGVyIGxvY2FsZXMuICAqLwotICAgICAgIGhhcmRfbGlua3MgPSBmYWxzZTsKLSAgICAgICBicmVhazsKLSsgICAgY2FzZSBPUFRfVUlOVDMyX0FMSUdOOgotKyAgICAgIHVpbnQzMl9hbGlnbl9tYXNrID0gc3RydG9sIChhcmcsIE5VTEwsIDApIC0gMTsKLSsgICAgICBicmVhazsKLSAgICAgY2FzZSAnYyc6Ci0gICAgICAgZm9yY2Vfb3V0cHV0ID0gMTsKLSAgICAgICBicmVhazsKLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYwotaW5kZXggZTRiYTQ4ZTk2OC4uZTdiMGVmZTg4NyAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMKLUBAIC01NDQsNiArNTQ0LDkgQEAgY29tcGFyZV9maWxlcyAoY29uc3QgY2hhciAqZmlsZW5hbWUxLCBjb25zdCBjaGFyICpmaWxlbmFtZTIsIHNpemVfdCBzaXplLAotICAgIG1hY2hpbmUgcnVubmluZyBsb2NhbGVkZWYuICAqLwotIGJvb2wgc3dhcF9lbmRpYW5uZXNzX3A7Ci0gCi0rLyogVGhlIHRhcmdldCdzIHZhbHVlIG9mIF9fYWxpZ25fXyh1aW50MzJfdCkgLSAxLiAgKi8KLSt1bnNpZ25lZCBpbnQgdWludDMyX2FsaWduX21hc2sgPSAzOwotKwotIC8qIFdoZW4gY2FsbGVkIG91dHNpZGUgYSBzdGFydF9sb2NhbGVfc3RydWN0dXJlL2VuZF9sb2NhbGVfc3RydWN0dXJlCi0gICAgb3Igc3RhcnRfbG9jYWxlX3ByZWx1ZGUvZW5kX2xvY2FsZV9wcmVsdWRlIGJsb2NrLCByZWNvcmQgdGhhdCB0aGUKLSAgICBuZXh0IGJ5dGUgaW4gRklMRSdzIG9ic3RhY2sgd2lsbCBiZSB0aGUgZmlyc3QgYnl0ZSBvZiBhIG5ldyBlbGVtZW50LgotQEAgLTYyMSw3ICs2MjQsNyBAQCBhZGRfbG9jYWxlX3N0cmluZyAoc3RydWN0IGxvY2FsZV9maWxlICpmaWxlLCBjb25zdCBjaGFyICpzdHJpbmcpCi0gdm9pZAotIGFkZF9sb2NhbGVfd3N0cmluZyAoc3RydWN0IGxvY2FsZV9maWxlICpmaWxlLCBjb25zdCB1aW50MzJfdCAqc3RyaW5nKQotIHsKLS0gIGFkZF9sb2NhbGVfdWludDMyX2FycmF5IChmaWxlLCBzdHJpbmcsIHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc3RyaW5nKSArIDEpOwotKyAgYWRkX2xvY2FsZV91aW50MzJfYXJyYXkgKGZpbGUsIHN0cmluZywgd2NzbGVuX3VpbnQzMiAoc3RyaW5nKSArIDEpOwotIH0KLSAKLSAvKiBSZWNvcmQgdGhhdCBGSUxFJ3MgbmV4dCBlbGVtZW50IGlzIHRoZSAzMi1iaXQgaW50ZWdlciBWQUxVRS4gICovCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaCBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKLWluZGV4IGMwNjNmYzA5N2QuLjRlNzQ2NWU1NWEgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oCi1AQCAtNzEsNiArNzEsOCBAQCBleHRlcm4gdm9pZCB3cml0ZV9hbGxfY2F0ZWdvcmllcyAoc3RydWN0IGxvY2FsZWRlZl90ICpkZWZpbml0aW9ucywKLSAKLSBleHRlcm4gYm9vbCBzd2FwX2VuZGlhbm5lc3NfcDsKLSAKLStleHRlcm4gdW5zaWduZWQgaW50IHVpbnQzMl9hbGlnbl9tYXNrOwotKwotIC8qIENoYW5nZSB0aGUgb3V0cHV0IHRvIGJlIGJpZy1lbmRpYW4gaWYgQklHX0VORElBTiBpcyB0cnVlIGFuZAotICAgIGxpdHRsZS1lbmRpYW4gb3RoZXJ3aXNlLiAgKi8KLSBzdGF0aWMgaW5saW5lIHZvaWQKLUBAIC04OSw3ICs5MSw4IEBAIG1heWJlX3N3YXBfdWludDMyICh1aW50MzJfdCB2YWx1ZSkKLSB9Ci0gCi0gLyogTGlrZXdpc2UsIGJ1dCBtdW5nZSBhbiBhcnJheSBvZiBOIHVpbnQzMl90cyBzdGFydGluZyBhdCBBUlJBWS4gICovCi0tc3RhdGljIGlubGluZSB2b2lkCi0rc3RhdGljIHZvaWQKLStfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKLSBtYXliZV9zd2FwX3VpbnQzMl9hcnJheSAodWludDMyX3QgKmFycmF5LCBzaXplX3QgbikKLSB7Ci0gICBpZiAoc3dhcF9lbmRpYW5uZXNzX3ApCi1AQCAtOTksNyArMTAyLDggQEAgbWF5YmVfc3dhcF91aW50MzJfYXJyYXkgKHVpbnQzMl90ICphcnJheSwgc2l6ZV90IG4pCi0gCi0gLyogTGlrZSBtYXliZV9zd2FwX3VpbnQzMl9hcnJheSwgYnV0IHRoZSBhcnJheSBvZiBOIGVsZW1lbnRzIGlzIGF0Ci0gICAgdGhlIGVuZCBvZiBPQlNUQUNLJ3MgY3VycmVudCBvYmplY3QuICAqLwotLXN0YXRpYyBpbmxpbmUgdm9pZAotK3N0YXRpYyB2b2lkCi0rX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCi0gbWF5YmVfc3dhcF91aW50MzJfb2JzdGFjayAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIHNpemVfdCBuKQotIHsKLSAgIG1heWJlX3N3YXBfdWludDMyX2FycmF5ICgodWludDMyX3QgKikgb2JzdGFja19uZXh0X2ZyZWUgKG9ic3RhY2spIC0gbiwgbik7Ci1AQCAtMjc2LDQgKzI4MCw1NSBAQCBleHRlcm4gdm9pZCBpZGVudGlmaWNhdGlvbl9vdXRwdXQgKHN0cnVjdCBsb2NhbGVkZWZfdCAqbG9jYWxlLAotIAkJCQkgICBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAotIAkJCQkgICBjb25zdCBjaGFyICpvdXRwdXRfcGF0aCk7Ci0gCi0rc3RhdGljIHNpemVfdCB3Y3NsZW5fdWludDMyIChjb25zdCB1aW50MzJfdCAqc3RyKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Ci0rc3RhdGljIHVpbnQzMl90ICogd21lbWNweV91aW50MzIgKHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOwotK3N0YXRpYyB1aW50MzJfdCAqIHdjc2Nocl91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzLCB1aW50MzJfdCBjaCkgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOwotK3N0YXRpYyBpbnQgd2NzY21wX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKLStzdGF0aWMgaW50IHdtZW1jbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMiwgc2l6ZV90IG4pIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKLSsKLStzdGF0aWMgc2l6ZV90Ci0rd2NzbGVuX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnN0cikKLSt7Ci0rICBzaXplX3QgbGVuID0gMDsKLSsgIHdoaWxlIChzdHJbbGVuXSAhPSAwKQotKyAgICBsZW4rKzsKLSsgIHJldHVybiBsZW47Ci0rfQotKwotK3N0YXRpYyAgaW50Ci0rd21lbWNtcF91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikKLSt7Ci0rICB3aGlsZSAobi0tICE9IDApCi0rICAgIHsKLSsgICAgICBpbnQgZGlmZiA9ICpzMSsrIC0gKnMyKys7Ci0rICAgICAgaWYgKGRpZmYgIT0gMCkKLSsJcmV0dXJuIGRpZmY7Ci0rICAgIH0KLSsgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgaW50Ci0rd2NzY21wX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIpCi0rewotKyAgd2hpbGUgKCpzMSAhPSAwICYmICpzMSA9PSAqczIpCi0rICAgIHMxKyssIHMyKys7Ci0rICByZXR1cm4gKnMxIC0gKnMyOwotK30KLSsKLStzdGF0aWMgdWludDMyX3QgKgotK3dtZW1jcHlfdWludDMyICh1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMiwgc2l6ZV90IG4pCi0rewotKyAgcmV0dXJuIG1lbWNweSAoczEsIHMyLCBuICogc2l6ZW9mICh1aW50MzJfdCkpOwotK30KLSsKLStzdGF0aWMgdWludDMyX3QgKgotK3djc2Nocl91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzLCB1aW50MzJfdCBjaCkKLSt7Ci0rICBkbwotKyAgICBpZiAoKnMgPT0gY2gpCi0rICAgICAgcmV0dXJuICh1aW50MzJfdCAqKSBzOwotKyAgd2hpbGUgKCpzKysgIT0gMCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0gI2VuZGlmIC8qIGxvY2ZpbGUuaCAqLwotZGlmZiAtLWdpdCBhL2xvY2FsZS9zZXRsb2NhbGUuYyBiL2xvY2FsZS9zZXRsb2NhbGUuYwotaW5kZXggOWJkMzU0NTRiOS4uMmE2N2RjNjU4OSAxMDA2NDQKLS0tLSBhL2xvY2FsZS9zZXRsb2NhbGUuYwotKysrIGIvbG9jYWxlL3NldGxvY2FsZS5jCi1AQCAtNjQsMzYgKzY0LDYgQEAgc3RhdGljIGNoYXIgKmNvbnN0IF9ubF9jdXJyZW50X3VzZWRbXSA9Ci0gI2VuZGlmCi0gCi0gCi0tLyogRGVmaW5lIGFuIGFycmF5IG9mIGNhdGVnb3J5IG5hbWVzIChhbHNvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcykuICAqLwotLWNvbnN0IHVuaW9uIGNhdG5hbWVzdHJfdCBfbmxfY2F0ZWdvcnlfbmFtZXMgYXR0cmlidXRlX2hpZGRlbiA9Ci0tICB7Ci0tICAgIHsKLS0jZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKLS0gICAgICBjYXRlZ29yeV9uYW1lLAotLSNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKLS0jdW5kZWYgREVGSU5FX0NBVEVHT1JZCi0tICAgIH0KLS0gIH07Ci0tCi0tY29uc3QgdWludDhfdCBfbmxfY2F0ZWdvcnlfbmFtZV9pZHhzW19fTENfTEFTVF0gYXR0cmlidXRlX2hpZGRlbiA9Ci0tICB7Ci0tI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCi0tICAgIFtjYXRlZ29yeV0gPSBvZmZzZXRvZiAodW5pb24gY2F0bmFtZXN0cl90LCBDQVROQU1FTUYgKF9fTElORV9fKSksCi0tI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgotLSN1bmRlZiBERUZJTkVfQ0FURUdPUlkKLS0gIH07Ci0tCi0tLyogQW4gYXJyYXkgb2YgdGhlaXIgbGVuZ3RocywgZm9yIGNvbnZlbmllbmNlLiAgKi8KLS1jb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX3NpemVzW10gYXR0cmlidXRlX2hpZGRlbiA9Ci0tICB7Ci0tI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCi0tICAgIFtjYXRlZ29yeV0gPSBzaXplb2YgKGNhdGVnb3J5X25hbWUpIC0gMSwKLS0jaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCi0tI3VuZGVmCURFRklORV9DQVRFR09SWQotLSAgICBbTENfQUxMXSA9IHNpemVvZiAoIkxDX0FMTCIpIC0gMQotLSAgfTsKLS0KLS0KLSAjaWZkZWYgTkxfQ1VSUkVOVF9JTkRJUkVDVAotICMgZGVmaW5lIFdFQUtfUE9TVExPQUQocG9zdGxvYWQpIHdlYWtfZXh0ZXJuIChwb3N0bG9hZCkKLSAjZWxzZQotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIyLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE1MDNjOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSAyNWMyMTg1N2EzZmMwZWIyNjgzMTYxNmJhODhhNjk2ZGQzMWVjYmExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NTU6NTMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZWdsaWJjOiBSZXNvbHZlIF9fZnBzY3JfdmFsdWVzIG9uIFNINAorCisyMDEwLTA5LTI5ICBOb2J1aGlybyBJd2FtYXRzdSAgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgorICAgICAgICAgICAgQW5kcmV3IFN0dWJicyAgPGFtc0Bjb2Rlc291cmNlcnkuY29tPgorCisgICAgICAgIFJlc29sdmUgU0gncyBfX2Zwc2NyX3ZhbHVlcyB0byBzeW1ib2wgaW4gbGliYy5zby4KKworICAgICAgICAqIHN5c2RlcHMvc2gvc2g0L2ZwdS9mcHVfY29udHJvbC5oOiBBZGQgQysrIF9fc2V0X2Zwc2NyIHByb3RvdHlwZS4KKyAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucyAoR0xJQkNfMi4yKTogQWRkIF9fZnBzY3JfdmFsdWVzLgorICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TIChfX19mcHNjcl92YWx1ZXMpOiBOZXcgY29uc3RhbnQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgfCAgMSArCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMgfCAxMSArKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucworaW5kZXggZTA5MzhjNDE2NS4uY2ExZDdkYTMzOSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucworQEAgLTIsNiArMiw3IEBAIGxpYmMgeworICAgR0xJQkNfMi4yIHsKKyAgICAgIyBmdW5jdGlvbnMgdXNlZCBpbiBvdGhlciBsaWJyYXJpZXMKKyAgICAgX194c3RhdDY0OyBfX2Z4c3RhdDY0OyBfX2x4c3RhdDY0OworKyAgICBfX2Zwc2NyX3ZhbHVlczsKKyAKKyAgICAgIyBhKgorICAgICBhbHBoYXNvcnQ2NDsKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCitpbmRleCA4NWZmM2Y5MDBlLi43NzQzYjhkNTdhIDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCitAQCAtMzAsMyArMzAsMTQgQEAgRU5UUlkgKF9fc3lzY2FsbF9lcnJvcikKKyAKKyAjZGVmaW5lIF9fc3lzY2FsbF9lcnJvciBfX3N5c2NhbGxfZXJyb3JfMQorICNpbmNsdWRlIDxzeXNkZXBzL3VuaXgvc2gvc3lzZGVwLlM+CisrCisrICAgICAgIC5kYXRhCisrICAgICAgIC5hbGlnbiAzCisrICAgICAgIC5nbG9ibCBfX19mcHNjcl92YWx1ZXMKKysgICAgICAgLnR5cGUgX19fZnBzY3JfdmFsdWVzLCBAb2JqZWN0CisrICAgICAgIC5zaXplIF9fX2Zwc2NyX3ZhbHVlcywgOAorK19fX2Zwc2NyX3ZhbHVlczoKKysgICAgICAgLmxvbmcgMAorKyAgICAgICAubG9uZyAweDgwMDAwCisrd2Vha19hbGlhcyAoX19fZnBzY3JfdmFsdWVzLCBfX2Zwc2NyX3ZhbHVlcykKKysKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzY2N2RhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIGFmYThkNmZhZWRkZWI4MGFjYTMxOGIzM2VkZjQ5ZDlmOGNlNjU3NjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMCBBcHIgMjAxNiAyMToxMTowMCAtMDcwMAotU3ViamVjdDogW1BBVENIIDIzLzI4XSBEZWZpbmUgRFVNTVlfTE9DQUxFX1QgaWYgbm90IGRlZmluZWQKLQotVGhpcyBpcyBhIGhhY2sgdG8gZml4IGJ1aWxkaW5nIHRoZSBsb2NhbGUgYml0cyBvbiBhbiBvbGRlcgotQ2VudE9zIDUuWCBtYWNoaW5lCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb3RoZXJdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmggfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaCBiL2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaAotaW5kZXggYTFlNmUwZWMzYy4uN2Y3NTUyOGVhZSAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaAotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oCi1AQCAtMTksNiArMTksOSBAQAotICNpZm5kZWYgX0xEX0NPTkZJR19ICi0gI2RlZmluZSBfTERfQ09ORklHX0gJMQotIAotKyNpZm5kZWYgRFVNTVlfTE9DQUxFX1QKLSsjZGVmaW5lIERVTU1ZX0xPQ0FMRV9UCi0rI2VuZGlmCi0gLyogVXNlIHRoZSBpbnRlcm5hbCB0ZXh0ZG9tYWluIHVzZWQgZm9yIGxpYmMgbWVzc2FnZXMuICAqLwotICNkZWZpbmUgUEFDS0FHRSBfbGliY19pbnRsX2RvbWFpbm5hbWUKLSAjaWZuZGVmIFZFUlNJT04KLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMy1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhOTBmMjIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsNTYwIEBACitGcm9tIDMwMDA4MzI3YWFkZjBjNzc1ZTY0NGJiMzg3ZDdjMjU5NTJlZDA1YjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTozMzo0OSArMDAwMAorU3ViamVjdDogW1BBVENIXSBlZ2xpYmM6IEZvcndhcmQgcG9ydCBjcm9zcyBsb2NhbGUgZ2VuZXJhdGlvbiBzdXBwb3J0CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbG9jYWxlL01ha2VmaWxlICAgICAgICAgICAgICAgfCAgMyArLQorIGxvY2FsZS9jYXRuYW1lcy5jICAgICAgICAgICAgIHwgNDYgKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgbG9jYWxlL2xvY2FsZWluZm8uaCAgICAgICAgICAgfCAgMiArLQorIGxvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jIHwgIDYgKysrKworIGxvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMgIHwgMTcgKysrKystLS0tLQorIGxvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jICAgIHwgMjcgKysrKysrKystLS0tLS0tLQorIGxvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMgICAgIHwgMzEgKysrKysrKysrKysrLS0tLS0tCisgbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYyAgfCAgMiArLQorIGxvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYyAgIHwgIDggKysrKysKKyBsb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jICAgICB8ICA1ICsrLQorIGxvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmggICAgIHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KKyBsb2NhbGUvc2V0bG9jYWxlLmMgICAgICAgICAgICB8IDI5IC0tLS0tLS0tLS0tLS0tLS0tCisgMTIgZmlsZXMgY2hhbmdlZCwgMTY3IGluc2VydGlvbnMoKyksIDY4IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBsb2NhbGUvY2F0bmFtZXMuYworCitkaWZmIC0tZ2l0IGEvbG9jYWxlL01ha2VmaWxlIGIvbG9jYWxlL01ha2VmaWxlCitpbmRleCBjOTY5NGUyMzZlLi5iYTcxMDVmYWQ2IDEwMDY0NAorLS0tIGEvbG9jYWxlL01ha2VmaWxlCisrKysgYi9sb2NhbGUvTWFrZWZpbGUKK0BAIC0yNiw3ICsyNiw4IEBAIGhlYWRlcnMJCT0gbGFuZ2luZm8uaCBsb2NhbGUuaCBiaXRzL2xvY2FsZS5oIFwKKyAJCSAgYml0cy90eXBlcy9sb2NhbGVfdC5oIGJpdHMvdHlwZXMvX19sb2NhbGVfdC5oCisgcm91dGluZXMJPSBzZXRsb2NhbGUgZmluZGxvY2FsZSBsb2FkbG9jYWxlIGxvYWRhcmNoaXZlIFwKKyAJCSAgbG9jYWxlY29udiBubF9sYW5naW5mbyBubF9sYW5naW5mb19sIG1iX2N1cl9tYXggXAorLQkJICBuZXdsb2NhbGUgZHVwbG9jYWxlIGZyZWVsb2NhbGUgdXNlbG9jYWxlCisrCQkgIG5ld2xvY2FsZSBkdXBsb2NhbGUgZnJlZWxvY2FsZSB1c2Vsb2NhbGUgXAorKwkJICBjYXRuYW1lcworIHRlc3RzCQk9IHRzdC1DLWxvY2FsZSB0c3QtbG9jbmFtZSB0c3QtZHVwbG9jYWxlCisgY2F0ZWdvcmllcwk9IGN0eXBlIG1lc3NhZ2VzIG1vbmV0YXJ5IG51bWVyaWMgdGltZSBwYXBlciBuYW1lIFwKKyAJCSAgYWRkcmVzcyB0ZWxlcGhvbmUgbWVhc3VyZW1lbnQgaWRlbnRpZmljYXRpb24gY29sbGF0ZQorZGlmZiAtLWdpdCBhL2xvY2FsZS9jYXRuYW1lcy5jIGIvbG9jYWxlL2NhdG5hbWVzLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi41MzhmM2Y1ZWRiCistLS0gL2Rldi9udWxsCisrKysgYi9sb2NhbGUvY2F0bmFtZXMuYworQEAgLTAsMCArMSw0NiBAQAorKy8qIENvcHlyaWdodCAoQykgMjAwNiAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlICJsb2NhbGVpbmZvLmgiCisrCisrLyogRGVmaW5lIGFuIGFycmF5IG9mIGNhdGVnb3J5IG5hbWVzIChhbHNvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcykuICAqLworK2NvbnN0IHN0cnVjdCBjYXRuYW1lc3RyX3QgX25sX2NhdGVnb3J5X25hbWVzIGF0dHJpYnV0ZV9oaWRkZW4gPQorKyAgeworKyNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAorKyAgICBjYXRlZ29yeV9uYW1lLAorKyNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKKysjdW5kZWYgREVGSU5FX0NBVEVHT1JZCisrICB9OworKworK2NvbnN0IHVpbnQ4X3QgX25sX2NhdGVnb3J5X25hbWVfaWR4c1tfX0xDX0xBU1RdIGF0dHJpYnV0ZV9oaWRkZW4gPQorKyAgeworKyNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAorKyAgICBbY2F0ZWdvcnldID0gb2Zmc2V0b2YgKHN0cnVjdCBjYXRuYW1lc3RyX3QsIENBVE5BTUVNRiAoX19MSU5FX18pKSwKKysjaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCisrI3VuZGVmIERFRklORV9DQVRFR09SWQorKyAgfTsKKysKKysvKiBBbiBhcnJheSBvZiB0aGVpciBsZW5ndGhzLCBmb3IgY29udmVuaWVuY2UuICAqLworK2NvbnN0IHVpbnQ4X3QgX25sX2NhdGVnb3J5X25hbWVfc2l6ZXNbXSBhdHRyaWJ1dGVfaGlkZGVuID0KKysgIHsKKysjZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKKysgICAgW2NhdGVnb3J5XSA9IHNpemVvZiAoY2F0ZWdvcnlfbmFtZSkgLSAxLAorKyNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKKysjdW5kZWYJREVGSU5FX0NBVEVHT1JZCisrICAgIFtMQ19BTExdID0gc2l6ZW9mICgiTENfQUxMIikgLSAxCisrICB9OworZGlmZiAtLWdpdCBhL2xvY2FsZS9sb2NhbGVpbmZvLmggYi9sb2NhbGUvbG9jYWxlaW5mby5oCitpbmRleCBmZGMyODNjNjlhLi40ZWVlZDM1ZjkwIDEwMDY0NAorLS0tIGEvbG9jYWxlL2xvY2FsZWluZm8uaAorKysrIGIvbG9jYWxlL2xvY2FsZWluZm8uaAorQEAgLTIzMCw3ICsyMzAsNyBAQCBfX2xpYmNfdHNkX2RlZmluZSAoZXh0ZXJuLCBsb2NhbGVfdCwgTE9DQUxFKQorICAgIHVudXNlZC4gIFdlIGNhbiBtYW5hZ2UgdGhpcyBwbGF5aW5nIHNvbWUgdHJpY2tzIHdpdGggd2VhayByZWZlcmVuY2VzLgorICAgIEJ1dCB3aXRoIHRocmVhZC1sb2NhbCBsb2NhbGUgc2V0dGluZ3MsIGl0IGJlY29tZXMgcXVpdGUgdW5nYWlubHkgdW5sZXNzCisgICAgd2UgY2FuIHVzZSBfX3RocmVhZCB2YXJpYWJsZXMuICBTbyBvbmx5IGluIHRoYXQgY2FzZSBkbyB3ZSBhdHRlbXB0IHRoaXMuICAqLworLSNpZm5kZWYgU0hBUkVECisrI2lmICFkZWZpbmVkIFNIQVJFRCAmJiAhZGVmaW5lZCBJTl9HTElCQ19MT0NBTEVERUYKKyAjIGluY2x1ZGUgPHRscy5oPgorICMgZGVmaW5lIE5MX0NVUlJFTlRfSU5ESVJFQ1QJMQorICNlbmRpZgorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jIGIvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKK2luZGV4IDFhNTI2YTI0MGQuLjBmYjJkYWY5MzYgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKK0BAIC0xOCw3ICsxOCw5IEBACisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KKysjaWZuZGVmIE5PX1VOQ09NUFJFU1MKKyAjaW5jbHVkZSA8c3Bhd24uaD4KKysjZW5kaWYKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorQEAgLTE1NCw2ICsxNTYsNyBAQCBjaGFybWFwX2Nsb3NlZGlyIChDSEFSTUFQX0RJUiAqY2RpcikKKyAgIHJldHVybiBjbG9zZWRpciAoZGlyKTsKKyB9CisgCisrI2lmbmRlZiBOT19VTkNPTVBSRVNTCisgLyogQ3JlYXRlcyBhIHN1YnByb2Nlc3MgZGVjb21wcmVzc2luZyB0aGUgZ2l2ZW4gcGF0aG5hbWUsIGFuZCByZXR1cm5zCisgICAgYSBzdHJlYW0gcmVhZGluZyBpdHMgb3V0cHV0ICh0aGUgZGVjb21wcmVzc2VkIGRhdGEpLiAgKi8KKyBzdGF0aWMKK0BAIC0yMDIsNiArMjA1LDcgQEAgZm9wZW5fdW5jb21wcmVzc2VkIChjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3QgY2hhciAqY29tcHJlc3NvcikKKyAgICAgfQorICAgcmV0dXJuIE5VTEw7CisgfQorKyNlbmRpZgorIAorIC8qIE9wZW5zIGEgY2hhcm1hcCBmb3IgcmVhZGluZywgZ2l2ZW4gaXRzIG5hbWUgKG5vdCBhbiBhbGlhcyBuYW1lKS4gICovCisgRklMRSAqCitAQCAtMjI0LDYgKzIyOCw3IEBAIGNoYXJtYXBfb3BlbiAoY29uc3QgY2hhciAqZGlyZWN0b3J5LCBjb25zdCBjaGFyICpuYW1lKQorICAgaWYgKHN0cmVhbSAhPSBOVUxMKQorICAgICByZXR1cm4gc3RyZWFtOworIAorKyNpZm5kZWYgTk9fVU5DT01QUkVTUworICAgbWVtY3B5IChwLCAiLmd6IiwgNCk7CisgICBzdHJlYW0gPSBmb3Blbl91bmNvbXByZXNzZWQgKHBhdGhuYW1lLCAiZ3ppcCIpOworICAgaWYgKHN0cmVhbSAhPSBOVUxMKQorQEAgLTIzMyw2ICsyMzgsNyBAQCBjaGFybWFwX29wZW4gKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqbmFtZSkKKyAgIHN0cmVhbSA9IGZvcGVuX3VuY29tcHJlc3NlZCAocGF0aG5hbWUsICJiemlwMiIpOworICAgaWYgKHN0cmVhbSAhPSBOVUxMKQorICAgICByZXR1cm4gc3RyZWFtOworKyNlbmRpZgorIAorICAgcmV0dXJuIE5VTEw7CisgfQorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jCitpbmRleCBmZWIxYTExMjU4Li41YThlNTIyNDcwIDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYworQEAgLTM0OSw3ICszNDksNyBAQCBuZXdfZWxlbWVudCAoc3RydWN0IGxvY2FsZV9jb2xsYXRlX3QgKmNvbGxhdGUsIGNvbnN0IGNoYXIgKm1icywgc2l6ZV90IG1ic2xlbiwKKyAgICAgfQorICAgaWYgKHdjcyAhPSBOVUxMKQorICAgICB7CistICAgICAgc2l6ZV90IG53Y3MgPSB3Y3NsZW4gKCh3Y2hhcl90ICopIHdjcyk7CisrICAgICAgc2l6ZV90IG53Y3MgPSB3Y3NsZW5fdWludDMyICh3Y3MpOworICAgICAgIHVpbnQzMl90IHplcm8gPSAwOworICAgICAgIC8qIEhhbmRsZSA8VTAwMDA+IGFzIGEgc2luZ2xlIGNoYXJhY3Rlci4gICovCisgICAgICAgaWYgKG53Y3MgPT0gMCkKK0BAIC0xNzcyLDggKzE3NzIsNyBAQCBzeW1ib2wgYCVzJyBoYXMgdGhlIHNhbWUgZW5jb2RpbmcgYXMiKSwgKCplcHRyKS0+bmFtZSk7CisgCisgCSAgICAgIGlmICgoKmVwdHIpLT5ud2NzID09IHJ1bnAtPm53Y3MpCisgCQl7CistCQkgIGludCBjID0gd21lbWNtcCAoKHdjaGFyX3QgKikgKCplcHRyKS0+d2NzLAorLQkJCQkgICAod2NoYXJfdCAqKSBydW5wLT53Y3MsIHJ1bnAtPm53Y3MpOworKwkJICBpbnQgYyA9IHdtZW1jbXBfdWludDMyICgoKmVwdHIpLT53Y3MsIHJ1bnAtPndjcywgcnVucC0+bndjcyk7CisgCisgCQkgIGlmIChjID09IDApCisgCQkgICAgeworQEAgLTIwMDAsOSArMTk5OSw5IEBAIGFkZF90b190YWJsZXdjICh1aW50MzJfdCBjaCwgc3RydWN0IGVsZW1lbnRfdCAqcnVucCkKKyAJICAgICBvbmUgY29uc2VjdXRpdmUgZW50cnkuICAqLworIAkgIGlmIChydW5wLT53Y25leHQgIT0gTlVMTAorIAkgICAgICAmJiBydW5wLT5ud2NzID09IHJ1bnAtPndjbmV4dC0+bndjcworLQkgICAgICAmJiB3bWVtY21wICgod2NoYXJfdCAqKSBydW5wLT53Y3MsCistCQkJICAod2NoYXJfdCAqKXJ1bnAtPndjbmV4dC0+d2NzLAorLQkJCSAgcnVucC0+bndjcyAtIDEpID09IDAKKysJICAgICAgJiYgd21lbWNtcF91aW50MzIgKHJ1bnAtPndjcywKKysJCQkJIHJ1bnAtPndjbmV4dC0+d2NzLAorKwkJCQkgcnVucC0+bndjcyAtIDEpID09IDAKKyAJICAgICAgJiYgKHJ1bnAtPndjc1tydW5wLT5ud2NzIC0gMV0KKyAJCSAgPT0gcnVucC0+d2NuZXh0LT53Y3NbcnVucC0+bndjcyAtIDFdICsgMSkpCisgCSAgICB7CitAQCAtMjAyNiw5ICsyMDI1LDkgQEAgYWRkX3RvX3RhYmxld2MgKHVpbnQzMl90IGNoLCBzdHJ1Y3QgZWxlbWVudF90ICpydW5wKQorIAkJcnVucCA9IHJ1bnAtPndjbmV4dDsKKyAJICAgICAgd2hpbGUgKHJ1bnAtPndjbmV4dCAhPSBOVUxMCisgCQkgICAgICYmIHJ1bnAtPm53Y3MgPT0gcnVucC0+d2NuZXh0LT5ud2NzCistCQkgICAgICYmIHdtZW1jbXAgKCh3Y2hhcl90ICopIHJ1bnAtPndjcywKKy0JCQkJICh3Y2hhcl90ICopcnVucC0+d2NuZXh0LT53Y3MsCistCQkJCSBydW5wLT5ud2NzIC0gMSkgPT0gMAorKwkJICAgICAmJiB3bWVtY21wX3VpbnQzMiAocnVucC0+d2NzLAorKwkJCQkJcnVucC0+d2NuZXh0LT53Y3MsCisrCQkJCQlydW5wLT5ud2NzIC0gMSkgPT0gMAorIAkJICAgICAmJiAocnVucC0+d2NzW3J1bnAtPm53Y3MgLSAxXQorIAkJCSA9PSBydW5wLT53Y25leHQtPndjc1tydW5wLT5ud2NzIC0gMV0gKyAxKSk7CisgCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYworaW5kZXggMzMyODA5M2QwZS4uZDU4ZmIwZjRiNyAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYworQEAgLTkxNSw3ICs5MTUsNyBAQCBjdHlwZV9vdXRwdXQgKHN0cnVjdCBsb2NhbGVkZWZfdCAqbG9jYWxlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorICAgYWxsb2NhdGVfYXJyYXlzIChjdHlwZSwgY2hhcm1hcCwgY3R5cGUtPnJlcGVydG9pcmUpOworIAorICAgZGVmYXVsdF9taXNzaW5nX2xlbiA9IChjdHlwZS0+ZGVmYXVsdF9taXNzaW5nCistCQkJID8gd2NzbGVuICgod2NoYXJfdCAqKSBjdHlwZS0+ZGVmYXVsdF9taXNzaW5nKQorKwkJCSA/IHdjc2xlbl91aW50MzIgKGN0eXBlLT5kZWZhdWx0X21pc3NpbmcpCisgCQkJIDogMCk7CisgCisgICBpbml0X2xvY2FsZV9kYXRhICgmZmlsZSwgbmVsZW1zKTsKK0BAIC0xOTI3LDcgKzE5MjcsNyBAQCByZWFkX3RyYW5zbGl0X2VudHJ5IChzdHJ1Y3QgbGluZXJlYWRlciAqbGRmaWxlLCBzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLAorIAkgICAgaWdub3JlID0gMTsKKyAJICBlbHNlCisgCSAgICAvKiBUaGlzIHZhbHVlIGlzIHVzYWJsZS4gICovCistCSAgICBvYnN0YWNrX2dyb3cgKG9iLCB0b193c3RyLCB3Y3NsZW4gKCh3Y2hhcl90ICopIHRvX3dzdHIpICogNCk7CisrCSAgICBvYnN0YWNrX2dyb3cgKG9iLCB0b193c3RyLCB3Y3NsZW5fdWludDMyICh0b193c3RyKSAqIDQpOworIAorIAkgIGZpcnN0ID0gMDsKKyAJfQorQEAgLTI0NjEsOCArMjQ2MSw4IEBAIHdpdGggY2hhcmFjdGVyIGNvZGUgcmFuZ2UgdmFsdWVzIG9uZSBtdXN0IHVzZSB0aGUgYWJzb2x1dGUgZWxsaXBzaXMgYC4uLiciKSk7CisgCSAgICB9CisgCisgCWhhbmRsZV90b2tfZGlnaXQ6CistCSAgY2xhc3NfYml0ID0gX0lTd2RpZ2l0OworLQkgIGNsYXNzMjU2X2JpdCA9IF9JU2RpZ2l0OworKwkgIGNsYXNzX2JpdCA9IEJJVHcgKHRva19kaWdpdCk7CisrCSAgY2xhc3MyNTZfYml0ID0gQklUICh0b2tfZGlnaXQpOworIAkgIGhhbmRsZV9kaWdpdHMgPSAxOworIAkgIGdvdG8gcmVhZF9jaGFyY2xhc3M7CisgCitAQCAtMzkwNCw4ICszOTA0LDcgQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorIAorIAkgIHdoaWxlIChpZHggPCBudW1iZXIpCisgCSAgICB7CistCSAgICAgIGludCByZXMgPSB3Y3NjbXAgKChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtpZHhdLT5mcm9tLAorLQkJCQkoY29uc3Qgd2NoYXJfdCAqKSBydW5wLT5mcm9tKTsKKysJICAgICAgaW50IHJlcyA9IHdjc2NtcF91aW50MzIgKHNvcnRlZFtpZHhdLT5mcm9tLCBydW5wLT5mcm9tKTsKKyAJICAgICAgaWYgKHJlcyA9PSAwKQorIAkJeworIAkJICByZXBsYWNlID0gMTsKK0BAIC0zOTQyLDExICszOTQxLDExIEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKKyAgICAgICBmb3IgKHNpemVfdCBjbnQgPSAwOyBjbnQgPCBudW1iZXI7ICsrY250KQorIAl7CisgCSAgc3RydWN0IHRyYW5zbGl0X3RvX3QgKnNydW5wOworLQkgIGZyb21fbGVuICs9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2NudF0tPmZyb20pICsgMTsKKysJICBmcm9tX2xlbiArPSB3Y3NsZW5fdWludDMyIChzb3J0ZWRbY250XS0+ZnJvbSkgKyAxOworIAkgIHNydW5wID0gc29ydGVkW2NudF0tPnRvOworIAkgIHdoaWxlIChzcnVucCAhPSBOVUxMKQorIAkgICAgeworLQkgICAgICB0b19sZW4gKz0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzcnVucC0+c3RyKSArIDE7CisrCSAgICAgIHRvX2xlbiArPSB3Y3NsZW5fdWludDMyIChzcnVucC0+c3RyKSArIDE7CisgCSAgICAgIHNydW5wID0gc3J1bnAtPm5leHQ7CisgCSAgICB9CisgCSAgLyogUGx1cyBvbmUgZm9yIHRoZSBleHRyYSBOVUwgY2hhcmFjdGVyIG1hcmtpbmcgdGhlIGVuZCBvZgorQEAgLTM5NzAsMTggKzM5NjksMTggQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorIAkgIGN0eXBlLT50cmFuc2xpdF9mcm9tX2lkeFtjbnRdID0gZnJvbV9sZW47CisgCSAgY3R5cGUtPnRyYW5zbGl0X3RvX2lkeFtjbnRdID0gdG9fbGVuOworIAorLQkgIGxlbiA9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2NudF0tPmZyb20pICsgMTsKKy0JICB3bWVtY3B5ICgod2NoYXJfdCAqKSAmY3R5cGUtPnRyYW5zbGl0X2Zyb21fdGJsW2Zyb21fbGVuXSwKKy0JCSAgIChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtjbnRdLT5mcm9tLCBsZW4pOworKwkgIGxlbiA9IHdjc2xlbl91aW50MzIgKHNvcnRlZFtjbnRdLT5mcm9tKSArIDE7CisrCSAgd21lbWNweV91aW50MzIgKCZjdHlwZS0+dHJhbnNsaXRfZnJvbV90YmxbZnJvbV9sZW5dLAorKwkJCSAgc29ydGVkW2NudF0tPmZyb20sIGxlbik7CisgCSAgZnJvbV9sZW4gKz0gbGVuOworIAorIAkgIGN0eXBlLT50cmFuc2xpdF90b19pZHhbY250XSA9IHRvX2xlbjsKKyAJICBzcnVucCA9IHNvcnRlZFtjbnRdLT50bzsKKyAJICB3aGlsZSAoc3J1bnAgIT0gTlVMTCkKKyAJICAgIHsKKy0JICAgICAgbGVuID0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzcnVucC0+c3RyKSArIDE7CistCSAgICAgIHdtZW1jcHkgKCh3Y2hhcl90ICopICZjdHlwZS0+dHJhbnNsaXRfdG9fdGJsW3RvX2xlbl0sCistCQkgICAgICAgKGNvbnN0IHdjaGFyX3QgKikgc3J1bnAtPnN0ciwgbGVuKTsKKysJICAgICAgbGVuID0gd2NzbGVuX3VpbnQzMiAoc3J1bnAtPnN0cikgKyAxOworKwkgICAgICB3bWVtY3B5X3VpbnQzMiAoJmN0eXBlLT50cmFuc2xpdF90b190YmxbdG9fbGVuXSwKKysJCQkgICAgICBzcnVucC0+c3RyLCBsZW4pOworIAkgICAgICB0b19sZW4gKz0gbGVuOworIAkgICAgICBzcnVucCA9IHNydW5wLT5uZXh0OworIAkgICAgfQorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jCitpbmRleCBmN2RiODczYWRiLi5mZWMzNzczYzlkIDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYworQEAgLTIyMCw4ICsyMjAsMTAgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKTsKKyAJfQorICAgICAgIGVsc2UKKyAJeworKwkgIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3dF9mbXRfYW1wbVtdCisrCSAgICA9IHsgJyUnLCdJJywnOicsJyUnLCdNJywnOicsJyUnLCdTJywnICcsJyUnLCdwJywwIH07CisgCSAgdGltZS0+dF9mbXRfYW1wbSA9ICIlSTolTTolUyAlcCI7CistCSAgdGltZS0+d3RfZm10X2FtcG0gPSAoY29uc3QgdWludDMyX3QgKikgTCIlSTolTTolUyAlcCI7CisrCSAgdGltZS0+d3RfZm10X2FtcG0gPSB3dF9mbXRfYW1wbTsKKyAJfQorICAgICB9CisgCitAQCAtMjMxLDcgKzIzMyw3IEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIik7CisgICAgICAgY29uc3QgaW50IGRheXNfcGVyX21vbnRoWzEyXSA9IHsgMzEsIDI5LCAzMSwgMzAsIDMxLCAzMCwKKyAJCQkJICAgICAgIDMxLCAzMSwgMzAsIDMxICwzMCwgMzEgfTsKKyAgICAgICBzaXplX3QgaWR4OworLSAgICAgIHdjaGFyX3QgKndzdHI7CisrICAgICAgdWludDMyX3QgKndzdHI7CisgCisgICAgICAgdGltZS0+ZXJhX2VudHJpZXMgPQorIAkoc3RydWN0IGVyYV9kYXRhICopIHhtYWxsb2MgKHRpbWUtPm51bV9lcmEKK0BAIC00NTcsMTggKzQ1OSwxOCBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpOworIAkgICAgfQorIAorIAkgIC8qIE5vdyBnZW5lcmF0ZSB0aGUgd2lkZSBjaGFyYWN0ZXIgbmFtZSBhbmQgZm9ybWF0LiAgKi8KKy0JICB3c3RyID0gd2NzY2hyICgod2NoYXJfdCAqKSB0aW1lLT53ZXJhW2lkeF0sIEwnOicpOy8qIGVuZCBkaXJlY3Rpb24gKi8KKy0JICB3c3RyID0gd3N0ciA/IHdjc2NociAod3N0ciArIDEsIEwnOicpIDogTlVMTDsJLyogZW5kIG9mZnNldCAqLworLQkgIHdzdHIgPSB3c3RyID8gd2NzY2hyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOwkvKiBlbmQgc3RhcnQgKi8KKy0JICB3c3RyID0gd3N0ciA/IHdjc2NociAod3N0ciArIDEsIEwnOicpIDogTlVMTDsJLyogZW5kIGVuZCAqLworKwkgIHdzdHIgPSB3Y3NjaHJfdWludDMyICh0aW1lLT53ZXJhW2lkeF0sIEwnOicpOyAvKiBlbmQgZGlyZWN0aW9uICovCisrCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOyAvKiBlbmQgb2Zmc2V0ICovCisrCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOyAvKiBlbmQgc3RhcnQgKi8KKysJICB3c3RyID0gd3N0ciA/IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7IC8qIGVuZCBlbmQgKi8KKyAJICBpZiAod3N0ciAhPSBOVUxMKQorIAkgICAgeworLQkgICAgICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLnduYW1lID0gKHVpbnQzMl90ICopIHdzdHIgKyAxOworLQkgICAgICB3c3RyID0gd2NzY2hyICh3c3RyICsgMSwgTCc6Jyk7CS8qIGVuZCBuYW1lICovCisrCSAgICAgIHRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud25hbWUgPSB3c3RyICsgMTsKKysJICAgICAgd3N0ciA9IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKTsgLyogZW5kIG5hbWUgKi8KKyAJICAgICAgaWYgKHdzdHIgIT0gTlVMTCkKKyAJCXsKKyAJCSAgKndzdHIgPSBMJ1wwJzsKKy0JCSAgdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53Zm9ybWF0ID0gKHVpbnQzMl90ICopIHdzdHIgKyAxOworKwkJICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLndmb3JtYXQgPSB3c3RyICsgMTsKKyAJCX0KKyAJICAgICAgZWxzZQorIAkJdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53bmFtZSA9CitAQCAtNTI3LDcgKzUyOSwxNiBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpOworICAgaWYgKHRpbWUtPmRhdGVfZm10ID09IE5VTEwpCisgICAgIHRpbWUtPmRhdGVfZm10ID0gIiVhICViICVlICVIOiVNOiVTICVaICVZIjsKKyAgIGlmICh0aW1lLT53ZGF0ZV9mbXQgPT0gTlVMTCkKKy0gICAgdGltZS0+d2RhdGVfZm10ID0gKGNvbnN0IHVpbnQzMl90ICopIEwiJWEgJWIgJWUgJUg6JU06JVMgJVogJVkiOworKyAgICB7CisrICAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHdkYXRlX2ZtdFtdID0KKysJeyAnJScsJ2EnLCcgJywKKysJICAnJScsJ2InLCcgJywKKysJICAnJScsJ2UnLCcgJywKKysJICAnJScsJ0gnLCc6JywnJScsJ00nLCc6JywnJScsJ1MnLCcgJywKKysJICAnJScsJ1onLCcgJywKKysJICAnJScsJ1knLDAgfTsKKysgICAgICB0aW1lLT53ZGF0ZV9mbXQgPSB3ZGF0ZV9mbXQ7CisrICAgIH0KKyB9CisgCisgCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYyBiL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMKK2luZGV4IDdlYmQ5MzM4MDEuLjU3NTM3NTA3NTYgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jCitAQCAtNTk1LDcgKzU5NSw3IEBAIGdldF9zdHJpbmcgKHN0cnVjdCBsaW5lcmVhZGVyICpsciwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKKyB7CisgICBpbnQgcmV0dXJuX3dpZGVzdHIgPSBsci0+cmV0dXJuX3dpZGVzdHI7CisgICBjaGFyICpidWY7CistICB3Y2hhcl90ICpidWYyID0gTlVMTDsKKysgIHVpbnQzMl90ICpidWYyID0gTlVMTDsKKyAgIHNpemVfdCBidWZhY3Q7CisgICBzaXplX3QgYnVmbWF4ID0gNTY7CisgCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jCitpbmRleCBkYmJiMDE0NWMwLi4wOTdhOGI2MTkzIDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMKK0BAIC0xMDksNiArMTA5LDcgQEAgdm9pZCAoKmFyZ3BfcHJvZ3JhbV92ZXJzaW9uX2hvb2spIChGSUxFICosIHN0cnVjdCBhcmdwX3N0YXRlICopID0gcHJpbnRfdmVyc2lvbjsKKyAjZGVmaW5lIE9QVF9OT19XQVJOIDQwMgorICNkZWZpbmUgT1BUX1dBUk4gNDAzCisgI2RlZmluZSBPUFRfTk9fSEFSRF9MSU5LUyA0MDQKKysjZGVmaW5lIE9QVF9VSU5UMzJfQUxJR04gNDA1CisgCisgLyogRGVmaW5pdGlvbnMgb2YgYXJndW1lbnRzIGZvciBhcmdwIGZ1bmN0aW9ucy4gICovCisgc3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiBvcHRpb25zW10gPQorQEAgLTE1Myw2ICsxNTQsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdGlvbnNbXSA9CisgICAgIE5fKCJHZW5lcmF0ZSBsaXR0bGUtZW5kaWFuIG91dHB1dCIpIH0sCisgICB7ICJiaWctZW5kaWFuIiwgT1BUX0JJR19FTkRJQU4sIE5VTEwsIDAsCisgICAgIE5fKCJHZW5lcmF0ZSBiaWctZW5kaWFuIG91dHB1dCIpIH0sCisrICB7ICJ1aW50MzItYWxpZ24iLCBPUFRfVUlOVDMyX0FMSUdOLCAiQUxJR05NRU5UIiwgMCwKKysgICAgTl8oIlNldCB0aGUgdGFyZ2V0J3MgdWludDMyX3QgYWxpZ25tZW50IGluIGJ5dGVzIChkZWZhdWx0IDQpIikgfSwKKyAgIHsgTlVMTCwgMCwgTlVMTCwgMCwgTlVMTCB9CisgfTsKKyAKK0BAIC0yNDIsMTIgKzI0NSwxNCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorICAgICAgY3R5cGUgbG9jYWxlLiAgKFAxMDAzLjIgNC4zNS41LjIpICAqLworICAgc2V0bG9jYWxlIChMQ19DVFlQRSwgIlBPU0lYIik7CisgCisrI2lmbmRlZiBOT19TWVNDT05GCisgICAvKiBMb29rIHdoZXRoZXIgdGhlIHN5c3RlbSByZWFsbHkgYWxsb3dzIGxvY2FsZSBkZWZpbml0aW9ucy4gIFBPU0lYCisgICAgICBkZWZpbmVzIGVycm9yIGNvZGUgMyBmb3IgdGhpcyBzaXR1YXRpb24gc28gSSB0aGluayBpdCBtdXN0IGJlCisgICAgICBhIGZhdGFsIGVycm9yIChzZWUgUDEwMDMuMiA0LjM1LjgpLiAgKi8KKyAgIGlmIChzeXNjb25mIChfU0NfMl9MT0NBTEVERUYpIDwgMCkKKyAgICAgcmVjb3JkX2Vycm9yICgzLCAwLCBfKCJcCisgRkFUQUw6IHN5c3RlbSBkb2VzIG5vdCBkZWZpbmUgYF9QT1NJWDJfTE9DQUxFREVGJyIpKTsKKysjZW5kaWYKKyAKKyAgIC8qIFByb2Nlc3MgY2hhcm1hcCBmaWxlLiAgKi8KKyAgIGNoYXJtYXAgPSBjaGFybWFwX3JlYWQgKGNoYXJtYXBfZmlsZSwgdmVyYm9zZSwgMSwgYmVfcXVpZXQsIDEpOworQEAgLTM5OSw2ICs0MDQsOSBAQCBwYXJzZV9vcHQgKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKQorICAgICAgIC8qIERvIG5vdCBoYXJkIGxpbmsgdG8gb3RoZXIgbG9jYWxlcy4gICovCisgICAgICAgaGFyZF9saW5rcyA9IGZhbHNlOworICAgICAgIGJyZWFrOworKyAgICBjYXNlIE9QVF9VSU5UMzJfQUxJR046CisrICAgICAgdWludDMyX2FsaWduX21hc2sgPSBzdHJ0b2wgKGFyZywgTlVMTCwgMCkgLSAxOworKyAgICAgIGJyZWFrOworICAgICBjYXNlICdjJzoKKyAgICAgICBmb3JjZV9vdXRwdXQgPSAxOworICAgICAgIGJyZWFrOworZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jCitpbmRleCBlYjJmNDYzNGRhLi5kMzg3MTQ3MzIzIDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYworQEAgLTU0NCw2ICs1NDQsOSBAQCBjb21wYXJlX2ZpbGVzIChjb25zdCBjaGFyICpmaWxlbmFtZTEsIGNvbnN0IGNoYXIgKmZpbGVuYW1lMiwgc2l6ZV90IHNpemUsCisgICAgbWFjaGluZSBydW5uaW5nIGxvY2FsZWRlZi4gICovCisgYm9vbCBzd2FwX2VuZGlhbm5lc3NfcDsKKyAKKysvKiBUaGUgdGFyZ2V0J3MgdmFsdWUgb2YgX19hbGlnbl9fKHVpbnQzMl90KSAtIDEuICAqLworK3Vuc2lnbmVkIGludCB1aW50MzJfYWxpZ25fbWFzayA9IDM7CisrCisgLyogV2hlbiBjYWxsZWQgb3V0c2lkZSBhIHN0YXJ0X2xvY2FsZV9zdHJ1Y3R1cmUvZW5kX2xvY2FsZV9zdHJ1Y3R1cmUKKyAgICBvciBzdGFydF9sb2NhbGVfcHJlbHVkZS9lbmRfbG9jYWxlX3ByZWx1ZGUgYmxvY2ssIHJlY29yZCB0aGF0IHRoZQorICAgIG5leHQgYnl0ZSBpbiBGSUxFJ3Mgb2JzdGFjayB3aWxsIGJlIHRoZSBmaXJzdCBieXRlIG9mIGEgbmV3IGVsZW1lbnQuCitAQCAtNjIxLDcgKzYyNCw3IEBAIGFkZF9sb2NhbGVfc3RyaW5nIChzdHJ1Y3QgbG9jYWxlX2ZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKnN0cmluZykKKyB2b2lkCisgYWRkX2xvY2FsZV93c3RyaW5nIChzdHJ1Y3QgbG9jYWxlX2ZpbGUgKmZpbGUsIGNvbnN0IHVpbnQzMl90ICpzdHJpbmcpCisgeworLSAgYWRkX2xvY2FsZV91aW50MzJfYXJyYXkgKGZpbGUsIHN0cmluZywgd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzdHJpbmcpICsgMSk7CisrICBhZGRfbG9jYWxlX3VpbnQzMl9hcnJheSAoZmlsZSwgc3RyaW5nLCB3Y3NsZW5fdWludDMyIChzdHJpbmcpICsgMSk7CisgfQorIAorIC8qIFJlY29yZCB0aGF0IEZJTEUncyBuZXh0IGVsZW1lbnQgaXMgdGhlIDMyLWJpdCBpbnRlZ2VyIFZBTFVFLiAgKi8KK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaAoraW5kZXggN2VhMTAwMzhiNC4uMDg4OGMwOTc2MiAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKK0BAIC03MSw2ICs3MSw4IEBAIGV4dGVybiB2b2lkIHdyaXRlX2FsbF9jYXRlZ29yaWVzIChzdHJ1Y3QgbG9jYWxlZGVmX3QgKmRlZmluaXRpb25zLAorIAorIGV4dGVybiBib29sIHN3YXBfZW5kaWFubmVzc19wOworIAorK2V4dGVybiB1bnNpZ25lZCBpbnQgdWludDMyX2FsaWduX21hc2s7CisrCisgLyogQ2hhbmdlIHRoZSBvdXRwdXQgdG8gYmUgYmlnLWVuZGlhbiBpZiBCSUdfRU5ESUFOIGlzIHRydWUgYW5kCisgICAgbGl0dGxlLWVuZGlhbiBvdGhlcndpc2UuICAqLworIHN0YXRpYyBpbmxpbmUgdm9pZAorQEAgLTg5LDcgKzkxLDggQEAgbWF5YmVfc3dhcF91aW50MzIgKHVpbnQzMl90IHZhbHVlKQorIH0KKyAKKyAvKiBMaWtld2lzZSwgYnV0IG11bmdlIGFuIGFycmF5IG9mIE4gdWludDMyX3RzIHN0YXJ0aW5nIGF0IEFSUkFZLiAgKi8KKy1zdGF0aWMgaW5saW5lIHZvaWQKKytzdGF0aWMgdm9pZAorK19fYXR0cmlidXRlX18gKCh1bnVzZWQpKQorIG1heWJlX3N3YXBfdWludDMyX2FycmF5ICh1aW50MzJfdCAqYXJyYXksIHNpemVfdCBuKQorIHsKKyAgIGlmIChzd2FwX2VuZGlhbm5lc3NfcCkKK0BAIC05OSw3ICsxMDIsOCBAQCBtYXliZV9zd2FwX3VpbnQzMl9hcnJheSAodWludDMyX3QgKmFycmF5LCBzaXplX3QgbikKKyAKKyAvKiBMaWtlIG1heWJlX3N3YXBfdWludDMyX2FycmF5LCBidXQgdGhlIGFycmF5IG9mIE4gZWxlbWVudHMgaXMgYXQKKyAgICB0aGUgZW5kIG9mIE9CU1RBQ0sncyBjdXJyZW50IG9iamVjdC4gICovCistc3RhdGljIGlubGluZSB2b2lkCisrc3RhdGljIHZvaWQKKytfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKKyBtYXliZV9zd2FwX3VpbnQzMl9vYnN0YWNrIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgc2l6ZV90IG4pCisgeworICAgbWF5YmVfc3dhcF91aW50MzJfYXJyYXkgKCh1aW50MzJfdCAqKSBvYnN0YWNrX25leHRfZnJlZSAob2JzdGFjaykgLSBuLCBuKTsKK0BAIC0yNzYsNCArMjgwLDU1IEBAIGV4dGVybiB2b2lkIGlkZW50aWZpY2F0aW9uX291dHB1dCAoc3RydWN0IGxvY2FsZWRlZl90ICpsb2NhbGUsCisgCQkJCSAgIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCisgCQkJCSAgIGNvbnN0IGNoYXIgKm91dHB1dF9wYXRoKTsKKyAKKytzdGF0aWMgc2l6ZV90IHdjc2xlbl91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzdHIpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKKytzdGF0aWMgdWludDMyX3QgKiB3bWVtY3B5X3VpbnQzMiAodWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Cisrc3RhdGljIHVpbnQzMl90ICogd2NzY2hyX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMsIHVpbnQzMl90IGNoKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Cisrc3RhdGljIGludCB3Y3NjbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOworK3N0YXRpYyBpbnQgd21lbWNtcF91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOworKworK3N0YXRpYyBzaXplX3QKKyt3Y3NsZW5fdWludDMyIChjb25zdCB1aW50MzJfdCAqc3RyKQorK3sKKysgIHNpemVfdCBsZW4gPSAwOworKyAgd2hpbGUgKHN0cltsZW5dICE9IDApCisrICAgIGxlbisrOworKyAgcmV0dXJuIGxlbjsKKyt9CisrCisrc3RhdGljICBpbnQKKyt3bWVtY21wX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKQorK3sKKysgIHdoaWxlIChuLS0gIT0gMCkKKysgICAgeworKyAgICAgIGludCBkaWZmID0gKnMxKysgLSAqczIrKzsKKysgICAgICBpZiAoZGlmZiAhPSAwKQorKwlyZXR1cm4gZGlmZjsKKysgICAgfQorKyAgcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyBpbnQKKyt3Y3NjbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMikKKyt7CisrICB3aGlsZSAoKnMxICE9IDAgJiYgKnMxID09ICpzMikKKysgICAgczErKywgczIrKzsKKysgIHJldHVybiAqczEgLSAqczI7CisrfQorKworK3N0YXRpYyB1aW50MzJfdCAqCisrd21lbWNweV91aW50MzIgKHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikKKyt7CisrICByZXR1cm4gbWVtY3B5IChzMSwgczIsIG4gKiBzaXplb2YgKHVpbnQzMl90KSk7CisrfQorKworK3N0YXRpYyB1aW50MzJfdCAqCisrd2NzY2hyX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMsIHVpbnQzMl90IGNoKQorK3sKKysgIGRvCisrICAgIGlmICgqcyA9PSBjaCkKKysgICAgICByZXR1cm4gKHVpbnQzMl90ICopIHM7CisrICB3aGlsZSAoKnMrKyAhPSAwKTsKKysgIHJldHVybiAwOworK30KKysKKyAjZW5kaWYgLyogbG9jZmlsZS5oICovCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3NldGxvY2FsZS5jIGIvbG9jYWxlL3NldGxvY2FsZS5jCitpbmRleCAwMzBmMTcyN2JkLi4wOTZkOGVkODk1IDEwMDY0NAorLS0tIGEvbG9jYWxlL3NldGxvY2FsZS5jCisrKysgYi9sb2NhbGUvc2V0bG9jYWxlLmMKK0BAIC02MywzNSArNjMsNiBAQCBzdGF0aWMgY2hhciAqY29uc3QgX25sX2N1cnJlbnRfdXNlZFtdID0KKyAKKyAjZW5kaWYKKyAKKy0KKy0vKiBEZWZpbmUgYW4gYXJyYXkgb2YgY2F0ZWdvcnkgbmFtZXMgKGFsc28gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzKS4gICovCistY29uc3Qgc3RydWN0IGNhdG5hbWVzdHJfdCBfbmxfY2F0ZWdvcnlfbmFtZXMgYXR0cmlidXRlX2hpZGRlbiA9CistICB7CistI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCistICAgIGNhdGVnb3J5X25hbWUsCistI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgorLSN1bmRlZiBERUZJTkVfQ0FURUdPUlkKKy0gIH07CistCistY29uc3QgdWludDhfdCBfbmxfY2F0ZWdvcnlfbmFtZV9pZHhzW19fTENfTEFTVF0gYXR0cmlidXRlX2hpZGRlbiA9CistICB7CistI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCistICAgIFtjYXRlZ29yeV0gPSBvZmZzZXRvZiAoc3RydWN0IGNhdG5hbWVzdHJfdCwgQ0FUTkFNRU1GIChfX0xJTkVfXykpLAorLSNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKKy0jdW5kZWYgREVGSU5FX0NBVEVHT1JZCistICB9OworLQorLS8qIEFuIGFycmF5IG9mIHRoZWlyIGxlbmd0aHMsIGZvciBjb252ZW5pZW5jZS4gICovCistY29uc3QgdWludDhfdCBfbmxfY2F0ZWdvcnlfbmFtZV9zaXplc1tdIGF0dHJpYnV0ZV9oaWRkZW4gPQorLSAgeworLSNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAorLSAgICBbY2F0ZWdvcnldID0gc2l6ZW9mIChjYXRlZ29yeV9uYW1lKSAtIDEsCistI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgorLSN1bmRlZglERUZJTkVfQ0FURUdPUlkKKy0gICAgW0xDX0FMTF0gPSBzaXplb2YgKCJMQ19BTEwiKSAtIDEKKy0gIH07CistCistCisgI2lmZGVmIE5MX0NVUlJFTlRfSU5ESVJFQ1QKKyAjIGRlZmluZSBXRUFLX1BPU1RMT0FEKHBvc3Rsb2FkKSB3ZWFrX2V4dGVybiAocG9zdGxvYWQpCisgI2Vsc2UKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNC1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1ZTQ2MGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gMDY3ZjcxYTM4MWNlNjYyNmVmMTE3OWJlM2RkOTBjNGVkMmFhNTJmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIwIEFwciAyMDE2IDIxOjExOjAwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIERlZmluZSBEVU1NWV9MT0NBTEVfVCBpZiBub3QgZGVmaW5lZAorCitUaGlzIGlzIGEgaGFjayB0byBmaXggYnVpbGRpbmcgdGhlIGxvY2FsZSBiaXRzIG9uIGFuIG9sZGVyCitDZW50T3MgNS5YIG1hY2hpbmUKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvdGhlcl0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxvY2FsZS9wcm9ncmFtcy9jb25maWcuaCB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oIGIvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oCitpbmRleCBkNzZkOWY3ZThiLi45MmI1NmQ3ZGYzIDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmgKK0BAIC0xOSw2ICsxOSw5IEBACisgI2lmbmRlZiBfTERfQ09ORklHX0gKKyAjZGVmaW5lIF9MRF9DT05GSUdfSAkxCisgCisrI2lmbmRlZiBEVU1NWV9MT0NBTEVfVAorKyNkZWZpbmUgRFVNTVlfTE9DQUxFX1QKKysjZW5kaWYKKyAvKiBVc2UgdGhlIGludGVybmFsIHRleHRkb21haW4gdXNlZCBmb3IgbGliYyBtZXNzYWdlcy4gICovCisgI2RlZmluZSBQQUNLQUdFIF9saWJjX2ludGxfZG9tYWlubmFtZQorICNpZm5kZWYgVkVSU0lPTgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI0LWxvY2FsZWRlZi1hZGQtdG8tYXJjaGl2ZS11c2VzLWEtaGFyZC1jb2RlZC1sb2NhbGUtcGEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtbG9jYWxlZGVmLWFkZC10by1hcmNoaXZlLXVzZXMtYS1oYXJkLWNvZGVkLWxvY2FsZS1wYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY4ZTRmNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtbG9jYWxlZGVmLWFkZC10by1hcmNoaXZlLXVzZXMtYS1oYXJkLWNvZGVkLWxvY2FsZS1wYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLUZyb20gYzEzZTE4YWRiNjM0YTZmZDU5MTI5MTUwYWI3Zjk0NjhmNjRkYzkzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDMgQXVnIDIwMTggMDk6NDI6MDYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyNC8yOF0gbG9jYWxlZGVmIC0tYWRkLXRvLWFyY2hpdmUgdXNlcyBhIGhhcmQtY29kZWQgbG9jYWxlCi0gcGF0aAotCi1pdCBkb2Vzbid0IGV4aXN0IGluIG5vcm1hbCB1c2UsIGFuZCB0aGVyZSdzIG5vIHdheSB0byBwYXNzIGFuCi1hbHRlcm5hdGl2ZSBmaWxlbmFtZS4KLQotQWRkIGEgZmFsbGJhY2sgb2YgJExPQ0FMRUFSQ0hJVkUgZnJvbSB0aGUgZW52aXJvbm1lbnQsIGFuZCBhbGxvdwotY3JlYXRpb24gb2YgbmV3IGxvY2FsZSBhcmNoaXZlcyB0aGF0IGFyZSBub3QgdGhlIHN5c3RlbSBhcmNoaXZlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgKE9FLXNwZWNpZmljKQotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxvY2FsZS9wcm9ncmFtcy9sb2NhcmNoaXZlLmMgfCAzNSArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhcmNoaXZlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jYXJjaGl2ZS5jCi1pbmRleCBlNjMxMGIxOGJlLi5mNTRhNzZlYWRlIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2FyY2hpdmUuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FyY2hpdmUuYwotQEAgLTM0MCwxMiArMzQwLDI0IEBAIGVubGFyZ2VfYXJjaGl2ZSAoc3RydWN0IGxvY2FyaGFuZGxlICphaCwgY29uc3Qgc3RydWN0IGxvY2FyaGVhZCAqaGVhZCkKLSAgIHN0cnVjdCBuYW1laGFzaGVudCAqb2xkbmFtZWhhc2h0YWI7Ci0gICBzdHJ1Y3QgbG9jYXJoYW5kbGUgbmV3X2FoOwotICAgc2l6ZV90IHByZWZpeF9sZW4gPSBvdXRwdXRfcHJlZml4ID8gc3RybGVuIChvdXRwdXRfcHJlZml4KSA6IDA7Ci0tICBjaGFyIGFyY2hpdmVmbmFtZVtwcmVmaXhfbGVuICsgc2l6ZW9mIChBUkNISVZFX05BTUUpXTsKLS0gIGNoYXIgZm5hbWVbcHJlZml4X2xlbiArIHNpemVvZiAoQVJDSElWRV9OQU1FKSArIHNpemVvZiAoIi5YWFhYWFgiKSAtIDFdOwotKyAgY2hhciAqYXJjaGl2ZWZuYW1lOwotKyAgY2hhciAqZm5hbWU7Ci0rICBjaGFyICplbnZhcmNoaXZlID0gZ2V0ZW52KCJMT0NBTEVBUkNISVZFIik7Ci0gCi0tICBpZiAob3V0cHV0X3ByZWZpeCkKLS0gICAgbWVtY3B5IChhcmNoaXZlZm5hbWUsIG91dHB1dF9wcmVmaXgsIHByZWZpeF9sZW4pOwotLSAgc3RyY3B5IChhcmNoaXZlZm5hbWUgKyBwcmVmaXhfbGVuLCBBUkNISVZFX05BTUUpOwotKyAgaWYgKGVudmFyY2hpdmUgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIGFyY2hpdmVmbmFtZSA9IHhtYWxsb2Moc3RybGVuKGVudmFyY2hpdmUpICsgMSk7Ci0rICAgICAgZm5hbWUgPSB4bWFsbG9jKHN0cmxlbihlbnZhcmNoaXZlKSArIHNpemVvZiAoIi5YWFhYWFgiKSk7Ci0rICAgICAgc3RyY3B5IChhcmNoaXZlZm5hbWUsIGVudmFyY2hpdmUpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBhcmNoaXZlZm5hbWUgPSB4bWFsbG9jKHByZWZpeF9sZW4gKyBzaXplb2YgKEFSQ0hJVkVfTkFNRSkpOwotKyAgICAgIGZuYW1lID0geG1hbGxvYyhwcmVmaXhfbGVuICsgc2l6ZW9mIChBUkNISVZFX05BTUUpICsgc2l6ZW9mICgiLlhYWFhYWCIpIC0gMSk7Ci0rICAgICAgaWYgKG91dHB1dF9wcmVmaXgpCi0rICAgICAgICBtZW1jcHkgKGFyY2hpdmVmbmFtZSwgb3V0cHV0X3ByZWZpeCwgcHJlZml4X2xlbik7Ci0rICAgICAgc3RyY3B5IChhcmNoaXZlZm5hbWUgKyBwcmVmaXhfbGVuLCBBUkNISVZFX05BTUUpOwotKyAgICB9Ci0gICBzdHJjcHkgKHN0cGNweSAoZm5hbWUsIGFyY2hpdmVmbmFtZSksICIuWFhYWFhYIik7Ci0gCi0gICAvKiBOb3QgYWxsIG9mIHRoZSBvbGQgZmlsZSBoYXMgdG8gYmUgbWFwcGVkLiAgQ2hhbmdlIHRoaXMgbm93IHRoaXMKLUBAIC01NjksMTAgKzU4MSwxMyBAQCBvcGVuX2FyY2hpdmUgKHN0cnVjdCBsb2NhcmhhbmRsZSAqYWgsIGJvb2wgcmVhZG9ubHkpCi0gICAvKiBJZiBhaCBoYXMgYSBub24tTlVMTCBmbmFtZSBvcGVuIHRoYXQgb3RoZXJ3aXNlIG9wZW4gdGhlIGRlZmF1bHQuICAqLwotICAgaWYgKGFyY2hpdmVmbmFtZSA9PSBOVUxMKQotICAgICB7Ci0tICAgICAgYXJjaGl2ZWZuYW1lID0gZGVmYXVsdF9mbmFtZTsKLS0gICAgICBpZiAob3V0cHV0X3ByZWZpeCkKLS0gICAgICAgIG1lbWNweSAoZGVmYXVsdF9mbmFtZSwgb3V0cHV0X3ByZWZpeCwgcHJlZml4X2xlbik7Ci0tICAgICAgc3RyY3B5IChkZWZhdWx0X2ZuYW1lICsgcHJlZml4X2xlbiwgQVJDSElWRV9OQU1FKTsKLSsgICAgICBhcmNoaXZlZm5hbWUgPSBnZXRlbnYoIkxPQ0FMRUFSQ0hJVkUiKTsKLSsgICAgICBpZiAoYXJjaGl2ZWZuYW1lID09IE5VTEwpIHsKLSsgICAgICAgICAgICAgIGFyY2hpdmVmbmFtZSA9IGRlZmF1bHRfZm5hbWU7Ci0rICAgICAgICAgICAgICBpZiAob3V0cHV0X3ByZWZpeCkKLSsgICAgICAgICAgICAgICAgbWVtY3B5IChkZWZhdWx0X2ZuYW1lLCBvdXRwdXRfcHJlZml4LCBwcmVmaXhfbGVuKTsKLSsgICAgICAgICAgICAgIHN0cmNweSAoZGVmYXVsdF9mbmFtZSArIHByZWZpeF9sZW4sIEFSQ0hJVkVfTkFNRSk7Ci0rICAgICAgfQotICAgICB9Ci0gCi0gICB3aGlsZSAoMSkKLUBAIC01ODUsNyArNjAwLDcgQEAgb3Blbl9hcmNoaXZlIChzdHJ1Y3QgbG9jYXJoYW5kbGUgKmFoLCBib29sIHJlYWRvbmx5KQotIAkgICAgIHRoZSBkZWZhdWx0IGxvY2FsZSBhcmNoaXZlIHdlIGlnbm9yZSB0aGUgZmFpbHVyZSBhbmQKLSAJICAgICBsaXN0IGFuIGVtcHR5IGFyY2hpdmUsIG90aGVyd2lzZSB3ZSBwcmludCBhbiBlcnJvcgotIAkgICAgIGFuZCBleGl0LiAgKi8KLS0JICBpZiAoZXJybm8gPT0gRU5PRU5UICYmIGFyY2hpdmVmbmFtZSA9PSBkZWZhdWx0X2ZuYW1lKQotKwkgIGlmIChlcnJubyA9PSBFTk9FTlQpCi0gCSAgICB7Ci0gCSAgICAgIGlmIChyZWFkb25seSkKLSAJCXsKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNS1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2YTllYjIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1Gcm9tIDdjOWViZTk2NmJiOTdkZDE0ZGU1NzE5OTA1YjYxMzExMjExYWUzYzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDE4IEF1ZyAyMDE2IDE0OjA3OjU4IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMjUvMjhdIGVsZi9kbC1kZXBzLmM6IE1ha2UgX2RsX2J1aWxkX2xvY2FsX3Njb3BlIGJyZWFkdGggZmlyc3QKLQotQWNjb3JkaW5nIHRvIHRoZSBFTEYgc3BlY2lmaWNhdGlvbjoKLQotV2hlbiByZXNvbHZpbmcgc3ltYm9saWMgcmVmZXJlbmNlcywgdGhlIGR5bmFtaWMgbGlua2VyIGV4YW1pbmVzIHRoZSBzeW1ib2wKLXRhYmxlcyB3aXRoIGEgYnJlYWR0aC1maXJzdCBzZWFyY2guCi0KLVRoaXMgZnVuY3Rpb24gd2FzIHVzaW5nIGEgZGVwdGggZmlyc3Qgc2VhcmNoLiAgQnkgZG9pbmcgc28gdGhlIGNvbmZsaWN0Ci1yZXNvbHV0aW9uIHJlcG9ydGVkIHRvIHRoZSBwcmVsaW5rZXIgKHdoZW4gTERfVFJBQ0VfUFJFTElOS0lORz0xIGlzIHNldCkKLXdhcyBpbmNvcnJlY3QuICBUaGlzIGNhdXNlZCBwcm9ibGVtcyB3aGVuIHRoZWlyIHdlcmUgdmFyaW91cyBjaXJjdWxhcgotZGVwZW5kZW5jaWVzIGJldHdlZW4gbGlicmFyaWVzLiAgVGhlIHByb2JsZW0gdXN1YWxseSBtYW5pZmVzdGVkIGl0c2VsZiBieQotdGhlIHdyb25nIElGVU5DIGJlaW5nIGV4ZWN1dGVkLgotCi1bQlojIDIwNDg4XQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbGliYy1hbHBoYV0KLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZWxmL2RsLWRlcHMuYyB8IDE0ICsrKysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9lbGYvZGwtZGVwcy5jIGIvZWxmL2RsLWRlcHMuYwotaW5kZXggZTEyYzM1MzE1OC4uOTIzNGRhYWMwNSAxMDA2NDQKLS0tLSBhL2VsZi9kbC1kZXBzLmMKLSsrKyBiL2VsZi9kbC1kZXBzLmMKLUBAIC03MywxMyArNzMsMTkgQEAgX2RsX2J1aWxkX2xvY2FsX3Njb3BlIChzdHJ1Y3QgbGlua19tYXAgKipsaXN0LCBzdHJ1Y3QgbGlua19tYXAgKm1hcCkKLSB7Ci0gICBzdHJ1Y3QgbGlua19tYXAgKipwID0gbGlzdDsKLSAgIHN0cnVjdCBsaW5rX21hcCAqKnE7Ci0rICBzdHJ1Y3QgbGlua19tYXAgKipyOwotIAotICAgKnArKyA9IG1hcDsKLSAgIG1hcC0+bF9yZXNlcnZlZCA9IDE7Ci0tICBpZiAobWFwLT5sX2luaXRmaW5pKQotLSAgICBmb3IgKHEgPSBtYXAtPmxfaW5pdGZpbmkgKyAxOyAqcTsgKytxKQotLSAgICAgIGlmICghICgqcSktPmxfcmVzZXJ2ZWQpCi0tCXAgKz0gX2RsX2J1aWxkX2xvY2FsX3Njb3BlIChwLCAqcSk7Ci0rCi0rICBmb3IgKHIgPSBsaXN0OyByIDwgcDsgKytyKQotKyAgICBpZiAoKCpyKS0+bF9pbml0ZmluaSkKLSsgICAgICBmb3IgKHEgPSAoKnIpLT5sX2luaXRmaW5pICsgMTsgKnE7ICsrcSkKLSsJaWYgKCEgKCpxKS0+bF9yZXNlcnZlZCkKLSsJICB7Ci0rCSAgICAqcCsrID0gKnE7Ci0rCSAgICAoKnEpLT5sX3Jlc2VydmVkID0gMTsKLSsJICB9Ci0gICByZXR1cm4gcCAtIGxpc3Q7Ci0gfQotIAotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWxvY2FsZWRlZi1hZGQtdG8tYXJjaGl2ZS11c2VzLWEtaGFyZC1jb2RlZC1sb2NhbGUtcGEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjUtbG9jYWxlZGVmLWFkZC10by1hcmNoaXZlLXVzZXMtYS1oYXJkLWNvZGVkLWxvY2FsZS1wYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDNmNjVkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWxvY2FsZWRlZi1hZGQtdG8tYXJjaGl2ZS11c2VzLWEtaGFyZC1jb2RlZC1sb2NhbGUtcGEucGF0Y2gKQEAgLTAsMCArMSw4MCBAQAorRnJvbSA4ZjRiMGJhYzg1ZDE0YjE4NGUwODg0OGIwMmRlM2YzMDc3NWYwNWIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMyBBdWcgMjAxOCAwOTo0MjowNiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBsb2NhbGVkZWYgLS1hZGQtdG8tYXJjaGl2ZSB1c2VzIGEgaGFyZC1jb2RlZCBsb2NhbGUgcGF0aAorCitpdCBkb2Vzbid0IGV4aXN0IGluIG5vcm1hbCB1c2UsIGFuZCB0aGVyZSdzIG5vIHdheSB0byBwYXNzIGFuCithbHRlcm5hdGl2ZSBmaWxlbmFtZS4KKworQWRkIGEgZmFsbGJhY2sgb2YgJExPQ0FMRUFSQ0hJVkUgZnJvbSB0aGUgZW52aXJvbm1lbnQsIGFuZCBhbGxvdworY3JlYXRpb24gb2YgbmV3IGxvY2FsZSBhcmNoaXZlcyB0aGF0IGFyZSBub3QgdGhlIHN5c3RlbSBhcmNoaXZlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgKE9FLXNwZWNpZmljKQorCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxvY2FsZS9wcm9ncmFtcy9sb2NhcmNoaXZlLmMgfCAzNSArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhcmNoaXZlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jYXJjaGl2ZS5jCitpbmRleCBkY2NhZjA0ZTNiLi5hZTBiN2ZlMTU1IDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2FyY2hpdmUuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FyY2hpdmUuYworQEAgLTM0MCwxMiArMzQwLDI0IEBAIGVubGFyZ2VfYXJjaGl2ZSAoc3RydWN0IGxvY2FyaGFuZGxlICphaCwgY29uc3Qgc3RydWN0IGxvY2FyaGVhZCAqaGVhZCkKKyAgIHN0cnVjdCBuYW1laGFzaGVudCAqb2xkbmFtZWhhc2h0YWI7CisgICBzdHJ1Y3QgbG9jYXJoYW5kbGUgbmV3X2FoOworICAgc2l6ZV90IHByZWZpeF9sZW4gPSBvdXRwdXRfcHJlZml4ID8gc3RybGVuIChvdXRwdXRfcHJlZml4KSA6IDA7CistICBjaGFyIGFyY2hpdmVmbmFtZVtwcmVmaXhfbGVuICsgc2l6ZW9mIChBUkNISVZFX05BTUUpXTsKKy0gIGNoYXIgZm5hbWVbcHJlZml4X2xlbiArIHNpemVvZiAoQVJDSElWRV9OQU1FKSArIHNpemVvZiAoIi5YWFhYWFgiKSAtIDFdOworKyAgY2hhciAqYXJjaGl2ZWZuYW1lOworKyAgY2hhciAqZm5hbWU7CisrICBjaGFyICplbnZhcmNoaXZlID0gZ2V0ZW52KCJMT0NBTEVBUkNISVZFIik7CisgCistICBpZiAob3V0cHV0X3ByZWZpeCkKKy0gICAgbWVtY3B5IChhcmNoaXZlZm5hbWUsIG91dHB1dF9wcmVmaXgsIHByZWZpeF9sZW4pOworLSAgc3RyY3B5IChhcmNoaXZlZm5hbWUgKyBwcmVmaXhfbGVuLCBBUkNISVZFX05BTUUpOworKyAgaWYgKGVudmFyY2hpdmUgIT0gTlVMTCkKKysgICAgeworKyAgICAgIGFyY2hpdmVmbmFtZSA9IHhtYWxsb2Moc3RybGVuKGVudmFyY2hpdmUpICsgMSk7CisrICAgICAgZm5hbWUgPSB4bWFsbG9jKHN0cmxlbihlbnZhcmNoaXZlKSArIHNpemVvZiAoIi5YWFhYWFgiKSk7CisrICAgICAgc3RyY3B5IChhcmNoaXZlZm5hbWUsIGVudmFyY2hpdmUpOworKyAgICB9CisrICBlbHNlCisrICAgIHsKKysgICAgICBhcmNoaXZlZm5hbWUgPSB4bWFsbG9jKHByZWZpeF9sZW4gKyBzaXplb2YgKEFSQ0hJVkVfTkFNRSkpOworKyAgICAgIGZuYW1lID0geG1hbGxvYyhwcmVmaXhfbGVuICsgc2l6ZW9mIChBUkNISVZFX05BTUUpICsgc2l6ZW9mICgiLlhYWFhYWCIpIC0gMSk7CisrICAgICAgaWYgKG91dHB1dF9wcmVmaXgpCisrICAgICAgICBtZW1jcHkgKGFyY2hpdmVmbmFtZSwgb3V0cHV0X3ByZWZpeCwgcHJlZml4X2xlbik7CisrICAgICAgc3RyY3B5IChhcmNoaXZlZm5hbWUgKyBwcmVmaXhfbGVuLCBBUkNISVZFX05BTUUpOworKyAgICB9CisgICBzdHJjcHkgKHN0cGNweSAoZm5hbWUsIGFyY2hpdmVmbmFtZSksICIuWFhYWFhYIik7CisgCisgICAvKiBOb3QgYWxsIG9mIHRoZSBvbGQgZmlsZSBoYXMgdG8gYmUgbWFwcGVkLiAgQ2hhbmdlIHRoaXMgbm93IHRoaXMKK0BAIC01NjksMTAgKzU4MSwxMyBAQCBvcGVuX2FyY2hpdmUgKHN0cnVjdCBsb2NhcmhhbmRsZSAqYWgsIGJvb2wgcmVhZG9ubHkpCisgICAvKiBJZiBhaCBoYXMgYSBub24tTlVMTCBmbmFtZSBvcGVuIHRoYXQgb3RoZXJ3aXNlIG9wZW4gdGhlIGRlZmF1bHQuICAqLworICAgaWYgKGFyY2hpdmVmbmFtZSA9PSBOVUxMKQorICAgICB7CistICAgICAgYXJjaGl2ZWZuYW1lID0gZGVmYXVsdF9mbmFtZTsKKy0gICAgICBpZiAob3V0cHV0X3ByZWZpeCkKKy0gICAgICAgIG1lbWNweSAoZGVmYXVsdF9mbmFtZSwgb3V0cHV0X3ByZWZpeCwgcHJlZml4X2xlbik7CistICAgICAgc3RyY3B5IChkZWZhdWx0X2ZuYW1lICsgcHJlZml4X2xlbiwgQVJDSElWRV9OQU1FKTsKKysgICAgICBhcmNoaXZlZm5hbWUgPSBnZXRlbnYoIkxPQ0FMRUFSQ0hJVkUiKTsKKysgICAgICBpZiAoYXJjaGl2ZWZuYW1lID09IE5VTEwpIHsKKysgICAgICAgICAgICAgIGFyY2hpdmVmbmFtZSA9IGRlZmF1bHRfZm5hbWU7CisrICAgICAgICAgICAgICBpZiAob3V0cHV0X3ByZWZpeCkKKysgICAgICAgICAgICAgICAgbWVtY3B5IChkZWZhdWx0X2ZuYW1lLCBvdXRwdXRfcHJlZml4LCBwcmVmaXhfbGVuKTsKKysgICAgICAgICAgICAgIHN0cmNweSAoZGVmYXVsdF9mbmFtZSArIHByZWZpeF9sZW4sIEFSQ0hJVkVfTkFNRSk7CisrICAgICAgfQorICAgICB9CisgCisgICB3aGlsZSAoMSkKK0BAIC01ODUsNyArNjAwLDcgQEAgb3Blbl9hcmNoaXZlIChzdHJ1Y3QgbG9jYXJoYW5kbGUgKmFoLCBib29sIHJlYWRvbmx5KQorIAkgICAgIHRoZSBkZWZhdWx0IGxvY2FsZSBhcmNoaXZlIHdlIGlnbm9yZSB0aGUgZmFpbHVyZSBhbmQKKyAJICAgICBsaXN0IGFuIGVtcHR5IGFyY2hpdmUsIG90aGVyd2lzZSB3ZSBwcmludCBhbiBlcnJvcgorIAkgICAgIGFuZCBleGl0LiAgKi8KKy0JICBpZiAoZXJybm8gPT0gRU5PRU5UICYmIGFyY2hpdmVmbmFtZSA9PSBkZWZhdWx0X2ZuYW1lKQorKwkgIGlmIChlcnJubyA9PSBFTk9FTlQpCisgCSAgICB7CisgCSAgICAgIGlmIChyZWFkb25seSkKKyAJCXsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY2ZWU0MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gMWRhZDc0NmNlOTM5MjhhNTdiMmZlNjE4Yzc0NzIyZjcxMDc1MTgyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTggQXVnIDIwMTYgMTQ6MDc6NTggLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gZWxmL2RsLWRlcHMuYzogTWFrZSBfZGxfYnVpbGRfbG9jYWxfc2NvcGUgYnJlYWR0aCBmaXJzdAorCitBY2NvcmRpbmcgdG8gdGhlIEVMRiBzcGVjaWZpY2F0aW9uOgorCitXaGVuIHJlc29sdmluZyBzeW1ib2xpYyByZWZlcmVuY2VzLCB0aGUgZHluYW1pYyBsaW5rZXIgZXhhbWluZXMgdGhlIHN5bWJvbAordGFibGVzIHdpdGggYSBicmVhZHRoLWZpcnN0IHNlYXJjaC4KKworVGhpcyBmdW5jdGlvbiB3YXMgdXNpbmcgYSBkZXB0aCBmaXJzdCBzZWFyY2guICBCeSBkb2luZyBzbyB0aGUgY29uZmxpY3QKK3Jlc29sdXRpb24gcmVwb3J0ZWQgdG8gdGhlIHByZWxpbmtlciAod2hlbiBMRF9UUkFDRV9QUkVMSU5LSU5HPTEgaXMgc2V0KQord2FzIGluY29ycmVjdC4gIFRoaXMgY2F1c2VkIHByb2JsZW1zIHdoZW4gdGhlaXIgd2VyZSB2YXJpb3VzIGNpcmN1bGFyCitkZXBlbmRlbmNpZXMgYmV0d2VlbiBsaWJyYXJpZXMuICBUaGUgcHJvYmxlbSB1c3VhbGx5IG1hbmlmZXN0ZWQgaXRzZWxmIGJ5Cit0aGUgd3JvbmcgSUZVTkMgYmVpbmcgZXhlY3V0ZWQuCisKK1tCWiMgMjA0ODhdCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtsaWJjLWFscGhhXQorCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CistLS0KKyBlbGYvZGwtZGVwcy5jIHwgMTQgKysrKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2VsZi9kbC1kZXBzLmMgYi9lbGYvZGwtZGVwcy5jCitpbmRleCA1MTAzYThhMTExLi41NGNkODBhYWZmIDEwMDY0NAorLS0tIGEvZWxmL2RsLWRlcHMuYworKysrIGIvZWxmL2RsLWRlcHMuYworQEAgLTczLDEzICs3MywxOSBAQCBfZGxfYnVpbGRfbG9jYWxfc2NvcGUgKHN0cnVjdCBsaW5rX21hcCAqKmxpc3QsIHN0cnVjdCBsaW5rX21hcCAqbWFwKQorIHsKKyAgIHN0cnVjdCBsaW5rX21hcCAqKnAgPSBsaXN0OworICAgc3RydWN0IGxpbmtfbWFwICoqcTsKKysgIHN0cnVjdCBsaW5rX21hcCAqKnI7CisgCisgICAqcCsrID0gbWFwOworICAgbWFwLT5sX3Jlc2VydmVkID0gMTsKKy0gIGlmIChtYXAtPmxfaW5pdGZpbmkpCistICAgIGZvciAocSA9IG1hcC0+bF9pbml0ZmluaSArIDE7ICpxOyArK3EpCistICAgICAgaWYgKCEgKCpxKS0+bF9yZXNlcnZlZCkKKy0JcCArPSBfZGxfYnVpbGRfbG9jYWxfc2NvcGUgKHAsICpxKTsKKysKKysgIGZvciAociA9IGxpc3Q7IHIgPCBwOyArK3IpCisrICAgIGlmICgoKnIpLT5sX2luaXRmaW5pKQorKyAgICAgIGZvciAocSA9ICgqciktPmxfaW5pdGZpbmkgKyAxOyAqcTsgKytxKQorKwlpZiAoISAoKnEpLT5sX3Jlc2VydmVkKQorKwkgIHsKKysJICAgICpwKysgPSAqcTsKKysJICAgICgqcSktPmxfcmVzZXJ2ZWQgPSAxOworKwkgIH0KKyAgIHJldHVybiBwIC0gbGlzdDsKKyB9CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjYtaW50bC1FbWl0LW5vLWxpbmVzLWluLWJpc29uLWdlbmVyYXRlZC1maWxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1pbnRsLUVtaXQtbm8tbGluZXMtaW4tYmlzb24tZ2VuZXJhdGVkLWZpbGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTg5ZTExLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1pbnRsLUVtaXQtbm8tbGluZXMtaW4tYmlzb24tZ2VuZXJhdGVkLWZpbGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSBhYTVjNzU4ZmJiN2RiYjAyNmRmMzNmYzZiZGMwNTU0ODU0N2JkYjE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMyBBdWcgMjAxOCAwOTo0NDowMCAtMDcwMAotU3ViamVjdDogW1BBVENIIDI2LzI4XSBpbnRsOiBFbWl0IG5vIGxpbmVzIGluIGJpc29uIGdlbmVyYXRlZCBmaWxlcwotCi1JbXByb3ZlIHJlcHJvZHVjaWJpbGl0eToKLURvIG5vdCBwdXQgYW55ICNsaW5lIHByZXByb2Nlc3NvciBjb21tYW5kcyBpbiBiaXNvbiBnZW5lcmF0ZWQgZmlsZXMuCi1UaGVzZSBsaW5lcyBjb250YWluIGFic29sdXRlIHBhdGhzIGNvbnRhaW5pbmcgZmlsZSBsb2NhdGlvbnMgb24KLXRoZSBob3N0IGJ1aWxkIG1hY2hpbmUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGludGwvTWFrZWZpbGUgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9pbnRsL01ha2VmaWxlIGIvaW50bC9NYWtlZmlsZQotaW5kZXggOWVlYThkNTdlMy4uNjI3ZGNlNGNmMSAxMDA2NDQKLS0tLSBhL2ludGwvTWFrZWZpbGUKLSsrKyBiL2ludGwvTWFrZWZpbGUKLUBAIC0xNTUsNyArMTU1LDcgQEAgJChvYmpwZngpdHN0LWdldHRleHQ2Lm91dDogJChvYmpwZngpdHN0LWdldHRleHQub3V0Ci0gCi0gQ1BQRkxBR1MgKz0gLUQnTE9DQUxFRElSPSIkKGxvY2FsZWRpcikiJyBcCi0gCSAgICAtRCdMT0NBTEVfQUxJQVNfUEFUSD0iJChsb2NhbGVkaXIpIicKLS1CSVNPTkZMQUdTID0gLS15YWNjIC0tbmFtZS1wcmVmaXg9X19nZXR0ZXh0IC0tb3V0cHV0Ci0rQklTT05GTEFHUyA9IC0teWFjYyAtLW5vLWxpbmVzIC0tbmFtZS1wcmVmaXg9X19nZXR0ZXh0IC0tb3V0cHV0Ci0gCi0gJChpbnN0X2xvY2FsZWRpcikvbG9jYWxlLmFsaWFzOiBsb2NhbGUuYWxpYXMgJCgrZm9yY2UpCi0gCSQoZG8taW5zdGFsbCkKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNy1pbmplY3QtZmlsZS1hc3NlbWJseS1kaXJlY3RpdmVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LWluamVjdC1maWxlLWFzc2VtYmx5LWRpcmVjdGl2ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjMjA1YTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LWluamVjdC1maWxlLWFzc2VtYmx5LWRpcmVjdGl2ZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMDQgKzAsMCBAQAotRnJvbSBmZWNkOTgwNDBhMmFlMWJjNTk0M2E0MGExNjIzZDc2YTY5NmUwNzg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMjkgTm92IDIwMTggMTc6Mjk6MzUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAyNy8yOF0gaW5qZWN0IGZpbGUgYXNzZW1ibHkgZGlyZWN0aXZlcwotCi1DdXJyZW50bHksIG5vbi1JQSBidWlsZHMgYXJlIG5vdCByZXByb2R1Y2liaWxlIHNpbmNlIGJ1aWxkIHBhdGhzIGFyZQotYmVpbmcgaW5qZWN0ZWQgaW50byB0aGUgZGVidWcgc3ltYm9scy4gVGhlc2UgYXJlIGNvbWluZyBmcm9tIHRoZSB1c2Ugb2YKLS5TIGFzc2VtYmxlciBmaWxlcyBkdXJpbmcgdGhlIGdsaWJjIGJ1aWxkLiBObyBTVFRfRklMRSBzZWN0aW9uIGlzIGFkZGVkCi1kdXJpbmcgdGhlIGFzc2VtYmx5IGJ1dCB3aGVuIGxpbmtpbmcsIGxkIGRlY2lkZXMgdG8gYWRkIG9uZSB0byBhaWQKLWRlYnVnZ2luZyBhbmQgZW5zdXJlIHJlZmVyZW5jZXMgYmV0d2VlbiB0aGUgZGlmZmVyZW50IG9iamVjdCBmaWxlcyBpdHMKLWxpbmtpbmcgcmVtYWluIGNsZWFyLgotCi1XZSBjYW4gYXZvaWQgdGhpcyBieSBpbmplY3RpbmcgYSBmaWxlIGhlYWRlciBpbnRvIHRoZSBhc3NlbWJsZXIgZmlsZXMKLWFoZWFkIG9mIHRpbWUsIGNob29zaW5nIGEgZmlsZW5hbWUgd2hpY2ggZG9lcyBub3QgY29udGFpbiBidWlsZCBzeXN0ZW0KLXBhdGhzLgotCi1UaGlzIGlzIGEgYml0IG9mIGEgd29ya2Fyb3VuZC9oYWNrIGJ1dCBkb2VzIHNpZ25pZmljYW50bHkgcmVkdWNlIHRoZQotYnVpbGQgc3lzdGVtIHJlZmVyZW5jZXMgaW4gdGFyZ2V0IGJpbmFyaWVzIGZvciB0aGUgbm9uLUlBIGFyY2hpdGVjdHVyZXMKLXdoaWNoIHVzZSAuUyBmaWxlcy4KLQotUlAKLTIwMTgvMTAvMwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGNzdS9hYmktbm90ZS5TICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL2FhcmNoNjQvY3J0aS5TICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCi0gc3lzZGVwcy9hYXJjaDY0L2NydG4uUyAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKwotIHN5c2RlcHMvYWFyY2g2NC9kbC10bHNkZXNjLlMgICAgICAgICAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL2FhcmNoNjQvZGwtdHJhbXBvbGluZS5TICAgICAgICAgICAgICAgfCAyICsrCi0gc3lzZGVwcy9hYXJjaDY0L3N0YXJ0LlMgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKwotIHN5c2RlcHMvYXJtL2FiaS1ub3RlLlMgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL2FybS9jcnRpLlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCi0gc3lzZGVwcy9hcm0vY3J0bi5TICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKwotIHN5c2RlcHMvYXJtL2RsLXRsc2Rlc2MuUyAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL2FybS9kbC10cmFtcG9saW5lLlMgICAgICAgICAgICAgICAgICAgfCAyICsrCi0gc3lzZGVwcy9hcm0vc3RhcnQuUyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKwotIHN5c2RlcHMvbWlwcy9zdGFydC5TICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2RsLXN0YXJ0LlMgICAgICAgICAgfCAyICsrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9zdGFydC5TICAgICAgICAgICAgIHwgMiArKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvc3RhcnQuUyAgICAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hYXJjaDY0L19fcmVhZF90cC5TICAgfCAyICsrCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2FlYWJpX3JlYWRfdHAuUyAgIHwgMiArKwotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9saWJjLWRvLXN5c2NhbGwuUyB8IDIgKysKLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLWJyay5TICAgICAgfCAyICsrCi0gMjAgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY3N1L2FiaS1ub3RlLlMgYi9jc3UvYWJpLW5vdGUuUwotaW5kZXggZmExZjAxNGE4OC4uMDk4NzMxMzYyYSAxMDA2NDQKLS0tLSBhL2NzdS9hYmktbm90ZS5TCi0rKysgYi9jc3UvYWJpLW5vdGUuUwotQEAgLTU2LDYgKzU2LDggQEAgb2Zmc2V0CWxlbmd0aAljb250ZW50cwotICNpbmNsdWRlIDxjb25maWcuaD4KLSAjaW5jbHVkZSA8YWJpLXRhZy5oPgkJLyogT1Mtc3BlY2lmaWMgQUJJIHRhZyB2YWx1ZSAqLwotIAotKwkuZmlsZSAiYWJpLW5vdGUuUyIKLSsKLSAvKiBUaGUgbGlua2VyIChHTlUgbGQgMi44IGFuZCBsYXRlcikgcmVjb2duaXplcyBhbiBhbGxvY2F0ZWQgc2VjdGlvbiB3aG9zZQotICAgIG5hbWUgYmVnaW5zIHdpdGggYC5ub3RlJyBhbmQgY3JlYXRlcyBhIFBUX05PVEUgcHJvZ3JhbSBoZWFkZXIgZW50cnkKLSAgICBwb2ludGluZyBhdCBpdC4gKi8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvY3J0aS5TIGIvc3lzZGVwcy9hYXJjaDY0L2NydGkuUwotaW5kZXggZDRlN2RmY2Y1Yy4uZTAyMThkZjMwYyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYWFyY2g2NC9jcnRpLlMKLSsrKyBiL3N5c2RlcHMvYWFyY2g2NC9jcnRpLlMKLUBAIC01MCw2ICs1MCw4IEBACi0gIyBkZWZpbmUgUFJFSU5JVF9GVU5DVElPTl9XRUFLIDEKLSAjZW5kaWYKLSAKLSsgICAgLmZpbGUgImNydGkuUyIKLSsKLSAjaWYgUFJFSU5JVF9GVU5DVElPTl9XRUFLCi0gCXdlYWtfZXh0ZXJuIChQUkVJTklUX0ZVTkNUSU9OKQotICNlbHNlCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2NydG4uUyBiL3N5c2RlcHMvYWFyY2g2NC9jcnRuLlMKLWluZGV4IDM2M2Y3NTI0NjAuLjJmYjA2ZmJhNjIgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FhcmNoNjQvY3J0bi5TCi0rKysgYi9zeXNkZXBzL2FhcmNoNjQvY3J0bi5TCi1AQCAtMzcsNiArMzcsOCBAQAotIC8qIGNydG4uUyBwdXRzIGZ1bmN0aW9uIGVwaWxvZ3VlcyBpbiB0aGUgLmluaXQgYW5kIC5maW5pIHNlY3Rpb25zCi0gICAgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvbG9ndWVzIGluIGNydGkuUy4gKi8KLSAKLSsJLmZpbGUgImNydG4uUyIKLSsKLSAJLnNlY3Rpb24gLmluaXQsImF4IiwlcHJvZ2JpdHMKLSAJbGRwCXgyOSwgeDMwLCBbc3BdLCAxNgotIAlSRVQKLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvZGwtdGxzZGVzYy5TIGIvc3lzZGVwcy9hYXJjaDY0L2RsLXRsc2Rlc2MuUwotaW5kZXggNGFiZTZiODJhMy4uOGM0NGIyZmY4YSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYWFyY2g2NC9kbC10bHNkZXNjLlMKLSsrKyBiL3N5c2RlcHMvYWFyY2g2NC9kbC10bHNkZXNjLlMKLUBAIC0yMiw2ICsyMiw4IEBACi0gI2luY2x1ZGUgPHRscy5oPgotICNpbmNsdWRlICJ0bHNkZXNjLmgiCi0gCi0rCS5maWxlICJkbC10bHNkZXNjLlMiCi0rCi0gI2RlZmluZSBOU0FWRURRUkVHUEFJUlMJMTYKLSAjZGVmaW5lIFNBVkVfUV9SRUdJU1RFUlMJCQkJXAotIAlzdHAJcTAsIHExLAlbc3AsICMtMzIqTlNBVkVEUVJFR1BBSVJTXSE7CVwKLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvZGwtdHJhbXBvbGluZS5TIGIvc3lzZGVwcy9hYXJjaDY0L2RsLXRyYW1wb2xpbmUuUwotaW5kZXggMTliMTE3ZThmOS4uMzhjNzhiNTQwOSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYWFyY2g2NC9kbC10cmFtcG9saW5lLlMKLSsrKyBiL3N5c2RlcHMvYWFyY2g2NC9kbC10cmFtcG9saW5lLlMKLUBAIC0yMSw2ICsyMSw4IEBACi0gCi0gI2luY2x1ZGUgImRsLWxpbmsuaCIKLSAKLSsJLmZpbGUgImRsLXRyYW1wb2xpbmUuUyIKLSsKLSAjZGVmaW5lIGlwMCB4MTYKLSAjZGVmaW5lIGlwMGwgUFRSX1JFRyAoMTYpCi0gI2RlZmluZSBpcDEgeDE3Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L3N0YXJ0LlMgYi9zeXNkZXBzL2FhcmNoNjQvc3RhcnQuUwotaW5kZXggZjVlOWI5YzIyMy4uYWUzZTIyYTZhNSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYWFyY2g2NC9zdGFydC5TCi0rKysgYi9zeXNkZXBzL2FhcmNoNjQvc3RhcnQuUwotQEAgLTE4LDYgKzE4LDggQEAKLSAKLSAjaW5jbHVkZSA8c3lzZGVwLmg+Ci0gCi0rCS5maWxlICJzdGFydC5TIgotKwotIC8qIFRoaXMgaXMgdGhlIGNhbm9uaWNhbCBlbnRyeSBwb2ludCwgdXN1YWxseSB0aGUgZmlyc3QgdGhpbmcgaW4gdGhlIHRleHQKLSAgICBzZWdtZW50LgotIAotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2FiaS1ub3RlLlMgYi9zeXNkZXBzL2FybS9hYmktbm90ZS5TCi1pbmRleCAwN2JkNGM0NjE5Li43MjEzYjE2ZjI3IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hcm0vYWJpLW5vdGUuUwotKysrIGIvc3lzZGVwcy9hcm0vYWJpLW5vdGUuUwotQEAgLTEsMyArMSw1IEBACi0rCS5maWxlICJhYmktbm90ZS5TIgotKwotIC8qIFRhZ19BQklfYWxpZ244X3ByZXNlcnZlZDogVGhpcyBjb2RlIHByZXNlcnZlcyA4LWJ5dGUKLSAgICBhbGlnbm1lbnQgaW4gYW55IGNhbGxlZS4gICovCi0gCS5lYWJpX2F0dHJpYnV0ZSAyNSwgMQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NydGkuUyBiL3N5c2RlcHMvYXJtL2NydGkuUwotaW5kZXggMjZkYmJhNjZhMy4uZGQ4NGVjZDU2NiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYXJtL2NydGkuUwotKysrIGIvc3lzZGVwcy9hcm0vY3J0aS5TCi1AQCAtNTcsNiArNTcsOCBAQAotIAkuaGlkZGVuIFBSRUlOSVRfRlVOQ1RJT04KLSAjZW5kaWYKLSAKLSsgICAgLmZpbGUgImNydGkuUyIKLSsKLSAjaWYgUFJFSU5JVF9GVU5DVElPTl9XRUFLCi0gCS5wMmFsaWduIDIKLSAJLnR5cGUgY2FsbF93ZWFrX2ZuLCAlZnVuY3Rpb24KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9jcnRuLlMgYi9zeXNkZXBzL2FybS9jcnRuLlMKLWluZGV4IDhmOTFjOGQ4OGIuLmE4N2ZlNDllMDcgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FybS9jcnRuLlMKLSsrKyBiL3N5c2RlcHMvYXJtL2NydG4uUwotQEAgLTM3LDYgKzM3LDggQEAKLSAjZGVmaW5lIE5PX1RIVU1CCi0gI2luY2x1ZGUgPHN5c2RlcC5oPgotIAotKyAgICAuZmlsZSAiY3J0bi5TIgotKwotIC8qIGNydG4uUyBwdXRzIGZ1bmN0aW9uIGVwaWxvZ3VlcyBpbiB0aGUgLmluaXQgYW5kIC5maW5pIHNlY3Rpb25zCi0gICAgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvbG9ndWVzIGluIGNydGkuUy4gKi8KLSAKLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9kbC10bHNkZXNjLlMgYi9zeXNkZXBzL2FybS9kbC10bHNkZXNjLlMKLWluZGV4IGE5MjkzNDBiNDIuLmI3MjRjOTc3NmQgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FybS9kbC10bHNkZXNjLlMKLSsrKyBiL3N5c2RlcHMvYXJtL2RsLXRsc2Rlc2MuUwotQEAgLTIxLDYgKzIxLDggQEAKLSAjaW5jbHVkZSA8dGxzLmg+Ci0gI2luY2x1ZGUgInRsc2Rlc2MuaCIKLSAKLSsJLmZpbGUgImRsLXRsc2Rlc2MuUyIKLSsKLSAJLnRleHQKLSAJQCBlbWl0IGRlYnVnIGluZm9ybWF0aW9uIHdpdGggY2ZpCi0gCUAgdXNlIGFybS1zcGVjaWZpYyBwc2V1ZG9zIGZvciB1bndpbmRpbmcgaXRzZWxmCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vZGwtdHJhbXBvbGluZS5TIGIvc3lzZGVwcy9hcm0vZGwtdHJhbXBvbGluZS5TCi1pbmRleCAzMjVjZmNkMmNlLi40YmZkY2JjZTUxIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hcm0vZGwtdHJhbXBvbGluZS5TCi0rKysgYi9zeXNkZXBzL2FybS9kbC10cmFtcG9saW5lLlMKLUBAIC0yMSw2ICsyMSw4IEBACi0gI2luY2x1ZGUgPHN5c2RlcC5oPgotICNpbmNsdWRlIDxsaWJjLXN5bWJvbHMuaD4KLSAKLSsJLmZpbGUgImRsLXRyYW1wb2xpbmUuUyIKLSsKLSAJLnRleHQKLSAJLmdsb2JsIF9kbF9ydW50aW1lX3Jlc29sdmUKLSAJLnR5cGUgX2RsX3J1bnRpbWVfcmVzb2x2ZSwgI2Z1bmN0aW9uCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vc3RhcnQuUyBiL3N5c2RlcHMvYXJtL3N0YXJ0LlMKLWluZGV4IGEwNWY4YTQ2NTEuLjJmNDM3NGZjYWEgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FybS9zdGFydC5TCi0rKysgYi9zeXNkZXBzL2FybS9zdGFydC5TCi1AQCAtNTcsNiArNTcsOCBAQAotIAkJCQkJTlVMTAotICovCi0gCi0rCS5maWxlICJzdGFydC5TIgotKwotIC8qIFRhZ19BQklfYWxpZ244X3ByZXNlcnZlZDogVGhpcyBjb2RlIHByZXNlcnZlcyA4LWJ5dGUKLSAgICBhbGlnbm1lbnQgaW4gYW55IGNhbGxlZS4gICovCi0gCS5lYWJpX2F0dHJpYnV0ZSAyNSwgMQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvbWlwcy9zdGFydC5TIGIvc3lzZGVwcy9taXBzL3N0YXJ0LlMKLWluZGV4IDg2MzhlNWI1NDUuLjkzZjY1NjRhZWMgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL21pcHMvc3RhcnQuUwotKysrIGIvc3lzZGVwcy9taXBzL3N0YXJ0LlMKLUBAIC0zOCw2ICszOCw4IEBACi0gI2luY2x1ZGUgPHNnaWRlZnMuaD4KLSAjaW5jbHVkZSA8c3lzL2FzbS5oPgotIAotKwkuZmlsZSAic3RhcnQuUyIKLSsKLSAjaWZuZGVmIEVOVFJZX1BPSU5UCi0gI2Vycm9yIEVOVFJZX1BPSU5UIG5lZWRzIHRvIGJlIGRlZmluZWQgZm9yIHN0YXJ0LlMgb24gTUlQUy9FTEYuCi0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9kbC1zdGFydC5TIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9kbC1zdGFydC5TCi1pbmRleCA5OWExMGQ2NDNhLi5lNDdmYzBkMjQ1IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9kbC1zdGFydC5TCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2RsLXN0YXJ0LlMKLUBAIC0xOCw2ICsxOCw4IEBACi0gCi0gI2luY2x1ZGUgPHN5c2RlcC5oPgotIAotKwkuZmlsZSAiZGwtc3RhcnQuUyIKLSsKLSAvKiBJbml0aWFsIGVudHJ5IHBvaW50IGNvZGUgZm9yIHRoZSBkeW5hbWljIGxpbmtlci4KLSAgICBUaGUgQyBmdW5jdGlvbiBgX2RsX3N0YXJ0JyBpcyB0aGUgcmVhbCBlbnRyeSBwb2ludDsKLSAgICBpdHMgcmV0dXJuIHZhbHVlIGlzIHRoZSB1c2VyIHByb2dyYW0ncyBlbnRyeSBwb2ludC4JKi8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL3N0YXJ0LlMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL3N0YXJ0LlMKLWluZGV4IDE3MmZiNWE1NmIuLmVmMTQ3MWI4NjEgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL3N0YXJ0LlMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvc3RhcnQuUwotQEAgLTM1LDYgKzM1LDggQEAKLSAKLSAjaW5jbHVkZSA8c3lzZGVwLmg+Ci0gCi0rCS5maWxlICJzdGFydC5TIgotKwotIC8qIFdlIGRvIG5vdCB3YW50IC5laF9mcmFtZSBpbmZvIGZvciBjcnQxLm8gc2luY2UgY3J0MS5vIGlzIGxpbmtlZAotICAgIGJlZm9yZSBjcnRiZWdpbi5vLCB0aGUgZmlsZSBkZWZpbmluZyBfX0VIX0ZSQU1FX0JFR0lOX18uICAqLwotICN1bmRlZiBjZmlfc3RhcnRwcm9jCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9zdGFydC5TIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9zdGFydC5TCi1pbmRleCA1NWZhZTY4YWQ2Li4wY2I2MDhmZTBmIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9zdGFydC5TCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L3N0YXJ0LlMKLUBAIC0zNSw2ICszNSw4IEBACi0gCi0gI2luY2x1ZGUgPHN5c2RlcC5oPgotIAotKwkuZmlsZSAic3RhcnQuUyIKLSsKLSAvKiBXZSBkbyBub3Qgd2FudCAuZWhfZnJhbWUgaW5mbyBmb3IgY3J0MS5vIHNpbmNlIGNydDEubyBpcyBsaW5rZWQKLSAgICBiZWZvcmUgY3J0YmVnaW4ubywgdGhlIGZpbGUgZGVmaW5pbmcgX19FSF9GUkFNRV9CRUdJTl9fLiAgKi8KLSAjdW5kZWYgY2ZpX3N0YXJ0cHJvYwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FhcmNoNjQvX19yZWFkX3RwLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hYXJjaDY0L19fcmVhZF90cC5TCi1pbmRleCAzMGEyOWI5ZmIwLi4wNzg5MmIzODNmIDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYWFyY2g2NC9fX3JlYWRfdHAuUwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYWFyY2g2NC9fX3JlYWRfdHAuUwotQEAgLTE4LDYgKzE4LDggQEAKLSAKLSAjaW5jbHVkZSA8c3lzZGVwLmg+Ci0gCi0rCS5maWxlICJfX3JlYWRfdHAuUyIKLSsKLSAJLmhpZGRlbiBfX3JlYWRfdHAKLSBFTlRSWSAoX19yZWFkX3RwKQotIAltcnMJeDAsIHRwaWRyX2VsMAotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9hZWFiaV9yZWFkX3RwLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vYWVhYmlfcmVhZF90cC5TCi1pbmRleCBmNjRjNGZmZThhLi4yZGEzMTVhYjA4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2FlYWJpX3JlYWRfdHAuUwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2FlYWJpX3JlYWRfdHAuUwotQEAgLTM5LDYgKzM5LDggQEAKLSAgICBhIG5vcm1hbCBmdW5jdGlvbiBjYWxsKSBpbiBhIGhpZ2ggcGFnZSBvZiBtZW1vcnk7IHRhaWwgY2FsbCB0byB0aGUKLSAgICBoZWxwZXIuICAqLwotIAotKwkuZmlsZSAiYWVhYmlfcmVhZF90cC5TIgotKwotIAkuaGlkZGVuIF9fYWVhYmlfcmVhZF90cAotIEVOVFJZIChfX2FlYWJpX3JlYWRfdHApCi0gI2lmZGVmIEFSQ0hfSEFTX0hBUkRfVFAKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vbGliYy1kby1zeXNjYWxsLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vbGliYy1kby1zeXNjYWxsLlMKLWluZGV4IDBiNjIzN2FjNTUuLjhjZGE0OTFjMjggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vbGliYy1kby1zeXNjYWxsLlMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9saWJjLWRvLXN5c2NhbGwuUwotQEAgLTI3LDYgKzI3LDggQEAKLSAgICBBUk0gdW53aW5kIHRhYmxlcyBmb3IgcmVnaXN0ZXIgdG8gcmVnaXN0ZXIgbW92ZXMsIHRoZSBhY3R1YWwgb3Bjb2RlcwotICAgIGFyZSBub3QgZGVmaW5lZC4gICovCi0gCi0rICAgICAgLmZpbGUgImxpYmMtZG8tc3lzY2FsbC5TIgotKwotICNpZiBkZWZpbmVkKF9fdGh1bWJfXykKLSAJLnRodW1iCi0gCS5zeW50YXggdW5pZmllZAotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtYnJrLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLWJyay5TCi1pbmRleCBlZWI5NjU0NGUzLi5kYTE4MmIyOGY4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1icmsuUwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1icmsuUwotQEAgLTEgKzEsMyBAQAotKwkuZmlsZSAiZGwtYnJrLlMiCi0rCi0gI2luY2x1ZGUgPGJyay5TPgotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LWludGwtRW1pdC1uby1saW5lcy1pbi1iaXNvbi1nZW5lcmF0ZWQtZmlsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctaW50bC1FbWl0LW5vLWxpbmVzLWluLWJpc29uLWdlbmVyYXRlZC1maWxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzMxN2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LWludGwtRW1pdC1uby1saW5lcy1pbi1iaXNvbi1nZW5lcmF0ZWQtZmlsZXMucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSAzYzhkOWVhZTgzYWI0ZjE2NzdhZmM5YjM3OWY5NzExNGU4NTAzMzYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMyBBdWcgMjAxOCAwOTo0NDowMCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBpbnRsOiBFbWl0IG5vIGxpbmVzIGluIGJpc29uIGdlbmVyYXRlZCBmaWxlcworCitJbXByb3ZlIHJlcHJvZHVjaWJpbGl0eToKK0RvIG5vdCBwdXQgYW55ICNsaW5lIHByZXByb2Nlc3NvciBjb21tYW5kcyBpbiBiaXNvbiBnZW5lcmF0ZWQgZmlsZXMuCitUaGVzZSBsaW5lcyBjb250YWluIGFic29sdXRlIHBhdGhzIGNvbnRhaW5pbmcgZmlsZSBsb2NhdGlvbnMgb24KK3RoZSBob3N0IGJ1aWxkIG1hY2hpbmUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGludGwvTWFrZWZpbGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pbnRsL01ha2VmaWxlIGIvaW50bC9NYWtlZmlsZQoraW5kZXggY2UzMDcyNDIwZi4uNTg0NTc4NDBkOSAxMDA2NDQKKy0tLSBhL2ludGwvTWFrZWZpbGUKKysrKyBiL2ludGwvTWFrZWZpbGUKK0BAIC0xNTUsNyArMTU1LDcgQEAgJChvYmpwZngpdHN0LWdldHRleHQ2Lm91dDogJChvYmpwZngpdHN0LWdldHRleHQub3V0CisgCisgQ1BQRkxBR1MgKz0gLUQnTE9DQUxFRElSPSIkKGxvY2FsZWRpcikiJyBcCisgCSAgICAtRCdMT0NBTEVfQUxJQVNfUEFUSD0iJChsb2NhbGVkaXIpIicKKy1CSVNPTkZMQUdTID0gLS15YWNjIC0tbmFtZS1wcmVmaXg9X19nZXR0ZXh0IC0tb3V0cHV0CisrQklTT05GTEFHUyA9IC0teWFjYyAtLW5vLWxpbmVzIC0tbmFtZS1wcmVmaXg9X19nZXR0ZXh0IC0tb3V0cHV0CisgCisgJChpbnN0X2xvY2FsZWRpcikvbG9jYWxlLmFsaWFzOiBsb2NhbGUuYWxpYXMgJCgrZm9yY2UpCisgCSQoZG8taW5zdGFsbCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1pbmplY3QtZmlsZS1hc3NlbWJseS1kaXJlY3RpdmVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LWluamVjdC1maWxlLWFzc2VtYmx5LWRpcmVjdGl2ZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFhMDMwZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1pbmplY3QtZmlsZS1hc3NlbWJseS1kaXJlY3RpdmVzLnBhdGNoCkBAIC0wLDAgKzEsMzAxIEBACitGcm9tIDQyMDQ1NGY3MDk4YjU0NDU3MzBjYWE4NTVjMzdiODE0M2JmY2NjMWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAyOSBOb3YgMjAxOCAxNzoyOTozNSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBpbmplY3QgZmlsZSBhc3NlbWJseSBkaXJlY3RpdmVzCisKK0N1cnJlbnRseSwgbm9uLUlBIGJ1aWxkcyBhcmUgbm90IHJlcHJvZHVjaWJpbGUgc2luY2UgYnVpbGQgcGF0aHMgYXJlCitiZWluZyBpbmplY3RlZCBpbnRvIHRoZSBkZWJ1ZyBzeW1ib2xzLiBUaGVzZSBhcmUgY29taW5nIGZyb20gdGhlIHVzZSBvZgorLlMgYXNzZW1ibGVyIGZpbGVzIGR1cmluZyB0aGUgZ2xpYmMgYnVpbGQuIE5vIFNUVF9GSUxFIHNlY3Rpb24gaXMgYWRkZWQKK2R1cmluZyB0aGUgYXNzZW1ibHkgYnV0IHdoZW4gbGlua2luZywgbGQgZGVjaWRlcyB0byBhZGQgb25lIHRvIGFpZAorZGVidWdnaW5nIGFuZCBlbnN1cmUgcmVmZXJlbmNlcyBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgb2JqZWN0IGZpbGVzIGl0cworbGlua2luZyByZW1haW4gY2xlYXIuCisKK1dlIGNhbiBhdm9pZCB0aGlzIGJ5IGluamVjdGluZyBhIGZpbGUgaGVhZGVyIGludG8gdGhlIGFzc2VtYmxlciBmaWxlcworYWhlYWQgb2YgdGltZSwgY2hvb3NpbmcgYSBmaWxlbmFtZSB3aGljaCBkb2VzIG5vdCBjb250YWluIGJ1aWxkIHN5c3RlbQorcGF0aHMuCisKK1RoaXMgaXMgYSBiaXQgb2YgYSB3b3JrYXJvdW5kL2hhY2sgYnV0IGRvZXMgc2lnbmlmaWNhbnRseSByZWR1Y2UgdGhlCitidWlsZCBzeXN0ZW0gcmVmZXJlbmNlcyBpbiB0YXJnZXQgYmluYXJpZXMgZm9yIHRoZSBub24tSUEgYXJjaGl0ZWN0dXJlcword2hpY2ggdXNlIC5TIGZpbGVzLgorCitSUAorMjAxOC8xMC8zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgY3N1L2FiaS1ub3RlLlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvYWFyY2g2NC9jcnRpLlMgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKKyBzeXNkZXBzL2FhcmNoNjQvY3J0bi5TICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCisgc3lzZGVwcy9hYXJjaDY0L2RsLXRsc2Rlc2MuUyAgICAgICAgICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvYWFyY2g2NC9kbC10cmFtcG9saW5lLlMgICAgICAgICAgICAgICB8IDIgKysKKyBzeXNkZXBzL2FhcmNoNjQvc3RhcnQuUyAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCisgc3lzZGVwcy9hcm0vYWJpLW5vdGUuUyAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvYXJtL2NydGkuUyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKKyBzeXNkZXBzL2FybS9jcnRuLlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCisgc3lzZGVwcy9hcm0vZGwtdGxzZGVzYy5TICAgICAgICAgICAgICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvYXJtL2RsLXRyYW1wb2xpbmUuUyAgICAgICAgICAgICAgICAgICB8IDIgKysKKyBzeXNkZXBzL2FybS9zdGFydC5TICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCisgc3lzZGVwcy9taXBzL3N0YXJ0LlMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZGwtc3RhcnQuUyAgICAgICAgICB8IDIgKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL3N0YXJ0LlMgICAgICAgICAgICAgfCAyICsrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9zdGFydC5TICAgICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FhcmNoNjQvX19yZWFkX3RwLlMgICB8IDIgKysKKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vYWVhYmlfcmVhZF90cC5TICAgfCAyICsrCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2xpYmMtZG8tc3lzY2FsbC5TIHwgMiArKworIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtYnJrLlMgICAgICB8IDIgKysKKyAyMCBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jc3UvYWJpLW5vdGUuUyBiL2NzdS9hYmktbm90ZS5TCitpbmRleCAyYjRiNWY4ODI0Li45NjQ4NDMwMTZjIDEwMDY0NAorLS0tIGEvY3N1L2FiaS1ub3RlLlMKKysrKyBiL2NzdS9hYmktbm90ZS5TCitAQCAtNTYsNiArNTYsOCBAQCBvZmZzZXQJbGVuZ3RoCWNvbnRlbnRzCisgI2luY2x1ZGUgPGNvbmZpZy5oPgorICNpbmNsdWRlIDxhYmktdGFnLmg+CQkvKiBPUy1zcGVjaWZpYyBBQkkgdGFnIHZhbHVlICovCisgCisrCS5maWxlICJhYmktbm90ZS5TIgorKworIC8qIFRoZSBsaW5rZXIgKEdOVSBsZCAyLjggYW5kIGxhdGVyKSByZWNvZ25pemVzIGFuIGFsbG9jYXRlZCBzZWN0aW9uIHdob3NlCisgICAgbmFtZSBiZWdpbnMgd2l0aCBgLm5vdGUnIGFuZCBjcmVhdGVzIGEgUFRfTk9URSBwcm9ncmFtIGhlYWRlciBlbnRyeQorICAgIHBvaW50aW5nIGF0IGl0LiAqLworZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9jcnRpLlMgYi9zeXNkZXBzL2FhcmNoNjQvY3J0aS5TCitpbmRleCAxNzI4ZWFjMzdhLi43NmE4YWI1OTBiIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2NydGkuUworKysrIGIvc3lzZGVwcy9hYXJjaDY0L2NydGkuUworQEAgLTUwLDYgKzUwLDggQEAKKyAjIGRlZmluZSBQUkVJTklUX0ZVTkNUSU9OX1dFQUsgMQorICNlbmRpZgorIAorKyAgICAuZmlsZSAiY3J0aS5TIgorKworICNpZiBQUkVJTklUX0ZVTkNUSU9OX1dFQUsKKyAJd2Vha19leHRlcm4gKFBSRUlOSVRfRlVOQ1RJT04pCisgI2Vsc2UKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvY3J0bi5TIGIvc3lzZGVwcy9hYXJjaDY0L2NydG4uUworaW5kZXggYzNlOTdjYzQ0OS4uZmMyZTVjMmRmOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYWFyY2g2NC9jcnRuLlMKKysrKyBiL3N5c2RlcHMvYWFyY2g2NC9jcnRuLlMKK0BAIC0zNyw2ICszNyw4IEBACisgLyogY3J0bi5TIHB1dHMgZnVuY3Rpb24gZXBpbG9ndWVzIGluIHRoZSAuaW5pdCBhbmQgLmZpbmkgc2VjdGlvbnMKKyAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9sb2d1ZXMgaW4gY3J0aS5TLiAqLworIAorKwkuZmlsZSAiY3J0bi5TIgorKworIAkuc2VjdGlvbiAuaW5pdCwiYXgiLCVwcm9nYml0cworIAlsZHAJeDI5LCB4MzAsIFtzcF0sIDE2CisgCVJFVAorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9kbC10bHNkZXNjLlMgYi9zeXNkZXBzL2FhcmNoNjQvZGwtdGxzZGVzYy5TCitpbmRleCA1NTdhZDFkNTA1Li4xOTRhODUzMWRhIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2RsLXRsc2Rlc2MuUworKysrIGIvc3lzZGVwcy9hYXJjaDY0L2RsLXRsc2Rlc2MuUworQEAgLTIyLDYgKzIyLDggQEAKKyAjaW5jbHVkZSA8dGxzLmg+CisgI2luY2x1ZGUgInRsc2Rlc2MuaCIKKyAKKysJLmZpbGUgImRsLXRsc2Rlc2MuUyIKKysKKyAjZGVmaW5lIE5TQVZFRFFSRUdQQUlSUwkxNgorICNkZWZpbmUgU0FWRV9RX1JFR0lTVEVSUwkJCQlcCisgCXN0cAlxMCwgcTEsCVtzcCwgIy0zMipOU0FWRURRUkVHUEFJUlNdITsJXAorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9kbC10cmFtcG9saW5lLlMgYi9zeXNkZXBzL2FhcmNoNjQvZGwtdHJhbXBvbGluZS5TCitpbmRleCA5NGU5NjVjMDk2Li5iYTE4NzQyZjNlIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2RsLXRyYW1wb2xpbmUuUworKysrIGIvc3lzZGVwcy9hYXJjaDY0L2RsLXRyYW1wb2xpbmUuUworQEAgLTIxLDYgKzIxLDggQEAKKyAKKyAjaW5jbHVkZSAiZGwtbGluay5oIgorIAorKwkuZmlsZSAiZGwtdHJhbXBvbGluZS5TIgorKworICNkZWZpbmUgaXAwIHgxNgorICNkZWZpbmUgaXAwbCBQVFJfUkVHICgxNikKKyAjZGVmaW5lIGlwMSB4MTcKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvc3RhcnQuUyBiL3N5c2RlcHMvYWFyY2g2NC9zdGFydC5TCitpbmRleCBkOTZjZjU3ZTJkLi4wN2E1MjM5NzhhIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hYXJjaDY0L3N0YXJ0LlMKKysrKyBiL3N5c2RlcHMvYWFyY2g2NC9zdGFydC5TCitAQCAtMTgsNiArMTgsOCBAQAorIAorICNpbmNsdWRlIDxzeXNkZXAuaD4KKyAKKysJLmZpbGUgInN0YXJ0LlMiCisrCisgLyogVGhpcyBpcyB0aGUgY2Fub25pY2FsIGVudHJ5IHBvaW50LCB1c3VhbGx5IHRoZSBmaXJzdCB0aGluZyBpbiB0aGUgdGV4dAorICAgIHNlZ21lbnQuCisgCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vYWJpLW5vdGUuUyBiL3N5c2RlcHMvYXJtL2FiaS1ub3RlLlMKK2luZGV4IDA3YmQ0YzQ2MTkuLjcyMTNiMTZmMjcgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FybS9hYmktbm90ZS5TCisrKysgYi9zeXNkZXBzL2FybS9hYmktbm90ZS5TCitAQCAtMSwzICsxLDUgQEAKKysJLmZpbGUgImFiaS1ub3RlLlMiCisrCisgLyogVGFnX0FCSV9hbGlnbjhfcHJlc2VydmVkOiBUaGlzIGNvZGUgcHJlc2VydmVzIDgtYnl0ZQorICAgIGFsaWdubWVudCBpbiBhbnkgY2FsbGVlLiAgKi8KKyAJLmVhYmlfYXR0cmlidXRlIDI1LCAxCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vY3J0aS5TIGIvc3lzZGVwcy9hcm0vY3J0aS5TCitpbmRleCA4MTY5NzgzMjY3Li5mNTZlMGM4NWE2IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hcm0vY3J0aS5TCisrKysgYi9zeXNkZXBzL2FybS9jcnRpLlMKK0BAIC01Nyw2ICs1Nyw4IEBACisgCS5oaWRkZW4gUFJFSU5JVF9GVU5DVElPTgorICNlbmRpZgorIAorKyAgICAuZmlsZSAiY3J0aS5TIgorKworICNpZiBQUkVJTklUX0ZVTkNUSU9OX1dFQUsKKyAJLnAyYWxpZ24gMgorIAkudHlwZSBjYWxsX3dlYWtfZm4sICVmdW5jdGlvbgorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NydG4uUyBiL3N5c2RlcHMvYXJtL2NydG4uUworaW5kZXggZDYwZjlmMDVkZS4uMWUxMGVjNDM5ZiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL2NydG4uUworKysrIGIvc3lzZGVwcy9hcm0vY3J0bi5TCitAQCAtMzcsNiArMzcsOCBAQAorICNkZWZpbmUgTk9fVEhVTUIKKyAjaW5jbHVkZSA8c3lzZGVwLmg+CisgCisrICAgIC5maWxlICJjcnRuLlMiCisrCisgLyogY3J0bi5TIHB1dHMgZnVuY3Rpb24gZXBpbG9ndWVzIGluIHRoZSAuaW5pdCBhbmQgLmZpbmkgc2VjdGlvbnMKKyAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9sb2d1ZXMgaW4gY3J0aS5TLiAqLworIAorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2RsLXRsc2Rlc2MuUyBiL3N5c2RlcHMvYXJtL2RsLXRsc2Rlc2MuUworaW5kZXggODQxNWU0NzYwNy4uMjljMmNiODEyOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL2RsLXRsc2Rlc2MuUworKysrIGIvc3lzZGVwcy9hcm0vZGwtdGxzZGVzYy5TCitAQCAtMjEsNiArMjEsOCBAQAorICNpbmNsdWRlIDx0bHMuaD4KKyAjaW5jbHVkZSAidGxzZGVzYy5oIgorIAorKwkuZmlsZSAiZGwtdGxzZGVzYy5TIgorKworIAkudGV4dAorIAlAIGVtaXQgZGVidWcgaW5mb3JtYXRpb24gd2l0aCBjZmkKKyAJQCB1c2UgYXJtLXNwZWNpZmljIHBzZXVkb3MgZm9yIHVud2luZGluZyBpdHNlbGYKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9kbC10cmFtcG9saW5lLlMgYi9zeXNkZXBzL2FybS9kbC10cmFtcG9saW5lLlMKK2luZGV4IGEyMGJhZjU1NWUuLjJkZDNiZWYwNGUgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FybS9kbC10cmFtcG9saW5lLlMKKysrKyBiL3N5c2RlcHMvYXJtL2RsLXRyYW1wb2xpbmUuUworQEAgLTIxLDYgKzIxLDggQEAKKyAjaW5jbHVkZSA8c3lzZGVwLmg+CisgI2luY2x1ZGUgPGxpYmMtc3ltYm9scy5oPgorIAorKwkuZmlsZSAiZGwtdHJhbXBvbGluZS5TIgorKworIAkudGV4dAorIAkuZ2xvYmwgX2RsX3J1bnRpbWVfcmVzb2x2ZQorIAkudHlwZSBfZGxfcnVudGltZV9yZXNvbHZlLCAjZnVuY3Rpb24KK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9zdGFydC5TIGIvc3lzZGVwcy9hcm0vc3RhcnQuUworaW5kZXggMmZmNTYxNzlkMi4uYzExODA0NmVjNiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL3N0YXJ0LlMKKysrKyBiL3N5c2RlcHMvYXJtL3N0YXJ0LlMKK0BAIC01Nyw2ICs1Nyw4IEBACisgCQkJCQlOVUxMCisgKi8KKyAKKysJLmZpbGUgInN0YXJ0LlMiCisrCisgLyogVGFnX0FCSV9hbGlnbjhfcHJlc2VydmVkOiBUaGlzIGNvZGUgcHJlc2VydmVzIDgtYnl0ZQorICAgIGFsaWdubWVudCBpbiBhbnkgY2FsbGVlLiAgKi8KKyAJLmVhYmlfYXR0cmlidXRlIDI1LCAxCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9taXBzL3N0YXJ0LlMgYi9zeXNkZXBzL21pcHMvc3RhcnQuUworaW5kZXggZmFiYzgwODBkZi4uODNjNmI5MWQ3ZCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvbWlwcy9zdGFydC5TCisrKysgYi9zeXNkZXBzL21pcHMvc3RhcnQuUworQEAgLTM4LDYgKzM4LDggQEAKKyAjaW5jbHVkZSA8c2dpZGVmcy5oPgorICNpbmNsdWRlIDxzeXMvYXNtLmg+CisgCisrCS5maWxlICJzdGFydC5TIgorKworICNpZm5kZWYgRU5UUllfUE9JTlQKKyAjZXJyb3IgRU5UUllfUE9JTlQgbmVlZHMgdG8gYmUgZGVmaW5lZCBmb3Igc3RhcnQuUyBvbiBNSVBTL0VMRi4KKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2RsLXN0YXJ0LlMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2RsLXN0YXJ0LlMKK2luZGV4IGMxNTI0MmQzYmMuLjZjYTI3NzE1YTQgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2RsLXN0YXJ0LlMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZGwtc3RhcnQuUworQEAgLTE4LDYgKzE4LDggQEAKKyAKKyAjaW5jbHVkZSA8c3lzZGVwLmg+CisgCisrCS5maWxlICJkbC1zdGFydC5TIgorKworIC8qIEluaXRpYWwgZW50cnkgcG9pbnQgY29kZSBmb3IgdGhlIGR5bmFtaWMgbGlua2VyLgorICAgIFRoZSBDIGZ1bmN0aW9uIGBfZGxfc3RhcnQnIGlzIHRoZSByZWFsIGVudHJ5IHBvaW50OworICAgIGl0cyByZXR1cm4gdmFsdWUgaXMgdGhlIHVzZXIgcHJvZ3JhbSdzIGVudHJ5IHBvaW50LgkqLworZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvc3RhcnQuUyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvc3RhcnQuUworaW5kZXggYjdiOWExMzNhMi4uOGRmNzE0ZjgxYSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvc3RhcnQuUworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9zdGFydC5TCitAQCAtMzUsNiArMzUsOCBAQAorIAorICNpbmNsdWRlIDxzeXNkZXAuaD4KKyAKKysJLmZpbGUgInN0YXJ0LlMiCisrCisgLyogV2UgZG8gbm90IHdhbnQgLmVoX2ZyYW1lIGluZm8gZm9yIGNydDEubyBzaW5jZSBjcnQxLm8gaXMgbGlua2VkCisgICAgYmVmb3JlIGNydGJlZ2luLm8sIHRoZSBmaWxlIGRlZmluaW5nIF9fRUhfRlJBTUVfQkVHSU5fXy4gICovCisgI3VuZGVmIGNmaV9zdGFydHByb2MKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L3N0YXJ0LlMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L3N0YXJ0LlMKK2luZGV4IDk0YmY3NzFlODMuLmNmZmI5OTUwMGEgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L3N0YXJ0LlMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvc3RhcnQuUworQEAgLTM1LDYgKzM1LDggQEAKKyAKKyAjaW5jbHVkZSA8c3lzZGVwLmg+CisgCisrCS5maWxlICJzdGFydC5TIgorKworIC8qIFdlIGRvIG5vdCB3YW50IC5laF9mcmFtZSBpbmZvIGZvciBjcnQxLm8gc2luY2UgY3J0MS5vIGlzIGxpbmtlZAorICAgIGJlZm9yZSBjcnRiZWdpbi5vLCB0aGUgZmlsZSBkZWZpbmluZyBfX0VIX0ZSQU1FX0JFR0lOX18uICAqLworICN1bmRlZiBjZmlfc3RhcnRwcm9jCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYWFyY2g2NC9fX3JlYWRfdHAuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FhcmNoNjQvX19yZWFkX3RwLlMKK2luZGV4IDEyZTExMzFmZTcuLjc2N2UwZDA0M2IgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hYXJjaDY0L19fcmVhZF90cC5TCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hYXJjaDY0L19fcmVhZF90cC5TCitAQCAtMTgsNiArMTgsOCBAQAorIAorICNpbmNsdWRlIDxzeXNkZXAuaD4KKyAKKysJLmZpbGUgIl9fcmVhZF90cC5TIgorKworIAkuaGlkZGVuIF9fcmVhZF90cAorIEVOVFJZIChfX3JlYWRfdHApCisgCW1ycwl4MCwgdHBpZHJfZWwwCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2FlYWJpX3JlYWRfdHAuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9hZWFiaV9yZWFkX3RwLlMKK2luZGV4IDNiMGQ2MTEwMzkuLjRhN2U0NzZjMzcgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vYWVhYmlfcmVhZF90cC5TCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vYWVhYmlfcmVhZF90cC5TCitAQCAtMzksNiArMzksOCBAQAorICAgIGEgbm9ybWFsIGZ1bmN0aW9uIGNhbGwpIGluIGEgaGlnaCBwYWdlIG9mIG1lbW9yeTsgdGFpbCBjYWxsIHRvIHRoZQorICAgIGhlbHBlci4gICovCisgCisrCS5maWxlICJhZWFiaV9yZWFkX3RwLlMiCisrCisgCS5oaWRkZW4gX19hZWFiaV9yZWFkX3RwCisgRU5UUlkgKF9fYWVhYmlfcmVhZF90cCkKKyAjaWZkZWYgQVJDSF9IQVNfSEFSRF9UUAorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9saWJjLWRvLXN5c2NhbGwuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9saWJjLWRvLXN5c2NhbGwuUworaW5kZXggZmI1ZTBjN2Q5Ny4uYmQwN2JkYjM4YiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9saWJjLWRvLXN5c2NhbGwuUworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2xpYmMtZG8tc3lzY2FsbC5TCitAQCAtMjcsNiArMjcsOCBAQAorICAgIEFSTSB1bndpbmQgdGFibGVzIGZvciByZWdpc3RlciB0byByZWdpc3RlciBtb3ZlcywgdGhlIGFjdHVhbCBvcGNvZGVzCisgICAgYXJlIG5vdCBkZWZpbmVkLiAgKi8KKyAKKysgICAgICAuZmlsZSAibGliYy1kby1zeXNjYWxsLlMiCisrCisgI2lmIGRlZmluZWQoX190aHVtYl9fKQorIAkudGh1bWIKKyAJLnN5bnRheCB1bmlmaWVkCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1icmsuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtYnJrLlMKK2luZGV4IGVlYjk2NTQ0ZTMuLmRhMTgyYjI4ZjggMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLWJyay5TCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLWJyay5TCitAQCAtMSArMSwzIEBACisrCS5maWxlICJkbC1icmsuUyIKKysKKyAjaW5jbHVkZSA8YnJrLlM+CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjgtbG9jYWxlLXByZXZlbnQtbWF5YmUtdW5pbml0aWFsaXplZC1lcnJvcnMtd2l0aC1Pcy1CWi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1sb2NhbGUtcHJldmVudC1tYXliZS11bmluaXRpYWxpemVkLWVycm9ycy13aXRoLU9zLUJaLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzQ5MDY2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1sb2NhbGUtcHJldmVudC1tYXliZS11bmluaXRpYWxpemVkLWVycm9ycy13aXRoLU9zLUJaLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSBkOTM0Nzg4ZTMyMjFjMjhjOWExODkyMjM1Y2JlNGNmZDFiMjhjZWQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxtYXJ0aW4uamFuc2FAZ21haWwuY29tPgotRGF0ZTogTW9uLCAxNyBEZWMgMjAxOCAyMTozNjoxOCArMDAwMAotU3ViamVjdDogW1BBVENIIDI4LzI4XSBsb2NhbGU6IHByZXZlbnQgbWF5YmUtdW5pbml0aWFsaXplZCBlcnJvcnMgd2l0aCAtT3MgW0JaCi0gIzE5NDQ0XQotCi1GaXhlcyBmb2xsb3dpbmcgZXJyb3Igd2hlbiBidWlsZGluZyBmb3IgYWFyY2g2NCB3aXRoIC1PczoKLXwgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHN0cmNvbGxfbC5jOjQzOgotfCBzdHJjb2xsX2wuYzogSW4gZnVuY3Rpb24gJ19fc3RyY29sbF9sJzoKLXwgLi4vbG9jYWxlL3dlaWdodC5oOjMxOjI2OiBlcnJvcjogJ3NlcTIuYmFja191cycgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCi18ICAgIGludF9mYXN0MzJfdCBpID0gdGFibGVbKigqY3BwKSsrXTsKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn4KLXwgc3RyY29sbF9sLmM6MzA0OjE4OiBub3RlOiAnc2VxMi5iYWNrX3VzJyB3YXMgZGVjbGFyZWQgaGVyZQotfCAgICBjb2xsX3NlcSBzZXExLCBzZXEyOwotfCAgICAgICAgICAgICAgICAgICBefn5+Ci18IEluIGZpbGUgaW5jbHVkZWQgZnJvbSBzdHJjb2xsX2wuYzo0MzoKLXwgLi4vbG9jYWxlL3dlaWdodC5oOjMxOjI2OiBlcnJvcjogJ3NlcTEuYmFja191cycgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCi18ICAgIGludF9mYXN0MzJfdCBpID0gdGFibGVbKigqY3BwKSsrXTsKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn4KLXwgc3RyY29sbF9sLmM6MzA0OjEyOiBub3RlOiAnc2VxMS5iYWNrX3VzJyB3YXMgZGVjbGFyZWQgaGVyZQotfCAgICBjb2xsX3NlcSBzZXExLCBzZXEyOwotfCAgICAgICAgICAgICBefn5+Ci0KLSAgICAgICAgUGFydGlhbCBmaXggZm9yIFtCWiAjMTk0NDRdCi0gICAgICAgICogbG9jYWxlL3dlaWdodC5oOiBGaXggYnVpbGQgd2l0aCAtT3MuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL3BhdGNod29yay5vemxhYnMub3JnL3BhdGNoLzEwMTQ3NjZdCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsb2NhbGUvd2VpZ2h0LmggfCA3ICsrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9sb2NhbGUvd2VpZ2h0LmggYi9sb2NhbGUvd2VpZ2h0LmgKLWluZGV4IDdjYTgxNDk4YjIuLmQ2MDhjYTcwYmIgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvd2VpZ2h0LmgKLSsrKyBiL2xvY2FsZS93ZWlnaHQuaAotQEAgLTI4LDcgKzI4LDE0IEBAIGZpbmRpZHggKGNvbnN0IGludDMyX3QgKnRhYmxlLAotIAkgY29uc3QgdW5zaWduZWQgY2hhciAqZXh0cmEsCi0gCSBjb25zdCB1bnNpZ25lZCBjaGFyICoqY3BwLCBzaXplX3QgbGVuKQotIHsKLSsgIC8qIFdpdGggR0NDIDggd2hlbiBjb21waWxpbmcgd2l0aCAtT3MgdGhlIGNvbXBpbGVyIHdhcm5zIHRoYXQKLSsgICAgIHNlcTEuYmFja191cyBhbmQgc2VxMi5iYWNrX3VzIG1pZ2h0IGJlIHVzZWQgdW5pbml0aWFsaXplZC4KLSsgICAgIFRoaXMgdW5pbml0aWFsaXplZCB1c2UgaXMgaW1wb3NzaWJsZSBmb3IgdGhlIHNhbWUgcmVhc29uCi0rICAgICBhcyBkZXNjcmliZWQgaW4gY29tbWVudHMgaW4gbG9jYWxlL3dlaWdodHdjLmguICAqLwotKyAgRElBR19QVVNIX05FRURTX0NPTU1FTlQ7Ci0rICBESUFHX0lHTk9SRV9Pc19ORUVEU19DT01NRU5UICg4LCAiLVdtYXliZS11bmluaXRpYWxpemVkIik7Ci0gICBpbnRfZmFzdDMyX3QgaSA9IHRhYmxlWyooKmNwcCkrK107Ci0rICBESUFHX1BPUF9ORUVEU19DT01NRU5UOwotICAgY29uc3QgdW5zaWduZWQgY2hhciAqY3A7Ci0gICBjb25zdCB1bnNpZ25lZCBjaGFyICp1c3JjOwotIAotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI5LWxvY2FsZS1wcmV2ZW50LW1heWJlLXVuaW5pdGlhbGl6ZWQtZXJyb3JzLXdpdGgtT3MtQloucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjktbG9jYWxlLXByZXZlbnQtbWF5YmUtdW5pbml0aWFsaXplZC1lcnJvcnMtd2l0aC1Pcy1CWi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGMzNTlmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI5LWxvY2FsZS1wcmV2ZW50LW1heWJlLXVuaW5pdGlhbGl6ZWQtZXJyb3JzLXdpdGgtT3MtQloucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSA2Njk2M2FkODNiZGQzYjA3NTAwNmRkY2E5ZGZlMzU3YWVkMTgxZDZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFydGluIEphbnNhIDxtYXJ0aW4uamFuc2FAZ21haWwuY29tPgorRGF0ZTogTW9uLCAxNyBEZWMgMjAxOCAyMTozNjoxOCArMDAwMAorU3ViamVjdDogW1BBVENIXSBsb2NhbGU6IHByZXZlbnQgbWF5YmUtdW5pbml0aWFsaXplZCBlcnJvcnMgd2l0aCAtT3MgW0JaCisgIzE5NDQ0XQorCitGaXhlcyBmb2xsb3dpbmcgZXJyb3Igd2hlbiBidWlsZGluZyBmb3IgYWFyY2g2NCB3aXRoIC1PczoKK3wgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHN0cmNvbGxfbC5jOjQzOgorfCBzdHJjb2xsX2wuYzogSW4gZnVuY3Rpb24gJ19fc3RyY29sbF9sJzoKK3wgLi4vbG9jYWxlL3dlaWdodC5oOjMxOjI2OiBlcnJvcjogJ3NlcTIuYmFja191cycgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCit8ICAgIGludF9mYXN0MzJfdCBpID0gdGFibGVbKigqY3BwKSsrXTsKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn4KK3wgc3RyY29sbF9sLmM6MzA0OjE4OiBub3RlOiAnc2VxMi5iYWNrX3VzJyB3YXMgZGVjbGFyZWQgaGVyZQorfCAgICBjb2xsX3NlcSBzZXExLCBzZXEyOworfCAgICAgICAgICAgICAgICAgICBefn5+Cit8IEluIGZpbGUgaW5jbHVkZWQgZnJvbSBzdHJjb2xsX2wuYzo0MzoKK3wgLi4vbG9jYWxlL3dlaWdodC5oOjMxOjI2OiBlcnJvcjogJ3NlcTEuYmFja191cycgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCit8ICAgIGludF9mYXN0MzJfdCBpID0gdGFibGVbKigqY3BwKSsrXTsKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn4KK3wgc3RyY29sbF9sLmM6MzA0OjEyOiBub3RlOiAnc2VxMS5iYWNrX3VzJyB3YXMgZGVjbGFyZWQgaGVyZQorfCAgICBjb2xsX3NlcSBzZXExLCBzZXEyOworfCAgICAgICAgICAgICBefn5+CisKKyAgICAgICAgUGFydGlhbCBmaXggZm9yIFtCWiAjMTk0NDRdCisgICAgICAgICogbG9jYWxlL3dlaWdodC5oOiBGaXggYnVpbGQgd2l0aCAtT3MuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL3BhdGNod29yay5vemxhYnMub3JnL3BhdGNoLzEwMTQ3NjZdCisKK1NpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsb2NhbGUvd2VpZ2h0LmggfCA3ICsrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9sb2NhbGUvd2VpZ2h0LmggYi9sb2NhbGUvd2VpZ2h0LmgKK2luZGV4IGUwNzEyNTNmODUuLjI4ODljMzk1ZjEgMTAwNjQ0CistLS0gYS9sb2NhbGUvd2VpZ2h0LmgKKysrKyBiL2xvY2FsZS93ZWlnaHQuaAorQEAgLTI4LDcgKzI4LDE0IEBAIGZpbmRpZHggKGNvbnN0IGludDMyX3QgKnRhYmxlLAorIAkgY29uc3QgdW5zaWduZWQgY2hhciAqZXh0cmEsCisgCSBjb25zdCB1bnNpZ25lZCBjaGFyICoqY3BwLCBzaXplX3QgbGVuKQorIHsKKysgIC8qIFdpdGggR0NDIDggd2hlbiBjb21waWxpbmcgd2l0aCAtT3MgdGhlIGNvbXBpbGVyIHdhcm5zIHRoYXQKKysgICAgIHNlcTEuYmFja191cyBhbmQgc2VxMi5iYWNrX3VzIG1pZ2h0IGJlIHVzZWQgdW5pbml0aWFsaXplZC4KKysgICAgIFRoaXMgdW5pbml0aWFsaXplZCB1c2UgaXMgaW1wb3NzaWJsZSBmb3IgdGhlIHNhbWUgcmVhc29uCisrICAgICBhcyBkZXNjcmliZWQgaW4gY29tbWVudHMgaW4gbG9jYWxlL3dlaWdodHdjLmguICAqLworKyAgRElBR19QVVNIX05FRURTX0NPTU1FTlQ7CisrICBESUFHX0lHTk9SRV9Pc19ORUVEU19DT01NRU5UICg4LCAiLVdtYXliZS11bmluaXRpYWxpemVkIik7CisgICBpbnRfZmFzdDMyX3QgaSA9IHRhYmxlWyooKmNwcCkrK107CisrICBESUFHX1BPUF9ORUVEU19DT01NRU5UOworICAgY29uc3QgdW5zaWduZWQgY2hhciAqY3A7CisgICBjb25zdCB1bnNpZ25lZCBjaGFyICp1c3JjOworIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMwLUltcHJvdmUtSUZVTkMtY2hlY2stQlotMjU1MDYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzAtSW1wcm92ZS1JRlVOQy1jaGVjay1CWi0yNTUwNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2IzOThkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMwLUltcHJvdmUtSUZVTkMtY2hlY2stQlotMjU1MDYucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorRnJvbSA4N2E2OThhMjE2NDZiN2VlNjIwOTIzZWY1ZmZhOTczNTQ3MWE4ZGRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmFuZ3J1aSBTb25nIDxtYXNrcmF5QGdvb2dsZS5jb20+CitEYXRlOiBUdWUsIDQgRmViIDIwMjAgMjE6NTU6NDQgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gSW1wcm92ZSBJRlVOQyBjaGVjayBbQlogIzI1NTA2XQorCitHTlUgbGQncyBSSVNDViBwb3J0IGRvZXMgbm90IHN1cHBvcnQgSUZVTkMuIGxkIC1uby1waWUgcHJvZHVjZXMgbm8KK3JlbG9jYXRpb24gYW5kIHRoZSB0ZXN0IHBhc3NlZCBpbmNvcnJlY3RseS4gQmUgbW9yZSByaWdpZCBieSB0ZXN0aW5nCitJUkVMQVRJVkUgZXhwbGljaXRseS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2l0d2ViLmNnaT9wPWdsaWJjLmdpdDtoPTg3YTY5OGEyMTY0NmI3ZWU2MjA5MjNlZjVmZmE5NzM1NDcxYThkZGRdCitUZXN0ZWQtYnk6IEF1cmVsaWVuIEphcm5vIDxhdXJlbGllbkBhdXJlbDMyLm5ldD4KK1Jldmlld2VkLWJ5OiBBZGhlbWVydmFsIFphbmVsbGEgPGFkaGVtZXJ2YWwuemFuZWxsYUBsaW5hcm8ub3JnPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZSAgICB8IDIgKy0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IGI5NTlkMmQ5ODguLjNiOThlYzMxMmYgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTQwMzUsNyArNDAzNSw3IEBAIGlmICR7Q0MtY2N9ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIFwKKyAJICAgIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LlMgMT4mNSAyPiY1OyB0aGVuCisgICAjIERvIGEgbGluayB0byBzZWUgaWYgdGhlIGJhY2tlbmQgc3VwcG9ydHMgSUZVTkMgcmVsb2NzLgorICAgJFJFQURFTEYgLXIgY29uZnRlc3QgMT4mNQorLSAgTENfQUxMPUMgJFJFQURFTEYgLXIgY29uZnRlc3QgfCBncmVwICdubyByZWxvY2F0aW9ucycgPi9kZXYvbnVsbCB8fCB7CisrICBMQ19BTEw9QyAkUkVBREVMRiAtV3IgY29uZnRlc3QgfCBncmVwIC1xICdJUkVMQVRJVkVcfFJfU1BBUkNfSk1QX0lSRUwnICYmIHsKKyAgICAgbGliY19jdl9sZF9nbnVfaW5kaXJlY3RfZnVuY3Rpb249eWVzCisgICB9CisgZmkKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDQ5YjkwMGMxZWQuLmUyMDAzNGYzMDEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTY0OSw3ICs2NDksNyBAQCBpZiAke0NDLWNjfSAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBcCisgCSAgICAtbyBjb25mdGVzdCBjb25mdGVzdC5TIDE+JkFTX01FU1NBR0VfTE9HX0ZEIDI+JkFTX01FU1NBR0VfTE9HX0ZEOyB0aGVuCisgICAjIERvIGEgbGluayB0byBzZWUgaWYgdGhlIGJhY2tlbmQgc3VwcG9ydHMgSUZVTkMgcmVsb2NzLgorICAgJFJFQURFTEYgLXIgY29uZnRlc3QgMT4mQVNfTUVTU0FHRV9MT0dfRkQKKy0gIExDX0FMTD1DICRSRUFERUxGIC1yIGNvbmZ0ZXN0IHwgZ3JlcCAnbm8gcmVsb2NhdGlvbnMnID4vZGV2L251bGwgfHwgeworKyAgTENfQUxMPUMgJFJFQURFTEYgLVdyIGNvbmZ0ZXN0IHwgZ3JlcCAtcSAnSVJFTEFUSVZFXHxSX1NQQVJDX0pNUF9JUkVMJyAmJiB7CisgICAgIGxpYmNfY3ZfbGRfZ251X2luZGlyZWN0X2Z1bmN0aW9uPXllcworICAgfQorIGZpCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzEtRml4LWJ1aWxkLXdpdGgtR0NDLTEwLXdoZW4tbG9uZy1kb3VibGUtZG91YmxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMxLUZpeC1idWlsZC13aXRoLUdDQy0xMC13aGVuLWxvbmctZG91YmxlLWRvdWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjYyMjk2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMxLUZpeC1idWlsZC13aXRoLUdDQy0xMC13aGVuLWxvbmctZG91YmxlLWRvdWJsZS5wYXRjaApAQCAtMCwwICsxLDE3MCBAQAorRnJvbSA0OTM0OGJlYWZlOWJhMTUwYzliZDQ4NTk1YjNmMzcyMjk5YmRkYmIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9zZXBoIE15ZXJzIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KK0RhdGU6IFR1ZSwgMTcgTWFyIDIwMjAgMjI6NTc6NDIgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggR0NDIDEwIHdoZW4gbG9uZyBkb3VibGUgPSBkb3VibGUuCisKK09uIHBsYXRmb3JtcyB3aGVyZSBsb25nIGRvdWJsZSBoYXMgdGhlIHNhbWUgQUJJIGFzIGRvdWJsZSwgZ2xpYmMKK2RlZmluZXMgbG9uZyBkb3VibGUgZnVuY3Rpb25zIGFzIGFsaWFzZXMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGRvdWJsZQorZnVuY3Rpb25zLiAgVGhlIGRlY2xhcmF0aW9ucyBvZiB0aG9zZSBmdW5jdGlvbnMgaW4gPG1hdGguaD4gYXJlCitkaXNhYmxlZCB0byBhdm9pZCBwcm9ibGVtcyB3aXRoIGFsaWFzZXMgaGF2aW5nIGluY29tcGF0aWJsZSB0eXBlcywgYnV0CitHQ0MgMTAgbm93IGdpdmVzIGVycm9ycyBmb3IgaW5jb21wYXRpYmxlIHR5cGVzIHdoZW4gdGhlIGxvbmcgZG91YmxlCitmdW5jdGlvbiBpcyBrbm93biB0byBHQ0MgYXMgYSBidWlsdC1pbiBmdW5jdGlvbiwgbm90IGp1c3Qgd2hlbiB0aGVyZQoraXMgYW4gaW5jb21wYXRpYmxlIGhlYWRlciBkZWNsYXJhdGlvbi4KKworVGhpcyBwYXRjaCBmaXhlcyB0aG9zZSBlcnJvcnMgYnkgdXNpbmcgYXBwcm9wcmlhdGUKKy1mbm8tYnVpbHRpbi08ZnVuY3Rpb24+IG9wdGlvbnMgdG8gY29tcGlsZSB0aGUgZG91YmxlIGZ1bmN0aW9ucy4gIFRoZQorbGlzdCBvZiBDRkxBR1MtKiBzZXR0aW5ncyBpcyBhbiBhcHByb3ByaWF0ZWx5IGFkYXB0ZWQgdmVyc2lvbiBvZiB0aGF0CitpbiBzeXNkZXBzL2llZWU3NTQvbGRibC1vcHQvTWFrZWZpbGUgdXNlZCB0aGVyZSBmb3IgYnVpbGRpbmcgbmxkYmwtKi5jCitmaWxlczsgaW4gcGFydGljdWxhciwgdGhlIG9wdGlvbnMgYXJlIHVzZWQgZXZlbiBpZiBHQ0MgZG9lcyBub3QKK2N1cnJlbnRseSBoYXZlIGEgYnVpbHQtaW4gZnVuY3Rpb24gb2YgYSBnaXZlbiBmdW5jdGlvbiwgc28gdGhhdCBhZGRpbmcKK3N1Y2ggYSBidWlsdC1pbiBmdW5jdGlvbiBpbiBmdXR1cmUgd2lsbCBub3QgYnJlYWsgdGhlIGdsaWJjIGJ1aWxkLgorVGh1cywgdmFyaW91cyBvZiB0aGUgQ0ZMQUdTLSogc2V0dGluZ3MgYXJlIG9ubHkgZm9yIGZ1dHVyZS1wcm9vZmluZworYW5kIG1heSBub3QgY3VycmVudGx5IGJlIG5lZWRlZCAoYW5kIGl0J3MgcG9zc2libGUgc29tZSBjb3VsZCBiZQoraXJyZWxldmFudCBmb3Igb3RoZXIgcmVhc29ucykuCisKK1Rlc3RlZCB3aXRoIGJ1aWxkLW1hbnktZ2xpYmNzLnB5IGZvciBhcm0tbGludXgtZ251ZWFiaSAoY29tcGlsZXJzIGFuZAorZ2xpYmNzIGJ1aWxkcyksIHdoZXJlIGl0IGZpeGVzIHRoZSBidWlsZCB0aGF0IHByZXZpb3VzbHkgZmFpbGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD1nbGliYy5naXQ7YT1jb21taXQ7aD00OTM0OGJlYWZlOWJhMTUwYzliZDQ4NTk1YjNmMzcyMjk5YmRkYmIwXQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworLS0tCisgbWF0aC9NYWtlZmlsZSB8IDEyMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMjIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbWF0aC9NYWtlZmlsZSBiL21hdGgvTWFrZWZpbGUKK2luZGV4IDg0YThiOTRjNzQuLjBhNWE0MDQzMGUgMTAwNjQ0CistLS0gYS9tYXRoL01ha2VmaWxlCisrKysgYi9tYXRoL01ha2VmaWxlCitAQCAtNjUwLDYgKzY1MCwxMjggQEAgaWZuZXEgKCQobG9uZy1kb3VibGUtZmN0cykseWVzKQorICMgV2Ugd29uJ3QgY29tcGlsZSB0aGUgYGxvbmcgZG91YmxlJyBjb2RlIGF0IGFsbC4gIFRlbGwgdGhlIGBkb3VibGUnIGNvZGUKKyAjIHRvIGRlZmluZSBhbGlhc2VzIGZvciB0aGUgYEZVTkNsJyBuYW1lcy4KKyBtYXRoLUNQUEZMQUdTICs9IC1ETk9fTE9OR19ET1VCTEUKKysjIEdDQyAxMCBkaWFnbm9zZXMgYWxpYXNlcyB3aXRoIHR5cGVzIGNvbmZsaWN0aW5nIHdpdGggYnVpbHQtaW4KKysjIGZ1bmN0aW9ucy4KKytDRkxBR1Mtd19hY29zLmMgKz0gLWZuby1idWlsdGluLWFjb3NsCisrQ0ZMQUdTLXdfYWNvc2guYyArPSAtZm5vLWJ1aWx0aW4tYWNvc2hsCisrQ0ZMQUdTLXdfYXNpbi5jICs9IC1mbm8tYnVpbHRpbi1hc2lubAorK0NGTEFHUy1zX2FzaW5oLmMgKz0gLWZuby1idWlsdGluLWFzaW5obAorK0NGTEFHUy1zX2F0YW4uYyArPSAtZm5vLWJ1aWx0aW4tYXRhbmwKKytDRkxBR1Mtd19hdGFuMi5jICs9IC1mbm8tYnVpbHRpbi1hdGFuMmwKKytDRkxBR1Mtd19hdGFuaC5jICs9IC1mbm8tYnVpbHRpbi1hdGFuaGwKKytDRkxBR1Mtc19jYWJzLmMgKz0gLWZuby1idWlsdGluLWNhYnNsCisrQ0ZMQUdTLXNfY2Fjb3MuYyArPSAtZm5vLWJ1aWx0aW4tY2Fjb3NsCisrQ0ZMQUdTLXNfY2Fjb3NoLmMgKz0gLWZuby1idWlsdGluLWNhY29zaGwKKytDRkxBR1Mtc19jYW5vbmljYWxpemUuYyArPSAtZm5vLWJ1aWx0aW4tY2Fub25pY2FsaXplbAorK0NGTEFHUy1zX2NhcmcuYyArPSAtZm5vLWJ1aWx0aW4tY2FyZ2wKKytDRkxBR1Mtc19jYXNpbi5jICs9IC1mbm8tYnVpbHRpbi1jYXNpbmwKKytDRkxBR1Mtc19jYXNpbmguYyArPSAtZm5vLWJ1aWx0aW4tY2FzaW5obAorK0NGTEFHUy1zX2NhdGFuLmMgKz0gLWZuby1idWlsdGluLWNhdGFubAorK0NGTEFHUy1zX2NhdGFuaC5jICs9IC1mbm8tYnVpbHRpbi1jYXRhbmhsCisrQ0ZMQUdTLXNfY2JydC5jICs9IC1mbm8tYnVpbHRpbi1jYnJ0bAorK0NGTEFHUy1zX2Njb3MuYyArPSAtZm5vLWJ1aWx0aW4tY2Nvc2wKKytDRkxBR1Mtc19jY29zaC5jICs9IC1mbm8tYnVpbHRpbi1jY29zaGwKKytDRkxBR1Mtc19jZWlsLmMgKz0gLWZuby1idWlsdGluLWNlaWxsCisrQ0ZMQUdTLXNfY2V4cC5jICs9IC1mbm8tYnVpbHRpbi1jZXhwbAorK0NGTEFHUy1zX2NpbWFnLmMgKz0gLWZuby1idWlsdGluLWNpbWFnbAorK0NGTEFHUy1zX2Nsb2cuYyArPSAtZm5vLWJ1aWx0aW4tY2xvZ2wKKytDRkxBR1Mtc19jbG9nMTAuYyArPSAtZm5vLWJ1aWx0aW4tY2xvZzEwbAorK0NGTEFHUy1zX2NvbmouYyArPSAtZm5vLWJ1aWx0aW4tY29uamwKKytDRkxBR1Mtc19jb3B5c2lnbi5jICs9IC1mbm8tYnVpbHRpbi1jb3B5c2lnbmwKKytDRkxBR1Mtc19jb3MuYyArPSAtZm5vLWJ1aWx0aW4tY29zbAorK0NGTEFHUy13X2Nvc2guYyArPSAtZm5vLWJ1aWx0aW4tY29zaGwKKytDRkxBR1Mtc19jcG93LmMgKz0gLWZuby1idWlsdGluLWNwb3dsCisrQ0ZMQUdTLXNfY3Byb2ouYyArPSAtZm5vLWJ1aWx0aW4tY3Byb2psCisrQ0ZMQUdTLXNfY3JlYWwuYyArPSAtZm5vLWJ1aWx0aW4tY3JlYWxsCisrQ0ZMQUdTLXNfY3Npbi5jICs9IC1mbm8tYnVpbHRpbi1jc2lubAorK0NGTEFHUy1zX2NzaW5oLmMgKz0gLWZuby1idWlsdGluLWNzaW5obAorK0NGTEFHUy1zX2NzcXJ0LmMgKz0gLWZuby1idWlsdGluLWNzcXJ0bAorK0NGTEFHUy1zX2N0YW4uYyArPSAtZm5vLWJ1aWx0aW4tY3RhbmwKKytDRkxBR1Mtc19jdGFuaC5jICs9IC1mbm8tYnVpbHRpbi1jdGFuaGwKKytDRkxBR1Mtc19kYWRkLmMgKz0gLWZuby1idWlsdGluLWRhZGRsCisrQ0ZMQUdTLXNfZGRpdi5jICs9IC1mbm8tYnVpbHRpbi1kZGl2bAorK0NGTEFHUy1zX2RtdWwuYyArPSAtZm5vLWJ1aWx0aW4tZG11bGwKKytDRkxBR1Mtc19kc3ViLmMgKz0gLWZuby1idWlsdGluLWRzdWJsCisrQ0ZMQUdTLXNfZXJmLmMgKz0gLWZuby1idWlsdGluLWVyZmwKKytDRkxBR1Mtc19lcmZjLmMgKz0gLWZuby1idWlsdGluLWVyZmNsCisrQ0ZMQUdTLWVfZXhwLmMgKz0gLWZuby1idWlsdGluLWV4cGwKKytDRkxBR1Mtd19leHAxMC5jICs9IC1mbm8tYnVpbHRpbi1leHAxMGwKKytDRkxBR1MtZV9leHAyLmMgKz0gLWZuby1idWlsdGluLWV4cDJsCisrQ0ZMQUdTLXNfZXhwbTEuYyArPSAtZm5vLWJ1aWx0aW4tZXhwbTFsCisrQ0ZMQUdTLXNfZmFicy5jICs9IC1mbm8tYnVpbHRpbi1mYWJzbAorK0NGTEFHUy1zX2ZhZGQuYyArPSAtZm5vLWJ1aWx0aW4tZmFkZGwKKytDRkxBR1Mtc19mZGltLmMgKz0gLWZuby1idWlsdGluLWZkaW1sCisrQ0ZMQUdTLXNfZmRpdi5jICs9IC1mbm8tYnVpbHRpbi1mZGl2bAorK0NGTEFHUy1zX2Zpbml0ZS5jICs9IC1mbm8tYnVpbHRpbi1maW5pdGVsCisrQ0ZMQUdTLXNfZmxvb3IuYyArPSAtZm5vLWJ1aWx0aW4tZmxvb3JsCisrQ0ZMQUdTLXNfZm1hLmMgKz0gLWZuby1idWlsdGluLWZtYWwKKytDRkxBR1Mtc19mbWF4LmMgKz0gLWZuby1idWlsdGluLWZtYXhsCisrQ0ZMQUdTLXNfZm1heG1hZy5jICs9IC1mbm8tYnVpbHRpbi1mbWF4bWFnbAorK0NGTEFHUy1zX2ZtaW4uYyArPSAtZm5vLWJ1aWx0aW4tZm1pbmwKKytDRkxBR1Mtc19mbWlubWFnLmMgKz0gLWZuby1idWlsdGluLWZtaW5tYWdsCisrQ0ZMQUdTLXdfZm1vZC5jICs9IC1mbm8tYnVpbHRpbi1mbW9kbAorK0NGTEFHUy1zX2ZtdWwuYyArPSAtZm5vLWJ1aWx0aW4tZm11bGwKKytDRkxBR1Mtc19mcmV4cC5jICs9IC1mbm8tYnVpbHRpbi1mcmV4cGwKKytDRkxBR1Mtc19mcm9tZnAuYyArPSAtZm5vLWJ1aWx0aW4tZnJvbWZwbAorK0NGTEFHUy1zX2Zyb21mcHguYyArPSAtZm5vLWJ1aWx0aW4tZnJvbWZweGwKKytDRkxBR1Mtc19mc3ViLmMgKz0gLWZuby1idWlsdGluLWZzdWJsCisrQ0ZMQUdTLXNfZ2FtbWEuYyArPSAtZm5vLWJ1aWx0aW4tZ2FtbWFsCisrQ0ZMQUdTLXNfZ2V0cGF5bG9hZC5jICs9IC1mbm8tYnVpbHRpbi1nZXRwYXlsb2FkbAorK0NGTEFHUy13X2h5cG90LmMgKz0gLWZuby1idWlsdGluLWh5cG90bAorK0NGTEFHUy13X2lsb2diLmMgKz0gLWZuby1idWlsdGluLWlsb2dibAorK0NGTEFHUy1zX2lzaW5mLmMgKz0gLWZuby1idWlsdGluLWlzaW5mbAorK0NGTEFHUy1zX2lzbmFuLmMgKz0gLWZuby1idWlsdGluLWlzbmFubAorK0NGTEFHUy13X2owLmMgKz0gLWZuby1idWlsdGluLWowbAorK0NGTEFHUy13X2oxLmMgKz0gLWZuby1idWlsdGluLWoxbAorK0NGTEFHUy13X2puLmMgKz0gLWZuby1idWlsdGluLWpubAorK0NGTEFHUy1zX2xkZXhwLmMgKz0gLWZuby1idWlsdGluLWxkZXhwbAorK0NGTEFHUy13X2xnYW1tYS5jICs9IC1mbm8tYnVpbHRpbi1sZ2FtbWFsCisrQ0ZMQUdTLXdfbGdhbW1hX3IuYyArPSAtZm5vLWJ1aWx0aW4tbGdhbW1hbF9yCisrQ0ZMQUdTLXdfbGxvZ2IuYyArPSAtZm5vLWJ1aWx0aW4tbGxvZ2JsCisrQ0ZMQUdTLXNfbGxyaW50LmMgKz0gLWZuby1idWlsdGluLWxscmludGwKKytDRkxBR1Mtc19sbHJvdW5kLmMgKz0gLWZuby1idWlsdGluLWxscm91bmRsCisrQ0ZMQUdTLWVfbG9nLmMgKz0gLWZuby1idWlsdGluLWxvZ2wKKytDRkxBR1Mtd19sb2cxMC5jICs9IC1mbm8tYnVpbHRpbi1sb2cxMGwKKytDRkxBR1Mtd19sb2cxcC5jICs9IC1mbm8tYnVpbHRpbi1sb2cxcGwKKytDRkxBR1MtZV9sb2cyLmMgKz0gLWZuby1idWlsdGluLWxvZzJsCisrQ0ZMQUdTLXNfbG9nYi5jICs9IC1mbm8tYnVpbHRpbi1sb2dibAorK0NGTEFHUy1zX2xyaW50LmMgKz0gLWZuby1idWlsdGluLWxyaW50bAorK0NGTEFHUy1zX2xyb3VuZC5jICs9IC1mbm8tYnVpbHRpbi1scm91bmRsCisrQ0ZMQUdTLXNfbW9kZi5jICs9IC1mbm8tYnVpbHRpbi1tb2RmbAorK0NGTEFHUy1zX25hbi5jICs9IC1mbm8tYnVpbHRpbi1uYW5sCisrQ0ZMQUdTLXNfbmVhcmJ5aW50LmMgKz0gLWZuby1idWlsdGluLW5lYXJieWludGwKKytDRkxBR1Mtc19uZXh0YWZ0ZXIuYyArPSAtZm5vLWJ1aWx0aW4tbmV4dGFmdGVybAorK0NGTEFHUy1zX25leHRkb3duLmMgKz0gLWZuby1idWlsdGluLW5leHRkb3dubAorK0NGTEFHUy1zX25leHR0b3dhcmQuYyArPSAtZm5vLWJ1aWx0aW4tbmV4dHRvd2FyZCAtZm5vLWJ1aWx0aW4tbmV4dHRvd2FyZGwKKytDRkxBR1Mtc19uZXh0dG93YXJkZi5jICs9IC1mbm8tYnVpbHRpbi1uZXh0dG93YXJkZgorK0NGTEFHUy1zX25leHR1cC5jICs9IC1mbm8tYnVpbHRpbi1uZXh0dXBsCisrQ0ZMQUdTLWVfcG93LmMgKz0gLWZuby1idWlsdGluLXBvd2wKKytDRkxBR1Mtd19yZW1haW5kZXIuYyArPSAtZm5vLWJ1aWx0aW4tcmVtYWluZGVybCAtZm5vLWJ1aWx0aW4tZHJlbWwKKytDRkxBR1Mtc19yZW1xdW8uYyArPSAtZm5vLWJ1aWx0aW4tcmVtcXVvbAorK0NGTEFHUy1zX3JpbnQuYyArPSAtZm5vLWJ1aWx0aW4tcmludGwKKytDRkxBR1Mtc19yb3VuZC5jICs9IC1mbm8tYnVpbHRpbi1yb3VuZGwKKytDRkxBR1Mtc19yb3VuZGV2ZW4uYyArPSAtZm5vLWJ1aWx0aW4tcm91bmRldmVubAorK0NGTEFHUy13X3NjYWxiLmMgKz0gLWZuby1idWlsdGluLXNjYWxibAorK0NGTEFHUy13X3NjYWxibG4uYyArPSAtZm5vLWJ1aWx0aW4tc2NhbGJsbmwKKytDRkxBR1Mtc19zY2FsYm4uYyArPSAtZm5vLWJ1aWx0aW4tc2NhbGJubAorK0NGTEFHUy1zX3NldHBheWxvYWQuYyArPSAtZm5vLWJ1aWx0aW4tc2V0cGF5bG9hZGwKKytDRkxBR1Mtc19zZXRwYXlsb2Fkc2lnLmMgKz0gLWZuby1idWlsdGluLXNldHBheWxvYWRzaWdsCisrQ0ZMQUdTLXNfc2lnbmlmaWNhbmQuYyArPSAtZm5vLWJ1aWx0aW4tc2lnbmlmaWNhbmRsCisrQ0ZMQUdTLXNfc2luLmMgKz0gLWZuby1idWlsdGluLXNpbmwKKytDRkxBR1Mtc19zaW5jb3MuYyArPSAtZm5vLWJ1aWx0aW4tc2luY29zbAorK0NGTEFHUy13X3NpbmguYyArPSAtZm5vLWJ1aWx0aW4tc2luaGwKKytDRkxBR1Mtd19zcXJ0LmMgKz0gLWZuby1idWlsdGluLXNxcnRsCisrQ0ZMQUdTLXNfdGFuLmMgKz0gLWZuby1idWlsdGluLXRhbmwKKytDRkxBR1Mtc190YW5oLmMgKz0gLWZuby1idWlsdGluLXRhbmhsCisrQ0ZMQUdTLXdfdGdhbW1hLmMgKz0gLWZuby1idWlsdGluLXRnYW1tYWwKKytDRkxBR1Mtc190b3RhbG9yZGVyLmMgKz0gLWZuby1idWlsdGluLXRvdGFsb3JkZXJsCisrQ0ZMQUdTLXNfdG90YWxvcmRlcm1hZy5jICs9IC1mbm8tYnVpbHRpbi10b3RhbG9yZGVybWFnbAorK0NGTEFHUy1zX3RydW5jLmMgKz0gLWZuby1idWlsdGluLXRydW5jbAorK0NGTEFHUy1zX3Vmcm9tZnAuYyArPSAtZm5vLWJ1aWx0aW4tdWZyb21mcGwKKytDRkxBR1Mtc191ZnJvbWZweC5jICs9IC1mbm8tYnVpbHRpbi11ZnJvbWZweGwKKytDRkxBR1Mtc195MC5jICs9IC1mbm8tYnVpbHRpbi15MGwKKytDRkxBR1Mtc195MS5jICs9IC1mbm8tYnVpbHRpbi15MWwKKytDRkxBR1Mtc195bi5jICs9IC1mbm8tYnVpbHRpbi15bmwKKyBlbmRpZgorIAorICMgVGhlc2UgZmlsZXMgcXVpZXQgc05hTnMgaW4gYSB3YXkgdGhhdCBpcyBvcHRpbWl6ZWQgYXdheSB3aXRob3V0CistLSAKKzIuMjYuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDIwLTEwMDI5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAyMC0xMDAyOS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmExNWY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAyMC0xMDAyOS5wYXRjaApAQCAtMCwwICsxLDEyOCBAQAorRnJvbSBjZTI2NWVjNWJjMjVlYzM1ZmJhNTM4MDdhYmFjMWIwYzg0Njk4OTVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9zZXBoIE15ZXJzIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KK0RhdGU6IFdlZCwgMTIgRmViIDIwMjAgMjM6MzE6NTYgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gQXZvaWQgbGRibC05NiBzdGFjayBjb3JydXB0aW9uIGZyb20gcmFuZ2UgcmVkdWN0aW9uIG9mCisKKyBwc2V1ZG8temVybyAoYnVnIDI1NDg3KS4KKworQnVnIDI1NDg3IHJlcG9ydHMgc3RhY2sgY29ycnVwdGlvbiBpbiBsZGJsLTk2IHNpbmwgb24gYSBwc2V1ZG8temVybworYXJndW1lbnQgKGFuIHJlcHJlc2VudGF0aW9uIHdoZXJlIGFsbCB0aGUgc2lnbmlmaWNhbmQgYml0cywgaW5jbHVkaW5nCit0aGUgZXhwbGljaXQgaGlnaCBiaXQsIGFyZSB6ZXJvLCBidXQgdGhlIGV4cG9uZW50IGlzIG5vdCB6ZXJvLCB3aGljaAoraXMgbm90IGEgdmFsaWQgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBsb25nIGRvdWJsZSB0eXBlKS4KKworQWx0aG91Z2ggdGhpcyBpcyBub3QgYSB2YWxpZCBsb25nIGRvdWJsZSByZXByZXNlbnRhdGlvbiwgZXhpc3RpbmcKK3ByYWN0aWNlIGluIHRoaXMgYXJlYSAoc2VlIGJ1ZyA0NTg2LCBvcmlnaW5hbGx5IG1hcmtlZCBpbnZhbGlkIGJ1dAorc3Vic2VxdWVudGx5IGZpeGVkKSBpcyB0aGF0IHdlIHN0aWxsIHNlZWsgdG8gYXZvaWQgaW52YWxpZCBtZW1vcnkKK2FjY2Vzc2VzIGFzIGEgcmVzdWx0LCBpbiBjYXNlIG9mIHByb2dyYW1zIHRoYXQgdHJlYXQgYXJiaXRyYXJ5IGJpbmFyeQorZGF0YSBhcyBsb25nIGRvdWJsZSByZXByZXNlbnRhdGlvbnMsIGFsdGhvdWdoIHRoZSBpbnZhbGlkCityZXByZXNlbnRhdGlvbnMgb2YgdGhlIGxkYmwtOTYgZm9ybWF0IGRvIG5vdCBuZWVkIHRvIGJlIGNvbnNpc3RlbnRseQoraGFuZGxlZCB0aGUgc2FtZSBhcyBhbnkgcGFydGljdWxhciB2YWxpZCByZXByZXNlbnRhdGlvbi4KKworVGhpcyBwYXRjaCBtYWtlcyB0aGUgcmFuZ2UgcmVkdWN0aW9uIGRldGVjdCBwc2V1ZG8temVybyBhbmQgdW5ub3JtYWwKK3JlcHJlc2VudGF0aW9ucyB0aGF0IHdvdWxkIG90aGVyd2lzZSBnbyB0byBfX2tlcm5lbF9yZW1fcGlvMiwgYW5kCityZXR1cm5zIGEgTmFOIGZvciB0aGVtIGluc3RlYWQgb2YgY29udGludWluZyB3aXRoIHRoZSByYW5nZSByZWR1Y3Rpb24KK3Byb2Nlc3MuICAoUHNldWRvLXplcm8gYW5kIHVubm9ybWFsIHJlcHJlc2VudGF0aW9ucyB3aG9zZSB1bmJpYXNlZAorZXhwb25lbnQgaXMgbGVzcyB0aGFuIC0xIGhhdmUgYWxyZWFkeSBiZWVuIHNhZmVseSByZXR1cm5lZCBmcm9tIHRoZQorZnVuY3Rpb24gYmVmb3JlIHRoaXMgcG9pbnQgd2l0aG91dCBnb2luZyB0aHJvdWdoIHRoZSByZXN0IG9mIHJhbmdlCityZWR1Y3Rpb24uKSAgUHNldWRvLXplcm8gcmVwcmVzZW50YXRpb25zIHdvdWxkIHByZXZpb3VzbHkgcmVzdWx0IGluCit0aGUgdmFsdWUgcGFzc2VkIHRvIF9fa2VybmVsX3JlbV9waW8yIGJlaW5nIGFsbC16ZXJvLCB3aGljaCBpcworZGVmaW5pdGVseSB1bnNhZmU7IHVubm9ybWFsIHJlcHJlc2VudGF0aW9ucyB3b3VsZCBwcmV2aW91c2x5IHJlc3VsdCBpbgorYSB2YWx1ZSBwYXNzZWQgd2hvc2UgaGlnaCBiaXQgaXMgemVybywgd2hpY2ggbWlnaHQgd2VsbCBiZSB1bnNhZmUKK3NpbmNlIHRoYXQgaXMgbm90IGEgZm9ybSBvZiBpbnB1dCBleHBlY3RlZCBieSBfX2tlcm5lbF9yZW1fcGlvMi4KKworVGVzdGVkIGZvciB4ODZfNjQuCisKK0NWRTogQ1ZFLTIwMjAtMTAwMjkKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0L2dpdHdlYi5jZ2k/cD1nbGliYy5naXQ7CithPXBhdGNoO2g9OTMzMzQ5ODc5NGNkZTFkNWNjYTUxOGJhZGY3OTUzM2EyNDExNGI2Zl0KK1NpZ25lZC1vZmYtYnk6IFpoaXhpb25nIENoaSA8emhpeGlvbmcuY2hpQHdpbmRyaXZlci5jb20+CisKKy0tLQorIHN5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L01ha2VmaWxlICAgICAgICAgICB8ICAzICsrLQorIHN5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L2VfcmVtX3BpbzJsLmMgICAgICB8IDEyICsrKysrKysrKworIHN5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L3Rlc3Qtc2lubC1wc2V1ZG8uYyB8IDQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL2llZWU3NTQvbGRibC05Ni90ZXN0LXNpbmwtcHNldWRvLmMKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L01ha2VmaWxlIGIvc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvTWFrZWZpbGUKK2luZGV4IGIxMDMyNTQuLjA1MmMxYzcgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2llZWU3NTQvbGRibC05Ni9NYWtlZmlsZQorKysrIGIvc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvTWFrZWZpbGUKK0BAIC0xNyw1ICsxNyw2IEBACisgIyA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIAorIGlmZXEgKCQoc3ViZGlyKSxtYXRoKQorLXRlc3RzICs9IHRlc3QtY2Fub25pY2FsLWxkYmwtOTYgdGVzdC10b3RhbG9yZGVybC1sZGJsLTk2CisrdGVzdHMgKz0gdGVzdC1jYW5vbmljYWwtbGRibC05NiB0ZXN0LXRvdGFsb3JkZXJsLWxkYmwtOTYgdGVzdC1zaW5sLXBzZXVkbworK0NGTEFHUy10ZXN0LXNpbmwtcHNldWRvLmMgKz0gLWZzdGFjay1wcm90ZWN0b3ItYWxsCisgZW5kaWYKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2llZWU3NTQvbGRibC05Ni9lX3JlbV9waW8ybC5jIGIvc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvZV9yZW1fcGlvMmwuYworaW5kZXggODA1ZGUyMi4uMWFlY2NiNCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L2VfcmVtX3BpbzJsLmMKKysrKyBiL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L2VfcmVtX3BpbzJsLmMKK0BAIC0yMTAsNiArMjEwLDE4IEBAIF9faWVlZTc1NF9yZW1fcGlvMmwgKGxvbmcgZG91YmxlIHgsIGxvbmcgZG91YmxlICp5KQorICAgICAgIHJldHVybiAwOworICAgICB9CisgCisrICBpZiAoKGkwICYgMHg4MDAwMDAwMCkgPT0gMCkKKysgICAgeworKyAgICAgIC8qIFBzZXVkby16ZXJvIGFuZCB1bm5vcm1hbCByZXByZXNlbnRhdGlvbnMgYXJlIG5vdCB2YWxpZAorKwkgcmVwcmVzZW50YXRpb25zIG9mIGxvbmcgZG91YmxlLiAgV2UgbmVlZCB0byBhdm9pZCBzdGFjaworKwkgY29ycnVwdGlvbiBpbiBfX2tlcm5lbF9yZW1fcGlvMiwgd2hpY2ggZXhwZWN0cyBpbnB1dCBpbiBhCisrCSBwYXJ0aWN1bGFyIG5vcm1hbCBmb3JtLCBidXQgdGhvc2UgcmVwcmVzZW50YXRpb25zIGRvIG5vdCBuZWVkCisrCSB0byBiZSBjb25zaXN0ZW50bHkgaGFuZGxlZCBsaWtlIGFueSBwYXJ0aWN1bGFyIGZsb2F0aW5nLXBvaW50CisrCSB2YWx1ZS4gICovCisrICAgICAgeVsxXSA9IHlbMF0gPSBfX2J1aWx0aW5fbmFubCAoIiIpOworKyAgICAgIHJldHVybiAwOworKyAgICB9CisrCisgICAvKiBTcGxpdCB0aGUgNjQgYml0cyBvZiB0aGUgbWFudGlzc2EgaW50byB0aHJlZSAyNC1iaXQgaW50ZWdlcnMKKyAgICAgIHN0b3JlZCBpbiBhIGRvdWJsZSBhcnJheS4gICovCisgICBleHAgPSBqMCAtIDIzOworZGlmZiAtLWdpdCBhL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L3Rlc3Qtc2lubC1wc2V1ZG8uYyBiL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L3Rlc3Qtc2lubC1wc2V1ZG8uYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmY1OWI5NzcKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L3Rlc3Qtc2lubC1wc2V1ZG8uYworQEAgLTAsMCArMSw0MSBAQAorKy8qIFRlc3Qgc2lubCBmb3IgcHNldWRvLXplcm9zIGFuZCB1bm5vcm1hbHMgZm9yIGxkYmwtOTYgKGJ1ZyAyNTQ4NykuCisrICAgQ29weXJpZ2h0IChDKSAyMDIwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgc2VlCisrICAgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPG1hdGguaD4KKysjaW5jbHVkZSA8bWF0aF9sZGJsLmg+CisrI2luY2x1ZGUgPHN0ZGludC5oPgorKworK3N0YXRpYyBpbnQKKytkb190ZXN0ICh2b2lkKQorK3sKKysgIGZvciAoaW50IGkgPSAwOyBpIDwgNjQ7IGkrKykKKysgICAgeworKyAgICAgIHVpbnQ2NF90IHNpZyA9IGkgPT0gNjMgPyAwIDogMVVMTCA8PCBpOworKyAgICAgIGxvbmcgZG91YmxlIGxkOworKyAgICAgIFNFVF9MRE9VQkxFX1dPUkRTIChsZCwgMHg0MTQxLAorKwkJCSBzaWcgPj4gMzIsIHNpZyAmIDB4ZmZmZmZmZmZVTEwpOworKyAgICAgIC8qIFRoZSByZXF1aXJlbWVudCBpcyB0aGF0IG5vIHN0YWNrIG92ZXJmbG93IG9jY3VycyB3aGVuIHRoZQorKwkgcHNldWRvLXplcm8gb3IgdW5ub3JtYWwgZ29lcyB0aHJvdWdoIHJhbmdlIHJlZHVjdGlvbi4gICovCisrICAgICAgdm9sYXRpbGUgbG9uZyBkb3VibGUgbGRyOworKyAgICAgIGxkciA9IHNpbmwgKGxkKTsKKysgICAgICAodm9pZCkgbGRyOworKyAgICB9CisrICByZXR1cm4gMDsKKyt9CisrCisrI2luY2x1ZGUgPHN1cHBvcnQvdGVzdC1kcml2ZXIuYz4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvYWRkLWNyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvYWRkLWNyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ3MTEyMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL2FkZC1jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTE1ICswLDAgQEAKLS0tLQotIGxvY2FsZS9wcm9ncmFtcy9jLmggICAgICAgICAgICAgICAgICAgICAgICB8ICA0MDcgKysrKysrKysrKysrKysrKysrKysrKwotIGxvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYyB8ICA1MjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBsb2NhbGUvcHJvZ3JhbXMveGFsbG9jLmggICAgICAgICAgICAgICAgICAgfCAgMTI5ICsrKysrKysKLSBsb2NhbGVkZWYvTWFrZWZpbGUuaW4gICAgICAgICAgICAgICAgICAgICAgfCAgICA4IAotIDQgZmlsZXMgY2hhbmdlZCwgMTA3MSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLS0tLSAvZGV2L251bGwKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYwotQEAgLTAsMCArMSw1MjggQEAKLSsvKgotKyAqIGhhcmRsaW5rIC0gY29uc29saWRhdGUgZHVwbGljYXRlIGZpbGVzIHZpYSBoYXJkbGlua3MKLSsgKgotKyAqIENvcHlyaWdodCAoQykgMjAxOCBSZWQgSGF0LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICogV3JpdHRlbiBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPgotKyAqCi0rICogQ29weXJpZ2h0IChDKSAyMDE5IEthcmVsIFphayA8a3pha0ByZWRoYXQuY29tPgotKyAqCi0rICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsgKgotKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdvdWxkIGJlIHVzZWZ1bCwKLSsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAqCi0rICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotKyAqIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCi0rICovCi0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8Z2V0b3B0Lmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgotKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8ZGlyZW50Lmg+Ci0rI2luY2x1ZGUgPGZjbnRsLmg+Ci0rI2luY2x1ZGUgPGVycm5vLmg+Ci0rI2lmZGVmIEhBVkVfUENSRQotKyMgZGVmaW5lIFBDUkUyX0NPREVfVU5JVF9XSURUSCA4Ci0rIyBpbmNsdWRlIDxwY3JlMi5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlICJjLmgiCi0rI2luY2x1ZGUgInhhbGxvYy5oIgotKyNpbmNsdWRlICJubHMuaCIKLSsjaW5jbHVkZSAiY2xvc2VzdHJlYW0uaCIKLSsKLSsjZGVmaW5lIE5IQVNIICAgKDE8PDE3KSAgLyogTXVzdCBiZSBhIHBvd2VyIG9mIDIhICovCi0rI2RlZmluZSBOQlVGICAgIDY0Ci0rCi0rc3RydWN0IGhhcmRsaW5rX2ZpbGU7Ci0rCi0rc3RydWN0IGhhcmRsaW5rX2hhc2ggewotKwlzdHJ1Y3QgaGFyZGxpbmtfaGFzaCAqbmV4dDsKLSsJc3RydWN0IGhhcmRsaW5rX2ZpbGUgKmNoYWluOwotKwlvZmZfdCBzaXplOwotKwl0aW1lX3QgbXRpbWU7Ci0rfTsKLSsKLStzdHJ1Y3QgaGFyZGxpbmtfZGlyIHsKLSsJc3RydWN0IGhhcmRsaW5rX2RpciAqbmV4dDsKLSsJY2hhciBuYW1lW107Ci0rfTsKLSsKLStzdHJ1Y3QgaGFyZGxpbmtfZmlsZSB7Ci0rCXN0cnVjdCBoYXJkbGlua19maWxlICpuZXh0OwotKwlpbm9fdCBpbm87Ci0rCWRldl90IGRldjsKLSsJdW5zaWduZWQgaW50IGNrc3VtOwotKwljaGFyIG5hbWVbXTsKLSt9OwotKwotK3N0cnVjdCBoYXJkbGlua19keW5zdHIgewotKwljaGFyICpidWY7Ci0rCXNpemVfdCBhbGxvYzsKLSt9OwotKwotK3N0cnVjdCBoYXJkbGlua19jdGwgewotKwlzdHJ1Y3QgaGFyZGxpbmtfZGlyICpkaXJzOwotKwlzdHJ1Y3QgaGFyZGxpbmtfaGFzaCAqaHBzW05IQVNIXTsKLSsJY2hhciBpb2J1ZjFbQlVGU0laXTsKLSsJY2hhciBpb2J1ZjJbQlVGU0laXTsKLSsJLyogc3VtbWFyeSBjb3VudGVycyAqLwotKwl1bnNpZ25lZCBsb25nIGxvbmcgbmRpcnM7Ci0rCXVuc2lnbmVkIGxvbmcgbG9uZyBub2JqZWN0czsKLSsJdW5zaWduZWQgbG9uZyBsb25nIG5yZWdmaWxlczsKLSsJdW5zaWduZWQgbG9uZyBsb25nIG5jb21wOwotKwl1bnNpZ25lZCBsb25nIGxvbmcgbmxpbmtzOwotKwl1bnNpZ25lZCBsb25nIGxvbmcgbnNhdmVkOwotKwkvKiBjdXJyZW50IGRldmljZSAqLwotKwlkZXZfdCBkZXY7Ci0rCS8qIGZsYWdzICovCi0rCXVuc2lnbmVkIGludCB2ZXJib3NlOwotKwl1bnNpZ25lZCBpbnQKLSsJCW5vX2xpbms6MSwKLSsJCWNvbnRlbnRfb25seToxLAotKwkJZm9yY2U6MTsKLSt9OwotKy8qIGN0bCBpcyBpbiBnbG9iYWwgc2NvcGUgZHVlIHVzZSBpbiBhdGV4aXQoKSAqLwotK3N0cnVjdCBoYXJkbGlua19jdGwgZ2xvYmFsX2N0bDsKLSsKLStfX2F0dHJpYnV0ZV9fICgoYWx3YXlzX2lubGluZSkpCi0rc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgaGFzaChvZmZfdCBzaXplLCB0aW1lX3QgbXRpbWUpCi0rewotKwlyZXR1cm4gKHNpemUgXiBtdGltZSkgJiAoTkhBU0ggLSAxKTsKLSt9Ci0rCi0rX19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUpKQotK3N0YXRpYyBpbmxpbmUgaW50IHN0Y21wKHN0cnVjdCBzdGF0ICpzdDEsIHN0cnVjdCBzdGF0ICpzdDIsIGludCBjb250ZW50X3Njb3BlKQotK3sKLSsJaWYgKGNvbnRlbnRfc2NvcGUpCi0rCQlyZXR1cm4gc3QxLT5zdF9zaXplICE9IHN0Mi0+c3Rfc2l6ZTsKLSsKLSsJcmV0dXJuIHN0MS0+c3RfbW9kZSAhPSBzdDItPnN0X21vZGUKLSsJCXx8IHN0MS0+c3RfdWlkICE9IHN0Mi0+c3RfdWlkCi0rCQl8fCBzdDEtPnN0X2dpZCAhPSBzdDItPnN0X2dpZAotKwkJfHwgc3QxLT5zdF9zaXplICE9IHN0Mi0+c3Rfc2l6ZQotKwkJfHwgc3QxLT5zdF9tdGltZSAhPSBzdDItPnN0X210aW1lOwotK30KLSsKLStzdGF0aWMgdm9pZCBwcmludF9zdW1tYXJ5KHZvaWQpCi0rewotKwlzdHJ1Y3QgaGFyZGxpbmtfY3RsIGNvbnN0ICpjb25zdCBjdGwgPSAmZ2xvYmFsX2N0bDsKLSsKLSsJaWYgKCFjdGwtPnZlcmJvc2UpCi0rCQlyZXR1cm47Ci0rCi0rCWlmIChjdGwtPnZlcmJvc2UgPiAxICYmIGN0bC0+bmxpbmtzKQotKwkJZnB1dGMoJ1xuJywgc3Rkb3V0KTsKLSsKLSsJcHJpbnRmKF8oIkRpcmVjdG9yaWVzOiAgICU5bGxkXG4iKSwgY3RsLT5uZGlycyk7Ci0rCXByaW50ZihfKCJPYmplY3RzOiAgICAgICAlOWxsZFxuIiksIGN0bC0+bm9iamVjdHMpOwotKwlwcmludGYoXygiUmVndWxhciBmaWxlczogJTlsbGRcbiIpLCBjdGwtPm5yZWdmaWxlcyk7Ci0rCXByaW50ZihfKCJDb21wYXJpc29uczogICAlOWxsZFxuIiksIGN0bC0+bmNvbXApOwotKwlwcmludGYoICAiJXMlOWxsZFxuIiwgKGN0bC0+bm9fbGluayA/Ci0rCSAgICAgICBfKCJXb3VsZCBsaW5rOiAgICAiKSA6Ci0rCSAgICAgICBfKCJMaW5rZWQ6ICAgICAgICAiKSksIGN0bC0+bmxpbmtzKTsKLSsJcHJpbnRmKCAgIiVzICU5bGxkXG4iLCAoY3RsLT5ub19saW5rID8KLSsJICAgICAgIF8oIldvdWxkIHNhdmU6ICAgIikgOgotKwkgICAgICAgXygiU2F2ZWQ6ICAgICAgICAiKSksIGN0bC0+bnNhdmVkKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSkgdXNhZ2Uodm9pZCkKLSt7Ci0rCWZwdXRzKFVTQUdFX0hFQURFUiwgc3Rkb3V0KTsKLSsJcHJpbnRmKF8oIiAlcyBbb3B0aW9uc10gZGlyZWN0b3J5Li4uXG4iKSwgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUpOwotKwotKwlmcHV0cyhVU0FHRV9TRVBBUkFUT1IsIHN0ZG91dCk7Ci0rCXB1dHMoXygiQ29uc29saWRhdGUgZHVwbGljYXRlIGZpbGVzIHVzaW5nIGhhcmRsaW5rcy4iKSk7Ci0rCi0rCWZwdXRzKFVTQUdFX09QVElPTlMsIHN0ZG91dCk7Ci0rCXB1dHMoXygiIC1jLCAtLWNvbnRlbnQgICAgICAgICAgY29tcGFyZSBvbmx5IGNvbnRlbnRzLCBpZ25vcmUgcGVybWlzc2lvbiwgZXRjLiIpKTsKLSsJcHV0cyhfKCIgLW4sIC0tZHJ5LXJ1biAgICAgICAgICBkb24ndCBhY3R1YWxseSBsaW5rIGFueXRoaW5nIikpOwotKwlwdXRzKF8oIiAtdiwgLS12ZXJib3NlICAgICAgICAgIHByaW50IHN1bW1hcnkgYWZ0ZXIgaGFyZGxpbmtpbmciKSk7Ci0rCXB1dHMoXygiIC12diAgICAgICAgICAgICAgICAgICAgcHJpbnQgZXZlcnkgaGFyZGxpbmtlZCBmaWxlIGFuZCBzdW1tYXJ5IikpOwotKwlwdXRzKF8oIiAtZiwgLS1mb3JjZSAgICAgICAgICAgIGZvcmNlIGhhcmRsaW5raW5nIGFjcm9zcyBmaWxlc3lzdGVtcyIpKTsKLSsJcHV0cyhfKCIgLXgsIC0tZXhjbHVkZSA8cmVnZXg+ICBleGNsdWRlIGZpbGVzIG1hdGNoaW5nIHBhdHRlcm4iKSk7Ci0rCi0rCWZwdXRzKFVTQUdFX1NFUEFSQVRPUiwgc3Rkb3V0KTsKLSsJcHJpbnRmKFVTQUdFX0hFTFBfT1BUSU9OUygxNikpOyAvKiBjaGFyIG9mZnNldCB0byBhbGlnbiBvcHRpb24gZGVzY3JpcHRpb25zICovCi0rCXByaW50ZihVU0FHRV9NQU5fVEFJTCgiaGFyZGxpbmsoMSkiKSk7Ci0rCWV4aXQoRVhJVF9TVUNDRVNTKTsKLSt9Ci0rCi0rX19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUpKQotK3N0YXRpYyBpbmxpbmUgc2l6ZV90IGFkZDIoc2l6ZV90IGEsIHNpemVfdCBiKQotK3sKLSsJc2l6ZV90IHN1bSA9IGEgKyBiOwotKwotKwlpZiAoc3VtIDwgYSkKLSsJCWVycngoRVhJVF9GQUlMVVJFLCBfKCJpbnRlZ2VyIG92ZXJmbG93IikpOwotKwlyZXR1cm4gc3VtOwotK30KLSsKLStfX2F0dHJpYnV0ZV9fICgoYWx3YXlzX2lubGluZSkpCi0rc3RhdGljIGlubGluZSBzaXplX3QgYWRkMyhzaXplX3QgYSwgc2l6ZV90IGIsIHNpemVfdCBjKQotK3sKLSsJcmV0dXJuIGFkZDIoYWRkMihhLCBiKSwgYyk7Ci0rfQotKwotK3N0YXRpYyB2b2lkIGdyb3dzdHIoc3RydWN0IGhhcmRsaW5rX2R5bnN0ciAqc3RyLCBzaXplX3QgbmV3bGVuKQotK3sKLSsJaWYgKG5ld2xlbiA8IHN0ci0+YWxsb2MpCi0rCQlyZXR1cm47Ci0rCXN0ci0+YnVmID0geHJlYWxsb2Moc3RyLT5idWYsIHN0ci0+YWxsb2MgPSBhZGQyKG5ld2xlbiwgMSkpOwotK30KLSsKLStzdGF0aWMgdm9pZCBwcm9jZXNzX3BhdGgoc3RydWN0IGhhcmRsaW5rX2N0bCAqY3RsLCBjb25zdCBjaGFyICpuYW1lKQotK3sKLSsJc3RydWN0IHN0YXQgc3QsIHN0Miwgc3QzOwotKwljb25zdCBzaXplX3QgbmFtZWxlbiA9IHN0cmxlbihuYW1lKTsKLSsKLSsJY3RsLT5ub2JqZWN0cysrOwotKwlpZiAobHN0YXQobmFtZSwgJnN0KSkKLSsJCXJldHVybjsKLSsKLSsJaWYgKHN0LnN0X2RldiAhPSBjdGwtPmRldiAmJiAhY3RsLT5mb3JjZSkgewotKwkJaWYgKGN0bC0+ZGV2KQotKwkJCWVycngoRVhJVF9GQUlMVVJFLAotKwkJCSAgICAgXygiJXMgaXMgb24gZGlmZmVyZW50IGZpbGVzeXN0ZW0gdGhhbiB0aGUgcmVzdCAiCi0rCQkJICAgICAgICIodXNlIC1mIG9wdGlvbiB0byBvdmVycmlkZSkuIiksIG5hbWUpOwotKwkJY3RsLT5kZXYgPSBzdC5zdF9kZXY7Ci0rCX0KLSsJaWYgKFNfSVNESVIoc3Quc3RfbW9kZSkpIHsKLSsJCXN0cnVjdCBoYXJkbGlua19kaXIgKmRwID0geG1hbGxvYyhhZGQzKHNpemVvZigqZHApLCBuYW1lbGVuLCAxKSk7Ci0rCQltZW1jcHkoZHAtPm5hbWUsIG5hbWUsIG5hbWVsZW4gKyAxKTsKLSsJCWRwLT5uZXh0ID0gY3RsLT5kaXJzOwotKwkJY3RsLT5kaXJzID0gZHA7Ci0rCi0rCX0gZWxzZSBpZiAoU19JU1JFRyhzdC5zdF9tb2RlKSkgewotKwkJaW50IGZkLCBpOwotKwkJc3RydWN0IGhhcmRsaW5rX2ZpbGUgKmZwLCAqZnAyOwotKwkJc3RydWN0IGhhcmRsaW5rX2hhc2ggKmhwOwotKwkJY29uc3QgY2hhciAqbjEsICpuMjsKLSsJCXVuc2lnbmVkIGludCBidWZbTkJVRl07Ci0rCQlpbnQgY2tzdW1zaXplID0gc2l6ZW9mKGJ1Zik7Ci0rCQl1bnNpZ25lZCBpbnQgY2tzdW07Ci0rCQl0aW1lX3QgbXRpbWUgPSBjdGwtPmNvbnRlbnRfb25seSA/IDAgOiBzdC5zdF9tdGltZTsKLSsJCXVuc2lnbmVkIGludCBoc2ggPSBoYXNoKHN0LnN0X3NpemUsIG10aW1lKTsKLSsJCW9mZl90IGZzaXplOwotKwotKwkJY3RsLT5ucmVnZmlsZXMrKzsKLSsJCWlmIChjdGwtPnZlcmJvc2UgPiAxKQotKwkJCXByaW50ZigiJXNcbiIsIG5hbWUpOwotKwotKwkJZmQgPSBvcGVuKG5hbWUsIE9fUkRPTkxZKTsKLSsJCWlmIChmZCA8IDApCi0rCQkJcmV0dXJuOwotKwotKwkJaWYgKChzaXplX3Qpc3Quc3Rfc2l6ZSA8IHNpemVvZihidWYpKSB7Ci0rCQkJY2tzdW1zaXplID0gc3Quc3Rfc2l6ZTsKLSsJCQltZW1zZXQoKChjaGFyICopYnVmKSArIGNrc3Vtc2l6ZSwgMCwKLSsJCQkgICAgICAgKHNpemVvZihidWYpIC0gY2tzdW1zaXplKSAlIHNpemVvZihidWZbMF0pKTsKLSsJCX0KLSsJCWlmIChyZWFkKGZkLCBidWYsIGNrc3Vtc2l6ZSkgIT0gY2tzdW1zaXplKSB7Ci0rCQkJY2xvc2UoZmQpOwotKwkJCXJldHVybjsKLSsJCX0KLSsJCWNrc3Vtc2l6ZSA9IChja3N1bXNpemUgKyBzaXplb2YoYnVmWzBdKSAtIDEpIC8gc2l6ZW9mKGJ1ZlswXSk7Ci0rCQlmb3IgKGkgPSAwLCBja3N1bSA9IDA7IGkgPCBja3N1bXNpemU7IGkrKykgewotKwkJCWlmIChja3N1bSArIGJ1ZltpXSA8IGNrc3VtKQotKwkJCQlja3N1bSArPSBidWZbaV0gKyAxOwotKwkJCWVsc2UKLSsJCQkJY2tzdW0gKz0gYnVmW2ldOwotKwkJfQotKwkJZm9yIChocCA9IGN0bC0+aHBzW2hzaF07IGhwOyBocCA9IGhwLT5uZXh0KSB7Ci0rCQkJaWYgKGhwLT5zaXplID09IHN0LnN0X3NpemUgJiYgaHAtPm10aW1lID09IG10aW1lKQotKwkJCQlicmVhazsKLSsJCX0KLSsJCWlmICghaHApIHsKLSsJCQlocCA9IHhtYWxsb2Moc2l6ZW9mKCpocCkpOwotKwkJCWhwLT5zaXplID0gc3Quc3Rfc2l6ZTsKLSsJCQlocC0+bXRpbWUgPSBtdGltZTsKLSsJCQlocC0+Y2hhaW4gPSBOVUxMOwotKwkJCWhwLT5uZXh0ID0gY3RsLT5ocHNbaHNoXTsKLSsJCQljdGwtPmhwc1toc2hdID0gaHA7Ci0rCQl9Ci0rCQlmb3IgKGZwID0gaHAtPmNoYWluOyBmcDsgZnAgPSBmcC0+bmV4dCkgewotKwkJCWlmIChmcC0+Y2tzdW0gPT0gY2tzdW0pCi0rCQkJCWJyZWFrOwotKwkJfQotKwkJZm9yIChmcDIgPSBmcDsgZnAyICYmIGZwMi0+Y2tzdW0gPT0gY2tzdW07IGZwMiA9IGZwMi0+bmV4dCkgewotKwkJCWlmIChmcDItPmlubyA9PSBzdC5zdF9pbm8gJiYgZnAyLT5kZXYgPT0gc3Quc3RfZGV2KSB7Ci0rCQkJCWNsb3NlKGZkKTsKLSsJCQkJcmV0dXJuOwotKwkJCX0KLSsJCX0KLSsJCWZvciAoZnAyID0gZnA7IGZwMiAmJiBmcDItPmNrc3VtID09IGNrc3VtOyBmcDIgPSBmcDItPm5leHQpIHsKLSsKLSsJCQlpZiAoIWxzdGF0KGZwMi0+bmFtZSwgJnN0MikgJiYgU19JU1JFRyhzdDIuc3RfbW9kZSkgJiYKLSsJCQkgICAgIXN0Y21wKCZzdCwgJnN0MiwgY3RsLT5jb250ZW50X29ubHkpICYmCi0rCQkJICAgIHN0Mi5zdF9pbm8gIT0gc3Quc3RfaW5vICYmCi0rCQkJICAgIHN0Mi5zdF9kZXYgPT0gc3Quc3RfZGV2KSB7Ci0rCi0rCQkJCWludCBmZDIgPSBvcGVuKGZwMi0+bmFtZSwgT19SRE9OTFkpOwotKwkJCQlpZiAoZmQyIDwgMCkKLSsJCQkJCWNvbnRpbnVlOwotKwotKwkJCQlpZiAoZnN0YXQoZmQyLCAmc3QyKSB8fCAhU19JU1JFRyhzdDIuc3RfbW9kZSkKLSsJCQkJICAgIHx8IHN0Mi5zdF9zaXplID09IDApIHsKLSsJCQkJCWNsb3NlKGZkMik7Ci0rCQkJCQljb250aW51ZTsKLSsJCQkJfQotKwkJCQljdGwtPm5jb21wKys7Ci0rCQkJCWxzZWVrKGZkLCAwLCBTRUVLX1NFVCk7Ci0rCi0rCQkJCWZvciAoZnNpemUgPSBzdC5zdF9zaXplOyBmc2l6ZSA+IDA7Ci0rCQkJCSAgICAgZnNpemUgLT0gKG9mZl90KXNpemVvZihjdGwtPmlvYnVmMSkpIHsKLSsJCQkJCXNzaXplX3QgeHN6OwotKwkJCQkJc3NpemVfdCByc2l6ZSA9IGZzaXplID4gKHNzaXplX3QpIHNpemVvZihjdGwtPmlvYnVmMSkgPwotKwkJCQkJCQkoc3NpemVfdCkgc2l6ZW9mKGN0bC0+aW9idWYxKSA6IGZzaXplOwotKwotKwkJCQkJaWYgKCh4c3ogPSByZWFkKGZkLCBjdGwtPmlvYnVmMSwgcnNpemUpKSAhPSByc2l6ZSkKLSsJCQkJCQl3YXJuKF8oImNhbm5vdCByZWFkICVzIiksIG5hbWUpOwotKwkJCQkJZWxzZSBpZiAoKHhzeiA9IHJlYWQoZmQyLCBjdGwtPmlvYnVmMiwgcnNpemUpKSAhPSByc2l6ZSkKLSsJCQkJCQl3YXJuKF8oImNhbm5vdCByZWFkICVzIiksIGZwMi0+bmFtZSk7Ci0rCi0rCQkJCQlpZiAoeHN6ICE9IHJzaXplKSB7Ci0rCQkJCQkJY2xvc2UoZmQpOwotKwkJCQkJCWNsb3NlKGZkMik7Ci0rCQkJCQkJcmV0dXJuOwotKwkJCQkJfQotKwkJCQkJaWYgKG1lbWNtcChjdGwtPmlvYnVmMSwgY3RsLT5pb2J1ZjIsIHJzaXplKSkKLSsJCQkJCQlicmVhazsKLSsJCQkJfQotKwkJCQljbG9zZShmZDIpOwotKwkJCQlpZiAoZnNpemUgPiAwKQotKwkJCQkJY29udGludWU7Ci0rCQkJCWlmIChsc3RhdChuYW1lLCAmc3QzKSkgewotKwkJCQkJd2FybihfKCJjYW5ub3Qgc3RhdCAlcyIpLCBuYW1lKTsKLSsJCQkJCWNsb3NlKGZkKTsKLSsJCQkJCXJldHVybjsKLSsJCQkJfQotKwkJCQlzdDMuc3RfYXRpbWUgPSBzdC5zdF9hdGltZTsKLSsJCQkJaWYgKHN0Y21wKCZzdCwgJnN0MywgMCkpIHsKLSsJCQkJCXdhcm54KF8oImZpbGUgJXMgY2hhbmdlZCB1bmRlcm5lYXRoIHVzIiksIG5hbWUpOwotKwkJCQkJY2xvc2UoZmQpOwotKwkJCQkJcmV0dXJuOwotKwkJCQl9Ci0rCQkJCW4xID0gZnAyLT5uYW1lOwotKwkJCQluMiA9IG5hbWU7Ci0rCi0rCQkJCWlmICghY3RsLT5ub19saW5rKSB7Ci0rCQkJCQljb25zdCBjaGFyICpzdWZmaXggPQotKwkJCQkJICAgICIuJCQkX19fY2xlYW5pdF9fXyQkJCI7Ci0rCQkJCQljb25zdCBzaXplX3Qgc3VmZml4bGVuID0gc3RybGVuKHN1ZmZpeCk7Ci0rCQkJCQlzaXplX3QgbjJsZW4gPSBzdHJsZW4objIpOwotKwkJCQkJc3RydWN0IGhhcmRsaW5rX2R5bnN0ciBuYW0yID0geyBOVUxMLCAwIH07Ci0rCi0rCQkJCQlncm93c3RyKCZuYW0yLCBhZGQyKG4ybGVuLCBzdWZmaXhsZW4pKTsKLSsJCQkJCW1lbWNweShuYW0yLmJ1ZiwgbjIsIG4ybGVuKTsKLSsJCQkJCW1lbWNweSgmbmFtMi5idWZbbjJsZW5dLCBzdWZmaXgsCi0rCQkJCQkgICAgICAgc3VmZml4bGVuICsgMSk7Ci0rCQkJCQkvKiBGaXJzdCBjcmVhdGUgYSB0ZW1wb3JhcnkgbGluayB0byBuMSB1bmRlciBhIG5ldyBuYW1lICovCi0rCQkJCQlpZiAobGluayhuMSwgbmFtMi5idWYpKSB7Ci0rCQkJCQkJd2FybihfKCJmYWlsZWQgdG8gaGFyZGxpbmsgJXMgdG8gJXMgKGNyZWF0ZSB0ZW1wb3JhcnkgbGluayBhcyAlcyBmYWlsZWQpIiksCi0rCQkJCQkJCW4xLCBuMiwgbmFtMi5idWYpOwotKwkJCQkJCWZyZWUobmFtMi5idWYpOwotKwkJCQkJCWNvbnRpbnVlOwotKwkJCQkJfQotKwkJCQkJLyogVGhlbiByZW5hbWUgaW50byBwbGFjZSBvdmVyIHRoZSBleGlzdGluZyBuMiAqLwotKwkJCQkJaWYgKHJlbmFtZShuYW0yLmJ1ZiwgbjIpKSB7Ci0rCQkJCQkJd2FybihfKCJmYWlsZWQgdG8gaGFyZGxpbmsgJXMgdG8gJXMgKHJlbmFtZSB0ZW1wb3JhcnkgbGluayB0byAlcyBmYWlsZWQpIiksCi0rCQkJCQkJCW4xLCBuMiwgbjIpOwotKwkJCQkJCS8qIFNvbWV0aGluZyB3ZW50IHdyb25nLCB0cnkgdG8gcmVtb3ZlIHRoZSBub3cgcmVkdW5kYW50IHRlbXBvcmFyeSBsaW5rICovCi0rCQkJCQkJaWYgKHVubGluayhuYW0yLmJ1ZikpCi0rCQkJCQkJCXdhcm4oXygiZmFpbGVkIHRvIHJlbW92ZSB0ZW1wb3JhcnkgbGluayAlcyIpLCBuYW0yLmJ1Zik7Ci0rCQkJCQkJZnJlZShuYW0yLmJ1Zik7Ci0rCQkJCQkJY29udGludWU7Ci0rCQkJCQl9Ci0rCQkJCQlmcmVlKG5hbTIuYnVmKTsKLSsJCQkJfQotKwkJCQljdGwtPm5saW5rcysrOwotKwkJCQlpZiAoc3QzLnN0X25saW5rID4gMSkgewotKwkJCQkJLyogV2UgYWN0dWFsbHkgZGlkIG5vdCBzYXZlIGFueXRoaW5nIHRoaXMgdGltZSwgc2luY2UgdGhlIGxpbmsgc2Vjb25kIGFyZ3VtZW50Ci0rCQkJCQkgICBoYWQgc29tZSBvdGhlciBsaW5rcyBhcyB3ZWxsLiAgKi8KLSsJCQkJCWlmIChjdGwtPnZlcmJvc2UgPiAxKQotKwkJCQkJCXByaW50ZihfKCIgJXMgJXMgdG8gJXNcbiIpLAotKwkJCQkJCQkoY3RsLT5ub19saW5rID8gXygiV291bGQgbGluayIpIDogXygiTGlua2VkIikpLAotKwkJCQkJCQluMSwgbjIpOwotKwkJCQl9IGVsc2UgewotKwkJCQkJY3RsLT5uc2F2ZWQgKz0gKChzdC5zdF9zaXplICsgNDA5NSkgLyA0MDk2KSAqIDQwOTY7Ci0rCQkJCQlpZiAoY3RsLT52ZXJib3NlID4gMSkKLSsJCQkJCQlwcmludGYoXygiICVzICVzIHRvICVzLCAlcyAlamRcbiIpLAotKwkJCQkJCQkoY3RsLT5ub19saW5rID8gXygiV291bGQgbGluayIpIDogXygiTGlua2VkIikpLAotKwkJCQkJCQluMSwgbjIsCi0rCQkJCQkJCShjdGwtPm5vX2xpbmsgPyBfKCJ3b3VsZCBzYXZlIikgOiBfKCJzYXZlZCIpKSwKLSsJCQkJCQkJKGludG1heF90KXN0LnN0X3NpemUpOwotKwkJCQl9Ci0rCQkJCWNsb3NlKGZkKTsKLSsJCQkJcmV0dXJuOwotKwkJCX0KLSsJCX0KLSsJCWZwMiA9IHhtYWxsb2MoYWRkMyhzaXplb2YoKmZwMiksIG5hbWVsZW4sIDEpKTsKLSsJCWNsb3NlKGZkKTsKLSsJCWZwMi0+aW5vID0gc3Quc3RfaW5vOwotKwkJZnAyLT5kZXYgPSBzdC5zdF9kZXY7Ci0rCQlmcDItPmNrc3VtID0gY2tzdW07Ci0rCQltZW1jcHkoZnAyLT5uYW1lLCBuYW1lLCBuYW1lbGVuICsgMSk7Ci0rCi0rCQlpZiAoZnApIHsKLSsJCQlmcDItPm5leHQgPSBmcC0+bmV4dDsKLSsJCQlmcC0+bmV4dCA9IGZwMjsKLSsJCX0gZWxzZSB7Ci0rCQkJZnAyLT5uZXh0ID0gaHAtPmNoYWluOwotKwkJCWhwLT5jaGFpbiA9IGZwMjsKLSsJCX0KLSsJCXJldHVybjsKLSsJfQotK30KLSsKLStpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rewotKwlpbnQgY2g7Ci0rCWludCBpOwotKyNpZmRlZiBIQVZFX1BDUkUKLSsJaW50IGVycm9ybnVtYmVyOwotKwlQQ1JFMl9TSVpFIGVycm9yb2Zmc2V0OwotKwlwY3JlMl9jb2RlICpyZSA9IE5VTEw7Ci0rCVBDUkUyX1NQVFIgZXhjbHVkZV9wYXR0ZXJuID0gTlVMTDsKLSsJcGNyZTJfbWF0Y2hfZGF0YSAqbWF0Y2hfZGF0YSA9IE5VTEw7Ci0rI2VuZGlmCi0rCXN0cnVjdCBoYXJkbGlua19keW5zdHIgbmFtMSA9IHsgTlVMTCwgMCB9OwotKwlzdHJ1Y3QgaGFyZGxpbmtfY3RsICpjdGwgPSAmZ2xvYmFsX2N0bDsKLSsKLSsJc3RhdGljIGNvbnN0IHN0cnVjdCBvcHRpb24gbG9uZ29wdHNbXSA9IHsKLSsJCXsgImNvbnRlbnQiLCAgICBub19hcmd1bWVudCwgTlVMTCwgJ2MnIH0sCi0rCQl7ICJkcnktcnVuIiwgICAgbm9fYXJndW1lbnQsIE5VTEwsICduJyB9LAotKwkJeyAiZXhjbHVkZSIsICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAneCcgfSwKLSsJCXsgImZvcmNlIiwgICAgICBub19hcmd1bWVudCwgTlVMTCwgJ2YnIH0sCi0rCQl7ICJoZWxwIiwgICAgICAgbm9fYXJndW1lbnQsIE5VTEwsICdoJyB9LAotKwkJeyAidmVyYm9zZSIsICAgIG5vX2FyZ3VtZW50LCBOVUxMLCAndicgfSwKLSsJCXsgInZlcnNpb24iLCAgICBub19hcmd1bWVudCwgTlVMTCwgJ1YnIH0sCi0rCQl7IE5VTEwsIDAsIE5VTEwsIDAgfSwKLSsJfTsKLSsKLSsJc2V0bG9jYWxlKExDX0FMTCwgIiIpOwotKwliaW5kdGV4dGRvbWFpbihQQUNLQUdFLCBMT0NBTEVESVIpOwotKwl0ZXh0ZG9tYWluKFBBQ0tBR0UpOwotKwljbG9zZV9zdGRvdXRfYXRleGl0KCk7Ci0rCi0rCXdoaWxlICgoY2ggPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiY252Zng6VmgiLCBsb25nb3B0cywgTlVMTCkpICE9IC0xKSB7Ci0rCQlzd2l0Y2ggKGNoKSB7Ci0rCQljYXNlICduJzoKLSsJCQljdGwtPm5vX2xpbmsgPSAxOwotKwkJCWJyZWFrOwotKwkJY2FzZSAndic6Ci0rCQkJY3RsLT52ZXJib3NlKys7Ci0rCQkJYnJlYWs7Ci0rCQljYXNlICdjJzoKLSsJCQljdGwtPmNvbnRlbnRfb25seSA9IDE7Ci0rCQkJYnJlYWs7Ci0rCQljYXNlICdmJzoKLSsJCQljdGwtPmZvcmNlID0gMTsKLSsJCQlicmVhazsKLSsJCWNhc2UgJ3gnOgotKyNpZmRlZiBIQVZFX1BDUkUKLSsJCQlleGNsdWRlX3BhdHRlcm4gPSAoUENSRTJfU1BUUikgb3B0YXJnOwotKyNlbHNlCi0rCQkJZXJyeChFWElUX0ZBSUxVUkUsCi0rCQkJICAgICBfKCJvcHRpb24gLS1leGNsdWRlIG5vdCBzdXBwb3J0ZWQgKGJ1aWx0IHdpdGhvdXQgcGNyZTIpIikpOwotKyNlbmRpZgotKwkJCWJyZWFrOwotKwkJY2FzZSAnVic6Ci0rCQkJcHJpbnRfdmVyc2lvbihFWElUX1NVQ0NFU1MpOwotKwkJY2FzZSAnaCc6Ci0rCQkJdXNhZ2UoKTsKLSsJCWRlZmF1bHQ6Ci0rCQkJZXJydHJ5aGVscChFWElUX0ZBSUxVUkUpOwotKwkJfQotKwl9Ci0rCi0rCWlmIChvcHRpbmQgPT0gYXJnYykgewotKwkJd2FybngoXygibm8gZGlyZWN0b3J5IHNwZWNpZmllZCIpKTsKLSsJCWVycnRyeWhlbHAoRVhJVF9GQUlMVVJFKTsKLSsJfQotKwotKyNpZmRlZiBIQVZFX1BDUkUKLSsJaWYgKGV4Y2x1ZGVfcGF0dGVybikgewotKwkJcmUgPSBwY3JlMl9jb21waWxlKGV4Y2x1ZGVfcGF0dGVybiwgLyogdGhlIHBhdHRlcm4gKi8KLSsJCQkJICAgUENSRTJfWkVST19URVJNSU5BVEVELCAvKiBpbmRpY2F0ZXMgcGF0dGVybiBpcyB6ZXJvLXRlcm1pbmF0ZSAqLwotKwkJCQkgICAwLCAvKiBkZWZhdWx0IG9wdGlvbnMgKi8KLSsJCQkJICAgJmVycm9ybnVtYmVyLCAmZXJyb3JvZmZzZXQsIE5VTEwpOyAvKiB1c2UgZGVmYXVsdCBjb21waWxlIGNvbnRleHQgKi8KLSsJCWlmICghcmUpIHsKLSsJCQlQQ1JFMl9VQ0hBUiBidWZmZXJbMjU2XTsKLSsJCQlwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZShlcnJvcm51bWJlciwgYnVmZmVyLAotKwkJCQkJCXNpemVvZihidWZmZXIpKTsKLSsJCQllcnJ4KEVYSVRfRkFJTFVSRSwgXygicGF0dGVybiBlcnJvciBhdCBvZmZzZXQgJWQ6ICVzIiksCi0rCQkJCShpbnQpZXJyb3JvZmZzZXQsIGJ1ZmZlcik7Ci0rCQl9Ci0rCQltYXRjaF9kYXRhID0gcGNyZTJfbWF0Y2hfZGF0YV9jcmVhdGVfZnJvbV9wYXR0ZXJuKHJlLCBOVUxMKTsKLSsJfQotKyNlbmRpZgotKwlhdGV4aXQocHJpbnRfc3VtbWFyeSk7Ci0rCi0rCWZvciAoaSA9IG9wdGluZDsgaSA8IGFyZ2M7IGkrKykKLSsJCXByb2Nlc3NfcGF0aChjdGwsIGFyZ3ZbaV0pOwotKwotKwl3aGlsZSAoY3RsLT5kaXJzKSB7Ci0rCQlESVIgKmRoOwotKwkJc3RydWN0IGRpcmVudCAqZGk7Ci0rCQlzdHJ1Y3QgaGFyZGxpbmtfZGlyICpkcCA9IGN0bC0+ZGlyczsKLSsJCXNpemVfdCBuYW0xYmFzZWxlbiA9IHN0cmxlbihkcC0+bmFtZSk7Ci0rCi0rCQljdGwtPmRpcnMgPSBkcC0+bmV4dDsKLSsJCWdyb3dzdHIoJm5hbTEsIGFkZDIobmFtMWJhc2VsZW4sIDEpKTsKLSsJCW1lbWNweShuYW0xLmJ1ZiwgZHAtPm5hbWUsIG5hbTFiYXNlbGVuKTsKLSsJCWZyZWUoZHApOwotKwkJbmFtMS5idWZbbmFtMWJhc2VsZW4rK10gPSAnLyc7Ci0rCQluYW0xLmJ1ZltuYW0xYmFzZWxlbl0gPSAwOwotKwkJZGggPSBvcGVuZGlyKG5hbTEuYnVmKTsKLSsKLSsJCWlmIChkaCA9PSBOVUxMKQotKwkJCWNvbnRpbnVlOwotKwkJY3RsLT5uZGlycysrOwotKwotKwkJd2hpbGUgKChkaSA9IHJlYWRkaXIoZGgpKSAhPSBOVUxMKSB7Ci0rCQkJaWYgKCFkaS0+ZF9uYW1lWzBdKQotKwkJCQljb250aW51ZTsKLSsJCQlpZiAoZGktPmRfbmFtZVswXSA9PSAnLicpIHsKLSsJCQkJaWYgKCFkaS0+ZF9uYW1lWzFdIHx8ICFzdHJjbXAoZGktPmRfbmFtZSwgIi4uIikpCi0rCQkJCQljb250aW51ZTsKLSsJCQl9Ci0rI2lmZGVmIEhBVkVfUENSRQotKwkJCWlmIChyZSAmJiBwY3JlMl9tYXRjaChyZSwgLyogY29tcGlsZWQgcmVnZXggKi8KLSsJCQkJCSAgICAgIChQQ1JFMl9TUFRSKSBkaS0+ZF9uYW1lLCBzdHJsZW4oZGktPmRfbmFtZSksIDAsIC8qIHN0YXJ0IGF0IG9mZnNldCAwICovCi0rCQkJCQkgICAgICAwLCAvKiBkZWZhdWx0IG9wdGlvbnMgKi8KLSsJCQkJCSAgICAgIG1hdGNoX2RhdGEsIC8qIGJsb2NrIGZvciBzdG9yaW5nIHRoZSByZXN1bHQgKi8KLSsJCQkJCSAgICAgIE5VTEwpIC8qIHVzZSBkZWZhdWx0IG1hdGNoIGNvbnRleHQgKi8KLSsJCQkgICAgPj0wKSB7Ci0rCQkJCWlmIChjdGwtPnZlcmJvc2UpIHsKLSsJCQkJCW5hbTEuYnVmW25hbTFiYXNlbGVuXSA9IDA7Ci0rCQkJCQlwcmludGYoXygiU2tpcHBpbmcgJXMlc1xuIiksIG5hbTEuYnVmLCBkaS0+ZF9uYW1lKTsKLSsJCQkJfQotKwkJCQljb250aW51ZTsKLSsJCQl9Ci0rI2VuZGlmCi0rCQkJewotKwkJCQlzaXplX3Qgc3ViZGlybGVuOwotKwkJCQlncm93c3RyKCZuYW0xLAotKwkJCQkJYWRkMihuYW0xYmFzZWxlbiwgc3ViZGlybGVuID0KLSsJCQkJCSAgICAgc3RybGVuKGRpLT5kX25hbWUpKSk7Ci0rCQkJCW1lbWNweSgmbmFtMS5idWZbbmFtMWJhc2VsZW5dLCBkaS0+ZF9uYW1lLAotKwkJCQkgICAgICAgYWRkMihzdWJkaXJsZW4sIDEpKTsKLSsJCQl9Ci0rCQkJcHJvY2Vzc19wYXRoKGN0bCwgbmFtMS5idWYpOwotKwkJfQotKwkJY2xvc2VkaXIoZGgpOwotKwl9Ci0rCi0rCXJldHVybiAwOwotK30KLS0tLSBhL2xvY2FsZWRlZi9NYWtlZmlsZS5pbgotKysrIGIvbG9jYWxlZGVmL01ha2VmaWxlLmluCi1AQCAtNDAsNiArNDAsOCBAQCBXQVJORkxBR1MJPSAtV2FsbCAtV25vLWZvcm1hdAotIEZVTExDQwkJPSAkKENDKSAkKENQUEZMQUdTKSAkKENGTEFHUykgXAotIAkJICAkKERFRklORVMpICQoSU5DTFVERVMpICQoV0FSTkZMQUdTKQotIAotK0NST1NTX0xPQ0FMRURFRl9IQVJETElOS19PQkpTID0gY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLm8KLSsKLSBMT0NBTEVERUZfT0JKUwk9IGNoYXJtYXAubyBjaGFybWFwLWRpci5vIGxkLWFkZHJlc3MubyBsZC1jb2xsYXRlLm8gXAotIAkJICBsZC1jdHlwZS5vIGxkLWlkZW50aWZpY2F0aW9uLm8gbGQtbWVhc3VyZW1lbnQubyBcCi0gCQkgIGxkLW1lc3NhZ2VzLm8gbGQtbW9uZXRhcnkubyBsZC1uYW1lLm8gbGQtbnVtZXJpYy5vIFwKLUBAIC01NCwxMSArNTYsMTQgQEAgTE9DQUxFREVGX09CSlMJPSBjaGFybWFwLm8gY2hhcm1hcC1kaXIubwotIAkJICBhc3ByaW50Zi5vIGdldGRlbGltLm8gbG9jYWxlZGVmX2V4dHJhLm8gXAotIAkJICBvYnN0YWNrX3ByaW50Zi5vIHZhc3ByaW50Zi5vCi0gCi0tYWxsOgkJbG9jYWxlZGVmJChFWEVFWFQpCi0rYWxsOgkJbG9jYWxlZGVmJChFWEVFWFQpIGNyb3NzLWxvY2FsZWRlZi1oYXJkbGluayQoRVhFRVhUKQotIAotIGxvY2FsZWRlZiQoRVhFRVhUKTogJChMT0NBTEVERUZfT0JKUykKLSAJCSQoQ0MpIC1vICRAICQoTE9DQUxFREVGX09CSlMpICQoTElCUykKLSAKLStjcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmskKEVYRUVYVCk6ICQoQ1JPU1NfTE9DQUxFREVGX0hBUkRMSU5LX09CSlMpCi0rCQkkKENDKSAtbyAkQCAkKENST1NTX0xPQ0FMRURFRl9IQVJETElOS19PQkpTKSAkKExJQlMpCi0rCi0gY2xlYW46Ci0gCQlybSAtZiBsb2NhbGUkKEVYRUVYVCkgJChMT0NBTEVERUZfT0JKUykKLSAKLUBAIC03Nyw2ICs4Miw3IEBAIGNsZWFuOgotICUubzogJChzcmNkaXIpLyUuYwotIAkJJChGVUxMQ0MpIC1jIC1vICRAICQ8Ci0gCi0rY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLm86IGdsaWJjL2xvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYwotIGNoYXJtYXAubzogZ2xpYmMvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAuYwotIGNoYXJtYXAtZGlyLm86IGdsaWJjL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jCi0gbGQtYWRkcmVzcy5vOiBnbGliYy9sb2NhbGUvcHJvZ3JhbXMvbGQtYWRkcmVzcy5jCi0tLS0gL2Rldi9udWxsCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvYy5oCi1AQCAtMCwwICsxLDQwNyBAQAotKy8qCi0rICogRnVuZGFtZW50YWwgQyBkZWZpbml0aW9ucy4KLSsgKi8KLSsKLSsjaWZuZGVmIFVUSUxfTElOVVhfQ19ICi0rI2RlZmluZSBVVElMX0xJTlVYX0NfSAotKwotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rI2luY2x1ZGUgPHN0ZGludC5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaW5jbHVkZSA8c3RkYXJnLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSsKLSsjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0rCi0rI2lmZGVmIEhBVkVfRVJSX0gKLSsjIGluY2x1ZGUgPGVyci5oPgotKyNlbmRpZgotKwotKyNpZmRlZiBIQVZFX1NZU19TWVNNQUNST1NfSAotKyMgaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPiAgICAgLyogZm9yIG1ham9yLCBtaW5vciAqLwotKyNlbmRpZgotKwotKyNpZm5kZWYgTE9HSU5fTkFNRV9NQVgKLSsjIGRlZmluZSBMT0dJTl9OQU1FX01BWCAyNTYKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIE5BTUVfTUFYCi0rIyBkZWZpbmUgTkFNRV9NQVggUEFUSF9NQVgKLSsjZW5kaWYKLSsKLSsvKgotKyAqIF9fR05VQ19QUkVSRVEgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgX19oYXNfYXR0cmlidXRlKCkgYW5kCi0rICogX19oYXNfZmVhdHVyZSgpLiBUaGUgX19oYXMgbWFjcm9zIGFyZSBzdXBwb3J0ZWQgYnkgY2xhbmcgYW5kIGdjYz49NS4KLSsgKi8KLSsjaWZuZGVmIF9fR05VQ19QUkVSRVEKLSsjIGlmIGRlZmluZWQgX19HTlVDX18gJiYgZGVmaW5lZCBfX0dOVUNfTUlOT1JfXwotKyMgIGRlZmluZSBfX0dOVUNfUFJFUkVRKG1haiwgbWluKSBcCi0rCSgoX19HTlVDX18gPDwgMTYpICsgX19HTlVDX01JTk9SX18gPj0gKChtYWopIDw8IDE2KSArIChtaW4pKQotKyMgZWxzZQotKyMgIGRlZmluZSBfX0dOVUNfUFJFUkVRKG1haiwgbWluKSAwCi0rIyBlbmRpZgotKyNlbmRpZgotKwotKyNpZmRlZiBfX0dOVUNfXwotKwotKy8qICZhWzBdIGRlZ3JhZGVzIHRvIGEgcG9pbnRlcjogYSBkaWZmZXJlbnQgdHlwZSBmcm9tIGFuIGFycmF5ICovCi0rIyBkZWZpbmUgX19tdXN0X2JlX2FycmF5KGEpIFwKLSsJVUxfQlVJTERfQlVHX09OX1pFUk8oX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcChfX3R5cGVvZl9fKGEpLCBfX3R5cGVvZl9fKCZhWzBdKSkpCi0rCi0rIyBkZWZpbmUgaWdub3JlX3Jlc3VsdCh4KSBfX2V4dGVuc2lvbl9fICh7IFwKLSsJX190eXBlb2ZfXyh4KSBfX2R1bW15IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSA9ICh4KTsgKHZvaWQpIF9fZHVtbXk7IFwKLSt9KQotKwotKyNlbHNlIC8qICFfX0dOVUNfXyAqLwotKyMgZGVmaW5lIF9fbXVzdF9iZV9hcnJheShhKQkwCi0rIyBkZWZpbmUgX19hdHRyaWJ1dGVfXyhfYXJnXykKLSsjIGRlZmluZSBpZ25vcmVfcmVzdWx0KHgpICgodm9pZCkgKHgpKQotKyNlbmRpZiAvKiAhX19HTlVDX18gKi8KLSsKLSsvKgotKyAqIEl0IGV2YWx1YXRlcyB0byAxIGlmIHRoZSBhdHRyaWJ1dGUvZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIGN1cnJlbnQKLSsgKiBjb21waWxhdGlvbiB0YXJnZWQuIEZhbGxiYWNrIGZvciBvbGQgY29tcGlsZXJzLgotKyAqLwotKyNpZm5kZWYgX19oYXNfYXR0cmlidXRlCi0rICAjZGVmaW5lIF9faGFzX2F0dHJpYnV0ZSh4KSAwCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBfX2hhc19mZWF0dXJlCi0rICAjZGVmaW5lIF9faGFzX2ZlYXR1cmUoeCkgMAotKyNlbmRpZgotKwotKy8qCi0rICogRnVuY3Rpb24gYXR0cmlidXRlcwotKyAqLwotKyNpZm5kZWYgX191bF9hbGxvY19zaXplCi0rIyBpZiAoX19oYXNfYXR0cmlidXRlKGFsbG9jX3NpemUpICYmIF9faGFzX2F0dHJpYnV0ZSh3YXJuX3VudXNlZF9yZXN1bHQpKSB8fCBfX0dOVUNfUFJFUkVRICg0LCAzKQotKyMgIGRlZmluZSBfX3VsX2FsbG9jX3NpemUocykgX19hdHRyaWJ1dGVfXygoYWxsb2Nfc2l6ZShzKSwgd2Fybl91bnVzZWRfcmVzdWx0KSkKLSsjIGVsc2UKLSsjICBkZWZpbmUgX191bF9hbGxvY19zaXplKHMpCi0rIyBlbmRpZgotKyNlbmRpZgotKwotKyNpZm5kZWYgX191bF9jYWxsb2Nfc2l6ZQotKyMgaWYgKF9faGFzX2F0dHJpYnV0ZShhbGxvY19zaXplKSAmJiBfX2hhc19hdHRyaWJ1dGUod2Fybl91bnVzZWRfcmVzdWx0KSkgfHwgX19HTlVDX1BSRVJFUSAoNCwgMykKLSsjICBkZWZpbmUgX191bF9jYWxsb2Nfc2l6ZShuLCBzKSBfX2F0dHJpYnV0ZV9fKChhbGxvY19zaXplKG4sIHMpLCB3YXJuX3VudXNlZF9yZXN1bHQpKQotKyMgZWxzZQotKyMgIGRlZmluZSBfX3VsX2NhbGxvY19zaXplKG4sIHMpCi0rIyBlbmRpZgotKyNlbmRpZgotKwotKyNpZiBfX2hhc19hdHRyaWJ1dGUocmV0dXJuc19ub25udWxsKSB8fCBfX0dOVUNfUFJFUkVRICg0LCA5KQotKyMgZGVmaW5lIF9fdWxfcmV0dXJuc19ub25udWxsIF9fYXR0cmlidXRlX18oKHJldHVybnNfbm9ubnVsbCkpCi0rI2Vsc2UKLSsjIGRlZmluZSBfX3VsX3JldHVybnNfbm9ubnVsbAotKyNlbmRpZgotKwotKy8qCi0rICogRm9yY2UgYSBjb21waWxhdGlvbiBlcnJvciBpZiBjb25kaXRpb24gaXMgdHJ1ZSwgYnV0IGFsc28gcHJvZHVjZSBhCi0rICogcmVzdWx0IChvZiB2YWx1ZSAwIGFuZCB0eXBlIHNpemVfdCksIHNvIHRoZSBleHByZXNzaW9uIGNhbiBiZSB1c2VkCi0rICogZS5nLiBpbiBhIHN0cnVjdHVyZSBpbml0aWFsaXplciAob3Igd2hlcmV2ZXIgZWxzZSBjb21tYSBleHByZXNzaW9ucwotKyAqIGFyZW4ndCBwZXJtaXR0ZWQpLgotKyAqLwotKyNkZWZpbmUgVUxfQlVJTERfQlVHX09OX1pFUk8oZSkgX19leHRlbnNpb25fXyAoc2l6ZW9mKHN0cnVjdCB7IGludDotISEoZSk7IH0pKQotKyNkZWZpbmUgQlVJTERfQlVHX09OX05VTEwoZSkgKCh2b2lkICopc2l6ZW9mKHN0cnVjdCB7IGludDotISEoZSk7IH0pKQotKwotKyNpZm5kZWYgQVJSQVlfU0laRQotKyMgZGVmaW5lIEFSUkFZX1NJWkUoYXJyKSAoc2l6ZW9mKGFycikgLyBzaXplb2YoKGFycilbMF0pICsgX19tdXN0X2JlX2FycmF5KGFycikpCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBQQVRIX01BWAotKyMgZGVmaW5lIFBBVEhfTUFYIDQwOTYKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIFRSVUUKLSsjIGRlZmluZSBUUlVFIDEKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIEZBTFNFCi0rIyBkZWZpbmUgRkFMU0UgMAotKyNlbmRpZgotKwotKyNpZm5kZWYgbWluCi0rIyBkZWZpbmUgbWluKHgsIHkpIF9fZXh0ZW5zaW9uX18gKHsJCVwKLSsJX190eXBlb2ZfXyh4KSBfbWluMSA9ICh4KTsJCVwKLSsJX190eXBlb2ZfXyh5KSBfbWluMiA9ICh5KTsJCVwKLSsJKHZvaWQpICgmX21pbjEgPT0gJl9taW4yKTsJCVwKLSsJX21pbjEgPCBfbWluMiA/IF9taW4xIDogX21pbjI7IH0pCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBtYXgKLSsjIGRlZmluZSBtYXgoeCwgeSkgX19leHRlbnNpb25fXyAoewkJXAotKwlfX3R5cGVvZl9fKHgpIF9tYXgxID0gKHgpOwkJXAotKwlfX3R5cGVvZl9fKHkpIF9tYXgyID0gKHkpOwkJXAotKwkodm9pZCkgKCZfbWF4MSA9PSAmX21heDIpOwkJXAotKwlfbWF4MSA+IF9tYXgyID8gX21heDEgOiBfbWF4MjsgfSkKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIGNtcF9udW1iZXJzCi0rIyBkZWZpbmUgY21wX251bWJlcnMoeCwgeSkgX19leHRlbnNpb25fXyAoewlcCi0rCV9fdHlwZW9mX18oeCkgX2EgPSAoeCk7CQkJXAotKwlfX3R5cGVvZl9fKHkpIF9iID0gKHkpOwkJCVwKLSsJKHZvaWQpICgmX2EgPT0gJl9iKTsJCQlcCi0rCV9hID09IF9iID8gMCA6IF9hID4gX2IgPyAxIDogLTE7IH0pCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBvZmZzZXRvZgotKyNkZWZpbmUgb2Zmc2V0b2YoVFlQRSwgTUVNQkVSKSAoKHNpemVfdCkgJigoVFlQRSAqKTApLT5NRU1CRVIpCi0rI2VuZGlmCi0rCi0rLyoKLSsgKiBjb250YWluZXJfb2YgLSBjYXN0IGEgbWVtYmVyIG9mIGEgc3RydWN0dXJlIG91dCB0byB0aGUgY29udGFpbmluZyBzdHJ1Y3R1cmUKLSsgKiBAcHRyOgl0aGUgcG9pbnRlciB0byB0aGUgbWVtYmVyLgotKyAqIEB0eXBlOgl0aGUgdHlwZSBvZiB0aGUgY29udGFpbmVyIHN0cnVjdCB0aGlzIGlzIGVtYmVkZGVkIGluLgotKyAqIEBtZW1iZXI6CXRoZSBuYW1lIG9mIHRoZSBtZW1iZXIgd2l0aGluIHRoZSBzdHJ1Y3QuCi0rICovCi0rI2lmbmRlZiBjb250YWluZXJfb2YKLSsjZGVmaW5lIGNvbnRhaW5lcl9vZihwdHIsIHR5cGUsIG1lbWJlcikgX19leHRlbnNpb25fXyAoewlcCi0rCWNvbnN0IF9fdHlwZW9mX18oICgodHlwZSAqKTApLT5tZW1iZXIgKSAqX19tcHRyID0gKHB0cik7IFwKLSsJKHR5cGUgKikoIChjaGFyICopX19tcHRyIC0gb2Zmc2V0b2YodHlwZSxtZW1iZXIpICk7fSkKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIEhBVkVfUFJPR1JBTV9JTlZPQ0FUSU9OX1NIT1JUX05BTUUKLSsjIGlmZGVmIEhBVkVfX19QUk9HTkFNRQotK2V4dGVybiBjaGFyICpfX3Byb2duYW1lOwotKyMgIGRlZmluZSBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSBfX3Byb2duYW1lCi0rIyBlbHNlCi0rIyAgaWZkZWYgSEFWRV9HRVRFWEVDTkFNRQotKyMgICBkZWZpbmUgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUgXAotKwkJcHJvZ19pbnZfc2hfbm1fZnJvbV9maWxlKGdldGV4ZWNuYW1lKCksIDApCi0rIyAgZWxzZQotKyMgICBkZWZpbmUgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUgXAotKwkJcHJvZ19pbnZfc2hfbm1fZnJvbV9maWxlKF9fRklMRV9fLCAxKQotKyMgIGVuZGlmCi0rc3RhdGljIGNoYXIgcHJvZ19pbnZfc2hfbm1fYnVmWzI1Nl07Ci0rc3RhdGljIGlubGluZSBjaGFyICoKLStwcm9nX2ludl9zaF9ubV9mcm9tX2ZpbGUoY2hhciAqZiwgY2hhciBzdHJpcGV4dCkKLSt7Ci0rCWNoYXIgKnQ7Ci0rCi0rCWlmICgodCA9IHN0cnJjaHIoZiwgJy8nKSkgIT0gTlVMTCkKLSsJCXQrKzsKLSsJZWxzZQotKwkJdCA9IGY7Ci0rCi0rCXN0cm5jcHkocHJvZ19pbnZfc2hfbm1fYnVmLCB0LCBzaXplb2YocHJvZ19pbnZfc2hfbm1fYnVmKSAtIDEpOwotKwlwcm9nX2ludl9zaF9ubV9idWZbc2l6ZW9mKHByb2dfaW52X3NoX25tX2J1ZikgLSAxXSA9ICdcMCc7Ci0rCi0rCWlmIChzdHJpcGV4dCAmJiAodCA9IHN0cnJjaHIocHJvZ19pbnZfc2hfbm1fYnVmLCAnLicpKSAhPSBOVUxMKQotKwkJKnQgPSAnXDAnOwotKwotKwlyZXR1cm4gcHJvZ19pbnZfc2hfbm1fYnVmOwotK30KLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rCi0rI2lmbmRlZiBIQVZFX0VSUl9ICi0rc3RhdGljIGlubGluZSB2b2lkCi0rZXJybXNnKGNoYXIgZG9leGl0LCBpbnQgZXhjb2RlLCBjaGFyIGFkZGVyciwgY29uc3QgY2hhciAqZm10LCAuLi4pCi0rewotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiAiLCBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSk7Ci0rCWlmIChmbXQgIT0gTlVMTCkgewotKwkJdmFfbGlzdCBhcmdwOwotKwkJdmFfc3RhcnQoYXJncCwgZm10KTsKLSsJCXZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcmdwKTsKLSsJCXZhX2VuZChhcmdwKTsKLSsJCWlmIChhZGRlcnIpCi0rCQkJZnByaW50ZihzdGRlcnIsICI6ICIpOwotKwl9Ci0rCWlmIChhZGRlcnIpCi0rCQlmcHJpbnRmKHN0ZGVyciwgIiVtIik7Ci0rCWZwcmludGYoc3RkZXJyLCAiXG4iKTsKLSsJaWYgKGRvZXhpdCkKLSsJCWV4aXQoZXhjb2RlKTsKLSt9Ci0rCi0rI2lmbmRlZiBIQVZFX0VSUgotKyMgZGVmaW5lIGVycihFLCBGTVQuLi4pIGVycm1zZygxLCBFLCAxLCBGTVQpCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBIQVZFX0VSUlgKLSsjIGRlZmluZSBlcnJ4KEUsIEZNVC4uLikgZXJybXNnKDEsIEUsIDAsIEZNVCkKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIEhBVkVfV0FSTgotKyMgZGVmaW5lIHdhcm4oRk1ULi4uKSBlcnJtc2coMCwgMCwgMSwgRk1UKQotKyNlbmRpZgotKwotKyNpZm5kZWYgSEFWRV9XQVJOWAotKyMgZGVmaW5lIHdhcm54KEZNVC4uLikgZXJybXNnKDAsIDAsIDAsIEZNVCkKLSsjZW5kaWYKLSsjZW5kaWYgLyogIUhBVkVfRVJSX0ggKi8KLSsKLSsKLSsvKiBEb24ndCB1c2UgaW5saW5lIGZ1bmN0aW9uIHRvIGF2b2lkICcjaW5jbHVkZSAibmxzLmgiJyBpbiBjLmgKLSsgKi8KLSsjZGVmaW5lIGVycnRyeWhlbHAoZXZhbCkgX19leHRlbnNpb25fXyAoeyBcCi0rCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgJyVzIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgXAotKwkJCXByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lKTsgXAotKwlleGl0KGV2YWwpOyBcCi0rfSkKLSsKLSsvKiBBZnRlciBmYWlsZWQgZXhlY3ZwKCkgKi8KLSsjZGVmaW5lIEVYX0VYRUNfRkFJTEVECQkxMjYJLyogUHJvZ3JhbSBsb2NhdGVkLCBidXQgbm90IHVzYWJsZS4gKi8KLSsjZGVmaW5lIEVYX0VYRUNfRU5PRU5UCQkxMjcJLyogQ291bGQgbm90IGZpbmQgcHJvZ3JhbSB0byBleGVjLiAgKi8KLSsjZGVmaW5lIGVycmV4ZWMobmFtZSkJZXJyKGVycm5vID09IEVOT0VOVCA/IEVYX0VYRUNfRU5PRU5UIDogRVhfRVhFQ19GQUlMRUQsIFwKLSsJCQlfKCJmYWlsZWQgdG8gZXhlY3V0ZSAlcyIpLCBuYW1lKQotKwotKwotK3N0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoY29uc3QpKSBpbnQgaXNfcG93ZXJfb2ZfMih1bnNpZ25lZCBsb25nIG51bSkKLSt7Ci0rCXJldHVybiAobnVtICE9IDAgJiYgKChudW0gJiAobnVtIC0gMSkpID09IDApKTsKLSt9Ci0rCi0rI2lmbmRlZiBIQVZFX0xPRkZfVAotK3R5cGVkZWYgaW50NjRfdCBsb2ZmX3Q7Ci0rI2VuZGlmCi0rCi0rI2lmICFkZWZpbmVkKEhBVkVfRElSRkQpICYmICghZGVmaW5lZChIQVZFX0RFQ0xfRElSRkQpIHx8IEhBVkVfREVDTF9ESVJGRCA9PSAwKSAmJiBkZWZpbmVkKEhBVkVfRElSX0REX0ZEKQotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjaW5jbHVkZSA8ZGlyZW50Lmg+Ci0rc3RhdGljIGlubGluZSBpbnQgZGlyZmQoRElSICpkKQotK3sKLSsJcmV0dXJuIGQtPmRkX2ZkOwotK30KLSsjZW5kaWYKLSsKLSsvKgotKyAqIEZhbGxiYWNrIGRlZmluZXMgZm9yIG9sZCB2ZXJzaW9ucyBvZiBnbGliYwotKyAqLwotKyNpbmNsdWRlIDxmY250bC5oPgotKwotKyNpZmRlZiBPX0NMT0VYRUMKLSsjZGVmaW5lIFVMX0NMT0VYRUNTVFIJImUiCi0rI2Vsc2UKLSsjZGVmaW5lIFVMX0NMT0VYRUNTVFIJIiIKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIE9fQ0xPRVhFQwotKyNkZWZpbmUgT19DTE9FWEVDIDAKLSsjZW5kaWYKLSsKLSsjaWZkZWYgX19GcmVlQlNEX2tlcm5lbF9fCi0rI2lmbmRlZiBGX0RVUEZEX0NMT0VYRUMKLSsjZGVmaW5lIEZfRFVQRkRfQ0xPRVhFQwkxNwkvKiBMaWtlIEZfRFVQRkQsIGJ1dCBGRF9DTE9FWEVDIGlzIHNldCAqLwotKyNlbmRpZgotKyNlbmRpZgotKwotKwotKyNpZm5kZWYgQUlfQUREUkNPTkZJRwotKyNkZWZpbmUgQUlfQUREUkNPTkZJRyAweDAwMjAKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIElVVEY4Ci0rI2RlZmluZSBJVVRGOCAwMDQwMDAwCi0rI2VuZGlmCi0rCi0rLyoKLSsgKiBNQVhIT1NUTkFNRUxFTiByZXBsYWNlbWVudAotKyAqLwotK3N0YXRpYyBpbmxpbmUgc2l6ZV90IGdldF9ob3N0bmFtZV9tYXgodm9pZCkKLSt7Ci0rCWxvbmcgbGVuID0gc3lzY29uZihfU0NfSE9TVF9OQU1FX01BWCk7Ci0rCi0rCWlmICgwIDwgbGVuKQotKwkJcmV0dXJuIGxlbjsKLSsKLSsjaWZkZWYgTUFYSE9TVE5BTUVMRU4KLSsJcmV0dXJuIE1BWEhPU1ROQU1FTEVOOwotKyNlbGlmIEhPU1RfTkFNRV9NQVgKLSsJcmV0dXJuIEhPU1RfTkFNRV9NQVg7Ci0rI2VuZGlmCi0rCXJldHVybiA2NDsKLSt9Ci0rCi0rCi0rLyoKLSsgKiBDb25zdGFudCBzdHJpbmdzIGZvciB1c2FnZSgpIGZ1bmN0aW9ucy4gRm9yIG1vcmUgaW5mbyBzZWUKLSsgKiBEb2N1bWVudGF0aW9uL3tob3d0by11c2FnZS1mdW5jdGlvbi50eHQsYm9pbGVycGxhdGUuY30KLSsgKi8KLSsjZGVmaW5lIFVTQUdFX0hFQURFUiAgICAgKCJcblVzYWdlOlxuIikKLSsjZGVmaW5lIFVTQUdFX09QVElPTlMgICAgKCJcbk9wdGlvbnM6XG4iKQotKyNkZWZpbmUgVVNBR0VfRlVOQ1RJT05TICAoIlxuRnVuY3Rpb25zOlxuIikKLSsjZGVmaW5lIFVTQUdFX0NPTU1BTkRTICAgKCJcbkNvbW1hbmRzOlxuIikKLSsjZGVmaW5lIFVTQUdFX0NPTFVNTlMgICAgKCJcbkF2YWlsYWJsZSBvdXRwdXQgY29sdW1uczpcbiIpCi0rI2RlZmluZSBVU0FHRV9TRVBBUkFUT1IgICAgIlxuIgotKwotKyNkZWZpbmUgVVNBR0VfT1BUU1RSX0hFTFAgICAgICgiZGlzcGxheSB0aGlzIGhlbHAiKQotKyNkZWZpbmUgVVNBR0VfT1BUU1RSX1ZFUlNJT04gICgiZGlzcGxheSB2ZXJzaW9uIikKLSsKLSsjZGVmaW5lIFVTQUdFX0hFTFBfT1BUSU9OUyhtYXJnX2RzYykgXAotKwkJIiUtIiAjbWFyZ19kc2MgInMlc1xuIiBcCi0rCQkiJS0iICNtYXJnX2RzYyAicyVzXG4iIFwKLSsJCSwgIiAtaCwgLS1oZWxwIiwgICAgVVNBR0VfT1BUU1RSX0hFTFAgXAotKwkJLCAiIC1WLCAtLXZlcnNpb24iLCBVU0FHRV9PUFRTVFJfVkVSU0lPTgotKwotKyNkZWZpbmUgVVNBR0VfTUFOX1RBSUwoX21hbikgICAoIlxuRm9yIG1vcmUgZGV0YWlscyBzZWUgJXMuXG4iKSwgX21hbgotKwotKyNkZWZpbmUgVVRJTF9MSU5VWF9WRVJTSU9OICgiJXMgZnJvbSAlc1xuIiksIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lLCBQQUNLQUdFX1NUUklORwotKwotKyNkZWZpbmUgcHJpbnRfdmVyc2lvbihldmFsKSBfX2V4dGVuc2lvbl9fICh7IFwKLSsJCXByaW50ZihVVElMX0xJTlVYX1ZFUlNJT04pOyBcCi0rCQlleGl0KGV2YWwpOyBcCi0rfSkKLSsKLSsvKgotKyAqIHNjYW5mIG1vZGlmaWVycyBmb3IgInN0cmluZ3MgYWxsb2NhdGlvbiIKLSsgKi8KLSsjaWZkZWYgSEFWRV9TQ0FORl9NU19NT0RJRklFUgotKyNkZWZpbmUgVUxfU0NOc0EJIiVtcyIKLSsjZWxpZiBkZWZpbmVkKEhBVkVfU0NBTkZfQVNfTU9ESUZJRVIpCi0rI2RlZmluZSBVTF9TQ05zQQkiJWFzIgotKyNlbmRpZgotKwotKy8qCi0rICogc2VlayBzdHVmZgotKyAqLwotKyNpZm5kZWYgU0VFS19EQVRBCi0rIyBkZWZpbmUgU0VFS19EQVRBCTMKLSsjZW5kaWYKLSsjaWZuZGVmIFNFRUtfSE9MRQotKyMgZGVmaW5lIFNFRUtfSE9MRQk0Ci0rI2VuZGlmCi0rCi0rCi0rLyoKLSsgKiBNYWNyb3MgdG8gY29udmVydCAjZGVmaW5lJ2l0aW9ucyB0byBzdHJpbmdzLCBmb3IgZXhhbXBsZQotKyAqICNkZWZpbmUgWFlYWFkgNDIKLSsgKiBwcmludGYgKCIlcz0lc1xuIiwgc3RyaW5naWZ5KFhZWFhZKSwgc3RyaW5naWZ5X3ZhbHVlKFhZWFhZKSk7Ci0rICovCi0rI2RlZmluZSBzdHJpbmdpZnlfdmFsdWUocykgc3RyaW5naWZ5KHMpCi0rI2RlZmluZSBzdHJpbmdpZnkocykgI3MKLSsKLSsvKgotKyAqIFVMX0FTQU5fQkxBQ0tMSVNUIGlzIGEgbWFjcm8gdG8gdGVsbCBBZGRyZXNzU2FuaXRpemVyIChhIGNvbXBpbGUtdGltZQotKyAqIGluc3RydW1lbnRhdGlvbiBzaGlwcGVkIHdpdGggQ2xhbmcgYW5kIEdDQykgdG8gbm90IGluc3RydW1lbnQgdGhlCi0rICogYW5ub3RhdGVkIGZ1bmN0aW9uLiAgRnVydGhlcm1vcmUsIGl0IHdpbGwgcHJldmVudCB0aGUgY29tcGlsZXIgZnJvbQotKyAqIGlubGluaW5nIHRoZSBmdW5jdGlvbiBiZWNhdXNlIGlubGluaW5nIGN1cnJlbnRseSBicmVha3MgdGhlIGJsYWNrbGlzdGluZwotKyAqIG1lY2hhbmlzbSBvZiBBZGRyZXNzU2FuaXRpemVyLgotKyAqLwotKyNpZiBfX2hhc19mZWF0dXJlKGFkZHJlc3Nfc2FuaXRpemVyKSAmJiBfX2hhc19hdHRyaWJ1dGUobm9fc2FuaXRpemVfbWVtb3J5KSAmJiBfX2hhc19hdHRyaWJ1dGUobm9fc2FuaXRpemVfYWRkcmVzcykKLSsjIGRlZmluZSBVTF9BU0FOX0JMQUNLTElTVCBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIF9fYXR0cmlidXRlX18oKG5vX3Nhbml0aXplX21lbW9yeSkpIF9fYXR0cmlidXRlX18oKG5vX3Nhbml0aXplX2FkZHJlc3MpKQotKyNlbHNlCi0rIyBkZWZpbmUgVUxfQVNBTl9CTEFDS0xJU1QJLyogbm90aGluZyAqLwotKyNlbmRpZgotKwotKy8qCi0rICogTm90ZSB0aGF0IHN5c2NvbmYoX1NDX0dFVFBXX1JfU0laRV9NQVgpIHJldHVybnMgKmluaXRpYWwqIHN1Z2dlc3RlZCBzaXplIGZvcgotKyAqIHB3ZCBidWZmZXIgYW5kIGluIHNvbWUgY2FzZXMgaXQgaXMgbm90IGxhcmdlIGVub3VnaC4gU2VlIFBPU0lYIGFuZAotKyAqIGdldHB3bmFtX3IgbWFuIHBhZ2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgKi8KLSsjZGVmaW5lIFVMX0dFVFBXX0JVRlNJWgkoMTYgKiAxMDI0KQotKwotKy8qCi0rICogRGFyd2luIG9yIG90aGVyIEJTRHMgbWF5IG9ubHkgaGF2ZSBNQVBfQU5PTi4gVG8gZ2V0IGl0IG9uIERhcndpbiB3ZSBtdXN0Ci0rICogZGVmaW5lIF9EQVJXSU5fQ19TT1VSQ0UgYmVmb3JlIGluY2x1ZGluZyBzeXMvbW1hbi5oLiBXZSBkbyB0aGlzIGluIGNvbmZpZy5oLgotKyAqLwotKyNpZiAhZGVmaW5lZCBNQVBfQU5PTllNT1VTICYmIGRlZmluZWQgTUFQX0FOT04KLSsjIGRlZmluZSBNQVBfQU5PTllNT1VTICAoTUFQX0FOT04pCi0rI2VuZGlmCi0rCi0rI2VuZGlmIC8qIFVUSUxfTElOVVhfQ19IICovCi0tLS0gL2Rldi9udWxsCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMveGFsbG9jLmgKLUBAIC0wLDAgKzEsMTI5IEBACi0rLyoKLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTAgRGF2aWRsb2hyIEJ1ZXNvIDxkYXZlQGdudS5vcmc+Ci0rICoKLSsgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQotKyAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsgKgotKyAqIEdlbmVyYWwgbWVtb3J5IGFsbG9jYXRpb24gd3JhcHBlcnMgZm9yIG1hbGxvYywgcmVhbGxvYywgY2FsbG9jIGFuZCBzdHJkdXAKLSsgKi8KLSsKLSsjaWZuZGVmIFVUSUxfTElOVVhfWEFMTE9DX0gKLSsjZGVmaW5lIFVUSUxfTElOVVhfWEFMTE9DX0gKLSsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKwotKyNpbmNsdWRlICJjLmgiCi0rCi0rI2lmbmRlZiBYQUxMT0NfRVhJVF9DT0RFCi0rIyBkZWZpbmUgWEFMTE9DX0VYSVRfQ09ERSBFWElUX0ZBSUxVUkUKLSsjZW5kaWYKLSsKLStzdGF0aWMgaW5saW5lIHZvaWQgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSkKLStfX2Vycl9vb20oY29uc3QgY2hhciAqZmlsZSwgdW5zaWduZWQgaW50IGxpbmUpCi0rewotKwllcnIoWEFMTE9DX0VYSVRfQ09ERSwgIiVzOiAldTogY2Fubm90IGFsbG9jYXRlIG1lbW9yeSIsIGZpbGUsIGxpbmUpOwotK30KLSsKLSsjZGVmaW5lIGVycl9vb20oKQlfX2Vycl9vb20oX19GSUxFX18sIF9fTElORV9fKQotKwotK3N0YXRpYyBpbmxpbmUgX191bF9hbGxvY19zaXplKDEpIF9fdWxfcmV0dXJuc19ub25udWxsCi0rdm9pZCAqeG1hbGxvYyhjb25zdCBzaXplX3Qgc2l6ZSkKLSt7Ci0rICAgICAgICB2b2lkICpyZXQgPSBtYWxsb2Moc2l6ZSk7Ci0rCi0rICAgICAgICBpZiAoIXJldCAmJiBzaXplKQotKyAgICAgICAgICAgICAgICBlcnIoWEFMTE9DX0VYSVRfQ09ERSwgImNhbm5vdCBhbGxvY2F0ZSAlenUgYnl0ZXMiLCBzaXplKTsKLSsgICAgICAgIHJldHVybiByZXQ7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgX191bF9hbGxvY19zaXplKDIpIF9fdWxfcmV0dXJuc19ub25udWxsCi0rdm9pZCAqeHJlYWxsb2Modm9pZCAqcHRyLCBjb25zdCBzaXplX3Qgc2l6ZSkKLSt7Ci0rICAgICAgICB2b2lkICpyZXQgPSByZWFsbG9jKHB0ciwgc2l6ZSk7Ci0rCi0rICAgICAgICBpZiAoIXJldCAmJiBzaXplKQotKyAgICAgICAgICAgICAgICBlcnIoWEFMTE9DX0VYSVRfQ09ERSwgImNhbm5vdCBhbGxvY2F0ZSAlenUgYnl0ZXMiLCBzaXplKTsKLSsgICAgICAgIHJldHVybiByZXQ7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgX191bF9jYWxsb2Nfc2l6ZSgxLCAyKSBfX3VsX3JldHVybnNfbm9ubnVsbAotK3ZvaWQgKnhjYWxsb2MoY29uc3Qgc2l6ZV90IG5lbGVtcywgY29uc3Qgc2l6ZV90IHNpemUpCi0rewotKyAgICAgICAgdm9pZCAqcmV0ID0gY2FsbG9jKG5lbGVtcywgc2l6ZSk7Ci0rCi0rICAgICAgICBpZiAoIXJldCAmJiBzaXplICYmIG5lbGVtcykKLSsgICAgICAgICAgICAgICAgZXJyKFhBTExPQ19FWElUX0NPREUsICJjYW5ub3QgYWxsb2NhdGUgJXp1IGJ5dGVzIiwgc2l6ZSk7Ci0rICAgICAgICByZXR1cm4gcmV0OwotK30KLSsKLStzdGF0aWMgaW5saW5lIGNoYXIgX19hdHRyaWJ1dGVfXygod2Fybl91bnVzZWRfcmVzdWx0KSkgX191bF9yZXR1cm5zX25vbm51bGwKLSsqeHN0cmR1cChjb25zdCBjaGFyICpzdHIpCi0rewotKyAgICAgICAgY2hhciAqcmV0OwotKwotKyAgICAgICAgaWYgKCFzdHIpCi0rICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotKwotKyAgICAgICAgcmV0ID0gc3RyZHVwKHN0cik7Ci0rCi0rICAgICAgICBpZiAoIXJldCkKLSsgICAgICAgICAgICAgICAgZXJyKFhBTExPQ19FWElUX0NPREUsICJjYW5ub3QgZHVwbGljYXRlIHN0cmluZyIpOwotKyAgICAgICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSBjaGFyICogX19hdHRyaWJ1dGVfXygod2Fybl91bnVzZWRfcmVzdWx0KSkgX191bF9yZXR1cm5zX25vbm51bGwKLSt4c3RybmR1cChjb25zdCBjaGFyICpzdHIsIHNpemVfdCBzaXplKQotK3sKLSsgICAgICAgIGNoYXIgKnJldDsKLSsKLSsgICAgICAgIGlmICghc3RyKQotKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSsKLSsgICAgICAgIHJldCA9IHN0cm5kdXAoc3RyLCBzaXplKTsKLSsKLSsgICAgICAgIGlmICghcmV0KQotKyAgICAgICAgICAgICAgICBlcnIoWEFMTE9DX0VYSVRfQ09ERSwgImNhbm5vdCBkdXBsaWNhdGUgc3RyaW5nIik7Ci0rICAgICAgICByZXR1cm4gcmV0OwotK30KLSsKLSsKLStzdGF0aWMgaW5saW5lIGludCBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyhwcmludGYsIDIsIDMpKSkKLSsgICAgeGFzcHJpbnRmKGNoYXIgKipzdHJwLCBjb25zdCBjaGFyICpmbXQsIC4uLikKLSt7Ci0rCWludCByZXQ7Ci0rCXZhX2xpc3QgYXJnczsKLSsJdmFfc3RhcnQoYXJncywgZm10KTsKLSsJcmV0ID0gdmFzcHJpbnRmKCYoKnN0cnApLCBmbXQsIGFyZ3MpOwotKwl2YV9lbmQoYXJncyk7Ci0rCWlmIChyZXQgPCAwKQotKwkJZXJyKFhBTExPQ19FWElUX0NPREUsICJjYW5ub3QgYWxsb2NhdGUgc3RyaW5nIik7Ci0rCXJldHVybiByZXQ7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgaW50ICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyhwcmludGYsIDIsIDApKSkKLSt4dmFzcHJpbnRmKGNoYXIgKipzdHJwLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXApCi0rewotKwlpbnQgcmV0ID0gdmFzcHJpbnRmKCYoKnN0cnApLCBmbXQsIGFwKTsKLSsJaWYgKHJldCA8IDApCi0rCQllcnIoWEFMTE9DX0VYSVRfQ09ERSwgImNhbm5vdCBhbGxvY2F0ZSBzdHJpbmciKTsKLSsJcmV0dXJuIHJldDsKLSt9Ci0rCi0rCi0rc3RhdGljIGlubGluZSBjaGFyICogX19hdHRyaWJ1dGVfXygod2Fybl91bnVzZWRfcmVzdWx0KSkgeGdldGhvc3RuYW1lKHZvaWQpCi0rewotKwljaGFyICpuYW1lOwotKwlzaXplX3Qgc3ogPSBnZXRfaG9zdG5hbWVfbWF4KCkgKyAxOwotKwotKwluYW1lID0geG1hbGxvYyhzaXplb2YoY2hhcikgKiBzeik7Ci0rCi0rCWlmIChnZXRob3N0bmFtZShuYW1lLCBzeikgIT0gMCkgewotKwkJZnJlZShuYW1lKTsKLSsJCXJldHVybiBOVUxMOwotKwl9Ci0rCW5hbWVbc3ogLSAxXSA9ICdcMCc7Ci0rCXJldHVybiBuYW1lOwotK30KLSsKLSsjZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvYWxsb3ctY29tcGlsZS1zZXBhcmF0ZS1mcm9tLXV0aWwtbGludXgtaGFyZGxpbmsucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL2FsbG93LWNvbXBpbGUtc2VwYXJhdGUtZnJvbS11dGlsLWxpbnV4LWhhcmRsaW5rLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTQ4ZWJmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvYWxsb3ctY29tcGlsZS1zZXBhcmF0ZS1mcm9tLXV0aWwtbGludXgtaGFyZGxpbmsucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMjYgKzAsMCBAQAotLS0tCi0gbG9jYWxlL3Byb2dyYW1zL2MuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiAKLSBsb2NhbGUvcHJvZ3JhbXMvY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLmMgfCAgIDc5ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKLQotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLmMKLUBAIC0yMCw2ICsyMCw4IEBACi0gICogd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKLSAgKiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgotICAqLwotKwotKyN1bmRlZiBIQVZFX1BDUkUKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxnZXRvcHQuaD4KLUBAIC0zOCw4ICs0MCw4IEBACi0gCi0gI2luY2x1ZGUgImMuaCIKLSAjaW5jbHVkZSAieGFsbG9jLmgiCi0tI2luY2x1ZGUgIm5scy5oIgotLSNpbmNsdWRlICJjbG9zZXN0cmVhbS5oIgotKy8vI2luY2x1ZGUgIm5scy5oIgotKy8vI2luY2x1ZGUgImNsb3Nlc3RyZWFtLmgiCi0gCi0gI2RlZmluZSBOSEFTSCAgICgxPDwxNykgIC8qIE11c3QgYmUgYSBwb3dlciBvZiAyISAqLwotICNkZWZpbmUgTkJVRiAgICA2NAotQEAgLTEyNCwzMyArMTI2LDMzIEBAIHN0YXRpYyB2b2lkIHByaW50X3N1bW1hcnkodm9pZCkKLSAJaWYgKGN0bC0+dmVyYm9zZSA+IDEgJiYgY3RsLT5ubGlua3MpCi0gCQlmcHV0YygnXG4nLCBzdGRvdXQpOwotIAotLQlwcmludGYoXygiRGlyZWN0b3JpZXM6ICAgJTlsbGRcbiIpLCBjdGwtPm5kaXJzKTsKLS0JcHJpbnRmKF8oIk9iamVjdHM6ICAgICAgICU5bGxkXG4iKSwgY3RsLT5ub2JqZWN0cyk7Ci0tCXByaW50ZihfKCJSZWd1bGFyIGZpbGVzOiAlOWxsZFxuIiksIGN0bC0+bnJlZ2ZpbGVzKTsKLS0JcHJpbnRmKF8oIkNvbXBhcmlzb25zOiAgICU5bGxkXG4iKSwgY3RsLT5uY29tcCk7Ci0rCXByaW50ZigoIkRpcmVjdG9yaWVzOiAgICU5bGxkXG4iKSwgY3RsLT5uZGlycyk7Ci0rCXByaW50ZigoIk9iamVjdHM6ICAgICAgICU5bGxkXG4iKSwgY3RsLT5ub2JqZWN0cyk7Ci0rCXByaW50ZigoIlJlZ3VsYXIgZmlsZXM6ICU5bGxkXG4iKSwgY3RsLT5ucmVnZmlsZXMpOwotKwlwcmludGYoKCJDb21wYXJpc29uczogICAlOWxsZFxuIiksIGN0bC0+bmNvbXApOwotIAlwcmludGYoICAiJXMlOWxsZFxuIiwgKGN0bC0+bm9fbGluayA/Ci0tCSAgICAgICBfKCJXb3VsZCBsaW5rOiAgICAiKSA6Ci0tCSAgICAgICBfKCJMaW5rZWQ6ICAgICAgICAiKSksIGN0bC0+bmxpbmtzKTsKLSsJICAgICAgICgiV291bGQgbGluazogICAgIikgOgotKwkgICAgICAgKCJMaW5rZWQ6ICAgICAgICAiKSksIGN0bC0+bmxpbmtzKTsKLSAJcHJpbnRmKCAgIiVzICU5bGxkXG4iLCAoY3RsLT5ub19saW5rID8KLS0JICAgICAgIF8oIldvdWxkIHNhdmU6ICAgIikgOgotLQkgICAgICAgXygiU2F2ZWQ6ICAgICAgICAiKSksIGN0bC0+bnNhdmVkKTsKLSsJICAgICAgICgiV291bGQgc2F2ZTogICAiKSA6Ci0rCSAgICAgICAoIlNhdmVkOiAgICAgICAgIikpLCBjdGwtPm5zYXZlZCk7Ci0gfQotIAotIHN0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpIHVzYWdlKHZvaWQpCi0gewotIAlmcHV0cyhVU0FHRV9IRUFERVIsIHN0ZG91dCk7Ci0tCXByaW50ZihfKCIgJXMgW29wdGlvbnNdIGRpcmVjdG9yeS4uLlxuIiksIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lKTsKLSsJcHJpbnRmKCgiICVzIFtvcHRpb25zXSBkaXJlY3RvcnkuLi5cbiIpLCBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSk7Ci0gCi0gCWZwdXRzKFVTQUdFX1NFUEFSQVRPUiwgc3Rkb3V0KTsKLS0JcHV0cyhfKCJDb25zb2xpZGF0ZSBkdXBsaWNhdGUgZmlsZXMgdXNpbmcgaGFyZGxpbmtzLiIpKTsKLSsJcHV0cygoIkNvbnNvbGlkYXRlIGR1cGxpY2F0ZSBmaWxlcyB1c2luZyBoYXJkbGlua3MuIikpOwotIAotIAlmcHV0cyhVU0FHRV9PUFRJT05TLCBzdGRvdXQpOwotLQlwdXRzKF8oIiAtYywgLS1jb250ZW50ICAgICAgICAgIGNvbXBhcmUgb25seSBjb250ZW50cywgaWdub3JlIHBlcm1pc3Npb24sIGV0Yy4iKSk7Ci0tCXB1dHMoXygiIC1uLCAtLWRyeS1ydW4gICAgICAgICAgZG9uJ3QgYWN0dWFsbHkgbGluayBhbnl0aGluZyIpKTsKLS0JcHV0cyhfKCIgLXYsIC0tdmVyYm9zZSAgICAgICAgICBwcmludCBzdW1tYXJ5IGFmdGVyIGhhcmRsaW5raW5nIikpOwotLQlwdXRzKF8oIiAtdnYgICAgICAgICAgICAgICAgICAgIHByaW50IGV2ZXJ5IGhhcmRsaW5rZWQgZmlsZSBhbmQgc3VtbWFyeSIpKTsKLS0JcHV0cyhfKCIgLWYsIC0tZm9yY2UgICAgICAgICAgICBmb3JjZSBoYXJkbGlua2luZyBhY3Jvc3MgZmlsZXN5c3RlbXMiKSk7Ci0tCXB1dHMoXygiIC14LCAtLWV4Y2x1ZGUgPHJlZ2V4PiAgZXhjbHVkZSBmaWxlcyBtYXRjaGluZyBwYXR0ZXJuIikpOwotKwlwdXRzKCgiIC1jLCAtLWNvbnRlbnQgICAgICAgICAgY29tcGFyZSBvbmx5IGNvbnRlbnRzLCBpZ25vcmUgcGVybWlzc2lvbiwgZXRjLiIpKTsKLSsJcHV0cygoIiAtbiwgLS1kcnktcnVuICAgICAgICAgIGRvbid0IGFjdHVhbGx5IGxpbmsgYW55dGhpbmciKSk7Ci0rCXB1dHMoKCIgLXYsIC0tdmVyYm9zZSAgICAgICAgICBwcmludCBzdW1tYXJ5IGFmdGVyIGhhcmRsaW5raW5nIikpOwotKwlwdXRzKCgiIC12diAgICAgICAgICAgICAgICAgICAgcHJpbnQgZXZlcnkgaGFyZGxpbmtlZCBmaWxlIGFuZCBzdW1tYXJ5IikpOwotKwlwdXRzKCgiIC1mLCAtLWZvcmNlICAgICAgICAgICAgZm9yY2UgaGFyZGxpbmtpbmcgYWNyb3NzIGZpbGVzeXN0ZW1zIikpOwotKwlwdXRzKCgiIC14LCAtLWV4Y2x1ZGUgPHJlZ2V4PiAgZXhjbHVkZSBmaWxlcyBtYXRjaGluZyBwYXR0ZXJuIikpOwotIAotIAlmcHV0cyhVU0FHRV9TRVBBUkFUT1IsIHN0ZG91dCk7Ci0gCXByaW50ZihVU0FHRV9IRUxQX09QVElPTlMoMTYpKTsgLyogY2hhciBvZmZzZXQgdG8gYWxpZ24gb3B0aW9uIGRlc2NyaXB0aW9ucyAqLwotQEAgLTE2NCw3ICsxNjYsNyBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBhZGQyKHNpemVfdCBhLCBzaXplCi0gCXNpemVfdCBzdW0gPSBhICsgYjsKLSAKLSAJaWYgKHN1bSA8IGEpCi0tCQllcnJ4KEVYSVRfRkFJTFVSRSwgXygiaW50ZWdlciBvdmVyZmxvdyIpKTsKLSsJCWVycngoRVhJVF9GQUlMVVJFLCAoImludGVnZXIgb3ZlcmZsb3ciKSk7Ci0gCXJldHVybiBzdW07Ci0gfQotIAotQEAgLTE5Myw3ICsxOTUsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3BhdGgoc3RydWN0IGhhcmRsaW5rCi0gCWlmIChzdC5zdF9kZXYgIT0gY3RsLT5kZXYgJiYgIWN0bC0+Zm9yY2UpIHsKLSAJCWlmIChjdGwtPmRldikKLSAJCQllcnJ4KEVYSVRfRkFJTFVSRSwKLS0JCQkgICAgIF8oIiVzIGlzIG9uIGRpZmZlcmVudCBmaWxlc3lzdGVtIHRoYW4gdGhlIHJlc3QgIgotKwkJCSAgICAgKCIlcyBpcyBvbiBkaWZmZXJlbnQgZmlsZXN5c3RlbSB0aGFuIHRoZSByZXN0ICIKLSAJCQkgICAgICAgIih1c2UgLWYgb3B0aW9uIHRvIG92ZXJyaWRlKS4iKSwgbmFtZSk7Ci0gCQljdGwtPmRldiA9IHN0LnN0X2RldjsKLSAJfQotQEAgLTI4Nyw5ICsyODksOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3BhdGgoc3RydWN0IGhhcmRsaW5rCi0gCQkJCQkJCShzc2l6ZV90KSBzaXplb2YoY3RsLT5pb2J1ZjEpIDogZnNpemU7Ci0gCi0gCQkJCQlpZiAoKHhzeiA9IHJlYWQoZmQsIGN0bC0+aW9idWYxLCByc2l6ZSkpICE9IHJzaXplKQotLQkJCQkJCXdhcm4oXygiY2Fubm90IHJlYWQgJXMiKSwgbmFtZSk7Ci0rCQkJCQkJd2FybigoImNhbm5vdCByZWFkICVzIiksIG5hbWUpOwotIAkJCQkJZWxzZSBpZiAoKHhzeiA9IHJlYWQoZmQyLCBjdGwtPmlvYnVmMiwgcnNpemUpKSAhPSByc2l6ZSkKLS0JCQkJCQl3YXJuKF8oImNhbm5vdCByZWFkICVzIiksIGZwMi0+bmFtZSk7Ci0rCQkJCQkJd2FybigoImNhbm5vdCByZWFkICVzIiksIGZwMi0+bmFtZSk7Ci0gCi0gCQkJCQlpZiAoeHN6ICE9IHJzaXplKSB7Ci0gCQkJCQkJY2xvc2UoZmQpOwotQEAgLTMwMywxMyArMzA1LDEzIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfcGF0aChzdHJ1Y3QgaGFyZGxpbmsKLSAJCQkJaWYgKGZzaXplID4gMCkKLSAJCQkJCWNvbnRpbnVlOwotIAkJCQlpZiAobHN0YXQobmFtZSwgJnN0MykpIHsKLS0JCQkJCXdhcm4oXygiY2Fubm90IHN0YXQgJXMiKSwgbmFtZSk7Ci0rCQkJCQl3YXJuKCgiY2Fubm90IHN0YXQgJXMiKSwgbmFtZSk7Ci0gCQkJCQljbG9zZShmZCk7Ci0gCQkJCQlyZXR1cm47Ci0gCQkJCX0KLSAJCQkJc3QzLnN0X2F0aW1lID0gc3Quc3RfYXRpbWU7Ci0gCQkJCWlmIChzdGNtcCgmc3QsICZzdDMsIDApKSB7Ci0tCQkJCQl3YXJueChfKCJmaWxlICVzIGNoYW5nZWQgdW5kZXJuZWF0aCB1cyIpLCBuYW1lKTsKLSsJCQkJCXdhcm54KCgiZmlsZSAlcyBjaGFuZ2VkIHVuZGVybmVhdGggdXMiKSwgbmFtZSk7Ci0gCQkJCQljbG9zZShmZCk7Ci0gCQkJCQlyZXR1cm47Ci0gCQkJCX0KLUBAIC0zMjksMTggKzMzMSwxOCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3BhdGgoc3RydWN0IGhhcmRsaW5rCi0gCQkJCQkgICAgICAgc3VmZml4bGVuICsgMSk7Ci0gCQkJCQkvKiBGaXJzdCBjcmVhdGUgYSB0ZW1wb3JhcnkgbGluayB0byBuMSB1bmRlciBhIG5ldyBuYW1lICovCi0gCQkJCQlpZiAobGluayhuMSwgbmFtMi5idWYpKSB7Ci0tCQkJCQkJd2FybihfKCJmYWlsZWQgdG8gaGFyZGxpbmsgJXMgdG8gJXMgKGNyZWF0ZSB0ZW1wb3JhcnkgbGluayBhcyAlcyBmYWlsZWQpIiksCi0rCQkJCQkJd2FybigoImZhaWxlZCB0byBoYXJkbGluayAlcyB0byAlcyAoY3JlYXRlIHRlbXBvcmFyeSBsaW5rIGFzICVzIGZhaWxlZCkiKSwKLSAJCQkJCQkJbjEsIG4yLCBuYW0yLmJ1Zik7Ci0gCQkJCQkJZnJlZShuYW0yLmJ1Zik7Ci0gCQkJCQkJY29udGludWU7Ci0gCQkJCQl9Ci0gCQkJCQkvKiBUaGVuIHJlbmFtZSBpbnRvIHBsYWNlIG92ZXIgdGhlIGV4aXN0aW5nIG4yICovCi0gCQkJCQlpZiAocmVuYW1lKG5hbTIuYnVmLCBuMikpIHsKLS0JCQkJCQl3YXJuKF8oImZhaWxlZCB0byBoYXJkbGluayAlcyB0byAlcyAocmVuYW1lIHRlbXBvcmFyeSBsaW5rIHRvICVzIGZhaWxlZCkiKSwKLSsJCQkJCQl3YXJuKCgiZmFpbGVkIHRvIGhhcmRsaW5rICVzIHRvICVzIChyZW5hbWUgdGVtcG9yYXJ5IGxpbmsgdG8gJXMgZmFpbGVkKSIpLAotIAkJCQkJCQluMSwgbjIsIG4yKTsKLSAJCQkJCQkvKiBTb21ldGhpbmcgd2VudCB3cm9uZywgdHJ5IHRvIHJlbW92ZSB0aGUgbm93IHJlZHVuZGFudCB0ZW1wb3JhcnkgbGluayAqLwotIAkJCQkJCWlmICh1bmxpbmsobmFtMi5idWYpKQotLQkJCQkJCQl3YXJuKF8oImZhaWxlZCB0byByZW1vdmUgdGVtcG9yYXJ5IGxpbmsgJXMiKSwgbmFtMi5idWYpOwotKwkJCQkJCQl3YXJuKCgiZmFpbGVkIHRvIHJlbW92ZSB0ZW1wb3JhcnkgbGluayAlcyIpLCBuYW0yLmJ1Zik7Ci0gCQkJCQkJZnJlZShuYW0yLmJ1Zik7Ci0gCQkJCQkJY29udGludWU7Ci0gCQkJCQl9Ci1AQCAtMzUxLDE2ICszNTMsMTYgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19wYXRoKHN0cnVjdCBoYXJkbGluawotIAkJCQkJLyogV2UgYWN0dWFsbHkgZGlkIG5vdCBzYXZlIGFueXRoaW5nIHRoaXMgdGltZSwgc2luY2UgdGhlIGxpbmsgc2Vjb25kIGFyZ3VtZW50Ci0gCQkJCQkgICBoYWQgc29tZSBvdGhlciBsaW5rcyBhcyB3ZWxsLiAgKi8KLSAJCQkJCWlmIChjdGwtPnZlcmJvc2UgPiAxKQotLQkJCQkJCXByaW50ZihfKCIgJXMgJXMgdG8gJXNcbiIpLAotLQkJCQkJCQkoY3RsLT5ub19saW5rID8gXygiV291bGQgbGluayIpIDogXygiTGlua2VkIikpLAotKwkJCQkJCXByaW50ZigoIiAlcyAlcyB0byAlc1xuIiksCi0rCQkJCQkJCShjdGwtPm5vX2xpbmsgPyAoIldvdWxkIGxpbmsiKSA6ICgiTGlua2VkIikpLAotIAkJCQkJCQluMSwgbjIpOwotIAkJCQl9IGVsc2UgewotIAkJCQkJY3RsLT5uc2F2ZWQgKz0gKChzdC5zdF9zaXplICsgNDA5NSkgLyA0MDk2KSAqIDQwOTY7Ci0gCQkJCQlpZiAoY3RsLT52ZXJib3NlID4gMSkKLS0JCQkJCQlwcmludGYoXygiICVzICVzIHRvICVzLCAlcyAlamRcbiIpLAotLQkJCQkJCQkoY3RsLT5ub19saW5rID8gXygiV291bGQgbGluayIpIDogXygiTGlua2VkIikpLAotKwkJCQkJCXByaW50ZigoIiAlcyAlcyB0byAlcywgJXMgJWpkXG4iKSwKLSsJCQkJCQkJKGN0bC0+bm9fbGluayA/ICgiV291bGQgbGluayIpIDogKCJMaW5rZWQiKSksCi0gCQkJCQkJCW4xLCBuMiwKLS0JCQkJCQkJKGN0bC0+bm9fbGluayA/IF8oIndvdWxkIHNhdmUiKSA6IF8oInNhdmVkIikpLAotKwkJCQkJCQkoY3RsLT5ub19saW5rID8gKCJ3b3VsZCBzYXZlIikgOiAoInNhdmVkIikpLAotIAkJCQkJCQkoaW50bWF4X3Qpc3Quc3Rfc2l6ZSk7Ci0gCQkJCX0KLSAJCQkJY2xvc2UoZmQpOwotQEAgLTQxMCwxMSArNDEyLDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJeyBOVUxMLCAwLCBOVUxMLCAwIH0sCi0gCX07Ci0gCi0tCXNldGxvY2FsZShMQ19BTEwsICIiKTsKLS0JYmluZHRleHRkb21haW4oUEFDS0FHRSwgTE9DQUxFRElSKTsKLS0JdGV4dGRvbWFpbihQQUNLQUdFKTsKLS0JY2xvc2Vfc3Rkb3V0X2F0ZXhpdCgpOwotLQotIAl3aGlsZSAoKGNoID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImNudmZ4OlZoIiwgbG9uZ29wdHMsIE5VTEwpKSAhPSAtMSkgewotIAkJc3dpdGNoIChjaCkgewotIAkJY2FzZSAnbic6Ci1AQCAtNDM0LDcgKzQzMSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCQlleGNsdWRlX3BhdHRlcm4gPSAoUENSRTJfU1BUUikgb3B0YXJnOwotICNlbHNlCi0gCQkJZXJyeChFWElUX0ZBSUxVUkUsCi0tCQkJICAgICBfKCJvcHRpb24gLS1leGNsdWRlIG5vdCBzdXBwb3J0ZWQgKGJ1aWx0IHdpdGhvdXQgcGNyZTIpIikpOwotKwkJCSAgICAgKCJvcHRpb24gLS1leGNsdWRlIG5vdCBzdXBwb3J0ZWQgKGJ1aWx0IHdpdGhvdXQgcGNyZTIpIikpOwotICNlbmRpZgotIAkJCWJyZWFrOwotIAkJY2FzZSAnVic6Ci1AQCAtNDQ3LDcgKzQ0NCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJfQotIAotIAlpZiAob3B0aW5kID09IGFyZ2MpIHsKLS0JCXdhcm54KF8oIm5vIGRpcmVjdG9yeSBzcGVjaWZpZWQiKSk7Ci0rCQl3YXJueCgoIm5vIGRpcmVjdG9yeSBzcGVjaWZpZWQiKSk7Ci0gCQllcnJ0cnloZWxwKEVYSVRfRkFJTFVSRSk7Ci0gCX0KLSAKLUBAIC00NjEsNyArNDU4LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCVBDUkUyX1VDSEFSIGJ1ZmZlclsyNTZdOwotIAkJCXBjcmUyX2dldF9lcnJvcl9tZXNzYWdlKGVycm9ybnVtYmVyLCBidWZmZXIsCi0gCQkJCQkJc2l6ZW9mKGJ1ZmZlcikpOwotLQkJCWVycngoRVhJVF9GQUlMVVJFLCBfKCJwYXR0ZXJuIGVycm9yIGF0IG9mZnNldCAlZDogJXMiKSwKLSsJCQllcnJ4KEVYSVRfRkFJTFVSRSwgKCJwYXR0ZXJuIGVycm9yIGF0IG9mZnNldCAlZDogJXMiKSwKLSAJCQkJKGludCllcnJvcm9mZnNldCwgYnVmZmVyKTsKLSAJCX0KLSAJCW1hdGNoX2RhdGEgPSBwY3JlMl9tYXRjaF9kYXRhX2NyZWF0ZV9mcm9tX3BhdHRlcm4ocmUsIE5VTEwpOwotQEAgLTUwNiw3ICs1MDMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQkJICAgID49MCkgewotIAkJCQlpZiAoY3RsLT52ZXJib3NlKSB7Ci0gCQkJCQluYW0xLmJ1ZltuYW0xYmFzZWxlbl0gPSAwOwotLQkJCQkJcHJpbnRmKF8oIlNraXBwaW5nICVzJXNcbiIpLCBuYW0xLmJ1ZiwgZGktPmRfbmFtZSk7Ci0rCQkJCQlwcmludGYoKCJTa2lwcGluZyAlcyVzXG4iKSwgbmFtMS5idWYsIGRpLT5kX25hbWUpOwotIAkJCQl9Ci0gCQkJCWNvbnRpbnVlOwotIAkJCX0KLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9jLmgKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9jLmgKLUBAIC0yNDAsNyArMjQwLDcgQEAgZXJybXNnKGNoYXIgZG9leGl0LCBpbnQgZXhjb2RlLCBjaGFyIGFkZAotIC8qIERvbid0IHVzZSBpbmxpbmUgZnVuY3Rpb24gdG8gYXZvaWQgJyNpbmNsdWRlICJubHMuaCInIGluIGMuaAotICAqLwotICNkZWZpbmUgZXJydHJ5aGVscChldmFsKSBfX2V4dGVuc2lvbl9fICh7IFwKLS0JZnByaW50ZihzdGRlcnIsIF8oIlRyeSAnJXMgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBcCi0rCWZwcmludGYoc3RkZXJyLCAoIlRyeSAnJXMgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBcCi0gCQkJcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUpOyBcCi0gCWV4aXQoZXZhbCk7IFwKLSB9KQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliY18yLjMwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliY18yLjMwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2FkZDMzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4zMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi1yZXF1aXJlIGdsaWJjLmluYwotcmVxdWlyZSBnbGliYy12ZXJzaW9uLmluYwotCi1ERVBFTkRTICs9ICJncGVyZi1uYXRpdmUgYmlzb24tbmF0aXZlIG1ha2UtbmF0aXZlIgotCi1OQVRJVkVTREtGSVhFUyA/PSAiIgotTkFUSVZFU0RLRklYRVNfY2xhc3MtbmF0aXZlc2RrID0gIlwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1uYXRpdmVzZGstZ2xpYmMtTWFrZS1yZWxvY2F0YWJsZS1pbnN0YWxsLWZvci1sb2NhbGVzLnBhdGNoIFwKLSIKLQotU1JDX1VSSSA9ICAiJHtHTElCQ19HSVRfVVJJfTticmFuY2g9JHtTUkNCUkFOQ0h9O25hbWU9Z2xpYmMgXAotICAgICAgICAgICBmaWxlOi8vZXRjL2xkLnNvLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtc3VwcG9ydGVkLm1rIFwKLSAgICAgICAgICAgZmlsZTovL21ha2VkYnMuc2ggXAotICAgICAgICAgICBcCi0gICAgICAgICAgICR7TkFUSVZFU0RLRklYRVN9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMS1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMy1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTQtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNS15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE2LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNy1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTgtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE5LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMC1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjEtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjQtbG9jYWxlZGVmLWFkZC10by1hcmNoaXZlLXVzZXMtYS1oYXJkLWNvZGVkLWxvY2FsZS1wYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI1LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNi1pbnRsLUVtaXQtbm8tbGluZXMtaW4tYmlzb24tZ2VuZXJhdGVkLWZpbGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjctaW5qZWN0LWZpbGUtYXNzZW1ibHktZGlyZWN0aXZlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI4LWxvY2FsZS1wcmV2ZW50LW1heWJlLXVuaW5pdGlhbGl6ZWQtZXJyb3JzLXdpdGgtT3MtQloucGF0Y2ggXAotICAgICAgICAgICAiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotQiA9ICIke1dPUktESVJ9L2J1aWxkLSR7VEFSR0VUX1NZU30iCi0KLVBBQ0tBR0VTX0RZTkFNSUMgPSAiIgotCi0jIHRoZSAtaXN5c3RlbSBpbiBiaXRiYWtlLmNvbmYgc2NyZXdzIHVwIGdsaWJjIGRvX3N0YWdlCi1CVUlMRF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSIKLVRBUkdFVF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7aW5jbHVkZWRpcn0iCi0KLUdMSUJDX0JST0tFTl9MT0NBTEVTID0gIiIKLQotR0xJQkNQSUUgPz89ICIiCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1rZXJuZWw9JHtPTERFU1RfS0VSTkVMfSBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXByb2ZpbGUgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kZWJ1ZyAtLXdpdGhvdXQtZ2QgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWNsb2NhbGU9Z251IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtaGVhZGVycz0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXNlbGludXggXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXR1bmFibGVzIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1iaW5kLW5vdyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtc3RhY2stcHJvdGVjdG9yPXN0cm9uZyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtc3RhY2tndWFyZC1yYW5kb21pemF0aW9uIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtY3J5cHQgXAotICAgICAgICAgICAgICAgIC0td2l0aC1kZWZhdWx0LWxpbmsgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLW5zY2QgXAotICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnU0VMRUNURURfT1BUSU1JWkFUSU9OJywgJy1PMCAtT2cnLCAnLS1kaXNhYmxlLXdlcnJvcicsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICR7R0xJQkNQSUV9IFwKLSAgICAgICAgICAgICAgICAke0dMSUJDX0VYVFJBX09FQ09ORn0iCi0KLUVYVFJBX09FQ09ORiArPSAiJHtAZ2V0X2xpYmNfZnB1X3NldHRpbmcoYmIsIGQpfSIKLQotZG9fcGF0Y2hfYXBwZW5kKCkgewotICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fZml4X3JlYWRsaWJfYycsIGQpCi19Ci0KLWRvX2ZpeF9yZWFkbGliX2MgKCkgewotCXNlZCAtaSAtZSAncyNPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMjJHtFR0xJQkNfS05PV05fSU5URVJQUkVURVJfTkFNRVN9IycgJHtTfS9lbGYvcmVhZGxpYi5jCi19Ci0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0jIG92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gdG8gYXZvaWQgdGhlIGF1dG9jb25mL2F1dG9tYWtlL2FjbG9jYWwvYXV0b2hlYWRlcgotIyBjYWxscyBmb3Igbm93Ci0jIGRvbid0IHBhc3MgQ1BQRkxBR1MgaW50byBjb25maWd1cmUsIHNpbmNlIGl0IHVwc2V0cyB0aGUga2VybmVsLWhlYWRlcnMKLSMgdmVyc2lvbiBjaGVjayBhbmQgZG9lc24ndCByZWFsbHkgaGVscCB3aXRoIGFueXRoaW5nCi0gICAgICAgIChjZCAke1N9ICYmIGdudS1jb25maWdpemUpIHx8IGRpZSAiZmFpbHVyZSBpbiBydW5uaW5nIGdudS1jb25maWdpemUiCi0gICAgICAgIGZpbmQgJHtTfSAtbmFtZSAiY29uZmlndXJlIiB8IHhhcmdzIHRvdWNoCi0gICAgICAgIENQUEZMQUdTPSIiIG9lX3J1bmNvbmYKLX0KLQotZG9fY29tcGlsZSAoKSB7Ci0JIyAtV2wsLXJwYXRoLWxpbmsgPHN0YWdpbmc+L2xpYiBpbiBMREZMQUdTIGNhbiBjYXVzZSBicmVha2FnZSBpZiBhbm90aGVyIGdsaWJjIGlzIGluIHN0YWdpbmcKLQlMREZMQUdTPSItZnVzZS1sZD1iZmQiCi0JYmFzZV9kb19jb21waWxlCi0JZWNobyAiQWRqdXN0IGxkZCBzY3JpcHQiCi0JaWYgWyAtbiAiJHtSVExETElTVH0iIF0KLQl0aGVuCi0JCXByZXZydGxkPWBjYXQgJHtCfS9lbGYvbGRkIHwgZ3JlcCAiXlJUTERMSVNUPSIgfCBzZWQgJ3MjXlJUTERMSVNUPSJcP1woW14iXSpcKSJcPyQjXDEjJ2AKLQkJIyByZW1vdmUgZHVwbGljYXRlIGVudHJpZXMKLQkJbmV3cnRsZD1gZWNobyAkKHByaW50ZiAnJXNcbicgJHtwcmV2cnRsZH0gJHtSVExETElTVH0gfCBMQ19BTEw9QyBzb3J0IC11KWAKLQkJZWNobyAibGRkIFwiJHtwcmV2cnRsZH0gJHtSVExETElTVH1cIiAtPiBcIiR7bmV3cnRsZH1cIiIKLQkJc2VkIC1pICR7Qn0vZWxmL2xkZCAtZSAicyNeUlRMRExJU1Q9LipcJCNSVExETElTVD1cIiR7bmV3cnRsZH1cIiMiCi0JZmkKLX0KLQotcmVxdWlyZSBnbGliYy1wYWNrYWdlLmluYwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4zMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4zMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjA1ZmQzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliY18yLjMxLmJiCkBAIC0wLDAgKzEsMTEzIEBACityZXF1aXJlIGdsaWJjLmluYworcmVxdWlyZSBnbGliYy12ZXJzaW9uLmluYworCitERVBFTkRTICs9ICJncGVyZi1uYXRpdmUgYmlzb24tbmF0aXZlIG1ha2UtbmF0aXZlIgorCitOQVRJVkVTREtGSVhFUyA/PSAiIgorTkFUSVZFU0RLRklYRVNfY2xhc3MtbmF0aXZlc2RrID0gIlwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1uYXRpdmVzZGstZ2xpYmMtTWFrZS1yZWxvY2F0YWJsZS1pbnN0YWxsLWZvci1sb2NhbGVzLnBhdGNoIFwKKyIKKworU1JDX1VSSSA9ICAiJHtHTElCQ19HSVRfVVJJfTticmFuY2g9JHtTUkNCUkFOQ0h9O25hbWU9Z2xpYmMgXAorICAgICAgICAgICBmaWxlOi8vZXRjL2xkLnNvLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtc3VwcG9ydGVkLm1rIFwKKyAgICAgICAgICAgZmlsZTovL21ha2VkYnMuc2ggXAorICAgICAgICAgICBcCisgICAgICAgICAgICR7TkFUSVZFU0RLRklYRVN9IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEyLVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMy1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE0LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNS1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTYtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNy15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE4LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOS1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjAtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIxLWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMi1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMy1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNC1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNS1sb2NhbGVkZWYtYWRkLXRvLWFyY2hpdmUtdXNlcy1hLWhhcmQtY29kZWQtbG9jYWxlLXBhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjYtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI3LWludGwtRW1pdC1uby1saW5lcy1pbi1iaXNvbi1nZW5lcmF0ZWQtZmlsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyOC1pbmplY3QtZmlsZS1hc3NlbWJseS1kaXJlY3RpdmVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjktbG9jYWxlLXByZXZlbnQtbWF5YmUtdW5pbml0aWFsaXplZC1lcnJvcnMtd2l0aC1Pcy1CWi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAyMC0xMDAyOS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMwLUltcHJvdmUtSUZVTkMtY2hlY2stQlotMjU1MDYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMS1GaXgtYnVpbGQtd2l0aC1HQ0MtMTAtd2hlbi1sb25nLWRvdWJsZS1kb3VibGUucGF0Y2ggXAorICAgICAgICAgICAiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorQiA9ICIke1dPUktESVJ9L2J1aWxkLSR7VEFSR0VUX1NZU30iCisKK1BBQ0tBR0VTX0RZTkFNSUMgPSAiIgorCisjIHRoZSAtaXN5c3RlbSBpbiBiaXRiYWtlLmNvbmYgc2NyZXdzIHVwIGdsaWJjIGRvX3N0YWdlCitCVUlMRF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSIKK1RBUkdFVF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7aW5jbHVkZWRpcn0iCisKK0dMSUJDX0JST0tFTl9MT0NBTEVTID0gIiIKKworR0xJQkNQSUUgPz89ICIiCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1rZXJuZWw9JHtPTERFU1RfS0VSTkVMfSBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXByb2ZpbGUgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kZWJ1ZyAtLXdpdGhvdXQtZ2QgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWNsb2NhbGU9Z251IFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtaGVhZGVycz0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LXNlbGludXggXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXR1bmFibGVzIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1iaW5kLW5vdyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtc3RhY2stcHJvdGVjdG9yPXN0cm9uZyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtc3RhY2tndWFyZC1yYW5kb21pemF0aW9uIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtY3J5cHQgXAorICAgICAgICAgICAgICAgIC0td2l0aC1kZWZhdWx0LWxpbmsgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLW5zY2QgXAorICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnU0VMRUNURURfT1BUSU1JWkFUSU9OJywgJy1PMCAtT2cnLCAnLS1kaXNhYmxlLXdlcnJvcicsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICR7R0xJQkNQSUV9IFwKKyAgICAgICAgICAgICAgICAke0dMSUJDX0VYVFJBX09FQ09ORn0iCisKK0VYVFJBX09FQ09ORiArPSAiJHtAZ2V0X2xpYmNfZnB1X3NldHRpbmcoYmIsIGQpfSIKKworZG9fcGF0Y2hfYXBwZW5kKCkgeworICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fZml4X3JlYWRsaWJfYycsIGQpCit9CisKK2RvX2ZpeF9yZWFkbGliX2MgKCkgeworCXNlZCAtaSAtZSAncyNPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMjJHtFR0xJQkNfS05PV05fSU5URVJQUkVURVJfTkFNRVN9IycgJHtTfS9lbGYvcmVhZGxpYi5jCit9CisKK2RvX2NvbmZpZ3VyZSAoKSB7CisjIG92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gdG8gYXZvaWQgdGhlIGF1dG9jb25mL2F1dG9tYWtlL2FjbG9jYWwvYXV0b2hlYWRlcgorIyBjYWxscyBmb3Igbm93CisjIGRvbid0IHBhc3MgQ1BQRkxBR1MgaW50byBjb25maWd1cmUsIHNpbmNlIGl0IHVwc2V0cyB0aGUga2VybmVsLWhlYWRlcnMKKyMgdmVyc2lvbiBjaGVjayBhbmQgZG9lc24ndCByZWFsbHkgaGVscCB3aXRoIGFueXRoaW5nCisgICAgICAgIChjZCAke1N9ICYmIGdudS1jb25maWdpemUpIHx8IGRpZSAiZmFpbHVyZSBpbiBydW5uaW5nIGdudS1jb25maWdpemUiCisgICAgICAgIGZpbmQgJHtTfSAtbmFtZSAiY29uZmlndXJlIiB8IHhhcmdzIHRvdWNoCisgICAgICAgIENQUEZMQUdTPSIiIG9lX3J1bmNvbmYKK30KKworTERGTEFHUyArPSAiLWZ1c2UtbGQ9YmZkIgorZG9fY29tcGlsZSAoKSB7CisJYmFzZV9kb19jb21waWxlCisJZWNobyAiQWRqdXN0IGxkZCBzY3JpcHQiCisJaWYgWyAtbiAiJHtSVExETElTVH0iIF0KKwl0aGVuCisJCXByZXZydGxkPWBjYXQgJHtCfS9lbGYvbGRkIHwgZ3JlcCAiXlJUTERMSVNUPSIgfCBzZWQgJ3MjXlJUTERMSVNUPSJcP1woW14iXSpcKSJcPyQjXDEjJ2AKKwkJIyByZW1vdmUgZHVwbGljYXRlIGVudHJpZXMKKwkJbmV3cnRsZD1gZWNobyAkKHByaW50ZiAnJXNcbicgJHtwcmV2cnRsZH0gJHtSVExETElTVH0gfCBMQ19BTEw9QyBzb3J0IC11KWAKKwkJZWNobyAibGRkIFwiJHtwcmV2cnRsZH0gJHtSVExETElTVH1cIiAtPiBcIiR7bmV3cnRsZH1cIiIKKwkJc2VkIC1pICR7Qn0vZWxmL2xkZCAtZSAicyNeUlRMRExJU1Q9LipcJCNSVExETElTVD1cIiR7bmV3cnRsZH1cIiMiCisJZmkKK30KKworcmVxdWlyZSBnbGliYy1wYWNrYWdlLmluYworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvMDAwMS1NYWtlZmlsZS1kby1ub3QtdXNlLWRwa2ctZm9yLWRldGVybWluaW5nLU9TLXR5cGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2ZpbGVzLzAwMDEtTWFrZWZpbGUtZG8tbm90LXVzZS1kcGtnLWZvci1kZXRlcm1pbmluZy1PUy10eXBlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3YzhkMDQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2ZpbGVzLzAwMDEtTWFrZWZpbGUtZG8tbm90LXVzZS1kcGtnLWZvci1kZXRlcm1pbmluZy1PUy10eXBlLnBhdGNoCkBAIC0wLDAgKzEsMjMgQEAKK0Zyb20gN2FjZTA2NTZiZDMyNWY5ZTc3NDlmMmNkZTY0MWVkZGMwNTdiYzk4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCA5IEphbiAyMDIwIDE1OjM4OjA2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBkbyBub3QgdXNlIGRwa2cgZm9yIGRldGVybWluaW5nIE9TIHR5cGUKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDBjZTJmYTMuLjczOWFlZjIgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0xLDYgKzEsNiBAQAorIFZFUlNJT04gPz0gMC44CisgQ0ZMQUdTID89IC1XYWxsIC1XIC1Xbm8tdW51c2VkLXBhcmFtZXRlciAtZyAtTzIKKy1BUkNIIDo9ICQoc2hlbGwgZHBrZy1hcmNoaXRlY3R1cmUgLXFERUJfSE9TVF9BUkNIX09TKQorK0FSQ0ggOj0gbGludXgKKyAKKyBCQVNFRElSID89ICQoREVTVERJUikKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvaW5ldC02LS5kZWZuLWZpeC1pbnZlcnRlZC1jaGVja3MtZm9yLWxvb3BiYWNrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy9pbmV0LTYtLmRlZm4tZml4LWludmVydGVkLWNoZWNrcy1mb3ItbG9vcGJhY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMGQ1MWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy9pbmV0LTYtLmRlZm4tZml4LWludmVydGVkLWNoZWNrcy1mb3ItbG9vcGJhY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MDMgKzAsMCBAQAotRnJvbSA2ZmNlOTljOWU0MmNiYWNkZTE4NTU0NzNiNzQ1Y2ExZmRlZDNmYmY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLURhdGU6IFdlZCwgMjEgRGVjIDIwMTYgMTU6MzI6MDcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIGluZXRbNl0uZGVmbjogZml4IGludmVydGVkIGNoZWNrcyBmb3IgbG9vcGJhY2sKLQotQ29tcGFyZWQgdG8gdGhlIGh1cmQgbGluay5kZWZuIGZvciBsb29wYmFjaywgd2Ugc2VlIHRoZXNlCi1hcmUgaW52ZXJ0ZWQsIG1lYW5pbmcgdGhhdCB5b3Ugd291bGQgb25seSBiZSBhYmxlIHRvIGNvbmZpZ3VyZQotYSBsb29wYmFjayBkZXZpY2UgdGhhdCB3YXMgX25vdF8gbmFtZWQgImxvIiAodW5saWtlbHkgdG8gZXhpc3QpLgotCi1UaGUgcmVzdWx0IHdhcyB0aGF0IHdlJ2QgdXBkYXRlIC9ydW4vbmV0d29yay9pZnN0YXRlIGZvciAibG8iCi1idXQgbmV2ZXIgYWN0dWFsbHkgZG8gYW55dGhpbmcgZm9yIHVwL2Rvd24sIGFzIHNob3duIGJlbG93OgotCi1yb290QGxvY2FsaG9zdDp+IyBpZmNvbmZpZyAtcwotSWZhY2UgICBNVFUgTWV0ICAgUlgtT0sgUlgtRVJSIFJYLURSUCBSWC1PVlIgIFRYLU9LIFRYLUVSUiBUWC1EUlAgVFgtT1ZSIEZsZwotZXRoMCAgICAgICAxNTAwIDAgICA3NzM2MzI5ICAgICAgMCAgIDIwMTYgMCA1Mjg5NDIyICAgICAgMCAgICAgIDAgICAgICAwIEJNUlUKLWxvICAgICAgICA2NTUzNiAwICAgICAgICAxOCAgICAgIDAgICAgICAwIDAgICAgICAxOCAgICAgIDAgICAgICAwICAgICAgMCBMUlUKLXJvb3RAbG9jYWxob3N0On4jIGlmZG93biBsbwotcm9vdEBsb2NhbGhvc3Q6fiMgZWNobyAkPwotMAotcm9vdEBsb2NhbGhvc3Q6fiMgaWZjb25maWcgLXMKLUlmYWNlICAgTVRVIE1ldCAgIFJYLU9LIFJYLUVSUiBSWC1EUlAgIFJYLU9WUiAgICBUWC1PSyBUWC1FUlIgVFgtRFJQIFRYLU9WUiBGbGcKLWV0aDAgICAgICAgMTUwMCAwICAgNzczNjQwNiAgICAgIDAgIDIwMTYgMCAgIDUyODk0NTUgICAgICAwICAgICAgMCAgICAgIDAgQk1SVQotbG8gICAgICAgIDY1NTM2IDAgICAgICAgIDE4ICAgICAgMCAgIDAgMCAgICAgICAgICAgIDE4ICAgIDAgICAgMCAgICAwICAgICBMUlUKLXJvb3RAbG9jYWxob3N0On4jIGlmY29uZmlnIGxvIGRvd24KLXJvb3RAbG9jYWxob3N0On4jIGlmY29uZmlnIC1zCi1JZmFjZSAgIE1UVSBNZXQgICBSWC1PSyBSWC1FUlIgUlgtRFJQIFJYLU9WUiAgICBUWC1PSyBUWC1FUlIgVFgtRFJQIFRYLU9WUiBGbGcKLWV0aDAgICAgICAgMTUwMCAwICAgNzczNjQ3NCAwICAgMjAxNiAwICAgICAgIDUyODk0ODEgICAgICAwICAgICAwICAgICAgMCBCTVJVCi1yb290QGxvY2FsaG9zdDp+IwotCi1BbHNvIHJldmVydGVkIHRoZSBjb21taXQ6Ci1jb21taXQgODBiODc4NDk3NjYzZGFlMDhmNzBiNGQzY2ZmZTEyN2I1N2EzY2ZjCi13aGljaCB1c2VzIGFic29sdXRlIHBhdGhzIHRvIGJpbmFyaWVzIGNhbGxlZCBieSBpZnVwL2lmZG93bi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGluZXQuZGVmbiB8IDEzNCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwgNjcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9pbmV0LmRlZm4gYi9pbmV0LmRlZm4KLWluZGV4IDE4MmI1NmIuLjMxMDY3YmMgMTAwNjQ0Ci0tLS0gYS9pbmV0LmRlZm4KLSsrKyBiL2luZXQuZGVmbgotQEAgLTYsMTAgKzYsMTAgQEAgbWV0aG9kIGxvb3BiYWNrCi0gICAgIFRoaXMgbWV0aG9kIG1heSBiZSB1c2VkIHRvIGRlZmluZSB0aGUgSVB2NCBsb29wYmFjayBpbnRlcmZhY2UuCi0gCi0gICB1cAotLSAgICAvYmluL2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIHVwIGlmICghaWZhY2VfaXNfbG8oKSkKLSsgICAgaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgdXAgaWYgKCFpZmFjZV9pc19sbygpKQotIAotICAgZG93bgotLSAgICAvYmluL2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGRvd24gaWYgKCFpZmFjZV9pc19sbygpKQotKyAgICBpcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBkb3duIGlmICghaWZhY2VfaXNfbG8oKSkKLSAKLSBtZXRob2Qgc3RhdGljCi0gICBkZXNjcmlwdGlvbgotQEAgLTM2LDE3ICszNiwxNyBAQCBtZXRob2Qgc3RhdGljCi0gICAgIGJyb2FkY2FzdCBjb21wdXRlX3Y0X2Jyb2FkY2FzdAotIAotICAgdXAKLS0gICAgL2Jpbi9pcCBhZGRyIGFkZCAlYWRkcmVzcyVbWy8lbmV0bWFzayVdXSBbW2Jyb2FkY2FzdCAlYnJvYWRjYXN0JV1dIFwKLSsgICAgaXAgYWRkciBhZGQgJWFkZHJlc3MlW1svJW5ldG1hc2slXV0gW1ticm9hZGNhc3QgJWJyb2FkY2FzdCVdXSBcCi0gCVtbcGVlciAlcG9pbnRvcG9pbnQlXV0gW1tzY29wZSAlc2NvcGUlXV0gZGV2ICVpZmFjZSUgbGFiZWwgJWlmYWNlJQotLSAgICAvYmluL2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIFtbbXR1ICVtdHUlXV0gW1thZGRyZXNzICVod2FkZHJlc3MlXV0gdXAKLSsgICAgaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgW1ttdHUgJW10dSVdXSBbW2FkZHJlc3MgJWh3YWRkcmVzcyVdXSB1cAotIAotLSAgICBbWyAvYmluL2lwIHJvdXRlIGFkZCBkZWZhdWx0IHZpYSAlZ2F0ZXdheSUgW1ttZXRyaWMgJW1ldHJpYyVdXSBkZXYgJWlmYWNlJSBvbmxpbmsgXV0KLSsgICAgW1sgaXAgcm91dGUgYWRkIGRlZmF1bHQgdmlhICVnYXRld2F5JSBbW21ldHJpYyAlbWV0cmljJV1dIGRldiAlaWZhY2UlIG9ubGluayBdXQotIAotICAgZG93bgotLSAgICBbWyAvYmluL2lwIHJvdXRlIGRlbCBkZWZhdWx0IHZpYSAlZ2F0ZXdheSUgW1ttZXRyaWMgJW1ldHJpYyVdXSBkZXYgJWlmYWNlJSAyPiYxIDE+L2Rldi9udWxsIHx8IHRydWUgXV0KLS0gICAgL2Jpbi9pcCBhZGRyIGRlbCAlYWRkcmVzcyVbWy8lbmV0bWFzayVdXSBbW2Jyb2FkY2FzdCAlYnJvYWRjYXN0JV1dIFwKLSsgICAgW1sgaXAgcm91dGUgZGVsIGRlZmF1bHQgdmlhICVnYXRld2F5JSBbW21ldHJpYyAlbWV0cmljJV1dIGRldiAlaWZhY2UlIDI+JjEgMT4vZGV2L251bGwgfHwgdHJ1ZSBdXQotKyAgICBpcCBhZGRyIGRlbCAlYWRkcmVzcyVbWy8lbmV0bWFzayVdXSBbW2Jyb2FkY2FzdCAlYnJvYWRjYXN0JV1dIFwKLSAJW1twZWVyICVwb2ludG9wb2ludCVdXSBbW3Njb3BlICVzY29wZSVdXSBkZXYgJWlmYWNlJSBsYWJlbCAlaWZhY2UlCi0tICAgIC9iaW4vaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgZG93biBcCi0rICAgIGlwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGRvd24gXAotIAkJaWYgKGlmYWNlX2lzX2xpbmsoKSkKLSAKLSBtZXRob2QgbWFudWFsCi1AQCAtNjMsMTIgKzYzLDEyIEBAIG1ldGhvZCBtYW51YWwKLSAgICAgaHdhZGRyZXNzIGNsZWFudXBfaHdhZGRyZXNzCi0gCi0gICB1cAotLSAgICBbWy9iaW4vaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgbXR1ICVtdHUlXV0KLS0gICAgW1svYmluL2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGFkZHJlc3MgJWh3YWRkcmVzcyVdXQotLSAgICAvYmluL2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIHVwIDI+L2Rldi9udWxsIHx8IHRydWUKLSsgICAgW1tpcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBtdHUgJW10dSVdXQotKyAgICBbW2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGFkZHJlc3MgJWh3YWRkcmVzcyVdXQotKyAgICBpcCBsaW5rIHNldCBkZXYgJWlmYWNlJSB1cCAyPi9kZXYvbnVsbCB8fCB0cnVlCi0gCi0gICBkb3duCi0tICAgIC9iaW4vaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgZG93biAyPi9kZXYvbnVsbCB8fCB0cnVlIFwKLSsgICAgaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgZG93biAyPi9kZXYvbnVsbCB8fCB0cnVlIFwKLSAgICAgICAgIGlmIChpZmFjZV9pc19saW5rKCkgJiYgIWRvX2FsbCkKLSAKLSBtZXRob2QgZGhjcAotQEAgLTkzLDMzICs5MywzMyBAQCBtZXRob2QgZGhjcAotICAgICBod2FkZHJlc3MgY2xlYW51cF9od2FkZHJlc3MKLSAKLSAgIHVwCi0tICAgIFtbL2Jpbi9pcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBhZGRyZXNzICVod2FkZHJlc3MlXV0KLS0gICAgL3NiaW4vZGhjbGllbnQgLTQgLXYgLXBmIC9ydW4vZGhjbGllbnQuJWlmYWNlJS5waWQgLWxmIC92YXIvbGliL2RoY3AvZGhjbGllbnQuJWlmYWNlJS5sZWFzZXMgLUkgLWRmIC92YXIvbGliL2RoY3AvZGhjbGllbnQ2LiVpZmFjZSUubGVhc2VzICVpZmFjZSUgXAotKyAgICBbW2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGFkZHJlc3MgJWh3YWRkcmVzcyVdXQotKyAgICBkaGNsaWVudCAtNCAtdiAtcGYgL3J1bi9kaGNsaWVudC4laWZhY2UlLnBpZCAtbGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudC4laWZhY2UlLmxlYXNlcyAtSSAtZGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudDYuJWlmYWNlJS5sZWFzZXMgJWlmYWNlJSBcCi0gCVtbLWUgSUZfTUVUUklDPSVtZXRyaWMlXV0gXAotICAgICAgICAgaWYgKGV4ZWNhYmxlKCIvc2Jpbi9kaGNsaWVudCIpKQotLSAgICAvc2Jpbi9wdW1wIC1pICVpZmFjZSUgW1staCAlaG9zdG5hbWUlXV0gW1stbCAlbGVhc2Vob3VycyVdXSBcCi0rICAgIHB1bXAgLWkgJWlmYWNlJSBbWy1oICVob3N0bmFtZSVdXSBbWy1sICVsZWFzZWhvdXJzJV1dIFwKLSAgICAgICAgIGVsc2lmIChleGVjYWJsZSgiL3NiaW4vcHVtcCIpKQotLSAgICAvc2Jpbi91ZGhjcGMgLW4gLXAgL3J1bi91ZGhjcGMuJWlmYWNlJS5waWQgLWkgJWlmYWNlJSBbWy14IGhvc3RuYW1lOiVob3N0bmFtZSVdXSBcCi0rICAgIHVkaGNwYyAtbiAtcCAvcnVuL3VkaGNwYy4laWZhY2UlLnBpZCAtaSAlaWZhY2UlIFtbLXggaG9zdG5hbWU6JWhvc3RuYW1lJV1dIFwKLSAgICAgICAgIGVsc2lmIChleGVjYWJsZSgiL3NiaW4vdWRoY3BjIikpCi0tICAgIC9zYmluL2RoY3BjZCBbWy1oICVob3N0bmFtZSVdXSBbWy1pICV2ZW5kb3IlXV0gW1stSSAlY2xpZW50JV1dIFwKLSsgICAgZGhjcGNkIFtbLWggJWhvc3RuYW1lJV1dIFtbLWkgJXZlbmRvciVdXSBbWy1JICVjbGllbnQlXV0gXAotICAgICAgICAgICAgW1stbCAlbGVhc2V0aW1lJV1dIFtbLW0gJW1ldHJpYyVdXSAlaWZhY2UlIFwKLSAgICAgICAgIGVsc2lmIChleGVjYWJsZSgiL3NiaW4vZGhjcGNkIikpCi0gICAgIGVjaG8gJ05vIERIQ1AgY2xpZW50IHNvZnR3YXJlIGZvdW5kIScgPi9kZXYvc3RkZXJyOyBmYWxzZSBcCi0gICAgICAgICBlbHNpZiAoMSkKLSAKLSAgIGRvd24KLS0gICAgL3NiaW4vZGhjbGllbnQgLTQgLXYgLXIgLXBmIC9ydW4vZGhjbGllbnQuJWlmYWNlJS5waWQgLWxmIC92YXIvbGliL2RoY3AvZGhjbGllbnQuJWlmYWNlJS5sZWFzZXMgLUkgLWRmIC92YXIvbGliL2RoY3AvZGhjbGllbnQ2LiVpZmFjZSUubGVhc2VzICVpZmFjZSUgXAotKyAgICBkaGNsaWVudCAtNCAtdiAtciAtcGYgL3J1bi9kaGNsaWVudC4laWZhY2UlLnBpZCAtbGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudC4laWZhY2UlLmxlYXNlcyAtSSAtZGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudDYuJWlmYWNlJS5sZWFzZXMgJWlmYWNlJSBcCi0gICAgICAgICBpZiAoZXhlY2FibGUoIi9zYmluL2RoY2xpZW50IikpCi0tICAgIC9zYmluL3B1bXAgLWkgJWlmYWNlJSAtciBcCi0rICAgIHB1bXAgLWkgJWlmYWNlJSAtciBcCi0gICAgICAgICBlbHNpZiAoZXhlY2FibGUoIi9zYmluL3B1bXAiKSkKLSAgICAgaWYgdGVzdCAtZiAvcnVuL3VkaGNwYy4laWZhY2UlLnBpZDsgdGhlbiBraWxsIC1VU1IyICQoL2Jpbi9jYXQgL3J1bi91ZGhjcGMuJWlmYWNlJS5waWQpOyBraWxsIC1URVJNICQoL2Jpbi9jYXQgL3J1bi91ZGhjcGMuJWlmYWNlJS5waWQpOyBmaSBcCi0gICAgICAgICBlbHNpZiAoZXhlY2FibGUoIi9zYmluL3VkaGNwYyIpKQotLSAgICAvc2Jpbi9kaGNwY2QgLWsgJWlmYWNlJSBcCi0rICAgIGRoY3BjZCAtayAlaWZhY2UlIFwKLSAgICAgICAgIGVsc2lmIChleGVjYWJsZSgiL3NiaW4vZGhjcGNkIikpCi0gICAgIGVjaG8gJ05vIERIQ1AgY2xpZW50IHNvZnR3YXJlIGZvdW5kIScgPi9kZXYvc3RkZXJyOyBmYWxzZSBcCi0gICAgICAgICBlbHNpZiAoMSkKLSAKLS0gICAgL2Jpbi9pcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBkb3duIFwKLSsgICAgaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgZG93biBcCi0gCQlpZiAoaWZhY2VfaXNfbGluaygpKQotIAotIG1ldGhvZCBib290cAotQEAgLTEzNCwxMSArMTM0LDExIEBAIG1ldGhvZCBib290cAotICAgICAgICAgICAgICAgICAgICAgICB3aGF0ZXZlciBpdCByZWFsbHkgaXMuCi0gCi0gICB1cAotLSAgICAvc2Jpbi9ib290cGMgW1stLWJvb3RmaWxlICVib290ZmlsZSVdXSAtLWRldiAlaWZhY2UlIFtbLS1zZXJ2ZXIgJXNlcnZlciVdXSBcCi0rICAgIGJvb3RwYyBbWy0tYm9vdGZpbGUgJWJvb3RmaWxlJV1dIC0tZGV2ICVpZmFjZSUgW1stLXNlcnZlciAlc2VydmVyJV1dIFwKLSAgICAgICAgICAgIFtbLS1od2FkZHIgJWh3YWRkciVdXSAtLXJldHVybmlmZmFpbCAtLXNlcnZlcmJjYXN0Ci0gCi0gICBkb3duCi0tICAgIC9iaW4vaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgZG93biBcCi0rICAgIGlwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGRvd24gXAotICAgICAgICAgaWYgKGlmYWNlX2lzX2xpbmsoKSkKLSAKLSBtZXRob2QgdHVubmVsCi1AQCAtMTU4LDEzICsxNTgsMTMgQEAgbWV0aG9kIHR1bm5lbAotICAgICB0dGwgdGltZSAgICAgICAgICAgICAgLS0gVFRMIHNldHRpbmcKLSAgICAgbXR1IHNpemUgICAgICAgICAgICAgIC0tIE1UVSBzaXplCi0gICB1cAotLSAgICAvYmluL2lwIHR1bm5lbCBhZGQgJWlmYWNlJSBtb2RlICVtb2RlJSByZW1vdGUgJWVuZHBvaW50JSBbW2xvY2FsICVsb2NhbCVdXSBcCi0rICAgIGlwIHR1bm5lbCBhZGQgJWlmYWNlJSBtb2RlICVtb2RlJSByZW1vdGUgJWVuZHBvaW50JSBbW2xvY2FsICVsb2NhbCVdXSBcCi0gICAgICAgIFtbdHRsICV0dGwlXV0KLS0gICAgL2Jpbi9pcCBsaW5rIHNldCAlaWZhY2UlIHVwIFtbbXR1ICVtdHUlXV0KLS0gICAgL2Jpbi9pcCBhZGRyIGFkZCAlYWRkcmVzcyUvJW5ldG1hc2slIGRldiAlaWZhY2UlIFtbcGVlciAlZHN0YWRkciVdXQotLSAgICBbWyAvYmluL2lwIHJvdXRlIGFkZCBkZWZhdWx0IHZpYSAlZ2F0ZXdheSUgW1ttZXRyaWMgJW1ldHJpYyVdXSBkZXYgJWlmYWNlJSBvbmxpbmsgXV0KLSsgICAgaXAgbGluayBzZXQgJWlmYWNlJSB1cCBbW210dSAlbXR1JV1dCi0rICAgIGlwIGFkZHIgYWRkICVhZGRyZXNzJS8lbmV0bWFzayUgZGV2ICVpZmFjZSUgW1twZWVyICVkc3RhZGRyJV1dCi0rICAgIFtbIGlwIHJvdXRlIGFkZCBkZWZhdWx0IHZpYSAlZ2F0ZXdheSUgW1ttZXRyaWMgJW1ldHJpYyVdXSBkZXYgJWlmYWNlJSBvbmxpbmsgXV0KLSAgIGRvd24KLS0gICAgL2Jpbi9pcCB0dW5uZWwgZGVsICVpZmFjZSUKLSsgICAgaXAgdHVubmVsIGRlbCAlaWZhY2UlCi0gCi0gbWV0aG9kIHBwcAotICAgZGVzY3JpcHRpb24KLUBAIC0xNzUsOSArMTc1LDkgQEAgbWV0aG9kIHBwcAotICAgICB1bml0IG51bWJlciAgICAtLSBVc2UgL251bWJlci8gYXMgdGhlIHBwcCB1bml0IG51bWJlci4KLSAgICAgb3B0aW9ucyBzdHJpbmcgLS0gUGFzcyAvc3RyaW5nLyBhcyBhZGRpdGlvbmFsIG9wdGlvbnMgdG8gcG9uLgotICAgdXAKLS0gICAgL3Vzci9iaW4vcG9uIFtbJXByb3ZpZGVyJV1dIFtbdW5pdCAldW5pdCVdXSBbWyVvcHRpb25zJV1dCi0rICAgIHBvbiBbWyVwcm92aWRlciVdXSBbW3VuaXQgJXVuaXQlXV0gW1slb3B0aW9ucyVdXQotICAgZG93bgotLSAgICAvdXNyL2Jpbi9wb2ZmIFtbJXByb3ZpZGVyJV1dCi0rICAgIHBvZmYgW1slcHJvdmlkZXIlXV0KLSAKLSBtZXRob2Qgd3ZkaWFsCi0gICBkZXNjcmlwdGlvbgotQEAgLTE4NiwxMCArMTg2LDEwIEBAIG1ldGhvZCB3dmRpYWwKLSAgIG9wdGlvbnMKLSAgICAgcHJvdmlkZXIgbmFtZSAgLS0gVXNlIC9uYW1lLyBhcyB0aGUgcHJvdmlkZXIgKGZyb20gL2V0Yy93dmRpYWwuY29uZikuCi0gICB1cAotLSAgICAvc2Jpbi9zdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC14IC91c3IvYmluL3d2ZGlhbCBcCi0rICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLXggL3Vzci9iaW4vd3ZkaWFsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLXAgL3J1bi93dmRpYWwuJWlmYWNlJS5waWQgLWIgLW0gLS0gW1sgJXByb3ZpZGVyJSBdXQotICAgZG93bgotLSAgICAvc2Jpbi9zdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLXggL3Vzci9iaW4vd3ZkaWFsIFwKLSsgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC14IC91c3IvYmluL3d2ZGlhbCBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1wIC9ydW4vd3ZkaWFsLiVpZmFjZSUucGlkIC1zIDIKLSAKLSAKLUBAIC0yMDAsOSArMjAwLDkgQEAgbWV0aG9kIGlwdjRsbAotICAgICBrbm93biBhcyBBUElQQSBvciBJUEFDLCBhbmQgb2Z0ZW4gY29sbG9xdWlhbGx5IHJlZmVycmVkIHRvCi0gICAgIGFzICJaZXJvY29uZiBhZGRyZXNzIi4KLSAgIHVwCi0tICAgIC91c3Ivc2Jpbi9hdmFoaS1hdXRvaXBkIC1EICVpZmFjZSUKLSsgICAgYXZhaGktYXV0b2lwZCAtRCAlaWZhY2UlCi0gICBkb3duCi0tICAgIC91c3Ivc2Jpbi9hdmFoaS1hdXRvaXBkIC0ta2lsbCAlaWZhY2UlCi0rICAgIGF2YWhpLWF1dG9pcGQgLS1raWxsICVpZmFjZSUKLSAKLSBhcmNoaXRlY3R1cmUga2ZyZWVic2QKLSAKLUBAIC0yMTEsMTEgKzIxMSwxMSBAQCBtZXRob2QgbG9vcGJhY2sKLSAgICAgVGhpcyBtZXRob2QgbWF5IGJlIHVzZWQgdG8gZGVmaW5lIHRoZSBJUHY0IGxvb3BiYWNrIGludGVyZmFjZS4KLSAKLSAgIHVwCi0tICAgIC9zYmluL2lmY29uZmlnICVpZmFjZSUgMTI3LjAuMC4xIHVwIFwKLSsgICAgaWZjb25maWcgJWlmYWNlJSAxMjcuMC4wLjEgdXAgXAotIAlpZiAoIWlmYWNlX2lzX2xvKCkpCi0gCi0gICBkb3duCi0tICAgIC9zYmluL2lmY29uZmlnICVpZmFjZSUgZG93biBcCi0rICAgIGlmY29uZmlnICVpZmFjZSUgZG93biBcCi0gCWlmICghaWZhY2VfaXNfbG8oKSkKLSAKLSBtZXRob2Qgc3RhdGljCi1AQCAtMjM4LDE1ICsyMzgsMTUgQEAgbWV0aG9kIHN0YXRpYwotICAgICBod2FkZHJlc3MgY2xlYW51cF9od2FkZHJlc3MKLSAKLSAgIHVwCi0tICAgIFtbIC9zYmluL2lmY29uZmlnICVpZmFjZSUgbGluayAlaHdhZGRyZXNzJV1dCi0tICAgIC9zYmluL2lmY29uZmlnICVpZmFjZSUgJWFkZHJlc3MlIFtbbmV0bWFzayAlbmV0bWFzayVdXSBbW2Jyb2FkY2FzdCAlYnJvYWRjYXN0JV1dIFwKLSsgICAgW1sgaWZjb25maWcgJWlmYWNlJSBsaW5rICVod2FkZHJlc3MlXV0KLSsgICAgaWZjb25maWcgJWlmYWNlJSAlYWRkcmVzcyUgW1tuZXRtYXNrICVuZXRtYXNrJV1dIFtbYnJvYWRjYXN0ICVicm9hZGNhc3QlXV0gXAotIAlbW3BvaW50b3BvaW50ICVwb2ludG9wb2ludCVdXSBbW21lZGlhICVtZWRpYSVdXSBbW210dSAlbXR1JV1dIFwKLSAJdXAKLS0gICAgW1sgL3NiaW4vcm91dGUgYWRkIGRlZmF1bHQgJWdhdGV3YXklIF1dCi0rICAgIFtbIHJvdXRlIGFkZCBkZWZhdWx0ICVnYXRld2F5JSBdXQotIAotICAgZG93bgotLSAgICBbWyAvc2Jpbi9yb3V0ZSBkZWwgZGVmYXVsdCAlZ2F0ZXdheSUgMj4mMSAxPi9kZXYvbnVsbCB8fCB0cnVlIF1dCi0tICAgIC9zYmluL2lmY29uZmlnICVpZmFjZSUgZG93bgotKyAgICBbWyByb3V0ZSBkZWwgZGVmYXVsdCAlZ2F0ZXdheSUgMj4mMSAxPi9kZXYvbnVsbCB8fCB0cnVlIF1dCi0rICAgIGlmY29uZmlnICVpZmFjZSUgZG93bgotIAotIG1ldGhvZCBtYW51YWwKLSAgIGRlc2NyaXB0aW9uCi1AQCAtMjc5LDMwICsyNzksMzAgQEAgbWV0aG9kIGRoY3AKLSAgICAgaHdhZGRyZXNzIGNsZWFudXBfaHdhZGRyZXNzCi0gCi0gICB1cAotLSAgICBbWy9zYmluL2lmY29uZmlnICVpZmFjZSUgbGluayAlaHdhZGRyZXNzJV1dCi0tICAgIC9zYmluL2RoY2xpZW50IC00IC12IC1wZiAvcnVuL2RoY2xpZW50LiVpZmFjZSUucGlkIC1sZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50LiVpZmFjZSUubGVhc2VzIC1JIC1kZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50Ni4laWZhY2UlLmxlYXNlcyAlaWZhY2UlIFwKLSsgICAgW1tpZmNvbmZpZyAlaWZhY2UlIGxpbmsgJWh3YWRkcmVzcyVdXQotKyAgICBkaGNsaWVudCAtNCAtdiAtcGYgL3J1bi9kaGNsaWVudC4laWZhY2UlLnBpZCAtbGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudC4laWZhY2UlLmxlYXNlcyAtSSAtZGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudDYuJWlmYWNlJS5sZWFzZXMgJWlmYWNlJSBcCi0gCVtbLWUgSUZfTUVUUklDPSVtZXRyaWMlXV0gXAotICAgICAgICAgaWYgKGV4ZWNhYmxlKCIvc2Jpbi9kaGNsaWVudCIpKQotLSAgICAvc2Jpbi91ZGhjcGMgLW4gLXAgL3J1bi91ZGhjcGMuJWlmYWNlJS5waWQgLWkgJWlmYWNlJSBbWy1IICVob3N0bmFtZSVdXSBcCi0rICAgIHVkaGNwYyAtbiAtcCAvcnVuL3VkaGNwYy4laWZhY2UlLnBpZCAtaSAlaWZhY2UlIFtbLUggJWhvc3RuYW1lJV1dIFwKLSAgICAgICAgICAgIFtbLWMgJWNsaWVudCVdXSBcCi0gICAgICAgICBlbHNpZiAoZXhlY2FibGUoIi9zYmluL3VkaGNwYyIpKQotLSAgICAvc2Jpbi9kaGNwY2QgW1staCAlaG9zdG5hbWUlXV0gW1staSAldmVuZG9yJV1dIFtbLUkgJWNsaWVudCVdXSBcCi0rICAgIGRoY3BjZCBbWy1oICVob3N0bmFtZSVdXSBbWy1pICV2ZW5kb3IlXV0gW1stSSAlY2xpZW50JV1dIFwKLSAgICAgICAgICAgIFtbLWwgJWxlYXNldGltZSVdXSAlaWZhY2UlIFwKLSAgICAgICAgIGVsc2lmIChleGVjYWJsZSgiL3NiaW4vZGhjcGNkIikpCi0gICAgIGVjaG8gJ05vIERIQ1AgY2xpZW50IHNvZnR3YXJlIGZvdW5kIScgPi9kZXYvc3RkZXJyOyBmYWxzZSBcCi0gICAgICAgICBlbHNpZiAoMSkKLSAKLSAgIGRvd24KLS0gICAgL3NiaW4vZGhjbGllbnQgLTQgLXYgLXIgLXBmIC9ydW4vZGhjbGllbnQuJWlmYWNlJS5waWQgLWxmIC92YXIvbGliL2RoY3AvZGhjbGllbnQuJWlmYWNlJS5sZWFzZXMgLUkgLWRmIC92YXIvbGliL2RoY3AvZGhjbGllbnQ2LiVpZmFjZSUubGVhc2VzICVpZmFjZSUgXAotKyAgICBkaGNsaWVudCAtNCAtdiAtciAtcGYgL3J1bi9kaGNsaWVudC4laWZhY2UlLnBpZCAtbGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudC4laWZhY2UlLmxlYXNlcyAtSSAtZGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudDYuJWlmYWNlJS5sZWFzZXMgJWlmYWNlJSBcCi0gICAgICAgICBpZiAoZXhlY2FibGUoIi9zYmluL2RoY2xpZW50IikpCi0gICAgIGlmIHRlc3QgLWYgL3J1bi91ZGhjcGMuJWlmYWNlJS5waWQ7IHRoZW4ga2lsbCAtVVNSMiAkKC9iaW4vY2F0IC9ydW4vdWRoY3BjLiVpZmFjZSUucGlkKTsga2lsbCAtVEVSTSAkKC9iaW4vY2F0IC9ydW4vdWRoY3BjLiVpZmFjZSUucGlkKTsgZmkgXAotICAgICAgICAgZWxzaWYgKGV4ZWNhYmxlKCIvc2Jpbi91ZGhjcGMiKSkKLS0gICAgL3NiaW4vZGhjcGNkIC1rICVpZmFjZSUgXAotKyAgICBkaGNwY2QgLWsgJWlmYWNlJSBcCi0gICAgICAgICBlbHNpZiAoZXhlY2FibGUoIi9zYmluL2RoY3BjZCIpKQotICAgICBlY2hvICdObyBESENQIGNsaWVudCBzb2Z0d2FyZSBmb3VuZCEnID4vZGV2L3N0ZGVycjsgZmFsc2UgXAotICAgICAgICAgZWxzaWYgKDEpCi0gCi0tICAgIC9zYmluL2lmY29uZmlnICVpZmFjZSUgZG93bgotKyAgICBpZmNvbmZpZyAlaWZhY2UlIGRvd24KLSAKLSBtZXRob2QgYm9vdHAKLSAgIGRlc2NyaXB0aW9uCi1AQCAtMzE2LDExICszMTYsMTEgQEAgbWV0aG9kIGJvb3RwCi0gICAgICAgICAgICAgICAgICAgICAgIHdoYXRldmVyIGl0IHJlYWxseSBpcy4KLSAKLSAgIHVwCi0tICAgIC9zYmluL2Jvb3RwYyBbWy0tYm9vdGZpbGUgJWJvb3RmaWxlJV1dIC0tZGV2ICVpZmFjZSUgW1stLXNlcnZlciAlc2VydmVyJV1dIFwKLSsgICAgYm9vdHBjIFtbLS1ib290ZmlsZSAlYm9vdGZpbGUlXV0gLS1kZXYgJWlmYWNlJSBbWy0tc2VydmVyICVzZXJ2ZXIlXV0gXAotICAgICAgICAgICAgW1stLWh3YWRkciAlaHdhZGRyJV1dIC0tcmV0dXJuaWZmYWlsIC0tc2VydmVyYmNhc3QKLSAKLSAgIGRvd24KLS0gICAgL3NiaW4vaWZjb25maWcgJWlmYWNlJSBkb3duCi0rICAgIGlmY29uZmlnICVpZmFjZSUgZG93bgotIAotIG1ldGhvZCBwcHAKLSAgIGRlc2NyaXB0aW9uCi1AQCAtMzMxLDkgKzMzMSw5IEBAIG1ldGhvZCBwcHAKLSAgICAgdW5pdCBudW1iZXIgICAgLS0gVXNlIC9udW1iZXIvIGFzIHRoZSBwcHAgdW5pdCBudW1iZXIuCi0gICAgIG9wdGlvbnMgc3RyaW5nIC0tIFBhc3MgL3N0cmluZy8gYXMgYWRkaXRpb25hbCBvcHRpb25zIHRvIHBvbi4KLSAgIHVwCi0tICAgIC91c3IvYmluL3BvbiBbWyVwcm92aWRlciVdXSBbW3VuaXQgJXVuaXQlXV0gW1slb3B0aW9ucyVdXQotKyAgICBwb24gW1slcHJvdmlkZXIlXV0gW1t1bml0ICV1bml0JV1dIFtbJW9wdGlvbnMlXV0KLSAgIGRvd24KLS0gICAgL3Vzci9iaW4vcG9mZiBbWyVwcm92aWRlciVdXQotKyAgICBwb2ZmIFtbJXByb3ZpZGVyJV1dCi0gCi0gbWV0aG9kIHd2ZGlhbAotICAgZGVzY3JpcHRpb24KLUBAIC0zNDIsMTAgKzM0MiwxMCBAQCBtZXRob2Qgd3ZkaWFsCi0gICBvcHRpb25zCi0gICAgIHByb3ZpZGVyIG5hbWUgIC0tIFVzZSAvbmFtZS8gYXMgdGhlIHByb3ZpZGVyIChmcm9tIC9ldGMvd3ZkaWFsLmNvbmYpLgotICAgdXAKLS0gICAgL3NiaW4vc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAteCAvdXNyL2Jpbi93dmRpYWwgXAotKyAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC14IC91c3IvYmluL3d2ZGlhbCBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1wIC9ydW4vd3ZkaWFsLiVpZmFjZSUucGlkIC1iIC1tIC0tIFtbICVwcm92aWRlciUgXV0KLSAgIGRvd24KLS0gICAgL3NiaW4vc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC14IC91c3IvYmluL3d2ZGlhbCBcCi0rICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAteCAvdXNyL2Jpbi93dmRpYWwgXAotICAgICAgICAgICAgICAgICAgICAgICAtcCAvcnVuL3d2ZGlhbC4laWZhY2UlLnBpZCAtcyAyCi0gCi0gCi1AQCAtMzU2LDkgKzM1Niw5IEBAIG1ldGhvZCBpcHY0bGwKLSAgICAga25vd24gYXMgQVBJUEEgb3IgSVBBQywgYW5kIG9mdGVuIGNvbGxvcXVpYWxseSByZWZlcnJlZCB0bwotICAgICBhcyAiWmVyb2NvbmYgYWRkcmVzcyIuCi0gICB1cAotLSAgICAvdXNyL3NiaW4vYXZhaGktYXV0b2lwZCAtRCAlaWZhY2UlCi0rICAgIGF2YWhpLWF1dG9pcGQgLUQgJWlmYWNlJQotICAgZG93bgotLSAgICAvdXNyL3NiaW4vYXZhaGktYXV0b2lwZCAtLWtpbGwgJWlmYWNlJQotKyAgICBhdmFoaS1hdXRvaXBkIC0ta2lsbCAlaWZhY2UlCi0gYXJjaGl0ZWN0dXJlIGh1cmQKLSAKLSBtZXRob2QgbG9vcGJhY2sKLUBAIC00MzIsMjMgKzQzMiwyMyBAQCBtZXRob2QgZGhjcAotIAotICAgdXAKLSAgICAgW1tXYXJuaW5nOiBPcHRpb24gaHdhZGRyZXNzOiAlaHdhZGRyZXNzJSBub3QgeWV0IHN1cHBvcnRlZF1dCi0tICAgIC9zYmluL2RoY2xpZW50IC00IC12IC1wZiAvcnVuL2RoY2xpZW50LiVpZmFjZS8vLy4lLnBpZCAtbGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudC4laWZhY2UvLy8uJS5sZWFzZXMgLUkgLWRmIC92YXIvbGliL2RoY3AvZGhjbGllbnQ2LiVpZmFjZS8vLy4lLmxlYXNlcyAlaWZhY2UlIFwKLSsgICAgZGhjbGllbnQgLTQgLXYgLXBmIC9ydW4vZGhjbGllbnQuJWlmYWNlLy8vLiUucGlkIC1sZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50LiVpZmFjZS8vLy4lLmxlYXNlcyAtSSAtZGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudDYuJWlmYWNlLy8vLiUubGVhc2VzICVpZmFjZSUgXAotICAgICAgICAgaWYgKGV4ZWNhYmxlKCIvc2Jpbi9kaGNsaWVudCIpKQotLSAgICAvc2Jpbi91ZGhjcGMgLW4gLXAgL3J1bi91ZGhjcGMuJWlmYWNlLy8vLiUucGlkIC1pICVpZmFjZSUgW1stSCAlaG9zdG5hbWUlXV0gXAotKyAgICB1ZGhjcGMgLW4gLXAgL3J1bi91ZGhjcGMuJWlmYWNlLy8vLiUucGlkIC1pICVpZmFjZSUgW1stSCAlaG9zdG5hbWUlXV0gXAotICAgICAgICAgICAgW1stYyAlY2xpZW50JV1dIFwKLSAgICAgICAgIGVsc2lmIChleGVjYWJsZSgiL3NiaW4vdWRoY3BjIikpCi0tICAgIC9zYmluL2RoY3BjZCBbWy1oICVob3N0bmFtZSVdXSBbWy1pICV2ZW5kb3IlXV0gW1stSSAlY2xpZW50JV1dIFwKLSsgICAgZGhjcGNkIFtbLWggJWhvc3RuYW1lJV1dIFtbLWkgJXZlbmRvciVdXSBbWy1JICVjbGllbnQlXV0gXAotICAgICAgICAgICAgW1stbCAlbGVhc2V0aW1lJV1dICVpZmFjZSUgXAotICAgICAgICAgZWxzaWYgKGV4ZWNhYmxlKCIvc2Jpbi9kaGNwY2QiKSkKLSAgICAgZWNobyAnTm8gREhDUCBjbGllbnQgc29mdHdhcmUgZm91bmQhJyA+L2Rldi9zdGRlcnI7IGZhbHNlIFwKLSAgICAgICAgIGVsc2lmICgxKQotIAotICAgZG93bgotLSAgICAvc2Jpbi9kaGNsaWVudCAtNCAtdiAtciAtcGYgL3J1bi9kaGNsaWVudC4laWZhY2UvLy8uJS5waWQgLWxmIC92YXIvbGliL2RoY3AvZGhjbGllbnQuJWlmYWNlLy8vLiUubGVhc2VzIC1JIC1kZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50Ni4laWZhY2UvLy8uJS5sZWFzZXMgJWlmYWNlJSBcCi0rICAgIGRoY2xpZW50IC00IC12IC1yIC1wZiAvcnVuL2RoY2xpZW50LiVpZmFjZS8vLy4lLnBpZCAtbGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudC4laWZhY2UvLy8uJS5sZWFzZXMgLUkgLWRmIC92YXIvbGliL2RoY3AvZGhjbGllbnQ2LiVpZmFjZS8vLy4lLmxlYXNlcyAlaWZhY2UlIFwKLSAgICAgICAgIGlmIChleGVjYWJsZSgiL3NiaW4vZGhjbGllbnQiKSkKLSAgICAgaWYgdGVzdCAtZiAvcnVuL3VkaGNwYy4laWZhY2UvLy8uJS5waWQ7IHRoZW4ga2lsbCAtVVNSMiAkKC9iaW4vY2F0IC9ydW4vdWRoY3BjLiVpZmFjZS8vLy4lLnBpZCk7IGtpbGwgLVRFUk0gJCgvYmluL2NhdCAvcnVuL3VkaGNwYy4laWZhY2UvLy8uJS5waWQpOyBmaSBcCi0gICAgICAgICBlbHNpZiAoZXhlY2FibGUoIi9zYmluL3VkaGNwYyIpKQotLSAgICAvc2Jpbi9kaGNwY2QgLWsgJWlmYWNlJSBcCi0rICAgIGRoY3BjZCAtayAlaWZhY2UlIFwKLSAgICAgICAgIGVsc2lmIChleGVjYWJsZSgiL3NiaW4vZGhjcGNkIikpCi0gICAgIGVjaG8gJ05vIERIQ1AgY2xpZW50IHNvZnR3YXJlIGZvdW5kIScgPi9kZXYvc3RkZXJyOyBmYWxzZSBcCi0gICAgICAgICBlbHNpZiAoMSkKLUBAIC00ODIsOSArNDgyLDkgQEAgbWV0aG9kIHBwcAotICAgICB1bml0IG51bWJlciAgICAtLSBVc2UgL251bWJlci8gYXMgdGhlIHBwcCB1bml0IG51bWJlci4KLSAgICAgb3B0aW9ucyBzdHJpbmcgLS0gUGFzcyAvc3RyaW5nLyBhcyBhZGRpdGlvbmFsIG9wdGlvbnMgdG8gcG9uLgotICAgdXAKLS0gICAgL3Vzci9iaW4vcG9uIFtbJXByb3ZpZGVyJV1dIFtbdW5pdCAldW5pdCVdXSBbWyVvcHRpb25zJV1dCi0rICAgIHBvbiBbWyVwcm92aWRlciVdXSBbW3VuaXQgJXVuaXQlXV0gW1slb3B0aW9ucyVdXQotICAgZG93bgotLSAgICAvdXNyL2Jpbi9wb2ZmIFtbJXByb3ZpZGVyJV1dCi0rICAgIHBvZmYgW1slcHJvdmlkZXIlXV0KLSAKLSBtZXRob2Qgd3ZkaWFsCi0gICBkZXNjcmlwdGlvbgotQEAgLTQ5MywxMCArNDkzLDEwIEBAIG1ldGhvZCB3dmRpYWwKLSAgIG9wdGlvbnMKLSAgICAgcHJvdmlkZXIgbmFtZSAgLS0gVXNlIC9uYW1lLyBhcyB0aGUgcHJvdmlkZXIgKGZyb20gL2V0Yy93dmRpYWwuY29uZikuCi0gICB1cAotLSAgICAvc2Jpbi9zdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC14IC91c3IvYmluL3d2ZGlhbCBcCi0rICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLXggL3Vzci9iaW4vd3ZkaWFsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLXAgL3J1bi93dmRpYWwuJWlmYWNlLy8vLiUucGlkIC1iIC1tIC0tIFtbICVwcm92aWRlciUgXV0KLSAgIGRvd24KLS0gICAgL3NiaW4vc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC14IC91c3IvYmluL3d2ZGlhbCBcCi0rICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAteCAvdXNyL2Jpbi93dmRpYWwgXAotICAgICAgICAgICAgICAgICAgICAgICAtcCAvcnVuL3d2ZGlhbC4laWZhY2UvLy8uJS5waWQgLXMgMgotIAotIAotQEAgLTUwNyw2ICs1MDcsNiBAQCBtZXRob2QgaXB2NGxsCi0gICAgIGtub3duIGFzIEFQSVBBIG9yIElQQUMsIGFuZCBvZnRlbiBjb2xsb3F1aWFsbHkgcmVmZXJyZWQgdG8KLSAgICAgYXMgIlplcm9jb25mIGFkZHJlc3MiLgotICAgdXAKLS0gICAgL3Vzci9zYmluL2F2YWhpLWF1dG9pcGQgLUQgJWlmYWNlJQotKyAgICBhdmFoaS1hdXRvaXBkIC1EICVpZmFjZSUKLSAgIGRvd24KLS0gICAgL3Vzci9zYmluL2F2YWhpLWF1dG9pcGQgLS1raWxsICVpZmFjZSUKLSsgICAgYXZhaGktYXV0b2lwZCAtLWtpbGwgJWlmYWNlJQotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2ZpbGVzL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Njk0MDQyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy9ydW4tcHRlc3QKQEAgLTAsMCArMSw0IEBACisjIS9iaW4vc2gKKworQ1VSRElSPSQoZGlybmFtZSBgcmVhZGxpbmsgLWYgJDBgKQorY2QgJENVUkRJUi90ZXN0cyAmJiAuL3Rlc3RidWlsZC1saW51eApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy90d2Vhay1wdGVzdC1zY3JpcHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2ZpbGVzL3R3ZWFrLXB0ZXN0LXNjcmlwdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzYwMGNmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy90d2Vhay1wdGVzdC1zY3JpcHQucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorVHdlYWsgdGVzdHMgb2YgaWZ1cGRvd24gdG8gbWFrZSBpdCB3b3JrIHdpdGggb2UtY29yZSBwdGVzdCBmcmFtZXdvcmsuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKK2RpZmYgLS1naXQgYS90ZXN0cy90ZXN0YnVpbGQtbGludXggYi90ZXN0cy90ZXN0YnVpbGQtbGludXgKK2luZGV4IDExODFlYTAuLmQ1YzE4MTQgMTAwNzU1CistLS0gYS90ZXN0cy90ZXN0YnVpbGQtbGludXgKKysrKyBiL3Rlc3RzL3Rlc3RidWlsZC1saW51eAorQEAgLTEsNiArMSw3IEBACisgIyEvYmluL3NoIC1lCisgCistZGlyPXRlc3RzL2xpbnV4CisrY3VyZGlyPSQoZGlybmFtZSBgcmVhZGxpbmsgLWYgJDBgKQorK2Rpcj0kY3VyZGlyL2xpbnV4CisgCisgcmVzdWx0PXRydWUKKyBmb3IgdGVzdCBpbiAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxODsgZG8KK0BAIC0xMiw3ICsxMyw3IEBAIGZvciB0ZXN0IGluIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2IDE3IDE4OyBkbworICAgICAgICAgZWNobyAiVGVzdGNhc2UgJHRlc3Q6ICRhcmdzIgorIAorIAlleGl0Y29kZT0wCistICAgICAgICAuL2lmdXAgLXYgLS1uby1hY3QtY29tbWFuZHMgLS1mb3JjZSAtaSAkZGlyL3Rlc3RjYXNlLiR0ZXN0IC0tc3RhdGUtZGlyPSRkaXIvc3RhdGUuJHRlc3QgJGFyZ3MgXAorKyAgICAgICAgaWZ1cCAtdiAtLW5vLWFjdC1jb21tYW5kcyAtLWZvcmNlIC1pICRkaXIvdGVzdGNhc2UuJHRlc3QgLS1zdGF0ZS1kaXI9JGRpci9zdGF0ZS4kdGVzdCAkYXJncyBcCisgICAgICAgICAgICAgICAgID4kZGlyL3VwLXJlcy1vdXQuJHRlc3QgMj4kZGlyL3VwLXJlcy1lcnIuJHRlc3QgfHwgZXhpdGNvZGU9JD8KKyAKKyAgICAgICAgIChlY2hvICJleGl0IGNvZGU6ICRleGl0Y29kZSI7CitAQCAtMjAsNyArMjEsNyBAQCBmb3IgdGVzdCBpbiAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxODsgZG8KKyAgICAgICAgICBlY2hvICI9PT09c3RkZXJyPT09PSI7IGNhdCAkZGlyL3VwLXJlcy1lcnIuJHRlc3QpID4gJGRpci91cC1yZXMuJHRlc3QKKyAKKyAJZXhpdGNvZGU9MAorLSAgICAgICAgLi9pZmRvd24gLXYgLS1uby1hY3QtY29tbWFuZHMgLS1mb3JjZSAtaSAkZGlyL3Rlc3RjYXNlLiR0ZXN0IC0tc3RhdGUtZGlyPSRkaXIvc3RhdGUuJHRlc3QgJGFyZ3MgXAorKyAgICAgICAgaWZkb3duIC12IC0tbm8tYWN0LWNvbW1hbmRzIC0tZm9yY2UgLWkgJGRpci90ZXN0Y2FzZS4kdGVzdCAtLXN0YXRlLWRpcj0kZGlyL3N0YXRlLiR0ZXN0ICRhcmdzIFwKKyAgICAgICAgICAgICAgICA+JGRpci9kb3duLXJlcy1vdXQuJHRlc3QgMj4kZGlyL2Rvd24tcmVzLWVyci4kdGVzdCB8fCBleGl0Y29kZT0kPworIAorICAgICAgICAgKGVjaG8gImV4aXQgY29kZTogJGV4aXRjb2RlIjsKK0BAIC0yOCw5ICsyOSw5IEBAIGZvciB0ZXN0IGluIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2IDE3IDE4OyBkbworICAgICAgICAgIGVjaG8gIj09PT1zdGRlcnI9PT09IjsgY2F0ICRkaXIvZG93bi1yZXMtZXJyLiR0ZXN0KSA+ICRkaXIvZG93bi1yZXMuJHRlc3QKKyAKKyAgICAgICAgIGlmIGRpZmYgLXViICRkaXIvdXAuJHRlc3QgJGRpci91cC1yZXMuJHRlc3QgJiYgZGlmZiAtdWIgJGRpci9kb3duLiR0ZXN0ICRkaXIvZG93bi1yZXMuJHRlc3Q7IHRoZW4KKy0gICAgICAgICAgICAgICAgZWNobyAiKG9rYXkpIgorKyAgICAgICAgICAgICAgICBlY2hvICJQQVNTOiAkdGVzdCIKKyAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgZWNobyAiKGZhaWxlZCkiCisrICAgICAgICAgICAgICAgIGVjaG8gIkZBSUw6ICR0ZXN0IgorICAgICAgICAgICAgICAgICByZXN1bHQ9ZmFsc2UKKyAgICAgICAgIGZpCisgICAgICAgICBlY2hvICI9PT09PT09PT09IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9pZnVwZG93bl8wLjguMjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2lmdXBkb3duXzAuOC4yMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQwOTg5ZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2lmdXBkb3duXzAuOC4yMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLVNVTU1BUlkgPSAiaWZ1cGRvd246IGJhc2ljIGlmdXAgYW5kIGlmZG93biB1c2VkIGJ5IGluaXRzY3JpcHRzIgotREVTQ1JJUFRJT04gPSAiSGlnaCBsZXZlbCB0b29scyB0byBjb25maWd1cmUgbmV0d29yayBpbnRlcmZhY2VzIFwKLVRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgdG9vbHMgaWZ1cCBhbmQgaWZkb3duIHdoaWNoIG1heSBiZSB1c2VkIHRvIFwKLWNvbmZpZ3VyZSAob3IsIHJlc3BlY3RpdmVseSwgZGVjb25maWd1cmUpIG5ldHdvcmsgaW50ZXJmYWNlcywgYmFzZWQgb24gXAotdGhlIGZpbGUgL2V0Yy9uZXR3b3JrL2ludGVyZmFjZXMuIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1TUkNfVVJJID0gImdpdDovL3NhbHNhLmRlYmlhbi5vcmcvZGViaWFuL2lmdXBkb3duLmdpdDtwcm90b2NvbD1odHRwcyBcCi0JICAgZmlsZTovL2RlZm4yLWMtbWFuLWRvbi10LXJlbHktb24tZHBrZy1hcmNoaXRlY3R1cmUtdG8tc2V0LWEucGF0Y2ggXAotCSAgIGZpbGU6Ly9pbmV0LTYtLmRlZm4tZml4LWludmVydGVkLWNoZWNrcy1mb3ItbG9vcGJhY2sucGF0Y2ggXAotCSAgIGZpbGU6Ly85OV9uZXR3b3JrIFwKLQkgICBmaWxlOi8vMDAwMS1EZWZpbmUtRk5NX0VYVE1BVENILWZvci1tdXNsLnBhdGNoIFwKLQkgICIKLVNSQ1JFViA9ICJhYjVhMGY0NjRlNTNlMTcyMzE2YTVjYThiNWRjZGM0OWU4ODQ4OTk5IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1kb19jb21waWxlICgpIHsKLQljaG1vZCBhK3J4ICoucGwgKi5zaAotCW9lX3J1bm1ha2UgJ0NDPSR7Q0N9JyAiQ0ZMQUdTPSR7Q0ZMQUdTfSAtV2FsbCAtVyAtRCdJRlVQRE9XTl9WRVJTSU9OPVwiJHtQVn1cIiciCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44IFwKLQkJICAke0R9JHttYW5kaXJ9L21hbjUgXAotCQkgICR7RH0ke2Jhc2Vfc2JpbmRpcn0KLQotCSMgSWYgdm9sYXRpbGVzIGFyZSB1c2VkLCB0aGVuIHdlJ2xsIGFsc28gbmVlZCAvcnVuL25ldHdvcmsgdGhlcmUgdG9vLgotCWluc3RhbGwgLWQgJHtEfS9ldGMvZGVmYXVsdC92b2xhdGlsZXMKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS85OV9uZXR3b3JrICR7RH0vZXRjL2RlZmF1bHQvdm9sYXRpbGVzCi0KLQlpbnN0YWxsIC1tIDA3NTUgaWZ1cCAke0R9JHtiYXNlX3NiaW5kaXJ9LwotCWxuICR7RH0ke2Jhc2Vfc2JpbmRpcn0vaWZ1cCAke0R9JHtiYXNlX3NiaW5kaXJ9L2lmZG93bgotCWluc3RhbGwgLW0gMDY0NCBpZnVwLjggJHtEfSR7bWFuZGlyfS9tYW44Ci0JaW5zdGFsbCAtbSAwNjQ0IGludGVyZmFjZXMuNSAke0R9JHttYW5kaXJ9L21hbjUKLQljZCAke0R9JHttYW5kaXJ9L21hbjggJiYgbG4gLXMgaWZ1cC44IGlmZG93bi44Ci19Ci0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gImlmdXAgaWZkb3duIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbaWZ1cF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2lmdXAiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbaWZkb3duXSA9ICIke2Jhc2Vfc2JpbmRpcn0vaWZkb3duIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9pZnVwZG93bl8wLjguMzUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2lmdXBkb3duXzAuOC4zNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2NiOTcxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9pZnVwZG93bl8wLjguMzUuYmIKQEAgLTAsMCArMSw1NSBAQAorU1VNTUFSWSA9ICJpZnVwZG93bjogYmFzaWMgaWZ1cCBhbmQgaWZkb3duIHVzZWQgYnkgaW5pdHNjcmlwdHMiCitERVNDUklQVElPTiA9ICJIaWdoIGxldmVsIHRvb2xzIHRvIGNvbmZpZ3VyZSBuZXR3b3JrIGludGVyZmFjZXMgXAorVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSB0b29scyBpZnVwIGFuZCBpZmRvd24gd2hpY2ggbWF5IGJlIHVzZWQgdG8gXAorY29uZmlndXJlIChvciwgcmVzcGVjdGl2ZWx5LCBkZWNvbmZpZ3VyZSkgbmV0d29yayBpbnRlcmZhY2VzLCBiYXNlZCBvbiBcCit0aGUgZmlsZSAvZXRjL25ldHdvcmsvaW50ZXJmYWNlcy4iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vc2Fsc2EuZGViaWFuLm9yZy9kZWJpYW4vaWZ1cGRvd24uZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgZmlsZTovL2RlZm4yLWMtbWFuLWRvbi10LXJlbHktb24tZHBrZy1hcmNoaXRlY3R1cmUtdG8tc2V0LWEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vOTlfbmV0d29yayBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURlZmluZS1GTk1fRVhUTUFUQ0gtZm9yLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS1kby1ub3QtdXNlLWRwa2ctZm9yLWRldGVybWluaW5nLU9TLXR5cGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICdmaWxlOi8vdHdlYWstcHRlc3Qtc2NyaXB0LnBhdGNoJywgJycsIGQpfSBcCisgICAgICAgICAgICIKK1NSQ1JFViA9ICI0YWY3NjMxOGNmYzU3ZjhlNGE0NGQzNTcxMDQxODg2NjYyMTNiZDRiIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCisKK2luaGVyaXQgcHRlc3QgdXBkYXRlLWFsdGVybmF0aXZlcworCitkb19jb21waWxlICgpIHsKKwljaG1vZCBhK3J4ICoucGwgKi5zaAorCW9lX3J1bm1ha2UgJ0NDPSR7Q0N9JyAiQ0ZMQUdTPSR7Q0ZMQUdTfSAtV2FsbCAtVyAtRCdJRlVQRE9XTl9WRVJTSU9OPVwiJHtQVn1cIiciCit9CisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44IFwKKwkJICAke0R9JHttYW5kaXJ9L21hbjUgXAorCQkgICR7RH0ke2Jhc2Vfc2JpbmRpcn0KKworCSMgSWYgdm9sYXRpbGVzIGFyZSB1c2VkLCB0aGVuIHdlJ2xsIGFsc28gbmVlZCAvcnVuL25ldHdvcmsgdGhlcmUgdG9vLgorCWluc3RhbGwgLWQgJHtEfS9ldGMvZGVmYXVsdC92b2xhdGlsZXMKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS85OV9uZXR3b3JrICR7RH0vZXRjL2RlZmF1bHQvdm9sYXRpbGVzCisKKwlpbnN0YWxsIC1tIDA3NTUgaWZ1cCAke0R9JHtiYXNlX3NiaW5kaXJ9LworCWxuICR7RH0ke2Jhc2Vfc2JpbmRpcn0vaWZ1cCAke0R9JHtiYXNlX3NiaW5kaXJ9L2lmZG93bgorCWluc3RhbGwgLW0gMDY0NCBpZnVwLjggJHtEfSR7bWFuZGlyfS9tYW44CisJaW5zdGFsbCAtbSAwNjQ0IGludGVyZmFjZXMuNSAke0R9JHttYW5kaXJ9L21hbjUKKwljZCAke0R9JHttYW5kaXJ9L21hbjggJiYgbG4gLXMgaWZ1cC44IGlmZG93bi44Cit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBjcCAtciAke1N9L3Rlc3RzL3Rlc3RidWlsZC1saW51eCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KKyAgICBjcCAtciAke1N9L3Rlc3RzL2xpbnV4ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworfQorCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJpZnVwIGlmZG93biIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2lmdXBdID0gIiR7YmFzZV9zYmluZGlyfS9pZnVwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2lmZG93bl0gPSAiJHtiYXNlX3NiaW5kaXJ9L2lmZG93biIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNS4wLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9idWlsZC1hcHBsaWFuY2UtaW1hZ2VfMTUuMC4wLmJiCmluZGV4IDFkNzRlZTUuLmM5MzY3ZGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNS4wLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvYnVpbGQtYXBwbGlhbmNlLWltYWdlXzE1LjAuMC5iYgpAQCAtMjQsNyArMjQsNyBAQAogCiBpbmhlcml0IGNvcmUtaW1hZ2UgbW9kdWxlLWJhc2Ugc2V0dXB0b29sczMKIAotU1JDUkVWID89ICI4MTgxNjgxYjMzZGEyNzJmZWY4MzI3NjEwNGQ1YzdhOTNmODRkYTQ2IgorU1JDUkVWID89ICIzMzkwMzkzMmFkODdiZmE4ZThiZjdiYWYyMjU2NzgxNzE0OTkzYjc5IgogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5IFwKICAgICAgICAgICAgZmlsZTovL1lvY3RvX0J1aWxkX0FwcGxpYW5jZS52bXggXAogICAgICAgICAgICBmaWxlOi8vWW9jdG9fQnVpbGRfQXBwbGlhbmNlLnZteGYgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvdWRldiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL3VkZXYKaW5kZXggODc1NTFmZi4uNDg5OGI4OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvdWRldgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay91ZGV2CkBAIC00MSw2ICs0MSw5IEBACiAJbWtkaXIgLXAgL3J1bgogCW1rZGlyIC1wIC92YXIvcnVuCiAKKwkjIFdvcmthcm91bmQgaWYgY29uc29sZT1udWxsLCBzeXN0ZW1kLXVkZXZkIG5lZWRzIHZhbGlkIHN0ZGluLCBzdGRvdXQgYW5kIHN0ZGVyciB0byB3b3JrCisJc2ggLWMgImV4ZWMgNDwgL2Rldi9jb25zb2xlIiB8fCB7IGV4ZWMgMD4gL2Rldi9udWxsOyBleGVjIDE+IC9kZXYvbnVsbDsgZXhlYyAyPiAvZGV2L251bGw7IH0KKwogCSRfVURFVl9EQUVNT04gLS1kYWVtb24KIAl1ZGV2YWRtIHRyaWdnZXIgLS1hY3Rpb249YWRkCiAJdWRldmFkbSBzZXR0bGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC8wMDAxLVVzZS1EQVRBRElSLWFuZC1hcHBlbmQtaTM4Ni10by1maXgtbGlia2JkZmlsZS10ZXN0MDgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmQvMDAwMS1Vc2UtREFUQURJUi1hbmQtYXBwZW5kLWkzODYtdG8tZml4LWxpYmtiZGZpbGUtdGVzdDA4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjNTIzNjAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmQvMDAwMS1Vc2UtREFUQURJUi1hbmQtYXBwZW5kLWkzODYtdG8tZml4LWxpYmtiZGZpbGUtdGVzdDA4LnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gNGMxMmY3NmY0MTc3Y2ZkNTYwY2Y3MDhhMTY3NzRlYmZhZGJkNDFhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJNaW5nZGUgKE1hdHRoZXcpIFplbmciIDxtYXR0aGV3LnplbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjIgSmFuIDIwMjAgMTE6MDI6MTcgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIERBVEFESVIgYW5kIGFwcGVuZCBpMzg2IHRvIGZpeCBsaWJrYmRmaWxlLXRlc3QwOCBwdGVzdAorIGZhaWx1cmUKKworUmVwbGFjZSBBQlNfREFUQURJUiB3aXRoIERBVEFESVIgYW5kIGFwcGVuZCBpMzg2IHRvIGRpcnBhdGguCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1RoaXMgT0Ugc3BlY2lmaWMgcGF0Y2ggYXBwbGllcyB0byBrYmQgdjIuMi4wIGZvciBub3csIHRoZSB1cHN0cmVhbQorbWFkZSBkcmFzdGljIGNoYW5nZXMgc2luY2UgdjIuMi4wLCBpbiBmYWN0IHRoZXkgZ290IHJpZCBvZiBBQlNfREFUQURJUgoraW4gY29tbWl0IDViNmRmNWMgYWxvbmcgd2l0aCBhIHNlcmllcyBvZiBvdGhlciBjb21taXRzIHdoaWNoIG1heSBvcgorbWF5IG5vdCBmaXggdGhpcyBpc3N1ZS4gV2Ugd2lsbCBmaW5kIG91dCBpbiBmdXR1cmUgcmVsZWFzZXMuCisKK1NpZ25lZC1vZmYtYnk6IE1hdHRoZXcgWmVuZzxNYXR0aGV3LlplbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIHRlc3RzL2xpYmtiZGZpbGUtdGVzdDA4LmMgfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9saWJrYmRmaWxlLXRlc3QwOC5jIGIvdGVzdHMvbGlia2JkZmlsZS10ZXN0MDguYworaW5kZXggYmY0MTcwNy4uNWUyODdmMSAxMDA2NDQKKy0tLSBhL3Rlc3RzL2xpYmtiZGZpbGUtdGVzdDA4LmMKKysrKyBiL3Rlc3RzL2xpYmtiZGZpbGUtdGVzdDA4LmMKK0BAIC0xNCwxNCArMTQsMTQgQEAgbWFpbihpbnQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgYXJnYywgY2hhciAqKmFyZ3YpCisgCWlmICghZnApCisgCQlrYmRfZXJyb3IoRVhJVF9GQUlMVVJFLCAwLCAidW5hYmxlIHRvIGNyZWF0ZSBrYmRmaWxlIik7CisKKy0JY29uc3QgY2hhciAqY29uc3QgZGlycGF0aFtdICA9IHsgIiIsIERBVEFESVIgIi9maW5kZmlsZS90ZXN0XzAva2V5bWFwcy8qKiIsIDAgfTsKKysJY29uc3QgY2hhciAqY29uc3QgZGlycGF0aFtdICA9IHsgIiIsIERBVEFESVIgIi9maW5kZmlsZS90ZXN0XzAva2V5bWFwcy9pMzg2LyoqIiwgMCB9OworIAljb25zdCBjaGFyICpjb25zdCBzdWZmaXhlc1tdID0geyAiIiwgIi5tYXAiLCAiLmttYXAiLCAwIH07CisKKy0JY29uc3QgY2hhciAqZXhwZWN0ID0gQUJTX0RBVEFESVIgIi9maW5kZmlsZS90ZXN0XzAva2V5bWFwcy9pMzg2L3F3ZXJ0eS90ZXN0MC5tYXAiOworKwljb25zdCBjaGFyICpleHBlY3QgPSBEQVRBRElSICIvZmluZGZpbGUvdGVzdF8wL2tleW1hcHMvaTM4Ni9xd2VydHkvdGVzdDAubWFwIjsKKworIAlpbnQgcmMgPSAwOworCistCXJjID0ga2JkZmlsZV9maW5kKChjaGFyICopKEFCU19EQVRBRElSICIvZmluZGZpbGUvdGVzdF8wL2tleW1hcHMvaTM4Ni9xd2VydHkvdGVzdDAiKSwgKGNoYXIgKiopIGRpcnBhdGgsIChjaGFyICoqKSBzdWZmaXhlcywgZnApOworKwlyYyA9IGtiZGZpbGVfZmluZCgoY2hhciAqKSJ0ZXN0MCIsIChjaGFyICoqKSBkaXJwYXRoLCAoY2hhciAqKikgc3VmZml4ZXMsIGZwKTsKKworIAlpZiAocmMgIT0gMCkKKyAJCWtiZF9lcnJvcihFWElUX0ZBSUxVUkUsIDAsICJ1bmFibGUgdG8gZmluZCBmaWxlIik7CistLQorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC8wMDAxLWFuYWx5emUubC1hZGQtbWlzc2luZy1zdHJpbmctZm9ybWF0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkLzAwMDEtYW5hbHl6ZS5sLWFkZC1taXNzaW5nLXN0cmluZy1mb3JtYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkxNmZkOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC8wMDAxLWFuYWx5emUubC1hZGQtbWlzc2luZy1zdHJpbmctZm9ybWF0LnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK0Zyb20gZGM2YmYyYWUwODM1YzY1NjliMjcwZThlMWYyNmEzMTczZjM5MjdkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCA0IERlYyAyMDE5IDEzOjE0OjAxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGFuYWx5emUubDogYWRkIG1pc3Npbmcgc3RyaW5nIGZvcm1hdAorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2xlZ2lvbnVzL2tiZC9wdWxsLzM1XQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBzcmMvbGlia2V5bWFwL2FuYWx5emUubCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9saWJrZXltYXAvYW5hbHl6ZS5sIGIvc3JjL2xpYmtleW1hcC9hbmFseXplLmwKK2luZGV4IGUzMmFjZTYuLmRlNjJmNDYgMTAwNjQ0CistLS0gYS9zcmMvbGlia2V5bWFwL2FuYWx5emUubAorKysrIGIvc3JjL2xpYmtleW1hcC9hbmFseXplLmwKK0BAIC00NjMsNyArNDYzLDcgQEAgVG8gICAgICAgICAgICAgICAgICAgICAgdG98VG98VE8KKyAKKyAJCQkJCXN0cmVycm9yX3IoZXJybm8sIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworIAorLQkJCQkJRVJSKHl5ZXh0cmEsIGJ1Zik7CisrCQkJCQlFUlIoeXlleHRyYSwgIiVzIiwgYnVmKTsKKyAJCQkJCXJldHVybihFUlJPUik7CisgCQkJCX0KKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC9maXhfY2ZsYWdzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkL2ZpeF9jZmxhZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzcyMjA5NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC9maXhfY2ZsYWdzLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK1dlIG5lZWQgdG8gZW5zdXJlIG91ciBDRkxBR1MgYXJlIHByZXNlcnZlZCBhcyB3ZWxsIGFzIHdoYXRldmVyIHR3ZWFrIGNvbmZpZ3VyZQordHJpZXMgdG8gbWFrZS4gV2l0aG91dCB0aGVzZSwgdGhlIGRlYnVnIHByZWZpeCBjaGFuZ2VzIGdldCBsb3N0IGFuZCB3ZSBsb3NlCitidWlsZCByZXByb2R1Y2liaWxpdHksIGxpa2VseSB3aXRoIG90aGVyIHNpZGUgZWZmZWN0cy4KKworU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKzIwMjAvMS8yNworCitJbmRleDoga2JkLTIuMi4wL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGtiZC0yLjIuMC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGtiZC0yLjIuMC9jb25maWd1cmUuYWMKK0BAIC03Miw5ICs3Miw5IEBAIGlmIHRlc3QgIiRlbmFibGVfY29kZV9jb3ZlcmFnZSIgPSB5ZXM7IHQKKyBmaQorIAorIGNhc2UgIiRHQ0MsJGFjX2N2X3Byb2dfY2NfZyIgaW4KKy0JeWVzLHllcykgQ0ZMQUdTPSItZyAkQ0NfT19MRVZFTCAkRk9SVElGWV9TT1VSQ0UiIDs7CistCXllcywpICAgIENGTEFHUz0iJENDX09fTEVWRUwgJEZPUlRJRllfU09VUkNFIiA7OworLQkgICAseWVzKSBDRkxBR1M9Ii1nIiA7OworKwl5ZXMseWVzKSBDRkxBR1M9Ii1nICRDQ19PX0xFVkVMICRGT1JUSUZZX1NPVVJDRSAkQ0ZMQUdTIiA7OworKwl5ZXMsKSAgICBDRkxBR1M9IiRDQ19PX0xFVkVMICRGT1JUSUZZX1NPVVJDRSAkQ0ZMQUdTIiA7OworKwkgICAseWVzKSBDRkxBR1M9Ii1nICRDRkxBR1MiIDs7CisgZXNhYworIAorIENDX0NIRUNLX0NGTEFHU19BUFBFTkQoW1wKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC9zZXQtcHJvcGVyLXBhdGgtb2YtcmVzb3VyY2VzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkL3NldC1wcm9wZXItcGF0aC1vZi1yZXNvdXJjZXMucGF0Y2gKaW5kZXggYTlhM2FiOC4uNGIxZTViOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkL3NldC1wcm9wZXItcGF0aC1vZi1yZXNvdXJjZXMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkL3NldC1wcm9wZXItcGF0aC1vZi1yZXNvdXJjZXMucGF0Y2gKQEAgLTEsMyArMSw4IEBACitGcm9tIGNiM2FmOGZiMDcyZjg5OTlkYmI1MTYwYmRjOTVhMTAyYjAyZmQzN2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMzAgU2VwIDIwMTYgMTY6NDk6NTUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0ga2JkOiBjcmVhdGUgcHRlc3Qgc3ViLXBhY2thZ2UKKwogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KIAoga2JkIGlzIG91dCBvZiBzb3VyY2UgYnVpbHQsIHRoZW4gdGhlIHZhbHVlIG9mICQoc3JjZGlyKSBpcyByZWxhdGl2ZSBwYXRoIG9mCkBAIC0xMywzOCArMTgsNjEgQEAKIAogU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CiAKLUluZGV4OiBrYmQtMi4wLjQvdGVzdHMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBrYmQtMi4wLjQub3JpZy90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGtiZC0yLjAuNC90ZXN0cy9NYWtlZmlsZS5hbQotQEAgLTEsNyArMSw3IEBACi0gQU1fQ1BQRkxBR1MgPSBcCi0gCS1JJChzcmNkaXIpLy4uL3NyYy9saWJrZXltYXAgXAorLS0tCisgdGVzdHMvTWFrZWZpbGUuYW0gICAgICAgICAgIHwgNCArKy0tCisgdGVzdHMvYWx0LWlzLW1ldGEuaW4gICAgICAgIHwgMiArLQorIHRlc3RzL2R1bXBrZXlzLWJrZXltYXAuaW4gICB8IDQgKystLQorIHRlc3RzL2R1bXBrZXlzLWZ1bGx0YWJsZS5pbiB8IDIgKy0KKyB0ZXN0cy9kdW1wa2V5cy1ta3RhYmxlLmluICAgfCA0ICsrLS0KKyA1IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KK2luZGV4IDhkMGFiNjkuLjUxNDdjMjggMTAwNjQ0CistLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KK0BAIC03LDggKzcsOCBAQCBBTV9DUFBGTEFHUyA9IFwKICAJLUkkKGJ1aWxkZGlyKS8uLi9zcmMvbGlia2V5bWFwIFwKLS0JLUREQVRBRElSPVwiJChzcmNkaXIpXCIgLURCVUlMRERJUj1cIiQoYnVpbGRkaXIpXCIKLSsJLUREQVRBRElSPVwiLlwiIC1EQlVJTERESVI9XCIkKGJ1aWxkZGlyKVwiCisgCS1JJChzcmNkaXIpLy4uL3NyYy9saWJrYmRmaWxlIFwKKyAJLUkkKGJ1aWxkZGlyKS8uLi9zcmMvbGlia2JkZmlsZSBcCistCS1EREFUQURJUj1cIiQoc3JjZGlyKVwiIFwKKy0JLURBQlNfREFUQURJUj1cIiQocmVhbHBhdGggJChzcmNkaXIpKVwiIFwKKysJLUREQVRBRElSPVwiLlwiIFwKKysJLURBQlNfREFUQURJUj1cIi91c3IvbGliL2tiZC9wdGVzdC90ZXN0c1wiIFwKKyAJLURCVUlMRERJUj1cIiQoYnVpbGRkaXIpXCIKICAKLSBBTV9DRkxBR1MgPSAkKENIRUNLX0NGTEFHUykKLSBMREFERCAgPSAkKHRvcF9idWlsZGRpcikvc3JjL2xpYmtleW1hcC9saWJrZXltYXAubGEgJChDSEVDS19MSUJTKSBASU5UTExJQlNACi1JbmRleDoga2JkLTIuMC40L3Rlc3RzL2FsdC1pcy1tZXRhLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0ga2JkLTIuMC40Lm9yaWcvdGVzdHMvYWx0LWlzLW1ldGEuaW4KLSsrKyBrYmQtMi4wLjQvdGVzdHMvYWx0LWlzLW1ldGEuaW4KLUBAIC03LDggKzcsOCBAQCBjZCAiJGN3ZCIKKyBBTV9DRkxBR1MgPSAkKENIRUNLX0NGTEFHUykgJChDT0RFX0NPVkVSQUdFX0NGTEFHUykKK2RpZmYgLS1naXQgYS90ZXN0cy9hbHQtaXMtbWV0YS5pbiBiL3Rlc3RzL2FsdC1pcy1tZXRhLmluCitpbmRleCAzYTE0NDFmLi5kODI5ZjJlIDEwMDc1NQorLS0tIGEvdGVzdHMvYWx0LWlzLW1ldGEuaW4KKysrKyBiL3Rlc3RzL2FsdC1pcy1tZXRhLmluCitAQCAtNyw3ICs3LDcgQEAgY2QgIiRjd2QiCiAgcmM9MAogIHRlbXA9IiQobWt0ZW1wICJAQlVJTERESVJAL3RlbXAuWFhYWFhYWFhYIikiCiAgCi0tLi9saWJrZXltYXAtc2hvd21hcHMgIkBEQVRBRElSQCIvYWx0LWlzLW1ldGEubWFwID4gIiR0ZW1wIiB8fCByYz0kPwotLWNtcCAtcyAiQERBVEFESVJALy9hbHQtaXMtbWV0YS5vdXRwdXQiICIkdGVtcCIgfHwgcmM9JD8KLSsuL2xpYmtleW1hcC1zaG93bWFwcyAuL2FsdC1pcy1tZXRhLm1hcCA+ICIkdGVtcCIgfHwgcmM9JD8KLStjbXAgLXMgIi4vYWx0LWlzLW1ldGEub3V0cHV0IiAiJHRlbXAiIHx8IHJjPSQ/CistZGF0YWRpcj0iQERBVEFESVJAL2RhdGEvYWx0LWlzLW1ldGEiCisrZGF0YWRpcj0iLi9kYXRhL2FsdC1pcy1tZXRhIgorIAorIC4vbGlia2V5bWFwLXNob3dtYXBzICIkZGF0YWRpciIvYWx0LWlzLW1ldGEubWFwID4gIiR0ZW1wIiB8fCByYz0kPworIGNtcCAtcyAiJGRhdGFkaXIvYWx0LWlzLW1ldGEub3V0cHV0IiAiJHRlbXAiIHx8IHJjPSQ/CitkaWZmIC0tZ2l0IGEvdGVzdHMvZHVtcGtleXMtYmtleW1hcC5pbiBiL3Rlc3RzL2R1bXBrZXlzLWJrZXltYXAuaW4KK2luZGV4IDAzZDRjYTIuLmQxZDBlMjYgMTAwNzU1CistLS0gYS90ZXN0cy9kdW1wa2V5cy1ia2V5bWFwLmluCisrKysgYi90ZXN0cy9kdW1wa2V5cy1ia2V5bWFwLmluCitAQCAtOSw4ICs5LDggQEAgdGVtcD0iJChta3RlbXAgIkBCVUlMRERJUkAvdGVtcC5YWFhYWFhYWFgiKSIKKyAKKyBkYXRhZGlyPSJAREFUQURJUkAiCisgCistLi9saWJrZXltYXAtYmtleW1hcCAiJGRhdGFkaXIvIi4uL2RhdGEva2V5bWFwcy9pMzg2L3F3ZXJ0eS9kZWZrZXltYXAubWFwID4gIiR0ZW1wIiB8fCByYz0kPworLWNtcCAtcyAiJGRhdGFkaXIvZGF0YS9kdW1wa2V5cy1ia2V5bWFwL2JrZXltYXAuYmluIiAiJHRlbXAiIHx8IHJjPSQ/CisrLi9saWJrZXltYXAtYmtleW1hcCAuLi9kYXRhL2tleW1hcHMvaTM4Ni9xd2VydHkvZGVma2V5bWFwLm1hcCA+ICIkdGVtcCIgfHwgcmM9JD8KKytjbXAgLXMgIi4vZGF0YS9kdW1wa2V5cy1ia2V5bWFwL2JrZXltYXAuYmluIiAiJHRlbXAiIHx8IHJjPSQ/CiAgCiAgaWYgWyAiJHJjIiAhPSAwIF07IHRoZW4KICAJcHJpbnRmICdmYWlsZWRcbicKLUluZGV4OiBrYmQtMi4wLjQvdGVzdHMvZHVtcGtleXMtZnVsbHRhYmxlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0ga2JkLTIuMC40Lm9yaWcvdGVzdHMvZHVtcGtleXMtZnVsbHRhYmxlLmluCi0rKysga2JkLTIuMC40L3Rlc3RzL2R1bXBrZXlzLWZ1bGx0YWJsZS5pbgorZGlmZiAtLWdpdCBhL3Rlc3RzL2R1bXBrZXlzLWZ1bGx0YWJsZS5pbiBiL3Rlc3RzL2R1bXBrZXlzLWZ1bGx0YWJsZS5pbgoraW5kZXggYTNhNWVjZS4uNjdhNzNlZiAxMDA3NTUKKy0tLSBhL3Rlc3RzL2R1bXBrZXlzLWZ1bGx0YWJsZS5pbgorKysrIGIvdGVzdHMvZHVtcGtleXMtZnVsbHRhYmxlLmluCiBAQCAtNSw3ICs1LDcgQEAgY3dkPSIkKHJlYWRsaW5rIC1ldiAiJHswJS8qfSIpIgogIGNkICIkY3dkIgogIApAQCAtNTQsMyArODIsMTggQEAKICAKICBjaGVja19rZXltYXAoKSB7CiAgCWxvY2FsIGttYXAgdGVtcCByYworZGlmZiAtLWdpdCBhL3Rlc3RzL2R1bXBrZXlzLW1rdGFibGUuaW4gYi90ZXN0cy9kdW1wa2V5cy1ta3RhYmxlLmluCitpbmRleCAwZjE3YzQwLi43ZTUxNjFkIDEwMDc1NQorLS0tIGEvdGVzdHMvZHVtcGtleXMtbWt0YWJsZS5pbgorKysrIGIvdGVzdHMvZHVtcGtleXMtbWt0YWJsZS5pbgorQEAgLTcsOCArNyw4IEBAIGNkICIkY3dkIgorIHJjPTAKKyB0ZW1wPSIkKG1rdGVtcCAiQEJVSUxERElSQC90ZW1wLlhYWFhYWFhYWCIpIgorIAorLS4vbGlia2V5bWFwLW1rdGFibGUgIkBEQVRBRElSQC8iLi4vZGF0YS9rZXltYXBzL2kzODYvcXdlcnR5L2RlZmtleW1hcC5tYXAgPiAiJHRlbXAiIHx8IHJjPSQ/CistY21wIC1zICJAREFUQURJUkAvZGF0YS9kdW1wa2V5cy1ta3RhYmxlL2RlZmtleW1hcC5jIiAiJHRlbXAiIHx8IHJjPSQ/CisrLi9saWJrZXltYXAtbWt0YWJsZSAuLi9kYXRhL2tleW1hcHMvaTM4Ni9xd2VydHkvZGVma2V5bWFwLm1hcCA+ICIkdGVtcCIgfHwgcmM9JD8KKytjbXAgLXMgIi4vZGF0YS9kdW1wa2V5cy1ta3RhYmxlL2RlZmtleW1hcC5jIiAiJHRlbXAiIHx8IHJjPSQ/CisgCisgaWYgWyAiJHJjIiAhPSAwIF07IHRoZW4KKyAJcHJpbnRmICdmYWlsZWRcbicKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZF8yLjAuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZF8yLjAuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFmMzI1Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmRfMi4wLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi1TVU1NQVJZID0gIktleXRhYmxlIGZpbGVzIGFuZCBrZXlib2FyZCB1dGlsaXRpZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmtiZC1wcm9qZWN0Lm9yZy8iCi0jIGV2ZXJ5dGhpbmcgbWludXMgY29uc29sZS1mb250cyBpcyBHUEx2MisKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTVmY2MzNjEyMWQ5M2UxZjY5ZDk2YTMxMzA3OGM4YjUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHRlc3QgcGtnY29uZmlnCi0KLVJSRVBMQUNFU18ke1BOfSA9ICJjb25zb2xlLXRvb2xzIgotUlBST1ZJREVTXyR7UE59ID0gImNvbnNvbGUtdG9vbHMiCi1SQ09ORkxJQ1RTXyR7UE59ID0gImNvbnNvbGUtdG9vbHMiCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy8ke0JQTn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAnZmlsZTovL3NldC1wcm9wZXItcGF0aC1vZi1yZXNvdXJjZXMucGF0Y2gnLCAnJywgZCl9IFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjMTYzNWE1YTgzYjYzYWNhN2Y5N2EzZWFiMzllYmFhNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZmQ5MGFmNmJlYjIyNWE5YmI5YjlmYjQxNGMwOTBmYmE1M2M5YTU1NzkzZTE3MmY1MDhjZDQzNjUyZTU5YTg4IgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0gXAotICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICd0ZXN0cycsJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUdbcGFtXSA9ICItLWVuYWJsZS12bG9jaywgLS1kaXNhYmxlLXZsb2NrLCBsaWJwYW0sIgotUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLS1lbmFibGUtdGVzdHMsIC0tZGlzYWJsZS10ZXN0cywgbGliY2hlY2siCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgb2VfcnVubWFrZSAtQyAke0J9L3Rlc3RzIGR1bXBrZXlzLWZ1bGx0YWJsZSBhbHQtaXMtbWV0YQotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotICAgIGluc3RhbGwgLUQgJHtCfS90ZXN0cy9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQotICAgIHNlZCAtaSAtZSAnL01ha2VmaWxlOi8sL14kL2QnIC1lICcvJTogJS5pbi8sL14kL2QnIFwKLQktZSAnczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnJyBcCi0JLWUgJ3M6JHtERUJVR19QUkVGSVhfTUFQfTo6ZycgXAotCS1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCi0JLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0JLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKLQktZSAnczoke1N9L2NvbmZpZy9taXNzaW5nOjpnJyBcCi0JLWUgJ3M6JHtXT1JLRElSfTo6ZycgXAotCS1lICcvbGlia2V5bWFwXy4qX1NPVVJDRVMgPS9kJyAtZSAnLyQoRVhFRVhUKTovLC9eJC9kJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQotCi0gICAgZmluZCAke0J9L3Rlc3RzIC1leGVjdXRhYmxlIC1leGVjIGluc3RhbGwge30gJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMgXDsKLSAgICBmaW5kICR7U30vdGVzdHMgXCggLW5hbWUgXCoubWFwIC1vIC1uYW1lIFwqLmJpbiAtbyAtbmFtZSBcKi5vdXRwdXQgXCkgLWV4ZWMgaW5zdGFsbCB7fSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cyBcOwotCi0gICAgaW5zdGFsbCAtRCAtbSA3NTUgJHtTfS9jb25maWcvdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0vY29uZmlnL3Rlc3QtZHJpdmVyCi19Ci0KLVBBQ0tBR0VTICs9ICIke1BOfS1jb25zb2xlZm9udHMgJHtQTn0ta2V5bWFwcyAke1BOfS11bmltYXBzICR7UE59LWNvbnNvbGV0cmFucyIKLQotRklMRVNfJHtQTn0tY29uc29sZWZvbnRzID0gIiR7ZGF0YWRpcn0vY29uc29sZWZvbnRzIgotRklMRVNfJHtQTn0tY29uc29sZXRyYW5zID0gIiR7ZGF0YWRpcn0vY29uc29sZXRyYW5zIgotRklMRVNfJHtQTn0ta2V5bWFwcyA9ICIke2RhdGFkaXJ9L2tleW1hcHMiCi1GSUxFU18ke1BOfS11bmltYXBzID0gIiR7ZGF0YWRpcn0vdW5pbWFwcyIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAibWFrZSIKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImNodnQgZGVhbGxvY3Z0IGZnY29uc29sZSBvcGVudnQgc2hvd2tleSIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmRfMi4yLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmRfMi4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU3MDBmZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZF8yLjIuMC5iYgpAQCAtMCwwICsxLDcyIEBACitTVU1NQVJZID0gIktleXRhYmxlIGZpbGVzIGFuZCBrZXlib2FyZCB1dGlsaXRpZXMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmtiZC1wcm9qZWN0Lm9yZy8iCisjIGV2ZXJ5dGhpbmcgbWludXMgY29uc29sZS1mb250cyBpcyBHUEx2MisKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ODkyZjU2OWE1NTViYTljMDdhNTY4YTdjMGM0ZmE2M2EiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHRlc3QgcGtnY29uZmlnCisKK0RFUEVORFMgKz0gImZsZXgtbmF0aXZlIgorCitSUkVQTEFDRVNfJHtQTn0gPSAiY29uc29sZS10b29scyIKK1JQUk9WSURFU18ke1BOfSA9ICJjb25zb2xlLXRvb2xzIgorUkNPTkZMSUNUU18ke1BOfSA9ICJjb25zb2xlLXRvb2xzIgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMvJHtCUE59LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJ2ZpbGU6Ly9zZXQtcHJvcGVyLXBhdGgtb2YtcmVzb3VyY2VzLnBhdGNoJywgJycsIGQpfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFuYWx5emUubC1hZGQtbWlzc2luZy1zdHJpbmctZm9ybWF0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLURBVEFESVItYW5kLWFwcGVuZC1pMzg2LXRvLWZpeC1saWJrYmRmaWxlLXRlc3QwOC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfY2ZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDFkN2FlMGI1ZmI4NzVkYzA4MjczMWUwOWNkMGM4YmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjFhMWJjNWY2ZmIzYjE4Y2U5ZmRkNzE3ZTQ1MzMzNjgwNjBhMzE4MmEzOWM3MTU1ZWFmN2VjMGY1ZjgzZTlmNyIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAndGVzdHMnLCcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIgorCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS1lbmFibGUtdmxvY2ssIC0tZGlzYWJsZS12bG9jaywgbGlicGFtLCIKK1BBQ0tBR0VDT05GSUdbdGVzdHNdID0gIi0tZW5hYmxlLXRlc3RzLCAtLWRpc2FibGUtdGVzdHMsIGxpYmNoZWNrIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgIG9lX3J1bm1ha2UgLUMgJHtCfS90ZXN0cyBhbHQtaXMtbWV0YSBkdW1wa2V5cy1ia2V5bWFwIGR1bXBrZXlzLWZ1bGx0YWJsZSBkdW1wa2V5cy1ta3RhYmxlCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisgICAgaW5zdGFsbCAtRCAke0J9L3Rlc3RzL01ha2VmaWxlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlCisgICAgc2VkIC1pIC1lICcvTWFrZWZpbGU6LywvXiQvZCcgLWUgJy8lOiAlLmluLywvXiQvZCcgXAorCS1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIFwKKwktZSAnczoke0RFQlVHX1BSRUZJWF9NQVB9OjpnJyBcCisJLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwktZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwktZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorCS1lICdzOiR7U30vY29uZmlnL21pc3Npbmc6OmcnIFwKKwktZSAnczoke1dPUktESVJ9OjpnJyBcCisJLWUgJy9ebGliLipfU09VUkNFUyA9L2QnIC1lICcvJChFWEVFWFQpOi8sL14kL2QnICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlCisKKyAgICBmaW5kICR7Qn0vdGVzdHMgLWV4ZWN1dGFibGUgLWV4ZWMgaW5zdGFsbCB7fSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cyBcOworICAgIGNwIC1yZiAke1N9L3Rlc3RzL2RhdGEgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBjcCAtcmYgJHtTfS90ZXN0cy9maW5kZmlsZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgIGNwIC1yZiAke1N9L2RhdGEgJHtEfSR7UFRFU1RfUEFUSH0KKworICAgIGluc3RhbGwgLUQgLW0gNzU1ICR7U30vY29uZmlnL3Rlc3QtZHJpdmVyICR7RH0ke1BURVNUX1BBVEh9L2NvbmZpZy90ZXN0LWRyaXZlcgorfQorCitQQUNLQUdFUyArPSAiJHtQTn0tY29uc29sZWZvbnRzICR7UE59LWtleW1hcHMgJHtQTn0tdW5pbWFwcyAke1BOfS1jb25zb2xldHJhbnMiCisKK0ZJTEVTXyR7UE59LWNvbnNvbGVmb250cyA9ICIke2RhdGFkaXJ9L2NvbnNvbGVmb250cyIKK0ZJTEVTXyR7UE59LWNvbnNvbGV0cmFucyA9ICIke2RhdGFkaXJ9L2NvbnNvbGV0cmFucyIKK0ZJTEVTXyR7UE59LWtleW1hcHMgPSAiJHtkYXRhZGlyfS9rZXltYXBzIgorRklMRVNfJHtQTn0tdW5pbWFwcyA9ICIke2RhdGFkaXJ9L3VuaW1hcHMiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gIm1ha2UiCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV8ke1BOfSA9ICJjaHZ0IGRlYWxsb2N2dCBmZ2NvbnNvbGUgb3BlbnZ0IHNob3drZXkgXAorICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAndmxvY2snLCcnLCBkKX0iCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0LWNvbXBhdF80LjQuMTUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHQtY29tcGF0XzQuNC4xNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTc0ZWIxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0LWNvbXBhdF80LjQuMTUuYmIKQEAgLTAsMCArMSwxOCBAQAorIworIyBUaGlzIHByb3ZpZGVzIGxpYmNyeXB0by5zby4xIHdoaWNoIGNvbnRhaW5zIG9ic29sZXRlIEFQSXMsIG5lZWRlZCBmb3IgdW5pbmF0aXZlIGluIHBhcnRpY3VsYXIKKyMKKworcmVxdWlyZSBsaWJ4Y3J5cHQuaW5jCisKK1BST1ZJREVTID0gIiIKK0FVVE9fTElCTkFNRV9QS0dTID0gIiIKK0VYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgorCitBUEkgPSAiLS1lbmFibGUtb2Jzb2xldGUtYXBpIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJcm0gLXJmICR7RH0ke2luY2x1ZGVkaXJ9CisJcm0gLXJmICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCisJcm0gLXJmICR7RH0ke2RhdGFkaXJ9Cit9CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdC1jb21wYXRfNC40LjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHQtY29tcGF0XzQuNC44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmM0NjQ4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdC1jb21wYXRfNC40LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0jCi0jIFRoaXMgcHJvdmlkZXMgbGliY3J5cHRvLnNvLjEgd2hpY2ggY29udGFpbnMgb2Jzb2xldGUgQVBJcywgbmVlZGVkIGZvciB1bmluYXRpdmUgaW4gcGFydGljdWxhcgotIwotCi1yZXF1aXJlIGxpYnhjcnlwdF8ke1BWfS5iYgotCi1QUk9WSURFUyA9ICIiCi1BVVRPX0xJQk5BTUVfUEtHUyA9ICIiCi1FWENMVURFX0ZST01fV09STEQgPSAiMSIKLQotQVBJID0gIi0tZW5hYmxlLW9ic29sZXRlLWFwaSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCXJtIC1yZiAke0R9JHtpbmNsdWRlZGlyfQotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZwotCXJtIC1yZiAke0R9JHtkYXRhZGlyfQotfQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWUxMzY3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0LmluYwpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIkV4dGVuZGVkIGNyeXB0b2dyYXBoaWMgbGlicmFyeSAoZnJvbSBnbGliYykiCitERVNDUklQVElPTiA9ICJGb3JrZWQgY29kZSBmcm9tIGdsaWJjIGxpYmFyeSB0byBleHRyYWN0IG9ubHkgY3J5cHRvIHBhcnQuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Jlc3NlcjgyL2xpYnhjcnlwdCIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID89ICJmaWxlOi8vTElDRU5TSU5HO21kNT0zYmI2NjE0Y2Y1ODgwY2JmMWI5ZGJkOWUzZDE0NWUyYyBcCisgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9iZXNzZXI4Mi9saWJ4Y3J5cHQuZ2l0O2JyYW5jaD0ke1NSQ0JSQU5DSH0iCitTUkNSRVYgPSAiODIzNDM3ZDAxNWNkNGFiNGQxMDBlZDIwNWYyMTg2ODFiMDNhZTQ1YyIKK1NSQ0JSQU5DSCA/PSAiZGV2ZWxvcCIKKworUFJPVklERVMgPSAidmlydHVhbC9jcnlwdCIKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYmNyeXB0Ki5zby4qIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJjcnlwdC0qLnNvIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJvd2NyeXB0Ki5zby4qIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJvd2NyeXB0LSouc28gXAorIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitCVUlMRF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSIKK1RBUkdFVF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7aW5jbHVkZWRpcn0gLVduby1lcnJvciIKK0NQUEZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1Xbm8tZXJyb3IiCisKK0NGTEFHUyArPSAiLWZjb21tb24iCisKK0FQSSA9ICItLWRpc2FibGUtb2Jzb2xldGUtYXBpIgorRVhUUkFfT0VDT05GICs9ICIke0FQSX0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdF80LjQuMTUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC40LjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZGJhMmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC40LjE1LmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBsaWJ4Y3J5cHQuaW5jCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdF80LjQuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdF80LjQuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc4N2Y2OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC40LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIkV4dGVuZGVkIGNyeXB0b2dyYXBoaWMgbGlicmFyeSAoZnJvbSBnbGliYykiCi1ERVNDUklQVElPTiA9ICJGb3JrZWQgY29kZSBmcm9tIGdsaWJjIGxpYmFyeSB0byBleHRyYWN0IG9ubHkgY3J5cHRvIHBhcnQuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Jlc3NlcjgyL2xpYnhjcnlwdCIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID89ICJmaWxlOi8vTElDRU5TSU5HO21kNT0zYmI2NjE0Y2Y1ODgwY2JmMWI5ZGJkOWUzZDE0NWUyYyBcCi0gICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9iZXNzZXI4Mi9saWJ4Y3J5cHQuZ2l0O2JyYW5jaD0ke1NSQ0JSQU5DSH0iCi1TUkNSRVYgPSAiYWNkODQ5OTdhNWE4YjJiYWRkMjhiNzBhNjQyYWJlZTExMjcyZmFkMiIKLVNSQ0JSQU5DSCA/PSAiZGV2ZWxvcCIKLQotUFJPVklERVMgPSAidmlydHVhbC9jcnlwdCIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYmNyeXB0Ki5zby4qIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJjcnlwdC0qLnNvIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJvd2NyeXB0Ki5zby4qIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJvd2NyeXB0LSouc28gXAotIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1CVUlMRF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSIKLVRBUkdFVF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7aW5jbHVkZWRpcn0gLVduby1lcnJvciIKLUNQUEZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1Xbm8tZXJyb3IiCi0KLUFQSSA9ICItLWRpc2FibGUtb2Jzb2xldGUtYXBpIgotRVhUUkFfT0VDT05GICs9ICIke0FQSX0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi8wMDAxLU1ha2UtcHRlc3QtcnVuLXRoZS1weXRob24tdGVzdHMtaWYtcHl0aG9uLWlzLWVuYWJsZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyLzAwMDEtTWFrZS1wdGVzdC1ydW4tdGhlLXB5dGhvbi10ZXN0cy1pZi1weXRob24taXMtZW5hYmxlZC5wYXRjaAppbmRleCAyYjkyZGJjLi41ZTlhMGE1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyLzAwMDEtTWFrZS1wdGVzdC1ydW4tdGhlLXB5dGhvbi10ZXN0cy1pZi1weXRob24taXMtZW5hYmxlZC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyLzAwMDEtTWFrZS1wdGVzdC1ydW4tdGhlLXB5dGhvbi10ZXN0cy1pZi1weXRob24taXMtZW5hYmxlZC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNzhkYmQ0YzA5ZDYxN2E5Y2I3MzBkNzk2Zjk0ZWU0ZDkzODQwZDNjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMmI1ZmI0MTZhYTI3NWZkMmExN2EwMTM5YTJmNzgzOTk4YmNiNDJjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFBldGVyIEtqZWxsZXJzdGVkdCA8cGtqQGF4aXMuY29tPgogRGF0ZTogRnJpLCA5IEp1biAyMDE3IDE3OjUwOjQ2ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIE1ha2UgcHRlc3QgcnVuIHRoZSBweXRob24gdGVzdHMgaWYgcHl0aG9uIGlzIGVuYWJsZWQKQEAgLTgsMTggKzgsMTkgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IFBldGVyIEtqZWxsZXJzdGVkdCA8cGV0ZXIua2plbGxlcnN0ZWR0QGF4aXMuY29tPgorCiAtLS0KICBNYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgIHwgIDIgKy0KICBweXRob24vTWFrZWZpbGUuYW0gICAgICAgICAgIHwgIDkgKysrKysrKysrCi0gcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtICAgICB8IDEyICsrKysrKysrKystLQorIHB5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbSAgICAgfCAxMCArKysrKysrKysrCiAgcHl0aG9uL3Rlc3RzL3RzdExhc3RFcnJvci5weSB8ICAyICstCi0gNCBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorIDQgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotSW5kZXg6IGxpYnhtbDItMi45LjcvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJ4bWwyLTIuOS43Lm9yaWcvTWFrZWZpbGUuYW0KLSsrKyBsaWJ4bWwyLTIuOS43L01ha2VmaWxlLmFtCi1AQCAtMjA3LDkgKzIwNyw5IEBAIGluc3RhbGwtcHRlc3Q6CitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggYWU2MjI3NC4uYmQxZTQyNSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTIwMyw5ICsyMDMsOSBAQCBpbnN0YWxsLXB0ZXN0OgogIAlpbnN0YWxsICQoY2hlY2tfUFJPR1JBTVMpICQoREVTVERJUikpCiAgCWNwIC1yICQoc3JjZGlyKS90ZXN0ICQoREVTVERJUikKICAJY3AgLXIgJChzcmNkaXIpL3Jlc3VsdCAkKERFU1RESVIpCkBAIC0zMCwxMSArMzEsMTEgQEAKICAKICBydW50ZXN0czogcnVudGVzdCQoRVhFRVhUKSB0ZXN0cmVjdXJzZSQoRVhFRVhUKSB0ZXN0YXBpJChFWEVFWFQpIFwKICAgICAgICAgICAgdGVzdGNoYXIkKEVYRUVYVCkgdGVzdGRpY3QkKEVYRUVYVCkgcnVueG1sY29uZiQoRVhFRVhUKQotSW5kZXg6IGxpYnhtbDItMi45LjcvcHl0aG9uL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlieG1sMi0yLjkuNy5vcmlnL3B5dGhvbi9NYWtlZmlsZS5hbQotKysrIGxpYnhtbDItMi45LjcvcHl0aG9uL01ha2VmaWxlLmFtCi1AQCAtNDgsNyArNDgsMTYgQEAgR0VORVJBVEVEID0gbGlieG1sMmNsYXNzLnB5IGxpYnhtbDJjbGFzcworZGlmZiAtLWdpdCBhL3B5dGhvbi9NYWtlZmlsZS5hbSBiL3B5dGhvbi9NYWtlZmlsZS5hbQoraW5kZXggMzRhZWQ5Ni4uYmEzZWM2YSAxMDA2NDQKKy0tLSBhL3B5dGhvbi9NYWtlZmlsZS5hbQorKysrIGIvcHl0aG9uL01ha2VmaWxlLmFtCitAQCAtNDgsNyArNDgsMTYgQEAgR0VORVJBVEVEID0gbGlieG1sMmNsYXNzLnB5IGxpYnhtbDJjbGFzcy50eHQgJChCVUlMVF9TT1VSQ0VTKQogIAogICQoR0VORVJBVEVEKTogJChzcmNkaXIpL2dlbmVyYXRvci5weSAkKEFQSV9ERVNDKQogIAkkKFBZVEhPTikgJChzcmNkaXIpL2dlbmVyYXRvci5weSAkKHNyY2RpcikKQEAgLTUxLDEwICs1MiwxMCBAQAogKy5QSE9OWTogdGVzdHMgdGVzdAogIHRlc3RzIHRlc3Q6IGFsbAogIAljZCB0ZXN0cyAmJiAkKE1BS0UpIHRlc3RzCi1JbmRleDogbGlieG1sMi0yLjkuNy9weXRob24vdGVzdHMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJ4bWwyLTIuOS43Lm9yaWcvcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgbGlieG1sMi0yLjkuNy9weXRob24vdGVzdHMvTWFrZWZpbGUuYW0KK2RpZmYgLS1naXQgYS9weXRob24vdGVzdHMvTWFrZWZpbGUuYW0gYi9weXRob24vdGVzdHMvTWFrZWZpbGUuYW0KK2luZGV4IDIyN2UyNGQuLjAyMWJiMjkgMTAwNjQ0CistLS0gYS9weXRob24vdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL3B5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbQogQEAgLTU5LDYgKzU5LDExIEBAIFhNTFM9CQlcCiAgQ0xFQU5GSUxFUyA9IGNvcmUgdG1wLnhtbCAqLnB5YwogIApAQCAtNjcsMjQgKzY4LDI1IEBACiAgdGVzdHM6ICQoUFlURVNUUykKICAJQGZvciBmIGluICQoWE1MUykgOyBkbyB0ZXN0IC1mICQkZiB8fCAkKExOX1MpICQoc3JjZGlyKS8kJGYgLiA7IGRvbmUKICAJQGVjaG8gIiMjIHJ1bm5pbmcgUHl0aG9uIHJlZ3Jlc3Npb24gdGVzdHMiCi1AQCAtNjgsOCArNzMsMTEgQEAgdGVzdHM6ICQoUFlURVNUUykKLSAJICAgZXhwb3J0IExEX0xJQlJBUllfUEFUSDsgXAotIAkgICBmb3IgdGVzdCBpbiAkKFBZVEVTVFMpIDsgXAotIAkgICBkbyBsb2c9YCQoUFlUSE9OKSAkKHNyY2RpcikvJCR0ZXN0YCA7IFwKLS0JICAgaWYgWyAiYGVjaG8gJCRsb2cgfCBncmVwIE9LYCIgPSAiIiBdIDsgdGhlbiBcCi0tCSAgIGVjaG8gIi0tICQkdGVzdCIgOyBlY2hvICIkJGxvZyIgOyBmaSA7IGRvbmUpCi0rCSAgIGlmIFsgImBlY2hvICQkbG9nIHwgZ3JlcCBPS2AiIF07IHRoZW4gXAotKwkgICBlY2hvICJQQVNTOiAkJHRlc3QiOyBlbHNlIFwKLSsJICAgZWNobyAiJCRsb2ciOyBlY2hvICJGQUlMOiAkJHRlc3QiOyBmaTsgZG9uZSkKK0BAIC03MCw5ICs3NSwxNCBAQCB0ZXN0czogJChQWVRFU1RTKQorIAkgICAgaWYgWyAiJCQ/IiAtbmUgMCBdIDsgdGhlbiBcCisgCSAgICAgIGVjaG8gIi0tICQkdGVzdCIgOyBcCisgCSAgICAgIGVjaG8gIiQkbG9nIiA7IFwKKysgICAgICAgICAgICAgIGVjaG8gIkZBSUw6ICQkdGVzdCI7IFwKKyAJICAgICAgZXhpdCAxIDsgXAorKyAgICAgICAgICAgIGVsc2UgXAorKyAgICAgICAgICAgICAgZWNobyAiUEFTUzogJCR0ZXN0IjsgXAorIAkgICAgZmkgOyBcCisgCSAgZG9uZSkKICBlbHNlCiAraW5zdGFsbC1wdGVzdDoKICsKICB0ZXN0czoKICBlbmRpZgotSW5kZXg6IGxpYnhtbDItMi45LjcvcHl0aG9uL3Rlc3RzL3RzdExhc3RFcnJvci5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYnhtbDItMi45Ljcub3JpZy9weXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5Ci0rKysgbGlieG1sMi0yLjkuNy9weXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5CitkaWZmIC0tZ2l0IGEvcHl0aG9uL3Rlc3RzL3RzdExhc3RFcnJvci5weSBiL3B5dGhvbi90ZXN0cy90c3RMYXN0RXJyb3IucHkKK2luZGV4IDgxZDBhY2MuLjE2MmM4ZGIgMTAwNzU1CistLS0gYS9weXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5CisrKysgYi9weXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5CiBAQCAtMjUsNyArMjUsNyBAQCBjbGFzcyBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICB3aGVuIHRoZSBleGNlcHRpb24gaXMgcmFpc2VkLCBjaGVjayB0aGUgbGlieG1sMi5sYXN0RXJyb3IgZm9yCiAgICAgICAgICBleHBlY3RlZCB2YWx1ZXMuIiIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL0NWRS0yMDE5LTIwMzg4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9DVkUtMjAxOS0yMDM4OC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGViNjVhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9DVkUtMjAxOS0yMDM4OC5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDdmZmNkNDRkN2U2YzQ2NzA0ZjhhZjAzMjFkOTMxNGNkMjZlMGUxOGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBaaGlwZW5nIFhpZSA8eGllemhpcGVuZzFAaHVhd2VpLmNvbT4KK0RhdGU6IFR1ZSwgMjAgQXVnIDIwMTkgMTY6MzM6MDYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IG1lbW9yeSBsZWFrIGluIHhtbFNjaGVtYVZhbGlkYXRlU3RyZWFtCisKK1doZW4gY3R4dC0+c2NoZW1hIGlzIE5VTEwsIHhtbFNjaGVtYVNBWFBsdWctPnhtbFNjaGVtYVByZVJ1bgorYWxsb2MgYSBuZXcgc2NoZW1hIGZvciBjdHh0LT5zY2hlbWEgYW5kIHNldCB2Y3R4dC0+eHNpQXNzZW1ibGUKK3RvIDEuIFRoZW4geG1sU2NoZW1hVlN0YXJ0LT54bWxTY2hlbWFQcmVSdW4gaW5pdGlhbGl6ZQordmN0eHQtPnhzaUFzc2VtYmxlIHRvIDAgYWdhaW4gd2hpY2ggY2F1c2UgdGhlIGFsbG9jZWQgc2NoZW1hCitjYW4gbm90IGJlIGZyZWVkIGFueW1vcmUuCisKK0ZvdW5kIHdpdGggbGliRnV6emVyLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlieG1sMi9jb21taXQvN2ZmY2Q0NGQ3ZTZjNDY3MDRmOGFmMDMyMWQ5MzE0Y2QyNmUwZTE4YV0KK0NWRTogQ1ZFLTIwMTktMjAzODgKKworU2lnbmVkLW9mZi1ieTogWmhpcGVuZyBYaWUgPHhpZXpoaXBlbmcxQGh1YXdlaS5jb20+CitTaWduZWQtb2ZmLWJ5OiBMZWUgQ2hlZSBZYW5nIDxjaGVlLnlhbmcubGVlQGludGVsLmNvbT4KKy0tLQorIHhtbHNjaGVtYXMuYyB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS94bWxzY2hlbWFzLmMgYi94bWxzY2hlbWFzLmMKK2luZGV4IDMwMWM4NDQ5Li4zOWQ5MjE4MiAxMDA2NDQKKy0tLSBhL3htbHNjaGVtYXMuYworKysrIGIveG1sc2NoZW1hcy5jCitAQCAtMjgwOTAsNyArMjgwOTAsNiBAQCB4bWxTY2hlbWFQcmVSdW4oeG1sU2NoZW1hVmFsaWRDdHh0UHRyIHZjdHh0KSB7CisgICAgIHZjdHh0LT5uYmVycm9ycyA9IDA7CisgICAgIHZjdHh0LT5kZXB0aCA9IC0xOworICAgICB2Y3R4dC0+c2tpcERlcHRoID0gLTE7CistICAgIHZjdHh0LT54c2lBc3NlbWJsZSA9IDA7CisgICAgIHZjdHh0LT5oYXNLZXlyZWZzID0gMDsKKyAjaWZkZWYgRU5BQkxFX0lEQ19OT0RFX1RBQkxFU19URVNUCisgICAgIHZjdHh0LT5jcmVhdGVJRENOb2RlVGFibGVzID0gMTsKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvQ1ZFLTIwMjAtNzU5NS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvQ1ZFLTIwMjAtNzU5NS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWNmZWZkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9DVkUtMjAyMC03NTk1LnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gMGUxYTQ5Yzg5MDc2NDVkMmUxNTVmMGQ4OWQ0ZDk4OTVhYzUxMTJiNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFpoaXBlbmcgWGllIDx4aWV6aGlwZW5nMUBodWF3ZWkuY29tPgorRGF0ZTogVGh1LCAxMiBEZWMgMjAxOSAxNzozMDo1NSArMDgwMAorU3ViamVjdDogW1BBVENIXSBGaXggaW5maW5pdGUgbG9vcCBpbiB4bWxTdHJpbmdMZW5EZWNvZGVFbnRpdGllcworCitXaGVuIGN0eHQtPmluc3RhdGUgPT0gWE1MX1BBUlNFUl9FT0YseG1sUGFyc2VTdHJpbmdFbnRpdHlSZWYKK3JldHVybiBOVUxMIHdoaWNoIGNhdXNlIGEgaW5maW5pdGUgbG9vcCBpbiB4bWxTdHJpbmdMZW5EZWNvZGVFbnRpdGllcworCitGb3VuZCB3aXRoIGxpYkZ1enplci4KKworU2lnbmVkLW9mZi1ieTogWmhpcGVuZyBYaWUgPHhpZXpoaXBlbmcxQGh1YXdlaS5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9saWJ4bWwyL2NvbW1pdC8wZTFhNDljODkwNzZdCitDVkU6IENWRS0yMDIwLTc1OTUKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IAorLS0tCisgcGFyc2VyLmMgfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3BhcnNlci5jIGIvcGFyc2VyLmMKK2luZGV4IGQxYzMxOTYzLi5hMzRiYjZjZCAxMDA2NDQKKy0tLSBhL3BhcnNlci5jCisrKysgYi9wYXJzZXIuYworQEAgLTI2NDYsNyArMjY0Niw4IEBAIHhtbFN0cmluZ0xlbkRlY29kZUVudGl0aWVzKHhtbFBhcnNlckN0eHRQdHIgY3R4dCwgY29uc3QgeG1sQ2hhciAqc3RyLCBpbnQgbGVuLAorICAgICBlbHNlCisgICAgICAgICBjID0gMDsKKyAgICAgd2hpbGUgKChjICE9IDApICYmIChjICE9IGVuZCkgJiYgLyogbm9uIGlucHV0IGNvbnN1bWluZyBsb29wICovCistCSAgIChjICE9IGVuZDIpICYmIChjICE9IGVuZDMpKSB7CisrICAgICAgICAgICAoYyAhPSBlbmQyKSAmJiAoYyAhPSBlbmQzKSAmJgorKyAgICAgICAgICAgKGN0eHQtPmluc3RhdGUgIT0gWE1MX1BBUlNFUl9FT0YpKSB7CisgCisgCWlmIChjID09IDApIGJyZWFrOworICAgICAgICAgaWYgKChjID09ICcmJykgJiYgKHN0clsxXSA9PSAnIycpKSB7CistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyXzIuOS4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5N2FjZWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyXzIuOS4xMC5iYgpAQCAtMCwwICsxLDExMiBAQAorU1VNTUFSWSA9ICJYTUwgQyBQYXJzZXIgTGlicmFyeSBhbmQgVG9vbGtpdCIKK0RFU0NSSVBUSU9OID0gIlRoZSBYTUwgUGFyc2VyIExpYnJhcnkgYWxsb3dzIGZvciBtYW5pcHVsYXRpb24gb2YgWE1MIGZpbGVzLiAgTGlieG1sMiBleHBvcnRzIFB1c2ggYW5kIFB1bGwgdHlwZSBwYXJzZXIgaW50ZXJmYWNlcyBmb3IgYm90aCBYTUwgYW5kIEhUTUwuICBJdCBjYW4gZG8gRFREIHZhbGlkYXRpb24gYXQgcGFyc2UgdGltZSwgb24gYSBwYXJzZWQgZG9jdW1lbnQgaW5zdGFuY2Ugb3Igd2l0aCBhbiBhcmJpdHJhcnkgRFRELiAgTGlieG1sMiBpbmNsdWRlcyBjb21wbGV0ZSBYUGF0aCwgWFBvaW50ZXIgYW5kIFhpbmNsdWRlIGltcGxlbWVudGF0aW9ucy4gIEl0IGFsc28gaGFzIGEgU0FYIGxpa2UgaW50ZXJmYWNlLCB3aGljaCBpcyBkZXNpZ25lZCB0byBiZSBjb21wYXRpYmxlIHdpdGggRXhwYXQuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy54bWxzb2Z0Lm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvYnVnbGlzdC5jZ2k/cHJvZHVjdD1saWJ4bWwyIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Db3B5cmlnaHQ7bWQ1PTIwNDQ0MTdlMmU1MDA2YjY1YThiOTA2N2I2ODNmY2YxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2hhc2guYztiZWdpbmxpbmU9NjtlbmRsaW5lPTE1O21kNT05NmY3Mjk2NjA1ZWFlODA3NjcwZmIwODk0NzgyOTk2OSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saXN0LmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xMzttZDU9Y2RiZmEzZGVlNTFjMDk5ZWRiMDRlMzlmNzYyZWU5MDcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdHJpby5jO2JlZ2lubGluZT01O2VuZGxpbmU9MTQ7bWQ1PTZjMDI1NzUzYzg2ZDk1ODcyMmVjNzZlOTRjYWU5MzJlIgorCitERVBFTkRTID0gInpsaWIgdmlydHVhbC9saWJpY29udiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LnhtbHNvZnQub3JnL3NvdXJjZXMvbGlieG1sMi0ke1BWfS50YXIuZ3o7bmFtZT1saWJ0YXIgXAorICAgICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9YTUwvVGVzdC94bWx0czIwMDgwODI3LnRhci5nejtzdWJkaXI9JHtCUH07bmFtZT10ZXN0dGFyIFwKKyAgICAgICAgICAgZmlsZTovL2xpYnhtbC02NGJpdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW50ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9weXRob24tc2l0ZXBhY2thZ2VzLWRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saWJ4bWwtbTQtdXNlLXBrZ2NvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtcHRlc3QtcnVuLXRoZS1weXRob24tdGVzdHMtaWYtcHl0aG9uLWlzLWVuYWJsZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LWV4ZWN1dGlvbi1vZi1wdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMjAtNzU5NS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOS0yMDM4OC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVtsaWJ0YXIubWQ1c3VtXSA9ICIxMDk0MmExZGMyMzEzN2E4YWEwN2YwNjM5Y2JmZWNlNSIKK1NSQ19VUklbbGlidGFyLnNoYTI1NnN1bV0gPSAiYWFmZWUxOTNmZmI4ZmUwYzgyZDRhZmVmNmVmOTE5NzJjYmFmNWZlZWExMDBlZGMyZjI2Mjc1MDYxMWI0YmUxZiIKK1NSQ19VUklbdGVzdHRhci5tZDVzdW1dID0gImFlM2QxZWJlMDAwYTM5NzJhZmExMDRjYTdmMGUxYjRhIgorU1JDX1VSSVt0ZXN0dGFyLnNoYTI1NnN1bV0gPSAiOTYxNTE2ODVjZWM5OTdlMWY5ZjMzODdlMzYyNmQ2MWU2Mjg0ZDRkNmU2NmUwZTQ0MGMyMDkyODZjMDNlOWNjNyIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS94bWwyLWNvbmZpZyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbiBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS13aXRoLXB5dGhvbj0ke1BZVEhPTn0sLS13aXRob3V0LXB5dGhvbixweXRob24zIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBwdGVzdCBmZWF0dXJlc19jaGVjaworCitpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24zbmF0aXZlJywgJycsIGQpfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAnbGliZ2NjIHB5dGhvbjMtY29yZSBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1zaGVsbCAgcHl0aG9uMy1zdHJpbmdvbGQgcHl0aG9uMy10aHJlYWRpbmcgcHl0aG9uMy11bml0dGVzdCAke1BOfS1weXRob24nLCAnJywgZCl9IgorCitSREVQRU5EU18ke1BOfS1weXRob24gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24zLWNvcmUnLCAnJywgZCl9IgorCitSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtZ2NvbnYtZWJjZGljLXVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbGliYy1nY29udi1pYm0xMTQxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbGliYy1nY29udi1pc284ODU5LTUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsaWJjLWdjb252LWV1Yy1qcCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlLWJhc2UtZW4tdXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK2V4cG9ydCBQWVRIT05fU0lURV9QQUNLQUdFUz0iJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKKyMgV0FSTklORzogemxpYiBpcyByZXF1aXJlZCBmb3IgUlBNIHVzZQorRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1kZWJ1ZyAtLXdpdGhvdXQtbGVnYWN5IC0td2l0aC1jYXRhbG9nIC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC1mZXhjZXB0aW9ucyIKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LWxlZ2FjeSAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS13aXRob3V0LWxlZ2FjeSAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKK0VYVFJBX09FQ09ORl9saW51eHN0ZGJhc2UgPSAiLS13aXRoLWRlYnVnIC0td2l0aC1sZWdhY3kgLS13aXRoLWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLXpsaWIiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICAjIGF1dG9uYW1lciB3b3VsZCBjYWxsIHRoaXMgbGlieG1sMi0yLCBidXQgd2UgZG9uJ3Qgd2FudCB0aGF0CisgICAgaWYgZC5nZXRWYXIoJ0RFQklBTl9OQU1FUycpOgorICAgICAgICBkLnNldFZhcignUEtHX2xpYnhtbDInLCAnJHtNTFBSRUZJWH1saWJ4bWwyJykKK30KKworUEFDS0FHRV9CRUZPUkVfUE4gKz0gIiR7UE59LXV0aWxzIgorUEFDS0FHRVMgKz0gIiR7UE59LXB5dGhvbiIKKworRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmEiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS94bWwyQ29uZi5zaCAke2xpYmRpcn0vY21ha2UvKiIKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS8qIgorRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJIyBleGVjdXRhYmxlcyB0YWtlIGxvbmdlciB0byBwYWNrYWdlOiB0aGVzZSBzaG91bGQgbm90IGJlIGV4ZWN1dGFibGUKKwlmaW5kICR7U30veG1sY29uZi8gLXR5cGUgZiAtZXhlYyBjaG1vZCAteCB7fSBcKworfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgY2hlY2stYW0KK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisJY3AgLXIgJHtTfS94bWxjb25mICR7RH0ke1BURVNUX1BBVEh9CisJaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsIGQpfSIgXTsgdGhlbgorCQlzZWQgLWkgLWUgJ3N8XlwoUFlUSE9OID0gXCkuKnxcMSR7VVNSQklOUEFUSH0vJHtQWVRIT05fUE59fCcgXAorCQkgICAgJHtEfSR7UFRFU1RfUEFUSH0vcHl0aG9uL3Rlc3RzL01ha2VmaWxlCisJCWdyZXAgLWxyWiAnIyEvdXNyL2Jpbi9weXRob24nICR7RH0ke1BURVNUX1BBVEh9L3B5dGhvbiB8CisJCQl4YXJncyAtMCBzZWQgLWkgLWUgJ3N8L3Vzci9iaW4vcHl0aG9ufCR7VVNSQklOUEFUSH0vJHtQWVRIT05fUE59fCcKKwlmaQorCSNSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzIGZyb20gdmFyaW91cyBNYWtlZmlsZXMKKwlmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCisJICAgIHNlZCAtaSBcCisJICAgIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKwkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKwkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJICAgIC1lICcvXlJFTERBVEUvZCcgXAorCSAgICB7fSArCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisJIyBEb2NzIGFyZSBub3QgbmVlZGVkIGluIHRoZSBuYXRpdmUgY2FzZQorCXJtICR7RH0ke2RhdGFkaXJ9L2d0ay1kb2MgLXJmCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyXzIuOS45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTdlMDk4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotU1VNTUFSWSA9ICJYTUwgQyBQYXJzZXIgTGlicmFyeSBhbmQgVG9vbGtpdCIKLURFU0NSSVBUSU9OID0gIlRoZSBYTUwgUGFyc2VyIExpYnJhcnkgYWxsb3dzIGZvciBtYW5pcHVsYXRpb24gb2YgWE1MIGZpbGVzLiAgTGlieG1sMiBleHBvcnRzIFB1c2ggYW5kIFB1bGwgdHlwZSBwYXJzZXIgaW50ZXJmYWNlcyBmb3IgYm90aCBYTUwgYW5kIEhUTUwuICBJdCBjYW4gZG8gRFREIHZhbGlkYXRpb24gYXQgcGFyc2UgdGltZSwgb24gYSBwYXJzZWQgZG9jdW1lbnQgaW5zdGFuY2Ugb3Igd2l0aCBhbiBhcmJpdHJhcnkgRFRELiAgTGlieG1sMiBpbmNsdWRlcyBjb21wbGV0ZSBYUGF0aCwgWFBvaW50ZXIgYW5kIFhpbmNsdWRlIGltcGxlbWVudGF0aW9ucy4gIEl0IGFsc28gaGFzIGEgU0FYIGxpa2UgaW50ZXJmYWNlLCB3aGljaCBpcyBkZXNpZ25lZCB0byBiZSBjb21wYXRpYmxlIHdpdGggRXhwYXQuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy54bWxzb2Z0Lm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvYnVnbGlzdC5jZ2k/cHJvZHVjdD1saWJ4bWwyIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Db3B5cmlnaHQ7bWQ1PTIwNDQ0MTdlMmU1MDA2YjY1YThiOTA2N2I2ODNmY2YxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2hhc2guYztiZWdpbmxpbmU9NjtlbmRsaW5lPTE1O21kNT05NmY3Mjk2NjA1ZWFlODA3NjcwZmIwODk0NzgyOTk2OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saXN0LmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xMzttZDU9Y2RiZmEzZGVlNTFjMDk5ZWRiMDRlMzlmNzYyZWU5MDcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdHJpby5jO2JlZ2lubGluZT01O2VuZGxpbmU9MTQ7bWQ1PTZjMDI1NzUzYzg2ZDk1ODcyMmVjNzZlOTRjYWU5MzJlIgotCi1ERVBFTkRTID0gInpsaWIgdmlydHVhbC9saWJpY29udiIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnhtbHNvZnQub3JnL3NvdXJjZXMvbGlieG1sMi0ke1BWfS50YXIuZ3o7bmFtZT1saWJ0YXIgXAotICAgICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9YTUwvVGVzdC94bWx0czIwMDgwODI3LnRhci5nejtzdWJkaXI9JHtCUH07bmFtZT10ZXN0dGFyIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnhtbC02NGJpdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW50ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9weXRob24tc2l0ZXBhY2thZ2VzLWRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ4bWwtbTQtdXNlLXBrZ2NvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtcHRlc3QtcnVuLXRoZS1weXRob24tdGVzdHMtaWYtcHl0aG9uLWlzLWVuYWJsZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWV4ZWN1dGlvbi1vZi1wdGVzdHMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbGlidGFyLm1kNXN1bV0gPSAiYzA0YTVhMGEwNDJlYWExNTdlOGU4YzllYWJlNzZiZDYiCi1TUkNfVVJJW2xpYnRhci5zaGEyNTZzdW1dID0gIjk0ZmI3MDg5MDE0M2UzYzY1NDlmMjY1Y2VlOTNlYzA2NGM4MGE4NGM0MmFkMGYyM2U4NWVlMWZkNjU0MGE4NzEiCi1TUkNfVVJJW3Rlc3R0YXIubWQ1c3VtXSA9ICJhZTNkMWViZTAwMGEzOTcyYWZhMTA0Y2E3ZjBlMWI0YSIKLVNSQ19VUklbdGVzdHRhci5zaGEyNTZzdW1dID0gIjk2MTUxNjg1Y2VjOTk3ZTFmOWYzMzg3ZTM2MjZkNjFlNjI4NGQ0ZDZlNjZlMGU0NDBjMjA5Mjg2YzAzZTljYzciCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0veG1sMi1jb25maWciCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJweXRob24gXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0td2l0aC1weXRob249JHtQWVRIT059LC0td2l0aG91dC1weXRob24scHl0aG9uMyIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWctZGlzYWJsZWQgcHRlc3QgZmVhdHVyZXNfY2hlY2sKLQotaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAncHl0aG9uM25hdGl2ZScsICcnLCBkKX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ2xpYmdjYyBweXRob24zLWNvcmUgcHl0aG9uMy1sb2dnaW5nIHB5dGhvbjMtc2hlbGwgIHB5dGhvbjMtc3RyaW5nb2xkIHB5dGhvbjMtdGhyZWFkaW5nIHB5dGhvbjMtdW5pdHRlc3QgJHtQTn0tcHl0aG9uJywgJycsIGQpfSIKLQotUkRFUEVORFNfJHtQTn0tcHl0aG9uICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAncHl0aG9uMy1jb3JlJywgJycsIGQpfSIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLWdjb252LWViY2RpYy11cyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMtZ2NvbnYtaWJtMTE0MSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMtZ2NvbnYtaXNvODg1OS01IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbGliYy1nY29udi1ldWMtanAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZS1iYXNlLWVuLXVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1leHBvcnQgUFlUSE9OX1NJVEVfUEFDS0FHRVM9IiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotCi0jIFdBUk5JTkc6IHpsaWIgaXMgcmVxdWlyZWQgZm9yIFJQTSB1c2UKLUVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtZGVidWcgLS13aXRob3V0LWxlZ2FjeSAtLXdpdGgtY2F0YWxvZyAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtZmV4Y2VwdGlvbnMiCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC1sZWdhY3kgLS13aXRob3V0LWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLXpsaWIiCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIi0td2l0aG91dC1sZWdhY3kgLS13aXRob3V0LWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLXpsaWIiCi1FWFRSQV9PRUNPTkZfbGludXhzdGRiYXNlID0gIi0td2l0aC1kZWJ1ZyAtLXdpdGgtbGVnYWN5IC0td2l0aC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC16bGliIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgIyBhdXRvbmFtZXIgd291bGQgY2FsbCB0aGlzIGxpYnhtbDItMiwgYnV0IHdlIGRvbid0IHdhbnQgdGhhdAotICAgIGlmIGQuZ2V0VmFyKCdERUJJQU5fTkFNRVMnKToKLSAgICAgICAgZC5zZXRWYXIoJ1BLR19saWJ4bWwyJywgJyR7TUxQUkVGSVh9bGlieG1sMicpCi19Ci0KLVBBQ0tBR0VfQkVGT1JFX1BOICs9ICIke1BOfS11dGlscyIKLVBBQ0tBR0VTICs9ICIke1BOfS1weXRob24iCi0KLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5hIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0veG1sMkNvbmYuc2ggJHtsaWJkaXJ9L2NtYWtlLyoiCi1GSUxFU18ke1BOfS11dGlscyA9ICIke2JpbmRpcn0vKiIKLUZJTEVTXyR7UE59LXB5dGhvbiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgZXhlY3V0YWJsZXMgdGFrZSBsb25nZXIgdG8gcGFja2FnZTogdGhlc2Ugc2hvdWxkIG5vdCBiZSBleGVjdXRhYmxlCi0JZmluZCAke1N9L3htbGNvbmYvIC10eXBlIGYgLWV4ZWMgY2htb2QgLXgge30gXCsKLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIGNoZWNrLWFtCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotCWNwIC1yICR7U30veG1sY29uZiAke0R9JHtQVEVTVF9QQVRIfQotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdweXRob24nLCBkKX0iIF07IHRoZW4KLQkJc2VkIC1pIC1lICdzfF5cKFBZVEhPTiA9IFwpLip8XDEke1VTUkJJTlBBVEh9LyR7UFlUSE9OX1BOfXwnIFwKLQkJICAgICR7RH0ke1BURVNUX1BBVEh9L3B5dGhvbi90ZXN0cy9NYWtlZmlsZQotCQlncmVwIC1sclogJyMhL3Vzci9iaW4vcHl0aG9uJyAke0R9JHtQVEVTVF9QQVRIfS9weXRob24gfAotCQkJeGFyZ3MgLTAgc2VkIC1pIC1lICdzfC91c3IvYmluL3B5dGhvbnwke1VTUkJJTlBBVEh9LyR7UFlUSE9OX1BOfXwnCi0JZmkKLQkjUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcyBmcm9tIHZhcmlvdXMgTWFrZWZpbGVzCi0JZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC1uYW1lIE1ha2VmaWxlIC10eXBlIGYgLWV4ZWMgXAotCSAgICBzZWQgLWkgXAotCSAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCi0JICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKLQkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKLQkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0JICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCi0JICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAotCSAgICAtZSAnL15SRUxEQVRFL2QnIFwKLQkgICAge30gKwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotCSMgRG9jcyBhcmUgbm90IG5lZWRlZCBpbiB0aGUgbmF0aXZlIGNhc2UKLQlybSAke0R9JHtkYXRhZGlyfS9ndGstZG9jIC1yZgotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvYnVpbGR0b29scy1leHRlbmRlZC10YXJiYWxsLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2J1aWxkdG9vbHMtZXh0ZW5kZWQtdGFyYmFsbC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzJkMDEwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2J1aWxkdG9vbHMtZXh0ZW5kZWQtdGFyYmFsbC5iYgpAQCAtMCwwICsxLDM2IEBACityZXF1aXJlIHJlY2lwZXMtY29yZS9tZXRhL2J1aWxkdG9vbHMtdGFyYmFsbC5iYgorCitERVNDUklQVElPTiA9ICJTREsgdHlwZSB0YXJnZXQgZm9yIGJ1aWxkaW5nIGEgc3RhbmRhbG9uZSB0YXJiYWxsIGNvbnRhaW5pbmcgYnVpbGQtZXNzZW50aWFscywgcHl0aG9uMywgY2hycGF0aCwgXAorICAgICAgICAgICAgICAgbWFrZSwgZ2l0IGFuZCB0YXIuIFRoZSB0YXJiYWxsIGNhbiBiZSB1c2VkIHRvIHJ1biBiaXRiYWtlIGJ1aWxkcyBvbiBzeXN0ZW1zIHdoaWNoIGRvbid0IG1lZXQgdGhlIFwKKyAgICAgICAgICAgICAgIHVzdWFsIHZlcnNpb24gcmVxdWlyZW1lbnRzIGFuZCBoYXZlIGFuY2llbnQgY29tcGlsZXJzLiIKK1NVTU1BUlkgPSAiU3RhbmRhbG9uZSB0YXJiYWxsIGZvciBydW5uaW5nIGJ1aWxkcyBvbiBzeXN0ZW1zIHdpdGggaW5hZGVxdWF0ZSBzb2Z0d2FyZSBhbmQgYW5jaWVudCBjb21waWxlcnMiCitMSUNFTlNFID0gIk1JVCIKKworIyBBZGQgbmF0aXZlc2RrIGVxdWl2YWxlbnQgb2YgYnVpbGQtZXNzZW50aWFscworVE9PTENIQUlOX0hPU1RfVEFTSyArPSAiXAorICAgIG5hdGl2ZXNkay1hdXRvbWFrZSBcCisgICAgbmF0aXZlc2RrLWF1dG9jb25mIFwKKyAgICBuYXRpdmVzZGstYmludXRpbHMgXAorICAgIG5hdGl2ZXNkay1iaW51dGlscy1zeW1saW5rcyBcCisgICAgbmF0aXZlc2RrLWNwcCBcCisgICAgbmF0aXZlc2RrLWNwcC1zeW1saW5rcyBcCisgICAgbmF0aXZlc2RrLWdjYyBcCisgICAgbmF0aXZlc2RrLWdjYy1zeW1saW5rcyBcCisgICAgbmF0aXZlc2RrLWcrKyBcCisgICAgbmF0aXZlc2RrLWcrKy1zeW1saW5rcyBcCisgICAgbmF0aXZlc2RrLWdldHRleHQgXAorICAgIG5hdGl2ZXNkay1saWJhdG9taWMgXAorICAgIG5hdGl2ZXNkay1saWJnY2MgXAorICAgIG5hdGl2ZXNkay1saWJnb21wLWRldiBcCisgICAgbmF0aXZlc2RrLWxpYnN0ZGMrKyBcCisgICAgbmF0aXZlc2RrLWxpYnN0ZGMrKy1kZXYgXAorICAgIG5hdGl2ZXNkay1saWJzdGRjKystc3RhdGljZGV2IFwKKyAgICBuYXRpdmVzZGstbGlidG9vbCBcCisgICAgbmF0aXZlc2RrLXBrZ2NvbmZpZyBcCisgICAgbmF0aXZlc2RrLWdsaWJjLXV0aWxzIFwKKyAgICBuYXRpdmVzZGstbGlieGNyeXB0LWRldiBcCisgICAgIgorCitUT09MQ0hBSU5fT1VUUFVUTkFNRSA9ICIke1NES19BUkNIfS1idWlsZHRvb2xzLWV4dGVuZGVkLW5hdGl2ZXNkay1zdGFuZGFsb25lLSR7RElTVFJPX1ZFUlNJT059IgorCitTREtfVElUTEUgPSAiRXh0ZW5kZWQgQnVpbGQgdG9vbHMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvYnVpbGR0b29scy10YXJiYWxsLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2J1aWxkdG9vbHMtdGFyYmFsbC5iYgppbmRleCA5YzVjMmNjLi5jNDk4MDJlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvYnVpbGR0b29scy10YXJiYWxsLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9idWlsZHRvb2xzLXRhcmJhbGwuYmIKQEAgLTI1LDYgKzI1LDggQEAKICAgICBuYXRpdmVzZGstdGV4aW5mbyBcCiAgICAgbmF0aXZlc2RrLWxpYm5zcy1uaXMgXAogICAgIG5hdGl2ZXNkay1ycGNzdmMtcHJvdG8gXAorICAgIG5hdGl2ZXNkay1wYXRjaCBcCisgICAgbmF0aXZlc2RrLW10b29scyBcCiAgICAgIgogCiBNVUxUSU1BQ0hfVEFSR0VUX1NZUyA9ICIke1NES19BUkNIfS1uYXRpdmVzZGske1NES19WRU5ET1J9LSR7U0RLX09TfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9jdmUtdXBkYXRlLWRiLW5hdGl2ZS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9jdmUtdXBkYXRlLWRiLW5hdGl2ZS5iYgppbmRleCBkYjFkNjlhLi5mMjdhZGU0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvY3ZlLXVwZGF0ZS1kYi1uYXRpdmUuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2N2ZS11cGRhdGUtZGItbmF0aXZlLmJiCkBAIC0xMyw4ICsxMywxNSBAQAogZGVsdGFzayBkb19wb3B1bGF0ZV9zeXNyb290CiAKIHB5dGhvbiAoKSB7Ci0gICAgaWYgbm90IGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfREJfRklMRSIpOgorICAgIGN2ZV9jaGVja19kYl9maWxlID0gZC5nZXRWYXIoIkNWRV9DSEVDS19EQl9GSUxFIikKKyAgICBpZiBub3QgY3ZlX2NoZWNrX2RiX2ZpbGU6CiAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIlNraXAgcmVjaXBlIHdoZW4gY3ZlLWNoZWNrIGNsYXNzIGlzIG5vdCBsb2FkZWQuIikKKworICAgIGlmIG9zLnBhdGguZXhpc3RzKCIlcy1qb3VybmFsIiAlIGN2ZV9jaGVja19kYl9maWxlICk6CisgICAgICAgIG9zLnJlbW92ZSgiJXMtam91cm5hbCIgJSBjdmVfY2hlY2tfZGJfZmlsZSkKKworICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhjdmVfY2hlY2tfZGJfZmlsZSk6CisgICAgICAgICAgICBvcy5yZW1vdmUoY3ZlX2NoZWNrX2RiX2ZpbGUpCiB9CiAKIHB5dGhvbiBkb19wb3B1bGF0ZV9jdmVfZGIoKSB7CkBAIC0yNyw3ICszNCw3IEBACiAKICAgICBiYi51dGlscy5leHBvcnRfcHJveGllcyhkKQogCi0gICAgQkFTRV9VUkwgPSAiaHR0cHM6Ly9udmQubmlzdC5nb3YvZmVlZHMvanNvbi9jdmUvMS4wL252ZGN2ZS0xLjAtIgorICAgIEJBU0VfVVJMID0gImh0dHBzOi8vbnZkLm5pc3QuZ292L2ZlZWRzL2pzb24vY3ZlLzEuMS9udmRjdmUtMS4xLSIKICAgICBZRUFSX1NUQVJUID0gMjAwMgogCiAgICAgZGJfZmlsZSA9IGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfREJfRklMRSIpCkBAIC01OSw3ICs2NiwxMyBAQAogICAgICAgICBqc29uX3VybCA9IHllYXJfdXJsICsgIi5qc29uLmd6IgogCiAgICAgICAgICMgUmV0cmlldmUgbWV0YSBsYXN0IG1vZGlmaWVkIGRhdGUKLSAgICAgICAgcmVzcG9uc2UgPSB1cmxsaWIucmVxdWVzdC51cmxvcGVuKG1ldGFfdXJsKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXNwb25zZSA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4obWV0YV91cmwpCisgICAgICAgIGV4Y2VwdCB1cmxsaWIuZXJyb3IuVVJMRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGN2ZV9mLndyaXRlKCdXYXJuaW5nOiBDVkUgZGIgdXBkYXRlIGVycm9yLCBVbmFibGUgdG8gZmV0Y2ggQ1ZFIGRhdGEuXG5cbicpCisgICAgICAgICAgICBiYi53YXJuKCJGYWlsZWQgdG8gZmV0Y2ggQ1ZFIGRhdGEgKCVzKSIgJSBlLnJlYXNvbikKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIGlmIHJlc3BvbnNlOgogICAgICAgICAgICAgZm9yIGwgaW4gcmVzcG9uc2UucmVhZCgpLmRlY29kZSgidXRmLTgiKS5zcGxpdGxpbmVzKCk6CiAgICAgICAgICAgICAgICAga2V5LCB2YWx1ZSA9IGwuc3BsaXQoIjoiLCAxKQpAQCAtMTIyLDkgKzEzNSwxMiBAQAogICAgICAgICAgICAgcHJvZHVjdCA9IGNwZTIzWzRdCiAgICAgICAgICAgICB2ZXJzaW9uID0gY3BlMjNbNV0KIAotICAgICAgICAgICAgaWYgdmVyc2lvbiAhPSAnKic6CisgICAgICAgICAgICBpZiB2ZXJzaW9uICE9ICcqJyBhbmQgdmVyc2lvbiAhPSAnLSc6CiAgICAgICAgICAgICAgICAgIyBWZXJzaW9uIGlzIGRlZmluZWQsIHRoaXMgaXMgYSAnPScgbWF0Y2gKICAgICAgICAgICAgICAgICB5aWVsZCBbY3ZlSWQsIHZlbmRvciwgcHJvZHVjdCwgdmVyc2lvbiwgJz0nLCAnJywgJyddCisgICAgICAgICAgICBlbGlmIHZlcnNpb24gPT0gJy0nOgorICAgICAgICAgICAgICAgICMgbm8gdmVyc2lvbiBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUKKyAgICAgICAgICAgICAgICB5aWVsZCBbY3ZlSWQsIHZlbmRvciwgcHJvZHVjdCwgdmVyc2lvbiwgJycsICcnLCAnJ10KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBQYXJzZSBzdGFydCB2ZXJzaW9uLCBlbmQgdmVyc2lvbiBhbmQgb3BlcmF0b3JzCiAgICAgICAgICAgICAgICAgb3Bfc3RhcnQgPSAnJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2R1bW15LXNkay1wYWNrYWdlLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9kdW1teS1zZGstcGFja2FnZS5pbmMKaW5kZXggNGQ2NTM3MC4uYmVkZGUyOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2R1bW15LXNkay1wYWNrYWdlLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvZHVtbXktc2RrLXBhY2thZ2UuaW5jCkBAIC0xNiwxMSArMTYsMTYgQEAKIEFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCiAKIFBSW3ZhcmRlcHNdICs9ICJEVU1NWVBST1ZJREVTIgorUFJbdmFyZGVwc10gKz0gIkRVTU1ZUFJPVklERVNfUEFDS0FHRVMiCisKK0RVTU1ZUFJPVklERVNfUEFDS0FHRVMgPz89ICIiCitEVU1NWVBST1ZJREVTX1BBQ0tBR0VTX01VTFRJTElCID0gIiR7QCcgJy5qb2luKFttdWx0aWxpYl9wa2dfZXh0ZW5kKGQsIHBrZykgZm9yIHBrZyBpbiBkLmdldFZhcignRFVNTVlQUk9WSURFU19QQUNLQUdFUycpLnNwbGl0KCldKX0iCitEVU1NWVBST1ZJREVTICs9ICIke0RVTU1ZUFJPVklERVNfUEFDS0FHRVNfTVVMVElMSUJ9IgogCiBweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKICAgICBwID0gZC5nZXRWYXIoIlBOIikKICAgICBkLmFwcGVuZFZhcigiUlBST1ZJREVTXyVzIiAlIHAsICIke0RVTU1ZUFJPVklERVN9IikKICAgICBkLmFwcGVuZFZhcigiUkNPTkZMSUNUU18lcyIgJSBwLCAiJHtEVU1NWVBST1ZJREVTfSIpCi0gICAgZC5hcHBlbmRWYXIoIlJSRVBMQUNFU18lcyIgJSBwLCAiJHtEVU1NWVBST1ZJREVTfSIpCisgICAgZC5hcHBlbmRWYXIoIlJSRVBMQUNFU18lcyIgJSBwLCAiJHtEVU1NWVBST1ZJREVTX1BBQ0tBR0VTX01VTFRJTElCfSIpCiB9CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWV4dHNkay10b29sY2hhaW4uYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS1leHRzZGstdG9vbGNoYWluLmJiCmluZGV4IDIzNWQ2ZWMuLjBkZjY4MWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWV4dHNkay10b29sY2hhaW4uYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtZXh0c2RrLXRvb2xjaGFpbi5iYgpAQCAtMTYsNiArMTYsOSBAQAogU1NUQVRFVEFTS1MgKz0gImRvX2xvY2tlZF9zaWdzIgogZG9fbG9ja2VkX3NpZ3Nbc3N0YXRlLWlucHV0ZGlyc10gPSAiJHtMT0NLRURfU0lHU19JTkRJUn0iCiBkb19sb2NrZWRfc2lnc1tzc3RhdGUtb3V0cHV0ZGlyc10gPSAiJHtTVEFHSU5HX0RJUn0vJHtQQUNLQUdFX0FSQ0h9LyR7UE59L2xvY2tlZC1zaWdzIgorIyBJZiBhIHRhc2toYXNoIGNoYW5nZXMgd2UgbmVlZCB0byB1c2UgdGhlIGxhdGVzdCBoYXNoIGNoYW5nZXMuIFdpdGggdW5paGFzaCB3ZSBtYXkgbm90IHJlYnVpbGQuCisjIGVTREsgd2hpY2ggdXNlcyB0aGlzIGlzIG5vc3RhbXAgYW55d2F5Citkb19sb2NrZWRfc2lnc1tub3N0YW1wXSA9ICIxIgogCiBweXRob24gZG9fbG9ja2VkX3NpZ3MoKSB7CiAgICAgaW1wb3J0IG9lLmNvcHlfYnVpbGRzeXN0ZW0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9uYXRpdmVzZGstYnVpbGR0b29scy1wZXJsLWR1bW15LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL25hdGl2ZXNkay1idWlsZHRvb2xzLXBlcmwtZHVtbXkuYmIKaW5kZXggNmE4NzQ4YS4uY2ZhNDFjNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL25hdGl2ZXNkay1idWlsZHRvb2xzLXBlcmwtZHVtbXkuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL25hdGl2ZXNkay1idWlsZHRvb2xzLXBlcmwtZHVtbXkuYmIKQEAgLTEsNiArMSw2IEBACiBEVU1NWUFSQ0ggPSAiYnVpbGR0b29scy1kdW1teS0ke1NES1BLR1NVRkZJWH0iCiAKLURVTU1ZUFJPVklERVMgPSAiXAorRFVNTVlQUk9WSURFU19QQUNLQUdFUyA9ICJcCiAgICAgbmF0aXZlc2RrLXBlcmwgXAogICAgIG5hdGl2ZXNkay1saWJ4bWwtcGFyc2VyLXBlcmwgXAogICAgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1ieXRlcyBcCkBAIC0xNSwxMiArMTUsMTggQEAKICAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtZmlsZS1maW5kIFwKICAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtZmlsZS1nbG9iIFwKICAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtZmlsZS1wYXRoIFwKKyAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKICAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtZmlsZS1zdGF0IFwKICAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtZ2V0b3B0LWxvbmcgXAogICAgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1pby1maWxlIFwKKyAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtb3ZlcmxvYWRpbmcgXAogICAgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1wb3NpeCBcCiAgICAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLXRocmVhZC1xdWV1ZSBcCiAgICAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLXRocmVhZHMgXAorICAgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS13YXJuaW5ncyBcCisiCisKK0RVTU1ZUFJPVklERVMgPSAiXAogICAgIC91c3IvYmluL3BlcmwgXAogICAgICIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL25hdGl2ZXNkay1zZGstcHJvdmlkZXMtZHVtbXkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbmF0aXZlc2RrLXNkay1wcm92aWRlcy1kdW1teS5iYgppbmRleCBiODkxZWZhLi4yOWY0ZGQzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbmF0aXZlc2RrLXNkay1wcm92aWRlcy1kdW1teS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbmF0aXZlc2RrLXNkay1wcm92aWRlcy1kdW1teS5iYgpAQCAtMSwxMCArMSwxMyBAQAogRFVNTVlBUkNIID0gInNkay1wcm92aWRlcy1kdW1teS0ke1NES1BLR1NVRkZJWH0iCiAKK0RVTU1ZUFJPVklERVNfUEFDS0FHRVMgPSAiXAorICAgIHBrZ2NvbmZpZyBcCisiCisKICMgQWRkIC9iaW4vc2g/CiBEVU1NWVBST1ZJREVTID0gIlwKICAgICAvYmluL2Jhc2ggXAogICAgIC91c3IvYmluL2VudiBcCi0gICAgcGtnY29uZmlnIFwKICAgICBsaWJHTC5zbygpKDY0Yml0KSBcCiAgICAgbGliR0wuc28gXAogIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3BhY2thZ2UtaW5kZXguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvcGFja2FnZS1pbmRleC5iYgppbmRleCBhNDEyM2I3Li45OGM1YmNiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvcGFja2FnZS1pbmRleC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvcGFja2FnZS1pbmRleC5iYgpAQCAtMTIsNiArMTIsNyBAQAogZGVsdGFzayBkb19jb25maWd1cmUKIGRlbHRhc2sgZG9fY29tcGlsZQogZGVsdGFzayBkb19pbnN0YWxsCitkZWx0YXNrIGRvX3BvcHVsYXRlX2xpYwogZGVsdGFzayBkb19wb3B1bGF0ZV9zeXNyb290CiAKIGRvX3BhY2thZ2VfaW5kZXhbbm9zdGFtcF0gPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS90YXJnZXQtc2RrLXByb3ZpZGVzLWR1bW15LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3RhcmdldC1zZGstcHJvdmlkZXMtZHVtbXkuYmIKaW5kZXggODdiOGJmYS4uZTNiZWViNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3RhcmdldC1zZGstcHJvdmlkZXMtZHVtbXkuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3RhcmdldC1zZGstcHJvdmlkZXMtZHVtbXkuYmIKQEAgLTQ4LDcgKzQ4LDYgQEAKICIKIAogRFVNTVlQUk9WSURFUyA9ICJcCi0gICAgJHtAJyAnLmpvaW4oW211bHRpbGliX3BrZ19leHRlbmQoZCwgcGtnKSBmb3IgcGtnIGluIGQuZ2V0VmFyKCdEVU1NWVBST1ZJREVTX1BBQ0tBR0VTJykuc3BsaXQoKV0pfSBcCiAgICAgL2Jpbi9zaCBcCiAgICAgL2Jpbi9iYXNoIFwKICAgICAvdXNyL2Jpbi9lbnYgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3dpYy10b29scy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS93aWMtdG9vbHMuYmIKaW5kZXggMDllYjQwOS4uOGFlYjk0MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3dpYy10b29scy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvd2ljLXRvb2xzLmJiCkBAIC02LDcgKzYsNyBAQAogICAgICAgICAgICBwYXJ0ZWQtbmF0aXZlIHN5c2xpbnV4LW5hdGl2ZSBncHRmZGlzay1uYXRpdmUgZG9zZnN0b29scy1uYXRpdmUgXAogICAgICAgICAgICBtdG9vbHMtbmF0aXZlIGJtYXAtdG9vbHMtbmF0aXZlIGdydWItZWZpLW5hdGl2ZSBjZHJ0b29scy1uYXRpdmUgXAogICAgICAgICAgICBidHJmcy10b29scy1uYXRpdmUgc3F1YXNoZnMtdG9vbHMtbmF0aXZlIHBzZXVkby1uYXRpdmUgXAotICAgICAgICAgICBlMmZzcHJvZ3MtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIFwKKyAgICAgICAgICAgZTJmc3Byb2dzLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSB0YXItbmF0aXZlXAogICAgICAgICAgICAiCiBERVBFTkRTX2FwcGVuZF94ODYgPSAiIHN5c2xpbnV4IGdydWItZWZpIHN5c3RlbWQtYm9vdCIKIERFUEVORFNfYXBwZW5kX3g4Ni02NCA9ICIgc3lzbGludXggZ3J1Yi1lZmkgc3lzdGVtZC1ib290IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsLzAwMDEtUmVtb3ZlLXVzaW5nLS5lbmQtZGlyZWN0aXZlLXdpdGgtY2xhbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvMDAwMS1SZW1vdmUtdXNpbmctLmVuZC1kaXJlY3RpdmUtd2l0aC1jbGFuZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTc5Y2I1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsLzAwMDEtUmVtb3ZlLXVzaW5nLS5lbmQtZGlyZWN0aXZlLXdpdGgtY2xhbmcucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSBiNjczMmY2ODg0OGVjYzhmZjAxMDU0YmY3YWVhNzBhMjQxYzM3MTE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTAgQXByIDIwMjAgMTE6MjM6MzkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIHVzaW5nIC5lbmQgZGlyZWN0aXZlIHdpdGggY2xhbmcKKworQ2xhbmcgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGFzbSBkaXJlY3RpdmUKK0ZpeGVzIElzc3VlICMxOQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2thbmlpbmkvbGlidWNvbnRleHQvcHVsbC8yMF0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBhcmNoL2NvbW1vbi9jb21tb24tZGVmcy5oIHwgNSArKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2FyY2gvY29tbW9uL2NvbW1vbi1kZWZzLmggYi9hcmNoL2NvbW1vbi9jb21tb24tZGVmcy5oCitpbmRleCBiZjJmYjhjLi42MTgxMTZiIDEwMDY0NAorLS0tIGEvYXJjaC9jb21tb24vY29tbW9uLWRlZnMuaAorKysrIGIvYXJjaC9jb21tb24vY29tbW9uLWRlZnMuaAorQEAgLTI4LDEwICsyOCwxMyBAQAorIAlFTlQoX19wcm9jKQkJCQkJXAorIF9fcHJvYzoJCQkJCQkJXAorIAlTRVRVUF9GUkFNRShfX3Byb2MpCistCisrI2lmZGVmIF9fY2xhbmdfXworKyNkZWZpbmUgRU5EKF9fcHJvYykKKysjZWxzZQorICNkZWZpbmUgRU5EKF9fcHJvYykJCQkJCVwKKyAJLmVuZAlfX3Byb2M7CQkJCQlcCisgCS5zaXplCV9fcHJvYywuLV9fcHJvYzsKKysjZW5kaWYKKyAKKyAjZGVmaW5lIEFMSUFTKF9fYWxpYXMsIF9fcmVhbCkJCQkJXAorIAkud2VhawlfX2FsaWFzOwkJCQlcCistLSAKKzIuMjYuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbGlidWNvbnRleHRfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL2xpYnVjb250ZXh0X2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzk4OGYxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL2xpYnVjb250ZXh0X2dpdC5iYgpAQCAtMCwwICsxLDYzIEBACisjIENvcHlyaWdodCAoQykgMjAxOSBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQorCitTVU1NQVJZID0gInVjb250ZXh0IGltcGxlbWVudGF0aW9uIGZlYXR1cmluZyBnbGliYy1jb21wYXRpYmxlIEFCSSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9rYW5paW5pL2xpYnVjb250ZXh0IgorTElDRU5TRSA9ICJJU0MiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02ZWVkMDFmYTBlNjczYzc2ZjVhNTcxNTQzOGY2NWIxZCIKK1NFQ1RJT04gPSAibGlicyIKK0RFUEVORFMgPSAiIgorCitQViA9ICIwLjEwKyR7U1JDUFZ9IgorU1JDUkVWID0gIjE5ZmExYmJmYzI2ZWZiOTIxNDdiNWU4NWNjMGNhMDJhMGU4Mzc1NjEiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20va2FuaWluaS9saWJ1Y29udGV4dCBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0NPTVBBVElCTEVfSE9TVCA9ICIuKi1tdXNsLioiCisKK3ZhbGlkX2FyY2hzID0gIiBcCisgICAgeDg2IHg4Nl82NCAgXAorICAgIHBwYyBwcGM2NCAgIFwKKyAgICBtaXBzIG1pcHM2NCBcCisgICAgYXJtIGFhcmNoNjQgXAorICAgIHMzOTB4ICAgICAgIFwKKyIKKworZGVmIG1hcF9rZXJuZWxfYXJjaChhLCBkKToKKyAgICBpbXBvcnQgcmUKKworICAgIHZhbGlkX2FyY2hzID0gZC5nZXRWYXIoJ3ZhbGlkX2FyY2hzJykuc3BsaXQoKQorCisgICAgaWYgYSBpbiB2YWxpZF9hcmNoczogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEKKyAgICBlbGlmIHJlLm1hdGNoKCcoaS44NnxhdGhsb24pJCcsIGEpOiAgICAgICAgICAgICByZXR1cm4gJ3g4NicKKyAgICBlbGlmIHJlLm1hdGNoKCd4ODYuNjQkJywgYSk6ICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3g4Nl82NCcKKyAgICBlbGlmIHJlLm1hdGNoKCdhcm1lYiQnLCBhKTogICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2FybScKKyAgICBlbGlmIHJlLm1hdGNoKCdhYXJjaDY0JCcsIGEpOiAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2FhcmNoNjQnCisgICAgZWxpZiByZS5tYXRjaCgnYWFyY2g2NF9iZSQnLCBhKTogICAgICAgICAgICAgICAgcmV0dXJuICdhYXJjaDY0JworICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjRfaWxwMzIkJywgYSk6ICAgICAgICAgICAgIHJldHVybiAnYWFyY2g2NCcKKyAgICBlbGlmIHJlLm1hdGNoKCdhYXJjaDY0X2JlX2lscDMyJCcsIGEpOiAgICAgICAgICByZXR1cm4gJ2FhcmNoNjQnCisgICAgZWxpZiByZS5tYXRjaCgnbWlwcyhpc2F8KSgzMnwpKHI2fCkoZWx8KSQnLCBhKTogcmV0dXJuICdtaXBzJworICAgIGVsaWYgcmUubWF0Y2goJ21pcHMoaXNhfCk2NChyNnwpKGVsfCkkJywgYSk6ICAgIHJldHVybiAnbWlwczY0JworICAgIGVsaWYgcmUubWF0Y2goJ3AocGN8b3dlcnBjKScsIGEpOiAgICAgICAgICAgICAgIHJldHVybiAncHBjJworICAgIGVsaWYgcmUubWF0Y2goJ3AocGM2NHxvd2VycGM2NCknLCBhKTogICAgICAgICAgIHJldHVybiAncHBjNjQnCisgICAgZWxpZiByZS5tYXRjaCgncmlzY3Y2NCQnLCBhKTogICAgICAgICAgICAgICAgICAgcmV0dXJuICdyaXNjdjY0JworICAgIGVsc2U6CisgICAgICAgIGlmIG5vdCBkLmdldFZhcigiVEFSR0VUX09TIikuc3RhcnRzd2l0aCgibGludXgiKToKKyAgICAgICAgICAgIHJldHVybiBhCisgICAgICAgIGJiLmVycm9yKCJjYW5ub3QgbWFwICclcycgdG8gYSBsaW51eCBrZXJuZWwgYXJjaGl0ZWN0dXJlIiAlIGEpCisKK2V4cG9ydCBBUkNIID0gIiR7QG1hcF9rZXJuZWxfYXJjaChkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZCl9IgorCitDRkxBR1MgKz0gIi1JYXJjaC8ke0FSQ0h9IC1JYXJjaC9jb21tb24iCisKK0VYVFJBX09FTUFLRSA9ICJDRkxBR1M9JyR7Q0ZMQUdTfScgTERGTEFHUz0nJHtMREZMQUdTfScgTElCRElSPScke2Jhc2VfbGliZGlyfSciCisKK2RvX2NvbXBpbGUoKSB7CisgICAgb2VfcnVubWFrZSBBUkNIPSR7QVJDSH0KK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIEFSQ0g9IiR7QVJDSH0iIERFU1RESVI9IiR7RH0iIGluc3RhbGwKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLmluYwppbmRleCAwNjgzYmY4Li5iZGNlNDEyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wuaW5jCkBAIC05LDcgKzksNyBAQAogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tdXNsLWxpYmMub3JnLyIKIExJQ0VOU0UgPSAiTUlUIgogU0VDVElPTiA9ICJsaWJzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT1kMGZlMmJlMTdiYzQ1ZmY0YTQyYWRlMWMxM2VkNjM0MCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9Zjk1ZWU4NDhhMDhhZDI1M2MwNDcyM2RhMDBjZWRiMDEiCiAKIElOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCiAKQEAgLTI1LDMgKzI1LDcgQEAKIEFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgogQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCiAKKyMgRW5hYmxlIG91dCBvZiB0cmVlIGJ1aWxkCitCID0gIiR7V09SS0RJUn0vYnVpbGQiCisKK2RvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdID0gIiR7Qn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC8wMDAxLXJpc2N2LURlZmluZS1zaWdjb250ZXh0LWFnYWluLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wvMDAwMS1yaXNjdi1EZWZpbmUtc2lnY29udGV4dC1hZ2Fpbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNiMzI0ZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC8wMDAxLXJpc2N2LURlZmluZS1zaWdjb250ZXh0LWFnYWluLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotY29tbWl0IGEwOTkzZjhmMGYxNjE0MjNlY2RjYjc1NGYyODJmZmQyZmU0N2E3YjUKLUF1dGhvcjogUmljaCBGZWxrZXIgPGRhbGlhc0BhZXJpZmFsLmN4PgotRGF0ZTogICBXZWQgT2N0IDIgMDk6Mjg6MDMgMjAxOSAtMDQwMAotCi0gICAgcmVpbnRyb2R1Y2UgcmlzY3Y2NCBzdHJ1Y3Qgc2lnY29udGV4dAotICAgIAotICAgIGNvbW1pdCBhYjNlYjg5YThiODMzNTNjZGFhYjEyZWQwMTdhNjdhNzczMGY5MGU5IHJlbW92ZWQgaXQgYXMgcGFydCBvZgotICAgIGNvcnJlY3RpbmcgdGhlIG1jb250ZXh0X3QgZGVmaW5pdGlvbiwgYnV0IHRoZXJlIGlzIHN0aWxsIGNvZGUgdXNpbmcKLSAgICBzdHJ1Y3Qgc2lnY29udGV4dCBhbmQgZXhwZWN0aW5nIHRoZSBtZW1iZXIgbmFtZXMgcHJlc2VudCBpbiBpdCwgbW9zdAotICAgIG5vdGFibHkgbGliZ2NjX2VoLiBhbG1vc3QgYWxsIHN1Y2ggdXNhZ2UgaXMgaW5jb3JyZWN0LCBidXQgYnJpbmcgYmFjawotICAgIHN0cnVjdCBzaWdjb250ZXh0IGF0IGxlYXN0IGZvciBub3cgc28gYXMgbm90IHRvIGludHJvZHVjZSByZWdyZXNzaW9ucy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Y2NC9iaXRzL3NpZ25hbC5oIGIvYXJjaC9yaXNjdjY0L2JpdHMvc2lnbmFsLmgKLWluZGV4IDAzZmU0OGMxLi4yZmY0YmUzMCAxMDA2NDQKLS0tLSBhL2FyY2gvcmlzY3Y2NC9iaXRzL3NpZ25hbC5oCi0rKysgYi9hcmNoL3Jpc2N2NjQvYml0cy9zaWduYWwuaAotQEAgLTYsMTIgKzYsNiBAQAotICMgZGVmaW5lIFNJR1NUS1NaIDgxOTIKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfR05VX1NPVVJDRSkgfHwgZGVmaW5lZChfQlNEX1NPVVJDRSkKLS10eXBlZGVmIHVuc2lnbmVkIGxvbmcgZ3JlZ190OwotLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBncmVnc2V0X3RbMzJdOwotLXR5cGVkZWYgdW5pb24gX19yaXNjdl9tY19mcF9zdGF0ZSBmcHJlZ3NldF90OwotLSNlbmRpZgotLQotIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX3Jpc2N2X21jX2dwX3N0YXRlWzMyXTsKLSAKLSBzdHJ1Y3QgX19yaXNjdl9tY19mX2V4dF9zdGF0ZSB7Ci1AQCAtNDEsNiArMzUsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgbWNvbnRleHRfdCB7Ci0gCXVuaW9uIF9fcmlzY3ZfbWNfZnBfc3RhdGUgX19mcHJlZ3M7Ci0gfSBtY29udGV4dF90OwotIAotKyNpZiBkZWZpbmVkKF9HTlVfU09VUkNFKSB8fCBkZWZpbmVkKF9CU0RfU09VUkNFKQotK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBncmVnX3Q7Ci0rdHlwZWRlZiB1bnNpZ25lZCBsb25nIGdyZWdzZXRfdFszMl07Ci0rdHlwZWRlZiB1bmlvbiBfX3Jpc2N2X21jX2ZwX3N0YXRlIGZwcmVnc2V0X3Q7Ci0rc3RydWN0IHNpZ2NvbnRleHQgewotKwlncmVnc2V0X3QgZ3JlZ3M7Ci0rCWZwcmVnc2V0X3QgZnByZWdzOwotK307Ci0rI2VuZGlmCi0rCi0gc3RydWN0IHNpZ2FsdHN0YWNrIHsKLSAJdm9pZCAqc3Nfc3A7Ci0gCWludCBzc19mbGFnczsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYgppbmRleCBhYWNmZjc5Li44MjM3OWZkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbF9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2xfZ2l0LmJiCkBAIC00LDkgKzQsOSBAQAogcmVxdWlyZSBtdXNsLmluYwogaW5oZXJpdCBsaW51eGxvYWRlcgogCi1TUkNSRVYgPSAiMmMyNDc3ZGE5YTU1M2MwYjliMmZhMTgwNzNhNWRjZGJlNmQzOTVhZiIKK1NSQ1JFViA9ICIwNDBjMWQxNmI0NjhjNTBjMDRmYzk0ZWRmZjUyMWYxNjM3NzA4MzI4IgogCi1CQVNFVkVSID0gIjEuMS4yMyIKK0JBU0VWRVIgPSAiMS4yLjAiCiAKIFBWID0gIiR7QkFTRVZFUn0rZ2l0JHtTUkNQVn0iCiAKQEAgLTE1LDcgKzE1LDYgQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lm11c2wtbGliYy5vcmcvbXVzbCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtZHluYW1pYy1saW5rZXItYS1yZWxhdGl2ZS1zeW1saW5rLXRvLWxpYmMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1sZHNvLVVzZS1zeXNsaWJkaXItYW5kLWxpYmRpci1hcy1kZWZhdWx0LXBhdGhlcy10by1sLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcmlzY3YtRGVmaW5lLXNpZ2NvbnRleHQtYWdhaW4ucGF0Y2ggXAogICAgICAgICAgICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKQEAgLTMwLDYgKzI5LDcgQEAKICAgICAgICAgICAgbGlic3NwLW5vbnNoYXJlZCBcCiAgICAgICAgICAgIgogR0xJQkNfTERTTyA9ICIke0BnZXRfZ2xpYmNfbG9hZGVyKGQpfSIKK01VU0xfTERTT19BUkNIID0gIiR7QGdldF9tdXNsX2xvYWRlcl9hcmNoKGQpfSIKIAogZXhwb3J0IENST1NTX0NPTVBJTEU9IiR7VEFSR0VUX1BSRUZJWH0iCiAKQEAgLTQ5LDcgKzQ5LDcgQEAKICAgICAtLWJpbmRpcj0ke2JpbmRpcn0gXAogICAgIC0tbGliZGlyPSR7bGliZGlyfSBcCiAgICAgLS1pbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0gXAotICAgIC0tc3lzbGliZGlyPSR7YmFzZV9saWJkaXJ9IFwKKyAgICAtLXN5c2xpYmRpcj0vbGliIFwKICIKIAogZG9fY29uZmlndXJlKCkgewpAQCAtNjIsMzIgKzYyLDI4IEBACiAKIGRvX2luc3RhbGwoKSB7CiAJb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JyR7RH0nCi0KLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0gJHtEfSR7YmFzZV9saWJkaXJ9ICR7RH0ke3N5c2NvbmZkaXJ9CisgICAgICAgIGVjaG8gIiR7YmFzZV9saWJkaXJ9IiA+ICR7RH0ke3N5c2NvbmZkaXJ9L2xkLW11c2wtJHtNVVNMX0xEU09fQVJDSH0ucGF0aAorICAgICAgICBlY2hvICIke2xpYmRpcn0iID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xkLW11c2wtJHtNVVNMX0xEU09fQVJDSH0ucGF0aAogCXJtIC1mICR7RH0ke2JpbmRpcn0vbGRkICR7RH0ke0dMSUJDX0xEU099CiAJbG5yICR7RH0ke2xpYmRpcn0vbGliYy5zbyAke0R9JHtiaW5kaXJ9L2xkZAogCWxuciAke0R9JHtsaWJkaXJ9L2xpYmMuc28gJHtEfSR7R0xJQkNfTERTT30KLQlmb3IgbCBpbiBjcnlwdCBkbCBtIHB0aHJlYWQgcmVzb2x2IHJ0IHV0aWwgeG5ldAotCWRvCi0JCWxuIC1zZiBsaWJjLnNvICR7RH0ke2xpYmRpcn0vbGliJGwuc28KLQlkb25lCi0JZm9yIGkgaW4gbGliYy5zby42IGxpYmNyeXB0LnNvLjEgbGliZGwuc28uMiBsaWJtLnNvLjYgbGlicHRocmVhZC5zby4wIGxpYnJlc29sdi5zby4yIGxpYnJ0LnNvLjEgbGlidXRpbC5zby4xOyBkbwotCQlsbiAtc2YgbGliYy5zbyAke0R9JHtsaWJkaXJ9LyRpCi0JZG9uZQogfQogCiBQQUNLQUdFUyA9KyAiJHtQTn0tZ2xpYmMtY29tcGF0IgogCi1GSUxFU18ke1BOfS1nbGliYy1jb21wYXQgKz0gIlwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliYy5zby42ICR7bGliZGlyfS9saWJjcnlwdC5zby4xIFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliZGwuc28uMiAke2xpYmRpcn0vbGlibS5zby42IFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlicHRocmVhZC5zby4wICR7bGliZGlyfS9saWJyZXNvbHYuc28uMiBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnJ0LnNvLjEgJHtsaWJkaXJ9L2xpYnV0aWwuc28uMSBcCi0gICAgICAgICAgICAgICAgJHtHTElCQ19MRFNPfSBcCi0gICAgICAgICAgICAgICAgIgorRklMRVNfJHtQTn0gKz0gIi9saWIvbGQtbXVzbC0ke01VU0xfTERTT19BUkNIfS5zby4xICR7c3lzY29uZmRpcn0vbGQtbXVzbC0ke01VU0xfTERTT19BUkNIfS5wYXRoIgorRklMRVNfJHtQTn0tZ2xpYmMtY29tcGF0ICs9ICIke0dMSUJDX0xEU099IgorRklMRVNfJHtQTn0tc3RhdGljZGV2ID0gIiR7bGliZGlyfS9saWJjLmEiCitGSUxFU18ke1BOfS1kZXYgPSsgIiR7bGliZGlyfS9saWJjcnlwdC5hICR7bGliZGlyfS9saWJkbC5hICR7bGliZGlyfS9saWJtLmEgXAorICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlicHRocmVhZC5hICR7bGliZGlyfS9saWJyZXNvbHYuYSBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJydC5hICR7bGliZGlyfS9saWJ1dGlsLmEgJHtsaWJkaXJ9L2xpYnhuZXQuYSBcCisgICAgICAgICAgICAgICAgICAgIgogCiBSREVQRU5EU18ke1BOfS1kZXYgKz0gImxpbnV4LWxpYmMtaGVhZGVycy1kZXYgYnNkLWhlYWRlcnMtZGV2IGxpYnNzcC1ub25zaGFyZWQtc3RhdGljZGV2IgogUlBST1ZJREVTXyR7UE59LWRldiArPSAibGliYy1kZXYgdmlydHVhbC1saWJjLWRldiIKIFJQUk9WSURFU18ke1BOfSArPSAibGRkIGxpYnNlZ2ZhdWx0IHJ0bGQoR05VX0hBU0gpIgogCiBMRUFEX1NPTkFNRSA9ICJsaWJjLnNvIgorSU5TQU5FX1NLSVBfJHtQTn0tZGV2ID0gInN0YXRpY2RldiIKK0lOU0FORV9TS0lQXyR7UE59ID0gImxpYmRpciIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy8wMDAxLW5jdXJzZXMtc2VsZWN0aXZlLWJhY2twb3J0LW9mLTIwMTkxMDEyLXBhdGNoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzLzAwMDEtbmN1cnNlcy1zZWxlY3RpdmUtYmFja3BvcnQtb2YtMjAxOTEwMTItcGF0Y2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4NzBjNGIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzLzAwMDEtbmN1cnNlcy1zZWxlY3RpdmUtYmFja3BvcnQtb2YtMjAxOTEwMTItcGF0Y2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotRnJvbSAwNjRiNzdmMTczMzM3YWE3OTBmMWNlYzBkNzQxYmZiYzYxYTMzZDMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVHJldm9yIEdhbWJsaW4gPHRyZXZvci5nYW1ibGluQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDE4IE9jdCAyMDE5IDA5OjU3OjQzIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIG5jdXJzZXM6IHNlbGVjdGl2ZSBiYWNrcG9ydCBvZiAyMDE5MTAxMiBwYXRjaAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NhbHNhLmRlYmlhbi5vcmcvZGViaWFuL25jdXJzZXMvY29tbWl0LzI0MzkwOGIxZTNkODFdCi0KLUNvbnRlbnRzIG9mIHRoZSB1cHN0cmVhbSBwYXRjaCB0aGF0IGFyZSBub3QgYXBwbGllZCB0byBjb21wX2hhc2guYywgCi1wYXJzZV9lbnRyeS5jLCBvciBkdW1wX2VudHJ5LmMgaGF2ZSBiZWVuIG9taXR0ZWQuCi0KLUNWRTogQ1ZFLTIwMTktMTc1OTQKLUNWRTogQ1ZFLTIwMTktMTc1OTUKLQotU2lnbmVkLW9mZi1ieTogVHJldm9yIEdhbWJsaW4gIDx0cmV2b3IuZ2FtYmxpbkB3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBuY3Vyc2VzL3RpbmZvL2NvbXBfaGFzaC5jICAgfCAxNCArKysrKysrKysrLS0tLQotIG5jdXJzZXMvdGluZm8vcGFyc2VfZW50cnkuYyB8IDMyICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCi0gcHJvZ3MvZHVtcF9lbnRyeS5jICAgICAgICAgIHwgIDcgKysrKy0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL2NvbXBfaGFzaC5jIGIvbmN1cnNlcy90aW5mby9jb21wX2hhc2guYwotaW5kZXggMjFmMTY1Y2EuLmE2MmQzOGY5IDEwMDY0NAotLS0tIGEvbmN1cnNlcy90aW5mby9jb21wX2hhc2guYwotKysrIGIvbmN1cnNlcy90aW5mby9jb21wX2hhc2guYwotQEAgLTQ0LDcgKzQ0LDcgQEAKLSAjaW5jbHVkZSA8dGljLmg+Ci0gI2luY2x1ZGUgPGhhc2hzaXplLmg+Ci0gCi0tTU9EVUxFX0lEKCIkSWQ6IGNvbXBfaGFzaC5jLHYgMS40OSAyMDE5LzAzLzEwIDAwOjA2OjQ4IHRvbSBFeHAgJCIpCi0rTU9EVUxFX0lEKCIkSWQ6IGNvbXBfaGFzaC5jLHYgMS41MSAyMDE5LzEwLzEyIDE2OjMyOjEzIHRvbSBFeHAgJCIpCi0gCi0gLyoKLSAgKiBGaW5kcyB0aGUgZW50cnkgZm9yIHRoZSBnaXZlbiBzdHJpbmcgaW4gdGhlIGhhc2ggdGFibGUgaWYgcHJlc2VudC4KLUBAIC02Myw3ICs2Myw5IEBAIF9uY19maW5kX2VudHJ5KGNvbnN0IGNoYXIgKnN0cmluZywKLSAKLSAgICAgaGFzaHZhbHVlID0gZGF0YS0+aGFzaF9vZihzdHJpbmcpOwotIAotLSAgICBpZiAoZGF0YS0+dGFibGVfZGF0YVtoYXNodmFsdWVdID49IDApIHsKLSsgICAgaWYgKGhhc2h2YWx1ZSA+PSAwCi0rCSYmICh1bnNpZ25lZCkgaGFzaHZhbHVlIDwgZGF0YS0+dGFibGVfc2l6ZQotKwkmJiBkYXRhLT50YWJsZV9kYXRhW2hhc2h2YWx1ZV0gPj0gMCkgewotIAotIAlyZWFsX3RhYmxlID0gX25jX2dldF90YWJsZSh0ZXJtY2FwKTsKLSAJcHRyID0gcmVhbF90YWJsZSArIGRhdGEtPnRhYmxlX2RhdGFbaGFzaHZhbHVlXTsKLUBAIC05Niw3ICs5OCw5IEBAIF9uY19maW5kX3R5cGVfZW50cnkoY29uc3QgY2hhciAqc3RyaW5nLAotICAgICBjb25zdCBIYXNoRGF0YSAqZGF0YSA9IF9uY19nZXRfaGFzaF9pbmZvKHRlcm1jYXApOwotICAgICBpbnQgaGFzaHZhbHVlID0gZGF0YS0+aGFzaF9vZihzdHJpbmcpOwotIAotLSAgICBpZiAoZGF0YS0+dGFibGVfZGF0YVtoYXNodmFsdWVdID49IDApIHsKLSsgICAgaWYgKGhhc2h2YWx1ZSA+PSAwCi0rCSYmICh1bnNpZ25lZCkgaGFzaHZhbHVlIDwgZGF0YS0+dGFibGVfc2l6ZQotKwkmJiBkYXRhLT50YWJsZV9kYXRhW2hhc2h2YWx1ZV0gPj0gMCkgewotIAljb25zdCBzdHJ1Y3QgbmFtZV90YWJsZV9lbnRyeSAqY29uc3QgdGFibGUgPSBfbmNfZ2V0X3RhYmxlKHRlcm1jYXApOwotIAotIAlwdHIgPSB0YWJsZSArIGRhdGEtPnRhYmxlX2RhdGFbaGFzaHZhbHVlXTsKLUBAIC0xMjQsNyArMTI4LDkgQEAgX25jX2ZpbmRfdXNlcl9lbnRyeShjb25zdCBjaGFyICpzdHJpbmcpCi0gCi0gICAgIGhhc2h2YWx1ZSA9IGRhdGEtPmhhc2hfb2Yoc3RyaW5nKTsKLSAKLS0gICAgaWYgKGRhdGEtPnRhYmxlX2RhdGFbaGFzaHZhbHVlXSA+PSAwKSB7Ci0rICAgIGlmIChoYXNodmFsdWUgPj0gMAotKwkmJiAodW5zaWduZWQpIGhhc2h2YWx1ZSA8IGRhdGEtPnRhYmxlX3NpemUKLSsJJiYgZGF0YS0+dGFibGVfZGF0YVtoYXNodmFsdWVdID49IDApIHsKLSAKLSAJcmVhbF90YWJsZSA9IF9uY19nZXRfdXNlcmRlZnNfdGFibGUoKTsKLSAJcHRyID0gcmVhbF90YWJsZSArIGRhdGEtPnRhYmxlX2RhdGFbaGFzaHZhbHVlXTsKLWRpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL3BhcnNlX2VudHJ5LmMgYi9uY3Vyc2VzL3RpbmZvL3BhcnNlX2VudHJ5LmMKLWluZGV4IGY4Y2NhOGI1Li4wNjQzNzZjNSAxMDA2NDQKLS0tLSBhL25jdXJzZXMvdGluZm8vcGFyc2VfZW50cnkuYwotKysrIGIvbmN1cnNlcy90aW5mby9wYXJzZV9lbnRyeS5jCi1AQCAtNDcsNyArNDcsNyBAQAotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDx0aWMuaD4KLSAKLS1NT0RVTEVfSUQoIiRJZDogcGFyc2VfZW50cnkuYyx2IDEuOTcgMjAxOS8wOC8wMyAyMzoxMDozOCB0b20gRXhwICQiKQotK01PRFVMRV9JRCgiJElkOiBwYXJzZV9lbnRyeS5jLHYgMS45OCAyMDE5LzEwLzEyIDAwOjUwOjMxIHRvbSBFeHAgJCIpCi0gCi0gI2lmZGVmIExJTlQKLSBzdGF0aWMgc2hvcnQgY29uc3QgcGFyYW1ldHJpemVkW10gPQotQEAgLTY1NCwxMiArNjU0LDEyIEBAIF9uY19jYXBjbXAoY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqdCkKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1hcHBlbmRfYWNzMChzdHJpbmdfZGVzYyAqIGRzdCwgaW50IGNvZGUsIGludCBzcmMpCi0rYXBwZW5kX2FjczAoc3RyaW5nX2Rlc2MgKiBkc3QsIGludCBjb2RlLCBjaGFyICpzcmMsIHNpemVfdCBvZmYpCi0gewotLSAgICBpZiAoc3JjICE9IDApIHsKLSsgICAgaWYgKHNyYyAhPSAwICYmIG9mZiA8IHN0cmxlbihzcmMpKSB7Ci0gCWNoYXIgdGVtcFszXTsKLSAJdGVtcFswXSA9IChjaGFyKSBjb2RlOwotLQl0ZW1wWzFdID0gKGNoYXIpIHNyYzsKLSsJdGVtcFsxXSA9IHNyY1tvZmZdOwotIAl0ZW1wWzJdID0gMDsKLSAJX25jX3NhZmVfc3RyY2F0KGRzdCwgdGVtcCk7Ci0gICAgIH0KLUBAIC02NjksNyArNjY5LDcgQEAgc3RhdGljIHZvaWQKLSBhcHBlbmRfYWNzKHN0cmluZ19kZXNjICogZHN0LCBpbnQgY29kZSwgY2hhciAqc3JjKQotIHsKLSAgICAgaWYgKFZBTElEX1NUUklORyhzcmMpICYmIHN0cmxlbihzcmMpID09IDEpIHsKLS0JYXBwZW5kX2FjczAoZHN0LCBjb2RlLCAqc3JjKTsKLSsJYXBwZW5kX2FjczAoZHN0LCBjb2RlLCBzcmMsIDApOwotICAgICB9Ci0gfQotIAotQEAgLTEwMzgsMTcgKzEwMzgsMTcgQEAgcG9zdHByb2Nlc3NfdGVybWluZm8oVEVSTVRZUEUyICp0cCkKLSAJX25jX3N0cl9pbml0KCZyZXN1bHQsIGJ1ZjIsIHNpemVvZihidWYyKSk7Ci0gCV9uY19zYWZlX3N0cmNhdCgmcmVzdWx0LCBhY3NfY2hhcnMpOwotIAotLQlhcHBlbmRfYWNzMCgmcmVzdWx0LCAnbCcsIGJveF9jaGFyc18xWzBdKTsJLyogQUNTX1VMQ09STkVSICovCi0tCWFwcGVuZF9hY3MwKCZyZXN1bHQsICdxJywgYm94X2NoYXJzXzFbMV0pOwkvKiBBQ1NfSExJTkUgKi8KLS0JYXBwZW5kX2FjczAoJnJlc3VsdCwgJ2snLCBib3hfY2hhcnNfMVsyXSk7CS8qIEFDU19VUkNPUk5FUiAqLwotLQlhcHBlbmRfYWNzMCgmcmVzdWx0LCAneCcsIGJveF9jaGFyc18xWzNdKTsJLyogQUNTX1ZMSU5FICovCi0tCWFwcGVuZF9hY3MwKCZyZXN1bHQsICdqJywgYm94X2NoYXJzXzFbNF0pOwkvKiBBQ1NfTFJDT1JORVIgKi8KLS0JYXBwZW5kX2FjczAoJnJlc3VsdCwgJ20nLCBib3hfY2hhcnNfMVs1XSk7CS8qIEFDU19MTENPUk5FUiAqLwotLQlhcHBlbmRfYWNzMCgmcmVzdWx0LCAndycsIGJveF9jaGFyc18xWzZdKTsJLyogQUNTX1RURUUgKi8KLS0JYXBwZW5kX2FjczAoJnJlc3VsdCwgJ3UnLCBib3hfY2hhcnNfMVs3XSk7CS8qIEFDU19SVEVFICovCi0tCWFwcGVuZF9hY3MwKCZyZXN1bHQsICd2JywgYm94X2NoYXJzXzFbOF0pOwkvKiBBQ1NfQlRFRSAqLwotLQlhcHBlbmRfYWNzMCgmcmVzdWx0LCAndCcsIGJveF9jaGFyc18xWzldKTsJLyogQUNTX0xURUUgKi8KLS0JYXBwZW5kX2FjczAoJnJlc3VsdCwgJ24nLCBib3hfY2hhcnNfMVsxMF0pOwkvKiBBQ1NfUExVUyAqLwotKwlhcHBlbmRfYWNzMCgmcmVzdWx0LCAnbCcsIGJveF9jaGFyc18xLCAwKTsJLyogQUNTX1VMQ09STkVSICovCi0rCWFwcGVuZF9hY3MwKCZyZXN1bHQsICdxJywgYm94X2NoYXJzXzEsIDEpOwkvKiBBQ1NfSExJTkUgKi8KLSsJYXBwZW5kX2FjczAoJnJlc3VsdCwgJ2snLCBib3hfY2hhcnNfMSwgMik7CS8qIEFDU19VUkNPUk5FUiAqLwotKwlhcHBlbmRfYWNzMCgmcmVzdWx0LCAneCcsIGJveF9jaGFyc18xLCAzKTsJLyogQUNTX1ZMSU5FICovCi0rCWFwcGVuZF9hY3MwKCZyZXN1bHQsICdqJywgYm94X2NoYXJzXzEsIDQpOwkvKiBBQ1NfTFJDT1JORVIgKi8KLSsJYXBwZW5kX2FjczAoJnJlc3VsdCwgJ20nLCBib3hfY2hhcnNfMSwgNSk7CS8qIEFDU19MTENPUk5FUiAqLwotKwlhcHBlbmRfYWNzMCgmcmVzdWx0LCAndycsIGJveF9jaGFyc18xLCA2KTsJLyogQUNTX1RURUUgKi8KLSsJYXBwZW5kX2FjczAoJnJlc3VsdCwgJ3UnLCBib3hfY2hhcnNfMSwgNyk7CS8qIEFDU19SVEVFICovCi0rCWFwcGVuZF9hY3MwKCZyZXN1bHQsICd2JywgYm94X2NoYXJzXzEsIDgpOwkvKiBBQ1NfQlRFRSAqLwotKwlhcHBlbmRfYWNzMCgmcmVzdWx0LCAndCcsIGJveF9jaGFyc18xLCA5KTsJLyogQUNTX0xURUUgKi8KLSsJYXBwZW5kX2FjczAoJnJlc3VsdCwgJ24nLCBib3hfY2hhcnNfMSwgMTApOwkvKiBBQ1NfUExVUyAqLwotIAotIAlpZiAoYnVmMlswXSkgewotIAkgICAgYWNzX2NoYXJzID0gX25jX3NhdmVfc3RyKGJ1ZjIpOwotZGlmZiAtLWdpdCBhL3Byb2dzL2R1bXBfZW50cnkuYyBiL3Byb2dzL2R1bXBfZW50cnkuYwotaW5kZXggZDBlNDIwZWMuLjhhNDcwODRhIDEwMDY0NAotLS0tIGEvcHJvZ3MvZHVtcF9lbnRyeS5jCi0rKysgYi9wcm9ncy9kdW1wX2VudHJ5LmMKLUBAIC0zOSw3ICszOSw3IEBACi0gI2luY2x1ZGUgInRlcm1zb3J0LmMiCQkvKiB0aGlzIEMgZmlsZSBpcyBnZW5lcmF0ZWQgKi8KLSAjaW5jbHVkZSA8cGFyYW1ldHJpemVkLmg+CS8qIHNvIGlzIHRoaXMgKi8KLSAKLS1NT0RVTEVfSUQoIiRJZDogZHVtcF9lbnRyeS5jLHYgMS4xNzMgMjAxOS8wNS8xMSAyMTowMjoyNCB0b20gRXhwICQiKQotK01PRFVMRV9JRCgiJElkOiBkdW1wX2VudHJ5LmMsdiAxLjE3NSAyMDE5LzEwLzEyIDE1OjU5OjA3IHRvbSBFeHAgJCIpCi0gCi0gI2RlZmluZSBESVNDQVJEKHN0cmluZykgc3RyaW5nID0gQUJTRU5UX1NUUklORwotICNkZWZpbmUgUFJJTlRGICh2b2lkKSBwcmludGYKLUBAIC0xMTM2LDcgKzExMzYsOCBAQCBmbXRfZW50cnkoVEVSTVRZUEUyICp0dGVybSwKLSAJCQkJKmQrKyA9ICdcXCc7Ci0gCQkJCSpkID0gJzonOwotIAkJCSAgICB9IGVsc2UgaWYgKCpkID09ICdcXCcpIHsKLS0JCQkJKisrZCA9ICpzKys7Ci0rCQkJCWlmICgoKisrZCA9ICpzKyspID09ICdcMCcpCi0rCQkJCSAgICBicmVhazsKLSAJCQkgICAgfQotIAkJCSAgICBkKys7Ci0gCQkJICAgICpkID0gJ1wwJzsKLUBAIC0xMzk2LDcgKzEzOTcsNyBAQCBvbmVfb25lX21hcHBpbmcoY29uc3QgY2hhciAqbWFwcGluZykKLSAKLSAgICAgaWYgKFZBTElEX1NUUklORyhtYXBwaW5nKSkgewotIAlpbnQgbiA9IDA7Ci0tCXdoaWxlIChtYXBwaW5nW25dICE9ICdcMCcpIHsKLSsJd2hpbGUgKG1hcHBpbmdbbl0gIT0gJ1wwJyAmJiBtYXBwaW5nW24gKyAxXSAhPSAnXDAnKSB7Ci0gCSAgICBpZiAoaXNMaW5lKG1hcHBpbmdbbl0pICYmCi0gCQltYXBwaW5nW25dICE9IG1hcHBpbmdbbiArIDFdKSB7Ci0gCQlyZXN1bHQgPSBGQUxTRTsKLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzLmluYwppbmRleCA1ZjJjYzM1Li40MTU2YmY0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlcy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXMuaW5jCkBAIC0yLDcgKzIsNyBAQAogREVTQ1JJUFRJT04gPSAiU1ZyNCBhbmQgWFNJLUN1cnNlcyBjb21wYXRpYmxlIGN1cnNlcyBsaWJyYXJ5IGFuZCB0ZXJtaW5mbyB0b29scyBpbmNsdWRpbmcgdGljLCBpbmZvY21wLCBjYXB0b2luZm8uIFN1cHBvcnRzIGNvbG9yLCBtdWx0aXBsZSBoaWdobGlnaHRzLCBmb3Jtcy1kcmF3aW5nIGNoYXJhY3RlcnMsIGFuZCBhdXRvbWF0aWMgcmVjb2duaXRpb24gb2Yga2V5cGFkIGFuZCBmdW5jdGlvbi1rZXkgc2VxdWVuY2VzLiBFeHRlbnNpb25zIGluY2x1ZGUgcmVzaXphYmxlIHdpbmRvd3MgYW5kIG1vdXNlIHN1cHBvcnQgb24gYm90aCB4dGVybSBhbmQgTGludXggY29uc29sZSB1c2luZyB0aGUgZ3BtIGxpYnJhcnkuIgogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL25jdXJzZXMvbmN1cnNlcy5odG1sIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9uY3Vyc2VzL2Jhc2UvdmVyc2lvbi5jO2JlZ2lubGluZT0xO2VuZGxpbmU9Mjc7bWQ1PWNiYzE4MGE4YzQ0Y2E2NDJlOTdjMzU0NTJmYWI1ZjY2IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbmN1cnNlcy9iYXNlL3ZlcnNpb24uYztiZWdpbmxpbmU9MTtlbmRsaW5lPTI3O21kNT01NTI2ZjJmM2EyOWVkYzk1NTM4YjM2OGE0NzcxZWRkYSIKIFNFQ1RJT04gPSAibGlicyIKIERFUEVORFMgPSAibmN1cnNlcy1uYXRpdmUiCiBERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICIiCkBAIC04Nyw2ICs4Nyw3IEBACiAJICAgICAgICAtLWRpc2FibGUtcnBhdGgtaGFjayBcCiAJCSR7RVhDT05GSUdfQVJHU30gXAogCSAgICAgICAgLS13aXRoLW1hbnBhZ2UtZm9ybWF0PW5vcm1hbCBcCisJICAgICAgICAtLXdpdGhvdXQtbWFucGFnZS1yZW5hbWVzIFwKIAkgICAgICAgIC0tZGlzYWJsZS1zdHJpcHBpbmcgXAogCSAgICAgICAgIiRAIiB8fCByZXR1cm4gMQogCWNkIC4uCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjErMjAxOTA4MDMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjErMjAxOTA4MDMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2MzhhMzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4xKzIwMTkwODAzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotcmVxdWlyZSBuY3Vyc2VzLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS10aWMtaGFuZy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jb25maWcuY2FjaGUgXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtbmN1cnNlcy1zZWxlY3RpdmUtYmFja3BvcnQtb2YtMjAxOTEwMTItcGF0Y2gucGF0Y2ggXAotIgotIyBjb21taXQgaWQgY29ycmVzcG9uZHMgdG8gdGhlIHJldmlzaW9uIGluIHBhY2thZ2UgdmVyc2lvbgotU1JDUkVWID0gIjNjOWIyNjc3Yzk2YzY0NTQ5Njk5NzMyMWJmMmZlNDY1YTVlN2UyMWYiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtYWJpLXZlcnNpb249NSAtLWNhY2hlLWZpbGU9JHtCfS9jb25maWcuY2FjaGUiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKyhcK1xkKykqKSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjNlNjg1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4yLmJiCkBAIC0wLDAgKzEsMTQgQEAKK3JlcXVpcmUgbmN1cnNlcy5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtdGljLWhhbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZy5jYWNoZSBcCisgICAgICAgICAgICIKKyMgY29tbWl0IGlkIGNvcnJlc3BvbmRzIHRvIHRoZSByZXZpc2lvbiBpbiBwYWNrYWdlIHZlcnNpb24KK1NSQ1JFViA9ICJhNjY5MDEzY2Q1ZTlkNjQzNGU1MzAxMzQ4ZWE1MWJhZjMwNmM5M2M0IgorUyA9ICIke1dPUktESVJ9L2dpdCIKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLWFiaS12ZXJzaW9uPTUgLS1jYWNoZS1maWxlPSR7Qn0vY29uZmlnLmNhY2hlIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSsoXCtcZCspKikiCisKKyMgVGhpcyBpcyBuZWVkZWQgd2hlbiB1c2luZyBwYXRjaGxldmVsIHZlcnNpb25zIGxpa2UgNi4xKzIwMTgxMDEzCisjQ1ZFX1ZFUlNJT04gPSAiJHtAZC5nZXRWYXIoIlBWIikuc3BsaXQoJysnKVswXX0uJHtAZC5nZXRWYXIoIlBWIikuc3BsaXQoJysnKVsxXX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ldGJhc2UvbmV0YmFzZS9uZXRiYXNlLWFkZC1ycGNiaW5kLWFzLWFuLWFsaWFzLXRvLXN1bnJwYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV0YmFzZS9uZXRiYXNlL25ldGJhc2UtYWRkLXJwY2JpbmQtYXMtYW4tYWxpYXMtdG8tc3VucnBjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyN2JhMmY2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV0YmFzZS9uZXRiYXNlL25ldGJhc2UtYWRkLXJwY2JpbmQtYXMtYW4tYWxpYXMtdG8tc3VucnBjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSA1MmQ0NmM0ZDFmYmQ0Yzg4ZDY5YzJmY2Y3ODM3YjJmMmJhN2VmNmYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLURhdGU6IFRodSwgMTIgSmFuIDIwMTcgMTY6NTA6NTggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gbmV0YmFzZTogYWRkIHJwY2JpbmQgYXMgYW4gYWxpYXMgdG8gc3VucnBjCi0KLXRoZSBwYXRjaCBjb21lcyBmcm9tOgotaHR0cHM6Ly9idWdzLmFyY2hsaW51eC5vcmcvdGFzay8yMDI3MwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTGkgV2FuZyA8bGkud2FuZ0B3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0KLS0tLQotIGV0Yy1ycGMgICAgICB8IDIgKy0KLSBldGMtc2VydmljZXMgfCA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2V0Yy1ycGMgYi9ldGMtcnBjCi1pbmRleCAxYjMwNjI1Li45YTlhODFhIDEwMDY0NAotLS0tIGEvZXRjLXJwYwotKysrIGIvZXRjLXJwYwotQEAgLTEsNyArMSw3IEBACi0gIyBUaGlzIGZpbGUgY29udGFpbnMgdXNlciByZWFkYWJsZSBuYW1lcyB0aGF0IGNhbiBiZSB1c2VkIGluIHBsYWNlIG9mIHJwYwotICMgcHJvZ3JhbSBudW1iZXJzLgotIAotLXBvcnRtYXBwZXIJMTAwMDAwCXBvcnRtYXAgc3VucnBjCi0rcG9ydG1hcHBlcgkxMDAwMDAJcG9ydG1hcCBzdW5ycGMgcnBjYmluZAotIHJzdGF0ZAkJMTAwMDAxCXJzdGF0IHJzdGF0X3N2YyBydXAgcGVyZm1ldGVyCi0gcnVzZXJzZAkJMTAwMDAyCXJ1c2VycwotIG5mcwkJMTAwMDAzCW5mc3Byb2cKLWRpZmYgLS1naXQgYS9ldGMtc2VydmljZXMgYi9ldGMtc2VydmljZXMKLWluZGV4IGZhN2FlMjQuLjEwYmEyYmMgMTAwNjQ0Ci0tLS0gYS9ldGMtc2VydmljZXMKLSsrKyBiL2V0Yy1zZXJ2aWNlcwotQEAgLTUxLDggKzUxLDggQEAga2VyYmVyb3MJODgvdWRwCQlrZXJiZXJvczUga3JiNSBrZXJiZXJvcy1zZWMJIyBLZXJiZXJvcyB2NQotIGlzby10c2FwCTEwMi90Y3AJCXRzYXAJCSMgcGFydCBvZiBJU09ERQotIGFjci1uZW1hCTEwNC90Y3AJCWRpY29tCQkjIERpZ2l0YWwgSW1hZy4gJiBDb21tLiAzMDAKLSBwb3AzCQkxMTAvdGNwCQlwb3AtMwkJIyBQT1AgdmVyc2lvbiAzCi0tc3VucnBjCQkxMTEvdGNwCQlwb3J0bWFwcGVyCSMgUlBDIDQuMCBwb3J0bWFwcGVyCi0tc3VucnBjCQkxMTEvdWRwCQlwb3J0bWFwcGVyCi0rc3VucnBjCQkxMTEvdGNwCQlwb3J0bWFwcGVyIHJwY2JpbmQgIyBSUEMgNC4wIHBvcnRtYXBwZXIKLStzdW5ycGMJCTExMS91ZHAJCXBvcnRtYXBwZXIgcnBjYmluZAotIGF1dGgJCTExMy90Y3AJCWF1dGhlbnRpY2F0aW9uIHRhcCBpZGVudAotIHNmdHAJCTExNS90Y3AKLSBubnRwCQkxMTkvdGNwCQlyZWFkbmV3cyB1bnRwCSMgVVNFTkVUIE5ld3MgVHJhbnNmZXIgUHJvdG9jb2wKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV0YmFzZS9uZXRiYXNlXzUuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV0YmFzZS9uZXRiYXNlXzUuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFhNDk3MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ldGJhc2UvbmV0YmFzZV81LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIkJhc2ljIFRDUC9JUCBuZXR3b3JraW5nIHN1cHBvcnQiCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBpbmZyYXN0cnVjdHVyZSBmb3IgYmFzaWMgVENQL0lQIGJhc2VkIG5ldHdvcmtpbmciCi1IT01FUEFHRSA9ICJodHRwOi8vcGFja2FnZXMuZGViaWFuLm9yZy9uZXRiYXNlIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PTNkZDYxOTJkMzA2ZjU4MmRlZTc2ODdkYTNkODc0OGFiIgotUEUgPSAiMSIKLQotU1JDX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vbi8ke0JQTn0vJHtCUE59XyR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9uZXRiYXNlLWFkZC1ycGNiaW5kLWFzLWFuLWFsaWFzLXRvLXN1bnJwYy5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdhZDE1NjI3MmM1YTQyZjQ5YzczMzg2ZmYzOWM4NjI0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVkOTNhMDk5ZGViMjg4NjliNzMwNmU5MTQ3MDBmYWZiZDI5M2I1NWJkYjVkZjA1YTVhYTZlZmZkMGFmNTkzMGMiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vbi9uZXRiYXNlLyIKLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfS8ke21hbmRpcn0vbWFuOCAke0R9JHtzeXNjb25mZGlyfQotCWluc3RhbGwgLW0gMDY0NCBldGMtcnBjICR7RH0ke3N5c2NvbmZkaXJ9L3JwYwotCWluc3RhbGwgLW0gMDY0NCBldGMtcHJvdG9jb2xzICR7RH0ke3N5c2NvbmZkaXJ9L3Byb3RvY29scwotCWluc3RhbGwgLW0gMDY0NCBldGMtc2VydmljZXMgJHtEfSR7c3lzY29uZmRpcn0vc2VydmljZXMKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV0YmFzZS9uZXRiYXNlXzYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV0YmFzZS9uZXRiYXNlXzYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzAwNDljCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXRiYXNlL25ldGJhc2VfNi4xLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiQmFzaWMgVENQL0lQIG5ldHdvcmtpbmcgc3VwcG9ydCIKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgbmVjZXNzYXJ5IGluZnJhc3RydWN0dXJlIGZvciBiYXNpYyBUQ1AvSVAgYmFzZWQgbmV0d29ya2luZyIKK0hPTUVQQUdFID0gImh0dHA6Ly9wYWNrYWdlcy5kZWJpYW4ub3JnL25ldGJhc2UiCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9M2RkNjE5MmQzMDZmNTgyZGVlNzY4N2RhM2Q4NzQ4YWIiCitQRSA9ICIxIgorCitTUkNfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9uLyR7QlBOfS8ke0JQTn1fJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTU4NzFhM2E1YzgzOTA1NTdiODAzM2NmMTkzMTZhNTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDg0ZDc0M2JkODRkNGQ5MzgwYmFjNGM3MWM1MWU1NzQwNmRjZTQ0ZjVhNjkyODliYjgyM2M5MDNlOWIwMzVkOCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9uL25ldGJhc2UvIgorZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9LyR7bWFuZGlyfS9tYW44ICR7RH0ke3N5c2NvbmZkaXJ9CisJaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXRjL3JwYyAke0R9JHtzeXNjb25mZGlyfS9ycGMKKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9ldGMvcHJvdG9jb2xzICR7RH0ke3N5c2NvbmZkaXJ9L3Byb3RvY29scworCWluc3RhbGwgLW0gMDY0NCAke1N9L2V0Yy9zZXJ2aWNlcyAke0R9JHtzeXNjb25mZGlyfS9zZXJ2aWNlcworfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbGliZ2xvc3NfMy4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9saWJnbG9zc18zLjMuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbGliZ2xvc3NfMy4xLjAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL2xpYmdsb3NzXzMuMy4wLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9uZXdsaWIuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbmV3bGliLmluYwppbmRleCAyZjA1NTNiLi45NmUyMzBmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9uZXdsaWIuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL25ld2xpYi5pbmMKQEAgLTMsMjEgKzMsMjAgQEAKIERFU0NSSVBUSU9OID0gIkMgbGlicmFyeSBpbnRlbmRlZCBmb3IgdXNlIG9uIGVtYmVkZGVkIHN5c3RlbXMuIEl0IGlzIGEgY29uZ2xvbWVyYXRpb24gb2Ygc2V2ZXJhbCBsaWJyYXJ5IHBhcnRzLCBhbGwgdW5kZXIgZnJlZSBzb2Z0d2FyZSBsaWNlbnNlcyB0aGF0IG1ha2UgdGhlbSBlYXNpbHkgdXNhYmxlIG9uIGVtYmVkZGVkIHByb2R1Y3RzLiIKIFNFQ1RJT04gPSAibGlicyIKIAotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MyAmIEdQTHYzICYgTEdQTHYyICYgQlNELTItQ2xhdXNlIgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MyAmIEdQTHYzICYgTEdQTHYyICYgQlNELTItQ2xhdXNlICYgdGNsIgogTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAogCQlmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAogCQlmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCiAJCWZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotCQlmaWxlOi8vQ09QWUlORy5MSUJHTE9TUzttZDU9NzNmNWM5ODc3OWFlYTdkYmE0YTZjOTRhNzRhYjBhZTIgXAorCQlmaWxlOi8vQ09QWUlORy5MSUJHTE9TUzttZDU9NTRiNzc4ZDU4NTQ0M2NkN2ZiZmExYjQ3Y2JkNjNhODkgXAogCQlmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKLQkJZmlsZTovL0NPUFlJTkcuTkVXTElCO21kNT0xMDBkNDcwYWY1NGUyZDFkNzlmYmQ4NDk4YTMyZmYyNiBcCisJCWZpbGU6Ly9DT1BZSU5HLk5FV0xJQjttZDU9YWMxN2M2ODc1MWFhZDdhNTI5OGNlM2YyNDkxMjEwNzAgXAogCQlmaWxlOi8vbmV3bGliL2xpYmMvcG9zaXgvQ09QWVJJR0hUO21kNT0xMDM0NjhmZjE5ODJiZTg0MGZkZjRlZTlmOGI1MWJiZiBcCiAJCWZpbGU6Ly9uZXdsaWIvbGliYy9zeXMvbGludXgvbGludXh0aHJlYWRzL0xJQ0VOU0U7bWQ1PTczNjQwMjA3ZmJjNzliMTk4YzdmZmQ0YWQ0ZDk3YWEwIFwKIAkJIgogCiBTUkNfVVJJID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvcHViL25ld2xpYi9uZXdsaWItJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImY4NDI2M2I3ZDUyNGRmOTJhOWM5ZmIzMGI3OWUwMTM0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZiNGZhMWNjMjFlOTA2MDcxOTIwODMwMGE2MTQyMGU0MDg5ZDZkZTZlZjU5Y2Y1MzNiNTdmZTc0ODAxZDEwMmEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNThkZDllM2VhZWRmNTE5MzYwZDkyZDg0MjA1YzNkZWVmMGIzZmMyODY2ODVkMWM1NjJlMjQ1OTE0ZWY3MmM2NiIKIAogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKIERFUEVORFMgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjIgpAQCAtNDIsNiArNDEsNyBAQAogCQktLXdpdGgtZ251LWFzIFwKIAkJLS13aXRoLWdudS1sZCBcCiAJCS0tZGlzYWJsZS1tdWx0aWxpYiBcCisJCS0tZGlzYWJsZS1uZXdsaWItc3VwcGxpZWQtc3lzY2FsbHMgXAogCQkiCiAKIGRvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdID0gIiR7Qn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9uZXdsaWJfMy4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9uZXdsaWJfMy4zLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL25ld2xpYl8zLjEuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbmV3bGliXzMuMy4wLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAxLW92bWYtdXBkYXRlLXBhdGgtdG8tbmF0aXZlLUJhc2VUb29scy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDEtb3ZtZi11cGRhdGUtcGF0aC10by1uYXRpdmUtQmFzZVRvb2xzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlY2IyM2IKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAxLW92bWYtdXBkYXRlLXBhdGgtdG8tbmF0aXZlLUJhc2VUb29scy5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDBhODM2MmNmYjlmMDA4NzBkNzA2ODc0NzU2NjViMTMxZGQ4MmM5NDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNhcmRvIE5lcmkgPHJpY2FyZG8ubmVyaS1jYWxkZXJvbkBsaW51eC5pbnRlbC5jb20+CitEYXRlOiBUaHUsIDkgSnVuIDIwMTYgMDI6MjM6MDEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzVdIG92bWY6IHVwZGF0ZSBwYXRoIHRvIG5hdGl2ZSBCYXNlVG9vbHMKKworQmFzZVRvb2xzIGlzIGEgc2V0IG9mIHV0aWxpdGllcyB0byBidWlsZCBFREstYmFzZWQgZmlybXdhcmUuIFRoZXNlIHV0aWxpdGllcworYXJlIHVzZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLiBUaHVzLCB0aGV5IG5lZWQgdG8gYmUgYnVpbHQgbmF0aXZlbHkuCitXaGVuIGNyb3NzLWNvbXBpbGluZywgd2UgbmVlZCB0byBwcm92aWRlIGEgcGF0aCB0byB0aGUgbG9jYXRpb24gb2YgdGhlc2UKK3Rvb2xzLiBUaGUgQkJBS0VfRURLX1RPT0xTX1BBVEggc3RyaW5nIGlzIHVzZWQgYXMgYSBwYXR0ZXJuIHRvIGJlIHJlcGxhY2VkCit3aXRoIHRoZSBhcHByb3ByaWF0ZSBsb2NhdGlvbiBiZWZvcmUgYnVpbGRpbmcuCisKK1NpZ25lZC1vZmYtYnk6IFJpY2FyZG8gTmVyaSA8cmljYXJkby5uZXJpLWNhbGRlcm9uQGxpbnV4LmludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCistLS0KKyBPdm1mUGtnL2J1aWxkLnNoIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9idWlsZC5zaCBiL092bWZQa2cvYnVpbGQuc2gKK2luZGV4IDkxYjE0NDJhZGUuLjE4NThkYWUzMWEgMTAwNzU1CistLS0gYS9Pdm1mUGtnL2J1aWxkLnNoCisrKysgYi9Pdm1mUGtnL2J1aWxkLnNoCitAQCAtMjQsNyArMjQsNyBAQCB0aGVuCisgIyB0aGlzIGFzc3VtZXMgc3ZuIHB1bGxzIGhhdmUgdGhlIHNhbWUgcm9vdCBkaXIKKyAjICBleHBvcnQgRURLX1RPT0xTX1BBVEg9YHB3ZGAvLi4vQmFzZVRvb2xzCisgIyBUaGlzIHZlcnNpb24gaXMgZm9yIHRoZSB0b29scyBzb3VyY2UgaW4gZWRrMgorLSAgZXhwb3J0IEVES19UT09MU19QQVRIPWBwd2RgL0Jhc2VUb29scworKyAgZXhwb3J0IEVES19UT09MU19QQVRIPUJCQUtFX0VES19UT09MU19QQVRIL0Jhc2VUb29scworICAgZWNobyAkRURLX1RPT0xTX1BBVEgKKyAgIHNvdXJjZSBlZGtzZXR1cC5zaCBCYXNlVG9vbHMKKyBlbHNlCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAyLUJhc2VUb29scy1tYWtlZmlsZS1hZGp1c3QtdG8tYnVpbGQtaW4tdW5kZXItYml0YmFrZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDItQmFzZVRvb2xzLW1ha2VmaWxlLWFkanVzdC10by1idWlsZC1pbi11bmRlci1iaXRiYWtlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzN2VkMDEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAyLUJhc2VUb29scy1tYWtlZmlsZS1hZGp1c3QtdG8tYnVpbGQtaW4tdW5kZXItYml0YmFrZS5wYXRjaApAQCAtMCwwICsxLDUxIEBACitGcm9tIGE4YmNlYWVjMWIxNmZmZmJmNjgxMGRmMDU1MDNkOGFlOTA5MmI3MzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNhcmRvIE5lcmkgPHJpY2FyZG8ubmVyaS1jYWxkZXJvbkBsaW51eC5pbnRlbC5jb20+CitEYXRlOiBGcmksIDI2IEp1bCAyMDE5IDE3OjM0OjI2IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMi81XSBCYXNlVG9vbHM6IG1ha2VmaWxlOiBhZGp1c3QgdG8gYnVpbGQgaW4gdW5kZXIgYml0YmFrZQorCitQcmVwZW5kIHRoZSBidWlsZCBmbGFncyB3aXRoIHRob3NlIG9mIGJpdGJha2UuIFRoaXMgaXMgdG8gYnVpbGQKK3VzaW5nIHRoZSBiaXRiYWtlIG5hdGl2ZSBzeXNyb290IGluY2x1ZGUgYW5kIGxpYnJhcnkgZGlyZWN0b3JpZXMuCisKK1NpZ25lZC1vZmYtYnk6IFJpY2FyZG8gTmVyaSA8cmljYXJkby5uZXJpQGxpbnV4LmludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCistLS0KKyBCYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZSB8IDEwICsrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlcy9oZWFkZXIubWFrZWZpbGUgYi9CYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZQoraW5kZXggNGU5YjM2ZDk4Yi4uZWIwM2VlMzNmYSAxMDA2NDQKKy0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9NYWtlZmlsZXMvaGVhZGVyLm1ha2VmaWxlCisrKysgYi9CYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZQorQEAgLTYyLDIzICs2MiwyMyBAQCAkKGVycm9yIEJhZCBIT1NUX0FSQ0gpCisgZW5kaWYNCisgDQorIElOQ0xVREUgPSAkKFRPT0xfSU5DTFVERSkgLUkgJChNQUtFUk9PVCkgLUkgJChNQUtFUk9PVCkvSW5jbHVkZS9Db21tb24gLUkgJChNQUtFUk9PVCkvSW5jbHVkZS8gLUkgJChNQUtFUk9PVCkvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkIC1JICQoTUFLRVJPT1QpL0NvbW1vbi8gLUkgLi4gLUkgLiAkKEFSQ0hfSU5DTFVERSkNCistQlVJTERfQ1BQRkxBR1MgPSAkKElOQ0xVREUpDQorK0JVSUxEX0NQUEZMQUdTICs9ICQoSU5DTFVERSkNCisgDQorICMga2VlcCBFWFRSQV9PUFRGTEFHUyBsYXN0DQorIEJVSUxEX09QVEZMQUdTID0gLU8yICQoRVhUUkFfT1BURkxBR1MpDQorIA0KKyBpZmVxICgkKERBUldJTiksRGFyd2luKQ0KKyAjIGFzc3VtZSBjbGFuZyBvciBjbGFuZyBjb21wYXRpYmxlIGZsYWdzIG9uIE9TIFgNCistQlVJTERfQ0ZMQUdTID0gLU1EIC1mc2hvcnQtd2NoYXIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciBcDQorK0JVSUxEX0NGTEFHUyArPSAtTUQgLWZzaG9ydC13Y2hhciAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV2Vycm9yIFwNCisgLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyAtV25vLXNlbGYtYXNzaWduIC1Xbm8tdW51c2VkLXJlc3VsdCAtbm9zdGRsaWIgLWcNCisgZWxzZQ0KKy1CVUlMRF9DRkxBR1MgPSAtTUQgLWZzaG9ydC13Y2hhciAtZm5vLXN0cmljdC1hbGlhc2luZyAtZndyYXB2IFwNCisrQlVJTERfQ0ZMQUdTICs9IC1NRCAtZnNob3J0LXdjaGFyIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1md3JhcHYgXA0KKyAtZm5vLWRlbGV0ZS1udWxsLXBvaW50ZXItY2hlY2tzIC1XYWxsIC1XZXJyb3IgXA0KKyAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIC1Xbm8tc3RyaW5nb3AtdHJ1bmNhdGlvbiAtV25vLXJlc3RyaWN0IFwNCisgLVduby11bnVzZWQtcmVzdWx0IC1ub3N0ZGxpYiAtZw0KKyBlbmRpZg0KKy1CVUlMRF9MRkxBR1MgPQ0KKy1CVUlMRF9DWFhGTEFHUyA9IC1Xbm8tdW51c2VkLXJlc3VsdA0KKytCVUlMRF9MRkxBR1MgPSAkKExERkxBR1MpDQorK0JVSUxEX0NYWEZMQUdTICs9IC1Xbm8tdW51c2VkLXJlc3VsdA0KKyANCisgaWZlcSAoJChIT1NUX0FSQ0gpLCBJQTMyKQ0KKyAjDQorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMi1vdm1mLXVwZGF0ZS1wYXRoLXRvLW5hdGl2ZS1CYXNlVG9vbHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAyLW92bWYtdXBkYXRlLXBhdGgtdG8tbmF0aXZlLUJhc2VUb29scy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRhZTVkNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAyLW92bWYtdXBkYXRlLXBhdGgtdG8tbmF0aXZlLUJhc2VUb29scy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gOWU2MzJlM2Y5ZWRkMDk2MzJjYzg3N2RmZjZlYTU3NjA4Zjk3OWFhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJpY2FyZG8gTmVyaSA8cmljYXJkby5uZXJpLWNhbGRlcm9uQGxpbnV4LmludGVsLmNvbT4KLURhdGU6IFRodSwgOSBKdW4gMjAxNiAwMjoyMzowMSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBvdm1mOiB1cGRhdGUgcGF0aCB0byBuYXRpdmUgQmFzZVRvb2xzCi0KLUJhc2VUb29scyBpcyBhIHNldCBvZiB1dGlsaXRpZXMgdG8gYnVpbGQgRURLLWJhc2VkIGZpcm13YXJlLiBUaGVzZSB1dGlsaXRpZXMKLWFyZSB1c2VkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4gVGh1cywgdGhleSBuZWVkIHRvIGJlIGJ1aWx0IG5hdGl2ZWx5LgotV2hlbiBjcm9zcy1jb21waWxpbmcsIHdlIG5lZWQgdG8gcHJvdmlkZSBhIHBhdGggdG8gdGhlIGxvY2F0aW9uIG9mIHRoZXNlCi10b29scy4gVGhlIEJCQUtFX0VES19UT09MU19QQVRIIHN0cmluZyBpcyB1c2VkIGFzIGEgcGF0dGVybiB0byBiZSByZXBsYWNlZAotd2l0aCB0aGUgYXBwcm9wcmlhdGUgbG9jYXRpb24gYmVmb3JlIGJ1aWxkaW5nLgotCi1TaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIE5lcmkgPHJpY2FyZG8ubmVyaS1jYWxkZXJvbkBsaW51eC5pbnRlbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIE92bWZQa2cvYnVpbGQuc2ggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9Pdm1mUGtnL2J1aWxkLnNoIGIvT3ZtZlBrZy9idWlsZC5zaAotaW5kZXggZWI1ZWI3My4uOTA1OGZjYSAxMDA3NTUKLS0tLSBhL092bWZQa2cvYnVpbGQuc2gKLSsrKyBiL092bWZQa2cvYnVpbGQuc2gKLUBAIC0zMCw3ICszMCw3IEBAIHRoZW4KLSAjIHRoaXMgYXNzdW1lcyBzdm4gcHVsbHMgaGF2ZSB0aGUgc2FtZSByb290IGRpcgotICMgIGV4cG9ydCBFREtfVE9PTFNfUEFUSD1gcHdkYC8uLi9CYXNlVG9vbHMKLSAjIFRoaXMgdmVyc2lvbiBpcyBmb3IgdGhlIHRvb2xzIHNvdXJjZSBpbiBlZGsyCi0tICBleHBvcnQgRURLX1RPT0xTX1BBVEg9YHB3ZGAvQmFzZVRvb2xzCi0rICBleHBvcnQgRURLX1RPT0xTX1BBVEg9QkJBS0VfRURLX1RPT0xTX1BBVEgvQmFzZVRvb2xzCi0gICBlY2hvICRFREtfVE9PTFNfUEFUSAotICAgc291cmNlIGVka3NldHVwLnNoIEJhc2VUb29scwotIGVsc2UKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMy1CYXNlVG9vbHMtbWFrZWZpbGUtYWRqdXN0LXRvLWJ1aWxkLWluLXVuZGVyLWJpdGJha2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAzLUJhc2VUb29scy1tYWtlZmlsZS1hZGp1c3QtdG8tYnVpbGQtaW4tdW5kZXItYml0YmFrZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDcwYjBhYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAzLUJhc2VUb29scy1tYWtlZmlsZS1hZGp1c3QtdG8tYnVpbGQtaW4tdW5kZXItYml0YmFrZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gMjMyMDY1MGM2ZDM4MWI5MTRmZTkxYjJkZWRhYTU4NzAyNzlhOGJjZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJpY2FyZG8gTmVyaSA8cmljYXJkby5uZXJpLWNhbGRlcm9uQGxpbnV4LmludGVsLmNvbT4KLURhdGU6IEZyaSwgMjYgSnVsIDIwMTkgMTc6MzQ6MjYgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gQmFzZVRvb2xzOiBtYWtlZmlsZTogYWRqdXN0IHRvIGJ1aWxkIGluIHVuZGVyIGJpdGJha2UKLQotUHJlcGVuZCB0aGUgYnVpbGQgZmxhZ3Mgd2l0aCB0aG9zZSBvZiBiaXRiYWtlLiBUaGlzIGlzIHRvIGJ1aWxkCi11c2luZyB0aGUgYml0YmFrZSBuYXRpdmUgc3lzcm9vdCBpbmNsdWRlIGFuZCBsaWJyYXJ5IGRpcmVjdG9yaWVzLgotCi1TaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIE5lcmkgPHJpY2FyZG8ubmVyaUBsaW51eC5pbnRlbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIEJhc2VUb29scy9Tb3VyY2UvQy9NYWtlZmlsZXMvaGVhZGVyLm1ha2VmaWxlIHwgMTAgKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlcy9oZWFkZXIubWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9CYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZQotKysrIGdpdC9CYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZQotQEAgLTYyLDIzICs2MiwyMyBAQCAkKGVycm9yIEJhZCBIT1NUX0FSQ0gpCi0gZW5kaWYNCi0gDQotIElOQ0xVREUgPSAkKFRPT0xfSU5DTFVERSkgLUkgJChNQUtFUk9PVCkgLUkgJChNQUtFUk9PVCkvSW5jbHVkZS9Db21tb24gLUkgJChNQUtFUk9PVCkvSW5jbHVkZS8gLUkgJChNQUtFUk9PVCkvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkIC1JICQoTUFLRVJPT1QpL0NvbW1vbi8gLUkgLi4gLUkgLiAkKEFSQ0hfSU5DTFVERSkgDQotLUJVSUxEX0NQUEZMQUdTID0gJChJTkNMVURFKQ0KLStCVUlMRF9DUFBGTEFHUyArPSAkKElOQ0xVREUpDQotIA0KLSAjIGtlZXAgRVhUUkFfT1BURkxBR1MgbGFzdA0KLSBCVUlMRF9PUFRGTEFHUyA9IC1PMiAkKEVYVFJBX09QVEZMQUdTKQ0KLSANCi0gaWZlcSAoJChEQVJXSU4pLERhcndpbikNCi0gIyBhc3N1bWUgY2xhbmcgb3IgY2xhbmcgY29tcGF0aWJsZSBmbGFncyBvbiBPUyBYDQotLUJVSUxEX0NGTEFHUyA9IC1NRCAtZnNob3J0LXdjaGFyIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1XZXJyb3IgXA0KLStCVUlMRF9DRkxBR1MgKz0gLU1EIC1mc2hvcnQtd2NoYXIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciBcDQotIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgLVduby1zZWxmLWFzc2lnbiAtV25vLXVudXNlZC1yZXN1bHQgLW5vc3RkbGliIC1nDQotIGVsc2UNCi0tQlVJTERfQ0ZMQUdTID0gLU1EIC1mc2hvcnQtd2NoYXIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZ3cmFwdiBcDQotK0JVSUxEX0NGTEFHUyArPSAtTUQgLWZzaG9ydC13Y2hhciAtZm5vLXN0cmljdC1hbGlhc2luZyAtZndyYXB2IFwNCi0gLWZuby1kZWxldGUtbnVsbC1wb2ludGVyLWNoZWNrcyAtV2FsbCAtV2Vycm9yIFwNCi0gLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyAtV25vLXN0cmluZ29wLXRydW5jYXRpb24gLVduby1yZXN0cmljdCBcDQotIC1Xbm8tdW51c2VkLXJlc3VsdCAtbm9zdGRsaWIgLWcNCi0gZW5kaWYNCi0tQlVJTERfTEZMQUdTID0NCi0tQlVJTERfQ1hYRkxBR1MgPSAtV25vLXVudXNlZC1yZXN1bHQNCi0rQlVJTERfTEZMQUdTID0gJChMREZMQUdTKQ0KLStCVUlMRF9DWFhGTEFHUyArPSAtV25vLXVudXNlZC1yZXN1bHQNCi0gDQotIGlmZXEgKCQoSE9TVF9BUkNIKSwgSUEzMikNCi0gIw0KLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDMtb3ZtZi1lbmFibGUtbG9uZy1wYXRoLWZpbGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAzLW92bWYtZW5hYmxlLWxvbmctcGF0aC1maWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiMWU3ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAzLW92bWYtZW5hYmxlLWxvbmctcGF0aC1maWxlLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gNjBhNWY5NTNmNzQ3ZTFlOWUwNWE0MDE1N2I2NTFjYmE4ZWE1N2I5MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDExIFNlcCAyMDE3IDAyOjIxOjU1IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMy81XSBvdm1mOiBlbmFibGUgbG9uZyBwYXRoIGZpbGUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorCistLS0KKyBCYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIuaCBiL0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vQ29tbW9uTGliLmgKK2luZGV4IGUxY2NlOTg1ZjcuLmQ2N2QwM2M3MGMgMTAwNjQ0CistLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5oCisrKysgYi9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5oCitAQCAtMTQsNyArMTQsNyBAQCBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudAorICNpbmNsdWRlIDxhc3NlcnQuaD4NCisgI2RlZmluZSBQUklOVEVEX0dVSURfQlVGRkVSX1NJWkUgIDM3ICAvLyBpbmNsdWRpbmcgbnVsbC10ZXJtaW5hdGlvbg0KKyANCistI2RlZmluZSBNQVhfTE9OR19GSUxFX1BBVEggNTAwDQorKyNkZWZpbmUgTUFYX0xPTkdfRklMRV9QQVRIIDEwMjMNCisgDQorICNkZWZpbmUgTUFYX1VJTlQ2NCAoKFVJTlQ2NCkweEZGRkZGRkZGRkZGRkZGRkZVTEwpDQorICNkZWZpbmUgTUFYX1VJTlQzMiAoKFVJTlQzMikweEZGRkZGRkZGKQ0KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDQtb3ZtZi1VcGRhdGUtdG8tbGF0ZXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwNC1vdm1mLVVwZGF0ZS10by1sYXRlc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzEwYTM5ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDQtb3ZtZi1VcGRhdGUtdG8tbGF0ZXN0LnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gOTRlZmYzMTZiMzFiNGQwMzQ4YWYyOGM3N2JlNWMwMGJjMDlmZThlNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN0ZXZlIExhbmdhc2VrIDxzdGV2ZS5sYW5nYXNla0B1YnVudHUuY29tPgorRGF0ZTogU2F0LCAxMCBKdW4gMjAxNyAwMTozOTozNiAtMDcwMAorU3ViamVjdDogW1BBVENIIDQvNV0gb3ZtZjogVXBkYXRlIHRvIGxhdGVzdAorCitEZXNjcmlwdGlvbjogcGFzcyAtZm5vLXN0YWNrLXByb3RlY3RvciB0byBhbGwgR0NDIHRvb2xjaGFpbnMKKyBUaGUgdXBzdHJlYW0gYnVpbGQgcnVsZXMgaW5leHBsaWNhYmx5IHBhc3MgLWZuby1zdGFjay1wcm90ZWN0b3Igb25seQorIHdoZW4gYnVpbGRpbmcgZm9yIGkzODYgYW5kIGFtZDY0LiAgQWRkIHRoaXMgZXNzZW50aWFsIGFyZ3VtZW50IHRvIHRoZQorIGdlbmVyaWMgcnVsZXMgZm9yIGdjYyA0LjQgYW5kIGxhdGVyLgorTGFzdC1VcGRhdGVkOiAyMDE2LTA0LTEyCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworLS0tCisgQmFzZVRvb2xzL0NvbmYvdG9vbHNfZGVmLnRlbXBsYXRlIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9CYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUgYi9CYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUKK2luZGV4IGNhMGIxMjJkYmIuLmIwMDY2YzJhYjggMTAwNzU1CistLS0gYS9CYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUKKysrKyBiL0Jhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZQorQEAgLTE5NDEsMTAgKzE5NDEsMTAgQEAgREVGSU5FIEdDQ19YNjRfUkNfRkxBR1MgICAgICAgICAgICA9IC1JIGJpbmFyeSAtTyBlbGY2NC14ODYtNjQgICAgICAgIC1CIGkzODYKKyBERUZJTkUgR0NDX0FSTV9SQ19GTEFHUyAgICAgICAgICAgID0gLUkgYmluYXJ5IC1PIGVsZjMyLWxpdHRsZWFybSAgICAgLUIgYXJtICAgICAtLXJlbmFtZS1zZWN0aW9uIC5kYXRhPS5oaWkNCisgREVGSU5FIEdDQ19BQVJDSDY0X1JDX0ZMQUdTICAgICAgICA9IC1JIGJpbmFyeSAtTyBlbGY2NC1saXR0bGVhYXJjaDY0IC1CIGFhcmNoNjQgLS1yZW5hbWUtc2VjdGlvbiAuZGF0YT0uaGlpDQorIA0KKy1ERUZJTkUgR0NDNDhfQUxMX0NDX0ZMQUdTICAgICAgICAgICAgPSAtZyAtZnNob3J0LXdjaGFyIC1mbm8tYnVpbHRpbiAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV2Vycm9yIC1Xbm8tYXJyYXktYm91bmRzIC1mZnVuY3Rpb24tc2VjdGlvbnMgLWZkYXRhLXNlY3Rpb25zIC1pbmNsdWRlIEF1dG9HZW4uaCAtZm5vLWNvbW1vbiAtRFNUUklOR19BUlJBWV9OQU1FPSQoQkFTRV9OQU1FKVN0cmluZ3MNCisrREVGSU5FIEdDQzQ4X0FMTF9DQ19GTEFHUyAgICAgICAgICAgID0gLWcgLWZzaG9ydC13Y2hhciAtZm5vLWJ1aWx0aW4gLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciAtV25vLWFycmF5LWJvdW5kcyAtZmZ1bmN0aW9uLXNlY3Rpb25zIC1mZGF0YS1zZWN0aW9ucyAtZm5vLXN0YWNrLXByb3RlY3RvciAtaW5jbHVkZSBBdXRvR2VuLmggLWZuby1jb21tb24gLURTVFJJTkdfQVJSQVlfTkFNRT0kKEJBU0VfTkFNRSlTdHJpbmdzDQorIERFRklORSBHQ0M0OF9JQTMyX1g2NF9ETElOS19DT01NT04gICA9IC1ub3N0ZGxpYiAtV2wsLW4sLXEsLS1nYy1zZWN0aW9ucyAteiBjb21tb24tcGFnZS1zaXplPTB4MjANCistREVGSU5FIEdDQzQ4X0lBMzJfQ0NfRkxBR1MgICAgICAgICAgID0gREVGKEdDQzQ4X0FMTF9DQ19GTEFHUykgLW0zMiAtbWFyY2g9aTU4NiAtbWFsaWduLWRvdWJsZSAtZm5vLXN0YWNrLXByb3RlY3RvciAtRCBFRkkzMiAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIC1Xbm8tYWRkcmVzcw0KKy1ERUZJTkUgR0NDNDhfWDY0X0NDX0ZMQUdTICAgICAgICAgICAgPSBERUYoR0NDNDhfQUxMX0NDX0ZMQUdTKSAtbTY0IC1mbm8tc3RhY2stcHJvdGVjdG9yICItREVGSUFQST1fX2F0dHJpYnV0ZV9fKChtc19hYmkpKSIgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSAtV25vLWFkZHJlc3MgLW1jbW9kZWw9c21hbGwgLWZwaWUgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyAtV25vLWFkZHJlc3MNCisrREVGSU5FIEdDQzQ4X0lBMzJfQ0NfRkxBR1MgICAgICAgICAgID0gREVGKEdDQzQ4X0FMTF9DQ19GTEFHUykgLW0zMiAtbWFyY2g9aTU4NiAtbWFsaWduLWRvdWJsZSAtRCBFRkkzMiAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIC1Xbm8tYWRkcmVzcw0KKytERUZJTkUgR0NDNDhfWDY0X0NDX0ZMQUdTICAgICAgICAgICAgPSBERUYoR0NDNDhfQUxMX0NDX0ZMQUdTKSAtbTY0ICItREVGSUFQST1fX2F0dHJpYnV0ZV9fKChtc19hYmkpKSIgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSAtV25vLWFkZHJlc3MgLW1jbW9kZWw9c21hbGwgLWZwaWUgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyAtV25vLWFkZHJlc3MNCisgREVGSU5FIEdDQzQ4X0lBMzJfWDY0X0FTTERMSU5LX0ZMQUdTID0gREVGKEdDQzQ4X0lBMzJfWDY0X0RMSU5LX0NPTU1PTikgLVdsLC0tZW50cnksUmVmZXJlbmNlQWNwaVRhYmxlIC11IFJlZmVyZW5jZUFjcGlUYWJsZQ0KKyBERUZJTkUgR0NDNDhfSUEzMl9YNjRfRExJTktfRkxBR1MgICAgPSBERUYoR0NDNDhfSUEzMl9YNjRfRExJTktfQ09NTU9OKSAtV2wsLS1lbnRyeSwkKElNQUdFX0VOVFJZX1BPSU5UKSAtdSAkKElNQUdFX0VOVFJZX1BPSU5UKSAtV2wsLU1hcCwkKERFU1RfRElSX0RFQlVHKS8kKEJBU0VfTkFNRSkubWFwLC0td2hvbGUtYXJjaGl2ZQ0KKyBERUZJTkUgR0NDNDhfSUEzMl9ETElOSzJfRkxBR1MgICAgICAgPSAtV2wsLS1kZWZzeW09UEVDT0ZGX0hFQURFUl9TSVpFPTB4MjIwIERFRihHQ0NfRExJTksyX0ZMQUdTX0NPTU1PTikNCitAQCAtMTk1Myw3ICsxOTUzLDcgQEAgREVGSU5FIEdDQzQ4X1g2NF9ETElOSzJfRkxBR1MgICAgICAgID0gLVdsLC0tZGVmc3ltPVBFQ09GRl9IRUFERVJfU0laRT0weDIyOCBERUYKKyBERUZJTkUgR0NDNDhfQVNNX0ZMQUdTICAgICAgICAgICAgICAgPSBERUYoR0NDX0FTTV9GTEFHUykNCisgREVGSU5FIEdDQzQ4X0FSTV9BU01fRkxBR1MgICAgICAgICAgID0gJChBUkNIQVNNX0ZMQUdTKSAkKFBMQVRGT1JNX0ZMQUdTKSBERUYoR0NDX0FTTV9GTEFHUykgLW1saXR0bGUtZW5kaWFuDQorIERFRklORSBHQ0M0OF9BQVJDSDY0X0FTTV9GTEFHUyAgICAgICA9ICQoQVJDSEFTTV9GTEFHUykgJChQTEFURk9STV9GTEFHUykgREVGKEdDQ19BU01fRkxBR1MpIC1tbGl0dGxlLWVuZGlhbg0KKy1ERUZJTkUgR0NDNDhfQVJNX0NDX0ZMQUdTICAgICAgICAgICAgPSAkKEFSQ0hDQ19GTEFHUykgJChQTEFURk9STV9GTEFHUykgREVGKEdDQ19BUk1fQ0NfRkxBR1MpIC1mc3RhY2stcHJvdGVjdG9yIC1td29yZC1yZWxvY2F0aW9ucw0KKytERUZJTkUgR0NDNDhfQVJNX0NDX0ZMQUdTICAgICAgICAgICAgPSAkKEFSQ0hDQ19GTEFHUykgJChQTEFURk9STV9GTEFHUykgREVGKEdDQ19BUk1fQ0NfRkxBR1MpIC1td29yZC1yZWxvY2F0aW9ucw0KKyBERUZJTkUgR0NDNDhfQVJNX0NDX1hJUEZMQUdTICAgICAgICAgPSBERUYoR0NDX0FSTV9DQ19YSVBGTEFHUykNCisgREVGSU5FIEdDQzQ4X0FBUkNINjRfQ0NfRkxBR1MgICAgICAgID0gJChBUkNIQ0NfRkxBR1MpICQoUExBVEZPUk1fRkxBR1MpIC1tY21vZGVsPWxhcmdlIERFRihHQ0NfQUFSQ0g2NF9DQ19GTEFHUykNCisgREVGSU5FIEdDQzQ4X0FBUkNINjRfQ0NfWElQRkxBR1MgICAgID0gREVGKEdDQ19BQVJDSDY0X0NDX1hJUEZMQUdTKQ0KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDQtb3ZtZi1lbmFibGUtbG9uZy1wYXRoLWZpbGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDA0LW92bWYtZW5hYmxlLWxvbmctcGF0aC1maWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTU0ZmJlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDQtb3ZtZi1lbmFibGUtbG9uZy1wYXRoLWZpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1Gcm9tIDAzMmZjNmIxZjc2OTFiZDUzN2ZkMmE2YmQxMzgyMWZjZjNjNDVlNjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAxMSBTZXAgMjAxNyAwMjoyMTo1NSAtMDQwMAotU3ViamVjdDogW1BBVENIXSBvdm1mOiBlbmFibGUgbG9uZyBwYXRoIGZpbGUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vQ29tbW9uTGliLmggYi9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5oCi1pbmRleCAyMDQxYjg5ZTJkLi44MTE2YWEyZTM1IDEwMDY0NAotLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIuaAotKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIuaAotQEAgLTIyICsyMiBAQCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELgotLSNkZWZpbmUgTUFYX0xPTkdfRklMRV9QQVRIIDUwMA0KLSsjZGVmaW5lIE1BWF9MT05HX0ZJTEVfUEFUSCAxMDIzDQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvVmZyQ29tcGlsZS1pbmNyZWFzZS1wYXRoLWxlbmd0aC1saW1pdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mL1ZmckNvbXBpbGUtaW5jcmVhc2UtcGF0aC1sZW5ndGgtbGltaXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiMTJkOGIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvVmZyQ29tcGlsZS1pbmNyZWFzZS1wYXRoLWxlbmd0aC1saW1pdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gYzc3MjJkMTBjN2JjZjZiZTBhZGNmNTRhYmIxZDQwNjU5OWRkNzkxNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KLURhdGU6IEZyaSwgMjQgRmViIDIwMTcgMDE6NDA6MDIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gVmZyQ29tcGlsZTogaW5jcmVhc2UgcGF0aCBsZW5ndGggbGltaXQKLQotVGhlIFZmckNvbXBpbGUgdG9vbCBoYXMgYSBoYXJkLWNvZGVkIG1heGltdW0gbGVuZ3RoIGZvciBwYXRoIG5hbWVzCi13aGljaCB0dXJuZWQgb3V0IHRvIGJlIHRvbyBzbWFsbCBieSBhcm91bmQgMjAgY2hhcmFjdGVycyBpbiB0aGUgWW9jdG8KLWF1dG9idWlsZGVyIHNldHVwLiBJbmNyZWFzaW5nIHRoZSBtYXhpbXVtIGJ5IGEgZmFjdG9yIG9mIDQgaXMKLXJlbGF0aXZlbHkgZWFzeSBhbmQgbWFrZXMgdGhlIHByb2JsZW0gbGVzcyBsaWtlbHkuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgotLS0tCi0gQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvRWZpVmZyLmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9FZmlWZnIuaCBiL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL0VmaVZmci5oCi1pbmRleCBkMTg3OTAyLi45YWQ0YTdiIDEwMDY0NAotLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvRWZpVmZyLmgKLSsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL0VmaVZmci5oCi1AQCAtMTksNyArMTksNyBAQCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELgotICNpbmNsdWRlICJDb21tb24vVWVmaUludGVybmFsRm9ybVJlcHJlc2VudGF0aW9uLmgiDQotICNpbmNsdWRlICJDb21tb24vTWRlTW9kdWxlSGlpLmgiDQotIA0KLS0jZGVmaW5lIE1BWF9QQVRIICAgICAgICAgICAgICAgICAyNTUNCi0rI2RlZmluZSBNQVhfUEFUSCAgICAgICAgICAgICAgICAgMTAyMw0KLSAjZGVmaW5lIE1BWF9WRlJfTElORV9MRU4gICAgICAgICA0MDk2DQotIA0KLSAjZGVmaW5lIEVGSV9JRlJfTUFYX0xFTkdUSCAgICAgICAweEZGDQotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi9uby1zdGFjay1wcm90ZWN0b3ItYWxsLWFyY2hzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvbm8tc3RhY2stcHJvdGVjdG9yLWFsbC1hcmNocy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI2NTM0OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi9uby1zdGFjay1wcm90ZWN0b3ItYWxsLWFyY2hzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotQXV0aG9yOiBTdGV2ZSBMYW5nYXNlayA8c3RldmUubGFuZ2FzZWtAdWJ1bnR1LmNvbT4KLURlc2NyaXB0aW9uOiBwYXNzIC1mbm8tc3RhY2stcHJvdGVjdG9yIHRvIGFsbCBHQ0MgdG9vbGNoYWlucwotIFRoZSB1cHN0cmVhbSBidWlsZCBydWxlcyBpbmV4cGxpY2FibHkgcGFzcyAtZm5vLXN0YWNrLXByb3RlY3RvciBvbmx5Ci0gd2hlbiBidWlsZGluZyBmb3IgaTM4NiBhbmQgYW1kNjQuICBBZGQgdGhpcyBlc3NlbnRpYWwgYXJndW1lbnQgdG8gdGhlCi0gZ2VuZXJpYyBydWxlcyBmb3IgZ2NjIDQuNCBhbmQgbGF0ZXIuCi1MYXN0LVVwZGF0ZWQ6IDIwMTYtMDQtMTIKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdpdC9CYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9CYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUKLSsrKyBnaXQvQmFzZVRvb2xzL0NvbmYvdG9vbHNfZGVmLnRlbXBsYXRlCi1AQCAtMTczNiwxMCArMTczNiwxMCBAQCBERUZJTkUgR0NDX1g2NF9SQ19GTEFHUyAgICAgICAgICAgID0gLUkgYmluYXJ5IC1PIGVsZjY0LXg4Ni02NCAgICAgICAgLUIgaTM4NgotIERFRklORSBHQ0NfQVJNX1JDX0ZMQUdTICAgICAgICAgICAgPSAtSSBiaW5hcnkgLU8gZWxmMzItbGl0dGxlYXJtICAgICAtQiBhcm0gICAgIC0tcmVuYW1lLXNlY3Rpb24gLmRhdGE9LmhpaQ0KLSBERUZJTkUgR0NDX0FBUkNINjRfUkNfRkxBR1MgICAgICAgID0gLUkgYmluYXJ5IC1PIGVsZjY0LWxpdHRsZWFhcmNoNjQgLUIgYWFyY2g2NCAtLXJlbmFtZS1zZWN0aW9uIC5kYXRhPS5oaWkNCi0gDQotLURFRklORSBHQ0M0OF9BTExfQ0NfRkxBR1MgICAgICAgICAgICA9IC1nIC1mc2hvcnQtd2NoYXIgLWZuby1idWlsdGluIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1XZXJyb3IgLVduby1hcnJheS1ib3VuZHMgLWZmdW5jdGlvbi1zZWN0aW9ucyAtZmRhdGEtc2VjdGlvbnMgLWluY2x1ZGUgQXV0b0dlbi5oIC1mbm8tY29tbW9uIC1EU1RSSU5HX0FSUkFZX05BTUU9JChCQVNFX05BTUUpU3RyaW5ncw0KLStERUZJTkUgR0NDNDhfQUxMX0NDX0ZMQUdTICAgICAgICAgICAgPSAtZyAtZnNob3J0LXdjaGFyIC1mbm8tYnVpbHRpbiAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV2Vycm9yIC1Xbm8tYXJyYXktYm91bmRzIC1mZnVuY3Rpb24tc2VjdGlvbnMgLWZkYXRhLXNlY3Rpb25zIC1mbm8tc3RhY2stcHJvdGVjdG9yIC1pbmNsdWRlIEF1dG9HZW4uaCAtZm5vLWNvbW1vbiAtRFNUUklOR19BUlJBWV9OQU1FPSQoQkFTRV9OQU1FKVN0cmluZ3MNCi0gREVGSU5FIEdDQzQ4X0lBMzJfWDY0X0RMSU5LX0NPTU1PTiAgID0gLW5vc3RkbGliIC1XbCwtbiwtcSwtLWdjLXNlY3Rpb25zIC16IGNvbW1vbi1wYWdlLXNpemU9MHgyMA0KLS1ERUZJTkUgR0NDNDhfSUEzMl9DQ19GTEFHUyAgICAgICAgICAgPSBERUYoR0NDNDhfQUxMX0NDX0ZMQUdTKSAtbTMyIC1tYXJjaD1pNTg2IC1tYWxpZ24tZG91YmxlIC1mbm8tc3RhY2stcHJvdGVjdG9yIC1EIEVGSTMyIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLVduby1hZGRyZXNzDQotLURFRklORSBHQ0M0OF9YNjRfQ0NfRkxBR1MgICAgICAgICAgICA9IERFRihHQ0M0OF9BTExfQ0NfRkxBR1MpIC1tNjQgLWZuby1zdGFjay1wcm90ZWN0b3IgIi1ERUZJQVBJPV9fYXR0cmlidXRlX18oKG1zX2FiaSkpIiAtbWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncyAtbW5vLXJlZC16b25lIC1Xbm8tYWRkcmVzcyAtbWNtb2RlbD1zbWFsbCAtZnBpZSAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIC1Xbm8tYWRkcmVzcw0KLStERUZJTkUgR0NDNDhfSUEzMl9DQ19GTEFHUyAgICAgICAgICAgPSBERUYoR0NDNDhfQUxMX0NDX0ZMQUdTKSAtbTMyIC1tYXJjaD1pNTg2IC1tYWxpZ24tZG91YmxlIC1EIEVGSTMyIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLVduby1hZGRyZXNzDQotK0RFRklORSBHQ0M0OF9YNjRfQ0NfRkxBR1MgICAgICAgICAgICA9IERFRihHQ0M0OF9BTExfQ0NfRkxBR1MpIC1tNjQgIi1ERUZJQVBJPV9fYXR0cmlidXRlX18oKG1zX2FiaSkpIiAtbWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncyAtbW5vLXJlZC16b25lIC1Xbm8tYWRkcmVzcyAtbWNtb2RlbD1zbWFsbCAtZnBpZSAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIC1Xbm8tYWRkcmVzcw0KLSBERUZJTkUgR0NDNDhfSUEzMl9YNjRfQVNMRExJTktfRkxBR1MgPSBERUYoR0NDNDhfSUEzMl9YNjRfRExJTktfQ09NTU9OKSAtV2wsLS1lbnRyeSxSZWZlcmVuY2VBY3BpVGFibGUgLXUgUmVmZXJlbmNlQWNwaVRhYmxlDQotIERFRklORSBHQ0M0OF9JQTMyX1g2NF9ETElOS19GTEFHUyAgICA9IERFRihHQ0M0OF9JQTMyX1g2NF9ETElOS19DT01NT04pIC1XbCwtLWVudHJ5LCQoSU1BR0VfRU5UUllfUE9JTlQpIC11ICQoSU1BR0VfRU5UUllfUE9JTlQpIC1XbCwtTWFwLCQoREVTVF9ESVJfREVCVUcpLyQoQkFTRV9OQU1FKS5tYXAsLS13aG9sZS1hcmNoaXZlDQotIERFRklORSBHQ0M0OF9JQTMyX0RMSU5LMl9GTEFHUyAgICAgICA9IC1XbCwtLWRlZnN5bT1QRUNPRkZfSEVBREVSX1NJWkU9MHgyMjAgREVGKEdDQ19ETElOSzJfRkxBR1NfQ09NTU9OKQ0KLUBAIC0xNzQ4LDcgKzE3NDgsNyBAQCBERUZJTkUgR0NDNDhfWDY0X0RMSU5LMl9GTEFHUyAgICAgICAgPSAtV2wsLS1kZWZzeW09UEVDT0ZGX0hFQURFUl9TSVpFPTB4MjI4IERFRgotIERFRklORSBHQ0M0OF9BU01fRkxBR1MgICAgICAgICAgICAgICA9IERFRihHQ0NfQVNNX0ZMQUdTKQ0KLSBERUZJTkUgR0NDNDhfQVJNX0FTTV9GTEFHUyAgICAgICAgICAgPSAkKEFSQ0hBU01fRkxBR1MpICQoUExBVEZPUk1fRkxBR1MpIERFRihHQ0NfQVNNX0ZMQUdTKSAtbWxpdHRsZS1lbmRpYW4NCi0gREVGSU5FIEdDQzQ4X0FBUkNINjRfQVNNX0ZMQUdTICAgICAgID0gJChBUkNIQVNNX0ZMQUdTKSAkKFBMQVRGT1JNX0ZMQUdTKSBERUYoR0NDX0FTTV9GTEFHUykgLW1saXR0bGUtZW5kaWFuDQotLURFRklORSBHQ0M0OF9BUk1fQ0NfRkxBR1MgICAgICAgICAgICA9ICQoQVJDSENDX0ZMQUdTKSAkKFBMQVRGT1JNX0ZMQUdTKSBERUYoR0NDX0FSTV9DQ19GTEFHUykgLWZzdGFjay1wcm90ZWN0b3IgLW13b3JkLXJlbG9jYXRpb25zDQotK0RFRklORSBHQ0M0OF9BUk1fQ0NfRkxBR1MgICAgICAgICAgICA9ICQoQVJDSENDX0ZMQUdTKSAkKFBMQVRGT1JNX0ZMQUdTKSBERUYoR0NDX0FSTV9DQ19GTEFHUykgLW13b3JkLXJlbG9jYXRpb25zDQotIERFRklORSBHQ0M0OF9BUk1fQ0NfWElQRkxBR1MgICAgICAgICA9IERFRihHQ0NfQVJNX0NDX1hJUEZMQUdTKQ0KLSBERUZJTkUgR0NDNDhfQUFSQ0g2NF9DQ19GTEFHUyAgICAgICAgPSAkKEFSQ0hDQ19GTEFHUykgJChQTEFURk9STV9GTEFHUykgLW1jbW9kZWw9bGFyZ2UgREVGKEdDQ19BQVJDSDY0X0NDX0ZMQUdTKQ0KLSBERUZJTkUgR0NDNDhfQUFSQ0g2NF9DQ19YSVBGTEFHUyAgICAgPSBERUYoR0NDX0FBUkNINjRfQ0NfWElQRkxBR1MpDQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiCmluZGV4IGZmMmIyYTUuLjk2NjdmYTAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZl9naXQuYmIKQEAgLTEzLDE0ICsxMywxNCBAQAogUEFDS0FHRUNPTkZJR1tzZWN1cmVib290XSA9ICIsLCwiCiAKIFNSQ19VUkkgPSAiZ2l0c206Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyLmdpdDticmFuY2g9bWFzdGVyO3Byb3RvY29sPWdpdCBcCi0JZmlsZTovLzAwMDItb3ZtZi11cGRhdGUtcGF0aC10by1uYXRpdmUtQmFzZVRvb2xzLnBhdGNoIFwKLQlmaWxlOi8vMDAwMy1CYXNlVG9vbHMtbWFrZWZpbGUtYWRqdXN0LXRvLWJ1aWxkLWluLXVuZGVyLWJpdGJha2UucGF0Y2ggXAotCWZpbGU6Ly8wMDA0LW92bWYtZW5hYmxlLWxvbmctcGF0aC1maWxlLnBhdGNoIFwKLQlmaWxlOi8vbm8tc3RhY2stcHJvdGVjdG9yLWFsbC1hcmNocy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW92bWYtdXBkYXRlLXBhdGgtdG8tbmF0aXZlLUJhc2VUb29scy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUJhc2VUb29scy1tYWtlZmlsZS1hZGp1c3QtdG8tYnVpbGQtaW4tdW5kZXItYml0YmFrZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLW92bWYtZW5hYmxlLWxvbmctcGF0aC1maWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtb3ZtZi1VcGRhdGUtdG8tbGF0ZXN0LnBhdGNoIFwKICAgICAgICAgIgogCi1QViA9ICJlZGsyLXN0YWJsZTIwMTkwNSIKLVNSQ1JFVj0iMjBkMmU1YTEyNWUzNGZjODUwMTAyNjYxM2E3MTU0OWIyYTFhM2U1NCIKK1BWID0gImVkazItc3RhYmxlMjAxOTExIgorU1JDUkVWID0gImJkODViZjU0YzI2ODIwNGM3YTY5OGE5NmYzY2NkOTZjZDc3OTUyY2QiCiBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5lZGsyLXN0YWJsZS4qKSIKIAogaW5oZXJpdCBkZXBsb3kKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zZGsuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc2RrLmJiCmluZGV4IDg4NTRlYzQuLjAzZmE1MjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zZGsuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXNkay5iYgpAQCAtMTYsNyArMTYsNiBAQAogICAgIGNvcmV1dGlscyBcCiAgICAgY2NhY2hlIFwKICAgICBkaWZmdXRpbHMgXAotICAgIGludGx0b29sIFwKICAgICBwZXJsLW1vZHVsZS1yZSBcCiAgICAgcGVybC1tb2R1bGUtdGV4dC13cmFwIFwKICAgICBmaW5kdXRpbHMgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZS5iYgppbmRleCAzZmQ0MjNjLi5hYzE4MGI1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZS5iYgpAQCAtMTAsNyArMTAsNyBAQAogCiBpbmhlcml0IHBhY2thZ2Vncm91cAogCi1QUk9GSUxFX1RPT0xTX1ggPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnc3lzcHJvZicsICcnLCBkKX0iCitQUk9GSUxFX1RPT0xTX1ggPSAiIgogIyBzeXNwcm9mIGRvZXNuJ3Qgc3VwcG9ydCBhYXJjaDY0IGFuZCBuaW9zMgogUFJPRklMRV9UT09MU19YX2FhcmNoNjQgPSAiIgogUFJPRklMRV9UT09MU19YX25pb3MyID0gIiIKQEAgLTQ2LDYgKzQ2LDcgQEAKIExUVE5HTU9EVUxFU19hcmMgPSAiIgogCiBCQUJFTFRSQUNFID0gImJhYmVsdHJhY2UiCitCQUJFTFRSQUNFMiA9ICJiYWJlbHRyYWNlMiIKIAogIyB2YWxncmluZCBkb2VzIG5vdCB3b3JrIG9uIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnMvYXJjaGl0ZWN0dXJlcwogCkBAIC02OSw2ICs3MCw3IEBACiAgICAgJHtMVFROR1RPT0xTfSBcCiAgICAgJHtMVFROR01PRFVMRVN9IFwKICAgICAke0JBQkVMVFJBQ0V9IFwKKyAgICAke0JBQkVMVFJBQ0UyfSBcCiAgICAgJHtTWVNURU1UQVB9IFwKICAgICAke1ZBTEdSSU5EfSBcCiAgICAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1nby1zZGstdGFyZ2V0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1nby1zZGstdGFyZ2V0LmJiCmluZGV4IDVhZmI0OTAuLjlhNTJiMDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZ28tc2RrLXRhcmdldC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQuYmIKQEAgLTMsOSArMywxMCBAQAogaW5oZXJpdCBwYWNrYWdlZ3JvdXAgZ29hcmNoCiAKIFJERVBFTkRTXyR7UE59ID0gIiBcCisgICAgZ28gXAogICAgIGdvLXJ1bnRpbWUgXAogICAgIGdvLXJ1bnRpbWUtZGV2IFwKICAgICBnby1ydW50aW1lLXN0YXRpY2RldiBcCiAiCiAKLUNPTVBBVElCTEVfSE9TVCA9ICJeKD8hcmlzY3Y2NCkuKiIKK0NPTVBBVElCTEVfSE9TVCA9ICJeKD8hcmlzY3YzMikuKiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLmJiCmluZGV4IDBhYWIyM2UuLjlhNzBiMTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZWxmLWhvc3RlZC5iYgpAQCAtNzUsNyArNzUsNiBAQAogICAgIGcrKy1zeW1saW5rcyBcCiAgICAgZ2NjIFwKICAgICBnY2Mtc3ltbGlua3MgXAotICAgIGludGx0b29sIFwKICAgICBsZGQgXAogICAgIGxlc3MgXAogICAgIGxpYnN0ZGMrKyBcCkBAIC0xMDksNyArMTA4LDYgQEAKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLWV4dGVuZGVkID0gIlwKICAgICBiemlwMiBcCi0gICAgY2hrY29uZmlnIFwKICAgICBjaHJwYXRoIFwKICAgICBjcGlvIFwKICAgICBjdXJsIFwKQEAgLTE1Myw4ICsxNTEsNiBAQAogICAgIHBlcmwtbWlzYyBcCiAgICAgcGVybC1tb2R1bGVzIFwKICAgICBwZXJsLXBvZCBcCi0gICAgcHl0aG9uIFwKLSAgICBweXRob24tbW9kdWxlcyBcCiAgICAgcHl0aG9uMyBcCiAgICAgcHl0aG9uMy1tb2R1bGVzIFwKICAgICBweXRob24zLWdpdCBcCkBAIC0xNjgsNyArMTY0LDYgQEAKICAgICBzeXNzdGF0IFwKICAgICB0YXIgXAogICAgIHRjbCBcCi0gICAgdGV4aTJodG1sIFwKICAgICB0ZXhpbmZvIFwKICAgICB1bnppcCBcCiAgICAgdXNidXRpbHMgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL2ZpbGVzL3BzcGxhc2gtaW5pdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9maWxlcy9wc3BsYXNoLWluaXQKaW5kZXggNGJlZTg2Ni4uZjU4ZTA0MyAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL2ZpbGVzL3BzcGxhc2gtaW5pdAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvZmlsZXMvcHNwbGFzaC1pbml0CkBAIC0yMywxMCArMjMsMTAgQEAKICAgICAgICAgZXNhYwogZG9uZQogCi1leHBvcnQgVE1QRElSPS9tbnQvLnBzcGxhc2gKLVsgLWQgJFRNUERJUiBdIHx8IG1rZGlyIC1wICRUTVBESVIKLWlmICEgbW91bnRwb2ludCAtcSAkVE1QRElSOyB0aGVuCi0JbW91bnQgdG1wZnMgLXQgdG1wZnMgJFRNUERJUiAtbyxzaXplPTQwaworZXhwb3J0IFBTUExBU0hfRklGT19ESVI9L21udC8ucHNwbGFzaAorWyAtZCAkUFNQTEFTSF9GSUZPX0RJUiBdIHx8IG1rZGlyIC1wICRQU1BMQVNIX0ZJRk9fRElSCitpZiAhIG1vdW50cG9pbnQgLXEgJFBTUExBU0hfRklGT19ESVI7IHRoZW4KKwltb3VudCB0bXBmcyAtdCB0bXBmcyAkUFNQTEFTSF9GSUZPX0RJUiAtbyxzaXplPTQwawogZmkKIAogcm90YXRpb249MApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL2ZpbGVzL3BzcGxhc2gtc3RhcnQuc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9maWxlcy9wc3BsYXNoLXN0YXJ0LnNlcnZpY2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZjMmJiMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9maWxlcy9wc3BsYXNoLXN0YXJ0LnNlcnZpY2UKQEAgLTAsMCArMSwxMiBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1TdGFydCBwc3BsYXNoIGJvb3Qgc3BsYXNoIHNjcmVlbgorRGVmYXVsdERlcGVuZGVuY2llcz1ubworUmVxdWlyZXNNb3VudHNGb3I9L3J1bgorCitbU2VydmljZV0KK1R5cGU9bm90aWZ5CitFeGVjU3RhcnQ9L3Vzci9iaW4vcHNwbGFzaAorUmVtYWluQWZ0ZXJFeGl0PXllcworCitbSW5zdGFsbF0KK1dhbnRlZEJ5PXN5c2luaXQudGFyZ2V0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvZmlsZXMvcHNwbGFzaC1zeXN0ZW1kLnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvZmlsZXMvcHNwbGFzaC1zeXN0ZW1kLnNlcnZpY2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgyMjA3ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9maWxlcy9wc3BsYXNoLXN5c3RlbWQuc2VydmljZQpAQCAtMCwwICsxLDEzIEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPVN0YXJ0IHBzcGxhc2gtc3lzdGVtZCBwcm9ncmVzcyBjb21tdW5pY2F0aW9uIGhlbHBlcgorRGVmYXVsdERlcGVuZGVuY2llcz1ubworQWZ0ZXI9cHNwbGFzaC1zdGFydC5zZXJ2aWNlCitSZXF1aXJlcz1wc3BsYXNoLXN0YXJ0LnNlcnZpY2UKK1JlcXVpcmVzTW91bnRzRm9yPS9ydW4KKworW1NlcnZpY2VdCitFeGVjU3RhcnQ9L3Vzci9iaW4vcHNwbGFzaC1zeXN0ZW1kCitSZW1haW5BZnRlckV4aXQ9eWVzCisKK1tJbnN0YWxsXQorV2FudGVkQnk9c3lzaW5pdC50YXJnZXQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9wc3BsYXNoX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9wc3BsYXNoX2dpdC5iYgppbmRleCA1NjczNGMxLi4yMmM3MWYwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvcHNwbGFzaF9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL3BzcGxhc2hfZ2l0LmJiCkBAIC0zLDE0ICszLDE3IEBACiBIT01FUEFHRSA9ICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wc3BsYXNoIgogU0VDVElPTiA9ICJiYXNlIgogTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9wc3BsYXNoLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xNjttZDU9ODQwZmIyMzU2YjEwYTg1YmVkNzhkZDA5ZGM3NzQ1YzYiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9wc3BsYXNoLmg7YmVnaW5saW5lPTE7ZW5kbGluZT04O21kNT04ZjIzMmMxZTk1OTI5ZWFjYWIzN2YwMDkwMDU4MDIyNCIKK0RFUEVORFMgPSAiZ2RrLXBpeGJ1Zi1uYXRpdmUiCiAKLVNSQ1JFViA9ICIyMDE1ZjcwNzNlOThkZDk1NjJkYjA5MzZhMjU0YWY1ZWY1NjM1NmNmIgorU1JDUkVWID0gIjBhOTAyZjdjZDg3NWNjZjAxODQ1NjQ1MWJlMzY5ZjA1ZmE1NWY5NjIiCiBQViA9ICIwLjErZ2l0JHtTUkNQVn0iCiBQUiA9ICJyMTUiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvJHtCUE59IFwKICAgICAgICAgICAgZmlsZTovL3BzcGxhc2gtaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9wc3BsYXNoLXN0YXJ0LnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vcHNwbGFzaC1zeXN0ZW1kLnNlcnZpY2UgXAogICAgICAgICAgICAke1NQTEFTSF9JTUFHRVN9IgogVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCkBAIC0yMSw3ICsyNCw2IEBACiAgICAgc3BsYXNoZmlsZXMgPSBkLmdldFZhcignU1BMQVNIX0lNQUdFUycpLnNwbGl0KCkKICAgICBwa2dzID0gW10KICAgICBsb2NhbHBhdGhzID0gW10KLSAgICBoYXNwbmcgPSBGYWxzZQogICAgIGZvciB1cmkgaW4gc3BsYXNoZmlsZXM6CiAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaDIuRmV0Y2goW3VyaV0sIGQpCiAgICAgICAgIGZsb2NhbCA9IG9zLnBhdGguYmFzZW5hbWUoZmV0Y2hlci5sb2NhbHBhdGgodXJpKSkKQEAgLTM5LDE3ICs0MSwxMiBAQAogICAgICAgICAgICAgYmIuZmF0YWwoIlRoZSBvdXRwdXQgbmFtZSAnJXMnIGRlcml2ZWQgZnJvbSB0aGUgVVJJICVzIGlzIG5vdCB2YWxpZCwgcGxlYXNlIHNwZWNpZnkgdGhlIG91dHN1ZmZpeCBwYXJhbWV0ZXIiICUgKG91dG5hbWUsIHVyaSkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwa2dzLmFwcGVuZChvdXRuYW1lKQotICAgICAgICBpZiBmbG9jYWwuZW5kc3dpdGgoIi5wbmciKToKLSAgICAgICAgICAgIGhhc3BuZyA9IFRydWUKICAgICAgICAgbG9jYWxwYXRocy5hcHBlbmQoZmxvY2FsKQogCiAgICAgIyBTZXQgdGhlc2Ugc28gdGhhdCB3ZSBoYXZlIGxlc3Mgd29yayB0byBkbyBpbiBkb19jb21waWxlIGFuZCBkb19pbnN0YWxsX2FwcGVuZAogICAgIGQuc2V0VmFyKCJTUExBU0hfSU5TVEFMTCIsICIgIi5qb2luKHBrZ3MpKQogICAgIGQuc2V0VmFyKCJTUExBU0hfTE9DQUxQQVRIUyIsICIgIi5qb2luKGxvY2FscGF0aHMpKQogCi0gICAgaWYgaGFzcG5nOgotICAgICAgICBkLmFwcGVuZFZhcigiREVQRU5EUyIsICIgZ2RrLXBpeGJ1Zi1uYXRpdmUiKQotCiAgICAgZC5wcmVwZW5kVmFyKCJQQUNLQUdFUyIsICIlcyAiICUgKCIgIi5qb2luKHBrZ3MpKSkKICAgICBtbHByZWZpeCA9IGQuZ2V0VmFyKCdNTFBSRUZJWCcpIG9yICcnCiAgICAgcG4gPSBkLmdldFZhcignUE4nKSBvciAnJwpAQCAtNjYsNyArNjMsMTEgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHN5c3RlbWQKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWQsLS13aXRob3V0LXN5c3RlbWQsc3lzdGVtZCIKIAogQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgogQUxURVJOQVRJVkVfTElOS19OQU1FW3BzcGxhc2hdID0gIiR7YmluZGlyfS9wc3BsYXNoIgpAQCAtNzgsNyArNzksNyBAQAogICAgICMgQnVpbGQgYSBzZXBhcmF0ZSBleGVjdXRhYmxlIGZvciBlYWNoIHNwbGFzaCBpbWFnZQogICAgIHdvcmtkaXIgPSBkLmdldFZhcignV09SS0RJUicpCiAgICAgY29udmVydHNjcmlwdCA9ICIlcy9tYWtlLWltYWdlLWhlYWRlci5zaCIgJSBkLmdldFZhcignUycpCi0gICAgZGVzdGZpbGUgPSAiJXMvcHNwbGFzaC1wb2t5LWltZy5oIiAlIGQuZ2V0VmFyKCdTJykKKyAgICBkZXN0ZmlsZSA9ICIlcy9wc3BsYXNoLXBva3ktaW1nLmgiICUgZC5nZXRWYXIoJ0InKQogICAgIGxvY2FsZmlsZXMgPSBkLmdldFZhcignU1BMQVNIX0xPQ0FMUEFUSFMnKS5zcGxpdCgpCiAgICAgb3V0cHV0ZmlsZXMgPSBkLmdldFZhcignU1BMQVNIX0lOU1RBTEwnKS5zcGxpdCgpCiAgICAgZm9yIGxvY2FsZmlsZSwgb3V0cHV0ZmlsZSBpbiB6aXAobG9jYWxmaWxlcywgb3V0cHV0ZmlsZXMpOgpAQCAtOTcsOCArOTgsMTcgQEAKIH0KIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vcHNwbGFzaC1pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9wc3BsYXNoLnNoCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLworCQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9wc3BsYXNoLWluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3BzcGxhc2guc2gKKwlmaQorCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3BzcGxhc2gtc3RhcnQuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwkJaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9wc3BsYXNoLXN5c3RlbWQuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlmaQorCiAJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CiAJZm9yIGkgaW4gJHtTUExBU0hfSU5TVEFMTH0gOyBkbwogCQlpbnN0YWxsIC1tIDA3NTUgJGkgJHtEfSR7YmluZGlyfS8kaQpAQCAtMTA2LDE1ICsxMTYsOCBAQAogCXJtIC1mICR7RH0ke2JpbmRpcn0vcHNwbGFzaAogfQogCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnJHtQTn0nLCcnLGQpfSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc3lzdGVtZCcsICdwc3BsYXNoLXN0YXJ0LnNlcnZpY2UgcHNwbGFzaC1zeXN0ZW1kLnNlcnZpY2UnLCAnJywgZCl9IgorCiBJTklUU0NSSVBUX05BTUUgPSAicHNwbGFzaC5zaCIKIElOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDAgUyAuIHN0b3AgMjAgMCAxIDYgLiIKLQotUEFDS0FHRV9XUklURV9ERVBTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCdzeXN0ZW1kLXN5c3RlbWN0bC1uYXRpdmUnLCcnLGQpfSIKLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotCQlpZiBbIC1uICIkRCIgXTsgdGhlbgotCQkJT1BUUz0iLS1yb290PSREIgotCQlmaQotCQlzeXN0ZW1jdGwgJE9QVFMgbWFzayBwc3BsYXNoLnNlcnZpY2UKLQlmaQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9yZWFkbGluZS9yZWFkbGluZS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3JlYWRsaW5lL3JlYWRsaW5lLmluYwppbmRleCAwN2Y1NGE3Li4wNTJlMmQ1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3JlYWRsaW5lL3JlYWRsaW5lLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3JlYWRsaW5lL3JlYWRsaW5lLmluYwpAQCAtNDQsNyArNDQsMTMgQEAKIAogQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2lucHV0cmMiCiAKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiaGlzdG9yeS4zIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2hpc3RvcnkuM10gPSAiJHttYW5kaXJ9L21hbjMvaGlzdG9yeS4zIgorCiAjIE9wZW5TdXNlIGluamVjdHMgdmVyc2lvbnMgaW50byBsaWJyZWFkbGluZSBsZWFkaW5nIHRvIGNvbmZpY2l0cyBiZXR3ZWVuIG91ciBuYXRpdmUgb25lIGFuZCB0aGVpcnMKICMgc2VlIHRoZWlyIHNwZWMgZmlsZSBmb3Igd2hlcmUgdGhpcyBpcyBpbmplY3RlZC4gRXh0cmEgdmVyc2lvbmluZyBpcyBoYXJtbGVzcyBzbyB3ZSBqdXN0IGRvIHRoZSBzYW1lLgogU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vcmwtbmF0aXZlLm1hcCIKLUxERkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLVdsLC0tdmVyc2lvbi1zY3JpcHQ9JHtXT1JLRElSfS9ybC1uYXRpdmUubWFwIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK0xERkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLVdsLC0tdmVyc2lvbi1zY3JpcHQ9JHtXT1JLRElSfS9ybC1uYXRpdmUubWFwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yNDMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzI0My5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE1YWJjMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzI0My5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLXJlcXVpcmUgc3lzdGVtZC5pbmMKLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L3N5c3RlbWQ6IgotCi1yZXF1aXJlIGNvbmYvaW1hZ2UtdWVmaS5jb25mCi0KLURFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGxpYmNhcCB1dGlsLWxpbnV4IGdudS1lZmkgZ3BlcmYtbmF0aXZlIgotCi0jIE5PVEU6IFRoZXNlIHRocmVlIHBhdGNoZXMgYXJlIGluIHRoZW9yeSBub3QgbmVlZGVkLCBidXQgd2UgaGF2ZW4ndAotIyAgICAgICBmaWd1cmVkIG91dCBob3cgdG8gY29ycmVjdGx5IHBhc3MgZWZpLWNjIHBhcmFtZXRlciBpZiBpdCdzIGFuIGFycmF5LgotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtUmV2ZXJ0LW1lc29uLXVzZS1hbi1hcnJheS1vcHRpb24tZm9yLWVmaS1jYy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXZlcnQtbWVzb24tcHJpbnQtRUZJLUNDLWNvbmZpZ3VyYXRpb24tbmljZWx5LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC10by1ydW4tZWZpX2NjLWFuZC1lZmlfbGQtY29ycmVjdGx5LXdoZW4tY3Jvc3MtY28ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtbWVzb24tQWRkLURlZmktb2JqY29weS1vcHRpb24tdG8tc3BlY2lmeS1vYmpjb3B5LnBhdGNoIFwKLSAgICAgICAgICAgICIKLQotaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZ2V0dGV4dAotaW5oZXJpdCBkZXBsb3kKLQotRUZJX0NDID89ICIke0NDfSIKLUVYVFJBX09FTUVTT04gKz0gIi1EZWZpPXRydWUgXAotICAgICAgICAgICAgICAgICAgLURnbnUtZWZpPXRydWUgXAotICAgICAgICAgICAgICAgICAgLURlZmktaW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfS9lZmkgXAotICAgICAgICAgICAgICAgICAgLURlZmktbGRzZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgICAgICAgICAgIC1EZWZpLWxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgICAtRG1hbj1mYWxzZSBcCi0gICAgICAgICAgICAgICAgICAtRGVmaS1jYz0nJHtFRklfQ0N9JyBcCi0gICAgICAgICAgICAgICAgICAtRGVmaS1sZD0nJHtMRH0nIFwKLSAgICAgICAgICAgICAgICAgIC1EZWZpLW9iamNvcHk9JyR7T0JKQ09QWX0nIFwKLSAgICAgICAgICAgICAgICAgICIKLQotIyBpbnN0YWxsIHRvIHRoZSBpbWFnZSBhcyBib290Ki5lZmkgaWYgaXRzIHRoZSBFRklfUFJPVklERVIsCi0jIG90aGVyd2lzZSBpbnN0YWxsIGFzIHRoZSBmdWxsIG5hbWUuCi0jIFRoaXMgYWxsb3dzIG11bHRpcGxlIGJvb3Rsb2FkZXJzIHRvIGNvZXhpc3QgaW4gYSBzaW5nbGUgaW1hZ2UuCi1weXRob24gX19hbm9ueW1vdXMgKCkgewotICAgIGltcG9ydCByZQotICAgIHRhcmdldCA9IGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpCi0gICAgcHJlZml4ID0gIiIgaWYgZC5nZXRWYXIoJ0VGSV9QUk9WSURFUicpID09ICJzeXN0ZW1kLWJvb3QiIGVsc2UgInN5c3RlbWQtIgotICAgIHN5c3RlbWRpbWFnZSA9IHByZWZpeCArIGQuZ2V0VmFyKCJFRklfQk9PVF9JTUFHRSIpCi0gICAgZC5zZXRWYXIoIlNZU1RFTURfQk9PVF9JTUFHRSIsIHN5c3RlbWRpbWFnZSkKLSAgICBwcmVmaXggPSAic3lzdGVtZC0iIGlmIHByZWZpeCA9PSAiIiBlbHNlICIiCi0gICAgZC5zZXRWYXIoIlNZU1RFTURfQk9PVF9JTUFHRV9QUkVGSVgiLCBwcmVmaXgpCi19Ci0KLUZJTEVTXyR7UE59ID0gIiR7RUZJX0ZJTEVTX1BBVEh9LyR7U1lTVEVNRF9CT09UX0lNQUdFfSIKLQotUkRFUEVORFNfJHtQTn0gKz0gInZpcnR1YWwvc3lzdGVtZC1ib290Y29uZiIKLQotIyBJbXBvcnRlZCBmcm9tIHRoZSBvbGQgZ3VtbWlib290IHJlY2lwZQotVFVORV9DQ0FSR1NfcmVtb3ZlID0gIi1tZnBtYXRoPXNzZSIKLUNPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0Lip8aS44Ni4qKS1saW51eCIKLUNPTVBBVElCTEVfSE9TVF94ODYteDMyID0gIm51bGwiCi0KLWRvX2NvbXBpbGUoKSB7Ci0JU1lTVEVNRF9CT09UX0VGSV9BUkNIPSJpYTMyIgotCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIF07IHRoZW4KLQkJU1lTVEVNRF9CT09UX0VGSV9BUkNIPSJ4NjQiCi0JZmkKLQotCW5pbmphIHNyYy9ib290L2VmaS8ke1NZU1RFTURfQk9PVF9JTUFHRV9QUkVGSVh9JHtTWVNURU1EX0JPT1RfSU1BR0V9Ci19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtFRklfRklMRVNfUEFUSH0KLQlpbnN0YWxsICR7Qn0vc3JjL2Jvb3QvZWZpL3N5c3RlbWQtYm9vdCouZWZpICR7RH0ke0VGSV9GSUxFU19QQVRIfS8ke1NZU1RFTURfQk9PVF9JTUFHRX0KLX0KLQotZG9fZGVwbG95ICgpIHsKLQlpbnN0YWxsICR7Qn0vc3JjL2Jvb3QvZWZpL3N5c3RlbWQtYm9vdCouZWZpICR7REVQTE9ZRElSfQotfQotYWRkdGFzayBkZXBsb3kgYmVmb3JlIGRvX2J1aWxkIGFmdGVyIGRvX2NvbXBpbGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3RfMjQ1LjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzI0NS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5MmM2MzkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzI0NS41LmJiCkBAIC0wLDAgKzEsNzAgQEAKK3JlcXVpcmUgc3lzdGVtZC5pbmMKK0ZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L3N5c3RlbWQ6IgorCityZXF1aXJlIGNvbmYvaW1hZ2UtdWVmaS5jb25mCisKK0RFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGxpYmNhcCB1dGlsLWxpbnV4IGdudS1lZmkgZ3BlcmYtbmF0aXZlIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBnZXR0ZXh0Citpbmhlcml0IGRlcGxveQorCitMREZMQUdTX3ByZXBlbmQgPSAiJHtAICIgIi5qb2luKGQuZ2V0VmFyKCdMRCcpLnNwbGl0KClbMTpdKX0gIgorCitkb193cml0ZV9jb25maWdbdmFyZGVwc10gKz0gIkNDIE9CSkNPUFkiCitkb193cml0ZV9jb25maWdfYXBwZW5kKCkgeworICAgIGNhdCA+JHtXT1JLRElSfS9tZXNvbi0ke1BOfS5jcm9zcyA8PEVPRgorW2JpbmFyaWVzXQorZWZpX2NjID0gJHtAbWVzb25fYXJyYXkoJ0NDJywgZCl9CitvYmpjb3B5ID0gJHtAbWVzb25fYXJyYXkoJ09CSkNPUFknLCBkKX0KK0VPRgorfQorCitFWFRSQV9PRU1FU09OICs9ICItRGVmaT10cnVlIFwKKyAgICAgICAgICAgICAgICAgIC1EZ251LWVmaT10cnVlIFwKKyAgICAgICAgICAgICAgICAgIC1EZWZpLWluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0vZWZpIFwKKyAgICAgICAgICAgICAgICAgIC1EZWZpLWxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSBcCisgICAgICAgICAgICAgICAgICAtRGVmaS1sZD0ke0AgZC5nZXRWYXIoJ0xEJykuc3BsaXQoKVswXX0gXAorICAgICAgICAgICAgICAgICAgLURtYW49ZmFsc2UgXAorICAgICAgICAgICAgICAgICAgLS1jcm9zcy1maWxlICR7V09SS0RJUn0vbWVzb24tJHtQTn0uY3Jvc3MgXAorICAgICAgICAgICAgICAgICAgIgorCisjIGluc3RhbGwgdG8gdGhlIGltYWdlIGFzIGJvb3QqLmVmaSBpZiBpdHMgdGhlIEVGSV9QUk9WSURFUiwKKyMgb3RoZXJ3aXNlIGluc3RhbGwgYXMgdGhlIGZ1bGwgbmFtZS4KKyMgVGhpcyBhbGxvd3MgbXVsdGlwbGUgYm9vdGxvYWRlcnMgdG8gY29leGlzdCBpbiBhIHNpbmdsZSBpbWFnZS4KK3B5dGhvbiBfX2Fub255bW91cyAoKSB7CisgICAgaW1wb3J0IHJlCisgICAgdGFyZ2V0ID0gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJykKKyAgICBwcmVmaXggPSAiIiBpZiBkLmdldFZhcignRUZJX1BST1ZJREVSJykgPT0gInN5c3RlbWQtYm9vdCIgZWxzZSAic3lzdGVtZC0iCisgICAgc3lzdGVtZGltYWdlID0gcHJlZml4ICsgZC5nZXRWYXIoIkVGSV9CT09UX0lNQUdFIikKKyAgICBkLnNldFZhcigiU1lTVEVNRF9CT09UX0lNQUdFIiwgc3lzdGVtZGltYWdlKQorICAgIHByZWZpeCA9ICJzeXN0ZW1kLSIgaWYgcHJlZml4ID09ICIiIGVsc2UgIiIKKyAgICBkLnNldFZhcigiU1lTVEVNRF9CT09UX0lNQUdFX1BSRUZJWCIsIHByZWZpeCkKK30KKworRklMRVNfJHtQTn0gPSAiJHtFRklfRklMRVNfUEFUSH0vJHtTWVNURU1EX0JPT1RfSU1BR0V9IgorCitSREVQRU5EU18ke1BOfSArPSAidmlydHVhbC9zeXN0ZW1kLWJvb3Rjb25mIgorCisjIEltcG9ydGVkIGZyb20gdGhlIG9sZCBndW1taWJvb3QgcmVjaXBlCitUVU5FX0NDQVJHU19yZW1vdmUgPSAiLW1mcG1hdGg9c3NlIgorQ09NUEFUSUJMRV9IT1NUID0gIih4ODZfNjQuKnxpLjg2LiopLWxpbnV4IgorQ09NUEFUSUJMRV9IT1NUX3g4Ni14MzIgPSAibnVsbCIKKworZG9fY29tcGlsZSgpIHsKKwlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9ImlhMzIiCisJaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgXTsgdGhlbgorCQlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9Ing2NCIKKwlmaQorCisJbmluamEgc3JjL2Jvb3QvZWZpLyR7U1lTVEVNRF9CT09UX0lNQUdFX1BSRUZJWH0ke1NZU1RFTURfQk9PVF9JTUFHRX0KK30KKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke0VGSV9GSUxFU19QQVRIfQorCWluc3RhbGwgJHtCfS9zcmMvYm9vdC9lZmkvc3lzdGVtZC1ib290Ki5lZmkgJHtEfSR7RUZJX0ZJTEVTX1BBVEh9LyR7U1lTVEVNRF9CT09UX0lNQUdFfQorfQorCitkb19kZXBsb3kgKCkgeworCWluc3RhbGwgJHtCfS9zcmMvYm9vdC9lZmkvc3lzdGVtZC1ib290Ki5lZmkgJHtERVBMT1lESVJ9Cit9CithZGR0YXNrIGRlcGxveSBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9fY29tcGlsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29tcGF0LXVuaXRzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29tcGF0LXVuaXRzLmJiCmluZGV4IGZhYTQyOGIuLjM2MWRjMWMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWNvbXBhdC11bml0cy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1jb21wYXQtdW5pdHMuYmIKQEAgLTEwLDYgKzEwLDggQEAKIAogaW5oZXJpdCBmZWF0dXJlc19jaGVjawogCitJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgorCiBBTExPV19FTVBUWV8ke1BOfSA9ICIxIgogCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAic3lzdGVtZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWNvbmZfMjQzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29uZl8yNDUuNS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29uZl8yNDMuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWNvbmZfMjQ1LjUuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXN5c3RlbWN0bC9zeXN0ZW1jdGwgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zeXN0ZW1jdGwvc3lzdGVtY3RsCmluZGV4IGViYWM4NjMuLjk5MGRlMWEgMTAwNzU1Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXN5c3RlbWN0bC9zeXN0ZW1jdGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc3lzdGVtY3RsL3N5c3RlbWN0bApAQCAtMTcyLDcgKzE3Miw3IEBACiAgICAgZGVmIF9wYXRoX2Zvcl91bml0KHNlbGYsIHVuaXQpOgogICAgICAgICBmb3IgbG9jYXRpb24gaW4gbG9jYXRpb25zOgogICAgICAgICAgICAgcGF0aCA9IHNlbGYucm9vdCAvIGxvY2F0aW9uIC8gInN5c3RlbSIgLyB1bml0Ci0gICAgICAgICAgICBpZiBwYXRoLmV4aXN0cygpOgorICAgICAgICAgICAgaWYgcGF0aC5leGlzdHMoKSBvciBwYXRoLmlzX3N5bWxpbmsoKToKICAgICAgICAgICAgICAgICByZXR1cm4gcGF0aAogCiAgICAgICAgIHJhaXNlIFN5c3RlbWRVbml0Tm90Rm91bmRFcnJvcihzZWxmLnJvb3QsIHVuaXQpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC5pbmMKaW5kZXggN2YzYTU5Yy4uMGY4MjU4MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLmluYwpAQCAtMTQsMTAgKzE0LDggQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuR1BMMjttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5MR1BMMi4xO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKIAotU1JDUkVWID0gImVmYjUzNmQwY2JlMmU1OGY4MGU1MDFkMTk5OTk5MjhjNzVlMDhmNmEiCi1TUkNCUkFOQ0ggPSAidjI0My1zdGFibGUiCitTUkNSRVYgPSAiOWE1MDZiN2U5MjkxZDk5N2E5MjBhZjlhYzI5OWU3YjgzNDM2ODExOSIKK1NSQ0JSQU5DSCA9ICJ2MjQ1LXN0YWJsZSIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQtc3RhYmxlLmdpdDtwcm90b2NvbD1naXQ7YnJhbmNoPSR7U1JDQlJBTkNIfSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKLQotUFZfYXBwZW5kID0gIiske1NSQ1BWfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtRml4LXRvLXJ1bi1lZmlfY2MtYW5kLWVmaV9sZC1jb3JyZWN0bHktd2hlbi1jcm9zcy1jby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtRml4LXRvLXJ1bi1lZmlfY2MtYW5kLWVmaV9sZC1jb3JyZWN0bHktd2hlbi1jcm9zcy1jby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJlMTliYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLUZpeC10by1ydW4tZWZpX2NjLWFuZC1lZmlfbGQtY29ycmVjdGx5LXdoZW4tY3Jvc3MtY28ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1Gcm9tIDUyNzQxM2VjMjQzNTY0YTg5ZmZhYWQ2MzY4ZDQ0NmRlNDQ0MTU5NzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDIxOjQyOjIzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCB0byBydW4gZWZpX2NjIGFuZCBlZmlfbGQgY29ycmVjdGx5IHdoZW4gY3Jvc3MtY29tcGlsaW5nCi0KLVdoZW4gY3Jvc3MtY29tcGlsaW5nLCBlZmlfY2MgYW5kIGVmaV9sZCBtYXkgdGFrZSB0aGUgZm9ybSBvZgotJ3h4eC1nY2MgLS1zeXNyb290PXh4eCcsIGFuZCB0aGlzIHdvdWxkIGNhdXNlIHJ1bl9jb21tYW5kIGFuZAotdGhlIGFsaWtlIGZhaWwuCi0KLUZpeCB0byBzcGxpdCB0aGVtIHRvIG1ha2UgY29tbWFuZHMgcnVuIGNvcnJlY3RseS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9ib290L2VmaS9tZXNvbi5idWlsZCB8IDE2ICsrKysrKysrKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZCBiL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZAotaW5kZXggOTkyYTNiYTRjLi45ZjllYzQ5MTEgMTAwNjQ0Ci0tLS0gYS9zcmMvYm9vdC9lZmkvbWVzb24uYnVpbGQKLSsrKyBiL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZAotQEAgLTE1Nyw3ICsxNTcsNyBAQCBpZiBoYXZlX2dudV9lZmkKLSAgICAgICAgICAgICAgICAgb19maWxlID0gY3VzdG9tX3RhcmdldChmaWxlICsgJy5vJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCA6IGZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IDogZmlsZSArICcubycsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA6IFtlZmlfY2MsICctYycsICdASU5QVVRAJywgJy1vJywgJ0BPVVRQVVRAJ10KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIDogZWZpX2NjLnNwbGl0KCkgKyBbJy1jJywgJ0BJTlBVVEAnLCAnLW8nLCAnQE9VVFBVVEAnXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGNvbXBpbGVfYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRfZmlsZXMgOiBlZmlfaGVhZGVycykKLSAgICAgICAgICAgICAgICAgaWYgKGNvbW1vbl9zb3VyY2VzICsgc3lzdGVtZF9ib290X3NvdXJjZXMpLmNvbnRhaW5zKGZpbGUpCi1AQCAtMTY4LDcgKzE2OCwxNyBAQCBpZiBoYXZlX2dudV9lZmkKLSAgICAgICAgICAgICAgICAgZW5kaWYKLSAgICAgICAgIGVuZGZvcmVhY2gKLSAKLS0gICAgICAgIGxpYmdjY19maWxlX25hbWUgPSBydW5fY29tbWFuZChlZmlfY2MsICctcHJpbnQtbGliZ2NjLWZpbGUtbmFtZScpLnN0ZG91dCgpLnN0cmlwKCkKLSsgICAgICAgIGZpbmRfbGliZ2NjX2NtZF9hbGwgPSBlZmlfY2MgKyAnIC1wcmludC1saWJnY2MtZmlsZS1uYW1lJwotKyAgICAgICAgZmluZF9saWJnY2NfY21kID0gZmluZF9saWJnY2NfY21kX2FsbC5zcGxpdCgpWzBdCi0rICAgICAgICBmaW5kX2xpYmdjY19hcmdzID0gW10KLSsgICAgICAgIGNtZF9hcmdzX2FsbCA9IGZpbmRfbGliZ2NjX2NtZF9hbGwuc3BsaXQoKQotKyAgICAgICAgZm9yZWFjaCBhcmcgOiBjbWRfYXJnc19hbGwKLSsgICAgICAgICAgICAgICAgaWYgYXJnICE9IGZpbmRfbGliZ2NjX2NtZAotKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRfbGliZ2NjX2FyZ3MgKz0gYXJnCi0rICAgICAgICAgICAgICAgIGVuZGlmCi0rICAgICAgICBlbmRmb3JlYWNoCi0rCi0rICAgICAgICBsaWJnY2NfZmlsZV9uYW1lID0gcnVuX2NvbW1hbmQoZmluZF9saWJnY2NfY21kLCBmaW5kX2xpYmdjY19hcmdzKS5zdGRvdXQoKS5zdHJpcCgpCi0gICAgICAgICBzeXN0ZW1kX2Jvb3RfZWZpX25hbWUgPSAnc3lzdGVtZC1ib290QDBALmVmaScuZm9ybWF0KEVGSV9NQUNISU5FX1RZUEVfTkFNRSkKLSAgICAgICAgIHN0dWJfZWZpX25hbWUgPSAnbGludXhAMEAuZWZpLnN0dWInLmZvcm1hdChFRklfTUFDSElORV9UWVBFX05BTUUpCi0gICAgICAgICBub191bmRlZmluZWRfc3ltYm9scyA9IGZpbmRfcHJvZ3JhbSgnbm8tdW5kZWZpbmVkLXN5bWJvbHMuc2gnKQotQEAgLTE3OSw3ICsxODksNyBAQCBpZiBoYXZlX2dudV9lZmkKLSAgICAgICAgICAgICAgICAgICAgICAgICB0dXBsZVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCA6IHR1cGxlWzJdLAotICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA6IHR1cGxlWzBdLAotLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgOiBbZWZpX2xkLCAnLW8nLCAnQE9VVFBVVEAnXSArCi0rICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA6IGVmaV9sZC5zcGxpdCgpICsgWyctbycsICdAT1VUUFVUQCddICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWZpX2xkZmxhZ3MgKyB0dXBsZVsyXSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnLWxlZmknLCAnLWxnbnVlZmknLCBsaWJnY2NfZmlsZV9uYW1lXSkKLSAKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtSGFuZGxlLW1pc3NpbmctZ3NoYWRvdy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtSGFuZGxlLW1pc3NpbmctZ3NoYWRvdy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmE1OTdkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1IYW5kbGUtbWlzc2luZy1nc2hhZG93LnBhdGNoCkBAIC0wLDAgKzEsMTcxIEBACitGcm9tIGVmOTU4MGVhMWUyZjFlNTdhZjNjN2RjYjBlYzM5MmJhOGRiYjVjOGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4IEtpZXJuYW4gPGFsZXgua2llcm5hbkBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDEwIE1hciAyMDIwIDExOjA1OjIwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEhhbmRsZSBtaXNzaW5nIGdzaGFkb3cKKworZ3NoYWRvdyB1c2FnZSBpcyBub3cgcHJlc2VudCBpbiB0aGUgdXNlcmRiIGNvZGUuIE1hc2sgYWxsIHVzZXMgb2YgaXQgdG8KK2FsbG93IGNvbXBpbGF0aW9uIG9uIG11c2wKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleCBLaWVybmFuIDxhbGV4LmtpZXJuYW5AZ21haWwuY29tPgorLS0tCisgc3JjL3NoYXJlZC9ncm91cC1yZWNvcmQtbnNzLmMgfCAyMCArKysrKysrKysrKysrKysrKysrKworIHNyYy9zaGFyZWQvZ3JvdXAtcmVjb3JkLW5zcy5oIHwgIDQgKysrKworIHNyYy9zaGFyZWQvdXNlcmRiLmMgICAgICAgICAgIHwgIDYgKysrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2dyb3VwLXJlY29yZC1uc3MuYyBiL3NyYy9zaGFyZWQvZ3JvdXAtcmVjb3JkLW5zcy5jCitpbmRleCA3NzkyNGYxYzQwNjcuLmM2NDQ5MDI1M2ZmMyAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvZ3JvdXAtcmVjb3JkLW5zcy5jCisrKysgYi9zcmMvc2hhcmVkL2dyb3VwLXJlY29yZC1uc3MuYworQEAgLTE5LDggKzE5LDEwIEBAIGludCBuc3NfZ3JvdXBfdG9fZ3JvdXBfcmVjb3JkKAorICAgICAgICAgaWYgKGlzZW1wdHkoZ3JwLT5ncl9uYW1lKSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgCisrI2lmIEVOQUJMRV9HU0hBRE9XCisgICAgICAgICBpZiAoc2dycCAmJiAhc3RyZXFfcHRyKHNncnAtPnNnX25hbXAsIGdycC0+Z3JfbmFtZSkpCisgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworKyNlbmRpZgorIAorICAgICAgICAgZyA9IGdyb3VwX3JlY29yZF9uZXcoKTsKKyAgICAgICAgIGlmICghZykKK0BAIC0zNiw2ICszOCw3IEBAIGludCBuc3NfZ3JvdXBfdG9fZ3JvdXBfcmVjb3JkKAorIAorICAgICAgICAgZy0+Z2lkID0gZ3JwLT5ncl9naWQ7CisgCisrI2lmIEVOQUJMRV9HU0hBRE9XCisgICAgICAgICBpZiAoc2dycCkgeworICAgICAgICAgICAgICAgICBpZiAoaGFzaGVkX3Bhc3N3b3JkX3ZhbGlkKHNncnAtPnNnX3Bhc3N3ZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBnLT5oYXNoZWRfcGFzc3dvcmQgPSBzdHJ2X25ldyhzZ3JwLT5zZ19wYXNzd2QpOworQEAgLTUxLDYgKzU0LDcgQEAgaW50IG5zc19ncm91cF90b19ncm91cF9yZWNvcmQoCisgICAgICAgICAgICAgICAgIGlmICghZy0+YWRtaW5pc3RyYXRvcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07CisgICAgICAgICB9CisrI2VuZGlmCisgCisgICAgICAgICByID0ganNvbl9idWlsZCgmZy0+anNvbiwgSlNPTl9CVUlMRF9PQkpFQ1QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPTl9CVUlMRF9QQUlSKCJncm91cE5hbWUiLCBKU09OX0JVSUxEX1NUUklORyhnLT5ncm91cF9uYW1lKSksCitAQCAtNzYsNiArODAsNyBAQCBpbnQgbnNzX3NncnBfZm9yX2dyb3VwKGNvbnN0IHN0cnVjdCBncm91cCAqZ3JwLCBzdHJ1Y3Qgc2dycCAqcmV0X3NncnAsIGNoYXIgKipyZQorICAgICAgICAgYXNzZXJ0KHJldF9zZ3JwKTsKKyAgICAgICAgIGFzc2VydChyZXRfYnVmZmVyKTsKKyAKKysjaWYgRU5BQkxFX0dTSEFET1cKKyAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICAgX2NsZWFudXBfZnJlZV8gY2hhciAqYnVmID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgc3RydWN0IHNncnAgc2dycCwgKnJlc3VsdDsKK0BAIC0xMDQsNiArMTA5LDkgQEAgaW50IG5zc19zZ3JwX2Zvcl9ncm91cChjb25zdCBzdHJ1Y3QgZ3JvdXAgKmdycCwgc3RydWN0IHNncnAgKnJldF9zZ3JwLCBjaGFyICoqcmUKKyAgICAgICAgICAgICAgICAgYnVmbGVuICo9IDI7CisgICAgICAgICAgICAgICAgIGJ1ZiA9IG1mcmVlKGJ1Zik7CisgICAgICAgICB9CisrI2Vsc2UKKysgICAgICAgIHJldHVybiAtRVNSQ0g7CisrI2VuZGlmCisgfQorIAorIGludCBuc3NfZ3JvdXBfcmVjb3JkX2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSwgR3JvdXBSZWNvcmQgKipyZXQpIHsKK0BAIC0xMTEsNyArMTE5LDkgQEAgaW50IG5zc19ncm91cF9yZWNvcmRfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lLCBHcm91cFJlY29yZCAqKnJldCkgeworICAgICAgICAgc3RydWN0IGdyb3VwIGdycCwgKnJlc3VsdDsKKyAgICAgICAgIGJvb2wgaW5jb21wbGV0ZSA9IGZhbHNlOworICAgICAgICAgc2l6ZV90IGJ1ZmxlbiA9IDQwOTY7CisrI2lmIEVOQUJMRV9HU0hBRE9XCisgICAgICAgICBzdHJ1Y3Qgc2dycCBzZ3JwOworKyNlbmRpZgorICAgICAgICAgaW50IHI7CisgCisgICAgICAgICBhc3NlcnQobmFtZSk7CitAQCAtMTQxLDYgKzE1MSw3IEBAIGludCBuc3NfZ3JvdXBfcmVjb3JkX2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSwgR3JvdXBSZWNvcmQgKipyZXQpIHsKKyAgICAgICAgICAgICAgICAgYnVmID0gbWZyZWUoYnVmKTsKKyAgICAgICAgIH0KKyAKKysjaWYgRU5BQkxFX0dTSEFET1cKKyAgICAgICAgIHIgPSBuc3Nfc2dycF9mb3JfZ3JvdXAocmVzdWx0LCAmc2dycCwgJnNidWYpOworICAgICAgICAgaWYgKHIgPCAwKSB7CisgICAgICAgICAgICAgICAgIGxvZ19kZWJ1Z19lcnJubyhyLCAiRmFpbGVkIHRvIGRvIHNoYWRvdyBsb29rdXAgZm9yIGdyb3VwICVzLCBpZ25vcmluZzogJW0iLCByZXN1bHQtPmdyX25hbWUpOworQEAgLTE0OCw2ICsxNTksOSBAQCBpbnQgbnNzX2dyb3VwX3JlY29yZF9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUsIEdyb3VwUmVjb3JkICoqcmV0KSB7CisgICAgICAgICB9CisgCisgICAgICAgICByID0gbnNzX2dyb3VwX3RvX2dyb3VwX3JlY29yZChyZXN1bHQsIHIgPj0gMCA/ICZzZ3JwIDogTlVMTCwgcmV0KTsKKysjZWxzZQorKyAgICAgICAgciA9IG5zc19ncm91cF90b19ncm91cF9yZWNvcmQocmVzdWx0LCBOVUxMLCByZXQpOworKyNlbmRpZgorICAgICAgICAgaWYgKHIgPCAwKQorICAgICAgICAgICAgICAgICByZXR1cm4gcjsKKyAKK0BAIC0xNjAsNyArMTc0LDkgQEAgaW50IG5zc19ncm91cF9yZWNvcmRfYnlfZ2lkKGdpZF90IGdpZCwgR3JvdXBSZWNvcmQgKipyZXQpIHsKKyAgICAgICAgIHN0cnVjdCBncm91cCBncnAsICpyZXN1bHQ7CisgICAgICAgICBib29sIGluY29tcGxldGUgPSBmYWxzZTsKKyAgICAgICAgIHNpemVfdCBidWZsZW4gPSA0MDk2OworKyNpZiBFTkFCTEVfR1NIQURPVworICAgICAgICAgc3RydWN0IHNncnAgc2dycDsKKysjZW5kaWYKKyAgICAgICAgIGludCByOworIAorICAgICAgICAgYXNzZXJ0KHJldCk7CitAQCAtMTg4LDYgKzIwNCw3IEBAIGludCBuc3NfZ3JvdXBfcmVjb3JkX2J5X2dpZChnaWRfdCBnaWQsIEdyb3VwUmVjb3JkICoqcmV0KSB7CisgICAgICAgICAgICAgICAgIGJ1ZiA9IG1mcmVlKGJ1Zik7CisgICAgICAgICB9CisgCisrI2lmIEVOQUJMRV9HU0hBRE9XCisgICAgICAgICByID0gbnNzX3NncnBfZm9yX2dyb3VwKHJlc3VsdCwgJnNncnAsICZzYnVmKTsKKyAgICAgICAgIGlmIChyIDwgMCkgeworICAgICAgICAgICAgICAgICBsb2dfZGVidWdfZXJybm8ociwgIkZhaWxlZCB0byBkbyBzaGFkb3cgbG9va3VwIGZvciBncm91cCAlcywgaWdub3Jpbmc6ICVtIiwgcmVzdWx0LT5ncl9uYW1lKTsKK0BAIC0xOTUsNiArMjEyLDkgQEAgaW50IG5zc19ncm91cF9yZWNvcmRfYnlfZ2lkKGdpZF90IGdpZCwgR3JvdXBSZWNvcmQgKipyZXQpIHsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIHIgPSBuc3NfZ3JvdXBfdG9fZ3JvdXBfcmVjb3JkKHJlc3VsdCwgciA+PSAwID8gJnNncnAgOiBOVUxMLCByZXQpOworKyNlbHNlCisrICAgICAgICByID0gbnNzX2dyb3VwX3RvX2dyb3VwX3JlY29yZChyZXN1bHQsIE5VTEwsIHJldCk7CisrI2VuZGlmCisgICAgICAgICBpZiAociA8IDApCisgICAgICAgICAgICAgICAgIHJldHVybiByOworIAorZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvZ3JvdXAtcmVjb3JkLW5zcy5oIGIvc3JjL3NoYXJlZC9ncm91cC1yZWNvcmQtbnNzLmgKK2luZGV4IDM4YjI5OTUxNzhmZi4uZDdkOTVjNDRjZjExIDEwMDY0NAorLS0tIGEvc3JjL3NoYXJlZC9ncm91cC1yZWNvcmQtbnNzLmgKKysrKyBiL3NyYy9zaGFyZWQvZ3JvdXAtcmVjb3JkLW5zcy5oCitAQCAtMiw3ICsyLDExIEBACisgI3ByYWdtYSBvbmNlCisgCisgI2luY2x1ZGUgPGdycC5oPgorKyNpZiBFTkFCTEVfR1NIQURPVworICNpbmNsdWRlIDxnc2hhZG93Lmg+CisrI2Vsc2UKKytzdHJ1Y3Qgc2dycDsKKysjZW5kaWYKKyAKKyAjaW5jbHVkZSAiZ3JvdXAtcmVjb3JkLmgiCisgCitkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC91c2VyZGIuYyBiL3NyYy9zaGFyZWQvdXNlcmRiLmMKK2luZGV4IDkyZjg3OTY3NjhkNy4uNWQ5MTI4NjJmODVjIDEwMDY0NAorLS0tIGEvc3JjL3NoYXJlZC91c2VyZGIuYworKysrIGIvc3JjL3NoYXJlZC91c2VyZGIuYworQEAgLTkyNCwxMyArOTI0LDE2IEBAIGludCBncm91cGRiX2l0ZXJhdG9yX2dldChVc2VyREJJdGVyYXRvciAqaXRlcmF0b3IsIEdyb3VwUmVjb3JkICoqcmV0KSB7CisgICAgICAgICAgICAgICAgIGlmIChncikgeworICAgICAgICAgICAgICAgICAgICAgICAgIF9jbGVhbnVwX2ZyZWVfIGNoYXIgKmJ1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbmNvbXBsZXRlID0gZmFsc2U7CisrI2lmIEVOQUJMRV9HU0hBRE9XCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNncnAgc2dycDsKKysjZW5kaWYKKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyZXFfcHRyKGdyLT5ncl9uYW1lLCAicm9vdCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3ItPnN5bnRoZXNpemVfcm9vdCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnci0+Z3JfZ2lkID09IEdJRF9OT0JPRFkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvci0+c3ludGhlc2l6ZV9ub2JvZHkgPSBmYWxzZTsKKyAKKysjaWYgRU5BQkxFX0dTSEFET1cKKyAgICAgICAgICAgICAgICAgICAgICAgICByID0gbnNzX3NncnBfZm9yX2dyb3VwKGdyLCAmc2dycCwgJmJ1ZmZlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZGVidWdfZXJybm8ociwgIkZhaWxlZCB0byBhY3F1aXJlIHNoYWRvdyBlbnRyeSBmb3IgZ3JvdXAgJXMsIGlnbm9yaW5nOiAlbSIsIGdyLT5ncl9uYW1lKTsKK0BAIC05MzgsNiArOTQxLDkgQEAgaW50IGdyb3VwZGJfaXRlcmF0b3JfZ2V0KFVzZXJEQkl0ZXJhdG9yICppdGVyYXRvciwgR3JvdXBSZWNvcmQgKipyZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgCisgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG5zc19ncm91cF90b19ncm91cF9yZWNvcmQoZ3IsIHIgPj0gMCA/ICZzZ3JwIDogTlVMTCwgcmV0KTsKKysjZWxzZQorKyAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuc3NfZ3JvdXBfdG9fZ3JvdXBfcmVjb3JkKGdyLCBOVUxMLCByZXQpOworKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByOworIAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1SZXZlcnQtbWVzb24tcHJpbnQtRUZJLUNDLWNvbmZpZ3VyYXRpb24tbmljZWx5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1SZXZlcnQtbWVzb24tcHJpbnQtRUZJLUNDLWNvbmZpZ3VyYXRpb24tbmljZWx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDE0ZTI1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtUmV2ZXJ0LW1lc29uLXByaW50LUVGSS1DQy1jb25maWd1cmF0aW9uLW5pY2VseS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gMGJmNTMwYWFjMTUyNjMwNTAwOTM5ZGIzMWY5OGQ5MzMxNThmZGFiZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMjYgRmViIDIwMTkgMTQ6Mjc6NDkgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gUmV2ZXJ0ICJtZXNvbjogcHJpbnQgRUZJIENDIGNvbmZpZ3VyYXRpb24gbmljZWx5IgotCi1UaGlzIHJldmVydHMgY29tbWl0IGM1MTJkZmI5YWM5NDhkZGIxY2VkMGRhYjA3YjlkYWM4OGIxOTgyOTMuCi0KLVRoaXMgcGF0Y2ggaXMgaGVyZSBiZWNhdXNlIHdlIGhhdmVuJ3QgZmlndXJlZCBvdXQgaG93IHRvIHBhc3MKLXBhcmFtZXRlciB0byBlZmktY2MgaWYgaXQncyBhbiBhcnJheSBpbiBzeXN0ZW1kLWJvb3QgcmVjaXBlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBtZXNvbi5idWlsZCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IDcwZmIyMTguLjMwZGY4MzQgMTAwNjQ0Ci0tLS0gYS9tZXNvbi5idWlsZAotKysrIGIvbWVzb24uYnVpbGQKLUBAIC0zMTM4LDcgKzMxMzgsNyBAQCBpZiBjb25mLmdldCgnRU5BQkxFX0VGSScpID09IDEKLSAgICAgICAgIGlmIGhhdmVfZ251X2VmaQotICAgICAgICAgICAgICAgICBzdGF0dXMgKz0gWwotICAgICAgICAgICAgICAgICAgICAgICAgICdFRkkgbWFjaGluZSB0eXBlOiAgICAgICAgICAgICAgICAgIEAwQCcuZm9ybWF0KEVGSV9NQUNISU5FX1RZUEVfTkFNRSksCi0tICAgICAgICAgICAgICAgICAgICAgICAgJ0VGSSBDQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQoJyAnLmpvaW4oZWZpX2NjKSksCi0rICAgICAgICAgICAgICAgICAgICAgICAgJ0VGSSBDQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQoZWZpX2NjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnRUZJIGxpYiBkaXJlY3Rvcnk6ICAgICAgICAgICAgICAgICBAMEAnLmZvcm1hdChlZmlfbGliZGlyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnRUZJIGxkcyBkaXJlY3Rvcnk6ICAgICAgICAgICAgICAgICBAMEAnLmZvcm1hdChlZmlfbGRzZGlyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnRUZJIGluY2x1ZGUgZGlyZWN0b3J5OiAgICAgICAgICAgICBAMEAnLmZvcm1hdChlZmlfaW5jZGlyKV0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1SZXZlcnQtbWVzb24tdXNlLWFuLWFycmF5LW9wdGlvbi1mb3ItZWZpLWNjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1SZXZlcnQtbWVzb24tdXNlLWFuLWFycmF5LW9wdGlvbi1mb3ItZWZpLWNjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDJlYmY2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtUmV2ZXJ0LW1lc29uLXVzZS1hbi1hcnJheS1vcHRpb24tZm9yLWVmaS1jYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLUZyb20gMDAzMGRjYmFjMWE5MTc3ZWY3YTI4YWYyMDlhYzY3MTQ5Yjg5OWY1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMjYgRmViIDIwMTkgMTQ6MTc6MjUgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gUmV2ZXJ0ICJtZXNvbjogdXNlIGFuIGFycmF5IG9wdGlvbiBmb3IgZWZpLWNjIgotCi1UaGlzIHJldmVydHMgY29tbWl0IDU5NTM0M2ZiNGM5OWMyNjc5ZDM0N2VmN2MxOWRlYmZiZmVkNjM0MmUuCi0KLVRoaXMgcGF0Y2ggaXMgaGVyZSBiZWNhdXNlIHdlIGhhdmVuJ3QgZmlndXJlZCBvdXQgaG93IHRvIHBhc3MKLXBhcmFtZXRlciB0byBlZmktY2MgaWYgaXQncyBhbiBhcnJheSBpbiBzeXN0ZW1kLWJvb3QgcmVjaXBlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBtZXNvbl9vcHRpb25zLnR4dCAgICAgICAgfCAgMiArLQotIHNyYy9ib290L2VmaS9tZXNvbi5idWlsZCB8IDExICsrKysrKy0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0Ci1pbmRleCAwNDRiYjc5Li4zZDI4YmZkIDEwMDY0NAotLS0tIGEvbWVzb25fb3B0aW9ucy50eHQKLSsrKyBiL21lc29uX29wdGlvbnMudHh0Ci1AQCAtMjkyLDcgKzI5Miw3IEBAIG9wdGlvbignZGJ1cycsIHR5cGUgOiAnY29tYm8nLCBjaG9pY2VzIDogWydhdXRvJywgJ3RydWUnLCAnZmFsc2UnXSwKLSAKLSBvcHRpb24oJ2dudS1lZmknLCB0eXBlIDogJ2NvbWJvJywgY2hvaWNlcyA6IFsnYXV0bycsICd0cnVlJywgJ2ZhbHNlJ10sCi0gICAgICAgIGRlc2NyaXB0aW9uIDogJ2dudS1lZmkgc3VwcG9ydCBmb3Igc2QtYm9vdCcpCi0tb3B0aW9uKCdlZmktY2MnLCB0eXBlIDogJ2FycmF5JywKLStvcHRpb24oJ2VmaS1jYycsIHR5cGUgOiAnc3RyaW5nJywKLSAgICAgICAgZGVzY3JpcHRpb24gOiAndGhlIGNvbXBpbGVyIHRvIHVzZSBmb3IgRUZJIG1vZHVsZXMnKQotIG9wdGlvbignZWZpLWxkJywgdHlwZSA6ICdzdHJpbmcnLAotICAgICAgICBkZXNjcmlwdGlvbiA6ICd0aGUgbGlua2VyIHRvIHVzZSBmb3IgRUZJIG1vZHVsZXMnKQotZGlmZiAtLWdpdCBhL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZCBiL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZAotaW5kZXggMjE0MDE1MS4uZDhkYjNhMSAxMDA2NDQKLS0tLSBhL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZAotKysrIGIvc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkCi1AQCAtMzQsOCArMzQsOCBAQCBzdHViX3NvdXJjZXMgPSAnJycKLSAKLSBpZiBjb25mLmdldCgnRU5BQkxFX0VGSScpID09IDEgYW5kIGdldF9vcHRpb24oJ2dudS1lZmknKSAhPSAnZmFsc2UnCi0gICAgICAgICBlZmlfY2MgPSBnZXRfb3B0aW9uKCdlZmktY2MnKQotLSAgICAgICAgaWYgZWZpX2NjLmxlbmd0aCgpID09IDAKLS0gICAgICAgICAgICAgICAgZWZpX2NjID0gY2MuY21kX2FycmF5KCkKLSsgICAgICAgIGlmIGVmaV9jYyA9PSAnJwotKyAgICAgICAgICAgICAgICBlZmlfY2MgPSAnICcuam9pbihjYy5jbWRfYXJyYXkoKSkKLSAgICAgICAgIGVuZGlmCi0gICAgICAgICBlZmlfbGQgPSBnZXRfb3B0aW9uKCdlZmktbGQnKQotICAgICAgICAgaWYgZWZpX2xkID09ICcnCi1AQCAtNTcsNyArNTcsOCBAQCBpZiBjb25mLmdldCgnRU5BQkxFX0VGSScpID09IDEgYW5kIGdldF9vcHRpb24oJ2dudS1lZmknKSAhPSAnZmFsc2UnCi0gCi0gICAgICAgICBlZmlfbGliZGlyID0gZ2V0X29wdGlvbignZWZpLWxpYmRpcicpCi0gICAgICAgICBpZiBlZmlfbGliZGlyID09ICcnCi0tICAgICAgICAgICAgICAgIHJldCA9IHJ1bl9jb21tYW5kKGVmaV9jYyArIFsnLXByaW50LW11bHRpLW9zLWRpcmVjdG9yeSddKQotKyAgICAgICAgICAgICAgICBjbWQgPSAnY2QgL3Vzci9saWIvJChAMEAgLXByaW50LW11bHRpLW9zLWRpcmVjdG9yeSkgJiYgcHdkJy5mb3JtYXQoZWZpX2NjKQotKyAgICAgICAgICAgICAgICByZXQgPSBydW5fY29tbWFuZCgnc2gnLCAnLWMnLCBjbWQpCi0gICAgICAgICAgICAgICAgIGlmIHJldC5yZXR1cm5jb2RlKCkgPT0gMAotICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggPSBqb2luX3BhdGhzKCcvdXNyL2xpYicsIHJldC5zdGRvdXQoKS5zdHJpcCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHJ1bl9jb21tYW5kKCdyZWFscGF0aCcsICctZScsIHBhdGgpCi1AQCAtMTUyLDcgKzE1Myw3IEBAIGlmIGhhdmVfZ251X2VmaQotICAgICAgICAgICAgICAgICBvX2ZpbGUgPSBjdXN0b21fdGFyZ2V0KGZpbGUgKyAnLm8nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0IDogZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgOiBmaWxlICsgJy5vJywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIDogZWZpX2NjICsgWyctYycsICdASU5QVVRAJywgJy1vJywgJ0BPVVRQVVRAJ10KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIDogW2VmaV9jYywgJy1jJywgJ0BJTlBVVEAnLCAnLW8nLCAnQE9VVFBVVEAnXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGNvbXBpbGVfYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRfZmlsZXMgOiBlZmlfaGVhZGVycykKLSAgICAgICAgICAgICAgICAgaWYgKGNvbW1vbl9zb3VyY2VzICsgc3lzdGVtZF9ib290X3NvdXJjZXMpLmNvbnRhaW5zKGZpbGUpCi1AQCAtMTYzLDcgKzE2NCw3IEBAIGlmIGhhdmVfZ251X2VmaQotICAgICAgICAgICAgICAgICBlbmRpZgotICAgICAgICAgZW5kZm9yZWFjaAotIAotLSAgICAgICAgbGliZ2NjX2ZpbGVfbmFtZSA9IHJ1bl9jb21tYW5kKGVmaV9jYyArIFsnLXByaW50LWxpYmdjYy1maWxlLW5hbWUnXSkuc3Rkb3V0KCkuc3RyaXAoKQotKyAgICAgICAgbGliZ2NjX2ZpbGVfbmFtZSA9IHJ1bl9jb21tYW5kKGVmaV9jYywgJy1wcmludC1saWJnY2MtZmlsZS1uYW1lJykuc3Rkb3V0KCkuc3RyaXAoKQotICAgICAgICAgc3lzdGVtZF9ib290X2VmaV9uYW1lID0gJ3N5c3RlbWQtYm9vdEAwQC5lZmknLmZvcm1hdChFRklfTUFDSElORV9UWVBFX05BTUUpCi0gICAgICAgICBzdHViX2VmaV9uYW1lID0gJ2xpbnV4QDBALmVmaS5zdHViJy5mb3JtYXQoRUZJX01BQ0hJTkVfVFlQRV9OQU1FKQotICAgICAgICAgbm9fdW5kZWZpbmVkX3N5bWJvbHMgPSBmaW5kX3Byb2dyYW0oJ25vLXVuZGVmaW5lZC1zeW1ib2xzLnNoJykKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoCmluZGV4IDczZTY1ZmYuLmQwOTgwODQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1Gcm9tIDk4MjU0ZTQ3OThlNzlkNTJhYzZiNTYyNjE2Y2QyNDQxMjBmNmUyMzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGU5Yzk5MzgxNjA3N2MxYWU2N2QyNWQ0NjRmMmVjZTJhMDkwZjMwYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUaHUsIDIxIEZlYiAyMDE5IDE2OjIzOjI0ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMS81XSBiaW5mbXQ6IERvbid0IGluc3RhbGwgZGVwZW5kZW5jeSBsaW5rcyBhdCBpbnN0YWxsIHRpbWUgCi0gZm9yIHRoZSBiaW5mbXQgc2VydmljZXMKK1N1YmplY3Q6IFtQQVRDSF0gYmluZm10OiBEb24ndCBpbnN0YWxsIGRlcGVuZGVuY3kgbGlua3MgYXQgaW5zdGFsbCB0aW1lIGZvcgorIHRoZSBiaW5mbXQgc2VydmljZXMKIAogdXNlIFtJbnN0YWxsXSBibG9ja3Mgc28gdGhhdCB0aGV5IGdldCBjcmVhdGVkIHdoZW4gdGhlIHNlcnZpY2UgaXMgZW5hYmxlZAogbGlrZSBhIHRyYWRpdGlvbmFsIHNlcnZpY2UuCkBAIC0xOCw2ICsxOCw3IEBACiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBbcmViYXNlZCBmb3Igc3lzdGVtZCAyNDNdCiBTaWduZWQtb2ZmLWJ5OiBTY290dCBNdXJyYXkgPHNjb3R0Lm11cnJheUBrb25zdWxrby5jb20+CisKIC0tLQogIHVuaXRzL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICB8IDYgKystLS0tCiAgdW5pdHMvcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50IHwgMyArKysKQEAgLTI1LDEwICsyNiwxMCBAQAogIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvdW5pdHMvbWVzb24uYnVpbGQgYi91bml0cy9tZXNvbi5idWlsZAotaW5kZXggZTFlZTlmODZjMy4uNmJiNzc3MWIzNiAxMDA2NDQKK2luZGV4IGVhOTFmMGNjOWVhNy4uMjUxODZmODhkZmViIDEwMDY0NAogLS0tIGEvdW5pdHMvbWVzb24uYnVpbGQKICsrKyBiL3VuaXRzL21lc29uLmJ1aWxkCi1AQCAtNDYsOCArNDYsNyBAQCB1bml0cyA9IFsKK0BAIC01Miw4ICs1Miw3IEBAIHVuaXRzID0gWwogICAgICAgICAgWydwb3dlcm9mZi50YXJnZXQnLCAgICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICdydW5sZXZlbDAudGFyZ2V0J10sCiAgICAgICAgICBbJ3ByaW50ZXIudGFyZ2V0JywgICAgICAgICAgICAgICAgICAgICAgJyddLApAQCAtMzgsMTggKzM5LDE4IEBACiAgICAgICAgICBbJ3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLm1vdW50JywgICAgICAgJ0VOQUJMRV9CSU5GTVQnXSwKICAgICAgICAgIFsncmVib290LnRhcmdldCcsICAgICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAncnVubGV2ZWw2LnRhcmdldCBjdHJsLWFsdC1kZWwudGFyZ2V0J10sCi1AQCAtMTMwLDggKzEyOSw3IEBAIGluX3VuaXRzID0gWwotICAgICAgICAgWydzeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnNlcnZpY2UnLCAnJ10sCi0gICAgICAgICBbJ3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwuc2VydmljZScsICAgICcnXSwKK0BAIC0xNjEsOCArMTYwLDcgQEAgaW5fdW5pdHMgPSBbCisgICAgICAgICBbJ3JjLWxvY2FsLnNlcnZpY2UnLCAgICAgICAgICAgICAgICAgICAgICdIQVZFX1NZU1ZfQ09NUEFUJ10sCisgICAgICAgICBbJ3Jlc2N1ZS5zZXJ2aWNlJywgICAgICAgICAgICAgICAgICAgICAgICcnXSwKICAgICAgICAgIFsnc3lzdGVtZC1iYWNrbGlnaHRALnNlcnZpY2UnLCAgICAgICAgICAgJ0VOQUJMRV9CQUNLTElHSFQnXSwKIC0gICAgICAgIFsnc3lzdGVtZC1iaW5mbXQuc2VydmljZScsICAgICAgICAgICAgICAgJ0VOQUJMRV9CSU5GTVQnLAogLSAgICAgICAgICdzeXNpbml0LnRhcmdldC53YW50cy8nXSwKICsgICAgICAgIFsnc3lzdGVtZC1iaW5mbXQuc2VydmljZScsICAgICAgICAgICAgICAgJ0VOQUJMRV9CSU5GTVQnXSwKICAgICAgICAgIFsnc3lzdGVtZC1ibGVzcy1ib290LnNlcnZpY2UnLCAgICAgICAgICAgJ0VOQUJMRV9FRkkgSEFWRV9CTEtJRCddLAogICAgICAgICAgWydzeXN0ZW1kLWJvb3QtY2hlY2stbm8tZmFpbHVyZXMuc2VydmljZScsICcnXSwKLSAgICAgICAgIFsnc3lzdGVtZC1ib290LXN5c3RlbS10b2tlbi5zZXJ2aWNlJywgICAgJ0VOQUJMRV9FRkknLAorICAgICAgICAgWydzeXN0ZW1kLWNvcmVkdW1wQC5zZXJ2aWNlJywgICAgICAgICAgICAnRU5BQkxFX0NPUkVEVU1QJ10sCiBkaWZmIC0tZ2l0IGEvdW5pdHMvcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50IGIvdW5pdHMvcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50Ci1pbmRleCAzMGE2YmM5OTE4Li40MjMxZjNiNzBmIDEwMDY0NAoraW5kZXggMzBhNmJjOTkxODQ0Li40MjMxZjNiNzBmZTkgMTAwNjQ0CiAtLS0gYS91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKICsrKyBiL3VuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAogQEAgLTE4LDMgKzE4LDYgQEAgQ29uZGl0aW9uUGF0aElzUmVhZFdyaXRlPS9wcm9jL3N5cy8KQEAgLTYwLDcgKzYxLDcgQEAKICtbSW5zdGFsbF0KICtXYW50ZWRCeT1zeXNpbml0LnRhcmdldAogZGlmZiAtLWdpdCBhL3VuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4gYi91bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluCi1pbmRleCBlOTQwYzdjOWFkLi42YmU3ZjVjYzliIDEwMDY0NAoraW5kZXggMGMwZjI2NDUxYjY3Li43NjNjNGM0NjZjMTYgMTAwNjQ0CiAtLS0gYS91bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluCiArKysgYi91bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluCiBAQCAtMTQsNiArMTQsNyBAQCBEb2N1bWVudGF0aW9uPWh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL2h0bWwvbGF0ZXN0L2FkbWluLWd1aWRlL2JpbmZtdC1taXNjLmh0bQpAQCAtNjksOSArNzAsOSBAQAogIENvbmZsaWN0cz1zaHV0ZG93bi50YXJnZXQKICtXYW50cz1wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKICBBZnRlcj1wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKKyBBZnRlcj1wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5tb3VudAogIEJlZm9yZT1zeXNpbml0LnRhcmdldCBzaHV0ZG93bi50YXJnZXQKLSBDb25kaXRpb25QYXRoSXNSZWFkV3JpdGU9L3Byb2Mvc3lzLwotQEAgLTI4LDMgKzI5LDYgQEAgVHlwZT1vbmVzaG90CitAQCAtMjksMyArMzAsNiBAQCBUeXBlPW9uZXNob3QKICBSZW1haW5BZnRlckV4aXQ9eWVzCiAgRXhlY1N0YXJ0PUByb290bGliZXhlY2RpckAvc3lzdGVtZC1iaW5mbXQKICBUaW1lb3V0U2VjPTkwcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1kby1ub3QtZGlzYWJsZS1idWZmZXItaW4td3JpdGluZy1maWxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtZG8tbm90LWRpc2FibGUtYnVmZmVyLWluLXdyaXRpbmctZmlsZXMucGF0Y2gKaW5kZXggMmY0ZGFmOC4uNGVlZWM3YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1kby1ub3QtZGlzYWJsZS1idWZmZXItaW4td3JpdGluZy1maWxlcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWRvLW5vdC1kaXNhYmxlLWJ1ZmZlci1pbi13cml0aW5nLWZpbGVzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA4NWUzYzMwNDY1NjJlYzI0ZmMyZjA5ZWJmZDA4YmY5ZjE2ODA5MWQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmOTJmZDdlNzdlZDVhYWIyZGRhMDFhMjBlNjg5MWMzN2YwOTQxNWQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogRnJpLCAxIE1hciAyMDE5IDE1OjIyOjE1ICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIGRvIG5vdCBkaXNhYmxlIGJ1ZmZlciBpbiB3cml0aW5nIGZpbGVzCkBAIC0xOCw4ICsxOCw5IEBACiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KIFtyZWJhc2VkIGZvciBzeXN0ZW1kIDI0M10KIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KKwogLS0tCi0gc3JjL2Jhc2ljL2Nncm91cC11dGlsLmMgICAgICAgICAgICAgICAgIHwgMTQgKysrKysrKy0tLS0tLS0KKyBzcmMvYmFzaWMvY2dyb3VwLXV0aWwuYyAgICAgICAgICAgICAgICAgfCAxMCArKysrKy0tLS0tCiAgc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMgICAgICAgICAgICAgICAgIHwgIDQgKystLQogIHNyYy9iYXNpYy9zbWFjay11dGlsLmMgICAgICAgICAgICAgICAgICB8ICAyICstCiAgc3JjL2Jhc2ljL3V0aWwuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KQEAgLTMxLDI3ICszMiwxOSBAQAogIHNyYy9sb2dpbi9sb2dpbmQtZGJ1cy5jICAgICAgICAgICAgICAgICB8ICAyICstCiAgc3JjL25zcGF3bi9uc3Bhd24tY2dyb3VwLmMgICAgICAgICAgICAgIHwgIDIgKy0KICBzcmMvbnNwYXduL25zcGF3bi5jICAgICAgICAgICAgICAgICAgICAgfCAgNiArKystLS0KKyBzcmMvc2hhcmVkL2Nncm91cC1zZXR1cC5jICAgICAgICAgICAgICAgfCAgNCArKy0tCiAgc3JjL3NoYXJlZC9zeXNjdGwtdXRpbC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvc2xlZXAvc2xlZXAuYyAgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKysrKy0tLS0tCisgc3JjL3NsZWVwL3NsZWVwLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDggKysrKy0tLS0KICBzcmMvdWRldi91ZGV2YWRtLXRyaWdnZXIuYyAgICAgICAgICAgICAgfCAgMiArLQogIHNyYy91ZGV2L3VkZXZkLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiAgc3JjL3Zjb25zb2xlL3Zjb25zb2xlLXNldHVwLmMgICAgICAgICAgIHwgIDIgKy0KLSAxNyBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKKyAxOCBmaWxlcyBjaGFuZ2VkLCAzNSBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9jZ3JvdXAtdXRpbC5jIGIvc3JjL2Jhc2ljL2Nncm91cC11dGlsLmMKLWluZGV4IDdiNTgzOWNjZDYuLjE4ZjZlOGZmYzggMTAwNjQ0CitpbmRleCBhNTE0MWY0Y2JlZGQuLjA0YzA2ZTdhNTVjYiAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9jZ3JvdXAtdXRpbC5jCiArKysgYi9zcmMvYmFzaWMvY2dyb3VwLXV0aWwuYwotQEAgLTg2MCw3ICs4NjAsNyBAQCBpbnQgY2dfYXR0YWNoKGNvbnN0IGNoYXIgKmNvbnRyb2xsZXIsIGNvbnN0IGNoYXIgKnBhdGgsIHBpZF90IHBpZCkgewotIAotICAgICAgICAgeHNwcmludGYoYywgUElEX0ZNVCAiXG4iLCBwaWQpOwotIAotLSAgICAgICAgciA9IHdyaXRlX3N0cmluZ19maWxlKGZzLCBjLCBXUklURV9TVFJJTkdfRklMRV9ESVNBQkxFX0JVRkZFUik7Ci0rICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoZnMsIGMsIDApOwotICAgICAgICAgaWYgKHIgPCAwKQotICAgICAgICAgICAgICAgICByZXR1cm4gcjsKLSAKLUBAIC0xMTQyLDcgKzExNDIsNyBAQCBpbnQgY2dfaW5zdGFsbF9yZWxlYXNlX2FnZW50KGNvbnN0IGNoYXIgKmNvbnRyb2xsZXIsIGNvbnN0IGNoYXIgKmFnZW50KSB7CitAQCAtNzM5LDcgKzczOSw3IEBAIGludCBjZ19pbnN0YWxsX3JlbGVhc2VfYWdlbnQoY29uc3QgY2hhciAqY29udHJvbGxlciwgY29uc3QgY2hhciAqYWdlbnQpIHsKICAKICAgICAgICAgIHNjID0gc3Ryc3RyaXAoY29udGVudHMpOwogICAgICAgICAgaWYgKGlzZW1wdHkoc2MpKSB7CkBAIC02MCw3ICs1Myw3IEBACiAgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICAgIH0gZWxzZSBpZiAoIXBhdGhfZXF1YWwoc2MsIGFnZW50KSkKLUBAIC0xMTYwLDcgKzExNjAsNyBAQCBpbnQgY2dfaW5zdGFsbF9yZWxlYXNlX2FnZW50KGNvbnN0IGNoYXIgKmNvbnRyb2xsZXIsIGNvbnN0IGNoYXIgKmFnZW50KSB7CitAQCAtNzU3LDcgKzc1Nyw3IEBAIGludCBjZ19pbnN0YWxsX3JlbGVhc2VfYWdlbnQoY29uc3QgY2hhciAqY29udHJvbGxlciwgY29uc3QgY2hhciAqYWdlbnQpIHsKICAKICAgICAgICAgIHNjID0gc3Ryc3RyaXAoY29udGVudHMpOwogICAgICAgICAgaWYgKHN0cmVxKHNjLCAiMCIpKSB7CkBAIC02OSw3ICs2Miw3IEBACiAgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAKLUBAIC0xMTg3LDcgKzExODcsNyBAQCBpbnQgY2dfdW5pbnN0YWxsX3JlbGVhc2VfYWdlbnQoY29uc3QgY2hhciAqY29udHJvbGxlcikgeworQEAgLTc4NCw3ICs3ODQsNyBAQCBpbnQgY2dfdW5pbnN0YWxsX3JlbGVhc2VfYWdlbnQoY29uc3QgY2hhciAqY29udHJvbGxlcikgewogICAgICAgICAgaWYgKHIgPCAwKQogICAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAKQEAgLTc4LDcgKzcxLDcgQEAKICAgICAgICAgIGlmIChyIDwgMCkKICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CiAgCi1AQCAtMTE5Nyw3ICsxMTk3LDcgQEAgaW50IGNnX3VuaW5zdGFsbF9yZWxlYXNlX2FnZW50KGNvbnN0IGNoYXIgKmNvbnRyb2xsZXIpIHsKK0BAIC03OTQsNyArNzk0LDcgQEAgaW50IGNnX3VuaW5zdGFsbF9yZWxlYXNlX2FnZW50KGNvbnN0IGNoYXIgKmNvbnRyb2xsZXIpIHsKICAgICAgICAgIGlmIChyIDwgMCkKICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CiAgCkBAIC04Nyw3ICs4MCw3IEBACiAgICAgICAgICBpZiAociA8IDApCiAgICAgICAgICAgICAgICAgIHJldHVybiByOwogIAotQEAgLTIwNTMsNyArMjA1Myw3IEBAIGludCBjZ19zZXRfYXR0cmlidXRlKGNvbnN0IGNoYXIgKmNvbnRyb2xsZXIsIGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKmF0dHJpCitAQCAtMTY1MCw3ICsxNjUwLDcgQEAgaW50IGNnX3NldF9hdHRyaWJ1dGUoY29uc3QgY2hhciAqY29udHJvbGxlciwgY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqYXR0cmkKICAgICAgICAgIGlmIChyIDwgMCkKICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CiAgCkBAIC05NiwxNyArODksOCBAQAogIH0KICAKICBpbnQgY2dfZ2V0X2F0dHJpYnV0ZShjb25zdCBjaGFyICpjb250cm9sbGVyLCBjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICphdHRyaWJ1dGUsIGNoYXIgKipyZXQpIHsKLUBAIC0yNjk3LDcgKzI2OTcsNyBAQCBpbnQgY2dfZW5hYmxlX2V2ZXJ5d2hlcmUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZGVidWdfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gb3BlbiBjZ3JvdXAuc3VidHJlZV9jb250cm9sIGZpbGUgb2YgJXM6ICVtIiwgcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgfQotIAotLSAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfc3RyZWFtKGYsIHMsIFdSSVRFX1NUUklOR19GSUxFX0RJU0FCTEVfQlVGRkVSKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICByID0gd3JpdGVfc3RyaW5nX3N0cmVhbShmLCBzLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19kZWJ1Z19lcnJubyhyLCAiRmFpbGVkIHRvICVzIGNvbnRyb2xsZXIgJXMgZm9yICVzICglcyk6ICVtIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTEFHU19TRVQobWFzaywgYml0KSA/ICJlbmFibGUiIDogImRpc2FibGUiLCBuLCBwLCBmcyk7CiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMgYi9zcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYwotaW5kZXggNDJjZTUzZDVhYS4uNTc1MTI1MzJhNiAxMDA2NDQKK2luZGV4IGRhN2U4MzZmMTQzZS4uMjEzOGYyMGJjYzAzIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMKICsrKyBiL3NyYy9iYXNpYy9wcm9jZnMtdXRpbC5jCiBAQCAtODYsMTMgKzg2LDEzIEBAIGludCBwcm9jZnNfdGFza3Nfc2V0X2xpbWl0KHVpbnQ2NF90IGxpbWl0KSB7CkBAIC0xMjYsMTAgKzExMCwxMCBAQAogICAgICAgICAgICAgICAgICB1aW50NjRfdCB0aHJlYWRzX21heDsKICAKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvc21hY2stdXRpbC5jIGIvc3JjL2Jhc2ljL3NtYWNrLXV0aWwuYwotaW5kZXggMTIzZDAwZTEzZS4uZTdlYTc4ZjM0OSAxMDA2NDQKK2luZGV4IGRhOWEyMTM5ZDMxYS4uNWU5MWY1YjhmNWQ5IDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL3NtYWNrLXV0aWwuYwogKysrIGIvc3JjL2Jhc2ljL3NtYWNrLXV0aWwuYwotQEAgLTExNSw3ICsxMTUsNyBAQCBpbnQgbWFjX3NtYWNrX2FwcGx5X3BpZChwaWRfdCBwaWQsIGNvbnN0IGNoYXIgKmxhYmVsKSB7CitAQCAtMTE0LDcgKzExNCw3IEBAIGludCBtYWNfc21hY2tfYXBwbHlfcGlkKHBpZF90IHBpZCwgY29uc3QgY2hhciAqbGFiZWwpIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgCiAgICAgICAgICBwID0gcHJvY2ZzX2ZpbGVfYWxsb2NhKHBpZCwgImF0dHIvY3VycmVudCIpOwpAQCAtMTM5LDEwICsxMjMsMTAgQEAKICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CiAgCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3V0aWwuYyBiL3NyYy9iYXNpYy91dGlsLmMKLWluZGV4IDkzZDYxMGJjOTguLjk3ZGNhNjRmNzMgMTAwNjQ0CitpbmRleCAyYjNiMzkxOGEzMmYuLmFmZjhkMGZjZDQ3MyAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy91dGlsLmMKICsrKyBiL3NyYy9iYXNpYy91dGlsLmMKLUBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBkaXNhYmxlX2NvcmVkdW1wcyh2b2lkKSB7CitAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgZGlzYWJsZV9jb3JlZHVtcHModm9pZCkgewogICAgICAgICAgaWYgKGRldGVjdF9jb250YWluZXIoKSA+IDApCiAgICAgICAgICAgICAgICAgIHJldHVybjsKICAKQEAgLTE1MiwxMCArMTM2LDEwIEBACiAgICAgICAgICAgICAgICAgIGxvZ19kZWJ1Z19lcnJubyhyLCAiRmFpbGVkIHRvIHR1cm4gb2ZmIGNvcmVkdW1wcywgaWdub3Jpbmc6ICVtIik7CiAgfQogZGlmZiAtLWdpdCBhL3NyYy9iaW5mbXQvYmluZm10LmMgYi9zcmMvYmluZm10L2JpbmZtdC5jCi1pbmRleCBhYTlkODExZjJlLi44YzdmMmRhZTdhIDEwMDY0NAoraW5kZXggN2ZmODQ0Yzc4YzNhLi41YzU3MjFkN2MyZjcgMTAwNjQ0CiAtLS0gYS9zcmMvYmluZm10L2JpbmZtdC5jCiArKysgYi9zcmMvYmluZm10L2JpbmZtdC5jCi1AQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgaW50IGRlbGV0ZV9ydWxlKGNvbnN0IGNoYXIgKnJ1bGUpIHsKK0BAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBpbnQgZGVsZXRlX3J1bGUoY29uc3QgY2hhciAqcnVsZSkgewogICAgICAgICAgaWYgKCFmbikKICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19vb20oKTsKICAKQEAgLTE2NCw3ICsxNDgsNyBAQAogIH0KICAKICBzdGF0aWMgaW50IGFwcGx5X3J1bGUoY29uc3QgY2hhciAqcnVsZSkgewotQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIGludCBhcHBseV9ydWxlKGNvbnN0IGNoYXIgKnJ1bGUpIHsKK0BAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBpbnQgYXBwbHlfcnVsZShjb25zdCBjaGFyICpydWxlKSB7CiAgCiAgICAgICAgICAodm9pZCkgZGVsZXRlX3J1bGUocnVsZSk7CiAgCkBAIC0xNzMsNyArMTU3LDcgQEAKICAgICAgICAgIGlmIChyIDwgMCkKICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19lcnJvcl9lcnJubyhyLCAiRmFpbGVkIHRvIGFkZCBiaW5hcnkgZm9ybWF0OiAlbSIpOwogIAotQEAgLTIxMyw3ICsyMTMsNyBAQCBzdGF0aWMgaW50IHJ1bihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CitAQCAtMjEyLDcgKzIxMiw3IEBAIHN0YXRpYyBpbnQgcnVuKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKICAgICAgICAgICAgICAgICAgfQogIAogICAgICAgICAgICAgICAgICAvKiBGbHVzaCBvdXQgYWxsIHJ1bGVzICovCkBAIC0xODMsMTAgKzE2NywxMCBAQAogICAgICAgICAgICAgICAgICBTVFJWX0ZPUkVBQ0goZiwgZmlsZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gYXBwbHlfZmlsZSgqZiwgdHJ1ZSk7CiBkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbWFpbi5jIGIvc3JjL2NvcmUvbWFpbi5jCi1pbmRleCBiY2NlNzE3OGE4Li40MTk5Y2VkYWI5IDEwMDY0NAoraW5kZXggM2M2YjY2ZTg5YzhlLi5jMzllYmU1NmE1YjMgMTAwNjQ0CiAtLS0gYS9zcmMvY29yZS9tYWluLmMKICsrKyBiL3NyYy9jb3JlL21haW4uYwotQEAgLTEyODUsNyArMTI4NSw3IEBAIHN0YXRpYyBpbnQgYnVtcF91bml4X21heF9kZ3JhbV9xbGVuKHZvaWQpIHsKK0BAIC0xMzEyLDcgKzEzMTIsNyBAQCBzdGF0aWMgaW50IGJ1bXBfdW5peF9tYXhfZGdyYW1fcWxlbih2b2lkKSB7CiAgICAgICAgICBpZiAodiA+PSBERUZBVUxUX1VOSVhfTUFYX0RHUkFNX1FMRU4pCiAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogIApAQCAtMTk1LDcgKzE3OSw3IEBACiAgICAgICAgICBpZiAociA8IDApCiAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZnVsbF9lcnJubyhJTl9TRVQociwgLUVST0ZTLCAtRVBFUk0sIC1FQUNDRVMpID8gTE9HX0RFQlVHIDogTE9HX1dBUk5JTkcsIHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGJ1bXAgQUZfVU5JWCBkYXRhZ3JhbSBxdWV1ZSBsZW5ndGgsIGlnbm9yaW5nOiAlbSIpOwotQEAgLTE1MDksNyArMTUwOSw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVfY29yZV9wYXR0ZXJuKGJvb2wgc2tpcF9zZXR1cCkgeworQEAgLTE1MzYsNyArMTUzNiw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVfY29yZV9wYXR0ZXJuKGJvb2wgc2tpcF9zZXR1cCkgewogICAgICAgICAgaWYgKGdldHBpZF9jYWNoZWQoKSAhPSAxKQogICAgICAgICAgICAgICAgICByZXR1cm47CiAgCkBAIC0yMDUsNyArMTg5LDcgQEAKICAgICAgICAgICAgICAgICAgbG9nX3dhcm5pbmdfZXJybm8ociwgIkZhaWxlZCB0byB3cml0ZSAnJXMnIHRvIC9wcm9jL3N5cy9rZXJuZWwvY29yZV9wYXR0ZXJuLCBpZ25vcmluZzogJW0iLCBhcmdfZWFybHlfY29yZV9wYXR0ZXJuKTsKICB9CiBkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvc21hY2stc2V0dXAuYyBiL3NyYy9jb3JlL3NtYWNrLXNldHVwLmMKLWluZGV4IGI5NWU2MjM5ZDQuLmZkYmRhYWFjY2IgMTAwNjQ0CitpbmRleCA0NDI3Mzk3ZjI3MTUuLjhhZWI1YzgyOTUxMyAxMDA2NDQKIC0tLSBhL3NyYy9jb3JlL3NtYWNrLXNldHVwLmMKICsrKyBiL3NyYy9jb3JlL3NtYWNrLXNldHVwLmMKIEBAIC0zMjUsMTcgKzMyNSwxNyBAQCBpbnQgbWFjX3NtYWNrX3NldHVwKGJvb2wgKmxvYWRlZF9wb2xpY3kpIHsKQEAgLTIzMSw3ICsyMTUsNyBAQAogICAgICAgICAgICAgICAgICBsb2dfd2FybmluZ19lcnJubyhyLCAiRmFpbGVkIHRvIHNldCBTTUFDSyBuZXRsYWJlbCBydWxlIFwiMTI3LjAuMC4xIC1DSVBTT1wiOiAlbSIpOwogICNlbmRpZgogZGlmZiAtLWdpdCBhL3NyYy9oaWJlcm5hdGUtcmVzdW1lL2hpYmVybmF0ZS1yZXN1bWUuYyBiL3NyYy9oaWJlcm5hdGUtcmVzdW1lL2hpYmVybmF0ZS1yZXN1bWUuYwotaW5kZXggMTdlN2NkMWEwMC4uODdhNzY2NzcxNiAxMDA2NDQKK2luZGV4IDE3ZTdjZDFhMDA5Yi4uODdhNzY2NzcxNjYzIDEwMDY0NAogLS0tIGEvc3JjL2hpYmVybmF0ZS1yZXN1bWUvaGliZXJuYXRlLXJlc3VtZS5jCiArKysgYi9zcmMvaGliZXJuYXRlLXJlc3VtZS9oaWJlcm5hdGUtcmVzdW1lLmMKIEBAIC00NSw3ICs0NSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKQEAgLTI0NCw3ICsyMjgsNyBAQAogICAgICAgICAgICAgICAgICBsb2dfZXJyb3JfZXJybm8ociwgIkZhaWxlZCB0byB3cml0ZSAnJXMnIHRvIC9zeXMvcG93ZXIvcmVzdW1lOiAlbSIsIG1ham9yX21pbm9yKTsKICAgICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKIGRpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1kZXZpY2Uvc2QtZGV2aWNlLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1kZXZpY2Uvc2QtZGV2aWNlLmMKLWluZGV4IGM0YTdmMmYzZDMuLmJjYWM3NTgyODQgMTAwNjQ0CitpbmRleCAxZjI0NTFmOGUxYjQuLjNmNjc2ZWMyODQxYSAxMDA2NDQKIC0tLSBhL3NyYy9saWJzeXN0ZW1kL3NkLWRldmljZS9zZC1kZXZpY2UuYwogKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtZGV2aWNlL3NkLWRldmljZS5jCiBAQCAtMTg0OSw3ICsxODQ5LDcgQEAgX3B1YmxpY18gaW50IHNkX2RldmljZV9zZXRfc3lzYXR0cl92YWx1ZShzZF9kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqc3lzYXR0ciwKQEAgLTI1NywxMCArMjQxLDEwIEBACiAgICAgICAgICAgICAgICAgIGlmIChyID09IC1FTE9PUCkKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKIGRpZmYgLS1naXQgYS9zcmMvbG9naW4vbG9naW5kLWRidXMuYyBiL3NyYy9sb2dpbi9sb2dpbmQtZGJ1cy5jCi1pbmRleCAzMGI5YTY2MzM0Li5jYzFkNTc3OTMzIDEwMDY0NAoraW5kZXggNTJhN2VhM2M3N2U5Li45NzAzZGUwZGFiZWUgMTAwNjQ0CiAtLS0gYS9zcmMvbG9naW4vbG9naW5kLWRidXMuYwogKysrIGIvc3JjL2xvZ2luL2xvZ2luZC1kYnVzLmMKLUBAIC0xMzI1LDcgKzEzMjUsNyBAQCBzdGF0aWMgaW50IHRyaWdnZXJfZGV2aWNlKE1hbmFnZXIgKm0sIHNkX2RldmljZSAqZCkgeworQEAgLTEzMzksNyArMTMzOSw3IEBAIHN0YXRpYyBpbnQgdHJpZ2dlcl9kZXZpY2UoTWFuYWdlciAqbSwgc2RfZGV2aWNlICpkKSB7CiAgICAgICAgICAgICAgICAgIGlmICghdCkKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKICAKQEAgLTI3MCwxMCArMjU0LDEwIEBACiAgCiAgICAgICAgICByZXR1cm4gMDsKIGRpZmYgLS1naXQgYS9zcmMvbnNwYXduL25zcGF3bi1jZ3JvdXAuYyBiL3NyYy9uc3Bhd24vbnNwYXduLWNncm91cC5jCi1pbmRleCAwNDYyYjQ2NDEzLi43YzUzZDQxNDgzIDEwMDY0NAoraW5kZXggZjUwNDhkOTQ3M2NiLi5iNjM4M2FiNWM5N2UgMTAwNjQ0CiAtLS0gYS9zcmMvbnNwYXduL25zcGF3bi1jZ3JvdXAuYwogKysrIGIvc3JjL25zcGF3bi9uc3Bhd24tY2dyb3VwLmMKLUBAIC0xMjMsNyArMTIzLDcgQEAgaW50IHN5bmNfY2dyb3VwKHBpZF90IHBpZCwgQ0dyb3VwVW5pZmllZCB1bmlmaWVkX3JlcXVlc3RlZCwgdWlkX3QgdWlkX3NoaWZ0KSB7CitAQCAtMTI0LDcgKzEyNCw3IEBAIGludCBzeW5jX2Nncm91cChwaWRfdCBwaWQsIENHcm91cFVuaWZpZWQgdW5pZmllZF9yZXF1ZXN0ZWQsIHVpZF90IHVpZF9zaGlmdCkgewogICAgICAgICAgZm4gPSBzdHJqb2luYSh0cmVlLCBjZ3JvdXAsICIvY2dyb3VwLnByb2NzIik7CiAgCiAgICAgICAgICBzcHJpbnRmKHBpZF9zdHJpbmcsIFBJRF9GTVQsIHBpZCk7CkBAIC0yODMsMTAgKzI2NywxMCBAQAogICAgICAgICAgICAgICAgICBsb2dfZXJyb3JfZXJybm8ociwgIkZhaWxlZCB0byBtb3ZlIHByb2Nlc3M6ICVtIik7CiAgICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOwogZGlmZiAtLWdpdCBhL3NyYy9uc3Bhd24vbnNwYXduLmMgYi9zcmMvbnNwYXduL25zcGF3bi5jCi1pbmRleCAyYWVjODA0MWYwLi44NDE1NDJmMmYzIDEwMDY0NAoraW5kZXggNzM0ZGVlMTEzMGUwLi43MWFkZDlhMDU1ZDIgMTAwNjQ0CiAtLS0gYS9zcmMvbnNwYXduL25zcGF3bi5jCiArKysgYi9zcmMvbnNwYXduL25zcGF3bi5jCi1AQCAtMjM1Nyw3ICsyMzU3LDcgQEAgc3RhdGljIGludCByZXNldF9hdWRpdF9sb2dpbnVpZCh2b2lkKSB7CitAQCAtMjQ0MCw3ICsyNDQwLDcgQEAgc3RhdGljIGludCByZXNldF9hdWRpdF9sb2dpbnVpZCh2b2lkKSB7CiAgICAgICAgICBpZiAoc3RyZXEocCwgIjQyOTQ5NjcyOTUiKSkKICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgCkBAIC0yOTUsNyArMjc5LDcgQEAKICAgICAgICAgIGlmIChyIDwgMCkgewogICAgICAgICAgICAgICAgICBsb2dfZXJyb3JfZXJybm8ociwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gcmVzZXQgYXVkaXQgbG9naW4gVUlELiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgeW91ciBrZXJuZWwgaXMgdG9vXG4iCi1AQCAtMzU2NiwxMyArMzU2NiwxMyBAQCBzdGF0aWMgaW50IHNldHVwX3VpZF9tYXAocGlkX3QgcGlkKSB7CitAQCAtMzY2NSwxMyArMzY2NSwxMyBAQCBzdGF0aWMgaW50IHNldHVwX3VpZF9tYXAocGlkX3QgcGlkKSB7CiAgCiAgICAgICAgICB4c3ByaW50Zih1aWRfbWFwLCAiL3Byb2MvIiBQSURfRk1UICIvdWlkX21hcCIsIHBpZCk7CiAgICAgICAgICB4c3ByaW50ZihsaW5lLCBVSURfRk1UICIgIiBVSURfRk1UICIgIiBVSURfRk1UICJcbiIsIDAsIGFyZ191aWRfc2hpZnQsIGFyZ191aWRfcmFuZ2UpOwpAQCAtMzExLDExICsyOTUsMzMgQEAKICAgICAgICAgIGlmIChyIDwgMCkKICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19lcnJvcl9lcnJubyhyLCAiRmFpbGVkIHRvIHdyaXRlIEdJRCBtYXA6ICVtIik7CiAgCitkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9jZ3JvdXAtc2V0dXAuYyBiL3NyYy9zaGFyZWQvY2dyb3VwLXNldHVwLmMKK2luZGV4IGU4Mzk4Y2JkZTViYS4uYmE2ODJlYzBjOWU3IDEwMDY0NAorLS0tIGEvc3JjL3NoYXJlZC9jZ3JvdXAtc2V0dXAuYworKysrIGIvc3JjL3NoYXJlZC9jZ3JvdXAtc2V0dXAuYworQEAgLTI2Nyw3ICsyNjcsNyBAQCBpbnQgY2dfYXR0YWNoKGNvbnN0IGNoYXIgKmNvbnRyb2xsZXIsIGNvbnN0IGNoYXIgKnBhdGgsIHBpZF90IHBpZCkgeworIAorICAgICAgICAgeHNwcmludGYoYywgUElEX0ZNVCAiXG4iLCBwaWQpOworIAorLSAgICAgICAgciA9IHdyaXRlX3N0cmluZ19maWxlKGZzLCBjLCBXUklURV9TVFJJTkdfRklMRV9ESVNBQkxFX0JVRkZFUik7CisrICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoZnMsIGMsIDApOworICAgICAgICAgaWYgKHIgPCAwKQorICAgICAgICAgICAgICAgICByZXR1cm4gcjsKKyAKK0BAIC04MTcsNyArODE3LDcgQEAgaW50IGNnX2VuYWJsZV9ldmVyeXdoZXJlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2RlYnVnX2Vycm5vKGVycm5vLCAiRmFpbGVkIHRvIG9wZW4gY2dyb3VwLnN1YnRyZWVfY29udHJvbCBmaWxlIG9mICVzOiAlbSIsIHApOworICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAKKy0gICAgICAgICAgICAgICAgICAgICAgICByID0gd3JpdGVfc3RyaW5nX3N0cmVhbShmLCBzLCBXUklURV9TVFJJTkdfRklMRV9ESVNBQkxFX0JVRkZFUik7CisrICAgICAgICAgICAgICAgICAgICAgICAgciA9IHdyaXRlX3N0cmluZ19zdHJlYW0oZiwgcywgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZGVidWdfZXJybm8ociwgIkZhaWxlZCB0byAlcyBjb250cm9sbGVyICVzIGZvciAlcyAoJXMpOiAlbSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkxBR1NfU0VUKG1hc2ssIGJpdCkgPyAiZW5hYmxlIiA6ICJkaXNhYmxlIiwgbiwgcCwgZnMpOwogZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvc3lzY3RsLXV0aWwuYyBiL3NyYy9zaGFyZWQvc3lzY3RsLXV0aWwuYwotaW5kZXggOTNiZGNmMTFiZi4uNjhjZGRiN2E5ZiAxMDA2NDQKK2luZGV4IDg1NDNkYmQyZDA1Zi4uNzYxNjI1OTk4MTdlIDEwMDY0NAogLS0tIGEvc3JjL3NoYXJlZC9zeXNjdGwtdXRpbC5jCiArKysgYi9zcmMvc2hhcmVkL3N5c2N0bC11dGlsLmMKLUBAIC04OCw3ICs4OCw3IEBAIGludCBzeXNjdGxfd3JpdGVfaXBfcHJvcGVydHkoaW50IGFmLCBjb25zdCBjaGFyICppZm5hbWUsIGNvbnN0IGNoYXIgKnByb3BlcnR5LCBjCitAQCAtOTMsNyArOTMsNyBAQCBpbnQgc3lzY3RsX3dyaXRlX2lwX3Byb3BlcnR5KGludCBhZiwgY29uc3QgY2hhciAqaWZuYW1lLCBjb25zdCBjaGFyICpwcm9wZXJ0eSwgYwogIAogICAgICAgICAgbG9nX2RlYnVnKCJTZXR0aW5nICclcycgdG8gJyVzJyIsIHAsIHZhbHVlKTsKICAKQEAgLTMyNSwzNiArMzMxLDI4IEBACiAgCiAgaW50IHN5c2N0bF9yZWFkKGNvbnN0IGNoYXIgKnByb3BlcnR5LCBjaGFyICoqY29udGVudCkgewogZGlmZiAtLWdpdCBhL3NyYy9zbGVlcC9zbGVlcC5jIGIvc3JjL3NsZWVwL3NsZWVwLmMKLWluZGV4IGI5ZmU5NjYzNWQuLmYxNjhkN2Y4OTAgMTAwNjQ0CitpbmRleCBmYmZkZGMwMjYyZmMuLjdjYzI5MDIxNTRlOSAxMDA2NDQKIC0tLSBhL3NyYy9zbGVlcC9zbGVlcC5jCiArKysgYi9zcmMvc2xlZXAvc2xlZXAuYwotQEAgLTU0LDcgKzU0LDcgQEAgc3RhdGljIGludCB3cml0ZV9oaWJlcm5hdGVfbG9jYXRpb25faW5mbyh2b2lkKSB7CitAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgaW50IHdyaXRlX2hpYmVybmF0ZV9sb2NhdGlvbl9pbmZvKGNvbnN0IEhpYmVybmF0ZUxvY2F0aW9uICpoaWJlcm5hdGVfbG9jYQorICAgICAgICAgYXNzZXJ0KGhpYmVybmF0ZV9sb2NhdGlvbi0+c3dhcCk7CiAgCi0gICAgICAgICAvKiBpZiBpdCdzIGEgc3dhcCBwYXJ0aXRpb24sIHdlIGp1c3Qgd3JpdGUgdGhlIGRpc2sgdG8gL3N5cy9wb3dlci9yZXN1bWUgKi8KLSAgICAgICAgIGlmIChzdHJlcSh0eXBlLCAicGFydGl0aW9uIikpIHsKLS0gICAgICAgICAgICAgICAgciA9IHdyaXRlX3N0cmluZ19maWxlKCIvc3lzL3Bvd2VyL3Jlc3VtZSIsIGRldmljZSwgV1JJVEVfU1RSSU5HX0ZJTEVfRElTQUJMRV9CVUZGRVIpOwotKyAgICAgICAgICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoIi9zeXMvcG93ZXIvcmVzdW1lIiwgZGV2aWNlLCAwKTsKLSAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKQotICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZGVidWdfZXJybm8ociwgIkZhaWxlZCB0byB3cml0ZSBwYXJ0aXRpb24gZGV2aWNlIHRvIC9zeXMvcG93ZXIvcmVzdW1lOiAlbSIpOworICAgICAgICAgeHNwcmludGYocmVzdW1lX3N0ciwgIiV1OiV1IiwgbWFqb3IoaGliZXJuYXRlX2xvY2F0aW9uLT5kZXZubyksIG1pbm9yKGhpYmVybmF0ZV9sb2NhdGlvbi0+ZGV2bm8pKTsKKy0gICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfZmlsZSgiL3N5cy9wb3dlci9yZXN1bWUiLCByZXN1bWVfc3RyLCBXUklURV9TVFJJTkdfRklMRV9ESVNBQkxFX0JVRkZFUik7CisrICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoIi9zeXMvcG93ZXIvcmVzdW1lIiwgcmVzdW1lX3N0ciwgMCk7CisgICAgICAgICBpZiAociA8IDApCisgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZGVidWdfZXJybm8ociwgIkZhaWxlZCB0byB3cml0ZSBwYXJ0aXRpb24gZGV2aWNlIHRvIC9zeXMvcG93ZXIvcmVzdW1lIGZvciAnJXMnOiAnJXMnOiAlbSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGliZXJuYXRlX2xvY2F0aW9uLT5zd2FwLT5kZXZpY2UsIHJlc3VtZV9zdHIpOworQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIGludCB3cml0ZV9oaWJlcm5hdGVfbG9jYXRpb25faW5mbyhjb25zdCBIaWJlcm5hdGVMb2NhdGlvbiAqaGliZXJuYXRlX2xvY2EKKyAgICAgICAgIH0KICAKLUBAIC05OCwxNCArOTgsMTQgQEAgc3RhdGljIGludCB3cml0ZV9oaWJlcm5hdGVfbG9jYXRpb25faW5mbyh2b2lkKSB7Ci0gCi0gICAgICAgICBvZmZzZXQgPSBmaWVtYXAtPmZtX2V4dGVudHNbMF0uZmVfcGh5c2ljYWwgLyBwYWdlX3NpemUoKTsKLSAgICAgICAgIHhzcHJpbnRmKG9mZnNldF9zdHIsICIlIiBQUkl1NjQsIG9mZnNldCk7CisgICAgICAgICB4c3ByaW50ZihvZmZzZXRfc3RyLCAiJSIgUFJJdTY0LCBoaWJlcm5hdGVfbG9jYXRpb24tPm9mZnNldCk7CiAtICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoIi9zeXMvcG93ZXIvcmVzdW1lX29mZnNldCIsIG9mZnNldF9zdHIsIFdSSVRFX1NUUklOR19GSUxFX0RJU0FCTEVfQlVGRkVSKTsKICsgICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfZmlsZSgiL3N5cy9wb3dlci9yZXN1bWVfb2Zmc2V0Iiwgb2Zmc2V0X3N0ciwgMCk7CiAgICAgICAgICBpZiAociA8IDApCi0gICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZGVidWdfZXJybm8ociwgIkZhaWxlZCB0byB3cml0ZSBvZmZzZXQgJyVzJzogJW0iLCBvZmZzZXRfc3RyKTsKLSAKLSAgICAgICAgIGxvZ19kZWJ1ZygiV3JvdGUgY2FsY3VsYXRlZCByZXN1bWVfb2Zmc2V0IHZhbHVlIHRvIC9zeXMvcG93ZXIvcmVzdW1lX29mZnNldDogJXMiLCBvZmZzZXRfc3RyKTsKLSAKLSAgICAgICAgIHhzcHJpbnRmKGRldmljZV9zdHIsICIlbHgiLCAodW5zaWduZWQgbG9uZylzdGIuc3RfZGV2KTsKLS0gICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfZmlsZSgiL3N5cy9wb3dlci9yZXN1bWUiLCBkZXZpY2Vfc3RyLCBXUklURV9TVFJJTkdfRklMRV9ESVNBQkxFX0JVRkZFUik7Ci0rICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoIi9zeXMvcG93ZXIvcmVzdW1lIiwgZGV2aWNlX3N0ciwgMCk7Ci0gICAgICAgICBpZiAociA8IDApCi0gICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZGVidWdfZXJybm8ociwgIkZhaWxlZCB0byB3cml0ZSBkZXZpY2UgJyVzJzogJW0iLCBkZXZpY2Vfc3RyKTsKLSAKLUBAIC0xMjEsNyArMTIxLDcgQEAgc3RhdGljIGludCB3cml0ZV9tb2RlKGNoYXIgKiptb2RlcykgeworICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2RlYnVnX2Vycm5vKHIsICJGYWlsZWQgdG8gd3JpdGUgc3dhcCBmaWxlIG9mZnNldCB0byAvc3lzL3Bvd2VyL3Jlc3VtZV9vZmZzZXQgZm9yICclcyc6ICclcyc6ICVtIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWJlcm5hdGVfbG9jYXRpb24tPnN3YXAtPmRldmljZSwgb2Zmc2V0X3N0cik7CitAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgaW50IHdyaXRlX21vZGUoY2hhciAqKm1vZGVzKSB7CiAgICAgICAgICBTVFJWX0ZPUkVBQ0gobW9kZSwgbW9kZXMpIHsKICAgICAgICAgICAgICAgICAgaW50IGs7CiAgCkBAIC0zNjMsNyArMzYxLDcgQEAKICAgICAgICAgICAgICAgICAgaWYgKGsgPj0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAKLUBAIC0xNDAsNyArMTQwLDcgQEAgc3RhdGljIGludCB3cml0ZV9zdGF0ZShGSUxFICoqZiwgY2hhciAqKnN0YXRlcykgeworQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMgaW50IHdyaXRlX3N0YXRlKEZJTEUgKipmLCBjaGFyICoqc3RhdGVzKSB7CiAgICAgICAgICBTVFJWX0ZPUkVBQ0goc3RhdGUsIHN0YXRlcykgewogICAgICAgICAgICAgICAgICBpbnQgazsKICAKQEAgLTM3Myw3ICszNzEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgICBsb2dfZGVidWdfZXJybm8oaywgIkZhaWxlZCB0byB3cml0ZSAnJXMnIHRvIC9zeXMvcG93ZXIvc3RhdGU6ICVtIiwgKnN0YXRlKTsKIGRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2YWRtLXRyaWdnZXIuYyBiL3NyYy91ZGV2L3VkZXZhZG0tdHJpZ2dlci5jCi1pbmRleCA3N2Q5NWU1MTNmLi4yNWNlNGFiZmIxIDEwMDY0NAoraW5kZXggNjBjNjhiNTAyOWNmLi5mZGNhMDNkM2Q0MmMgMTAwNjQ0CiAtLS0gYS9zcmMvdWRldi91ZGV2YWRtLXRyaWdnZXIuYwogKysrIGIvc3JjL3VkZXYvdWRldmFkbS10cmlnZ2VyLmMKIEBAIC00Myw3ICs0Myw3IEBAIHN0YXRpYyBpbnQgZXhlY19saXN0KHNkX2RldmljZV9lbnVtZXJhdG9yICplLCBjb25zdCBjaGFyICphY3Rpb24sIFNldCAqc2V0dGxlX3NlCkBAIC0zODMsMTMgKzM4MSwxMyBAQAogLSAgICAgICAgICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoZmlsZW5hbWUsIGFjdGlvbiwgV1JJVEVfU1RSSU5HX0ZJTEVfRElTQUJMRV9CVUZGRVIpOwogKyAgICAgICAgICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoZmlsZW5hbWUsIGFjdGlvbiwgMCk7CiAgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19mdWxsX2Vycm5vKHIgPT0gLUVOT0VOVCA/IExPR19ERUJVRyA6IExPR19FUlIsIHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byB3cml0ZSAnJXMnIHRvICclcyc6ICVtIiwgYWN0aW9uLCBmaWxlbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25vcmUgPSBJTl9TRVQociwgLUVOT0VOVCwgLUVBQ0NFUywgLUVOT0RFViwgLUVST0ZTKTsKKyAKIGRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2ZC5jIGIvc3JjL3VkZXYvdWRldmQuYwotaW5kZXggY2I1MTIzMDQyYS4uZWEzMDlhOWU3ZiAxMDA2NDQKK2luZGV4IGNhNjU0NzRmMjc2My4uMzg3ODA2ODE0MzFhIDEwMDY0NAogLS0tIGEvc3JjL3VkZXYvdWRldmQuYwogKysrIGIvc3JjL3VkZXYvdWRldmQuYwotQEAgLTExMTMsNyArMTExMyw3IEBAIHN0YXRpYyBpbnQgc3ludGhlc2l6ZV9jaGFuZ2Vfb25lKHNkX2RldmljZSAqZGV2LCBjb25zdCBjaGFyICpzeXNwYXRoKSB7CitAQCAtMTA4OSw3ICsxMDg5LDcgQEAgc3RhdGljIGludCBzeW50aGVzaXplX2NoYW5nZV9vbmUoc2RfZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKnN5c3BhdGgpIHsKICAKICAgICAgICAgIGZpbGVuYW1lID0gc3Ryam9pbmEoc3lzcGF0aCwgIi91ZXZlbnQiKTsKICAgICAgICAgIGxvZ19kZXZpY2VfZGVidWcoZGV2LCAiZGV2aWNlIGlzIGNsb3NlZCwgc3ludGhlc2lzaW5nICdjaGFuZ2UnIG9uICVzIiwgc3lzcGF0aCk7CkBAIC0zOTksMTAgKzM5NywxMCBAQAogICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2RldmljZV9kZWJ1Z19lcnJubyhkZXYsIHIsICJGYWlsZWQgdG8gd3JpdGUgJ2NoYW5nZScgdG8gJXM6ICVtIiwgZmlsZW5hbWUpOwogICAgICAgICAgcmV0dXJuIDA7CiBkaWZmIC0tZ2l0IGEvc3JjL3Zjb25zb2xlL3Zjb25zb2xlLXNldHVwLmMgYi9zcmMvdmNvbnNvbGUvdmNvbnNvbGUtc2V0dXAuYwotaW5kZXggNzVkMDUyYWU3MC4uNWExNWM5MzlkOCAxMDA2NDQKK2luZGV4IDlkNzA2MDg1ZmI0Ny4uMzBkY2ZhODZmNGQwIDEwMDY0NAogLS0tIGEvc3JjL3Zjb25zb2xlL3Zjb25zb2xlLXNldHVwLmMKICsrKyBiL3NyYy92Y29uc29sZS92Y29uc29sZS1zZXR1cC5jCi1AQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyBpbnQgdG9nZ2xlX3V0ZjhfdmMoY29uc3QgY2hhciAqbmFtZSwgaW50IGZkLCBib29sIHV0ZjgpIHsKK0BAIC0xMTYsNyArMTE2LDcgQEAgc3RhdGljIGludCB0b2dnbGVfdXRmOF92Yyhjb25zdCBjaGFyICpuYW1lLCBpbnQgZmQsIGJvb2wgdXRmOCkgewogIHN0YXRpYyBpbnQgdG9nZ2xlX3V0Zjhfc3lzZnMoYm9vbCB1dGY4KSB7CiAgICAgICAgICBpbnQgcjsKICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtbWVzb24tQWRkLURlZmktb2JqY29weS1vcHRpb24tdG8tc3BlY2lmeS1vYmpjb3B5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1tZXNvbi1BZGQtRGVmaS1vYmpjb3B5LW9wdGlvbi10by1zcGVjaWZ5LW9iamNvcHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkNzY0YjQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1tZXNvbi1BZGQtRGVmaS1vYmpjb3B5LW9wdGlvbi10by1zcGVjaWZ5LW9iamNvcHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIDNmMzdhZDVlMDgzZGNhZDUxYzIxYzEwNTBiMjgyOWI3MGQyNDBiNTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCA2IEF1ZyAyMDE5IDAzOjEwOjIwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1lc29uOiBBZGQgLURlZmktb2JqY29weSBvcHRpb24gdG8gc3BlY2lmeSBvYmpjb3B5Ci0KLVRoaXMgaGVscHMgaW4gY3Jvc3MgY29tcGlsaW5nIGZvciB4ODYgdGFyZ2V0IG9uIGEgYWFyY2g2NCBob3N0IGUuZy4KLUZpeGVzCi1UT1BESVIvYnVpbGQvdG1wL2hvc3R0b29scy9vYmpjb3B5OnNyYy9ib290L2VmaS9zeXN0ZW1kX2Jvb3Quc286IEludmFsaWQgYmZkIHRhcmdldAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBtZXNvbl9vcHRpb25zLnR4dCAgICAgICAgfCAyICsrCi0gc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkIHwgNSArKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0Ci1pbmRleCBkNGVjMzdkZGEyLi5kYzFjOTZlMTEyIDEwMDY0NAotLS0tIGEvbWVzb25fb3B0aW9ucy50eHQKLSsrKyBiL21lc29uX29wdGlvbnMudHh0Ci1AQCAtMjk2LDYgKzI5Niw4IEBAIG9wdGlvbignZWZpLWNjJywgdHlwZSA6ICdhcnJheScsCi0gICAgICAgIGRlc2NyaXB0aW9uIDogJ3RoZSBjb21waWxlciB0byB1c2UgZm9yIEVGSSBtb2R1bGVzJykKLSBvcHRpb24oJ2VmaS1sZCcsIHR5cGUgOiAnc3RyaW5nJywKLSAgICAgICAgZGVzY3JpcHRpb24gOiAndGhlIGxpbmtlciB0byB1c2UgZm9yIEVGSSBtb2R1bGVzJykKLStvcHRpb24oJ2VmaS1vYmpjb3B5JywgdHlwZSA6ICdzdHJpbmcnLAotKyAgICAgICBkZXNjcmlwdGlvbiA6ICd0aGUgb2JqY29weSB0byB1c2UgZm9yIEVGSScpCi0gb3B0aW9uKCdlZmktbGliZGlyJywgdHlwZSA6ICdzdHJpbmcnLAotICAgICAgICBkZXNjcmlwdGlvbiA6ICdwYXRoIHRvIHRoZSBFRkkgbGliIGRpcmVjdG9yeScpCi0gb3B0aW9uKCdlZmktbGRzZGlyJywgdHlwZSA6ICdzdHJpbmcnLAotZGlmZiAtLWdpdCBhL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZCBiL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZAotaW5kZXggMGFlMzE5MTYzNS4uNWE3MTM3YmM4NCAxMDA2NDQKLS0tLSBhL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZAotKysrIGIvc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkCi1AQCAtODgsNyArODgsMTAgQEAgaWYgaGF2ZV9nbnVfZWZpCi0gICAgICAgICAgICAgICAgIG91dHB1dCA6ICdlZmlfY29uZmlnLmgnLAotICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIDogZWZpX2NvbmYpCi0gCi0tICAgICAgICBvYmpjb3B5ID0gZmluZF9wcm9ncmFtKCdvYmpjb3B5JykKLSsgICAgICAgIG9iamNvcHkgPSBnZXRfb3B0aW9uKCdlZmktb2JqY29weScpCi0rICAgICAgICBpZiBvYmpjb3B5ID09ICcnCi0rICAgICAgICAgICAgICAgIG9iamNvcHkgPSBmaW5kX3Byb2dyYW0oJ29iamNvcHknLCByZXF1aXJlZDogdHJ1ZSkKLSsgICAgICAgIGVuZGlmCi0gCi0gICAgICAgICBlZmlfbGRzZGlyID0gZ2V0X29wdGlvbignZWZpLWxkc2RpcicpCi0gICAgICAgICBhcmNoX2xkcyA9ICdlbGZfQDBAX2VmaS5sZHMnLmZvcm1hdChnbnVfZWZpX3BhdGhfYXJjaCkKLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtcHN0b3JlLWZpeC11c2UtYWZ0ZXItZnJlZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtcHN0b3JlLWZpeC11c2UtYWZ0ZXItZnJlZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQxNDdhMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLXBzdG9yZS1maXgtdXNlLWFmdGVyLWZyZWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDFiMzE1NmVkZDI5MWUwODgyZDgwYTY5NWQwMzVkZDMwNTIxMzQ1ZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KLURhdGU6IEZyaSwgNiBTZXAgMjAxOSAxNTowNDowMSArMDIwMAotU3ViamVjdDogW1BBVENIXSBwc3RvcmU6IGZpeCB1c2UgYWZ0ZXIgZnJlZQotCi1UaGUgbWVtb3J5IGlzIHN0aWxsIG5lZWRlZCBpbiB0aGUgc2Rfam91cm5hbF9zZW5kdigpIGFmdGVyIHRoZSAnaWYnIGJsb2NrLgotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAxZTE5ZjVhYzBkNjgwYTYzZWNjYWU3ZWYxZmM2Y2UyMjVkY2EwYmJmKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IFlvbmd4aW4gTGl1IDx5b25neGluLmxpdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL3BzdG9yZS9wc3RvcmUuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9wc3RvcmUvcHN0b3JlLmMgYi9zcmMvcHN0b3JlL3BzdG9yZS5jCi1pbmRleCBjNzYwYjNlODk5Li44ZmZlNTIzODMwIDEwMDY0NAotLS0tIGEvc3JjL3BzdG9yZS9wc3RvcmUuYwotKysrIGIvc3JjL3BzdG9yZS9wc3RvcmUuYwotQEAgLTExNyw2ICsxMTcsNyBAQCBzdGF0aWMgaW50IGNvbXBhcmVfcHN0b3JlX2VudHJpZXMoY29uc3Qgdm9pZCAqX2EsIGNvbnN0IHZvaWQgKl9iKSB7Ci0gCi0gc3RhdGljIGludCBtb3ZlX2ZpbGUoUFN0b3JlRW50cnkgKnBlLCBjb25zdCBjaGFyICpzdWJkaXIpIHsKLSAgICAgICAgIF9jbGVhbnVwX2ZyZWVfIGNoYXIgKmlmZF9wYXRoID0gTlVMTCwgKm9mZF9wYXRoID0gTlVMTDsKLSsgICAgICAgIF9jbGVhbnVwX2ZyZWVfIHZvaWQgKmZpZWxkID0gTlVMTDsKLSAgICAgICAgIGNvbnN0IGNoYXIgKnN1ZmZpeCwgKm1lc3NhZ2U7Ci0gICAgICAgICBzdHJ1Y3QgaW92ZWMgaW92ZWNbMl07Ci0gICAgICAgICBpbnQgbl9pb3ZlYyA9IDAsIHI7Ci1AQCAtMTM4LDcgKzEzOSw2IEBAIHN0YXRpYyBpbnQgbW92ZV9maWxlKFBTdG9yZUVudHJ5ICpwZSwgY29uc3QgY2hhciAqc3ViZGlyKSB7Ci0gICAgICAgICBpb3ZlY1tuX2lvdmVjKytdID0gSU9WRUNfTUFLRV9TVFJJTkcobWVzc2FnZSk7Ci0gCi0gICAgICAgICBpZiAocGUtPmNvbnRlbnRfc2l6ZSA+IDApIHsKLS0gICAgICAgICAgICAgICAgX2NsZWFudXBfZnJlZV8gdm9pZCAqZmllbGQgPSBOVUxMOwotICAgICAgICAgICAgICAgICBzaXplX3QgZmllbGRfc2l6ZTsKLSAKLSAgICAgICAgICAgICAgICAgZmllbGRfc2l6ZSA9IHN0cmxlbigiRklMRT0iKSArIHBlLT5jb250ZW50X3NpemU7Ci0tLSAKLTIuMTQuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLXVuaXQtZmlsZS5jLWNvbnNpZGVyLXN5bWxpbmstb24tZmlsZXN5c3RlbXMtbGlrZS1ORlMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLXVuaXQtZmlsZS5jLWNvbnNpZGVyLXN5bWxpbmstb24tZmlsZXN5c3RlbXMtbGlrZS1ORlMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhMjBhMGIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS11bml0LWZpbGUuYy1jb25zaWRlci1zeW1saW5rLW9uLWZpbGVzeXN0ZW1zLWxpa2UtTkZTLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSBkMDEyMmMwNzdkMmQ4ZmQwZmQyOWI0NjNjNTAxZTdkZGY5MTc3ZmYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAyNCBTZXAgMjAxOSAxNzowNDo1MCArMDgwMAotU3ViamVjdDogW1BBVENIXSB1bml0LWZpbGUuYzogY29uc2lkZXIgc3ltbGluayBvbiBmaWxlc3lzdGVtcyBsaWtlIE5GUwotCi1Tb21lIGZpbGVzeXN0ZW1zIGRvIG5vdCBmdWxseSBzdXBwb3J0IHJlYWRkaXIsIGFjY29yZGluZyB0byB0aGUgbWFudWFsLAotc28gd2Ugc2hvdWxkIGFsc28gY29uc2lkZXIgRFRfVU5LTk9XTiB0byBjb3JyZWN0bHkgaGFuZGxlIHN5bWxpbmtzLgotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL3B1bGwvMTM2MzddCi0tLS0KLSBzcmMvc2hhcmVkL3VuaXQtZmlsZS5jIHwgNiArKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL3VuaXQtZmlsZS5jIGIvc3JjL3NoYXJlZC91bml0LWZpbGUuYwotaW5kZXggNGE1ZjIzZTZjMS4uODM3MzEwMzAwMCAxMDA2NDQKLS0tLSBhL3NyYy9zaGFyZWQvdW5pdC1maWxlLmMKLSsrKyBiL3NyYy9zaGFyZWQvdW5pdC1maWxlLmMKLUBAIC0yNDcsNiArMjQ3LDcgQEAgaW50IHVuaXRfZmlsZV9idWlsZF9uYW1lX21hcCgKLSAgICAgICAgICAgICAgICAgICAgICAgICBfY2xlYW51cF9mcmVlXyBjaGFyICpfZmlsZW5hbWVfZnJlZSA9IE5VTEwsICpzaW1wbGlmaWVkID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdWZmaXgsICpkc3QgPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdmFsaWRfdW5pdF9uYW1lOwotKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0IHNiOwotIAotICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX3VuaXRfbmFtZSA9IHVuaXRfbmFtZV9pc192YWxpZChkZS0+ZF9uYW1lLCBVTklUX05BTUVfQU5ZKTsKLSAKLUBAIC0yNzksNyArMjgwLDEwIEBAIGludCB1bml0X2ZpbGVfYnVpbGRfbmFtZV9tYXAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc2htYXBfY29udGFpbnMoaWRzLCBkZS0+ZF9uYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotIAotLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZS0+ZF90eXBlID09IERUX0xOSykgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZS0+ZF90eXBlID09IERUX0xOSyB8fAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGUtPmRfdHlwZSA9PSBEVF9VTktOT1dOICYmCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3RhdChmaWxlbmFtZSwgJnNiKSA9PSAwICYmCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Iuc3RfbW9kZSAmIFNfSUZNVCkgPT0gU19JRkxOSykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFdlIGRvbid0IGV4cGxpY2l0bHkgY2hlY2sgZm9yIGFsaWFzIGxvb3BzIGhlcmUuIHVuaXRfaWRzX21hcF9nZXQoKSB3aGljaAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbGltaXRzIHRoZSBudW1iZXIgb2YgaG9wcyBzaG91bGQgYmUgdXNlZCB0byBhY2Nlc3MgdGhlIG1hcC4gKi8KLSAKLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoCmluZGV4IGM2MjEzYWIuLmE1ZTQxYmYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMWViODQ1MzRkZWEwNWQ0MWFmZWQxZDg5OGNiYTIxMmFkN2QzMTBkZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gM2ViMTJhNmJhMGJjZTE0OTcxN2VhYWJlYjE1MDVkMzc5YjNkNzA1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IE1vbiwgMjUgRmViIDIwMTkgMTM6NDE6NDEgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwMi8yNF0gZG9uJ3QgdXNlIGdsaWJjLXNwZWNpZmljIHFzb3J0X3IKK1N1YmplY3Q6IFtQQVRDSF0gZG9uJ3QgdXNlIGdsaWJjLXNwZWNpZmljIHFzb3J0X3IKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQogCkBAIC0xMCwxNCArMTAsMTUgQEAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIFtSZWJhc2VkIGZvciB2MjQyXQogU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+CisKIC0tLQotIHNyYy9iYXNpYy9zb3J0LXV0aWwuaCAgICAgICAgICAgICAgfCAxNCAtLS0tLS0tLS0tLS0tLQotIHNyYy9saWJzeXN0ZW1kL3NkLWh3ZGIvaHdkYi11dGlsLmMgfCAxOSArKysrKysrKysrKysrKy0tLS0tCi0gc3JjL3NoYXJlZC9mb3JtYXQtdGFibGUuYyAgICAgICAgICB8IDM2ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQorIHNyYy9iYXNpYy9zb3J0LXV0aWwuaCAgICAgICAgICAgICAgfCAxNCAtLS0tLS0tLS0tLS0KKyBzcmMvbGlic3lzdGVtZC9zZC1od2RiL2h3ZGItdXRpbC5jIHwgMTkgKysrKysrKysrKystLS0tLQorIHNyYy9zaGFyZWQvZm9ybWF0LXRhYmxlLmMgICAgICAgICAgfCAzNiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KICAzIGZpbGVzIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDMxIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3NvcnQtdXRpbC5oIGIvc3JjL2Jhc2ljL3NvcnQtdXRpbC5oCi1pbmRleCBlMDI5Zjg2NDZlLi4yN2Q2OGIzNDFjIDEwMDY0NAoraW5kZXggZTAyOWY4NjQ2ZWIwLi4yN2Q2OGIzNDFjZjMgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvc29ydC11dGlsLmgKICsrKyBiL3NyYy9iYXNpYy9zb3J0LXV0aWwuaAogQEAgLTU0LDE3ICs1NCwzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBxc29ydF9zYWZlKHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsIF9fY29tcGFyX2ZuCkBAIC0zOSw3ICs0MCw3IEBACiAtICAgICAgICAgICAgICAgIHFzb3J0X3Jfc2FmZSgocCksIChuKSwgc2l6ZW9mKChwKVswXSksIChfX2NvbXBhcl9kX2ZuX3QpIF9mdW5jXywgdXNlcmRhdGEpOyBcCiAtICAgICAgICB9KQogZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLWh3ZGIvaHdkYi11dGlsLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1od2RiL2h3ZGItdXRpbC5jCi1pbmRleCBjODM1NzVjN2M4Li43MmY4ZjNhMDUwIDEwMDY0NAoraW5kZXggZDc5MGU4ZmQwYjE5Li40MmUwZmQ3YzliM2MgMTAwNjQ0CiAtLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1od2RiL2h3ZGItdXRpbC5jCiArKysgYi9zcmMvbGlic3lzdGVtZC9zZC1od2RiL2h3ZGItdXRpbC5jCiBAQCAtMTI4LDkgKzEyOCwxMyBAQCBzdGF0aWMgdm9pZCB0cmllX2ZyZWUoc3RydWN0IHRyaWUgKnRyaWUpIHsKQEAgLTgzLDEwICs4NCwxMCBAQAogIH0KICAKIGRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2Zvcm1hdC10YWJsZS5jIGIvc3JjL3NoYXJlZC9mb3JtYXQtdGFibGUuYwotaW5kZXggYTVjMGE5OWIwOC4uZDU5NWNiZTM3MiAxMDA2NDQKK2luZGV4IDQyNTAxMzA0NjQ5MS4uMzNjMWM1YTEyZDQzIDEwMDY0NAogLS0tIGEvc3JjL3NoYXJlZC9mb3JtYXQtdGFibGUuYwogKysrIGIvc3JjL3NoYXJlZC9mb3JtYXQtdGFibGUuYwotQEAgLTg1MCwzMSArODUwLDMzIEBAIHN0YXRpYyBpbnQgY2VsbF9kYXRhX2NvbXBhcmUoVGFibGVEYXRhICphLCBzaXplX3QgaW5kZXhfYSwgVGFibGVEYXRhICpiLCBzaXplX3QKK0BAIC0xMTY0LDMxICsxMTY0LDMzIEBAIHN0YXRpYyBpbnQgY2VsbF9kYXRhX2NvbXBhcmUoVGFibGVEYXRhICphLCBzaXplX3QgaW5kZXhfYSwgVGFibGVEYXRhICpiLCBzaXplX3QKICAgICAgICAgIHJldHVybiBDTVAoaW5kZXhfYSwgaW5kZXhfYik7CiAgfQogIApAQCAtMTMwLDcgKzEzMSw3IEBACiAgICAgICAgICB9CiAgCiAgICAgICAgICAvKiBPcmRlciBpZGVudGljYWwgbGluZXMgYnkgdGhlIG9yZGVyIHRoZXJlIHdlcmUgb3JpZ2luYWxseSBhZGRlZCBpbiAqLwotQEAgLTExMDcsNyArMTEwOSwxMiBAQCBpbnQgdGFibGVfcHJpbnQoVGFibGUgKnQsIEZJTEUgKmYpIHsKK0BAIC0xNjkwLDcgKzE2OTIsMTIgQEAgaW50IHRhYmxlX3ByaW50KFRhYmxlICp0LCBGSUxFICpmKSB7CiAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuX3Jvd3M7IGkrKykKICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWRbaV0gPSBpICogdC0+bl9jb2x1bW5zOwogIApAQCAtMTQ0LDcgKzE0NSw3IEBACiAgICAgICAgICB9CiAgCiAgICAgICAgICBpZiAodC0+ZGlzcGxheV9tYXApCi1AQCAtMTUzNCw3ICsxNTQxLDEyIEBAIGludCB0YWJsZV90b19qc29uKFRhYmxlICp0LCBKc29uVmFyaWFudCAqKnJldCkgeworQEAgLTIyMzYsNyArMjI0MywxMiBAQCBpbnQgdGFibGVfdG9fanNvbihUYWJsZSAqdCwgSnNvblZhcmlhbnQgKipyZXQpIHsKICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5fcm93czsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZFtpXSA9IGkgKiB0LT5uX2NvbHVtbnM7CiAgCkBAIC0xNTgsNiArMTU5LDMgQEAKICAgICAgICAgIH0KICAKICAgICAgICAgIGlmICh0LT5kaXNwbGF5X21hcCkKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItc3JjLWxvZ2luLWJyaWdodG5lc3MuYy1pbmNsdWRlLXN5cy13YWl0LmgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXNyYy1sb2dpbi1icmlnaHRuZXNzLmMtaW5jbHVkZS1zeXMtd2FpdC5oLnBhdGNoCmluZGV4IGRjYWU2NjguLmJhNzQyNGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItc3JjLWxvZ2luLWJyaWdodG5lc3MuYy1pbmNsdWRlLXN5cy13YWl0LmgucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1zcmMtbG9naW4tYnJpZ2h0bmVzcy5jLWluY2x1ZGUtc3lzLXdhaXQuaC5wYXRjaApAQCAtMSw0ICsxLDcgQEAKLUluY2x1ZGUgc3lzL3dhaXQuaAorRnJvbSAxMDY5MjIzMzVlYzUwMmJjYjQ0NTFjNTRhODliZTQ5Zjg4ZmE1NGRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2NvdHQgTXVycmF5IDxzY290dC5tdXJyYXlAa29uc3Vsa28uY29tPgorRGF0ZTogRnJpLCAxMyBTZXAgMjAxOSAxOToyNjoyNyAtMDQwMAorU3ViamVjdDogW1BBVENIXSBJbmNsdWRlIHN5cy93YWl0LmgKIAogRml4ZXM6CiBzcmMvbG9naW4vbG9naW5kLWJyaWdodG5lc3MuYzoxNTg6ODU6IGVycm9yOiAnV0VYSVRFRCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ1dJRkVYSVRFRCc/CkBAIC04LDEyICsxMSwxMyBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KKwogLS0tCiAgc3JjL2xvZ2luL2xvZ2luZC1icmlnaHRuZXNzLmMgfCAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAogZGlmZiAtLWdpdCBhL3NyYy9sb2dpbi9sb2dpbmQtYnJpZ2h0bmVzcy5jIGIvc3JjL2xvZ2luL2xvZ2luZC1icmlnaHRuZXNzLmMKLWluZGV4IDhkZmE5N2Q3YWUuLmJkZGQ0YTI3MjcgMTAwNjQ0CitpbmRleCAzZjRiNjVlMWZkZjEuLjVhZjdlM2Q1Y2UzZiAxMDA2NDQKIC0tLSBhL3NyYy9sb2dpbi9sb2dpbmQtYnJpZ2h0bmVzcy5jCiArKysgYi9zcmMvbG9naW4vbG9naW5kLWJyaWdodG5lc3MuYwogQEAgLTEsNSArMSw2IEBACmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5YTMzNGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotRnJvbSBiZGJhZmUxOGMzYmY5OWIzYjY5MWNkNTJiOWNjZmY2MGYzMTM4OTJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAyNyBKdW4gMjAxOCAxNjowOToyNCArMDgwMAotU3ViamVjdDogW1BBVENIIDIvNV0gdXNlIGxuciB3cmFwcGVyIGluc3RlYWQgb2YgbG9va2luZyBmb3IgLS1yZWxhdGl2ZSBvcHRpb24KLSBmb3IgbG4KLQotUmVtb3ZlIGZpbGUgbWFudWFsbHkgdG8gYXZvaWQgdGhlICdGaWxlIEV4aXN0cycgZXJyb3Igd2hlbiBjcmVhdGluZwotc3ltbGluay4gVGhpcyBpcyBiZWNhdXNlIHRoZSBvcmlnaW5hbCAnbG4nIGNvbW1hbmQgdXNlcyAnLWYnIG9wdGlvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLVtyZWJhc2VkIGZvciBzeXN0ZW1kIDI0M10KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KLS0tLQotIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICB8IDQgLS0tLQotIHRvb2xzL21lc29uLW1ha2Utc3ltbGluay5zaCB8IDMgKystCi0gdW5pdHMvbWVzb24tYWRkLXdhbnRzLnNoICAgIHwgNyArKysrKystCi0gMyBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCBlNWNlYjFlMTY5Li43OWI3NjJmYWViIDEwMDY0NAotLS0tIGEvbWVzb24uYnVpbGQKLSsrKyBiL21lc29uLmJ1aWxkCi1AQCAtNTc5LDEwICs1NzksNiBAQCBlbmRmb3JlYWNoCi0gCi0gY29uZi5zZXRfcXVvdGVkKCdURUxJTklUJywgZ2V0X29wdGlvbigndGVsaW5pdC1wYXRoJykpCi0gCi0taWYgcnVuX2NvbW1hbmQoJ2xuJywgJy0tcmVsYXRpdmUnLCAnLS1oZWxwJykucmV0dXJuY29kZSgpICE9IDAKLS0gICAgICAgIGVycm9yKCdsbiBkb2VzIG5vdCBzdXBwb3J0IC0tcmVsYXRpdmUgKGFkZGVkIGluIGNvcmV1dGlscyA4LjE2KScpCi0tZW5kaWYKLS0KLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAKLSBncGVyZiA9IGZpbmRfcHJvZ3JhbSgnZ3BlcmYnKQotZGlmZiAtLWdpdCBhL3Rvb2xzL21lc29uLW1ha2Utc3ltbGluay5zaCBiL3Rvb2xzL21lc29uLW1ha2Utc3ltbGluay5zaAotaW5kZXggZGEwZDEzYTM0MS4uOTBiYzBhOTNjMiAxMDA3NTUKLS0tLSBhL3Rvb2xzL21lc29uLW1ha2Utc3ltbGluay5zaAotKysrIGIvdG9vbHMvbWVzb24tbWFrZS1zeW1saW5rLnNoCi1AQCAtOCw1ICs4LDYgQEAgbWtkaXIgLXZwICIkKGRpcm5hbWUgIiR7REVTVERJUjotfSQyIikiCi0gaWYgWyAiJChkaXJuYW1lICQxKSIgPSAuIF07IHRoZW4KLSAgICAgbG4gLXZmcyAtVCAiJDEiICIke0RFU1RESVI6LX0kMiIKLSBlbHNlCi0tICAgIGxuIC12ZnMgLVQgLS1yZWxhdGl2ZSAiJHtERVNURElSOi19JDEiICIke0RFU1RESVI6LX0kMiIKLSsgICAgcm0gLWYgIiR7REVTVERJUjotfSQyIgotKyAgICBsbnIgIiR7REVTVERJUjotfSQxIiAiJHtERVNURElSOi19JDIiCi0gZmkKLWRpZmYgLS1naXQgYS91bml0cy9tZXNvbi1hZGQtd2FudHMuc2ggYi91bml0cy9tZXNvbi1hZGQtd2FudHMuc2gKLWluZGV4IGE0ODNkNzViODYuLjNjMDFjNTIzZjEgMTAwNzU1Ci0tLS0gYS91bml0cy9tZXNvbi1hZGQtd2FudHMuc2gKLSsrKyBiL3VuaXRzL21lc29uLWFkZC13YW50cy5zaAotQEAgLTI1LDQgKzI1LDkgQEAgY2FzZSAiJHRhcmdldCIgaW4KLSAgICAgICAgIDs7Ci0gZXNhYwotIAotLWxuIC12ZnMgLS1yZWxhdGl2ZSAiJHVuaXRwYXRoIiAiJGRpciIKLStpZiBbIC1kICIkZGlyIiBdOyB0aGVuCi0rICAgICAgICBybSAtZiAiJGRpci8kdW5pdCIKLSsgICAgICAgIGxuciAiJHVuaXRwYXRoIiAiJGRpci8kdW5pdCIKLStlbHNlCi0rICAgICAgICBsbnIgIiR1bml0cGF0aCIgIiRkaXIiCi0rZmkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2gKaW5kZXggNjY5NWQ1Ni4uYzYyMDQ3OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDQ3ODY0OTg5Mzg4YmNkMDRkNjQ3ZWNmNjE4YWQ3ZTI2MDM5OWRiYjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGY5MDc4NTAxYTE0OTVjOTk5MTQzMWQxNDM1ZDA4MWNkMmU4MzAzMjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU2F0LCA1IFNlcCAyMDE1IDA2OjMxOjQ3ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMy81XSBpbXBsbWVudCBzeXN0ZW1kLXN5c3YtaW5zdGFsbCBmb3IgT0UKK1N1YmplY3Q6IFtQQVRDSF0gaW1wbG1lbnQgc3lzdGVtZC1zeXN2LWluc3RhbGwgZm9yIE9FCiAKIFVzZSB1cGRhdGUtcmMuZCBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIGFuZCBzdGF0dXMgY29tbWFuZAogdG8gY2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgc3lzdiBzZXJ2aWNlCkBAIC05LDEyICs5LDEzIEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBzcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OIHwgNiArKystLS0KICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTiBiL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04KLWluZGV4IDhjMTZjZjkuLjlmMDc4YTEgMTAwNzU1CitpbmRleCA4YzE2Y2Y5OTkxM2YuLjlmMDc4YTEyMTQ2OSAxMDA3NTUKIC0tLSBhL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04KICsrKyBiL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04KIEBAIC0zMiwxNyArMzIsMTcgQEAgY2FzZSAiJDEiIGluCkBAIC0zOCw2ICszOSwzIEBACiAgICAgICAgICA7OwogICAgICAqKQogICAgICAgICAgdXNhZ2UgOzsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1taXNzaW5nX3R5cGUuaC1hZGQtX19jb21wYXJlX2ZuX3QtYW5kLWNvbXBhcmlzb25fZm5fLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1taXNzaW5nX3R5cGUuaC1hZGQtX19jb21wYXJlX2ZuX3QtYW5kLWNvbXBhcmlzb25fZm5fLnBhdGNoCmluZGV4IDJlMzlmN2EuLjE0MDQ4OTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtbWlzc2luZ190eXBlLmgtYWRkLV9fY29tcGFyZV9mbl90LWFuZC1jb21wYXJpc29uX2ZuXy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLW1pc3NpbmdfdHlwZS5oLWFkZC1fX2NvbXBhcmVfZm5fdC1hbmQtY29tcGFyaXNvbl9mbl8ucGF0Y2gKQEAgLTEsMjQgKzEsMjggQEAKLUZyb20gYTk0MjFkNTUxMDJmYzg0Zjc3ZjdjMjFhMjQ3OWZjZDAwNjUyYjg5NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMjMzZGU4NzJiOWIwMzNlYzg0MmMyMTM1MTUyZDJlMDA2YWM0NGMxNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IE1vbiwgMjUgRmViIDIwMTkgMTM6NTU6MTIgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwMy8yNF0gbWlzc2luZ190eXBlLmg6IGFkZCBfX2NvbXBhcmVfZm5fdCBhbmQgY29tcGFyaXNvbl9mbl90CitTdWJqZWN0OiBbUEFUQ0hdIG1pc3NpbmdfdHlwZS5oOiBhZGQgX19jb21wYXJlX2ZuX3QgYW5kIGNvbXBhcmlzb25fZm5fdAogCiBNYWtlIGl0IHdvcmsgd2l0aCBtdXNsIHdoZXJlIGNvbXBhcmlzb25fZm5fdCBhbmQgX19jb21wYXJlX2ZuX3QKIGlzIG5vdCBwcm92aWRlZC4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQogCitTaWduZWQtb2ZmLWJ5OiBBbGV4IEtpZXJuYW4gPGFsZXgua2llcm5hbkBnbWFpbC5jb20+CitbUmViYXNlZCBmb3IgdjI0NF0KIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIFtSZWJhc2VkIGZvciB2MjQyXQogU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+CisKIC0tLQogIHNyYy9iYXNpYy9taXNzaW5nX3R5cGUuaCB8IDkgKysrKysrKysrCiAgc3JjL2Jhc2ljL3NvcnQtdXRpbC5oICAgIHwgMSArCisgc3JjL2NvcmUva21vZC1zZXR1cC5jICAgIHwgMSArCiAgc3JjL2pvdXJuYWwvY2F0YWxvZy5jICAgIHwgMSArCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspCisgNCBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZ190eXBlLmggYi9zcmMvYmFzaWMvbWlzc2luZ190eXBlLmgKLWluZGV4IGJmOGE2Y2FhMWIuLjIxMzRmZTUwOTUgMTAwNjQ0CitpbmRleCBiZjhhNmNhYTFiNDYuLmM0ODdlNjVlN2JkZSAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9taXNzaW5nX3R5cGUuaAogKysrIGIvc3JjL2Jhc2ljL21pc3NpbmdfdHlwZS5oCiBAQCAtMTAsMyArMTAsMTIgQEAKQEAgLTM1LDI5ICszOSwzOCBAQAogK3R5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopOwogKyNlbmRpZgogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9zb3J0LXV0aWwuaCBiL3NyYy9iYXNpYy9zb3J0LXV0aWwuaAotaW5kZXggZTAyOWY4Ni4uNzI0N2Q0MCAxMDA2NDQKK2luZGV4IDI3ZDY4YjM0MWNmMy4uMzA3ZWE0YWMwZThlIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL3NvcnQtdXRpbC5oCiArKysgYi9zcmMvYmFzaWMvc29ydC11dGlsLmgKIEBAIC00LDYgKzQsNyBAQAogICNpbmNsdWRlIDxzdGRsaWIuaD4KICAKICAjaW5jbHVkZSAibWFjcm8uaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3R5cGUuaCIKICAKICB2b2lkICp4YnNlYXJjaF9yKGNvbnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAqYmFzZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgIF9fY29tcGFyX2RfZm5fdCBjb21wYXIsIHZvaWQgKmFyZyk7CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUva21vZC1zZXR1cC5jIGIvc3JjL2NvcmUva21vZC1zZXR1cC5jCitpbmRleCAxMjg2NzQzMjczNjIuLjA5Y2NkNjEzZTMyYyAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2ttb2Qtc2V0dXAuYworKysrIGIvc3JjL2NvcmUva21vZC1zZXR1cC5jCitAQCAtMTAsNiArMTAsNyBAQAorICNpbmNsdWRlICJrbW9kLXNldHVwLmgiCisgI2luY2x1ZGUgIm1hY3JvLmgiCisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3NpbmdfdHlwZS5oIgorIAorICNpZiBIQVZFX0tNT0QKKyAjaW5jbHVkZSAibW9kdWxlLXV0aWwuaCIKIGRpZmYgLS1naXQgYS9zcmMvam91cm5hbC9jYXRhbG9nLmMgYi9zcmMvam91cm5hbC9jYXRhbG9nLmMKLWluZGV4IDdiZWZmYzFlMWEuLjQ4MThhMmU1Y2MgMTAwNjQ0CitpbmRleCA3MGIyYzhiNDZjNGUuLmQ1NzRhNjQ1ODZmMSAxMDA2NDQKIC0tLSBhL3NyYy9qb3VybmFsL2NhdGFsb2cuYwogKysrIGIvc3JjL2pvdXJuYWwvY2F0YWxvZy5jCi1AQCAtMjksNiArMjksNyBAQAorQEAgLTI4LDYgKzI4LDcgQEAKICAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKICAjaW5jbHVkZSAic3Rydi5oIgogICNpbmNsdWRlICJ0bXBmaWxlLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3R5cGUuaCIKICAKICBjb25zdCBjaGFyICogY29uc3QgY2F0YWxvZ19maWxlX2RpcnNbXSA9IHsKICAgICAgICAgICIvdXNyL2xvY2FsL2xpYi9zeXN0ZW1kL2NhdGFsb2cvIiwKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtc3JjLWJhc2ljLWNvcHkuYy1pbmNsdWRlLXNpZ25hbC5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1zcmMtYmFzaWMtY29weS5jLWluY2x1ZGUtc2lnbmFsLmgucGF0Y2gKaW5kZXggN2VlMGQ0OC4uNTM4YTk5YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1zcmMtYmFzaWMtY29weS5jLWluY2x1ZGUtc2lnbmFsLmgucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1zcmMtYmFzaWMtY29weS5jLWluY2x1ZGUtc2lnbmFsLmgucGF0Y2gKQEAgLTEsNCArMSw3IEBACi1JbmNsdWRlIHNpZ25hbC5oCitGcm9tIDA4MmQyZWIyYTY1NTI1ODkwYTkxMzcyMzc2NGU2N2EzNmVlNzUzODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTY290dCBNdXJyYXkgPHNjb3R0Lm11cnJheUBrb25zdWxrby5jb20+CitEYXRlOiBGcmksIDEzIFNlcCAyMDE5IDE5OjI2OjI3IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIEluY2x1ZGUgc2lnbmFsLmgKIAogRml4ZXMgc2V2ZXJhbCBzaWduYWwgc2V0IHJlbGF0ZWQgZXJyb3JzOgogc3JjL2Jhc2ljL2NvcHkuYzo5MjoxOTogZXJyb3I6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdzaWdlbXB0eXNldCcgWy1XZXJyb3I9aW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb25dCkBAIC05LDE3ICsxMiwxOCBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KKwogLS0tCiAgc3JjL2Jhc2ljL2NvcHkuYyB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2NvcHkuYyBiL3NyYy9iYXNpYy9jb3B5LmMKLWluZGV4IGNhMzExZTAyMWUuLjNjZjdmYzE2OTcgMTAwNjQ0CitpbmRleCA5MDI4ODY4ZjY5NmQuLjUxNjg1ODZmYTUyMiAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9jb3B5LmMKICsrKyBiL3NyYy9iYXNpYy9jb3B5LmMKLUBAIC0xMiw2ICsxMiw3IEBACitAQCAtOCw2ICs4LDcgQEAKKyAjaW5jbHVkZSA8c3lzL3NlbmRmaWxlLmg+CiAgI2luY2x1ZGUgPHN5cy94YXR0ci5oPgotICNpbmNsdWRlIDx0aW1lLmg+CiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgogKyNpbmNsdWRlIDxzaWduYWwuaD4KICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoCmluZGV4IGEyYWFkNDAuLjBkZWE5MzMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1hZGQtZmFsbGJhY2stcGFyc2VfcHJpbnRmX2Zvcm1hdC1pbXBsZW1lbnRhdGlvbi5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gN2JjZjNiMTY2Njk0MDkwNDk3YTBhY2QyYzUyOTllNGUwNGZjYzliNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOGFmMTY4Y2VmY2EwMWY4ZjJkYTMzNmYxYzgyNjIwYzI4NGRjNzRmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IE1vbiwgMjUgRmViIDIwMTkgMTQ6MDQ6MjEgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwNC8yNF0gYWRkIGZhbGxiYWNrIHBhcnNlX3ByaW50Zl9mb3JtYXQgaW1wbGVtZW50YXRpb24KK1N1YmplY3Q6IFtQQVRDSF0gYWRkIGZhbGxiYWNrIHBhcnNlX3ByaW50Zl9mb3JtYXQgaW1wbGVtZW50YXRpb24KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQogCkBAIC0xMCwxMSArMTAsMTIgQEAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIFtyZWJhc2VkIGZvciBzeXN0ZW1kIDI0M10KIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KKwogLS0tCiAgbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiAgc3JjL2Jhc2ljL21lc29uLmJ1aWxkICAgICAgICAgICB8ICAgNSArCi0gc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYyB8IDI3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaCB8ICA1NyArKysrKysrKysKKyBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jIHwgMjczICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaCB8ICA1NyArKysrKysrCiAgc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaCAgICAgICAgICB8ICAgMiArLQogIHNyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jICAgICAgfCAgIDIgKy0KICA2IGZpbGVzIGNoYW5nZWQsIDMzOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQpAQCAtMjIsMTAgKzIzLDEwIEBACiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmgKIAogZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IDc5Yjc2MmZhZWIuLjdmOGM2Nzk0MTEgMTAwNjQ0CitpbmRleCBmYzIxNmQyMmRhMjQuLmEyNTk5NjgwM2Q2NCAxMDA2NDQKIC0tLSBhL21lc29uLmJ1aWxkCiArKysgYi9tZXNvbi5idWlsZAotQEAgLTYxMyw2ICs2MTMsNyBAQCBlbmRpZgorQEAgLTY0MCw2ICs2NDAsNyBAQCBlbmRpZgogIGZvcmVhY2ggaGVhZGVyIDogWydjcnlwdC5oJywKICAgICAgICAgICAgICAgICAgICAnbGludXgvbWVtZmQuaCcsCiAgICAgICAgICAgICAgICAgICAgJ2xpbnV4L3ZtX3NvY2tldHMuaCcsCkBAIC0zNCwxMCArMzUsMTAgQEAKICAgICAgICAgICAgICAgICAgICAndmFsZ3JpbmQvbWVtY2hlY2suaCcsCiAgICAgICAgICAgICAgICAgICAgJ3ZhbGdyaW5kL3ZhbGdyaW5kLmgnLAogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9tZXNvbi5idWlsZCBiL3NyYy9iYXNpYy9tZXNvbi5idWlsZAotaW5kZXggZDZjYWYyOGYxNC4uMzJjMWFjZjM0OSAxMDA2NDQKK2luZGV4IGNjYjIyZTE1OTUwNS4uMjVjNzdlYTZiYzBlIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL21lc29uLmJ1aWxkCiArKysgYi9zcmMvYmFzaWMvbWVzb24uYnVpbGQKLUBAIC0zMTIsNiArMzEyLDExIEBAIGZvcmVhY2ggaXRlbSA6IFtbJ2FmJywgICAgIGFmX2xpc3RfdHh0LCAgICAgJ2FmJywgICAgICAgICAnJ10sCitAQCAtMzEzLDYgKzMxMywxMSBAQCBmb3JlYWNoIGl0ZW0gOiBbWydhZicsICAgICBhZl9saXN0X3R4dCwgICAgICdhZicsICAgICAgICAgJyddLAogIGVuZGZvcmVhY2gKICAKICBiYXNpY19zb3VyY2VzICs9IGdlbmVyYXRlZF9ncGVyZl9oZWFkZXJzCkBAIC01MSw3ICs1Miw3IEBACiAgICAgICAgICAnZ2NyeXB0LXV0aWwuaCcpCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYyBiL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi40OTQzN2U1NDQ1CitpbmRleCAwMDAwMDAwMDAwMDAuLjQ5NDM3ZTU0NDU0MAogLS0tIC9kZXYvbnVsbAogKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYwogQEAgLTAsMCArMSwyNzMgQEAKQEAgLTMzMCw3ICszMzEsNyBAQAogK30KIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjQ3YmU3NTIyZDcKK2luZGV4IDAwMDAwMDAwMDAwMC4uNDdiZTc1MjJkN2ZhCiAtLS0gL2Rldi9udWxsCiArKysgYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCiBAQCAtMCwwICsxLDU3IEBACkBAIC0zOTIsNyArMzkzLDcgQEAKICsKICsjZW5kaWYgLyogSEFWRV9QUklOVEZfSCAqLwogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9zdGRpby11dGlsLmggYi9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oCi1pbmRleCBjM2I5NDQ4ZDRmLi4yOTM3YWExM2IxIDEwMDY0NAoraW5kZXggYzNiOTQ0OGQ0ZjRmLi4yOTM3YWExM2IxNzggMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oCiArKysgYi9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oCiBAQCAtMSwxMyArMSwxMyBAQApAQCAtNDExLDcgKzQxMiw3IEBACiAgI2RlZmluZSBzbnByaW50Zl9vayhidWYsIGxlbiwgZm10LCAuLi4pIFwKICAgICAgICAgICgoc2l6ZV90KSBzbnByaW50ZihidWYsIGxlbiwgZm10LCBfX1ZBX0FSR1NfXykgPCAobGVuKSkKIGRpZmYgLS1naXQgYS9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYyBiL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jCi1pbmRleCA1ZWYxMWZhMWE0Li42Mzg0YWI2MjBjIDEwMDY0NAoraW5kZXggOTEyZWNlZjczY2NlLi40M2VkNzU2YmRhNTMgMTAwNjQ0CiAtLS0gYS9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYwogKysrIGIvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKIEBAIC0yLDcgKzIsNiBAQApAQCAtNDIwLDkgKzQyMSw5IEBACiAgI2luY2x1ZGUgPGZjbnRsLmg+CiAtI2luY2x1ZGUgPHByaW50Zi5oPgogICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgogICNpbmNsdWRlIDxzeXMvdW4uaD4KLUBAIC0yMSw2ICsyMCw3IEBACisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorQEAgLTIwLDYgKzE5LDcgQEAKICAjaW5jbHVkZSAic3RkaW8tdXRpbC5oIgogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgogICNpbmNsdWRlICJ0bXBmaWxlLXV0aWwuaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWM1OTk2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGRjMGE2YTlmZTRkYTk3MzhlZmFiYTk0MjIzM2FkMzlkYTYyNWE5MTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDIxIEZlYiAyMDE5IDE2OjI4OjIxICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggNC81XSBydWxlczogd2hpdGVsaXN0IGhkKiBkZXZpY2VzCi0KLXFlbXUgYnkgZGVmYXVsdCBlbXVsYXRlcyBJREUgYW5kIHRoZSBsaW51eC15b2N0byBrZXJuZWwocykgdXNlCi1DT05GSUdfSURFIGluc3RlYWQgb2YgdGhlIG1vcmUgbW9kZXJuIGxpYnNhdGEsIHNvIGRpc2tzIGFwcGVhciBhcwotL2Rldi9oZCouIFBhdGNoIHJlamVjdGVkIHVwc3RyZWFtIGJlY2F1c2UgQ09ORklHX0lERSBpcyBkZXByZWNhdGVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9wdWxsLzEyNzZdCi0KLVNpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1bcmViYXNlZCBmb3Igc3lzdGVtZCAyNDFdCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1bcmViYXNlZCBmb3Igc3lzdGVtZCAyNDNdCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBNdXJyYXkgPHNjb3R0Lm11cnJheUBrb25zdWxrby5jb20+Ci0tLS0KLSBydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMgYi9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMKLWluZGV4IDc4MDJiMWM5NGYuLmMwNTM0YWUyNmEgMTAwNjQ0Ci0tLS0gYS9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMKLSsrKyBiL3J1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcwotQEAgLTcsNyArNyw3IEBAIEFDVElPTj09InJlbW92ZSIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCi0gRU5We1VERVZfRElTQUJMRV9QRVJTSVNURU5UX1NUT1JBR0VfUlVMRVNfRkxBR309PSIxIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKLSAKLSBTVUJTWVNURU0hPSJibG9jayIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCi0tS0VSTkVMIT0ibG9vcCp8bW1jYmxrKlswLTldfG1zYmxrKlswLTldfG1zcGJsaypbMC05XXxudm1lKnxzZCp8c3IqfHZkKnx4dmQqfGJjYWNoZSp8Y2Npc3MqfGRhc2QqfHViZCp8dWJpKnxzY20qfHBtZW0qfG5iZCp8emQqIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKLStLRVJORUwhPSJsb29wKnxtbWNibGsqWzAtOV18bXNibGsqWzAtOV18bXNwYmxrKlswLTldfG52bWUqfHNkKnxzcip8dmQqfHh2ZCp8YmNhY2hlKnxjY2lzcyp8ZGFzZCp8dWJkKnx1YmkqfHNjbSp8cG1lbSp8bmJkKnx6ZCp8aGQqIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKLSAKLSAjIGlnbm9yZSBwYXJ0aXRpb25zIHRoYXQgc3BhbiB0aGUgZW50aXJlIGRpc2sKLSBURVNUPT0id2hvbGVfZGlzayIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LXNyYy1zaGFyZWQtY3B1LXNldC11dGlsLmgtYWRkLV9fY3B1X21hc2stZGVmaW5pdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtc3JjLXNoYXJlZC1jcHUtc2V0LXV0aWwuaC1hZGQtX19jcHVfbWFzay1kZWZpbml0aW9uLnBhdGNoCmluZGV4IDBmNzVlOGMuLmQzOTQ0NDQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtc3JjLXNoYXJlZC1jcHUtc2V0LXV0aWwuaC1hZGQtX19jcHVfbWFzay1kZWZpbml0aW9uLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtc3JjLXNoYXJlZC1jcHUtc2V0LXV0aWwuaC1hZGQtX19jcHVfbWFzay1kZWZpbml0aW9uLnBhdGNoCkBAIC0xLDQgKzEsNyBAQAotSGFuZGxlIF9fY3B1X21hc2sgdXNhZ2UKK0Zyb20gZGJlOGIzZWU0NTU4MGRlZmVlZmNhYzkyOWI4OTdjNTQzN2ZmYzUwYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KK0RhdGU6IEZyaSwgMTMgU2VwIDIwMTkgMTk6MjY6MjcgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gSGFuZGxlIF9fY3B1X21hc2sgdXNhZ2UKIAogRml4ZXMgZXJyb3JzOgogCkBAIC0xNSwxMyArMTgsMTQgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogU2NvdHQgTXVycmF5IDxzY290dC5tdXJyYXlAa29uc3Vsa28uY29tPgorCiAtLS0KICBzcmMvc2hhcmVkL2NwdS1zZXQtdXRpbC5oIHwgMiArKwogIHNyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMgICAgfCAyICstCiAgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvY3B1LXNldC11dGlsLmggYi9zcmMvc2hhcmVkL2NwdS1zZXQtdXRpbC5oCi1pbmRleCAyNzgxMmRmZDU5Li5mNjk4ZjlkZjgzIDEwMDY0NAoraW5kZXggMjc4MTJkZmQ1OTIzLi4wYWI0MDczMWVhOTMgMTAwNjQ0CiAtLS0gYS9zcmMvc2hhcmVkL2NwdS1zZXQtdXRpbC5oCiArKysgYi9zcmMvc2hhcmVkL2NwdS1zZXQtdXRpbC5oCiBAQCAtNiw2ICs2LDggQEAKQEAgLTM0LDcgKzM4LDcgQEAKICB0eXBlZGVmIHN0cnVjdCBDUFVTZXQgewogICAgICAgICAgY3B1X3NldF90ICpzZXQ7CiBkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYyBiL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKLWluZGV4IGE3MTBkYjUzNzAuLmQxNjAxYWQ5MjkgMTAwNjQ0CitpbmRleCBjNjUwNjJkMjU2MmMuLjhiNmVlZmE5Y2RhZSAxMDA2NDQKIC0tLSBhL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKICsrKyBiL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKIEBAIC0xLDYgKzEsNSBAQApAQCAtNDMsOCArNDcsOCBAQAogLSNpbmNsdWRlIDxzY2hlZC5oPgogICNpbmNsdWRlIDxzdGRpby5oPgogICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAKLUBAIC04LDYgKzcsNyBAQAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KK0BAIC0xMCw2ICs5LDcgQEAKICAjaW5jbHVkZSA8ZmxvYXQuaD4KICAKICAjaW5jbHVkZSAidGltZS11dGlsLmgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LXJ1bGVzLXdhdGNoLW1ldGFkYXRhLWNoYW5nZXMtaW4taWRlLWRldmljZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LXJ1bGVzLXdhdGNoLW1ldGFkYXRhLWNoYW5nZXMtaW4taWRlLWRldmljZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2MTc1YjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNS1ydWxlcy13YXRjaC1tZXRhZGF0YS1jaGFuZ2VzLWluLWlkZS1kZXZpY2VzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSBkMWJjY2M3MjFkZDhmNDNmZWUyOWM1ZGYwZTliNzgzNDVlNjlmNGI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAyMSBGZWIgMjAxOSAxNjozODozOCArMDgwMAotU3ViamVjdDogW1BBVENIIDUvNV0gcnVsZXM6IHdhdGNoIG1ldGFkYXRhIGNoYW5nZXMgaW4gaWRlIGRldmljZXMKLQotRm9ybWF0dGluZyBJREUgc3RvcmFnZSBkb2VzIG5vdCB0cmlnZ2VyICJjaGFuZ2UiIHVldmVudHMuIEFzIGEgcmVzdWx0Ci1jbGllbnRzIHVzaW5nIHVkZXYgQVBJIGRvbid0IGdldCBhbnkgdXBkYXRlcyBhZnRlcndhcmRzIGFuZCBnZXQgb3V0ZGF0ZWQKLWluZm9ybWF0aW9uIGFib3V0IHRoZSBkZXZpY2UuCi0uLi4KLXJvb3RAcWVtdXg4Ni02NDp+IyBta2ZzLmV4dDQgLUYgL2Rldi9oZGExCi1DcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggMjYyMTQ0IDRrIGJsb2NrcyBhbmQgNjU1MzYgaW5vZGVzCi1GaWxlc3lzdGVtIFVVSUQ6IDk4NzkxZWIyLTJiZjMtNDdhZC1iNGQ4LTRjZjdlOTE0ZWVlMgotCi1yb290QHFlbXV4ODYtNjQ6fiMgbHMgL2Rldi9kaXNrL2J5LXV1aWQvOTg3OTFlYjItMmJmMy00N2FkLWI0ZDgtNGNmN2U5MTRlZWUyCi1sczogY2Fubm90IGFjY2VzcyAnL2Rldi9kaXNrL2J5LXV1aWQvOTg3OTFlYjItMmJmMy00N2FkLWI0ZDgtNGNmN2U5MTRlZWUyJzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotLi4uCi1JbmNsdWRlIGhkKiBpbiBhIG1hdGNoIGZvciB3YXRjaCBvcHRpb24gYXNzaWdubWVudC4KLQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKLQotcWVtdSBieSBkZWZhdWx0IGVtdWxhdGVzIElERSBhbmQgdGhlIGxpbnV4LXlvY3RvIGtlcm5lbChzKSB1c2UKLUNPTkZJR19JREUgaW5zdGVhZCBvZiB0aGUgbW9yZSBtb2Rlcm4gbGlic2F0YSwgc28gZGlza3MgYXBwZWFyIGFzCi0vZGV2L2hkKi4gQSBzaW1pbGFyIHBhdGNoIHJlamVjdGVkIGJ5IHVwc3RyZWFtIGJlY2F1c2UgQ09ORklHX0lERQotaXMgZGVwcmVjYXRlZC4KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotW3JlYmFzZWQgZm9yIHN5c3RlbWQgMjQxXQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotW3JlYmFzZWQgZm9yIHN5c3RlbWQgMjQzXQotU2lnbmVkLW9mZi1ieTogU2NvdHQgTXVycmF5IDxzY290dC5tdXJyYXlAa29uc3Vsa28uY29tPgotLS0tCi0gcnVsZXMvNjAtYmxvY2sucnVsZXMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ydWxlcy82MC1ibG9jay5ydWxlcyBiL3J1bGVzLzYwLWJsb2NrLnJ1bGVzCi1pbmRleCAzMTM0YWI5OTVlLi5jZDcyYTQ5NGExIDEwMDY0NAotLS0tIGEvcnVsZXMvNjAtYmxvY2sucnVsZXMKLSsrKyBiL3J1bGVzLzYwLWJsb2NrLnJ1bGVzCi1AQCAtOSw1ICs5LDUgQEAgQUNUSU9OPT0iY2hhbmdlIiwgU1VCU1lTVEVNPT0ic2NzaSIsIEVOVntERVZUWVBFfT09InNjc2lfZGV2aWNlIiwgVEVTVD09ImJsb2NrIiwKLSAKLSAjIHdhdGNoIG1ldGFkYXRhIGNoYW5nZXMsIGNhdXNlZCBieSB0b29scyBjbG9zaW5nIHRoZSBkZXZpY2Ugbm9kZSB3aGljaCB3YXMgb3BlbmVkIGZvciB3cml0aW5nCi0gQUNUSU9OIT0icmVtb3ZlIiwgU1VCU1lTVEVNPT0iYmxvY2siLCBcCi0tICBLRVJORUw9PSJsb29wKnxtbWNibGsqWzAtOV18bXNibGsqWzAtOV18bXNwYmxrKlswLTldfG52bWUqfHNkKnx2ZCp8eHZkKnxiY2FjaGUqfGNjaXNzKnxkYXNkKnx1YmQqfHViaSp8c2NtKnxwbWVtKnxuYmQqfHpkKiIsIFwKLSsgIEtFUk5FTD09Imxvb3AqfG1tY2JsaypbMC05XXxtc2JsaypbMC05XXxtc3BibGsqWzAtOV18bnZtZSp8c2QqfHZkKnx4dmQqfGJjYWNoZSp8Y2Npc3MqfGRhc2QqfHViZCp8dWJpKnxzY20qfHBtZW0qfG5iZCp8emQqfGhkKiIsIFwKLSAgIE9QVElPTlMrPSJ3YXRjaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaAppbmRleCBhZGZjM2I3Li5jYTRmMGQ1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNS1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAzOTlmZDNlZGEzMDQ1NjM2YTcwZGE0MzhhMGZkMTQwNmNjMzMyZWQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4NWRjYWFkOGYzODUyMWVjM2RjNTgwNzk0MDcyYjYwMTkwMGVlZDg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyNSBGZWIgMjAxOSAxNDoxODoyMSArMDgwMAotU3ViamVjdDogW1BBVENIIDA1LzI0XSBzcmMvYmFzaWMvbWlzc2luZy5oOiBjaGVjayBmb3IgbWlzc2luZyBzdHJuZHVwYQorU3ViamVjdDogW1BBVENIXSBzcmMvYmFzaWMvbWlzc2luZy5oOiBjaGVjayBmb3IgbWlzc2luZyBzdHJuZHVwYQogCiBpbmNsdWRlIG1pc3NpbmcuaCAgZm9yIGRlZmluaXRpb24gb2Ygc3RybmR1cGEKIApAQCAtMTMsMjggKzEzLDQ4IEBACiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KIFtyZWJhc2VkIGZvciBzeXN0ZW1kIDI0M10KIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFsZXggS2llcm5hbiA8YWxleC5raWVybmFuQGdtYWlsLmNvbT4KK1tyZWJhc2VkIGZvciBzeXN0ZW1kIDI0NF0KKwogLS0tCiAgbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9iYWNrbGlnaHQvYmFja2xpZ2h0LmMgICAgICAgICAgICAgICAgICB8ICAxICsKKyBzcmMvYmFzaWMvY2dyb3VwLXV0aWwuYyAgICAgICAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL2Jhc2ljL2Vudi11dGlsLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKworIHNyYy9iYXNpYy9sb2cuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvYmFzaWMvbWlzc2luZ19zdGRsaWIuaCAgICAgICAgICAgICAgICAgfCAxMiArKysrKysrKysrKysKICBzcmMvYmFzaWMvbWtkaXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYyAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9iYXNpYy9wcm9jLWNtZGxpbmUuYyAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYyAgICAgICAgICAgICAgICAgICAgfCAgMSArCisgc3JjL2Jhc2ljL3NlbGludXgtdXRpbC5jICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9iYXNpYy90aW1lLXV0aWwuYyAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKKyBzcmMvYm9vdC9ibGVzcy1ib290LmMgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL2NvcmUvZGJ1cy1jZ3JvdXAuYyAgICAgICAgICAgICAgICAgICAgIHwgIDEgKworIHNyYy9jb3JlL2RidXMtZXhlY3V0ZS5jICAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvY29yZS9kYnVzLXV0aWwuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCisgc3JjL2NvcmUvZXhlY3V0ZS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9jb3JlL2ttb2Qtc2V0dXAuYyAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvY29yZS9zZXJ2aWNlLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCisgc3JjL2NvcmVkdW1wL2NvcmVkdW1wLXZhY3V1bS5jICAgICAgICAgICAgIHwgIDEgKworIHNyYy9qb3VybmFsLXJlbW90ZS9qb3VybmFsLXJlbW90ZS1tYWluLmMgICB8ICAxICsKICBzcmMvam91cm5hbC9qb3VybmFsY3RsLmMgICAgICAgICAgICAgICAgICAgfCAgMSArCisgc3JjL2pvdXJuYWwvc2Qtam91cm5hbC5jICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtbWVzc2FnZS5jICAgICAgICB8ICAxICsKICBzcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLW9iamVjdHMuYyAgICAgICAgfCAgMSArCisgc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1zb2NrZXQuYyAgICAgICAgIHwgIDEgKworIHNyYy9saWJzeXN0ZW1kL3NkLWJ1cy9zZC1idXMuYyAgICAgICAgICAgICB8ICAxICsKICBzcmMvbGlic3lzdGVtZC9zZC1idXMvdGVzdC1idXMtYmVuY2htYXJrLmMgfCAgMSArCiAgc3JjL2xvY2FsZS9rZXltYXAtdXRpbC5jICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9sb2dpbi9wYW1fc3lzdGVtZC5jICAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvbmV0d29yay9nZW5lcmF0b3IvbmV0d29yay1nZW5lcmF0b3IuYyAgfCAgMSArCiAgc3JjL25zcGF3bi9uc3Bhd24tc2V0dGluZ3MuYyAgICAgICAgICAgICAgIHwgIDEgKworIHNyYy9uc3MtbXltYWNoaW5lcy9uc3MtbXltYWNoaW5lcy5jICAgICAgICB8ICAxICsKKyBzcmMvcG9ydGFibGUvcG9ydGFibGUuYyAgICAgICAgICAgICAgICAgICAgfCAgMSArCisgc3JjL3Jlc29sdmUvcmVzb2x2ZWN0bC5jICAgICAgICAgICAgICAgICAgIHwgIDEgKworIHNyYy9zaGFyZWQvYnVzLXVuaXQtcHJvY3MuYyAgICAgICAgICAgICAgICB8ICAxICsKKyBzcmMvc2hhcmVkL2J1cy11bml0LXV0aWwuYyAgICAgICAgICAgICAgICAgfCAgMSArCisgc3JjL3NoYXJlZC9idXMtdXRpbC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9zaGFyZWQvZG5zLWRvbWFpbi5jICAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvc2hhcmVkL2pvdXJuYWwtaW1wb3J0ZXIuYyAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL3NoYXJlZC9sb2dzLXNob3cuYyAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwpAQCAtNDYsNDYgKzY2LDcwIEBACiAgc3JjL3VkZXYvdWRldi1idWlsdGluLXBhdGhfaWQuYyAgICAgICAgICAgIHwgIDEgKwogIHNyYy91ZGV2L3VkZXYtZXZlbnQuYyAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvdWRldi91ZGV2LXJ1bGVzLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCi0gMzIgZmlsZXMgY2hhbmdlZCwgNDMgaW5zZXJ0aW9ucygrKQorIDQ5IGZpbGVzIGNoYW5nZWQsIDYwIGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IDdmOGM2Nzk0MTEuLjgxYzA2MWI3NjggMTAwNjQ0CitpbmRleCBhMjU5OTY4MDNkNjQuLjcyYjMwNWI1YWI1OCAxMDA2NDQKIC0tLSBhL21lc29uLmJ1aWxkCiArKysgYi9tZXNvbi5idWlsZAotQEAgLTUwNiw2ICs1MDYsNyBAQCBmb3JlYWNoIGlkZW50IDogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDx1bmlzdGQuaD4nJyddLAotICAgICAgICAgWydnZXRfbWVtcG9saWN5JywgICAgICcnJyNpbmNsdWRlIDxzdGRsaWIuaD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8dW5pc3RkLmg+JycnXSwKK0BAIC01MjksNiArNTI5LDcgQEAgZm9yZWFjaCBpZGVudCA6IFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8dW5pc3RkLmg+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPHNpZ25hbC5oPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxzeXMvd2FpdC5oPicnJ10sCiArICAgICAgICBbJ3N0cm5kdXBhJyAsICAgICAgICAgJycnI2luY2x1ZGUgPHN0cmluZy5oPicnJ10sCiAgXQogIAogICAgICAgICAgaGF2ZSA9IGNjLmhhc19mdW5jdGlvbihpZGVudFswXSwgcHJlZml4IDogaWRlbnRbMV0sIGFyZ3MgOiAnLURfR05VX1NPVVJDRScpCiBkaWZmIC0tZ2l0IGEvc3JjL2JhY2tsaWdodC9iYWNrbGlnaHQuYyBiL3NyYy9iYWNrbGlnaHQvYmFja2xpZ2h0LmMKLWluZGV4IGRmZDY4MDUzOTguLmMyYjJhY2U2ZWMgMTAwNjQ0CitpbmRleCAwNDg0NDE0MjkwMjUuLjAxZDc0ZWEwZWQ0ZSAxMDA2NDQKIC0tLSBhL3NyYy9iYWNrbGlnaHQvYmFja2xpZ2h0LmMKICsrKyBiL3NyYy9iYWNrbGlnaHQvYmFja2xpZ2h0LmMKIEBAIC0xNyw2ICsxNyw3IEBACiAgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCiAgI2luY2x1ZGUgInN0cnYuaCIKICAjaW5jbHVkZSAidXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgc3RhdGljIGludCBmaW5kX3BjaV9vcl9wbGF0Zm9ybV9wYXJlbnQoc2RfZGV2aWNlICpkZXZpY2UsIHNkX2RldmljZSAqKnJldCkgewogICAgICAgICAgY29uc3QgY2hhciAqc3Vic3lzdGVtLCAqc3lzbmFtZSwgKnZhbHVlOworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9jZ3JvdXAtdXRpbC5jIGIvc3JjL2Jhc2ljL2Nncm91cC11dGlsLmMKK2luZGV4IDU0ZmM2ZWNmOGIyMC4uYTUxNDFmNGNiZWRkIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL2Nncm91cC11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9jZ3JvdXAtdXRpbC5jCitAQCAtMzcsNiArMzcsNyBAQAorICNpbmNsdWRlICJzdHJ2LmgiCisgI2luY2x1ZGUgInVuaXQtbmFtZS5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyBzdGF0aWMgaW50IGNnX2VudW1lcmF0ZV9pdGVtcyhjb25zdCBjaGFyICpjb250cm9sbGVyLCBjb25zdCBjaGFyICpwYXRoLCBGSUxFICoqX2YsIGNvbnN0IGNoYXIgKml0ZW0pIHsKKyAgICAgICAgIF9jbGVhbnVwX2ZyZWVfIGNoYXIgKmZzID0gTlVMTDsKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvZW52LXV0aWwuYyBiL3NyYy9iYXNpYy9lbnYtdXRpbC5jCi1pbmRleCBhNjUwM2NmMmI2Li5jZWVmOWE2MmM4IDEwMDY0NAoraW5kZXggYjhkYzk4OTE1ZjgxLi41MDQ5YjM3NTk0YmMgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvZW52LXV0aWwuYwogKysrIGIvc3JjL2Jhc2ljL2Vudi11dGlsLmMKLUBAIC0xNiw2ICsxNiw3IEBACitAQCAtMTUsNiArMTUsNyBAQAogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgogICNpbmNsdWRlICJzdHJ2LmgiCiAgI2luY2x1ZGUgInV0ZjguaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogICNkZWZpbmUgVkFMSURfQ0hBUlNfRU5WX05BTUUgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIERJR0lUUyBMRVRURVJTICAgICAgICAgICAgICAgICAgICAgICAgICBcCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2xvZy5jIGIvc3JjL2Jhc2ljL2xvZy5jCitpbmRleCAxNzU1N2UxODQ0YjIuLjZjZWM0ZDMyNGFhYiAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9sb2cuYworKysrIGIvc3JjL2Jhc2ljL2xvZy5jCitAQCAtMzQsNiArMzQsNyBAQAorICNpbmNsdWRlICJ0ZXJtaW5hbC11dGlsLmgiCisgI2luY2x1ZGUgInRpbWUtdXRpbC5oIgorICNpbmNsdWRlICJ1dGY4LmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgI2RlZmluZSBTTkRCVUZfU0laRSAoOCoxMDI0KjEwMjQpCisgCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3Npbmdfc3RkbGliLmggYi9zcmMvYmFzaWMvbWlzc2luZ19zdGRsaWIuaAotaW5kZXggMTg4YThkNDQwNi4uMWUxNmVjMjg3YSAxMDA2NDQKK2luZGV4IDE4OGE4ZDQ0MDY2YS4uMWUxNmVjMjg3YWFkIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL21pc3Npbmdfc3RkbGliLmgKICsrKyBiL3NyYy9iYXNpYy9taXNzaW5nX3N0ZGxpYi5oCiBAQCAtMTEsMyArMTEsMTUgQEAKQEAgLTEwNSwzMzggKzE0OSw1MTggQEAKICsgIH0pCiArI2VuZGlmCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21rZGlyLmMgYi9zcmMvYmFzaWMvbWtkaXIuYwotaW5kZXggNmI4MmVhYjY0MC4uNTFjNmI3ODYxNSAxMDA2NDQKK2luZGV4IGZhNjgyZDRjNDM4ZS4uMzc5MDI1NTE0OTBhIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL21rZGlyLmMKICsrKyBiL3NyYy9iYXNpYy9ta2Rpci5jCi1AQCAtMTQsNiArMTQsNyBAQAorQEAgLTEzLDYgKzEzLDcgQEAKICAjaW5jbHVkZSAic3RhdC11dGlsLmgiCiAgI2luY2x1ZGUgInN0ZGlvLXV0aWwuaCIKICAjaW5jbHVkZSAidXNlci11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBpbnQgbWtkaXJfc2FmZV9pbnRlcm5hbChjb25zdCBjaGFyICpwYXRoLCBtb2RlX3QgbW9kZSwgdWlkX3QgdWlkLCBnaWRfdCBnaWQsIE1rZGlyRmxhZ3MgZmxhZ3MsIG1rZGlyX2Z1bmNfdCBfbWtkaXIpIHsKICAgICAgICAgIHN0cnVjdCBzdGF0IHN0OwogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMgYi9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCi1pbmRleCAxMTVhMTQ5NGEyLi4wN2EzNGJmZDUzIDEwMDY0NAoraW5kZXggZTAwOTRiMGYzNzBhLi4wMGRhNjUxODEyNGIgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCiArKysgYi9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCi1AQCAtMjAsNiArMjAsNyBAQAorQEAgLTE4LDYgKzE4LDcgQEAKICAjaW5jbHVkZSAicHJvY2Vzcy11dGlsLmgiCiAgI2luY2x1ZGUgInN0YXQtdXRpbC5oIgogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgaW50IHBhcnNlX2Jvb2xlYW4oY29uc3QgY2hhciAqdikgewogICAgICAgICAgaWYgKCF2KQogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wcm9jLWNtZGxpbmUuYyBiL3NyYy9iYXNpYy9wcm9jLWNtZGxpbmUuYwotaW5kZXggMDkxNjljZjk2My4uZjQxMWJhODk3ZiAxMDA2NDQKK2luZGV4IDFhZjU4NzE3YzY4Ni4uYzEwMjBmNDYxMWQ0IDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL3Byb2MtY21kbGluZS5jCiArKysgYi9zcmMvYmFzaWMvcHJvYy1jbWRsaW5lLmMKIEBAIC0xNSw2ICsxNSw3IEBACiAgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCiAgI2luY2x1ZGUgInV0aWwuaCIKICAjaW5jbHVkZSAidmlydC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgaW50IHByb2NfY21kbGluZShjaGFyICoqcmV0KSB7CiAgICAgICAgICBjb25zdCBjaGFyICplOwogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wcm9jZnMtdXRpbC5jIGIvc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMKLWluZGV4IDdhYWY5NWJmY2UuLjQyY2U1M2Q1YWEgMTAwNjQ0CitpbmRleCA3YWFmOTViZmNlZDIuLmRhN2U4MzZmMTQzZSAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9wcm9jZnMtdXRpbC5jCiArKysgYi9zcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYwogQEAgLTExLDYgKzExLDcgQEAKICAjaW5jbHVkZSAicHJvY2ZzLXV0aWwuaCIKICAjaW5jbHVkZSAic3RkaW8tdXRpbC5oIgogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgaW50IHByb2Nmc190YXNrc19nZXRfbGltaXQodWludDY0X3QgKnJldCkgewogICAgICAgICAgX2NsZWFudXBfZnJlZV8gY2hhciAqdmFsdWUgPSBOVUxMOworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9zZWxpbnV4LXV0aWwuYyBiL3NyYy9iYXNpYy9zZWxpbnV4LXV0aWwuYworaW5kZXggMTA5NWNiNDI2Y2NlLi44MDZlZjRiZDk3YTkgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvc2VsaW51eC11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9zZWxpbnV4LXV0aWwuYworQEAgLTI2LDYgKzI2LDcgQEAKKyAjaW5jbHVkZSAic2VsaW51eC11dGlsLmgiCisgI2luY2x1ZGUgInN0ZGlvLXV0aWwuaCIKKyAjaW5jbHVkZSAidGltZS11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgI2lmIEhBVkVfU0VMSU5VWAorIERFRklORV9UUklWSUFMX0NMRUFOVVBfRlVOQyhjb250ZXh0X3QsIGNvbnRleHRfZnJlZSk7CiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3RpbWUtdXRpbC5jIGIvc3JjL2Jhc2ljL3RpbWUtdXRpbC5jCi1pbmRleCAzMDE4ZTgxYWNiLi40ZTJiM2I2NmMxIDEwMDY0NAoraW5kZXggMTA1NTg0ZTJlNzJmLi5lYjBiZWQ0N2RhYzMgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvdGltZS11dGlsLmMKICsrKyBiL3NyYy9iYXNpYy90aW1lLXV0aWwuYwotQEAgLTI4LDYgKzI4LDcgQEAKK0BAIC0yNiw2ICsyNiw3IEBACiAgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCiAgI2luY2x1ZGUgInN0cnYuaCIKICAjaW5jbHVkZSAidGltZS11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBzdGF0aWMgY2xvY2tpZF90IG1hcF9jbG9ja19pZChjbG9ja2lkX3QgYykgewogIAorZGlmZiAtLWdpdCBhL3NyYy9ib290L2JsZXNzLWJvb3QuYyBiL3NyYy9ib290L2JsZXNzLWJvb3QuYworaW5kZXggYjk2ZTFmOTI3ZmZmLi5jYmE5NzliYWNhM2UgMTAwNjQ0CistLS0gYS9zcmMvYm9vdC9ibGVzcy1ib290LmMKKysrKyBiL3NyYy9ib290L2JsZXNzLWJvb3QuYworQEAgLTE4LDYgKzE4LDcgQEAKKyAjaW5jbHVkZSAidXRpbC5oIgorICNpbmNsdWRlICJ2ZXJicy5oIgorICNpbmNsdWRlICJ2aXJ0LmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgc3RhdGljIGNoYXIgKiphcmdfcGF0aCA9IE5VTEw7CisgCiBkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZGJ1cy1jZ3JvdXAuYyBiL3NyYy9jb3JlL2RidXMtY2dyb3VwLmMKLWluZGV4IDJmMjMxM2M1OTkuLmM5OTM3ZjlkNjIgMTAwNjQ0CitpbmRleCAyN2RjOWU0M2MzZTIuLmIxYTgzMDIzNjAwYiAxMDA2NDQKIC0tLSBhL3NyYy9jb3JlL2RidXMtY2dyb3VwLmMKICsrKyBiL3NyYy9jb3JlL2RidXMtY2dyb3VwLmMKIEBAIC0xNSw2ICsxNSw3IEBACiAgI2luY2x1ZGUgImZpbGVpby5oIgogICNpbmNsdWRlICJsaW1pdHMtdXRpbC5oIgogICNpbmNsdWRlICJwYXRoLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAotIHN0YXRpYyBCVVNfREVGSU5FX1BST1BFUlRZX0dFVF9FTlVNKHByb3BlcnR5X2dldF9jZ3JvdXBfZGV2aWNlX3BvbGljeSwgY2dyb3VwX2RldmljZV9wb2xpY3ksIENHcm91cERldmljZVBvbGljeSk7CisgQlVTX0RFRklORV9QUk9QRVJUWV9HRVQoYnVzX3Byb3BlcnR5X2dldF90YXNrc19tYXgsICJ0IiwgVGFza3NNYXgsIHRhc2tzX21heF9yZXNvbHZlKTsKICAKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9kYnVzLWV4ZWN1dGUuYyBiL3NyYy9jb3JlL2RidXMtZXhlY3V0ZS5jCitpbmRleCBkOGJhM2U1ZDkyNDEuLjcyOWUxM2ZkYTY0YyAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2RidXMtZXhlY3V0ZS5jCisrKysgYi9zcmMvY29yZS9kYnVzLWV4ZWN1dGUuYworQEAgLTQxLDYgKzQxLDcgQEAKKyAjaW5jbHVkZSAidW5pdC1wcmludGYuaCIKKyAjaW5jbHVkZSAidXNlci11dGlsLmgiCisgI2luY2x1ZGUgInV0ZjguaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyBCVVNfREVGSU5FX1BST1BFUlRZX0dFVF9FTlVNKGJ1c19wcm9wZXJ0eV9nZXRfZXhlY19vdXRwdXQsIGV4ZWNfb3V0cHV0LCBFeGVjT3V0cHV0KTsKKyBzdGF0aWMgQlVTX0RFRklORV9QUk9QRVJUWV9HRVRfRU5VTShwcm9wZXJ0eV9nZXRfZXhlY19pbnB1dCwgZXhlY19pbnB1dCwgRXhlY0lucHV0KTsKIGRpZmYgLS1naXQgYS9zcmMvY29yZS9kYnVzLXV0aWwuYyBiL3NyYy9jb3JlL2RidXMtdXRpbC5jCi1pbmRleCA3ODYyYmVhYWNiLi4xOWY2OTY4Y2ZlIDEwMDY0NAoraW5kZXggNzg2MmJlYWFjYjZkLi4zYjFlYTUzYTVmMGQgMTAwNjQ0CiAtLS0gYS9zcmMvY29yZS9kYnVzLXV0aWwuYwogKysrIGIvc3JjL2NvcmUvZGJ1cy11dGlsLmMKIEBAIC03LDYgKzcsNyBAQAogICNpbmNsdWRlICJ1bml0LXByaW50Zi5oIgogICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKICAjaW5jbHVkZSAidW5pdC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgaW50IGJ1c19wcm9wZXJ0eV9nZXRfdHJpZ2dlcmVkX3VuaXQoCiAgICAgICAgICAgICAgICAgIHNkX2J1cyAqYnVzLAorZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4ZWN1dGUuYyBiL3NyYy9jb3JlL2V4ZWN1dGUuYworaW5kZXggODlkYmY2ZmJkMmMxLi45NzYyZGM1NzQ0M2MgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9leGVjdXRlLmMKKysrKyBiL3NyYy9jb3JlL2V4ZWN1dGUuYworQEAgLTg4LDYgKzg4LDcgQEAKKyAjaW5jbHVkZSAidW5pdC5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKyAjaW5jbHVkZSAidXRtcC13dG1wLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgI2RlZmluZSBJRExFX1RJTUVPVVRfVVNFQyAoNSpVU0VDX1BFUl9TRUMpCisgI2RlZmluZSBJRExFX1RJTUVPVVQyX1VTRUMgKDEqVVNFQ19QRVJfU0VDKQogZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2ttb2Qtc2V0dXAuYyBiL3NyYy9jb3JlL2ttb2Qtc2V0dXAuYwotaW5kZXggYTkxY2ZlYmM2Ny4uYTQ1OTYxMDEzZiAxMDA2NDQKK2luZGV4IDA5Y2NkNjEzZTMyYy4uZjRlNjRmYTI4M2U5IDEwMDY0NAogLS0tIGEvc3JjL2NvcmUva21vZC1zZXR1cC5jCiArKysgYi9zcmMvY29yZS9rbW9kLXNldHVwLmMKIEBAIC0xMSw2ICsxMSw3IEBACi0gI2luY2x1ZGUgImttb2Qtc2V0dXAuaCIKICAjaW5jbHVkZSAibWFjcm8uaCIKICAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorICNpbmNsdWRlICJtaXNzaW5nX3R5cGUuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICAjaWYgSEFWRV9LTU9ECi0gI2luY2x1ZGUgPGxpYmttb2QuaD4KKyAjaW5jbHVkZSAibW9kdWxlLXV0aWwuaCIKIGRpZmYgLS1naXQgYS9zcmMvY29yZS9zZXJ2aWNlLmMgYi9zcmMvY29yZS9zZXJ2aWNlLmMKLWluZGV4IDczYjNjOWMzMTYuLmVmNzRmMDBhMDggMTAwNjQ0CitpbmRleCAxN2YyN2E0YWJjZTMuLmU1ZGNjNTMyZDBjZSAxMDA2NDQKIC0tLSBhL3NyYy9jb3JlL3NlcnZpY2UuYwogKysrIGIvc3JjL2NvcmUvc2VydmljZS5jCi1AQCAtNDMsNiArNDMsNyBAQAorQEAgLTQxLDYgKzQxLDcgQEAKICAjaW5jbHVkZSAidW5pdC5oIgogICNpbmNsdWRlICJ1dGY4LmgiCiAgI2luY2x1ZGUgInV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIHN0YXRpYyBjb25zdCBVbml0QWN0aXZlU3RhdGUgc3RhdGVfdHJhbnNsYXRpb25fdGFibGVbX1NFUlZJQ0VfU1RBVEVfTUFYXSA9IHsKICAgICAgICAgIFtTRVJWSUNFX0RFQURdID0gVU5JVF9JTkFDVElWRSwKK2RpZmYgLS1naXQgYS9zcmMvY29yZWR1bXAvY29yZWR1bXAtdmFjdXVtLmMgYi9zcmMvY29yZWR1bXAvY29yZWR1bXAtdmFjdXVtLmMKK2luZGV4IDM1ODg1ZGZiNDdjNC4uYmI5ZjA2NjBhNmEwIDEwMDY0NAorLS0tIGEvc3JjL2NvcmVkdW1wL2NvcmVkdW1wLXZhY3V1bS5jCisrKysgYi9zcmMvY29yZWR1bXAvY29yZWR1bXAtdmFjdXVtLmMKK0BAIC0xNiw2ICsxNiw3IEBACisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisgI2luY2x1ZGUgInRpbWUtdXRpbC5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyAjZGVmaW5lIERFRkFVTFRfTUFYX1VTRV9MT1dFUiAodWludDY0X3QpICgxVUxMKjEwMjRVTEwqMTAyNFVMTCkgICAgICAgICAgIC8qIDEgTWlCICovCisgI2RlZmluZSBERUZBVUxUX01BWF9VU0VfVVBQRVIgKHVpbnQ2NF90KSAoNFVMTCoxMDI0VUxMKjEwMjRVTEwqMTAyNFVMTCkgICAvKiA0IEdpQiAqLworZGlmZiAtLWdpdCBhL3NyYy9qb3VybmFsLXJlbW90ZS9qb3VybmFsLXJlbW90ZS1tYWluLmMgYi9zcmMvam91cm5hbC1yZW1vdGUvam91cm5hbC1yZW1vdGUtbWFpbi5jCitpbmRleCA4OGU0MmQzYTk4NGIuLjBmMDgzNzZlNTM5OSAxMDA2NDQKKy0tLSBhL3NyYy9qb3VybmFsLXJlbW90ZS9qb3VybmFsLXJlbW90ZS1tYWluLmMKKysrKyBiL3NyYy9qb3VybmFsLXJlbW90ZS9qb3VybmFsLXJlbW90ZS1tYWluLmMKK0BAIC0yMiw2ICsyMiw3IEBACisgI2luY2x1ZGUgInN0YXQtdXRpbC5oIgorICNpbmNsdWRlICJzdHJpbmctdGFibGUuaCIKKyAjaW5jbHVkZSAic3Rydi5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorICNkZWZpbmUgUFJJVl9LRVlfRklMRSBDRVJUSUZJQ0FURV9ST09UICIvcHJpdmF0ZS9qb3VybmFsLXJlbW90ZS5wZW0iCisgI2RlZmluZSBDRVJUX0ZJTEUgICAgIENFUlRJRklDQVRFX1JPT1QgIi9jZXJ0cy9qb3VybmFsLXJlbW90ZS5wZW0iCiBkaWZmIC0tZ2l0IGEvc3JjL2pvdXJuYWwvam91cm5hbGN0bC5jIGIvc3JjL2pvdXJuYWwvam91cm5hbGN0bC5jCi1pbmRleCA2ZDZiYjFjZjYzLi42NjY2MzQ5YTM1IDEwMDY0NAoraW5kZXggZTVmZWVjODNiY2U2Li5jM2FlYzFlMjE5ZDcgMTAwNjQ0CiAtLS0gYS9zcmMvam91cm5hbC9qb3VybmFsY3RsLmMKICsrKyBiL3NyYy9qb3VybmFsL2pvdXJuYWxjdGwuYwotQEAgLTcwLDYgKzcwLDcgQEAKK0BAIC02OSw2ICs2OSw3IEBACiAgI2luY2x1ZGUgInVuaXQtbmFtZS5oIgogICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKICAjaW5jbHVkZSAidmFybGluay5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgI2RlZmluZSBERUZBVUxUX0ZTU19JTlRFUlZBTF9VU0VDICgxNSpVU0VDX1BFUl9NSU5VVEUpCisgI2RlZmluZSBQUk9DRVNTX0lOT1RJRllfSU5URVJWQUwgMTAyNCAgIC8qIEV2ZXJ5IDEsMDI0IG1lc3NhZ2VzIHByb2Nlc3NlZCAqLworZGlmZiAtLWdpdCBhL3NyYy9qb3VybmFsL3NkLWpvdXJuYWwuYyBiL3NyYy9qb3VybmFsL3NkLWpvdXJuYWwuYworaW5kZXggM2ZhOThkZmRhMjM3Li5lNjU1ZDc3ZTcxNGEgMTAwNjQ0CistLS0gYS9zcmMvam91cm5hbC9zZC1qb3VybmFsLmMKKysrKyBiL3NyYy9qb3VybmFsL3NkLWpvdXJuYWwuYworQEAgLTQwLDYgKzQwLDcgQEAKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKyAjaW5jbHVkZSAic3Rydi5oIgorICNpbmNsdWRlICJzeXNsb2ctdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorICNkZWZpbmUgSk9VUk5BTF9GSUxFU19NQVggNzE2OAogIAogZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtbWVzc2FnZS5jIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1tZXNzYWdlLmMKLWluZGV4IGViMDI5ZTQ0NTMuLmYzMWZlOWQ1YTggMTAwNjQ0CitpbmRleCA3MzEyN2RmZTAyNTMuLmNjODYzNWRlYTU5MSAxMDA2NDQKIC0tLSBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtbWVzc2FnZS5jCiArKysgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLW1lc3NhZ2UuYwogQEAgLTIxLDYgKzIxLDcgQEAKICAjaW5jbHVkZSAic3Rydi5oIgogICNpbmNsdWRlICJ0aW1lLXV0aWwuaCIKICAjaW5jbHVkZSAidXRmOC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgc3RhdGljIGludCBtZXNzYWdlX2FwcGVuZF9iYXNpYyhzZF9idXNfbWVzc2FnZSAqbSwgY2hhciB0eXBlLCBjb25zdCB2b2lkICpwLCBjb25zdCB2b2lkICoqc3RvcmVkKTsKICAKIGRpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLW9iamVjdHMuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtb2JqZWN0cy5jCi1pbmRleCBhZTY0M2NhY2M3Li4xYjc1MjI3MWE1IDEwMDY0NAoraW5kZXggNmQxNDAzNDhlYzRjLi45MTI2Yjg4MDFiYzUgMTAwNjQ0CiAtLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLW9iamVjdHMuYwogKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1vYmplY3RzLmMKIEBAIC0xMyw2ICsxMyw3IEBACiAgI2luY2x1ZGUgInNldC5oIgogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgogICNpbmNsdWRlICJzdHJ2LmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBzdGF0aWMgaW50IG5vZGVfdnRhYmxlX2dldF91c2VyZGF0YSgKICAgICAgICAgICAgICAgICAgc2RfYnVzICpidXMsCitkaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1zb2NrZXQuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtc29ja2V0LmMKK2luZGV4IDE4ZDMwZDAxMGEyMC4uYmUyYWI3MDNmOGVkIDEwMDY0NAorLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1zb2NrZXQuYworKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1zb2NrZXQuYworQEAgLTI4LDYgKzI4LDcgQEAKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKyAjaW5jbHVkZSAidXNlci11dGlsLmgiCisgI2luY2x1ZGUgInV0ZjguaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyAjZGVmaW5lIFNOREJVRl9TSVpFICg4KjEwMjQqMTAyNCkKKyAKK2RpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvc2QtYnVzLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvc2QtYnVzLmMKK2luZGV4IDdhZDAzNjgwZjQ4ZC4uYjlkMjE4MWU0OTEwIDEwMDY0NAorLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL3NkLWJ1cy5jCisrKysgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvc2QtYnVzLmMKK0BAIC00MSw2ICs0MSw3IEBACisgI2luY2x1ZGUgInByb2Nlc3MtdXRpbC5oIgorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorICNpbmNsdWRlICJzdHJ2LmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgI2RlZmluZSBsb2dfZGVidWdfYnVzX21lc3NhZ2UobSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy90ZXN0LWJ1cy1iZW5jaG1hcmsuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy90ZXN0LWJ1cy1iZW5jaG1hcmsuYwotaW5kZXggOGRlMGE4NTllZS4uNGZkMGEyZTY5MiAxMDA2NDQKK2luZGV4IDhkZTBhODU5ZWU5NC4uNTgwNDRiNmJhOTA4IDEwMDY0NAogLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL3Rlc3QtYnVzLWJlbmNobWFyay5jCiArKysgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvdGVzdC1idXMtYmVuY2htYXJrLmMKIEBAIC0xNCw2ICsxNCw3IEBACiAgI2luY2x1ZGUgIm1pc3NpbmdfcmVzb3VyY2UuaCIKICAjaW5jbHVkZSAidGltZS11dGlsLmgiCiAgI2luY2x1ZGUgInV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogICNkZWZpbmUgTUFYX1NJWkUgKDIqMTAyNCoxMDI0KQogIAogZGlmZiAtLWdpdCBhL3NyYy9sb2NhbGUva2V5bWFwLXV0aWwuYyBiL3NyYy9sb2NhbGUva2V5bWFwLXV0aWwuYwotaW5kZXggZjhjMzZjOTRmNS4uNDFmNTYwNmFlYSAxMDA2NDQKK2luZGV4IDMwNjY5YTkzNTllNS4uNjU0NGIzNzIyMDk5IDEwMDY0NAogLS0tIGEvc3JjL2xvY2FsZS9rZXltYXAtdXRpbC5jCiArKysgYi9zcmMvbG9jYWxlL2tleW1hcC11dGlsLmMKLUBAIC0yMiw2ICsyMiw3IEBACitAQCAtMjEsNiArMjEsNyBAQAogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgogICNpbmNsdWRlICJzdHJ2LmgiCiAgI2luY2x1ZGUgInRtcGZpbGUtdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgc3RhdGljIGJvb2wgc3RhcnRzd2l0aF9jb21tYShjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICpwcmVmaXgpIHsKICAgICAgICAgIHMgPSBzdGFydHN3aXRoKHMsIHByZWZpeCk7CiBkaWZmIC0tZ2l0IGEvc3JjL2xvZ2luL3BhbV9zeXN0ZW1kLmMgYi9zcmMvbG9naW4vcGFtX3N5c3RlbWQuYwotaW5kZXggM2Y3NjJjYmJjMy4uMDA1Y2ZlYTY1OCAxMDA2NDQKK2luZGV4IDg0YmVhMjFhYjdiZS4uNDk3MjBjN2Y3NDJlIDEwMDY0NAogLS0tIGEvc3JjL2xvZ2luL3BhbV9zeXN0ZW1kLmMKICsrKyBiL3NyYy9sb2dpbi9wYW1fc3lzdGVtZC5jCi1AQCAtMjgsNiArMjgsNyBAQAotICNpbmNsdWRlICJob3N0bmFtZS11dGlsLmgiCitAQCAtMzEsNiArMzEsNyBAQAorICNpbmNsdWRlICJsb2NhbGUtdXRpbC5oIgogICNpbmNsdWRlICJsb2dpbi11dGlsLmgiCiAgI2luY2x1ZGUgIm1hY3JvLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAjaW5jbHVkZSAicGFtLXV0aWwuaCIKICAjaW5jbHVkZSAicGFyc2UtdXRpbC5oIgogICNpbmNsdWRlICJwYXRoLXV0aWwuaCIKLSAjaW5jbHVkZSAicHJvY2Vzcy11dGlsLmgiCiBkaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvZ2VuZXJhdG9yL25ldHdvcmstZ2VuZXJhdG9yLmMgYi9zcmMvbmV0d29yay9nZW5lcmF0b3IvbmV0d29yay1nZW5lcmF0b3IuYwotaW5kZXggMGI1YWYzMzU2Ni4uOWM4MDhjZDAxNCAxMDA2NDQKK2luZGV4IGJlZDFlNDI2OTdjNC4uZTQ4NDdjMmJlZWEyIDEwMDY0NAogLS0tIGEvc3JjL25ldHdvcmsvZ2VuZXJhdG9yL25ldHdvcmstZ2VuZXJhdG9yLmMKICsrKyBiL3NyYy9uZXR3b3JrL2dlbmVyYXRvci9uZXR3b3JrLWdlbmVyYXRvci5jCiBAQCAtMTMsNiArMTMsNyBAQAogICNpbmNsdWRlICJzdHJpbmctdGFibGUuaCIKICAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKICAjaW5jbHVkZSAic3Rydi5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgLyoKICAgICMgLm5ldHdvcmsKIGRpZmYgLS1naXQgYS9zcmMvbnNwYXduL25zcGF3bi1zZXR0aW5ncy5jIGIvc3JjL25zcGF3bi9uc3Bhd24tc2V0dGluZ3MuYwotaW5kZXggM2E5OTczNjgxMy4uMjc5ZmVhNGQ4OCAxMDA2NDQKK2luZGV4IDVmYjViNDliYmNjMy4uNzg1Y2NjMmRhMzA3IDEwMDY0NAogLS0tIGEvc3JjL25zcGF3bi9uc3Bhd24tc2V0dGluZ3MuYwogKysrIGIvc3JjL25zcGF3bi9uc3Bhd24tc2V0dGluZ3MuYwogQEAgLTE2LDYgKzE2LDcgQEAKICAjaW5jbHVkZSAic3Rydi5oIgogICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKICAjaW5jbHVkZSAidXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgU2V0dGluZ3MgKnNldHRpbmdzX25ldyh2b2lkKSB7CiAgICAgICAgICBTZXR0aW5ncyAqczsKK2RpZmYgLS1naXQgYS9zcmMvbnNzLW15bWFjaGluZXMvbnNzLW15bWFjaGluZXMuYyBiL3NyYy9uc3MtbXltYWNoaW5lcy9uc3MtbXltYWNoaW5lcy5jCitpbmRleCAzNjQzNTZkYTU2MjIuLjQ3ZDRlYTQ0ZTQwZiAxMDA2NDQKKy0tLSBhL3NyYy9uc3MtbXltYWNoaW5lcy9uc3MtbXltYWNoaW5lcy5jCisrKysgYi9zcmMvbnNzLW15bWFjaGluZXMvbnNzLW15bWFjaGluZXMuYworQEAgLTE5LDYgKzE5LDcgQEAKKyAjaW5jbHVkZSAic2lnbmFsLXV0aWwuaCIKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKyAjaW5jbHVkZSAidXNlci11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgTlNTX0dFVEhPU1RCWU5BTUVfUFJPVE9UWVBFUyhteW1hY2hpbmVzKTsKKyBOU1NfR0VUUFdfUFJPVE9UWVBFUyhteW1hY2hpbmVzKTsKK2RpZmYgLS1naXQgYS9zcmMvcG9ydGFibGUvcG9ydGFibGUuYyBiL3NyYy9wb3J0YWJsZS9wb3J0YWJsZS5jCitpbmRleCBlMTg4MjZhYjI2ODUuLmQ5ZjRiODFkODkzNyAxMDA2NDQKKy0tLSBhL3NyYy9wb3J0YWJsZS9wb3J0YWJsZS5jCisrKysgYi9zcmMvcG9ydGFibGUvcG9ydGFibGUuYworQEAgLTMxLDYgKzMxLDcgQEAKKyAjaW5jbHVkZSAic3Rydi5oIgorICNpbmNsdWRlICJ0bXBmaWxlLXV0aWwuaCIKKyAjaW5jbHVkZSAidXNlci11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgc3RhdGljIGNvbnN0IGNoYXIgcHJvZmlsZV9kaXJzW10gPSBDT05GX1BBVEhTX05VTFNUUigic3lzdGVtZC9wb3J0YWJsZS9wcm9maWxlIik7CisgCitkaWZmIC0tZ2l0IGEvc3JjL3Jlc29sdmUvcmVzb2x2ZWN0bC5jIGIvc3JjL3Jlc29sdmUvcmVzb2x2ZWN0bC5jCitpbmRleCBmMjBlOGM0NGI4YmMuLjlmNmM0ZThmNDlhNyAxMDA2NDQKKy0tLSBhL3NyYy9yZXNvbHZlL3Jlc29sdmVjdGwuYworKysrIGIvc3JjL3Jlc29sdmUvcmVzb2x2ZWN0bC5jCitAQCAtMzMsNiArMzMsNyBAQAorICNpbmNsdWRlICJzdHJ2LmgiCisgI2luY2x1ZGUgInRlcm1pbmFsLXV0aWwuaCIKKyAjaW5jbHVkZSAidmVyYnMuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyBzdGF0aWMgaW50IGFyZ19mYW1pbHkgPSBBRl9VTlNQRUM7Cisgc3RhdGljIGludCBhcmdfaWZpbmRleCA9IDA7CitkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9idXMtdW5pdC1wcm9jcy5jIGIvc3JjL3NoYXJlZC9idXMtdW5pdC1wcm9jcy5jCitpbmRleCBiMjFmZTM5MzI2NWYuLmFmMjY0MDAwNWMxZCAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvYnVzLXVuaXQtcHJvY3MuYworKysrIGIvc3JjL3NoYXJlZC9idXMtdW5pdC1wcm9jcy5jCitAQCAtMTAsNiArMTAsNyBAQAorICNpbmNsdWRlICJzb3J0LXV0aWwuaCIKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKyAjaW5jbHVkZSAidGVybWluYWwtdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorIHN0cnVjdCBDR3JvdXBJbmZvIHsKKyAgICAgICAgIGNoYXIgKmNncm91cF9wYXRoOworZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvYnVzLXVuaXQtdXRpbC5jIGIvc3JjL3NoYXJlZC9idXMtdW5pdC11dGlsLmMKK2luZGV4IDI4ZDg1OTQ0YThhNy4uNDc0M2E4NGE0MTdlIDEwMDY0NAorLS0tIGEvc3JjL3NoYXJlZC9idXMtdW5pdC11dGlsLmMKKysrKyBiL3NyYy9zaGFyZWQvYnVzLXVuaXQtdXRpbC5jCitAQCAtMzQsNiArMzQsNyBAQAorICNpbmNsdWRlICJ1bml0LWRlZi5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKyAjaW5jbHVkZSAidXRmOC5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorIGludCBidXNfcGFyc2VfdW5pdF9pbmZvKHNkX2J1c19tZXNzYWdlICptZXNzYWdlLCBVbml0SW5mbyAqdSkgeworICAgICAgICAgYXNzZXJ0KG1lc3NhZ2UpOworZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvYnVzLXV0aWwuYyBiL3NyYy9zaGFyZWQvYnVzLXV0aWwuYworaW5kZXggOGU2YTZlMmNlMmRlLi4wY2JmNGIxOTk3ZGYgMTAwNjQ0CistLS0gYS9zcmMvc2hhcmVkL2J1cy11dGlsLmMKKysrKyBiL3NyYy9zaGFyZWQvYnVzLXV0aWwuYworQEAgLTMwLDYgKzMwLDcgQEAKKyAjaW5jbHVkZSAic3RkaW8tdXRpbC5oIgorICNpbmNsdWRlICJzdHJ2LmgiCisgI2luY2x1ZGUgInVzZXItdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorIHN0YXRpYyBpbnQgbmFtZV9vd25lcl9jaGFuZ2VfY2FsbGJhY2soc2RfYnVzX21lc3NhZ2UgKm0sIHZvaWQgKnVzZXJkYXRhLCBzZF9idXNfZXJyb3IgKnJldF9lcnJvcikgeworICAgICAgICAgc2RfZXZlbnQgKmUgPSB1c2VyZGF0YTsKIGRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2Rucy1kb21haW4uYyBiL3NyYy9zaGFyZWQvZG5zLWRvbWFpbi5jCi1pbmRleCBmNjJhZDBhMGY1Li5mMWEyN2UxNThkIDEwMDY0NAoraW5kZXggYjgxMjY2NTMxNWY2Li44ZTY4ZjdmOGZjNmMgMTAwNjQ0CiAtLS0gYS9zcmMvc2hhcmVkL2Rucy1kb21haW4uYwogKysrIGIvc3JjL3NoYXJlZC9kbnMtZG9tYWluLmMKLUBAIC0yNCw2ICsyNCw3IEBACitAQCAtMjMsNiArMjMsNyBAQAogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgogICNpbmNsdWRlICJzdHJ2LmgiCiAgI2luY2x1ZGUgInV0ZjguaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIGludCBkbnNfbGFiZWxfdW5lc2NhcGUoY29uc3QgY2hhciAqKm5hbWUsIGNoYXIgKmRlc3QsIHNpemVfdCBzeiwgRE5TTGFiZWxGbGFncyBmbGFncykgewogICAgICAgICAgY29uc3QgY2hhciAqbjsKIGRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2pvdXJuYWwtaW1wb3J0ZXIuYyBiL3NyYy9zaGFyZWQvam91cm5hbC1pbXBvcnRlci5jCi1pbmRleCA3YzRmYzcwMjFkLi5hNmZmMjIxNGRmIDEwMDY0NAoraW5kZXggN2M0ZmM3MDIxZGVjLi4zZmJhZjVhNjM5NjkgMTAwNjQ0CiAtLS0gYS9zcmMvc2hhcmVkL2pvdXJuYWwtaW1wb3J0ZXIuYwogKysrIGIvc3JjL3NoYXJlZC9qb3VybmFsLWltcG9ydGVyLmMKIEBAIC0xNCw2ICsxNCw3IEBACiAgI2luY2x1ZGUgInBhcnNlLXV0aWwuaCIKICAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKICAjaW5jbHVkZSAidW5hbGlnbmVkLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBlbnVtIHsKICAgICAgICAgIElNUE9SVEVSX1NUQVRFX0xJTkUgPSAwLCAgICAvKiB3YWl0aW5nIHRvIHJlYWQsIG9yIHJlYWRpbmcgbGluZSAqLwogZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvbG9ncy1zaG93LmMgYi9zcmMvc2hhcmVkL2xvZ3Mtc2hvdy5jCi1pbmRleCBiNjE1YzcwZGZmLi43NWIyNmU5YzIxIDEwMDY0NAoraW5kZXggMmJmZDBiNjBjMjZiLi42YTFiYjNhMDc2MGYgMTAwNjQ0CiAtLS0gYS9zcmMvc2hhcmVkL2xvZ3Mtc2hvdy5jCiArKysgYi9zcmMvc2hhcmVkL2xvZ3Mtc2hvdy5jCiBAQCAtMzksNiArMzksNyBAQAogICNpbmNsdWRlICJ0aW1lLXV0aWwuaCIKICAjaW5jbHVkZSAidXRmOC5oIgogICNpbmNsdWRlICJ1dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICAvKiB1cCB0byB0aHJlZSBsaW5lcyAoZWFjaCB1cCB0byAxMDAgY2hhcmFjdGVycykgb3IgMzAwIGNoYXJhY3RlcnMsIHdoaWNoZXZlciBpcyBsZXNzICovCiAgI2RlZmluZSBQUklOVF9MSU5FX1RIUkVTSE9MRCAzCiBkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9wYWdlci5jIGIvc3JjL3NoYXJlZC9wYWdlci5jCi1pbmRleCA3YzIwYjEwMGI0Li5lNDIwOWQzYTk1IDEwMDY0NAoraW5kZXggMWZlOWRiMTc5MTc2Li42Nzk1NGI1Y2FiOTMgMTAwNjQ0CiAtLS0gYS9zcmMvc2hhcmVkL3BhZ2VyLmMKICsrKyBiL3NyYy9zaGFyZWQvcGFnZXIuYwotQEAgLTI1LDYgKzI1LDcgQEAKK0BAIC0yMyw2ICsyMyw3IEBACiAgI2luY2x1ZGUgInN0cnYuaCIKICAjaW5jbHVkZSAidGVybWluYWwtdXRpbC5oIgogICNpbmNsdWRlICJ1dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBzdGF0aWMgcGlkX3QgcGFnZXJfcGlkID0gMDsKICAKIGRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL3BhdGgtbG9va3VwLmMgYi9zcmMvc2hhcmVkL3BhdGgtbG9va3VwLmMKLWluZGV4IDZiZjBmZjAzMTYuLmY2YzgwMDljZDIgMTAwNjQ0CitpbmRleCA1YjE2MjA5NzQ1MzYuLjBlN2NkMWMyYWYxMiAxMDA2NDQKIC0tLSBhL3NyYy9zaGFyZWQvcGF0aC1sb29rdXAuYwogKysrIGIvc3JjL3NoYXJlZC9wYXRoLWxvb2t1cC5jCi1AQCAtMjAsNiArMjAsNyBAQAorQEAgLTE5LDYgKzE5LDcgQEAKICAjaW5jbHVkZSAidG1wZmlsZS11dGlsLmgiCiAgI2luY2x1ZGUgInVzZXItdXRpbC5oIgogICNpbmNsdWRlICJ1dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBpbnQgeGRnX3VzZXJfcnVudGltZV9kaXIoY2hhciAqKnJldCwgY29uc3QgY2hhciAqc3VmZml4KSB7CiAgICAgICAgICBjb25zdCBjaGFyICplOwogZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMgYi9zcmMvc2hhcmVkL3VpZC1yYW5nZS5jCi1pbmRleCA3Y2I3ZDhhNDc3Li44YjEyYjkxMDg0IDEwMDY0NAoraW5kZXggN2NiN2Q4YTQ3N2U5Li44ZTdkN2Y5ZTdjYTYgMTAwNjQ0CiAtLS0gYS9zcmMvc2hhcmVkL3VpZC1yYW5nZS5jCiArKysgYi9zcmMvc2hhcmVkL3VpZC1yYW5nZS5jCiBAQCAtOSw2ICs5LDcgQEAKICAjaW5jbHVkZSAic29ydC11dGlsLmgiCiAgI2luY2x1ZGUgInVpZC1yYW5nZS5oIgogICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIHN0YXRpYyBib29sIHVpZF9yYW5nZV9pbnRlcnNlY3QoVWlkUmFuZ2UgKnJhbmdlLCB1aWRfdCBzdGFydCwgdWlkX3QgbnIpIHsKICAgICAgICAgIGFzc2VydChyYW5nZSk7CiBkaWZmIC0tZ2l0IGEvc3JjL3NvY2tldC1wcm94eS9zb2NrZXQtcHJveHlkLmMgYi9zcmMvc29ja2V0LXByb3h5L3NvY2tldC1wcm94eWQuYwotaW5kZXggYWJiYmM5ZjJkNi4uNjE3OWI1ODUxZSAxMDA2NDQKK2luZGV4IDJlZTZmYzJmMGE2YS4uNGE5OTM0ZjljMTRkIDEwMDY0NAogLS0tIGEvc3JjL3NvY2tldC1wcm94eS9zb2NrZXQtcHJveHlkLmMKICsrKyBiL3NyYy9zb2NrZXQtcHJveHkvc29ja2V0LXByb3h5ZC5jCi1AQCAtMjgsNiArMjgsNyBAQAorQEAgLTI2LDYgKzI2LDcgQEAKICAjaW5jbHVkZSAic29ja2V0LXV0aWwuaCIKICAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKICAjaW5jbHVkZSAidXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgI2RlZmluZSBCVUZGRVJfU0laRSAoMjU2ICogMTAyNCkKICAKIGRpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jIGIvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYwotaW5kZXggNTIyMTc0MjliMS4uYTA1ZTc3ODJmNiAxMDA2NDQKK2luZGV4IDUyMjE3NDI5YjE1NC4uNzA3MDhkZWRmMzE4IDEwMDY0NAogLS0tIGEvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYwogKysrIGIvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYwogQEAgLTYsNiArNiw3IEBACiAgI2luY2x1ZGUgImhleGRlY29jdC5oIgogICNpbmNsdWRlICJtYWNyby5oIgogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgc3RhdGljIHZvaWQgdGVzdF9oZXhjaGFyKHZvaWQpIHsKICAgICAgICAgIGFzc2VydF9zZShoZXhjaGFyKDB4YSkgPT0gJ2EnKTsKIGRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tcGF0aF9pZC5jIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLXBhdGhfaWQuYwotaW5kZXggZThmMWNlMTM1NC4uODY5M2NiMDJhNCAxMDA2NDQKK2luZGV4IGNhMzhmNTYwODc5MS4uOWQ4Y2Y0ZDI4MDdiIDEwMDY0NAogLS0tIGEvc3JjL3VkZXYvdWRldi1idWlsdGluLXBhdGhfaWQuYwogKysrIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLXBhdGhfaWQuYwotQEAgLTIzLDYgKzIzLDcgQEAKK0BAIC0yMiw2ICsyMiw3IEBACiAgI2luY2x1ZGUgInN0cnYuaCIKICAjaW5jbHVkZSAic3lzZXhpdHMuaCIKICAjaW5jbHVkZSAidWRldi1idWlsdGluLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBfcHJpbnRmXygyLDMpCiAgc3RhdGljIHZvaWQgcGF0aF9wcmVwZW5kKGNoYXIgKipwYXRoLCBjb25zdCBjaGFyICpmbXQsIC4uLikgewogZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYtZXZlbnQuYyBiL3NyYy91ZGV2L3VkZXYtZXZlbnQuYwotaW5kZXggOGNmYTJjZGYyMy4uYjA2NzBjNzdlYyAxMDA2NDQKK2luZGV4IGViNTExMzllNTE5Yy4uOTc3Y2MxNmU5ZDdjIDEwMDY0NAogLS0tIGEvc3JjL3VkZXYvdWRldi1ldmVudC5jCiArKysgYi9zcmMvdWRldi91ZGV2LWV2ZW50LmMKLUBAIC0zNSw2ICszNSw3IEBACitAQCAtMzQsNiArMzQsNyBAQAogICNpbmNsdWRlICJ1ZGV2LXV0aWwuaCIKICAjaW5jbHVkZSAidWRldi13YXRjaC5oIgogICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIHR5cGVkZWYgc3RydWN0IFNwYXduIHsKICAgICAgICAgIHNkX2RldmljZSAqZGV2aWNlOwogZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYtcnVsZXMuYyBiL3NyYy91ZGV2L3VkZXYtcnVsZXMuYwotaW5kZXggMTY0MmYxMDUzNS4uZmUyYWE3NTQ3OCAxMDA2NDQKK2luZGV4IGI5YjM1MGQxZWY3YS4uMmMxMTRjYzc3NTcyIDEwMDY0NAogLS0tIGEvc3JjL3VkZXYvdWRldi1ydWxlcy5jCiArKysgYi9zcmMvdWRldi91ZGV2LXJ1bGVzLmMKLUBAIC0yOCw2ICsyOCw3IEBACi0gI2luY2x1ZGUgInVkZXYtZXZlbnQuaCIKK0BAIC0zMCw2ICszMCw3IEBACiAgI2luY2x1ZGUgInVkZXYtcnVsZXMuaCIKICAjaW5jbHVkZSAidXNlci11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAjaW5jbHVkZSAidmlydC5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogICNkZWZpbmUgUlVMRVNfRElSUyAoY29uc3QgY2hhciogY29uc3QqKSBDT05GX1BBVEhTX1NUUlYoInVkZXYvcnVsZXMuZCIpCiAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaAppbmRleCA2ZDczZDcxLi45MTQyZDdiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtSW5jbHVkZS1uZXRpbmV0LWlmX2V0aGVyLmgucGF0Y2gKQEAgLTEsNCArMSw3IEBACi1JbmNsdWRlIG5ldGluZXQvaWZfZXRoZXIuaAorRnJvbSA0NzgxODA1MjEyMWQxMzU2MzJmNWU0NmMzNjllM2U0NzA2YTBmOWUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjYgT2N0IDIwMTcgMjI6MTA6NDIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gSW5jbHVkZSBuZXRpbmV0L2lmX2V0aGVyLmgKIAogRml4ZXMKIC9wYXRoL3RvL3N5c3RlbWQvcmVjaXBlLXN5c3Jvb3QvdXNyL2luY2x1ZGUvbmV0aW5ldC9pZl9ldGhlci5oOjEwMTo4OiBlcnJvcjogcmVkZWZpbml0aW9uIG9mICdzdHJ1Y3QgZXRoaGRyJwpAQCAtMjYsMTEgKzI5LDE1IEBACiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBbcmViYXNlZCBmb3Igc3lzdGVtZCAyNDNdCiBTaWduZWQtb2ZmLWJ5OiBTY290dCBNdXJyYXkgPHNjb3R0Lm11cnJheUBrb25zdWxrby5jb20+CisKIC0tLQogIHNyYy9saWJzeXN0ZW1kLW5ldHdvcmsvc2QtZGhjcDYtY2xpZW50LmMgIHwgMSAtCiAgc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMgfCAxICsKICBzcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYyAgICAgICAgICAgICAgICB8IDEgKworIHNyYy9uZXR3b3JrL25ldGRldi9ib25kLmMgICAgICAgICAgICAgICAgIHwgMSArCisgc3JjL25ldHdvcmsvbmV0ZGV2L2JyaWRnZS5jICAgICAgICAgICAgICAgfCAxICsKICBzcmMvbmV0d29yay9uZXRkZXYvbWFjc2VjLmMgICAgICAgICAgICAgICB8IDEgKworIHNyYy9uZXR3b3JrL25ldGRldi9uZXRkZXYtZ3BlcmYuZ3BlcmYgICAgIHwgMSArCiAgc3JjL25ldHdvcmsvbmV0ZGV2L25ldGRldi5jICAgICAgICAgICAgICAgfCAxICsKICBzcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYyAgICAgICAgICAgICB8IDEgKwogIHNyYy9uZXR3b3JrL25ldHdvcmtkLWRoY3AtY29tbW9uLmMgICAgICAgIHwgMSArCkBAIC0zOCwyNiArNDUsMjcgQEAKICBzcmMvbmV0d29yay9uZXR3b3JrZC1kaGNwNi5jICAgICAgICAgICAgICB8IDIgKy0KICBzcmMvbmV0d29yay9uZXR3b3JrZC1saW5rLmMgICAgICAgICAgICAgICB8IDIgKy0KICBzcmMvbmV0d29yay9uZXR3b3JrZC1uZXR3b3JrLmMgICAgICAgICAgICB8IDEgKworIHNyYy9uZXR3b3JrL3Rlc3QtbmV0d29yay10YWJsZXMuYyAgICAgICAgIHwgMSArCiAgc3JjL3NoYXJlZC9ldGh0b29sLXV0aWwuYyAgICAgICAgICAgICAgICAgfCAxICsKICBzcmMvc2hhcmVkL2V0aHRvb2wtdXRpbC5oICAgICAgICAgICAgICAgICB8IDEgKwogIHNyYy91ZGV2L25ldC9saW5rLWNvbmZpZy5jICAgICAgICAgICAgICAgIHwgMSArCiAgc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMgICAgfCAxICsKLSAxNSBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorIDE5IGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC1uZXR3b3JrL3NkLWRoY3A2LWNsaWVudC5jIGIvc3JjL2xpYnN5c3RlbWQtbmV0d29yay9zZC1kaGNwNi1jbGllbnQuYwotaW5kZXggZDdhNTM0OWM3MC4uNjhiNDFkZmI2YyAxMDA2NDQKK2luZGV4IGVhYzJlNzI1Y2NlNy4uMWJlYWU3YmE5MWNjIDEwMDY0NAogLS0tIGEvc3JjL2xpYnN5c3RlbWQtbmV0d29yay9zZC1kaGNwNi1jbGllbnQuYwogKysrIGIvc3JjL2xpYnN5c3RlbWQtbmV0d29yay9zZC1kaGNwNi1jbGllbnQuYwotQEAgLTYsNyArNiw2IEBACitAQCAtNSw3ICs1LDYgQEAKKyAKICAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+CiAgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgogLSNpbmNsdWRlIDxsaW51eC9pZl9hcnAuaD4KICAjaW5jbHVkZSA8bGludXgvaWZfaW5maW5pYmFuZC5oPgogIAogICNpbmNsdWRlICJzZC1kaGNwNi1jbGllbnQuaCIKIGRpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jCi1pbmRleCBkZTliOGIyMWFiLi5mNjRmNjUwMGY3IDEwMDY0NAoraW5kZXggZTM1MTI3YTRjZDJlLi40ZjZhZDllZjU4ODYgMTAwNjQ0CiAtLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYwogKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMKIEBAIC0zLDYgKzMsNyBAQApAQCAtNjksMTkgKzc3LDQxIEBACiAgI2luY2x1ZGUgPGxpbnV4L25ldGxpbmsuaD4KICAjaW5jbHVkZSA8bGludXgvcnRuZXRsaW5rLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMgYi9zcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYwotaW5kZXggMGQ1OGI1ZWI4Yi4uMDEwOTNjMWY2MiAxMDA2NDQKK2luZGV4IGEyOTkwNDUyYWYxNy4uNWFmMzUwODgzYzI4IDEwMDY0NAogLS0tIGEvc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMKICsrKyBiL3NyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jCi1AQCAtNCw2ICs0LDcgQEAKLSAjaW5jbHVkZSA8c3RyaW5nLmg+CitAQCAtMyw2ICszLDcgQEAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KICAjaW5jbHVkZSA8c3lzL21vdW50Lmg+CiAgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CiArI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KICAKICAvKiBXaGVuIHdlIGluY2x1ZGUgbGliZ2VuLmggYmVjYXVzZSB3ZSBuZWVkIGRpcm5hbWUoKSB3ZSBpbW1lZGlhdGVseQogICAqIHVuZGVmaW5lIGJhc2VuYW1lKCkgc2luY2UgbGliZ2VuLmggZGVmaW5lcyBpdCBhcyBhIG1hY3JvIHRvIHRoZSBQT1NJWAorZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldGRldi9ib25kLmMgYi9zcmMvbmV0d29yay9uZXRkZXYvYm9uZC5jCitpbmRleCA4ZGYzOWUzNTg0M2YuLjhkNjk3ODk0Zjk3MCAxMDA2NDQKKy0tLSBhL3NyYy9uZXR3b3JrL25ldGRldi9ib25kLmMKKysrKyBiL3NyYy9uZXR3b3JrL25ldGRldi9ib25kLmMKK0BAIC0xLDUgKzEsNiBAQAorIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMSsgKi8KKyAKKysjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCisgI2luY2x1ZGUgImJvbmQuaCIKKyAjaW5jbHVkZSAiY29uZi1wYXJzZXIuaCIKK2RpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXRkZXYvYnJpZGdlLmMgYi9zcmMvbmV0d29yay9uZXRkZXYvYnJpZGdlLmMKK2luZGV4IDZiOGY5OTQ0NjEyZS4uN2Y4MWVjMjVjNDA3IDEwMDY0NAorLS0tIGEvc3JjL25ldHdvcmsvbmV0ZGV2L2JyaWRnZS5jCisrKysgYi9zcmMvbmV0d29yay9uZXRkZXYvYnJpZGdlLmMKK0BAIC0xLDUgKzEsNiBAQAorIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMSsgKi8KKyAKKysjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorICNpbmNsdWRlIDxuZXQvaWYuaD4KKyAKKyAjaW5jbHVkZSAiYnJpZGdlLmgiCiBkaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0ZGV2L21hY3NlYy5jIGIvc3JjL25ldHdvcmsvbmV0ZGV2L21hY3NlYy5jCi1pbmRleCBjZjI4MWU3NWE2Li4yNjlkYzYxOGZmIDEwMDY0NAoraW5kZXggN2QxZmVjM2FmZTZkLi5lOTQ4YTMzNTMzNmQgMTAwNjQ0CiAtLS0gYS9zcmMvbmV0d29yay9uZXRkZXYvbWFjc2VjLmMKICsrKyBiL3NyYy9uZXR3b3JrL25ldGRldi9tYWNzZWMuYwogQEAgLTEsNSArMSw2IEBACkBAIC05MSw4ICsxMjEsMjAgQEAKICAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogICNpbmNsdWRlIDxsaW51eC9pZl9ldGhlci5oPgogICNpbmNsdWRlIDxsaW51eC9pZl9tYWNzZWMuaD4KK2RpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXRkZXYvbmV0ZGV2LWdwZXJmLmdwZXJmIGIvc3JjL25ldHdvcmsvbmV0ZGV2L25ldGRldi1ncGVyZi5ncGVyZgoraW5kZXggMDlhNWY0ODIyZTAzLi44NzMyOTliMWY5OGEgMTAwNjQ0CistLS0gYS9zcmMvbmV0d29yay9uZXRkZXYvbmV0ZGV2LWdwZXJmLmdwZXJmCisrKysgYi9zcmMvbmV0d29yay9uZXRkZXYvbmV0ZGV2LWdwZXJmLmdwZXJmCitAQCAtMiw2ICsyLDcgQEAKKyAjaWYgX19HTlVDX18gPj0gNworIF9QcmFnbWEoIkdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV2ltcGxpY2l0LWZhbGx0aHJvdWdoXCIiKQorICNlbmRpZgorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorICNpbmNsdWRlICJib25kLmgiCisgI2luY2x1ZGUgImJyaWRnZS5oIgogZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldGRldi9uZXRkZXYuYyBiL3NyYy9uZXR3b3JrL25ldGRldi9uZXRkZXYuYwotaW5kZXggNzczNWI0NTViNy4uZWQ0ZWRhNGE0NCAxMDA2NDQKK2luZGV4IGY4MTIxYTQ4ZWQ5Mi4uNDM3ZjQxMWM2MWU4IDEwMDY0NAogLS0tIGEvc3JjL25ldHdvcmsvbmV0ZGV2L25ldGRldi5jCiArKysgYi9zcmMvbmV0d29yay9uZXRkZXYvbmV0ZGV2LmMKIEBAIC0xLDUgKzEsNiBAQApAQCAtMTAzLDcgKzE0NSw3IEBACiAgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICAKIGRpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jCi1pbmRleCBjM2M1ZDUzNWFjLi5lYmVhNDA4Yzg5IDEwMDY0NAoraW5kZXggNDFmMDkyODdmMmI3Li5iNjdjZTRmYzg4NDQgMTAwNjQ0CiAtLS0gYS9zcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYwogKysrIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKIEBAIC00LDYgKzQsNyBAQApAQCAtMTE1LDMzICsxNTcsMzQgQEAKICAjaW5jbHVkZSA8c3RkYm9vbC5oPgogIAogZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWRoY3AtY29tbW9uLmMgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1kaGNwLWNvbW1vbi5jCi1pbmRleCA2MjZiOTc1ODM5Li40MmZlOTJmMzIwIDEwMDY0NAoraW5kZXggODY2NGQ4Y2RjMGQ0Li5lOWY5MWY3NGMxYTEgMTAwNjQ0CiAtLS0gYS9zcmMvbmV0d29yay9uZXR3b3JrZC1kaGNwLWNvbW1vbi5jCiArKysgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1kaGNwLWNvbW1vbi5jCi1AQCAtMSw2ICsxLDcgQEAKLSAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTEdQTC0yLjErICovCi0gCitAQCAtNCw2ICs0LDcgQEAKKyAjaW5jbHVkZSAiZXNjYXBlLmgiCisgI2luY2x1ZGUgImluLWFkZHItdXRpbC5oIgogICNpbmNsdWRlICJuZXR3b3JrZC1kaGNwLWNvbW1vbi5oIgogKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CiAgI2luY2x1ZGUgIm5ldHdvcmtkLW5ldHdvcmsuaCIKICAjaW5jbHVkZSAicGFyc2UtdXRpbC5oIgogICNpbmNsdWRlICJzdHJpbmctdGFibGUuaCIKIGRpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXR3b3JrZC1kaGNwNC5jIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtZGhjcDQuYwotaW5kZXggNjYyNzcwYjUwZS4uYzZhYjYyYTk0ZCAxMDA2NDQKK2luZGV4IDEzZTNlMzJmNDBlOC4uNTM5NDM5OWM5MTUwIDEwMDY0NAogLS0tIGEvc3JjL25ldHdvcmsvbmV0d29ya2QtZGhjcDQuYwogKysrIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtZGhjcDQuYwotQEAgLTEsOCArMSw4IEBACitAQCAtMSw5ICsxLDkgQEAKICAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTEdQTC0yLjErICovCiAgCiArI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KICAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorICNpbmNsdWRlIDxuZXRpbmV0L2lwLmg+CiAgI2luY2x1ZGUgPGxpbnV4L2lmLmg+CiAtI2luY2x1ZGUgPGxpbnV4L2lmX2FycC5oPgogIAogICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCi0gI2luY2x1ZGUgImhvc3RuYW1lLXV0aWwuaCIKKyAjaW5jbHVkZSAiZGhjcC1jbGllbnQtaW50ZXJuYWwuaCIKIGRpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXR3b3JrZC1kaGNwNi5jIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtZGhjcDYuYwotaW5kZXggOGFkNzM2YTgyYi4uZjQxYjRkODM0ZSAxMDA2NDQKK2luZGV4IDczMDQyNzBjNjBiMS4uMDk5MDY0ZjY0NzE1IDEwMDY0NAogLS0tIGEvc3JjL25ldHdvcmsvbmV0d29ya2QtZGhjcDYuYwogKysrIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtZGhjcDYuYwogQEAgLTMsOSArMyw5IEBACkBAIC0xNTYsNyArMTk5LDcgQEAKICAKICAjaW5jbHVkZSAic2QtZGhjcDYtY2xpZW50LmgiCiBkaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0d29ya2QtbGluay5jIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtbGluay5jCi1pbmRleCBmNWJiNzg4OTBhLi5mMTNhMzZiNzkxIDEwMDY0NAoraW5kZXggOTlkNGIyOWMzMWVjLi5lOGI0NjdkNmFjMDkgMTAwNjQ0CiAtLS0gYS9zcmMvbmV0d29yay9uZXR3b3JrZC1saW5rLmMKICsrKyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWxpbmsuYwogQEAgLTEsOCArMSw4IEBACkBAIC0xNzAsNyArMjEzLDcgQEAKICAKICAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgogZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLW5ldHdvcmsuYyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLW5ldHdvcmsuYwotaW5kZXggMmI4ZDBlYjJmYi4uMmY3OWVmMjVjZCAxMDA2NDQKK2luZGV4IDJlNzE2YjI5MWU5Ny4uNTZmMThjZWE1N2ZlIDEwMDY0NAogLS0tIGEvc3JjL25ldHdvcmsvbmV0d29ya2QtbmV0d29yay5jCiArKysgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1uZXR3b3JrLmMKIEBAIC0xLDUgKzEsNiBAQApAQCAtMTgwLDggKzIyMywxNyBAQAogICNpbmNsdWRlIDxuZXQvaWYuaD4KICAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogICNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KK2RpZmYgLS1naXQgYS9zcmMvbmV0d29yay90ZXN0LW5ldHdvcmstdGFibGVzLmMgYi9zcmMvbmV0d29yay90ZXN0LW5ldHdvcmstdGFibGVzLmMKK2luZGV4IDI1YjkzOTYzOTc3NS4uNTMwZTQ5Mjg4MzVjIDEwMDY0NAorLS0tIGEvc3JjL25ldHdvcmsvdGVzdC1uZXR3b3JrLXRhYmxlcy5jCisrKysgYi9zcmMvbmV0d29yay90ZXN0LW5ldHdvcmstdGFibGVzLmMKK0BAIC0xLDMgKzEsNCBAQAorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgImJvbmQuaCIKKyAjaW5jbHVkZSAiZGhjcDYtaW50ZXJuYWwuaCIKKyAjaW5jbHVkZSAiZGhjcDYtcHJvdG9jb2wuaCIKIGRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2V0aHRvb2wtdXRpbC5jIGIvc3JjL3NoYXJlZC9ldGh0b29sLXV0aWwuYwotaW5kZXggYjA5NjFkZjcyZS4uNTNmY2JiZDg0YiAxMDA2NDQKK2luZGV4IDAwYTcxZDY0YTYzOC4uNDU5M2U4OTEyMGI4IDEwMDY0NAogLS0tIGEvc3JjL3NoYXJlZC9ldGh0b29sLXV0aWwuYwogKysrIGIvc3JjL3NoYXJlZC9ldGh0b29sLXV0aWwuYwogQEAgLTEsNSArMSw2IEBACkBAIC0xOTIsMTkgKzI0NCwxOSBAQAogICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KICAjaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgogZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvZXRodG9vbC11dGlsLmggYi9zcmMvc2hhcmVkL2V0aHRvb2wtdXRpbC5oCi1pbmRleCA4YjMyYjI0M2YzLi4yNjJiODE5OTc2IDEwMDY0NAoraW5kZXggYzFkNWQ3NTkwZWY5Li5iM2UwMThiZjc2ZTkgMTAwNjQ0CiAtLS0gYS9zcmMvc2hhcmVkL2V0aHRvb2wtdXRpbC5oCiArKysgYi9zcmMvc2hhcmVkL2V0aHRvb2wtdXRpbC5oCi1AQCAtMiw2ICsyLDcgQEAKLSAjcHJhZ21hIG9uY2UKK0BAIC0zLDYgKzMsNyBAQAogIAogICNpbmNsdWRlIDxtYWNyby5oPgorICNpbmNsdWRlIDxuZXQvZXRoZXJuZXQuaD4KICsjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgogICNpbmNsdWRlIDxsaW51eC9ldGh0b29sLmg+CiAgCiAgI2luY2x1ZGUgImNvbmYtcGFyc2VyLmgiCiBkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvbmV0L2xpbmstY29uZmlnLmMgYi9zcmMvdWRldi9uZXQvbGluay1jb25maWcuYwotaW5kZXggZDQ0YWY2NGQ1ZS4uZmQwNTJmMTU5MSAxMDA2NDQKK2luZGV4IDAzMzJlOTkyNjljOS4uZmYzYWVhZDRhNzc5IDEwMDY0NAogLS0tIGEvc3JjL3VkZXYvbmV0L2xpbmstY29uZmlnLmMKICsrKyBiL3NyYy91ZGV2L25ldC9saW5rLWNvbmZpZy5jCiBAQCAtMSw1ICsxLDYgQEAKQEAgLTIxNSw3ICsyNjcsNyBAQAogICNpbmNsdWRlIDxuZXRpbmV0L2V0aGVyLmg+CiAgCiBkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYwotaW5kZXggZWUzY2E5ZmEzOC4uOWFhNGU4Mjg3NCAxMDA2NDQKK2luZGV4IGVlM2NhOWZhMzg0Ni4uOWFhNGU4Mjg3NDFmIDEwMDY0NAogLS0tIGEvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMKICsrKyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jCiBAQCAtMSw1ICsxLDYgQEAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QucGF0Y2gKaW5kZXggMzRmN2Y1Zi4uNTgwYzQ5ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QucGF0Y2gKQEAgLTEsOCArMSw3IEBACi1Gcm9tIGY4YTIzOWIxODIxNThjYTBhNTM3YmEwNTNjYjBlNmJhZDljM2EyZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDc3Zjk4NzI3ZjFkMTlhOGZiMzI3YjU1YzkyZjFhOWVlN2I4NTllOWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBNb24sIDI1IEZlYiAyMDE5IDE0OjU2OjIxICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMjRdIGRvbid0IGZhaWwgaWYgR0xPQl9CUkFDRSBhbmQgR0xPQl9BTFRESVJGVU5DIGlzIG5vdCAKLSBkZWZpbmVkCitTdWJqZWN0OiBbUEFUQ0hdIGRvbid0IGZhaWwgaWYgR0xPQl9CUkFDRSBhbmQgR0xPQl9BTFRESVJGVU5DIGlzIG5vdCBkZWZpbmVkCiAKIElmIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGRvZXNuJ3QgcHJvdmlkZSBicmFjZQogZXhwYW5zaW9uIHVzZXJzIGp1c3Qgd29uJ3QgZ2V0IGl0LgpAQCAtMTcsNiArMTYsNyBAQAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogW3JlYmFzZWQgZm9yIHN5c3RlbWQgMjQzXQogU2lnbmVkLW9mZi1ieTogU2NvdHQgTXVycmF5IDxzY290dC5tdXJyYXlAa29uc3Vsa28uY29tPgorCiAtLS0KICBzcmMvYmFzaWMvZ2xvYi11dGlsLmMgICAgIHwgMTIgKysrKysrKysrKysrCiAgc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYyB8IDE2ICsrKysrKysrKysrKysrKysKQEAgLTI0LDEwICsyNCwxMCBAQAogIDMgZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2dsb2ItdXRpbC5jIGIvc3JjL2Jhc2ljL2dsb2ItdXRpbC5jCi1pbmRleCBiMzM1YWY4ZDk3Li4yY2RmYzExZjE2IDEwMDY0NAoraW5kZXggZTNhYTZjMmUxNTJiLi4zODA3MGI3OWM4M2EgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvZ2xvYi11dGlsLmMKICsrKyBiL3NyYy9iYXNpYy9nbG9iLXV0aWwuYwotQEAgLTE0LDYgKzE0LDEyIEBACitAQCAtMTIsNiArMTIsMTIgQEAKICAjaW5jbHVkZSAicGF0aC11dGlsLmgiCiAgI2luY2x1ZGUgInN0cnYuaCIKICAKQEAgLTQwLDcgKzQwLDcgQEAKICBzdGF0aWMgdm9pZCBjbG9zZWRpcl93cmFwcGVyKHZvaWQqIHYpIHsKICAgICAgICAgICh2b2lkKSBjbG9zZWRpcih2KTsKICB9Ci1AQCAtMjEsNiArMjcsNyBAQCBzdGF0aWMgdm9pZCBjbG9zZWRpcl93cmFwcGVyKHZvaWQqIHYpIHsKK0BAIC0xOSw2ICsyNSw3IEBAIHN0YXRpYyB2b2lkIGNsb3NlZGlyX3dyYXBwZXIodm9pZCogdikgewogIGludCBzYWZlX2dsb2IoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzLCBnbG9iX3QgKnBnbG9iKSB7CiAgICAgICAgICBpbnQgazsKICAKQEAgLTQ4LDcgKzQ4LDcgQEAKICAgICAgICAgIC8qIFdlIHdhbnQgdG8gc2V0IEdMT0JfQUxURElSRlVOQyBvdXJzZWx2ZXMsIGRvbid0IGFsbG93IGl0IHRvIGJlIHNldC4gKi8KICAgICAgICAgIGFzc2VydCghKGZsYWdzICYgR0xPQl9BTFRESVJGVU5DKSk7CiAgCi1AQCAtMzQsOSArNDEsMTQgQEAgaW50IHNhZmVfZ2xvYihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIGdsb2JfdCAqcGdsb2IpIHsKK0BAIC0zMiw5ICszOSwxNCBAQCBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgewogICAgICAgICAgICAgICAgICBwZ2xvYi0+Z2xfbHN0YXQgPSBsc3RhdDsKICAgICAgICAgIGlmICghcGdsb2ItPmdsX3N0YXQpCiAgICAgICAgICAgICAgICAgIHBnbG9iLT5nbF9zdGF0ID0gc3RhdDsKQEAgLTY0LDEwICs2NCwxMCBAQAogICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKICAgICAgICAgIGlmIChrID09IEdMT0JfTk9TUEFDRSkKIGRpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jIGIvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYwotaW5kZXggYjRmNDE0NDVmZS4uZjBkNDc0ZWQxNCAxMDA2NDQKK2luZGV4IDY2N2QxNTMzNWZiZi4uNzZhODQ0NDNhYWNmIDEwMDY0NAogLS0tIGEvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYwogKysrIGIvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYwotQEAgLTEzLDYgKzEzLDEyIEBACitAQCAtMTIsNiArMTIsMTIgQEAKICAjaW5jbHVkZSAicm0tcmYuaCIKICAjaW5jbHVkZSAidG1wZmlsZS11dGlsLmgiCiAgCkBAIC04MCw3ICs4MCw3IEBACiAgc3RhdGljIHZvaWQgdGVzdF9nbG9iX2V4aXN0cyh2b2lkKSB7CiAgICAgICAgICBjaGFyIG5hbWVbXSA9ICIvdG1wL3Rlc3QtZ2xvYl9leGlzdHMuWFhYWFhYIjsKICAgICAgICAgIGludCBmZCA9IC0xOwotQEAgLTQwLDExICs0NiwxMyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2dsb2Jfbm9fZG90KHZvaWQpIHsKK0BAIC0zOSwxMSArNDUsMTMgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iX25vX2RvdCh2b2lkKSB7CiAgICAgICAgICBjb25zdCBjaGFyICpmbjsKICAKICAgICAgICAgIF9jbGVhbnVwX2dsb2JmcmVlXyBnbG9iX3QgZyA9IHsKQEAgLTk0LDcgKzk0LDcgQEAKICAgICAgICAgIH07CiAgCiAgICAgICAgICBpbnQgcjsKLUBAIC01MiwxMSArNjAsMTkgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iX25vX2RvdCh2b2lkKSB7CitAQCAtNTEsMTEgKzU5LDE5IEBAIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9ub19kb3Qodm9pZCkgewogICAgICAgICAgYXNzZXJ0X3NlKG1rZHRlbXAodGVtcGxhdGUpKTsKICAKICAgICAgICAgIGZuID0gc3Ryam9pbmEodGVtcGxhdGUsICIvKiIpOwpAQCAtMTE1LDEwICsxMTUsMTAgQEAKICAKICAgICAgICAgICh2b2lkKSBybV9yZih0ZW1wbGF0ZSwgUkVNT1ZFX1JPT1R8UkVNT1ZFX1BIWVNJQ0FMKTsKIGRpZmYgLS1naXQgYS9zcmMvdG1wZmlsZXMvdG1wZmlsZXMuYyBiL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jCi1pbmRleCAzYzMwNjEyYWYxLi4xNGJjNDI4MDg1IDEwMDY0NAoraW5kZXggMTkzZWQwYmM3ODFiLi4yZjk0ZmQyZWZkOGYgMTAwNjQ0CiAtLS0gYS9zcmMvdG1wZmlsZXMvdG1wZmlsZXMuYwogKysrIGIvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMKLUBAIC02Myw2ICs2MywxMiBAQAorQEAgLTU4LDYgKzU4LDEyIEBACiAgI2luY2x1ZGUgInVtYXNrLXV0aWwuaCIKICAjaW5jbHVkZSAidXNlci11dGlsLmgiCiAgCkBAIC0xMzEsNyArMTMxLDcgQEAKICAvKiBUaGlzIHJlYWRzIGFsbCBmaWxlcyBsaXN0ZWQgaW4gL2V0Yy90bXBmaWxlcy5kLz8qLmNvbmYgYW5kIGNyZWF0ZXMKICAgKiB0aGVtIGluIHRoZSBmaWxlIHN5c3RlbS4gVGhpcyBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIGNyZWF0ZQogICAqIHByb3Blcmx5IG93bmVkIGRpcmVjdG9yaWVzIGJlbmVhdGggL3RtcCwgL3Zhci90bXAsIC9ydW4sIHdoaWNoIGFyZQotQEAgLTE4NTMsNyArMTg1OSw5IEBAIGZpbmlzaDoKK0BAIC0xODUwLDcgKzE4NTYsOSBAQCBmaW5pc2g6CiAgCiAgc3RhdGljIGludCBnbG9iX2l0ZW0oSXRlbSAqaSwgYWN0aW9uX3QgYWN0aW9uKSB7CiAgICAgICAgICBfY2xlYW51cF9nbG9iZnJlZV8gZ2xvYl90IGcgPSB7CkBAIC0xNDEsNyArMTQxLDcgQEAKICAgICAgICAgIH07CiAgICAgICAgICBpbnQgciA9IDAsIGs7CiAgICAgICAgICBjaGFyICoqZm47Ci1AQCAtMTg3Myw3ICsxODgxLDkgQEAgc3RhdGljIGludCBnbG9iX2l0ZW0oSXRlbSAqaSwgYWN0aW9uX3QgYWN0aW9uKSB7CitAQCAtMTg3MCw3ICsxODc4LDkgQEAgc3RhdGljIGludCBnbG9iX2l0ZW0oSXRlbSAqaSwgYWN0aW9uX3QgYWN0aW9uKSB7CiAgCiAgc3RhdGljIGludCBnbG9iX2l0ZW1fcmVjdXJzaXZlbHkoSXRlbSAqaSwgZmRhY3Rpb25fdCBhY3Rpb24pIHsKICAgICAgICAgIF9jbGVhbnVwX2dsb2JmcmVlXyBnbG9iX3QgZyA9IHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtYWRkLW1pc3NpbmctRlRXXy1tYWNyb3MtZm9yLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LWFkZC1taXNzaW5nLUZUV18tbWFjcm9zLWZvci1tdXNsLnBhdGNoCmluZGV4IGQ1ZjIzNDkuLjFmNjE4OTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtYWRkLW1pc3NpbmctRlRXXy1tYWNyb3MtZm9yLW11c2wucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1hZGQtbWlzc2luZy1GVFdfLW1hY3Jvcy1mb3ItbXVzbC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNmNkMTdjNzUzZDJjMGE5MGZjNzkxZjY5YmJjNjk0Y2JjODU1NmE0ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2M0NDBjZmM1M2FhNTJjOWRjOTFjM2E4YzEwNWJjZjMxNGM1M2FmNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IE1vbiwgMjUgRmViIDIwMTkgMTU6MDA6MDYgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8yNF0gYWRkIG1pc3NpbmcgRlRXXyBtYWNyb3MgZm9yIG11c2wKK1N1YmplY3Q6IFtQQVRDSF0gYWRkIG1pc3NpbmcgRlRXXyBtYWNyb3MgZm9yIG11c2wKIAogVGhpcyBpcyB0byBhdm9pZCBidWlsZCBmYWlsdXJlcyBsaWtlIGJlbG93IGZvciBtdXNsLgogCkBAIC0xMCwxMiArMTAsMTMgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBzcmMvYmFzaWMvbWlzc2luZ190eXBlLmggfCAyMCArKysrKysrKysrKysrKysrKysrKwogIDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZ190eXBlLmggYi9zcmMvYmFzaWMvbWlzc2luZ190eXBlLmgKLWluZGV4IGM0ODdlNjUuLjIzNjAyZWIgMTAwNjQ0CitpbmRleCBjNDg3ZTY1ZTdiZGUuLjIzNjAyZWJiZDUzMyAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9taXNzaW5nX3R5cGUuaAogKysrIGIvc3JjL2Jhc2ljL21pc3NpbmdfdHlwZS5oCiBAQCAtMTksMyArMTksMjMgQEAgdHlwZWRlZiBpbnQgKCpjb21wYXJpc29uX2ZuX3QpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsKQEAgLTQyLDYgKzQzLDMgQEAKICsjaWZuZGVmIEZUV19TS0lQX1NJQkxJTkdTCiArI2RlZmluZSBGVFdfU0tJUF9TSUJMSU5HUyAzCiArI2VuZGlmCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtZml4LW1pc3Npbmctb2YtX19yZWdpc3Rlcl9hdGZvcmstZm9yLW5vbi1nbGliYy1idWlsZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtZml4LW1pc3Npbmctb2YtX19yZWdpc3Rlcl9hdGZvcmstZm9yLW5vbi1nbGliYy1idWlsZC5wYXRjaAppbmRleCA4YmFjZDAyLi41ZWU1MDFmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEwLWZpeC1taXNzaW5nLW9mLV9fcmVnaXN0ZXJfYXRmb3JrLWZvci1ub24tZ2xpYmMtYnVpbGQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC1maXgtbWlzc2luZy1vZi1fX3JlZ2lzdGVyX2F0Zm9yay1mb3Itbm9uLWdsaWJjLWJ1aWxkLnBhdGNoCkBAIC0xLDIwICsxLDIxIEBACi1Gcm9tIGYxZjRiNGY5Njg0ZmVkMTg1YmZhOGI5ZWQ0MDljZGYyNDE2NTdlOTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGVlZDc0MjdkYjk4Y2MwMWRiN2U5YjM0Nzk2NTVkNjhiMDQ0YmM4NWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBNb24sIDI1IEZlYiAyMDE5IDE1OjAzOjQ3ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMjRdIGZpeCBtaXNzaW5nIG9mIF9fcmVnaXN0ZXJfYXRmb3JrIGZvciBub24tZ2xpYmMgYnVpbGRzCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBtaXNzaW5nIG9mIF9fcmVnaXN0ZXJfYXRmb3JrIGZvciBub24tZ2xpYmMgYnVpbGRzCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBzcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMgfCA3ICsrKysrKysKICAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMgYi9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKLWluZGV4IDc4Y2U0M2IuLmFlYzJkYWYgMTAwNjQ0CitpbmRleCA1ZGUzNjZmODMwZTguLjY0NGY1M2FlZTAwNSAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYwogKysrIGIvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCi1AQCAtMjIsNiArMjIsOSBAQAorQEAgLTE4LDYgKzE4LDkgQEAKICAjaWYgSEFWRV9WQUxHUklORF9WQUxHUklORF9ICiAgI2luY2x1ZGUgPHZhbGdyaW5kL3ZhbGdyaW5kLmg+CiAgI2VuZGlmCkBAIC0yNCw3ICsyNSw3IEBACiAgCiAgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKICAjaW5jbHVkZSAiYXJjaGl0ZWN0dXJlLmgiCi1AQCAtMTE2MCwxMSArMTE2MywxNSBAQCB2b2lkIHJlc2V0X2NhY2hlZF9waWQodm9pZCkgeworQEAgLTExMTYsMTEgKzExMTksMTUgQEAgdm9pZCByZXNldF9jYWNoZWRfcGlkKHZvaWQpIHsKICAgICAgICAgIGNhY2hlZF9waWQgPSBDQUNIRURfUElEX1VOU0VUOwogIH0KICAKQEAgLTQwLDYgKzQxLDMgQEAKICAKICBwaWRfdCBnZXRwaWRfY2FjaGVkKHZvaWQpIHsKICAgICAgICAgIHN0YXRpYyBib29sIGluc3RhbGxlZCA9IGZhbHNlOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoCmluZGV4IGQ2ZWRhOWMuLmU1ZDk1MTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBlM2Y4NDdiZDAzMzhkMjdhZmYzMzM1YjQyNjYxZDhhNGI2NmI5NjVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0YWE5MTM0N2FlOTc1MDUxZGJlNGRkMmY5OGExZjRmNDU5ZjI2MDRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyNSBGZWIgMjAxOSAxNToxMjo0MSArMDgwMAotU3ViamVjdDogW1BBVENIIDExLzI0XSBVc2UgdWludG1heF90IGZvciBoYW5kbGluZyBybGltX3QKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIHVpbnRtYXhfdCBmb3IgaGFuZGxpbmcgcmxpbV90CiAKIFBSSXV7MzIsNjR9IGlzIG5vdCByaWdodCBmb3JtYXQgdG8gcmVwcmVzZW50IHJsaW1fdCB0eXBlCiB0aGVyZWZvcmUgdXNlICVqdSBhbmQgdHlwZWNhc3QgdGhlIHJsaW1fdCB2YXJpYWJsZXMgdG8KQEAgLTIwLDYgKzIwLDcgQEAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBbUmViYXNlZCBmb3IgdjI0MV0KIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKwogLS0tCiAgc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmggfCAgOCArLS0tLS0tLQogIHNyYy9iYXNpYy9ybGltaXQtdXRpbC5jIHwgMTAgKysrKystLS0tLQpAQCAtMjcsMTAgKzI4LDEwIEBACiAgMyBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmggYi9zcmMvYmFzaWMvZm9ybWF0LXV0aWwuaAotaW5kZXggZGVjZTVkMy4uZGJiODdiYyAxMDA2NDQKK2luZGV4IGM0N2ZhNzZlYThmZi4uMTRhNzhkOWY1ZmQwIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmgKICsrKyBiL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oCi1AQCAtNDIsMTMgKzQyLDcgQEAKK0BAIC0zMiwxMyArMzIsNyBAQCBhc3NlcnRfY2Moc2l6ZW9mKGdpZF90KSA9PSBzaXplb2YodWludDMyX3QpKTsKICAjICBkZWZpbmUgUFJJX1RJTUVYICJsaSIKICAjZW5kaWYKICAKQEAgLTQ2LDEwICs0NywxMCBAQAogICNpZiBTSVpFT0ZfREVWX1QgPT0gOAogICMgIGRlZmluZSBERVZfRk1UICIlIiBQUkl1NjQKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcmxpbWl0LXV0aWwuYyBiL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jCi1pbmRleCA3NGIzYTAyLi5iMDJjMDNjIDEwMDY0NAoraW5kZXggMmRjMTNlYWJjMzBkLi4wNjMzY2M2N2Y0MTcgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvcmxpbWl0LXV0aWwuYwogKysrIGIvc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMKLUBAIC0zMDcsMTMgKzMwNywxMyBAQCBpbnQgcmxpbWl0X2Zvcm1hdChjb25zdCBzdHJ1Y3QgcmxpbWl0ICpybCwgY2hhciAqKnJldCkgeworQEAgLTMwNiwxMyArMzA2LDEzIEBAIGludCBybGltaXRfZm9ybWF0KGNvbnN0IHN0cnVjdCBybGltaXQgKnJsLCBjaGFyICoqcmV0KSB7CiAgICAgICAgICBpZiAocmwtPnJsaW1fY3VyID49IFJMSU1fSU5GSU5JVFkgJiYgcmwtPnJsaW1fbWF4ID49IFJMSU1fSU5GSU5JVFkpCiAgICAgICAgICAgICAgICAgIHMgPSBzdHJkdXAoImluZmluaXR5Iik7CiAgICAgICAgICBlbHNlIGlmIChybC0+cmxpbV9jdXIgPj0gUkxJTV9JTkZJTklUWSkKQEAgLTY3LDcgKzY4LDcgQEAKICAKICAgICAgICAgIGlmICghcykKICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Ci1AQCAtNDA0LDcgKzQwNCw3IEBAIGludCBybGltaXRfbm9maWxlX3NhZmUodm9pZCkgeworQEAgLTQwMyw3ICs0MDMsNyBAQCBpbnQgcmxpbWl0X25vZmlsZV9zYWZlKHZvaWQpIHsKICAKICAgICAgICAgIHJsLnJsaW1fY3VyID0gRkRfU0VUU0laRTsKICAgICAgICAgIGlmIChzZXRybGltaXQoUkxJTUlUX05PRklMRSwgJnJsKSA8IDApCkBAIC03NywxMCArNzgsMTAgQEAKICAgICAgICAgIHJldHVybiAxOwogIH0KIGRpZmYgLS1naXQgYS9zcmMvY29yZS9leGVjdXRlLmMgYi9zcmMvY29yZS9leGVjdXRlLmMKLWluZGV4IGE3MDgyMzEuLmUyYjg3NDggMTAwNjQ0CitpbmRleCA5NzYyZGM1NzQ0M2MuLjRhMzQyMWJiM2VlNiAxMDA2NDQKIC0tLSBhL3NyYy9jb3JlL2V4ZWN1dGUuYwogKysrIGIvc3JjL2NvcmUvZXhlY3V0ZS5jCi1AQCAtNDIyMCw5ICs0MjIwLDkgQEAgdm9pZCBleGVjX2NvbnRleHRfZHVtcChjb25zdCBFeGVjQ29udGV4dCAqYywgRklMRSogZiwgY29uc3QgY2hhciAqcHJlZml4KSB7CitAQCAtNDU2Nyw5ICs0NTY3LDkgQEAgdm9pZCBleGVjX2NvbnRleHRfZHVtcChjb25zdCBFeGVjQ29udGV4dCAqYywgRklMRSogZiwgY29uc3QgY2hhciAqcHJlZml4KSB7CiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUkxJTV9OTElNSVRTOyBpKyspCiAgICAgICAgICAgICAgICAgIGlmIChjLT5ybGltaXRbaV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICIlc0xpbWl0JXM6ICIgUkxJTV9GTVQgIlxuIiwKQEAgLTkyLDYgKzkzLDMgQEAKICAgICAgICAgICAgICAgICAgfQogIAogICAgICAgICAgaWYgKGMtPmlvcHJpb19zZXQpIHsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNC10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNC10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoCmluZGV4IDkxNDU4OWQuLjA0OTA5NmQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTQtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE0LXRlc3Qtc2l6ZW9mLmMtRGlzYWJsZS10ZXN0cy1mb3ItbWlzc2luZy10eXBlZGVmcy1pbi0ucGF0Y2gKQEAgLTEsMjIgKzEsMjIgQEAKLUZyb20gZDNkNjVkNDAzNjY3MGNiZDUxMjlmZTU1YzA5Y2EzOTEyODZlZjRiMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjJmYWM1ZTNmZjBmY2NkMzI5Y2RjNDk2MDUyNThiNmQwZTU3M2EzZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IFdlZCwgMjggRmViIDIwMTggMjE6MjU6MjIgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxNC8yNF0gdGVzdC1zaXplb2YuYzogRGlzYWJsZSB0ZXN0cyBmb3IgbWlzc2luZyB0eXBlZGVmcyBpbgotIG11c2wKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdC1zaXplb2YuYzogRGlzYWJsZSB0ZXN0cyBmb3IgbWlzc2luZyB0eXBlZGVmcyBpbiBtdXNsCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKwogLS0tCiAgc3JjL3Rlc3QvdGVzdC1zaXplb2YuYyB8IDQgKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMgYi9zcmMvdGVzdC90ZXN0LXNpemVvZi5jCi1pbmRleCAzNWIwODc2Li5lNzhlN2NhIDEwMDY0NAoraW5kZXggMTAyMGUwY2IzMTUzLi5jNjUwNjJkMjU2MmMgMTAwNjQ0CiAtLS0gYS9zcmMvdGVzdC90ZXN0LXNpemVvZi5jCiArKysgYi9zcmMvdGVzdC90ZXN0LXNpemVvZi5jCi1AQCAtNDEsOCArNDEsMTAgQEAgaW50IG1haW4odm9pZCkgeworQEAgLTQ0LDggKzQ0LDEwIEBAIGludCBtYWluKHZvaWQpIHsKICAgICAgICAgIGluZm8odW5zaWduZWQpOwogICAgICAgICAgaW5mbyhsb25nIHVuc2lnbmVkKTsKICAgICAgICAgIGluZm8obG9uZyBsb25nIHVuc2lnbmVkKTsKQEAgLTI3LDcgKzI3LDcgQEAKICAKICAgICAgICAgIGluZm8oZmxvYXQpOwogICAgICAgICAgaW5mbyhkb3VibGUpOwotQEAgLTYwLDcgKzYyLDkgQEAgaW50IG1haW4odm9pZCkgeworQEAgLTYzLDcgKzY1LDkgQEAgaW50IG1haW4odm9pZCkgewogICAgICAgICAgaW5mbyhzc2l6ZV90KTsKICAgICAgICAgIGluZm8odGltZV90KTsKICAgICAgICAgIGluZm8odXNlY190KTsKQEAgLTM3LDYgKzM3LDMgQEAKICAgICAgICAgIGluZm8ocGlkX3QpOwogICAgICAgICAgaW5mbyh1aWRfdCk7CiAgICAgICAgICBpbmZvKGdpZF90KTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNS1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE1LWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaAppbmRleCBmZDQwN2Y2Li5lZmVlZjA3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE1LWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE1LWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNDhjNjI4ZjUzMmY2MDI1YzJkMTY0NmI2ODE5Y2Q4MWViNzg5ZDdmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZTZmODcxMDc4ZDhkNmYwNzZjODRmOTA4ZmE1N2FmMTU0MTdhYjg3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CiBEYXRlOiBUdWUsIDEwIE9jdCAyMDE3IDE0OjMzOjMwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMTUvMjRdIGRvbid0IHBhc3MgQVRfU1lNTElOS19OT0ZPTExPVyBmbGFnIHRvIGZhY2Nlc3NhdCgpCitTdWJqZWN0OiBbUEFUQ0hdIGRvbid0IHBhc3MgQVRfU1lNTElOS19OT0ZPTExPVyBmbGFnIHRvIGZhY2Nlc3NhdCgpCiAKIEF2b2lkIHVzaW5nIEFUX1NZTUxJTktfTk9GT0xMT1cgZmxhZy4gSXQgZG9lc24ndCBzZWVtIGxpa2UgdGhlIHJpZ2h0CiB0aGluZyB0byBkbyBhbmQgaXQncyBub3QgcG9ydGFibGUgKG5vdCBzdXBwb3J0ZWQgYnkgbXVzbCkuIFNlZToKQEAgLTI1LDE2ICsyNSwxNyBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorCiAtLS0KICBzcmMvYmFzaWMvZnMtdXRpbC5oICAgICAgICAgIHwgMjIgKysrKysrKysrKysrKysrKysrKysrLQogIHNyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMgfCAgNiArKystLS0KICAyIGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvZnMtdXRpbC5oIGIvc3JjL2Jhc2ljL2ZzLXV0aWwuaAotaW5kZXggN2FkMDMwYi4uZDRjYjFlOSAxMDA2NDQKK2luZGV4IDc4ZDY4YmU5ZmQ4NS4uYzVkYzg0ZDQxODY4IDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL2ZzLXV0aWwuaAogKysrIGIvc3JjL2Jhc2ljL2ZzLXV0aWwuaAotQEAgLTMyLDcgKzMyLDI3IEBAIGludCBmY2htb2Rfb3BhdGgoaW50IGZkLCBtb2RlX3QgbSk7CitAQCAtNDAsNyArNDAsMjcgQEAgaW50IGZjaG1vZF9vcGF0aChpbnQgZmQsIG1vZGVfdCBtKTsKICAKICBpbnQgZmRfd2Fybl9wZXJtaXNzaW9ucyhjb25zdCBjaGFyICpwYXRoLCBpbnQgZmQpOwogIApAQCAtNjQsMTAgKzY1LDEwIEBACiAgaW50IHRvdWNoX2ZpbGUoY29uc3QgY2hhciAqcGF0aCwgYm9vbCBwYXJlbnRzLCB1c2VjX3Qgc3RhbXAsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkLCBtb2RlX3QgbW9kZSk7CiAgaW50IHRvdWNoKGNvbnN0IGNoYXIgKnBhdGgpOwogZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMgYi9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCi1pbmRleCA4OWQ3YTdkLi4zNGI0YWQ1IDEwMDY0NAoraW5kZXggNjU3NDA3ZGEyZDM3Li5mYmQ1NzgyZDg0ZmMgMTAwNjQ0CiAtLS0gYS9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCiArKysgYi9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCi1AQCAtNTMsNyArNTMsNyBAQCBpbnQgYmFzZV9maWxlc3lzdGVtX2NyZWF0ZShjb25zdCBjaGFyICpyb290LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgeworQEAgLTU0LDcgKzU0LDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19lcnJvcl9lcnJubyhlcnJubywgIkZhaWxlZCB0byBvcGVuIHJvb3QgZmlsZSBzeXN0ZW06ICVtIik7CiAgCiAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgRUxFTUVOVFNPRih0YWJsZSk7IGkgKyspIHsKQEAgLTc2LDcgKzc3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAKICAgICAgICAgICAgICAgICAgaWYgKHRhYmxlW2ldLnRhcmdldCkgewotQEAgLTYxLDcgKzYxLDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKK0BAIC02Miw3ICs2Miw3IEBAIGludCBiYXNlX2ZpbGVzeXN0ZW1fY3JlYXRlKGNvbnN0IGNoYXIgKnJvb3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7CiAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY2hlY2sgaWYgb25lIG9mIHRoZSB0YXJnZXRzIGV4aXN0cyAqLwogICAgICAgICAgICAgICAgICAgICAgICAgIE5VTFNUUl9GT1JFQUNIKHMsIHRhYmxlW2ldLnRhcmdldCkgewpAQCAtODUsNyArODYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIGEgc3BlY2lmaWMgZmlsZSBleGlzdHMgYXQgdGhlIHRhcmdldCBwYXRoICovCi1AQCAtNzIsNyArNzIsNyBAQCBpbnQgYmFzZV9maWxlc3lzdGVtX2NyZWF0ZShjb25zdCBjaGFyICpyb290LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgeworQEAgLTczLDcgKzczLDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfb29tKCk7CiAgCkBAIC05NCw2ICs5NSwzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTYtRGVmaW5lLWdsaWJjLWNvbXBhdGlibGUtYmFzZW5hbWUtZm9yLW5vbi1nbGliYy1zeXN0ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTYtRGVmaW5lLWdsaWJjLWNvbXBhdGlibGUtYmFzZW5hbWUtZm9yLW5vbi1nbGliYy1zeXN0ZS5wYXRjaAppbmRleCBkNTU2NTY5Li4xOWEzZWVmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE2LURlZmluZS1nbGliYy1jb21wYXRpYmxlLWJhc2VuYW1lLWZvci1ub24tZ2xpYmMtc3lzdGUucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNi1EZWZpbmUtZ2xpYmMtY29tcGF0aWJsZS1iYXNlbmFtZS1mb3Itbm9uLWdsaWJjLXN5c3RlLnBhdGNoCkBAIC0xLDggKzEsNyBAQAotRnJvbSBhZjc2Yzk3M2U0MTkyOTM2MGE2ZTAyMWYyZmY5YTdmYzFkNzk5NGU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlYzMzNWVmM2JiOTAzYTdlYWYwNTQxMDNjYzUxNDExZTcxZTY0NDhjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFN1biwgMjcgTWF5IDIwMTggMDg6MzY6NDQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxNi8yNF0gRGVmaW5lIGdsaWJjIGNvbXBhdGlibGUgYmFzZW5hbWUoKSBmb3Igbm9uLWdsaWJjCi0gc3lzdGVtcworU3ViamVjdDogW1BBVENIXSBEZWZpbmUgZ2xpYmMgY29tcGF0aWJsZSBiYXNlbmFtZSgpIGZvciBub24tZ2xpYmMgc3lzdGVtcwogCiBGaXhlcyBidWlsZHMgd2l0aCBtdXNsLCBldmVuIHRob3VnaCBzeXN0ZW1kIGlzIGFkYW1hbnQgYWJvdXQKIHVzaW5nIG5vbi1wb3NpeCBiYXNlbmFtZSBpbXBsZW1lbnRhdGlvbiwgd2UgaGF2ZSBhIHdheSBvdXQKQEAgLTEwLDI1ICs5LDI0IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQotIHNyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorIHNyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jIHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jIGIvc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMKLWluZGV4IDdhNTU4ZGYuLmVjYTdkNGIgMTAwNjQ0CitpbmRleCA3NjBjY2I0NDVjZDAuLjBkZjIwZjM4NjRiMyAxMDA2NDQKIC0tLSBhL3NyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jCiArKysgYi9zcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYwotQEAgLTExLDYgKzExLDEwIEBACitAQCAtMTEsNiArMTEsMTEgQEAKICAjaW5jbHVkZSA8bGliZ2VuLmg+CiAgI3VuZGVmIGJhc2VuYW1lCiAgCiArI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKKysjaW5jbHVkZSA8c3RyaW5nLmg+CiArI2RlZmluZSBiYXNlbmFtZShzcmMpIChzdHJyY2hyKHNyYywnLycpID8gc3RycmNocihzcmMsJy8nKSsxIDogc3JjKQogKyNlbmRpZgogKwogICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCiAgI2luY2x1ZGUgImJ1cy1jb21tb24tZXJyb3JzLmgiCiAgI2luY2x1ZGUgImJ1cy1pbnRlcm5hbC5oIgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE3LURvLW5vdC1kaXNhYmxlLWJ1ZmZlcmluZy13aGVuLXdyaXRpbmctdG8tb29tX3Njb3JlX2EucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE3LURvLW5vdC1kaXNhYmxlLWJ1ZmZlcmluZy13aGVuLXdyaXRpbmctdG8tb29tX3Njb3JlX2EucGF0Y2gKaW5kZXggMjRlMjRlOC4uMTkzNGI3OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNy1Eby1ub3QtZGlzYWJsZS1idWZmZXJpbmctd2hlbi13cml0aW5nLXRvLW9vbV9zY29yZV9hLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTctRG8tbm90LWRpc2FibGUtYnVmZmVyaW5nLXdoZW4td3JpdGluZy10by1vb21fc2NvcmVfYS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gYzdhNGVmYjhiY2NiNTJlMTcxNGMxNTE5MjljMjNlMTJiZGU1OWI4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYmIyOGE5Yzg3MGJiNDdkY2RiMWNjZWJhYThlM2E1YTg2NzMwYTI0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IFdlZCwgNCBKdWwgMjAxOCAxNTowMDo0NCArMDgwMAotU3ViamVjdDogW1BBVENIIDE3LzI0XSBEbyBub3QgZGlzYWJsZSBidWZmZXJpbmcgd2hlbiB3cml0aW5nIHRvIG9vbV9zY29yZV9hZGoKK1N1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGRpc2FibGUgYnVmZmVyaW5nIHdoZW4gd3JpdGluZyB0byBvb21fc2NvcmVfYWRqCiAKIE9uIG11c2wsIGRpc2FibGluZyBidWZmZXJpbmcgd2hlbiB3cml0aW5nIHRvIG9vbV9zY29yZV9hZGogd2lsbAogY2F1c2UgdGhlIGZvbGxvd2luZyBlcnJvci4KQEAgLTE5LDE1ICsxOSwxNiBAQAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogW3JlYmFzZWQgZm9yIHN5c3RlbWQgMjQzXQogU2lnbmVkLW9mZi1ieTogU2NvdHQgTXVycmF5IDxzY290dC5tdXJyYXlAa29uc3Vsa28uY29tPgorCiAtLS0KICBzcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMgYi9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKLWluZGV4IGIxYzA4ZmNhZGUuLjBhN2ExZjdkODkgMTAwNjQ0CitpbmRleCA2NDRmNTNhZWUwMDUuLmFjYWYxMzU5MTM5NiAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYwogKysrIGIvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCi1AQCAtMTQ3NCw3ICsxNDc0LDcgQEAgaW50IHNldF9vb21fc2NvcmVfYWRqdXN0KGludCB2YWx1ZSkgeworQEAgLTE1MDAsNyArMTUwMCw3IEBAIGludCBzZXRfb29tX3Njb3JlX2FkanVzdChpbnQgdmFsdWUpIHsKICAgICAgICAgIHNwcmludGYodCwgIiVpIiwgdmFsdWUpOwogIAogICAgICAgICAgcmV0dXJuIHdyaXRlX3N0cmluZ19maWxlKCIvcHJvYy9zZWxmL29vbV9zY29yZV9hZGoiLCB0LApAQCAtMzUsNCArMzYsNCBAQAogKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdSSVRFX1NUUklOR19GSUxFX1ZFUklGWV9PTl9GQUlMVVJFKTsKICB9CiAgCi0gc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGlvcHJpb19jbGFzc190YWJsZVtdID0geworIGludCBwaWRmZF9nZXRfcGlkKGludCBmZCwgcGlkX3QgKnJldCkgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1kaXN0aW5ndWlzaC1YU0ktY29tcGxpYW50LXN0cmVycm9yX3ItZnJvbS1HTlUtc3BlY2lmLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1kaXN0aW5ndWlzaC1YU0ktY29tcGxpYW50LXN0cmVycm9yX3ItZnJvbS1HTlUtc3BlY2lmLnBhdGNoCmluZGV4IDU5MDE3NzIuLjg0YTQ5MmYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTgtZGlzdGluZ3Vpc2gtWFNJLWNvbXBsaWFudC1zdHJlcnJvcl9yLWZyb20tR05VLXNwZWNpZi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE4LWRpc3Rpbmd1aXNoLVhTSS1jb21wbGlhbnQtc3RyZXJyb3Jfci1mcm9tLUdOVS1zcGVjaWYucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGZmZmIyODEwNjExYjRhMjZmNWM2YzA5NTgwOTNiNWIzYjdkNGNkOTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDQ5Mzg3MDU0NTRjZjQ2Y2ZlOGRlYWM4Y2U0NTdkNWQyNDMyY2JlYWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUdWUsIDEwIEp1bCAyMDE4IDE1OjQwOjE3ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTgvMjRdIGRpc3Rpbmd1aXNoIFhTSS1jb21wbGlhbnQgc3RyZXJyb3JfciBmcm9tIEdOVS1zcGVjaWZpCitTdWJqZWN0OiBbUEFUQ0hdIGRpc3Rpbmd1aXNoIFhTSS1jb21wbGlhbnQgc3RyZXJyb3JfciBmcm9tIEdOVS1zcGVjaWZpCiAgc3RyZXJyb3JfcgogCiBYU0ktY29tcGxpYW50IHN0cmVycm9yX3IgYW5kIEdOVS1zcGVjaWZpIHN0cmVycm9yX3IgYXJlIGRpZmZlcmVudC4KQEAgLTE4LDE2ICsxOCwxNyBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHNyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jICAgICAgICB8IDUgKysrKysKICBzcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMgfCA1ICsrKysrCiAgMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYyBiL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jCi1pbmRleCAzZmVhOTEyLi40ZjFlNTkyIDEwMDY0NAoraW5kZXggNDNlZDc1NmJkYTUzLi4yMjdlYTY0ZGJiNDggMTAwNjQ0CiAtLS0gYS9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYwogKysrIGIvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKLUBAIC0zMzcsNyArMzM3LDEyIEBAIHN0YXRpYyBpbnQgZmlsbF9pb3ZlY19wZXJyb3JfYW5kX3NlbmQoY29uc3QgY2hhciAqbWVzc2FnZSwgaW50IHNraXAsIHN0cnVjdCBpb3ZlCitAQCAtMzM2LDcgKzMzNiwxMiBAQCBzdGF0aWMgaW50IGZpbGxfaW92ZWNfcGVycm9yX2FuZF9zZW5kKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIGludCBza2lwLCBzdHJ1Y3QgaW92ZQogICAgICAgICAgICAgICAgICBjaGFyKiBqOwogIAogICAgICAgICAgICAgICAgICBlcnJubyA9IDA7CkBAIC00MSw3ICs0Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBlcnJvcltTVFJMRU4oIkVSUk5PPSIpICsgREVDSU1BTF9TVFJfTUFYKGludCkgKyAxXTsKICAKIGRpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMKLWluZGV4IGRjOTUyMzcuLmJkZGEzMGYgMTAwNjQ0CitpbmRleCBmNzYwZjBmZGQyMWMuLjI4YTUxNTljNDQ4MCAxMDA2NDQKIC0tLSBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYwogKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jCiBAQCAtMzc5LDcgKzM3OSwxMiBAQCBzdGF0aWMgdm9pZCBidXNfZXJyb3Jfc3RyZXJyb3Ioc2RfYnVzX2Vycm9yICplLCBpbnQgZXJyb3IpIHsKQEAgLTU3LDYgKzU4LDMgQEAKICAgICAgICAgICAgICAgICAgaWYgKGVycm5vID09IEVSQU5HRSB8fCBzdHJsZW4oeCkgPj0gayAtIDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlKG0pOwogICAgICAgICAgICAgICAgICAgICAgICAgIGsgKj0gMjsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOS1IaWRlLV9fc3RhcnRfQlVTX0VSUk9SX01BUC1hbmQtX19zdG9wX0JVU19FUlJPUl9NQVAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LUhpZGUtX19zdGFydF9CVVNfRVJST1JfTUFQLWFuZC1fX3N0b3BfQlVTX0VSUk9SX01BUC5wYXRjaAppbmRleCAzNWNjNjZmLi4zYjgwNjQ2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LUhpZGUtX19zdGFydF9CVVNfRVJST1JfTUFQLWFuZC1fX3N0b3BfQlVTX0VSUk9SX01BUC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LUhpZGUtX19zdGFydF9CVVNfRVJST1JfTUFQLWFuZC1fX3N0b3BfQlVTX0VSUk9SX01BUC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gOTY5YWI5ZTY4MjQ5ZmQzODNmNGI1MTNiMWM5MzA2YmRhYzRhZTliMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMWM0YzczYTdjYzBmYjU5ZWI2OGFiNzA2OTlmN2Y1MWFmNWMxNjNiMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IE1vbiwgMjUgRmViIDIwMTkgMTU6MTg6MDAgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxOS8yNF0gSGlkZSBfX3N0YXJ0X0JVU19FUlJPUl9NQVAgYW5kIF9fc3RvcF9CVVNfRVJST1JfTUFQCitTdWJqZWN0OiBbUEFUQ0hdIEhpZGUgX19zdGFydF9CVVNfRVJST1JfTUFQIGFuZCBfX3N0b3BfQlVTX0VSUk9SX01BUAogCiBmb3IgY3VycmVudGx5IHVua25vd24gcmVhc29ucyB0aGV5IGdldCBleHBvcnRlZCB0byB0aGUgc2hhcmVkIGxpYnJpZXMKIGV2ZW4gd2l0aG91dCBiZWluZyBsaXN0ZWQgaW4gdGhlIHN5bSBmaWxlCkBAIC0xMSwxMiArMTEsMTMgQEAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBbUmViYXNlZCBmb3IgdjI0MV0KIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKwogLS0tCiAgc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jIHwgNCArKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYwotaW5kZXggYmRkYTMwZi4uZTIxODUzYyAxMDA2NDQKK2luZGV4IDI4YTUxNTljNDQ4MC4uOTYyYTRkZTEwYzU2IDEwMDY0NAogLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jCiArKysgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMKIEBAIC01NCw4ICs1NCw4IEBAIEJVU19FUlJPUl9NQVBfRUxGX1JFR0lTVEVSIGNvbnN0IHNkX2J1c19lcnJvcl9tYXAgYnVzX3N0YW5kYXJkX2Vycm9yc1tdID0gewpAQCAtMzAsNiArMzEsMyBAQAogIAogIC8qIEFkZGl0aW9uYWwgbWFwcyByZWdpc3RlcmVkIHdpdGggc2RfYnVzX2Vycm9yX2FkZF9tYXAoKSBhcmUgaW4gdGhpcwogICAqIE5VTEwgdGVybWluYXRlZCBhcnJheSAqLwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIwLW1pc3NpbmdfdHlwZS5oLWFkZC1fX2NvbXBhcl9kX2ZuX3QtZGVmaW5pdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjAtbWlzc2luZ190eXBlLmgtYWRkLV9fY29tcGFyX2RfZm5fdC1kZWZpbml0aW9uLnBhdGNoCmluZGV4IDc1M2Q1MTEuLmRiNDA0MWIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjAtbWlzc2luZ190eXBlLmgtYWRkLV9fY29tcGFyX2RfZm5fdC1kZWZpbml0aW9uLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjAtbWlzc2luZ190eXBlLmgtYWRkLV9fY29tcGFyX2RfZm5fdC1kZWZpbml0aW9uLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA3NWMwNmUzZTJhNDc2MGIzNmZmZmQ5NWNkZjU1MzViOGFkNzNjNDgxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4MzAzZDQ5Y2FiYWYzYWI4ODkwYmExZDI2Njk3MmM3MjFkZmU2ZWU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyNSBGZWIgMjAxOSAxNToyNzo1NCArMDgwMAotU3ViamVjdDogW1BBVENIIDIwLzI0XSBtaXNzaW5nX3R5cGUuaDogYWRkIF9fY29tcGFyX2RfZm5fdCBkZWZpbml0aW9uCitTdWJqZWN0OiBbUEFUQ0hdIG1pc3NpbmdfdHlwZS5oOiBhZGQgX19jb21wYXJfZF9mbl90IGRlZmluaXRpb24KIAogRml4IHRoZSBmb2xsb3dpbmcgY29tcGlsZSBmYWlsdXJlOgogc3JjL2Jhc2ljL3V0aWwuaDo3MToxODogZXJyb3I6IHVua25vd24gdHlwZSBuYW1lICdfX2NvbXBhcl9kX2ZuX3QnOyBkaWQgeW91IG1lYW4gJ19fY29tcGFyX2ZuX3QnPwpAQCAtOSwxMiArOSwxMyBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHNyYy9iYXNpYy9taXNzaW5nX3R5cGUuaCB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmdfdHlwZS5oIGIvc3JjL2Jhc2ljL21pc3NpbmdfdHlwZS5oCi1pbmRleCA3ZDdjMWU0Li44NTkwMmFiIDEwMDY0NAoraW5kZXggMjM2MDJlYmJkNTMzLi45MTdkMzE0YTgxYmYgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvbWlzc2luZ190eXBlLmgKICsrKyBiL3NyYy9iYXNpYy9taXNzaW5nX3R5cGUuaAogQEAgLTEzLDYgKzEzLDcgQEAKQEAgLTI1LDYgKzI2LDMgQEAKICAjZW5kaWYKICAKICAjaWZuZGVmIF9fQ09NUEFSX0ZOX1QKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMS1hdm9pZC1yZWRlZmluaXRpb24tb2YtcHJjdGxfbW1fbWFwLXN0cnVjdHVyZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjEtYXZvaWQtcmVkZWZpbml0aW9uLW9mLXByY3RsX21tX21hcC1zdHJ1Y3R1cmUucGF0Y2gKaW5kZXggY2RkZGY4My4uN2RhY2MzNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMS1hdm9pZC1yZWRlZmluaXRpb24tb2YtcHJjdGxfbW1fbWFwLXN0cnVjdHVyZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIxLWF2b2lkLXJlZGVmaW5pdGlvbi1vZi1wcmN0bF9tbV9tYXAtc3RydWN0dXJlLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAzZmJmNjFkNTRiODJmYzliZjIxZDgwMzliZmQ4OWRjOWVmYzViYmNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2MzY0ZmY1NTM0Njc4YzE1OGE3ZmI4ZDRlNTBkMGE2Y2U3MmMxYWQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyNSBGZWIgMjAxOSAxNTo0NDo1NCArMDgwMAotU3ViamVjdDogW1BBVENIIDIxLzI0XSBhdm9pZCByZWRlZmluaXRpb24gb2YgcHJjdGxfbW1fbWFwIHN0cnVjdHVyZQorU3ViamVjdDogW1BBVENIXSBhdm9pZCByZWRlZmluaXRpb24gb2YgcHJjdGxfbW1fbWFwIHN0cnVjdHVyZQogCiBGaXggdGhlIGZvbGxvd2luZyBjb21waWxlIGZhaWx1cmU6CiBlcnJvcjogcmVkZWZpbml0aW9uIG9mICdzdHJ1Y3QgcHJjdGxfbW1fbWFwJwpAQCAtOSwxMiArOSwxMyBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHNyYy9iYXNpYy9taXNzaW5nX3ByY3RsLmggfCAyICsrCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmdfcHJjdGwuaCBiL3NyYy9iYXNpYy9taXNzaW5nX3ByY3RsLmgKLWluZGV4IGY4MGNkMTcuLjQ3ZTQ4OTMgMTAwNjQ0CitpbmRleCBmODBjZDE3ZjM0NmIuLjQ3ZTQ4OTM1NDA1MyAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9taXNzaW5nX3ByY3RsLmgKICsrKyBiL3NyYy9iYXNpYy9taXNzaW5nX3ByY3RsLmgKIEBAIC0xLDcgKzEsOSBAQApAQCAtMjcsNiArMjgsMyBAQAogIAogIC8qIDU4MzE5MDU3Yjc4NDc2NjdmMGM5NTg1YjlkZTBlODkzMmIwZmRiMDggKDQuMykgKi8KICAjaWZuZGVmIFBSX0NBUF9BTUJJRU5UCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI0LXRlc3QtanNvbi5jLWRlZmluZS1NX1BJbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjQtdGVzdC1qc29uLmMtZGVmaW5lLU1fUElsLnBhdGNoCmluZGV4IDBlNTYyOWQuLjgwYmVhZGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjQtdGVzdC1qc29uLmMtZGVmaW5lLU1fUElsLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjQtdGVzdC1qc29uLmMtZGVmaW5lLU1fUElsLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA5MDI0MTJjMjcxZTBjNWQ5Y2I5M2IxMGVjMGZiNWIxMTliMzkzNDc0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhMDVjYzVmYjNkYzBlNTE2ODJjNDAxOTYyODVjZGRhMzRlYzkwNzgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyNSBGZWIgMjAxOSAxNjo1MzowNiArMDgwMAotU3ViamVjdDogW1BBVENIIDI0LzI0XSB0ZXN0LWpzb24uYzogZGVmaW5lIE1fUElsCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3QtanNvbi5jOiBkZWZpbmUgTV9QSWwKIAogRml4IHRoZSBmb2xsb3dpbmcgY29tcGlsZSBmYWlsdXJlOgogc3JjL3Rlc3QvdGVzdC1qc29uLmM6MzA1OjUwOiBlcnJvcjogJ01fUElsJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiAnTV9QSSc/CkBAIC05LDE1ICs5LDE2IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKwogLS0tCiAgc3JjL3Rlc3QvdGVzdC1qc29uLmMgfCA0ICsrKysKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LWpzb24uYyBiL3NyYy90ZXN0L3Rlc3QtanNvbi5jCi1pbmRleCA5YjhhMmE5Li5lZmM3NDZjIDEwMDY0NAoraW5kZXggYTY2MTMwNDNiOTI0Li5jYTgyM2VhNzlmMDUgMTAwNjQ0CiAtLS0gYS9zcmMvdGVzdC90ZXN0LWpzb24uYwogKysrIGIvc3JjL3Rlc3QvdGVzdC1qc29uLmMKLUBAIC0xMSw2ICsxMSwxMCBAQAorQEAgLTEyLDYgKzEyLDEwIEBACiAgI2luY2x1ZGUgInRlc3RzLmgiCiAgI2luY2x1ZGUgInV0aWwuaCIKICAKQEAgLTI4LDYgKzI5LDMgQEAKICBzdGF0aWMgdm9pZCB0ZXN0X3Rva2VuaXplcihjb25zdCBjaGFyICpkYXRhLCAuLi4pIHsKICAgICAgICAgIHVuc2lnbmVkIGxpbmUgPSAwLCBjb2x1bW4gPSAwOwogICAgICAgICAgdm9pZCAqc3RhdGUgPSBOVUxMOwotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjQzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjQzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzFkMGI1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzI0My5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY4MyArMCwwIEBACi1yZXF1aXJlIHN5c3RlbWQuaW5jCi0KLVBST1ZJREVTID0gInVkZXYiCi0KLVBFID0gIjEiCi0KLURFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGdwZXJmLW5hdGl2ZSBsaWJjYXAgdXRpbC1saW51eCIKLQotU0VDVElPTiA9ICJiYXNlL3NoZWxsIgotCi1pbmhlcml0IHVzZXJhZGQgcGtnY29uZmlnIG1lc29uIHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBxZW11IHN5c3RlbWQgZ2V0dGV4dCBiYXNoLWNvbXBsZXRpb24gbWFucGFnZXMgZmVhdHVyZXNfY2hlY2sKLQotIyBBcyB0aGlzIHJlY2lwZSBidWlsZHMgdWRldiwgcmVzcGVjdCBzeXN0ZW1kIGJlaW5nIGluIERJU1RST19GRUFUVVJFUyBzbwotIyB0aGF0IHdlIGRvbid0IGJ1aWxkIGJvdGggdWRldiBhbmQgc3lzdGVtZCBpbiB3b3JsZCBidWlsZHMuCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAic3lzdGVtZCIKLQotU1JDX1VSSSArPSAiZmlsZTovL3RvdWNoc2NyZWVuLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovLzAwLWNyZWF0ZS12b2xhdGlsZS5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2luaXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtcnVsZXMtd2F0Y2gtbWV0YWRhdGEtY2hhbmdlcy1pbi1pZGUtZGV2aWNlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXVuaXQtZmlsZS5jLWNvbnNpZGVyLXN5bWxpbmstb24tZmlsZXN5c3RlbXMtbGlrZS1ORlMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vOTktZGVmYXVsdC5wcmVzZXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wc3RvcmUtZml4LXVzZS1hZnRlci1mcmVlLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi0jIHBhdGNoZXMgbmVlZGVkIGJ5IG11c2wKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgJHtTUkNfVVJJX01VU0x9IgotU1JDX1VSSV9NVVNMID0gIlwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAzLW1pc3NpbmdfdHlwZS5oLWFkZC1fX2NvbXBhcmVfZm5fdC1hbmQtY29tcGFyaXNvbl9mbl8ucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMDQtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMDUtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAwNi1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAwNy1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMDgtYWRkLW1pc3NpbmctRlRXXy1tYWNyb3MtZm9yLW11c2wucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMTAtZml4LW1pc3Npbmctb2YtX19yZWdpc3Rlcl9hdGZvcmstZm9yLW5vbi1nbGliYy1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAxMS1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMTQtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAxNS1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMTYtRGVmaW5lLWdsaWJjLWNvbXBhdGlibGUtYmFzZW5hbWUtZm9yLW5vbi1nbGliYy1zeXN0ZS5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAxNy1Eby1ub3QtZGlzYWJsZS1idWZmZXJpbmctd2hlbi13cml0aW5nLXRvLW9vbV9zY29yZV9hLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDE4LWRpc3Rpbmd1aXNoLVhTSS1jb21wbGlhbnQtc3RyZXJyb3Jfci1mcm9tLUdOVS1zcGVjaWYucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMTktSGlkZS1fX3N0YXJ0X0JVU19FUlJPUl9NQVAtYW5kLV9fc3RvcF9CVVNfRVJST1JfTUFQLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDIwLW1pc3NpbmdfdHlwZS5oLWFkZC1fX2NvbXBhcl9kX2ZuX3QtZGVmaW5pdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAyMS1hdm9pZC1yZWRlZmluaXRpb24tb2YtcHJjdGxfbW1fbWFwLXN0cnVjdHVyZS5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAyNC10ZXN0LWpzb24uYy1kZWZpbmUtTV9QSWwucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMDEtZG8tbm90LWRpc2FibGUtYnVmZmVyLWluLXdyaXRpbmctZmlsZXMucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMDItc3JjLWxvZ2luLWJyaWdodG5lc3MuYy1pbmNsdWRlLXN5cy13YWl0LmgucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMDMtc3JjLWJhc2ljLWNvcHkuYy1pbmNsdWRlLXNpZ25hbC5oLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA0LXNyYy1zaGFyZWQtY3B1LXNldC11dGlsLmgtYWRkLV9fY3B1X21hc2stZGVmaW5pdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICAgICAiCi0KLVBBTV9QTFVHSU5TID0gIiBcCi0gICAgcGFtLXBsdWdpbi11bml4IFwKLSAgICBwYW0tcGx1Z2luLWxvZ2ludWlkIFwKLSAgICBwYW0tcGx1Z2luLWtleWluaXQgXAotIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdlZmkgbGRjb25maWcgcGFtIHNlbGludXggdXNybWVyZ2UgcG9sa2l0JywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dpZmknLCAncmZraWxsJywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneGtiY29tbW9uJywgJycsIGQpfSBcCi0gICAgYWNsIFwKLSAgICBiYWNrbGlnaHQgXAotICAgIGJpbmZtdCBcCi0gICAgZ3NoYWRvdyBcCi0gICAgaGliZXJuYXRlIFwKLSAgICBob3N0bmFtZWQgXAotICAgIGlkbiBcCi0gICAgaW1hIFwKLSAgICBrbW9kIFwKLSAgICBsb2NhbGVkIFwKLSAgICBsb2dpbmQgXAotICAgIG1hY2hpbmVkIFwKLSAgICBteWhvc3RuYW1lIFwKLSAgICBuZXR3b3JrZCBcCi0gICAgbnNzIFwKLSAgICBuc3MtbXltYWNoaW5lcyBcCi0gICAgbnNzLXJlc29sdmUgXAotICAgIHF1b3RhY2hlY2sgXAotICAgIHJhbmRvbXNlZWQgXAotICAgIHJlc29sdmVkIFwKLSAgICBzZXQtdGltZS1lcG9jaCBcCi0gICAgc21hY2sgXAotICAgIHN5c3VzZXJzIFwKLSAgICB0aW1lZGF0ZWQgXAotICAgIHRpbWVzeW5jZCBcCi0gICAgdXRtcCBcCi0gICAgdmNvbnNvbGUgXAotICAgIHh6IFwKLSIKLQotUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gIiBcCi0gICAgZ3NoYWRvdyBcCi0gICAgaWRuIFwKLSAgICBsb2NhbGVkIFwKLSAgICBteWhvc3RuYW1lIFwKLSAgICBuc3MgXAotICAgIG5zcy1teW1hY2hpbmVzIFwKLSAgICBuc3MtcmVzb2x2ZSBcCi0gICAgcmVzb2x2ZWQgXAotICAgIHNtYWNrIFwKLSAgICBzeXN1c2VycyBcCi0gICAgdXRtcCBcCi0iCi0KLSMgVXNlIHRoZSB1cHN0cmVhbSBzeXN0ZW1kIHNlcmlhbC1nZXR0eUAuc2VydmljZSBhbmQgcmVseSBvbgotIyBzeXN0ZW1kLWdldHR5LWdlbmVyYXRvciBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBPRS1jb3JlIHNwZWNpZmljCi0jIHN5c3RlbWQtc2VyaWFsZ2V0dHkuYmIgLSBub3QgZW5hYmxlZCBieSBkZWZhdWx0LgotUEFDS0FHRUNPTkZJR1tzZXJpYWwtZ2V0dHktZ2VuZXJhdG9yXSA9ICIiCi0KLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICItRGFjbD10cnVlLC1EYWNsPWZhbHNlLGFjbCIKLVBBQ0tBR0VDT05GSUdbYXVkaXRdID0gIi1EYXVkaXQ9dHJ1ZSwtRGF1ZGl0PWZhbHNlLGF1ZGl0IgotUEFDS0FHRUNPTkZJR1tiYWNrbGlnaHRdID0gIi1EYmFja2xpZ2h0PXRydWUsLURiYWNrbGlnaHQ9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2JpbmZtdF0gPSAiLURiaW5mbXQ9dHJ1ZSwtRGJpbmZtdD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbYnppcDJdID0gIi1EYnppcDI9dHJ1ZSwtRGJ6aXAyPWZhbHNlLGJ6aXAyIgotUEFDS0FHRUNPTkZJR1tjZ3JvdXB2Ml0gPSAiLURkZWZhdWx0LWhpZXJhcmNoeT11bmlmaWVkLC1EZGVmYXVsdC1oaWVyYXJjaHk9aHlicmlkIgotUEFDS0FHRUNPTkZJR1tjb3JlZHVtcF0gPSAiLURjb3JlZHVtcD10cnVlLC1EY29yZWR1bXA9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2NyeXB0c2V0dXBdID0gIi1EbGliY3J5cHRzZXR1cD10cnVlLC1EbGliY3J5cHRzZXR1cD1mYWxzZSxjcnlwdHNldHVwIgotUEFDS0FHRUNPTkZJR1tkYnVzXSA9ICItRGRidXM9dHJ1ZSwtRGRidXM9ZmFsc2UsZGJ1cyIKLVBBQ0tBR0VDT05GSUdbZWZpXSA9ICItRGVmaT10cnVlLC1EZWZpPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tnbnUtZWZpXSA9ICItRGdudS1lZmk9dHJ1ZSAtRGVmaS1saWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0gLURlZmktaW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfS9lZmksLURnbnUtZWZpPWZhbHNlLGdudS1lZmkiCi1QQUNLQUdFQ09ORklHW2VsZnV0aWxzXSA9ICItRGVsZnV0aWxzPXRydWUsLURlbGZ1dGlscz1mYWxzZSxlbGZ1dGlscyIKLVBBQ0tBR0VDT05GSUdbZmlyc3Rib290XSA9ICItRGZpcnN0Ym9vdD10cnVlLC1EZmlyc3Rib290PWZhbHNlIgotIyBTaWduIHRoZSBqb3VybmFsIGZvciBhbnRpLXRhbXBlcmluZwotUEFDS0FHRUNPTkZJR1tnY3J5cHRdID0gIi1EZ2NyeXB0PXRydWUsLURnY3J5cHQ9ZmFsc2UsbGliZ2NyeXB0IgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi1EZ251dGxzPXRydWUsLURnbnV0bHM9ZmFsc2UsZ251dGxzIgotUEFDS0FHRUNPTkZJR1tnc2hhZG93XSA9ICItRGdzaGFkb3c9dHJ1ZSwtRGdzaGFkb3c9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2hpYmVybmF0ZV0gPSAiLURoaWJlcm5hdGU9dHJ1ZSwtRGhpYmVybmF0ZT1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbaG9zdG5hbWVkXSA9ICItRGhvc3RuYW1lZD10cnVlLC1EaG9zdG5hbWVkPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tpZG5dID0gIi1EaWRuPXRydWUsLURpZG49ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2ltYV0gPSAiLURpbWE9dHJ1ZSwtRGltYT1mYWxzZSIKLSMgaW1wb3J0ZCByZXF1aXJlcyBjdXJsL3h6L3psaWIvYnppcDIvZ2NyeXB0Ci1QQUNLQUdFQ09ORklHW2ltcG9ydGRdID0gIi1EaW1wb3J0ZD10cnVlLC1EaW1wb3J0ZD1mYWxzZSIKLSMgVXBkYXRlIE5BVCBmaXJld2FsbCBydWxlcwotUEFDS0FHRUNPTkZJR1tpcHRjXSA9ICItRGxpYmlwdGM9dHJ1ZSwtRGxpYmlwdGM9ZmFsc2UsaXB0YWJsZXMiCi1QQUNLQUdFQ09ORklHW2pvdXJuYWwtdXBsb2FkXSA9ICItRGxpYmN1cmw9dHJ1ZSwtRGxpYmN1cmw9ZmFsc2UsY3VybCIKLVBBQ0tBR0VDT05GSUdba21vZF0gPSAiLURrbW9kPXRydWUsLURrbW9kPWZhbHNlLGttb2QiCi1QQUNLQUdFQ09ORklHW2xkY29uZmlnXSA9ICItRGxkY29uZmlnPXRydWUsLURsZGNvbmZpZz1mYWxzZSwsbGRjb25maWciCi1QQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLURsaWJpZG49dHJ1ZSwtRGxpYmlkbj1mYWxzZSxsaWJpZG4iCi1QQUNLQUdFQ09ORklHW2xvY2FsZWRdID0gIi1EbG9jYWxlZD10cnVlLC1EbG9jYWxlZD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbbG9naW5kXSA9ICItRGxvZ2luZD10cnVlLC1EbG9naW5kPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tsejRdID0gIi1EbHo0PXRydWUsLURsejQ9ZmFsc2UsbHo0IgotUEFDS0FHRUNPTkZJR1ttYWNoaW5lZF0gPSAiLURtYWNoaW5lZD10cnVlLC1EbWFjaGluZWQ9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItRG1hbj10cnVlLC1EbWFuPWZhbHNlLGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW21pY3JvaHR0cGRdID0gIi1EbWljcm9odHRwZD10cnVlLC1EbWljcm9odHRwZD1mYWxzZSxsaWJtaWNyb2h0dHBkIgotUEFDS0FHRUNPTkZJR1tteWhvc3RuYW1lXSA9ICItRG5zcy1teWhvc3RuYW1lPXRydWUsLURuc3MtbXlob3N0bmFtZT1mYWxzZSwsbGlibnNzLW15aG9zdG5hbWUiCi1QQUNLQUdFQ09ORklHW25ldHdvcmtkXSA9ICItRG5ldHdvcmtkPXRydWUsLURuZXR3b3JrZD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbbnNzXSA9ICItRG5zcy1zeXN0ZW1kPXRydWUsLURuc3Mtc3lzdGVtZD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbbnNzLW15bWFjaGluZXNdID0gIi1EbnNzLW15bWFjaGluZXM9dHJ1ZSwtRG5zcy1teW1hY2hpbmVzPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tuc3MtcmVzb2x2ZV0gPSAiLURuc3MtcmVzb2x2ZT10cnVlLC1EbnNzLXJlc29sdmU9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi1Eb3BlbnNzbD10cnVlLC1Eb3BlbnNzbD1mYWxzZSxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1twYW1dID0gIi1EcGFtPXRydWUsLURwYW09ZmFsc2UsbGlicGFtLCR7UEFNX1BMVUdJTlN9IgotUEFDS0FHRUNPTkZJR1twY3JlMl0gPSAiLURwY3JlMj10cnVlLC1EcGNyZTI9ZmFsc2UsbGlicGNyZTIiCi1QQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLURwb2xraXQ9dHJ1ZSwtRHBvbGtpdD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbcG9ydGFibGVkXSA9ICItRHBvcnRhYmxlZD10cnVlLC1EcG9ydGFibGVkPWZhbHNlIgotUEFDS0FHRUNPTkZJR1txcmVuY29kZV0gPSAiLURxcmVuY29kZT10cnVlLC1EcXJlbmNvZGU9ZmFsc2UscXJlbmNvZGUiCi1QQUNLQUdFQ09ORklHW3F1b3RhY2hlY2tdID0gIi1EcXVvdGFjaGVjaz10cnVlLC1EcXVvdGFjaGVjaz1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbcmFuZG9tc2VlZF0gPSAiLURyYW5kb21zZWVkPXRydWUsLURyYW5kb21zZWVkPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tyZXNvbHZlZF0gPSAiLURyZXNvbHZlPXRydWUsLURyZXNvbHZlPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tyZmtpbGxdID0gIi1EcmZraWxsPXRydWUsLURyZmtpbGw9ZmFsc2UiCi0jIGxpYnNlY2NvbXAgaXMgZm91bmQgaW4gbWV0YS1zZWN1cml0eQotUEFDS0FHRUNPTkZJR1tzZWNjb21wXSA9ICItRHNlY2NvbXA9dHJ1ZSwtRHNlY2NvbXA9ZmFsc2UsbGlic2VjY29tcCIKLVBBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLURzZWxpbnV4PXRydWUsLURzZWxpbnV4PWZhbHNlLGxpYnNlbGludXgsaW5pdHNjcmlwdHMtc3VzaGVsbCIKLVBBQ0tBR0VDT05GSUdbc21hY2tdID0gIi1Ec21hY2s9dHJ1ZSwtRHNtYWNrPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tzeXN1c2Vyc10gPSAiLURzeXN1c2Vycz10cnVlLC1Ec3lzdXNlcnM9ZmFsc2UiCi0jIFdoZW4gZW5hYmxlZCB1c2UgcmVwcm9kdWNibGUgYnVpbGQgdGltZXN0YW1wIGlmIHNldCBhcyB0aW1lIGVwb2NoLAotIyBvciBidWlsZCB0aW1lIGlmIG5vdC4gV2hlbiBkaXNhYmxlZCwgdGltZSBlcG9jaCBpcyB1bnNldC4KLWRlZiBidWlsZF9lcG9jaChkKToKLSAgICBlcG9jaCA9IGQuZ2V0VmFyKCdTT1VSQ0VfREFURV9FUE9DSCcpIG9yICItMSIKLSAgICByZXR1cm4gJy1EdGltZS1lcG9jaD0lZCcgJSBpbnQoZXBvY2gpCi1QQUNLQUdFQ09ORklHW3NldC10aW1lLWVwb2NoXSA9ICIke0BidWlsZF9lcG9jaChkKX0sLUR0aW1lLWVwb2NoPTAiCi1QQUNLQUdFQ09ORklHW3RpbWVkYXRlZF0gPSAiLUR0aW1lZGF0ZWQ9dHJ1ZSwtRHRpbWVkYXRlZD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbdGltZXN5bmNkXSA9ICItRHRpbWVzeW5jZD10cnVlLC1EdGltZXN5bmNkPWZhbHNlIgotUEFDS0FHRUNPTkZJR1t1c3JtZXJnZV0gPSAiLURzcGxpdC11c3I9ZmFsc2UsLURzcGxpdC11c3I9dHJ1ZSIKLVBBQ0tBR0VDT05GSUdbc2Jpbm1lcmdlXSA9ICItRHNwbGl0LWJpbj1mYWxzZSwtRHNwbGl0LWJpbj10cnVlIgotUEFDS0FHRUNPTkZJR1t1dG1wXSA9ICItRHV0bXA9dHJ1ZSwtRHV0bXA9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItRFZBTEdSSU5EPTEsLHZhbGdyaW5kIgotUEFDS0FHRUNPTkZJR1t2Y29uc29sZV0gPSAiLUR2Y29uc29sZT10cnVlLC1EdmNvbnNvbGU9ZmFsc2UsLCR7UE59LXZjb25zb2xlLXNldHVwIgotIyBWZXJpZnkga2V5bWFwcyBvbiBsb2NhbGUgY2hhbmdlCi1QQUNLQUdFQ09ORklHW3hrYmNvbW1vbl0gPSAiLUR4a2Jjb21tb249dHJ1ZSwtRHhrYmNvbW1vbj1mYWxzZSxsaWJ4a2Jjb21tb24iCi1QQUNLQUdFQ09ORklHW3h6XSA9ICItRHh6PXRydWUsLUR4ej1mYWxzZSx4eiIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLUR6bGliPXRydWUsLUR6bGliPWZhbHNlLHpsaWIiCi0KLSMgSGVscGVyIHZhcmlhYmxlcyB0byBjbGFyaWZ5IGxvY2F0aW9ucy4gIFRoaXMgbWlycm9ycyB0aGUgbG9naWMgaW4gc3lzdGVtZCdzCi0jIGJ1aWxkIHN5c3RlbS4KLXJvb3RwcmVmaXggPz0gIiR7cm9vdF9wcmVmaXh9Igotcm9vdGxpYmRpciA/PSAiJHtiYXNlX2xpYmRpcn0iCi1yb290bGliZXhlY2RpciA9ICIke3Jvb3RwcmVmaXh9L2xpYiIKLQotIyBUaGlzIGxpbmtzIHVkZXYgc3RhdGljYWxseSB3aXRoIHN5c3RlbWQgaGVscGVyIGxpYnJhcnkuCi0jIE90aGVyd2lzZSB1ZGV2IHBhY2thZ2Ugd291bGQgZGVwZW5kIG9uIHN5c3RlbWQgcGFja2FnZSAod2hpY2ggaGFzIHRoZSBuZWVkZWQgc2hhcmVkIGxpYnJhcnkpLAotIyBhbmQgYWx3YXlzIHB1bGwgaXQgaW50byBpbWFnZXMuCi1FWFRSQV9PRU1FU09OICs9ICItRGxpbmstdWRldi1zaGFyZWQ9ZmFsc2UiCi0KLUVYVFJBX09FTUVTT04gKz0gIi1Ebm9ib2R5LXVzZXI9bm9ib2R5IFwKLSAgICAgICAgICAgICAgICAgIC1Ebm9ib2R5LWdyb3VwPW5vYm9keSBcCi0gICAgICAgICAgICAgICAgICAtRHJvb3RsaWJkaXI9JHtyb290bGliZGlyfSBcCi0gICAgICAgICAgICAgICAgICAtRHJvb3RwcmVmaXg9JHtyb290cHJlZml4fSBcCi0gICAgICAgICAgICAgICAgICAtRHN5c3ZyY25kLXBhdGg9JHtzeXNjb25mZGlyfSBcCi0gICAgICAgICAgICAgICAgICAtRGRlZmF1bHQtbG9jYWxlPUMgXAotICAgICAgICAgICAgICAgICAgIgotCi0jIEhhcmRjb2RlIHRhcmdldCBiaW5hcnkgcGF0aHMgdG8gYXZvaWQgdXNpbmcgcGF0aHMgZnJvbSBzeXNyb290Ci1FWFRSQV9PRU1FU09OICs9ICItRGtleGVjLXBhdGg9JHtzYmluZGlyfS9rZXhlYyBcCi0gICAgICAgICAgICAgICAgICAtRGttb2QtcGF0aD0ke2Jhc2VfYmluZGlyfS9rbW9kIFwKLSAgICAgICAgICAgICAgICAgIC1EbW91bnQtcGF0aD0ke2Jhc2VfYmluZGlyfS9tb3VudCBcCi0gICAgICAgICAgICAgICAgICAtRHF1b3RhY2hlY2stcGF0aD0ke3NiaW5kaXJ9L3F1b3RhY2hlY2sgXAotICAgICAgICAgICAgICAgICAgLURxdW90YW9uLXBhdGg9JHtzYmluZGlyfS9xdW90YW9uIFwKLSAgICAgICAgICAgICAgICAgIC1Ec3Vsb2dpbi1wYXRoPSR7YmFzZV9zYmluZGlyfS9zdWxvZ2luIFwKLSAgICAgICAgICAgICAgICAgIC1Ebm9sb2dpbi1wYXRoPSR7YmFzZV9zYmluZGlyfS9ub2xvZ2luIFwKLSAgICAgICAgICAgICAgICAgIC1EdW1vdW50LXBhdGg9JHtiYXNlX2JpbmRpcn0vdW1vdW50IgotCi1kb19pbnN0YWxsKCkgewotCW1lc29uX2RvX2luc3RhbGwKLQlpbnN0YWxsIC1kICR7RH0vJHtiYXNlX3NiaW5kaXJ9Ci0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VyaWFsLWdldHR5LWdlbmVyYXRvcicsICdmYWxzZScsICd0cnVlJywgZCl9OyB0aGVuCi0JCSMgUHJvdmlkZWQgYnkgYSBzZXBhcmF0ZSByZWNpcGUKLQkJcm0gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2VyaWFsLWdldHR5KiAtZgotCWZpCi0KLQkjIFByb3ZpZGUgc3VwcG9ydCBmb3IgaW5pdHJhbWZzCi0JWyAhIC1lICR7RH0vaW5pdCBdICYmIGxuIC1zICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZCAke0R9L2luaXQKLQlbICEgLWUgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0vdWRldmQgXSAmJiBsbiAtcyAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0vdWRldmQKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLwotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LyoucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLwotCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vMDAtY3JlYXRlLXZvbGF0aWxlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN2aW5pdCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKLQkJc2VkIC1pIHMlQFVERVZEQCUke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQlICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXN0ZW1kLXVkZXZkCi0JZmkKLQotCWNob3duIHJvb3Q6c3lzdGVtZC1qb3VybmFsICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvam91cm5hbAotCi0JIyBEZWxldGUgam91cm5hbCBSRUFETUUsIGFzIGxvZyBjYW4gYmUgc3ltbGlua2VkIGluc2lkZSB2b2xhdGlsZS4KLQlybSAtZiAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbG9nL1JFQURNRQotCi0JIyBqb3VybmFsLXJlbW90ZSBjcmVhdGVzIHRoaXMgYXQgc3RhcnQKLQlybSAtcmYgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9qb3VybmFsL3JlbW90ZQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cwotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcG93ZXJvZmYudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZWJvb3QudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZXNjdWUudGFyZ2V0LndhbnRzCi0KLQkjIENyZWF0ZSBzeW1saW5rcyBmb3Igc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXRtcCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZ3JhcGhpY2FsLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3dlcm9mZi50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVib290LnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZXNjdWUudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCWZpCi0KLQkjIHRoaXMgZmlsZSBpcyBuZWVkZWQgdG8gZXhpc3QgaWYgbmV0d29ya2QgaXMgZGlzYWJsZWQgYnV0IHRpbWVzeW5jZCBpcyBzdGlsbCBpbiB1c2Ugc2luY2UgdGltZXN5bmNkIGNoZWNrcyBpdAotCSMgZm9yIGV4aXN0ZW5jZSBlbHNlIGl0IGZhaWxzCi0JaWYgWyAtcyAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mIF07IHRoZW4KLQkJJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnOicsICdzZWQgLWkgLWUgIlwkYWQgL3J1bi9zeXN0ZW1kL25ldGlmL2xpbmtzIDA3NTUgcm9vdCByb290IC0iICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYnLCBkKX0KLQlmaQotCWlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQllY2hvICdMISAke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mIC0gLSAtIC0gLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZicgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvZXRjLmNvbmYKLQkJZWNobyAnZCAvcnVuL3N5c3RlbWQvcmVzb2x2ZSAwNzU1IHJvb3Qgcm9vdCAtJyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYKLQkJZWNobyAnZiAvcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAwNjQ0IHJvb3Qgcm9vdCcgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mCi0JCWxuIC1zIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZAotCWVsc2UKLQkJc2VkIC1pIC1lICJzJV5MISAvZXRjL3Jlc29sdi5jb25mLiokJUwhIC9ldGMvcmVzb2x2LmNvbmYgLSAtIC0gLSAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mJWciICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9ldGMuY29uZgotCQlsbiAtcyAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQKLQlmaQotCWluc3RhbGwgLURtIDA3NTUgJHtTfS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtZC1zeXN2LWluc3RhbGwKLQotCSMgSWYgcG9sa2l0IGlzIHNldHVwIGZpeHVwIHBlcm1pc3Npb25zIGFuZCBvd25lcnNoaXAKLQlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwb2xraXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlpZiBbIC1kICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQgXTsgdGhlbgotCQkJY2htb2QgNzAwICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQKLQkJCWNob3duIHBvbGtpdGQ6cm9vdCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kCi0JCWZpCi0JZmkKLQotCSMgY3JlYXRlIGxpbmsgZm9yIGV4aXN0aW5nIHVkZXYgcnVsZXMKLQlsbiAtcyAke2Jhc2VfYmluZGlyfS91ZGV2YWRtICR7RH0ke2Jhc2Vfc2JpbmRpcn0vdWRldmFkbQotCi0JIyBkdXBsaWNhdGUgdWRldmFkbSBmb3IgcG9zdGluc3Qgc2NyaXB0Ci0JaW5zdGFsbCAtZCAke0R9JHtsaWJleGVjZGlyfQotCWxuICR7RH0ke2Jhc2VfYmluZGlyfS91ZGV2YWRtICR7RH0ke2xpYmV4ZWNkaXJ9LyR7TUxQUkVGSVh9dWRldmFkbQotCi0JIyBpbnN0YWxsIGRlZmF1bHQgcG9saWN5IGZvciBwcmVzZXRzCi0JIyBodHRwczovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9zeXN0ZW1kL1ByZXNldC8jaG93dG8KLQlpbnN0YWxsIC1EbSAwNjQ0ICR7V09SS0RJUn0vOTktZGVmYXVsdC5wcmVzZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0tcHJlc2V0Lzk5LWRlZmF1bHQucHJlc2V0Ci0KLSAgICAjIFdlIHVzZSBwYWNrYWdlIHBvc3RpbnN0cyBmb3IgdGhlIGh3ZGIgdXBkYXRlLCBhcyB0aGUgdXBkYXRlIHNlcnZpY2UgaXMKLSAgICAjIGVhc2lseSB0cmlnZ2VyZWQgZm9yIG5vIHJlYXNvbiBhbmQgd2lsbCBzbG93IGRvd24gYm9vdHMuCi0gICAgZmluZCAke0R9IC1uYW1lIHN5c3RlbWQtaHdkYi11cGRhdGUuc2VydmljZSAtZGVsZXRlCi19Ci0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpewotICAgIHN5c3RlbWRsaWJkaXIgPSBkLmdldFZhcigicm9vdGxpYmRpciIpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgc3lzdGVtZGxpYmRpciwgJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdTeXN0ZW1kICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQotfQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYih1ZGV2fHN5c3RlbWR8bnNzKS4qIgotCi1QQUNLQUdFUyA9KyAiXAotICAgICR7UE59LWd1aSBcCi0gICAgJHtQTn0tdmNvbnNvbGUtc2V0dXAgXAotICAgICR7UE59LWluaXRyYW1mcyBcCi0gICAgJHtQTn0tYW5hbHl6ZSBcCi0gICAgJHtQTn0ta2VybmVsLWluc3RhbGwgXAotICAgICR7UE59LXJwbS1tYWNyb3MgXAotICAgICR7UE59LWJpbmZtdCBcCi0gICAgJHtQTn0tenNoLWNvbXBsZXRpb24gXAotICAgICR7UE59LWNvbnRhaW5lciBcCi0gICAgJHtQTn0tam91cm5hbC1nYXRld2F5ZCBcCi0gICAgJHtQTn0tam91cm5hbC11cGxvYWQgXAotICAgICR7UE59LWpvdXJuYWwtcmVtb3RlIFwKLSAgICAke1BOfS1leHRyYS11dGlscyBcCi0iCi0KLVNVTU1BUllfJHtQTn0tY29udGFpbmVyID0gIlRvb2xzIGZvciBjb250YWluZXJzIGFuZCBWTXMiCi1ERVNDUklQVElPTl8ke1BOfS1jb250YWluZXIgPSAiU3lzdGVtZCB0b29scyB0byBzcGF3biBhbmQgbWFuYWdlIGNvbnRhaW5lcnMgYW5kIHZpcnR1YWwgbWFjaGluZXMuIgotCi1TVU1NQVJZXyR7UE59LWpvdXJuYWwtZ2F0ZXdheWQgPSAiSFRUUCBzZXJ2ZXIgZm9yIGpvdXJuYWwgZXZlbnRzIgotREVTQ1JJUFRJT05fJHtQTn0tam91cm5hbC1nYXRld2F5ZCA9ICJzeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQgc2VydmVzIGpvdXJuYWwgZXZlbnRzIG92ZXIgdGhlIG5ldHdvcmsuIENsaWVudHMgbXVzdCBjb25uZWN0IHVzaW5nIEhUVFAuIFRoZSBzZXJ2ZXIgbGlzdGVucyBvbiBwb3J0IDE5NTMxIGJ5IGRlZmF1bHQuIgotCi1TVU1NQVJZXyR7UE59LWpvdXJuYWwtdXBsb2FkID0gIlNlbmQgam91cm5hbCBtZXNzYWdlcyBvdmVyIHRoZSBuZXR3b3JrIgotREVTQ1JJUFRJT05fJHtQTn0tam91cm5hbC11cGxvYWQgPSAic3lzdGVtZC1qb3VybmFsLXVwbG9hZCB1cGxvYWRzIGpvdXJuYWwgZW50cmllcyB0byBhIHNwZWNpZmllZCBVUkwuIgotCi1TVU1NQVJZXyR7UE59LWpvdXJuYWwtcmVtb3RlID0gIlJlY2VpdmUgam91cm5hbCBtZXNzYWdlcyBvdmVyIHRoZSBuZXR3b3JrIgotREVTQ1JJUFRJT05fJHtQTn0tam91cm5hbC1yZW1vdGUgPSAic3lzdGVtZC1qb3VybmFsLXJlbW90ZSBpcyBhIGNvbW1hbmQgdG8gcmVjZWl2ZSBzZXJpYWxpemVkIGpvdXJuYWwgZXZlbnRzIGFuZCBzdG9yZSB0aGVtIHRvIGpvdXJuYWwgZmlsZXMuIgotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JpbmZtdCcsICcke1BOfS1iaW5mbXQnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICcke1BOfS1qb3VybmFsLWdhdGV3YXlkJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnJHtQTn0tam91cm5hbC1yZW1vdGUnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnam91cm5hbC11cGxvYWQnLCAnJHtQTn0tam91cm5hbC11cGxvYWQnLCAnJywgZCl9IFwKLSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1iaW5mbXQgPSAic3lzdGVtZC1iaW5mbXQuc2VydmljZSIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1leHRyYS11dGlscyBcCi0gICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnJHtQTn0tam91cm5hbC1nYXRld2F5JywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnJHtQTn0tam91cm5hbC1yZW1vdGUnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnam91cm5hbC11cGxvYWQnLCAnJHtQTn0tam91cm5hbC11cGxvYWQnLCAnJywgZCl9IFwKLSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi1yIHN5c3RlbWQtam91cm5hbCIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2NvcmVkdW1wJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1jb3JlZHVtcDsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLW5ldHdvcms7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BvbGtpdCcsICctLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0tdXNlci1ncm91cCAtLWhvbWUtZGlyICR7c3lzY29uZmRpcn0vcG9sa2l0LTEgcG9sa2l0ZDsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLXJlc29sdmU7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RpbWVzeW5jZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtdGltZXN5bmM7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0tZXh0cmEtdXRpbHMgPSAiLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWJ1cy1wcm94eSIKLVVTRVJBRERfUEFSQU1fJHtQTn0tam91cm5hbC1nYXRld2F5ID0gIi0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLWdhdGV3YXkiCi1VU0VSQUREX1BBUkFNXyR7UE59LWpvdXJuYWwtcmVtb3RlID0gIi0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLXJlbW90ZSIKLVVTRVJBRERfUEFSQU1fJHtQTn0tam91cm5hbC11cGxvYWQgPSAiLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtdXBsb2FkIgotCi1GSUxFU18ke1BOfS1hbmFseXplID0gIiR7YmluZGlyfS9zeXN0ZW1kLWFuYWx5emUiCi0KLUZJTEVTXyR7UE59LWluaXRyYW1mcyA9ICIvaW5pdCIKLVJERVBFTkRTXyR7UE59LWluaXRyYW1mcyA9ICIke1BOfSIKLQotRklMRVNfJHtQTn0tZ3VpID0gIiR7YmluZGlyfS9zeXN0ZW1hZG0iCi0KLUZJTEVTXyR7UE59LXZjb25zb2xlLXNldHVwID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC12Y29uc29sZS1zZXR1cCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAuc2VydmljZSIKLQotUkRFUEVORFNfJHtQTn0ta2VybmVsLWluc3RhbGwgKz0gImJhc2giCi1GSUxFU18ke1BOfS1rZXJuZWwtaW5zdGFsbCA9ICIke2JpbmRpcn0va2VybmVsLWluc3RhbGwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9rZXJuZWwvIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9rZXJuZWwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi1GSUxFU18ke1BOfS1ycG0tbWFjcm9zID0gIiR7ZXhlY19wcmVmaXh9L2xpYi9ycG0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtQTn0tenNoLWNvbXBsZXRpb24gPSAiJHtkYXRhZGlyfS96c2gvc2l0ZS1mdW5jdGlvbnMiCi0KLUZJTEVTXyR7UE59LWJpbmZtdCA9ICIke3N5c2NvbmZkaXJ9L2JpbmZtdC5kLyBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2JpbmZtdC5kIFwKLSAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYmluZm10IFwKLSAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLiogXAotICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1iaW5mbXQuc2VydmljZSIKLVJSRUNPTU1FTkRTXyR7UE59LWJpbmZtdCA9ICJrZXJuZWwtbW9kdWxlLWJpbmZtdC1taXNjIgotCi1SUkVDT01NRU5EU18ke1BOfS12Y29uc29sZS1zZXR1cCA9ICJrYmQga2JkLWNvbnNvbGVmb250cyBrYmQta2V5bWFwcyIKLQotCi1GSUxFU18ke1BOfS1qb3VybmFsLWdhdGV3YXlkID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLWdhdGV3YXlkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1qb3VybmFsLWdhdGV3YXlkLnNvY2tldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc29ja2V0cy50YXJnZXQud2FudHMvc3lzdGVtZC1qb3VybmFsLWdhdGV3YXlkLnNvY2tldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vc3lzdGVtZC9nYXRld2F5ZC9icm93c2UuaHRtbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LWpvdXJuYWwtZ2F0ZXdheWQgPSAic3lzdGVtZC1qb3VybmFsLWdhdGV3YXlkLnNvY2tldCIKLQotRklMRVNfJHtQTn0tam91cm5hbC11cGxvYWQgPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtdXBsb2FkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1qb3VybmFsLXVwbG9hZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsLXVwbG9hZC5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LWpvdXJuYWwtdXBsb2FkID0gInN5c3RlbWQtam91cm5hbC11cGxvYWQuc2VydmljZSIKLQotRklMRVNfJHtQTn0tam91cm5hbC1yZW1vdGUgPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtcmVtb3RlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsLXJlbW90ZS5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1qb3VybmFsLXJlbW90ZS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1qb3VybmFsLXJlbW90ZS5zb2NrZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tcmVtb3RlID0gInN5c3RlbWQtam91cm5hbC1yZW1vdGUuc29ja2V0IgotCi0KLUZJTEVTXyR7UE59LWNvbnRhaW5lciA9ICIke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuY29uZiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9tYWNoaW5lcy50YXJnZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L21hY2hpbmVjdGwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLW5zcGF3biBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtub25hcmNoX2xpYmRpcn0vc3lzdGVtZC9pbXBvcnQtcHVicmluZy5ncGcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vYnVzbmFtZXMudGFyZ2V0LndhbnRzL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmJ1c25hbWUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vYnVzbmFtZXMudGFyZ2V0LndhbnRzL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5idXNuYW1lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvY2FsLWZzLnRhcmdldC53YW50cy92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L21hY2hpbmVzLnRhcmdldC53YW50cy92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3JlbW90ZS1mcy50YXJnZXQud2FudHMvdmFyLWxpYi1tYWNoaW5lcy5tb3VudCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tYWNoaW5lLnNsaWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L21hY2hpbmVzLnRhcmdldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5idXNuYW1lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5idXNuYW1lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtaW1wb3J0ZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtbWFjaGluZWQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9kYnVzLW9yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3Zhci1saWItbWFjaGluZXMubW91bnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbXBvcnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbXBvcnRkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtbWFjaGluZWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1wdWxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLW5zcGF3bi5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtbnNwYXduQC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibnNzX215bWFjaGluZXMuc28uMiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuY29uZiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5wb2xpY3kgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEucG9saWN5IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICIKLQotUlJFQ09NTUVORFNfJHtQTn0tY29udGFpbmVyICs9ICJcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tam91cm5hbC11cGxvYWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWpvdXJuYWwtcmVtb3RlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1qb3VybmFsLWdhdGV3YXlkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtQTn0tZXh0cmEtdXRpbHMgPSAiXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1lc2NhcGUgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1pbmhpYml0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWRldGVjdC12aXJ0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtcnVuIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNhdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1kZWx0YSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jZ2xzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNndG9wIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXN0ZGlvLWJyaWRnZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWFzay1wYXNzd29yZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLXR0eS1hc2stcGFzc3dvcmQtYWdlbnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXJlc29sdmUtaG9zdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYWMtcG93ZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWFjdGl2YXRlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1idXMtcHJveHlkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1idXMtcHJveHlkLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJ1cy1wcm94eWQuc29ja2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1zb2NrZXQtcHJveHlkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1yZXBseS1wYXNzd29yZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtc2xlZXAgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW0tc2xlZXAgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWhpYmVybmF0ZS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1oeWJyaWQtc2xlZXAuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtc3VzcGVuZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2xlZXAudGFyZ2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbml0Y3RsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1pbml0Y3RsLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWluaXRjdGwuc29ja2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc29ja2V0cy50YXJnZXQud2FudHMvc3lzdGVtZC1pbml0Y3RsLnNvY2tldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbS1nZW5lcmF0b3JzL3N5c3RlbWQtZ3B0LWF1dG8tZ2VuZXJhdG9yIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1jZ3JvdXBzLWFnZW50IFwKLSIKLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vc3lzdGVtZC9jb3JlZHVtcC5jb25mIFwKLQkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZiBcCi0JJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2xvZ2luZC5jb25mIFwKLQkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvc3lzdGVtLmNvbmYgXAotCSR7c3lzY29uZmRpcn0vc3lzdGVtZC91c2VyLmNvbmYgXAotCSR7c3lzY29uZmRpcn0vc3lzdGVtZC9yZXNvbHZlZC5jb25mIFwKLQkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvdGltZXN5bmNkLmNvbmYgXAotIgotCi1GSUxFU18ke1BOfSA9ICIgJHtiYXNlX2JpbmRpcn0vKiBcCi0gICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duIFwKLSAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vaGFsdCBcCi0gICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3Bvd2Vyb2ZmIFwKLSAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vcnVubGV2ZWwgXAotICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS90ZWxpbml0IFwKLSAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vcmVzb2x2Y29uZiBcCi0gICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3JlYm9vdCBcCi0gICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L2luaXQgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtCUE59IFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2ZhY3RvcnkgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGJ1cy0xLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tb2R1bGVzLWxvYWQuZC8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vcGFtLmQvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2N0bC5kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS94ZGcvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9SRUFETUUgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZCBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9YMTEveGluaXQveGluaXRyYy5kLyogXAotICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvKiBcCi0gICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9LyogXAotICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Lyouc28gXAotICAgICAgICAgICAgICAgIC9jZ3JvdXAgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kKiBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2J1c2N0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2NvcmVkdW1wY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vbG9jYWxlY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vaG9zdG5hbWVjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9yZXNvbHZlY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vdGltZWRhdGVjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ib290Y3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0va2VybmVsLWluc3RhbGwgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kLyouY29uZiBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c3RlbWQgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9tb2R1bGVzLWxvYWQuZCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c2N0bC5kIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzdXNlcnMuZCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2Vudmlyb25tZW50LmQgXAotICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0gXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcwLXVhY2Nlc3MucnVsZXMgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcxLXNlYXQucnVsZXMgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzczLXNlYXQtbGF0ZS5ydWxlcyBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvOTktc3lzdGVtZC5ydWxlcyBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2Rwcm9iZS5kL3N5c3RlbWQuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnRpbWVkYXRlMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubG9jYWxlMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubmV0d29yazEuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnJlc29sdmUxLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5zeXN0ZW1kMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaG9zdG5hbWUxLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5sb2dpbjEuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnRpbWVzeW5jMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AucG9ydGFibGUxLmNvbmYgXAotICAgICAgICAgICAgICAgIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5LyoubGEgJHtkYXRhZGlyfS9kYnVzLTEvaW50ZXJmYWNlcy8gJHtzeXNjb25mZGlyfS9ycG0vbWFjcm9zLnN5c3RlbWQiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJrbW9kIGRidXMgdXRpbC1saW51eC1tb3VudCB1dGlsLWxpbnV4LXVtb3VudCB1ZGV2ICg9ICR7RVhURU5EUEtHVn0pIHV0aWwtbGludXgtYWdldHR5IHV0aWwtbGludXgtZnNjayIKLVJERVBFTkRTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZXJpYWwtZ2V0dHktZ2VuZXJhdG9yJywgJycsICdzeXN0ZW1kLXNlcmlhbGdldHR5JywgZCl9IgotUkRFUEVORFNfJHtQTn0gKz0gInZvbGF0aWxlLWJpbmRzIHVwZGF0ZS1yYy5kIgotCi1SUkVDT01NRU5EU18ke1BOfSArPSAic3lzdGVtZC1leHRyYS11dGlscyBcCi0gICAgICAgICAgICAgICAgICAgICAgc3lzdGVtZC1jb21wYXQtdW5pdHMgdWRldi1od2RiIFwKLSAgICAgICAgICAgICAgICAgICAgICBlMmZzcHJvZ3MtZTJmc2NrIFwKLSAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWF1dG9mczQga2VybmVsLW1vZHVsZS11bml4IGtlcm5lbC1tb2R1bGUtaXB2NiBcCi0gICAgICAgICAgICAgICAgICAgICAgb3MtcmVsZWFzZSBcCi0gICAgICAgICAgICAgICAgICAgICAgc3lzdGVtZC1jb25mIFwKLSIKLQotSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyBsaWJkaXIiCi1JTlNBTkVfU0tJUF8ke1BOfS1kYmcgKz0gImxpYmRpciIKLUlOU0FORV9TS0lQXyR7UE59LWRvYyArPSAiIGxpYmRpciIKLQotUEFDS0FHRVMgPSsgInVkZXYgdWRldi1od2RiIgotCi1SUFJPVklERVNfdWRldiA9ICJob3RwbHVnIgotCi1SREVQRU5EU191ZGV2LWh3ZGIgKz0gInVkZXYiCi0KLUZJTEVTX3VkZXYgKz0gIiR7YmFzZV9zYmluZGlyfS91ZGV2ZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL25ldHdvcmsvOTktZGVmYXVsdC5saW5rIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2FjY2VsZXJvbWV0ZXIgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9hdGFfaWQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9jZHJvbV9pZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2NvbGxlY3QgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9maW5ka2V5Ym9hcmRzIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5Ym9hcmQtZm9yY2UtcmVsZWFzZS5zaCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleW1hcCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L210ZF9wcm9iZSBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3Njc2lfaWQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi92NGxfaWQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXltYXBzIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC8qLnJ1bGVzIFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdWRldiBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXN0ZW1kLXVkZXZkIFwKLSAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKnVkZXYqIFwKLSAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi53YW50cy8qdWRldiogXAotICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vdWRldmFkbSBcCi0gICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vdWRldmFkbSBcCi0gICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9LyR7TUxQUkVGSVh9dWRldmFkbSBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2Jhc2gtY29tcGxldGlvbi9jb21wbGV0aW9ucy91ZGV2YWRtIFwKLSAgICAgICAgICAgICAgIgotCi1GSUxFU191ZGV2LWh3ZGIgPSAiJHtyb290bGliZXhlY2Rpcn0vdWRldi9od2RiLmQiCi0KLVJDT05GTElDVFNfJHtQTn0gPSAidGlueS1pbml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJ3Jlc29sdmNvbmYnLCAnJywgZCl9IgotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gInVkZXYiCi1JTklUU0NSSVBUX05BTUVfdWRldiA9ICJzeXN0ZW1kLXVkZXZkIgotSU5JVFNDUklQVF9QQVJBTVNfdWRldiA9ICJzdGFydCAwMyBTIC4iCi0KLXB5dGhvbiBfX2Fub255bW91cygpIHsKLSAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsIFRydWUsIEZhbHNlLCBkKToKLSAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCi19Ci0KLXB5dGhvbiBkb193YXJuX211c2woKSB7Ci0gICAgaWYgZC5nZXRWYXIoJ1RDTElCQycpID09ICJtdXNsIjoKLSAgICAgICAgYmIud2FybigiVXNpbmcgc3lzdGVtZCB3aXRoIG11c2wgaXMgbm90IHJlY29tbWVuZGVkIHNpbmNlIGl0IGlzIG5vdCBzdXBwb3J0ZWQgdXBzdHJlYW0gYW5kIHNvbWUgcGF0Y2hlcyBhcmUga25vd24gdG8gYmUgcHJvYmxlbWF0aWMuIikKLX0KLWFkZHRhc2sgd2Fybl9tdXNsIGJlZm9yZSBkb19jb25maWd1cmUKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiaGFsdCByZWJvb3Qgc2h1dGRvd24gcG93ZXJvZmYgcnVubGV2ZWwgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAncmVzb2x2LWNvbmYnLCAnJywgZCl9IgotCi1BTFRFUk5BVElWRV9UQVJHRVRbcmVzb2x2LWNvbmZdID0gIiR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtyZXNvbHYtY29uZl0gPSAiJHtzeXNjb25mZGlyfS9yZXNvbHYuY29uZiIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW3Jlc29sdi1jb25mXSA/PSAiNTAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtoYWx0XSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbaGFsdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2hhbHQiCi1BTFRFUk5BVElWRV9QUklPUklUWVtoYWx0XSA/PSAiMzAwIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbcmVib290XSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcmVib290XSA9ICIke2Jhc2Vfc2JpbmRpcn0vcmVib290IgotQUxURVJOQVRJVkVfUFJJT1JJVFlbcmVib290XSA/PSAiMzAwIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbc2h1dGRvd25dID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzaHV0ZG93bl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duIgotQUxURVJOQVRJVkVfUFJJT1JJVFlbc2h1dGRvd25dID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtwb3dlcm9mZl0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Bvd2Vyb2ZmXSA9ICIke2Jhc2Vfc2JpbmRpcn0vcG93ZXJvZmYiCi1BTFRFUk5BVElWRV9QUklPUklUWVtwb3dlcm9mZl0gPz0gIjMwMCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW3J1bmxldmVsXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcnVubGV2ZWxdID0gIiR7YmFzZV9zYmluZGlyfS9ydW5sZXZlbCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW3J1bmxldmVsXSA/PSAiMzAwIgotCi1wa2dfcG9zdGluc3RfJHtQTn1fbGliYy1nbGliYyAoKSB7Ci0Jc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bXlob3N0bmFtZVw+Ly8nIFwKLQkJLWUgJ3MvXCheaG9zdHM6LipcKVwoXDxmaWxlc1w+XClcKC4qXClcKFw8ZG5zXD5cKVwoLipcKS9cMVwyIG15aG9zdG5hbWUgXDNcNFw1LycgXAotCQktaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgotfQotCi1wa2dfcHJlcm1fJHtQTn1fbGliYy1nbGliYyAoKSB7Ci0Jc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bXlob3N0bmFtZVw+Ly8nIFwKLQkJLWUgJy9eaG9zdHM6L3MvXHMqbXlob3N0bmFtZS8vJyBcCi0JCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCi19Ci0KLVBBQ0tBR0VfV1JJVEVfREVQUyArPSAicWVtdS1uYXRpdmUiCi1wa2dfcG9zdGluc3RfdWRldi1od2RiICgpIHsKLQlpZiB0ZXN0IC1uICIkRCI7IHRoZW4KLQkJJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IHVwZGF0ZV91ZGV2X2h3ZGIgJHtQS0d9IG1scHJlZml4PSR7TUxQUkVGSVh9IGJpbnByZWZpeD0ke01MUFJFRklYfQotCWVsc2UKLQkJdWRldmFkbSBod2RiIC0tdXBkYXRlCi0JZmkKLX0KLQotcGtnX3ByZXJtX3VkZXYtaHdkYiAoKSB7Ci0Jcm0gLWYgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzI0NS41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjQ1LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNlNDIyMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzI0NS41LmJiCkBAIC0wLDAgKzEsNzE1IEBACityZXF1aXJlIHN5c3RlbWQuaW5jCisKK1BST1ZJREVTID0gInVkZXYiCisKK1BFID0gIjEiCisKK0RFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGdwZXJmLW5hdGl2ZSBsaWJjYXAgdXRpbC1saW51eCIKKworU0VDVElPTiA9ICJiYXNlL3NoZWxsIgorCitpbmhlcml0IHVzZXJhZGQgcGtnY29uZmlnIG1lc29uIHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBxZW11IHN5c3RlbWQgZ2V0dGV4dCBiYXNoLWNvbXBsZXRpb24gbWFucGFnZXMgZmVhdHVyZXNfY2hlY2sKKworIyBBcyB0aGlzIHJlY2lwZSBidWlsZHMgdWRldiwgcmVzcGVjdCBzeXN0ZW1kIGJlaW5nIGluIERJU1RST19GRUFUVVJFUyBzbworIyB0aGF0IHdlIGRvbid0IGJ1aWxkIGJvdGggdWRldiBhbmQgc3lzdGVtZCBpbiB3b3JsZCBidWlsZHMuCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAic3lzdGVtZCIKKworU1JDX1VSSSArPSAiZmlsZTovL3RvdWNoc2NyZWVuLnJ1bGVzIFwKKyAgICAgICAgICAgZmlsZTovLzAwLWNyZWF0ZS12b2xhdGlsZS5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2luaXQgXAorICAgICAgICAgICBmaWxlOi8vOTktZGVmYXVsdC5wcmVzZXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoIFwKKyAgICAgICAgICAgIgorCisjIHBhdGNoZXMgbmVlZGVkIGJ5IG11c2wKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgJHtTUkNfVVJJX01VU0x9IgorU1JDX1VSSV9NVVNMID0gIlwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAzLW1pc3NpbmdfdHlwZS5oLWFkZC1fX2NvbXBhcmVfZm5fdC1hbmQtY29tcGFyaXNvbl9mbl8ucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDQtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDUtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAwNi1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAwNy1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDgtYWRkLW1pc3NpbmctRlRXXy1tYWNyb3MtZm9yLW11c2wucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMTAtZml4LW1pc3Npbmctb2YtX19yZWdpc3Rlcl9hdGZvcmstZm9yLW5vbi1nbGliYy1idWlsZC5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAxMS1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMTQtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAxNS1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMTYtRGVmaW5lLWdsaWJjLWNvbXBhdGlibGUtYmFzZW5hbWUtZm9yLW5vbi1nbGliYy1zeXN0ZS5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAxNy1Eby1ub3QtZGlzYWJsZS1idWZmZXJpbmctd2hlbi13cml0aW5nLXRvLW9vbV9zY29yZV9hLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDE4LWRpc3Rpbmd1aXNoLVhTSS1jb21wbGlhbnQtc3RyZXJyb3Jfci1mcm9tLUdOVS1zcGVjaWYucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMTktSGlkZS1fX3N0YXJ0X0JVU19FUlJPUl9NQVAtYW5kLV9fc3RvcF9CVVNfRVJST1JfTUFQLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDIwLW1pc3NpbmdfdHlwZS5oLWFkZC1fX2NvbXBhcl9kX2ZuX3QtZGVmaW5pdGlvbi5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAyMS1hdm9pZC1yZWRlZmluaXRpb24tb2YtcHJjdGxfbW1fbWFwLXN0cnVjdHVyZS5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAyNC10ZXN0LWpzb24uYy1kZWZpbmUtTV9QSWwucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDEtZG8tbm90LWRpc2FibGUtYnVmZmVyLWluLXdyaXRpbmctZmlsZXMucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDItc3JjLWxvZ2luLWJyaWdodG5lc3MuYy1pbmNsdWRlLXN5cy13YWl0LmgucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDMtc3JjLWJhc2ljLWNvcHkuYy1pbmNsdWRlLXNpZ25hbC5oLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA0LXNyYy1zaGFyZWQtY3B1LXNldC11dGlsLmgtYWRkLV9fY3B1X21hc2stZGVmaW5pdGlvbi5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAwMS1IYW5kbGUtbWlzc2luZy1nc2hhZG93LnBhdGNoIFwKKyAgICAgICAgICAgICAgICIKKworUEFNX1BMVUdJTlMgPSAiIFwKKyAgICBwYW0tcGx1Z2luLXVuaXggXAorICAgIHBhbS1wbHVnaW4tbG9naW51aWQgXAorICAgIHBhbS1wbHVnaW4ta2V5aW5pdCBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCBhdWRpdCBlZmkgbGRjb25maWcgcGFtIHNlbGludXggc21hY2sgdXNybWVyZ2UgcG9sa2l0JywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dpZmknLCAncmZraWxsJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneGtiY29tbW9uJywgJycsIGQpfSBcCisgICAgYmFja2xpZ2h0IFwKKyAgICBiaW5mbXQgXAorICAgIGdzaGFkb3cgXAorICAgIGhpYmVybmF0ZSBcCisgICAgaG9zdG5hbWVkIFwKKyAgICBpZG4gXAorICAgIGltYSBcCisgICAga21vZCBcCisgICAgbG9jYWxlZCBcCisgICAgbG9naW5kIFwKKyAgICBtYWNoaW5lZCBcCisgICAgbXlob3N0bmFtZSBcCisgICAgbmV0d29ya2QgXAorICAgIG5zcyBcCisgICAgbnNzLW15bWFjaGluZXMgXAorICAgIG5zcy1yZXNvbHZlIFwKKyAgICBxdW90YWNoZWNrIFwKKyAgICByYW5kb21zZWVkIFwKKyAgICByZXNvbHZlZCBcCisgICAgc2V0LXRpbWUtZXBvY2ggXAorICAgIHN5c3VzZXJzIFwKKyAgICBzeXN2aW5pdCBcCisgICAgdGltZWRhdGVkIFwKKyAgICB0aW1lc3luY2QgXAorICAgIHVzZXJkYiBcCisgICAgdXRtcCBcCisgICAgdmNvbnNvbGUgXAorICAgIHh6IFwKKyIKKworUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gIiBcCisgICAgZ3NoYWRvdyBcCisgICAgaWRuIFwKKyAgICBsb2NhbGVkIFwKKyAgICBteWhvc3RuYW1lIFwKKyAgICBuc3MgXAorICAgIG5zcy1teW1hY2hpbmVzIFwKKyAgICBuc3MtcmVzb2x2ZSBcCisgICAgc3lzdXNlcnMgXAorICAgIHVzZXJkYiBcCisgICAgdXRtcCBcCisiCisKK0NGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtRF9fVUFQSV9ERUZfRVRISERSPTAgIgorCisjIFVzZSB0aGUgdXBzdHJlYW0gc3lzdGVtZCBzZXJpYWwtZ2V0dHlALnNlcnZpY2UgYW5kIHJlbHkgb24KKyMgc3lzdGVtZC1nZXR0eS1nZW5lcmF0b3IgaW5zdGVhZCBvZiB1c2luZyB0aGUgT0UtY29yZSBzcGVjaWZpYworIyBzeXN0ZW1kLXNlcmlhbGdldHR5LmJiIC0gbm90IGVuYWJsZWQgYnkgZGVmYXVsdC4KK1BBQ0tBR0VDT05GSUdbc2VyaWFsLWdldHR5LWdlbmVyYXRvcl0gPSAiIgorCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLURhY2w9dHJ1ZSwtRGFjbD1mYWxzZSxhY2wiCitQQUNLQUdFQ09ORklHW2F1ZGl0XSA9ICItRGF1ZGl0PXRydWUsLURhdWRpdD1mYWxzZSxhdWRpdCIKK1BBQ0tBR0VDT05GSUdbYmFja2xpZ2h0XSA9ICItRGJhY2tsaWdodD10cnVlLC1EYmFja2xpZ2h0PWZhbHNlIgorUEFDS0FHRUNPTkZJR1tiaW5mbXRdID0gIi1EYmluZm10PXRydWUsLURiaW5mbXQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItRGJ6aXAyPXRydWUsLURiemlwMj1mYWxzZSxiemlwMiIKK1BBQ0tBR0VDT05GSUdbY2dyb3VwdjJdID0gIi1EZGVmYXVsdC1oaWVyYXJjaHk9dW5pZmllZCwtRGRlZmF1bHQtaGllcmFyY2h5PWh5YnJpZCIKK1BBQ0tBR0VDT05GSUdbY29yZWR1bXBdID0gIi1EY29yZWR1bXA9dHJ1ZSwtRGNvcmVkdW1wPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tjcnlwdHNldHVwXSA9ICItRGxpYmNyeXB0c2V0dXA9dHJ1ZSwtRGxpYmNyeXB0c2V0dXA9ZmFsc2UsY3J5cHRzZXR1cCIKK1BBQ0tBR0VDT05GSUdbZGJ1c10gPSAiLURkYnVzPXRydWUsLURkYnVzPWZhbHNlLGRidXMiCitQQUNLQUdFQ09ORklHW2VmaV0gPSAiLURlZmk9dHJ1ZSwtRGVmaT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbZ251LWVmaV0gPSAiLURnbnUtZWZpPXRydWUgLURlZmktbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9IC1EZWZpLWluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0vZWZpLC1EZ251LWVmaT1mYWxzZSxnbnUtZWZpIgorUEFDS0FHRUNPTkZJR1tlbGZ1dGlsc10gPSAiLURlbGZ1dGlscz10cnVlLC1EZWxmdXRpbHM9ZmFsc2UsZWxmdXRpbHMiCitQQUNLQUdFQ09ORklHW2ZpcnN0Ym9vdF0gPSAiLURmaXJzdGJvb3Q9dHJ1ZSwtRGZpcnN0Ym9vdD1mYWxzZSIKKyMgU2lnbiB0aGUgam91cm5hbCBmb3IgYW50aS10YW1wZXJpbmcKK1BBQ0tBR0VDT05GSUdbZ2NyeXB0XSA9ICItRGdjcnlwdD10cnVlLC1EZ2NyeXB0PWZhbHNlLGxpYmdjcnlwdCIKK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItRGdudXRscz10cnVlLC1EZ251dGxzPWZhbHNlLGdudXRscyIKK1BBQ0tBR0VDT05GSUdbZ3NoYWRvd10gPSAiLURnc2hhZG93PXRydWUsLURnc2hhZG93PWZhbHNlIgorUEFDS0FHRUNPTkZJR1toaWJlcm5hdGVdID0gIi1EaGliZXJuYXRlPXRydWUsLURoaWJlcm5hdGU9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2hvc3RuYW1lZF0gPSAiLURob3N0bmFtZWQ9dHJ1ZSwtRGhvc3RuYW1lZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbaWRuXSA9ICItRGlkbj10cnVlLC1EaWRuPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tpbWFdID0gIi1EaW1hPXRydWUsLURpbWE9ZmFsc2UiCisjIGltcG9ydGQgcmVxdWlyZXMgY3VybC94ei96bGliL2J6aXAyL2djcnlwdAorUEFDS0FHRUNPTkZJR1tpbXBvcnRkXSA9ICItRGltcG9ydGQ9dHJ1ZSwtRGltcG9ydGQ9ZmFsc2UiCisjIFVwZGF0ZSBOQVQgZmlyZXdhbGwgcnVsZXMKK1BBQ0tBR0VDT05GSUdbaXB0Y10gPSAiLURsaWJpcHRjPXRydWUsLURsaWJpcHRjPWZhbHNlLGlwdGFibGVzIgorUEFDS0FHRUNPTkZJR1tqb3VybmFsLXVwbG9hZF0gPSAiLURsaWJjdXJsPXRydWUsLURsaWJjdXJsPWZhbHNlLGN1cmwiCitQQUNLQUdFQ09ORklHW2ttb2RdID0gIi1Ea21vZD10cnVlLC1Ea21vZD1mYWxzZSxrbW9kIgorUEFDS0FHRUNPTkZJR1tsZGNvbmZpZ10gPSAiLURsZGNvbmZpZz10cnVlLC1EbGRjb25maWc9ZmFsc2UsLGxkY29uZmlnIgorUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIi1EbGliaWRuPXRydWUsLURsaWJpZG49ZmFsc2UsbGliaWRuIgorUEFDS0FHRUNPTkZJR1tsaWJpZG4yXSA9ICItRGxpYmlkbjI9dHJ1ZSwtRGxpYmlkbjI9ZmFsc2UsbGliaWRuMiIKK1BBQ0tBR0VDT05GSUdbbG9jYWxlZF0gPSAiLURsb2NhbGVkPXRydWUsLURsb2NhbGVkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tsb2dpbmRdID0gIi1EbG9naW5kPXRydWUsLURsb2dpbmQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2x6NF0gPSAiLURsejQ9dHJ1ZSwtRGx6ND1mYWxzZSxsejQiCitQQUNLQUdFQ09ORklHW21hY2hpbmVkXSA9ICItRG1hY2hpbmVkPXRydWUsLURtYWNoaW5lZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi1EbWFuPXRydWUsLURtYW49ZmFsc2UsbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbbWljcm9odHRwZF0gPSAiLURtaWNyb2h0dHBkPXRydWUsLURtaWNyb2h0dHBkPWZhbHNlLGxpYm1pY3JvaHR0cGQiCitQQUNLQUdFQ09ORklHW215aG9zdG5hbWVdID0gIi1EbnNzLW15aG9zdG5hbWU9dHJ1ZSwtRG5zcy1teWhvc3RuYW1lPWZhbHNlLCxsaWJuc3MtbXlob3N0bmFtZSIKK1BBQ0tBR0VDT05GSUdbbmV0d29ya2RdID0gIi1EbmV0d29ya2Q9dHJ1ZSwtRG5ldHdvcmtkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tuc3NdID0gIi1EbnNzLXN5c3RlbWQ9dHJ1ZSwtRG5zcy1zeXN0ZW1kPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tuc3MtbXltYWNoaW5lc10gPSAiLURuc3MtbXltYWNoaW5lcz10cnVlLC1EbnNzLW15bWFjaGluZXM9ZmFsc2UiCitQQUNLQUdFQ09ORklHW25zcy1yZXNvbHZlXSA9ICItRG5zcy1yZXNvbHZlPXRydWUsLURuc3MtcmVzb2x2ZT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLURvcGVuc3NsPXRydWUsLURvcGVuc3NsPWZhbHNlLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLURwYW09dHJ1ZSwtRHBhbT1mYWxzZSxsaWJwYW0sJHtQQU1fUExVR0lOU30iCitQQUNLQUdFQ09ORklHW3BjcmUyXSA9ICItRHBjcmUyPXRydWUsLURwY3JlMj1mYWxzZSxsaWJwY3JlMiIKK1BBQ0tBR0VDT05GSUdbcG9sa2l0XSA9ICItRHBvbGtpdD10cnVlLC1EcG9sa2l0PWZhbHNlIgorUEFDS0FHRUNPTkZJR1twb3J0YWJsZWRdID0gIi1EcG9ydGFibGVkPXRydWUsLURwb3J0YWJsZWQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3FyZW5jb2RlXSA9ICItRHFyZW5jb2RlPXRydWUsLURxcmVuY29kZT1mYWxzZSxxcmVuY29kZSIKK1BBQ0tBR0VDT05GSUdbcXVvdGFjaGVja10gPSAiLURxdW90YWNoZWNrPXRydWUsLURxdW90YWNoZWNrPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tyYW5kb21zZWVkXSA9ICItRHJhbmRvbXNlZWQ9dHJ1ZSwtRHJhbmRvbXNlZWQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3Jlc29sdmVkXSA9ICItRHJlc29sdmU9dHJ1ZSwtRHJlc29sdmU9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3Jma2lsbF0gPSAiLURyZmtpbGw9dHJ1ZSwtRHJma2lsbD1mYWxzZSIKKyMgbGlic2VjY29tcCBpcyBmb3VuZCBpbiBtZXRhLXNlY3VyaXR5CitQQUNLQUdFQ09ORklHW3NlY2NvbXBdID0gIi1Ec2VjY29tcD10cnVlLC1Ec2VjY29tcD1mYWxzZSxsaWJzZWNjb21wIgorUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItRHNlbGludXg9dHJ1ZSwtRHNlbGludXg9ZmFsc2UsbGlic2VsaW51eCxpbml0c2NyaXB0cy1zdXNoZWxsIgorUEFDS0FHRUNPTkZJR1tzbWFja10gPSAiLURzbWFjaz10cnVlLC1Ec21hY2s9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3N5c3VzZXJzXSA9ICItRHN5c3VzZXJzPXRydWUsLURzeXN1c2Vycz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbc3lzdmluaXRdID0gIi1Ec3lzdmluaXQtcGF0aD0ke3N5c2NvbmZkaXJ9L2luaXQuZCAtRHN5c3ZyY25kLXBhdGg9JHtzeXNjb25mZGlyfSwtRHN5c3Zpbml0LXBhdGg9IC1Ec3lzdnJjbmQtcGF0aD0sLHN5c3RlbWQtY29tcGF0LXVuaXRzIHVwZGF0ZS1yYy5kIgorIyBXaGVuIGVuYWJsZWQgdXNlIHJlcHJvZHVjYmxlIGJ1aWxkIHRpbWVzdGFtcCBpZiBzZXQgYXMgdGltZSBlcG9jaCwKKyMgb3IgYnVpbGQgdGltZSBpZiBub3QuIFdoZW4gZGlzYWJsZWQsIHRpbWUgZXBvY2ggaXMgdW5zZXQuCitkZWYgYnVpbGRfZXBvY2goZCk6CisgICAgZXBvY2ggPSBkLmdldFZhcignU09VUkNFX0RBVEVfRVBPQ0gnKSBvciAiLTEiCisgICAgcmV0dXJuICctRHRpbWUtZXBvY2g9JWQnICUgaW50KGVwb2NoKQorUEFDS0FHRUNPTkZJR1tzZXQtdGltZS1lcG9jaF0gPSAiJHtAYnVpbGRfZXBvY2goZCl9LC1EdGltZS1lcG9jaD0wIgorUEFDS0FHRUNPTkZJR1t0aW1lZGF0ZWRdID0gIi1EdGltZWRhdGVkPXRydWUsLUR0aW1lZGF0ZWQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3RpbWVzeW5jZF0gPSAiLUR0aW1lc3luY2Q9dHJ1ZSwtRHRpbWVzeW5jZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdXNybWVyZ2VdID0gIi1Ec3BsaXQtdXNyPWZhbHNlLC1Ec3BsaXQtdXNyPXRydWUiCitQQUNLQUdFQ09ORklHW3NiaW5tZXJnZV0gPSAiLURzcGxpdC1iaW49ZmFsc2UsLURzcGxpdC1iaW49dHJ1ZSIKK1BBQ0tBR0VDT05GSUdbdXNlcmRiXSA9ICItRHVzZXJkYj10cnVlLC1EdXNlcmRiPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t1dG1wXSA9ICItRHV0bXA9dHJ1ZSwtRHV0bXA9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItRFZBTEdSSU5EPTEsLHZhbGdyaW5kIgorUEFDS0FHRUNPTkZJR1t2Y29uc29sZV0gPSAiLUR2Y29uc29sZT10cnVlLC1EdmNvbnNvbGU9ZmFsc2UsLCR7UE59LXZjb25zb2xlLXNldHVwIgorIyBWZXJpZnkga2V5bWFwcyBvbiBsb2NhbGUgY2hhbmdlCitQQUNLQUdFQ09ORklHW3hrYmNvbW1vbl0gPSAiLUR4a2Jjb21tb249dHJ1ZSwtRHhrYmNvbW1vbj1mYWxzZSxsaWJ4a2Jjb21tb24iCitQQUNLQUdFQ09ORklHW3h6XSA9ICItRHh6PXRydWUsLUR4ej1mYWxzZSx4eiIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLUR6bGliPXRydWUsLUR6bGliPWZhbHNlLHpsaWIiCisKKyMgSGVscGVyIHZhcmlhYmxlcyB0byBjbGFyaWZ5IGxvY2F0aW9ucy4gIFRoaXMgbWlycm9ycyB0aGUgbG9naWMgaW4gc3lzdGVtZCdzCisjIGJ1aWxkIHN5c3RlbS4KK3Jvb3RwcmVmaXggPz0gIiR7cm9vdF9wcmVmaXh9Igorcm9vdGxpYmRpciA/PSAiJHtiYXNlX2xpYmRpcn0iCityb290bGliZXhlY2RpciA9ICIke3Jvb3RwcmVmaXh9L2xpYiIKKworIyBUaGlzIGxpbmtzIHVkZXYgc3RhdGljYWxseSB3aXRoIHN5c3RlbWQgaGVscGVyIGxpYnJhcnkuCisjIE90aGVyd2lzZSB1ZGV2IHBhY2thZ2Ugd291bGQgZGVwZW5kIG9uIHN5c3RlbWQgcGFja2FnZSAod2hpY2ggaGFzIHRoZSBuZWVkZWQgc2hhcmVkIGxpYnJhcnkpLAorIyBhbmQgYWx3YXlzIHB1bGwgaXQgaW50byBpbWFnZXMuCitFWFRSQV9PRU1FU09OICs9ICItRGxpbmstdWRldi1zaGFyZWQ9ZmFsc2UiCisKK0VYVFJBX09FTUVTT04gKz0gIi1Ebm9ib2R5LXVzZXI9bm9ib2R5IFwKKyAgICAgICAgICAgICAgICAgIC1Ebm9ib2R5LWdyb3VwPW5vYm9keSBcCisgICAgICAgICAgICAgICAgICAtRHJvb3RsaWJkaXI9JHtyb290bGliZGlyfSBcCisgICAgICAgICAgICAgICAgICAtRHJvb3RwcmVmaXg9JHtyb290cHJlZml4fSBcCisgICAgICAgICAgICAgICAgICAtRGRlZmF1bHQtbG9jYWxlPUMgXAorICAgICAgICAgICAgICAgICAgIgorCisjIEhhcmRjb2RlIHRhcmdldCBiaW5hcnkgcGF0aHMgdG8gYXZvaWQgdXNpbmcgcGF0aHMgZnJvbSBzeXNyb290CitFWFRSQV9PRU1FU09OICs9ICItRGtleGVjLXBhdGg9JHtzYmluZGlyfS9rZXhlYyBcCisgICAgICAgICAgICAgICAgICAtRGttb2QtcGF0aD0ke2Jhc2VfYmluZGlyfS9rbW9kIFwKKyAgICAgICAgICAgICAgICAgIC1EbW91bnQtcGF0aD0ke2Jhc2VfYmluZGlyfS9tb3VudCBcCisgICAgICAgICAgICAgICAgICAtRHF1b3RhY2hlY2stcGF0aD0ke3NiaW5kaXJ9L3F1b3RhY2hlY2sgXAorICAgICAgICAgICAgICAgICAgLURxdW90YW9uLXBhdGg9JHtzYmluZGlyfS9xdW90YW9uIFwKKyAgICAgICAgICAgICAgICAgIC1Ec3Vsb2dpbi1wYXRoPSR7YmFzZV9zYmluZGlyfS9zdWxvZ2luIFwKKyAgICAgICAgICAgICAgICAgIC1Ebm9sb2dpbi1wYXRoPSR7YmFzZV9zYmluZGlyfS9ub2xvZ2luIFwKKyAgICAgICAgICAgICAgICAgIC1EdW1vdW50LXBhdGg9JHtiYXNlX2JpbmRpcn0vdW1vdW50IgorCitkb19pbnN0YWxsKCkgeworCW1lc29uX2RvX2luc3RhbGwKKwlpbnN0YWxsIC1kICR7RH0vJHtiYXNlX3NiaW5kaXJ9CisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VyaWFsLWdldHR5LWdlbmVyYXRvcicsICdmYWxzZScsICd0cnVlJywgZCl9OyB0aGVuCisJCSMgUHJvdmlkZWQgYnkgYSBzZXBhcmF0ZSByZWNpcGUKKwkJcm0gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2VyaWFsLWdldHR5KiAtZgorCWZpCisKKwkjIFByb3ZpZGUgc3VwcG9ydCBmb3IgaW5pdHJhbWZzCisJWyAhIC1lICR7RH0vaW5pdCBdICYmIGxuIC1zICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZCAke0R9L2luaXQKKwlbICEgLWUgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0vdWRldmQgXSAmJiBsbiAtcyAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0vdWRldmQKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LyoucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLworCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vMDAtY3JlYXRlLXZvbGF0aWxlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN2aW5pdCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKKwkJc2VkIC1pIHMlQFVERVZEQCUke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQlICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXN0ZW1kLXVkZXZkCisJCWluc3RhbGwgLURtIDA3NTUgJHtTfS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtZC1zeXN2LWluc3RhbGwKKwlmaQorCisJY2hvd24gcm9vdDpzeXN0ZW1kLWpvdXJuYWwgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9qb3VybmFsCisKKwkjIERlbGV0ZSBqb3VybmFsIFJFQURNRSwgYXMgbG9nIGNhbiBiZSBzeW1saW5rZWQgaW5zaWRlIHZvbGF0aWxlLgorCXJtIC1mICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvUkVBRE1FCisKKwkjIGpvdXJuYWwtcmVtb3RlIGNyZWF0ZXMgdGhpcyBhdCBzdGFydAorCXJtIC1yZiAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbG9nL2pvdXJuYWwvcmVtb3RlCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2dyYXBoaWNhbC50YXJnZXQud2FudHMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3dlcm9mZi50YXJnZXQud2FudHMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3JlYm9vdC50YXJnZXQud2FudHMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMKKworCSMgQ3JlYXRlIHN5bWxpbmtzIGZvciBzeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1dG1wJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Bvd2Vyb2ZmLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZWJvb3QudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJZmkKKworCSMgdGhpcyBmaWxlIGlzIG5lZWRlZCB0byBleGlzdCBpZiBuZXR3b3JrZCBpcyBkaXNhYmxlZCBidXQgdGltZXN5bmNkIGlzIHN0aWxsIGluIHVzZSBzaW5jZSB0aW1lc3luY2QgY2hlY2tzIGl0CisJIyBmb3IgZXhpc3RlbmNlIGVsc2UgaXQgZmFpbHMKKwlpZiBbIC1zICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYgXTsgdGhlbgorCQkke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICduZXR3b3JrZCcsICc6JywgJ3NlZCAtaSAtZSAiXCRhZCAvcnVuL3N5c3RlbWQvbmV0aWYvbGlua3MgMDc1NSByb290IHJvb3QgLSIgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZicsIGQpfQorCWZpCisJaWYgISAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyZXNvbHZlZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWVjaG8gJ0whICR7c3lzY29uZmRpcn0vcmVzb2x2LmNvbmYgLSAtIC0gLSAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mJyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9ldGMuY29uZgorCQllY2hvICdkIC9ydW4vc3lzdGVtZC9yZXNvbHZlIDA3NTUgcm9vdCByb290IC0nID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZgorCQllY2hvICdmIC9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mIDA2NDQgcm9vdCByb290JyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYKKwkJbG4gLXMgLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAke0R9JHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kCisJZWxzZQorCQlzZWQgLWkgLWUgInMlXkwhIC9ldGMvcmVzb2x2LmNvbmYuKiQlTCEgL2V0Yy9yZXNvbHYuY29uZiAtIC0gLSAtIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYlZyIgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL2V0Yy5jb25mCisJCWxuIC1zIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZAorCWZpCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnZmFsc2UnLCAndHJ1ZScsIGQpfTsgdGhlbgorCQlybSAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQveDExLmNvbmYKKwkJcm0gLXIgJHtEfSR7c3lzY29uZmRpcn0vWDExCisJZmkKKworCSMgSWYgcG9sa2l0IGlzIHNldHVwIGZpeHVwIHBlcm1pc3Npb25zIGFuZCBvd25lcnNoaXAKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwb2xraXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlpZiBbIC1kICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQgXTsgdGhlbgorCQkJY2htb2QgNzAwICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQKKwkJCWNob3duIHBvbGtpdGQ6cm9vdCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kCisJCWZpCisJZmkKKworCSMgY3JlYXRlIGxpbmsgZm9yIGV4aXN0aW5nIHVkZXYgcnVsZXMKKwlsbiAtcyAke2Jhc2VfYmluZGlyfS91ZGV2YWRtICR7RH0ke2Jhc2Vfc2JpbmRpcn0vdWRldmFkbQorCisJIyBkdXBsaWNhdGUgdWRldmFkbSBmb3IgcG9zdGluc3Qgc2NyaXB0CisJaW5zdGFsbCAtZCAke0R9JHtsaWJleGVjZGlyfQorCWxuICR7RH0ke2Jhc2VfYmluZGlyfS91ZGV2YWRtICR7RH0ke2xpYmV4ZWNkaXJ9LyR7TUxQUkVGSVh9dWRldmFkbQorCisJIyBpbnN0YWxsIGRlZmF1bHQgcG9saWN5IGZvciBwcmVzZXRzCisJIyBodHRwczovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9zeXN0ZW1kL1ByZXNldC8jaG93dG8KKwlpbnN0YWxsIC1EbSAwNjQ0ICR7V09SS0RJUn0vOTktZGVmYXVsdC5wcmVzZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0tcHJlc2V0Lzk5LWRlZmF1bHQucHJlc2V0Cit9CisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpeworICAgIHN5c3RlbWRsaWJkaXIgPSBkLmdldFZhcigicm9vdGxpYmRpciIpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgc3lzdGVtZGxpYmRpciwgJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdTeXN0ZW1kICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQorfQorUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYih1ZGV2fHN5c3RlbWR8bnNzKS4qIgorCitQQUNLQUdFX0JFRk9SRV9QTiA9ICJcCisgICAgJHtQTn0tZ3VpIFwKKyAgICAke1BOfS12Y29uc29sZS1zZXR1cCBcCisgICAgJHtQTn0taW5pdHJhbWZzIFwKKyAgICAke1BOfS1hbmFseXplIFwKKyAgICAke1BOfS1rZXJuZWwtaW5zdGFsbCBcCisgICAgJHtQTn0tcnBtLW1hY3JvcyBcCisgICAgJHtQTn0tYmluZm10IFwKKyAgICAke1BOfS16c2gtY29tcGxldGlvbiBcCisgICAgJHtQTn0tY29udGFpbmVyIFwKKyAgICAke1BOfS1qb3VybmFsLWdhdGV3YXlkIFwKKyAgICAke1BOfS1qb3VybmFsLXVwbG9hZCBcCisgICAgJHtQTn0tam91cm5hbC1yZW1vdGUgXAorICAgICR7UE59LWV4dHJhLXV0aWxzIFwKKyAgICB1ZGV2IFwKKyAgICB1ZGV2LWh3ZGIgXAorIgorCitTVU1NQVJZXyR7UE59LWNvbnRhaW5lciA9ICJUb29scyBmb3IgY29udGFpbmVycyBhbmQgVk1zIgorREVTQ1JJUFRJT05fJHtQTn0tY29udGFpbmVyID0gIlN5c3RlbWQgdG9vbHMgdG8gc3Bhd24gYW5kIG1hbmFnZSBjb250YWluZXJzIGFuZCB2aXJ0dWFsIG1hY2hpbmVzLiIKKworU1VNTUFSWV8ke1BOfS1qb3VybmFsLWdhdGV3YXlkID0gIkhUVFAgc2VydmVyIGZvciBqb3VybmFsIGV2ZW50cyIKK0RFU0NSSVBUSU9OXyR7UE59LWpvdXJuYWwtZ2F0ZXdheWQgPSAic3lzdGVtZC1qb3VybmFsLWdhdGV3YXlkIHNlcnZlcyBqb3VybmFsIGV2ZW50cyBvdmVyIHRoZSBuZXR3b3JrLiBDbGllbnRzIG11c3QgY29ubmVjdCB1c2luZyBIVFRQLiBUaGUgc2VydmVyIGxpc3RlbnMgb24gcG9ydCAxOTUzMSBieSBkZWZhdWx0LiIKKworU1VNTUFSWV8ke1BOfS1qb3VybmFsLXVwbG9hZCA9ICJTZW5kIGpvdXJuYWwgbWVzc2FnZXMgb3ZlciB0aGUgbmV0d29yayIKK0RFU0NSSVBUSU9OXyR7UE59LWpvdXJuYWwtdXBsb2FkID0gInN5c3RlbWQtam91cm5hbC11cGxvYWQgdXBsb2FkcyBqb3VybmFsIGVudHJpZXMgdG8gYSBzcGVjaWZpZWQgVVJMLiIKKworU1VNTUFSWV8ke1BOfS1qb3VybmFsLXJlbW90ZSA9ICJSZWNlaXZlIGpvdXJuYWwgbWVzc2FnZXMgb3ZlciB0aGUgbmV0d29yayIKK0RFU0NSSVBUSU9OXyR7UE59LWpvdXJuYWwtcmVtb3RlID0gInN5c3RlbWQtam91cm5hbC1yZW1vdGUgaXMgYSBjb21tYW5kIHRvIHJlY2VpdmUgc2VyaWFsaXplZCBqb3VybmFsIGV2ZW50cyBhbmQgc3RvcmUgdGhlbSB0byBqb3VybmFsIGZpbGVzLiIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdiaW5mbXQnLCAnJHtQTn0tYmluZm10JywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnJHtQTn0tam91cm5hbC1nYXRld2F5ZCcsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaWNyb2h0dHBkJywgJyR7UE59LWpvdXJuYWwtcmVtb3RlJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2pvdXJuYWwtdXBsb2FkJywgJyR7UE59LWpvdXJuYWwtdXBsb2FkJywgJycsIGQpfSBcCisiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tYmluZm10ID0gInN5c3RlbWQtYmluZm10LnNlcnZpY2UiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tZXh0cmEtdXRpbHMgXAorICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaWNyb2h0dHBkJywgJyR7UE59LWpvdXJuYWwtZ2F0ZXdheScsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaWNyb2h0dHBkJywgJyR7UE59LWpvdXJuYWwtcmVtb3RlJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2pvdXJuYWwtdXBsb2FkJywgJyR7UE59LWpvdXJuYWwtdXBsb2FkJywgJycsIGQpfSBcCisiCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItciBzeXN0ZW1kLWpvdXJuYWwiCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdjb3JlZHVtcCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtY29yZWR1bXA7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ25ldHdvcmtkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1uZXR3b3JrOycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwb2xraXQnLCAnLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLXVzZXItZ3JvdXAgLS1ob21lLWRpciAke3N5c2NvbmZkaXJ9L3BvbGtpdC0xIHBvbGtpdGQ7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1yZXNvbHZlOycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0aW1lc3luY2QnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLXRpbWVzeW5jOycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59LWV4dHJhLXV0aWxzID0gIi0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1idXMtcHJveHkiCitVU0VSQUREX1BBUkFNXyR7UE59LWpvdXJuYWwtZ2F0ZXdheSA9ICItLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC1nYXRld2F5IgorVVNFUkFERF9QQVJBTV8ke1BOfS1qb3VybmFsLXJlbW90ZSA9ICItLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC1yZW1vdGUiCitVU0VSQUREX1BBUkFNXyR7UE59LWpvdXJuYWwtdXBsb2FkID0gIi0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLXVwbG9hZCIKKworRklMRVNfJHtQTn0tYW5hbHl6ZSA9ICIke2JpbmRpcn0vc3lzdGVtZC1hbmFseXplIgorCitGSUxFU18ke1BOfS1pbml0cmFtZnMgPSAiL2luaXQiCitSREVQRU5EU18ke1BOfS1pbml0cmFtZnMgPSAiJHtQTn0iCisKK0ZJTEVTXyR7UE59LWd1aSA9ICIke2JpbmRpcn0vc3lzdGVtYWRtIgorCitGSUxFU18ke1BOfS12Y29uc29sZS1zZXR1cCA9ICIke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLXZjb25zb2xlLXNldHVwLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLXZjb25zb2xlLXNldHVwLnNlcnZpY2UiCisKK1JERVBFTkRTXyR7UE59LWtlcm5lbC1pbnN0YWxsICs9ICJiYXNoIgorRklMRVNfJHtQTn0ta2VybmVsLWluc3RhbGwgPSAiJHtiaW5kaXJ9L2tlcm5lbC1pbnN0YWxsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0va2VybmVsLyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIva2VybmVsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorRklMRVNfJHtQTn0tcnBtLW1hY3JvcyA9ICIke2V4ZWNfcHJlZml4fS9saWIvcnBtIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK0ZJTEVTXyR7UE59LXpzaC1jb21wbGV0aW9uID0gIiR7ZGF0YWRpcn0venNoL3NpdGUtZnVuY3Rpb25zIgorCitGSUxFU18ke1BOfS1iaW5mbXQgPSAiJHtzeXNjb25mZGlyfS9iaW5mbXQuZC8gXAorICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9iaW5mbXQuZCBcCisgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWJpbmZtdCBcCisgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy4qIFwKKyAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYmluZm10LnNlcnZpY2UiCitSUkVDT01NRU5EU18ke1BOfS1iaW5mbXQgPSAia2VybmVsLW1vZHVsZS1iaW5mbXQtbWlzYyIKKworUlJFQ09NTUVORFNfJHtQTn0tdmNvbnNvbGUtc2V0dXAgPSAia2JkIGtiZC1jb25zb2xlZm9udHMga2JkLWtleW1hcHMiCisKKworRklMRVNfJHtQTn0tam91cm5hbC1nYXRld2F5ZCA9ICIke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC1nYXRld2F5ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1qb3VybmFsLWdhdGV3YXlkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtam91cm5hbC1nYXRld2F5ZC5zb2NrZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3NvY2tldHMudGFyZ2V0LndhbnRzL3N5c3RlbWQtam91cm5hbC1nYXRld2F5ZC5zb2NrZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3N5c3RlbWQvZ2F0ZXdheWQvYnJvd3NlLmh0bWwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1qb3VybmFsLWdhdGV3YXlkID0gInN5c3RlbWQtam91cm5hbC1nYXRld2F5ZC5zb2NrZXQiCisKK0ZJTEVTXyR7UE59LWpvdXJuYWwtdXBsb2FkID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLXVwbG9hZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtam91cm5hbC11cGxvYWQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbC11cGxvYWQuY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1qb3VybmFsLXVwbG9hZCA9ICJzeXN0ZW1kLWpvdXJuYWwtdXBsb2FkLnNlcnZpY2UiCisKK0ZJTEVTXyR7UE59LWpvdXJuYWwtcmVtb3RlID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLXJlbW90ZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbC1yZW1vdGUuY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtam91cm5hbC1yZW1vdGUuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtam91cm5hbC1yZW1vdGUuc29ja2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LWpvdXJuYWwtcmVtb3RlID0gInN5c3RlbWQtam91cm5hbC1yZW1vdGUuc29ja2V0IgorCisKK0ZJTEVTXyR7UE59LWNvbnRhaW5lciA9ICIke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9tYWNoaW5lcy50YXJnZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L21hY2hpbmVjdGwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLW5zcGF3biBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtub25hcmNoX2xpYmRpcn0vc3lzdGVtZC9pbXBvcnQtcHVicmluZy5ncGcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vYnVzbmFtZXMudGFyZ2V0LndhbnRzL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmJ1c25hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vYnVzbmFtZXMudGFyZ2V0LndhbnRzL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5idXNuYW1lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvY2FsLWZzLnRhcmdldC53YW50cy92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L21hY2hpbmVzLnRhcmdldC53YW50cy92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3JlbW90ZS1mcy50YXJnZXQud2FudHMvdmFyLWxpYi1tYWNoaW5lcy5tb3VudCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tYWNoaW5lLnNsaWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L21hY2hpbmVzLnRhcmdldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5idXNuYW1lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5idXNuYW1lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtaW1wb3J0ZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtbWFjaGluZWQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9kYnVzLW9yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3Zhci1saWItbWFjaGluZXMubW91bnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbXBvcnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbXBvcnRkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtbWFjaGluZWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1wdWxsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLW5zcGF3bi5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtbnNwYXduQC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibnNzX215bWFjaGluZXMuc28uMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5wb2xpY3kgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEucG9saWN5IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICIKKworUlJFQ09NTUVORFNfJHtQTn0tY29udGFpbmVyICs9ICJcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tam91cm5hbC11cGxvYWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWpvdXJuYWwtcmVtb3RlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1qb3VybmFsLWdhdGV3YXlkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICIKKworRklMRVNfJHtQTn0tZXh0cmEtdXRpbHMgPSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1lc2NhcGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1pbmhpYml0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWRldGVjdC12aXJ0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtcnVuIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNhdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1kZWx0YSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jZ2xzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNndG9wIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXN0ZGlvLWJyaWRnZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWFzay1wYXNzd29yZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLXR0eS1hc2stcGFzc3dvcmQtYWdlbnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXJlc29sdmUtaG9zdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYWMtcG93ZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWFjdGl2YXRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1idXMtcHJveHlkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1idXMtcHJveHlkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJ1cy1wcm94eWQuc29ja2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1zb2NrZXQtcHJveHlkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1yZXBseS1wYXNzd29yZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtc2xlZXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW0tc2xlZXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWhpYmVybmF0ZS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1oeWJyaWQtc2xlZXAuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtc3VzcGVuZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2xlZXAudGFyZ2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbml0Y3RsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1pbml0Y3RsLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWluaXRjdGwuc29ja2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc29ja2V0cy50YXJnZXQud2FudHMvc3lzdGVtZC1pbml0Y3RsLnNvY2tldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbS1nZW5lcmF0b3JzL3N5c3RlbWQtZ3B0LWF1dG8tZ2VuZXJhdG9yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1jZ3JvdXBzLWFnZW50IFwKKyIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vc3lzdGVtZC9jb3JlZHVtcC5jb25mIFwKKwkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZiBcCisJJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2xvZ2luZC5jb25mIFwKKwkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvbmV0d29ya2QuY29uZiBcCisJJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3BzdG9yZS5jb25mIFwKKwkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvcmVzb2x2ZWQuY29uZiBcCisJJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3NsZWVwLmNvbmYgXAorCSR7c3lzY29uZmRpcn0vc3lzdGVtZC9zeXN0ZW0uY29uZiBcCisJJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3RpbWVzeW5jZC5jb25mIFwKKwkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvdXNlci5jb25mIFwKKyIKKworRklMRVNfJHtQTn0gPSAiICR7YmFzZV9iaW5kaXJ9LyogXAorICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9zaHV0ZG93biBcCisgICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L2hhbHQgXAorICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9wb3dlcm9mZiBcCisgICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3J1bmxldmVsIFwKKyAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vdGVsaW5pdCBcCisgICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3Jlc29sdmNvbmYgXAorICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9yZWJvb3QgXAorICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9pbml0IFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7QlBOfSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9mYWN0b3J5IFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMS8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vbW9kdWxlcy1sb2FkLmQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3BhbS5kLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXNjdGwuZC8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0veGRnLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvUkVBRE1FIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vWDExL3hpbml0L3hpbml0cmMuZC8qIFwKKyAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kLyogXAorICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS8qIFwKKyAgICAgICAgICAgICAgICAke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8qLnNvIFwKKyAgICAgICAgICAgICAgICAvY2dyb3VwIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZCogXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9idXNjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9jb3JlZHVtcGN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2xvY2FsZWN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2hvc3RuYW1lY3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vcmVzb2x2ZWN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3RpbWVkYXRlY3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vYm9vdGN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2tlcm5lbC1pbnN0YWxsIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC8qLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXN0ZW1kIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvbW9kdWxlcy1sb2FkLmQgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXNjdGwuZCBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c3VzZXJzLmQgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9lbnZpcm9ubWVudC5kIFwKKyAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9IFwKKyAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNzAtdWFjY2Vzcy5ydWxlcyBcCisgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzcxLXNlYXQucnVsZXMgXAorICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC83My1zZWF0LWxhdGUucnVsZXMgXAorICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC85OS1zeXN0ZW1kLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9tb2Rwcm9iZS5kL3N5c3RlbWQuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnRpbWVkYXRlMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubG9jYWxlMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubmV0d29yazEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnJlc29sdmUxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5zeXN0ZW1kMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaG9zdG5hbWUxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5sb2dpbjEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnRpbWVzeW5jMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AucG9ydGFibGUxLmNvbmYgXAorICAgICAgICAgICAgICAgIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5LyoubGEgJHtkYXRhZGlyfS9kYnVzLTEvaW50ZXJmYWNlcy8gJHtzeXNjb25mZGlyfS9ycG0vbWFjcm9zLnN5c3RlbWQiCisKK1JERVBFTkRTXyR7UE59ICs9ICJrbW9kIGRidXMgdXRpbC1saW51eC1tb3VudCB1dGlsLWxpbnV4LXVtb3VudCB1ZGV2ICg9ICR7RVhURU5EUEtHVn0pIHV0aWwtbGludXgtYWdldHR5IHV0aWwtbGludXgtZnNjayIKK1JERVBFTkRTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZXJpYWwtZ2V0dHktZ2VuZXJhdG9yJywgJycsICdzeXN0ZW1kLXNlcmlhbGdldHR5JywgZCl9IgorUkRFUEVORFNfJHtQTn0gKz0gInZvbGF0aWxlLWJpbmRzIgorCitSUkVDT01NRU5EU18ke1BOfSArPSAic3lzdGVtZC1leHRyYS11dGlscyBcCisgICAgICAgICAgICAgICAgICAgICAgdWRldi1od2RiIFwKKyAgICAgICAgICAgICAgICAgICAgICBlMmZzcHJvZ3MtZTJmc2NrIFwKKyAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWF1dG9mczQga2VybmVsLW1vZHVsZS11bml4IGtlcm5lbC1tb2R1bGUtaXB2NiBrZXJuZWwtbW9kdWxlLXNjaC1mcS1jb2RlbCBcCisgICAgICAgICAgICAgICAgICAgICAgb3MtcmVsZWFzZSBcCisgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtZC1jb25mIFwKKyIKKworSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyBsaWJkaXIiCitJTlNBTkVfU0tJUF8ke1BOfS1kYmcgKz0gImxpYmRpciIKK0lOU0FORV9TS0lQXyR7UE59LWRvYyArPSAiIGxpYmRpciIKKworUlBST1ZJREVTX3VkZXYgPSAiaG90cGx1ZyIKKworUkRFUEVORFNfdWRldi1od2RiICs9ICJ1ZGV2IgorCitGSUxFU191ZGV2ICs9ICIke2Jhc2Vfc2JpbmRpcn0vdWRldmQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9uZXR3b3JrLzk5LWRlZmF1bHQubGluayBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9hY2NlbGVyb21ldGVyIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvYXRhX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvY2Ryb21faWQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9jb2xsZWN0IFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvZmlkb19pZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2ZpbmRrZXlib2FyZHMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXlib2FyZC1mb3JjZS1yZWxlYXNlLnNoIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5bWFwIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvbXRkX3Byb2JlIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvc2NzaV9pZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3Y0bF9pZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleW1hcHMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzUwLXVkZXYtZGVmYXVsdC5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNjAtYXV0b3N1c3BlbmQtY2hyb21pdW1vcy5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNjAtYmxvY2sucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzYwLWNkcm9tX2lkLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MC1kcm0ucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzYwLWV2ZGV2LnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MC1maWRvLWlkLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MC1pbnB1dC1pZC5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNjAtcGVyc2lzdGVudC1hbHNhLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MC1wZXJzaXN0ZW50LWlucHV0LnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS10YXBlLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MC1wZXJzaXN0ZW50LXY0bC5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNjAtc2Vuc29yLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MC1zZXJpYWwucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzYxLWF1dG9zdXNwZW5kLW1hbnVhbC5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNjQtYnRyZnMucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzcwLWpveXN0aWNrLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC83MC1tb3VzZS5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNzAtcG93ZXItc3dpdGNoLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC83MC10b3VjaHBhZC5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNzUtbmV0LWRlc2NyaXB0aW9uLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC83NS1wcm9iZV9tdGQucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzc4LXNvdW5kLWNhcmQucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzgwLWRyaXZlcnMucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzgwLW5ldC1zZXR1cC1saW5rLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC85MC12Y29uc29sZS5ydWxlcyBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3VkZXYgXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZCBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyp1ZGV2KiBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyoud2FudHMvKnVkZXYqIFwKKyAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtaHdkYiBcCisgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS91ZGV2YWRtIFwKKyAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS91ZGV2YWRtIFwKKyAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vJHtNTFBSRUZJWH11ZGV2YWRtIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uL2NvbXBsZXRpb25zL3VkZXZhZG0gXAorICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWh3ZGItdXBkYXRlLnNlcnZpY2UgXAorICAgICAgICAgICAgICAiCisKK0ZJTEVTX3VkZXYtaHdkYiA9ICIke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2h3ZGIuZCBcCisgICAgICAgICAgICAgICAgICAgIgorCitSQ09ORkxJQ1RTXyR7UE59ID0gInRpbnktaW5pdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyZXNvbHZlZCcsICdyZXNvbHZjb25mJywgJycsIGQpfSIKKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJ1ZGV2IgorSU5JVFNDUklQVF9OQU1FX3VkZXYgPSAic3lzdGVtZC11ZGV2ZCIKK0lOSVRTQ1JJUFRfUEFSQU1TX3VkZXYgPSAic3RhcnQgMDMgUyAuIgorCitweXRob24gX19hbm9ueW1vdXMoKSB7CisgICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCBUcnVlLCBGYWxzZSwgZCk6CisgICAgICAgIGQuc2V0VmFyKCJJTkhJQklUX1VQREFURVJDRF9CQkNMQVNTIiwgIjEiKQorfQorCitweXRob24gZG9fd2Fybl9tdXNsKCkgeworICAgIGlmIGQuZ2V0VmFyKCdUQ0xJQkMnKSA9PSAibXVzbCI6CisgICAgICAgIGJiLndhcm4oIlVzaW5nIHN5c3RlbWQgd2l0aCBtdXNsIGlzIG5vdCByZWNvbW1lbmRlZCBzaW5jZSBpdCBpcyBub3Qgc3VwcG9ydGVkIHVwc3RyZWFtIGFuZCBzb21lIHBhdGNoZXMgYXJlIGtub3duIHRvIGJlIHByb2JsZW1hdGljLiIpCit9CithZGR0YXNrIHdhcm5fbXVzbCBiZWZvcmUgZG9fY29uZmlndXJlCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImhhbHQgcmVib290IHNodXRkb3duIHBvd2Vyb2ZmIHJ1bmxldmVsICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJ3Jlc29sdi1jb25mJywgJycsIGQpfSIKKworQUxURVJOQVRJVkVfVEFSR0VUW3Jlc29sdi1jb25mXSA9ICIke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcmVzb2x2LWNvbmZdID0gIiR7c3lzY29uZmRpcn0vcmVzb2x2LmNvbmYiCitBTFRFUk5BVElWRV9QUklPUklUWVtyZXNvbHYtY29uZl0gPz0gIjUwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbaGFsdF0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2hhbHRdID0gIiR7YmFzZV9zYmluZGlyfS9oYWx0IgorQUxURVJOQVRJVkVfUFJJT1JJVFlbaGFsdF0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW3JlYm9vdF0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3JlYm9vdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3JlYm9vdCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3JlYm9vdF0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW3NodXRkb3duXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc2h1dGRvd25dID0gIiR7YmFzZV9zYmluZGlyfS9zaHV0ZG93biIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3NodXRkb3duXSA/PSAiMzAwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbcG93ZXJvZmZdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwb3dlcm9mZl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3Bvd2Vyb2ZmIgorQUxURVJOQVRJVkVfUFJJT1JJVFlbcG93ZXJvZmZdID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtydW5sZXZlbF0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3J1bmxldmVsXSA9ICIke2Jhc2Vfc2JpbmRpcn0vcnVubGV2ZWwiCitBTFRFUk5BVElWRV9QUklPUklUWVtydW5sZXZlbF0gPz0gIjMwMCIKKworcGtnX3Bvc3RpbnN0XyR7UE59X2xpYmMtZ2xpYmMgKCkgeworCXNlZCAtZSAnL15ob3N0czovcy9ccypcPG15aG9zdG5hbWVcPi8vJyBcCisJCS1lICdzL1woXmhvc3RzOi4qXClcKFw8ZmlsZXNcPlwpXCguKlwpXChcPGRuc1w+XClcKC4qXCkvXDFcMiBteWhvc3RuYW1lIFwzXDRcNS8nIFwKKwkJLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKK30KKworcGtnX3ByZXJtXyR7UE59X2xpYmMtZ2xpYmMgKCkgeworCXNlZCAtZSAnL15ob3N0czovcy9ccypcPG15aG9zdG5hbWVcPi8vJyBcCisJCS1lICcvXmhvc3RzOi9zL1xzKm15aG9zdG5hbWUvLycgXAorCQktaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgorfQorCitQQUNLQUdFX1dSSVRFX0RFUFMgKz0gInFlbXUtbmF0aXZlIgorcGtnX3Bvc3RpbnN0X3VkZXYtaHdkYiAoKSB7CisJaWYgdGVzdCAtbiAiJEQiOyB0aGVuCisJCSRJTlRFUkNFUFRfRElSL3Bvc3RpbnN0X2ludGVyY2VwdCB1cGRhdGVfdWRldl9od2RiICR7UEtHfSBtbHByZWZpeD0ke01MUFJFRklYfSBiaW5wcmVmaXg9JHtNTFBSRUZJWH0gcm9vdGxpYmV4ZWNkaXI9IiR7cm9vdGxpYmV4ZWNkaXJ9IiBQUkVGRVJSRURfUFJPVklERVJfdWRldj0iJHtQUkVGRVJSRURfUFJPVklERVJfdWRldn0iCisJZWxzZQorCQl1ZGV2YWRtIGh3ZGIgLS11cGRhdGUKKwlmaQorfQorCitwa2dfcHJlcm1fdWRldi1od2RiICgpIHsKKwlybSAtZiAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC8wMDAxLVRoaXMtZml4ZXMtYW4taXNzdWUtdGhhdC1jbGFuZy1yZXBvcnRzLWFib3V0LW11dGxpcGwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LzAwMDEtVGhpcy1maXhlcy1hbi1pc3N1ZS10aGF0LWNsYW5nLXJlcG9ydHMtYWJvdXQtbXV0bGlwbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM1YzE1Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LzAwMDEtVGhpcy1maXhlcy1hbi1pc3N1ZS10aGF0LWNsYW5nLXJlcG9ydHMtYWJvdXQtbXV0bGlwbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLUZyb20gMzZhYzk3YmZlNTE3OTc0NTg0NDJhNjAzNTIxOWE1MDRhNDJlNzAzYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIxIEF1ZyAyMDE1IDEwOjU2OjQwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFRoaXMgZml4ZXMgYW4gaXNzdWUgdGhhdCBjbGFuZyByZXBvcnRzIGFib3V0IG11dGxpcGxlIG91dHB1dAotIGZpbGVzCi0KLUlzc3VlIGlzIHRoYXQgd2UgYXJlIHBhc3NpbmcgLmggZmlsZSB0byBsaW5rIHN0ZXAgYXMgc2VlbiBiZWxvdy4KLQotfCBhcm0tb2UtbGludXgtZ251ZWFiaS1jbGFuZyAgLW1hcmNoPWFybXY3LWEgLW10aHVtYiAgLW1mbG9hdC1hYmk9aGFyZAotLW1mcHU9bmVvbi12ZnB2NCAtbXR1bmU9Y29ydGV4LWE3IC1EX19leHRlcm5fYWx3YXlzX2lubGluZT1pbmxpbmUKLS1uby1pbnRlZ3JhdGVkLWFzCi0tLXN5c3Jvb3Q9L21udC9ob21lL2tyYWovd29yay9hbmdzdHJvbS9zb3VyY2VzL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1nbGliYy9zeXNyb290cy9yYXNwYmVycnlwaTIKLS1XbCwtTzEgLVdsLC0taGFzaC1zdHlsZT1nbnUgLVdsLC0tYXMtbmVlZGVkICBoYWx0Lm8gaWZkb3duLm8gaGRkb3duLm8KLXV0bXAubyByZWJvb3QuaCAgIC1vIGhhbHQKLXwgY2xhbmctMy43OiBlcnJvcjogY2Fubm90IHNwZWNpZnkgLW8gd2hlbiBnZW5lcmF0aW5nIG11bHRpcGxlIG91dHB1dAotZmlsZXMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvTWFrZWZpbGUgfCA2ICsrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUgYi9zcmMvTWFrZWZpbGUKLWluZGV4IGU3N2VkNWYuLmE2ZjlmNDAgMTAwNjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUKLSsrKyBiL3NyYy9NYWtlZmlsZQotQEAgLTEwMyw5ICsxMDMsOSBAQCBhbGw6CQkkKEJJTikgJChTQklOKSAkKFVTUkJJTikKLSBpbml0OgkJTERMSUJTICs9ICQoSU5JVExJQlMpICQoU1RBVElDKQotIGluaXQ6CQlpbml0Lm8gaW5pdF91dG1wLm8KLSAKLS1oYWx0OgkJaGFsdC5vIGlmZG93bi5vIGhkZG93bi5vIHV0bXAubyByZWJvb3QuaAotK2hhbHQ6CQloYWx0Lm8gaWZkb3duLm8gaGRkb3duLm8gdXRtcC5vCi0gCi0tbGFzdDoJCWxhc3QubyBvbGR1dG1wLmgKLStsYXN0OgkJbGFzdC5vCi0gCi0gbWVzZzoJCW1lc2cubwotIAotQEAgLTEyMCw3ICsxMjAsNyBAQCBzdWxvZ2luOglzdWxvZ2luLm8KLSAKLSB3YWxsOgkJZG93YWxsLm8gd2FsbC5vCi0gCi0tc2h1dGRvd246CWRvd2FsbC5vIHNodXRkb3duLm8gdXRtcC5vIHJlYm9vdC5oCi0rc2h1dGRvd246CWRvd2FsbC5vIHNodXRkb3duLm8gdXRtcC5vCi0gCi0gYm9vdGxvZ2Q6CUxETElCUyArPSAtbHV0aWwKLSBib290bG9nZDoJYm9vdGxvZ2QubwotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluZXMtaW4tZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW5lcy1pbi1nLnBhdGNoCmluZGV4IGUxM2FjOWQuLjYwZmJkODcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW5lcy1pbi1nLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW5lcy1pbi1nLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAzYzI5YTg2ZjM1MWVhNDgyN2RjNDQ1YmI4ZTZjYjc3NDU0M2M5YmU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjNzEwYTNhY2NkMWZhYmRiNjcxMjc0ZTFhNDU4NDA1MjgyZDUxZTBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgNiBBdWcgMjAxOCAxNTozODo1OCAtMDcwMAogU3ViamVjdDogW1BBVENIXSBpbmNsdWRlIHN5cy9zeXNtYWNyb3MuaCBmb3IgbWFqb3IvbWlub3IgZGVmaW5pdGlvbnMKQEAgLTEzLDEwICsxMywxMCBAQAogIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvYm9vdGxvZ2QuYyBiL3NyYy9ib290bG9nZC5jCi1pbmRleCA1NzBkMzgyLi42OGQ2MmYzIDEwMDY0NAoraW5kZXggNzg3ZGI4Ny4uOGIwNzkwMyAxMDA2NDQKIC0tLSBhL3NyYy9ib290bG9nZC5jCiArKysgYi9zcmMvYm9vdGxvZ2QuYwotQEAgLTM1LDYgKzM1LDcgQEAKK0BAIC0yOSw2ICsyOSw3IEBACiAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogICNpbmNsdWRlIDxzeXMvdGltZS5oPgogICNpbmNsdWRlIDxzeXMvc3RhdC5oPgpAQCAtMjUsNyArMjUsNyBAQAogICNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgogICNpbmNsdWRlIDx0aW1lLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL21vdW50cG9pbnQuYyBiL3NyYy9tb3VudHBvaW50LmMKLWluZGV4IDllM2RkOWMuLjkxZjc0ZWQgMTAwNjQ0CitpbmRleCA1ZjIwNTIyLi45NGRmN2ExIDEwMDY0NAogLS0tIGEvc3JjL21vdW50cG9pbnQuYwogKysrIGIvc3JjL21vdW50cG9pbnQuYwogQEAgLTI1LDYgKzI1LDcgQEAKQEAgLTM3LDcgKzM3LDcgQEAKICAjaW5jbHVkZSA8c3RkbGliLmg+CiAgI2luY2x1ZGUgPHN0cmluZy5oPgogZGlmZiAtLWdpdCBhL3NyYy9zaHV0ZG93bi5jIGIvc3JjL3NodXRkb3duLmMKLWluZGV4IDdlOTk3ZGEuLjE3ZGU1OGQgMTAwNjQ0CitpbmRleCBiNzQ0YTJjLi40MGI3ZmFmIDEwMDY0NAogLS0tIGEvc3JjL3NodXRkb3duLmMKICsrKyBiL3NyYy9zaHV0ZG93bi5jCiBAQCAtNDAsNiArNDAsNyBAQApAQCAtNDYsNSArNDYsNSBAQAogICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CiAgI2luY2x1ZGUgPHN5cy93YWl0Lmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2lmZGVmIF9fbGludXhfXworICNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+ICAgLyogYnJvdWdodCBpbiBteSBMRlMgcGF0Y2ggKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvY3J5cHQtbGliLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9jcnlwdC1saWIucGF0Y2gKaW5kZXggN2IzNDI5MC4uYmQ0NDQ0YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9jcnlwdC1saWIucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9jcnlwdC1saWIucGF0Y2gKQEAgLTEsMyArMSw4IEBACitGcm9tIDcyNzYyNzVkOWEwOGQ1YWUyNjhmYjI2MzAyN2JiYzYwYmMwYWIyZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZWZmIERpa2UgPGpkaWtlQHg4Nl82NC51c2VyLW1vZGUtbGludXgub3JnPgorRGF0ZTogV2VkLCAxNCBKdWwgMjAxMCAxNDozNTo1MiAtMDQwMAorU3ViamVjdDogW1BBVENIXSBzeXN2aW5pdCAtIFJlbW92ZSBzdWxvZ2luIGRlcGVuZGVuY3kgb24gL3Vzci9saWIqL2xpYmNyeXB0LmEKKwogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogCiAjIFRoZSBzcmMgTWFrZWZpbGUgd2FzIGNoZWNraW5nIGZvciBsaWJjcnlwdC5hIG9uIHRoZSBob3N0LCBub3QgaW4gdGhlCkBAIC01LDIxICsxMCwyNyBAQAogIyBhbmQgdXNlcyBpdCBpZiBpdCdzIHRoZXJlLgogIyAtIGpkaWtlQGxpbnV4LmludGVsLmNvbQogCi1JbmRleDogc3lzdmluaXQtMi44OGRzZi9zcmMvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzeXN2aW5pdC0yLjg4ZHNmLm9yaWcvc3JjL01ha2VmaWxlCi0rKysgc3lzdmluaXQtMi44OGRzZi9zcmMvTWFrZWZpbGUKLUBAIC04NSw5ICs4NSwxMyBAQCBlbHNlCistLS0KKyBzcmMvTWFrZWZpbGUgfCA5ICsrLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUgYi9zcmMvTWFrZWZpbGUKK2luZGV4IDEzODBkN2YuLjYyOGU3N2YgMTAwNjQ0CistLS0gYS9zcmMvTWFrZWZpbGUKKysrKyBiL3NyYy9NYWtlZmlsZQorQEAgLTk3LDEzICs5Nyw4IEBAIGVsc2UKICBlbmRpZgogIAogICMgQWRkaXRpb25hbCBsaWJzIGZvciBHTlUgbGliYy4KKy1pZm5lcSAoJCh3aWxkY2FyZCAvdXNyL2xpYiovbGliY3J5cHQuKiksKQorLSAgU1VMT0dJTkxJQlMJKz0gLWxjcnlwdAorLWVuZGlmCistCistIyBBZGRpdGlvbmFsIGxpYnMgZm9yIEdOVSBsaWJjIC8gbXVsdGlhcmNoIG9uIERlYmlhbiBiYXNlZCBzeXN0ZW1zLgorLWlmbmVxICgkKHdpbGRjYXJkIC91c3IvbGliLyovbGliY3J5cHQuKiksKQorLSAgU1VMT0dJTkxJQlMJKz0gLWxjcnlwdAogK2lmbmVxICgkKExDUllQVCksKQogKyAgU1VMT0dJTkxJQlMJKz0gJChMQ1JZUFQpCi0rZWxzZQotIGlmbmVxICgkKHdpbGRjYXJkIC91c3IvbGliKi9saWJjcnlwdC5hKSwpCi0gICBTVUxPR0lOTElCUwkrPSAtbGNyeXB0CiAgZW5kaWYKLStlbmRpZgogIAogIGFsbDoJCSQoQklOKSAkKFNCSU4pICQoVVNSQklOKQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9pbnN0YWxsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9pbnN0YWxsLnBhdGNoCmluZGV4IDZjNDIyNWEuLjI5MzBmYjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvaW5zdGFsbC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0L2luc3RhbGwucGF0Y2gKQEAgLTEsMTAgKzEsMTkgQEAKK0Zyb20gYjZjYzY2YWIyNDVjZWI2YmNhMDExNmRmZjdhNDFmNmQ3Njc3Yjk2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFFpbmcgSGUgPHFpbmcuaGVAaW50ZWwuY29tPgorRGF0ZTogRnJpLCAxOCBKdW4gMjAxMCAwOTo0MDozMCArMDgwMAorU3ViamVjdDogW1BBVENIXSBzeXN2aW5pdDogdXBncmFkZSB0byB2ZXJzaW9uIDIuODhkc2YKKwogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKKy0tLQorIHNyYy9NYWtlZmlsZSB8IDUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCisKIGRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUgYi9zcmMvTWFrZWZpbGUKLWluZGV4IGUyYjgwMjguLjNlMTFlOTIgMTAwNjQ0CitpbmRleCA5ZjlmMDllLi4xMzgwZDdmIDEwMDY0NAogLS0tIGEvc3JjL01ha2VmaWxlCiArKysgYi9zcmMvTWFrZWZpbGUKLUBAIC02NSw3ICs2NSwxNCBAQCBlbHNlCitAQCAtNzcsNyArNzcsMTQgQEAgZWxzZQogICAgSU5TVEFMTF9EQVRBCT0gaW5zdGFsbCAtbSA2NDQKICBlbmRpZgogIElOU1RBTExfRElSCT0gaW5zdGFsbCAtbSA3NTUgLWQKQEAgLTIwLDEwICsyOSwxMCBAQAogIAogIGlmZXEgKCQoV0lUSF9TRUxJTlVYKSx5ZXMpCiAgICBTRUxJTlVYX0RFRgk9ICAtRFdJVEhfU0VMSU5VWAotQEAgLTEzOCwzOSArMTQ1LDM5IEBAIGNsb2JiZXI6CWNsZWFub2JqcworQEAgLTE4OSw0MiArMTk2LDQyIEBAIGNsb2JiZXI6CWNsZWFub2JqcwogIGRpc3RjbGVhbjoJY2xvYmJlcgogIAotIGluc3RhbGw6CisgaW5zdGFsbDoJYWxsCiAtCQkkKElOU1RBTExfRElSKSAkKFJPT1QpL2Jpbi8gJChST09UKS9zYmluLwogLQkJJChJTlNUQUxMX0RJUikgJChST09UKS91c3IvYmluLwogKwkJJChJTlNUQUxMX0RJUikgJChST09UKSQoYmFzZV9iaW5kaXIpLyAkKFJPT1QpJChiYXNlX3NiaW5kaXIpLwpAQCAtNDAsMTYgKzQ5LDE0IEBACiAtCQkJJChJTlNUQUxMX0VYRUMpICQkaSAkKFJPT1QpL3Vzci9iaW4vIDsgXAogKwkJCSQoSU5TVEFMTF9FWEVDKSAkJGkgJChST09UKSQoYmluZGlyKS8gOyBcCiAgCQlkb25lCi0tCQkjICQoSU5TVEFMTF9ESVIpICQoUk9PVCkvZXRjLwotLQkJIyAkKElOU1RBTExfRVhFQykgaW5pdHNjcmlwdC5zYW1wbGUgJChST09UKS9ldGMvCisgCQkjICQoSU5TVEFMTF9ESVIpICQoUk9PVCkvZXRjLworIAkJIyAkKElOU1RBTExfRVhFQykgLi4vZG9jL2luaXRzY3JpcHQuc2FtcGxlICQoUk9PVCkvZXRjLwogLQkJbG4gLXNmIGhhbHQgJChST09UKS9zYmluL3JlYm9vdAogLQkJbG4gLXNmIGhhbHQgJChST09UKS9zYmluL3Bvd2Vyb2ZmCiAtCQlsbiAtc2YgaW5pdCAkKFJPT1QpL3NiaW4vdGVsaW5pdAogLQkJbG4gLXNmIC9zYmluL2tpbGxhbGw1ICQoUk9PVCkvYmluL3BpZG9mCiAtCQlpZiBbICEgLWYgJChST09UKS91c3IvYmluL2xhc3RiIF07IHRoZW4gXAogLQkJCWxuIC1zZiBsYXN0ICQoUk9PVCkvdXNyL2Jpbi9sYXN0YjsgXAotKwkJIyAkKElOU1RBTExfRElSKSAkKFJPT1QpJChzeXNjb25mZGlyKS8KLSsJCSMgJChJTlNUQUxMX0VYRUMpIGluaXRzY3JpcHQuc2FtcGxlICQoUk9PVCkkKHN5c2NvbmZkaXIpLwogKwkJbG4gLXNmIGhhbHQgJChST09UKSQoYmFzZV9zYmluZGlyKS9yZWJvb3QKICsJCWxuIC1zZiBoYWx0ICQoUk9PVCkkKGJhc2Vfc2JpbmRpcikvcG93ZXJvZmYKICsJCWxuIC1zZiBpbml0ICQoUk9PVCkkKGJhc2Vfc2JpbmRpcikvdGVsaW5pdApAQCAtNjcsMTcgKzc0LDIzIEBACiArCQkkKElOU1RBTExfRElSKSAkKFJPT1QpJChtYW5kaXIpL21hbjEvCiArCQkkKElOU1RBTExfRElSKSAkKFJPT1QpJChtYW5kaXIpL21hbjUvCiArCQkkKElOU1RBTExfRElSKSAkKFJPT1QpJChtYW5kaXIpL21hbjgvCi0gCQlmb3IgaSBpbiAkKE1BTjEpOyBkbyBcCi0tCQkJJChJTlNUQUxMX0RBVEEpIC4uL21hbi8kJGkgJChST09UKSQoTUFORElSKS9tYW4xLzsgXAotKwkJCSQoSU5TVEFMTF9EQVRBKSAuLi9tYW4vJCRpICQoUk9PVCkkKG1hbmRpcikvbWFuMS87IFwKKyAJCWZvciBtYW4gaW4gJChNQU4xKTsgZG8gXAorLQkJCSQoSU5TVEFMTF9EQVRBKSAuLi9tYW4vJCRtYW4gJChST09UKSQoTUFORElSKS9tYW4xLzsgXAorLQkJCXNlZCAtaSAiMXsgJChNQU5EQik7IH0iICQoUk9PVCkkKE1BTkRJUikvbWFuMS8kJG1hbiA7IFwKKysJCQkkKElOU1RBTExfREFUQSkgLi4vbWFuLyQkbWFuICQoUk9PVCkkKG1hbmRpcikvbWFuMS87IFwKKysJCQlzZWQgLWkgIjF7ICQoTUFOREIpOyB9IiAkKFJPT1QpJChtYW5kaXIpL21hbjEvJCRtYW4gOyBcCiAgCQlkb25lCi0gCQlmb3IgaSBpbiAkKE1BTjUpOyBkbyBcCi0tCQkJJChJTlNUQUxMX0RBVEEpIC4uL21hbi8kJGkgJChST09UKSQoTUFORElSKS9tYW41LzsgXAotKwkJCSQoSU5TVEFMTF9EQVRBKSAuLi9tYW4vJCRpICQoUk9PVCkkKG1hbmRpcikvbWFuNS87IFwKKyAJCWZvciBtYW4gaW4gJChNQU41KTsgZG8gXAorLQkJCSQoSU5TVEFMTF9EQVRBKSAuLi9tYW4vJCRtYW4gJChST09UKSQoTUFORElSKS9tYW41LzsgXAorLQkJCXNlZCAtaSAiMXsgJChNQU5EQik7IH0iICQoUk9PVCkkKE1BTkRJUikvbWFuNS8kJG1hbiA7IFwKKysJCQkkKElOU1RBTExfREFUQSkgLi4vbWFuLyQkbWFuICQoUk9PVCkkKG1hbmRpcikvbWFuNS87IFwKKysJCQlzZWQgLWkgIjF7ICQoTUFOREIpOyB9IiAkKFJPT1QpJChtYW5kaXIpL21hbjUvJCRtYW4gOyBcCiAgCQlkb25lCi0gCQlmb3IgaSBpbiAkKE1BTjgpOyBkbyBcCi0tCQkJJChJTlNUQUxMX0RBVEEpIC4uL21hbi8kJGkgJChST09UKSQoTUFORElSKS9tYW44LzsgXAotKwkJCSQoSU5TVEFMTF9EQVRBKSAuLi9tYW4vJCRpICQoUk9PVCkkKG1hbmRpcikvbWFuOC87IFwKKyAJCWZvciBtYW4gaW4gJChNQU44KTsgZG8gXAorLQkJCSQoSU5TVEFMTF9EQVRBKSAuLi9tYW4vJCRtYW4gJChST09UKSQoTUFORElSKS9tYW44LzsgXAorLQkJCXNlZCAtaSAiMXsgJChNQU5EQik7IH0iICQoUk9PVCkkKE1BTkRJUikvbWFuOC8kJG1hbiA7IFwKKysJCQkkKElOU1RBTExfREFUQSkgLi4vbWFuLyQkbWFuICQoUk9PVCkkKG1hbmRpcikvbWFuOC87IFwKKysJCQlzZWQgLWkgIjF7ICQoTUFOREIpOyB9IiAkKFJPT1QpJChtYW5kaXIpL21hbjgvJCRtYW4gOyBcCiAgCQlkb25lCiAgaWZlcSAoJChST09UKSwpCiAgCQkjCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0L3BpZG9mLWFkZC1tLW9wdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvcGlkb2YtYWRkLW0tb3B0aW9uLnBhdGNoCmluZGV4IDViNWRmZGMuLjQ5NGFhMGUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvcGlkb2YtYWRkLW0tb3B0aW9uLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvcGlkb2YtYWRkLW0tb3B0aW9uLnBhdGNoCkBAIC0xLDQgKzEsNyBAQAotcGlkb2Y6IGFkZCAtbSBvcHRpb24KK0Zyb20gNmM0OTBlYTY1NzlhMTMyZmFiYjdkYmQyNTM4N2JiNTIxZjgyMDM3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjQgSnVsIDIwMTMgMTc6MDc6MjIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gcGlkb2Y6IGFkZCAtbSBvcHRpb24KIAogV2hlbiB1c2VkIHdpdGggLW8sIHdpbGwgYWxzbyBvbWl0IGFueSBwcm9jZXNzZXMgdGhhdCBoYXZlIHRoZSBzYW1lCiBhcmd2WzBdIGFuZCBhcmd2WzFdIGFzIGFueSBleHBsaWNpdGx5IG9taXR0ZWQgcHJvY2VzcyBpZHMuIFRoaXMgY2FuIGJlCkBAIC0xMSwyMyArMTQsMjUgQEAKIEltcG9ydGVkIHBhdGNoIGZyb206IGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9hdHRhY2htZW50LmNnaT9pZD02NTgxNjYKIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCiAtLS0KLSBtYW4vcGlkb2YuOCAgICB8ICA2ICsrKysrKwotIHNyYy9raWxsYWxsNS5jIHwgNjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQorIG1hbi9waWRvZi44ICAgIHwgIDYgKysrKysKKyBzcmMva2lsbGFsbDUuYyB8IDYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCiAgMiBmaWxlcyBjaGFuZ2VkLCA2NSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbWFuL3BpZG9mLjggYi9tYW4vcGlkb2YuOAoraW5kZXggZWJlNWY1NS4uMmZkYzRkMyAxMDA2NDQKIC0tLSBhL21hbi9waWRvZi44CiArKysgYi9tYW4vcGlkb2YuOAotQEAgLTI0LDYgKzI0LDcgQEAgcGlkb2YgLS0gZmluZCB0aGUgcHJvY2VzcyBJRCBvZiBhIHJ1bm5pbmcgcHJvZ3JhbS4KLSAuUkIgWyBcLWMgXQorQEAgLTI1LDYgKzI1LDcgQEAgcGlkb2YgLS0gZmluZCB0aGUgcHJvY2VzcyBJRCBvZiBhIHJ1bm5pbmcgcHJvZ3JhbS4KICAuUkIgWyBcLW4gXQogIC5SQiBbIFwteCBdCisgLlJCIFsgXC16IF0KICsuUkIgWyBcLW0gXQogIC5SQiBbIFwtbwotIC5JUiBvbWl0cGlkWyxvbWl0cGlkLi5dIF0KKyAuSVIgb21pdHBpZFssb21pdHBpZC4uLl0gXQogIC5SQiBbIFwtbwotQEAgLTYzLDYgKzY0LDExIEBAIHNoZWxscyBydW5uaW5nIHRoZSBuYW1lZCBzY3JpcHRzLgorQEAgLTc2LDYgKzc3LDExIEBAIGlzIHNob3duLiBUaGUgZGVmYXVsdCBzZXBhcmF0b3IgaXMgYSBzcGFjZS4KICBUZWxscyBcZklwaWRvZlxmUCB0byBvbWl0IHByb2Nlc3NlcyB3aXRoIHRoYXQgcHJvY2VzcyBpZC4gVGhlIHNwZWNpYWwKICBwaWQgXGZCJVBQSURcZlAgY2FuIGJlIHVzZWQgdG8gbmFtZSB0aGUgcGFyZW50IHByb2Nlc3Mgb2YgdGhlIFxmSXBpZG9mXGZQCiAgcHJvZ3JhbSwgaW4gb3RoZXIgd29yZHMgdGhlIGNhbGxpbmcgc2hlbGwgb3Igc2hlbGwgc2NyaXB0LgpAQCAtNDAsMTAgKzQ1LDEwIEBACiAgLlRQCiAgLkIgMAogZGlmZiAtLWdpdCBhL3NyYy9raWxsYWxsNS5jIGIvc3JjL2tpbGxhbGw1LmMKLWluZGV4IDU5MzdkOTguLmU3Mzg4NWUgMTAwNjQ0CitpbmRleCA4YjVjYjM4Li5hNjY0OTU0IDEwMDY0NAogLS0tIGEvc3JjL2tpbGxhbGw1LmMKICsrKyBiL3NyYy9raWxsYWxsNS5jCi1AQCAtMTE4LDYgKzExOCw3IEBAIHR5cGVkZWYgc3RydWN0IF9zX25mcworQEAgLTEyNiw2ICsxMjYsNyBAQCB0eXBlZGVmIHN0cnVjdCBfc19uZnMKICAKICAvKiBMaXN0IG9mIHByb2Nlc3Nlcy4gKi8KICBQUk9DICpwbGlzdDsKQEAgLTUxLDcgKzU2LDcgQEAKICAKICAvKiBMaXN0IG9mIHByb2Nlc3NlcyB0byBvbWl0LiAqLwogIE9NSVQgKm9taXQ7Ci1AQCAtMzQ1LDYgKzM0NiwyMCBAQCBzdGF0aWMgdm9pZCBjbGVhcl9tbnQodm9pZCkKK0BAIC0zNjEsNiArMzYyLDIwIEBAIHN0YXRpYyB2b2lkIGNsZWFyX21udCh2b2lkKQogIAl9CiAgfQogIApAQCAtNzAsOSArNzUsOSBAQAogK30KICsKICAvKgotICAqICAgICBDaGVjayBpZiBwYXRoIGlzIGlhIHNoYWRvdyBvZmYgYSBORlMgcGFydGl0aW9uLgorICAqICAgICBDaGVjayBpZiBwYXRoIGlzIGEgc2hhZG93IG9mZiBhIE5GUyBwYXJ0aXRpb24uCiAgICovCi1AQCAtNDUyLDYgKzQ2Nyw3IEBAIGludCByZWFkcHJvYyhpbnQgZG9fc3RhdCkKK0BAIC00ODYsNiArNTAxLDcgQEAgaW50IHJlYWRwcm9jKGludCBkb19zdGF0KQogIAlESVIJCSpkaXI7CiAgCUZJTEUJCSpmcDsKICAJUFJPQwkJKnAsICpuOwpAQCAtODAsNyArODUsNyBAQAogIAlzdHJ1Y3QgZGlyZW50CSpkOwogIAlzdHJ1Y3Qgc3RhdAlzdDsKICAJY2hhcgkJcGF0aFtQQVRIX01BWCsxXTsKLUBAIC02MjQsNiArNjQwLDE3IEBAIGludCByZWFkcHJvYyhpbnQgZG9fc3RhdCkKK0BAIC03MzMsNiArNzQ5LDE3IEBAIGludCByZWFkcHJvYyhpbnQgZG9fc3RhdCkKICAJCXAtPm5leHQgPSBwbGlzdDsKICAJCXBsaXN0ID0gcDsKICAJCXAtPnBpZCA9IHBpZDsKQEAgLTk4LDcgKzEwMyw3IEBACiAgCX0KICAJY2xvc2VkaXIoZGlyKTsKICAKLUBAIC04MTMsNiArODQwLDI2IEBAIFBJRFFfSEVBRCAqcGlkb2YoY2hhciAqcHJvZykKK0BAIC05NDQsNiArOTcxLDI2IEBAIFBJRFFfSEVBRCAqcGlkb2YoY2hhciAqcHJvZykKICAJcmV0dXJuIHE7CiAgfQogIApAQCAtMTI1LDQyICsxMzAsNDIgQEAKICAvKiBHaXZlIHVzYWdlIG1lc3NhZ2UgYW5kIGV4aXQuICovCiAgdm9pZCB1c2FnZSh2b2lkKQogIHsKLUBAIC04NDUsNiArODkyLDcgQEAgdm9pZCBuc3lzbG9nKGludCBwcmksIGNoYXIgKmZtdCwgLi4uKQotICNkZWZpbmUgUElET0ZfU0lOR0xFCTB4MDEKK0BAIC05OTQsNiArMTA0MSw3IEBAIHZvaWQgbnN5c2xvZyhpbnQgcHJpLCBjaGFyICpmbXQsIC4uLikKICAjZGVmaW5lIFBJRE9GX09NSVQJMHgwMgogICNkZWZpbmUgUElET0ZfTkVURlMJMHgwNAorICNkZWZpbmUgUElET0ZfUVVJRVQgICAgIDB4MDgKICsjZGVmaW5lIFBJRE9GX09NSVRfT01JVF9NQVRDSEVTCTB4MDgKICAKICAvKgogICAqCVBpZG9mIGZ1bmN0aW9uYWxpdHkuCi1AQCAtODYxLDYgKzkwOSw3IEBAIGludCBtYWluX3BpZG9mKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJc3RydWN0IHN0YXQJc3Q7CitAQCAtMTAxMSw2ICsxMDU5LDcgQEAgaW50IG1haW5fcGlkb2YoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAljaGFyCQl0bXBbNTEyXTsKKyAgICAgICAgIGNoYXIgICAgICAgICAgICBzZXAgPSAnICc7CiAgCiArCW9saXN0ID0gKFBST0MqKTA7CiAgCW9taXQgPSAoT01JVCopMDsKICAJbmxpc3QgPSAoTkZTKikwOwogIAlvcHRlcnIgPSAwOwotQEAgLTg2OCw3ICs5MTcsNyBAQCBpbnQgbWFpbl9waWRvZihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitAQCAtMTAxOCw3ICsxMDY3LDcgQEAgaW50IG1haW5fcGlkb2YoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAlpZiAoKHRva2VuID0gZ2V0ZW52KCJQSURPRl9ORVRGUyIpKSAmJiAoc3RyY21wKHRva2VuLCJubyIpICE9IDApKQogIAkJZmxhZ3MgfD0gUElET0ZfTkVURlM7CiAgCi0tCXdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsYXJndiwiaGNvOnN4biIpKSAhPSBFT0YpIHN3aXRjaCAob3B0KSB7Ci0rCXdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsYXJndiwiaGNtbzpzeG4iKSkgIT0gRU9GKSBzd2l0Y2ggKG9wdCkgeworLQl3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLGFyZ3YsInFoY286ZDpzeHpuIikpICE9IEVPRikgc3dpdGNoIChvcHQpIHsKKysJd2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYyxhcmd2LCJxaGNtbzpkOnN4em4iKSkgIT0gRU9GKSBzd2l0Y2ggKG9wdCkgewogIAkJY2FzZSAnPyc6CiAgCQkJbnN5c2xvZyhMT0dfRVJSLCJpbnZhbGlkIG9wdGlvbnMgb24gY29tbWFuZCBsaW5lIVxuIik7CiAgCQkJY2xvc2Vsb2coKTsKLUBAIC05MDcsNiArOTU2LDkgQEAgaW50IG1haW5fcGlkb2YoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJY2FzZSAneCc6Ci0gCQkJc2NyaXB0c190b28rKzsKLSAJCQlicmVhazsKK0BAIC0xMDY5LDYgKzExMTgsOSBAQCBpbnQgbWFpbl9waWRvZihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgICAgICAgICAgICAgIGNhc2UgJ3onOgorICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfZHpfcHJvY2Vzc2VzID0gVFJVRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICsJCWNhc2UgJ20nOgogKwkJCWZsYWdzIHw9IFBJRE9GX09NSVRfT01JVF9NQVRDSEVTOwogKwkJCWJyZWFrOwogIAkJY2FzZSAnbic6CiAgCQkJZmxhZ3MgfD0gUElET0ZfTkVURlM7CiAgCQkJYnJlYWs7Ci1AQCAtOTM4LDEwICs5OTAsMTMgQEAgaW50IG1haW5fcGlkb2YoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorQEAgLTExMDAsMTAgKzExNTIsMTMgQEAgaW50IG1haW5fcGlkb2YoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAkJCXBpZF90IHNwaWQgPSAwOwogIAkJCXdoaWxlICgocCA9IGdldF9uZXh0X2Zyb21fcGlkX3EocSkpKSB7CiAgCQkJCWlmICgoZmxhZ3MgJiBQSURPRl9PTUlUKSAmJiBvbWl0KSB7CkBAIC0xNzYsMTQgKzE4MSwxMSBAQAogIAkJCQkJfQogIAogIAkJCQkJLyoKLUBAIC05NzcsNiArMTAzMiw3IEBAIGludCBtYWluX3BpZG9mKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJaWYgKCFmaXJzdCkKK0BAIC0xMTQ1LDYgKzEyMDAsNyBAQCBpbnQgbWFpbl9waWRvZihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgCQlwcmludGYoIlxuIik7CisgICAgICAgICB9CiAgCiArCWNsZWFyX29taXQoKTsKICAJY2xlYXJfbW50KCk7CiAgCiAgCWNsb3NlbG9nKCk7Ci0tLSAKLTEuOC4xLjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9yZWFscGF0aC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvcmVhbHBhdGgucGF0Y2gKaW5kZXggNWUwZGNhMy4uODU5ZmQ4YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9yZWFscGF0aC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0L3JlYWxwYXRoLnBhdGNoCkBAIC0xLDQgKzEsOCBAQAotRml4IGJ1aWxkIG9uIG11c2wgdXNlIHJlYWxwYXRoKCkgQVBJIGl0cyBhdmFpbGFibGUgb24gYWxsIGxpYmNzCitGcm9tIGViMTU4Yzk3ZjE5ZDQ3M2QwMWJlZmU5NjM1OWE3ZjkzYWU4MzQ1MTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxOSBOb3YgMjAxNSAwMDoxMDowMyArMDAwMAorU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgb24gbXVzbCB1c2UgcmVhbHBhdGgoKSBBUEkgaXRzIGF2YWlsYWJsZSBvbiBhbGwKKyBsaWJjcwogCiByZWFscGF0aCgpIEFQSSBkb2VzbnQgd29yayBvbiBzeXN0ZW1zIHdpdGggUEFUSF9NQVggc2V0IHRvIGJlIHVubGltaXRlZCBlLmcuIEdOVS9IdXJkCiBIb3dldmVyIGZvciBMaW51eCBpdCBzaG91bGQgYWx3YXlzIHdvcmsKQEAgLTcsNTIgKzExLDE3IEBACiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAKLUluZGV4OiBzeXN2aW5pdC0yLjg4ZHNmL3NyYy9pZmRvd24uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN5c3Zpbml0LTIuODhkc2Yub3JpZy9zcmMvaWZkb3duLmMJMjAxMC0wMy0yMyAwNzozNzowMS4wMDAwMDAwMDAgLTA3MDAKLSsrKyBzeXN2aW5pdC0yLjg4ZHNmL3NyYy9pZmRvd24uYwkyMDE0LTA0LTAyIDAwOjQzOjQzLjY3NTQzNzAyOSAtMDcwMAotQEAgLTI2LDExICsyNiwxMSBAQAotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8dGltZS5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSAKLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KLS0jaW5jbHVkZSA8c3lzL2Vycm5vLmg+Ci0gCi0gI2luY2x1ZGUgPG5ldC9pZi5oPgotICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci1JbmRleDogc3lzdmluaXQtMi44OGRzZi9zcmMvaW5pdC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3lzdmluaXQtMi44OGRzZi5vcmlnL3NyYy9pbml0LmMJMjAxNC0wNC0wMiAwMDo0MjoxMC40ODg3NzAxNjIgLTA3MDAKLSsrKyBzeXN2aW5pdC0yLjg4ZHNmL3NyYy9pbml0LmMJMjAxNC0wNC0wMiAwMDo0Mjo1OS40MzIxMDM4MjMgLTA3MDAKLUBAIC00OSw2ICs0OSw3IEBACi0gI2luY2x1ZGUgPHV0bXAuaD4KLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0rI2luY2x1ZGUgPHN5cy90dHlkZWZhdWx0cy5oPgotICNpbmNsdWRlIDxzeXMvc3lzbG9nLmg+Ci0gI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0gCi1JbmRleDogc3lzdmluaXQtMi44OGRzZi9zcmMvbW91bnRwb2ludC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3lzdmluaXQtMi44OGRzZi5vcmlnL3NyYy9tb3VudHBvaW50LmMJMjAwOS0wOS0xMCAwMToyODo0OS4wMDAwMDAwMDAgLTA3MDAKLSsrKyBzeXN2aW5pdC0yLjg4ZHNmL3NyYy9tb3VudHBvaW50LmMJMjAxNC0wNC0wMiAwMDo0NDoxOC4yNDg3NzA5NDIgLTA3MDAKLUBAIC0yMyw2ICsyMyw3IEBACi0gICoJCUZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKLSAgKi8KLSAKLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLUluZGV4OiBzeXN2aW5pdC0yLjg4ZHNmL3NyYy9raWxsYWxsNS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3lzdmluaXQtMi44OGRzZi5vcmlnL3NyYy9raWxsYWxsNS5jCTIwMTQtMDMtMjYgMDA6NDk6NTIuOTgyNjY4MDc0IC0wNzAwCi0rKysgc3lzdmluaXQtMi44OGRzZi9zcmMva2lsbGFsbDUuYwkyMDE0LTA0LTAyIDAwOjQ2OjQ1LjgzODc3MTY1MyAtMDcwMAotQEAgLTg0Niw5ICs4NDYsOSBAQAorLS0tCisgc3JjL2tpbGxhbGw1LmMgICB8IDQgKystLQorIHNyYy9tb3VudHBvaW50LmMgfCAxICsKKyBzcmMvd2FsbC5jICAgICAgIHwgMSArCisgMyBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMva2lsbGFsbDUuYyBiL3NyYy9raWxsYWxsNS5jCitpbmRleCBhNjY0OTU0Li45Nzk4NDIzIDEwMDY0NAorLS0tIGEvc3JjL2tpbGxhbGw1LmMKKysrKyBiL3NyYy9raWxsYWxsNS5jCitAQCAtOTc3LDkgKzk3Nyw5IEBAIGludCBtYXRjaGVzKFBST0MgKm8sIFBST0MgKnApCiAgCWNoYXIgKm9hcmd2MSwgKnBhcmd2MTsKICAJaWYgKChvLT5hcmd2MCAmJiBwLT5hcmd2MCAmJiAhc3RyY21wKG8tPmFyZ3YwLHAtPmFyZ3YwKSkpIHsKICAJCWlmIChvLT5hcmd2MSAmJiBwLT5hcmd2MSkgewpAQCAtNjQsMTQgKzMzLDI2IEBACiAgCQkJCXBhcmd2MSA9IHN0cmR1cChwLT5hcmd2MSk7CiAgCQkJaWYgKCEgc3RyY21wKG9hcmd2MSwgcGFyZ3YxKSkgewogIAkJCQlyZXQgPSAxOwotSW5kZXg6IHN5c3Zpbml0LTIuODhkc2Yvc3JjL3dhbGwuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN5c3Zpbml0LTIuODhkc2Yub3JpZy9zcmMvd2FsbC5jCTIwMDktMTEtMjIgMTQ6MDU6NTMuMDAwMDAwMDAwIC0wODAwCi0rKysgc3lzdmluaXQtMi44OGRzZi9zcmMvd2FsbC5jCTIwMTQtMDQtMDIgMDA6NDk6MTUuMjU4NzcyMjE3IC0wNzAwCi1AQCAtMjksNiArMjksNyBAQAorZGlmZiAtLWdpdCBhL3NyYy9tb3VudHBvaW50LmMgYi9zcmMvbW91bnRwb2ludC5jCitpbmRleCBiMjQzMzVlLi41ZjIwNTIyIDEwMDY0NAorLS0tIGEvc3JjL21vdW50cG9pbnQuYworKysrIGIvc3JjL21vdW50cG9pbnQuYworQEAgLTIzLDYgKzIzLDcgQEAKKyAgKgkJRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICAqLworIAorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorZGlmZiAtLWdpdCBhL3NyYy93YWxsLmMgYi9zcmMvd2FsbC5jCitpbmRleCBkM2EyYzcwLi4wMDgyNmU5IDEwMDY0NAorLS0tIGEvc3JjL3dhbGwuYworKysrIGIvc3JjL3dhbGwuYworQEAgLTMwLDYgKzMwLDcgQEAKICAjaW5jbHVkZSA8cHdkLmg+CiAgI2luY2x1ZGUgPHN5c2xvZy5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICsjaW5jbHVkZSA8dGltZS5oPgogICNpbmNsdWRlICJpbml0LmgiCiAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuODhkc2YuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuODhkc2YuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmZDZkZjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdF8yLjg4ZHNmLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLVNVTU1BUlkgPSAiU3lzdGVtLVYgbGlrZSBpbml0IgotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGlzIHJlcXVpcmVkIHRvIGJvb3QgaW4gbW9zdCBjb25maWd1cmF0aW9ucy4gIEl0IHByb3ZpZGVzIHRoZSAvc2Jpbi9pbml0IHByb2dyYW0uICBUaGlzIGlzIHRoZSBmaXJzdCBwcm9jZXNzIHN0YXJ0ZWQgb24gYm9vdCwgYW5kIHRoZSBsYXN0IHByb2Nlc3MgdGVybWluYXRlZCBiZWZvcmUgdGhlIHN5c3RlbSBoYWx0cy4iCi1IT01FUEFHRSA9ICJodHRwOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9wcm9qZWN0cy9zeXN2aW5pdC8iCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlSSUdIVDtlbmRsaW5lPTE1O21kNT0zNDljODcyZTAwNjYxNTVlMTgxOGI3ODY5Mzg4NzZhNCIKLVBSID0gInIxNCIKLQotUkRFUEVORFNfJHtQTn0gPSAiJHtQTn0taW5pdHRhYiIKLQotU1JDX1VSSSA9ICIke1NBVkFOTkFIX0dOVV9NSVJST1J9L3N5c3Zpbml0L3N5c3Zpbml0LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vaW5zdGFsbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jcnlwdC1saWIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcGlkb2YtYWRkLW0tb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVGhpcy1maXhlcy1hbi1pc3N1ZS10aGF0LWNsYW5nLXJlcG9ydHMtYWJvdXQtbXV0bGlwbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZWFscGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbmVzLWluLWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmNTLWRlZmF1bHQgXAotICAgICAgICAgICBmaWxlOi8vcmMgXAotICAgICAgICAgICBmaWxlOi8vcmNTIFwKLSAgICAgICAgICAgZmlsZTovL2Jvb3Rsb2dkLmluaXQgXAotICAgICAgICAgICBmaWxlOi8vMDFfYm9vdGxvZ2QgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmVkYThhOTdiODZlMGE2ZjU5ZGFiYmYyNTIwMmFhNmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjBiYmM4YzFlMTc5MjA1NmUyMzc2MWQyMjk2MGIzMGJiMTNlY2NjMmNhYmZmOGM3MzEwYTAxZjRkNWRmMTUxOSIKLQotUyA9ICIke1dPUktESVJ9L3N5c3Zpbml0LSR7UFZ9IgotQiA9ICIke1N9L3NyYyIKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzIGZlYXR1cmVzX2NoZWNrCi1ERVBFTkRTX2FwcGVuZCA9ICIgdXBkYXRlLXJjLmQtbmF0aXZlIGJhc2UtcGFzc3dkIHZpcnR1YWwvY3J5cHQiCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN2aW5pdCIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiaW5pdCBtb3VudHBvaW50IGhhbHQgcmVib290IHJ1bmxldmVsIHNodXRkb3duIHBvd2Vyb2ZmIGxhc3QgbGFzdGIgbWVzZyB1dG1wZHVtcCB3YWxsIgotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIyMDAiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtpbml0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaW5pdCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW2luaXRdID0gIjUwIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbW91bnRwb2ludF0gPSAiJHtiYXNlX2JpbmRpcn0vbW91bnRwb2ludCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW21vdW50cG9pbnRdID0gIjIwIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbaGFsdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2hhbHQiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcmVib290XSA9ICIke2Jhc2Vfc2JpbmRpcn0vcmVib290IgotQUxURVJOQVRJVkVfTElOS19OQU1FW3J1bmxldmVsXSA9ICIke2Jhc2Vfc2JpbmRpcn0vcnVubGV2ZWwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc2h1dGRvd25dID0gIiR7YmFzZV9zYmluZGlyfS9zaHV0ZG93biIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtwb3dlcm9mZl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3Bvd2Vyb2ZmIgotCi1BTFRFUk5BVElWRV8ke1BOfS1waWRvZiA9ICJwaWRvZiIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtwaWRvZl0gPSAiJHtiYXNlX2JpbmRpcn0vcGlkb2YiCi0KLUFMVEVSTkFUSVZFXyR7UE59LXN1bG9naW4gPSAic3Vsb2dpbiIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzdWxvZ2luXSA9ICIke2Jhc2Vfc2JpbmRpcn0vc3Vsb2dpbiIKLQotQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gIm1vdW50cG9pbnQuMSBsYXN0LjEgbGFzdGIuMSBtZXNnLjEgd2FsbC4xIHN1bG9naW4uOCB1dG1wZHVtcC4xIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbGFzdC4xXSA9ICIke21hbmRpcn0vbWFuMS9sYXN0LjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbGFzdGIuMV0gPSAiJHttYW5kaXJ9L21hbjEvbGFzdGIuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVttZXNnLjFdID0gIiR7bWFuZGlyfS9tYW4xL21lc2cuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVttb3VudHBvaW50LjFdID0gIiR7bWFuZGlyfS9tYW4xL21vdW50cG9pbnQuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzdWxvZ2luLjhdID0gIiR7bWFuZGlyfS9tYW44L3N1bG9naW4uOCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt1dG1wZHVtcC4xXSA9ICIke21hbmRpcn0vbWFuMS91dG1wZHVtcC4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3dhbGwuMV0gPSAiJHttYW5kaXJ9L21hbjEvd2FsbC4xIgotCi1QQUNLQUdFUyA9KyAic3lzdmluaXQtcGlkb2Ygc3lzdmluaXQtc3Vsb2dpbiIKLUZJTEVTXyR7UE59ICs9ICIke2Jhc2Vfc2JpbmRpcn0vKiAke2Jhc2VfYmluZGlyfS8qIgotRklMRVNfc3lzdmluaXQtcGlkb2YgPSAiJHtiYXNlX2JpbmRpcn0vcGlkb2Yuc3lzdmluaXQgJHtiYXNlX3NiaW5kaXJ9L2tpbGxhbGw1IgotRklMRVNfc3lzdmluaXQtc3Vsb2dpbiA9ICIke2Jhc2Vfc2JpbmRpcn0vc3Vsb2dpbi5zeXN2aW5pdCIKLQotUkRFUEVORFNfJHtQTn0gKz0gInN5c3Zpbml0LXBpZG9mIGluaXRkLWZ1bmN0aW9ucyIKLQotQ0ZMQUdTX3ByZXBlbmQgPSAiLURfR05VX1NPVVJDRSAiCi1leHBvcnQgTENSWVBUID0gIi1sY3J5cHQiCi1FWFRSQV9PRU1BS0UgKz0gIidiYXNlX2JpbmRpcj0ke2Jhc2VfYmluZGlyfScgXAotCQkgJ2Jhc2Vfc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0nIFwKLQkJICdiaW5kaXI9JHtiaW5kaXJ9JyBcCi0JCSAnc2JpbmRpcj0ke3NiaW5kaXJ9JyBcCi0JCSAnc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9JyBcCi0JCSAnaW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9JyBcCi0JCSAnbWFuZGlyPSR7bWFuZGlyfSciCi0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgJ1JPT1Q9JHtEfScgaW5zdGFsbAotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfSBcCi0JCSAgICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQgXAotCQkgICAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlmb3IgbGV2ZWwgaW4gUyAwIDEgMiAzIDQgNSA2OyBkbwotCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3JjJGxldmVsLmQKLQlkb25lCi0KLQlpbnN0YWxsIC1tIDA2NDQgICAgJHtXT1JLRElSfS9yY1MtZGVmYXVsdAkke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3JjUwotCWluc3RhbGwgLW0gMDc1NSAgICAke1dPUktESVJ9L3JjCQkke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlpbnN0YWxsIC1tIDA3NTUgICAgJHtXT1JLRElSfS9yY1MJCSR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW0gMDc1NSAgICAke1dPUktESVJ9L2Jvb3Rsb2dkLmluaXQgICAgICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9ib290bG9nZAotCWxuIC1zZiBib290bG9nZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3RvcC1ib290bG9nZAotCi0JdXBkYXRlLXJjLmQgLXIgJHtEfSBib290bG9nZCBzdGFydCAwNyBTIC4KLQl1cGRhdGUtcmMuZCAtciAke0R9IHN0b3AtYm9vdGxvZ2Qgc3RhcnQgOTkgMiAzIDQgNSAuCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vMDFfYm9vdGxvZ2QgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLQotCWNob3duIHJvb3Q6c2h1dGRvd24gJHtEfSR7YmFzZV9zYmluZGlyfS9oYWx0ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24KLQljaG1vZCBvLXgsdStzICR7RH0ke2Jhc2Vfc2JpbmRpcn0vaGFsdCAke0R9JHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuOTYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuOTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJiODVlZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXRfMi45Ni5iYgpAQCAtMCwwICsxLDExNCBAQAorU1VNTUFSWSA9ICJTeXN0ZW0tViBsaWtlIGluaXQiCitERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgaXMgcmVxdWlyZWQgdG8gYm9vdCBpbiBtb3N0IGNvbmZpZ3VyYXRpb25zLiAgSXQgcHJvdmlkZXMgdGhlIC9zYmluL2luaXQgcHJvZ3JhbS4gIFRoaXMgaXMgdGhlIGZpcnN0IHByb2Nlc3Mgc3RhcnRlZCBvbiBib290LCBhbmQgdGhlIGxhc3QgcHJvY2VzcyB0ZXJtaW5hdGVkIGJlZm9yZSB0aGUgc3lzdGVtIGhhbHRzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zYXZhbm5haC5ub25nbnUub3JnL3Byb2plY3RzL3N5c3Zpbml0LyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWVJJR0hUO2VuZGxpbmU9MTU7bWQ1PWExZDNiMzUyNjUwMWQzNTQ2ZDUzMGJiZTZhYjZjZGJlIFwKKyAgICAgICAgICAgICAgICAgICAgIgorCitSREVQRU5EU18ke1BOfSA9ICIke1BOfS1pbml0dGFiIgorCitTUkNfVVJJID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vc3lzdmluaXQvc3lzdmluaXQtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2luc3RhbGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY3J5cHQtbGliLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BpZG9mLWFkZC1tLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZWFscGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbmVzLWluLWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmNTLWRlZmF1bHQgXAorICAgICAgICAgICBmaWxlOi8vcmMgXAorICAgICAgICAgICBmaWxlOi8vcmNTIFwKKyAgICAgICAgICAgZmlsZTovL2Jvb3Rsb2dkLmluaXQgXAorICAgICAgICAgICBmaWxlOi8vMDFfYm9vdGxvZ2QgXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNDhjZWJmZmViZjJhOTZhYjA5YmVjMTRiZjk5NzYwMTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmEyZTI2YjcyYWEyMzVhMjNhYjFjODQ3MTAwNWY4OTAzMDljZTExOTZjODNmYmM5NDEzYzU3YjlhYjYyYjU4NyIKKworUyA9ICIke1dPUktESVJ9L3N5c3Zpbml0LSR7UFZ9IgorQiA9ICIke1N9L3NyYyIKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzIGZlYXR1cmVzX2NoZWNrCitERVBFTkRTX2FwcGVuZCA9ICIgdXBkYXRlLXJjLmQtbmF0aXZlIGJhc2UtcGFzc3dkIHZpcnR1YWwvY3J5cHQiCitkb19wYWNrYWdlX3NldHNjZW5lW2RlcGVuZHNdID0gIiR7TUxQUkVGSVh9YmFzZS1wYXNzd2Q6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3Zpbml0IgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJpbml0IG1vdW50cG9pbnQgaGFsdCByZWJvb3QgcnVubGV2ZWwgc2h1dGRvd24gcG93ZXJvZmYgbGFzdCBsYXN0YiBtZXNnIHV0bXBkdW1wIHdhbGwiCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjIwMCIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2luaXRdID0gIiR7YmFzZV9zYmluZGlyfS9pbml0IgorQUxURVJOQVRJVkVfUFJJT1JJVFlbaW5pdF0gPSAiNTAiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVttb3VudHBvaW50XSA9ICIke2Jhc2VfYmluZGlyfS9tb3VudHBvaW50IgorQUxURVJOQVRJVkVfUFJJT1JJVFlbbW91bnRwb2ludF0gPSAiMjAiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtoYWx0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaGFsdCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtyZWJvb3RdID0gIiR7YmFzZV9zYmluZGlyfS9yZWJvb3QiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcnVubGV2ZWxdID0gIiR7YmFzZV9zYmluZGlyfS9ydW5sZXZlbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzaHV0ZG93bl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Bvd2Vyb2ZmXSA9ICIke2Jhc2Vfc2JpbmRpcn0vcG93ZXJvZmYiCisKK0FMVEVSTkFUSVZFXyR7UE59LXBpZG9mID0gInBpZG9mIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3BpZG9mXSA9ICIke2Jhc2VfYmluZGlyfS9waWRvZiIKKworQUxURVJOQVRJVkVfJHtQTn0tc3Vsb2dpbiA9ICJzdWxvZ2luIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3N1bG9naW5dID0gIiR7YmFzZV9zYmluZGlyfS9zdWxvZ2luIgorCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAibW91bnRwb2ludC4xIGxhc3QuMSBsYXN0Yi4xIG1lc2cuMSB3YWxsLjEgc3Vsb2dpbi44IHV0bXBkdW1wLjEiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtsYXN0LjFdID0gIiR7bWFuZGlyfS9tYW4xL2xhc3QuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtsYXN0Yi4xXSA9ICIke21hbmRpcn0vbWFuMS9sYXN0Yi4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW21lc2cuMV0gPSAiJHttYW5kaXJ9L21hbjEvbWVzZy4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW21vdW50cG9pbnQuMV0gPSAiJHttYW5kaXJ9L21hbjEvbW91bnRwb2ludC4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3N1bG9naW4uOF0gPSAiJHttYW5kaXJ9L21hbjgvc3Vsb2dpbi44IgorQUxURVJOQVRJVkVfTElOS19OQU1FW3V0bXBkdW1wLjFdID0gIiR7bWFuZGlyfS9tYW4xL3V0bXBkdW1wLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbd2FsbC4xXSA9ICIke21hbmRpcn0vbWFuMS93YWxsLjEiCisKK1BBQ0tBR0VTID0rICJzeXN2aW5pdC1waWRvZiBzeXN2aW5pdC1zdWxvZ2luIgorRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9zYmluZGlyfS8qICR7YmFzZV9iaW5kaXJ9LyoiCitGSUxFU19zeXN2aW5pdC1waWRvZiA9ICIke2Jhc2VfYmluZGlyfS9waWRvZi5zeXN2aW5pdCAke2Jhc2Vfc2JpbmRpcn0va2lsbGFsbDUiCitGSUxFU19zeXN2aW5pdC1zdWxvZ2luID0gIiR7YmFzZV9zYmluZGlyfS9zdWxvZ2luLnN5c3Zpbml0IgorCitSREVQRU5EU18ke1BOfSArPSAic3lzdmluaXQtcGlkb2YgaW5pdGQtZnVuY3Rpb25zIGJhc2UtcGFzc3dkIgorCitDRkxBR1NfcHJlcGVuZCA9ICItRF9HTlVfU09VUkNFICIKK2V4cG9ydCBMQ1JZUFQgPSAiLWxjcnlwdCIKK0VYVFJBX09FTUFLRSArPSAiJ2Jhc2VfYmluZGlyPSR7YmFzZV9iaW5kaXJ9JyBcCisJCSAnYmFzZV9zYmluZGlyPSR7YmFzZV9zYmluZGlyfScgXAorCQkgJ2JpbmRpcj0ke2JpbmRpcn0nIFwKKwkJICdzYmluZGlyPSR7c2JpbmRpcn0nIFwKKwkJICdzeXNjb25mZGlyPSR7c3lzY29uZmRpcn0nIFwKKwkJICdpbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0nIFwKKwkJICdtYW5kaXI9JHttYW5kaXJ9JyBcCisgICAgICAgICAgICAgICAgIE1OVFBPSU5UPXllcyIKKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSAnUk9PVD0ke0R9JyBpbnN0YWxsCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9IFwKKwkJICAgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdCBcCisJCSAgICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCWZvciBsZXZlbCBpbiBTIDAgMSAyIDMgNCA1IDY7IGRvCisJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vcmMkbGV2ZWwuZAorCWRvbmUKKworCWluc3RhbGwgLW0gMDY0NCAgICAke1dPUktESVJ9L3JjUy1kZWZhdWx0CSR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvcmNTCisJaW5zdGFsbCAtbSAwNzU1ICAgICR7V09SS0RJUn0vcmMJCSR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCWluc3RhbGwgLW0gMDc1NSAgICAke1dPUktESVJ9L3JjUwkJJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSAwNzU1ICAgICR7V09SS0RJUn0vYm9vdGxvZ2QuaW5pdCAgICAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2Jvb3Rsb2dkCisJbG4gLXNmIGJvb3Rsb2dkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zdG9wLWJvb3Rsb2dkCisKKwl1cGRhdGUtcmMuZCAtciAke0R9IGJvb3Rsb2dkIHN0YXJ0IDA3IFMgLgorCXVwZGF0ZS1yYy5kIC1yICR7RH0gc3RvcC1ib290bG9nZCBzdGFydCA5OSAyIDMgNCA1IC4KKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8wMV9ib290bG9nZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworCisJY2hvd24gcm9vdDpzaHV0ZG93biAke0R9JHtiYXNlX3NiaW5kaXJ9L2hhbHQgJHtEfSR7YmFzZV9zYmluZGlyfS9zaHV0ZG93bgorCWNobW9kIG8teCx1K3MgJHtEfSR7YmFzZV9zYmluZGlyfS9oYWx0ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24KKworICAgICAgICAjIEFscmVhZHkgcHJvdmlkZWQgYnkgZTJmc3Byb2dzOyBzeXN2aW5pdCdzIHZlcnNpb24gaXMgYSBjb3B5IGZyb20gdGhlcmUKKyAgICAgICAgcm0gJHtEfSR7YmFzZV9zYmluZGlyfS9sb2dzYXZlCisgICAgICAgIHJtICR7RH0ke21hbmRpcn0vbWFuOC9sb2dzYXZlLjgKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg3MjllMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi1TVU1NQVJZID0gImV1ZGV2IGlzIGEgZm9yayBvZiBzeXN0ZW1kJ3MgdWRldiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nZW50b28ub3JnL3dpa2kvRXVkZXYiCi1MSUNFTlNFID0gIkdQTHYyLjArICYgTEdQTC0yLjErIgotTElDRU5TRV9saWJ1ZGV2ID0gIkxHUEwtMi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBncGVyZi1uYXRpdmUga21vZCBsaWJ4c2x0LW5hdGl2ZSB1dGlsLWxpbnV4IgotCi1QUk9WSURFUyA9ICJ1ZGV2IgotCi1TUkNfVVJJID0gImh0dHA6Ly9kZXYuZ2VudG9vLm9yZy9+Ymx1ZW5lc3MvJHtCUE59LyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE0LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RldmZzLXVkZXYucnVsZXMgXAotICAgICAgICAgICBmaWxlOi8vaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9saW5rcy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2xvY2FsLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovL3Blcm1pc3Npb25zLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi5ydWxlcyBcCi0gICAgICAgICAgIGZpbGU6Ly91ZGV2LnJ1bGVzIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImNlMTY2YjNmZGQ5MTBjMmE0YTg0MDM3OGY0OGZlZGFmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYxZTQ5NDhlOWU1MTI3MWMzY2NlMmJiNTMxMWEzMGIyMDZkZDAzZWYwMTEwNjJlNmM2MjdmYjAwN2U0M2Y2YjgiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHFlbXUgcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCi0KLUNPTkZMSUNUX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IFwKLSAgICAtLXdpdGgtcm9vdGxpYmRpcj0ke2Jhc2VfbGliZGlyfSBcCi0gICAgLS13aXRoLXJvb3RsaWJleGVjZGlyPSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldiBcCi0gICAgLS13aXRoLXJvb3RwcmVmaXg9IFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImh3ZGIiCi1QQUNLQUdFQ09ORklHW2h3ZGJdID0gIi0tZW5hYmxlLWh3ZGIsLS1kaXNhYmxlLWh3ZGIiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdWRldgotCXNlZCAtaSBzJUBVREVWREAlJHtiYXNlX3NiaW5kaXJ9L3VkZXZkJSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdWRldgotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9sb2NhbC5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvbG9jYWwucnVsZXMKLQotCSMgVXNlIGNsYXNzaWMgbmV0d29yayBpbnRlcmZhY2UgbmFtaW5nIHNjaGVtZQotCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC84MC1uZXQtbmFtZS1zbG90LnJ1bGVzCi0KLQkjIGhpZDJoY2kgaGFzIG1vdmVkIHRvIGJsdWV6NC4gcmVtb3ZlZCBpbiB1ZGV2IGFzIG9mIHZlcnNpb24gMTY5Ci0Jcm0gLWYgJHtEfSR7YmFzZV9saWJkaXJ9L3VkZXYvaGlkMmhjaQotCi0JIyBkdXBsaWNhdGUgdWRldmFkbSBmb3IgcG9zdGluc3Qgc2NyaXB0Ci0JaW5zdGFsbCAtZCAke0R9JHtsaWJleGVjZGlyfQotCWxuICR7RH0ke2JpbmRpcn0vdWRldmFkbSAke0R9JHtsaWJleGVjZGlyfS8ke01MUFJFRklYfXVkZXZhZG0KLX0KLQotZG9faW5zdGFsbF9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0JIyBSZW1vdmUgcmVmZXJlbmNlcyB0byBidWlsZG1hY2hpbmUKLQlzZWQgLWkgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0JCSR7Qn0vc3JjL3VkZXYva2V5Ym9hcmQta2V5cy1mcm9tLW5hbWUuaAotfQotCi1JTklUU0NSSVBUX05BTUUgPSAidWRldiIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDA0IFMgLiIKLQotUEFDS0FHRVMgPSsgImxpYnVkZXYiCi1QQUNLQUdFUyA9KyAiZXVkZXYtaHdkYiIKLQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJleGVjZGlyfSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYgJHtiaW5kaXJ9L3VkZXZhZG0iCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtkYXRhZGlyfS9wa2djb25maWcvdWRldi5wYyBcCi0gICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9saWJ1ZGV2LmggJHtsaWJkaXJ9L2xpYnVkZXYuc28gXAotICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vdWRldi5oICR7bGliZGlyfS9saWJ1ZGV2LmxhIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlidWRldi5hICR7bGliZGlyfS9wa2djb25maWcvbGlidWRldi5wYyIKLUZJTEVTX2xpYnVkZXYgPSAiJHtiYXNlX2xpYmRpcn0vbGlidWRldi5zby4qIgotRklMRVNfZXVkZXYtaHdkYiA9ICIke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5kIgotCi1SREVQRU5EU19ldWRldi1od2RiICs9ICJldWRldiIKLQotUlBST1ZJREVTXyR7UE59ID0gImhvdHBsdWcgdWRldiIKLVJQUk9WSURFU19ldWRldi1od2RiICs9ICJ1ZGV2LWh3ZGIiCi0KLVBBQ0tBR0VfV1JJVEVfREVQUyArPSAicWVtdS1uYXRpdmUiCi1wa2dfcG9zdGluc3RfZXVkZXYtaHdkYiAoKSB7Ci0gICAgaWYgdGVzdCAtbiAiJEQiOyB0aGVuCi0gICAgICAgICRJTlRFUkNFUFRfRElSL3Bvc3RpbnN0X2ludGVyY2VwdCB1cGRhdGVfdWRldl9od2RiICR7UEtHfSBtbHByZWZpeD0ke01MUFJFRklYfSBiaW5wcmVmaXg9JHtNTFBSRUZJWH0KLSAgICBlbHNlCi0gICAgICAgIHVkZXZhZG0gaHdkYiAtLXVwZGF0ZQotICAgIGZpCi19Ci0KLXBrZ19wcmVybV9ldWRldi1od2RiICgpIHsKLSAgICAgICAgcm0gLWYgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTZmOGNiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2XzMuMi45LmJiCkBAIC0wLDAgKzEsOTYgQEAKK1NVTU1BUlkgPSAiZXVkZXYgaXMgYSBmb3JrIG9mIHN5c3RlbWQncyB1ZGV2IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdlbnRvby5vcmcvd2lraS9FdWRldiIKK0xJQ0VOU0UgPSAiR1BMdjIuMCsgJiBMR1BMLTIuMSsiCitMSUNFTlNFX2xpYnVkZXYgPSAiTEdQTC0yLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGdwZXJmLW5hdGl2ZSBrbW9kIGxpYnhzbHQtbmF0aXZlIHV0aWwtbGludXgiCisKK1BST1ZJREVTID0gInVkZXYiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9kZXYuZ2VudG9vLm9yZy9+Ymx1ZW5lc3MvJHtCUE59LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE0LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RldmZzLXVkZXYucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9saW5rcy5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2xvY2FsLnJ1bGVzIFwKKyAgICAgICAgICAgZmlsZTovL3Blcm1pc3Npb25zLnJ1bGVzIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly91ZGV2LnJ1bGVzIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImRlZGZiMTk2NGY2MDk4ZmU5MzIwZGU4Mjc5NTczMzFmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg5NjE4NjE5MDg0YTE5ZTE0NTFkMzczYzQzZjE0MWI0NjljOWZkMDk3Njc5NzNkNzNkZDI2OGI5MjA3NGQ0ZmMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHFlbXUgcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCisKK0NPTkZMSUNUX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IFwKKyAgICAtLXdpdGgtcm9vdGxpYmRpcj0ke2Jhc2VfbGliZGlyfSBcCisgICAgLS13aXRoLXJvb3RsaWJleGVjZGlyPSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldiBcCisgICAgLS13aXRoLXJvb3RwcmVmaXg9IFwKKyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImh3ZGIiCitQQUNLQUdFQ09ORklHW2h3ZGJdID0gIi0tZW5hYmxlLWh3ZGIsLS1kaXNhYmxlLWh3ZGIiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdWRldgorCXNlZCAtaSBzJUBVREVWREAlJHtiYXNlX3NiaW5kaXJ9L3VkZXZkJSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdWRldgorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9sb2NhbC5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvbG9jYWwucnVsZXMKKworCSMgVXNlIGNsYXNzaWMgbmV0d29yayBpbnRlcmZhY2UgbmFtaW5nIHNjaGVtZQorCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC84MC1uZXQtbmFtZS1zbG90LnJ1bGVzCisKKwkjIGhpZDJoY2kgaGFzIG1vdmVkIHRvIGJsdWV6NC4gcmVtb3ZlZCBpbiB1ZGV2IGFzIG9mIHZlcnNpb24gMTY5CisJcm0gLWYgJHtEfSR7YmFzZV9saWJkaXJ9L3VkZXYvaGlkMmhjaQorCisJIyBkdXBsaWNhdGUgdWRldmFkbSBmb3IgcG9zdGluc3Qgc2NyaXB0CisJaW5zdGFsbCAtZCAke0R9JHtsaWJleGVjZGlyfQorCWxuICR7RH0ke2JpbmRpcn0vdWRldmFkbSAke0R9JHtsaWJleGVjZGlyfS8ke01MUFJFRklYfXVkZXZhZG0KK30KKworZG9faW5zdGFsbF9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7CisJIyBSZW1vdmUgcmVmZXJlbmNlcyB0byBidWlsZG1hY2hpbmUKKwlzZWQgLWkgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJCSR7Qn0vc3JjL3VkZXYva2V5Ym9hcmQta2V5cy1mcm9tLW5hbWUuaAorfQorCitJTklUU0NSSVBUX05BTUUgPSAidWRldiIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDA0IFMgLiIKKworUEFDS0FHRVMgPSsgImxpYnVkZXYiCitQQUNLQUdFUyA9KyAiZXVkZXYtaHdkYiIKKworCitGSUxFU18ke1BOfSArPSAiJHtsaWJleGVjZGlyfSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYgJHtiaW5kaXJ9L3VkZXZhZG0iCitGSUxFU18ke1BOfS1kZXYgPSAiJHtkYXRhZGlyfS9wa2djb25maWcvdWRldi5wYyBcCisgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9saWJ1ZGV2LmggJHtsaWJkaXJ9L2xpYnVkZXYuc28gXAorICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vdWRldi5oICR7bGliZGlyfS9saWJ1ZGV2LmxhIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlidWRldi5hICR7bGliZGlyfS9wa2djb25maWcvbGlidWRldi5wYyIKK0ZJTEVTX2xpYnVkZXYgPSAiJHtiYXNlX2xpYmRpcn0vbGlidWRldi5zby4qIgorRklMRVNfZXVkZXYtaHdkYiA9ICIke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5kIgorCitSREVQRU5EU19ldWRldi1od2RiICs9ICJldWRldiIKKworUlBST1ZJREVTXyR7UE59ID0gImhvdHBsdWcgdWRldiIKK1JQUk9WSURFU19ldWRldi1od2RiICs9ICJ1ZGV2LWh3ZGIiCisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAicWVtdS1uYXRpdmUiCitwa2dfcG9zdGluc3RfZXVkZXYtaHdkYiAoKSB7CisgICAgaWYgdGVzdCAtbiAiJEQiOyB0aGVuCisgICAgICAgICRJTlRFUkNFUFRfRElSL3Bvc3RpbnN0X2ludGVyY2VwdCB1cGRhdGVfdWRldl9od2RiICR7UEtHfSBtbHByZWZpeD0ke01MUFJFRklYfSBiaW5wcmVmaXg9JHtNTFBSRUZJWH0KKyAgICBlbHNlCisgICAgICAgIHVkZXZhZG0gaHdkYiAtLXVwZGF0ZQorICAgIGZpCit9CisKK3BrZ19wcmVybV9ldWRldi1od2RiICgpIHsKKyAgICAgICAgcm0gLWYgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LmluYwppbmRleCAxZmE4MjM2Li4wNTY2NTY5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXguaW5jCkBAIC04LDcgKzgsNyBAQAogCiBMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyAmIEJTRC0zLUNsYXVzZSAmIEJTRC00LUNsYXVzZSIKIAotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLmxpY2Vuc2luZzttZDU9OTcyYTEzNGYxZTE0YjJiMDYwZTM2NWRmMmZhYjAwOTkgXAorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLmxpY2Vuc2luZzttZDU9MGZkNWMwNTBjNjE4N2QyYmYwYTQ0OTJiN2Y0ZTMzZGEgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vRG9jdW1lbnRhdGlvbi9saWNlbnNlcy9DT1BZSU5HLkdQTC0yLjAtb3ItbGF0ZXI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0RvY3VtZW50YXRpb24vbGljZW5zZXMvQ09QWUlORy5MR1BMLTIuMS1vci1sYXRlcjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXApAQCAtMTA1LDcgKzEwNSwxMyBAQAogRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIC0tZW5hYmxlLXNldHByaXYiCiBFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS13aXRob3V0LWNhcC1uZyAtLWRpc2FibGUtc2V0cHJpdiIKIEVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAtLXdpdGhvdXQtY2FwLW5nIC0tZGlzYWJsZS1zZXRwcml2IgorRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS1kaXNhYmxlLWh3Y2xvY2stZ3BsdjMiCiAKKyMgZW5hYmxlIHBjcmUyIGZvciBuYXRpdmUvbmF0aXZlc2RrIHRvIG1hdGNoIGhvc3QgZGlzdHJvcworIyB0aGlzIGhlbHBzIHRvIGtlZXAgc2FtZSBleHBlY3RhdGlvbnMgd2hlbiB1c2luZyB0aGUgU0RLIG9yCisjIGJ1aWxkIGhvc3QgdmVyc2lvbnMgZHVyaW5nIGRldmVsb3BtZW50CisjCitQQUNLQUdFQ09ORklHID89ICJwY3JlMiIKIFBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iCiAjIGluaGVyaXQgbWFucGFnZXMgcmVxdWlyZXMgdGhpcyB0byBiZSBwcmVzZW50LCBob3dldmVyIHV0aWwtbGludXggZG9lcyBub3QgaGF2ZSAKICMgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgaW5zdGFsbHMgbWFucGFnZXMgYWx3YXlzCkBAIC0xMTcsNiArMTIzLDggQEAKIFBBQ0tBR0VDT05GSUdbcHlsaWJtb3VudF0gPSAiLS13aXRoLXB5dGhvbj0zIC0tZW5hYmxlLXB5bGlibW91bnQsLS13aXRob3V0LXB5dGhvbiAtLWRpc2FibGUtcHlsaWJtb3VudCxweXRob24zIgogIyBSZWFkbGluZSBzdXBwb3J0CiBQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtcmVhZGxpbmUsLS13aXRob3V0LXJlYWRsaW5lLHJlYWRsaW5lIgorIyBQQ1JFIHN1cHBvcnQgaW4gaGFyZGxpbmsKK1BBQ0tBR0VDT05GSUdbcGNyZTJdID0gIiwsbGlicGNyZTIiCiAKIEVYVFJBX09FTUFLRSA9ICJBUkNIPSR7VEFSR0VUX0FSQ0h9IENQVT0gQ1BVT1BUPSAnT1BUPSR7Q0ZMQUdTfSciCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LzAwMDEtaHdjbG9jay1maXgtZm9yLWdsaWJjLTIuMzEtc2V0dGltZW9mZGF5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvMDAwMS1od2Nsb2NrLWZpeC1mb3ItZ2xpYmMtMi4zMS1zZXR0aW1lb2ZkYXkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY3MmMzNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LzAwMDEtaHdjbG9jay1maXgtZm9yLWdsaWJjLTIuMzEtc2V0dGltZW9mZGF5LnBhdGNoCkBAIC0wLDAgKzEsMTEyIEBACitGcm9tIGVlODVkMzk2N2VhMDliMjE1ZmNlYTVlZmRkOTBiYmJmNWU3NGE2ODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLYXJlbCBaYWsgPGt6YWtAcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgMTkgRmViIDIwMjAgMTU6NTA6NDcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gaHdjbG9jazogZml4IGZvciBnbGliYyAyLjMxIHNldHRpbWVvZmRheSgpCisKK2dsaWJjIGFubm91bmNlOgorICAuLi4gc2V0dGltZW9mZGF5IGNhbiBubyBsb25nZXIgYmUgdXNlZCB0byBzZXQgdGhlIHRpbWUgYW5kIHRoZSBvZmZzZXQKKyAgc2ltdWx0YW5lb3VzbHkuIElmIGJvdGggb2YgaXRzIHR3byBhcmd1bWVudHMgYXJlIG5vbi1udWxsLCB0aGUgY2FsbAorICB3aWxsIGZhaWwgKHNldHRpbmcgZXJybm8gdG8gRUlOVkFMKS4KKworSXQgbWVhbnMgd2UgbmVlZCB0byBjYWxsIHNldHRpbWVvZmRheShOVUxMLCB0eikgYW5kIHNldHRpbWVvZmRheSh0diwgTlVMTCkuCisKK1VuZm9ydHVuYXRlbHksIHNldHRpbWVvZmRheShOVUxMLCB0eikgaGFzIHZlcnkgc3BlY2lhbCB3YXJwLWNsb2NrCitzZW1hbnRpYyBpZiB1c2VkIGFzIHRoZSB2ZXJ5IGZpcnN0IHNldHRpbWVvZmRheSgpIGNhbGwuIEl0IG1lYW5zIHdlCitoYXZlIHRvIGJlIHN1cmUgdGhhdCB3ZSBkbyBub3QgdG91Y2ggd2FycC1jbG9jayBpZiB3ZSBuZWVkIG9ubHkgbmVlZAordG8gbW9kaWZ5IHN5c3RlbSBUWi4gU28sIGxldCdzIGFsd2F5cyBjYWxsIHNldHRpbWVvZmRheShOVUxMLCAwKQorYmVmb3JlIHNldHRpbWVvZmRheShOVUxMLCB0eikgZm9yIFVUQyBydGMgbW9kZSB3aGVuIG1vZGlmeSBzeXN0ZW0gVFouCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9rYXJlbHphay91dGlsLWxpbnV4L2NvbW1pdC9lZTg1ZDM5NjdlYTA5YjIxNWZjZWE1ZWZkZDkwYmJiZjVlNzRhNjgxXQorCitDQzogSiBXaWxsaWFtIFBpZ2dvdHQgPGVsc2VpZnRoZW5AZ214LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEthcmVsIFphayA8a3pha0ByZWRoYXQuY29tPgorQWRkcmVzc2VzOiBodHRwczovL2dpdGh1Yi5jb20va2FyZWx6YWsvdXRpbC1saW51eC9pc3N1ZXMvOTU3CitTaWduZWQtb2ZmLWJ5OiBMaXdlaSBTb25nIDxsaXdlaS5zb25nQHdpbmRyaXZlci5jb20+CistLS0KKyBzeXMtdXRpbHMvaHdjbG9jay5jIHwgNDkgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzLXV0aWxzL2h3Y2xvY2suYyBiL3N5cy11dGlscy9od2Nsb2NrLmMKK2luZGV4IGU3MzZkYTcxNzlmOC4uMTY1NzZiYzE4NmZmIDEwMDY0NAorLS0tIGEvc3lzLXV0aWxzL2h3Y2xvY2suYworKysrIGIvc3lzLXV0aWxzL2h3Y2xvY2suYworQEAgLTY1OCw2ICs2NTgsOSBAQCBkaXNwbGF5X3RpbWUoc3RydWN0IHRpbWV2YWwgaHdjdGltZSkKKyAgKiBQQ0lMOiBwZXJzaXN0ZW50X2Nsb2NrX2lzX2xvY2FsLCBzZXRzIHRoZSAiMTEgbWludXRlIG1vZGUiIHRpbWVzY2FsZS4KKyAgKiBmaXJzdHRpbWU6IGxvY2tzIHRoZSB3YXJwX2Nsb2NrIGZ1bmN0aW9uIChpbml0aWFsaXplZCB0byAxIGF0IGJvb3QpLgorICAqCisrICogTm90ZSB0aGF0IHZlcnkgZmlyc3Qgc2V0dGltZW9mZGF5KE5VTEwsIHR6KSBtb2RpZmllcyB3YXJwLWNsb2NrIGFzIHdlbGwgYXMKKysgKiBzeXN0ZW0gVFouCisrICoKKyAgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAqIHwgIG9wICAgICB8IFJUQyBzY2FsZSB8IHNldHRpbWVvZmRheSBjYWxscyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICogfC0tLS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK0BAIC02NzUsNDEgKzY3OCw0NSBAQCBzZXRfc3lzdGVtX2Nsb2NrKGNvbnN0IHN0cnVjdCBod2Nsb2NrX2NvbnRyb2wgKmN0bCwKKyAJc3RydWN0IHRtIGJyb2tlbjsKKyAJaW50IG1pbnV0ZXN3ZXN0OworIAlpbnQgcmMgPSAwOworLQljb25zdCBzdHJ1Y3QgdGltZXpvbmUgdHpfdXRjID0geyAwIH07CisgCisgCWxvY2FsdGltZV9yKCZuZXd0aW1lLnR2X3NlYywgJmJyb2tlbik7CisgCW1pbnV0ZXN3ZXN0ID0gLWdldF9nbXRvZmYoJmJyb2tlbikgLyA2MDsKKyAKKyAJaWYgKGN0bC0+dmVyYm9zZSkgeworLQkJaWYgKGN0bC0+aGN0b3N5cyAmJiAhY3RsLT51bml2ZXJzYWwpCistCQkJcHJpbnRmKF8oIkNhbGxpbmcgc2V0dGltZW9mZGF5KE5VTEwsICVkKSB0byBzZXQgIgorLQkJCQkgInBlcnNpc3RlbnRfY2xvY2tfaXNfbG9jYWwuXG4iKSwgbWludXRlc3dlc3QpOworLQkJaWYgKGN0bC0+c3lzdHogJiYgY3RsLT51bml2ZXJzYWwpCisrCQlpZiAoY3RsLT51bml2ZXJzYWwpCisgCQkJcHV0cyhfKCJDYWxsaW5nIHNldHRpbWVvZmRheShOVUxMLCAwKSAiCistCQkJCSJ0byBsb2NrIHRoZSB3YXJwIGZ1bmN0aW9uLiIpKTsKKysJCQkgICAgICAgInRvIGxvY2sgdGhlIHdhcnAgZnVuY3Rpb24uIikpOworKwkJZWxzZQorKwkJCXByaW50ZihfKCJDYWxsaW5nIHNldHRpbWVvZmRheShOVUxMLCAlZCkgdG8gc2V0ICIKKysJCQkJICJwZXJzaXN0ZW50X2Nsb2NrX2lzX2xvY2FsIGFuZCAiCisrCQkJCSAidGhlIGtlcm5lbCB0aW1lem9uZS5cbiIpLCBtaW51dGVzd2VzdCk7CisrCisrCQlpZiAoY3RsLT51bml2ZXJzYWwgJiYgbWludXRlc3dlc3QpCisrCQkJcHJpbnRmKF8oIkNhbGxpbmcgc2V0dGltZW9mZGF5KE5VTEwsICVkKSB0byBzZXQgIgorKwkJCQkgInRoZSBrZXJuZWwgdGltZXpvbmUuXG4iKSwgbWludXRlc3dlc3QpOworKworIAkJaWYgKGN0bC0+aGN0b3N5cykKKy0JCQlwcmludGYoXygiQ2FsbGluZyBzZXR0aW1lb2ZkYXkoJWxkLiUwNmxkLCAlZClcbiIpLAorLQkJCSAgICAgICBuZXd0aW1lLnR2X3NlYywgbmV3dGltZS50dl91c2VjLCBtaW51dGVzd2VzdCk7CistCQllbHNlIHsKKy0JCQlwcmludGYoXygiQ2FsbGluZyBzZXR0aW1lb2ZkYXkoTlVMTCwgJWQpICIpLCBtaW51dGVzd2VzdCk7CistCQkJaWYgKGN0bC0+dW5pdmVyc2FsKQorLQkJCQkgcHV0cyhfKCJ0byBzZXQgdGhlIGtlcm5lbCB0aW1lem9uZS4iKSk7CistCQkJZWxzZQorLQkJCQkgcHV0cyhfKCJ0byB3YXJwIFN5c3RlbSB0aW1lLiIpKTsKKy0JCX0KKysJCQlwcmludGYoXygiQ2FsbGluZyBzZXR0aW1lb2ZkYXkoJWxkLiUwNmxkLCAwKSB0byBzZXQgIgorKwkJCSAgICAgICAgICJ0aGUga2VybmVsIHRpbWUuXG4iKSwgbmV3dGltZS50dl9zZWMsIG5ld3RpbWUudHZfdXNlYyk7CisgCX0KKyAKKyAJaWYgKCFjdGwtPnRlc3RpbmcpIHsKKysJCWNvbnN0IHN0cnVjdCB0aW1lem9uZSB0el91dGMgPSB7IDAgfTsKKyAJCWNvbnN0IHN0cnVjdCB0aW1lem9uZSB0eiA9IHsgbWludXRlc3dlc3QgfTsKKyAKKy0JCWlmIChjdGwtPmhjdG9zeXMgJiYgIWN0bC0+dW5pdmVyc2FsKQkvKiBzZXQgUENJTCAqLworKwkJLyogd2FycC1jbG9jayAqLworKwkJaWYgKGN0bC0+dW5pdmVyc2FsKQorKwkJCXJjID0gc2V0dGltZW9mZGF5KE5VTEwsICZ0el91dGMpOyAvKiBsb2NrIHRvIFVUQyAqLworKwkJZWxzZQorKwkJCXJjID0gc2V0dGltZW9mZGF5KE5VTEwsICZ0eik7ICAgICAvKiBzZXQgUENJTCBhbmQgVFogKi8KKysKKysJCS8qIHNldCB0aW1lem9uZSAqLworKwkJaWYgKCFyYyAmJiBjdGwtPnVuaXZlcnNhbCAmJiBtaW51dGVzd2VzdCkKKyAJCQlyYyA9IHNldHRpbWVvZmRheShOVUxMLCAmdHopOworLQkJaWYgKGN0bC0+c3lzdHogJiYgY3RsLT51bml2ZXJzYWwpCS8qIGxvY2sgd2FycF9jbG9jayAqLworLQkJCXJjID0gc2V0dGltZW9mZGF5KE5VTEwsICZ0el91dGMpOworKworKwkJLyogc2V0IHRpbWUgKi8KKyAJCWlmICghcmMgJiYgY3RsLT5oY3Rvc3lzKQorLQkJCXJjID0gc2V0dGltZW9mZGF5KCZuZXd0aW1lLCAmdHopOworLQkJZWxzZSBpZiAoIXJjKQorLQkJCXJjID0gc2V0dGltZW9mZGF5KE5VTEwsICZ0eik7CisrCQkJcmMgPSBzZXR0aW1lb2ZkYXkoJm5ld3RpbWUsIE5VTEwpOworIAorIAkJaWYgKHJjKSB7CisgCQkJd2FybihfKCJzZXR0aW1lb2ZkYXkoKSBmYWlsZWQiKSk7CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC8wMDAxLWxpYmZkaXNrLXNjcmlwdC1hY2NlcHQtc2VjdG9yLXNpemUtaWdub3JlLXVua25vd24taGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC8wMDAxLWxpYmZkaXNrLXNjcmlwdC1hY2NlcHQtc2VjdG9yLXNpemUtaWdub3JlLXVua25vd24taGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTExZjcwYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LzAwMDEtbGliZmRpc2stc2NyaXB0LWFjY2VwdC1zZWN0b3Itc2l6ZS1pZ25vcmUtdW5rbm93bi1oZS5wYXRjaApAQCAtMCwwICsxLDEzNyBAQAorRnJvbSAwMGU1M2YxN2M4NDYyY2IzNGVjZTA4Y2MxMGRiNjBhN2RhMjlhMzA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2FyZWwgWmFrIDxremFrQHJlZGhhdC5jb20+CitEYXRlOiBUdWUsIDQgRmViIDIwMjAgMTU6MTE6MTkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gbGliZmRpc2s6IChzY3JpcHQpIGFjY2VwdCBzZWN0b3Itc2l6ZSwgaWdub3JlIHVua25vd24gaGVhZGVycworCistIGFkZCBzZWN0b3Itc2l6ZSBiZXR3ZWVuIHN1cHBvcnRlZCBoZWFkZXJzIChhbHJlYWR5IGluIC0tZHVtcCBvdXRwdXQpCisKKy0gcmVwb3J0IHVua25vd24gaGVhZGVycyBieSAtRU5PVFNVUAorCistIGlnbm9yZSBFTk9UU1VQIGluIHNmZGlzayAoYnV0IHByaW50IHdhcm5pbmcpIGFuZCBpbiBmZGlza19zY3JpcHRfcmVhZF9maWxlKCkKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2thcmVsemFrL3V0aWwtbGludXgvY29tbWl0LzAwZTUzZjE3Yzg0NjJjYjM0ZWNlMDhjYzEwZGI2MGE3ZGEyOWEzMDVdCisKK0FkZHJlc3NlczogaHR0cHM6Ly9naXRodWIuY29tL2thcmVsemFrL3V0aWwtbGludXgvaXNzdWVzLzk0OQorU2lnbmVkLW9mZi1ieTogS2FyZWwgWmFrIDxremFrQHJlZGhhdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBQaWVycmUtSmVhbiBUZXhpZXIgPHBqdGV4aWVyQGtvbmNlcHRvLmlvPgorLS0tCisgZGlzay11dGlscy9zZmRpc2suYyAgIHwgIDYgKysrKystCisgbGliZmRpc2svc3JjL3NjcmlwdC5jIHwgNDkgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kaXNrLXV0aWxzL3NmZGlzay5jIGIvZGlzay11dGlscy9zZmRpc2suYworaW5kZXggYmI2ZTFjNi4uYzBiZWE3MCAxMDA2NDQKKy0tLSBhL2Rpc2stdXRpbHMvc2ZkaXNrLmMKKysrKyBiL2Rpc2stdXRpbHMvc2ZkaXNrLmMKK0BAIC0xNzgyLDcgKzE3ODIsMTEgQEAgc3RhdGljIGludCBjb21tYW5kX2ZkaXNrKHN0cnVjdCBzZmRpc2sgKnNmLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQl9CisgCisgCQlyYyA9IGZkaXNrX3NjcmlwdF9yZWFkX2xpbmUoZHAsIHN0ZGluLCBidWYsIHNpemVvZihidWYpKTsKKy0JCWlmIChyYyA8IDApIHsKKysJCWlmIChyYyA9PSAtRU5PVFNVUCkgeworKwkJCWJ1ZltzaXplb2YoYnVmKSAtIDFdID0gJ1wwJzsKKysJCQlmZGlza193YXJueChzZi0+Y3h0LCBfKCJVbmtub3duIHNjcmlwdCBoZWFkZXIgJyVzJyAtLSBpZ25vcmUuIiksIGJ1Zik7CisrCQkJY29udGludWU7CisrCQl9IGVsc2UgaWYgKHJjIDwgMCkgeworIAkJCURCRyhQQVJTRSwgdWxfZGVidWcoInNjcmlwdCBwYXJzaW5nIGZhaWxlZCwgdHJ5aW5nIHNmZGlzayBzcGVjaWZpYyBjb21tYW5kcyIpKTsKKyAJCQlidWZbc2l6ZW9mKGJ1ZikgLSAxXSA9ICdcMCc7CisgCQkJcmMgPSBsb29wX2NvbnRyb2xfY29tbWFuZHMoc2YsIGRwLCBidWYpOworZGlmZiAtLWdpdCBhL2xpYmZkaXNrL3NyYy9zY3JpcHQuYyBiL2xpYmZkaXNrL3NyYy9zY3JpcHQuYworaW5kZXggYTIxNzcxYi4uZDNlNjdmYSAxMDA2NDQKKy0tLSBhL2xpYmZkaXNrL3NyYy9zY3JpcHQuYworKysrIGIvbGliZmRpc2svc3JjL3NjcmlwdC5jCitAQCAtODA1LDggKzgwNSwxMiBAQCBzdGF0aWMgaW5saW5lIGludCBpc19oZWFkZXJfbGluZShjb25zdCBjaGFyICpzKQorIC8qIHBhcnNlcyAiPG5hbWU+OiB2YWx1ZSIsIG5vdGUgbW9kaWZpZXMgQHMqLworIHN0YXRpYyBpbnQgcGFyc2VfbGluZV9oZWFkZXIoc3RydWN0IGZkaXNrX3NjcmlwdCAqZHAsIGNoYXIgKnMpCisgeworLQlpbnQgcmMgPSAtRUlOVkFMOworKwlzaXplX3QgaTsKKyAJY2hhciAqbmFtZSwgKnZhbHVlOworKwlzdGF0aWMgY29uc3QgY2hhciAqc3VwcG9ydGVkW10gPSB7CisrCQkibGFiZWwiLCAidW5pdCIsICJsYWJlbC1pZCIsICJkZXZpY2UiLCAiZ3JhaW4iLAorKwkJImZpcnN0LWxiYSIsICJsYXN0LWxiYSIsICJ0YWJsZS1sZW5ndGgiLCAic2VjdG9yLXNpemUiCisrCX07CisgCisgCURCRyhTQ1JJUFQsIHVsX2RlYnVnb2JqKGRwLCAiICAgcGFyc2UgaGVhZGVyICclcyciLCBzKSk7CisgCitAQCAtODE2LDcgKzgyMCw3IEBAIHN0YXRpYyBpbnQgcGFyc2VfbGluZV9oZWFkZXIoc3RydWN0IGZkaXNrX3NjcmlwdCAqZHAsIGNoYXIgKnMpCisgCW5hbWUgPSBzOworIAl2YWx1ZSA9IHN0cmNocihzLCAnOicpOworIAlpZiAoIXZhbHVlKQorLQkJZ290byBkb25lOworKwkJcmV0dXJuIC1FSU5WQUw7CisgCSp2YWx1ZSA9ICdcMCc7CisgCXZhbHVlKys7CisgCitAQCAtODI1LDMyICs4MjksMzAgQEAgc3RhdGljIGludCBwYXJzZV9saW5lX2hlYWRlcihzdHJ1Y3QgZmRpc2tfc2NyaXB0ICpkcCwgY2hhciAqcykKKyAJbHRyaW1fd2hpdGVzcGFjZSgodW5zaWduZWQgY2hhciAqKSB2YWx1ZSk7CisgCXJ0cmltX3doaXRlc3BhY2UoKHVuc2lnbmVkIGNoYXIgKikgdmFsdWUpOworIAorKwlpZiAoISpuYW1lIHx8ICEqdmFsdWUpCisrCQlyZXR1cm4gLUVJTlZBTDsKKysKKysJLyogY2hlY2sgaGVhZGVyIG5hbWUgKi8KKysJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoc3VwcG9ydGVkKTsgaSsrKSB7CisrCQlpZiAoc3RyY21wKG5hbWUsIHN1cHBvcnRlZFtpXSkgPT0gMCkKKysJCQlicmVhazsKKysJfQorKwlpZiAoaSA9PSBBUlJBWV9TSVpFKHN1cHBvcnRlZCkpCisrCQlyZXR1cm4gLUVOT1RTVVA7CisrCisrCS8qIGhlYWRlciBzcGVjaWZpYyBhY3Rpb25zICovCisgCWlmIChzdHJjbXAobmFtZSwgImxhYmVsIikgPT0gMCkgeworIAkJaWYgKGRwLT5jeHQgJiYgIWZkaXNrX2dldF9sYWJlbChkcC0+Y3h0LCB2YWx1ZSkpCistCQkJZ290byBkb25lOwkJCS8qIHVua25vd24gbGFiZWwgbmFtZSAqLworKwkJCXJldHVybiAtRUlOVkFMOwkJCS8qIHVua25vd24gbGFiZWwgbmFtZSAqLworIAkJZHAtPmZvcmNlX2xhYmVsID0gMTsKKysKKyAJfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgInVuaXQiKSA9PSAwKSB7CisgCQlpZiAoc3RyY21wKHZhbHVlLCAic2VjdG9ycyIpICE9IDApCistCQkJZ290byBkb25lOwkJCS8qIG9ubHkgInNlY3RvcnMiIHN1cHBvcnRlZCAqLworLQl9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAibGFiZWwtaWQiKSA9PSAwCistCQkgICB8fCBzdHJjbXAobmFtZSwgImRldmljZSIpID09IDAKKy0JCSAgIHx8IHN0cmNtcChuYW1lLCAiZ3JhaW4iKSA9PSAwCistCQkgICB8fCBzdHJjbXAobmFtZSwgImZpcnN0LWxiYSIpID09IDAKKy0JCSAgIHx8IHN0cmNtcChuYW1lLCAibGFzdC1sYmEiKSA9PSAwCistCQkgICB8fCBzdHJjbXAobmFtZSwgInRhYmxlLWxlbmd0aCIpID09IDApIHsKKy0JCTsJCQkJCS8qIHdoYXRldmVyIGlzIHBvc3NpYmxlICovCistCX0gZWxzZQorLQkJZ290byBkb25lOwkJCQkvKiB1bmtub3duIGhlYWRlciAqLworKwkJCXJldHVybiAtRUlOVkFMOwkJCS8qIG9ubHkgInNlY3RvcnMiIHN1cHBvcnRlZCAqLworIAorLQlpZiAoKm5hbWUgJiYgKnZhbHVlKQorLQkJcmMgPSBmZGlza19zY3JpcHRfc2V0X2hlYWRlcihkcCwgbmFtZSwgdmFsdWUpOworLWRvbmU6CistCWlmIChyYykKKy0JCURCRyhTQ1JJUFQsIHVsX2RlYnVnb2JqKGRwLCAiaGVhZGVyIHBhcnNlIGVycm9yOiAiCistCQkJCSJbcmM9JWQsIG5hbWU9JyVzJywgdmFsdWU9JyVzJ10iLAorLQkJCQlyYywgbmFtZSwgdmFsdWUpKTsKKy0JcmV0dXJuIHJjOworKwl9CisgCisrCXJldHVybiBmZGlza19zY3JpcHRfc2V0X2hlYWRlcihkcCwgbmFtZSwgdmFsdWUpOworIH0KKyAKKyAvKiByZXR1cm5zIHplcm8gdGVybWluYXRlZCBzdHJpbmcgd2l0aCBuZXh0IHRva2VuIGFuZCBAc3RyIGlzIHVwZGF0ZWQgKi8KK0BAIC0xMzYzLDcgKzEzNjUsOCBAQCBpbnQgZmRpc2tfc2NyaXB0X3NldF9mZ2V0cyhzdHJ1Y3QgZmRpc2tfc2NyaXB0ICpkcCwKKyAgKgorICAqIFJlYWRzIG5leHQgbGluZSBpbnRvIGR1bXAuCisgICoKKy0gKiBSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIDwwIG9uIGVycm9yLCAxIHdoZW4gbm90aGluZyB0byByZWFkLgorKyAqIFJldHVybnM6IDAgb24gc3VjY2VzcywgPDAgb24gZXJyb3IsIDEgd2hlbiBub3RoaW5nIHRvIHJlYWQuIEZvciB1bmtub3duIGhlYWRlcnMKKysgKiAgICAgICAgICByZXR1cm5zIC1FTk9UU1VQLCBpdCdzIHVzdWFsbHkgc2FmZSB0byBpZ25vcmUgdGhpcyBlcnJvci4KKyAgKi8KKyBpbnQgZmRpc2tfc2NyaXB0X3JlYWRfbGluZShzdHJ1Y3QgZmRpc2tfc2NyaXB0ICpkcCwgRklMRSAqZiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opCisgeworQEAgLTE0MjgsNyArMTQzMSw3IEBAIGludCBmZGlza19zY3JpcHRfcmVhZF9maWxlKHN0cnVjdCBmZGlza19zY3JpcHQgKmRwLCBGSUxFICpmKQorIAorIAl3aGlsZSAoIWZlb2YoZikpIHsKKyAJCXJjID0gZmRpc2tfc2NyaXB0X3JlYWRfbGluZShkcCwgZiwgYnVmLCBzaXplb2YoYnVmKSk7CistCQlpZiAocmMpCisrCQlpZiAocmMgJiYgcmMgIT0gLUVOT1RTVVApCisgCQkJYnJlYWs7CisgCX0KKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvMDAwMS1sc2Jsay1mb3JjZS10by1wcmludC1QS05BTUUtZm9yLXBhcnRpdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LzAwMDEtbHNibGstZm9yY2UtdG8tcHJpbnQtUEtOQU1FLWZvci1wYXJ0aXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkNGMxNDguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvMDAwMS1sc2Jsay1mb3JjZS10by1wcmludC1QS05BTUUtZm9yLXBhcnRpdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gZTNiYjliZmI3NmMxN2IxZDA1ODE0NDM2Y2VkNjJjMDVjNDAxMWY0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEthcmVsIFphayA8a3pha0ByZWRoYXQuY29tPgotRGF0ZTogVGh1LCAyNyBKdW4gMjAxOSAwOToyMjoxOCArMDIwMAotU3ViamVjdDogW1BBVENIXSBsc2JsazogZm9yY2UgdG8gcHJpbnQgUEtOQU1FIGZvciBwYXJ0aXRpb24KLQotUEtOQU1FIChwYXJlbnQga2VybmVsIGRldmljZSBuYW1lKSBpcyBiYXNlZCBvbiBwcmludGVkIHRyZWUgYWNjb3JkaW5nCi10byBwYXJlbnQgLT4gY2hpbGQgcmVsYXRpb25zaGlwLiBUaGUgdHJlZSBpcyBvcHRpb25hbCBhbmQgbm90IHByaW50ZWQKLWlmIHBhcnRpdGlvbiBzcGVjaWZpZWQgKC5lLmcgImxzYmxrIC1vK1BLTkFNRSAvZGV2L3NkYTEiKSwgYnV0IG9sZAotdmVyc2lvbnMgcHJpbnQgdGhlIFBLTkFNRSBhbHNvIGluIHRoaXMgY2FzZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2thcmVsemFrL3V0aWwtbGludXgvY29tbWl0L2UzYmI5YmZiNzZjMTdiMWQwNTgxNDQzNmNlZDYyYzA1YzQwMTFmNDhdCi0KLUFkZHJlc3NlczogaHR0cHM6Ly9naXRodWIuY29tL2thcmVsemFrL3V0aWwtbGludXgvaXNzdWVzLzgxMwotU2lnbmVkLW9mZi1ieTogS2FyZWwgWmFrIDxremFrQHJlZGhhdC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBMaXdlaSBTb25nIDxsaXdlaS5zb25nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBtaXNjLXV0aWxzL2xzYmxrLmMgfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL21pc2MtdXRpbHMvbHNibGsuYyBiL21pc2MtdXRpbHMvbHNibGsuYwotaW5kZXggZTk1YWY3YWYwMjU2Li4zY2U2ZGE3MzAyNjQgMTAwNjQ0Ci0tLS0gYS9taXNjLXV0aWxzL2xzYmxrLmMKLSsrKyBiL21pc2MtdXRpbHMvbHNibGsuYwotQEAgLTEwMTksNiArMTAxOSw5IEBAIHN0YXRpYyB2b2lkIGRldmljZV90b19zY29scygKLSAJREJHKERFViwgdWxfZGVidWdvYmooZGV2LCAiYWRkICclcycgdG8gc2NvbHMiLCBkZXYtPm5hbWUpKTsKLSAJT05fREJHKERFViwgaWYgKHVsX3BhdGhfaXNvcGVuX2RpcmZkKGRldi0+c3lzZnMpKSB1bF9kZWJ1Z29iaihkZXYsICIgJXMgLS0tPiBpcyBvcGVuISIsIGRldi0+bmFtZSkpOwotIAotKwlpZiAoIXBhcmVudCAmJiBkZXYtPndob2xlZGlzaykKLSsJCXBhcmVudCA9IGRldi0+d2hvbGVkaXNrOwotKwotIAkvKiBEbyBub3QgcHJpbnQgZGV2aWNlIG1vcmUgdGhhbiBvbmUgaW4gLS1saXN0IG1vZGUgKi8KLSAJaWYgKCEobHNibGstPmZsYWdzICYgTFNCTEtfVFJFRSkgJiYgZGV2LT5pc19wcmludGVkKQotIAkJcmV0dXJuOwotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4zNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMzQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5YzJkODAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4zNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLXJlcXVpcmUgdXRpbC1saW51eC5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL2NvbmZpZ3VyZS1zYmluZGlyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW51c2VyLnBhbWQgXAotICAgICAgICAgICAgZmlsZTovL3J1bnVzZXItbC5wYW1kIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgIGZpbGU6Ly9kaXNwbGF5X3Rlc3RuYW1lX2Zvcl9zdWJ0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1sc2Jsay1mb3JjZS10by1wcmludC1QS05BTUUtZm9yLXBhcnRpdGlvbi5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiYTc4Y2JlYWVkOWMzOTA5NGI5NmE0OGJhOGY4OTFkNTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzQzZjlkMGM3MjUyYjZkYjI0NmI2NTljMWUxY2UwYmQ0NWQ4ZDQ1MDhiNGRmYTQyN2JiYjRhM2U5YjlmNjJiNSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMzUuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMzUuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTk2NGM5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4zNS4xLmJiCkBAIC0wLDAgKzEsMTQgQEAKK3JlcXVpcmUgdXRpbC1saW51eC5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovL2NvbmZpZ3VyZS1zYmluZGlyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ydW51c2VyLnBhbWQgXAorICAgICAgICAgICAgZmlsZTovL3J1bnVzZXItbC5wYW1kIFwKKyAgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgIGZpbGU6Ly9kaXNwbGF5X3Rlc3RuYW1lX2Zvcl9zdWJ0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1od2Nsb2NrLWZpeC1mb3ItZ2xpYmMtMi4zMS1zZXR0aW1lb2ZkYXkucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtbGliZmRpc2stc2NyaXB0LWFjY2VwdC1zZWN0b3Itc2l6ZS1pZ25vcmUtdW5rbm93bi1oZS5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiN2Y2NDg4MmY2MzEyMjVmMDI5NWNhMDUwODBjZWUxYmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDlkZTNlZGQyODczNjZjZDkwOGU3NzY3NzUxNGI5Mzg3YjIyYmM3Yjg4ZjQ1YjgzZTE5MjJjMzU5N2YxZDdmOSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC5pbmMKaW5kZXggNTBjNGQ4NC4uMTNmNTk2OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC5pbmMKQEAgLTI2LDcgKzI2LDcgQEAKICMgc28gd2UgY2hlY2sgdGhlIGxhdGVzdCB1cHN0cmVhbSBmcm9tIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBnZXQgdXBkYXRlZAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9hL2FwdC8iCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdXNlcmFkZAoraW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB1c2VyYWRkIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgogCiBFWFRSQV9BVVRPUkVDT05GID0gIi0tZXhjbHVkZT1hdXRvcG9pbnQsYXV0b2hlYWRlciIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2ZpbGVzL2FwdC5jb25mIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2ZpbGVzL2FwdC5jb25mCmluZGV4IDAzMzUxMzUuLmM5NWE1YjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9maWxlcy9hcHQuY29uZgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvZmlsZXMvYXB0LmNvbmYKQEAgLTM5LDQgKzM5LDQgQEAKICAgfTsKIH07CiAKLURQa2c6Ok9wdGlvbnMgeyItLXJvb3Q9I1JPT1RGUyMiOyItLWFkbWluZGlyPSNST09URlMjL3Zhci9saWIvZHBrZyI7Ii0tZm9yY2UtYWxsIjsiLS1uby1kZWJzaWcifTsKK0RQa2c6Ok9wdGlvbnMgeyItLXJvb3Q9I1JPT1RGUyMiOyItLWFkbWluZGlyPSNST09URlMjL3Zhci9saWIvZHBrZyI7Ii0tZm9yY2UtYWxsIjsiLS1uby1mb3JjZS1vdmVyd3JpdGUiOyItLW5vLWRlYnNpZyJ9OwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlXzIwMTkuMDEuMDYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi1hcmNoaXZlL2F1dG9jb25mLWFyY2hpdmVfMjAxOS4wMS4wNi5iYgppbmRleCA5ODVhMjU0Li4xMzU5M2Q3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi1hcmNoaXZlL2F1dG9jb25mLWFyY2hpdmVfMjAxOS4wMS4wNi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi1hcmNoaXZlL2F1dG9jb25mLWFyY2hpdmVfMjAxOS4wMS4wNi5iYgpAQCAtOSw3ICs5LDcgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJkNDY0MTNjOGIwMGExMjViMTUyOWJhZTM4NWJiZWM1NSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIxNzE5NWM4MzMwOThkYTc5ZGU1Nzc4ZWU5MDk0OGY0YzVkOTBlZDFhMGNmODM5MWI0YWIzNDhlMmVjNTExZTNmIgogCi1pbmhlcml0IGF1dG90b29scyBhbGxhcmNoCitpbmhlcml0IGF1dG90b29scyBhbGxhcmNoIHRleGluZm8KIAogUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tZG9jIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjMyLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDljM2UxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzIuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotTElDX0ZJTEVTX0NIS1NVTT0iXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MlwKLSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTlmNjA0ZDhhNGY4ZTc0ZjRmNTE0MDg0NWEyMWI2Njc0XAotICAgIGZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCi0gICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjZcCi0gICAgZmlsZTovL2dhcy9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKLSAgICBmaWxlOi8vaW5jbHVkZS9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MlwKLSAgICBmaWxlOi8vaW5jbHVkZS9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCi0gICAgZmlsZTovL2xpYmliZXJ0eS9DT1BZSU5HLkxJQjttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzdcCi0gICAgZmlsZTovL2JmZC9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKLSAgICAiCi0KLWRlZiBiaW51dGlsc19icmFuY2hfdmVyc2lvbihkKToKLSAgICBwdnNwbGl0ID0gZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKQotICAgIHJldHVybiBwdnNwbGl0WzBdICsgIl8iICsgcHZzcGxpdFsxXQotCi0jIFdoZW4gdXBncmFkaW5nIHRvIDIuMzMsIHBsZWFzZSBtYWtlIHN1cmUgdGhlcmUgaXMgbm8gdHJhaWxpbmcgLjAsIHNvCi0jIHRoYXQgdXBzdHJlYW0gdmVyc2lvbiBjaGVjayBjYW4gd29yayBjb3JyZWN0bHkuCi1QViA9ICIyLjMyLjAiCi1DVkVfVkVSU0lPTiA9ICIyLjMyIgotQklOVVBWID0gIiR7QGJpbnV0aWxzX2JyYW5jaF92ZXJzaW9uKGQpfSIKLSNCUkFOQ0ggPSAiYmludXRpbHMtJHtCSU5VUFZ9LWJyYW5jaCIKLUJSQU5DSCA/PSAiYmludXRpbHMtMl8zMi1icmFuY2giCi0KLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gImJpbnV0aWxzLSg/UDxwdmVyPlxkK18oXGRfPykqKSIKLQotU1JDUkVWID89ICJiOGMxZjYwOGRiOWVmM2VkZDQ4M2QyMWE5MjFkMWZiZWRjNzFkZjZmIgotQklOVVRJTFNfR0lUX1VSSSA/PSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2JpbnV0aWxzLWdkYi5naXQ7YnJhbmNoPSR7QlJBTkNIfTtwcm90b2NvbD1naXQiCi1TUkNfVVJJID0gIlwKLSAgICAgJHtCSU5VVElMU19HSVRfVVJJfSBcCi0gICAgIGZpbGU6Ly8wMDAzLWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwNS1Pbmx5LWdlbmVyYXRlLWFuLVJQQVRILWVudHJ5LWlmLUxEX1JVTl9QQVRILWlzLW5vdC1lLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDYtVXNlLWxpYnRvb2wtMi40LnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDctZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA4LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwOS1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDEwLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTEtQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDEyLWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTMtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxNC1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTUtYmludXRpbHMtZW5hYmxlLXg4Nl82NC1wZXAtZm9yLXByb2R1Y2luZy1FRkktYmluYXJpZS5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxOS05MDc0LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE5LTkwNzUucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTktOTA3Ni5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxOS05MDc3LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE5LTkwNzEucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTktMTI5NzIucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTktMTQyNTAucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTktMTQ0NDQucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTktMTc0NTAucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTktMTc0NTEucGF0Y2ggXAotIgotUyAgPSAiJHtXT1JLRElSfS9naXQiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICAgICAgcm0gLXJmICR7U30vZ2RiICR7U30vbGliZGVjbnVtYmVyICR7U30vcmVhZGxpbmUgJHtTfS9zaW0KLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4zNC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZhMzg1MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzQuaW5jCkBAIC0wLDAgKzEsNDYgQEAKK0xJQ19GSUxFU19DSEtTVU09IlwKKyAgICBmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTJcCisgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT05ZjYwNGQ4YTRmOGU3NGY0ZjUxNDA4NDVhMjFiNjY3NFwKKyAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAorICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2XAorICAgIGZpbGU6Ly9nYXMvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCisgICAgZmlsZTovL2luY2x1ZGUvQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTJcCisgICAgZmlsZTovL2luY2x1ZGUvQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAorICAgIGZpbGU6Ly9saWJpYmVydHkvQ09QWUlORy5MSUI7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3XAorICAgIGZpbGU6Ly9iZmQvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCisgICAgIgorCitkZWYgYmludXRpbHNfYnJhbmNoX3ZlcnNpb24oZCk6CisgICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKKyAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KKworIyBXaGVuIHVwZ3JhZGluZyB0byAyLjM1LCBwbGVhc2UgbWFrZSBzdXJlIHRoZXJlIGlzIG5vIHRyYWlsaW5nIC4wLCBzbworIyB0aGF0IHVwc3RyZWFtIHZlcnNpb24gY2hlY2sgY2FuIHdvcmsgY29ycmVjdGx5LgorUFYgPSAiMi4zNCIKK0NWRV9WRVJTSU9OID0gIjIuMzQiCitCSU5VUFYgPSAiJHtAYmludXRpbHNfYnJhbmNoX3ZlcnNpb24oZCl9IgorI0JSQU5DSCA9ICJiaW51dGlscy0ke0JJTlVQVn0tYnJhbmNoIgorQlJBTkNIID89ICJiaW51dGlscy0yXzM0LWJyYW5jaCIKKworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiYmludXRpbHMtKD9QPHB2ZXI+XGQrXyhcZF8/KSopIgorCitTUkNSRVYgPz0gImQ0YjUwOTk5YjNiMjg3YjVmOTg0YWRlMmY4NzM0YWE4YzkzNTk0NDAiCitCSU5VVElMU19HSVRfVVJJID89ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvYmludXRpbHMtZ2RiLmdpdDticmFuY2g9JHtCUkFOQ0h9O3Byb3RvY29sPWdpdCIKK1NSQ19VUkkgPSAiXAorICAgICAke0JJTlVUSUxTX0dJVF9VUkl9IFwKKyAgICAgZmlsZTovLzAwMDQtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwNS1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA2LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwNy1Vc2UtbGlidG9vbC0yLjQucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwOC1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDEwLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxNC1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxNi1DaGVjay1mb3ItY2xhbmctYmVmb3JlLWNoZWNraW5nLWdjYy12ZXJzaW9uLnBhdGNoIFwKKyAgICAgZmlsZTovL0NWRS0yMDIwLTA1NTEucGF0Y2ggXAorIgorUyAgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy1jYW5hZGlhbl8yLjMyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtY2FuYWRpYW5fMi4zNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtY2FuYWRpYW5fMi4zMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtY2FuYWRpYW5fMi4zNC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtdGVzdHN1aXRlXzIuMzIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy10ZXN0c3VpdGVfMi4zNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtdGVzdHN1aXRlXzIuMzIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzLXRlc3RzdWl0ZV8yLjM0LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc18yLjMyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4zNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4zMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4zNC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NzZGtfMi4zMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMzQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMzIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMzQuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLmluYwppbmRleCAwZmI2Y2FlLi5lOTNjZDUwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMuaW5jCkBAIC0xMywxNyArMTMsMTIgQEAKIAogREVQRU5EUyA9ICJmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgemxpYi1uYXRpdmUgZ251LWNvbmZpZy1uYXRpdmUgYXV0b2NvbmYtbmF0aXZlIgogCi0jCi0jIHdlIG5lZWQgY2hycGF0aCA+IDAuMTQgYW5kIHNvbWUgZGlzdHJvcyBsaWtlIGNlbnRvcyA3IHN0aWxsIGhhdmUgb2xkZXIgY2hycGF0aAotIwotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBjaHJwYXRoLXJlcGxhY2VtZW50LW5hdGl2ZSIKLUVYVFJBTkFUSVZFUEFUSF9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBjaHJwYXRoLW5hdGl2ZSIKLQogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBtdWx0aWxpYl9oZWFkZXIgdGV4aW5mbwogCiBGSUxFU18ke1BOfSA9ICIgXAogCSR7YmluZGlyfS8ke1RBUkdFVF9QUkVGSVh9KiBcCi0JJHtsaWJkaXJ9L2xpYiotKi5zbyBcCisJJHtsaWJkaXJ9L2xpYiouc28uKiBcCisJJHtsaWJkaXJ9L2xpYiotJHtQVn0qLnNvIFwKIAkke3ByZWZpeH0vJHtUQVJHRVRfU1lTfS9iaW4vKiBcCiAgICAgICAgICR7YmluZGlyfS9lbWJlZHNwdSIKIApAQCAtMzMsNiArMjgsOCBAQAogCSR7aW5jbHVkZWRpcn0gXAogCSR7bGliZGlyfS8qLmxhIFwKIAkke2xpYmRpcn0vbGliYmZkLnNvIFwKKwkke2xpYmRpcn0vbGliY3RmLnNvIFwKKwkke2xpYmRpcn0vbGliY3RmLW5vYmZkLnNvIFwKIAkke2xpYmRpcn0vbGlib3Bjb2Rlcy5zbyIKIAogIyBSYXRoZXIgdGhhbiBkdXBsaWNhdGluZyBtdWx0aXBsZSBlbnRyaWVzIGZvciB0aGVzZSwgbWFrZSBvbmUKQEAgLTQwLDYgKzM3LDggQEAKIAogTERHT0xEX0FMVFMgPz0gImxkLmdvbGQgZHdwIgogTERHT0xEX0FMVFNfcmlzY3Y2NCA9ICIiCitMREdPTERfQUxUU19yaXNjdjMyID0gIiIKK0xER09MRF9BTFRTX2xpYmMtZ2xpYmNfbWlwc2FyY2ggPSAiIgogCiBVU0VfQUxURVJOQVRJVkVTX0ZPUiA9ICIgXAogCWFkZHIybGluZSBcCkBAIC03NiwxMyArNzUsMjUgQEAKICAgICAgICAgICAgICAgICAtLWRpc2FibGUtd2Vycm9yIFwKICAgICAgICAgICAgICAgICAtLWVuYWJsZS1kZXRlcm1pbmlzdGljLWFyY2hpdmVzIFwKICAgICAgICAgICAgICAgICAtLWVuYWJsZS1wbHVnaW5zIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ2RiIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ2Ric2VydmVyIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliZGVjbnVtYmVyIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtcmVhZGxpbmUgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zaW0gXAogICAgICAgICAgICAgICAgICR7TERHT0xEfSBcCisgICAgICAgICAgICAgICAgJHtFWFRSQV9UQVJHRVRTfSBcCiAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdtdWx0aWFyY2gnLCAnLS1lbmFibGUtNjQtYml0LWJmZCcsICcnLCBkKX0iCiAKK0VYVFJBX1RBUkdFVFMgPSAiIgorRVhUUkFfVEFSR0VUU194ODYtNjQgPSAiIC0tZW5hYmxlLXRhcmdldHM9eDg2XzY0LXBlLHg4Nl82NC1wZXAgIgorRVhUUkFfVEFSR0VUU19jbGFzcy1uYXRpdmUgPSAiIgorCiBMREdPTERfY2xhc3MtbmF0aXZlID0gIiIKIExER09MRF9jbGFzcy1jcm9zc3NkayA9ICIiCitMREdPTERfbGliYy1nbGliY19taXBzYXJjaCA9ICIiCiBMREdPTEQgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICctLWVuYWJsZS1nb2xkPWRlZmF1bHQgLS1lbmFibGUtdGhyZWFkcycsICctLWVuYWJsZS1nb2xkIC0tZW5hYmxlLWxkPWRlZmF1bHQgLS1lbmFibGUtdGhyZWFkcycsIGQpfSIKIAorCiAjIFRoaXMgaXMgbmVjZXNzYXJ5IGR1ZSB0byBhIGJ1ZyBpbiB0aGUgYmludXRpbHMgTWFrZWZpbGVzCiAjIEVYVFJBX09FTUFLRSA9ICJjb25maWd1cmUtYnVpbGQtbGliaWJlcnR5IGFsbCIKIApAQCAtMTEwLDcgKzEyMSw4IEBACiBNVUxUSUFSQ0ggOj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAibXVsdGlhcmNoIiwgInllcyIsICJubyIsIGQpfSIKIGRvX2NvbmZpZ3VyZVt2YXJkZXBzXSArPSAiTVVMVElBUkNIIgogZG9fY29uZmlndXJlICgpIHsKLQkoY2QgJHtTfTsgZ251LWNvbmZpZ2l6ZSkgfHwgZGllICJGYWlsZWQgdG8gcnVuIGdudS1jb25maWdpemUiCisJKGNkICR7U30gJiYgZ251LWNvbmZpZ2l6ZSkKKwogCW9lX3J1bmNvbmYKICMKICMgbXVzdCBwcmltZSBjb25maWcuY2FjaGUgdG8gZW5zdXJlIHRoZSBidWlsZCBvZiBsaWJpYmVydHkKQEAgLTEyMSwxMCArMTMzLDYgQEAKIAlkb25lCiB9CiAKLWRvX2NvbXBpbGVfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQljaHJwYXRoIC1kICR7Qn0vYmludXRpbHMvZWxmZWRpdAotCWNocnBhdGggLWQgJHtCfS9iaW51dGlscy9yZWFkZWxmCi19CiBkb19pbnN0YWxsICgpIHsKIAlhdXRvdG9vbHNfZG9faW5zdGFsbAogCkBAIC0xNDQsNiArMTUyLDExIEBACiAJaW5zdGFsbCAtbSA2NDQgJHtTfS9pbmNsdWRlL2Fuc2lkZWNsLmggJHtEfSR7aW5jbHVkZWRpcn0KIAlpbnN0YWxsIC1tIDY0NCAke1N9L2luY2x1ZGUvbGliaWJlcnR5LmggJHtEfSR7aW5jbHVkZWRpcn0KIAorCSMgaW5zYWxsIHBpYyB2ZXJzaW9uIG9mIGxpYmliZXJ0eSBpZiBhdmFpbGFibGUKKyAgICAgICAgaWYgWyAtZSAke0J9L2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEgXTsgdGhlbgorCQlpbnN0YWxsIC1EbSAwNjQ0ICR7Qn0vbGliaWJlcnR5L3BpYy9saWJpYmVydHkuYSAke0R9JHtsaWJkaXJ9L2xpYmliZXJ0eS5hCisJZmkKKwogCWNkICR7RH0ke2JpbmRpcn0KIAogCSMgU3ltbGlua3MgZm9yIGVhc2Ugb2YgcnVubmluZyB0aGVzZSBvbiB0aGUgbmF0aXZlIHRhcmdldApAQCAtMTU2LDYgKzE2OSw4IEBACiAJZG9uZQogCiAJb2VfbXVsdGlsaWJfaGVhZGVyIGJmZC5oCisgICAgICAgICMgYmZkX3N0ZGludC5oIGVuY29kZXMgdGhlIGNvbXBpbGVyIG5hbWUgaW4gdGhlIGhlYWRlcgorICAgICAgICBzZWQgLWkgJHtEfSR7aW5jbHVkZWRpcn0vYmZkX3N0ZGludC5oIC1lICJzLCR7VEFSR0VUX1BSRUZJWH0sLCIKIH0KIAogaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCkBAIC0xNjMsMyArMTc4LDggQEAKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKIAogQUxURVJOQVRJVkVfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gIiR7VVNFX0FMVEVSTkFUSVZFU19GT1J9IgorCitweXRob24gKCkgeworICAgIGlmIGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsIFRydWUsIEZhbHNlLCBkKSBhbmQgYmIudXRpbHMuY29udGFpbnNfYW55KCdUQVJHRVRfQVJDSCcsICdyaXNjdjMyIHJpc2N2NjQnLCBUcnVlLCBGYWxzZSwgZCk6CisgICAgICAgIGJiLmZhdGFsKCJHb2xkIGxpbmtlciBkb2VzIG5vdCBfeWV0XyBzdXBwb3J0IFJJU0MtViBhcmNoaXRlY3R1cmUgcGxlYXNlIHJlbW92ZSBsZC1pcy1nb2xkIGZyb20gRElTVFJPX0ZFQVRVUkVTIikKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDEtYmludXRpbHMtY3Jvc3NzZGstR2VuZXJhdGUtcmVsb2NhdGFibGUtU0RLcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDEtYmludXRpbHMtY3Jvc3NzZGstR2VuZXJhdGUtcmVsb2NhdGFibGUtU0RLcy5wYXRjaAppbmRleCA2NTgxYmFkLi4xNGU4NDIxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAxLWJpbnV0aWxzLWNyb3Nzc2RrLUdlbmVyYXRlLXJlbG9jYXRhYmxlLVNES3MucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMS1iaW51dGlscy1jcm9zc3Nkay1HZW5lcmF0ZS1yZWxvY2F0YWJsZS1TREtzLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA1YmNkODg0ZjhhZjUxMDZkMGZhMzgwYzQyY2ZmZTA3ZjNjOTkzZWQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiMDVmMGJlMTNhYWRmMGIyNmEwYjM5ZGZlN2RhZjJjNDdhMzAwMzM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTo1ODo1NCArMDAwMAotU3ViamVjdDogW1BBVENIIDAxLzE1XSBiaW51dGlscy1jcm9zc3NkazogR2VuZXJhdGUgcmVsb2NhdGFibGUgU0RLcworU3ViamVjdDogW1BBVENIXSBiaW51dGlscy1jcm9zc3NkazogR2VuZXJhdGUgcmVsb2NhdGFibGUgU0RLcwogCiBUaGlzIHBhdGNoIHdpbGwgbW9kaWZ5IHRoZSBFTEYgbGlua2VyIHNjcmlwdHMgc28gdGhhdCB0aGUgY3Jvc3NzZGsKIGxpbmtlciB3aWxsIGdlbmVyYXRlIGJpbmFyaWVzIHdpdGggYSA0MDk2IGJ5dGVzIFBUX0lOVEVSUCBzZWN0aW9uLiBXaGVuIHRoZSBiaW5hcmllcwpAQCAtMTgsMzUgKzE4LDM1IEBACiAgMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9sZC9nZW5zY3JpcHRzLnNoIGIvbGQvZ2Vuc2NyaXB0cy5zaAotaW5kZXggNzdkZGJiYzhmOC4uZDc4OWU3Nzk0MyAxMDA3NTUKK2luZGV4IDAzMzkyZDI2NWMuLjQzNTY4OWVhMTQgMTAwNzU1CiAtLS0gYS9sZC9nZW5zY3JpcHRzLnNoCiArKysgYi9sZC9nZW5zY3JpcHRzLnNoCi1AQCAtMzEwLDYgKzMxMCw3IEBAIERBVEFfQUxJR05NRU5UX3U9IiR7REFUQV9BTElHTk1FTlRfdS0ke0RBVEFfQUxJR05NRU5UX3J9fSIKK0BAIC0zMDQsNiArMzA0LDcgQEAgREFUQV9BTElHTk1FTlRfdT0iJHtEQVRBX0FMSUdOTUVOVF91LSR7REFUQV9BTElHTk1FTlRfcn19IgogIExEX0ZMQUc9cgogIERBVEFfQUxJR05NRU5UPSR7REFUQV9BTElHTk1FTlRfcn0KICBERUZBVUxUX0RBVEFfQUxJR05NRU5UPSJBTElHTigke1NFR01FTlRfU0laRX0pIgogK1BBUlRJQUxfTElOS0lORz0iICIKLSAoIGVjaG8gIi8qIFNjcmlwdCBmb3IgbGQgLXI6IGxpbmsgd2l0aG91dCByZWxvY2F0aW9uICovIgotICAgLiAke0NVU1RPTUlaRVJfU0NSSVBUfQotICAgLiAke3NyY2Rpcn0vc2NyaXB0dGVtcGwvJHtTQ1JJUFRfTkFNRX0uc2MKLUBAIC0zMTgsMTAgKzMxOSwxMiBAQCBERUZBVUxUX0RBVEFfQUxJR05NRU5UPSJBTElHTigke1NFR01FTlRfU0laRX0pIgorICggZWNobyAiLyogU2NyaXB0IGZvciAtciAqLyIKKyAgIHNvdXJjZV9zaCAke0NVU1RPTUlaRVJfU0NSSVBUfQorICAgc291cmNlX3NoICR7c3JjZGlyfS9zY3JpcHR0ZW1wbC8ke1NDUklQVF9OQU1FfS5zYworQEAgLTMxMiwxMCArMzEzLDEyIEBAIERFRkFVTFRfREFUQV9BTElHTk1FTlQ9IkFMSUdOKCR7U0VHTUVOVF9TSVpFfSkiCiAgTERfRkxBRz11CiAgREFUQV9BTElHTk1FTlQ9JHtEQVRBX0FMSUdOTUVOVF91fQogIENPTlNUUlVDVElORz0iICIKICtQQVJUSUFMX0xJTktJTkc9IiAiCi0gKCBlY2hvICIvKiBTY3JpcHQgZm9yIGxkIC1VcjogbGluayB3L291dCByZWxvY2F0aW9uLCBkbyBjcmVhdGUgY29uc3RydWN0b3JzICovIgotICAgLiAke0NVU1RPTUlaRVJfU0NSSVBUfQotICAgLiAke3NyY2Rpcn0vc2NyaXB0dGVtcGwvJHtTQ1JJUFRfTkFNRX0uc2MKKyAoIGVjaG8gIi8qIFNjcmlwdCBmb3IgLVVyICovIgorICAgc291cmNlX3NoICR7Q1VTVE9NSVpFUl9TQ1JJUFR9CisgICBzb3VyY2Vfc2ggJHtzcmNkaXJ9L3NjcmlwdHRlbXBsLyR7U0NSSVBUX05BTUV9LnNjCiAgKSB8IHNlZCAtZSAnL14gKiQvZDtzL1sJIF0qJC8vJyA+IGxkc2NyaXB0cy8ke0VNVUxBVElPTl9OQU1FfS54dQogK3Vuc2V0IFBBUlRJQUxfTElOS0lORwogIAogIERBVEFfQUxJR05NRU5UPSR7REFUQV9BTElHTk1FTlRffQogIFJFTE9DQVRJTkc9IiAiCiBkaWZmIC0tZ2l0IGEvbGQvc2NyaXB0dGVtcGwvZWxmLnNjIGIvbGQvc2NyaXB0dGVtcGwvZWxmLnNjCi1pbmRleCBiZDc1ODQxMjBlLi44YmJlMDUyZDRiIDEwMDY0NAoraW5kZXggMGI4YjMyYTQ0MC4uZWU2YjcxMDc1ZCAxMDA2NDQKIC0tLSBhL2xkL3NjcmlwdHRlbXBsL2VsZi5zYwogKysrIGIvbGQvc2NyaXB0dGVtcGwvZWxmLnNjCi1AQCAtMTM5LDggKzEzOSw4IEBAIGlmIHRlc3QgLXogIiREQVRBX1NFR01FTlRfQUxJR04iOyB0aGVuCitAQCAtMTQwLDggKzE0MCw4IEBAIGlmIHRlc3QgLXogIiREQVRBX1NFR01FTlRfQUxJR04iOyB0aGVuCiAgICAgIERBVEFfU0VHTUVOVF9SRUxST19FTkQ9Ii4gPSBEQVRBX1NFR01FTlRfUkVMUk9fRU5EICgke1NFUEFSQVRFX0dPVFBMVC0wfSwgLik7IgogICAgZmkKICBmaQpAQCAtNTcsNiArNTcsMyBAQAogIGZpCiAgaWYgdGVzdCAteiAiJFBMVCI7IHRoZW4KICAgIElQTFQ9Ii5pcGx0ICAgICAgICAgJHtSRUxPQ0FUSU5HLTB9IDogeyAqKC5pcGx0KSB9IgotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMi1iaW51dGlscy1jcm9zcy1Eby1ub3QtZ2VuZXJhdGUtbGlua2VyLXNjcmlwdC1kaXJlY3RvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMi1iaW51dGlscy1jcm9zcy1Eby1ub3QtZ2VuZXJhdGUtbGlua2VyLXNjcmlwdC1kaXJlY3RvLnBhdGNoCmluZGV4IDMyNTM3ZDQuLjkxZGU5NGIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItYmludXRpbHMtY3Jvc3MtRG8tbm90LWdlbmVyYXRlLWxpbmtlci1zY3JpcHQtZGlyZWN0by5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAyLWJpbnV0aWxzLWNyb3NzLURvLW5vdC1nZW5lcmF0ZS1saW5rZXItc2NyaXB0LWRpcmVjdG8ucGF0Y2gKQEAgLTEsOCArMSw3IEBACi1Gcm9tIDExOTI3OTEzNTYwZmM1YTVkNTFhZjNiYzVlYjhhZDYyYTg2Yzk4NDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDZkNzlmODEzMzZlN2NiZTcyN2I1YTUxMTM0ZjVkMzE0YTQ1NTM3OWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCA2IE1hciAyMDE3IDIzOjM3OjA1IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMTVdIGJpbnV0aWxzLWNyb3NzOiBEbyBub3QgZ2VuZXJhdGUgbGlua2VyIHNjcmlwdAotIGRpcmVjdG9yaWVzCitTdWJqZWN0OiBbUEFUQ0hdIGJpbnV0aWxzLWNyb3NzOiBEbyBub3QgZ2VuZXJhdGUgbGlua2VyIHNjcmlwdCBkaXJlY3RvcmllcwogCiBXZSBkb24ndCBwbGFjZSB0YXJnZXQgbGlicmFyaWVzIHdpdGhpbiAke2V4ZWNfcHJlZml4fSwgd2UnZCBhbHdheXMgcGxhY2UgdGhlc2UKIHdpdGhpbiB0aGUgdGFyZ2V0IHN5c3Jvb3Qgd2l0aGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGRpcmVjdG9yaWVzLiBXb3JzZSwgdGhlCkBAIC0yMywxMCArMjIsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMjUgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9sZC9nZW5zY3JpcHRzLnNoIGIvbGQvZ2Vuc2NyaXB0cy5zaAotaW5kZXggZDc4OWU3Nzk0My4uMTQ0ZTJlODczNiAxMDA3NTUKK2luZGV4IDQzNTY4OWVhMTQuLmNmZjhhMTQ2N2YgMTAwNzU1CiAtLS0gYS9sZC9nZW5zY3JpcHRzLnNoCiArKysgYi9sZC9nZW5zY3JpcHRzLnNoCi1AQCAtMjIwLDMxICsyMjAsNiBAQCBhcHBlbmRfdG9fbGliX3BhdGgoKQorQEAgLTIzNSwzMSArMjM1LDYgQEAgYXBwZW5kX3RvX2xpYl9wYXRoKCkKICAgIGZpCiAgfQogIApAQCAtNTgsNiArNTcsMyBAQAogIGlmIFsgIngke0xJQl9QQVRIfSIgPSAieCIgXSAmJiBbICJ4JHtVU0VfTElCUEFUSH0iID0geHllcyBdIDsgdGhlbgogICAgbGlicz0ke05BVElWRV9MSUJfRElSU30KICAgIGlmIFsgIngke05BVElWRX0iID0gInh5ZXMiIF0gOyB0aGVuCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWJpbnV0aWxzLW5hdGl2ZXNkay1TZWFyY2gtZm9yLWFsdGVybmF0aXZlLWxkLnNvLmNvbmYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWJpbnV0aWxzLW5hdGl2ZXNkay1TZWFyY2gtZm9yLWFsdGVybmF0aXZlLWxkLnNvLmNvbmYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGI0ZDczZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtYmludXRpbHMtbmF0aXZlc2RrLVNlYXJjaC1mb3ItYWx0ZXJuYXRpdmUtbGQuc28uY29uZi5wYXRjaApAQCAtMCwwICsxLDk1IEBACitGcm9tIGQwNTdiMjE1ZjExNGY2MTU4YjQwMTBhYjQ0YTE5Y2FlOWRjYzgzODYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK0RhdGU6IFdlZCwgMTkgRmViIDIwMjAgMDk6NTE6MTYgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gYmludXRpbHMtbmF0aXZlc2RrOiBTZWFyY2ggZm9yIGFsdGVybmF0aXZlIGxkLnNvLmNvbmYgaW4gU0RLCisgaW5zdGFsbGF0aW9uCisKK1dlIG5lZWQgYmludXRpbHMgdG8gbG9vayBhdCBvdXIgbGQuc28uY29uZiBmaWxlIHdpdGhpbiB0aGUgU0RLIHRvIGVuc3VyZQord2Ugc2VhcmNoIHRoZSBTREsncyBsaWJkaXJzIGFzIHdlbGwgYXMgdGhvc2UgZnJvbSB0aGUgaG9zdCBzeXN0ZW0uCisKK1dlIHRoZXJlZm9yZSBwYXNzIGluIHRoZSBkaXJlY3RvcnkgdG8gdGhlIGNvZGUgdXNpbmcgYSBkZWZpbmUsIHRoZW4gYWRkCitpdCB0byBhIHNlY3Rpb24gd2UgcmVsb2NhdGUgaW4gYSBzaW1pbGFyIHdheSB0byB0aGUgd2F5IHdlIHJlbG9jYXRlIHRoZQorZ2NjIGludGVybmFsIHBhdGhzLiBUaGlzIGVuc3VyZXMgdGhhdCBsZCB3b3JrcyBjb3JyZWN0bHkgaW4gb3VyIGJ1aWxkdG9vbHMKK3RhcmJhbGwuCisKK1N0YW5kYXJkIHN5c3Jvb3QgcmVsb2NhdGlvbiBkb2Vzbid0IHdvcmsgc2luY2Ugd2UncmUgbm90IGluIGEgc3lzcm9vdCwKK3dlIHdhbnQgdG8gdXNlIGJvdGggdGhlIGhvc3Qgc3lzdGVtIGFuZCBTREsgbGlicy4KKworU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisyMDIwLzEvMTcKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWMgdHdlYWtdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsZC9NYWtlZmlsZS5hbSB8IDMgKystCisgbGQvTWFrZWZpbGUuaW4gfCAzICsrLQorIGxkL2xkZWxmLmMgICAgIHwgMiArLQorIGxkL2xkbWFpbi5jICAgIHwgMSArCisgbGQvbGRtYWluLmggICAgfCAxICsKKyA1IGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xkL01ha2VmaWxlLmFtIGIvbGQvTWFrZWZpbGUuYW0KK2luZGV4IDRhOWI4NDA0YjcuLjFjMTMyZDNjZTQgMTAwNjQ0CistLS0gYS9sZC9NYWtlZmlsZS5hbQorKysrIGIvbGQvTWFrZWZpbGUuYW0KK0BAIC00Miw3ICs0Miw4IEBAIFpMSUJJTkMgPSBAemxpYmluY0AKKyAKKyBFTEZfQ0xGQUdTPS1ERUxGX0xJU1RfT1BUSU9OUz1AZWxmX2xpc3Rfb3B0aW9uc0AgXAorIAkgICAtREVMRl9TSExJQl9MSVNUX09QVElPTlM9QGVsZl9zaGxpYl9saXN0X29wdGlvbnNAIFwKKy0JICAgLURFTEZfUExUX1VOV0lORF9MSVNUX09QVElPTlM9QGVsZl9wbHRfdW53aW5kX2xpc3Rfb3B0aW9uc0AKKysJICAgLURFTEZfUExUX1VOV0lORF9MSVNUX09QVElPTlM9QGVsZl9wbHRfdW53aW5kX2xpc3Rfb3B0aW9uc0AgXAorKyAgICAgICAgICAgLURTWVNDT05GRElSPSJcIiQoc3lzY29uZmRpcilcIiIKKyBXQVJOX0NGTEFHUyA9IEBXQVJOX0NGTEFHU0AKKyBOT19XRVJST1IgPSBATk9fV0VSUk9SQAorIEFNX0NGTEFHUyA9ICQoV0FSTl9DRkxBR1MpICQoRUxGX0NMRkFHUykKK2RpZmYgLS1naXQgYS9sZC9NYWtlZmlsZS5pbiBiL2xkL01ha2VmaWxlLmluCitpbmRleCA0NmQ5YjE0MDc3Li5lNDUzYmMxYjMzIDEwMDY0NAorLS0tIGEvbGQvTWFrZWZpbGUuaW4KKysrKyBiL2xkL01ha2VmaWxlLmluCitAQCAtNTU1LDcgKzU1NSw4IEBAIFpMSUIgPSBAemxpYmRpckAgLWx6CisgWkxJQklOQyA9IEB6bGliaW5jQAorIEVMRl9DTEZBR1MgPSAtREVMRl9MSVNUX09QVElPTlM9QGVsZl9saXN0X29wdGlvbnNAIFwKKyAJICAgLURFTEZfU0hMSUJfTElTVF9PUFRJT05TPUBlbGZfc2hsaWJfbGlzdF9vcHRpb25zQCBcCistCSAgIC1ERUxGX1BMVF9VTldJTkRfTElTVF9PUFRJT05TPUBlbGZfcGx0X3Vud2luZF9saXN0X29wdGlvbnNACisrCSAgIC1ERUxGX1BMVF9VTldJTkRfTElTVF9PUFRJT05TPUBlbGZfcGx0X3Vud2luZF9saXN0X29wdGlvbnNAIFwKKysgICAgICAgICAgIC1EU1lTQ09ORkRJUj0iXCIkKHN5c2NvbmZkaXIpXCIiCisgCisgQU1fQ0ZMQUdTID0gJChXQVJOX0NGTEFHUykgJChFTEZfQ0xGQUdTKQorIEBFTkFCTEVfUExVR0lOU19GQUxTRUBQTFVHSU5fQyA9IAorZGlmZiAtLWdpdCBhL2xkL2xkZWxmLmMgYi9sZC9sZGVsZi5jCitpbmRleCAyZTI3Y2Y0OGE4Li5hMDk1ZDZhYWM1IDEwMDY0NAorLS0tIGEvbGQvbGRlbGYuYworKysrIGIvbGQvbGRlbGYuYworQEAgLTkwNyw3ICs5MDcsNyBAQCBsZGVsZl9jaGVja19sZF9zb19jb25mIChjb25zdCBzdHJ1Y3QgYmZkX2xpbmtfbmVlZGVkX2xpc3QgKmwsIGludCBmb3JjZSwKKyAKKyAgICAgICBpbmZvLnBhdGggPSBOVUxMOworICAgICAgIGluZm8ubGVuID0gaW5mby5hbGxvYyA9IDA7CistICAgICAgdG1wcGF0aCA9IGNvbmNhdCAobGRfc3lzcm9vdCwgcHJlZml4LCAiL2V0Yy9sZC5zby5jb25mIiwKKysgICAgICB0bXBwYXRoID0gY29uY2F0IChsZF9zeXNjb25mZGlyLCAiL2xkLnNvLmNvbmYiLAorIAkJCShjb25zdCBjaGFyICopIE5VTEwpOworICAgICAgIGlmICghbGRlbGZfcGFyc2VfbGRfc29fY29uZiAoJmluZm8sIHRtcHBhdGgpKQorIAl7CitkaWZmIC0tZ2l0IGEvbGQvbGRtYWluLmMgYi9sZC9sZG1haW4uYworaW5kZXggYzRhZjEwZjRlOS4uZGExYWQxNzc2MyAxMDA2NDQKKy0tLSBhL2xkL2xkbWFpbi5jCisrKysgYi9sZC9sZG1haW4uYworQEAgLTY5LDYgKzY5LDcgQEAgY2hhciAqcHJvZ3JhbV9uYW1lOworIAorIC8qIFRoZSBwcmVmaXggZm9yIHN5c3RlbSBsaWJyYXJ5IGRpcmVjdG9yaWVzLiAgKi8KKyBjb25zdCBjaGFyICpsZF9zeXNyb290OworK2NoYXIgbGRfc3lzY29uZmRpcls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTWVNDT05GRElSOworIAorIC8qIFRoZSBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gb2YgbGRfc3lzcm9vdC4gICovCisgY2hhciAqbGRfY2Fub25fc3lzcm9vdDsKK2RpZmYgLS1naXQgYS9sZC9sZG1haW4uaCBiL2xkL2xkbWFpbi5oCitpbmRleCAwZjA1ODIxZDFlLi41NGMzNmE5NGNlIDEwMDY0NAorLS0tIGEvbGQvbGRtYWluLmgKKysrKyBiL2xkL2xkbWFpbi5oCitAQCAtMjMsNiArMjMsNyBAQAorIAorIGV4dGVybiBjaGFyICpwcm9ncmFtX25hbWU7CisgZXh0ZXJuIGNvbnN0IGNoYXIgKmxkX3N5c3Jvb3Q7CisrZXh0ZXJuIGNoYXIgbGRfc3lzY29uZmRpcls0MDk2XTsKKyBleHRlcm4gY2hhciAqbGRfY2Fub25fc3lzcm9vdDsKKyBleHRlcm4gaW50IGxkX2Nhbm9uX3N5c3Jvb3RfbGVuOworIGV4dGVybiBGSUxFICpzYXZlZF9zY3JpcHRfaGFuZGxlOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMy1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzMDEzODIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMy1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gZGEzOTM5ZGU2ZmIzNmRhMmM2NDg0ZjE0ZjA4YTM3YmUxOTVkOWRjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6MDc6MzMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMy8xNV0gY29uZmlndXJlOiB3aWRlbiB0aGUgcmVnZXhwIGZvciBTSCBhcmNoaXRlY3R1cmVzCi0KLWdwcm9mIG5lZWRzIHRvIGtub3cgYWJvdXQgdWNsaWJjCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlICAgICAgIHwgMiArLQotIGdwcm9mL2NvbmZpZ3VyZSB8IDUgKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCAzNzQ3NjQ1OTYxLi43OGI1MjQwMTAxIDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC0zODYxLDcgKzM4NjEsNyBAQCBjYXNlICIke3RhcmdldH0iIGluCi0gICBudnB0eCotKi0qKQotICAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgdGFyZ2V0LWxpYnNzcCB0YXJnZXQtbGlic3RkYysrLXYzIHRhcmdldC1saWJvYmpjIgotICAgICA7OwotLSAgc2gtKi0qKQotKyAgc2gqLSotKiB8IHNoNjQtKi0qKQotICAgICBjYXNlICIke3RhcmdldH0iIGluCi0gICAgICAgc2gqLSotZWxmKQotICAgICAgICAgIDs7Ci1kaWZmIC0tZ2l0IGEvZ3Byb2YvY29uZmlndXJlIGIvZ3Byb2YvY29uZmlndXJlCi1pbmRleCBmODRlZmFiYTIwLi5hYjMyYmFiMmI2IDEwMDc1NQotLS0tIGEvZ3Byb2YvY29uZmlndXJlCi0rKysgYi9ncHJvZi9jb25maWd1cmUKLUBAIC02MTYyLDYgKzYxNjIsMTEgQEAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQotICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKLSAgIDs7Ci0gCi0rbGludXgtdWNsaWJjKikKLSsgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCi0rICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT1gZWNobyAvbGliL2xpYnVDbGliYy0qLnNvYAotKyAgOzsKLSsKLSBuZXRic2QqKQotICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4gL2Rldi9udWxsOyB0aGVuCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbXi9dKyhcLnNvXC5bMC05XStcLlswLTldK3xfcGljXC5hKSQnCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNC1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhlMzUyMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSBmYzFmZjg2MGZkODhmYTJkMDU4NGJkMTkxODFjODgwYTc2MzMxYThkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTowOTo1OCArMDAwMAotU3ViamVjdDogW1BBVENIIDA0LzE1XSBQb2ludCBzY3JpcHRzIGxvY2F0aW9uIHRvIGxpYmRpcgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2RlYmlhbiBwYXRjaF0KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxkL01ha2VmaWxlLmFtIHwgMiArLQotIGxkL01ha2VmaWxlLmluIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGQvTWFrZWZpbGUuYW0gYi9sZC9NYWtlZmlsZS5hbQotaW5kZXggYzJjNzk4YjRmZS4uZDdmYWYxOTI3MSAxMDA2NDQKLS0tLSBhL2xkL01ha2VmaWxlLmFtCi0rKysgYi9sZC9NYWtlZmlsZS5hbQotQEAgLTU3LDcgKzU3LDcgQEAgZW5kaWYKLSAjIFdlIHB1dCB0aGUgc2NyaXB0cyBpbiB0aGUgZGlyZWN0b3J5ICQoc2NyaXB0ZGlyKS9sZHNjcmlwdHMuCi0gIyBXZSBjYW4ndCBwdXQgdGhlIHNjcmlwdHMgaW4gJChkYXRhZGlyKSBiZWNhdXNlIHRoZSBTRUFSQ0hfRElSCi0gIyBkaXJlY3RpdmVzIG5lZWQgdG8gYmUgZGlmZmVyZW50IGZvciBuYXRpdmUgYW5kIGNyb3NzIGxpbmtlcnMuCi0tc2NyaXB0ZGlyID0gJCh0b29sZGlyKS9saWIKLStzY3JpcHRkaXIgPSAkKGxpYmRpcikKLSAKLSBFTVVMID0gQEVNVUxACi0gRU1VTEFUSU9OX09GSUxFUyA9IEBFTVVMQVRJT05fT0ZJTEVTQAotZGlmZiAtLWdpdCBhL2xkL01ha2VmaWxlLmluIGIvbGQvTWFrZWZpbGUuaW4KLWluZGV4IGZjNjg3ZmM1MTYuLjhiMTRmNTIzNmMgMTAwNjQ0Ci0tLS0gYS9sZC9NYWtlZmlsZS5pbgotKysrIGIvbGQvTWFrZWZpbGUuaW4KLUBAIC01NjMsNyArNTYzLDcgQEAgQU1fQ0ZMQUdTID0gJChXQVJOX0NGTEFHUykgJChFTEZfQ0xGQUdTKQotICMgV2UgcHV0IHRoZSBzY3JpcHRzIGluIHRoZSBkaXJlY3RvcnkgJChzY3JpcHRkaXIpL2xkc2NyaXB0cy4KLSAjIFdlIGNhbid0IHB1dCB0aGUgc2NyaXB0cyBpbiAkKGRhdGFkaXIpIGJlY2F1c2UgdGhlIFNFQVJDSF9ESVIKLSAjIGRpcmVjdGl2ZXMgbmVlZCB0byBiZSBkaWZmZXJlbnQgZm9yIG5hdGl2ZSBhbmQgY3Jvc3MgbGlua2Vycy4KLS1zY3JpcHRkaXIgPSAkKHRvb2xkaXIpL2xpYgotK3NjcmlwdGRpciA9ICQobGliZGlyKQotIEJBU0VESVIgPSAkKHNyY2RpcikvLi4KLSBCRkRESVIgPSAkKEJBU0VESVIpL2JmZAotIElOQ0RJUiA9ICQoQkFTRURJUikvaW5jbHVkZQotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNC1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDEwYTE0NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSBmN2FkOGE0NGMxMGYwMWUwMzY4MGYwOTNmZDdhZjcxYzlmNWU4NjA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTowNzozMyArMDAwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmU6IHdpZGVuIHRoZSByZWdleHAgZm9yIFNIIGFyY2hpdGVjdHVyZXMKKworZ3Byb2YgbmVlZHMgdG8ga25vdyBhYm91dCB1Y2xpYmMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUgICAgfCAyICstCisgY29uZmlndXJlLmFjIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCA5MWRjNDJmNmM3Li43YzFiNzQ3ZTdjIDEwMDc1NQorLS0tIGEvY29uZmlndXJlCisrKysgYi9jb25maWd1cmUKK0BAIC0zOTE1LDcgKzM5MTUsNyBAQCBjYXNlICIke3RhcmdldH0iIGluCisgICBudnB0eCotKi0qKQorICAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgdGFyZ2V0LWxpYnNzcCB0YXJnZXQtbGlic3RkYysrLXYzIHRhcmdldC1saWJvYmpjIgorICAgICA7OworLSAgc2gtKi0qKQorKyAgc2gqLSotKiB8IHNoNjQtKi0qKQorICAgICBjYXNlICIke3RhcmdldH0iIGluCisgICAgICAgc2gqLSotZWxmKQorICAgICAgICAgIDs7CitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA0YmQ4NjlhNjNhLi43MTg3YjM0ZGZjIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMTU5LDcgKzExNTksNyBAQCBjYXNlICIke3RhcmdldH0iIGluCisgICBudnB0eCotKi0qKQorICAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgdGFyZ2V0LWxpYnNzcCB0YXJnZXQtbGlic3RkYysrLXYzIHRhcmdldC1saWJvYmpjIgorICAgICA7OworLSAgc2gtKi0qKQorKyAgc2gqLSotKiB8IHNoNjQtKi0qKQorICAgICBjYXNlICIke3RhcmdldH0iIGluCisgICAgICAgc2gqLSotZWxmKQorICAgICAgICAgIDs7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiYWQ1MzEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNS1Pbmx5LWdlbmVyYXRlLWFuLVJQQVRILWVudHJ5LWlmLUxEX1JVTl9QQVRILWlzLW5vdC1lLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSA2Njg2MWJmZjM4OTQzNGUzNDU0Yzc2NTBlZTI5ZmFkZTdhMWNjNWVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMToyNzoxNyArMDAwMAotU3ViamVjdDogW1BBVENIIDA1LzE1XSBPbmx5IGdlbmVyYXRlIGFuIFJQQVRIIGVudHJ5IGlmIExEX1JVTl9QQVRIIGlzIG5vdAotIGVtcHR5Ci0KLWZvciBjYXNlcyB3aGVyZSAtcnBhdGggaXNuJ3Qgc3BlY2lmaWVkLiBkZWJpYW4gKCMxNTEwMjQpCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBDaHJpcyBDaGltZWxpcyA8Y2hyaXNAZGViaWFuLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsZC9lbXVsdGVtcGwvZWxmMzIuZW0gfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9sZC9lbXVsdGVtcGwvZWxmMzIuZW0gYi9sZC9lbXVsdGVtcGwvZWxmMzIuZW0KLWluZGV4IGY0ZjdhZDZiNGUuLmNmZDc4N2ZmMjggMTAwNjQ0Ci0tLS0gYS9sZC9lbXVsdGVtcGwvZWxmMzIuZW0KLSsrKyBiL2xkL2VtdWx0ZW1wbC9lbGYzMi5lbQotQEAgLTE0NzEsNiArMTQ3MSw4IEBAIGZyYWdtZW50IDw8RU9GCi0gCSAgICAgICYmIGNvbW1hbmRfbGluZS5ycGF0aCA9PSBOVUxMKQotIAkgICAgewotIAkgICAgICBwYXRoID0gKGNvbnN0IGNoYXIgKikgZ2V0ZW52ICgiTERfUlVOX1BBVEgiKTsKLSsJICAgICAgaWYgKChwYXRoKSAmJiAoc3RybGVuIChwYXRoKSA9PSAwKSkKLSsJCSAgcGF0aCA9IE5VTEw7Ci0gCSAgICAgIGlmIChwYXRoCi0gCQkgICYmIGdsZCR7RU1VTEFUSU9OX05BTUV9X3NlYXJjaF9uZWVkZWQgKHBhdGgsICZuLCBmb3JjZSkpCi0gCQlicmVhazsKLUBAIC0xNzQ2LDYgKzE3NDgsOCBAQCBnbGQke0VNVUxBVElPTl9OQU1FfV9iZWZvcmVfYWxsb2NhdGlvbiAodm9pZCkKLSAgIHJwYXRoID0gY29tbWFuZF9saW5lLnJwYXRoOwotICAgaWYgKHJwYXRoID09IE5VTEwpCi0gICAgIHJwYXRoID0gKGNvbnN0IGNoYXIgKikgZ2V0ZW52ICgiTERfUlVOX1BBVEgiKTsKLSsgIGlmICgocnBhdGgpICYmIChzdHJsZW4gKHJwYXRoKSA9PSAwKSkKLSsgICAgcnBhdGggPSBOVUxMOwotIAotICAgZm9yIChhYmZkID0gbGlua19pbmZvLmlucHV0X2JmZHM7IGFiZmQ7IGFiZmQgPSBhYmZkLT5saW5rLm5leHQpCi0gICAgIGlmIChiZmRfZ2V0X2ZsYXZvdXIgKGFiZmQpID09IGJmZF90YXJnZXRfZWxmX2ZsYXZvdXIpCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNS1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmEwYmE2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNS1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDA4YjA4OGI3ZGQzZDk3MDdlZDY2OTQ4YTcyNzFmZmI0MzhlZWRkZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjA5OjU4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFBvaW50IHNjcmlwdHMgbG9jYXRpb24gdG8gbGliZGlyCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGViaWFuIHBhdGNoXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGQvTWFrZWZpbGUuYW0gfCAyICstCisgbGQvTWFrZWZpbGUuaW4gfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9sZC9NYWtlZmlsZS5hbSBiL2xkL01ha2VmaWxlLmFtCitpbmRleCAxYzEzMmQzY2U0Li44ZDgyY2YyZTE2IDEwMDY0NAorLS0tIGEvbGQvTWFrZWZpbGUuYW0KKysrKyBiL2xkL01ha2VmaWxlLmFtCitAQCAtNjQsNyArNjQsNyBAQCBlbmRpZgorICMgV2UgcHV0IHRoZSBzY3JpcHRzIGluIHRoZSBkaXJlY3RvcnkgJChzY3JpcHRkaXIpL2xkc2NyaXB0cy4KKyAjIFdlIGNhbid0IHB1dCB0aGUgc2NyaXB0cyBpbiAkKGRhdGFkaXIpIGJlY2F1c2UgdGhlIFNFQVJDSF9ESVIKKyAjIGRpcmVjdGl2ZXMgbmVlZCB0byBiZSBkaWZmZXJlbnQgZm9yIG5hdGl2ZSBhbmQgY3Jvc3MgbGlua2Vycy4KKy1zY3JpcHRkaXIgPSAkKHRvb2xkaXIpL2xpYgorK3NjcmlwdGRpciA9ICQobGliZGlyKQorIAorIEVNVUwgPSBARU1VTEAKKyBFTVVMQVRJT05fT0ZJTEVTID0gQEVNVUxBVElPTl9PRklMRVNACitkaWZmIC0tZ2l0IGEvbGQvTWFrZWZpbGUuaW4gYi9sZC9NYWtlZmlsZS5pbgoraW5kZXggZTQ1M2JjMWIzMy4uMmRjZDcyZjgwOSAxMDA2NDQKKy0tLSBhL2xkL01ha2VmaWxlLmluCisrKysgYi9sZC9NYWtlZmlsZS5pbgorQEAgLTU3Myw3ICs1NzMsNyBAQCBBTV9DRkxBR1MgPSAkKFdBUk5fQ0ZMQUdTKSAkKEVMRl9DTEZBR1MpCisgIyBXZSBwdXQgdGhlIHNjcmlwdHMgaW4gdGhlIGRpcmVjdG9yeSAkKHNjcmlwdGRpcikvbGRzY3JpcHRzLgorICMgV2UgY2FuJ3QgcHV0IHRoZSBzY3JpcHRzIGluICQoZGF0YWRpcikgYmVjYXVzZSB0aGUgU0VBUkNIX0RJUgorICMgZGlyZWN0aXZlcyBuZWVkIHRvIGJlIGRpZmZlcmVudCBmb3IgbmF0aXZlIGFuZCBjcm9zcyBsaW5rZXJzLgorLXNjcmlwdGRpciA9ICQodG9vbGRpcikvbGliCisrc2NyaXB0ZGlyID0gJChsaWJkaXIpCisgQkFTRURJUiA9ICQoc3JjZGlyKS8uLgorIEJGRERJUiA9ICQoQkFTRURJUikvYmZkCisgSU5DRElSID0gJChCQVNFRElSKS9pbmNsdWRlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkyMDcyOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDEzNzkxNjM2YWJmNTE4ZjBkYjIwOWRjNTFjMjk0NDVkODA0MjFmMmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjI3OjE3ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIE9ubHkgZ2VuZXJhdGUgYW4gUlBBVEggZW50cnkgaWYgTERfUlVOX1BBVEggaXMgbm90IGVtcHR5CisKK2ZvciBjYXNlcyB3aGVyZSAtcnBhdGggaXNuJ3Qgc3BlY2lmaWVkLiBkZWJpYW4gKCMxNTEwMjQpCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBDaHJpcyBDaGltZWxpcyA8Y2hyaXNAZGViaWFuLm9yZz4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsZC9sZGVsZi5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGQvbGRlbGYuYyBiL2xkL2xkZWxmLmMKK2luZGV4IGEwOTVkNmFhYzUuLmEyNDU1YTg3OTMgMTAwNjQ0CistLS0gYS9sZC9sZGVsZi5jCisrKysgYi9sZC9sZGVsZi5jCitAQCAtMTIyOSw2ICsxMjI5LDggQEAgbGRlbGZfYWZ0ZXJfb3BlbiAoaW50IHVzZV9saWJwYXRoLCBpbnQgbmF0aXZlLCBpbnQgaXNfbGludXgsIGludCBpc19mcmVlYnNkLAorIAkJICAmJiBjb21tYW5kX2xpbmUucnBhdGggPT0gTlVMTCkKKyAJCXsKKyAJCSAgcGF0aCA9IChjb25zdCBjaGFyICopIGdldGVudiAoIkxEX1JVTl9QQVRIIik7CisrCQkgIGlmICgocGF0aCkgJiYgKHN0cmxlbiAocGF0aCkgPT0gMCkpCisrCQkgICAgICBwYXRoID0gTlVMTDsKKyAJCSAgaWYgKHBhdGgKKyAJCSAgICAgICYmIGxkZWxmX3NlYXJjaF9uZWVkZWQgKHBhdGgsICZuLCBmb3JjZSwKKyAJCQkJCSAgICAgIGlzX2xpbnV4LCBlbGZzaXplKSkKK0BAIC0xNTczLDYgKzE1NzUsOCBAQCBsZGVsZl9iZWZvcmVfYWxsb2NhdGlvbiAoY2hhciAqYXVkaXQsIGNoYXIgKmRlcGF1ZGl0LAorICAgcnBhdGggPSBjb21tYW5kX2xpbmUucnBhdGg7CisgICBpZiAocnBhdGggPT0gTlVMTCkKKyAgICAgcnBhdGggPSAoY29uc3QgY2hhciAqKSBnZXRlbnYgKCJMRF9SVU5fUEFUSCIpOworKyAgaWYgKChycGF0aCkgJiYgKHN0cmxlbiAocnBhdGgpID09IDApKQorKyAgICBycGF0aCA9IE5VTEw7CisgCisgICBmb3IgKGFiZmQgPSBsaW5rX2luZm8uaW5wdXRfYmZkczsgYWJmZDsgYWJmZCA9IGFiZmQtPmxpbmsubmV4dCkKKyAgICAgaWYgKGJmZF9nZXRfZmxhdm91ciAoYWJmZCkgPT0gYmZkX3RhcmdldF9lbGZfZmxhdm91cikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtVXNlLWxpYnRvb2wtMi40LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwYzRkMjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTI1MiArMCwwIEBACi1Gcm9tIDQxODUyN2EyOTcxZDRlNzdhODcwODU0MDAzOTcwOTBkODlmYzVjOTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCAxNCBGZWIgMjAxNiAxNzowNDowNyArMDAwMAotU3ViamVjdDogW1BBVENIIDA2LzE1XSBVc2UgbGlidG9vbCAyLjQKLQotZ2V0IGxpYnRvb2wgc3lzcm9vdCBzdXBwb3J0Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gYmZkL2NvbmZpZ3VyZSAgICAgICAgfCAxMzIyICsrKysrKysrKysrKysrLS0tLS0KLSBiZmQvY29uZmlndXJlLmFjICAgICB8ICAgIDIgKy0KLSBiaW51dGlscy9jb25maWd1cmUgICB8IDEzMjAgKysrKysrKysrKysrKystLS0tLQotIGdhcy9jb25maWd1cmUgICAgICAgIHwgMTMyMCArKysrKysrKysrKysrKy0tLS0tCi0gZ3Byb2YvY29uZmlndXJlICAgICAgfCAxMzIxICsrKysrKysrKysrKysrLS0tLS0KLSBsZC9jb25maWd1cmUgICAgICAgICB8IDE2OTUgKysrKysrKysrKysrKysrKysrLS0tLS0tCi0gbGlidG9vbC5tNCAgICAgICAgICAgfCAxMDgwICsrKysrKysrKysrLS0tLS0KLSBsdG1haW4uc2ggICAgICAgICAgICB8IDI5MjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCi0gbHRvcHRpb25zLm00ICAgICAgICAgfCAgICAyICstCi0gbHR2ZXJzaW9uLm00ICAgICAgICAgfCAgIDEyICstCi0gbHR+b2Jzb2xldGUubTQgICAgICAgfCAgICAyICstCi0gb3Bjb2Rlcy9jb25maWd1cmUgICAgfCAxMzIyICsrKysrKysrKysrKysrLS0tLS0KLSBvcGNvZGVzL2NvbmZpZ3VyZS5hYyB8ICAgIDIgKy0KLSB6bGliL2NvbmZpZ3VyZSAgICAgICB8IDEzMjAgKysrKysrKysrKysrKystLS0tLQotIDE0IGZpbGVzIGNoYW5nZWQsIDk5NDAgaW5zZXJ0aW9ucygrKSwgMzcwNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JmZC9jb25maWd1cmUgYi9iZmQvY29uZmlndXJlCi1pbmRleCAxNzk2MDY4NGY4Li45MjVmYjQwMWYyIDEwMDc1NQotLS0tIGEvYmZkL2NvbmZpZ3VyZQotKysrIGIvYmZkL2NvbmZpZ3VyZQotQEAgLTcwNCw2ICs3MDQsOSBAQCBPVE9PTAotIExJUE8KLSBOTUVESVQKLSBEU1lNVVRJTAotK01BTklGRVNUX1RPT0wKLSthY19jdF9BUgotK0RMTFRPT0wKLSBPQkpEVU1QCi0gTE5fUwotIE5NCi1AQCAtODIyLDYgKzgyNSw3IEBAIGVuYWJsZV9zdGF0aWMKLSB3aXRoX3BpYwotIGVuYWJsZV9mYXN0X2luc3RhbGwKLSB3aXRoX2dudV9sZAotK3dpdGhfbGlidG9vbF9zeXNyb290Ci0gZW5hYmxlX2xpYnRvb2xfbG9jawotIGVuYWJsZV9wbHVnaW5zCi0gZW5hYmxlX2xhcmdlZmlsZQotQEAgLTE1MDQsNiArMTUwOCw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQotICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQotKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKLSsgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KLSAgIC0td2l0aC1tbWFwICAgICAgICAgICAgIHRyeSB1c2luZyBtbWFwIGZvciBCRkQgaW5wdXQgZmlsZXMgaWYgYXZhaWxhYmxlCi0gICAtLXdpdGgtc2VwYXJhdGUtZGVidWctZGlyPURJUgotICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9vayBmb3IgZ2xvYmFsIHNlcGFyYXRlIGRlYnVnIGluZm8gaW4gRElSCi1AQCAtNTY5Myw4ICs1Njk5LDggQEAgZXNhYwotIAotIAotIAotLW1hY3JvX3ZlcnNpb249JzIuMi43YScKLS1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JwotK21hY3JvX3ZlcnNpb249JzIuNCcKLSttYWNyb19yZXZpc2lvbj0nMS4zMjkzJwotIAotIAotIAotQEAgLTU3MzQsNyArNTc0MCw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KLSAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KLS1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi0gICBFQ0hPPSdwcmludCAtciAtLScKLSBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTY0MjAsOCArNjQyNiw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7Ci0gIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKLSB4c2lfc2hlbGw9bm8KLSAoIF9sdF9kdW1teT0iYS9iL2MiCi0tICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotLSAgICAgID0gYyxhL2IsLCBcCi0rICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotKyAgICAgID0gYyxhL2IsYi9jLCBcCi0gICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKLSAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKLSAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC02NDcwLDYgKzY0NzYsODAgQEAgZXNhYwotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICotKi1jeWd3aW4qICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCi0rICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotK2Nhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTY0ODYsNiArNjU2NiwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgotIGVzYWMKLSByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi0gY2FzZSAkaG9zdF9vcyBpbgotKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSsgICAgICByZWxvYWRfY21kcz1mYWxzZQotKyAgICBmaQotKyAgICA7OwotICAgZGFyd2luKikKLSAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNjY1NCw3ICs2NzM5LDggQEAgbWluZ3cqIHwgcHczMiopCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwotICAgZWxzZQotLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKLSsgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgotKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKLSAgIGZpCi0gICA7OwotQEAgLTY4MDgsNiArNjg5NCwyMSBAQCBlc2FjCi0gZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKLSAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KLSsKLStmaWxlX21hZ2ljX2dsb2I9Ci0rd2FudF9ub2Nhc2VnbG9iPW5vCi0raWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KLSsgIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIG1pbmd3KiB8IHB3MzIqKQotKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcwotKyAgICBlbHNlCi0rICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKLSsgICAgZmkKLSsgICAgOzsKLSsgIGVzYWMKLStmaQotKwotIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAotIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTY4MjEsMTEgKzY5MjIsMTY0IEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIAotIAotIAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotIAotIAotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdF9ETExUT09MPSRETExUT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgotKyAgICBETExUT09MPSJmYWxzZSIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKLSsgIGZpCi0rZWxzZQotKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCi0rCi0rY2FzZSAkaG9zdF9vcyBpbgotK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKLSsgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKLSsgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgotKyAgKi0taWRlbnRpZnktc3RyaWN0KikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCi0rICAgIDs7Ci0rICAqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKLSsgICAgOzsKLSsgIGVzYWMKLSsgIDs7Ci0rKikKLSsgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgotKyAgOzsKLStlc2FjCi0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLSsgIGRvCi0rICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTY4NDEsNyArNzA5NSw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKLSsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTY4NjEsMTEgKzcxMTUsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotIAotKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCi0rICBkb25lCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KLStpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCi0gICBhY19jdF9BUj0kQVIKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLStkbwotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNjg4MSw3ICs3MTM5LDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTY5MDAsNiArNzE1OCwxMCBAQCBlbHNlCi0gJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotKwotKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhawotK2RvbmUKLSsKLSAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgotICAgICBBUj0iZmFsc2UiCi0gICBlbHNlCi1AQCAtNjkxMSwxNiArNzE3Myw3MiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKLSBlc2FjCi0gICAgIEFSPSRhY19jdF9BUgotICAgZmkKLS1lbHNlCi0tICBBUj0iJGFjX2N2X3Byb2dfQVIiCi0gZmkKLSAKLS10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi0tdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KLSsgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotK2ludAotK21haW4gKCkKLSt7Ci0gCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCi0rICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KLSsJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KLSsJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCi0rCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgotKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKLSAKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotIAotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQotIAotK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KLStlbHNlCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKLStmaQotIAotIAotIAotQEAgLTcyNjIsOCArNzU4MCw4IEBAIGVzYWMKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgotIAotICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLSAKLSAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KLSBvcHRfY3I9Ci1AQCAtNzI5OSw2ICs3NjE3LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwotICAgZWxzZQotICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgotICAgZmkKLSsgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKLSAKLSAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgotICAgcGlwZV93b3Jrcz1ubwotQEAgLTczNDAsNiArNzY1OSwxOCBAQCBfTFRfRU9GCi0gICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKLSsvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQotKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQotKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKLSsvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbHNlCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKLSAjZW5kaWYKLUBAIC03MzUxLDcgKzc2ODIsNyBAQCBfTFRfRU9GCi0gCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0Ci0gCi0gLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotLWNvbnN0IHN0cnVjdCB7Ci0rTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICB2b2lkICAgICAgICphZGRyZXNzOwotIH0KLUBAIC03Mzc3LDggKzc3MDgsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewotIF9MVF9FT0YKLSAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgotIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCi0tCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKLSsJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgotIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKLSAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKLUBAIC03Mzg4LDggKzc3MTksOCBAQCBfTFRfRU9GCi0gICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAJICAgIHBpcGVfd29ya3M9eWVzCi0gCSAgZmkKLS0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgotLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgotKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCi0rCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCi0gCWVsc2UKLSAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKLSAJZmkKLUBAIC03NDI2LDYgKzc3NTcsMTYgQEAgZWxzZQotICRhc19lY2hvICJvayIgPiY2OyB9Ci0gZmkKLSAKLSsjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KLStpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZmkKLSsKLSsKLSsKLSsKLSAKLSAKLSAKLUBAIC03NDQyLDYgKzc3ODMsNDUgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQotKwotKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OwotK2Vsc2UKLSsgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCi0rZmkKLSsKLSsKLStsdF9zeXNyb290PQotK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKLSsgeWVzKQotKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAotKyAgIGZpCi0rICAgOzsgIygKLSsgLyopCi0rICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0rICAgOzsgIygKLSsgbm98JycpCi0rICAgOzsgIygKLSsgKikKLSsgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQotKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9Ci0rICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1Ci0rICAgOzsKLStlc2FjCi0rCi0rIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1Ci0rJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KLSAKLSAKLSAKLUBAIC03NjUzLDYgKzgwMzMsMTIzIEBAIGVzYWMKLSAKLSBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKLSAKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IG10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KLSsgICAgTUFOSUZFU1RfVE9PTD0iOiIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKLSsgIGZpCi0rZWxzZQotKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10Ci0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCi0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1Ci0rICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0Ci0rICBjYXQgY29uZnRlc3QuZXJyID4mNQotKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCi0rICBmaQotKyAgcm0gLWYgY29uZnRlc3QqCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQotK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCi0rICBNQU5JRkVTVF9UT09MPToKLStmaQotKwotKwotKwotKwotKwotIAotICAgY2FzZSAkaG9zdF9vcyBpbgotICAgICByaGFwc29keSogfCBkYXJ3aW4qKQotQEAgLTgyMTYsNiArODcxMyw4IEBAIF9MVF9FT0YKLSAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKLSAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1Ci0gICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQotKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1Ci0rICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKLSAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKLSBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQotIF9MVF9FT0YKLUBAIC04MzgwLDcgKzg4NzksOCBAQCBmaQotIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKLSAKLSAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgotLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJwotK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKLStMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCi0gCi0gCi0gCi1AQCAtODQ2OSw3ICs4OTY5LDcgQEAgYWl4MyopCi0gZXNhYwotIAotICMgR2xvYmFsIHZhcmlhYmxlczoKLS1vZmlsZT1saWJ0b29sCi0rb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCi0gY2FuX2J1aWxkX3NoYXJlZD15ZXMKLSAKLSAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC04NzY3LDggKzkyNjcsNiBAQCBmaQotIGx0X3Byb2dfY29tcGlsZXJfcGljPQotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQotIAotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCi0gICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTg5MzQsNiArOTQzMiwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCi0gCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKLSAJOzsKLSsgICAgICBuYWdmb3IqKQotKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCi0rCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKLSsJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCi0rCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSsJOzsKLSAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCi0gICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAotIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTg5OTYsNyArOTUwMCw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKLSsgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OwotICAgICAgICopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKLUBAIC05MDUzLDEzICs5NTU3LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKLSAgICAgOzsKLSBlc2FjCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0tJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0tCi0tCi0tCi0tCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLStsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKLSAKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTkxMjAsNiArOTYyOCwxMSBAQCBmaQotIAotIAotIAotKwotKwotKwotKwotKwotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCi0gIwotQEAgLTk0NzAsNyArOTk4Myw4IEBAIF9MVF9FT0YKLSAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwotICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0tICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKLSAKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTk1NjksMTIgKzEwMDgzLDEyIEBAIF9MVF9FT0YKLSAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwotLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCi0gCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSsJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotIAkgIGZpCi0gCSAgOzsKLSAJZXNhYwotQEAgLTk1ODgsOCArMTAxMDIsOCBAQCBfTFRfRU9GCi0gCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLSAJd2xhcmM9Ci0gICAgICAgZWxzZQotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtOTYwNyw4ICsxMDEyMSw4IEBAIF9MVF9FT0YKLSAKLSBfTFRfRU9GCi0gICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05NjU0LDggKzEwMTY4LDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTk3ODUsNyArMTAyOTksMTMgQEAgX0xUX0VPRgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwotICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTc5OCwyMiArMTAzMTgsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTk4MjUsNyArMTAzNTIsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCWVsc2UKLSAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTk4MzgsMjIgKzEwMzcxLDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtOTg5OCwyMCArMTA0MzgsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0gICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLS0gICAgICBsaWJleHQ9bGliCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0tICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0tICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0tICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLS0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0tICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcwotKwlmaWxlX2xpc3Rfc3BlYz0nQCcKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwotKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICopCi0rCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgOzsKLSsJICBlc2FjfgotKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgZmknCi0rCTs7Ci0rICAgICAgKikKLSsJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0rCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJOzsKLSsgICAgICBlc2FjCi0gICAgICAgOzsKLSAKLSAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC05OTcyLDcgKzEwNTU1LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTk4MCw3ICsxMDU2Myw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4OSopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBmaQotQEAgLTk5OTYsNyArMTA1NzksNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDEwKikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgIGZpCi1AQCAtMTAwMjAsMTAgKzEwNjAzLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJaWE2NCopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAkqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWVzYWMKLSAgICAgICBlbHNlCi1AQCAtMTAxMDIsMjMgKzEwNjg1LDM2IEBAIGZpCi0gCi0gICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90Ci0gCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKLSAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLS0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0tICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0taW50IGZvbyh2b2lkKSB7fQotK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0tICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0tCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKLStlbHNlCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubwotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQotKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCi0rICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWZpCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC0xMDIwMyw3ICsxMDc5OSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICBlbHNlCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTEwMjIyLDkgKzEwODE4LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCXdsYXJjPScke3dsfScKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotICAgICAgIGVsc2UKLSAJY2FzZSBgJENDIC1WIDI+JjFgIGluCi0gCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTEwODAwLDggKzExMzk2LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgbmVlZF92ZXJzaW9uPW5vCi0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAKLS0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKLSsgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KLSsgIHllcywqKQotKyAgICAjIGdjYwotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwotICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTEwODM0LDEzICsxMTQzMSw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgIDs7Ci0gICAgIGVzYWMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSsgICAgOzsKLSsKLSsgICosY2wqKQotKyAgICAjIE5hdGl2ZSBNU1ZDCi0rICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0rICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSsgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCi0rCi0rICAgIGNhc2UgJGJ1aWxkX29zIGluCi0rICAgIG1pbmd3KikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ci0rICAgICAgbHRfc2F2ZV9pZnM9JElGUwotKyAgICAgIElGUz0nOycKLSsgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCi0rICAgICAgZG8KLSsgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCi0rICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKLSsgICAgICBkb25lCi0rICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiopCi0rICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQotKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcwotKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKLSsgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KLSsgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotKyAgICAgIGVsc2UKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICBmaQotKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQotKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKLSsgICAgICA7OwotKyAgICBlc2FjCi0rCi0rICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSsgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0rICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+Ci0rICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+Ci0rICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJwotKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+Ci0rICAgICAgICRSTSBcJGRscGF0aCcKLSsgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCi0gICAgIDs7Ci0gCi0gICAqKQotKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAgIDs7Ci0gICBlc2FjCi0tICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCi0gICBzaGxpYnBhdGhfdmFyPVBBVEgKLSAgIDs7Ci1AQCAtMTA5MzIsNyArMTE1ODcsNyBAQCBoYWlrdSopCi0gICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKLSAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLS0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCi0rICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKLSAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgIDs7Ci0gCi1AQCAtMTE3MjgsNyArMTIzODMsNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMTczMSAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTE3NzIsMTAgKzEyNDI3LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTE4MzQsNyArMTI0ODksNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMTgzNyAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTE4NzgsMTAgKzEyNTMzLDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTQ1MjUsNyArMTUxODAsNyBAQCBTSEFSRURfTERGTEFHUz0KLSBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSAieWVzIjsgdGhlbgotICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKLSAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgotLSAgICBTSEFSRURfTElCQUREPSItTGBwd2RgLy4uL2xpYmliZXJ0eS9waWMgLWxpYmVydHkiCi0rICAgIFNIQVJFRF9MSUJBREQ9ImBwd2RgLy4uL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEiCi0gICBmaQotIAotICMgTW9yZSBoYWNrcyB0byBidWlsZCBETExzIG9uIFdpbmRvd3MuCi1AQCAtMTcxNDIsMTMgKzE3Nzk3LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTcxNjMsMTQgKzE3ODI1LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE3MjAzLDEyICsxNzg2OCwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQotIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNzI2Myw4ICsxNzkyOCwxMyBAQCByZWxvYWRfZmxhZyBcCi0gT0JKRFVNUCBcCi0gZGVwbGlic19jaGVja19tZXRob2QgXAotIGZpbGVfbWFnaWNfY21kIFwKLStmaWxlX21hZ2ljX2dsb2IgXAotK3dhbnRfbm9jYXNlZ2xvYiBcCi0rRExMVE9PTCBcCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAotIEFSIFwKLSBBUl9GTEFHUyBcCi0rYXJjaGl2ZXJfbGlzdF9zcGVjIFwKLSBTVFJJUCBcCi0gUkFOTElCIFwKLSBDQyBcCi1AQCAtMTcyNzQsMTIgKzE3OTQ0LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCi0rbm1fZmlsZV9saXN0X3NwZWMgXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCi0rbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKLSBuZWVkX2xvY2tzIFwKLStNQU5JRkVTVF9UT09MIFwKLSBEU1lNVVRJTCBcCi0gTk1FRElUIFwKLSBMSVBPIFwKLUBAIC0xNzI5NSw3ICsxNzk2Nyw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKLS1maXhfc3JjZmlsZV9wYXRoIFwKLSBleGNsdWRlX2V4cHN5bXMgXAotIGluY2x1ZGVfZXhwc3ltcyBcCi0gZmlsZV9saXN0X3NwZWMgXAotQEAgLTE3MzMxLDYgKzE4MDAyLDcgQEAgbW9kdWxlX2NtZHMgXAotIG1vZHVsZV9leHBzeW1fY21kcyBcCi0gZXhwb3J0X3N5bWJvbHNfY21kcyBcCi0gcHJlbGlua19jbWRzIFwKLStwb3N0bGlua19jbWRzIFwKLSBwb3N0aW5zdGFsbF9jbWRzIFwKLSBwb3N0dW5pbnN0YWxsX2NtZHMgXAotIGZpbmlzaF9jbWRzIFwKLUBAIC0xODExOSw3ICsxODc5MSw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKLSAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTgyMjIsMTkgKzE4ODk1LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAotICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KLSBOTDJTUD0kbHRfbHRfTkwyU1AKLSAKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotKwotKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotKwotICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCi0gT0JKRFVNUD0kbHRfT0JKRFVNUAotIAotICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gCi0tIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KLSsjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCi0gCi0rIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLStmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgotKwotKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCi0rCi0rIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KLStETExUT09MPSRsdF9ETExUT09MCi0rCi0rIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKwotICMgVGhlIGFyY2hpdmVyLgotIEFSPSRsdF9BUgotKwotKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCi0gQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCi0gCi0rIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKLSsKLSAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgotIFNUUklQPSRsdF9TVFJJUAotIAotQEAgLTE4MjY0LDYgKzE4OTYwLDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCi0gIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KLSBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKLSAKLSsjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KLStubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKLSsKLSsjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgotK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKLSsKLSAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KLSBvYmpkaXI9JG9iamRpcgotIAotQEAgLTE4MjczLDYgKzE4OTc1LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKLSAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwotIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKLSAKLSsjIE1hbmlmZXN0IHRvb2wuCi0rTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAotKwotICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KLSBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKLSAKLUBAIC0xODM4NywxMiArMTkwOTIsMTIgQEAgd2l0aF9nY2M9JEdDQwotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0tCi0gIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCi0gcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCi0gCi1AQCAtMTg0NzksOSArMTkxODQsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0tCi0gIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKLSAKLUBAIC0xODQ5Nyw2ICsxOTE5OSw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwotIAotKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KLStwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCi0gCi1AQCAtMTg1MjksMjEwICsxOTIzNCwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBjYXNlICR4c2lfc2hlbGwgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotLSMgY2FsbDoKLS0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLS0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLS1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotLX0KLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KLS0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLS19Ci0tCi0tX0xUX0VPRgotLWVzYWMKLS0KLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDErPVwkMiIKLS19Ci0tX0xUX0VPRgotLSAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDE9XCQkMVwkMiIKLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKLSsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCi0rZnVuY19kaXJuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCi0rZnVuY19iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAotK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCi0rZnVuY19zdHJpcG5hbWUgKClcCi0re1wKLStcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCi0rXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAotK2Z1bmNfbG8ybyAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKLStcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCi0rZnVuY194Zm9ybSAoKVwKLSt7XAotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCi0rZnVuY19hcml0aCAoKVwKLSt7XAotKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAotK2Z1bmNfbGVuICgpXAotK3tcCi0rICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLStmaQotKwotK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAotK2Z1bmNfYXBwZW5kICgpXAotK3tcCi0rICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKLSt7XAotK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCi0rXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZWxzZQotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0rCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KLStmaQotKwotKwotKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKLSAgIGNobW9kICt4ICIkb2ZpbGUiCi0gCi1kaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZ3VyZS5hYyBiL2JmZC9jb25maWd1cmUuYWMKLWluZGV4IGVkYTM4ZWEwODYuLjdjZGY5YzgxNDYgMTAwNjQ0Ci0tLS0gYS9iZmQvY29uZmlndXJlLmFjCi0rKysgYi9iZmQvY29uZmlndXJlLmFjCi1AQCAtMjkzLDcgKzI5Myw3IEBAIGNoYW5nZXF1b3RlKCwpZG5sCi0gICB4PWBzZWQgLW4gLWUgJ3MvXlsgCV0qUElDRkxBR1sgCV0qPVsgCV0qLy9wJyA8IC4uL2xpYmliZXJ0eS9NYWtlZmlsZSB8IHNlZCAtbiAnJHAnYAotIGNoYW5nZXF1b3RlKFssXSlkbmwKLSAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgotLSAgICBTSEFSRURfTElCQUREPSItTGBwd2RgLy4uL2xpYmliZXJ0eS9waWMgLWxpYmVydHkiCi0rICAgIFNIQVJFRF9MSUJBREQ9ImBwd2RgLy4uL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEiCi0gICBmaQotIAotICMgTW9yZSBoYWNrcyB0byBidWlsZCBETExzIG9uIFdpbmRvd3MuCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvY29uZmlndXJlIGIvYmludXRpbHMvY29uZmlndXJlCi1pbmRleCAzODEyOGUxNDZkLi5jNzRmNzk3OTk2IDEwMDc1NQotLS0tIGEvYmludXRpbHMvY29uZmlndXJlCi0rKysgYi9iaW51dGlscy9jb25maWd1cmUKLUBAIC02ODksOCArNjg5LDExIEBAIE9UT09MCi0gTElQTwotIE5NRURJVAotIERTWU1VVElMCi0rTUFOSUZFU1RfVE9PTAotIFJBTkxJQgotK2FjX2N0X0FSCi0gQVIKLStETExUT09MCi0gT0JKRFVNUAotIExOX1MKLSBOTQotQEAgLTgwNyw2ICs4MTAsNyBAQCBlbmFibGVfc3RhdGljCi0gd2l0aF9waWMKLSBlbmFibGVfZmFzdF9pbnN0YWxsCi0gd2l0aF9nbnVfbGQKLSt3aXRoX2xpYnRvb2xfc3lzcm9vdAotIGVuYWJsZV9saWJ0b29sX2xvY2sKLSBlbmFibGVfcGx1Z2lucwotIGVuYWJsZV9sYXJnZWZpbGUKLUBAIC0xNDgzLDYgKzE0ODcsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KLSsgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCi0gICAtLXdpdGgtc3lzdGVtLXpsaWIgICAgICB1c2UgaW5zdGFsbGVkIGxpYnoKLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBkZWZhdWx0PW5vCi0gICAtLXdpdGgtbGliaWNvbnYtcHJlZml4Wz1ESVJdICBzZWFyY2ggZm9yIGxpYmljb252IGluIERJUi9pbmNsdWRlIGFuZCBESVIvbGliCi1AQCAtNTQ1Nyw4ICs1NDYzLDggQEAgZXNhYwotIAotIAotIAotLW1hY3JvX3ZlcnNpb249JzIuMi43YScKLS1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JwotK21hY3JvX3ZlcnNpb249JzIuNCcKLSttYWNyb19yZXZpc2lvbj0nMS4zMjkzJwotIAotIAotIAotQEAgLTU0OTgsNyArNTUwNCw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KLSAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KLS1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi0gICBFQ0hPPSdwcmludCAtciAtLScKLSBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTYxODQsOCArNjE5MCw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7Ci0gIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKLSB4c2lfc2hlbGw9bm8KLSAoIF9sdF9kdW1teT0iYS9iL2MiCi0tICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotLSAgICAgID0gYyxhL2IsLCBcCi0rICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotKyAgICAgID0gYyxhL2IsYi9jLCBcCi0gICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKLSAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKLSAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC02MjM0LDYgKzYyNDAsODAgQEAgZXNhYwotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICotKi1jeWd3aW4qICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCi0rICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotK2Nhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTYyNTAsNiArNjMzMCwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgotIGVzYWMKLSByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi0gY2FzZSAkaG9zdF9vcyBpbgotKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSsgICAgICByZWxvYWRfY21kcz1mYWxzZQotKyAgICBmaQotKyAgICA7OwotICAgZGFyd2luKikKLSAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNjQxOCw3ICs2NTAzLDggQEAgbWluZ3cqIHwgcHczMiopCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwotICAgZWxzZQotLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKLSsgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgotKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKLSAgIGZpCi0gICA7OwotQEAgLTY1NzIsNiArNjY1OCwyMSBAQCBlc2FjCi0gZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKLSAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KLSsKLStmaWxlX21hZ2ljX2dsb2I9Ci0rd2FudF9ub2Nhc2VnbG9iPW5vCi0raWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KLSsgIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIG1pbmd3KiB8IHB3MzIqKQotKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcwotKyAgICBlbHNlCi0rICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKLSsgICAgZmkKLSsgICAgOzsKLSsgIGVzYWMKLStmaQotKwotIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAotIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTY1ODcsOSArNjY4OCwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKLSskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCi0rICAgIERMTFRPT0w9ImZhbHNlIgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAotKyAgZmkKLStlbHNlCi0rICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQotK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKLSsKLStjYXNlICRob3N0X29zIGluCi0rY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAotKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAotKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCi0rICAqLS1pZGVudGlmeS1zdHJpY3QqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKLSsgICAgOzsKLSsgICopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjawotKyAgICA7OwotKyAgZXNhYwotKyAgOzsKLSsqKQotKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCi0rICA7OwotK2VzYWMKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotKyAgZG8KLSsgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNjYwNSw3ICs2ODU5LDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgotKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNjYyNSwxMSArNjg3OSwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0gCi0rICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKLSsgIGRvbmUKLSBmaQotLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgotK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KLSAgIGFjX2N0X0FSPSRBUgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotK2RvCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC02NjQ1LDcgKzY5MDMsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNjY2NCw2ICs2OTIyLDEwIEBAIGVsc2UKLSAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0rCi0rICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCi0rZG9uZQotKwotICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCi0gICAgIEFSPSJmYWxzZSIKLSAgIGVsc2UKLUBAIC02Njc1LDEyICs2OTM3LDEwIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OwotIGVzYWMKLSAgICAgQVI9JGFjX2N0X0FSCi0gICBmaQotLWVsc2UKLS0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKLSBmaQotIAotLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKLS10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotKzogJHtBUj1hcn0KLSs6ICR7QVJfRkxBR1M9Y3J1fQotIAotIAotIAotQEAgLTY2OTIsNiArNjk1Miw2NCBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9hcl9hdF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubwotKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsKLSsgIDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0rICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKLSsgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKLSsgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgotKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgotKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKLSsJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCi0rICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQotKwotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9Ci0rCi0raWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQotK2Vsc2UKLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQotK2ZpCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLSBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgotQEAgLTcwMjYsOCArNzM0NCw4IEBAIGVzYWMKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgotIAotICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLSAKLSAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KLSBvcHRfY3I9Ci1AQCAtNzA2Myw2ICs3MzgxLDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwotICAgZWxzZQotICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgotICAgZmkKLSsgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKLSAKLSAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgotICAgcGlwZV93b3Jrcz1ubwotQEAgLTcxMDQsNiArNzQyMywxOCBAQCBfTFRfRU9GCi0gICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKLSsvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQotKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQotKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKLSsvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbHNlCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKLSAjZW5kaWYKLUBAIC03MTE1LDcgKzc0NDYsNyBAQCBfTFRfRU9GCi0gCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0Ci0gCi0gLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotLWNvbnN0IHN0cnVjdCB7Ci0rTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICB2b2lkICAgICAgICphZGRyZXNzOwotIH0KLUBAIC03MTQxLDggKzc0NzIsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewotIF9MVF9FT0YKLSAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgotIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCi0tCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKLSsJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgotIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKLSAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKLUBAIC03MTUyLDggKzc0ODMsOCBAQCBfTFRfRU9GCi0gICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAJICAgIHBpcGVfd29ya3M9eWVzCi0gCSAgZmkKLS0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgotLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgotKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCi0rCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCi0gCWVsc2UKLSAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKLSAJZmkKLUBAIC03MTkwLDYgKzc1MjEsMjEgQEAgZWxzZQotICRhc19lY2hvICJvayIgPiY2OyB9Ci0gZmkKLSAKLSsjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KLStpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZmkKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSAKLSAKLSAKLUBAIC03MjA2LDYgKzc1NTIsNDAgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQotKwotKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OwotK2Vsc2UKLSsgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCi0rZmkKLSsKLSsKLStsdF9zeXNyb290PQotK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKLSsgeWVzKQotKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAotKyAgIGZpCi0rICAgOzsgIygKLSsgLyopCi0rICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0rICAgOzsgIygKLSsgbm98JycpCi0rICAgOzsgIygKLSsgKikKLSsgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQotKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9Ci0rICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1Ci0rICAgOzsKLStlc2FjCi0rCi0rIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1Ci0rJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KLSAKLSAKLSAKLUBAIC03NDE3LDYgKzc3OTcsMTIzIEBAIGVzYWMKLSAKLSBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKLSAKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IG10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KLSsgICAgTUFOSUZFU1RfVE9PTD0iOiIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKLSsgIGZpCi0rZWxzZQotKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10Ci0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCi0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1Ci0rICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0Ci0rICBjYXQgY29uZnRlc3QuZXJyID4mNQotKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCi0rICBmaQotKyAgcm0gLWYgY29uZnRlc3QqCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQotK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCi0rICBNQU5JRkVTVF9UT09MPToKLStmaQotKwotKwotKwotKwotKwotIAotICAgY2FzZSAkaG9zdF9vcyBpbgotICAgICByaGFwc29keSogfCBkYXJ3aW4qKQotQEAgLTc5ODAsNiArODQ3Nyw4IEBAIF9MVF9FT0YKLSAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKLSAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1Ci0gICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQotKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1Ci0rICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKLSAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKLSBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQotIF9MVF9FT0YKLUBAIC04MTc1LDcgKzg2NzQsOCBAQCBmaQotIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKLSAKLSAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgotLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJwotK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKLStMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCi0gCi0gCi0gCi1AQCAtODI2NCw3ICs4NzY0LDcgQEAgYWl4MyopCi0gZXNhYwotIAotICMgR2xvYmFsIHZhcmlhYmxlczoKLS1vZmlsZT1saWJ0b29sCi0rb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCi0gY2FuX2J1aWxkX3NoYXJlZD15ZXMKLSAKLSAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC04NTYyLDggKzkwNjIsNiBAQCBmaQotIGx0X3Byb2dfY29tcGlsZXJfcGljPQotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQotIAotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCi0gICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTg3MjksNiArOTIyNywxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCi0gCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKLSAJOzsKLSsgICAgICBuYWdmb3IqKQotKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCi0rCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKLSsJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCi0rCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSsJOzsKLSAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCi0gICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAotIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTg3OTEsNyArOTI5NSw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKLSsgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OwotICAgICAgICopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKLUBAIC04ODQ4LDEzICs5MzUyLDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKLSAgICAgOzsKLSBlc2FjCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0tJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0tCi0tCi0tCi0tCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLStsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKLSAKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTg5MTUsNiArOTQyMywxMSBAQCBmaQotIAotIAotIAotKwotKwotKwotKwotKwotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCi0gIwotQEAgLTkyNjUsNyArOTc3OCw4IEBAIF9MVF9FT0YKLSAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwotICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0tICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKLSAKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTkzNjQsMTIgKzk4NzgsMTIgQEAgX0xUX0VPRgotIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCi0tCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0rCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KLSAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0tCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0gCSAgZmkKLSAJICA7OwotIAllc2FjCi1AQCAtOTM4Myw4ICs5ODk3LDggQEAgX0xUX0VPRgotIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCi0gCXdsYXJjPQotICAgICAgIGVsc2UKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZmkKLSAgICAgICA7OwotIAotQEAgLTk0MDIsOCArOTkxNiw4IEBAIF9MVF9FT0YKLSAKLSBfTFRfRU9GCi0gICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05NDQ5LDggKzk5NjMsOCBAQCBfTFRfRU9GCi0gCi0gICAgICopCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtOTU4MCw3ICsxMDA5NCwxMyBAQCBfTFRfRU9GCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05NTkzLDIyICsxMDExMywyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtOTYyMCw3ICsxMDE0NywxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJZWxzZQotIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gCSAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTYzMywyMiArMTAxNjYsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC05NjkzLDIwICsxMDIzMyw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0tICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotLSAgICAgIGxpYmV4dD1saWIKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLS0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKLS0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLS0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0tICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLS0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0tICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0tICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotKyAgICAgIGNsKikKLSsJIyBOYXRpdmUgTVNWQwotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCi0rCWZpbGVfbGlzdF9zcGVjPSdAJwotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBlbHNlCi0rCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGZpfgotKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KLSsJICBsaW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCi0rCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rCSMgRG9uJ3QgdXNlIHJhbmxpYgotKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCi0rCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLSsJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLSsJICAgICouZXhlfCouRVhFKSA7OwotKwkgICAgKikKLSsJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotKwkgICAgICA7OwotKwkgIGVzYWN+Ci0rCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLSsJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0rCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLSsJICBmaScKLSsJOzsKLSsgICAgICAqKQotKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLSsJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLSsJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLSsJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwk7OwotKyAgICAgIGVzYWMKLSAgICAgICA7OwotIAotICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTk3NjcsNyArMTAzNTAsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLUBAIC05Nzc1LDcgKzEwMzU4LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXg5KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGZpCi1AQCAtOTc5MSw3ICsxMDM3NCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4MTAqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0gICAgICAgZmkKLUBAIC05ODE1LDEwICsxMDM5OCwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJKikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAllc2FjCi0gICAgICAgZWxzZQotQEAgLTk4OTcsMjMgKzEwNDgwLDM2IEBAIGZpCi0gCi0gICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90Ci0gCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKLSAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLS0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0tICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0taW50IGZvbyh2b2lkKSB7fQotK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0tICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0tCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKLStlbHNlCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubwotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQotKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCi0rICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWZpCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC05OTk4LDcgKzEwNTk0LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgIGVsc2UKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtMTAwMTcsOSArMTA2MTMsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJd2xhcmM9JyR7d2x9JwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gICAgICAgZWxzZQotIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KLSAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtMTA1OTUsOCArMTExOTEsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTA2MjksMTMgKzExMjI2LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKLSsKLSsgICAgY2FzZSAkYnVpbGRfb3MgaW4KLSsgICAgbWluZ3cqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KLSsgICAgICBsdF9zYXZlX2lmcz0kSUZTCi0rICAgICAgSUZTPSc7JwotKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKLSsgICAgICBkbwotKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KLSsgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgotKyAgICAgIGRvbmUKLSsgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCi0rICAgICAgOzsKLSsgICAgY3lnd2luKikKLSsgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCi0rICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCi0rICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgotKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICAgOzsKLSAgIGVzYWMKLS0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgIHNobGlicGF0aF92YXI9UEFUSAotICAgOzsKLUBAIC0xMDcyNyw3ICsxMTM4Miw3IEBAIGhhaWt1KikKLSAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKLSsgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwotICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgOzsKLSAKLUBAIC0xMTUyMyw3ICsxMjE3OCw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLSNsaW5lIDExNTI2ICJjb25maWd1cmUiCi0rI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMTU2NywxMCArMTIyMjIsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMTYyOSw3ICsxMjI4NCw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLSNsaW5lIDExNjMyICJjb25maWd1cmUiCi0rI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMTY3MywxMCArMTIzMjgsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xNTkzNiwxMyArMTY1OTEsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSthcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNTk1NywxNCArMTY2MTksMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTU5OTcsMTIgKzE2NjYyLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCi0gaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE2MDU3LDggKzE2NzIyLDEzIEBAIHJlbG9hZF9mbGFnIFwKLSBPQkpEVU1QIFwKLSBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCi0gZmlsZV9tYWdpY19jbWQgXAotK2ZpbGVfbWFnaWNfZ2xvYiBcCi0rd2FudF9ub2Nhc2VnbG9iIFwKLStETExUT09MIFwKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCi0gQVIgXAotIEFSX0ZMQUdTIFwKLSthcmNoaXZlcl9saXN0X3NwZWMgXAotIFNUUklQIFwKLSBSQU5MSUIgXAotIENDIFwKLUBAIC0xNjA2OCwxMiArMTY3MzgsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKLStubV9maWxlX2xpc3Rfc3BlYyBcCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAotLWx0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKLStsdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAotIG5lZWRfbG9ja3MgXAotK01BTklGRVNUX1RPT0wgXAotIERTWU1VVElMIFwKLSBOTUVESVQgXAotIExJUE8gXAotQEAgLTE2MDg5LDcgKzE2NzYxLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAotIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAotLWZpeF9zcmNmaWxlX3BhdGggXAotIGV4Y2x1ZGVfZXhwc3ltcyBcCi0gaW5jbHVkZV9leHBzeW1zIFwKLSBmaWxlX2xpc3Rfc3BlYyBcCi1AQCAtMTYxMjUsNiArMTY3OTYsNyBAQCBtb2R1bGVfY21kcyBcCi0gbW9kdWxlX2V4cHN5bV9jbWRzIFwKLSBleHBvcnRfc3ltYm9sc19jbWRzIFwKLSBwcmVsaW5rX2NtZHMgXAotK3Bvc3RsaW5rX2NtZHMgXAotIHBvc3RpbnN0YWxsX2NtZHMgXAotIHBvc3R1bmluc3RhbGxfY21kcyBcCi0gZmluaXNoX2NtZHMgXAotQEAgLTE2ODkxLDcgKzE3NTYzLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAotICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgotICMKLSAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyAgICAgICAgICAgICAgICAgSW5jLgotICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2Ci0gIwotICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0xNjk5NCwxOSArMTc2NjcsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCi0gIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgotIE5MMlNQPSRsdF9sdF9OTDJTUAotIAotKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0rCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0rCi0gIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KLSBPQkpEVU1QPSRsdF9PQkpEVU1QCi0gCi0gIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKLSAKLS0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgotKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKLSAKLSsjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCi0rCi0rIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKLSsKLSsjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgotK0RMTFRPT0w9JGx0X0RMTFRPT0wKLSsKLSsjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rCi0gIyBUaGUgYXJjaGl2ZXIuCi0gQVI9JGx0X0FSCi0rCi0rIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KLSBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKLSAKLSsjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KLSthcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYwotKwotICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCi0gU1RSSVA9JGx0X1NUUklQCi0gCi1AQCAtMTcwMzYsNiArMTc3MzIsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKLSAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgotIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAotIAotKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgotK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYwotKwotKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCi0rbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAotKwotICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgotIG9iamRpcj0kb2JqZGlyCi0gCi1AQCAtMTcwNDUsNiArMTc3NDcsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAotICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/Ci0gbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwotIAotKyMgTWFuaWZlc3QgdG9vbC4KLStNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCi0rCi0gIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgotIERTWU1VVElMPSRsdF9EU1lNVVRJTAotIAotQEAgLTE3MTU5LDEyICsxNzg2NCwxMiBAQCB3aXRoX2djYz0kR0NDCi0gIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgotIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKLSAKLS0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0td2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLS0KLSAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KLSBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKLSAKLSsjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0rd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLSsKLSAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCi0gbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKLSAKLUBAIC0xNzI1MSw5ICsxNzk1Niw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKLSAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KLSBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCi0gCi0tIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgotLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKLS0KLSAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwotIAotQEAgLTE3MjY5LDYgKzE3OTcxLDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKLSAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgotIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCi0gCi0rIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgotK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKLSsKLSAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KLSBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKLSAKLUBAIC0xNzMwMSwyMTAgKzE4MDA2LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKLSAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KLSAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCi0gICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwotLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIGNhc2UgJHhzaV9zaGVsbCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0tIyBjYWxsOgotLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCi0tIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0tIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0tIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCi0tIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgotLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0tICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9Ci0tfQotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQotLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0tICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9Ci0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAotLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLS0gIGVsc2UKLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotLSAgZmkKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCi0tfQotLQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICBjYXNlICR7Mn0gaW4KLS0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLS0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotLSAgZXNhYwotLX0KLS0KLS0jIHNlZCBzY3JpcHRzOgotLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCi0tbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJwotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCi0tICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotLX0KLS0KLS1fTFRfRU9GCi0tZXNhYwotLQotLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMSs9XCQyIgotLX0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMT1cJCQxXCQyIgotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICBlc2FjCi0tCi0tCi0tICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0rICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0rICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotKwotKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKLStmdW5jX2Rpcm5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKLStmdW5jX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCi0rZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKLStmdW5jX3N0cmlwbmFtZSAoKVwKLSt7XAotK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKLStcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCi0rZnVuY19zcGxpdF9sb25nX29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCi0rZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCi0rZnVuY19sbzJvICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAotK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKLStmdW5jX3hmb3JtICgpXAotK3tcCi0rICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKLStmdW5jX2FyaXRoICgpXAotK3tcCi0rICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCi0rZnVuY19sZW4gKClcCi0re1wKLSsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotK2ZpCi0rCi0raWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCi0rZnVuY19hcHBlbmQgKClcCi0re1wKLSsgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCi0rZnVuY19hcHBlbmRfcXVvdGVkICgpXAotK3tcCi0rXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKLStcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStlbHNlCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZmkKLSsKLStpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQotK2ZpCi0rCi0rCi0rICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQotICAgY2htb2QgK3ggIiRvZmlsZSIKLSAKLWRpZmYgLS1naXQgYS9nYXMvY29uZmlndXJlIGIvZ2FzL2NvbmZpZ3VyZQotaW5kZXggNjRkZTlmMTlkYS4uYTgyZmRlN2ZhOCAxMDA3NTUKLS0tLSBhL2dhcy9jb25maWd1cmUKLSsrKyBiL2dhcy9jb25maWd1cmUKLUBAIC02ODEsOCArNjgxLDExIEBAIE9UT09MCi0gTElQTwotIE5NRURJVAotIERTWU1VVElMCi0rTUFOSUZFU1RfVE9PTAotIFJBTkxJQgotK2FjX2N0X0FSCi0gQVIKLStETExUT09MCi0gT0JKRFVNUAotIExOX1MKLSBOTQotQEAgLTc5OSw2ICs4MDIsNyBAQCBlbmFibGVfc3RhdGljCi0gd2l0aF9waWMKLSBlbmFibGVfZmFzdF9pbnN0YWxsCi0gd2l0aF9nbnVfbGQKLSt3aXRoX2xpYnRvb2xfc3lzcm9vdAotIGVuYWJsZV9saWJ0b29sX2xvY2sKLSBlbmFibGVfcGx1Z2lucwotIGVuYWJsZV9sYXJnZWZpbGUKLUBAIC0xNDg3LDYgKzE0OTEsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KLSsgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCi0gICAtLXdpdGgtY3B1PUNQVSAgICAgICAgICBkZWZhdWx0IGNwdSB2YXJpYW50IGlzIENQVSAoY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBvbiBBUkMpCi0gICAtLXdpdGgtc3lzdGVtLXpsaWIgICAgICB1c2UgaW5zdGFsbGVkIGxpYnoKLUBAIC01Mjc0LDggKzUyODAsOCBAQCBlc2FjCi0gCi0gCi0gCi0tbWFjcm9fdmVyc2lvbj0nMi4yLjdhJwotLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCi0rbWFjcm9fdmVyc2lvbj0nMi40JwotK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCi0gCi0gCi0gCi1AQCAtNTMxNSw3ICs1MzIxLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQotICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgotLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0raWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0gICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLSAgIEVDSE89J3ByaW50IC1yIC0tJwotIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNjAwMSw4ICs2MDA3LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKLSAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwotIHhzaV9zaGVsbD1ubwotICggX2x0X2R1bW15PSJhL2IvYyIKLS0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0tICAgICAgPSBjLGEvYiwsIFwKLSsgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0rICAgICAgPSBjLGEvYixiL2MsIFwKLSAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAotICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAotICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTYwNTEsNiArNjA1Nyw4MCBAQCBlc2FjCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKi0qLWN5Z3dpbiogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKLSsgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNjA2Nyw2ICs2MTQ3LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCi0gZXNhYwotIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLSBjYXNlICRob3N0X29zIGluCi0rICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCi0rICAgIGZpCi0rICAgIDs7Ci0gICBkYXJ3aW4qKQotICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC02MjM1LDcgKzYzMjAsOCBAQCBtaW5ndyogfCBwdzMyKikKLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCi0gICBlbHNlCi0tICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JwotKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCi0rICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwotICAgZmkKLSAgIDs7Ci1AQCAtNjM4OSw2ICs2NDc1LDIxIEBAIGVzYWMKLSBmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQotICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQotKwotK2ZpbGVfbWFnaWNfZ2xvYj0KLSt3YW50X25vY2FzZWdsb2I9bm8KLStpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotKyAgY2FzZSAkaG9zdF9vcyBpbgotKyAgbWluZ3cqIHwgcHczMiopCi0rICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCi0rICAgIGVsc2UKLSsgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNjQwNCw5ICs2NTA1LDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCi0raWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQotKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgotKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KLSsgICAgRExMVE9PTD0iZmFsc2UiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCi0rICBmaQotK2Vsc2UKLSsgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwotKwotK2Nhc2UgJGhvc3Rfb3MgaW4KLStjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0rICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCi0rICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KLSsgICotLWlkZW50aWZ5LXN0cmljdCopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgotKyAgICA7OwotKyAgKikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCi0rICAgIDs7Ci0rICBlc2FjCi0rICA7OwotKyopCi0rICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKLSsgIDs7Ci0rZXNhYwotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Ci0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITwotKwotKwotKwotKwotKwotKwotKwotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rICBkbwotKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC02NDIyLDcgKzY2NzYsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCi0rICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02NDQyLDExICs2Njk2LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSAKLSsgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhawotKyAgZG9uZQotIGZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCi0raWYgdGVzdCAteiAiJEFSIjsgdGhlbgotICAgYWNfY3RfQVI9JEFSCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rZG8KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTY0NjIsNyArNjcyMCw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02NDgxLDYgKzY3MzksMTAgQEAgZWxzZQotICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSsKLSsgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKLStkb25lCi0rCi0gICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KLSAgICAgQVI9ImZhbHNlIgotICAgZWxzZQotQEAgLTY0OTIsMTIgKzY3NTQsMTAgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0gZXNhYwotICAgICBBUj0kYWNfY3RfQVIKLSAgIGZpCi0tZWxzZQotLSAgQVI9IiRhY19jdl9wcm9nX0FSIgotIGZpCi0gCi0tdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0rOiAke0FSPWFyfQotKzogJHtBUl9GTEFHUz1jcnV9Ci0gCi0gCi0gCi1AQCAtNjUwOSw2ICs2NzY5LDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsKLStpbnQKLSttYWluICgpCi0rewotKwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAotKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JwotKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0rCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KLSsKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0gICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCi1AQCAtNjg0Myw4ICs3MTYxLDggQEAgZXNhYwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gCi0gIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotIAotICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgotIG9wdF9jcj0KLUBAIC02ODgwLDYgKzcxOTgsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCi0gICBlbHNlCi0gICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCi0gICBmaQotKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgotIAotICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCi0gICBwaXBlX3dvcmtzPW5vCi1AQCAtNjkyMSw2ICs3MjQwLDE4IEBAIF9MVF9FT0YKLSAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAotKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCi0rICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2VsaWYgZGVmaW5lZChfX29zZl9fKQotKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAotKyNlbmRpZgotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgewotICNlbmRpZgotQEAgLTY5MzIsNyArNzI2Myw3IEBAIF9MVF9FT0YKLSAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKLSAKLSAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCi0tY29uc3Qgc3RydWN0IHsKLStMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgewotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHZvaWQgICAgICAgKmFkZHJlc3M7Ci0gfQotQEAgLTY5NTgsOCArNzI4OSw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7Ci0gX0xUX0VPRgotIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCi0gCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0Ci0tCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLS0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKLSsJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUwotKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwotIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCi0gCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgotIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTY5NjksOCArNzMwMCw4IEBAIF9MVF9FT0YKLSAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotIAkgICAgcGlwZV93b3Jrcz15ZXMKLSAJICBmaQotLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0tCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0rCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKLSsJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKLSAJZWxzZQotIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQotIAlmaQotQEAgLTcwMDcsNiArNzMzOCwyMSBAQCBlbHNlCi0gJGFzX2VjaG8gIm9rIiA+JjY7IH0KLSBmaQotIAotKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgotK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStmaQotKwotKwotKwotKwotKwotKwotKwotKwotKwotIAotIAotIAotQEAgLTcwMjMsNiArNzM2OSw0MCBAQCBmaQotIAotIAotIAotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9Ci0rCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7Ci0rZWxzZQotKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KLStmaQotKwotKwotK2x0X3N5c3Jvb3Q9Ci0rY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAotKyB5ZXMpCi0rICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCi0rICAgZmkKLSsgICA7OyAjKAotKyAvKikKLSsgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsgICA7OyAjKAotKyBub3wnJykKLSsgICA7OyAjKAotKyAqKQotKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1Ci0rJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KLSsgICBhc19mbl9lcnJvciAkPyAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKLSsgICA7OwotK2VzYWMKLSsKLSsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKLSskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQotIAotIAotIAotQEAgLTcyMzQsNiArNzYxNCwxMjMgQEAgZXNhYwotIAotIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotIAotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgotKyAgICBNQU5JRkVTVF9UT09MPSI6IgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAotKyAgZmkKLStlbHNlCi0rICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKLSsgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKLSsgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0rICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCi0rICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKLSsgIGZpCi0rICBybSAtZiBjb25mdGVzdCoKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9Ci0raWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KLSsgIE1BTklGRVNUX1RPT0w9OgotK2ZpCi0rCi0rCi0rCi0rCi0rCi0gCi0gICBjYXNlICRob3N0X29zIGluCi0gICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNzc5Nyw2ICs4Mjk0LDggQEAgX0xUX0VPRgotICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQotICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKLSAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1Ci0rICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKLSsgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQotICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgotIGludCBtYWluKCkgeyByZXR1cm4gMDt9Ci0gX0xUX0VPRgotQEAgLTc5OTIsNyArODQ5MSw4IEBAIGZpCi0gTElCVE9PTF9ERVBTPSIkbHRtYWluIgotIAotICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCi0tTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCi0rTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJwotK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKLSAKLSAKLSAKLUBAIC04MDgxLDcgKzg1ODEsNyBAQCBhaXgzKikKLSBlc2FjCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzOgotLW9maWxlPWxpYnRvb2wKLStvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKLSBjYW5fYnVpbGRfc2hhcmVkPXllcwotIAotICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTgzNzksOCArODg3OSw2IEBAIGZpCi0gbHRfcHJvZ19jb21waWxlcl9waWM9Ci0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Ci0gCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAKLSAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtODU0Niw2ICs5MDQ0LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKLSAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJwotKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKLSsJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtODYwOCw3ICs5MTEyLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCi0gICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTg2NjUsMTMgKzkxNjksMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgotICAgICA7OwotIGVzYWMKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLS0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLS0KLS0KLS0KLS0KLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYwotIAotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtODczMiw2ICs5MjQwLDExIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtOTA4Miw3ICs5NTk1LDggQEAgX0xUX0VPRgotICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0gICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCi0gICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLS0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtOTE4MSwxMiArOTY5NSwxMiBAQCBfTFRfRU9GCi0gCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKLS0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSsJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0gCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgotIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLS0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0rCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSAJICBmaQotIAkgIDs7Ci0gCWVzYWMKLUBAIC05MjAwLDggKzk3MTQsOCBAQCBfTFRfRU9GCi0gCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLSAJd2xhcmM9Ci0gICAgICAgZWxzZQotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtOTIxOSw4ICs5NzMzLDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTkyNjYsOCArOTc4MCw4IEBAIF9MVF9FT0YKLSAKLSAgICAgKikKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05Mzk3LDcgKzk5MTEsMTMgQEAgX0xUX0VPRgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwotICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTQxMCwyMiArOTkzMCwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtOTQzNyw3ICs5OTY0LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAllbHNlCi0gCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05NDUwLDIyICs5OTgzLDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtOTUxMCwyMCArMTAwNTAsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0gICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLS0gICAgICBsaWJleHQ9bGliCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0tICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0tICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0tICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLS0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0tICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcwotKwlmaWxlX2xpc3Rfc3BlYz0nQCcKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwotKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICopCi0rCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgOzsKLSsJICBlc2FjfgotKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgZmknCi0rCTs7Ci0rICAgICAgKikKLSsJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0rCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJOzsKLSsgICAgICBlc2FjCi0gICAgICAgOzsKLSAKLSAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC05NTg0LDcgKzEwMTY3LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTU5Miw3ICsxMDE3NSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4OSopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBmaQotQEAgLTk2MDgsNyArMTAxOTEsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDEwKikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgIGZpCi1AQCAtOTYzMiwxMCArMTAyMTUsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAlpYTY0KikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCSopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJZXNhYwotICAgICAgIGVsc2UKLUBAIC05NzE0LDIzICsxMDI5NywzNiBAQCBmaQotIAotICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAotIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCi0gCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0tICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgotKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSsJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotLWludCBmb28odm9pZCkge30KLStpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9Ci0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotLQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCi0rZWxzZQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSsgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KLSsJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgotKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlmaQotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtOTgxNSw3ICsxMDQxMSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICBlbHNlCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTk4MzQsOSArMTA0MzAsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJd2xhcmM9JyR7d2x9JwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gICAgICAgZWxzZQotIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KLSAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtMTA0MTIsOCArMTEwMDgsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTA0NDYsMTMgKzExMDQzLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKLSsKLSsgICAgY2FzZSAkYnVpbGRfb3MgaW4KLSsgICAgbWluZ3cqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KLSsgICAgICBsdF9zYXZlX2lmcz0kSUZTCi0rICAgICAgSUZTPSc7JwotKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKLSsgICAgICBkbwotKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KLSsgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgotKyAgICAgIGRvbmUKLSsgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCi0rICAgICAgOzsKLSsgICAgY3lnd2luKikKLSsgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCi0rICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCi0rICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgotKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICAgOzsKLSAgIGVzYWMKLS0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgIHNobGlicGF0aF92YXI9UEFUSAotICAgOzsKLUBAIC0xMDU0NCw3ICsxMTE5OSw3IEBAIGhhaWt1KikKLSAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKLSsgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwotICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgOzsKLSAKLUBAIC0xMTM0MCw3ICsxMTk5NSw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLSNsaW5lIDExMzQzICJjb25maWd1cmUiCi0rI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMTM4NCwxMCArMTIwMzksMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMTQ0Niw3ICsxMjEwMSw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLSNsaW5lIDExNDQ5ICJjb25maWd1cmUiCi0rI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMTQ5MCwxMCArMTIxNDUsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xNTg5NiwxMyArMTY1NTEsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSthcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNTkxNywxNCArMTY1NzksMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTU5NTcsMTIgKzE2NjIyLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCi0gaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE2MDE3LDggKzE2NjgyLDEzIEBAIHJlbG9hZF9mbGFnIFwKLSBPQkpEVU1QIFwKLSBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCi0gZmlsZV9tYWdpY19jbWQgXAotK2ZpbGVfbWFnaWNfZ2xvYiBcCi0rd2FudF9ub2Nhc2VnbG9iIFwKLStETExUT09MIFwKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCi0gQVIgXAotIEFSX0ZMQUdTIFwKLSthcmNoaXZlcl9saXN0X3NwZWMgXAotIFNUUklQIFwKLSBSQU5MSUIgXAotIENDIFwKLUBAIC0xNjAyOCwxMiArMTY2OTgsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKLStubV9maWxlX2xpc3Rfc3BlYyBcCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAotLWx0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKLStsdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAotIG5lZWRfbG9ja3MgXAotK01BTklGRVNUX1RPT0wgXAotIERTWU1VVElMIFwKLSBOTUVESVQgXAotIExJUE8gXAotQEAgLTE2MDQ5LDcgKzE2NzIxLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAotIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAotLWZpeF9zcmNmaWxlX3BhdGggXAotIGV4Y2x1ZGVfZXhwc3ltcyBcCi0gaW5jbHVkZV9leHBzeW1zIFwKLSBmaWxlX2xpc3Rfc3BlYyBcCi1AQCAtMTYwODUsNiArMTY3NTYsNyBAQCBtb2R1bGVfY21kcyBcCi0gbW9kdWxlX2V4cHN5bV9jbWRzIFwKLSBleHBvcnRfc3ltYm9sc19jbWRzIFwKLSBwcmVsaW5rX2NtZHMgXAotK3Bvc3RsaW5rX2NtZHMgXAotIHBvc3RpbnN0YWxsX2NtZHMgXAotIHBvc3R1bmluc3RhbGxfY21kcyBcCi0gZmluaXNoX2NtZHMgXAotQEAgLTE2ODU4LDcgKzE3NTMwLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAotICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgotICMKLSAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyAgICAgICAgICAgICAgICAgSW5jLgotICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2Ci0gIwotICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0xNjk2MSwxOSArMTc2MzQsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCi0gIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgotIE5MMlNQPSRsdF9sdF9OTDJTUAotIAotKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0rCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0rCi0gIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KLSBPQkpEVU1QPSRsdF9PQkpEVU1QCi0gCi0gIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKLSAKLS0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgotKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKLSAKLSsjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCi0rCi0rIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKLSsKLSsjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgotK0RMTFRPT0w9JGx0X0RMTFRPT0wKLSsKLSsjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rCi0gIyBUaGUgYXJjaGl2ZXIuCi0gQVI9JGx0X0FSCi0rCi0rIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KLSBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKLSAKLSsjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KLSthcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYwotKwotICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCi0gU1RSSVA9JGx0X1NUUklQCi0gCi1AQCAtMTcwMDMsNiArMTc2OTksMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKLSAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgotIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAotIAotKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgotK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYwotKwotKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCi0rbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAotKwotICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgotIG9iamRpcj0kb2JqZGlyCi0gCi1AQCAtMTcwMTIsNiArMTc3MTQsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAotICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/Ci0gbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwotIAotKyMgTWFuaWZlc3QgdG9vbC4KLStNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCi0rCi0gIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgotIERTWU1VVElMPSRsdF9EU1lNVVRJTAotIAotQEAgLTE3MTI2LDEyICsxNzgzMSwxMiBAQCB3aXRoX2djYz0kR0NDCi0gIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgotIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKLSAKLS0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0td2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLS0KLSAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KLSBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKLSAKLSsjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0rd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLSsKLSAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCi0gbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKLSAKLUBAIC0xNzIxOCw5ICsxNzkyMyw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKLSAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KLSBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCi0gCi0tIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgotLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKLS0KLSAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwotIAotQEAgLTE3MjM2LDYgKzE3OTM4LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKLSAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgotIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCi0gCi0rIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgotK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKLSsKLSAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KLSBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKLSAKLUBAIC0xNzI2OCwyMTAgKzE3OTczLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKLSAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KLSAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCi0gICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwotLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIGNhc2UgJHhzaV9zaGVsbCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0tIyBjYWxsOgotLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCi0tIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0tIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0tIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCi0tIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgotLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0tICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9Ci0tfQotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQotLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0tICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9Ci0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAotLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLS0gIGVsc2UKLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotLSAgZmkKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCi0tfQotLQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICBjYXNlICR7Mn0gaW4KLS0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLS0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotLSAgZXNhYwotLX0KLS0KLS0jIHNlZCBzY3JpcHRzOgotLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCi0tbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJwotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCi0tICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotLX0KLS0KLS1fTFRfRU9GCi0tZXNhYwotLQotLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMSs9XCQyIgotLX0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMT1cJCQxXCQyIgotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICBlc2FjCi0tCi0tCi0tICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0rICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0rICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotKwotKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKLStmdW5jX2Rpcm5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKLStmdW5jX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCi0rZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKLStmdW5jX3N0cmlwbmFtZSAoKVwKLSt7XAotK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKLStcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCi0rZnVuY19zcGxpdF9sb25nX29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCi0rZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCi0rZnVuY19sbzJvICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAotK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKLStmdW5jX3hmb3JtICgpXAotK3tcCi0rICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKLStmdW5jX2FyaXRoICgpXAotK3tcCi0rICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCi0rZnVuY19sZW4gKClcCi0re1wKLSsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotK2ZpCi0rCi0raWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCi0rZnVuY19hcHBlbmQgKClcCi0re1wKLSsgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCi0rZnVuY19hcHBlbmRfcXVvdGVkICgpXAotK3tcCi0rXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKLStcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStlbHNlCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZmkKLSsKLStpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQotK2ZpCi0rCi0rCi0rICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQotICAgY2htb2QgK3ggIiRvZmlsZSIKLSAKLWRpZmYgLS1naXQgYS9ncHJvZi9jb25maWd1cmUgYi9ncHJvZi9jb25maWd1cmUKLWluZGV4IGFiMzJiYWIyYjYuLjUxMTljNjAxOWYgMTAwNzU1Ci0tLS0gYS9ncHJvZi9jb25maWd1cmUKLSsrKyBiL2dwcm9mL2NvbmZpZ3VyZQotQEAgLTY2Miw4ICs2NjIsMTEgQEAgT1RPT0wKLSBMSVBPCi0gTk1FRElUCi0gRFNZTVVUSUwKLStNQU5JRkVTVF9UT09MCi0gUkFOTElCCi0rYWNfY3RfQVIKLSBBUgotK0RMTFRPT0wKLSBPQkpEVU1QCi0gTE5fUwotIE5NCi1AQCAtNzgwLDYgKzc4Myw3IEBAIGVuYWJsZV9zdGF0aWMKLSB3aXRoX3BpYwotIGVuYWJsZV9mYXN0X2luc3RhbGwKLSB3aXRoX2dudV9sZAotK3dpdGhfbGlidG9vbF9zeXNyb290Ci0gZW5hYmxlX2xpYnRvb2xfbG9jawotIGVuYWJsZV9wbHVnaW5zCi0gZW5hYmxlX2xhcmdlZmlsZQotQEAgLTE0NDIsNiArMTQ0Niw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQotICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQotKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKLSsgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KLSAKLSBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKLSAgIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAotQEAgLTUxMjQsOCArNTEzMCw4IEBAIGVzYWMKLSAKLSAKLSAKLS1tYWNyb192ZXJzaW9uPScyLjIuN2EnCi0tbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKLSttYWNyb192ZXJzaW9uPScyLjQnCi0rbWFjcm9fcmV2aXNpb249JzEuMzI5MycKLSAKLSAKLSAKLUBAIC01MTY1LDcgKzUxNzEsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9Ci0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC01ODUxLDggKzU4NTcsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwotICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi0geHNpX3NoZWxsPW5vCi0gKCBfbHRfZHVtbXk9ImEvYi9jIgotLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLS0gICAgICA9IGMsYS9iLCwgXAotKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSsgICAgICA9IGMsYS9iLGIvYywgXAotICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNTkwMSw2ICs1OTA3LDgwIEBAIGVzYWMKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqLSotY3lnd2luKiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQotKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KLStsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLStjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC01OTE3LDYgKzU5OTcsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTYwODUsNyArNjE3MCw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC02MTYyLDExICs2MjQ4LDYgQEAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQotICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKLSAgIDs7Ci0gCi0tbGludXgtdWNsaWJjKikKLS0gIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCi0tICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT1gZWNobyAvbGliL2xpYnVDbGliYy0qLnNvYAotLSAgOzsKLS0KLSBuZXRic2QqKQotICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4gL2Rldi9udWxsOyB0aGVuCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbXi9dKyhcLnNvXC5bMC05XStcLlswLTldK3xfcGljXC5hKSQnCi1AQCAtNjI0NCw2ICs2MzI1LDIxIEBAIGVzYWMKLSBmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQotICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQotKwotK2ZpbGVfbWFnaWNfZ2xvYj0KLSt3YW50X25vY2FzZWdsb2I9bm8KLStpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotKyAgY2FzZSAkaG9zdF9vcyBpbgotKyAgbWluZ3cqIHwgcHczMiopCi0rICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCi0rICAgIGVsc2UKLSsgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNjI1NywxMSArNjM1MywxNjQgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKLSskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCi0rICAgIERMTFRPT0w9ImZhbHNlIgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAotKyAgZmkKLStlbHNlCi0rICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKLSsKLStjYXNlICRob3N0X29zIGluCi0rY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAotKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAotKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCi0rICAqLS1pZGVudGlmeS1zdHJpY3QqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKLSsgICAgOzsKLSsgICopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjawotKyAgICA7OwotKyAgZXNhYwotKyAgOzsKLSsqKQotKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCi0rICA7OwotK2VzYWMKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotKyAgZG8KLSsgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNjI3Niw4ICs2NTI1LDggQEAgZG8KLSAgIElGUz0kYXNfc2F2ZV9JRlMKLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNjI5NywxMSArNjU0NiwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0gCi0rICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKLSsgIGRvbmUKLSBmaQotLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgotK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KLSAgIGFjX2N0X0FSPSRBUgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotK2RvCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC02MzM2LDYgKzY1ODksMTAgQEAgZWxzZQotICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSsKLSsgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKLStkb25lCi0rCi0gICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KLSAgICAgQVI9ImZhbHNlIgotICAgZWxzZQotQEAgLTYzNDcsMTYgKzY2MDQsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0gZXNhYwotICAgICBBUj0kYWNfY3RfQVIKLSAgIGZpCi0tZWxzZQotLSAgQVI9IiRhY19jdl9wcm9nX0FSIgotIGZpCi0gCi0tdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0rOiAke0FSPWFyfQotKzogJHtBUl9GTEFHUz1jcnV9Ci0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsKLStpbnQKLSttYWluICgpCi0rewotIAotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAotKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JwotKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0gCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KLSAKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLSAKLSAKLSAKLUBAIC02Njk4LDggKzcwMTEsOCBAQCBlc2FjCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKLSAKLSAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0gCi0gIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCi0gb3B0X2NyPQotQEAgLTY3MzUsNiArNzA0OCw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KLSAgIGVsc2UKLSAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKLSAgIGZpCi0rICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCi0gCi0gICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KLSAgIHBpcGVfd29ya3M9bm8KLUBAIC02Nzc2LDYgKzcwOTAsMTggQEAgX0xUX0VPRgotICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi1AQCAtNjc4Nyw3ICs3MTEzLDcgQEAgX0xUX0VPRgotIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotIAotIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLS1jb25zdCBzdHJ1Y3QgewotK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtNjgxMyw4ICs3MTM5LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSBfTFRfRU9GCi0gCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLSAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLS0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLSAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCi0gCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNjgyNCw4ICs3MTUwLDggQEAgX0xUX0VPRgotICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gCSAgICBwaXBlX3dvcmtzPXllcwotIAkgIGZpCi0tCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLS0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSsJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwotKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwotIAllbHNlCi0gCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1Ci0gCWZpCi1AQCAtNjg2Miw2ICs3MTg4LDE4IEBAIGVsc2UKLSAkYXNfZWNobyAib2siID4mNjsgfQotIGZpCi0gCi0rIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCi0raWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gCi1AQCAtNjg3OCw2ICs3MjE2LDQzIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKLStlbHNlCi0rICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubwotK2ZpCi0rCi0rCi0rbHRfc3lzcm9vdD0KLStjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCi0rIHllcykKLSsgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKLSsgICBmaQotKyAgIDs7ICMoCi0rIC8qKQotKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKyAgIDs7ICMoCi0rIG5vfCcnKQotKyAgIDs7ICMoCi0rICopCi0rICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKLSskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQotKyAgIDs7Ci0rZXNhYwotKwotKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQotKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0gCi0gCi0gCi1AQCAtNzA4OSw2ICs3NDY0LDEyMyBAQCBlc2FjCi0gCi0gbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCi0gCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCi0rICAgIE1BTklGRVNUX1RPT0w9IjoiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCi0rICBmaQotK2Vsc2UKLSsgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQotKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0KgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KLStpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgotKyAgTUFOSUZFU1RfVE9PTD06Ci0rZmkKLSsKLSsKLSsKLSsKLSsKLSAKLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC03NjUyLDYgKzgxNDQsOCBAQCBfTFRfRU9GCi0gICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1Ci0gICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQotICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKLSsgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQotKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1Ci0gICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCi0gaW50IG1haW4oKSB7IHJldHVybiAwO30KLSBfTFRfRU9GCi1AQCAtNzg0Nyw3ICs4MzQxLDggQEAgZmkKLSBMSUJUT09MX0RFUFM9IiRsdG1haW4iCi0gCi0gIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KLS1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKLStMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCi0rTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgotIAotIAotIAotQEAgLTc5MzYsNyArODQzMSw3IEBAIGFpeDMqKQotIGVzYWMKLSAKLSAjIEdsb2JhbCB2YXJpYWJsZXM6Ci0tb2ZpbGU9bGlidG9vbAotK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAotIGNhbl9idWlsZF9zaGFyZWQ9eWVzCi0gCi0gIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtODIzNCw4ICs4NzI5LDYgQEAgZmkKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KLSAKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLS0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAotICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC04NDAxLDYgKzg4OTQsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwotIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCi0gCTs7Ci0rICAgICAgbmFnZm9yKikKLSsJIyBOQUcgRm9ydHJhbiBjb21waWxlcgotKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCi0rCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJwotKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0rCTs7Ci0gICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQotICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKLSAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC04NDYzLDcgKzg5NjIsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCi0rICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKLSAgICAgICAqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtODUyMCwxMyArOTAxOSwxNyBAQCBjYXNlICRob3N0X29zIGluCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCi0gICAgIDs7Ci0gZXNhYwotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQotLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotLQotLQotLQotLQotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0rbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC04NTg3LDYgKzkwOTAsMTEgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC04OTM3LDcgKzk0NDUsOCBAQCBfTFRfRU9GCi0gICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KLSAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCi0gCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC05MDM2LDEyICs5NTQ1LDEyIEBAIF9MVF9FT0YKLSAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwotLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCi0gCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSsJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotIAkgIGZpCi0gCSAgOzsKLSAJZXNhYwotQEAgLTkwNTUsOCArOTU2NCw4IEBAIF9MVF9FT0YKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGZpCi0gICAgICAgOzsKLSAKLUBAIC05MDc0LDggKzk1ODMsOCBAQCBfTFRfRU9GCi0gCi0gX0xUX0VPRgotICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtOTEyMSw4ICs5NjMwLDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTkyNTIsNyArOTc2MSwxMyBAQCBfTFRfRU9GCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05MjY1LDIyICs5NzgwLDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLUBAIC05MjkyLDcgKzk4MTQsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCWVsc2UKLSAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTkzMDUsMjIgKzk4MzMsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC05MzY1LDIwICs5OTAwLDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLS0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0tICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLS0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLS0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgICAgY2wqKQotKwkjIE5hdGl2ZSBNU1ZDCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKLSsJZmlsZV9saXN0X3NwZWM9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGVsc2UKLSsJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZml+Ci0rCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgIGxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsJIyBEb24ndCB1c2UgcmFubGliCi0rCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAqKQotKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIDs7Ci0rCSAgZXNhY34KLSsJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgIGZpJwotKwk7OwotKyAgICAgICopCi0rCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCTs7Ci0rICAgICAgZXNhYwotICAgICAgIDs7Ci0gCi0gICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtOTQzOSw3ICsxMDAxNyw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCi0gICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTk0NDcsNyArMTAwMjUsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDkqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZmkKLUBAIC05NDYzLDcgKzEwMDQxLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXgxMCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgICBmaQotQEAgLTk0ODcsMTAgKzEwMDY1LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJaWE2NCopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAkqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWVzYWMKLSAgICAgICBlbHNlCi1AQCAtOTU2OSwyMyArMTAxNDcsMzYgQEAgZmkKLSAKLSAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKLSAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAotIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgotLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLS0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KLSsJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0rCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLSsJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS1pbnQgZm9vKHZvaWQpIHt9Ci0raW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLS0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLS0KLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcwotK2Vsc2UKLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9Ci0rCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJZmkKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTk2NzAsNyArMTAyNjEsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICAgZWxzZQotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC05Njg5LDkgKzEwMjgwLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCXdsYXJjPScke3dsfScKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotICAgICAgIGVsc2UKLSAJY2FzZSBgJENDIC1WIDI+JjFgIGluCi0gCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTEwMjY3LDggKzEwODU4LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgbmVlZF92ZXJzaW9uPW5vCi0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAKLS0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKLSsgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KLSsgIHllcywqKQotKyAgICAjIGdjYwotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwotICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTEwMzAxLDEzICsxMDg5Myw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgIDs7Ci0gICAgIGVzYWMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSsgICAgOzsKLSsKLSsgICosY2wqKQotKyAgICAjIE5hdGl2ZSBNU1ZDCi0rICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0rICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSsgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCi0rCi0rICAgIGNhc2UgJGJ1aWxkX29zIGluCi0rICAgIG1pbmd3KikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ci0rICAgICAgbHRfc2F2ZV9pZnM9JElGUwotKyAgICAgIElGUz0nOycKLSsgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCi0rICAgICAgZG8KLSsgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCi0rICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKLSsgICAgICBkb25lCi0rICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiopCi0rICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQotKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcwotKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKLSsgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KLSsgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotKyAgICAgIGVsc2UKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICBmaQotKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQotKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKLSsgICAgICA7OwotKyAgICBlc2FjCi0rCi0rICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSsgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0rICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+Ci0rICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+Ci0rICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJwotKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+Ci0rICAgICAgICRSTSBcJGRscGF0aCcKLSsgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCi0gICAgIDs7Ci0gCi0gICAqKQotKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAgIDs7Ci0gICBlc2FjCi0tICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCi0gICBzaGxpYnBhdGhfdmFyPVBBVEgKLSAgIDs7Ci1AQCAtMTAzOTksNyArMTEwNDksNyBAQCBoYWlrdSopCi0gICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKLSAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLS0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCi0rICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKLSAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgIDs7Ci0gCi1AQCAtMTEyMzksMTAgKzExODg5LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTEzNDUsMTAgKzExOTk1LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTMzMTQsMTMgKzEzOTY0LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTMzMzUsMTQgKzEzOTkyLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEzMzc1LDEyICsxNDAzNSwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQotIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMzQzNSw4ICsxNDA5NSwxMyBAQCByZWxvYWRfZmxhZyBcCi0gT0JKRFVNUCBcCi0gZGVwbGlic19jaGVja19tZXRob2QgXAotIGZpbGVfbWFnaWNfY21kIFwKLStmaWxlX21hZ2ljX2dsb2IgXAotK3dhbnRfbm9jYXNlZ2xvYiBcCi0rRExMVE9PTCBcCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAotIEFSIFwKLSBBUl9GTEFHUyBcCi0rYXJjaGl2ZXJfbGlzdF9zcGVjIFwKLSBTVFJJUCBcCi0gUkFOTElCIFwKLSBDQyBcCi1AQCAtMTM0NDYsMTIgKzE0MTExLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCi0rbm1fZmlsZV9saXN0X3NwZWMgXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCi0rbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKLSBuZWVkX2xvY2tzIFwKLStNQU5JRkVTVF9UT09MIFwKLSBEU1lNVVRJTCBcCi0gTk1FRElUIFwKLSBMSVBPIFwKLUBAIC0xMzQ2Nyw3ICsxNDEzNCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKLS1maXhfc3JjZmlsZV9wYXRoIFwKLSBleGNsdWRlX2V4cHN5bXMgXAotIGluY2x1ZGVfZXhwc3ltcyBcCi0gZmlsZV9saXN0X3NwZWMgXAotQEAgLTEzNTAzLDYgKzE0MTY5LDcgQEAgbW9kdWxlX2NtZHMgXAotIG1vZHVsZV9leHBzeW1fY21kcyBcCi0gZXhwb3J0X3N5bWJvbHNfY21kcyBcCi0gcHJlbGlua19jbWRzIFwKLStwb3N0bGlua19jbWRzIFwKLSBwb3N0aW5zdGFsbF9jbWRzIFwKLSBwb3N0dW5pbnN0YWxsX2NtZHMgXAotIGZpbmlzaF9jbWRzIFwKLUBAIC0xNDI2OCw3ICsxNDkzNSw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKLSAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTQzNzEsMTkgKzE1MDM5LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAotICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KLSBOTDJTUD0kbHRfbHRfTkwyU1AKLSAKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotKwotKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotKwotICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCi0gT0JKRFVNUD0kbHRfT0JKRFVNUAotIAotICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gCi0tIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KLSsjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCi0gCi0rIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLStmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgotKwotKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCi0rCi0rIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KLStETExUT09MPSRsdF9ETExUT09MCi0rCi0rIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKwotICMgVGhlIGFyY2hpdmVyLgotIEFSPSRsdF9BUgotKwotKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCi0gQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCi0gCi0rIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKLSsKLSAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgotIFNUUklQPSRsdF9TVFJJUAotIAotQEAgLTE0NDEzLDYgKzE1MTA0LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCi0gIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KLSBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKLSAKLSsjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KLStubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKLSsKLSsjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgotK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKLSsKLSAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KLSBvYmpkaXI9JG9iamRpcgotIAotQEAgLTE0NDIyLDYgKzE1MTE5LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKLSAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwotIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKLSAKLSsjIE1hbmlmZXN0IHRvb2wuCi0rTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAotKwotICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KLSBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKLSAKLUBAIC0xNDUzNiwxMiArMTUyMzYsMTIgQEAgd2l0aF9nY2M9JEdDQwotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0tCi0gIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCi0gcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCi0gCi1AQCAtMTQ2MjgsOSArMTUzMjgsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0tCi0gIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKLSAKLUBAIC0xNDY0Niw2ICsxNTM0Myw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwotIAotKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KLStwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCi0gCi1AQCAtMTQ2NzgsMjEwICsxNTM3OCwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBjYXNlICR4c2lfc2hlbGwgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotLSMgY2FsbDoKLS0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLS0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLS1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotLX0KLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KLS0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLS19Ci0tCi0tX0xUX0VPRgotLWVzYWMKLS0KLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDErPVwkMiIKLS19Ci0tX0xUX0VPRgotLSAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDE9XCQkMVwkMiIKLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKLSsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCi0rZnVuY19kaXJuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCi0rZnVuY19iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAotK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCi0rZnVuY19zdHJpcG5hbWUgKClcCi0re1wKLStcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCi0rXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAotK2Z1bmNfbG8ybyAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKLStcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCi0rZnVuY194Zm9ybSAoKVwKLSt7XAotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCi0rZnVuY19hcml0aCAoKVwKLSt7XAotKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAotK2Z1bmNfbGVuICgpXAotK3tcCi0rICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLStmaQotKwotK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAotK2Z1bmNfYXBwZW5kICgpXAotK3tcCi0rICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKLSt7XAotK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCi0rXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZWxzZQotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0rCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KLStmaQotKwotKwotKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKLSAgIGNobW9kICt4ICIkb2ZpbGUiCi0gCi1kaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlIGIvbGQvY29uZmlndXJlCi1pbmRleCBiYzA5ZTdlZjgxLi40M2MzOTFjMmIzIDEwMDc1NQotLS0tIGEvbGQvY29uZmlndXJlCi0rKysgYi9sZC9jb25maWd1cmUKLUBAIC02ODcsOCArNjg3LDExIEBAIE9UT09MCi0gTElQTwotIE5NRURJVAotIERTWU1VVElMCi0rTUFOSUZFU1RfVE9PTAotIFJBTkxJQgotK2FjX2N0X0FSCi0gQVIKLStETExUT09MCi0gT0JKRFVNUAotIExOX1MKLSBOTQotQEAgLTgxNSw2ICs4MTgsNyBAQCBlbmFibGVfc3RhdGljCi0gd2l0aF9waWMKLSBlbmFibGVfZmFzdF9pbnN0YWxsCi0gd2l0aF9nbnVfbGQKLSt3aXRoX2xpYnRvb2xfc3lzcm9vdAotIGVuYWJsZV9saWJ0b29sX2xvY2sKLSBlbmFibGVfcGx1Z2lucwotIGVuYWJsZV9sYXJnZWZpbGUKLUBAIC0xNTA3LDYgKzE1MTEsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KLSsgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCi0gICAtLXdpdGgtbGliLXBhdGg9ZGlyMTpkaXIyLi4uICBzZXQgZGVmYXVsdCBMSUJfUEFUSAotICAgLS13aXRoLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgdXNyL2xpYiBldCBhbCB3aXRoaW4gRElSLgotIAotQEAgLTU5NTksOCArNTk2NSw4IEBAIGVzYWMKLSAKLSAKLSAKLS1tYWNyb192ZXJzaW9uPScyLjIuN2EnCi0tbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKLSttYWNyb192ZXJzaW9uPScyLjQnCi0rbWFjcm9fcmV2aXNpb249JzEuMzI5MycKLSAKLSAKLSAKLUBAIC02MDAwLDcgKzYwMDYsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9Ci0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC02Njg2LDggKzY2OTIsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwotICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi0geHNpX3NoZWxsPW5vCi0gKCBfbHRfZHVtbXk9ImEvYi9jIgotLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLS0gICAgICA9IGMsYS9iLCwgXAotKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSsgICAgICA9IGMsYS9iLGIvYywgXAotICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNjczNiw2ICs2NzQyLDgwIEBAIGVzYWMKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqLSotY3lnd2luKiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQotKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KLStsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLStjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC02NzUyLDYgKzY4MzIsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTY5MjAsNyArNzAwNSw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC03MDc0LDYgKzcxNjAsMjEgQEAgZXNhYwotIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1Ci0gJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9Ci0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCi0rICAgIGZpCi0rICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKLSB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC03MDg5LDkgKzcxOTAsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIAotIAotIAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdF9ETExUT09MPSRETExUT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgotKyAgICBETExUT09MPSJmYWxzZSIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKLSsgIGZpCi0rZWxzZQotKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCi0rCi0rY2FzZSAkaG9zdF9vcyBpbgotK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKLSsgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKLSsgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgotKyAgKi0taWRlbnRpZnktc3RyaWN0KikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCi0rICAgIDs7Ci0rICAqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKLSsgICAgOzsKLSsgIGVzYWMKLSsgIDs7Ci0rKikKLSsgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgotKyAgOzsKLStlc2FjCi0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLSsgIGRvCi0rICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTcxMDcsNyArNzM2MSw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKLSsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTcxMjcsMTEgKzczODEsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotIAotKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCi0rICBkb25lCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KLStpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCi0gICBhY19jdF9BUj0kQVIKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLStkbwotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNzE0Nyw3ICs3NDA1LDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTcxNjYsNiArNzQyNCwxMCBAQCBlbHNlCi0gJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotKwotKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhawotK2RvbmUKLSsKLSAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgotICAgICBBUj0iZmFsc2UiCi0gICBlbHNlCi1AQCAtNzE3NywxMiArNzQzOSwxMiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKLSBlc2FjCi0gICAgIEFSPSRhY19jdF9BUgotICAgZmkKLS1lbHNlCi0tICBBUj0iJGFjX2N2X3Byb2dfQVIiCi0gZmkKLSAKLS10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi0tdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLSsKLSsKLSAKLSAKLSAKLUBAIC03MTkyLDYgKzc0NTQsNjIgQEAgdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KLSsgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotK2ludAotK21haW4gKCkKLSt7Ci0rCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCi0rICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KLSsJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KLSsJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCi0rCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgotKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKLSsKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQotKwotK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KLStlbHNlCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKLStmaQotKwotKwotKwotKwotKwotIAotIAotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLUBAIC03NTI4LDggKzc4NDYsOCBAQCBlc2FjCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKLSAKLSAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0gCi0gIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCi0gb3B0X2NyPQotQEAgLTc1NjUsNiArNzg4Myw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KLSAgIGVsc2UKLSAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKLSAgIGZpCi0rICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCi0gCi0gICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KLSAgIHBpcGVfd29ya3M9bm8KLUBAIC03NjA2LDYgKzc5MjUsMTggQEAgX0xUX0VPRgotICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi1AQCAtNzYxNyw3ICs3OTQ4LDcgQEAgX0xUX0VPRgotIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotIAotIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLS1jb25zdCBzdHJ1Y3QgewotK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtNzY0Myw4ICs3OTc0LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSBfTFRfRU9GCi0gCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLSAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLS0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLSAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCi0gCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNzY1NCw4ICs3OTg1LDggQEAgX0xUX0VPRgotICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gCSAgICBwaXBlX3dvcmtzPXllcwotIAkgIGZpCi0tCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLS0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSsJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwotKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwotIAllbHNlCi0gCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1Ci0gCWZpCi1AQCAtNzY5Miw2ICs4MDIzLDE5IEBAIGVsc2UKLSAkYXNfZWNobyAib2siID4mNjsgfQotIGZpCi0gCi0rIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCi0raWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gCi1AQCAtNzcwOCw2ICs4MDUyLDQyIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKLStlbHNlCi0rICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubwotK2ZpCi0rCi0rCi0rbHRfc3lzcm9vdD0KLStjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCi0rIHllcykKLSsgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKLSsgICBmaQotKyAgIDs7ICMoCi0rIC8qKQotKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKyAgIDs7ICMoCi0rIG5vfCcnKQotKyAgIDs7ICMoCi0rICopCi0rICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKLSskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQotKyAgIDs7Ci0rZXNhYwotKwotKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQotKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0gCi0gCi0gCi1AQCAtNzkxOSw2ICs4Mjk5LDEyMyBAQCBlc2FjCi0gCi0gbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCi0gCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCi0rICAgIE1BTklGRVNUX1RPT0w9IjoiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCi0rICBmaQotK2Vsc2UKLSsgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQotKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0KgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KLStpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgotKyAgTUFOSUZFU1RfVE9PTD06Ci0rZmkKLSsKLSsKLSsKLSsKLSsKLSAKLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC04NDgyLDYgKzg5NzksOCBAQCBfTFRfRU9GCi0gICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1Ci0gICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQotICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKLSsgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQotKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1Ci0gICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCi0gaW50IG1haW4oKSB7IHJldHVybiAwO30KLSBfTFRfRU9GCi1AQCAtODU1MCw2ICs5MDQ5LDE2IEBAIGRvbmUKLSAKLSAKLSAKLStmdW5jX3N0cmlwbmFtZV9jbmYgKCkKLSt7Ci0rICBjYXNlICR7Mn0gaW4KLSsgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0rICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0rICBlc2FjCi0rfSAjIGZ1bmNfc3RyaXBuYW1lX2NuZgotKwotKwotKwotIAotIAotICMgU2V0IG9wdGlvbnMKLUBAIC04Njc4LDcgKzkxODcsOCBAQCBmaQotIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKLSAKLSAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgotLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJwotK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKLStMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCi0gCi0gCi0gCi1AQCAtODc2Nyw3ICs5Mjc3LDcgQEAgYWl4MyopCi0gZXNhYwotIAotICMgR2xvYmFsIHZhcmlhYmxlczoKLS1vZmlsZT1saWJ0b29sCi0rb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCi0gY2FuX2J1aWxkX3NoYXJlZD15ZXMKLSAKLSAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC05MDY1LDggKzk1NzUsNiBAQCBmaQotIGx0X3Byb2dfY29tcGlsZXJfcGljPQotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQotIAotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCi0gICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTkyMzIsNiArOTc0MCwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCi0gCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKLSAJOzsKLSsgICAgICBuYWdmb3IqKQotKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCi0rCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKLSsJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCi0rCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSsJOzsKLSAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCi0gICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAotIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTkyOTQsNyArOTgwOCw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKLSsgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OwotICAgICAgICopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKLUBAIC05MzUxLDEzICs5ODY1LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKLSAgICAgOzsKLSBlc2FjCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0tJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0tCi0tCi0tCi0tCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLStsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKLSAKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTk0MTgsNiArOTkzNiwxMSBAQCBmaQotIAotIAotIAotKwotKwotKwotKwotKwotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCi0gIwotQEAgLTk3NjgsNyArMTAyOTEsOCBAQCBfTFRfRU9GCi0gICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KLSAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCi0gCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC05ODY3LDEyICsxMDM5MSwxMiBAQCBfTFRfRU9GCi0gCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKLS0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSsJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0gCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgotIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLS0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0rCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSAJICBmaQotIAkgIDs7Ci0gCWVzYWMKLUBAIC05ODg2LDggKzEwNDEwLDggQEAgX0xUX0VPRgotIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCi0gCXdsYXJjPQotICAgICAgIGVsc2UKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZmkKLSAgICAgICA7OwotIAotQEAgLTk5MDUsOCArMTA0MjksOCBAQCBfTFRfRU9GCi0gCi0gX0xUX0VPRgotICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtOTk1Miw4ICsxMDQ3Niw4IEBAIF9MVF9FT0YKLSAKLSAgICAgKikKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC0xMDA4Myw3ICsxMDYwNywxMyBAQCBfTFRfRU9GCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC0xMDA5NiwyMiArMTA2MjYsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTEwMTIzLDcgKzEwNjYwLDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAllbHNlCi0gCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC0xMDEzNiwyMiArMTA2NzksMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC0xMDE5NSwyMSArMTA3NDUsNjQgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKLSAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLS0gICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0tICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotLSAgICAgIGxpYmV4dD1saWIKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLS0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKLS0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLS0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0tICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLS0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0tICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0tICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgICAgY2wqKQotKwkjIE5hdGl2ZSBNU1ZDCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKLSsJZmlsZV9saXN0X3NwZWM9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGVsc2UKLSsJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZml+Ci0rCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgIGxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsJIyBEb24ndCB1c2UgcmFubGliCi0rCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAqKQotKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIDs7Ci0rCSAgZXNhY34KLSsJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgIGZpJwotKwk7OwotKyAgICAgICopCi0rCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCTs7Ci0rICAgICAgZXNhYwotICAgICAgIDs7Ci0gCi0gICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtMTAyNzAsNyArMTA4NjMsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLUBAIC0xMDI3OCw3ICsxMDg3MSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4OSopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBmaQotQEAgLTEwMjk0LDcgKzEwODg3LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXgxMCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgICBmaQotQEAgLTEwMzE4LDEwICsxMDkxMSwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJKikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAllc2FjCi0gICAgICAgZWxzZQotQEAgLTEwNDAwLDIzICsxMDk5MywzNiBAQCBmaQotIAotICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAotIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCi0gCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0tICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgotKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSsJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotLWludCBmb28odm9pZCkge30KLStpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9Ci0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotLQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCi0rZWxzZQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSsgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KLSsJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgotKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlmaQotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtMTA1MDEsNyArMTExMDcsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICAgZWxzZQotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC0xMDUyMCw5ICsxMTEyNiw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAl3bGFyYz0nJHt3bH0nCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAgICAgICBlbHNlCi0gCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC0xMTA5OCw4ICsxMTcwNCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIG5lZWRfdmVyc2lvbj1ubwotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gCi0tICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLS0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCi0rICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCi0rICB5ZXMsKikKLSsgICAgIyBnY2MKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKLSAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xMTEzMiwxMyArMTE3MzksNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTExMjMwLDcgKzExODk1LDcgQEAgaGFpa3UqKQotICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0tICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJwotKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCi0gICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICA7OwotIAotQEAgLTEyMDI2LDcgKzEyNjkxLDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tI2xpbmUgMTIwMjkgImNvbmZpZ3VyZSIKLSsjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTEyMDcwLDEwICsxMjczNSwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTEyMTMyLDcgKzEyNzk3LDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tI2xpbmUgMTIxMzUgImNvbmZpZ3VyZSIKLSsjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTEyMTc2LDEwICsxMjg0MSwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTEyNTcxLDYgKzEzMjM2LDcgQEAgJFJNIC1yIGNvbmZ0ZXN0KgotIAotICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLSAgIGx0X3NhdmVfQ0M9JENDCi0rICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gICBsdF9zYXZlX0xEPSRMRAotICAgbHRfc2F2ZV9HQ0M9JEdDQwotICAgR0NDPSRHWFgKLUBAIC0xMjU4OCw2ICsxMzI1NCw3IEBAICRSTSAtciBjb25mdGVzdCoKLSAgIGZpCi0gICB0ZXN0IC16ICIke0xEQ1hYK3NldH0iIHx8IExEPSRMRENYWAotICAgQ0M9JHtDWFgtImMrKyJ9Ci0rICBDRkxBR1M9JENYWEZMQUdTCi0gICBjb21waWxlcj0kQ0MKLSAgIGNvbXBpbGVyX0NYWD0kQ0MKLSAgIGZvciBjY190ZW1wIGluICRjb21waWxlciIiOyBkbwotQEAgLTEyODcwLDcgKzEzNTM3LDEzIEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllCi0gICAgICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD0nLWJlcm9rJwotICAgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4gZW1wdHkKLSAgICAgICAgICAgIyBleGVjdXRhYmxlLgotLSAgICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rICAgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtMTI4ODMsMjIgKzEzNTU2LDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jeHhfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoX19DWFgiOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF9fQ1hYCi0rZmkKLSAKLSAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCi1AQCAtMTI5MTEsNyArMTM1OTEsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgICAgIGVsc2UKLSAJICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF9fQ1hYKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC0xMjkyNCwyMiArMTM2MTAsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2N4eF90cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoX19DWFgKLStmaQotIAotIAkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTEyOTgyLDI5ICsxMzY3NSw3NSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAgIDs7Ci0gCi0gICAgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotLSAgICAgICAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsIENYWCkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCi0tICAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9Jy1MJGxpYmRpcicKLS0gICAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCi0tICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9dW5zdXBwb3J0ZWQKLS0gICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFg9bm8KLS0gICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXNfQ1hYPXllcwotLQotLSAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotLSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0tICAgICAgICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKLS0gICAgICAgICAgIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KLS0gICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0tCSAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0tICAgICAgICAgIGVsc2UKLS0JICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotLQkgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLS0gICAgICAgICAgZml+Ci0tICAgICAgICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLS0gICAgICAgIGVsc2UKLS0gICAgICAgICAgbGRfc2hsaWJzX0NYWD1ubwotLSAgICAgICAgZmkKLS0gICAgICAgIDs7Ci0rCWNhc2UgJEdYWCwkY2NfYmFzZW5hbWUgaW4KLSsJLGNsKiB8IG5vLGNsKikKLSsJICAjIE5hdGl2ZSBNU1ZDCi0rCSAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotKwkgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0rCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyAnCi0rCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPXVuc3VwcG9ydGVkCi0rCSAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD15ZXMKLSsJICBmaWxlX2xpc3Rfc3BlY19DWFg9J0AnCi0rCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJICBsaWJleHQ9bGliCi0rCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCSAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwkgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotKwkgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotKwkgICAgICAkU0VEIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICAgIGVsc2UKLSsJICAgICAgJFNFRCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgICBmaX4KLSsJICAgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KLSsJICAgIGxpbmtuYW1lcz0nCi0rCSAgIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkgICMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCBDWFgpPSd0cnVlJwotKwkgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXNfQ1hYPXllcwotKwkgICMgRG9uJ3QgdXNlIHJhbmxpYgotKwkgIG9sZF9wb3N0aW5zdGFsbF9jbWRzX0NYWD0nY2htb2QgNjQ0ICRvbGRsaWInCi0rCSAgcG9zdGxpbmtfY21kc19DWFg9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLSsJICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAgICouZXhlfCouRVhFKSA7OwotKwkgICAgICAqKQotKwkJbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotKwkJbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJCTs7Ci0rCSAgICBlc2FjfgotKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRsdF9vdXRwdXRmaWxlIn4KLSsJICAgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0rCSAgICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgICAgZmknCi0rCSAgOzsKLSsJKikKLSsJICAjIGcrKwotKwkgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCBDWFgpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAotKwkgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0rCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9Jy1MJGxpYmRpcicKLSsJICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJwotKwkgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD11bnN1cHBvcnRlZAotKwkgIGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFg9bm8KLSsJICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzX0NYWD15ZXMKLSsKLSsJICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0rCSAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0rCSAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCi0rCSAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgotKwkgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSsJICAgIGVsc2UKLSsJICAgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0rCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0rCSAgICBmaX4KLSsJICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLSsJICBlbHNlCi0rCSAgICBsZF9zaGxpYnNfQ1hYPW5vCi0rCSAgZmkKLSsJICA7OwotKwllc2FjCi0rCTs7Ci0gICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLSAKLSAKLUBAIC0xMzExMCw3ICsxMzg0OSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICopCi0gICAgICAgICAgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLS0gICAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKyAgICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotICAgICAgICAgICAgICAgbGRfc2hsaWJzX0NYWD1ubwotQEAgLTEzMTgxLDEwICsxMzkyMCwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgICAgICAgICAgICA7OwotIAkgICAgICAgICAgaWE2NCopCi0tCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSsJICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSAJICAgICAgICAgICAgOzsKLSAJICAgICAgICAgICopCi0tCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgICAgICAgICAgIDs7Ci0gCSAgICAgICAgZXNhYwotIAkgICAgICBmaQotQEAgLTEzMjI1LDkgKzEzOTY0LDkgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgICAgICopCi0gCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotIAkgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJICAgICAgZWxzZQotLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgLW8gJGxpYicKLSsJICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJwotIAkgICAgICBmaQotIAkgICAgZmkKLSAJICAgIGxpbmtfYWxsX2RlcGxpYnNfQ1hYPXllcwotQEAgLTEzMjk3LDIwICsxNDAzNiwyMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICAgICAgcHJlbGlua19jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2JqcyAkbGlib2JqcyAkY29tcGlsZV9kZXBsaWJzfgotLQkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAiJwotKwkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgIicKLSAJICAgICAgb2xkX2FyY2hpdmVfY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0gCQlybSAtcmYgJHRwbGRpcn4KLSAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9sZG9ianMkb2xkX2RlcGxpYnN+Ci0tCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgfgotKwkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGB+Ci0gCQkkUkFOTElCICRvbGRsaWInCi0gCSAgICAgIGFyY2hpdmVfY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0gCQlybSAtcmYgJHRwbGRpcn4KLSAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgotLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKLSsJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwotIAkgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+Ci0tCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotIAkgICAgICA7OwotIAkgICAgKikgIyBWZXJzaW9uIDYgYW5kIGFib3ZlIHVzZSB3ZWFrIHN5bWJvbHMKLSAJICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCi1AQCAtMTM1MDUsNyArMTQyNDQsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJCSAgOzsKLSAJICAgICAgICAqKQotLQkgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCQkgIDs7Ci0gCSAgICAgIGVzYWMKLSAKLUBAIC0xMzU1MSw3ICsxNDI5MCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICAgIHNvbGFyaXMqKQotICAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICAgICAgQ0MqKQotKyAgICAgICAgICBDQyogfCBzdW5DQyopCi0gCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCi0gICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX25lZWRfbGNfQ1hYPXllcwotIAkgICAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYPScgLXpkZWZzJwotQEAgLTEzNTkyLDkgKzE0MzMxLDkgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLSAJICAgICAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYPScgJHt3bH0teiAke3dsfWRlZnMnCi0gCSAgICAgIGlmICRDQyAtLXZlcnNpb24gfCAkR1JFUCAtdiAnXjJcLjcnID4gL2Rldi9udWxsOyB0aGVuCi0tCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKLSsJICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKLSAJICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkJICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCQkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gCi0gCSAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwotIAkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgotQEAgLTEzNzI5LDYgKzE0NDY4LDEzIEBAIHByaXZhdGU6Ci0gfTsKLSBfTFRfRU9GCi0gCi0rCi0rX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1M9JENGTEFHUwotK2Nhc2UgIiRDQyAkQ0ZMQUdTICIgaW4gIygKLSsqXCAtZmx0bypcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLWx0byIgOzsKLSsqXCAtZndob3ByKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8td2hvcHIiIDs7Ci0rZXNhYwotKwotIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQotICAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKLSAgIGFjX3N0YXR1cz0kPwotQEAgLTEzNzQyLDcgKzE0NDg4LDcgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1Ci0gICBwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lPW5vCi0gCi0gICBmb3IgcCBpbiBgZXZhbCAiJG91dHB1dF92ZXJib3NlX2xpbmtfY21kImA7IGRvCi0tICAgIGNhc2UgJHAgaW4KLSsgICAgY2FzZSAke3ByZXZ9JHtwfSBpbgotIAotICAgICAtTCogfCAtUiogfCAtbCopCi0gICAgICAgICMgU29tZSBjb21waWxlcnMgcGxhY2Ugc3BhY2UgYmV0d2VlbiAiLXtMLFJ9IiBhbmQgdGhlIHBhdGguCi1AQCAtMTM3NTEsMTMgKzE0NDk3LDIyIEBAIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQotICAgICAgICAgICB0ZXN0ICRwID0gIi1SIjsgdGhlbgotIAkgcHJldj0kcAotIAkgY29udGludWUKLS0gICAgICAgZWxzZQotLQkgcHJldj0KLSAgICAgICAgZmkKLSAKLSsgICAgICAgIyBFeHBhbmQgdGhlIHN5c3Jvb3QgdG8gZWFzZSBleHRyYWN0aW5nIHRoZSBkaXJlY3RvcmllcyBsYXRlci4KLSsgICAgICAgaWYgdGVzdCAteiAiJHByZXYiOyB0aGVuCi0rICAgICAgICAgY2FzZSAkcCBpbgotKyAgICAgICAgIC1MKikgZnVuY19zdHJpcG5hbWVfY25mICctTCcgJycgIiRwIjsgcHJldj0tTDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7Ci0rICAgICAgICAgLVIqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1SJyAnJyAiJHAiOyBwcmV2PS1SOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKLSsgICAgICAgICAtbCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLWwnICcnICIkcCI7IHByZXY9LWw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwotKyAgICAgICAgIGVzYWMKLSsgICAgICAgZmkKLSsgICAgICAgY2FzZSAkcCBpbgotKyAgICAgICA9KikgZnVuY19zdHJpcG5hbWVfY25mICc9JyAnJyAiJHAiOyBwPSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwotKyAgICAgICBlc2FjCi0gICAgICAgIGlmIHRlc3QgIiRwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lIiA9IG5vOyB0aGVuCi0tCSBjYXNlICRwIGluCi0tCSAtTCogfCAtUiopCi0rCSBjYXNlICR7cHJldn0gaW4KLSsJIC1MIHwgLVIpCi0gCSAgICMgSW50ZXJuYWwgY29tcGlsZXIgbGlicmFyeSBwYXRocyBzaG91bGQgY29tZSBhZnRlciB0aG9zZQotIAkgICAjIHByb3ZpZGVkIHRoZSB1c2VyLiAgVGhlIHBvc3RkZXBzIGFscmVhZHkgY29tZSBhZnRlciB0aGUKLSAJICAgIyB1c2VyIHN1cHBsaWVkIGxpYnMgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBwcm9jZXNzIHRoZW0uCi1AQCAtMTM3NzcsOCArMTQ1MzIsMTAgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1Ci0gCSAgIHBvc3RkZXBzX0NYWD0iJHtwb3N0ZGVwc19DWFh9ICR7cHJldn0ke3B9IgotIAkgZmkKLSAgICAgICAgZmkKLSsgICAgICAgcHJldj0KLSAgICAgICAgOzsKLSAKLSsgICAgKi5sdG8uJG9iamV4dCkgOzsgIyBJZ25vcmUgR0NDIExUTyBvYmplY3RzCi0gICAgICouJG9iamV4dCkKLSAgICAgICAgIyBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgdGVzdCBvYmplY3QgZmlsZSBvbmx5IHNob3dzIHVwCi0gICAgICAgICMgb25jZSBpbiB0aGUgY29tcGlsZXIgb3V0cHV0LgotQEAgLTEzODE0LDYgKzE0NTcxLDcgQEAgZWxzZQotIGZpCi0gCi0gJFJNIC1mIGNvbmZlc3QuJG9iamV4dAotK0NGTEFHUz0kX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1MKLSAKLSAjIFBPUlRNRTogb3ZlcnJpZGUgYWJvdmUgdGVzdCBvbiBzeXN0ZW1zIHdoZXJlIGl0IGlzIGJyb2tlbgotIGNhc2UgJGhvc3Rfb3MgaW4KLUBAIC0xMzg0OSw3ICsxNDYwNyw3IEBAIGxpbnV4KikKLSAKLSBzb2xhcmlzKikKLSAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICBDQyopCi0rICBDQyogfCBzdW5DQyopCi0gICAgICMgVGhlIG1vcmUgc3RhbmRhcmRzLWNvbmZvcm1pbmcgc3RscG9ydDQgbGlicmFyeSBpcwotICAgICAjIGluY29tcGF0aWJsZSB3aXRoIHRoZSBDc3RkIGxpYnJhcnkuIEF2b2lkIHNwZWNpZnlpbmcKLSAgICAgIyBpdCBpZiBpdCdzIGluIENYWEZMQUdTLiBJZ25vcmUgbGliQ3J1biBhcwotQEAgLTEzOTE0LDggKzE0NjcyLDYgQEAgZmkKLSBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9Ci0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPQotIAotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCi0gICAjIEMrKyBzcGVjaWZpYyBjYXNlcyBmb3IgcGljLCBzdGF0aWMsIHdsLCBldGMuCi0gICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotQEAgLTE0MDIwLDYgKzE0Nzc2LDExIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCSAgOzsKLSAJZXNhYwotIAk7OwotKyAgICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBvczIqIHwgcHczMiogfCBjZWdjYyopCi0rCSMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKLSsJIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KLSsJbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSctRERMTF9FWFBPUlQnCi0rCTs7Ci0gICAgICAgZGd1eCopCi0gCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gCSAgZWMrKyopCi1AQCAtMTQxNzIsNyArMTQ5MzMsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAk7OwotICAgICAgIHNvbGFyaXMqKQotIAljYXNlICRjY19iYXNlbmFtZSBpbgotLQkgIENDKikKLSsJICBDQyogfCBzdW5DQyopCi0gCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCi0gCSAgICBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9Jy1LUElDJwotIAkgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPSctQnN0YXRpYycKLUBAIC0xNDIzNywxMCArMTQ5OTgsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9IiRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFggLURQSUMiCi0gICAgIDs7Ci0gZXNhYwotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA+JjUKLS0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgPiY2OyB9Ci0tCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWD0kbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY19DWFgiID4mNjsgfQotK2x0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC0xNDI5OCw2ICsxNTA2Niw4IEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtMTQ0NzUsNiArMTUyNDUsNyBAQCBmaQotICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllcy4uLiAiID4mNjsgfQotIAotICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgIGV4Y2x1ZGVfZXhwc3ltc19DWFg9J19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKicKLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgIGFpeFs0LTldKikKLSAgICAgIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCi1AQCAtMTQ0ODksMTUgKzE1MjYwLDIwIEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllCi0gICAgIDs7Ci0gICBwdzMyKikKLSAgICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9IiRsdGRsbF9jbWRzIgotLSAgOzsKLSsgICAgOzsKLSAgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCi0tICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLzsvXi4qWyBdX19ubV9fL3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLS0gIDs7Ci0rICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgIGNsKikgOzsKLSsgICAgKikKLSsgICAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4Y2x1ZGVfZXhwc3ltc19DWFg9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKLSsgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0gICAqKQotICAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotLSAgOzsKLSsgICAgOzsKLSAgIGVzYWMKLS0gIGV4Y2x1ZGVfZXhwc3ltc19DWFg9J19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKicKLSAKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGxkX3NobGlic19DWFgiID4mNQotICRhc19lY2hvICIkbGRfc2hsaWJzX0NYWCIgPiY2OyB9Ci1AQCAtMTQ3NjAsOCArMTU1MzYsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTQ3OTMsMTMgKzE1NTcwLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKLSsKLSsgICAgY2FzZSAkYnVpbGRfb3MgaW4KLSsgICAgbWluZ3cqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KLSsgICAgICBsdF9zYXZlX2lmcz0kSUZTCi0rICAgICAgSUZTPSc7JwotKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKLSsgICAgICBkbwotKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KLSsgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgotKyAgICAgIGRvbmUKLSsgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCi0rICAgICAgOzsKLSsgICAgY3lnd2luKikKLSsgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCi0rICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCi0rICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgotKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICAgOzsKLSAgIGVzYWMKLS0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgIHNobGlicGF0aF92YXI9UEFUSAotICAgOzsKLUBAIC0xNDg5MCw3ICsxNTcyNSw3IEBAIGhhaWt1KikKLSAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKLSsgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwotICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgOzsKLSAKLUBAIC0xNTM0OSw2ICsxNjE4NCw3IEBAIGZpCi0gICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKLSAKLSAgIENDPSRsdF9zYXZlX0NDCi0rICBDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCi0gICBMRENYWD0kTEQKLSAgIExEPSRsdF9zYXZlX0xECi0gICBHQ0M9JGx0X3NhdmVfR0NDCi1AQCAtMTg0NDQsMTMgKzE5MjgwLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTg0NjUsMTQgKzE5MzA4LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE4NTA1LDEyICsxOTM1MSwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQotIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xODU0OSw4ICsxOTM5NSw4IEBAIG9sZF9hcmNoaXZlX2NtZHNfQ1hYPSdgJEVDSE8gIiRvbGRfYXJjaGl2ZV9jbWRzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlCi0gY29tcGlsZXJfQ1hYPSdgJEVDSE8gIiRjb21waWxlcl9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEdDQ19DWFg9J2AkRUNITyAiJEdDQ19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bF9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bF9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfb19DWFg9J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gYXJjaGl2ZV9jbWRzX25lZWRfbGNfQ1hYPSdgJEVDSE8gIiRhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE4NTc3LDEyICsxOTQyMywxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWD0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcl9DWFgiIHwgJFNFRCAiJGRlbGF5XwotIGhhcmRjb2RlX2F1dG9tYXRpY19DWFg9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluaGVyaXRfcnBhdGhfQ1hYPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbGlua19hbGxfZGVwbGlic19DWFg9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoX0NYWD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aF9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFg9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zX0NYWD0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5jbHVkZV9leHBzeW1zX0NYWD0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcHJlbGlua19jbWRzX0NYWD0nYCRFQ0hPICIkcHJlbGlua19jbWRzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kc19DWFg9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX2xpc3Rfc3BlY19DWFg9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaGFyZGNvZGVfYWN0aW9uX0NYWD0nYCRFQ0hPICIkaGFyZGNvZGVfYWN0aW9uX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzX0NYWD0nYCRFQ0hPICIkY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTg2MjAsOCArMTk0NjYsMTMgQEAgcmVsb2FkX2ZsYWcgXAotIE9CSkRVTVAgXAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKLSBmaWxlX21hZ2ljX2NtZCBcCi0rZmlsZV9tYWdpY19nbG9iIFwKLSt3YW50X25vY2FzZWdsb2IgXAotK0RMTFRPT0wgXAotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKLSBBUiBcCi0gQVJfRkxBR1MgXAotK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCi0gU1RSSVAgXAotIFJBTkxJQiBcCi0gQ0MgXAotQEAgLTE4NjMxLDEyICsxOTQ4MiwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAotK25tX2ZpbGVfbGlzdF9zcGVjIFwKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCi0tbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9waWMgXAotK2x0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCi0gbmVlZF9sb2NrcyBcCi0rTUFOSUZFU1RfVE9PTCBcCi0gRFNZTVVUSUwgXAotIE5NRURJVCBcCi0gTElQTyBcCi1AQCAtMTg2NTIsNyArMTk1MDUsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCi0gaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCi0tZml4X3NyY2ZpbGVfcGF0aCBcCi0gZXhjbHVkZV9leHBzeW1zIFwKLSBpbmNsdWRlX2V4cHN5bXMgXAotIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xODY3NCw4ICsxOTUyNiw4IEBAIExEX0NYWCBcCi0gcmVsb2FkX2ZsYWdfQ1hYIFwKLSBjb21waWxlcl9DWFggXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWCBcCi0tbHRfcHJvZ19jb21waWxlcl93bF9DWFggXAotIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCBcCi0rbHRfcHJvZ19jb21waWxlcl93bF9DWFggXAotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWCBcCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX29fQ1hYIFwKLSBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYIFwKLUBAIC0xODY4Nyw3ICsxOTUzOSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnX0NYWCBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFggXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRfQ1hYIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yX0NYWCBcCi0tZml4X3NyY2ZpbGVfcGF0aF9DWFggXAotIGV4Y2x1ZGVfZXhwc3ltc19DWFggXAotIGluY2x1ZGVfZXhwc3ltc19DWFggXAotIGZpbGVfbGlzdF9zcGVjX0NYWCBcCi1AQCAtMTg3MjEsNiArMTk1NzIsNyBAQCBtb2R1bGVfY21kcyBcCi0gbW9kdWxlX2V4cHN5bV9jbWRzIFwKLSBleHBvcnRfc3ltYm9sc19jbWRzIFwKLSBwcmVsaW5rX2NtZHMgXAotK3Bvc3RsaW5rX2NtZHMgXAotIHBvc3RpbnN0YWxsX2NtZHMgXAotIHBvc3R1bmluc3RhbGxfY21kcyBcCi0gZmluaXNoX2NtZHMgXAotQEAgLTE4NzM1LDcgKzE5NTg3LDggQEAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFggXAotIG1vZHVsZV9jbWRzX0NYWCBcCi0gbW9kdWxlX2V4cHN5bV9jbWRzX0NYWCBcCi0gZXhwb3J0X3N5bWJvbHNfY21kc19DWFggXAotLXByZWxpbmtfY21kc19DWFg7IGRvCi0rcHJlbGlua19jbWRzX0NYWCBcCi0rcG9zdGxpbmtfY21kc19DWFg7IGRvCi0gICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gXFxcXCIiXFxcXFwkXCR2YXIiXFxcXCJcYCBpbgotICAgICAqW1xcXFxcXFxgXFwiXFxcJF0qKQotICAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiXFxcJFwkdmFyXFwiIHwgXFxcJFNFRCAtZSBcXCJcXFwkZG91YmxlX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJGRlbGF5X3ZhcmlhYmxlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCi1AQCAtMTk1MzksNyArMjAzOTIsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8Ci0gIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCi0gIwotICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0tIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsjICAgICAgICAgICAgICAgICBJbmMuCi0gIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKLSAjCi0gIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTE5NjQyLDE5ICsyMDQ5Niw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKLSAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCi0gTkwyU1A9JGx0X2x0X05MMlNQCi0gCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSsKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSsKLSAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgotIE9CSkRVTVA9JGx0X09CSkRVTVAKLSAKLSAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAotIAotLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCi0rIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAotIAotKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKLSsKLSsjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgotKwotKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCi0rRExMVE9PTD0kbHRfRExMVE9PTAotKwotKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsKLSAjIFRoZSBhcmNoaXZlci4KLSBBUj0kbHRfQVIKLSsKLSsjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgotIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUwotIAotKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgotK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCi0rCi0gIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KLSBTVFJJUD0kbHRfU1RSSVAKLSAKLUBAIC0xOTY4NCw2ICsyMDU2MSwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcwotICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCi0gZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4Ci0gCi0rIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCi0rbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCi0rCi0rIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KLStsdF9zeXNyb290PSRsdF9zeXNyb290Ci0rCi0gIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCi0gb2JqZGlyPSRvYmpkaXIKLSAKLUBAIC0xOTY5Myw2ICsyMDU3Niw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECi0gIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KLSBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCi0gCi0rIyBNYW5pZmVzdCB0b29sLgotK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKLSsKLSAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCi0gRFNZTVVUSUw9JGx0X0RTWU1VVElMCi0gCi1AQCAtMTk4MDcsMTIgKzIwNjkzLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKLSAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCi0gbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwotIAotLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLS13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotLQotICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgotIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYwotIAotKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLSt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotKwotICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KLSBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwotIAotQEAgLTE5ODk5LDkgKzIwNzg1LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAotICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgotIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKLSAKLS0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi0tZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAotLQotICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgotIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCi0gCi1AQCAtMTk5MTcsNiArMjA4MDAsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwotICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCi0gcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKLSAKLSsjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCi0rcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcwotKwotICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgotIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwotIAotQEAgLTE5OTYzLDIxMCArMjA4NDksMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgotICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgotICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KLSAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0tICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgY2FzZSAkeHNpX3NoZWxsIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLS0jIGNhbGw6Ci0tIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLS0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLS0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLS0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLS0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0tIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0tZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLS0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLS19Ci0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0tICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLS0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0tICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCi0tICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotLSAgZWxzZQotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0tICBmaQotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLS19Ci0tCi0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsyfSBpbgotLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0tICBlc2FjCi0tfQotLQotLSMgc2VkIHNjcmlwdHM6Ci0tbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKLS1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCi0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCi0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0tfQotLQotLV9MVF9FT0YKLS1lc2FjCi0tCi0tY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxKz1cJDIiCi0tfQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxPVwkJDFcJDIiCi0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gIGVzYWMKLS0KLS0KLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rCi0rICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAotK2Z1bmNfZGlybmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAotK2Z1bmNfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKLStmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAotK2Z1bmNfc3RyaXBuYW1lICgpXAotK3tcCi0rXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAotK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKLStmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKLStmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKLStmdW5jX2xvMm8gKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCi0rXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAotK2Z1bmNfeGZvcm0gKClcCi0re1wKLSsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAotK2Z1bmNfYXJpdGggKClcCi0re1wKLSsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKLStmdW5jX2xlbiAoKVwKLSt7XAotKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rZmkKLSsKLStpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKLStmdW5jX2FwcGVuZCAoKVwKLSt7XAotKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKLStmdW5jX2FwcGVuZF9xdW90ZWQgKClcCi0re1wKLStcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAotK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JwotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2Vsc2UKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStmaQotKwotK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9Ci0rZmkKLSsKLSsKLSsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0gICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCi0gICBjaG1vZCAreCAiJG9maWxlIgotIAotQEAgLTIwMTk0LDEyICsyMTAzOSwxMiBAQCB3aXRoX2djYz0kR0NDX0NYWAotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWAotIAotLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLS13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bF9DWFgKLS0KLSAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KLSBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWAotKwotICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KLSBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFgKLSAKLUBAIC0yMDI4Niw5ICsyMTEzMSw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGhfQ1hYCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlic19DWFgKLSAKLS0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi0tZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aF9DWFgKLS0KLSAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFgKLSAKLUBAIC0yMDMwNCw2ICsyMTE0Niw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zX0NYWAotICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCi0gcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHNfQ1hYCi0gCi0rIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgotK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHNfQ1hYCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjX0NYWAotIAotZGlmZiAtLWdpdCBhL2xpYnRvb2wubTQgYi9saWJ0b29sLm00Ci1pbmRleCA0MzQ1MzAwNTlmLi5lNDVmZGM2OTk4IDEwMDY0NAotLS0tIGEvbGlidG9vbC5tNAotKysrIGIvbGlidG9vbC5tNAotQEAgLTEsNyArMSw4IEBACi0gIyBsaWJ0b29sLm00IC0gQ29uZmlndXJlIGxpYnRvb2wgZm9yIHRoZSBob3N0IHN5c3RlbS4gLSotQXV0b2NvbmYtKi0KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCi1AQCAtMTAsNyArMTEsOCBAQAotIAotIG00X2RlZmluZShbX0xUX0NPUFlJTkddLCBbZG5sCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMzcsNyArMzksNyBAQCBtNF9kZWZpbmUoW19MVF9DT1BZSU5HXSwgW2RubAotICMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gXSkKLSAKLS0jIHNlcmlhbCA1NiBMVF9JTklUCi0rIyBzZXJpYWwgNTcgTFRfSU5JVAotIAotIAotICMgTFRfUFJFUkVRKFZFUlNJT04pCi1AQCAtOTIsNyArOTQsOCBAQCBfTFRfU0VUX09QVElPTlMoWyQwXSwgWyQxXSkKLSBMSUJUT09MX0RFUFM9IiRsdG1haW4iCi0gCi0gIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KLS1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKLStMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCi0rTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgotIEFDX1NVQlNUKExJQlRPT0wpZG5sCi0gCi0gX0xUX1NFVFVQCi1AQCAtMTY2LDEwICsxNjksMTMgQEAgX0xUX0RFQ0woW10sIFtleGVleHRdLCBbMF0sIFtFeGVjdXRhYmxlIGZpbGUgc3VmZml4IChub3JtYWxseSAiIildKWRubAotIGRubAotIG00X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAotIG00X3JlcXVpcmUoW19MVF9DSEVDS19TSEVMTF9GRUFUVVJFU10pZG5sCi0rbTRfcmVxdWlyZShbX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlNdKWRubAotIG00X3JlcXVpcmUoW19MVF9DTURfUkVMT0FEXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9EXSlkbmwKLSttNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQl0pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0NNRF9PTERfQVJDSElWRV0pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0NNRF9HTE9CQUxfU1lNQk9MU10pZG5sCi0rbTRfcmVxdWlyZShbX0xUX1dJVEhfU1lTUk9PVF0pZG5sCi0gCi0gX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoWwotICMgU2VlIGlmIHdlIGFyZSBydW5uaW5nIG9uIHpzaCwgYW5kIHNldCB0aGUgb3B0aW9ucyB3aGljaCBhbGxvdyBvdXIKLUBAIC0xOTksNyArMjA1LDcgQEAgYWl4MyopCi0gZXNhYwotIAotICMgR2xvYmFsIHZhcmlhYmxlczoKLS1vZmlsZT1saWJ0b29sCi0rb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCi0gY2FuX2J1aWxkX3NoYXJlZD15ZXMKLSAKLSAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC02MzIsNyArNjM4LDcgQEAgbTRfaWZzZXQoW0FDX1BBQ0tBR0VfTkFNRV0sIFtBQ19QQUNLQUdFX05BTUUgXSljb25maWcubHRbXWRubAotIG00X2lmc2V0KFtBQ19QQUNLQUdFX1ZFUlNJT05dLCBbIEFDX1BBQ0tBR0VfVkVSU0lPTl0pCi0gY29uZmlndXJlZCBieSAkWzBdLCBnZW5lcmF0ZWQgYnkgbTRfUEFDS0FHRV9TVFJJTkcuCi0gCi0tQ29weXJpZ2h0IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK0NvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSBUaGlzIGNvbmZpZy5sdCBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIGdpdmVzIHVubGltaXRlZCBwZXJtaXNpb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LiIKLSAKLUBAIC03NDYsMTUgKzc1MiwxMiBAQCBfTFRfRU9GCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0rICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotIAotLSAgX0xUX1BST0dfWFNJX1NIRUxMRk5TCi0rICBfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TCi0gCi0tICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0rICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQotICAgY2htb2QgK3ggIiRvZmlsZSIKLSBdLAotQEAgLTk4MCw2ICs5ODMsOCBAQCBfTFRfRU9GCi0gICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiZBU19NRVNTQUdFX0xPR19GRAotICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JkFTX01FU1NBR0VfTE9HX0ZECi0gICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mQVNfTUVTU0FHRV9MT0dfRkQKLSsgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mQVNfTUVTU0FHRV9MT0dfRkQKLSsgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKLSBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQotIF9MVF9FT0YKLUBAIC0xMDY5LDMwICsxMDc0LDQxIEBAIG00X2RlZnVuKFtfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFU10sCi0gICBmaQotIF0pCi0gCi0tIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFtUQUdOQU1FXSkKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAjIExpbmtzIGEgbWluaW1hbCBwcm9ncmFtIGFuZCBjaGVja3MgdGhlIGV4ZWN1dGFibGUKLSAjIGZvciB0aGUgc3lzdGVtIGRlZmF1bHQgaGFyZGNvZGVkIGxpYnJhcnkgcGF0aC4gSW4gbW9zdCBjYXNlcywKLSAjIHRoaXMgaXMgL3Vzci9saWI6L2xpYiwgYnV0IHdoZW4gdGhlIE1QSSBjb21waWxlcnMgYXJlIHVzZWQKLSAjIHRoZSBsb2NhdGlvbiBvZiB0aGUgY29tbXVuaWNhdGlvbiBhbmQgTVBJIGxpYnMgYXJlIGluY2x1ZGVkIHRvby4KLSAjIElmIHdlIGRvbid0IGZpbmQgYW55dGhpbmcsIHVzZSB0aGUgZGVmYXVsdCBsaWJyYXJ5IHBhdGggYWNjb3JkaW5nCi0gIyB0byB0aGUgYWl4IGxkIG1hbnVhbC4KLSsjIFN0b3JlIHRoZSByZXN1bHRzIGZyb20gdGhlIGRpZmZlcmVudCBjb21waWxlcnMgZm9yIGVhY2ggVEFHTkFNRS4KLSsjIEFsbG93IHRvIG92ZXJyaWRlIHRoZW0gZm9yIGFsbCB0YWdzIHRocm91Z2ggbHRfY3ZfYWl4X2xpYnBhdGguCi0gbTRfZGVmdW4oW19MVF9TWVNfTU9EVUxFX1BBVEhfQUlYXSwKLSBbbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKLS1BQ19MSU5LX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW0FDX0xBTkdfUFJPR1JBTV0pXSxbCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpXSxbXSkKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLStpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBBQ19DQUNIRV9WQUwoW19MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pXSwKLSsgIFtBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNXSxbCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9J1sKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfV0nCi0rICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKSI7IHRoZW4KLSsgICAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaV0sW10pCi0rICBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkiOyB0aGVuCi0rICAgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsgIF0pCi0rICBhaXhfbGlicGF0aD0kX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkKLStmaQotIF0pIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAotIAotIAotQEAgLTExMTcsNyArMTEzMyw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCi0gCi0gQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gcHJpbnQgc3RyaW5nc10pCi0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC0xMTYxLDYgKzExNzcsMzkgQEAgX0xUX0RFQ0woW10sIFtFQ0hPXSwgWzFdLCBbQW4gZWNobyBwcm9ncmFtIHRoYXQgcHJvdGVjdHMgYmFja3NsYXNoZXNdKQotIF0pIyBfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSAotIAotIAotKyMgX0xUX1dJVEhfU1lTUk9PVAotKyMgLS0tLS0tLS0tLS0tLS0tLQotK0FDX0RFRlVOKFtfTFRfV0lUSF9TWVNST09UXSwKLStbQUNfTVNHX0NIRUNLSU5HKFtmb3Igc3lzcm9vdF0pCi0rQUNfQVJHX1dJVEgoW2xpYnRvb2wtc3lzcm9vdF0sCi0rWyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdFs9RElSXSBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgotKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLl0sCi0rW10sIFt3aXRoX2xpYnRvb2xfc3lzcm9vdD1ub10pCi0rCi0rZG5sIGx0X3N5c3Jvb3Qgd2lsbCBhbHdheXMgYmUgcGFzc2VkIHVucXVvdGVkLiAgV2UgcXVvdGUgaXQgaGVyZQotK2RubCBpbiBjYXNlIHRoZSB1c2VyIHBhc3NlZCBhIGRpcmVjdG9yeSBuYW1lLgotK2x0X3N5c3Jvb3Q9Ci0rY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAotKyB5ZXMpCi0rICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCi0rICAgZmkKLSsgICA7OyAjKAotKyAvKikKLSsgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsgICA7OyAjKAotKyBub3wnJykKLSsgICA7OyAjKAotKyAqKQotKyAgIEFDX01TR19SRVNVTFQoWyR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9XSkKLSsgICBBQ19NU0dfRVJST1IoW1RoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC5dKQotKyAgIDs7Ci0rZXNhYwotKwotKyBBQ19NU0dfUkVTVUxUKFske2x0X3N5c3Jvb3Q6LW5vfV0pCi0rX0xUX0RFQ0woW10sIFtsdF9zeXNyb290XSwgWzBdLCBbVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBdZG5sCi0rW2RlcGVuZGVudCBsaWJyYXJpZXMsIGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuXSldKQotKwotICMgX0xUX0VOQUJMRV9MT0NLCi0gIyAtLS0tLS0tLS0tLS0tLS0KLSBtNF9kZWZ1bihbX0xUX0VOQUJMRV9MT0NLXSwKLUBAIC0xMzIwLDE0ICsxMzY5LDQ3IEBAIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotIF0pIyBfTFRfRU5BQkxFX0xPQ0sKLSAKLSAKLSsjIF9MVF9QUk9HX0FSCi0rIyAtLS0tLS0tLS0tLQotK200X2RlZnVuKFtfTFRfUFJPR19BUl0sCi0rW0FDX0NIRUNLX1RPT0xTKEFSLCBbYXJdLCBmYWxzZSkKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLStfTFRfREVDTChbXSwgW0FSXSwgWzFdLCBbVGhlIGFyY2hpdmVyXSkKLStfTFRfREVDTChbXSwgW0FSX0ZMQUdTXSwgWzFdLCBbRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmVdKQotKwotK0FDX0NBQ0hFX0NIRUNLKFtmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydF0sIFtsdF9jdl9hcl9hdF9maWxlXSwKLSsgIFtsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTV0sCi0rICAgICBbZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JkFTX01FU1NBR0VfTE9HX0ZEJwotKyAgICAgIEFDX1RSWV9FVkFMKFtsdF9hcl90cnldKQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwlBQ19UUllfRVZBTChbbHRfYXJfdHJ5XSkKLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0rICAgICBdKQotKyAgXSkKLSsKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLStfTFRfREVDTChbXSwgW2FyY2hpdmVyX2xpc3Rfc3BlY10sIFsxXSwKLSsgIFtIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXJdKQotK10pIyBfTFRfUFJPR19BUgotKwotKwotICMgX0xUX0NNRF9PTERfQVJDSElWRQotICMgLS0tLS0tLS0tLS0tLS0tLS0tLQotIG00X2RlZnVuKFtfTFRfQ01EX09MRF9BUkNISVZFXSwKLS1bQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIGZhbHNlKQotLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKLS10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotLV9MVF9ERUNMKFtdLCBbQVJdLCBbMV0sIFtUaGUgYXJjaGl2ZXJdKQotLV9MVF9ERUNMKFtdLCBbQVJfRkxBR1NdLCBbMV0pCi0rW19MVF9QUk9HX0FSCi0gCi0gQUNfQ0hFQ0tfVE9PTChTVFJJUCwgc3RyaXAsIDopCi0gdGVzdCAteiAiJFNUUklQIiAmJiBTVFJJUD06Ci1AQCAtMTYyMyw3ICsxNzA1LDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tWyNsaW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIgotK1sjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTE2NjcsMTAgKzE3NDksMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0yMjEwLDggKzIyOTIsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMjI0NCwxMyArMjMyNyw3MSBAQCBtNF9pZihbJDFdLCBbXSxbCi0gICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFtbYS16QS1aXV1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiopCi0rICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQotKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcwotKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKLSsgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBbJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsXTsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTIzNDIsNyArMjQ4Myw3IEBAIGhhaWt1KikKLSAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKLSsgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwotICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgOzsKLSAKLUBAIC0yOTUwLDYgKzMwOTEsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTMwMTYsNyArMzE2Miw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC0zMTY3LDYgKzMzMTQsMjEgQEAgdHBmKikKLSAgIDs7Ci0gZXNhYwotIF0pCi0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1tcMV1dXC9bW1wxXV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtMzE3NCw3ICszMzM2LDExIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIF9MVF9ERUNMKFtdLCBbZGVwbGlic19jaGVja19tZXRob2RdLCBbMV0sCi0gICAgIFtNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0c10pCi0gX0xUX0RFQ0woW10sIFtmaWxlX21hZ2ljX2NtZF0sIFsxXSwKLS0gICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiXSkKLSsgICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQotK19MVF9ERUNMKFtdLCBbZmlsZV9tYWdpY19nbG9iXSwgWzFdLAotKyAgICBbSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQotK19MVF9ERUNMKFtdLCBbd2FudF9ub2Nhc2VnbG9iXSwgWzFdLAotKyAgICBbRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKLSBdKSMgX0xUX0NIRUNLX01BR0lDX01FVEhPRAotIAotIAotQEAgLTMyNzcsNiArMzQ0Myw2NyBAQCBkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6Ci0gZG5sIEFDX0RFRlVOKFtBTV9QUk9HX05NXSwgW10pCi0gZG5sIEFDX0RFRlVOKFtBQ19QUk9HX05NXSwgW10pCi0gCi0rIyBfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQgotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIGhvdyB0byBkZXRlcm1pbmUgdGhlIG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5Ci0rIyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBsaW5rIGxpYnJhcnkuCi0rIyAgLS0gUE9SVE1FIGZpbGwgaW4gd2l0aCB0aGUgZHluYW1pYyBsaWJyYXJ5IGNoYXJhY3RlcmlzdGljcwotK200X2RlZnVuKFtfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQl0sCi0rW200X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSkKLSttNF9yZXF1aXJlKFtfTFRfREVDTF9PQkpEVU1QXSkKLSttNF9yZXF1aXJlKFtfTFRfREVDTF9ETExUT09MXSkKLStBQ19DQUNIRV9DSEVDSyhbaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllc10sCi0rbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQsCi0rW2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwotKwotK2Nhc2UgJGhvc3Rfb3MgaW4KLStjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0rICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCi0rICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KLSsgICotLWlkZW50aWZ5LXN0cmljdCopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgotKyAgICA7OwotKyAgKikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCi0rICAgIDs7Ci0rICBlc2FjCi0rICA7OwotKyopCi0rICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKLSsgIDs7Ci0rZXNhYwotK10pCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITwotKwotK19MVF9ERUNMKFtdLCBbc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWRdLCBbMV0sCi0rICAgIFtDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzXSkKLStdKSMgX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUIKLSsKLSsKLSsjIF9MVF9QQVRIX01BTklGRVNUX1RPT0wKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIGxvY2F0ZSB0aGUgbWFuaWZlc3QgdG9vbAotK200X2RlZnVuKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSwKLStbQUNfQ0hFQ0tfVE9PTChNQU5JRkVTVF9UT09MLCBtdCwgOikKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK0FDX0NBQ0hFX0NIRUNLKFtpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2xdLCBbbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sXSwKLSsgIFtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JkFTX01FU1NBR0VfTE9HX0ZECi0rICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0Ci0rICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0Kl0pCi0raWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KLSsgIE1BTklGRVNUX1RPT0w9OgotK2ZpCi0rX0xUX0RFQ0woW10sIFtNQU5JRkVTVF9UT09MXSwgWzFdLCBbTWFuaWZlc3QgdG9vbF0pZG5sCi0rXSkjIF9MVF9QQVRIX01BTklGRVNUX1RPT0wKLSsKLSAKLSAjIExUX0xJQl9NCi0gIyAtLS0tLS0tLQotQEAgLTM0MDMsOCArMzYzMCw4IEBAIGVzYWMKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgotIAotICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChsaWJbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwobGliW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLSAKLSAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KLSBvcHRfY3I9Ci1AQCAtMzQ0MCw2ICszNjY3LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwotICAgZWxzZQotICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qW1sJIF1dXCgkc3ltY29kZSRzeW1jb2RlKlwpW1sJIF1dW1sJIF1dKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgotICAgZmkKLSsgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKLSAKLSAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgotICAgcGlwZV93b3Jrcz1ubwotQEAgLTM0NzMsNiArMzcwMSwxOCBAQCBfTFRfRU9GCi0gICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKLSsvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQotKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQotKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KLSsjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QgY29uc3QKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKLSAjZW5kaWYKLUBAIC0zNDg0LDcgKzM3MjQsNyBAQCBfTFRfRU9GCi0gCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0Ci0gCi0gLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotLWNvbnN0IHN0cnVjdCB7Ci0rTFRAJnRAX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtMzUxMCwxNSArMzc1MCwxNSBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewotIF9MVF9FT0YKLSAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgotIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCi0tCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKLSsJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgotIAkgIENGTEFHUz0iJENGTEFHUyRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSkiCi0gCSAgaWYgQUNfVFJZX0VWQUwoYWNfbGluaykgJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotIAkgICAgcGlwZV93b3Jrcz15ZXMKLSAJICBmaQotLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0tCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0rCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKLSsJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKLSAJZWxzZQotIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mQVNfTUVTU0FHRV9MT0dfRkQKLSAJZmkKLUBAIC0zNTUxLDYgKzM3OTEsMTMgQEAgZWxzZQotICAgQUNfTVNHX1JFU1VMVChvaykKLSBmaQotIAotKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgotK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbW0BdXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0gX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfcGlwZV0sIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlXSwgWzFdLAotICAgICBbVGFrZSB0aGUgb3V0cHV0IG9mIG5tIGFuZCBwcm9kdWNlIGEgbGlzdGluZyBvZiByYXcgc3ltYm9scyBhbmQgQyBuYW1lc10pCi0gX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbMV0sCi1AQCAtMzU2MSw2ICszODA4LDggQEAgX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NdLAotIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLAotICAgICBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeF0sIFsxXSwKLSAgICAgW1RyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkXSkKLStfTFRfREVDTChbXSwgW25tX2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAotKyAgICBbU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciAkTk1dKQotIF0pICMgX0xUX0NNRF9HTE9CQUxfU1lNQk9MUwotIAotIAotQEAgLTM1NzIsNyArMzgyMSw2IEBAIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPQotIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KLSBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Ci0gCi0tQUNfTVNHX0NIRUNLSU5HKFtmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQ10pCi0gbTRfaWYoWyQxXSwgW0NYWF0sIFsKLSAgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KLSAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi1AQCAtMzY3OCw2ICszOTI2LDEyIEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCi0gCSAgOzsKLSAJZXNhYwotIAk7OwotKyAgICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBvczIqIHwgcHczMiogfCBjZWdjYyopCi0rCSMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKLSsJIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KLSsJbTRfaWYoWyQxXSwgW0dDSl0sIFtdLAotKwkgIFtfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1ERExMX0VYUE9SVCddKQotKwk7OwotICAgICAgIGRndXgqKQotIAljYXNlICRjY19iYXNlbmFtZSBpbgotIAkgIGVjKysqKQotQEAgLTM4MzAsNyArNDA4NCw3IEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCi0gCTs7Ci0gICAgICAgc29sYXJpcyopCi0gCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tCSAgQ0MqKQotKwkgIENDKiB8IHN1bkNDKikKLSAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKLSAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCi0gCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotQEAgLTQwNTMsNiArNDMwNywxMiBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWwotIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy0tc2hhcmVkJwotIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwtV2wsLCcKLSsJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctUElDJwotKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtNDExNSw3ICs0Mzc1LDcgQEAgbTRfaWYoWyQxXSwgW0NYWF0sIFsKLSAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwotICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCi0rICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnOzsKLUBAIC00MTcyLDkgKzQ0MzIsMTEgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9IiRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSlAJnRAbTRfaWYoWyQxXSxbXSxbIC1EUElDXSxbbTRfaWYoWyQxXSxbQ1hYXSxbIC1EUElDXSxbXSldKSIKLSAgICAgOzsKLSBlc2FjCi0tQUNfTVNHX1JFU1VMVChbJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKV0pCi0tX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCi0tCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKLSsKLStBQ19DQUNIRV9DSEVDSyhbZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUNdLAotKyAgW19MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKV0sCi0rICBbX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSldKQotK19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0kX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC00MTkzLDYgKzQ0NTUsOCBAQCBmaQotIF9MVF9UQUdERUNMKFtwaWNfZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX3BpY10sIFsxXSwKLSAJW0FkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0c10pCi0gCi0rX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCi0rCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC00MjEzLDYgKzQ0NzcsNyBAQCBfTFRfVEFHREVDTChbbGlua19zdGF0aWNfZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY10sIFsxXSwKLSBtNF9kZWZ1bihbX0xUX0xJTktFUl9TSExJQlNdLAotIFtBQ19SRVFVSVJFKFtMVF9QQVRIX0xEXSlkbmwKLSBBQ19SRVFVSVJFKFtMVF9QQVRIX05NXSlkbmwKLSttNF9yZXF1aXJlKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKLUBAIC00MjIxLDYgKzQ0ODYsNyBAQCBtNF9yZXF1aXJlKFtfTFRfVEFHX0NPTVBJTEVSXSlkbmwKLSBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllc10pCi0gbTRfaWYoWyQxXSwgW0NYWF0sIFsKLSAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJ10KLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgIGFpeFtbNC05XV0qKQotICAgICAjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KLUBAIC00MjM1LDE1ICs0NTAxLDIwIEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCi0gICAgIDs7Ci0gICBwdzMyKikKLSAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9IiRsdGRsbF9jbWRzIgotLSAgOzsKLSsgICAgOzsKLSAgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCi0tICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvOy9eLipbWyBdXV9fbm1fXy9zL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLS0gIDs7Ci0rICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgIGNsKikgOzsKLSsgICAgKikKLSsgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLztzL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJ10KLSsgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0gICAqKQotICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotLSAgOzsKLSsgICAgOzsKLSAgIGVzYWMKLS0gIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionXQotIF0sIFsKLSAgIHJ1bnBhdGhfdmFyPQotICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQotQEAgLTQ0MTEsNyArNDY4Miw4IEBAIF9MVF9FT0YKLSAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCi0gICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCi0tICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvO3MvXi4qW1sgXV1fX25tX19cKFtbXiBdXSpcKVtbIF1dW1teIF1dKi9cMSBEQVRBLzsvXklbWyBdXS9kOy9eW1tBSVRXXV1bWyBdXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnXQotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTQ1MTAsMTIgKzQ3ODIsMTIgQEAgX0xUX0VPRgotIAkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KLSAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0nLXJwYXRoICRsaWJkaXInCi0tCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0gCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgotIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0tCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0gCSAgZmkKLSAJICA7OwotIAllc2FjCi1AQCAtNDUyOSw4ICs0ODAxLDggQEAgX0xUX0VPRgotIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtNDU0OCw4ICs0ODIwLDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgIGZpCi1AQCAtNDU5NSw4ICs0ODY3LDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgIGZpCi1AQCAtNDcyNiw3ICs0OTk4LDcgQEAgX0xUX0VPRgotIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKLSAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotLSAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKLSsgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCi0gICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotICAgICAgIGVsc2UKLUBAIC00NzM3LDcgKzUwMDksNyBAQCBfTFRfRU9GCi0gCWVsc2UKLSAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKLSsJIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCi0gCSBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotIAkgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KLUBAIC00NzgxLDIwICs1MDUzLDYzIEBAIF9MVF9FT0YKLSAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJwotLSAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLS0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotLSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJwotLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0tICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBfTFRfVEFHVkFSKGZpeF9zcmNmaWxlX3BhdGgsICQxKT0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0tICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCi0rCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotKwlfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcwotKwlfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJwotKwlfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKLSsJX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJX0xUX1RBR1ZBUihvbGRfcG9zdGluc3RhbGxfY21kcywgJDEpPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJX0xUX1RBR1ZBUihwb3N0bGlua19jbWRzLCAkMSk9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLSsJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLSsJICAgICouZXhlfCouRVhFKSA7OwotKwkgICAgKikKLSsJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotKwkgICAgICA7OwotKwkgIGVzYWN+Ci0rCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLSsJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0rCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLSsJICBmaScKLSsJOzsKLSsgICAgICAqKQotKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSsJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCi0rCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLSsJX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCV9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCV9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotKwk7OwotKyAgICAgIGVzYWMKLSAgICAgICA7OwotIAotICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTQ4MjgsNyArNTE0Myw3IEBAIF9MVF9FT0YKLSAKLSAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0tICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCi0gICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKLSAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwotQEAgLTQ4MzYsNyArNTE1MSw3IEBAIF9MVF9FT0YKLSAKLSAgICAgaHB1eDkqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGVsc2UKLSAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZmkKLUBAIC00ODUyLDcgKzUxNjcsNyBAQCBfTFRfRU9GCi0gCi0gICAgIGhwdXgxMCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgICBmaQotQEAgLTQ4NzYsMTAgKzUxOTEsMTAgQEAgX0xUX0VPRgotIAkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAkqKQotLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJZXNhYwotICAgICAgIGVsc2UKLUBAIC00OTI2LDE2ICs1MjQxLDMxIEBAIF9MVF9FT0YKLSAKLSAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAotIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCi0gCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0tICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotLSAgICAgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtpbnQgZm9vKHZvaWQpIHt9XSldLAotLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotLSAgICAgICAgKQotLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSsJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KLSsJQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2xdLAotKwkgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbF0sCi0rCSAgW3NhdmVfTERGTEFHUz0iJExERkxBR1MiCi0rCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLSsJICAgQUNfTElOS19JRkVMU0UoCi0rCSAgICAgW0FDX0xBTkdfU09VUkNFKAotKwkgICAgICAgIFtBQ19MQU5HX0NBU0UoW0NdLCBbW2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH1dXSwKLSsJCQkgICAgICBbQysrXSwgW1tpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9XV0sCi0rCQkJICAgICAgW0ZvcnRyYW4gNzddLCBbWwotKyAgICAgIHN1YnJvdXRpbmUgZm9vCi0rICAgICAgZW5kXV0sCi0rCQkJICAgICAgW0ZvcnRyYW5dLCBbWwotKyAgICAgIHN1YnJvdXRpbmUgZm9vCi0rICAgICAgZW5kXV0pXSldLAotKwkgICAgICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzXSwKLSsJICAgICAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vXSkKLSsgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiXSkKLSsJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgotKyAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJZmkKLSAgICAgICBlbHNlCi0gCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtNTAyMCw3ICs1MzUwLDcgQEAgX0xUX0VPRgotICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICAgZWxzZQotIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtNTAzOSw5ICs1MzY5LDkgQEAgX0xUX0VPRgotICAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16IGRlZnMnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJd2xhcmM9JyR7d2x9JwotLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gICAgICAgZWxzZQotIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KLSAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtNTMxMyw4ICs1NjQzLDYgQEAgX0xUX1RBR0RFQ0woW10sIFtpbmhlcml0X3JwYXRoXSwgWzBdLAotICAgICB0byBydW50aW1lIHBhdGggbGlzdF0pCi0gX0xUX1RBR0RFQ0woW10sIFtsaW5rX2FsbF9kZXBsaWJzXSwgWzBdLAotICAgICBbV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzXSkKLS1fTFRfVEFHREVDTChbXSwgW2ZpeF9zcmNmaWxlX3BhdGhdLCBbMV0sCi0tICAgIFtGaXggdGhlIHNoZWxsIHZhcmlhYmxlICRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXJdKQotIF9MVF9UQUdERUNMKFtdLCBbYWx3YXlzX2V4cG9ydF9zeW1ib2xzXSwgWzBdLAotICAgICBbU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkXSkKLSBfTFRfVEFHREVDTChbXSwgW2V4cG9ydF9zeW1ib2xzX2NtZHNdLCBbMl0sCi1AQCAtNTMyNSw2ICs1NjUzLDggQEAgX0xUX1RBR0RFQ0woW10sIFtpbmNsdWRlX2V4cHN5bXNdLCBbMV0sCi0gICAgIFtTeW1ib2xzIHRoYXQgbXVzdCBhbHdheXMgYmUgZXhwb3J0ZWRdKQotIF9MVF9UQUdERUNMKFtdLCBbcHJlbGlua19jbWRzXSwgWzJdLAotICAgICBbQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXNdKQotK19MVF9UQUdERUNMKFtdLCBbcG9zdGxpbmtfY21kc10sIFsyXSwKLSsgICAgW0NvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXNdKQotIF9MVF9UQUdERUNMKFtdLCBbZmlsZV9saXN0X3NwZWNdLCBbMV0sCi0gICAgIFtTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXNdKQotIGRubCBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAotQEAgLTU0MjYsNiArNTc1Niw3IEBAIENDPSIkbHRfc2F2ZV9DQyIKLSBtNF9kZWZ1bihbX0xUX0xBTkdfQ1hYX0NPTkZJR10sCi0gW200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAotIG00X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKLSttNF9yZXF1aXJlKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSlkbmwKLSBpZiB0ZXN0IC1uICIkQ1hYIiAmJiAoIHRlc3QgIlgkQ1hYIiAhPSAiWG5vIiAmJgotICAgICAoICh0ZXN0ICJYJENYWCIgPSAiWGcrKyIgJiYgYGcrKyAtdiA+L2Rldi9udWxsIDI+JjFgICkgfHwKLSAgICAgKHRlc3QgIlgkQ1hYIiAhPSAiWGcrKyIpKSkgOyB0aGVuCi1AQCAtNTQ4Nyw2ICs1ODE4LDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAKLSAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCi0gICBsdF9zYXZlX0NDPSRDQwotKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwotICAgbHRfc2F2ZV9MRD0kTEQKLSAgIGx0X3NhdmVfR0NDPSRHQ0MKLSAgIEdDQz0kR1hYCi1AQCAtNTUwNCw2ICs1ODM2LDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAgIGZpCi0gICB0ZXN0IC16ICIke0xEQ1hYK3NldH0iIHx8IExEPSRMRENYWAotICAgQ0M9JHtDWFgtImMrKyJ9Ci0rICBDRkxBR1M9JENYWEZMQUdTCi0gICBjb21waWxlcj0kQ0MKLSAgIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKLSAgIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKLUBAIC01NjY3LDcgKzYwMDAsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotICAgICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKLSAgICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuIGVtcHR5Ci0gICAgICAgICAgICMgZXhlY3V0YWJsZS4KLS0gICAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKLSsgICAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKLSAgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCi0gICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTU2NzksNyArNjAxMiw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gICAgICAgICAgIGVsc2UKLSAJICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKLSsJICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCi0gCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi0gCSAgICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCi1AQCAtNTcyMSwyOSArNjA1NCw3NSBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotICAgICAgICAgOzsKLSAKLSAgICAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0tICAgICAgICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAotLSAgICAgICAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCi0tICAgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJwotLSAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0tICAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCi0tICAgICAgICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKLS0KLS0gICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLS0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotLSAgICAgICAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCi0tICAgICAgICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCi0tICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotLQkgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotLSAgICAgICAgICBlbHNlCi0tCSAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLS0JICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0tICAgICAgICAgIGZpfgotLSAgICAgICAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0tICAgICAgICBlbHNlCi0tICAgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLS0gICAgICAgIGZpCi0tICAgICAgICA7OwotKwljYXNlICRHWFgsJGNjX2Jhc2VuYW1lIGluCi0rCSxjbCogfCBubyxjbCopCi0rCSAgIyBOYXRpdmUgTVNWQwotKwkgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSsJICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJwotKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotKwkgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9eWVzCi0rCSAgX0xUX1RBR1ZBUihmaWxlX2xpc3Rfc3BlYywgJDEpPSdAJwotKwkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCSAgbGliZXh0PWxpYgotKwkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwkgIHNocmV4dF9jbWRzPSIuZGxsIgotKwkgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgICAgJFNFRCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgICBlbHNlCi0rCSAgICAgICRTRUQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgICAgZml+Ci0rCSAgICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgICBsaW5rbmFtZXM9JwotKwkgICMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJICAjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJwotKwkgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotKwkgICMgRG9uJ3QgdXNlIHJhbmxpYgotKwkgIF9MVF9UQUdWQVIob2xkX3Bvc3RpbnN0YWxsX2NtZHMsICQxKT0nY2htb2QgNjQ0ICRvbGRsaWInCi0rCSAgX0xUX1RBR1ZBUihwb3N0bGlua19jbWRzLCAkMSk9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLSsJICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAgICouZXhlfCouRVhFKSA7OwotKwkgICAgICAqKQotKwkJbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotKwkJbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJCTs7Ci0rCSAgICBlc2FjfgotKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRsdF9vdXRwdXRmaWxlIn4KLSsJICAgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0rCSAgICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgICAgZmknCi0rCSAgOzsKLSsJKikKLSsJICAjIGcrKwotKwkgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCi0rCSAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSsJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJwotKwkgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCi0rCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0rCSAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubwotKwkgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotKwotKwkgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSsJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLSsJICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKLSsJICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCi0rCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotKwkgICAgZWxzZQotKwkgICAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSsJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSsJICAgIGZpfgotKwkgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotKwkgIGVsc2UKLSsJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSsJICBmaQotKwkgIDs7Ci0rCWVzYWMKLSsJOzsKLSAgICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotICAgICAgICAgX0xUX0RBUldJTl9MSU5LRVJfRkVBVFVSRVMoJDEpCi0gCTs7Ci1AQCAtNTgxOCw3ICs2MTk3LDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAgICAgICAgICAgICA7OwotICAgICAgICAgICAqKQotICAgICAgICAgICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0tICAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSsgICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKLSAgICAgICAgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLUBAIC01ODg5LDEwICs2MjY4LDEwIEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSAJICAgICAgICAgICAgOzsKLSAJICAgICAgICAgIGlhNjQqKQotLQkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgICAgICAgICAgIDs7Ci0gCSAgICAgICAgICAqKQotLQkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSsJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgICAgICAgICAgICA7OwotIAkgICAgICAgIGVzYWMKLSAJICAgICAgZmkKLUBAIC01OTMzLDkgKzYzMTIsOSBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotICAgICAgICAgICAqKQotIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLSAJICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSAgICAgIGVsc2UKLS0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCi0rCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgLW8gJGxpYicKLSAJICAgICAgZmkKLSAJICAgIGZpCi0gCSAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKLUBAIC02MDA1LDIwICs2Mzg0LDIwIEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gCSAgICAgIF9MVF9UQUdWQVIocHJlbGlua19jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0gCQlybSAtcmYgJHRwbGRpcn4KLSAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9ianMgJGxpYm9ianMgJGNvbXBpbGVfZGVwbGlic34KLS0JCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgIicKLSsJCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCInCi0gCSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotIAkJcm0gLXJmICR0cGxkaXJ+Ci0gCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvbGRvYmpzJG9sZF9kZXBsaWJzfgotLQkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYH4KLSsJCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgfgotIAkJJFJBTkxJQiAkb2xkbGliJwotIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotIAkJcm0gLXJmICR0cGxkaXJ+Ci0gCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KLS0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCi0rCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKLSAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0gCQlybSAtcmYgJHRwbGRpcn4KLSAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgotLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAJICAgICAgOzsKLSAJICAgICopICMgVmVyc2lvbiA2IGFuZCBhYm92ZSB1c2Ugd2VhayBzeW1ib2xzCi0gCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwotQEAgLTYyMTMsNyArNjU5Miw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCQkgIDs7Ci0gCSAgICAgICAgKikKLS0JICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkJICA7OwotIAkgICAgICBlc2FjCi0gCi1AQCAtNjI1OSw3ICs2NjM4LDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAKLSAgICAgICBzb2xhcmlzKikKLSAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgICAgIENDKikKLSsgICAgICAgICAgQ0MqIHwgc3VuQ0MqKQotIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKwotICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsJDEpPXllcwotIAkgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXpkZWZzJwotQEAgLTYzMDAsOSArNjY3OSw5IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLSAJICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0teiAke3dsfWRlZnMnCi0gCSAgICAgIGlmICRDQyAtLXZlcnNpb24gfCAkR1JFUCAtdiAnXjJcLjcnID4gL2Rldi9udWxsOyB0aGVuCi0tCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKLSsJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKLSAJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkJICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCQkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gCi0gCSAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwotIAkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgotQEAgLTY0MzEsNiArNjgxMCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKLSAKLSAgIENDPSRsdF9zYXZlX0NDCi0rICBDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCi0gICBMRENYWD0kTEQKLSAgIExEPSRsdF9zYXZlX0xECi0gICBHQ0M9JGx0X3NhdmVfR0NDCi1AQCAtNjQ0NSw2ICs2ODI1LDI5IEBAIEFDX0xBTkdfUE9QCi0gXSkjIF9MVF9MQU5HX0NYWF9DT05GSUcKLSAKLSAKLSsjIF9MVF9GVU5DX1NUUklQTkFNRV9DTkYKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIGZ1bmNfc3RyaXBuYW1lX2NuZiBwcmVmaXggc3VmZml4IG5hbWUKLSsjIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotKyMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0rIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0rIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotKyMKLSsjIFRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvIHRoZSAobm9uLVhTSSkgdmVyc2lvbiBvZiBmdW5jX3N0cmlwbmFtZSwKLSsjIGV4Y2VwdCB0aGlzIG9uZSBjYW4gYmUgdXNlZCBieSBtNCBjb2RlIHRoYXQgbWF5IGJlIGV4ZWN1dGVkIGJ5IGNvbmZpZ3VyZSwKLSsjIHJhdGhlciB0aGFuIHRoZSBsaWJ0b29sIHNjcmlwdC4KLSttNF9kZWZ1bihbX0xUX0ZVTkNfU1RSSVBOQU1FX0NORl0sW2RubAotK0FDX1JFUVVJUkUoW19MVF9ERUNMX1NFRF0pCi0rQUNfUkVRVUlSRShbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdKQotK2Z1bmNfc3RyaXBuYW1lX2NuZiAoKQotK3sKLSsgIGNhc2UgJHsyfSBpbgotKyAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLSsgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLSsgIGVzYWMKLSt9ICMgZnVuY19zdHJpcG5hbWVfY25mCi0rXSkjIF9MVF9GVU5DX1NUUklQTkFNRV9DTkYKLSsKLSAjIF9MVF9TWVNfSElEREVOX0xJQkRFUFMoW1RBR05BTUVdKQotICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIyBGaWd1cmUgb3V0ICJoaWRkZW4iIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGZyb20gdmVyYm9zZQotQEAgLTY0NTMsNiArNjg1Niw3IEBAIEFDX0xBTkdfUE9QCi0gIyBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCi0gbTRfZGVmdW4oW19MVF9TWVNfSElEREVOX0xJQkRFUFNdLAotIFttNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKLStBQ19SRVFVSVJFKFtfTFRfRlVOQ19TVFJJUE5BTUVfQ05GXSlkbmwKLSAjIERlcGVuZGVuY2llcyB0byBwbGFjZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBvYmplY3QgYmVpbmcgbGlua2VkOgotIF9MVF9UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKT0KLSBfTFRfVEFHVkFSKHBvc3RkZXBfb2JqZWN0cywgJDEpPQotQEAgLTY1MDMsNiArNjkwNywxMyBAQCBwdWJsaWMgY2xhc3MgZm9vIHsKLSB9OwotIF9MVF9FT0YKLSBdKQotKwotK19sdF9saWJkZXBzX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLStjYXNlICIkQ0MgJENGTEFHUyAiIGluICMoCi0rKlwgLWZsdG8qXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby1sdG8iIDs7Ci0rKlwgLWZ3aG9wcipcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLXdob3ByIiA7OwotK2VzYWMKLSsKLSBkbmwgUGFyc2UgdGhlIGNvbXBpbGVyIG91dHB1dCBhbmQgZXh0cmFjdCB0aGUgbmVjZXNzYXJ5Ci0gZG5sIG9iamVjdHMsIGxpYnJhcmllcyBhbmQgbGlicmFyeSBmbGFncy4KLSBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgotQEAgLTY1MTQsNyArNjkyNSw3IEBAIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCi0gICBwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lPW5vCi0gCi0gICBmb3IgcCBpbiBgZXZhbCAiJG91dHB1dF92ZXJib3NlX2xpbmtfY21kImA7IGRvCi0tICAgIGNhc2UgJHAgaW4KLSsgICAgY2FzZSAke3ByZXZ9JHtwfSBpbgotIAotICAgICAtTCogfCAtUiogfCAtbCopCi0gICAgICAgICMgU29tZSBjb21waWxlcnMgcGxhY2Ugc3BhY2UgYmV0d2VlbiAiLXtMLFJ9IiBhbmQgdGhlIHBhdGguCi1AQCAtNjUyMywxMyArNjkzNCwyMiBAQCBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgotICAgICAgICAgICB0ZXN0ICRwID0gIi1SIjsgdGhlbgotIAkgcHJldj0kcAotIAkgY29udGludWUKLS0gICAgICAgZWxzZQotLQkgcHJldj0KLSAgICAgICAgZmkKLSAKLSsgICAgICAgIyBFeHBhbmQgdGhlIHN5c3Jvb3QgdG8gZWFzZSBleHRyYWN0aW5nIHRoZSBkaXJlY3RvcmllcyBsYXRlci4KLSsgICAgICAgaWYgdGVzdCAteiAiJHByZXYiOyB0aGVuCi0rICAgICAgICAgY2FzZSAkcCBpbgotKyAgICAgICAgIC1MKikgZnVuY19zdHJpcG5hbWVfY25mICctTCcgJycgIiRwIjsgcHJldj0tTDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7Ci0rICAgICAgICAgLVIqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1SJyAnJyAiJHAiOyBwcmV2PS1SOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKLSsgICAgICAgICAtbCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLWwnICcnICIkcCI7IHByZXY9LWw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwotKyAgICAgICAgIGVzYWMKLSsgICAgICAgZmkKLSsgICAgICAgY2FzZSAkcCBpbgotKyAgICAgICA9KikgZnVuY19zdHJpcG5hbWVfY25mICc9JyAnJyAiJHAiOyBwPSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwotKyAgICAgICBlc2FjCi0gICAgICAgIGlmIHRlc3QgIiRwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lIiA9IG5vOyB0aGVuCi0tCSBjYXNlICRwIGluCi0tCSAtTCogfCAtUiopCi0rCSBjYXNlICR7cHJldn0gaW4KLSsJIC1MIHwgLVIpCi0gCSAgICMgSW50ZXJuYWwgY29tcGlsZXIgbGlicmFyeSBwYXRocyBzaG91bGQgY29tZSBhZnRlciB0aG9zZQotIAkgICAjIHByb3ZpZGVkIHRoZSB1c2VyLiAgVGhlIHBvc3RkZXBzIGFscmVhZHkgY29tZSBhZnRlciB0aGUKLSAJICAgIyB1c2VyIHN1cHBsaWVkIGxpYnMgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBwcm9jZXNzIHRoZW0uCi1AQCAtNjU0OSw4ICs2OTY5LDEwIEBAIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCi0gCSAgIF9MVF9UQUdWQVIocG9zdGRlcHMsICQxKT0iJHtfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSl9ICR7cHJldn0ke3B9IgotIAkgZmkKLSAgICAgICAgZmkKLSsgICAgICAgcHJldj0KLSAgICAgICAgOzsKLSAKLSsgICAgKi5sdG8uJG9iamV4dCkgOzsgIyBJZ25vcmUgR0NDIExUTyBvYmplY3RzCi0gICAgICouJG9iamV4dCkKLSAgICAgICAgIyBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgdGVzdCBvYmplY3QgZmlsZSBvbmx5IHNob3dzIHVwCi0gICAgICAgICMgb25jZSBpbiB0aGUgY29tcGlsZXIgb3V0cHV0LgotQEAgLTY1ODYsNiArNzAwOCw3IEBAIGVsc2UKLSBmaQotIAotICRSTSAtZiBjb25mZXN0LiRvYmpleHQKLStDRkxBR1M9JF9sdF9saWJkZXBzX3NhdmVfQ0ZMQUdTCi0gCi0gIyBQT1JUTUU6IG92ZXJyaWRlIGFib3ZlIHRlc3Qgb24gc3lzdGVtcyB3aGVyZSBpdCBpcyBicm9rZW4KLSBtNF9pZihbJDFdLCBbQ1hYXSwKLUBAIC02NjIyLDcgKzcwNDUsNyBAQCBsaW51eCopCi0gCi0gc29sYXJpcyopCi0gICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgQ0MqKQotKyAgQ0MqIHwgc3VuQ0MqKQotICAgICAjIFRoZSBtb3JlIHN0YW5kYXJkcy1jb25mb3JtaW5nIHN0bHBvcnQ0IGxpYnJhcnkgaXMKLSAgICAgIyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgQ3N0ZCBsaWJyYXJ5LiBBdm9pZCBzcGVjaWZ5aW5nCi0gICAgICMgaXQgaWYgaXQncyBpbiBDWFhGTEFHUy4gSWdub3JlIGxpYkNydW4gYXMKLUBAIC02NzM1LDcgKzcxNTgsOSBAQCBpZiB0ZXN0ICIkX2x0X2Rpc2FibGVfRjc3IiAhPSB5ZXM7IHRoZW4KLSAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCi0gICBsdF9zYXZlX0NDPSIkQ0MiCi0gICBsdF9zYXZlX0dDQz0kR0NDCi0rICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gICBDQz0ke0Y3Ny0iZjc3In0KLSsgIENGTEFHUz0kRkZMQUdTCi0gICBjb21waWxlcj0kQ0MKLSAgIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKLSAgIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKLUBAIC02Nzg5LDYgKzcyMTQsNyBAQCBpZiB0ZXN0ICIkX2x0X2Rpc2FibGVfRjc3IiAhPSB5ZXM7IHRoZW4KLSAKLSAgIEdDQz0kbHRfc2F2ZV9HQ0MKLSAgIENDPSIkbHRfc2F2ZV9DQyIKLSsgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgotIGZpICMgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzCi0gCi0gQUNfTEFOR19QT1AKLUBAIC02ODY1LDcgKzcyOTEsOSBAQCBpZiB0ZXN0ICIkX2x0X2Rpc2FibGVfRkMiICE9IHllczsgdGhlbgotICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLSAgIGx0X3NhdmVfQ0M9IiRDQyIKLSAgIGx0X3NhdmVfR0NDPSRHQ0MKLSsgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAgIENDPSR7RkMtImY5NSJ9Ci0rICBDRkxBR1M9JEZDRkxBR1MKLSAgIGNvbXBpbGVyPSRDQwotICAgR0NDPSRhY19jdl9mY19jb21waWxlcl9nbnUKLSAKLUBAIC02OTIxLDcgKzczNDksOCBAQCBpZiB0ZXN0ICIkX2x0X2Rpc2FibGVfRkMiICE9IHllczsgdGhlbgotICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCi0gCi0gICBHQ0M9JGx0X3NhdmVfR0NDCi0tICBDQz0iJGx0X3NhdmVfQ0MiCi0rICBDQz0kbHRfc2F2ZV9DQwotKyAgQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUwotIGZpICMgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXMKLSAKLSBBQ19MQU5HX1BPUAotQEAgLTY5NTgsMTAgKzczODcsMTIgQEAgX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFCi0gX0xUX0xJTktFUl9CT0lMRVJQTEFURQotIAotICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCi0tbHRfc2F2ZV9DQz0iJENDIgotK2x0X3NhdmVfQ0M9JENDCi0rbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwotIGx0X3NhdmVfR0NDPSRHQ0MKLSBHQ0M9eWVzCi0gQ0M9JHtHQ0otImdjaiJ9Ci0rQ0ZMQUdTPSRHQ0pGTEFHUwotIGNvbXBpbGVyPSRDQwotIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKLSBfTFRfVEFHVkFSKExELCAkMSk9IiRMRCIKLUBAIC02OTkyLDcgKzc0MjMsOCBAQCBmaQotIEFDX0xBTkdfUkVTVE9SRQotIAotIEdDQz0kbHRfc2F2ZV9HQ0MKLS1DQz0iJGx0X3NhdmVfQ0MiCi0rQ0M9JGx0X3NhdmVfQ0MKLStDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCi0gXSkjIF9MVF9MQU5HX0dDSl9DT05GSUcKLSAKLSAKLUBAIC03MDI3LDkgKzc0NTksMTEgQEAgX0xUX0xJTktFUl9CT0lMRVJQTEFURQotIAotICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCi0gbHRfc2F2ZV9DQz0iJENDIgotK2x0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSBsdF9zYXZlX0dDQz0kR0NDCi0gR0NDPQotIENDPSR7UkMtIndpbmRyZXMifQotK0NGTEFHUz0KLSBjb21waWxlcj0kQ0MKLSBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCi0gX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQotQEAgLTcwNDIsNyArNzQ3Niw4IEBAIGZpCi0gCi0gR0NDPSRsdF9zYXZlX0dDQwotIEFDX0xBTkdfUkVTVE9SRQotLUNDPSIkbHRfc2F2ZV9DQyIKLStDQz0kbHRfc2F2ZV9DQwotK0NGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKLSBdKSMgX0xUX0xBTkdfUkNfQ09ORklHCi0gCi0gCi1AQCAtNzEwMSw2ICs3NTM2LDE1IEBAIF9MVF9ERUNMKFtdLCBbT0JKRFVNUF0sIFsxXSwgW0FuIG9iamVjdCBzeW1ib2wgZHVtcGVyXSkKLSBBQ19TVUJTVChbT0JKRFVNUF0pCi0gXSkKLSAKLSsjIF9MVF9ERUNMX0RMTFRPT0wKLSsjIC0tLS0tLS0tLS0tLS0tLS0KLSsjIEVuc3VyZSBETExUT09MIHZhcmlhYmxlIGlzIHNldC4KLSttNF9kZWZ1bihbX0xUX0RFQ0xfRExMVE9PTF0sCi0rW0FDX0NIRUNLX1RPT0woRExMVE9PTCwgZGxsdG9vbCwgZmFsc2UpCi0rdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAotK19MVF9ERUNMKFtdLCBbRExMVE9PTF0sIFsxXSwgW0RMTCBjcmVhdGlvbiBwcm9ncmFtXSkKLStBQ19TVUJTVChbRExMVE9PTF0pCi0rXSkKLSAKLSAjIF9MVF9ERUNMX1NFRAotICMgLS0tLS0tLS0tLS0tCi1AQCAtNzE5NCw4ICs3NjM4LDggQEAgbTRfZGVmdW4oW19MVF9DSEVDS19TSEVMTF9GRUFUVVJFU10sCi0gIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKLSB4c2lfc2hlbGw9bm8KLSAoIF9sdF9kdW1teT0iYS9iL2MiCi0tICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotLSAgICAgID0gYyxhL2IsLCBcCi0rICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotKyAgICAgID0gYyxhL2IsYi9jLCBcCi0gICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKLSAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKLSAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC03MjM0LDIwNiArNzY3OCwxNjIgQEAgX0xUX0RFQ0woW05MMlNQXSwgW2x0X05MMlNQXSwgWzFdLCBbdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlc10pZG5sCi0gXSkjIF9MVF9DSEVDS19TSEVMTF9GRUFUVVJFUwotIAotIAotLSMgX0xUX1BST0dfWFNJX1NIRUxMRk5TCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0jIEJvdXJuZSBhbmQgWFNJIGNvbXBhdGlibGUgdmFyaWFudHMgb2Ygc29tZSB1c2VmdWwgc2hlbGwgZnVuY3Rpb25zLgotLW00X2RlZnVuKFtfTFRfUFJPR19YU0lfU0hFTExGTlNdLAotLVtjYXNlICR4c2lfc2hlbGwgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotLSMgY2FsbDoKLS0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLS0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLS1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotLX0KLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkWypdICkpCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9Ci0tfQotKyMgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRSAoRlVOQ05BTUUsIFJFUExBQ0VNRU5ULUJPRFkpCi0rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIEluIGAkY2ZnZmlsZScsIGxvb2sgZm9yIGZ1bmN0aW9uIEZVTkNOQU1FIGRlbGltaXRlZCBieSBgXkZVTkNOQU1FICgpJCcgYW5kCi0rIyAnXn0gRlVOQ05BTUUgJywgYW5kIHJlcGxhY2UgaXRzIGJvZHkgd2l0aCBSRVBMQUNFTUVOVC1CT0RZLgotK200X2RlZnVuKFtfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFXSwKLStbZG5sIHsKLStzZWQgLWUgJy9eJDEgKCkkLywvXn0gIyAkMSAvY1wKLSskMSAoKVwKLSt7XAotK200X2JwYXRzdWJzdHMoWyQyXSwgWyRdLCBbXFxdLCBbXlwoWwkgXVwpXSwgW1xcXDFdKQotK30gIyBFeHRlbmRlZC1zaGVsbCAkMSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK10pCi0gCi0tX0xUX0VPRgotLSAgICA7OwotLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0gCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0tICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCi0tICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotLSAgZWxzZQotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0tICBmaQotLX0KLSsjIF9MVF9QUk9HX1JFUExBQ0VfU0hFTExGTlMKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIFJlcGxhY2UgZXhpc3RpbmcgcG9ydGFibGUgaW1wbGVtZW50YXRpb25zIG9mIHNldmVyYWwgc2hlbGwgZnVuY3Rpb25zIHdpdGgKLSsjIGVxdWl2YWxlbnQgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb25zIHdoZXJlIHRob3NlIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUuLgotK200X2RlZnVuKFtfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TXSwKLStbaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19kaXJuYW1lXSwgW2RubAotKyAgICBjYXNlICR7MX0gaW4KLSsgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotKyAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLSsgICAgZXNhY10pCi0rCi0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Jhc2VuYW1lXSwgW2RubAotKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXSkKLSsKLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWVdLCBbZG5sCi0rICAgIGNhc2UgJHsxfSBpbgotKyAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0rICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotKyAgICBlc2FjCi0rICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJdKQotIAotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3RyaXBuYW1lXSwgW2RubAotKyAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0rICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLSsgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLSsgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLSsgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1dKQotIAotLWRubCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lCi0tZG5sIEEgcG9ydGFibGUgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIGlzIGFscmVhZHkgZGVmaW5lZCBpbiBnZW5lcmFsLm00c2gKLS1kbmwgc28gdGhlcmUgaXMgbm8gbmVlZCBmb3IgaXQgaGVyZS4KLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3BsaXRfbG9uZ19vcHRdLCBbZG5sCi0rICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfQotKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XSkKLSAKLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19Ci0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3NwbGl0X3Nob3J0X29wdF0sIFtkbmwKLSsgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P30KLSsgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifV0pCi0gCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bW149XV0qXCk9LiovXDEvO3EnCi0tbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtbXj1dXSo9Ly8nCi0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2xvMm9dLCBbZG5sCi0rICAgIGNhc2UgJHsxfSBpbgotKyAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0rICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0rICAgIGVzYWNdKQotIAotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCi0tICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAotLX0KLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfeGZvcm1dLCBbICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9dKQotIAotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKLS19Ci0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2FyaXRoXSwgWyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJFsqXSApKV0pCi0gCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bW14uXV0qJC8ubG8vJ2AKLS19Ci0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2xlbl0sIFsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XSkKLStmaQotIAotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRbQF0iYAotLX0KLStpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCi0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2FwcGVuZF0sIFsgICAgZXZhbCAiJHsxfSs9XFwkezJ9Il0pCi0gCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiRbMV0iIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLS19Ci0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2FwcGVuZF9xdW90ZWRdLCBbZG5sCi0rICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iCi0rZG5sIG00IGV4cGFuc2lvbiB0dXJucyBcXFxcIGludG8gXFwsIGFuZCB0aGVuIHRoZSBzaGVsbCBldmFsIHR1cm5zIHRoYXQgaW50byBcCi0rICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXSkKLSAKLS1fTFRfRU9GCi0tZXNhYwotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JwotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW1thLXpBLVpfXV1cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZWxzZQotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFtbYS16QS1aX11dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZmkKLSAKLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLStpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgotKyAgQUNfTVNHX1dBUk4oW1VuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGVdKQotK2ZpCi0rXSkKLSAKLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJFsxXSs9XCRbMl0iCi0tfQotLV9MVF9FT0YKLSsjIF9MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TCi0rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKyMgRGV0ZXJtaW5lIHdoaWNoIGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9ucyBzaG91bGQgYmUgdXNlZCBieQotKyMgZnVuY190b19ob3N0X2ZpbGUgKGFuZCwgaW1wbGljaXRseSwgYnkgZnVuY190b19ob3N0X3BhdGgpLiAgVGhlc2UgYXJlIG5lZWRlZAotKyMgZm9yIGNlcnRhaW4gY3Jvc3MtY29tcGlsZSBjb25maWd1cmF0aW9ucyBhbmQgbmF0aXZlIG1pbmd3LgotK200X2RlZnVuKFtfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OU10sCi0rW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKLStBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfQlVJTERdKWRubAotK0FDX01TR19DSEVDS0lORyhbaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0XSkKLStBQ19DQUNIRV9WQUwobHRfY3ZfdG9faG9zdF9maWxlX2NtZCwKLStbY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0gICAgIDs7Ci0tICAqKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkWzFdPVwkJFsxXVwkWzJdIgotLX0KLS0KLS1fTFRfRU9GCi0rICAqLSotY3lnd2luKiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0gICAgIDs7Ci0tICBlc2FjCi0rICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQotKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgOzsKLStlc2FjCi0rXSkKLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0rQUNfTVNHX1JFU1VMVChbJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWRdKQotK19MVF9ERUNMKFt0b19ob3N0X2ZpbGVfY21kXSwgW2x0X2N2X3RvX2hvc3RfZmlsZV9jbWRdLAotKyAgICAgICAgIFswXSwgW2NvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0XSlkbmwKLSsKLStBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXRdKQotK0FDX0NBQ0hFX1ZBTChsdF9jdl90b190b29sX2ZpbGVfY21kLAotK1sjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotK2VzYWMKLSBdKQotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLStBQ19NU0dfUkVTVUxUKFskbHRfY3ZfdG9fdG9vbF9maWxlX2NtZF0pCi0rX0xUX0RFQ0woW3RvX3Rvb2xfZmlsZV9jbWRdLCBbbHRfY3ZfdG9fdG9vbF9maWxlX2NtZF0sCi0rICAgICAgICAgWzBdLCBbY29udmVydCAkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdF0pZG5sCi0rXSkjIF9MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TCi1kaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCi1pbmRleCA5NTAzZWM4NWQ3Li43MGU4NTZlMDY1IDEwMDY0NAotLS0tIGEvbHRtYWluLnNoCi0rKysgYi9sdG1haW4uc2gKLUBAIC0xLDEwICsxLDkgQEAKLS0jIEdlbmVyYXRlZCBmcm9tIGx0bWFpbi5tNHNoLgotIAotLSMgbGlidG9vbCAoR05VIGxpYnRvb2wgMS4zMTM0IDIwMDktMTEtMjkpIDIuMi43YQotKyMgbGlidG9vbCAoR05VIGxpYnRvb2wpIDIuNAotICMgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCA8Z29yZEBnbnUuYWkubWl0LmVkdT4sIDE5OTYKLSAKLSAjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwKLS0jIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotICMgVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KLSAjIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgotIAotQEAgLTM4LDcgKzM3LDYgQEAKLSAjICAgLW4sIC0tZHJ5LXJ1biAgICAgICAgICAgIGRpc3BsYXkgY29tbWFuZHMgd2l0aG91dCBtb2RpZnlpbmcgYW55IGZpbGVzCi0gIyAgICAgICAtLWZlYXR1cmVzICAgICAgICAgICBkaXNwbGF5IGJhc2ljIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQKLSAjICAgICAgIC0tbW9kZT1NT0RFICAgICAgICAgIHVzZSBvcGVyYXRpb24gbW9kZSBNT0RFCi0tIyAgICAgICAtLW5vLWZpbmlzaCAgICAgICAgICBsZXQgaW5zdGFsbCBtb2RlIGF2b2lkIGZpbmlzaCBjb21tYW5kcwotICMgICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcyAgZG9uJ3QgcmVtb3ZlIGR1cGxpY2F0ZSBkZXBlbmRlbmN5IGxpYnJhcmllcwotICMgICAgICAgLS1xdWlldCwgLS1zaWxlbnQgICAgZG9uJ3QgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcwotICMgICAgICAgLS1uby1xdWlldCwgLS1uby1zaWxlbnQKLUBAIC03MSwxNyArNjksMTkgQEAKLSAjICAgICAgICAgY29tcGlsZXI6CQkkTFRDQwotICMgICAgICAgICBjb21waWxlciBmbGFnczoJCSRMVENGTEFHUwotICMgICAgICAgICBsaW5rZXI6CQkkTEQgKGdudT8gJHdpdGhfZ251X2xkKQotLSMgICAgICAgICAkcHJvZ25hbWU6CShHTlUgbGlidG9vbCAxLjMxMzQgMjAwOS0xMS0yOSkgMi4yLjdhCi0rIyAgICAgICAgICRwcm9nbmFtZToJKEdOVSBsaWJ0b29sKSAyLjQKLSAjICAgICAgICAgYXV0b21ha2U6CSRhdXRvbWFrZV92ZXJzaW9uCi0gIyAgICAgICAgIGF1dG9jb25mOgkkYXV0b2NvbmZfdmVyc2lvbgotICMKLSAjIFJlcG9ydCBidWdzIHRvIDxidWctbGlidG9vbEBnbnUub3JnPi4KLSsjIEdOVSBsaWJ0b29sIGhvbWUgcGFnZTogPGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJ0b29sLz4uCi0rIyBHZW5lcmFsIGhlbHAgdXNpbmcgR05VIHNvZnR3YXJlOiA8aHR0cDovL3d3dy5nbnUub3JnL2dldGhlbHAvPi4KLSAKLSBQUk9HUkFNPWxpYnRvb2wKLSBQQUNLQUdFPWxpYnRvb2wKLS1WRVJTSU9OPTIuMi43YQotLVRJTUVTVEFNUD0iIDEuMzEzNCAyMDA5LTExLTI5IgotLXBhY2thZ2VfcmV2aXNpb249MS4zMTM0Ci0rVkVSU0lPTj0yLjQKLStUSU1FU1RBTVA9IiIKLStwYWNrYWdlX3JldmlzaW9uPTEuMzI5MwotIAotICMgQmUgQm91cm5lIGNvbXBhdGlibGUKLSBpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLUBAIC0xMDYsOSArMTA2LDYgQEAgX0xURUNIT19FT0YnCi0gfQotIAotICMgTkxTIG51aXNhbmNlczogV2Ugc2F2ZSB0aGUgb2xkIHZhbHVlcyB0byByZXN0b3JlIGR1cmluZyBleGVjdXRlIG1vZGUuCi0tIyBPbmx5IHNldCBMQU5HIGFuZCBMQ19BTEwgdG8gQyBpZiBhbHJlYWR5IHNldC4KLS0jIFRoZXNlIG11c3Qgbm90IGJlIHNldCB1bmNvbmRpdGlvbmFsbHkgYmVjYXVzZSBub3QgYWxsIHN5c3RlbXMgdW5kZXJzdGFuZAotLSMgZS5nLiBMQU5HPUMgKG5vdGFibHkgU0NPKS4KLSBsdF91c2VyX2xvY2FsZT0KLSBsdF9zYWZlX2xvY2FsZT0KLSBmb3IgbHRfdmFyIGluIExBTkcgTEFOR1VBR0UgTENfQUxMIExDX0NUWVBFIExDX0NPTExBVEUgTENfTUVTU0FHRVMKLUBAIC0xMjEsMTUgKzExOCwxMyBAQCBkbwotIAkgIGx0X3NhZmVfbG9jYWxlPVwiJGx0X3Zhcj1DOyBcJGx0X3NhZmVfbG9jYWxlXCIKLSAJZmkiCi0gZG9uZQotK0xDX0FMTD1DCi0rTEFOR1VBR0U9QwotK2V4cG9ydCBMQU5HVUFHRSBMQ19BTEwKLSAKLSAkbHRfdW5zZXQgQ0RQQVRICi0gCi0gCi0tCi0tCi0tCi0tCi0tCi0gIyBXb3JrIGFyb3VuZCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlzc3VlIG9uIElSSVggNi41LiBPbiBJUklYIDYuNCssIHNoCi0gIyBpcyBrc2ggYnV0IHdoZW4gdGhlIHNoZWxsIGlzIGludm9rZWQgYXMgInNoIiBhbmQgdGhlIGN1cnJlbnQgdmFsdWUgb2YKLSAjIHRoZSBfWFBHIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBlcXVhbCB0byAxIChvbmUpLCB0aGUgc3BlY2lhbAotQEAgLTE0MCw3ICsxMzUsNyBAQCBwcm9ncGF0aD0iJDAiCi0gCi0gCi0gOiAke0NQPSJjcCAtZiJ9Ci0tOiAke0VDSE89JGFzX2VjaG99Ci0rdGVzdCAiJHtFQ0hPK3NldH0iID0gc2V0IHx8IEVDSE89JHthc19lY2hvLSdwcmludGYgJXNcbid9Ci0gOiAke0VHUkVQPSIvYmluL2dyZXAgLUUifQotIDogJHtGR1JFUD0iL2Jpbi9ncmVwIC1GIn0KLSA6ICR7R1JFUD0iL2Jpbi9ncmVwIn0KLUBAIC0xNDksNyArMTQ0LDcgQEAgcHJvZ3BhdGg9IiQwIgotIDogJHtNS0RJUj0ibWtkaXIifQotIDogJHtNVj0ibXYgLWYifQotIDogJHtSTT0icm0gLWYifQotLTogJHtTRUQ9Ii9tb3VudC9lbmRvci93aWxkZW5odS9sb2NhbC14ODZfNjQvYmluL3NlZCJ9Ci0rOiAke1NFRD0iL2Jpbi9zZWQifQotIDogJHtTSEVMTD0iJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0ifQotIDogJHtYc2VkPSIkU0VEIC1lIDFzL15YLy8ifQotIAotQEAgLTE2OSw2ICsxNjQsMjcgQEAgSUZTPSIgCSRsdF9ubCIKLSBkaXJuYW1lPSJzLC9bXi9dKiQsLCIKLSBiYXNlbmFtZT0icyxeLiovLCwiCi0gCi0rIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0rIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotKyMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotK2Z1bmNfZGlybmFtZSAoKQotK3sKLSsgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAotKyAgICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0rICAgIGVsc2UKLSsgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0rICAgIGZpCi0rfSAjIGZ1bmNfZGlybmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsKLSsjIGZ1bmNfYmFzZW5hbWUgZmlsZQotK2Z1bmNfYmFzZW5hbWUgKCkKLSt7Ci0rICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotK30gIyBmdW5jX2Jhc2VuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKwotICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLSAjIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0gIyBjYWxsOgotQEAgLTE4MywxNyArMTk5LDMxIEBAIGJhc2VuYW1lPSJzLF4uKi8sLCIKLSAjIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLSBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0gewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGJhc2VuYW1lImAKLS19Ci0rICAgICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0rICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRkaXJuYW1lImAKLSsgICAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLSsgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotKyAgICBlbHNlCi0rICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotKyAgICBmaQotKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGJhc2VuYW1lImAKLSt9ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsKLSsjIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotKyMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0rIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLSsjIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLSsjIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0rIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotK2Z1bmNfc3RyaXBuYW1lICgpCi0rewotKyAgICBjYXNlICR7Mn0gaW4KLSsgICAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotKyAgICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLSsgICAgZXNhYwotK30gIyBmdW5jX3N0cmlwbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSAKLS0jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS4KLSAKLSAjIFRoZXNlIFNFRCBzY3JpcHRzIHByZXN1cHBvc2UgYW4gYWJzb2x1dGUgcGF0aCB3aXRoIGEgdHJhaWxpbmcgc2xhc2guCi0gcGF0aGNhcj0ncyxeL1woW14vXSpcKS4qJCxcMSwnCi1AQCAtMzc2LDYgKzQwNiwxNSBAQCBzZWRfcXVvdGVfc3Vic3Q9J3MvXChbYCIkXFxdXCkvXFxcMS9nJwotICMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgotIGRvdWJsZV9xdW90ZV9zdWJzdD0ncy9cKFsiYFxcXVwpL1xcXDEvZycKLSAKLSsjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCB0dXJucyBhIHN0cmluZyBpbnRvIGEgcmVnZXggbWF0Y2hpbmcgZm9yIHRoZQotKyMgc3RyaW5nIGxpdGVyYWxseS4KLStzZWRfbWFrZV9saXRlcmFsX3JlZ2V4PSdzLFtdLlteJFxcKlwvXSxcXCYsZycKLSsKLSsjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBjb252ZXJ0cyBhIHczMiBmaWxlIG5hbWUgb3IgcGF0aAotKyMgd2hpY2ggY29udGFpbnMgZm9yd2FyZCBzbGFzaGVzLCBpbnRvIG9uZSB0aGF0IGNvbnRhaW5zCi0rIyAoZXNjYXBlZCkgYmFja3NsYXNoZXMuICBBIHZlcnkgbmFpdmUgaW1wbGVtZW50YXRpb24uCi0rbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJwotKwotICMgUmUtYFwnIHBhcmFtZXRlciBleHBhbnNpb25zIGluIG91dHB1dCBvZiBkb3VibGVfcXVvdGVfc3Vic3QgdGhhdCB3ZXJlCi0gIyBgXCctZWQgaW4gaW5wdXQgdG8gdGhlIHNhbWUuICBJZiBhbiBvZGQgbnVtYmVyIG9mIGBcJyBwcmVjZWRlZCBhICckJwotICMgaW4gaW5wdXQgdG8gZG91YmxlX3F1b3RlX3N1YnN0LCB0aGF0ICckJyB3YXMgcHJvdGVjdGVkIGZyb20gZXhwYW5zaW9uLgotQEAgLTQwNCw3ICs0NDMsNyBAQCBvcHRfd2FybmluZz06Ci0gIyBuYW1lIGlmIGl0IGhhcyBiZWVuIHNldCB5ZXQuCi0gZnVuY19lY2hvICgpCi0gewotLSAgICAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiAkKiIKLSsgICAgJEVDSE8gIiRwcm9nbmFtZTogJHtvcHRfbW9kZSskb3B0X21vZGU6IH0kKiIKLSB9Ci0gCi0gIyBmdW5jX3ZlcmJvc2UgYXJnLi4uCi1AQCAtNDMwLDE0ICs0NjksMTQgQEAgZnVuY19lY2hvX2FsbCAoKQotICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvci4KLSBmdW5jX2Vycm9yICgpCi0gewotLSAgICAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiAiJHsxKyIkQCJ9IDE+JjIKLSsgICAgJEVDSE8gIiRwcm9nbmFtZTogJHtvcHRfbW9kZSskb3B0X21vZGU6IH0iJHsxKyIkQCJ9IDE+JjIKLSB9Ci0gCi0gIyBmdW5jX3dhcm5pbmcgYXJnLi4uCi0gIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCB3YXJuaW5nIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IuCi0gZnVuY193YXJuaW5nICgpCi0gewotLSAgICAkb3B0X3dhcm5pbmcgJiYgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogd2FybmluZzogIiR7MSsiJEAifSAxPiYyCi0rICAgICRvcHRfd2FybmluZyAmJiAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfXdhcm5pbmc6ICIkezErIiRAIn0gMT4mMgotIAotICAgICAjIGJhc2ggYnVnIGFnYWluOgotICAgICA6Ci1AQCAtNjU2LDE5ICs2OTUsMzUgQEAgZnVuY19zaG93X2V2YWxfbG9jYWxlICgpCi0gICAgIGZpCi0gfQotIAotLQotLQotKyMgZnVuY190cl9zaAotKyMgVHVybiAkMSBpbnRvIGEgc3RyaW5nIHN1aXRhYmxlIGZvciBhIHNoZWxsIHZhcmlhYmxlIG5hbWUuCi0rIyBSZXN1bHQgaXMgc3RvcmVkIGluICRmdW5jX3RyX3NoX3Jlc3VsdC4gIEFsbCBjaGFyYWN0ZXJzCi0rIyBub3QgaW4gdGhlIHNldCBhLXpBLVowLTlfIGFyZSByZXBsYWNlZCB3aXRoICdfJy4gRnVydGhlciwKLSsjIGlmICQxIGJlZ2lucyB3aXRoIGEgZGlnaXQsIGEgJ18nIGlzIHByZXBlbmRlZCBhcyB3ZWxsLgotK2Z1bmNfdHJfc2ggKCkKLSt7Ci0rICBjYXNlICQxIGluCi0rICBbMC05XSogfCAqWyFhLXpBLVowLTlfXSopCi0rICAgIGZ1bmNfdHJfc2hfcmVzdWx0PWAkRUNITyAiJDEiIHwgJFNFRCAncy9eXChbMC05XVwpL19cMS87IHMvW15hLXpBLVowLTlfXS9fL2cnYAotKyAgICA7OwotKyAgKiApCi0rICAgIGZ1bmNfdHJfc2hfcmVzdWx0PSQxCi0rICAgIDs7Ci0rICBlc2FjCi0rfQotIAotIAotICMgZnVuY192ZXJzaW9uCi0gIyBFY2hvIHZlcnNpb24gbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQuCi0gZnVuY192ZXJzaW9uICgpCi0gewotKyAgICAkb3B0X2RlYnVnCi0rCi0gICAgICRTRUQgLW4gJy8oQykvIWIgZ28KLSAJOm1vcmUKLSAJL1wuLyF7Ci0gCSAgTgotLQkgIHMvXG4jIC8vCi0rCSAgcy9cbiMgLyAvCi0gCSAgYiBtb3JlCi0gCX0KLSAJOmdvCi1AQCAtNjg1LDcgKzc0MCw5IEBAIGZ1bmNfdmVyc2lvbiAoKQotICMgRWNobyBzaG9ydCBoZWxwIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgotIGZ1bmNfdXNhZ2UgKCkKLSB7Ci0tICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC9eIyAgKi1oLyB7Ci0rICAgICRvcHRfZGVidWcKLSsKLSsgICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sL14jICAqLiotLWhlbHAvIHsKLSAgICAgICAgIHMvXiMgLy8KLSAJcy9eIyAqJC8vCi0gCXMvXCRwcm9nbmFtZS8nJHByb2duYW1lJy8KLUBAIC03MDEsNyArNzU4LDEwIEBAIGZ1bmNfdXNhZ2UgKCkKLSAjIHVubGVzcyAnbm9leGl0JyBpcyBwYXNzZWQgYXMgYXJndW1lbnQuCi0gZnVuY19oZWxwICgpCi0gewotKyAgICAkb3B0X2RlYnVnCi0rCi0gICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC8jIFJlcG9ydCBidWdzIHRvLyB7Ci0rCTpwcmludAotICAgICAgICAgcy9eIyAvLwotIAlzL14jICokLy8KLSAJcypcJHByb2duYW1lKickcHJvZ25hbWUnKgotQEAgLTcxNCw3ICs3NzQsMTEgQEAgZnVuY19oZWxwICgpCi0gCXMvXCRhdXRvbWFrZV92ZXJzaW9uLyciYChhdXRvbWFrZSAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLwotIAlzL1wkYXV0b2NvbmZfdmVyc2lvbi8nImAoYXV0b2NvbmYgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAiJy8KLSAJcAotLSAgICAgfScgPCAiJHByb2dwYXRoIgotKwlkCi0rICAgICB9Ci0rICAgICAvXiMgLiogaG9tZSBwYWdlOi9iIHByaW50Ci0rICAgICAvXiMgR2VuZXJhbCBoZWxwIHVzaW5nL2IgcHJpbnQKLSsgICAgICcgPCAiJHByb2dwYXRoIgotICAgICByZXQ9JD8KLSAgICAgaWYgdGVzdCAteiAiJDEiOyB0aGVuCi0gICAgICAgZXhpdCAkcmV0Ci1AQCAtNzI2LDEyICs3OTAsMzkgQEAgZnVuY19oZWxwICgpCi0gIyBleGl0X2NtZC4KLSBmdW5jX21pc3NpbmdfYXJnICgpCi0gewotLSAgICBmdW5jX2Vycm9yICJtaXNzaW5nIGFyZ3VtZW50IGZvciAkMSIKLSsgICAgJG9wdF9kZWJ1ZwotKwotKyAgICBmdW5jX2Vycm9yICJtaXNzaW5nIGFyZ3VtZW50IGZvciAkMS4iCi0gICAgIGV4aXRfY21kPWV4aXQKLSB9Ci0gCi0tZXhpdF9jbWQ9OgotIAotKyMgZnVuY19zcGxpdF9zaG9ydF9vcHQgc2hvcnRvcHQKLSsjIFNldCBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lIGFuZCBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcgc2hlbGwKLSsjIHZhcmlhYmxlcyBhZnRlciBzcGxpdHRpbmcgU0hPUlRPUFQgYWZ0ZXIgdGhlIDJuZCBjaGFyYWN0ZXIuCi0rZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkKLSt7Ci0rICAgIG15X3NlZF9zaG9ydF9vcHQ9JzFzL15cKC4uXCkuKiQvXDEvO3EnCi0rICAgIG15X3NlZF9zaG9ydF9yZXN0PScxcy9eLi5cKC4qXCkkL1wxLztxJwotKwotKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9zaG9ydF9vcHQiYAotKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX3Nob3J0X3Jlc3QiYAotK30gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsKLSsjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgbG9uZ29wdAotKyMgU2V0IGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZSBhbmQgZnVuY19zcGxpdF9sb25nX29wdF9hcmcgc2hlbGwKLSsjIHZhcmlhYmxlcyBhZnRlciBzcGxpdHRpbmcgTE9OR09QVCBhdCB0aGUgYD0nIHNpZ24uCi0rZnVuY19zcGxpdF9sb25nX29wdCAoKQotK3sKLSsgICAgbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtLVtePV0qXCk9LiovXDEvO3EnCi0rICAgIG15X3NlZF9sb25nX2FyZz0nMXMvXi0tW149XSo9Ly8nCi0rCi0rICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAotK30gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotK2V4aXRfY21kPToKLSAKLSAKLSAKLUBAIC03NDEsMjYgKzgzMiw2NCBAQCBtYWdpYz0iJSUlTUFHSUMgdmFyaWFibGUlJSUiCi0gbWFnaWNfZXhlPSIlJSVNQUdJQyBFWEUgdmFyaWFibGUlJSUiCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzLgotLSMgJG1vZGUgaXMgdW5zZXQKLSBub25vcHQ9Ci0tZXhlY3V0ZV9kbGZpbGVzPQotIHByZXNlcnZlX2FyZ3M9Ci0gbG8ybz0icy9cXC5sb1wkLy4ke29iamV4dH0vIgotIG8ybG89InMvXFwuJHtvYmpleHR9XCQvLmxvLyIKLSBleHRyYWN0ZWRfYXJjaGl2ZXM9Ci0gZXh0cmFjdGVkX3NlcmlhbD0wCi0gCi0tb3B0X2RyeV9ydW49ZmFsc2UKLS1vcHRfZmluaXNoPToKLS1vcHRfZHVwbGljYXRlX2RlcHM9ZmFsc2UKLS1vcHRfc2lsZW50PWZhbHNlCi0tb3B0X2RlYnVnPToKLS0KLSAjIElmIHRoaXMgdmFyaWFibGUgaXMgc2V0IGluIGFueSBvZiB0aGUgYWN0aW9ucywgdGhlIGNvbW1hbmQgaW4gaXQKLSAjIHdpbGwgYmUgZXhlY2VkIGF0IHRoZSBlbmQuICBUaGlzIHByZXZlbnRzIGhlcmUtZG9jdW1lbnRzIGZyb20gYmVpbmcKLSAjIGxlZnQgb3ZlciBieSBzaGVsbHMuCi0gZXhlY19jbWQ9Ci0gCi0rIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLSsjIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLStmdW5jX2FwcGVuZCAoKQotK3sKLSsgICAgZXZhbCAiJHsxfT1cJCR7MX1cJHsyfSIKLSt9ICMgZnVuY19hcHBlbmQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rIyBmdW5jX2FwcGVuZF9xdW90ZWQgdmFyIHZhbHVlCi0rIyBRdW90ZSBWQUxVRSBhbmQgYXBwZW5kIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLCBzZXBhcmF0ZWQKLSsjIGJ5IGEgc3BhY2UuCi0rZnVuY19hcHBlbmRfcXVvdGVkICgpCi0rewotKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IgotKyAgICBldmFsICIkezF9PVwkJHsxfVxcIFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rfSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsKLSsjIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0rZnVuY19hcml0aCAoKQotK3sKLSsgICAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiR7QH0iYAotK30gIyBmdW5jX2FyaXRoIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKwotKyMgZnVuY19sZW4gc3RyaW5nCi0rIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotK2Z1bmNfbGVuICgpCi0rewotKyAgICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiR7MX0iIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLSt9ICMgZnVuY19sZW4gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0rIyBmdW5jX2xvMm8gb2JqZWN0Ci0rZnVuY19sbzJvICgpCi0rewotKyAgICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCi0rfSAjIGZ1bmNfbG8ybyBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsKLSsjIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotK2Z1bmNfeGZvcm0gKCkKLSt7Ci0rICAgIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAotK30gIyBmdW5jX3hmb3JtIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKwotICMgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uIGFyZy4uLgotICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvciwgZm9sbG93ZWQgYnkKLSAjIGEgY29uZmlndXJhdGlvbiBmYWlsdXJlIGhpbnQsIGFuZCBleGl0LgotQEAgLTg1MCwxMzAgKzk3OSwyMDQgQEAgZnVuY19lbmFibGVfdGFnICgpCi0gICBlc2FjCi0gfQotIAotLSMgUGFyc2Ugb3B0aW9ucyBvbmNlLCB0aG9yb3VnaGx5LiAgVGhpcyBjb21lcyBhcyBzb29uIGFzIHBvc3NpYmxlIGluCi0tIyB0aGUgc2NyaXB0IHRvIG1ha2UgdGhpbmdzIGxpa2UgYGxpYnRvb2wgLS12ZXJzaW9uJyBoYXBwZW4gcXVpY2tseS4KLSsjIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAotKyMgRW5zdXJlIHRoYXQgd2UgYXJlIHVzaW5nIG00IG1hY3JvcywgYW5kIGxpYnRvb2wgc2NyaXB0IGZyb20gdGhlIHNhbWUKLSsjIHJlbGVhc2Ugb2YgbGlidG9vbC4KLStmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2ggKCkKLSB7Ci0rICBpZiB0ZXN0ICIkcGFja2FnZV9yZXZpc2lvbiIgIT0gIiRtYWNyb19yZXZpc2lvbiI7IHRoZW4KLSsgICAgaWYgdGVzdCAiJFZFUlNJT04iICE9ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KLSsgICAgICBpZiB0ZXN0IC16ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KLSsgICAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCi0rJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQotKyRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSBhbiBvbGRlciByZWxlYXNlLgotKyRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gJFBBQ0tBR0UgJFZFUlNJT04KLSskcHJvZ25hbWU6IGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCi0rX0xUX0VPRgotKyAgICAgIGVsc2UKLSsgICAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCi0rJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQotKyRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSAkUEFDS0FHRSAkbWFjcm9fdmVyc2lvbi4KLSskcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCi0rJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgotK19MVF9FT0YKLSsgICAgICBmaQotKyAgICBlbHNlCi0rICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKLSskcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCByZXZpc2lvbiAkcGFja2FnZV9yZXZpc2lvbiwKLSskcHJvZ25hbWU6IGJ1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSByZXZpc2lvbiAkbWFjcm9fcmV2aXNpb24uCi0rJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSByZXZpc2lvbiAkcGFja2FnZV9yZXZpc2lvbgotKyRwcm9nbmFtZTogb2YgJFBBQ0tBR0UgJFZFUlNJT04gYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KLStfTFRfRU9GCi0rICAgIGZpCi0gCi0tICAjIFNob3J0aGFuZCBmb3IgLS1tb2RlPWZvbywgb25seSB2YWxpZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKLS0gIGNhc2UgJDEgaW4KLS0gIGNsZWFufGNsZWF8Y2xlfGNsKQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjbGVhbiAkezErIiRAIn07IHNoaWZ0Ci0tICAgIDs7Ci0tICBjb21waWxlfGNvbXBpbHxjb21waXxjb21wfGNvbXxjb3xjKQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjb21waWxlICR7MSsiJEAifTsgc2hpZnQKLS0gICAgOzsKLS0gIGV4ZWN1dGV8ZXhlY3V0fGV4ZWN1fGV4ZWN8ZXhlfGV4fGUpCi0tICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGV4ZWN1dGUgJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgZmluaXNofGZpbmlzfGZpbml8ZmlufGZpfGYpCi0tICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0Ci0tICAgIDs7Ci0tICBpbnN0YWxsfGluc3RhbHxpbnN0YXxpbnN0fGluc3xpbnxpKQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBpbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKLS0gICAgOzsKLS0gIGxpbmt8bGlufGxpfGwpCi0tICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGxpbmsgJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgdW5pbnN0YWxsfHVuaW5zdGFsfHVuaW5zdGF8dW5pbnN0fHVuaW5zfHVuaW58dW5pfHVufHUpCi0tICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0Ci0tICAgIDs7Ci0tICBlc2FjCi0rICAgIGV4aXQgJEVYSVRfTUlTTUFUQ0gKLSsgIGZpCi0rfQotKwotKwotKyMgU2hvcnRoYW5kIGZvciAtLW1vZGU9Zm9vLCBvbmx5IHZhbGlkIGFzIHRoZSBmaXJzdCBhcmd1bWVudAotK2Nhc2UgJDEgaW4KLStjbGVhbnxjbGVhfGNsZXxjbCkKLSsgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNsZWFuICR7MSsiJEAifTsgc2hpZnQKLSsgIDs7Ci0rY29tcGlsZXxjb21waWx8Y29tcGl8Y29tcHxjb218Y298YykKLSsgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNvbXBpbGUgJHsxKyIkQCJ9OyBzaGlmdAotKyAgOzsKLStleGVjdXRlfGV4ZWN1dHxleGVjdXxleGVjfGV4ZXxleHxlKQotKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZXhlY3V0ZSAkezErIiRAIn07IHNoaWZ0Ci0rICA7OwotK2ZpbmlzaHxmaW5pc3xmaW5pfGZpbnxmaXxmKQotKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKLSsgIDs7Ci0raW5zdGFsbHxpbnN0YWx8aW5zdGF8aW5zdHxpbnN8aW58aSkKLSsgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAotKyAgOzsKLStsaW5rfGxpbnxsaXxsKQotKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgbGluayAkezErIiRAIn07IHNoaWZ0Ci0rICA7OwotK3VuaW5zdGFsbHx1bmluc3RhbHx1bmluc3RhfHVuaW5zdHx1bmluc3x1bmlufHVuaXx1bnx1KQotKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgdW5pbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKLSsgIDs7Ci0rZXNhYwotIAotLSAgIyBQYXJzZSBub24tbW9kZSBzcGVjaWZpYyBhcmd1bWVudHM6Ci0tICB3aGlsZSB0ZXN0ICIkIyIgLWd0IDA7IGRvCi0rCi0rCi0rIyBPcHRpb24gZGVmYXVsdHM6Ci0rb3B0X2RlYnVnPToKLStvcHRfZHJ5X3J1bj1mYWxzZQotK29wdF9jb25maWc9ZmFsc2UKLStvcHRfcHJlc2VydmVfZHVwX2RlcHM9ZmFsc2UKLStvcHRfZmVhdHVyZXM9ZmFsc2UKLStvcHRfZmluaXNoPWZhbHNlCi0rb3B0X2hlbHA9ZmFsc2UKLStvcHRfaGVscF9hbGw9ZmFsc2UKLStvcHRfc2lsZW50PToKLStvcHRfdmVyYm9zZT06Ci0rb3B0X3NpbGVudD1mYWxzZQotK29wdF92ZXJib3NlPWZhbHNlCi0rCi0rCi0rIyBQYXJzZSBvcHRpb25zIG9uY2UsIHRob3JvdWdobHkuICBUaGlzIGNvbWVzIGFzIHNvb24gYXMgcG9zc2libGUgaW4gdGhlCi0rIyBzY3JpcHQgdG8gbWFrZSB0aGluZ3MgbGlrZSBgLS12ZXJzaW9uJyBoYXBwZW4gYXMgcXVpY2tseSBhcyB3ZSBjYW4uCi0rewotKyAgIyB0aGlzIGp1c3QgZWFzZXMgZXhpdCBoYW5kbGluZwotKyAgd2hpbGUgdGVzdCAkIyAtZ3QgMDsgZG8KLSAgICAgb3B0PSIkMSIKLSAgICAgc2hpZnQKLS0KLSAgICAgY2FzZSAkb3B0IGluCi0tICAgICAgLS1jb25maWcpCQlmdW5jX2NvbmZpZwkJCQkJOzsKLS0KLS0gICAgICAtLWRlYnVnKQkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKLSsgICAgICAtLWRlYnVnfC14KQlvcHRfZGVidWc9J3NldCAteCcKLSAJCQlmdW5jX2VjaG8gImVuYWJsaW5nIHNoZWxsIHRyYWNlIG1vZGUiCi0tCQkJb3B0X2RlYnVnPSdzZXQgLXgnCi0gCQkJJG9wdF9kZWJ1ZwotIAkJCTs7Ci0tCi0tICAgICAgLWRsb3BlbikJCXRlc3QgIiQjIiAtZXEgMCAmJiBmdW5jX21pc3NpbmdfYXJnICIkb3B0IiAmJiBicmVhawotLQkJCWV4ZWN1dGVfZGxmaWxlcz0iJGV4ZWN1dGVfZGxmaWxlcyAkMSIKLS0JCQlzaGlmdAotKyAgICAgIC0tZHJ5LXJ1bnwtLWRyeXJ1bnwtbikKLSsJCQlvcHRfZHJ5X3J1bj06Ci0gCQkJOzsKLS0KLS0gICAgICAtLWRyeS1ydW4gfCAtbikJb3B0X2RyeV9ydW49OgkJCQkJOzsKLS0gICAgICAtLWZlYXR1cmVzKSAgICAgICBmdW5jX2ZlYXR1cmVzCQkJCQk7OwotLSAgICAgIC0tZmluaXNoKQkJbW9kZT0iZmluaXNoIgkJCQkJOzsKLS0gICAgICAtLW5vLWZpbmlzaCkJb3B0X2ZpbmlzaD1mYWxzZQkJCQk7OwotLQotLSAgICAgIC0tbW9kZSkJCXRlc3QgIiQjIiAtZXEgMCAmJiBmdW5jX21pc3NpbmdfYXJnICIkb3B0IiAmJiBicmVhawotLQkJCWNhc2UgJDEgaW4KLS0JCQkgICMgVmFsaWQgbW9kZSBhcmd1bWVudHM6Ci0tCQkJICBjbGVhbikJOzsKLS0JCQkgIGNvbXBpbGUpCTs7Ci0tCQkJICBleGVjdXRlKQk7OwotLQkJCSAgZmluaXNoKQk7OwotLQkJCSAgaW5zdGFsbCkJOzsKLS0JCQkgIGxpbmspCQk7OwotLQkJCSAgcmVsaW5rKQk7OwotLQkJCSAgdW5pbnN0YWxsKQk7OwotLQotLQkJCSAgIyBDYXRjaCBhbnl0aGluZyBlbHNlIGFzIGFuIGVycm9yCi0tCQkJICAqKSBmdW5jX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IGZvciAkb3B0IgotLQkJCSAgICAgZXhpdF9jbWQ9ZXhpdAotLQkJCSAgICAgYnJlYWsKLS0JCQkgICAgIDs7Ci0tCQkgICAgICAgIGVzYWMKLS0KLS0JCQltb2RlPSIkMSIKLSsgICAgICAtLWNvbmZpZykKLSsJCQlvcHRfY29uZmlnPToKLStmdW5jX2NvbmZpZwotKwkJCTs7Ci0rICAgICAgLS1kbG9wZW58LWRsb3BlbikKLSsJCQlvcHRhcmc9IiQxIgotKwkJCW9wdF9kbG9wZW49IiR7b3B0X2Rsb3Blbiskb3B0X2Rsb3BlbgotK30kb3B0YXJnIgotIAkJCXNoaWZ0Ci0gCQkJOzsKLS0KLSAgICAgICAtLXByZXNlcnZlLWR1cC1kZXBzKQotLQkJCW9wdF9kdXBsaWNhdGVfZGVwcz06CQkJCTs7Ci0tCi0tICAgICAgLS1xdWlldHwtLXNpbGVudCkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKLS0JCQlvcHRfc2lsZW50PToKLS0JCQlvcHRfdmVyYm9zZT1mYWxzZQotKwkJCW9wdF9wcmVzZXJ2ZV9kdXBfZGVwcz06Ci0gCQkJOzsKLS0KLS0gICAgICAtLW5vLXF1aWV0fC0tbm8tc2lsZW50KQotLQkJCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0tCQkJb3B0X3NpbGVudD1mYWxzZQotKyAgICAgIC0tZmVhdHVyZXMpCi0rCQkJb3B0X2ZlYXR1cmVzPToKLStmdW5jX2ZlYXR1cmVzCi0gCQkJOzsKLS0KLS0gICAgICAtLXZlcmJvc2V8IC12KQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgotKyAgICAgIC0tZmluaXNoKQotKwkJCW9wdF9maW5pc2g9OgotK3NldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKLSsJCQk7OwotKyAgICAgIC0taGVscCkKLSsJCQlvcHRfaGVscD06Ci0rCQkJOzsKLSsgICAgICAtLWhlbHAtYWxsKQotKwkJCW9wdF9oZWxwX2FsbD06Ci0rb3B0X2hlbHA9JzogaGVscC1hbGwnCi0rCQkJOzsKLSsgICAgICAtLW1vZGUpCi0rCQkJdGVzdCAkIyA9IDAgJiYgZnVuY19taXNzaW5nX2FyZyAkb3B0ICYmIGJyZWFrCi0rCQkJb3B0YXJnPSIkMSIKLSsJCQlvcHRfbW9kZT0iJG9wdGFyZyIKLStjYXNlICRvcHRhcmcgaW4KLSsgICMgVmFsaWQgbW9kZSBhcmd1bWVudHM6Ci0rICBjbGVhbnxjb21waWxlfGV4ZWN1dGV8ZmluaXNofGluc3RhbGx8bGlua3xyZWxpbmt8dW5pbnN0YWxsKSA7OwotKwotKyAgIyBDYXRjaCBhbnl0aGluZyBlbHNlIGFzIGFuIGVycm9yCi0rICAqKSBmdW5jX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IGZvciAkb3B0IgotKyAgICAgZXhpdF9jbWQ9ZXhpdAotKyAgICAgYnJlYWsKLSsgICAgIDs7Ci0rZXNhYwotKwkJCXNoaWZ0Ci0rCQkJOzsKLSsgICAgICAtLW5vLXNpbGVudHwtLW5vLXF1aWV0KQotIAkJCW9wdF9zaWxlbnQ9ZmFsc2UKLS0JCQlvcHRfdmVyYm9zZT06Ci0rZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCi0gCQkJOzsKLS0KLS0gICAgICAtLW5vLXZlcmJvc2UpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0rICAgICAgLS1uby12ZXJib3NlKQotIAkJCW9wdF92ZXJib3NlPWZhbHNlCi0rZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCi0gCQkJOzsKLS0KLS0gICAgICAtLXRhZykJCXRlc3QgIiQjIiAtZXEgMCAmJiBmdW5jX21pc3NpbmdfYXJnICIkb3B0IiAmJiBicmVhawotLQkJCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQgJDEiCi0tCQkJZnVuY19lbmFibGVfdGFnICIkMSIJIyB0YWduYW1lIGlzIHNldCBoZXJlCi0rICAgICAgLS1zaWxlbnR8LS1xdWlldCkKLSsJCQlvcHRfc2lsZW50PToKLStmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKLSsgICAgICAgIG9wdF92ZXJib3NlPWZhbHNlCi0rCQkJOzsKLSsgICAgICAtLXZlcmJvc2V8LXYpCi0rCQkJb3B0X3ZlcmJvc2U9OgotK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgotK29wdF9zaWxlbnQ9ZmFsc2UKLSsJCQk7OwotKyAgICAgIC0tdGFnKQotKwkJCXRlc3QgJCMgPSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgJG9wdCAmJiBicmVhawotKwkJCW9wdGFyZz0iJDEiCi0rCQkJb3B0X3RhZz0iJG9wdGFyZyIKLStmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCAkb3B0YXJnIgotK2Z1bmNfZW5hYmxlX3RhZyAiJG9wdGFyZyIKLSAJCQlzaGlmdAotIAkJCTs7Ci0gCi0rICAgICAgLVw/fC1oKQkJZnVuY191c2FnZQkJCQk7OwotKyAgICAgIC0taGVscCkJCWZ1bmNfaGVscAkJCQk7OwotKyAgICAgIC0tdmVyc2lvbikJZnVuY192ZXJzaW9uCQkJCTs7Ci0rCi0gICAgICAgIyBTZXBhcmF0ZSBvcHRhcmdzIHRvIGxvbmcgb3B0aW9uczoKLS0gICAgICAtZGxvcGVuPSp8LS1tb2RlPSp8LS10YWc9KikKLS0JCQlmdW5jX29wdF9zcGxpdCAiJG9wdCIKLS0JCQlzZXQgZHVtbXkgIiRmdW5jX29wdF9zcGxpdF9vcHQiICIkZnVuY19vcHRfc3BsaXRfYXJnIiAkezErIiRAIn0KLSsgICAgICAtLSo9KikKLSsJCQlmdW5jX3NwbGl0X2xvbmdfb3B0ICIkb3B0IgotKwkJCXNldCBkdW1teSAiJGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZSIgIiRmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZyIgJHsxKyIkQCJ9Ci0gCQkJc2hpZnQKLSAJCQk7OwotIAotLSAgICAgIC1cP3wtaCkJCWZ1bmNfdXNhZ2UJCQkJCTs7Ci0tICAgICAgLS1oZWxwKQkJb3B0X2hlbHA9OgkJCQkJOzsKLS0gICAgICAtLWhlbHAtYWxsKQlvcHRfaGVscD0nOiBoZWxwLWFsbCcJCQkJOzsKLS0gICAgICAtLXZlcnNpb24pCWZ1bmNfdmVyc2lvbgkJCQkJOzsKLS0KLS0gICAgICAtKikJCWZ1bmNfZmF0YWxfaGVscCAidW5yZWNvZ25pemVkIG9wdGlvbiBcYCRvcHQnIgk7OwotLQotLSAgICAgICopCQlub25vcHQ9IiRvcHQiCi0tCQkJYnJlYWsKLSsgICAgICAjIFNlcGFyYXRlIG5vbi1hcmd1bWVudCBzaG9ydCBvcHRpb25zOgotKyAgICAgIC1cPyp8LWgqfC1uKnwtdiopCi0rCQkJZnVuY19zcGxpdF9zaG9ydF9vcHQgIiRvcHQiCi0rCQkJc2V0IGR1bW15ICIkZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZSIgIi0kZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIiAkezErIiRAIn0KLSsJCQlzaGlmdAotIAkJCTs7Ci0rCi0rICAgICAgLS0pCQlicmVhawkJCQkJOzsKLSsgICAgICAtKikJCWZ1bmNfZmF0YWxfaGVscCAidW5yZWNvZ25pemVkIG9wdGlvbiBcYCRvcHQnIiA7OwotKyAgICAgICopCQlzZXQgZHVtbXkgIiRvcHQiICR7MSsiJEAifTsJc2hpZnQ7IGJyZWFrICA7OwotICAgICBlc2FjCi0gICBkb25lCi0gCi0rICAjIFZhbGlkYXRlIG9wdGlvbnM6Ci0rCi0rICAjIHNhdmUgZmlyc3Qgbm9uLW9wdGlvbiBhcmd1bWVudAotKyAgaWYgdGVzdCAiJCMiIC1ndCAwOyB0aGVuCi0rICAgIG5vbm9wdD0iJG9wdCIKLSsgICAgc2hpZnQKLSsgIGZpCi0rCi0rICAjIHByZXNlcnZlIC0tZGVidWcKLSsgIHRlc3QgIiRvcHRfZGVidWciID0gOiB8fCBmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgLS1kZWJ1ZyIKLSAKLSAgIGNhc2UgJGhvc3QgaW4KLSAgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKnB3MzIqIHwgKmNlZ2NjKiB8ICpzb2xhcmlzMiogKQotQEAgLTk4MSw4MiArMTE4NCw0NCBAQCBmdW5jX2VuYWJsZV90YWcgKCkKLSAgICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPToKLSAgICAgICA7OwotICAgICAqKQotLSAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9JG9wdF9kdXBsaWNhdGVfZGVwcwotKyAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9JG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcwotICAgICAgIDs7Ci0gICBlc2FjCi0gCi0tICAjIEhhdmluZyB3YXJuZWQgYWJvdXQgYWxsIG1pcy1zcGVjaWZpZWQgb3B0aW9ucywgYmFpbCBvdXQgaWYKLS0gICMgYW55dGhpbmcgd2FzIHdyb25nLgotLSAgJGV4aXRfY21kICRFWElUX0ZBSUxVUkUKLS19Ci0rICAkb3B0X2hlbHAgfHwgewotKyAgICAjIFNhbml0eSBjaGVja3MgZmlyc3Q6Ci0rICAgIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAotIAotLSMgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCi0tIyBFbnN1cmUgdGhhdCB3ZSBhcmUgdXNpbmcgbTQgbWFjcm9zLCBhbmQgbGlidG9vbCBzY3JpcHQgZnJvbSB0aGUgc2FtZQotLSMgcmVsZWFzZSBvZiBsaWJ0b29sLgotLWZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaCAoKQotLXsKLS0gIGlmIHRlc3QgIiRwYWNrYWdlX3JldmlzaW9uIiAhPSAiJG1hY3JvX3JldmlzaW9uIjsgdGhlbgotLSAgICBpZiB0ZXN0ICIkVkVSU0lPTiIgIT0gIiRtYWNyb192ZXJzaW9uIjsgdGhlbgotLSAgICAgIGlmIHRlc3QgLXogIiRtYWNyb192ZXJzaW9uIjsgdGhlbgotLSAgICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKLS0kcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCBidXQgdGhlCi0tJHByb2duYW1lOiBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tIGFuIG9sZGVyIHJlbGVhc2UuCi0tJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgotLSRwcm9nbmFtZTogYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KLS1fTFRfRU9GCi0tICAgICAgZWxzZQotLSAgICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKLS0kcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCBidXQgdGhlCi0tJHByb2duYW1lOiBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tICRQQUNLQUdFICRtYWNyb192ZXJzaW9uLgotLSRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gJFBBQ0tBR0UgJFZFUlNJT04KLS0kcHJvZ25hbWU6IGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCi0tX0xUX0VPRgotLSAgICAgIGZpCi0tICAgIGVsc2UKLS0gICAgICBjYXQgPiYyIDw8X0xUX0VPRgotLSRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIHJldmlzaW9uICRwYWNrYWdlX3JldmlzaW9uLAotLSRwcm9nbmFtZTogYnV0IHRoZSBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tIHJldmlzaW9uICRtYWNyb19yZXZpc2lvbi4KLS0kcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tIHJldmlzaW9uICRwYWNrYWdlX3JldmlzaW9uCi0tJHByb2duYW1lOiBvZiAkUEFDS0FHRSAkVkVSU0lPTiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgotLV9MVF9FT0YKLSsgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgIT0geWVzOyB0aGVuCi0rICAgICAgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICJub3QgY29uZmlndXJlZCB0byBidWlsZCBhbnkga2luZCBvZiBsaWJyYXJ5IgotICAgICBmaQotIAotLSAgICBleGl0ICRFWElUX01JU01BVENICi0tICBmaQotLX0KLS0KLSsgICAgIyBEYXJ3aW4gc3Vja3MKLSsgICAgZXZhbCBzdGRfc2hyZXh0PVwiJHNocmV4dF9jbWRzXCIKLSAKLS0jIyAtLS0tLS0tLS0tLSAjIwotLSMjICAgIE1haW4uICAgICMjCi0tIyMgLS0tLS0tLS0tLS0gIyMKLS0KLS0kb3B0X2hlbHAgfHwgewotLSAgIyBTYW5pdHkgY2hlY2tzIGZpcnN0OgotLSAgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCi0tCi0tICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiAhPSB5ZXM7IHRoZW4KLS0gICAgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICJub3QgY29uZmlndXJlZCB0byBidWlsZCBhbnkga2luZCBvZiBsaWJyYXJ5IgotLSAgZmkKLSsgICAgIyBPbmx5IGV4ZWN1dGUgbW9kZSBpcyBhbGxvd2VkIHRvIGhhdmUgLWRsb3BlbiBmbGFncy4KLSsgICAgaWYgdGVzdCAtbiAiJG9wdF9kbG9wZW4iICYmIHRlc3QgIiRvcHRfbW9kZSIgIT0gZXhlY3V0ZTsgdGhlbgotKyAgICAgIGZ1bmNfZXJyb3IgInVucmVjb2duaXplZCBvcHRpb24gXGAtZGxvcGVuJyIKLSsgICAgICAkRUNITyAiJGhlbHAiIDE+JjIKLSsgICAgICBleGl0ICRFWElUX0ZBSUxVUkUKLSsgICAgZmkKLSAKLS0gIHRlc3QgLXogIiRtb2RlIiAmJiBmdW5jX2ZhdGFsX2Vycm9yICJlcnJvcjogeW91IG11c3Qgc3BlY2lmeSBhIE1PREUuIgotKyAgICAjIENoYW5nZSB0aGUgaGVscCBtZXNzYWdlIHRvIGEgbW9kZS1zcGVjaWZpYyBvbmUuCi0rICAgIGdlbmVyaWNfaGVscD0iJGhlbHAiCi0rICAgIGhlbHA9IlRyeSBcYCRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPSRvcHRfbW9kZScgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgotKyAgfQotIAotIAotLSAgIyBEYXJ3aW4gc3Vja3MKLS0gIGV2YWwgInN0ZF9zaHJleHQ9XCIkc2hyZXh0X2NtZHNcIiIKLSsgICMgQmFpbCBpZiB0aGUgb3B0aW9ucyB3ZXJlIHNjcmV3ZWQKLSsgICRleGl0X2NtZCAkRVhJVF9GQUlMVVJFCi0rfQotIAotIAotLSAgIyBPbmx5IGV4ZWN1dGUgbW9kZSBpcyBhbGxvd2VkIHRvIGhhdmUgLWRsb3BlbiBmbGFncy4KLS0gIGlmIHRlc3QgLW4gIiRleGVjdXRlX2RsZmlsZXMiICYmIHRlc3QgIiRtb2RlIiAhPSBleGVjdXRlOyB0aGVuCi0tICAgIGZ1bmNfZXJyb3IgInVucmVjb2duaXplZCBvcHRpb24gXGAtZGxvcGVuJyIKLS0gICAgJEVDSE8gIiRoZWxwIiAxPiYyCi0tICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotLSAgZmkKLSAKLS0gICMgQ2hhbmdlIHRoZSBoZWxwIG1lc3NhZ2UgdG8gYSBtb2RlLXNwZWNpZmljIG9uZS4KLS0gIGdlbmVyaWNfaGVscD0iJGhlbHAiCi0tICBoZWxwPSJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwIC0tbW9kZT0kbW9kZScgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgotLX0KLSAKLSsjIyAtLS0tLS0tLS0tLSAjIwotKyMjICAgIE1haW4uICAgICMjCi0rIyMgLS0tLS0tLS0tLS0gIyMKLSAKLSAjIGZ1bmNfbGFsaWJfcCBmaWxlCi0gIyBUcnVlIGlmZiBGSUxFIGlzIGEgbGlidG9vbCBgLmxhJyBsaWJyYXJ5IG9yIGAubG8nIG9iamVjdCBmaWxlLgotQEAgLTExMjEsMTIgKzEyODYsOSBAQCBmdW5jX2x0d3JhcHBlcl9leGVjdXRhYmxlX3AgKCkKLSAjIHRlbXBvcmFyeSBsdHdyYXBwZXJfc2NyaXB0LgotIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWUgKCkKLSB7Ci0tICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIiCi0tICAgIGlmIGZ1bmNfbHR3cmFwcGVyX2V4ZWN1dGFibGVfcCAiJDEiOyB0aGVuCi0tCWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiQxIiAiIiAiLiIKLS0JZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tCWZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdC8kb2JqZGlyLyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fV9sdHNod3JhcHBlciIKLS0gICAgZmkKLSsgICAgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJDEiICIiICIuIgotKyAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLSsgICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0LyRvYmpkaXIvJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9X2x0c2h3cmFwcGVyIgotIH0KLSAKLSAjIGZ1bmNfbHR3cmFwcGVyX3AgZmlsZQotQEAgLTExNDksNyArMTMxMSw3IEBAIGZ1bmNfZXhlY3V0ZV9jbWRzICgpCi0gICAgIHNhdmVfaWZzPSRJRlM7IElGUz0nficKLSAgICAgZm9yIGNtZCBpbiAkMTsgZG8KLSAgICAgICBJRlM9JHNhdmVfaWZzCi0tICAgICAgZXZhbCAiY21kPVwiJGNtZFwiIgotKyAgICAgIGV2YWwgY21kPVwiJGNtZFwiCi0gICAgICAgZnVuY19zaG93X2V2YWwgIiRjbWQiICIkezItOn0iCi0gICAgIGRvbmUKLSAgICAgSUZTPSRzYXZlX2lmcwotQEAgLTExNzIsNiArMTMzNCwzNyBAQCBmdW5jX3NvdXJjZSAoKQotIH0KLSAKLSAKLSsjIGZ1bmNfcmVzb2x2ZV9zeXNyb290IFBBVEgKLSsjIFJlcGxhY2UgYSBsZWFkaW5nID0gaW4gUEFUSCB3aXRoIGEgc3lzcm9vdC4gIFN0b3JlIHRoZSByZXN1bHQgaW50bwotKyMgZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0Ci0rZnVuY19yZXNvbHZlX3N5c3Jvb3QgKCkKLSt7Ci0rICBmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQ9JDEKLSsgIGNhc2UgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCBpbgotKyAgPSopCi0rICAgIGZ1bmNfc3RyaXBuYW1lICc9JyAnJyAiJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKLSsgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0PSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKyAgICA7OwotKyAgZXNhYwotK30KLSsKLSsjIGZ1bmNfcmVwbGFjZV9zeXNyb290IFBBVEgKLSsjIElmIFBBVEggYmVnaW5zIHdpdGggdGhlIHN5c3Jvb3QsIHJlcGxhY2UgaXQgd2l0aCA9IGFuZAotKyMgc3RvcmUgdGhlIHJlc3VsdCBpbnRvIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdC4KLStmdW5jX3JlcGxhY2Vfc3lzcm9vdCAoKQotK3sKLSsgIGNhc2UgIiRsdF9zeXNyb290OiQxIiBpbgotKyAgPyo6IiRsdF9zeXNyb290IiopCi0rICAgIGZ1bmNfc3RyaXBuYW1lICIkbHRfc3lzcm9vdCIgJycgIiQxIgotKyAgICBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQ9Ij0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKyAgICA7OwotKyAgKikKLSsgICAgIyBJbmNsdWRpbmcgbm8gc3lzcm9vdC4KLSsgICAgZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0PSQxCi0rICAgIDs7Ci0rICBlc2FjCi0rfQotKwotICMgZnVuY19pbmZlcl90YWcgYXJnCi0gIyBJbmZlciB0YWdnZWQgY29uZmlndXJhdGlvbiB0byB1c2UgaWYgYW55IGFyZSBhdmFpbGFibGUgYW5kCi0gIyBpZiBvbmUgd2Fzbid0IGNob3NlbiB2aWEgdGhlICItLXRhZyIgY29tbWFuZCBsaW5lIG9wdGlvbi4KLUBAIC0xMTg0LDggKzEzNzcsNyBAQCBmdW5jX2luZmVyX3RhZyAoKQotICAgICBpZiB0ZXN0IC1uICIkYXZhaWxhYmxlX3RhZ3MiICYmIHRlc3QgLXogIiR0YWduYW1lIjsgdGhlbgotICAgICAgIENDX3F1b3RlZD0KLSAgICAgICBmb3IgYXJnIGluICRDQzsgZG8KLS0gICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0tCUNDX3F1b3RlZD0iJENDX3F1b3RlZCAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rCWZ1bmNfYXBwZW5kX3F1b3RlZCBDQ19xdW90ZWQgIiRhcmciCi0gICAgICAgZG9uZQotICAgICAgIENDX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ2AKLSAgICAgICBDQ19xdW90ZWRfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDX3F1b3RlZGAKLUBAIC0xMjA0LDggKzEzOTYsNyBAQCBmdW5jX2luZmVyX3RhZyAoKQotIAkgICAgQ0NfcXVvdGVkPQotIAkgICAgZm9yIGFyZyBpbiAkQ0M7IGRvCi0gCSAgICAgICMgRG91YmxlLXF1b3RlIGFyZ3MgY29udGFpbmluZyBvdGhlciBzaGVsbCBtZXRhY2hhcmFjdGVycy4KLS0JICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLS0JICAgICAgQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIENDX3F1b3RlZCAiJGFyZyIKLSAJICAgIGRvbmUKLSAJICAgIENDX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ2AKLSAJICAgIENDX3F1b3RlZF9leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NfcXVvdGVkYAotQEAgLTEyNzQsNiArMTQ2NSw0ODYgQEAgRU9GCi0gICAgIH0KLSB9Ci0gCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIEZJTEUgTkFNRSBBTkQgUEFUSCBDT05WRVJTSU9OIEhFTFBFUiBGVU5DVElPTlMgIwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rCi0rIyBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyIEFSRwotKyMgSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb25zIHdoZW4gJGJ1aWxkIGlzICpuaXgsCi0rIyBhbmQgJGhvc3QgaXMgbWluZ3csIGN5Z3dpbiwgb3Igc29tZSBvdGhlciB3MzIgZW52aXJvbm1lbnQuIFJlbGllcyBvbiBhCi0rIyBjb3JyZWN0bHkgY29uZmlndXJlZCB3aW5lIGVudmlyb25tZW50IGF2YWlsYWJsZSwgd2l0aCB0aGUgd2luZXBhdGggcHJvZ3JhbQotKyMgaW4gJGJ1aWxkJ3MgJFBBVEguCi0rIwotKyMgQVJHIGlzIHRoZSAkYnVpbGQgZmlsZSBuYW1lIHRvIGJlIGNvbnZlcnRlZCB0byB3MzIgZm9ybWF0LgotKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiAkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQsIGFuZCB3aWxsCi0rIyBiZSBlbXB0eSBvbiBlcnJvciAob3Igd2hlbiBBUkcgaXMgZW1wdHkpCi0rZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICAjIFVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXMgbm90IGV4aXQgd2l0aCBhIG5vbi16ZXJvIGVycm9yIGNvZGUsIHNvIHdlCi0rICAgICMgYXJlIGZvcmNlZCB0byBjaGVjayB0aGUgY29udGVudHMgb2Ygc3Rkb3V0LiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlCi0rICAgICMgY29tbWFuZCBpcyBub3QgZm91bmQsIHRoZSBzaGVsbCB3aWxsIHNldCBhbiBleGl0IGNvZGUgb2YgMTI3IGFuZCBwcmludAotKyAgICAjICphbiBlcnJvciBtZXNzYWdlKiB0byBzdGRvdXQuIFNvIHdlIG11c3QgY2hlY2sgZm9yIGJvdGggZXJyb3IgY29kZSBvZgotKyAgICAjIHplcm8gQU5EIG5vbi1lbXB0eSBzdGRvdXQsIHdoaWNoIGV4cGxhaW5zIHRoZSBvZGQgY29uc3RydWN0aW9uOgotKyAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcD1gd2luZXBhdGggLXcgIiQxIiAyPi9kZXYvbnVsbGAKLSsgICAgaWYgdGVzdCAiJD8iIC1lcSAwICYmIHRlc3QgLW4gIiR7ZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl90bXB9IjsgdGhlbgotKyAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0PWAkRUNITyAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wIiB8Ci0rICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0rICAgIGVsc2UKLSsgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD0KLSsgICAgZmkKLSsgIGZpCi0rfQotKyMgZW5kOiBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyIEFSRwotKyMgSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgcGF0aCBjb252ZXJzaW9uIGZ1bmN0aW9ucyB3aGVuICRidWlsZCBpcyAqbml4LCBhbmQKLSsjICRob3N0IGlzIG1pbmd3LCBjeWd3aW4sIG9yIHNvbWUgb3RoZXIgdzMyIGVudmlyb25tZW50LiBSZWxpZXMgb24gYSBjb3JyZWN0bHkKLSsjIGNvbmZpZ3VyZWQgd2luZSBlbnZpcm9ubWVudCBhdmFpbGFibGUsIHdpdGggdGhlIHdpbmVwYXRoIHByb2dyYW0gaW4gJGJ1aWxkJ3MKLSsjICRQQVRILiBBc3N1bWVzIEFSRyBoYXMgbm8gbGVhZGluZyBvciB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzLgotKyMKLSsjIEFSRyBpcyBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCBmb3JtYXQgdG8gd2luMzIuCi0rIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluICRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdC4KLSsjIFVuY29udmVydGlibGUgZmlsZSAoZGlyZWN0b3J5KSBuYW1lcyBpbiBBUkcgYXJlIHNraXBwZWQ7IGlmIG5vIGRpcmVjdG9yeSBuYW1lcwotKyMgYXJlIGNvbnZlcnRpYmxlLCB0aGVuIHRoZSByZXN1bHQgbWF5IGJlIGVtcHR5LgotK2Z1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICAjIHVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXNuJ3QgY29udmVydCBwYXRocywgb25seSBmaWxlIG5hbWVzCi0rICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdD0iIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgIG9sZElGUz0kSUZTCi0rICAgIElGUz06Ci0rICAgIGZvciBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX2YgaW4gJDE7IGRvCi0rICAgICAgSUZTPSRvbGRJRlMKLSsgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9mIgotKyAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIgOyB0aGVuCi0rICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQiOyB0aGVuCi0rICAgICAgICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCi0rICAgICAgICBlbHNlCi0rICAgICAgICAgIGZ1bmNfYXBwZW5kIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0ICI7JGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICBkb25lCi0rICAgIElGUz0kb2xkSUZTCi0rICBmaQotK30KLSsjIGVuZDogZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMgotKwotKwotKyMgZnVuY19jeWdwYXRoIEFSR1MuLi4KLSsjIFdyYXBwZXIgYXJvdW5kIGNhbGxpbmcgdGhlIGN5Z3BhdGggcHJvZ3JhbSB2aWEgTFRfQ1lHUEFUSC4gVGhpcyBpcyB1c2VkIHdoZW4KLSsjIHdoZW4gKDEpICRidWlsZCBpcyAqbml4IGFuZCBDeWd3aW4gaXMgaG9zdGVkIHZpYSBhIHdpbmUgZW52aXJvbm1lbnQ7IG9yICgyKQotKyMgJGJ1aWxkIGlzIE1TWVMgYW5kICRob3N0IGlzIEN5Z3dpbiwgb3IgKDMpICRidWlsZCBpcyBDeWd3aW4uIEluIGNhc2UgKDEpIG9yCi0rIyAoMiksIHJldHVybnMgdGhlIEN5Z3dpbiBmaWxlIG5hbWUgb3IgcGF0aCBpbiBmdW5jX2N5Z3BhdGhfcmVzdWx0IChpbnB1dAotKyMgZmlsZSBuYW1lIG9yIHBhdGggaXMgYXNzdW1lZCB0byBiZSBpbiB3MzIgZm9ybWF0LCBhcyBwcmV2aW91c2x5IGNvbnZlcnRlZAotKyMgZnJvbSAkYnVpbGQncyAqbml4IG9yIE1TWVMgZm9ybWF0KS4gSW4gY2FzZSAoMyksIHJldHVybnMgdGhlIHczMiBmaWxlIG5hbWUKLSsjIG9yIHBhdGggaW4gZnVuY19jeWdwYXRoX3Jlc3VsdCAoaW5wdXQgZmlsZSBuYW1lIG9yIHBhdGggaXMgYXNzdW1lZCB0byBiZSBpbgotKyMgQ3lnd2luIGZvcm1hdCkuIFJldHVybnMgYW4gZW1wdHkgc3RyaW5nIG9uIGVycm9yLgotKyMKLSsjIEFSR1MgYXJlIHBhc3NlZCB0byBjeWdwYXRoLCB3aXRoIHRoZSBsYXN0IG9uZSBiZWluZyB0aGUgZmlsZSBuYW1lIG9yIHBhdGggdG8KLSsjIGJlIGNvbnZlcnRlZC4KLSsjCi0rIyBTcGVjaWZ5IHRoZSBhYnNvbHV0ZSAqbml4IChvciB3MzIpIG5hbWUgdG8gY3lncGF0aCBpbiB0aGUgTFRfQ1lHUEFUSAotKyMgZW52aXJvbm1lbnQgdmFyaWFibGU7IGRvIG5vdCBwdXQgaXQgaW4gJFBBVEguCi0rZnVuY19jeWdwYXRoICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgaWYgdGVzdCAtbiAiJExUX0NZR1BBVEgiICYmIHRlc3QgLWYgIiRMVF9DWUdQQVRIIjsgdGhlbgotKyAgICBmdW5jX2N5Z3BhdGhfcmVzdWx0PWAkTFRfQ1lHUEFUSCAiJEAiIDI+L2Rldi9udWxsYAotKyAgICBpZiB0ZXN0ICIkPyIgLW5lIDA7IHRoZW4KLSsgICAgICAjIG9uIGZhaWx1cmUsIGVuc3VyZSByZXN1bHQgaXMgZW1wdHkKLSsgICAgICBmdW5jX2N5Z3BhdGhfcmVzdWx0PQotKyAgICBmaQotKyAgZWxzZQotKyAgICBmdW5jX2N5Z3BhdGhfcmVzdWx0PQotKyAgICBmdW5jX2Vycm9yICJMVF9DWUdQQVRIIGlzIGVtcHR5IG9yIHNwZWNpZmllcyBub24tZXhpc3RlbnQgZmlsZTogXGAkTFRfQ1lHUEFUSCciCi0rICBmaQotK30KLSsjZW5kOiBmdW5jX2N5Z3BhdGgKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyIEFSRwotKyMgQ29udmVydCBmaWxlIG5hbWUgb3IgcGF0aCBBUkcgZnJvbSBNU1lTIGZvcm1hdCB0byB3MzIgZm9ybWF0LiAgUmV0dXJuCi0rIyByZXN1bHQgaW4gZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0LgotK2Z1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgIyBhd2t3YXJkOiBjbWQgYXBwZW5kcyBzcGFjZXMgdG8gcmVzdWx0Ci0rICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQ9YCggY21kIC8vYyBlY2hvICIkMSIgKSAyPi9kZXYvbnVsbCB8Ci0rICAgICRTRUQgLWUgJ3MvWyBdKiQvLycgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLSt9Ci0rI2VuZDogZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9maWxlX2NoZWNrIEFSRzEgQVJHMgotKyMgVmVyaWZ5IHRoYXQgQVJHMSAoYSBmaWxlIG5hbWUgaW4gJGJ1aWxkIGZvcm1hdCkgd2FzIGNvbnZlcnRlZCB0byAkaG9zdAotKyMgZm9ybWF0IGluIEFSRzIuIE90aGVyd2lzZSwgZW1pdCBhbiBlcnJvciBtZXNzYWdlLCBidXQgY29udGludWUgKHJlc2V0dGluZwotKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IHRvIEFSRzEpLgotK2Z1bmNfY29udmVydF9maWxlX2NoZWNrICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgaWYgdGVzdCAteiAiJDIiICYmIHRlc3QgLW4gIiQxIiA7IHRoZW4KLSsgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSBob3N0IGZpbGUgbmFtZSBjb3JyZXNwb25kaW5nIHRvIgotKyAgICBmdW5jX2Vycm9yICIgIFxgJDEnIgotKyAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKLSsgICAgIyBGYWxsYmFjazoKLSsgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKLSsgIGZpCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX2NoZWNrCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayBGUk9NX1BBVEhTRVAgVE9fUEFUSFNFUCBGUk9NX1BBVEggVE9fUEFUSAotKyMgVmVyaWZ5IHRoYXQgRlJPTV9QQVRIIChhIHBhdGggaW4gJGJ1aWxkIGZvcm1hdCkgd2FzIGNvbnZlcnRlZCB0byAkaG9zdAotKyMgZm9ybWF0IGluIFRPX1BBVEguIE90aGVyd2lzZSwgZW1pdCBhbiBlcnJvciBtZXNzYWdlLCBidXQgY29udGludWUsIHJlc2V0dGluZwotKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IHRvIGEgc2ltcGxpc3RpYyBmYWxsYmFjayB2YWx1ZSAoc2VlIGJlbG93KS4KLStmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGlmIHRlc3QgLXogIiQ0IiAmJiB0ZXN0IC1uICIkMyI7IHRoZW4KLSsgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSB0aGUgaG9zdCBwYXRoIGNvcnJlc3BvbmRpbmcgdG8iCi0rICAgIGZ1bmNfZXJyb3IgIiAgXGAkMyciCi0rICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgotKyAgICAjIEZhbGxiYWNrLiAgVGhpcyBpcyBhIGRlbGliZXJhdGVseSBzaW1wbGlzdGljICJjb252ZXJzaW9uIiBhbmQKLSsgICAgIyBzaG91bGQgbm90IGJlICJpbXByb3ZlZCIuICBTZWUgbGlidG9vbC5pbmZvLgotKyAgICBpZiB0ZXN0ICJ4JDEiICE9ICJ4JDIiOyB0aGVuCi0rICAgICAgbHRfcmVwbGFjZV9wYXRoc2VwX2NoYXJzPSJzfCQxfCQyfGciCi0rICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBlY2hvICIkMyIgfAotKyAgICAgICAgJFNFRCAtZSAiJGx0X3JlcGxhY2VfcGF0aHNlcF9jaGFycyJgCi0rICAgIGVsc2UKLSsgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQzIgotKyAgICBmaQotKyAgZmkKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCBGUk9OVFBBVCBCQUNLUEFUIFJFUEwgT1JJRwotKyMgTW9kaWZpZXMgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IGJ5IHByZXBlbmRpbmcgUkVQTCBpZiBPUklHIG1hdGNoZXMgRlJPTlRQQVQKLSsjIGFuZCBhcHBlbmRpbmcgUkVQTCBpZiBPUklHIG1hdGNoZXMgQkFDS1BBVC4KLStmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBjYXNlICQ0IGluCi0rICAkMSApIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDMkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotKyAgICA7OwotKyAgZXNhYwotKyAgY2FzZSAkNCBpbgotKyAgJDIgKSBmdW5jX2FwcGVuZCBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQgIiQzIgotKyAgICA7OwotKyAgZXNhYwotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAKLSsKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgJGJ1aWxkIHRvICRob3N0IEZJTEUgTkFNRSBDT05WRVJTSU9OIEZVTkNUSU9OUyAjCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIGludm9rZWQgdmlhIGAkdG9faG9zdF9maWxlX2NtZCBBUkcnCi0rIwotKyMgSW4gZWFjaCBjYXNlLCBBUkcgaXMgdGhlIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIHRvICRob3N0IGZvcm1hdC4KLSsjIFJlc3VsdCB3aWxsIGJlIGF2YWlsYWJsZSBpbiAkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotKwotKwotKyMgZnVuY190b19ob3N0X2ZpbGUgQVJHCi0rIyBDb252ZXJ0cyB0aGUgZmlsZSBuYW1lIEFSRyBmcm9tICRidWlsZCBmb3JtYXQgdG8gJGhvc3QgZm9ybWF0LiBSZXR1cm4gcmVzdWx0Ci0rIyBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY190b19ob3N0X2ZpbGUgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICAkdG9faG9zdF9maWxlX2NtZCAiJDEiCi0rfQotKyMgZW5kIGZ1bmNfdG9faG9zdF9maWxlCi0rCi0rCi0rIyBmdW5jX3RvX3Rvb2xfZmlsZSBBUkcgTEFaWQotKyMgY29udmVydHMgdGhlIGZpbGUgbmFtZSBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvIHRvb2xjaGFpbiBmb3JtYXQuIFJldHVybgotKyMgcmVzdWx0IGluIGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdC4gIElmIHRoZSBjb252ZXJzaW9uIGluIHVzZSBpcyBsaXN0ZWQKLSsjIGluICh0aGUgY29tbWEgc2VwYXJhdGVkKSBMQVpZLCBubyBjb252ZXJzaW9uIHRha2VzIHBsYWNlLgotK2Z1bmNfdG9fdG9vbF9maWxlICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgY2FzZSAsJDIsIGluCi0rICAgICosIiR0b190b29sX2ZpbGVfY21kIiwqKQotKyAgICAgIGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdD0kMQotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgJHRvX3Rvb2xfZmlsZV9jbWQgIiQxIgotKyAgICAgIGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdD0kZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0Ci0rICAgICAgOzsKLSsgIGVzYWMKLSt9Ci0rIyBlbmQgZnVuY190b190b29sX2ZpbGUKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9maWxlX25vb3AgQVJHCi0rIyBDb3B5IEFSRyB0byBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCAoKQotK3sKLSsgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX25vb3AKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyIEFSRwotKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gKG1pbmd3KSBNU1lTIHRvIChtaW5ndykgdzMyIGZvcm1hdDsgYXV0b21hdGljCi0rIyBjb252ZXJzaW9uIHRvIHczMiBpcyBub3QgYXZhaWxhYmxlIGluc2lkZSB0aGUgY3dyYXBwZXIuICBSZXR1cm5zIHJlc3VsdCBpbgotKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJDEiCi0rICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKLSsgIGZpCi0rICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKwotKwotKyMgZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMiBBUkcKLSsjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIEN5Z3dpbiB0byB3MzIgZm9ybWF0LiAgUmV0dXJucyByZXN1bHQgaW4KLSsjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICAjIGJlY2F1c2UgJGJ1aWxkIGlzIGN5Z3dpbiwgd2UgY2FsbCAidGhlIiBjeWdwYXRoIGluICRQQVRIOyBubyBuZWVkIHRvIHVzZQotKyAgICAjIExUX0NZR1BBVEggaW4gdGhpcyBjYXNlLgotKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9YGN5Z3BhdGggLW0gIiQxImAKLSsgIGZpCi0rICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyIEFSRwotKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gKm5peCB0byB3MzIgZm9ybWF0LiAgUmVxdWlyZXMgYSB3aW5lIGVudmlyb25tZW50Ci0rIyBhbmQgYSB3b3JraW5nIHdpbmVwYXRoLiBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJDEiCi0rICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgotKyAgZmkKLSsgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luIEFSRwotKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gTVNZUyB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgTFRfQ1lHUEFUSCBzZXQuCi0rIyBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4gKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkMSIKLSsgICAgZnVuY19jeWdwYXRoIC11ICIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgotKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgotKyAgZmkKLSsgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luIEFSRwotKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gKm5peCB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgQ3lnd2luIGluc3RhbGxlZAotKyMgaW4gYSB3aW5lIGVudmlyb25tZW50LCB3b3JraW5nIHdpbmVwYXRoLCBhbmQgTFRfQ1lHUEFUSCBzZXQuICBSZXR1cm5zIHJlc3VsdAotKyMgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4gKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgICMgY29udmVydCBmcm9tICpuaXggdG8gdzMyLCB0aGVuIHVzZSBjeWdwYXRoIHRvIGNvbnZlcnQgZnJvbSB3MzIgdG8gY3lnd2luLgotKyAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkMSIKLSsgICAgZnVuY19jeWdwYXRoIC11ICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCi0rICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCi0rICBmaQotKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgotKwotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgJGJ1aWxkIHRvICRob3N0IFBBVEggQ09OVkVSU0lPTiBGVU5DVElPTlMgIwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgaW52b2tlZCB2aWEgYCR0b19ob3N0X3BhdGhfY21kIEFSRycKLSsjCi0rIyBJbiBlYWNoIGNhc2UsIEFSRyBpcyB0aGUgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgdG8gJGhvc3QgZm9ybWF0LgotKyMgVGhlIHJlc3VsdCB3aWxsIGJlIGF2YWlsYWJsZSBpbiAkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgotKyMKLSsjIFBhdGggc2VwYXJhdG9ycyBhcmUgYWxzbyBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gIElmCi0rIyBBUkcgYmVnaW5zIG9yIGVuZHMgd2l0aCBhIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlciwgaXQgaXMgcHJlc2VydmVkIChidXQKLSsjIGNvbnZlcnRlZCB0byAkaG9zdCBmb3JtYXQpIG9uIG91dHB1dC4KLSsjCi0rIyBBbGwgcGF0aCBjb252ZXJzaW9uIGZ1bmN0aW9ucyBhcmUgbmFtZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBjb252ZW50aW9uOgotKyMgICBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbiAgICA6IGZ1bmNfY29udmVydF9maWxlX1hfdG9fWSAoKQotKyMgICBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb24gICAgICAgICA6IGZ1bmNfY29udmVydF9wYXRoX1hfdG9fWSAoKQotKyMgd2hlcmUsIGZvciBhbnkgZ2l2ZW4gJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9uIHRoZSAnWF90b19ZJyB2YWx1ZSBpcyB0aGUKLSsjIHNhbWUuICBJZiBjb252ZXJzaW9uIGZ1bmN0aW9ucyBhcmUgYWRkZWQgZm9yIG5ldyAkYnVpbGQvJGhvc3QgY29tYmluYXRpb25zLAotKyMgdGhlIHR3byBuZXcgZnVuY3Rpb25zIG11c3QgZm9sbG93IHRoaXMgcGF0dGVybiwgb3IgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKLSsjIHdpbGwgYnJlYWsuCi0rCi0rCi0rIyBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAotKyMgRW5zdXJlcyB0aGF0IGZ1bmN0aW9uICJwb2ludGVyIiB2YXJpYWJsZSAkdG9faG9zdF9wYXRoX2NtZCBpcyBzZXQgdG8gdGhlCi0rIyBhcHByb3ByaWF0ZSB2YWx1ZSwgYmFzZWQgb24gdGhlIHZhbHVlIG9mICR0b19ob3N0X2ZpbGVfY21kLgotK3RvX2hvc3RfcGF0aF9jbWQ9Ci0rZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBpZiB0ZXN0IC16ICIkdG9faG9zdF9wYXRoX2NtZCI7IHRoZW4KLSsgICAgZnVuY19zdHJpcG5hbWUgJ2Z1bmNfY29udmVydF9maWxlXycgJycgIiR0b19ob3N0X2ZpbGVfY21kIgotKyAgICB0b19ob3N0X3BhdGhfY21kPSJmdW5jX2NvbnZlcnRfcGF0aF8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH0iCi0rICBmaQotK30KLSsKLSsKLSsjIGZ1bmNfdG9faG9zdF9wYXRoIEFSRwotKyMgQ29udmVydHMgdGhlIHBhdGggQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuIFJldHVybiByZXN1bHQKLSsjIGluIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KLStmdW5jX3RvX2hvc3RfcGF0aCAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCi0rICAkdG9faG9zdF9wYXRoX2NtZCAiJDEiCi0rfQotKyMgZW5kIGZ1bmNfdG9faG9zdF9wYXRoCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfcGF0aF9ub29wIEFSRwotKyMgQ29weSBBUkcgdG8gZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgotK2Z1bmNfY29udmVydF9wYXRoX25vb3AgKCkKLSt7Ci0rICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9ub29wCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMiBBUkcKLSsjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSAobWluZ3cpIE1TWVMgdG8gKG1pbmd3KSB3MzIgZm9ybWF0OyBhdXRvbWF0aWMKLSsjIGNvbnZlcnNpb24gdG8gdzMyIGlzIG5vdCBhdmFpbGFibGUgaW5zaWRlIHRoZSBjd3JhcHBlci4gIFJldHVybnMgcmVzdWx0IGluCi0rIyBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgICMgUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMgZnJvbSBBUkcuICBNU1lTCi0rICAgICMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmU7IGN5Z3BhdGggdHVybnMgdGhlbSBpbnRvICcuOycgYW5kICc7Lic7Ci0rICAgICMgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgotKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKLSsgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCi0rICBmaQotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMgotKwotKwotKyMgZnVuY19jb252ZXJ0X3BhdGhfY3lnd2luX3RvX3czMiBBUkcKLSsjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSBDeWd3aW4gdG8gdzMyIGZvcm1hdC4gIFJldHVybnMgcmVzdWx0IGluCi0rIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X3BhdGhfY3lnd2luX3RvX3czMiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6Ci0rICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCi0rICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGN5Z3BhdGggLW0gLXAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxImAKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAotKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKLSsgIGZpCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9wYXRoX25peF90b193MzIgQVJHCi0rIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKm5peCB0byB3MzIgZm9ybWF0LiAgUmVxdWlyZXMgYSB3aW5lIGVudmlyb25tZW50IGFuZAotKyMgYSB3b3JraW5nIHdpbmVwYXRoLiAgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9wYXRoX25peF90b193MzIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgotKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCi0rICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCi0rICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgotKyAgZmkKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMgotKwotKwotKyMgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b19jeWd3aW4gQVJHCi0rIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gTVNZUyB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgTFRfQ1lHUEFUSCBzZXQuCi0rIyBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b19jeWd3aW4gKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgotKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgotKyAgICBmdW5jX2N5Z3BhdGggLXUgLXAgIiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCi0rICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogOiBcCi0rICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiA6ICIkMSIKLSsgIGZpCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luIEFSRwotKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tICpuaXggdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIEN5Z3dpbiBpbnN0YWxsZWQgaW4gYQotKyMgYSB3aW5lIGVudmlyb25tZW50LCB3b3JraW5nIHdpbmVwYXRoLCBhbmQgTFRfQ1lHUEFUSCBzZXQuICBSZXR1cm5zIHJlc3VsdCBpbgotKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9wYXRoX25peF90b19jeWd3aW4gKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgICMgUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMgZnJvbQotKyAgICAjIEFSRy4gbXN5cyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZSwgY3lncGF0aCB0dXJucyB0aGVtCi0rICAgICMgaW50byAnLjsnIGFuZCAnOy4nLCBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCi0rICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCi0rICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKyAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKLSsgICAgZnVuY19jeWdwYXRoIC11IC1wICIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQiCi0rICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogOiBcCi0rICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiA6ICIkMSIKLSsgIGZpCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25peF90b19jeWd3aW4KLSsKLSsKLSAjIGZ1bmNfbW9kZV9jb21waWxlIGFyZy4uLgotIGZ1bmNfbW9kZV9jb21waWxlICgpCi0gewotQEAgLTEzMTQsMTIgKzE5ODUsMTIgQEAgZnVuY19tb2RlX2NvbXBpbGUgKCkKLSAJICA7OwotIAotIAktcGllIHwgLWZwaWUgfCAtZlBJRSkKLS0gICAgICAgICAgcGllX2ZsYWc9IiRwaWVfZmxhZyAkYXJnIgotKyAgICAgICAgICBmdW5jX2FwcGVuZCBwaWVfZmxhZyAiICRhcmciCi0gCSAgY29udGludWUKLSAJICA7OwotIAotIAktc2hhcmVkIHwgLXN0YXRpYyB8IC1wcmVmZXItcGljIHwgLXByZWZlci1ub24tcGljKQotLQkgIGxhdGVyPSIkbGF0ZXIgJGFyZyIKLSsJICBmdW5jX2FwcGVuZCBsYXRlciAiICRhcmciCi0gCSAgY29udGludWUKLSAJICA7OwotIAotQEAgLTEzNDAsMTUgKzIwMTEsMTQgQEAgZnVuY19tb2RlX2NvbXBpbGUgKCkKLSAJICBzYXZlX2lmcz0iJElGUyI7IElGUz0nLCcKLSAJICBmb3IgYXJnIGluICRhcmdzOyBkbwotIAkgICAgSUZTPSIkc2F2ZV9pZnMiCi0tCSAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotLQkgICAgbGFzdGFyZz0iJGxhc3RhcmcgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKwkgICAgZnVuY19hcHBlbmRfcXVvdGVkIGxhc3RhcmcgIiRhcmciCi0gCSAgZG9uZQotIAkgIElGUz0iJHNhdmVfaWZzIgotIAkgIGZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGxhc3RhcmciCi0gCSAgbGFzdGFyZz0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0gCi0gCSAgIyBBZGQgdGhlIGFyZ3VtZW50cyB0byBiYXNlX2NvbXBpbGUuCi0tCSAgYmFzZV9jb21waWxlPSIkYmFzZV9jb21waWxlICRsYXN0YXJnIgotKwkgIGZ1bmNfYXBwZW5kIGJhc2VfY29tcGlsZSAiICRsYXN0YXJnIgotIAkgIGNvbnRpbnVlCi0gCSAgOzsKLSAKLUBAIC0xMzY0LDggKzIwMzQsNyBAQCBmdW5jX21vZGVfY29tcGlsZSAoKQotICAgICAgIGVzYWMgICAgIyAgY2FzZSAkYXJnX21vZGUKLSAKLSAgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgdGhlIHByZXZpb3VzIGFyZ3VtZW50LgotLSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRsYXN0YXJnIgotLSAgICAgIGJhc2VfY29tcGlsZT0iJGJhc2VfY29tcGlsZSAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIGJhc2VfY29tcGlsZSAiJGxhc3RhcmciCi0gICAgIGRvbmUgIyBmb3IgYXJnCi0gCi0gICAgIGNhc2UgJGFyZ19tb2RlIGluCi1AQCAtMTQ5NiwxNyArMjE2NSwxNiBAQCBjb21waWxlci4iCi0gCSRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3QKLSAJZXhpdCAkRVhJVF9GQUlMVVJFCi0gICAgICAgZmkKLS0gICAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkb3V0cHV0X29iaiIKLSsgICAgICBmdW5jX2FwcGVuZCByZW1vdmVsaXN0ICIgJG91dHB1dF9vYmoiCi0gICAgICAgJEVDSE8gIiRzcmNmaWxlIiA+ICIkbG9ja2ZpbGUiCi0gICAgIGZpCi0gCi0gICAgICRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3QKLS0gICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJGxvY2tmaWxlIgotKyAgICBmdW5jX2FwcGVuZCByZW1vdmVsaXN0ICIgJGxvY2tmaWxlIgotICAgICB0cmFwICckb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0OyBleGl0ICRFWElUX0ZBSUxVUkUnIDEgMiAxNQotIAotLSAgICBpZiB0ZXN0IC1uICIkZml4X3NyY2ZpbGVfcGF0aCI7IHRoZW4KLS0gICAgICBldmFsICJzcmNmaWxlPVwiJGZpeF9zcmNmaWxlX3BhdGhcIiIKLS0gICAgZmkKLSsgICAgZnVuY190b190b29sX2ZpbGUgIiRzcmNmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICBzcmNmaWxlPSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKLSAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHNyY2ZpbGUiCi0gICAgIHFzcmNmaWxlPSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdAotIAotQEAgLTE1MjYsNyArMjE5NCw3IEBAIGNvbXBpbGVyLiIKLSAKLSAgICAgICBpZiB0ZXN0IC16ICIkb3V0cHV0X29iaiI7IHRoZW4KLSAJIyBQbGFjZSBQSUMgb2JqZWN0cyBpbiAkb2JqZGlyCi0tCWNvbW1hbmQ9IiRjb21tYW5kIC1vICRsb2JqIgotKwlmdW5jX2FwcGVuZCBjb21tYW5kICIgLW8gJGxvYmoiCi0gICAgICAgZmkKLSAKLSAgICAgICBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgIiRjb21tYW5kIglcCi1AQCAtMTU3MywxMSArMjI0MSwxMSBAQCBjb21waWxlci4iCi0gCWNvbW1hbmQ9IiRiYXNlX2NvbXBpbGUgJHFzcmNmaWxlICRwaWNfZmxhZyIKLSAgICAgICBmaQotICAgICAgIGlmIHRlc3QgIiRjb21waWxlcl9jX28iID0geWVzOyB0aGVuCi0tCWNvbW1hbmQ9IiRjb21tYW5kIC1vICRvYmoiCi0rCWZ1bmNfYXBwZW5kIGNvbW1hbmQgIiAtbyAkb2JqIgotICAgICAgIGZpCi0gCi0gICAgICAgIyBTdXBwcmVzcyBjb21waWxlciBvdXRwdXQgaWYgd2UgYWxyZWFkeSBkaWQgYSBQSUMgY29tcGlsYXRpb24uCi0tICAgICAgY29tbWFuZD0iJGNvbW1hbmQkc3VwcHJlc3Nfb3V0cHV0IgotKyAgICAgIGZ1bmNfYXBwZW5kIGNvbW1hbmQgIiRzdXBwcmVzc19vdXRwdXQiCi0gICAgICAgZnVuY19zaG93X2V2YWxfbG9jYWxlICIkY29tbWFuZCIgXAotICAgICAgICAgJyRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3Q7IGV4aXQgJEVYSVRfRkFJTFVSRScKLSAKLUBAIC0xNjIyLDEzICsyMjkwLDEzIEBAIGNvbXBpbGVyLiIKLSB9Ci0gCi0gJG9wdF9oZWxwIHx8IHsKLS0gIHRlc3QgIiRtb2RlIiA9IGNvbXBpbGUgJiYgZnVuY19tb2RlX2NvbXBpbGUgJHsxKyIkQCJ9Ci0rICB0ZXN0ICIkb3B0X21vZGUiID0gY29tcGlsZSAmJiBmdW5jX21vZGVfY29tcGlsZSAkezErIiRAIn0KLSB9Ci0gCi0gZnVuY19tb2RlX2hlbHAgKCkKLSB7Ci0gICAgICMgV2UgbmVlZCB0byBkaXNwbGF5IGhlbHAgZm9yIGVhY2ggb2YgdGhlIG1vZGVzLgotLSAgICBjYXNlICRtb2RlIGluCi0rICAgIGNhc2UgJG9wdF9tb2RlIGluCi0gICAgICAgIiIpCi0gICAgICAgICAjIEdlbmVyaWMgaGVscCBpcyBleHRyYWN0ZWQgZnJvbSB0aGUgdXNhZ2UgY29tbWVudHMKLSAgICAgICAgICMgYXQgdGhlIHN0YXJ0IG9mIHRoaXMgZmlsZS4KLUBAIC0xNjU5LDggKzIzMjcsOCBAQCBUaGlzIG1vZGUgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgb3B0aW9uczoKLSAKLSAgIC1vIE9VVFBVVC1GSUxFICAgIHNldCB0aGUgb3V0cHV0IGZpbGUgbmFtZSB0byBPVVRQVVQtRklMRQotICAgLW5vLXN1cHByZXNzICAgICAgZG8gbm90IHN1cHByZXNzIGNvbXBpbGVyIG91dHB1dCBmb3IgbXVsdGlwbGUgcGFzc2VzCi0tICAtcHJlZmVyLXBpYyAgICAgICB0cnkgdG8gYnVpbGRpbmcgUElDIG9iamVjdHMgb25seQotLSAgLXByZWZlci1ub24tcGljICAgdHJ5IHRvIGJ1aWxkaW5nIG5vbi1QSUMgb2JqZWN0cyBvbmx5Ci0rICAtcHJlZmVyLXBpYyAgICAgICB0cnkgdG8gYnVpbGQgUElDIG9iamVjdHMgb25seQotKyAgLXByZWZlci1ub24tcGljICAgdHJ5IHRvIGJ1aWxkIG5vbi1QSUMgb2JqZWN0cyBvbmx5Ci0gICAtc2hhcmVkICAgICAgICAgICBkbyBub3QgYnVpbGQgYSBcYC5vJyBmaWxlIHN1aXRhYmxlIGZvciBzdGF0aWMgbGlua2luZwotICAgLXN0YXRpYyAgICAgICAgICAgb25seSBidWlsZCBhIFxgLm8nIGZpbGUgc3VpdGFibGUgZm9yIHN0YXRpYyBsaW5raW5nCi0gICAtV2MsRkxBRyAgICAgICAgICBwYXNzIEZMQUcgZGlyZWN0bHkgdG8gdGhlIGNvbXBpbGVyCi1AQCAtMTgwNCw3ICsyNDcyLDcgQEAgT3RoZXJ3aXNlLCBvbmx5IEZJTEUgaXRzZWxmIGlzIGRlbGV0ZWQgdXNpbmcgUk0uIgotICAgICAgICAgOzsKLSAKLSAgICAgICAqKQotLSAgICAgICAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG1vZGUnIgotKyAgICAgICAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG9wdF9tb2RlJyIKLSAgICAgICAgIDs7Ci0gICAgIGVzYWMKLSAKLUBAIC0xODE5LDEzICsyNDg3LDEzIEBAIGlmICRvcHRfaGVscDsgdGhlbgotICAgZWxzZQotICAgICB7Ci0gICAgICAgZnVuY19oZWxwIG5vZXhpdAotLSAgICAgIGZvciBtb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KLSsgICAgICBmb3Igb3B0X21vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbwotIAlmdW5jX21vZGVfaGVscAotICAgICAgIGRvbmUKLSAgICAgfSB8IHNlZCAtbiAnMXA7IDIsJHMvXlVzYWdlOi8gIG9yOiAvcCcKLSAgICAgewotICAgICAgIGZ1bmNfaGVscCBub2V4aXQKLS0gICAgICBmb3IgbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCi0rICAgICAgZm9yIG9wdF9tb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KLSAJZWNobwotIAlmdW5jX21vZGVfaGVscAotICAgICAgIGRvbmUKLUBAIC0xODU0LDEzICsyNTIyLDE2IEBAIGZ1bmNfbW9kZV9leGVjdXRlICgpCi0gICAgICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgQ09NTUFORCIKLSAKLSAgICAgIyBIYW5kbGUgLWRsb3BlbiBmbGFncyBpbW1lZGlhdGVseS4KLS0gICAgZm9yIGZpbGUgaW4gJGV4ZWN1dGVfZGxmaWxlczsgZG8KLSsgICAgZm9yIGZpbGUgaW4gJG9wdF9kbG9wZW47IGRvCi0gICAgICAgdGVzdCAtZiAiJGZpbGUiIFwKLSAJfHwgZnVuY19mYXRhbF9oZWxwICJcYCRmaWxlJyBpcyBub3QgYSBmaWxlIgotIAotICAgICAgIGRpcj0KLSAgICAgICBjYXNlICRmaWxlIGluCi0gICAgICAgKi5sYSkKLSsJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmaWxlIgotKwlmaWxlPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKLSsKLSAJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KLSAJZnVuY19sYWxpYl91bnNhZmVfcCAiJGZpbGUiIFwKLSAJICB8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotQEAgLTE4ODIsNyArMjU1Myw3IEBAIGZ1bmNfbW9kZV9leGVjdXRlICgpCi0gCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0gCi0gCWlmIHRlc3QgLWYgIiRkaXIvJG9iamRpci8kZGxuYW1lIjsgdGhlbgotLQkgIGRpcj0iJGRpci8kb2JqZGlyIgotKwkgIGZ1bmNfYXBwZW5kIGRpciAiLyRvYmpkaXIiCi0gCWVsc2UKLSAJICBpZiB0ZXN0ICEgLWYgIiRkaXIvJGRsbmFtZSI7IHRoZW4KLSAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIFxgJGRsbmFtZScgaW4gXGAkZGlyJyBvciBcYCRkaXIvJG9iamRpciciCi1AQCAtMTkwNywxMCArMjU3OCwxMCBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQotICAgICAgIHRlc3QgLW4gIiRhYnNkaXIiICYmIGRpcj0iJGFic2RpciIKLSAKLSAgICAgICAjIE5vdyBhZGQgdGhlIGRpcmVjdG9yeSB0byBzaGxpYnBhdGhfdmFyLgotLSAgICAgIGlmIGV2YWwgdGVzdCAteiBcIlwkJHNobGlicGF0aF92YXJcIjsgdGhlbgotLQlldmFsICRzaGxpYnBhdGhfdmFyPVwkZGlyCi0rICAgICAgaWYgZXZhbCAidGVzdCAteiBcIlwkJHNobGlicGF0aF92YXJcIiI7IHRoZW4KLSsJZXZhbCAiJHNobGlicGF0aF92YXI9XCJcJGRpclwiIgotICAgICAgIGVsc2UKLS0JZXZhbCAkc2hsaWJwYXRoX3Zhcj1cJGRpcjpcJCRzaGxpYnBhdGhfdmFyCi0rCWV2YWwgIiRzaGxpYnBhdGhfdmFyPVwiXCRkaXI6XCQkc2hsaWJwYXRoX3ZhclwiIgotICAgICAgIGZpCi0gICAgIGRvbmUKLSAKLUBAIC0xOTM5LDggKzI2MTAsNyBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQotIAk7OwotICAgICAgIGVzYWMKLSAgICAgICAjIFF1b3RlIGFyZ3VtZW50cyAodG8gcHJlc2VydmUgc2hlbGwgbWV0YWNoYXJhY3RlcnMpLgotLSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmaWxlIgotLSAgICAgIGFyZ3M9IiRhcmdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgYXJncyAiJGZpbGUiCi0gICAgIGRvbmUKLSAKLSAgICAgaWYgdGVzdCAiWCRvcHRfZHJ5X3J1biIgPSBYZmFsc2U7IHRoZW4KLUBAIC0xOTcyLDIyICsyNjQyLDU5IEBAIGZ1bmNfbW9kZV9leGVjdXRlICgpCi0gICAgIGZpCi0gfQotIAotLXRlc3QgIiRtb2RlIiA9IGV4ZWN1dGUgJiYgZnVuY19tb2RlX2V4ZWN1dGUgJHsxKyIkQCJ9Ci0rdGVzdCAiJG9wdF9tb2RlIiA9IGV4ZWN1dGUgJiYgZnVuY19tb2RlX2V4ZWN1dGUgJHsxKyIkQCJ9Ci0gCi0gCi0gIyBmdW5jX21vZGVfZmluaXNoIGFyZy4uLgotIGZ1bmNfbW9kZV9maW5pc2ggKCkKLSB7Ci0gICAgICRvcHRfZGVidWcKLS0gICAgbGliZGlycz0iJG5vbm9wdCIKLSsgICAgbGlicz0KLSsgICAgbGliZGlycz0KLSAgICAgYWRtaW5jbWRzPQotIAotLSAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgotLSAgICAgIGZvciBkaXIKLS0gICAgICBkbwotLQlsaWJkaXJzPSIkbGliZGlycyAkZGlyIgotLSAgICAgIGRvbmUKLSsgICAgZm9yIG9wdCBpbiAiJG5vbm9wdCIgJHsxKyIkQCJ9Ci0rICAgIGRvCi0rICAgICAgaWYgdGVzdCAtZCAiJG9wdCI7IHRoZW4KLSsJZnVuY19hcHBlbmQgbGliZGlycyAiICRvcHQiCi0gCi0rICAgICAgZWxpZiB0ZXN0IC1mICIkb3B0IjsgdGhlbgotKwlpZiBmdW5jX2xhbGliX3Vuc2FmZV9wICIkb3B0IjsgdGhlbgotKwkgIGZ1bmNfYXBwZW5kIGxpYnMgIiAkb3B0IgotKwllbHNlCi0rCSAgZnVuY193YXJuaW5nICJcYCRvcHQnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLSsJZmkKLSsKLSsgICAgICBlbHNlCi0rCWZ1bmNfZmF0YWxfZXJyb3IgImludmFsaWQgYXJndW1lbnQgXGAkb3B0JyIKLSsgICAgICBmaQotKyAgICBkb25lCi0rCi0rICAgIGlmIHRlc3QgLW4gIiRsaWJzIjsgdGhlbgotKyAgICAgIGlmIHRlc3QgLW4gIiRsdF9zeXNyb290IjsgdGhlbgotKyAgICAgICAgc3lzcm9vdF9yZWdleD1gJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRzZWRfbWFrZV9saXRlcmFsX3JlZ2V4ImAKLSsgICAgICAgIHN5c3Jvb3RfY21kPSJzL1woWyAnXVwpJHN5c3Jvb3RfcmVnZXgvXDEvZzsiCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzcm9vdF9jbWQ9Ci0rICAgICAgZmkKLSsKLSsgICAgICAjIFJlbW92ZSBzeXNyb290IHJlZmVyZW5jZXMKLSsgICAgICBpZiAkb3B0X2RyeV9ydW47IHRoZW4KLSsgICAgICAgIGZvciBsaWIgaW4gJGxpYnM7IGRvCi0rICAgICAgICAgIGVjaG8gInJlbW92aW5nIHJlZmVyZW5jZXMgdG8gJGx0X3N5c3Jvb3QgYW5kIFxgPScgcHJlZml4ZXMgZnJvbSAkbGliIgotKyAgICAgICAgZG9uZQotKyAgICAgIGVsc2UKLSsgICAgICAgIHRtcGRpcj1gZnVuY19ta3RlbXBkaXJgCi0rICAgICAgICBmb3IgbGliIGluICRsaWJzOyBkbwotKwkgIHNlZCAtZSAiJHtzeXNyb290X2NtZH0gcy9cKFsgJ10tW0xSXVwpPS9cMS9nOyBzL1woWyAnXVwpPS9cMS9nIiAkbGliIFwKLSsJICAgID4gJHRtcGRpci90bXAtbGEKLSsJICBtdiAtZiAkdG1wZGlyL3RtcC1sYSAkbGliCi0rCWRvbmUKLSsgICAgICAgICR7Uk19ciAiJHRtcGRpciIKLSsgICAgICBmaQotKyAgICBmaQotKwotKyAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgotICAgICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCi0gCWlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyI7IHRoZW4KLSAJICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgZmluaXNoIGNvbW1hbmRzLgotQEAgLTE5OTcsNyArMjcwNCw3IEBAIGZ1bmNfbW9kZV9maW5pc2ggKCkKLSAJaWYgdGVzdCAtbiAiJGZpbmlzaF9ldmFsIjsgdGhlbgotIAkgICMgRG8gdGhlIHNpbmdsZSBmaW5pc2hfZXZhbC4KLSAJICBldmFsIGNtZHM9XCIkZmluaXNoX2V2YWxcIgotLQkgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkY21kcyIgfHwgYWRtaW5jbWRzPSIkYWRtaW5jbWRzCi0rCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiRjbWRzIiB8fCBmdW5jX2FwcGVuZCBhZG1pbmNtZHMgIgotICAgICAgICAkY21kcyIKLSAJZmkKLSAgICAgICBkb25lCi1AQCAtMjAwNiw1MyArMjcxMyw1NSBAQCBmdW5jX21vZGVfZmluaXNoICgpCi0gICAgICMgRXhpdCBoZXJlIGlmIHRoZXkgd2FudGVkIHNpbGVudCBtb2RlLgotICAgICAkb3B0X3NpbGVudCAmJiBleGl0ICRFWElUX1NVQ0NFU1MKLSAKLS0gICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKLS0gICAgZWNobyAiTGlicmFyaWVzIGhhdmUgYmVlbiBpbnN0YWxsZWQgaW46IgotLSAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbwotLSAgICAgICRFQ0hPICIgICAkbGliZGlyIgotLSAgICBkb25lCi0tICAgIGVjaG8KLS0gICAgZWNobyAiSWYgeW91IGV2ZXIgaGFwcGVuIHRvIHdhbnQgdG8gbGluayBhZ2FpbnN0IGluc3RhbGxlZCBsaWJyYXJpZXMiCi0tICAgIGVjaG8gImluIGEgZ2l2ZW4gZGlyZWN0b3J5LCBMSUJESVIsIHlvdSBtdXN0IGVpdGhlciB1c2UgbGlidG9vbCwgYW5kIgotLSAgICBlY2hvICJzcGVjaWZ5IHRoZSBmdWxsIHBhdGhuYW1lIG9mIHRoZSBsaWJyYXJ5LCBvciB1c2UgdGhlIFxgLUxMSUJESVInIgotLSAgICBlY2hvICJmbGFnIGR1cmluZyBsaW5raW5nIGFuZCBkbyBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZzoiCi0tICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgotLSAgICAgIGVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkc2hsaWJwYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCi0tICAgICAgZWNobyAiICAgICBkdXJpbmcgZXhlY3V0aW9uIgotLSAgICBmaQotLSAgICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCi0tICAgICAgZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRydW5wYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCi0tICAgICAgZWNobyAiICAgICBkdXJpbmcgbGlua2luZyIKLS0gICAgZmkKLS0gICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCi0tICAgICAgbGliZGlyPUxJQkRJUgotLSAgICAgIGV2YWwgImZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgotKyAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgotKyAgICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCi0rICAgICAgZWNobyAiTGlicmFyaWVzIGhhdmUgYmVlbiBpbnN0YWxsZWQgaW46IgotKyAgICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCi0rCSRFQ0hPICIgICAkbGliZGlyIgotKyAgICAgIGRvbmUKLSsgICAgICBlY2hvCi0rICAgICAgZWNobyAiSWYgeW91IGV2ZXIgaGFwcGVuIHRvIHdhbnQgdG8gbGluayBhZ2FpbnN0IGluc3RhbGxlZCBsaWJyYXJpZXMiCi0rICAgICAgZWNobyAiaW4gYSBnaXZlbiBkaXJlY3RvcnksIExJQkRJUiwgeW91IG11c3QgZWl0aGVyIHVzZSBsaWJ0b29sLCBhbmQiCi0rICAgICAgZWNobyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBcYC1MTElCRElSJyIKLSsgICAgICBlY2hvICJmbGFnIGR1cmluZyBsaW5raW5nIGFuZCBkbyBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZzoiCi0rICAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCi0rCWVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkc2hsaWJwYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCi0rCWVjaG8gIiAgICAgZHVyaW5nIGV4ZWN1dGlvbiIKLSsgICAgICBmaQotKyAgICAgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KLSsJZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRydW5wYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCi0rCWVjaG8gIiAgICAgZHVyaW5nIGxpbmtpbmciCi0rICAgICAgZmkKLSsgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KLSsJbGliZGlyPUxJQkRJUgotKwlldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0gCi0tICAgICAgJEVDSE8gIiAgIC0gdXNlIHRoZSBcYCRmbGFnJyBsaW5rZXIgZmxhZyIKLS0gICAgZmkKLS0gICAgaWYgdGVzdCAtbiAiJGFkbWluY21kcyI7IHRoZW4KLS0gICAgICAkRUNITyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgcnVuIHRoZXNlIGNvbW1hbmRzOiRhZG1pbmNtZHMiCi0tICAgIGZpCi0tICAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCi0tICAgICAgZWNobyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgYWRkIExJQkRJUiB0byBcYC9ldGMvbGQuc28uY29uZiciCi0tICAgIGZpCi0tICAgIGVjaG8KLSsJJEVDSE8gIiAgIC0gdXNlIHRoZSBcYCRmbGFnJyBsaW5rZXIgZmxhZyIKLSsgICAgICBmaQotKyAgICAgIGlmIHRlc3QgLW4gIiRhZG1pbmNtZHMiOyB0aGVuCi0rCSRFQ0hPICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBydW4gdGhlc2UgY29tbWFuZHM6JGFkbWluY21kcyIKLSsgICAgICBmaQotKyAgICAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCi0rCWVjaG8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGFkZCBMSUJESVIgdG8gXGAvZXRjL2xkLnNvLmNvbmYnIgotKyAgICAgIGZpCi0rICAgICAgZWNobwotIAotLSAgICBlY2hvICJTZWUgYW55IG9wZXJhdGluZyBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBhYm91dCBzaGFyZWQgbGlicmFyaWVzIGZvciIKLS0gICAgY2FzZSAkaG9zdCBpbgotLSAgICAgIHNvbGFyaXMyLls2Nzg5XXxzb2xhcmlzMi4xWzAtOV0pCi0tICAgICAgICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSwgY3JsZSgxKSBhbmQgbGQuc28oOCkgbWFudWFsIgotLQllY2hvICJwYWdlcy4iCi0tCTs7Ci0tICAgICAgKikKLS0gICAgICAgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwgcGFnZXMuIgotLSAgICAgICAgOzsKLS0gICAgZXNhYwotLSAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgotKyAgICAgIGVjaG8gIlNlZSBhbnkgb3BlcmF0aW5nIHN5c3RlbSBkb2N1bWVudGF0aW9uIGFib3V0IHNoYXJlZCBsaWJyYXJpZXMgZm9yIgotKyAgICAgIGNhc2UgJGhvc3QgaW4KLSsJc29sYXJpczIuWzY3ODldfHNvbGFyaXMyLjFbMC05XSkKLSsJICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSwgY3JsZSgxKSBhbmQgbGQuc28oOCkgbWFudWFsIgotKwkgIGVjaG8gInBhZ2VzLiIKLSsJICA7OwotKwkqKQotKwkgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwgcGFnZXMuIgotKwkgIDs7Ci0rICAgICAgZXNhYwotKyAgICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCi0rICAgIGZpCi0gICAgIGV4aXQgJEVYSVRfU1VDQ0VTUwotIH0KLSAKLS10ZXN0ICIkbW9kZSIgPSBmaW5pc2ggJiYgZnVuY19tb2RlX2ZpbmlzaCAkezErIiRAIn0KLSt0ZXN0ICIkb3B0X21vZGUiID0gZmluaXNoICYmIGZ1bmNfbW9kZV9maW5pc2ggJHsxKyIkQCJ9Ci0gCi0gCi0gIyBmdW5jX21vZGVfaW5zdGFsbCBhcmcuLi4KLUBAIC0yMDc3LDcgKzI3ODYsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQotICAgICAjIFRoZSByZWFsIGZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSB0aGUgbmFtZSBvZiB0aGUgaW5zdGFsbGF0aW9uIHByb2dyYW0uCi0gICAgICMgQWVzdGhldGljYWxseSBxdW90ZSBpdC4KLSAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLS0gICAgaW5zdGFsbF9wcm9nPSIkaW5zdGFsbF9wcm9nJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKyAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3Byb2cgIiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSAgICAgaW5zdGFsbF9zaGFyZWRfcHJvZz0kaW5zdGFsbF9wcm9nCi0gICAgIGNhc2UgIiAkaW5zdGFsbF9wcm9nICIgaW4KLSAgICAgICAqW1xcXCAvXWNwXCAqKSBpbnN0YWxsX2NwPTogOzsKLUBAIC0yMDk3LDcgKzI4MDYsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQotICAgICBkbwotICAgICAgIGFyZzI9Ci0gICAgICAgaWYgdGVzdCAtbiAiJGRlc3QiOyB0aGVuCi0tCWZpbGVzPSIkZmlsZXMgJGRlc3QiCi0rCWZ1bmNfYXBwZW5kIGZpbGVzICIgJGRlc3QiCi0gCWRlc3Q9JGFyZwotIAljb250aW51ZQotICAgICAgIGZpCi1AQCAtMjEzNSwxMSArMjg0NCwxMSBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQotIAotICAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSB0aGUgYXJndW1lbnQuCi0gICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLS0gICAgICBpbnN0YWxsX3Byb2c9IiRpbnN0YWxsX3Byb2cgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKyAgICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfcHJvZyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSAgICAgICBpZiB0ZXN0IC1uICIkYXJnMiI7IHRoZW4KLSAJZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZzIiCi0gICAgICAgZmkKLS0gICAgICBpbnN0YWxsX3NoYXJlZF9wcm9nPSIkaW5zdGFsbF9zaGFyZWRfcHJvZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rICAgICAgZnVuY19hcHBlbmQgaW5zdGFsbF9zaGFyZWRfcHJvZyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSAgICAgZG9uZQotIAotICAgICB0ZXN0IC16ICIkaW5zdGFsbF9wcm9nIiAmJiBcCi1AQCAtMjE1MSw3ICsyODYwLDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAgICAgaWYgdGVzdCAtbiAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSIgJiYgJG5vX21vZGU7IHRoZW4KLSAgICAgICBpZiAkaW5zdGFsbF9jcDsgdGhlbiA6OyBlbHNlCi0gCWZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRpbnN0YWxsX292ZXJyaWRlX21vZGUiCi0tCWluc3RhbGxfc2hhcmVkX3Byb2c9IiRpbnN0YWxsX3NoYXJlZF9wcm9nIC1tICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJZnVuY19hcHBlbmQgaW5zdGFsbF9zaGFyZWRfcHJvZyAiIC1tICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSAgICAgICBmaQotICAgICBmaQotIAotQEAgLTIyMDksMTAgKzI5MTgsMTMgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAgICAgICBjYXNlICRmaWxlIGluCi0gICAgICAgKi4kbGliZXh0KQotIAkjIERvIHRoZSBzdGF0aWMgbGlicmFyaWVzIGxhdGVyLgotLQlzdGF0aWNsaWJzPSIkc3RhdGljbGlicyAkZmlsZSIKLSsJZnVuY19hcHBlbmQgc3RhdGljbGlicyAiICRmaWxlIgotIAk7OwotIAotICAgICAgICoubGEpCi0rCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZmlsZSIKLSsJZmlsZT0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0Ci0rCi0gCSMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCi0gCWZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRmaWxlIiBcCi0gCSAgfHwgZnVuY19mYXRhbF9oZWxwICJcYCRmaWxlJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi1AQCAtMjIyNiwyMyArMjkzOCwzMCBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQotIAlpZiB0ZXN0ICJYJGRlc3RkaXIiID0gIlgkbGliZGlyIjsgdGhlbgotIAkgIGNhc2UgIiRjdXJyZW50X2xpYmRpcnMgIiBpbgotIAkgICoiICRsaWJkaXIgIiopIDs7Ci0tCSAgKikgY3VycmVudF9saWJkaXJzPSIkY3VycmVudF9saWJkaXJzICRsaWJkaXIiIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgY3VycmVudF9saWJkaXJzICIgJGxpYmRpciIgOzsKLSAJICBlc2FjCi0gCWVsc2UKLSAJICAjIE5vdGUgdGhlIGxpYmRpciBhcyBhIGZ1dHVyZSBsaWJkaXIuCi0gCSAgY2FzZSAiJGZ1dHVyZV9saWJkaXJzICIgaW4KLSAJICAqIiAkbGliZGlyICIqKSA7OwotLQkgICopIGZ1dHVyZV9saWJkaXJzPSIkZnV0dXJlX2xpYmRpcnMgJGxpYmRpciIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBmdXR1cmVfbGliZGlycyAiICRsaWJkaXIiIDs7Ci0gCSAgZXNhYwotIAlmaQotIAotIAlmdW5jX2Rpcm5hbWUgIiRmaWxlIiAiLyIgIiIKLSAJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLS0JZGlyPSIkZGlyJG9iamRpciIKLSsJZnVuY19hcHBlbmQgZGlyICIkb2JqZGlyIgotIAotIAlpZiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCi0rICAgICAgIyBTdHJpcCBhbnkgdHJhaWxpbmcgc2xhc2ggZnJvbSB0aGUgZGVzdGluYXRpb24uCi0rICAgICAgZnVuY19zdHJpcG5hbWUgJycgJy8nICIkbGliZGlyIgotKyAgICAgIGRlc3RsaWJkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKwotKyAgICAgIGZ1bmNfc3RyaXBuYW1lICcnICcvJyAiJGRlc3RkaXIiCi0rICAgICAgc19kZXN0ZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsKLSAJICAjIERldGVybWluZSB0aGUgcHJlZml4IHRoZSB1c2VyIGhhcyBhcHBsaWVkIHRvIG91ciBmdXR1cmUgZGlyLgotLQkgIGluc3RfcHJlZml4X2Rpcj1gJEVDSE8gIiRkZXN0ZGlyIiB8ICRTRUQgLWUgInMlJGxpYmRpclwkJSUiYAotKwkgIGluc3RfcHJlZml4X2Rpcj1gJEVDSE8gIlgkc19kZXN0ZGlyIiB8ICRYc2VkIC1lICJzJSRkZXN0bGliZGlyXCQlJSJgCi0gCi0gCSAgIyBEb24ndCBhbGxvdyB0aGUgdXNlciB0byBwbGFjZSB1cyBvdXRzaWRlIG9mIG91ciBleHBlY3RlZAotIAkgICMgbG9jYXRpb24gYi9jIHRoaXMgcHJldmVudHMgZmluZGluZyBkZXBlbmRlbnQgbGlicmFyaWVzIHRoYXQKLUBAIC0yMzE1LDcgKzMwMzQsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQotIAlmdW5jX3Nob3dfZXZhbCAiJGluc3RhbGxfcHJvZyAkaW5zdG5hbWUgJGRlc3RkaXIvJG5hbWUiICdleGl0ICQ/JwotIAotIAkjIE1heWJlIGluc3RhbGwgdGhlIHN0YXRpYyBsaWJyYXJ5LCB0b28uCi0tCXRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgc3RhdGljbGlicz0iJHN0YXRpY2xpYnMgJGRpci8kb2xkX2xpYnJhcnkiCi0rCXRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgZnVuY19hcHBlbmQgc3RhdGljbGlicyAiICRkaXIvJG9sZF9saWJyYXJ5IgotIAk7OwotIAotICAgICAgICoubG8pCi1AQCAtMjUwMyw3ICszMjIyLDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAgICAgdGVzdCAtbiAiJGZ1dHVyZV9saWJkaXJzIiAmJiBcCi0gICAgICAgZnVuY193YXJuaW5nICJyZW1lbWJlciB0byBydW4gXGAkcHJvZ25hbWUgLS1maW5pc2gkZnV0dXJlX2xpYmRpcnMnIgotIAotLSAgICBpZiB0ZXN0IC1uICIkY3VycmVudF9saWJkaXJzIiAmJiAkb3B0X2ZpbmlzaDsgdGhlbgotKyAgICBpZiB0ZXN0IC1uICIkY3VycmVudF9saWJkaXJzIjsgdGhlbgotICAgICAgICMgTWF5YmUganVzdCBkbyBhIGRyeSBydW4uCi0gICAgICAgJG9wdF9kcnlfcnVuICYmIGN1cnJlbnRfbGliZGlycz0iIC1uJGN1cnJlbnRfbGliZGlycyIKLSAgICAgICBleGVjX2NtZD0nJFNIRUxMICRwcm9ncGF0aCAkcHJlc2VydmVfYXJncyAtLWZpbmlzaCRjdXJyZW50X2xpYmRpcnMnCi1AQCAtMjUxMiw3ICszMjMxLDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAgICAgZmkKLSB9Ci0gCi0tdGVzdCAiJG1vZGUiID0gaW5zdGFsbCAmJiBmdW5jX21vZGVfaW5zdGFsbCAkezErIiRAIn0KLSt0ZXN0ICIkb3B0X21vZGUiID0gaW5zdGFsbCAmJiBmdW5jX21vZGVfaW5zdGFsbCAkezErIiRAIn0KLSAKLSAKLSAjIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zIG91dHB1dG5hbWUgb3JpZ2luYXRvciBwaWNfcAotQEAgLTI1NTksNiArMzI3OCwxOCBAQCBleHRlcm4gXCJDXCIgewotICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1Xc3RyaWN0LXByb3RvdHlwZXNcIgotICNlbmRpZgotIAotKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCi0rICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2VsaWYgZGVmaW5lZChfX29zZl9fKQotKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAotKyNlbmRpZgotKwotIC8qIEV4dGVybmFsIHN5bWJvbCBkZWNsYXJhdGlvbnMgZm9yIHRoZSBjb21waWxlci4gKi9cCi0gIgotIAotQEAgLTI1NzAsMjEgKzMzMDEsMjIgQEAgZXh0ZXJuIFwiQ1wiIHsKLSAJICAjIEFkZCBvdXIgb3duIHByb2dyYW0gb2JqZWN0cyB0byB0aGUgc3ltYm9sIGxpc3QuCi0gCSAgcHJvZ2ZpbGVzPWAkRUNITyAiJG9ianMkb2xkX2RlcGxpYnMiIHwgJFNQMk5MIHwgJFNFRCAiJGxvMm8iIHwgJE5MMlNQYAotIAkgIGZvciBwcm9nZmlsZSBpbiAkcHJvZ2ZpbGVzOyBkbwotLQkgICAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRwcm9nZmlsZSciCi0tCSAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJE5NICRwcm9nZmlsZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCi0rCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJHByb2dmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKwkgICAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQnIgotKwkgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiROTSAkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKLSAJICBkb25lCi0gCi0gCSAgaWYgdGVzdCAtbiAiJGV4Y2x1ZGVfZXhwc3ltcyI7IHRoZW4KLSAJICAgICRvcHRfZHJ5X3J1biB8fCB7Ci0tCSAgICAgICRFR1JFUCAtdiAiICgkZXhjbHVkZV9leHBzeW1zKSQiICIkbmxpc3QiID4gIiRubGlzdCJUCi0tCSAgICAgICRNViAiJG5saXN0IlQgIiRubGlzdCIKLSsJICAgICAgZXZhbCAnJEVHUkVQIC12ICIgKCRleGNsdWRlX2V4cHN5bXMpJCIgIiRubGlzdCIgPiAiJG5saXN0IlQnCi0rCSAgICAgIGV2YWwgJyRNViAiJG5saXN0IlQgIiRubGlzdCInCi0gCSAgICB9Ci0gCSAgZmkKLSAKLSAJICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiOyB0aGVuCi0gCSAgICAkb3B0X2RyeV9ydW4gfHwgewotLQkgICAgICAkRUdSRVAgLWUgIiRleHBvcnRfc3ltYm9sc19yZWdleCIgIiRubGlzdCIgPiAiJG5saXN0IlQKLS0JICAgICAgJE1WICIkbmxpc3QiVCAiJG5saXN0IgotKwkgICAgICBldmFsICckRUdSRVAgLWUgIiRleHBvcnRfc3ltYm9sc19yZWdleCIgIiRubGlzdCIgPiAiJG5saXN0IlQnCi0rCSAgICAgIGV2YWwgJyRNViAiJG5saXN0IlQgIiRubGlzdCInCi0gCSAgICB9Ci0gCSAgZmkKLSAKLUBAIC0yNTkzLDIzICszMzI1LDIzIEBAIGV4dGVybiBcIkNcIiB7Ci0gCSAgICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIgotIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKLSAJICAgICAgJFJNICRleHBvcnRfc3ltYm9scwotLQkgICAgICAke1NFRH0gLW4gLWUgJy9eOiBAUFJPR1JBTUAgJC9kJyAtZSAncy9eLiogXCguKlwpJC9cMS9wJyA8ICIkbmxpc3QiID4gIiRleHBvcnRfc3ltYm9scyIKLSsJICAgICAgZXZhbCAiJHtTRUR9IC1uIC1lICcvXjogQFBST0dSQU1AICQvZCcgLWUgJ3MvXi4qIFwoLipcKSQvXDEvcCcgIic8ICIkbmxpc3QiID4gIiRleHBvcnRfc3ltYm9scyInCi0gCSAgICAgIGNhc2UgJGhvc3QgaW4KLSAJICAgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCi0tICAgICAgICAgICAgICAgIGVjaG8gRVhQT1JUUyA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiCi0tICAgICAgICAgICAgICAgIGNhdCAiJGV4cG9ydF9zeW1ib2xzIiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIgotKyAgICAgICAgICAgICAgICBldmFsICJlY2hvIEVYUE9SVFMgIic+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJwotKyAgICAgICAgICAgICAgICBldmFsICdjYXQgIiRleHBvcnRfc3ltYm9scyIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCi0gCSAgICAgICAgOzsKLSAJICAgICAgZXNhYwotIAkgICAgfQotIAkgIGVsc2UKLSAJICAgICRvcHRfZHJ5X3J1biB8fCB7Ci0tCSAgICAgICR7U0VEfSAtZSAncy9cKFtdLlsqXiRdXCkvXFxcMS9nJyAtZSAncy9eLyAvJyAtZSAncy8kLyQvJyA8ICIkZXhwb3J0X3N5bWJvbHMiID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIKLS0JICAgICAgJEdSRVAgLWYgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIgPCAiJG5saXN0IiA+ICIkbmxpc3QiVAotLQkgICAgICAkTVYgIiRubGlzdCJUICIkbmxpc3QiCi0rCSAgICAgIGV2YWwgIiR7U0VEfSAtZSAncy9cKFtdLlsqXiRdXCkvXFxcXFwxL2cnIC1lICdzL14vIC8nIC1lICdzLyQvJC8nIicgPCAiJGV4cG9ydF9zeW1ib2xzIiA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiJwotKwkgICAgICBldmFsICckR1JFUCAtZiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIiA8ICIkbmxpc3QiID4gIiRubGlzdCJUJwotKwkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJwotIAkgICAgICBjYXNlICRob3N0IGluCi0gCSAgICAgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCi0tCSAgICAgICAgICBlY2hvIEVYUE9SVFMgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIgotLQkgICAgICAgICAgY2F0ICIkbmxpc3QiID4+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiCi0rCSAgICAgICAgICBldmFsICJlY2hvIEVYUE9SVFMgIic+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJwotKwkgICAgICAgICAgZXZhbCAnY2F0ICIkbmxpc3QiID4+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJwotIAkgICAgICAgICAgOzsKLSAJICAgICAgZXNhYwotIAkgICAgfQotQEAgLTI2MjAsMTAgKzMzNTIsNTIgQEAgZXh0ZXJuIFwiQ1wiIHsKLSAJICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJGRscHJlZmlsZSciCi0gCSAgZnVuY19iYXNlbmFtZSAiJGRscHJlZmlsZSIKLSAJICBuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tCSAgJG9wdF9kcnlfcnVuIHx8IHsKLS0JICAgICRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCIKLS0JICAgIGV2YWwgIiROTSAkZGxwcmVmaWxlIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKLS0JICB9Ci0rICAgICAgICAgIGNhc2UgJGhvc3QgaW4KLSsJICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQotKwkgICAgICAjIGlmIGFuIGltcG9ydCBsaWJyYXJ5LCB3ZSBuZWVkIHRvIG9idGFpbiBkbG5hbWUKLSsJICAgICAgaWYgZnVuY193aW4zMl9pbXBvcnRfbGliX3AgIiRkbHByZWZpbGUiOyB0aGVuCi0rCSAgICAgICAgZnVuY190cl9zaCAiJGRscHJlZmlsZSIKLSsJICAgICAgICBldmFsICJjdXJyX2xhZmlsZT1cJGxpYmZpbGVfJGZ1bmNfdHJfc2hfcmVzdWx0IgotKwkgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSIiCi0rCSAgICAgICAgaWYgdGVzdCAtbiAiJGN1cnJfbGFmaWxlIiAmJiBmdW5jX2xhbGliX3AgIiRjdXJyX2xhZmlsZSI7IHRoZW4KLSsJICAgICAgICAgICMgVXNlIHN1YnNoZWxsLCB0byBhdm9pZCBjbG9iYmVyaW5nIGN1cnJlbnQgdmFyaWFibGUgdmFsdWVzCi0rCSAgICAgICAgICBkbHByZWZpbGVfZGxuYW1lPWBzb3VyY2UgIiRjdXJyX2xhZmlsZSIgJiYgZWNobyAiJGRsbmFtZSJgCi0rCSAgICAgICAgICBpZiB0ZXN0IC1uICIkZGxwcmVmaWxlX2RsbmFtZSIgOyB0aGVuCi0rCSAgICAgICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRkbHByZWZpbGVfZGxuYW1lIgotKwkgICAgICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotKwkgICAgICAgICAgZWxzZQotKwkgICAgICAgICAgICAjIG5vIGxhZmlsZS4gdXNlciBleHBsaWNpdGx5IHJlcXVlc3RlZCAtZGxwcmVvcGVuIDxpbXBvcnQgbGlicmFyeT4uCi0rCSAgICAgICAgICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCAiJGRscHJlZmlsZSIKLSsJICAgICAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9JHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0Ci0rCSAgICAgICAgICBmaQotKwkgICAgICAgIGZpCi0rCSAgICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKLSsJICAgICAgICAgIGlmIHRlc3QgLW4gIiRkbHByZWZpbGVfZGxiYXNlbmFtZSIgOyB0aGVuCi0rCSAgICAgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRkbHByZWZpbGVfZGxiYXNlbmFtZSIgPj4gIiRubGlzdCInCi0rCSAgICAgICAgICBlbHNlCi0rCSAgICAgICAgICAgIGZ1bmNfd2FybmluZyAiQ291bGQgbm90IGNvbXB1dGUgRExMIG5hbWUgZnJvbSAkbmFtZSIKLSsJICAgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKLSsJICAgICAgICAgIGZpCi0rCSAgICAgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGRscHJlZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsJICAgICAgICAgIGV2YWwgIiROTSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfAotKwkgICAgICAgICAgICAkU0VEIC1lICcvSSBfX2ltcC9kJyAtZSAncy9JIF9fbm1fL0QgLztzL19ubV9fLy8nID4+ICckbmxpc3QnIgotKwkgICAgICAgIH0KLSsJICAgICAgZWxzZSAjIG5vdCBhbiBpbXBvcnQgbGliCi0rCSAgICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKLSsJICAgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCi0rCSAgICAgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGRscHJlZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsJICAgICAgICAgIGV2YWwgIiROTSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCi0rCSAgICAgICAgfQotKwkgICAgICBmaQotKwkgICAgOzsKLSsJICAgICopCi0rCSAgICAgICRvcHRfZHJ5X3J1biB8fCB7Ci0rCSAgICAgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKLSsJICAgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGRscHJlZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsJICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgotKwkgICAgICB9Ci0rCSAgICA7OwotKyAgICAgICAgICBlc2FjCi0gCWRvbmUKLSAKLSAJJG9wdF9kcnlfcnVuIHx8IHsKLUBAIC0yNjYxLDI2ICszNDM1LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgewotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHZvaWQgKmFkZHJlc3M7Ci0gfSBsdF9kbHN5bWxpc3Q7Ci0tIgotLQkgIGNhc2UgJGhvc3QgaW4KLS0JICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKLS0JICAgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCi0tLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZQotLSAgIHJ1bnRpbWUgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uCi0tICAgb24gcHNldWRvLXJlbG9jcy4gICovIgotLQkgICAgbHRfZGxzeW1fY29uc3Q9IDs7Ci0tCSAgKm9zZjUqKQotLQkgICAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKLS0vKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhICovIgotLQkgICAgbHRfZGxzeW1fY29uc3Q9IDs7Ci0tCSAgKikKLS0JICAgIGx0X2Rsc3ltX2NvbnN0PWNvbnN0IDs7Ci0tCSAgZXNhYwotLQotLQkgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCi0tZXh0ZXJuICRsdF9kbHN5bV9jb25zdCBsdF9kbHN5bWxpc3QKLStleHRlcm4gTFRfRExTWU1fQ09OU1QgbHRfZGxzeW1saXN0Ci0gbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tdOwotLSRsdF9kbHN5bV9jb25zdCBsdF9kbHN5bWxpc3QKLStMVF9ETFNZTV9DT05TVCBsdF9kbHN5bWxpc3QKLSBsdF8ke215X3ByZWZpeH1fTFRYX3ByZWxvYWRlZF9zeW1ib2xzW10gPQotIHtcCi0gICB7IFwiJG15X29yaWdpbmF0b3JcIiwgKHZvaWQgKikgMCB9LCIKLUBAIC0yNzM2LDcgKzM0OTMsNyBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewotIAlmb3IgYXJnIGluICRMVENGTEFHUzsgZG8KLSAJICBjYXNlICRhcmcgaW4KLSAJICAtcGllIHwgLWZwaWUgfCAtZlBJRSkgOzsKLS0JICAqKSBzeW10YWJfY2ZsYWdzPSIkc3ltdGFiX2NmbGFncyAkYXJnIiA7OwotKwkgICopIGZ1bmNfYXBwZW5kIHN5bXRhYl9jZmxhZ3MgIiAkYXJnIiA7OwotIAkgIGVzYWMKLSAJZG9uZQotIAotQEAgLTI3OTYsOSArMzU1MywxMSBAQCBmdW5jX3dpbjMyX2xpYmlkICgpCi0gICAgIHdpbjMyX2xpYmlkX3R5cGU9Ing4NiBhcmNoaXZlIGltcG9ydCIKLSAgICAgOzsKLSAgICphclwgYXJjaGl2ZSopICMgY291bGQgYmUgYW4gaW1wb3J0LCBvciBzdGF0aWMKLS0gICAgaWYgJE9CSkRVTVAgLWYgIiQxIiB8ICRTRUQgLWUgJzEwcScgMj4vZGV2L251bGwgfAotLSAgICAgICAkRUdSRVAgJ2ZpbGUgZm9ybWF0IChwZS1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknID4vZGV2L251bGw7IHRoZW4KLS0gICAgICB3aW4zMl9ubXJlcz1gJE5NIC1mIHBvc2l4IC1BICIkMSIgfAotKyAgICAjIEtlZXAgdGhlIGVncmVwIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gX0xUX0NIRUNLX01BR0lDX01FVEhPRC4KLSsgICAgaWYgZXZhbCAkT0JKRFVNUCAtZiAkMSB8ICRTRUQgLWUgJzEwcScgMj4vZGV2L251bGwgfAotKyAgICAgICAkRUdSRVAgJ2ZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScgPi9kZXYvbnVsbDsgdGhlbgotKyAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICB3aW4zMl9ubXJlcz1gZXZhbCAkTk0gLWYgcG9zaXggLUEgXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgfAotIAkkU0VEIC1uIC1lICcKLSAJICAgIDEsMTAwewotIAkJLyBJIC97Ci1AQCAtMjgyNyw2ICszNTg2LDEzMSBAQCBmdW5jX3dpbjMyX2xpYmlkICgpCi0gICAkRUNITyAiJHdpbjMyX2xpYmlkX3R5cGUiCi0gfQotIAotKyMgZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliIEFSRwotKyMKLSsjIFBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlCi0rIyBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQKLSsjIGltcG9ydCBsaWJyYXJ5IEFSRy4KLSsjIEludm9rZWQgYnkgZXZhbCdpbmcgdGhlIGxpYnRvb2wgdmFyaWFibGUKLSsjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiB0aGUgdmFyaWFibGUKLSsjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAotK2Z1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PWAkRExMVE9PTCAtLWlkZW50aWZ5LXN0cmljdCAtLWlkZW50aWZ5ICIkMSJgCi0rfQotKwotKyMgZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgU0VDVElPTl9OQU1FIExJQk5BTUVzCi0rIwotKyMgVGhlIGlzIHRoZSBjb3JlIG9mIGEgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gb2YgYQotKyMgcGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUgbmFtZSBvZiB0aGUKLSsjIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBpbXBvcnQgbGlicmFyeSBMSUJOQU1FLgotKyMKLSsjIFNFQ1RJT05fTkFNRSBpcyBlaXRoZXIgLmlkYXRhJDYgb3IgLmlkYXRhJDcsIGRlcGVuZGluZwotKyMgb24gdGhlIHBsYXRmb3JtIGFuZCBjb21waWxlciB0aGF0IGNyZWF0ZWQgdGhlIGltcGxpYi4KLSsjCi0rIyBFY2hvcyB0aGUgbmFtZSBvZiB0aGUgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUKLSsjIHNwZWNpZmllZCBpbXBvcnQgbGlicmFyeS4KLStmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIG1hdGNoX2xpdGVyYWw9YCRFQ0hPICIkMSIgfCAkU0VEICIkc2VkX21ha2VfbGl0ZXJhbF9yZWdleCJgCi0rICAkT0JKRFVNUCAtcyAtLXNlY3Rpb24gIiQxIiAiJDIiIDI+L2Rldi9udWxsIHwKLSsgICAgJFNFRCAnL15Db250ZW50cyBvZiBzZWN0aW9uICciJG1hdGNoX2xpdGVyYWwiJzovewotKyAgICAgICMgUGxhY2UgbWFya2VyIGF0IGJlZ2lubmluZyBvZiBhcmNoaXZlIG1lbWJlciBkbGxuYW1lIHNlY3Rpb24KLSsgICAgICBzLy4qLz09PT1NQVJLPT09PS8KLSsgICAgICBwCi0rICAgICAgZAotKyAgICB9Ci0rICAgICMgVGhlc2UgbGluZXMgY2FuIHNvbWV0aW1lcyBiZSBsb25nZXIgdGhhbiA0MyBjaGFyYWN0ZXJzLCBidXQKLSsgICAgIyBhcmUgYWx3YXlzIHVuaW50ZXJlc3RpbmcKLSsgICAgLzpbCSBdKmZpbGUgZm9ybWF0IHBlW2ldXHssMVx9LS9kCi0rICAgIC9eSW4gYXJjaGl2ZSBbXjpdKjovZAotKyAgICAjIEVuc3VyZSBtYXJrZXIgaXMgcHJpbnRlZAotKyAgICAvXj09PT1NQVJLPT09PS9wCi0rICAgICMgUmVtb3ZlIGFsbCBsaW5lcyB3aXRoIGxlc3MgdGhhbiA0MyBjaGFyYWN0ZXJzCi0rICAgIC9eLlx7NDNcfS8hZAotKyAgICAjIEZyb20gcmVtYWluaW5nIGxpbmVzLCByZW1vdmUgZmlyc3QgNDMgY2hhcmFjdGVycwotKyAgICBzL14uXHs0M1x9Ly8nIHwKLSsgICAgJFNFRCAtbiAnCi0rICAgICAgIyBKb2luIG1hcmtlciBhbmQgYWxsIGxpbmVzIHVudGlsIG5leHQgbWFya2VyIGludG8gYSBzaW5nbGUgbGluZQotKyAgICAgIC9ePT09PU1BUks9PT09LyBiIHBhcmEKLSsgICAgICBICi0rICAgICAgJCBiIHBhcmEKLSsgICAgICBiCi0rICAgICAgOnBhcmEKLSsgICAgICB4Ci0rICAgICAgcy9cbi8vZwotKyAgICAgICMgUmVtb3ZlIHRoZSBtYXJrZXIKLSsgICAgICBzL149PT09TUFSSz09PT0vLwotKyAgICAgICMgUmVtb3ZlIHRyYWlsaW5nIGRvdHMgYW5kIHdoaXRlc3BhY2UKLSsgICAgICBzL1tcLiBcdF0qJC8vCi0rICAgICAgIyBQcmludAotKyAgICAgIC8uL3AnIHwKLSsgICAgIyB3ZSBub3cgaGF2ZSBhIGxpc3QsIG9uZSBlbnRyeSBwZXIgbGluZSwgb2YgdGhlIHN0cmluZ2lmaWVkCi0rICAgICMgY29udGVudHMgb2YgdGhlIGFwcHJvcHJpYXRlIHNlY3Rpb24gb2YgYWxsIG1lbWJlcnMgb2YgdGhlCi0rICAgICMgYXJjaGl2ZSB3aGljaCBwb3NzZXNzIHRoYXQgc2VjdGlvbi4gSGV1cmlzdGljOiBlbGltaW5hdGUKLSsgICAgIyBhbGwgdGhvc2Ugd2hpY2ggaGF2ZSBhIGZpcnN0IG9yIHNlY29uZCBjaGFyYWN0ZXIgdGhhdCBpcwotKyAgICAjIGEgJy4nICh0aGF0IGlzLCBvYmpkdW1wJ3MgcmVwcmVzZW50YXRpb24gb2YgYW4gdW5wcmludGFibGUKLSsgICAgIyBjaGFyYWN0ZXIuKSBUaGlzIHNob3VsZCB3b3JrIGZvciBhbGwgYXJjaGl2ZXMgd2l0aCBsZXNzIHRoYW4KLSsgICAgIyAweDMwMmYgZXhwb3J0cyAtLSBidXQgd2lsbCBmYWlsIGZvciBETExzIHdob3NlIG5hbWUgYWN0dWFsbHkKLSsgICAgIyBiZWdpbnMgd2l0aCBhIGxpdGVyYWwgJy4nIG9yIGEgc2luZ2xlIGNoYXJhY3RlciBmb2xsb3dlZCBieQotKyAgICAjIGEgJy4nLgotKyAgICAjCi0rICAgICMgT2YgdGhvc2UgdGhhdCByZW1haW4sIHByaW50IHRoZSBmaXJzdCBvbmUuCi0rICAgICRTRUQgLWUgJy9eXC4vZDsvXi5cLi9kO3EnCi0rfQotKwotKyMgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCBBUkcKLSsjIFRoaXMgcHJlZGljYXRlIHJldHVybnMgd2l0aCB6ZXJvIHN0YXR1cyAoVFJVRSkgaWYKLSsjIEFSRyBpcyBhIEdOVS9iaW51dGlscy1zdHlsZSBpbXBvcnQgbGlicmFyeS4gUmV0dXJucwotKyMgd2l0aCBub256ZXJvIHN0YXR1cyAoRkFMU0UpIG90aGVyd2lzZS4KLStmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfdG1wPWAkTk0gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiIHwgZXZhbCAiJGdsb2JhbF9zeW1ib2xfcGlwZSIgfCAkRUdSRVAgJyAoX2hlYWRfW0EtWmEtejAtOV9dK19bYWRdbCp8W0EtWmEtejAtOV9dK19bYWRdbCpfaW5hbWUpJCdgCi0rICB0ZXN0IC1uICIkZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfdG1wIgotK30KLSsKLSsjIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfcCBBUkcKLSsjIFRoaXMgcHJlZGljYXRlIHJldHVybnMgd2l0aCB6ZXJvIHN0YXR1cyAoVFJVRSkgaWYKLSsjIEFSRyBpcyBhbiBNUy1zdHlsZSBpbXBvcnQgbGlicmFyeS4gUmV0dXJucwotKyMgd2l0aCBub256ZXJvIHN0YXR1cyAoRkFMU0UpIG90aGVyd2lzZS4KLStmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3RtcD1gJE5NICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiB8IGV2YWwgIiRnbG9iYWxfc3ltYm9sX3BpcGUiIHwgJEdSRVAgJ19OVUxMX0lNUE9SVF9ERVNDUklQVE9SJ2AKLSsgIHRlc3QgLW4gIiRmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3RtcCIKLSt9Ci0rCi0rIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sgQVJHCi0rIyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZQotKyMgbmFtZSBvZiB0aGUgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkCi0rIyBpbXBvcnQgbGlicmFyeSBBUkcuCi0rIwotKyMgVGhpcyBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBpcyBmb3IgdXNlIHdoZW4gJERMTFRPT0wKLSsjIGRvZXMgbm90IHN1cHBvcnQgdGhlIC0taWRlbnRpZnktc3RyaWN0IG9wdGlvbi4KLSsjIEludm9rZWQgYnkgZXZhbCdpbmcgdGhlIGxpYnRvb2wgdmFyaWFibGUKLSsjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiB0aGUgdmFyaWFibGUKLSsjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAotK2Z1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjayAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGlmIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgIiQxIiA7IHRoZW4KLSsgICAgIyBiaW51dGlscyBpbXBvcnQgbGlicmFyeQotKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgJy5pZGF0YSQ3JyAiJDEiYAotKyAgZWxpZiBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgIiQxIiA7IHRoZW4KLSsgICAgIyBtcy1nZW5lcmF0ZWQgaW1wb3J0IGxpYnJhcnkKLSsgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICcuaWRhdGEkNicgIiQxImAKLSsgIGVsc2UKLSsgICAgIyB1bmtub3duCi0rICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PSIiCi0rICBmaQotK30KLSAKLSAKLSAjIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlIGRpciBvbGRsaWIKLUBAIC0yOTE3LDcgKzM4MDEsNyBAQCBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgKCkKLSAJICAgIGRhcndpbl9maWxlPQotIAkgICAgZGFyd2luX2ZpbGVzPQotIAkgICAgZm9yIGRhcndpbl9maWxlIGluICRkYXJ3aW5fZmlsZWxpc3Q7IGRvCi0tCSAgICAgIGRhcndpbl9maWxlcz1gZmluZCB1bmZhdC0kJCAtbmFtZSAkZGFyd2luX2ZpbGUgLXByaW50IHwgJE5MMlNQYAotKwkgICAgICBkYXJ3aW5fZmlsZXM9YGZpbmQgdW5mYXQtJCQgLW5hbWUgJGRhcndpbl9maWxlIC1wcmludCB8IHNvcnQgfCAkTkwyU1BgCi0gCSAgICAgICRMSVBPIC1jcmVhdGUgLW91dHB1dCAiJGRhcndpbl9maWxlIiAkZGFyd2luX2ZpbGVzCi0gCSAgICBkb25lICMgJGRhcndpbl9maWxlbGlzdAotIAkgICAgJFJNIC1yZiB1bmZhdC0kJAotQEAgLTI5MzIsNyArMzgxNiw3IEBAIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAoKQotICAgICAgICAgZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgIiRteV94ZGlyIiAiJG15X3hhYnMiCi0gCTs7Ci0gICAgICAgZXNhYwotLSAgICAgIG15X29sZG9ianM9IiRteV9vbGRvYmpzICJgZmluZCAkbXlfeGRpciAtbmFtZSBcKi4kb2JqZXh0IC1wcmludCAtbyAtbmFtZSBcKi5sbyAtcHJpbnQgfCAkTkwyU1BgCi0rICAgICAgbXlfb2xkb2Jqcz0iJG15X29sZG9ianMgImBmaW5kICRteV94ZGlyIC1uYW1lIFwqLiRvYmpleHQgLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8IHNvcnQgfCAkTkwyU1BgCi0gICAgIGRvbmUKLSAKLSAgICAgZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdD0iJG15X29sZG9ianMiCi1AQCAtMzAxNCw3ICszODk4LDExMCBAQCBmdW5jX2ZhbGxiYWNrX2VjaG8gKCkKLSBfTFRFQ0hPX0VPRicKLSB9Ci0gICAgIEVDSE89XCIkcUVDSE9cIgotLSAgZmlcCi0rICBmaQotKwotKyMgVmVyeSBiYXNpYyBvcHRpb24gcGFyc2luZy4gVGhlc2Ugb3B0aW9ucyBhcmUgKGEpIHNwZWNpZmljIHRvCi0rIyB0aGUgbGlidG9vbCB3cmFwcGVyLCAoYikgYXJlIGlkZW50aWNhbCBiZXR3ZWVuIHRoZSB3cmFwcGVyCi0rIyAvc2NyaXB0LyBhbmQgdGhlIHdyYXBwZXIgL2V4ZWN1dGFibGUvIHdoaWNoIGlzIHVzZWQgb25seSBvbgotKyMgd2luZG93cyBwbGF0Zm9ybXMsIGFuZCAoYykgYWxsIGJlZ2luIHdpdGggdGhlIHN0cmluZyAiLS1sdC0iCi0rIyAoYXBwbGljYXRpb24gcHJvZ3JhbXMgYXJlIHVubGlrZWx5IHRvIGhhdmUgb3B0aW9ucyB3aGljaCBtYXRjaAotKyMgdGhpcyBwYXR0ZXJuKS4KLSsjCi0rIyBUaGVyZSBhcmUgb25seSB0d28gc3VwcG9ydGVkIG9wdGlvbnM6IC0tbHQtZGVidWcgYW5kCi0rIyAtLWx0LWR1bXAtc2NyaXB0LiBUaGVyZSBpcywgZGVsaWJlcmF0ZWx5LCBubyAtLWx0LWhlbHAuCi0rIwotKyMgVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoaXMgcGFyc2luZyBmdW5jdGlvbiBzaG91bGQgYmUgdGhlCi0rIyBzY3JpcHQncyAkMCB2YWx1ZSwgZm9sbG93ZWQgYnkgIiRAIi4KLStsdF9vcHRpb25fZGVidWc9Ci0rZnVuY19wYXJzZV9sdF9vcHRpb25zICgpCi0rewotKyAgbHRfc2NyaXB0X2FyZzA9XCQwCi0rICBzaGlmdAotKyAgZm9yIGx0X29wdAotKyAgZG8KLSsgICAgY2FzZSBcIlwkbHRfb3B0XCIgaW4KLSsgICAgLS1sdC1kZWJ1ZykgbHRfb3B0aW9uX2RlYnVnPTEgOzsKLSsgICAgLS1sdC1kdW1wLXNjcmlwdCkKLSsgICAgICAgIGx0X2R1bXBfRD1cYFwkRUNITyBcIlhcJGx0X3NjcmlwdF9hcmcwXCIgfCAkU0VEIC1lICdzL15YLy8nIC1lICdzJS9bXi9dKiQlJSdcYAotKyAgICAgICAgdGVzdCBcIlhcJGx0X2R1bXBfRFwiID0gXCJYXCRsdF9zY3JpcHRfYXJnMFwiICYmIGx0X2R1bXBfRD0uCi0rICAgICAgICBsdF9kdW1wX0Y9XGBcJEVDSE8gXCJYXCRsdF9zY3JpcHRfYXJnMFwiIHwgJFNFRCAtZSAncy9eWC8vJyAtZSAncyVeLiovJSUnXGAKLSsgICAgICAgIGNhdCBcIlwkbHRfZHVtcF9EL1wkbHRfZHVtcF9GXCIKLSsgICAgICAgIGV4aXQgMAotKyAgICAgIDs7Ci0rICAgIC0tbHQtKikKLSsgICAgICAgIFwkRUNITyBcIlVucmVjb2duaXplZCAtLWx0LSBvcHRpb246ICdcJGx0X29wdCdcIiAxPiYyCi0rICAgICAgICBleGl0IDEKLSsgICAgICA7OwotKyAgICBlc2FjCi0rICBkb25lCi0rCi0rICAjIFByaW50IHRoZSBkZWJ1ZyBiYW5uZXIgaW1tZWRpYXRlbHk6Ci0rICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgotKyAgICBlY2hvIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbGlidG9vbCB3cmFwcGVyIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTlwiIDE+JjIKLSsgIGZpCi0rfQotKwotKyMgVXNlZCB3aGVuIC0tbHQtZGVidWcuIFByaW50cyBpdHMgYXJndW1lbnRzIHRvIHN0ZG91dAotKyMgKHJlZGlyZWN0aW9uIGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVyKQotK2Z1bmNfbHRfZHVtcF9hcmdzICgpCi0rewotKyAgbHRfZHVtcF9hcmdzX049MTsKLSsgIGZvciBsdF9hcmcKLSsgIGRvCi0rICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbXCRsdF9kdW1wX2FyZ3NfTl06IFwkbHRfYXJnXCIKLSsgICAgbHRfZHVtcF9hcmdzX049XGBleHByIFwkbHRfZHVtcF9hcmdzX04gKyAxXGAKLSsgIGRvbmUKLSt9Ci0rCi0rIyBDb3JlIGZ1bmN0aW9uIGZvciBsYXVuY2hpbmcgdGhlIHRhcmdldCBhcHBsaWNhdGlvbgotK2Z1bmNfZXhlY19wcm9ncmFtX2NvcmUgKCkKLSt7Ci0rIgotKyAgY2FzZSAkaG9zdCBpbgotKyAgIyBCYWNrc2xhc2hlcyBzZXBhcmF0ZSBkaXJlY3RvcmllcyBvbiBwbGFpbiB3aW5kb3dzCi0rICAqLSotbWluZ3cgfCAqLSotb3MyKiB8ICotY2VnY2MqKQotKyAgICAkRUNITyAiXAotKyAgICAgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCi0rICAgICAgICBcJEVDSE8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBuZXdhcmd2WzBdOiBcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgMT4mMgotKyAgICAgICAgZnVuY19sdF9kdW1wX2FyZ3MgXCR7MStcIlwkQFwifSAxPiYyCi0rICAgICAgZmkKLSsgICAgICBleGVjIFwiXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KLSsiCi0rICAgIDs7Ci0rCi0rICAqKQotKyAgICAkRUNITyAiXAotKyAgICAgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCi0rICAgICAgICBcJEVDSE8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBuZXdhcmd2WzBdOiBcJHByb2dkaXIvXCRwcm9ncmFtXCIgMT4mMgotKyAgICAgICAgZnVuY19sdF9kdW1wX2FyZ3MgXCR7MStcIlwkQFwifSAxPiYyCi0rICAgICAgZmkKLSsgICAgICBleGVjIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KLSsiCi0rICAgIDs7Ci0rICBlc2FjCi0rICAkRUNITyAiXAotKyAgICAgIFwkRUNITyBcIlwkMDogY2Fubm90IGV4ZWMgXCRwcm9ncmFtIFwkKlwiIDE+JjIKLSsgICAgICBleGl0IDEKLSt9Ci0rCi0rIyBBIGZ1bmN0aW9uIHRvIGVuY2Fwc3VsYXRlIGxhdW5jaGluZyB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uCi0rIyBTdHJpcHMgb3B0aW9ucyBpbiB0aGUgLS1sdC0qIG5hbWVzcGFjZSBmcm9tIFwkQCBhbmQKLSsjIGxhdW5jaGVzIHRhcmdldCBhcHBsaWNhdGlvbiB3aXRoIHRoZSByZW1haW5pbmcgYXJndW1lbnRzLgotK2Z1bmNfZXhlY19wcm9ncmFtICgpCi0rewotKyAgZm9yIGx0X3dyX2FyZwotKyAgZG8KLSsgICAgY2FzZSBcJGx0X3dyX2FyZyBpbgotKyAgICAtLWx0LSopIDs7Ci0rICAgICopIHNldCB4IFwiXCRAXCIgXCJcJGx0X3dyX2FyZ1wiOyBzaGlmdDs7Ci0rICAgIGVzYWMKLSsgICAgc2hpZnQKLSsgIGRvbmUKLSsgIGZ1bmNfZXhlY19wcm9ncmFtX2NvcmUgXCR7MStcIlwkQFwifQotK30KLSsKLSsgICMgUGFyc2Ugb3B0aW9ucwotKyAgZnVuY19wYXJzZV9sdF9vcHRpb25zIFwiXCQwXCIgXCR7MStcIlwkQFwifQotIAotICAgIyBGaW5kIHRoZSBkaXJlY3RvcnkgdGhhdCB0aGlzIHNjcmlwdCBsaXZlcyBpbi4KLSAgIHRoaXNkaXI9XGBcJEVDSE8gXCJcJGZpbGVcIiB8ICRTRUQgJ3MlL1teL10qJCUlJ1xgCi1AQCAtMzA3OCw3ICs0MDY1LDcgQEAgX0xURUNIT19FT0YnCi0gCi0gICAgICMgcmVsaW5rIGV4ZWN1dGFibGUgaWYgbmVjZXNzYXJ5Ci0gICAgIGlmIHRlc3QgLW4gXCJcJHJlbGlua19jb21tYW5kXCI7IHRoZW4KLS0gICAgICBpZiByZWxpbmtfY29tbWFuZF9vdXRwdXQ9XGBldmFsIFwiXCRyZWxpbmtfY29tbWFuZFwiIDI+JjFcYDsgdGhlbiA6Ci0rICAgICAgaWYgcmVsaW5rX2NvbW1hbmRfb3V0cHV0PVxgZXZhbCBcJHJlbGlua19jb21tYW5kIDI+JjFcYDsgdGhlbiA6Ci0gICAgICAgZWxzZQotIAkkRUNITyBcIlwkcmVsaW5rX2NvbW1hbmRfb3V0cHV0XCIgPiYyCi0gCSRSTSBcIlwkcHJvZ2Rpci9cJGZpbGVcIgotQEAgLTMxMDIsNiArNDA4OSwxOCBAQCBfTFRFQ0hPX0VPRicKLSAKLSAgIGlmIHRlc3QgLWYgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCI7IHRoZW4iCi0gCi0rCSMgZml4dXAgdGhlIGRsbCBzZWFyY2hwYXRoIGlmIHdlIG5lZWQgdG8uCi0rCSMKLSsJIyBGaXggdGhlIERMTCBzZWFyY2hwYXRoIGlmIHdlIG5lZWQgdG8uICBEbyB0aGlzIGJlZm9yZSBwcmVwZW5kaW5nCi0rCSMgdG8gc2hsaWJwYXRoLCBiZWNhdXNlIG9uIFdpbmRvd3MsIGJvdGggYXJlIFBBVEggYW5kIHVuaW5zdGFsbGVkCi0rCSMgbGlicmFyaWVzIG11c3QgY29tZSBmaXJzdC4KLSsJaWYgdGVzdCAtbiAiJGRsbHNlYXJjaHBhdGgiOyB0aGVuCi0rCSAgJEVDSE8gIlwKLSsgICAgIyBBZGQgdGhlIGRsbCBzZWFyY2ggcGF0aCBjb21wb25lbnRzIHRvIHRoZSBleGVjdXRhYmxlIFBBVEgKLSsgICAgUEFUSD0kZGxsc2VhcmNocGF0aDpcJFBBVEgKLSsiCi0rCWZpCi0rCi0gCSMgRXhwb3J0IG91ciBzaGxpYnBhdGhfdmFyIGlmIHdlIGhhdmUgb25lLgotIAlpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCi0gCSAgJEVDSE8gIlwKLUBAIC0zMTE2LDM1ICs0MTE1LDEwIEBAIF9MVEVDSE9fRU9GJwotICIKLSAJZmkKLSAKLS0JIyBmaXh1cCB0aGUgZGxsIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4KLS0JaWYgdGVzdCAtbiAiJGRsbHNlYXJjaHBhdGgiOyB0aGVuCi0tCSAgJEVDSE8gIlwKLS0gICAgIyBBZGQgdGhlIGRsbCBzZWFyY2ggcGF0aCBjb21wb25lbnRzIHRvIHRoZSBleGVjdXRhYmxlIFBBVEgKLS0gICAgUEFUSD0kZGxsc2VhcmNocGF0aDpcJFBBVEgKLS0iCi0tCWZpCi0tCi0gCSRFQ0hPICJcCi0gICAgIGlmIHRlc3QgXCJcJGxpYnRvb2xfZXhlY3V0ZV9tYWdpY1wiICE9IFwiJG1hZ2ljXCI7IHRoZW4KLSAgICAgICAjIFJ1biB0aGUgYWN0dWFsIHByb2dyYW0gd2l0aCBvdXIgYXJndW1lbnRzLgotLSIKLS0JY2FzZSAkaG9zdCBpbgotLQkjIEJhY2tzbGFzaGVzIHNlcGFyYXRlIGRpcmVjdG9yaWVzIG9uIHBsYWluIHdpbmRvd3MKLS0JKi0qLW1pbmd3IHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKLS0JICAkRUNITyAiXAotLSAgICAgIGV4ZWMgXCJcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQotLSIKLS0JICA7OwotLQotLQkqKQotLQkgICRFQ0hPICJcCi0tICAgICAgZXhlYyBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9Ci0tIgotLQkgIDs7Ci0tCWVzYWMKLS0JJEVDSE8gIlwKLS0gICAgICBcJEVDSE8gXCJcJDA6IGNhbm5vdCBleGVjIFwkcHJvZ3JhbSBcJCpcIiAxPiYyCi0tICAgICAgZXhpdCAxCi0rICAgICAgZnVuY19leGVjX3Byb2dyYW0gXCR7MStcIlwkQFwifQotICAgICBmaQotICAgZWxzZQotICAgICAjIFRoZSBwcm9ncmFtIGRvZXNuJ3QgZXhpc3QuCi1AQCAtMzE1OCwxNjYgKzQxMzIsNiBAQCBmaVwKLSB9Ci0gCi0gCi0tIyBmdW5jX3RvX2hvc3RfcGF0aCBhcmcKLS0jCi0tIyBDb252ZXJ0IHBhdGhzIHRvIGhvc3QgZm9ybWF0IHdoZW4gdXNlZCB3aXRoIGJ1aWxkIHRvb2xzLgotLSMgSW50ZW5kZWQgZm9yIHVzZSB3aXRoICJuYXRpdmUiIG1pbmd3ICh3aGVyZSBsaWJ0b29sIGl0c2VsZgotLSMgaXMgcnVubmluZyB1bmRlciB0aGUgbXN5cyBzaGVsbCksIG9yIGluIHRoZSBmb2xsb3dpbmcgY3Jvc3MtCi0tIyBidWlsZCBlbnZpcm9ubWVudHM6Ci0tIyAgICAkYnVpbGQgICAgICAgICAgJGhvc3QKLS0jICAgIG1pbmd3IChtc3lzKSAgICBtaW5ndyAgW2UuZy4gbmF0aXZlXQotLSMgICAgY3lnd2luICAgICAgICAgIG1pbmd3Ci0tIyAgICAqbml4ICsgd2luZSAgICAgbWluZ3cKLS0jIHdoZXJlIHdpbmUgaXMgZXF1aXBwZWQgd2l0aCB0aGUgYHdpbmVwYXRoJyBleGVjdXRhYmxlLgotLSMgSW4gdGhlIG5hdGl2ZSBtaW5ndyBjYXNlLCB0aGUgKG1zeXMpIHNoZWxsIGF1dG9tYXRpY2FsbHkKLS0jIGNvbnZlcnRzIHBhdGhzIGZvciBhbnkgbm9uLW1zeXMgYXBwbGljYXRpb25zIGl0IGxhdW5jaGVzLAotLSMgYnV0IHRoYXQgZmFjaWxpdHkgaXNuJ3QgYXZhaWxhYmxlIGZyb20gaW5zaWRlIHRoZSBjd3JhcHBlci4KLS0jIFNpbWlsYXIgYWNjb21tb2RhdGlvbnMgYXJlIG5lY2Vzc2FyeSBmb3IgJGhvc3QgbWluZ3cgYW5kCi0tIyAkYnVpbGQgY3lnd2luLiAgQ2FsbGluZyB0aGlzIGZ1bmN0aW9uIGRvZXMgbm8gaGFybSBmb3Igb3RoZXIKLS0jICRob3N0LyRidWlsZCBjb21iaW5hdGlvbnMgbm90IGxpc3RlZCBhYm92ZS4KLS0jCi0tIyBBUkcgaXMgdGhlIHBhdGggKG9uICRidWlsZCkgdGhhdCBzaG91bGQgYmUgY29udmVydGVkIHRvCi0tIyB0aGUgcHJvcGVyIHJlcHJlc2VudGF0aW9uIGZvciAkaG9zdC4gVGhlIHJlc3VsdCBpcyBzdG9yZWQKLS0jIGluICRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCi0tZnVuY190b19ob3N0X3BhdGggKCkKLS17Ci0tICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotLSAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0tICAgIGNhc2UgJGhvc3QgaW4KLS0gICAgICAqbWluZ3cqICkKLS0gICAgICAgIGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnk9J3N8XFxcXCp8XFx8ZztzfC98XFx8ZztzfFxcfFxcXFx8ZycKLS0gICAgICAgIGNhc2UgJGJ1aWxkIGluCi0tICAgICAgICAgICptaW5ndyogKSAjIGFjdHVhbGx5LCBtc3lzCi0tICAgICAgICAgICAgIyBhd2t3YXJkOiBjbWQgYXBwZW5kcyBzcGFjZXMgdG8gcmVzdWx0Ci0tICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWAoIGNtZCAvL2MgZWNobyAiJDEiICkgMj4vZGV2L251bGwgfAotLSAgICAgICAgICAgICAgJFNFRCAtZSAncy9bIF0qJC8vJyAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICAgICpjeWd3aW4qICkKLS0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGN5Z3BhdGggLXcgIiQxIiB8Ci0tCSAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgICAqICkKLS0gICAgICAgICAgICAjIFVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXMgbm90IGV4aXQgd2l0aCBhIG5vbi16ZXJvCi0tICAgICAgICAgICAgIyBlcnJvciBjb2RlLCBzbyB3ZSBhcmUgZm9yY2VkIHRvIGNoZWNrIHRoZSBjb250ZW50cyBvZgotLSAgICAgICAgICAgICMgc3Rkb3V0LiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIGNvbW1hbmQgaXMgbm90Ci0tICAgICAgICAgICAgIyBmb3VuZCwgdGhlIHNoZWxsIHdpbGwgc2V0IGFuIGV4aXQgY29kZSBvZiAxMjcgYW5kIHByaW50Ci0tICAgICAgICAgICAgIyAqYW4gZXJyb3IgbWVzc2FnZSogdG8gc3Rkb3V0LiBTbyB3ZSBtdXN0IGNoZWNrIGZvciBib3RoCi0tICAgICAgICAgICAgIyBlcnJvciBjb2RlIG9mIHplcm8gQU5EIG5vbi1lbXB0eSBzdGRvdXQsIHdoaWNoIGV4cGxhaW5zCi0tICAgICAgICAgICAgIyB0aGUgb2RkIGNvbnN0cnVjdGlvbjoKLS0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPWB3aW5lcGF0aCAtdyAiJDEiIDI+L2Rldi9udWxsYAotLSAgICAgICAgICAgIGlmIHRlc3QgIiQ/IiAtZXEgMCAmJiB0ZXN0IC1uICIke2Z1bmNfdG9faG9zdF9wYXRoX3RtcDF9IjsgdGhlbgotLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWAkRUNITyAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiIHwKLS0gICAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotLSAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICMgQWxsb3cgd2FybmluZyBiZWxvdy4KLS0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0KLS0gICAgICAgICAgICBmaQotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICBlc2FjCi0tICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IiA7IHRoZW4KLS0gICAgICAgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSBob3N0IHBhdGggY29ycmVzcG9uZGluZyB0byIKLS0gICAgICAgICAgZnVuY19lcnJvciAiICBcYCQxJyIKLS0gICAgICAgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCi0tICAgICAgICAgICMgRmFsbGJhY2s6Ci0tICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0tICAgICAgICBmaQotLSAgICAgICAgOzsKLS0gICAgZXNhYwotLSAgZmkKLS19Ci0tIyBlbmQ6IGZ1bmNfdG9faG9zdF9wYXRoCi0tCi0tIyBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgYXJnCi0tIwotLSMgQ29udmVydCBwYXRobGlzdHMgdG8gaG9zdCBmb3JtYXQgd2hlbiB1c2VkIHdpdGggYnVpbGQgdG9vbHMuCi0tIyBTZWUgZnVuY190b19ob3N0X3BhdGgoKSwgYWJvdmUuIFRoaXMgZnVuY3Rpb24gc3VwcG9ydHMgdGhlCi0tIyBmb2xsb3dpbmcgJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9ucyAoYnV0IGRvZXMgbm8gaGFybSBmb3IKLS0jIGNvbWJpbmF0aW9ucyBub3QgbGlzdGVkIGhlcmUpOgotLSMgICAgJGJ1aWxkICAgICAgICAgICRob3N0Ci0tIyAgICBtaW5ndyAobXN5cykgICAgbWluZ3cgIFtlLmcuIG5hdGl2ZV0KLS0jICAgIGN5Z3dpbiAgICAgICAgICBtaW5ndwotLSMgICAgKm5peCArIHdpbmUgICAgIG1pbmd3Ci0tIwotLSMgUGF0aCBzZXBhcmF0b3JzIGFyZSBhbHNvIGNvbnZlcnRlZCBmcm9tICRidWlsZCBmb3JtYXQgdG8KLS0jICRob3N0IGZvcm1hdC4gSWYgQVJHIGJlZ2lucyBvciBlbmRzIHdpdGggYSBwYXRoIHNlcGFyYXRvcgotLSMgY2hhcmFjdGVyLCBpdCBpcyBwcmVzZXJ2ZWQgKGJ1dCBjb252ZXJ0ZWQgdG8gJGhvc3QgZm9ybWF0KQotLSMgb24gb3V0cHV0LgotLSMKLS0jIEFSRyBpcyBhIHBhdGhsaXN0IChvbiAkYnVpbGQpIHRoYXQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0bwotLSMgdGhlIHByb3BlciByZXByZXNlbnRhdGlvbiBvbiAkaG9zdC4gVGhlIHJlc3VsdCBpcyBzdG9yZWQKLS0jIGluICRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0LgotLWZ1bmNfdG9faG9zdF9wYXRobGlzdCAoKQotLXsKLS0gIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiQxIgotLSAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0tICAgIGNhc2UgJGhvc3QgaW4KLS0gICAgICAqbWluZ3cqICkKLS0gICAgICAgIGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnk9J3N8XFxcXCp8XFx8ZztzfC98XFx8ZztzfFxcfFxcXFx8ZycKLS0gICAgICAgICMgUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMgZnJvbQotLSAgICAgICAgIyBBUkcuIG1zeXMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmUsIGN5Z3BhdGggdHVybnMgdGhlbQotLSAgICAgICAgIyBpbnRvICcuOycgYW5kICc7LicsIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KLS0JZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKLS0gICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLS0gICAgICAgIGNhc2UgJGJ1aWxkIGluCi0tICAgICAgICAgICptaW5ndyogKSAjIEFjdHVhbGx5LCBtc3lzLgotLSAgICAgICAgICAgICMgQXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdC4KLS0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWAKLS0JICAgICAgKCBjbWQgLy9jIGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgKSAyPi9kZXYvbnVsbCB8Ci0tCSAgICAgICRTRUQgLWUgJ3MvWyBdKiQvLycgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgICAqY3lnd2luKiApCi0tICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD1gY3lncGF0aCAtdyAtcCAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIiB8Ci0tICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0tICAgICAgICAgICAgOzsKLS0gICAgICAgICAgKiApCi0tICAgICAgICAgICAgIyB1bmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2Vzbid0IGNvbnZlcnQgcGF0aGxpc3RzCi0tICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iIgotLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlM9JElGUwotLSAgICAgICAgICAgIElGUz06Ci0tICAgICAgICAgICAgZm9yIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIGluICRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSA7IGRvCi0tICAgICAgICAgICAgICBJRlM9JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlMKLS0gICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiIgOyB0aGVuCi0tICAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkZnVuY190b19ob3N0X3BhdGhsaXN0X2YiCi0tICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiIDsgdGhlbgotLSAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IiA7IHRoZW4KLS0gICAgICAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0tICAgICAgICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgICAgICAgZnVuY19hcHBlbmQgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCAiOyRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0tICAgICAgICAgICAgICAgICAgZmkKLS0gICAgICAgICAgICAgICAgZmkKLS0gICAgICAgICAgICAgIGZpCi0tICAgICAgICAgICAgZG9uZQotLSAgICAgICAgICAgIElGUz0kZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUwotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICBlc2FjCi0tICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCI7IHRoZW4KLS0gICAgICAgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSB0aGUgaG9zdCBwYXRoKHMpIGNvcnJlc3BvbmRpbmcgdG8iCi0tICAgICAgICAgIGZ1bmNfZXJyb3IgIiAgXGAkMSciCi0tICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgotLSAgICAgICAgICAjIEZhbGxiYWNrLiBUaGlzIG1heSBicmVhayBpZiAkMSBjb250YWlucyBET1Mtc3R5bGUgZHJpdmUKLS0gICAgICAgICAgIyBzcGVjaWZpY2F0aW9ucy4gVGhlIGZpeCBpcyBub3QgdG8gY29tcGxpY2F0ZSB0aGUgZXhwcmVzc2lvbgotLSAgICAgICAgICAjIGJlbG93LCBidXQgZm9yIHRoZSB1c2VyIHRvIHByb3ZpZGUgYSB3b3JraW5nIHdpbmUgaW5zdGFsbGF0aW9uCi0tICAgICAgICAgICMgd2l0aCB3aW5lcGF0aCBzbyB0aGF0IHBhdGggdHJhbnNsYXRpb24gaW4gdGhlIGNyb3NzLXRvLW1pbmd3Ci0tICAgICAgICAgICMgY2FzZSB3b3JrcyBwcm9wZXJseS4KLS0gICAgICAgICAgbHRfcmVwbGFjZV9wYXRoc2VwX25peF90b19kb3M9InN8Onw7fGciCi0tICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgfFwKLS0gICAgICAgICAgICAkU0VEIC1lICIkbHRfcmVwbGFjZV9wYXRoc2VwX25peF90b19kb3MiYAotLSAgICAgICAgZmkKLS0gICAgICAgICMgTm93LCBhZGQgdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9ycyBiYWNrCi0tICAgICAgICBjYXNlICIkMSIgaW4KLS0gICAgICAgICAgOiogKSBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSI7JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiCi0tICAgICAgICAgICAgOzsKLS0gICAgICAgIGVzYWMKLS0gICAgICAgIGNhc2UgIiQxIiBpbgotLSAgICAgICAgICAqOiApIGZ1bmNfYXBwZW5kIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQgIjsiCi0tICAgICAgICAgICAgOzsKLS0gICAgICAgIGVzYWMKLS0gICAgICAgIDs7Ci0tICAgIGVzYWMKLS0gIGZpCi0tfQotLSMgZW5kOiBmdW5jX3RvX2hvc3RfcGF0aGxpc3QKLS0KLSAjIGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMKLSAjIGVtaXQgdGhlIHNvdXJjZSBjb2RlIGZvciBhIHdyYXBwZXIgZXhlY3V0YWJsZSBvbiBzdGRvdXQKLSAjIE11c3QgT05MWSBiZSBjYWxsZWQgZnJvbSB3aXRoaW4gZnVuY19tb2RlX2xpbmsgYmVjYXVzZQotQEAgLTMzMzQsMTAgKzQxNDgsNiBAQCBmdW5jX2VtaXRfY3dyYXBwZXJleGVfc3JjICgpCi0gCi0gICAgVGhpcyB3cmFwcGVyIGV4ZWN1dGFibGUgc2hvdWxkIG5ldmVyIGJlIG1vdmVkIG91dCBvZiB0aGUgYnVpbGQgZGlyZWN0b3J5LgotICAgIElmIGl0IGlzLCBpdCB3aWxsIG5vdCBvcGVyYXRlIGNvcnJlY3RseS4KLS0KLS0gICBDdXJyZW50bHksIGl0IHNpbXBseSBleGVjcyB0aGUgd3JhcHBlciAqc2NyaXB0KiAiJFNIRUxMICRvdXRwdXQiLAotLSAgIGJ1dCBjb3VsZCBldmVudHVhbGx5IGFic29yYiBhbGwgb2YgdGhlIHNjcmlwdHMgZnVuY3Rpb25hbGl0eSBhbmQKLS0gICBleGVjICRvYmpkaXIvJG91dHB1dG5hbWUgZGlyZWN0bHkuCi0gKi8KLSBFT0YKLSAJICAgIGNhdCA8PCJFT0YiCi1AQCAtMzQ2MiwyMiArNDI3MiwxMyBAQCBpbnQgc2V0ZW52IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKLSAgIGlmIChzdGFsZSkgeyBmcmVlICgodm9pZCAqKSBzdGFsZSk7IHN0YWxlID0gMDsgfSBcCi0gfSB3aGlsZSAoMCkKLSAKLS0jdW5kZWYgTFRXUkFQUEVSX0RFQlVHUFJJTlRGCi0tI2lmIGRlZmluZWQgTFRfREVCVUdXUkFQUEVSCi0tIyBkZWZpbmUgTFRXUkFQUEVSX0RFQlVHUFJJTlRGKGFyZ3MpIGx0d3JhcHBlcl9kZWJ1Z3ByaW50ZiBhcmdzCi0tc3RhdGljIHZvaWQKLS1sdHdyYXBwZXJfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotLXsKLS0gICAgdmFfbGlzdCBhcmdzOwotLSAgICB2YV9zdGFydCAoYXJncywgZm10KTsKLS0gICAgKHZvaWQpIHZmcHJpbnRmIChzdGRlcnIsIGZtdCwgYXJncyk7Ci0tICAgIHZhX2VuZCAoYXJncyk7Ci0tfQotKyNpZiBkZWZpbmVkKExUX0RFQlVHV1JBUFBFUikKLStzdGF0aWMgaW50IGx0X2RlYnVnID0gMTsKLSAjZWxzZQotLSMgZGVmaW5lIExUV1JBUFBFUl9ERUJVR1BSSU5URihhcmdzKQotK3N0YXRpYyBpbnQgbHRfZGVidWcgPSAwOwotICNlbmRpZgotIAotLWNvbnN0IGNoYXIgKnByb2dyYW1fbmFtZSA9IE5VTEw7Ci0rY29uc3QgY2hhciAqcHJvZ3JhbV9uYW1lID0gImxpYnRvb2wtd3JhcHBlciI7IC8qIGluIGNhc2UgeHN0cmR1cCBmYWlscyAqLwotIAotIHZvaWQgKnhtYWxsb2MgKHNpemVfdCBudW0pOwotIGNoYXIgKnhzdHJkdXAgKGNvbnN0IGNoYXIgKnN0cmluZyk7Ci1AQCAtMzQ4Nyw3ICs0Mjg4LDEwIEBAIGNoYXIgKmNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYyk7Ci0gaW50IG1ha2VfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCk7Ci0gaW50IGNoZWNrX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpOwotIGNoYXIgKnN0cmVuZHphcCAoY2hhciAqc3RyLCBjb25zdCBjaGFyICpwYXQpOwotLXZvaWQgbHRfZmF0YWwgKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLik7Ci0rdm9pZCBsdF9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKLSt2b2lkIGx0X2ZhdGFsIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKTsKLStzdGF0aWMgY29uc3QgY2hhciAqbm9ubnVsbCAoY29uc3QgY2hhciAqcyk7Ci0rc3RhdGljIGNvbnN0IGNoYXIgKm5vbmVtcHR5IChjb25zdCBjaGFyICpzKTsKLSB2b2lkIGx0X3NldGVudiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOwotIGNoYXIgKmx0X2V4dGVuZF9zdHIgKGNvbnN0IGNoYXIgKm9yaWdfdmFsdWUsIGNvbnN0IGNoYXIgKmFkZCwgaW50IHRvX2VuZCk7Ci0gdm9pZCBsdF91cGRhdGVfZXhlX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKTsKLUBAIC0zNDk3LDE0ICs0MzAxLDE0IEBAIHZvaWQgbHRfZHVtcF9zY3JpcHQgKEZJTEUgKmYpOwotIEVPRgotIAotIAkgICAgY2F0IDw8RU9GCi0tY29uc3QgY2hhciAqIE1BR0lDX0VYRSA9ICIkbWFnaWNfZXhlIjsKLSt2b2xhdGlsZSBjb25zdCBjaGFyICogTUFHSUNfRVhFID0gIiRtYWdpY19leGUiOwotIGNvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQVJOQU1FID0gIiRzaGxpYnBhdGhfdmFyIjsKLSBFT0YKLSAKLSAJICAgIGlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzICYmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkdGVtcF9ycGF0aCI7IHRoZW4KLS0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdCAiJHRlbXBfcnBhdGgiCi0rICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aCAiJHRlbXBfcnBhdGgiCi0gCSAgICAgIGNhdCA8PEVPRgotLWNvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IjsKLStjb25zdCBjaGFyICogTElCX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IjsKLSBFT0YKLSAJICAgIGVsc2UKLSAJICAgICAgY2F0IDw8IkVPRiIKLUBAIC0zNTEzLDEwICs0MzE3LDEwIEBAIEVPRgotIAkgICAgZmkKLSAKLSAJICAgIGlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgotLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0ICIkZGxsc2VhcmNocGF0aDoiCi0rICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aCAiJGRsbHNlYXJjaHBhdGg6IgotIAkgICAgICBjYXQgPDxFT0YKLSBjb25zdCBjaGFyICogRVhFX1BBVEhfVkFSTkFNRSA9ICJQQVRIIjsKLS1jb25zdCBjaGFyICogRVhFX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCI7Ci0rY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCI7Ci0gRU9GCi0gCSAgICBlbHNlCi0gCSAgICAgIGNhdCA8PCJFT0YiCi1AQCAtMzUzOSwxMiArNDM0MywxMCBAQCBFT0YKLSAJICAgIGNhdCA8PCJFT0YiCi0gCi0gI2RlZmluZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAgICAgICAgICItLWx0LSIKLS0jZGVmaW5lIExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSCAgNQotIAotLXN0YXRpYyBjb25zdCBzaXplX3Qgb3B0X3ByZWZpeF9sZW4gICAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSDsKLSBzdGF0aWMgY29uc3QgY2hhciAqbHR3cmFwcGVyX29wdGlvbl9wcmVmaXggPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWDsKLS0KLSBzdGF0aWMgY29uc3QgY2hhciAqZHVtcHNjcmlwdF9vcHQgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZHVtcC1zY3JpcHQiOwotK3N0YXRpYyBjb25zdCBjaGFyICpkZWJ1Z19vcHQgICAgICAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJkZWJ1ZyI7Ci0gCi0gaW50Ci0gbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLUBAIC0zNTYxLDEwICs0MzYzLDEzIEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gICBpbnQgaTsKLSAKLSAgIHByb2dyYW1fbmFtZSA9IChjaGFyICopIHhzdHJkdXAgKGJhc2VfbmFtZSAoYXJndlswXSkpOwotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBhcmd2WzBdICAgICAgOiAlc1xuIiwgYXJndlswXSkpOwotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBwcm9ncmFtX25hbWUgOiAlc1xuIiwgcHJvZ3JhbV9uYW1lKSk7Ci0rICBuZXdhcmd6ID0gWE1BTExPQyAoY2hhciAqLCBhcmdjICsgMSk7Ci0gCi0tICAvKiB2ZXJ5IHNpbXBsZSBhcmcgcGFyc2luZzsgZG9uJ3Qgd2FudCB0byByZWx5IG9uIGdldG9wdCAqLwotKyAgLyogdmVyeSBzaW1wbGUgYXJnIHBhcnNpbmc7IGRvbid0IHdhbnQgdG8gcmVseSBvbiBnZXRvcHQKLSsgICAqIGFsc28sIGNvcHkgYWxsIG5vbiBjd3JhcHBlciBvcHRpb25zIHRvIG5ld2FyZ3osIGV4Y2VwdAotKyAgICogYXJnelswXSwgd2hpY2ggaXMgaGFuZGxlZCBkaWZmZXJlbnRseQotKyAgICovCi0rICBuZXdhcmdjPTA7Ci0gICBmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKQotICAgICB7Ci0gICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgZHVtcHNjcmlwdF9vcHQpID09IDApCi1AQCAtMzU4MSwyMSArNDM4Niw1NCBAQCBFT0YKLSAJICBsdF9kdW1wX3NjcmlwdCAoc3Rkb3V0KTsKLSAJICByZXR1cm4gMDsKLSAJfQotKyAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGRlYnVnX29wdCkgPT0gMCkKLSsJewotKyAgICAgICAgICBsdF9kZWJ1ZyA9IDE7Ci0rICAgICAgICAgIGNvbnRpbnVlOwotKwl9Ci0rICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgpID09IDApCi0rICAgICAgICB7Ci0rICAgICAgICAgIC8qIGhvd2V2ZXIsIGlmIHRoZXJlIGlzIGFuIG9wdGlvbiBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKLSsgICAgICAgICAgICAgbmFtZXNwYWNlLCBidXQgaXQgaXMgbm90IG9uZSBvZiB0aGUgb25lcyB3ZSBrbm93IGFib3V0IGFuZAotKyAgICAgICAgICAgICBoYXZlIGFscmVhZHkgZGVhbHQgd2l0aCwgYWJvdmUgKGlubHVkaW5nIGR1bXAtc2NyaXB0KSwgdGhlbgotKyAgICAgICAgICAgICByZXBvcnQgYW4gZXJyb3IuIE90aGVyd2lzZSwgdGFyZ2V0cyBtaWdodCBiZWdpbiB0byBiZWxpZXZlCi0rICAgICAgICAgICAgIHRoZXkgYXJlIGFsbG93ZWQgdG8gdXNlIG9wdGlvbnMgaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCi0rICAgICAgICAgICAgIG5hbWVzcGFjZS4gVGhlIGZpcnN0IHRpbWUgYW55IHVzZXIgY29tcGxhaW5zIGFib3V0IHRoaXMsIHdlJ2xsCi0rICAgICAgICAgICAgIG5lZWQgdG8gbWFrZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCBhIGNvbmZpZ3VyZS10aW1lIG9wdGlvbgotKyAgICAgICAgICAgICBvciBhIGNvbmZpZ3VyZS5hYy1zZXR0YWJsZSB2YWx1ZS4KLSsgICAgICAgICAgICovCi0rICAgICAgICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICAgInVucmVjb2duaXplZCAlcyBvcHRpb246ICclcyciLAotKyAgICAgICAgICAgICAgICAgICAgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIGFyZ3ZbaV0pOwotKyAgICAgICAgfQotKyAgICAgIC8qIG90aGVyd2lzZSAuLi4gKi8KLSsgICAgICBuZXdhcmd6WysrbmV3YXJnY10gPSB4c3RyZHVwIChhcmd2W2ldKTsKLSAgICAgfQotKyAgbmV3YXJnelsrK25ld2FyZ2NdID0gTlVMTDsKLSsKLStFT0YKLSsJICAgIGNhdCA8PEVPRgotKyAgLyogVGhlIEdOVSBiYW5uZXIgbXVzdCBiZSB0aGUgZmlyc3Qgbm9uLWVycm9yIGRlYnVnIG1lc3NhZ2UgKi8KLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICJsaWJ0b29sIHdyYXBwZXIgKEdOVSAkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OXG4iKTsKLStFT0YKLSsJICAgIGNhdCA8PCJFT0YiCi0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIGFyZ3ZbMF06ICVzXG4iLCBhcmd2WzBdKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgcHJvZ3JhbV9uYW1lOiAlc1xuIiwgcHJvZ3JhbV9uYW1lKTsKLSAKLS0gIG5ld2FyZ3ogPSBYTUFMTE9DIChjaGFyICosIGFyZ2MgKyAxKTsKLSAgIHRtcF9wYXRoc3BlYyA9IGZpbmRfZXhlY3V0YWJsZSAoYXJndlswXSk7Ci0gICBpZiAodG1wX3BhdGhzcGVjID09IE5VTEwpCi0tICAgIGx0X2ZhdGFsICgiQ291bGRuJ3QgZmluZCAlcyIsIGFyZ3ZbMF0pOwotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmb3VuZCBleGUgKGJlZm9yZSBzeW1saW5rIGNoYXNlKSBhdCA6ICVzXG4iLAotLQkJCSAgdG1wX3BhdGhzcGVjKSk7Ci0rICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJjb3VsZG4ndCBmaW5kICVzIiwgYXJndlswXSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAotKyAgICAgICAgICAgICAgICAgICIobWFpbikgZm91bmQgZXhlIChiZWZvcmUgc3ltbGluayBjaGFzZSkgYXQ6ICVzXG4iLAotKwkJICB0bXBfcGF0aHNwZWMpOwotIAotICAgYWN0dWFsX2N3cmFwcGVyX3BhdGggPSBjaGFzZV9zeW1saW5rcyAodG1wX3BhdGhzcGVjKTsKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZm91bmQgZXhlIChhZnRlciBzeW1saW5rIGNoYXNlKSBhdCA6ICVzXG4iLAotLQkJCSAgYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCi0rICAgICAgICAgICAgICAgICAgIihtYWluKSBmb3VuZCBleGUgKGFmdGVyIHN5bWxpbmsgY2hhc2UpIGF0OiAlc1xuIiwKLSsJCSAgYWN0dWFsX2N3cmFwcGVyX3BhdGgpOwotICAgWEZSRUUgKHRtcF9wYXRoc3BlYyk7Ci0gCi0tICBhY3R1YWxfY3dyYXBwZXJfbmFtZSA9IHhzdHJkdXAoIGJhc2VfbmFtZSAoYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKLSsgIGFjdHVhbF9jd3JhcHBlcl9uYW1lID0geHN0cmR1cCAoYmFzZV9uYW1lIChhY3R1YWxfY3dyYXBwZXJfcGF0aCkpOwotICAgc3RyZW5kemFwIChhY3R1YWxfY3dyYXBwZXJfcGF0aCwgYWN0dWFsX2N3cmFwcGVyX25hbWUpOwotIAotICAgLyogd3JhcHBlciBuYW1lIHRyYW5zZm9ybXMgKi8KLUBAIC0zNjEzLDggKzQ0NTEsOSBAQCBFT0YKLSAgIHRhcmdldF9uYW1lID0gdG1wX3BhdGhzcGVjOwotICAgdG1wX3BhdGhzcGVjID0gMDsKLSAKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgbGlidG9vbCB0YXJnZXQgbmFtZTogJXNcbiIsCi0tCQkJICB0YXJnZXRfbmFtZSkpOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgIihtYWluKSBsaWJ0b29sIHRhcmdldCBuYW1lOiAlc1xuIiwKLSsJCSAgdGFyZ2V0X25hbWUpOwotIEVPRgotIAotIAkgICAgY2F0IDw8RU9GCi1AQCAtMzY2NCwzNSArNDUwMywxOSBAQCBFT0YKLSAKLSAgIGx0X3NldGVudiAoIkJJTl9TSCIsICJ4cGc0Iik7IC8qIGZvciBUcnU2NCAqLwotICAgbHRfc2V0ZW52ICgiRFVBTENBU0UiLCAiMSIpOyAgLyogZm9yIE1TSyBzaCAqLwotLSAgbHRfdXBkYXRlX2xpYl9wYXRoIChMSUJfUEFUSF9WQVJOQU1FLCBMSUJfUEFUSF9WQUxVRSk7Ci0rICAvKiBVcGRhdGUgdGhlIERMTCBzZWFyY2hwYXRoLiAgRVhFX1BBVEhfVkFMVUUgKCRkbGxzZWFyY2hwYXRoKSBtdXN0Ci0rICAgICBiZSBwcmVwZW5kZWQgYmVmb3JlICh0aGF0IGlzLCBhcHBlYXIgYWZ0ZXIpIExJQl9QQVRIX1ZBTFVFICgkdGVtcF9ycGF0aCkKLSsgICAgIGJlY2F1c2Ugb24gV2luZG93cywgYm90aCAqX1ZBUk5BTUVzIGFyZSBQQVRIIGJ1dCB1bmluc3RhbGxlZAotKyAgICAgbGlicmFyaWVzIG11c3QgY29tZSBmaXJzdC4gKi8KLSAgIGx0X3VwZGF0ZV9leGVfcGF0aCAoRVhFX1BBVEhfVkFSTkFNRSwgRVhFX1BBVEhfVkFMVUUpOwotKyAgbHRfdXBkYXRlX2xpYl9wYXRoIChMSUJfUEFUSF9WQVJOQU1FLCBMSUJfUEFUSF9WQUxVRSk7Ci0gCi0tICBuZXdhcmdjPTA7Ci0tICBmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKQotLSAgICB7Ci0tICAgICAgaWYgKHN0cm5jbXAgKGFyZ3ZbaV0sIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4LCBvcHRfcHJlZml4X2xlbikgPT0gMCkKLS0gICAgICAgIHsKLS0gICAgICAgICAgLyogaG93ZXZlciwgaWYgdGhlcmUgaXMgYW4gb3B0aW9uIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAotLSAgICAgICAgICAgICBuYW1lc3BhY2UsIGJ1dCBpdCBpcyBub3Qgb25lIG9mIHRoZSBvbmVzIHdlIGtub3cgYWJvdXQgYW5kCi0tICAgICAgICAgICAgIGhhdmUgYWxyZWFkeSBkZWFsdCB3aXRoLCBhYm92ZSAoaW5sdWRpbmcgZHVtcC1zY3JpcHQpLCB0aGVuCi0tICAgICAgICAgICAgIHJlcG9ydCBhbiBlcnJvci4gT3RoZXJ3aXNlLCB0YXJnZXRzIG1pZ2h0IGJlZ2luIHRvIGJlbGlldmUKLS0gICAgICAgICAgICAgdGhleSBhcmUgYWxsb3dlZCB0byB1c2Ugb3B0aW9ucyBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKLS0gICAgICAgICAgICAgbmFtZXNwYWNlLiBUaGUgZmlyc3QgdGltZSBhbnkgdXNlciBjb21wbGFpbnMgYWJvdXQgdGhpcywgd2UnbGwKLS0gICAgICAgICAgICAgbmVlZCB0byBtYWtlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYIGEgY29uZmlndXJlLXRpbWUgb3B0aW9uCi0tICAgICAgICAgICAgIG9yIGEgY29uZmlndXJlLmFjLXNldHRhYmxlIHZhbHVlLgotLSAgICAgICAgICAgKi8KLS0gICAgICAgICAgbHRfZmF0YWwgKCJVbnJlY29nbml6ZWQgb3B0aW9uIGluICVzIG5hbWVzcGFjZTogJyVzJyIsCi0tICAgICAgICAgICAgICAgICAgICBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgYXJndltpXSk7Ci0tICAgICAgICB9Ci0tICAgICAgLyogb3RoZXJ3aXNlIC4uLiAqLwotLSAgICAgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IHhzdHJkdXAgKGFyZ3ZbaV0pOwotLSAgICB9Ci0tICBuZXdhcmd6WysrbmV3YXJnY10gPSBOVUxMOwotLQotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICAgICAoKCIobWFpbikgbHRfYXJndl96ZXJvIDogJXNcbiIsIChsdF9hcmd2X3plcm8gPyBsdF9hcmd2X3plcm8gOiAiPE5VTEw+IikpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgbHRfYXJndl96ZXJvOiAlc1xuIiwKLSsJCSAgbm9ubnVsbCAobHRfYXJndl96ZXJvKSk7Ci0gICBmb3IgKGkgPSAwOyBpIDwgbmV3YXJnYzsgaSsrKQotICAgICB7Ci0tICAgICAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBuZXdhcmd6WyVkXSAgIDogJXNcbiIsIGksIChuZXdhcmd6W2ldID8gbmV3YXJneltpXSA6ICI8TlVMTD4iKSkpOwotKyAgICAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgbmV3YXJnelslZF06ICVzXG4iLAotKwkJICAgICAgaSwgbm9ubnVsbCAobmV3YXJneltpXSkpOwotICAgICB9Ci0gCi0gRU9GCi1AQCAtMzcwNiw3ICs0NTI5LDkgQEAgRU9GCi0gICBpZiAocnZhbCA9PSAtMSkKLSAgICAgewotICAgICAgIC8qIGZhaWxlZCB0byBzdGFydCBwcm9jZXNzICovCi0tICAgICAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmYWlsZWQgdG8gbGF1bmNoIHRhcmdldCBcIiVzXCI6IGVycm5vID0gJWRcbiIsIGx0X2FyZ3ZfemVybywgZXJybm8pKTsKLSsgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAotKwkJICAgICAgIihtYWluKSBmYWlsZWQgdG8gbGF1bmNoIHRhcmdldCBcIiVzXCI6ICVzXG4iLAotKwkJICAgICAgbHRfYXJndl96ZXJvLCBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7Ci0gICAgICAgcmV0dXJuIDEyNzsKLSAgICAgfQotICAgcmV0dXJuIHJ2YWw7Ci1AQCAtMzcyOCw3ICs0NTUzLDcgQEAgeG1hbGxvYyAoc2l6ZV90IG51bSkKLSB7Ci0gICB2b2lkICpwID0gKHZvaWQgKikgbWFsbG9jIChudW0pOwotICAgaWYgKCFwKQotLSAgICBsdF9mYXRhbCAoIk1lbW9yeSBleGhhdXN0ZWQiKTsKLSsgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgIm1lbW9yeSBleGhhdXN0ZWQiKTsKLSAKLSAgIHJldHVybiBwOwotIH0KLUBAIC0zNzYyLDggKzQ1ODcsOCBAQCBjaGVja19leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKQotIHsKLSAgIHN0cnVjdCBzdGF0IHN0OwotIAotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihjaGVja19leGVjdXRhYmxlKSAgOiAlc1xuIiwKLS0JCQkgIHBhdGggPyAoKnBhdGggPyBwYXRoIDogIkVNUFRZISIpIDogIk5VTEwhIikpOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihjaGVja19leGVjdXRhYmxlKTogJXNcbiIsCi0rICAgICAgICAgICAgICAgICAgbm9uZW1wdHkgKHBhdGgpKTsKLSAgIGlmICgoIXBhdGgpIHx8ICghKnBhdGgpKQotICAgICByZXR1cm4gMDsKLSAKLUBAIC0zNzgwLDggKzQ2MDUsOCBAQCBtYWtlX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpCi0gICBpbnQgcnZhbCA9IDA7Ci0gICBzdHJ1Y3Qgc3RhdCBzdDsKLSAKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFrZV9leGVjdXRhYmxlKSAgIDogJXNcbiIsCi0tCQkJICBwYXRoID8gKCpwYXRoID8gcGF0aCA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFrZV9leGVjdXRhYmxlKTogJXNcbiIsCi0rICAgICAgICAgICAgICAgICAgbm9uZW1wdHkgKHBhdGgpKTsKLSAgIGlmICgoIXBhdGgpIHx8ICghKnBhdGgpKQotICAgICByZXR1cm4gMDsKLSAKLUBAIC0zODA3LDggKzQ2MzIsOCBAQCBmaW5kX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKndyYXBwZXIpCi0gICBpbnQgdG1wX2xlbjsKLSAgIGNoYXIgKmNvbmNhdF9uYW1lOwotIAotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihmaW5kX2V4ZWN1dGFibGUpICAgOiAlc1xuIiwKLS0JCQkgIHdyYXBwZXIgPyAoKndyYXBwZXIgPyB3cmFwcGVyIDogIkVNUFRZISIpIDogIk5VTEwhIikpOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihmaW5kX2V4ZWN1dGFibGUpOiAlc1xuIiwKLSsgICAgICAgICAgICAgICAgICBub25lbXB0eSAod3JhcHBlcikpOwotIAotICAgaWYgKCh3cmFwcGVyID09IE5VTEwpIHx8ICgqd3JhcHBlciA9PSAnXDAnKSkKLSAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMzg2MSw3ICs0Njg2LDggQEAgZmluZF9leGVjdXRhYmxlIChjb25zdCBjaGFyICp3cmFwcGVyKQotIAkJewotIAkJICAvKiBlbXB0eSBwYXRoOiBjdXJyZW50IGRpcmVjdG9yeSAqLwotIAkJICBpZiAoZ2V0Y3dkICh0bXAsIExUX1BBVEhNQVgpID09IE5VTEwpCi0tCQkgICAgbHRfZmF0YWwgKCJnZXRjd2QgZmFpbGVkIik7Ci0rCQkgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgImdldGN3ZCBmYWlsZWQ6ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7Ci0gCQkgIHRtcF9sZW4gPSBzdHJsZW4gKHRtcCk7Ci0gCQkgIGNvbmNhdF9uYW1lID0KLSAJCSAgICBYTUFMTE9DIChjaGFyLCB0bXBfbGVuICsgMSArIHN0cmxlbiAod3JhcHBlcikgKyAxKTsKLUBAIC0zODg2LDcgKzQ3MTIsOCBAQCBmaW5kX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKndyYXBwZXIpCi0gICAgIH0KLSAgIC8qIFJlbGF0aXZlIHBhdGggfCBub3QgZm91bmQgaW4gcGF0aDogcHJlcGVuZCBjd2QgKi8KLSAgIGlmIChnZXRjd2QgKHRtcCwgTFRfUEFUSE1BWCkgPT0gTlVMTCkKLS0gICAgbHRfZmF0YWwgKCJnZXRjd2QgZmFpbGVkIik7Ci0rICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJnZXRjd2QgZmFpbGVkOiAlcyIsCi0rICAgICAgICAgICAgICBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7Ci0gICB0bXBfbGVuID0gc3RybGVuICh0bXApOwotICAgY29uY2F0X25hbWUgPSBYTUFMTE9DIChjaGFyLCB0bXBfbGVuICsgMSArIHN0cmxlbiAod3JhcHBlcikgKyAxKTsKLSAgIG1lbWNweSAoY29uY2F0X25hbWUsIHRtcCwgdG1wX2xlbik7Ci1AQCAtMzkxMiw4ICs0NzM5LDkgQEAgY2hhc2Vfc3ltbGlua3MgKGNvbnN0IGNoYXIgKnBhdGhzcGVjKQotICAgaW50IGhhc19zeW1saW5rcyA9IDA7Ci0gICB3aGlsZSAoc3RybGVuICh0bXBfcGF0aHNwZWMpICYmICFoYXNfc3ltbGlua3MpCi0gICAgIHsKLS0gICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiY2hlY2tpbmcgcGF0aCBjb21wb25lbnQgZm9yIHN5bWxpbmtzOiAlc1xuIiwKLS0JCQkgICAgICB0bXBfcGF0aHNwZWMpKTsKLSsgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAotKwkJICAgICAgImNoZWNraW5nIHBhdGggY29tcG9uZW50IGZvciBzeW1saW5rczogJXNcbiIsCi0rCQkgICAgICB0bXBfcGF0aHNwZWMpOwotICAgICAgIGlmIChsc3RhdCAodG1wX3BhdGhzcGVjLCAmcykgPT0gMCkKLSAJewotIAkgIGlmIChTX0lTTE5LIChzLnN0X21vZGUpICE9IDApCi1AQCAtMzkzNSw4ICs0NzYzLDkgQEAgY2hhc2Vfc3ltbGlua3MgKGNvbnN0IGNoYXIgKnBhdGhzcGVjKQotIAl9Ci0gICAgICAgZWxzZQotIAl7Ci0tCSAgY2hhciAqZXJyc3RyID0gc3RyZXJyb3IgKGVycm5vKTsKLS0JICBsdF9mYXRhbCAoIkVycm9yIGFjY2Vzc2luZyBmaWxlICVzICglcykiLCB0bXBfcGF0aHNwZWMsIGVycnN0cik7Ci0rCSAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgICAiZXJyb3IgYWNjZXNzaW5nIGZpbGUgXCIlc1wiOiAlcyIsCi0rCQkgICAgdG1wX3BhdGhzcGVjLCBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7Ci0gCX0KLSAgICAgfQotICAgWEZSRUUgKHRtcF9wYXRoc3BlYyk7Ci1AQCAtMzk0OSw3ICs0Nzc4LDggQEAgY2hhc2Vfc3ltbGlua3MgKGNvbnN0IGNoYXIgKnBhdGhzcGVjKQotICAgdG1wX3BhdGhzcGVjID0gcmVhbHBhdGggKHBhdGhzcGVjLCBidWYpOwotICAgaWYgKHRtcF9wYXRoc3BlYyA9PSAwKQotICAgICB7Ci0tICAgICAgbHRfZmF0YWwgKCJDb3VsZCBub3QgZm9sbG93IHN5bWxpbmtzIGZvciAlcyIsIHBhdGhzcGVjKTsKLSsgICAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAotKwkJImNvdWxkIG5vdCBmb2xsb3cgc3ltbGlua3MgZm9yICVzIiwgcGF0aHNwZWMpOwotICAgICB9Ci0gICByZXR1cm4geHN0cmR1cCAodG1wX3BhdGhzcGVjKTsKLSAjZW5kaWYKLUBAIC0zOTc1LDExICs0ODA1LDI1IEBAIHN0cmVuZHphcCAoY2hhciAqc3RyLCBjb25zdCBjaGFyICpwYXQpCi0gICByZXR1cm4gc3RyOwotIH0KLSAKLSt2b2lkCi0rbHRfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpmbXQsIC4uLikKLSt7Ci0rICB2YV9saXN0IGFyZ3M7Ci0rICBpZiAobHRfZGVidWcpCi0rICAgIHsKLSsgICAgICAodm9pZCkgZnByaW50ZiAoc3RkZXJyLCAiJXM6JXM6JWQ6ICIsIHByb2dyYW1fbmFtZSwgZmlsZSwgbGluZSk7Ci0rICAgICAgdmFfc3RhcnQgKGFyZ3MsIGZtdCk7Ci0rICAgICAgKHZvaWQpIHZmcHJpbnRmIChzdGRlcnIsIGZtdCwgYXJncyk7Ci0rICAgICAgdmFfZW5kIChhcmdzKTsKLSsgICAgfQotK30KLSsKLSBzdGF0aWMgdm9pZAotLWx0X2Vycm9yX2NvcmUgKGludCBleGl0X3N0YXR1cywgY29uc3QgY2hhciAqbW9kZSwKLStsdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKmZpbGUsCi0rCSAgICAgICBpbnQgbGluZSwgY29uc3QgY2hhciAqbW9kZSwKLSAJICAgICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHZhX2xpc3QgYXApCi0gewotLSAgZnByaW50ZiAoc3RkZXJyLCAiJXM6ICVzOiAiLCBwcm9ncmFtX25hbWUsIG1vZGUpOwotKyAgZnByaW50ZiAoc3RkZXJyLCAiJXM6JXM6JWQ6ICVzOiAiLCBwcm9ncmFtX25hbWUsIGZpbGUsIGxpbmUsIG1vZGUpOwotICAgdmZwcmludGYgKHN0ZGVyciwgbWVzc2FnZSwgYXApOwotICAgZnByaW50ZiAoc3RkZXJyLCAiLlxuIik7Ci0gCi1AQCAtMzk4OCwyMCArNDgzMiwzMiBAQCBsdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKm1vZGUsCi0gfQotIAotIHZvaWQKLS1sdF9mYXRhbCAoY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKQotK2x0X2ZhdGFsIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKQotIHsKLSAgIHZhX2xpc3QgYXA7Ci0gICB2YV9zdGFydCAoYXAsIG1lc3NhZ2UpOwotLSAgbHRfZXJyb3JfY29yZSAoRVhJVF9GQUlMVVJFLCAiRkFUQUwiLCBtZXNzYWdlLCBhcCk7Ci0rICBsdF9lcnJvcl9jb3JlIChFWElUX0ZBSUxVUkUsIGZpbGUsIGxpbmUsICJGQVRBTCIsIG1lc3NhZ2UsIGFwKTsKLSAgIHZhX2VuZCAoYXApOwotIH0KLSAKLStzdGF0aWMgY29uc3QgY2hhciAqCi0rbm9ubnVsbCAoY29uc3QgY2hhciAqcykKLSt7Ci0rICByZXR1cm4gcyA/IHMgOiAiKG51bGwpIjsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IGNoYXIgKgotK25vbmVtcHR5IChjb25zdCBjaGFyICpzKQotK3sKLSsgIHJldHVybiAocyAmJiAhKnMpID8gIihlbXB0eSkiIDogbm9ubnVsbCAocyk7Ci0rfQotKwotIHZvaWQKLSBsdF9zZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQotIHsKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobHRfc2V0ZW52KSBzZXR0aW5nICclcycgdG8gJyVzJ1xuIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lID8gbmFtZSA6ICI8TlVMTD4iKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAotKwkJICAiKGx0X3NldGVudikgc2V0dGluZyAnJXMnIHRvICclcydcbiIsCi0rICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7Ci0gICB7Ci0gI2lmZGVmIEhBVkVfU0VURU5WCi0gICAgIC8qIGFsd2F5cyBtYWtlIGEgY29weSwgZm9yIGNvbnNpc3RlbmN5IHdpdGggIUhBVkVfU0VURU5WICovCi1AQCAtNDA0OSw5ICs0OTA1LDkgQEAgbHRfZXh0ZW5kX3N0ciAoY29uc3QgY2hhciAqb3JpZ192YWx1ZSwgY29uc3QgY2hhciAqYWRkLCBpbnQgdG9fZW5kKQotIHZvaWQKLSBsdF91cGRhdGVfZXhlX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQotIHsKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobHRfdXBkYXRlX2V4ZV9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgIihsdF91cGRhdGVfZXhlX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKLSsgICAgICAgICAgICAgICAgICBub25udWxsIChuYW1lKSwgbm9ubnVsbCAodmFsdWUpKTsKLSAKLSAgIGlmIChuYW1lICYmICpuYW1lICYmIHZhbHVlICYmICp2YWx1ZSkKLSAgICAgewotQEAgLTQwNzAsOSArNDkyNiw5IEBAIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCi0gdm9pZAotIGx0X3VwZGF0ZV9saWJfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCi0gewotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF91cGRhdGVfbGliX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lID8gbmFtZSA6ICI8TlVMTD4iKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAotKwkJICAiKGx0X3VwZGF0ZV9saWJfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAotKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOwotIAotICAgaWYgKG5hbWUgJiYgKm5hbWUgJiYgdmFsdWUgJiYgKnZhbHVlKQotICAgICB7Ci1AQCAtNDIyMiw3ICs1MDc4LDcgQEAgRU9GCi0gZnVuY193aW4zMl9pbXBvcnRfbGliX3AgKCkKLSB7Ci0gICAgICRvcHRfZGVidWcKLS0gICAgY2FzZSBgZXZhbCAiJGZpbGVfbWFnaWNfY21kIFwiXCQxXCIgMj4vZGV2L251bGwiIHwgJFNFRCAtZSAxMHFgIGluCi0rICAgIGNhc2UgYGV2YWwgJGZpbGVfbWFnaWNfY21kIFwiXCQxXCIgMj4vZGV2L251bGwgfCAkU0VEIC1lIDEwcWAgaW4KLSAgICAgKmltcG9ydCopIDogOzsKLSAgICAgKikgZmFsc2UgOzsKLSAgICAgZXNhYwotQEAgLTQ0MDEsOSArNTI1Nyw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICA7OwotIAkgICopCi0gCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCi0tCSAgICAgIGRsZmlsZXM9IiRkbGZpbGVzICRhcmciCi0rCSAgICAgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkYXJnIgotIAkgICAgZWxzZQotLQkgICAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkYXJnIgotKwkgICAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGFyZyIKLSAJICAgIGZpCi0gCSAgICBwcmV2PQotIAkgICAgY29udGludWUKLUBAIC00NDI3LDcgKzUyODMsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgKi0qLWRhcndpbiopCi0gCSAgICAgIGNhc2UgIiRkZXBsaWJzICIgaW4KLSAJCSoiICRxYXJnLmx0ZnJhbWV3b3JrICIqKSA7OwotLQkJKikgZGVwbGlicz0iJGRlcGxpYnMgJHFhcmcubHRmcmFtZXdvcmsiICMgdGhpcyBpcyBmaXhlZCBsYXRlcgotKwkJKikgZnVuY19hcHBlbmQgZGVwbGlicyAiICRxYXJnLmx0ZnJhbWV3b3JrIiAjIHRoaXMgaXMgZml4ZWQgbGF0ZXIKLSAJCSAgIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgICAgOzsKLUBAIC00NDQ2LDcgKzUzMDIsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgbW9yZWFyZ3M9Ci0gCSAgICBmb3IgZmlsIGluIGBjYXQgIiRzYXZlX2FyZyJgCi0gCSAgICBkbwotLSMJICAgICAgbW9yZWFyZ3M9IiRtb3JlYXJncyAkZmlsIgotKyMJICAgICAgZnVuY19hcHBlbmQgbW9yZWFyZ3MgIiAkZmlsIgotIAkgICAgICBhcmc9JGZpbAotIAkgICAgICAjIEEgbGlidG9vbC1jb250cm9sbGVkIG9iamVjdC4KLSAKLUBAIC00NDc1LDcgKzUzMzEsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAotIAkJICBpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCi0gCQkgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiA9IHllczsgdGhlbgotLQkJICAgICAgZGxmaWxlcz0iJGRsZmlsZXMgJHBpY19vYmplY3QiCi0rCQkgICAgICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJHBpY19vYmplY3QiCi0gCQkgICAgICBwcmV2PQotIAkJICAgICAgY29udGludWUKLSAJCSAgICBlbHNlCi1AQCAtNDQ4Nyw3ICs1MzQzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJCSAgIyBDSEVDSyBNRTogIEkgdGhpbmsgSSBidXN0ZWQgdGhpcy4gIC1Pc3NhbWEKLSAJCSAgaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgotIAkJICAgICMgUHJlbG9hZCB0aGUgb2xkLXN0eWxlIG9iamVjdC4KLS0JCSAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkcGljX29iamVjdCIKLSsJCSAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJHBpY19vYmplY3QiCi0gCQkgICAgcHJldj0KLSAJCSAgZmkKLSAKLUBAIC00NTU3LDEyICs1NDEzLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgaWYgdGVzdCAiJHByZXYiID0gcnBhdGg7IHRoZW4KLSAJICAgIGNhc2UgIiRycGF0aCAiIGluCi0gCSAgICAqIiAkYXJnICIqKSA7OwotLQkgICAgKikgcnBhdGg9IiRycGF0aCAkYXJnIiA7OwotKwkgICAgKikgZnVuY19hcHBlbmQgcnBhdGggIiAkYXJnIiA7OwotIAkgICAgZXNhYwotIAkgIGVsc2UKLSAJICAgIGNhc2UgIiR4cnBhdGggIiBpbgotIAkgICAgKiIgJGFyZyAiKikgOzsKLS0JICAgICopIHhycGF0aD0iJHhycGF0aCAkYXJnIiA7OwotKwkgICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJGFyZyIgOzsKLSAJICAgIGVzYWMKLSAJICBmaQotIAkgIHByZXY9Ci1AQCAtNDU3NCwyOCArNTQzMCwyOCBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGNvbnRpbnVlCi0gCSAgOzsKLSAJd2VhaykKLS0JICB3ZWFrX2xpYnM9IiR3ZWFrX2xpYnMgJGFyZyIKLSsJICBmdW5jX2FwcGVuZCB3ZWFrX2xpYnMgIiAkYXJnIgotIAkgIHByZXY9Ci0gCSAgY29udGludWUKLSAJICA7OwotIAl4Y2NsaW5rZXIpCi0tCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRxYXJnIgotLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHFhcmciCi0rCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJHFhcmciCi0rCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkcWFyZyIKLSAJICBwcmV2PQotIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRxYXJnIgotIAkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkcWFyZyIKLSAJICBjb250aW51ZQotIAkgIDs7Ci0gCXhjb21waWxlcikKLS0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRxYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHFhcmciCi0gCSAgcHJldj0KLSAJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkcWFyZyIKLSAJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHFhcmciCi0gCSAgY29udGludWUKLSAJICA7OwotIAl4bGlua2VyKQotLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkcWFyZyIKLS0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRxYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRxYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHdsJHFhcmciCi0gCSAgcHJldj0KLSAJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkd2wkcWFyZyIKLSAJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHdsJHFhcmciCi1AQCAtNDY4NiwxNSArNTU0MiwxNiBAQCBmdW5jX21vZGVfbGluayAoKQotIAk7OwotIAotICAgICAgIC1MKikKLS0JZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGFyZyIKLS0JZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLS0JaWYgdGVzdCAteiAiJGRpciI7IHRoZW4KLSsJZnVuY19zdHJpcG5hbWUgIi1MIiAnJyAiJGFyZyIKLSsJaWYgdGVzdCAteiAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCI7IHRoZW4KLSAJICBpZiB0ZXN0ICIkIyIgLWd0IDA7IHRoZW4KLSAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgInJlcXVpcmUgbm8gc3BhY2UgYmV0d2VlbiBcYC1MJyBhbmQgXGAkMSciCi0gCSAgZWxzZQotIAkgICAgZnVuY19mYXRhbF9lcnJvciAibmVlZCBwYXRoIGZvciBcYC1MJyBvcHRpb24iCi0gCSAgZmkKLSAJZmkKLSsJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCWRpcj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0Ci0gCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgotIAljYXNlICRkaXIgaW4KLSAJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OwotQEAgLTQ3MDYsMTAgKzU1NjMsMTYgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICA7OwotIAllc2FjCi0gCWNhc2UgIiRkZXBsaWJzICIgaW4KLS0JKiIgLUwkZGlyICIqKSA7OwotKwkqIiAtTCRkaXIgIiogfCAqIiAkYXJnICIqKQotKwkgICMgV2lsbCBvbmx5IGhhcHBlbiBmb3IgYWJzb2x1dGUgb3Igc3lzcm9vdCBhcmd1bWVudHMKLSsJICA7OwotIAkqKQotLQkgIGRlcGxpYnM9IiRkZXBsaWJzIC1MJGRpciIKLS0JICBsaWJfc2VhcmNoX3BhdGg9IiRsaWJfc2VhcmNoX3BhdGggJGRpciIKLSsJICAjIFByZXNlcnZlIHN5c3Jvb3QsIGJ1dCBuZXZlciBpbmNsdWRlIHJlbGF0aXZlIGRpcmVjdG9yaWVzCi0rCSAgY2FzZSAkZGlyIGluCi0rCSAgICBbXFwvXSogfCBbQS1aYS16XTpbXFwvXSogfCA9KikgZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciIDs7Ci0rCSAgICAqKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgLUwkZGlyIiA7OwotKwkgIGVzYWMKLSsJICBmdW5jX2FwcGVuZCBsaWJfc2VhcmNoX3BhdGggIiAkZGlyIgotIAkgIDs7Ci0gCWVzYWMKLSAJY2FzZSAkaG9zdCBpbgotQEAgLTQ3MTgsMTIgKzU1ODEsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KLSAJICAqIjokZGlyOiIqKSA7OwotIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSRkaXI7OwotLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiRkaXIiOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JGRpciI7OwotIAkgIGVzYWMKLSAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KLSAJICAqIjokdGVzdGJpbmRpcjoiKikgOzsKLSAJICA6OikgZGxsc2VhcmNocGF0aD0kdGVzdGJpbmRpcjs7Ci0tCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JHRlc3RiaW5kaXIiOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JHRlc3RiaW5kaXIiOzsKLSAJICBlc2FjCi0gCSAgOzsKLSAJZXNhYwotQEAgLTQ3NDcsNyArNTYxMCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICA7OwotIAkgICotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKLSAJICAgICMgUmhhcHNvZHkgQyBhbmQgbWF0aCBsaWJyYXJpZXMgYXJlIGluIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0tCSAgICBkZXBsaWJzPSIkZGVwbGlicyBTeXN0ZW0ubHRmcmFtZXdvcmsiCi0rCSAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgU3lzdGVtLmx0ZnJhbWV3b3JrIgotIAkgICAgY29udGludWUKLSAJICAgIDs7Ci0gCSAgKi0qLXNjbzMuMnY1KiB8ICotKi1zY281djYqKQotQEAgLTQ3NTgsOSArNTYyMSw2IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAjIENvbXBpbGVyIGluc2VydHMgbGliYyBpbiB0aGUgY29ycmVjdCBwbGFjZSBmb3IgdGhyZWFkcyB0byB3b3JrCi0gCSAgICB0ZXN0ICJYJGFyZyIgPSAiWC1sYyIgJiYgY29udGludWUKLSAJICAgIDs7Ci0tCSAgKi0qLWxpbnV4KikKLS0JICAgIHRlc3QgIlgkYXJnIiA9ICJYLWxjIiAmJiBjb250aW51ZQotLQkgICAgOzsKLSAJICBlc2FjCi0gCWVsaWYgdGVzdCAiWCRhcmciID0gIlgtbGNfciI7IHRoZW4KLSAJIGNhc2UgJGhvc3QgaW4KLUBAIC00NzcwLDcgKzU2MzAsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICA7OwotIAkgZXNhYwotIAlmaQotLQlkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgotKwlmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGFyZyIKLSAJY29udGludWUKLSAJOzsKLSAKLUBAIC00NzgyLDggKzU2NDIsOCBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgICMgVHJ1NjQgVU5JWCB1c2VzIC1tb2RlbCBbYXJnXSB0byBkZXRlcm1pbmUgdGhlIGxheW91dCBvZiBDKysKLSAgICAgICAjIGNsYXNzZXMsIG5hbWUgbWFuZ2xpbmcsIGFuZCBleGNlcHRpb24gaGFuZGxpbmcuCi0gICAgICAgIyBEYXJ3aW4gdXNlcyB0aGUgLWFyY2ggZmxhZyB0byBkZXRlcm1pbmUgb3V0cHV0IGFyY2hpdGVjdHVyZS4KLS0gICAgICAtbW9kZWx8LWFyY2h8LWlzeXNyb290KQotLQljb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCi0rICAgICAgLW1vZGVsfC1hcmNofC1pc3lzcm9vdHwtLXN5c3Jvb3QpCi0rCWZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGFyZyIKLSAJZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKLSAJZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCi0gCXByZXY9eGNvbXBpbGVyCi1AQCAtNDc5MSwxMiArNTY1MSwxMiBAQCBmdW5jX21vZGVfbGluayAoKQotIAk7OwotIAotICAgICAgIC1tdHwtbXRocmVhZHN8LWt0aHJlYWR8LUt0aHJlYWR8LXB0aHJlYWR8LXB0aHJlYWRzfC0tdGhyZWFkLXNhZmV8LXRocmVhZHMpCi0tCWNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKLSsJZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgotIAlmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgotIAlmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKLSAJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KLSAJICAgICoiICRhcmcgIiopIDs7Ci0tCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkYXJnIiA7OwotKwkgICAgKiApIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJGFyZyIgOzsKLSAJZXNhYwotIAljb250aW51ZQotIAk7OwotQEAgLTQ4NjMsMTMgKzU3MjMsMTcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCi0gCWNhc2UgJGRpciBpbgotIAlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIDs7Ci0rCT0qKQotKwkgIGZ1bmNfc3RyaXBuYW1lICc9JyAnJyAiJGRpciIKLSsJICBkaXI9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rCSAgOzsKLSAJKikKLSAJICBmdW5jX2ZhdGFsX2Vycm9yICJvbmx5IGFic29sdXRlIHJ1bi1wYXRocyBhcmUgYWxsb3dlZCIKLSAJICA7OwotIAllc2FjCi0gCWNhc2UgIiR4cnBhdGggIiBpbgotIAkqIiAkZGlyICIqKSA7OwotLQkqKSB4cnBhdGg9IiR4cnBhdGggJGRpciIgOzsKLSsJKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJGRpciIgOzsKLSAJZXNhYwotIAljb250aW51ZQotIAk7OwotQEAgLTQ5MjIsOCArNTc4Niw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCWZvciBmbGFnIGluICRhcmdzOyBkbwotIAkgIElGUz0iJHNhdmVfaWZzIgotICAgICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmxhZyIKLS0JICBhcmc9IiRhcmcgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKwkgIGZ1bmNfYXBwZW5kIGFyZyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSAJZG9uZQotIAlJRlM9IiRzYXZlX2lmcyIKLSAJZnVuY19zdHJpcG5hbWUgJyAnICcnICIkYXJnIgotQEAgLTQ5MzgsOSArNTgwMiw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCWZvciBmbGFnIGluICRhcmdzOyBkbwotIAkgIElGUz0iJHNhdmVfaWZzIgotICAgICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmxhZyIKLS0JICBhcmc9IiRhcmcgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rCSAgZnVuY19hcHBlbmQgYXJnICIgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSAJZG9uZQotIAlJRlM9IiRzYXZlX2lmcyIKLSAJZnVuY19zdHJpcG5hbWUgJyAnICcnICIkYXJnIgotQEAgLTQ5NjgsMjQgKzU4MzIsMjcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJYXJnPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gCTs7Ci0gCi0tICAgICAgIyAtNjQsIC1taXBzWzAtOV0gZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBTR0kgY29tcGlsZXIKLS0gICAgICAjIC1yWzAtOV1bMC05XSogc3BlY2lmaWVzIHRoZSBwcm9jZXNzb3Igb24gdGhlIFNHSSBjb21waWxlcgotLSAgICAgICMgLXhhcmNoPSosIC14dGFyZ2V0PSogZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBTdW4gY29tcGlsZXIKLS0gICAgICAjICtEQSosICtERCogZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBIUCBjb21waWxlcgotLSAgICAgICMgLXEqIHBhc3MgdGhyb3VnaCBjb21waWxlciBhcmdzIGZvciB0aGUgSUJNIGNvbXBpbGVyCi0tICAgICAgIyAtbSosIC10WzQ1XSosIC10eHNjYWxlKiBwYXNzIHRocm91Z2ggYXJjaGl0ZWN0dXJlLXNwZWNpZmljCi0tICAgICAgIyBjb21waWxlciBhcmdzIGZvciBHQ0MKLS0gICAgICAjIC1GL3BhdGggZ2l2ZXMgcGF0aCB0byB1bmluc3RhbGxlZCBmcmFtZXdvcmtzLCBnY2Mgb24gZGFyd2luCi0tICAgICAgIyAtcCwgLXBnLCAtLWNvdmVyYWdlLCAtZnByb2ZpbGUtKiBwYXNzIHRocm91Z2ggcHJvZmlsaW5nIGZsYWcgZm9yIEdDQwotLSAgICAgICMgQGZpbGUgR0NDIHJlc3BvbnNlIGZpbGVzCi0tICAgICAgIyAtdHA9KiBQb3J0bGFuZCBwZ2NjIHRhcmdldCBwcm9jZXNzb3Igc2VsZWN0aW9uCi0rICAgICAgIyBGbGFncyB0byBiZSBwYXNzZWQgdGhyb3VnaCB1bmNoYW5nZWQsIHdpdGggcmF0aW9uYWxlOgotKyAgICAgICMgLTY0LCAtbWlwc1swLTldICAgICAgZW5hYmxlIDY0LWJpdCBtb2RlIGZvciB0aGUgU0dJIGNvbXBpbGVyCi0rICAgICAgIyAtclswLTldWzAtOV0qICAgICAgICBzcGVjaWZ5IHByb2Nlc3NvciBmb3IgdGhlIFNHSSBjb21waWxlcgotKyAgICAgICMgLXhhcmNoPSosIC14dGFyZ2V0PSogZW5hYmxlIDY0LWJpdCBtb2RlIGZvciB0aGUgU3VuIGNvbXBpbGVyCi0rICAgICAgIyArREEqLCArREQqICAgICAgICAgICBlbmFibGUgNjQtYml0IG1vZGUgZm9yIHRoZSBIUCBjb21waWxlcgotKyAgICAgICMgLXEqICAgICAgICAgICAgICAgICAgY29tcGlsZXIgYXJncyBmb3IgdGhlIElCTSBjb21waWxlcgotKyAgICAgICMgLW0qLCAtdFs0NV0qLCAtdHhzY2FsZSogYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGZsYWdzIGZvciBHQ0MKLSsgICAgICAjIC1GL3BhdGggICAgICAgICAgICAgIHBhdGggdG8gdW5pbnN0YWxsZWQgZnJhbWV3b3JrcywgZ2NjIG9uIGRhcndpbgotKyAgICAgICMgLXAsIC1wZywgLS1jb3ZlcmFnZSwgLWZwcm9maWxlLSogIHByb2ZpbGluZyBmbGFncyBmb3IgR0NDCi0rICAgICAgIyBAZmlsZSAgICAgICAgICAgICAgICBHQ0MgcmVzcG9uc2UgZmlsZXMKLSsgICAgICAjIC10cD0qICAgICAgICAgICAgICAgIFBvcnRsYW5kIHBnY2MgdGFyZ2V0IHByb2Nlc3NvciBzZWxlY3Rpb24KLSsgICAgICAjIC0tc3lzcm9vdD0qICAgICAgICAgIGZvciBzeXNyb290IHN1cHBvcnQKLSsgICAgICAjIC1PKiwgLWZsdG8qLCAtZndob3ByKiwgLWZ1c2UtbGlua2VyLXBsdWdpbiBHQ0MgbGluay10aW1lIG9wdGltaXphdGlvbgotICAgICAgIC02NHwtbWlwc1swLTldfC1yWzAtOV1bMC05XSp8LXhhcmNoPSp8LXh0YXJnZXQ9KnwrREEqfCtERCp8LXEqfC1tKnwgXAotLSAgICAgIC10WzQ1XSp8LXR4c2NhbGUqfC1wfC1wZ3wtLWNvdmVyYWdlfC1mcHJvZmlsZS0qfC1GKnxAKnwtdHA9KikKLSsgICAgICAtdFs0NV0qfC10eHNjYWxlKnwtcHwtcGd8LS1jb3ZlcmFnZXwtZnByb2ZpbGUtKnwtRip8QCp8LXRwPSp8LS1zeXNyb290PSp8IFwKLSsgICAgICAtTyp8LWZsdG8qfC1md2hvcHIqfC1mdXNlLWxpbmtlci1wbHVnaW4pCi0gICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotIAlhcmc9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSAgICAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCi0gICAgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKLS0gICAgICAgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKLSsgICAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGFyZyIKLSAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICA7OwotIAotQEAgLTQ5OTcsNyArNTg2NCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCi0gICAgICAgKi4kb2JqZXh0KQotIAkjIEEgc3RhbmRhcmQgb2JqZWN0LgotLQlvYmpzPSIkb2JqcyAkYXJnIgotKwlmdW5jX2FwcGVuZCBvYmpzICIgJGFyZyIKLSAJOzsKLSAKLSAgICAgICAqLmxvKQotQEAgLTUwMjgsNyArNTg5NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCi0gCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCi0gCSAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzICYmIHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgPSB5ZXM7IHRoZW4KLS0JCWRsZmlsZXM9IiRkbGZpbGVzICRwaWNfb2JqZWN0IgotKwkJZnVuY19hcHBlbmQgZGxmaWxlcyAiICRwaWNfb2JqZWN0IgotIAkJcHJldj0KLSAJCWNvbnRpbnVlCi0gCSAgICAgIGVsc2UKLUBAIC01MDQwLDcgKzU5MDcsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgIyBDSEVDSyBNRTogIEkgdGhpbmsgSSBidXN0ZWQgdGhpcy4gIC1Pc3NhbWEKLSAJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7IHRoZW4KLSAJICAgICAgIyBQcmVsb2FkIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgotLQkgICAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkcGljX29iamVjdCIKLSsJICAgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRwaWNfb2JqZWN0IgotIAkgICAgICBwcmV2PQotIAkgICAgZmkKLSAKLUBAIC01MDg1LDI0ICs1OTUyLDI1IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCi0gICAgICAgKi4kbGliZXh0KQotIAkjIEFuIGFyY2hpdmUuCi0tCWRlcGxpYnM9IiRkZXBsaWJzICRhcmciCi0tCW9sZF9kZXBsaWJzPSIkb2xkX2RlcGxpYnMgJGFyZyIKLSsJZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciCi0rCWZ1bmNfYXBwZW5kIG9sZF9kZXBsaWJzICIgJGFyZyIKLSAJY29udGludWUKLSAJOzsKLSAKLSAgICAgICAqLmxhKQotIAkjIEEgbGlidG9vbC1jb250cm9sbGVkIGxpYnJhcnkuCi0gCi0rCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkYXJnIgotIAlpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCi0gCSAgIyBUaGlzIGxpYnJhcnkgd2FzIHNwZWNpZmllZCB3aXRoIC1kbG9wZW4uCi0tCSAgZGxmaWxlcz0iJGRsZmlsZXMgJGFyZyIKLSsJICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKLSAJICBwcmV2PQotIAllbGlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7IHRoZW4KLSAJICAjIFRoZSBsaWJyYXJ5IHdhcyBzcGVjaWZpZWQgd2l0aCAtZGxwcmVvcGVuLgotLQkgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRhcmciCi0rCSAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCi0gCSAgcHJldj0KLSAJZWxzZQotLQkgIGRlcGxpYnM9IiRkZXBsaWJzICRhcmciCi0rCSAgZnVuY19hcHBlbmQgZGVwbGlicyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCi0gCWZpCi0gCWNvbnRpbnVlCi0gCTs7Ci1AQCAtNTEyNyw3ICs1OTk1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgICBmdW5jX2ZhdGFsX2hlbHAgInRoZSBcYCRwcmV2YXJnJyBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiCi0gCi0gICAgIGlmIHRlc3QgIiRleHBvcnRfZHluYW1pYyIgPSB5ZXMgJiYgdGVzdCAtbiAiJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYyI7IHRoZW4KLS0gICAgICBldmFsICJhcmc9XCIkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjXCIiCi0rICAgICAgZXZhbCBhcmc9XCIkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjXCIKLSAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgotICAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgotICAgICBmaQotQEAgLTUxNDQsMTEgKzYwMTIsMTMgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgZWxzZQotICAgICAgIHNobGliX3NlYXJjaF9wYXRoPQotICAgICBmaQotLSAgICBldmFsICJzeXNfbGliX3NlYXJjaF9wYXRoPVwiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlY1wiIgotLSAgICBldmFsICJzeXNfbGliX2Rsc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWNcIiIKLSsgICAgZXZhbCBzeXNfbGliX3NlYXJjaF9wYXRoPVwiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlY1wiCi0rICAgIGV2YWwgc3lzX2xpYl9kbHNlYXJjaF9wYXRoPVwiJHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjXCIKLSAKLSAgICAgZnVuY19kaXJuYW1lICIkb3V0cHV0IiAiLyIgIiIKLSAgICAgb3V0cHV0X29iamRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkb2JqZGlyIgotKyAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dF9vYmpkaXIvIgotKyAgICB0b29sX291dHB1dF9vYmpkaXI9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAotICAgICAjIENyZWF0ZSB0aGUgb2JqZWN0IGRpcmVjdG9yeS4KLSAgICAgZnVuY19ta2Rpcl9wICIkb3V0cHV0X29iamRpciIKLSAKLUBAIC01MTY5LDEyICs2MDM5LDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICMgRmluZCBhbGwgaW50ZXJkZXBlbmRlbnQgZGVwbGlicyBieSBzZWFyY2hpbmcgZm9yIGxpYnJhcmllcwotICAgICAjIHRoYXQgYXJlIGxpbmtlZCBtb3JlIHRoYW4gb25jZSAoZS5nLiAtbGEgLWxiIC1sYSkKLSAgICAgZm9yIGRlcGxpYiBpbiAkZGVwbGliczsgZG8KLS0gICAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgotKyAgICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCi0gCWNhc2UgIiRsaWJzICIgaW4KLS0JKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OwotKwkqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7Ci0gCWVzYWMKLSAgICAgICBmaQotLSAgICAgIGxpYnM9IiRsaWJzICRkZXBsaWIiCi0rICAgICAgZnVuY19hcHBlbmQgbGlicyAiICRkZXBsaWIiCi0gICAgIGRvbmUKLSAKLSAgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYjsgdGhlbgotQEAgLTUxODcsOSArNjA1Nyw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgaWYgJG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM7IHRoZW4KLSAJZm9yIHByZV9wb3N0X2RlcCBpbiAkcHJlZGVwcyAkcG9zdGRlcHM7IGRvCi0gCSAgY2FzZSAiJHByZV9wb3N0X2RlcHMgIiBpbgotLQkgICoiICRwcmVfcG9zdF9kZXAgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJHByZV9wb3N0X2RlcHMiIDs7Ci0rCSAgKiIgJHByZV9wb3N0X2RlcCAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkcHJlX3Bvc3RfZGVwcyIgOzsKLSAJICBlc2FjCi0tCSAgcHJlX3Bvc3RfZGVwcz0iJHByZV9wb3N0X2RlcHMgJHByZV9wb3N0X2RlcCIKLSsJICBmdW5jX2FwcGVuZCBwcmVfcG9zdF9kZXBzICIgJHByZV9wb3N0X2RlcCIKLSAJZG9uZQotICAgICAgIGZpCi0gICAgICAgcHJlX3Bvc3RfZGVwcz0KLUBAIC01MjU2LDggKzYxMjYsOSBAQCBmdW5jX21vZGVfbGluayAoKQotIAlmb3IgbGliIGluICRkbHByZWZpbGVzOyBkbwotIAkgICMgSWdub3JlIG5vbi1saWJ0b29sLWxpYnMKLSAJICBkZXBlbmRlbmN5X2xpYnM9Ci0rCSAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRsaWIiCi0gCSAgY2FzZSAkbGliIGluCi0tCSAgKi5sYSkJZnVuY19zb3VyY2UgIiRsaWIiIDs7Ci0rCSAgKi5sYSkJZnVuY19zb3VyY2UgIiRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiIDs7Ci0gCSAgZXNhYwotIAotIAkgICMgQ29sbGVjdCBwcmVvcGVuZWQgbGlidG9vbCBkZXBsaWJzLCBleGNlcHQgYW55IHRoaXMgbGlicmFyeQotQEAgLTUyNjcsNyArNjEzOCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgICAgICAgZGVwbGliX2Jhc2U9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0Ci0gCSAgICBjYXNlICIgJHdlYWtfbGlicyAiIGluCi0gCSAgICAqIiAkZGVwbGliX2Jhc2UgIiopIDs7Ci0tCSAgICAqKSBkZXBsaWJzPSIkZGVwbGlicyAkZGVwbGliIiA7OwotKwkgICAgKikgZnVuY19hcHBlbmQgZGVwbGlicyAiICRkZXBsaWIiIDs7Ci0gCSAgICBlc2FjCi0gCSAgZG9uZQotIAlkb25lCi1AQCAtNTI4OCwxMSArNjE1OSwxMSBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCi0gCSAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgotIAkgIGVsc2UKLS0JICAgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYiIKLSsJICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGRlcGxpYiIKLSAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgOyB0aGVuCi0gCQljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgotIAkJICAgICoiICRkZXBsaWIgIiopIDs7Ci0tCQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGRlcGxpYiIgOzsKLSsJCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkZGVwbGliIiA7OwotIAkJZXNhYwotIAkgICAgZmkKLSAJICBmaQotQEAgLTUzNzcsNyArNjI0OCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliIDsgdGhlbgotIAkJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KLSAJCSAgICAqIiAkZGVwbGliICIqKSA7OwotLQkJICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRkZXBsaWIiIDs7Ci0rCQkgICAgKiApIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJGRlcGxpYiIgOzsKLSAJCWVzYWMKLSAJICAgIGZpCi0gCSAgZmkKLUBAIC01MzkwLDcgKzYyNjEsOCBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgdGVzdCAiJHBhc3MiID0gY29udiAmJiBjb250aW51ZQotIAkgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCi0gCSAgICBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgotLQkgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCSAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJICAgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCi0gCSAgICA7OwotIAkgIHByb2cpCi0gCSAgICBpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCi1AQCAtNTQwNCw3ICs2Mjc2LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKLSAJICAgIGZpCi0gCSAgICBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgotLQkgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCSAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJICAgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCi0gCSAgICA7OwotIAkgICopCi0gCSAgICBmdW5jX3dhcm5pbmcgIlxgLUwnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzL29iamVjdHMiCi1AQCAtNTQxNSwxNyArNjI4OCwyMSBAQCBmdW5jX21vZGVfbGluayAoKQotIAktUiopCi0gCSAgaWYgdGVzdCAiJHBhc3MiID0gbGluazsgdGhlbgotIAkgICAgZnVuY19zdHJpcG5hbWUgJy1SJyAnJyAiJGRlcGxpYiIKLS0JICAgIGRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rCSAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJICAgIGRpcj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0Ci0gCSAgICAjIE1ha2Ugc3VyZSB0aGUgeHJwYXRoIGNvbnRhaW5zIG9ubHkgdW5pcXVlIGRpcmVjdG9yaWVzLgotIAkgICAgY2FzZSAiJHhycGF0aCAiIGluCi0gCSAgICAqIiAkZGlyICIqKSA7OwotLQkgICAgKikgeHJwYXRoPSIkeHJwYXRoICRkaXIiIDs7Ci0rCSAgICAqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkZGlyIiA7OwotIAkgICAgZXNhYwotIAkgIGZpCi0gCSAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKLSAJICBjb250aW51ZQotIAkgIDs7Ci0tCSoubGEpIGxpYj0iJGRlcGxpYiIgOzsKLSsJKi5sYSkKLSsJICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIKLSsJICBsaWI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAotKwkgIDs7Ci0gCSouJGxpYmV4dCkKLSAJICBpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCi0gCSAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgotQEAgLTU0ODgsMTEgKzYzNjUsMTEgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIGlmIHRlc3QgIiRwYXNzIiA9IGRscHJlb3BlbiB8fCB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiICE9IHllcyB8fCB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IG5vOyB0aGVuCi0gCSAgICAgICMgSWYgdGhlcmUgaXMgbm8gZGxvcGVuIHN1cHBvcnQgb3Igd2UncmUgbGlua2luZyBzdGF0aWNhbGx5LAotIAkgICAgICAjIHdlIG5lZWQgdG8gcHJlbG9hZC4KLS0JICAgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRlcGxpYiIKLSsJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkZXBsaWIiCi0gCSAgICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgotIAkgICAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgotIAkgICAgZWxzZQotLQkgICAgICBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkZGVwbGliIgotKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGRlcGxpYiIKLSAJICAgIGZpCi0gCSAgZmkKLSAJICBjb250aW51ZQotQEAgLTU1MzgsNyArNjQxNSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgZm9yIHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWcgaW4gJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWdzOyBkbwotIAkgICAgY2FzZSAiICRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCi0gCSAgICAgICoiICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnICIqKSA7OwotLQkgICAgICAqKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIjs7Ci0rCSAgICAgICopIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWciOzsKLSAJICAgIGVzYWMKLSAJICBkb25lCi0gCWZpCi1AQCAtNTU0Niw4ICs2NDIzLDggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJsaWIsbGluayIgfHwKLSAJICAgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJwcm9nLHNjYW4iIHx8Ci0gCSAgIHsgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliOyB9OyB0aGVuCi0tCSAgdGVzdCAtbiAiJGRsb3BlbiIgJiYgZGxmaWxlcz0iJGRsZmlsZXMgJGRsb3BlbiIKLS0JICB0ZXN0IC1uICIkZGxwcmVvcGVuIiAmJiBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkZGxwcmVvcGVuIgotKwkgIHRlc3QgLW4gIiRkbG9wZW4iICYmIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkZGxvcGVuIgotKwkgIHRlc3QgLW4gIiRkbHByZW9wZW4iICYmIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkZGxwcmVvcGVuIgotIAlmaQotIAotIAlpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCi1AQCAtNTU1OCwyMCArNjQzNSwyMCBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBuYW1lIG9mIGxpbmsgbGlicmFyeSBmb3IgXGAkbGliJyIKLSAJICAgIGZpCi0gCSAgICAjIEl0IGlzIGEgbGlidG9vbCBjb252ZW5pZW5jZSBsaWJyYXJ5LCBzbyBhZGQgaW4gaXRzIG9iamVjdHMuCi0tCSAgICBjb252ZW5pZW5jZT0iJGNvbnZlbmllbmNlICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKLS0JICAgIG9sZF9jb252ZW5pZW5jZT0iJG9sZF9jb252ZW5pZW5jZSAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCi0rCSAgICBmdW5jX2FwcGVuZCBjb252ZW5pZW5jZSAiICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKLSsJICAgIGZ1bmNfYXBwZW5kIG9sZF9jb252ZW5pZW5jZSAiICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKLSAJICBlbGlmIHRlc3QgIiRsaW5rbW9kZSIgIT0gcHJvZyAmJiB0ZXN0ICIkbGlua21vZGUiICE9IGxpYjsgdGhlbgotIAkgICAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSBjb252ZW5pZW5jZSBsaWJyYXJ5IgotIAkgIGZpCi0gCSAgdG1wX2xpYnM9Ci0gCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwotIAkgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKLS0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCi0rCSAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgotIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgotLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7Ci0rCSAgICAgICoiICRkZXBsaWIgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGRlcGxpYiIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgZmkKLS0JICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKLSsJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIKLSAJICBkb25lCi0gCSAgY29udGludWUKLSAJZmkgIyAkcGFzcyA9IGNvbnYKLUBAIC01NTc5LDkgKzY0NTYsMTUgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAKLSAJIyBHZXQgdGhlIG5hbWUgb2YgdGhlIGxpYnJhcnkgd2UgbGluayBhZ2FpbnN0LgotIAlsaW5rbGliPQotLQlmb3IgbCBpbiAkb2xkX2xpYnJhcnkgJGxpYnJhcnlfbmFtZXM7IGRvCi0tCSAgbGlua2xpYj0iJGwiCi0tCWRvbmUKLSsJaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJgotKwkgICB7IHRlc3QgIiRwcmVmZXJfc3RhdGljX2xpYnMiID0geWVzIHx8Ci0rCSAgICAgdGVzdCAiJHByZWZlcl9zdGF0aWNfbGlicywkaW5zdGFsbGVkIiA9ICJidWlsdCxubyI7IH07IHRoZW4KLSsJICBsaW5rbGliPSRvbGRfbGlicmFyeQotKwllbHNlCi0rCSAgZm9yIGwgaW4gJG9sZF9saWJyYXJ5ICRsaWJyYXJ5X25hbWVzOyBkbwotKwkgICAgbGlua2xpYj0iJGwiCi0rCSAgZG9uZQotKwlmaQotIAlpZiB0ZXN0IC16ICIkbGlua2xpYiI7IHRoZW4KLSAJICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBuYW1lIG9mIGxpbmsgbGlicmFyeSBmb3IgXGAkbGliJyIKLSAJZmkKLUBAIC01NTk4LDkgKzY0ODEsOSBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgIyBzdGF0aWNhbGx5LCB3ZSBuZWVkIHRvIHByZWxvYWQuICBXZSBhbHNvIG5lZWQgdG8gcHJlbG9hZCBhbnkKLSAJICAgICMgZGVwZW5kZW50IGxpYnJhcmllcyBzbyBsaWJsdGRsJ3MgZGVwbGliIHByZWxvYWRlciBkb2Vzbid0Ci0gCSAgICAjIGJvbWIgb3V0IGluIHRoZSBsb2FkIGRlcGxpYnMgcGhhc2UuCi0tCSAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkbGliICRkZXBlbmRlbmN5X2xpYnMiCi0rCSAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGxpYiAkZGVwZW5kZW5jeV9saWJzIgotIAkgIGVsc2UKLS0JICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWIiCi0rCSAgICBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGxpYiIKLSAJICBmaQotIAkgIGNvbnRpbnVlCi0gCWZpICMgJHBhc3MgPSBkbG9wZW4KLUBAIC01NjIyLDE0ICs2NTA1LDE0IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCi0gCSMgRmluZCB0aGUgcmVsZXZhbnQgb2JqZWN0IGRpcmVjdG9yeSBhbmQgbGlicmFyeSBuYW1lLgotIAlpZiB0ZXN0ICJYJGluc3RhbGxlZCIgPSBYeWVzOyB0aGVuCi0tCSAgaWYgdGVzdCAhIC1mICIkbGliZGlyLyRsaW5rbGliIiAmJiB0ZXN0IC1mICIkYWJzX2xhZGlyLyRsaW5rbGliIjsgdGhlbgotKwkgIGlmIHRlc3QgISAtZiAiJGx0X3N5c3Jvb3QkbGliZGlyLyRsaW5rbGliIiAmJiB0ZXN0IC1mICIkYWJzX2xhZGlyLyRsaW5rbGliIjsgdGhlbgotIAkgICAgZnVuY193YXJuaW5nICJsaWJyYXJ5IFxgJGxpYicgd2FzIG1vdmVkLiIKLSAJICAgIGRpcj0iJGxhZGlyIgotIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgotIAkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgotIAkgIGVsc2UKLS0JICAgIGRpcj0iJGxpYmRpciIKLS0JICAgIGFic2Rpcj0iJGxpYmRpciIKLSsJICAgIGRpcj0iJGx0X3N5c3Jvb3QkbGliZGlyIgotKwkgICAgYWJzZGlyPSIkbHRfc3lzcm9vdCRsaWJkaXIiCi0gCSAgZmkKLSAJICB0ZXN0ICJYJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSBYeWVzICYmIGF2b2lkdGVtcHJwYXRoPXllcwotIAllbHNlCi1AQCAtNTYzNywxMiArNjUyMCwxMiBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgZGlyPSIkbGFkaXIiCi0gCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCi0gCSAgICAjIFJlbW92ZSB0aGlzIHNlYXJjaCBwYXRoIGxhdGVyCi0tCSAgICBub3RpbnN0X3BhdGg9IiRub3RpbnN0X3BhdGggJGFic19sYWRpciIKLSsJICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfcGF0aCAiICRhYnNfbGFkaXIiCi0gCSAgZWxzZQotIAkgICAgZGlyPSIkbGFkaXIvJG9iamRpciIKLSAJICAgIGFic2Rpcj0iJGFic19sYWRpci8kb2JqZGlyIgotIAkgICAgIyBSZW1vdmUgdGhpcyBzZWFyY2ggcGF0aCBsYXRlcgotLQkgICAgbm90aW5zdF9wYXRoPSIkbm90aW5zdF9wYXRoICRhYnNfbGFkaXIiCi0rCSAgICBmdW5jX2FwcGVuZCBub3RpbnN0X3BhdGggIiAkYWJzX2xhZGlyIgotIAkgIGZpCi0gCWZpICMgJGluc3RhbGxlZCA9IHllcwotIAlmdW5jX3N0cmlwbmFtZSAnbGliJyAnLmxhJyAiJGxhbmFtZSIKLUBAIC01NjUzLDIwICs2NTM2LDQ2IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgaWYgdGVzdCAteiAiJGxpYmRpciIgJiYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2c7IHRoZW4KLSAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIm9ubHkgbGlicmFyaWVzIG1heSAtZGxwcmVvcGVuIGEgY29udmVuaWVuY2UgbGlicmFyeTogXGAkbGliJyIKLSAJICBmaQotLQkgICMgUHJlZmVyIHVzaW5nIGEgc3RhdGljIGxpYnJhcnkgKHNvIHRoYXQgbm8gc2lsbHkgX0RZTkFNSUMgc3ltYm9scwotLQkgICMgYXJlIHJlcXVpcmVkIHRvIGxpbmspLgotLQkgIGlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSI7IHRoZW4KLS0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJG9sZF9saWJyYXJ5IgotLQkgICAgIyBLZWVwIGEgbGlzdCBvZiBwcmVvcGVuZWQgY29udmVuaWVuY2UgbGlicmFyaWVzIHRvIGNoZWNrCi0tCSAgICAjIHRoYXQgdGhleSBhcmUgYmVpbmcgdXNlZCBjb3JyZWN0bHkgaW4gdGhlIGxpbmsgcGFzcy4KLS0JICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKLS0JCWRscHJlY29udmVuaWVuY2VsaWJzPSIkZGxwcmVjb252ZW5pZW5jZWxpYnMgJGRpci8kb2xkX2xpYnJhcnkiCi0tCSAgIyBPdGhlcndpc2UsIHVzZSB0aGUgZGxuYW1lLCBzbyB0aGF0IGx0X2Rsb3BlbiBmaW5kcyBpdC4KLS0JICBlbGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCi0tCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRkbG5hbWUiCi0tCSAgZWxzZQotLQkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kbGlua2xpYiIKLS0JICBmaQotKwkgIGNhc2UgIiRob3N0IiBpbgotKwkgICAgIyBzcGVjaWFsIGhhbmRsaW5nIGZvciBwbGF0Zm9ybXMgd2l0aCBQRS1ETExzLgotKwkgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCi0rCSAgICAgICMgTGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBsaW5rIGFnYWluc3Qgc2hhcmVkIGxpYnJhcnkgaWYgYm90aAotKwkgICAgICAjIHN0YXRpYyBhbmQgc2hhcmVkIGFyZSBwcmVzZW50LiAgVGhlcmVmb3JlLCBlbnN1cmUgd2UgZXh0cmFjdAotKwkgICAgICAjIHN5bWJvbHMgZnJvbSB0aGUgaW1wb3J0IGxpYnJhcnkgaWYgYSBzaGFyZWQgbGlicmFyeSBpcyBwcmVzZW50Ci0rCSAgICAgICMgKG90aGVyd2lzZSwgdGhlIGRsb3BlbiBtb2R1bGUgbmFtZSB3aWxsIGJlIGluY29ycmVjdCkuICBXZSBkbwotKwkgICAgICAjIHRoaXMgYnkgcHV0dGluZyB0aGUgaW1wb3J0IGxpYnJhcnkgbmFtZSBpbnRvICRuZXdkbHByZWZpbGVzLgotKwkgICAgICAjIFdlIHJlY292ZXIgdGhlIGRsb3BlbiBtb2R1bGUgbmFtZSBieSAnc2F2aW5nJyB0aGUgbGEgZmlsZQotKwkgICAgICAjIG5hbWUgaW4gYSBzcGVjaWFsIHB1cnBvc2UgdmFyaWFibGUsIGFuZCAobGF0ZXIpIGV4dHJhY3RpbmcgdGhlCi0rCSAgICAgICMgZGxuYW1lIGZyb20gdGhlIGxhIGZpbGUuCi0rCSAgICAgIGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCi0rCSAgICAgICAgZnVuY190cl9zaCAiJGRpci8kbGlua2xpYiIKLSsJICAgICAgICBldmFsICJsaWJmaWxlXyRmdW5jX3RyX3NoX3Jlc3VsdD1cJGFic19sYWRpci9cJGxhbmFtZSIKLSsJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kbGlua2xpYiIKLSsJICAgICAgZWxzZQotKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRvbGRfbGlicmFyeSIKLSsJICAgICAgICAjIEtlZXAgYSBsaXN0IG9mIHByZW9wZW5lZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgdG8gY2hlY2sKLSsJICAgICAgICAjIHRoYXQgdGhleSBhcmUgYmVpbmcgdXNlZCBjb3JyZWN0bHkgaW4gdGhlIGxpbmsgcGFzcy4KLSsJICAgICAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0rCSAgICAgICAgICBmdW5jX2FwcGVuZCBkbHByZWNvbnZlbmllbmNlbGlicyAiICRkaXIvJG9sZF9saWJyYXJ5IgotKwkgICAgICBmaQotKwkgICAgOzsKLSsJICAgICogKQotKwkgICAgICAjIFByZWZlciB1c2luZyBhIHN0YXRpYyBsaWJyYXJ5IChzbyB0aGF0IG5vIHNpbGx5IF9EWU5BTUlDIHN5bWJvbHMKLSsJICAgICAgIyBhcmUgcmVxdWlyZWQgdG8gbGluaykuCi0rCSAgICAgIGlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSI7IHRoZW4KLSsJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kb2xkX2xpYnJhcnkiCi0rCSAgICAgICAgIyBLZWVwIGEgbGlzdCBvZiBwcmVvcGVuZWQgY29udmVuaWVuY2UgbGlicmFyaWVzIHRvIGNoZWNrCi0rCSAgICAgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCi0rCSAgICAgICAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAotKwkgICAgICAgICAgZnVuY19hcHBlbmQgZGxwcmVjb252ZW5pZW5jZWxpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKLSsJICAgICAgIyBPdGhlcndpc2UsIHVzZSB0aGUgZGxuYW1lLCBzbyB0aGF0IGx0X2Rsb3BlbiBmaW5kcyBpdC4KLSsJICAgICAgZWxpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgotKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRkbG5hbWUiCi0rCSAgICAgIGVsc2UKLSsJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kbGlua2xpYiIKLSsJICAgICAgZmkKLSsJICAgIDs7Ci0rCSAgZXNhYwotIAlmaSAjICRwYXNzID0gZGxwcmVvcGVuCi0gCi0gCWlmIHRlc3QgLXogIiRsaWJkaXIiOyB0aGVuCi1AQCAtNTY4NCw3ICs2NTkzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAKLSAKLSAJaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgJiYgdGVzdCAiJHBhc3MiICE9IGxpbms7IHRoZW4KLS0JICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGxhZGlyIgotKwkgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRsYWRpciIKLSAJICBkZXBsaWJzPSIkbGliICRkZXBsaWJzIgotIAotIAkgIGxpbmthbGxkZXBsaWJzPW5vCi1AQCAtNTY5Nyw3ICs2NjA2LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCi0gCSAgICBjYXNlICRkZXBsaWIgaW4KLSAJICAgIC1MKikgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKLS0JICAgICAgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCSAgICAgICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkgICAgICAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgotIAkJIDs7Ci0gCSAgICBlc2FjCi0gCSAgICAjIE5lZWQgdG8gbGluayBhZ2FpbnN0IGFsbCBkZXBlbmRlbmN5X2xpYnM/Ci1AQCAtNTcwOCwxMiArNjYxOCwxMiBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgICAjIG9yL2FuZCBsaW5rIGFnYWluc3Qgc3RhdGljIGxpYnJhcmllcwotIAkgICAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKLSAJICAgIGZpCi0tCSAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgotKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KLSAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KLS0JICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OwotKwkgICAgICAqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGZpCi0tCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCi0rCSAgICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiCi0gCSAgZG9uZSAjIGZvciBkZXBsaWIKLSAJICBjb250aW51ZQotIAlmaSAjICRsaW5rbW9kZSA9IHByb2cuLi4KLUBAIC01NzI4LDcgKzY2MzgsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgICAjIE1ha2Ugc3VyZSB0aGUgcnBhdGggY29udGFpbnMgb25seSB1bmlxdWUgZGlyZWN0b3JpZXMuCi0gCSAgICAgIGNhc2UgIiR0ZW1wX3JwYXRoOiIgaW4KLSAJICAgICAgKiIkYWJzZGlyOiIqKSA7OwotLQkgICAgICAqKSB0ZW1wX3JwYXRoPSIkdGVtcF9ycGF0aCRhYnNkaXI6IiA7OwotKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0ZW1wX3JwYXRoICIkYWJzZGlyOiIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgZmkKLSAKLUBAIC01NzQwLDcgKzY2NTAsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgKikKLSAJICAgICAgY2FzZSAiJGNvbXBpbGVfcnBhdGggIiBpbgotIAkgICAgICAqIiAkYWJzZGlyICIqKSA7OwotLQkgICAgICAqKSBjb21waWxlX3JwYXRoPSIkY29tcGlsZV9ycGF0aCAkYWJzZGlyIgotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBjb21waWxlX3JwYXRoICIgJGFic2RpciIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgICA7OwotIAkgICAgZXNhYwotQEAgLTU3NDksNyArNjY1OSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAqKQotIAkgICAgICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgotIAkgICAgICAqIiAkbGliZGlyICIqKSA7OwotLQkgICAgICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiCi0rCSAgICAgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgICA7OwotIAkgICAgZXNhYwotQEAgLTU3NzQsMTIgKzY2ODQsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBjYXNlICRob3N0IGluCi0gCSAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKikKLSAJICAgICAgIyBObyBwb2ludCBpbiByZWxpbmtpbmcgRExMcyBiZWNhdXNlIHBhdGhzIGFyZSBub3QgZW5jb2RlZAotLQkgICAgICBub3RpbnN0X2RlcGxpYnM9IiRub3RpbnN0X2RlcGxpYnMgJGxpYiIKLSsJICAgICAgZnVuY19hcHBlbmQgbm90aW5zdF9kZXBsaWJzICIgJGxpYiIKLSAJICAgICAgbmVlZF9yZWxpbms9bm8KLSAJICAgIDs7Ci0gCSAgKikKLSAJICAgIGlmIHRlc3QgIiRpbnN0YWxsZWQiID0gbm87IHRoZW4KLS0JICAgICAgbm90aW5zdF9kZXBsaWJzPSIkbm90aW5zdF9kZXBsaWJzICRsaWIiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfZGVwbGlicyAiICRsaWIiCi0gCSAgICAgIG5lZWRfcmVsaW5rPXllcwotIAkgICAgZmkKLSAJICAgIDs7Ci1AQCAtNTgxNCw3ICs2NzI0LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICopCi0gCSAgICAgIGNhc2UgIiRjb21waWxlX3JwYXRoICIgaW4KLSAJICAgICAgKiIgJGFic2RpciAiKikgOzsKLS0JICAgICAgKikgY29tcGlsZV9ycGF0aD0iJGNvbXBpbGVfcnBhdGggJGFic2RpciIKLSsJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9ycGF0aCAiICRhYnNkaXIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgICAgOzsKLSAJICAgIGVzYWMKLUBAIC01ODIzLDcgKzY3MzMsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgKikKLSAJICAgICAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KLSAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAgICAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIgotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgICAgOzsKLSAJICAgIGVzYWMKLUBAIC01ODM1LDcgKzY3NDUsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgc2hpZnQKLSAJICAgIHJlYWxuYW1lPSIkMSIKLSAJICAgIHNoaWZ0Ci0tCSAgICBldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgotKwkgICAgbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCi0gCSAgICAjIHVzZSBkbG5hbWUgaWYgd2UgZ290IGl0LiBpdCdzIHBlcmZlY3RseSBnb29kLCBubz8KLSAJICAgIGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCi0gCSAgICAgIHNvbmFtZT0iJGRsbmFtZSIKLUBAIC01ODQ4LDcgKzY3NTgsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkJdmVyc3VmZml4PSItJG1ham9yIgotIAkJOzsKLSAJICAgICAgZXNhYwotLQkgICAgICBldmFsICJzb25hbWU9XCIkc29uYW1lX3NwZWNcIiIKLSsJICAgICAgZXZhbCBzb25hbWU9XCIkc29uYW1lX3NwZWNcIgotIAkgICAgZWxzZQotIAkgICAgICBzb25hbWU9IiRyZWFsbmFtZSIKLSAJICAgIGZpCi1AQCAtNTg3Nyw3ICs2Nzg3LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIGxpbmtsaWI9JG5ld2xpYgotIAkgIGZpICMgdGVzdCAtbiAiJG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzIgotIAotLQkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRtb2RlIiAhPSByZWxpbms7IHRoZW4KLSsJICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluazsgdGhlbgotIAkgICAgYWRkX3NobGlicGF0aD0KLSAJICAgIGFkZF9kaXI9Ci0gCSAgICBhZGQ9Ci1AQCAtNTkzMyw3ICs2ODQzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJCWlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCi0gCQkgIGNhc2UgJGxpYmRpciBpbgotIAkJICAgIFtcXC9dKikKLS0JCSAgICAgIGFkZF9kaXI9IiRhZGRfZGlyIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCi0rCQkgICAgICBmdW5jX2FwcGVuZCBhZGRfZGlyICIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKLSAJCSAgICAgIDs7Ci0gCQkgIGVzYWMKLSAJCWZpCi1AQCAtNTk1NSw3ICs2ODY1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIGlmIHRlc3QgLW4gIiRhZGRfc2hsaWJwYXRoIjsgdGhlbgotIAkgICAgICBjYXNlIDokY29tcGlsZV9zaGxpYnBhdGg6IGluCi0gCSAgICAgICoiOiRhZGRfc2hsaWJwYXRoOiIqKSA7OwotLQkgICAgICAqKSBjb21waWxlX3NobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJGFkZF9zaGxpYnBhdGg6IiA7OwotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBjb21waWxlX3NobGlicGF0aCAiJGFkZF9zaGxpYnBhdGg6IiA7OwotIAkgICAgICBlc2FjCi0gCSAgICBmaQotIAkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2c7IHRoZW4KLUBAIC01OTY5LDEzICs2ODc5LDEzIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCQkgdGVzdCAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiID0geWVzOyB0aGVuCi0gCQljYXNlIDokZmluYWxpemVfc2hsaWJwYXRoOiBpbgotIAkJKiI6JGxpYmRpcjoiKikgOzsKLS0JCSopIGZpbmFsaXplX3NobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCRsaWJkaXI6IiA7OwotKwkJKikgZnVuY19hcHBlbmQgZmluYWxpemVfc2hsaWJwYXRoICIkbGliZGlyOiIgOzsKLSAJCWVzYWMKLSAJICAgICAgZmkKLSAJICAgIGZpCi0gCSAgZmkKLSAKLS0JICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KLSsJICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCi0gCSAgICBhZGRfc2hsaWJwYXRoPQotIAkgICAgYWRkX2Rpcj0KLSAJICAgIGFkZD0KLUBAIC01OTg5LDcgKzY4OTksNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgPSB5ZXM7IHRoZW4KLSAJICAgICAgY2FzZSA6JGZpbmFsaXplX3NobGlicGF0aDogaW4KLSAJICAgICAgKiI6JGxpYmRpcjoiKikgOzsKLS0JICAgICAgKikgZmluYWxpemVfc2hsaWJwYXRoPSIkZmluYWxpemVfc2hsaWJwYXRoJGxpYmRpcjoiIDs7Ci0rCSAgICAgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3NobGlicGF0aCAiJGxpYmRpcjoiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgICAgYWRkPSItbCRuYW1lIgotIAkgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfYXV0b21hdGljIiA9IHllczsgdGhlbgotQEAgLTYwMDEsMTIgKzY5MTEsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgZmkKLSAJICAgIGVsc2UKLSAJICAgICAgIyBXZSBjYW5ub3Qgc2VlbSB0byBoYXJkY29kZSBpdCwgZ3Vlc3Mgd2UnbGwgZmFrZSBpdC4KLS0JICAgICAgYWRkX2Rpcj0iLUwkbGliZGlyIgotKwkgICAgICBhZGRfZGlyPSItTCRsdF9zeXNyb290JGxpYmRpciIKLSAJICAgICAgIyBUcnkgbG9va2luZyBmaXJzdCBpbiB0aGUgbG9jYXRpb24gd2UncmUgYmVpbmcgaW5zdGFsbGVkIHRvLgotIAkgICAgICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgotIAkJY2FzZSAkbGliZGlyIGluCi0gCQkgIFtcXC9dKikKLS0JCSAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgotKwkJICAgIGZ1bmNfYXBwZW5kIGFkZF9kaXIgIiAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgotIAkJICAgIDs7Ci0gCQllc2FjCi0gCSAgICAgIGZpCi1AQCAtNjA4MywyNyArNjk5MywzMyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgICAgICAgIHRlbXBfeHJwYXRoPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSAJCSAgIGNhc2UgIiAkeHJwYXRoICIgaW4KLSAJCSAgICoiICR0ZW1wX3hycGF0aCAiKikgOzsKLS0JCSAgICopIHhycGF0aD0iJHhycGF0aCAkdGVtcF94cnBhdGgiOzsKLSsJCSAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICR0ZW1wX3hycGF0aCI7OwotIAkJICAgZXNhYzs7Ci0tCSAgICAgICopIHRlbXBfZGVwbGlicz0iJHRlbXBfZGVwbGlicyAkbGliZGlyIjs7Ci0rCSAgICAgICopIGZ1bmNfYXBwZW5kIHRlbXBfZGVwbGlicyAiICRsaWJkaXIiOzsKLSAJICAgICAgZXNhYwotIAkgICAgZG9uZQotIAkgICAgZGVwZW5kZW5jeV9saWJzPSIkdGVtcF9kZXBsaWJzIgotIAkgIGZpCi0gCi0tCSAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRhYnNkaXIiCi0rCSAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGFic2RpciIKLSAJICAjIExpbmsgYWdhaW5zdCB0aGlzIGxpYnJhcnkKLSAJICB0ZXN0ICIkbGlua19zdGF0aWMiID0gbm8gJiYgbmV3ZGVwZW5kZW5jeV9saWJzPSIkYWJzX2xhZGlyLyRsYW5hbWUgJG5ld2RlcGVuZGVuY3lfbGlicyIKLSAJICAjIC4uLiBhbmQgaXRzIGRlcGVuZGVuY3lfbGlicwotIAkgIHRtcF9saWJzPQotIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KLSAJICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgotLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KLSsJICAgIGNhc2UgJGRlcGxpYiBpbgotKyAgICAgICAgICAgICAgLUwqKSBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgotKyAgICAgICAgICAgICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCI7OwotKyAgICAgICAgICAgICAgKikgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiIDs7Ci0rICAgICAgICAgICAgZXNhYwotKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KLSAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KLS0JICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OwotKwkgICAgICAqIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0ICIqKQotKyAgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGZpCi0tCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCi0rCSAgICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCi0gCSAgZG9uZQotIAotIAkgIGlmIHRlc3QgIiRsaW5rX2FsbF9kZXBsaWJzIiAhPSBubzsgdGhlbgotQEAgLTYxMTMsOCArNzAyOSwxMCBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgICBjYXNlICRkZXBsaWIgaW4KLSAJICAgICAgLUwqKSBwYXRoPSIkZGVwbGliIiA7OwotIAkgICAgICAqLmxhKQotKwkgICAgICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIgotKwkgICAgICAgIGRlcGxpYj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0Ci0gCSAgICAgICAgZnVuY19kaXJuYW1lICIkZGVwbGliIiAiIiAiLiIKLS0JCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0rCQlkaXI9JGZ1bmNfZGlybmFtZV9yZXN1bHQKLSAJCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgotIAkJY2FzZSAkZGlyIGluCi0gCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFic2Rpcj0iJGRpciIgOzsKLUBAIC02MTMwLDcgKzcwNDgsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkJY2FzZSAkaG9zdCBpbgotIAkJKi0qLWRhcndpbiopCi0gCQkgIGRlcGRlcGw9Ci0tCQkgIGRlcGxpYnJhcnlfbmFtZXM9YCR7U0VEfSAtbiAtZSAncy9ebGlicmFyeV9uYW1lcz1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCi0rCQkgIGV2YWwgZGVwbGlicmFyeV9uYW1lcz1gJHtTRUR9IC1uIC1lICdzL15saWJyYXJ5X25hbWVzPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKLSAJCSAgaWYgdGVzdCAtbiAiJGRlcGxpYnJhcnlfbmFtZXMiIDsgdGhlbgotIAkJICAgIGZvciB0bXAgaW4gJGRlcGxpYnJhcnlfbmFtZXMgOyBkbwotIAkJICAgICAgZGVwZGVwbD0kdG1wCi1AQCAtNjE0MSw4ICs3MDU5LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGRhcndpbl9pbnN0YWxsX25hbWUiOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkYXJ3aW5faW5zdGFsbF9uYW1lPWAke09UT09MNjR9IC1MICRkZXBkZXBsICB8IGF3ayAne2lmIChOUiA9PSAyKSB7cHJpbnQgJDE7ZXhpdH19J2AKLSAgICAgICAgICAgICAgICAgICAgICAgZmkKLS0JCSAgICAgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHt3bH0tZHlsaWJfZmlsZSAke3dsfSR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKLS0JCSAgICAgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAtZHlsaWJfZmlsZSAke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCi0rCQkgICAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR7d2x9LWR5bGliX2ZpbGUgJHt3bH0ke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCi0rCQkgICAgICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAtZHlsaWJfZmlsZSAke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCi0gCQkgICAgICBwYXRoPQotIAkJICAgIGZpCi0gCQkgIGZpCi1AQCAtNjE1Miw3ICs3MDcwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJCSAgOzsKLSAJCWVzYWMKLSAJCWVsc2UKLS0JCSAgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCi0rCQkgIGV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCi0gCQkgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKLSAJCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRkZXBsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLSAJCSAgdGVzdCAiJGFic2RpciIgIT0gIiRsaWJkaXIiICYmIFwKLUBAIC02MTkyLDcgKzcxMTAsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGZvciBkaXIgaW4gJG5ld2xpYl9zZWFyY2hfcGF0aDsgZG8KLSAJICAgIGNhc2UgIiRsaWJfc2VhcmNoX3BhdGggIiBpbgotIAkgICAgKiIgJGRpciAiKikgOzsKLS0JICAgICopIGxpYl9zZWFyY2hfcGF0aD0iJGxpYl9zZWFyY2hfcGF0aCAkZGlyIiA7OwotKwkgICAgKikgZnVuY19hcHBlbmQgbGliX3NlYXJjaF9wYXRoICIgJGRpciIgOzsKLSAJICAgIGVzYWMKLSAJICBkb25lCi0gCSAgbmV3bGliX3NlYXJjaF9wYXRoPQotQEAgLTYyMDUsNyArNzEyMyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCWZpCi0gCWZvciB2YXIgaW4gJHZhcnMgZGVwZW5kZW5jeV9saWJzOyBkbwotIAkgICMgQWRkIGxpYnJhcmllcyB0byAkdmFyIGluIHJldmVyc2Ugb3JkZXIKLS0JICBldmFsIHRtcF9saWJzPVwkJHZhcgotKwkgIGV2YWwgdG1wX2xpYnM9XCJcJCR2YXJcIgotIAkgIG5ld19saWJzPQotIAkgIGZvciBkZXBsaWIgaW4gJHRtcF9saWJzOyBkbwotIAkgICAgIyBGSVhNRTogUGVkYW50aWNhbGx5LCB0aGlzIGlzIHRoZSByaWdodCB0aGluZyB0byBkbywgc28KLUBAIC02MjUwLDEzICs3MTY4LDEzIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAtTCopCi0gCSAgICAgIGNhc2UgIiAkdG1wX2xpYnMgIiBpbgotIAkgICAgICAqIiAkZGVwbGliICIqKSA7OwotLQkgICAgICAqKSB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiIDs7Ci0rCSAgICAgICopIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgICA7OwotLQkgICAgKikgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIiA7OwotKwkgICAgKikgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIiA7OwotIAkgICAgZXNhYwotIAkgIGRvbmUKLS0JICBldmFsICR2YXI9XCR0bXBfbGlicwotKwkgIGV2YWwgJHZhcj1cIiR0bXBfbGlic1wiCi0gCWRvbmUgIyBmb3IgdmFyCi0gICAgICAgZmkKLSAgICAgICAjIExhc3Qgc3RlcDogcmVtb3ZlIHJ1bnRpbWUgbGlicyBmcm9tIGRlcGVuZGVuY3lfbGlicwotQEAgLTYyNjksNyArNzE4Nyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgOzsKLSAJZXNhYwotIAlpZiB0ZXN0IC1uICIkaSIgOyB0aGVuCi0tCSAgdG1wX2xpYnM9IiR0bXBfbGlicyAkaSIKLSsJICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRpIgotIAlmaQotICAgICAgIGRvbmUKLSAgICAgICBkZXBlbmRlbmN5X2xpYnM9JHRtcF9saWJzCi1AQCAtNjMxMCw3ICs3MjI4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgICAjIE5vdyBzZXQgdGhlIHZhcmlhYmxlcyBmb3IgYnVpbGRpbmcgb2xkIGxpYnJhcmllcy4KLSAgICAgICBidWlsZF9saWJ0b29sX2xpYnM9bm8KLSAgICAgICBvbGRsaWJzPSIkb3V0cHV0IgotLSAgICAgIG9ianM9IiRvYmpzJG9sZF9kZXBsaWJzIgotKyAgICAgIGZ1bmNfYXBwZW5kIG9ianMgIiRvbGRfZGVwbGlicyIKLSAgICAgICA7OwotIAotICAgICBsaWIpCi1AQCAtNjMxOSw4ICs3MjM3LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgICBsaWIqKQotIAlmdW5jX3N0cmlwbmFtZSAnbGliJyAnLmxhJyAiJG91dHB1dG5hbWUiCi0gCW5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotLQlldmFsICJzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIiCi0tCWV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCi0rCWV2YWwgc2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiCi0rCWV2YWwgbGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIgotIAk7OwotICAgICAgICopCi0gCXRlc3QgIiRtb2R1bGUiID0gbm8gJiYgXAotQEAgLTYzMzAsOCArNzI0OCw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgIyBBZGQgdGhlICJsaWIiIHByZWZpeCBmb3IgbW9kdWxlcyBpZiByZXF1aXJlZAotIAkgIGZ1bmNfc3RyaXBuYW1lICcnICcubGEnICIkb3V0cHV0bmFtZSIKLSAJICBuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLS0JICBldmFsICJzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIiCi0tCSAgZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKLSsJICBldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgotKwkgIGV2YWwgbGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIgotIAllbHNlCi0gCSAgZnVuY19zdHJpcG5hbWUgJycgJy5sYScgIiRvdXRwdXRuYW1lIgotIAkgIGxpYm5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotQEAgLTYzNDYsNyArNzI2NCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgZWNobwotIAkgICRFQ0hPICIqKiogV2FybmluZzogTGlua2luZyB0aGUgc2hhcmVkIGxpYnJhcnkgJG91dHB1dCBhZ2FpbnN0IHRoZSBub24tbGlidG9vbCIKLSAJICAkRUNITyAiKioqIG9iamVjdHMgJG9ianMgaXMgbm90IHBvcnRhYmxlISIKLS0JICBsaWJvYmpzPSIkbGlib2JqcyAkb2JqcyIKLSsJICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJG9ianMiCi0gCWZpCi0gICAgICAgZmkKLSAKLUBAIC02NTQ0LDcgKzc0NjIsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGRvbmUKLSAKLSAJICAjIE1ha2UgZXhlY3V0YWJsZXMgZGVwZW5kIG9uIG91ciBjdXJyZW50IHZlcnNpb24uCi0tCSAgdmVyc3RyaW5nPSIkdmVyc3RyaW5nOiR7Y3VycmVudH0uMCIKLSsJICBmdW5jX2FwcGVuZCB2ZXJzdHJpbmcgIjoke2N1cnJlbnR9LjAiCi0gCSAgOzsKLSAKLSAJcW54KQotQEAgLTY2MTIsMTAgKzc1MzAsMTAgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgICBmaQotIAotICAgICAgIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zICIkbGlibmFtZSIgIiRsaWJuYW1lIiAieWVzIgotLSAgICAgIGxpYm9ianM9IiRsaWJvYmpzICRzeW1maWxlb2JqIgotKyAgICAgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkc3ltZmlsZW9iaiIKLSAgICAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQotIAotLSAgICAgIGlmIHRlc3QgIiRtb2RlIiAhPSByZWxpbms7IHRoZW4KLSsgICAgICBpZiB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluazsgdGhlbgotIAkjIFJlbW92ZSBvdXIgb3V0cHV0cywgYnV0IGRvbid0IHJlbW92ZSBvYmplY3QgZmlsZXMgc2luY2UgdGhleQotIAkjIG1heSBoYXZlIGJlZW4gY3JlYXRlZCB3aGVuIGNvbXBpbGluZyBQSUMgb2JqZWN0cy4KLSAJcmVtb3ZlbGlzdD0KLUBAIC02NjMxLDcgKzc1NDksNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkJICAgY29udGludWUKLSAJCSBmaQotIAkgICAgICAgZmkKLS0JICAgICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRwIgotKwkgICAgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRwIgotIAkgICAgICAgOzsKLSAJICAgICopIDs7Ci0gCSAgZXNhYwotQEAgLTY2NDIsNyArNzU2MCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCi0gICAgICAgIyBOb3cgc2V0IHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCi0gICAgICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSBjb252ZW5pZW5jZSA7IHRoZW4KLS0Jb2xkbGlicz0iJG9sZGxpYnMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKLSsJZnVuY19hcHBlbmQgb2xkbGlicyAiICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCi0gCi0gCSMgVHJhbnNmb3JtIC5sbyBmaWxlcyB0byAubyBmaWxlcy4KLSAJb2xkb2Jqcz0iJG9ianMgImAkRUNITyAiJGxpYm9ianMiIHwgJFNQMk5MIHwgJFNFRCAiL1wuJHtsaWJleHR9JC9kOyAkbG8ybyIgfCAkTkwyU1BgCi1AQCAtNjY1OSwxMCArNzU3NywxMSBAQCBmdW5jX21vZGVfbGluayAoKQotIAkjIElmIHRoZSB1c2VyIHNwZWNpZmllZCBhbnkgcnBhdGggZmxhZ3MsIHRoZW4gYWRkIHRoZW0uCi0gCXRlbXBfeHJwYXRoPQotIAlmb3IgbGliZGlyIGluICR4cnBhdGg7IGRvCi0tCSAgdGVtcF94cnBhdGg9IiR0ZW1wX3hycGF0aCAtUiRsaWJkaXIiCi0rCSAgZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCi0rCSAgZnVuY19hcHBlbmQgdGVtcF94cnBhdGggIiAtUiRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQiCi0gCSAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KLSAJICAqIiAkbGliZGlyICIqKSA7OwotLQkgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7Ci0gCSAgZXNhYwotIAlkb25lCi0gCWlmIHRlc3QgIiRoYXJkY29kZV9pbnRvX2xpYnMiICE9IHllcyB8fCB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCi1AQCAtNjY3Niw3ICs3NTk1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgICBmb3IgbGliIGluICRvbGRfZGxmaWxlczsgZG8KLSAJY2FzZSAiICRkbHByZWZpbGVzICRkbGZpbGVzICIgaW4KLSAJKiIgJGxpYiAiKikgOzsKLS0JKikgZGxmaWxlcz0iJGRsZmlsZXMgJGxpYiIgOzsKLSsJKikgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRsaWIiIDs7Ci0gCWVzYWMKLSAgICAgICBkb25lCi0gCi1AQCAtNjY4Niw3ICs3NjA1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgICBmb3IgbGliIGluICRvbGRfZGxwcmVmaWxlczsgZG8KLSAJY2FzZSAiJGRscHJlZmlsZXMgIiBpbgotIAkqIiAkbGliICIqKSA7OwotLQkqKSBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkbGliIiA7OwotKwkqKSBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGxpYiIgOzsKLSAJZXNhYwotICAgICAgIGRvbmUKLSAKLUBAIC02Njk4LDcgKzc2MTcsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgOzsKLSAJICAqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCi0gCSAgICAjIFJoYXBzb2R5IEMgbGlicmFyeSBpcyBpbiB0aGUgU3lzdGVtIGZyYW1ld29yawotLQkgICAgZGVwbGlicz0iJGRlcGxpYnMgU3lzdGVtLmx0ZnJhbWV3b3JrIgotKwkgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIFN5c3RlbS5sdGZyYW1ld29yayIKLSAJICAgIDs7Ci0gCSAgKi0qLW5ldGJzZCopCi0gCSAgICAjIERvbid0IGxpbmsgd2l0aCBsaWJjIHVudGlsIHRoZSBhLm91dCBsZC5zbyBpcyBmaXhlZC4KLUBAIC02NzE1LDcgKzc2MzQsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICopCi0gCSAgICAjIEFkZCBsaWJjIHRvIGRlcGxpYnMgb24gYWxsIG90aGVyIHN5c3RlbXMgaWYgbmVjZXNzYXJ5LgotIAkgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbmVlZF9sYyIgPSAieWVzIjsgdGhlbgotLQkgICAgICBkZXBsaWJzPSIkZGVwbGlicyAtbGMiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAtbGMiCi0gCSAgICBmaQotIAkgICAgOzsKLSAJICBlc2FjCi1AQCAtNjc2NCwxOCArNzY4MywxOCBAQCBFT0YKLSAJCWlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KLSAJCSAgY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCi0gCQkgICoiICRpICIqKQotLQkJICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgotKwkJICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKLSAJCSAgICBpPSIiCi0gCQkgICAgOzsKLSAJCSAgZXNhYwotIAkJZmkKLSAJCWlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KLS0JCSAgZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKLS0JCSAgZXZhbCAiZGVwbGliX21hdGNoZXM9XCIkbGlicmFyeV9uYW1lc19zcGVjXCIiCi0rCQkgIGxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAotKwkJICBkZXBsaWJfbWF0Y2hlcz1gZXZhbCAiXFwkRUNITyBcIiRsaWJyYXJ5X25hbWVzX3NwZWNcIiJgCi0gCQkgIHNldCBkdW1teSAkZGVwbGliX21hdGNoZXM7IHNoaWZ0Ci0gCQkgIGRlcGxpYl9tYXRjaD0kMQotIAkJICBpZiB0ZXN0IGBleHByICIkbGRkX291dHB1dCIgOiAiLiokZGVwbGliX21hdGNoImAgLW5lIDAgOyB0aGVuCi0tCQkgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCi0rCQkgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgotIAkJICBlbHNlCi0gCQkgICAgZHJvcHBlZGRlcHM9eWVzCi0gCQkgICAgZWNobwotQEAgLTY3ODksNyArNzcwOCw3IEBAIEVPRgotIAkJZmkKLSAJCTs7Ci0gCSAgICAgICopCi0tCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKLSsJCWZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKLSAJCTs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGRvbmUKLUBAIC02ODA3LDE4ICs3NzI2LDE4IEBAIEVPRgotIAkJICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCi0gCQkgICAgY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCi0gCQkgICAgKiIgJGkgIiopCi0tCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKLSsJCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKLSAJCSAgICAgIGk9IiIKLSAJCSAgICAgIDs7Ci0gCQkgICAgZXNhYwotIAkJICBmaQotIAkJICBpZiB0ZXN0IC1uICIkaSIgOyB0aGVuCi0tCQkgICAgZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKLS0JCSAgICBldmFsICJkZXBsaWJfbWF0Y2hlcz1cIiRsaWJyYXJ5X25hbWVzX3NwZWNcIiIKLSsJCSAgICBsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKLSsJCSAgICBkZXBsaWJfbWF0Y2hlcz1gZXZhbCAiXFwkRUNITyBcIiRsaWJyYXJ5X25hbWVzX3NwZWNcIiJgCi0gCQkgICAgc2V0IGR1bW15ICRkZXBsaWJfbWF0Y2hlczsgc2hpZnQKLSAJCSAgICBkZXBsaWJfbWF0Y2g9JDEKLSAJCSAgICBpZiB0ZXN0IGBleHByICIkbGRkX291dHB1dCIgOiAiLiokZGVwbGliX21hdGNoImAgLW5lIDAgOyB0aGVuCi0tCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKLSsJCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKLSAJCSAgICBlbHNlCi0gCQkgICAgICBkcm9wcGVkZGVwcz15ZXMKLSAJCSAgICAgIGVjaG8KLUBAIC02ODQwLDcgKzc3NTksNyBAQCBFT0YKLSAJCWZpCi0gCQk7OwotIAkgICAgICAqKQotLQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCi0rCQlmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCi0gCQk7OwotIAkgICAgICBlc2FjCi0gCSAgICBkb25lCi1AQCAtNjg1NywxNSArNzc3NiwyNyBAQCBFT0YKLSAJICAgICAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgotIAkJY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCi0gCQkqIiAkYV9kZXBsaWIgIiopCi0tCQkgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKLSsJCSAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKLSAJCSAgYV9kZXBsaWI9IiIKLSAJCSAgOzsKLSAJCWVzYWMKLSAJICAgICAgZmkKLSAJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KLS0JCWV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCi0rCQlsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKLSsJCWlmIHRlc3QgLW4gIiRmaWxlX21hZ2ljX2dsb2IiOyB0aGVuCi0rCQkgIGxpYm5hbWVnbG9iPWBmdW5jX2VjaG9fYWxsICIkbGlibmFtZSIgfCAkU0VEIC1lICRmaWxlX21hZ2ljX2dsb2JgCi0rCQllbHNlCi0rCQkgIGxpYm5hbWVnbG9iPSRsaWJuYW1lCi0rCQlmaQotKwkJdGVzdCAiJHdhbnRfbm9jYXNlZ2xvYiIgPSB5ZXMgJiYgbm9jYXNlZ2xvYj1gc2hvcHQgLXAgbm9jYXNlZ2xvYmAKLSAJCWZvciBpIGluICRsaWJfc2VhcmNoX3BhdGggJHN5c19saWJfc2VhcmNoX3BhdGggJHNobGliX3NlYXJjaF9wYXRoOyBkbwotLQkJICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVbLi1dKiAyPi9kZXYvbnVsbGAKLSsJCSAgaWYgdGVzdCAiJHdhbnRfbm9jYXNlZ2xvYiIgPSB5ZXM7IHRoZW4KLSsJCSAgICBzaG9wdCAtcyBub2Nhc2VnbG9iCi0rCQkgICAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lZ2xvYlsuLV0qIDI+L2Rldi9udWxsYAotKwkJICAgICRub2Nhc2VnbG9iCi0rCQkgIGVsc2UKLSsJCSAgICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVnbG9iWy4tXSogMj4vZGV2L251bGxgCi0rCQkgIGZpCi0gCQkgIGZvciBwb3RlbnRfbGliIGluICRwb3RlbnRpYWxfbGliczsgZG8KLSAJCSAgICAgICMgRm9sbG93IHNvZnQgbGlua3MuCi0gCQkgICAgICBpZiBscyAtbExkICIkcG90ZW50X2xpYiIgMj4vZGV2L251bGwgfAotQEAgLTY4ODUsMTAgKzc4MTYsMTAgQEAgRU9GCi0gCQkJKikgcG90bGliPWAkRUNITyAiJHBvdGxpYiIgfCAkU0VEICdzLFteL10qJCwsJ2AiJHBvdGxpYmxpbmsiOzsKLSAJCQllc2FjCi0gCQkgICAgICBkb25lCi0tCQkgICAgICBpZiBldmFsICIkZmlsZV9tYWdpY19jbWQgXCJcJHBvdGxpYlwiIiAyPi9kZXYvbnVsbCB8Ci0rCQkgICAgICBpZiBldmFsICRmaWxlX21hZ2ljX2NtZCBcIlwkcG90bGliXCIgMj4vZGV2L251bGwgfAotIAkJCSAkU0VEIC1lIDEwcSB8Ci0gCQkJICRFR1JFUCAiJGZpbGVfbWFnaWNfcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCi0tCQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgotKwkJCWZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCi0gCQkJYV9kZXBsaWI9IiIKLSAJCQlicmVhayAyCi0gCQkgICAgICBmaQotQEAgLTY5MTMsNyArNzg0NCw3IEBAIEVPRgotIAkgICAgICA7OwotIAkgICAgKikKLSAJICAgICAgIyBBZGQgYSAtTCBhcmd1bWVudC4KLS0JICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgotKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgotIAkgICAgICA7OwotIAkgICAgZXNhYwotIAkgIGRvbmUgIyBHb25lIHRocm91Z2ggYWxsIGRlcGxpYnMuCi1AQCAtNjkyOSwyMCArNzg2MCwyMCBAQCBFT0YKLSAJICAgICAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgotIAkJY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCi0gCQkqIiAkYV9kZXBsaWIgIiopCi0tCQkgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKLSsJCSAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKLSAJCSAgYV9kZXBsaWI9IiIKLSAJCSAgOzsKLSAJCWVzYWMKLSAJICAgICAgZmkKLSAJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KLS0JCWV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCi0rCQlsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKLSAJCWZvciBpIGluICRsaWJfc2VhcmNoX3BhdGggJHN5c19saWJfc2VhcmNoX3BhdGggJHNobGliX3NlYXJjaF9wYXRoOyBkbwotIAkJICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVbLi1dKiAyPi9kZXYvbnVsbGAKLSAJCSAgZm9yIHBvdGVudF9saWIgaW4gJHBvdGVudGlhbF9saWJzOyBkbwotIAkJICAgIHBvdGxpYj0iJHBvdGVudF9saWIiICMgc2VlIHN5bWxpbmstY2hlY2sgYWJvdmUgaW4gZmlsZV9tYWdpYyB0ZXN0Ci0gCQkgICAgaWYgZXZhbCAiXCRFQ0hPIFwiJHBvdGVudF9saWJcIiIgMj4vZGV2L251bGwgfCAkU0VEIDEwcSB8IFwKLSAJCSAgICAgICAkRUdSRVAgIiRtYXRjaF9wYXR0ZXJuX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgotLQkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgotKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKLSAJCSAgICAgIGFfZGVwbGliPSIiCi0gCQkgICAgICBicmVhayAyCi0gCQkgICAgZmkKLUBAIC02OTY3LDcgKzc4OTgsNyBAQCBFT0YKLSAJICAgICAgOzsKLSAJICAgICopCi0gCSAgICAgICMgQWRkIGEgLUwgYXJndW1lbnQuCi0tCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKLSsJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKLSAJICAgICAgOzsKLSAJICAgIGVzYWMKLSAJICBkb25lICMgR29uZSB0aHJvdWdoIGFsbCBkZXBsaWJzLgotQEAgLTcwNzEsNyArODAwMiw3IEBAIEVPRgotIAkqKQotIAkgIGNhc2UgIiAkZGVwbGlicyAiIGluCi0gCSAgKiIgLUwkcGF0aC8kb2JqZGlyICIqKQotLQkgICAgbmV3X2xpYnM9IiRuZXdfbGlicyAtTCRwYXRoLyRvYmpkaXIiIDs7Ci0rCSAgICBmdW5jX2FwcGVuZCBuZXdfbGlicyAiIC1MJHBhdGgvJG9iamRpciIgOzsKLSAJICBlc2FjCi0gCSAgOzsKLSAJZXNhYwotQEAgLTcwODEsMTAgKzgwMTIsMTAgQEAgRU9GCi0gCS1MKikKLSAJICBjYXNlICIgJG5ld19saWJzICIgaW4KLSAJICAqIiAkZGVwbGliICIqKSA7OwotLQkgICopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7Ci0gCSAgZXNhYwotIAkgIDs7Ci0tCSopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKLSsJKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OwotIAllc2FjCi0gICAgICAgZG9uZQotICAgICAgIGRlcGxpYnM9IiRuZXdfbGlicyIKLUBAIC03MTAxLDEwICs4MDMyLDEyIEBAIEVPRgotIAkgIGhhcmRjb2RlX2xpYmRpcnM9Ci0gCSAgZGVwX3JwYXRoPQotIAkgIHJwYXRoPSIkZmluYWxpemVfcnBhdGgiCi0tCSAgdGVzdCAiJG1vZGUiICE9IHJlbGluayAmJiBycGF0aD0iJGNvbXBpbGVfcnBhdGgkcnBhdGgiCi0rCSAgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgotIAkgIGZvciBsaWJkaXIgaW4gJHJwYXRoOyBkbwotIAkgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCi0gCSAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgotKwkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCi0rCQlsaWJkaXI9JGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdAotIAkJaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCi0gCQkgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCi0gCQllbHNlCi1AQCAtNzExMywxOCArODA0NiwxOCBAQCBFT0YKLSAJCSAgKiIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIqKQotIAkJICAgIDs7Ci0gCQkgICopCi0tCQkgICAgaGFyZGNvZGVfbGliZGlycz0iJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCi0rCQkgICAgZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgotIAkJICAgIDs7Ci0gCQkgIGVzYWMKLSAJCWZpCi0gCSAgICAgIGVsc2UKLS0JCWV2YWwgImZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgotLQkJZGVwX3JwYXRoPSIkZGVwX3JwYXRoICRmbGFnIgotKwkJZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotKwkJZnVuY19hcHBlbmQgZGVwX3JwYXRoICIgJGZsYWciCi0gCSAgICAgIGZpCi0gCSAgICBlbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KLSAJICAgICAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgotIAkgICAgICAqIiAkbGliZGlyICIqKSA7OwotLQkgICAgICAqKSBwZXJtX3JwYXRoPSIkcGVybV9ycGF0aCAkbGliZGlyIiA7OwotKwkgICAgICAqKSBmdW5jX2FwcGVkIHBlcm1fcnBhdGggIiAkbGliZGlyIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICBmaQotIAkgIGRvbmUKLUBAIC03MTMzLDQwICs4MDY2LDM4IEBAIEVPRgotIAkgICAgIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgotIAkgICAgbGliZGlyPSIkaGFyZGNvZGVfbGliZGlycyIKLSAJICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIjsgdGhlbgotLQkgICAgICBldmFsICJkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZFwiIgotKwkgICAgICBldmFsIGRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkXCIKLSAJICAgIGVsc2UKLS0JICAgICAgZXZhbCAiZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKLSsJICAgICAgZXZhbCBkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0gCSAgICBmaQotIAkgIGZpCi0gCSAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkcGVybV9ycGF0aCI7IHRoZW4KLSAJICAgICMgV2Ugc2hvdWxkIHNldCB0aGUgcnVucGF0aF92YXIuCi0gCSAgICBycGF0aD0KLSAJICAgIGZvciBkaXIgaW4gJHBlcm1fcnBhdGg7IGRvCi0tCSAgICAgIHJwYXRoPSIkcnBhdGgkZGlyOiIKLSsJICAgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgotIAkgICAgZG9uZQotLQkgICAgZXZhbCAkcnVucGF0aF92YXI9XCRycGF0aFwkJHJ1bnBhdGhfdmFyCi0tCSAgICBleHBvcnQgJHJ1bnBhdGhfdmFyCi0rCSAgICBldmFsICIkcnVucGF0aF92YXI9JyRycGF0aFwkJHJ1bnBhdGhfdmFyJzsgZXhwb3J0ICRydW5wYXRoX3ZhciIKLSAJICBmaQotIAkgIHRlc3QgLW4gIiRkZXBfcnBhdGgiICYmIGRlcGxpYnM9IiRkZXBfcnBhdGggJGRlcGxpYnMiCi0gCWZpCi0gCi0gCXNobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCIKLS0JdGVzdCAiJG1vZGUiICE9IHJlbGluayAmJiBzaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRzaGxpYnBhdGgiCi0rCXRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rICYmIHNobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJHNobGlicGF0aCIKLSAJaWYgdGVzdCAtbiAiJHNobGlicGF0aCI7IHRoZW4KLS0JICBldmFsICRzaGxpYnBhdGhfdmFyPVwkc2hsaWJwYXRoXCQkc2hsaWJwYXRoX3ZhcgotLQkgIGV4cG9ydCAkc2hsaWJwYXRoX3ZhcgotKwkgIGV2YWwgIiRzaGxpYnBhdGhfdmFyPSckc2hsaWJwYXRoXCQkc2hsaWJwYXRoX3Zhcic7IGV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKLSAJZmkKLSAKLSAJIyBHZXQgdGhlIHJlYWwgYW5kIGxpbmsgbmFtZXMgb2YgdGhlIGxpYnJhcnkuCi0tCWV2YWwgInNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIiIKLS0JZXZhbCAibGlicmFyeV9uYW1lcz1cIiRsaWJyYXJ5X25hbWVzX3NwZWNcIiIKLSsJZXZhbCBzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIKLSsJZXZhbCBsaWJyYXJ5X25hbWVzPVwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiCi0gCXNldCBkdW1teSAkbGlicmFyeV9uYW1lcwotIAlzaGlmdAotIAlyZWFsbmFtZT0iJDEiCi0gCXNoaWZ0Ci0gCi0gCWlmIHRlc3QgLW4gIiRzb25hbWVfc3BlYyI7IHRoZW4KLS0JICBldmFsICJzb25hbWU9XCIkc29uYW1lX3NwZWNcIiIKLSsJICBldmFsIHNvbmFtZT1cIiRzb25hbWVfc3BlY1wiCi0gCWVsc2UKLSAJICBzb25hbWU9IiRyZWFsbmFtZSIKLSAJZmkKLUBAIC03MTc4LDcgKzgxMDksNyBAQCBFT0YKLSAJbGlua25hbWVzPQotIAlmb3IgbGluawotIAlkbwotLQkgIGxpbmtuYW1lcz0iJGxpbmtuYW1lcyAkbGluayIKLSsJICBmdW5jX2FwcGVuZCBsaW5rbmFtZXMgIiAkbGluayIKLSAJZG9uZQotIAotIAkjIFVzZSBzdGFuZGFyZCBvYmplY3RzIGlmIHRoZXkgYXJlIHBpYwotQEAgLTcxODksNyArODEyMCw3IEBAIEVPRgotIAlpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCi0gCSAgJG9wdF9kcnlfcnVuIHx8IGNwICIkZXhwb3J0X3N5bWJvbHMiICIkb3V0cHV0X29iamRpci8kbGlibmFtZS51ZXhwIgotIAkgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS51ZXhwIgotLQkgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzIgotKwkgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzIgotIAlmaQotIAotIAlvcmlnX2V4cG9ydF9zeW1ib2xzPQotQEAgLTcyMjAsMTMgKzgxNTEsNDUgQEAgRU9GCi0gCSAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRleHBvcnRfc3ltYm9scwotIAkgICAgY21kcz0kZXhwb3J0X3N5bWJvbHNfY21kcwotIAkgICAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCi0tCSAgICBmb3IgY21kIGluICRjbWRzOyBkbwotKwkgICAgZm9yIGNtZDEgaW4gJGNtZHM7IGRvCi0gCSAgICAgIElGUz0iJHNhdmVfaWZzIgotLQkgICAgICBldmFsICJjbWQ9XCIkY21kXCIiCi0tCSAgICAgIGZ1bmNfbGVuICIgJGNtZCIKLS0JICAgICAgbGVuPSRmdW5jX2xlbl9yZXN1bHQKLS0JICAgICAgaWYgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB0aGVuCi0rCSAgICAgICMgVGFrZSB0aGUgbm9ybWFsIGJyYW5jaCBpZiB0aGUgbm1fZmlsZV9saXN0X3NwZWMgYnJhbmNoCi0rCSAgICAgICMgZG9lc24ndCB3b3JrIG9yIGlmIHRvb2wgY29udmVyc2lvbiBpcyBub3QgbmVlZGVkLgotKwkgICAgICBjYXNlICRubV9maWxlX2xpc3Rfc3BlY34kdG9fdG9vbF9maWxlX2NtZCBpbgotKwkJKn5mdW5jX2NvbnZlcnRfZmlsZV9ub29wIHwgKn5mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiB8IH4qKQotKwkJICB0cnlfbm9ybWFsX2JyYW5jaD15ZXMKLSsJCSAgZXZhbCBjbWQ9XCIkY21kMVwiCi0rCQkgIGZ1bmNfbGVuICIgJGNtZCIKLSsJCSAgbGVuPSRmdW5jX2xlbl9yZXN1bHQKLSsJCSAgOzsKLSsJCSopCi0rCQkgIHRyeV9ub3JtYWxfYnJhbmNoPW5vCi0rCQkgIDs7Ci0rCSAgICAgIGVzYWMKLSsJICAgICAgaWYgdGVzdCAiJHRyeV9ub3JtYWxfYnJhbmNoIiA9IHllcyBcCi0rCQkgJiYgeyB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgXAotKwkJICAgICAgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IH0KLSsJICAgICAgdGhlbgotKwkJZnVuY19zaG93X2V2YWwgIiRjbWQiICdleGl0ICQ/JwotKwkJc2tpcHBlZF9leHBvcnQ9ZmFsc2UKLSsJICAgICAgZWxpZiB0ZXN0IC1uICIkbm1fZmlsZV9saXN0X3NwZWMiOyB0aGVuCi0rCQlmdW5jX2Jhc2VuYW1lICIkb3V0cHV0IgotKwkJb3V0cHV0X2xhPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAotKwkJc2F2ZV9saWJvYmpzPSRsaWJvYmpzCi0rCQlzYXZlX291dHB1dD0kb3V0cHV0Ci0rCQlvdXRwdXQ9JHtvdXRwdXRfb2JqZGlyfS8ke291dHB1dF9sYX0ubm0KLSsJCWZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgotKwkJbGlib2Jqcz0kbm1fZmlsZV9saXN0X3NwZWMkZnVuY190b190b29sX2ZpbGVfcmVzdWx0Ci0rCQlmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCi0rCQlmdW5jX3ZlcmJvc2UgImNyZWF0aW5nICROTSBpbnB1dCBmaWxlIGxpc3Q6ICRvdXRwdXQiCi0rCQlmb3Igb2JqIGluICRzYXZlX2xpYm9ianM7IGRvCi0rCQkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgotKwkJICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIKLSsJCWRvbmUgPiAiJG91dHB1dCIKLSsJCWV2YWwgY21kPVwiJGNtZDFcIgotIAkJZnVuY19zaG93X2V2YWwgIiRjbWQiICdleGl0ICQ/JwotKwkJb3V0cHV0PSRzYXZlX291dHB1dAotKwkJbGlib2Jqcz0kc2F2ZV9saWJvYmpzCi0gCQlza2lwcGVkX2V4cG9ydD1mYWxzZQotIAkgICAgICBlbHNlCi0gCQkjIFRoZSBjb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgdG8gZXhlY3V0ZSBpbiBvbmUgc3RlcC4KLUBAIC03MjQ4LDcgKzgyMTEsNyBAQCBFT0YKLSAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgotIAkgIHRtcF9leHBvcnRfc3ltYm9scz0iJGV4cG9ydF9zeW1ib2xzIgotIAkgIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIiAmJiB0bXBfZXhwb3J0X3N5bWJvbHM9IiRvcmlnX2V4cG9ydF9zeW1ib2xzIgotLQkgICRvcHRfZHJ5X3J1biB8fCAkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiCi0rCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyInCi0gCWZpCi0gCi0gCWlmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiOyB0aGVuCi1AQCAtNzI2MCw3ICs4MjIzLDcgQEAgRU9GCi0gCSAgIyBnbG9iYWwgdmFyaWFibGVzLiBqb2luKDEpIHdvdWxkIGJlIG5pY2UgaGVyZSwgYnV0IHVuZm9ydHVuYXRlbHkKLSAJICAjIGlzbid0IGEgYmxlc3NlZCB0b29sLgotIAkgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1lICcvWyAsXURBVEEvIWQ7cyxcKC4qXClcKFsgXCxdLipcKSxzfF5cMSR8XDFcMnwsJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlcgotLQkgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKLSsJICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCi0gCSAgZXhwb3J0X3N5bWJvbHM9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmCi0gCSAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWYgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIDwgJG9yaWdfZXhwb3J0X3N5bWJvbHMgPiAkZXhwb3J0X3N5bWJvbHMKLSAJZmkKLUBAIC03MjcwLDcgKzgyMzMsNyBAQCBFT0YKLSAJICBjYXNlICIgJGNvbnZlbmllbmNlICIgaW4KLSAJICAqIiAkdGVzdF9kZXBsaWIgIiopIDs7Ci0gCSAgKikKLS0JICAgIHRtcF9kZXBsaWJzPSIkdG1wX2RlcGxpYnMgJHRlc3RfZGVwbGliIgotKwkgICAgZnVuY19hcHBlbmQgdG1wX2RlcGxpYnMgIiAkdGVzdF9kZXBsaWIiCi0gCSAgICA7OwotIAkgIGVzYWMKLSAJZG9uZQotQEAgLTcyODYsNDMgKzgyNDksNDMgQEAgRU9GCi0gCSAgZmkKLSAJICBpZiB0ZXN0IC1uICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCi0gCSAgICBzYXZlX2xpYm9ianM9JGxpYm9ianMKLS0JICAgIGV2YWwgImxpYm9ianM9XCJcJGxpYm9ianMgJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIiCi0rCSAgICBldmFsIGxpYm9ianM9XCJcJGxpYm9ianMgJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIKLSAJICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9Ci0gCSAgZWxzZQotIAkgICAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLS0JICAgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgotKwkgICAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKLSAKLSAJICAgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRjb252ZW5pZW5jZQotLQkgICAgbGlib2Jqcz0iJGxpYm9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCi0rCSAgICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCi0gCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQotIAkgIGZpCi0gCWZpCi0gCi0gCWlmIHRlc3QgIiR0aHJlYWRfc2FmZSIgPSB5ZXMgJiYgdGVzdCAtbiAiJHRocmVhZF9zYWZlX2ZsYWdfc3BlYyI7IHRoZW4KLS0JICBldmFsICJmbGFnPVwiJHRocmVhZF9zYWZlX2ZsYWdfc3BlY1wiIgotLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkZmxhZyIKLSsJICBldmFsIGZsYWc9XCIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjXCIKLSsJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkZmxhZyIKLSAJZmkKLSAKLSAJIyBNYWtlIGEgYmFja3VwIG9mIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IHdoZW4gcmVsaW5raW5nCi0tCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgotLQkgICRvcHRfZHJ5X3J1biB8fCAoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VSAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VSkgfHwgZXhpdCAkPwotKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCi0rCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1VICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1VKScgfHwgZXhpdCAkPwotIAlmaQotIAotIAkjIERvIGVhY2ggb2YgdGhlIGFyY2hpdmUgY29tbWFuZHMuCi0gCWlmIHRlc3QgIiRtb2R1bGUiID0geWVzICYmIHRlc3QgLW4gIiRtb2R1bGVfY21kcyIgOyB0aGVuCi0gCSAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkbW9kdWxlX2V4cHN5bV9jbWRzIjsgdGhlbgotLQkgICAgZXZhbCAidGVzdF9jbWRzPVwiJG1vZHVsZV9leHBzeW1fY21kc1wiIgotKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkbW9kdWxlX2V4cHN5bV9jbWRzXCIKLSAJICAgIGNtZHM9JG1vZHVsZV9leHBzeW1fY21kcwotIAkgIGVsc2UKLS0JICAgIGV2YWwgInRlc3RfY21kcz1cIiRtb2R1bGVfY21kc1wiIgotKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkbW9kdWxlX2NtZHNcIgotIAkgICAgY21kcz0kbW9kdWxlX2NtZHMKLSAJICBmaQotIAllbHNlCi0gCSAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkYXJjaGl2ZV9leHBzeW1fY21kcyI7IHRoZW4KLS0JICAgIGV2YWwgInRlc3RfY21kcz1cIiRhcmNoaXZlX2V4cHN5bV9jbWRzXCIiCi0rCSAgICBldmFsIHRlc3RfY21kcz1cIiRhcmNoaXZlX2V4cHN5bV9jbWRzXCIKLSAJICAgIGNtZHM9JGFyY2hpdmVfZXhwc3ltX2NtZHMKLSAJICBlbHNlCi0tCSAgICBldmFsICJ0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9jbWRzXCIiCi0rCSAgICBldmFsIHRlc3RfY21kcz1cIiRhcmNoaXZlX2NtZHNcIgotIAkgICAgY21kcz0kYXJjaGl2ZV9jbWRzCi0gCSAgZmkKLSAJZmkKLUBAIC03MzY2LDEwICs4MzI5LDEzIEBAIEVPRgotIAkgICAgZWNobyAnSU5QVVQgKCcgPiAkb3V0cHV0Ci0gCSAgICBmb3Igb2JqIGluICRzYXZlX2xpYm9ianMKLSAJICAgIGRvCi0tCSAgICAgICRFQ0hPICIkb2JqIiA+PiAkb3V0cHV0Ci0rCSAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgotKwkgICAgICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgPj4gJG91dHB1dAotIAkgICAgZG9uZQotIAkgICAgZWNobyAnKScgPj4gJG91dHB1dAotLQkgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgotKwkgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgotKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCi0rCSAgICBvdXRwdXQ9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAotIAkgIGVsaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyIgJiYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJiB0ZXN0ICJYJGZpbGVfbGlzdF9zcGVjIiAhPSBYOyB0aGVuCi0gCSAgICBvdXRwdXQ9JHtvdXRwdXRfb2JqZGlyfS8ke291dHB1dF9sYX0ubG5rCi0gCSAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nIGxpbmtlciBpbnB1dCBmaWxlIGxpc3Q6ICRvdXRwdXQiCi1AQCAtNzM4MywxNSArODM0OSwxNyBAQCBFT0YKLSAJICAgIGZpCi0gCSAgICBmb3Igb2JqCi0gCSAgICBkbwotLQkgICAgICAkRUNITyAiJG9iaiIgPj4gJG91dHB1dAotKwkgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKLSsJICAgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiID4+ICRvdXRwdXQKLSAJICAgIGRvbmUKLS0JICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKLS0JICAgIG91dHB1dD0kZmlyc3RvYmpcIiRmaWxlX2xpc3Rfc3BlYyRvdXRwdXRcIgotKwkgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgotKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCi0rCSAgICBvdXRwdXQ9JGZpcnN0b2JqXCIkZmlsZV9saXN0X3NwZWMkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIKLSAJICBlbHNlCi0gCSAgICBpZiB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIjsgdGhlbgotIAkgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzLi4uIgotIAkgICAgICBvdXRwdXQ9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKLS0JICAgICAgZXZhbCAidGVzdF9jbWRzPVwiJHJlbG9hZF9jbWRzXCIiCi0rCSAgICAgIGV2YWwgdGVzdF9jbWRzPVwiJHJlbG9hZF9jbWRzXCIKLSAJICAgICAgZnVuY19sZW4gIiAkdGVzdF9jbWRzIgotIAkgICAgICBsZW4wPSRmdW5jX2xlbl9yZXN1bHQKLSAJICAgICAgbGVuPSRsZW4wCi1AQCAtNzQxMSwxMiArODM3OSwxMiBAQCBFT0YKLSAJCSAgaWYgdGVzdCAiJGsiIC1lcSAxIDsgdGhlbgotIAkJICAgICMgVGhlIGZpcnN0IGZpbGUgZG9lc24ndCBoYXZlIGEgcHJldmlvdXMgY29tbWFuZCB0byBhZGQuCi0gCQkgICAgcmVsb2FkX29ianM9JG9iamxpc3QKLS0JCSAgICBldmFsICJjb25jYXRfY21kcz1cIiRyZWxvYWRfY21kc1wiIgotKwkJICAgIGV2YWwgY29uY2F0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIgotIAkJICBlbHNlCi0gCQkgICAgIyBBbGwgc3Vic2VxdWVudCByZWxvYWRhYmxlIG9iamVjdCBmaWxlcyB3aWxsIGxpbmsgaW4KLSAJCSAgICAjIHRoZSBsYXN0IG9uZSBjcmVhdGVkLgotIAkJICAgIHJlbG9hZF9vYmpzPSIkb2JqbGlzdCAkbGFzdF9yb2JqIgotLQkJICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc34kcmVsb2FkX2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIiCi0rCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+JHJlbG9hZF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiCi0gCQkgIGZpCi0gCQkgIGxhc3Rfcm9iaj0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAotIAkJICBmdW5jX2FyaXRoICRrICsgMQotQEAgLTc0MzMsMTEgKzg0MDEsMTEgQEAgRU9GCi0gCSAgICAgICMgZmlsZXMgd2lsbCBsaW5rIGluIHRoZSBsYXN0IG9uZSBjcmVhdGVkLgotIAkgICAgICB0ZXN0IC16ICIkY29uY2F0X2NtZHMiIHx8IGNvbmNhdF9jbWRzPSRjb25jYXRfY21kc34KLSAJICAgICAgcmVsb2FkX29ianM9IiRvYmpsaXN0ICRsYXN0X3JvYmoiCi0tCSAgICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JHJlbG9hZF9jbWRzXCIiCi0rCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kcmVsb2FkX2NtZHNcIgotIAkgICAgICBpZiB0ZXN0IC1uICIkbGFzdF9yb2JqIjsgdGhlbgotLQkgICAgICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9flwkUk0gJGxhc3Rfcm9ialwiIgotKwkgICAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc31+XCRSTSAkbGFzdF9yb2JqXCIKLSAJICAgICAgZmkKLS0JICAgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgotKwkgICAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCi0gCi0gCSAgICBlbHNlCi0gCSAgICAgIG91dHB1dD0KLUBAIC03NDUwLDkgKzg0MTgsOSBAQCBFT0YKLSAJICAgICAgbGlib2Jqcz0kb3V0cHV0Ci0gCSAgICAgICMgQXBwZW5kIHRoZSBjb21tYW5kIHRvIGNyZWF0ZSB0aGUgZXhwb3J0IGZpbGUuCi0gCSAgICAgIHRlc3QgLXogIiRjb25jYXRfY21kcyIgfHwgY29uY2F0X2NtZHM9JGNvbmNhdF9jbWRzfgotLQkgICAgICBldmFsICJjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHMkZXhwb3J0X3N5bWJvbHNfY21kc1wiIgotKwkgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kcyRleHBvcnRfc3ltYm9sc19jbWRzXCIKLSAJICAgICAgaWYgdGVzdCAtbiAiJGxhc3Rfcm9iaiI7IHRoZW4KLS0JCWV2YWwgImNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc35cJFJNICRsYXN0X3JvYmpcIiIKLSsJCWV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiCi0gCSAgICAgIGZpCi0gCSAgICBmaQotIAotQEAgLTc0NzEsNyArODQzOSw3IEBAIEVPRgotIAkJbHRfZXhpdD0kPwotIAotIAkJIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0Ci0tCQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KLSsJCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KLSAJCSAgKCBjZCAiJG91dHB1dF9vYmpkaXIiICYmIFwKLSAJCSAgICAkUk0gIiR7cmVhbG5hbWV9VCIgJiYgXAotIAkJICAgICRNViAiJHtyZWFsbmFtZX1VIiAiJHJlYWxuYW1lIiApCi1AQCAtNzQ5Miw3ICs4NDYwLDcgQEAgRU9GCi0gCSAgICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCi0gCSAgICAgIHRtcF9leHBvcnRfc3ltYm9scz0iJGV4cG9ydF9zeW1ib2xzIgotIAkgICAgICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSIkb3JpZ19leHBvcnRfc3ltYm9scyIKLS0JICAgICAgJG9wdF9kcnlfcnVuIHx8ICRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyIKLSsJICAgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyInCi0gCSAgICBmaQotIAotIAkgICAgaWYgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiOyB0aGVuCi1AQCAtNzUwNCw3ICs4NDcyLDcgQEAgRU9GCi0gCSAgICAgICMgZ2xvYmFsIHZhcmlhYmxlcy4gam9pbigxKSB3b3VsZCBiZSBuaWNlIGhlcmUsIGJ1dCB1bmZvcnR1bmF0ZWx5Ci0gCSAgICAgICMgaXNuJ3QgYSBibGVzc2VkIHRvb2wuCi0gCSAgICAgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1lICcvWyAsXURBVEEvIWQ7cyxcKC4qXClcKFsgXCxdLipcKSxzfF5cMSR8XDFcMnwsJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlcgotLQkgICAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKLSAJICAgICAgZXhwb3J0X3N5bWJvbHM9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmCi0gCSAgICAgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1mICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciA8ICRvcmlnX2V4cG9ydF9zeW1ib2xzID4gJGV4cG9ydF9zeW1ib2xzCi0gCSAgICBmaQotQEAgLTc1MTUsNyArODQ4Myw3IEBAIEVPRgotIAkgIG91dHB1dD0kc2F2ZV9vdXRwdXQKLSAKLSAJICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiICYmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KLS0JICAgIGV2YWwgImxpYm9ianM9XCJcJGxpYm9ianMgJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIiCi0rCSAgICBldmFsIGxpYm9ianM9XCJcJGxpYm9ianMgJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIKLSAJICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9Ci0gCSAgZmkKLSAJICAjIEV4cGFuZCB0aGUgbGlicmFyeSBsaW5raW5nIGNvbW1hbmRzIGFnYWluIHRvIHJlc2V0IHRoZQotQEAgLTc1MzksMjMgKzg1MDcsMjMgQEAgRU9GCi0gCi0gCWlmIHRlc3QgLW4gIiRkZWxmaWxlcyI7IHRoZW4KLSAJICAjIEFwcGVuZCB0aGUgY29tbWFuZCB0byByZW1vdmUgdGVtcG9yYXJ5IGZpbGVzIHRvICRjbWRzLgotLQkgIGV2YWwgImNtZHM9XCJcJGNtZHN+XCRSTSAkZGVsZmlsZXNcIiIKLSsJICBldmFsIGNtZHM9XCJcJGNtZHN+XCRSTSAkZGVsZmlsZXNcIgotIAlmaQotIAotIAkjIEFkZCBhbnkgb2JqZWN0cyBmcm9tIHByZWxvYWRlZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMKLSAJaWYgdGVzdCAtbiAiJGRscHJlZmlsZXMiOyB0aGVuCi0gCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLS0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKLSsJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgotIAotIAkgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRkbHByZWZpbGVzCi0tCSAgbGlib2Jqcz0iJGxpYm9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCi0rCSAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotIAkgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9Ci0gCWZpCi0gCi0gCXNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotIAlmb3IgY21kIGluICRjbWRzOyBkbwotIAkgIElGUz0iJHNhdmVfaWZzIgotLQkgIGV2YWwgImNtZD1cIiRjbWRcIiIKLSsJICBldmFsIGNtZD1cIiRjbWRcIgotIAkgICRvcHRfc2lsZW50IHx8IHsKLSAJICAgIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCAiJGNtZCIKLSAJICAgIGV2YWwgImZ1bmNfZWNobyAkZnVuY19xdW90ZV9mb3JfZXhwYW5kX3Jlc3VsdCIKLUBAIC03NTY0LDcgKzg1MzIsNyBAQCBFT0YKLSAJICAgIGx0X2V4aXQ9JD8KLSAKLSAJICAgICMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAotLQkgICAgaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCi0rCSAgICBpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCi0gCSAgICAgICggY2QgIiRvdXRwdXRfb2JqZGlyIiAmJiBcCi0gCSAgICAgICAgJFJNICIke3JlYWxuYW1lfVQiICYmIFwKLSAJCSRNViAiJHtyZWFsbmFtZX1VIiAiJHJlYWxuYW1lIiApCi1AQCAtNzU3Niw4ICs4NTQ0LDggQEAgRU9GCi0gCUlGUz0iJHNhdmVfaWZzIgotIAotIAkjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKLS0JaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCi0tCSAgJG9wdF9kcnlfcnVuIHx8IChjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1UICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1UICYmICRNViAke3JlYWxuYW1lfVUgJHJlYWxuYW1lKSB8fCBleGl0ICQ/Ci0rCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KLSsJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVQgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVQgJiYgJE1WICR7cmVhbG5hbWV9VSAkcmVhbG5hbWUpJyB8fCBleGl0ICQ/Ci0gCi0gCSAgaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIjsgdGhlbgotIAkgICAgaWYgdGVzdCAteiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgotQEAgLTc2NTYsMTcgKzg2MjQsMjAgQEAgRU9GCi0gCi0gICAgICAgaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIjsgdGhlbgotIAlpZiB0ZXN0IC1uICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCi0tCSAgZXZhbCAidG1wX3dob2xlX2FyY2hpdmVfZmxhZ3M9XCIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIiIKLSsJICBldmFsIHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzPVwiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIKLSAJICByZWxvYWRfY29udl9vYmpzPSRyZWxvYWRfb2Jqc1wgYCRFQ0hPICIkdG1wX3dob2xlX2FyY2hpdmVfZmxhZ3MiIHwgJFNFRCAnc3wsfCB8ZydgCi0gCWVsc2UKLSAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b2JqfXgiCi0tCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCi0rCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKLSAKLSAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkY29udmVuaWVuY2UKLSAJICByZWxvYWRfY29udl9vYmpzPSIkcmVsb2FkX29ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCi0gCWZpCi0gICAgICAgZmkKLSAKLSsgICAgICAjIElmIHdlJ3JlIG5vdCBidWlsZGluZyBzaGFyZWQsIHdlIG5lZWQgdG8gdXNlIG5vbl9waWNfb2JqcwotKyAgICAgIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiBsaWJvYmpzPSIkbm9uX3BpY19vYmplY3RzIgotKwotICAgICAgICMgQ3JlYXRlIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgotICAgICAgIHJlbG9hZF9vYmpzPSIkb2JqcyRvbGRfZGVwbGlicyAiYCRFQ0hPICIkbGlib2JqcyIgfCAkU1AyTkwgfCAkU0VEICIvXC4ke2xpYmV4dH0kL2Q7IC9cLmxpYiQvZDsgJGxvMm8iIHwgJE5MMlNQYCIgJHJlbG9hZF9jb252X29ianMiICMjIyB0ZXN0c3VpdGU6IHNraXAgbmVzdGVkIHF1b3RpbmcgdGVzdAotIAotQEAgLTc2OTAsNyArODY2MSw3IEBAIEVPRgotIAkjIENyZWF0ZSBhbiBpbnZhbGlkIGxpYnRvb2wgb2JqZWN0IGlmIG5vIFBJQywgc28gdGhhdCB3ZSBkb24ndAotIAkjIGFjY2lkZW50YWxseSBsaW5rIGl0IGludG8gYSBwcm9ncmFtLgotIAkjICRzaG93ICJlY2hvIHRpbWVzdGFtcCA+ICRsaWJvYmoiCi0tCSMgJG9wdF9kcnlfcnVuIHx8IGVjaG8gdGltZXN0YW1wID4gJGxpYm9iaiB8fCBleGl0ICQ/Ci0rCSMgJG9wdF9kcnlfcnVuIHx8IGV2YWwgImVjaG8gdGltZXN0YW1wID4gJGxpYm9iaiIgfHwgZXhpdCAkPwotIAlleGl0ICRFWElUX1NVQ0NFU1MKLSAgICAgICBmaQotIAotQEAgLTc3NDAsOCArODcxMSw4IEBAIEVPRgotIAlpZiB0ZXN0ICIkdGFnbmFtZSIgPSBDWFggOyB0aGVuCi0gCSAgY2FzZSAke01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVC0xMC4wfSBpbgotIAkgICAgMTAuWzAxMjNdKQotLQkgICAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJHt3bH0tYmluZF9hdF9sb2FkIgotLQkgICAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAke3dsfS1iaW5kX2F0X2xvYWQiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICR7d2x9LWJpbmRfYXRfbG9hZCIKLSsJICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICR7d2x9LWJpbmRfYXRfbG9hZCIKLSAJICAgIDs7Ci0gCSAgZXNhYwotIAlmaQotQEAgLTc3NjEsNyArODczMiw3IEBAIEVPRgotIAkqKQotIAkgIGNhc2UgIiAkY29tcGlsZV9kZXBsaWJzICIgaW4KLSAJICAqIiAtTCRwYXRoLyRvYmpkaXIgIiopCi0tCSAgICBuZXdfbGlicz0iJG5ld19saWJzIC1MJHBhdGgvJG9iamRpciIgOzsKLSsJICAgIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgLUwkcGF0aC8kb2JqZGlyIiA7OwotIAkgIGVzYWMKLSAJICA7OwotIAllc2FjCi1AQCAtNzc3MSwxNyArODc0MiwxNyBAQCBFT0YKLSAJLUwqKQotIAkgIGNhc2UgIiAkbmV3X2xpYnMgIiBpbgotIAkgICoiICRkZXBsaWIgIiopIDs7Ci0tCSAgKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OwotKwkgICopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKLSAJICBlc2FjCi0gCSAgOzsKLS0JKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OwotKwkqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7Ci0gCWVzYWMKLSAgICAgICBkb25lCi0gICAgICAgY29tcGlsZV9kZXBsaWJzPSIkbmV3X2xpYnMiCi0gCi0gCi0tICAgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRjb21waWxlX2RlcGxpYnMiCi0tICAgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJGZpbmFsaXplX2RlcGxpYnMiCi0rICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGNvbXBpbGVfZGVwbGlicyIKLSsgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGZpbmFsaXplX2RlcGxpYnMiCi0gCi0gICAgICAgaWYgdGVzdCAtbiAiJHJwYXRoJHhycGF0aCI7IHRoZW4KLSAJIyBJZiB0aGUgdXNlciBzcGVjaWZpZWQgYW55IHJwYXRoIGZsYWdzLCB0aGVuIGFkZCB0aGVtLgotQEAgLTc3ODksNyArODc2MCw3IEBAIEVPRgotIAkgICMgVGhpcyBpcyB0aGUgbWFnaWMgdG8gdXNlIC1ycGF0aC4KLSAJICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgotIAkgICoiICRsaWJkaXIgIiopIDs7Ci0tCSAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIiA7OwotKwkgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKLSAJICBlc2FjCi0gCWRvbmUKLSAgICAgICBmaQotQEAgLTc4MDgsMTggKzg3NzksMTggQEAgRU9GCi0gCSAgICAgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKLSAJCTs7Ci0gCSAgICAgICopCi0tCQloYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKLSsJCWZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKLSAJCTs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGZpCi0gCSAgZWxzZQotLQkgICAgZXZhbCAiZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCi0tCSAgICBycGF0aD0iJHJwYXRoICRmbGFnIgotKwkgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKLSAJICBmaQotIAllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KLSAJICBjYXNlICIkcGVybV9ycGF0aCAiIGluCi0gCSAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAqKSBwZXJtX3JwYXRoPSIkcGVybV9ycGF0aCAkbGliZGlyIiA7OwotKwkgICopIGZ1bmNfYXBwZW5kIHBlcm1fcnBhdGggIiAkbGliZGlyIiA7OwotIAkgIGVzYWMKLSAJZmkKLSAJY2FzZSAkaG9zdCBpbgotQEAgLTc4MjgsMTIgKzg3OTksMTIgQEAgRU9GCi0gCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCi0gCSAgKiI6JGxpYmRpcjoiKikgOzsKLSAJICA6OikgZGxsc2VhcmNocGF0aD0kbGliZGlyOzsKLS0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokbGliZGlyIjs7Ci0rCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiRsaWJkaXIiOzsKLSAJICBlc2FjCi0gCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCi0gCSAgKiI6JHRlc3RiaW5kaXI6IiopIDs7Ci0gCSAgOjopIGRsbHNlYXJjaHBhdGg9JHRlc3RiaW5kaXI7OwotLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiR0ZXN0YmluZGlyIjs7Ci0rCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiR0ZXN0YmluZGlyIjs7Ci0gCSAgZXNhYwotIAkgIDs7Ci0gCWVzYWMKLUBAIC03ODQyLDcgKzg4MTMsNyBAQCBFT0YKLSAgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIgJiYKLSAJIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgotIAlsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgotLQlldmFsICJycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgotKwlldmFsIHJwYXRoPVwiICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSAgICAgICBmaQotICAgICAgIGNvbXBpbGVfcnBhdGg9IiRycGF0aCIKLSAKLUBAIC03ODU5LDE4ICs4ODMwLDE4IEBAIEVPRgotIAkgICAgICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCi0gCQk7OwotIAkgICAgICAqKQotLQkJaGFyZGNvZGVfbGliZGlycz0iJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCi0rCQlmdW5jX2FwcGVuZCBoYXJkY29kZV9saWJkaXJzICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCi0gCQk7OwotIAkgICAgICBlc2FjCi0gCSAgICBmaQotIAkgIGVsc2UKLS0JICAgIGV2YWwgImZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgotLQkgICAgcnBhdGg9IiRycGF0aCAkZmxhZyIKLSsJICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSsJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCi0gCSAgZmkKLSAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCi0gCSAgY2FzZSAiJGZpbmFsaXplX3Blcm1fcnBhdGggIiBpbgotIAkgICoiICRsaWJkaXIgIiopIDs7Ci0tCSAgKikgZmluYWxpemVfcGVybV9ycGF0aD0iJGZpbmFsaXplX3Blcm1fcnBhdGggJGxpYmRpciIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9wZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKLSAJICBlc2FjCi0gCWZpCi0gICAgICAgZG9uZQotQEAgLTc4NzgsNyArODg0OSw3IEBAIEVPRgotICAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiAmJgotIAkgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCi0gCWxpYmRpcj0iJGhhcmRjb2RlX2xpYmRpcnMiCi0tCWV2YWwgInJwYXRoPVwiICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCi0rCWV2YWwgcnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotICAgICAgIGZpCi0gICAgICAgZmluYWxpemVfcnBhdGg9IiRycGF0aCIKLSAKLUBAIC03OTIxLDYgKzg4OTIsMTIgQEAgRU9GCi0gCWV4aXRfc3RhdHVzPTAKLSAJZnVuY19zaG93X2V2YWwgIiRsaW5rX2NvbW1hbmQiICdleGl0X3N0YXR1cz0kPycKLSAKLSsJaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCi0rCSAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCi0rCSAgcG9zdGxpbmtfY21kcz1gZnVuY19lY2hvX2FsbCAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJyAtZSAncyVAVE9PTF9PVVRQVVRAJSciJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCInJWcnYAotKwkgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCi0rCWZpCi0rCi0gCSMgRGVsZXRlIHRoZSBnZW5lcmF0ZWQgZmlsZXMuCi0gCWlmIHRlc3QgLWYgIiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSI7IHRoZW4KLSAJICBmdW5jX3Nob3dfZXZhbCAnJFJNICIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0iJwotQEAgLTc5NDMsNyArODkyMCw3IEBAIEVPRgotIAkgICMgV2Ugc2hvdWxkIHNldCB0aGUgcnVucGF0aF92YXIuCi0gCSAgcnBhdGg9Ci0gCSAgZm9yIGRpciBpbiAkcGVybV9ycGF0aDsgZG8KLS0JICAgIHJwYXRoPSIkcnBhdGgkZGlyOiIKLSsJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIkZGlyOiIKLSAJICBkb25lCi0gCSAgY29tcGlsZV92YXI9IiRydW5wYXRoX3Zhcj1cIiRycGF0aFwkJHJ1bnBhdGhfdmFyXCIgIgotIAlmaQotQEAgLTc5NTEsNyArODkyOCw3IEBAIEVPRgotIAkgICMgV2Ugc2hvdWxkIHNldCB0aGUgcnVucGF0aF92YXIuCi0gCSAgcnBhdGg9Ci0gCSAgZm9yIGRpciBpbiAkZmluYWxpemVfcGVybV9ycGF0aDsgZG8KLS0JICAgIHJwYXRoPSIkcnBhdGgkZGlyOiIKLSsJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIkZGlyOiIKLSAJICBkb25lCi0gCSAgZmluYWxpemVfdmFyPSIkcnVucGF0aF92YXI9XCIkcnBhdGhcJCRydW5wYXRoX3ZhclwiICIKLSAJZmkKLUBAIC03OTY2LDYgKzg5NDMsMTMgQEAgRU9GCi0gCSRvcHRfZHJ5X3J1biB8fCAkUk0gJG91dHB1dAotIAkjIExpbmsgdGhlIGV4ZWN1dGFibGUgYW5kIGV4aXQKLSAJZnVuY19zaG93X2V2YWwgIiRsaW5rX2NvbW1hbmQiICdleGl0ICQ/JwotKwotKwlpZiB0ZXN0IC1uICIkcG9zdGxpbmtfY21kcyI7IHRoZW4KLSsJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKLSsJICBwb3N0bGlua19jbWRzPWBmdW5jX2VjaG9fYWxsICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnIC1lICdzJUBUT09MX09VVFBVVEAlJyIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiclZydgCi0rCSAgZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0bGlua19jbWRzIiAnZXhpdCAkPycKLSsJZmkKLSsKLSAJZXhpdCAkRVhJVF9TVUNDRVNTCi0gICAgICAgZmkKLSAKLUBAIC03OTk5LDYgKzg5ODMsMTIgQEAgRU9GCi0gCi0gICAgICAgZnVuY19zaG93X2V2YWwgIiRsaW5rX2NvbW1hbmQiICdleGl0ICQ/JwotIAotKyAgICAgIGlmIHRlc3QgLW4gIiRwb3N0bGlua19jbWRzIjsgdGhlbgotKwlmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUiCi0rCXBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSInJWcnIC1lICdzJUBUT09MX09VVFBVVEAlJyIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiclZydgCi0rCWZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCi0rICAgICAgZmkKLSsKLSAgICAgICAjIE5vdyBjcmVhdGUgdGhlIHdyYXBwZXIgc2NyaXB0LgotICAgICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgJG91dHB1dCIKLSAKLUBAIC04MDk2LDcgKzkwODYsNyBAQCBFT0YKLSAJZWxzZQotIAkgIG9sZG9ianM9IiRvbGRfZGVwbGlicyAkbm9uX3BpY19vYmplY3RzIgotIAkgIGlmIHRlc3QgIiRwcmVsb2FkIiA9IHllcyAmJiB0ZXN0IC1mICIkc3ltZmlsZW9iaiI7IHRoZW4KLS0JICAgIG9sZG9ianM9IiRvbGRvYmpzICRzeW1maWxlb2JqIgotKwkgICAgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRzeW1maWxlb2JqIgotIAkgIGZpCi0gCWZpCi0gCWFkZGxpYnM9IiRvbGRfY29udmVuaWVuY2UiCi1AQCAtODEwNCwxMCArOTA5NCwxMCBAQCBFT0YKLSAKLSAgICAgICBpZiB0ZXN0IC1uICIkYWRkbGlicyI7IHRoZW4KLSAJZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLS0JZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCi0rCWZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCi0gCi0gCWZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRhZGRsaWJzCi0tCW9sZG9ianM9IiRvbGRvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotKwlmdW5jX2FwcGVuZCBvbGRvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCi0gICAgICAgZmkKLSAKLSAgICAgICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgYXJjaGl2ZSBjb21tYW5kcy4KLUBAIC04MTE4LDEwICs5MTA4LDEwIEBAIEVPRgotIAkjIEFkZCBhbnkgb2JqZWN0cyBmcm9tIHByZWxvYWRlZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMKLSAJaWYgdGVzdCAtbiAiJGRscHJlZmlsZXMiOyB0aGVuCi0gCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLS0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKLSsJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgotIAotIAkgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRkbHByZWZpbGVzCi0tCSAgb2xkb2Jqcz0iJG9sZG9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCi0rCSAgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotIAlmaQotIAotIAkjIFBPU0lYIGRlbWFuZHMgbm8gcGF0aHMgdG8gYmUgZW5jb2RlZCBpbiBhcmNoaXZlcy4gIFdlIGhhdmUKLUBAIC04MTM5LDcgKzkxMjksNyBAQCBFT0YKLSAJZWxzZQotIAkgIGVjaG8gImNvcHlpbmcgc2VsZWN0ZWQgb2JqZWN0IGZpbGVzIHRvIGF2b2lkIGJhc2VuYW1lIGNvbmZsaWN0cy4uLiIKLSAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgotKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCi0gCSAgZnVuY19ta2Rpcl9wICIkZ2VudG9wIgotIAkgIHNhdmVfb2xkb2Jqcz0kb2xkb2JqcwotIAkgIG9sZG9ianM9Ci1AQCAtODE2MywxOCArOTE1MywyOCBAQCBFT0YKLSAJCWVzYWMKLSAJICAgICAgZG9uZQotIAkgICAgICBmdW5jX3Nob3dfZXZhbCAibG4gJG9iaiAkZ2VudG9wLyRuZXdvYmogfHwgY3AgJG9iaiAkZ2VudG9wLyRuZXdvYmoiCi0tCSAgICAgIG9sZG9ianM9IiRvbGRvYmpzICRnZW50b3AvJG5ld29iaiIKLSsJICAgICAgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRnZW50b3AvJG5ld29iaiIKLSAJICAgICAgOzsKLS0JICAgICopIG9sZG9ianM9IiRvbGRvYmpzICRvYmoiIDs7Ci0rCSAgICAqKSBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJG9iaiIgOzsKLSAJICAgIGVzYWMKLSAJICBkb25lCi0gCWZpCi0tCWV2YWwgImNtZHM9XCIkb2xkX2FyY2hpdmVfY21kc1wiIgotKwlldmFsIGNtZHM9XCIkb2xkX2FyY2hpdmVfY21kc1wiCi0gCi0gCWZ1bmNfbGVuICIgJGNtZHMiCi0gCWxlbj0kZnVuY19sZW5fcmVzdWx0Ci0gCWlmIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgotIAkgIGNtZHM9JG9sZF9hcmNoaXZlX2NtZHMKLSsJZWxpZiB0ZXN0IC1uICIkYXJjaGl2ZXJfbGlzdF9zcGVjIjsgdGhlbgotKwkgIGZ1bmNfdmVyYm9zZSAidXNpbmcgY29tbWFuZCBmaWxlIGFyY2hpdmUgbGlua2luZy4uLiIKLSsJICBmb3Igb2JqIGluICRvbGRvYmpzCi0rCSAgZG8KLSsJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgotKwkgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCi0rCSAgZG9uZSA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmxpYmNtZAotKwkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0X29iamRpci8kbGlibmFtZS5saWJjbWQiCi0rCSAgb2xkb2Jqcz0iICRhcmNoaXZlcl9saXN0X3NwZWMkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgotKwkgIGNtZHM9JG9sZF9hcmNoaXZlX2NtZHMKLSAJZWxzZQotIAkgICMgdGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBsaW5rIGluIG9uZSBzdGVwLCBsaW5rIGluIHBhcnRzCi0gCSAgZnVuY192ZXJib3NlICJ1c2luZyBwaWVjZXdpc2UgYXJjaGl2ZSBsaW5raW5nLi4uIgotQEAgLTgxODksNyArOTE4OSw3IEBAIEVPRgotIAkgIGRvCi0gCSAgICBsYXN0X29sZG9iaj0kb2JqCi0gCSAgZG9uZQotLQkgIGV2YWwgInRlc3RfY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIiCi0rCSAgZXZhbCB0ZXN0X2NtZHM9XCIkb2xkX2FyY2hpdmVfY21kc1wiCi0gCSAgZnVuY19sZW4gIiAkdGVzdF9jbWRzIgotIAkgIGxlbjA9JGZ1bmNfbGVuX3Jlc3VsdAotIAkgIGxlbj0kbGVuMAotQEAgLTgyMDgsNyArOTIwOCw3IEBAIEVPRgotIAkJUkFOTElCPSRzYXZlX1JBTkxJQgotIAkgICAgICBmaQotIAkgICAgICB0ZXN0IC16ICIkY29uY2F0X2NtZHMiIHx8IGNvbmNhdF9jbWRzPSRjb25jYXRfY21kc34KLS0JICAgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kb2xkX2FyY2hpdmVfY21kc1wiIgotKwkgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JG9sZF9hcmNoaXZlX2NtZHNcIgotIAkgICAgICBvYmpsaXN0PQotIAkgICAgICBsZW49JGxlbjAKLSAJICAgIGZpCi1AQCAtODIxNiw5ICs5MjE2LDkgQEAgRU9GCi0gCSAgUkFOTElCPSRzYXZlX1JBTkxJQgotIAkgIG9sZG9ianM9JG9iamxpc3QKLSAJICBpZiB0ZXN0ICJYJG9sZG9ianMiID0gIlgiIDsgdGhlbgotLQkgICAgZXZhbCAiY21kcz1cIlwkY29uY2F0X2NtZHNcIiIKLSsJICAgIGV2YWwgY21kcz1cIlwkY29uY2F0X2NtZHNcIgotIAkgIGVsc2UKLS0JICAgIGV2YWwgImNtZHM9XCJcJGNvbmNhdF9jbWRzflwkb2xkX2FyY2hpdmVfY21kc1wiIgotKwkgICAgZXZhbCBjbWRzPVwiXCRjb25jYXRfY21kc35cJG9sZF9hcmNoaXZlX2NtZHNcIgotIAkgIGZpCi0gCWZpCi0gICAgICAgZmkKLUBAIC04MjY4LDEyICs5MjY4LDIzIEBAIEVPRgotIAkgICAgICAqLmxhKQotIAkJZnVuY19iYXNlbmFtZSAiJGRlcGxpYiIKLSAJCW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0JCWxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAotKwkJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCi0rCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0YAotIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAotIAkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRkZXBsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLS0JCW5ld2RlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyAkbGliZGlyLyRuYW1lIgotKwkJZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCi0rCQk7OwotKwkgICAgICAtTCopCi0rCQlmdW5jX3N0cmlwbmFtZSAtTCAnJyAiJGRlcGxpYiIKLSsJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkJZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgLUwkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgotIAkJOzsKLS0JICAgICAgKikgbmV3ZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzICRkZXBsaWIiIDs7Ci0rCSAgICAgIC1SKikKLSsJCWZ1bmNfc3RyaXBuYW1lIC1SICcnICIkZGVwbGliIgotKwkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAtUiRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQiCi0rCQk7OwotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAkZGVwbGliIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICBkb25lCi0gCSAgICBkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMiCi1AQCAtODI4NCwxMiArOTI5NSwxNCBAQCBFT0YKLSAJICAgICAgKi5sYSkKLSAJICAgICAgICBmdW5jX2Jhc2VuYW1lICIkbGliIgotIAkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLQkJbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRsaWJgCi0rCQlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGxpYiIKLSsJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHRgCi0rCi0gCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0gCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotLQkJbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYmRpci8kbmFtZSIKLSsJCWZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKLSAJCTs7Ci0tCSAgICAgICopIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWIiIDs7Ci0rCSAgICAgICopIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkbGliIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICBkb25lCi0gCSAgICBkbGZpbGVzPSIkbmV3ZGxmaWxlcyIKLUBAIC04MzAzLDEwICs5MzE2LDExIEBAIEVPRgotIAkJIyB0aGUgbGlicmFyeToKLSAJCWZ1bmNfYmFzZW5hbWUgIiRsaWIiCi0gCQluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tCQlsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKLSsJCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkbGliIgotKwkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdGAKLSAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKLSAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0tCQluZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkbGliZGlyLyRuYW1lIgotKwkJZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgotIAkJOzsKLSAJICAgICAgZXNhYwotIAkgICAgZG9uZQotQEAgLTgzMTgsNyArOTMzMiw3IEBAIEVPRgotIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnM9IiRsaWIiIDs7Ci0gCQkqKSBhYnM9YHB3ZGAiLyRsaWIiIDs7Ci0gCSAgICAgIGVzYWMKLS0JICAgICAgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGFicyIKLSsJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRhYnMiCi0gCSAgICBkb25lCi0gCSAgICBkbGZpbGVzPSIkbmV3ZGxmaWxlcyIKLSAJICAgIG5ld2RscHJlZmlsZXM9Ci1AQCAtODMyNyw3ICs5MzQxLDcgQEAgRU9GCi0gCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFicz0iJGxpYiIgOzsKLSAJCSopIGFicz1gcHdkYCIvJGxpYiIgOzsKLSAJICAgICAgZXNhYwotLQkgICAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkYWJzIgotKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGFicyIKLSAJICAgIGRvbmUKLSAJICAgIGRscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzIgotIAkgIGZpCi1AQCAtODQxMiw3ICs5NDI2LDcgQEAgcmVsaW5rX2NvbW1hbmQ9XCIkcmVsaW5rX2NvbW1hbmRcIiIKLSAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCi0gfQotIAotLXsgdGVzdCAiJG1vZGUiID0gbGluayB8fCB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IH0gJiYKLSt7IHRlc3QgIiRvcHRfbW9kZSIgPSBsaW5rIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IH0gJiYKLSAgICAgZnVuY19tb2RlX2xpbmsgJHsxKyIkQCJ9Ci0gCi0gCi1AQCAtODQzMiw5ICs5NDQ2LDkgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQotICAgICBmb3IgYXJnCi0gICAgIGRvCi0gICAgICAgY2FzZSAkYXJnIGluCi0tICAgICAgLWYpIFJNPSIkUk0gJGFyZyI7IHJtZm9yY2U9eWVzIDs7Ci0tICAgICAgLSopIFJNPSIkUk0gJGFyZyIgOzsKLS0gICAgICAqKSBmaWxlcz0iJGZpbGVzICRhcmciIDs7Ci0rICAgICAgLWYpIGZ1bmNfYXBwZW5kIFJNICIgJGFyZyI7IHJtZm9yY2U9eWVzIDs7Ci0rICAgICAgLSopIGZ1bmNfYXBwZW5kIFJNICIgJGFyZyIgOzsKLSsgICAgICAqKSBmdW5jX2FwcGVuZCBmaWxlcyAiICRhcmciIDs7Ci0gICAgICAgZXNhYwotICAgICBkb25lCi0gCi1AQCAtODQ0MywyNCArOTQ1NywyMyBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCi0gCi0gICAgIHJtZGlycz0KLSAKLS0gICAgb3JpZ29iamRpcj0iJG9iamRpciIKLSAgICAgZm9yIGZpbGUgaW4gJGZpbGVzOyBkbwotICAgICAgIGZ1bmNfZGlybmFtZSAiJGZpbGUiICIiICIuIgotICAgICAgIGRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0gICAgICAgaWYgdGVzdCAiWCRkaXIiID0gWC47IHRoZW4KLS0Jb2JqZGlyPSIkb3JpZ29iamRpciIKLSsJb2Rpcj0iJG9iamRpciIKLSAgICAgICBlbHNlCi0tCW9iamRpcj0iJGRpci8kb3JpZ29iamRpciIKLSsJb2Rpcj0iJGRpci8kb2JqZGlyIgotICAgICAgIGZpCi0gICAgICAgZnVuY19iYXNlbmFtZSAiJGZpbGUiCi0gICAgICAgbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSAgICAgIHRlc3QgIiRtb2RlIiA9IHVuaW5zdGFsbCAmJiBvYmpkaXI9IiRkaXIiCi0rICAgICAgdGVzdCAiJG9wdF9tb2RlIiA9IHVuaW5zdGFsbCAmJiBvZGlyPSIkZGlyIgotIAotLSAgICAgICMgUmVtZW1iZXIgb2JqZGlyIGZvciByZW1vdmFsIGxhdGVyLCBiZWluZyBjYXJlZnVsIHRvIGF2b2lkIGR1cGxpY2F0ZXMKLS0gICAgICBpZiB0ZXN0ICIkbW9kZSIgPSBjbGVhbjsgdGhlbgotKyAgICAgICMgUmVtZW1iZXIgb2RpciBmb3IgcmVtb3ZhbCBsYXRlciwgYmVpbmcgY2FyZWZ1bCB0byBhdm9pZCBkdXBsaWNhdGVzCi0rICAgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuOyB0aGVuCi0gCWNhc2UgIiAkcm1kaXJzICIgaW4KLS0JICAqIiAkb2JqZGlyICIqKSA7OwotLQkgICopIHJtZGlycz0iJHJtZGlycyAkb2JqZGlyIiA7OwotKwkgICoiICRvZGlyICIqKSA7OwotKwkgICopIGZ1bmNfYXBwZW5kIHJtZGlycyAiICRvZGlyIiA7OwotIAllc2FjCi0gICAgICAgZmkKLSAKLUBAIC04NDg2LDE4ICs5NDk5LDE3IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAKLSAJICAjIERlbGV0ZSB0aGUgbGlidG9vbCBsaWJyYXJpZXMgYW5kIHN5bWxpbmtzLgotIAkgIGZvciBuIGluICRsaWJyYXJ5X25hbWVzOyBkbwotLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbiIKLSsJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kbiIKLSAJICBkb25lCi0tCSAgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRvbGRfbGlicmFyeSIKLSsJICB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kb2xkX2xpYnJhcnkiCi0gCi0tCSAgY2FzZSAiJG1vZGUiIGluCi0rCSAgY2FzZSAiJG9wdF9tb2RlIiBpbgotIAkgIGNsZWFuKQotLQkgICAgY2FzZSAiICAkbGlicmFyeV9uYW1lcyAiIGluCi0tCSAgICAjICIgICIgaW4gdGhlIGJlZ2lubmluZyBjYXRjaGVzIGVtcHR5ICRkbG5hbWUKLSsJICAgIGNhc2UgIiAkbGlicmFyeV9uYW1lcyAiIGluCi0gCSAgICAqIiAkZGxuYW1lICIqKSA7OwotLQkgICAgKikgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kZGxuYW1lIiA7OwotKwkgICAgKikgdGVzdCAtbiAiJGRsbmFtZSIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRkbG5hbWUiIDs7Ci0gCSAgICBlc2FjCi0tCSAgICB0ZXN0IC1uICIkbGliZGlyIiAmJiBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuYW1lICRvYmpkaXIvJHtuYW1lfWkiCi0rCSAgICB0ZXN0IC1uICIkbGliZGlyIiAmJiBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG5hbWUgJG9kaXIvJHtuYW1lfWkiCi0gCSAgICA7OwotIAkgIHVuaW5zdGFsbCkKLSAJICAgIGlmIHRlc3QgLW4gIiRsaWJyYXJ5X25hbWVzIjsgdGhlbgotQEAgLTg1MjUsMTkgKzk1MzcsMTkgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQotIAkgICMgQWRkIFBJQyBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gcmVtb3ZlLgotIAkgIGlmIHRlc3QgLW4gIiRwaWNfb2JqZWN0IiAmJgotIAkgICAgIHRlc3QgIiRwaWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCi0tCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZGlyLyRwaWNfb2JqZWN0IgotKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRkaXIvJHBpY19vYmplY3QiCi0gCSAgZmkKLSAKLSAJICAjIEFkZCBub24tUElDIG9iamVjdCB0byB0aGUgbGlzdCBvZiBmaWxlcyB0byByZW1vdmUuCi0gCSAgaWYgdGVzdCAtbiAiJG5vbl9waWNfb2JqZWN0IiAmJgotIAkgICAgIHRlc3QgIiRub25fcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgotLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGRpci8kbm9uX3BpY19vYmplY3QiCi0rCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGRpci8kbm9uX3BpY19vYmplY3QiCi0gCSAgZmkKLSAJZmkKLSAJOzsKLSAKLSAgICAgICAqKQotLQlpZiB0ZXN0ICIkbW9kZSIgPSBjbGVhbiA7IHRoZW4KLSsJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuIDsgdGhlbgotIAkgIG5vZXhlbmFtZT0kbmFtZQotIAkgIGNhc2UgJGZpbGUgaW4KLSAJICAqLmV4ZSkKLUBAIC04NTQ3LDcgKzk1NTksNyBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCi0gCSAgICBub2V4ZW5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotIAkgICAgIyAkZmlsZSB3aXRoIC5leGUgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCB0byBybWZpbGVzLAotIAkgICAgIyBhZGQgJGZpbGUgd2l0aG91dCAuZXhlCi0tCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZmlsZSIKLSsJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZmlsZSIKLSAJICAgIDs7Ci0gCSAgZXNhYwotIAkgICMgRG8gYSB0ZXN0IHRvIHNlZSBpZiB0aGlzIGlzIGEgbGlidG9vbCBwcm9ncmFtLgotQEAgLTg1NTYsNyArOTU2OCw3IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAJICAgICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZSAiJGZpbGUiCi0gCSAgICAgIHJlbGlua19jb21tYW5kPQotIAkgICAgICBmdW5jX3NvdXJjZSAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQKLS0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0IgotKwkgICAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0IgotIAkgICAgZWxzZQotIAkgICAgICByZWxpbmtfY29tbWFuZD0KLSAJICAgICAgZnVuY19zb3VyY2UgJGRpci8kbm9leGVuYW1lCi1AQCAtODU2NCwxMiArOTU3NiwxMiBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCi0gCi0gCSAgICAjIG5vdGUgJG5hbWUgc3RpbGwgY29udGFpbnMgLmV4ZSBpZiBpdCB3YXMgaW4gJGZpbGUgb3JpZ2luYWxseQotIAkgICAgIyBhcyBkb2VzIHRoZSB2ZXJzaW9uIG9mICRmaWxlIHRoYXQgd2FzIGFkZGVkIGludG8gJHJtZmlsZXMKLS0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG5hbWUgJG9iamRpci8ke25hbWV9Uy4ke29iamV4dH0iCi0rCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG5hbWUgJG9kaXIvJHtuYW1lfVMuJHtvYmpleHR9IgotIAkgICAgaWYgdGVzdCAiJGZhc3RfaW5zdGFsbCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgotLQkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyL2x0LSRuYW1lIgotKwkgICAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvbHQtJG5hbWUiCi0gCSAgICBmaQotIAkgICAgaWYgdGVzdCAiWCRub2V4ZW5hbWUiICE9ICJYJG5hbWUiIDsgdGhlbgotLQkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyL2x0LSR7bm9leGVuYW1lfS5jIgotKwkgICAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvbHQtJHtub2V4ZW5hbWV9LmMiCi0gCSAgICBmaQotIAkgIGZpCi0gCWZpCi1AQCAtODU3Nyw3ICs5NTg5LDYgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQotICAgICAgIGVzYWMKLSAgICAgICBmdW5jX3Nob3dfZXZhbCAiJFJNICRybWZpbGVzIiAnZXhpdF9zdGF0dXM9MScKLSAgICAgZG9uZQotLSAgICBvYmpkaXI9IiRvcmlnb2JqZGlyIgotIAotICAgICAjIFRyeSB0byByZW1vdmUgdGhlICR7b2JqZGlyfXMgaW4gdGhlIGRpcmVjdG9yaWVzIHdoZXJlIHdlIGRlbGV0ZWQgZmlsZXMKLSAgICAgZm9yIGRpciBpbiAkcm1kaXJzOyBkbwotQEAgLTg1ODksMTYgKzk2MDAsMTYgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQotICAgICBleGl0ICRleGl0X3N0YXR1cwotIH0KLSAKLS17IHRlc3QgIiRtb2RlIiA9IHVuaW5zdGFsbCB8fCB0ZXN0ICIkbW9kZSIgPSBjbGVhbjsgfSAmJgotK3sgdGVzdCAiJG9wdF9tb2RlIiA9IHVuaW5zdGFsbCB8fCB0ZXN0ICIkb3B0X21vZGUiID0gY2xlYW47IH0gJiYKLSAgICAgZnVuY19tb2RlX3VuaW5zdGFsbCAkezErIiRAIn0KLSAKLS10ZXN0IC16ICIkbW9kZSIgJiYgewotK3Rlc3QgLXogIiRvcHRfbW9kZSIgJiYgewotICAgaGVscD0iJGdlbmVyaWNfaGVscCIKLSAgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIE1PREUiCi0gfQotIAotIHRlc3QgLXogIiRleGVjX2NtZCIgJiYgXAotLSAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG1vZGUnIgotKyAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG9wdF9tb2RlJyIKLSAKLSBpZiB0ZXN0IC1uICIkZXhlY19jbWQiOyB0aGVuCi0gICBldmFsIGV4ZWMgIiRleGVjX2NtZCIKLWRpZmYgLS1naXQgYS9sdG9wdGlvbnMubTQgYi9sdG9wdGlvbnMubTQKLWluZGV4IDVlZjEyY2VkMmEuLjE3Y2ZkNTFjMGIgMTAwNjQ0Ci0tLS0gYS9sdG9wdGlvbnMubTQKLSsrKyBiL2x0b3B0aW9ucy5tNAotQEAgLTgsNyArOCw3IEBACi0gIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKLSAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgotIAotLSMgc2VyaWFsIDYgbHRvcHRpb25zLm00Ci0rIyBzZXJpYWwgNyBsdG9wdGlvbnMubTQKLSAKLSAjIFRoaXMgaXMgdG8gaGVscCBhY2xvY2FsIGZpbmQgdGhlc2UgbWFjcm9zLCBhcyBpdCBjYW4ndCBzZWUgbTRfZGVmaW5lLgotIEFDX0RFRlVOKFtMVE9QVElPTlNfVkVSU0lPTl0sIFttNF9pZihbMV0pXSkKLWRpZmYgLS1naXQgYS9sdHZlcnNpb24ubTQgYi9sdHZlcnNpb24ubTQKLWluZGV4IGJmODdmNzcxMzIuLjljN2I1ZDQxMTggMTAwNjQ0Ci0tLS0gYS9sdHZlcnNpb24ubTQKLSsrKyBiL2x0dmVyc2lvbi5tNAotQEAgLTcsMTcgKzcsMTcgQEAKLSAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAotICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCi0gCi0tIyBHZW5lcmF0ZWQgZnJvbSBsdHZlcnNpb24uaW4uCi0rIyBAY29uZmlndXJlX2lucHV0QAotIAotLSMgc2VyaWFsIDMxMzQgbHR2ZXJzaW9uLm00Ci0rIyBzZXJpYWwgMzI5MyBsdHZlcnNpb24ubTQKLSAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sCi0gCi0tbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1ZFUlNJT05dLCBbMi4yLjdhXSkKLS1tNF9kZWZpbmUoW0xUX1BBQ0tBR0VfUkVWSVNJT05dLCBbMS4zMTM0XSkKLSttNF9kZWZpbmUoW0xUX1BBQ0tBR0VfVkVSU0lPTl0sIFsyLjRdKQotK200X2RlZmluZShbTFRfUEFDS0FHRV9SRVZJU0lPTl0sIFsxLjMyOTNdKQotIAotIEFDX0RFRlVOKFtMVFZFUlNJT05fVkVSU0lPTl0sCi0tW21hY3JvX3ZlcnNpb249JzIuMi43YScKLS1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JwotK1ttYWNyb192ZXJzaW9uPScyLjQnCi0rbWFjcm9fcmV2aXNpb249JzEuMzI5MycKLSBfTFRfREVDTCgsIG1hY3JvX3ZlcnNpb24sIDAsIFtXaGljaCByZWxlYXNlIG9mIGxpYnRvb2wubTQgd2FzIHVzZWQ/XSkKLSBfTFRfREVDTCgsIG1hY3JvX3JldmlzaW9uLCAwKQotIF0pCi1kaWZmIC0tZ2l0IGEvbHR+b2Jzb2xldGUubTQgYi9sdH5vYnNvbGV0ZS5tNAotaW5kZXggYmY5MmI1ZTA3OS4uYzU3M2RhOTBjNSAxMDA2NDQKLS0tLSBhL2x0fm9ic29sZXRlLm00Ci0rKysgYi9sdH5vYnNvbGV0ZS5tNAotQEAgLTcsNyArNyw3IEBACi0gIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKLSAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgotIAotLSMgc2VyaWFsIDQgbHR+b2Jzb2xldGUubTQKLSsjIHNlcmlhbCA1IGx0fm9ic29sZXRlLm00Ci0gCi0gIyBUaGVzZSBleGlzdCBlbnRpcmVseSB0byBmb29sIGFjbG9jYWwgd2hlbiBib290c3RyYXBwaW5nIGxpYnRvb2wuCi0gIwotZGlmZiAtLWdpdCBhL29wY29kZXMvY29uZmlndXJlIGIvb3Bjb2Rlcy9jb25maWd1cmUKLWluZGV4IDg1Mzg0OWVlNTguLjVmNzRlY2Y3ZGEgMTAwNzU1Ci0tLS0gYS9vcGNvZGVzL2NvbmZpZ3VyZQotKysrIGIvb3Bjb2Rlcy9jb25maWd1cmUKLUBAIC02ODAsNiArNjgwLDkgQEAgT1RPT0wKLSBMSVBPCi0gTk1FRElUCi0gRFNZTVVUSUwKLStNQU5JRkVTVF9UT09MCi0rYWNfY3RfQVIKLStETExUT09MCi0gT0JKRFVNUAotIExOX1MKLSBOTQotQEAgLTc5OCw2ICs4MDEsNyBAQCBlbmFibGVfc3RhdGljCi0gd2l0aF9waWMKLSBlbmFibGVfZmFzdF9pbnN0YWxsCi0gd2l0aF9nbnVfbGQKLSt3aXRoX2xpYnRvb2xfc3lzcm9vdAotIGVuYWJsZV9saWJ0b29sX2xvY2sKLSBlbmFibGVfdGFyZ2V0cwotIGVuYWJsZV93ZXJyb3IKLUBAIC0xNDYyLDYgKzE0NjYsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KLSsgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCi0gCi0gU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6Ci0gICBDQyAgICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKLUBAIC01NDAzLDggKzU0MDksOCBAQCBlc2FjCi0gCi0gCi0gCi0tbWFjcm9fdmVyc2lvbj0nMi4yLjdhJwotLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCi0rbWFjcm9fdmVyc2lvbj0nMi40JwotK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCi0gCi0gCi0gCi1AQCAtNTQ0NCw3ICs1NDUwLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQotICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgotLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0raWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0gICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLSAgIEVDSE89J3ByaW50IC1yIC0tJwotIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNjEzMCw4ICs2MTM2LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKLSAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwotIHhzaV9zaGVsbD1ubwotICggX2x0X2R1bW15PSJhL2IvYyIKLS0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0tICAgICAgPSBjLGEvYiwsIFwKLSsgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0rICAgICAgPSBjLGEvYixiL2MsIFwKLSAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAotICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAotICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTYxODAsNiArNjE4Niw4MCBAQCBlc2FjCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKi0qLWN5Z3dpbiogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKLSsgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNjE5Niw2ICs2Mjc2LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCi0gZXNhYwotIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLSBjYXNlICRob3N0X29zIGluCi0rICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCi0rICAgIGZpCi0rICAgIDs7Ci0gICBkYXJ3aW4qKQotICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC02MzY0LDcgKzY0NDksOCBAQCBtaW5ndyogfCBwdzMyKikKLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCi0gICBlbHNlCi0tICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JwotKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCi0rICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwotICAgZmkKLSAgIDs7Ci1AQCAtNjUxOCw2ICs2NjA0LDIxIEBAIGVzYWMKLSBmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQotICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQotKwotK2ZpbGVfbWFnaWNfZ2xvYj0KLSt3YW50X25vY2FzZWdsb2I9bm8KLStpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotKyAgY2FzZSAkaG9zdF9vcyBpbgotKyAgbWluZ3cqIHwgcHczMiopCi0rICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCi0rICAgIGVsc2UKLSsgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNjUzMSwxMSArNjYzMiwxNjQgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKLSskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCi0rICAgIERMTFRPT0w9ImZhbHNlIgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAotKyAgZmkKLStlbHNlCi0rICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQotK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKLSsKLStjYXNlICRob3N0X29zIGluCi0rY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAotKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAotKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCi0rICAqLS1pZGVudGlmeS1zdHJpY3QqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKLSsgICAgOzsKLSsgICopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjawotKyAgICA7OwotKyAgZXNhYwotKyAgOzsKLSsqKQotKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCi0rICA7OwotK2VzYWMKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotKyAgZG8KLSsgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNjU1MSw3ICs2ODA1LDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgotKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNjU3MSwxMSArNjgyNSwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0gCi0rICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKLSsgIGRvbmUKLSBmaQotLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgotK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KLSAgIGFjX2N0X0FSPSRBUgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotK2RvCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC02NTkxLDcgKzY4NDksNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNjYxMCw2ICs2ODY4LDEwIEBAIGVsc2UKLSAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0rCi0rICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCi0rZG9uZQotKwotICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCi0gICAgIEFSPSJmYWxzZSIKLSAgIGVsc2UKLUBAIC02NjIxLDE2ICs2ODgzLDcyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OwotIGVzYWMKLSAgICAgQVI9JGFjX2N0X0FSCi0gICBmaQotLWVsc2UKLS0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKLSBmaQotIAotLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKLS10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotKzogJHtBUj1hcn0KLSs6ICR7QVJfRkxBR1M9Y3J1fQotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9hcl9hdF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubwotKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSAKLSsgIDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0rICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKLSsgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKLSsgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgotKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgotKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKLSsJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCi0rICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQotIAotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9Ci0gCi0raWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQotK2Vsc2UKLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQotK2ZpCi0gCi0gCi0gCi1AQCAtNjk3Miw4ICs3MjkwLDggQEAgZXNhYwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gCi0gIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotIAotICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgotIG9wdF9jcj0KLUBAIC03MDA5LDYgKzczMjcsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCi0gICBlbHNlCi0gICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCi0gICBmaQotKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgotIAotICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCi0gICBwaXBlX3dvcmtzPW5vCi1AQCAtNzA1MCw2ICs3MzY5LDE4IEBAIF9MVF9FT0YKLSAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAotKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCi0rICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2VsaWYgZGVmaW5lZChfX29zZl9fKQotKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAotKyNlbmRpZgotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgewotICNlbmRpZgotQEAgLTcwNjEsNyArNzM5Miw3IEBAIF9MVF9FT0YKLSAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKLSAKLSAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCi0tY29uc3Qgc3RydWN0IHsKLStMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgewotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHZvaWQgICAgICAgKmFkZHJlc3M7Ci0gfQotQEAgLTcwODcsOCArNzQxOCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7Ci0gX0xUX0VPRgotIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCi0gCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0Ci0tCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLS0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKLSsJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUwotKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwotIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCi0gCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgotIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTcwOTgsOCArNzQyOSw4IEBAIF9MVF9FT0YKLSAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotIAkgICAgcGlwZV93b3Jrcz15ZXMKLSAJICBmaQotLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0tCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0rCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKLSsJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKLSAJZWxzZQotIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQotIAlmaQotQEAgLTcxMzYsNiArNzQ2NywxNiBAQCBlbHNlCi0gJGFzX2VjaG8gIm9rIiA+JjY7IH0KLSBmaQotIAotKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgotK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStmaQotKwotKwotKwotKwotIAotIAotIAotQEAgLTcxNTIsNiArNzQ5Myw0NSBAQCBmaQotIAotIAotIAotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9Ci0rCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7Ci0rZWxzZQotKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KLStmaQotKwotKwotK2x0X3N5c3Jvb3Q9Ci0rY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAotKyB5ZXMpCi0rICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCi0rICAgZmkKLSsgICA7OyAjKAotKyAvKikKLSsgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsgICA7OyAjKAotKyBub3wnJykKLSsgICA7OyAjKAotKyAqKQotKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1Ci0rJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KLSsgICBhc19mbl9lcnJvciAkPyAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKLSsgICA7OwotK2VzYWMKLSsKLSsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKLSskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQotIAotIAotIAotQEAgLTczNjMsNiArNzc0MywxMjMgQEAgZXNhYwotIAotIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotIAotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgotKyAgICBNQU5JRkVTVF9UT09MPSI6IgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAotKyAgZmkKLStlbHNlCi0rICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKLSsgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKLSsgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0rICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCi0rICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKLSsgIGZpCi0rICBybSAtZiBjb25mdGVzdCoKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9Ci0raWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KLSsgIE1BTklGRVNUX1RPT0w9OgotK2ZpCi0rCi0rCi0rCi0rCi0rCi0gCi0gICBjYXNlICRob3N0X29zIGluCi0gICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNzkyNiw2ICs4NDIzLDggQEAgX0xUX0VPRgotICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQotICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKLSAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1Ci0rICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKLSsgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQotICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgotIGludCBtYWluKCkgeyByZXR1cm4gMDt9Ci0gX0xUX0VPRgotQEAgLTgwOTEsNyArODU5MCw4IEBAIGZpCi0gTElCVE9PTF9ERVBTPSIkbHRtYWluIgotIAotICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCi0tTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCi0rTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJwotK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKLSAKLSAKLSAKLUBAIC04MTgwLDcgKzg2ODAsNyBAQCBhaXgzKikKLSBlc2FjCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzOgotLW9maWxlPWxpYnRvb2wKLStvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKLSBjYW5fYnVpbGRfc2hhcmVkPXllcwotIAotICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTg0NzgsOCArODk3OCw2IEBAIGZpCi0gbHRfcHJvZ19jb21waWxlcl9waWM9Ci0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Ci0gCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAKLSAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtODY0NSw2ICs5MTQzLDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKLSAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJwotKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKLSsJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtODcwNyw3ICs5MjExLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCi0gICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTg3NjQsMTMgKzkyNjgsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgotICAgICA7OwotIGVzYWMKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLS0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLS0KLS0KLS0KLS0KLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYwotIAotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtODgzMSw2ICs5MzM5LDExIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtOTE4MSw3ICs5Njk0LDggQEAgX0xUX0VPRgotICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0gICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCi0gICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLS0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtOTI4MCwxMiArOTc5NCwxMiBAQCBfTFRfRU9GCi0gCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKLS0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSsJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0gCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgotIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLS0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0rCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSAJICBmaQotIAkgIDs7Ci0gCWVzYWMKLUBAIC05Mjk5LDggKzk4MTMsOCBAQCBfTFRfRU9GCi0gCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLSAJd2xhcmM9Ci0gICAgICAgZWxzZQotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtOTMxOCw4ICs5ODMyLDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTkzNjUsOCArOTg3OSw4IEBAIF9MVF9FT0YKLSAKLSAgICAgKikKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05NDk2LDcgKzEwMDEwLDEzIEBAIF9MVF9FT0YKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKLSAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTk1MDksMjIgKzEwMDI5LDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLUBAIC05NTM2LDcgKzEwMDYzLDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAllbHNlCi0gCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05NTQ5LDIyICsxMDA4MiwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTk2MDksMjAgKzEwMTQ5LDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLS0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0tICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLS0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLS0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgICAgY2wqKQotKwkjIE5hdGl2ZSBNU1ZDCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKLSsJZmlsZV9saXN0X3NwZWM9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGVsc2UKLSsJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZml+Ci0rCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgIGxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsJIyBEb24ndCB1c2UgcmFubGliCi0rCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAqKQotKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIDs7Ci0rCSAgZXNhY34KLSsJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgIGZpJwotKwk7OwotKyAgICAgICopCi0rCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCTs7Ci0rICAgICAgZXNhYwotICAgICAgIDs7Ci0gCi0gICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtOTY4Myw3ICsxMDI2Niw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCi0gICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTk2OTEsNyArMTAyNzQsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDkqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZmkKLUBAIC05NzA3LDcgKzEwMjkwLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXgxMCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgICBmaQotQEAgLTk3MzEsMTAgKzEwMzE0LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJaWE2NCopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAkqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWVzYWMKLSAgICAgICBlbHNlCi1AQCAtOTgxMywyMyArMTAzOTYsMzYgQEAgZmkKLSAKLSAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKLSAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAotIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgotLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLS0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KLSsJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0rCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLSsJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS1pbnQgZm9vKHZvaWQpIHt9Ci0raW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLS0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLS0KLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcwotK2Vsc2UKLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9Ci0rCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJZmkKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTk5MTQsNyArMTA1MTAsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICAgZWxzZQotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC05OTMzLDkgKzEwNTI5LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCXdsYXJjPScke3dsfScKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotICAgICAgIGVsc2UKLSAJY2FzZSBgJENDIC1WIDI+JjFgIGluCi0gCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTEwNTExLDggKzExMTA3LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgbmVlZF92ZXJzaW9uPW5vCi0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAKLS0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKLSsgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KLSsgIHllcywqKQotKyAgICAjIGdjYwotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwotICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTEwNTQ1LDEzICsxMTE0Miw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgIDs7Ci0gICAgIGVzYWMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSsgICAgOzsKLSsKLSsgICosY2wqKQotKyAgICAjIE5hdGl2ZSBNU1ZDCi0rICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0rICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSsgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCi0rCi0rICAgIGNhc2UgJGJ1aWxkX29zIGluCi0rICAgIG1pbmd3KikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ci0rICAgICAgbHRfc2F2ZV9pZnM9JElGUwotKyAgICAgIElGUz0nOycKLSsgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCi0rICAgICAgZG8KLSsgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCi0rICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKLSsgICAgICBkb25lCi0rICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiopCi0rICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQotKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcwotKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKLSsgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KLSsgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotKyAgICAgIGVsc2UKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICBmaQotKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQotKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKLSsgICAgICA7OwotKyAgICBlc2FjCi0rCi0rICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSsgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0rICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+Ci0rICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+Ci0rICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJwotKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+Ci0rICAgICAgICRSTSBcJGRscGF0aCcKLSsgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCi0gICAgIDs7Ci0gCi0gICAqKQotKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAgIDs7Ci0gICBlc2FjCi0tICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCi0gICBzaGxpYnBhdGhfdmFyPVBBVEgKLSAgIDs7Ci1AQCAtMTA2NDMsNyArMTEyOTgsNyBAQCBoYWlrdSopCi0gICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKLSAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLS0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCi0rICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKLSAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgIDs7Ci0gCi1AQCAtMTE0MzksNyArMTIwOTQsNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMTQ0MiAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTE0ODMsMTAgKzEyMTM4LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTE1NDUsNyArMTIyMDAsNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMTU0OCAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTE1ODksMTAgKzEyMjQ0LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTI3NzksNyArMTM0MzQsNyBAQCBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSAieWVzIjsgdGhlbgotICMgc2luY2UgbGliYmZkIG1heSBub3QgcHVsbCBpbiB0aGUgZW50aXJldHkgb2YgbGliaWJlcnR5LgotICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKLSAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgotLSAgICBTSEFSRURfTElCQUREPSItTGBwd2RgLy4uL2xpYmliZXJ0eS9waWMgLWxpYmVydHkiCi0rICAgIFNIQVJFRF9MSUJBREQ9ImBwd2RgLy4uL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEiCi0gICBmaQotIAotICAgY2FzZSAiJHtob3N0fSIgaW4KLUBAIC0xMzc1NiwxMyArMTQ0MTEsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSthcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMzc3NywxNCArMTQ0MzksMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTM4MTcsMTIgKzE0NDgyLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCi0gaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEzODc3LDggKzE0NTQyLDEzIEBAIHJlbG9hZF9mbGFnIFwKLSBPQkpEVU1QIFwKLSBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCi0gZmlsZV9tYWdpY19jbWQgXAotK2ZpbGVfbWFnaWNfZ2xvYiBcCi0rd2FudF9ub2Nhc2VnbG9iIFwKLStETExUT09MIFwKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCi0gQVIgXAotIEFSX0ZMQUdTIFwKLSthcmNoaXZlcl9saXN0X3NwZWMgXAotIFNUUklQIFwKLSBSQU5MSUIgXAotIENDIFwKLUBAIC0xMzg4OCwxMiArMTQ1NTgsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKLStubV9maWxlX2xpc3Rfc3BlYyBcCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAotLWx0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKLStsdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAotIG5lZWRfbG9ja3MgXAotK01BTklGRVNUX1RPT0wgXAotIERTWU1VVElMIFwKLSBOTUVESVQgXAotIExJUE8gXAotQEAgLTEzOTA5LDcgKzE0NTgxLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAotIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAotLWZpeF9zcmNmaWxlX3BhdGggXAotIGV4Y2x1ZGVfZXhwc3ltcyBcCi0gaW5jbHVkZV9leHBzeW1zIFwKLSBmaWxlX2xpc3Rfc3BlYyBcCi1AQCAtMTM5NDUsNiArMTQ2MTYsNyBAQCBtb2R1bGVfY21kcyBcCi0gbW9kdWxlX2V4cHN5bV9jbWRzIFwKLSBleHBvcnRfc3ltYm9sc19jbWRzIFwKLSBwcmVsaW5rX2NtZHMgXAotK3Bvc3RsaW5rX2NtZHMgXAotIHBvc3RpbnN0YWxsX2NtZHMgXAotIHBvc3R1bmluc3RhbGxfY21kcyBcCi0gZmluaXNoX2NtZHMgXAotQEAgLTE0NzEwLDcgKzE1MzgyLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAotICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgotICMKLSAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyAgICAgICAgICAgICAgICAgSW5jLgotICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2Ci0gIwotICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0xNDgxMywxOSArMTU0ODYsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCi0gIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgotIE5MMlNQPSRsdF9sdF9OTDJTUAotIAotKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0rCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0rCi0gIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KLSBPQkpEVU1QPSRsdF9PQkpEVU1QCi0gCi0gIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKLSAKLS0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgotKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKLSAKLSsjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCi0rCi0rIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKLSsKLSsjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgotK0RMTFRPT0w9JGx0X0RMTFRPT0wKLSsKLSsjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rCi0gIyBUaGUgYXJjaGl2ZXIuCi0gQVI9JGx0X0FSCi0rCi0rIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KLSBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKLSAKLSsjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KLSthcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYwotKwotICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCi0gU1RSSVA9JGx0X1NUUklQCi0gCi1AQCAtMTQ4NTUsNiArMTU1NTEsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKLSAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgotIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAotIAotKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgotK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYwotKwotKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCi0rbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAotKwotICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgotIG9iamRpcj0kb2JqZGlyCi0gCi1AQCAtMTQ4NjQsNiArMTU1NjYsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAotICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/Ci0gbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwotIAotKyMgTWFuaWZlc3QgdG9vbC4KLStNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCi0rCi0gIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgotIERTWU1VVElMPSRsdF9EU1lNVVRJTAotIAotQEAgLTE0OTc4LDEyICsxNTY4MywxMiBAQCB3aXRoX2djYz0kR0NDCi0gIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgotIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKLSAKLS0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0td2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLS0KLSAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KLSBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKLSAKLSsjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0rd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLSsKLSAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCi0gbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKLSAKLUBAIC0xNTA3MCw5ICsxNTc3NSw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKLSAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KLSBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCi0gCi0tIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgotLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKLS0KLSAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwotIAotQEAgLTE1MDg4LDYgKzE1NzkwLDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKLSAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgotIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCi0gCi0rIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgotK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKLSsKLSAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KLSBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKLSAKLUBAIC0xNTEyMCwyMTAgKzE1ODI1LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKLSAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KLSAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCi0gICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwotLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIGNhc2UgJHhzaV9zaGVsbCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0tIyBjYWxsOgotLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCi0tIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0tIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0tIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCi0tIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgotLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0tICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9Ci0tfQotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQotLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0tICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9Ci0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAotLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLS0gIGVsc2UKLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotLSAgZmkKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCi0tfQotLQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICBjYXNlICR7Mn0gaW4KLS0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLS0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotLSAgZXNhYwotLX0KLS0KLS0jIHNlZCBzY3JpcHRzOgotLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCi0tbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJwotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCi0tICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotLX0KLS0KLS1fTFRfRU9GCi0tZXNhYwotLQotLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMSs9XCQyIgotLX0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMT1cJCQxXCQyIgotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICBlc2FjCi0tCi0tCi0tICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0rICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0rICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotKwotKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKLStmdW5jX2Rpcm5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKLStmdW5jX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCi0rZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKLStmdW5jX3N0cmlwbmFtZSAoKVwKLSt7XAotK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKLStcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCi0rZnVuY19zcGxpdF9sb25nX29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCi0rZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCi0rZnVuY19sbzJvICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAotK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKLStmdW5jX3hmb3JtICgpXAotK3tcCi0rICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKLStmdW5jX2FyaXRoICgpXAotK3tcCi0rICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCi0rZnVuY19sZW4gKClcCi0re1wKLSsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotK2ZpCi0rCi0raWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCi0rZnVuY19hcHBlbmQgKClcCi0re1wKLSsgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCi0rZnVuY19hcHBlbmRfcXVvdGVkICgpXAotK3tcCi0rXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKLStcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStlbHNlCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZmkKLSsKLStpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQotK2ZpCi0rCi0rCi0rICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQotICAgY2htb2QgK3ggIiRvZmlsZSIKLSAKLWRpZmYgLS1naXQgYS9vcGNvZGVzL2NvbmZpZ3VyZS5hYyBiL29wY29kZXMvY29uZmlndXJlLmFjCi1pbmRleCA0ZWIxOTAwNWU4Li4xOWE1NzYwOGI5IDEwMDY0NAotLS0tIGEvb3Bjb2Rlcy9jb25maWd1cmUuYWMKLSsrKyBiL29wY29kZXMvY29uZmlndXJlLmFjCi1AQCAtMTcwLDcgKzE3MCw3IEBAIGNoYW5nZXF1b3RlKCwpZG5sCi0gICB4PWBzZWQgLW4gLWUgJ3MvXlsgCV0qUElDRkxBR1sgCV0qPVsgCV0qLy9wJyA8IC4uL2xpYmliZXJ0eS9NYWtlZmlsZSB8IHNlZCAtbiAnJHAnYAotIGNoYW5nZXF1b3RlKFssXSlkbmwKLSAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgotLSAgICBTSEFSRURfTElCQUREPSItTGBwd2RgLy4uL2xpYmliZXJ0eS9waWMgLWxpYmVydHkiCi0rICAgIFNIQVJFRF9MSUJBREQ9ImBwd2RgLy4uL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEiCi0gICBmaQotIAotICAgY2FzZSAiJHtob3N0fSIgaW4KLWRpZmYgLS1naXQgYS96bGliL2NvbmZpZ3VyZSBiL3psaWIvY29uZmlndXJlCi1pbmRleCAwNDFjYmRiZjcxLi4xOWQ2MDVmYzg1IDEwMDc1NQotLS0tIGEvemxpYi9jb25maWd1cmUKLSsrKyBiL3psaWIvY29uZmlndXJlCi1AQCAtNjQ2LDggKzY0NiwxMSBAQCBPVE9PTAotIExJUE8KLSBOTUVESVQKLSBEU1lNVVRJTAotK01BTklGRVNUX1RPT0wKLSBSQU5MSUIKLSthY19jdF9BUgotIEFSCi0rRExMVE9PTAotIE9CSkRVTVAKLSBMTl9TCi0gTk0KLUBAIC03NzQsNiArNzc3LDcgQEAgZW5hYmxlX3N0YXRpYwotIHdpdGhfcGljCi0gZW5hYmxlX2Zhc3RfaW5zdGFsbAotIHdpdGhfZ251X2xkCi0rd2l0aF9saWJ0b29sX3N5c3Jvb3QKLSBlbmFibGVfbGlidG9vbF9sb2NrCi0gZW5hYmxlX2hvc3Rfc2hhcmVkCi0gJwotQEAgLTE0MjgsNiArMTQzMiw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQotICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQotKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKLSsgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KLSAKLSBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKLSAgIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAotQEAgLTQxNDcsOCArNDE1Myw4IEBAIGVzYWMKLSAKLSAKLSAKLS1tYWNyb192ZXJzaW9uPScyLjIuN2EnCi0tbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKLSttYWNyb192ZXJzaW9uPScyLjQnCi0rbWFjcm9fcmV2aXNpb249JzEuMzI5MycKLSAKLSAKLSAKLUBAIC00MTg4LDcgKzQxOTQsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9Ci0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC01MDA0LDggKzUwMTAsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwotICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi0geHNpX3NoZWxsPW5vCi0gKCBfbHRfZHVtbXk9ImEvYi9jIgotLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLS0gICAgICA9IGMsYS9iLCwgXAotKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSsgICAgICA9IGMsYS9iLGIvYywgXAotICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNTA1NCw2ICs1MDYwLDgwIEBAIGVzYWMKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqLSotY3lnd2luKiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQotKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KLStsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLStjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC01MDcwLDYgKzUxNTAsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTUyMzgsNyArNTMyMyw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC01MzkyLDYgKzU0NzgsMjEgQEAgZXNhYwotIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1Ci0gJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9Ci0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCi0rICAgIGZpCi0rICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKLSB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC01NDA1LDExICs1NTA2LDE2NSBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSAKLSAKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCi0raWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQotKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgotKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KLSsgICAgRExMVE9PTD0iZmFsc2UiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCi0rICBmaQotK2Vsc2UKLSsgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwotKwotK2Nhc2UgJGhvc3Rfb3MgaW4KLStjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0rICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCi0rICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KLSsgICotLWlkZW50aWZ5LXN0cmljdCopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgotKyAgICA7OwotKyAgKikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCi0rICAgIDs7Ci0rICBlc2FjCi0rICA7OwotKyopCi0rICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKLSsgIDs7Ci0rZXNhYwotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Ci0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITwotKwotKwotKwotKwotKwotKwotKwotKwotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgIGZvciBhY19wcm9nIGluIGFyCi0rICBkbwotKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC01NDI1LDcgKzU2ODAsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCi0rICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC01NDQ1LDExICs1NzAwLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSAKLSsgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhawotKyAgZG9uZQotIGZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCi0raWYgdGVzdCAteiAiJEFSIjsgdGhlbgotICAgYWNfY3RfQVI9JEFSCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rZG8KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTU0NjUsNyArNTcyNCw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC01NDg0LDYgKzU3NDMsMTAgQEAgZWxzZQotICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSsKLSsgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKLStkb25lCi0rCi0gICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KLSAgICAgQVI9ImZhbHNlIgotICAgZWxzZQotQEAgLTU0OTUsMTYgKzU3NTgsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0gZXNhYwotICAgICBBUj0kYWNfY3RfQVIKLSAgIGZpCi0tZWxzZQotLSAgQVI9IiRhY19jdl9wcm9nX0FSIgotIGZpCi0gCi0tdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0rOiAke0FSPWFyfQotKzogJHtBUl9GTEFHUz1jcnV9Ci0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsKLStpbnQKLSttYWluICgpCi0rewotIAotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAotKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JwotKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0gCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KLSAKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLSAKLSAKLSAKLUBAIC01ODQ2LDggKzYxNjUsOCBAQCBlc2FjCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKLSAKLSAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0gCi0gIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCi0gb3B0X2NyPQotQEAgLTU4ODMsNiArNjIwMiw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KLSAgIGVsc2UKLSAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKLSAgIGZpCi0rICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCi0gCi0gICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KLSAgIHBpcGVfd29ya3M9bm8KLUBAIC01OTI0LDYgKzYyNDQsMTggQEAgX0xUX0VPRgotICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi1AQCAtNTkzNSw3ICs2MjY3LDcgQEAgX0xUX0VPRgotIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotIAotIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLS1jb25zdCBzdHJ1Y3QgewotK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtNTk2MSw4ICs2MjkzLDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSBfTFRfRU9GCi0gCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLSAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLS0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLSAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCi0gCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNTk3Miw4ICs2MzA0LDggQEAgX0xUX0VPRgotICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gCSAgICBwaXBlX3dvcmtzPXllcwotIAkgIGZpCi0tCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLS0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSsJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwotKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwotIAllbHNlCi0gCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1Ci0gCWZpCi1AQCAtNjAxMCw2ICs2MzQyLDE5IEBAIGVsc2UKLSAkYXNfZWNobyAib2siID4mNjsgfQotIGZpCi0gCi0rIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCi0raWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gCi1AQCAtNjAyNyw2ICs2MzcyLDQxIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKLStlbHNlCi0rICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubwotK2ZpCi0rCi0rCi0rbHRfc3lzcm9vdD0KLStjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCi0rIHllcykKLSsgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKLSsgICBmaQotKyAgIDs7ICMoCi0rIC8qKQotKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKyAgIDs7ICMoCi0rIG5vfCcnKQotKyAgIDs7ICMoCi0rICopCi0rICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKLSskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQotKyAgIDs7Ci0rZXNhYwotKwotKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQotKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0gCi0gCi0gCi1AQCAtNjI0MSw2ICs2NjIxLDEyMyBAQCBlc2FjCi0gCi0gbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCi0gCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCi0rICAgIE1BTklGRVNUX1RPT0w9IjoiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCi0rICBmaQotK2Vsc2UKLSsgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQotKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0KgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KLStpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgotKyAgTUFOSUZFU1RfVE9PTD06Ci0rZmkKLSsKLSsKLSsKLSsKLSsKLSAKLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC02ODA3LDYgKzczMDQsOCBAQCBfTFRfRU9GCi0gICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1Ci0gICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQotICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKLSsgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQotKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1Ci0gICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCi0gaW50IG1haW4oKSB7IHJldHVybiAwO30KLSBfTFRfRU9GCi1AQCAtNzI2OSw3ICs3NzY4LDggQEAgZmkKLSBMSUJUT09MX0RFUFM9IiRsdG1haW4iCi0gCi0gIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KLS1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKLStMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCi0rTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgotIAotIAotIAotQEAgLTczNTgsNyArNzg1OCw3IEBAIGFpeDMqKQotIGVzYWMKLSAKLSAjIEdsb2JhbCB2YXJpYWJsZXM6Ci0tb2ZpbGU9bGlidG9vbAotK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAotIGNhbl9idWlsZF9zaGFyZWQ9eWVzCi0gCi0gIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtNzY1Niw4ICs4MTU2LDYgQEAgZmkKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KLSAKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLS0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAotICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC03ODIzLDYgKzgzMjEsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwotIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCi0gCTs7Ci0rICAgICAgbmFnZm9yKikKLSsJIyBOQUcgRm9ydHJhbiBjb21waWxlcgotKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCi0rCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJwotKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0rCTs7Ci0gICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQotICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKLSAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC03ODg1LDcgKzgzODksNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCi0rICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKLSAgICAgICAqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtNzk0MiwxMyArODQ0NiwxNyBAQCBjYXNlICRob3N0X29zIGluCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCi0gICAgIDs7Ci0gZXNhYwotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQotLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotLQotLQotLQotLQotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0rbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC04MDA5LDYgKzg1MTcsMTEgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC04MzU5LDcgKzg4NzIsOCBAQCBfTFRfRU9GCi0gICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KLSAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCi0gCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC04NDU4LDEyICs4OTcyLDEyIEBAIF9MVF9FT0YKLSAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwotLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCi0gCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSsJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotIAkgIGZpCi0gCSAgOzsKLSAJZXNhYwotQEAgLTg0NzcsOCArODk5MSw4IEBAIF9MVF9FT0YKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGZpCi0gICAgICAgOzsKLSAKLUBAIC04NDk2LDggKzkwMTAsOCBAQCBfTFRfRU9GCi0gCi0gX0xUX0VPRgotICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtODU0Myw4ICs5MDU3LDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTg2NzQsNyArOTE4OCwxMyBAQCBfTFRfRU9GCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KLSsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgotICAgYXNfZm5fZXJyb3IgJD8gIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1Ci0gZmkKLSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci1AQCAtODY5MCwyMiArOTIxMCwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtODcxNyw3ICs5MjQ0LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAllbHNlCi0gCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KLSsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgotICAgYXNfZm5fZXJyb3IgJD8gIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1Ci0gZmkKLSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci1AQCAtODczMywyMiArOTI2NiwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTg3OTMsMjAgKzkzMzMsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0gICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLS0gICAgICBsaWJleHQ9bGliCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0tICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0tICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0tICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLS0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0tICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcwotKwlmaWxlX2xpc3Rfc3BlYz0nQCcKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwotKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICopCi0rCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgOzsKLSsJICBlc2FjfgotKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgZmknCi0rCTs7Ci0rICAgICAgKikKLSsJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0rCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJOzsKLSsgICAgICBlc2FjCi0gICAgICAgOzsKLSAKLSAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC04ODY3LDcgKzk0NTAsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLUBAIC04ODc1LDcgKzk0NTgsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDkqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZmkKLUBAIC04ODkxLDcgKzk0NzQsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDEwKikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgIGZpCi1AQCAtODkxNSwxMCArOTQ5OCwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJKikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAllc2FjCi0gICAgICAgZWxzZQotQEAgLTg5OTcsMjYgKzk1ODAsMzkgQEAgZmkKLSAKLSAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKLSAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAotIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgotLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLS0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLS0gICAgICAgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KLSsJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KLSsJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0rCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLSsJICAgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgotICAgYXNfZm5fZXJyb3IgJD8gIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1Ci0gZmkKLSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotLWludCBmb28odm9pZCkge30KLStpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9Ci0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotLQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCi0rZWxzZQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSsgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KLSsJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgotKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlmaQotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtOTEwMSw3ICs5Njk3LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgIGVsc2UKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtOTEyMCw5ICs5NzE2LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCXdsYXJjPScke3dsfScKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotICAgICAgIGVsc2UKLSAJY2FzZSBgJENDIC1WIDI+JjFgIGluCi0gCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTk2OTgsOCArMTAyOTQsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtOTczMiwxMyArMTAzMjksNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTk4MzAsNyArMTA0ODUsNyBAQCBoYWlrdSopCi0gICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKLSAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLS0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCi0rICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKLSAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgIDs7Ci0gCi1AQCAtMTA2NDQsNyArMTEyOTksNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMDY0NyAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTA2ODgsMTAgKzExMzQzLDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTA3NTAsNyArMTE0MDUsNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMDc1MyAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTA3OTQsMTAgKzExNDQ5LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTIyNjcsMTMgKzEyOTIyLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTIyODgsMTQgKzEyOTUwLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEyMzI4LDEyICsxMjk5MywxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQotIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMjM4OCw4ICsxMzA1MywxMyBAQCByZWxvYWRfZmxhZyBcCi0gT0JKRFVNUCBcCi0gZGVwbGlic19jaGVja19tZXRob2QgXAotIGZpbGVfbWFnaWNfY21kIFwKLStmaWxlX21hZ2ljX2dsb2IgXAotK3dhbnRfbm9jYXNlZ2xvYiBcCi0rRExMVE9PTCBcCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAotIEFSIFwKLSBBUl9GTEFHUyBcCi0rYXJjaGl2ZXJfbGlzdF9zcGVjIFwKLSBTVFJJUCBcCi0gUkFOTElCIFwKLSBDQyBcCi1AQCAtMTIzOTksMTIgKzEzMDY5LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCi0rbm1fZmlsZV9saXN0X3NwZWMgXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCi0rbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKLSBuZWVkX2xvY2tzIFwKLStNQU5JRkVTVF9UT09MIFwKLSBEU1lNVVRJTCBcCi0gTk1FRElUIFwKLSBMSVBPIFwKLUBAIC0xMjQyMCw3ICsxMzA5Miw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKLS1maXhfc3JjZmlsZV9wYXRoIFwKLSBleGNsdWRlX2V4cHN5bXMgXAotIGluY2x1ZGVfZXhwc3ltcyBcCi0gZmlsZV9saXN0X3NwZWMgXAotQEAgLTEyNDU2LDYgKzEzMTI3LDcgQEAgbW9kdWxlX2NtZHMgXAotIG1vZHVsZV9leHBzeW1fY21kcyBcCi0gZXhwb3J0X3N5bWJvbHNfY21kcyBcCi0gcHJlbGlua19jbWRzIFwKLStwb3N0bGlua19jbWRzIFwKLSBwb3N0aW5zdGFsbF9jbWRzIFwKLSBwb3N0dW5pbnN0YWxsX2NtZHMgXAotIGZpbmlzaF9jbWRzIFwKLUBAIC0xMzA1NCw3ICsxMzcyNiw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKLSAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTMxNTcsMTkgKzEzODMwLDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAotICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KLSBOTDJTUD0kbHRfbHRfTkwyU1AKLSAKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotKwotKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotKwotICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCi0gT0JKRFVNUD0kbHRfT0JKRFVNUAotIAotICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gCi0tIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KLSsjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCi0gCi0rIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLStmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgotKwotKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCi0rCi0rIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KLStETExUT09MPSRsdF9ETExUT09MCi0rCi0rIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKwotICMgVGhlIGFyY2hpdmVyLgotIEFSPSRsdF9BUgotKwotKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCi0gQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCi0gCi0rIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKLSsKLSAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgotIFNUUklQPSRsdF9TVFJJUAotIAotQEAgLTEzMTk5LDYgKzEzODk1LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCi0gIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KLSBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKLSAKLSsjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KLStubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKLSsKLSsjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgotK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKLSsKLSAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KLSBvYmpkaXI9JG9iamRpcgotIAotQEAgLTEzMjA4LDYgKzEzOTEwLDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKLSAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwotIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKLSAKLSsjIE1hbmlmZXN0IHRvb2wuCi0rTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAotKwotICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KLSBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKLSAKLUBAIC0xMzMyMiwxMiArMTQwMjcsMTIgQEAgd2l0aF9nY2M9JEdDQwotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0tCi0gIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCi0gcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCi0gCi1AQCAtMTM0MTQsOSArMTQxMTksNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0tCi0gIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKLSAKLUBAIC0xMzQzMiw2ICsxNDEzNCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwotIAotKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KLStwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCi0gCi1AQCAtMTM0NjQsMjEwICsxNDE2OSwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBjYXNlICR4c2lfc2hlbGwgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotLSMgY2FsbDoKLS0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLS0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLS1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotLX0KLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KLS0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLS19Ci0tCi0tX0xUX0VPRgotLWVzYWMKLS0KLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDErPVwkMiIKLS19Ci0tX0xUX0VPRgotLSAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDE9XCQkMVwkMiIKLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKLSsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCi0rZnVuY19kaXJuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCi0rZnVuY19iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAotK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCi0rZnVuY19zdHJpcG5hbWUgKClcCi0re1wKLStcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCi0rXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAotK2Z1bmNfbG8ybyAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKLStcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCi0rZnVuY194Zm9ybSAoKVwKLSt7XAotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCi0rZnVuY19hcml0aCAoKVwKLSt7XAotKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAotK2Z1bmNfbGVuICgpXAotK3tcCi0rICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLStmaQotKwotK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAotK2Z1bmNfYXBwZW5kICgpXAotK3tcCi0rICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKLSt7XAotK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCi0rXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZWxzZQotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0rCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KLStmaQotKwotKwotKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKLSAgIGNobW9kICt4ICIkb2ZpbGUiCi0gCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LVVzZS1saWJ0b29sLTIuNC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDctVXNlLWxpYnRvb2wtMi40LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ZGE2MmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LVVzZS1saWJ0b29sLTIuNC5wYXRjaApAQCAtMCwwICsxLDIxMjM0IEBACitGcm9tIGI4ZmFmZDhjZTZjNDdjOWE1NTFlZDc5NjE3NmQ4ODRhMzQ5MzAwODYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxNCBGZWIgMjAxNiAxNzowNDowNyArMDAwMAorU3ViamVjdDogW1BBVENIIDA3LzE1XSBVc2UgbGlidG9vbCAyLjQKKworZ2V0IGxpYnRvb2wgc3lzcm9vdCBzdXBwb3J0CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgYmZkL2NvbmZpZ3VyZSAgICAgIHwgMTMyMiArKysrKysrKysrKysrKystLS0tLQorIGJmZC9jb25maWd1cmUuYWMgICB8ICAgIDIgKy0KKyBiaW51dGlscy9jb25maWd1cmUgfCAxMzIwICsrKysrKysrKysrKysrKy0tLS0tCisgZ2FzL2NvbmZpZ3VyZSAgICAgIHwgMTMyMCArKysrKysrKysrKysrKystLS0tLQorIGdwcm9mL2NvbmZpZ3VyZSAgICB8IDEzMjAgKysrKysrKysrKysrKysrLS0tLS0KKyBsZC9jb25maWd1cmUgICAgICAgfCAxNjk1ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0KKyBsaWJjdGYvY29uZmlndXJlICAgfCAxMzE5ICsrKysrKysrKysrKysrKy0tLS0tCisgbGlidG9vbC5tNCAgICAgICAgIHwgMTA4MCArKysrKysrKysrKy0tLS0tCisgbHRtYWluLnNoICAgICAgICAgIHwgMjkyNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQorIGx0b3B0aW9ucy5tNCAgICAgICB8ICAgIDIgKy0KKyBsdHZlcnNpb24ubTQgICAgICAgfCAgIDEyICstCisgbHR+b2Jzb2xldGUubTQgICAgIHwgICAgMiArLQorIG9wY29kZXMvY29uZmlndXJlICB8IDEzMjAgKysrKysrKysrKysrKysrLS0tLS0KKyAxMyBmaWxlcyBjaGFuZ2VkLCA5OTM5IGluc2VydGlvbnMoKyksIDM3MDAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9iZmQvY29uZmlndXJlIGIvYmZkL2NvbmZpZ3VyZQoraW5kZXggYmM1NzZiNzg5NGEuLmNkMDM2NjM4MDgxIDEwMDc1NQorLS0tIGEvYmZkL2NvbmZpZ3VyZQorKysrIGIvYmZkL2NvbmZpZ3VyZQorQEAgLTcwNCw2ICs3MDQsOSBAQCBPVE9PTAorIExJUE8KKyBOTUVESVQKKyBEU1lNVVRJTAorK01BTklGRVNUX1RPT0wKKythY19jdF9BUgorK0RMTFRPT0wKKyBPQkpEVU1QCisgTE5fUworIE5NCitAQCAtODIyLDYgKzgyNSw3IEBAIGVuYWJsZV9zdGF0aWMKKyB3aXRoX3BpYworIGVuYWJsZV9mYXN0X2luc3RhbGwKKyB3aXRoX2dudV9sZAorK3dpdGhfbGlidG9vbF9zeXNyb290CisgZW5hYmxlX2xpYnRvb2xfbG9jaworIGVuYWJsZV9wbHVnaW5zCisgZW5hYmxlX2xhcmdlZmlsZQorQEAgLTE1MDQsNiArMTUwOCw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAgIC0td2l0aC1tbWFwICAgICAgICAgICAgIHRyeSB1c2luZyBtbWFwIGZvciBCRkQgaW5wdXQgZmlsZXMgaWYgYXZhaWxhYmxlCisgICAtLXdpdGgtc2VwYXJhdGUtZGVidWctZGlyPURJUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9vayBmb3IgZ2xvYmFsIHNlcGFyYXRlIGRlYnVnIGluZm8gaW4gRElSCitAQCAtNTY5Myw4ICs1Njk5LDggQEAgZXNhYworIAorIAorIAorLW1hY3JvX3ZlcnNpb249JzIuMi43YScKKy1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JworK21hY3JvX3ZlcnNpb249JzIuNCcKKyttYWNyb19yZXZpc2lvbj0nMS4zMjkzJworIAorIAorIAorQEAgLTU3MzQsNyArNTc0MCw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KKyAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KKy1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgICBFQ0hPPSdwcmludCAtciAtLScKKyBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorQEAgLTY0MjAsOCArNjQyNiw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CisgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKKyB4c2lfc2hlbGw9bm8KKyAoIF9sdF9kdW1teT0iYS9iL2MiCistICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorLSAgICAgID0gYyxhL2IsLCBcCisrICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorKyAgICAgID0gYyxhL2IsYi9jLCBcCisgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKKyAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICYmIHhzaV9zaGVsbD15ZXMKK0BAIC02NDcwLDYgKzY0NzYsODAgQEAgZXNhYworIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICotKi1jeWd3aW4qICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisrICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorK2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQorIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY0ODYsNiArNjU2NiwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorIGVzYWMKKyByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgY2FzZSAkaG9zdF9vcyBpbgorKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKysgICAgICByZWxvYWRfY21kcz1mYWxzZQorKyAgICBmaQorKyAgICA7OworICAgZGFyd2luKikKKyAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCitAQCAtNjY1NCw3ICs2NzM5LDggQEAgbWluZ3cqIHwgcHczMiopCisgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICAgZWxzZQorLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKysgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKKyAgIGZpCisgICA7OworQEAgLTY4MDgsNiArNjg5NCwyMSBAQCBlc2FjCisgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKKyAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KKysKKytmaWxlX21hZ2ljX2dsb2I9Cisrd2FudF9ub2Nhc2VnbG9iPW5vCisraWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKysgIGNhc2UgJGhvc3Rfb3MgaW4KKysgIG1pbmd3KiB8IHB3MzIqKQorKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisrICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworKyAgICBlbHNlCisrICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKKysgICAgZmkKKysgICAgOzsKKysgIGVzYWMKKytmaQorKworIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAorIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTY4MjEsMTEgKzY5MjIsMTY0IEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorIAorIAorIAorKworKworKworKworKworKworKworKworKworKworIAorIAorIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCisrICBhY19jdF9ETExUT09MPSRETExUT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgorKyAgICBETExUT09MPSJmYWxzZSIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKKysgIGZpCisrZWxzZQorKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCisrCisrY2FzZSAkaG9zdF9vcyBpbgorK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKKysgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKKysgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgorKyAgKi0taWRlbnRpZnktc3RyaWN0KikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCisrICAgIDs7CisrICAqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKKysgICAgOzsKKysgIGVzYWMKKysgIDs7CisrKikKKysgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgorKyAgOzsKKytlc2FjCisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKyt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCisrCisrCisrCisrCisrCisrCisrCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKysgIGRvCisrICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY4NDEsNyArNzA5NSw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKKysgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTY4NjEsMTEgKzcxMTUsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorIAorKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCisrICBkb25lCisgZmkKKy1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KKytpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCisgICBhY19jdF9BUj0kQVIKKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKytkbworKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjg4MSw3ICs3MTM5LDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKKysgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTY5MDAsNiArNzE1OCwxMCBAQCBlbHNlCisgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorKworKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhaworK2RvbmUKKysKKyAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgorICAgICBBUj0iZmFsc2UiCisgICBlbHNlCitAQCAtNjkxMSwxNiArNzE3Myw3MiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKKyBlc2FjCisgICAgIEFSPSRhY19jdF9BUgorICAgZmkKKy1lbHNlCistICBBUj0iJGFjX2N2X3Byb2dfQVIiCisgZmkKKyAKKy10ZXN0IC16ICIkQVIiICYmIEFSPWFyCistdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKys6ICR7QVI9YXJ9CisrOiAke0FSX0ZMQUdTPWNydX0KKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KKysgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLworKworK2ludAorK21haW4gKCkKKyt7CisgCisrICA7CisrICByZXR1cm4gMDsKKyt9CisrX0FDRU9GCisraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CisrICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCisrICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KKysJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KKysJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCisrCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgorKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKKysgICAgICAgIGZpCisrICAgICAgZmkKKysgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKKyAKKytmaQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorIAorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQorIAorK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KKytlbHNlCisrICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKKytmaQorIAorIAorIAorQEAgLTcyNjIsOCArNzU4MCw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtNzI5OSw2ICs3NjE3LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTczNDAsNiArNzY1OSwxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC03MzUxLDcgKzc2ODIsNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICAgICAgICphZGRyZXNzOworIH0KK0BAIC03Mzc3LDggKzc3MDgsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKKyAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKK0BAIC03Mzg4LDggKzc3MTksOCBAQCBfTFRfRU9GCisgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKyAJICAgIHBpcGVfd29ya3M9eWVzCisgCSAgZmkKKy0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisrCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCisgCWVsc2UKKyAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKKyAJZmkKK0BAIC03NDI2LDYgKzc3NTcsMTYgQEAgZWxzZQorICRhc19lY2hvICJvayIgPiY2OyB9CisgZmkKKyAKKysjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KKytpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZmkKKysKKysKKysKKysKKyAKKyAKKyAKK0BAIC03NDQyLDYgKzc3ODMsNDUgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OworK2Vsc2UKKysgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCisrZmkKKysKKysKKytsdF9zeXNyb290PQorK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKKysgeWVzKQorKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisrICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorKyAgIGZpCisrICAgOzsgIygKKysgLyopCisrICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisrICAgOzsgIygKKysgbm98JycpCisrICAgOzsgIygKKysgKikKKysgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQorKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9CisrICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgOzsKKytlc2FjCisrCisrIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CisrJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKyAKKyAKKyAKK0BAIC03NjUzLDYgKzgwMzMsMTIzIEBAIGVzYWMKKyAKKyBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKKyAKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IG10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KKysgICAgTUFOSUZFU1RfVE9PTD0iOiIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKKysgIGZpCisrZWxzZQorKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisrICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1CisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mNQorKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisrICBmaQorKyAgcm0gLWYgY29uZnRlc3QqCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQorK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisrICBNQU5JRkVTVF9UT09MPToKKytmaQorKworKworKworKworKworIAorICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICByaGFwc29keSogfCBkYXJ3aW4qKQorQEAgLTgyMTYsNiArODcxMyw4IEBAIF9MVF9FT0YKKyAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKKyAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CisgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQorKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1CisrICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKKyAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKKyBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorIF9MVF9FT0YKK0BAIC04MzgwLDcgKzg4NzksOCBAQCBmaQorIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKKyAKKyAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJworK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKKytMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCisgCisgCisgCitAQCAtODQ2OSw3ICs4OTY5LDcgQEAgYWl4MyopCisgZXNhYworIAorICMgR2xvYmFsIHZhcmlhYmxlczoKKy1vZmlsZT1saWJ0b29sCisrb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCisgY2FuX2J1aWxkX3NoYXJlZD15ZXMKKyAKKyAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKK0BAIC04NzY3LDggKzkyNjcsNiBAQCBmaQorIGx0X3Byb2dfY29tcGlsZXJfcGljPQorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQorIAorLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworQEAgLTg5MzQsNiArOTQzMiwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCisgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKKyAJOzsKKysgICAgICBuYWdmb3IqKQorKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisrCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKKysJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCisrCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKysJOzsKKyAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAorIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQorQEAgLTg5OTYsNyArOTUwMCw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJworICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKyAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKysgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OworICAgICAgICopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKK0BAIC05MDUzLDEzICs5NTU3LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKKyAgICAgOzsKKyBlc2FjCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CistJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CistCistCistCistCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKytsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKKyAKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorQEAgLTkxMjAsNiArOTYyOCwxMSBAQCBmaQorIAorIAorIAorKworKworKworKworKworICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisgIworQEAgLTk0NzAsNyArOTk4Myw4IEBAIF9MVF9FT0YKKyAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubworICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCistICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKKyAKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworQEAgLTk1NjksMTIgKzEwMDgzLDEyIEBAIF9MVF9FT0YKKyAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQorIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJworLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKyAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCisgCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKysJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworIAkgIGZpCisgCSAgOzsKKyAJZXNhYworQEAgLTk1ODgsOCArMTAxMDIsOCBAQCBfTFRfRU9GCisgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKyAJd2xhcmM9CisgICAgICAgZWxzZQorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtOTYwNyw4ICsxMDEyMSw4IEBAIF9MVF9FT0YKKyAKKyBfTFRfRU9GCisgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05NjU0LDggKzEwMTY4LDggQEAgX0xUX0VPRgorIAorICAgICAqKQorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTk3ODUsNyArMTAyOTksMTMgQEAgX0xUX0VPRgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTc5OCwyMiArMTAzMTgsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTk4MjUsNyArMTAzNTIsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCWVsc2UKKyAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTk4MzgsMjIgKzEwMzcxLDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtOTg5OCwyMCArMTA0MzgsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKy0gICAgICBsaWJleHQ9bGliCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCistICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCistICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC05OTcyLDcgKzEwNTU1LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCitAQCAtOTk4MCw3ICsxMDU2Myw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4OSopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBmaQorQEAgLTk5OTYsNyArMTA1NzksNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDEwKikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgIGZpCitAQCAtMTAwMjAsMTAgKzEwNjAzLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJaWE2NCopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWVzYWMKKyAgICAgICBlbHNlCitAQCAtMTAxMDIsMjMgKzEwNjg1LDM2IEBAIGZpCisgCisgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CisgCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKKyAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KKy0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCistICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisrCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisrCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCistaW50IGZvbyh2b2lkKSB7fQorK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CistICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCistCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKKytlbHNlCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubworIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQorKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCisrICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWZpCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKK0BAIC0xMDIwMyw3ICsxMDc5OSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICBlbHNlCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworQEAgLTEwMjIyLDkgKzEwODE4LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTEwODAwLDggKzExMzk2LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTEwODM0LDEzICsxMTQzMSw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgIDs7CisgICAgIGVzYWMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKysgICAgOzsKKysKKysgICosY2wqKQorKyAgICAjIE5hdGl2ZSBNU1ZDCisrICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisrICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKysgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisrCisrICAgIGNhc2UgJGJ1aWxkX29zIGluCisrICAgIG1pbmd3KikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisrICAgICAgbHRfc2F2ZV9pZnM9JElGUworKyAgICAgIElGUz0nOycKKysgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisrICAgICAgZG8KKysgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisrICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKysgICAgICBkb25lCisrICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KKysgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICBmaQorKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKysgICAgICA7OworKyAgICBlc2FjCisrCisrICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKysgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisrICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisrICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisrICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisrICAgICAgICRSTSBcJGRscGF0aCcKKysgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCisgICAgIDs7CisgCisgICAqKQorKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgIDs7CisgICBlc2FjCistICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCisgICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgIDs7CitAQCAtMTA5MzIsNyArMTE1ODcsNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMTE3MjgsNyArMTIzODMsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTczMSAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTE3NzIsMTAgKzEyNDI3LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTE4MzQsNyArMTI0ODksNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTgzNyAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTE4NzgsMTAgKzEyNTMzLDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTQ1NTQsNyArMTUyMDksNyBAQCBTSEFSRURfTERGTEFHUz0KKyBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSAieWVzIjsgdGhlbgorICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKKyAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgorLSAgICBTSEFSRURfTElCQUREPSItTGBwd2RgLy4uL2xpYmliZXJ0eS9waWMgLWxpYmVydHkiCisrICAgIFNIQVJFRF9MSUJBREQ9ImBwd2RgLy4uL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEiCisgICBmaQorIAorICAgY2FzZSAiJHtob3N0fSIgaW4KK0BAIC0xNzE3NiwxMyArMTc4MzEsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKythcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNzE5NywxNCArMTc4NTksMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTcyMzcsMTIgKzE3OTAyLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCisgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE3Mjk3LDggKzE3OTYyLDEzIEBAIHJlbG9hZF9mbGFnIFwKKyBPQkpEVU1QIFwKKyBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCisgZmlsZV9tYWdpY19jbWQgXAorK2ZpbGVfbWFnaWNfZ2xvYiBcCisrd2FudF9ub2Nhc2VnbG9iIFwKKytETExUT09MIFwKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCisgQVIgXAorIEFSX0ZMQUdTIFwKKythcmNoaXZlcl9saXN0X3NwZWMgXAorIFNUUklQIFwKKyBSQU5MSUIgXAorIENDIFwKK0BAIC0xNzMwOCwxMiArMTc5NzgsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKKytubV9maWxlX2xpc3Rfc3BlYyBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAorLWx0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAorIG5lZWRfbG9ja3MgXAorK01BTklGRVNUX1RPT0wgXAorIERTWU1VVElMIFwKKyBOTUVESVQgXAorIExJUE8gXAorQEAgLTE3MzI5LDcgKzE4MDAxLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAorLWZpeF9zcmNmaWxlX3BhdGggXAorIGV4Y2x1ZGVfZXhwc3ltcyBcCisgaW5jbHVkZV9leHBzeW1zIFwKKyBmaWxlX2xpc3Rfc3BlYyBcCitAQCAtMTczNjUsNiArMTgwMzYsNyBAQCBtb2R1bGVfY21kcyBcCisgbW9kdWxlX2V4cHN5bV9jbWRzIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzIFwKKyBwcmVsaW5rX2NtZHMgXAorK3Bvc3RsaW5rX2NtZHMgXAorIHBvc3RpbnN0YWxsX2NtZHMgXAorIHBvc3R1bmluc3RhbGxfY21kcyBcCisgZmluaXNoX2NtZHMgXAorQEAgLTE4MTUzLDcgKzE4ODI1LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0xODI1NiwxOSArMTg5MjksNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCisgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgorIE5MMlNQPSRsdF9sdF9OTDJTUAorIAorKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisrCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrCisgIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KKyBPQkpEVU1QPSRsdF9PQkpEVU1QCisgCisgIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKKyAKKy0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgorKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKKyAKKysjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCisrCisrIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKKysKKysjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgorK0RMTFRPT0w9JGx0X0RMTFRPT0wKKysKKysjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrCisgIyBUaGUgYXJjaGl2ZXIuCisgQVI9JGx0X0FSCisrCisrIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KKyBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKKyAKKysjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KKythcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYworKworICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCisgU1RSSVA9JGx0X1NUUklQCisgCitAQCAtMTgyOTgsNiArMTg5OTQsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKKyAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgorIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAorIAorKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgorK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYworKworKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCisrbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAorKworICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgorIG9iamRpcj0kb2JqZGlyCisgCitAQCAtMTgzMDcsNiArMTkwMDksOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CisgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcworIAorKyMgTWFuaWZlc3QgdG9vbC4KKytNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCisrCisgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgorIERTWU1VVElMPSRsdF9EU1lNVVRJTAorIAorQEAgLTE4NDIxLDEyICsxOTEyNiwxMiBAQCB3aXRoX2djYz0kR0NDCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKKyAKKy0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCistd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKy0KKyAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KKyBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKysKKyAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCisgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKKyAKK0BAIC0xODUxMyw5ICsxOTIxOCw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCisgCistIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKKy0KKyAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scworIAorQEAgLTE4NTMxLDYgKzE5MjMzLDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKKyAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgorIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCisgCisrIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKKyAKK0BAIC0xODU2MywyMTAgKzE5MjY4LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIGNhc2UgJHhzaV9zaGVsbCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCistIyBjYWxsOgorLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCistIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0CistIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCistIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bworLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCistICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9CistfQorLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CistICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQorLQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYworLX0KKy0KKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCistbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJworLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCistICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorLX0KKy0KKy1fTFRfRU9GCistZXNhYworLQorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMSs9XCQyIgorLX0KKy1fTFRfRU9GCistICAgIDs7CistICAqKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMT1cJCQxXCQyIgorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICBlc2FjCistCistCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorKworKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKKytmdW5jX2Rpcm5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKKytmdW5jX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCisrZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKKytmdW5jX3N0cmlwbmFtZSAoKVwKKyt7XAorK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKKytcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCisrZnVuY19zcGxpdF9sb25nX29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCisrZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCisrZnVuY19sbzJvICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAorK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKKytmdW5jX3hmb3JtICgpXAorK3tcCisrICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKKytmdW5jX2FyaXRoICgpXAorK3tcCisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCisrZnVuY19sZW4gKClcCisre1wKKysgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworK2ZpCisrCisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCisrZnVuY19hcHBlbmQgKClcCisre1wKKysgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCisrZnVuY19hcHBlbmRfcXVvdGVkICgpXAorK3tcCisrXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKKytcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytlbHNlCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZmkKKysKKytpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQorK2ZpCisrCisrCisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyAKK2RpZmYgLS1naXQgYS9iZmQvY29uZmlndXJlLmFjIGIvYmZkL2NvbmZpZ3VyZS5hYworaW5kZXggYzViZmJkNWQxMjkuLmU2NjZiMWNjMTA2IDEwMDY0NAorLS0tIGEvYmZkL2NvbmZpZ3VyZS5hYworKysrIGIvYmZkL2NvbmZpZ3VyZS5hYworQEAgLTI5MCw3ICsyOTAsNyBAQCBjaGFuZ2VxdW90ZSgsKWRubAorICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKKyBjaGFuZ2VxdW90ZShbLF0pZG5sCisgICBpZiB0ZXN0IC1uICIkeCI7IHRoZW4KKy0gICAgU0hBUkVEX0xJQkFERD0iLUxgcHdkYC8uLi9saWJpYmVydHkvcGljIC1saWJlcnR5IgorKyAgICBTSEFSRURfTElCQUREPSJgcHdkYC8uLi9saWJpYmVydHkvcGljL2xpYmliZXJ0eS5hIgorICAgZmkKKyAKKyAgIGNhc2UgIiR7aG9zdH0iIGluCitkaWZmIC0tZ2l0IGEvYmludXRpbHMvY29uZmlndXJlIGIvYmludXRpbHMvY29uZmlndXJlCitpbmRleCBhOGRmZDRiZDY4Yy4uODIzMTY0OTY5NTMgMTAwNzU1CistLS0gYS9iaW51dGlscy9jb25maWd1cmUKKysrKyBiL2JpbnV0aWxzL2NvbmZpZ3VyZQorQEAgLTY5MCw4ICs2OTAsMTEgQEAgT1RPT0wKKyBMSVBPCisgTk1FRElUCisgRFNZTVVUSUwKKytNQU5JRkVTVF9UT09MCisgUkFOTElCCisrYWNfY3RfQVIKKyBBUgorK0RMTFRPT0wKKyBPQkpEVU1QCisgTE5fUworIE5NCitAQCAtODA4LDYgKzgxMSw3IEBAIGVuYWJsZV9zdGF0aWMKKyB3aXRoX3BpYworIGVuYWJsZV9mYXN0X2luc3RhbGwKKyB3aXRoX2dudV9sZAorK3dpdGhfbGlidG9vbF9zeXNyb290CisgZW5hYmxlX2xpYnRvb2xfbG9jaworIGVuYWJsZV9wbHVnaW5zCisgZW5hYmxlX2xhcmdlZmlsZQorQEAgLTE0ODUsNiArMTQ4OSw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAgIC0td2l0aC1kZWJ1Z2luZm9kICAgICAgIEVuYWJsZSBkZWJ1Z2luZm8gbG9va3VwcyB3aXRoIGRlYnVnaW5mb2QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChhdXRvL3llcy9ubykKKyAgIC0td2l0aC1zeXN0ZW0temxpYiAgICAgIHVzZSBpbnN0YWxsZWQgbGliegorQEAgLTU0NjEsOCArNTQ2Nyw4IEBAIGVzYWMKKyAKKyAKKyAKKy1tYWNyb192ZXJzaW9uPScyLjIuN2EnCistbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKKyttYWNyb192ZXJzaW9uPScyLjQnCisrbWFjcm9fcmV2aXNpb249JzEuMzI5MycKKyAKKyAKKyAKK0BAIC01NTAyLDcgKzU1MDgsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CisgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCistaWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKytpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICAgRUNITz0ncHJpbnQgLXIgLS0nCisgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KK0BAIC02MTg4LDggKzYxOTQsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OworICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCisgeHNpX3NoZWxsPW5vCisgKCBfbHRfZHVtbXk9ImEvYi9jIgorLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKy0gICAgICA9IGMsYS9iLCwgXAorKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKysgICAgICA9IGMsYS9iLGIvYywgXAorICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCisgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCisgICAmJiB4c2lfc2hlbGw9eWVzCitAQCAtNjIzOCw2ICs2MjQ0LDgwIEBAIGVzYWMKKyAKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqLSotY3lnd2luKiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KKytsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKytjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KKyBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02MjU0LDYgKzYzMzQsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBlc2FjCisgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworIGNhc2UgJGhvc3Rfb3MgaW4KKysgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisrICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKysgICAgZmkKKysgICAgOzsKKyAgIGRhcndpbiopCisgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworQEAgLTY0MjIsNyArNjUwNyw4IEBAIG1pbmd3KiB8IHB3MzIqKQorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKKyAgIGVsc2UKKy0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisrICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKysgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCisgICBmaQorICAgOzsKK0BAIC02NTc2LDYgKzY2NjIsMjEgQEAgZXNhYworIGZpCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CisgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CisrCisrZmlsZV9tYWdpY19nbG9iPQorK3dhbnRfbm9jYXNlZ2xvYj1ubworK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisrICBjYXNlICRob3N0X29zIGluCisrICBtaW5ndyogfCBwdzMyKikKKysgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKKysgICAgZWxzZQorKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCisrICAgIGZpCisrICAgIDs7CisrICBlc2FjCisrZmkKKysKKyBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKKyB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KK0BAIC02NTkxLDkgKzY2OTIsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorIAorIAorIAorKworKworKworKworKworKworKworKworKworKworK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCisrICBhY19jdF9ETExUT09MPSRETExUT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgorKyAgICBETExUT09MPSJmYWxzZSIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKKysgIGZpCisrZWxzZQorKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCisrCisrY2FzZSAkaG9zdF9vcyBpbgorK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKKysgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKKysgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgorKyAgKi0taWRlbnRpZnktc3RyaWN0KikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCisrICAgIDs7CisrICAqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKKysgICAgOzsKKysgIGVzYWMKKysgIDs7CisrKikKKysgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgorKyAgOzsKKytlc2FjCisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKyt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCisrCisrCisrCisrCisrCisrCisrCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKysgIGRvCisrICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY2MDksNyArNjg2Myw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKKysgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTY2MjksMTEgKzY4ODMsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorIAorKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCisrICBkb25lCisgZmkKKy1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KKytpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCisgICBhY19jdF9BUj0kQVIKKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKytkbworKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjY0OSw3ICs2OTA3LDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKKysgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTY2NjgsNiArNjkyNiwxMCBAQCBlbHNlCisgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorKworKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhaworK2RvbmUKKysKKyAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgorICAgICBBUj0iZmFsc2UiCisgICBlbHNlCitAQCAtNjY3OSwxMiArNjk0MSwxMCBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKKyBlc2FjCisgICAgIEFSPSRhY19jdF9BUgorICAgZmkKKy1lbHNlCistICBBUj0iJGFjX2N2X3Byb2dfQVIiCisgZmkKKyAKKy10ZXN0IC16ICIkQVIiICYmIEFSPWFyCistdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKys6ICR7QVI9YXJ9CisrOiAke0FSX0ZMQUdTPWNydX0KKyAKKyAKKyAKK0BAIC02Njk2LDYgKzY5NTYsNjQgQEAgdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKyAKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KKysgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLworKworK2ludAorK21haW4gKCkKKyt7CisrCisrICA7CisrICByZXR1cm4gMDsKKyt9CisrX0FDRU9GCisraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CisrICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCisrICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KKysJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KKysJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCisrCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgorKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKKysgICAgICAgIGZpCisrICAgICAgZmkKKysgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKKysKKytmaQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQorKworK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KKytlbHNlCisrICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKKytmaQorKworKworKworKworKworKworKworIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1zdHJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisgc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9c3RyaXA7IGFjX3dvcmQ9JDIKK0BAIC03MDMwLDggKzczNDgsOCBAQCBlc2FjCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKKyAKKyAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisgCisgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCisgb3B0X2NyPQorQEAgLTcwNjcsNiArNzM4NSw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KKyAgIGVsc2UKKyAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKKyAgIGZpCisrICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCisgCisgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KKyAgIHBpcGVfd29ya3M9bm8KK0BAIC03MTA4LDYgKzc0MjcsMTggQEAgX0xUX0VPRgorICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisrLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisrI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKysvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKysgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisrLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxzZQorKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CisrI2VuZGlmCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCitAQCAtNzExOSw3ICs3NDUwLDcgQEAgX0xUX0VPRgorIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAorIAorIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KKy1jb25zdCBzdHJ1Y3QgeworK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7CisgICBjb25zdCBjaGFyICpuYW1lOworICAgdm9pZCAgICAgICAqYWRkcmVzczsKKyB9CitAQCAtNzE0NSw4ICs3NDc2LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKKyBfTFRfRU9GCisgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KKyAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKKy0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgorLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKKyAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCisgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1CitAQCAtNzE1Niw4ICs3NDg3LDggQEAgX0xUX0VPRgorICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCisgCSAgICBwaXBlX3dvcmtzPXllcworIAkgIGZpCistCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKKy0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKysJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUworKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUworIAllbHNlCisgCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1CisgCWZpCitAQCAtNzE5NCw2ICs3NTI1LDIxIEBAIGVsc2UKKyAkYXNfZWNobyAib2siID4mNjsgfQorIGZpCisgCisrIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCisraWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2ZpCisrCisrCisrCisrCisrCisrCisrCisrCisrCisgCisgCisgCitAQCAtNzIxMCw2ICs3NTU2LDQwIEBAIGZpCisgCisgCisgCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KKysKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKKytlbHNlCisrICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubworK2ZpCisrCisrCisrbHRfc3lzcm9vdD0KKytjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCisrIHllcykKKysgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKKysgICBmaQorKyAgIDs7ICMoCisrIC8qKQorKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorKyAgIDs7ICMoCisrIG5vfCcnKQorKyAgIDs7ICMoCisrICopCisrICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKKyskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQorKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQorKyAgIDs7CisrZXNhYworKworKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQorKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9CisgCisgCisgCitAQCAtNzQyMSw2ICs3ODAxLDEyMyBAQCBlc2FjCisgCisgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCisgCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCisrICAgIE1BTklGRVNUX1RPT0w9IjoiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCisrICBmaQorK2Vsc2UKKysgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubworKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQorKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAorKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKysgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKysgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworKyAgZmkKKysgIHJtIC1mIGNvbmZ0ZXN0KgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KKytpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgorKyAgTUFOSUZFU1RfVE9PTD06CisrZmkKKysKKysKKysKKysKKysKKyAKKyAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKK0BAIC03OTg0LDYgKzg0ODEsOCBAQCBfTFRfRU9GCisgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1CisgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQorICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKKysgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQorKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1CisgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCisgaW50IG1haW4oKSB7IHJldHVybiAwO30KKyBfTFRfRU9GCitAQCAtODE3OSw3ICs4Njc4LDggQEAgZmkKKyBMSUJUT09MX0RFUFM9IiRsdG1haW4iCisgCisgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KKy1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKKytMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCisrTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgorIAorIAorIAorQEAgLTgyNjgsNyArODc2OCw3IEBAIGFpeDMqKQorIGVzYWMKKyAKKyAjIEdsb2JhbCB2YXJpYWJsZXM6Cistb2ZpbGU9bGlidG9vbAorK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAorIGNhbl9idWlsZF9zaGFyZWQ9eWVzCisgCisgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCitAQCAtODU2Niw4ICs5MDY2LDYgQEAgZmkKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KKyAKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKy0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAorICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKK0BAIC04NzMzLDYgKzkyMzEsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJworIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCisgCTs7CisrICAgICAgbmFnZm9yKikKKysJIyBOQUcgRm9ydHJhbiBjb21waWxlcgorKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCisrCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJworKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisrCTs7CisgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKKyAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKK0BAIC04Nzk1LDcgKzkyOTksNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisrICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKKyAgICAgICAqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7CitAQCAtODg1MiwxMyArOTM1NiwxNyBAQCBjYXNlICRob3N0X29zIGluCisgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCisgICAgIDs7CisgZXNhYworLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQorLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorLQorLQorLQorLQorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CisrbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCisgCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KK0BAIC04OTE5LDYgKzk0MjcsMTEgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorICMKK0BAIC05MjY5LDcgKzk3ODIsOCBAQCBfTFRfRU9GCisgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKyAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KKyAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCisgCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKK0BAIC05MzY4LDEyICs5ODgyLDEyIEBAIF9MVF9FT0YKKyAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQorIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJworLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKyAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCisgCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKysJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworIAkgIGZpCisgCSAgOzsKKyAJZXNhYworQEAgLTkzODcsOCArOTkwMSw4IEBAIF9MVF9FT0YKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJworIAl3bGFyYz0KKyAgICAgICBlbHNlCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGZpCisgICAgICAgOzsKKyAKK0BAIC05NDA2LDggKzk5MjAsOCBAQCBfTFRfRU9GCisgCisgX0xUX0VPRgorICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTQ1Myw4ICs5OTY3LDggQEAgX0xUX0VPRgorIAorICAgICAqKQorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTk1ODQsNyArMTAwOTgsMTMgQEAgX0xUX0VPRgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTU5NywyMiArMTAxMTcsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTk2MjQsNyArMTAxNTEsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCWVsc2UKKyAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTk2MzcsMjIgKzEwMTcwLDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtOTY5NywyMCArMTAyMzcsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKy0gICAgICBsaWJleHQ9bGliCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCistICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCistICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC05NzcxLDcgKzEwMzU0LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCitAQCAtOTc3OSw3ICsxMDM2Miw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4OSopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBmaQorQEAgLTk3OTUsNyArMTAzNzgsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDEwKikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgIGZpCitAQCAtOTgxOSwxMCArMTA0MDIsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAlpYTY0KikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCSopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJZXNhYworICAgICAgIGVsc2UKK0BAIC05OTAxLDIzICsxMDQ4NCwzNiBAQCBmaQorIAorICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAorIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisgCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCistICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKysJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworLWludCBmb28odm9pZCkge30KKytpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworLQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCisrZWxzZQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKysgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KKysJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlmaQorICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCitAQCAtMTAwMDIsNyArMTA1OTgsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICAgZWxzZQorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKK0BAIC0xMDAyMSw5ICsxMDYxNyw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAl3bGFyYz0nJHt3bH0nCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICBlbHNlCisgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgorIAkqIkNvbXBpbGVycyA1LjAiKikKK0BAIC0xMDU5OSw4ICsxMTE5NSw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgIG5lZWRfdmVyc2lvbj1ubworICAgbmVlZF9saWJfcHJlZml4PW5vCisgCistICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KKy0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisrICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCisrICB5ZXMsKikKKysgICAgIyBnY2MKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKKyAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KK0BAIC0xMDYzMywxMyArMTEyMzAsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgICA7OworICAgICBlc2FjCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisrICAgIDs7CisrCisrICAqLGNsKikKKysgICAgIyBOYXRpdmUgTVNWQworKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKysgICAgICA7OworKyAgICBjeWd3aW4qKQorKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKysgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKysgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgOzsKKysgICAgKikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisrICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCisrICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKysgICAgICBlbHNlCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgZmkKKysgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKysgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisrICAgICAgOzsKKysgICAgZXNhYworKworKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisrICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKysgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorKyAgICAgICAkUk0gXCRkbHBhdGgnCisrICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJworICAgICA7OworIAorICAgKikKKysgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTEwNzMxLDcgKzExMzg2LDcgQEAgaGFpa3UqKQorICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCistICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJworKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCisgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICA7OworIAorQEAgLTExNTI3LDcgKzEyMTgyLDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTE1MzAgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExNTcxLDEwICsxMjIyNiwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTExNjMzLDcgKzEyMjg4LDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTE2MzYgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExNjc3LDEwICsxMjMzMiwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTE2MDI0LDEzICsxNjY3OSwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE2MDQ1LDE0ICsxNjcwNywxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNjA4NSwxMiArMTY3NTAsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKKyBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTYxNDUsOCArMTY4MTAsMTMgQEAgcmVsb2FkX2ZsYWcgXAorIE9CSkRVTVAgXAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKKyBmaWxlX21hZ2ljX2NtZCBcCisrZmlsZV9tYWdpY19nbG9iIFwKKyt3YW50X25vY2FzZWdsb2IgXAorK0RMTFRPT0wgXAorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKKyBBUiBcCisgQVJfRkxBR1MgXAorK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCisgU1RSSVAgXAorIFJBTkxJQiBcCisgQ0MgXAorQEAgLTE2MTU2LDEyICsxNjgyNiwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAorK25tX2ZpbGVfbGlzdF9zcGVjIFwKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCistbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9waWMgXAorK2x0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCisgbmVlZF9sb2NrcyBcCisrTUFOSUZFU1RfVE9PTCBcCisgRFNZTVVUSUwgXAorIE5NRURJVCBcCisgTElQTyBcCitAQCAtMTYxNzcsNyArMTY4NDksNiBAQCBub191bmRlZmluZWRfZmxhZyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCisgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCistZml4X3NyY2ZpbGVfcGF0aCBcCisgZXhjbHVkZV9leHBzeW1zIFwKKyBpbmNsdWRlX2V4cHN5bXMgXAorIGZpbGVfbGlzdF9zcGVjIFwKK0BAIC0xNjIxMyw2ICsxNjg4NCw3IEBAIG1vZHVsZV9jbWRzIFwKKyBtb2R1bGVfZXhwc3ltX2NtZHMgXAorIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAorIHByZWxpbmtfY21kcyBcCisrcG9zdGxpbmtfY21kcyBcCisgcG9zdGluc3RhbGxfY21kcyBcCisgcG9zdHVuaW5zdGFsbF9jbWRzIFwKKyBmaW5pc2hfY21kcyBcCitAQCAtMTY5NzksNyArMTc2NTEsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CisgIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCisgIworICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCistIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysjICAgICAgICAgICAgICAgICBJbmMuCisgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKKyAjCisgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgorQEAgLTE3MDgyLDE5ICsxNzc1NSw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKKyAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCisgTkwyU1A9JGx0X2x0X05MMlNQCisgCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgorK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKysKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgorK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKysKKyAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgorIE9CSkRVTVA9JGx0X09CSkRVTVAKKyAKKyAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAorIAorLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCisrIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAorIAorKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKKysKKysjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgorKworKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCisrRExMVE9PTD0kbHRfRExMVE9PTAorKworKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKysKKyAjIFRoZSBhcmNoaXZlci4KKyBBUj0kbHRfQVIKKysKKysjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgorIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUworIAorKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgorK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCisrCisgIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KKyBTVFJJUD0kbHRfU1RSSVAKKyAKK0BAIC0xNzEyNCw2ICsxNzgyMCwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcworICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCisgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CisgCisrIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCisrbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCisrCisrIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KKytsdF9zeXNyb290PSRsdF9zeXNyb290CisrCisgIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCisgb2JqZGlyPSRvYmpkaXIKKyAKK0BAIC0xNzEzMyw2ICsxNzgzNSw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECisgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KKyBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCisgCisrIyBNYW5pZmVzdCB0b29sLgorK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKKysKKyAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCisgRFNZTVVUSUw9JGx0X0RTWU1VVElMCisgCitAQCAtMTcyNDcsMTIgKzE3OTUyLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKKyAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCisgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZworIAorLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKy13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorLQorICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgorIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYworIAorKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKyt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorKworICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KKyBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYworIAorQEAgLTE3MzM5LDkgKzE4MDQ0LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAorICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgorIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKKyAKKy0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCistZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAorLQorICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgorIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCisgCitAQCAtMTczNTcsNiArMTgwNTksOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCisgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKKyAKKysjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCisrcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcworKworICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgorIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYworIAorQEAgLTE3Mzg5LDIxMCArMTgwOTQsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgorICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KKyAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CistICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgY2FzZSAkeHNpX3NoZWxsIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKy0jIGNhbGw6CistIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKKy0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKKy0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKy0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKKy0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCistIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCistZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKy0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KKy19CistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9CistICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKy0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7CistICBlc2FjCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCistICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCistICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorLSAgZWxzZQorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCistICBmaQorLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKKy19CistCistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsyfSBpbgorLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CistICBlc2FjCistfQorLQorLSMgc2VkIHNjcmlwdHM6CistbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKKy1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCistfQorLQorLV9MVF9FT0YKKy1lc2FjCistCistY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxKz1cJDIiCistfQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxPVwkJDFcJDIiCistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gIGVzYWMKKy0KKy0KKy0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKysgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKysgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisrCisrICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAorK2Z1bmNfZGlybmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAorK2Z1bmNfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKKytmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAorK2Z1bmNfc3RyaXBuYW1lICgpXAorK3tcCisrXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAorK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKKytmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKKytmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKKytmdW5jX2xvMm8gKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCisrXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAorK2Z1bmNfeGZvcm0gKClcCisre1wKKysgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAorK2Z1bmNfYXJpdGggKClcCisre1wKKysgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKKytmdW5jX2xlbiAoKVwKKyt7XAorKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrZmkKKysKKytpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKKytmdW5jX2FwcGVuZCAoKVwKKyt7XAorKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKKytmdW5jX2FwcGVuZF9xdW90ZWQgKClcCisre1wKKytcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAorK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JworKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2Vsc2UKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytmaQorKworK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9CisrZmkKKysKKysKKysgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisgICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCisgICBjaG1vZCAreCAiJG9maWxlIgorIAorZGlmZiAtLWdpdCBhL2dhcy9jb25maWd1cmUgYi9nYXMvY29uZmlndXJlCitpbmRleCA2MGMxYTA1NWFlMi4uMGUwY2U0YzBlMjMgMTAwNzU1CistLS0gYS9nYXMvY29uZmlndXJlCisrKysgYi9nYXMvY29uZmlndXJlCitAQCAtNjgxLDggKzY4MSwxMSBAQCBPVE9PTAorIExJUE8KKyBOTUVESVQKKyBEU1lNVVRJTAorK01BTklGRVNUX1RPT0wKKyBSQU5MSUIKKythY19jdF9BUgorIEFSCisrRExMVE9PTAorIE9CSkRVTVAKKyBMTl9TCisgTk0KK0BAIC03OTksNiArODAyLDcgQEAgZW5hYmxlX3N0YXRpYworIHdpdGhfcGljCisgZW5hYmxlX2Zhc3RfaW5zdGFsbAorIHdpdGhfZ251X2xkCisrd2l0aF9saWJ0b29sX3N5c3Jvb3QKKyBlbmFibGVfbGlidG9vbF9sb2NrCisgZW5hYmxlX3BsdWdpbnMKKyBlbmFibGVfbGFyZ2VmaWxlCitAQCAtMTQ5MCw2ICsxNDk0LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CisgICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCisgICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCisrICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgorICAgLS13aXRoLWNwdT1DUFUgICAgICAgICAgZGVmYXVsdCBjcHUgdmFyaWFudCBpcyBDUFUgKGN1cnJlbnRseSBvbmx5IHN1cHBvcnRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gQVJDKQorICAgLS13aXRoLXN5c3RlbS16bGliICAgICAgdXNlIGluc3RhbGxlZCBsaWJ6CitAQCAtNTI3Nyw4ICs1MjgzLDggQEAgZXNhYworIAorIAorIAorLW1hY3JvX3ZlcnNpb249JzIuMi43YScKKy1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JworK21hY3JvX3ZlcnNpb249JzIuNCcKKyttYWNyb19yZXZpc2lvbj0nMS4zMjkzJworIAorIAorIAorQEAgLTUzMTgsNyArNTMyNCw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KKyAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KKy1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgICBFQ0hPPSdwcmludCAtciAtLScKKyBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorQEAgLTYwMDQsOCArNjAxMCw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CisgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKKyB4c2lfc2hlbGw9bm8KKyAoIF9sdF9kdW1teT0iYS9iL2MiCistICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorLSAgICAgID0gYyxhL2IsLCBcCisrICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorKyAgICAgID0gYyxhL2IsYi9jLCBcCisgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKKyAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICYmIHhzaV9zaGVsbD15ZXMKK0BAIC02MDU0LDYgKzYwNjAsODAgQEAgZXNhYworIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICotKi1jeWd3aW4qICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisrICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorK2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQorIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTYwNzAsNiArNjE1MCwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorIGVzYWMKKyByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgY2FzZSAkaG9zdF9vcyBpbgorKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKysgICAgICByZWxvYWRfY21kcz1mYWxzZQorKyAgICBmaQorKyAgICA7OworICAgZGFyd2luKikKKyAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCitAQCAtNjIzOCw3ICs2MzIzLDggQEAgbWluZ3cqIHwgcHczMiopCisgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICAgZWxzZQorLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKysgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKKyAgIGZpCisgICA7OworQEAgLTYzOTIsNiArNjQ3OCwyMSBAQCBlc2FjCisgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKKyAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KKysKKytmaWxlX21hZ2ljX2dsb2I9Cisrd2FudF9ub2Nhc2VnbG9iPW5vCisraWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKysgIGNhc2UgJGhvc3Rfb3MgaW4KKysgIG1pbmd3KiB8IHB3MzIqKQorKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisrICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworKyAgICBlbHNlCisrICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKKysgICAgZmkKKysgICAgOzsKKysgIGVzYWMKKytmaQorKworIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAorIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTY0MDcsOSArNjUwOCwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCisgCisgCisgCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKKyskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCisrICAgIERMTFRPT0w9ImZhbHNlIgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAorKyAgZmkKKytlbHNlCisrICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgorK2ZpCisrCisrdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQorK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKysKKytjYXNlICRob3N0X29zIGluCisrY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisrICAqLS1pZGVudGlmeS1zdHJpY3QqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKysgICAgOzsKKysgICopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworKyAgICA7OworKyAgZXNhYworKyAgOzsKKysqKQorKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisrICA7OworK2VzYWMKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKysKKysKKysKKysKKysKKysKKysKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorKyAgZG8KKysgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjQyNSw3ICs2Njc5LDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgorKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjQ0NSwxMSArNjY5OSwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisgCisrICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKysgIGRvbmUKKyBmaQorLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgorK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KKyAgIGFjX2N0X0FSPSRBUgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorK2RvCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02NDY1LDcgKzY3MjMsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCistICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjQ4NCw2ICs2NzQyLDEwIEBAIGVsc2UKKyAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisrCisrICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCisrZG9uZQorKworICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCisgICAgIEFSPSJmYWxzZSIKKyAgIGVsc2UKK0BAIC02NDk1LDEyICs2NzU3LDEwIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworIGVzYWMKKyAgICAgQVI9JGFjX2N0X0FSCisgICBmaQorLWVsc2UKKy0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKKyBmaQorIAorLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKKy10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorKzogJHtBUj1hcn0KKys6ICR7QVJfRkxBR1M9Y3J1fQorIAorIAorIAorQEAgLTY1MTIsNiArNjc3Miw2NCBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9hcl9hdF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubworKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrCisraW50CisrbWFpbiAoKQorK3sKKysKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKKysgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKKysgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKysJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisrICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAorKyAgICAgICAgZmkKKysgICAgICBmaQorKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQorKworK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9CisrCisraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorK2Vsc2UKKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorK2ZpCisrCisrCisrCisrCisrCisrCisrCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKyBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgorQEAgLTY4NDYsOCArNzE2NCw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtNjg4Myw2ICs3MjAxLDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTY5MjQsNiArNzI0MywxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC02OTM1LDcgKzcyNjYsNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICAgICAgICphZGRyZXNzOworIH0KK0BAIC02OTYxLDggKzcyOTIsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKKyAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKK0BAIC02OTcyLDggKzczMDMsOCBAQCBfTFRfRU9GCisgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKyAJICAgIHBpcGVfd29ya3M9eWVzCisgCSAgZmkKKy0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisrCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCisgCWVsc2UKKyAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKKyAJZmkKK0BAIC03MDEwLDYgKzczNDEsMjEgQEAgZWxzZQorICRhc19lY2hvICJvayIgPiY2OyB9CisgZmkKKyAKKysjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KKytpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZmkKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyAKKyAKKyAKK0BAIC03MDI2LDYgKzczNzIsNDAgQEAgZmkKKyAKKyAKKyAKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OworK2Vsc2UKKysgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCisrZmkKKysKKysKKytsdF9zeXNyb290PQorK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKKysgeWVzKQorKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisrICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorKyAgIGZpCisrICAgOzsgIygKKysgLyopCisrICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisrICAgOzsgIygKKysgbm98JycpCisrICAgOzsgIygKKysgKikKKysgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQorKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9CisrICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgOzsKKytlc2FjCisrCisrIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CisrJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKyAKKyAKKyAKK0BAIC03MjM3LDYgKzc2MTcsMTIzIEBAIGVzYWMKKyAKKyBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKKyAKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IG10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KKysgICAgTUFOSUZFU1RfVE9PTD0iOiIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKKysgIGZpCisrZWxzZQorKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisrICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1CisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mNQorKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisrICBmaQorKyAgcm0gLWYgY29uZnRlc3QqCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQorK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisrICBNQU5JRkVTVF9UT09MPToKKytmaQorKworKworKworKworKworIAorICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICByaGFwc29keSogfCBkYXJ3aW4qKQorQEAgLTc4MDAsNiArODI5Nyw4IEBAIF9MVF9FT0YKKyAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKKyAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CisgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQorKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1CisrICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKKyAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKKyBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorIF9MVF9FT0YKK0BAIC03OTk1LDcgKzg0OTQsOCBAQCBmaQorIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKKyAKKyAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJworK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKKytMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCisgCisgCisgCitAQCAtODA4NCw3ICs4NTg0LDcgQEAgYWl4MyopCisgZXNhYworIAorICMgR2xvYmFsIHZhcmlhYmxlczoKKy1vZmlsZT1saWJ0b29sCisrb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCisgY2FuX2J1aWxkX3NoYXJlZD15ZXMKKyAKKyAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKK0BAIC04MzgyLDggKzg4ODIsNiBAQCBmaQorIGx0X3Byb2dfY29tcGlsZXJfcGljPQorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQorIAorLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworQEAgLTg1NDksNiArOTA0NywxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCisgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKKyAJOzsKKysgICAgICBuYWdmb3IqKQorKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisrCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKKysJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCisrCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKysJOzsKKyAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAorIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQorQEAgLTg2MTEsNyArOTExNSw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJworICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKyAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKysgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OworICAgICAgICopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKK0BAIC04NjY4LDEzICs5MTcyLDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKKyAgICAgOzsKKyBlc2FjCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CistJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CistCistCistCistCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKytsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKKyAKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorQEAgLTg3MzUsNiArOTI0MywxMSBAQCBmaQorIAorIAorIAorKworKworKworKworKworICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisgIworQEAgLTkwODUsNyArOTU5OCw4IEBAIF9MVF9FT0YKKyAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubworICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCistICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKKyAKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworQEAgLTkxODQsMTIgKzk2OTgsMTIgQEAgX0xUX0VPRgorIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJworIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCistCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisrCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtOTIwMyw4ICs5NzE3LDggQEAgX0xUX0VPRgorIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCisgCXdsYXJjPQorICAgICAgIGVsc2UKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZmkKKyAgICAgICA7OworIAorQEAgLTkyMjIsOCArOTczNiw4IEBAIF9MVF9FT0YKKyAKKyBfTFRfRU9GCisgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05MjY5LDggKzk3ODMsOCBAQCBfTFRfRU9GCisgCisgICAgICopCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTQwMCw3ICs5OTE0LDEzIEBAIF9MVF9FT0YKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKKyAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTk0MTMsMjIgKzk5MzMsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTk0NDAsNyArOTk2NywxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJZWxzZQorIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTQ1MywyMiArOTk4NiwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorQEAgLTk1MTMsMjAgKzEwMDUzLDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCistICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKy0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCistICAgICAgbGliZXh0PWxpYgorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgorLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCistICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKy0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKy0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKKy0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisrICAgICAgY2wqKQorKwkjIE5hdGl2ZSBNU1ZDCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKKysJZmlsZV9saXN0X3NwZWM9J0AnCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGVsc2UKKysJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZml+CisrCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorKwkgIGxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKysJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysJIyBEb24ndCB1c2UgcmFubGliCisrCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisrCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorKwkgICAgKi5leGV8Ki5FWEUpIDs7CisrCSAgICAqKQorKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIDs7CisrCSAgZXNhY34KKysJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKysJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworKwkgIGZpJworKwk7OworKyAgICAgICopCisrCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgorKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCTs7CisrICAgICAgZXNhYworICAgICAgIDs7CisgCisgICAgIGRhcndpbiogfCByaGFwc29keSopCitAQCAtOTU4Nyw3ICsxMDE3MCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCisgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubworQEAgLTk1OTUsNyArMTAxNzgsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC05NjExLDcgKzEwMTk0LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXgxMCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgICBmaQorQEAgLTk2MzUsMTAgKzEwMjE4LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJaWE2NCopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWVzYWMKKyAgICAgICBlbHNlCitAQCAtOTcxNywyMyArMTAzMDAsMzYgQEAgZmkKKyAKKyAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKKyAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAorIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgorLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKy0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKysJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisrCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKysJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy1pbnQgZm9vKHZvaWQpIHt9CisraW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKy0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKy0KKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcworK2Vsc2UKKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9CisrCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKysgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJZmkKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworQEAgLTk4MTgsNyArMTA0MTQsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICAgZWxzZQorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKK0BAIC05ODM3LDkgKzEwNDMzLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTEwNDE1LDggKzExMDExLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTEwNDQ5LDEzICsxMTA0Niw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgIDs7CisgICAgIGVzYWMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKysgICAgOzsKKysKKysgICosY2wqKQorKyAgICAjIE5hdGl2ZSBNU1ZDCisrICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisrICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKysgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisrCisrICAgIGNhc2UgJGJ1aWxkX29zIGluCisrICAgIG1pbmd3KikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisrICAgICAgbHRfc2F2ZV9pZnM9JElGUworKyAgICAgIElGUz0nOycKKysgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisrICAgICAgZG8KKysgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisrICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKysgICAgICBkb25lCisrICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KKysgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICBmaQorKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKysgICAgICA7OworKyAgICBlc2FjCisrCisrICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKysgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisrICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisrICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisrICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisrICAgICAgICRSTSBcJGRscGF0aCcKKysgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCisgICAgIDs7CisgCisgICAqKQorKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgIDs7CisgICBlc2FjCistICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCisgICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgIDs7CitAQCAtMTA1NDcsNyArMTEyMDIsNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMTEzNDMsNyArMTE5OTgsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTM0NiAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTEzODcsMTAgKzEyMDQyLDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTE0NDksNyArMTIxMDQsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTQ1MiAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTE0OTMsMTAgKzEyMTQ4LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTU5MjgsMTMgKzE2NTgzLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTU5NDksMTQgKzE2NjExLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE1OTg5LDEyICsxNjY1NCwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQorIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNjA0OSw4ICsxNjcxNCwxMyBAQCByZWxvYWRfZmxhZyBcCisgT0JKRFVNUCBcCisgZGVwbGlic19jaGVja19tZXRob2QgXAorIGZpbGVfbWFnaWNfY21kIFwKKytmaWxlX21hZ2ljX2dsb2IgXAorK3dhbnRfbm9jYXNlZ2xvYiBcCisrRExMVE9PTCBcCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAorIEFSIFwKKyBBUl9GTEFHUyBcCisrYXJjaGl2ZXJfbGlzdF9zcGVjIFwKKyBTVFJJUCBcCisgUkFOTElCIFwKKyBDQyBcCitAQCAtMTYwNjAsMTIgKzE2NzMwLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCisrbm1fZmlsZV9saXN0X3NwZWMgXAorIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKKy1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCisrbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAorIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKKyBuZWVkX2xvY2tzIFwKKytNQU5JRkVTVF9UT09MIFwKKyBEU1lNVVRJTCBcCisgTk1FRElUIFwKKyBMSVBPIFwKK0BAIC0xNjA4MSw3ICsxNjc1Myw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKKyBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKKy1maXhfc3JjZmlsZV9wYXRoIFwKKyBleGNsdWRlX2V4cHN5bXMgXAorIGluY2x1ZGVfZXhwc3ltcyBcCisgZmlsZV9saXN0X3NwZWMgXAorQEAgLTE2MTE3LDYgKzE2Nzg4LDcgQEAgbW9kdWxlX2NtZHMgXAorIG1vZHVsZV9leHBzeW1fY21kcyBcCisgZXhwb3J0X3N5bWJvbHNfY21kcyBcCisgcHJlbGlua19jbWRzIFwKKytwb3N0bGlua19jbWRzIFwKKyBwb3N0aW5zdGFsbF9jbWRzIFwKKyBwb3N0dW5pbnN0YWxsX2NtZHMgXAorIGZpbmlzaF9jbWRzIFwKK0BAIC0xNjg5MCw3ICsxNzU2Miw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKKyAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KKyAjCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCitAQCAtMTY5OTMsMTkgKzE3NjY2LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KKyBOTDJTUD0kbHRfbHRfTkwyU1AKKyAKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorKworKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorKworICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCisgT0JKRFVNUD0kbHRfT0JKRFVNUAorIAorICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgCistIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KKysjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisgZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCisgCisrIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKytmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgorKworKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCisrCisrIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KKytETExUT09MPSRsdF9ETExUT09MCisrCisrIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorKworICMgVGhlIGFyY2hpdmVyLgorIEFSPSRsdF9BUgorKworKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCisgQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCisgCisrIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKKysKKyAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgorIFNUUklQPSRsdF9TVFJJUAorIAorQEAgLTE3MDM1LDYgKzE3NzMxLDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCisgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KKyBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKKyAKKysjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KKytubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKKysKKysjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgorK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKKysKKyAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KKyBvYmpkaXI9JG9iamRpcgorIAorQEAgLTE3MDQ0LDYgKzE3NzQ2LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKKyAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPworIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKKyAKKysjIE1hbmlmZXN0IHRvb2wuCisrTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAorKworICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KKyBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKKyAKK0BAIC0xNzE1OCwxMiArMTc4NjMsMTIgQEAgd2l0aF9nY2M9JEdDQworICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KKyBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCisgCistIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCistCisgIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCisgcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCisgCisrIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCisrCisgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgorIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCisgCitAQCAtMTcyNTAsOSArMTc5NTUsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCisgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCisgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicworIAorLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KKy1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCistCisgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKKyAKK0BAIC0xNzI2OCw2ICsxNzk3MCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCisgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KKyBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcworIAorKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KKytwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCisrCisgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCisgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCisgCitAQCAtMTczMDAsMjEwICsxODAwNSwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCisgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCisgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQorICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKy0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBjYXNlICR4c2lfc2hlbGwgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorLSMgY2FsbDoKKy0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAorLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAorLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQorLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KKy0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKy1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQorLX0KKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19CistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbworLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKy0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKy0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCistICBlbHNlCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKy0gIGZpCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorLX0KKy0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgY2FzZSAkezJ9IGluCistICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CistICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKy0gIGVzYWMKKy19CistCistIyBzZWQgc2NyaXB0czoKKy1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJworLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKKy19CistCistX0xUX0VPRgorLWVzYWMKKy0KKy1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDErPVwkMiIKKy19CistX0xUX0VPRgorLSAgICA7OworLSAgKikKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDE9XCQkMVwkMiIKKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgZXNhYworLQorLQorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKysKKysgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCisrZnVuY19kaXJuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCisrZnVuY19iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAorK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCisrZnVuY19zdHJpcG5hbWUgKClcCisre1wKKytcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCisrXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAorK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAorK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAorK2Z1bmNfbG8ybyAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKKytcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCisrZnVuY194Zm9ybSAoKVwKKyt7XAorKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCisrZnVuY19hcml0aCAoKVwKKyt7XAorKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAorK2Z1bmNfbGVuICgpXAorK3tcCisrICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKytmaQorKworK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAorK2Z1bmNfYXBwZW5kICgpXAorK3tcCisrICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAorK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKKyt7XAorK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCisrXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZWxzZQorKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2ZpCisrCisraWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KKytmaQorKworKworKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKKyAgIGNobW9kICt4ICIkb2ZpbGUiCisgCitkaWZmIC0tZ2l0IGEvZ3Byb2YvY29uZmlndXJlIGIvZ3Byb2YvY29uZmlndXJlCitpbmRleCBjMjM2OTJlNWMzZC4uOWY5MzZhNWIwM2QgMTAwNzU1CistLS0gYS9ncHJvZi9jb25maWd1cmUKKysrKyBiL2dwcm9mL2NvbmZpZ3VyZQorQEAgLTY2Miw4ICs2NjIsMTEgQEAgT1RPT0wKKyBMSVBPCisgTk1FRElUCisgRFNZTVVUSUwKKytNQU5JRkVTVF9UT09MCisgUkFOTElCCisrYWNfY3RfQVIKKyBBUgorK0RMTFRPT0wKKyBPQkpEVU1QCisgTE5fUworIE5NCitAQCAtNzgwLDYgKzc4Myw3IEBAIGVuYWJsZV9zdGF0aWMKKyB3aXRoX3BpYworIGVuYWJsZV9mYXN0X2luc3RhbGwKKyB3aXRoX2dudV9sZAorK3dpdGhfbGlidG9vbF9zeXNyb290CisgZW5hYmxlX2xpYnRvb2xfbG9jaworIGVuYWJsZV9wbHVnaW5zCisgZW5hYmxlX2xhcmdlZmlsZQorQEAgLTE0NDIsNiArMTQ0Niw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAKKyBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKKyAgIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAorQEAgLTUxMjQsOCArNTEzMCw4IEBAIGVzYWMKKyAKKyAKKyAKKy1tYWNyb192ZXJzaW9uPScyLjIuN2EnCistbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKKyttYWNyb192ZXJzaW9uPScyLjQnCisrbWFjcm9fcmV2aXNpb249JzEuMzI5MycKKyAKKyAKKyAKK0BAIC01MTY1LDcgKzUxNzEsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CisgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCistaWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKytpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICAgRUNITz0ncHJpbnQgLXIgLS0nCisgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KK0BAIC01ODUxLDggKzU4NTcsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OworICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCisgeHNpX3NoZWxsPW5vCisgKCBfbHRfZHVtbXk9ImEvYi9jIgorLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKy0gICAgICA9IGMsYS9iLCwgXAorKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKysgICAgICA9IGMsYS9iLGIvYywgXAorICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCisgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCisgICAmJiB4c2lfc2hlbGw9eWVzCitAQCAtNTkwMSw2ICs1OTA3LDgwIEBAIGVzYWMKKyAKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqLSotY3lnd2luKiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KKytsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKytjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KKyBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC01OTE3LDYgKzU5OTcsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBlc2FjCisgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworIGNhc2UgJGhvc3Rfb3MgaW4KKysgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisrICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKysgICAgZmkKKysgICAgOzsKKyAgIGRhcndpbiopCisgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworQEAgLTYwODUsNyArNjE3MCw4IEBAIG1pbmd3KiB8IHB3MzIqKQorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKKyAgIGVsc2UKKy0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisrICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKysgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCisgICBmaQorICAgOzsKK0BAIC02MjM5LDYgKzYzMjUsMjEgQEAgZXNhYworIGZpCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CisgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CisrCisrZmlsZV9tYWdpY19nbG9iPQorK3dhbnRfbm9jYXNlZ2xvYj1ubworK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisrICBjYXNlICRob3N0X29zIGluCisrICBtaW5ndyogfCBwdzMyKikKKysgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKKysgICAgZWxzZQorKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCisrICAgIGZpCisrICAgIDs7CisrICBlc2FjCisrZmkKKysKKyBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKKyB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KK0BAIC02MjUyLDExICs2MzUzLDE2NCBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyAKKyAKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCisraWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQorKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgorKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KKysgICAgRExMVE9PTD0iZmFsc2UiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCisrICBmaQorK2Vsc2UKKysgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Cisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworKworKworKworKworKworKworK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgIGZvciBhY19wcm9nIGluIGFyCisrICBkbworKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02MjcyLDcgKzY1MjYsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCistICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCisrICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02MjkyLDExICs2NTQ2LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKyAKKysgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworKyAgZG9uZQorIGZpCistaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCisraWYgdGVzdCAteiAiJEFSIjsgdGhlbgorICAgYWNfY3RfQVI9JEFSCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrZG8KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTYzMTIsNyArNjU3MCw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02MzMxLDYgKzY1ODksMTAgQEAgZWxzZQorICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKysKKysgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKKytkb25lCisrCisgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KKyAgICAgQVI9ImZhbHNlIgorICAgZWxzZQorQEAgLTYzNDIsMTYgKzY2MDQsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisgZXNhYworICAgICBBUj0kYWNfY3RfQVIKKyAgIGZpCistZWxzZQorLSAgQVI9IiRhY19jdl9wcm9nX0FSIgorIGZpCisgCistdGVzdCAteiAiJEFSIiAmJiBBUj1hcgorLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisrOiAke0FSPWFyfQorKzogJHtBUl9GTEFHUz1jcnV9CisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKytpbnQKKyttYWluICgpCisreworIAorKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JworKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisgCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KKyAKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKyAKKyAKKyAKK0BAIC02NjkzLDggKzcwMTEsOCBAQCBlc2FjCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKKyAKKyAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisgCisgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCisgb3B0X2NyPQorQEAgLTY3MzAsNiArNzA0OCw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KKyAgIGVsc2UKKyAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKKyAgIGZpCisrICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCisgCisgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KKyAgIHBpcGVfd29ya3M9bm8KK0BAIC02NzcxLDYgKzcwOTAsMTggQEAgX0xUX0VPRgorICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisrLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisrI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKysvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKysgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisrLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxzZQorKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CisrI2VuZGlmCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCitAQCAtNjc4Miw3ICs3MTEzLDcgQEAgX0xUX0VPRgorIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAorIAorIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KKy1jb25zdCBzdHJ1Y3QgeworK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7CisgICBjb25zdCBjaGFyICpuYW1lOworICAgdm9pZCAgICAgICAqYWRkcmVzczsKKyB9CitAQCAtNjgwOCw4ICs3MTM5LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKKyBfTFRfRU9GCisgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KKyAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKKy0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgorLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKKyAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCisgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1CitAQCAtNjgxOSw4ICs3MTUwLDggQEAgX0xUX0VPRgorICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCisgCSAgICBwaXBlX3dvcmtzPXllcworIAkgIGZpCistCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKKy0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKysJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUworKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUworIAllbHNlCisgCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1CisgCWZpCitAQCAtNjg1Nyw2ICs3MTg4LDIwIEBAIGVsc2UKKyAkYXNfZWNobyAib2siID4mNjsgfQorIGZpCisgCisrIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCisraWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2ZpCisrCisrCisrCisrCisrCisrCisrCisrCisgCisgCisgCitAQCAtNjg3Myw2ICs3MjE4LDQxIEBAIGZpCisgCisgCisgCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KKysKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKKytlbHNlCisrICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubworK2ZpCisrCisrCisrbHRfc3lzcm9vdD0KKytjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCisrIHllcykKKysgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKKysgICBmaQorKyAgIDs7ICMoCisrIC8qKQorKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorKyAgIDs7ICMoCisrIG5vfCcnKQorKyAgIDs7ICMoCisrICopCisrICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKKyskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQorKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQorKyAgIDs7CisrZXNhYworKworKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQorKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9CisgCisgCisgCitAQCAtNzA4NCw2ICs3NDY0LDEyMyBAQCBlc2FjCisgCisgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCisgCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCisrICAgIE1BTklGRVNUX1RPT0w9IjoiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCisrICBmaQorK2Vsc2UKKysgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubworKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQorKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAorKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKysgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKysgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworKyAgZmkKKysgIHJtIC1mIGNvbmZ0ZXN0KgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KKytpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgorKyAgTUFOSUZFU1RfVE9PTD06CisrZmkKKysKKysKKysKKysKKysKKyAKKyAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKK0BAIC03NjQ3LDYgKzgxNDQsOCBAQCBfTFRfRU9GCisgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1CisgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQorICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKKysgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQorKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1CisgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCisgaW50IG1haW4oKSB7IHJldHVybiAwO30KKyBfTFRfRU9GCitAQCAtNzg0Miw3ICs4MzQxLDggQEAgZmkKKyBMSUJUT09MX0RFUFM9IiRsdG1haW4iCisgCisgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KKy1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKKytMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCisrTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgorIAorIAorIAorQEAgLTc5MzEsNyArODQzMSw3IEBAIGFpeDMqKQorIGVzYWMKKyAKKyAjIEdsb2JhbCB2YXJpYWJsZXM6Cistb2ZpbGU9bGlidG9vbAorK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAorIGNhbl9idWlsZF9zaGFyZWQ9eWVzCisgCisgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCitAQCAtODIyOSw4ICs4NzI5LDYgQEAgZmkKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KKyAKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKy0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAorICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKK0BAIC04Mzk2LDYgKzg4OTQsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJworIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCisgCTs7CisrICAgICAgbmFnZm9yKikKKysJIyBOQUcgRm9ydHJhbiBjb21waWxlcgorKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCisrCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJworKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisrCTs7CisgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKKyAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKK0BAIC04NDU4LDcgKzg5NjIsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisrICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKKyAgICAgICAqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7CitAQCAtODUxNSwxMyArOTAxOSwxNyBAQCBjYXNlICRob3N0X29zIGluCisgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCisgICAgIDs7CisgZXNhYworLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQorLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorLQorLQorLQorLQorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CisrbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCisgCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KK0BAIC04NTgyLDYgKzkwOTAsMTEgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorICMKK0BAIC04OTMyLDcgKzk0NDUsOCBAQCBfTFRfRU9GCisgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKyAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KKyAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCisgCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKK0BAIC05MDMxLDEyICs5NTQ1LDEyIEBAIF9MVF9FT0YKKyAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQorIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJworLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKyAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCisgCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKysJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworIAkgIGZpCisgCSAgOzsKKyAJZXNhYworQEAgLTkwNTAsOCArOTU2NCw4IEBAIF9MVF9FT0YKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJworIAl3bGFyYz0KKyAgICAgICBlbHNlCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGZpCisgICAgICAgOzsKKyAKK0BAIC05MDY5LDggKzk1ODMsOCBAQCBfTFRfRU9GCisgCisgX0xUX0VPRgorICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTExNiw4ICs5NjMwLDggQEAgX0xUX0VPRgorIAorICAgICAqKQorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTkyNDcsNyArOTc2MSwxMyBAQCBfTFRfRU9GCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCisgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05MjYwLDIyICs5NzgwLDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKK0BAIC05Mjg3LDcgKzk4MTQsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCWVsc2UKKyAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTkzMDAsMjIgKzk4MzMsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKK0BAIC05MzYwLDIwICs5OTAwLDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCistICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKy0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCistICAgICAgbGliZXh0PWxpYgorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgorLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCistICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKy0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKy0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKKy0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisrICAgICAgY2wqKQorKwkjIE5hdGl2ZSBNU1ZDCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKKysJZmlsZV9saXN0X3NwZWM9J0AnCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGVsc2UKKysJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZml+CisrCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorKwkgIGxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKysJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysJIyBEb24ndCB1c2UgcmFubGliCisrCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisrCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorKwkgICAgKi5leGV8Ki5FWEUpIDs7CisrCSAgICAqKQorKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIDs7CisrCSAgZXNhY34KKysJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKysJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworKwkgIGZpJworKwk7OworKyAgICAgICopCisrCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgorKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCTs7CisrICAgICAgZXNhYworICAgICAgIDs7CisgCisgICAgIGRhcndpbiogfCByaGFwc29keSopCitAQCAtOTQzNCw3ICsxMDAxNyw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCisgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubworQEAgLTk0NDIsNyArMTAwMjUsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC05NDU4LDcgKzEwMDQxLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXgxMCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgICBmaQorQEAgLTk0ODIsMTAgKzEwMDY1LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJaWE2NCopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWVzYWMKKyAgICAgICBlbHNlCitAQCAtOTU2NCwyMyArMTAxNDcsMzYgQEAgZmkKKyAKKyAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKKyAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAorIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgorLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKy0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKysJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisrCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKysJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy1pbnQgZm9vKHZvaWQpIHt9CisraW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKy0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKy0KKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcworK2Vsc2UKKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9CisrCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKysgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJZmkKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworQEAgLTk2NjUsNyArMTAyNjEsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICAgZWxzZQorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKK0BAIC05Njg0LDkgKzEwMjgwLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTEwMjYyLDggKzEwODU4LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTEwMjk2LDEzICsxMDg5Myw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgIDs7CisgICAgIGVzYWMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKysgICAgOzsKKysKKysgICosY2wqKQorKyAgICAjIE5hdGl2ZSBNU1ZDCisrICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisrICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKysgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisrCisrICAgIGNhc2UgJGJ1aWxkX29zIGluCisrICAgIG1pbmd3KikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisrICAgICAgbHRfc2F2ZV9pZnM9JElGUworKyAgICAgIElGUz0nOycKKysgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisrICAgICAgZG8KKysgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisrICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKysgICAgICBkb25lCisrICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KKysgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICBmaQorKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKysgICAgICA7OworKyAgICBlc2FjCisrCisrICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKysgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisrICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisrICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisrICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisrICAgICAgICRSTSBcJGRscGF0aCcKKysgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCisgICAgIDs7CisgCisgICAqKQorKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgIDs7CisgICBlc2FjCistICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCisgICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgIDs7CitAQCAtMTAzOTQsNyArMTEwNDksNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMTExOTAsNyArMTE4NDUsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTE5MyAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTEyMzQsMTAgKzExODg5LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTEyOTYsNyArMTE5NTEsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTI5OSAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTEzNDAsMTAgKzExOTk1LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTMzMDksMTMgKzEzOTY0LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTMzMzAsMTQgKzEzOTkyLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTEzMzcwLDEyICsxNDAzNSwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQorIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xMzQzMCw4ICsxNDA5NSwxMyBAQCByZWxvYWRfZmxhZyBcCisgT0JKRFVNUCBcCisgZGVwbGlic19jaGVja19tZXRob2QgXAorIGZpbGVfbWFnaWNfY21kIFwKKytmaWxlX21hZ2ljX2dsb2IgXAorK3dhbnRfbm9jYXNlZ2xvYiBcCisrRExMVE9PTCBcCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAorIEFSIFwKKyBBUl9GTEFHUyBcCisrYXJjaGl2ZXJfbGlzdF9zcGVjIFwKKyBTVFJJUCBcCisgUkFOTElCIFwKKyBDQyBcCitAQCAtMTM0NDEsMTIgKzE0MTExLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCisrbm1fZmlsZV9saXN0X3NwZWMgXAorIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKKy1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCisrbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAorIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKKyBuZWVkX2xvY2tzIFwKKytNQU5JRkVTVF9UT09MIFwKKyBEU1lNVVRJTCBcCisgTk1FRElUIFwKKyBMSVBPIFwKK0BAIC0xMzQ2Miw3ICsxNDEzNCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKKyBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKKy1maXhfc3JjZmlsZV9wYXRoIFwKKyBleGNsdWRlX2V4cHN5bXMgXAorIGluY2x1ZGVfZXhwc3ltcyBcCisgZmlsZV9saXN0X3NwZWMgXAorQEAgLTEzNDk4LDYgKzE0MTY5LDcgQEAgbW9kdWxlX2NtZHMgXAorIG1vZHVsZV9leHBzeW1fY21kcyBcCisgZXhwb3J0X3N5bWJvbHNfY21kcyBcCisgcHJlbGlua19jbWRzIFwKKytwb3N0bGlua19jbWRzIFwKKyBwb3N0aW5zdGFsbF9jbWRzIFwKKyBwb3N0dW5pbnN0YWxsX2NtZHMgXAorIGZpbmlzaF9jbWRzIFwKK0BAIC0xNDI2Myw3ICsxNDkzNSw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKKyAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KKyAjCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCitAQCAtMTQzNjYsMTkgKzE1MDM5LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KKyBOTDJTUD0kbHRfbHRfTkwyU1AKKyAKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorKworKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorKworICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCisgT0JKRFVNUD0kbHRfT0JKRFVNUAorIAorICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgCistIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KKysjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisgZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCisgCisrIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKytmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgorKworKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCisrCisrIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KKytETExUT09MPSRsdF9ETExUT09MCisrCisrIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorKworICMgVGhlIGFyY2hpdmVyLgorIEFSPSRsdF9BUgorKworKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCisgQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCisgCisrIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKKysKKyAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgorIFNUUklQPSRsdF9TVFJJUAorIAorQEAgLTE0NDA4LDYgKzE1MTA0LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCisgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KKyBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKKyAKKysjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KKytubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKKysKKysjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgorK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKKysKKyAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KKyBvYmpkaXI9JG9iamRpcgorIAorQEAgLTE0NDE3LDYgKzE1MTE5LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKKyAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPworIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKKyAKKysjIE1hbmlmZXN0IHRvb2wuCisrTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAorKworICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KKyBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKKyAKK0BAIC0xNDUzMSwxMiArMTUyMzYsMTIgQEAgd2l0aF9nY2M9JEdDQworICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KKyBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCisgCistIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCistCisgIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCisgcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCisgCisrIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCisrCisgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgorIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCisgCitAQCAtMTQ2MjMsOSArMTUzMjgsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCisgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCisgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicworIAorLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KKy1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCistCisgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKKyAKK0BAIC0xNDY0MSw2ICsxNTM0Myw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCisgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KKyBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcworIAorKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KKytwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCisrCisgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCisgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCisgCitAQCAtMTQ2NzMsMjEwICsxNTM3OCwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCisgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCisgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQorICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKy0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBjYXNlICR4c2lfc2hlbGwgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorLSMgY2FsbDoKKy0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAorLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAorLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQorLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KKy0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKy1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQorLX0KKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19CistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbworLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKy0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKy0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCistICBlbHNlCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKy0gIGZpCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorLX0KKy0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgY2FzZSAkezJ9IGluCistICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CistICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKy0gIGVzYWMKKy19CistCistIyBzZWQgc2NyaXB0czoKKy1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJworLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKKy19CistCistX0xUX0VPRgorLWVzYWMKKy0KKy1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDErPVwkMiIKKy19CistX0xUX0VPRgorLSAgICA7OworLSAgKikKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDE9XCQkMVwkMiIKKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgZXNhYworLQorLQorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKysKKysgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCisrZnVuY19kaXJuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCisrZnVuY19iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAorK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCisrZnVuY19zdHJpcG5hbWUgKClcCisre1wKKytcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCisrXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAorK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAorK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAorK2Z1bmNfbG8ybyAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKKytcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCisrZnVuY194Zm9ybSAoKVwKKyt7XAorKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCisrZnVuY19hcml0aCAoKVwKKyt7XAorKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAorK2Z1bmNfbGVuICgpXAorK3tcCisrICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKytmaQorKworK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAorK2Z1bmNfYXBwZW5kICgpXAorK3tcCisrICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAorK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKKyt7XAorK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCisrXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZWxzZQorKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2ZpCisrCisraWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KKytmaQorKworKworKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKKyAgIGNobW9kICt4ICIkb2ZpbGUiCisgCitkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlIGIvbGQvY29uZmlndXJlCitpbmRleCA4MTExMzRhNTAzYi4uZjQzMmY0NjM3ZDAgMTAwNzU1CistLS0gYS9sZC9jb25maWd1cmUKKysrKyBiL2xkL2NvbmZpZ3VyZQorQEAgLTY5MSw4ICs2OTEsMTEgQEAgT1RPT0wKKyBMSVBPCisgTk1FRElUCisgRFNZTVVUSUwKKytNQU5JRkVTVF9UT09MCisgUkFOTElCCisrYWNfY3RfQVIKKyBBUgorK0RMTFRPT0wKKyBPQkpEVU1QCisgTE5fUworIE5NCitAQCAtODE5LDYgKzgyMiw3IEBAIGVuYWJsZV9zdGF0aWMKKyB3aXRoX3BpYworIGVuYWJsZV9mYXN0X2luc3RhbGwKKyB3aXRoX2dudV9sZAorK3dpdGhfbGlidG9vbF9zeXNyb290CisgZW5hYmxlX2xpYnRvb2xfbG9jaworIGVuYWJsZV9wbHVnaW5zCisgZW5hYmxlX2xhcmdlZmlsZQorQEAgLTE1MTIsNiArMTUxNiw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAgIC0td2l0aC1saWItcGF0aD1kaXIxOmRpcjIuLi4gIHNldCBkZWZhdWx0IExJQl9QQVRICisgICAtLXdpdGgtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciB1c3IvbGliIGV0IGFsIHdpdGhpbiBESVIuCisgICAtLXdpdGgtc3lzdGVtLXpsaWIgICAgICB1c2UgaW5zdGFsbGVkIGxpYnoKK0BAIC01OTY1LDggKzU5NzEsOCBAQCBlc2FjCisgCisgCisgCistbWFjcm9fdmVyc2lvbj0nMi4yLjdhJworLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCisrbWFjcm9fdmVyc2lvbj0nMi40JworK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCisgCisgCisgCitAQCAtNjAwNiw3ICs2MDEyLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQorICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgorLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgIEVDSE89J3ByaW50IC1yIC0tJworIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCitAQCAtNjY5Miw4ICs2Njk4LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKKyAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcworIHhzaV9zaGVsbD1ubworICggX2x0X2R1bW15PSJhL2IvYyIKKy0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCistICAgICAgPSBjLGEvYiwsIFwKKysgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisrICAgICAgPSBjLGEvYixiL2MsIFwKKyAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAorICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAorICAgJiYgeHNpX3NoZWxsPXllcworQEAgLTY3NDIsNiArNjc0OCw4MCBAQCBlc2FjCisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKi0qLWN5Z3dpbiogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKysgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CisgaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjc1OCw2ICs2ODM4LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgZXNhYworIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyBjYXNlICRob3N0X29zIGluCisrICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisrICAgIGZpCisrICAgIDs7CisgICBkYXJ3aW4qKQorICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKK0BAIC02OTI2LDcgKzcwMTEsOCBAQCBtaW5ndyogfCBwdzMyKikKKyAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgICBlbHNlCistICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisrICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICAgZmkKKyAgIDs7CitAQCAtNzA4MCw2ICs3MTY2LDIxIEBAIGVzYWMKKyBmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQorICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQorKworK2ZpbGVfbWFnaWNfZ2xvYj0KKyt3YW50X25vY2FzZWdsb2I9bm8KKytpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorKyAgY2FzZSAkaG9zdF9vcyBpbgorKyAgbWluZ3cqIHwgcHczMiopCisrICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKysgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisrICAgIGVsc2UKKysgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNzA5NSw5ICs3MTk2LDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCisraWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQorKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgorKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KKysgICAgRExMVE9PTD0iZmFsc2UiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCisrICBmaQorK2Vsc2UKKysgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Cisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworKworKworKworKworKworKworIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrICBkbworKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC03MTEzLDcgKzczNjcsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCistICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCisrICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC03MTMzLDExICs3Mzg3LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKyAKKysgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworKyAgZG9uZQorIGZpCistaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCisraWYgdGVzdCAteiAiJEFSIjsgdGhlbgorICAgYWNfY3RfQVI9JEFSCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrZG8KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTcxNTMsNyArNzQxMSw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC03MTcyLDYgKzc0MzAsMTAgQEAgZWxzZQorICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKysKKysgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKKytkb25lCisrCisgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KKyAgICAgQVI9ImZhbHNlIgorICAgZWxzZQorQEAgLTcxODMsMTIgKzc0NDUsMTIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisgZXNhYworICAgICBBUj0kYWNfY3RfQVIKKyAgIGZpCistZWxzZQorLSAgQVI9IiRhY19jdl9wcm9nX0FSIgorIGZpCisgCistdGVzdCAteiAiJEFSIiAmJiBBUj1hcgorLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisrOiAke0FSPWFyfQorKzogJHtBUl9GTEFHUz1jcnV9CisrCisrCisgCisgCisgCitAQCAtNzE5OCw2ICs3NDYwLDYyIEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKytpbnQKKyttYWluICgpCisreworKworKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JworKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisrCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KKysKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKysKKysKKysKKysKKysKKyAKKyAKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCitAQCAtNzUzNCw4ICs3ODUyLDggQEAgZXNhYworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCisgCisgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorIAorICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgorIG9wdF9jcj0KK0BAIC03NTcxLDYgKzc4ODksNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCisgICBlbHNlCisgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCisgICBmaQorKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgorIAorICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCisgICBwaXBlX3dvcmtzPW5vCitAQCAtNzYxMiw2ICs3OTMxLDE4IEBAIF9MVF9FT0YKKyAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAorKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisrLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisrICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2VsaWYgZGVmaW5lZChfX29zZl9fKQorKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorKyNlbmRpZgorKworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgorQEAgLTc2MjMsNyArNzk1NCw3IEBAIF9MVF9FT0YKKyAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKKyAKKyAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCistY29uc3Qgc3RydWN0IHsKKytMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgeworICAgY29uc3QgY2hhciAqbmFtZTsKKyAgIHZvaWQgICAgICAgKmFkZHJlc3M7CisgfQorQEAgLTc2NDksOCArNzk4MCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgX0xUX0VPRgorIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCisgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CistCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKKy0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKysJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUworKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUworIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCisgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgorIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQorQEAgLTc2NjAsOCArNzk5MSw4IEBAIF9MVF9FT0YKKyAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorIAkgICAgcGlwZV93b3Jrcz15ZXMKKyAJICBmaQorLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCistCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisrCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKysJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKKyAJZWxzZQorIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQorIAlmaQorQEAgLTc2OTgsNiArODAyOSwxOSBAQCBlbHNlCisgJGFzX2VjaG8gIm9rIiA+JjY7IH0KKyBmaQorIAorKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgorK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytmaQorKworKworKworKworKworKworKworIAorIAorIAorQEAgLTc3MTQsNiArODA1OCw0MiBAQCBmaQorIAorIAorIAorKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CisrCisrIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7CisrZWxzZQorKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KKytmaQorKworKworK2x0X3N5c3Jvb3Q9CisrY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAorKyB5ZXMpCisrICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKysgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisrICAgZmkKKysgICA7OyAjKAorKyAvKikKKysgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKysgICA7OyAjKAorKyBub3wnJykKKysgICA7OyAjKAorKyAqKQorKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1CisrJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KKysgICBhc19mbl9lcnJvciAkPyAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKysgICA7OworK2VzYWMKKysKKysgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKKyskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQorIAorIAorIAorQEAgLTc5MjUsNiArODMwNSwxMjMgQEAgZXNhYworIAorIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorIAorK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgorKyAgICBNQU5JRkVTVF9UT09MPSI6IgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAorKyAgZmkKKytlbHNlCisrICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgorK2ZpCisrCisrdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKKysgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKysgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisrICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisrICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKysgIGZpCisrICBybSAtZiBjb25mdGVzdCoKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9CisraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKysgIE1BTklGRVNUX1RPT0w9OgorK2ZpCisrCisrCisrCisrCisrCisgCisgICBjYXNlICRob3N0X29zIGluCisgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCitAQCAtODQ4OCw2ICs4OTg1LDggQEAgX0xUX0VPRgorICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQorICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKKyAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CisrICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKKysgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQorICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgorIGludCBtYWluKCkgeyByZXR1cm4gMDt9CisgX0xUX0VPRgorQEAgLTg1NTYsNiArOTA1NSwxNiBAQCBkb25lCisgCisgCisgCisrZnVuY19zdHJpcG5hbWVfY25mICgpCisreworKyAgY2FzZSAkezJ9IGluCisrICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworKyAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworKyAgZXNhYworK30gIyBmdW5jX3N0cmlwbmFtZV9jbmYKKysKKysKKysKKyAKKyAKKyAjIFNldCBvcHRpb25zCitAQCAtODY4NCw3ICs5MTkzLDggQEAgZmkKKyBMSUJUT09MX0RFUFM9IiRsdG1haW4iCisgCisgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KKy1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKKytMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCisrTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgorIAorIAorIAorQEAgLTg3NzMsNyArOTI4Myw3IEBAIGFpeDMqKQorIGVzYWMKKyAKKyAjIEdsb2JhbCB2YXJpYWJsZXM6Cistb2ZpbGU9bGlidG9vbAorK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAorIGNhbl9idWlsZF9zaGFyZWQ9eWVzCisgCisgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCitAQCAtOTA3MSw4ICs5NTgxLDYgQEAgZmkKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KKyAKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKy0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAorICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKK0BAIC05MjM4LDYgKzk3NDYsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJworIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCisgCTs7CisrICAgICAgbmFnZm9yKikKKysJIyBOQUcgRm9ydHJhbiBjb21waWxlcgorKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCisrCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJworKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisrCTs7CisgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKKyAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKK0BAIC05MzAwLDcgKzk4MTQsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisrICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKKyAgICAgICAqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7CitAQCAtOTM1NywxMyArOTg3MSwxNyBAQCBjYXNlICRob3N0X29zIGluCisgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCisgICAgIDs7CisgZXNhYworLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQorLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorLQorLQorLQorLQorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CisrbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCisgCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KK0BAIC05NDI0LDYgKzk5NDIsMTEgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorICMKK0BAIC05Nzc0LDcgKzEwMjk3LDggQEAgX0xUX0VPRgorICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCisgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKy0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCitAQCAtOTg3MywxMiArMTAzOTcsMTIgQEAgX0xUX0VPRgorIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJworIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCistCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisrCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtOTg5Miw4ICsxMDQxNiw4IEBAIF9MVF9FT0YKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJworIAl3bGFyYz0KKyAgICAgICBlbHNlCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGZpCisgICAgICAgOzsKKyAKK0BAIC05OTExLDggKzEwNDM1LDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTk5NTgsOCArMTA0ODIsOCBAQCBfTFRfRU9GCisgCisgICAgICopCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtMTAwODksNyArMTA2MTMsMTMgQEAgX0xUX0VPRgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtMTAxMDIsMjIgKzEwNjMyLDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKK0BAIC0xMDEyOSw3ICsxMDY2NiwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJZWxzZQorIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtMTAxNDIsMjIgKzEwNjg1LDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtMTAyMDEsMjEgKzEwNzUxLDY0IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICMgV2hlbiBub3QgdXNpbmcgZ2NjLCB3ZSBjdXJyZW50bHkgYXNzdW1lIHRoYXQgd2UgYXJlIHVzaW5nCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCistICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKy0gICAgICBsaWJleHQ9bGliCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCistICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCistICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKysgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorKyAgICAgIGNsKikKKysJIyBOYXRpdmUgTVNWQworKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCisrCWZpbGVfbGlzdF9zcGVjPSdAJworKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBlbHNlCisrCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGZpfgorKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKysJICBsaW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrCSMgRG9uJ3QgdXNlIHJhbmxpYgorKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCisrCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICouZXhlfCouRVhFKSA7OworKwkgICAgKikKKysJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkgICAgICA7OworKwkgIGVzYWN+CisrCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICBmaScKKysJOzsKKysgICAgICAqKQorKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKysJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKysJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKysJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwk7OworKyAgICAgIGVzYWMKKyAgICAgICA7OworIAorICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorQEAgLTEwMjc2LDcgKzEwODY5LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCitAQCAtMTAyODQsNyArMTA4NzcsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC0xMDMwMCw3ICsxMDg5Myw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4MTAqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICAgZmkKK0BAIC0xMDMyNCwxMCArMTA5MTcsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAlpYTY0KikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCSopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJZXNhYworICAgICAgIGVsc2UKK0BAIC0xMDQwNiwyMyArMTA5OTksMzYgQEAgZmkKKyAKKyAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKKyAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAorIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgorLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKy0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKysJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisrCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKysJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy1pbnQgZm9vKHZvaWQpIHt9CisraW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKy0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKy0KKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcworK2Vsc2UKKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9CisrCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKysgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJZmkKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworQEAgLTEwNTA3LDcgKzExMTEzLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgIGVsc2UKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCitAQCAtMTA1MjYsOSArMTExMzIsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJd2xhcmM9JyR7d2x9JworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisrCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgZWxzZQorIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KKyAJKiJDb21waWxlcnMgNS4wIiopCitAQCAtMTExMDQsOCArMTE3MTAsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMTExMzgsMTMgKzExNzQ1LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKysKKysgICAgY2FzZSAkYnVpbGRfb3MgaW4KKysgICAgbWluZ3cqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKysgICAgICBsdF9zYXZlX2lmcz0kSUZTCisrICAgICAgSUZTPSc7JworKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKysgICAgICBkbworKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKysgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorKyAgICAgIGRvbmUKKysgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisrICAgICAgOzsKKysgICAgY3lnd2luKikKKysgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisrICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisrICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIDs7CisrICAgICopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICAgOzsKKyAgIGVzYWMKKy0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgIHNobGlicGF0aF92YXI9UEFUSAorICAgOzsKK0BAIC0xMTIzNiw3ICsxMTkwMSw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0xMjAzMiw3ICsxMjY5Nyw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDEyMDM1ICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMjA3NiwxMCArMTI3NDEsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMjEzOCw3ICsxMjgwMyw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDEyMTQxICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMjE4MiwxMCArMTI4NDcsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMjU3Nyw2ICsxMzI0Miw3IEBAICRSTSAtciBjb25mdGVzdCoKKyAKKyAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCisgICBsdF9zYXZlX0NDPSRDQworKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUworICAgbHRfc2F2ZV9MRD0kTEQKKyAgIGx0X3NhdmVfR0NDPSRHQ0MKKyAgIEdDQz0kR1hYCitAQCAtMTI1OTQsNiArMTMyNjAsNyBAQCAkUk0gLXIgY29uZnRlc3QqCisgICBmaQorICAgdGVzdCAteiAiJHtMRENYWCtzZXR9IiB8fCBMRD0kTERDWFgKKyAgIENDPSR7Q1hYLSJjKysifQorKyAgQ0ZMQUdTPSRDWFhGTEFHUworICAgY29tcGlsZXI9JENDCisgICBjb21waWxlcl9DWFg9JENDCisgICBmb3IgY2NfdGVtcCBpbiAkY29tcGlsZXIiIjsgZG8KK0BAIC0xMjg3Niw3ICsxMzU0MywxMyBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkY29tcGlsZXIgbGlua2VyICgkTEQpIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZQorICAgICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9Jy1iZXJvaycKKyAgICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuIGVtcHR5CisgICAgICAgICAgICMgZXhlY3V0YWJsZS4KKy0gICAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKyAgICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoX19DWFgrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTEyODg5LDIyICsxMzU2MiwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY3h4X3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoX19DWFgiOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWAorK2ZpCisgCisgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAorQEAgLTEyOTE3LDcgKzEzNTk3LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICAgICBlbHNlCisgCSAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtMTI5MzAsMjIgKzEzNjE2LDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jeHhfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoX19DWFgiOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF9fQ1hYCisrZmkKKyAKKyAJICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKK0BAIC0xMjk4OCwyOSArMTM2ODEsNzUgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgICA7OworIAorICAgICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKy0gICAgICAgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCBDWFgpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAorLSAgICAgICAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSctTCRsaWJkaXInCistICAgICAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJworLSAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPXVuc3VwcG9ydGVkCistICAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYPW5vCistICAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzX0NYWD15ZXMKKy0KKy0gICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKy0gICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworLSAgICAgICAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCistICAgICAgICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCistICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorLQkgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworLSAgICAgICAgICBlbHNlCistCSAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKy0JICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CistICAgICAgICAgIGZpfgorLSAgICAgICAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCistICAgICAgICBlbHNlCistICAgICAgICAgIGxkX3NobGlic19DWFg9bm8KKy0gICAgICAgIGZpCistICAgICAgICA7OworKwljYXNlICRHWFgsJGNjX2Jhc2VuYW1lIGluCisrCSxjbCogfCBubyxjbCopCisrCSAgIyBOYXRpdmUgTVNWQworKwkgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKysJICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorKwkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScgJworKwkgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD11bnN1cHBvcnRlZAorKwkgIGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFg9eWVzCisrCSAgZmlsZV9saXN0X3NwZWNfQ1hYPSdAJworKwkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCSAgbGliZXh0PWxpYgorKwkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwkgIHNocmV4dF9jbWRzPSIuZGxsIgorKwkgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgICAgJFNFRCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgICBlbHNlCisrCSAgICAgICRTRUQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgICAgZml+CisrCSAgICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgICBsaW5rbmFtZXM9JworKwkgICMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKysJICAjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgQ1hYKT0ndHJ1ZScKKysJICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzX0NYWD15ZXMKKysJICAjIERvbid0IHVzZSByYW5saWIKKysJICBvbGRfcG9zdGluc3RhbGxfY21kc19DWFg9J2NobW9kIDY0NCAkb2xkbGliJworKwkgIHBvc3RsaW5rX2NtZHNfQ1hYPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgICAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorKwkgICAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICAgKikKKysJCWx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJCWx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisrCQk7OworKwkgICAgZXNhY34KKysJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkbHRfb3V0cHV0ZmlsZSJ+CisrCSAgICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorKwkgICAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICAgIGZpJworKwkgIDs7CisrCSopCisrCSAgIyBnKysKKysJICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgQ1hYKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKKysJICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorKwkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSctTCRsaWJkaXInCisrCSAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWD0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKKysJICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9dW5zdXBwb3J0ZWQKKysJICBhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYPW5vCisrCSAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lc19DWFg9eWVzCisrCisrCSAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorKwkgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworKwkgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQorKwkgICAgIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KKysJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisrCSAgICBlbHNlCisrCSAgICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworKwkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworKwkgICAgZml+CisrCSAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisrCSAgZWxzZQorKwkgICAgbGRfc2hsaWJzX0NYWD1ubworKwkgIGZpCisrCSAgOzsKKysJZXNhYworKwk7OworICAgICAgIGRhcndpbiogfCByaGFwc29keSopCisgCisgCitAQCAtMTMxMTYsNyArMTM4NTUsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAgICAgICA7OworICAgICAgICAgICAqKQorICAgICAgICAgICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCistICAgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysgICAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKyAgICAgICAgICAgICAgIGxkX3NobGlic19DWFg9bm8KK0BAIC0xMzE4NywxMCArMTM5MjYsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKyAJICAgICAgICAgICAgOzsKKyAJICAgICAgICAgIGlhNjQqKQorLQkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgICAgICAgICAgIDs7CisgCSAgICAgICAgICAqKQorLQkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKysJICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworIAkgICAgICAgICAgICA7OworIAkgICAgICAgIGVzYWMKKyAJICAgICAgZmkKK0BAIC0xMzIzMSw5ICsxMzk3MCw5IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICAgICAqKQorIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKyAJICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCSAgICAgIGVsc2UKKy0JICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCisrCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgLW8gJGxpYicKKyAJICAgICAgZmkKKyAJICAgIGZpCisgCSAgICBsaW5rX2FsbF9kZXBsaWJzX0NYWD15ZXMKK0BAIC0xMzMwMywyMCArMTQwNDIsMjAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgICAgIHByZWxpbmtfY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CisgCQlybSAtcmYgJHRwbGRpcn4KKyAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9ianMgJGxpYm9ianMgJGNvbXBpbGVfZGVwbGlic34KKy0JCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgIicKKysJCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCInCisgCSAgICAgIG9sZF9hcmNoaXZlX2NtZHNfQ1hYPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorIAkJcm0gLXJmICR0cGxkaXJ+CisgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvbGRvYmpzJG9sZF9kZXBsaWJzfgorLQkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYH4KKysJCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgfgorIAkJJFJBTkxJQiAkb2xkbGliJworIAkgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorIAkJcm0gLXJmICR0cGxkaXJ+CisgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KKy0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCisrCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKKyAJICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CisgCQlybSAtcmYgJHRwbGRpcn4KKyAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgorLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAJICAgICAgOzsKKyAJICAgICopICMgVmVyc2lvbiA2IGFuZCBhYm92ZSB1c2Ugd2VhayBzeW1ib2xzCisgCSAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJworQEAgLTEzNTExLDcgKzE0MjUwLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCQkgIDs7CisgCSAgICAgICAgKikKKy0JICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwkgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkJICA7OworIAkgICAgICBlc2FjCisgCitAQCAtMTM1NTcsNyArMTQyOTYsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgICBzb2xhcmlzKikKKyAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgICAgIENDKikKKysgICAgICAgICAgQ0MqIHwgc3VuQ0MqKQorIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKworICAgICAgICAgICAgIGFyY2hpdmVfY21kc19uZWVkX2xjX0NYWD15ZXMKKyAJICAgIG5vX3VuZGVmaW5lZF9mbGFnX0NYWD0nIC16ZGVmcycKK0BAIC0xMzU5OCw5ICsxNDMzNyw5IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisgCSAgICAgIG5vX3VuZGVmaW5lZF9mbGFnX0NYWD0nICR7d2x9LXogJHt3bH1kZWZzJworIAkgICAgICBpZiAkQ0MgLS12ZXJzaW9uIHwgJEdSRVAgLXYgJ14yXC43JyA+IC9kZXYvbnVsbDsgdGhlbgorLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisrCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisgCSAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JCSAgJENDIC1zaGFyZWQgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworIAorIAkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKKyAJICAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KK0BAIC0xMzczNSw2ICsxNDQ3NCwxMyBAQCBwcml2YXRlOgorIH07CisgX0xUX0VPRgorIAorKworK19sdF9saWJkZXBzX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKytjYXNlICIkQ0MgJENGTEFHUyAiIGluICMoCisrKlwgLWZsdG8qXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby1sdG8iIDs7CisrKlwgLWZ3aG9wcipcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLXdob3ByIiA7OworK2VzYWMKKysKKyBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKKyAgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgICBhY19zdGF0dXM9JD8KK0BAIC0xMzc0OCw3ICsxNDQ5NCw3IEBAIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQorICAgcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZT1ubworIAorICAgZm9yIHAgaW4gYGV2YWwgIiRvdXRwdXRfdmVyYm9zZV9saW5rX2NtZCJgOyBkbworLSAgICBjYXNlICRwIGluCisrICAgIGNhc2UgJHtwcmV2fSR7cH0gaW4KKyAKKyAgICAgLUwqIHwgLVIqIHwgLWwqKQorICAgICAgICAjIFNvbWUgY29tcGlsZXJzIHBsYWNlIHNwYWNlIGJldHdlZW4gIi17TCxSfSIgYW5kIHRoZSBwYXRoLgorQEAgLTEzNzU3LDEzICsxNDUwMywyMiBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKKyAgICAgICAgICAgdGVzdCAkcCA9ICItUiI7IHRoZW4KKyAJIHByZXY9JHAKKyAJIGNvbnRpbnVlCistICAgICAgIGVsc2UKKy0JIHByZXY9CisgICAgICAgIGZpCisgCisrICAgICAgICMgRXhwYW5kIHRoZSBzeXNyb290IHRvIGVhc2UgZXh0cmFjdGluZyB0aGUgZGlyZWN0b3JpZXMgbGF0ZXIuCisrICAgICAgIGlmIHRlc3QgLXogIiRwcmV2IjsgdGhlbgorKyAgICAgICAgIGNhc2UgJHAgaW4KKysgICAgICAgICAtTCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLUwnICcnICIkcCI7IHByZXY9LUw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworKyAgICAgICAgIC1SKikgZnVuY19zdHJpcG5hbWVfY25mICctUicgJycgIiRwIjsgcHJldj0tUjsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisrICAgICAgICAgLWwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1sJyAnJyAiJHAiOyBwcmV2PS1sOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKysgICAgICAgICBlc2FjCisrICAgICAgIGZpCisrICAgICAgIGNhc2UgJHAgaW4KKysgICAgICAgPSopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnPScgJycgIiRwIjsgcD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKysgICAgICAgZXNhYworICAgICAgICBpZiB0ZXN0ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSIgPSBubzsgdGhlbgorLQkgY2FzZSAkcCBpbgorLQkgLUwqIHwgLVIqKQorKwkgY2FzZSAke3ByZXZ9IGluCisrCSAtTCB8IC1SKQorIAkgICAjIEludGVybmFsIGNvbXBpbGVyIGxpYnJhcnkgcGF0aHMgc2hvdWxkIGNvbWUgYWZ0ZXIgdGhvc2UKKyAJICAgIyBwcm92aWRlZCB0aGUgdXNlci4gIFRoZSBwb3N0ZGVwcyBhbHJlYWR5IGNvbWUgYWZ0ZXIgdGhlCisgCSAgICMgdXNlciBzdXBwbGllZCBsaWJzIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcHJvY2VzcyB0aGVtLgorQEAgLTEzNzgzLDggKzE0NTM4LDEwIEBAIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQorIAkgICBwb3N0ZGVwc19DWFg9IiR7cG9zdGRlcHNfQ1hYfSAke3ByZXZ9JHtwfSIKKyAJIGZpCisgICAgICAgIGZpCisrICAgICAgIHByZXY9CisgICAgICAgIDs7CisgCisrICAgICoubHRvLiRvYmpleHQpIDs7ICMgSWdub3JlIEdDQyBMVE8gb2JqZWN0cworICAgICAqLiRvYmpleHQpCisgICAgICAgICMgVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHRlc3Qgb2JqZWN0IGZpbGUgb25seSBzaG93cyB1cAorICAgICAgICAjIG9uY2UgaW4gdGhlIGNvbXBpbGVyIG91dHB1dC4KK0BAIC0xMzgyMCw2ICsxNDU3Nyw3IEBAIGVsc2UKKyBmaQorIAorICRSTSAtZiBjb25mZXN0LiRvYmpleHQKKytDRkxBR1M9JF9sdF9saWJkZXBzX3NhdmVfQ0ZMQUdTCisgCisgIyBQT1JUTUU6IG92ZXJyaWRlIGFib3ZlIHRlc3Qgb24gc3lzdGVtcyB3aGVyZSBpdCBpcyBicm9rZW4KKyBjYXNlICRob3N0X29zIGluCitAQCAtMTM4NTUsNyArMTQ2MTMsNyBAQCBsaW51eCopCisgCisgc29sYXJpcyopCisgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgQ0MqKQorKyAgQ0MqIHwgc3VuQ0MqKQorICAgICAjIFRoZSBtb3JlIHN0YW5kYXJkcy1jb25mb3JtaW5nIHN0bHBvcnQ0IGxpYnJhcnkgaXMKKyAgICAgIyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgQ3N0ZCBsaWJyYXJ5LiBBdm9pZCBzcGVjaWZ5aW5nCisgICAgICMgaXQgaWYgaXQncyBpbiBDWFhGTEFHUy4gSWdub3JlIGxpYkNydW4gYXMKK0BAIC0xMzkyMCw4ICsxNDY3OCw2IEBAIGZpCisgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPQorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWD0KKyAKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKy0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAorICAgIyBDKysgc3BlY2lmaWMgY2FzZXMgZm9yIHBpYywgc3RhdGljLCB3bCwgZXRjLgorICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KK0BAIC0xNDAyNiw2ICsxNDc4MiwxMSBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAkgIDs7CisgCWVzYWMKKyAJOzsKKysgICAgICBtaW5ndyogfCBjeWd3aW4qIHwgb3MyKiB8IHB3MzIqIHwgY2VnY2MqKQorKwkjIFRoaXMgaGFjayBpcyBzbyB0aGF0IHRoZSBzb3VyY2UgZmlsZSBjYW4gdGVsbCB3aGV0aGVyIGl0IGlzIGJlaW5nCisrCSMgYnVpbHQgZm9yIGluY2x1c2lvbiBpbiBhIGRsbCAoYW5kIHNob3VsZCBleHBvcnQgc3ltYm9scyBmb3IgZXhhbXBsZSkuCisrCWx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0nLURETExfRVhQT1JUJworKwk7OworICAgICAgIGRndXgqKQorIAljYXNlICRjY19iYXNlbmFtZSBpbgorIAkgIGVjKysqKQorQEAgLTE0MTc4LDcgKzE0OTM5LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAJOzsKKyAgICAgICBzb2xhcmlzKikKKyAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0JICBDQyopCisrCSAgQ0MqIHwgc3VuQ0MqKQorIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKworIAkgICAgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSctS1BJQycKKyAJICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWD0nLUJzdGF0aWMnCitAQCAtMTQyNDMsMTAgKzE1MDA0LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSIkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIC1EUElDIgorICAgICA7OworIGVzYWMKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgPiY1CistJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgiID4mNjsgfQorLQorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY19DWFgrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY19DWFg9JGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWAorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY19DWFgiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA+JjY7IH0KKytsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWAorIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtMTQzMDQsNiArMTUwNzIsOCBAQCBmaQorIAorIAorIAorKworKworICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisgIworQEAgLTE0NDgxLDYgKzE1MjUxLDcgQEAgZmkKKyAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkY29tcGlsZXIgbGlua2VyICgkTEQpIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KKyAKKyAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICBleGNsdWRlX2V4cHN5bXNfQ1hYPSdfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionCisgICBjYXNlICRob3N0X29zIGluCisgICBhaXhbNC05XSopCisgICAgICMgSWYgd2UncmUgdXNpbmcgR05VIG5tLCB0aGVuIHdlIGRvbid0IHdhbnQgdGhlICItQyIgb3B0aW9uLgorQEAgLTE0NDk1LDE1ICsxNTI2NiwyMCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkY29tcGlsZXIgbGlua2VyICgkTEQpIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZQorICAgICA7OworICAgcHczMiopCisgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSIkbHRkbGxfY21kcyIKKy0gIDs7CisrICAgIDs7CisgICBjeWd3aW4qIHwgbWluZ3cqIHwgY2VnY2MqKQorLSAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87L14uKlsgXV9fbm1fXy9zL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCistICA7OworKyAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorKyAgICBjbCopIDs7CisrICAgICopCisrICAgICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleGNsdWRlX2V4cHN5bXNfQ1hYPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCisrICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworICAgKikKKyAgICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKy0gIDs7CisrICAgIDs7CisgICBlc2FjCistICBleGNsdWRlX2V4cHN5bXNfQ1hYPSdfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionCisgCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsZF9zaGxpYnNfQ1hYIiA+JjUKKyAkYXNfZWNobyAiJGxkX3NobGlic19DWFgiID4mNjsgfQorQEAgLTE0NzY2LDggKzE1NTQyLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTE0Nzk5LDEzICsxNTU3Niw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgIDs7CisgICAgIGVzYWMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKysgICAgOzsKKysKKysgICosY2wqKQorKyAgICAjIE5hdGl2ZSBNU1ZDCisrICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisrICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKysgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisrCisrICAgIGNhc2UgJGJ1aWxkX29zIGluCisrICAgIG1pbmd3KikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisrICAgICAgbHRfc2F2ZV9pZnM9JElGUworKyAgICAgIElGUz0nOycKKysgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisrICAgICAgZG8KKysgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisrICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKysgICAgICBkb25lCisrICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KKysgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICBmaQorKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKysgICAgICA7OworKyAgICBlc2FjCisrCisrICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKysgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisrICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisrICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisrICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisrICAgICAgICRSTSBcJGRscGF0aCcKKysgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCisgICAgIDs7CisgCisgICAqKQorKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgIDs7CisgICBlc2FjCistICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCisgICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgIDs7CitAQCAtMTQ4OTYsNyArMTU3MzEsNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMTUzNTUsNiArMTYxOTAsNyBAQCBmaQorICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCisgCisgICBDQz0kbHRfc2F2ZV9DQworKyAgQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUworICAgTERDWFg9JExECisgICBMRD0kbHRfc2F2ZV9MRAorICAgR0NDPSRsdF9zYXZlX0dDQworQEAgLTE4NDc3LDEzICsxOTMxMywyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE4NDk4LDE0ICsxOTM0MSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xODUzOCwxMiArMTkzODQsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKKyBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTg1ODIsOCArMTk0MjgsOCBAQCBvbGRfYXJjaGl2ZV9jbWRzX0NYWD0nYCRFQ0hPICIkb2xkX2FyY2hpdmVfY21kc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZQorIGNvbXBpbGVyX0NYWD0nYCRFQ0hPICIkY29tcGlsZXJfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBHQ0NfQ1hYPSdgJEVDSE8gIiRHQ0NfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFg9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bF9DWFg9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2xfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfcHJvZ19jb21waWxlcl93bF9DWFg9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2xfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX29fQ1hYPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfb19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFyY2hpdmVfY21kc19uZWVkX2xjX0NYWD0nYCRFQ0hPICIkYXJjaGl2ZV9jbWRzX25lZWRfbGNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xODYxMCwxMiArMTk0NTYsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcl9DWFg9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXJfQ1hYIiB8ICRTRUQgIiRkZWxheV8KKyBoYXJkY29kZV9hdXRvbWF0aWNfQ1hYPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmhlcml0X3JwYXRoX0NYWD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aF9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnNfQ1hYPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistZml4X3NyY2ZpbGVfcGF0aF9DWFg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGhfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4Y2x1ZGVfZXhwc3ltc19DWFg9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluY2x1ZGVfZXhwc3ltc19DWFg9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kc19DWFg9J2AkRUNITyAiJHByZWxpbmtfY21kc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3Bvc3RsaW5rX2NtZHNfQ1hYPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9saXN0X3NwZWNfQ1hYPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGhhcmRjb2RlX2FjdGlvbl9DWFg9J2AkRUNITyAiJGhhcmRjb2RlX2FjdGlvbl9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGNvbXBpbGVyX2xpYl9zZWFyY2hfZGlyc19DWFg9J2AkRUNITyAiJGNvbXBpbGVyX2xpYl9zZWFyY2hfZGlyc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE4NjUzLDggKzE5NDk5LDEzIEBAIHJlbG9hZF9mbGFnIFwKKyBPQkpEVU1QIFwKKyBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCisgZmlsZV9tYWdpY19jbWQgXAorK2ZpbGVfbWFnaWNfZ2xvYiBcCisrd2FudF9ub2Nhc2VnbG9iIFwKKytETExUT09MIFwKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCisgQVIgXAorIEFSX0ZMQUdTIFwKKythcmNoaXZlcl9saXN0X3NwZWMgXAorIFNUUklQIFwKKyBSQU5MSUIgXAorIENDIFwKK0BAIC0xODY2NCwxMiArMTk1MTUsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKKytubV9maWxlX2xpc3Rfc3BlYyBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAorLWx0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAorIG5lZWRfbG9ja3MgXAorK01BTklGRVNUX1RPT0wgXAorIERTWU1VVElMIFwKKyBOTUVESVQgXAorIExJUE8gXAorQEAgLTE4Njg1LDcgKzE5NTM4LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAorLWZpeF9zcmNmaWxlX3BhdGggXAorIGV4Y2x1ZGVfZXhwc3ltcyBcCisgaW5jbHVkZV9leHBzeW1zIFwKKyBmaWxlX2xpc3Rfc3BlYyBcCitAQCAtMTg3MDcsOCArMTk1NTksOCBAQCBMRF9DWFggXAorIHJlbG9hZF9mbGFnX0NYWCBcCisgY29tcGlsZXJfQ1hYIFwKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFggXAorLWx0X3Byb2dfY29tcGlsZXJfd2xfQ1hYIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFggXAorK2x0X3Byb2dfY29tcGlsZXJfd2xfQ1hYIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFggXAorIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vX0NYWCBcCisgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWCBcCitAQCAtMTg3MjAsNyArMTk1NzIsNiBAQCBub191bmRlZmluZWRfZmxhZ19DWFggXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkX0NYWCBcCisgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcl9DWFggXAorLWZpeF9zcmNmaWxlX3BhdGhfQ1hYIFwKKyBleGNsdWRlX2V4cHN5bXNfQ1hYIFwKKyBpbmNsdWRlX2V4cHN5bXNfQ1hYIFwKKyBmaWxlX2xpc3Rfc3BlY19DWFggXAorQEAgLTE4NzU0LDYgKzE5NjA1LDcgQEAgbW9kdWxlX2NtZHMgXAorIG1vZHVsZV9leHBzeW1fY21kcyBcCisgZXhwb3J0X3N5bWJvbHNfY21kcyBcCisgcHJlbGlua19jbWRzIFwKKytwb3N0bGlua19jbWRzIFwKKyBwb3N0aW5zdGFsbF9jbWRzIFwKKyBwb3N0dW5pbnN0YWxsX2NtZHMgXAorIGZpbmlzaF9jbWRzIFwKK0BAIC0xODc2OCw3ICsxOTYyMCw4IEBAIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYIFwKKyBtb2R1bGVfY21kc19DWFggXAorIG1vZHVsZV9leHBzeW1fY21kc19DWFggXAorIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYIFwKKy1wcmVsaW5rX2NtZHNfQ1hYOyBkbworK3ByZWxpbmtfY21kc19DWFggXAorK3Bvc3RsaW5rX2NtZHNfQ1hYOyBkbworICAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPIFxcXFwiIlxcXFxcJFwkdmFyIlxcXFwiXGAgaW4KKyAgICAgKltcXFxcXFxcYFxcIlxcXCRdKikKKyAgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlxcXCRcJHZhclxcIiB8IFxcXCRTRUQgLWUgXFwiXFxcJGRvdWJsZV9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRkZWxheV92YXJpYWJsZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgorQEAgLTE5NTMzLDcgKzIwMzg2LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0xOTYzNiwxOSArMjA0OTAsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCisgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgorIE5MMlNQPSRsdF9sdF9OTDJTUAorIAorKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisrCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrCisgIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KKyBPQkpEVU1QPSRsdF9PQkpEVU1QCisgCisgIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKKyAKKy0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgorKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKKyAKKysjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCisrCisrIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKKysKKysjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgorK0RMTFRPT0w9JGx0X0RMTFRPT0wKKysKKysjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrCisgIyBUaGUgYXJjaGl2ZXIuCisgQVI9JGx0X0FSCisrCisrIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KKyBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKKyAKKysjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KKythcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYworKworICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCisgU1RSSVA9JGx0X1NUUklQCisgCitAQCAtMTk2NzgsNiArMjA1NTUsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKKyAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgorIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAorIAorKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgorK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYworKworKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCisrbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAorKworICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgorIG9iamRpcj0kb2JqZGlyCisgCitAQCAtMTk2ODcsNiArMjA1NzAsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CisgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcworIAorKyMgTWFuaWZlc3QgdG9vbC4KKytNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCisrCisgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgorIERTWU1VVElMPSRsdF9EU1lNVVRJTAorIAorQEAgLTE5ODAxLDEyICsyMDY4NywxMiBAQCB3aXRoX2djYz0kR0NDCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKKyAKKy0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCistd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKy0KKyAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KKyBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKysKKyAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCisgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKKyAKK0BAIC0xOTg5Myw5ICsyMDc3OSw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCisgCistIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKKy0KKyAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scworIAorQEAgLTE5OTExLDYgKzIwNzk0LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKKyAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgorIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCisgCisrIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKKyAKK0BAIC0xOTk1NywyMTAgKzIwODQzLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIGNhc2UgJHhzaV9zaGVsbCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCistIyBjYWxsOgorLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCistIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0CistIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCistIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bworLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCistICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9CistfQorLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CistICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQorLQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYworLX0KKy0KKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCistbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJworLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCistICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorLX0KKy0KKy1fTFRfRU9GCistZXNhYworLQorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMSs9XCQyIgorLX0KKy1fTFRfRU9GCistICAgIDs7CistICAqKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMT1cJCQxXCQyIgorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICBlc2FjCistCistCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorKworKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKKytmdW5jX2Rpcm5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKKytmdW5jX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCisrZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKKytmdW5jX3N0cmlwbmFtZSAoKVwKKyt7XAorK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKKytcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCisrZnVuY19zcGxpdF9sb25nX29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCisrZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCisrZnVuY19sbzJvICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAorK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKKytmdW5jX3hmb3JtICgpXAorK3tcCisrICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKKytmdW5jX2FyaXRoICgpXAorK3tcCisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCisrZnVuY19sZW4gKClcCisre1wKKysgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworK2ZpCisrCisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCisrZnVuY19hcHBlbmQgKClcCisre1wKKysgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCisrZnVuY19hcHBlbmRfcXVvdGVkICgpXAorK3tcCisrXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKKytcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytlbHNlCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZmkKKysKKytpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQorK2ZpCisrCisrCisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyAKK0BAIC0yMDE4OCwxMiArMjEwMzMsMTIgQEAgd2l0aF9nY2M9JEdDQ19DWFgKKyAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCisgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFgKKyAKKy0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCistd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2xfQ1hYCistCisgIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCisgcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljX0NYWAorIAorKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKyt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bF9DWFgKKysKKyAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCisgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYCisgCitAQCAtMjAyODAsOSArMjExMjUsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoX0NYWAorICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgorIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnNfQ1hYCisgCistIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGhfQ1hYCistCisgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYCisgCitAQCAtMjAyOTgsNiArMjExNDAsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltc19DWFgKKyAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgorIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzX0NYWAorIAorKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KKytwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzX0NYWAorKworICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgorIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlY19DWFgKKyAKK2RpZmYgLS1naXQgYS9saWJjdGYvY29uZmlndXJlIGIvbGliY3RmL2NvbmZpZ3VyZQoraW5kZXggZTU0OTNiMzE2OTEuLjk5NzdlNGY3YTQyIDEwMDc1NQorLS0tIGEvbGliY3RmL2NvbmZpZ3VyZQorKysrIGIvbGliY3RmL2NvbmZpZ3VyZQorQEAgLTY2Myw2ICs2NjMsOCBAQCBPVE9PTAorIExJUE8KKyBOTUVESVQKKyBEU1lNVVRJTAorK01BTklGRVNUX1RPT0wKKytETExUT09MCisgT0JKRFVNUAorIExOX1MKKyBOTQorQEAgLTc3OCw2ICs3ODAsNyBAQCBlbmFibGVfc3RhdGljCisgd2l0aF9waWMKKyBlbmFibGVfZmFzdF9pbnN0YWxsCisgd2l0aF9nbnVfbGQKKyt3aXRoX2xpYnRvb2xfc3lzcm9vdAorIGVuYWJsZV9saWJ0b29sX2xvY2sKKyBlbmFibGVfbGFyZ2VmaWxlCisgZW5hYmxlX3dlcnJvcl9hbHdheXMKK0BAIC0xNDM2LDYgKzE0MzksOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KKyAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KKysgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCisrICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCisgICAtLXdpdGgtc3lzdGVtLXpsaWIgICAgICB1c2UgaW5zdGFsbGVkIGxpYnoKKyAKKyBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKK0BAIC01MzI0LDggKzUzMjksOCBAQCBlc2FjCisgCisgCisgCistbWFjcm9fdmVyc2lvbj0nMi4yLjdhJworLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCisrbWFjcm9fdmVyc2lvbj0nMi40JworK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCisgCisgCisgCitAQCAtNTQzNiw3ICs1NDQxLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQorICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgorLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgIEVDSE89J3ByaW50IC1yIC0tJworIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCitAQCAtNjEyMiw4ICs2MTI3LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKKyAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcworIHhzaV9zaGVsbD1ubworICggX2x0X2R1bW15PSJhL2IvYyIKKy0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCistICAgICAgPSBjLGEvYiwsIFwKKysgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisrICAgICAgPSBjLGEvYixiL2MsIFwKKyAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAorICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAorICAgJiYgeHNpX3NoZWxsPXllcworQEAgLTYxNzIsNiArNjE3Nyw4MCBAQCBlc2FjCisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKi0qLWN5Z3dpbiogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKysgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CisgaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjE4OCw2ICs2MjY3LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgZXNhYworIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyBjYXNlICRob3N0X29zIGluCisrICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisrICAgIGZpCisrICAgIDs7CisgICBkYXJ3aW4qKQorICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKK0BAIC02MzU2LDcgKzY0NDAsOCBAQCBtaW5ndyogfCBwdzMyKikKKyAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgICBlbHNlCistICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisrICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICAgZmkKKyAgIDs7CitAQCAtNjUxMCw2ICs2NTk1LDIxIEBAIGVzYWMKKyBmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQorICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQorKworK2ZpbGVfbWFnaWNfZ2xvYj0KKyt3YW50X25vY2FzZWdsb2I9bm8KKytpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorKyAgY2FzZSAkaG9zdF9vcyBpbgorKyAgbWluZ3cqIHwgcHczMiopCisrICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKysgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisrICAgIGVsc2UKKysgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjUyNSw5ICs2NjI1LDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCisraWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQorKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgorKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KKysgICAgRExMVE9PTD0iZmFsc2UiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCisrICBmaQorK2Vsc2UKKysgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Cisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworKworKworKworKworKworKworIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrICBkbworKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02NTQzLDcgKzY3OTYsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCistICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCisrICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02NTYzLDExICs2ODE2LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKyAKKysgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworKyAgZG9uZQorIGZpCistaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCisraWYgdGVzdCAteiAiJEFSIjsgdGhlbgorICAgYWNfY3RfQVI9JEFSCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrZG8KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY1ODMsNyArNjg0MCw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02NjAyLDYgKzY4NTksMTAgQEAgZWxzZQorICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKysKKysgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKKytkb25lCisrCisgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KKyAgICAgQVI9ImZhbHNlIgorICAgZWxzZQorQEAgLTY2MTMsMTYgKzY4NzQsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisgZXNhYworICAgICBBUj0kYWNfY3RfQVIKKyAgIGZpCistZWxzZQorLSAgQVI9IiRhY19jdl9wcm9nX0FSIgorIGZpCisgCistdGVzdCAteiAiJEFSIiAmJiBBUj1hcgorLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisrOiAke0FSPWFyfQorKzogJHtBUl9GTEFHUz1jcnV9CisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKytpbnQKKyttYWluICgpCisreworIAorKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JworKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisgCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KKyAKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKyAKKyAKKyAKK0BAIC02OTY0LDggKzcyODEsOCBAQCBlc2FjCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKKyAKKyAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisgCisgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCisgb3B0X2NyPQorQEAgLTcwMDEsNiArNzMxOCw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KKyAgIGVsc2UKKyAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKKyAgIGZpCisrICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCisgCisgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KKyAgIHBpcGVfd29ya3M9bm8KK0BAIC03MDQyLDYgKzczNjAsMTggQEAgX0xUX0VPRgorICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisrLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisrI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKysvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKysgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisrLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxzZQorKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CisrI2VuZGlmCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCitAQCAtNzA1Myw3ICs3MzgzLDcgQEAgX0xUX0VPRgorIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAorIAorIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KKy1jb25zdCBzdHJ1Y3QgeworK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7CisgICBjb25zdCBjaGFyICpuYW1lOworICAgdm9pZCAgICAgICAqYWRkcmVzczsKKyB9CitAQCAtNzA3OSw4ICs3NDA5LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKKyBfTFRfRU9GCisgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KKyAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKKy0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgorLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKKyAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCisgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1CitAQCAtNzA5MCw4ICs3NDIwLDggQEAgX0xUX0VPRgorICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCisgCSAgICBwaXBlX3dvcmtzPXllcworIAkgIGZpCistCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKKy0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKysJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUworKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUworIAllbHNlCisgCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1CisgCWZpCitAQCAtNzEyOCw2ICs3NDU4LDE2IEBAIGVsc2UKKyAkYXNfZWNobyAib2siID4mNjsgfQorIGZpCisgCisrIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCisraWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2ZpCisrCisrCisrCisrCisgCisgCisgCitAQCAtNzE0NCw2ICs3NDg0LDQ1IEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KKysKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKKytlbHNlCisrICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubworK2ZpCisrCisrCisrbHRfc3lzcm9vdD0KKytjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCisrIHllcykKKysgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKKysgICBmaQorKyAgIDs7ICMoCisrIC8qKQorKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorKyAgIDs7ICMoCisrIG5vfCcnKQorKyAgIDs7ICMoCisrICopCisrICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKKyskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQorKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQorKyAgIDs7CisrZXNhYworKworKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQorKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9CisgCisgCisgCitAQCAtNzM1NSw2ICs3NzM0LDEyMyBAQCBlc2FjCisgCisgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCisgCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCisrICAgIE1BTklGRVNUX1RPT0w9IjoiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCisrICBmaQorK2Vsc2UKKysgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubworKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQorKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAorKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKysgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKysgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworKyAgZmkKKysgIHJtIC1mIGNvbmZ0ZXN0KgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KKytpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgorKyAgTUFOSUZFU1RfVE9PTD06CisrZmkKKysKKysKKysKKysKKysKKyAKKyAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKK0BAIC03OTE4LDYgKzg0MTQsOCBAQCBfTFRfRU9GCisgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1CisgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQorICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKKysgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQorKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1CisgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCisgaW50IG1haW4oKSB7IHJldHVybiAwO30KKyBfTFRfRU9GCitAQCAtODA4Myw3ICs4NTgxLDggQEAgZmkKKyBMSUJUT09MX0RFUFM9IiRsdG1haW4iCisgCisgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KKy1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKKytMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCisrTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgorIAorIAorIAorQEAgLTgxNzIsNyArODY3MSw3IEBAIGFpeDMqKQorIGVzYWMKKyAKKyAjIEdsb2JhbCB2YXJpYWJsZXM6Cistb2ZpbGU9bGlidG9vbAorK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAorIGNhbl9idWlsZF9zaGFyZWQ9eWVzCisgCisgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCitAQCAtODQ3MCw4ICs4OTY5LDYgQEAgZmkKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KKyAKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKy0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAorICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKK0BAIC04NjM3LDYgKzkxMzQsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJworIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCisgCTs7CisrICAgICAgbmFnZm9yKikKKysJIyBOQUcgRm9ydHJhbiBjb21waWxlcgorKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCisrCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJworKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisrCTs7CisgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKKyAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKK0BAIC04Njk5LDcgKzkyMDIsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisrICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKKyAgICAgICAqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7CitAQCAtODc1NiwxMyArOTI1OSwxNyBAQCBjYXNlICRob3N0X29zIGluCisgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCisgICAgIDs7CisgZXNhYworLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQorLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorLQorLQorLQorLQorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CisrbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCisgCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KK0BAIC04ODIzLDYgKzkzMzAsMTEgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorICMKK0BAIC05MTczLDcgKzk2ODUsOCBAQCBfTFRfRU9GCisgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKyAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KKyAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCisgCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKK0BAIC05MjcyLDEyICs5Nzg1LDEyIEBAIF9MVF9FT0YKKyAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQorIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJworLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKyAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCisgCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKysJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworIAkgIGZpCisgCSAgOzsKKyAJZXNhYworQEAgLTkyOTEsOCArOTgwNCw4IEBAIF9MVF9FT0YKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJworIAl3bGFyYz0KKyAgICAgICBlbHNlCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGZpCisgICAgICAgOzsKKyAKK0BAIC05MzEwLDggKzk4MjMsOCBAQCBfTFRfRU9GCisgCisgX0xUX0VPRgorICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTM1Nyw4ICs5ODcwLDggQEAgX0xUX0VPRgorIAorICAgICAqKQorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTk0ODgsNyArMTAwMDEsMTMgQEAgX0xUX0VPRgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTUwMSwyMiArMTAwMjAsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTk1MjgsNyArMTAwNTQsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCWVsc2UKKyAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTk1NDEsMjIgKzEwMDczLDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtOTYwMSwyMCArMTAxNDAsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKy0gICAgICBsaWJleHQ9bGliCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCistICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCistICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC05Njc1LDcgKzEwMjU3LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCitAQCAtOTY4Myw3ICsxMDI2NSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4OSopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBmaQorQEAgLTk2OTksNyArMTAyODEsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDEwKikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgIGZpCitAQCAtOTcyMywxMCArMTAzMDUsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAlpYTY0KikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCSopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJZXNhYworICAgICAgIGVsc2UKK0BAIC05ODA1LDIzICsxMDM4NywzNiBAQCBmaQorIAorICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAorIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisgCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCistICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKysJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworLWludCBmb28odm9pZCkge30KKytpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworLQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCisrZWxzZQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKysgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KKysJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlmaQorICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCitAQCAtOTkwNiw3ICsxMDUwMSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICBlbHNlCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworQEAgLTk5MjUsOSArMTA1MjAsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJd2xhcmM9JyR7d2x9JworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisrCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgZWxzZQorIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KKyAJKiJDb21waWxlcnMgNS4wIiopCitAQCAtMTA1MDMsOCArMTEwOTgsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMTA1MzcsMTMgKzExMTMzLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKysKKysgICAgY2FzZSAkYnVpbGRfb3MgaW4KKysgICAgbWluZ3cqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKysgICAgICBsdF9zYXZlX2lmcz0kSUZTCisrICAgICAgSUZTPSc7JworKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKysgICAgICBkbworKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKysgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorKyAgICAgIGRvbmUKKysgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisrICAgICAgOzsKKysgICAgY3lnd2luKikKKysgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisrICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisrICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIDs7CisrICAgICopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICAgOzsKKyAgIGVzYWMKKy0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgIHNobGlicGF0aF92YXI9UEFUSAorICAgOzsKK0BAIC0xMDYzNSw3ICsxMTI4OSw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0xMTQzMSw3ICsxMjA4NSw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExNDM0ICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTQ3NSwxMCArMTIxMjksMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMTUzNyw3ICsxMjE5MSw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExNTQwICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTU4MSwxMCArMTIyMzUsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMzk5NCwxMyArMTQ2NDgsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKythcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNDAxNSwxNCArMTQ2NzYsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTQwNTUsMTIgKzE0NzE5LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCisgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE0MTE1LDggKzE0Nzc5LDEzIEBAIHJlbG9hZF9mbGFnIFwKKyBPQkpEVU1QIFwKKyBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCisgZmlsZV9tYWdpY19jbWQgXAorK2ZpbGVfbWFnaWNfZ2xvYiBcCisrd2FudF9ub2Nhc2VnbG9iIFwKKytETExUT09MIFwKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCisgQVIgXAorIEFSX0ZMQUdTIFwKKythcmNoaXZlcl9saXN0X3NwZWMgXAorIFNUUklQIFwKKyBSQU5MSUIgXAorIENDIFwKK0BAIC0xNDEyNiwxMiArMTQ3OTUsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKKytubV9maWxlX2xpc3Rfc3BlYyBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAorLWx0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAorIG5lZWRfbG9ja3MgXAorK01BTklGRVNUX1RPT0wgXAorIERTWU1VVElMIFwKKyBOTUVESVQgXAorIExJUE8gXAorQEAgLTE0MTQ3LDcgKzE0ODE4LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAorLWZpeF9zcmNmaWxlX3BhdGggXAorIGV4Y2x1ZGVfZXhwc3ltcyBcCisgaW5jbHVkZV9leHBzeW1zIFwKKyBmaWxlX2xpc3Rfc3BlYyBcCitAQCAtMTQxODMsNiArMTQ4NTMsNyBAQCBtb2R1bGVfY21kcyBcCisgbW9kdWxlX2V4cHN5bV9jbWRzIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzIFwKKyBwcmVsaW5rX2NtZHMgXAorK3Bvc3RsaW5rX2NtZHMgXAorIHBvc3RpbnN0YWxsX2NtZHMgXAorIHBvc3R1bmluc3RhbGxfY21kcyBcCisgZmluaXNoX2NtZHMgXAorQEAgLTE0OTM5LDcgKzE1NjEwLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0xNTA0MiwxOSArMTU3MTQsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCisgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgorIE5MMlNQPSRsdF9sdF9OTDJTUAorIAorKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisrCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrCisgIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KKyBPQkpEVU1QPSRsdF9PQkpEVU1QCisgCisgIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKKyAKKy0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgorKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKKyAKKysjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCisrCisrIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKKysKKysjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgorK0RMTFRPT0w9JGx0X0RMTFRPT0wKKysKKysjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrCisgIyBUaGUgYXJjaGl2ZXIuCisgQVI9JGx0X0FSCisrCisrIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KKyBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKKyAKKysjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KKythcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYworKworICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCisgU1RSSVA9JGx0X1NUUklQCisgCitAQCAtMTUwODQsNiArMTU3NzksMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKKyAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgorIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAorIAorKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgorK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYworKworKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCisrbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAorKworICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgorIG9iamRpcj0kb2JqZGlyCisgCitAQCAtMTUwOTMsNiArMTU3OTQsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CisgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcworIAorKyMgTWFuaWZlc3QgdG9vbC4KKytNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCisrCisgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgorIERTWU1VVElMPSRsdF9EU1lNVVRJTAorIAorQEAgLTE1MjA3LDEyICsxNTkxMSwxMiBAQCB3aXRoX2djYz0kR0NDCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKKyAKKy0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCistd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKy0KKyAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KKyBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKysKKyAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCisgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKKyAKK0BAIC0xNTI5OSw5ICsxNjAwMyw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCisgCistIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKKy0KKyAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scworIAorQEAgLTE1MzE3LDYgKzE2MDE4LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKKyAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgorIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCisgCisrIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKKyAKK0BAIC0xNTM0OSwyMTAgKzE2MDUzLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIGNhc2UgJHhzaV9zaGVsbCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCistIyBjYWxsOgorLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCistIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0CistIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCistIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bworLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCistICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9CistfQorLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CistICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQorLQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYworLX0KKy0KKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCistbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJworLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCistICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorLX0KKy0KKy1fTFRfRU9GCistZXNhYworLQorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMSs9XCQyIgorLX0KKy1fTFRfRU9GCistICAgIDs7CistICAqKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMT1cJCQxXCQyIgorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICBlc2FjCistCistCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorKworKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKKytmdW5jX2Rpcm5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKKytmdW5jX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCisrZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKKytmdW5jX3N0cmlwbmFtZSAoKVwKKyt7XAorK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKKytcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCisrZnVuY19zcGxpdF9sb25nX29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCisrZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCisrZnVuY19sbzJvICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAorK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKKytmdW5jX3hmb3JtICgpXAorK3tcCisrICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKKytmdW5jX2FyaXRoICgpXAorK3tcCisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCisrZnVuY19sZW4gKClcCisre1wKKysgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworK2ZpCisrCisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCisrZnVuY19hcHBlbmQgKClcCisre1wKKysgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCisrZnVuY19hcHBlbmRfcXVvdGVkICgpXAorK3tcCisrXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKKytcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytlbHNlCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZmkKKysKKytpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQorK2ZpCisrCisrCisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyAKK2RpZmYgLS1naXQgYS9saWJ0b29sLm00IGIvbGlidG9vbC5tNAoraW5kZXggNDM0NTMwMDU5ZmEuLmU0NWZkYzY5OThjIDEwMDY0NAorLS0tIGEvbGlidG9vbC5tNAorKysrIGIvbGlidG9vbC5tNAorQEAgLTEsNyArMSw4IEBACisgIyBsaWJ0b29sLm00IC0gQ29uZmlndXJlIGxpYnRvb2wgZm9yIHRoZSBob3N0IHN5c3RlbS4gLSotQXV0b2NvbmYtKi0KKyAjCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCitAQCAtMTAsNyArMTEsOCBAQAorIAorIG00X2RlZmluZShbX0xUX0NPUFlJTkddLCBbZG5sCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCitAQCAtMzcsNyArMzksNyBAQCBtNF9kZWZpbmUoW19MVF9DT1BZSU5HXSwgW2RubAorICMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgXSkKKyAKKy0jIHNlcmlhbCA1NiBMVF9JTklUCisrIyBzZXJpYWwgNTcgTFRfSU5JVAorIAorIAorICMgTFRfUFJFUkVRKFZFUlNJT04pCitAQCAtOTIsNyArOTQsOCBAQCBfTFRfU0VUX09QVElPTlMoWyQwXSwgWyQxXSkKKyBMSUJUT09MX0RFUFM9IiRsdG1haW4iCisgCisgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KKy1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKKytMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCisrTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgorIEFDX1NVQlNUKExJQlRPT0wpZG5sCisgCisgX0xUX1NFVFVQCitAQCAtMTY2LDEwICsxNjksMTMgQEAgX0xUX0RFQ0woW10sIFtleGVleHRdLCBbMF0sIFtFeGVjdXRhYmxlIGZpbGUgc3VmZml4IChub3JtYWxseSAiIildKWRubAorIGRubAorIG00X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorIG00X3JlcXVpcmUoW19MVF9DSEVDS19TSEVMTF9GRUFUVVJFU10pZG5sCisrbTRfcmVxdWlyZShbX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlNdKWRubAorIG00X3JlcXVpcmUoW19MVF9DTURfUkVMT0FEXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9EXSlkbmwKKyttNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQl0pZG5sCisgbTRfcmVxdWlyZShbX0xUX0NNRF9PTERfQVJDSElWRV0pZG5sCisgbTRfcmVxdWlyZShbX0xUX0NNRF9HTE9CQUxfU1lNQk9MU10pZG5sCisrbTRfcmVxdWlyZShbX0xUX1dJVEhfU1lTUk9PVF0pZG5sCisgCisgX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoWworICMgU2VlIGlmIHdlIGFyZSBydW5uaW5nIG9uIHpzaCwgYW5kIHNldCB0aGUgb3B0aW9ucyB3aGljaCBhbGxvdyBvdXIKK0BAIC0xOTksNyArMjA1LDcgQEAgYWl4MyopCisgZXNhYworIAorICMgR2xvYmFsIHZhcmlhYmxlczoKKy1vZmlsZT1saWJ0b29sCisrb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCisgY2FuX2J1aWxkX3NoYXJlZD15ZXMKKyAKKyAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKK0BAIC02MzIsNyArNjM4LDcgQEAgbTRfaWZzZXQoW0FDX1BBQ0tBR0VfTkFNRV0sIFtBQ19QQUNLQUdFX05BTUUgXSljb25maWcubHRbXWRubAorIG00X2lmc2V0KFtBQ19QQUNLQUdFX1ZFUlNJT05dLCBbIEFDX1BBQ0tBR0VfVkVSU0lPTl0pCisgY29uZmlndXJlZCBieSAkWzBdLCBnZW5lcmF0ZWQgYnkgbTRfUEFDS0FHRV9TVFJJTkcuCisgCistQ29weXJpZ2h0IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorK0NvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyBUaGlzIGNvbmZpZy5sdCBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIGdpdmVzIHVubGltaXRlZCBwZXJtaXNpb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LiIKKyAKK0BAIC03NDYsMTUgKzc1MiwxMiBAQCBfTFRfRU9GCisgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCisgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQorICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKy0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorIAorLSAgX0xUX1BST0dfWFNJX1NIRUxMRk5TCisrICBfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TCisgCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyBdLAorQEAgLTk4MCw2ICs5ODMsOCBAQCBfTFRfRU9GCisgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mQVNfTUVTU0FHRV9MT0dfRkQKKysgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mQVNfTUVTU0FHRV9MT0dfRkQKKysgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKKyBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorIF9MVF9FT0YKK0BAIC0xMDY5LDMwICsxMDc0LDQxIEBAIG00X2RlZnVuKFtfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFU10sCisgICBmaQorIF0pCisgCistIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFtUQUdOQU1FXSkKKysjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAjIExpbmtzIGEgbWluaW1hbCBwcm9ncmFtIGFuZCBjaGVja3MgdGhlIGV4ZWN1dGFibGUKKyAjIGZvciB0aGUgc3lzdGVtIGRlZmF1bHQgaGFyZGNvZGVkIGxpYnJhcnkgcGF0aC4gSW4gbW9zdCBjYXNlcywKKyAjIHRoaXMgaXMgL3Vzci9saWI6L2xpYiwgYnV0IHdoZW4gdGhlIE1QSSBjb21waWxlcnMgYXJlIHVzZWQKKyAjIHRoZSBsb2NhdGlvbiBvZiB0aGUgY29tbXVuaWNhdGlvbiBhbmQgTVBJIGxpYnMgYXJlIGluY2x1ZGVkIHRvby4KKyAjIElmIHdlIGRvbid0IGZpbmQgYW55dGhpbmcsIHVzZSB0aGUgZGVmYXVsdCBsaWJyYXJ5IHBhdGggYWNjb3JkaW5nCisgIyB0byB0aGUgYWl4IGxkIG1hbnVhbC4KKysjIFN0b3JlIHRoZSByZXN1bHRzIGZyb20gdGhlIGRpZmZlcmVudCBjb21waWxlcnMgZm9yIGVhY2ggVEFHTkFNRS4KKysjIEFsbG93IHRvIG92ZXJyaWRlIHRoZW0gZm9yIGFsbCB0YWdzIHRocm91Z2ggbHRfY3ZfYWl4X2xpYnBhdGguCisgbTRfZGVmdW4oW19MVF9TWVNfTU9EVUxFX1BBVEhfQUlYXSwKKyBbbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKKy1BQ19MSU5LX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW0FDX0xBTkdfUFJPR1JBTV0pXSxbCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpXSxbXSkKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKytpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBBQ19DQUNIRV9WQUwoW19MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pXSwKKysgIFtBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNXSxbCisrICBsdF9haXhfbGlicGF0aF9zZWQ9J1sKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfV0nCisrICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKSI7IHRoZW4KKysgICAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaV0sW10pCisrICBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkiOyB0aGVuCisrICAgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysgIF0pCisrICBhaXhfbGlicGF0aD0kX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkKKytmaQorIF0pIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorIAorIAorQEAgLTExMTcsNyArMTEzMyw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgCisgQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gcHJpbnQgc3RyaW5nc10pCisgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCistaWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKytpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICAgRUNITz0ncHJpbnQgLXIgLS0nCisgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KK0BAIC0xMTYxLDYgKzExNzcsMzkgQEAgX0xUX0RFQ0woW10sIFtFQ0hPXSwgWzFdLCBbQW4gZWNobyBwcm9ncmFtIHRoYXQgcHJvdGVjdHMgYmFja3NsYXNoZXNdKQorIF0pIyBfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSAorIAorIAorKyMgX0xUX1dJVEhfU1lTUk9PVAorKyMgLS0tLS0tLS0tLS0tLS0tLQorK0FDX0RFRlVOKFtfTFRfV0lUSF9TWVNST09UXSwKKytbQUNfTVNHX0NIRUNLSU5HKFtmb3Igc3lzcm9vdF0pCisrQUNfQVJHX1dJVEgoW2xpYnRvb2wtc3lzcm9vdF0sCisrWyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdFs9RElSXSBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLl0sCisrW10sIFt3aXRoX2xpYnRvb2xfc3lzcm9vdD1ub10pCisrCisrZG5sIGx0X3N5c3Jvb3Qgd2lsbCBhbHdheXMgYmUgcGFzc2VkIHVucXVvdGVkLiAgV2UgcXVvdGUgaXQgaGVyZQorK2RubCBpbiBjYXNlIHRoZSB1c2VyIHBhc3NlZCBhIGRpcmVjdG9yeSBuYW1lLgorK2x0X3N5c3Jvb3Q9CisrY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAorKyB5ZXMpCisrICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKysgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisrICAgZmkKKysgICA7OyAjKAorKyAvKikKKysgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKysgICA7OyAjKAorKyBub3wnJykKKysgICA7OyAjKAorKyAqKQorKyAgIEFDX01TR19SRVNVTFQoWyR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9XSkKKysgICBBQ19NU0dfRVJST1IoW1RoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC5dKQorKyAgIDs7CisrZXNhYworKworKyBBQ19NU0dfUkVTVUxUKFske2x0X3N5c3Jvb3Q6LW5vfV0pCisrX0xUX0RFQ0woW10sIFtsdF9zeXNyb290XSwgWzBdLCBbVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBdZG5sCisrW2RlcGVuZGVudCBsaWJyYXJpZXMsIGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuXSldKQorKworICMgX0xUX0VOQUJMRV9MT0NLCisgIyAtLS0tLS0tLS0tLS0tLS0KKyBtNF9kZWZ1bihbX0xUX0VOQUJMRV9MT0NLXSwKK0BAIC0xMzIwLDE0ICsxMzY5LDQ3IEBAIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorIF0pIyBfTFRfRU5BQkxFX0xPQ0sKKyAKKyAKKysjIF9MVF9QUk9HX0FSCisrIyAtLS0tLS0tLS0tLQorK200X2RlZnVuKFtfTFRfUFJPR19BUl0sCisrW0FDX0NIRUNLX1RPT0xTKEFSLCBbYXJdLCBmYWxzZSkKKys6ICR7QVI9YXJ9CisrOiAke0FSX0ZMQUdTPWNydX0KKytfTFRfREVDTChbXSwgW0FSXSwgWzFdLCBbVGhlIGFyY2hpdmVyXSkKKytfTFRfREVDTChbXSwgW0FSX0ZMQUdTXSwgWzFdLCBbRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmVdKQorKworK0FDX0NBQ0hFX0NIRUNLKFtmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydF0sIFtsdF9jdl9hcl9hdF9maWxlXSwKKysgIFtsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTV0sCisrICAgICBbZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CisrICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JkFTX01FU1NBR0VfTE9HX0ZEJworKyAgICAgIEFDX1RSWV9FVkFMKFtsdF9hcl90cnldKQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwlBQ19UUllfRVZBTChbbHRfYXJfdHJ5XSkKKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisrICAgICBdKQorKyAgXSkKKysKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKytfTFRfREVDTChbXSwgW2FyY2hpdmVyX2xpc3Rfc3BlY10sIFsxXSwKKysgIFtIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXJdKQorK10pIyBfTFRfUFJPR19BUgorKworKworICMgX0xUX0NNRF9PTERfQVJDSElWRQorICMgLS0tLS0tLS0tLS0tLS0tLS0tLQorIG00X2RlZnVuKFtfTFRfQ01EX09MRF9BUkNISVZFXSwKKy1bQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIGZhbHNlKQorLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKKy10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorLV9MVF9ERUNMKFtdLCBbQVJdLCBbMV0sIFtUaGUgYXJjaGl2ZXJdKQorLV9MVF9ERUNMKFtdLCBbQVJfRkxBR1NdLCBbMV0pCisrW19MVF9QUk9HX0FSCisgCisgQUNfQ0hFQ0tfVE9PTChTVFJJUCwgc3RyaXAsIDopCisgdGVzdCAteiAiJFNUUklQIiAmJiBTVFJJUD06CitAQCAtMTYyMyw3ICsxNzA1LDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistWyNsaW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIgorK1sjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTE2NjcsMTAgKzE3NDksMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0yMjEwLDggKzIyOTIsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMjI0NCwxMyArMjMyNyw3MSBAQCBtNF9pZihbJDFdLCBbXSxbCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFtbYS16QS1aXV1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBbJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsXTsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTIzNDIsNyArMjQ4Myw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0yOTUwLDYgKzMwOTEsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBlc2FjCisgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworIGNhc2UgJGhvc3Rfb3MgaW4KKysgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisrICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKysgICAgZmkKKysgICAgOzsKKyAgIGRhcndpbiopCisgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworQEAgLTMwMTYsNyArMzE2Miw4IEBAIG1pbmd3KiB8IHB3MzIqKQorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKKyAgIGVsc2UKKy0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisrICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKysgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCisgICBmaQorICAgOzsKK0BAIC0zMTY3LDYgKzMzMTQsMjEgQEAgdHBmKikKKyAgIDs7CisgZXNhYworIF0pCisrCisrZmlsZV9tYWdpY19nbG9iPQorK3dhbnRfbm9jYXNlZ2xvYj1ubworK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisrICBjYXNlICRob3N0X29zIGluCisrICBtaW5ndyogfCBwdzMyKikKKysgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKKysgICAgZWxzZQorKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1tcMV1dXC9bW1wxXV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtMzE3NCw3ICszMzM2LDExIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorIF9MVF9ERUNMKFtdLCBbZGVwbGlic19jaGVja19tZXRob2RdLCBbMV0sCisgICAgIFtNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0c10pCisgX0xUX0RFQ0woW10sIFtmaWxlX21hZ2ljX2NtZF0sIFsxXSwKKy0gICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiXSkKKysgICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQorK19MVF9ERUNMKFtdLCBbZmlsZV9tYWdpY19nbG9iXSwgWzFdLAorKyAgICBbSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQorK19MVF9ERUNMKFtdLCBbd2FudF9ub2Nhc2VnbG9iXSwgWzFdLAorKyAgICBbRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKKyBdKSMgX0xUX0NIRUNLX01BR0lDX01FVEhPRAorIAorIAorQEAgLTMyNzcsNiArMzQ0Myw2NyBAQCBkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CisgZG5sIEFDX0RFRlVOKFtBTV9QUk9HX05NXSwgW10pCisgZG5sIEFDX0RFRlVOKFtBQ19QUk9HX05NXSwgW10pCisgCisrIyBfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQgorKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIGhvdyB0byBkZXRlcm1pbmUgdGhlIG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5CisrIyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBsaW5rIGxpYnJhcnkuCisrIyAgLS0gUE9SVE1FIGZpbGwgaW4gd2l0aCB0aGUgZHluYW1pYyBsaWJyYXJ5IGNoYXJhY3RlcmlzdGljcworK200X2RlZnVuKFtfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQl0sCisrW200X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSkKKyttNF9yZXF1aXJlKFtfTFRfREVDTF9PQkpEVU1QXSkKKyttNF9yZXF1aXJlKFtfTFRfREVDTF9ETExUT09MXSkKKytBQ19DQUNIRV9DSEVDSyhbaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllc10sCisrbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQsCisrW2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworK10pCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworK19MVF9ERUNMKFtdLCBbc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWRdLCBbMV0sCisrICAgIFtDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzXSkKKytdKSMgX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUIKKysKKysKKysjIF9MVF9QQVRIX01BTklGRVNUX1RPT0wKKysjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIGxvY2F0ZSB0aGUgbWFuaWZlc3QgdG9vbAorK200X2RlZnVuKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSwKKytbQUNfQ0hFQ0tfVE9PTChNQU5JRkVTVF9UT09MLCBtdCwgOikKKyt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAorK0FDX0NBQ0hFX0NIRUNLKFtpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2xdLCBbbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sXSwKKysgIFtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JkFTX01FU1NBR0VfTE9HX0ZECisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKysgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKysgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworKyAgZmkKKysgIHJtIC1mIGNvbmZ0ZXN0Kl0pCisraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKysgIE1BTklGRVNUX1RPT0w9OgorK2ZpCisrX0xUX0RFQ0woW10sIFtNQU5JRkVTVF9UT09MXSwgWzFdLCBbTWFuaWZlc3QgdG9vbF0pZG5sCisrXSkjIF9MVF9QQVRIX01BTklGRVNUX1RPT0wKKysKKyAKKyAjIExUX0xJQl9NCisgIyAtLS0tLS0tLQorQEAgLTM0MDMsOCArMzYzMCw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChsaWJbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwobGliW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtMzQ0MCw2ICszNjY3LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qW1sJIF1dXCgkc3ltY29kZSRzeW1jb2RlKlwpW1sJIF1dW1sJIF1dKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTM0NzMsNiArMzcwMSwxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QKKysjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisrLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisrIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC0zNDg0LDcgKzM3MjQsNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRAJnRAX0RMU1lNX0NPTlNUIHN0cnVjdCB7CisgICBjb25zdCBjaGFyICpuYW1lOworICAgdm9pZCAgICAgICAqYWRkcmVzczsKKyB9CitAQCAtMzUxMCwxNSArMzc1MCwxNSBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSkiCisgCSAgaWYgQUNfVFJZX0VWQUwoYWNfbGluaykgJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorIAkgICAgcGlwZV93b3Jrcz15ZXMKKyAJICBmaQorLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCistCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisrCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKysJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKKyAJZWxzZQorIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAJZmkKK0BAIC0zNTUxLDYgKzM3OTEsMTMgQEAgZWxzZQorICAgQUNfTVNHX1JFU1VMVChvaykKKyBmaQorIAorKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgorK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbW0BdXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2ZpCisrCisgX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfcGlwZV0sIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlXSwgWzFdLAorICAgICBbVGFrZSB0aGUgb3V0cHV0IG9mIG5tIGFuZCBwcm9kdWNlIGEgbGlzdGluZyBvZiByYXcgc3ltYm9scyBhbmQgQyBuYW1lc10pCisgX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbMV0sCitAQCAtMzU2MSw2ICszODA4LDggQEAgX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NdLAorIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLAorICAgICBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeF0sIFsxXSwKKyAgICAgW1RyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkXSkKKytfTFRfREVDTChbXSwgW25tX2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAorKyAgICBbU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciAkTk1dKQorIF0pICMgX0xUX0NNRF9HTE9CQUxfU1lNQk9MUworIAorIAorQEAgLTM1NzIsNyArMzgyMSw2IEBAIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPQorIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KKyBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9CisgCistQUNfTVNHX0NIRUNLSU5HKFtmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQ10pCisgbTRfaWYoWyQxXSwgW0NYWF0sIFsKKyAgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KKyAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCitAQCAtMzY3OCw2ICszOTI2LDEyIEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCisgCSAgOzsKKyAJZXNhYworIAk7OworKyAgICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBvczIqIHwgcHczMiogfCBjZWdjYyopCisrCSMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKKysJIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KKysJbTRfaWYoWyQxXSwgW0dDSl0sIFtdLAorKwkgIFtfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1ERExMX0VYUE9SVCddKQorKwk7OworICAgICAgIGRndXgqKQorIAljYXNlICRjY19iYXNlbmFtZSBpbgorIAkgIGVjKysqKQorQEAgLTM4MzAsNyArNDA4NCw3IEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCisgCTs7CisgICAgICAgc29sYXJpcyopCisgCWNhc2UgJGNjX2Jhc2VuYW1lIGluCistCSAgQ0MqKQorKwkgIENDKiB8IHN1bkNDKikKKyAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKKyAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisgCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworQEAgLTQwNTMsNiArNDMwNywxMiBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWworIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy0tc2hhcmVkJworIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwtV2wsLCcKKysJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctUElDJworKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtNDExNSw3ICs0Mzc1LDcgQEAgbTRfaWYoWyQxXSwgW0NYWF0sIFsKKyAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisrICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQorIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnOzsKK0BAIC00MTcyLDkgKzQ0MzIsMTEgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9IiRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSlAJnRAbTRfaWYoWyQxXSxbXSxbIC1EUElDXSxbbTRfaWYoWyQxXSxbQ1hYXSxbIC1EUElDXSxbXSldKSIKKyAgICAgOzsKKyBlc2FjCistQUNfTVNHX1JFU1VMVChbJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKV0pCistX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCistCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKKysKKytBQ19DQUNIRV9DSEVDSyhbZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUNdLAorKyAgW19MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKV0sCisrICBbX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSldKQorK19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0kX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpCisgCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KK0BAIC00MTkzLDYgKzQ0NTUsOCBAQCBmaQorIF9MVF9UQUdERUNMKFtwaWNfZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX3BpY10sIFsxXSwKKyAJW0FkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0c10pCisgCisrX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCisrCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorICMKK0BAIC00MjEzLDYgKzQ0NzcsNyBAQCBfTFRfVEFHREVDTChbbGlua19zdGF0aWNfZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY10sIFsxXSwKKyBtNF9kZWZ1bihbX0xUX0xJTktFUl9TSExJQlNdLAorIFtBQ19SRVFVSVJFKFtMVF9QQVRIX0xEXSlkbmwKKyBBQ19SRVFVSVJFKFtMVF9QQVRIX05NXSlkbmwKKyttNF9yZXF1aXJlKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCisgbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKK0BAIC00MjIxLDYgKzQ0ODYsNyBAQCBtNF9yZXF1aXJlKFtfTFRfVEFHX0NPTVBJTEVSXSlkbmwKKyBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllc10pCisgbTRfaWYoWyQxXSwgW0NYWF0sIFsKKyAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJ10KKyAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgIGFpeFtbNC05XV0qKQorICAgICAjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KK0BAIC00MjM1LDE1ICs0NTAxLDIwIEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCisgICAgIDs7CisgICBwdzMyKikKKyAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9IiRsdGRsbF9jbWRzIgorLSAgOzsKKysgICAgOzsKKyAgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCistICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvOy9eLipbWyBdXV9fbm1fXy9zL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKy0gIDs7CisrICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisrICAgIGNsKikgOzsKKysgICAgKikKKysgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLztzL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJ10KKysgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisgICAqKQorICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworLSAgOzsKKysgICAgOzsKKyAgIGVzYWMKKy0gIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionXQorIF0sIFsKKyAgIHJ1bnBhdGhfdmFyPQorICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQorQEAgLTQ0MTEsNyArNDY4Miw4IEBAIF9MVF9FT0YKKyAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKyAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCisgICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCistICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvO3MvXi4qW1sgXV1fX25tX19cKFtbXiBdXSpcKVtbIF1dW1teIF1dKi9cMSBEQVRBLzsvXklbWyBdXS9kOy9eW1tBSVRXXV1bWyBdXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnXQorIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworQEAgLTQ1MTAsMTIgKzQ3ODIsMTIgQEAgX0xUX0VPRgorIAkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKKyAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KKyAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0nLXJwYXRoICRsaWJkaXInCistCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisgCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtNDUyOSw4ICs0ODAxLDggQEAgX0xUX0VPRgorIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJworIAl3bGFyYz0KKyAgICAgICBlbHNlCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtNDU0OCw4ICs0ODIwLDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgIGZpCitAQCAtNDU5NSw4ICs0ODY3LDggQEAgX0xUX0VPRgorIAorICAgICAqKQorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgIGZpCitAQCAtNDcyNiw3ICs0OTk4LDcgQEAgX0xUX0VPRgorIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKKyAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLSAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKysgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCisgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorICAgICAgIGVsc2UKK0BAIC00NzM3LDcgKzUwMDksNyBAQCBfTFRfRU9GCisgCWVsc2UKKyAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKysJIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCisgCSBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorIAkgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KK0BAIC00NzgxLDIwICs1MDUzLDYzIEBAIF9MVF9FT0YKKyAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJworLSAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCistICAgICAgbGliZXh0PWxpYgorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgorLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKy0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKy0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorLSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKy0gICAgICBfTFRfVEFHVkFSKGZpeF9zcmNmaWxlX3BhdGgsICQxKT0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCistICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisrCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorKwlfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcworKwlfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9J0AnCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworKwlfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKysJX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJX0xUX1RBR1ZBUihvbGRfcG9zdGluc3RhbGxfY21kcywgJDEpPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJX0xUX1RBR1ZBUihwb3N0bGlua19jbWRzLCAkMSk9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICouZXhlfCouRVhFKSA7OworKwkgICAgKikKKysJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkgICAgICA7OworKwkgIGVzYWN+CisrCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICBmaScKKysJOzsKKysgICAgICAqKQorKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKysJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisrCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKysJX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCV9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCisrCV9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworKwk7OworKyAgICAgIGVzYWMKKyAgICAgICA7OworIAorICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorQEAgLTQ4MjgsNyArNTE0Myw3IEBAIF9MVF9FT0YKKyAKKyAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCistICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCisgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKyAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworQEAgLTQ4MzYsNyArNTE1MSw3IEBAIF9MVF9FT0YKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC00ODUyLDcgKzUxNjcsNyBAQCBfTFRfRU9GCisgCisgICAgIGhwdXgxMCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgICBmaQorQEAgLTQ4NzYsMTAgKzUxOTEsMTAgQEAgX0xUX0VPRgorIAkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWlhNjQqKQorLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJZXNhYworICAgICAgIGVsc2UKK0BAIC00OTI2LDE2ICs1MjQxLDMxIEBAIF9MVF9FT0YKKyAKKyAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAorIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisgCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCistICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorLSAgICAgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtpbnQgZm9vKHZvaWQpIHt9XSldLAorLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworLSAgICAgICAgKQorLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKysJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKysJQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2xdLAorKwkgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbF0sCisrCSAgW3NhdmVfTERGTEFHUz0iJExERkxBR1MiCisrCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKysJICAgQUNfTElOS19JRkVMU0UoCisrCSAgICAgW0FDX0xBTkdfU09VUkNFKAorKwkgICAgICAgIFtBQ19MQU5HX0NBU0UoW0NdLCBbW2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH1dXSwKKysJCQkgICAgICBbQysrXSwgW1tpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9XV0sCisrCQkJICAgICAgW0ZvcnRyYW4gNzddLCBbWworKyAgICAgIHN1YnJvdXRpbmUgZm9vCisrICAgICAgZW5kXV0sCisrCQkJICAgICAgW0ZvcnRyYW5dLCBbWworKyAgICAgIHN1YnJvdXRpbmUgZm9vCisrICAgICAgZW5kXV0pXSldLAorKwkgICAgICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzXSwKKysJICAgICAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vXSkKKysgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiXSkKKysJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorKyAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJZmkKKyAgICAgICBlbHNlCisgCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCitAQCAtNTAyMCw3ICs1MzUwLDcgQEAgX0xUX0VPRgorICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICAgZWxzZQorIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCitAQCAtNTAzOSw5ICs1MzY5LDkgQEAgX0xUX0VPRgorICAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16IGRlZnMnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJd2xhcmM9JyR7d2x9JworLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisrCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgZWxzZQorIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KKyAJKiJDb21waWxlcnMgNS4wIiopCitAQCAtNTMxMyw4ICs1NjQzLDYgQEAgX0xUX1RBR0RFQ0woW10sIFtpbmhlcml0X3JwYXRoXSwgWzBdLAorICAgICB0byBydW50aW1lIHBhdGggbGlzdF0pCisgX0xUX1RBR0RFQ0woW10sIFtsaW5rX2FsbF9kZXBsaWJzXSwgWzBdLAorICAgICBbV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzXSkKKy1fTFRfVEFHREVDTChbXSwgW2ZpeF9zcmNmaWxlX3BhdGhdLCBbMV0sCistICAgIFtGaXggdGhlIHNoZWxsIHZhcmlhYmxlICRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXJdKQorIF9MVF9UQUdERUNMKFtdLCBbYWx3YXlzX2V4cG9ydF9zeW1ib2xzXSwgWzBdLAorICAgICBbU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkXSkKKyBfTFRfVEFHREVDTChbXSwgW2V4cG9ydF9zeW1ib2xzX2NtZHNdLCBbMl0sCitAQCAtNTMyNSw2ICs1NjUzLDggQEAgX0xUX1RBR0RFQ0woW10sIFtpbmNsdWRlX2V4cHN5bXNdLCBbMV0sCisgICAgIFtTeW1ib2xzIHRoYXQgbXVzdCBhbHdheXMgYmUgZXhwb3J0ZWRdKQorIF9MVF9UQUdERUNMKFtdLCBbcHJlbGlua19jbWRzXSwgWzJdLAorICAgICBbQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXNdKQorK19MVF9UQUdERUNMKFtdLCBbcG9zdGxpbmtfY21kc10sIFsyXSwKKysgICAgW0NvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXNdKQorIF9MVF9UQUdERUNMKFtdLCBbZmlsZV9saXN0X3NwZWNdLCBbMV0sCisgICAgIFtTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXNdKQorIGRubCBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAorQEAgLTU0MjYsNiArNTc1Niw3IEBAIENDPSIkbHRfc2F2ZV9DQyIKKyBtNF9kZWZ1bihbX0xUX0xBTkdfQ1hYX0NPTkZJR10sCisgW200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorIG00X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKKyttNF9yZXF1aXJlKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSlkbmwKKyBpZiB0ZXN0IC1uICIkQ1hYIiAmJiAoIHRlc3QgIlgkQ1hYIiAhPSAiWG5vIiAmJgorICAgICAoICh0ZXN0ICJYJENYWCIgPSAiWGcrKyIgJiYgYGcrKyAtdiA+L2Rldi9udWxsIDI+JjFgICkgfHwKKyAgICAgKHRlc3QgIlgkQ1hYIiAhPSAiWGcrKyIpKSkgOyB0aGVuCitAQCAtNTQ4Nyw2ICs1ODE4LDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAKKyAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCisgICBsdF9zYXZlX0NDPSRDQworKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUworICAgbHRfc2F2ZV9MRD0kTEQKKyAgIGx0X3NhdmVfR0NDPSRHQ0MKKyAgIEdDQz0kR1hYCitAQCAtNTUwNCw2ICs1ODM2LDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAgIGZpCisgICB0ZXN0IC16ICIke0xEQ1hYK3NldH0iIHx8IExEPSRMRENYWAorICAgQ0M9JHtDWFgtImMrKyJ9CisrICBDRkxBR1M9JENYWEZMQUdTCisgICBjb21waWxlcj0kQ0MKKyAgIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKKyAgIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKK0BAIC01NjY3LDcgKzYwMDAsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorICAgICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKKyAgICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuIGVtcHR5CisgICAgICAgICAgICMgZXhlY3V0YWJsZS4KKy0gICAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKysgICAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKKyAgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCisgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTU2NzksNyArNjAxMiw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgICAgICAgICAgIGVsc2UKKyAJICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKysJICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCisgCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCisgCSAgICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCitAQCAtNTcyMSwyOSArNjA1NCw3NSBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorICAgICAgICAgOzsKKyAKKyAgICAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCistICAgICAgICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAorLSAgICAgICAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCistICAgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJworLSAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCistICAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCistICAgICAgICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKy0KKy0gICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKy0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworLSAgICAgICAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCistICAgICAgICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCistICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorLQkgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworLSAgICAgICAgICBlbHNlCistCSAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKy0JICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CistICAgICAgICAgIGZpfgorLSAgICAgICAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCistICAgICAgICBlbHNlCistICAgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKy0gICAgICAgIGZpCistICAgICAgICA7OworKwljYXNlICRHWFgsJGNjX2Jhc2VuYW1lIGluCisrCSxjbCogfCBubyxjbCopCisrCSAgIyBOYXRpdmUgTVNWQworKwkgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKysJICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJworKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorKwkgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9eWVzCisrCSAgX0xUX1RBR1ZBUihmaWxlX2xpc3Rfc3BlYywgJDEpPSdAJworKwkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCSAgbGliZXh0PWxpYgorKwkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwkgIHNocmV4dF9jbWRzPSIuZGxsIgorKwkgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgICAgJFNFRCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgICBlbHNlCisrCSAgICAgICRTRUQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgICAgZml+CisrCSAgICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgICBsaW5rbmFtZXM9JworKwkgICMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKysJICAjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworKwkgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworKwkgICMgRG9uJ3QgdXNlIHJhbmxpYgorKwkgIF9MVF9UQUdWQVIob2xkX3Bvc3RpbnN0YWxsX2NtZHMsICQxKT0nY2htb2QgNjQ0ICRvbGRsaWInCisrCSAgX0xUX1RBR1ZBUihwb3N0bGlua19jbWRzLCAkMSk9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisrCSAgICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAgICouZXhlfCouRVhFKSA7OworKwkgICAgICAqKQorKwkJbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkJbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJCTs7CisrCSAgICBlc2FjfgorKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRsdF9vdXRwdXRmaWxlIn4KKysJICAgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworKwkgICAgZmknCisrCSAgOzsKKysJKikKKysJICAjIGcrKworKwkgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCisrCSAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKysJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJworKwkgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCisrCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisrCSAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubworKwkgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworKworKwkgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKysJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKysJICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKKysJICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCisrCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworKwkgICAgZWxzZQorKwkgICAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKysJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKysJICAgIGZpfgorKwkgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworKwkgIGVsc2UKKysJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKysJICBmaQorKwkgIDs7CisrCWVzYWMKKysJOzsKKyAgICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorICAgICAgICAgX0xUX0RBUldJTl9MSU5LRVJfRkVBVFVSRVMoJDEpCisgCTs7CitAQCAtNTgxOCw3ICs2MTk3LDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgICA7OworICAgICAgICAgICAqKQorICAgICAgICAgICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCistICAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysgICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKyAgICAgICAgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KK0BAIC01ODg5LDEwICs2MjY4LDEwIEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKyAJICAgICAgICAgICAgOzsKKyAJICAgICAgICAgIGlhNjQqKQorLQkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgICAgICAgICAgIDs7CisgCSAgICAgICAgICAqKQorLQkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKysJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworIAkgICAgICAgICAgICA7OworIAkgICAgICAgIGVzYWMKKyAJICAgICAgZmkKK0BAIC01OTMzLDkgKzYzMTIsOSBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorICAgICAgICAgICAqKQorIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKyAJICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCSAgICAgIGVsc2UKKy0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCisrCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgLW8gJGxpYicKKyAJICAgICAgZmkKKyAJICAgIGZpCisgCSAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKK0BAIC02MDA1LDIwICs2Mzg0LDIwIEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgCSAgICAgIF9MVF9UQUdWQVIocHJlbGlua19jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CisgCQlybSAtcmYgJHRwbGRpcn4KKyAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9ianMgJGxpYm9ianMgJGNvbXBpbGVfZGVwbGlic34KKy0JCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgIicKKysJCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCInCisgCSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorIAkJcm0gLXJmICR0cGxkaXJ+CisgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvbGRvYmpzJG9sZF9kZXBsaWJzfgorLQkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYH4KKysJCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgfgorIAkJJFJBTkxJQiAkb2xkbGliJworIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorIAkJcm0gLXJmICR0cGxkaXJ+CisgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KKy0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCisrCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKKyAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CisgCQlybSAtcmYgJHRwbGRpcn4KKyAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgorLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAJICAgICAgOzsKKyAJICAgICopICMgVmVyc2lvbiA2IGFuZCBhYm92ZSB1c2Ugd2VhayBzeW1ib2xzCisgCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJworQEAgLTYyMTMsNyArNjU5Miw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCQkgIDs7CisgCSAgICAgICAgKikKKy0JICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkJICA7OworIAkgICAgICBlc2FjCisgCitAQCAtNjI1OSw3ICs2NjM4LDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAKKyAgICAgICBzb2xhcmlzKikKKyAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgICAgIENDKikKKysgICAgICAgICAgQ0MqIHwgc3VuQ0MqKQorIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKworICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsJDEpPXllcworIAkgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXpkZWZzJworQEAgLTYzMDAsOSArNjY3OSw5IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKyAJICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0teiAke3dsfWRlZnMnCisgCSAgICAgIGlmICRDQyAtLXZlcnNpb24gfCAkR1JFUCAtdiAnXjJcLjcnID4gL2Rldi9udWxsOyB0aGVuCistCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKKysJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKKyAJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorLQkJICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisrCQkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgCisgCSAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cworIAkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorQEAgLTY0MzEsNiArNjgxMCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKKyAKKyAgIENDPSRsdF9zYXZlX0NDCisrICBDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCisgICBMRENYWD0kTEQKKyAgIExEPSRsdF9zYXZlX0xECisgICBHQ0M9JGx0X3NhdmVfR0NDCitAQCAtNjQ0NSw2ICs2ODI1LDI5IEBAIEFDX0xBTkdfUE9QCisgXSkjIF9MVF9MQU5HX0NYWF9DT05GSUcKKyAKKyAKKysjIF9MVF9GVU5DX1NUUklQTkFNRV9DTkYKKysjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIGZ1bmNfc3RyaXBuYW1lX2NuZiBwcmVmaXggc3VmZml4IG5hbWUKKysjIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorKyMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCisrIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCisrIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorKyMKKysjIFRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvIHRoZSAobm9uLVhTSSkgdmVyc2lvbiBvZiBmdW5jX3N0cmlwbmFtZSwKKysjIGV4Y2VwdCB0aGlzIG9uZSBjYW4gYmUgdXNlZCBieSBtNCBjb2RlIHRoYXQgbWF5IGJlIGV4ZWN1dGVkIGJ5IGNvbmZpZ3VyZSwKKysjIHJhdGhlciB0aGFuIHRoZSBsaWJ0b29sIHNjcmlwdC4KKyttNF9kZWZ1bihbX0xUX0ZVTkNfU1RSSVBOQU1FX0NORl0sW2RubAorK0FDX1JFUVVJUkUoW19MVF9ERUNMX1NFRF0pCisrQUNfUkVRVUlSRShbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdKQorK2Z1bmNfc3RyaXBuYW1lX2NuZiAoKQorK3sKKysgIGNhc2UgJHsyfSBpbgorKyAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKysgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKysgIGVzYWMKKyt9ICMgZnVuY19zdHJpcG5hbWVfY25mCisrXSkjIF9MVF9GVU5DX1NUUklQTkFNRV9DTkYKKysKKyAjIF9MVF9TWVNfSElEREVOX0xJQkRFUFMoW1RBR05BTUVdKQorICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIyBGaWd1cmUgb3V0ICJoaWRkZW4iIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGZyb20gdmVyYm9zZQorQEAgLTY0NTMsNiArNjg1Niw3IEBAIEFDX0xBTkdfUE9QCisgIyBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCisgbTRfZGVmdW4oW19MVF9TWVNfSElEREVOX0xJQkRFUFNdLAorIFttNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKKytBQ19SRVFVSVJFKFtfTFRfRlVOQ19TVFJJUE5BTUVfQ05GXSlkbmwKKyAjIERlcGVuZGVuY2llcyB0byBwbGFjZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBvYmplY3QgYmVpbmcgbGlua2VkOgorIF9MVF9UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKT0KKyBfTFRfVEFHVkFSKHBvc3RkZXBfb2JqZWN0cywgJDEpPQorQEAgLTY1MDMsNiArNjkwNywxMyBAQCBwdWJsaWMgY2xhc3MgZm9vIHsKKyB9OworIF9MVF9FT0YKKyBdKQorKworK19sdF9saWJkZXBzX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKytjYXNlICIkQ0MgJENGTEFHUyAiIGluICMoCisrKlwgLWZsdG8qXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby1sdG8iIDs7CisrKlwgLWZ3aG9wcipcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLXdob3ByIiA7OworK2VzYWMKKysKKyBkbmwgUGFyc2UgdGhlIGNvbXBpbGVyIG91dHB1dCBhbmQgZXh0cmFjdCB0aGUgbmVjZXNzYXJ5CisgZG5sIG9iamVjdHMsIGxpYnJhcmllcyBhbmQgbGlicmFyeSBmbGFncy4KKyBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorQEAgLTY1MTQsNyArNjkyNSw3IEBAIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCisgICBwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lPW5vCisgCisgICBmb3IgcCBpbiBgZXZhbCAiJG91dHB1dF92ZXJib3NlX2xpbmtfY21kImA7IGRvCistICAgIGNhc2UgJHAgaW4KKysgICAgY2FzZSAke3ByZXZ9JHtwfSBpbgorIAorICAgICAtTCogfCAtUiogfCAtbCopCisgICAgICAgICMgU29tZSBjb21waWxlcnMgcGxhY2Ugc3BhY2UgYmV0d2VlbiAiLXtMLFJ9IiBhbmQgdGhlIHBhdGguCitAQCAtNjUyMywxMyArNjkzNCwyMiBAQCBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorICAgICAgICAgICB0ZXN0ICRwID0gIi1SIjsgdGhlbgorIAkgcHJldj0kcAorIAkgY29udGludWUKKy0gICAgICAgZWxzZQorLQkgcHJldj0KKyAgICAgICAgZmkKKyAKKysgICAgICAgIyBFeHBhbmQgdGhlIHN5c3Jvb3QgdG8gZWFzZSBleHRyYWN0aW5nIHRoZSBkaXJlY3RvcmllcyBsYXRlci4KKysgICAgICAgaWYgdGVzdCAteiAiJHByZXYiOyB0aGVuCisrICAgICAgICAgY2FzZSAkcCBpbgorKyAgICAgICAgIC1MKikgZnVuY19zdHJpcG5hbWVfY25mICctTCcgJycgIiRwIjsgcHJldj0tTDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisrICAgICAgICAgLVIqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1SJyAnJyAiJHAiOyBwcmV2PS1SOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKysgICAgICAgICAtbCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLWwnICcnICIkcCI7IHByZXY9LWw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworKyAgICAgICAgIGVzYWMKKysgICAgICAgZmkKKysgICAgICAgY2FzZSAkcCBpbgorKyAgICAgICA9KikgZnVuY19zdHJpcG5hbWVfY25mICc9JyAnJyAiJHAiOyBwPSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworKyAgICAgICBlc2FjCisgICAgICAgIGlmIHRlc3QgIiRwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lIiA9IG5vOyB0aGVuCistCSBjYXNlICRwIGluCistCSAtTCogfCAtUiopCisrCSBjYXNlICR7cHJldn0gaW4KKysJIC1MIHwgLVIpCisgCSAgICMgSW50ZXJuYWwgY29tcGlsZXIgbGlicmFyeSBwYXRocyBzaG91bGQgY29tZSBhZnRlciB0aG9zZQorIAkgICAjIHByb3ZpZGVkIHRoZSB1c2VyLiAgVGhlIHBvc3RkZXBzIGFscmVhZHkgY29tZSBhZnRlciB0aGUKKyAJICAgIyB1c2VyIHN1cHBsaWVkIGxpYnMgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBwcm9jZXNzIHRoZW0uCitAQCAtNjU0OSw4ICs2OTY5LDEwIEBAIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCisgCSAgIF9MVF9UQUdWQVIocG9zdGRlcHMsICQxKT0iJHtfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSl9ICR7cHJldn0ke3B9IgorIAkgZmkKKyAgICAgICAgZmkKKysgICAgICAgcHJldj0KKyAgICAgICAgOzsKKyAKKysgICAgKi5sdG8uJG9iamV4dCkgOzsgIyBJZ25vcmUgR0NDIExUTyBvYmplY3RzCisgICAgICouJG9iamV4dCkKKyAgICAgICAgIyBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgdGVzdCBvYmplY3QgZmlsZSBvbmx5IHNob3dzIHVwCisgICAgICAgICMgb25jZSBpbiB0aGUgY29tcGlsZXIgb3V0cHV0LgorQEAgLTY1ODYsNiArNzAwOCw3IEBAIGVsc2UKKyBmaQorIAorICRSTSAtZiBjb25mZXN0LiRvYmpleHQKKytDRkxBR1M9JF9sdF9saWJkZXBzX3NhdmVfQ0ZMQUdTCisgCisgIyBQT1JUTUU6IG92ZXJyaWRlIGFib3ZlIHRlc3Qgb24gc3lzdGVtcyB3aGVyZSBpdCBpcyBicm9rZW4KKyBtNF9pZihbJDFdLCBbQ1hYXSwKK0BAIC02NjIyLDcgKzcwNDUsNyBAQCBsaW51eCopCisgCisgc29sYXJpcyopCisgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgQ0MqKQorKyAgQ0MqIHwgc3VuQ0MqKQorICAgICAjIFRoZSBtb3JlIHN0YW5kYXJkcy1jb25mb3JtaW5nIHN0bHBvcnQ0IGxpYnJhcnkgaXMKKyAgICAgIyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgQ3N0ZCBsaWJyYXJ5LiBBdm9pZCBzcGVjaWZ5aW5nCisgICAgICMgaXQgaWYgaXQncyBpbiBDWFhGTEFHUy4gSWdub3JlIGxpYkNydW4gYXMKK0BAIC02NzM1LDcgKzcxNTgsOSBAQCBpZiB0ZXN0ICIkX2x0X2Rpc2FibGVfRjc3IiAhPSB5ZXM7IHRoZW4KKyAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCisgICBsdF9zYXZlX0NDPSIkQ0MiCisgICBsdF9zYXZlX0dDQz0kR0NDCisrICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgICBDQz0ke0Y3Ny0iZjc3In0KKysgIENGTEFHUz0kRkZMQUdTCisgICBjb21waWxlcj0kQ0MKKyAgIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKKyAgIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKK0BAIC02Nzg5LDYgKzcyMTQsNyBAQCBpZiB0ZXN0ICIkX2x0X2Rpc2FibGVfRjc3IiAhPSB5ZXM7IHRoZW4KKyAKKyAgIEdDQz0kbHRfc2F2ZV9HQ0MKKyAgIENDPSIkbHRfc2F2ZV9DQyIKKysgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorIGZpICMgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzCisgCisgQUNfTEFOR19QT1AKK0BAIC02ODY1LDcgKzcyOTEsOSBAQCBpZiB0ZXN0ICIkX2x0X2Rpc2FibGVfRkMiICE9IHllczsgdGhlbgorICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KKyAgIGx0X3NhdmVfQ0M9IiRDQyIKKyAgIGx0X3NhdmVfR0NDPSRHQ0MKKysgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAgIENDPSR7RkMtImY5NSJ9CisrICBDRkxBR1M9JEZDRkxBR1MKKyAgIGNvbXBpbGVyPSRDQworICAgR0NDPSRhY19jdl9mY19jb21waWxlcl9nbnUKKyAKK0BAIC02OTIxLDcgKzczNDksOCBAQCBpZiB0ZXN0ICIkX2x0X2Rpc2FibGVfRkMiICE9IHllczsgdGhlbgorICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCisgCisgICBHQ0M9JGx0X3NhdmVfR0NDCistICBDQz0iJGx0X3NhdmVfQ0MiCisrICBDQz0kbHRfc2F2ZV9DQworKyAgQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUworIGZpICMgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXMKKyAKKyBBQ19MQU5HX1BPUAorQEAgLTY5NTgsMTAgKzczODcsMTIgQEAgX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFCisgX0xUX0xJTktFUl9CT0lMRVJQTEFURQorIAorICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCistbHRfc2F2ZV9DQz0iJENDIgorK2x0X3NhdmVfQ0M9JENDCisrbHRfc2F2ZV9DRkxBR1M9JENGTEFHUworIGx0X3NhdmVfR0NDPSRHQ0MKKyBHQ0M9eWVzCisgQ0M9JHtHQ0otImdjaiJ9CisrQ0ZMQUdTPSRHQ0pGTEFHUworIGNvbXBpbGVyPSRDQworIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKKyBfTFRfVEFHVkFSKExELCAkMSk9IiRMRCIKK0BAIC02OTkyLDcgKzc0MjMsOCBAQCBmaQorIEFDX0xBTkdfUkVTVE9SRQorIAorIEdDQz0kbHRfc2F2ZV9HQ0MKKy1DQz0iJGx0X3NhdmVfQ0MiCisrQ0M9JGx0X3NhdmVfQ0MKKytDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCisgXSkjIF9MVF9MQU5HX0dDSl9DT05GSUcKKyAKKyAKK0BAIC03MDI3LDkgKzc0NTksMTEgQEAgX0xUX0xJTktFUl9CT0lMRVJQTEFURQorIAorICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCisgbHRfc2F2ZV9DQz0iJENDIgorK2x0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyBsdF9zYXZlX0dDQz0kR0NDCisgR0NDPQorIENDPSR7UkMtIndpbmRyZXMifQorK0NGTEFHUz0KKyBjb21waWxlcj0kQ0MKKyBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCisgX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQorQEAgLTcwNDIsNyArNzQ3Niw4IEBAIGZpCisgCisgR0NDPSRsdF9zYXZlX0dDQworIEFDX0xBTkdfUkVTVE9SRQorLUNDPSIkbHRfc2F2ZV9DQyIKKytDQz0kbHRfc2F2ZV9DQworK0NGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKKyBdKSMgX0xUX0xBTkdfUkNfQ09ORklHCisgCisgCitAQCAtNzEwMSw2ICs3NTM2LDE1IEBAIF9MVF9ERUNMKFtdLCBbT0JKRFVNUF0sIFsxXSwgW0FuIG9iamVjdCBzeW1ib2wgZHVtcGVyXSkKKyBBQ19TVUJTVChbT0JKRFVNUF0pCisgXSkKKyAKKysjIF9MVF9ERUNMX0RMTFRPT0wKKysjIC0tLS0tLS0tLS0tLS0tLS0KKysjIEVuc3VyZSBETExUT09MIHZhcmlhYmxlIGlzIHNldC4KKyttNF9kZWZ1bihbX0xUX0RFQ0xfRExMVE9PTF0sCisrW0FDX0NIRUNLX1RPT0woRExMVE9PTCwgZGxsdG9vbCwgZmFsc2UpCisrdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorK19MVF9ERUNMKFtdLCBbRExMVE9PTF0sIFsxXSwgW0RMTCBjcmVhdGlvbiBwcm9ncmFtXSkKKytBQ19TVUJTVChbRExMVE9PTF0pCisrXSkKKyAKKyAjIF9MVF9ERUNMX1NFRAorICMgLS0tLS0tLS0tLS0tCitAQCAtNzE5NCw4ICs3NjM4LDggQEAgbTRfZGVmdW4oW19MVF9DSEVDS19TSEVMTF9GRUFUVVJFU10sCisgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKKyB4c2lfc2hlbGw9bm8KKyAoIF9sdF9kdW1teT0iYS9iL2MiCistICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorLSAgICAgID0gYyxhL2IsLCBcCisrICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorKyAgICAgID0gYyxhL2IsYi9jLCBcCisgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKKyAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICYmIHhzaV9zaGVsbD15ZXMKK0BAIC03MjM0LDIwNiArNzY3OCwxNjIgQEAgX0xUX0RFQ0woW05MMlNQXSwgW2x0X05MMlNQXSwgWzFdLCBbdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlc10pZG5sCisgXSkjIF9MVF9DSEVDS19TSEVMTF9GRUFUVVJFUworIAorIAorLSMgX0xUX1BST0dfWFNJX1NIRUxMRk5TCistIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0jIEJvdXJuZSBhbmQgWFNJIGNvbXBhdGlibGUgdmFyaWFudHMgb2Ygc29tZSB1c2VmdWwgc2hlbGwgZnVuY3Rpb25zLgorLW00X2RlZnVuKFtfTFRfUFJPR19YU0lfU0hFTExGTlNdLAorLVtjYXNlICR4c2lfc2hlbGwgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorLSMgY2FsbDoKKy0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAorLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAorLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQorLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KKy0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKy1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQorLX0KKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19CistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbworLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkWypdICkpCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CistfQorKyMgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRSAoRlVOQ05BTUUsIFJFUExBQ0VNRU5ULUJPRFkpCisrIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIEluIGAkY2ZnZmlsZScsIGxvb2sgZm9yIGZ1bmN0aW9uIEZVTkNOQU1FIGRlbGltaXRlZCBieSBgXkZVTkNOQU1FICgpJCcgYW5kCisrIyAnXn0gRlVOQ05BTUUgJywgYW5kIHJlcGxhY2UgaXRzIGJvZHkgd2l0aCBSRVBMQUNFTUVOVC1CT0RZLgorK200X2RlZnVuKFtfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFXSwKKytbZG5sIHsKKytzZWQgLWUgJy9eJDEgKCkkLywvXn0gIyAkMSAvY1wKKyskMSAoKVwKKyt7XAorK200X2JwYXRzdWJzdHMoWyQyXSwgWyRdLCBbXFxdLCBbXlwoWwkgXVwpXSwgW1xcXDFdKQorK30gIyBFeHRlbmRlZC1zaGVsbCAkMSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK10pCisgCistX0xUX0VPRgorLSAgICA7OworLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCisgCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCistICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCistICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorLSAgZWxzZQorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCistICBmaQorLX0KKysjIF9MVF9QUk9HX1JFUExBQ0VfU0hFTExGTlMKKysjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIFJlcGxhY2UgZXhpc3RpbmcgcG9ydGFibGUgaW1wbGVtZW50YXRpb25zIG9mIHNldmVyYWwgc2hlbGwgZnVuY3Rpb25zIHdpdGgKKysjIGVxdWl2YWxlbnQgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb25zIHdoZXJlIHRob3NlIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUuLgorK200X2RlZnVuKFtfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TXSwKKytbaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19kaXJuYW1lXSwgW2RubAorKyAgICBjYXNlICR7MX0gaW4KKysgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworKyAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKysgICAgZXNhY10pCisrCisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Jhc2VuYW1lXSwgW2RubAorKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXSkKKysKKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWVdLCBbZG5sCisrICAgIGNhc2UgJHsxfSBpbgorKyAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CisrICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworKyAgICBlc2FjCisrICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJdKQorIAorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorLX0KKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3RyaXBuYW1lXSwgW2RubAorKyAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCisrICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KKysgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKysgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKysgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1dKQorIAorLWRubCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lCistZG5sIEEgcG9ydGFibGUgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIGlzIGFscmVhZHkgZGVmaW5lZCBpbiBnZW5lcmFsLm00c2gKKy1kbmwgc28gdGhlcmUgaXMgbm8gbmVlZCBmb3IgaXQgaGVyZS4KKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3BsaXRfbG9uZ19vcHRdLCBbZG5sCisrICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfQorKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XSkKKyAKKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgY2FzZSAkezJ9IGluCistICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CistICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKy0gIGVzYWMKKy19CisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3NwbGl0X3Nob3J0X29wdF0sIFtkbmwKKysgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P30KKysgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifV0pCisgCistIyBzZWQgc2NyaXB0czoKKy1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bW149XV0qXCk9LiovXDEvO3EnCistbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtbXj1dXSo9Ly8nCisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2xvMm9dLCBbZG5sCisrICAgIGNhc2UgJHsxfSBpbgorKyAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CisrICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7CisrICAgIGVzYWNdKQorIAorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCistICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorLX0KKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfeGZvcm1dLCBbICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9dKQorIAorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKKy19CisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2FyaXRoXSwgWyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJFsqXSApKV0pCisgCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bW14uXV0qJC8ubG8vJ2AKKy19CisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2xlbl0sIFsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XSkKKytmaQorIAorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRbQF0iYAorLX0KKytpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2FwcGVuZF0sIFsgICAgZXZhbCAiJHsxfSs9XFwkezJ9Il0pCisgCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiRbMV0iIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKKy19CisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2FwcGVuZF9xdW90ZWRdLCBbZG5sCisrICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iCisrZG5sIG00IGV4cGFuc2lvbiB0dXJucyBcXFxcIGludG8gXFwsIGFuZCB0aGVuIHRoZSBzaGVsbCBldmFsIHR1cm5zIHRoYXQgaW50byBcCisrICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXSkKKyAKKy1fTFRfRU9GCistZXNhYworKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JworKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW1thLXpBLVpfXV1cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZWxzZQorKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFtbYS16QS1aX11dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZmkKKyAKKy1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKytpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorKyAgQUNfTVNHX1dBUk4oW1VuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGVdKQorK2ZpCisrXSkKKyAKKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJFsxXSs9XCRbMl0iCistfQorLV9MVF9FT0YKKysjIF9MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TCisrIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyMgRGV0ZXJtaW5lIHdoaWNoIGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9ucyBzaG91bGQgYmUgdXNlZCBieQorKyMgZnVuY190b19ob3N0X2ZpbGUgKGFuZCwgaW1wbGljaXRseSwgYnkgZnVuY190b19ob3N0X3BhdGgpLiAgVGhlc2UgYXJlIG5lZWRlZAorKyMgZm9yIGNlcnRhaW4gY3Jvc3MtY29tcGlsZSBjb25maWd1cmF0aW9ucyBhbmQgbmF0aXZlIG1pbmd3LgorK200X2RlZnVuKFtfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OU10sCisrW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKKytBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfQlVJTERdKWRubAorK0FDX01TR19DSEVDS0lORyhbaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0XSkKKytBQ19DQUNIRV9WQUwobHRfY3ZfdG9faG9zdF9maWxlX2NtZCwKKytbY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisgICAgIDs7CistICAqKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkWzFdPVwkJFsxXVwkWzJdIgorLX0KKy0KKy1fTFRfRU9GCisrICAqLSotY3lnd2luKiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICBlc2FjCisgICAgIDs7CistICBlc2FjCisrICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgOzsKKytlc2FjCisrXSkKKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisrQUNfTVNHX1JFU1VMVChbJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWRdKQorK19MVF9ERUNMKFt0b19ob3N0X2ZpbGVfY21kXSwgW2x0X2N2X3RvX2hvc3RfZmlsZV9jbWRdLAorKyAgICAgICAgIFswXSwgW2NvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0XSlkbmwKKysKKytBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXRdKQorK0FDX0NBQ0hFX1ZBTChsdF9jdl90b190b29sX2ZpbGVfY21kLAorK1sjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworK2VzYWMKKyBdKQorK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKytBQ19NU0dfUkVTVUxUKFskbHRfY3ZfdG9fdG9vbF9maWxlX2NtZF0pCisrX0xUX0RFQ0woW3RvX3Rvb2xfZmlsZV9jbWRdLCBbbHRfY3ZfdG9fdG9vbF9maWxlX2NtZF0sCisrICAgICAgICAgWzBdLCBbY29udmVydCAkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdF0pZG5sCisrXSkjIF9MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TCitkaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCitpbmRleCA5NTAzZWM4NWQ3MC4uNzBlODU2ZTA2NTkgMTAwNjQ0CistLS0gYS9sdG1haW4uc2gKKysrKyBiL2x0bWFpbi5zaAorQEAgLTEsMTAgKzEsOSBAQAorLSMgR2VuZXJhdGVkIGZyb20gbHRtYWluLm00c2guCisgCistIyBsaWJ0b29sIChHTlUgbGlidG9vbCAxLjMxMzQgMjAwOS0xMS0yOSkgMi4yLjdhCisrIyBsaWJ0b29sIChHTlUgbGlidG9vbCkgMi40CisgIyBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0IDxnb3JkQGdudS5haS5taXQuZWR1PiwgMTk5NgorIAorICMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LAorLSMgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgIyBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTworICMgd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisgCitAQCAtMzgsNyArMzcsNiBAQAorICMgICAtbiwgLS1kcnktcnVuICAgICAgICAgICAgZGlzcGxheSBjb21tYW5kcyB3aXRob3V0IG1vZGlmeWluZyBhbnkgZmlsZXMKKyAjICAgICAgIC0tZmVhdHVyZXMgICAgICAgICAgIGRpc3BsYXkgYmFzaWMgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdAorICMgICAgICAgLS1tb2RlPU1PREUgICAgICAgICAgdXNlIG9wZXJhdGlvbiBtb2RlIE1PREUKKy0jICAgICAgIC0tbm8tZmluaXNoICAgICAgICAgIGxldCBpbnN0YWxsIG1vZGUgYXZvaWQgZmluaXNoIGNvbW1hbmRzCisgIyAgICAgICAtLXByZXNlcnZlLWR1cC1kZXBzICBkb24ndCByZW1vdmUgZHVwbGljYXRlIGRlcGVuZGVuY3kgbGlicmFyaWVzCisgIyAgICAgICAtLXF1aWV0LCAtLXNpbGVudCAgICBkb24ndCBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzCisgIyAgICAgICAtLW5vLXF1aWV0LCAtLW5vLXNpbGVudAorQEAgLTcxLDE3ICs2OSwxOSBAQAorICMgICAgICAgICBjb21waWxlcjoJCSRMVENDCisgIyAgICAgICAgIGNvbXBpbGVyIGZsYWdzOgkJJExUQ0ZMQUdTCisgIyAgICAgICAgIGxpbmtlcjoJCSRMRCAoZ251PyAkd2l0aF9nbnVfbGQpCistIyAgICAgICAgICRwcm9nbmFtZToJKEdOVSBsaWJ0b29sIDEuMzEzNCAyMDA5LTExLTI5KSAyLjIuN2EKKysjICAgICAgICAgJHByb2duYW1lOgkoR05VIGxpYnRvb2wpIDIuNAorICMgICAgICAgICBhdXRvbWFrZToJJGF1dG9tYWtlX3ZlcnNpb24KKyAjICAgICAgICAgYXV0b2NvbmY6CSRhdXRvY29uZl92ZXJzaW9uCisgIworICMgUmVwb3J0IGJ1Z3MgdG8gPGJ1Zy1saWJ0b29sQGdudS5vcmc+LgorKyMgR05VIGxpYnRvb2wgaG9tZSBwYWdlOiA8aHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnRvb2wvPi4KKysjIEdlbmVyYWwgaGVscCB1c2luZyBHTlUgc29mdHdhcmU6IDxodHRwOi8vd3d3LmdudS5vcmcvZ2V0aGVscC8+LgorIAorIFBST0dSQU09bGlidG9vbAorIFBBQ0tBR0U9bGlidG9vbAorLVZFUlNJT049Mi4yLjdhCistVElNRVNUQU1QPSIgMS4zMTM0IDIwMDktMTEtMjkiCistcGFja2FnZV9yZXZpc2lvbj0xLjMxMzQKKytWRVJTSU9OPTIuNAorK1RJTUVTVEFNUD0iIgorK3BhY2thZ2VfcmV2aXNpb249MS4zMjkzCisgCisgIyBCZSBCb3VybmUgY29tcGF0aWJsZQorIGlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgorQEAgLTEwNiw5ICsxMDYsNiBAQCBfTFRFQ0hPX0VPRicKKyB9CisgCisgIyBOTFMgbnVpc2FuY2VzOiBXZSBzYXZlIHRoZSBvbGQgdmFsdWVzIHRvIHJlc3RvcmUgZHVyaW5nIGV4ZWN1dGUgbW9kZS4KKy0jIE9ubHkgc2V0IExBTkcgYW5kIExDX0FMTCB0byBDIGlmIGFscmVhZHkgc2V0LgorLSMgVGhlc2UgbXVzdCBub3QgYmUgc2V0IHVuY29uZGl0aW9uYWxseSBiZWNhdXNlIG5vdCBhbGwgc3lzdGVtcyB1bmRlcnN0YW5kCistIyBlLmcuIExBTkc9QyAobm90YWJseSBTQ08pLgorIGx0X3VzZXJfbG9jYWxlPQorIGx0X3NhZmVfbG9jYWxlPQorIGZvciBsdF92YXIgaW4gTEFORyBMQU5HVUFHRSBMQ19BTEwgTENfQ1RZUEUgTENfQ09MTEFURSBMQ19NRVNTQUdFUworQEAgLTEyMSwxNSArMTE4LDEzIEBAIGRvCisgCSAgbHRfc2FmZV9sb2NhbGU9XCIkbHRfdmFyPUM7IFwkbHRfc2FmZV9sb2NhbGVcIgorIAlmaSIKKyBkb25lCisrTENfQUxMPUMKKytMQU5HVUFHRT1DCisrZXhwb3J0IExBTkdVQUdFIExDX0FMTAorIAorICRsdF91bnNldCBDRFBBVEgKKyAKKyAKKy0KKy0KKy0KKy0KKy0KKyAjIFdvcmsgYXJvdW5kIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXNzdWUgb24gSVJJWCA2LjUuIE9uIElSSVggNi40Kywgc2gKKyAjIGlzIGtzaCBidXQgd2hlbiB0aGUgc2hlbGwgaXMgaW52b2tlZCBhcyAic2giIGFuZCB0aGUgY3VycmVudCB2YWx1ZSBvZgorICMgdGhlIF9YUEcgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGVxdWFsIHRvIDEgKG9uZSksIHRoZSBzcGVjaWFsCitAQCAtMTQwLDcgKzEzNSw3IEBAIHByb2dwYXRoPSIkMCIKKyAKKyAKKyA6ICR7Q1A9ImNwIC1mIn0KKy06ICR7RUNITz0kYXNfZWNob30KKyt0ZXN0ICIke0VDSE8rc2V0fSIgPSBzZXQgfHwgRUNITz0ke2FzX2VjaG8tJ3ByaW50ZiAlc1xuJ30KKyA6ICR7RUdSRVA9Ii9iaW4vZ3JlcCAtRSJ9CisgOiAke0ZHUkVQPSIvYmluL2dyZXAgLUYifQorIDogJHtHUkVQPSIvYmluL2dyZXAifQorQEAgLTE0OSw3ICsxNDQsNyBAQCBwcm9ncGF0aD0iJDAiCisgOiAke01LRElSPSJta2RpciJ9CisgOiAke01WPSJtdiAtZiJ9CisgOiAke1JNPSJybSAtZiJ9CistOiAke1NFRD0iL21vdW50L2VuZG9yL3dpbGRlbmh1L2xvY2FsLXg4Nl82NC9iaW4vc2VkIn0KKys6ICR7U0VEPSIvYmluL3NlZCJ9CisgOiAke1NIRUxMPSIke0NPTkZJR19TSEVMTC0vYmluL3NofSJ9CisgOiAke1hzZWQ9IiRTRUQgLWUgMXMvXlgvLyJ9CisgCitAQCAtMTY5LDYgKzE2NCwyNyBAQCBJRlM9IiAJJGx0X25sIgorIGRpcm5hbWU9InMsL1teL10qJCwsIgorIGJhc2VuYW1lPSJzLF4uKi8sLCIKKyAKKysjIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKysjIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCisrIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCisrZnVuY19kaXJuYW1lICgpCisreworKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCisrICAgIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCisrICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKysgICAgZWxzZQorKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKysgICAgZmkKKyt9ICMgZnVuY19kaXJuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKworKyMgZnVuY19iYXNlbmFtZSBmaWxlCisrZnVuY19iYXNlbmFtZSAoKQorK3sKKysgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCisrfSAjIGZ1bmNfYmFzZW5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisgIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorICMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKyAjIGNhbGw6CitAQCAtMTgzLDE3ICsxOTksMzEgQEAgYmFzZW5hbWU9InMsXi4qLywsIgorICMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKyB7CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkYmFzZW5hbWUiYAorLX0KKysgICAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKysgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGRpcm5hbWUiYAorKyAgICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCisrICAgIGVsc2UKKysgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCisrICAgIGZpCisrICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkYmFzZW5hbWUiYAorK30gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKworKyMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCisrIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKysjIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorKyMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworKyMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKysjIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCisrZnVuY19zdHJpcG5hbWUgKCkKKyt7CisrICAgIGNhc2UgJHsyfSBpbgorKyAgICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CisrICAgICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworKyAgICBlc2FjCisrfSAjIGZ1bmNfc3RyaXBuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorIAorLSMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLgorIAorICMgVGhlc2UgU0VEIHNjcmlwdHMgcHJlc3VwcG9zZSBhbiBhYnNvbHV0ZSBwYXRoIHdpdGggYSB0cmFpbGluZyBzbGFzaC4KKyBwYXRoY2FyPSdzLF4vXChbXi9dKlwpLiokLFwxLCcKK0BAIC0zNzYsNiArNDA2LDE1IEBAIHNlZF9xdW90ZV9zdWJzdD0ncy9cKFtgIiRcXF1cKS9cXFwxL2cnCisgIyBTYW1lIGFzIGFib3ZlLCBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCisgZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woWyJgXFxdXCkvXFxcMS9nJworIAorKyMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IHR1cm5zIGEgc3RyaW5nIGludG8gYSByZWdleCBtYXRjaGluZyBmb3IgdGhlCisrIyBzdHJpbmcgbGl0ZXJhbGx5LgorK3NlZF9tYWtlX2xpdGVyYWxfcmVnZXg9J3MsW10uW14kXFwqXC9dLFxcJixnJworKworKyMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGNvbnZlcnRzIGEgdzMyIGZpbGUgbmFtZSBvciBwYXRoCisrIyB3aGljaCBjb250YWlucyBmb3J3YXJkIHNsYXNoZXMsIGludG8gb25lIHRoYXQgY29udGFpbnMKKysjIChlc2NhcGVkKSBiYWNrc2xhc2hlcy4gIEEgdmVyeSBuYWl2ZSBpbXBsZW1lbnRhdGlvbi4KKytsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCisrCisgIyBSZS1gXCcgcGFyYW1ldGVyIGV4cGFuc2lvbnMgaW4gb3V0cHV0IG9mIGRvdWJsZV9xdW90ZV9zdWJzdCB0aGF0IHdlcmUKKyAjIGBcJy1lZCBpbiBpbnB1dCB0byB0aGUgc2FtZS4gIElmIGFuIG9kZCBudW1iZXIgb2YgYFwnIHByZWNlZGVkIGEgJyQnCisgIyBpbiBpbnB1dCB0byBkb3VibGVfcXVvdGVfc3Vic3QsIHRoYXQgJyQnIHdhcyBwcm90ZWN0ZWQgZnJvbSBleHBhbnNpb24uCitAQCAtNDA0LDcgKzQ0Myw3IEBAIG9wdF93YXJuaW5nPToKKyAjIG5hbWUgaWYgaXQgaGFzIGJlZW4gc2V0IHlldC4KKyBmdW5jX2VjaG8gKCkKKyB7CistICAgICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6ICQqIgorKyAgICAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfSQqIgorIH0KKyAKKyAjIGZ1bmNfdmVyYm9zZSBhcmcuLi4KK0BAIC00MzAsMTQgKzQ2OSwxNCBAQCBmdW5jX2VjaG9fYWxsICgpCisgIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgorIGZ1bmNfZXJyb3IgKCkKKyB7CistICAgICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6ICIkezErIiRAIn0gMT4mMgorKyAgICAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfSIkezErIiRAIn0gMT4mMgorIH0KKyAKKyAjIGZ1bmNfd2FybmluZyBhcmcuLi4KKyAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIHdhcm5pbmcgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvci4KKyBmdW5jX3dhcm5pbmcgKCkKKyB7CistICAgICRvcHRfd2FybmluZyAmJiAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiB3YXJuaW5nOiAiJHsxKyIkQCJ9IDE+JjIKKysgICAgJG9wdF93YXJuaW5nICYmICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9d2FybmluZzogIiR7MSsiJEAifSAxPiYyCisgCisgICAgICMgYmFzaCBidWcgYWdhaW46CisgICAgIDoKK0BAIC02NTYsMTkgKzY5NSwzNSBAQCBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgKCkKKyAgICAgZmkKKyB9CisgCistCistCisrIyBmdW5jX3RyX3NoCisrIyBUdXJuICQxIGludG8gYSBzdHJpbmcgc3VpdGFibGUgZm9yIGEgc2hlbGwgdmFyaWFibGUgbmFtZS4KKysjIFJlc3VsdCBpcyBzdG9yZWQgaW4gJGZ1bmNfdHJfc2hfcmVzdWx0LiAgQWxsIGNoYXJhY3RlcnMKKysjIG5vdCBpbiB0aGUgc2V0IGEtekEtWjAtOV8gYXJlIHJlcGxhY2VkIHdpdGggJ18nLiBGdXJ0aGVyLAorKyMgaWYgJDEgYmVnaW5zIHdpdGggYSBkaWdpdCwgYSAnXycgaXMgcHJlcGVuZGVkIGFzIHdlbGwuCisrZnVuY190cl9zaCAoKQorK3sKKysgIGNhc2UgJDEgaW4KKysgIFswLTldKiB8ICpbIWEtekEtWjAtOV9dKikKKysgICAgZnVuY190cl9zaF9yZXN1bHQ9YCRFQ0hPICIkMSIgfCAkU0VEICdzL15cKFswLTldXCkvX1wxLzsgcy9bXmEtekEtWjAtOV9dL18vZydgCisrICAgIDs7CisrICAqICkKKysgICAgZnVuY190cl9zaF9yZXN1bHQ9JDEKKysgICAgOzsKKysgIGVzYWMKKyt9CisgCisgCisgIyBmdW5jX3ZlcnNpb24KKyAjIEVjaG8gdmVyc2lvbiBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KKyBmdW5jX3ZlcnNpb24gKCkKKyB7CisrICAgICRvcHRfZGVidWcKKysKKyAgICAgJFNFRCAtbiAnLyhDKS8hYiBnbworIAk6bW9yZQorIAkvXC4vIXsKKyAJICBOCistCSAgcy9cbiMgLy8KKysJICBzL1xuIyAvIC8KKyAJICBiIG1vcmUKKyAJfQorIAk6Z28KK0BAIC02ODUsNyArNzQwLDkgQEAgZnVuY192ZXJzaW9uICgpCisgIyBFY2hvIHNob3J0IGhlbHAgbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQuCisgZnVuY191c2FnZSAoKQorIHsKKy0gICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sL14jICAqLWgvIHsKKysgICAgJG9wdF9kZWJ1ZworKworKyAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvXiMgICouKi0taGVscC8geworICAgICAgICAgcy9eIyAvLworIAlzL14jICokLy8KKyAJcy9cJHByb2duYW1lLyckcHJvZ25hbWUnLworQEAgLTcwMSw3ICs3NTgsMTAgQEAgZnVuY191c2FnZSAoKQorICMgdW5sZXNzICdub2V4aXQnIGlzIHBhc3NlZCBhcyBhcmd1bWVudC4KKyBmdW5jX2hlbHAgKCkKKyB7CisrICAgICRvcHRfZGVidWcKKysKKyAgICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sLyMgUmVwb3J0IGJ1Z3MgdG8vIHsKKysJOnByaW50CisgICAgICAgICBzL14jIC8vCisgCXMvXiMgKiQvLworIAlzKlwkcHJvZ25hbWUqJyRwcm9nbmFtZScqCitAQCAtNzE0LDcgKzc3NCwxMSBAQCBmdW5jX2hlbHAgKCkKKyAJcy9cJGF1dG9tYWtlX3ZlcnNpb24vJyJgKGF1dG9tYWtlIC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgIicvCisgCXMvXCRhdXRvY29uZl92ZXJzaW9uLyciYChhdXRvY29uZiAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLworIAlwCistICAgICB9JyA8ICIkcHJvZ3BhdGgiCisrCWQKKysgICAgIH0KKysgICAgIC9eIyAuKiBob21lIHBhZ2U6L2IgcHJpbnQKKysgICAgIC9eIyBHZW5lcmFsIGhlbHAgdXNpbmcvYiBwcmludAorKyAgICAgJyA8ICIkcHJvZ3BhdGgiCisgICAgIHJldD0kPworICAgICBpZiB0ZXN0IC16ICIkMSI7IHRoZW4KKyAgICAgICBleGl0ICRyZXQKK0BAIC03MjYsMTIgKzc5MCwzOSBAQCBmdW5jX2hlbHAgKCkKKyAjIGV4aXRfY21kLgorIGZ1bmNfbWlzc2luZ19hcmcgKCkKKyB7CistICAgIGZ1bmNfZXJyb3IgIm1pc3NpbmcgYXJndW1lbnQgZm9yICQxIgorKyAgICAkb3B0X2RlYnVnCisrCisrICAgIGZ1bmNfZXJyb3IgIm1pc3NpbmcgYXJndW1lbnQgZm9yICQxLiIKKyAgICAgZXhpdF9jbWQ9ZXhpdAorIH0KKyAKKy1leGl0X2NtZD06CisgCisrIyBmdW5jX3NwbGl0X3Nob3J0X29wdCBzaG9ydG9wdAorKyMgU2V0IGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWUgYW5kIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyBzaGVsbAorKyMgdmFyaWFibGVzIGFmdGVyIHNwbGl0dGluZyBTSE9SVE9QVCBhZnRlciB0aGUgMm5kIGNoYXJhY3Rlci4KKytmdW5jX3NwbGl0X3Nob3J0X29wdCAoKQorK3sKKysgICAgbXlfc2VkX3Nob3J0X29wdD0nMXMvXlwoLi5cKS4qJC9cMS87cScKKysgICAgbXlfc2VkX3Nob3J0X3Jlc3Q9JzFzL14uLlwoLipcKSQvXDEvO3EnCisrCisrICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX3Nob3J0X29wdCJgCisrICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfc2hvcnRfcmVzdCJgCisrfSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKworKyMgZnVuY19zcGxpdF9sb25nX29wdCBsb25nb3B0CisrIyBTZXQgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lIGFuZCBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZyBzaGVsbAorKyMgdmFyaWFibGVzIGFmdGVyIHNwbGl0dGluZyBMT05HT1BUIGF0IHRoZSBgPScgc2lnbi4KKytmdW5jX3NwbGl0X2xvbmdfb3B0ICgpCisreworKyAgICBteV9zZWRfbG9uZ19vcHQ9JzFzL15cKC0tW149XSpcKT0uKi9cMS87cScKKysgICAgbXlfc2VkX2xvbmdfYXJnPScxcy9eLS1bXj1dKj0vLycKKysKKysgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCisrICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCisrfSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrZXhpdF9jbWQ9OgorIAorIAorIAorQEAgLTc0MSwyNiArODMyLDY0IEBAIG1hZ2ljPSIlJSVNQUdJQyB2YXJpYWJsZSUlJSIKKyBtYWdpY19leGU9IiUlJU1BR0lDIEVYRSB2YXJpYWJsZSUlJSIKKyAKKyAjIEdsb2JhbCB2YXJpYWJsZXMuCistIyAkbW9kZSBpcyB1bnNldAorIG5vbm9wdD0KKy1leGVjdXRlX2RsZmlsZXM9CisgcHJlc2VydmVfYXJncz0KKyBsbzJvPSJzL1xcLmxvXCQvLiR7b2JqZXh0fS8iCisgbzJsbz0icy9cXC4ke29iamV4dH1cJC8ubG8vIgorIGV4dHJhY3RlZF9hcmNoaXZlcz0KKyBleHRyYWN0ZWRfc2VyaWFsPTAKKyAKKy1vcHRfZHJ5X3J1bj1mYWxzZQorLW9wdF9maW5pc2g9OgorLW9wdF9kdXBsaWNhdGVfZGVwcz1mYWxzZQorLW9wdF9zaWxlbnQ9ZmFsc2UKKy1vcHRfZGVidWc9OgorLQorICMgSWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4gYW55IG9mIHRoZSBhY3Rpb25zLCB0aGUgY29tbWFuZCBpbiBpdAorICMgd2lsbCBiZSBleGVjZWQgYXQgdGhlIGVuZC4gIFRoaXMgcHJldmVudHMgaGVyZS1kb2N1bWVudHMgZnJvbSBiZWluZworICMgbGVmdCBvdmVyIGJ5IHNoZWxscy4KKyBleGVjX2NtZD0KKyAKKysjIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorKyMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorK2Z1bmNfYXBwZW5kICgpCisreworKyAgICBldmFsICIkezF9PVwkJHsxfVwkezJ9IgorK30gIyBmdW5jX2FwcGVuZCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKysjIGZ1bmNfYXBwZW5kX3F1b3RlZCB2YXIgdmFsdWUKKysjIFF1b3RlIFZBTFVFIGFuZCBhcHBlbmQgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIsIHNlcGFyYXRlZAorKyMgYnkgYSBzcGFjZS4KKytmdW5jX2FwcGVuZF9xdW90ZWQgKCkKKyt7CisrICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iCisrICAgIGV2YWwgIiR7MX09XCQkezF9XFwgXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyt9ICMgZnVuY19hcHBlbmRfcXVvdGVkIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKworKyMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKytmdW5jX2FyaXRoICgpCisreworKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJHtAfSJgCisrfSAjIGZ1bmNfYXJpdGggbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisrIyBmdW5jX2xlbiBzdHJpbmcKKysjIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCisrZnVuY19sZW4gKCkKKyt7CisrICAgIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJHsxfSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorK30gIyBmdW5jX2xlbiBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKysKKysjIGZ1bmNfbG8ybyBvYmplY3QKKytmdW5jX2xvMm8gKCkKKyt7CisrICAgIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKKyt9ICMgZnVuY19sbzJvIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKworKyMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCisrZnVuY194Zm9ybSAoKQorK3sKKysgICAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCisrfSAjIGZ1bmNfeGZvcm0gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisgIyBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gYXJnLi4uCisgIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLCBmb2xsb3dlZCBieQorICMgYSBjb25maWd1cmF0aW9uIGZhaWx1cmUgaGludCwgYW5kIGV4aXQuCitAQCAtODUwLDEzMCArOTc5LDIwNCBAQCBmdW5jX2VuYWJsZV90YWcgKCkKKyAgIGVzYWMKKyB9CisgCistIyBQYXJzZSBvcHRpb25zIG9uY2UsIHRob3JvdWdobHkuICBUaGlzIGNvbWVzIGFzIHNvb24gYXMgcG9zc2libGUgaW4KKy0jIHRoZSBzY3JpcHQgdG8gbWFrZSB0aGluZ3MgbGlrZSBgbGlidG9vbCAtLXZlcnNpb24nIGhhcHBlbiBxdWlja2x5LgorKyMgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCisrIyBFbnN1cmUgdGhhdCB3ZSBhcmUgdXNpbmcgbTQgbWFjcm9zLCBhbmQgbGlidG9vbCBzY3JpcHQgZnJvbSB0aGUgc2FtZQorKyMgcmVsZWFzZSBvZiBsaWJ0b29sLgorK2Z1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaCAoKQorIHsKKysgIGlmIHRlc3QgIiRwYWNrYWdlX3JldmlzaW9uIiAhPSAiJG1hY3JvX3JldmlzaW9uIjsgdGhlbgorKyAgICBpZiB0ZXN0ICIkVkVSU0lPTiIgIT0gIiRtYWNyb192ZXJzaW9uIjsgdGhlbgorKyAgICAgIGlmIHRlc3QgLXogIiRtYWNyb192ZXJzaW9uIjsgdGhlbgorKyAgICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKKyskcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCBidXQgdGhlCisrJHByb2duYW1lOiBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tIGFuIG9sZGVyIHJlbGVhc2UuCisrJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgorKyRwcm9nbmFtZTogYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KKytfTFRfRU9GCisrICAgICAgZWxzZQorKyAgICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKKyskcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCBidXQgdGhlCisrJHByb2duYW1lOiBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tICRQQUNLQUdFICRtYWNyb192ZXJzaW9uLgorKyRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gJFBBQ0tBR0UgJFZFUlNJT04KKyskcHJvZ25hbWU6IGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCisrX0xUX0VPRgorKyAgICAgIGZpCisrICAgIGVsc2UKKysgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorKyRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIHJldmlzaW9uICRwYWNrYWdlX3JldmlzaW9uLAorKyRwcm9nbmFtZTogYnV0IHRoZSBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tIHJldmlzaW9uICRtYWNyb19yZXZpc2lvbi4KKyskcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tIHJldmlzaW9uICRwYWNrYWdlX3JldmlzaW9uCisrJHByb2duYW1lOiBvZiAkUEFDS0FHRSAkVkVSU0lPTiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgorK19MVF9FT0YKKysgICAgZmkKKyAKKy0gICMgU2hvcnRoYW5kIGZvciAtLW1vZGU9Zm9vLCBvbmx5IHZhbGlkIGFzIHRoZSBmaXJzdCBhcmd1bWVudAorLSAgY2FzZSAkMSBpbgorLSAgY2xlYW58Y2xlYXxjbGV8Y2wpCistICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNsZWFuICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIGNvbXBpbGV8Y29tcGlsfGNvbXBpfGNvbXB8Y29tfGNvfGMpCistICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNvbXBpbGUgJHsxKyIkQCJ9OyBzaGlmdAorLSAgICA7OworLSAgZXhlY3V0ZXxleGVjdXR8ZXhlY3V8ZXhlY3xleGV8ZXh8ZSkKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZXhlY3V0ZSAkezErIiRAIn07IHNoaWZ0CistICAgIDs7CistICBmaW5pc2h8ZmluaXN8ZmluaXxmaW58Zml8ZikKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIGluc3RhbGx8aW5zdGFsfGluc3RhfGluc3R8aW5zfGlufGkpCistICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAorLSAgICA7OworLSAgbGlua3xsaW58bGl8bCkKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgbGluayAkezErIiRAIn07IHNoaWZ0CistICAgIDs7CistICB1bmluc3RhbGx8dW5pbnN0YWx8dW5pbnN0YXx1bmluc3R8dW5pbnN8dW5pbnx1bml8dW58dSkKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgdW5pbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIGVzYWMKKysgICAgZXhpdCAkRVhJVF9NSVNNQVRDSAorKyAgZmkKKyt9CisrCisrCisrIyBTaG9ydGhhbmQgZm9yIC0tbW9kZT1mb28sIG9ubHkgdmFsaWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50CisrY2FzZSAkMSBpbgorK2NsZWFufGNsZWF8Y2xlfGNsKQorKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY2xlYW4gJHsxKyIkQCJ9OyBzaGlmdAorKyAgOzsKKytjb21waWxlfGNvbXBpbHxjb21waXxjb21wfGNvbXxjb3xjKQorKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY29tcGlsZSAkezErIiRAIn07IHNoaWZ0CisrICA7OworK2V4ZWN1dGV8ZXhlY3V0fGV4ZWN1fGV4ZWN8ZXhlfGV4fGUpCisrICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBleGVjdXRlICR7MSsiJEAifTsgc2hpZnQKKysgIDs7CisrZmluaXNofGZpbmlzfGZpbml8ZmlufGZpfGYpCisrICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAorKyAgOzsKKytpbnN0YWxsfGluc3RhbHxpbnN0YXxpbnN0fGluc3xpbnxpKQorKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0CisrICA7OworK2xpbmt8bGlufGxpfGwpCisrICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBsaW5rICR7MSsiJEAifTsgc2hpZnQKKysgIDs7CisrdW5pbnN0YWxsfHVuaW5zdGFsfHVuaW5zdGF8dW5pbnN0fHVuaW5zfHVuaW58dW5pfHVufHUpCisrICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSB1bmluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAorKyAgOzsKKytlc2FjCisgCistICAjIFBhcnNlIG5vbi1tb2RlIHNwZWNpZmljIGFyZ3VtZW50czoKKy0gIHdoaWxlIHRlc3QgIiQjIiAtZ3QgMDsgZG8KKysKKysKKysjIE9wdGlvbiBkZWZhdWx0czoKKytvcHRfZGVidWc9OgorK29wdF9kcnlfcnVuPWZhbHNlCisrb3B0X2NvbmZpZz1mYWxzZQorK29wdF9wcmVzZXJ2ZV9kdXBfZGVwcz1mYWxzZQorK29wdF9mZWF0dXJlcz1mYWxzZQorK29wdF9maW5pc2g9ZmFsc2UKKytvcHRfaGVscD1mYWxzZQorK29wdF9oZWxwX2FsbD1mYWxzZQorK29wdF9zaWxlbnQ9OgorK29wdF92ZXJib3NlPToKKytvcHRfc2lsZW50PWZhbHNlCisrb3B0X3ZlcmJvc2U9ZmFsc2UKKysKKysKKysjIFBhcnNlIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4gIFRoaXMgY29tZXMgYXMgc29vbiBhcyBwb3NzaWJsZSBpbiB0aGUKKysjIHNjcmlwdCB0byBtYWtlIHRoaW5ncyBsaWtlIGAtLXZlcnNpb24nIGhhcHBlbiBhcyBxdWlja2x5IGFzIHdlIGNhbi4KKyt7CisrICAjIHRoaXMganVzdCBlYXNlcyBleGl0IGhhbmRsaW5nCisrICB3aGlsZSB0ZXN0ICQjIC1ndCAwOyBkbworICAgICBvcHQ9IiQxIgorICAgICBzaGlmdAorLQorICAgICBjYXNlICRvcHQgaW4KKy0gICAgICAtLWNvbmZpZykJCWZ1bmNfY29uZmlnCQkJCQk7OworLQorLSAgICAgIC0tZGVidWcpCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgorKyAgICAgIC0tZGVidWd8LXgpCW9wdF9kZWJ1Zz0nc2V0IC14JworIAkJCWZ1bmNfZWNobyAiZW5hYmxpbmcgc2hlbGwgdHJhY2UgbW9kZSIKKy0JCQlvcHRfZGVidWc9J3NldCAteCcKKyAJCQkkb3B0X2RlYnVnCisgCQkJOzsKKy0KKy0gICAgICAtZGxvcGVuKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCistCQkJZXhlY3V0ZV9kbGZpbGVzPSIkZXhlY3V0ZV9kbGZpbGVzICQxIgorLQkJCXNoaWZ0CisrICAgICAgLS1kcnktcnVufC0tZHJ5cnVufC1uKQorKwkJCW9wdF9kcnlfcnVuPToKKyAJCQk7OworLQorLSAgICAgIC0tZHJ5LXJ1biB8IC1uKQlvcHRfZHJ5X3J1bj06CQkJCQk7OworLSAgICAgIC0tZmVhdHVyZXMpICAgICAgIGZ1bmNfZmVhdHVyZXMJCQkJCTs7CistICAgICAgLS1maW5pc2gpCQltb2RlPSJmaW5pc2giCQkJCQk7OworLSAgICAgIC0tbm8tZmluaXNoKQlvcHRfZmluaXNoPWZhbHNlCQkJCTs7CistCistICAgICAgLS1tb2RlKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCistCQkJY2FzZSAkMSBpbgorLQkJCSAgIyBWYWxpZCBtb2RlIGFyZ3VtZW50czoKKy0JCQkgIGNsZWFuKQk7OworLQkJCSAgY29tcGlsZSkJOzsKKy0JCQkgIGV4ZWN1dGUpCTs7CistCQkJICBmaW5pc2gpCTs7CistCQkJICBpbnN0YWxsKQk7OworLQkJCSAgbGluaykJCTs7CistCQkJICByZWxpbmspCTs7CistCQkJICB1bmluc3RhbGwpCTs7CistCistCQkJICAjIENhdGNoIGFueXRoaW5nIGVsc2UgYXMgYW4gZXJyb3IKKy0JCQkgICopIGZ1bmNfZXJyb3IgImludmFsaWQgYXJndW1lbnQgZm9yICRvcHQiCistCQkJICAgICBleGl0X2NtZD1leGl0CistCQkJICAgICBicmVhaworLQkJCSAgICAgOzsKKy0JCSAgICAgICAgZXNhYworLQorLQkJCW1vZGU9IiQxIgorKyAgICAgIC0tY29uZmlnKQorKwkJCW9wdF9jb25maWc9OgorK2Z1bmNfY29uZmlnCisrCQkJOzsKKysgICAgICAtLWRsb3BlbnwtZGxvcGVuKQorKwkJCW9wdGFyZz0iJDEiCisrCQkJb3B0X2Rsb3Blbj0iJHtvcHRfZGxvcGVuKyRvcHRfZGxvcGVuCisrfSRvcHRhcmciCisgCQkJc2hpZnQKKyAJCQk7OworLQorICAgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMpCistCQkJb3B0X2R1cGxpY2F0ZV9kZXBzPToJCQkJOzsKKy0KKy0gICAgICAtLXF1aWV0fC0tc2lsZW50KQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgorLQkJCW9wdF9zaWxlbnQ9OgorLQkJCW9wdF92ZXJib3NlPWZhbHNlCisrCQkJb3B0X3ByZXNlcnZlX2R1cF9kZXBzPToKKyAJCQk7OworLQorLSAgICAgIC0tbm8tcXVpZXR8LS1uby1zaWxlbnQpCistCQkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKKy0JCQlvcHRfc2lsZW50PWZhbHNlCisrICAgICAgLS1mZWF0dXJlcykKKysJCQlvcHRfZmVhdHVyZXM9OgorK2Z1bmNfZmVhdHVyZXMKKyAJCQk7OworLQorLSAgICAgIC0tdmVyYm9zZXwgLXYpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCisrICAgICAgLS1maW5pc2gpCisrCQkJb3B0X2ZpbmlzaD06Cisrc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAorKwkJCTs7CisrICAgICAgLS1oZWxwKQorKwkJCW9wdF9oZWxwPToKKysJCQk7OworKyAgICAgIC0taGVscC1hbGwpCisrCQkJb3B0X2hlbHBfYWxsPToKKytvcHRfaGVscD0nOiBoZWxwLWFsbCcKKysJCQk7OworKyAgICAgIC0tbW9kZSkKKysJCQl0ZXN0ICQjID0gMCAmJiBmdW5jX21pc3NpbmdfYXJnICRvcHQgJiYgYnJlYWsKKysJCQlvcHRhcmc9IiQxIgorKwkJCW9wdF9tb2RlPSIkb3B0YXJnIgorK2Nhc2UgJG9wdGFyZyBpbgorKyAgIyBWYWxpZCBtb2RlIGFyZ3VtZW50czoKKysgIGNsZWFufGNvbXBpbGV8ZXhlY3V0ZXxmaW5pc2h8aW5zdGFsbHxsaW5rfHJlbGlua3x1bmluc3RhbGwpIDs7CisrCisrICAjIENhdGNoIGFueXRoaW5nIGVsc2UgYXMgYW4gZXJyb3IKKysgICopIGZ1bmNfZXJyb3IgImludmFsaWQgYXJndW1lbnQgZm9yICRvcHQiCisrICAgICBleGl0X2NtZD1leGl0CisrICAgICBicmVhaworKyAgICAgOzsKKytlc2FjCisrCQkJc2hpZnQKKysJCQk7OworKyAgICAgIC0tbm8tc2lsZW50fC0tbm8tcXVpZXQpCisgCQkJb3B0X3NpbGVudD1mYWxzZQorLQkJCW9wdF92ZXJib3NlPToKKytmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKKyAJCQk7OworLQorLSAgICAgIC0tbm8tdmVyYm9zZSkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKKysgICAgICAtLW5vLXZlcmJvc2UpCisgCQkJb3B0X3ZlcmJvc2U9ZmFsc2UKKytmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKKyAJCQk7OworLQorLSAgICAgIC0tdGFnKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCistCQkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCAkMSIKKy0JCQlmdW5jX2VuYWJsZV90YWcgIiQxIgkjIHRhZ25hbWUgaXMgc2V0IGhlcmUKKysgICAgICAtLXNpbGVudHwtLXF1aWV0KQorKwkJCW9wdF9zaWxlbnQ9OgorK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgorKyAgICAgICAgb3B0X3ZlcmJvc2U9ZmFsc2UKKysJCQk7OworKyAgICAgIC0tdmVyYm9zZXwtdikKKysJCQlvcHRfdmVyYm9zZT06CisrZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCisrb3B0X3NpbGVudD1mYWxzZQorKwkJCTs7CisrICAgICAgLS10YWcpCisrCQkJdGVzdCAkIyA9IDAgJiYgZnVuY19taXNzaW5nX2FyZyAkb3B0ICYmIGJyZWFrCisrCQkJb3B0YXJnPSIkMSIKKysJCQlvcHRfdGFnPSIkb3B0YXJnIgorK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0ICRvcHRhcmciCisrZnVuY19lbmFibGVfdGFnICIkb3B0YXJnIgorIAkJCXNoaWZ0CisgCQkJOzsKKyAKKysgICAgICAtXD98LWgpCQlmdW5jX3VzYWdlCQkJCTs7CisrICAgICAgLS1oZWxwKQkJZnVuY19oZWxwCQkJCTs7CisrICAgICAgLS12ZXJzaW9uKQlmdW5jX3ZlcnNpb24JCQkJOzsKKysKKyAgICAgICAjIFNlcGFyYXRlIG9wdGFyZ3MgdG8gbG9uZyBvcHRpb25zOgorLSAgICAgIC1kbG9wZW49KnwtLW1vZGU9KnwtLXRhZz0qKQorLQkJCWZ1bmNfb3B0X3NwbGl0ICIkb3B0IgorLQkJCXNldCBkdW1teSAiJGZ1bmNfb3B0X3NwbGl0X29wdCIgIiRmdW5jX29wdF9zcGxpdF9hcmciICR7MSsiJEAifQorKyAgICAgIC0tKj0qKQorKwkJCWZ1bmNfc3BsaXRfbG9uZ19vcHQgIiRvcHQiCisrCQkJc2V0IGR1bW15ICIkZnVuY19zcGxpdF9sb25nX29wdF9uYW1lIiAiJGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnIiAkezErIiRAIn0KKyAJCQlzaGlmdAorIAkJCTs7CisgCistICAgICAgLVw/fC1oKQkJZnVuY191c2FnZQkJCQkJOzsKKy0gICAgICAtLWhlbHApCQlvcHRfaGVscD06CQkJCQk7OworLSAgICAgIC0taGVscC1hbGwpCW9wdF9oZWxwPSc6IGhlbHAtYWxsJwkJCQk7OworLSAgICAgIC0tdmVyc2lvbikJZnVuY192ZXJzaW9uCQkJCQk7OworLQorLSAgICAgIC0qKQkJZnVuY19mYXRhbF9oZWxwICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgJG9wdCciCTs7CistCistICAgICAgKikJCW5vbm9wdD0iJG9wdCIKKy0JCQlicmVhaworKyAgICAgICMgU2VwYXJhdGUgbm9uLWFyZ3VtZW50IHNob3J0IG9wdGlvbnM6CisrICAgICAgLVw/KnwtaCp8LW4qfC12KikKKysJCQlmdW5jX3NwbGl0X3Nob3J0X29wdCAiJG9wdCIKKysJCQlzZXQgZHVtbXkgIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lIiAiLSRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmciICR7MSsiJEAifQorKwkJCXNoaWZ0CisgCQkJOzsKKysKKysgICAgICAtLSkJCWJyZWFrCQkJCQk7OworKyAgICAgIC0qKQkJZnVuY19mYXRhbF9oZWxwICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgJG9wdCciIDs7CisrICAgICAgKikJCXNldCBkdW1teSAiJG9wdCIgJHsxKyIkQCJ9OwlzaGlmdDsgYnJlYWsgIDs7CisgICAgIGVzYWMKKyAgIGRvbmUKKyAKKysgICMgVmFsaWRhdGUgb3B0aW9uczoKKysKKysgICMgc2F2ZSBmaXJzdCBub24tb3B0aW9uIGFyZ3VtZW50CisrICBpZiB0ZXN0ICIkIyIgLWd0IDA7IHRoZW4KKysgICAgbm9ub3B0PSIkb3B0IgorKyAgICBzaGlmdAorKyAgZmkKKysKKysgICMgcHJlc2VydmUgLS1kZWJ1ZworKyAgdGVzdCAiJG9wdF9kZWJ1ZyIgPSA6IHx8IGZ1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAtLWRlYnVnIgorIAorICAgY2FzZSAkaG9zdCBpbgorICAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqcHczMiogfCAqY2VnY2MqIHwgKnNvbGFyaXMyKiApCitAQCAtOTgxLDgyICsxMTg0LDQ0IEBAIGZ1bmNfZW5hYmxlX3RhZyAoKQorICAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9OgorICAgICAgIDs7CisgICAgICopCistICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz0kb3B0X2R1cGxpY2F0ZV9kZXBzCisrICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz0kb3B0X3ByZXNlcnZlX2R1cF9kZXBzCisgICAgICAgOzsKKyAgIGVzYWMKKyAKKy0gICMgSGF2aW5nIHdhcm5lZCBhYm91dCBhbGwgbWlzLXNwZWNpZmllZCBvcHRpb25zLCBiYWlsIG91dCBpZgorLSAgIyBhbnl0aGluZyB3YXMgd3JvbmcuCistICAkZXhpdF9jbWQgJEVYSVRfRkFJTFVSRQorLX0KKysgICRvcHRfaGVscCB8fCB7CisrICAgICMgU2FuaXR5IGNoZWNrcyBmaXJzdDoKKysgICAgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCisgCistIyBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKKy0jIEVuc3VyZSB0aGF0IHdlIGFyZSB1c2luZyBtNCBtYWNyb3MsIGFuZCBsaWJ0b29sIHNjcmlwdCBmcm9tIHRoZSBzYW1lCistIyByZWxlYXNlIG9mIGxpYnRvb2wuCistZnVuY19jaGVja192ZXJzaW9uX21hdGNoICgpCisteworLSAgaWYgdGVzdCAiJHBhY2thZ2VfcmV2aXNpb24iICE9ICIkbWFjcm9fcmV2aXNpb24iOyB0aGVuCistICAgIGlmIHRlc3QgIiRWRVJTSU9OIiAhPSAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCistICAgICAgaWYgdGVzdCAteiAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCistICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorLSRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKKy0kcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gYW4gb2xkZXIgcmVsZWFzZS4KKy0kcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCistJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgorLV9MVF9FT0YKKy0gICAgICBlbHNlCistICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorLSRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKKy0kcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gJFBBQ0tBR0UgJG1hY3JvX3ZlcnNpb24uCistJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgorLSRwcm9nbmFtZTogYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KKy1fTFRfRU9GCistICAgICAgZmkKKy0gICAgZWxzZQorLSAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCistJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24sCistJHByb2duYW1lOiBidXQgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gcmV2aXNpb24gJG1hY3JvX3JldmlzaW9uLgorLSRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24KKy0kcHJvZ25hbWU6IG9mICRQQUNLQUdFICRWRVJTSU9OIGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCistX0xUX0VPRgorKyAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiAhPSB5ZXM7IHRoZW4KKysgICAgICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gIm5vdCBjb25maWd1cmVkIHRvIGJ1aWxkIGFueSBraW5kIG9mIGxpYnJhcnkiCisgICAgIGZpCisgCistICAgIGV4aXQgJEVYSVRfTUlTTUFUQ0gKKy0gIGZpCistfQorLQorKyAgICAjIERhcndpbiBzdWNrcworKyAgICBldmFsIHN0ZF9zaHJleHQ9XCIkc2hyZXh0X2NtZHNcIgorIAorLSMjIC0tLS0tLS0tLS0tICMjCistIyMgICAgTWFpbi4gICAgIyMKKy0jIyAtLS0tLS0tLS0tLSAjIworLQorLSRvcHRfaGVscCB8fCB7CistICAjIFNhbml0eSBjaGVja3MgZmlyc3Q6CistICBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKKy0KKy0gIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiICE9IHllczsgdGhlbgorLSAgICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gIm5vdCBjb25maWd1cmVkIHRvIGJ1aWxkIGFueSBraW5kIG9mIGxpYnJhcnkiCistICBmaQorKyAgICAjIE9ubHkgZXhlY3V0ZSBtb2RlIGlzIGFsbG93ZWQgdG8gaGF2ZSAtZGxvcGVuIGZsYWdzLgorKyAgICBpZiB0ZXN0IC1uICIkb3B0X2Rsb3BlbiIgJiYgdGVzdCAiJG9wdF9tb2RlIiAhPSBleGVjdXRlOyB0aGVuCisrICAgICAgZnVuY19lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbiBcYC1kbG9wZW4nIgorKyAgICAgICRFQ0hPICIkaGVscCIgMT4mMgorKyAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorKyAgICBmaQorIAorLSAgdGVzdCAteiAiJG1vZGUiICYmIGZ1bmNfZmF0YWxfZXJyb3IgImVycm9yOiB5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERS4iCisrICAgICMgQ2hhbmdlIHRoZSBoZWxwIG1lc3NhZ2UgdG8gYSBtb2RlLXNwZWNpZmljIG9uZS4KKysgICAgZ2VuZXJpY19oZWxwPSIkaGVscCIKKysgICAgaGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCAtLW1vZGU9JG9wdF9tb2RlJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCisrICB9CisgCisgCistICAjIERhcndpbiBzdWNrcworLSAgZXZhbCAic3RkX3NocmV4dD1cIiRzaHJleHRfY21kc1wiIgorKyAgIyBCYWlsIGlmIHRoZSBvcHRpb25zIHdlcmUgc2NyZXdlZAorKyAgJGV4aXRfY21kICRFWElUX0ZBSUxVUkUKKyt9CisgCisgCistICAjIE9ubHkgZXhlY3V0ZSBtb2RlIGlzIGFsbG93ZWQgdG8gaGF2ZSAtZGxvcGVuIGZsYWdzLgorLSAgaWYgdGVzdCAtbiAiJGV4ZWN1dGVfZGxmaWxlcyIgJiYgdGVzdCAiJG1vZGUiICE9IGV4ZWN1dGU7IHRoZW4KKy0gICAgZnVuY19lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbiBcYC1kbG9wZW4nIgorLSAgICAkRUNITyAiJGhlbHAiIDE+JjIKKy0gICAgZXhpdCAkRVhJVF9GQUlMVVJFCistICBmaQorIAorLSAgIyBDaGFuZ2UgdGhlIGhlbHAgbWVzc2FnZSB0byBhIG1vZGUtc3BlY2lmaWMgb25lLgorLSAgZ2VuZXJpY19oZWxwPSIkaGVscCIKKy0gIGhlbHA9IlRyeSBcYCRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPSRtb2RlJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCistfQorIAorKyMjIC0tLS0tLS0tLS0tICMjCisrIyMgICAgTWFpbi4gICAgIyMKKysjIyAtLS0tLS0tLS0tLSAjIworIAorICMgZnVuY19sYWxpYl9wIGZpbGUKKyAjIFRydWUgaWZmIEZJTEUgaXMgYSBsaWJ0b29sIGAubGEnIGxpYnJhcnkgb3IgYC5sbycgb2JqZWN0IGZpbGUuCitAQCAtMTEyMSwxMiArMTI4Niw5IEBAIGZ1bmNfbHR3cmFwcGVyX2V4ZWN1dGFibGVfcCAoKQorICMgdGVtcG9yYXJ5IGx0d3JhcHBlcl9zY3JpcHQuCisgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZSAoKQorIHsKKy0gICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiIKKy0gICAgaWYgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICIkMSI7IHRoZW4KKy0JZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJDEiICIiICIuIgorLQlmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0JZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0LyRvYmpkaXIvJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9X2x0c2h3cmFwcGVyIgorLSAgICBmaQorKyAgICBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkMSIgIiIgIi4iCisrICAgIGZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorKyAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQvJG9iamRpci8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH1fbHRzaHdyYXBwZXIiCisgfQorIAorICMgZnVuY19sdHdyYXBwZXJfcCBmaWxlCitAQCAtMTE0OSw3ICsxMzExLDcgQEAgZnVuY19leGVjdXRlX2NtZHMgKCkKKyAgICAgc2F2ZV9pZnM9JElGUzsgSUZTPSd+JworICAgICBmb3IgY21kIGluICQxOyBkbworICAgICAgIElGUz0kc2F2ZV9pZnMKKy0gICAgICBldmFsICJjbWQ9XCIkY21kXCIiCisrICAgICAgZXZhbCBjbWQ9XCIkY21kXCIKKyAgICAgICBmdW5jX3Nob3dfZXZhbCAiJGNtZCIgIiR7Mi06fSIKKyAgICAgZG9uZQorICAgICBJRlM9JHNhdmVfaWZzCitAQCAtMTE3Miw2ICsxMzM0LDM3IEBAIGZ1bmNfc291cmNlICgpCisgfQorIAorIAorKyMgZnVuY19yZXNvbHZlX3N5c3Jvb3QgUEFUSAorKyMgUmVwbGFjZSBhIGxlYWRpbmcgPSBpbiBQQVRIIHdpdGggYSBzeXNyb290LiAgU3RvcmUgdGhlIHJlc3VsdCBpbnRvCisrIyBmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKytmdW5jX3Jlc29sdmVfc3lzcm9vdCAoKQorK3sKKysgIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdD0kMQorKyAgY2FzZSAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IGluCisrICA9KikKKysgICAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorKyAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQ9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrICAgIDs7CisrICBlc2FjCisrfQorKworKyMgZnVuY19yZXBsYWNlX3N5c3Jvb3QgUEFUSAorKyMgSWYgUEFUSCBiZWdpbnMgd2l0aCB0aGUgc3lzcm9vdCwgcmVwbGFjZSBpdCB3aXRoID0gYW5kCisrIyBzdG9yZSB0aGUgcmVzdWx0IGludG8gZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0LgorK2Z1bmNfcmVwbGFjZV9zeXNyb290ICgpCisreworKyAgY2FzZSAiJGx0X3N5c3Jvb3Q6JDEiIGluCisrICA/KjoiJGx0X3N5c3Jvb3QiKikKKysgICAgZnVuY19zdHJpcG5hbWUgIiRsdF9zeXNyb290IiAnJyAiJDEiCisrICAgIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdD0iPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrICAgIDs7CisrICAqKQorKyAgICAjIEluY2x1ZGluZyBubyBzeXNyb290LgorKyAgICBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQ9JDEKKysgICAgOzsKKysgIGVzYWMKKyt9CisrCisgIyBmdW5jX2luZmVyX3RhZyBhcmcKKyAjIEluZmVyIHRhZ2dlZCBjb25maWd1cmF0aW9uIHRvIHVzZSBpZiBhbnkgYXJlIGF2YWlsYWJsZSBhbmQKKyAjIGlmIG9uZSB3YXNuJ3QgY2hvc2VuIHZpYSB0aGUgIi0tdGFnIiBjb21tYW5kIGxpbmUgb3B0aW9uLgorQEAgLTExODQsOCArMTM3Nyw3IEBAIGZ1bmNfaW5mZXJfdGFnICgpCisgICAgIGlmIHRlc3QgLW4gIiRhdmFpbGFibGVfdGFncyIgJiYgdGVzdCAteiAiJHRhZ25hbWUiOyB0aGVuCisgICAgICAgQ0NfcXVvdGVkPQorICAgICAgIGZvciBhcmcgaW4gJENDOyBkbworLSAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKy0JQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysJZnVuY19hcHBlbmRfcXVvdGVkIENDX3F1b3RlZCAiJGFyZyIKKyAgICAgICBkb25lCisgICAgICAgQ0NfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDYAorICAgICAgIENDX3F1b3RlZF9leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NfcXVvdGVkYAorQEAgLTEyMDQsOCArMTM5Niw3IEBAIGZ1bmNfaW5mZXJfdGFnICgpCisgCSAgICBDQ19xdW90ZWQ9CisgCSAgICBmb3IgYXJnIGluICRDQzsgZG8KKyAJICAgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIG90aGVyIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgorLQkgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorLQkgICAgICBDQ19xdW90ZWQ9IiRDQ19xdW90ZWQgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKwkgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgQ0NfcXVvdGVkICIkYXJnIgorIAkgICAgZG9uZQorIAkgICAgQ0NfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDYAorIAkgICAgQ0NfcXVvdGVkX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ19xdW90ZWRgCitAQCAtMTI3NCw2ICsxNDY1LDQ4NiBAQCBFT0YKKyAgICAgfQorIH0KKyAKKysKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKyMgRklMRSBOQU1FIEFORCBQQVRIIENPTlZFUlNJT04gSEVMUEVSIEZVTkNUSU9OUyAjCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysKKysjIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgQVJHCisrIyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbnMgd2hlbiAkYnVpbGQgaXMgKm5peCwKKysjIGFuZCAkaG9zdCBpcyBtaW5ndywgY3lnd2luLCBvciBzb21lIG90aGVyIHczMiBlbnZpcm9ubWVudC4gUmVsaWVzIG9uIGEKKysjIGNvcnJlY3RseSBjb25maWd1cmVkIHdpbmUgZW52aXJvbm1lbnQgYXZhaWxhYmxlLCB3aXRoIHRoZSB3aW5lcGF0aCBwcm9ncmFtCisrIyBpbiAkYnVpbGQncyAkUEFUSC4KKysjCisrIyBBUkcgaXMgdGhlICRidWlsZCBmaWxlIG5hbWUgdG8gYmUgY29udmVydGVkIHRvIHczMiBmb3JtYXQuCisrIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluICRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCwgYW5kIHdpbGwKKysjIGJlIGVtcHR5IG9uIGVycm9yIChvciB3aGVuIEFSRyBpcyBlbXB0eSkKKytmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9IiQxIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgICMgVW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lcyBub3QgZXhpdCB3aXRoIGEgbm9uLXplcm8gZXJyb3IgY29kZSwgc28gd2UKKysgICAgIyBhcmUgZm9yY2VkIHRvIGNoZWNrIHRoZSBjb250ZW50cyBvZiBzdGRvdXQuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUKKysgICAgIyBjb21tYW5kIGlzIG5vdCBmb3VuZCwgdGhlIHNoZWxsIHdpbGwgc2V0IGFuIGV4aXQgY29kZSBvZiAxMjcgYW5kIHByaW50CisrICAgICMgKmFuIGVycm9yIG1lc3NhZ2UqIHRvIHN0ZG91dC4gU28gd2UgbXVzdCBjaGVjayBmb3IgYm90aCBlcnJvciBjb2RlIG9mCisrICAgICMgemVybyBBTkQgbm9uLWVtcHR5IHN0ZG91dCwgd2hpY2ggZXhwbGFpbnMgdGhlIG9kZCBjb25zdHJ1Y3Rpb246CisrICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wPWB3aW5lcGF0aCAtdyAiJDEiIDI+L2Rldi9udWxsYAorKyAgICBpZiB0ZXN0ICIkPyIgLWVxIDAgJiYgdGVzdCAtbiAiJHtmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcH0iOyB0aGVuCisrICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9YCRFQ0hPICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl90bXAiIHwKKysgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKysgICAgZWxzZQorKyAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0PQorKyAgICBmaQorKyAgZmkKKyt9CisrIyBlbmQ6IGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIKKysKKysKKysjIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgQVJHCisrIyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb25zIHdoZW4gJGJ1aWxkIGlzICpuaXgsIGFuZAorKyMgJGhvc3QgaXMgbWluZ3csIGN5Z3dpbiwgb3Igc29tZSBvdGhlciB3MzIgZW52aXJvbm1lbnQuIFJlbGllcyBvbiBhIGNvcnJlY3RseQorKyMgY29uZmlndXJlZCB3aW5lIGVudmlyb25tZW50IGF2YWlsYWJsZSwgd2l0aCB0aGUgd2luZXBhdGggcHJvZ3JhbSBpbiAkYnVpbGQncworKyMgJFBBVEguIEFzc3VtZXMgQVJHIGhhcyBubyBsZWFkaW5nIG9yIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMuCisrIworKyMgQVJHIGlzIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0byB3aW4zMi4KKysjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0LgorKyMgVW5jb252ZXJ0aWJsZSBmaWxlIChkaXJlY3RvcnkpIG5hbWVzIGluIEFSRyBhcmUgc2tpcHBlZDsgaWYgbm8gZGlyZWN0b3J5IG5hbWVzCisrIyBhcmUgY29udmVydGlibGUsIHRoZW4gdGhlIHJlc3VsdCBtYXkgYmUgZW1wdHkuCisrZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgICMgdW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lc24ndCBjb252ZXJ0IHBhdGhzLCBvbmx5IGZpbGUgbmFtZXMKKysgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0PSIiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgb2xkSUZTPSRJRlMKKysgICAgSUZTPToKKysgICAgZm9yIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfZiBpbiAkMTsgZG8KKysgICAgICBJRlM9JG9sZElGUworKyAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX2YiCisrICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IiA7IHRoZW4KKysgICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCI7IHRoZW4KKysgICAgICAgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgZnVuY19hcHBlbmQgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQgIjskZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgIGRvbmUKKysgICAgSUZTPSRvbGRJRlMKKysgIGZpCisrfQorKyMgZW5kOiBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyCisrCisrCisrIyBmdW5jX2N5Z3BhdGggQVJHUy4uLgorKyMgV3JhcHBlciBhcm91bmQgY2FsbGluZyB0aGUgY3lncGF0aCBwcm9ncmFtIHZpYSBMVF9DWUdQQVRILiBUaGlzIGlzIHVzZWQgd2hlbgorKyMgd2hlbiAoMSkgJGJ1aWxkIGlzICpuaXggYW5kIEN5Z3dpbiBpcyBob3N0ZWQgdmlhIGEgd2luZSBlbnZpcm9ubWVudDsgb3IgKDIpCisrIyAkYnVpbGQgaXMgTVNZUyBhbmQgJGhvc3QgaXMgQ3lnd2luLCBvciAoMykgJGJ1aWxkIGlzIEN5Z3dpbi4gSW4gY2FzZSAoMSkgb3IKKysjICgyKSwgcmV0dXJucyB0aGUgQ3lnd2luIGZpbGUgbmFtZSBvciBwYXRoIGluIGZ1bmNfY3lncGF0aF9yZXN1bHQgKGlucHV0CisrIyBmaWxlIG5hbWUgb3IgcGF0aCBpcyBhc3N1bWVkIHRvIGJlIGluIHczMiBmb3JtYXQsIGFzIHByZXZpb3VzbHkgY29udmVydGVkCisrIyBmcm9tICRidWlsZCdzICpuaXggb3IgTVNZUyBmb3JtYXQpLiBJbiBjYXNlICgzKSwgcmV0dXJucyB0aGUgdzMyIGZpbGUgbmFtZQorKyMgb3IgcGF0aCBpbiBmdW5jX2N5Z3BhdGhfcmVzdWx0IChpbnB1dCBmaWxlIG5hbWUgb3IgcGF0aCBpcyBhc3N1bWVkIHRvIGJlIGluCisrIyBDeWd3aW4gZm9ybWF0KS4gUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgb24gZXJyb3IuCisrIworKyMgQVJHUyBhcmUgcGFzc2VkIHRvIGN5Z3BhdGgsIHdpdGggdGhlIGxhc3Qgb25lIGJlaW5nIHRoZSBmaWxlIG5hbWUgb3IgcGF0aCB0bworKyMgYmUgY29udmVydGVkLgorKyMKKysjIFNwZWNpZnkgdGhlIGFic29sdXRlICpuaXggKG9yIHczMikgbmFtZSB0byBjeWdwYXRoIGluIHRoZSBMVF9DWUdQQVRICisrIyBlbnZpcm9ubWVudCB2YXJpYWJsZTsgZG8gbm90IHB1dCBpdCBpbiAkUEFUSC4KKytmdW5jX2N5Z3BhdGggKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBpZiB0ZXN0IC1uICIkTFRfQ1lHUEFUSCIgJiYgdGVzdCAtZiAiJExUX0NZR1BBVEgiOyB0aGVuCisrICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9YCRMVF9DWUdQQVRIICIkQCIgMj4vZGV2L251bGxgCisrICAgIGlmIHRlc3QgIiQ/IiAtbmUgMDsgdGhlbgorKyAgICAgICMgb24gZmFpbHVyZSwgZW5zdXJlIHJlc3VsdCBpcyBlbXB0eQorKyAgICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9CisrICAgIGZpCisrICBlbHNlCisrICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9CisrICAgIGZ1bmNfZXJyb3IgIkxUX0NZR1BBVEggaXMgZW1wdHkgb3Igc3BlY2lmaWVzIG5vbi1leGlzdGVudCBmaWxlOiBcYCRMVF9DWUdQQVRIJyIKKysgIGZpCisrfQorKyNlbmQ6IGZ1bmNfY3lncGF0aAorKworKworKyMgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgQVJHCisrIyBDb252ZXJ0IGZpbGUgbmFtZSBvciBwYXRoIEFSRyBmcm9tIE1TWVMgZm9ybWF0IHRvIHczMiBmb3JtYXQuICBSZXR1cm4KKysjIHJlc3VsdCBpbiBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQuCisrZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICAjIGF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQKKysgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdD1gKCBjbWQgLy9jIGVjaG8gIiQxIiApIDI+L2Rldi9udWxsIHwKKysgICAgJFNFRCAtZSAncy9bIF0qJC8vJyAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorK30KKysjZW5kOiBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMgorKworKworKyMgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgQVJHMSBBUkcyCisrIyBWZXJpZnkgdGhhdCBBUkcxIChhIGZpbGUgbmFtZSBpbiAkYnVpbGQgZm9ybWF0KSB3YXMgY29udmVydGVkIHRvICRob3N0CisrIyBmb3JtYXQgaW4gQVJHMi4gT3RoZXJ3aXNlLCBlbWl0IGFuIGVycm9yIG1lc3NhZ2UsIGJ1dCBjb250aW51ZSAocmVzZXR0aW5nCisrIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQgdG8gQVJHMSkuCisrZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBpZiB0ZXN0IC16ICIkMiIgJiYgdGVzdCAtbiAiJDEiIDsgdGhlbgorKyAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIGhvc3QgZmlsZSBuYW1lIGNvcnJlc3BvbmRpbmcgdG8iCisrICAgIGZ1bmNfZXJyb3IgIiAgXGAkMSciCisrICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgorKyAgICAjIEZhbGxiYWNrOgorKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorKyAgZmkKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sKKysKKysKKysjIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIEZST01fUEFUSFNFUCBUT19QQVRIU0VQIEZST01fUEFUSCBUT19QQVRICisrIyBWZXJpZnkgdGhhdCBGUk9NX1BBVEggKGEgcGF0aCBpbiAkYnVpbGQgZm9ybWF0KSB3YXMgY29udmVydGVkIHRvICRob3N0CisrIyBmb3JtYXQgaW4gVE9fUEFUSC4gT3RoZXJ3aXNlLCBlbWl0IGFuIGVycm9yIG1lc3NhZ2UsIGJ1dCBjb250aW51ZSwgcmVzZXR0aW5nCisrIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQgdG8gYSBzaW1wbGlzdGljIGZhbGxiYWNrIHZhbHVlIChzZWUgYmVsb3cpLgorK2Z1bmNfY29udmVydF9wYXRoX2NoZWNrICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgaWYgdGVzdCAteiAiJDQiICYmIHRlc3QgLW4gIiQzIjsgdGhlbgorKyAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBob3N0IHBhdGggY29ycmVzcG9uZGluZyB0byIKKysgICAgZnVuY19lcnJvciAiICBcYCQzJyIKKysgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCisrICAgICMgRmFsbGJhY2suICBUaGlzIGlzIGEgZGVsaWJlcmF0ZWx5IHNpbXBsaXN0aWMgImNvbnZlcnNpb24iIGFuZAorKyAgICAjIHNob3VsZCBub3QgYmUgImltcHJvdmVkIi4gIFNlZSBsaWJ0b29sLmluZm8uCisrICAgIGlmIHRlc3QgIngkMSIgIT0gIngkMiI7IHRoZW4KKysgICAgICBsdF9yZXBsYWNlX3BhdGhzZXBfY2hhcnM9InN8JDF8JDJ8ZyIKKysgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGVjaG8gIiQzIiB8CisrICAgICAgICAkU0VEIC1lICIkbHRfcmVwbGFjZV9wYXRoc2VwX2NoYXJzImAKKysgICAgZWxzZQorKyAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDMiCisrICAgIGZpCisrICBmaQorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjaworKworKworKyMgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwIEZST05UUEFUIEJBQ0tQQVQgUkVQTCBPUklHCisrIyBNb2RpZmllcyBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQgYnkgcHJlcGVuZGluZyBSRVBMIGlmIE9SSUcgbWF0Y2hlcyBGUk9OVFBBVAorKyMgYW5kIGFwcGVuZGluZyBSRVBMIGlmIE9SSUcgbWF0Y2hlcyBCQUNLUEFULgorK2Z1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGNhc2UgJDQgaW4KKysgICQxICkgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMyRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisrICAgIDs7CisrICBlc2FjCisrICBjYXNlICQ0IGluCisrICAkMiApIGZ1bmNfYXBwZW5kIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCAiJDMiCisrICAgIDs7CisrICBlc2FjCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcAorKworKworKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyAkYnVpbGQgdG8gJGhvc3QgRklMRSBOQU1FIENPTlZFUlNJT04gRlVOQ1RJT05TICMKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKyMgaW52b2tlZCB2aWEgYCR0b19ob3N0X2ZpbGVfY21kIEFSRycKKysjCisrIyBJbiBlYWNoIGNhc2UsIEFSRyBpcyB0aGUgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgdG8gJGhvc3QgZm9ybWF0LgorKyMgUmVzdWx0IHdpbGwgYmUgYXZhaWxhYmxlIGluICRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrCisrCisrIyBmdW5jX3RvX2hvc3RfZmlsZSBBUkcKKysjIENvbnZlcnRzIHRoZSBmaWxlIG5hbWUgQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuIFJldHVybiByZXN1bHQKKysjIGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX3RvX2hvc3RfZmlsZSAoKQorK3sKKysgICRvcHRfZGVidWcKKysgICR0b19ob3N0X2ZpbGVfY21kICIkMSIKKyt9CisrIyBlbmQgZnVuY190b19ob3N0X2ZpbGUKKysKKysKKysjIGZ1bmNfdG9fdG9vbF9maWxlIEFSRyBMQVpZCisrIyBjb252ZXJ0cyB0aGUgZmlsZSBuYW1lIEFSRyBmcm9tICRidWlsZCBmb3JtYXQgdG8gdG9vbGNoYWluIGZvcm1hdC4gUmV0dXJuCisrIyByZXN1bHQgaW4gZnVuY190b190b29sX2ZpbGVfcmVzdWx0LiAgSWYgdGhlIGNvbnZlcnNpb24gaW4gdXNlIGlzIGxpc3RlZAorKyMgaW4gKHRoZSBjb21tYSBzZXBhcmF0ZWQpIExBWlksIG5vIGNvbnZlcnNpb24gdGFrZXMgcGxhY2UuCisrZnVuY190b190b29sX2ZpbGUgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBjYXNlICwkMiwgaW4KKysgICAgKiwiJHRvX3Rvb2xfZmlsZV9jbWQiLCopCisrICAgICAgZnVuY190b190b29sX2ZpbGVfcmVzdWx0PSQxCisrICAgICAgOzsKKysgICAgKikKKysgICAgICAkdG9fdG9vbF9maWxlX2NtZCAiJDEiCisrICAgICAgZnVuY190b190b29sX2ZpbGVfcmVzdWx0PSRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQKKysgICAgICA7OworKyAgZXNhYworK30KKysjIGVuZCBmdW5jX3RvX3Rvb2xfZmlsZQorKworKworKyMgZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCBBUkcKKysjIENvcHkgQVJHIHRvIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfZmlsZV9ub29wICgpCisreworKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKworKworKyMgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgQVJHCisrIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAobWluZ3cpIE1TWVMgdG8gKG1pbmd3KSB3MzIgZm9ybWF0OyBhdXRvbWF0aWMKKysjIGNvbnZlcnNpb24gdG8gdzMyIGlzIG5vdCBhdmFpbGFibGUgaW5zaWRlIHRoZSBjd3JhcHBlci4gIFJldHVybnMgcmVzdWx0IGluCisrIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkMSIKKysgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorKyAgZmkKKysgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrCisrCisrIyBmdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyIEFSRworKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gQ3lnd2luIHRvIHczMiBmb3JtYXQuICBSZXR1cm5zIHJlc3VsdCBpbgorKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgICMgYmVjYXVzZSAkYnVpbGQgaXMgY3lnd2luLCB3ZSBjYWxsICJ0aGUiIGN5Z3BhdGggaW4gJFBBVEg7IG5vIG5lZWQgdG8gdXNlCisrICAgICMgTFRfQ1lHUEFUSCBpbiB0aGlzIGNhc2UuCisrICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD1gY3lncGF0aCAtbSAiJDEiYAorKyAgZmkKKysgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKysKKysKKysjIGZ1bmNfY29udmVydF9maWxlX25peF90b193MzIgQVJHCisrIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAqbml4IHRvIHczMiBmb3JtYXQuICBSZXF1aXJlcyBhIHdpbmUgZW52aXJvbm1lbnQKKysjIGFuZCBhIHdvcmtpbmcgd2luZXBhdGguIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkMSIKKysgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCisrICBmaQorKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKworKworKyMgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4gQVJHCisrIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSBNU1lTIHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBMVF9DWUdQQVRIIHNldC4KKysjIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiQxIgorKyAgICBmdW5jX2N5Z3BhdGggLXUgIiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCisrICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCisrICBmaQorKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysKKysKKysjIGZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4gQVJHCisrIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAqbml4IHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBDeWd3aW4gaW5zdGFsbGVkCisrIyBpbiBhIHdpbmUgZW52aXJvbm1lbnQsIHdvcmtpbmcgd2luZXBhdGgsIGFuZCBMVF9DWUdQQVRIIHNldC4gIFJldHVybnMgcmVzdWx0CisrIyBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBjb252ZXJ0IGZyb20gKm5peCB0byB3MzIsIHRoZW4gdXNlIGN5Z3BhdGggdG8gY29udmVydCBmcm9tIHczMiB0byBjeWd3aW4uCisrICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiQxIgorKyAgICBmdW5jX2N5Z3BhdGggLXUgIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKysgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKysgIGZpCisrICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisrCisrCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyAkYnVpbGQgdG8gJGhvc3QgUEFUSCBDT05WRVJTSU9OIEZVTkNUSU9OUyAjCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyBpbnZva2VkIHZpYSBgJHRvX2hvc3RfcGF0aF9jbWQgQVJHJworKyMKKysjIEluIGVhY2ggY2FzZSwgQVJHIGlzIHRoZSBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCB0byAkaG9zdCBmb3JtYXQuCisrIyBUaGUgcmVzdWx0IHdpbGwgYmUgYXZhaWxhYmxlIGluICRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCisrIworKyMgUGF0aCBzZXBhcmF0b3JzIGFyZSBhbHNvIGNvbnZlcnRlZCBmcm9tICRidWlsZCBmb3JtYXQgdG8gJGhvc3QgZm9ybWF0LiAgSWYKKysjIEFSRyBiZWdpbnMgb3IgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVyLCBpdCBpcyBwcmVzZXJ2ZWQgKGJ1dAorKyMgY29udmVydGVkIHRvICRob3N0IGZvcm1hdCkgb24gb3V0cHV0LgorKyMKKysjIEFsbCBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb25zIGFyZSBuYW1lZCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbnZlbnRpb246CisrIyAgIGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9uICAgIDogZnVuY19jb252ZXJ0X2ZpbGVfWF90b19ZICgpCisrIyAgIHBhdGggY29udmVyc2lvbiBmdW5jdGlvbiAgICAgICAgIDogZnVuY19jb252ZXJ0X3BhdGhfWF90b19ZICgpCisrIyB3aGVyZSwgZm9yIGFueSBnaXZlbiAkYnVpbGQvJGhvc3QgY29tYmluYXRpb24gdGhlICdYX3RvX1knIHZhbHVlIGlzIHRoZQorKyMgc2FtZS4gIElmIGNvbnZlcnNpb24gZnVuY3Rpb25zIGFyZSBhZGRlZCBmb3IgbmV3ICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbnMsCisrIyB0aGUgdHdvIG5ldyBmdW5jdGlvbnMgbXVzdCBmb2xsb3cgdGhpcyBwYXR0ZXJuLCBvciBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAorKyMgd2lsbCBicmVhay4KKysKKysKKysjIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCisrIyBFbnN1cmVzIHRoYXQgZnVuY3Rpb24gInBvaW50ZXIiIHZhcmlhYmxlICR0b19ob3N0X3BhdGhfY21kIGlzIHNldCB0byB0aGUKKysjIGFwcHJvcHJpYXRlIHZhbHVlLCBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgJHRvX2hvc3RfZmlsZV9jbWQuCisrdG9faG9zdF9wYXRoX2NtZD0KKytmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZCAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGlmIHRlc3QgLXogIiR0b19ob3N0X3BhdGhfY21kIjsgdGhlbgorKyAgICBmdW5jX3N0cmlwbmFtZSAnZnVuY19jb252ZXJ0X2ZpbGVfJyAnJyAiJHRvX2hvc3RfZmlsZV9jbWQiCisrICAgIHRvX2hvc3RfcGF0aF9jbWQ9ImZ1bmNfY29udmVydF9wYXRoXyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fSIKKysgIGZpCisrfQorKworKworKyMgZnVuY190b19ob3N0X3BhdGggQVJHCisrIyBDb252ZXJ0cyB0aGUgcGF0aCBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gUmV0dXJuIHJlc3VsdAorKyMgaW4gZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorK2Z1bmNfdG9faG9zdF9wYXRoICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKKysgICR0b19ob3N0X3BhdGhfY21kICIkMSIKKyt9CisrIyBlbmQgZnVuY190b19ob3N0X3BhdGgKKysKKysKKysjIGZ1bmNfY29udmVydF9wYXRoX25vb3AgQVJHCisrIyBDb3B5IEFSRyB0byBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCisrZnVuY19jb252ZXJ0X3BhdGhfbm9vcCAoKQorK3sKKysgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25vb3AKKysKKysKKysjIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyIEFSRworKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIChtaW5ndykgTVNZUyB0byAobWluZ3cpIHczMiBmb3JtYXQ7IGF1dG9tYXRpYworKyMgY29udmVyc2lvbiB0byB3MzIgaXMgbm90IGF2YWlsYWJsZSBpbnNpZGUgdGhlIGN3cmFwcGVyLiAgUmV0dXJucyByZXN1bHQgaW4KKysjIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tIEFSRy4gIE1TWVMKKysgICAgIyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZTsgY3lncGF0aCB0dXJucyB0aGVtIGludG8gJy47JyBhbmQgJzsuJzsKKysgICAgIyBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCisrICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisrICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisrICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAorKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKKysgIGZpCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyCisrCisrCisrIyBmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyIEFSRworKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIEN5Z3dpbiB0byB3MzIgZm9ybWF0LiAgUmV0dXJucyByZXN1bHQgaW4KKysjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKKysgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKysgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gY3lncGF0aCAtbSAtcCAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiYAorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCisrICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgorKyAgZmkKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfY3lnd2luX3RvX3czMgorKworKworKyMgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMiBBUkcKKysjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSAqbml4IHRvIHczMiBmb3JtYXQuICBSZXF1aXJlcyBhIHdpbmUgZW52aXJvbm1lbnQgYW5kCisrIyBhIHdvcmtpbmcgd2luZXBhdGguICBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6CisrICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisrICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKyAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKKysgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQiCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKKysgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCisrICBmaQorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyCisrCisrCisrIyBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbiBBUkcKKysjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSBNU1lTIHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBMVF9DWUdQQVRIIHNldC4KKysjIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6CisrICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisrICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisrICAgIGZ1bmNfY3lncGF0aCAtdSAtcCAiJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKysgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiA6IFwKKysgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiIDogIiQxIgorKyAgZmkKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b19jeWd3aW4KKysKKysKKysjIGZ1bmNfY29udmVydF9wYXRoX25peF90b19jeWd3aW4gQVJHCisrIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKm5peCB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgQ3lnd2luIGluc3RhbGxlZCBpbiBhCisrIyBhIHdpbmUgZW52aXJvbm1lbnQsIHdvcmtpbmcgd2luZXBhdGgsIGFuZCBMVF9DWUdQQVRIIHNldC4gIFJldHVybnMgcmVzdWx0IGluCisrIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tCisrICAgICMgQVJHLiBtc3lzIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlLCBjeWdwYXRoIHR1cm5zIHRoZW0KKysgICAgIyBpbnRvICcuOycgYW5kICc7LicsIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KKysgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKysgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgorKyAgICBmdW5jX2N5Z3BhdGggLXUgLXAgIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKysgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiA6IFwKKysgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiIDogIiQxIgorKyAgZmkKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbgorKworKworICMgZnVuY19tb2RlX2NvbXBpbGUgYXJnLi4uCisgZnVuY19tb2RlX2NvbXBpbGUgKCkKKyB7CitAQCAtMTMxNCwxMiArMTk4NSwxMiBAQCBmdW5jX21vZGVfY29tcGlsZSAoKQorIAkgIDs7CisgCisgCS1waWUgfCAtZnBpZSB8IC1mUElFKQorLSAgICAgICAgICBwaWVfZmxhZz0iJHBpZV9mbGFnICRhcmciCisrICAgICAgICAgIGZ1bmNfYXBwZW5kIHBpZV9mbGFnICIgJGFyZyIKKyAJICBjb250aW51ZQorIAkgIDs7CisgCisgCS1zaGFyZWQgfCAtc3RhdGljIHwgLXByZWZlci1waWMgfCAtcHJlZmVyLW5vbi1waWMpCistCSAgbGF0ZXI9IiRsYXRlciAkYXJnIgorKwkgIGZ1bmNfYXBwZW5kIGxhdGVyICIgJGFyZyIKKyAJICBjb250aW51ZQorIAkgIDs7CisgCitAQCAtMTM0MCwxNSArMjAxMSwxNCBAQCBmdW5jX21vZGVfY29tcGlsZSAoKQorIAkgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPScsJworIAkgIGZvciBhcmcgaW4gJGFyZ3M7IGRvCisgCSAgICBJRlM9IiRzYXZlX2lmcyIKKy0JICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCistCSAgICBsYXN0YXJnPSIkbGFzdGFyZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCSAgICBmdW5jX2FwcGVuZF9xdW90ZWQgbGFzdGFyZyAiJGFyZyIKKyAJICBkb25lCisgCSAgSUZTPSIkc2F2ZV9pZnMiCisgCSAgZnVuY19zdHJpcG5hbWUgJyAnICcnICIkbGFzdGFyZyIKKyAJICBsYXN0YXJnPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAKKyAJICAjIEFkZCB0aGUgYXJndW1lbnRzIHRvIGJhc2VfY29tcGlsZS4KKy0JICBiYXNlX2NvbXBpbGU9IiRiYXNlX2NvbXBpbGUgJGxhc3RhcmciCisrCSAgZnVuY19hcHBlbmQgYmFzZV9jb21waWxlICIgJGxhc3RhcmciCisgCSAgY29udGludWUKKyAJICA7OworIAorQEAgLTEzNjQsOCArMjAzNCw3IEBAIGZ1bmNfbW9kZV9jb21waWxlICgpCisgICAgICAgZXNhYyAgICAjICBjYXNlICRhcmdfbW9kZQorIAorICAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSB0aGUgcHJldmlvdXMgYXJndW1lbnQuCistICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGxhc3RhcmciCistICAgICAgYmFzZV9jb21waWxlPSIkYmFzZV9jb21waWxlICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgYmFzZV9jb21waWxlICIkbGFzdGFyZyIKKyAgICAgZG9uZSAjIGZvciBhcmcKKyAKKyAgICAgY2FzZSAkYXJnX21vZGUgaW4KK0BAIC0xNDk2LDE3ICsyMTY1LDE2IEBAIGNvbXBpbGVyLiIKKyAJJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdAorIAlleGl0ICRFWElUX0ZBSUxVUkUKKyAgICAgICBmaQorLSAgICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRvdXRwdXRfb2JqIgorKyAgICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkb3V0cHV0X29iaiIKKyAgICAgICAkRUNITyAiJHNyY2ZpbGUiID4gIiRsb2NrZmlsZSIKKyAgICAgZmkKKyAKKyAgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdAorLSAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkbG9ja2ZpbGUiCisrICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkbG9ja2ZpbGUiCisgICAgIHRyYXAgJyRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3Q7IGV4aXQgJEVYSVRfRkFJTFVSRScgMSAyIDE1CisgCistICAgIGlmIHRlc3QgLW4gIiRmaXhfc3JjZmlsZV9wYXRoIjsgdGhlbgorLSAgICAgIGV2YWwgInNyY2ZpbGU9XCIkZml4X3NyY2ZpbGVfcGF0aFwiIgorLSAgICBmaQorKyAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJHNyY2ZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgIHNyY2ZpbGU9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAorICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkc3JjZmlsZSIKKyAgICAgcXNyY2ZpbGU9JGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0CisgCitAQCAtMTUyNiw3ICsyMTk0LDcgQEAgY29tcGlsZXIuIgorIAorICAgICAgIGlmIHRlc3QgLXogIiRvdXRwdXRfb2JqIjsgdGhlbgorIAkjIFBsYWNlIFBJQyBvYmplY3RzIGluICRvYmpkaXIKKy0JY29tbWFuZD0iJGNvbW1hbmQgLW8gJGxvYmoiCisrCWZ1bmNfYXBwZW5kIGNvbW1hbmQgIiAtbyAkbG9iaiIKKyAgICAgICBmaQorIAorICAgICAgIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAiJGNvbW1hbmQiCVwKK0BAIC0xNTczLDExICsyMjQxLDExIEBAIGNvbXBpbGVyLiIKKyAJY29tbWFuZD0iJGJhc2VfY29tcGlsZSAkcXNyY2ZpbGUgJHBpY19mbGFnIgorICAgICAgIGZpCisgICAgICAgaWYgdGVzdCAiJGNvbXBpbGVyX2NfbyIgPSB5ZXM7IHRoZW4KKy0JY29tbWFuZD0iJGNvbW1hbmQgLW8gJG9iaiIKKysJZnVuY19hcHBlbmQgY29tbWFuZCAiIC1vICRvYmoiCisgICAgICAgZmkKKyAKKyAgICAgICAjIFN1cHByZXNzIGNvbXBpbGVyIG91dHB1dCBpZiB3ZSBhbHJlYWR5IGRpZCBhIFBJQyBjb21waWxhdGlvbi4KKy0gICAgICBjb21tYW5kPSIkY29tbWFuZCRzdXBwcmVzc19vdXRwdXQiCisrICAgICAgZnVuY19hcHBlbmQgY29tbWFuZCAiJHN1cHByZXNzX291dHB1dCIKKyAgICAgICBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgIiRjb21tYW5kIiBcCisgICAgICAgICAnJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFJworIAorQEAgLTE2MjIsMTMgKzIyOTAsMTMgQEAgY29tcGlsZXIuIgorIH0KKyAKKyAkb3B0X2hlbHAgfHwgeworLSAgdGVzdCAiJG1vZGUiID0gY29tcGlsZSAmJiBmdW5jX21vZGVfY29tcGlsZSAkezErIiRAIn0KKysgIHRlc3QgIiRvcHRfbW9kZSIgPSBjb21waWxlICYmIGZ1bmNfbW9kZV9jb21waWxlICR7MSsiJEAifQorIH0KKyAKKyBmdW5jX21vZGVfaGVscCAoKQorIHsKKyAgICAgIyBXZSBuZWVkIHRvIGRpc3BsYXkgaGVscCBmb3IgZWFjaCBvZiB0aGUgbW9kZXMuCistICAgIGNhc2UgJG1vZGUgaW4KKysgICAgY2FzZSAkb3B0X21vZGUgaW4KKyAgICAgICAiIikKKyAgICAgICAgICMgR2VuZXJpYyBoZWxwIGlzIGV4dHJhY3RlZCBmcm9tIHRoZSB1c2FnZSBjb21tZW50cworICAgICAgICAgIyBhdCB0aGUgc3RhcnQgb2YgdGhpcyBmaWxlLgorQEAgLTE2NTksOCArMjMyNyw4IEBAIFRoaXMgbW9kZSBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBvcHRpb25zOgorIAorICAgLW8gT1VUUFVULUZJTEUgICAgc2V0IHRoZSBvdXRwdXQgZmlsZSBuYW1lIHRvIE9VVFBVVC1GSUxFCisgICAtbm8tc3VwcHJlc3MgICAgICBkbyBub3Qgc3VwcHJlc3MgY29tcGlsZXIgb3V0cHV0IGZvciBtdWx0aXBsZSBwYXNzZXMKKy0gIC1wcmVmZXItcGljICAgICAgIHRyeSB0byBidWlsZGluZyBQSUMgb2JqZWN0cyBvbmx5CistICAtcHJlZmVyLW5vbi1waWMgICB0cnkgdG8gYnVpbGRpbmcgbm9uLVBJQyBvYmplY3RzIG9ubHkKKysgIC1wcmVmZXItcGljICAgICAgIHRyeSB0byBidWlsZCBQSUMgb2JqZWN0cyBvbmx5CisrICAtcHJlZmVyLW5vbi1waWMgICB0cnkgdG8gYnVpbGQgbm9uLVBJQyBvYmplY3RzIG9ubHkKKyAgIC1zaGFyZWQgICAgICAgICAgIGRvIG5vdCBidWlsZCBhIFxgLm8nIGZpbGUgc3VpdGFibGUgZm9yIHN0YXRpYyBsaW5raW5nCisgICAtc3RhdGljICAgICAgICAgICBvbmx5IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKKyAgIC1XYyxGTEFHICAgICAgICAgIHBhc3MgRkxBRyBkaXJlY3RseSB0byB0aGUgY29tcGlsZXIKK0BAIC0xODA0LDcgKzI0NzIsNyBAQCBPdGhlcndpc2UsIG9ubHkgRklMRSBpdHNlbGYgaXMgZGVsZXRlZCB1c2luZyBSTS4iCisgICAgICAgICA7OworIAorICAgICAgICopCistICAgICAgICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkbW9kZSciCisrICAgICAgICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkb3B0X21vZGUnIgorICAgICAgICAgOzsKKyAgICAgZXNhYworIAorQEAgLTE4MTksMTMgKzI0ODcsMTMgQEAgaWYgJG9wdF9oZWxwOyB0aGVuCisgICBlbHNlCisgICAgIHsKKyAgICAgICBmdW5jX2hlbHAgbm9leGl0CistICAgICAgZm9yIG1vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbworKyAgICAgIGZvciBvcHRfbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCisgCWZ1bmNfbW9kZV9oZWxwCisgICAgICAgZG9uZQorICAgICB9IHwgc2VkIC1uICcxcDsgMiwkcy9eVXNhZ2U6LyAgb3I6IC9wJworICAgICB7CisgICAgICAgZnVuY19oZWxwIG5vZXhpdAorLSAgICAgIGZvciBtb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KKysgICAgICBmb3Igb3B0X21vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbworIAllY2hvCisgCWZ1bmNfbW9kZV9oZWxwCisgICAgICAgZG9uZQorQEAgLTE4NTQsMTMgKzI1MjIsMTYgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKKyAgICAgICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYSBDT01NQU5EIgorIAorICAgICAjIEhhbmRsZSAtZGxvcGVuIGZsYWdzIGltbWVkaWF0ZWx5LgorLSAgICBmb3IgZmlsZSBpbiAkZXhlY3V0ZV9kbGZpbGVzOyBkbworKyAgICBmb3IgZmlsZSBpbiAkb3B0X2Rsb3BlbjsgZG8KKyAgICAgICB0ZXN0IC1mICIkZmlsZSIgXAorIAl8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGZpbGUnIGlzIG5vdCBhIGZpbGUiCisgCisgICAgICAgZGlyPQorICAgICAgIGNhc2UgJGZpbGUgaW4KKyAgICAgICAqLmxhKQorKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZpbGUiCisrCWZpbGU9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorKworIAkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgorIAlmdW5jX2xhbGliX3Vuc2FmZV9wICIkZmlsZSIgXAorIAkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCitAQCAtMTg4Miw3ICsyNTUzLDcgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKKyAJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKyAKKyAJaWYgdGVzdCAtZiAiJGRpci8kb2JqZGlyLyRkbG5hbWUiOyB0aGVuCistCSAgZGlyPSIkZGlyLyRvYmpkaXIiCisrCSAgZnVuY19hcHBlbmQgZGlyICIvJG9iamRpciIKKyAJZWxzZQorIAkgIGlmIHRlc3QgISAtZiAiJGRpci8kZGxuYW1lIjsgdGhlbgorIAkgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgXGAkZGxuYW1lJyBpbiBcYCRkaXInIG9yIFxgJGRpci8kb2JqZGlyJyIKK0BAIC0xOTA3LDEwICsyNTc4LDEwIEBAIGZ1bmNfbW9kZV9leGVjdXRlICgpCisgICAgICAgdGVzdCAtbiAiJGFic2RpciIgJiYgZGlyPSIkYWJzZGlyIgorIAorICAgICAgICMgTm93IGFkZCB0aGUgZGlyZWN0b3J5IHRvIHNobGlicGF0aF92YXIuCistICAgICAgaWYgZXZhbCB0ZXN0IC16IFwiXCQkc2hsaWJwYXRoX3ZhclwiOyB0aGVuCistCWV2YWwgJHNobGlicGF0aF92YXI9XCRkaXIKKysgICAgICBpZiBldmFsICJ0ZXN0IC16IFwiXCQkc2hsaWJwYXRoX3ZhclwiIjsgdGhlbgorKwlldmFsICIkc2hsaWJwYXRoX3Zhcj1cIlwkZGlyXCIiCisgICAgICAgZWxzZQorLQlldmFsICRzaGxpYnBhdGhfdmFyPVwkZGlyOlwkJHNobGlicGF0aF92YXIKKysJZXZhbCAiJHNobGlicGF0aF92YXI9XCJcJGRpcjpcJCRzaGxpYnBhdGhfdmFyXCIiCisgICAgICAgZmkKKyAgICAgZG9uZQorIAorQEAgLTE5MzksOCArMjYxMCw3IEBAIGZ1bmNfbW9kZV9leGVjdXRlICgpCisgCTs7CisgICAgICAgZXNhYworICAgICAgICMgUXVvdGUgYXJndW1lbnRzICh0byBwcmVzZXJ2ZSBzaGVsbCBtZXRhY2hhcmFjdGVycykuCistICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZpbGUiCistICAgICAgYXJncz0iJGFyZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKyAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBhcmdzICIkZmlsZSIKKyAgICAgZG9uZQorIAorICAgICBpZiB0ZXN0ICJYJG9wdF9kcnlfcnVuIiA9IFhmYWxzZTsgdGhlbgorQEAgLTE5NzIsMjIgKzI2NDIsNTkgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKKyAgICAgZmkKKyB9CisgCistdGVzdCAiJG1vZGUiID0gZXhlY3V0ZSAmJiBmdW5jX21vZGVfZXhlY3V0ZSAkezErIiRAIn0KKyt0ZXN0ICIkb3B0X21vZGUiID0gZXhlY3V0ZSAmJiBmdW5jX21vZGVfZXhlY3V0ZSAkezErIiRAIn0KKyAKKyAKKyAjIGZ1bmNfbW9kZV9maW5pc2ggYXJnLi4uCisgZnVuY19tb2RlX2ZpbmlzaCAoKQorIHsKKyAgICAgJG9wdF9kZWJ1ZworLSAgICBsaWJkaXJzPSIkbm9ub3B0IgorKyAgICBsaWJzPQorKyAgICBsaWJkaXJzPQorICAgICBhZG1pbmNtZHM9CisgCistICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCistICAgICAgZm9yIGRpcgorLSAgICAgIGRvCistCWxpYmRpcnM9IiRsaWJkaXJzICRkaXIiCistICAgICAgZG9uZQorKyAgICBmb3Igb3B0IGluICIkbm9ub3B0IiAkezErIiRAIn0KKysgICAgZG8KKysgICAgICBpZiB0ZXN0IC1kICIkb3B0IjsgdGhlbgorKwlmdW5jX2FwcGVuZCBsaWJkaXJzICIgJG9wdCIKKyAKKysgICAgICBlbGlmIHRlc3QgLWYgIiRvcHQiOyB0aGVuCisrCWlmIGZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRvcHQiOyB0aGVuCisrCSAgZnVuY19hcHBlbmQgbGlicyAiICRvcHQiCisrCWVsc2UKKysJICBmdW5jX3dhcm5pbmcgIlxgJG9wdCcgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorKwlmaQorKworKyAgICAgIGVsc2UKKysJZnVuY19mYXRhbF9lcnJvciAiaW52YWxpZCBhcmd1bWVudCBcYCRvcHQnIgorKyAgICAgIGZpCisrICAgIGRvbmUKKysKKysgICAgaWYgdGVzdCAtbiAiJGxpYnMiOyB0aGVuCisrICAgICAgaWYgdGVzdCAtbiAiJGx0X3N5c3Jvb3QiOyB0aGVuCisrICAgICAgICBzeXNyb290X3JlZ2V4PWAkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJHNlZF9tYWtlX2xpdGVyYWxfcmVnZXgiYAorKyAgICAgICAgc3lzcm9vdF9jbWQ9InMvXChbICddXCkkc3lzcm9vdF9yZWdleC9cMS9nOyIKKysgICAgICBlbHNlCisrICAgICAgICBzeXNyb290X2NtZD0KKysgICAgICBmaQorKworKyAgICAgICMgUmVtb3ZlIHN5c3Jvb3QgcmVmZXJlbmNlcworKyAgICAgIGlmICRvcHRfZHJ5X3J1bjsgdGhlbgorKyAgICAgICAgZm9yIGxpYiBpbiAkbGliczsgZG8KKysgICAgICAgICAgZWNobyAicmVtb3ZpbmcgcmVmZXJlbmNlcyB0byAkbHRfc3lzcm9vdCBhbmQgXGA9JyBwcmVmaXhlcyBmcm9tICRsaWIiCisrICAgICAgICBkb25lCisrICAgICAgZWxzZQorKyAgICAgICAgdG1wZGlyPWBmdW5jX21rdGVtcGRpcmAKKysgICAgICAgIGZvciBsaWIgaW4gJGxpYnM7IGRvCisrCSAgc2VkIC1lICIke3N5c3Jvb3RfY21kfSBzL1woWyAnXS1bTFJdXCk9L1wxL2c7IHMvXChbICddXCk9L1wxL2ciICRsaWIgXAorKwkgICAgPiAkdG1wZGlyL3RtcC1sYQorKwkgIG12IC1mICR0bXBkaXIvdG1wLWxhICRsaWIKKysJZG9uZQorKyAgICAgICAgJHtSTX1yICIkdG1wZGlyIgorKyAgICAgIGZpCisrICAgIGZpCisrCisrICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCisgICAgICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KKyAJaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzIjsgdGhlbgorIAkgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBmaW5pc2ggY29tbWFuZHMuCitAQCAtMTk5Nyw3ICsyNzA0LDcgQEAgZnVuY19tb2RlX2ZpbmlzaCAoKQorIAlpZiB0ZXN0IC1uICIkZmluaXNoX2V2YWwiOyB0aGVuCisgCSAgIyBEbyB0aGUgc2luZ2xlIGZpbmlzaF9ldmFsLgorIAkgIGV2YWwgY21kcz1cIiRmaW5pc2hfZXZhbFwiCistCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiRjbWRzIiB8fCBhZG1pbmNtZHM9IiRhZG1pbmNtZHMKKysJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJGNtZHMiIHx8IGZ1bmNfYXBwZW5kIGFkbWluY21kcyAiCisgICAgICAgICRjbWRzIgorIAlmaQorICAgICAgIGRvbmUKK0BAIC0yMDA2LDUzICsyNzEzLDU1IEBAIGZ1bmNfbW9kZV9maW5pc2ggKCkKKyAgICAgIyBFeGl0IGhlcmUgaWYgdGhleSB3YW50ZWQgc2lsZW50IG1vZGUuCisgICAgICRvcHRfc2lsZW50ICYmIGV4aXQgJEVYSVRfU1VDQ0VTUworIAorLSAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorLSAgICBlY2hvICJMaWJyYXJpZXMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbjoiCistICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCistICAgICAgJEVDSE8gIiAgICRsaWJkaXIiCistICAgIGRvbmUKKy0gICAgZWNobworLSAgICBlY2hvICJJZiB5b3UgZXZlciBoYXBwZW4gdG8gd2FudCB0byBsaW5rIGFnYWluc3QgaW5zdGFsbGVkIGxpYnJhcmllcyIKKy0gICAgZWNobyAiaW4gYSBnaXZlbiBkaXJlY3RvcnksIExJQkRJUiwgeW91IG11c3QgZWl0aGVyIHVzZSBsaWJ0b29sLCBhbmQiCistICAgIGVjaG8gInNwZWNpZnkgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGxpYnJhcnksIG9yIHVzZSB0aGUgXGAtTExJQkRJUiciCistICAgIGVjaG8gImZsYWcgZHVyaW5nIGxpbmtpbmcgYW5kIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOiIKKy0gICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCistICAgICAgZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRzaGxpYnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKy0gICAgICBlY2hvICIgICAgIGR1cmluZyBleGVjdXRpb24iCistICAgIGZpCistICAgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KKy0gICAgICBlY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHJ1bnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKy0gICAgICBlY2hvICIgICAgIGR1cmluZyBsaW5raW5nIgorLSAgICBmaQorLSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KKy0gICAgICBsaWJkaXI9TElCRElSCistICAgICAgZXZhbCAiZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCisrICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCisrICAgICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKysgICAgICBlY2hvICJMaWJyYXJpZXMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbjoiCisrICAgICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KKysJJEVDSE8gIiAgICRsaWJkaXIiCisrICAgICAgZG9uZQorKyAgICAgIGVjaG8KKysgICAgICBlY2hvICJJZiB5b3UgZXZlciBoYXBwZW4gdG8gd2FudCB0byBsaW5rIGFnYWluc3QgaW5zdGFsbGVkIGxpYnJhcmllcyIKKysgICAgICBlY2hvICJpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3UgbXVzdCBlaXRoZXIgdXNlIGxpYnRvb2wsIGFuZCIKKysgICAgICBlY2hvICJzcGVjaWZ5IHRoZSBmdWxsIHBhdGhuYW1lIG9mIHRoZSBsaWJyYXJ5LCBvciB1c2UgdGhlIFxgLUxMSUJESVInIgorKyAgICAgIGVjaG8gImZsYWcgZHVyaW5nIGxpbmtpbmcgYW5kIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOiIKKysgICAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KKysJZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRzaGxpYnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKysJZWNobyAiICAgICBkdXJpbmcgZXhlY3V0aW9uIgorKyAgICAgIGZpCisrICAgICAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorKwllY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHJ1bnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKysJZWNobyAiICAgICBkdXJpbmcgbGlua2luZyIKKysgICAgICBmaQorKyAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgorKwlsaWJkaXI9TElCRElSCisrCWV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKyAKKy0gICAgICAkRUNITyAiICAgLSB1c2UgdGhlIFxgJGZsYWcnIGxpbmtlciBmbGFnIgorLSAgICBmaQorLSAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgorLSAgICAgICRFQ0hPICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBydW4gdGhlc2UgY29tbWFuZHM6JGFkbWluY21kcyIKKy0gICAgZmkKKy0gICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4KKy0gICAgICBlY2hvICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBhZGQgTElCRElSIHRvIFxgL2V0Yy9sZC5zby5jb25mJyIKKy0gICAgZmkKKy0gICAgZWNobworKwkkRUNITyAiICAgLSB1c2UgdGhlIFxgJGZsYWcnIGxpbmtlciBmbGFnIgorKyAgICAgIGZpCisrICAgICAgaWYgdGVzdCAtbiAiJGFkbWluY21kcyI7IHRoZW4KKysJJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHJ1biB0aGVzZSBjb21tYW5kczokYWRtaW5jbWRzIgorKyAgICAgIGZpCisrICAgICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4KKysJZWNobyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgYWRkIExJQkRJUiB0byBcYC9ldGMvbGQuc28uY29uZiciCisrICAgICAgZmkKKysgICAgICBlY2hvCisgCistICAgIGVjaG8gIlNlZSBhbnkgb3BlcmF0aW5nIHN5c3RlbSBkb2N1bWVudGF0aW9uIGFib3V0IHNoYXJlZCBsaWJyYXJpZXMgZm9yIgorLSAgICBjYXNlICRob3N0IGluCistICAgICAgc29sYXJpczIuWzY3ODldfHNvbGFyaXMyLjFbMC05XSkKKy0gICAgICAgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpLCBjcmxlKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwiCistCWVjaG8gInBhZ2VzLiIKKy0JOzsKKy0gICAgICAqKQorLSAgICAgICAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCBwYWdlcy4iCistICAgICAgICA7OworLSAgICBlc2FjCistICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCisrICAgICAgZWNobyAiU2VlIGFueSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBmb3IiCisrICAgICAgY2FzZSAkaG9zdCBpbgorKwlzb2xhcmlzMi5bNjc4OV18c29sYXJpczIuMVswLTldKQorKwkgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpLCBjcmxlKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwiCisrCSAgZWNobyAicGFnZXMuIgorKwkgIDs7CisrCSopCisrCSAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCBwYWdlcy4iCisrCSAgOzsKKysgICAgICBlc2FjCisrICAgICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKysgICAgZmkKKyAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCisgfQorIAorLXRlc3QgIiRtb2RlIiA9IGZpbmlzaCAmJiBmdW5jX21vZGVfZmluaXNoICR7MSsiJEAifQorK3Rlc3QgIiRvcHRfbW9kZSIgPSBmaW5pc2ggJiYgZnVuY19tb2RlX2ZpbmlzaCAkezErIiRAIn0KKyAKKyAKKyAjIGZ1bmNfbW9kZV9pbnN0YWxsIGFyZy4uLgorQEAgLTIwNzcsNyArMjc4Niw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgICAgICMgVGhlIHJlYWwgZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBpbnN0YWxsYXRpb24gcHJvZ3JhbS4KKyAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIGl0LgorICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorLSAgICBpbnN0YWxsX3Byb2c9IiRpbnN0YWxsX3Byb2ckZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfcHJvZyAiJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICBpbnN0YWxsX3NoYXJlZF9wcm9nPSRpbnN0YWxsX3Byb2cKKyAgICAgY2FzZSAiICRpbnN0YWxsX3Byb2cgIiBpbgorICAgICAgICpbXFxcIC9dY3BcICopIGluc3RhbGxfY3A9OiA7OworQEAgLTIwOTcsNyArMjgwNiw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgICAgIGRvCisgICAgICAgYXJnMj0KKyAgICAgICBpZiB0ZXN0IC1uICIkZGVzdCI7IHRoZW4KKy0JZmlsZXM9IiRmaWxlcyAkZGVzdCIKKysJZnVuY19hcHBlbmQgZmlsZXMgIiAkZGVzdCIKKyAJZGVzdD0kYXJnCisgCWNvbnRpbnVlCisgICAgICAgZmkKK0BAIC0yMTM1LDExICsyODQ0LDExIEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgCisgICAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIHRoZSBhcmd1bWVudC4KKyAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorLSAgICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrICAgICAgZnVuY19hcHBlbmQgaW5zdGFsbF9wcm9nICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgIGlmIHRlc3QgLW4gIiRhcmcyIjsgdGhlbgorIAlmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnMiIKKyAgICAgICBmaQorLSAgICAgIGluc3RhbGxfc2hhcmVkX3Byb2c9IiRpbnN0YWxsX3NoYXJlZF9wcm9nICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysgICAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3NoYXJlZF9wcm9nICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICBkb25lCisgCisgICAgIHRlc3QgLXogIiRpbnN0YWxsX3Byb2ciICYmIFwKK0BAIC0yMTUxLDcgKzI4NjAsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQorICAgICBpZiB0ZXN0IC1uICIkaW5zdGFsbF9vdmVycmlkZV9tb2RlIiAmJiAkbm9fbW9kZTsgdGhlbgorICAgICAgIGlmICRpbnN0YWxsX2NwOyB0aGVuIDo7IGVsc2UKKyAJZnVuY19xdW90ZV9mb3JfZXZhbCAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSIKKy0JaW5zdGFsbF9zaGFyZWRfcHJvZz0iJGluc3RhbGxfc2hhcmVkX3Byb2cgLW0gJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKwlmdW5jX2FwcGVuZCBpbnN0YWxsX3NoYXJlZF9wcm9nICIgLW0gJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgIGZpCisgICAgIGZpCisgCitAQCAtMjIwOSwxMCArMjkxOCwxMyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQorICAgICAgIGNhc2UgJGZpbGUgaW4KKyAgICAgICAqLiRsaWJleHQpCisgCSMgRG8gdGhlIHN0YXRpYyBsaWJyYXJpZXMgbGF0ZXIuCistCXN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRmaWxlIgorKwlmdW5jX2FwcGVuZCBzdGF0aWNsaWJzICIgJGZpbGUiCisgCTs7CisgCisgICAgICAgKi5sYSkKKysJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmaWxlIgorKwlmaWxlPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKysKKyAJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KKyAJZnVuY19sYWxpYl91bnNhZmVfcCAiJGZpbGUiIFwKKyAJICB8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGZpbGUnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKK0BAIC0yMjI2LDIzICsyOTM4LDMwIEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgCWlmIHRlc3QgIlgkZGVzdGRpciIgPSAiWCRsaWJkaXIiOyB0aGVuCisgCSAgY2FzZSAiJGN1cnJlbnRfbGliZGlycyAiIGluCisgCSAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAqKSBjdXJyZW50X2xpYmRpcnM9IiRjdXJyZW50X2xpYmRpcnMgJGxpYmRpciIgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBjdXJyZW50X2xpYmRpcnMgIiAkbGliZGlyIiA7OworIAkgIGVzYWMKKyAJZWxzZQorIAkgICMgTm90ZSB0aGUgbGliZGlyIGFzIGEgZnV0dXJlIGxpYmRpci4KKyAJICBjYXNlICIkZnV0dXJlX2xpYmRpcnMgIiBpbgorIAkgICoiICRsaWJkaXIgIiopIDs7CistCSAgKikgZnV0dXJlX2xpYmRpcnM9IiRmdXR1cmVfbGliZGlycyAkbGliZGlyIiA7OworKwkgICopIGZ1bmNfYXBwZW5kIGZ1dHVyZV9saWJkaXJzICIgJGxpYmRpciIgOzsKKyAJICBlc2FjCisgCWZpCisgCisgCWZ1bmNfZGlybmFtZSAiJGZpbGUiICIvIiAiIgorIAlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLQlkaXI9IiRkaXIkb2JqZGlyIgorKwlmdW5jX2FwcGVuZCBkaXIgIiRvYmpkaXIiCisgCisgCWlmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KKysgICAgICAjIFN0cmlwIGFueSB0cmFpbGluZyBzbGFzaCBmcm9tIHRoZSBkZXN0aW5hdGlvbi4KKysgICAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLycgIiRsaWJkaXIiCisrICAgICAgZGVzdGxpYmRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrCisrICAgICAgZnVuY19zdHJpcG5hbWUgJycgJy8nICIkZGVzdGRpciIKKysgICAgICBzX2Rlc3RkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKworIAkgICMgRGV0ZXJtaW5lIHRoZSBwcmVmaXggdGhlIHVzZXIgaGFzIGFwcGxpZWQgdG8gb3VyIGZ1dHVyZSBkaXIuCistCSAgaW5zdF9wcmVmaXhfZGlyPWAkRUNITyAiJGRlc3RkaXIiIHwgJFNFRCAtZSAicyUkbGliZGlyXCQlJSJgCisrCSAgaW5zdF9wcmVmaXhfZGlyPWAkRUNITyAiWCRzX2Rlc3RkaXIiIHwgJFhzZWQgLWUgInMlJGRlc3RsaWJkaXJcJCUlImAKKyAKKyAJICAjIERvbid0IGFsbG93IHRoZSB1c2VyIHRvIHBsYWNlIHVzIG91dHNpZGUgb2Ygb3VyIGV4cGVjdGVkCisgCSAgIyBsb2NhdGlvbiBiL2MgdGhpcyBwcmV2ZW50cyBmaW5kaW5nIGRlcGVuZGVudCBsaWJyYXJpZXMgdGhhdAorQEAgLTIzMTUsNyArMzAzNCw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgCWZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nICRpbnN0bmFtZSAkZGVzdGRpci8kbmFtZSIgJ2V4aXQgJD8nCisgCisgCSMgTWF5YmUgaW5zdGFsbCB0aGUgc3RhdGljIGxpYnJhcnksIHRvby4KKy0JdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBzdGF0aWNsaWJzPSIkc3RhdGljbGlicyAkZGlyLyRvbGRfbGlicmFyeSIKKysJdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBmdW5jX2FwcGVuZCBzdGF0aWNsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCisgCTs7CisgCisgICAgICAgKi5sbykKK0BAIC0yNTAzLDcgKzMyMjIsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQorICAgICB0ZXN0IC1uICIkZnV0dXJlX2xpYmRpcnMiICYmIFwKKyAgICAgICBmdW5jX3dhcm5pbmcgInJlbWVtYmVyIHRvIHJ1biBcYCRwcm9nbmFtZSAtLWZpbmlzaCRmdXR1cmVfbGliZGlycyciCisgCistICAgIGlmIHRlc3QgLW4gIiRjdXJyZW50X2xpYmRpcnMiICYmICRvcHRfZmluaXNoOyB0aGVuCisrICAgIGlmIHRlc3QgLW4gIiRjdXJyZW50X2xpYmRpcnMiOyB0aGVuCisgICAgICAgIyBNYXliZSBqdXN0IGRvIGEgZHJ5IHJ1bi4KKyAgICAgICAkb3B0X2RyeV9ydW4gJiYgY3VycmVudF9saWJkaXJzPSIgLW4kY3VycmVudF9saWJkaXJzIgorICAgICAgIGV4ZWNfY21kPSckU0hFTEwgJHByb2dwYXRoICRwcmVzZXJ2ZV9hcmdzIC0tZmluaXNoJGN1cnJlbnRfbGliZGlycycKK0BAIC0yNTEyLDcgKzMyMzEsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQorICAgICBmaQorIH0KKyAKKy10ZXN0ICIkbW9kZSIgPSBpbnN0YWxsICYmIGZ1bmNfbW9kZV9pbnN0YWxsICR7MSsiJEAifQorK3Rlc3QgIiRvcHRfbW9kZSIgPSBpbnN0YWxsICYmIGZ1bmNfbW9kZV9pbnN0YWxsICR7MSsiJEAifQorIAorIAorICMgZnVuY19nZW5lcmF0ZV9kbHN5bXMgb3V0cHV0bmFtZSBvcmlnaW5hdG9yIHBpY19wCitAQCAtMjU1OSw2ICszMjc4LDE4IEBAIGV4dGVybiBcIkNcIiB7CisgI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVdzdHJpY3QtcHJvdG90eXBlc1wiCisgI2VuZGlmCisgCisrLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisrI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKysvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKysgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisrLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxzZQorKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CisrI2VuZGlmCisrCisgLyogRXh0ZXJuYWwgc3ltYm9sIGRlY2xhcmF0aW9ucyBmb3IgdGhlIGNvbXBpbGVyLiAqL1wKKyAiCisgCitAQCAtMjU3MCwyMSArMzMwMSwyMiBAQCBleHRlcm4gXCJDXCIgeworIAkgICMgQWRkIG91ciBvd24gcHJvZ3JhbSBvYmplY3RzIHRvIHRoZSBzeW1ib2wgbGlzdC4KKyAJICBwcm9nZmlsZXM9YCRFQ0hPICIkb2JqcyRvbGRfZGVwbGlicyIgfCAkU1AyTkwgfCAkU0VEICIkbG8ybyIgfCAkTkwyU1BgCisgCSAgZm9yIHByb2dmaWxlIGluICRwcm9nZmlsZXM7IGRvCistCSAgICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJHByb2dmaWxlJyIKKy0JICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkTk0gJHByb2dmaWxlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKKysJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkcHJvZ2ZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrCSAgICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCciCisrCSAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJE5NICRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorIAkgIGRvbmUKKyAKKyAJICBpZiB0ZXN0IC1uICIkZXhjbHVkZV9leHBzeW1zIjsgdGhlbgorIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKKy0JICAgICAgJEVHUkVQIC12ICIgKCRleGNsdWRlX2V4cHN5bXMpJCIgIiRubGlzdCIgPiAiJG5saXN0IlQKKy0JICAgICAgJE1WICIkbmxpc3QiVCAiJG5saXN0IgorKwkgICAgICBldmFsICckRUdSRVAgLXYgIiAoJGV4Y2x1ZGVfZXhwc3ltcykkIiAiJG5saXN0IiA+ICIkbmxpc3QiVCcKKysJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKKyAJICAgIH0KKyAJICBmaQorIAorIAkgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9sc19yZWdleCI7IHRoZW4KKyAJICAgICRvcHRfZHJ5X3J1biB8fCB7CistCSAgICAgICRFR1JFUCAtZSAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IiAiJG5saXN0IiA+ICIkbmxpc3QiVAorLQkgICAgICAkTVYgIiRubGlzdCJUICIkbmxpc3QiCisrCSAgICAgIGV2YWwgJyRFR1JFUCAtZSAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IiAiJG5saXN0IiA+ICIkbmxpc3QiVCcKKysJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKKyAJICAgIH0KKyAJICBmaQorIAorQEAgLTI1OTMsMjMgKzMzMjUsMjMgQEAgZXh0ZXJuIFwiQ1wiIHsKKyAJICAgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiCisgCSAgICAkb3B0X2RyeV9ydW4gfHwgeworIAkgICAgICAkUk0gJGV4cG9ydF9zeW1ib2xzCistCSAgICAgICR7U0VEfSAtbiAtZSAnL146IEBQUk9HUkFNQCAkL2QnIC1lICdzL14uKiBcKC4qXCkkL1wxL3AnIDwgIiRubGlzdCIgPiAiJGV4cG9ydF9zeW1ib2xzIgorKwkgICAgICBldmFsICIke1NFRH0gLW4gLWUgJy9eOiBAUFJPR1JBTUAgJC9kJyAtZSAncy9eLiogXCguKlwpJC9cMS9wJyAiJzwgIiRubGlzdCIgPiAiJGV4cG9ydF9zeW1ib2xzIicKKyAJICAgICAgY2FzZSAkaG9zdCBpbgorIAkgICAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKy0gICAgICAgICAgICAgICAgZWNobyBFWFBPUlRTID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKKy0gICAgICAgICAgICAgICAgY2F0ICIkZXhwb3J0X3N5bWJvbHMiID4+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiCisrICAgICAgICAgICAgICAgIGV2YWwgImVjaG8gRVhQT1JUUyAiJz4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCisrICAgICAgICAgICAgICAgIGV2YWwgJ2NhdCAiJGV4cG9ydF9zeW1ib2xzIiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKKyAJICAgICAgICA7OworIAkgICAgICBlc2FjCisgCSAgICB9CisgCSAgZWxzZQorIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKKy0JICAgICAgJHtTRUR9IC1lICdzL1woW10uWypeJF1cKS9cXFwxL2cnIC1lICdzL14vIC8nIC1lICdzLyQvJC8nIDwgIiRleHBvcnRfc3ltYm9scyIgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIgorLQkgICAgICAkR1JFUCAtZiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIiA8ICIkbmxpc3QiID4gIiRubGlzdCJUCistCSAgICAgICRNViAiJG5saXN0IlQgIiRubGlzdCIKKysJICAgICAgZXZhbCAiJHtTRUR9IC1lICdzL1woW10uWypeJF1cKS9cXFxcXDEvZycgLWUgJ3MvXi8gLycgLWUgJ3MvJC8kLyciJyA8ICIkZXhwb3J0X3N5bWJvbHMiID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCInCisrCSAgICAgIGV2YWwgJyRHUkVQIC1mICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiIDwgIiRubGlzdCIgPiAiJG5saXN0IlQnCisrCSAgICAgIGV2YWwgJyRNViAiJG5saXN0IlQgIiRubGlzdCInCisgCSAgICAgIGNhc2UgJGhvc3QgaW4KKyAJICAgICAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKy0JICAgICAgICAgIGVjaG8gRVhQT1JUUyA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiCistCSAgICAgICAgICBjYXQgIiRubGlzdCIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKKysJICAgICAgICAgIGV2YWwgImVjaG8gRVhQT1JUUyAiJz4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCisrCSAgICAgICAgICBldmFsICdjYXQgIiRubGlzdCIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCisgCSAgICAgICAgICA7OworIAkgICAgICBlc2FjCisgCSAgICB9CitAQCAtMjYyMCwxMCArMzM1Miw1MiBAQCBleHRlcm4gXCJDXCIgeworIAkgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkZGxwcmVmaWxlJyIKKyAJICBmdW5jX2Jhc2VuYW1lICIkZGxwcmVmaWxlIgorIAkgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0JICAkb3B0X2RyeV9ydW4gfHwgeworLQkgICAgJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IgorLQkgICAgZXZhbCAiJE5NICRkbHByZWZpbGUgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorLQkgIH0KKysgICAgICAgICAgY2FzZSAkaG9zdCBpbgorKwkgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCisrCSAgICAgICMgaWYgYW4gaW1wb3J0IGxpYnJhcnksIHdlIG5lZWQgdG8gb2J0YWluIGRsbmFtZQorKwkgICAgICBpZiBmdW5jX3dpbjMyX2ltcG9ydF9saWJfcCAiJGRscHJlZmlsZSI7IHRoZW4KKysJICAgICAgICBmdW5jX3RyX3NoICIkZGxwcmVmaWxlIgorKwkgICAgICAgIGV2YWwgImN1cnJfbGFmaWxlPVwkbGliZmlsZV8kZnVuY190cl9zaF9yZXN1bHQiCisrCSAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9IiIKKysJICAgICAgICBpZiB0ZXN0IC1uICIkY3Vycl9sYWZpbGUiICYmIGZ1bmNfbGFsaWJfcCAiJGN1cnJfbGFmaWxlIjsgdGhlbgorKwkgICAgICAgICAgIyBVc2Ugc3Vic2hlbGwsIHRvIGF2b2lkIGNsb2JiZXJpbmcgY3VycmVudCB2YXJpYWJsZSB2YWx1ZXMKKysJICAgICAgICAgIGRscHJlZmlsZV9kbG5hbWU9YHNvdXJjZSAiJGN1cnJfbGFmaWxlIiAmJiBlY2hvICIkZGxuYW1lImAKKysJICAgICAgICAgIGlmIHRlc3QgLW4gIiRkbHByZWZpbGVfZGxuYW1lIiA7IHRoZW4KKysJICAgICAgICAgICAgZnVuY19iYXNlbmFtZSAiJGRscHJlZmlsZV9kbG5hbWUiCisrCSAgICAgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisrCSAgICAgICAgICBlbHNlCisrCSAgICAgICAgICAgICMgbm8gbGFmaWxlLiB1c2VyIGV4cGxpY2l0bHkgcmVxdWVzdGVkIC1kbHByZW9wZW4gPGltcG9ydCBsaWJyYXJ5Pi4KKysJICAgICAgICAgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kICIkZGxwcmVmaWxlIgorKwkgICAgICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0kc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKKysJICAgICAgICAgIGZpCisrCSAgICAgICAgZmkKKysJICAgICAgICAkb3B0X2RyeV9ydW4gfHwgeworKwkgICAgICAgICAgaWYgdGVzdCAtbiAiJGRscHJlZmlsZV9kbGJhc2VuYW1lIiA7IHRoZW4KKysJICAgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJGRscHJlZmlsZV9kbGJhc2VuYW1lIiA+PiAiJG5saXN0IicKKysJICAgICAgICAgIGVsc2UKKysJICAgICAgICAgICAgZnVuY193YXJuaW5nICJDb3VsZCBub3QgY29tcHV0ZSBETEwgbmFtZSBmcm9tICRuYW1lIgorKwkgICAgICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJworKwkgICAgICAgICAgZmkKKysJICAgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKwkgICAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8CisrCSAgICAgICAgICAgICRTRUQgLWUgJy9JIF9faW1wL2QnIC1lICdzL0kgX19ubV8vRCAvO3MvX25tX18vLycgPj4gJyRubGlzdCciCisrCSAgICAgICAgfQorKwkgICAgICBlbHNlICMgbm90IGFuIGltcG9ydCBsaWIKKysJICAgICAgICAkb3B0X2RyeV9ydW4gfHwgeworKwkgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKKysJICAgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKwkgICAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKKysJICAgICAgICB9CisrCSAgICAgIGZpCisrCSAgICA7OworKwkgICAgKikKKysJICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKKysJICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJworKwkgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKwkgICAgICAgIGV2YWwgIiROTSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCisrCSAgICAgIH0KKysJICAgIDs7CisrICAgICAgICAgIGVzYWMKKyAJZG9uZQorIAorIAkkb3B0X2RyeV9ydW4gfHwgeworQEAgLTI2NjEsMjYgKzM0MzUsOSBAQCB0eXBlZGVmIHN0cnVjdCB7CisgICBjb25zdCBjaGFyICpuYW1lOworICAgdm9pZCAqYWRkcmVzczsKKyB9IGx0X2Rsc3ltbGlzdDsKKy0iCistCSAgY2FzZSAkaG9zdCBpbgorLQkgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorLQkgICAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKKy0vKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlCistICAgcnVudGltZSByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24KKy0gICBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8iCistCSAgICBsdF9kbHN5bV9jb25zdD0gOzsKKy0JICAqb3NmNSopCistCSAgICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAorLS8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEgKi8iCistCSAgICBsdF9kbHN5bV9jb25zdD0gOzsKKy0JICAqKQorLQkgICAgbHRfZGxzeW1fY29uc3Q9Y29uc3QgOzsKKy0JICBlc2FjCistCistCSAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKKy1leHRlcm4gJGx0X2Rsc3ltX2NvbnN0IGx0X2Rsc3ltbGlzdAorK2V4dGVybiBMVF9ETFNZTV9DT05TVCBsdF9kbHN5bWxpc3QKKyBsdF8ke215X3ByZWZpeH1fTFRYX3ByZWxvYWRlZF9zeW1ib2xzW107CistJGx0X2Rsc3ltX2NvbnN0IGx0X2Rsc3ltbGlzdAorK0xUX0RMU1lNX0NPTlNUIGx0X2Rsc3ltbGlzdAorIGx0XyR7bXlfcHJlZml4fV9MVFhfcHJlbG9hZGVkX3N5bWJvbHNbXSA9Cisge1wKKyAgIHsgXCIkbXlfb3JpZ2luYXRvclwiLCAodm9pZCAqKSAwIH0sIgorQEAgLTI3MzYsNyArMzQ5Myw3IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgCWZvciBhcmcgaW4gJExUQ0ZMQUdTOyBkbworIAkgIGNhc2UgJGFyZyBpbgorIAkgIC1waWUgfCAtZnBpZSB8IC1mUElFKSA7OworLQkgICopIHN5bXRhYl9jZmxhZ3M9IiRzeW10YWJfY2ZsYWdzICRhcmciIDs7CisrCSAgKikgZnVuY19hcHBlbmQgc3ltdGFiX2NmbGFncyAiICRhcmciIDs7CisgCSAgZXNhYworIAlkb25lCisgCitAQCAtMjc5Niw5ICszNTUzLDExIEBAIGZ1bmNfd2luMzJfbGliaWQgKCkKKyAgICAgd2luMzJfbGliaWRfdHlwZT0ieDg2IGFyY2hpdmUgaW1wb3J0IgorICAgICA7OworICAgKmFyXCBhcmNoaXZlKikgIyBjb3VsZCBiZSBhbiBpbXBvcnQsIG9yIHN0YXRpYworLSAgICBpZiAkT0JKRFVNUCAtZiAiJDEiIHwgJFNFRCAtZSAnMTBxJyAyPi9kZXYvbnVsbCB8CistICAgICAgICRFR1JFUCAnZmlsZSBmb3JtYXQgKHBlLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScgPi9kZXYvbnVsbDsgdGhlbgorLSAgICAgIHdpbjMyX25tcmVzPWAkTk0gLWYgcG9zaXggLUEgIiQxIiB8CisrICAgICMgS2VlcCB0aGUgZWdyZXAgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9ELgorKyAgICBpZiBldmFsICRPQkpEVU1QIC1mICQxIHwgJFNFRCAtZSAnMTBxJyAyPi9kZXYvbnVsbCB8CisrICAgICAgICRFR1JFUCAnZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJyA+L2Rldi9udWxsOyB0aGVuCisrICAgICAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgIHdpbjMyX25tcmVzPWBldmFsICROTSAtZiBwb3NpeCAtQSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiB8CisgCSRTRUQgLW4gLWUgJworIAkgICAgMSwxMDB7CisgCQkvIEkgL3sKK0BAIC0yODI3LDYgKzM1ODYsMTMxIEBAIGZ1bmNfd2luMzJfbGliaWQgKCkKKyAgICRFQ0hPICIkd2luMzJfbGliaWRfdHlwZSIKKyB9CisgCisrIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIgQVJHCisrIworKyMgUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUKKysjIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZAorKyMgaW1wb3J0IGxpYnJhcnkgQVJHLgorKyMgSW52b2tlZCBieSBldmFsJ2luZyB0aGUgbGlidG9vbCB2YXJpYWJsZQorKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluIHRoZSB2YXJpYWJsZQorKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0CisrZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YCRETExUT09MIC0taWRlbnRpZnktc3RyaWN0IC0taWRlbnRpZnkgIiQxImAKKyt9CisrCisrIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSBTRUNUSU9OX05BTUUgTElCTkFNRXMKKysjCisrIyBUaGUgaXMgdGhlIGNvcmUgb2YgYSBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBvZiBhCisrIyBwbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZSBuYW1lIG9mIHRoZQorKyMgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGltcG9ydCBsaWJyYXJ5IExJQk5BTUUuCisrIworKyMgU0VDVElPTl9OQU1FIGlzIGVpdGhlciAuaWRhdGEkNiBvciAuaWRhdGEkNywgZGVwZW5kaW5nCisrIyBvbiB0aGUgcGxhdGZvcm0gYW5kIGNvbXBpbGVyIHRoYXQgY3JlYXRlZCB0aGUgaW1wbGliLgorKyMKKysjIEVjaG9zIHRoZSBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZQorKyMgc3BlY2lmaWVkIGltcG9ydCBsaWJyYXJ5LgorK2Z1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgbWF0Y2hfbGl0ZXJhbD1gJEVDSE8gIiQxIiB8ICRTRUQgIiRzZWRfbWFrZV9saXRlcmFsX3JlZ2V4ImAKKysgICRPQkpEVU1QIC1zIC0tc2VjdGlvbiAiJDEiICIkMiIgMj4vZGV2L251bGwgfAorKyAgICAkU0VEICcvXkNvbnRlbnRzIG9mIHNlY3Rpb24gJyIkbWF0Y2hfbGl0ZXJhbCInOi97CisrICAgICAgIyBQbGFjZSBtYXJrZXIgYXQgYmVnaW5uaW5nIG9mIGFyY2hpdmUgbWVtYmVyIGRsbG5hbWUgc2VjdGlvbgorKyAgICAgIHMvLiovPT09PU1BUks9PT09LworKyAgICAgIHAKKysgICAgICBkCisrICAgIH0KKysgICAgIyBUaGVzZSBsaW5lcyBjYW4gc29tZXRpbWVzIGJlIGxvbmdlciB0aGFuIDQzIGNoYXJhY3RlcnMsIGJ1dAorKyAgICAjIGFyZSBhbHdheXMgdW5pbnRlcmVzdGluZworKyAgICAvOlsJIF0qZmlsZSBmb3JtYXQgcGVbaV1ceywxXH0tL2QKKysgICAgL15JbiBhcmNoaXZlIFteOl0qOi9kCisrICAgICMgRW5zdXJlIG1hcmtlciBpcyBwcmludGVkCisrICAgIC9ePT09PU1BUks9PT09L3AKKysgICAgIyBSZW1vdmUgYWxsIGxpbmVzIHdpdGggbGVzcyB0aGFuIDQzIGNoYXJhY3RlcnMKKysgICAgL14uXHs0M1x9LyFkCisrICAgICMgRnJvbSByZW1haW5pbmcgbGluZXMsIHJlbW92ZSBmaXJzdCA0MyBjaGFyYWN0ZXJzCisrICAgIHMvXi5cezQzXH0vLycgfAorKyAgICAkU0VEIC1uICcKKysgICAgICAjIEpvaW4gbWFya2VyIGFuZCBhbGwgbGluZXMgdW50aWwgbmV4dCBtYXJrZXIgaW50byBhIHNpbmdsZSBsaW5lCisrICAgICAgL149PT09TUFSSz09PT0vIGIgcGFyYQorKyAgICAgIEgKKysgICAgICAkIGIgcGFyYQorKyAgICAgIGIKKysgICAgICA6cGFyYQorKyAgICAgIHgKKysgICAgICBzL1xuLy9nCisrICAgICAgIyBSZW1vdmUgdGhlIG1hcmtlcgorKyAgICAgIHMvXj09PT1NQVJLPT09PS8vCisrICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgZG90cyBhbmQgd2hpdGVzcGFjZQorKyAgICAgIHMvW1wuIFx0XSokLy8KKysgICAgICAjIFByaW50CisrICAgICAgLy4vcCcgfAorKyAgICAjIHdlIG5vdyBoYXZlIGEgbGlzdCwgb25lIGVudHJ5IHBlciBsaW5lLCBvZiB0aGUgc3RyaW5naWZpZWQKKysgICAgIyBjb250ZW50cyBvZiB0aGUgYXBwcm9wcmlhdGUgc2VjdGlvbiBvZiBhbGwgbWVtYmVycyBvZiB0aGUKKysgICAgIyBhcmNoaXZlIHdoaWNoIHBvc3Nlc3MgdGhhdCBzZWN0aW9uLiBIZXVyaXN0aWM6IGVsaW1pbmF0ZQorKyAgICAjIGFsbCB0aG9zZSB3aGljaCBoYXZlIGEgZmlyc3Qgb3Igc2Vjb25kIGNoYXJhY3RlciB0aGF0IGlzCisrICAgICMgYSAnLicgKHRoYXQgaXMsIG9iamR1bXAncyByZXByZXNlbnRhdGlvbiBvZiBhbiB1bnByaW50YWJsZQorKyAgICAjIGNoYXJhY3Rlci4pIFRoaXMgc2hvdWxkIHdvcmsgZm9yIGFsbCBhcmNoaXZlcyB3aXRoIGxlc3MgdGhhbgorKyAgICAjIDB4MzAyZiBleHBvcnRzIC0tIGJ1dCB3aWxsIGZhaWwgZm9yIERMTHMgd2hvc2UgbmFtZSBhY3R1YWxseQorKyAgICAjIGJlZ2lucyB3aXRoIGEgbGl0ZXJhbCAnLicgb3IgYSBzaW5nbGUgY2hhcmFjdGVyIGZvbGxvd2VkIGJ5CisrICAgICMgYSAnLicuCisrICAgICMKKysgICAgIyBPZiB0aG9zZSB0aGF0IHJlbWFpbiwgcHJpbnQgdGhlIGZpcnN0IG9uZS4KKysgICAgJFNFRCAtZSAnL15cLi9kOy9eLlwuL2Q7cScKKyt9CisrCisrIyBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wIEFSRworKyMgVGhpcyBwcmVkaWNhdGUgcmV0dXJucyB3aXRoIHplcm8gc3RhdHVzIChUUlVFKSBpZgorKyMgQVJHIGlzIGEgR05VL2JpbnV0aWxzLXN0eWxlIGltcG9ydCBsaWJyYXJ5LiBSZXR1cm5zCisrIyB3aXRoIG5vbnplcm8gc3RhdHVzIChGQUxTRSkgb3RoZXJ3aXNlLgorK2Z1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl90bXA9YCROTSAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgfCBldmFsICIkZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRFR1JFUCAnIChfaGVhZF9bQS1aYS16MC05X10rX1thZF1sKnxbQS1aYS16MC05X10rX1thZF1sKl9pbmFtZSkkJ2AKKysgIHRlc3QgLW4gIiRmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl90bXAiCisrfQorKworKyMgZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wIEFSRworKyMgVGhpcyBwcmVkaWNhdGUgcmV0dXJucyB3aXRoIHplcm8gc3RhdHVzIChUUlVFKSBpZgorKyMgQVJHIGlzIGFuIE1TLXN0eWxlIGltcG9ydCBsaWJyYXJ5LiBSZXR1cm5zCisrIyB3aXRoIG5vbnplcm8gc3RhdHVzIChGQUxTRSkgb3RoZXJ3aXNlLgorK2Z1bmNfY3lnbWluZ19tc19pbXBsaWJfcCAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfdG1wPWAkTk0gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiIHwgZXZhbCAiJGdsb2JhbF9zeW1ib2xfcGlwZSIgfCAkR1JFUCAnX05VTExfSU1QT1JUX0RFU0NSSVBUT1InYAorKyAgdGVzdCAtbiAiJGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfdG1wIgorK30KKysKKysjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjayBBUkcKKysjIFBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlCisrIyBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQKKysjIGltcG9ydCBsaWJyYXJ5IEFSRy4KKysjCisrIyBUaGlzIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGlzIGZvciB1c2Ugd2hlbiAkRExMVE9PTAorKyMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgLS1pZGVudGlmeS1zdHJpY3Qgb3B0aW9uLgorKyMgSW52b2tlZCBieSBldmFsJ2luZyB0aGUgbGlidG9vbCB2YXJpYWJsZQorKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluIHRoZSB2YXJpYWJsZQorKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0CisrZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgaWYgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCAiJDEiIDsgdGhlbgorKyAgICAjIGJpbnV0aWxzIGltcG9ydCBsaWJyYXJ5CisrICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PWBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAnLmlkYXRhJDcnICIkMSJgCisrICBlbGlmIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfcCAiJDEiIDsgdGhlbgorKyAgICAjIG1zLWdlbmVyYXRlZCBpbXBvcnQgbGlicmFyeQorKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgJy5pZGF0YSQ2JyAiJDEiYAorKyAgZWxzZQorKyAgICAjIHVua25vd24KKysgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9IiIKKysgIGZpCisrfQorIAorIAorICMgZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgZGlyIG9sZGxpYgorQEAgLTI5MTcsNyArMzgwMSw3IEBAIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAoKQorIAkgICAgZGFyd2luX2ZpbGU9CisgCSAgICBkYXJ3aW5fZmlsZXM9CisgCSAgICBmb3IgZGFyd2luX2ZpbGUgaW4gJGRhcndpbl9maWxlbGlzdDsgZG8KKy0JICAgICAgZGFyd2luX2ZpbGVzPWBmaW5kIHVuZmF0LSQkIC1uYW1lICRkYXJ3aW5fZmlsZSAtcHJpbnQgfCAkTkwyU1BgCisrCSAgICAgIGRhcndpbl9maWxlcz1gZmluZCB1bmZhdC0kJCAtbmFtZSAkZGFyd2luX2ZpbGUgLXByaW50IHwgc29ydCB8ICROTDJTUGAKKyAJICAgICAgJExJUE8gLWNyZWF0ZSAtb3V0cHV0ICIkZGFyd2luX2ZpbGUiICRkYXJ3aW5fZmlsZXMKKyAJICAgIGRvbmUgIyAkZGFyd2luX2ZpbGVsaXN0CisgCSAgICAkUk0gLXJmIHVuZmF0LSQkCitAQCAtMjkzMiw3ICszODE2LDcgQEAgZnVuY19leHRyYWN0X2FyY2hpdmVzICgpCisgICAgICAgICBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSAiJG15X3hkaXIiICIkbXlfeGFicyIKKyAJOzsKKyAgICAgICBlc2FjCistICAgICAgbXlfb2xkb2Jqcz0iJG15X29sZG9ianMgImBmaW5kICRteV94ZGlyIC1uYW1lIFwqLiRvYmpleHQgLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8ICROTDJTUGAKKysgICAgICBteV9vbGRvYmpzPSIkbXlfb2xkb2JqcyAiYGZpbmQgJG15X3hkaXIgLW5hbWUgXCouJG9iamV4dCAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50IHwgc29ydCB8ICROTDJTUGAKKyAgICAgZG9uZQorIAorICAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0PSIkbXlfb2xkb2JqcyIKK0BAIC0zMDE0LDcgKzM4OTgsMTEwIEBAIGZ1bmNfZmFsbGJhY2tfZWNobyAoKQorIF9MVEVDSE9fRU9GJworIH0KKyAgICAgRUNITz1cIiRxRUNIT1wiCistICBmaVwKKysgIGZpCisrCisrIyBWZXJ5IGJhc2ljIG9wdGlvbiBwYXJzaW5nLiBUaGVzZSBvcHRpb25zIGFyZSAoYSkgc3BlY2lmaWMgdG8KKysjIHRoZSBsaWJ0b29sIHdyYXBwZXIsIChiKSBhcmUgaWRlbnRpY2FsIGJldHdlZW4gdGhlIHdyYXBwZXIKKysjIC9zY3JpcHQvIGFuZCB0aGUgd3JhcHBlciAvZXhlY3V0YWJsZS8gd2hpY2ggaXMgdXNlZCBvbmx5IG9uCisrIyB3aW5kb3dzIHBsYXRmb3JtcywgYW5kIChjKSBhbGwgYmVnaW4gd2l0aCB0aGUgc3RyaW5nICItLWx0LSIKKysjIChhcHBsaWNhdGlvbiBwcm9ncmFtcyBhcmUgdW5saWtlbHkgdG8gaGF2ZSBvcHRpb25zIHdoaWNoIG1hdGNoCisrIyB0aGlzIHBhdHRlcm4pLgorKyMKKysjIFRoZXJlIGFyZSBvbmx5IHR3byBzdXBwb3J0ZWQgb3B0aW9uczogLS1sdC1kZWJ1ZyBhbmQKKysjIC0tbHQtZHVtcC1zY3JpcHQuIFRoZXJlIGlzLCBkZWxpYmVyYXRlbHksIG5vIC0tbHQtaGVscC4KKysjCisrIyBUaGUgZmlyc3QgYXJndW1lbnQgdG8gdGhpcyBwYXJzaW5nIGZ1bmN0aW9uIHNob3VsZCBiZSB0aGUKKysjIHNjcmlwdCdzICQwIHZhbHVlLCBmb2xsb3dlZCBieSAiJEAiLgorK2x0X29wdGlvbl9kZWJ1Zz0KKytmdW5jX3BhcnNlX2x0X29wdGlvbnMgKCkKKyt7CisrICBsdF9zY3JpcHRfYXJnMD1cJDAKKysgIHNoaWZ0CisrICBmb3IgbHRfb3B0CisrICBkbworKyAgICBjYXNlIFwiXCRsdF9vcHRcIiBpbgorKyAgICAtLWx0LWRlYnVnKSBsdF9vcHRpb25fZGVidWc9MSA7OworKyAgICAtLWx0LWR1bXAtc2NyaXB0KQorKyAgICAgICAgbHRfZHVtcF9EPVxgXCRFQ0hPIFwiWFwkbHRfc2NyaXB0X2FyZzBcIiB8ICRTRUQgLWUgJ3MvXlgvLycgLWUgJ3MlL1teL10qJCUlJ1xgCisrICAgICAgICB0ZXN0IFwiWFwkbHRfZHVtcF9EXCIgPSBcIlhcJGx0X3NjcmlwdF9hcmcwXCIgJiYgbHRfZHVtcF9EPS4KKysgICAgICAgIGx0X2R1bXBfRj1cYFwkRUNITyBcIlhcJGx0X3NjcmlwdF9hcmcwXCIgfCAkU0VEIC1lICdzL15YLy8nIC1lICdzJV4uKi8lJSdcYAorKyAgICAgICAgY2F0IFwiXCRsdF9kdW1wX0QvXCRsdF9kdW1wX0ZcIgorKyAgICAgICAgZXhpdCAwCisrICAgICAgOzsKKysgICAgLS1sdC0qKQorKyAgICAgICAgXCRFQ0hPIFwiVW5yZWNvZ25pemVkIC0tbHQtIG9wdGlvbjogJ1wkbHRfb3B0J1wiIDE+JjIKKysgICAgICAgIGV4aXQgMQorKyAgICAgIDs7CisrICAgIGVzYWMKKysgIGRvbmUKKysKKysgICMgUHJpbnQgdGhlIGRlYnVnIGJhbm5lciBpbW1lZGlhdGVseToKKysgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCisrICAgIGVjaG8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBsaWJ0b29sIHdyYXBwZXIgKEdOVSAkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OXCIgMT4mMgorKyAgZmkKKyt9CisrCisrIyBVc2VkIHdoZW4gLS1sdC1kZWJ1Zy4gUHJpbnRzIGl0cyBhcmd1bWVudHMgdG8gc3Rkb3V0CisrIyAocmVkaXJlY3Rpb24gaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIpCisrZnVuY19sdF9kdW1wX2FyZ3MgKCkKKyt7CisrICBsdF9kdW1wX2FyZ3NfTj0xOworKyAgZm9yIGx0X2FyZworKyAgZG8KKysgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndltcJGx0X2R1bXBfYXJnc19OXTogXCRsdF9hcmdcIgorKyAgICBsdF9kdW1wX2FyZ3NfTj1cYGV4cHIgXCRsdF9kdW1wX2FyZ3NfTiArIDFcYAorKyAgZG9uZQorK30KKysKKysjIENvcmUgZnVuY3Rpb24gZm9yIGxhdW5jaGluZyB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uCisrZnVuY19leGVjX3Byb2dyYW1fY29yZSAoKQorK3sKKysiCisrICBjYXNlICRob3N0IGluCisrICAjIEJhY2tzbGFzaGVzIHNlcGFyYXRlIGRpcmVjdG9yaWVzIG9uIHBsYWluIHdpbmRvd3MKKysgICotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCisrICAgICRFQ0hPICJcCisrICAgICAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KKysgICAgICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbMF06IFwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiAxPiYyCisrICAgICAgICBmdW5jX2x0X2R1bXBfYXJncyBcJHsxK1wiXCRAXCJ9IDE+JjIKKysgICAgICBmaQorKyAgICAgIGV4ZWMgXCJcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQorKyIKKysgICAgOzsKKysKKysgICopCisrICAgICRFQ0hPICJcCisrICAgICAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KKysgICAgICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbMF06IFwkcHJvZ2Rpci9cJHByb2dyYW1cIiAxPiYyCisrICAgICAgICBmdW5jX2x0X2R1bXBfYXJncyBcJHsxK1wiXCRAXCJ9IDE+JjIKKysgICAgICBmaQorKyAgICAgIGV4ZWMgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQorKyIKKysgICAgOzsKKysgIGVzYWMKKysgICRFQ0hPICJcCisrICAgICAgXCRFQ0hPIFwiXCQwOiBjYW5ub3QgZXhlYyBcJHByb2dyYW0gXCQqXCIgMT4mMgorKyAgICAgIGV4aXQgMQorK30KKysKKysjIEEgZnVuY3Rpb24gdG8gZW5jYXBzdWxhdGUgbGF1bmNoaW5nIHRoZSB0YXJnZXQgYXBwbGljYXRpb24KKysjIFN0cmlwcyBvcHRpb25zIGluIHRoZSAtLWx0LSogbmFtZXNwYWNlIGZyb20gXCRAIGFuZAorKyMgbGF1bmNoZXMgdGFyZ2V0IGFwcGxpY2F0aW9uIHdpdGggdGhlIHJlbWFpbmluZyBhcmd1bWVudHMuCisrZnVuY19leGVjX3Byb2dyYW0gKCkKKyt7CisrICBmb3IgbHRfd3JfYXJnCisrICBkbworKyAgICBjYXNlIFwkbHRfd3JfYXJnIGluCisrICAgIC0tbHQtKikgOzsKKysgICAgKikgc2V0IHggXCJcJEBcIiBcIlwkbHRfd3JfYXJnXCI7IHNoaWZ0OzsKKysgICAgZXNhYworKyAgICBzaGlmdAorKyAgZG9uZQorKyAgZnVuY19leGVjX3Byb2dyYW1fY29yZSBcJHsxK1wiXCRAXCJ9CisrfQorKworKyAgIyBQYXJzZSBvcHRpb25zCisrICBmdW5jX3BhcnNlX2x0X29wdGlvbnMgXCJcJDBcIiBcJHsxK1wiXCRAXCJ9CisgCisgICAjIEZpbmQgdGhlIGRpcmVjdG9yeSB0aGF0IHRoaXMgc2NyaXB0IGxpdmVzIGluLgorICAgdGhpc2Rpcj1cYFwkRUNITyBcIlwkZmlsZVwiIHwgJFNFRCAncyUvW14vXSokJSUnXGAKK0BAIC0zMDc4LDcgKzQwNjUsNyBAQCBfTFRFQ0hPX0VPRicKKyAKKyAgICAgIyByZWxpbmsgZXhlY3V0YWJsZSBpZiBuZWNlc3NhcnkKKyAgICAgaWYgdGVzdCAtbiBcIlwkcmVsaW5rX2NvbW1hbmRcIjsgdGhlbgorLSAgICAgIGlmIHJlbGlua19jb21tYW5kX291dHB1dD1cYGV2YWwgXCJcJHJlbGlua19jb21tYW5kXCIgMj4mMVxgOyB0aGVuIDoKKysgICAgICBpZiByZWxpbmtfY29tbWFuZF9vdXRwdXQ9XGBldmFsIFwkcmVsaW5rX2NvbW1hbmQgMj4mMVxgOyB0aGVuIDoKKyAgICAgICBlbHNlCisgCSRFQ0hPIFwiXCRyZWxpbmtfY29tbWFuZF9vdXRwdXRcIiA+JjIKKyAJJFJNIFwiXCRwcm9nZGlyL1wkZmlsZVwiCitAQCAtMzEwMiw2ICs0MDg5LDE4IEBAIF9MVEVDSE9fRU9GJworIAorICAgaWYgdGVzdCAtZiBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIjsgdGhlbiIKKyAKKysJIyBmaXh1cCB0aGUgZGxsIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4KKysJIworKwkjIEZpeCB0aGUgRExMIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4gIERvIHRoaXMgYmVmb3JlIHByZXBlbmRpbmcKKysJIyB0byBzaGxpYnBhdGgsIGJlY2F1c2Ugb24gV2luZG93cywgYm90aCBhcmUgUEFUSCBhbmQgdW5pbnN0YWxsZWQKKysJIyBsaWJyYXJpZXMgbXVzdCBjb21lIGZpcnN0LgorKwlpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KKysJICAkRUNITyAiXAorKyAgICAjIEFkZCB0aGUgZGxsIHNlYXJjaCBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIGV4ZWN1dGFibGUgUEFUSAorKyAgICBQQVRIPSRkbGxzZWFyY2hwYXRoOlwkUEFUSAorKyIKKysJZmkKKysKKyAJIyBFeHBvcnQgb3VyIHNobGlicGF0aF92YXIgaWYgd2UgaGF2ZSBvbmUuCisgCWlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzICYmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkdGVtcF9ycGF0aCI7IHRoZW4KKyAJICAkRUNITyAiXAorQEAgLTMxMTYsMzUgKzQxMTUsMTAgQEAgX0xURUNIT19FT0YnCisgIgorIAlmaQorIAorLQkjIGZpeHVwIHRoZSBkbGwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLgorLQlpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KKy0JICAkRUNITyAiXAorLSAgICAjIEFkZCB0aGUgZGxsIHNlYXJjaCBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIGV4ZWN1dGFibGUgUEFUSAorLSAgICBQQVRIPSRkbGxzZWFyY2hwYXRoOlwkUEFUSAorLSIKKy0JZmkKKy0KKyAJJEVDSE8gIlwKKyAgICAgaWYgdGVzdCBcIlwkbGlidG9vbF9leGVjdXRlX21hZ2ljXCIgIT0gXCIkbWFnaWNcIjsgdGhlbgorICAgICAgICMgUnVuIHRoZSBhY3R1YWwgcHJvZ3JhbSB3aXRoIG91ciBhcmd1bWVudHMuCistIgorLQljYXNlICRob3N0IGluCistCSMgQmFja3NsYXNoZXMgc2VwYXJhdGUgZGlyZWN0b3JpZXMgb24gcGxhaW4gd2luZG93cworLQkqLSotbWluZ3cgfCAqLSotb3MyKiB8ICotY2VnY2MqKQorLQkgICRFQ0hPICJcCistICAgICAgZXhlYyBcIlwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9CistIgorLQkgIDs7CistCistCSopCistCSAgJEVDSE8gIlwKKy0gICAgICBleGVjIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KKy0iCistCSAgOzsKKy0JZXNhYworLQkkRUNITyAiXAorLSAgICAgIFwkRUNITyBcIlwkMDogY2Fubm90IGV4ZWMgXCRwcm9ncmFtIFwkKlwiIDE+JjIKKy0gICAgICBleGl0IDEKKysgICAgICBmdW5jX2V4ZWNfcHJvZ3JhbSBcJHsxK1wiXCRAXCJ9CisgICAgIGZpCisgICBlbHNlCisgICAgICMgVGhlIHByb2dyYW0gZG9lc24ndCBleGlzdC4KK0BAIC0zMTU4LDE2NiArNDEzMiw2IEBAIGZpXAorIH0KKyAKKyAKKy0jIGZ1bmNfdG9faG9zdF9wYXRoIGFyZworLSMKKy0jIENvbnZlcnQgcGF0aHMgdG8gaG9zdCBmb3JtYXQgd2hlbiB1c2VkIHdpdGggYnVpbGQgdG9vbHMuCistIyBJbnRlbmRlZCBmb3IgdXNlIHdpdGggIm5hdGl2ZSIgbWluZ3cgKHdoZXJlIGxpYnRvb2wgaXRzZWxmCistIyBpcyBydW5uaW5nIHVuZGVyIHRoZSBtc3lzIHNoZWxsKSwgb3IgaW4gdGhlIGZvbGxvd2luZyBjcm9zcy0KKy0jIGJ1aWxkIGVudmlyb25tZW50czoKKy0jICAgICRidWlsZCAgICAgICAgICAkaG9zdAorLSMgICAgbWluZ3cgKG1zeXMpICAgIG1pbmd3ICBbZS5nLiBuYXRpdmVdCistIyAgICBjeWd3aW4gICAgICAgICAgbWluZ3cKKy0jICAgICpuaXggKyB3aW5lICAgICBtaW5ndworLSMgd2hlcmUgd2luZSBpcyBlcXVpcHBlZCB3aXRoIHRoZSBgd2luZXBhdGgnIGV4ZWN1dGFibGUuCistIyBJbiB0aGUgbmF0aXZlIG1pbmd3IGNhc2UsIHRoZSAobXN5cykgc2hlbGwgYXV0b21hdGljYWxseQorLSMgY29udmVydHMgcGF0aHMgZm9yIGFueSBub24tbXN5cyBhcHBsaWNhdGlvbnMgaXQgbGF1bmNoZXMsCistIyBidXQgdGhhdCBmYWNpbGl0eSBpc24ndCBhdmFpbGFibGUgZnJvbSBpbnNpZGUgdGhlIGN3cmFwcGVyLgorLSMgU2ltaWxhciBhY2NvbW1vZGF0aW9ucyBhcmUgbmVjZXNzYXJ5IGZvciAkaG9zdCBtaW5ndyBhbmQKKy0jICRidWlsZCBjeWd3aW4uICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gZG9lcyBubyBoYXJtIGZvciBvdGhlcgorLSMgJGhvc3QvJGJ1aWxkIGNvbWJpbmF0aW9ucyBub3QgbGlzdGVkIGFib3ZlLgorLSMKKy0jIEFSRyBpcyB0aGUgcGF0aCAob24gJGJ1aWxkKSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8KKy0jIHRoZSBwcm9wZXIgcmVwcmVzZW50YXRpb24gZm9yICRob3N0LiBUaGUgcmVzdWx0IGlzIHN0b3JlZAorLSMgaW4gJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KKy1mdW5jX3RvX2hvc3RfcGF0aCAoKQorLXsKKy0gIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCistICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKy0gICAgY2FzZSAkaG9zdCBpbgorLSAgICAgICptaW5ndyogKQorLSAgICAgICAgbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJworLSAgICAgICAgY2FzZSAkYnVpbGQgaW4KKy0gICAgICAgICAgKm1pbmd3KiApICMgYWN0dWFsbHksIG1zeXMKKy0gICAgICAgICAgICAjIGF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQKKy0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YCggY21kIC8vYyBlY2hvICIkMSIgKSAyPi9kZXYvbnVsbCB8CistICAgICAgICAgICAgICAkU0VEIC1lICdzL1sgXSokLy8nIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCistICAgICAgICAgICAgOzsKKy0gICAgICAgICAgKmN5Z3dpbiogKQorLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gY3lncGF0aCAtdyAiJDEiIHwKKy0JICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorLSAgICAgICAgICAgIDs7CistICAgICAgICAgICogKQorLSAgICAgICAgICAgICMgVW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lcyBub3QgZXhpdCB3aXRoIGEgbm9uLXplcm8KKy0gICAgICAgICAgICAjIGVycm9yIGNvZGUsIHNvIHdlIGFyZSBmb3JjZWQgdG8gY2hlY2sgdGhlIGNvbnRlbnRzIG9mCistICAgICAgICAgICAgIyBzdGRvdXQuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgY29tbWFuZCBpcyBub3QKKy0gICAgICAgICAgICAjIGZvdW5kLCB0aGUgc2hlbGwgd2lsbCBzZXQgYW4gZXhpdCBjb2RlIG9mIDEyNyBhbmQgcHJpbnQKKy0gICAgICAgICAgICAjICphbiBlcnJvciBtZXNzYWdlKiB0byBzdGRvdXQuIFNvIHdlIG11c3QgY2hlY2sgZm9yIGJvdGgKKy0gICAgICAgICAgICAjIGVycm9yIGNvZGUgb2YgemVybyBBTkQgbm9uLWVtcHR5IHN0ZG91dCwgd2hpY2ggZXhwbGFpbnMKKy0gICAgICAgICAgICAjIHRoZSBvZGQgY29uc3RydWN0aW9uOgorLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9YHdpbmVwYXRoIC13ICIkMSIgMj4vZGV2L251bGxgCistICAgICAgICAgICAgaWYgdGVzdCAiJD8iIC1lcSAwICYmIHRlc3QgLW4gIiR7ZnVuY190b19ob3N0X3BhdGhfdG1wMX0iOyB0aGVuCistICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YCRFQ0hPICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgfAorLSAgICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCistICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgIyBBbGxvdyB3YXJuaW5nIGJlbG93LgorLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PQorLSAgICAgICAgICAgIGZpCistICAgICAgICAgICAgOzsKKy0gICAgICAgIGVzYWMKKy0gICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiIDsgdGhlbgorLSAgICAgICAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIGhvc3QgcGF0aCBjb3JyZXNwb25kaW5nIHRvIgorLSAgICAgICAgICBmdW5jX2Vycm9yICIgIFxgJDEnIgorLSAgICAgICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKKy0gICAgICAgICAgIyBGYWxsYmFjazoKKy0gICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKy0gICAgICAgIGZpCistICAgICAgICA7OworLSAgICBlc2FjCistICBmaQorLX0KKy0jIGVuZDogZnVuY190b19ob3N0X3BhdGgKKy0KKy0jIGZ1bmNfdG9faG9zdF9wYXRobGlzdCBhcmcKKy0jCistIyBDb252ZXJ0IHBhdGhsaXN0cyB0byBob3N0IGZvcm1hdCB3aGVuIHVzZWQgd2l0aCBidWlsZCB0b29scy4KKy0jIFNlZSBmdW5jX3RvX2hvc3RfcGF0aCgpLCBhYm92ZS4gVGhpcyBmdW5jdGlvbiBzdXBwb3J0cyB0aGUKKy0jIGZvbGxvd2luZyAkYnVpbGQvJGhvc3QgY29tYmluYXRpb25zIChidXQgZG9lcyBubyBoYXJtIGZvcgorLSMgY29tYmluYXRpb25zIG5vdCBsaXN0ZWQgaGVyZSk6CistIyAgICAkYnVpbGQgICAgICAgICAgJGhvc3QKKy0jICAgIG1pbmd3IChtc3lzKSAgICBtaW5ndyAgW2UuZy4gbmF0aXZlXQorLSMgICAgY3lnd2luICAgICAgICAgIG1pbmd3CistIyAgICAqbml4ICsgd2luZSAgICAgbWluZ3cKKy0jCistIyBQYXRoIHNlcGFyYXRvcnMgYXJlIGFsc28gY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0bworLSMgJGhvc3QgZm9ybWF0LiBJZiBBUkcgYmVnaW5zIG9yIGVuZHMgd2l0aCBhIHBhdGggc2VwYXJhdG9yCistIyBjaGFyYWN0ZXIsIGl0IGlzIHByZXNlcnZlZCAoYnV0IGNvbnZlcnRlZCB0byAkaG9zdCBmb3JtYXQpCistIyBvbiBvdXRwdXQuCistIworLSMgQVJHIGlzIGEgcGF0aGxpc3QgKG9uICRidWlsZCkgdGhhdCBzaG91bGQgYmUgY29udmVydGVkIHRvCistIyB0aGUgcHJvcGVyIHJlcHJlc2VudGF0aW9uIG9uICRob3N0LiBUaGUgcmVzdWx0IGlzIHN0b3JlZAorLSMgaW4gJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQuCistZnVuY190b19ob3N0X3BhdGhsaXN0ICgpCisteworLSAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iJDEiCistICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKy0gICAgY2FzZSAkaG9zdCBpbgorLSAgICAgICptaW5ndyogKQorLSAgICAgICAgbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJworLSAgICAgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tCistICAgICAgICAjIEFSRy4gbXN5cyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZSwgY3lncGF0aCB0dXJucyB0aGVtCistICAgICAgICAjIGludG8gJy47JyBhbmQgJzsuJywgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgorLQlmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorLSAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorLSAgICAgICAgY2FzZSAkYnVpbGQgaW4KKy0gICAgICAgICAgKm1pbmd3KiApICMgQWN0dWFsbHksIG1zeXMuCistICAgICAgICAgICAgIyBBd2t3YXJkOiBjbWQgYXBwZW5kcyBzcGFjZXMgdG8gcmVzdWx0LgorLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YAorLQkgICAgICAoIGNtZCAvL2MgZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIiApIDI+L2Rldi9udWxsIHwKKy0JICAgICAgJFNFRCAtZSAncy9bIF0qJC8vJyAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorLSAgICAgICAgICAgIDs7CistICAgICAgICAgICpjeWd3aW4qICkKKy0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBjeWdwYXRoIC13IC1wICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiIHwKKy0gICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKy0gICAgICAgICAgICA7OworLSAgICAgICAgICAqICkKKy0gICAgICAgICAgICAjIHVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXNuJ3QgY29udmVydCBwYXRobGlzdHMKKy0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIiCistICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUz0kSUZTCistICAgICAgICAgICAgSUZTPToKKy0gICAgICAgICAgICBmb3IgZnVuY190b19ob3N0X3BhdGhsaXN0X2YgaW4gJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIDsgZG8KKy0gICAgICAgICAgICAgIElGUz0kZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUworLSAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIiA7IHRoZW4KKy0gICAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiIKKy0gICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIgOyB0aGVuCistICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiIDsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKy0gICAgICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0ICI7JGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKy0gICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICBkb25lCistICAgICAgICAgICAgSUZTPSRmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTCistICAgICAgICAgICAgOzsKKy0gICAgICAgIGVzYWMKKy0gICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IjsgdGhlbgorLSAgICAgICAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBob3N0IHBhdGgocykgY29ycmVzcG9uZGluZyB0byIKKy0gICAgICAgICAgZnVuY19lcnJvciAiICBcYCQxJyIKKy0gICAgICAgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCistICAgICAgICAgICMgRmFsbGJhY2suIFRoaXMgbWF5IGJyZWFrIGlmICQxIGNvbnRhaW5zIERPUy1zdHlsZSBkcml2ZQorLSAgICAgICAgICAjIHNwZWNpZmljYXRpb25zLiBUaGUgZml4IGlzIG5vdCB0byBjb21wbGljYXRlIHRoZSBleHByZXNzaW9uCistICAgICAgICAgICMgYmVsb3csIGJ1dCBmb3IgdGhlIHVzZXIgdG8gcHJvdmlkZSBhIHdvcmtpbmcgd2luZSBpbnN0YWxsYXRpb24KKy0gICAgICAgICAgIyB3aXRoIHdpbmVwYXRoIHNvIHRoYXQgcGF0aCB0cmFuc2xhdGlvbiBpbiB0aGUgY3Jvc3MtdG8tbWluZ3cKKy0gICAgICAgICAgIyBjYXNlIHdvcmtzIHByb3Blcmx5LgorLSAgICAgICAgICBsdF9yZXBsYWNlX3BhdGhzZXBfbml4X3RvX2Rvcz0ic3w6fDt8ZyIKKy0gICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIiB8XAorLSAgICAgICAgICAgICRTRUQgLWUgIiRsdF9yZXBsYWNlX3BhdGhzZXBfbml4X3RvX2RvcyJgCistICAgICAgICBmaQorLSAgICAgICAgIyBOb3csIGFkZCB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3JzIGJhY2sKKy0gICAgICAgIGNhc2UgIiQxIiBpbgorLSAgICAgICAgICA6KiApIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IjskZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIKKy0gICAgICAgICAgICA7OworLSAgICAgICAgZXNhYworLSAgICAgICAgY2FzZSAiJDEiIGluCistICAgICAgICAgICo6ICkgZnVuY19hcHBlbmQgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCAiOyIKKy0gICAgICAgICAgICA7OworLSAgICAgICAgZXNhYworLSAgICAgICAgOzsKKy0gICAgZXNhYworLSAgZmkKKy19CistIyBlbmQ6IGZ1bmNfdG9faG9zdF9wYXRobGlzdAorLQorICMgZnVuY19lbWl0X2N3cmFwcGVyZXhlX3NyYworICMgZW1pdCB0aGUgc291cmNlIGNvZGUgZm9yIGEgd3JhcHBlciBleGVjdXRhYmxlIG9uIHN0ZG91dAorICMgTXVzdCBPTkxZIGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBmdW5jX21vZGVfbGluayBiZWNhdXNlCitAQCAtMzMzNCwxMCArNDE0OCw2IEBAIGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMgKCkKKyAKKyAgICBUaGlzIHdyYXBwZXIgZXhlY3V0YWJsZSBzaG91bGQgbmV2ZXIgYmUgbW92ZWQgb3V0IG9mIHRoZSBidWlsZCBkaXJlY3RvcnkuCisgICAgSWYgaXQgaXMsIGl0IHdpbGwgbm90IG9wZXJhdGUgY29ycmVjdGx5LgorLQorLSAgIEN1cnJlbnRseSwgaXQgc2ltcGx5IGV4ZWNzIHRoZSB3cmFwcGVyICpzY3JpcHQqICIkU0hFTEwgJG91dHB1dCIsCistICAgYnV0IGNvdWxkIGV2ZW50dWFsbHkgYWJzb3JiIGFsbCBvZiB0aGUgc2NyaXB0cyBmdW5jdGlvbmFsaXR5IGFuZAorLSAgIGV4ZWMgJG9iamRpci8kb3V0cHV0bmFtZSBkaXJlY3RseS4KKyAqLworIEVPRgorIAkgICAgY2F0IDw8IkVPRiIKK0BAIC0zNDYyLDIyICs0MjcyLDEzIEBAIGludCBzZXRlbnYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOworICAgaWYgKHN0YWxlKSB7IGZyZWUgKCh2b2lkICopIHN0YWxlKTsgc3RhbGUgPSAwOyB9IFwKKyB9IHdoaWxlICgwKQorIAorLSN1bmRlZiBMVFdSQVBQRVJfREVCVUdQUklOVEYKKy0jaWYgZGVmaW5lZCBMVF9ERUJVR1dSQVBQRVIKKy0jIGRlZmluZSBMVFdSQVBQRVJfREVCVUdQUklOVEYoYXJncykgbHR3cmFwcGVyX2RlYnVncHJpbnRmIGFyZ3MKKy1zdGF0aWMgdm9pZAorLWx0d3JhcHBlcl9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZm10LCAuLi4pCisteworLSAgICB2YV9saXN0IGFyZ3M7CistICAgIHZhX3N0YXJ0IChhcmdzLCBmbXQpOworLSAgICAodm9pZCkgdmZwcmludGYgKHN0ZGVyciwgZm10LCBhcmdzKTsKKy0gICAgdmFfZW5kIChhcmdzKTsKKy19CisrI2lmIGRlZmluZWQoTFRfREVCVUdXUkFQUEVSKQorK3N0YXRpYyBpbnQgbHRfZGVidWcgPSAxOworICNlbHNlCistIyBkZWZpbmUgTFRXUkFQUEVSX0RFQlVHUFJJTlRGKGFyZ3MpCisrc3RhdGljIGludCBsdF9kZWJ1ZyA9IDA7CisgI2VuZGlmCisgCistY29uc3QgY2hhciAqcHJvZ3JhbV9uYW1lID0gTlVMTDsKKytjb25zdCBjaGFyICpwcm9ncmFtX25hbWUgPSAibGlidG9vbC13cmFwcGVyIjsgLyogaW4gY2FzZSB4c3RyZHVwIGZhaWxzICovCisgCisgdm9pZCAqeG1hbGxvYyAoc2l6ZV90IG51bSk7CisgY2hhciAqeHN0cmR1cCAoY29uc3QgY2hhciAqc3RyaW5nKTsKK0BAIC0zNDg3LDcgKzQyODgsMTAgQEAgY2hhciAqY2hhc2Vfc3ltbGlua3MgKGNvbnN0IGNoYXIgKnBhdGhzcGVjKTsKKyBpbnQgbWFrZV9leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKTsKKyBpbnQgY2hlY2tfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCk7CisgY2hhciAqc3RyZW5kemFwIChjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnBhdCk7Cistdm9pZCBsdF9mYXRhbCAoY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKTsKKyt2b2lkIGx0X2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZm10LCAuLi4pOworK3ZvaWQgbHRfZmF0YWwgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pOworK3N0YXRpYyBjb25zdCBjaGFyICpub25udWxsIChjb25zdCBjaGFyICpzKTsKKytzdGF0aWMgY29uc3QgY2hhciAqbm9uZW1wdHkgKGNvbnN0IGNoYXIgKnMpOworIHZvaWQgbHRfc2V0ZW52IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSk7CisgY2hhciAqbHRfZXh0ZW5kX3N0ciAoY29uc3QgY2hhciAqb3JpZ192YWx1ZSwgY29uc3QgY2hhciAqYWRkLCBpbnQgdG9fZW5kKTsKKyB2b2lkIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOworQEAgLTM0OTcsMTQgKzQzMDEsMTQgQEAgdm9pZCBsdF9kdW1wX3NjcmlwdCAoRklMRSAqZik7CisgRU9GCisgCisgCSAgICBjYXQgPDxFT0YKKy1jb25zdCBjaGFyICogTUFHSUNfRVhFID0gIiRtYWdpY19leGUiOworK3ZvbGF0aWxlIGNvbnN0IGNoYXIgKiBNQUdJQ19FWEUgPSAiJG1hZ2ljX2V4ZSI7CisgY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBUk5BTUUgPSAiJHNobGlicGF0aF92YXIiOworIEVPRgorIAorIAkgICAgaWYgdGVzdCAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiICYmIHRlc3QgLW4gIiR0ZW1wX3JwYXRoIjsgdGhlbgorLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0ICIkdGVtcF9ycGF0aCIKKysgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkdGVtcF9ycGF0aCIKKyAJICAgICAgY2F0IDw8RU9GCistY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOworK2NvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiOworIEVPRgorIAkgICAgZWxzZQorIAkgICAgICBjYXQgPDwiRU9GIgorQEAgLTM1MTMsMTAgKzQzMTcsMTAgQEAgRU9GCisgCSAgICBmaQorIAorIAkgICAgaWYgdGVzdCAtbiAiJGRsbHNlYXJjaHBhdGgiOyB0aGVuCistICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgIiRkbGxzZWFyY2hwYXRoOiIKKysgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkZGxsc2VhcmNocGF0aDoiCisgCSAgICAgIGNhdCA8PEVPRgorIGNvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQVJOQU1FID0gIlBBVEgiOworLWNvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IjsKKytjb25zdCBjaGFyICogRVhFX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IjsKKyBFT0YKKyAJICAgIGVsc2UKKyAJICAgICAgY2F0IDw8IkVPRiIKK0BAIC0zNTM5LDEyICs0MzQzLDEwIEBAIEVPRgorIAkgICAgY2F0IDw8IkVPRiIKKyAKKyAjZGVmaW5lIExUV1JBUFBFUl9PUFRJT05fUFJFRklYICAgICAgICAgIi0tbHQtIgorLSNkZWZpbmUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICA1CisgCistc3RhdGljIGNvbnN0IHNpemVfdCBvcHRfcHJlZml4X2xlbiAgICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIOworIHN0YXRpYyBjb25zdCBjaGFyICpsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYOworLQorIHN0YXRpYyBjb25zdCBjaGFyICpkdW1wc2NyaXB0X29wdCAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJkdW1wLXNjcmlwdCI7Cisrc3RhdGljIGNvbnN0IGNoYXIgKmRlYnVnX29wdCAgICAgICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImRlYnVnIjsKKyAKKyBpbnQKKyBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorQEAgLTM1NjEsMTAgKzQzNjMsMTMgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAgIGludCBpOworIAorICAgcHJvZ3JhbV9uYW1lID0gKGNoYXIgKikgeHN0cmR1cCAoYmFzZV9uYW1lIChhcmd2WzBdKSk7CistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGFyZ3ZbMF0gICAgICA6ICVzXG4iLCBhcmd2WzBdKSk7CistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIHByb2dyYW1fbmFtZSA6ICVzXG4iLCBwcm9ncmFtX25hbWUpKTsKKysgIG5ld2FyZ3ogPSBYTUFMTE9DIChjaGFyICosIGFyZ2MgKyAxKTsKKyAKKy0gIC8qIHZlcnkgc2ltcGxlIGFyZyBwYXJzaW5nOyBkb24ndCB3YW50IHRvIHJlbHkgb24gZ2V0b3B0ICovCisrICAvKiB2ZXJ5IHNpbXBsZSBhcmcgcGFyc2luZzsgZG9uJ3Qgd2FudCB0byByZWx5IG9uIGdldG9wdAorKyAgICogYWxzbywgY29weSBhbGwgbm9uIGN3cmFwcGVyIG9wdGlvbnMgdG8gbmV3YXJneiwgZXhjZXB0CisrICAgKiBhcmd6WzBdLCB3aGljaCBpcyBoYW5kbGVkIGRpZmZlcmVudGx5CisrICAgKi8KKysgIG5ld2FyZ2M9MDsKKyAgIGZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspCisgICAgIHsKKyAgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBkdW1wc2NyaXB0X29wdCkgPT0gMCkKK0BAIC0zNTgxLDIxICs0Mzg2LDU0IEBAIEVPRgorIAkgIGx0X2R1bXBfc2NyaXB0IChzdGRvdXQpOworIAkgIHJldHVybiAwOworIAl9CisrICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgZGVidWdfb3B0KSA9PSAwKQorKwl7CisrICAgICAgICAgIGx0X2RlYnVnID0gMTsKKysgICAgICAgICAgY29udGludWU7CisrCX0KKysgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCkgPT0gMCkKKysgICAgICAgIHsKKysgICAgICAgICAgLyogaG93ZXZlciwgaWYgdGhlcmUgaXMgYW4gb3B0aW9uIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAorKyAgICAgICAgICAgICBuYW1lc3BhY2UsIGJ1dCBpdCBpcyBub3Qgb25lIG9mIHRoZSBvbmVzIHdlIGtub3cgYWJvdXQgYW5kCisrICAgICAgICAgICAgIGhhdmUgYWxyZWFkeSBkZWFsdCB3aXRoLCBhYm92ZSAoaW5sdWRpbmcgZHVtcC1zY3JpcHQpLCB0aGVuCisrICAgICAgICAgICAgIHJlcG9ydCBhbiBlcnJvci4gT3RoZXJ3aXNlLCB0YXJnZXRzIG1pZ2h0IGJlZ2luIHRvIGJlbGlldmUKKysgICAgICAgICAgICAgdGhleSBhcmUgYWxsb3dlZCB0byB1c2Ugb3B0aW9ucyBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKKysgICAgICAgICAgICAgbmFtZXNwYWNlLiBUaGUgZmlyc3QgdGltZSBhbnkgdXNlciBjb21wbGFpbnMgYWJvdXQgdGhpcywgd2UnbGwKKysgICAgICAgICAgICAgbmVlZCB0byBtYWtlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYIGEgY29uZmlndXJlLXRpbWUgb3B0aW9uCisrICAgICAgICAgICAgIG9yIGEgY29uZmlndXJlLmFjLXNldHRhYmxlIHZhbHVlLgorKyAgICAgICAgICAgKi8KKysgICAgICAgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSAgICAidW5yZWNvZ25pemVkICVzIG9wdGlvbjogJyVzJyIsCisrICAgICAgICAgICAgICAgICAgICBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgYXJndltpXSk7CisrICAgICAgICB9CisrICAgICAgLyogb3RoZXJ3aXNlIC4uLiAqLworKyAgICAgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IHhzdHJkdXAgKGFyZ3ZbaV0pOworICAgICB9CisrICBuZXdhcmd6WysrbmV3YXJnY10gPSBOVUxMOworKworK0VPRgorKwkgICAgY2F0IDw8RU9GCisrICAvKiBUaGUgR05VIGJhbm5lciBtdXN0IGJlIHRoZSBmaXJzdCBub24tZXJyb3IgZGVidWcgbWVzc2FnZSAqLworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgImxpYnRvb2wgd3JhcHBlciAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT05cbiIpOworK0VPRgorKwkgICAgY2F0IDw8IkVPRiIKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgYXJndlswXTogJXNcbiIsIGFyZ3ZbMF0pOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBwcm9ncmFtX25hbWU6ICVzXG4iLCBwcm9ncmFtX25hbWUpOworIAorLSAgbmV3YXJneiA9IFhNQUxMT0MgKGNoYXIgKiwgYXJnYyArIDEpOworICAgdG1wX3BhdGhzcGVjID0gZmluZF9leGVjdXRhYmxlIChhcmd2WzBdKTsKKyAgIGlmICh0bXBfcGF0aHNwZWMgPT0gTlVMTCkKKy0gICAgbHRfZmF0YWwgKCJDb3VsZG4ndCBmaW5kICVzIiwgYXJndlswXSk7CistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZvdW5kIGV4ZSAoYmVmb3JlIHN5bWxpbmsgY2hhc2UpIGF0IDogJXNcbiIsCistCQkJICB0bXBfcGF0aHNwZWMpKTsKKysgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgImNvdWxkbid0IGZpbmQgJXMiLCBhcmd2WzBdKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrICAgICAgICAgICAgICAgICAgIihtYWluKSBmb3VuZCBleGUgKGJlZm9yZSBzeW1saW5rIGNoYXNlKSBhdDogJXNcbiIsCisrCQkgIHRtcF9wYXRoc3BlYyk7CisgCisgICBhY3R1YWxfY3dyYXBwZXJfcGF0aCA9IGNoYXNlX3N5bWxpbmtzICh0bXBfcGF0aHNwZWMpOworLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmb3VuZCBleGUgKGFmdGVyIHN5bWxpbmsgY2hhc2UpIGF0IDogJXNcbiIsCistCQkJICBhY3R1YWxfY3dyYXBwZXJfcGF0aCkpOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKysgICAgICAgICAgICAgICAgICAiKG1haW4pIGZvdW5kIGV4ZSAoYWZ0ZXIgc3ltbGluayBjaGFzZSkgYXQ6ICVzXG4iLAorKwkJICBhY3R1YWxfY3dyYXBwZXJfcGF0aCk7CisgICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKKyAKKy0gIGFjdHVhbF9jd3JhcHBlcl9uYW1lID0geHN0cmR1cCggYmFzZV9uYW1lIChhY3R1YWxfY3dyYXBwZXJfcGF0aCkpOworKyAgYWN0dWFsX2N3cmFwcGVyX25hbWUgPSB4c3RyZHVwIChiYXNlX25hbWUgKGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7CisgICBzdHJlbmR6YXAgKGFjdHVhbF9jd3JhcHBlcl9wYXRoLCBhY3R1YWxfY3dyYXBwZXJfbmFtZSk7CisgCisgICAvKiB3cmFwcGVyIG5hbWUgdHJhbnNmb3JtcyAqLworQEAgLTM2MTMsOCArNDQ1MSw5IEBAIEVPRgorICAgdGFyZ2V0X25hbWUgPSB0bXBfcGF0aHNwZWM7CisgICB0bXBfcGF0aHNwZWMgPSAwOworIAorLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBsaWJ0b29sIHRhcmdldCBuYW1lOiAlc1xuIiwKKy0JCQkgIHRhcmdldF9uYW1lKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorKwkJICAiKG1haW4pIGxpYnRvb2wgdGFyZ2V0IG5hbWU6ICVzXG4iLAorKwkJICB0YXJnZXRfbmFtZSk7CisgRU9GCisgCisgCSAgICBjYXQgPDxFT0YKK0BAIC0zNjY0LDM1ICs0NTAzLDE5IEBAIEVPRgorIAorICAgbHRfc2V0ZW52ICgiQklOX1NIIiwgInhwZzQiKTsgLyogZm9yIFRydTY0ICovCisgICBsdF9zZXRlbnYgKCJEVUFMQ0FTRSIsICIxIik7ICAvKiBmb3IgTVNLIHNoICovCistICBsdF91cGRhdGVfbGliX3BhdGggKExJQl9QQVRIX1ZBUk5BTUUsIExJQl9QQVRIX1ZBTFVFKTsKKysgIC8qIFVwZGF0ZSB0aGUgRExMIHNlYXJjaHBhdGguICBFWEVfUEFUSF9WQUxVRSAoJGRsbHNlYXJjaHBhdGgpIG11c3QKKysgICAgIGJlIHByZXBlbmRlZCBiZWZvcmUgKHRoYXQgaXMsIGFwcGVhciBhZnRlcikgTElCX1BBVEhfVkFMVUUgKCR0ZW1wX3JwYXRoKQorKyAgICAgYmVjYXVzZSBvbiBXaW5kb3dzLCBib3RoICpfVkFSTkFNRXMgYXJlIFBBVEggYnV0IHVuaW5zdGFsbGVkCisrICAgICBsaWJyYXJpZXMgbXVzdCBjb21lIGZpcnN0LiAqLworICAgbHRfdXBkYXRlX2V4ZV9wYXRoIChFWEVfUEFUSF9WQVJOQU1FLCBFWEVfUEFUSF9WQUxVRSk7CisrICBsdF91cGRhdGVfbGliX3BhdGggKExJQl9QQVRIX1ZBUk5BTUUsIExJQl9QQVRIX1ZBTFVFKTsKKyAKKy0gIG5ld2FyZ2M9MDsKKy0gIGZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspCistICAgIHsKKy0gICAgICBpZiAoc3RybmNtcCAoYXJndltpXSwgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIG9wdF9wcmVmaXhfbGVuKSA9PSAwKQorLSAgICAgICAgeworLSAgICAgICAgICAvKiBob3dldmVyLCBpZiB0aGVyZSBpcyBhbiBvcHRpb24gaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCistICAgICAgICAgICAgIG5hbWVzcGFjZSwgYnV0IGl0IGlzIG5vdCBvbmUgb2YgdGhlIG9uZXMgd2Uga25vdyBhYm91dCBhbmQKKy0gICAgICAgICAgICAgaGF2ZSBhbHJlYWR5IGRlYWx0IHdpdGgsIGFib3ZlIChpbmx1ZGluZyBkdW1wLXNjcmlwdCksIHRoZW4KKy0gICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yLiBPdGhlcndpc2UsIHRhcmdldHMgbWlnaHQgYmVnaW4gdG8gYmVsaWV2ZQorLSAgICAgICAgICAgICB0aGV5IGFyZSBhbGxvd2VkIHRvIHVzZSBvcHRpb25zIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAorLSAgICAgICAgICAgICBuYW1lc3BhY2UuIFRoZSBmaXJzdCB0aW1lIGFueSB1c2VyIGNvbXBsYWlucyBhYm91dCB0aGlzLCB3ZSdsbAorLSAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggYSBjb25maWd1cmUtdGltZSBvcHRpb24KKy0gICAgICAgICAgICAgb3IgYSBjb25maWd1cmUuYWMtc2V0dGFibGUgdmFsdWUuCistICAgICAgICAgICAqLworLSAgICAgICAgICBsdF9mYXRhbCAoIlVucmVjb2duaXplZCBvcHRpb24gaW4gJXMgbmFtZXNwYWNlOiAnJXMnIiwKKy0gICAgICAgICAgICAgICAgICAgIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4LCBhcmd2W2ldKTsKKy0gICAgICAgIH0KKy0gICAgICAvKiBvdGhlcndpc2UgLi4uICovCistICAgICAgbmV3YXJnelsrK25ld2FyZ2NdID0geHN0cmR1cCAoYXJndltpXSk7CistICAgIH0KKy0gIG5ld2FyZ3pbKytuZXdhcmdjXSA9IE5VTEw7CistCistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgICAgICgoIihtYWluKSBsdF9hcmd2X3plcm8gOiAlc1xuIiwgKGx0X2FyZ3ZfemVybyA/IGx0X2FyZ3ZfemVybyA6ICI8TlVMTD4iKSkpOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBsdF9hcmd2X3plcm86ICVzXG4iLAorKwkJICBub25udWxsIChsdF9hcmd2X3plcm8pKTsKKyAgIGZvciAoaSA9IDA7IGkgPCBuZXdhcmdjOyBpKyspCisgICAgIHsKKy0gICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIG5ld2FyZ3pbJWRdICAgOiAlc1xuIiwgaSwgKG5ld2FyZ3pbaV0gPyBuZXdhcmd6W2ldIDogIjxOVUxMPiIpKSk7CisrICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBuZXdhcmd6WyVkXTogJXNcbiIsCisrCQkgICAgICBpLCBub25udWxsIChuZXdhcmd6W2ldKSk7CisgICAgIH0KKyAKKyBFT0YKK0BAIC0zNzA2LDcgKzQ1MjksOSBAQCBFT0YKKyAgIGlmIChydmFsID09IC0xKQorICAgICB7CisgICAgICAgLyogZmFpbGVkIHRvIHN0YXJ0IHByb2Nlc3MgKi8KKy0gICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZhaWxlZCB0byBsYXVuY2ggdGFyZ2V0IFwiJXNcIjogZXJybm8gPSAlZFxuIiwgbHRfYXJndl96ZXJvLCBlcnJubykpOworKyAgICAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICAgICAiKG1haW4pIGZhaWxlZCB0byBsYXVuY2ggdGFyZ2V0IFwiJXNcIjogJXNcbiIsCisrCQkgICAgICBsdF9hcmd2X3plcm8sIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKKyAgICAgICByZXR1cm4gMTI3OworICAgICB9CisgICByZXR1cm4gcnZhbDsKK0BAIC0zNzI4LDcgKzQ1NTMsNyBAQCB4bWFsbG9jIChzaXplX3QgbnVtKQorIHsKKyAgIHZvaWQgKnAgPSAodm9pZCAqKSBtYWxsb2MgKG51bSk7CisgICBpZiAoIXApCistICAgIGx0X2ZhdGFsICgiTWVtb3J5IGV4aGF1c3RlZCIpOworKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAibWVtb3J5IGV4aGF1c3RlZCIpOworIAorICAgcmV0dXJuIHA7CisgfQorQEAgLTM3NjIsOCArNDU4Nyw4IEBAIGNoZWNrX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpCisgeworICAgc3RydWN0IHN0YXQgc3Q7CisgCistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGNoZWNrX2V4ZWN1dGFibGUpICA6ICVzXG4iLAorLQkJCSAgcGF0aCA/ICgqcGF0aCA/IHBhdGggOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKGNoZWNrX2V4ZWN1dGFibGUpOiAlc1xuIiwKKysgICAgICAgICAgICAgICAgICBub25lbXB0eSAocGF0aCkpOworICAgaWYgKCghcGF0aCkgfHwgKCEqcGF0aCkpCisgICAgIHJldHVybiAwOworIAorQEAgLTM3ODAsOCArNDYwNSw4IEBAIG1ha2VfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCkKKyAgIGludCBydmFsID0gMDsKKyAgIHN0cnVjdCBzdGF0IHN0OworIAorLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWtlX2V4ZWN1dGFibGUpICAgOiAlc1xuIiwKKy0JCQkgIHBhdGggPyAoKnBhdGggPyBwYXRoIDogIkVNUFRZISIpIDogIk5VTEwhIikpOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWtlX2V4ZWN1dGFibGUpOiAlc1xuIiwKKysgICAgICAgICAgICAgICAgICBub25lbXB0eSAocGF0aCkpOworICAgaWYgKCghcGF0aCkgfHwgKCEqcGF0aCkpCisgICAgIHJldHVybiAwOworIAorQEAgLTM4MDcsOCArNDYzMiw4IEBAIGZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqd3JhcHBlcikKKyAgIGludCB0bXBfbGVuOworICAgY2hhciAqY29uY2F0X25hbWU7CisgCistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGZpbmRfZXhlY3V0YWJsZSkgICA6ICVzXG4iLAorLQkJCSAgd3JhcHBlciA/ICgqd3JhcHBlciA/IHdyYXBwZXIgOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKGZpbmRfZXhlY3V0YWJsZSk6ICVzXG4iLAorKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5ICh3cmFwcGVyKSk7CisgCisgICBpZiAoKHdyYXBwZXIgPT0gTlVMTCkgfHwgKCp3cmFwcGVyID09ICdcMCcpKQorICAgICByZXR1cm4gTlVMTDsKK0BAIC0zODYxLDcgKzQ2ODYsOCBAQCBmaW5kX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKndyYXBwZXIpCisgCQl7CisgCQkgIC8qIGVtcHR5IHBhdGg6IGN1cnJlbnQgZGlyZWN0b3J5ICovCisgCQkgIGlmIChnZXRjd2QgKHRtcCwgTFRfUEFUSE1BWCkgPT0gTlVMTCkKKy0JCSAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKKysJCSAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiZ2V0Y3dkIGZhaWxlZDogJXMiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKKyAJCSAgdG1wX2xlbiA9IHN0cmxlbiAodG1wKTsKKyAJCSAgY29uY2F0X25hbWUgPQorIAkJICAgIFhNQUxMT0MgKGNoYXIsIHRtcF9sZW4gKyAxICsgc3RybGVuICh3cmFwcGVyKSArIDEpOworQEAgLTM4ODYsNyArNDcxMiw4IEBAIGZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqd3JhcHBlcikKKyAgICAgfQorICAgLyogUmVsYXRpdmUgcGF0aCB8IG5vdCBmb3VuZCBpbiBwYXRoOiBwcmVwZW5kIGN3ZCAqLworICAgaWYgKGdldGN3ZCAodG1wLCBMVF9QQVRITUFYKSA9PSBOVUxMKQorLSAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKKysgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgImdldGN3ZCBmYWlsZWQ6ICVzIiwKKysgICAgICAgICAgICAgIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKKyAgIHRtcF9sZW4gPSBzdHJsZW4gKHRtcCk7CisgICBjb25jYXRfbmFtZSA9IFhNQUxMT0MgKGNoYXIsIHRtcF9sZW4gKyAxICsgc3RybGVuICh3cmFwcGVyKSArIDEpOworICAgbWVtY3B5IChjb25jYXRfbmFtZSwgdG1wLCB0bXBfbGVuKTsKK0BAIC0zOTEyLDggKzQ3MzksOSBAQCBjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpCisgICBpbnQgaGFzX3N5bWxpbmtzID0gMDsKKyAgIHdoaWxlIChzdHJsZW4gKHRtcF9wYXRoc3BlYykgJiYgIWhhc19zeW1saW5rcykKKyAgICAgeworLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCJjaGVja2luZyBwYXRoIGNvbXBvbmVudCBmb3Igc3ltbGlua3M6ICVzXG4iLAorLQkJCSAgICAgIHRtcF9wYXRoc3BlYykpOworKyAgICAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICAgICAiY2hlY2tpbmcgcGF0aCBjb21wb25lbnQgZm9yIHN5bWxpbmtzOiAlc1xuIiwKKysJCSAgICAgIHRtcF9wYXRoc3BlYyk7CisgICAgICAgaWYgKGxzdGF0ICh0bXBfcGF0aHNwZWMsICZzKSA9PSAwKQorIAl7CisgCSAgaWYgKFNfSVNMTksgKHMuc3RfbW9kZSkgIT0gMCkKK0BAIC0zOTM1LDggKzQ3NjMsOSBAQCBjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpCisgCX0KKyAgICAgICBlbHNlCisgCXsKKy0JICBjaGFyICplcnJzdHIgPSBzdHJlcnJvciAoZXJybm8pOworLQkgIGx0X2ZhdGFsICgiRXJyb3IgYWNjZXNzaW5nIGZpbGUgJXMgKCVzKSIsIHRtcF9wYXRoc3BlYywgZXJyc3RyKTsKKysJICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAorKwkJICAgICJlcnJvciBhY2Nlc3NpbmcgZmlsZSBcIiVzXCI6ICVzIiwKKysJCSAgICB0bXBfcGF0aHNwZWMsIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKKyAJfQorICAgICB9CisgICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKK0BAIC0zOTQ5LDcgKzQ3NzgsOCBAQCBjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpCisgICB0bXBfcGF0aHNwZWMgPSByZWFscGF0aCAocGF0aHNwZWMsIGJ1Zik7CisgICBpZiAodG1wX3BhdGhzcGVjID09IDApCisgICAgIHsKKy0gICAgICBsdF9mYXRhbCAoIkNvdWxkIG5vdCBmb2xsb3cgc3ltbGlua3MgZm9yICVzIiwgcGF0aHNwZWMpOworKyAgICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkiY291bGQgbm90IGZvbGxvdyBzeW1saW5rcyBmb3IgJXMiLCBwYXRoc3BlYyk7CisgICAgIH0KKyAgIHJldHVybiB4c3RyZHVwICh0bXBfcGF0aHNwZWMpOworICNlbmRpZgorQEAgLTM5NzUsMTEgKzQ4MDUsMjUgQEAgc3RyZW5kemFwIChjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnBhdCkKKyAgIHJldHVybiBzdHI7CisgfQorIAorK3ZvaWQKKytsdF9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQorK3sKKysgIHZhX2xpc3QgYXJnczsKKysgIGlmIChsdF9kZWJ1ZykKKysgICAgeworKyAgICAgICh2b2lkKSBmcHJpbnRmIChzdGRlcnIsICIlczolczolZDogIiwgcHJvZ3JhbV9uYW1lLCBmaWxlLCBsaW5lKTsKKysgICAgICB2YV9zdGFydCAoYXJncywgZm10KTsKKysgICAgICAodm9pZCkgdmZwcmludGYgKHN0ZGVyciwgZm10LCBhcmdzKTsKKysgICAgICB2YV9lbmQgKGFyZ3MpOworKyAgICB9CisrfQorKworIHN0YXRpYyB2b2lkCistbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICptb2RlLAorK2x0X2Vycm9yX2NvcmUgKGludCBleGl0X3N0YXR1cywgY29uc3QgY2hhciAqZmlsZSwKKysJICAgICAgIGludCBsaW5lLCBjb25zdCBjaGFyICptb2RlLAorIAkgICAgICAgY29uc3QgY2hhciAqbWVzc2FnZSwgdmFfbGlzdCBhcCkKKyB7CistICBmcHJpbnRmIChzdGRlcnIsICIlczogJXM6ICIsIHByb2dyYW1fbmFtZSwgbW9kZSk7CisrICBmcHJpbnRmIChzdGRlcnIsICIlczolczolZDogJXM6ICIsIHByb2dyYW1fbmFtZSwgZmlsZSwgbGluZSwgbW9kZSk7CisgICB2ZnByaW50ZiAoc3RkZXJyLCBtZXNzYWdlLCBhcCk7CisgICBmcHJpbnRmIChzdGRlcnIsICIuXG4iKTsKKyAKK0BAIC0zOTg4LDIwICs0ODMyLDMyIEBAIGx0X2Vycm9yX2NvcmUgKGludCBleGl0X3N0YXR1cywgY29uc3QgY2hhciAqbW9kZSwKKyB9CisgCisgdm9pZAorLWx0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pCisrbHRfZmF0YWwgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pCisgeworICAgdmFfbGlzdCBhcDsKKyAgIHZhX3N0YXJ0IChhcCwgbWVzc2FnZSk7CistICBsdF9lcnJvcl9jb3JlIChFWElUX0ZBSUxVUkUsICJGQVRBTCIsIG1lc3NhZ2UsIGFwKTsKKysgIGx0X2Vycm9yX2NvcmUgKEVYSVRfRkFJTFVSRSwgZmlsZSwgbGluZSwgIkZBVEFMIiwgbWVzc2FnZSwgYXApOworICAgdmFfZW5kIChhcCk7CisgfQorIAorK3N0YXRpYyBjb25zdCBjaGFyICoKKytub25udWxsIChjb25zdCBjaGFyICpzKQorK3sKKysgIHJldHVybiBzID8gcyA6ICIobnVsbCkiOworK30KKysKKytzdGF0aWMgY29uc3QgY2hhciAqCisrbm9uZW1wdHkgKGNvbnN0IGNoYXIgKnMpCisreworKyAgcmV0dXJuIChzICYmICEqcykgPyAiKGVtcHR5KSIgOiBub25udWxsIChzKTsKKyt9CisrCisgdm9pZAorIGx0X3NldGVudiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCisgeworLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF9zZXRlbnYpIHNldHRpbmcgJyVzJyB0byAnJXMnXG4iLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICIobHRfc2V0ZW52KSBzZXR0aW5nICclcycgdG8gJyVzJ1xuIiwKKysgICAgICAgICAgICAgICAgICBub25udWxsIChuYW1lKSwgbm9ubnVsbCAodmFsdWUpKTsKKyAgIHsKKyAjaWZkZWYgSEFWRV9TRVRFTlYKKyAgICAgLyogYWx3YXlzIG1ha2UgYSBjb3B5LCBmb3IgY29uc2lzdGVuY3kgd2l0aCAhSEFWRV9TRVRFTlYgKi8KK0BAIC00MDQ5LDkgKzQ5MDUsOSBAQCBsdF9leHRlbmRfc3RyIChjb25zdCBjaGFyICpvcmlnX3ZhbHVlLCBjb25zdCBjaGFyICphZGQsIGludCB0b19lbmQpCisgdm9pZAorIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCisgeworLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF91cGRhdGVfZXhlX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lID8gbmFtZSA6ICI8TlVMTD4iKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorKwkJICAiKGx0X3VwZGF0ZV9leGVfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAorKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOworIAorICAgaWYgKG5hbWUgJiYgKm5hbWUgJiYgdmFsdWUgJiYgKnZhbHVlKQorICAgICB7CitAQCAtNDA3MCw5ICs0OTI2LDkgQEAgbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKKyB2b2lkCisgbHRfdXBkYXRlX2xpYl9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKKyB7CistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3VwZGF0ZV9saWJfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICIobHRfdXBkYXRlX2xpYl9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCisrICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7CisgCisgICBpZiAobmFtZSAmJiAqbmFtZSAmJiB2YWx1ZSAmJiAqdmFsdWUpCisgICAgIHsKK0BAIC00MjIyLDcgKzUwNzgsNyBAQCBFT0YKKyBmdW5jX3dpbjMyX2ltcG9ydF9saWJfcCAoKQorIHsKKyAgICAgJG9wdF9kZWJ1ZworLSAgICBjYXNlIGBldmFsICIkZmlsZV9tYWdpY19jbWQgXCJcJDFcIiAyPi9kZXYvbnVsbCIgfCAkU0VEIC1lIDEwcWAgaW4KKysgICAgY2FzZSBgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCJcJDFcIiAyPi9kZXYvbnVsbCB8ICRTRUQgLWUgMTBxYCBpbgorICAgICAqaW1wb3J0KikgOiA7OworICAgICAqKSBmYWxzZSA7OworICAgICBlc2FjCitAQCAtNDQwMSw5ICs1MjU3LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIDs7CisgCSAgKikKKyAJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KKy0JICAgICAgZGxmaWxlcz0iJGRsZmlsZXMgJGFyZyIKKysJICAgICAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRhcmciCisgCSAgICBlbHNlCistCSAgICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRhcmciCisrCSAgICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkYXJnIgorIAkgICAgZmkKKyAJICAgIHByZXY9CisgCSAgICBjb250aW51ZQorQEAgLTQ0MjcsNyArNTI4Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAqLSotZGFyd2luKikKKyAJICAgICAgY2FzZSAiJGRlcGxpYnMgIiBpbgorIAkJKiIgJHFhcmcubHRmcmFtZXdvcmsgIiopIDs7CistCQkqKSBkZXBsaWJzPSIkZGVwbGlicyAkcWFyZy5sdGZyYW1ld29yayIgIyB0aGlzIGlzIGZpeGVkIGxhdGVyCisrCQkqKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJHFhcmcubHRmcmFtZXdvcmsiICMgdGhpcyBpcyBmaXhlZCBsYXRlcgorIAkJICAgOzsKKyAJICAgICAgZXNhYworIAkgICAgICA7OworQEAgLTQ0NDYsNyArNTMwMiw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBtb3JlYXJncz0KKyAJICAgIGZvciBmaWwgaW4gYGNhdCAiJHNhdmVfYXJnImAKKyAJICAgIGRvCistIwkgICAgICBtb3JlYXJncz0iJG1vcmVhcmdzICRmaWwiCisrIwkgICAgICBmdW5jX2FwcGVuZCBtb3JlYXJncyAiICRmaWwiCisgCSAgICAgIGFyZz0kZmlsCisgCSAgICAgICMgQSBsaWJ0b29sLWNvbnRyb2xsZWQgb2JqZWN0LgorIAorQEAgLTQ0NzUsNyArNTMzMSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCisgCQkgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KKyAJCSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0geWVzOyB0aGVuCistCQkgICAgICBkbGZpbGVzPSIkZGxmaWxlcyAkcGljX29iamVjdCIKKysJCSAgICAgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkcGljX29iamVjdCIKKyAJCSAgICAgIHByZXY9CisgCQkgICAgICBjb250aW51ZQorIAkJICAgIGVsc2UKK0BAIC00NDg3LDcgKzUzNDMsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkJICAjIENIRUNLIE1FOiAgSSB0aGluayBJIGJ1c3RlZCB0aGlzLiAgLU9zc2FtYQorIAkJICBpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCisgCQkgICAgIyBQcmVsb2FkIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgorLQkJICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRwaWNfb2JqZWN0IgorKwkJICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkcGljX29iamVjdCIKKyAJCSAgICBwcmV2PQorIAkJICBmaQorIAorQEAgLTQ1NTcsMTIgKzU0MTMsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBpZiB0ZXN0ICIkcHJldiIgPSBycGF0aDsgdGhlbgorIAkgICAgY2FzZSAiJHJwYXRoICIgaW4KKyAJICAgICoiICRhcmcgIiopIDs7CistCSAgICAqKSBycGF0aD0iJHJwYXRoICRhcmciIDs7CisrCSAgICAqKSBmdW5jX2FwcGVuZCBycGF0aCAiICRhcmciIDs7CisgCSAgICBlc2FjCisgCSAgZWxzZQorIAkgICAgY2FzZSAiJHhycGF0aCAiIGluCisgCSAgICAqIiAkYXJnICIqKSA7OworLQkgICAgKikgeHJwYXRoPSIkeHJwYXRoICRhcmciIDs7CisrCSAgICAqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkYXJnIiA7OworIAkgICAgZXNhYworIAkgIGZpCisgCSAgcHJldj0KK0BAIC00NTc0LDI4ICs1NDMwLDI4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgY29udGludWUKKyAJICA7OworIAl3ZWFrKQorLQkgIHdlYWtfbGlicz0iJHdlYWtfbGlicyAkYXJnIgorKwkgIGZ1bmNfYXBwZW5kIHdlYWtfbGlicyAiICRhcmciCisgCSAgcHJldj0KKyAJICBjb250aW51ZQorIAkgIDs7CisgCXhjY2xpbmtlcikKKy0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJHFhcmciCistCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkcWFyZyIKKysJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkcWFyZyIKKysJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRxYXJnIgorIAkgIHByZXY9CisgCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHFhcmciCisgCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRxYXJnIgorIAkgIGNvbnRpbnVlCisgCSAgOzsKKyAJeGNvbXBpbGVyKQorLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHFhcmciCisrCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkcWFyZyIKKyAJICBwcmV2PQorIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRxYXJnIgorIAkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkcWFyZyIKKyAJICBjb250aW51ZQorIAkgIDs7CisgCXhsaW5rZXIpCistCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRxYXJnIgorLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHdsJHFhcmciCisrCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJHFhcmciCisrCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkd2wkcWFyZyIKKyAJICBwcmV2PQorIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICR3bCRxYXJnIgorIAkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkd2wkcWFyZyIKK0BAIC00Njg2LDE1ICs1NTQyLDE2IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCTs7CisgCisgICAgICAgLUwqKQorLQlmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkYXJnIgorLQlkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorLQlpZiB0ZXN0IC16ICIkZGlyIjsgdGhlbgorKwlmdW5jX3N0cmlwbmFtZSAiLUwiICcnICIkYXJnIgorKwlpZiB0ZXN0IC16ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IjsgdGhlbgorIAkgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgorIAkgICAgZnVuY19mYXRhbF9lcnJvciAicmVxdWlyZSBubyBzcGFjZSBiZXR3ZWVuIFxgLUwnIGFuZCBcYCQxJyIKKyAJICBlbHNlCisgCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJuZWVkIHBhdGggZm9yIFxgLUwnIG9wdGlvbiIKKyAJICBmaQorIAlmaQorKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJZGlyPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKyAJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCisgCWNhc2UgJGRpciBpbgorIAlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIDs7CitAQCAtNDcwNiwxMCArNTU2MywxNiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIDs7CisgCWVzYWMKKyAJY2FzZSAiJGRlcGxpYnMgIiBpbgorLQkqIiAtTCRkaXIgIiopIDs7CisrCSoiIC1MJGRpciAiKiB8ICoiICRhcmcgIiopCisrCSAgIyBXaWxsIG9ubHkgaGFwcGVuIGZvciBhYnNvbHV0ZSBvciBzeXNyb290IGFyZ3VtZW50cworKwkgIDs7CisgCSopCistCSAgZGVwbGlicz0iJGRlcGxpYnMgLUwkZGlyIgorLQkgIGxpYl9zZWFyY2hfcGF0aD0iJGxpYl9zZWFyY2hfcGF0aCAkZGlyIgorKwkgICMgUHJlc2VydmUgc3lzcm9vdCwgYnV0IG5ldmVyIGluY2x1ZGUgcmVsYXRpdmUgZGlyZWN0b3JpZXMKKysJICBjYXNlICRkaXIgaW4KKysJICAgIFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKiB8ID0qKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGFyZyIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAtTCRkaXIiIDs7CisrCSAgZXNhYworKwkgIGZ1bmNfYXBwZW5kIGxpYl9zZWFyY2hfcGF0aCAiICRkaXIiCisgCSAgOzsKKyAJZXNhYworIAljYXNlICRob3N0IGluCitAQCAtNDcxOCwxMiArNTU4MSwxMiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgorIAkgICoiOiRkaXI6IiopIDs7CisgCSAgOjopIGRsbHNlYXJjaHBhdGg9JGRpcjs7CistCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGRpciI7OworKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokZGlyIjs7CisgCSAgZXNhYworIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgorIAkgICoiOiR0ZXN0YmluZGlyOiIqKSA7OworIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSR0ZXN0YmluZGlyOzsKKy0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokdGVzdGJpbmRpciI7OworKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokdGVzdGJpbmRpciI7OworIAkgIGVzYWMKKyAJICA7OworIAllc2FjCitAQCAtNDc0Nyw3ICs1NjEwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIDs7CisgCSAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQorIAkgICAgIyBSaGFwc29keSBDIGFuZCBtYXRoIGxpYnJhcmllcyBhcmUgaW4gdGhlIFN5c3RlbSBmcmFtZXdvcmsKKy0JICAgIGRlcGxpYnM9IiRkZXBsaWJzIFN5c3RlbS5sdGZyYW1ld29yayIKKysJICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiBTeXN0ZW0ubHRmcmFtZXdvcmsiCisgCSAgICBjb250aW51ZQorIAkgICAgOzsKKyAJICAqLSotc2NvMy4ydjUqIHwgKi0qLXNjbzV2NiopCitAQCAtNDc1OCw5ICs1NjIxLDYgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICMgQ29tcGlsZXIgaW5zZXJ0cyBsaWJjIGluIHRoZSBjb3JyZWN0IHBsYWNlIGZvciB0aHJlYWRzIHRvIHdvcmsKKyAJICAgIHRlc3QgIlgkYXJnIiA9ICJYLWxjIiAmJiBjb250aW51ZQorIAkgICAgOzsKKy0JICAqLSotbGludXgqKQorLQkgICAgdGVzdCAiWCRhcmciID0gIlgtbGMiICYmIGNvbnRpbnVlCistCSAgICA7OworIAkgIGVzYWMKKyAJZWxpZiB0ZXN0ICJYJGFyZyIgPSAiWC1sY19yIjsgdGhlbgorIAkgY2FzZSAkaG9zdCBpbgorQEAgLTQ3NzAsNyArNTYzMCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgIDs7CisgCSBlc2FjCisgCWZpCistCWRlcGxpYnM9IiRkZXBsaWJzICRhcmciCisrCWZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIgorIAljb250aW51ZQorIAk7OworIAorQEAgLTQ3ODIsOCArNTY0Miw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgIyBUcnU2NCBVTklYIHVzZXMgLW1vZGVsIFthcmddIHRvIGRldGVybWluZSB0aGUgbGF5b3V0IG9mIEMrKworICAgICAgICMgY2xhc3NlcywgbmFtZSBtYW5nbGluZywgYW5kIGV4Y2VwdGlvbiBoYW5kbGluZy4KKyAgICAgICAjIERhcndpbiB1c2VzIHRoZSAtYXJjaCBmbGFnIHRvIGRldGVybWluZSBvdXRwdXQgYXJjaGl0ZWN0dXJlLgorLSAgICAgIC1tb2RlbHwtYXJjaHwtaXN5c3Jvb3QpCistCWNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKKysgICAgICAtbW9kZWx8LWFyY2h8LWlzeXNyb290fC0tc3lzcm9vdCkKKysJZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgorIAlmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgorIAlmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKKyAJcHJldj14Y29tcGlsZXIKK0BAIC00NzkxLDEyICs1NjUxLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCTs7CisgCisgICAgICAgLW10fC1tdGhyZWFkc3wta3RocmVhZHwtS3RocmVhZHwtcHRocmVhZHwtcHRocmVhZHN8LS10aHJlYWQtc2FmZXwtdGhyZWFkcykKKy0JY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorKwlmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCisgCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCisgCWZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgorIAljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgorIAkgICAgKiIgJGFyZyAiKikgOzsKKy0JICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRhcmciIDs7CisrCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkYXJnIiA7OworIAllc2FjCisgCWNvbnRpbnVlCisgCTs7CitAQCAtNDg2MywxMyArNTcyMywxNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KKyAJY2FzZSAkZGlyIGluCisgCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKKysJPSopCisrCSAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkZGlyIgorKwkgIGRpcj0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysJICA7OworIAkqKQorIAkgIGZ1bmNfZmF0YWxfZXJyb3IgIm9ubHkgYWJzb2x1dGUgcnVuLXBhdGhzIGFyZSBhbGxvd2VkIgorIAkgIDs7CisgCWVzYWMKKyAJY2FzZSAiJHhycGF0aCAiIGluCisgCSoiICRkaXIgIiopIDs7CistCSopIHhycGF0aD0iJHhycGF0aCAkZGlyIiA7OworKwkqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkZGlyIiA7OworIAllc2FjCisgCWNvbnRpbnVlCisgCTs7CitAQCAtNDkyMiw4ICs1Nzg2LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJZm9yIGZsYWcgaW4gJGFyZ3M7IGRvCisgCSAgSUZTPSIkc2F2ZV9pZnMiCisgICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmbGFnIgorLQkgIGFyZz0iJGFyZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCistCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCSAgZnVuY19hcHBlbmQgYXJnICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorIAlkb25lCisgCUlGUz0iJHNhdmVfaWZzIgorIAlmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRhcmciCitAQCAtNDkzOCw5ICs1ODAyLDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJZm9yIGZsYWcgaW4gJGFyZ3M7IGRvCisgCSAgSUZTPSIkc2F2ZV9pZnMiCisgICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmbGFnIgorLQkgIGFyZz0iJGFyZyAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCistCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCistCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysJICBmdW5jX2FwcGVuZCBhcmcgIiAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorIAlkb25lCisgCUlGUz0iJHNhdmVfaWZzIgorIAlmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRhcmciCitAQCAtNDk2OCwyNCArNTgzMiwyNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAlhcmc9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAJOzsKKyAKKy0gICAgICAjIC02NCwgLW1pcHNbMC05XSBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIFNHSSBjb21waWxlcgorLSAgICAgICMgLXJbMC05XVswLTldKiBzcGVjaWZpZXMgdGhlIHByb2Nlc3NvciBvbiB0aGUgU0dJIGNvbXBpbGVyCistICAgICAgIyAteGFyY2g9KiwgLXh0YXJnZXQ9KiBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIFN1biBjb21waWxlcgorLSAgICAgICMgK0RBKiwgK0REKiBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIEhQIGNvbXBpbGVyCistICAgICAgIyAtcSogcGFzcyB0aHJvdWdoIGNvbXBpbGVyIGFyZ3MgZm9yIHRoZSBJQk0gY29tcGlsZXIKKy0gICAgICAjIC1tKiwgLXRbNDVdKiwgLXR4c2NhbGUqIHBhc3MgdGhyb3VnaCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMKKy0gICAgICAjIGNvbXBpbGVyIGFyZ3MgZm9yIEdDQworLSAgICAgICMgLUYvcGF0aCBnaXZlcyBwYXRoIHRvIHVuaW5zdGFsbGVkIGZyYW1ld29ya3MsIGdjYyBvbiBkYXJ3aW4KKy0gICAgICAjIC1wLCAtcGcsIC0tY292ZXJhZ2UsIC1mcHJvZmlsZS0qIHBhc3MgdGhyb3VnaCBwcm9maWxpbmcgZmxhZyBmb3IgR0NDCistICAgICAgIyBAZmlsZSBHQ0MgcmVzcG9uc2UgZmlsZXMKKy0gICAgICAjIC10cD0qIFBvcnRsYW5kIHBnY2MgdGFyZ2V0IHByb2Nlc3NvciBzZWxlY3Rpb24KKysgICAgICAjIEZsYWdzIHRvIGJlIHBhc3NlZCB0aHJvdWdoIHVuY2hhbmdlZCwgd2l0aCByYXRpb25hbGU6CisrICAgICAgIyAtNjQsIC1taXBzWzAtOV0gICAgICBlbmFibGUgNjQtYml0IG1vZGUgZm9yIHRoZSBTR0kgY29tcGlsZXIKKysgICAgICAjIC1yWzAtOV1bMC05XSogICAgICAgIHNwZWNpZnkgcHJvY2Vzc29yIGZvciB0aGUgU0dJIGNvbXBpbGVyCisrICAgICAgIyAteGFyY2g9KiwgLXh0YXJnZXQ9KiBlbmFibGUgNjQtYml0IG1vZGUgZm9yIHRoZSBTdW4gY29tcGlsZXIKKysgICAgICAjICtEQSosICtERCogICAgICAgICAgIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIEhQIGNvbXBpbGVyCisrICAgICAgIyAtcSogICAgICAgICAgICAgICAgICBjb21waWxlciBhcmdzIGZvciB0aGUgSUJNIGNvbXBpbGVyCisrICAgICAgIyAtbSosIC10WzQ1XSosIC10eHNjYWxlKiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZmxhZ3MgZm9yIEdDQworKyAgICAgICMgLUYvcGF0aCAgICAgICAgICAgICAgcGF0aCB0byB1bmluc3RhbGxlZCBmcmFtZXdvcmtzLCBnY2Mgb24gZGFyd2luCisrICAgICAgIyAtcCwgLXBnLCAtLWNvdmVyYWdlLCAtZnByb2ZpbGUtKiAgcHJvZmlsaW5nIGZsYWdzIGZvciBHQ0MKKysgICAgICAjIEBmaWxlICAgICAgICAgICAgICAgIEdDQyByZXNwb25zZSBmaWxlcworKyAgICAgICMgLXRwPSogICAgICAgICAgICAgICAgUG9ydGxhbmQgcGdjYyB0YXJnZXQgcHJvY2Vzc29yIHNlbGVjdGlvbgorKyAgICAgICMgLS1zeXNyb290PSogICAgICAgICAgZm9yIHN5c3Jvb3Qgc3VwcG9ydAorKyAgICAgICMgLU8qLCAtZmx0byosIC1md2hvcHIqLCAtZnVzZS1saW5rZXItcGx1Z2luIEdDQyBsaW5rLXRpbWUgb3B0aW1pemF0aW9uCisgICAgICAgLTY0fC1taXBzWzAtOV18LXJbMC05XVswLTldKnwteGFyY2g9KnwteHRhcmdldD0qfCtEQSp8K0REKnwtcSp8LW0qfCBcCistICAgICAgLXRbNDVdKnwtdHhzY2FsZSp8LXB8LXBnfC0tY292ZXJhZ2V8LWZwcm9maWxlLSp8LUYqfEAqfC10cD0qKQorKyAgICAgIC10WzQ1XSp8LXR4c2NhbGUqfC1wfC1wZ3wtLWNvdmVyYWdlfC1mcHJvZmlsZS0qfC1GKnxAKnwtdHA9KnwtLXN5c3Jvb3Q9KnwgXAorKyAgICAgIC1PKnwtZmx0byp8LWZ3aG9wcip8LWZ1c2UtbGlua2VyLXBsdWdpbikKKyAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCisgCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKKyAgICAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgorLSAgICAgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorKyAgICAgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgorICAgICAgICAgY29udGludWUKKyAgICAgICAgIDs7CisgCitAQCAtNDk5Nyw3ICs1ODY0LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAKKyAgICAgICAqLiRvYmpleHQpCisgCSMgQSBzdGFuZGFyZCBvYmplY3QuCistCW9ianM9IiRvYmpzICRhcmciCisrCWZ1bmNfYXBwZW5kIG9ianMgIiAkYXJnIgorIAk7OworIAorICAgICAgICoubG8pCitAQCAtNTAyOCw3ICs1ODk1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAKKyAJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KKyAJICAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiA9IHllczsgdGhlbgorLQkJZGxmaWxlcz0iJGRsZmlsZXMgJHBpY19vYmplY3QiCisrCQlmdW5jX2FwcGVuZCBkbGZpbGVzICIgJHBpY19vYmplY3QiCisgCQlwcmV2PQorIAkJY29udGludWUKKyAJICAgICAgZWxzZQorQEAgLTUwNDAsNyArNTkwNyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAjIENIRUNLIE1FOiAgSSB0aGluayBJIGJ1c3RlZCB0aGlzLiAgLU9zc2FtYQorIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgorIAkgICAgICAjIFByZWxvYWQgdGhlIG9sZC1zdHlsZSBvYmplY3QuCistCSAgICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRwaWNfb2JqZWN0IgorKwkgICAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJHBpY19vYmplY3QiCisgCSAgICAgIHByZXY9CisgCSAgICBmaQorIAorQEAgLTUwODUsMjQgKzU5NTIsMjUgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAKKyAgICAgICAqLiRsaWJleHQpCisgCSMgQW4gYXJjaGl2ZS4KKy0JZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKKy0Jb2xkX2RlcGxpYnM9IiRvbGRfZGVwbGlicyAkYXJnIgorKwlmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGFyZyIKKysJZnVuY19hcHBlbmQgb2xkX2RlcGxpYnMgIiAkYXJnIgorIAljb250aW51ZQorIAk7OworIAorICAgICAgICoubGEpCisgCSMgQSBsaWJ0b29sLWNvbnRyb2xsZWQgbGlicmFyeS4KKyAKKysJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRhcmciCisgCWlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KKyAJICAjIFRoaXMgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRsb3Blbi4KKy0JICBkbGZpbGVzPSIkZGxmaWxlcyAkYXJnIgorKwkgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorIAkgIHByZXY9CisgCWVsaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgorIAkgICMgVGhlIGxpYnJhcnkgd2FzIHNwZWNpZmllZCB3aXRoIC1kbHByZW9wZW4uCistCSAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGFyZyIKKysJICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAJICBwcmV2PQorIAllbHNlCistCSAgZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKKysJICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAJZmkKKyAJY29udGludWUKKyAJOzsKK0BAIC01MTI3LDcgKzU5OTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgIGZ1bmNfZmF0YWxfaGVscCAidGhlIFxgJHByZXZhcmcnIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIKKyAKKyAgICAgaWYgdGVzdCAiJGV4cG9ydF9keW5hbWljIiA9IHllcyAmJiB0ZXN0IC1uICIkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjIjsgdGhlbgorLSAgICAgIGV2YWwgImFyZz1cIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWNcIiIKKysgICAgICBldmFsIGFyZz1cIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWNcIgorICAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCisgICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCisgICAgIGZpCitAQCAtNTE0NCwxMSArNjAxMiwxMyBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICBlbHNlCisgICAgICAgc2hsaWJfc2VhcmNoX3BhdGg9CisgICAgIGZpCistICAgIGV2YWwgInN5c19saWJfc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjXCIiCistICAgIGV2YWwgInN5c19saWJfZGxzZWFyY2hfcGF0aD1cIiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlY1wiIgorKyAgICBldmFsIHN5c19saWJfc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjXCIKKysgICAgZXZhbCBzeXNfbGliX2Rsc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWNcIgorIAorICAgICBmdW5jX2Rpcm5hbWUgIiRvdXRwdXQiICIvIiAiIgorICAgICBvdXRwdXRfb2JqZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCRvYmpkaXIiCisrICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0X29iamRpci8iCisrICAgIHRvb2xfb3V0cHV0X29iamRpcj0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CisgICAgICMgQ3JlYXRlIHRoZSBvYmplY3QgZGlyZWN0b3J5LgorICAgICBmdW5jX21rZGlyX3AgIiRvdXRwdXRfb2JqZGlyIgorIAorQEAgLTUxNjksMTIgKzYwMzksMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAgICAgIyBGaW5kIGFsbCBpbnRlcmRlcGVuZGVudCBkZXBsaWJzIGJ5IHNlYXJjaGluZyBmb3IgbGlicmFyaWVzCisgICAgICMgdGhhdCBhcmUgbGlua2VkIG1vcmUgdGhhbiBvbmNlIChlLmcuIC1sYSAtbGIgLWxhKQorICAgICBmb3IgZGVwbGliIGluICRkZXBsaWJzOyBkbworLSAgICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisrICAgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KKyAJY2FzZSAiJGxpYnMgIiBpbgorLQkqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisrCSoiICRkZXBsaWIgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGRlcGxpYiIgOzsKKyAJZXNhYworICAgICAgIGZpCistICAgICAgbGlicz0iJGxpYnMgJGRlcGxpYiIKKysgICAgICBmdW5jX2FwcGVuZCBsaWJzICIgJGRlcGxpYiIKKyAgICAgZG9uZQorIAorICAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliOyB0aGVuCitAQCAtNTE4Nyw5ICs2MDU3LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAgICAgICBpZiAkb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwczsgdGhlbgorIAlmb3IgcHJlX3Bvc3RfZGVwIGluICRwcmVkZXBzICRwb3N0ZGVwczsgZG8KKyAJICBjYXNlICIkcHJlX3Bvc3RfZGVwcyAiIGluCistCSAgKiIgJHByZV9wb3N0X2RlcCAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkcHJlX3Bvc3RfZGVwcyIgOzsKKysJICAqIiAkcHJlX3Bvc3RfZGVwICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRwcmVfcG9zdF9kZXBzIiA7OworIAkgIGVzYWMKKy0JICBwcmVfcG9zdF9kZXBzPSIkcHJlX3Bvc3RfZGVwcyAkcHJlX3Bvc3RfZGVwIgorKwkgIGZ1bmNfYXBwZW5kIHByZV9wb3N0X2RlcHMgIiAkcHJlX3Bvc3RfZGVwIgorIAlkb25lCisgICAgICAgZmkKKyAgICAgICBwcmVfcG9zdF9kZXBzPQorQEAgLTUyNTYsOCArNjEyNiw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCWZvciBsaWIgaW4gJGRscHJlZmlsZXM7IGRvCisgCSAgIyBJZ25vcmUgbm9uLWxpYnRvb2wtbGlicworIAkgIGRlcGVuZGVuY3lfbGlicz0KKysJICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGxpYiIKKyAJICBjYXNlICRsaWIgaW4KKy0JICAqLmxhKQlmdW5jX3NvdXJjZSAiJGxpYiIgOzsKKysJICAqLmxhKQlmdW5jX3NvdXJjZSAiJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIgOzsKKyAJICBlc2FjCisgCisgCSAgIyBDb2xsZWN0IHByZW9wZW5lZCBsaWJ0b29sIGRlcGxpYnMsIGV4Y2VwdCBhbnkgdGhpcyBsaWJyYXJ5CitAQCAtNTI2Nyw3ICs2MTM4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAgICAgICAgICAgICBkZXBsaWJfYmFzZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKKyAJICAgIGNhc2UgIiAkd2Vha19saWJzICIgaW4KKyAJICAgICoiICRkZXBsaWJfYmFzZSAiKikgOzsKKy0JICAgICopIGRlcGxpYnM9IiRkZXBsaWJzICRkZXBsaWIiIDs7CisrCSAgICAqKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGRlcGxpYiIgOzsKKyAJICAgIGVzYWMKKyAJICBkb25lCisgCWRvbmUKK0BAIC01Mjg4LDExICs2MTU5LDExIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKKyAJICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCisgCSAgZWxzZQorLQkgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkZGVwbGliIgorKwkgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkZGVwbGliIgorIAkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiA7IHRoZW4KKyAJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCisgCQkgICAgKiIgJGRlcGxpYiAiKikgOzsKKy0JCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZGVwbGliIiA7OworKwkJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRkZXBsaWIiIDs7CisgCQllc2FjCisgCSAgICBmaQorIAkgIGZpCitAQCAtNTM3Nyw3ICs2MjQ4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgOyB0aGVuCisgCQljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgorIAkJICAgICoiICRkZXBsaWIgIiopIDs7CistCQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGRlcGxpYiIgOzsKKysJCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkZGVwbGliIiA7OworIAkJZXNhYworIAkgICAgZmkKKyAJICBmaQorQEAgLTUzOTAsNyArNjI2MSw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICB0ZXN0ICIkcGFzcyIgPSBjb252ICYmIGNvbnRpbnVlCisgCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKKyAJICAgIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCistCSAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAJICAgIDs7CisgCSAgcHJvZykKKyAJICAgIGlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KK0BAIC01NDA0LDcgKzYyNzYsOCBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgorIAkgICAgZmkKKyAJICAgIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCistCSAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAJICAgIDs7CisgCSAgKikKKyAJICAgIGZ1bmNfd2FybmluZyAiXGAtTCcgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMvb2JqZWN0cyIKK0BAIC01NDE1LDE3ICs2Mjg4LDIxIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCS1SKikKKyAJICBpZiB0ZXN0ICIkcGFzcyIgPSBsaW5rOyB0aGVuCisgCSAgICBmdW5jX3N0cmlwbmFtZSAnLVInICcnICIkZGVwbGliIgorLQkgICAgZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkgICAgZGlyPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKyAJICAgICMgTWFrZSBzdXJlIHRoZSB4cnBhdGggY29udGFpbnMgb25seSB1bmlxdWUgZGlyZWN0b3JpZXMuCisgCSAgICBjYXNlICIkeHJwYXRoICIgaW4KKyAJICAgICoiICRkaXIgIiopIDs7CistCSAgICAqKSB4cnBhdGg9IiR4cnBhdGggJGRpciIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRkaXIiIDs7CisgCSAgICBlc2FjCisgCSAgZmkKKyAJICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgorIAkgIGNvbnRpbnVlCisgCSAgOzsKKy0JKi5sYSkgbGliPSIkZGVwbGliIiA7OworKwkqLmxhKQorKwkgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIgorKwkgIGxpYj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CisrCSAgOzsKKyAJKi4kbGliZXh0KQorIAkgIGlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KKyAJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCitAQCAtNTQ4OCwxMSArNjM2NSwxMSBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgaWYgdGVzdCAiJHBhc3MiID0gZGxwcmVvcGVuIHx8IHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgIT0geWVzIHx8IHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0gbm87IHRoZW4KKyAJICAgICAgIyBJZiB0aGVyZSBpcyBubyBkbG9wZW4gc3VwcG9ydCBvciB3ZSdyZSBsaW5raW5nIHN0YXRpY2FsbHksCisgCSAgICAgICMgd2UgbmVlZCB0byBwcmVsb2FkLgorLQkgICAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGVwbGliIgorKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRlcGxpYiIKKyAJICAgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCisgCSAgICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCisgCSAgICBlbHNlCistCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRkZXBsaWIiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkZGVwbGliIgorIAkgICAgZmkKKyAJICBmaQorIAkgIGNvbnRpbnVlCitAQCAtNTUzOCw3ICs2NDE1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBmb3IgdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyBpbiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZ3M7IGRvCisgCSAgICBjYXNlICIgJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KKyAJICAgICAgKiIgJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWcgIiopIDs7CistCSAgICAgICopIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWciOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyI7OworIAkgICAgZXNhYworIAkgIGRvbmUKKyAJZmkKK0BAIC01NTQ2LDggKzY0MjMsOCBAQCBmdW5jX21vZGVfbGluayAoKQorIAlpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixsaW5rIiB8fAorIAkgICB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gInByb2csc2NhbiIgfHwKKyAJICAgeyB0ZXN0ICIkbGlua21vZGUiICE9IHByb2cgJiYgdGVzdCAiJGxpbmttb2RlIiAhPSBsaWI7IH07IHRoZW4KKy0JICB0ZXN0IC1uICIkZGxvcGVuIiAmJiBkbGZpbGVzPSIkZGxmaWxlcyAkZGxvcGVuIgorLQkgIHRlc3QgLW4gIiRkbHByZW9wZW4iICYmIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRkbHByZW9wZW4iCisrCSAgdGVzdCAtbiAiJGRsb3BlbiIgJiYgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRkbG9wZW4iCisrCSAgdGVzdCAtbiAiJGRscHJlb3BlbiIgJiYgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRkbHByZW9wZW4iCisgCWZpCisgCisgCWlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KK0BAIC01NTU4LDIwICs2NDM1LDIwIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRsaWInIgorIAkgICAgZmkKKyAJICAgICMgSXQgaXMgYSBsaWJ0b29sIGNvbnZlbmllbmNlIGxpYnJhcnksIHNvIGFkZCBpbiBpdHMgb2JqZWN0cy4KKy0JICAgIGNvbnZlbmllbmNlPSIkY29udmVuaWVuY2UgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgorLQkgICAgb2xkX2NvbnZlbmllbmNlPSIkb2xkX2NvbnZlbmllbmNlICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKKysJICAgIGZ1bmNfYXBwZW5kIGNvbnZlbmllbmNlICIgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgorKwkgICAgZnVuY19hcHBlbmQgb2xkX2NvbnZlbmllbmNlICIgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgorIAkgIGVsaWYgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliOyB0aGVuCisgCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIGNvbnZlbmllbmNlIGxpYnJhcnkiCisgCSAgZmkKKyAJICB0bXBfbGlicz0KKyAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCisgCSAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgorLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKysJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCisgCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCistCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKysJICAgICAgKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OworIAkgICAgICBlc2FjCisgCSAgICBmaQorLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgorKwkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIgorIAkgIGRvbmUKKyAJICBjb250aW51ZQorIAlmaSAjICRwYXNzID0gY29udgorQEAgLTU1NzksOSArNjQ1NiwxNSBAQCBmdW5jX21vZGVfbGluayAoKQorIAorIAkjIEdldCB0aGUgbmFtZSBvZiB0aGUgbGlicmFyeSB3ZSBsaW5rIGFnYWluc3QuCisgCWxpbmtsaWI9CistCWZvciBsIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8KKy0JICBsaW5rbGliPSIkbCIKKy0JZG9uZQorKwlpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmCisrCSAgIHsgdGVzdCAiJHByZWZlcl9zdGF0aWNfbGlicyIgPSB5ZXMgfHwKKysJICAgICB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzLCRpbnN0YWxsZWQiID0gImJ1aWx0LG5vIjsgfTsgdGhlbgorKwkgIGxpbmtsaWI9JG9sZF9saWJyYXJ5CisrCWVsc2UKKysJICBmb3IgbCBpbiAkb2xkX2xpYnJhcnkgJGxpYnJhcnlfbmFtZXM7IGRvCisrCSAgICBsaW5rbGliPSIkbCIKKysJICBkb25lCisrCWZpCisgCWlmIHRlc3QgLXogIiRsaW5rbGliIjsgdGhlbgorIAkgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRsaWInIgorIAlmaQorQEAgLTU1OTgsOSArNjQ4MSw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAjIHN0YXRpY2FsbHksIHdlIG5lZWQgdG8gcHJlbG9hZC4gIFdlIGFsc28gbmVlZCB0byBwcmVsb2FkIGFueQorIAkgICAgIyBkZXBlbmRlbnQgbGlicmFyaWVzIHNvIGxpYmx0ZGwncyBkZXBsaWIgcHJlbG9hZGVyIGRvZXNuJ3QKKyAJICAgICMgYm9tYiBvdXQgaW4gdGhlIGxvYWQgZGVwbGlicyBwaGFzZS4KKy0JICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRsaWIgJGRlcGVuZGVuY3lfbGlicyIKKysJICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkbGliICRkZXBlbmRlbmN5X2xpYnMiCisgCSAgZWxzZQorLQkgICAgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYiIKKysJICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkbGliIgorIAkgIGZpCisgCSAgY29udGludWUKKyAJZmkgIyAkcGFzcyA9IGRsb3BlbgorQEAgLTU2MjIsMTQgKzY1MDUsMTQgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAKKyAJIyBGaW5kIHRoZSByZWxldmFudCBvYmplY3QgZGlyZWN0b3J5IGFuZCBsaWJyYXJ5IG5hbWUuCisgCWlmIHRlc3QgIlgkaW5zdGFsbGVkIiA9IFh5ZXM7IHRoZW4KKy0JICBpZiB0ZXN0ICEgLWYgIiRsaWJkaXIvJGxpbmtsaWIiICYmIHRlc3QgLWYgIiRhYnNfbGFkaXIvJGxpbmtsaWIiOyB0aGVuCisrCSAgaWYgdGVzdCAhIC1mICIkbHRfc3lzcm9vdCRsaWJkaXIvJGxpbmtsaWIiICYmIHRlc3QgLWYgIiRhYnNfbGFkaXIvJGxpbmtsaWIiOyB0aGVuCisgCSAgICBmdW5jX3dhcm5pbmcgImxpYnJhcnkgXGAkbGliJyB3YXMgbW92ZWQuIgorIAkgICAgZGlyPSIkbGFkaXIiCisgCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCisgCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCisgCSAgZWxzZQorLQkgICAgZGlyPSIkbGliZGlyIgorLQkgICAgYWJzZGlyPSIkbGliZGlyIgorKwkgICAgZGlyPSIkbHRfc3lzcm9vdCRsaWJkaXIiCisrCSAgICBhYnNkaXI9IiRsdF9zeXNyb290JGxpYmRpciIKKyAJICBmaQorIAkgIHRlc3QgIlgkaGFyZGNvZGVfYXV0b21hdGljIiA9IFh5ZXMgJiYgYXZvaWR0ZW1wcnBhdGg9eWVzCisgCWVsc2UKK0BAIC01NjM3LDEyICs2NTIwLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBkaXI9IiRsYWRpciIKKyAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKKyAJICAgICMgUmVtb3ZlIHRoaXMgc2VhcmNoIHBhdGggbGF0ZXIKKy0JICAgIG5vdGluc3RfcGF0aD0iJG5vdGluc3RfcGF0aCAkYWJzX2xhZGlyIgorKwkgICAgZnVuY19hcHBlbmQgbm90aW5zdF9wYXRoICIgJGFic19sYWRpciIKKyAJICBlbHNlCisgCSAgICBkaXI9IiRsYWRpci8kb2JqZGlyIgorIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyLyRvYmpkaXIiCisgCSAgICAjIFJlbW92ZSB0aGlzIHNlYXJjaCBwYXRoIGxhdGVyCistCSAgICBub3RpbnN0X3BhdGg9IiRub3RpbnN0X3BhdGggJGFic19sYWRpciIKKysJICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfcGF0aCAiICRhYnNfbGFkaXIiCisgCSAgZmkKKyAJZmkgIyAkaW5zdGFsbGVkID0geWVzCisgCWZ1bmNfc3RyaXBuYW1lICdsaWInICcubGEnICIkbGFuYW1lIgorQEAgLTU2NTMsMjAgKzY1MzYsNDYgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBpZiB0ZXN0IC16ICIkbGliZGlyIiAmJiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgorIAkgICAgZnVuY19mYXRhbF9lcnJvciAib25seSBsaWJyYXJpZXMgbWF5IC1kbHByZW9wZW4gYSBjb252ZW5pZW5jZSBsaWJyYXJ5OiBcYCRsaWInIgorIAkgIGZpCistCSAgIyBQcmVmZXIgdXNpbmcgYSBzdGF0aWMgbGlicmFyeSAoc28gdGhhdCBubyBzaWxseSBfRFlOQU1JQyBzeW1ib2xzCistCSAgIyBhcmUgcmVxdWlyZWQgdG8gbGluaykuCistCSAgaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgorLQkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kb2xkX2xpYnJhcnkiCistCSAgICAjIEtlZXAgYSBsaXN0IG9mIHByZW9wZW5lZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgdG8gY2hlY2sKKy0JICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgorLQkgICAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAorLQkJZGxwcmVjb252ZW5pZW5jZWxpYnM9IiRkbHByZWNvbnZlbmllbmNlbGlicyAkZGlyLyRvbGRfbGlicmFyeSIKKy0JICAjIE90aGVyd2lzZSwgdXNlIHRoZSBkbG5hbWUsIHNvIHRoYXQgbHRfZGxvcGVuIGZpbmRzIGl0LgorLQkgIGVsaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KKy0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJGRsbmFtZSIKKy0JICBlbHNlCistCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRsaW5rbGliIgorLQkgIGZpCisrCSAgY2FzZSAiJGhvc3QiIGluCisrCSAgICAjIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHBsYXRmb3JtcyB3aXRoIFBFLURMTHMuCisrCSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKysJICAgICAgIyBMaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGxpbmsgYWdhaW5zdCBzaGFyZWQgbGlicmFyeSBpZiBib3RoCisrCSAgICAgICMgc3RhdGljIGFuZCBzaGFyZWQgYXJlIHByZXNlbnQuICBUaGVyZWZvcmUsIGVuc3VyZSB3ZSBleHRyYWN0CisrCSAgICAgICMgc3ltYm9scyBmcm9tIHRoZSBpbXBvcnQgbGlicmFyeSBpZiBhIHNoYXJlZCBsaWJyYXJ5IGlzIHByZXNlbnQKKysJICAgICAgIyAob3RoZXJ3aXNlLCB0aGUgZGxvcGVuIG1vZHVsZSBuYW1lIHdpbGwgYmUgaW5jb3JyZWN0KS4gIFdlIGRvCisrCSAgICAgICMgdGhpcyBieSBwdXR0aW5nIHRoZSBpbXBvcnQgbGlicmFyeSBuYW1lIGludG8gJG5ld2RscHJlZmlsZXMuCisrCSAgICAgICMgV2UgcmVjb3ZlciB0aGUgZGxvcGVuIG1vZHVsZSBuYW1lIGJ5ICdzYXZpbmcnIHRoZSBsYSBmaWxlCisrCSAgICAgICMgbmFtZSBpbiBhIHNwZWNpYWwgcHVycG9zZSB2YXJpYWJsZSwgYW5kIChsYXRlcikgZXh0cmFjdGluZyB0aGUKKysJICAgICAgIyBkbG5hbWUgZnJvbSB0aGUgbGEgZmlsZS4KKysJICAgICAgaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KKysJICAgICAgICBmdW5jX3RyX3NoICIkZGlyLyRsaW5rbGliIgorKwkgICAgICAgIGV2YWwgImxpYmZpbGVfJGZ1bmNfdHJfc2hfcmVzdWx0PVwkYWJzX2xhZGlyL1wkbGFuYW1lIgorKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRsaW5rbGliIgorKwkgICAgICBlbHNlCisrCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJG9sZF9saWJyYXJ5IgorKwkgICAgICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjaworKwkgICAgICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgorKwkgICAgICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKKysJICAgICAgICAgIGZ1bmNfYXBwZW5kIGRscHJlY29udmVuaWVuY2VsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCisrCSAgICAgIGZpCisrCSAgICA7OworKwkgICAgKiApCisrCSAgICAgICMgUHJlZmVyIHVzaW5nIGEgc3RhdGljIGxpYnJhcnkgKHNvIHRoYXQgbm8gc2lsbHkgX0RZTkFNSUMgc3ltYm9scworKwkgICAgICAjIGFyZSByZXF1aXJlZCB0byBsaW5rKS4KKysJICAgICAgaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgorKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKysJICAgICAgICAjIEtlZXAgYSBsaXN0IG9mIHByZW9wZW5lZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgdG8gY2hlY2sKKysJICAgICAgICAjIHRoYXQgdGhleSBhcmUgYmVpbmcgdXNlZCBjb3JyZWN0bHkgaW4gdGhlIGxpbmsgcGFzcy4KKysJICAgICAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisrCSAgICAgICAgICBmdW5jX2FwcGVuZCBkbHByZWNvbnZlbmllbmNlbGlicyAiICRkaXIvJG9sZF9saWJyYXJ5IgorKwkgICAgICAjIE90aGVyd2lzZSwgdXNlIHRoZSBkbG5hbWUsIHNvIHRoYXQgbHRfZGxvcGVuIGZpbmRzIGl0LgorKwkgICAgICBlbGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCisrCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGRsbmFtZSIKKysJICAgICAgZWxzZQorKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRsaW5rbGliIgorKwkgICAgICBmaQorKwkgICAgOzsKKysJICBlc2FjCisgCWZpICMgJHBhc3MgPSBkbHByZW9wZW4KKyAKKyAJaWYgdGVzdCAteiAiJGxpYmRpciI7IHRoZW4KK0BAIC01Njg0LDcgKzY1OTMsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAorIAorIAlpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyAmJiB0ZXN0ICIkcGFzcyIgIT0gbGluazsgdGhlbgorLQkgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkbGFkaXIiCisrCSAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGxhZGlyIgorIAkgIGRlcGxpYnM9IiRsaWIgJGRlcGxpYnMiCisgCisgCSAgbGlua2FsbGRlcGxpYnM9bm8KK0BAIC01Njk3LDcgKzY2MDYsOCBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKyAJICAgIGNhc2UgJGRlcGxpYiBpbgorIAkgICAgLUwqKSBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgorLQkgICAgICAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJICAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrCSAgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCisgCQkgOzsKKyAJICAgIGVzYWMKKyAJICAgICMgTmVlZCB0byBsaW5rIGFnYWluc3QgYWxsIGRlcGVuZGVuY3lfbGlicz8KK0BAIC01NzA4LDEyICs2NjE4LDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgICMgb3IvYW5kIGxpbmsgYWdhaW5zdCBzdGF0aWMgbGlicmFyaWVzCisgCSAgICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgorIAkgICAgZmkKKy0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisrCSAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgorIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgorLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisrCSAgICAgICoiICRkZXBsaWIgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGRlcGxpYiIgOzsKKyAJICAgICAgZXNhYworIAkgICAgZmkKKy0JICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKKysJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIKKyAJICBkb25lICMgZm9yIGRlcGxpYgorIAkgIGNvbnRpbnVlCisgCWZpICMgJGxpbmttb2RlID0gcHJvZy4uLgorQEAgLTU3MjgsNyArNjYzOCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgICMgTWFrZSBzdXJlIHRoZSBycGF0aCBjb250YWlucyBvbmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KKyAJICAgICAgY2FzZSAiJHRlbXBfcnBhdGg6IiBpbgorIAkgICAgICAqIiRhYnNkaXI6IiopIDs7CistCSAgICAgICopIHRlbXBfcnBhdGg9IiR0ZW1wX3JwYXRoJGFic2RpcjoiIDs7CisrCSAgICAgICopIGZ1bmNfYXBwZW5kIHRlbXBfcnBhdGggIiRhYnNkaXI6IiA7OworIAkgICAgICBlc2FjCisgCSAgICBmaQorIAorQEAgLTU3NDAsNyArNjY1MCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAqKQorIAkgICAgICBjYXNlICIkY29tcGlsZV9ycGF0aCAiIGluCisgCSAgICAgICoiICRhYnNkaXIgIiopIDs7CistCSAgICAgICopIGNvbXBpbGVfcnBhdGg9IiRjb21waWxlX3JwYXRoICRhYnNkaXIiCisrCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfcnBhdGggIiAkYWJzZGlyIiA7OworIAkgICAgICBlc2FjCisgCSAgICAgIDs7CisgCSAgICBlc2FjCitAQCAtNTc0OSw3ICs2NjU5LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICopCisgCSAgICAgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCisgCSAgICAgICoiICRsaWJkaXIgIiopIDs7CistCSAgICAgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIKKysJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OworIAkgICAgICBlc2FjCisgCSAgICAgIDs7CisgCSAgICBlc2FjCitAQCAtNTc3NCwxMiArNjY4NCwxMiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGNhc2UgJGhvc3QgaW4KKyAJICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqKQorIAkgICAgICAjIE5vIHBvaW50IGluIHJlbGlua2luZyBETExzIGJlY2F1c2UgcGF0aHMgYXJlIG5vdCBlbmNvZGVkCistCSAgICAgIG5vdGluc3RfZGVwbGlicz0iJG5vdGluc3RfZGVwbGlicyAkbGliIgorKwkgICAgICBmdW5jX2FwcGVuZCBub3RpbnN0X2RlcGxpYnMgIiAkbGliIgorIAkgICAgICBuZWVkX3JlbGluaz1ubworIAkgICAgOzsKKyAJICAqKQorIAkgICAgaWYgdGVzdCAiJGluc3RhbGxlZCIgPSBubzsgdGhlbgorLQkgICAgICBub3RpbnN0X2RlcGxpYnM9IiRub3RpbnN0X2RlcGxpYnMgJGxpYiIKKysJICAgICAgZnVuY19hcHBlbmQgbm90aW5zdF9kZXBsaWJzICIgJGxpYiIKKyAJICAgICAgbmVlZF9yZWxpbms9eWVzCisgCSAgICBmaQorIAkgICAgOzsKK0BAIC01ODE0LDcgKzY3MjQsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgKikKKyAJICAgICAgY2FzZSAiJGNvbXBpbGVfcnBhdGggIiBpbgorIAkgICAgICAqIiAkYWJzZGlyICIqKSA7OworLQkgICAgICAqKSBjb21waWxlX3JwYXRoPSIkY29tcGlsZV9ycGF0aCAkYWJzZGlyIgorKwkgICAgICAqKSBmdW5jX2FwcGVuZCBjb21waWxlX3JwYXRoICIgJGFic2RpciIgOzsKKyAJICAgICAgZXNhYworIAkgICAgICA7OworIAkgICAgZXNhYworQEAgLTU4MjMsNyArNjczMyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAqKQorIAkgICAgICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgorIAkgICAgICAqIiAkbGliZGlyICIqKSA7OworLQkgICAgICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiCisrCSAgICAgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKKyAJICAgICAgZXNhYworIAkgICAgICA7OworIAkgICAgZXNhYworQEAgLTU4MzUsNyArNjc0NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBzaGlmdAorIAkgICAgcmVhbG5hbWU9IiQxIgorIAkgICAgc2hpZnQKKy0JICAgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCisrCSAgICBsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKKyAJICAgICMgdXNlIGRsbmFtZSBpZiB3ZSBnb3QgaXQuIGl0J3MgcGVyZmVjdGx5IGdvb2QsIG5vPworIAkgICAgaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KKyAJICAgICAgc29uYW1lPSIkZGxuYW1lIgorQEAgLTU4NDgsNyArNjc1OCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCQl2ZXJzdWZmaXg9Ii0kbWFqb3IiCisgCQk7OworIAkgICAgICBlc2FjCistCSAgICAgIGV2YWwgInNvbmFtZT1cIiRzb25hbWVfc3BlY1wiIgorKwkgICAgICBldmFsIHNvbmFtZT1cIiRzb25hbWVfc3BlY1wiCisgCSAgICBlbHNlCisgCSAgICAgIHNvbmFtZT0iJHJlYWxuYW1lIgorIAkgICAgZmkKK0BAIC01ODc3LDcgKzY3ODcsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgbGlua2xpYj0kbmV3bGliCisgCSAgZmkgIyB0ZXN0IC1uICIkb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMiCisgCistCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG1vZGUiICE9IHJlbGluazsgdGhlbgorKwkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rOyB0aGVuCisgCSAgICBhZGRfc2hsaWJwYXRoPQorIAkgICAgYWRkX2Rpcj0KKyAJICAgIGFkZD0KK0BAIC01OTMzLDcgKzY4NDMsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkJaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KKyAJCSAgY2FzZSAkbGliZGlyIGluCisgCQkgICAgW1xcL10qKQorLQkJICAgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKysJCSAgICAgIGZ1bmNfYXBwZW5kIGFkZF9kaXIgIiAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorIAkJICAgICAgOzsKKyAJCSAgZXNhYworIAkJZmkKK0BAIC01OTU1LDcgKzY4NjUsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgaWYgdGVzdCAtbiAiJGFkZF9zaGxpYnBhdGgiOyB0aGVuCisgCSAgICAgIGNhc2UgOiRjb21waWxlX3NobGlicGF0aDogaW4KKyAJICAgICAgKiI6JGFkZF9zaGxpYnBhdGg6IiopIDs7CistCSAgICAgICopIGNvbXBpbGVfc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkYWRkX3NobGlicGF0aDoiIDs7CisrCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfc2hsaWJwYXRoICIkYWRkX3NobGlicGF0aDoiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIGZpCisgCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgorQEAgLTU5NjksMTMgKzY4NzksMTMgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJCSB0ZXN0ICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgPSB5ZXM7IHRoZW4KKyAJCWNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCisgCQkqIjokbGliZGlyOiIqKSA7OworLQkJKikgZmluYWxpemVfc2hsaWJwYXRoPSIkZmluYWxpemVfc2hsaWJwYXRoJGxpYmRpcjoiIDs7CisrCQkqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9zaGxpYnBhdGggIiRsaWJkaXI6IiA7OworIAkJZXNhYworIAkgICAgICBmaQorIAkgICAgZmkKKyAJICBmaQorIAorLQkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorKwkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KKyAJICAgIGFkZF9zaGxpYnBhdGg9CisgCSAgICBhZGRfZGlyPQorIAkgICAgYWRkPQorQEAgLTU5ODksNyArNjg5OSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgorIAkgICAgICBjYXNlIDokZmluYWxpemVfc2hsaWJwYXRoOiBpbgorIAkgICAgICAqIjokbGliZGlyOiIqKSA7OworLQkgICAgICAqKSBmaW5hbGl6ZV9zaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgkbGliZGlyOiIgOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfc2hsaWJwYXRoICIkbGliZGlyOiIgOzsKKyAJICAgICAgZXNhYworIAkgICAgICBhZGQ9Ii1sJG5hbWUiCisgCSAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9hdXRvbWF0aWMiID0geWVzOyB0aGVuCitAQCAtNjAwMSwxMiArNjkxMSwxMiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgICBmaQorIAkgICAgZWxzZQorIAkgICAgICAjIFdlIGNhbm5vdCBzZWVtIHRvIGhhcmRjb2RlIGl0LCBndWVzcyB3ZSdsbCBmYWtlIGl0LgorLQkgICAgICBhZGRfZGlyPSItTCRsaWJkaXIiCisrCSAgICAgIGFkZF9kaXI9Ii1MJGx0X3N5c3Jvb3QkbGliZGlyIgorIAkgICAgICAjIFRyeSBsb29raW5nIGZpcnN0IGluIHRoZSBsb2NhdGlvbiB3ZSdyZSBiZWluZyBpbnN0YWxsZWQgdG8uCisgCSAgICAgIGlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCisgCQljYXNlICRsaWJkaXIgaW4KKyAJCSAgW1xcL10qKQorLQkJICAgIGFkZF9kaXI9IiRhZGRfZGlyIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCisrCQkgICAgZnVuY19hcHBlbmQgYWRkX2RpciAiIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCisgCQkgICAgOzsKKyAJCWVzYWMKKyAJICAgICAgZmkKK0BAIC02MDgzLDI3ICs2OTkzLDMzIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgICAgICAgdGVtcF94cnBhdGg9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorIAkJICAgY2FzZSAiICR4cnBhdGggIiBpbgorIAkJICAgKiIgJHRlbXBfeHJwYXRoICIqKSA7OworLQkJICAgKikgeHJwYXRoPSIkeHJwYXRoICR0ZW1wX3hycGF0aCI7OworKwkJICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJHRlbXBfeHJwYXRoIjs7CisgCQkgICBlc2FjOzsKKy0JICAgICAgKikgdGVtcF9kZXBsaWJzPSIkdGVtcF9kZXBsaWJzICRsaWJkaXIiOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgdGVtcF9kZXBsaWJzICIgJGxpYmRpciI7OworIAkgICAgICBlc2FjCisgCSAgICBkb25lCisgCSAgICBkZXBlbmRlbmN5X2xpYnM9IiR0ZW1wX2RlcGxpYnMiCisgCSAgZmkKKyAKKy0JICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGFic2RpciIKKysJICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkYWJzZGlyIgorIAkgICMgTGluayBhZ2FpbnN0IHRoaXMgbGlicmFyeQorIAkgIHRlc3QgIiRsaW5rX3N0YXRpYyIgPSBubyAmJiBuZXdkZXBlbmRlbmN5X2xpYnM9IiRhYnNfbGFkaXIvJGxhbmFtZSAkbmV3ZGVwZW5kZW5jeV9saWJzIgorIAkgICMgLi4uIGFuZCBpdHMgZGVwZW5kZW5jeV9saWJzCisgCSAgdG1wX2xpYnM9CisgCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbworIAkgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCistCSAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgorKwkgICAgY2FzZSAkZGVwbGliIGluCisrICAgICAgICAgICAgICAtTCopIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCisrICAgICAgICAgICAgICAgICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0Ijs7CisrICAgICAgICAgICAgICAqKSBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIgOzsKKysgICAgICAgICAgICBlc2FjCisrCSAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgorIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgorLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisrCSAgICAgICoiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQgIiopCisrICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIgOzsKKyAJICAgICAgZXNhYworIAkgICAgZmkKKy0JICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKKysJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAJICBkb25lCisgCisgCSAgaWYgdGVzdCAiJGxpbmtfYWxsX2RlcGxpYnMiICE9IG5vOyB0aGVuCitAQCAtNjExMyw4ICs3MDI5LDEwIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgIGNhc2UgJGRlcGxpYiBpbgorIAkgICAgICAtTCopIHBhdGg9IiRkZXBsaWIiIDs7CisgCSAgICAgICoubGEpCisrCSAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCisrCSAgICAgICAgZGVwbGliPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKyAJICAgICAgICBmdW5jX2Rpcm5hbWUgIiRkZXBsaWIiICIiICIuIgorLQkJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKysJCWRpcj0kZnVuY19kaXJuYW1lX3Jlc3VsdAorIAkJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCisgCQljYXNlICRkaXIgaW4KKyAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzZGlyPSIkZGlyIiA7OworQEAgLTYxMzAsNyArNzA0OCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCQljYXNlICRob3N0IGluCisgCQkqLSotZGFyd2luKikKKyAJCSAgZGVwZGVwbD0KKy0JCSAgZGVwbGlicmFyeV9uYW1lcz1gJHtTRUR9IC1uIC1lICdzL15saWJyYXJ5X25hbWVzPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKKysJCSAgZXZhbCBkZXBsaWJyYXJ5X25hbWVzPWAke1NFRH0gLW4gLWUgJ3MvXmxpYnJhcnlfbmFtZXM9XCguKlwpJC9cMS9wJyAkZGVwbGliYAorIAkJICBpZiB0ZXN0IC1uICIkZGVwbGlicmFyeV9uYW1lcyIgOyB0aGVuCisgCQkgICAgZm9yIHRtcCBpbiAkZGVwbGlicmFyeV9uYW1lcyA7IGRvCisgCQkgICAgICBkZXBkZXBsPSR0bXAKK0BAIC02MTQxLDggKzcwNTksOCBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkZGFyd2luX2luc3RhbGxfbmFtZSI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhcndpbl9pbnN0YWxsX25hbWU9YCR7T1RPT0w2NH0gLUwgJGRlcGRlcGwgIHwgYXdrICd7aWYgKE5SID09IDIpIHtwcmludCAkMTtleGl0fX0nYAorICAgICAgICAgICAgICAgICAgICAgICBmaQorLQkJICAgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAke3dsfS1keWxpYl9maWxlICR7d2x9JHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgorLQkJICAgICAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzIC1keWxpYl9maWxlICR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKKysJCSAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHt3bH0tZHlsaWJfZmlsZSAke3dsfSR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKKysJCSAgICAgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiIC1keWxpYl9maWxlICR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKKyAJCSAgICAgIHBhdGg9CisgCQkgICAgZmkKKyAJCSAgZmkKK0BAIC02MTUyLDcgKzcwNzAsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkJICA7OworIAkJZXNhYworIAkJZWxzZQorLQkJICBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKKysJCSAgZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKKyAJCSAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAorIAkJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorIAkJICB0ZXN0ICIkYWJzZGlyIiAhPSAiJGxpYmRpciIgJiYgXAorQEAgLTYxOTIsNyArNzExMCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgZm9yIGRpciBpbiAkbmV3bGliX3NlYXJjaF9wYXRoOyBkbworIAkgICAgY2FzZSAiJGxpYl9zZWFyY2hfcGF0aCAiIGluCisgCSAgICAqIiAkZGlyICIqKSA7OworLQkgICAgKikgbGliX3NlYXJjaF9wYXRoPSIkbGliX3NlYXJjaF9wYXRoICRkaXIiIDs7CisrCSAgICAqKSBmdW5jX2FwcGVuZCBsaWJfc2VhcmNoX3BhdGggIiAkZGlyIiA7OworIAkgICAgZXNhYworIAkgIGRvbmUKKyAJICBuZXdsaWJfc2VhcmNoX3BhdGg9CitAQCAtNjIwNSw3ICs3MTIzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJZmkKKyAJZm9yIHZhciBpbiAkdmFycyBkZXBlbmRlbmN5X2xpYnM7IGRvCisgCSAgIyBBZGQgbGlicmFyaWVzIHRvICR2YXIgaW4gcmV2ZXJzZSBvcmRlcgorLQkgIGV2YWwgdG1wX2xpYnM9XCQkdmFyCisrCSAgZXZhbCB0bXBfbGlicz1cIlwkJHZhclwiCisgCSAgbmV3X2xpYnM9CisgCSAgZm9yIGRlcGxpYiBpbiAkdG1wX2xpYnM7IGRvCisgCSAgICAjIEZJWE1FOiBQZWRhbnRpY2FsbHksIHRoaXMgaXMgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLCBzbworQEAgLTYyNTAsMTMgKzcxNjgsMTMgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIC1MKikKKyAJICAgICAgY2FzZSAiICR0bXBfbGlicyAiIGluCisgCSAgICAgICoiICRkZXBsaWIgIiopIDs7CistCSAgICAgICopIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIgOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIiA7OworIAkgICAgICBlc2FjCisgCSAgICAgIDs7CistCSAgICAqKSB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiIDs7CisrCSAgICAqKSBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiIDs7CisgCSAgICBlc2FjCisgCSAgZG9uZQorLQkgIGV2YWwgJHZhcj1cJHRtcF9saWJzCisrCSAgZXZhbCAkdmFyPVwiJHRtcF9saWJzXCIKKyAJZG9uZSAjIGZvciB2YXIKKyAgICAgICBmaQorICAgICAgICMgTGFzdCBzdGVwOiByZW1vdmUgcnVudGltZSBsaWJzIGZyb20gZGVwZW5kZW5jeV9saWJzCitAQCAtNjI2OSw3ICs3MTg3LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICA7OworIAllc2FjCisgCWlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KKy0JICB0bXBfbGlicz0iJHRtcF9saWJzICRpIgorKwkgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGkiCisgCWZpCisgICAgICAgZG9uZQorICAgICAgIGRlcGVuZGVuY3lfbGlicz0kdG1wX2xpYnMKK0BAIC02MzEwLDcgKzcyMjgsNyBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgICMgTm93IHNldCB0aGUgdmFyaWFibGVzIGZvciBidWlsZGluZyBvbGQgbGlicmFyaWVzLgorICAgICAgIGJ1aWxkX2xpYnRvb2xfbGlicz1ubworICAgICAgIG9sZGxpYnM9IiRvdXRwdXQiCistICAgICAgb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMiCisrICAgICAgZnVuY19hcHBlbmQgb2JqcyAiJG9sZF9kZXBsaWJzIgorICAgICAgIDs7CisgCisgICAgIGxpYikKK0BAIC02MzE5LDggKzcyMzcsOCBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgIGxpYiopCisgCWZ1bmNfc3RyaXBuYW1lICdsaWInICcubGEnICIkb3V0cHV0bmFtZSIKKyAJbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CistCWV2YWwgInNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIiIKKy0JZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKKysJZXZhbCBzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIKKysJZXZhbCBsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiCisgCTs7CisgICAgICAgKikKKyAJdGVzdCAiJG1vZHVsZSIgPSBubyAmJiBcCitAQCAtNjMzMCw4ICs3MjQ4LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAjIEFkZCB0aGUgImxpYiIgcHJlZml4IGZvciBtb2R1bGVzIGlmIHJlcXVpcmVkCisgCSAgZnVuY19zdHJpcG5hbWUgJycgJy5sYScgIiRvdXRwdXRuYW1lIgorIAkgIG5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorLQkgIGV2YWwgInNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIiIKKy0JICBldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgorKwkgIGV2YWwgc2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiCisrCSAgZXZhbCBsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiCisgCWVsc2UKKyAJICBmdW5jX3N0cmlwbmFtZSAnJyAnLmxhJyAiJG91dHB1dG5hbWUiCisgCSAgbGlibmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CitAQCAtNjM0Niw3ICs3MjY0LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBlY2hvCisgCSAgJEVDSE8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBzaGFyZWQgbGlicmFyeSAkb3V0cHV0IGFnYWluc3QgdGhlIG5vbi1saWJ0b29sIgorIAkgICRFQ0hPICIqKiogb2JqZWN0cyAkb2JqcyBpcyBub3QgcG9ydGFibGUhIgorLQkgIGxpYm9ianM9IiRsaWJvYmpzICRvYmpzIgorKwkgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkb2JqcyIKKyAJZmkKKyAgICAgICBmaQorIAorQEAgLTY1NDQsNyArNzQ2Miw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgZG9uZQorIAorIAkgICMgTWFrZSBleGVjdXRhYmxlcyBkZXBlbmQgb24gb3VyIGN1cnJlbnQgdmVyc2lvbi4KKy0JICB2ZXJzdHJpbmc9IiR2ZXJzdHJpbmc6JHtjdXJyZW50fS4wIgorKwkgIGZ1bmNfYXBwZW5kIHZlcnN0cmluZyAiOiR7Y3VycmVudH0uMCIKKyAJICA7OworIAorIAlxbngpCitAQCAtNjYxMiwxMCArNzUzMCwxMCBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgIGZpCisgCisgICAgICAgZnVuY19nZW5lcmF0ZV9kbHN5bXMgIiRsaWJuYW1lIiAiJGxpYm5hbWUiICJ5ZXMiCistICAgICAgbGlib2Jqcz0iJGxpYm9ianMgJHN5bWZpbGVvYmoiCisrICAgICAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRzeW1maWxlb2JqIgorICAgICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CisgCistICAgICAgaWYgdGVzdCAiJG1vZGUiICE9IHJlbGluazsgdGhlbgorKyAgICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rOyB0aGVuCisgCSMgUmVtb3ZlIG91ciBvdXRwdXRzLCBidXQgZG9uJ3QgcmVtb3ZlIG9iamVjdCBmaWxlcyBzaW5jZSB0aGV5CisgCSMgbWF5IGhhdmUgYmVlbiBjcmVhdGVkIHdoZW4gY29tcGlsaW5nIFBJQyBvYmplY3RzLgorIAlyZW1vdmVsaXN0PQorQEAgLTY2MzEsNyArNzU0OSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCQkgICBjb250aW51ZQorIAkJIGZpCisgCSAgICAgICBmaQorLQkgICAgICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJHAiCisrCSAgICAgICBmdW5jX2FwcGVuZCByZW1vdmVsaXN0ICIgJHAiCisgCSAgICAgICA7OworIAkgICAgKikgOzsKKyAJICBlc2FjCitAQCAtNjY0Miw3ICs3NTYwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAKKyAgICAgICAjIE5vdyBzZXQgdGhlIHZhcmlhYmxlcyBmb3IgYnVpbGRpbmcgb2xkIGxpYnJhcmllcy4KKyAgICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzICYmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IGNvbnZlbmllbmNlIDsgdGhlbgorLQlvbGRsaWJzPSIkb2xkbGlicyAkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgorKwlmdW5jX2FwcGVuZCBvbGRsaWJzICIgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKKyAKKyAJIyBUcmFuc2Zvcm0gLmxvIGZpbGVzIHRvIC5vIGZpbGVzLgorIAlvbGRvYmpzPSIkb2JqcyAiYCRFQ0hPICIkbGlib2JqcyIgfCAkU1AyTkwgfCAkU0VEICIvXC4ke2xpYmV4dH0kL2Q7ICRsbzJvIiB8ICROTDJTUGAKK0BAIC02NjU5LDEwICs3NTc3LDExIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSMgSWYgdGhlIHVzZXIgc3BlY2lmaWVkIGFueSBycGF0aCBmbGFncywgdGhlbiBhZGQgdGhlbS4KKyAJdGVtcF94cnBhdGg9CisgCWZvciBsaWJkaXIgaW4gJHhycGF0aDsgZG8KKy0JICB0ZW1wX3hycGF0aD0iJHRlbXBfeHJwYXRoIC1SJGxpYmRpciIKKysJICBmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKKysJICBmdW5jX2FwcGVuZCB0ZW1wX3hycGF0aCAiIC1SJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKKyAJICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgorIAkgICoiICRsaWJkaXIgIiopIDs7CistCSAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIiA7OworKwkgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKKyAJICBlc2FjCisgCWRvbmUKKyAJaWYgdGVzdCAiJGhhcmRjb2RlX2ludG9fbGlicyIgIT0geWVzIHx8IHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KK0BAIC02Njc2LDcgKzc1OTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgIGZvciBsaWIgaW4gJG9sZF9kbGZpbGVzOyBkbworIAljYXNlICIgJGRscHJlZmlsZXMgJGRsZmlsZXMgIiBpbgorIAkqIiAkbGliICIqKSA7OworLQkqKSBkbGZpbGVzPSIkZGxmaWxlcyAkbGliIiA7OworKwkqKSBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGxpYiIgOzsKKyAJZXNhYworICAgICAgIGRvbmUKKyAKK0BAIC02Njg2LDcgKzc2MDUsNyBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgIGZvciBsaWIgaW4gJG9sZF9kbHByZWZpbGVzOyBkbworIAljYXNlICIkZGxwcmVmaWxlcyAiIGluCisgCSoiICRsaWIgIiopIDs7CistCSopIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRsaWIiIDs7CisrCSopIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkbGliIiA7OworIAllc2FjCisgICAgICAgZG9uZQorIAorQEAgLTY2OTgsNyArNzYxNyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICA7OworIAkgICotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKKyAJICAgICMgUmhhcHNvZHkgQyBsaWJyYXJ5IGlzIGluIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCistCSAgICBkZXBsaWJzPSIkZGVwbGlicyBTeXN0ZW0ubHRmcmFtZXdvcmsiCisrCSAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgU3lzdGVtLmx0ZnJhbWV3b3JrIgorIAkgICAgOzsKKyAJICAqLSotbmV0YnNkKikKKyAJICAgICMgRG9uJ3QgbGluayB3aXRoIGxpYmMgdW50aWwgdGhlIGEub3V0IGxkLnNvIGlzIGZpeGVkLgorQEAgLTY3MTUsNyArNzYzNCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgKikKKyAJICAgICMgQWRkIGxpYmMgdG8gZGVwbGlicyBvbiBhbGwgb3RoZXIgc3lzdGVtcyBpZiBuZWNlc3NhcnkuCisgCSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9uZWVkX2xjIiA9ICJ5ZXMiOyB0aGVuCistCSAgICAgIGRlcGxpYnM9IiRkZXBsaWJzIC1sYyIKKysJICAgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIC1sYyIKKyAJICAgIGZpCisgCSAgICA7OworIAkgIGVzYWMKK0BAIC02NzY0LDE4ICs3NjgzLDE4IEBAIEVPRgorIAkJaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgorIAkJICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KKyAJCSAgKiIgJGkgIiopCistCQkgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisrCQkgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgorIAkJICAgIGk9IiIKKyAJCSAgICA7OworIAkJICBlc2FjCisgCQlmaQorIAkJaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgorLQkJICBldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgorLQkJICBldmFsICJkZXBsaWJfbWF0Y2hlcz1cIiRsaWJyYXJ5X25hbWVzX3NwZWNcIiIKKysJCSAgbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCisrCQkgIGRlcGxpYl9tYXRjaGVzPWBldmFsICJcXCRFQ0hPIFwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiImAKKyAJCSAgc2V0IGR1bW15ICRkZXBsaWJfbWF0Y2hlczsgc2hpZnQKKyAJCSAgZGVwbGliX21hdGNoPSQxCisgCQkgIGlmIHRlc3QgYGV4cHIgIiRsZGRfb3V0cHV0IiA6ICIuKiRkZXBsaWJfbWF0Y2giYCAtbmUgMCA7IHRoZW4KKy0JCSAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKysJCSAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCisgCQkgIGVsc2UKKyAJCSAgICBkcm9wcGVkZGVwcz15ZXMKKyAJCSAgICBlY2hvCitAQCAtNjc4OSw3ICs3NzA4LDcgQEAgRU9GCisgCQlmaQorIAkJOzsKKyAJICAgICAgKikKKy0JCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorKwkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgorIAkJOzsKKyAJICAgICAgZXNhYworIAkgICAgZG9uZQorQEAgLTY4MDcsMTggKzc3MjYsMTggQEAgRU9GCisgCQkgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KKyAJCSAgICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KKyAJCSAgICAqIiAkaSAiKikKKy0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgorIAkJICAgICAgaT0iIgorIAkJICAgICAgOzsKKyAJCSAgICBlc2FjCisgCQkgIGZpCisgCQkgIGlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KKy0JCSAgICBldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgorLQkJICAgIGV2YWwgImRlcGxpYl9tYXRjaGVzPVwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiIgorKwkJICAgIGxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAorKwkJICAgIGRlcGxpYl9tYXRjaGVzPWBldmFsICJcXCRFQ0hPIFwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiImAKKyAJCSAgICBzZXQgZHVtbXkgJGRlcGxpYl9tYXRjaGVzOyBzaGlmdAorIAkJICAgIGRlcGxpYl9tYXRjaD0kMQorIAkJICAgIGlmIHRlc3QgYGV4cHIgIiRsZGRfb3V0cHV0IiA6ICIuKiRkZXBsaWJfbWF0Y2giYCAtbmUgMCA7IHRoZW4KKy0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgorIAkJICAgIGVsc2UKKyAJCSAgICAgIGRyb3BwZWRkZXBzPXllcworIAkJICAgICAgZWNobworQEAgLTY4NDAsNyArNzc1OSw3IEBAIEVPRgorIAkJZmkKKyAJCTs7CisgCSAgICAgICopCistCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKysJCWZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKKyAJCTs7CisgCSAgICAgIGVzYWMKKyAJICAgIGRvbmUKK0BAIC02ODU3LDE1ICs3Nzc2LDI3IEBAIEVPRgorIAkgICAgICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCisgCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KKyAJCSoiICRhX2RlcGxpYiAiKikKKy0JCSAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorKwkJICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgorIAkJICBhX2RlcGxpYj0iIgorIAkJICA7OworIAkJZXNhYworIAkgICAgICBmaQorIAkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgorLQkJZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKKysJCWxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAorKwkJaWYgdGVzdCAtbiAiJGZpbGVfbWFnaWNfZ2xvYiI7IHRoZW4KKysJCSAgbGlibmFtZWdsb2I9YGZ1bmNfZWNob19hbGwgIiRsaWJuYW1lIiB8ICRTRUQgLWUgJGZpbGVfbWFnaWNfZ2xvYmAKKysJCWVsc2UKKysJCSAgbGlibmFtZWdsb2I9JGxpYm5hbWUKKysJCWZpCisrCQl0ZXN0ICIkd2FudF9ub2Nhc2VnbG9iIiA9IHllcyAmJiBub2Nhc2VnbG9iPWBzaG9wdCAtcCBub2Nhc2VnbG9iYAorIAkJZm9yIGkgaW4gJGxpYl9zZWFyY2hfcGF0aCAkc3lzX2xpYl9zZWFyY2hfcGF0aCAkc2hsaWJfc2VhcmNoX3BhdGg7IGRvCistCQkgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZVsuLV0qIDI+L2Rldi9udWxsYAorKwkJICBpZiB0ZXN0ICIkd2FudF9ub2Nhc2VnbG9iIiA9IHllczsgdGhlbgorKwkJICAgIHNob3B0IC1zIG5vY2FzZWdsb2IKKysJCSAgICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVnbG9iWy4tXSogMj4vZGV2L251bGxgCisrCQkgICAgJG5vY2FzZWdsb2IKKysJCSAgZWxzZQorKwkJICAgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZWdsb2JbLi1dKiAyPi9kZXYvbnVsbGAKKysJCSAgZmkKKyAJCSAgZm9yIHBvdGVudF9saWIgaW4gJHBvdGVudGlhbF9saWJzOyBkbworIAkJICAgICAgIyBGb2xsb3cgc29mdCBsaW5rcy4KKyAJCSAgICAgIGlmIGxzIC1sTGQgIiRwb3RlbnRfbGliIiAyPi9kZXYvbnVsbCB8CitAQCAtNjg4NSwxMCArNzgxNiwxMCBAQCBFT0YKKyAJCQkqKSBwb3RsaWI9YCRFQ0hPICIkcG90bGliIiB8ICRTRUQgJ3MsW14vXSokLCwnYCIkcG90bGlibGluayI7OworIAkJCWVzYWMKKyAJCSAgICAgIGRvbmUKKy0JCSAgICAgIGlmIGV2YWwgIiRmaWxlX21hZ2ljX2NtZCBcIlwkcG90bGliXCIiIDI+L2Rldi9udWxsIHwKKysJCSAgICAgIGlmIGV2YWwgJGZpbGVfbWFnaWNfY21kIFwiXCRwb3RsaWJcIiAyPi9kZXYvbnVsbCB8CisgCQkJICRTRUQgLWUgMTBxIHwKKyAJCQkgJEVHUkVQICIkZmlsZV9tYWdpY19yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KKy0JCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisrCQkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKKyAJCQlhX2RlcGxpYj0iIgorIAkJCWJyZWFrIDIKKyAJCSAgICAgIGZpCitAQCAtNjkxMyw3ICs3ODQ0LDcgQEAgRU9GCisgCSAgICAgIDs7CisgCSAgICAqKQorIAkgICAgICAjIEFkZCBhIC1MIGFyZ3VtZW50LgorLQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCisgCSAgICAgIDs7CisgCSAgICBlc2FjCisgCSAgZG9uZSAjIEdvbmUgdGhyb3VnaCBhbGwgZGVwbGlicy4KK0BAIC02OTI5LDIwICs3ODYwLDIwIEBAIEVPRgorIAkgICAgICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCisgCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KKyAJCSoiICRhX2RlcGxpYiAiKikKKy0JCSAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorKwkJICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgorIAkJICBhX2RlcGxpYj0iIgorIAkJICA7OworIAkJZXNhYworIAkgICAgICBmaQorIAkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgorLQkJZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKKysJCWxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAorIAkJZm9yIGkgaW4gJGxpYl9zZWFyY2hfcGF0aCAkc3lzX2xpYl9zZWFyY2hfcGF0aCAkc2hsaWJfc2VhcmNoX3BhdGg7IGRvCisgCQkgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZVsuLV0qIDI+L2Rldi9udWxsYAorIAkJICBmb3IgcG90ZW50X2xpYiBpbiAkcG90ZW50aWFsX2xpYnM7IGRvCisgCQkgICAgcG90bGliPSIkcG90ZW50X2xpYiIgIyBzZWUgc3ltbGluay1jaGVjayBhYm92ZSBpbiBmaWxlX21hZ2ljIHRlc3QKKyAJCSAgICBpZiBldmFsICJcJEVDSE8gXCIkcG90ZW50X2xpYlwiIiAyPi9kZXYvbnVsbCB8ICRTRUQgMTBxIHwgXAorIAkJICAgICAgICRFR1JFUCAiJG1hdGNoX3BhdHRlcm5fcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCistCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisrCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgorIAkJICAgICAgYV9kZXBsaWI9IiIKKyAJCSAgICAgIGJyZWFrIDIKKyAJCSAgICBmaQorQEAgLTY5NjcsNyArNzg5OCw3IEBAIEVPRgorIAkgICAgICA7OworIAkgICAgKikKKyAJICAgICAgIyBBZGQgYSAtTCBhcmd1bWVudC4KKy0JICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgorIAkgICAgICA7OworIAkgICAgZXNhYworIAkgIGRvbmUgIyBHb25lIHRocm91Z2ggYWxsIGRlcGxpYnMuCitAQCAtNzA3MSw3ICs4MDAyLDcgQEAgRU9GCisgCSopCisgCSAgY2FzZSAiICRkZXBsaWJzICIgaW4KKyAJICAqIiAtTCRwYXRoLyRvYmpkaXIgIiopCistCSAgICBuZXdfbGlicz0iJG5ld19saWJzIC1MJHBhdGgvJG9iamRpciIgOzsKKysJICAgIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgLUwkcGF0aC8kb2JqZGlyIiA7OworIAkgIGVzYWMKKyAJICA7OworIAllc2FjCitAQCAtNzA4MSwxMCArODAxMiwxMCBAQCBFT0YKKyAJLUwqKQorIAkgIGNhc2UgIiAkbmV3X2xpYnMgIiBpbgorIAkgICoiICRkZXBsaWIgIiopIDs7CistCSAgKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OworKwkgICopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKKyAJICBlc2FjCisgCSAgOzsKKy0JKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OworKwkqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7CisgCWVzYWMKKyAgICAgICBkb25lCisgICAgICAgZGVwbGlicz0iJG5ld19saWJzIgorQEAgLTcxMDEsMTAgKzgwMzIsMTIgQEAgRU9GCisgCSAgaGFyZGNvZGVfbGliZGlycz0KKyAJICBkZXBfcnBhdGg9CisgCSAgcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCIKKy0JICB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKKysJICB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBycGF0aD0iJGNvbXBpbGVfcnBhdGgkcnBhdGgiCisgCSAgZm9yIGxpYmRpciBpbiAkcnBhdGg7IGRvCisgCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KKyAJICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCisrCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKKysJCWxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0CisgCQlpZiB0ZXN0IC16ICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KKyAJCSAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKKyAJCWVsc2UKK0BAIC03MTEzLDE4ICs4MDQ2LDE4IEBAIEVPRgorIAkJICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCisgCQkgICAgOzsKKyAJCSAgKikKKy0JCSAgICBoYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKysJCSAgICBmdW5jX2FwcGVuZCBoYXJkY29kZV9saWJkaXJzICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCisgCQkgICAgOzsKKyAJCSAgZXNhYworIAkJZmkKKyAJICAgICAgZWxzZQorLQkJZXZhbCAiZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCistCQlkZXBfcnBhdGg9IiRkZXBfcnBhdGggJGZsYWciCisrCQlldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisrCQlmdW5jX2FwcGVuZCBkZXBfcnBhdGggIiAkZmxhZyIKKyAJICAgICAgZmkKKyAJICAgIGVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorIAkgICAgICBjYXNlICIkcGVybV9ycGF0aCAiIGluCisgCSAgICAgICoiICRsaWJkaXIgIiopIDs7CistCSAgICAgICopIHBlcm1fcnBhdGg9IiRwZXJtX3JwYXRoICRsaWJkaXIiIDs7CisrCSAgICAgICopIGZ1bmNfYXBwZWQgcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIGZpCisgCSAgZG9uZQorQEAgLTcxMzMsNDAgKzgwNjYsMzggQEAgRU9GCisgCSAgICAgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCisgCSAgICBsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgorIAkgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQiOyB0aGVuCistCSAgICAgIGV2YWwgImRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkXCIiCisrCSAgICAgIGV2YWwgZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRcIgorIAkgICAgZWxzZQorLQkgICAgICBldmFsICJkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgorKwkgICAgICBldmFsIGRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKyAJICAgIGZpCisgCSAgZmkKKyAJICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiICYmIHRlc3QgLW4gIiRwZXJtX3JwYXRoIjsgdGhlbgorIAkgICAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KKyAJICAgIHJwYXRoPQorIAkgICAgZm9yIGRpciBpbiAkcGVybV9ycGF0aDsgZG8KKy0JICAgICAgcnBhdGg9IiRycGF0aCRkaXI6IgorKwkgICAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCisgCSAgICBkb25lCistCSAgICBldmFsICRydW5wYXRoX3Zhcj1cJHJwYXRoXCQkcnVucGF0aF92YXIKKy0JICAgIGV4cG9ydCAkcnVucGF0aF92YXIKKysJICAgIGV2YWwgIiRydW5wYXRoX3Zhcj0nJHJwYXRoXCQkcnVucGF0aF92YXInOyBleHBvcnQgJHJ1bnBhdGhfdmFyIgorIAkgIGZpCisgCSAgdGVzdCAtbiAiJGRlcF9ycGF0aCIgJiYgZGVwbGlicz0iJGRlcF9ycGF0aCAkZGVwbGlicyIKKyAJZmkKKyAKKyAJc2hsaWJwYXRoPSIkZmluYWxpemVfc2hsaWJwYXRoIgorLQl0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rICYmIHNobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJHNobGlicGF0aCIKKysJdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbmsgJiYgc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkc2hsaWJwYXRoIgorIAlpZiB0ZXN0IC1uICIkc2hsaWJwYXRoIjsgdGhlbgorLQkgIGV2YWwgJHNobGlicGF0aF92YXI9XCRzaGxpYnBhdGhcJCRzaGxpYnBhdGhfdmFyCistCSAgZXhwb3J0ICRzaGxpYnBhdGhfdmFyCisrCSAgZXZhbCAiJHNobGlicGF0aF92YXI9JyRzaGxpYnBhdGhcJCRzaGxpYnBhdGhfdmFyJzsgZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgorIAlmaQorIAorIAkjIEdldCB0aGUgcmVhbCBhbmQgbGluayBuYW1lcyBvZiB0aGUgbGlicmFyeS4KKy0JZXZhbCAic2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiIgorLQlldmFsICJsaWJyYXJ5X25hbWVzPVwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiIgorKwlldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgorKwlldmFsIGxpYnJhcnlfbmFtZXM9XCIkbGlicmFyeV9uYW1lc19zcGVjXCIKKyAJc2V0IGR1bW15ICRsaWJyYXJ5X25hbWVzCisgCXNoaWZ0CisgCXJlYWxuYW1lPSIkMSIKKyAJc2hpZnQKKyAKKyAJaWYgdGVzdCAtbiAiJHNvbmFtZV9zcGVjIjsgdGhlbgorLQkgIGV2YWwgInNvbmFtZT1cIiRzb25hbWVfc3BlY1wiIgorKwkgIGV2YWwgc29uYW1lPVwiJHNvbmFtZV9zcGVjXCIKKyAJZWxzZQorIAkgIHNvbmFtZT0iJHJlYWxuYW1lIgorIAlmaQorQEAgLTcxNzgsNyArODEwOSw3IEBAIEVPRgorIAlsaW5rbmFtZXM9CisgCWZvciBsaW5rCisgCWRvCistCSAgbGlua25hbWVzPSIkbGlua25hbWVzICRsaW5rIgorKwkgIGZ1bmNfYXBwZW5kIGxpbmtuYW1lcyAiICRsaW5rIgorIAlkb25lCisgCisgCSMgVXNlIHN0YW5kYXJkIG9iamVjdHMgaWYgdGhleSBhcmUgcGljCitAQCAtNzE4OSw3ICs4MTIwLDcgQEAgRU9GCisgCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KKyAJICAkb3B0X2RyeV9ydW4gfHwgY3AgIiRleHBvcnRfc3ltYm9scyIgIiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnVleHAiCisgCSAgZXhwb3J0X3N5bWJvbHM9IiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnVleHAiCistCSAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMiCisrCSAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMiCisgCWZpCisgCisgCW9yaWdfZXhwb3J0X3N5bWJvbHM9CitAQCAtNzIyMCwxMyArODE1MSw0NSBAQCBFT0YKKyAJICAgICRvcHRfZHJ5X3J1biB8fCAkUk0gJGV4cG9ydF9zeW1ib2xzCisgCSAgICBjbWRzPSRleHBvcnRfc3ltYm9sc19jbWRzCisgCSAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKKy0JICAgIGZvciBjbWQgaW4gJGNtZHM7IGRvCisrCSAgICBmb3IgY21kMSBpbiAkY21kczsgZG8KKyAJICAgICAgSUZTPSIkc2F2ZV9pZnMiCistCSAgICAgIGV2YWwgImNtZD1cIiRjbWRcIiIKKy0JICAgICAgZnVuY19sZW4gIiAkY21kIgorLQkgICAgICBsZW49JGZ1bmNfbGVuX3Jlc3VsdAorLQkgICAgICBpZiB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KKysJICAgICAgIyBUYWtlIHRoZSBub3JtYWwgYnJhbmNoIGlmIHRoZSBubV9maWxlX2xpc3Rfc3BlYyBicmFuY2gKKysJICAgICAgIyBkb2Vzbid0IHdvcmsgb3IgaWYgdG9vbCBjb252ZXJzaW9uIGlzIG5vdCBuZWVkZWQuCisrCSAgICAgIGNhc2UgJG5tX2ZpbGVfbGlzdF9zcGVjfiR0b190b29sX2ZpbGVfY21kIGluCisrCQkqfmZ1bmNfY29udmVydF9maWxlX25vb3AgfCAqfmZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyIHwgfiopCisrCQkgIHRyeV9ub3JtYWxfYnJhbmNoPXllcworKwkJICBldmFsIGNtZD1cIiRjbWQxXCIKKysJCSAgZnVuY19sZW4gIiAkY21kIgorKwkJICBsZW49JGZ1bmNfbGVuX3Jlc3VsdAorKwkJICA7OworKwkJKikKKysJCSAgdHJ5X25vcm1hbF9icmFuY2g9bm8KKysJCSAgOzsKKysJICAgICAgZXNhYworKwkgICAgICBpZiB0ZXN0ICIkdHJ5X25vcm1hbF9icmFuY2giID0geWVzIFwKKysJCSAmJiB7IHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiBcCisrCQkgICAgICB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgfQorKwkgICAgICB0aGVuCisrCQlmdW5jX3Nob3dfZXZhbCAiJGNtZCIgJ2V4aXQgJD8nCisrCQlza2lwcGVkX2V4cG9ydD1mYWxzZQorKwkgICAgICBlbGlmIHRlc3QgLW4gIiRubV9maWxlX2xpc3Rfc3BlYyI7IHRoZW4KKysJCWZ1bmNfYmFzZW5hbWUgIiRvdXRwdXQiCisrCQlvdXRwdXRfbGE9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CisrCQlzYXZlX2xpYm9ianM9JGxpYm9ianMKKysJCXNhdmVfb3V0cHV0PSRvdXRwdXQKKysJCW91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5ubQorKwkJZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisrCQlsaWJvYmpzPSRubV9maWxlX2xpc3Rfc3BlYyRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKKysJCWZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKKysJCWZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgJE5NIGlucHV0IGZpbGUgbGlzdDogJG91dHB1dCIKKysJCWZvciBvYmogaW4gJHNhdmVfbGlib2JqczsgZG8KKysJCSAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisrCQkgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgorKwkJZG9uZSA+ICIkb3V0cHV0IgorKwkJZXZhbCBjbWQ9XCIkY21kMVwiCisgCQlmdW5jX3Nob3dfZXZhbCAiJGNtZCIgJ2V4aXQgJD8nCisrCQlvdXRwdXQ9JHNhdmVfb3V0cHV0CisrCQlsaWJvYmpzPSRzYXZlX2xpYm9ianMKKyAJCXNraXBwZWRfZXhwb3J0PWZhbHNlCisgCSAgICAgIGVsc2UKKyAJCSMgVGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBleGVjdXRlIGluIG9uZSBzdGVwLgorQEAgLTcyNDgsNyArODIxMSw3IEBAIEVPRgorIAlpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCisgCSAgdG1wX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCisgCSAgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiICYmIHRtcF9leHBvcnRfc3ltYm9scz0iJG9yaWdfZXhwb3J0X3N5bWJvbHMiCistCSAgJG9wdF9kcnlfcnVuIHx8ICRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyIKKysJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIicKKyAJZmkKKyAKKyAJaWYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJiB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyI7IHRoZW4KK0BAIC03MjYwLDcgKzgyMjMsNyBAQCBFT0YKKyAJICAjIGdsb2JhbCB2YXJpYWJsZXMuIGpvaW4oMSkgd291bGQgYmUgbmljZSBoZXJlLCBidXQgdW5mb3J0dW5hdGVseQorIAkgICMgaXNuJ3QgYSBibGVzc2VkIHRvb2wuCisgCSAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWUgJy9bICxdREFUQS8hZDtzLFwoLipcKVwoWyBcLF0uKlwpLHN8XlwxJHxcMVwyfCwnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyCistCSAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgorKwkgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKKyAJICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYKKyAJICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgPCAkb3JpZ19leHBvcnRfc3ltYm9scyA+ICRleHBvcnRfc3ltYm9scworIAlmaQorQEAgLTcyNzAsNyArODIzMyw3IEBAIEVPRgorIAkgIGNhc2UgIiAkY29udmVuaWVuY2UgIiBpbgorIAkgICoiICR0ZXN0X2RlcGxpYiAiKikgOzsKKyAJICAqKQorLQkgICAgdG1wX2RlcGxpYnM9IiR0bXBfZGVwbGlicyAkdGVzdF9kZXBsaWIiCisrCSAgICBmdW5jX2FwcGVuZCB0bXBfZGVwbGlicyAiICR0ZXN0X2RlcGxpYiIKKyAJICAgIDs7CisgCSAgZXNhYworIAlkb25lCitAQCAtNzI4Niw0MyArODI0OSw0MyBAQCBFT0YKKyAJICBmaQorIAkgIGlmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KKyAJICAgIHNhdmVfbGlib2Jqcz0kbGlib2JqcworLQkgICAgZXZhbCAibGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIiIKKysJICAgIGV2YWwgbGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgorIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KKyAJICBlbHNlCisgCSAgICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgorLQkgICAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisrCSAgICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgorIAorIAkgICAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGNvbnZlbmllbmNlCistCSAgICBsaWJvYmpzPSIkbGlib2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKysJICAgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKyAJICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CisgCSAgZmkKKyAJZmkKKyAKKyAJaWYgdGVzdCAiJHRocmVhZF9zYWZlIiA9IHllcyAmJiB0ZXN0IC1uICIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjIjsgdGhlbgorLQkgIGV2YWwgImZsYWc9XCIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjXCIiCistCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRmbGFnIgorKwkgIGV2YWwgZmxhZz1cIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWNcIgorKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRmbGFnIgorIAlmaQorIAorIAkjIE1ha2UgYSBiYWNrdXAgb2YgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgd2hlbiByZWxpbmtpbmcKKy0JaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCistCSAgJG9wdF9kcnlfcnVuIHx8IChjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1VICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1VKSB8fCBleGl0ICQ/CisrCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KKysJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVUgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVUpJyB8fCBleGl0ICQ/CisgCWZpCisgCisgCSMgRG8gZWFjaCBvZiB0aGUgYXJjaGl2ZSBjb21tYW5kcy4KKyAJaWYgdGVzdCAiJG1vZHVsZSIgPSB5ZXMgJiYgdGVzdCAtbiAiJG1vZHVsZV9jbWRzIiA7IHRoZW4KKyAJICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRtb2R1bGVfZXhwc3ltX2NtZHMiOyB0aGVuCistCSAgICBldmFsICJ0ZXN0X2NtZHM9XCIkbW9kdWxlX2V4cHN5bV9jbWRzXCIiCisrCSAgICBldmFsIHRlc3RfY21kcz1cIiRtb2R1bGVfZXhwc3ltX2NtZHNcIgorIAkgICAgY21kcz0kbW9kdWxlX2V4cHN5bV9jbWRzCisgCSAgZWxzZQorLQkgICAgZXZhbCAidGVzdF9jbWRzPVwiJG1vZHVsZV9jbWRzXCIiCisrCSAgICBldmFsIHRlc3RfY21kcz1cIiRtb2R1bGVfY21kc1wiCisgCSAgICBjbWRzPSRtb2R1bGVfY21kcworIAkgIGZpCisgCWVsc2UKKyAJICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRhcmNoaXZlX2V4cHN5bV9jbWRzIjsgdGhlbgorLQkgICAgZXZhbCAidGVzdF9jbWRzPVwiJGFyY2hpdmVfZXhwc3ltX2NtZHNcIiIKKysJICAgIGV2YWwgdGVzdF9jbWRzPVwiJGFyY2hpdmVfZXhwc3ltX2NtZHNcIgorIAkgICAgY21kcz0kYXJjaGl2ZV9leHBzeW1fY21kcworIAkgIGVsc2UKKy0JICAgIGV2YWwgInRlc3RfY21kcz1cIiRhcmNoaXZlX2NtZHNcIiIKKysJICAgIGV2YWwgdGVzdF9jbWRzPVwiJGFyY2hpdmVfY21kc1wiCisgCSAgICBjbWRzPSRhcmNoaXZlX2NtZHMKKyAJICBmaQorIAlmaQorQEAgLTczNjYsMTAgKzgzMjksMTMgQEAgRU9GCisgCSAgICBlY2hvICdJTlBVVCAoJyA+ICRvdXRwdXQKKyAJICAgIGZvciBvYmogaW4gJHNhdmVfbGlib2JqcworIAkgICAgZG8KKy0JICAgICAgJEVDSE8gIiRvYmoiID4+ICRvdXRwdXQKKysJICAgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisrCSAgICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiA+PiAkb3V0cHV0CisgCSAgICBkb25lCisgCSAgICBlY2hvICcpJyA+PiAkb3V0cHV0CistCSAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCisrCSAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCisrCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKysJICAgIG91dHB1dD0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CisgCSAgZWxpZiB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIiAmJiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgIlgkZmlsZV9saXN0X3NwZWMiICE9IFg7IHRoZW4KKyAJICAgIG91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5sbmsKKyAJICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgbGlua2VyIGlucHV0IGZpbGUgbGlzdDogJG91dHB1dCIKK0BAIC03MzgzLDE1ICs4MzQ5LDE3IEBAIEVPRgorIAkgICAgZmkKKyAJICAgIGZvciBvYmoKKyAJICAgIGRvCistCSAgICAgICRFQ0hPICIkb2JqIiA+PiAkb3V0cHV0CisrCSAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgorKwkgICAgICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgPj4gJG91dHB1dAorIAkgICAgZG9uZQorLQkgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgorLQkgICAgb3V0cHV0PSRmaXJzdG9ialwiJGZpbGVfbGlzdF9zcGVjJG91dHB1dFwiCisrCSAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCisrCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKysJICAgIG91dHB1dD0kZmlyc3RvYmpcIiRmaWxlX2xpc3Rfc3BlYyRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIgorIAkgIGVsc2UKKyAJICAgIGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiOyB0aGVuCisgCSAgICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMuLi4iCisgCSAgICAgIG91dHB1dD0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAorLQkgICAgICBldmFsICJ0ZXN0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIiIKKysJICAgICAgZXZhbCB0ZXN0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIgorIAkgICAgICBmdW5jX2xlbiAiICR0ZXN0X2NtZHMiCisgCSAgICAgIGxlbjA9JGZ1bmNfbGVuX3Jlc3VsdAorIAkgICAgICBsZW49JGxlbjAKK0BAIC03NDExLDEyICs4Mzc5LDEyIEBAIEVPRgorIAkJICBpZiB0ZXN0ICIkayIgLWVxIDEgOyB0aGVuCisgCQkgICAgIyBUaGUgZmlyc3QgZmlsZSBkb2Vzbid0IGhhdmUgYSBwcmV2aW91cyBjb21tYW5kIHRvIGFkZC4KKyAJCSAgICByZWxvYWRfb2Jqcz0kb2JqbGlzdAorLQkJICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiJHJlbG9hZF9jbWRzXCIiCisrCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIiRyZWxvYWRfY21kc1wiCisgCQkgIGVsc2UKKyAJCSAgICAjIEFsbCBzdWJzZXF1ZW50IHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzIHdpbGwgbGluayBpbgorIAkJICAgICMgdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCisgCQkgICAgcmVsb2FkX29ianM9IiRvYmpsaXN0ICRsYXN0X3JvYmoiCistCQkgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzfiRyZWxvYWRfY21kc35cJFJNICRsYXN0X3JvYmpcIiIKKysJCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc34kcmVsb2FkX2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIKKyAJCSAgZmkKKyAJCSAgbGFzdF9yb2JqPSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtrfS4kb2JqZXh0CisgCQkgIGZ1bmNfYXJpdGggJGsgKyAxCitAQCAtNzQzMywxMSArODQwMSwxMSBAQCBFT0YKKyAJICAgICAgIyBmaWxlcyB3aWxsIGxpbmsgaW4gdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCisgCSAgICAgIHRlc3QgLXogIiRjb25jYXRfY21kcyIgfHwgY29uY2F0X2NtZHM9JGNvbmNhdF9jbWRzfgorIAkgICAgICByZWxvYWRfb2Jqcz0iJG9iamxpc3QgJGxhc3Rfcm9iaiIKKy0JICAgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kcmVsb2FkX2NtZHNcIiIKKysJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRyZWxvYWRfY21kc1wiCisgCSAgICAgIGlmIHRlc3QgLW4gIiRsYXN0X3JvYmoiOyB0aGVuCistCSAgICAgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc31+XCRSTSAkbGFzdF9yb2JqXCIiCisrCSAgICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfX5cJFJNICRsYXN0X3JvYmpcIgorIAkgICAgICBmaQorLQkgICAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCisrCSAgICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKKyAKKyAJICAgIGVsc2UKKyAJICAgICAgb3V0cHV0PQorQEAgLTc0NTAsOSArODQxOCw5IEBAIEVPRgorIAkgICAgICBsaWJvYmpzPSRvdXRwdXQKKyAJICAgICAgIyBBcHBlbmQgdGhlIGNvbW1hbmQgdG8gY3JlYXRlIHRoZSBleHBvcnQgZmlsZS4KKyAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+CistCSAgICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kcyRleHBvcnRfc3ltYm9sc19jbWRzXCIiCisrCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzJGV4cG9ydF9zeW1ib2xzX2NtZHNcIgorIAkgICAgICBpZiB0ZXN0IC1uICIkbGFzdF9yb2JqIjsgdGhlbgorLQkJZXZhbCAiY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiIgorKwkJZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIKKyAJICAgICAgZmkKKyAJICAgIGZpCisgCitAQCAtNzQ3MSw3ICs4NDM5LDcgQEAgRU9GCisgCQlsdF9leGl0PSQ/CisgCisgCQkjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKKy0JCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorKwkJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgorIAkJICAoIGNkICIkb3V0cHV0X29iamRpciIgJiYgXAorIAkJICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCisgCQkgICAgJE1WICIke3JlYWxuYW1lfVUiICIkcmVhbG5hbWUiICkKK0BAIC03NDkyLDcgKzg0NjAsNyBAQCBFT0YKKyAJICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KKyAJICAgICAgdG1wX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCisgCSAgICAgIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIiAmJiB0bXBfZXhwb3J0X3N5bWJvbHM9IiRvcmlnX2V4cG9ydF9zeW1ib2xzIgorLQkgICAgICAkb3B0X2RyeV9ydW4gfHwgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIgorKwkgICAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIicKKyAJICAgIGZpCisgCisgCSAgICBpZiB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyI7IHRoZW4KK0BAIC03NTA0LDcgKzg0NzIsNyBAQCBFT0YKKyAJICAgICAgIyBnbG9iYWwgdmFyaWFibGVzLiBqb2luKDEpIHdvdWxkIGJlIG5pY2UgaGVyZSwgYnV0IHVuZm9ydHVuYXRlbHkKKyAJICAgICAgIyBpc24ndCBhIGJsZXNzZWQgdG9vbC4KKyAJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWUgJy9bICxdREFUQS8hZDtzLFwoLipcKVwoWyBcLF0uKlwpLHN8XlwxJHxcMVwyfCwnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyCistCSAgICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKKysJICAgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgorIAkgICAgICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYKKyAJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWYgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIDwgJG9yaWdfZXhwb3J0X3N5bWJvbHMgPiAkZXhwb3J0X3N5bWJvbHMKKyAJICAgIGZpCitAQCAtNzUxNSw3ICs4NDgzLDcgQEAgRU9GCisgCSAgb3V0cHV0PSRzYXZlX291dHB1dAorIAorIAkgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSIgJiYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgorLQkgICAgZXZhbCAibGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIiIKKysJICAgIGV2YWwgbGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgorIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KKyAJICBmaQorIAkgICMgRXhwYW5kIHRoZSBsaWJyYXJ5IGxpbmtpbmcgY29tbWFuZHMgYWdhaW4gdG8gcmVzZXQgdGhlCitAQCAtNzUzOSwyMyArODUwNywyMyBAQCBFT0YKKyAKKyAJaWYgdGVzdCAtbiAiJGRlbGZpbGVzIjsgdGhlbgorIAkgICMgQXBwZW5kIHRoZSBjb21tYW5kIHRvIHJlbW92ZSB0ZW1wb3JhcnkgZmlsZXMgdG8gJGNtZHMuCistCSAgZXZhbCAiY21kcz1cIlwkY21kc35cJFJNICRkZWxmaWxlc1wiIgorKwkgIGV2YWwgY21kcz1cIlwkY21kc35cJFJNICRkZWxmaWxlc1wiCisgCWZpCisgCisgCSMgQWRkIGFueSBvYmplY3RzIGZyb20gcHJlbG9hZGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcworIAlpZiB0ZXN0IC1uICIkZGxwcmVmaWxlcyI7IHRoZW4KKyAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgorLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCisgCisgCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKKy0JICBsaWJvYmpzPSIkbGlib2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKysJICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisgCSAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KKyAJZmkKKyAKKyAJc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCisgCWZvciBjbWQgaW4gJGNtZHM7IGRvCisgCSAgSUZTPSIkc2F2ZV9pZnMiCistCSAgZXZhbCAiY21kPVwiJGNtZFwiIgorKwkgIGV2YWwgY21kPVwiJGNtZFwiCisgCSAgJG9wdF9zaWxlbnQgfHwgeworIAkgICAgZnVuY19xdW90ZV9mb3JfZXhwYW5kICIkY21kIgorIAkgICAgZXZhbCAiZnVuY19lY2hvICRmdW5jX3F1b3RlX2Zvcl9leHBhbmRfcmVzdWx0IgorQEAgLTc1NjQsNyArODUzMiw3IEBAIEVPRgorIAkgICAgbHRfZXhpdD0kPworIAorIAkgICAgIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0CistCSAgICBpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKysJICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KKyAJICAgICAgKCBjZCAiJG91dHB1dF9vYmpkaXIiICYmIFwKKyAJICAgICAgICAkUk0gIiR7cmVhbG5hbWV9VCIgJiYgXAorIAkJJE1WICIke3JlYWxuYW1lfVUiICIkcmVhbG5hbWUiICkKK0BAIC03NTc2LDggKzg1NDQsOCBAQCBFT0YKKyAJSUZTPSIkc2F2ZV9pZnMiCisgCisgCSMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAorLQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKy0JICAkb3B0X2RyeV9ydW4gfHwgKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVQgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVQgJiYgJE1WICR7cmVhbG5hbWV9VSAkcmVhbG5hbWUpIHx8IGV4aXQgJD8KKysJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgorKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VCAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VCAmJiAkTVYgJHtyZWFsbmFtZX1VICRyZWFsbmFtZSknIHx8IGV4aXQgJD8KKyAKKyAJICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiOyB0aGVuCisgCSAgICBpZiB0ZXN0IC16ICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCitAQCAtNzY1NiwxNyArODYyNCwyMCBAQCBFT0YKKyAKKyAgICAgICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiOyB0aGVuCisgCWlmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KKy0JICBldmFsICJ0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncz1cIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiIgorKwkgIGV2YWwgdG1wX3dob2xlX2FyY2hpdmVfZmxhZ3M9XCIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgorIAkgIHJlbG9hZF9jb252X29ianM9JHJlbG9hZF9vYmpzXCBgJEVDSE8gIiR0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncyIgfCAkU0VEICdzfCx8IHxnJ2AKKyAJZWxzZQorIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvYmp9eCIKKy0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKysJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgorIAorIAkgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRjb252ZW5pZW5jZQorIAkgIHJlbG9hZF9jb252X29ianM9IiRyZWxvYWRfb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKyAJZmkKKyAgICAgICBmaQorIAorKyAgICAgICMgSWYgd2UncmUgbm90IGJ1aWxkaW5nIHNoYXJlZCwgd2UgbmVlZCB0byB1c2Ugbm9uX3BpY19vYmpzCisrICAgICAgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIGxpYm9ianM9IiRub25fcGljX29iamVjdHMiCisrCisgICAgICAgIyBDcmVhdGUgdGhlIG9sZC1zdHlsZSBvYmplY3QuCisgICAgICAgcmVsb2FkX29ianM9IiRvYmpzJG9sZF9kZXBsaWJzICJgJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIi9cLiR7bGliZXh0fSQvZDsgL1wubGliJC9kOyAkbG8ybyIgfCAkTkwyU1BgIiAkcmVsb2FkX2NvbnZfb2JqcyIgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CisgCitAQCAtNzY5MCw3ICs4NjYxLDcgQEAgRU9GCisgCSMgQ3JlYXRlIGFuIGludmFsaWQgbGlidG9vbCBvYmplY3QgaWYgbm8gUElDLCBzbyB0aGF0IHdlIGRvbid0CisgCSMgYWNjaWRlbnRhbGx5IGxpbmsgaXQgaW50byBhIHByb2dyYW0uCisgCSMgJHNob3cgImVjaG8gdGltZXN0YW1wID4gJGxpYm9iaiIKKy0JIyAkb3B0X2RyeV9ydW4gfHwgZWNobyB0aW1lc3RhbXAgPiAkbGlib2JqIHx8IGV4aXQgJD8KKysJIyAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiZWNobyB0aW1lc3RhbXAgPiAkbGlib2JqIiB8fCBleGl0ICQ/CisgCWV4aXQgJEVYSVRfU1VDQ0VTUworICAgICAgIGZpCisgCitAQCAtNzc0MCw4ICs4NzExLDggQEAgRU9GCisgCWlmIHRlc3QgIiR0YWduYW1lIiA9IENYWCA7IHRoZW4KKyAJICBjYXNlICR7TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VULTEwLjB9IGluCisgCSAgICAxMC5bMDEyM10pCistCSAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAke3dsfS1iaW5kX2F0X2xvYWQiCistCSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICR7d2x9LWJpbmRfYXRfbG9hZCIKKysJICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHt3bH0tYmluZF9hdF9sb2FkIgorKwkgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHt3bH0tYmluZF9hdF9sb2FkIgorIAkgICAgOzsKKyAJICBlc2FjCisgCWZpCitAQCAtNzc2MSw3ICs4NzMyLDcgQEAgRU9GCisgCSopCisgCSAgY2FzZSAiICRjb21waWxlX2RlcGxpYnMgIiBpbgorIAkgICoiIC1MJHBhdGgvJG9iamRpciAiKikKKy0JICAgIG5ld19saWJzPSIkbmV3X2xpYnMgLUwkcGF0aC8kb2JqZGlyIiA7OworKwkgICAgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAtTCRwYXRoLyRvYmpkaXIiIDs7CisgCSAgZXNhYworIAkgIDs7CisgCWVzYWMKK0BAIC03NzcxLDE3ICs4NzQyLDE3IEBAIEVPRgorIAktTCopCisgCSAgY2FzZSAiICRuZXdfbGlicyAiIGluCisgCSAgKiIgJGRlcGxpYiAiKikgOzsKKy0JICAqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OworIAkgIGVzYWMKKyAJICA7OworLQkqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7CisrCSopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKKyAJZXNhYworICAgICAgIGRvbmUKKyAgICAgICBjb21waWxlX2RlcGxpYnM9IiRuZXdfbGlicyIKKyAKKyAKKy0gICAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJGNvbXBpbGVfZGVwbGlicyIKKy0gICAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkZmluYWxpemVfZGVwbGlicyIKKysgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkY29tcGlsZV9kZXBsaWJzIgorKyAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkZmluYWxpemVfZGVwbGlicyIKKyAKKyAgICAgICBpZiB0ZXN0IC1uICIkcnBhdGgkeHJwYXRoIjsgdGhlbgorIAkjIElmIHRoZSB1c2VyIHNwZWNpZmllZCBhbnkgcnBhdGggZmxhZ3MsIHRoZW4gYWRkIHRoZW0uCitAQCAtNzc4OSw3ICs4NzYwLDcgQEAgRU9GCisgCSAgIyBUaGlzIGlzIHRoZSBtYWdpYyB0byB1c2UgLXJwYXRoLgorIAkgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCisgCSAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OworIAkgIGVzYWMKKyAJZG9uZQorICAgICAgIGZpCitAQCAtNzgwOCwxOCArODc3OSwxOCBAQCBFT0YKKyAJICAgICAgKiIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIqKQorIAkJOzsKKyAJICAgICAgKikKKy0JCWhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorKwkJZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorIAkJOzsKKyAJICAgICAgZXNhYworIAkgICAgZmkKKyAJICBlbHNlCistCSAgICBldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKKy0JICAgIHJwYXRoPSIkcnBhdGggJGZsYWciCisrCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisrCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgorIAkgIGZpCisgCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorIAkgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KKyAJICAqIiAkbGliZGlyICIqKSA7OworLQkgICopIHBlcm1fcnBhdGg9IiRwZXJtX3JwYXRoICRsaWJkaXIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7CisgCSAgZXNhYworIAlmaQorIAljYXNlICRob3N0IGluCitAQCAtNzgyOCwxMiArODc5OSwxMiBAQCBFT0YKKyAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KKyAJICAqIjokbGliZGlyOiIqKSA7OworIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSRsaWJkaXI7OworLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiRsaWJkaXIiOzsKKysJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JGxpYmRpciI7OworIAkgIGVzYWMKKyAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KKyAJICAqIjokdGVzdGJpbmRpcjoiKikgOzsKKyAJICA6OikgZGxsc2VhcmNocGF0aD0kdGVzdGJpbmRpcjs7CistCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JHRlc3RiaW5kaXIiOzsKKysJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JHRlc3RiaW5kaXIiOzsKKyAJICBlc2FjCisgCSAgOzsKKyAJZXNhYworQEAgLTc4NDIsNyArODgxMyw3IEBAIEVPRgorICAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiAmJgorIAkgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCisgCWxpYmRpcj0iJGhhcmRjb2RlX2xpYmRpcnMiCistCWV2YWwgInJwYXRoPVwiICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCisrCWV2YWwgcnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorICAgICAgIGZpCisgICAgICAgY29tcGlsZV9ycGF0aD0iJHJwYXRoIgorIAorQEAgLTc4NTksMTggKzg4MzAsMTggQEAgRU9GCisgCSAgICAgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKKyAJCTs7CisgCSAgICAgICopCistCQloYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKysJCWZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKyAJCTs7CisgCSAgICAgIGVzYWMKKyAJICAgIGZpCisgCSAgZWxzZQorLQkgICAgZXZhbCAiZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCistCSAgICBycGF0aD0iJHJwYXRoICRmbGFnIgorKwkgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKKyAJICBmaQorIAllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KKyAJICBjYXNlICIkZmluYWxpemVfcGVybV9ycGF0aCAiIGluCisgCSAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAqKSBmaW5hbGl6ZV9wZXJtX3JwYXRoPSIkZmluYWxpemVfcGVybV9ycGF0aCAkbGliZGlyIiA7OworKwkgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3Blcm1fcnBhdGggIiAkbGliZGlyIiA7OworIAkgIGVzYWMKKyAJZmkKKyAgICAgICBkb25lCitAQCAtNzg3OCw3ICs4ODQ5LDcgQEAgRU9GCisgICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiICYmCisgCSB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KKyAJbGliZGlyPSIkaGFyZGNvZGVfbGliZGlycyIKKy0JZXZhbCAicnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKKysJZXZhbCBycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisgICAgICAgZmkKKyAgICAgICBmaW5hbGl6ZV9ycGF0aD0iJHJwYXRoIgorIAorQEAgLTc5MjEsNiArODg5MiwxMiBAQCBFT0YKKyAJZXhpdF9zdGF0dXM9MAorIAlmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXRfc3RhdHVzPSQ/JworIAorKwlpZiB0ZXN0IC1uICIkcG9zdGxpbmtfY21kcyI7IHRoZW4KKysJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKysJICBwb3N0bGlua19jbWRzPWBmdW5jX2VjaG9fYWxsICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnIC1lICdzJUBUT09MX09VVFBVVEAlJyIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiclZydgCisrCSAgZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0bGlua19jbWRzIiAnZXhpdCAkPycKKysJZmkKKysKKyAJIyBEZWxldGUgdGhlIGdlbmVyYXRlZCBmaWxlcy4KKyAJaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IjsgdGhlbgorIAkgIGZ1bmNfc2hvd19ldmFsICckUk0gIiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSInCitAQCAtNzk0Myw3ICs4OTIwLDcgQEAgRU9GCisgCSAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KKyAJICBycGF0aD0KKyAJICBmb3IgZGlyIGluICRwZXJtX3JwYXRoOyBkbworLQkgICAgcnBhdGg9IiRycGF0aCRkaXI6IgorKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgorIAkgIGRvbmUKKyAJICBjb21waWxlX3Zhcj0iJHJ1bnBhdGhfdmFyPVwiJHJwYXRoXCQkcnVucGF0aF92YXJcIiAiCisgCWZpCitAQCAtNzk1MSw3ICs4OTI4LDcgQEAgRU9GCisgCSAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KKyAJICBycGF0aD0KKyAJICBmb3IgZGlyIGluICRmaW5hbGl6ZV9wZXJtX3JwYXRoOyBkbworLQkgICAgcnBhdGg9IiRycGF0aCRkaXI6IgorKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgorIAkgIGRvbmUKKyAJICBmaW5hbGl6ZV92YXI9IiRydW5wYXRoX3Zhcj1cIiRycGF0aFwkJHJ1bnBhdGhfdmFyXCIgIgorIAlmaQorQEAgLTc5NjYsNiArODk0MywxMyBAQCBFT0YKKyAJJG9wdF9kcnlfcnVuIHx8ICRSTSAkb3V0cHV0CisgCSMgTGluayB0aGUgZXhlY3V0YWJsZSBhbmQgZXhpdAorIAlmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXQgJD8nCisrCisrCWlmIHRlc3QgLW4gIiRwb3N0bGlua19jbWRzIjsgdGhlbgorKwkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorKwkgIHBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKKysJICBmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JworKwlmaQorKworIAlleGl0ICRFWElUX1NVQ0NFU1MKKyAgICAgICBmaQorIAorQEAgLTc5OTksNiArODk4MywxMiBAQCBFT0YKKyAKKyAgICAgICBmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXQgJD8nCisgCisrICAgICAgaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCisrCWZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSIKKysJcG9zdGxpbmtfY21kcz1gZnVuY19lY2hvX2FsbCAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKKysJZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0bGlua19jbWRzIiAnZXhpdCAkPycKKysgICAgICBmaQorKworICAgICAgICMgTm93IGNyZWF0ZSB0aGUgd3JhcHBlciBzY3JpcHQuCisgICAgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyAkb3V0cHV0IgorIAorQEAgLTgwOTYsNyArOTA4Niw3IEBAIEVPRgorIAllbHNlCisgCSAgb2xkb2Jqcz0iJG9sZF9kZXBsaWJzICRub25fcGljX29iamVjdHMiCisgCSAgaWYgdGVzdCAiJHByZWxvYWQiID0geWVzICYmIHRlc3QgLWYgIiRzeW1maWxlb2JqIjsgdGhlbgorLQkgICAgb2xkb2Jqcz0iJG9sZG9ianMgJHN5bWZpbGVvYmoiCisrCSAgICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJHN5bWZpbGVvYmoiCisgCSAgZmkKKyAJZmkKKyAJYWRkbGlicz0iJG9sZF9jb252ZW5pZW5jZSIKK0BAIC04MTA0LDEwICs5MDk0LDEwIEBAIEVPRgorIAorICAgICAgIGlmIHRlc3QgLW4gIiRhZGRsaWJzIjsgdGhlbgorIAlnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgorLQlnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKysJZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKKyAKKyAJZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGFkZGxpYnMKKy0Jb2xkb2Jqcz0iJG9sZG9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisrCWZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKyAgICAgICBmaQorIAorICAgICAgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBhcmNoaXZlIGNvbW1hbmRzLgorQEAgLTgxMTgsMTAgKzkxMDgsMTAgQEAgRU9GCisgCSMgQWRkIGFueSBvYmplY3RzIGZyb20gcHJlbG9hZGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcworIAlpZiB0ZXN0IC1uICIkZGxwcmVmaWxlcyI7IHRoZW4KKyAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgorLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCisgCisgCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKKy0JICBvbGRvYmpzPSIkb2xkb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKysJICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisgCWZpCisgCisgCSMgUE9TSVggZGVtYW5kcyBubyBwYXRocyB0byBiZSBlbmNvZGVkIGluIGFyY2hpdmVzLiAgV2UgaGF2ZQorQEAgLTgxMzksNyArOTEyOSw3IEBAIEVPRgorIAllbHNlCisgCSAgZWNobyAiY29weWluZyBzZWxlY3RlZCBvYmplY3QgZmlsZXMgdG8gYXZvaWQgYmFzZW5hbWUgY29uZmxpY3RzLi4uIgorIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCistCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisrCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKKyAJICBmdW5jX21rZGlyX3AgIiRnZW50b3AiCisgCSAgc2F2ZV9vbGRvYmpzPSRvbGRvYmpzCisgCSAgb2xkb2Jqcz0KK0BAIC04MTYzLDE4ICs5MTUzLDI4IEBAIEVPRgorIAkJZXNhYworIAkgICAgICBkb25lCisgCSAgICAgIGZ1bmNfc2hvd19ldmFsICJsbiAkb2JqICRnZW50b3AvJG5ld29iaiB8fCBjcCAkb2JqICRnZW50b3AvJG5ld29iaiIKKy0JICAgICAgb2xkb2Jqcz0iJG9sZG9ianMgJGdlbnRvcC8kbmV3b2JqIgorKwkgICAgICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJGdlbnRvcC8kbmV3b2JqIgorIAkgICAgICA7OworLQkgICAgKikgb2xkb2Jqcz0iJG9sZG9ianMgJG9iaiIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkb2JqIiA7OworIAkgICAgZXNhYworIAkgIGRvbmUKKyAJZmkKKy0JZXZhbCAiY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIiCisrCWV2YWwgY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIKKyAKKyAJZnVuY19sZW4gIiAkY21kcyIKKyAJbGVuPSRmdW5jX2xlbl9yZXN1bHQKKyAJaWYgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB0aGVuCisgCSAgY21kcz0kb2xkX2FyY2hpdmVfY21kcworKwllbGlmIHRlc3QgLW4gIiRhcmNoaXZlcl9saXN0X3NwZWMiOyB0aGVuCisrCSAgZnVuY192ZXJib3NlICJ1c2luZyBjb21tYW5kIGZpbGUgYXJjaGl2ZSBsaW5raW5nLi4uIgorKwkgIGZvciBvYmogaW4gJG9sZG9ianMKKysJICBkbworKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisrCSAgICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIKKysJICBkb25lID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUubGliY21kCisrCSAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmxpYmNtZCIKKysJICBvbGRvYmpzPSIgJGFyY2hpdmVyX2xpc3Rfc3BlYyRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCisrCSAgY21kcz0kb2xkX2FyY2hpdmVfY21kcworIAllbHNlCisgCSAgIyB0aGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIHRvIGxpbmsgaW4gb25lIHN0ZXAsIGxpbmsgaW4gcGFydHMKKyAJICBmdW5jX3ZlcmJvc2UgInVzaW5nIHBpZWNld2lzZSBhcmNoaXZlIGxpbmtpbmcuLi4iCitAQCAtODE4OSw3ICs5MTg5LDcgQEAgRU9GCisgCSAgZG8KKyAJICAgIGxhc3Rfb2xkb2JqPSRvYmoKKyAJICBkb25lCistCSAgZXZhbCAidGVzdF9jbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIiIKKysJICBldmFsIHRlc3RfY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIKKyAJICBmdW5jX2xlbiAiICR0ZXN0X2NtZHMiCisgCSAgbGVuMD0kZnVuY19sZW5fcmVzdWx0CisgCSAgbGVuPSRsZW4wCitAQCAtODIwOCw3ICs5MjA4LDcgQEAgRU9GCisgCQlSQU5MSUI9JHNhdmVfUkFOTElCCisgCSAgICAgIGZpCisgCSAgICAgIHRlc3QgLXogIiRjb25jYXRfY21kcyIgfHwgY29uY2F0X2NtZHM9JGNvbmNhdF9jbWRzfgorLQkgICAgICBldmFsICJjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRvbGRfYXJjaGl2ZV9jbWRzXCIiCisrCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kb2xkX2FyY2hpdmVfY21kc1wiCisgCSAgICAgIG9iamxpc3Q9CisgCSAgICAgIGxlbj0kbGVuMAorIAkgICAgZmkKK0BAIC04MjE2LDkgKzkyMTYsOSBAQCBFT0YKKyAJICBSQU5MSUI9JHNhdmVfUkFOTElCCisgCSAgb2xkb2Jqcz0kb2JqbGlzdAorIAkgIGlmIHRlc3QgIlgkb2xkb2JqcyIgPSAiWCIgOyB0aGVuCistCSAgICBldmFsICJjbWRzPVwiXCRjb25jYXRfY21kc1wiIgorKwkgICAgZXZhbCBjbWRzPVwiXCRjb25jYXRfY21kc1wiCisgCSAgZWxzZQorLQkgICAgZXZhbCAiY21kcz1cIlwkY29uY2F0X2NtZHN+XCRvbGRfYXJjaGl2ZV9jbWRzXCIiCisrCSAgICBldmFsIGNtZHM9XCJcJGNvbmNhdF9jbWRzflwkb2xkX2FyY2hpdmVfY21kc1wiCisgCSAgZmkKKyAJZmkKKyAgICAgICBmaQorQEAgLTgyNjgsMTIgKzkyNjgsMjMgQEAgRU9GCisgCSAgICAgICoubGEpCisgCQlmdW5jX2Jhc2VuYW1lICIkZGVwbGliIgorIAkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLQkJbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCisrCQlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIKKysJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHRgCisgCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisgCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorLQkJbmV3ZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzICRsaWJkaXIvJG5hbWUiCisrCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKKysJCTs7CisrCSAgICAgIC1MKikKKysJCWZ1bmNfc3RyaXBuYW1lIC1MICcnICIkZGVwbGliIgorKwkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAtTCRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQiCisgCQk7OworLQkgICAgICAqKSBuZXdkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMgJGRlcGxpYiIgOzsKKysJICAgICAgLVIqKQorKwkJZnVuY19zdHJpcG5hbWUgLVIgJycgIiRkZXBsaWIiCisrCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiIC1SJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKKysJCTs7CisrCSAgICAgICopIGZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiICRkZXBsaWIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIGRvbmUKKyAJICAgIGRlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyIKK0BAIC04Mjg0LDEyICs5Mjk1LDE0IEBAIEVPRgorIAkgICAgICAqLmxhKQorIAkgICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRsaWIiCisgCQluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistCQlsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKKysJCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkbGliIgorKwkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdGAKKysKKyAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKKyAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCistCQluZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliZGlyLyRuYW1lIgorKwkJZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgorIAkJOzsKKy0JICAgICAgKikgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYiIgOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRsaWIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIGRvbmUKKyAJICAgIGRsZmlsZXM9IiRuZXdkbGZpbGVzIgorQEAgLTgzMDMsMTAgKzkzMTYsMTEgQEAgRU9GCisgCQkjIHRoZSBsaWJyYXJ5OgorIAkJZnVuY19iYXNlbmFtZSAiJGxpYiIKKyAJCW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0JCWxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAorKwkJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRsaWIiCisrCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0YAorIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAorIAkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKKy0JCW5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRsaWJkaXIvJG5hbWUiCisrCQlmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCisgCQk7OworIAkgICAgICBlc2FjCisgCSAgICBkb25lCitAQCAtODMxOCw3ICs5MzMyLDcgQEAgRU9GCisgCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFicz0iJGxpYiIgOzsKKyAJCSopIGFicz1gcHdkYCIvJGxpYiIgOzsKKyAJICAgICAgZXNhYworLQkgICAgICBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkYWJzIgorKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGFicyIKKyAJICAgIGRvbmUKKyAJICAgIGRsZmlsZXM9IiRuZXdkbGZpbGVzIgorIAkgICAgbmV3ZGxwcmVmaWxlcz0KK0BAIC04MzI3LDcgKzkzNDEsNyBAQCBFT0YKKyAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OworIAkJKikgYWJzPWBwd2RgIi8kbGliIiA7OworIAkgICAgICBlc2FjCistCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRhYnMiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkYWJzIgorIAkgICAgZG9uZQorIAkgICAgZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMiCisgCSAgZmkKK0BAIC04NDEyLDcgKzk0MjYsNyBAQCByZWxpbmtfY29tbWFuZD1cIiRyZWxpbmtfY29tbWFuZFwiIgorICAgICBleGl0ICRFWElUX1NVQ0NFU1MKKyB9CisgCisteyB0ZXN0ICIkbW9kZSIgPSBsaW5rIHx8IHRlc3QgIiRtb2RlIiA9IHJlbGluazsgfSAmJgorK3sgdGVzdCAiJG9wdF9tb2RlIiA9IGxpbmsgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgfSAmJgorICAgICBmdW5jX21vZGVfbGluayAkezErIiRAIn0KKyAKKyAKK0BAIC04NDMyLDkgKzk0NDYsOSBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCisgICAgIGZvciBhcmcKKyAgICAgZG8KKyAgICAgICBjYXNlICRhcmcgaW4KKy0gICAgICAtZikgUk09IiRSTSAkYXJnIjsgcm1mb3JjZT15ZXMgOzsKKy0gICAgICAtKikgUk09IiRSTSAkYXJnIiA7OworLSAgICAgICopIGZpbGVzPSIkZmlsZXMgJGFyZyIgOzsKKysgICAgICAtZikgZnVuY19hcHBlbmQgUk0gIiAkYXJnIjsgcm1mb3JjZT15ZXMgOzsKKysgICAgICAtKikgZnVuY19hcHBlbmQgUk0gIiAkYXJnIiA7OworKyAgICAgICopIGZ1bmNfYXBwZW5kIGZpbGVzICIgJGFyZyIgOzsKKyAgICAgICBlc2FjCisgICAgIGRvbmUKKyAKK0BAIC04NDQzLDI0ICs5NDU3LDIzIEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAKKyAgICAgcm1kaXJzPQorIAorLSAgICBvcmlnb2JqZGlyPSIkb2JqZGlyIgorICAgICBmb3IgZmlsZSBpbiAkZmlsZXM7IGRvCisgICAgICAgZnVuY19kaXJuYW1lICIkZmlsZSIgIiIgIi4iCisgICAgICAgZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKyAgICAgICBpZiB0ZXN0ICJYJGRpciIgPSBYLjsgdGhlbgorLQlvYmpkaXI9IiRvcmlnb2JqZGlyIgorKwlvZGlyPSIkb2JqZGlyIgorICAgICAgIGVsc2UKKy0Jb2JqZGlyPSIkZGlyLyRvcmlnb2JqZGlyIgorKwlvZGlyPSIkZGlyLyRvYmpkaXIiCisgICAgICAgZmkKKyAgICAgICBmdW5jX2Jhc2VuYW1lICIkZmlsZSIKKyAgICAgICBuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistICAgICAgdGVzdCAiJG1vZGUiID0gdW5pbnN0YWxsICYmIG9iamRpcj0iJGRpciIKKysgICAgICB0ZXN0ICIkb3B0X21vZGUiID0gdW5pbnN0YWxsICYmIG9kaXI9IiRkaXIiCisgCistICAgICAgIyBSZW1lbWJlciBvYmpkaXIgZm9yIHJlbW92YWwgbGF0ZXIsIGJlaW5nIGNhcmVmdWwgdG8gYXZvaWQgZHVwbGljYXRlcworLSAgICAgIGlmIHRlc3QgIiRtb2RlIiA9IGNsZWFuOyB0aGVuCisrICAgICAgIyBSZW1lbWJlciBvZGlyIGZvciByZW1vdmFsIGxhdGVyLCBiZWluZyBjYXJlZnVsIHRvIGF2b2lkIGR1cGxpY2F0ZXMKKysgICAgICBpZiB0ZXN0ICIkb3B0X21vZGUiID0gY2xlYW47IHRoZW4KKyAJY2FzZSAiICRybWRpcnMgIiBpbgorLQkgICoiICRvYmpkaXIgIiopIDs7CistCSAgKikgcm1kaXJzPSIkcm1kaXJzICRvYmpkaXIiIDs7CisrCSAgKiIgJG9kaXIgIiopIDs7CisrCSAgKikgZnVuY19hcHBlbmQgcm1kaXJzICIgJG9kaXIiIDs7CisgCWVzYWMKKyAgICAgICBmaQorIAorQEAgLTg0ODYsMTggKzk0OTksMTcgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQorIAorIAkgICMgRGVsZXRlIHRoZSBsaWJ0b29sIGxpYnJhcmllcyBhbmQgc3ltbGlua3MuCisgCSAgZm9yIG4gaW4gJGxpYnJhcnlfbmFtZXM7IGRvCistCSAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuIgorKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuIgorIAkgIGRvbmUKKy0JICB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG9sZF9saWJyYXJ5IgorKwkgIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRvbGRfbGlicmFyeSIKKyAKKy0JICBjYXNlICIkbW9kZSIgaW4KKysJICBjYXNlICIkb3B0X21vZGUiIGluCisgCSAgY2xlYW4pCistCSAgICBjYXNlICIgICRsaWJyYXJ5X25hbWVzICIgaW4KKy0JICAgICMgIiAgIiBpbiB0aGUgYmVnaW5uaW5nIGNhdGNoZXMgZW1wdHkgJGRsbmFtZQorKwkgICAgY2FzZSAiICRsaWJyYXJ5X25hbWVzICIgaW4KKyAJICAgICoiICRkbG5hbWUgIiopIDs7CistCSAgICAqKSBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRkbG5hbWUiIDs7CisrCSAgICAqKSB0ZXN0IC1uICIkZGxuYW1lIiAmJiBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJGRsbmFtZSIgOzsKKyAJICAgIGVzYWMKKy0JICAgIHRlc3QgLW4gIiRsaWJkaXIiICYmIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG5hbWUgJG9iamRpci8ke25hbWV9aSIKKysJICAgIHRlc3QgLW4gIiRsaWJkaXIiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kbmFtZSAkb2Rpci8ke25hbWV9aSIKKyAJICAgIDs7CisgCSAgdW5pbnN0YWxsKQorIAkgICAgaWYgdGVzdCAtbiAiJGxpYnJhcnlfbmFtZXMiOyB0aGVuCitAQCAtODUyNSwxOSArOTUzNywxOSBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCisgCSAgIyBBZGQgUElDIG9iamVjdCB0byB0aGUgbGlzdCBvZiBmaWxlcyB0byByZW1vdmUuCisgCSAgaWYgdGVzdCAtbiAiJHBpY19vYmplY3QiICYmCisgCSAgICAgdGVzdCAiJHBpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KKy0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRkaXIvJHBpY19vYmplY3QiCisrCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGRpci8kcGljX29iamVjdCIKKyAJICBmaQorIAorIAkgICMgQWRkIG5vbi1QSUMgb2JqZWN0IHRvIHRoZSBsaXN0IG9mIGZpbGVzIHRvIHJlbW92ZS4KKyAJICBpZiB0ZXN0IC1uICIkbm9uX3BpY19vYmplY3QiICYmCisgCSAgICAgdGVzdCAiJG5vbl9waWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCistCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZGlyLyRub25fcGljX29iamVjdCIKKysJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZGlyLyRub25fcGljX29iamVjdCIKKyAJICBmaQorIAlmaQorIAk7OworIAorICAgICAgICopCistCWlmIHRlc3QgIiRtb2RlIiA9IGNsZWFuIDsgdGhlbgorKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gY2xlYW4gOyB0aGVuCisgCSAgbm9leGVuYW1lPSRuYW1lCisgCSAgY2FzZSAkZmlsZSBpbgorIAkgICouZXhlKQorQEAgLTg1NDcsNyArOTU1OSw3IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAJICAgIG5vZXhlbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgCSAgICAjICRmaWxlIHdpdGggLmV4ZSBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIHJtZmlsZXMsCisgCSAgICAjIGFkZCAkZmlsZSB3aXRob3V0IC5leGUKKy0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRmaWxlIgorKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRmaWxlIgorIAkgICAgOzsKKyAJICBlc2FjCisgCSAgIyBEbyBhIHRlc3QgdG8gc2VlIGlmIHRoaXMgaXMgYSBsaWJ0b29sIHByb2dyYW0uCitAQCAtODU1Niw3ICs5NTY4LDcgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQorIAkgICAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICIkZmlsZSIKKyAJICAgICAgcmVsaW5rX2NvbW1hbmQ9CisgCSAgICAgIGZ1bmNfc291cmNlICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdAorLQkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQiCisrCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQiCisgCSAgICBlbHNlCisgCSAgICAgIHJlbGlua19jb21tYW5kPQorIAkgICAgICBmdW5jX3NvdXJjZSAkZGlyLyRub2V4ZW5hbWUKK0BAIC04NTY0LDEyICs5NTc2LDEyIEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAKKyAJICAgICMgbm90ZSAkbmFtZSBzdGlsbCBjb250YWlucyAuZXhlIGlmIGl0IHdhcyBpbiAkZmlsZSBvcmlnaW5hbGx5CisgCSAgICAjIGFzIGRvZXMgdGhlIHZlcnNpb24gb2YgJGZpbGUgdGhhdCB3YXMgYWRkZWQgaW50byAkcm1maWxlcworLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbmFtZSAkb2JqZGlyLyR7bmFtZX1TLiR7b2JqZXh0fSIKKysJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kbmFtZSAkb2Rpci8ke25hbWV9Uy4ke29iamV4dH0iCisgCSAgICBpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiA9IHllcyAmJiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCistCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvbHQtJG5hbWUiCisrCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci9sdC0kbmFtZSIKKyAJICAgIGZpCisgCSAgICBpZiB0ZXN0ICJYJG5vZXhlbmFtZSIgIT0gIlgkbmFtZSIgOyB0aGVuCistCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvbHQtJHtub2V4ZW5hbWV9LmMiCisrCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci9sdC0ke25vZXhlbmFtZX0uYyIKKyAJICAgIGZpCisgCSAgZmkKKyAJZmkKK0BAIC04NTc3LDcgKzk1ODksNiBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCisgICAgICAgZXNhYworICAgICAgIGZ1bmNfc2hvd19ldmFsICIkUk0gJHJtZmlsZXMiICdleGl0X3N0YXR1cz0xJworICAgICBkb25lCistICAgIG9iamRpcj0iJG9yaWdvYmpkaXIiCisgCisgICAgICMgVHJ5IHRvIHJlbW92ZSB0aGUgJHtvYmpkaXJ9cyBpbiB0aGUgZGlyZWN0b3JpZXMgd2hlcmUgd2UgZGVsZXRlZCBmaWxlcworICAgICBmb3IgZGlyIGluICRybWRpcnM7IGRvCitAQCAtODU4OSwxNiArOTYwMCwxNiBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCisgICAgIGV4aXQgJGV4aXRfc3RhdHVzCisgfQorIAorLXsgdGVzdCAiJG1vZGUiID0gdW5pbnN0YWxsIHx8IHRlc3QgIiRtb2RlIiA9IGNsZWFuOyB9ICYmCisreyB0ZXN0ICIkb3B0X21vZGUiID0gdW5pbnN0YWxsIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbjsgfSAmJgorICAgICBmdW5jX21vZGVfdW5pbnN0YWxsICR7MSsiJEAifQorIAorLXRlc3QgLXogIiRtb2RlIiAmJiB7CisrdGVzdCAteiAiJG9wdF9tb2RlIiAmJiB7CisgICBoZWxwPSIkZ2VuZXJpY19oZWxwIgorICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERSIKKyB9CisgCisgdGVzdCAteiAiJGV4ZWNfY21kIiAmJiBcCistICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkbW9kZSciCisrICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkb3B0X21vZGUnIgorIAorIGlmIHRlc3QgLW4gIiRleGVjX2NtZCI7IHRoZW4KKyAgIGV2YWwgZXhlYyAiJGV4ZWNfY21kIgorZGlmZiAtLWdpdCBhL2x0b3B0aW9ucy5tNCBiL2x0b3B0aW9ucy5tNAoraW5kZXggNWVmMTJjZWQyYTguLjE3Y2ZkNTFjMGIzIDEwMDY0NAorLS0tIGEvbHRvcHRpb25zLm00CisrKysgYi9sdG9wdGlvbnMubTQKK0BAIC04LDcgKzgsNyBAQAorICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CisgIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKyAKKy0jIHNlcmlhbCA2IGx0b3B0aW9ucy5tNAorKyMgc2VyaWFsIDcgbHRvcHRpb25zLm00CisgCisgIyBUaGlzIGlzIHRvIGhlbHAgYWNsb2NhbCBmaW5kIHRoZXNlIG1hY3JvcywgYXMgaXQgY2FuJ3Qgc2VlIG00X2RlZmluZS4KKyBBQ19ERUZVTihbTFRPUFRJT05TX1ZFUlNJT05dLCBbbTRfaWYoWzFdKV0pCitkaWZmIC0tZ2l0IGEvbHR2ZXJzaW9uLm00IGIvbHR2ZXJzaW9uLm00CitpbmRleCBiZjg3Zjc3MTMyZC4uOWM3YjVkNDExODUgMTAwNjQ0CistLS0gYS9sdHZlcnNpb24ubTQKKysrKyBiL2x0dmVyc2lvbi5tNAorQEAgLTcsMTcgKzcsMTcgQEAKKyAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAorICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisgCistIyBHZW5lcmF0ZWQgZnJvbSBsdHZlcnNpb24uaW4uCisrIyBAY29uZmlndXJlX2lucHV0QAorIAorLSMgc2VyaWFsIDMxMzQgbHR2ZXJzaW9uLm00CisrIyBzZXJpYWwgMzI5MyBsdHZlcnNpb24ubTQKKyAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sCisgCistbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1ZFUlNJT05dLCBbMi4yLjdhXSkKKy1tNF9kZWZpbmUoW0xUX1BBQ0tBR0VfUkVWSVNJT05dLCBbMS4zMTM0XSkKKyttNF9kZWZpbmUoW0xUX1BBQ0tBR0VfVkVSU0lPTl0sIFsyLjRdKQorK200X2RlZmluZShbTFRfUEFDS0FHRV9SRVZJU0lPTl0sIFsxLjMyOTNdKQorIAorIEFDX0RFRlVOKFtMVFZFUlNJT05fVkVSU0lPTl0sCistW21hY3JvX3ZlcnNpb249JzIuMi43YScKKy1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JworK1ttYWNyb192ZXJzaW9uPScyLjQnCisrbWFjcm9fcmV2aXNpb249JzEuMzI5MycKKyBfTFRfREVDTCgsIG1hY3JvX3ZlcnNpb24sIDAsIFtXaGljaCByZWxlYXNlIG9mIGxpYnRvb2wubTQgd2FzIHVzZWQ/XSkKKyBfTFRfREVDTCgsIG1hY3JvX3JldmlzaW9uLCAwKQorIF0pCitkaWZmIC0tZ2l0IGEvbHR+b2Jzb2xldGUubTQgYi9sdH5vYnNvbGV0ZS5tNAoraW5kZXggYmY5MmI1ZTA3OTAuLmM1NzNkYTkwYzVjIDEwMDY0NAorLS0tIGEvbHR+b2Jzb2xldGUubTQKKysrKyBiL2x0fm9ic29sZXRlLm00CitAQCAtNyw3ICs3LDcgQEAKKyAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAorICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisgCistIyBzZXJpYWwgNCBsdH5vYnNvbGV0ZS5tNAorKyMgc2VyaWFsIDUgbHR+b2Jzb2xldGUubTQKKyAKKyAjIFRoZXNlIGV4aXN0IGVudGlyZWx5IHRvIGZvb2wgYWNsb2NhbCB3aGVuIGJvb3RzdHJhcHBpbmcgbGlidG9vbC4KKyAjCitkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9jb25maWd1cmUgYi9vcGNvZGVzL2NvbmZpZ3VyZQoraW5kZXggNDcyM2RjZGMxZTguLjAwNmNjZGFhNDU4IDEwMDc1NQorLS0tIGEvb3Bjb2Rlcy9jb25maWd1cmUKKysrKyBiL29wY29kZXMvY29uZmlndXJlCitAQCAtNjgwLDYgKzY4MCw5IEBAIE9UT09MCisgTElQTworIE5NRURJVAorIERTWU1VVElMCisrTUFOSUZFU1RfVE9PTAorK2FjX2N0X0FSCisrRExMVE9PTAorIE9CSkRVTVAKKyBMTl9TCisgTk0KK0BAIC03OTgsNiArODAxLDcgQEAgZW5hYmxlX3N0YXRpYworIHdpdGhfcGljCisgZW5hYmxlX2Zhc3RfaW5zdGFsbAorIHdpdGhfZ251X2xkCisrd2l0aF9saWJ0b29sX3N5c3Jvb3QKKyBlbmFibGVfbGlidG9vbF9sb2NrCisgZW5hYmxlX3RhcmdldHMKKyBlbmFibGVfd2Vycm9yCitAQCAtMTQ2Miw2ICsxNDY2LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CisgICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCisgICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCisrICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgorIAorIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgorICAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCitAQCAtNTQwMyw4ICs1NDA5LDggQEAgZXNhYworIAorIAorIAorLW1hY3JvX3ZlcnNpb249JzIuMi43YScKKy1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JworK21hY3JvX3ZlcnNpb249JzIuNCcKKyttYWNyb19yZXZpc2lvbj0nMS4zMjkzJworIAorIAorIAorQEAgLTU0NDQsNyArNTQ1MCw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KKyAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KKy1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgICBFQ0hPPSdwcmludCAtciAtLScKKyBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorQEAgLTYxMzAsOCArNjEzNiw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CisgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKKyB4c2lfc2hlbGw9bm8KKyAoIF9sdF9kdW1teT0iYS9iL2MiCistICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorLSAgICAgID0gYyxhL2IsLCBcCisrICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorKyAgICAgID0gYyxhL2IsYi9jLCBcCisgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKKyAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICYmIHhzaV9zaGVsbD15ZXMKK0BAIC02MTgwLDYgKzYxODYsODAgQEAgZXNhYworIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICotKi1jeWd3aW4qICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisrICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorK2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQorIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTYxOTYsNiArNjI3NiwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorIGVzYWMKKyByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgY2FzZSAkaG9zdF9vcyBpbgorKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKysgICAgICByZWxvYWRfY21kcz1mYWxzZQorKyAgICBmaQorKyAgICA7OworICAgZGFyd2luKikKKyAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCitAQCAtNjM2NCw3ICs2NDQ5LDggQEAgbWluZ3cqIHwgcHczMiopCisgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICAgZWxzZQorLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKysgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKKyAgIGZpCisgICA7OworQEAgLTY1MTgsNiArNjYwNCwyMSBAQCBlc2FjCisgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKKyAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KKysKKytmaWxlX21hZ2ljX2dsb2I9Cisrd2FudF9ub2Nhc2VnbG9iPW5vCisraWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKysgIGNhc2UgJGhvc3Rfb3MgaW4KKysgIG1pbmd3KiB8IHB3MzIqKQorKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisrICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworKyAgICBlbHNlCisrICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKKysgICAgZmkKKysgICAgOzsKKysgIGVzYWMKKytmaQorKworIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAorIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTY1MzEsMTEgKzY2MzIsMTY0IEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorIAorIAorIAorKworKworKworKworKworKworKworKworKworKworIAorIAorIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCisrICBhY19jdF9ETExUT09MPSRETExUT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgorKyAgICBETExUT09MPSJmYWxzZSIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKKysgIGZpCisrZWxzZQorKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCisrCisrY2FzZSAkaG9zdF9vcyBpbgorK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKKysgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKKysgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgorKyAgKi0taWRlbnRpZnktc3RyaWN0KikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCisrICAgIDs7CisrICAqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKKysgICAgOzsKKysgIGVzYWMKKysgIDs7CisrKikKKysgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgorKyAgOzsKKytlc2FjCisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKyt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCisrCisrCisrCisrCisrCisrCisrCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKysgIGRvCisrICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY1NTEsNyArNjgwNSw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKKysgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTY1NzEsMTEgKzY4MjUsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorIAorKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCisrICBkb25lCisgZmkKKy1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KKytpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCisgICBhY19jdF9BUj0kQVIKKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKytkbworKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjU5MSw3ICs2ODQ5LDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKKysgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTY2MTAsNiArNjg2OCwxMCBAQCBlbHNlCisgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorKworKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhaworK2RvbmUKKysKKyAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgorICAgICBBUj0iZmFsc2UiCisgICBlbHNlCitAQCAtNjYyMSwxNiArNjg4Myw3MiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKKyBlc2FjCisgICAgIEFSPSRhY19jdF9BUgorICAgZmkKKy1lbHNlCistICBBUj0iJGFjX2N2X3Byb2dfQVIiCisgZmkKKyAKKy10ZXN0IC16ICIkQVIiICYmIEFSPWFyCistdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKys6ICR7QVI9YXJ9CisrOiAke0FSX0ZMQUdTPWNydX0KKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KKysgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLworKworK2ludAorK21haW4gKCkKKyt7CisgCisrICA7CisrICByZXR1cm4gMDsKKyt9CisrX0FDRU9GCisraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CisrICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCisrICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KKysJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KKysJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCisrCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgorKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKKysgICAgICAgIGZpCisrICAgICAgZmkKKysgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKKyAKKytmaQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorIAorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQorIAorK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KKytlbHNlCisrICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKKytmaQorIAorIAorIAorQEAgLTY5NzIsOCArNzI5MCw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtNzAwOSw2ICs3MzI3LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTcwNTAsNiArNzM2OSwxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC03MDYxLDcgKzczOTIsNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICAgICAgICphZGRyZXNzOworIH0KK0BAIC03MDg3LDggKzc0MTgsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKKyAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKK0BAIC03MDk4LDggKzc0MjksOCBAQCBfTFRfRU9GCisgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKyAJICAgIHBpcGVfd29ya3M9eWVzCisgCSAgZmkKKy0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisrCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCisgCWVsc2UKKyAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKKyAJZmkKK0BAIC03MTM2LDYgKzc0NjcsMTYgQEAgZWxzZQorICRhc19lY2hvICJvayIgPiY2OyB9CisgZmkKKyAKKysjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KKytpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZmkKKysKKysKKysKKysKKyAKKyAKKyAKK0BAIC03MTUyLDYgKzc0OTMsNDUgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OworK2Vsc2UKKysgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCisrZmkKKysKKysKKytsdF9zeXNyb290PQorK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKKysgeWVzKQorKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisrICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorKyAgIGZpCisrICAgOzsgIygKKysgLyopCisrICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisrICAgOzsgIygKKysgbm98JycpCisrICAgOzsgIygKKysgKikKKysgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQorKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9CisrICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgOzsKKytlc2FjCisrCisrIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CisrJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKyAKKyAKKyAKK0BAIC03MzYzLDYgKzc3NDMsMTIzIEBAIGVzYWMKKyAKKyBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKKyAKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IG10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KKysgICAgTUFOSUZFU1RfVE9PTD0iOiIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKKysgIGZpCisrZWxzZQorKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisrICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1CisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mNQorKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisrICBmaQorKyAgcm0gLWYgY29uZnRlc3QqCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQorK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisrICBNQU5JRkVTVF9UT09MPToKKytmaQorKworKworKworKworKworIAorICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICByaGFwc29keSogfCBkYXJ3aW4qKQorQEAgLTc5MjYsNiArODQyMyw4IEBAIF9MVF9FT0YKKyAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKKyAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CisgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQorKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1CisrICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKKyAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKKyBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorIF9MVF9FT0YKK0BAIC04MDkxLDcgKzg1OTAsOCBAQCBmaQorIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKKyAKKyAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJworK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKKytMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCisgCisgCisgCitAQCAtODE4MCw3ICs4NjgwLDcgQEAgYWl4MyopCisgZXNhYworIAorICMgR2xvYmFsIHZhcmlhYmxlczoKKy1vZmlsZT1saWJ0b29sCisrb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCisgY2FuX2J1aWxkX3NoYXJlZD15ZXMKKyAKKyAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKK0BAIC04NDc4LDggKzg5NzgsNiBAQCBmaQorIGx0X3Byb2dfY29tcGlsZXJfcGljPQorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQorIAorLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworQEAgLTg2NDUsNiArOTE0MywxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCisgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKKyAJOzsKKysgICAgICBuYWdmb3IqKQorKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisrCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKKysJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCisrCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKysJOzsKKyAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAorIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQorQEAgLTg3MDcsNyArOTIxMSw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJworICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKyAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKysgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OworICAgICAgICopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKK0BAIC04NzY0LDEzICs5MjY4LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKKyAgICAgOzsKKyBlc2FjCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CistJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CistCistCistCistCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKytsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKKyAKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorQEAgLTg4MzEsNiArOTMzOSwxMSBAQCBmaQorIAorIAorIAorKworKworKworKworKworICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisgIworQEAgLTkxODEsNyArOTY5NCw4IEBAIF9MVF9FT0YKKyAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubworICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCistICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKKyAKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworQEAgLTkyODAsMTIgKzk3OTQsMTIgQEAgX0xUX0VPRgorIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJworIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCistCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisrCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtOTI5OSw4ICs5ODEzLDggQEAgX0xUX0VPRgorIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCisgCXdsYXJjPQorICAgICAgIGVsc2UKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZmkKKyAgICAgICA7OworIAorQEAgLTkzMTgsOCArOTgzMiw4IEBAIF9MVF9FT0YKKyAKKyBfTFRfRU9GCisgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05MzY1LDggKzk4NzksOCBAQCBfTFRfRU9GCisgCisgICAgICopCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTQ5Niw3ICsxMDAxMCwxMyBAQCBfTFRfRU9GCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCisgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05NTA5LDIyICsxMDAyOSwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCitAQCAtOTUzNiw3ICsxMDA2MywxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJZWxzZQorIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTU0OSwyMiArMTAwODIsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKK0BAIC05NjA5LDIwICsxMDE0OSw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCistICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorLSAgICAgIGxpYmV4dD1saWIKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKy0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKKy0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKy0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCistICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKy0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCistICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCistICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorKyAgICAgIGNsKikKKysJIyBOYXRpdmUgTVNWQworKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCisrCWZpbGVfbGlzdF9zcGVjPSdAJworKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBlbHNlCisrCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGZpfgorKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKysJICBsaW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrCSMgRG9uJ3QgdXNlIHJhbmxpYgorKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCisrCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICouZXhlfCouRVhFKSA7OworKwkgICAgKikKKysJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkgICAgICA7OworKwkgIGVzYWN+CisrCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICBmaScKKysJOzsKKysgICAgICAqKQorKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKysJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKysJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKysJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwk7OworKyAgICAgIGVzYWMKKyAgICAgICA7OworIAorICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorQEAgLTk2ODMsNyArMTAyNjYsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KK0BAIC05NjkxLDcgKzEwMjc0LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXg5KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGZpCitAQCAtOTcwNyw3ICsxMDI5MCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4MTAqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICAgZmkKK0BAIC05NzMxLDEwICsxMDMxNCwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWlhNjQqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJKikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAllc2FjCisgICAgICAgZWxzZQorQEAgLTk4MTMsMjMgKzEwMzk2LDM2IEBAIGZpCisgCisgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CisgCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKKyAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KKy0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCistICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisrCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisrCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCistaW50IGZvbyh2b2lkKSB7fQorK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CistICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCistCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKKytlbHNlCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubworIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQorKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCisrICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWZpCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKK0BAIC05OTE0LDcgKzEwNTEwLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgIGVsc2UKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCitAQCAtOTkzMyw5ICsxMDUyOSw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAl3bGFyYz0nJHt3bH0nCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICBlbHNlCisgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgorIAkqIkNvbXBpbGVycyA1LjAiKikKK0BAIC0xMDUxMSw4ICsxMTEwNyw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgIG5lZWRfdmVyc2lvbj1ubworICAgbmVlZF9saWJfcHJlZml4PW5vCisgCistICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KKy0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisrICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCisrICB5ZXMsKikKKysgICAgIyBnY2MKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKKyAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KK0BAIC0xMDU0NSwxMyArMTExNDIsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgICA7OworICAgICBlc2FjCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisrICAgIDs7CisrCisrICAqLGNsKikKKysgICAgIyBOYXRpdmUgTVNWQworKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKysgICAgICA7OworKyAgICBjeWd3aW4qKQorKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKysgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKysgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgOzsKKysgICAgKikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisrICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCisrICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKysgICAgICBlbHNlCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgZmkKKysgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKysgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisrICAgICAgOzsKKysgICAgZXNhYworKworKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisrICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKysgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorKyAgICAgICAkUk0gXCRkbHBhdGgnCisrICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJworICAgICA7OworIAorICAgKikKKysgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTEwNjQzLDcgKzExMjk4LDcgQEAgaGFpa3UqKQorICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCistICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJworKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCisgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICA7OworIAorQEAgLTExNDM5LDcgKzEyMDk0LDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTE0NDIgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExNDgzLDEwICsxMjEzOCwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTExNTQ1LDcgKzEyMjAwLDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTE1NDggImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExNTg5LDEwICsxMjI0NCwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTEzNzU2LDEzICsxNDQxMSwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTEzNzc3LDE0ICsxNDQzOSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xMzgxNywxMiArMTQ0ODIsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKKyBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTM4NzcsOCArMTQ1NDIsMTMgQEAgcmVsb2FkX2ZsYWcgXAorIE9CSkRVTVAgXAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKKyBmaWxlX21hZ2ljX2NtZCBcCisrZmlsZV9tYWdpY19nbG9iIFwKKyt3YW50X25vY2FzZWdsb2IgXAorK0RMTFRPT0wgXAorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKKyBBUiBcCisgQVJfRkxBR1MgXAorK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCisgU1RSSVAgXAorIFJBTkxJQiBcCisgQ0MgXAorQEAgLTEzODg4LDEyICsxNDU1OCwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAorK25tX2ZpbGVfbGlzdF9zcGVjIFwKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCistbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9waWMgXAorK2x0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCisgbmVlZF9sb2NrcyBcCisrTUFOSUZFU1RfVE9PTCBcCisgRFNZTVVUSUwgXAorIE5NRURJVCBcCisgTElQTyBcCitAQCAtMTM5MDksNyArMTQ1ODEsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCisgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCistZml4X3NyY2ZpbGVfcGF0aCBcCisgZXhjbHVkZV9leHBzeW1zIFwKKyBpbmNsdWRlX2V4cHN5bXMgXAorIGZpbGVfbGlzdF9zcGVjIFwKK0BAIC0xMzk0NSw2ICsxNDYxNiw3IEBAIG1vZHVsZV9jbWRzIFwKKyBtb2R1bGVfZXhwc3ltX2NtZHMgXAorIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAorIHByZWxpbmtfY21kcyBcCisrcG9zdGxpbmtfY21kcyBcCisgcG9zdGluc3RhbGxfY21kcyBcCisgcG9zdHVuaW5zdGFsbF9jbWRzIFwKKyBmaW5pc2hfY21kcyBcCitAQCAtMTQ3MTAsNyArMTUzODIsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CisgIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCisgIworICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCistIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysjICAgICAgICAgICAgICAgICBJbmMuCisgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKKyAjCisgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgorQEAgLTE0ODEzLDE5ICsxNTQ4Niw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKKyAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCisgTkwyU1A9JGx0X2x0X05MMlNQCisgCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgorK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKysKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgorK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKysKKyAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgorIE9CSkRVTVA9JGx0X09CSkRVTVAKKyAKKyAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAorIAorLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCisrIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAorIAorKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKKysKKysjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgorKworKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCisrRExMVE9PTD0kbHRfRExMVE9PTAorKworKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKysKKyAjIFRoZSBhcmNoaXZlci4KKyBBUj0kbHRfQVIKKysKKysjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgorIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUworIAorKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgorK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCisrCisgIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KKyBTVFJJUD0kbHRfU1RSSVAKKyAKK0BAIC0xNDg1NSw2ICsxNTU1MSwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcworICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCisgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CisgCisrIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCisrbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCisrCisrIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KKytsdF9zeXNyb290PSRsdF9zeXNyb290CisrCisgIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCisgb2JqZGlyPSRvYmpkaXIKKyAKK0BAIC0xNDg2NCw2ICsxNTU2Niw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECisgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KKyBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCisgCisrIyBNYW5pZmVzdCB0b29sLgorK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKKysKKyAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCisgRFNZTVVUSUw9JGx0X0RTWU1VVElMCisgCitAQCAtMTQ5NzgsMTIgKzE1NjgzLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKKyAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCisgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZworIAorLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKy13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorLQorICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgorIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYworIAorKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKyt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorKworICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KKyBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYworIAorQEAgLTE1MDcwLDkgKzE1Nzc1LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAorICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgorIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKKyAKKy0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCistZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAorLQorICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgorIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCisgCitAQCAtMTUwODgsNiArMTU3OTAsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCisgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKKyAKKysjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCisrcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcworKworICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgorIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYworIAorQEAgLTE1MTIwLDIxMCArMTU4MjUsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgorICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KKyAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CistICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgY2FzZSAkeHNpX3NoZWxsIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKy0jIGNhbGw6CistIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKKy0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKKy0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKy0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKKy0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCistIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCistZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKy0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KKy19CistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9CistICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKy0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7CistICBlc2FjCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCistICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCistICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorLSAgZWxzZQorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCistICBmaQorLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKKy19CistCistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsyfSBpbgorLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CistICBlc2FjCistfQorLQorLSMgc2VkIHNjcmlwdHM6CistbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKKy1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCistfQorLQorLV9MVF9FT0YKKy1lc2FjCistCistY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxKz1cJDIiCistfQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxPVwkJDFcJDIiCistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gIGVzYWMKKy0KKy0KKy0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKysgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKysgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisrCisrICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAorK2Z1bmNfZGlybmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAorK2Z1bmNfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKKytmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAorK2Z1bmNfc3RyaXBuYW1lICgpXAorK3tcCisrXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAorK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKKytmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKKytmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKKytmdW5jX2xvMm8gKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCisrXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAorK2Z1bmNfeGZvcm0gKClcCisre1wKKysgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAorK2Z1bmNfYXJpdGggKClcCisre1wKKysgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKKytmdW5jX2xlbiAoKVwKKyt7XAorKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrZmkKKysKKytpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKKytmdW5jX2FwcGVuZCAoKVwKKyt7XAorKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKKytmdW5jX2FwcGVuZF9xdW90ZWQgKClcCisre1wKKytcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAorK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JworKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2Vsc2UKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytmaQorKworK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9CisrZmkKKysKKysKKysgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisgICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCisgICBjaG1vZCAreCAiJG9maWxlIgorIAorLS0gCisyLjI2LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMmM2MzEyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDctZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gOGNiMDEzMTA2YzM3OWU4MWZlNDBjZmRmNDg2ZDk4MDVjOWUyNzZhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6Mzk6MDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNy8xNV0gZG9uJ3QgbGV0IHRoZSBkaXN0cm8gY29tcGlsZXIgcG9pbnQgdG8gdGhlIHdyb25nCi0gaW5zdGFsbGF0aW9uIGxvY2F0aW9uCi0KLVRoYW5rcyB0byBSUCBmb3IgaGVscGluZyBmaW5kIHRoZSBzb3VyY2UgY29kZSBjYXVzaW5nIHRoZSBpc3N1ZS4KLQotMjAxMC8wOC8xMwotTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYmliZXJ0eS9NYWtlZmlsZS5pbiB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliaWJlcnR5L01ha2VmaWxlLmluIGIvbGliaWJlcnR5L01ha2VmaWxlLmluCi1pbmRleCAwYmU0NWI0YWU4Li40ODE3NjE2YmIyIDEwMDY0NAotLS0tIGEvbGliaWJlcnR5L01ha2VmaWxlLmluCi0rKysgYi9saWJpYmVydHkvTWFrZWZpbGUuaW4KLUBAIC0zNjQsNyArMzY0LDggQEAgaW5zdGFsbC1zdHJpcDogaW5zdGFsbAotICMgbXVsdGlsaWItc3BlY2lmaWMgZmxhZ3MsIGl0J3Mgb3ZlcnJpZGRlbiBieSBGTEFHU19UT19QQVNTIGZyb20gdGhlCi0gIyBkZWZhdWx0IG11bHRpbGliLCBzbyB3ZSBoYXZlIHRvIHRha2UgQ0ZMQUdTIGludG8gYWNjb3VudCBhcyB3ZWxsLAotICMgc2luY2UgaXQgd2lsbCBiZSBwYXNzZWQgdGhlIG11bHRpbGliIGZsYWdzLgotLU1VTFRJT1NESVIgPSBgJChDQykgJChDRkxBR1MpIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnlgCi0rI01VTFRJT1NESVIgPSBgJChDQykgJChDRkxBR1MpIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnlgCi0rTVVMVElPU0RJUiA9ICIiCi0gaW5zdGFsbF90b19saWJkaXI6IGFsbAotIAlpZiB0ZXN0IC1uICIke3RhcmdldF9oZWFkZXJfZGlyfSI7IHRoZW4gXAotIAkJJHtta2luc3RhbGxkaXJzfSAkKERFU1RESVIpJChsaWJkaXIpLyQoTVVMVElPU0RJUik7IFwKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGU5NGFiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOC1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gZTM2YTRlMDVmOTAwYmJlNmE4ZDc0NGE5M2YzYTQwN2JjNTVjOTZmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6Mzk6MDEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZG9uJ3QgbGV0IHRoZSBkaXN0cm8gY29tcGlsZXIgcG9pbnQgdG8gdGhlIHdyb25nIGluc3RhbGxhdGlvbgorIGxvY2F0aW9uCisKK1RoYW5rcyB0byBSUCBmb3IgaGVscGluZyBmaW5kIHRoZSBzb3VyY2UgY29kZSBjYXVzaW5nIHRoZSBpc3N1ZS4KKworMjAxMC8wOC8xMworTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYmliZXJ0eS9NYWtlZmlsZS5pbiB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliaWJlcnR5L01ha2VmaWxlLmluIGIvbGliaWJlcnR5L01ha2VmaWxlLmluCitpbmRleCBmZTczOGQwZGI0Li4yN2Q4MThmMjUzIDEwMDY0NAorLS0tIGEvbGliaWJlcnR5L01ha2VmaWxlLmluCisrKysgYi9saWJpYmVydHkvTWFrZWZpbGUuaW4KK0BAIC0zNjUsNyArMzY1LDggQEAgaW5zdGFsbC1zdHJpcDogaW5zdGFsbAorICMgbXVsdGlsaWItc3BlY2lmaWMgZmxhZ3MsIGl0J3Mgb3ZlcnJpZGRlbiBieSBGTEFHU19UT19QQVNTIGZyb20gdGhlCisgIyBkZWZhdWx0IG11bHRpbGliLCBzbyB3ZSBoYXZlIHRvIHRha2UgQ0ZMQUdTIGludG8gYWNjb3VudCBhcyB3ZWxsLAorICMgc2luY2UgaXQgd2lsbCBiZSBwYXNzZWQgdGhlIG11bHRpbGliIGZsYWdzLgorLU1VTFRJT1NESVIgPSBgJChDQykgJChDRkxBR1MpIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnlgCisrI01VTFRJT1NESVIgPSBgJChDQykgJChDRkxBR1MpIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnlgCisrTVVMVElPU0RJUiA9ICIiCisgaW5zdGFsbF90b19saWJkaXI6IGFsbAorIAlpZiB0ZXN0IC1uICIke3RhcmdldF9oZWFkZXJfZGlyfSI7IHRoZW4gXAorIAkJJHtta2luc3RhbGxkaXJzfSAkKERFU1RESVIpJChsaWJkaXIpLyQoTVVMVElPU0RJUik7IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTcyNzgyMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA4LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNzMgKzAsMCBAQAotRnJvbSA5OGY2OGMwODkyYmE0YmJkNTNiMGEwYTRjYmJkZjBiNzE5N2UwMzIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTUgSmFuIDIwMTYgMDY6MzE6MDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8xNV0gd2FybiBmb3IgdXNlcyBvZiBzeXN0ZW0gZGlyZWN0b3JpZXMgd2hlbiBjcm9zcyBsaW5raW5nCi0KLTIwMDgtMDctMDIgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgotCi0gICAgbGQvCi0gICAgKiBsZC5oIChhcmdzX3R5cGUpOiBBZGQgZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KLSAgICAqIGxkLnRleGluZm8gKC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcyk6IERvY3VtZW50LgotICAgICogbGRmaWxlLmMgKGxkZmlsZV9hZGRfbGlicmFyeV9wYXRoKTogQ2hlY2sKLSAgICBjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KLSAgICAqIGxkbWFpbi5jIChtYWluKTogSW5pdGlhbGl6ZQotICAgIGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgotICAgICogbGV4c3VwLmMgKGVudW0gb3B0aW9uX3ZhbHVlcyk6IEFkZAotICAgIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTLgotICAgIChsZF9vcHRpb25zKTogQWRkIC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy4KLSAgICAocGFyc2VfYXJncyk6IEhhbmRsZSBuZXcgb3B0aW9uLgotCi0yMDA3LTA2LTEzICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgIGxkLwotICAgICogY29uZmlnLmluOiBSZWdlbmVyYXRlLgotICAgICogbGQuaCAoYXJnc190eXBlKTogQWRkIHBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCi0gICAgKiBsZC50ZXhpbmZvICgtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMpOiBEb2N1bWVudC4KLSAgICAqIGxkZmlsZS5jIChsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCk6IENoZWNrCi0gICAgY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCi0gICAgKiBsZG1haW4uYyAobWFpbik6IEluaXRpYWxpemUKLSAgICBjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KLSAgICAqIGxleHN1cC5jIChlbnVtIG9wdGlvbl92YWx1ZXMpOiBBZGQKLSAgICBPUFRJT05fTk9fUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUy4KLSAgICAobGRfb3B0aW9ucyk6IEFkZCAtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMuCi0gICAgKHBhcnNlX2FyZ3MpOiBIYW5kbGUgbmV3IG9wdGlvbi4KLQotMjAwNy0wNC0yMCAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+Ci0KLSAgICBNZXJnZSBmcm9tIFNvdXJjZXJ5IEcrKyBiaW51dGlscyAyLjE3OgotCi0gICAgMjAwNy0wMy0yMCAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+Ci0gICAgQmFzZWQgb24gcGF0Y2ggYnkgTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPi4KLSAgICBsZC8KLSAgICAqIGNvbmZpZ3VyZS5pbiAoLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcyk6IE5ldyBvcHRpb24uCi0gICAgKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KLSAgICAqIGxkZmlsZS5jIChsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCk6IElmCi0gICAgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMgZGVmaW5lZCwgd2FybiBmb3IgdXNlIG9mIC9saWIsCi0gICAgL3Vzci9saWIsIC91c3IvbG9jYWwvbGliIG9yIC91c3IvWDExUjYvbGliLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGQvY29uZmlnLmluICAgIHwgIDMgKysrCi0gbGQvY29uZmlndXJlICAgIHwgMTYgKysrKysrKysrKysrKysrKwotIGxkL2NvbmZpZ3VyZS5hYyB8IDEwICsrKysrKysrKysKLSBsZC9sZC5oICAgICAgICAgfCAgOCArKysrKysrKwotIGxkL2xkLnRleGkgICAgICB8IDEyICsrKysrKysrKysrKwotIGxkL2xkZmlsZS5jICAgICB8IDE3ICsrKysrKysrKysrKysrKysrCi0gbGQvbGRsZXguaCAgICAgIHwgIDIgKysKLSBsZC9sZG1haW4uYyAgICAgfCAgMiArKwotIGxkL2xleHN1cC5jICAgICB8IDE2ICsrKysrKysrKysrKysrKysKLSA5IGZpbGVzIGNoYW5nZWQsIDg2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xkL2NvbmZpZy5pbiBiL2xkL2NvbmZpZy5pbgotaW5kZXggZDkzYzliMDgzMC4uNWRhMjc0MmJlYSAxMDA2NDQKLS0tLSBhL2xkL2NvbmZpZy5pbgotKysrIGIvbGQvY29uZmlnLmluCi1AQCAtMzEsNiArMzEsOSBAQAotICAgIGxhbmd1YWdlIGlzIHJlcXVlc3RlZC4gKi8KLSAjdW5kZWYgRU5BQkxFX05MUwotIAotKy8qIERlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBsaWJyYXJ5IGRpcmVjdG9yaWVzICovCi0rI3VuZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCi0rCi0gLyogQWRkaXRpb25hbCBleHRlbnNpb24gYSBzaGFyZWQgb2JqZWN0IG1pZ2h0IGhhdmUuICovCi0gI3VuZGVmIEVYVFJBX1NITElCX0VYVEVOU0lPTgotIAotZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZSBiL2xkL2NvbmZpZ3VyZQotaW5kZXggNDNjMzkxYzJiMy4uZmY5ZjZiM2MwMiAxMDA3NTUKLS0tLSBhL2xkL2NvbmZpZ3VyZQotKysrIGIvbGQvY29uZmlndXJlCi1AQCAtODI2LDYgKzgyNiw3IEBAIHdpdGhfbGliX3BhdGgKLSBlbmFibGVfdGFyZ2V0cwotIGVuYWJsZV82NF9iaXRfYmZkCi0gd2l0aF9zeXNyb290Ci0rZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKLSBlbmFibGVfZ29sZAotIGVuYWJsZV9nb3QKLSBlbmFibGVfY29tcHJlc3NlZF9kZWJ1Z19zZWN0aW9ucwotQEAgLTE0OTAsNiArMTQ5MSw4IEBAIE9wdGlvbmFsIEZlYXR1cmVzOgotICAgLS1kaXNhYmxlLWxhcmdlZmlsZSAgICAgb21pdCBzdXBwb3J0IGZvciBsYXJnZSBmaWxlcwotICAgLS1lbmFibGUtdGFyZ2V0cyAgICAgICAgYWx0ZXJuYXRpdmUgdGFyZ2V0IGNvbmZpZ3VyYXRpb25zCi0gICAtLWVuYWJsZS02NC1iaXQtYmZkICAgICA2NC1iaXQgc3VwcG9ydCAob24gaG9zdHMgd2l0aCBuYXJyb3dlciB3b3JkIHNpemVzKQotKyAgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gbGlicmFyeSBkaXJlY3RvcmllcwotICAgLS1lbmFibGUtZ29sZFs9QVJHXSAgICAgYnVpbGQgZ29sZCBbQVJHPXtkZWZhdWx0LHllcyxub31dCi0gICAtLWVuYWJsZS1nb3Q9PHR5cGU+ICAgICBHT1QgaGFuZGxpbmcgc2NoZW1lICh0YXJnZXQsIHNpbmdsZSwgbmVnYXRpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aWdvdCkKLUBAIC0xNjYxOCw2ICsxNjYyMSwxOSBAQCBmaQotIAotIAotIAotKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIGVuYWJsZXZhbD0kZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7Ci0rZWxzZQotKyAgZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm8KLStmaQotKwotK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KLSsKLSskYXNfZWNobyAiI2RlZmluZSBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUyAxIiA+PmNvbmZkZWZzLmgKLSsKLStmaQotKwotICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1nb2xkIHdhcyBnaXZlbi4KLSBpZiB0ZXN0ICIke2VuYWJsZV9nb2xkK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgIGVuYWJsZXZhbD0kZW5hYmxlX2dvbGQ7IGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4KLWRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUuYWMgYi9sZC9jb25maWd1cmUuYWMKLWluZGV4IGQzMzVmMjEwOTEuLjdmNjkyZDkzODcgMTAwNjQ0Ci0tLS0gYS9sZC9jb25maWd1cmUuYWMKLSsrKyBiL2xkL2NvbmZpZ3VyZS5hYwotQEAgLTk0LDYgKzk0LDE2IEBAIEFDX1NVQlNUKHVzZV9zeXNyb290KQotIEFDX1NVQlNUKFRBUkdFVF9TWVNURU1fUk9PVCkKLSBBQ19TVUJTVChUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FKQotIAotK0FDX0FSR19FTkFCTEUoW3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAotKyAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKLSsgICAgICAgICAgICAgICAgW3dhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXNdKSwsCi0rICAgICAgICAgW2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vXSkKLStpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCi0rICBBQ19ERUZJTkUoW0VOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTXSwKLSsgICAgICAgWzFdLAotKyAgICAgICBbRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXNdKQotK2ZpCi0rCi0gZG5sIFVzZSAtLWVuYWJsZS1nb2xkIHRvIGRlY2lkZSBpZiB0aGlzIGxpbmtlciBzaG91bGQgYmUgdGhlIGRlZmF1bHQuCi0gZG5sICJpbnN0YWxsX2FzX2RlZmF1bHQiIGlzIHNldCB0byBmYWxzZSBpZiBnb2xkIGlzIHRoZSBkZWZhdWx0IGxpbmtlci4KLSBkbmwgImluc3RhbGxlZF9saW5rZXIiIGlzIHRoZSBpbnN0YWxsZWQgQkZEIGxpbmtlciBuYW1lLgotZGlmZiAtLWdpdCBhL2xkL2xkLmggYi9sZC9sZC5oCi1pbmRleCBiOTdkOTc3ZjM3Li5mM2JiZDJkNTVkIDEwMDY0NAotLS0tIGEvbGQvbGQuaAotKysrIGIvbGQvbGQuaAotQEAgLTE4MCw2ICsxODAsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QKLSAgICAgIGluIHRoZSBsaW5rZXIgc2NyaXB0LiAgKi8KLSAgIGJmZF9ib29sZWFuIGZvcmNlX2dyb3VwX2FsbG9jYXRpb247Ci0gCi0rICAvKiBJZiBUUlVFICh0aGUgZGVmYXVsdCkgd2FybiBmb3IgdXNlcyBvZiBzeXN0ZW0gZGlyZWN0b3JpZXMgd2hlbgotKyAgICAgY3Jvc3MgbGlua2luZy4gICovCi0rICBiZmRfYm9vbGVhbiBwb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOwotKwotKyAgLyogSWYgVFJVRSAoZGVmYXVsdCBGQUxTRSkgZ2l2ZSBhbiBlcnJvciBmb3IgdXNlcyBvZiBzeXN0ZW0KLSsgICAgIGRpcmVjdG9yaWVzIHdoZW4gY3Jvc3MgbGlua2luZyBpbnN0ZWFkIG9mIGEgd2FybmluZy4gICovCi0rICBiZmRfYm9vbGVhbiBlcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOwotKwotICAgLyogQmlnIG9yIGxpdHRsZSBlbmRpYW4gYXMgc2V0IG9uIGNvbW1hbmQgbGluZS4gICovCi0gICBlbnVtIGVuZGlhbl9lbnVtIGVuZGlhbjsKLSAKLWRpZmYgLS1naXQgYS9sZC9sZC50ZXhpIGIvbGQvbGQudGV4aQotaW5kZXggNTE3OWFmM2UwZS4uZjc4YmY3NDY4MiAxMDA2NDQKLS0tLSBhL2xkL2xkLnRleGkKLSsrKyBiL2xkL2xkLnRleGkKLUBAIC0yNTI0LDYgKzI1MjQsMTggQEAgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBvcmlnaW5hbCBsaW5rZWQgZmlsZSBkb2VzIG5vdCBjaGFuZ2UuCi0gCi0gUGFzc2luZyBAY29kZXtub25lfSBmb3IgQHZhcntzdHlsZX0gZGlzYWJsZXMgdGhlIHNldHRpbmcgZnJvbSBhbnkKLSBAY29kZXstLWJ1aWxkLWlkfSBvcHRpb25zIGVhcmxpZXIgb24gdGhlIGNvbW1hbmQgbGluZS4KLSsKLStAa2luZGV4IC0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0BpdGVtIC0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0RvIG5vdCB3YXJuIGZvciBAb3B0aW9uey1MfSBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyBzdWNoIGFzCi0rQGZpbGV7L3Vzci9saWJ9IHdoZW4gY3Jvc3MgbGlua2luZy4gIFRoaXMgb3B0aW9uIGlzIGludGVuZGVkIGZvciB1c2UKLStpbiBjaHJvb3QgZW52aXJvbm1lbnRzIHdoZW4gc3VjaCBkaXJlY3RvcmllcyBjb250YWluIHRoZSBjb3JyZWN0Ci0rbGlicmFyaWVzIGZvciB0aGUgdGFyZ2V0IHN5c3RlbSByYXRoZXIgdGhhbiB0aGUgaG9zdC4KLSsKLStAa2luZGV4IC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0BpdGVtIC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0dpdmUgYW4gZXJyb3IgaW5zdGVhZCBvZiBhIHdhcm5pbmcgZm9yIEBvcHRpb257LUx9IG9wdGlvbnMgdXNpbmcKLStzeXN0ZW0gZGlyZWN0b3JpZXMgd2hlbiBjcm9zcyBsaW5raW5nLgotIEBlbmQgdGFibGUKLSAKLSBAYyBtYW4gZW5kCi1kaWZmIC0tZ2l0IGEvbGQvbGRmaWxlLmMgYi9sZC9sZGZpbGUuYwotaW5kZXggZmNhZGMwOGM3My4uNjNlMjk1Y2U4YSAxMDA2NDQKLS0tLSBhL2xkL2xkZmlsZS5jCi0rKysgYi9sZC9sZGZpbGUuYwotQEAgLTExNiw2ICsxMTYsMjMgQEAgbGRmaWxlX2FkZF9saWJyYXJ5X3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGJmZF9ib29sZWFuIGNtZGxpbmUpCi0gICAgIG5ld19kaXJzLT5uYW1lID0gY29uY2F0IChsZF9zeXNyb290LCBuYW1lICsgc3RybGVuICgiJFNZU1JPT1QiKSwgKGNvbnN0IGNoYXIgKikgTlVMTCk7Ci0gICBlbHNlCi0gICAgIG5ld19kaXJzLT5uYW1lID0geHN0cmR1cCAobmFtZSk7Ci0rCi0rI2lmZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCi0rICBpZiAoY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKLSsgICYmICgoIXN0cm5jbXAgKG5hbWUsICIvbGliIiwgNCkpCi0rICAgICAgfHwgKCFzdHJuY21wIChuYW1lLCAiL3Vzci9saWIiLCA4KSkKLSsgICAgICB8fCAoIXN0cm5jbXAgKG5hbWUsICIvdXNyL2xvY2FsL2xpYiIsIDE0KSkKLSsgICAgICB8fCAoIXN0cm5jbXAgKG5hbWUsICIvdXNyL1gxMVI2L2xpYiIsIDE0KSkpKQotKyAgIHsKLSsgICAgIGlmIChjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcykKLSsgICAgICAgZWluZm8gKF8oIiVYJVA6IGVycm9yOiBsaWJyYXJ5IHNlYXJjaCBwYXRoIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKLSsgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb25cbiIpLCBuYW1lKTsKLSsgICAgIGVsc2UKLSsgICAgICAgZWluZm8gKF8oIiVQOiB3YXJuaW5nOiBsaWJyYXJ5IHNlYXJjaCBwYXRoIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKLSsgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb25cbiIpLCBuYW1lKTsKLSsgICB9Ci0rI2VuZGlmCi0rCi0gfQotIAotIC8qIFRyeSB0byBvcGVuIGEgQkZEIGZvciBhIGxhbmdfaW5wdXRfc3RhdGVtZW50LiAgKi8KLWRpZmYgLS1naXQgYS9sZC9sZGxleC5oIGIvbGQvbGRsZXguaAotaW5kZXggMzI4NTNkZWJlNC4uODEzNTM2MWM0OSAxMDA2NDQKLS0tLSBhL2xkL2xkbGV4LmgKLSsrKyBiL2xkL2xkbGV4LmgKLUBAIC0xNDgsNiArMTQ4LDggQEAgZW51bSBvcHRpb25fdmFsdWVzCi0gICBPUFRJT05fUkVRVUlSRV9ERUZJTkVEX1NZTUJPTCwKLSAgIE9QVElPTl9PUlBIQU5fSEFORExJTkcsCi0gICBPUFRJT05fRk9SQ0VfR1JPVVBfQUxMT0NBVElPTiwKLSsgIE9QVElPTl9OT19QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTLAotKyAgT1BUSU9OX0VSUk9SX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMsCi0gfTsKLSAKLSAvKiBUaGUgaW5pdGlhbCBwYXJzZXIgc3RhdGVzLiAgKi8KLWRpZmYgLS1naXQgYS9sZC9sZG1haW4uYyBiL2xkL2xkbWFpbi5jCi1pbmRleCA3N2NkYmQwZGQyLi43MjU1MTJmMTI2IDEwMDY0NAotLS0tIGEvbGQvbGRtYWluLmMKLSsrKyBiL2xkL2xkbWFpbi5jCi1AQCAtMjY5LDYgKzI2OSw4IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgIGNvbW1hbmRfbGluZS53YXJuX21pc21hdGNoID0gVFJVRTsKLSAgIGNvbW1hbmRfbGluZS53YXJuX3NlYXJjaF9taXNtYXRjaCA9IFRSVUU7Ci0gICBjb21tYW5kX2xpbmUuY2hlY2tfc2VjdGlvbl9hZGRyZXNzZXMgPSAtMTsKLSsgIGNvbW1hbmRfbGluZS5wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gVFJVRTsKLSsgIGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gRkFMU0U7Ci0gCi0gICAvKiBXZSBpbml0aWFsaXplIERFTUFOR0xJTkcgYmFzZWQgb24gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCi0gICAgICBDT0xMRUNUX05PX0RFTUFOR0xFLiAgVGhlIGdjYyBjb2xsZWN0MiBwcm9ncmFtIHdpbGwgZGVtYW5nbGUgdGhlCi1kaWZmIC0tZ2l0IGEvbGQvbGV4c3VwLmMgYi9sZC9sZXhzdXAuYwotaW5kZXggODhlODVjNzNmNC4uZWVkMWI3MTQ1NiAxMDA2NDQKLS0tLSBhL2xkL2xleHN1cC5jCi0rKysgYi9sZC9sZXhzdXAuYwotQEAgLTU0Myw2ICs1NDMsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBsZF9vcHRpb24gbGRfb3B0aW9uc1tdID0KLSAgIHsgeyJvcnBoYW4taGFuZGxpbmciLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgT1BUSU9OX09SUEhBTl9IQU5ETElOR30sCi0gICAgICdcMCcsIE5fKCI9TU9ERSIpLCBOXygiQ29udHJvbCBob3cgb3JwaGFuIHNlY3Rpb25zIGFyZSBoYW5kbGVkLiIpLAotICAgICBUV09fREFTSEVTIH0sCi0rICB7IHsibm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyIsIG5vX2FyZ3VtZW50LCBOVUxMLAotKyAgICAgT1BUSU9OX05PX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVN9LAotKyAgICAnXDAnLCBOVUxMLCBOXygiRG8gbm90IHdhcm4gZm9yIC1MIG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIiksCi0rICAgIFRXT19EQVNIRVMgfSwKLSsgIHsgeyJlcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIiwgbm9fYXJndW1lbnQsIE5VTEwsCi0rICAgICsgICAgIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTfSwKLSsgICAgJ1wwJywgTlVMTCwgTl8oIkdpdmUgYW4gZXJyb3IgZm9yIC1MIG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIiksCi0rICAgIFRXT19EQVNIRVMgfSwKLSB9OwotIAotICNkZWZpbmUgT1BUSU9OX0NPVU5UIEFSUkFZX1NJWkUgKGxkX29wdGlvbnMpCi1AQCAtMTU3Nyw2ICsxNTg1LDE0IEBAIHBhcnNlX2FyZ3MgKHVuc2lnbmVkIGFyZ2MsIGNoYXIgKiphcmd2KQotIAkgICAgZWluZm8gKF8oIiVGJVA6IGludmFsaWQgYXJndW1lbnQgdG8gb3B0aW9uIgotIAkJICAgICAiIFwiLS1vcnBoYW4taGFuZGxpbmdcIlxuIikpOwotIAkgIGJyZWFrOwotKwotKwljYXNlIE9QVElPTl9OT19QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTOgotKwkgIGNvbW1hbmRfbGluZS5wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gRkFMU0U7Ci0rCSAgYnJlYWs7Ci0rCi0rCWNhc2UgT1BUSU9OX0VSUk9SX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVM6Ci0rCSAgY29tbWFuZF9saW5lLmVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMgPSBUUlVFOwotKwkgIGJyZWFrOwotIAl9Ci0gICAgIH0KLSAKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmIxZTdhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1Gcm9tIDJjZDU2MTNhODZmODc3MmY5ZDdmMTg4NTMyNzE4MzYzNjY4ZWQ5OWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjQyOjM4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMTVdIEZpeCBycGF0aCBpbiBsaWJ0b29sIHdoZW4gc3lzcm9vdCBpcyBlbmFibGVkCi0KLUVuYWJsaW5nIHN5c3Jvb3Qgc3VwcG9ydCBpbiBsaWJ0b29sIGV4cG9zZWQgYSBidWcgd2hlcmUgdGhlIGZpbmFsCi1saWJyYXJ5IGhhZCBhbiBSUEFUSCBlbmNvZGVkIGludG8gaXQgd2hpY2ggc3RpbGwgcG9pbnRlZCB0byB0aGUKLXN5c3Jvb3QuIFRoaXMgd29ya3MgYXJvdW5kIHRoZSBpc3N1ZSB1bnRpbCBpdCBnZXRzIHNvcnRlZCBvdXQKLXVwc3RyZWFtLgotCi1GaXggc3VnZ2VzdGVkIGJ5IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsdG1haW4uc2ggfCAxMCArKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAotaW5kZXggNzBlODU2ZTA2NS4uMTFlZTY4NGNjYyAxMDA2NDQKLS0tLSBhL2x0bWFpbi5zaAotKysrIGIvbHRtYWluLnNoCi1AQCAtODAzNSw5ICs4MDM1LDExIEBAIEVPRgotIAkgIHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKLSAJICBmb3IgbGliZGlyIGluICRycGF0aDsgZG8KLSAJICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgotKwkJICBmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKLSsJCSAgbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKLSsJCSAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkbGliZGlyIgotKwkJICBsaWJkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotIAkgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KLS0JCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgotLQkJbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKLSAJCWlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgotIAkJICBoYXJkY29kZV9saWJkaXJzPSIkbGliZGlyIgotIAkJZWxzZQotQEAgLTg3NzAsNiArODc3MiwxMCBAQCBFT0YKLSAgICAgICBoYXJkY29kZV9saWJkaXJzPQotICAgICAgIGZvciBsaWJkaXIgaW4gJGNvbXBpbGVfcnBhdGggJGZpbmFsaXplX3JwYXRoOyBkbwotIAlpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KLSsJICBmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKLSsJICBsaWJkaXI9JGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdAotKwkgIGZ1bmNfc3RyaXBuYW1lICc9JyAnJyAiJGxpYmRpciIKLSsJICBsaWJkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotIAkgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgotIAkgICAgaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCi0gCSAgICAgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFhODExMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaApAQCAtMCwwICsxLDI2OSBAQAorRnJvbSA3YjI0ZjgxZTA0YzlkMDBkOTZkZTdkYmQyNTBiZWFkZTZkMmM2ZTQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTUgSmFuIDIwMTYgMDY6MzE6MDkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gd2FybiBmb3IgdXNlcyBvZiBzeXN0ZW0gZGlyZWN0b3JpZXMgd2hlbiBjcm9zcyBsaW5raW5nCisKKzIwMDgtMDctMDIgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgorCisgICAgbGQvCisgICAgKiBsZC5oIChhcmdzX3R5cGUpOiBBZGQgZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KKyAgICAqIGxkLnRleGluZm8gKC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcyk6IERvY3VtZW50LgorICAgICogbGRmaWxlLmMgKGxkZmlsZV9hZGRfbGlicmFyeV9wYXRoKTogQ2hlY2sKKyAgICBjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KKyAgICAqIGxkbWFpbi5jIChtYWluKTogSW5pdGlhbGl6ZQorICAgIGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgorICAgICogbGV4c3VwLmMgKGVudW0gb3B0aW9uX3ZhbHVlcyk6IEFkZAorICAgIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTLgorICAgIChsZF9vcHRpb25zKTogQWRkIC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy4KKyAgICAocGFyc2VfYXJncyk6IEhhbmRsZSBuZXcgb3B0aW9uLgorCisyMDA3LTA2LTEzICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KKworICAgIGxkLworICAgICogY29uZmlnLmluOiBSZWdlbmVyYXRlLgorICAgICogbGQuaCAoYXJnc190eXBlKTogQWRkIHBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCisgICAgKiBsZC50ZXhpbmZvICgtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMpOiBEb2N1bWVudC4KKyAgICAqIGxkZmlsZS5jIChsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCk6IENoZWNrCisgICAgY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCisgICAgKiBsZG1haW4uYyAobWFpbik6IEluaXRpYWxpemUKKyAgICBjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KKyAgICAqIGxleHN1cC5jIChlbnVtIG9wdGlvbl92YWx1ZXMpOiBBZGQKKyAgICBPUFRJT05fTk9fUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUy4KKyAgICAobGRfb3B0aW9ucyk6IEFkZCAtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMuCisgICAgKHBhcnNlX2FyZ3MpOiBIYW5kbGUgbmV3IG9wdGlvbi4KKworMjAwNy0wNC0yMCAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICBNZXJnZSBmcm9tIFNvdXJjZXJ5IEcrKyBiaW51dGlscyAyLjE3OgorCisgICAgMjAwNy0wMy0yMCAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CisgICAgQmFzZWQgb24gcGF0Y2ggYnkgTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPi4KKyAgICBsZC8KKyAgICAqIGNvbmZpZ3VyZS5pbiAoLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcyk6IE5ldyBvcHRpb24uCisgICAgKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KKyAgICAqIGxkZmlsZS5jIChsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCk6IElmCisgICAgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMgZGVmaW5lZCwgd2FybiBmb3IgdXNlIG9mIC9saWIsCisgICAgL3Vzci9saWIsIC91c3IvbG9jYWwvbGliIG9yIC91c3IvWDExUjYvbGliLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGQvY29uZmlnLmluICAgIHwgIDMgKysrCisgbGQvY29uZmlndXJlICAgIHwgMTYgKysrKysrKysrKysrKysrKworIGxkL2NvbmZpZ3VyZS5hYyB8IDEwICsrKysrKysrKysKKyBsZC9sZC5oICAgICAgICAgfCAgOCArKysrKysrKworIGxkL2xkLnRleGkgICAgICB8IDEyICsrKysrKysrKysrKworIGxkL2xkZmlsZS5jICAgICB8IDE3ICsrKysrKysrKysrKysrKysrCisgbGQvbGRsZXguaCAgICAgIHwgIDIgKysKKyBsZC9sZG1haW4uYyAgICAgfCAgMiArKworIGxkL2xleHN1cC5jICAgICB8IDE1ICsrKysrKysrKysrKysrKworIDkgZmlsZXMgY2hhbmdlZCwgODUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGQvY29uZmlnLmluIGIvbGQvY29uZmlnLmluCitpbmRleCBkOTNjOWIwODMwLi41ZGEyNzQyYmVhIDEwMDY0NAorLS0tIGEvbGQvY29uZmlnLmluCisrKysgYi9sZC9jb25maWcuaW4KK0BAIC0zMSw2ICszMSw5IEBACisgICAgbGFuZ3VhZ2UgaXMgcmVxdWVzdGVkLiAqLworICN1bmRlZiBFTkFCTEVfTkxTCisgCisrLyogRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXMgKi8KKysjdW5kZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKKysKKyAvKiBBZGRpdGlvbmFsIGV4dGVuc2lvbiBhIHNoYXJlZCBvYmplY3QgbWlnaHQgaGF2ZS4gKi8KKyAjdW5kZWYgRVhUUkFfU0hMSUJfRVhURU5TSU9OCisgCitkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlIGIvbGQvY29uZmlndXJlCitpbmRleCA4MTExMzRhNTAzLi5mOGMxN2MxOWFlIDEwMDc1NQorLS0tIGEvbGQvY29uZmlndXJlCisrKysgYi9sZC9jb25maWd1cmUKK0BAIC04MjYsNiArODI2LDcgQEAgd2l0aF9saWJfcGF0aAorIGVuYWJsZV90YXJnZXRzCisgZW5hYmxlXzY0X2JpdF9iZmQKKyB3aXRoX3N5c3Jvb3QKKytlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcworIGVuYWJsZV9nb2xkCisgZW5hYmxlX2dvdAorIGVuYWJsZV9jb21wcmVzc2VkX2RlYnVnX3NlY3Rpb25zCitAQCAtMTQ5MSw2ICsxNDkyLDggQEAgT3B0aW9uYWwgRmVhdHVyZXM6CisgICAtLWRpc2FibGUtbGFyZ2VmaWxlICAgICBvbWl0IHN1cHBvcnQgZm9yIGxhcmdlIGZpbGVzCisgICAtLWVuYWJsZS10YXJnZXRzICAgICAgICBhbHRlcm5hdGl2ZSB0YXJnZXQgY29uZmlndXJhdGlvbnMKKyAgIC0tZW5hYmxlLTY0LWJpdC1iZmQgICAgIDY0LWJpdCBzdXBwb3J0IChvbiBob3N0cyB3aXRoIG5hcnJvd2VyIHdvcmQgc2l6ZXMpCisrICAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBsaWJyYXJ5IGRpcmVjdG9yaWVzCisgICAtLWVuYWJsZS1nb2xkWz1BUkddICAgICBidWlsZCBnb2xkIFtBUkc9e2RlZmF1bHQseWVzLG5vfV0KKyAgIC0tZW5hYmxlLWdvdD08dHlwZT4gICAgIEdPVCBoYW5kbGluZyBzY2hlbWUgKHRhcmdldCwgc2luZ2xlLCBuZWdhdGl2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpZ290KQorQEAgLTE1Nzg4LDYgKzE1NzkxLDE5IEBAIGZpCisgCisgCisgCisrIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgZW5hYmxldmFsPSRlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllczsKKytlbHNlCisrICBlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ubworK2ZpCisrCisraWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgorKworKyRhc19lY2hvICIjZGVmaW5lIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTIDEiID4+Y29uZmRlZnMuaAorKworK2ZpCisrCisgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWdvbGQgd2FzIGdpdmVuLgorIGlmIHRlc3QgIiR7ZW5hYmxlX2dvbGQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAgZW5hYmxldmFsPSRlbmFibGVfZ29sZDsgY2FzZSAiJHtlbmFibGV2YWx9IiBpbgorZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZS5hYyBiL2xkL2NvbmZpZ3VyZS5hYworaW5kZXggYjVlODQ5ZDg0YS4uMjJlMDIyZWMwMyAxMDA2NDQKKy0tLSBhL2xkL2NvbmZpZ3VyZS5hYworKysrIGIvbGQvY29uZmlndXJlLmFjCitAQCAtOTQsNiArOTQsMTYgQEAgQUNfU1VCU1QodXNlX3N5c3Jvb3QpCisgQUNfU1VCU1QoVEFSR0VUX1NZU1RFTV9ST09UKQorIEFDX1NVQlNUKFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkUpCisgCisrQUNfQVJHX0VOQUJMRShbcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCisrICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAorKyAgICAgICAgICAgICAgICBbd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gbGlicmFyeSBkaXJlY3Rvcmllc10pLCwKKysgICAgICAgICBbZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm9dKQorK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KKysgIEFDX0RFRklORShbRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVNdLAorKyAgICAgICBbMV0sCisrICAgICAgIFtEZWZpbmUgdG8gd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gbGlicmFyeSBkaXJlY3Rvcmllc10pCisrZmkKKysKKyBkbmwgVXNlIC0tZW5hYmxlLWdvbGQgdG8gZGVjaWRlIGlmIHRoaXMgbGlua2VyIHNob3VsZCBiZSB0aGUgZGVmYXVsdC4KKyBkbmwgImluc3RhbGxfYXNfZGVmYXVsdCIgaXMgc2V0IHRvIGZhbHNlIGlmIGdvbGQgaXMgdGhlIGRlZmF1bHQgbGlua2VyLgorIGRubCAiaW5zdGFsbGVkX2xpbmtlciIgaXMgdGhlIGluc3RhbGxlZCBCRkQgbGlua2VyIG5hbWUuCitkaWZmIC0tZ2l0IGEvbGQvbGQuaCBiL2xkL2xkLmgKK2luZGV4IDcxZmQ3ODEyNjcuLjVjNzg0MzEwMGIgMTAwNjQ0CistLS0gYS9sZC9sZC5oCisrKysgYi9sZC9sZC5oCitAQCAtMTY2LDYgKzE2NiwxNCBAQCB0eXBlZGVmIHN0cnVjdAorICAgICAgaW4gdGhlIGxpbmtlciBzY3JpcHQuICAqLworICAgYmZkX2Jvb2xlYW4gZm9yY2VfZ3JvdXBfYWxsb2NhdGlvbjsKKyAKKysgIC8qIElmIFRSVUUgKHRoZSBkZWZhdWx0KSB3YXJuIGZvciB1c2VzIG9mIHN5c3RlbSBkaXJlY3RvcmllcyB3aGVuCisrICAgICBjcm9zcyBsaW5raW5nLiAgKi8KKysgIGJmZF9ib29sZWFuIHBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7CisrCisrICAvKiBJZiBUUlVFIChkZWZhdWx0IEZBTFNFKSBnaXZlIGFuIGVycm9yIGZvciB1c2VzIG9mIHN5c3RlbQorKyAgICAgZGlyZWN0b3JpZXMgd2hlbiBjcm9zcyBsaW5raW5nIGluc3RlYWQgb2YgYSB3YXJuaW5nLiAgKi8KKysgIGJmZF9ib29sZWFuIGVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7CisrCisgICAvKiBCaWcgb3IgbGl0dGxlIGVuZGlhbiBhcyBzZXQgb24gY29tbWFuZCBsaW5lLiAgKi8KKyAgIGVudW0gZW5kaWFuX2VudW0gZW5kaWFuOworIAorZGlmZiAtLWdpdCBhL2xkL2xkLnRleGkgYi9sZC9sZC50ZXhpCitpbmRleCBlYjdiY2I5OTMzLi4zYzczZDQ0NWEwIDEwMDY0NAorLS0tIGEvbGQvbGQudGV4aQorKysrIGIvbGQvbGQudGV4aQorQEAgLTI1NTEsNiArMjU1MSwxOCBAQCBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIG9yaWdpbmFsIGxpbmtlZCBmaWxlIGRvZXMgbm90IGNoYW5nZS4KKyAKKyBQYXNzaW5nIEBjb2Rle25vbmV9IGZvciBAdmFye3N0eWxlfSBkaXNhYmxlcyB0aGUgc2V0dGluZyBmcm9tIGFueQorIEBjb2Rley0tYnVpbGQtaWR9IG9wdGlvbnMgZWFybGllciBvbiB0aGUgY29tbWFuZCBsaW5lLgorKworK0BraW5kZXggLS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrQGl0ZW0gLS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrRG8gbm90IHdhcm4gZm9yIEBvcHRpb257LUx9IG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIHN1Y2ggYXMKKytAZmlsZXsvdXNyL2xpYn0gd2hlbiBjcm9zcyBsaW5raW5nLiAgVGhpcyBvcHRpb24gaXMgaW50ZW5kZWQgZm9yIHVzZQorK2luIGNocm9vdCBlbnZpcm9ubWVudHMgd2hlbiBzdWNoIGRpcmVjdG9yaWVzIGNvbnRhaW4gdGhlIGNvcnJlY3QKKytsaWJyYXJpZXMgZm9yIHRoZSB0YXJnZXQgc3lzdGVtIHJhdGhlciB0aGFuIHRoZSBob3N0LgorKworK0BraW5kZXggLS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrQGl0ZW0gLS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrR2l2ZSBhbiBlcnJvciBpbnN0ZWFkIG9mIGEgd2FybmluZyBmb3IgQG9wdGlvbnstTH0gb3B0aW9ucyB1c2luZworK3N5c3RlbSBkaXJlY3RvcmllcyB3aGVuIGNyb3NzIGxpbmtpbmcuCisgQGVuZCB0YWJsZQorIAorIEBjIG1hbiBlbmQKK2RpZmYgLS1naXQgYS9sZC9sZGZpbGUuYyBiL2xkL2xkZmlsZS5jCitpbmRleCA0MTFmN2RkZjk3Li4xN2RiMTZjMmNjIDEwMDY0NAorLS0tIGEvbGQvbGRmaWxlLmMKKysrKyBiL2xkL2xkZmlsZS5jCitAQCAtMTE3LDYgKzExNywyMyBAQCBsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgYmZkX2Jvb2xlYW4gY21kbGluZSkKKyAgICAgbmV3X2RpcnMtPm5hbWUgPSBjb25jYXQgKGxkX3N5c3Jvb3QsIG5hbWUgKyBzdHJsZW4gKCIkU1lTUk9PVCIpLCAoY29uc3QgY2hhciAqKSBOVUxMKTsKKyAgIGVsc2UKKyAgICAgbmV3X2RpcnMtPm5hbWUgPSB4c3RyZHVwIChuYW1lKTsKKysKKysjaWZkZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKKysgIGlmIChjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcworKyAgJiYgKCghc3RybmNtcCAobmFtZSwgIi9saWIiLCA0KSkKKysgICAgICB8fCAoIXN0cm5jbXAgKG5hbWUsICIvdXNyL2xpYiIsIDgpKQorKyAgICAgIHx8ICghc3RybmNtcCAobmFtZSwgIi91c3IvbG9jYWwvbGliIiwgMTQpKQorKyAgICAgIHx8ICghc3RybmNtcCAobmFtZSwgIi91c3IvWDExUjYvbGliIiwgMTQpKSkpCisrICAgeworKyAgICAgaWYgKGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKQorKyAgICAgICBlaW5mbyAoXygiJVglUDogZXJyb3I6IGxpYnJhcnkgc2VhcmNoIHBhdGggXCIlc1wiIGlzIHVuc2FmZSBmb3IgIgorKyAgICAgICAgICAgICJjcm9zcy1jb21waWxhdGlvblxuIiksIG5hbWUpOworKyAgICAgZWxzZQorKyAgICAgICBlaW5mbyAoXygiJVA6IHdhcm5pbmc6IGxpYnJhcnkgc2VhcmNoIHBhdGggXCIlc1wiIGlzIHVuc2FmZSBmb3IgIgorKyAgICAgICAgICAgICJjcm9zcy1jb21waWxhdGlvblxuIiksIG5hbWUpOworKyAgIH0KKysjZW5kaWYKKysKKyB9CisgCisgLyogVHJ5IHRvIG9wZW4gYSBCRkQgZm9yIGEgbGFuZ19pbnB1dF9zdGF0ZW1lbnQuICAqLworZGlmZiAtLWdpdCBhL2xkL2xkbGV4LmggYi9sZC9sZGxleC5oCitpbmRleCA1Mjg3ZjE5YTdmLi41NTA5NmU0ZmM5IDEwMDY0NAorLS0tIGEvbGQvbGRsZXguaAorKysrIGIvbGQvbGRsZXguaAorQEAgLTE1MCw2ICsxNTAsOCBAQCBlbnVtIG9wdGlvbl92YWx1ZXMKKyAgIE9QVElPTl9GT1JDRV9HUk9VUF9BTExPQ0FUSU9OLAorICAgT1BUSU9OX1BSSU5UX01BUF9ESVNDQVJERUQsCisgICBPUFRJT05fTk9fUFJJTlRfTUFQX0RJU0NBUkRFRCwKKysgIE9QVElPTl9OT19QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTLAorKyAgT1BUSU9OX0VSUk9SX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMsCisgfTsKKyAKKyAvKiBUaGUgaW5pdGlhbCBwYXJzZXIgc3RhdGVzLiAgKi8KK2RpZmYgLS1naXQgYS9sZC9sZG1haW4uYyBiL2xkL2xkbWFpbi5jCitpbmRleCBkYTFhZDE3NzYzLi4xMmQwYjA3ZDhhIDEwMDY0NAorLS0tIGEvbGQvbGRtYWluLmMKKysrKyBiL2xkL2xkbWFpbi5jCitAQCAtMjc0LDYgKzI3NCw4IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgIGNvbW1hbmRfbGluZS53YXJuX21pc21hdGNoID0gVFJVRTsKKyAgIGNvbW1hbmRfbGluZS53YXJuX3NlYXJjaF9taXNtYXRjaCA9IFRSVUU7CisgICBjb21tYW5kX2xpbmUuY2hlY2tfc2VjdGlvbl9hZGRyZXNzZXMgPSAtMTsKKysgIGNvbW1hbmRfbGluZS5wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gVFJVRTsKKysgIGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gRkFMU0U7CisgCisgICAvKiBXZSBpbml0aWFsaXplIERFTUFOR0xJTkcgYmFzZWQgb24gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCisgICAgICBDT0xMRUNUX05PX0RFTUFOR0xFLiAgVGhlIGdjYyBjb2xsZWN0MiBwcm9ncmFtIHdpbGwgZGVtYW5nbGUgdGhlCitkaWZmIC0tZ2l0IGEvbGQvbGV4c3VwLmMgYi9sZC9sZXhzdXAuYworaW5kZXggM2QxNWNjNDkxZC4uMGU4YjRmMmI3YSAxMDA2NDQKKy0tLSBhL2xkL2xleHN1cC5jCisrKysgYi9sZC9sZXhzdXAuYworQEAgLTU1MCw2ICs1NTAsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBsZF9vcHRpb24gbGRfb3B0aW9uc1tdID0KKyAgIHsgeyJuby1wcmludC1tYXAtZGlzY2FyZGVkIiwgbm9fYXJndW1lbnQsIE5VTEwsIE9QVElPTl9OT19QUklOVF9NQVBfRElTQ0FSREVEfSwKKyAgICAgJ1wwJywgTlVMTCwgTl8oIkRvIG5vdCBzaG93IGRpc2NhcmRlZCBzZWN0aW9ucyBpbiBtYXAgZmlsZSBvdXRwdXQiKSwKKyAgICAgVFdPX0RBU0hFUyB9LAorKyAgeyB7Im5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMiLCBub19hcmd1bWVudCwgTlVMTCwKKysgICAgIE9QVElPTl9OT19QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTfSwKKysgICAgJ1wwJywgTlVMTCwgTl8oIkRvIG5vdCB3YXJuIGZvciAtTCBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyIpLAorKyAgICBUV09fREFTSEVTIH0sCisrICB7IHsiZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyIsIG5vX2FyZ3VtZW50LCBOVUxMLAorKyAgICArICAgICBPUFRJT05fRVJST1JfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU30sCisrICAgICdcMCcsIE5VTEwsIE5fKCJHaXZlIGFuIGVycm9yIGZvciAtTCBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyIpLAorKyAgICBUV09fREFTSEVTIH0sCisgfTsKKyAKKyAjZGVmaW5lIE9QVElPTl9DT1VOVCBBUlJBWV9TSVpFIChsZF9vcHRpb25zKQorQEAgLTE2MDMsNiArMTYxMSwxMyBAQCBwYXJzZV9hcmdzICh1bnNpZ25lZCBhcmdjLCBjaGFyICoqYXJndikKKyAKKyAJY2FzZSBPUFRJT05fUFJJTlRfTUFQX0RJU0NBUkRFRDoKKyAJICBjb25maWcucHJpbnRfbWFwX2Rpc2NhcmRlZCA9IFRSVUU7CisrCisrCWNhc2UgT1BUSU9OX05PX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVM6CisrCSAgY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMgPSBGQUxTRTsKKysJICBicmVhazsKKysKKysJY2FzZSBPUFRJT05fRVJST1JfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUzoKKysJICBjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcyA9IFRSVUU7CisgCSAgYnJlYWs7CisgCX0KKyAgICAgfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTAtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmNGFjNzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZyb20gOTU4YTQ5NzQ5Yjc3MjY2MGQzYmFmYjgwNzQ4ODI5Y2JhNmJlZDA2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6NDQ6MTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8xNV0gQ2hhbmdlIGRlZmF1bHQgZW11bGF0aW9uIGZvciBtaXBzNjQqLSotbGludXgKLQotd2UgY2hhbmdlIHRoZSBkZWZhdWx0IGVtdWxhdGlvbnMgdG8gYmUgTjY0IGluc3RlYWQgb2YgTjMyCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbIE9FIGNvbmZpZ3VyYXRpb24gU3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBiZmQvY29uZmlnLmJmZCAgIHwgOCArKysrLS0tLQotIGxkL2NvbmZpZ3VyZS50Z3QgfCA4ICsrKystLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iZmQvY29uZmlnLmJmZCBiL2JmZC9jb25maWcuYmZkCi1pbmRleCAwZTFkZGI2NTljLi5kNGY1MGYwYThkIDEwMDY0NAotLS0tIGEvYmZkL2NvbmZpZy5iZmQKLSsrKyBiL2JmZC9jb25maWcuYmZkCi1AQCAtOTE5LDEyICs5MTksMTIgQEAgY2FzZSAiJHt0YXJnfSIgaW4KLSAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2xlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyBtaXBzX2Vjb2ZmX2JlX3ZlYyBtaXBzX2Vjb2ZmX2xlX3ZlYyIKLSAgICAgOzsKLSAgIG1pcHM2NCplbC0qLWxpbnV4KikKLS0gICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9udHJhZF9sZV92ZWMKLS0gICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9iZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIgotKyAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjY0X3RyYWRfbGVfdmVjCi0rICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9udHJhZF9iZV92ZWMgbWlwc19lbGYzMl9udHJhZF9sZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9iZV92ZWMiCi0gICAgIDs7Ci0gICBtaXBzNjQqLSotbGludXgqKQotLSAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX250cmFkX2JlX3ZlYwotLSAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbnRyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9iZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMiCi0rICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmNjRfdHJhZF9iZV92ZWMKLSsgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX250cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyIKLSAgICAgOzsKLSAgIG1pcHMqZWwtKi1saW51eCopCi0gICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfdHJhZF9sZV92ZWMKLWRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUudGd0IGIvbGQvY29uZmlndXJlLnRndAotaW5kZXggYmViYTE3ZWY1MS4uOTE3YmU2ZjhlYiAxMDA2NDQKLS0tLSBhL2xkL2NvbmZpZ3VyZS50Z3QKLSsrKyBiL2xkL2NvbmZpZ3VyZS50Z3QKLUBAIC00NjgsMTEgKzQ2OCwxMSBAQCBtaXBzKmVsLSotdnh3b3JrcyopCXRhcmdfZW11bD1lbGYzMmVsbWlwdnh3b3JrcwotIG1pcHMqLSotdnh3b3JrcyopCXRhcmdfZW11bD1lbGYzMmVibWlwdnh3b3JrcwotIAkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyZWxtaXB2eHdvcmtzIiA7OwotIG1pcHMqLSotd2luZGlzcykJdGFyZ19lbXVsPWVsZjMybWlwc3dpbmRpc3MgOzsKLS1taXBzNjQqZWwtKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmMzJsdHNtaXBuMzIKLS0JCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmJ0c21pcG4zMiBlbGYzMmx0c21pcCBlbGYzMmJ0c21pcCBlbGY2NGx0c21pcCBlbGY2NGJ0c21pcCIKLSttaXBzNjQqZWwtKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmNjRsdHNtaXAKLSsJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmJ0c21pcG4zMiBlbGYzMmx0c21pcG4zMiBlbGYzMmx0c21pcCBlbGYzMmJ0c21pcCBlbGY2NGJ0c21pcCIKLSAJCQl0YXJnX2V4dHJhX2xpYnBhdGg9JHRhcmdfZXh0cmFfZW11bHMgOzsKLS1taXBzNjQqLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjMyYnRzbWlwbjMyCi0tCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJsdHNtaXBuMzIgZWxmMzJidHNtaXAgZWxmMzJsdHNtaXAgZWxmNjRidHNtaXAgZWxmNjRsdHNtaXAiCi0rbWlwczY0Ki0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGY2NGJ0c21pcAotKwkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwbjMyIGVsZjMybHRzbWlwbjMyIGVsZjMyYnRzbWlwIGVsZjMybHRzbWlwIGVsZjY0bHRzbWlwIgotIAkJCXRhcmdfZXh0cmFfbGlicGF0aD0kdGFyZ19leHRyYV9lbXVscyA7OwotIG1pcHMqZWwtKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmMzJsdHNtaXAKLSAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmJ0c21pcCBlbGYzMmx0c21pcG4zMiBlbGY2NGx0c21pcCBlbGYzMmJ0c21pcG4zMiBlbGY2NGJ0c21pcCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTAtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0ZjFhMDYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gNzBmM2YyZDllOTEyZWE3NzdmYTExM2UwMmNkYmMzNDY1YTY2ZTQwZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6NDI6MzggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IHJwYXRoIGluIGxpYnRvb2wgd2hlbiBzeXNyb290IGlzIGVuYWJsZWQKKworRW5hYmxpbmcgc3lzcm9vdCBzdXBwb3J0IGluIGxpYnRvb2wgZXhwb3NlZCBhIGJ1ZyB3aGVyZSB0aGUgZmluYWwKK2xpYnJhcnkgaGFkIGFuIFJQQVRIIGVuY29kZWQgaW50byBpdCB3aGljaCBzdGlsbCBwb2ludGVkIHRvIHRoZQorc3lzcm9vdC4gVGhpcyB3b3JrcyBhcm91bmQgdGhlIGlzc3VlIHVudGlsIGl0IGdldHMgc29ydGVkIG91dAordXBzdHJlYW0uCisKK0ZpeCBzdWdnZXN0ZWQgYnkgUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGx0bWFpbi5zaCB8IDEwICsrKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCitpbmRleCA3MGU4NTZlMDY1Li4xMWVlNjg0Y2NjIDEwMDY0NAorLS0tIGEvbHRtYWluLnNoCisrKysgYi9sdG1haW4uc2gKK0BAIC04MDM1LDkgKzgwMzUsMTEgQEAgRU9GCisgCSAgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgorIAkgIGZvciBsaWJkaXIgaW4gJHJwYXRoOyBkbworIAkgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCisrCQkgIGZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgorKwkJICBsaWJkaXI9JGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdAorKwkJICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRsaWJkaXIiCisrCQkgIGxpYmRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgCSAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgorLQkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCistCQlsaWJkaXI9JGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdAorIAkJaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCisgCQkgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCisgCQllbHNlCitAQCAtODc3MCw2ICs4NzcyLDEwIEBAIEVPRgorICAgICAgIGhhcmRjb2RlX2xpYmRpcnM9CisgICAgICAgZm9yIGxpYmRpciBpbiAkY29tcGlsZV9ycGF0aCAkZmluYWxpemVfcnBhdGg7IGRvCisgCWlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgorKwkgIGZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgorKwkgIGxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0CisrCSAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkbGliZGlyIgorKwkgIGxpYmRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgCSAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCisgCSAgICBpZiB0ZXN0IC16ICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KKyAJICAgICAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjBjNWVkNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOTMgKzAsMCBAQAotRnJvbSBlNGEwY2QzMGM3ZTkzMzRlZDUwN2M5MzAxNGE4YjJkMTMxNWZmOTM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMTQgRmViIDIwMTYgMTc6MDY6MTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMS8xNV0gQWRkIHN1cHBvcnQgZm9yIE5ldGxvZ2ljIFhMUAotCi1QYXRjaCBGcm9tOiBOZWJ1IFBoaWxpcHMgPG5waGlsaXBzQG5ldGxvZ2ljbWljcm8uY29tPgotCi1Vc2luZyB0aGUgbWlwc2lzYTY0cjJubG0gdGFyZ2V0LCBhZGQgc3VwcG9ydCBmb3IgWExQIGZyb20KLU5ldGxvZ2ljLiBBbHNvLCB1cGRhdGUgdmVuZG9yIG5hbWUgdG8gTkxNIHdoZXJldmVyIGFwcGxpY2FibGUuCi0KLVVzZSAweDAwMDAwMDgwIGZvciBJTlNOX1hMUCwgdGhlIHZhbHVlIDB4MDAwMDAwNDAgaGFzIGFscmVhZHkgYmVlbgotYXNzaWduZWQgdG8gSU5TTl9PQ1RFT04zCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQmFvc2hhbiBQYW5nIDxiYW9zaGFuLnBhbmdAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGJmZC9hb3V0eC5oICAgICAgICAgICB8ICAxICsKLSBiZmQvYXJjaHVyZXMuYyAgICAgICAgfCAgMSArCi0gYmZkL2JmZC1pbjIuaCAgICAgICAgIHwgIDEgKwotIGJmZC9jb25maWcuYmZkICAgICAgICB8ICA1ICsrKysrCi0gYmZkL2NwdS1taXBzLmMgICAgICAgIHwgIDYgKysrKy0tCi0gYmZkL2VsZnh4LW1pcHMuYyAgICAgIHwgIDggKysrKysrKysKLSBiaW51dGlscy9yZWFkZWxmLmMgICAgfCAgMSArCi0gZ2FzL2NvbmZpZy90Yy1taXBzLmMgIHwgIDQgKysrLQotIGdhcy9jb25maWd1cmUgICAgICAgICB8ICAzICsrKwotIGluY2x1ZGUvZWxmL21pcHMuaCAgICB8ICAxICsKLSBpbmNsdWRlL29wY29kZS9taXBzLmggfCAgNiArKysrKysKLSBsZC9jb25maWd1cmUudGd0ICAgICAgfCAgMiArKwotIG9wY29kZXMvbWlwcy1kaXMuYyAgICB8IDEyICsrKysrLS0tLS0tLQotIG9wY29kZXMvbWlwcy1vcGMuYyAgICB8IDMxICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSAxNCBmaWxlcyBjaGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JmZC9hb3V0eC5oIGIvYmZkL2FvdXR4LmgKLWluZGV4IGU1ZDhkY2YzOTAuLjJjYzc0YTJkNjEgMTAwNjQ0Ci0tLS0gYS9iZmQvYW91dHguaAotKysrIGIvYmZkL2FvdXR4LmgKLUBAIC03OTksNiArNzk5LDcgQEAgTkFNRSAoYW91dCwgbWFjaGluZV90eXBlKSAoZW51bSBiZmRfYXJjaGl0ZWN0dXJlIGFyY2gsCi0gCWNhc2UgYmZkX21hY2hfbWlwc2lzYTY0cjY6Ci0gCWNhc2UgYmZkX21hY2hfbWlwc19zYjE6Ci0gCWNhc2UgYmZkX21hY2hfbWlwc194bHI6Ci0rCWNhc2UgYmZkX21hY2hfbWlwc194bHA6Ci0gCSAgLyogRklYTUU6IFRoZXNlIHNob3VsZCBiZSBNSVBTMywgTUlQUzQsIE1JUFMxNiwgTUlQUzMyLCBldGMuICAqLwotIAkgIGFyY2hfZmxhZ3MgPSBNX01JUFMyOwotIAkgIGJyZWFrOwotZGlmZiAtLWdpdCBhL2JmZC9hcmNodXJlcy5jIGIvYmZkL2FyY2h1cmVzLmMKLWluZGV4IDY0N2NmMGQ4ZDQuLjdlMWQwYzgxMGYgMTAwNjQ0Ci0tLS0gYS9iZmQvYXJjaHVyZXMuYwotKysrIGIvYmZkL2FyY2h1cmVzLmMKLUBAIC0xODUsNiArMTg1LDcgQEAgREVTQ1JJUFRJT04KLSAuI2RlZmluZSBiZmRfbWFjaF9taXBzX29jdGVvbjMJCTY1MDMKLSAuI2RlZmluZSBiZmRfbWFjaF9taXBzX3hscgkJODg3NjgyCSB7KiBkZWNpbWFsICdYTFInLiAgKn0KLSAuI2RlZmluZSBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyCTczNjU1MAkgeyogZGVjaW1hbCAnSUEyJy4gICp9Ci0rLiNkZWZpbmUgYmZkX21hY2hfbWlwc194bHAgICAgICAgICAgICAgIDg4NzY4MCAgIHsqIGRlY2ltYWwgJ1hMUCcuICAqfQotIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMgkJMzIKLSAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMgkJMzMKLSAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMwkJMzQKLWRpZmYgLS1naXQgYS9iZmQvYmZkLWluMi5oIGIvYmZkL2JmZC1pbjIuaAotaW5kZXggZTI1ZGE1MGFhZi4uZTI1MWQ3ZTdhYSAxMDA2NDQKLS0tLSBhL2JmZC9iZmQtaW4yLmgKLSsrKyBiL2JmZC9iZmQtaW4yLmgKLUBAIC0yMDg0LDYgKzIwODQsNyBAQCBlbnVtIGJmZF9hcmNoaXRlY3R1cmUKLSAjZGVmaW5lIGJmZF9tYWNoX21pcHNfb2N0ZW9uMyAgICAgICAgICA2NTAzCi0gI2RlZmluZSBiZmRfbWFjaF9taXBzX3hsciAgICAgICAgICAgICAgODg3NjgyICAgLyogZGVjaW1hbCAnWExSJy4gICovCi0gI2RlZmluZSBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyICAgNzM2NTUwICAgLyogZGVjaW1hbCAnSUEyJy4gICovCi0rI2RlZmluZSBiZmRfbWFjaF9taXBzX3hscCAgICAgICAgICAgICAgODg3NjgwICAgLyogZGVjaW1hbCAnWExQJy4gICovCi0gI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzIgICAgICAgICAgICAgMzIKLSAjZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIyICAgICAgICAgICAzMwotICNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjMgICAgICAgICAgIDM0Ci1kaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZy5iZmQgYi9iZmQvY29uZmlnLmJmZAotaW5kZXggY2M2NTU0NzU4OC4uMzYxNGZmNzlkNCAxMDA2NDQKLS0tLSBhL2JmZC9jb25maWcuYmZkCi0rKysgYi9iZmQvY29uZmlnLmJmZAotQEAgLTkwMiw2ICs5MDIsMTEgQEAgY2FzZSAiJHt0YXJnfSIgaW4KLSAgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9sZV92ZWMKLSAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2JlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyIKLSAgICAgOzsKLSsgIG1pcHNpc2E2NCotKi1lbGYqKQotKwl0YXJnX2RlZnZlYz1taXBzX2VsZjMyX3RyYWRfYmVfdmVjCi0rCXRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMiCi0rCXdhbnQ2ND10cnVlCi0rCTs7Ci0gICBtaXBzKi0qLWVsZiogfCBtaXBzKi0qLXJ0ZW1zKiB8IG1pcHMqLSotd2luZGlzcyB8IG1pcHMqLSotbm9uZSkKLSAgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9iZV92ZWMKLSAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2xlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyIKLWRpZmYgLS1naXQgYS9iZmQvY3B1LW1pcHMuYyBiL2JmZC9jcHUtbWlwcy5jCi1pbmRleCBiMzU5NDkxMzA1Li42MWEzZTdhYWNhIDEwMDY0NAotLS0tIGEvYmZkL2NwdS1taXBzLmMKLSsrKyBiL2JmZC9jcHUtbWlwcy5jCi1AQCAtMTA3LDcgKzEwNyw4IEBAIGVudW0KLSAgIElfbWlwc29jdGVvbjMsCi0gICBJX3hsciwKLSAgIElfaW50ZXJhcHRpdl9tcjIsCi0tICBJX21pY3JvbWlwcwotKyAgSV9taWNyb21pcHMsCi0rICBJX3hscAotIH07Ci0gCi0gI2RlZmluZSBOTihpbmRleCkgKCZhcmNoX2luZm9fc3RydWN0WyhpbmRleCkgKyAxXSkKLUBAIC0xNjIsNyArMTYzLDggQEAgc3RhdGljIGNvbnN0IGJmZF9hcmNoX2luZm9fdHlwZSBhcmNoX2luZm9fc3RydWN0W10gPQotICAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX3hsciwgIm1pcHM6eGxyIiwJICBGQUxTRSwgTk4oSV94bHIpKSwKLSAgIE4gKDMyLCAzMiwgYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMiwgIm1pcHM6aW50ZXJhcHRpdi1tcjIiLCBGQUxTRSwKLSAgICAgIE5OKElfaW50ZXJhcHRpdl9tcjIpKSwKLS0gIE4gKDY0LCA2NCwgYmZkX21hY2hfbWlwc19taWNyb21pcHMsIm1pcHM6bWljcm9taXBzIixGQUxTRSwwKQotKyAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX21pY3JvbWlwcywibWlwczptaWNyb21pcHMiLEZBTFNFLE5OKElfbWljcm9taXBzKSksCi0rICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfeGxwLCAibWlwczp4bHAiLCAgICAgIEZBTFNFLCAwKQotIH07Ci0gCi0gLyogVGhlIGRlZmF1bHQgYXJjaGl0ZWN0dXJlIGlzIG1pcHM6MzAwMCwgYnV0IHdpdGggYSBtYWNoaW5lIG51bWJlciBvZgotZGlmZiAtLWdpdCBhL2JmZC9lbGZ4eC1taXBzLmMgYi9iZmQvZWxmeHgtbWlwcy5jCi1pbmRleCA1OTk4YmM0M2E4Li4wZDU3OTUyMjJiIDEwMDY0NAotLS0tIGEvYmZkL2VsZnh4LW1pcHMuYwotKysrIGIvYmZkL2VsZnh4LW1pcHMuYwotQEAgLTY5MTksNiArNjkxOSw5IEBAIF9iZmRfZWxmX21pcHNfbWFjaCAoZmxhZ3dvcmQgZmxhZ3MpCi0gICAgIGNhc2UgRV9NSVBTX01BQ0hfSUFNUjI6Ci0gICAgICAgcmV0dXJuIGJmZF9tYWNoX21pcHNfaW50ZXJhcHRpdl9tcjI7Ci0gCi0rICAgIGNhc2UgRV9NSVBTX01BQ0hfWExQOgotKyAgICAgIHJldHVybiBiZmRfbWFjaF9taXBzX3hscDsKLSsKLSAgICAgZGVmYXVsdDoKLSAgICAgICBzd2l0Y2ggKGZsYWdzICYgRUZfTUlQU19BUkNIKQotIAl7Ci1AQCAtMTIxOTksNiArMTIyMDIsMTAgQEAgbWlwc19zZXRfaXNhX2ZsYWdzIChiZmQgKmFiZmQpCi0gICAgICAgdmFsID0gRV9NSVBTX0FSQ0hfNjRSMiB8IEVfTUlQU19NQUNIX09DVEVPTjI7Ci0gICAgICAgYnJlYWs7Ci0gCi0rCWNhc2UgYmZkX21hY2hfbWlwc194bHA6Ci0rCSAgdmFsID0gRV9NSVBTX0FSQ0hfNjRSMiB8IEVfTUlQU19NQUNIX1hMUDsKLSsJICBicmVhazsKLSsKLSAgICAgY2FzZSBiZmRfbWFjaF9taXBzaXNhMzI6Ci0gICAgICAgdmFsID0gRV9NSVBTX0FSQ0hfMzI7Ci0gICAgICAgYnJlYWs7Ci1AQCAtMTQyMTQsNiArMTQyMjEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pcHNfbWFjaF9leHRlbnNpb24gbWlwc19tYWNoX2V4dGVuc2lvbnNbXSA9Ci0gICB7IGJmZF9tYWNoX21pcHNfZ3MyNjRlLCBiZmRfbWFjaF9taXBzX2dzNDY0ZSB9LAotICAgeyBiZmRfbWFjaF9taXBzX2dzNDY0ZSwgYmZkX21hY2hfbWlwc19nczQ2NCB9LAotICAgeyBiZmRfbWFjaF9taXBzX2dzNDY0LCBiZmRfbWFjaF9taXBzaXNhNjRyMiB9LAotKyAgeyBiZmRfbWFjaF9taXBzX3hscCwgYmZkX21hY2hfbWlwc2lzYTY0cjIgfSwKLSAKLSAgIC8qIE1JUFM2NCBleHRlbnNpb25zLiAgKi8KLSAgIHsgYmZkX21hY2hfbWlwc2lzYTY0cjIsIGJmZF9tYWNoX21pcHNpc2E2NCB9LAotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL3JlYWRlbGYuYyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotaW5kZXggYjEzZWI2YTQzYi4uOWRmMzc0MjY4MiAxMDA2NDQKLS0tLSBhL2JpbnV0aWxzL3JlYWRlbGYuYwotKysrIGIvYmludXRpbHMvcmVhZGVsZi5jCi1AQCAtMzQxMiw2ICszNDEyLDcgQEAgZ2V0X21hY2hpbmVfZmxhZ3MgKEZpbGVkYXRhICogZmlsZWRhdGEsIHVuc2lnbmVkIGVfZmxhZ3MsIHVuc2lnbmVkIGVfbWFjaGluZSkKLSAJICAgIGNhc2UgRV9NSVBTX01BQ0hfT0NURU9OMzogc3RyY2F0IChidWYsICIsIG9jdGVvbjMiKTsgYnJlYWs7Ci0gCSAgICBjYXNlIEVfTUlQU19NQUNIX1hMUjogIHN0cmNhdCAoYnVmLCAiLCB4bHIiKTsgYnJlYWs7Ci0gCSAgICBjYXNlIEVfTUlQU19NQUNIX0lBTVIyOiAgc3RyY2F0IChidWYsICIsIGludGVyYXB0aXYtbXIyIik7IGJyZWFrOwotKwkgICAgY2FzZSBFX01JUFNfTUFDSF9YTFA6ICBzdHJjYXQgKGJ1ZiwgIiwgeGxwIik7IGJyZWFrOwotIAkgICAgY2FzZSAwOgotIAkgICAgLyogV2Ugc2ltcGx5IGlnbm9yZSB0aGUgZmllbGQgaW4gdGhpcyBjYXNlIHRvIGF2b2lkIGNvbmZ1c2lvbjoKLSAJICAgICAgIE1JUFMgRUxGIGRvZXMgbm90IHNwZWNpZnkgRUZfTUlQU19NQUNILCBpdCBpcyBhIEdOVQotZGlmZiAtLWdpdCBhL2dhcy9jb25maWcvdGMtbWlwcy5jIGIvZ2FzL2NvbmZpZy90Yy1taXBzLmMKLWluZGV4IGFlNTU5MDQyMjkuLmQ2ODgyNzEyZjUgMTAwNjQ0Ci0tLS0gYS9nYXMvY29uZmlnL3RjLW1pcHMuYwotKysrIGIvZ2FzL2NvbmZpZy90Yy1taXBzLmMKLUBAIC01NTQsNiArNTU0LDcgQEAgc3RhdGljIGludCBtaXBzXzMyYml0bW9kZSA9IDA7Ci0gICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1JNNzAwMCAgICAgICAgICAgICAgICAgICAgXAotICAgIHx8IG1pcHNfb3B0cy5hcmNoID09IENQVV9WUjU1MDAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB8fCBtaXBzX29wdHMubWljcm9taXBzICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1hMUCAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICkKLSAKLSAvKiBXaGV0aGVyIHRoZSBwcm9jZXNzb3IgdXNlcyBoYXJkd2FyZSBpbnRlcmxvY2tzIHRvIHByb3RlY3QgcmVhZHMKLUBAIC01ODMsNiArNTg0LDcgQEAgc3RhdGljIGludCBtaXBzXzMyYml0bW9kZSA9IDA7Ci0gICAgICYmIG1pcHNfb3B0cy5pc2EgIT0gSVNBX01JUFMzKSAgICAgICAgICAgICAgICAgICAgXAotICAgIHx8IG1pcHNfb3B0cy5hcmNoID09IENQVV9SNDMwMCAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB8fCBtaXBzX29wdHMubWljcm9taXBzICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1hMUCAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICkKLSAKLSAvKiBXaGV0aGVyIHRoZSBwcm9jZXNzb3IgdXNlcyBoYXJkd2FyZSBpbnRlcmxvY2tzIHRvIHByb3RlY3QgcmVhZHMKLUBAIC0xOTg2Nyw3ICsxOTg2OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWlwc19jcHVfaW5mbyBtaXBzX2NwdV9pbmZvX3RhYmxlW10gPQotICAgLyogQnJvYWRjb20gWExQLgotICAgICAgWExQIGlzIG1vc3RseSBsaWtlIFhMUiwgd2l0aCB0aGUgcHJvbWluZW50IGV4Y2VwdGlvbiB0aGF0IGl0IGlzCi0gICAgICBNSVBTNjRSMiByYXRoZXIgdGhhbiBNSVBTNjQuICAqLwotLSAgeyAieGxwIiwJICAgICAgMCwgMCwJCQlJU0FfTUlQUzY0UjIsIENQVV9YTFIgfSwKLSsgIHsgInhscCIsCSAgICAgIDAsIDAsCQkJSVNBX01JUFM2NFIyLCBDUFVfWExQIH0sCi0gCi0gICAvKiBNSVBTIDY0IFJlbGVhc2UgNiAqLwotICAgeyAiaTY0MDAiLAkgICAgICAwLCBBU0VfTVNBLAkJSVNBX01JUFM2NFI2LCBDUFVfTUlQUzY0UjZ9LAotZGlmZiAtLWdpdCBhL2dhcy9jb25maWd1cmUgYi9nYXMvY29uZmlndXJlCi1pbmRleCBhODJmZGU3ZmE4Li5hZmM3N2MzNDdhIDEwMDc1NQotLS0tIGEvZ2FzL2NvbmZpZ3VyZQotKysrIGIvZ2FzL2NvbmZpZ3VyZQotQEAgLTEzMzY0LDYgKzEzMzY0LDkgQEAgX0FDRU9GCi0gCSAgbWlwc2lzYTY0cjYgfCBtaXBzaXNhNjRyNmVsKQotIAkgICAgbWlwc19jcHU9bWlwczY0cjYKLSAJICAgIDs7Ci0rCSAgbWlwc2lzYTY0cjJubG0gfCBtaXBzaXNhNjRyMm5sbWVsKQotKwkJbWlwc19jcHU9eGxwCi0rCQk7OwotIAkgIG1pcHN0eDM5IHwgbWlwc3R4MzllbCkKLSAJICAgIG1pcHNfY3B1PXIzOTAwCi0gCSAgICA7OwotZGlmZiAtLWdpdCBhL2luY2x1ZGUvZWxmL21pcHMuaCBiL2luY2x1ZGUvZWxmL21pcHMuaAotaW5kZXggYjc2ZDQ1MGFlMi4uN2NkZGIzNjVhZCAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvZWxmL21pcHMuaAotKysrIGIvaW5jbHVkZS9lbGYvbWlwcy5oCi1AQCAtMjkwLDYgKzI5MCw3IEBAIEVORF9SRUxPQ19OVU1CRVJTIChSX01JUFNfbWF4ZXh0KQotICNkZWZpbmUgRV9NSVBTX01BQ0hfU0IxICAgICAgICAgMHgwMDhhMDAwMAotICNkZWZpbmUgRV9NSVBTX01BQ0hfT0NURU9OCTB4MDA4YjAwMDAKLSAjZGVmaW5lIEVfTUlQU19NQUNIX1hMUiAgICAgCTB4MDA4YzAwMDAKLSsjZGVmaW5lIEVfTUlQU19NQUNIX1hMUCAgICAgICAgIDB4MDA4ZjAwMDAKLSAjZGVmaW5lIEVfTUlQU19NQUNIX09DVEVPTjIJMHgwMDhkMDAwMAotICNkZWZpbmUgRV9NSVBTX01BQ0hfT0NURU9OMwkweDAwOGUwMDAwCi0gI2RlZmluZSBFX01JUFNfTUFDSF81NDAwCTB4MDA5MTAwMDAKLWRpZmYgLS1naXQgYS9pbmNsdWRlL29wY29kZS9taXBzLmggYi9pbmNsdWRlL29wY29kZS9taXBzLmgKLWluZGV4IGFiZDUyYzg5ODAuLjUzYjY3NTJhMWMgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL29wY29kZS9taXBzLmgKLSsrKyBiL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAotQEAgLTEyNjAsNiArMTI2MCw4IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWlwc19pc2FfdGFibGVbXSA9IHsKLSAjZGVmaW5lIElOU05fWExSICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCi0gLyogSW1hZ2luYXRpb24gaW50ZXJBcHRpdiBNUjIuICAqLwotICNkZWZpbmUgSU5TTl9JTlRFUkFQVElWX01SMgkgIDB4MDQwMDAwMDAKLSsvKiBOZXRsb2dpYyBYbFAgaW5zdHJ1Y3Rpb24gKi8KLSsjZGVmaW5lIElOU05fWExQCQkweDAwMDAwMDgwCi0gCi0gLyogRFNQIEFTRSAqLwotICNkZWZpbmUgQVNFX0RTUAkJCTB4MDAwMDAwMDEKLUBAIC0xMzgxLDYgKzEzODMsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1pcHNfaXNhX3RhYmxlW10gPSB7Ci0gI2RlZmluZSBDUFVfT0NURU9OMwk2NTAzCi0gI2RlZmluZSBDUFVfWExSICAgICAJODg3NjgyICAgCS8qIGRlY2ltYWwgJ1hMUicgICAqLwotICNkZWZpbmUgQ1BVX0lOVEVSQVBUSVZfTVIyIDczNjU1MAkvKiBkZWNpbWFsICdJQTInICAqLwotKyNkZWZpbmUgQ1BVX1hMUCAgICAgICAgIDg4NzY4MCAgICAgIC8qIGRlY2ltYWwgJ1hMUCcgICAqLwotIAotIC8qIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBDUFUgaXMgaW5jbHVkZWQgaW4gSU5TTl8qIG1hc2sgTUFTSy4gICovCi0gCi1AQCAtMTQ1OCw2ICsxNDYxLDkgQEAgY3B1X2lzX21lbWJlciAoaW50IGNwdSwgdW5zaWduZWQgaW50IG1hc2spCi0gICAgICAgcmV0dXJuICgobWFzayAmIElOU05fSVNBX01BU0spID09IElOU05fSVNBMzJSNikKLSAJICAgICB8fCAoKG1hc2sgJiBJTlNOX0lTQV9NQVNLKSA9PSBJTlNOX0lTQTY0UjYpOwotIAotKyAgICBjYXNlIENQVV9YTFA6Ci0rICAgICAgcmV0dXJuIChtYXNrICYgSU5TTl9YTFApICE9IDA7Ci0rCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgcmV0dXJuIEZBTFNFOwotICAgICB9Ci1kaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlLnRndCBiL2xkL2NvbmZpZ3VyZS50Z3QKLWluZGV4IDkxN2JlNmY4ZWIuLjM0N2RmNmMzZjYgMTAwNjQ0Ci0tLS0gYS9sZC9jb25maWd1cmUudGd0Ci0rKysgYi9sZC9jb25maWd1cmUudGd0Ci1AQCAtNDU0LDYgKzQ1NCw4IEBAIG1pcHMqZWwtc2RlLWVsZiogfCBtaXBzKmVsLW10aS1lbGYqIHwgbWlwcyplbC1pbWctZWxmKikKLSBtaXBzKi1zZGUtZWxmKiB8IG1pcHMqLW10aS1lbGYqIHwgbWlwcyotaW1nLWVsZiopCi0gCQkJdGFyZ19lbXVsPWVsZjMyYnRzbWlwCi0gCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJsdHNtaXAgZWxmMzJidHNtaXBuMzIgZWxmNjRidHNtaXAgZWxmMzJsdHNtaXBuMzIgZWxmNjRsdHNtaXAiIDs7Ci0rbWlwc2lzYTY0Ki0qLWVsZiopCXRhcmdfZW11bD1lbGYzMmJ0c21pcAotKwkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMybHRzbWlwIGVsZjY0YnRzbWlwIGVsZjY0bHRzbWlwIiA7OwotIG1pcHM2NCplbC1wczItZWxmKikJdGFyZ19lbXVsPWVsZjMybHI1OTAwbjMyCi0gCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJscjU5MDAiCi0gCQkJdGFyZ19leHRyYV9saWJwYXRoPSR0YXJnX2V4dHJhX2VtdWxzIDs7Ci1kaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9taXBzLWRpcy5jIGIvb3Bjb2Rlcy9taXBzLWRpcy5jCi1pbmRleCAwZGQ4NWUzNzc5Li4xZWE3MDhkZGU3IDEwMDY0NAotLS0tIGEvb3Bjb2Rlcy9taXBzLWRpcy5jCi0rKysgYi9vcGNvZGVzL21pcHMtZGlzLmMKLUBAIC02NzMsMTMgKzY3MywxMSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19hcmNoX2Nob2ljZSBtaXBzX2FyY2hfY2hvaWNlc1tdID0KLSAgICAgbWlwc19jcDBzZWxfbmFtZXNfeGxyLCBBUlJBWV9TSVpFIChtaXBzX2NwMHNlbF9uYW1lc194bHIpLAotICAgICBtaXBzX2NwMV9uYW1lc19taXBzMzI2NCwgbWlwc19od3JfbmFtZXNfbnVtZXJpYyB9LAotIAotLSAgLyogWExQIGlzIG1vc3RseSBsaWtlIFhMUiwgd2l0aCB0aGUgcHJvbWluZW50IGV4Y2VwdGlvbiBpdCBpcyBiZWluZwotLSAgICAgTUlQUzY0UjIuICAqLwotLSAgeyAieGxwIiwgMSwgYmZkX21hY2hfbWlwc194bHIsIENQVV9YTFIsCi0tICAgIElTQV9NSVBTNjRSMiB8IElOU05fWExSLCAwLAotLSAgICBtaXBzX2NwMF9uYW1lc194bHIsCi0tICAgIG1pcHNfY3Awc2VsX25hbWVzX3hsciwgQVJSQVlfU0laRSAobWlwc19jcDBzZWxfbmFtZXNfeGxyKSwKLS0gICAgbWlwc19jcDFfbmFtZXNfbWlwczMyNjQsIG1pcHNfaHdyX25hbWVzX251bWVyaWMgfSwKLSsgIHsgInhscCIsIDEsIGJmZF9tYWNoX21pcHNfeGxwLCBDUFVfWExQLAotKyAgICBJU0FfTUlQUzY0UjIgfCBJTlNOX1hMUCwgMCwKLSsgICAgbWlwc19jcDBfbmFtZXNfbWlwczMyNjRyMiwKLSsgICAgbWlwc19jcDBzZWxfbmFtZXNfbWlwczMyNjRyMiwgQVJSQVlfU0laRSAobWlwc19jcDBzZWxfbmFtZXNfbWlwczMyNjRyMiksCi0rICAgIG1pcHNfY3AxX25hbWVzX21pcHMzMjY0LCBtaXBzX2h3cl9uYW1lc19taXBzMzI2NHIyIH0sCi0gCi0gICAvKiBUaGlzIGVudHJ5LCBtaXBzMTYsIGlzIGhlcmUgb25seSBmb3IgSVNBL3Byb2Nlc3NvciBzZWxlY3Rpb247IGRvCi0gICAgICBub3QgcHJpbnQgaXRzIG5hbWUuICAqLwotZGlmZiAtLWdpdCBhL29wY29kZXMvbWlwcy1vcGMuYyBiL29wY29kZXMvbWlwcy1vcGMuYwotaW5kZXggODM3ZGE2YmQ5OS4uZDNlYTViODg3NyAxMDA2NDQKLS0tLSBhL29wY29kZXMvbWlwcy1vcGMuYwotKysrIGIvb3Bjb2Rlcy9taXBzLW9wYy5jCi1AQCAtMzI4LDYgKzMyOCw3IEBAIGRlY29kZV9taXBzX29wZXJhbmQgKGNvbnN0IGNoYXIgKnApCi0gI2RlZmluZSBJT0NUMwlJTlNOX09DVEVPTjMKLSAjZGVmaW5lIFhMUiAgICAgSU5TTl9YTFIKLSAjZGVmaW5lIElBTVIyCUlOU05fSU5URVJBUFRJVl9NUjIKLSsjZGVmaW5lIFhMUAlJTlNOX1hMUAotICNkZWZpbmUgSVZJUlQJQVNFX1ZJUlQKLSAjZGVmaW5lIElWSVJUNjQJQVNFX1ZJUlQ2NAotIAotQEAgLTk4OSw2ICs5OTAsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0geyJjbG8iLAkJCSJVLHMiLAkJMHg3MDAwMDAyMSwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUkzMnxONTUsCTAsCUkzNyB9LAotIHsiY2x6IiwJCQkiZCxzIiwJCTB4MDAwMDAwNTAsIDB4ZmMxZjA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJMzcsCQkwLAkwIH0sCi0geyJjbHoiLAkJCSJVLHMiLAkJMHg3MDAwMDAyMCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUkzMnxONTUsCTAsCUkzNyB9LAotK3siY3JjIiwJCQkiZCxzLHQiLAkweDcwMDAwMDFjLCAweGZjMDAwN2ZmLAlXUl8xfFJEXzJ8UkRfMywJMCwJCVhMUCwgCQkwLAkwIH0sCi0gLyogY3RjMCBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSB0YWJsZS4gICovCi0geyJjdGMxIiwJCSJ0LEciLAkJMHg0NGMwMDAwMCwgMHhmZmUwMDdmZiwJUkRfMXxXUl9DQ3xDTSwJCTAsCQlJMSwJCTAsCTAgfSwKLSB7ImN0YzEiLAkJInQsUyIsCQkweDQ0YzAwMDAwLCAweGZmZTAwN2ZmLAlSRF8xfFdSX0NDfENNLAkJMCwJCUkxLAkJMCwJMCB9LAotQEAgLTEwMjEsMTIgKzEwMjMsMTMgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQotIHsiZGFkZGl1IiwJCSJ0LHIsaiIsCTB4NjQwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfMiwJCTAsCQlJMywJCTAsCTAgfSwKLSB7ImRhZGR1IiwJCSJkLHYsdCIsCTB4MDAwMDAwMmQsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zLAkJMCwJCUkzLAkJMCwJMCB9LAotIHsiZGFkZHUiLAkJInQscixJIiwJMCwgICAgKGludCkgTV9EQUREVV9JLAlJTlNOX01BQ1JPLAkJMCwJCUkzLAkJMCwJMCB9LAotLXsiZGFkZHdjIiwJCSJkLHMsdCIsIAkweDcwMDAwMDM4LCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfM3xXUl9DMHxSRF9DMCwgMCwJCVhMUiwJCTAsCTAgfSwKLSt7ImRhZGR3YyIsCQkiZCxzLHQiLCAJMHg3MDAwMDAzOCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzN8V1JfQzB8UkRfQzAsIDAsCQlYTFJ8WExQLAkwLAkwIH0sCi0geyJkYnJlYWsiLAkJIiIsCQkweDcwMDAwMDNmLCAweGZmZmZmZmZmLAkwLAkJCTAsCQlONSwJCTAsCTAgfSwKLSB7ImRjbG8iLAkJImQscyIsCQkweDAwMDAwMDUzLCAweGZjMWYwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTY5LAkJMCwJMCB9LAotIHsiZGNsbyIsCQkiVSxzIiwJIAkweDcwMDAwMDI1LCAweGZjMDAwN2ZmLCBXUl8xfFJEXzIsIAkwLAkJSTY0fE41NSwJMCwJSTY5IH0sCi0geyJkY2x6IiwJCSJkLHMiLAkJMHgwMDAwMDA1MiwgMHhmYzFmMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUk2OSwJCTAsCTAgfSwKLSB7ImRjbHoiLAkJIlUscyIsCSAJMHg3MDAwMDAyNCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLCAJMCwJCUk2NHxONTUsCTAsCUk2OSB9LAotK3siZGNyYyIsCQkiZCxzLHQiLAkweDcwMDAwMDFkLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfMywJMCwJCVhMUCwgCQkwLAkwIH0sCi0gLyogZGN0ciBhbmQgZGN0dyBhcmUgdXNlZCBvbiB0aGUgcjUwMDAuICAqLwotIHsiZGN0ciIsCQkibyhiKSIsCSAJMHhiYzA1MDAwMCwgMHhmYzFmMDAwMCwgUkRfMiwJCQkwLAkJSTMsCQkwLAkwIH0sCi0geyJkY3R3IiwJCSJvKGIpIiwJCTB4YmMwOTAwMDAsIDB4ZmMxZjAwMDAsIFJEXzIsCQkJMCwJCUkzLAkJMCwJMCB9LAotQEAgLTEwOTgsNiArMTEwMSw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSB7ImRtZmMwIiwJCSJ0LEcsSCIsCTB4NDAyMDAwMDAsIDB4ZmZlMDA3ZjgsCVdSXzF8UkRfQzB8TEMsCQkwLAkJSTY0LAkJMCwJMCB9LAotIHsiZG1mZ2MwIiwJCSJ0LEciLAkJMHg0MDYwMDEwMCwgMHhmZmUwMDdmZiwgV1JfMXxSRF9DMHxMQywJCTAsCQkwLAkJSVZJUlQ2NCwgMCB9LAotIHsiZG1mZ2MwIiwJCSJ0LEcsSCIsCTB4NDA2MDAxMDAsIDB4ZmZlMDA3ZjgsIFdSXzF8UkRfQzB8TEMsCQkwLAkJMCwJCUlWSVJUNjQsIDAgfSwKLSt7ImRtZnVyIiwJCSJ0LGQiLAkJMHg3MDAwMDAxZSwgMHhmZmUwMDdmZiwgV1JfMSwJCQkwLAkJWExQLAkJMCwJMCB9LAotIHsiZG10IiwJCQkiIiwJCTB4NDE2MDBiYzEsIDB4ZmZmZmZmZmYsIFRSQVAsCQkJMCwJCTAsCQlNVDMyLAkwIH0sCi0geyJkbXQiLAkJCSJ0IiwJCTB4NDE2MDBiYzEsIDB4ZmZlMGZmZmYsIFdSXzF8VFJBUCwJCTAsCQkwLAkJTVQzMiwJMCB9LAotIHsiZG10YzAiLAkJInQsRyIsCQkweDQwYTAwMDAwLCAweGZmZTAwN2ZmLAlSRF8xfFdSX0MwfFdSX0NDfENNLAkwLAkJSTMsCQkwLAlFRSB9LAotQEAgLTExMTMsNiArMTExNyw4IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSAvKiBkbWZjMyBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSB0YWJsZS4gICovCi0gLyogZG10YzMgaXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGFibGUuICAqLwotIHsiZG11aCIsCQkiZCxzLHQiLAkweDAwMDAwMGRjLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfMywJCTAsCQlJNjksCQkwLAkwIH0sCi0reyJkbXR1ciIsCQkidCxkIiwJCTB4NzAwMDAwMWYsIDB4ZmZlMDA3ZmYsCVJEXzEsCQkJMCwJCVhMUCwJCTAsCTAgfSwKLSt7ImRtdWwiLAkJImQscyx0IiwJMHg3MDAwMDAwNiwgMHhmYzAwMDdmZiwJV1JfMXxSRF8yfFJEXzMsCQkwLAkJWExQLAkJMCwJMCB9LAotIHsiZG11bCIsCQkiZCxzLHQiLAkweDAwMDAwMDljLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfMywJCTAsCQlJNjksCQkwLAkwIH0sCi0geyJkbXVsIiwJCSJkLHYsdCIsCTB4NzAwMDAwMDMsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zfFdSX0hJTE8sCTAsCQlJT0NULAkJMCwJMCB9LAotIHsiZG11bCIsCQkiZCx2LHQiLAkwLCAgICAoaW50KSBNX0RNVUwsCUlOU05fTUFDUk8sCQkwLAkJSTMsCQkwLAlNMzJ8STY5IH0sCi1AQCAtMTI2Niw5ICsxMjcyLDkgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQotIHsibGQiLAkJCSJzLC1iKCtSKSIsCTB4ZWMxODAwMDAsIDB4ZmMxYzAwMDAsIFdSXzEsCQkJUkRfcGMsCQlJNjksCQkwLAkwIH0sCi0geyJsZCIsCQkJInQsQShiKSIsCTAsICAgIChpbnQpIE1fTERfQUIsCUlOU05fTUFDUk8sCQkwLAkJSTEsCQkwLAkwIH0sCi0geyJsZCIsCQkJInQsbyhiKSIsCTB4ZGMwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfM3xMTSwJCTAsCQlJMywJCTAsCTAgfSwKLS17ImxkYWRkdyIsCQkidCxiIiwJCTB4NzAwMDAwMTAsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCi0teyJsZGFkZHd1IiwJCSJ0LGIiLAkJMHg3MDAwMDAxMSwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKLS17ImxkYWRkZCIsCQkidCxiIiwJCTB4NzAwMDAwMTIsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCi0reyJsZGFkZHciLAkJInQsYiIsCQkweDcwMDAwMDEwLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSt7ImxkYWRkd3UiLAkJInQsYiIsCQkweDcwMDAwMDExLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSt7ImxkYWRkZCIsCQkidCxiIiwJCTB4NzAwMDAwMTIsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAotIHsibGRjMSIsCQkiVCxvKGIpIiwJMHhkNDAwMDAwMCwgMHhmYzAwMDAwMCwgV1JfMXxSRF8zfENMRHxGUF9ELAkwLAkJSTIsCQkwLAlTRiB9LAotIHsibGRjMSIsCQkiRSxvKGIpIiwJMHhkNDAwMDAwMCwgMHhmYzAwMDAwMCwgV1JfMXxSRF8zfENMRHxGUF9ELAkwLAkJSTIsCQkwLAlTRiB9LAotIHsibGRjMSIsCQkiVCxBKGIpIiwJMCwgICAgKGludCkgTV9MREMxX0FCLAlJTlNOX01BQ1JPLAkJSU5TTjJfTV9GUF9ELAlJMiwJCTAsCVNGIH0sCi1AQCAtMTQzMyw3ICsxNDM5LDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQotIHsibWZsbyIsCQkiZCw5IiwJCTB4MDAwMDAwMTIsIDB4ZmY5ZjA3ZmYsIFdSXzF8UkRfTE8sCQkwLAkJMCwJCUQzMiwJMCB9LAotIHsibWZsbzEiLAkJImQiLAkJMHg3MDAwMDAxMiwgMHhmZmZmMDdmZiwJV1JfMXxSRF9MTywJCTAsCQlFRSwJCTAsCTAgfSwKLSB7Im1mbGh4dSIsCQkiZCIsCQkweDAwMDAwMDUyLCAweGZmZmYwN2ZmLAlXUl8xfE1PRF9ISUxPLAkJMCwJCTAsCQlTTVQsCTAgfSwKLS17Im1mY3IiLAkJInQscyIsCQkweDcwMDAwMDE4LCAweGZjMDBmZmZmLCBXUl8xfFJEXzIsCQkwLAkJWExSLAkJMCwJMCB9LAotK3sibWZjciIsCQkidCxzIiwJCTB4NzAwMDAwMTgsIDB4ZmMwMGZmZmYsIFdSXzEsCQkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSB7Im1mc2EiLAkJImQiLAkJMHgwMDAwMDAyOCwgMHhmZmZmMDdmZiwJV1JfMSwJCQkwLAkJRUUsCQkwLAkwIH0sCi0geyJtaW4ub2IiLAkJIlgsWSxRIiwJMHg3ODAwMDAwNiwgMHhmYzIwMDAzZiwJV1JfMXxSRF8yfFJEXzN8RlBfRCwJMCwJCVNCMSwJCU1YLAkwIH0sCi0geyJtaW4ub2IiLAkJIkQsUyxRIiwJMHg0ODAwMDAwNiwgMHhmYzIwMDAzZiwJV1JfMXxSRF8yfFJEXzN8RlBfRCwJMCwJCU41NCwJCTAsCTAgfSwKLUBAIC0xNDc4LDEwICsxNDg0LDEzIEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSAvKiBtb3ZlIGlzIGF0IHRoZSB0b3Agb2YgdGhlIHRhYmxlLiAgKi8KLSB7Im1zZ24ucWgiLAkJIlgsWSxRIiwJMHg3ODIwMDAwMCwgMHhmYzIwMDAzZiwJV1JfMXxSRF8yfFJEXzN8RlBfRCwJMCwJCTAsCQlNWCwJMCB9LAotIHsibXNnc25kIiwJCSJ0IiwJCTAsICAgIChpbnQpIE1fTVNHU05ELAlJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKLSt7Im1zZ3NuZHMiLAkJImQsdCIsCQkweDRhMDAwMDAxLCAweGZmZTAwN2ZmLAlXUl8xfFJEXzJ8UkRfQzB8V1JfQzAsCTAsCQlYTFAsCQkwLAkwIH0sCi0geyJtc2dsZCIsCQkiIiwgCQkwLCAgICAoaW50KSBNX01TR0xELAlJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKLSB7Im1zZ2xkIiwJCSJ0IiwJCTAsICAgIChpbnQpIE1fTVNHTERfVCwJSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCi0teyJtc2d3YWl0IiwJCSIiLCAJCTAsICAgIChpbnQpIE1fTVNHV0FJVCwJSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCi0teyJtc2d3YWl0IiwJCSJ0IiwJCTAsICAgIChpbnQpIE1fTVNHV0FJVF9ULElOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAotK3sibXNnbGRzIiwJCSJkLHQiLAkJMHg0YTAwMDAwMiwgMHhmZmUwMDdmZiwJV1JfMXxSRF8yfFJEX0MwfFdSX0MwLAkwLAkJWExQLAkJMCwJMCB9LAotK3sibXNnd2FpdCIsCQkiIiwJCTAsICAgIChpbnQpIE1fTVNHV0FJVCwgIElOU05fTUFDUk8sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAotK3sibXNnd2FpdCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR1dBSVRfVCxJTlNOX01BQ1JPLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSt7Im1zZ3N5bmMiLAkJIiIsCQkweDRhMDAwMDA0LCAweGZmZmZmZmZmLDAsCQkJMCwJCVhMUCwJCTAsCTAgfSwKLSB7Im1zdWIuZCIsCQkiRCxSLFMsVCIsCTB4NGMwMDAwMjksIDB4ZmMwMDAwM2YsIFdSXzF8UkRfMnxSRF8zfFJEXzR8RlBfRCwgMCwJCUk0XzMzLAkJMCwJSTM3IH0sCi0geyJtc3ViLmQiLAkJIkQsUyxUIiwJMHg0NjIwMDAxOSwgMHhmZmUwMDAzZiwJV1JfMXxSRF8yfFJEXzN8RlBfRCwJMCwJCUlMMkUsCQkwLAkwIH0sCi0geyJtc3ViLmQiLAkJIkQsUyxUIiwJMHg3MjIwMDAxOSwgMHhmZmUwMDAzZiwJV1JfMXxSRF8yfFJEXzN8RlBfRCwJMCwJCUlMMkYsCQkwLAkwIH0sCi1AQCAtMTUzMSw3ICsxNTQwLDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQotIHsibXRsbyIsCQkicyw3IiwJCTB4MDAwMDAwMTMsIDB4ZmMxZmU3ZmYsIFJEXzF8V1JfTE8sCQkwLAkJMCwJCUQzMiwJMCB9LAotIHsibXRsbzEiLAkJInMiLAkJMHg3MDAwMDAxMywgMHhmYzFmZmZmZiwJUkRfMXxXUl9MTywJCTAsCQlFRSwJCTAsCTAgfSwKLSB7Im10bGh4IiwJCSJzIiwJCTB4MDAwMDAwNTMsIDB4ZmMxZmZmZmYsCVJEXzF8TU9EX0hJTE8sCQkwLAkJMCwJCVNNVCwJMCB9LAotLXsibXRjciIsCQkidCxzIiwJCTB4NzAwMDAwMTksIDB4ZmMwMGZmZmYsIFJEXzF8UkRfMiwJCTAsCQlYTFIsCQkwLAkwIH0sCi0reyJtdGNyIiwJCSJ0LHMiLAkJMHg3MDAwMDAxOSwgMHhmYzAwZmZmZiwgUkRfMSwJCQkwLAkJWExSfFhMUCwJMCwJMCB9LAotIHsibXRtMCIsCQkicyIsCQkweDcwMDAwMDA4LCAweGZjMWZmZmZmLCBSRF8xLAkJCTAsCQlJT0NULAkJMCwJMCB9LAotIHsibXRtMCIsICAgIAkJInMsdCIsCQkweDcwMDAwMDA4LCAweGZjMDBmZmZmLCBSRF8xfFJEXzIsCQkwLAkJSU9DVDMsCQkwLAkwIH0sCi0geyJtdG0xIiwJCSJzIiwJCTB4NzAwMDAwMGMsIDB4ZmMxZmZmZmYsIFJEXzEsCQkJMCwJCUlPQ1QsCQkwLAkwIH0sCi1AQCAtMTk2OCw5ICsxOTc3LDkgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQotIHsic3V4YzEiLAkJIlMsdChiKSIsCTB4NGMwMDAwMGQsIDB4ZmMwMDA3ZmYsIFJEXzF8UkRfMnxSRF8zfFNNfEZQX0QsCTAsCQlJNV8zM3xONTUsCTAsCUkzN30sCi0geyJzdyIsCQkJInQsbyhiKSIsCTB4YWMwMDAwMDAsIDB4ZmMwMDAwMDAsCVJEXzF8UkRfM3xTTSwJCTAsCQlJMSwJCTAsCTAgfSwKLSB7InN3IiwJCQkidCxBKGIpIiwJMCwgICAgKGludCkgTV9TV19BQiwJSU5TTl9NQUNSTywJCTAsCQlJMSwJCTAsCTAgfSwKLS17InN3YXB3IiwJCSJ0LGIiLAkJMHg3MDAwMDAxNCwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKLS17InN3YXB3dSIsCQkidCxiIiwJCTB4NzAwMDAwMTUsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCi0teyJzd2FwZCIsCQkidCxiIiwJCTB4NzAwMDAwMTYsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCi0reyJzd2FwdyIsCQkidCxiIiwJCTB4NzAwMDAwMTQsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAotK3sic3dhcHd1IiwJCSJ0LGIiLAkJMHg3MDAwMDAxNSwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0reyJzd2FwZCIsCQkidCxiIiwJCTB4NzAwMDAwMTYsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAotIHsic3djMCIsCQkiRSxvKGIpIiwJMHhlMDAwMDAwMCwgMHhmYzAwMDAwMCwJUkRfM3xSRF9DMHxTTSwJCTAsCQlJMSwJCTAsCUlPQ1R8SU9DVFB8SU9DVDJ8STM3IH0sCi0geyJzd2MwIiwJCSJFLEEoYikiLAkwLCAgICAoaW50KSBNX1NXQzBfQUIsCUlOU05fTUFDUk8sCQkwLAkJSTEsCQkwLAlJT0NUfElPQ1RQfElPQ1QyfEkzNyB9LAotIHsic3djMSIsCQkiVCxvKGIpIiwJMHhlNDAwMDAwMCwgMHhmYzAwMDAwMCwJUkRfMXxSRF8zfFNNfEZQX1MsCTAsCQlJMSwJCTAsCTAgfSwKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0OWI4ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK0Zyb20gMjE4Mjc5MWE0NTNmMzRiZWU2OTY4YjNlNzI4NDg2MDhjZjdkN2FiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6NDQ6MTQgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gQ2hhbmdlIGRlZmF1bHQgZW11bGF0aW9uIGZvciBtaXBzNjQqLSotbGludXgKKword2UgY2hhbmdlIHRoZSBkZWZhdWx0IGVtdWxhdGlvbnMgdG8gYmUgTjY0IGluc3RlYWQgb2YgTjMyCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbIE9FIGNvbmZpZ3VyYXRpb24gU3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBiZmQvY29uZmlnLmJmZCAgIHwgOCArKysrLS0tLQorIGxkL2NvbmZpZ3VyZS50Z3QgfCA4ICsrKystLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9iZmQvY29uZmlnLmJmZCBiL2JmZC9jb25maWcuYmZkCitpbmRleCBiOTY5MzFmNTJlLi44NDdmOWYwYmE5IDEwMDY0NAorLS0tIGEvYmZkL2NvbmZpZy5iZmQKKysrKyBiL2JmZC9jb25maWcuYmZkCitAQCAtOTExLDEyICs5MTEsMTIgQEAgY2FzZSAiJHt0YXJnfSIgaW4KKyAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2xlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyBtaXBzX2Vjb2ZmX2JlX3ZlYyBtaXBzX2Vjb2ZmX2xlX3ZlYyIKKyAgICAgOzsKKyAgIG1pcHM2NCplbC0qLWxpbnV4KikKKy0gICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9udHJhZF9sZV92ZWMKKy0gICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9iZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIgorKyAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjY0X3RyYWRfbGVfdmVjCisrICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9udHJhZF9iZV92ZWMgbWlwc19lbGYzMl9udHJhZF9sZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9iZV92ZWMiCisgICAgIDs7CisgICBtaXBzNjQqLSotbGludXgqKQorLSAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX250cmFkX2JlX3ZlYworLSAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbnRyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9iZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMiCisrICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmNjRfdHJhZF9iZV92ZWMKKysgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyIKKyAgICAgOzsKKyAgIG1pcHMqZWwtKi1saW51eCopCisgICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfdHJhZF9sZV92ZWMKK2RpZmYgLS1naXQgYS9sZC9jb25maWd1cmUudGd0IGIvbGQvY29uZmlndXJlLnRndAoraW5kZXggMjMxOTRlMzU3Zi4uZjRmMGVhZjliMiAxMDA2NDQKKy0tLSBhL2xkL2NvbmZpZ3VyZS50Z3QKKysrKyBiL2xkL2NvbmZpZ3VyZS50Z3QKK0BAIC01NDEsMTIgKzU0MSwxMiBAQCBtaXBzKi0qLXZ4d29ya3MqKQl0YXJnX2VtdWw9ZWxmMzJlYm1pcHZ4d29ya3MKKyAJCQk7OworIG1pcHMqLSotd2luZGlzcykJdGFyZ19lbXVsPWVsZjMybWlwc3dpbmRpc3MKKyAJCQk7OworLW1pcHM2NCplbC0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGYzMmx0c21pcG4zMgorLQkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwbjMyIGVsZjMybHRzbWlwIGVsZjMyYnRzbWlwIGVsZjY0bHRzbWlwIGVsZjY0YnRzbWlwIgorK21pcHM2NCplbC0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGY2NGx0c21pcAorKwkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwbjMyIGVsZjMybHRzbWlwbjMyIGVsZjMybHRzbWlwIGVsZjMyYnRzbWlwIGVsZjY0YnRzbWlwIgorIAkJCXRhcmdfZXh0cmFfbGlicGF0aD0kdGFyZ19leHRyYV9lbXVscworIAkJCTs7CistbWlwczY0Ki0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGYzMmJ0c21pcG4zMgorLQkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMybHRzbWlwbjMyIGVsZjMyYnRzbWlwIGVsZjMybHRzbWlwIGVsZjY0YnRzbWlwIGVsZjY0bHRzbWlwIgorK21pcHM2NCotKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmNjRidHNtaXAKKysJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmJ0c21pcG4zMiBlbGYzMmx0c21pcG4zMiBlbGYzMmJ0c21pcCBlbGYzMmx0c21pcCBlbGY2NGx0c21pcCIKKyAJCQl0YXJnX2V4dHJhX2xpYnBhdGg9JHRhcmdfZXh0cmFfZW11bHMKKyAJCQk7OworIG1pcHMqZWwtKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmMzJsdHNtaXAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTItQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTItQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzI4NjdhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoCkBAIC0wLDAgKzEsNDA2IEBACitGcm9tIGEwMjM3ZWMyZDFlNThiZDM1YzIzNmRmMzlkZDVhMDY1MDRjNmQyZWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxNCBGZWIgMjAxNiAxNzowNjoxOSArMDAwMAorU3ViamVjdDogW1BBVENIXSBBZGQgc3VwcG9ydCBmb3IgTmV0bG9naWMgWExQCisKK1BhdGNoIEZyb206IE5lYnUgUGhpbGlwcyA8bnBoaWxpcHNAbmV0bG9naWNtaWNyby5jb20+CisKK1VzaW5nIHRoZSBtaXBzaXNhNjRyMm5sbSB0YXJnZXQsIGFkZCBzdXBwb3J0IGZvciBYTFAgZnJvbQorTmV0bG9naWMuIEFsc28sIHVwZGF0ZSB2ZW5kb3IgbmFtZSB0byBOTE0gd2hlcmV2ZXIgYXBwbGljYWJsZS4KKworVXNlIDB4MDAwMDAwODAgZm9yIElOU05fWExQLCB0aGUgdmFsdWUgMHgwMDAwMDA0MCBoYXMgYWxyZWFkeSBiZWVuCithc3NpZ25lZCB0byBJTlNOX09DVEVPTjMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBCYW9zaGFuIFBhbmcgPGJhb3NoYW4ucGFuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmZkL2FvdXR4LmggICAgICAgICAgIHwgIDEgKworIGJmZC9hcmNodXJlcy5jICAgICAgICB8ICAxICsKKyBiZmQvYmZkLWluMi5oICAgICAgICAgfCAgMSArCisgYmZkL2NvbmZpZy5iZmQgICAgICAgIHwgIDUgKysrKysKKyBiZmQvY3B1LW1pcHMuYyAgICAgICAgfCAgNiArKysrLS0KKyBiZmQvZWxmeHgtbWlwcy5jICAgICAgfCAgOCArKysrKysrKworIGJpbnV0aWxzL3JlYWRlbGYuYyAgICB8ICAxICsKKyBnYXMvY29uZmlnL3RjLW1pcHMuYyAgfCAgNCArKystCisgZ2FzL2NvbmZpZ3VyZSAgICAgICAgIHwgIDMgKysrCisgZ2FzL2NvbmZpZ3VyZS5hYyAgICAgIHwgIDMgKysrCisgaW5jbHVkZS9lbGYvbWlwcy5oICAgIHwgIDEgKworIGluY2x1ZGUvb3Bjb2RlL21pcHMuaCB8ICA2ICsrKysrKworIGxkL2NvbmZpZ3VyZS50Z3QgICAgICB8ICAzICsrKworIG9wY29kZXMvbWlwcy1kaXMuYyAgICB8IDEyICsrKysrLS0tLS0tLQorIG9wY29kZXMvbWlwcy1vcGMuYyAgICB8IDMxICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KKyAxNSBmaWxlcyBjaGFuZ2VkLCA2NSBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2JmZC9hb3V0eC5oIGIvYmZkL2FvdXR4LmgKK2luZGV4IGZhM2E5NzQ2YjYuLjUwNzgwMjRmZDUgMTAwNjQ0CistLS0gYS9iZmQvYW91dHguaAorKysrIGIvYmZkL2FvdXR4LmgKK0BAIC03OTksNiArNzk5LDcgQEAgTkFNRSAoYW91dCwgbWFjaGluZV90eXBlKSAoZW51bSBiZmRfYXJjaGl0ZWN0dXJlIGFyY2gsCisgCWNhc2UgYmZkX21hY2hfbWlwc2lzYTY0cjY6CisgCWNhc2UgYmZkX21hY2hfbWlwc19zYjE6CisgCWNhc2UgYmZkX21hY2hfbWlwc194bHI6CisrCWNhc2UgYmZkX21hY2hfbWlwc194bHA6CisgCSAgLyogRklYTUU6IFRoZXNlIHNob3VsZCBiZSBNSVBTMywgTUlQUzQsIE1JUFMxNiwgTUlQUzMyLCBldGMuICAqLworIAkgIGFyY2hfZmxhZ3MgPSBNX01JUFMyOworIAkgIGJyZWFrOworZGlmZiAtLWdpdCBhL2JmZC9hcmNodXJlcy5jIGIvYmZkL2FyY2h1cmVzLmMKK2luZGV4IDIzMjEwMzgxN2MuLmIyYjNiOGMxMjQgMTAwNjQ0CistLS0gYS9iZmQvYXJjaHVyZXMuYworKysrIGIvYmZkL2FyY2h1cmVzLmMKK0BAIC0xODUsNiArMTg1LDcgQEAgREVTQ1JJUFRJT04KKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzX29jdGVvbjMJCTY1MDMKKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzX3hscgkJODg3NjgyCSB7KiBkZWNpbWFsICdYTFInLiAgKn0KKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyCTczNjU1MAkgeyogZGVjaW1hbCAnSUEyJy4gICp9CisrLiNkZWZpbmUgYmZkX21hY2hfbWlwc194bHAgICAgICAgICAgICAgIDg4NzY4MCAgIHsqIGRlY2ltYWwgJ1hMUCcuICAqfQorIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMgkJMzIKKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMgkJMzMKKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMwkJMzQKK2RpZmYgLS1naXQgYS9iZmQvYmZkLWluMi5oIGIvYmZkL2JmZC1pbjIuaAoraW5kZXggN2MxM2JjOGM5MS4uMmU0NTNjNTBjMSAxMDA2NDQKKy0tLSBhL2JmZC9iZmQtaW4yLmgKKysrKyBiL2JmZC9iZmQtaW4yLmgKK0BAIC0xNTY4LDYgKzE1NjgsNyBAQCBlbnVtIGJmZF9hcmNoaXRlY3R1cmUKKyAjZGVmaW5lIGJmZF9tYWNoX21pcHNfb2N0ZW9uMyAgICAgICAgICA2NTAzCisgI2RlZmluZSBiZmRfbWFjaF9taXBzX3hsciAgICAgICAgICAgICAgODg3NjgyICAgLyogZGVjaW1hbCAnWExSJy4gICovCisgI2RlZmluZSBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyICAgNzM2NTUwICAgLyogZGVjaW1hbCAnSUEyJy4gICovCisrI2RlZmluZSBiZmRfbWFjaF9taXBzX3hscCAgICAgICAgICAgICAgODg3NjgwICAgLyogZGVjaW1hbCAnWExQJy4gICovCisgI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzIgICAgICAgICAgICAgMzIKKyAjZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIyICAgICAgICAgICAzMworICNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjMgICAgICAgICAgIDM0CitkaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZy5iZmQgYi9iZmQvY29uZmlnLmJmZAoraW5kZXggODQ3ZjlmMGJhOS4uYTEyNzA3ZjgyNyAxMDA2NDQKKy0tLSBhL2JmZC9jb25maWcuYmZkCisrKysgYi9iZmQvY29uZmlnLmJmZAorQEAgLTg5NCw2ICs4OTQsMTEgQEAgY2FzZSAiJHt0YXJnfSIgaW4KKyAgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9sZV92ZWMKKyAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2JlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyIKKyAgICAgOzsKKysgIG1pcHNpc2E2NCotKi1lbGYqKQorKwl0YXJnX2RlZnZlYz1taXBzX2VsZjMyX3RyYWRfYmVfdmVjCisrCXRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMiCisrCXdhbnQ2ND10cnVlCisrCTs7CisgICBtaXBzKi0qLWVsZiogfCBtaXBzKi0qLXJ0ZW1zKiB8IG1pcHMqLSotd2luZGlzcyB8IG1pcHMqLSotbm9uZSkKKyAgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9iZV92ZWMKKyAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2xlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyIKK2RpZmYgLS1naXQgYS9iZmQvY3B1LW1pcHMuYyBiL2JmZC9jcHUtbWlwcy5jCitpbmRleCA4MDJhY2I0NWYxLi5mZDllYzRjMGFkIDEwMDY0NAorLS0tIGEvYmZkL2NwdS1taXBzLmMKKysrKyBiL2JmZC9jcHUtbWlwcy5jCitAQCAtMTA4LDcgKzEwOCw4IEBAIGVudW0KKyAgIElfbWlwc29jdGVvbjMsCisgICBJX3hsciwKKyAgIElfaW50ZXJhcHRpdl9tcjIsCistICBJX21pY3JvbWlwcworKyAgSV9taWNyb21pcHMsCisrICBJX3hscAorIH07CisgCisgI2RlZmluZSBOTihpbmRleCkgKCZhcmNoX2luZm9fc3RydWN0WyhpbmRleCkgKyAxXSkKK0BAIC0xNjMsNyArMTY0LDggQEAgc3RhdGljIGNvbnN0IGJmZF9hcmNoX2luZm9fdHlwZSBhcmNoX2luZm9fc3RydWN0W10gPQorICAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX3hsciwgIm1pcHM6eGxyIiwJICAgRkFMU0UsIE5OKElfeGxyKSksCisgICBOICgzMiwgMzIsIGJmZF9tYWNoX21pcHNfaW50ZXJhcHRpdl9tcjIsICJtaXBzOmludGVyYXB0aXYtbXIyIiwgRkFMU0UsCisgICAgICBOTihJX2ludGVyYXB0aXZfbXIyKSksCistICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfbWljcm9taXBzLCAibWlwczptaWNyb21pcHMiLCBGQUxTRSwgTlVMTCkKKysgIE4gKDY0LCA2NCwgYmZkX21hY2hfbWlwc19taWNyb21pcHMsICJtaXBzOm1pY3JvbWlwcyIsIEZBTFNFLCBOTihJX21pY3JvbWlwcykpLAorKyAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX3hscCwgIm1pcHM6eGxwIiwgRkFMU0UsIE5VTEwpCisgfTsKKyAKKyAvKiBUaGUgZGVmYXVsdCBhcmNoaXRlY3R1cmUgaXMgbWlwczozMDAwLCBidXQgd2l0aCBhIG1hY2hpbmUgbnVtYmVyIG9mCitkaWZmIC0tZ2l0IGEvYmZkL2VsZnh4LW1pcHMuYyBiL2JmZC9lbGZ4eC1taXBzLmMKK2luZGV4IGQ3ZTNhZWQzYjYuLjdiYWVlZTllZTMgMTAwNjQ0CistLS0gYS9iZmQvZWxmeHgtbWlwcy5jCisrKysgYi9iZmQvZWxmeHgtbWlwcy5jCitAQCAtNjk5OSw2ICs2OTk5LDkgQEAgX2JmZF9lbGZfbWlwc19tYWNoIChmbGFnd29yZCBmbGFncykKKyAgICAgY2FzZSBFX01JUFNfTUFDSF9JQU1SMjoKKyAgICAgICByZXR1cm4gYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMjsKKyAKKysgICAgY2FzZSBFX01JUFNfTUFDSF9YTFA6CisrICAgICAgcmV0dXJuIGJmZF9tYWNoX21pcHNfeGxwOworKworICAgICBkZWZhdWx0OgorICAgICAgIHN3aXRjaCAoZmxhZ3MgJiBFRl9NSVBTX0FSQ0gpCisgCXsKK0BAIC0xMjM1NSw2ICsxMjM1OCwxMCBAQCBtaXBzX3NldF9pc2FfZmxhZ3MgKGJmZCAqYWJmZCkKKyAgICAgICB2YWwgPSBFX01JUFNfQVJDSF82NFIyIHwgRV9NSVBTX01BQ0hfT0NURU9OMjsKKyAgICAgICBicmVhazsKKyAKKysJY2FzZSBiZmRfbWFjaF9taXBzX3hscDoKKysJICB2YWwgPSBFX01JUFNfQVJDSF82NFIyIHwgRV9NSVBTX01BQ0hfWExQOworKwkgIGJyZWFrOworKworICAgICBjYXNlIGJmZF9tYWNoX21pcHNpc2EzMjoKKyAgICAgICB2YWwgPSBFX01JUFNfQVJDSF8zMjsKKyAgICAgICBicmVhazsKK0BAIC0xNDM3OSw2ICsxNDM4Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWlwc19tYWNoX2V4dGVuc2lvbiBtaXBzX21hY2hfZXh0ZW5zaW9uc1tdID0KKyAgIHsgYmZkX21hY2hfbWlwc19nczI2NGUsIGJmZF9tYWNoX21pcHNfZ3M0NjRlIH0sCisgICB7IGJmZF9tYWNoX21pcHNfZ3M0NjRlLCBiZmRfbWFjaF9taXBzX2dzNDY0IH0sCisgICB7IGJmZF9tYWNoX21pcHNfZ3M0NjQsIGJmZF9tYWNoX21pcHNpc2E2NHIyIH0sCisrICB7IGJmZF9tYWNoX21pcHNfeGxwLCBiZmRfbWFjaF9taXBzaXNhNjRyMiB9LAorIAorICAgLyogTUlQUzY0IGV4dGVuc2lvbnMuICAqLworICAgeyBiZmRfbWFjaF9taXBzaXNhNjRyMiwgYmZkX21hY2hfbWlwc2lzYTY0IH0sCitkaWZmIC0tZ2l0IGEvYmludXRpbHMvcmVhZGVsZi5jIGIvYmludXRpbHMvcmVhZGVsZi5jCitpbmRleCA2YjViZWJlNzQzLi5kMTVhNzgyOGRiIDEwMDY0NAorLS0tIGEvYmludXRpbHMvcmVhZGVsZi5jCisrKysgYi9iaW51dGlscy9yZWFkZWxmLmMKK0BAIC0zNDQwLDYgKzM0NDAsNyBAQCBnZXRfbWFjaGluZV9mbGFncyAoRmlsZWRhdGEgKiBmaWxlZGF0YSwgdW5zaWduZWQgZV9mbGFncywgdW5zaWduZWQgZV9tYWNoaW5lKQorIAkgICAgY2FzZSBFX01JUFNfTUFDSF9PQ1RFT04zOiBzdHJjYXQgKGJ1ZiwgIiwgb2N0ZW9uMyIpOyBicmVhazsKKyAJICAgIGNhc2UgRV9NSVBTX01BQ0hfWExSOiAgc3RyY2F0IChidWYsICIsIHhsciIpOyBicmVhazsKKyAJICAgIGNhc2UgRV9NSVBTX01BQ0hfSUFNUjI6ICBzdHJjYXQgKGJ1ZiwgIiwgaW50ZXJhcHRpdi1tcjIiKTsgYnJlYWs7CisrCSAgICBjYXNlIEVfTUlQU19NQUNIX1hMUDogIHN0cmNhdCAoYnVmLCAiLCB4bHAiKTsgYnJlYWs7CisgCSAgICBjYXNlIDA6CisgCSAgICAvKiBXZSBzaW1wbHkgaWdub3JlIHRoZSBmaWVsZCBpbiB0aGlzIGNhc2UgdG8gYXZvaWQgY29uZnVzaW9uOgorIAkgICAgICAgTUlQUyBFTEYgZG9lcyBub3Qgc3BlY2lmeSBFRl9NSVBTX01BQ0gsIGl0IGlzIGEgR05VCitkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy90Yy1taXBzLmMgYi9nYXMvY29uZmlnL3RjLW1pcHMuYworaW5kZXggZmM2ODk4ODM0ZS4uMmM3MTUxY2NkYiAxMDA2NDQKKy0tLSBhL2dhcy9jb25maWcvdGMtbWlwcy5jCisrKysgYi9nYXMvY29uZmlnL3RjLW1pcHMuYworQEAgLTU2OCw2ICs1NjgsNyBAQCBzdGF0aWMgaW50IG1pcHNfMzJiaXRtb2RlID0gMDsKKyAgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfUk03MDAwICAgICAgICAgICAgICAgICAgICBcCisgICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1ZSNTUwMCAgICAgICAgICAgICAgICAgICAgXAorICAgIHx8IG1pcHNfb3B0cy5taWNyb21pcHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfWExQICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKQorIAorIC8qIFdoZXRoZXIgdGhlIHByb2Nlc3NvciB1c2VzIGhhcmR3YXJlIGludGVybG9ja3MgdG8gcHJvdGVjdCByZWFkcworQEAgLTU5Nyw2ICs1OTgsNyBAQCBzdGF0aWMgaW50IG1pcHNfMzJiaXRtb2RlID0gMDsKKyAgICAgJiYgbWlwc19vcHRzLmlzYSAhPSBJU0FfTUlQUzMpICAgICAgICAgICAgICAgICAgICBcCisgICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1I0MzAwICAgICAgICAgICAgICAgICAgICAgXAorICAgIHx8IG1pcHNfb3B0cy5taWNyb21pcHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfWExQICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKQorIAorIC8qIFdoZXRoZXIgdGhlIHByb2Nlc3NvciB1c2VzIGhhcmR3YXJlIGludGVybG9ja3MgdG8gcHJvdGVjdCByZWFkcworQEAgLTIwMTM1LDcgKzIwMTM3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaXBzX2NwdV9pbmZvIG1pcHNfY3B1X2luZm9fdGFibGVbXSA9CisgICAvKiBCcm9hZGNvbSBYTFAuCisgICAgICBYTFAgaXMgbW9zdGx5IGxpa2UgWExSLCB3aXRoIHRoZSBwcm9taW5lbnQgZXhjZXB0aW9uIHRoYXQgaXQgaXMKKyAgICAgIE1JUFM2NFIyIHJhdGhlciB0aGFuIE1JUFM2NC4gICovCistICB7ICJ4bHAiLAkgICAgICAwLCAwLAkJCUlTQV9NSVBTNjRSMiwgQ1BVX1hMUiB9LAorKyAgeyAieGxwIiwJICAgICAgMCwgMCwJCQlJU0FfTUlQUzY0UjIsIENQVV9YTFAgfSwKKyAKKyAgIC8qIE1JUFMgNjQgUmVsZWFzZSA2LiAgKi8KKyAgIHsgImk2NDAwIiwJICAgICAgMCwgQVNFX1ZJUlQgfCBBU0VfTVNBLAlJU0FfTUlQUzY0UjYsIENQVV9NSVBTNjRSNn0sCitkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZ3VyZSBiL2dhcy9jb25maWd1cmUKK2luZGV4IDYwYzFhMDU1YWUuLjU5ZDZkMTEyMTUgMTAwNzU1CistLS0gYS9nYXMvY29uZmlndXJlCisrKysgYi9nYXMvY29uZmlndXJlCitAQCAtMTI3MjIsNiArMTI3MjIsOSBAQCBfQUNFT0YKKyAJICBtaXBzaXNhNjRyNiB8IG1pcHNpc2E2NHI2ZWwpCisgCSAgICBtaXBzX2NwdT1taXBzNjRyNgorIAkgICAgOzsKKysJICBtaXBzaXNhNjRyMm5sbSB8IG1pcHNpc2E2NHIybmxtZWwpCisrCSAgICBtaXBzX2NwdT14bHAKKysJICAgIDs7CisgCSAgbWlwc3R4MzkgfCBtaXBzdHgzOWVsKQorIAkgICAgbWlwc19jcHU9cjM5MDAKKyAJICAgIDs7CitkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZ3VyZS5hYyBiL2dhcy9jb25maWd1cmUuYWMKK2luZGV4IDZmMzJlNTVhMWEuLjExYzJlMGQyNzMgMTAwNjQ0CistLS0gYS9nYXMvY29uZmlndXJlLmFjCisrKysgYi9nYXMvY29uZmlndXJlLmFjCitAQCAtMzI1LDYgKzMyNSw5IEBAIGNoYW5nZXF1b3RlKFssXSlkbmwKKyAJICBtaXBzaXNhNjRyNiB8IG1pcHNpc2E2NHI2ZWwpCisgCSAgICBtaXBzX2NwdT1taXBzNjRyNgorIAkgICAgOzsKKysJICBtaXBzaXNhNjRyMm5sbSB8IG1pcHNpc2E2NHIybmxtZWwpCisrCSAgICBtaXBzX2NwdT14bHAKKysJICAgIDs7CisgCSAgbWlwc3R4MzkgfCBtaXBzdHgzOWVsKQorIAkgICAgbWlwc19jcHU9cjM5MDAKKyAJICAgIDs7CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9lbGYvbWlwcy5oIGIvaW5jbHVkZS9lbGYvbWlwcy5oCitpbmRleCBkMTE2YjAzNmI2Li5kY2VlYjNmMTU2IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9lbGYvbWlwcy5oCisrKysgYi9pbmNsdWRlL2VsZi9taXBzLmgKK0BAIC0yOTAsNiArMjkwLDcgQEAgRU5EX1JFTE9DX05VTUJFUlMgKFJfTUlQU19tYXhleHQpCisgI2RlZmluZSBFX01JUFNfTUFDSF9TQjEgICAgICAgICAweDAwOGEwMDAwCisgI2RlZmluZSBFX01JUFNfTUFDSF9PQ1RFT04JMHgwMDhiMDAwMAorICNkZWZpbmUgRV9NSVBTX01BQ0hfWExSICAgICAJMHgwMDhjMDAwMAorKyNkZWZpbmUgRV9NSVBTX01BQ0hfWExQICAgICAgICAgMHgwMDhmMDAwMAorICNkZWZpbmUgRV9NSVBTX01BQ0hfT0NURU9OMgkweDAwOGQwMDAwCisgI2RlZmluZSBFX01JUFNfTUFDSF9PQ1RFT04zCTB4MDA4ZTAwMDAKKyAjZGVmaW5lIEVfTUlQU19NQUNIXzU0MDAJMHgwMDkxMDAwMAorZGlmZiAtLWdpdCBhL2luY2x1ZGUvb3Bjb2RlL21pcHMuaCBiL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAoraW5kZXggZmQwMzFmMzc1OC4uYTk2YTQ0ZGY4NCAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAorKysrIGIvaW5jbHVkZS9vcGNvZGUvbWlwcy5oCitAQCAtMTI2MCw2ICsxMjYwLDggQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtaXBzX2lzYV90YWJsZVtdID0geworICNkZWZpbmUgSU5TTl9YTFIgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKKyAvKiBJbWFnaW5hdGlvbiBpbnRlckFwdGl2IE1SMi4gICovCisgI2RlZmluZSBJTlNOX0lOVEVSQVBUSVZfTVIyCSAgMHgwNDAwMDAwMAorKy8qIE5ldGxvZ2ljIFhsUCBpbnN0cnVjdGlvbiAqLworKyNkZWZpbmUgSU5TTl9YTFAJCTB4MDAwMDAwODAKKyAKKyAvKiBEU1AgQVNFICovCisgI2RlZmluZSBBU0VfRFNQCQkJMHgwMDAwMDAwMQorQEAgLTEzODQsNiArMTM4Niw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWlwc19pc2FfdGFibGVbXSA9IHsKKyAjZGVmaW5lIENQVV9PQ1RFT04zCTY1MDMKKyAjZGVmaW5lIENQVV9YTFIgICAgIAk4ODc2ODIgICAJLyogZGVjaW1hbCAnWExSJyAgICovCisgI2RlZmluZSBDUFVfSU5URVJBUFRJVl9NUjIgNzM2NTUwCS8qIGRlY2ltYWwgJ0lBMicgICovCisrI2RlZmluZSBDUFVfWExQICAgICAgICAgODg3NjgwICAgICAgLyogZGVjaW1hbCAnWExQJyAgICovCisgCisgLyogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIENQVSBpcyBpbmNsdWRlZCBpbiBJTlNOXyogbWFzayBNQVNLLiAgKi8KKyAKK0BAIC0xNDYxLDYgKzE0NjQsOSBAQCBjcHVfaXNfbWVtYmVyIChpbnQgY3B1LCB1bnNpZ25lZCBpbnQgbWFzaykKKyAgICAgICByZXR1cm4gKChtYXNrICYgSU5TTl9JU0FfTUFTSykgPT0gSU5TTl9JU0EzMlI2KQorIAkgICAgIHx8ICgobWFzayAmIElOU05fSVNBX01BU0spID09IElOU05fSVNBNjRSNik7CisgCisrICAgIGNhc2UgQ1BVX1hMUDoKKysgICAgICByZXR1cm4gKG1hc2sgJiBJTlNOX1hMUCkgIT0gMDsKKysKKyAgICAgZGVmYXVsdDoKKyAgICAgICByZXR1cm4gRkFMU0U7CisgICAgIH0KK2RpZmYgLS1naXQgYS9sZC9jb25maWd1cmUudGd0IGIvbGQvY29uZmlndXJlLnRndAoraW5kZXggZjRmMGVhZjliMi4uMGRhM2VjYTE5YyAxMDA2NDQKKy0tLSBhL2xkL2NvbmZpZ3VyZS50Z3QKKysrKyBiL2xkL2NvbmZpZ3VyZS50Z3QKK0BAIC01MjAsNiArNTIwLDkgQEAgbWlwcyotc2RlLWVsZiogfCBtaXBzKi1tdGktZWxmKiB8IG1pcHMqLWltZy1lbGYqKQorIAkJCXRhcmdfZW11bD1lbGYzMmJ0c21pcAorIAkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMybHRzbWlwIGVsZjMyYnRzbWlwbjMyIGVsZjY0YnRzbWlwIGVsZjMybHRzbWlwbjMyIGVsZjY0bHRzbWlwIgorIAkJCTs7CisrbWlwc2lzYTY0Ki0qLWVsZiopCXRhcmdfZW11bD1lbGYzMmJ0c21pcAorKwkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMybHRzbWlwIGVsZjY0YnRzbWlwIGVsZjY0bHRzbWlwIgorKwkJCTs7CisgbWlwczY0KmVsLXBzMi1lbGYqKQl0YXJnX2VtdWw9ZWxmMzJscjU5MDBuMzIKKyAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmxyNTkwMCIKKyAJCQl0YXJnX2V4dHJhX2xpYnBhdGg9JHRhcmdfZXh0cmFfZW11bHMKK2RpZmYgLS1naXQgYS9vcGNvZGVzL21pcHMtZGlzLmMgYi9vcGNvZGVzL21pcHMtZGlzLmMKK2luZGV4IDc1NWJiZTI5NGIuLmNlMjJlZjY4M2EgMTAwNjQ0CistLS0gYS9vcGNvZGVzL21pcHMtZGlzLmMKKysrKyBiL29wY29kZXMvbWlwcy1kaXMuYworQEAgLTY3NCwxMyArNjc0LDExIEBAIGNvbnN0IHN0cnVjdCBtaXBzX2FyY2hfY2hvaWNlIG1pcHNfYXJjaF9jaG9pY2VzW10gPQorICAgICBtaXBzX2NwMHNlbF9uYW1lc194bHIsIEFSUkFZX1NJWkUgKG1pcHNfY3Awc2VsX25hbWVzX3hsciksCisgICAgIG1pcHNfY3AxX25hbWVzX21pcHMzMjY0LCBtaXBzX2h3cl9uYW1lc19udW1lcmljIH0sCisgCistICAvKiBYTFAgaXMgbW9zdGx5IGxpa2UgWExSLCB3aXRoIHRoZSBwcm9taW5lbnQgZXhjZXB0aW9uIGl0IGlzIGJlaW5nCistICAgICBNSVBTNjRSMi4gICovCistICB7ICJ4bHAiLCAxLCBiZmRfbWFjaF9taXBzX3hsciwgQ1BVX1hMUiwKKy0gICAgSVNBX01JUFM2NFIyIHwgSU5TTl9YTFIsIDAsCistICAgIG1pcHNfY3AwX25hbWVzX3hsciwKKy0gICAgbWlwc19jcDBzZWxfbmFtZXNfeGxyLCBBUlJBWV9TSVpFIChtaXBzX2NwMHNlbF9uYW1lc194bHIpLAorLSAgICBtaXBzX2NwMV9uYW1lc19taXBzMzI2NCwgbWlwc19od3JfbmFtZXNfbnVtZXJpYyB9LAorKyAgeyAieGxwIiwgMSwgYmZkX21hY2hfbWlwc194bHAsIENQVV9YTFAsCisrICAgIElTQV9NSVBTNjRSMiB8IElOU05fWExQLCAwLAorKyAgICBtaXBzX2NwMF9uYW1lc19taXBzMzI2NHIyLAorKyAgICBtaXBzX2NwMHNlbF9uYW1lc19taXBzMzI2NHIyLCBBUlJBWV9TSVpFIChtaXBzX2NwMHNlbF9uYW1lc19taXBzMzI2NHIyKSwKKysgICAgbWlwc19jcDFfbmFtZXNfbWlwczMyNjQsIG1pcHNfaHdyX25hbWVzX21pcHMzMjY0cjIgfSwKKyAKKyAgIC8qIFRoaXMgZW50cnksIG1pcHMxNiwgaXMgaGVyZSBvbmx5IGZvciBJU0EvcHJvY2Vzc29yIHNlbGVjdGlvbjsgZG8KKyAgICAgIG5vdCBwcmludCBpdHMgbmFtZS4gICovCitkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9taXBzLW9wYy5jIGIvb3Bjb2Rlcy9taXBzLW9wYy5jCitpbmRleCA1MjcwYWVlZmE4Li5kMTdkYzc4Y2Q3IDEwMDY0NAorLS0tIGEvb3Bjb2Rlcy9taXBzLW9wYy5jCisrKysgYi9vcGNvZGVzL21pcHMtb3BjLmMKK0BAIC0zMjgsNiArMzI4LDcgQEAgZGVjb2RlX21pcHNfb3BlcmFuZCAoY29uc3QgY2hhciAqcCkKKyAjZGVmaW5lIElPQ1QzCUlOU05fT0NURU9OMworICNkZWZpbmUgWExSICAgICBJTlNOX1hMUgorICNkZWZpbmUgSUFNUjIJSU5TTl9JTlRFUkFQVElWX01SMgorKyNkZWZpbmUgWExQCUlOU05fWExQCisgI2RlZmluZSBJVklSVAlBU0VfVklSVAorICNkZWZpbmUgSVZJUlQ2NAlBU0VfVklSVDY0CisgCitAQCAtOTkwLDYgKzk5MSw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyB7ImNsbyIsCQkJIlUscyIsCQkweDcwMDAwMDIxLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTMyfE41NSwJMCwJSTM3IH0sCisgeyJjbHoiLAkJCSJkLHMiLAkJMHgwMDAwMDA1MCwgMHhmYzFmMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUkzNywJCTAsCTAgfSwKKyB7ImNseiIsCQkJIlUscyIsCQkweDcwMDAwMDIwLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTMyfE41NSwJMCwJSTM3IH0sCisreyJjcmMiLAkJCSJkLHMsdCIsCTB4NzAwMDAwMWMsIDB4ZmMwMDA3ZmYsCVdSXzF8UkRfMnxSRF8zLAkwLAkJWExQLCAJCTAsCTAgfSwKKyAvKiBjdGMwIGlzIGF0IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLiAgKi8KKyB7ImN0YzEiLAkJInQsRyIsCQkweDQ0YzAwMDAwLCAweGZmZTAwN2ZmLAlSRF8xfFdSX0NDfENNLAkJMCwJCUkxLAkJMCwJMCB9LAorIHsiY3RjMSIsCQkidCxTIiwJCTB4NDRjMDAwMDAsIDB4ZmZlMDA3ZmYsCVJEXzF8V1JfQ0N8Q00sCQkwLAkJSTEsCQkwLAkwIH0sCitAQCAtMTAyMiwxMiArMTAyNCwxMyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgeyJkYWRkaXUiLAkJInQscixqIiwJMHg2NDAwMDAwMCwgMHhmYzAwMDAwMCwgV1JfMXxSRF8yLAkJMCwJCUkzLAkJMCwJMCB9LAorIHsiZGFkZHUiLAkJImQsdix0IiwJMHgwMDAwMDAyZCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCQkwLAkJSTMsCQkwLAkwIH0sCisgeyJkYWRkdSIsCQkidCxyLEkiLAkwLCAgICAoaW50KSBNX0RBRERVX0ksCUlOU05fTUFDUk8sCQkwLAkJSTMsCQkwLAkwIH0sCisteyJkYWRkd2MiLAkJImQscyx0IiwgCTB4NzAwMDAwMzgsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zfFdSX0MwfFJEX0MwLCAwLAkJWExSLAkJMCwJMCB9LAorK3siZGFkZHdjIiwJCSJkLHMsdCIsIAkweDcwMDAwMDM4LCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfM3xXUl9DMHxSRF9DMCwgMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyB7ImRicmVhayIsCQkiIiwJCTB4NzAwMDAwM2YsIDB4ZmZmZmZmZmYsCTAsCQkJMCwJCU41LAkJMCwJMCB9LAorIHsiZGNsbyIsCQkiZCxzIiwJCTB4MDAwMDAwNTMsIDB4ZmMxZjA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJNjksCQkwLAkwIH0sCisgeyJkY2xvIiwJCSJVLHMiLAkgCTB4NzAwMDAwMjUsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMiwgCTAsCQlJNjR8TjU1LAkwLAlJNjkgfSwKKyB7ImRjbHoiLAkJImQscyIsCQkweDAwMDAwMDUyLCAweGZjMWYwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTY5LAkJMCwJMCB9LAorIHsiZGNseiIsCQkiVSxzIiwJIAkweDcwMDAwMDI0LCAweGZjMDAwN2ZmLCBXUl8xfFJEXzIsIAkwLAkJSTY0fE41NSwJMCwJSTY5IH0sCisreyJkY3JjIiwJCSJkLHMsdCIsCTB4NzAwMDAwMWQsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zLAkwLAkJWExQLCAJCTAsCTAgfSwKKyAvKiBkY3RyIGFuZCBkY3R3IGFyZSB1c2VkIG9uIHRoZSByNTAwMC4gICovCisgeyJkY3RyIiwJCSJvKGIpIiwJIAkweGJjMDUwMDAwLCAweGZjMWYwMDAwLCBSRF8yLAkJCTAsCQlJMywJCTAsCTAgfSwKKyB7ImRjdHciLAkJIm8oYikiLAkJMHhiYzA5MDAwMCwgMHhmYzFmMDAwMCwgUkRfMiwJCQkwLAkJSTMsCQkwLAkwIH0sCitAQCAtMTA5OSw2ICsxMTAyLDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorIHsiZG1mYzAiLAkJInQsRyxIIiwJMHg0MDIwMDAwMCwgMHhmZmUwMDdmOCwJV1JfMXxSRF9DMHxMQywJCTAsCQlJNjQsCQkwLAkwIH0sCisgeyJkbWZnYzAiLAkJInQsRyIsCQkweDQwNjAwMTAwLCAweGZmZTAwN2ZmLCBXUl8xfFJEX0MwfExDLAkJMCwJCTAsCQlJVklSVDY0LCAwIH0sCisgeyJkbWZnYzAiLAkJInQsRyxIIiwJMHg0MDYwMDEwMCwgMHhmZmUwMDdmOCwgV1JfMXxSRF9DMHxMQywJCTAsCQkwLAkJSVZJUlQ2NCwgMCB9LAorK3siZG1mdXIiLAkJInQsZCIsCQkweDcwMDAwMDFlLCAweGZmZTAwN2ZmLCBXUl8xLAkJCTAsCQlYTFAsCQkwLAkwIH0sCisgeyJkbXQiLAkJCSIiLAkJMHg0MTYwMGJjMSwgMHhmZmZmZmZmZiwgVFJBUCwJCQkwLAkJMCwJCU1UMzIsCTAgfSwKKyB7ImRtdCIsCQkJInQiLAkJMHg0MTYwMGJjMSwgMHhmZmUwZmZmZiwgV1JfMXxUUkFQLAkJMCwJCTAsCQlNVDMyLAkwIH0sCisgeyJkbXRjMCIsCQkidCxHIiwJCTB4NDBhMDAwMDAsIDB4ZmZlMDA3ZmYsCVJEXzF8V1JfQzB8V1JfQ0N8Q00sCTAsCQlJMywJCTAsCUVFIH0sCitAQCAtMTExNCw2ICsxMTE4LDggQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorIC8qIGRtZmMzIGlzIGF0IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLiAgKi8KKyAvKiBkbXRjMyBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSB0YWJsZS4gICovCisgeyJkbXVoIiwJCSJkLHMsdCIsCTB4MDAwMDAwZGMsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zLAkJMCwJCUk2OSwJCTAsCTAgfSwKKyt7ImRtdHVyIiwJCSJ0LGQiLAkJMHg3MDAwMDAxZiwgMHhmZmUwMDdmZiwJUkRfMSwJCQkwLAkJWExQLAkJMCwJMCB9LAorK3siZG11bCIsCQkiZCxzLHQiLAkweDcwMDAwMDA2LCAweGZjMDAwN2ZmLAlXUl8xfFJEXzJ8UkRfMywJCTAsCQlYTFAsCQkwLAkwIH0sCisgeyJkbXVsIiwJCSJkLHMsdCIsCTB4MDAwMDAwOWMsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zLAkJMCwJCUk2OSwJCTAsCTAgfSwKKyB7ImRtdWwiLAkJImQsdix0IiwJMHg3MDAwMDAwMywgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzN8V1JfSElMTywJMCwJCUlPQ1QsCQkwLAkwIH0sCisgeyJkbXVsIiwJCSJkLHYsdCIsCTAsICAgIChpbnQpIE1fRE1VTCwJSU5TTl9NQUNSTywJCTAsCQlJMywJCTAsCU0zMnxJNjkgfSwKK0BAIC0xMjY3LDkgKzEyNzMsOSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgeyJsZCIsCQkJInMsLWIoK1IpIiwJMHhlYzE4MDAwMCwgMHhmYzFjMDAwMCwgV1JfMSwJCQlSRF9wYywJCUk2OSwJCTAsCTAgfSwKKyB7ImxkIiwJCQkidCxBKGIpIiwJMCwgICAgKGludCkgTV9MRF9BQiwJSU5TTl9NQUNSTywJCTAsCQlJMSwJCTAsCTAgfSwKKyB7ImxkIiwJCQkidCxvKGIpIiwJMHhkYzAwMDAwMCwgMHhmYzAwMDAwMCwgV1JfMXxSRF8zfExNLAkJMCwJCUkzLAkJMCwJMCB9LAorLXsibGRhZGR3IiwJCSJ0LGIiLAkJMHg3MDAwMDAxMCwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKKy17ImxkYWRkd3UiLAkJInQsYiIsCQkweDcwMDAwMDExLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAorLXsibGRhZGRkIiwJCSJ0LGIiLAkJMHg3MDAwMDAxMiwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKKyt7ImxkYWRkdyIsCQkidCxiIiwJCTB4NzAwMDAwMTAsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAorK3sibGRhZGR3dSIsCQkidCxiIiwJCTB4NzAwMDAwMTEsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAorK3sibGRhZGRkIiwJCSJ0LGIiLAkJMHg3MDAwMDAxMiwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisgeyJsZGMxIiwJCSJULG8oYikiLAkweGQ0MDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzN8Q0xEfEZQX0QsCTAsCQlJMiwJCTAsCVNGIH0sCisgeyJsZGMxIiwJCSJFLG8oYikiLAkweGQ0MDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzN8Q0xEfEZQX0QsCTAsCQlJMiwJCTAsCVNGIH0sCisgeyJsZGMxIiwJCSJULEEoYikiLAkwLCAgICAoaW50KSBNX0xEQzFfQUIsCUlOU05fTUFDUk8sCQlJTlNOMl9NX0ZQX0QsCUkyLAkJMCwJU0YgfSwKK0BAIC0xNDM4LDcgKzE0NDQsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgeyJtZmxvIiwJCSJkLDkiLAkJMHgwMDAwMDAxMiwgMHhmZjlmMDdmZiwgV1JfMXxSRF9MTywJCTAsCQkwLAkJRDMyLAkwIH0sCisgeyJtZmxvMSIsCQkiZCIsCQkweDcwMDAwMDEyLCAweGZmZmYwN2ZmLAlXUl8xfFJEX0xPLAkJMCwJCUVFLAkJMCwJMCB9LAorIHsibWZsaHh1IiwJCSJkIiwJCTB4MDAwMDAwNTIsIDB4ZmZmZjA3ZmYsCVdSXzF8TU9EX0hJTE8sCQkwLAkJMCwJCVNNVCwJMCB9LAorLXsibWZjciIsCQkidCxzIiwJCTB4NzAwMDAwMTgsIDB4ZmMwMGZmZmYsIFdSXzF8UkRfMiwJCTAsCQlYTFIsCQkwLAkwIH0sCisreyJtZmNyIiwJCSJ0LHMiLAkJMHg3MDAwMDAxOCwgMHhmYzAwZmZmZiwgV1JfMSwJCQkwLAkJWExSfFhMUCwJMCwJMCB9LAorIHsibWZzYSIsCQkiZCIsCQkweDAwMDAwMDI4LCAweGZmZmYwN2ZmLAlXUl8xLAkJCTAsCQlFRSwJCTAsCTAgfSwKKyB7Im1pbi5vYiIsCQkiWCxZLFEiLAkweDc4MDAwMDA2LCAweGZjMjAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJU0IxLAkJTVgsCTAgfSwKKyB7Im1pbi5vYiIsCQkiRCxTLFEiLAkweDQ4MDAwMDA2LCAweGZjMjAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJTjU0LAkJMCwJMCB9LAorQEAgLTE0ODMsMTAgKzE0ODksMTMgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorIC8qIG1vdmUgaXMgYXQgdGhlIHRvcCBvZiB0aGUgdGFibGUuICAqLworIHsibXNnbi5xaCIsCQkiWCxZLFEiLAkweDc4MjAwMDAwLCAweGZjMjAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJMCwJCU1YLAkwIH0sCisgeyJtc2dzbmQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dTTkQsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAorK3sibXNnc25kcyIsCQkiZCx0IiwJCTB4NGEwMDAwMDEsIDB4ZmZlMDA3ZmYsCVdSXzF8UkRfMnxSRF9DMHxXUl9DMCwJMCwJCVhMUCwJCTAsCTAgfSwKKyB7Im1zZ2xkIiwJCSIiLCAJCTAsICAgIChpbnQpIE1fTVNHTEQsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAorIHsibXNnbGQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dMRF9ULAlJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKKy17Im1zZ3dhaXQiLAkJIiIsIAkJMCwgICAgKGludCkgTV9NU0dXQUlULAlJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKKy17Im1zZ3dhaXQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dXQUlUX1QsSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCisreyJtc2dsZHMiLAkJImQsdCIsCQkweDRhMDAwMDAyLCAweGZmZTAwN2ZmLAlXUl8xfFJEXzJ8UkRfQzB8V1JfQzAsCTAsCQlYTFAsCQkwLAkwIH0sCisreyJtc2d3YWl0IiwJCSIiLAkJMCwgICAgKGludCkgTV9NU0dXQUlULCAgSU5TTl9NQUNSTywJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisreyJtc2d3YWl0IiwJCSJ0IiwJCTAsICAgIChpbnQpIE1fTVNHV0FJVF9ULElOU05fTUFDUk8sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAorK3sibXNnc3luYyIsCQkiIiwJCTB4NGEwMDAwMDQsIDB4ZmZmZmZmZmYsMCwJCQkwLAkJWExQLAkJMCwJMCB9LAorIHsibXN1Yi5kIiwJCSJELFIsUyxUIiwJMHg0YzAwMDAyOSwgMHhmYzAwMDAzZiwgV1JfMXxSRF8yfFJEXzN8UkRfNHxGUF9ELCAwLAkJSTRfMzMsCQkwLAlJMzcgfSwKKyB7Im1zdWIuZCIsCQkiRCxTLFQiLAkweDQ2MjAwMDE5LCAweGZmZTAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJSUwyRSwJCTAsCTAgfSwKKyB7Im1zdWIuZCIsCQkiRCxTLFQiLAkweDcyMjAwMDE5LCAweGZmZTAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJSUwyRiwJCTAsCTAgfSwKK0BAIC0xNTM2LDcgKzE1NDUsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgeyJtdGxvIiwJCSJzLDciLAkJMHgwMDAwMDAxMywgMHhmYzFmZTdmZiwgUkRfMXxXUl9MTywJCTAsCQkwLAkJRDMyLAkwIH0sCisgeyJtdGxvMSIsCQkicyIsCQkweDcwMDAwMDEzLCAweGZjMWZmZmZmLAlSRF8xfFdSX0xPLAkJMCwJCUVFLAkJMCwJMCB9LAorIHsibXRsaHgiLAkJInMiLAkJMHgwMDAwMDA1MywgMHhmYzFmZmZmZiwJUkRfMXxNT0RfSElMTywJCTAsCQkwLAkJU01ULAkwIH0sCisteyJtdGNyIiwJCSJ0LHMiLAkJMHg3MDAwMDAxOSwgMHhmYzAwZmZmZiwgUkRfMXxSRF8yLAkJMCwJCVhMUiwJCTAsCTAgfSwKKyt7Im10Y3IiLAkJInQscyIsCQkweDcwMDAwMDE5LCAweGZjMDBmZmZmLCBSRF8xLAkJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisgeyJtdG0wIiwJCSJzIiwJCTB4NzAwMDAwMDgsIDB4ZmMxZmZmZmYsIFJEXzEsCQkJMCwJCUlPQ1QsCQkwLAkwIH0sCisgeyJtdG0wIiwgICAgCQkicyx0IiwJCTB4NzAwMDAwMDgsIDB4ZmMwMGZmZmYsIFJEXzF8UkRfMiwJCTAsCQlJT0NUMywJCTAsCTAgfSwKKyB7Im10bTEiLAkJInMiLAkJMHg3MDAwMDAwYywgMHhmYzFmZmZmZiwgUkRfMSwJCQkwLAkJSU9DVCwJCTAsCTAgfSwKK0BAIC0xOTc4LDkgKzE5ODcsOSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgeyJzdXhjMSIsCQkiUyx0KGIpIiwJMHg0YzAwMDAwZCwgMHhmYzAwMDdmZiwgUkRfMXxSRF8yfFJEXzN8U018RlBfRCwJMCwJCUk1XzMzfE41NSwJMCwJSTM3fSwKKyB7InN3IiwJCQkidCxvKGIpIiwJMHhhYzAwMDAwMCwgMHhmYzAwMDAwMCwJUkRfMXxSRF8zfFNNLAkJMCwJCUkxLAkJMCwJMCB9LAorIHsic3ciLAkJCSJ0LEEoYikiLAkwLCAgICAoaW50KSBNX1NXX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJMCB9LAorLXsic3dhcHciLAkJInQsYiIsCQkweDcwMDAwMDE0LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAorLXsic3dhcHd1IiwJCSJ0LGIiLAkJMHg3MDAwMDAxNSwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKKy17InN3YXBkIiwJCSJ0LGIiLAkJMHg3MDAwMDAxNiwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKKyt7InN3YXB3IiwJCSJ0LGIiLAkJMHg3MDAwMDAxNCwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisreyJzd2Fwd3UiLAkJInQsYiIsCQkweDcwMDAwMDE1LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyt7InN3YXBkIiwJCSJ0LGIiLAkJMHg3MDAwMDAxNiwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisgeyJzd2MwIiwJCSJFLG8oYikiLAkweGUwMDAwMDAwLCAweGZjMDAwMDAwLAlSRF8zfFJEX0MwfFNNLAkJMCwJCUkxLAkJMCwJSU9DVHxJT0NUUHxJT0NUMnxJMzcgfSwKKyB7InN3YzAiLAkJIkUsQShiKSIsCTAsICAgIChpbnQpIE1fU1dDMF9BQiwJSU5TTl9NQUNSTywJCTAsCQlJMSwJCTAsCUlPQ1R8SU9DVFB8SU9DVDJ8STM3IH0sCisgeyJzd2MxIiwJCSJULG8oYikiLAkweGU0MDAwMDAwLCAweGZjMDAwMDAwLAlSRF8xfFJEXzN8U018RlBfUywJMCwJCUkxLAkJMCwJMCB9LApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTItZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhM2I3OGYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gZTQ4NzY3YTAyOThlNmNjZjUzZDgzZmVjYzkzYmI2ZDI2YjU5NTg5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFpoZW5odWEgTHVvIDx6aGVuaHVhLmx1b0BueHAuY29tPgotRGF0ZTogU2F0LCAxMSBKdW4gMjAxNiAyMjowODoyOSAtMDUwMAotU3ViamVjdDogW1BBVENIIDEyLzE1XSBmaXggdGhlIGluY29ycmVjdCBhc3NlbWJsaW5nIGZvciBwcGMgd2FpdCBtbmVtb25pYwotCi1TaWduZWQtb2ZmLWJ5OiBaaGVuaHVhIEx1byA8emhlbmh1YS5sdW9AbnhwLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBvcGNvZGVzL3BwYy1vcGMuYyB8IDMgKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9wcGMtb3BjLmMgYi9vcGNvZGVzL3BwYy1vcGMuYwotaW5kZXggMzAzMjYzMWQ0ZS4uMTQyZjA5NmVmNCAxMDA2NDQKLS0tLSBhL29wY29kZXMvcHBjLW9wYy5jCi0rKysgYi9vcGNvZGVzL3BwYy1vcGMuYwotQEAgLTUzMjUsNyArNTMyNSw2IEBAIGNvbnN0IHN0cnVjdCBwb3dlcnBjX29wY29kZSBwb3dlcnBjX29wY29kZXNbXSA9IHsKLSB7ImxkZXB4IiwJWCgzMSwyOSksCVhfTUFTSywJICBFNTAwTUN8UFBDQTIsIDAsCQl7UlQsIFJBMCwgUkJ9fSwKLSAKLSB7IndhaXRhc2VjIiwJWCgzMSwzMCksICAgICAgWFJUUkFSQl9NQVNLLCBQT1dFUjgsCVBPV0VSOSwJCXswfX0sCi0teyJ3YWl0IiwJWCgzMSwzMCksCVhXQ19NQVNLLCAgICBQT1dFUjksCTAsCQl7V0N9fSwKLSAKLSB7Imx3ZXB4IiwJWCgzMSwzMSksCVhfTUFTSywJICBFNTAwTUN8UFBDQTIsIDAsCQl7UlQsIFJBMCwgUkJ9fSwKLSAKLUBAIC01Mzc5LDcgKzUzNzgsNyBAQCBjb25zdCBzdHJ1Y3QgcG93ZXJwY19vcGNvZGUgcG93ZXJwY19vcGNvZGVzW10gPSB7Ci0gCi0geyJ3YWl0cnN2IiwJWCgzMSw2Mil8KDE8PDIxKSwgMHhmZmZmZmZmZiwgRTUwME1DfFBQQ0EyLCAwLAkJezB9fSwKLSB7IndhaXRpbXBsIiwJWCgzMSw2Mil8KDI8PDIxKSwgMHhmZmZmZmZmZiwgRTUwME1DfFBQQ0EyLCAwLAkJezB9fSwKLS17IndhaXQiLAlYKDMxLDYyKSwJWFdDX01BU0ssICAgIEU1MDBNQ3xQUENBMiwgMCwJCXtXQ319LAotK3sid2FpdCIsCVgoMzEsNjIpLAlYV0NfTUFTSywgICAgRTUwME1DfFBQQ0EyfFBPV0VSOSwgMCwJe1dDfX0sCi0gCi0geyJkY2JzdGVwIiwJWFJUKDMxLDYzLDApLAlYUlRfTUFTSywgICAgRTUwME1DfFBQQ0EyLCAwLAkJe1JBMCwgUkJ9fSwKLSAKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTI5MTc5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1Gcm9tIDY1ODdlN2I4ZTc3MzBkZGEyMGQ4YzQ3Y2FiZTlmN2Y4Mzk3ZWZhM2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAzMSBNYXIgMjAxNyAxMTo0MjowMyAtMDcwMAotU3ViamVjdDogW1BBVENIIDEzLzE1XSBEZXRlY3QgNjQtYml0IE1JUFMgdGFyZ2V0cwotCi1BZGQgbWlwczY0IHRhcmdldCB0cmlwbGV0cyBhbmQgZGVmYXVsdCB0byBONjQKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLWh0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvYmludXRpbHMvMjAxNi0wOC9tc2cwMDA0OC5odG1sCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnb2xkL2NvbmZpZ3VyZS50Z3QgfCAxNCArKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nb2xkL2NvbmZpZ3VyZS50Z3QgYi9nb2xkL2NvbmZpZ3VyZS50Z3QKLWluZGV4IDNlMDY2ZWRhYTguLmNhZjEzMGNlZGEgMTAwNjQ0Ci0tLS0gYS9nb2xkL2NvbmZpZ3VyZS50Z3QKLSsrKyBiL2dvbGQvY29uZmlndXJlLnRndAotQEAgLTE1Myw2ICsxNTMsMTMgQEAgYWFyY2g2NCotKikKLSAgdGFyZ19iaWdfZW5kaWFuPWZhbHNlCi0gIHRhcmdfZXh0cmFfYmlnX2VuZGlhbj10cnVlCi0gIDs7Ci0rbWlwcyo2NCplbCotKi0qfG1pcHMqNjQqbGUqLSotKikKLSsgdGFyZ19vYmo9bWlwcwotKyB0YXJnX21hY2hpbmU9RU1fTUlQU19SUzNfTEUKLSsgdGFyZ19zaXplPTY0Ci0rIHRhcmdfYmlnX2VuZGlhbj1mYWxzZQotKyB0YXJnX2V4dHJhX2JpZ19lbmRpYW49dHJ1ZQotKyA7OwotIG1pcHMqZWwqLSotKnxtaXBzKmxlKi0qLSopCi0gIHRhcmdfb2JqPW1pcHMKLSAgdGFyZ19tYWNoaW5lPUVNX01JUFNfUlMzX0xFCi1AQCAtMTYwLDYgKzE2NywxMyBAQCBtaXBzKmVsKi0qLSp8bWlwcypsZSotKi0qKQotICB0YXJnX2JpZ19lbmRpYW49ZmFsc2UKLSAgdGFyZ19leHRyYV9iaWdfZW5kaWFuPXRydWUKLSAgOzsKLSttaXBzKjY0Ki0qLSopCi0rIHRhcmdfb2JqPW1pcHMKLSsgdGFyZ19tYWNoaW5lPUVNX01JUFMKLSsgdGFyZ19zaXplPTY0Ci0rIHRhcmdfYmlnX2VuZGlhbj10cnVlCi0rIHRhcmdfZXh0cmFfYmlnX2VuZGlhbj1mYWxzZQotKyA7OwotIG1pcHMqLSotKikKLSAgdGFyZ19vYmo9bWlwcwotICB0YXJnX21hY2hpbmU9RU1fTUlQUwotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDYzZGU4MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSBlZjRhZDFjYjlmZjFiNWE4NzFmZmE3OTJhNzFiM2FkNmQxNGViM2RjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWmhlbmh1YSBMdW8gPHpoZW5odWEubHVvQG54cC5jb20+CitEYXRlOiBTYXQsIDExIEp1biAyMDE2IDIyOjA4OjI5IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCB0aGUgaW5jb3JyZWN0IGFzc2VtYmxpbmcgZm9yIHBwYyB3YWl0IG1uZW1vbmljCisKK1NpZ25lZC1vZmYtYnk6IFpoZW5odWEgTHVvIDx6aGVuaHVhLmx1b0BueHAuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIG9wY29kZXMvcHBjLW9wYy5jIHwgMyArLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9vcGNvZGVzL3BwYy1vcGMuYyBiL29wY29kZXMvcHBjLW9wYy5jCitpbmRleCA3ZWY5MWQ4MTliLi4xNDU5NTNkM2M0IDEwMDY0NAorLS0tIGEvb3Bjb2Rlcy9wcGMtb3BjLmMKKysrKyBiL29wY29kZXMvcHBjLW9wYy5jCitAQCAtNTcwOSw3ICs1NzA5LDYgQEAgY29uc3Qgc3RydWN0IHBvd2VycGNfb3Bjb2RlIHBvd2VycGNfb3Bjb2Rlc1tdID0geworIHsibGRlcHgiLAlYKDMxLDI5KSwJWF9NQVNLLAkgIEU1MDBNQ3xQUENBMiwgMCwJCXtSVCwgUkEwLCBSQn19LAorIAorIHsid2FpdGFzZWMiLAlYKDMxLDMwKSwgICAgICBYUlRSQVJCX01BU0ssIFBPV0VSOCwJUE9XRVI5LAkJezB9fSwKKy17IndhaXQiLAlYKDMxLDMwKSwJWFdDX01BU0ssICAgIFBPV0VSOSwJMCwJCXtXQ319LAorIAorIHsibHdlcHgiLAlYKDMxLDMxKSwJWF9NQVNLLAkgIEU1MDBNQ3xQUENBMiwgMCwJCXtSVCwgUkEwLCBSQn19LAorIAorQEAgLTU3NjMsNyArNTc2Miw3IEBAIGNvbnN0IHN0cnVjdCBwb3dlcnBjX29wY29kZSBwb3dlcnBjX29wY29kZXNbXSA9IHsKKyAKKyB7IndhaXRyc3YiLAlYKDMxLDYyKXwoMTw8MjEpLCAweGZmZmZmZmZmLCBFNTAwTUN8UFBDQTIsIDAsCQl7MH19LAorIHsid2FpdGltcGwiLAlYKDMxLDYyKXwoMjw8MjEpLCAweGZmZmZmZmZmLCBFNTAwTUN8UFBDQTIsIDAsCQl7MH19LAorLXsid2FpdCIsCVgoMzEsNjIpLAlYV0NfTUFTSywgICAgRTUwME1DfFBQQ0EyLCAwLAkJe1dDfX0sCisreyJ3YWl0IiwJWCgzMSw2MiksCVhXQ19NQVNLLCAgICBFNTAwTUN8UFBDQTJ8UE9XRVI5LCAwLAl7V0N9fSwKKyAKKyB7ImRjYnN0ZXAiLAlYUlQoMzEsNjMsMCksCVhSVF9NQVNLLCAgICBFNTAwTUN8UFBDQTIsIDAsCQl7UkEwLCBSQn19LAorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFjZGUxZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorRnJvbSAyZjdmMjM4OTc2NGVmMWQ2OTlmNmFkMzIwNTczMTQwMjRiN2U4NGU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMzEgTWFyIDIwMTcgMTE6NDI6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gRGV0ZWN0IDY0LWJpdCBNSVBTIHRhcmdldHMKKworQWRkIG1pcHM2NCB0YXJnZXQgdHJpcGxldHMgYW5kIGRlZmF1bHQgdG8gTjY0CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCitodHRwczovL3NvdXJjZXdhcmUub3JnL21sL2JpbnV0aWxzLzIwMTYtMDgvbXNnMDAwNDguaHRtbAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ29sZC9jb25maWd1cmUudGd0IHwgMTQgKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ29sZC9jb25maWd1cmUudGd0IGIvZ29sZC9jb25maWd1cmUudGd0CitpbmRleCBhYTdlYzU1MmFlLi40NzA1MTUwNjJlIDEwMDY0NAorLS0tIGEvZ29sZC9jb25maWd1cmUudGd0CisrKysgYi9nb2xkL2NvbmZpZ3VyZS50Z3QKK0BAIC0xNTMsNiArMTUzLDEzIEBAIGFhcmNoNjQqLSopCisgIHRhcmdfYmlnX2VuZGlhbj1mYWxzZQorICB0YXJnX2V4dHJhX2JpZ19lbmRpYW49dHJ1ZQorICA7OworK21pcHMqNjQqZWwqLSotKnxtaXBzKjY0KmxlKi0qLSopCisrIHRhcmdfb2JqPW1pcHMKKysgdGFyZ19tYWNoaW5lPUVNX01JUFNfUlMzX0xFCisrIHRhcmdfc2l6ZT02NAorKyB0YXJnX2JpZ19lbmRpYW49ZmFsc2UKKysgdGFyZ19leHRyYV9iaWdfZW5kaWFuPXRydWUKKysgOzsKKyBtaXBzKmVsKi0qLSp8bWlwcypsZSotKi0qKQorICB0YXJnX29iaj1taXBzCisgIHRhcmdfbWFjaGluZT1FTV9NSVBTX1JTM19MRQorQEAgLTE2MCw2ICsxNjcsMTMgQEAgbWlwcyplbCotKi0qfG1pcHMqbGUqLSotKikKKyAgdGFyZ19iaWdfZW5kaWFuPWZhbHNlCisgIHRhcmdfZXh0cmFfYmlnX2VuZGlhbj10cnVlCisgIDs7CisrbWlwcyo2NCotKi0qKQorKyB0YXJnX29iaj1taXBzCisrIHRhcmdfbWFjaGluZT1FTV9NSVBTCisrIHRhcmdfc2l6ZT02NAorKyB0YXJnX2JpZ19lbmRpYW49dHJ1ZQorKyB0YXJnX2V4dHJhX2JpZ19lbmRpYW49ZmFsc2UKKysgOzsKKyBtaXBzKi0qLSopCisgIHRhcmdfb2JqPW1pcHMKKyAgdGFyZ19tYWNoaW5lPUVNX01JUFMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjViYTEwYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE0LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi1Gcm9tIGI3NzI5MzQzMjA2ZmExOTZiOWExMTc0N2E5MmIzY2Y1NjMyNzcwNTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotRGF0ZTogTW9uLCA2IE1hciAyMDE3IDIzOjMzOjI3IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvMTVdIHN5bmMgd2l0aCBPRSBsaWJ0b29sIGNoYW5nZXMKLQotQXBwbHkgdGhlc2UgcGF0Y2hlcyBmcm9tIG91ciBsaWJ0b29sIHBhdGNoZXMgYXMgbm90IG9ubHkgYXJlIHJlZHVuZGFudCBSUEFUSHMgYQotd2FzdGUgb2Ygc3BhY2UgYnV0IHRoZXkgY2FuIGNhdXNlIGluY29ycmVjdCBsaW5raW5nIHdoZW4gbmF0aXZlIHBhY2thZ2VzIGFyZQotcmVzdG9yZWQgZnJvbSBzc3RhdGUuCi0KLWZpeC1ycGF0aC5wYXRjaDoKLVdlIGRvbid0IHdhbnQgdG8gYWRkIFJQQVRIUyB3aGljaCBtYXRjaCBkZWZhdWx0IGxpbmtlcgotc2VhcmNoIHBhdGhzLCB0aGV5J3JlIGEgd2FzdGUgb2Ygc3BhY2UuIFRoaXMgcGF0Y2gKLWZpbHRlcnMgbGlidG9vbHMgbGlzdCBhbmQgcmVtb3ZlcyB0aGUgb25lcyB3ZSBkb24ndCBuZWVkLgotCi1ub3JtLXJwYXRoLnBhdGNoOgotTGlidG9vbCBtYXkgYmUgcGFzc2VkIGxpbmsgcGF0aHMgb2YgdGhlIGZvcm0gIi91c3IvbGliLy4uL2xpYiIsIHdoaWNoCi1mb29sIGl0cyBkZXRlY3Rpb24gY29kZSBpbnRvIHRoaW5raW5nIGl0IHNob3VsZCBiZSBpbmNsdWRlZCBhcyBhbgotUlBBVEggaW4gdGhlIGdlbmVyYXRlZCBiaW5hcnkuICBOb3JtYWxpemUgYmVmb3JlIGNvbXBhcmlzaW9uLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsdG1haW4uc2ggfCAzNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKLWluZGV4IDExZWU2ODRjY2MuLjNiMTlhYzE1MzIgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTgwNTMsOCArODA1MywxNiBAQCBFT0YKLSAJCSAgZXNhYwotIAkJZmkKLSAJICAgICAgZWxzZQotLQkJZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotLQkJZnVuY19hcHBlbmQgZGVwX3JwYXRoICIgJGZsYWciCi0rICAgICAgICAgICAgICAgICMgV2Ugb25seSB3YW50IHRvIGhhcmRjb2RlIGluIGFuIHJwYXRoIGlmIGl0IGlzbid0IGluIHRoZQotKyAgICAgICAgICAgICAgICAjIGRlZmF1bHQgZGxzZWFyY2ggcGF0aC4KLSsgICAgICAgICAgICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aCAiJGxpYmRpciIKLSsgICAgICAgICAgICAgICAgbGliZGlyX25vcm09JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0Ci0rCSAgICAgICAgY2FzZSAiICRzeXNfbGliX2Rsc2VhcmNoX3BhdGggIiBpbgotKwkgICAgICAgICoiICRsaWJkaXJfbm9ybSAiKikgOzsKLSsJICAgICAgICAqKSBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0rICAgICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIGRlcF9ycGF0aCAiICRmbGFnIgotKyAgICAgICAgICAgICAgICAgICA7OwotKwkgICAgICAgIGVzYWMKLSAJICAgICAgZmkKLSAJICAgIGVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotIAkgICAgICBjYXNlICIkcGVybV9ycGF0aCAiIGluCi1AQCAtODc5MCw4ICs4Nzk4LDE2IEBAIEVPRgotIAkgICAgICBlc2FjCi0gCSAgICBmaQotIAkgIGVsc2UKLS0JICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLS0JICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCi0rICAgICAgICAgICAgIyBXZSBvbmx5IHdhbnQgdG8gaGFyZGNvZGUgaW4gYW4gcnBhdGggaWYgaXQgaXNuJ3QgaW4gdGhlCi0rICAgICAgICAgICAgIyBkZWZhdWx0IGRsc2VhcmNoIHBhdGguCi0rICAgICAgICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aCAiJGxpYmRpciIKLSsgICAgICAgICAgICBsaWJkaXJfbm9ybT0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKLSsJICAgIGNhc2UgIiAkc3lzX2xpYl9kbHNlYXJjaF9wYXRoICIgaW4KLSsJICAgICoiICRsaWJkaXJfbm9ybSAiKikgOzsKLSsJICAgICopIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSsgICAgICAgICAgICAgICBycGF0aCs9IiAkZmxhZyIKLSsgICAgICAgICAgICAgICA7OwotKwkgICAgZXNhYwotIAkgIGZpCi0gCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotIAkgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KLUBAIC04ODQxLDggKzg4NTcsMTQgQEAgRU9GCi0gCSAgICAgIGVzYWMKLSAJICAgIGZpCi0gCSAgZWxzZQotLQkgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotLQkgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKLSsgICAgICAgICAgICAjIFdlIG9ubHkgd2FudCB0byBoYXJkY29kZSBpbiBhbiBycGF0aCBpZiBpdCBpc24ndCBpbiB0aGUKLSsgICAgICAgICAgICAjIGRlZmF1bHQgZGxzZWFyY2ggcGF0aC4KLSsJICAgIGNhc2UgIiAkc3lzX2xpYl9kbHNlYXJjaF9wYXRoICIgaW4KLSsJICAgICoiICRsaWJkaXIgIiopIDs7Ci0rCSAgICAqKSBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0rICAgICAgICAgICAgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKLSsgICAgICAgICAgICAgICA7OwotKwkgICAgZXNhYwotIAkgIGZpCi0gCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotIAkgIGNhc2UgIiRmaW5hbGl6ZV9wZXJtX3JwYXRoICIgaW4KLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTUtYmludXRpbHMtZW5hYmxlLXg4Nl82NC1wZXAtZm9yLXByb2R1Y2luZy1FRkktYmluYXJpZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTUtYmludXRpbHMtZW5hYmxlLXg4Nl82NC1wZXAtZm9yLXByb2R1Y2luZy1FRkktYmluYXJpZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZkZTU2MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LWJpbnV0aWxzLWVuYWJsZS14ODZfNjQtcGVwLWZvci1wcm9kdWNpbmctRUZJLWJpbmFyaWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1Gcm9tIGQ1ZDc4MzkwM2UzMzUzMDJlNTYyYmFjOGRhMWEwODMzMzhkNzViMjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAyOSBOb3YgMjAxOCAxNzo0Njo0MCAtMDgwMAotU3ViamVjdDogW1BBVENIIDE1LzE1XSBiaW51dGlscyA6IGVuYWJsZSB4ODZfNjQtcGVwIGZvciBwcm9kdWNpbmcgRUZJIGJpbmFyaWVzCi0gb24geDg2LTY0Ci0KLUFkZCB4ODZfNjQtcGVwIGVtdWxhdGlvbiBzdXBwb3J0IHRvIHRoZSBzZXQgZW5hYmxlZCBmb3IgeDg2XzY0IHRhcmdldHMKLXRvIGVuYWJsZSB0aGUgbGlua2VyIHRvIHByb2R1Y2UgUG9ydGFibGUgRXhlY3V0YWJsZXMgZm9yIEVGSSBiaW5hcmllcy4KLQotRW5hYmxlcyBidWlsZGluZyB0aGUgeDg2LTY0IEVGSSB2YXJpYW50IG9mIHRoZSBYZW4gaHlwZXJ2aXNvciBmb3IKLXRoZSBPcGVuWFQgUHJvamVjdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWd1cmF0aW9uIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBDbGFyayA8Y2hyaXN0b3BoZXIuY2xhcms2QGJhZXN5c3RlbXMuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGJmZC9jb25maWcuYmZkICAgfCAyICstCi0gbGQvY29uZmlndXJlLnRndCB8IDUgKysrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JmZC9jb25maWcuYmZkIGIvYmZkL2NvbmZpZy5iZmQKLWluZGV4IDM2MTRmZjc5ZDQuLmFlZjE0NDgwM2EgMTAwNjQ0Ci0tLS0gYS9iZmQvY29uZmlnLmJmZAotKysrIGIvYmZkL2NvbmZpZy5iZmQKLUBAIC02OTQsNyArNjk0LDcgQEAgY2FzZSAiJHt0YXJnfSIgaW4KLSAgICAgOzsKLSAgIHg4Nl82NC0qLWxpbnV4LSopCi0gICAgIHRhcmdfZGVmdmVjPXg4Nl82NF9lbGY2NF92ZWMKLS0gICAgdGFyZ19zZWx2ZWNzPSJpMzg2X2VsZjMyX3ZlYyBpYW1jdV9lbGYzMl92ZWMgeDg2XzY0X2VsZjMyX3ZlYyBpMzg2X3BlaV92ZWMgeDg2XzY0X3BlaV92ZWMgbDFvbV9lbGY2NF92ZWMgazFvbV9lbGY2NF92ZWMiCi0rICAgIHRhcmdfc2VsdmVjcz0iaTM4Nl9lbGYzMl92ZWMgaWFtY3VfZWxmMzJfdmVjIHg4Nl82NF9lbGYzMl92ZWMgaTM4Nl9wZWlfdmVjIHg4Nl82NF9wZWlfdmVjIGwxb21fZWxmNjRfdmVjIGsxb21fZWxmNjRfdmVjIHg4Nl82NF9wZV92ZWMgeDg2XzY0X3BlX2JlX3ZlYyBpMzg2X3BlX3ZlYyIKLSAgICAgd2FudDY0PXRydWUKLSAgICAgOzsKLSAgIHg4Nl82NC0qLW5hY2wqKQotZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZS50Z3QgYi9sZC9jb25maWd1cmUudGd0Ci1pbmRleCAzNDdkZjZjM2Y2Li4xZTM3ZDc0N2E5IDEwMDY0NAotLS0tIGEvbGQvY29uZmlndXJlLnRndAotKysrIGIvbGQvY29uZmlndXJlLnRndAotQEAgLTI1Nyw4ICsyNTcsOSBAQCB4ODZfNjQtKi1saW51eC1nbnV4MzIpCXRhcmdfZW11bD1lbGYzMl94ODZfNjQKLSAJCQl0ZGlyX2VsZl9pYW1jdT1gZWNobyAke3RhcmdfYWxpYXN9IHwgc2VkIC1lICdzL3g4Nl82NC9pMzg2LycgLWUgJ3MvLWxpbnV4LWdudXgzMi8tbGludXgtZ251LydgCi0gCQkJdGRpcl9lbGZfaTM4Nj1gZWNobyAke3RhcmdfYWxpYXN9IHwgc2VkIC1lICdzL3g4Nl82NC9pMzg2LycgLWUgJ3MvLWxpbnV4LWdudXgzMi8tbGludXgtZ251LydgIDs7Ci0geDg2XzY0LSotbGludXgtKikJdGFyZ19lbXVsPWVsZl94ODZfNjQKLS0JCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMl94ODZfNjQgZWxmX2kzODYgZWxmX2lhbWN1IGVsZl9sMW9tIGVsZl9rMW9tIgotLQkJCXRhcmdfZXh0cmFfbGlicGF0aD0iZWxmX2kzODYgZWxmMzJfeDg2XzY0IGVsZl9sMW9tIGVsZl9rMW9tIgotKwkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyX3g4Nl82NCBlbGZfaTM4NiBlbGZfaWFtY3UgZWxmX2wxb20gZWxmX2sxb20gaTM4NnBlIGkzODZwZXAiCi0rCQkJdGFyZ19leHRyYV9saWJwYXRoPSJlbGZfaTM4NiBlbGYzMl94ODZfNjQgZWxmX2wxb20gZWxmX2sxb20gaTM4NnBlcCIKLSsJCQl0YXJnX2V4dHJhX29maWxlcz0iZGVmZmlsZXAubyBwZXAtZGxsLm8gcGUtZGxsLm8iCi0gCQkJdGRpcl9lbGZfaTM4Nj1gZWNobyAke3RhcmdfYWxpYXN9IHwgc2VkIC1lICdzL3g4Nl82NC9pMzg2LydgIDs7Ci0gaVszLTddODYtKi1yZWRveCopCXRhcmdfZW11bD1lbGZfaTM4NgotIAkJCXRhcmdfZXh0cmFfZW11bHM9ZWxmX3g4Nl82NCA7OwotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3OTQ3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2gKQEAgLTAsMCArMSw4NiBAQAorRnJvbSAzOTJkNDc0YTcyZDM3YjY2OWY1M2FiOWYwZmE5MTNiOTU4YWY5M2Y2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgNiBNYXIgMjAxNyAyMzozMzoyNyAtMDgwMAorU3ViamVjdDogW1BBVENIXSBzeW5jIHdpdGggT0UgbGlidG9vbCBjaGFuZ2VzCisKK0FwcGx5IHRoZXNlIHBhdGNoZXMgZnJvbSBvdXIgbGlidG9vbCBwYXRjaGVzIGFzIG5vdCBvbmx5IGFyZSByZWR1bmRhbnQgUlBBVEhzIGEKK3dhc3RlIG9mIHNwYWNlIGJ1dCB0aGV5IGNhbiBjYXVzZSBpbmNvcnJlY3QgbGlua2luZyB3aGVuIG5hdGl2ZSBwYWNrYWdlcyBhcmUKK3Jlc3RvcmVkIGZyb20gc3N0YXRlLgorCitmaXgtcnBhdGgucGF0Y2g6CitXZSBkb24ndCB3YW50IHRvIGFkZCBSUEFUSFMgd2hpY2ggbWF0Y2ggZGVmYXVsdCBsaW5rZXIKK3NlYXJjaCBwYXRocywgdGhleSdyZSBhIHdhc3RlIG9mIHNwYWNlLiBUaGlzIHBhdGNoCitmaWx0ZXJzIGxpYnRvb2xzIGxpc3QgYW5kIHJlbW92ZXMgdGhlIG9uZXMgd2UgZG9uJ3QgbmVlZC4KKworbm9ybS1ycGF0aC5wYXRjaDoKK0xpYnRvb2wgbWF5IGJlIHBhc3NlZCBsaW5rIHBhdGhzIG9mIHRoZSBmb3JtICIvdXNyL2xpYi8uLi9saWIiLCB3aGljaAorZm9vbCBpdHMgZGV0ZWN0aW9uIGNvZGUgaW50byB0aGlua2luZyBpdCBzaG91bGQgYmUgaW5jbHVkZWQgYXMgYW4KK1JQQVRIIGluIHRoZSBnZW5lcmF0ZWQgYmluYXJ5LiAgTm9ybWFsaXplIGJlZm9yZSBjb21wYXJpc2lvbi4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCisKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbHRtYWluLnNoIHwgMzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCitpbmRleCAxMWVlNjg0Y2NjLi4zYjE5YWMxNTMyIDEwMDY0NAorLS0tIGEvbHRtYWluLnNoCisrKysgYi9sdG1haW4uc2gKK0BAIC04MDUzLDggKzgwNTMsMTYgQEAgRU9GCisgCQkgIGVzYWMKKyAJCWZpCisgCSAgICAgIGVsc2UKKy0JCWV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKy0JCWZ1bmNfYXBwZW5kIGRlcF9ycGF0aCAiICRmbGFnIgorKyAgICAgICAgICAgICAgICAjIFdlIG9ubHkgd2FudCB0byBoYXJkY29kZSBpbiBhbiBycGF0aCBpZiBpdCBpc24ndCBpbiB0aGUKKysgICAgICAgICAgICAgICAgIyBkZWZhdWx0IGRsc2VhcmNoIHBhdGguCisrICAgICAgICAgICAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGggIiRsaWJkaXIiCisrICAgICAgICAgICAgICAgIGxpYmRpcl9ub3JtPSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAorKwkgICAgICAgIGNhc2UgIiAkc3lzX2xpYl9kbHNlYXJjaF9wYXRoICIgaW4KKysJICAgICAgICAqIiAkbGliZGlyX25vcm0gIiopIDs7CisrCSAgICAgICAgKikgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorKyAgICAgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBkZXBfcnBhdGggIiAkZmxhZyIKKysgICAgICAgICAgICAgICAgICAgOzsKKysJICAgICAgICBlc2FjCisgCSAgICAgIGZpCisgCSAgICBlbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KKyAJICAgICAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgorQEAgLTg3OTAsOCArODc5OCwxNiBAQCBFT0YKKyAJICAgICAgZXNhYworIAkgICAgZmkKKyAJICBlbHNlCistCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCistCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgorKyAgICAgICAgICAgICMgV2Ugb25seSB3YW50IHRvIGhhcmRjb2RlIGluIGFuIHJwYXRoIGlmIGl0IGlzbid0IGluIHRoZQorKyAgICAgICAgICAgICMgZGVmYXVsdCBkbHNlYXJjaCBwYXRoLgorKyAgICAgICAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGggIiRsaWJkaXIiCisrICAgICAgICAgICAgbGliZGlyX25vcm09JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0CisrCSAgICBjYXNlICIgJHN5c19saWJfZGxzZWFyY2hfcGF0aCAiIGluCisrCSAgICAqIiAkbGliZGlyX25vcm0gIiopIDs7CisrCSAgICAqKSBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisrICAgICAgICAgICAgICAgcnBhdGgrPSIgJGZsYWciCisrICAgICAgICAgICAgICAgOzsKKysJICAgIGVzYWMKKyAJICBmaQorIAllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KKyAJICBjYXNlICIkcGVybV9ycGF0aCAiIGluCitAQCAtODg0MSw4ICs4ODU3LDE0IEBAIEVPRgorIAkgICAgICBlc2FjCisgCSAgICBmaQorIAkgIGVsc2UKKy0JICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKy0JICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCisrICAgICAgICAgICAgIyBXZSBvbmx5IHdhbnQgdG8gaGFyZGNvZGUgaW4gYW4gcnBhdGggaWYgaXQgaXNuJ3QgaW4gdGhlCisrICAgICAgICAgICAgIyBkZWZhdWx0IGRsc2VhcmNoIHBhdGguCisrCSAgICBjYXNlICIgJHN5c19saWJfZGxzZWFyY2hfcGF0aCAiIGluCisrCSAgICAqIiAkbGliZGlyICIqKSA7OworKwkgICAgKikgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorKyAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCisrICAgICAgICAgICAgICAgOzsKKysJICAgIGVzYWMKKyAJICBmaQorIAllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KKyAJICBjYXNlICIkZmluYWxpemVfcGVybV9ycGF0aCAiIGluCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE2LUNoZWNrLWZvci1jbGFuZy1iZWZvcmUtY2hlY2tpbmctZ2NjLXZlcnNpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE2LUNoZWNrLWZvci1jbGFuZy1iZWZvcmUtY2hlY2tpbmctZ2NjLXZlcnNpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY5NGI0MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTYtQ2hlY2stZm9yLWNsYW5nLWJlZm9yZS1jaGVja2luZy1nY2MtdmVyc2lvbi5wYXRjaApAQCAtMCwwICsxLDQ4IEBACitGcm9tIDY3NTkwYTQ0YzEyNTY0OTFmYTY3NDQyNmYwMTcwZDVkMDUzNzdkMDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxNSBBcHIgMjAyMCAxNDoxNzoyMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDE2LzE2XSBDaGVjayBmb3IgY2xhbmcgYmVmb3JlIGNoZWNraW5nIGdjYyB2ZXJzaW9uCisKK0NsYW5nIGFkdmVydGlzZXMgaXRzZWxmIHRvIGJlIGdjYyA0LjIuMSwgc28gd2hlbiBjb21waWxpbmcgdGhpcyB0ZXN0CitoZXJlIGZhaWxzIHNpbmNlIGdjYyA8IDQuNC41IGRpZCBub3Qgc3VwcG9ydCAtc3RhdGljLWxpYnN0ZGMrKyBidXQgdGhhdHMKK25vdCB0cnVlIGZvciBjbGFuZywgc28gaXRzIGJldHRlciB0byBtYWtlIGFuIGFkZGl0aW9uYWwgY2hlY2sgZm9yIGNsYW5nCitiZWZvcmUgcmVzb3J0aW5nIHRvIGdjYyB2ZXJzaW9uIGNoZWNrLiBUaGlzIHNob3VsZCBsZXQgY2xhbmcgZW5hYmxlCitzdGF0aWMgbGlic3RkYysrIGxpbmtpbmcKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUgICAgfCAyICstCisgY29uZmlndXJlLmFjIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCA1OTBiMDNjMmRhMC4uNDZmMTE2ZmRiNTQgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTUxNDAsNyArNTE0MCw3IEBAIGFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY3h4X2NvbXBpbGVyX2dudQorIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCistI2lmIChfX0dOVUNfXyA8IDQpIHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNSkKKysjaWYgIWRlZmluZWQoX19jbGFuZ19fKSAmJiAoKF9fR05VQ19fIDwgNCkgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA1KSkKKyAjZXJyb3IgLXN0YXRpYy1saWJzdGRjKysgbm90IGltcGxlbWVudGVkCisgI2VuZGlmCisgaW50IG1haW4oKSB7fQorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggZDNmODVlNmY1ZDUuLmMwZWIxMzQzMTIxIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMzA5LDcgKzEzMDksNyBAQCBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGcrKyBhY2NlcHRzIC1zdGF0aWMtbGlic3RkYysrIC1zdGF0aWMtbGliZ2NjXSkKKyAgIEFDX0xBTkdfUFVTSChDKyspCisgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoWworLSNpZiAoX19HTlVDX18gPCA0KSB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDUpCisrI2lmICFkZWZpbmVkKF9fY2xhbmdfXykgJiYgKChfX0dOVUNfXyA8IDQpIHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNSkpCisgI2Vycm9yIC1zdGF0aWMtbGlic3RkYysrIG5vdCBpbXBsZW1lbnRlZAorICNlbmRpZgorIGludCBtYWluKCkge31dKV0sCistLSAKKzIuMjYuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xMjk3Mi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTEyOTcyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwN2QxZDY1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTEyOTcyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSAzMGJjYzAxNDc4NDMzYTFjYjA1YjM2ZGM1YzRiZWVmN2QyYzg5YjViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxhbiBNb2RyYSA8YW1vZHJhQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjEgSnVuIDIwMTkgMTE6NTE6MzggKzA5MzAKLVN1YmplY3Q6IFtQQVRDSF0gUFIyNDY4OSwgc3RyaW5nIHRhYmxlIGNvcnJ1cHRpb24KLQotVGhlIHRlc3RjYXNlIGluIHRoZSBQUiBoYWQgYSBlX3Noc3RybmR4IHNlY3Rpb24gb2YgdHlwZSBTSFRfR1JPVVAuCi1oZHItPmNvbnRlbnRzIHdlcmUgaW5pdGlhbGl6ZWQgYnkgc2V0dXBfZ3JvdXAgcmF0aGVyIHRoYW4gYmVpbmcgcmVhZAotZnJvbSB0aGUgZmlsZSwgdGh1cyBsYXN0IGJ5dGUgd2FzIG5vdCB6ZXJvIGFuZCBzdHJpbmcgZGVyZWZlcmVuY2UgcmFuCi1vZmYgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLgotCi0JUFIgMjQ2ODkKLQkqIGVsZmNvZGUuaCAoZWxmX29iamVjdF9wKTogQ2hlY2sgdHlwZSBvZiBlX3Noc3RybmR4IHNlY3Rpb24uCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTktMTI5NzIKLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0tLS0KLSBiZmQvQ2hhbmdlTG9nIHwgNSArKysrKwotIGJmZC9lbGZjb2RlLmggfCAzICsrLQotIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9iZmQvQ2hhbmdlTG9nIGIvYmZkL0NoYW5nZUxvZwotaW5kZXggOTFmMDllNjM0Ni4uZTY2ZmI0MGEyYyAxMDA2NDQKLS0tLSBhL2JmZC9DaGFuZ2VMb2cKLSsrKyBiL2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOCBAQAotKzIwMTktMDYtMjEgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotKwotKwlQUiAyNDY4OQotKwkqIGVsZmNvZGUuaCAoZWxmX29iamVjdF9wKTogQ2hlY2sgdHlwZSBvZiBlX3Noc3RybmR4IHNlY3Rpb24uCi0rCi0gMjAxOS0wMi0yMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0gCi0gCVBSIDI0MjM2Ci1kaWZmIC0tZ2l0IGEvYmZkL2VsZmNvZGUuaCBiL2JmZC9lbGZjb2RlLmgKLWluZGV4IGVjNWVhNzY2ZGUuLmEzNWE2MjkwODcgMTAwNjQ0Ci0tLS0gYS9iZmQvZWxmY29kZS5oCi0rKysgYi9iZmQvZWxmY29kZS5oCi1AQCAtNzU1LDcgKzc1NSw4IEBAIGVsZl9vYmplY3RfcCAoYmZkICphYmZkKQotICAgLyogQSBmdXJ0aGVyIHNhbml0eSBjaGVjay4gICovCi0gICBpZiAoaV9laGRycC0+ZV9zaG51bSAhPSAwKQotICAgICB7Ci0tICAgICAgaWYgKGlfZWhkcnAtPmVfc2hzdHJuZHggPj0gZWxmX251bXNlY3Rpb25zIChhYmZkKSkKLSsgICAgICBpZiAoaV9laGRycC0+ZV9zaHN0cm5keCA+PSBlbGZfbnVtc2VjdGlvbnMgKGFiZmQpCi0rCSAgfHwgaV9zaGRycFtpX2VoZHJwLT5lX3Noc3RybmR4XS5zaF90eXBlICE9IFNIVF9TVFJUQUIpCi0gCXsKLSAJICAvKiBQUiAyMjU3OgotIAkgICAgIFdlIHVzZWQgdG8ganVzdCBnb3RvIGdvdF93cm9uZ19mb3JtYXRfZXJyb3IgaGVyZQotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktMTQyNTAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xNDI1MC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkxNWE4My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xNDI1MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gZGY3OGJlMDVkYWY0ZWIwN2Y2MGY1MGVjMTA4MGNiOTc5YWYzMmVjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IG1hcnhpbiA8bWFyeGluQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IFR1ZSwgMjMgSnVsIDIwMTkgMDc6MzM6MzIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gbGliaWJlcnR5OiBDaGVjayB6ZXJvIHZhbHVlIHNoc3RybmR4IGluIHNpbXBsZS1vYmplY3QtZWxmLmMKLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvdHJ1bmtAMjczNzE4IDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1DVkU6IENWRS0yMDE5LTE0MjUwCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtmcm9tIGdjYzogaHR0cHM6Ly9nY2MuZ251Lm9yZy92aWV3Y3ZzL2djYz92aWV3PXJldmlzaW9uJnJldmlzaW9uPTI3MzcxOF0KLVtSZW1vdmVkIENoYW5nZWxvZyBlbnRyeV0KLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0tLS0KLWRpZmYgLS1naXQgYS9saWJpYmVydHkvc2ltcGxlLW9iamVjdC1lbGYuYyBiL2xpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jCi1pbmRleCA1MDIzODg5OTFhMDguLmJkZWU5NjM2MzRkNiAxMDA2NDQKLS0tLSBhL2xpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jCi0rKysgYi9saWJpYmVydHkvc2ltcGxlLW9iamVjdC1lbGYuYwotQEAgLTU0OCw3ICs1NDgsMTUgQEAgc2ltcGxlX29iamVjdF9lbGZfbWF0Y2ggKHVuc2lnbmVkIGNoYXIgaGVhZGVyW1NJTVBMRV9PQkpFQ1RfTUFUQ0hfSEVBREVSX0xFTl0sCi0gICAgICAgWERFTEVURSAoZW9yKTsKLSAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotLQotKyAgCi0rICBpZiAoZW9yLT5zaHN0cm5keCA9PSAwKQotKyAgICB7Ci0rICAgICAgKmVycm1zZyA9ICJpbnZhbGlkIEVMRiBzaHN0cm5keCA9PSAwIjsKLSsgICAgICAqZXJyID0gMDsKLSsgICAgICBYREVMRVRFIChlb3IpOwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rICAKLSAgIHJldHVybiAodm9pZCAqKSBlb3I7Ci0gfQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktMTQ0NDQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xNDQ0NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODViOWE5Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xNDQ0NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gZTE3ODY5ZGI5OTE5NTg0OTgyNmVhYWY1ZDJkMGViMmNmZGQ3YTJhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgNSBBdWcgMjAxOSAxMDo0MDozNSArMDEwMAotU3ViamVjdDogW1BBVENIXSBDYXRjaCBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyBpbiByZWFkZWxmIHdoZW4gcHJvY2Vzc2luZwotIGNvcnJ1cHQgYmluYXJpZXMuCi0KLQlQUiAyNDgyOQotCSogcmVhZGVsZi5jIChhcHBseV9yZWxvY2F0aW9ucyk6IENhdGNoIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93Ci0Jd2hpbHN0IGNoZWNraW5nIHJlbG9jIGxvY2F0aW9uIGFnYWluc3Qgc2VjdGlvbiBzaXplLgotCi1DVkU6IENWRS0yMDE5LTE0NDQ0Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC9naXR3ZWIuY2dpP3A9YmludXRpbHMtZ2RiLmdpdDtoPWUxNzg2OWRiOTkxOTU4NDk4MjZlYWFmNWQyZDBlYjJjZmRkN2EyYTddCi1bUmVtb3ZlZCBDaGFuZ2Vsb2cgZW50cnldCi1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotLS0tCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvcmVhZGVsZi5jIGIvYmludXRpbHMvcmVhZGVsZi5jCi1pbmRleCBiODk2YWQ5ZjQwNi4uZTc4NWZkZTQzZTcgMTAwNjQ0Ci0tLS0gYS9iaW51dGlscy9yZWFkZWxmLmMKLSsrKyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotQEAgLTEzMzY2LDcgKzEzMzY2LDcgQEAgYXBwbHlfcmVsb2NhdGlvbnMgKEZpbGVkYXRhICogICAgICAgICAgICAgICAgIGZpbGVkYXRhLAotIAkgICAgfQotIAotIAkgIHJsb2MgPSBzdGFydCArIHJwLT5yX29mZnNldDsKLS0JICBpZiAoKHJsb2MgKyByZWxvY19zaXplKSA+IGVuZCB8fCAocmxvYyA8IHN0YXJ0KSkKLSsJICBpZiAocmxvYyA+PSBlbmQgfHwgKHJsb2MgKyByZWxvY19zaXplKSA+IGVuZCB8fCAocmxvYyA8IHN0YXJ0KSkKLSAJICAgIHsKLSAJICAgICAgd2FybiAoXygic2tpcHBpbmcgaW52YWxpZCByZWxvY2F0aW9uIG9mZnNldCAweCVseCBpbiBzZWN0aW9uICVzXG4iKSwKLSAJCSAgICAodW5zaWduZWQgbG9uZykgcnAtPnJfb2Zmc2V0LApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktMTc0NTAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xNzQ1MC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZjZTBiOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xNzQ1MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLUZyb20gMDlkZDEzNWRmOWViYzdhNGI2NDA1MzdlMjNlMjZhMDNhMjg4YTc4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsYW4gTW9kcmEgPGFtb2RyYUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDkgT2N0IDIwMTkgMDA6MDc6MjkgKzEwMzAKLVN1YmplY3Q6IFtQQVRDSF0gUFIyNTA3OCwgc3RhY2sgb3ZlcmZsb3cgaW4gZnVuY3Rpb24gZmluZF9hYnN0cmFjdF9pbnN0YW5jZQotCi1TZWxlY3RpdmVseSBiYWNrcG9ydGluZyBmaXggZm9yIGJmZC9kd2FyZjIuYywgYnV0IG5vdCB0aGUgQ2hhbmdlTG9nCi1maWxlLiBUaGVyZSBhcmUgbmV3ZXIgdmVyc2lvbnMgb2YgYmludXRpbHMsIGJ1dCBub25lIG9mIHRoZW0gY29udGFpbiB0aGUKLWNvbW1pdCBmaXhpbmcgQ1ZFLTIwMTktMTc0NTAsIHNvIGJhY2twb3J0IGl0IHRvIG1hc3RlciBhbmQgemV1cy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2l0d2ViLmNnaT9wPWJpbnV0aWxzLWdkYi5naXQ7aD0wNjNjNTExYmQ3OV0KLUNWRTogQ1ZFLTIwMTktMTc0NTAKLVNpZ25lZC1vZmYtYnk6IFRyZXZvciBHYW1ibGluIDx0cmV2b3IuZ2FtYmxpbkB3aW5kcml2ZXIuY29tPgotCi0JUFIgMjUwNzgKLQkqIGR3YXJmMi5jIChmaW5kX2Fic3RyYWN0X2luc3RhbmNlKTogRGVsZXRlIG9yaWdfaW5mb19wdHIsIGFkZAotCXJlY3VyX2NvdW50LiAgRXJyb3Igb24gcmVjdXJfY291bnQgcmVhY2hpbmcgMTAwIHJhdGhlciB0aGFuCi0JaW5mb19wdHIgbWF0Y2hpbmcgb3JpZ19pbmZvX3B0ci4gIEFkanVzdCBjYWxscy4KLQotLS0tCi0gYmZkL2R3YXJmMi5jIHwgMzUgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iZmQvZHdhcmYyLmMgYi9iZmQvZHdhcmYyLmMKLWluZGV4IDBiNGU0ODU1ODIuLjIwZWM5ZTJlNTYgMTAwNjQ0Ci0tLS0gYS9iZmQvZHdhcmYyLmMKLSsrKyBiL2JmZC9kd2FyZjIuYwotQEAgLTI4MDMsMTMgKzI4MDMsMTMgQEAgbG9va3VwX3N5bWJvbF9pbl92YXJpYWJsZV90YWJsZSAoc3RydWN0IGNvbXBfdW5pdCAqdW5pdCwKLSB9Ci0gCi0gc3RhdGljIGJmZF9ib29sZWFuCi0tZmluZF9hYnN0cmFjdF9pbnN0YW5jZSAoc3RydWN0IGNvbXBfdW5pdCAqICAgdW5pdCwKLS0JCQliZmRfYnl0ZSAqICAgICAgICAgICBvcmlnX2luZm9fcHRyLAotLQkJCXN0cnVjdCBhdHRyaWJ1dGUgKiAgIGF0dHJfcHRyLAotLQkJCWNvbnN0IGNoYXIgKiogICAgICAgIHBuYW1lLAotLQkJCWJmZF9ib29sZWFuICogICAgICAgIGlzX2xpbmthZ2UsCi0tCQkJY2hhciAqKiAgICAgICAgICAgICAgZmlsZW5hbWVfcHRyLAotLQkJCWludCAqICAgICAgICAgICAgICAgIGxpbmVudW1iZXJfcHRyKQotK2ZpbmRfYWJzdHJhY3RfaW5zdGFuY2UgKHN0cnVjdCBjb21wX3VuaXQgKnVuaXQsCi0rCQkJc3RydWN0IGF0dHJpYnV0ZSAqYXR0cl9wdHIsCi0rCQkJdW5zaWduZWQgaW50IHJlY3VyX2NvdW50LAotKwkJCWNvbnN0IGNoYXIgKipwbmFtZSwKLSsJCQliZmRfYm9vbGVhbiAqaXNfbGlua2FnZSwKLSsJCQljaGFyICoqZmlsZW5hbWVfcHRyLAotKwkJCWludCAqbGluZW51bWJlcl9wdHIpCi0gewotICAgYmZkICphYmZkID0gdW5pdC0+YWJmZDsKLSAgIGJmZF9ieXRlICppbmZvX3B0cjsKLUBAIC0yODIwLDYgKzI4MjAsMTQgQEAgZmluZF9hYnN0cmFjdF9pbnN0YW5jZSAoc3RydWN0IGNvbXBfdW5pdCAqICAgdW5pdCwKLSAgIHN0cnVjdCBhdHRyaWJ1dGUgYXR0cjsKLSAgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMOwotIAotKyAgaWYgKHJlY3VyX2NvdW50ID09IDEwMCkKLSsgICAgewotKyAgICAgIF9iZmRfZXJyb3JfaGFuZGxlcgotKwkoXygiRFdBUkYgZXJyb3I6IGFic3RyYWN0IGluc3RhbmNlIHJlY3Vyc2lvbiBkZXRlY3RlZCIpKTsKLSsgICAgICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfYmFkX3ZhbHVlKTsKLSsgICAgICByZXR1cm4gRkFMU0U7Ci0rICAgIH0KLSsKLSAgIC8qIERXX0ZPUk1fcmVmX2FkZHIgY2FuIHJlZmVyZW5jZSBhbiBlbnRyeSBpbiBhIGRpZmZlcmVudCBDVS4gSXQKLSAgICAgIGlzIGFuIG9mZnNldCBmcm9tIHRoZSAuZGVidWdfaW5mbyBzZWN0aW9uLCBub3QgdGhlIGN1cnJlbnQgQ1UuICAqLwotICAgaWYgKGF0dHJfcHRyLT5mb3JtID09IERXX0ZPUk1fcmVmX2FkZHIpCi1AQCAtMjkzOSwxNSArMjk0Nyw2IEBAIGZpbmRfYWJzdHJhY3RfaW5zdGFuY2UgKHN0cnVjdCBjb21wX3VuaXQgKiAgIHVuaXQsCi0gCQkJCQkgaW5mb19wdHIsIGluZm9fcHRyX2VuZCk7Ci0gCSAgICAgIGlmIChpbmZvX3B0ciA9PSBOVUxMKQotIAkJYnJlYWs7Ci0tCSAgICAgIC8qIEl0IGRvZXNuJ3QgZXZlciBtYWtlIHNlbnNlIGZvciBEV19BVF9zcGVjaWZpY2F0aW9uIHRvCi0tCQkgcmVmZXIgdG8gdGhlIHNhbWUgRElFLiAgU3RvcCBzaW1wbGUgcmVjdXJzaW9uLiAgKi8KLS0JICAgICAgaWYgKGluZm9fcHRyID09IG9yaWdfaW5mb19wdHIpCi0tCQl7Ci0tCQkgIF9iZmRfZXJyb3JfaGFuZGxlcgotLQkJICAgIChfKCJEV0FSRiBlcnJvcjogYWJzdHJhY3QgaW5zdGFuY2UgcmVjdXJzaW9uIGRldGVjdGVkIikpOwotLQkJICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfYmFkX3ZhbHVlKTsKLS0JCSAgcmV0dXJuIEZBTFNFOwotLQkJfQotIAkgICAgICBzd2l0Y2ggKGF0dHIubmFtZSkKLSAJCXsKLSAJCWNhc2UgRFdfQVRfbmFtZToKLUBAIC0yOTYxLDcgKzI5NjAsNyBAQCBmaW5kX2Fic3RyYWN0X2luc3RhbmNlIChzdHJ1Y3QgY29tcF91bml0ICogICB1bml0LAotIAkJICAgIH0KLSAJCSAgYnJlYWs7Ci0gCQljYXNlIERXX0FUX3NwZWNpZmljYXRpb246Ci0tCQkgIGlmICghZmluZF9hYnN0cmFjdF9pbnN0YW5jZSAodW5pdCwgaW5mb19wdHIsICZhdHRyLAotKwkJICBpZiAoIWZpbmRfYWJzdHJhY3RfaW5zdGFuY2UgKHVuaXQsICZhdHRyLCByZWN1cl9jb3VudCArIDEsCi0gCQkJCQkgICAgICAgJm5hbWUsIGlzX2xpbmthZ2UsCi0gCQkJCQkgICAgICAgZmlsZW5hbWVfcHRyLCBsaW5lbnVtYmVyX3B0cikpCi0gCQkgICAgcmV0dXJuIEZBTFNFOwotQEAgLTMxNzUsNyArMzE3NCw3IEBAIHNjYW5fdW5pdF9mb3Jfc3ltYm9scyAoc3RydWN0IGNvbXBfdW5pdCAqdW5pdCkKLSAKLSAJCWNhc2UgRFdfQVRfYWJzdHJhY3Rfb3JpZ2luOgotIAkJY2FzZSBEV19BVF9zcGVjaWZpY2F0aW9uOgotLQkJICBpZiAoIWZpbmRfYWJzdHJhY3RfaW5zdGFuY2UgKHVuaXQsIGluZm9fcHRyLCAmYXR0ciwKLSsJCSAgaWYgKCFmaW5kX2Fic3RyYWN0X2luc3RhbmNlICh1bml0LCAmYXR0ciwgMCwKLSAJCQkJCSAgICAgICAmZnVuYy0+bmFtZSwKLSAJCQkJCSAgICAgICAmZnVuYy0+aXNfbGlua2FnZSwKLSAJCQkJCSAgICAgICAmZnVuYy0+ZmlsZSwKLS0tIAotMi4yMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTE3NDUxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktMTc0NTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzNmE1MzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktMTc0NTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIDAxOTI0MzgwNTFhN2U3ODE1ODU2NDdkNTU4MWEyYTZmNjJmZGEzNjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgotRGF0ZTogV2VkLCA5IE9jdCAyMDE5IDEwOjQ3OjEzICsxMDMwCi1TdWJqZWN0OiBbUEFUQ0hdIFBSMjUwNzAsIFNFR1YgaW4gZnVuY3Rpb24gX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUKLQotU2VsZWN0aXZlbHkgYmFja3BvcnRpbmcgZml4IGZvciBiZmQvZHdhcmYyLmMsIGJ1dCBub3QgdGhlIENoYW5nZUxvZwotZmlsZS4gVGhlcmUgYXJlIG5ld2VyIHZlcnNpb25zIG9mIGJpbnV0aWxzLCBidXQgbm9uZSBvZiB0aGVtIGNvbnRhaW4gdGhlCi1jb21taXQgZml4aW5nIENWRS0yMDE5LTE3NDUxLCBzbyBiYWNrcG9ydCBpdCB0byBtYXN0ZXIgYW5kIHpldXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC9naXR3ZWIuY2dpP3A9YmludXRpbHMtZ2RiLmdpdDtoPTMzNmJmYmViMTg0OF0KLUNWRTogQ1ZFLTIwMTktMTc0NTEKLVNpZ25lZC1vZmYtYnk6IFRyZXZvciBHYW1ibGluIDx0cmV2b3IuZ2FtYmxpbkB3aW5kcml2ZXIuY29tPgotCi0KLUV2aWwgdGVzdGNhc2Ugd2l0aCB0d28gZGVidWcgaW5mbyBzZWN0aW9ucywgd2l0aCBzaXplcyBvZiAyYWFhYWJhYzRlYzEKLWFuZCBmZmZmZDU1NTU0NTNiMTQwIHJlc3VsdCBpbiBhIHRvdGFsIHNpemUgb2YgMS4gIFJlYWRpbmcgdGhlIGZpcnN0Ci1zZWN0aW9uIG9mIGNvdXJzZSBvdmVyZmxvd3MgdGhlIGJ1ZmZlciBhbmQgdHJhbXBsZXMgb24gb3RoZXIgbWVtb3J5LgotCi0JUFIgMjUwNzAKLQkqIGR3YXJmMi5jIChfYmZkX2R3YXJmMl9zbHVycF9kZWJ1Z19pbmZvKTogQ2F0Y2ggb3ZlcmZsb3cgb2YKLQl0b3RhbF9zaXplIGNhbGN1bGF0aW9uLgotLS0tCi0gYmZkL2R3YXJmMi5jIHwgMTEgKysrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYmZkL2R3YXJmMi5jIGIvYmZkL2R3YXJmMi5jCi1pbmRleCAwYjRlNDg1NTgyLi5hOTE1OTdiMWQwIDEwMDY0NAotLS0tIGEvYmZkL2R3YXJmMi5jCi0rKysgYi9iZmQvZHdhcmYyLmMKLUBAIC00NDI2LDcgKzQ0MjYsMTYgQEAgX2JmZF9kd2FyZjJfc2x1cnBfZGVidWdfaW5mbyAoYmZkICphYmZkLCBiZmQgKmRlYnVnX2JmZCwKLSAgICAgICBmb3IgKHRvdGFsX3NpemUgPSAwOwotIAkgICBtc2VjOwotIAkgICBtc2VjID0gZmluZF9kZWJ1Z19pbmZvIChkZWJ1Z19iZmQsIGRlYnVnX3NlY3Rpb25zLCBtc2VjKSkKLS0JdG90YWxfc2l6ZSArPSBtc2VjLT5zaXplOwotKwl7Ci0rCSAgLyogQ2F0Y2ggUFIyNTA3MCB0ZXN0Y2FzZSBvdmVyZmxvd2luZyBzaXplIGNhbGN1bGF0aW9uIGhlcmUuICAqLwotKwkgIGlmICh0b3RhbF9zaXplICsgbXNlYy0+c2l6ZSA8IHRvdGFsX3NpemUKLSsJICAgICAgfHwgdG90YWxfc2l6ZSArIG1zZWMtPnNpemUgPCBtc2VjLT5zaXplKQotKwkgICAgewotKwkgICAgICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3Jfbm9fbWVtb3J5KTsKLSsJICAgICAgcmV0dXJuIEZBTFNFOwotKwkgICAgfQotKwkgIHRvdGFsX3NpemUgKz0gbXNlYy0+c2l6ZTsKLSsJfQotIAotICAgICAgIHN0YXNoLT5pbmZvX3B0cl9tZW1vcnkgPSAoYmZkX2J5dGUgKikgYmZkX21hbGxvYyAodG90YWxfc2l6ZSk7Ci0gICAgICAgaWYgKHN0YXNoLT5pbmZvX3B0cl9tZW1vcnkgPT0gTlVMTCkKLS0tIAotMi4yMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTkwNzEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS05MDcxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDI1Mzk5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTkwNzEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjUgKzAsMCBAQAotRnJvbSBjMTIwMjA1N2ViOTE2MWE4NmFmMjdkODY3NzAzMjM1ZmVlN2I3NTU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAxMCBBcHIgMjAxOSAxNTo0OTozNiArMDEwMAotU3ViamVjdDogW1BBVENIXSBQdWxsIGluIHBhdGNoIGZvciBsaWJpYmVydHkgdGhhdCBmaXhlcyBhIHN0YWNrIGV4aGF1c3Rpb24gYnVnCi0gd2hlbiBkZW1hbmdsaW5nIGEgcGF0aGFsb2dpY2FsbHkgY29uc3RydWN0ZWQgbWFuZ2xlZCBuYW1lLgotCi0JUFIgODkzOTQKLQkqIGNwLWRlbWFuZ2xlLmMgKGNwbHVzX2RlbWFuZ2xlX2ZpbGxfbmFtZSk6IFJlamVjdCBuZWdhdGl2ZQotCWxlbmd0aHMuCi0JKGRfY291bnRfdGVtcGxhdGVzX3Njb3Blcyk6IFJlcGxhY2UgbnVtX3RlbXBsYXRlcyBhbmQgbnVtX3Njb3BlcwotCXBhcmFtZXRlcnMgd2l0aCBhIHN0cnVjdCBkX3ByaW50X2luZm8gcG9pbnRlciBwYXJhbWV0ZXIuICBBZGp1c3QKLQlib2R5IG9mIHRoZSBmdW5jdGlvbiBhY2NvcmRpbmdseS4gIEFkZCByZWN1cnNpb24gY291bnRlciBhbmQgY2hlY2sKLQl0aGF0IHRoZSByZWN1cnNpb24gbGltaXQgaXMgbm90IHJlYWNoZWQuCi0JKGRfcHJpbnRfaW5pdCk6IFBhc3MgZHBpIHBhcmFtZXRlciB0byBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMuCi0JUmVzZXQgcmVjdXJzaW9uIGNvdW50ZXIgYWZ0ZXJ3YXJkcywgdW5sZXNzIHRoZSByZWN1cnNpb24gbGltaXQgd2FzCi0JcmVhY2hlZC4KLQotQ1ZFOiBDVkUtMjAxOS05MDcxCi1DVkU6IENWRS0yMDE5LTkwNzAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0tLS0KLSBDaGFuZ2VMb2cgICAgICAgICAgICAgICB8IDE2ICsrKysrKysrKysrKysrCi0gbGliaWJlcnR5L2NwLWRlbWFuZ2xlLmMgfCA0OCArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKLWluZGV4IGNkNjMxYTE1YjYuLjRkZjNhYWE2MmMgMTAwNjQ0Ci0tLS0gYS9DaGFuZ2VMb2cKLSsrKyBiL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxOSBAQAotKzIwMTktMDQtMTAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rCSogbGliaWJlcnR5OiBTeW5jIHdpdGggZ2NjLiAgQnJpbmcgaW46Ci0rCTIwMTktMDQtMTAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rCVBSIDg5Mzk0Ci0rCSogY3AtZGVtYW5nbGUuYyAoY3BsdXNfZGVtYW5nbGVfZmlsbF9uYW1lKTogUmVqZWN0IG5lZ2F0aXZlCi0rCWxlbmd0aHMuCi0rCShkX2NvdW50X3RlbXBsYXRlc19zY29wZXMpOiBSZXBsYWNlIG51bV90ZW1wbGF0ZXMgYW5kIG51bV9zY29wZXMKLSsJcGFyYW1ldGVycyB3aXRoIGEgc3RydWN0IGRfcHJpbnRfaW5mbyBwb2ludGVyIHBhcmFtZXRlci4gIEFkanVzdAotKwlib2R5IG9mIHRoZSBmdW5jdGlvbiBhY2NvcmRpbmdseS4gIEFkZCByZWN1cnNpb24gY291bnRlciBhbmQgY2hlY2sKLSsJdGhhdCB0aGUgcmVjdXJzaW9uIGxpbWl0IGlzIG5vdCByZWFjaGVkLgotKwkoZF9wcmludF9pbml0KTogUGFzcyBkcGkgcGFyYW1ldGVyIHRvIGRfY291bnRfdGVtcGxhdGVzX3Njb3Blcy4KLSsJUmVzZXQgcmVjdXJzaW9uIGNvdW50ZXIgYWZ0ZXJ3YXJkcywgdW5sZXNzIHRoZSByZWN1cnNpb24gbGltaXQgd2FzCi0rCXJlYWNoZWQuCi0rCi0gMjAxOC0wNi0yNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAJMi4zMiBicmFuY2ggY3JlYXRlZC4KLWRpZmYgLS1naXQgYS9saWJpYmVydHkvY3AtZGVtYW5nbGUuYyBiL2xpYmliZXJ0eS9jcC1kZW1hbmdsZS5jCi1pbmRleCBiMzRiNDg1NjkyLi43NzliNGU3NjNhIDEwMDY0NAotLS0tIGEvbGliaWJlcnR5L2NwLWRlbWFuZ2xlLmMKLSsrKyBiL2xpYmliZXJ0eS9jcC1kZW1hbmdsZS5jCi1AQCAtODYxLDcgKzg2MSw3IEBAIENQX1NUQVRJQ19JRl9HTElCQ1BQX1YzCi0gaW50Ci0gY3BsdXNfZGVtYW5nbGVfZmlsbF9uYW1lIChzdHJ1Y3QgZGVtYW5nbGVfY29tcG9uZW50ICpwLCBjb25zdCBjaGFyICpzLCBpbnQgbGVuKQotIHsKLS0gIGlmIChwID09IE5VTEwgfHwgcyA9PSBOVUxMIHx8IGxlbiA9PSAwKQotKyAgaWYgKHAgPT0gTlVMTCB8fCBzID09IE5VTEwgfHwgbGVuIDw9IDApCi0gICAgIHJldHVybiAwOwotICAgcC0+ZF9wcmludGluZyA9IDA7Ci0gICBwLT50eXBlID0gREVNQU5HTEVfQ09NUE9ORU5UX05BTUU7Ci1AQCAtNDA2MSw3ICs0MDYxLDcgQEAgZF9ncm93YWJsZV9zdHJpbmdfY2FsbGJhY2tfYWRhcHRlciAoY29uc3QgY2hhciAqcywgc2l6ZV90IGwsIHZvaWQgKm9wYXF1ZSkKLSAgICBhcmUgbGFyZ2VyIHRoYW4gdGhlIGFjdHVhbCBudW1iZXJzIGVuY291bnRlcmVkLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLWRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAoaW50ICpudW1fdGVtcGxhdGVzLCBpbnQgKm51bV9zY29wZXMsCi0rZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChzdHJ1Y3QgZF9wcmludF9pbmZvICpkcGksCi0gCQkJICBjb25zdCBzdHJ1Y3QgZGVtYW5nbGVfY29tcG9uZW50ICpkYykKLSB7Ci0gICBpZiAoZGMgPT0gTlVMTCkKLUBAIC00MDgxLDEzICs0MDgxLDEzIEBAIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAoaW50ICpudW1fdGVtcGxhdGVzLCBpbnQgKm51bV9zY29wZXMsCi0gICAgICAgYnJlYWs7Ci0gCi0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX1RFTVBMQVRFOgotLSAgICAgICgqbnVtX3RlbXBsYXRlcykrKzsKLSsgICAgICBkcGktPm51bV9jb3B5X3RlbXBsYXRlcysrOwotICAgICAgIGdvdG8gcmVjdXJzZV9sZWZ0X3JpZ2h0OwotIAotICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9SRUZFUkVOQ0U6Ci0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX1JWQUxVRV9SRUZFUkVOQ0U6Ci0gICAgICAgaWYgKGRfbGVmdCAoZGMpLT50eXBlID09IERFTUFOR0xFX0NPTVBPTkVOVF9URU1QTEFURV9QQVJBTSkKLS0JKCpudW1fc2NvcGVzKSsrOwotKwlkcGktPm51bV9zYXZlZF9zY29wZXMrKzsKLSAgICAgICBnb3RvIHJlY3Vyc2VfbGVmdF9yaWdodDsKLSAKLSAgICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfUVVBTF9OQU1FOgotQEAgLTQxNTIsNDIgKzQxNTIsNDIgQEAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChpbnQgKm51bV90ZW1wbGF0ZXMsIGludCAqbnVtX3Njb3BlcywKLSAgICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfVEFHR0VEX05BTUU6Ci0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX0NMT05FOgotICAgICByZWN1cnNlX2xlZnRfcmlnaHQ6Ci0tICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChudW1fdGVtcGxhdGVzLCBudW1fc2NvcGVzLAotLQkJCQlkX2xlZnQgKGRjKSk7Ci0tICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChudW1fdGVtcGxhdGVzLCBudW1fc2NvcGVzLAotLQkJCQlkX3JpZ2h0IChkYykpOwotKyAgICAgIC8qIFBSIDg5Mzk0IC0gQ2hlY2sgZm9yIHRvbyBtdWNoIHJlY3Vyc2lvbi4gICovCi0rICAgICAgaWYgKGRwaS0+cmVjdXJzaW9uID4gREVNQU5HTEVfUkVDVVJTSU9OX0xJTUlUKQotKwkvKiBGSVhNRTogVGhlcmUgb3VnaHQgdG8gYmUgYSB3YXkgdG8gcmVwb3J0IHRvIHRoZQotKwkgICB1c2VyIHRoYXQgdGhlIHJlY3Vyc2lvbiBsaW1pdCBoYXMgYmVlbiByZWFjaGVkLiAgKi8KLSsJcmV0dXJuOwotKwotKyAgICAgICsrIGRwaS0+cmVjdXJzaW9uOwotKyAgICAgIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAoZHBpLCBkX2xlZnQgKGRjKSk7Ci0rICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChkcGksIGRfcmlnaHQgKGRjKSk7Ci0rICAgICAgLS0gZHBpLT5yZWN1cnNpb247Ci0gICAgICAgYnJlYWs7Ci0gCi0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX0NUT1I6Ci0tICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChudW1fdGVtcGxhdGVzLCBudW1fc2NvcGVzLAotLQkJCQlkYy0+dS5zX2N0b3IubmFtZSk7Ci0rICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChkcGksIGRjLT51LnNfY3Rvci5uYW1lKTsKLSAgICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfRFRPUjoKLS0gICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKG51bV90ZW1wbGF0ZXMsIG51bV9zY29wZXMsCi0tCQkJCWRjLT51LnNfZHRvci5uYW1lKTsKLSsgICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKGRwaSwgZGMtPnUuc19kdG9yLm5hbWUpOwotICAgICAgIGJyZWFrOwotIAotICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9FWFRFTkRFRF9PUEVSQVRPUjoKLS0gICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKG51bV90ZW1wbGF0ZXMsIG51bV9zY29wZXMsCi0tCQkJCWRjLT51LnNfZXh0ZW5kZWRfb3BlcmF0b3IubmFtZSk7Ci0rICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChkcGksIGRjLT51LnNfZXh0ZW5kZWRfb3BlcmF0b3IubmFtZSk7Ci0gICAgICAgYnJlYWs7Ci0gCi0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX0ZJWEVEX1RZUEU6Ci0tICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChudW1fdGVtcGxhdGVzLCBudW1fc2NvcGVzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGMtPnUuc19maXhlZC5sZW5ndGgpOwotKyAgICAgIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAoZHBpLCBkYy0+dS5zX2ZpeGVkLmxlbmd0aCk7Ci0gICAgICAgYnJlYWs7Ci0gCi0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX0dMT0JBTF9DT05TVFJVQ1RPUlM6Ci0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX0dMT0JBTF9ERVNUUlVDVE9SUzoKLS0gICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKG51bV90ZW1wbGF0ZXMsIG51bV9zY29wZXMsCi0tCQkJCWRfbGVmdCAoZGMpKTsKLSsgICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKGRwaSwgZF9sZWZ0IChkYykpOwotICAgICAgIGJyZWFrOwotIAotICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9MQU1CREE6Ci0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX0RFRkFVTFRfQVJHOgotLSAgICAgIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAobnVtX3RlbXBsYXRlcywgbnVtX3Njb3BlcywKLS0JCQkJZGMtPnUuc191bmFyeV9udW0uc3ViKTsKLSsgICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKGRwaSwgZGMtPnUuc191bmFyeV9udW0uc3ViKTsKLSAgICAgICBicmVhazsKLSAgICAgfQotIH0KLUBAIC00MjIyLDggKzQyMjIsMTIgQEAgZF9wcmludF9pbml0IChzdHJ1Y3QgZF9wcmludF9pbmZvICpkcGksIGRlbWFuZ2xlX2NhbGxiYWNrcmVmIGNhbGxiYWNrLAotICAgZHBpLT5uZXh0X2NvcHlfdGVtcGxhdGUgPSAwOwotICAgZHBpLT5udW1fY29weV90ZW1wbGF0ZXMgPSAwOwotIAotLSAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzICgmZHBpLT5udW1fY29weV90ZW1wbGF0ZXMsCi0tCQkJICAgICZkcGktPm51bV9zYXZlZF9zY29wZXMsIGRjKTsKLSsgIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAoZHBpLCBkYyk7Ci0rICAvKiBJZiB3ZSBkaWQgbm90IHJlYWNoIHRoZSByZWN1cnNpb24gbGltaXQsIHRoZW4gcmVzZXQgdGhlCi0rICAgICBjdXJyZW50IHJlY3Vyc2lvbiB2YWx1ZSBiYWNrIHRvIDAsIHNvIHRoYXQgd2UgY2FuIHByaW50Ci0rICAgICB0aGUgdGVtcGxhdGVzLiAgKi8KLSsgIGlmIChkcGktPnJlY3Vyc2lvbiA8IERFTUFOR0xFX1JFQ1VSU0lPTl9MSU1JVCkKLSsgICAgZHBpLT5yZWN1cnNpb24gPSAwOwotICAgZHBpLT5udW1fY29weV90ZW1wbGF0ZXMgKj0gZHBpLT5udW1fc2F2ZWRfc2NvcGVzOwotIAotICAgZHBpLT5jdXJyZW50X3RlbXBsYXRlID0gTlVMTDsKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTkwNzQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS05MDc0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTFhNTEyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTkwNzQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1Gcm9tIGUyZWJiMzkwNjQzMmRjY2EyNzI3MTg2YWQ3OTQxNWY5MjA3MzBmYjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgotRGF0ZTogVHVlLCAxOSBGZWIgMjAxOSAyMjo0ODo0NCArMTAzMAotU3ViamVjdDogW1BBVENIXSBQUjI0MjM1LCBSZWFkIG1lbW9yeSB2aW9sYXRpb24gaW4gcGVpLXg4Nl82NC5jCi0KLQlQUiAyNDIzNQotCSogcGVpLXg4Nl82NC5jIChwZXg2NF9iZmRfcHJpbnRfcGRhdGFfc2VjdGlvbik6IENvcnJlY3QgY2hlY2tzCi0JYXR0ZW1wdGluZyB0byBwcmV2ZW50IHJlYWQgcGFzdCBlbmQgb2Ygc2VjdGlvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2JtaW5vci9iaW51dGlscy1nZGIvY29tbWl0LzE3OWYyZGIwZDljMzk3ZDdkZDhhNTk5MDdiODQyMDhiNzlmN2Y0OGNdCi1DVkU6IENWRS0yMDE5LTkwNzQKLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0tLS0KLSBiZmQvQ2hhbmdlTG9nICAgIHwgNiArKysrKysKLSBiZmQvcGVpLXg4Nl82NC5jIHwgOSArKysrLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iZmQvQ2hhbmdlTG9nIGIvYmZkL0NoYW5nZUxvZwotaW5kZXggZGQyYzc0MS4uY2JmMzBkZSAxMDA2NDQKLS0tLSBhL2JmZC9DaGFuZ2VMb2cKLSsrKyBiL2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOSBAQAotKzIwMTktMDItMTkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotKwotKwlQUiAyNDIzNQotKwkqIHBlaS14ODZfNjQuYyAocGV4NjRfYmZkX3ByaW50X3BkYXRhX3NlY3Rpb24pOiBDb3JyZWN0IGNoZWNrcwotKwlhdHRlbXB0aW5nIHRvIHByZXZlbnQgcmVhZCBwYXN0IGVuZCBvZiBzZWN0aW9uLgotKwotIDIwMTktMDItMDQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0gCSogZGV2ZWxvcG1lbnQuc2ggKGV4cGVyaW1lbnRhbCkgU2V0IHRvIGZhbHNlLgotZGlmZiAtLWdpdCBhL2JmZC9wZWkteDg2XzY0LmMgYi9iZmQvcGVpLXg4Nl82NC5jCi1pbmRleCBmZjEwOTNjLi43ZTc1MTA0IDEwMDY0NAotLS0tIGEvYmZkL3BlaS14ODZfNjQuYwotKysrIGIvYmZkL3BlaS14ODZfNjQuYwotQEAgLTU0MSw3ICs1NDEsNyBAQCBwZXg2NF9iZmRfcHJpbnRfcGRhdGFfc2VjdGlvbiAoYmZkICphYmZkLCB2b2lkICp2ZmlsZSwgYXNlY3Rpb24gKnBkYXRhX3NlY3Rpb24pCi0gICAvKiB2aXJ0X3NpemUgbWlnaHQgYmUgemVybyBmb3Igb2JqZWN0cy4gICovCi0gICBpZiAoc3RvcCA9PSAwICYmIHN0cmNtcCAoYWJmZC0+eHZlYy0+bmFtZSwgInBlLXg4Ni02NCIpID09IDApCi0gICAgIHsKLS0gICAgICBzdG9wID0gKGRhdGFzaXplIC8gb25hbGluZSkgKiBvbmFsaW5lOwotKyAgICAgIHN0b3AgPSBkYXRhc2l6ZTsKLSAgICAgICB2aXJ0X3NpemVfaXNfemVybyA9IFRSVUU7Ci0gICAgIH0KLSAgIGVsc2UgaWYgKGRhdGFzaXplIDwgc3RvcCkKLUBAIC01NTEsOCArNTUxLDggQEAgcGV4NjRfYmZkX3ByaW50X3BkYXRhX3NlY3Rpb24gKGJmZCAqYWJmZCwgdm9pZCAqdmZpbGUsIGFzZWN0aW9uICpwZGF0YV9zZWN0aW9uKQotIAkJIF8oIldhcm5pbmc6ICVzIHNlY3Rpb24gc2l6ZSAoJWxkKSBpcyBzbWFsbGVyIHRoYW4gdmlydHVhbCBzaXplICglbGQpXG4iKSwKLSAJCSBwZGF0YV9zZWN0aW9uLT5uYW1lLCAodW5zaWduZWQgbG9uZykgZGF0YXNpemUsCi0gCQkgKHVuc2lnbmVkIGxvbmcpIHN0b3ApOwotLQkvKiBCZSBzdXJlIG5vdCB0byByZWFkIHBhc3NlZCBkYXRhc2l6ZS4gICovCi0tCXN0b3AgPSBkYXRhc2l6ZSAvIG9uYWxpbmU7Ci0rCS8qIEJlIHN1cmUgbm90IHRvIHJlYWQgcGFzdCBkYXRhc2l6ZS4gICovCi0rCXN0b3AgPSBkYXRhc2l6ZTsKLSAgICAgICB9Ci0gCi0gICAvKiBEaXNwbGF5IGZ1bmN0aW9ucyB0YWJsZS4gICovCi1AQCAtNzI0LDggKzcyNCw3IEBAIHBleDY0X2JmZF9wcmludF9wZGF0YV9zZWN0aW9uIChiZmQgKmFiZmQsIHZvaWQgKnZmaWxlLCBhc2VjdGlvbiAqcGRhdGFfc2VjdGlvbikKLSAJICAgICAgYWx0ZW50ICs9IGltYWdlYmFzZTsKLSAKLSAJICAgICAgaWYgKGFsdGVudCA+PSBwZGF0YV92bWEKLS0JCSAgJiYgKGFsdGVudCArIFBEQVRBX1JPV19TSVpFIDw9IHBkYXRhX3ZtYQotLQkJICAgICAgKyBwZWlfc2VjdGlvbl9kYXRhIChhYmZkLCBwZGF0YV9zZWN0aW9uKS0+dmlydF9zaXplKSkKLSsJCSAgJiYgYWx0ZW50IC0gcGRhdGFfdm1hICsgUERBVEFfUk9XX1NJWkUgPD0gc3RvcCkKLSAJCXsKLSAJCSAgcGV4NjRfZ2V0X3J1bnRpbWVfZnVuY3Rpb24KLSAJCSAgICAoYWJmZCwgJmFyZiwgJnBkYXRhW2FsdGVudCAtIHBkYXRhX3ZtYV0pOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS05MDc1LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktOTA3NS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNiMTMxMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS05MDc1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLUZyb20gOGFiYWM4MDMxZWQzNjlhMjczNGIxY2RiN2RmMjhhMzlhNTRiNGI0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsYW4gTW9kcmEgPGFtb2RyYUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIwIEZlYiAyMDE5IDA4OjIxOjI0ICsxMDMwCi1TdWJqZWN0OiBbUEFUQ0hdIFBSMjQyMzYsIEhlYXAgYnVmZmVyIG92ZXJmbG93IGluCi0gX2JmZF9hcmNoaXZlXzY0X2JpdF9zbHVycF9hcm1hcAotCi0JUFIgMjQyMzYKLQkqIGFyY2hpdmU2NC5jIChfYmZkX2FyY2hpdmVfNjRfYml0X3NsdXJwX2FybWFwKTogTW92ZSBjb2RlIGFkZGluZwotCXNlbnRpbmVsIE5VTCB0byBzdHJpbmcgYnVmZmVyIG5lYXJlciB0byBsb29wIHdoZXJlIGl0IGlzIHVzZWQuCi0JRG9uJ3QgZ28gcGFzdCBzZW50aW5lbCB3aGVuIHNjYW5uaW5nIHN0cmluZ3MsIGFuZCBkb24ndCB3cml0ZQotCU5VTCBhZ2Fpbi4KLQkqIGFyY2hpdmUuYyAoZG9fc2x1cnBfY29mZl9hcm1hcCk6IFNpbXBsaWZ5IHN0cmluZyBoYW5kbGluZyB0bwotCWFyY2hpdmU2NC5jIHN0eWxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vYm1pbm9yL2JpbnV0aWxzLWdkYi9jb21taXQvOGFiYWM4MDMxZWQzNjlhMjczNGIxY2RiN2RmMjhhMzlhNTRiNGI0OV0KLUNWRTogQ1ZFLTIwMTktOTA3NQotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4gCi0tLS0KLSBiZmQvQ2hhbmdlTG9nICAgfCAxMCArKysrKysrKysrCi0gYmZkL2FyY2hpdmUuYyAgIHwgMTcgKysrKysrKy0tLS0tLS0tLS0KLSBiZmQvYXJjaGl2ZTY0LmMgfCAxMCArKysrKy0tLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JmZC9DaGFuZ2VMb2cgYi9iZmQvQ2hhbmdlTG9nCi1pbmRleCA3MmM4N2M3Li5lMzliYjEyIDEwMDY0NAotLS0tIGEvYmZkL0NoYW5nZUxvZwotKysrIGIvYmZkL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMyBAQAotKzIwMTktMDItMjAgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotKwotKwlQUiAyNDIzNgotKwkqIGFyY2hpdmU2NC5jIChfYmZkX2FyY2hpdmVfNjRfYml0X3NsdXJwX2FybWFwKTogTW92ZSBjb2RlIGFkZGluZwotKwlzZW50aW5lbCBOVUwgdG8gc3RyaW5nIGJ1ZmZlciBuZWFyZXIgdG8gbG9vcCB3aGVyZSBpdCBpcyB1c2VkLgotKwlEb24ndCBnbyBwYXN0IHNlbnRpbmVsIHdoZW4gc2Nhbm5pbmcgc3RyaW5ncywgYW5kIGRvbid0IHdyaXRlCi0rCU5VTCBhZ2Fpbi4KLSsJKiBhcmNoaXZlLmMgKGRvX3NsdXJwX2NvZmZfYXJtYXApOiBTaW1wbGlmeSBzdHJpbmcgaGFuZGxpbmcgdG8KLSsJYXJjaGl2ZTY0LmMgc3R5bGUuCi0rCi0gMjAxOS0wMi0xOSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0gCi0gCVBSIDI0MjM1Ci1kaWZmIC0tZ2l0IGEvYmZkL2FyY2hpdmUuYyBiL2JmZC9hcmNoaXZlLmMKLWluZGV4IGQyZDliNzIuLjY4YTkyYTMgMTAwNjQ0Ci0tLS0gYS9iZmQvYXJjaGl2ZS5jCi0rKysgYi9iZmQvYXJjaGl2ZS5jCi1AQCAtMTAxMiw2ICsxMDEyLDcgQEAgZG9fc2x1cnBfY29mZl9hcm1hcCAoYmZkICphYmZkKQotICAgaW50ICpyYXdfYXJtYXAsICpyYXdwdHI7Ci0gICBzdHJ1Y3QgYXJ0ZGF0YSAqYXJkYXRhID0gYmZkX2FyZGF0YSAoYWJmZCk7Ci0gICBjaGFyICpzdHJpbmdiYXNlOwotKyAgY2hhciAqc3RyaW5nZW5kOwotICAgYmZkX3NpemVfdHlwZSBzdHJpbmdzaXplOwotICAgYmZkX3NpemVfdHlwZSBwYXJzZWRfc2l6ZTsKLSAgIGNhcnN5bSAqY2Fyc3ltczsKLUBAIC0xMDcxLDIyICsxMDcyLDE4IEBAIGRvX3NsdXJwX2NvZmZfYXJtYXAgKGJmZCAqYWJmZCkKLSAgICAgfQotIAotICAgLyogT0ssIGJ1aWxkIHRoZSBjYXJzeW1zLiAgKi8KLS0gIGZvciAoaSA9IDA7IGkgPCBuc3lteiAmJiBzdHJpbmdzaXplID4gMDsgaSsrKQotKyAgc3RyaW5nZW5kID0gc3RyaW5nYmFzZSArIHN0cmluZ3NpemU7Ci0rICAqc3RyaW5nZW5kID0gMDsKLSsgIGZvciAoaSA9IDA7IGkgPCBuc3ltejsgaSsrKQotICAgICB7Ci0tICAgICAgYmZkX3NpemVfdHlwZSBsZW47Ci0tCi0gICAgICAgcmF3cHRyID0gcmF3X2FybWFwICsgaTsKLSAgICAgICBjYXJzeW1zLT5maWxlX29mZnNldCA9IHN3YXAgKChiZmRfYnl0ZSAqKSByYXdwdHIpOwotICAgICAgIGNhcnN5bXMtPm5hbWUgPSBzdHJpbmdiYXNlOwotLSAgICAgIC8qIFBSIDE3NTEyOiBmaWxlOiA0YTFkNTBjMS4gICovCi0tICAgICAgbGVuID0gc3RybmxlbiAoc3RyaW5nYmFzZSwgc3RyaW5nc2l6ZSk7Ci0tICAgICAgaWYgKGxlbiA8IHN0cmluZ3NpemUpCi0tCWxlbiArKzsKLS0gICAgICBzdHJpbmdiYXNlICs9IGxlbjsKLS0gICAgICBzdHJpbmdzaXplIC09IGxlbjsKLSsgICAgICBzdHJpbmdiYXNlICs9IHN0cmxlbiAoc3RyaW5nYmFzZSk7Ci0rICAgICAgaWYgKHN0cmluZ2Jhc2UgIT0gc3RyaW5nZW5kKQotKwkrK3N0cmluZ2Jhc2U7Ci0gICAgICAgY2Fyc3ltcysrOwotICAgICB9Ci0tICAqc3RyaW5nYmFzZSA9IDA7Ci0gCi0gICBhcmRhdGEtPnN5bWRlZl9jb3VudCA9IG5zeW16OwotICAgYXJkYXRhLT5maXJzdF9maWxlX2ZpbGVwb3MgPSBiZmRfdGVsbCAoYWJmZCk7Ci1kaWZmIC0tZ2l0IGEvYmZkL2FyY2hpdmU2NC5jIGIvYmZkL2FyY2hpdmU2NC5jCi1pbmRleCAzMTJiZjgyLi40MmY2ZWQ5IDEwMDY0NAotLS0tIGEvYmZkL2FyY2hpdmU2NC5jCi0rKysgYi9iZmQvYXJjaGl2ZTY0LmMKLUBAIC0xMDAsOCArMTAwLDYgQEAgX2JmZF9hcmNoaXZlXzY0X2JpdF9zbHVycF9hcm1hcCAoYmZkICphYmZkKQotICAgICByZXR1cm4gRkFMU0U7Ci0gICBjYXJzeW1zID0gYXJkYXRhLT5zeW1kZWZzOwotICAgc3RyaW5nYmFzZSA9ICgoY2hhciAqKSBhcmRhdGEtPnN5bWRlZnMpICsgY2Fyc3ltX3NpemU7Ci0tICBzdHJpbmdiYXNlW3N0cmluZ3NpemVdID0gMDsKLS0gIHN0cmluZ2VuZCA9IHN0cmluZ2Jhc2UgKyBzdHJpbmdzaXplOwotIAotICAgcmF3X2FybWFwID0gKGJmZF9ieXRlICopIGJmZF9hbGxvYyAoYWJmZCwgcHRyc2l6ZSk7Ci0gICBpZiAocmF3X2FybWFwID09IE5VTEwpCi1AQCAtMTE1LDE1ICsxMTMsMTcgQEAgX2JmZF9hcmNoaXZlXzY0X2JpdF9zbHVycF9hcm1hcCAoYmZkICphYmZkKQotICAgICAgIGdvdG8gcmVsZWFzZV9yYXdfYXJtYXA7Ci0gICAgIH0KLSAKLSsgIHN0cmluZ2VuZCA9IHN0cmluZ2Jhc2UgKyBzdHJpbmdzaXplOwotKyAgKnN0cmluZ2VuZCA9IDA7Ci0gICBmb3IgKGkgPSAwOyBpIDwgbnN5bXo7IGkrKykKLSAgICAgewotICAgICAgIGNhcnN5bXMtPmZpbGVfb2Zmc2V0ID0gYmZkX2dldGI2NCAocmF3X2FybWFwICsgaSAqIDgpOwotICAgICAgIGNhcnN5bXMtPm5hbWUgPSBzdHJpbmdiYXNlOwotLSAgICAgIGlmIChzdHJpbmdiYXNlIDwgc3RyaW5nZW5kKQotLQlzdHJpbmdiYXNlICs9IHN0cmxlbiAoc3RyaW5nYmFzZSkgKyAxOwotKyAgICAgIHN0cmluZ2Jhc2UgKz0gc3RybGVuIChzdHJpbmdiYXNlKTsKLSsgICAgICBpZiAoc3RyaW5nYmFzZSAhPSBzdHJpbmdlbmQpCi0rCSsrc3RyaW5nYmFzZTsKLSAgICAgICArK2NhcnN5bXM7Ci0gICAgIH0KLS0gICpzdHJpbmdiYXNlID0gJ1wwJzsKLSAKLSAgIGFyZGF0YS0+c3ltZGVmX2NvdW50ID0gbnN5bXo7Ci0gICBhcmRhdGEtPmZpcnN0X2ZpbGVfZmlsZXBvcyA9IGJmZF90ZWxsIChhYmZkKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktOTA3Ni5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTkwNzYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjOGNkZTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktOTA3Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gOWY4NDFjNTgzODgwZWI2ZDAxOTQ0NTVjMTU4M2E3NjZmODUzZTYyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsYW4gTW9kcmEgPGFtb2RyYUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIwIEZlYiAyMDE5IDEyOjA2OjMxICsxMDMwCi1TdWJqZWN0OiBbUEFUQ0hdIFBSMjQyMzMsIE91dCBvZiBtZW1vcnkKLQotCVBSIDI0MjMzCi0JKiBvYmpkdW1wLmMgKGR1bXBfYmZkX3ByaXZhdGVfaGVhZGVyKTogUHJpbnQgd2FybmluZyBpZgotCWJmZF9wcmludF9wcml2YXRlX2JmZF9kYXRhIHJldHVybnMgZmFsc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ibWlub3IvYmludXRpbHMtZ2RiL2NvbW1pdC83ZDI3MmE1NWNhZWJmYzI2YWIyZTE1ZDFlOTQzOWJhYzk3OGI5YmI3XQotQ1ZFOiBDVkUtMjAxOS05MDc2Ci1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotLS0tCi0gYmludXRpbHMvQ2hhbmdlTG9nIHwgNiArKysrKysKLSBiaW51dGlscy9vYmpkdW1wLmMgfCA0ICsrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvQ2hhbmdlTG9nIGIvYmludXRpbHMvQ2hhbmdlTG9nCi1pbmRleCBmODM3YzM3Li5kNWRkN2NiIDEwMDY0NAotLS0tIGEvYmludXRpbHMvQ2hhbmdlTG9nCi0rKysgYi9iaW51dGlscy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOSBAQAotKzIwMTktMDItMjAgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotKwotKwlQUiAyNDIzMwotKwkqIG9iamR1bXAuYyAoZHVtcF9iZmRfcHJpdmF0ZV9oZWFkZXIpOiBQcmludCB3YXJuaW5nIGlmCi0rCWJmZF9wcmludF9wcml2YXRlX2JmZF9kYXRhIHJldHVybnMgZmFsc2UuCi0rCi0gMjAxOS0wMi0wMiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvb2JqZHVtcC5jIGIvYmludXRpbHMvb2JqZHVtcC5jCi1pbmRleCA4NzI1MzkwLi43ZDBjNmE0IDEwMDY0NAotLS0tIGEvYmludXRpbHMvb2JqZHVtcC5jCi0rKysgYi9iaW51dGlscy9vYmpkdW1wLmMKLUBAIC0zMTc4LDcgKzMxNzgsOSBAQCBkdW1wX2JmZF9oZWFkZXIgKGJmZCAqYWJmZCkKLSBzdGF0aWMgdm9pZAotIGR1bXBfYmZkX3ByaXZhdGVfaGVhZGVyIChiZmQgKmFiZmQpCi0gewotLSAgYmZkX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEgKGFiZmQsIHN0ZG91dCk7Ci0rICBpZiAoIWJmZF9wcmludF9wcml2YXRlX2JmZF9kYXRhIChhYmZkLCBzdGRvdXQpKQotKyAgICBub25fZmF0YWwgKF8oIndhcm5pbmc6IHByaXZhdGUgaGVhZGVycyBpbmNvbXBsZXRlOiAlcyIpLAotKwkgICAgICAgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS05MDc3LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktOTA3Ny5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFlY2I3MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS05MDc3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSBmN2JiYzg4OTBkZTQ1ZGY2ZWRhMGRkZWY1ZGQwNGY4MzVmNTRlZWNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAyMCBGZWIgMjAxOSAxNzowMzo0NyArMDAwMAotU3ViamVjdDogW1BBVENIXSBGaXggYSBpbGxlZ2FsIG1lbW9yeSBhY2Nlc3MgZmF1bHQgd2hlbiBwYXJzaW5nIGEgY29ycnVwdCBNSVBTCi0gb3B0aW9uIHNlY3Rpb24gdXNpbmcgcmVhZGVsZi4KLQotCVBSIDI0MjQzCi0JKiByZWFkZWxmLmMgKHByb2Nlc3NfbWlwc19zcGVjaWZpYyk6IENoZWNrIGZvciBhbiBvcHRpb25zIHNlY3Rpb24KLQl0aGF0IGlzIHRvbyBzbWFsbCB0byBldmVuIGNvbnRhaW4gYSBzaW5nbGUgb3B0aW9uLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vYm1pbm9yL2JpbnV0aWxzLWdkYi9jb21taXQvN2ZjMGM2NjhmMmFjZWI4NTgyZDc0ZGIxYWQyNTI4ZTJiYmE4YTkyMV0KLUNWRTogQ1ZFLTIwMTktOTA3NwotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLS0tLQotIGJpbnV0aWxzL3JlYWRlbGYuYyB8IDYgKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvcmVhZGVsZi5jIGIvYmludXRpbHMvcmVhZGVsZi5jCi1pbmRleCA5ZGYzNzQyLi4xOGFiODA2IDEwMDY0NAotLS0tIGEvYmludXRpbHMvcmVhZGVsZi5jCi0rKysgYi9iaW51dGlscy9yZWFkZWxmLmMKLUBAIC0xNjE3OSw2ICsxNjE3OSwxMiBAQCBwcm9jZXNzX21pcHNfc3BlY2lmaWMgKEZpbGVkYXRhICogZmlsZWRhdGEpCi0gCSAgZXJyb3IgKF8oIk5vIE1JUFNfT1BUSU9OUyBoZWFkZXIgZm91bmRcbiIpKTsKLSAJICByZXR1cm4gRkFMU0U7Ci0gCX0KLSsgICAgICAvKiBQUiAyNDI0MyAgKi8KLSsgICAgICBpZiAoc2VjdC0+c2hfc2l6ZSA8IHNpemVvZiAoKiBlb3B0KSkKLSsJewotKwkgIGVycm9yIChfKCJUaGUgTUlQUyBvcHRpb25zIHNlY3Rpb24gaXMgdG9vIHNtYWxsLlxuIikpOwotKwkgIHJldHVybiBGQUxTRTsKLSsJfQotIAotICAgICAgIGVvcHQgPSAoRWxmX0V4dGVybmFsX09wdGlvbnMgKikgZ2V0X2RhdGEgKE5VTEwsIGZpbGVkYXRhLCBvcHRpb25zX29mZnNldCwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0LT5zaF9zaXplLCBfKCJvcHRpb25zIikpOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAyMC0wNTUxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMjAtMDU1MS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2UzY2FmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMjAtMDU1MS5wYXRjaApAQCAtMCwwICsxLDU0OSBAQAorRnJvbSBhZTUzMTA0MWM3YzU5NTY2NzIzNDJmODljNDg2YTAxMWM4NGYwMjdmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIkguSi4gTHUiIDxoamwudG9vbHNAZ21haWwuY29tPgorRGF0ZTogV2VkLCAxMSBNYXIgMjAyMCAwOTo0NjoxOSAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvMV0gaTM4NjogR2VuZXJhdGUgbGZlbmNlIHdpdGggbG9hZC9pbmRpcmVjdCBicmFuY2gvcmV0CisgW0NWRS0yMDIwLTA1NTFdCisKK0FkZCAzIGNvbW1hbmQtbGluZSBvcHRpb25zIHRvIGdlbmVyYXRlIGxmZW5jZSBmb3IgbG9hZCwgaW5kaXJlY3QgbmVhcgorYnJhbmNoIGFuZCByZXQgdG8gaGVscCBtaXRpZ2F0ZToKKworaHR0cHM6Ly93d3cuaW50ZWwuY29tL2NvbnRlbnQvd3d3L3VzL2VuL3NlY3VyaXR5LWNlbnRlci9hZHZpc29yeS9pbnRlbC1zYS0wMDMzNC5odG1sCitodHRwOi8vY3ZlLm1pdHJlLm9yZy9jZ2ktYmluL2N2ZW5hbWUuY2dpP25hbWU9Q1ZFLTIwMjAtMDU1MQorCisxLiAtbWxmZW5jZS1hZnRlci1sb2FkPVtub3x5ZXNdOgorICAtbWxmZW5jZS1hZnRlci1sb2FkPXllcyBnZW5lcmF0ZXMgbGZlbmNlIGFmdGVyIGxvYWQgaW5zdHJ1Y3Rpb25zLgorMi4gLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD1bbm9uZXxhbGx8bWVtb3J5fHJlZ2lzdGVyXToKKyAgYS4gLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD1hbGwgZ2VuZXJhdGVzIGxmZW5jZSBiZWZvcmUgaW5kaXJlY3QKKyAgbmVhciBicmFuY2hlcyB2aWEgcmVnaXN0ZXIgYW5kIGEgd2FybmluZyBiZWZvcmUgaW5kaXJlY3QgbmVhciBicmFuY2hlcworICB2aWEgbWVtb3J5LgorICBiLiAtbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPW1lbW9yeSBpc3N1ZSBhIHdhcm5pbmcgYmVmb3JlCisgIGluZGlyZWN0IG5lYXIgYnJhbmNoZXMgdmlhIG1lbW9yeS4KKyAgYy4gLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD1yZWdpc3RlciBnZW5lcmF0ZXMgbGZlbmNlIGJlZm9yZQorICBpbmRpcmVjdCBuZWFyIGJyYW5jaGVzIHZpYSByZWdpc3Rlci4KK05vdGUgdGhhdCBsZmVuY2Ugd29uJ3QgYmUgZ2VuZXJhdGVkIGJlZm9yZSBpbmRpcmVjdCBuZWFyIGJyYW5jaGVzIHZpYQorcmVnaXN0ZXIgd2l0aCAtbWxmZW5jZS1hZnRlci1sb2FkPXllcyBzaW5jZSBsZmVuY2Ugd2lsbCBiZSBnZW5lcmF0ZWQKK2FmdGVyIGxvYWRpbmcgYnJhbmNoIHRhcmdldCByZWdpc3Rlci4KKzMuIC1tbGZlbmNlLWJlZm9yZS1yZXQ9W25vbmV8b3J8bm90XQorICBhLiAtbWxmZW5jZS1iZWZvcmUtcmV0PW9yIGdlbmVyYXRlcyBvciB3aXRoIGxmZW5jZSBiZWZvcmUgcmV0LgorICBiLiAtbWxmZW5jZS1iZWZvcmUtcmV0PW5vdCBnZW5lcmF0ZXMgbm90IHdpdGggbGZlbmNlIGJlZm9yZSByZXQuCisKK0Egd2FybmluZyB3aWxsIGJlIGlzc3VlZCBhbmQgbGZlbmNlIHdvbid0IGJlIGdlbmVyYXRlZCBiZWZvcmUgaW5kaXJlY3QKK25lYXIgYnJhbmNoIGFuZCByZXQgaWYgdGhlIHByZXZpb3VzIGl0ZW0gaXMgYSBwcmVmaXggb3IgYSBjb25zdGFudAorZGlyZWN0aXZlLCB3aGljaCBtYXkgYmUgdXNlZCB0byBoYXJkY29kZSBhbiBpbnN0cnVjdGlvbiwgc2luY2UgdGhlcmUKK2lzIG5vIGNsZWFyIGluc3RydWN0aW9uIGJvdW5kYXJ5LgorCisJKiBjb25maWcvdGMtaTM4Ni5jIChsZmVuY2VfYWZ0ZXJfbG9hZCk6IE5ldy4KKwkobGZlbmNlX2JlZm9yZV9pbmRpcmVjdF9icmFuY2hfa2luZCk6IE5ldy4KKwkobGZlbmNlX2JlZm9yZV9pbmRpcmVjdF9icmFuY2gpOiBOZXcuCisJKGxmZW5jZV9iZWZvcmVfcmV0X2tpbmQpOiBOZXcuCisJKGxmZW5jZV9iZWZvcmVfcmV0KTogTmV3LgorCShsYXN0X2luc24pOiBOZXcuCisJKGxvYWRfaW5zbl9wKTogTmV3LgorCShpbnNlcnRfbGZlbmNlX2FmdGVyKTogTmV3LgorCShpbnNlcnRfbGZlbmNlX2JlZm9yZSk6IE5ldy4KKwkobWRfYXNzZW1ibGUpOiBDYWxsIGluc2VydF9sZmVuY2VfYmVmb3JlIGFuZCBpbnNlcnRfbGZlbmNlX2FmdGVyLgorCVNldCBsYXN0X2luc24uCisJKE9QVElPTl9NTEZFTkNFX0FGVEVSX0xPQUQpOiBOZXcuCisJKE9QVElPTl9NTEZFTkNFX0JFRk9SRV9JTkRJUkVDVF9CUkFOQ0gpOiBOZXcuCisJKE9QVElPTl9NTEZFTkNFX0JFRk9SRV9SRVQpOiBOZXcuCisJKG1kX2xvbmdvcHRzKTogQWRkIC1tbGZlbmNlLWFmdGVyLWxvYWQ9LAorCS1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9IGFuZCAtbWxmZW5jZS1iZWZvcmUtcmV0PS4KKwkobWRfcGFyc2Vfb3B0aW9uKTogSGFuZGxlIC1tbGZlbmNlLWFmdGVyLWxvYWQ9LAorCS1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9IGFuZCAtbWxmZW5jZS1iZWZvcmUtcmV0PS4KKwkobWRfc2hvd191c2FnZSk6IERpc3BsYXkgLW1sZmVuY2UtYWZ0ZXItbG9hZD0sCisJLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD0gYW5kIC1tbGZlbmNlLWJlZm9yZS1yZXQ9LgorCShpMzg2X2NvbnNfYWxpZ24pOiBOZXcuCisJKiBjb25maWcvdGMtaTM4Ni5oIChpMzg2X2NvbnNfYWxpZ24pOiBOZXcuCisJKG1kX2NvbnNfYWxpZ24pOiBOZXcuCisJKiBkb2MvYy1pMzg2LnRleGk6IERvY3VtZW50IC1tbGZlbmNlLWFmdGVyLWxvYWQ9LAorCS1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9IGFuZCAtbWxmZW5jZS1iZWZvcmUtcmV0PS4KKworU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0Lz9wPWJpbnV0aWxzLWdkYi5naXQ7YT1jb21taXQ7aD1hZTUzMTA0MWM3YzU5NTY2NzIzNDJmODljNDg2YTAxMWM4NGYwMjdmXQorQ1ZFOiBDVkUtMjAyMC0wNTUxCistLS0KK2RpZmYgLS1naXQgYS9nYXMvY29uZmlnL3RjLWkzODYuYyBiL2dhcy9jb25maWcvdGMtaTM4Ni5jCitpbmRleCBiMDIwZjM5Yzg2My4uMDkwNjNmNzg0YjcgMTAwNjQ0CistLS0gYS9nYXMvY29uZmlnL3RjLWkzODYuYworKysrIGIvZ2FzL2NvbmZpZy90Yy1pMzg2LmMKK0BAIC02MjksNyArNjI5LDI5IEBAIHN0YXRpYyBpbnQgb21pdF9sb2NrX3ByZWZpeCA9IDA7CisgICAgImxvY2sgYWRkbCAkMCwgKCV7cmV9c3ApIi4gICovCisgc3RhdGljIGludCBhdm9pZF9mZW5jZSA9IDA7CisgCistLyogVHlwZSBvZiB0aGUgcHJldmlvdXMgaW5zdHJ1Y3Rpb24uICAqLworKy8qIDEgaWYgbGZlbmNlIHNob3VsZCBiZSBpbnNlcnRlZCBhZnRlciBldmVyeSBsb2FkLiAgKi8KKytzdGF0aWMgaW50IGxmZW5jZV9hZnRlcl9sb2FkID0gMDsKKysKKysvKiBOb24temVybyBpZiBsZmVuY2Ugc2hvdWxkIGJlIGluc2VydGVkIGJlZm9yZSBpbmRpcmVjdCBicmFuY2guICAqLworK3N0YXRpYyBlbnVtIGxmZW5jZV9iZWZvcmVfaW5kaXJlY3RfYnJhbmNoX2tpbmQKKysgIHsKKysgICAgbGZlbmNlX2JyYW5jaF9ub25lID0gMCwKKysgICAgbGZlbmNlX2JyYW5jaF9yZWdpc3RlciwKKysgICAgbGZlbmNlX2JyYW5jaF9tZW1vcnksCisrICAgIGxmZW5jZV9icmFuY2hfYWxsCisrICB9CisrbGZlbmNlX2JlZm9yZV9pbmRpcmVjdF9icmFuY2g7CisrCisrLyogTm9uLXplcm8gaWYgbGZlbmNlIHNob3VsZCBiZSBpbnNlcnRlZCBiZWZvcmUgcmV0LiAgKi8KKytzdGF0aWMgZW51bSBsZmVuY2VfYmVmb3JlX3JldF9raW5kCisrICB7CisrICAgIGxmZW5jZV9iZWZvcmVfcmV0X25vbmUgPSAwLAorKyAgICBsZmVuY2VfYmVmb3JlX3JldF9ub3QsCisrICAgIGxmZW5jZV9iZWZvcmVfcmV0X29yCisrICB9CisrbGZlbmNlX2JlZm9yZV9yZXQ7CisrCisrLyogVHlwZXMgb2YgcHJldmlvdXMgaW5zdHJ1Y3Rpb24gaXMgLmJ5dGUgb3IgcHJlZml4LiAgKi8KKyBzdGF0aWMgc3RydWN0CisgICB7CisgICAgIHNlZ1Qgc2VnOworQEAgLTQzMTEsNiArNDMzMywyODMgQEAgb3B0aW1pemVfZW5jb2RpbmcgKHZvaWQpCisgICAgIH0KKyB9CisgCisrLyogUmV0dXJuIG5vbi16ZXJvIGZvciBsb2FkIGluc3RydWN0aW9uLiAgKi8KKysKKytzdGF0aWMgaW50CisrbG9hZF9pbnNuX3AgKHZvaWQpCisreworKyAgdW5zaWduZWQgaW50IGRlc3Q7CisrICBpbnQgYW55X3ZleF9wID0gaXNfYW55X3ZleF9lbmNvZGluZyAoJmkudG0pOworKyAgdW5zaWduZWQgaW50IGJhc2Vfb3Bjb2RlID0gaS50bS5iYXNlX29wY29kZSB8IDE7CisrCisrICBpZiAoIWFueV92ZXhfcCkKKysgICAgeworKyAgICAgIC8qIGxlYSAgKi8KKysgICAgICBpZiAoaS50bS5iYXNlX29wY29kZSA9PSAweDhkKQorKwlyZXR1cm4gMDsKKysKKysgICAgICAvKiBwb3AgICovCisrICAgICAgaWYgKChpLnRtLmJhc2Vfb3Bjb2RlICYgfjcpID09IDB4NTgKKysJICB8fCAoaS50bS5iYXNlX29wY29kZSA9PSAweDhmICYmIGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAwKSkKKysJcmV0dXJuIDE7CisrCisrICAgICAgLyogbW92cywgY21wcywgbG9kcywgc2Nhcy4gICovCisrICAgICAgaWYgKChpLnRtLmJhc2Vfb3Bjb2RlIHwgMHhiKSA9PSAweGFmKQorKwlyZXR1cm4gMTsKKysKKysgICAgICAvKiBvdXRzICovCisrICAgICAgaWYgKGJhc2Vfb3Bjb2RlID09IDB4NmYpCisrCXJldHVybiAxOworKyAgICB9CisrCisrICAvKiBObyBtZW1vcnkgb3BlcmFuZC4gICovCisrICBpZiAoIWkubWVtX29wZXJhbmRzKQorKyAgICByZXR1cm4gMDsKKysKKysgIGlmIChhbnlfdmV4X3ApCisrICAgIHsKKysgICAgICAvKiB2bGRteGNzci4gICovCisrICAgICAgaWYgKGkudG0uYmFzZV9vcGNvZGUgPT0gMHhhZQorKwkgICYmIGkudG0ub3Bjb2RlX21vZGlmaWVyLnZleAorKwkgICYmIGkudG0ub3Bjb2RlX21vZGlmaWVyLnZleG9wY29kZSA9PSBWRVgwRgorKwkgICYmIGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAyKQorKwlyZXR1cm4gMTsKKysgICAgfQorKyAgZWxzZQorKyAgICB7CisrICAgICAgLyogdGVzdCwgbm90LCBuZWcsIG11bCwgaW11bCwgZGl2LCBpZGl2LiAgKi8KKysgICAgICBpZiAoKGkudG0uYmFzZV9vcGNvZGUgPT0gMHhmNiB8fCBpLnRtLmJhc2Vfb3Bjb2RlID09IDB4ZjcpCisrCSAgJiYgaS50bS5leHRlbnNpb25fb3Bjb2RlICE9IDEpCisrCXJldHVybiAxOworKworKyAgICAgIC8qIGluYywgZGVjLiAgKi8KKysgICAgICBpZiAoYmFzZV9vcGNvZGUgPT0gMHhmZiAmJiBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPD0gMSkKKysJcmV0dXJuIDE7CisrCisrICAgICAgLyogYWRkLCBvciwgYWRjLCBzYmIsIGFuZCwgc3ViLCB4b3IsIGNtcC4gICovCisrICAgICAgaWYgKGkudG0uYmFzZV9vcGNvZGUgPj0gMHg4MCAmJiBpLnRtLmJhc2Vfb3Bjb2RlIDw9IDB4ODMpCisrCXJldHVybiAxOworKworKyAgICAgIC8qIGJ0LCBidHMsIGJ0ciwgYnRjLiAgKi8KKysgICAgICBpZiAoaS50bS5iYXNlX29wY29kZSA9PSAweGZiYQorKwkgICYmIChpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPj0gNCAmJiBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPD0gNykpCisrCXJldHVybiAxOworKworKyAgICAgIC8qIHJvbCwgcm9yLCByY2wsIHJjciwgc2hsL3NhbCwgc2hyLCBzYXIuICovCisrICAgICAgaWYgKChiYXNlX29wY29kZSA9PSAweGMxCisrCSAgIHx8IChpLnRtLmJhc2Vfb3Bjb2RlID49IDB4ZDAgJiYgaS50bS5iYXNlX29wY29kZSA8PSAweGQzKSkKKysJICAmJiBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgIT0gNikKKysJcmV0dXJuIDE7CisrCisrICAgICAgLyogY21weGNoZzhiLCBjbXB4Y2hnMTZiLCB4cnN0b3JzLiAgKi8KKysgICAgICBpZiAoaS50bS5iYXNlX29wY29kZSA9PSAweGZjNworKwkgICYmIChpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMSB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMykpCisrCXJldHVybiAxOworKworKyAgICAgIC8qIGZ4cnN0b3IsIGxkbXhjc3IsIHhyc3Rvci4gICovCisrICAgICAgaWYgKGkudG0uYmFzZV9vcGNvZGUgPT0gMHhmYWUKKysJICAmJiAoaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDEKKysJICAgICAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDIKKysJICAgICAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDUpKQorKwlyZXR1cm4gMTsKKysKKysgICAgICAvKiBsZ2R0LCBsaWR0LCBsbXN3LiAgKi8KKysgICAgICBpZiAoaS50bS5iYXNlX29wY29kZSA9PSAweGYwMQorKwkgICYmIChpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMgorKwkgICAgICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMworKwkgICAgICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gNikpCisrCXJldHVybiAxOworKworKyAgICAgIC8qIHZtcHRybGQgKi8KKysgICAgICBpZiAoaS50bS5iYXNlX29wY29kZSA9PSAweGZjNworKwkgICYmIGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSA2KQorKwlyZXR1cm4gMTsKKysKKysgICAgICAvKiBDaGVjayBmb3IgeDg3IGluc3RydWN0aW9ucy4gICovCisrICAgICAgaWYgKGkudG0uYmFzZV9vcGNvZGUgPj0gMHhkOCAmJiBpLnRtLmJhc2Vfb3Bjb2RlIDw9IDB4ZGYpCisrCXsKKysJICAvKiBTa2lwIGZzdCwgZnN0cCwgZnN0ZW52LCBmc3Rjdy4gICovCisrCSAgaWYgKGkudG0uYmFzZV9vcGNvZGUgPT0gMHhkOQorKwkgICAgICAmJiAoaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDIKKysJCSAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDMKKysJCSAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDYKKysJCSAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDcpKQorKwkgICAgcmV0dXJuIDA7CisrCisrCSAgLyogU2tpcCBmaXN0dHAsIGZpc3QsIGZpc3RwLCBmc3RwLiAgKi8KKysJICBpZiAoaS50bS5iYXNlX29wY29kZSA9PSAweGRiCisrCSAgICAgICYmIChpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMQorKwkJICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMgorKwkJICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMworKwkJICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gNykpCisrCSAgICByZXR1cm4gMDsKKysKKysJICAvKiBTa2lwIGZpc3R0cCwgZnN0LCBmc3RwLCBmc2F2ZSwgZnN0c3cuICAqLworKwkgIGlmIChpLnRtLmJhc2Vfb3Bjb2RlID09IDB4ZGQKKysJICAgICAgJiYgKGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAxCisrCQkgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAyCisrCQkgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAzCisrCQkgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSA2CisrCQkgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSA3KSkKKysJICAgIHJldHVybiAwOworKworKwkgIC8qIFNraXAgZmlzdHRwLCBmaXN0LCBmaXN0cCwgZmJzdHAsIGZpc3RwLiAgKi8KKysJICBpZiAoaS50bS5iYXNlX29wY29kZSA9PSAweGRmCisrCSAgICAgICYmIChpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMQorKwkJICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMgorKwkJICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMworKwkJICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gNgorKwkJICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gNykpCisrCSAgICByZXR1cm4gMDsKKysKKysJICByZXR1cm4gMTsKKysJfQorKyAgICB9CisrCisrICBkZXN0ID0gaS5vcGVyYW5kcyAtIDE7CisrCisrICAvKiBDaGVjayBmYWtlIGltbTggb3BlcmFuZCBhbmQgMyBzb3VyY2Ugb3BlcmFuZHMuICAqLworKyAgaWYgKChpLnRtLm9wY29kZV9tb2RpZmllci5pbW1leHQKKysgICAgICAgfHwgaS50bS5vcGNvZGVfbW9kaWZpZXIudmV4c291cmNlcyA9PSBWRVgzU09VUkNFUykKKysgICAgICAmJiBpLnR5cGVzW2Rlc3RdLmJpdGZpZWxkLmltbTgpCisrICAgIGRlc3QtLTsKKysKKysgIC8qIGFkZCwgb3IsIGFkYywgc2JiLCBhbmQsIHN1YiwgeG9yLCBjbXAsIHRlc3QsIHhjaGcsIHhhZGQgICovCisrICBpZiAoIWFueV92ZXhfcAorKyAgICAgICYmIChiYXNlX29wY29kZSA9PSAweDEKKysJICB8fCBiYXNlX29wY29kZSA9PSAweDkKKysJICB8fCBiYXNlX29wY29kZSA9PSAweDExCisrCSAgfHwgYmFzZV9vcGNvZGUgPT0gMHgxOQorKwkgIHx8IGJhc2Vfb3Bjb2RlID09IDB4MjEKKysJICB8fCBiYXNlX29wY29kZSA9PSAweDI5CisrCSAgfHwgYmFzZV9vcGNvZGUgPT0gMHgzMQorKwkgIHx8IGJhc2Vfb3Bjb2RlID09IDB4MzkKKysJICB8fCAoaS50bS5iYXNlX29wY29kZSA+PSAweDg0ICYmIGkudG0uYmFzZV9vcGNvZGUgPD0gMHg4NykKKysJICB8fCBiYXNlX29wY29kZSA9PSAweGZjMSkpCisrICAgIHJldHVybiAxOworKworKyAgLyogQ2hlY2sgZm9yIGxvYWQgaW5zdHJ1Y3Rpb24uICAqLworKyAgcmV0dXJuIChpLnR5cGVzW2Rlc3RdLmJpdGZpZWxkLmNsYXNzICE9IENsYXNzTm9uZQorKwkgIHx8IGkudHlwZXNbZGVzdF0uYml0ZmllbGQuaW5zdGFuY2UgPT0gQWNjdW0pOworK30KKysKKysvKiBPdXRwdXQgbGZlbmNlLCAweGZhZWU4LCBhZnRlciBpbnN0cnVjdGlvbi4gICovCisrCisrc3RhdGljIHZvaWQKKytpbnNlcnRfbGZlbmNlX2FmdGVyICh2b2lkKQorK3sKKysgIGlmIChsZmVuY2VfYWZ0ZXJfbG9hZCAmJiBsb2FkX2luc25fcCAoKSkKKysgICAgeworKyAgICAgIGNoYXIgKnAgPSBmcmFnX21vcmUgKDMpOworKyAgICAgICpwKysgPSAweGY7CisrICAgICAgKnArKyA9IDB4YWU7CisrICAgICAgKnAgPSAweGU4OworKyAgICB9CisrfQorKworKy8qIE91dHB1dCBsZmVuY2UsIDB4ZmFlZTgsIGJlZm9yZSBpbnN0cnVjdGlvbi4gICovCisrCisrc3RhdGljIHZvaWQKKytpbnNlcnRfbGZlbmNlX2JlZm9yZSAodm9pZCkKKyt7CisrICBjaGFyICpwOworKworKyAgaWYgKGlzX2FueV92ZXhfZW5jb2RpbmcgKCZpLnRtKSkKKysgICAgcmV0dXJuOworKworKyAgaWYgKGkudG0uYmFzZV9vcGNvZGUgPT0gMHhmZgorKyAgICAgICYmIChpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMiB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gNCkpCisrICAgIHsKKysgICAgICAvKiBJbnNlcnQgbGZlbmNlIGJlZm9yZSBpbmRpcmVjdCBicmFuY2ggaWYgbmVlZGVkLiAgKi8KKysKKysgICAgICBpZiAobGZlbmNlX2JlZm9yZV9pbmRpcmVjdF9icmFuY2ggPT0gbGZlbmNlX2JyYW5jaF9ub25lKQorKwlyZXR1cm47CisrCisrICAgICAgaWYgKGkub3BlcmFuZHMgIT0gMSkKKysJYWJvcnQgKCk7CisrCisrICAgICAgaWYgKGkucmVnX29wZXJhbmRzID09IDEpCisrCXsKKysJICAvKiBJbmRpcmVjdCBicmFuY2ggdmlhIHJlZ2lzdGVyLiAgRG9uJ3QgaW5zZXJ0IGxmZW5jZSB3aXRoCisrCSAgICAgLW1sZmVuY2UtYWZ0ZXItbG9hZD15ZXMuICAqLworKwkgIGlmIChsZmVuY2VfYWZ0ZXJfbG9hZAorKwkgICAgICB8fCBsZmVuY2VfYmVmb3JlX2luZGlyZWN0X2JyYW5jaCA9PSBsZmVuY2VfYnJhbmNoX21lbW9yeSkKKysJICAgIHJldHVybjsKKysJfQorKyAgICAgIGVsc2UgaWYgKGkubWVtX29wZXJhbmRzID09IDEKKysJICAgICAgICYmIGxmZW5jZV9iZWZvcmVfaW5kaXJlY3RfYnJhbmNoICE9IGxmZW5jZV9icmFuY2hfcmVnaXN0ZXIpCisrCXsKKysJICBhc193YXJuIChfKCJpbmRpcmVjdCBgJXNgIHdpdGggbWVtb3J5IG9wZXJhbmQgc2hvdWxkIGJlIGF2b2lkZWQiKSwKKysJCSAgIGkudG0ubmFtZSk7CisrCSAgcmV0dXJuOworKwl9CisrICAgICAgZWxzZQorKwlyZXR1cm47CisrCisrICAgICAgaWYgKGxhc3RfaW5zbi5raW5kICE9IGxhc3RfaW5zbl9vdGhlcgorKwkgICYmIGxhc3RfaW5zbi5zZWcgPT0gbm93X3NlZykKKysJeworKwkgIGFzX3dhcm5fd2hlcmUgKGxhc3RfaW5zbi5maWxlLCBsYXN0X2luc24ubGluZSwKKysJCQkgXygiYCVzYCBza2lwcyAtbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoIG9uIGAlc2AiKSwKKysJCQkgbGFzdF9pbnNuLm5hbWUsIGkudG0ubmFtZSk7CisrCSAgcmV0dXJuOworKwl9CisrCisrICAgICAgcCA9IGZyYWdfbW9yZSAoMyk7CisrICAgICAgKnArKyA9IDB4ZjsKKysgICAgICAqcCsrID0gMHhhZTsKKysgICAgICAqcCA9IDB4ZTg7CisrICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICAvKiBPdXRwdXQgb3Ivbm90IGFuZCBsZmVuY2UgYmVmb3JlIHJldC4gICovCisrICBpZiAobGZlbmNlX2JlZm9yZV9yZXQgIT0gbGZlbmNlX2JlZm9yZV9yZXRfbm9uZQorKyAgICAgICYmIChpLnRtLmJhc2Vfb3Bjb2RlID09IDB4YzIKKysJICB8fCBpLnRtLmJhc2Vfb3Bjb2RlID09IDB4YzMKKysJICB8fCBpLnRtLmJhc2Vfb3Bjb2RlID09IDB4Y2EKKysJICB8fCBpLnRtLmJhc2Vfb3Bjb2RlID09IDB4Y2IpKQorKyAgICB7CisrICAgICAgaWYgKGxhc3RfaW5zbi5raW5kICE9IGxhc3RfaW5zbl9vdGhlcgorKwkgICYmIGxhc3RfaW5zbi5zZWcgPT0gbm93X3NlZykKKysJeworKwkgIGFzX3dhcm5fd2hlcmUgKGxhc3RfaW5zbi5maWxlLCBsYXN0X2luc24ubGluZSwKKysJCQkgXygiYCVzYCBza2lwcyAtbWxmZW5jZS1iZWZvcmUtcmV0IG9uIGAlc2AiKSwKKysJCQkgbGFzdF9pbnNuLm5hbWUsIGkudG0ubmFtZSk7CisrCSAgcmV0dXJuOworKwl9CisrICAgICAgaWYgKGxmZW5jZV9iZWZvcmVfcmV0ID09IGxmZW5jZV9iZWZvcmVfcmV0X29yKQorKwl7CisrCSAgLyogb3JsOiAweDgzMGMyNDAwLiAgKi8KKysJICBwID0gZnJhZ19tb3JlICgoZmxhZ19jb2RlID09IENPREVfNjRCSVQgPyAxIDogMCkgKyA0ICsgMyk7CisrCSAgaWYgKGZsYWdfY29kZSA9PSBDT0RFXzY0QklUKQorKwkgICAgKnArKyA9IDB4NDg7CisrCSAgKnArKyA9IDB4ODM7CisrCSAgKnArKyA9IDB4YzsKKysJICAqcCsrID0gMHgyNDsKKysJICAqcCsrID0gMHgwOworKwl9CisrICAgICAgZWxzZQorKwl7CisrCSAgcCA9IGZyYWdfbW9yZSAoKGZsYWdfY29kZSA9PSBDT0RFXzY0QklUID8gMiA6IDApICsgNiArIDMpOworKwkgIC8qIG5vdGw6IDB4ZjcxNDI0LiAgKi8KKysJICBpZiAoZmxhZ19jb2RlID09IENPREVfNjRCSVQpCisrCSAgICAqcCsrID0gMHg0ODsKKysJICAqcCsrID0gMHhmNzsKKysJICAqcCsrID0gMHgxNDsKKysJICAqcCsrID0gMHgyNDsKKysJICAvKiBub3RsOiAweGY3MTQyNC4gICovCisrCSAgaWYgKGZsYWdfY29kZSA9PSBDT0RFXzY0QklUKQorKwkgICAgKnArKyA9IDB4NDg7CisrCSAgKnArKyA9IDB4Zjc7CisrCSAgKnArKyA9IDB4MTQ7CisrCSAgKnArKyA9IDB4MjQ7CisrCX0KKysgICAgICAqcCsrID0gMHhmOworKyAgICAgICpwKysgPSAweGFlOworKyAgICAgICpwID0gMHhlODsKKysgICAgfQorK30KKysKKyAvKiBUaGlzIGlzIHRoZSBndXRzIG9mIHRoZSBtYWNoaW5lLWRlcGVuZGVudCBhc3NlbWJsZXIuICBMSU5FIHBvaW50cyB0byBhCisgICAgbWFjaGluZSBkZXBlbmRlbnQgaW5zdHJ1Y3Rpb24uICBUaGlzIGZ1bmN0aW9uIGlzIHN1cHBvc2VkIHRvIGVtaXQKKyAgICB0aGUgZnJhZ3MvYnl0ZXMgaXQgYXNzZW1ibGVzIHRvLiAgKi8KK0BAIC00NjI4LDkgKzQ5MjcsMTMgQEAgbWRfYXNzZW1ibGUgKGNoYXIgKmxpbmUpCisgICBpZiAoaS5yZXggIT0gMCkKKyAgICAgYWRkX3ByZWZpeCAoUkVYX09QQ09ERSB8IGkucmV4KTsKKyAKKysgIGluc2VydF9sZmVuY2VfYmVmb3JlICgpOworKworICAgLyogV2UgYXJlIHJlYWR5IHRvIG91dHB1dCB0aGUgaW5zbi4gICovCisgICBvdXRwdXRfaW5zbiAoKTsKKyAKKysgIGluc2VydF9sZmVuY2VfYWZ0ZXIgKCk7CisrCisgICBsYXN0X2luc24uc2VnID0gbm93X3NlZzsKKyAKKyAgIGlmIChpLnRtLm9wY29kZV9tb2RpZmllci5pc3ByZWZpeCkKK0BAIC0xMjI1MCw2ICsxMjU1Myw5IEBAIGNvbnN0IGNoYXIgKm1kX3Nob3J0b3B0cyA9ICJxbk86OiI7CisgI2RlZmluZSBPUFRJT05fTUFMSUdOX0JSQU5DSF9QUkVGSVhfU0laRSAoT1BUSU9OX01EX0JBU0UgKyAyOCkKKyAjZGVmaW5lIE9QVElPTl9NQUxJR05fQlJBTkNIIChPUFRJT05fTURfQkFTRSArIDI5KQorICNkZWZpbmUgT1BUSU9OX01CUkFOQ0hFU19XSVRIXzMyQl9CT1VOREFSSUVTIChPUFRJT05fTURfQkFTRSArIDMwKQorKyNkZWZpbmUgT1BUSU9OX01MRkVOQ0VfQUZURVJfTE9BRCAoT1BUSU9OX01EX0JBU0UgKyAzMSkKKysjZGVmaW5lIE9QVElPTl9NTEZFTkNFX0JFRk9SRV9JTkRJUkVDVF9CUkFOQ0ggKE9QVElPTl9NRF9CQVNFICsgMzIpCisrI2RlZmluZSBPUFRJT05fTUxGRU5DRV9CRUZPUkVfUkVUIChPUFRJT05fTURfQkFTRSArIDMzKQorIAorIHN0cnVjdCBvcHRpb24gbWRfbG9uZ29wdHNbXSA9CisgeworQEAgLTEyMjg5LDYgKzEyNTk1LDEwIEBAIHN0cnVjdCBvcHRpb24gbWRfbG9uZ29wdHNbXSA9CisgICB7Im1hbGlnbi1icmFuY2gtcHJlZml4LXNpemUiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgT1BUSU9OX01BTElHTl9CUkFOQ0hfUFJFRklYX1NJWkV9LAorICAgeyJtYWxpZ24tYnJhbmNoIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIE9QVElPTl9NQUxJR05fQlJBTkNIfSwKKyAgIHsibWJyYW5jaGVzLXdpdGhpbi0zMkItYm91bmRhcmllcyIsIG5vX2FyZ3VtZW50LCBOVUxMLCBPUFRJT05fTUJSQU5DSEVTX1dJVEhfMzJCX0JPVU5EQVJJRVN9LAorKyAgeyJtbGZlbmNlLWFmdGVyLWxvYWQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgT1BUSU9OX01MRkVOQ0VfQUZURVJfTE9BRH0sCisrICB7Im1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLAorKyAgIE9QVElPTl9NTEZFTkNFX0JFRk9SRV9JTkRJUkVDVF9CUkFOQ0h9LAorKyAgeyJtbGZlbmNlLWJlZm9yZS1yZXQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgT1BUSU9OX01MRkVOQ0VfQkVGT1JFX1JFVH0sCisgICB7Im1hbWQ2NCIsIG5vX2FyZ3VtZW50LCBOVUxMLCBPUFRJT05fTUFNRDY0fSwKKyAgIHsibWludGVsNjQiLCBub19hcmd1bWVudCwgTlVMTCwgT1BUSU9OX01JTlRFTDY0fSwKKyAgIHtOVUxMLCBub19hcmd1bWVudCwgTlVMTCwgMH0KK0BAIC0xMjY2OCw2ICsxMjk3OCw0MSBAQCBtZF9wYXJzZV9vcHRpb24gKGludCBjLCBjb25zdCBjaGFyICphcmcpCisgICAgICAgICBhc19mYXRhbCAoXygiaW52YWxpZCAtbWZlbmNlLWFzLWxvY2stYWRkPSBvcHRpb246IGAlcyciKSwgYXJnKTsKKyAgICAgICBicmVhazsKKyAKKysgICAgY2FzZSBPUFRJT05fTUxGRU5DRV9BRlRFUl9MT0FEOgorKyAgICAgIGlmIChzdHJjYXNlY21wIChhcmcsICJ5ZXMiKSA9PSAwKQorKwlsZmVuY2VfYWZ0ZXJfbG9hZCA9IDE7CisrICAgICAgZWxzZSBpZiAoc3RyY2FzZWNtcCAoYXJnLCAibm8iKSA9PSAwKQorKwlsZmVuY2VfYWZ0ZXJfbG9hZCA9IDA7CisrICAgICAgZWxzZQorKyAgICAgICAgYXNfZmF0YWwgKF8oImludmFsaWQgLW1sZmVuY2UtYWZ0ZXItbG9hZD0gb3B0aW9uOiBgJXMnIiksIGFyZyk7CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgT1BUSU9OX01MRkVOQ0VfQkVGT1JFX0lORElSRUNUX0JSQU5DSDoKKysgICAgICBpZiAoc3RyY2FzZWNtcCAoYXJnLCAiYWxsIikgPT0gMCkKKysJbGZlbmNlX2JlZm9yZV9pbmRpcmVjdF9icmFuY2ggPSBsZmVuY2VfYnJhbmNoX2FsbDsKKysgICAgICBlbHNlIGlmIChzdHJjYXNlY21wIChhcmcsICJtZW1vcnkiKSA9PSAwKQorKwlsZmVuY2VfYmVmb3JlX2luZGlyZWN0X2JyYW5jaCA9IGxmZW5jZV9icmFuY2hfbWVtb3J5OworKyAgICAgIGVsc2UgaWYgKHN0cmNhc2VjbXAgKGFyZywgInJlZ2lzdGVyIikgPT0gMCkKKysJbGZlbmNlX2JlZm9yZV9pbmRpcmVjdF9icmFuY2ggPSBsZmVuY2VfYnJhbmNoX3JlZ2lzdGVyOworKyAgICAgIGVsc2UgaWYgKHN0cmNhc2VjbXAgKGFyZywgIm5vbmUiKSA9PSAwKQorKwlsZmVuY2VfYmVmb3JlX2luZGlyZWN0X2JyYW5jaCA9IGxmZW5jZV9icmFuY2hfbm9uZTsKKysgICAgICBlbHNlCisrICAgICAgICBhc19mYXRhbCAoXygiaW52YWxpZCAtbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPSBvcHRpb246IGAlcyciKSwKKysJCSAgYXJnKTsKKysgICAgICBicmVhazsKKysKKysgICAgY2FzZSBPUFRJT05fTUxGRU5DRV9CRUZPUkVfUkVUOgorKyAgICAgIGlmIChzdHJjYXNlY21wIChhcmcsICJvciIpID09IDApCisrCWxmZW5jZV9iZWZvcmVfcmV0ID0gbGZlbmNlX2JlZm9yZV9yZXRfb3I7CisrICAgICAgZWxzZSBpZiAoc3RyY2FzZWNtcCAoYXJnLCAibm90IikgPT0gMCkKKysJbGZlbmNlX2JlZm9yZV9yZXQgPSBsZmVuY2VfYmVmb3JlX3JldF9ub3Q7CisrICAgICAgZWxzZSBpZiAoc3RyY2FzZWNtcCAoYXJnLCAibm9uZSIpID09IDApCisrCWxmZW5jZV9iZWZvcmVfcmV0ID0gbGZlbmNlX2JlZm9yZV9yZXRfbm9uZTsKKysgICAgICBlbHNlCisrICAgICAgICBhc19mYXRhbCAoXygiaW52YWxpZCAtbWxmZW5jZS1iZWZvcmUtcmV0PSBvcHRpb246IGAlcyciKSwKKysJCSAgYXJnKTsKKysgICAgICBicmVhazsKKysKKyAgICAgY2FzZSBPUFRJT05fTVJFTEFYX1JFTE9DQVRJT05TOgorICAgICAgIGlmIChzdHJjYXNlY21wIChhcmcsICJ5ZXMiKSA9PSAwKQorICAgICAgICAgZ2VuZXJhdGVfcmVsYXhfcmVsb2NhdGlvbnMgPSAxOworQEAgLTEzMDI1LDYgKzEzMzcwLDE1IEBAIG1kX3Nob3dfdXNhZ2UgKEZJTEUgKnN0cmVhbSkKKyAgIC1tYnJhbmNoZXMtd2l0aGluLTMyQi1ib3VuZGFyaWVzXG5cCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbiBicmFuY2hlcyB3aXRoaW4gMzIgYnl0ZSBib3VuZGFyeVxuIikpOworICAgZnByaW50ZiAoc3RyZWFtLCBfKCJcCisrICAtbWxmZW5jZS1hZnRlci1sb2FkPVtub3x5ZXNdIChkZWZhdWx0OiBubylcblwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlIGxmZW5jZSBhZnRlciBsb2FkXG4iKSk7CisrICBmcHJpbnRmIChzdHJlYW0sIF8oIlwKKysgIC1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9W25vbmV8YWxsfHJlZ2lzdGVyfG1lbW9yeV0gKGRlZmF1bHQ6IG5vbmUpXG5cCisrICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZSBsZmVuY2UgYmVmb3JlIGluZGlyZWN0IG5lYXIgYnJhbmNoXG4iKSk7CisrICBmcHJpbnRmIChzdHJlYW0sIF8oIlwKKysgIC1tbGZlbmNlLWJlZm9yZS1yZXQ9W25vbmV8b3J8bm90XSAoZGVmYXVsdDogbm9uZSlcblwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlIGxmZW5jZSBiZWZvcmUgcmV0XG4iKSk7CisrICBmcHJpbnRmIChzdHJlYW0sIF8oIlwKKyAgIC1tYW1kNjQgICAgICAgICAgICAgICAgIGFjY2VwdCBvbmx5IEFNRDY0IElTQSBbZGVmYXVsdF1cbiIpKTsKKyAgIGZwcmludGYgKHN0cmVhbSwgXygiXAorICAgLW1pbnRlbDY0ICAgICAgICAgICAgICAgYWNjZXB0IG9ubHkgSW50ZWw2NCBJU0FcbiIpKTsKK0BAIC0xMzI1NCw2ICsxMzYwOCwxNiBAQCBpMzg2X2NvbnNfYWxpZ24gKGludCBpZ25vcmUgQVRUUklCVVRFX1VOVVNFRCkKKyAgICAgICBsYXN0X2luc24ua2luZCA9IGxhc3RfaW5zbl9kaXJlY3RpdmU7CisgICAgICAgbGFzdF9pbnNuLm5hbWUgPSAiY29uc3RhbnQgZGlyZWN0aXZlIjsKKyAgICAgICBsYXN0X2luc24uZmlsZSA9IGFzX3doZXJlICgmbGFzdF9pbnNuLmxpbmUpOworKyAgICAgIGlmIChsZmVuY2VfYmVmb3JlX3JldCAhPSBsZmVuY2VfYmVmb3JlX3JldF9ub25lKQorKwl7CisrCSAgaWYgKGxmZW5jZV9iZWZvcmVfaW5kaXJlY3RfYnJhbmNoICE9IGxmZW5jZV9icmFuY2hfbm9uZSkKKysJICAgIGFzX3dhcm4gKF8oImNvbnN0YW50IGRpcmVjdGl2ZSBza2lwcyAtbWxmZW5jZS1iZWZvcmUtcmV0ICIKKysJCSAgICAgICAiYW5kIC1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2giKSk7CisrCSAgZWxzZQorKwkgICAgYXNfd2FybiAoXygiY29uc3RhbnQgZGlyZWN0aXZlIHNraXBzIC1tbGZlbmNlLWJlZm9yZS1yZXQiKSk7CisrCX0KKysgICAgICBlbHNlIGlmIChsZmVuY2VfYmVmb3JlX2luZGlyZWN0X2JyYW5jaCAhPSBsZmVuY2VfYnJhbmNoX25vbmUpCisrCWFzX3dhcm4gKF8oImNvbnN0YW50IGRpcmVjdGl2ZSBza2lwcyAtbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoIikpOworICAgICB9CisgfQorIAorZGlmZiAtLWdpdCBhL2dhcy9kb2MvYy1pMzg2LnRleGkgYi9nYXMvZG9jL2MtaTM4Ni50ZXhpCitpbmRleCBjNTM2NzU5Y2IzOC4uMWRkOTlmOTFiYjAgMTAwNjQ0CistLS0gYS9nYXMvZG9jL2MtaTM4Ni50ZXhpCisrKysgYi9nYXMvZG9jL2MtaTM4Ni50ZXhpCitAQCAtNDY0LDYgKzQ2NCw0OSBAQCBvbiBhbiBpbnN0cnVjdGlvbi4gIEl0IGlzIGVxdWl2YWxlbnQgdG8KKyBAb3B0aW9uey1tYWxpZ24tYnJhbmNoLXByZWZpeC1zaXplPTV9LgorIFRoZSBkZWZhdWx0IGRvZXNuJ3QgYWxpZ24gYnJhbmNoZXMuCisgCisrQGNpbmRleCBAc2FtcHstbWxmZW5jZS1hZnRlci1sb2FkPX0gb3B0aW9uLCBpMzg2CisrQGNpbmRleCBAc2FtcHstbWxmZW5jZS1hZnRlci1sb2FkPX0gb3B0aW9uLCB4ODYtNjQKKytAaXRlbSAtbWxmZW5jZS1hZnRlci1sb2FkPUB2YXJ7bm99CisrQGl0ZW14IC1tbGZlbmNlLWFmdGVyLWxvYWQ9QHZhcnt5ZXN9CisrVGhlc2Ugb3B0aW9ucyBjb250cm9sIHdoZXRoZXIgdGhlIGFzc2VtYmxlciBzaG91bGQgZ2VuZXJhdGUgbGZlbmNlCisrYWZ0ZXIgbG9hZCBpbnN0cnVjdGlvbnMuICBAb3B0aW9uey1tbGZlbmNlLWFmdGVyLWxvYWQ9QHZhcnt5ZXN9fSB3aWxsCisrZ2VuZXJhdGUgbGZlbmNlLiAgQG9wdGlvbnstbWxmZW5jZS1hZnRlci1sb2FkPUB2YXJ7bm99fSB3aWxsIG5vdCBnZW5lcmF0ZQorK2xmZW5jZSwgd2hpY2ggaXMgdGhlIGRlZmF1bHQuCisrCisrQGNpbmRleCBAc2FtcHstbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPX0gb3B0aW9uLCBpMzg2CisrQGNpbmRleCBAc2FtcHstbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPX0gb3B0aW9uLCB4ODYtNjQKKytAaXRlbSAtbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPUB2YXJ7bm9uZX0KKytAaXRlbSAtbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPUB2YXJ7YWxsfQorK0BpdGVtIC1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9QHZhcntyZWdpc3Rlcn0KKytAaXRlbXggLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD1AdmFye21lbW9yeX0KKytUaGVzZSBvcHRpb25zIGNvbnRyb2wgd2hldGhlciB0aGUgYXNzZW1ibGVyIHNob3VsZCBnZW5lcmF0ZSBsZmVuY2UKKythZnRlciBpbmRpcmVjdCBuZWFyIGJyYW5jaCBpbnN0cnVjdGlvbnMuCisrQG9wdGlvbnstbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPUB2YXJ7YWxsfX0gd2lsbCBnZW5lcmF0ZSBsZmVuY2UKKythZnRlciBpbmRpcmVjdCBuZWFyIGJyYW5jaCB2aWEgcmVnaXN0ZXIgYW5kIGlzc3VlIGEgd2FybmluZyBiZWZvcmUKKytpbmRpcmVjdCBuZWFyIGJyYW5jaCB2aWEgbWVtb3J5LgorK0BvcHRpb257LW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD1AdmFye3JlZ2lzdGVyfX0gd2lsbCBnZW5lcmF0ZQorK2xmZW5jZSBhZnRlciBpbmRpcmVjdCBuZWFyIGJyYW5jaCB2aWEgcmVnaXN0ZXIuCisrQG9wdGlvbnstbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPUB2YXJ7bWVtb3J5fX0gd2lsbCBpc3N1ZSBhCisrd2FybmluZyBiZWZvcmUgaW5kaXJlY3QgbmVhciBicmFuY2ggdmlhIG1lbW9yeS4KKytAb3B0aW9uey1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9QHZhcntub25lfX0gd2lsbCBub3QgZ2VuZXJhdGUKKytsZmVuY2Ugbm9yIGlzc3VlIHdhcm5pbmcsIHdoaWNoIGlzIHRoZSBkZWZhdWx0LiAgTm90ZSB0aGF0IGxmZW5jZSB3b24ndAorK2JlIGdlbmVyYXRlZCBiZWZvcmUgaW5kaXJlY3QgbmVhciBicmFuY2ggdmlhIHJlZ2lzdGVyIHdpdGgKKytAb3B0aW9uey1tbGZlbmNlLWFmdGVyLWxvYWQ9QHZhcnt5ZXN9fSBzaW5jZSBsZmVuY2Ugd2lsbCBiZSBnZW5lcmF0ZWQKKythZnRlciBsb2FkaW5nIGJyYW5jaCB0YXJnZXQgcmVnaXN0ZXIuCisrCisrQGNpbmRleCBAc2FtcHstbWxmZW5jZS1iZWZvcmUtcmV0PX0gb3B0aW9uLCBpMzg2CisrQGNpbmRleCBAc2FtcHstbWxmZW5jZS1iZWZvcmUtcmV0PX0gb3B0aW9uLCB4ODYtNjQKKytAaXRlbSAtbWxmZW5jZS1iZWZvcmUtcmV0PUB2YXJ7bm9uZX0KKytAaXRlbSAtbWxmZW5jZS1iZWZvcmUtcmV0PUB2YXJ7b3J9CisrQGl0ZW14IC1tbGZlbmNlLWJlZm9yZS1yZXQ9QHZhcntub3R9CisrVGhlc2Ugb3B0aW9ucyBjb250cm9sIHdoZXRoZXIgdGhlIGFzc2VtYmxlciBzaG91bGQgZ2VuZXJhdGUgbGZlbmNlCisrYmVmb3JlIHJldC4gIEBvcHRpb257LW1sZmVuY2UtYmVmb3JlLXJldD1AdmFye29yfX0gd2lsbCBnZW5lcmF0ZQorK2dlbmVyYXRlIG9yIGluc3RydWN0aW9uIHdpdGggbGZlbmNlLgorK0BvcHRpb257LW1sZmVuY2UtYmVmb3JlLXJldD1AdmFye25vdH19IHdpbGwgZ2VuZXJhdGUgbm90IGluc3RydWN0aW9uCisrd2l0aCBsZmVuY2UuCisrQG9wdGlvbnstbWxmZW5jZS1iZWZvcmUtcmV0PUB2YXJ7bm9uZX19IHdpbGwgbm90IGdlbmVyYXRlIGxmZW5jZSwKKyt3aGljaCBpcyB0aGUgZGVmYXVsdC4KKysKKyBAY2luZGV4IEBzYW1wey1teDg2LXVzZWQtbm90ZT19IG9wdGlvbiwgaTM4NgorIEBjaW5kZXggQHNhbXB7LW14ODYtdXNlZC1ub3RlPX0gb3B0aW9uLCB4ODYtNjQKKyBAaXRlbSAtbXg4Ni11c2VkLW5vdGU9QHZhcntub30KKy0tIAorMi4xOC4yCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjMyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4zMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODkzMTU5MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjMyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotcmVxdWlyZSBiaW51dGlscy5pbmMKLXJlcXVpcmUgYmludXRpbHMtJHtQVn0uaW5jCi0KLURFUEVORFMgKz0gImZsZXggYmlzb24gemxpYiIKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtc3lzcm9vdD0vIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLWxpYmJmZCBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJpYmVydHkgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNoYXJlZCBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXN5c3RlbS16bGliIFwKLSAgICAgICAgICAgICAgICAiCi0KLUVYVFJBX09FTUFLRV9hcHBlbmRfbGliYy1tdXNsID0gIlwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0X2N2X2Z1bmNfZ251Z2V0dGV4dDFfbGliYz15ZXMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0Ml9saWJjPXllcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS1lbmFibGUtdGFyZ2V0cz1hbGwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS02NC1iaXQtYmZkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJpYmVydHkgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLWxpYmJmZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS13ZXJyb3IiCi0KLSMgZ2NjOS4wIGVuZCB1cCBtaXMtY29tcGlsaW5nIGxpYmJmZC5zbyB3aXRoIE8yIHdoaWNoIHRoZW4gY3Jhc2hlcyBvbiB0YXJnZXQKLSMgU28gcmVtb3ZlIC1PMiBhbmQgdXNlIC1PcyBhcyB3b3JrYXJvdW5kCi1TRUxFQ1RFRF9PUFRJTUlaQVRJT05fcmVtb3ZlX21pcHNhcmNoID0gIi1PMiIKLVNFTEVDVEVEX09QVElNSVpBVElPTl9hcHBlbmRfbWlwc2FyY2ggPSAiIC1PcyIKLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0KLQkjIEluc3RhbGwgdGhlIGxpYmliZXJ0eSBoZWFkZXIKLQlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9Ci0JaW5zdGFsbCAtbSA2NDQgJHtTfS9pbmNsdWRlL2Fuc2lkZWNsLmggJHtEfSR7aW5jbHVkZWRpcn0KLQlpbnN0YWxsIC1tIDY0NCAke1N9L2luY2x1ZGUvbGliaWJlcnR5LmggJHtEfSR7aW5jbHVkZWRpcn0KLQotCSMgV2Ugb25seSB3YW50IGxpYmliZXJ0eSwgbGliYmZkIGFuZCBsaWJvcGNvZGVzCi0Jcm0gLXJmICR7RH0ke2JpbmRpcn0KLQlybSAtcmYgJHtEfSR7cHJlZml4fS8ke1RBUkdFVF9TWVN9Ci0Jcm0gLXJmICR7RH0ke3ByZWZpeH0vbGliL2xkc2NyaXB0cwotCXJtIC1yZiAke0R9JHtwcmVmaXh9L3NoYXJlL2luZm8KLQlybSAtcmYgJHtEfSR7cHJlZml4fS9zaGFyZS9sb2NhbGUKLQlybSAtcmYgJHtEfSR7cHJlZml4fS9zaGFyZS9tYW4KLQlybWRpciAke0R9JHtwcmVmaXh9L3NoYXJlIHx8IDoKLQlybWRpciAke0R9LyR7bGliZGlyfS9nY2MtbGliIHx8IDoKLQlybWRpciAke0R9LyR7bGliZGlyfTY0L2djYy1saWIgfHwgOgotCXJtZGlyICR7RH0vJHtsaWJkaXJ9IHx8IDoKLQlybWRpciAke0R9LyR7bGliZGlyfTY0IHx8IDoKLX0KLQotIyBTcGxpdCBvdXQgbGliYmZkLSouc28gc28gaW5jbHVkaW5nIHBlcmYgZG9lc24ndCBpbmNsdWRlIGV4dHJhIHN0dWZmCi1QQUNLQUdFX0JFRk9SRV9QTiArPSAibGliYmZkIgotRklMRVNfbGliYmZkID0gIiR7bGliZGlyfS9saWJiZmQtKi5zbyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjM0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4zNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTY0NWUxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4zNC5iYgpAQCAtMCwwICsxLDY1IEBACityZXF1aXJlIGJpbnV0aWxzLmluYworcmVxdWlyZSBiaW51dGlscy0ke1BWfS5pbmMKKworREVQRU5EUyArPSAiZmxleCBiaXNvbiB6bGliIgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1zeXNyb290PS8gXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliYmZkIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLWxpYmliZXJ0eSBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtc2hhcmVkIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAorICAgICAgICAgICAgICAgICIKKworRVhUUkFfT0VNQUtFX2FwcGVuZF9saWJjLW11c2wgPSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0MV9saWJjPXllcyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHQyX2xpYmM9eWVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLWVuYWJsZS10YXJnZXRzPWFsbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLTY0LWJpdC1iZmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLWxpYmliZXJ0eSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliYmZkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdkYiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1nZGJzZXJ2ZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliZGVjbnVtYmVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJlYWRsaW5lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXNpbSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS13ZXJyb3IiCisKKyMgZ2NjOS4wIGVuZCB1cCBtaXMtY29tcGlsaW5nIGxpYmJmZC5zbyB3aXRoIE8yIHdoaWNoIHRoZW4gY3Jhc2hlcyBvbiB0YXJnZXQKKyMgU28gcmVtb3ZlIC1PMiBhbmQgdXNlIC1PcyBhcyB3b3JrYXJvdW5kCitTRUxFQ1RFRF9PUFRJTUlaQVRJT05fcmVtb3ZlX21pcHNhcmNoID0gIi1PMiIKK1NFTEVDVEVEX09QVElNSVpBVElPTl9hcHBlbmRfbWlwc2FyY2ggPSAiIC1PcyIKKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisKKwkjIEluc3RhbGwgdGhlIGxpYmliZXJ0eSBoZWFkZXIKKwlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9CisJaW5zdGFsbCAtbSA2NDQgJHtTfS9pbmNsdWRlL2Fuc2lkZWNsLmggJHtEfSR7aW5jbHVkZWRpcn0KKwlpbnN0YWxsIC1tIDY0NCAke1N9L2luY2x1ZGUvbGliaWJlcnR5LmggJHtEfSR7aW5jbHVkZWRpcn0KKworCSMgV2Ugb25seSB3YW50IGxpYmliZXJ0eSwgbGliYmZkIGFuZCBsaWJvcGNvZGVzCisJcm0gLXJmICR7RH0ke2JpbmRpcn0KKwlybSAtcmYgJHtEfSR7cHJlZml4fS8ke1RBUkdFVF9TWVN9CisJcm0gLXJmICR7RH0ke3ByZWZpeH0vbGliL2xkc2NyaXB0cworCXJtIC1yZiAke0R9JHtwcmVmaXh9L3NoYXJlL2luZm8KKwlybSAtcmYgJHtEfSR7cHJlZml4fS9zaGFyZS9sb2NhbGUKKwlybSAtcmYgJHtEfSR7cHJlZml4fS9zaGFyZS9tYW4KKwlybWRpciAke0R9JHtwcmVmaXh9L3NoYXJlIHx8IDoKKwlybWRpciAke0R9LyR7bGliZGlyfS9nY2MtbGliIHx8IDoKKwlybWRpciAke0R9LyR7bGliZGlyfTY0L2djYy1saWIgfHwgOgorCXJtZGlyICR7RH0vJHtsaWJkaXJ9IHx8IDoKKwlybWRpciAke0R9LyR7bGliZGlyfTY0IHx8IDoKK30KKworIyBTcGxpdCBvdXQgbGliYmZkLSouc28gc28gaW5jbHVkaW5nIHBlcmYgZG9lc24ndCBpbmNsdWRlIGV4dHJhIHN0dWZmCitQQUNLQUdFX0JFRk9SRV9QTiArPSAibGliYmZkIgorRklMRVNfbGliYmZkID0gIiR7bGliZGlyfS9saWJiZmQtKi5zby4qICR7bGliZGlyfS9saWJiZmQtKi5zbyIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gICIgZmlsZTovLzAwMDMtYmludXRpbHMtbmF0aXZlc2RrLVNlYXJjaC1mb3ItYWx0ZXJuYXRpdmUtbGQuc28uY29uZi5wYXRjaCAiCisKK1VTRV9BTFRFUk5BVElWRVNfRk9SX2NsYXNzLW5hdGl2ZXNkayA9ICIiCitGSUxFU18ke1BOfV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAke2JpbmRpcn0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb25fMy40LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbl8zLjQuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDZmMGY5MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbl8zLjQuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLVNVTU1BUlkgPSAiR05VIFByb2plY3QgcGFyc2VyIGdlbmVyYXRvciAoeWFjYyByZXBsYWNlbWVudCkiCi1ERVNDUklQVElPTiA9ICJCaXNvbiBpcyBhIGdlbmVyYWwtcHVycG9zZSBwYXJzZXIgZ2VuZXJhdG9yIHRoYXQgY29udmVydHMgYW4gYW5ub3RhdGVkIGNvbnRleHQtZnJlZSBncmFtbWFyIGludG8gXAotYW4gTEFMUigxKSBvciBHTFIgcGFyc2VyIGZvciB0aGF0IGdyYW1tYXIuICBCaXNvbiBpcyB1cHdhcmQgY29tcGF0aWJsZSB3aXRoIFlhY2M6IGFsbCBwcm9wZXJseS13cml0dGVuIFlhY2MgXAotZ3JhbW1hcnMgb3VnaHQgdG8gd29yayB3aXRoIEJpc29uIHdpdGggbm8gY2hhbmdlLiBBbnlvbmUgZmFtaWxpYXIgd2l0aCBZYWNjIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBCaXNvbiB3aXRoIFwKLWxpdHRsZSB0cm91YmxlLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9iaXNvbi8iCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi1TRUNUSU9OID0gImRldmVsIgotREVQRU5EUyA9ICJiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9iaXNvbi9iaXNvbi0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWRkLXdpdGgtYmlzb25sb2NhbGVkaXIucGF0Y2ggXAotIgotCi0jIE5vIHBvaW50IGluIGhhcmRjb2RpbmcgcGF0aCB0byBtNCwganVzdCB1c2UgUEFUSAotRVhUUkFfT0VDT05GICs9ICJNND1tNCIKLQotU1JDX1VSSVttZDVzdW1dID0gImQxY2ViOWRmZGUyZDAzYjI0YTRjMTEzN2Y3ZjFiNTcyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI3ZDA1NTM0Njk5NzM1ZGM2OWU4NmFkZDViODA4ZDZjYjM1OTAwYWQzZmQ2M2ZhODJlM2ViNjQ0MzM2YWJmYTAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbwotCi0jIFRoZSBhdXRvbWF0aWMgbTQgcGF0aCBkZXRlY3Rpb24gZ2V0cyBjb25mdXNlZCwgc28gZm9yY2UgdGhlIHJpZ2h0IHZhbHVlCi1hY3BhdGhzID0gIi1JICR7U30vbTQiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQlmb3IgaSBpbiBtZmNhbGMgY2FsYysrIHJwY2FsYzsgZG8gbWtkaXIgLXAgJHtCfS9leGFtcGxlcy8kaTsgZG9uZQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vYmlzb24gXAotCQlCSVNPTl9QS0dEQVRBRElSPSR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYmlzb24KLX0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9iaXNvbiBcCi0JCUJJU09OX1BLR0RBVEFESVI9JHtkYXRhZGlyfS9iaXNvbgotfQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb25fMy41LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbl8zLjUuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWMzNGY3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb25fMy41LjQuYmIKQEAgLTAsMCArMSw0NCBAQAorU1VNTUFSWSA9ICJHTlUgUHJvamVjdCBwYXJzZXIgZ2VuZXJhdG9yICh5YWNjIHJlcGxhY2VtZW50KSIKK0RFU0NSSVBUSU9OID0gIkJpc29uIGlzIGEgZ2VuZXJhbC1wdXJwb3NlIHBhcnNlciBnZW5lcmF0b3IgdGhhdCBjb252ZXJ0cyBhbiBhbm5vdGF0ZWQgY29udGV4dC1mcmVlIGdyYW1tYXIgaW50byBcCithbiBMQUxSKDEpIG9yIEdMUiBwYXJzZXIgZm9yIHRoYXQgZ3JhbW1hci4gIEJpc29uIGlzIHVwd2FyZCBjb21wYXRpYmxlIHdpdGggWWFjYzogYWxsIHByb3Blcmx5LXdyaXR0ZW4gWWFjYyBcCitncmFtbWFycyBvdWdodCB0byB3b3JrIHdpdGggQmlzb24gd2l0aCBubyBjaGFuZ2UuIEFueW9uZSBmYW1pbGlhciB3aXRoIFlhY2Mgc2hvdWxkIGJlIGFibGUgdG8gdXNlIEJpc29uIHdpdGggXAorbGl0dGxlIHRyb3VibGUuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2Jpc29uLyIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKK1NFQ1RJT04gPSAiZGV2ZWwiCitERVBFTkRTID0gImJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2Jpc29uL2Jpc29uLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hZGQtd2l0aC1iaXNvbmxvY2FsZWRpci5wYXRjaCBcCisiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGMxN2U5OTg4MTk3OGZhMzJjMDU5MzNjNTI2MjQ1N2ZhNWIyYjYxMTY2ODQ1NGY4ZGMyYTY5NWNkNmIzNzIwYyIKKworIyBObyBwb2ludCBpbiBoYXJkY29kaW5nIHBhdGggdG8gbTQsIGp1c3QgdXNlIFBBVEgKK0VYVFJBX09FQ09ORiArPSAiTTQ9bTQiCisKKyMgUmVzZXQgYW55IGxvYWRhdmcgc2V0IHZpYSBlbnZpcm9ubWVudCwgaXQgYnJlYWtzIHBhcmFsbGVsIGJ1aWxkCisjIHwgLi4vYmlzb24tMy41LjIvbGliL3VuaXdpZHRoL3dpZHRoLmM6MjE6MTA6IGZhdGFsIGVycm9yOiB1bml3aWR0aC5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CisjIHwgICNpbmNsdWRlICJ1bml3aWR0aC5oIgorIyB8ICAgICAgICAgICBefn5+fn5+fn5+fn4KK0VYVFJBX09FTUFLRV9hcHBlbmQgPSAiIC1sIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8KKworIyBUaGUgYXV0b21hdGljIG00IHBhdGggZGV0ZWN0aW9uIGdldHMgY29uZnVzZWQsIHNvIGZvcmNlIHRoZSByaWdodCB2YWx1ZQorYWNwYXRocyA9ICItSSAke1N9L200IgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJZm9yIGkgaW4gbWZjYWxjIGNhbGMrKyBycGNhbGM7IGRvIG1rZGlyIC1wICR7Qn0vZXhhbXBsZXMvJGk7IGRvbmUKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2Jpc29uIFwKKwkJQklTT05fUEtHREFUQURJUj0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2Jpc29uCit9Citkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vYmlzb24gXAorCQlCSVNPTl9QS0dEQVRBRElSPSR7ZGF0YWRpcn0vYmlzb24KK30KK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzXzUuMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNS4zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0NGMwYmMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNS4zLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1TVU1NQVJZID0gIkNoZWNrc3VtbWluZyBDb3B5IG9uIFdyaXRlIEZpbGVzeXN0ZW0gdXRpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAiQnRyZnMgaXMgYSBuZXcgY29weSBvbiB3cml0ZSBmaWxlc3lzdGVtIGZvciBMaW51eCBhaW1lZCBhdCBcCi1pbXBsZW1lbnRpbmcgYWR2YW5jZWQgZmVhdHVyZXMgd2hpbGUgZm9jdXNpbmcgb24gZmF1bHQgdG9sZXJhbmNlLCByZXBhaXIgYW5kIFwKLWVhc3kgYWRtaW5pc3RyYXRpb24uIFwKLVRoaXMgcGFja2FnZSBjb250YWlucyB1dGlsaXRpZXMgKG1rZnMsIGZzY2ssIGJ0cmZzY3RsKSB1c2VkIHRvIHdvcmsgd2l0aCBcCi1idHJmcyBhbmQgYW4gdXRpbGl0eSAoYnRyZnMtY29udmVydCkgdG8gbWFrZSBhIGJ0cmZzIGZpbGVzeXN0ZW0gZnJvbSBhbiBleHQzLiIKLQotSE9NRVBBR0UgPSAiaHR0cHM6Ly9idHJmcy53aWtpLmtlcm5lbC5vcmciCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mY2IwMmRjNTUyYTA0MWRlZTI3ZTRiODVjNzM5NjA2NyIKLVNFQ1RJT04gPSAiYmFzZSIKLURFUEVORFMgPSAidXRpbC1saW51eCBhdHRyIGUyZnNwcm9ncyBsem8gYWNsIgotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiB1ZGV2IgotUkRFUEVORFNfJHtQTn0gPSAibGliZ2NjIgotCi1TUkNSRVYgPSAiZjgyZTU2OWIzM2MzYzFjZmQ0ZjhmNDA1MDg1ZmY4ZDQzOWEwYTkxNSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2tkYXZlL2J0cmZzLXByb2dzLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1hLXBvc3NpYmlsaXR5LXRvLXNwZWNpZnktd2hlcmUtcHl0aG9uLW1vZHVsZXMtYXIucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJweXRob24iCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1kb2N1bWVudGF0aW9uLCAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiwgYXNjaWlkb2MtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLWVuYWJsZS1weXRob24sLS1kaXNhYmxlLXB5dGhvbixweXRob24zLXNldHVwdG9vbHMtbmF0aXZlIgotUEFDS0FHRUNPTkZJR1t6c3RkXSA9ICItLWVuYWJsZS16c3RkLC0tZGlzYWJsZS16c3RkLHpzdGQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgbWFucGFnZXMKLWluaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ2Rpc3R1dGlsczMtYmFzZScsICcnLCBkKX0KLQotQ0xFQU5CUk9LRU4gPSAiMSIKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1iYWNrdHJhY2UgIgotRVhUUkFfUFlUSE9OX0NGTEFHUyA9ICIke0RFQlVHX1BSRUZJWF9NQVB9IgotRVhUUkFfUFlUSE9OX0NGTEFHU19jbGFzcy1uYXRpdmUgPSAiIgotRVhUUkFfUFlUSE9OX0xERkxBR1MgPSAiJHtMREZMQUdTfSIKLUVYVFJBX09FTUFLRSA9ICJWPTEgJ0VYVFJBX1BZVEhPTl9DRkxBR1M9JHtFWFRSQV9QWVRIT05fQ0ZMQUdTfScgJ0VYVFJBX1BZVEhPTl9MREZMQUdTPSR7RVhUUkFfUFlUSE9OX0xERkxBR1N9JyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JIyBVcHN0cmVhbSBkb2Vzbid0IHNoaXAgdGhpcyBhbmQgYXV0b3JlY29uZiB3b24ndCBpbnN0YWxsIGl0IGFzIGF1dG9tYWtlIGlzbid0IHVzZWQuCi0JbWtkaXIgLXAgJHtTfS9jb25maWcKLQljcCAtZiAkKGF1dG9tYWtlIC0tcHJpbnQtbGliZGlyKS9pbnN0YWxsLXNoICR7U30vY29uZmlnLwotfQotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgZCl9IiBdOyB0aGVuCi0gICAgICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgJ1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBpbnN0YWxsX3B5dGhvbgotICAgIGZpCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNS40LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc181LjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGM5NzFjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNS40LjEuYmIKQEAgLTAsMCArMSw1MiBAQAorU1VNTUFSWSA9ICJDaGVja3N1bW1pbmcgQ29weSBvbiBXcml0ZSBGaWxlc3lzdGVtIHV0aWxpdGllcyIKK0RFU0NSSVBUSU9OID0gIkJ0cmZzIGlzIGEgbmV3IGNvcHkgb24gd3JpdGUgZmlsZXN5c3RlbSBmb3IgTGludXggYWltZWQgYXQgXAoraW1wbGVtZW50aW5nIGFkdmFuY2VkIGZlYXR1cmVzIHdoaWxlIGZvY3VzaW5nIG9uIGZhdWx0IHRvbGVyYW5jZSwgcmVwYWlyIGFuZCBcCitlYXN5IGFkbWluaXN0cmF0aW9uLiBcCitUaGlzIHBhY2thZ2UgY29udGFpbnMgdXRpbGl0aWVzIChta2ZzLCBmc2NrLCBidHJmc2N0bCkgdXNlZCB0byB3b3JrIHdpdGggXAorYnRyZnMgYW5kIGFuIHV0aWxpdHkgKGJ0cmZzLWNvbnZlcnQpIHRvIG1ha2UgYSBidHJmcyBmaWxlc3lzdGVtIGZyb20gYW4gZXh0My4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vYnRyZnMud2lraS5rZXJuZWwub3JnIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmNiMDJkYzU1MmEwNDFkZWUyN2U0Yjg1YzczOTYwNjciCitTRUNUSU9OID0gImJhc2UiCitERVBFTkRTID0gInV0aWwtbGludXggYXR0ciBlMmZzcHJvZ3MgbHpvIGFjbCIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgdWRldiIKK1JERVBFTkRTXyR7UE59ID0gImxpYmdjYyIKKworU1JDUkVWID0gIjNmYzIzMjZkMzQ3NGE1ZTRkZjI0NDlmNWUzMDQzZjcyOTg1MDEzMzQiCitTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9rZGF2ZS9idHJmcy1wcm9ncy5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtYS1wb3NzaWJpbGl0eS10by1zcGVjaWZ5LXdoZXJlLXB5dGhvbi1tb2R1bGVzLWFyLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uIgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtZG9jdW1lbnRhdGlvbiwgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24sIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUiCitQQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS1lbmFibGUtcHl0aG9uLC0tZGlzYWJsZS1weXRob24scHl0aG9uMy1zZXR1cHRvb2xzLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbenN0ZF0gPSAiLS1lbmFibGUtenN0ZCwtLWRpc2FibGUtenN0ZCx6c3RkIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIG1hbnBhZ2VzCitpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdkaXN0dXRpbHMzLWJhc2UnLCAnJywgZCl9CisKK0NMRUFOQlJPS0VOID0gIjEiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtYmFja3RyYWNlICIKK0VYVFJBX1BZVEhPTl9DRkxBR1MgPSAiJHtERUJVR19QUkVGSVhfTUFQfSIKK0VYVFJBX1BZVEhPTl9DRkxBR1NfY2xhc3MtbmF0aXZlID0gIiIKK0VYVFJBX1BZVEhPTl9MREZMQUdTID0gIiR7TERGTEFHU30iCitFWFRSQV9PRU1BS0UgPSAiVj0xICdFWFRSQV9QWVRIT05fQ0ZMQUdTPSR7RVhUUkFfUFlUSE9OX0NGTEFHU30nICdFWFRSQV9QWVRIT05fTERGTEFHUz0ke0VYVFJBX1BZVEhPTl9MREZMQUdTfSciCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCSMgVXBzdHJlYW0gZG9lc24ndCBzaGlwIHRoaXMgYW5kIGF1dG9yZWNvbmYgd29uJ3QgaW5zdGFsbCBpdCBhcyBhdXRvbWFrZSBpc24ndCB1c2VkLgorCW1rZGlyIC1wICR7U30vY29uZmlnCisJY3AgLWYgJChhdXRvbWFrZSAtLXByaW50LWxpYmRpcikvaW5zdGFsbC1zaCAke1N9L2NvbmZpZy8KK30KKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsIGQpfSIgXTsgdGhlbgorICAgICAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nICdQWVRIT05fU0lURVBBQ0tBR0VTX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfScgaW5zdGFsbF9weXRob24KKyAgICBmaQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy43LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuNy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmE2ODJlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy43LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXJlcXVpcmUgY2NhY2hlLmluYwotCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuYWRvYzttZDU9MDA5NGM1OTAzOWNlYzY2YjhhNGM5MDUyMDQzMzM1MTQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3YmU2MmVhNmUxOTA5NDFhOGMxMmEzZDUzOTRmZDkyNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzNTU5NTVhNjE1NjJjNTNjNGVjNDY2OWUxYzkyNzA4YjAwMDhmNTBkMjE0YjI3ZjA3YTg3Y2Y0YTFmYTZiMDFlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2NjYWNoZV8zLjcuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy43LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U3MzYyYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy43LjcuYmIKQEAgLTAsMCArMSw3IEBACityZXF1aXJlIGNjYWNoZS5pbmMKKworTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLmFkb2M7bWQ1PTIyZDUxNGRiYzAxZmRmOWE5Nzg0MzM0YjZiNTk0MTdhIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTAwZDdiZDllYmM2ZWUzMTA1ZDdmYzMzMmMxZWYzOTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWI2MWY3ZmFiMmVjMTUzMDVlZTgzODJiMDMzNjU1MDMyMzJkZmIwNGI1NzQxNGU3YjA0MzM3NjhkNTMwZmE4YSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NkcnRvb2xzL2NkcnRvb2xzLW5hdGl2ZV8zLjAxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2RydG9vbHMvY2RydG9vbHMtbmF0aXZlXzMuMDEuYmIKaW5kZXggMWM2MDJlNy4uYjU2OGJiMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2RydG9vbHMvY2RydG9vbHMtbmF0aXZlXzMuMDEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2RydG9vbHMvY2RydG9vbHMtbmF0aXZlXzMuMDEuYmIKQEAgLTgsNyArOCw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMmY2ODE3MGJlNDI0YzJjZDY0ODA0MzM3NzI2YjMxMiIKIAogU1JDX1VSSSA9ICIgXAotCSR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2NkcnRvb2xzL2NkcnRvb2xzLSR7UkVBTFBWfS50YXIuYnoyIFwKKwkke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9jZHJ0b29scy9jZHJ0b29scy0ke1BWfS50YXIuYnoyIFwKIAlmaWxlOi8vMDAwMS1Eb24tdC1zZXQtdWlkLWdpZC1kdXJpbmctaW5zdGFsbC5wYXRjaCBcCiAJIgogVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCkBAIC0yMywxMSArMjMsNiBAQAogCiBpbmhlcml0IG5hdGl2ZQogCi1QViA9ICIzLjAxYTMxK3JlYWxseTMuMDEiCi1SRUFMUFYgPSAiMy4wMSIKLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfS0ke1JFQUxQVn0iCi0KIGRvX2luc3RhbGwoKSB7CiAJbWFrZSBpbnN0YWxsIEdNQUtFX05PV0FSTj10cnVlIElOU19CQVNFPSR7cHJlZml4fSBERVNURElSPSR7RH0KIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLW5hdGl2ZV8zLjE1LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy4xNi41LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy4xNS4zLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy4xNi41LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS5pbmMKaW5kZXggZDhhOWUyZC4uMDk5NDliNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLmluYwpAQCAtMjIsNyArMjIsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwNC1GYWlsLXNpbGVudGx5LWlmLXN5c3RlbS1RdC1pbnN0YWxsYXRpb24taXMtYnJva2VuLnBhdGNoIFwKICIKIAotU1JDX1VSSVttZDVzdW1dID0gImJmNjllODM3ZWVkYTNkZDRlOWY1MmNmZmNmNTQ2YTExIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEzOTU4MjQzYTAxMzY1YjA1NjUyZmEwMWIyMWQ0MGZhODM0ZjcwYTllMzBlZmE2OWMwMjYwNGU2NGY1OGI4ZjUiCitTUkNfVVJJW21kNXN1bV0gPSAiZDg2Y2NhZjNkMjQ2MmI2YjU5NDc5MTlhYmU1YjlmMTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWY3NjBiNTBiOGVjYzljMGMzNzEzNWZhZTVmYmYwMGEyZmVmNjE3MDU5YWE5ZDYxYzFiYjkxNjUzZTVhOGJmYyIKIAogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiY21ha2UtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUNNYWtlRGV0ZXJtaW5lU3lzdGVtLXVzZS1vZS1lbnZpcm9ubWVudC12YXJzLXRvLWxvYWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUNNYWtlRGV0ZXJtaW5lU3lzdGVtLXVzZS1vZS1lbnZpcm9ubWVudC12YXJzLXRvLWxvYWQucGF0Y2gKaW5kZXggMzcyMDgzMy4uZTJhNThkMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMS1DTWFrZURldGVybWluZVN5c3RlbS11c2Utb2UtZW52aXJvbm1lbnQtdmFycy10by1sb2FkLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtQ01ha2VEZXRlcm1pbmVTeXN0ZW0tdXNlLW9lLWVudmlyb25tZW50LXZhcnMtdG8tbG9hZC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMWU2N2MzZmU1MmM2YzUxYzAwY2YxZWJiMGJmYzMwYzdhNWVmOWZkYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYWIyNzJkNzAzY2U3N2YzMjNhYTEyODU1MjY1NTljOWVmYmY4NTgzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENvZHkgUCBTY2hhZmVyIDxkZXZAY29keXBzLmNvbT4KIERhdGU6IFRodSwgMjcgQXByIDIwMTcgMTE6MzU6MDUgLTA0MDAKIFN1YmplY3Q6IFtQQVRDSF0gQ01ha2VEZXRlcm1pbmVTeXN0ZW06IHVzZSBvZSBlbnZpcm9ubWVudCB2YXJzIHRvIGxvYWQgZGVmYXVsdApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMi1jbWFrZS1QcmV2ZW50LXRoZS1kZXRlY3Rpb24tb2YtUXQ1LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMi1jbWFrZS1QcmV2ZW50LXRoZS1kZXRlY3Rpb24tb2YtUXQ1LnBhdGNoCmluZGV4IGRiMjI5ZTYuLjYxYzhmMjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDItY21ha2UtUHJldmVudC10aGUtZGV0ZWN0aW9uLW9mLVF0NS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAyLWNtYWtlLVByZXZlbnQtdGhlLWRldGVjdGlvbi1vZi1RdDUucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDVjYjZjODY2OTZmODQyMjc0MDQzZTdkNDA2Zjg0YjNlYWQxYzM2ZTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDVhODZjN2ZhOTg3YmQ0MDdmMjI4MTc2ZGYyYWJlZmZkMDE1YmU5ZWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgogRGF0ZTogV2VkLCAxNyBKYW4gMjAxOCAxMDowMjoxNCAtMDIwMAogU3ViamVjdDogW1BBVENIXSBjbWFrZTogUHJldmVudCB0aGUgZGV0ZWN0aW9uIG9mIFF0NQpAQCAtMzgsMTAgKzM4LDEwIEBACiAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7UXQ1V2lkZ2V0c19JTkNMVURFX0RJUlN9KQogICAgYWRkX2RlZmluaXRpb25zKCR7UXQ1V2lkZ2V0c19ERUZJTklUT05TfSkKIGRpZmYgLS1naXQgYS9UZXN0cy9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBlNzNiMjc3Li45MWI4YjY3IDEwMDY0NAoraW5kZXggNTdmYTdmYy4uZDUwYzE0NiAxMDA2NDQKIC0tLSBhL1Rlc3RzL0NNYWtlTGlzdHMudHh0CiArKysgYi9UZXN0cy9DTWFrZUxpc3RzLnR4dAotQEAgLTEzNDgsNyArMTM0OCw3IEBAICR7Q01ha2VfU09VUkNFX0RJUn0vVXRpbGl0aWVzL1JlbGVhc2UvcHVzaC5iYXNoIC0tZGlyIGRldiAtLSAnJHtDTWFrZV9CVUlMRF9OSUdICitAQCAtMTMyOSw3ICsxMzI5LDcgQEAgJHtDTWFrZV9TT1VSQ0VfRElSfS9VdGlsaXRpZXMvUmVsZWFzZS9wdXNoLmJhc2ggLS1kaXIgZGV2IC0tICcke0NNYWtlX0JVSUxEX05JR0gKICAgICAgc2V0KENNYWtlX1RFU1RfUXQ1IDEpCiAgICBlbmRpZigpCiAgICBpZihDTWFrZV9URVNUX1F0NSkKQEAgLTk2LDExICs5NiwxMSBAQAogIHNldChDTUFLRV9DWFhfU1RBTkRBUkQgMTEpCiAgc2V0KENNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAke0NNQUtFX0JJTkFSWV9ESVJ9L291dHB1dC9iaW4pCiBkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dAotaW5kZXggNjlmODE2Mi4uZjM4OTUyMyAxMDA2NDQKK2luZGV4IDZiMmYxMTcuLjEwMDIwMDUgMTAwNjQ0CiAtLS0gYS9UZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dAogKysrIGIvVGVzdHMvUnVuQ01ha2UvQ01ha2VMaXN0cy50eHQKLUBAIC0zMzQsNyArMzM0LDcgQEAgYWRkX1J1bkNNYWtlX3Rlc3QoY29uZmlndXJlX2ZpbGUpCi0gYWRkX1J1bkNNYWtlX3Rlc3QoQ1Rlc3RUaW1lb3V0QWZ0ZXJNYXRjaCkKK0BAIC0zNzYsNyArMzc2LDcgQEAgZWxzZSgpCisgZW5kaWYoKQogIAogIGZpbmRfcGFja2FnZShRdDQgUVVJRVQpCiAtZmluZF9wYWNrYWdlKFF0NUNvcmUgUVVJRVQpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAzLWNtYWtlLXN1cHBvcnQtT3BlbkVtYmVkZGVkLVF0NC10b29sLWJpbmFyeS1uYW1lcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDMtY21ha2Utc3VwcG9ydC1PcGVuRW1iZWRkZWQtUXQ0LXRvb2wtYmluYXJ5LW5hbWVzLnBhdGNoCmluZGV4IGQ3ZDg3YTUuLmUzMGRjNTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDMtY21ha2Utc3VwcG9ydC1PcGVuRW1iZWRkZWQtUXQ0LXRvb2wtYmluYXJ5LW5hbWVzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDMtY21ha2Utc3VwcG9ydC1PcGVuRW1iZWRkZWQtUXQ0LXRvb2wtYmluYXJ5LW5hbWVzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBiMDAzODU3ZDM0ODExMDVjNDczZTJlNzViYWQ0ZTllMmM2ZTcwMDA0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlNTI4ODYxMDIzYmY2OWRmMGFkMDYxYTU5ZmQ0ZTUyN2M5ZGRlMWNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KIERhdGU6IFRodSwgMTIgTWF5IDIwMTEgMTU6MzY6MDMgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSF0gY21ha2U6IHN1cHBvcnQgT3BlbkVtYmVkZGVkIFF0NCB0b29sIGJpbmFyeSBuYW1lcwpAQCAtMjUsNyArMjUsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UgYi9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKLWluZGV4IGExNDViNDYuLjdlMTgyNDMgMTAwNjQ0CitpbmRleCAzOTkzOTY4Li5iMmE4NTg1IDEwMDY0NAogLS0tIGEvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlCiArKysgYi9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKIEBAIC01MTgsNyArNTE4LDcgQEAgZW5kZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwNC1GYWlsLXNpbGVudGx5LWlmLXN5c3RlbS1RdC1pbnN0YWxsYXRpb24taXMtYnJva2VuLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwNC1GYWlsLXNpbGVudGx5LWlmLXN5c3RlbS1RdC1pbnN0YWxsYXRpb24taXMtYnJva2VuLnBhdGNoCmluZGV4IDY3NmUyODUuLjQ4ZjQzYmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDQtRmFpbC1zaWxlbnRseS1pZi1zeXN0ZW0tUXQtaW5zdGFsbGF0aW9uLWlzLWJyb2tlbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDA0LUZhaWwtc2lsZW50bHktaWYtc3lzdGVtLVF0LWluc3RhbGxhdGlvbi1pcy1icm9rZW4ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGQ0YTc4ZTg3MzllODQ1YzI5NjM2NjZmN2VmNmE2YzdhODk4Mjc5ODggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGIwYWVjYTM1MTg3OTgzZTIyZWMyNTZhNDM5Y2ZmNDcwMmRiZGUzMzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgogRGF0ZTogVGh1LCA1IEp1bCAyMDE4IDEwOjI2OjQ4IC0wMzAwCiBTdWJqZWN0OiBbUEFUQ0hdIEZhaWwgc2lsZW50bHkgaWYgc3lzdGVtIFF0IGluc3RhbGxhdGlvbiBpcyBicm9rZW4KQEAgLTI4LDcgKzI4LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UgYi9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKLWluZGV4IDdlMTgyNDMuLjQ5N2Q1YzMgMTAwNjQ0CitpbmRleCBiMmE4NTg1Li43N2M4OWFhIDEwMDY0NAogLS0tIGEvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlCiArKysgYi9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKIEBAIC05ODgsMjUgKzk4OCwyNiBAQCBpZiAoUVRfUU1BS0VfRVhFQ1VUQUJMRSBBTkQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlXzMuMTUuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlXzMuMTYuNS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy4xNS4zLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZV8zLjE2LjUuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NyZWF0ZXJlcG8tYy9jcmVhdGVyZXBvLWNfMC4xNS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3JlYXRlcmVwby1jL2NyZWF0ZXJlcG8tY18wLjE1LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5N2RiNzMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3JlYXRlcmVwby1jL2NyZWF0ZXJlcG8tY18wLjE1LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJDIGltcGxlbWVudGF0aW9uIG9mIGNyZWF0ZXJlcG8uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2NyZWF0ZXJlcG9fYy93aWtpIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9jcmVhdGVyZXBvX2MgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3Qtc2V0LVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXB5dGhvbi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDUkVWID0gImJjNjdmMTllZDA5NTkzZTM4ODZlYmVlZTIzOTFlOWQ1MWNjMzQzOWYiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLURFUEVORFMgPSAiZXhwYXQgY3VybCBnbGliLTIuMCBsaWJ4bWwyIG9wZW5zc2wgYnppcDIgemxpYiBmaWxlIHNxbGl0ZTMgeHogcnBtIgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKLQotaW5oZXJpdCBjbWFrZSBwa2djb25maWcgYmFzaC1jb21wbGV0aW9uIGRpc3R1dGlsczMtYmFzZQotCi1FWFRSQV9PRUNNQUtFID0gIiAtRFBZVEhPTl9JTlNUQUxMX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAtRFBZVEhPTl9ERVNJUkVEPTMgLURXSVRIX1pDSFVOSz1PRkYgLURFTkFCTEVfRFJQTT1PRkYgLURXSVRIX0xJQk1PRFVMRU1EPU9GRiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi0jIERpcmVjdCBjcmVhdGVyZXBvIHRvIHJlYWQgcnBtIGNvbmZpZ3VyYXRpb24gZnJvbSBvdXIgc3lzcm9vdCwgbm90IHRoZSBvbmUgaXQgd2FzIGNvbXBpbGVkIGluCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2NyZWF0ZXJlcG9fYyBcCi0gICAgICAgICAgICAgICAgUlBNX0NPTkZJR0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnBtCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLSAgICAgICAgY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vY3JlYXRlcmVwb19jIFwKLSAgICAgICAgICAgICAgICBSUE1fQ09ORklHRElSPSR7U0RLUEFUSE5BVElWRX0ke2xpYmRpcl9uYXRpdmVzZGt9L3JwbQotICAgICAgICBybSAtcmYgJHtEfS9ldGMKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NyZWF0ZXJlcG8tYy9jcmVhdGVyZXBvLWNfMC4xNS43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3JlYXRlcmVwby1jL2NyZWF0ZXJlcG8tY18wLjE1LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZhNTNmZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NyZWF0ZXJlcG8tYy9jcmVhdGVyZXBvLWNfMC4xNS43LmJiCkBAIC0wLDAgKzEsMzQgQEAKK0RFU0NSSVBUSU9OID0gIkMgaW1wbGVtZW50YXRpb24gb2YgY3JlYXRlcmVwby4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvY3JlYXRlcmVwb19jL3dpa2kiCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2NyZWF0ZXJlcG9fYyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNSRVYgPSAiNGFiNmI1NmI4YjcxODM5NjM4Njk4MmFmYmE0YWRlMjk3YzE0ZDkxYSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworREVQRU5EUyA9ICJleHBhdCBjdXJsIGdsaWItMi4wIGxpYnhtbDIgb3BlbnNzbCBiemlwMiB6bGliIGZpbGUgc3FsaXRlMyB4eiBycG0iCitERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBiYXNoLWNvbXBsZXRpb24gZGlzdHV0aWxzMy1iYXNlCisKK0VYVFJBX09FQ01BS0UgPSAiIC1EUFlUSE9OX0lOU1RBTExfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IC1EUFlUSE9OX0RFU0lSRUQ9MyAtRFdJVEhfWkNIVU5LPU9GRiAtREVOQUJMRV9EUlBNPU9GRiAtRFdJVEhfTElCTU9EVUxFTUQ9T0ZGIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKKyMgRGlyZWN0IGNyZWF0ZXJlcG8gdG8gcmVhZCBycG0gY29uZmlndXJhdGlvbiBmcm9tIG91ciBzeXNyb290LCBub3QgdGhlIG9uZSBpdCB3YXMgY29tcGlsZWQgaW4KK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICAgICAgY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vY3JlYXRlcmVwb19jIFwKKyAgICAgICAgICAgICAgICBSUE1fQ09ORklHRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ycG0KK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9jcmVhdGVyZXBvX2MgXAorICAgICAgICAgICAgICAgIFJQTV9DT05GSUdESVI9JHtTREtQQVRITkFUSVZFfSR7bGliZGlyX25hdGl2ZXNka30vcnBtCisgICAgICAgIHJtIC1yZiAke0R9L2V0YworfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXQvMDAwMS1hY2xvY2FsLm00LWFkZC1taXNzaW5nLWhlYWRlci1kZWZpbmVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXQvMDAwMS1hY2xvY2FsLm00LWFkZC1taXNzaW5nLWhlYWRlci1kZWZpbmVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZDk0ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdC8wMDAxLWFjbG9jYWwubTQtYWRkLW1pc3NpbmctaGVhZGVyLWRlZmluZXMucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorRnJvbSAwMDRiZDgwZDI1MjNmNTM4NDY3YjVhZGEyNjIzZWIyMDdiNTVkYWQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIwIERlYyAyMDE5IDE1OjQ0OjI4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGFjbG9jYWwubTQ6IGFkZCBtaXNzaW5nIGhlYWRlciBkZWZpbmVzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBhY2xvY2FsLm00IHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2FjbG9jYWwubTQgYi9hY2xvY2FsLm00CitpbmRleCAzYjE5ZTgyLi5jMGM0YWNiIDEwMDY0NAorLS0tIGEvYWNsb2NhbC5tNAorKysrIGIvYWNsb2NhbC5tNAorQEAgLTE5MjcsMyArMTkyNyw4IEBAIG1ha2UgYW4gZXJyb3IKKyBmaQorIGZpICMgY2ZfY3ZfcG9zaXhfdmlzaWJsZQorIF0pCisrCisrQUNfREVGSU5FKFtIQVZFX1RDR0VUQVRUUl0sIFtdLCBbRGVzY3JpcHRpb25dKQorK0FDX0RFRklORShbSEFWRV9UQ1NFVEFUVFJdLCBbXSwgW0Rlc2NyaXB0aW9uXSkKKytBQ19ERUZJTkUoW0hBVkVfVEVSTUlPU19IXSwgW10sIFtEZXNjcmlwdGlvbl0pCisrCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdF8xLjYyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXRfMS42Mi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNkNzc3OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdF8xLjYyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotU1VNTUFSWSA9ICJUb29sIHRvIHByb2R1Y2UgYSBzdGF0aXN0aWNzIGJhc2VkIG9uIGEgZGlmZiIKLURFU0NSSVBUSU9OID0gImRpZmZzdGF0IHJlYWRzIHRoZSBvdXRwdXQgb2YgZGlmZiBhbmQgZGlzcGxheXMgYSBoaXN0b2dyYW0gb2YgXAotdGhlIGluc2VydGlvbnMsIGRlbGV0aW9ucywgYW5kIG1vZGlmaWNhdGlvbnMgcGVyLWZpbGUuIEl0IGlzIHVzZWZ1bCBmb3IgXAotcmV2aWV3aW5nIGxhcmdlLCBjb21wbGV4IHBhdGNoIGZpbGVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9kaWZmc3RhdC8iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9pbnN0YWxsLXNoO2VuZGxpbmU9NDI7bWQ1PWIzNTQ5NzI2YzEwMjJiZWUwOWMxNzRjNzJhMGNhNGE1IgotCi1TUkNfVVJJID0gImh0dHA6Ly9pbnZpc2libGUtbWlycm9yLm5ldC9hcmNoaXZlcy8ke0JQTn0vJHtCUH0udGd6IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9hdm9pZC1jaGVjay11c2VyLWJyZWFrLWNjLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjkxZTEwNmJiMzRjYjA5Nzc1MGRiN2RkYzBiYTFkOGZjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdmMDkxODM2NDRlZDc3YTE1NmIxNTM0NmJiYWQ0ZTg5YzkzNTQzZTE0MGFkZDlkYWIxODc0N2UzMDUyMjU5MWYiCi0KLVMgPSAiJHtXT1JLRElSfS9kaWZmc3RhdC0ke1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwdGVzdAotCi1FWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKLQotTERGTEFHUyArPSAiJHtUT09MQ0hBSU5fT1BUSU9OU30iCi0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JY3AgLXIgJHtTfS90ZXN0aW5nICR7RH0ke1BURVNUX1BBVEh9Ci19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdF8xLjYzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXRfMS42My5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTBhN2U3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXRfMS42My5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZID0gIlRvb2wgdG8gcHJvZHVjZSBhIHN0YXRpc3RpY3MgYmFzZWQgb24gYSBkaWZmIgorREVTQ1JJUFRJT04gPSAiZGlmZnN0YXQgcmVhZHMgdGhlIG91dHB1dCBvZiBkaWZmIGFuZCBkaXNwbGF5cyBhIGhpc3RvZ3JhbSBvZiBcCit0aGUgaW5zZXJ0aW9ucywgZGVsZXRpb25zLCBhbmQgbW9kaWZpY2F0aW9ucyBwZXItZmlsZS4gSXQgaXMgdXNlZnVsIGZvciBcCityZXZpZXdpbmcgbGFyZ2UsIGNvbXBsZXggcGF0Y2ggZmlsZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2RpZmZzdGF0LyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2luc3RhbGwtc2g7ZW5kbGluZT00MjttZDU9YjM1NDk3MjZjMTAyMmJlZTA5YzE3NGM3MmEwY2E0YTUiCisKK1NSQ19VUkkgPSAiaHR0cDovL2ludmlzaWJsZS1taXJyb3IubmV0L2FyY2hpdmVzLyR7QlBOfS8ke0JQfS50Z3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2F2b2lkLWNoZWNrLXVzZXItYnJlYWstY2MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hY2xvY2FsLm00LWFkZC1taXNzaW5nLWhlYWRlci1kZWZpbmVzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjkyNzJlYzhhZjYyNTcxMDMyNjFlYzM2MjI2OTI5OTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2VkZGQ1MzQwMWI5OWI5MGJhYzNmN2ViZjIzZGQ1ODNkN2Q5OWM2MTA2ZTY3YTRmMTE2MWI3YTIwMTEwZGM2ZiIKKworUyA9ICIke1dPUktESVJ9L2RpZmZzdGF0LSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHB0ZXN0CisKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hY2xvY2FsIgorCitMREZMQUdTICs9ICIke1RPT0xDSEFJTl9PUFRJT05TfSIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAtciAke1N9L3Rlc3RpbmcgJHtEfSR7UFRFU1RfUEFUSH0KK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1zZXQtcHl0aG9uLXBhdGgtZm9yLWNvbXBsZXRpb25faGVscGVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDAxLXNldC1weXRob24tcGF0aC1mb3ItY29tcGxldGlvbl9oZWxwZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ4ZjY0MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1zZXQtcHl0aG9uLXBhdGgtZm9yLWNvbXBsZXRpb25faGVscGVyLnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK0Zyb20gN2U3OWIzYjY3ZmQ1Y2VjZDczODBlN2UzNjVmZDg4ZWNhNjNiNWJmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorRGF0ZTogV2VkLCAxMSBNYXIgMjAyMCAyMjoxMDowMiArMDAwMAorU3ViamVjdDogW1BBVENIXSBzZXQgcHl0aG9uIHBhdGggZm9yIGNvbXBsZXRpb25faGVscGVyCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorLS0tCisgZG5mL2NsaS9jb21wbGV0aW9uX2hlbHBlci5weS5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2RuZi9jbGkvY29tcGxldGlvbl9oZWxwZXIucHkuaW4gYi9kbmYvY2xpL2NvbXBsZXRpb25faGVscGVyLnB5LmluCitpbmRleCAzNTEyMjY3NTkuLjI4MzVjZDNiNiAxMDA2NDQKKy0tLSBhL2RuZi9jbGkvY29tcGxldGlvbl9oZWxwZXIucHkuaW4KKysrKyBiL2RuZi9jbGkvY29tcGxldGlvbl9oZWxwZXIucHkuaW4KK0BAIC0xLDQgKzEsNCBAQAorLSMhQFBZVEhPTl9FWEVDVVRBQkxFQAorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjCisgIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBkbmYuCisgIworLS0gCisyLjIzLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi9GaXgtU3ludGF4V2FybmluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvRml4LVN5bnRheFdhcm5pbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJkOGIwOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvRml4LVN5bnRheFdhcm5pbmcucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSAyM2M1YjE1ZWZlNDJlNWU2ZWU2OTVlNTQ3OThiYWMyNDg1MzJkOGQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorCitEYXRlOiBUdWUsIDI4IE1heSAyMDE5IDEzOjE0OjUxICswMjAwCitTdWJqZWN0OiBbb2UtY29yZV1bUEFUQ0ggMS8xXSBGaXggU3ludGF4V2FybmluZzogImlzIiB3aXRoIGEgbGl0ZXJhbC4gRGlkIHlvdQorIG1lYW4gIj09Ij8KKworLS0tCisgZG5mL2NsaS9jb21tYW5kcy9yZXBvcXVlcnkucHkgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCistLS0KKworVW5jaGFuZ2VkLiAgQXBwZWFycyBpbiB2ZXJzaW9uIDQuMi43LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2RuZi5naXRdCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworCitkaWZmIC0tZ2l0IGEvZG5mL2NsaS9jb21tYW5kcy9yZXBvcXVlcnkucHkgYi9kbmYvY2xpL2NvbW1hbmRzL3JlcG9xdWVyeS5weQoraW5kZXggOTQxYTQ3MC4uNjNmYzY2OCAxMDA2NDQKKy0tLSBhL2RuZi9jbGkvY29tbWFuZHMvcmVwb3F1ZXJ5LnB5CisrKysgYi9kbmYvY2xpL2NvbW1hbmRzL3JlcG9xdWVyeS5weQorQEAgLTYxMSw3ICs2MTEsNyBAQCBjbGFzcyBSZXBvUXVlcnlDb21tYW5kKGNvbW1hbmRzLkNvbW1hbmQpOgorIAorICAgICBkZWYgdHJlZV9zZWVkKHNlbGYsIHF1ZXJ5LCBhcXVlcnksIG9wdHMsIGxldmVsPS0xLCB1c2VkcGtncz1Ob25lKToKKyAgICAgICAgIGZvciBwa2cgaW4gc29ydGVkKHNldChxdWVyeS5ydW4oKSksIGtleT1sYW1iZGEgcDogcC5uYW1lKToKKy0gICAgICAgICAgICB1c2VkcGtncyA9IHNldCgpIGlmIHVzZWRwa2dzIGlzIE5vbmUgb3IgbGV2ZWwgaXMgLTEgZWxzZSB1c2VkcGtncworKyAgICAgICAgICAgIHVzZWRwa2dzID0gc2V0KCkgaWYgdXNlZHBrZ3MgaXMgTm9uZSBvciBsZXZlbCA9PSAtMSBlbHNlIHVzZWRwa2dzCisgICAgICAgICAgICAgaWYgcGtnLm5hbWUuc3RhcnRzd2l0aCgicnBtbGliIikgb3IgcGtnLm5hbWUuc3RhcnRzd2l0aCgic29sdmFibGUiKToKKyAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgc2VsZi5ncm93X3RyZWUobGV2ZWwsIHBrZywgb3B0cykKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZl80LjIuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmZfNC4yLjIuYmIKaW5kZXggZjM4MTY3Zi4uYTA0NmZmYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZl80LjIuMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mXzQuMi4yLmJiCkBAIC0xMyw2ICsxMyw4IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDA1LURvLW5vdC1wcmVwZW5kLWluc3RhbGxyb290LXRvLWxvZ2Rpci5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDI5LURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMzAtUnVuLXB5dGhvbi1zY3JpcHRzLXVzaW5nLWVudi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9GaXgtU3ludGF4V2FybmluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNldC1weXRob24tcGF0aC1mb3ItY29tcGxldGlvbl9oZWxwZXIucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ1JFViA9ICI5OTQ3MzA2YTU1MjcxYjhiN2M5ZTJiNmUzYjdkNTgyODg1YjYwNDVkIgpAQCAtODQsMyArODYsNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGRuZi1hdXRvbWF0aWMtbm90aWZ5b25seS5zZXJ2aWNlIGRuZi1hdXRvbWF0aWMtbm90aWZ5b25seS50aW1lciBcCiAiCiBTWVNURU1EX0FVVE9fRU5BQkxFID89ICJkaXNhYmxlIgorCitQTkJMQUNLTElTVFtkbmZdID89ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRV9DTEFTU0VTJywgJ3BhY2thZ2VfcnBtJywgJycsICdkb2VzIG5vdCBidWlsZCB3aXRob3V0IHBhY2thZ2VfcnBtIGluIFBBQ0tBR0VfQ0xBU1NFUyBkdWUgZGlzYWJsZWQgcnBtIHN1cHBvcnQgaW4gbGlic29sdicsIGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rvc2ZzdG9vbHMvZG9zZnN0b29sc180LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kb3Nmc3Rvb2xzL2Rvc2ZzdG9vbHNfNC4xLmJiCmluZGV4IDY5YWE4MWEuLjIzYjg4MzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rvc2ZzdG9vbHMvZG9zZnN0b29sc180LjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG9zZnN0b29scy9kb3Nmc3Rvb2xzXzQuMS5iYgpAQCAtMjMsMyArMjMsNiBAQAogQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIC1EX0xBUkdFRklMRV9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKKyMgQWRkIGNvZGVwYWdlNDM3IHRvIGF2b2lkIGVycm9yIGZyb20gYGRvc2ZzY2sgLWxgCitSUkVDT01NRU5EU18ke1BOfV9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtZ2NvbnYtaWJtNDM3IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLmluYwppbmRleCBhNTRhMTFjLi4wMDlmNWVkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLmluYwpAQCAtNCw5ICs0LDkgQEAKIEhPTUVQQUdFID0gImh0dHA6Ly9lMmZzcHJvZ3Muc291cmNlZm9yZ2UubmV0LyIKIAogTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiAmIEJTRCAmIE1JVCIKK0xJQ0VOU0VfZTJmc3Byb2dzLWR1bXBlMmZzID0gIkdQTHYyIgogTElDRU5TRV9lMmZzcHJvZ3MtZTJmc2NrID0gIkdQTHYyIgogTElDRU5TRV9lMmZzcHJvZ3MtbWtlMmZzID0gIkdQTHYyIgotTElDRU5TRV9lMmZzcHJvZ3MtZnNjayA9ICJHUEx2MiIKIExJQ0VOU0VfZTJmc3Byb2dzLXR1bmUyZnMgPSAiR1BMdjIiCiBMSUNFTlNFX2UyZnNwcm9ncy1iYWRibG9ja3MgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9OT1RJQ0U7bWQ1PWQ1MGJlMDU4MGMwYjBhN2ZiYzdhNDgzMGJiZTZjMTJiIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1jb25maWd1cmUuYWMtY29ycmVjdC1BTV9HTlVfR0VUVEVYVC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1jb25maWd1cmUuYWMtY29ycmVjdC1BTV9HTlVfR0VUVEVYVC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzE5NTk0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWNvbmZpZ3VyZS5hYy1jb3JyZWN0LUFNX0dOVV9HRVRURVhULnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gZjkwN2ZlYTllYTA1M2Q1NDMzYjUxOTljZTc0MDA4NjY0MTQxZjc1MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxOSBOb3YgMjAxOSAxNzozMjozMyArMDEwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IGNvcnJlY3QgQU1fR05VX0dFVFRFWFQKKworTmV3IHZlcnNpb24gb2YgZ2V0dGV4dCByZXF1aXJlIHRoZSAnZXh0ZXJuYWwnIGFyZ3VtZW50LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA2NTRmZjQzZC4uNDc3MmI5N2IgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTg3Myw3ICs4NzMsNyBAQCBBQ19TVUJTVChHRVRURVhUX1BBQ0tBR0UpCisgQUNfU1VCU1QoUEFDS0FHRSkKKyBBQ19TVUJTVChWRVJTSU9OKQorIAorLUFNX0dOVV9HRVRURVhUCisrQU1fR05VX0dFVFRFWFQoW2V4dGVybmFsXSkKKyBkbmwgQE1LRElSX1BAIGlzIGV4cGFuZGVkIGluIEFNX0dOVV9HRVRURVhUCisgQUNfU1VCU1QoW21rZGlyX3BdLFsnJChNS0RJUl9QKSddKQorIGRubApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWUyZnNjay1kb24tdC10cnktdG8tcmVoYXNoLWEtZGVsZXRlZC1kaXJlY3RvcnkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtZTJmc2NrLWRvbi10LXRyeS10by1yZWhhc2gtYS1kZWxldGVkLWRpcmVjdG9yeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTRlM2EzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWUyZnNjay1kb24tdC10cnktdG8tcmVoYXNoLWEtZGVsZXRlZC1kaXJlY3RvcnkucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorRnJvbSA3MWJhMTM3NTUzMzdlMTljOWE4MjZkZmM4NzQ1NjJhMzZlMWIyNGQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KK0RhdGU6IFRodSwgMTkgRGVjIDIwMTkgMTk6NDU6MDYgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gZTJmc2NrOiBkb24ndCB0cnkgdG8gcmVoYXNoIGEgZGVsZXRlZCBkaXJlY3RvcnkKKworSWYgZGlyZWN0b3J5IGhhcyBiZWVuIGRlbGV0ZWQgaW4gcGFzczFbYmNkXSBwcm9jZXNzaW5nLCB0aGVuIHdlCitzaG91bGRuJ3QgdHJ5IHRvIHJlaGFzaCB0aGUgZGlyZWN0b3J5IGluIHBhc3MgM2Egd2hlbiB3ZSB0cnkgdG8KK3JlaGFzaC9yZW9wdGltaXplIGRpcmVjdG9yaWVzLgorCitTaWduZWQtb2ZmLWJ5OiBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vZnMvZXh0Mi9lMmZzcHJvZ3MuZ2l0L2NvbW1pdC8/aWQ9NzFiYTEzNzU1MzM3ZTE5YzlhODI2ZGZjODc0NTYyYTM2ZTFiMjRkM10KK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CistLS0KKyBlMmZzY2svcGFzczFiLmMgfCA0ICsrKysKKyBlMmZzY2svcmVoYXNoLmMgfCAyICsrCisgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2UyZnNjay9wYXNzMWIuYyBiL2UyZnNjay9wYXNzMWIuYworaW5kZXggNTY5M2I5Y2YuLmJjYTcwMWNhIDEwMDY0NAorLS0tIGEvZTJmc2NrL3Bhc3MxYi5jCisrKysgYi9lMmZzY2svcGFzczFiLmMKK0BAIC03MDUsNiArNzA1LDEwIEBAIHN0YXRpYyB2b2lkIGRlbGV0ZV9maWxlKGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8sCisgCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFCX0JMT0NLX0lURVJBVEUsICZwY3R4KTsKKyAJaWYgKGN0eC0+aW5vZGVfYmFkX21hcCkKKyAJCWV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwMihjdHgtPmlub2RlX2JhZF9tYXAsIGlubyk7CisrCWlmIChjdHgtPmlub2RlX3JlZ19tYXApCisrCQlleHQyZnNfdW5tYXJrX2lub2RlX2JpdG1hcDIoY3R4LT5pbm9kZV9yZWdfbWFwLCBpbm8pOworKwlleHQyZnNfdW5tYXJrX2lub2RlX2JpdG1hcDIoY3R4LT5pbm9kZV9kaXJfbWFwLCBpbm8pOworKwlleHQyZnNfdW5tYXJrX2lub2RlX2JpdG1hcDIoY3R4LT5pbm9kZV91c2VkX21hcCwgaW5vKTsKKyAJZXh0MmZzX2lub2RlX2FsbG9jX3N0YXRzMihmcywgaW5vLCAtMSwgTElOVVhfU19JU0RJUihkcC0+aW5vZGUuaV9tb2RlKSk7CisgCXF1b3RhX2RhdGFfc3ViKGN0eC0+cWN0eCwgJmRwLT5pbm9kZSwgaW5vLAorIAkJICAgICAgIHBiLmR1cF9ibG9ja3MgKiBmcy0+YmxvY2tzaXplKTsKK2RpZmYgLS1naXQgYS9lMmZzY2svcmVoYXNoLmMgYi9lMmZzY2svcmVoYXNoLmMKK2luZGV4IDNkZDFlOTQxLi4yYzkwOGJlMCAxMDA2NDQKKy0tLSBhL2UyZnNjay9yZWhhc2guYworKysrIGIvZTJmc2NrL3JlaGFzaC5jCitAQCAtMTAyOCw2ICsxMDI4LDggQEAgdm9pZCBlMmZzY2tfcmVoYXNoX2RpcmVjdG9yaWVzKGUyZnNja190IGN0eCkKKyAJCQlpZiAoIWV4dDJmc191MzJfbGlzdF9pdGVyYXRlKGl0ZXIsICZpbm8pKQorIAkJCQlicmVhazsKKyAJCX0KKysJCWlmICghZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwMihjdHgtPmlub2RlX2Rpcl9tYXAsIGlubykpCisrCQkJY29udGludWU7CisgCisgCQlwY3R4LmRpciA9IGlubzsKKyAJCWlmIChmaXJzdCkgeworLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWludGwtZG8tbm90LXRyeS10by11c2UtZ2V0dGV4dC1kZWZpbmVzLXRoYXQtbm8tbG9uZ2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtaW50bC1kby1ub3QtdHJ5LXRvLXVzZS1nZXR0ZXh0LWRlZmluZXMtdGhhdC1uby1sb25nZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWI1ODVmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWludGwtZG8tbm90LXRyeS10by11c2UtZ2V0dGV4dC1kZWZpbmVzLXRoYXQtbm8tbG9uZ2UucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBkMDM0MjM5ZjA1Y2ZiYTg0OWY2YWQxNmViM2YxZWEzN2VmYmU0Zjk1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE5IE5vdiAyMDE5IDE4OjM0OjAwICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGludGw6IGRvIG5vdCB0cnkgdG8gdXNlIGdldHRleHQgZGVmaW5lcyB0aGF0IG5vIGxvbmdlciBleGlzdAorCitOZXdlciB2ZXJzaW9uIG9mIGdldHRleHQgbm8gbG9uZ2VyIGRlZmluZSB0aGlzIGluIG00IGZpbGVzLAorc28gcGF0Y2ggaXQgb3V0IHVudGlsIGUyZnNwcm9ncyB1cHN0cmVhbSBzb3J0cyB0aGUgc2l0dWF0aW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2hhcmRjb2RlcyBhIGNob2ljZV0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgaW50bC9NYWtlZmlsZS5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2ludGwvTWFrZWZpbGUuaW4gYi9pbnRsL01ha2VmaWxlLmluCitpbmRleCBlMDM3ZTIzYy4uODlhODc2YjggMTAwNjQ0CistLS0gYS9pbnRsL01ha2VmaWxlLmluCisrKysgYi9pbnRsL01ha2VmaWxlLmluCitAQCAtMTc1LDcgKzE3NSw3IEBAIGxpYmdudWludGwuaC5tc3ZjLXN0YXRpYyBsaWJnbnVpbnRsLmgubXN2Yy1zaGFyZWQgUkVBRE1FLndvZTMyIE1ha2VmaWxlLm1zdmMKKyBESVNURklMRVMub2Jzb2xldGUgPSB4b3Blbi1tc2cuc2VkIGxpbnV4LW1zZy5zZWQgcG8ydGJsLnNlZC5pbiBjYXQtY29tcGF0LmMgXAorIENPUFlJTkcuTElCLTIgZ2V0dGV4dC5oIGxpYmdldHRleHQuaCBwbHVyYWwtZXZhbC5jIGxpYmdudWludGwuaAorIAorLWFsbDogYWxsLUBVU0VfSU5DTFVERURfTElCSU5UTEAKKythbGw6CisgYWxsLXllczogbGliaW50bC4kbGEgbGliaW50bC5oIGNoYXJzZXQuYWxpYXMgcmVmLWFkZC5zZWQgcmVmLWRlbC5zZWQKKyBhbGwtbm86IGFsbC1uby1AQlVJTERfSU5DTFVERURfTElCSU5UTEAKKyBhbGwtbm8teWVzOiBsaWJnbnVpbnRsLiRsYQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9DVkUtMjAxOS01MTg4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9DVkUtMjAxOS01MTg4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNGJjZTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL0NWRS0yMDE5LTUxODgucGF0Y2gKQEAgLTAsMCArMSw1NyBAQAorRnJvbSA4ZGQ3M2MxNDlmNDE4MjM4ZjE5NzkxZjlkNjY2MDg5ZWY5NzM0ZGZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KK0RhdGU6IFRodSwgMTkgRGVjIDIwMTkgMTk6Mzc6MzQgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gZTJmc2NrOiBhYm9ydCBpZiB0aGVyZSBpcyBhIGNvcnJ1cHRlZCBkaXJlY3RvcnkgYmxvY2sgd2hlbgorIHJlaGFzaGluZworCitJbiBlMmZzY2sgcGFzcyAzYSwgd2hlbiB3ZSBhcmUgcmVoYXNoaW5nIGRpcmVjdG9yaWVzLCBhdCBsZWFzdCBpbgordGhlb3J5LCBhbGwgb2YgdGhlIGRpcmVjdG9yaWVzIHNob3VsZCBoYXZlIGhhZCBjb3JydXB0aW9ucyB3aXRoCityZXNwZWN0IHRvIGRpcmVjdG9yeSBlbnRyeSBzdHJ1Y3R1cmUgZml4ZWQuICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlCisoZm9yIGV4YW1wbGUsIGlmIHRoZSB1c2VyIGRlY2xpbmVkIGEgZml4KSB0aGF0IHdlIGNhbiByZWFjaCB0aGlzIHN0YWdlCitvZiBwcm9jZXNzaW5nIHdpdGggYSBjb3JydXB0ZWQgZGlyZWN0b3J5IGVudHJpZXMuCisKK1NvIGNoZWNrIGZvciB0aGF0IGNhc2UgYW5kIGRvbid0IHRyeSB0byBwcm9jZXNzIGEgY29ycnVwdGVkIGRpcmVjdG9yeQorYmxvY2sgc28gd2UgZG9uJ3QgcnVuIGludG8gdHJvdWJsZSBpbiBtdXRhdGVfbmFtZSgpIGlmIHRoZXJlIGlzIGEKK3plcm8tbGVuZ3RoIGZpbGUgbmFtZS4KKworQWRkcmVzc2VzOiBUQUxPUy0yMDE5LTA5NzMKK0FkZHJlc3NlczogQ1ZFLTIwMTktNTE4OAorU2lnbmVkLW9mZi1ieTogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KKworQ1ZFOiBDVkUtMjAxOS01MTg4CitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2ZzL2V4dDIvZTJmc3Byb2dzLmdpdC9jb21taXQvP2lkPThkZDczYzE0OWY0MTgyMzhmMTk3OTFmOWQ2NjYwODllZjk3MzRkZmZdCistLS0KKyBlMmZzY2svcmVoYXNoLmMgfCA5ICsrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2UyZnNjay9yZWhhc2guYyBiL2UyZnNjay9yZWhhc2guYworaW5kZXggYTVmYzFiZTEuLjNkZDFlOTQxIDEwMDY0NAorLS0tIGEvZTJmc2NrL3JlaGFzaC5jCisrKysgYi9lMmZzY2svcmVoYXNoLmMKK0BAIC0xNjAsNiArMTYwLDEwIEBAIHN0YXRpYyBpbnQgZmlsbF9kaXJfYmxvY2soZXh0Ml9maWxzeXMgZnMsCisgCQlkaXJfb2Zmc2V0ICs9IHJlY19sZW47CisgCQlpZiAoZGlyZW50LT5pbm9kZSA9PSAwKQorIAkJCWNvbnRpbnVlOworKwkJaWYgKChuYW1lX2xlbikgPT0gMCkgeworKwkJCWZkLT5lcnIgPSBFWFQyX0VUX0RJUl9DT1JSVVBURUQ7CisrCQkJcmV0dXJuIEJMT0NLX0FCT1JUOworKwkJfQorIAkJaWYgKCFmZC0+Y29tcHJlc3MgJiYgKG5hbWVfbGVuID09IDEpICYmCisgCQkgICAgKGRpcmVudC0+bmFtZVswXSA9PSAnLicpKQorIAkJCWNvbnRpbnVlOworQEAgLTQwMSw2ICs0MDUsMTEgQEAgc3RhdGljIGludCBkdXBsaWNhdGVfc2VhcmNoX2FuZF9maXgoZTJmc2NrX3QgY3R4LCBleHQyX2ZpbHN5cyBmcywKKyAJCQljb250aW51ZTsKKyAJCX0KKyAJCW5ld19sZW4gPSBleHQyZnNfZGlyZW50X25hbWVfbGVuKGVudC0+ZGlyKTsKKysJCWlmIChuZXdfbGVuID09IDApIHsKKysJCQkgLyogc2hvdWxkIG5ldmVyIGhhcHBlbiAqLworKwkJCWV4dDJmc191bm1hcmtfdmFsaWQoZnMpOworKwkJCWNvbnRpbnVlOworKwkJfQorIAkJbWVtY3B5KG5ld19uYW1lLCBlbnQtPmRpci0+bmFtZSwgbmV3X2xlbik7CisgCQltdXRhdGVfbmFtZShuZXdfbmFtZSwgJm5ld19sZW4pOworIAkJZm9yIChqPTA7IGogPCBmZC0+bnVtX2FycmF5OyBqKyspIHsKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvZTJmc2NrLWZpeC11c2UtYWZ0ZXItZnJlZS1pbi1jYWxjdWxhdGVfdHJlZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvZTJmc2NrLWZpeC11c2UtYWZ0ZXItZnJlZS1pbi1jYWxjdWxhdGVfdHJlZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDJhMmI4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9lMmZzY2stZml4LXVzZS1hZnRlci1mcmVlLWluLWNhbGN1bGF0ZV90cmVlLnBhdGNoCkBAIC0wLDAgKzEsNzYgQEAKK0Zyb206IFdhbmcgU2hpbG9uZyA8d3NoaWxvbmdAZGRuLmNvbT4KK0RhdGU6IE1vbiwgMzAgRGVjIDIwMTkgMTk6NTI6MzkgLTA1MDAKK1N1YmplY3Q6IGUyZnNjazogZml4IHVzZSBhZnRlciBmcmVlIGluIGNhbGN1bGF0ZV90cmVlKCkKKworVGhlIHByb2JsZW0gaXMgYWxsb2NfYmxvY2tzKCkgd2lsbCBjYWxsIGdldF9uZXh0X2Jsb2NrKCkgd2hpY2ggbWlnaHQKK3JlYWxsb2NhdGUgb3V0ZGlyLT5idWYsIGFuZCBtZW1vcnkgYWRkcmVzcyBjb3VsZCBiZSBjaGFuZ2VkIGFmdGVyCit0aGlzLiAgVG8gZml4IHRoaXMsIHBvaW50ZXJzIHRoYXQgcG9pbnQgaW50byBvdXRkaXItPmJ1Ziwgc3VjaCBhcworaW50X2xpbWl0IGFuZCByb290IG5lZWQgdG8gYmUgcmVjYXVsYXRlZCBiYXNlZCBvbiB0aGUgbmV3IHN0YXJ0aW5nCithZGRyZXNzIG9mIG91dGRpci0+YnVmLgorCitbIENoYW5nZWQgdG8gY29ycmVjdGx5IHJlY2FsY3VsYXRlIGludF9saW1pdCwgYW5kIHRvIG9wdGltaXplIGhvdyB3ZQorICByZWFsbG9jYXRlIG91dGRpci0+YnVmLiAgLVRZVCBdCisKK0FkZHJlc3Nlcy1EZWJpYW4tQnVnOiA5NDg1MTcKK1NpZ25lZC1vZmYtYnk6IFdhbmcgU2hpbG9uZyA8d3NoaWxvbmdAZGRuLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+CisoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAxMDFlNzNlOTljY2FmYTA0MDNmY2IyN2RkNzQxMzAzM2I1ODdjYTAxKQorCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2ZzL2V4dDIvZTJmc3Byb2dzLmdpdC9jb21taXQvP2lkPTEwMWU3M2U5OWNjYWZhMDQwM2ZjYjI3ZGQ3NDEzMDMzYjU4N2NhMDFdCistLS0KKyBlMmZzY2svcmVoYXNoLmMgfCAxNyArKysrKysrKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9lMmZzY2svcmVoYXNoLmMgYi9lMmZzY2svcmVoYXNoLmMKK2luZGV4IDBhNTg4OGE5Li4yNTc0ZTE1MSAxMDA2NDQKKy0tLSBhL2UyZnNjay9yZWhhc2guYworKysrIGIvZTJmc2NrL3JlaGFzaC5jCitAQCAtMjk1LDcgKzI5NSwxMSBAQCBzdGF0aWMgZXJyY29kZV90IGdldF9uZXh0X2Jsb2NrKGV4dDJfZmlsc3lzIGZzLCBzdHJ1Y3Qgb3V0X2RpciAqb3V0ZGlyLAorIAllcnJjb2RlX3QJcmV0dmFsOworIAorIAlpZiAob3V0ZGlyLT5udW0gPj0gb3V0ZGlyLT5tYXgpIHsKKy0JCXJldHZhbCA9IGFsbG9jX3NpemVfZGlyKGZzLCBvdXRkaXIsIG91dGRpci0+bWF4ICsgNTApOworKwkJaW50IGluY3JlbWVudCA9IG91dGRpci0+bWF4IC8gMTA7CisrCisrCQlpZiAoaW5jcmVtZW50IDwgNTApCisrCQkJaW5jcmVtZW50ID0gNTA7CisrCQlyZXR2YWwgPSBhbGxvY19zaXplX2Rpcihmcywgb3V0ZGlyLCBvdXRkaXItPm1heCArIGluY3JlbWVudCk7CisgCQlpZiAocmV0dmFsKQorIAkJCXJldHVybiByZXR2YWw7CisgCX0KK0BAIC02MzcsNiArNjQxLDkgQEAgc3RhdGljIGludCBhbGxvY19ibG9ja3MoZXh0Ml9maWxzeXMgZnMsCisgCWlmIChyZXR2YWwpCisgCQlyZXR1cm4gcmV0dmFsOworIAorKwkvKiBvdXRkaXItPmJ1ZiBtaWdodCBiZSByZWFsbG9jYXRlZCAqLworKwkqcHJldl9lbnQgPSAoc3RydWN0IGV4dDJfZHhfZW50cnkgKikgKG91dGRpci0+YnVmICsgKnByZXZfb2Zmc2V0KTsKKysKKyAJKm5leHRfZW50ID0gc2V0X2ludF9ub2RlKGZzLCBibG9ja19zdGFydCk7CisgCSpsaW1pdCA9IChzdHJ1Y3QgZXh0Ml9keF9jb3VudGxpbWl0ICopKCpuZXh0X2VudCk7CisgCWlmIChuZXh0X29mZnNldCkKK0BAIC03MjYsNiArNzMzLDkgQEAgc3RhdGljIGVycmNvZGVfdCBjYWxjdWxhdGVfdHJlZShleHQyX2ZpbHN5cyBmcywKKyAJCQkJCXJldHVybiByZXR2YWw7CisgCQkJfQorIAkJCWlmIChjMyA9PSAwKSB7CisrCQkJCWludCBkZWx0YTEgPSAoY2hhciAqKWludF9saW1pdCAtIG91dGRpci0+YnVmOworKwkJCQlpbnQgZGVsdGEyID0gKGNoYXIgKilyb290IC0gb3V0ZGlyLT5idWY7CisrCisgCQkJCXJldHZhbCA9IGFsbG9jX2Jsb2NrcyhmcywgJmxpbWl0LCAmaW50X2VudCwKKyAJCQkJCQkgICAgICAmZHhfZW50LCAmaW50X29mZnNldCwKKyAJCQkJCQkgICAgICBOVUxMLCBvdXRkaXIsIGksICZjMiwKK0BAIC03MzMsNiArNzQzLDExIEBAIHN0YXRpYyBlcnJjb2RlX3QgY2FsY3VsYXRlX3RyZWUoZXh0Ml9maWxzeXMgZnMsCisgCQkJCWlmIChyZXR2YWwpCisgCQkJCQlyZXR1cm4gcmV0dmFsOworIAorKwkJCQkvKiBvdXRkaXItPmJ1ZiBtaWdodCBiZSByZWFsbG9jYXRlZCAqLworKwkJCQlpbnRfbGltaXQgPSAoc3RydWN0IGV4dDJfZHhfY291bnRsaW1pdCAqKQorKwkJCQkJKG91dGRpci0+YnVmICsgZGVsdGExKTsKKysJCQkJcm9vdCA9IChzdHJ1Y3QgZXh0Ml9keF9lbnRyeSAqKQorKwkJCQkJKG91dGRpci0+YnVmICsgZGVsdGEyKTsKKyAJCQl9CisgCQkJZHhfZW50LT5ibG9jayA9IGV4dDJmc19jcHVfdG9fbGUzMihpKTsKKyAJCQlpZiAoYzMgIT0gbGltaXQtPmxpbWl0KQorLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9lMmZzcHJvZ3MtZml4LW1pc3NpbmctY2hlY2stZm9yLXBlcm1pc3Npb24tZGVuaWVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9lMmZzcHJvZ3MtZml4LW1pc3NpbmctY2hlY2stZm9yLXBlcm1pc3Npb24tZGVuaWVkLnBhdGNoCmluZGV4IDY5YzA5YmMuLjRkMzM1YWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvZTJmc3Byb2dzLWZpeC1taXNzaW5nLWNoZWNrLWZvci1wZXJtaXNzaW9uLWRlbmllZC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL2UyZnNwcm9ncy1maXgtbWlzc2luZy1jaGVjay1mb3ItcGVybWlzc2lvbi1kZW5pZWQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGM3OTE0MzA5YWVlZTYyMDlkZGI2OTk1YzA4NDgwNWE5MTFkOWNjODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGU4MzMxYTc2OTgzZTgzOWEzZDE5MzQ0NmFiOGFlOWMxYjA5ZGFhMDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgogRGF0ZTogV2VkLCAxMCBBdWcgMjAxNiAxMToxOTo0NCArMDgwMAogU3ViamVjdDogW1BBVENIXSBGaXggbWlzc2luZyBjaGVjayBmb3IgcGVybWlzc2lvbiBkZW5pZWQuCkBAIC0xOSw3ICsxOSw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9saWIvc3VwcG9ydC9wcm9maWxlLmMgYi9saWIvc3VwcG9ydC9wcm9maWxlLmMKLWluZGV4IDllOTY2NzNiLi4zMmQ4MzAwMiAxMDA2NDQKK2luZGV4IDU4NWVkNTk1Li44MTBkZDY2YiAxMDA2NDQKIC0tLSBhL2xpYi9zdXBwb3J0L3Byb2ZpbGUuYwogKysrIGIvbGliL3N1cHBvcnQvcHJvZmlsZS5jCiBAQCAtMzM1LDcgKzMzNSw3IEBAIHByb2ZpbGVfaW5pdChjb25zdCBjaGFyICogY29uc3QgKmZpbGVzLCBwcm9maWxlX3QgKnJldF9wcm9maWxlKQpAQCAtMzEsNiArMzEsMyBAQAogIAkJCSAgIHN0cmNtcCgqZnMsIGRlZmF1bHRfZmlsZW5hbWUpKQogIAkJCWdvdG8gZXJyb3V0OwogIAotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9xdWlldC1kZWJ1Z2ZzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9xdWlldC1kZWJ1Z2ZzLnBhdGNoCmluZGV4IDgzMGU5ZDUuLjk1ZTZhN2EgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcXVpZXQtZGVidWdmcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3F1aWV0LWRlYnVnZnMucGF0Y2gKQEAgLTEsMTQgKzEsMjMgQEAKK0Zyb20gZGU2ZDZmMGRkMDEwZjViOWQ5MTc1NTNhY2I5NDMwMjc4ZjQ0OGYyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBNb24sIDIzIERlYyAyMDEzIDEzOjM4OjM0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGUyZnNwcm9nczogc2lsZW5jZSBkZWJ1Z2ZzCisKIFdoZW4gZXhlY3V0aW5nIGEgc2NyaXB0IGRvbid0IGVjaG8gZXZlcnkgY29tbWFuZCwgYXMgd2UgZG8gdGhpcyBmb3IgZW50aXJlCiBmaWxlc3lzdGVtcyBhdCByb290ZnMgdGltZS4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiBTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogCistLS0KKyBkZWJ1Z2ZzL2RlYnVnZnMuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKwogZGlmZiAtLWdpdCBhL2RlYnVnZnMvZGVidWdmcy5jIGIvZGVidWdmcy9kZWJ1Z2ZzLmMKLWluZGV4IDU1OTAyOTUuLmFjNTcyOTIgMTAwNjQ0CitpbmRleCAxNWIwMTIxNC4uMTUxNjRkZjIgMTAwNjQ0CiAtLS0gYS9kZWJ1Z2ZzL2RlYnVnZnMuYwogKysrIGIvZGVidWdmcy9kZWJ1Z2ZzLmMKLUBAIC0yMzc4LDcgKzIzNzgsNyBAQCBzdGF0aWMgaW50IHNvdXJjZV9maWxlKGNvbnN0IGNoYXIgKmNtZF9maWxlLCBpbnQgc3NfaWR4KQorQEAgLTI0OTIsNyArMjQ5Miw3IEBAIHN0YXRpYyBpbnQgc291cmNlX2ZpbGUoY29uc3QgY2hhciAqY21kX2ZpbGUsIGludCBzc19pZHgpCiAgCQljcCA9IHN0cmNocihidWYsICdccicpOwogIAkJaWYgKGNwKQogIAkJCSpjcCA9IDA7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzXzEuNDUuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40NS40LmJiCmluZGV4IDkwZGI3MWQuLjRmN2NhZmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40NS40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40NS40LmJiCkBAIC0xLDExICsxLDE2IEBACiByZXF1aXJlIGUyZnNwcm9ncy5pbmMKIAogU1JDX1VSSSArPSAiZmlsZTovL3JlbW92ZS5sZGNvbmZpZy5jYWxsLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ta2Rpcl9wLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1pc2MtY3JlYXRlX2lub2RlLmMtc2V0LWRpci1zLW1vZGUtY29ycmVjdGx5LnBhdGNoIFwKLSAgICAgICAgICAgICIKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ta2Rpcl9wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWlzYy1jcmVhdGVfaW5vZGUuYy1zZXQtZGlyLXMtbW9kZS1jb3JyZWN0bHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtY29ycmVjdC1BTV9HTlVfR0VUVEVYVC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWludGwtZG8tbm90LXRyeS10by11c2UtZ2V0dGV4dC1kZWZpbmVzLXRoYXQtbm8tbG9uZ2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTktNTE4OC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWUyZnNjay1kb24tdC10cnktdG8tcmVoYXNoLWEtZGVsZXRlZC1kaXJlY3RvcnkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZTJmc2NrLWZpeC11c2UtYWZ0ZXItZnJlZS1pbi1jYWxjdWxhdGVfdHJlZS5wYXRjaCBcCisgICAgICAgICAgICIKIAogU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZTJmc3Byb2dzLWZpeC1taXNzaW5nLWNoZWNrLWZvci1wZXJtaXNzaW9uLWRlbmllZC5wYXRjaCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9xdWlldC1kZWJ1Z2ZzLnBhdGNoIFwKQEAgLTgwLDEyICs4NSwxMyBAQAogCW12ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vdHVuZTJmcyAke0R9JHtiYXNlX3NiaW5kaXJ9L3R1bmUyZnMuZTJmc3Byb2dzCiB9CiAKLVJERVBFTkRTX2UyZnNwcm9ncyA9ICJlMmZzcHJvZ3MtYmFkYmxvY2tzIgorUkRFUEVORFNfZTJmc3Byb2dzID0gImUyZnNwcm9ncy1iYWRibG9ja3MgZTJmc3Byb2dzLWR1bXBlMmZzIgogUlJFQ09NTUVORFNfZTJmc3Byb2dzID0gImUyZnNwcm9ncy1ta2UyZnMgZTJmc3Byb2dzLWUyZnNjayIKIAotUEFDS0FHRVMgPSsgImUyZnNwcm9ncy1lMmZzY2sgZTJmc3Byb2dzLWUyc2NydWIgZTJmc3Byb2dzLW1rZTJmcyBlMmZzcHJvZ3MtdHVuZTJmcyBlMmZzcHJvZ3MtYmFkYmxvY2tzIGUyZnNwcm9ncy1yZXNpemUyZnMiCitQQUNLQUdFUyA9KyAiZTJmc3Byb2dzLWJhZGJsb2NrcyBlMmZzcHJvZ3MtZHVtcGUyZnMgZTJmc3Byb2dzLWUyZnNjayBlMmZzcHJvZ3MtZTJzY3J1YiBlMmZzcHJvZ3MtbWtlMmZzIGUyZnNwcm9ncy1yZXNpemUyZnMgZTJmc3Byb2dzLXR1bmUyZnMiCiBQQUNLQUdFUyA9KyAibGliY29tZXJyIGxpYnNzIGxpYmUycCBsaWJleHQyZnMiCiAKK0ZJTEVTX2UyZnNwcm9ncy1kdW1wZTJmcyA9ICIke2Jhc2Vfc2JpbmRpcn0vZHVtcGUyZnMiCiBGSUxFU19lMmZzcHJvZ3MtcmVzaXplMmZzID0gIiR7YmFzZV9zYmluZGlyfS9yZXNpemUyZnMqIgogRklMRVNfZTJmc3Byb2dzLWUyZnNjayA9ICIke2Jhc2Vfc2JpbmRpcn0vZTJmc2NrICR7YmFzZV9zYmluZGlyfS9mc2NrLmV4dCoiCiBGSUxFU19lMmZzcHJvZ3MtZTJzY3J1YiA9ICIke2Jhc2Vfc2JpbmRpcn0vZTJzY3J1YioiCkBAIC0xMTUsNyArMTIxLDcgQEAKIAogUkRFUEVORFNfZTJmc3Byb2dzLWUyc2NydWIgPSAiYmFzaCIKIFJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJjb3JldXRpbHMgcHJvY3BzIGJhc2ggYnppcDIgZGlmZnV0aWxzIHBlcmwgc2VkIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImUyZnNwcm9ncy1lMmZzY2sgZTJmc3Byb2dzLW1rZTJmcyBlMmZzcHJvZ3MtdHVuZTJmcyBlMmZzcHJvZ3MtYmFkYmxvY2tzIGUyZnNwcm9ncy1yZXNpemUyZnMiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiZTJmc3Byb2dzLWJhZGJsb2NrcyBlMmZzcHJvZ3MtZHVtcGUyZnMgZTJmc3Byb2dzLWUyZnNjayBlMmZzcHJvZ3MtbWtlMmZzIGUyZnNwcm9ncy1yZXNpemUyZnMgZTJmc3Byb2dzLXR1bmUyZnMiCiAKIGRvX2NvbXBpbGVfcHRlc3QoKSB7CiAJb2VfcnVubWFrZSAtQyAke0J9L3Rlc3RzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3Ny5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTc3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzc0MGM3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTc3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTU1ICswLDAgQEAKLVNVTU1BUlkgPSAiVXRpbGl0aWVzIGFuZCBsaWJyYXJpZXMgZm9yIGhhbmRsaW5nIGNvbXBpbGVkIG9iamVjdCBmaWxlcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvZWxmdXRpbHMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYzKyAmIEdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotREVQRU5EUyA9ICJ6bGliIHZpcnR1YWwvbGliaW50bCIKLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIGZ0cyBtdXNsLW9ic3RhY2sgIgotIyBUaGUgRGViaWFuIHBhdGNoZXMgYmVsb3cgYXJlIGZyb206Ci0jIGh0dHA6Ly9mdHAuZGUuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2UvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzYtMS5kZWJpYW4udGFyLnh6Ci1TUkNfVVJJID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvZWxmdXRpbHMvZnRwLyR7UFZ9LyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1kc28tbGluay1jaGFuZ2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXgtZWxmX2N2dF9ndW5oYXNoLWlmLWRlc3QtYW5kLXNyYy1hcmUtc2FtZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWZpeGhlYWRlcmNoZWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtRGlzYWJsZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LUZpeC1idWlsZC1vbi1hYXJjaDY0LW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy1GaXgtY29udHJvbC1wYXRoLXdoZXJlLXdlLWhhdmUtc3RyLWFzLXVuaW5pdGlhbGl6ZWQtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGliYXNtLW1heS1saW5rLXdpdGgtbGliYnoyLWlmLWZvdW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGliZWxmLWVsZl9lbmQuYy1jaGVjay1kYXRhX2xpc3QuZGF0YS5kLmRfYnVmLWJlZm9yZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vaHBwYV9iYWNrZW5kLmRpZmYgXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL2FybV9iYWNrZW5kLmRpZmYgXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL21pcHNfYmFja2VuZC5kaWZmIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9taXBzX3JlYWRlbGZfdy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4va2ZyZWVic2RfcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMS1JZ25vcmUtZGlmZmVyZW5jZXMtYmV0d2Vlbi1taXBzLW1hY2hpbmUtaWRlbnRpZmllcnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDItQWRkLXN1cHBvcnQtZm9yLW1pcHM2NC1hYmlzLWluLW1pcHNfcmV0dmFsLmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDMtQWRkLW1pcHMtbjY0LXJlbG9jYXRpb24tZm9ybWF0LWhhY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL2h1cmRfcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vaWdub3JlX3N0cm1lcmdlLmRpZmYgXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL2Rpc2FibGVfd2Vycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi90ZXN0c3VpdGUtaWdub3JlLWVsZmxpbnQuZGlmZiBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWlwc19jZmkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDEtZml4LWNvbXBpbGUtZmFpbHVyZS13aXRoLWRlYmlhbi1wYXRjaGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc2tpcC10aGUtdGVzdC13aGVuLWdjYy1ub3QtZGVwbG95ZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wcGNfaW5pdHJlZy5jLUluY2xpdWRlLWFzbS1wdHJhY2UuaC1mb3ItcHRfcmVncy1kZWZpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAotICAgICAgICAgICBmaWxlOi8vbXVzbC1vYnN0YWNrLWZ0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tdXNsLWxpYnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbXVzbC11dGlscy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tdXNsLXRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjBiNTgzNzIyZjkxMWUxNjMyNTQ0NzE4ZDUwMmFhYjg3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZhNDg5ZGVjY2JjYWU3ZDhjOTIwZjYwZDg1OTA2MTI0YzE5ODljNTkxMTk2ZDkwZTBmZDY2OGUzZGMwNTA0MmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHRlc3QKLQotRVhUUkFfT0VDT05GID0gIi0tcHJvZ3JhbS1wcmVmaXg9ZXUtIgotCi1ERVBFTkRTX0JaSVAyID0gImJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSIKLURFUEVORFNfQlpJUDJfY2xhc3MtdGFyZ2V0ID0gImJ6aXAyIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLS13aXRoLWJ6bGliLC0td2l0aG91dC1iemxpYiwke0RFUEVORFNfQlpJUDJ9IgotUEFDS0FHRUNPTkZJR1t4el0gPSAiLS13aXRoLWx6bWEsLS13aXRob3V0LWx6bWEseHoiCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJhc20gbGliZWxmIGJhc2ggbWFrZSBjb3JldXRpbHMgJHtQTn0tYmludXRpbHMiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ICs9ICItLWRpc2FibGUtdGVzdHMtcnBhdGgiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiAhPSAieDg2XzY0IiBdICYmIFsgLXogYGVjaG8gIiR7VEFSR0VUX0FSQ0h9InxncmVwICdpLjg2J2AgXTt0aGVuCi0JCXJtIC1mICR7RH0ke2JpbmRpcn0vZXUtb2JqZHVtcAotCWZpCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0JY2QgJHtCfS90ZXN0cwotCW9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTIG9lY2hlY2sKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQlpZiBbICR7UFRFU1RfRU5BQkxFRH0gPSAiMSIgXTsgdGhlbgotCQkjIGNvcHkgdGhlIGZpbGVzIHdoaWNoIG5lZWRlZCBieSB0aGUgY2FzZXMKLQkJVEVTVF9GSUxFUz0ic3RyaXAgc3RyaXAubyBhZGRyMmxpbmUgZWxmY21wIG9iamR1bXAgcmVhZGVsZiBzaXplLm8gbm0ubyBubSBlbGZsaW50IgotCQlpbnN0YWxsIC1kIC1tIDc1NSAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCi0JCWluc3RhbGwgLWQgLW0gNzU1ICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9saWJlbGYKLQkJaW5zdGFsbCAtZCAtbSA3NTUgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2xpYmR3Ci0JCWZvciB0ZXN0X2ZpbGUgaW4gJHtURVNUX0ZJTEVTfTsgZG8KLQkJCWlmIFsgLWYgJHtCfS9zcmMvJHt0ZXN0X2ZpbGV9IF07IHRoZW4KLQkJCQljcCAtciAke0J9L3NyYy8ke3Rlc3RfZmlsZX0gJHtEfSR7UFRFU1RfUEFUSH0vc3JjCi0JCQlmaQotCQlkb25lCi0JCWNwICR7RH0ke2xpYmRpcn0vbGliZWxmLSR7UFZ9LnNvICR7RH0ke1BURVNUX1BBVEh9L2xpYmVsZi9saWJlbGYuc28KLQkJY3AgJHtEfSR7bGliZGlyfS9saWJkdy0ke1BWfS5zbyAke0R9JHtQVEVTVF9QQVRIfS9saWJkdy9saWJkdy5zbwotCQljcCAtciAke1N9L3Rlc3RzLyAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KLQkJY3AgLXIgJHtCfS90ZXN0cy8qICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCi0JCWNwIC1yICR7Qn0vY29uZmlnLmggICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQotCQljcCAtciAke0J9L2JhY2tlbmRzICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KLQkJc2VkIC1pICcvXk1ha2VmaWxlOi9jIE1ha2VmaWxlOicgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlCi0JCWZpbmQgJHtEfSR7UFRFU1RfUEFUSH0gLXR5cGUgZiAtbmFtZSAqLltob2NdIHwgeGFyZ3MgLWkgcm0ge30KLQlmaQotfQotCi1FWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlID0gIiIKLUVYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmVzZGsgPSAiIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLSMgUGFja2FnZSB1dGlsaXRpZXMgc2VwYXJhdGVseQotUEFDS0FHRVMgPSsgIiR7UE59LWJpbnV0aWxzIGxpYmVsZiBsaWJhc20gbGliZHciCi0KLSMgc2hhcmVkIGxpYnJhcmllcyBhcmUgbGljZW5zZWQgR1BMdjIgb3IgR1BMdjMrLCBiaW5hcmllcyBHUEx2MysKLSMgYWNjb3JkaW5nIHRvIE5FV1MgZmlsZToKLSMgIlRoZSBsaWNlbnNlIGlzIG5vdyBHUEx2Mi9MR1BMdjMrIGZvciB0aGUgbGlicmFyaWVzIGFuZCBHUEx2MysgZm9yIHN0YW5kLWFsb25lCi0jIHByb2dyYW1zLiBUaGVyZSBpcyBub3cgYWxzbyBhIGZvcm1hbCBDT05UUklCVVRJTkcgZG9jdW1lbnQgZGVzY3JpYmluZyBob3cgdG8KLSMgc3VibWl0IHBhdGNoZXMuIgotTElDRU5TRV8ke1BOfS1iaW51dGlscyA9ICJHUEx2MysiCi1MSUNFTlNFXyR7UE59ID0gIkdQTHYzKyIKLUxJQ0VOU0VfbGliZWxmID0gIkdQTHYyIHwgTEdQTHYzKyIKLUxJQ0VOU0VfbGliYXNtID0gIkdQTHYyIHwgTEdQTHYzKyIKLUxJQ0VOU0VfbGliZHcgPSAiR1BMdjIgfCBMR1BMdjMrIgotCi1GSUxFU18ke1BOfS1iaW51dGlscyA9ICJcCi0gICAgJHtiaW5kaXJ9L2V1LWFkZHIybGluZSBcCi0gICAgJHtiaW5kaXJ9L2V1LWxkIFwKLSAgICAke2JpbmRpcn0vZXUtbm0gXAotICAgICR7YmluZGlyfS9ldS1yZWFkZWxmIFwKLSAgICAke2JpbmRpcn0vZXUtc2l6ZSBcCi0gICAgJHtiaW5kaXJ9L2V1LXN0cmlwIgotCi1GSUxFU19saWJlbGYgPSAiJHtsaWJkaXJ9L2xpYmVsZi0ke1BWfS5zbyAke2xpYmRpcn0vbGliZWxmLnNvLioiCi1GSUxFU19saWJhc20gPSAiJHtsaWJkaXJ9L2xpYmFzbS0ke1BWfS5zbyAke2xpYmRpcn0vbGliYXNtLnNvLioiCi1GSUxFU19saWJkdyAgPSAiJHtsaWJkaXJ9L2xpYmR3LSR7UFZ9LnNvICR7bGliZGlyfS9saWJkdy5zby4qICR7bGliZGlyfS9lbGZ1dGlscy9saWIqIgotIyBTb21lIHBhY2thZ2VzIGhhdmUgdGhlIHZlcnNpb24gcHJlY2VlZGluZyB0aGUgLnNvIGluc3RlYWQgcHJvcGVybHkKLSMgdmVyc2lvbmVkIC5zby48dmVyc2lvbj4sIHNvIHdlIG5lZWQgdG8gcmVvcmRlciBhbmQgcmVwYWNrYWdlLgotI0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vKi0ke1BWfS5zbyAke2Jhc2VfbGliZGlyfS8qLSR7UFZ9LnNvIgotI0ZJTEVTX1NPTElCU0RFViA9ICIke2xpYmRpcn0vbGliYXNtLnNvICR7bGliZGlyfS9saWJkdy5zbyAke2xpYmRpcn0vbGliZWxmLnNvIgotCi0jIFRoZSBwYWNrYWdlIGNvbnRhaW5zIHN5bWxpbmtzIHRoYXQgdHJpcCB1cCBpbnNhbmUKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliZHcgPSAiZGV2LXNvIgotCi0jIGF2b2lkIHN0cmlwcGluZyBzb21lIGdlbmVyYXRlZCBiaW5hcmllcyBvdGhlcndpc2Ugc29tZSBvZiB0aGUgdGVzdHMgc3VjaCBhcyB0ZXN0LW5saXN0LAotIyBydW4tc3RyaXAtcmVsb2Muc2gsIHJ1bi1zdHJpcC1zdHJtZXJnZS5zaCBhbmQgc28gb24gd2lsbCBmYWlsCi1JTkhJQklUX1BBQ0tBR0VfU1RSSVBfRklMRVMgPSAiXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3Rlc3RzL3Rlc3Qtbmxpc3QgXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3Rlc3RzL2VsZnN0cm1lcmdlIFwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9iYWNrdHJhY2UtY2hpbGQgXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3Rlc3RzL2JhY2t0cmFjZS1kYXRhIFwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9kZWxldGVkIFwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvc3RyaXAgXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9hZGRyMmxpbmUgXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9lbGZjbXAgXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9vYmpkdW1wIFwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvcmVhZGVsZiBcCi0gICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vc3JjL25tIFwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvZWxmbGludCBcCi0gICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vbGliZWxmL2xpYmVsZi5zbyBcCi0gICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vbGliZHcvbGliZHcuc28gXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L2JhY2tlbmRzL2xpYmVibF9pMzg2LnNvIFwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9iYWNrZW5kcy9saWJlYmxfeDg2XzY0LnNvIFwKLSIKLQotUFJJVkFURV9MSUJTXyR7UE59LXB0ZXN0ID0gImxpYmR3LnNvLjEgbGliZWxmLnNvLjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3OS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTc5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkYTk1ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3OS5iYgpAQCAtMCwwICsxLDE1NyBAQAorU1VNTUFSWSA9ICJVdGlsaXRpZXMgYW5kIGxpYnJhcmllcyBmb3IgaGFuZGxpbmcgY29tcGlsZWQgb2JqZWN0IGZpbGVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9lbGZ1dGlscyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjMrICYgR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCitERVBFTkRTID0gInpsaWIgdmlydHVhbC9saWJpbnRsIgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBhcmdwLXN0YW5kYWxvbmUgZnRzIG11c2wtb2JzdGFjayAiCisjIFRoZSBEZWJpYW4gcGF0Y2hlcyBiZWxvdyBhcmUgZnJvbToKKyMgaHR0cDovL2Z0cC5kZS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vZS9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3Ni0xLmRlYmlhbi50YXIueHoKK1NSQ19VUkkgPSAiaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9lbGZ1dGlscy9mdHAvJHtQVn0vJHtCUH0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRzby1saW5rLWNoYW5nZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeC1lbGZfY3Z0X2d1bmhhc2gtaWYtZGVzdC1hbmQtc3JjLWFyZS1zYW1lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtZml4aGVhZGVyY2hlY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1EaXNhYmxlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtRml4LWJ1aWxkLW9uLWFhcmNoNjQtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmFzbS1tYXktbGluay13aXRoLWxpYmJ6Mi1pZi1mb3VuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmVsZi1lbGZfZW5kLmMtY2hlY2stZGF0YV9saXN0LmRhdGEuZC5kX2J1Zi1iZWZvcmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9hcm1fYmFja2VuZC5kaWZmIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9taXBzX2JhY2tlbmQuZGlmZiBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWlwc19yZWFkZWxmX3cucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL2tmcmVlYnNkX3BhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDEtSWdub3JlLWRpZmZlcmVuY2VzLWJldHdlZW4tbWlwcy1tYWNoaW5lLWlkZW50aWZpZXJzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAyLUFkZC1zdXBwb3J0LWZvci1taXBzNjQtYWJpcy1pbi1taXBzX3JldHZhbC5jLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAzLUFkZC1taXBzLW42NC1yZWxvY2F0aW9uLWZvcm1hdC1oYWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9odXJkX3BhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL2lnbm9yZV9zdHJtZXJnZS5kaWZmIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9kaXNhYmxlX3dlcnJvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vdGVzdHN1aXRlLWlnbm9yZS1lbGZsaW50LmRpZmYgXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL21pcHNfY2ZpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAxLWZpeC1jb21waWxlLWZhaWx1cmUtd2l0aC1kZWJpYW4tcGF0Y2hlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNraXAtdGhlLXRlc3Qtd2hlbi1nY2Mtbm90LWRlcGxveWVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcHBjX2luaXRyZWcuYy1JbmNsaXVkZS1hc20tcHRyYWNlLmgtZm9yLXB0X3JlZ3MtZGVmaS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbXVzbC1vYnN0YWNrLWZ0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLW11c2wtbGlicy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLW11c2wtdXRpbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1GaXgtZXJyb3Itb24tbXVzbC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4ZWU1NmIzNzFiNWE3ZWEwODEyODRjNDRlNTE2NDYwMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNWE1NDU1NjZjYmFjYWEzN2FlNjIyMmU1OGYxYzQ4ZWE0NTcwZjUzYmE5OTE4ODZlMmY1Y2U5NmUyMmEyM2EyIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHB0ZXN0IHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS1wcm9ncmFtLXByZWZpeD1ldS0gLS1kaXNhYmxlLWRlYnVnaW5mb2QiCisKK0RFUEVORFNfQlpJUDIgPSAiYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIgorREVQRU5EU19CWklQMl9jbGFzcy10YXJnZXQgPSAiYnppcDIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnpsaWIsLS13aXRob3V0LWJ6bGliLCR7REVQRU5EU19CWklQMn0iCitQQUNLQUdFQ09ORklHW3h6XSA9ICItLXdpdGgtbHptYSwtLXdpdGhvdXQtbHptYSx4eiIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImxpYmFzbSBsaWJlbGYgYmFzaCBtYWtlIGNvcmV1dGlscyAke1BOfS1iaW51dGlscyIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIC0tZGlzYWJsZS10ZXN0cy1ycGF0aCIKKworUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLXV0aWxzIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworCWNkICR7Qn0vdGVzdHMKKwlvZV9ydW5tYWtlIGJ1aWxkdGVzdC1URVNUUyBvZWNoZWNrCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaWYgWyAke1BURVNUX0VOQUJMRUR9ID0gIjEiIF07IHRoZW4KKwkJIyBjb3B5IHRoZSBmaWxlcyB3aGljaCBuZWVkZWQgYnkgdGhlIGNhc2VzCisJCVRFU1RfRklMRVM9InN0cmlwIHN0cmlwLm8gYWRkcjJsaW5lIGVsZmNtcCBvYmpkdW1wIHJlYWRlbGYgc2l6ZS5vIG5tLm8gbm0gZWxmbGludCBlbGZjb21wcmVzcyBlbGZjbGFzc2lmeSBzdGFjayB1bnN0cmlwIgorCQlpbnN0YWxsIC1kIC1tIDc1NSAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCisJCWluc3RhbGwgLWQgLW0gNzU1ICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9saWJlbGYKKwkJaW5zdGFsbCAtZCAtbSA3NTUgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2xpYmR3CisJCWluc3RhbGwgLWQgLW0gNzU1ICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9saWJhc20KKwkJZm9yIHRlc3RfZmlsZSBpbiAke1RFU1RfRklMRVN9OyBkbworCQkJaWYgWyAtZiAke0J9L3NyYy8ke3Rlc3RfZmlsZX0gXTsgdGhlbgorCQkJCWNwIC1yICR7Qn0vc3JjLyR7dGVzdF9maWxlfSAke0R9JHtQVEVTVF9QQVRIfS9zcmMKKwkJCWZpCisJCWRvbmUKKwkJY3AgJHtEfSR7bGliZGlyfS9saWJlbGYtJHtQVn0uc28gJHtEfSR7UFRFU1RfUEFUSH0vbGliZWxmL2xpYmVsZi5zbworCQljcCAke0R9JHtsaWJkaXJ9L2xpYmR3LSR7UFZ9LnNvICR7RH0ke1BURVNUX1BBVEh9L2xpYmR3L2xpYmR3LnNvCisJCWNwICR7RH0ke2xpYmRpcn0vbGliYXNtLSR7UFZ9LnNvICR7RH0ke1BURVNUX1BBVEh9L2xpYmFzbS9saWJhc20uc28KKwkJY3AgLXIgJHtTfS90ZXN0cy8gICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9CisJCWNwIC1yICR7Qn0vdGVzdHMvKiAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworCQljcCAtciAke0J9L2NvbmZpZy5oICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KKwkJY3AgLXIgJHtCfS9iYWNrZW5kcyAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9CisJCXNlZCAtaSAnL15NYWtlZmlsZTovYyBNYWtlZmlsZTonICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQorCQlmaW5kICR7RH0ke1BURVNUX1BBVEh9IC10eXBlIGYgLW5hbWUgKi5baG9jXSB8IHhhcmdzIC1pIHJtIHt9CisJZmkKK30KKworRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICIiCitFWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlc2RrID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCisjIFBhY2thZ2UgdXRpbGl0aWVzIHNlcGFyYXRlbHkKK1BBQ0tBR0VTID0rICIke1BOfS1iaW51dGlscyBsaWJlbGYgbGliYXNtIGxpYmR3IgorCisjIHNoYXJlZCBsaWJyYXJpZXMgYXJlIGxpY2Vuc2VkIEdQTHYyIG9yIEdQTHYzKywgYmluYXJpZXMgR1BMdjMrCisjIGFjY29yZGluZyB0byBORVdTIGZpbGU6CisjICJUaGUgbGljZW5zZSBpcyBub3cgR1BMdjIvTEdQTHYzKyBmb3IgdGhlIGxpYnJhcmllcyBhbmQgR1BMdjMrIGZvciBzdGFuZC1hbG9uZQorIyBwcm9ncmFtcy4gVGhlcmUgaXMgbm93IGFsc28gYSBmb3JtYWwgQ09OVFJJQlVUSU5HIGRvY3VtZW50IGRlc2NyaWJpbmcgaG93IHRvCisjIHN1Ym1pdCBwYXRjaGVzLiIKK0xJQ0VOU0VfJHtQTn0tYmludXRpbHMgPSAiR1BMdjMrIgorTElDRU5TRV8ke1BOfSA9ICJHUEx2MysiCitMSUNFTlNFX2xpYmVsZiA9ICJHUEx2MiB8IExHUEx2MysiCitMSUNFTlNFX2xpYmFzbSA9ICJHUEx2MiB8IExHUEx2MysiCitMSUNFTlNFX2xpYmR3ID0gIkdQTHYyIHwgTEdQTHYzKyIKKworRklMRVNfJHtQTn0tYmludXRpbHMgPSAiXAorICAgICR7YmluZGlyfS9ldS1hZGRyMmxpbmUgXAorICAgICR7YmluZGlyfS9ldS1sZCBcCisgICAgJHtiaW5kaXJ9L2V1LW5tIFwKKyAgICAke2JpbmRpcn0vZXUtcmVhZGVsZiBcCisgICAgJHtiaW5kaXJ9L2V1LXNpemUgXAorICAgICR7YmluZGlyfS9ldS1zdHJpcCIKKworRklMRVNfbGliZWxmID0gIiR7bGliZGlyfS9saWJlbGYtJHtQVn0uc28gJHtsaWJkaXJ9L2xpYmVsZi5zby4qIgorRklMRVNfbGliYXNtID0gIiR7bGliZGlyfS9saWJhc20tJHtQVn0uc28gJHtsaWJkaXJ9L2xpYmFzbS5zby4qIgorRklMRVNfbGliZHcgID0gIiR7bGliZGlyfS9saWJkdy0ke1BWfS5zbyAke2xpYmRpcn0vbGliZHcuc28uKiAke2xpYmRpcn0vZWxmdXRpbHMvbGliKiIKKyMgU29tZSBwYWNrYWdlcyBoYXZlIHRoZSB2ZXJzaW9uIHByZWNlZWRpbmcgdGhlIC5zbyBpbnN0ZWFkIHByb3Blcmx5CisjIHZlcnNpb25lZCAuc28uPHZlcnNpb24+LCBzbyB3ZSBuZWVkIHRvIHJlb3JkZXIgYW5kIHJlcGFja2FnZS4KKyNGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyotJHtQVn0uc28gJHtiYXNlX2xpYmRpcn0vKi0ke1BWfS5zbyIKKyNGSUxFU19TT0xJQlNERVYgPSAiJHtsaWJkaXJ9L2xpYmFzbS5zbyAke2xpYmRpcn0vbGliZHcuc28gJHtsaWJkaXJ9L2xpYmVsZi5zbyIKKworIyBUaGUgcGFja2FnZSBjb250YWlucyBzeW1saW5rcyB0aGF0IHRyaXAgdXAgaW5zYW5lCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmR3ID0gImRldi1zbyIKKworIyBhdm9pZCBzdHJpcHBpbmcgc29tZSBnZW5lcmF0ZWQgYmluYXJpZXMgb3RoZXJ3aXNlIHNvbWUgb2YgdGhlIHRlc3RzIHN1Y2ggYXMgdGVzdC1ubGlzdCwKKyMgcnVuLXN0cmlwLXJlbG9jLnNoLCBydW4tc3RyaXAtc3RybWVyZ2Uuc2ggYW5kIHNvIG9uIHdpbGwgZmFpbAorSU5ISUJJVF9QQUNLQUdFX1NUUklQX0ZJTEVTID0gIlwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS90ZXN0cy90ZXN0LW5saXN0IFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9lbGZzdHJtZXJnZSBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vdGVzdHMvYmFja3RyYWNlLWNoaWxkIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9iYWNrdHJhY2UtZGF0YSBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vdGVzdHMvYmFja3RyYWNlLWR3YXJmIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9kZWxldGVkIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvc3RyaXAgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9hZGRyMmxpbmUgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9lbGZjbXAgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9vYmpkdW1wIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvcmVhZGVsZiBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vc3JjL25tIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvZWxmbGludCBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vc3JjL2VsZmNsYXNzaWZ5IFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvc3RhY2sgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy91bnN0cmlwIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9saWJlbGYvbGliZWxmLnNvIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9saWJkdy9saWJkdy5zbyBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vbGliYXNtL2xpYmFzbS5zbyBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vYmFja2VuZHMvbGliZWJsX2kzODYuc28gXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L2JhY2tlbmRzL2xpYmVibF94ODZfNjQuc28gXAorIgorCitQUklWQVRFX0xJQlNfJHtQTn0tcHRlc3QgPSAibGliZHcuc28uMSBsaWJlbGYuc28uMSBsaWJhc20uc28uMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtZHNvLWxpbmstY2hhbmdlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1kc28tbGluay1jaGFuZ2UucGF0Y2gKaW5kZXggYWY3OWVmNC4uNjIwMzEwNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1kc28tbGluay1jaGFuZ2UucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1kc28tbGluay1jaGFuZ2UucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGI5OWFhMTJjZjg3OWNlMjAwZTAzZDc1ZTU0M2M3YWIyZGZhNTUwM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGVjOWE3NzQyNzM0YWFlNTQxN2MwZWJiZmZjZTY2YWMzNTNlNmNhZTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE3OjEwOjU3ICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIGRzbyBsaW5rIGNoYW5nZQpAQCAtMjMsMTAgKzIzLDEwIEBACiAgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KLWluZGV4IDJiMWMwZGMuLjkzMDViODQgMTAwNjQ0CitpbmRleCBlNDYyZTdkLi5lYTEyMTViIDEwMDY0NAogLS0tIGEvc3JjL01ha2VmaWxlLmFtCiArKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC00NCw3ICs0NCw3IEBAIGxpYmR3ID0gLi4vbGliZHcvbGliZHcuYSAtbHogJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsCitAQCAtNDUsNyArNDUsNyBAQCBsaWJkdyA9IC4uL2xpYmR3L2xpYmR3LmEgLWx6ICQoemlwX0xJQlMpICQobGliZWxmKSAtbGRsIC1scHRocmVhZAogIGxpYmVsZiA9IC4uL2xpYmVsZi9saWJlbGYuYSAtbHoKICBlbHNlCiAgbGliYXNtID0gLi4vbGliYXNtL2xpYmFzbS5zbwpAQCAtMzQsMTIgKzM0LDEyIEBACiArbGliZHcgPSAuLi9saWJkdy9saWJkdy5zbyAkKHppcF9MSUJTKSAkKGxpYmVsZikgJChsaWJlYmwpIC1sZGwKICBsaWJlbGYgPSAuLi9saWJlbGYvbGliZWxmLnNvCiAgZW5kaWYKLSBsaWJlYmwgPSAuLi9saWJlYmwvbGliZWJsLmEKKyBsaWJlYmwgPSAuLi9saWJlYmwvbGliZWJsLmEgLi4vYmFja2VuZHMvbGliZWJsX2JhY2tlbmRzLmEgLi4vbGliY3B1L2xpYmNwdS5hCiBkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggMWIwYzdkMy4uYmNlZDE5YiAxMDA2NDQKK2luZGV4IGVhYjRhZTYuLmY1OWEwMWYgMTAwNjQ0CiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQogKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC00NzYsNyArNDc2LDcgQEAgbGliZHcgPSAuLi9saWJkdy9saWJkdy5hIC1seiAkKHppcF9MSUJTKSAkKGxpYmVsZikgJChsaWJlYmwpIC1sZGwKK0BAIC01MTYsNyArNTE2LDcgQEAgbGliZHcgPSAuLi9saWJkdy9saWJkdy5hIC1seiAkKHppcF9MSUJTKSAkKGxpYmVsZikgJChsaWJlYmwpIC1sZGwgLWxwdGhyZWFkCiAgbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5hIC1segogIGxpYmFzbSA9IC4uL2xpYmFzbS9saWJhc20uYQogIGVsc2UKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtbGliYXNtLW1heS1saW5rLXdpdGgtbGliYnoyLWlmLWZvdW5kLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1saWJhc20tbWF5LWxpbmstd2l0aC1saWJiejItaWYtZm91bmQucGF0Y2gKaW5kZXggMGQ1MzNjOC4uNzNlYWQ2ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1saWJhc20tbWF5LWxpbmstd2l0aC1saWJiejItaWYtZm91bmQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1saWJhc20tbWF5LWxpbmstd2l0aC1saWJiejItaWYtZm91bmQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGQ3YmU2ODdjMzVmYTQyOTU0ODc0MDM0YzgyY2E5MDU5ZDI4MTk2ZmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDhlNWZmZjhiMWQ4MTllMDg3MGZiMjJiMjc5NTBiYjVmMTBjN2EyNzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCA0IE9jdCAyMDE3IDIyOjMwOjQ2IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIGxpYmFzbSBtYXkgbGluayB3aXRoIGxpYmJ6MiBpZiBmb3VuZApAQCAtMTcsMTYgKzE3LDE2IEBACiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQotaW5kZXggOTMwNWI4NC4uOWI3ZTg1MyAxMDA2NDQKK2luZGV4IGVhMTIxNWIuLjEzZDliZGEgMTAwNjQ0CiAtLS0gYS9zcmMvTWFrZWZpbGUuYW0KICsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTM5LDExICszOSwxMSBAQCBFWFRSQV9ESVNUICs9IG1ha2UtZGVidWctYXJjaGl2ZS5pbgorQEAgLTQwLDExICs0MCwxMSBAQCBFWFRSQV9ESVNUICs9IG1ha2UtZGVidWctYXJjaGl2ZS5pbgogIENMRUFORklMRVMgKz0gbWFrZS1kZWJ1Zy1hcmNoaXZlCiAgCiAgaWYgQlVJTERfU1RBVElDCiAtbGliYXNtID0gLi4vbGliYXNtL2xpYmFzbS5hCiArbGliYXNtID0gLi4vbGliYXNtL2xpYmFzbS5hICQoemlwX0xJQlMpCi0gbGliZHcgPSAuLi9saWJkdy9saWJkdy5hIC1seiAkKHppcF9MSUJTKSAkKGxpYmVsZikgJChsaWJlYmwpIC1sZGwKKyBsaWJkdyA9IC4uL2xpYmR3L2xpYmR3LmEgLWx6ICQoemlwX0xJQlMpICQobGliZWxmKSAtbGRsIC1scHRocmVhZAogIGxpYmVsZiA9IC4uL2xpYmVsZi9saWJlbGYuYSAtbHoKICBlbHNlCiAtbGliYXNtID0gLi4vbGliYXNtL2xpYmFzbS5zbwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1tdXNsLW9ic3RhY2stZnRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1tdXNsLW9ic3RhY2stZnRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NTFhMmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLW11c2wtb2JzdGFjay1mdHMucGF0Y2gKQEAgLTAsMCArMSwxMjcgQEAKK0Zyb20gOGNjZjNkOTJiODc2NmI1M2YyMDNkZjdlMDFiNDg5NjA0ZWY4NTFmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMjMgQXVnIDIwMTkgMTA6MTc6MjUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzRdIG11c2wtb2JzdGFjay1mdHMKKworTG9vayBmb3IgbGliZnRzIGFuZCBsaWJvYnN0YWNrIGR1cmluZyBjb25maWd1cmUsIHRoZXNlCitsaWJyYXJpZXMgYXJlIGV4dGVybmFsIHRvIGxpYmMgd2hlbiB1c2luZyBtdXNsLCB3aGVyZWFzCitvbiBnbGliYyB0aGVzZSBsaWJyYXJpZXMgYXJlIHByb3ZpZGVkIGluIGxpYmMgaXRzZWxmLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt3b3JrYXJvdW5kIGZvciBtdXNsXQorCitSZWJhc2UgdG8gMC4xNzcKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKworLS0tCisgY29uZmlndXJlLmFjICAgICAgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGxpYmR3L01ha2VmaWxlLmFtIHwgIDIgKy0KKyBzcmMvTWFrZWZpbGUuYW0gICB8ICA2ICsrKy0tLQorIDMgZmlsZXMgY2hhbmdlZCwgNTggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggY2FkN2IyYi4uNmQ0MjI5YiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNTI5LDYgKzUyOSw2MCBAQCBlbHNlCisgZmkKKyBBQ19TVUJTVChbYXJncF9MREFERF0pCisgCisrZG5sIENoZWNrIGlmIHdlIGhhdmUgZnRzIGF2YWlsYWJsZSBmcm9tIG91ciBsaWJjCisrQUNfTElOS19JRkVMU0UoCisrCVtBQ19MQU5HX1BST0dSQU0oCisrCQlbI2lmICFkZWZpbmVkKF9feDg2XzY0X18pCisrCQkjdW5kZWYgIF9GSUxFX09GRlNFVF9CSVRTCisrCQkjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTIDMyCisrCQkjZW5kaWYKKysJCSNpbmNsdWRlIDxmdHMuaD5dLAorKwkJW0ZUUyogZnRzID0gMDsgcmV0dXJuIGZ0c19jbG9zZShmdHMpOyByZXR1cm4gMDtdCisrCQkpXSwKKysJW2xpYmNfaGFzX2Z0cz0idHJ1ZSJdLAorKwlbbGliY19oYXNfZnRzPSJmYWxzZSJdCisrKQorKworK2RubCBJZiBvdXIgbGliYyBkb2Vzbid0IHByb3ZpZGUgZnRzLCB0aGVuIHRlc3QgZm9yIGxpYmZ0cworK2lmIHRlc3QgIiRsaWJjX2hhc19mdHMiID0gImZhbHNlIiA7IHRoZW4KKysJQUNfTVNHX1dBUk4oImxpYmMgZG9lcyBub3QgaGF2ZSBmdHMiKQorKwlBQ19DSEVDS19MSUIoW2Z0c10sIFtmdHNfY2xvc2VdLCBbaGF2ZV9mdHM9InRydWUiXSwgW2hhdmVfZnRzPSJmYWxzZSJdKQorKworKwlpZiB0ZXN0ICIkaGF2ZV9mdHMiID0gImZhbHNlIjsgdGhlbgorKwkJQUNfTVNHX0VSUk9SKCJubyBsaWJmdHMgZm91bmQiKQorKwllbHNlCisrCQlmdHNfTERBREQ9Ii1sZnRzIgorKwlmaQorK2Vsc2UKKysJZnRzX0xEQUREPSIiCisrZmkKKytBQ19TVUJTVChbZnRzX0xEQUREXSkKKysKKytkbmwgQ2hlY2sgaWYgd2UgaGF2ZSBvYnN0YWNrIGF2YWlsYWJsZSBmcm9tIG91ciBsaWJjCisrQUNfTElOS19JRkVMU0UoCisrCVtBQ19MQU5HX1BST0dSQU0oCisrCQlbI2luY2x1ZGUgPG9ic3RhY2suaD5dLAorKwkJW19vYnN0YWNrX2JlZ2luKDAsIDAsIDAsIE5VTEwsIE5VTEwpOyByZXR1cm4gMDtdCisrCQkpXSwKKysJW2xpYmNfaGFzX29ic3RhY2s9InRydWUiXSwKKysJW2xpYmNfaGFzX29ic3RhY2s9ImZhbHNlIl0KKyspCisrCisrZG5sIElmIG91ciBsaWJjIGRvZXNuJ3QgcHJvdmlkZSBvYnN0YWNrLCB0aGVuIHRlc3QgZm9yIGxpYm9ic3RhY2sKKytpZiB0ZXN0ICIkbGliY19oYXNfb2JzdGFjayIgPSAiZmFsc2UiIDsgdGhlbgorKwlBQ19NU0dfV0FSTigibGliYyBkb2VzIG5vdCBoYXZlIG9ic3RhY2siKQorKwlBQ19DSEVDS19MSUIoW29ic3RhY2tdLCBbX29ic3RhY2tfYmVnaW5dLCBbaGF2ZV9vYnN0YWNrPSJ0cnVlIl0sIFtoYXZlX29ic3RhY2s9ImZhbHNlIl0pCisrCisrCWlmIHRlc3QgIiRoYXZlX29ic3RhY2siID0gImZhbHNlIjsgdGhlbgorKwkJQUNfTVNHX0VSUk9SKCJubyBsaWJvYnN0YWNrIGZvdW5kIikKKysJZWxzZQorKwkJb2JzdGFja19MREFERD0iLWxvYnN0YWNrIgorKwlmaQorK2Vsc2UKKysJb2JzdGFja19MREFERD0iIgorK2ZpCisrQUNfU1VCU1QoW29ic3RhY2tfTERBRERdKQorKworIGRubCBUaGUgZGlyZWN0b3JpZXMgd2l0aCBjb250ZW50LgorIAorIGRubCBEb2N1bWVudGF0aW9uLgorZGlmZiAtLWdpdCBhL2xpYmR3L01ha2VmaWxlLmFtIGIvbGliZHcvTWFrZWZpbGUuYW0KK2luZGV4IDMzYjU4MzguLmZmOTJlMDIgMTAwNjQ0CistLS0gYS9saWJkdy9NYWtlZmlsZS5hbQorKysrIGIvbGliZHcvTWFrZWZpbGUuYW0KK0BAIC0xMDksNyArMTA5LDcgQEAgbGliZHdfc29fTElCUyA9IC4uL2xpYmVibC9saWJlYmxfcGljLmEgLi4vYmFja2VuZHMvbGliZWJsX2JhY2tlbmRzX3BpYy5hIFwKKyAJCS4uL2xpYmNwdS9saWJjcHVfcGljLmEgbGliZHdfcGljLmEgLi4vbGliZHdlbGYvbGliZHdlbGZfcGljLmEgXAorIAkJLi4vbGliZHdmbC9saWJkd2ZsX3BpYy5hCisgbGliZHdfc29fREVQUyA9IC4uL2xpYi9saWJldS5hIC4uL2xpYmVsZi9saWJlbGYuc28KKy1saWJkd19zb19MRExJQlMgPSAkKGxpYmR3X3NvX0RFUFMpIC1sZGwgLWx6ICQoYXJncF9MREFERCkgJCh6aXBfTElCUykgLXB0aHJlYWQKKytsaWJkd19zb19MRExJQlMgPSAkKGxpYmR3X3NvX0RFUFMpIC1sZGwgLWx6ICQoYXJncF9MREFERCkgJChmdHNfTERBREQpICQoemlwX0xJQlMpIC1wdGhyZWFkCisgbGliZHdfc29fU09VUkNFUyA9CisgbGliZHcuc28kKEVYRUVYVCk6ICQoc3JjZGlyKS9saWJkdy5tYXAgJChsaWJkd19zb19MSUJTKSAkKGxpYmR3X3NvX0RFUFMpCisgCSQoQU1fVl9DQ0xEKSQoTElOSykgJChkc29fTERGTEFHUykgLW8gJEAgXAorZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggMTNkOWJkYS4uZDVhNGY3ZCAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtNjksNyArNjksNyBAQCBhcl9ub19Xc3RhY2tfdXNhZ2UgPSB5ZXMKKyB1bnN0cmlwX25vX1dzdGFja191c2FnZSA9IHllcworIAorIHJlYWRlbGZfTERBREQgPSAkKGxpYmR3KSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKKy1ubV9MREFERCA9ICQobGliZHcpICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKSBcCisrbm1fTERBREQgPSAkKGxpYmR3KSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkgJChvYnN0YWNrX0xEQUREKSBcCisgCSAgICQoZGVtYW5nbGVsaWIpCisgc2l6ZV9MREFERCA9ICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpCisgc3RyaXBfTERBREQgPSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZHcpICQobGliZXUpICQoYXJncF9MREFERCkKK0BAIC03OCw5ICs3OCw5IEBAIGZpbmR0ZXh0cmVsX0xEQUREID0gJChsaWJkdykgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKKyBhZGRyMmxpbmVfTERBREQgPSAkKGxpYmR3KSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKSAkKGRlbWFuZ2xlbGliKQorIGVsZmNtcF9MREFERCA9ICQobGliZWJsKSAkKGxpYmR3KSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKQorIG9iamR1bXBfTERBREQgID0gJChsaWJhc20pICQobGliZWJsKSAkKGxpYmR3KSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKQorLXJhbmxpYl9MREFERCA9IGxpYmFyLmEgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKKytyYW5saWJfTERBREQgPSBsaWJhci5hICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpICQob2JzdGFja19MREFERCkKKyBzdHJpbmdzX0xEQUREID0gJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKKy1hcl9MREFERCA9IGxpYmFyLmEgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKKythcl9MREFERCA9IGxpYmFyLmEgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkgJChvYnN0YWNrX0xEQUREKQorIHVuc3RyaXBfTERBREQgPSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZHcpICQobGliZXUpICQoYXJncF9MREFERCkKKyBzdGFja19MREFERCA9ICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJkdykgJChsaWJldSkgJChhcmdwX0xEQUREKSAkKGRlbWFuZ2xlbGliKQorIGVsZmNvbXByZXNzX0xEQUREID0gJChsaWJlYmwpICQobGliZWxmKSAkKGxpYmR3KSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAyLW11c2wtbGlicy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDItbXVzbC1saWJzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMTQ2ODMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAyLW11c2wtbGlicy5wYXRjaApAQCAtMCwwICsxLDE0NSBAQAorRnJvbSBlYTkwOGM3MDA5ZGU1YTIwODM4M2FiZjRiZWM0YzZiM2Q5NTE5Y2EzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyMyBBdWcgMjAxOSAxMDoxODo0NyArMDgwMAorU3ViamVjdDogW1BBVENIIDIvNF0gbXVzbC1saWJzCisKK0NvbGxlY3Rpb24gb2YgZml4ZXMgbmVlZGVkIHRvIGNvbXBpbGUgbGliZWxmIGFuZCBvdGhlciBsaWJyYXJpZXMKK3Byb3ZpZGVkIGJ5IGVsZnV0aWxzIGZvciBtdXNsIHRhcmdldHMKKworZXJyb3IgaXMgZ2xpYmMgc3BlY2lmaWMgQVBJLCBzbyB0aGlzIHBhdGNoIHdpbGwgbW9zdGx5IG5vdCBhY2NlcHRlZAordXBzdHJlYW0gZ2l2ZW4gdGhhdCBlbGZ1dGlscyBoYXMgYmVlbiBjbG9zZWx5IHRpZWQgdG8gZ2xpYmMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbd29ya2Fyb3VuZCBmb3IgbXVzbF0KKworUmViYXNlIHRvIDAuMTc3CitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKKy0tLQorIGxpYi9lcnJvci5oICAgICAgICAgICAgICAgICAgICB8IDI3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKworIGxpYi9maXhlZHNpemVoYXNoLmggICAgICAgICAgICB8ICAxIC0KKyBsaWIvbGliZXUuaCAgICAgICAgICAgICAgICAgICAgfCAgMSArCisgbGliZHdmbC9kd2ZsX2Vycm9yLmMgICAgICAgICAgIHwgIDkgKysrKysrKysrCisgbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jIHwgIDEgKworIGxpYmVsZi9lbGYuaCAgICAgICAgICAgICAgICAgICB8ICA5ICsrKysrKy0tLQorIDYgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2Vycm9yLmgKKworZGlmZiAtLWdpdCBhL2xpYi9lcnJvci5oIGIvbGliL2Vycm9yLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5lZjA2ODI3CistLS0gL2Rldi9udWxsCisrKysgYi9saWIvZXJyb3IuaAorQEAgLTAsMCArMSwyNyBAQAorKyNpZm5kZWYgX0VSUk9SX0hfCisrI2RlZmluZSBfRVJST1JfSF8KKysKKysjaW5jbHVkZSA8c3RkYXJnLmg+CisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8ZXJybm8uaD4KKysKKytzdGF0aWMgdW5zaWduZWQgaW50IGVycm9yX21lc3NhZ2VfY291bnQgPSAwOworKworK3N0YXRpYyBpbmxpbmUgdm9pZCBlcnJvcihpbnQgc3RhdHVzLCBpbnQgZXJybnVtLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKKyt7CisrCXZhX2xpc3QgYXA7CisrCWZwcmludGYoc3RkZXJyLCAiJXM6ICIsIHByb2dyYW1faW52b2NhdGlvbl9uYW1lKTsKKysJdmFfc3RhcnQoYXAsIGZvcm1hdCk7CisrCXZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcCk7CisrCXZhX2VuZChhcCk7CisrCWlmIChlcnJudW0pCisrCQlmcHJpbnRmKHN0ZGVyciwgIjogJXMiLCBzdHJlcnJvcihlcnJudW0pKTsKKysJZnByaW50ZihzdGRlcnIsICJcbiIpOworKwllcnJvcl9tZXNzYWdlX2NvdW50Kys7CisrCWlmIChzdGF0dXMpCisrCQlleGl0KHN0YXR1cyk7CisrfQorKworKyNlbmRpZgkvKiBfRVJST1JfSF8gKi8KK2RpZmYgLS1naXQgYS9saWIvZml4ZWRzaXplaGFzaC5oIGIvbGliL2ZpeGVkc2l6ZWhhc2guaAoraW5kZXggZGFjMmE1Zi4uNDMwMTZmYyAxMDA2NDQKKy0tLSBhL2xpYi9maXhlZHNpemVoYXNoLmgKKysrKyBiL2xpYi9maXhlZHNpemVoYXNoLmgKK0BAIC0zMCw3ICszMCw2IEBACisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+CisgCisgI2luY2x1ZGUgPHN5c3RlbS5oPgorIAorZGlmZiAtLWdpdCBhL2xpYi9saWJldS5oIGIvbGliL2xpYmV1LmgKK2luZGV4IGVjYjRkMDEuLmVkYzg1ZTMgMTAwNjQ0CistLS0gYS9saWIvbGliZXUuaAorKysrIGIvbGliL2xpYmV1LmgKK0BAIC0yOSw2ICsyOSw3IEBACisgI2lmbmRlZiBMSUJFVV9ICisgI2RlZmluZSBMSUJFVV9ICisgCisrI2luY2x1ZGUgInN5c3RlbS5oIgorICNpbmNsdWRlIDxzdGRkZWYuaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgCitkaWZmIC0tZ2l0IGEvbGliZHdmbC9kd2ZsX2Vycm9yLmMgYi9saWJkd2ZsL2R3ZmxfZXJyb3IuYworaW5kZXggN2JjZjYxYy4uMTFkY2M4YiAxMDA2NDQKKy0tLSBhL2xpYmR3ZmwvZHdmbF9lcnJvci5jCisrKysgYi9saWJkd2ZsL2R3ZmxfZXJyb3IuYworQEAgLTE1NCw3ICsxNTQsMTYgQEAgZHdmbF9lcnJtc2cgKGludCBlcnJvcikKKyAgIHN3aXRjaCAoZXJyb3IgJn4gMHhmZmZmKQorICAgICB7CisgICAgIGNhc2UgT1RIRVJfRVJST1IgKEVSUk5PKToKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgICAgICAgcmV0dXJuIHN0cmVycm9yX3IgKGVycm9yICYgMHhmZmZmLCAiYmFkIiwgMCk7CisrI2Vsc2UKKysgICAgICB7CisrICAgICAgICBzdGF0aWMgX190aHJlYWQgY2hhciBidWZbMTI4XSA9ICIiOworKyAgICAgICAgaWYgKHN0cmVycm9yX3IgKGVycm9yICYgMHhmZmZmLCBidWYsIHNpemVvZihidWYpKSA9PSAwKQorKyAgICAgICAgICByZXR1cm4gYnVmOworKyAgICAgIH0KKysgICAgICByZXR1cm4gInN0cmVycm9yX3IoKSBmYWlsZWQiOworKyNlbmRpZgorICAgICBjYXNlIE9USEVSX0VSUk9SIChMSUJFTEYpOgorICAgICAgIHJldHVybiBlbGZfZXJybXNnIChlcnJvciAmIDB4ZmZmZik7CisgICAgIGNhc2UgT1RIRVJfRVJST1IgKExJQkRXKToKK2RpZmYgLS1naXQgYS9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMgYi9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKK2luZGV4IGQ0NmFiNWEuLjFjM2ZhZWUgMTAwNjQ0CistLS0gYS9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKKysrKyBiL2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYworQEAgLTUwLDYgKzUwLDcgQEAKKyAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgInN5c3RlbS5oIgorIAorIC8qIElmIGZ0cy5oIGlzIGluY2x1ZGVkIGJlZm9yZSBjb25maWcuaCwgaXRzIGluZGlyZWN0IGluY2x1c2lvbnMgbWF5IG5vdAorICAgIGdpdmUgdXMgdGhlIHJpZ2h0IExGUyBhbGlhc2VzIG9mIHRoZXNlIGZ1bmN0aW9ucywgc28gbWFwIHRoZW0gbWFudWFsbHkuICAqLworZGlmZiAtLWdpdCBhL2xpYmVsZi9lbGYuaCBiL2xpYmVsZi9lbGYuaAoraW5kZXggYmVkMjczZC4uYmUyMjhlNiAxMDA2NDQKKy0tLSBhL2xpYmVsZi9lbGYuaAorKysrIGIvbGliZWxmL2VsZi5oCitAQCAtMjEsNyArMjEsOSBAQAorIAorICNpbmNsdWRlIDxmZWF0dXJlcy5oPgorIAorLV9fQkVHSU5fREVDTFMKKysjaWZkZWYgX19jcGx1c3BsdXMKKytleHRlcm4gIkMiIHsKKysjZW5kaWYKKyAKKyAvKiBTdGFuZGFyZCBFTEYgdHlwZXMuICAqLworIAorQEAgLTQwMjksNiArNDAzMSw3IEBAIGVudW0KKyAjZGVmaW5lIFJfTkRTMzJfVExTX1RQT0ZGCTEwMgorICNkZWZpbmUgUl9ORFMzMl9UTFNfREVTQwkxMTkKKyAKKy1fX0VORF9ERUNMUworLQorKyNpZmRlZiBfX2NwbHVzcGx1cworK30KKysjZW5kaWYKKyAjZW5kaWYJLyogZWxmLmggKi8KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDMtbXVzbC11dGlscy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDMtbXVzbC11dGlscy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWM5ZDlhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMy1tdXNsLXV0aWxzLnBhdGNoCkBAIC0wLDAgKzEsMTY2IEBACitGcm9tIDk0MDI4YjE2ZTU2YzhlZWYxYWEwMmRjYzRkYTI2OGEwZTQ3MWI0ZWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDIzIEF1ZyAyMDE5IDEwOjE5OjQ4ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMy80XSBtdXNsLXV0aWxzCisKK1Byb3ZpZGUgbWlzc2luZyBkZWZpbmVzIHdoaWNoIG90aGVyd2lzZSBhcmUgYXZhaWxhYmxlIG9uIGdsaWJjIHN5c3RlbSBoZWFkZXJzCisKK0FsdGVyIHRoZSBlcnJvciBBUEkgdG8gbWF0Y2ggcG9zaXggdmVyc2lvbgordXNlIHFzb3J0IGluc3RlYWQgb2YgcXNvcnRfciB3aGljaCBpcyBnbGliYyBzcGVjaWZpYyBBUEkKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbd29ya2Fyb3VuZCBmb3IgbXVzbF0KKworUmViYXNlIHRvIDAuMTc3CitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKKy0tLQorIHNyYy9hcmxpYi5oICAgICAgIHwgIDYgKysrKysrCisgc3JjL2VsZmNvbXByZXNzLmMgfCAgNyArKysrKysrCisgc3JjL3JlYWRlbGYuYyAgICAgfCAyMCArKysrKysrKysrKystLS0tLS0tLQorIHNyYy9zdHJpcC5jICAgICAgIHwgIDcgKysrKysrKworIHNyYy91bnN0cmlwLmMgICAgIHwgIDkgKysrKysrKysrCisgNSBmaWxlcyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2FybGliLmggYi9zcmMvYXJsaWIuaAoraW5kZXggZTExNzE2Ni4uODMyNmY2YyAxMDA2NDQKKy0tLSBhL3NyYy9hcmxpYi5oCisrKysgYi9zcmMvYXJsaWIuaAorQEAgLTI5LDYgKzI5LDEyIEBACisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAKKysjaWYgIWRlZmluZWQoQUxMUEVSTVMpCisrIyBkZWZpbmUgQUxMUEVSTVMgKFNfSVNVSUR8U19JU0dJRHxTX0lTVlRYfFNfSVJXWFV8U19JUldYR3xTX0lSV1hPKSAvKiAwNzc3NyAqLworKyNlbmRpZgorKyNpZiAhZGVmaW5lZChERUZGSUxFTU9ERSkKKysjIGRlZmluZSBERUZGSUxFTU9ERSAoU19JUlVTUnxTX0lXVVNSfFNfSVJHUlB8U19JV0dSUHxTX0lST1RIfFNfSVdPVEgpLyogMDY2NiovCisrI2VuZGlmCisgCisgLyogU3RhdGUgb2YgLUQvLVUgZmxhZ3MuICAqLworIGV4dGVybiBib29sIGFybGliX2RldGVybWluaXN0aWNfb3V0cHV0OworZGlmZiAtLWdpdCBhL3NyYy9lbGZjb21wcmVzcy5jIGIvc3JjL2VsZmNvbXByZXNzLmMKK2luZGV4IDZiYTZhZjQuLjBjNzY3NGIgMTAwNjQ0CistLS0gYS9zcmMvZWxmY29tcHJlc3MuYworKysrIGIvc3JjL2VsZmNvbXByZXNzLmMKK0BAIC0zNyw2ICszNywxMyBAQAorICNpbmNsdWRlICJsaWJldS5oIgorICNpbmNsdWRlICJwcmludHZlcnNpb24uaCIKKyAKKysjaWYgIWRlZmluZWQoQUxMUEVSTVMpCisrIyBkZWZpbmUgQUxMUEVSTVMgKFNfSVNVSUR8U19JU0dJRHxTX0lTVlRYfFNfSVJXWFV8U19JUldYR3xTX0lSV1hPKSAvKiAwNzc3NyAqLworKyNlbmRpZgorKyNpZiAhZGVmaW5lZChGTk1fRVhUTUFUQ0gpCisrIyBkZWZpbmUgRk5NX0VYVE1BVENIICgwKQorKyNlbmRpZgorKworIC8qIE5hbWUgYW5kIHZlcnNpb24gb2YgcHJvZ3JhbS4gICovCisgQVJHUF9QUk9HUkFNX1ZFUlNJT05fSE9PS19ERUYgPSBwcmludF92ZXJzaW9uOworIAorZGlmZiAtLWdpdCBhL3NyYy9yZWFkZWxmLmMgYi9zcmMvcmVhZGVsZi5jCitpbmRleCA1OTk0NjE1Li5mM2NjMDcxIDEwMDY0NAorLS0tIGEvc3JjL3JlYWRlbGYuYworKysrIGIvc3JjL3JlYWRlbGYuYworQEAgLTQ4MjksMTAgKzQ4MjksMTEgQEAgbGlzdHB0cl9iYXNlIChzdHJ1Y3QgbGlzdHB0ciAqcCkKKyAgIHJldHVybiBjdWRpZV9iYXNlICgmY3UpOworIH0KKyAKKytzdGF0aWMgY29uc3QgY2hhciAqbGlzdHB0cl9uYW1lOworKworIHN0YXRpYyBpbnQKKy1jb21wYXJlX2xpc3RwdHIgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIHZvaWQgKmFyZykKKytjb21wYXJlX2xpc3RwdHIgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCisgeworLSAgY29uc3QgY2hhciAqbmFtZSA9IGFyZzsKKyAgIHN0cnVjdCBsaXN0cHRyICpwMSA9ICh2b2lkICopIGE7CisgICBzdHJ1Y3QgbGlzdHB0ciAqcDIgPSAodm9pZCAqKSBiOworIAorQEAgLTQ4NDgsMjEgKzQ4NDksMjEgQEAgY29tcGFyZV9saXN0cHRyIChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCB2b2lkICphcmcpCisgCSAgcDEtPndhcm5lZCA9IHAyLT53YXJuZWQgPSB0cnVlOworIAkgIGVycm9yICgwLCAwLAorIAkJIGdldHRleHQgKCIlcyAlIyIgUFJJeDY0ICIgdXNlZCB3aXRoIGRpZmZlcmVudCBhZGRyZXNzIHNpemVzIiksCistCQkgbmFtZSwgKHVpbnQ2NF90KSBwMS0+b2Zmc2V0KTsKKysJCSBsaXN0cHRyX25hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCk7CisgCX0KKyAgICAgICBpZiAocDEtPmR3YXJmNjQgIT0gcDItPmR3YXJmNjQpCisgCXsKKyAJICBwMS0+d2FybmVkID0gcDItPndhcm5lZCA9IHRydWU7CisgCSAgZXJyb3IgKDAsIDAsCisgCQkgZ2V0dGV4dCAoIiVzICUjIiBQUkl4NjQgIiB1c2VkIHdpdGggZGlmZmVyZW50IG9mZnNldCBzaXplcyIpLAorLQkJIG5hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCk7CisrCQkgbGlzdHB0cl9uYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQpOworIAl9CisgICAgICAgaWYgKGxpc3RwdHJfYmFzZSAocDEpICE9IGxpc3RwdHJfYmFzZSAocDIpKQorIAl7CisgCSAgcDEtPndhcm5lZCA9IHAyLT53YXJuZWQgPSB0cnVlOworIAkgIGVycm9yICgwLCAwLAorIAkJIGdldHRleHQgKCIlcyAlIyIgUFJJeDY0ICIgdXNlZCB3aXRoIGRpZmZlcmVudCBiYXNlIGFkZHJlc3NlcyIpLAorLQkJIG5hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCk7CisrCQkgbGlzdHB0cl9uYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQpOworIAl9CisgICAgICAgaWYgKHAxLT5hdHRyICE9IHAyIC0+YXR0cikKKyAJeworQEAgLTQ4NzAsNyArNDg3MSw3IEBAIGNvbXBhcmVfbGlzdHB0ciAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgdm9pZCAqYXJnKQorIAkgIGVycm9yICgwLCAwLAorIAkJIGdldHRleHQgKCIlcyAlIyIgUFJJeDY0CisgCQkJICAiIHVzZWQgd2l0aCBkaWZmZXJlbnQgYXR0cmlidXRlICVzIGFuZCAlcyIpLAorLQkJIG5hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCwgZHdhcmZfYXR0cl9uYW1lIChwMi0+YXR0ciksCisrCQkgbGlzdHB0cl9uYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQsIGR3YXJmX2F0dHJfbmFtZSAocDItPmF0dHIpLAorIAkJIGR3YXJmX2F0dHJfbmFtZSAocDItPmF0dHIpKTsKKyAJfQorICAgICB9CitAQCAtNDk0Miw4ICs0OTQzLDExIEBAIHN0YXRpYyB2b2lkCisgc29ydF9saXN0cHRyIChzdHJ1Y3QgbGlzdHB0cl90YWJsZSAqdGFibGUsIGNvbnN0IGNoYXIgKm5hbWUpCisgeworICAgaWYgKHRhYmxlLT5uID4gMCkKKy0gICAgcXNvcnRfciAodGFibGUtPnRhYmxlLCB0YWJsZS0+biwgc2l6ZW9mIHRhYmxlLT50YWJsZVswXSwKKy0JICAgICAmY29tcGFyZV9saXN0cHRyLCAodm9pZCAqKSBuYW1lKTsKKysgICAgeworKyAgICAgIGxpc3RwdHJfbmFtZSA9IG5hbWU7CisrICAgICAgcXNvcnQgKHRhYmxlLT50YWJsZSwgdGFibGUtPm4sIHNpemVvZiB0YWJsZS0+dGFibGVbMF0sCisrCSAgICAmY29tcGFyZV9saXN0cHRyKTsKKysgICAgfQorIH0KKyAKKyBzdGF0aWMgYm9vbAorZGlmZiAtLWdpdCBhL3NyYy9zdHJpcC5jIGIvc3JjL3N0cmlwLmMKK2luZGV4IDQwNTRjMmEuLmQyZDIxNzYgMTAwNjQ0CistLS0gYS9zcmMvc3RyaXAuYworKysrIGIvc3JjL3N0cmlwLmMKK0BAIC00Niw2ICs0NiwxMyBAQAorICNpbmNsdWRlIDxzeXN0ZW0uaD4KKyAjaW5jbHVkZSA8cHJpbnR2ZXJzaW9uLmg+CisgCisrI2lmICFkZWZpbmVkKEFDQ0VTU1BFUk1TKQorKyMgZGVmaW5lIEFDQ0VTU1BFUk1TIChTX0lSV1hVfFNfSVJXWEd8U19JUldYTykgLyogMDc3NyAqLworKyNlbmRpZgorKyNpZiAhZGVmaW5lZChGTk1fRVhUTUFUQ0gpCisrIyBkZWZpbmUgRk5NX0VYVE1BVENIICgwKQorKyNlbmRpZgorKworIHR5cGVkZWYgdWludDhfdCBHRWxmX0J5dGU7CisgCisgLyogTmFtZSBhbmQgdmVyc2lvbiBvZiBwcm9ncmFtLiAgKi8KK2RpZmYgLS1naXQgYS9zcmMvdW5zdHJpcC5jIGIvc3JjL3Vuc3RyaXAuYworaW5kZXggOWI4YzA5YS4uMWZiNTA2MyAxMDA2NDQKKy0tLSBhL3NyYy91bnN0cmlwLmMKKysrKyBiL3NyYy91bnN0cmlwLmMKK0BAIC01Niw2ICs1NiwxNSBAQAorICMgZGVmaW5lIF8oc3RyKSBnZXR0ZXh0IChzdHIpCisgI2VuZGlmCisgCisrI2lmbmRlZiBzdHJuZHVwYQorKyNkZWZpbmUgc3RybmR1cGEocywgbikgXAorKyAgICAgICAoe2NvbnN0IGNoYXIgKl9faW4gPSAocyk7IFwKKysgICAgICAgICBzaXplX3QgX19sZW4gPSBzdHJubGVuIChfX2luLCAobikpICsgMTsgXAorKyAgICAgICAgIGNoYXIgKl9fb3V0ID0gKGNoYXIgKikgYWxsb2NhIChfX2xlbik7IFwKKysgICAgICAgICBfX291dFtfX2xlbi0xXSA9ICdcMCc7IFwKKysgICAgICAgICAoY2hhciAqKSBtZW1jcHkgKF9fb3V0LCBfX2luLCBfX2xlbi0xKTt9KQorKyNlbmRpZgorKworIC8qIE5hbWUgYW5kIHZlcnNpb24gb2YgcHJvZ3JhbS4gICovCisgQVJHUF9QUk9HUkFNX1ZFUlNJT05fSE9PS19ERUYgPSBwcmludF92ZXJzaW9uOworIAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNC1GaXgtZXJyb3Itb24tbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDQtRml4LWVycm9yLW9uLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIyZjllZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDQtRml4LWVycm9yLW9uLW11c2wucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSA3ZmY4Y2JlY2RlNzQ1NWI1MzBmYTc4OTRhNzhkMjMyNjc5OWYyNTU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitEYXRlOiBXZWQsIDEgTWF5IDIwMTkgMjI6MTU6MDMgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCA0LzRdIEZpeCBlcnJvciBvbiBtdXNsOgorCit8IC4uLy4uL2VsZnV0aWxzLTAuMTc2L3Rlc3RzL2VsZnN0cm1lcmdlLmM6IEluIGZ1bmN0aW9uICdtYWluJzoKK3wgLi4vLi4vZWxmdXRpbHMtMC4xNzYvdGVzdHMvZWxmc3RybWVyZ2UuYzozNzA6NjA6IGVycm9yOiAnQUxMUEVSTVMnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKTsgZGlkIHlvdSBtZWFuICdFUEVSTSc/Cit8ICAgICAgICBmZG5ldyA9IG9wZW4gKGZuZXcsIE9fV1JPTkxZIHwgT19DUkVBVCwgc3Quc3RfbW9kZSAmIEFMTFBFUk1TKTsKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn4KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVBFUk0KK3wgLi4vLi4vZWxmdXRpbHMtMC4xNzYvdGVzdHMvZWxmc3RybWVyZ2UuYzozNzA6NjA6IG5vdGU6IGVhY2ggdW5kZWNsYXJlZCBpZGVudGlmaWVyIGlzIHJlcG9ydGVkIG9ubHkgb25jZSBmb3IgZWFjaCBmdW5jdGlvbiBpdCBhcHBlYXJzIGluCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbd29ya2Fyb3VuZCBpbiBtdXNsXQorCitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KKworLS0tCisgdGVzdHMvZWxmc3RybWVyZ2UuYyB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS90ZXN0cy9lbGZzdHJtZXJnZS5jIGIvdGVzdHMvZWxmc3RybWVyZ2UuYworaW5kZXggYmEwZDY4ZC4uMWQyNDQ3ZiAxMDA2NDQKKy0tLSBhL3Rlc3RzL2VsZnN0cm1lcmdlLmMKKysrKyBiL3Rlc3RzL2VsZnN0cm1lcmdlLmMKK0BAIC0zMyw2ICszMywxMSBAQAorICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2VsZikKKyAjaW5jbHVkZSAiZWxmLWtub3dsZWRnZS5oIgorIAorKy8qIGZvciBtdXNsICovCisrI2lmbmRlZiBBTExQRVJNUworKyMgZGVmaW5lIEFMTFBFUk1TIChTX0lTVUlEfFNfSVNHSUR8U19JU1ZUWHxTX0lSV1hVfFNfSVJXWEd8U19JUldYTykvKiAwNzc3NyAqLworKyNlbmRpZgorKworIC8qIFRoZSBvcmlnaW5hbCBFTEYgZmlsZS4gICovCisgc3RhdGljIGludCBmZCA9IC0xOworIHN0YXRpYyBFbGYgKmVsZiA9IE5VTEw7CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA3LUZpeC1jb250cm9sLXBhdGgtd2hlcmUtd2UtaGF2ZS1zdHItYXMtdW5pbml0aWFsaXplZC0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA3LUZpeC1jb250cm9sLXBhdGgtd2hlcmUtd2UtaGF2ZS1zdHItYXMtdW5pbml0aWFsaXplZC0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxMWEyNGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNy1GaXgtY29udHJvbC1wYXRoLXdoZXJlLXdlLWhhdmUtc3RyLWFzLXVuaW5pdGlhbGl6ZWQtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSAxMTJkMTY0NWJhYjc5MjJjNzc5NmZlMzJkZGVhOGZhNmUxYmJkZWQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAyOSBKdW4gMjAxOCAxNToxNDoyOCArMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggY29udHJvbCBwYXRoIHdoZXJlIHdlIGhhdmUgc3RyIGFzIHVuaW5pdGlhbGl6ZWQgc3RyaW5nCi0KLXwKLS9ob21lL3VidW50dS93b3JrL29lL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1tdXNsL3dvcmsvaTU4Ni1vZS1saW51eC1tdXNsL2VsZnV0aWxzLzAuMTY0LXIwL2VsZnV0aWxzLTAuMTY0L2xpYmNwdS9pMzg2X2Rpc2FzbS5jOgotSW4gZnVuY3Rpb24gJ2kzODZfZGlzYXNtJzoKLXwKLS9ob21lL3VidW50dS93b3JrL29lL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1tdXNsL3dvcmsvaTU4Ni1vZS1saW51eC1tdXNsL2VsZnV0aWxzLzAuMTY0LXIwL2VsZnV0aWxzLTAuMTY0L2xpYmNwdS9pMzg2X2Rpc2FzbS5jOjMxMDo1OgotZXJyb3I6ICdzdHInIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbgotWy1XZXJyb3I9bWF5YmUtdW5pbml0aWFsaXplZF0KLXwgICAgICBtZW1jcHkgKGJ1ZiArIGJ1ZmNudCwgX3N0ciwgX2xlbik7ICAgICAgICAgICBcCi18ICAgICAgXgotfAotL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvd29yay9pNTg2LW9lLWxpbnV4LW11c2wvZWxmdXRpbHMvMC4xNjQtcjAvZWxmdXRpbHMtMC4xNjQvbGliY3B1L2kzODZfZGlzYXNtLmM6NzA5OjE3Ogotbm90ZTogJ3N0cicgd2FzIGRlY2xhcmVkIGhlcmUKLXwgICAgICBjb25zdCBjaGFyICpzdHI7Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotUmViYXNlIHRvIDAuMTcyCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLQotLS0tCi0gbGliY3B1L2kzODZfZGlzYXNtLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X2Rpc2FzbS5jIGIvbGliY3B1L2kzODZfZGlzYXNtLmMKLWluZGV4IGE3ZTAzZjkuLjgzN2EzYTggMTAwNjQ0Ci0tLS0gYS9saWJjcHUvaTM4Nl9kaXNhc20uYwotKysrIGIvbGliY3B1L2kzODZfZGlzYXNtLmMKLUBAIC04MjEsNiArODIxLDcgQEAgaTM4Nl9kaXNhc20gKEVibCAqZWJsIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLAotIAkJCSAgICB9Ci0gCQkJICBGQUxMVEhST1VHSDsKLSAJCQlkZWZhdWx0OgotKwkJCSAgc3RyID0gIiI7Ci0gCQkJICBhc3NlcnQgKCEgIklOVkFMSUQgbm90IGhhbmRsZWQiKTsKLSAJCQl9Ci0gCQkgICAgfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmCmluZGV4IDQ0NjBkNTguLjUzZmEyZjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vaHBwYV9iYWNrZW5kLmRpZmYKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDhlZmFkOTEwNWIzODk4NWJlYTM3MzQxNmFlOGZjYWNmMjFkMWQxMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGZmYjgxMWUxOGQ3MDQ2ZDViYmU1NGVkZTViMWI3ZTE0ZWFhYzAxNDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBXZWQsIDIxIEF1ZyAyMDE5IDE1OjQ0OjE4ICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIGhwcGEgYmFja2VuZApAQCAtNiwxNSArNiwxNiBAQAogUmViYXNlIHRvIDAuMTc3CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2Zyb20gZGViaWFuXQogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBiYWNrZW5kcy9NYWtlZmlsZS5hbSAgICAgIHwgICA3ICstCiAgYmFja2VuZHMvbGliZWJsX3BhcmlzYy5oICB8ICAgOSArKwotIGJhY2tlbmRzL3BhcmlzY19pbml0LmMgICAgfCAgNzMgKysrKysrKysrKysrKysrKwotIGJhY2tlbmRzL3BhcmlzY19yZWdzLmMgICAgfCAxNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGJhY2tlbmRzL3BhcmlzY19yZWxvYy5kZWYgfCAxMjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGJhY2tlbmRzL3BhcmlzY19yZXR2YWwuYyAgfCAyMTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGJhY2tlbmRzL3BhcmlzY19zeW1ib2wuYyAgfCAxMTMgKysrKysrKysrKysrKysrKysrKysrKysrCi0gbGliZWxmL2VsZi5oICAgICAgICAgICAgICB8ICAxMSArKysKKyBiYWNrZW5kcy9wYXJpc2NfaW5pdC5jICAgIHwgIDczICsrKysrKysrKysrKysKKyBiYWNrZW5kcy9wYXJpc2NfcmVncy5jICAgIHwgMTU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBiYWNrZW5kcy9wYXJpc2NfcmVsb2MuZGVmIHwgMTI4ICsrKysrKysrKysrKysrKysrKysrKysrCisgYmFja2VuZHMvcGFyaXNjX3JldHZhbC5jICB8IDIxMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGJhY2tlbmRzL3BhcmlzY19zeW1ib2wuYyAgfCAxMTMgKysrKysrKysrKysrKysrKysrKysKKyBsaWJlbGYvZWxmLmggICAgICAgICAgICAgIHwgIDExICsrCiAgOCBmaWxlcyBjaGFuZ2VkLCA3MTEgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKICBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvbGliZWJsX3BhcmlzYy5oCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL3BhcmlzY19pbml0LmMKQEAgLTI0LDMxICsyNSwzMCBAQAogIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9wYXJpc2Nfc3ltYm9sLmMKIAogZGlmZiAtLWdpdCBhL2JhY2tlbmRzL01ha2VmaWxlLmFtIGIvYmFja2VuZHMvTWFrZWZpbGUuYW0KLWluZGV4IDE3NTQ2OGYuLjkxYTM4ZTIgMTAwNjQ0CitpbmRleCBmNDA1MjEyLi40NzU1ZjYxIDEwMDY0NAogLS0tIGEvYmFja2VuZHMvTWFrZWZpbGUuYW0KICsrKyBiL2JhY2tlbmRzL01ha2VmaWxlLmFtCi1AQCAtMzMsMTYgKzMzLDE5IEBAIEFNX0NQUEZMQUdTICs9IC1JJCh0b3Bfc3JjZGlyKS9saWJlYmwgLUkkKHRvcF9zcmNkaXIpL2xpYmFzbSBcCi0gCitAQCAtMzcsNyArMzcsOSBAQCBBTV9DUFBGTEFHUyArPSAtSSQodG9wX3NyY2RpcikvbGliZWJsIC1JJCh0b3Bfc3JjZGlyKS9saWJhc20gXAorIG5vaW5zdF9MSUJSQVJJRVMgPSBsaWJlYmxfYmFja2VuZHMuYSBsaWJlYmxfYmFja2VuZHNfcGljLmEKICAKICBtb2R1bGVzID0gaTM4NiBzaCB4ODZfNjQgaWE2NCBhbHBoYSBhcm0gYWFyY2g2NCBzcGFyYyBwcGMgcHBjNjQgczM5MCBcCiAtCSAgdGlsZWd4IG02OGsgYnBmIHJpc2N2IGNza3kKICsJICB0aWxlZ3ggbTY4ayBicGYgcmlzY3YgY3NreSBwYXJpc2MKLSBsaWJlYmxfcGljID0gbGliZWJsX2kzODZfcGljLmEgbGliZWJsX3NoX3BpYy5hIGxpYmVibF94ODZfNjRfcGljLmEgICAgXAotIAkgICAgIGxpYmVibF9pYTY0X3BpYy5hIGxpYmVibF9hbHBoYV9waWMuYSBsaWJlYmxfYXJtX3BpYy5hICAgIFwKLSAJICAgICBsaWJlYmxfYWFyY2g2NF9waWMuYSBsaWJlYmxfc3BhcmNfcGljLmEgbGliZWJsX3BwY19waWMuYSBcCi0gCSAgICAgbGliZWJsX3BwYzY0X3BpYy5hIGxpYmVibF9zMzkwX3BpYy5hIGxpYmVibF90aWxlZ3hfcGljLmEgXAotIAkgICAgIGxpYmVibF9tNjhrX3BpYy5hIGxpYmVibF9icGZfcGljLmEgbGliZWJsX3Jpc2N2X3BpYy5hICAgIFwKLS0JICAgICBsaWJlYmxfY3NreV9waWMuYQotKwkgICAgIGxpYmVibF9jc2t5X3BpYy5hIGxpYmVibF9wYXJpc2NfcGljLmEKLSBub2luc3RfTElCUkFSSUVTID0gJChsaWJlYmxfcGljKQotIG5vaW5zdF9EQVRBID0gJChsaWJlYmxfcGljOl9waWMuYT0uc28pCi0gCisrCiArcGFyaXNjX1NSQ1MgPSBwYXJpc2NfaW5pdC5jIHBhcmlzY19zeW1ib2wuYyBwYXJpc2NfcmVncy5jIHBhcmlzY19yZXR2YWwuYwotK2xpYmVibF9wYXJpc2NfcGljX2FfU09VUkNFUyA9ICQocGFyaXNjX1NSQ1MpCi0rYW1fbGliZWJsX3BhcmlzY19waWNfYV9PQkpFQ1RTID0gJChwYXJpc2NfU1JDUzouYz0ub3MpCiAgCi0gbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5zbwotIGxpYmR3ID0gLi4vbGliZHcvbGliZHcuc28KKyBpMzg2X1NSQ1MgPSBpMzg2X2luaXQuYyBpMzg2X3N5bWJvbC5jIGkzODZfY29yZW5vdGUuYyBpMzg2X2NmaS5jIFwKKyAJICAgIGkzODZfcmV0dmFsLmMgaTM4Nl9yZWdzLmMgaTM4Nl9hdXh2LmMgaTM4Nl9zeXNjYWxsLmMgXAorQEAgLTEwMiw3ICsxMDQsOCBAQCBsaWJlYmxfYmFja2VuZHNfYV9TT1VSQ0VTID0gJChpMzg2X1NSQ1MpICQoc2hfU1JDUykgJCh4ODZfNjRfU1JDUykgXAorIAkJCSAgICAkKGlhNjRfU1JDUykgJChhbHBoYV9TUkNTKSAkKGFybV9TUkNTKSBcCisgCQkJICAgICQoYWFyY2g2NF9TUkNTKSAkKHNwYXJjX1NSQ1MpICQocHBjX1NSQ1MpIFwKKyAJCQkgICAgJChwcGM2NF9TUkNTKSAkKHMzOTBfU1JDUykgJCh0aWxlZ3hfU1JDUykgXAorLQkJCSAgICAkKG02OGtfU1JDUykgJChicGZfU1JDUykgJChyaXNjdl9TUkNTKSAkKGNza3lfU1JDUykKKysJCQkgICAgJChtNjhrX1NSQ1MpICQoYnBmX1NSQ1MpICQocmlzY3ZfU1JDUykgJChjc2t5X1NSQ1MpIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChwYXJpc2NfU1JDUykKKyAKKyBsaWJlYmxfYmFja2VuZHNfcGljX2FfU09VUkNFUyA9CisgYW1fbGliZWJsX2JhY2tlbmRzX3BpY19hX09CSkVDVFMgPSAkKGxpYmVibF9iYWNrZW5kc19hX1NPVVJDRVM6LmM9Lm9zKQogZGlmZiAtLWdpdCBhL2JhY2tlbmRzL2xpYmVibF9wYXJpc2MuaCBiL2JhY2tlbmRzL2xpYmVibF9wYXJpc2MuaAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLmY0NzNiNzkKQEAgLTgyNiw2ICs4MjYsMyBAQAogICNkZWZpbmUgUl9QQVJJU0NfU0VHUkVMNjQJMTEyCS8qIDY0IGJpdHMgc2VnbWVudCByZWwuIGFkZHJlc3MuICAqLwogICNkZWZpbmUgUl9QQVJJU0NfUExUT0ZGMTRXUgkxMTUJLyogUExULXJlbC4gYWRkcmVzcywgcmlnaHQgMTQgYml0cy4gICovCiAgI2RlZmluZSBSX1BBUklTQ19QTFRPRkYxNERSCTExNgkvKiBQTFQtcmVsLiBhZGRyZXNzLCByaWdodCAxNCBiaXRzLiAgKi8KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL21pcHNfYmFja2VuZC5kaWZmIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL21pcHNfYmFja2VuZC5kaWZmCmluZGV4IDEwOTdiMGUuLjc0OWZhYTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9taXBzX2JhY2tlbmQuZGlmZgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vbWlwc19iYWNrZW5kLmRpZmYKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDY4YjQ5NzY2OGNkZTUxNzE4ODBkMDczYTdlYTUwZDExYzNiZGRiZmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDdlMGIwMzZkMDg3ZGZmZjdmNWUzMDZmNTJmYzc4NzQ1Zjk5NDU0YzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBXZWQsIDIxIEF1ZyAyMDE5IDE1OjQ5OjUyICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIG1pcHMgYmFja2VuZApAQCAtNywxNSArNywxNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtmcm9tIGRlYmlhbl0KIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCiAtLS0KLSBiYWNrZW5kcy9NYWtlZmlsZS5hbSAgICB8ICAgOCArLQotIGJhY2tlbmRzL21pcHNfaW5pdC5jICAgIHwgIDU5ICsrKysrKysrKwotIGJhY2tlbmRzL21pcHNfcmVncy5jICAgIHwgMTA0ICsrKysrKysrKysrKysrKysKLSBiYWNrZW5kcy9taXBzX3JlbG9jLmRlZiB8ICA3OSArKysrKysrKysrKysKLSBiYWNrZW5kcy9taXBzX3JldHZhbC5jICB8IDMyMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBiYWNrZW5kcy9taXBzX3N5bWJvbC5jICB8ICA1MyArKysrKysrKwotIGxpYmVibC9lYmxvcGVuYmFja2VuZC5jIHwgICAyICsKLSA3IGZpbGVzIGNoYW5nZWQsIDYyNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorIGJhY2tlbmRzL01ha2VmaWxlLmFtICAgIHwgICA2ICstCisgYmFja2VuZHMvbWlwc19pbml0LmMgICAgfCAgNTkgKysrKysrKysKKyBiYWNrZW5kcy9taXBzX3JlZ3MuYyAgICB8IDEwNCArKysrKysrKysrKysrCisgYmFja2VuZHMvbWlwc19yZWxvYy5kZWYgfCAgNzkgKysrKysrKysrKworIGJhY2tlbmRzL21pcHNfcmV0dmFsLmMgIHwgMzIxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBiYWNrZW5kcy9taXBzX3N5bWJvbC5jICB8ICA1MyArKysrKysrCisgbGliZWJsL2VibG9wZW5iYWNrZW5kLmMgfCAgIDMgKworIDcgZmlsZXMgY2hhbmdlZCwgNjIzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfaW5pdC5jCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfcmVncy5jCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfcmVsb2MuZGVmCkBAIC0yMywzNiArMjQsMzQgQEAKICBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvbWlwc19zeW1ib2wuYwogCiBkaWZmIC0tZ2l0IGEvYmFja2VuZHMvTWFrZWZpbGUuYW0gYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQotaW5kZXggOTFhMzhlMi4uYWJhOGE0YSAxMDA2NDQKK2luZGV4IDQ3NTVmNjEuLjA3ZDQ1ZDcgMTAwNjQ0CiAtLS0gYS9iYWNrZW5kcy9NYWtlZmlsZS5hbQogKysrIGIvYmFja2VuZHMvTWFrZWZpbGUuYW0KLUBAIC0zMywxMyArMzMsMTMgQEAgQU1fQ1BQRkxBR1MgKz0gLUkkKHRvcF9zcmNkaXIpL2xpYmVibCAtSSQodG9wX3NyY2RpcikvbGliYXNtIFwKLSAKK0BAIC0zNyw3ICszNyw3IEBAIEFNX0NQUEZMQUdTICs9IC1JJCh0b3Bfc3JjZGlyKS9saWJlYmwgLUkkKHRvcF9zcmNkaXIpL2xpYmFzbSBcCisgbm9pbnN0X0xJQlJBUklFUyA9IGxpYmVibF9iYWNrZW5kcy5hIGxpYmVibF9iYWNrZW5kc19waWMuYQogIAogIG1vZHVsZXMgPSBpMzg2IHNoIHg4Nl82NCBpYTY0IGFscGhhIGFybSBhYXJjaDY0IHNwYXJjIHBwYyBwcGM2NCBzMzkwIFwKIC0JICB0aWxlZ3ggbTY4ayBicGYgcmlzY3YgY3NreSBwYXJpc2MKICsJICB0aWxlZ3ggbTY4ayBicGYgcmlzY3YgY3NreSBwYXJpc2MgbWlwcwotIGxpYmVibF9waWMgPSBsaWJlYmxfaTM4Nl9waWMuYSBsaWJlYmxfc2hfcGljLmEgbGliZWJsX3g4Nl82NF9waWMuYSAgICBcCi0gCSAgICAgbGliZWJsX2lhNjRfcGljLmEgbGliZWJsX2FscGhhX3BpYy5hIGxpYmVibF9hcm1fcGljLmEgICAgXAotIAkgICAgIGxpYmVibF9hYXJjaDY0X3BpYy5hIGxpYmVibF9zcGFyY19waWMuYSBsaWJlYmxfcHBjX3BpYy5hIFwKLSAJICAgICBsaWJlYmxfcHBjNjRfcGljLmEgbGliZWJsX3MzOTBfcGljLmEgbGliZWJsX3RpbGVneF9waWMuYSBcCi0gCSAgICAgbGliZWJsX202OGtfcGljLmEgbGliZWJsX2JwZl9waWMuYSBsaWJlYmxfcmlzY3ZfcGljLmEgICAgXAotLQkgICAgIGxpYmVibF9jc2t5X3BpYy5hIGxpYmVibF9wYXJpc2NfcGljLmEKLSsJICAgICBsaWJlYmxfY3NreV9waWMuYSBsaWJlYmxfcGFyaXNjX3BpYy5hIGxpYmVibF9taXBzX3BpYy5hCi0gbm9pbnN0X0xJQlJBUklFUyA9ICQobGliZWJsX3BpYykKLSBub2luc3RfREFUQSA9ICQobGliZWJsX3BpYzpfcGljLmE9LnNvKQogIAotQEAgLTE0NSw2ICsxNDUsMTAgQEAgY3NreV9TUkNTID0gY3NreV9hdHRycy5jIGNza3lfaW5pdC5jIGNza3lfc3ltYm9sLmMgY3NreV9jZmkuYyBcCi0gbGliZWJsX2Nza3lfcGljX2FfU09VUkNFUyA9ICQoY3NreV9TUkNTKQotIGFtX2xpYmVibF9jc2t5X3BpY19hX09CSkVDVFMgPSAkKGNza3lfU1JDUzouYz0ub3MpCisgcGFyaXNjX1NSQ1MgPSBwYXJpc2NfaW5pdC5jIHBhcmlzY19zeW1ib2wuYyBwYXJpc2NfcmVncy5jIHBhcmlzY19yZXR2YWwuYworIAorQEAgLTEwMCwxMiArMTAwLDE0IEBAIHJpc2N2X1NSQ1MgPSByaXNjdl9pbml0LmMgcmlzY3Zfc3ltYm9sLmMgcmlzY3ZfY2ZpLmMgcmlzY3ZfcmVncy5jIFwKKyBjc2t5X1NSQ1MgPSBjc2t5X2F0dHJzLmMgY3NreV9pbml0LmMgY3NreV9zeW1ib2wuYyBjc2t5X2NmaS5jIFwKKyAJICAgIGNza3lfcmVncy5jIGNza3lfaW5pdHJlZy5jIGNza3lfY29yZW5vdGUuYwogIAogK21pcHNfU1JDUyA9IG1pcHNfaW5pdC5jIG1pcHNfc3ltYm9sLmMgbWlwc19yZWdzLmMgbWlwc19yZXR2YWwuYwotK2xpYmVibF9taXBzX3BpY19hX1NPVVJDRVMgPSAkKG1pcHNfU1JDUykKLSthbV9saWJlYmxfbWlwc19waWNfYV9PQkpFQ1RTID0gJChtaXBzX1NSQ1M6LmM9Lm9zKQogKwotIGxpYmVibF8lLnNvIGxpYmVibF8lLm1hcDogbGliZWJsXyVfcGljLmEgJChsaWJlbGYpICQobGliZHcpICQobGliZXUpCi0gCUBybSAtZiAkKEA6LnNvPS5tYXApCi0gCSQoQU1fVl9hdCllY2hvICdFTEZVVElMU18kKFBBQ0tBR0VfVkVSU0lPTikgeyBnbG9iYWw6ICQqX2luaXQ7IGxvY2FsOiAqOyB9OycgXAorIGxpYmVibF9iYWNrZW5kc19hX1NPVVJDRVMgPSAkKGkzODZfU1JDUykgJChzaF9TUkNTKSAkKHg4Nl82NF9TUkNTKSBcCisgCQkJICAgICQoaWE2NF9TUkNTKSAkKGFscGhhX1NSQ1MpICQoYXJtX1NSQ1MpIFwKKyAJCQkgICAgJChhYXJjaDY0X1NSQ1MpICQoc3BhcmNfU1JDUykgJChwcGNfU1JDUykgXAorIAkJCSAgICAkKHBwYzY0X1NSQ1MpICQoczM5MF9TUkNTKSAkKHRpbGVneF9TUkNTKSBcCisgCQkJICAgICQobTY4a19TUkNTKSAkKGJwZl9TUkNTKSAkKHJpc2N2X1NSQ1MpICQoY3NreV9TUkNTKSBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICQocGFyaXNjX1NSQ1MpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICQocGFyaXNjX1NSQ1MpICQobWlwc19TUkNTKQorIAorIGxpYmVibF9iYWNrZW5kc19waWNfYV9TT1VSQ0VTID0KKyBhbV9saWJlYmxfYmFja2VuZHNfcGljX2FfT0JKRUNUUyA9ICQobGliZWJsX2JhY2tlbmRzX2FfU09VUkNFUzouYz0ub3MpCiBkaWZmIC0tZ2l0IGEvYmFja2VuZHMvbWlwc19pbml0LmMgYi9iYWNrZW5kcy9taXBzX2luaXQuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLjk3NWMwNGUKQEAgLTcwMCwxOCArNjk5LDI2IEBACiArICAgIH0KICt9CiBkaWZmIC0tZ2l0IGEvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMgYi9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYwotaW5kZXggMDE3MTFmNS4uZDBjMzU4OSAxMDA2NDQKK2luZGV4IDIxMGI0N2UuLjFmZWFjMTMgMTAwNjQ0CiAtLS0gYS9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYwogKysrIGIvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKLUBAIC03MSw2ICs3MSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QKLSAgIHsgInNwYXJjIiwgImVsZl9zcGFyYyIsICJzcGFyYyIsIDUsIEVNX1NQQVJDLCAwLCAwIH0sCi0gICB7ICJzcGFyYyIsICJlbGZfc3BhcmN2OHBsdXMiLCAic3BhcmMiLCA1LCBFTV9TUEFSQzMyUExVUywgMCwgMCB9LAotICAgeyAiczM5MCIsICJlYmxfczM5MCIsICJzMzkwIiwgNCwgRU1fUzM5MCwgMCwgMCB9LAotKyAgeyAibWlwcyIsICJlbGZfbWlwcyIsICJtaXBzIiwgNCwgRU1fTUlQUywgMCwgMCB9LAotKyAgeyAibWlwcyIsICJlbGZfbWlwc2VsIiwgIm1pcHNlbCIsIDQsIEVNX01JUFNfUlMzX0xFLCAwLCAwIH0sCitAQCAtNTcsNiArNTcsNyBAQCBjb25zdCBjaGFyICptNjhrX2luaXQgKEVsZiAqLCBHRWxmX0hhbGYsIEVibCAqLCBzaXplX3QpOworIGNvbnN0IGNoYXIgKmJwZl9pbml0IChFbGYgKiwgR0VsZl9IYWxmLCBFYmwgKiwgc2l6ZV90KTsKKyBjb25zdCBjaGFyICpyaXNjdl9pbml0IChFbGYgKiwgR0VsZl9IYWxmLCBFYmwgKiwgc2l6ZV90KTsKKyBjb25zdCBjaGFyICpjc2t5X2luaXQgKEVsZiAqLCBHRWxmX0hhbGYsIEVibCAqLCBzaXplX3QpOworK2NvbnN0IGNoYXIgKm1pcHNfaW5pdCAoRWxmICosIEdFbGZfSGFsZiwgRWJsICosIHNpemVfdCk7CiAgCi0gICB7ICJtMzIiLCAiZWxmX20zMiIsICJtMzIiLCAzLCBFTV9NMzIsIDAsIDAgfSwKLSAgIHsgIm02OGsiLCAiZWxmX202OGsiLCAibTY4ayIsIDQsIEVNXzY4SywgRUxGQ0xBU1MzMiwgRUxGREFUQTJNU0IgfSwKKyAvKiBUaGlzIHRhYmxlIHNob3VsZCBjb250YWluIHRoZSBjb21wbGV0ZSBsaXN0IG9mIGFyY2hpdGVjdHVyZXMgYXMgZmFyCisgICAgYXMgdGhlIEVMRiBzcGVjaWZpY2F0aW9uIGlzIGNvbmNlcm5lZC4gICovCitAQCAtODcsNiArODgsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0CisgICB7IHNwYXJjX2luaXQsICJlbGZfc3BhcmMiLCAic3BhcmMiLCA1LCBFTV9TUEFSQywgMCwgMCB9LAorICAgeyBzcGFyY19pbml0LCAiZWxmX3NwYXJjdjhwbHVzIiwgInNwYXJjIiwgNSwgRU1fU1BBUkMzMlBMVVMsIDAsIDAgfSwKKyAgIHsgczM5MF9pbml0LCAiZWJsX3MzOTAiLCAiczM5MCIsIDQsIEVNX1MzOTAsIDAsIDAgfSwKKysgIHsgbWlwc19pbml0LCAiZWxmX21pcHMiLCAibWlwcyIsIDQsIEVNX01JUFMsIDAsIDAgfSwKKysgIHsgbWlwc19pbml0LCAiZWxmX21pcHNlbCIsICJtaXBzZWwiLCA0LCBFTV9NSVBTX1JTM19MRSwgMCwgMCB9LAorIAorICAgeyBOVUxMLCAiZWxmX20zMiIsICJtMzIiLCAzLCBFTV9NMzIsIDAsIDAgfSwKKyAgIHsgbTY4a19pbml0LCAiZWxmX202OGsiLCAibTY4ayIsIDQsIEVNXzY4SywgRUxGQ0xBU1MzMiwgRUxGREFUQTJNU0IgfSwKIC0tIAotMi43LjQKKzIuMTcuMQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vbWlwc19jZmkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vbWlwc19jZmkucGF0Y2gKaW5kZXggZmRhNGY2OC4uZGQ4Zjg4YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL21pcHNfY2ZpLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9taXBzX2NmaS5wYXRjaApAQCAtMSwzMyArMSwzNCBAQAotRnJvbSA5NmUzODI4OWYyODg3ZGRiOGU2ZDJmYjkxZWEwNGJkYmRmMDM0YWI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1YmY2MTE3YTZlYWY5MDA3Y2U4MGFkYmI4YjY2YTk1Y2E5ODA0N2E0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogRGF0ZTogV2VkLCAyMSBBdWcgMjAxOSAxNzowMDozMCArMDgwMAotU3ViamVjdDogW1BBVENIIDIvMl0gbWlwc19jZmkKK1N1YmplY3Q6IFtQQVRDSF0gbWlwc19jZmkKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtmcm9tIGRlYmlhbl0KIAogUmViYXNlIHRvIDAuMTc3CiAKIFNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKwogLS0tCiAgYmFja2VuZHMvTWFrZWZpbGUuYW0gfCAgMiArLQotIGJhY2tlbmRzL21pcHNfY2ZpLmMgIHwgODAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGJhY2tlbmRzL21pcHNfY2ZpLmMgIHwgODAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKICBiYWNrZW5kcy9taXBzX2luaXQuYyB8ICAxICsKICAzIGZpbGVzIGNoYW5nZWQsIDgyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKICBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvbWlwc19jZmkuYwogCiBkaWZmIC0tZ2l0IGEvYmFja2VuZHMvTWFrZWZpbGUuYW0gYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQotaW5kZXggYWJhOGE0YS4uNmFjMGVlYyAxMDA2NDQKK2luZGV4IDA3ZDQ1ZDcuLmRlYzMwODAgMTAwNjQ0CiAtLS0gYS9iYWNrZW5kcy9NYWtlZmlsZS5hbQogKysrIGIvYmFja2VuZHMvTWFrZWZpbGUuYW0KLUBAIC0xNDUsNyArMTQ1LDcgQEAgY3NreV9TUkNTID0gY3NreV9hdHRycy5jIGNza3lfaW5pdC5jIGNza3lfc3ltYm9sLmMgY3NreV9jZmkuYyBcCi0gbGliZWJsX2Nza3lfcGljX2FfU09VUkNFUyA9ICQoY3NreV9TUkNTKQotIGFtX2xpYmVibF9jc2t5X3BpY19hX09CSkVDVFMgPSAkKGNza3lfU1JDUzouYz0ub3MpCitAQCAtMTAwLDcgKzEwMCw3IEBAIHJpc2N2X1NSQ1MgPSByaXNjdl9pbml0LmMgcmlzY3Zfc3ltYm9sLmMgcmlzY3ZfY2ZpLmMgcmlzY3ZfcmVncy5jIFwKKyBjc2t5X1NSQ1MgPSBjc2t5X2F0dHJzLmMgY3NreV9pbml0LmMgY3NreV9zeW1ib2wuYyBjc2t5X2NmaS5jIFwKKyAJICAgIGNza3lfcmVncy5jIGNza3lfaW5pdHJlZy5jIGNza3lfY29yZW5vdGUuYwogIAogLW1pcHNfU1JDUyA9IG1pcHNfaW5pdC5jIG1pcHNfc3ltYm9sLmMgbWlwc19yZWdzLmMgbWlwc19yZXR2YWwuYwogK21pcHNfU1JDUyA9IG1pcHNfaW5pdC5jIG1pcHNfc3ltYm9sLmMgbWlwc19yZWdzLmMgbWlwc19yZXR2YWwuYyBtaXBzX2NmaS5jCi0gbGliZWJsX21pcHNfcGljX2FfU09VUkNFUyA9ICQobWlwc19TUkNTKQotIGFtX2xpYmVibF9taXBzX3BpY19hX09CSkVDVFMgPSAkKG1pcHNfU1JDUzouYz0ub3MpCiAgCisgbGliZWJsX2JhY2tlbmRzX2FfU09VUkNFUyA9ICQoaTM4Nl9TUkNTKSAkKHNoX1NSQ1MpICQoeDg2XzY0X1NSQ1MpIFwKKyAJCQkgICAgJChpYTY0X1NSQ1MpICQoYWxwaGFfU1JDUykgJChhcm1fU1JDUykgXAogZGlmZiAtLWdpdCBhL2JhY2tlbmRzL21pcHNfY2ZpLmMgYi9iYWNrZW5kcy9taXBzX2NmaS5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAogaW5kZXggMDAwMDAwMC4uOWZmZGFiNQpAQCAtMTI2LDYgKzEyNywzIEBACiAgCiAgICByZXR1cm4gTU9EVkVSU0lPTjsKICB9Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL211c2wtbGlicy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL211c2wtbGlicy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjliOWYxMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9tdXNsLWxpYnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDQgKzAsMCBAQAotRnJvbSBkNWExNjUxZGY5ODg0ZmNmNTdlZDMyMGJjMmY4NjY1MzhhZjJmNDIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAyMyBBdWcgMjAxOSAxMDoxODo0NyArMDgwMAotU3ViamVjdDogW1BBVENIIDIvM10gbXVzbC1saWJzCi0KLUNvbGxlY3Rpb24gb2YgZml4ZXMgbmVlZGVkIHRvIGNvbXBpbGUgbGliZWxmIGFuZCBvdGhlciBsaWJyYXJpZXMKLXByb3ZpZGVkIGJ5IGVsZnV0aWxzIGZvciBtdXNsIHRhcmdldHMKLQotZXJyb3IgaXMgZ2xpYmMgc3BlY2lmaWMgQVBJLCBzbyB0aGlzIHBhdGNoIHdpbGwgbW9zdGx5IG5vdCBhY2NlcHRlZAotdXBzdHJlYW0gZ2l2ZW4gdGhhdCBlbGZ1dGlscyBoYXMgYmVlbiBjbG9zZWx5IHRpZWQgdG8gZ2xpYmMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbd29ya2Fyb3VuZCBmb3IgbXVzbF0KLQotUmViYXNlIHRvIDAuMTc3Ci1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWIvZXJyb3IuaCAgICAgICAgICAgICAgICAgICAgfCAyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBsaWIvZml4ZWRzaXplaGFzaC5oICAgICAgICAgICAgfCAgMSAtCi0gbGliL2xpYmV1LmggICAgICAgICAgICAgICAgICAgIHwgIDEgKwotIGxpYmR3ZmwvZHdmbF9lcnJvci5jICAgICAgICAgICB8ICA5ICsrKysrKysrKwotIGxpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYyB8ICAxICsKLSBsaWJlbGYvZWxmLmggICAgICAgICAgICAgICAgICAgfCAgOSArKysrKystLS0KLSA2IGZpbGVzIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9lcnJvci5oCi0KLWRpZmYgLS1naXQgYS9saWIvZXJyb3IuaCBiL2xpYi9lcnJvci5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZWYwNjgyNwotLS0tIC9kZXYvbnVsbAotKysrIGIvbGliL2Vycm9yLmgKLUBAIC0wLDAgKzEsMjcgQEAKLSsjaWZuZGVmIF9FUlJPUl9IXwotKyNkZWZpbmUgX0VSUk9SX0hfCi0rCi0rI2luY2x1ZGUgPHN0ZGFyZy5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPGVycm5vLmg+Ci0rCi0rc3RhdGljIHVuc2lnbmVkIGludCBlcnJvcl9tZXNzYWdlX2NvdW50ID0gMDsKLSsKLStzdGF0aWMgaW5saW5lIHZvaWQgZXJyb3IoaW50IHN0YXR1cywgaW50IGVycm51bSwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pCi0rewotKwl2YV9saXN0IGFwOwotKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiAiLCBwcm9ncmFtX2ludm9jYXRpb25fbmFtZSk7Ci0rCXZhX3N0YXJ0KGFwLCBmb3JtYXQpOwotKwl2ZnByaW50ZihzdGRlcnIsIGZvcm1hdCwgYXApOwotKwl2YV9lbmQoYXApOwotKwlpZiAoZXJybnVtKQotKwkJZnByaW50ZihzdGRlcnIsICI6ICVzIiwgc3RyZXJyb3IoZXJybnVtKSk7Ci0rCWZwcmludGYoc3RkZXJyLCAiXG4iKTsKLSsJZXJyb3JfbWVzc2FnZV9jb3VudCsrOwotKwlpZiAoc3RhdHVzKQotKwkJZXhpdChzdGF0dXMpOwotK30KLSsKLSsjZW5kaWYJLyogX0VSUk9SX0hfICovCi1kaWZmIC0tZ2l0IGEvbGliL2ZpeGVkc2l6ZWhhc2guaCBiL2xpYi9maXhlZHNpemVoYXNoLmgKLWluZGV4IGRhYzJhNWYuLjQzMDE2ZmMgMTAwNjQ0Ci0tLS0gYS9saWIvZml4ZWRzaXplaGFzaC5oCi0rKysgYi9saWIvZml4ZWRzaXplaGFzaC5oCi1AQCAtMzAsNyArMzAsNiBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotIAotICNpbmNsdWRlIDxzeXN0ZW0uaD4KLSAKLWRpZmYgLS1naXQgYS9saWIvbGliZXUuaCBiL2xpYi9saWJldS5oCi1pbmRleCBlY2I0ZDAxLi5lZGM4NWUzIDEwMDY0NAotLS0tIGEvbGliL2xpYmV1LmgKLSsrKyBiL2xpYi9saWJldS5oCi1AQCAtMjksNiArMjksNyBAQAotICNpZm5kZWYgTElCRVVfSAotICNkZWZpbmUgTElCRVVfSAotIAotKyNpbmNsdWRlICJzeXN0ZW0uaCIKLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotIAotZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9lcnJvci5jIGIvbGliZHdmbC9kd2ZsX2Vycm9yLmMKLWluZGV4IDdiY2Y2MWMuLjExZGNjOGIgMTAwNjQ0Ci0tLS0gYS9saWJkd2ZsL2R3ZmxfZXJyb3IuYwotKysrIGIvbGliZHdmbC9kd2ZsX2Vycm9yLmMKLUBAIC0xNTQsNyArMTU0LDE2IEBAIGR3ZmxfZXJybXNnIChpbnQgZXJyb3IpCi0gICBzd2l0Y2ggKGVycm9yICZ+IDB4ZmZmZikKLSAgICAgewotICAgICBjYXNlIE9USEVSX0VSUk9SIChFUlJOTyk6Ci0rI2lmIGRlZmluZWQoX19HTElCQ19fKQotICAgICAgIHJldHVybiBzdHJlcnJvcl9yIChlcnJvciAmIDB4ZmZmZiwgImJhZCIsIDApOwotKyNlbHNlCi0rICAgICAgewotKyAgICAgICAgc3RhdGljIF9fdGhyZWFkIGNoYXIgYnVmWzEyOF0gPSAiIjsKLSsgICAgICAgIGlmIChzdHJlcnJvcl9yIChlcnJvciAmIDB4ZmZmZiwgYnVmLCBzaXplb2YoYnVmKSkgPT0gMCkKLSsgICAgICAgICAgcmV0dXJuIGJ1ZjsKLSsgICAgICB9Ci0rICAgICAgcmV0dXJuICJzdHJlcnJvcl9yKCkgZmFpbGVkIjsKLSsjZW5kaWYKLSAgICAgY2FzZSBPVEhFUl9FUlJPUiAoTElCRUxGKToKLSAgICAgICByZXR1cm4gZWxmX2Vycm1zZyAoZXJyb3IgJiAweGZmZmYpOwotICAgICBjYXNlIE9USEVSX0VSUk9SIChMSUJEVyk6Ci1kaWZmIC0tZ2l0IGEvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jIGIvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jCi1pbmRleCBkNDZhYjVhLi4xYzNmYWVlIDEwMDY0NAotLS0tIGEvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jCi0rKysgYi9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKLUBAIC01MCw2ICs1MCw3IEBACi0gI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlICJzeXN0ZW0uaCIKLSAKLSAvKiBJZiBmdHMuaCBpcyBpbmNsdWRlZCBiZWZvcmUgY29uZmlnLmgsIGl0cyBpbmRpcmVjdCBpbmNsdXNpb25zIG1heSBub3QKLSAgICBnaXZlIHVzIHRoZSByaWdodCBMRlMgYWxpYXNlcyBvZiB0aGVzZSBmdW5jdGlvbnMsIHNvIG1hcCB0aGVtIG1hbnVhbGx5LiAgKi8KLWRpZmYgLS1naXQgYS9saWJlbGYvZWxmLmggYi9saWJlbGYvZWxmLmgKLWluZGV4IGJlZDI3M2QuLmJlMjI4ZTYgMTAwNjQ0Ci0tLS0gYS9saWJlbGYvZWxmLmgKLSsrKyBiL2xpYmVsZi9lbGYuaAotQEAgLTIxLDcgKzIxLDkgQEAKLSAKLSAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSAKLS1fX0JFR0lOX0RFQ0xTCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0gCi0gLyogU3RhbmRhcmQgRUxGIHR5cGVzLiAgKi8KLSAKLUBAIC00MDI5LDYgKzQwMzEsNyBAQCBlbnVtCi0gI2RlZmluZSBSX05EUzMyX1RMU19UUE9GRgkxMDIKLSAjZGVmaW5lIFJfTkRTMzJfVExTX0RFU0MJMTE5Ci0gCi0tX19FTkRfREVDTFMKLS0KLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0gI2VuZGlmCS8qIGVsZi5oICovCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL211c2wtb2JzdGFjay1mdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9tdXNsLW9ic3RhY2stZnRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGYyYjY5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL211c2wtb2JzdGFjay1mdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotRnJvbSA3N2I4OWRiYzlmOWY5NjVhZDBlZjJlMzQxZDdkNDZiY2U1ZjA3NTQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAyMyBBdWcgMjAxOSAxMDoxNzoyNSArMDgwMAotU3ViamVjdDogW1BBVENIIDEvM10gbXVzbC1vYnN0YWNrLWZ0cwotCi1Mb29rIGZvciBsaWJmdHMgYW5kIGxpYm9ic3RhY2sgZHVyaW5nIGNvbmZpZ3VyZSwgdGhlc2UKLWxpYnJhcmllcyBhcmUgZXh0ZXJuYWwgdG8gbGliYyB3aGVuIHVzaW5nIG11c2wsIHdoZXJlYXMKLW9uIGdsaWJjIHRoZXNlIGxpYnJhcmllcyBhcmUgcHJvdmlkZWQgaW4gbGliYyBpdHNlbGYuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3dvcmthcm91bmQgZm9yIG11c2xdCi0KLVJlYmFzZSB0byAwLjE3NwotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBsaWJkdy9NYWtlZmlsZS5hbSB8ICAyICstCi0gc3JjL01ha2VmaWxlLmFtICAgfCAgOCArKysrLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgNTkgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZjkzOTY0Yy4uYjg3Yjc2MiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNDk0LDYgKzQ5NCw2MCBAQCBlbHNlCi0gZmkKLSBBQ19TVUJTVChbYXJncF9MREFERF0pCi0gCi0rZG5sIENoZWNrIGlmIHdlIGhhdmUgZnRzIGF2YWlsYWJsZSBmcm9tIG91ciBsaWJjCi0rQUNfTElOS19JRkVMU0UoCi0rCVtBQ19MQU5HX1BST0dSQU0oCi0rCQlbI2lmICFkZWZpbmVkKF9feDg2XzY0X18pCi0rCQkjdW5kZWYgIF9GSUxFX09GRlNFVF9CSVRTCi0rCQkjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTIDMyCi0rCQkjZW5kaWYKLSsJCSNpbmNsdWRlIDxmdHMuaD5dLAotKwkJW0ZUUyogZnRzID0gMDsgcmV0dXJuIGZ0c19jbG9zZShmdHMpOyByZXR1cm4gMDtdCi0rCQkpXSwKLSsJW2xpYmNfaGFzX2Z0cz0idHJ1ZSJdLAotKwlbbGliY19oYXNfZnRzPSJmYWxzZSJdCi0rKQotKwotK2RubCBJZiBvdXIgbGliYyBkb2Vzbid0IHByb3ZpZGUgZnRzLCB0aGVuIHRlc3QgZm9yIGxpYmZ0cwotK2lmIHRlc3QgIiRsaWJjX2hhc19mdHMiID0gImZhbHNlIiA7IHRoZW4KLSsJQUNfTVNHX1dBUk4oImxpYmMgZG9lcyBub3QgaGF2ZSBmdHMiKQotKwlBQ19DSEVDS19MSUIoW2Z0c10sIFtmdHNfY2xvc2VdLCBbaGF2ZV9mdHM9InRydWUiXSwgW2hhdmVfZnRzPSJmYWxzZSJdKQotKwotKwlpZiB0ZXN0ICIkaGF2ZV9mdHMiID0gImZhbHNlIjsgdGhlbgotKwkJQUNfTVNHX0VSUk9SKCJubyBsaWJmdHMgZm91bmQiKQotKwllbHNlCi0rCQlmdHNfTERBREQ9Ii1sZnRzIgotKwlmaQotK2Vsc2UKLSsJZnRzX0xEQUREPSIiCi0rZmkKLStBQ19TVUJTVChbZnRzX0xEQUREXSkKLSsKLStkbmwgQ2hlY2sgaWYgd2UgaGF2ZSBvYnN0YWNrIGF2YWlsYWJsZSBmcm9tIG91ciBsaWJjCi0rQUNfTElOS19JRkVMU0UoCi0rCVtBQ19MQU5HX1BST0dSQU0oCi0rCQlbI2luY2x1ZGUgPG9ic3RhY2suaD5dLAotKwkJW19vYnN0YWNrX2JlZ2luKDAsIDAsIDAsIE5VTEwsIE5VTEwpOyByZXR1cm4gMDtdCi0rCQkpXSwKLSsJW2xpYmNfaGFzX29ic3RhY2s9InRydWUiXSwKLSsJW2xpYmNfaGFzX29ic3RhY2s9ImZhbHNlIl0KLSspCi0rCi0rZG5sIElmIG91ciBsaWJjIGRvZXNuJ3QgcHJvdmlkZSBvYnN0YWNrLCB0aGVuIHRlc3QgZm9yIGxpYm9ic3RhY2sKLStpZiB0ZXN0ICIkbGliY19oYXNfb2JzdGFjayIgPSAiZmFsc2UiIDsgdGhlbgotKwlBQ19NU0dfV0FSTigibGliYyBkb2VzIG5vdCBoYXZlIG9ic3RhY2siKQotKwlBQ19DSEVDS19MSUIoW29ic3RhY2tdLCBbX29ic3RhY2tfYmVnaW5dLCBbaGF2ZV9vYnN0YWNrPSJ0cnVlIl0sIFtoYXZlX29ic3RhY2s9ImZhbHNlIl0pCi0rCi0rCWlmIHRlc3QgIiRoYXZlX29ic3RhY2siID0gImZhbHNlIjsgdGhlbgotKwkJQUNfTVNHX0VSUk9SKCJubyBsaWJvYnN0YWNrIGZvdW5kIikKLSsJZWxzZQotKwkJb2JzdGFja19MREFERD0iLWxvYnN0YWNrIgotKwlmaQotK2Vsc2UKLSsJb2JzdGFja19MREFERD0iIgotK2ZpCi0rQUNfU1VCU1QoW29ic3RhY2tfTERBRERdKQotKwotIGRubCBUaGUgZGlyZWN0b3JpZXMgd2l0aCBjb250ZW50LgotIAotIGRubCBEb2N1bWVudGF0aW9uLgotZGlmZiAtLWdpdCBhL2xpYmR3L01ha2VmaWxlLmFtIGIvbGliZHcvTWFrZWZpbGUuYW0KLWluZGV4IDdhM2Q1MzIuLmE1NDFmYTMgMTAwNjQ0Ci0tLS0gYS9saWJkdy9NYWtlZmlsZS5hbQotKysrIGIvbGliZHcvTWFrZWZpbGUuYW0KLUBAIC0xMDgsNyArMTA4LDcgQEAgYW1fbGliZHdfcGljX2FfT0JKRUNUUyA9ICQobGliZHdfYV9TT1VSQ0VTOi5jPS5vcykKLSBsaWJkd19zb19MSUJTID0gbGliZHdfcGljLmEgLi4vbGliZHdlbGYvbGliZHdlbGZfcGljLmEgXAotIAkgIC4uL2xpYmR3ZmwvbGliZHdmbF9waWMuYSAuLi9saWJlYmwvbGliZWJsLmEKLSBsaWJkd19zb19ERVBTID0gLi4vbGliL2xpYmV1LmEgLi4vbGliZWxmL2xpYmVsZi5zbwotLWxpYmR3X3NvX0xETElCUyA9ICQobGliZHdfc29fREVQUykgLWxkbCAtbHogJChhcmdwX0xEQUREKSAkKHppcF9MSUJTKQotK2xpYmR3X3NvX0xETElCUyA9ICQobGliZHdfc29fREVQUykgLWxkbCAtbHogJChhcmdwX0xEQUREKSAkKGZ0c19MREFERCkgJCh6aXBfTElCUykKLSBsaWJkd19zb19TT1VSQ0VTID0KLSBsaWJkdy5zbyQoRVhFRVhUKTogJChzcmNkaXIpL2xpYmR3Lm1hcCAkKGxpYmR3X3NvX0xJQlMpICQobGliZHdfc29fREVQUykKLSAjIFRoZSBycGF0aCBpcyBuZWNlc3NhcnkgZm9yIGxpYmVibCBiZWNhdXNlIGl0cyAkT1JJR0lOIHVzZSB3aWxsCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCBiNzJmODUzLi4yZjNkZmNlIDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC02OSw4ICs2OSw4IEBAIGFyX25vX1dzdGFja191c2FnZSA9IHllcwotIHVuc3RyaXBfbm9fV3N0YWNrX3VzYWdlID0geWVzCi0gCi0gcmVhZGVsZl9MREFERCA9ICQobGliZHcpICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKSAtbGRsCi0tbm1fTERBREQgPSAkKGxpYmR3KSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkgLWxkbCBcCi0tCSAgICQoZGVtYW5nbGVsaWIpCi0rbm1fTERBREQgPSAkKGxpYmR3KSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkgXAotKwkgICAkKG9ic3RhY2tfTERBREQpIC1sZGwgJChkZW1hbmdsZWxpYikKLSBzaXplX0xEQUREID0gJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKLSBzdHJpcF9MREFERCA9ICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJkdykgJChsaWJldSkgJChhcmdwX0xEQUREKSAtbGRsCi0gZWxmbGludF9MREFERCAgPSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkgLWxkbAotQEAgLTc4LDkgKzc4LDkgQEAgZmluZHRleHRyZWxfTERBREQgPSAkKGxpYmR3KSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKQotIGFkZHIybGluZV9MREFERCA9ICQobGliZHcpICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpICQoZGVtYW5nbGVsaWIpCi0gZWxmY21wX0xEQUREID0gJChsaWJlYmwpICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpIC1sZGwKLSBvYmpkdW1wX0xEQUREICA9ICQobGliYXNtKSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkgLWxkbAotLXJhbmxpYl9MREFERCA9IGxpYmFyLmEgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKLStyYW5saWJfTERBREQgPSBsaWJhci5hICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpICQob2JzdGFja19MREFERCkKLSBzdHJpbmdzX0xEQUREID0gJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKLS1hcl9MREFERCA9IGxpYmFyLmEgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKLSthcl9MREFERCA9IGxpYmFyLmEgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkgJChvYnN0YWNrX0xEQUREKQotIHVuc3RyaXBfTERBREQgPSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZHcpICQobGliZXUpICQoYXJncF9MREFERCkgLWxkbAotIHN0YWNrX0xEQUREID0gJChsaWJlYmwpICQobGliZWxmKSAkKGxpYmR3KSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpIC1sZGwgJChkZW1hbmdsZWxpYikKLSBlbGZjb21wcmVzc19MREFERCA9ICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJkdykgJChsaWJldSkgJChhcmdwX0xEQUREKQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9tdXNsLXRlc3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvbXVzbC10ZXN0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmUzNTc5MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9tdXNsLXRlc3RzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRml4IGVycm9yIG9uIG11c2w6Ci0KLXwgLi4vLi4vZWxmdXRpbHMtMC4xNzYvdGVzdHMvZWxmc3RybWVyZ2UuYzogSW4gZnVuY3Rpb24gJ21haW4nOgotfCAuLi8uLi9lbGZ1dGlscy0wLjE3Ni90ZXN0cy9lbGZzdHJtZXJnZS5jOjM3MDo2MDogZXJyb3I6ICdBTExQRVJNUycgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ0VQRVJNJz8KLXwgICAgICAgIGZkbmV3ID0gb3BlbiAoZm5ldywgT19XUk9OTFkgfCBPX0NSRUFULCBzdC5zdF9tb2RlICYgQUxMUEVSTVMpOwotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fgotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFUEVSTQotfCAuLi8uLi9lbGZ1dGlscy0wLjE3Ni90ZXN0cy9lbGZzdHJtZXJnZS5jOjM3MDo2MDogbm90ZTogZWFjaCB1bmRlY2xhcmVkIGlkZW50aWZpZXIgaXMgcmVwb3J0ZWQgb25seSBvbmNlIGZvciBlYWNoIGZ1bmN0aW9uIGl0IGFwcGVhcnMgaW4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt3b3JrYXJvdW5kIGluIG11c2xdCi0KLVNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgotCi1JbmRleDogZWxmdXRpbHMtMC4xNzYvdGVzdHMvZWxmc3RybWVyZ2UuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTc2Lm9yaWcvdGVzdHMvZWxmc3RybWVyZ2UuYwotKysrIGVsZnV0aWxzLTAuMTc2L3Rlc3RzL2VsZnN0cm1lcmdlLmMKLUBAIC0zMyw2ICszMywxMSBAQAotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2VsZikKLSAjaW5jbHVkZSAiZWxmLWtub3dsZWRnZS5oIgotIAotKy8qIGZvciBtdXNsICovCi0rI2lmbmRlZiBBTExQRVJNUwotKyMgZGVmaW5lIEFMTFBFUk1TIChTX0lTVUlEfFNfSVNHSUR8U19JU1ZUWHxTX0lSV1hVfFNfSVJXWEd8U19JUldYTykvKiAwNzc3NyAqLwotKyNlbmRpZgotKwotIC8qIFRoZSBvcmlnaW5hbCBFTEYgZmlsZS4gICovCi0gc3RhdGljIGludCBmZCA9IC0xOwotIHN0YXRpYyBFbGYgKmVsZiA9IE5VTEw7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9tdXNsLXV0aWxzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvbXVzbC11dGlscy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYThhZDkzMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9tdXNsLXV0aWxzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAKLUZyb20gN2Y1ZTJmZDg2ZDU0ZTBhNGQxOTVlYzY1YWZiOWI0MTE4MjlkZmY5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgMjMgQXVnIDIwMTkgMTA6MTk6NDggKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzNdIG11c2wtdXRpbHMKLQotUHJvdmlkZSBtaXNzaW5nIGRlZmluZXMgd2hpY2ggb3RoZXJ3aXNlIGFyZSBhdmFpbGFibGUgb24gZ2xpYmMgc3lzdGVtIGhlYWRlcnMKLQotQWx0ZXIgdGhlIGVycm9yIEFQSSB0byBtYXRjaCBwb3NpeCB2ZXJzaW9uCi11c2UgcXNvcnQgaW5zdGVhZCBvZiBxc29ydF9yIHdoaWNoIGlzIGdsaWJjIHNwZWNpZmljIEFQSQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt3b3JrYXJvdW5kIGZvciBtdXNsXQotCi1SZWJhc2UgdG8gMC4xNzcKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9hcmxpYi5oICAgICAgIHwgIDYgKysrKysrCi0gc3JjL2VsZmNvbXByZXNzLmMgfCAgNyArKysrKysrCi0gc3JjL3JlYWRlbGYuYyAgICAgfCAyMCArKysrKysrKysrKystLS0tLS0tLQotIHNyYy9zdHJpcC5jICAgICAgIHwgIDcgKysrKysrKwotIHNyYy91bnN0cmlwLmMgICAgIHwgIDkgKysrKysrKysrCi0gNSBmaWxlcyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2FybGliLmggYi9zcmMvYXJsaWIuaAotaW5kZXggZTExNzE2Ni4uODMyNmY2YyAxMDA2NDQKLS0tLSBhL3NyYy9hcmxpYi5oCi0rKysgYi9zcmMvYXJsaWIuaAotQEAgLTI5LDYgKzI5LDEyIEBACi0gI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAKLSsjaWYgIWRlZmluZWQoQUxMUEVSTVMpCi0rIyBkZWZpbmUgQUxMUEVSTVMgKFNfSVNVSUR8U19JU0dJRHxTX0lTVlRYfFNfSVJXWFV8U19JUldYR3xTX0lSV1hPKSAvKiAwNzc3NyAqLwotKyNlbmRpZgotKyNpZiAhZGVmaW5lZChERUZGSUxFTU9ERSkKLSsjIGRlZmluZSBERUZGSUxFTU9ERSAoU19JUlVTUnxTX0lXVVNSfFNfSVJHUlB8U19JV0dSUHxTX0lST1RIfFNfSVdPVEgpLyogMDY2NiovCi0rI2VuZGlmCi0gCi0gLyogU3RhdGUgb2YgLUQvLVUgZmxhZ3MuICAqLwotIGV4dGVybiBib29sIGFybGliX2RldGVybWluaXN0aWNfb3V0cHV0OwotZGlmZiAtLWdpdCBhL3NyYy9lbGZjb21wcmVzcy5jIGIvc3JjL2VsZmNvbXByZXNzLmMKLWluZGV4IDZiYTZhZjQuLjBjNzY3NGIgMTAwNjQ0Ci0tLS0gYS9zcmMvZWxmY29tcHJlc3MuYwotKysrIGIvc3JjL2VsZmNvbXByZXNzLmMKLUBAIC0zNyw2ICszNywxMyBAQAotICNpbmNsdWRlICJsaWJldS5oIgotICNpbmNsdWRlICJwcmludHZlcnNpb24uaCIKLSAKLSsjaWYgIWRlZmluZWQoQUxMUEVSTVMpCi0rIyBkZWZpbmUgQUxMUEVSTVMgKFNfSVNVSUR8U19JU0dJRHxTX0lTVlRYfFNfSVJXWFV8U19JUldYR3xTX0lSV1hPKSAvKiAwNzc3NyAqLwotKyNlbmRpZgotKyNpZiAhZGVmaW5lZChGTk1fRVhUTUFUQ0gpCi0rIyBkZWZpbmUgRk5NX0VYVE1BVENIICgwKQotKyNlbmRpZgotKwotIC8qIE5hbWUgYW5kIHZlcnNpb24gb2YgcHJvZ3JhbS4gICovCi0gQVJHUF9QUk9HUkFNX1ZFUlNJT05fSE9PS19ERUYgPSBwcmludF92ZXJzaW9uOwotIAotZGlmZiAtLWdpdCBhL3NyYy9yZWFkZWxmLmMgYi9zcmMvcmVhZGVsZi5jCi1pbmRleCA1YzAyYTliLi44MTc1NjJkIDEwMDY0NAotLS0tIGEvc3JjL3JlYWRlbGYuYwotKysrIGIvc3JjL3JlYWRlbGYuYwotQEAgLTQ4MTMsMTAgKzQ4MTMsMTEgQEAgbGlzdHB0cl9iYXNlIChzdHJ1Y3QgbGlzdHB0ciAqcCkKLSAgIHJldHVybiBjdWRpZV9iYXNlICgmY3UpOwotIH0KLSAKLStzdGF0aWMgY29uc3QgY2hhciAqbGlzdHB0cl9uYW1lOwotKwotIHN0YXRpYyBpbnQKLS1jb21wYXJlX2xpc3RwdHIgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIHZvaWQgKmFyZykKLStjb21wYXJlX2xpc3RwdHIgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCi0gewotLSAgY29uc3QgY2hhciAqbmFtZSA9IGFyZzsKLSAgIHN0cnVjdCBsaXN0cHRyICpwMSA9ICh2b2lkICopIGE7Ci0gICBzdHJ1Y3QgbGlzdHB0ciAqcDIgPSAodm9pZCAqKSBiOwotIAotQEAgLTQ4MzIsMjEgKzQ4MzMsMjEgQEAgY29tcGFyZV9saXN0cHRyIChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCB2b2lkICphcmcpCi0gCSAgcDEtPndhcm5lZCA9IHAyLT53YXJuZWQgPSB0cnVlOwotIAkgIGVycm9yICgwLCAwLAotIAkJIGdldHRleHQgKCIlcyAlIyIgUFJJeDY0ICIgdXNlZCB3aXRoIGRpZmZlcmVudCBhZGRyZXNzIHNpemVzIiksCi0tCQkgbmFtZSwgKHVpbnQ2NF90KSBwMS0+b2Zmc2V0KTsKLSsJCSBsaXN0cHRyX25hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCk7Ci0gCX0KLSAgICAgICBpZiAocDEtPmR3YXJmNjQgIT0gcDItPmR3YXJmNjQpCi0gCXsKLSAJICBwMS0+d2FybmVkID0gcDItPndhcm5lZCA9IHRydWU7Ci0gCSAgZXJyb3IgKDAsIDAsCi0gCQkgZ2V0dGV4dCAoIiVzICUjIiBQUkl4NjQgIiB1c2VkIHdpdGggZGlmZmVyZW50IG9mZnNldCBzaXplcyIpLAotLQkJIG5hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCk7Ci0rCQkgbGlzdHB0cl9uYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQpOwotIAl9Ci0gICAgICAgaWYgKGxpc3RwdHJfYmFzZSAocDEpICE9IGxpc3RwdHJfYmFzZSAocDIpKQotIAl7Ci0gCSAgcDEtPndhcm5lZCA9IHAyLT53YXJuZWQgPSB0cnVlOwotIAkgIGVycm9yICgwLCAwLAotIAkJIGdldHRleHQgKCIlcyAlIyIgUFJJeDY0ICIgdXNlZCB3aXRoIGRpZmZlcmVudCBiYXNlIGFkZHJlc3NlcyIpLAotLQkJIG5hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCk7Ci0rCQkgbGlzdHB0cl9uYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQpOwotIAl9Ci0gICAgICAgaWYgKHAxLT5hdHRyICE9IHAyIC0+YXR0cikKLSAJewotQEAgLTQ4NTQsNyArNDg1NSw3IEBAIGNvbXBhcmVfbGlzdHB0ciAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgdm9pZCAqYXJnKQotIAkgIGVycm9yICgwLCAwLAotIAkJIGdldHRleHQgKCIlcyAlIyIgUFJJeDY0Ci0gCQkJICAiIHVzZWQgd2l0aCBkaWZmZXJlbnQgYXR0cmlidXRlICVzIGFuZCAlcyIpLAotLQkJIG5hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCwgZHdhcmZfYXR0cl9uYW1lIChwMi0+YXR0ciksCi0rCQkgbGlzdHB0cl9uYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQsIGR3YXJmX2F0dHJfbmFtZSAocDItPmF0dHIpLAotIAkJIGR3YXJmX2F0dHJfbmFtZSAocDItPmF0dHIpKTsKLSAJfQotICAgICB9Ci1AQCAtNDkyNiw4ICs0OTI3LDExIEBAIHN0YXRpYyB2b2lkCi0gc29ydF9saXN0cHRyIChzdHJ1Y3QgbGlzdHB0cl90YWJsZSAqdGFibGUsIGNvbnN0IGNoYXIgKm5hbWUpCi0gewotICAgaWYgKHRhYmxlLT5uID4gMCkKLS0gICAgcXNvcnRfciAodGFibGUtPnRhYmxlLCB0YWJsZS0+biwgc2l6ZW9mIHRhYmxlLT50YWJsZVswXSwKLS0JICAgICAmY29tcGFyZV9saXN0cHRyLCAodm9pZCAqKSBuYW1lKTsKLSsgICAgewotKyAgICAgIGxpc3RwdHJfbmFtZSA9IG5hbWU7Ci0rICAgICAgcXNvcnQgKHRhYmxlLT50YWJsZSwgdGFibGUtPm4sIHNpemVvZiB0YWJsZS0+dGFibGVbMF0sCi0rCSAgICAmY29tcGFyZV9saXN0cHRyKTsKLSsgICAgfQotIH0KLSAKLSBzdGF0aWMgYm9vbAotZGlmZiAtLWdpdCBhL3NyYy9zdHJpcC5jIGIvc3JjL3N0cmlwLmMKLWluZGV4IDQwNTRjMmEuLmQyZDIxNzYgMTAwNjQ0Ci0tLS0gYS9zcmMvc3RyaXAuYwotKysrIGIvc3JjL3N0cmlwLmMKLUBAIC00Niw2ICs0NiwxMyBAQAotICNpbmNsdWRlIDxzeXN0ZW0uaD4KLSAjaW5jbHVkZSA8cHJpbnR2ZXJzaW9uLmg+Ci0gCi0rI2lmICFkZWZpbmVkKEFDQ0VTU1BFUk1TKQotKyMgZGVmaW5lIEFDQ0VTU1BFUk1TIChTX0lSV1hVfFNfSVJXWEd8U19JUldYTykgLyogMDc3NyAqLwotKyNlbmRpZgotKyNpZiAhZGVmaW5lZChGTk1fRVhUTUFUQ0gpCi0rIyBkZWZpbmUgRk5NX0VYVE1BVENIICgwKQotKyNlbmRpZgotKwotIHR5cGVkZWYgdWludDhfdCBHRWxmX0J5dGU7Ci0gCi0gLyogTmFtZSBhbmQgdmVyc2lvbiBvZiBwcm9ncmFtLiAgKi8KLWRpZmYgLS1naXQgYS9zcmMvdW5zdHJpcC5jIGIvc3JjL3Vuc3RyaXAuYwotaW5kZXggZmM4NzgzMi4uMjFlYTZiMyAxMDA2NDQKLS0tLSBhL3NyYy91bnN0cmlwLmMKLSsrKyBiL3NyYy91bnN0cmlwLmMKLUBAIC01Niw2ICs1NiwxNSBAQAotICMgZGVmaW5lIF8oc3RyKSBnZXR0ZXh0IChzdHIpCi0gI2VuZGlmCi0gCi0rI2lmbmRlZiBzdHJuZHVwYQotKyNkZWZpbmUgc3RybmR1cGEocywgbikgXAotKyAgICAgICAoe2NvbnN0IGNoYXIgKl9faW4gPSAocyk7IFwKLSsgICAgICAgICBzaXplX3QgX19sZW4gPSBzdHJubGVuIChfX2luLCAobikpICsgMTsgXAotKyAgICAgICAgIGNoYXIgKl9fb3V0ID0gKGNoYXIgKikgYWxsb2NhIChfX2xlbik7IFwKLSsgICAgICAgICBfX291dFtfX2xlbi0xXSA9ICdcMCc7IFwKLSsgICAgICAgICAoY2hhciAqKSBtZW1jcHkgKF9fb3V0LCBfX2luLCBfX2xlbi0xKTt9KQotKyNlbmRpZgotKwotIC8qIE5hbWUgYW5kIHZlcnNpb24gb2YgcHJvZ3JhbS4gICovCi0gQVJHUF9QUk9HUkFNX1ZFUlNJT05fSE9PS19ERUYgPSBwcmludF92ZXJzaW9uOwotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGUvQ1ZFLTIwMTktMTgyMTgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGUvQ1ZFLTIwMTktMTgyMTgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkMDJjNWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlL0NWRS0yMDE5LTE4MjE4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotY2RmX3JlYWRfcHJvcGVydHlfaW5mbyBpbiBjZGYuYyBpbiBmaWxlIHRocm91Z2ggNS4zNyBkb2VzIG5vdCByZXN0cmljdCB0aGUKLW51bWJlciBvZiBDREZfVkVDVE9SIGVsZW1lbnRzLCB3aGljaCBhbGxvd3MgYSBoZWFwLWJhc2VkIGJ1ZmZlciBvdmVyZmxvdyAoNC1ieXRlCi1vdXQtb2YtYm91bmRzIHdyaXRlKS4KLQotQ1ZFOiBDVkUtMjAxOS0xODIxOAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSA0NmE4NDQzZjc2Y2VjNGI0MWVjNzM2ZWNhMzk2OTg0Yzc0NjY0Zjg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hyaXN0b3MgWm91bGFzIDxjaHJpc3Rvc0B6b3VsYXMuY29tPgotRGF0ZTogTW9uLCAyNiBBdWcgMjAxOSAxNDozMTozOSArMDAwMAotU3ViamVjdDogW1BBVENIXSBMaW1pdCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgdmVjdG9yIChmb3VuZCBieSBvc3MtZnV6eikKLQotLS0tCi0gc3JjL2NkZi5jIHwgOSArKysrLS0tLS0KLSBzcmMvY2RmLmggfCAxICsKLSAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jZGYuYyBiL3NyYy9jZGYuYwotaW5kZXggOWQ2Mzk2NzQyLi5iYjgxZDYzNzQgMTAwNjQ0Ci0tLS0gYS9zcmMvY2RmLmMKLSsrKyBiL3NyYy9jZGYuYwotQEAgLTEwMTYsOCArMTAxNiw5IEBAIGNkZl9yZWFkX3Byb3BlcnR5X2luZm8oY29uc3QgY2RmX3N0cmVhbV90ICpzc3QsIGNvbnN0IGNkZl9oZWFkZXJfdCAqaCwKLSAJCQkJZ290byBvdXQ7Ci0gCQkJfQotIAkJCW5lbGVtZW50cyA9IENERl9HRVRVSU5UMzIocSwgMSk7Ci0tCQkJaWYgKG5lbGVtZW50cyA9PSAwKSB7Ci0tCQkJCURQUklOVEYoKCJDREZfVkVDVE9SIHdpdGggbmVsZW1lbnRzID09IDBcbiIpKTsKLSsJCQlpZiAobmVsZW1lbnRzID4gQ0RGX0VMRU1FTlRfTElNSVQgfHwgbmVsZW1lbnRzID09IDApIHsKLSsJCQkJRFBSSU5URigoIkNERl9WRUNUT1Igd2l0aCBuZWxlbWVudHMgPT0gJSIKLSsJCQkJICAgIFNJWkVfVF9GT1JNQVQgInVcbiIsIG5lbGVtZW50cykpOwotIAkJCQlnb3RvIG91dDsKLSAJCQl9Ci0gCQkJc2xlbiA9IDI7Ci1AQCAtMTA2MCw4ICsxMDYxLDYgQEAgY2RmX3JlYWRfcHJvcGVydHlfaW5mbyhjb25zdCBjZGZfc3RyZWFtX3QgKnNzdCwgY29uc3QgY2RmX2hlYWRlcl90ICpoLAotIAkJCQkJZ290byBvdXQ7Ci0gCQkJCWlucCArPSBuZWxlbTsKLSAJCQl9Ci0tCQkJRFBSSU5URigoIm5lbGVtZW50cyA9ICUiIFNJWkVfVF9GT1JNQVQgInVcbiIsCi0tCQkJICAgIG5lbGVtZW50cykpOwotIAkJCWZvciAoaiA9IDA7IGogPCBuZWxlbWVudHMgJiYgaSA8IHNoLnNoX3Byb3BlcnRpZXM7Ci0gCQkJICAgIGorKywgaSsrKQotIAkJCXsKLWRpZmYgLS1naXQgYS9zcmMvY2RmLmggYi9zcmMvY2RmLmgKLWluZGV4IDJmN2U1NTRiNy4uMDUwNTY2NjhmIDEwMDY0NAotLS0tIGEvc3JjL2NkZi5oCi0rKysgYi9zcmMvY2RmLmgKLUBAIC00OCw2ICs0OCw3IEBACi0gdHlwZWRlZiBpbnQzMl90IGNkZl9zZWNpZF90OwotIAotICNkZWZpbmUgQ0RGX0xPT1BfTElNSVQJCQkJCTEwMDAwCi0rI2RlZmluZSBDREZfRUxFTUVOVF9MSU1JVAkJCQkxMDAwMDAKLSAKLSAjZGVmaW5lIENERl9TRUNJRF9OVUxMCQkJCQkwCi0gI2RlZmluZSBDREZfU0VDSURfRlJFRQkJCQkJLTEKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjM3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5NmNjYzAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1TVU1NQVJZID0gIkZpbGUgY2xhc3NpZmljYXRpb24gdG9vbCIKLURFU0NSSVBUSU9OID0gIkZpbGUgYXR0ZW1wdHMgdG8gY2xhc3NpZnkgZmlsZXMgZGVwZW5kaW5nIFwKLW9uIHRoZWlyIGNvbnRlbnRzIGFuZCBwcmludHMgYSBkZXNjcmlwdGlvbiBpZiBhIG1hdGNoIGlzIGZvdW5kLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZGFyd2luc3lzLmNvbS9maWxlLyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotIyB0d28gY2xhdXNlIEJTRAotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO2JlZ2lubGluZT0yO21kNT0wMjUxZWFlYzExODhiMjBkOWE3MmM1MDJlY2ZkZGExYiIKLQotREVQRU5EUyA9ICJ6bGliIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiemxpYi1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9maWxlL2ZpbGUuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTE4MjE4LnBhdGNoIgotCi1TUkNSRVYgPSAiYTBkNWIwZTRlOWY5N2Q3NGE5OTExZTk1Y2VkZDU3OTg1MmUyNTM5OCIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtbGlic2VjY29tcCIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiZmlsZSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtmaWxlXSA9ICIke2JpbmRpcn0vZmlsZSIKLQotRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiLWUgRklMRV9DT01QSUxFPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9maWxlLW5hdGl2ZS9maWxlIgotRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiLWUgRklMRV9DT01QSUxFPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9maWxlLW5hdGl2ZS9maWxlIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9taXNjLyoubWdjIgotCi1kb19jb21waWxlX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0Jb2VfcnVubWFrZSBjaGVjawotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JY3JlYXRlX2NtZGxpbmVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9maWxlIFwKLQkJLS1tYWdpYy1maWxlICR7ZGF0YWRpcn0vbWlzYy9tYWdpYy5tZ2MKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotCWNyZWF0ZV9jbWRsaW5lX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmlsZSBcCi0JCS0tbWFnaWMtZmlsZSAke2RhdGFkaXJ9L21pc2MvbWFnaWMubWdjCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLVBST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgotIyBEb24ndCB1c2UgTkFUSVZFX1BBQ0tBR0VfUEFUSF9TVUZGSVggYXMgdGhhdCBoaWRlcyBsaWJtYWdpYyBmcm9tIGFueW9uZSB3aG8KLSMgZGVwZW5kcyBvbiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZS4KLWJpbmRpcl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIi9maWxlLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjM4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhmMDkxMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjM4LmJiCkBAIC0wLDAgKzEsNDkgQEAKK1NVTU1BUlkgPSAiRmlsZSBjbGFzc2lmaWNhdGlvbiB0b29sIgorREVTQ1JJUFRJT04gPSAiRmlsZSBhdHRlbXB0cyB0byBjbGFzc2lmeSBmaWxlcyBkZXBlbmRpbmcgXAorb24gdGhlaXIgY29udGVudHMgYW5kIHByaW50cyBhIGRlc2NyaXB0aW9uIGlmIGEgbWF0Y2ggaXMgZm91bmQuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5kYXJ3aW5zeXMuY29tL2ZpbGUvIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCisjIHR3byBjbGF1c2UgQlNECitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7YmVnaW5saW5lPTI7bWQ1PTAyNTFlYWVjMTE4OGIyMGQ5YTcyYzUwMmVjZmRkYTFiIgorCitERVBFTkRTID0gInpsaWIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJ6bGliLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ZpbGUvZmlsZS5naXQiCisKK1NSQ1JFViA9ICJlYzQxMDgzNjQ1Njg5YTc4N2NkZDAwY2IzYjViZjU3OGFhNzllNDZjIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcworCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1saWJzZWNjb21wIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJmaWxlIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2ZpbGVdID0gIiR7YmluZGlyfS9maWxlIgorCitFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgLWUgRklMRV9DT01QSUxFPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9maWxlLW5hdGl2ZS9maWxlIgorRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1lIEZJTEVfQ09NUElMRT0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZmlsZS1uYXRpdmUvZmlsZSIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vbWlzYy8qLm1nYyIKKworZG9fY29tcGlsZV9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCW9lX3J1bm1ha2UgY2hlY2sKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWNyZWF0ZV9jbWRsaW5lX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmlsZSBcCisJCS0tbWFnaWMtZmlsZSAke2RhdGFkaXJ9L21pc2MvbWFnaWMubWdjCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwljcmVhdGVfY21kbGluZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZpbGUgXAorCQktLW1hZ2ljLWZpbGUgJHtkYXRhZGlyfS9taXNjL21hZ2ljLm1nYworfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCitQUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKKyMgRG9uJ3QgdXNlIE5BVElWRV9QQUNLQUdFX1BBVEhfU1VGRklYIGFzIHRoYXQgaGlkZXMgbGlibWFnaWMgZnJvbSBhbnlvbmUgd2hvCisjIGRlcGVuZHMgb24gZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUuCitiaW5kaXJfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIvZmlsZS1uYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvMDAwMS1idWlsZC1BQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMtaW4tY29uZmlndXJlLmFjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4LzAwMDEtYnVpbGQtQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TLWluLWNvbmZpZ3VyZS5hYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGJmN2NlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4LzAwMDEtYnVpbGQtQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TLWluLWNvbmZpZ3VyZS5hYy5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIGVkMWY3ZTlkZTBkNmExZDVhOWU1ODFlMDJhNjM1OTNkMjJjZjFlNTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFeHBsb3JlcjA5IDxleHBsb3JlcjA5QGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgNCBTZXAgMjAxNyAxMDo0NzozMyArMDgwMAorU3ViamVjdDogW1BBVENIXSBidWlsZDogQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TIGluIGNvbmZpZ3VyZS5hYy4KKworVGhpcyB3b3VsZCwgZS5nLiBkZWZpbmUgX0dOVV9TT1VSQ0UgaW4gY29uZmlnLmgsIGVuYWJsaW5nIHRoZQorcmVhbGxvY2FycmF5KCkgcHJvdG90eXBlIGluIGdsaWJjIDIuMjYrIG9uIExpbnV4IHN5c3RlbXMgd2l0aCB0aGF0Cit2ZXJzaW9uIG9mIGdsaWJjLgorCitGaXhlcyAjMjQxLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDU1ZTc3NGIuLmM4NzlmZTEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTI1LDggKzI1LDEwIEBACisgIyBhdXRvY29uZiByZXF1aXJlbWVudHMgYW5kIGluaXRpYWxpemF0aW9uCisgCisgQUNfSU5JVChbdGhlIGZhc3QgbGV4aWNhbCBhbmFseXNlciBnZW5lcmF0b3JdLFsyLjYuNF0sW2ZsZXgtaGVscEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXRdLFtmbGV4XSkKKytBQ19QUkVSRVEoWzIuNjBdKQorIEFDX0NPTkZJR19TUkNESVIoW3NyYy9zY2FuLmxdKQorIEFDX0NPTkZJR19BVVhfRElSKFtidWlsZC1hdXhdKQorK0FDX1VTRV9TWVNURU1fRVhURU5TSU9OUworIExUX0lOSVQKKyBBTV9JTklUX0FVVE9NQUtFKFsxLjExLjMgLVduby1wb3J0YWJpbGl0eSBmb3JlaWduIGNoZWNrLW5ld3Mgc3RkLW9wdGlvbnMgZGlzdC1semlwIHBhcmFsbGVsLXRlc3RzIHN1YmRpci1vYmplY3RzXSkKKyBBQ19DT05GSUdfSEVBREVSKFtzcmMvY29uZmlnLmhdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4LzAwMDItYXZvaWQtYy1jb21tZW50cy1pbi1jLWNvZGUtZmFpbHMtd2l0aC1nY2MtNi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC8wMDAyLWF2b2lkLWMtY29tbWVudHMtaW4tYy1jb2RlLWZhaWxzLXdpdGgtZ2NjLTYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzOGNhNWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4LzAwMDItYXZvaWQtYy1jb21tZW50cy1pbi1jLWNvZGUtZmFpbHMtd2l0aC1nY2MtNi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLUZyb20gNzA3MmJlZmUxMzk3YWY0ZWIwMWMzZmY3ZWRmOTlmMGNkNTA3NjA4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMzAgQXVnIDIwMTYgMTQ6MjU6MzIgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYXZvaWQgYysrIGNvbW1lbnRzIGluIGMtY29kZSAtIGZhaWxzIHdpdGggZ2NjLTYKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotZml4ZXM6Ci0KLXwgZXJyb3I6IEMrKyBzdHlsZSBjb21tZW50cyBhcmUgbm90IGFsbG93ZWQgaW4gSVNPIEM5MAotfCBudW1fdG9fYWxsb2MgPSAxOyAvLyBBZnRlciBhbGwgdGhhdCB0YWxrLCB0aGlzIHdhcyBzZXQgdG8gMSBhbnl3YXlzLi4uCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSBzcmMvZmxleC5za2wgfCAyICstCi0gc3JjL3NjYW4uYyAgIHwgMiArLQotIHNyYy9za2VsLmMgICB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9mbGV4LnNrbCBiL3NyYy9mbGV4LnNrbAotaW5kZXggNzNhMGI5ZS4uZWQ3MTYyNyAxMDA2NDQKLS0tLSBhL3NyYy9mbGV4LnNrbAotKysrIGIvc3JjL2ZsZXguc2tsCi1AQCAtMjM1MCw3ICsyMzUwLDcgQEAgdm9pZCB5eUZsZXhMZXhlcjo6eXllbnN1cmVfYnVmZmVyX3N0YWNrKHZvaWQpCi0gCQkgKiBzY2FubmVyIHdpbGwgZXZlbiBuZWVkIGEgc3RhY2suIFdlIHVzZSAyIGluc3RlYWQgb2YgMSB0byBhdm9pZCBhbgotIAkJICogaW1tZWRpYXRlIHJlYWxsb2Mgb24gdGhlIG5leHQgY2FsbC4KLSAgICAgICAgICAqLwotLQkJbnVtX3RvX2FsbG9jID0gMTsgLy8gQWZ0ZXIgYWxsIHRoYXQgdGFsaywgdGhpcyB3YXMgc2V0IHRvIDEgYW55d2F5cy4uLgotKwkJbnVtX3RvX2FsbG9jID0gMTsgLyogQWZ0ZXIgYWxsIHRoYXQgdGFsaywgdGhpcyB3YXMgc2V0IHRvIDEgYW55d2F5cy4uLiAqLwotIAkJWVlfRyh5eV9idWZmZXJfc3RhY2spID0gKHN0cnVjdCB5eV9idWZmZXJfc3RhdGUqKil5eWFsbG9jCi0gCQkJCQkJCQkobnVtX3RvX2FsbG9jICogc2l6ZW9mKHN0cnVjdCB5eV9idWZmZXJfc3RhdGUqKQotIAkJCQkJCQkJTTRfWVlfQ0FMTF9MQVNUX0FSRyk7Ci1kaWZmIC0tZ2l0IGEvc3JjL3NjYW4uYyBiL3NyYy9zY2FuLmMKLWluZGV4IGI1NWRmMmQuLmYxZGNlNzUgMTAwNjQ0Ci0tLS0gYS9zcmMvc2Nhbi5jCi0rKysgYi9zcmMvc2Nhbi5jCi1AQCAtNDY3Miw3ICs0NjcyLDcgQEAgc3RhdGljIHZvaWQgeXllbnN1cmVfYnVmZmVyX3N0YWNrICh2b2lkKQotIAkJICogc2Nhbm5lciB3aWxsIGV2ZW4gbmVlZCBhIHN0YWNrLiBXZSB1c2UgMiBpbnN0ZWFkIG9mIDEgdG8gYXZvaWQgYW4KLSAJCSAqIGltbWVkaWF0ZSByZWFsbG9jIG9uIHRoZSBuZXh0IGNhbGwuCi0gICAgICAgICAgKi8KLS0JCW51bV90b19hbGxvYyA9IDE7IC8vIEFmdGVyIGFsbCB0aGF0IHRhbGssIHRoaXMgd2FzIHNldCB0byAxIGFueXdheXMuLi4KLSsJCW51bV90b19hbGxvYyA9IDE7IC8qIEFmdGVyIGFsbCB0aGF0IHRhbGssIHRoaXMgd2FzIHNldCB0byAxIGFueXdheXMuLi4qLwotIAkJKHl5X2J1ZmZlcl9zdGFjaykgPSAoc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSoqKXl5YWxsb2MKLSAJCQkJCQkJCShudW1fdG9fYWxsb2MgKiBzaXplb2Yoc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSopCi0gCQkJCQkJCQkpOwotZGlmZiAtLWdpdCBhL3NyYy9za2VsLmMgYi9zcmMvc2tlbC5jCi1pbmRleCBlZjY1N2QzLi4yNmNjODg5IDEwMDY0NAotLS0tIGEvc3JjL3NrZWwuYwotKysrIGIvc3JjL3NrZWwuYwotQEAgLTI1NjEsNyArMjU2MSw3IEBAIGNvbnN0IGNoYXIgKnNrZWxbXSA9IHsKLSAgICIJCSAqIHNjYW5uZXIgd2lsbCBldmVuIG5lZWQgYSBzdGFjay4gV2UgdXNlIDIgaW5zdGVhZCBvZiAxIHRvIGF2b2lkIGFuIiwKLSAgICIJCSAqIGltbWVkaWF0ZSByZWFsbG9jIG9uIHRoZSBuZXh0IGNhbGwuIiwKLSAgICIgICAgICAgICAqLyIsCi0tICAiCQludW1fdG9fYWxsb2MgPSAxOyAvLyBBZnRlciBhbGwgdGhhdCB0YWxrLCB0aGlzIHdhcyBzZXQgdG8gMSBhbnl3YXlzLi4uIiwKLSsgICIJCW51bV90b19hbGxvYyA9IDE7IC8qIEFmdGVyIGFsbCB0aGF0IHRhbGssIHRoaXMgd2FzIHNldCB0byAxIGFueXdheXMuLi4gKi8iLAotICAgIgkJWVlfRyh5eV9idWZmZXJfc3RhY2spID0gKHN0cnVjdCB5eV9idWZmZXJfc3RhdGUqKil5eWFsbG9jIiwKLSAgICIJCQkJCQkJCShudW1fdG9fYWxsb2MgKiBzaXplb2Yoc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSopIiwKLSAgICIJCQkJCQkJCU00X1lZX0NBTExfTEFTVF9BUkcpOyIsCi0tLSAKLTIuNS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9DVkUtMjAxNi02MzU0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4L0NWRS0yMDE2LTYzNTQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxNmFjN2EuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4L0NWRS0yMDE2LTYzNTQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1Gcm9tIDM5MzllY2NkZmY1OThmNDdlNWIzN2IwNWQ1OGJmMWI0NGQzNzk2ZTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogRnJpLCA3IE9jdCAyMDE2IDE0OjE1OjM4ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFByZXZlbnQgYnVmZmVyIG92ZXJmbG93IGluIHl5X2dldF9uZXh0X2J1ZmZlcgotCi1UaGlzIGlzIHVwc3RyZWFtIGNvbW1pdCBhNWNiZTkyOWFjMzI1NWQzNzFlNjk4ZjYyZGMyNTZhZmU3MDA2NDY2Ci13aXRoIHNvbWUgYWRkaXRpb25hbCBiYWNrcG9ydGluZyB0byBtYWtlIGJpbnV0aWxzIGJ1aWxkIGFnYWluLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE2LTYzNTQKLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBzcmMvZmxleC5za2wgfCAyICstCi0gc3JjL3NjYW4uYyAgIHwgMiArLQotIHNyYy9za2VsLmMgICB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9mbGV4LnNrbCBiL3NyYy9mbGV4LnNrbAotaW5kZXggZWQ3MTYyNy4uODE0ZDU2MiAxMDA2NDQKLS0tLSBhL3NyYy9mbGV4LnNrbAotKysrIGIvc3JjL2ZsZXguc2tsCi1AQCAtMTcxOCw3ICsxNzE4LDcgQEAgaW50IHl5RmxleExleGVyOjp5eV9nZXRfbmV4dF9idWZmZXIoKQotIAotIAllbHNlCi0gCQl7Ci0tCQkJeXlfc2l6ZV90IG51bV90b19yZWFkID0KLSsJCQlpbnQgbnVtX3RvX3JlYWQgPQotIAkJCVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfYnVmX3NpemUgLSBudW1iZXJfdG9fbW92ZSAtIDE7Ci0gCi0gCQl3aGlsZSAoIG51bV90b19yZWFkIDw9IDAgKQotZGlmZiAtLWdpdCBhL3NyYy9zY2FuLmMgYi9zcmMvc2Nhbi5jCi1pbmRleCBmMWRjZTc1Li4xOTQ5ODcyIDEwMDY0NAotLS0tIGEvc3JjL3NjYW4uYwotKysrIGIvc3JjL3NjYW4uYwotQEAgLTQxODEsNyArNDE4MSw3IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh2b2lkKQotIAotIAllbHNlCi0gCQl7Ci0tCQkJeXlfc2l6ZV90IG51bV90b19yZWFkID0KLSsJCQlpbnQgbnVtX3RvX3JlYWQgPQotIAkJCVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfYnVmX3NpemUgLSBudW1iZXJfdG9fbW92ZSAtIDE7Ci0gCi0gCQl3aGlsZSAoIG51bV90b19yZWFkIDw9IDAgKQotZGlmZiAtLWdpdCBhL3NyYy9za2VsLmMgYi9zcmMvc2tlbC5jCi1pbmRleCAyNmNjODg5Li4wMzQ0ZDE4IDEwMDY0NAotLS0tIGEvc3JjL3NrZWwuYwotKysrIGIvc3JjL3NrZWwuYwotQEAgLTE5MjksNyArMTkyOSw3IEBAIGNvbnN0IGNoYXIgKnNrZWxbXSA9IHsKLSAgICIiLAotICAgIgllbHNlIiwKLSAgICIJCXsiLAotLSAgIgkJCXl5X3NpemVfdCBudW1fdG9fcmVhZCA9IiwKLSsgICIJCQlpbnQgbnVtX3RvX3JlYWQgPSIsCi0gICAiCQkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZSAtIG51bWJlcl90b19tb3ZlIC0gMTsiLAotICAgIiIsCi0gICAiCQl3aGlsZSAoIG51bV90b19yZWFkIDw9IDAgKSIsCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9kb19ub3RfY3JlYXRlX3BkZl9kb2MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvZG9fbm90X2NyZWF0ZV9wZGZfZG9jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTc5MmVmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9kb19ub3RfY3JlYXRlX3BkZl9kb2MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgKGVtYmVkZGVkIHNwZWNpZmljKQotCi1TaWduZWQtb2ZmLWJ5OiBMYXVyZW50aXUgUGFsY3UgPGxhdXJlbnRpdS5wYWxjdUBpbnRlbC5jb20+Ci0KLUluZGV4OiBmbGV4LTIuNi4wL2RvYy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZsZXgtMi42LjAub3JpZy9kb2MvTWFrZWZpbGUuYW0KLSsrKyBmbGV4LTIuNi4wL2RvYy9NYWtlZmlsZS5hbQotQEAgLTIsNyArMiw3IEBAIGhlbHAybWFuID0gQEhFTFAyTUFOQAotIAotIGluZm9fVEVYSU5GT1MgPQlmbGV4LnRleGkKLSBkaXN0X21hbl9NQU5TID0gZmxleC4xCi0tZGlzdF9kb2NfREFUQT0gZmxleC5wZGYKLStFWFRSQV9ESVNUPSBmbGV4LnBkZgotIAotIENMRUFORklMRVMgPSBcCi0gCWZsZXguYXV4IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvcnVuLXB0ZXN0CmluZGV4IDE5ZGIzMzcuLjAzNzMwMWMgMTAwNzU1Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4L3J1bi1wdGVzdApAQCAtMiw0ICsyLDQgQEAKIAogIyBtYWtlIHdvdWxkIHdhbnQgdG8gcmVidWlsZCBzb21lIGZpbGVzIHdpdGggYSBjb21waWxlciBvdGhlcndpc2UgOi0vCiBtYWtlIEZMRVg9L3Vzci9iaW4vZmxleCAtdCBjaGVjay1URVNUUyB8fCB0cnVlCi1tYWtlIEZMRVg9L3Vzci9iaW4vZmxleCBjaGVjay1URVNUUworbWFrZSBGTEVYPS91c3IvYmluL2ZsZXggYWJzX2J1aWxkZGlyPS4vIGNoZWNrLVRFU1RTCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXhfMi42LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXhfMi42LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliZGQ5OWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4XzIuNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotU1VNTUFSWSA9ICJGbGV4IChUaGUgRmFzdCBMZXhpY2FsIEFuYWx5emVyKSIKLURFU0NSSVBUSU9OID0gIkZsZXggaXMgYSBmYXN0IGxleGljYWwgYW5hbHlzZXIgZ2VuZXJhdG9yLiAgRmxleCBpcyBhIHRvb2wgZm9yIGdlbmVyYXRpbmcgcHJvZ3JhbXMgdGhhdCByZWNvZ25pemUgXAotbGV4aWNhbCBwYXR0ZXJucyBpbiB0ZXh0LiIKLUhPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZmxleC8iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi0KLURFUEVORFMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICdiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUnLCAnJywgZCl9IgotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNDc0MmNmOTJlODkwNDBiMzk0ODZhNjIxOWI2ODA2NyIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZmxleC9mbGV4LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2RvX25vdF9jcmVhdGVfcGRmX2RvYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLWFkZC1hLXRhcmdldC1mb3ItYnVpbGRpbmctdGVzdHMtd2l0aG91dC1ydW5uaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1hdm9pZC1jLWNvbW1lbnRzLWluLWMtY29kZS1mYWlscy13aXRoLWdjYy02LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTYzNTQucGF0Y2ggXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJycsICdmaWxlOi8vZGlzYWJsZS10ZXN0cy5wYXRjaCcsIGQpfSBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjI2NjI3MGYxM2M0OGVkMDQzZDk1NjQ4MDc1MDg0ZDU5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI0ZTYxMWVmNWE0NzAzYTE5MTAxMmY4MGMxMDI3ZGM5ZDEyNTU1MTgzY2UwZWNkNDZmMzYzNmU1ODdlOWI4ZTkiCi0KLSMgRmxleCBoYXMgbW92ZWQgdG8gZ2l0aHViIGZyb20gMi42LjEgb253YXJkcwotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS93ZXN0ZXMvZmxleC9yZWxlYXNlcyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImZsZXgtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwdGVzdAotCi1NNCA9ICIke2JpbmRpcn0vbTQiCi1NNF9jbGFzcy1uYXRpdmUgPSAiJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L200IgotRVhUUkFfT0VDT05GICs9ICJhY19jdl9wYXRoX000PSR7TTR9IgotRVhUUkFfT0VNQUtFICs9ICJtND0ke1NUQUdJTkdfQklORElSX05BVElWRX0vbTQiCi0KLUVYVFJBX09FTUFLRSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICdGTEVYPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9mbGV4JywgJycsIGQpfSIKLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZsZXggTTQ9JHtNNH0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZsZXggTTQ9JHtNNH0KLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LWxpYmZsIgotCi1GSUxFU18ke1BOfS1saWJmbCA9ICIke2xpYmRpcn0vbGliZmwuc28uKiAke2xpYmRpcn0vbGliZmxfcGljLnNvLioiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJtNCIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJiYXNoIGdhd2sgbWFrZSIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIC1DICR7Qn0vdGVzdHMgLWYgJHtCfS90ZXN0cy9NYWtlZmlsZSB0b3BfYnVpbGRkaXI9JHtCfSBJTkNMVURFUz0tSSR7U30vc3JjIGJ1aWxkdGVzdHMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQlta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS9idWlsZC1hdXgvCi0JY3AgJHtTfS9idWlsZC1hdXgvdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0vYnVpbGQtYXV4LwotCWNwIC1yICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfQotCWNwIC1yICR7Qn0vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfQotCXNlZCAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCi0JICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKLQkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKLQkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0JICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXC1lICdzL15NYWtlZmlsZTovX01ha2VmaWxlOi8nIFwKLQkgICAgLWUgJ3MvXnNyY2RpciA9IFwoLipcKS9zcmNkaXIgPSAuLycgLWUgJ3MvXnRvcF9zcmNkaXIgPSBcKC4qXCkvdG9wX3NyY2RpciA9IC4vJyBcCi0JICAgIC1lICdzL15idWlsZGRpciA9IFwoLipcKS9idWlsZGRpciA9IC4vJyAtZSAncy9edG9wX2J1aWxkZGlyID0gXCguKlwpL3RvcF9idWlsZGRpciA9IC4vJyBcCi0JICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCi19Ci0KLSMgTm90IEFwYWNoZSBGbGV4LCBvciBBZG9iZSBGbGV4LCBvciBJQk0gRmxleC4KLUNWRV9QUk9EVUNUID0gImZsZXhfcHJvamVjdDpmbGV4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4XzIuNi40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4XzIuNi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzYjI1NDcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXhfMi42LjQuYmIKQEAgLTAsMCArMSw3NiBAQAorU1VNTUFSWSA9ICJGbGV4IChUaGUgRmFzdCBMZXhpY2FsIEFuYWx5emVyKSIKK0RFU0NSSVBUSU9OID0gIkZsZXggaXMgYSBmYXN0IGxleGljYWwgYW5hbHlzZXIgZ2VuZXJhdG9yLiAgRmxleCBpcyBhIHRvb2wgZm9yIGdlbmVyYXRpbmcgcHJvZ3JhbXMgdGhhdCByZWNvZ25pemUgXAorbGV4aWNhbCBwYXR0ZXJucyBpbiB0ZXh0LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZmxleC8iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCisKK0RFUEVORFMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICdiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUnLCAnJywgZCl9IgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNDc0MmNmOTJlODkwNDBiMzk0ODZhNjIxOWI2ODA2NyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vd2VzdGVzL2ZsZXgvcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9L2ZsZXgtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLWFkZC1hLXRhcmdldC1mb3ItYnVpbGRpbmctdGVzdHMtd2l0aG91dC1ydW5uaW4ucGF0Y2ggXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJycsICdmaWxlOi8vZGlzYWJsZS10ZXN0cy5wYXRjaCcsIGQpfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLUFDX1VTRV9TWVNURU1fRVhURU5TSU9OUy1pbi1jb25maWd1cmUuYWMucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyODgyZTMxNzk3NDhjYzlmOWMyM2VjNTkzZDZhZGM4ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlODdhYWUwMzJiZjA3YzI2Zjg1YWMwZWQzMjUwOTk4YzM3NjIxZDk1ZjhiZDc0OGIzMWYxNWIzM2M0NWVlOTk1IgorCisjIEZsZXggaGFzIG1vdmVkIHRvIGdpdGh1YiBmcm9tIDIuNi4xIG9ud2FyZHMKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vd2VzdGVzL2ZsZXgvcmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJmbGV4LSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gcHRlc3QKKworTTQgPSAiJHtiaW5kaXJ9L200IgorTTRfY2xhc3MtbmF0aXZlID0gIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9tNCIKK0VYVFJBX09FQ09ORiArPSAiYWNfY3ZfcGF0aF9NND0ke000fSBhY19jdl9mdW5jX3JlYWxsb2NhcnJheT1ubyIKK0VYVFJBX09FTUFLRSArPSAibTQ9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L200IgorCitFWFRSQV9PRU1BS0UgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnRkxFWD0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZmxleCcsICcnLCBkKX0iCisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9mbGV4IE00PSR7TTR9Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9mbGV4IE00PSR7TTR9Cit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1saWJmbCIKKworRklMRVNfJHtQTn0tbGliZmwgPSAiJHtsaWJkaXJ9L2xpYmZsLnNvLiogJHtsaWJkaXJ9L2xpYmZsX3BpYy5zby4qIgorCitSREVQRU5EU18ke1BOfSArPSAibTQiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCBnYXdrIG1ha2UiCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJb2VfcnVubWFrZSAtQyAke0J9L3Rlc3RzIC1mICR7Qn0vdGVzdHMvTWFrZWZpbGUgdG9wX2J1aWxkZGlyPSR7Qn0gSU5DTFVERVM9LUkke1N9L3NyYyBidWlsZHRlc3RzCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vYnVpbGQtYXV4LworCWNwICR7U30vYnVpbGQtYXV4L3Rlc3QtZHJpdmVyICR7RH0ke1BURVNUX1BBVEh9L2J1aWxkLWF1eC8KKwljcCAtciAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtciAke0J9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0KKwlzZWQgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwtZSAncy9eTWFrZWZpbGU6L19NYWtlZmlsZTovJyBcCisJICAgIC1lICdzL15zcmNkaXIgPSBcKC4qXCkvc3JjZGlyID0gLi8nIC1lICdzL150b3Bfc3JjZGlyID0gXCguKlwpL3RvcF9zcmNkaXIgPSAuLycgXAorCSAgICAtZSAncy9eYnVpbGRkaXIgPSBcKC4qXCkvYnVpbGRkaXIgPSAuLycgLWUgJ3MvXnRvcF9idWlsZGRpciA9IFwoLipcKS90b3BfYnVpbGRkaXIgPSAuLycgXAorCSAgICAtZSAnczoke1VOSU5BVElWRV9MT0FERVJ9OiR7YmFzZV9iaW5kaXJ9L2ZhbHNlOmcnIFwKKwkgICAgLWkgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKK30KKyMgVGhlIHVuaW5hdGl2ZSBsb2FkZXIgaXMgZGlmZmVyZW50IG9uIGkzODYgJiB4ODZfNjQgaG9zdHMuIFNpbmNlIGl0IGlzIG9ubHkKKyMgYmVpbmcgcmVwbGFjZWQgd2l0aCAvYmluL2ZhbHNlIGFueXdheSwgaXQgZG9lc24ndCBuZWVkIHRvIGJlIHBhcnQgb2YgdGhlIHRhc2sKKyMgaGFzaAorZG9faW5zdGFsbF9wdGVzdFt2YXJkZXBzZXhjbHVkZV0gKz0gIlVOSU5BVElWRV9MT0FERVIiCisKKyMgTm90IEFwYWNoZSBGbGV4LCBvciBBZG9iZSBGbGV4LCBvciBJQk0gRmxleC4KK0NWRV9QUk9EVUNUID0gImZsZXhfcHJvamVjdDpmbGV4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjM5NTk5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEyMiArMCwwIEBACi1yZXF1aXJlIGdjYy1jb21tb24uaW5jCi0KLSMgVGhpcmQgZGlnaXQgaW4gUFYgc2hvdWxkIGJlIGluY3JlbWVudGVkIGFmdGVyIGEgbWlub3IgcmVsZWFzZQotCi1QViA9ICI5LjIuMCIKLQotIyBCSU5WIHNob3VsZCBiZSBpbmNyZW1lbnRlZCB0byBhIHJldmlzaW9uIGFmdGVyIGEgbWlub3IgZ2NjIHJlbGVhc2UKLQotQklOViA9ICI5LjIuMCIKLQotRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vZ2NjLTkuMjoke0ZJTEVfRElSTkFNRX0vZ2NjLTkuMi9iYWNrcG9ydDoiCi0KLURFUEVORFMgPSsgIm1wZnIgZ21wIGxpYm1wYyB6bGliIGZsZXgtbmF0aXZlIgotTkFUSVZFREVQUyA9ICJtcGZyLW5hdGl2ZSBnbXAtbmF0aXZlIGxpYm1wYy1uYXRpdmUgemxpYi1uYXRpdmUgZmxleC1uYXRpdmUiCi0KLUxJQ0VOU0UgPSAiR1BMLTMuMC13aXRoLUdDQy1leGNlcHRpb24gJiBHUEx2MyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJcCi0gICAgZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKLSAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCi0gICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCi0gICAgZmlsZTovL0NPUFlJTkcuUlVOVElNRTttZDU9ZmU2MGQ4NzA0ODU2N2Q0ZmU4YzhhMGVkMjQ0OGJjYzggXAotIgotCi1CQVNFVVJJID89ICIke0dOVV9NSVJST1J9L2djYy9nY2MtJHtQVn0vZ2NjLSR7UFZ9LnRhci54eiIKLSNSRUxFQVNFID89ICI1YTVjYTJkIgotI0JBU0VVUkkgPz0gImh0dHBzOi8vcmVwby5vci5jei9vZmZpY2lhbC1nY2MuZ2l0L3NuYXBzaG90LyR7UkVMRUFTRX0udGFyLmd6O2Rvd25sb2FkZmlsZW5hbWU9Z2NjLSR7UkVMRUFTRX0udGFyLmd6IgotU1JDX1VSSSA9ICJcCi0gICAgICAgICAgICR7QkFTRVVSSX0gXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtb3B0aW9uYWwtbGlic3RkYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLURpc2FibGUtc2R0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTQtbGlidG9vbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE1LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNi1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTctQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE4LWV4cG9ydC1DUFAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMS1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjItVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIzLWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI0LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI1LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNi1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjctRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI5LUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMC1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMxLUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMyLWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMy1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNC1maXgtc2VnbWVudGF0aW9uLWZhdWx0LWluLXByZWNvbXBpbGVkLWhlYWRlci1nZW5lcmF0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzUtRml4LWZvci10ZXN0c3VpdGUtZmFpbHVyZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM2LVJlLWludHJvZHVjZS1zcGUtY29tbWFuZGxpbmUtb3B0aW9ucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOS0xNDI1MC5wYXRjaCBcCi0JICAgZmlsZTovL0NWRS0yMDE5LTE1ODQ3XzEucGF0Y2ggXAotCSAgIGZpbGU6Ly9DVkUtMjAxOS0xNTg0N18yLnBhdGNoIFwKLQkgICBmaWxlOi8vQ1ZFLTIwMTktMTU4NDdfMy5wYXRjaCBcCi0iCi1TID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vZ2NjLSR7UFZ9IgotU1JDX1VSSVttZDVzdW1dID0gIjM4MThhZDg2MDA0NDdmMDUzNDkwOTgyMzJjMmRkYzc4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVhNmVmMDhmMTIxMjM5ZGE1Njk1Zjc2YzliMzM2MzdhMTE4ZGNmNjNlMjQxNjQ0MjIyMzE5MTdmYTYxZmIyMDYiCi0KLSMgRm9yIGRldiByZWxlYXNlIHNuYXBzaG90dGluZwotI1MgPSAiJHtUTVBESVJ9L3dvcmstc2hhcmVkL2djYy0ke1BWfS0ke1BSfS9vZmZpY2lhbC1nY2MtJHtSRUxFQVNFfSIKLSNCID0gIiR7V09SS0RJUn0vZ2NjLSR7UFZ9L2J1aWxkLiR7SE9TVF9TWVN9LiR7VEFSR0VUX1NZU30iCi0KLSMgTGFuZ3VhZ2UgT3ZlcnJpZGVzCi1GT1JUUkFOID0gIiIKLUpBVkEgPSAiIgotCi1MVE8gPSAiLS1lbmFibGUtbHRvIgotU1NQID89ICItLWRpc2FibGUtbGlic3NwIgotU1NQX21pbmd3MzIgPSAiLS1lbmFibGUtbGlic3NwIgotCi1FWFRSQV9PRUNPTkZfQkFTRSA9ICJcCi0gICAgJHtMVE99IFwKLSAgICAke1NTUH0gXAotICAgIC0tZW5hYmxlLWxpYml0bSBcCi0gICAgLS1kaXNhYmxlLWJvb3RzdHJhcCBcCi0gICAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAotICAgIC0td2l0aC1zeXN0ZW0temxpYiBcCi0gICAgJHtAJy0td2l0aC1saW5rZXItaGFzaC1zdHlsZT0ke0xJTktFUl9IQVNIX1NUWUxFfScgaWYgJyR7TElOS0VSX0hBU0hfU1RZTEV9JyBlbHNlICcnfSBcCi0gICAgLS1lbmFibGUtbGlua2VyLWJ1aWxkLWlkIFwKLSAgICAtLXdpdGgtcHBsPW5vIFwKLSAgICAtLXdpdGgtY2xvb2c9bm8gXAotICAgIC0tZW5hYmxlLWNoZWNraW5nPXJlbGVhc2UgXAotICAgIC0tZW5hYmxlLWNoZWFkZXJzPWNfZ2xvYmFsIFwKLSAgICAtLXdpdGhvdXQtaXNsIFwKLSIKLQotRVhUUkFfT0VDT05GX0lOSVRJQUwgPSAiXAotICAgIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKLSAgICAtLWRpc2FibGUtbGliZ29tcCBcCi0gICAgLS1kaXNhYmxlLWxpYml0bSBcCi0gICAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoIFwKLSAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAotICAgIC0tZGlzYWJsZS1sdG8gXAotICAgIC0tZGlzYWJsZS1wbHVnaW4gXAotICAgIC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZCBcCi0gICAgLS1lbmFibGUtZGVjaW1hbC1mbG9hdD1ubyBcCi0gICAgLS13aXRob3V0LWlzbCBcCi0gICAgLS1kaXNhYmxlLWxpYnNzcCBcCi0iCi0KLUVYVFJBX09FQ09ORl9QQVRIUyA9ICJcCi0gICAgLS13aXRoLWd4eC1pbmNsdWRlLWRpcj0vbm90L2V4aXN0e3RhcmdldF9pbmNsdWRlZGlyfS9jKysvJHtCSU5WfSBcCi0gICAgLS13aXRoLXN5c3Jvb3Q9L25vdC9leGlzdCBcCi0gICAgLS13aXRoLWJ1aWxkLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IFwKLSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTA2NWMzMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDg2MzMyNWVjM2M2ZWI0OTg3YmU2MzUwOWFjNDA3YjJkMTM2MTczNDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODozNzoxMSArMDQwMAotU3ViamVjdDogW1BBVENIIDAxLzM2XSBnY2MtNC4zLjE6IEFSQ0hfRkxBR1NfRk9SX1RBUkdFVAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotLS0tCi0gY29uZmlndXJlICAgIHwgMiArLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggYWJkOTNhOTkwYTkuLmIxMjEwODhkNzc4IDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC03NjAzLDcgKzc2MDMsNyBAQCBmaQotICMgZm9yIHRhcmdldF9hbGlhcyBhbmQgZ2NjIGRvZXNuJ3QgbWFuYWdlIGl0IGNvbnNpc3RlbnRseS4KLSB0YXJnZXRfY29uZmlnYXJncz0iLS1jYWNoZS1maWxlPS4vY29uZmlnLmNhY2hlICR7dGFyZ2V0X2NvbmZpZ2FyZ3N9IgotIAotLUZMQUdTX0ZPUl9UQVJHRVQ9Ci0rRkxBR1NfRk9SX1RBUkdFVD0iJEFSQ0hfRkxBR1NfRk9SX1RBUkdFVCIKLSBjYXNlICIgJHRhcmdldF9jb25maWdkaXJzICIgaW4KLSAgKiIgbmV3bGliICIqKQotICAgY2FzZSAiICR0YXJnZXRfY29uZmlnYXJncyAiIGluCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA5ZGI0ZmQxNGFhMi4uYWFkOTNjNGQxODMgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTMxMTksNyArMzExOSw3IEBAIGZpCi0gIyBmb3IgdGFyZ2V0X2FsaWFzIGFuZCBnY2MgZG9lc24ndCBtYW5hZ2UgaXQgY29uc2lzdGVudGx5LgotIHRhcmdldF9jb25maWdhcmdzPSItLWNhY2hlLWZpbGU9Li9jb25maWcuY2FjaGUgJHt0YXJnZXRfY29uZmlnYXJnc30iCi0gCi0tRkxBR1NfRk9SX1RBUkdFVD0KLStGTEFHU19GT1JfVEFSR0VUPSIkQVJDSF9GTEFHU19GT1JfVEFSR0VUIgotIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2RpcnMgIiBpbgotICAqIiBuZXdsaWIgIiopCi0gICBjYXNlICIgJHRhcmdldF9jb25maWdhcmdzICIgaW4KLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDItZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDAyLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTExNmU3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDItZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMDMgKzAsMCBAQAotRnJvbSA2OGU3OGJjMTVkZTIxNWZhMTVjN2Q4YjU2YmQyZTJiMDUzOWIzNGZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NTk6MDAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwMi8zNl0gZ2NjOiBwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0KLUFkZCAvc3cvaW5jbHVkZSBhbmQgL29wdC9pbmNsdWRlIGJhc2VkIG9uIHRoZSBvcmlnaW5hbAotemVja2Utbm8taG9zdC1pbmNsdWRlcy5wYXRjaCBwYXRjaC4gIFRoZSBvcmlnaW5hbCBwYXRjaCBjaGVja2VkIGZvcgotL3Vzci9pbmNsdWRlLCAvc3cvaW5jbHVkZSBhbmQgL29wdC9pbmNsdWRlIGFuZCB0aGVuIHRyaWdnZXJlZCBhIGZhaWx1cmUgYW5kCi1hYm9ydGVkLgotCi1JbnN0ZWFkLCB3ZSBhZGQgdGhlIHR3byBtaXNzaW5nIGl0ZW1zIHRvIHRoZSBjdXJyZW50IHNjYW4uICBJZiB0aGUgdXNlcgotd2FudHMgdGhpcyB0byBiZSBhIGZhaWx1cmUsIHRoZXkgY2FuIGFkZCAiLVdlcnJvcj1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIi4KLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvY29tbW9uLm9wdCAgICAgIHwgIDQgKysrKwotIGdjYy9jb25maWcuaW4gICAgICAgfCAgNiArKysrKysKLSBnY2MvY29uZmlndXJlICAgICAgIHwgMTYgKysrKysrKysrKysrKysrKwotIGdjYy9jb25maWd1cmUuYWMgICAgfCAxMCArKysrKysrKysrCi0gZ2NjL2RvYy9pbnZva2UudGV4aSB8ICA5ICsrKysrKysrKwotIGdjYy9nY2MuYyAgICAgICAgICAgfCAgMiArKwotIGdjYy9pbmNwYXRoLmMgICAgICAgfCAyMSArKysrKysrKysrKysrKysrKysrKysKLSA3IGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9jb21tb24ub3B0IGIvZ2NjL2NvbW1vbi5vcHQKLWluZGV4IGQzNDJjNGYzNzQ5Li5jNjRmZDRhNmM1MCAxMDA2NDQKLS0tLSBhL2djYy9jb21tb24ub3B0Ci0rKysgYi9nY2MvY29tbW9uLm9wdAotQEAgLTY4NCw2ICs2ODQsMTAgQEAgV3JldHVybi1sb2NhbC1hZGRyCi0gQ29tbW9uIFZhcih3YXJuX3JldHVybl9sb2NhbF9hZGRyKSBJbml0KDEpIFdhcm5pbmcKLSBXYXJuIGFib3V0IHJldHVybmluZyBhIHBvaW50ZXIvcmVmZXJlbmNlIHRvIGEgbG9jYWwgb3IgdGVtcG9yYXJ5IHZhcmlhYmxlLgotIAotK1dwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rQ29tbW9uIFZhcihmbGFnX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMpIEluaXQoMSkgV2FybmluZwotK1dhcm4gZm9yIC1JIGFuZCAtTCBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyBpZiBjcm9zcyBjb21waWxpbmcKLSsKLSBXc2hhZG93Ci0gQ29tbW9uIFZhcih3YXJuX3NoYWRvdykgV2FybmluZwotIFdhcm4gd2hlbiBvbmUgdmFyaWFibGUgc2hhZG93cyBhbm90aGVyLiAgU2FtZSBhcyAtV3NoYWRvdz1nbG9iYWwuCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy5pbiBiL2djYy9jb25maWcuaW4KLWluZGV4IGE3MThjZWFmM2RhLi41NzEzMzQyZWZiMSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcuaW4KLSsrKyBiL2djYy9jb25maWcuaW4KLUBAIC0yMDAsNiArMjAwLDEyIEBACi0gI2VuZGlmCi0gCi0gCi0rLyogRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3RvcmllcyAqLwotKyNpZm5kZWYgVVNFRF9GT1JfVEFSR0VUCi0rI3VuZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCi0rI2VuZGlmCi0rCi0rCi0gLyogRGVmaW5lIGlmIHlvdSB3YW50IGFsbCBvcGVyYXRpb25zIG9uIFJUTCAodGhlIGJhc2ljIGRhdGEgc3RydWN0dXJlIG9mIHRoZQotICAgIG9wdGltaXplciBhbmQgYmFjayBlbmQpIHRvIGJlIGNoZWNrZWQgZm9yIGR5bmFtaWMgdHlwZSBzYWZldHkgYXQgcnVudGltZS4KLSAgICBUaGlzIGlzIHF1aXRlIGV4cGVuc2l2ZS4gKi8KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQotaW5kZXggNDgxMDcxYjQyNjUuLmE2ZWEzYThhODRjIDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTk5NSw2ICs5OTUsNyBAQCB3aXRoX3N5c3RlbV96bGliCi0gZW5hYmxlX21haW50YWluZXJfbW9kZQotIGVuYWJsZV9saW5rX211dGV4Ci0gZW5hYmxlX3ZlcnNpb25fc3BlY2lmaWNfcnVudGltZV9saWJzCi0rZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKLSBlbmFibGVfcGx1Z2luCi0gZW5hYmxlX2hvc3Rfc2hhcmVkCi0gZW5hYmxlX2xpYnF1YWRtYXRoX3N1cHBvcnQKLUBAIC0xNzQ4LDYgKzE3NDksOCBAQCBPcHRpb25hbCBGZWF0dXJlczoKLSAgIC0tZW5hYmxlLXZlcnNpb24tc3BlY2lmaWMtcnVudGltZS1saWJzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IHRoYXQgcnVudGltZSBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYSBjb21waWxlci1zcGVjaWZpYyBkaXJlY3RvcnkKLSsgIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3RvcmllcwotICAgLS1lbmFibGUtcGx1Z2luICAgICAgICAgZW5hYmxlIHBsdWdpbiBzdXBwb3J0Ci0gICAtLWVuYWJsZS1ob3N0LXNoYXJlZCAgICBidWlsZCBob3N0IGNvZGUgYXMgc2hhcmVkIGxpYnJhcmllcwotICAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoLXN1cHBvcnQKLUBAIC0yOTc1MCw2ICsyOTc1MywxOSBAQCBpZiB0ZXN0ICIke2VuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicytzZXR9IiA9IHNldDsgdGhlbiA6Ci0gZmkKLSAKLSAKLSsjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICBlbmFibGV2YWw9JGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOwotK2Vsc2UKLSsgIGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vCi0rZmkKLSsKLStpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCi0rCi0rJGFzX2VjaG8gIiNkZWZpbmUgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMgMSIgPj5jb25mZGVmcy5oCi0rCi0rZmkKLSsKLSAjIFN1YnN0aXR1dGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKLSAKLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggY2UyODI1NTgwYzYuLmQ0MmJiZDRmZDFjIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTYzNzgsNiArNjM3OCwxNiBAQCBBQ19BUkdfRU5BQkxFKHZlcnNpb24tc3BlY2lmaWMtcnVudGltZS1saWJzLAotICAgICAgICAgICAgICAgICBbc3BlY2lmeSB0aGF0IHJ1bnRpbWUgbGlicmFyaWVzIHNob3VsZCBiZQotICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGluIGEgY29tcGlsZXItc3BlY2lmaWMgZGlyZWN0b3J5XSldKQotIAotK0FDX0FSR19FTkFCTEUoW3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAotKyAgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXNdKSwsCi0rICAgICAgICAgICAgIFtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ub10pCi0raWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgotKyAgQUNfREVGSU5FKFtFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU10sCi0rICAgICAgICAgICBbMV0sCi0rICAgICAgICAgICBbRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3Rvcmllc10pCi0rZmkKLSsKLSAjIFN1YnN0aXR1dGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKLSBBQ19TVUJTVChzdWJkaXJzKQotIEFDX1NVQlNUKHNyY2RpcikKLWRpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotaW5kZXggNmVmMzZjZTAyYWEuLjA5NDE0ZDhjYzA1IDEwMDY0NAotLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQotKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotQEAgLTMzMiw2ICszMzIsNyBAQCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCi0gLVdwYWNrZWQgIC1XcGFja2VkLWJpdGZpZWxkLWNvbXBhdCAtV3BhY2tlZC1ub3QtYWxpZ25lZCAgLVdwYWRkZWQgQGdvbAotIC1XcGFyZW50aGVzZXMgIC1Xbm8tcGVkYW50aWMtbXMtZm9ybWF0IEBnb2wKLSAtV3BsYWNlbWVudC1uZXcgIC1XcGxhY2VtZW50LW5ldz1AdmFye259IEBnb2wKLSstV25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMgQGdvbAotIC1XcG9pbnRlci1hcml0aCAgLVdwb2ludGVyLWNvbXBhcmUgIC1Xbm8tcG9pbnRlci10by1pbnQtY2FzdCBAZ29sCi0gLVduby1wcmFnbWFzICAtV25vLXByaW8tY3Rvci1kdG9yICAtV3JlZHVuZGFudC1kZWNscyBAZ29sCi0gLVdyZXN0cmljdCAgLVduby1yZXR1cm4tbG9jYWwtYWRkciBAZ29sCi1AQCAtNjI4OSw2ICs2MjkwLDE0IEBAIG1hZGUgdXAgb2YgZGF0YSBvbmx5IGFuZCB0aHVzIHJlcXVpcmVzIG5vIHNwZWNpYWwgdHJlYXRtZW50LiAgQnV0LCBmb3IKLSBtb3N0IHRhcmdldHMsIGl0IGlzIG1hZGUgdXAgb2YgY29kZSBhbmQgdGh1cyByZXF1aXJlcyB0aGUgc3RhY2sgdG8gYmUKLSBtYWRlIGV4ZWN1dGFibGUgaW4gb3JkZXIgZm9yIHRoZSBwcm9ncmFtIHRvIHdvcmsgcHJvcGVybHkuCi0gCi0rQGl0ZW0gLVduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rQG9waW5kZXggV25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLStEbyBub3Qgd2FybiBmb3IgQG9wdGlvbnstSX0gb3IgQG9wdGlvbnstTH0gb3B0aW9ucyB1c2luZyBzeXN0ZW0KLStkaXJlY3RvcmllcyBzdWNoIGFzIEBmaWxley91c3IvaW5jbHVkZX0gd2hlbiBjcm9zcyBjb21waWxpbmcuICBUaGlzCi0rb3B0aW9uIGlzIGludGVuZGVkIGZvciB1c2UgaW4gY2hyb290IGVudmlyb25tZW50cyB3aGVuIHN1Y2gKLStkaXJlY3RvcmllcyBjb250YWluIHRoZSBjb3JyZWN0IGhlYWRlcnMgYW5kIGxpYnJhcmllcyBmb3IgdGhlIHRhcmdldAotK3N5c3RlbSByYXRoZXIgdGhhbiB0aGUgaG9zdC4KLSsKLSBAaXRlbSAtV2Zsb2F0LWVxdWFsCi0gQG9waW5kZXggV2Zsb2F0LWVxdWFsCi0gQG9waW5kZXggV25vLWZsb2F0LWVxdWFsCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCA0ZjU3NzY1YjAxMi4uYTI2MDFhNmJiMDYgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTEwNDIsNiArMTA0Miw4IEBAIHByb3BlciBwb3NpdGlvbiBhbW9uZyB0aGUgb3RoZXIgb3V0cHV0IGZpbGVzLiAgKi8KLSAgICAiJXtmdXNlLWxkPSo6LWZ1c2UtbGQ9JSp9ICIgTElOS19DT01QUkVTU19ERUJVR19TUEVDIFwKLSAgICAiJVggJXtvKn0gJXtlKn0gJXtOfSAle259ICV7cn1cCi0gICAgICV7c30gJXt0fSAle3UqfSAle3p9ICV7Wn0gJXshbm9zdGRsaWI6JXshcjoleyFub3N0YXJ0ZmlsZXM6JVN9fX0gXAotKyAgICAle1duby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzOi0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc30gXAotKyAgICAle1dlcnJvcj1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzOi0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc30gXAotICAgICAle3N0YXRpY3xuby1waWV8c3RhdGljLXBpZTp9ICVAe0wqfSAlKG1md3JhcCkgJShsaW5rX2xpYmdjYykgIiBcCi0gICAgIFZUQUJMRV9WRVJJRklDQVRJT05fU1BFQyAiICIgU0FOSVRJWkVSX0VBUkxZX1NQRUMgIiAlbyAiIiBcCi0gICAgICV7Zm9wZW5hY2N8Zm9wZW5tcHwlOmd0KCV7ZnRyZWUtcGFyYWxsZWxpemUtbG9vcHM9KjolKn0gMSk6XAotZGlmZiAtLWdpdCBhL2djYy9pbmNwYXRoLmMgYi9nY2MvaW5jcGF0aC5jCi1pbmRleCBiY2JlMjA4MjkwNS4uNTc1MjI5OGJiZjIgMTAwNjQ0Ci0tLS0gYS9nY2MvaW5jcGF0aC5jCi0rKysgYi9nY2MvaW5jcGF0aC5jCi1AQCAtMjYsNiArMjYsNyBAQAotICNpbmNsdWRlICJpbnRsLmgiCi0gI2luY2x1ZGUgImluY3BhdGguaCIKLSAjaW5jbHVkZSAiY3BwZGVmYXVsdC5oIgotKyNpbmNsdWRlICJkaWFnbm9zdGljLWNvcmUuaCIKLSAKLSAvKiBNaWNyb3NvZnQgV2luZG93cyBkb2VzIG5vdCBuYXRpdmVseSBzdXBwb3J0IGlub2Rlcy4KLSAgICBWTVMgaGFzIG5vbi1udW1lcmljIGlub2Rlcy4gICovCi1AQCAtMzkzLDYgKzM5NCwyNiBAQCBtZXJnZV9pbmNsdWRlX2NoYWlucyAoY29uc3QgY2hhciAqc3lzcm9vdCwgY3BwX3JlYWRlciAqcGZpbGUsIGludCB2ZXJib3NlKQotIAl9Ci0gICAgICAgZnByaW50ZiAoc3RkZXJyLCBfKCJFbmQgb2Ygc2VhcmNoIGxpc3QuXG4iKSk7Ci0gICAgIH0KLSsKLSsjaWZkZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKLSsgIGlmIChmbGFnX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMpCi0rICAgIHsKLSsgICAgICAgc3RydWN0IGNwcF9kaXIgKnA7Ci0rCi0rICAgICAgIGZvciAocCA9IGhlYWRzW0lOQ19RVU9URV07IHA7IHAgPSBwLT5uZXh0KQotKyAgICAgICAgIHsKLSsgICAgICAgICAgaWYgKCghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvaW5jbHVkZSIsIDEyKSkKLSsgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvbG9jYWwvaW5jbHVkZSIsIDE4KSkKLSsgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvWDExUjYvaW5jbHVkZSIsIDE4KSkKLSsgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi9zdy9pbmNsdWRlIiwgMTEpKQotKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL29wdC9pbmNsdWRlIiwgMTIpKSkKLSsgICAgICAgICAgICB3YXJuaW5nIChPUFRfV3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMsCi0rICAgICAgICAgICAgICAgICAgICAgImluY2x1ZGUgbG9jYXRpb24gXCIlc1wiIGlzIHVuc2FmZSBmb3IgIgotKyAgICAgICAgICAgICAgICAgICAgICJjcm9zcy1jb21waWxhdGlvbiIsCi0rICAgICAgICAgICAgICAgICAgICAgcC0+bmFtZSk7Ci0rICAgICAgICAgfQotKyAgICB9Ci0rI2VuZGlmCi0gfQotIAotIC8qIFVzZSBnaXZlbiAtSSBwYXRocyBmb3IgI2luY2x1ZGUgIi4uLiIgYnV0IG5vdCAjaW5jbHVkZSA8Li4uPiwgYW5kCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDAzLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwMy1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjMwMzlkMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDAzLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotRnJvbSBmOGQ2MGM0MTE0YWNiOTIzNjFjN2IyZjRhNDU2MWQ0NjYxZThkYTlkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MDg6MzEgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwMy8zNl0gZ2NjLTQuMy4zOiBTWVNST09UX0NGTEFHU19GT1JfVEFSR0VUCi0KLUJlZm9yZSBjb21taXR0aW5nLCBJIG5vdGljZWQgdGhhdCBQUi8zMjE2MSB3YXMgbWFya2VkIGFzIGEgZHVwIG9mIFBSLzMyMDA5LCBidXQgbXkgcHJldmlvdXMgcGF0Y2ggZGlkIG5vdCBmaXggaXQuCi0KLVRoaXMgYWx0ZXJuYXRpdmUgcGF0Y2ggaXMgYmV0dGVyIGJlY2F1c2UgaXQgbGV0cyB5b3UganVzdCB1c2UgQ0ZMQUdTX0ZPUl9UQVJHRVQgdG8gc2V0IHRoZSBjb21waWxhdGlvbiBmbGFncyBmb3IgbGliZ2NjLiBTaW5jZSBib290c3RyYXBwZWQgdGFyZ2V0IGxpYnJhcmllcyBhcmUgbmV2ZXIgY29tcGlsZWQgd2l0aCB0aGUgbmF0aXZlIGNvbXBpbGVyLCBpdCBtYWtlcyBsaXR0bGUgc2Vuc2UgdG8gdXNlIGRpZmZlcmVudCBmbGFncyBmb3Igc3RhZ2UxIGFuZCBsYXRlciBzdGFnZXMuIEFuZCBpdCBhbHNvIG1ha2VzIGxpdHRsZSBzZW5zZSB0byB1c2UgYSBkaWZmZXJlbnQgdmFyaWFibGUgdGhhbiBDRkxBR1NfRk9SX1RBUkdFVC4KLQotT3RoZXIgY2hhbmdlcyBJIGhhZCB0byBkbyBpbmNsdWRlOgotCi0tIG1vdmluZyB0aGUgY3JlYXRpb24gb2YgZGVmYXVsdCBDRkxBR1NfRk9SX1RBUkdFVCBmcm9tIE1ha2VmaWxlLmFtIHRvIGNvbmZpZ3VyZS5hYywgYmVjYXVzZSBvdGhlcndpc2UgdGhlIEJPT1RfQ0ZMQUdTIGFyZSBzdWJzdGl0dXRlZCBpbnRvIENGTEFHU19GT1JfVEFSR0VUICh3aGljaCBpcyAiLU8yIC1nICQoQ0ZMQUdTKSIpIHZpYSAkKENGTEFHUykuIEl0IGlzIGFsc28gY2xlYW5lciB0aGlzIHdheSB0aG91Z2guCi0KLS0gcGFzc2luZyB0aGUgcmlnaHQgQ0ZMQUdTIHRvIGNvbmZpZ3VyZSBzY3JpcHRzIGFzIGV4cG9ydGVkIGVudmlyb25tZW50IHZhcmlhYmxlcwotCi1JIGFsc28gc3RvcHBlZCBwYXNzaW5nIExJQkNGTEFHUyB0byBjb25maWd1cmUgc2NyaXB0cyBzaW5jZSB0aGV5IGFyZSB1bnVzZWQgaW4gdGhlIHdob2xlIHNyYyB0cmVlLiBBbmQgSSB1cGRhdGVkIHRoZSBkb2N1bWVudGF0aW9uIGFzIEgtUCByZW1pbmRlZCBtZSB0byBkby4KLQotQm9vdHN0cmFwcGVkL3JlZ3Rlc3RlZCBpNjg2LXBjLWxpbnV4LWdudSwgd2lsbCBjb21taXQgdG8gNC40IHNob3J0bHkuIE9rIGZvciA0LjM/Ci0KLVNpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGNvbmZpZ3VyZSB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggYjEyMTA4OGQ3NzguLjkzYWFlNWJiMjZmIDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC02ODY0LDYgKzY4NjQsMzggQEAgZmkKLSAKLSAKLSAKLSsjIER1cmluZyBnY2MgYm9vdHN0cmFwLCBpZiB3ZSB1c2Ugc29tZSByYW5kb20gY2MgZm9yIHN0YWdlMSB0aGVuIENGTEFHUwotKyMgbWlnaHQgYmUgZW1wdHkgb3IgIi1nIi4gIFdlIGRvbid0IHJlcXVpcmUgYSBDKysgY29tcGlsZXIsIHNvIENYWEZMQUdTCi0rIyBtaWdodCBhbHNvIGJlIGVtcHR5IChvciAiLWciLCBpZiBhIG5vbi1HQ0MgQysrIGNvbXBpbGVyIGlzIGluIHRoZSBwYXRoKS4KLSsjIFdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgVEFSR0VUIGxpYnJhcmllcyAod2hpY2ggd2Uga25vdyBhcmUgYnVpbHQgd2l0aAotKyMgZ2NjKSBhcmUgYnVpbHQgd2l0aCAiLU8yIC1nIiwgc28gaW5jbHVkZSB0aG9zZSBvcHRpb25zIHdoZW4gc2V0dGluZwotKyMgQ0ZMQUdTX0ZPUl9UQVJHRVQgYW5kIENYWEZMQUdTX0ZPUl9UQVJHRVQuCi0raWYgdGVzdCAieCRDRkxBR1NfRk9SX1RBUkdFVCIgPSB4OyB0aGVuCi0rICBDRkxBR1NfRk9SX1RBUkdFVD0kQ0ZMQUdTCi0rICBjYXNlICIgJENGTEFHUyAiIGluCi0rICAgICoiIC1PMiAiKikgOzsKLSsgICAgKikgQ0ZMQUdTX0ZPUl9UQVJHRVQ9Ii1PMiAkQ0ZMQUdTIiA7OwotKyAgZXNhYwotKyAgY2FzZSAiICRDRkxBR1MgIiBpbgotKyAgICAqIiAtZyAiKiB8ICoiIC1nMyAiKikgOzsKLSsgICAgKikgQ0ZMQUdTX0ZPUl9UQVJHRVQ9Ii1nICRDRkxBR1MiIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSsKLStpZiB0ZXN0ICJ4JENYWEZMQUdTX0ZPUl9UQVJHRVQiID0geDsgdGhlbgotKyAgQ1hYRkxBR1NfRk9SX1RBUkdFVD0kQ1hYRkxBR1MKLSsgIGNhc2UgIiAkQ1hYRkxBR1MgIiBpbgotKyAgICAqIiAtTzIgIiopIDs7Ci0rICAgICopIENYWEZMQUdTX0ZPUl9UQVJHRVQ9Ii1PMiAkQ1hYRkxBR1MiIDs7Ci0rICBlc2FjCi0rICBjYXNlICIgJENYWEZMQUdTICIgaW4KLSsgICAgKiIgLWcgIiogfCAqIiAtZzMgIiopIDs7Ci0rICAgICopIENYWEZMQUdTX0ZPUl9UQVJHRVQ9Ii1nICRDWFhGTEFHUyIgOzsKLSsgIGVzYWMKLStmaQotKwotKwotICMgSGFuZGxlIC0td2l0aC1oZWFkZXJzPVhYWC4gIElmIHRoZSB2YWx1ZSBpcyBub3QgInllcyIsIHRoZSBjb250ZW50cyBvZgotICMgdGhlIG5hbWVkIGRpcmVjdG9yeSBhcmUgY29waWVkIHRvICQodG9vbGRpcikvc3lzLWluY2x1ZGUuCi0gaWYgdGVzdCB4IiR7d2l0aF9oZWFkZXJzfSIgIT0geCAmJiB0ZXN0IHgiJHt3aXRoX2hlYWRlcnN9IiAhPSB4bm8gOyB0aGVuCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA0LTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwNC02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc5YzQwYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA0LTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLUZyb20gYzIwODFjNTFkYjU4OTQ3MWVhNzEzODcwYzcyZjEzOTk5YWJkYTgxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjEwOjA2ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvMzZdIDY0LWJpdCBtdWx0aWxpYiBoYWNrLgotCi1HQ0MgaGFzIGludGVybmFsIG11bHRpbGliIGhhbmRsaW5nIGNvZGUgYnV0IGl0IGFzc3VtZXMgYSB2ZXJ5IHNwZWNpZmljIHJpZ2lkIGRpcmVjdG9yeQotbGF5b3V0LiBUaGUgYnVpbGQgc3lzdGVtIGltcGxlbWVudGF0aW9uIG9mIG11bHRpbGliIGxheW91dCBpcyB2ZXJ5IGdlbmVyaWMgYW5kIGFsbG93cwotY29tcGxldGUgY3VzdG9taXNhdGlvbiBvZiB0aGUgbGlicmFyeSBkaXJlY3Rvcmllcy4KLQotVGhpcyBwYXRjaCBpcyBhIHBhcnRpYWwgc29sdXRpb24gdG8gYWxsb3cgYW55IGN1c3RvbSBkaXJlY3RvcmllcyB0byBiZSBwYXNzZWQgaW50byBnY2MKLWFuZCBoYW5kbGVkIGNvcnJlY3RseS4gSXQgZm9yY2VzIGdjYyB0byB1c2UgdGhlIGJhc2VfbGliZGlyICh3aGljaCBpcyB0aGUgY3VycmVudAotZGlyZWN0b3J5LCAiLiIpLiBXZSBuZWVkIHRvIGRvIHRoaXMgZm9yIGVhY2ggbXVsdGlsaWIgdGhhdCBpcyBjb25maWd1cmVkIGFzIHdlIGRvbid0Ci1rbm93IHdoaWNoIGNvbXBpbGVyIG9wdGlvbnMgbWF5IGJlIGJlaW5nIHBhc3NlZCBpbnRvIHRoZSBjb21waWxlci4gU2luY2Ugd2UgaGF2ZSBhIGNvbXBpbGVyCi1wZXIgbXVsaXRsaWIgYXQgdGhpcyBwb2ludCB0aGF0IGlzbid0IGFuIGlzc3VlLgotCi1UaGUgb25lIHByb2JsZW0gaXMgdGhlIHRhcmdldCBjb21waWxlciBpcyBvbmx5IGdvaW5nIHRvIHdvcmsgZm9yIHRoZSBkZWZhdWx0IG11bHRsaWxpYiBhdAotdGhpcyBwb2ludC4gSWRlYWxseSB3ZSdkIGZpZ3VyZSBvdXQgd2hpY2ggbXVsdGlsaWJzIHdlcmUgYmVpbmcgZW5hYmxlZCB3aXRoIHdoaWNoIHBhdGhzCi1hbmQgYmUgYWJsZSB0byBwYXRjaCB0aGVzZSBlbnRyaWVzIHdpdGggYSBjb21wbGV0ZSBzZXQgb2YgY29ycmVjdCBwYXRocyBidXQgdGhpcyB3ZQotZG9uJ3QgaGF2ZSBzdWNoIGNvZGUgYXQgdGhpcyBwb2ludC4gVGhpcyBpcyBzb21ldGhpbmcgdGhlIHRhcmdldCBnY2MgcmVjaXBlIHNob3VsZCBkbwotYW5kIG92ZXJyaWRlIHRoZXNlIHBsYXRmb3JtIGRlZmF1bHRzIGluIGl0cyBidWlsZCBjb25maWcuCi0KLURvIHNhbWUgZm9yIHJpc2N2NjQgYW5kIGFhcmNoNjQKLQotUlAgMTUvOC8xMQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbT0UtU3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBFbHZpcyBEb3dzb24gPGVsdmlzLmRvd3NvbkBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4IHwgIDggKysrKy0tLS0KLSBnY2MvY29uZmlnL2kzODYvdC1saW51eDY0ICAgICAgICAgIHwgIDYgKystLS0tCi0gZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NCAgICAgICAgICB8IDEwICsrKy0tLS0tLS0KLSBnY2MvY29uZmlnL3Jpc2N2L3QtbGludXggICAgICAgICAgIHwgIDYgKysrKy0tCi0gZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0ICAgICAgICB8ICA1ICsrLS0tCi0gNSBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXggYi9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4Ci1pbmRleCA1YWQ2NzBiYTJjZS4uZTI2MDE5ZTcxNTcgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4Ci0rKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4Ci1AQCAtMjEsOCArMjEsOCBAQAotIExJQjFBU01TUkMgICA9IGFhcmNoNjQvbGliMWZ1bmNzLmFzbQotIExJQjFBU01GVU5DUyA9IF9hYXJjaDY0X3N5bmNfY2FjaGVfcmFuZ2UKLSAKLS1BQVJDSF9CRSA9ICQoaWYgJChmaW5kc3RyaW5nIFRBUkdFVF9CSUdfRU5ESUFOX0RFRkFVTFQ9MSwgJCh0bV9kZWZpbmVzKSksX2JlKQotLU1VTFRJTElCX09TRElSTkFNRVMgPSBtYWJpLmxwNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQotLU1VTFRJQVJDSF9ESVJOQU1FID0gJChjYWxsIGlmX211bHRpYXJjaCxhYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQotKyNBQVJDSF9CRSA9ICQoaWYgJChmaW5kc3RyaW5nIFRBUkdFVF9CSUdfRU5ESUFOX0RFRkFVTFQ9MSwgJCh0bV9kZWZpbmVzKSksX2JlKQotKyNNVUxUSUxJQl9PU0RJUk5BTUVTID0gbWFiaS5scDY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6YWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKLSsjTVVMVElBUkNIX0RJUk5BTUUgPSAkKGNhbGwgaWZfbXVsdGlhcmNoLGFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCi0gCi0tTVVMVElMSUJfT1NESVJOQU1FUyArPSBtYWJpLmlscDMyPS4uL2xpYmlscDMyJChjYWxsIGlmX211bHRpYXJjaCw6YWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudV9pbHAzMikKLSsjTVVMVElMSUJfT1NESVJOQU1FUyArPSBtYWJpLmlscDMyPS4uL2xpYmlscDMyJChjYWxsIGlmX211bHRpYXJjaCw6YWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudV9pbHAzMikKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAotaW5kZXggYzY4NmFiMmYwZDIuLmM4MmI2MGRhZGNkIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAotQEAgLTMyLDcgKzMyLDUgQEAKLSAjCi0gY29tbWE9LAotIE1VTFRJTElCX09QVElPTlMgICAgPSAkKHN1YnN0ICQoY29tbWEpLC8sJChUTV9NVUxUSUxJQl9DT05GSUcpKQotLU1VTFRJTElCX0RJUk5BTUVTICAgPSAkKHBhdHN1YnN0IG0lLCAlLCAkKHN1YnN0IC8sICwkKE1VTFRJTElCX09QVElPTlMpKSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTID0gbTY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6eDg2XzY0LWxpbnV4LWdudSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTKz0gbTMyPSQoaWYgJCh3aWxkY2FyZCAkKHNoZWxsIGVjaG8gJChTWVNURU1fSEVBREVSX0RJUikpLy4uLy4uL3Vzci9saWIzMiksLi4vbGliMzIsLi4vbGliKSQoY2FsbCBpZl9tdWx0aWFyY2gsOmkzODYtbGludXgtZ251KQotLU1VTFRJTElCX09TRElSTkFNRVMrPSBteDMyPS4uL2xpYngzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOng4Nl82NC1saW51eC1nbnV4MzIpCi0rTVVMVElMSUJfRElSTkFNRVMgPSAuIC4KLStNVUxUSUxJQl9PU0RJUk5BTUVTID0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAotaW5kZXggM2EyZmY3MDBkN2QuLjEzZWYxOTU3NmI1IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAotKysrIGIvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAotQEAgLTE3LDEwICsxNyw2IEBACi0gIyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gCi0gTVVMVElMSUJfT1BUSU9OUyA9IG1hYmk9bjMyL21hYmk9MzIvbWFiaT02NAotLU1VTFRJTElCX0RJUk5BTUVTID0gbjMyIDMyIDY0Ci0tTUlQU19FTCA9ICQoaWYgJChmaWx0ZXIgJWVsLCAkKGZpcnN0d29yZCAkKHN1YnN0IC0sICwkKHRhcmdldCkpKSksZWwpCi0tTUlQU19TT0ZUID0gJChpZiAkKHN0cmlwICQoZmlsdGVyIE1BU0tfU09GVF9GTE9BVF9BQkksICQodGFyZ2V0X2NwdV9kZWZhdWx0KSkgJChmaWx0ZXIgc29mdCwgJCh3aXRoX2Zsb2F0KSkpLHNvZnQpCi0tTVVMVElMSUJfT1NESVJOQU1FUyA9IFwKLS0JLi4vbGliMzIkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzNjQkKE1JUFNfRUwpLWxpbnV4LWdudWFiaW4zMiQoTUlQU19TT0ZUKSkgXAotLQkuLi9saWIkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzJChNSVBTX0VMKS1saW51eC1nbnUkKE1JUFNfU09GVCkpIFwKLS0JLi4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDptaXBzNjQkKE1JUFNfRUwpLWxpbnV4LWdudWFiaTY0JChNSVBTX1NPRlQpKQotK01VTFRJTElCX0RJUk5BTUVTID0gLiAuIC4KLStNVUxUSUxJQl9PU0RJUk5BTUVTID0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKLSsKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3QtbGludXggYi9nY2MvY29uZmlnL3Jpc2N2L3QtbGludXgKLWluZGV4IDIxNmQyNzc2YTE4Li5lNGQ4MTc2MjFmYyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcmlzY3YvdC1saW51eAotKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi90LWxpbnV4Ci1AQCAtMSwzICsxLDUgQEAKLSAjIE9ubHkgWExFTiBhbmQgQUJJIGFmZmVjdCBMaW51eCBtdWx0aWxpYiBkaXIgbmFtZXMsIGUuZy4gL2xpYjMyL2lscDMyZC8KLS1NVUxUSUxJQl9ESVJOQU1FUyA6PSAkKHBhdHN1YnN0IHJ2MzIlLGxpYjMyLCQocGF0c3Vic3QgcnY2NCUsbGliNjQsJChNVUxUSUxJQl9ESVJOQU1FUykpKQotLU1VTFRJTElCX09TRElSTkFNRVMgOj0gJChwYXRzdWJzdCBsaWIlLC4uL2xpYiUsJChNVUxUSUxJQl9ESVJOQU1FUykpCi0rI01VTFRJTElCX0RJUk5BTUVTIDo9ICQocGF0c3Vic3QgcnYzMiUsbGliMzIsJChwYXRzdWJzdCBydjY0JSxsaWI2NCwkKE1VTFRJTElCX0RJUk5BTUVTKSkpCi0rTVVMVElMSUJfRElSTkFNRVMgOj0gLiAuCi0rI01VTFRJTElCX09TRElSTkFNRVMgOj0gJChwYXRzdWJzdCBsaWIlLC4uL2xpYiUsJChNVUxUSUxJQl9ESVJOQU1FUykpCi0rTVVMVElMSUJfT1NESVJOQU1FUyA6PSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NCBiL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAotaW5kZXggZjNjNmUyYmUxZDkuLmJkMDM5MzE1NWZhIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0Ci0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKLUBAIC0yNiwxMCArMjYsOSBAQAotICMgTVVMVElMSUJfT1NESVJOQU1FUyBhY2NvcmRpbmcgdG8gd2hhdCBpcyBmb3VuZCBvbiB0aGUgdGFyZ2V0LgotIAotIE1VTFRJTElCX09QVElPTlMgICAgOj0gbTY0L20zMgotLU1VTFRJTElCX0RJUk5BTUVTICAgOj0gNjQgMzIKLStNVUxUSUxJQl9ESVJOQU1FUyAgIDo9IC4gLgotIE1VTFRJTElCX0VYVFJBX09QVFMgOj0gCi0tTVVMVElMSUJfT1NESVJOQU1FUyA6PSBtNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDpwb3dlcnBjNjQtbGludXgtZ251KQotLU1VTFRJTElCX09TRElSTkFNRVMgKz0gbTMyPSQoaWYgJCh3aWxkY2FyZCAkKHNoZWxsIGVjaG8gJChTWVNURU1fSEVBREVSX0RJUikpLy4uLy4uL3Vzci9saWIzMiksLi4vbGliMzIsLi4vbGliKSQoY2FsbCBpZl9tdWx0aWFyY2gsOnBvd2VycGMtbGludXgtZ251KQotK01VTFRJTElCX09TRElSTkFNRVMgOj0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKLSAKLSByczYwMDAtbGludXgubzogJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvcnM2MDAwLWxpbnV4LmMKLSAJJChDT01QSUxFKSAkPAotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwNS1vcHRpb25hbC1saWJzdGRjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwNS1vcHRpb25hbC1saWJzdGRjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNGZhYzkxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDUtb3B0aW9uYWwtbGlic3RkYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNSArMCwwIEBACi1Gcm9tIGU3ZTUwNGY0YTkwY2ZhMzk1ZTdmOGVlNzc5ZjhjM2VkNjg3ODAyY2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxMjo1NiArMDQwMAotU3ViamVjdDogW1BBVENIIDA1LzM2XSBvcHRpb25hbCBsaWJzdGRjCi0KLWdjYy1ydW50aW1lIGJ1aWxkcyBsaWJzdGRjKysgc2VwYXJhdGVseSBmcm9tIGdjYy1jcm9zcy0qLiBJdHMgY29uZmlndXJlIHRlc3RzIHVzaW5nIGcrKwotd2lsbCBub3QgcnVuIGNvcnJlY3RseSBzaW5jZSBieSBkZWZhdWx0IHRoZSBsaW5rZXIgd2lsbCB0cnkgdG8gbGluayBhZ2FpbnN0IGxpYnN0ZGMrKwotd2hpY2ggc2hvdWxkbid0IGV4aXN0IHlldC4gV2UgbmVlZCBhbiBvcHRpb24gdG8gZGlzYWJsZSAtbHN0ZGMrKwotb3B0aW9uIHdoaWxzdCBsZWF2aW5nIC1sYywgLWxnY2MgYW5kIG90aGVyIGF1dG9tYXRpYyBsaWJyYXJ5IGRlcGVuZGVuY2llcyBhZGRlZCBieSBnY2MKLWRyaXZlci4gVGhpcyBwYXRjaCBhZGRzIHN1Y2ggYW4gb3B0aW9uIHdoaWNoIG9ubHkgZGlzYWJsZXMgdGhlIC1sc3RkYysrLgotCi1BICJzdGFuZGFyZCIgZ2NjIGJ1aWxkIHVzZXMgeGdjYyBhbmQgaGVuY2UgYXZvaWRzIHRoaXMuIFdlIHNob3VsZCBhc2sgdXBzdHJlYW0gaG93IHRvCi1kbyB0aGlzIG9mZmljaWFsbHksIHRoZSBsaWtlbHkgYW5zd2VyIGlzIGRvbid0IGJ1aWxkIGxpYnN0ZGMrKyBzZXBhcmF0ZWx5LgotCi1SUCAyOS82LzEwCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0tLS0KLSBnY2MvYy1mYW1pbHkvYy5vcHQgIHwgIDQgKysrKwotIGdjYy9jcC9nKytzcGVjLmMgICAgfCAgMSArCi0gZ2NjL2RvYy9pbnZva2UudGV4aSB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCi0gZ2NjL2djYy5jICAgICAgICAgICB8ICAxICsKLSA0IGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLm9wdCBiL2djYy9jLWZhbWlseS9jLm9wdAotaW5kZXggOTE2Y2M2N2I0NTMuLjQxNjE5ZmE1OTFjIDEwMDY0NAotLS0tIGEvZ2NjL2MtZmFtaWx5L2Mub3B0Ci0rKysgYi9nY2MvYy1mYW1pbHkvYy5vcHQKLUBAIC0xOTUyLDYgKzE5NTIsMTAgQEAgbm9zdGRpbmMrKwotIEMrKyBPYmpDKysKLSBEbyBub3Qgc2VhcmNoIHN0YW5kYXJkIHN5c3RlbSBpbmNsdWRlIGRpcmVjdG9yaWVzIGZvciBDKysuCi0gCi0rbm9zdGRsaWIrKwotK0RyaXZlcgotK0RvIG5vdCBsaW5rIHN0YW5kYXJkIEMrKyBydW50aW1lIGxpYnJhcnkKLSsKLSBvCi0gQyBPYmpDIEMrKyBPYmpDKysgSm9pbmVkIFNlcGFyYXRlCi0gOyBEb2N1bWVudGVkIGluIGNvbW1vbi5vcHQKLWRpZmYgLS1naXQgYS9nY2MvY3AvZysrc3BlYy5jIGIvZ2NjL2NwL2crK3NwZWMuYwotaW5kZXggNmM0NTc0YTgzN2QuLjBlMjY1N2YwMGVlIDEwMDY0NAotLS0tIGEvZ2NjL2NwL2crK3NwZWMuYwotKysrIGIvZ2NjL2NwL2crK3NwZWMuYwotQEAgLTEzNyw2ICsxMzcsNyBAQCBsYW5nX3NwZWNpZmljX2RyaXZlciAoc3RydWN0IGNsX2RlY29kZWRfb3B0aW9uICoqaW5fZGVjb2RlZF9vcHRpb25zLAotICAgICAgIHN3aXRjaCAoZGVjb2RlZF9vcHRpb25zW2ldLm9wdF9pbmRleCkKLSAJewotIAljYXNlIE9QVF9ub3N0ZGxpYjoKLSsJY2FzZSBPUFRfbm9zdGRsaWJfXzoKLSAJY2FzZSBPUFRfbm9kZWZhdWx0bGliczoKLSAJICBsaWJyYXJ5ID0gLTE7Ci0gCSAgYnJlYWs7Ci1kaWZmIC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKLWluZGV4IDA5NDE0ZDhjYzA1Li5hNDM5NjliYzlmMCAxMDA2NDQKLS0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKLSsrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKLUBAIC0yMjgsNiArMjI4LDkgQEAgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucy4KLSAtZm5vLXdlYWsgIC1ub3N0ZGluYysrIEBnb2wKLSAtZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4gQGdvbAotIC1mdmlzaWJpbGl0eS1tcy1jb21wYXQgQGdvbAotKy1mdnRhYmxlLXZlcmlmeT1AcntbfXN0ZEBye3x9cHJlaW5pdEBye3x9bm9uZUBye119IEBnb2wKLSstZnZ0di1jb3VudHMgLWZ2dHYtZGVidWcgQGdvbAotKy1ub3N0ZGxpYisrIEBnb2wKLSAtZmV4dC1udW1lcmljLWxpdGVyYWxzIEBnb2wKLSAtV2FiaT1AdmFye259ICAtV2FiaS10YWcgIC1XY29udmVyc2lvbi1udWxsICAtV2N0b3ItZHRvci1wcml2YWN5IEBnb2wKLSAtV2RlbGV0ZS1ub24tdmlydHVhbC1kdG9yICAtV2RlcHJlY2F0ZWQtY29weSAgLVdkZXByZWNhdGVkLWNvcHktZHRvciBAZ29sCi1AQCAtNTM4LDcgKzU0MSw3IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysrIERpYWxlY3RzfS4KLSAtcGllICAtcHRocmVhZCAgLXIgIC1yZHluYW1pYyBAZ29sCi0gLXMgIC1zdGF0aWMgIC1zdGF0aWMtcGllICAtc3RhdGljLWxpYmdjYyAgLXN0YXRpYy1saWJzdGRjKysgQGdvbAotIC1zdGF0aWMtbGliYXNhbiAgLXN0YXRpYy1saWJ0c2FuICAtc3RhdGljLWxpYmxzYW4gIC1zdGF0aWMtbGlidWJzYW4gQGdvbAotLS1zaGFyZWQgIC1zaGFyZWQtbGliZ2NjICAtc3ltYm9saWMgQGdvbAotKy1zaGFyZWQgIC1zaGFyZWQtbGliZ2NjICAtc3ltYm9saWMgLW5vc3RkbGliKysgQGdvbAotIC1UIEB2YXJ7c2NyaXB0fSAgLVdsLEB2YXJ7b3B0aW9ufSAgLVhsaW5rZXIgQHZhcntvcHRpb259IEBnb2wKLSAtdSBAdmFye3N5bWJvbH0gIC16IEB2YXJ7a2V5d29yZH19Ci0gCi1AQCAtMTMzMTIsNiArMTMzMTUsMzMgQEAgU3BlY2lmeSB0aGF0IHRoZSBwcm9ncmFtIGVudHJ5IHBvaW50IGlzIEB2YXJ7ZW50cnl9LiAgVGhlIGFyZ3VtZW50IGlzCi0gaW50ZXJwcmV0ZWQgYnkgdGhlIGxpbmtlcjsgdGhlIEdOVSBsaW5rZXIgYWNjZXB0cyBlaXRoZXIgYSBzeW1ib2wgbmFtZQotIG9yIGFuIGFkZHJlc3MuCi0gCi0rQGl0ZW0gLW5vc3RkbGliKysKLStAb3BpbmRleCBub3N0ZGxpYisrCi0rRG8gbm90IHVzZSB0aGUgc3RhbmRhcmQgc3lzdGVtIEMrKyBydW50aW1lIGxpYnJhcmllcyB3aGVuIGxpbmtpbmcuCi0rT25seSB0aGUgbGlicmFyaWVzIHlvdSBzcGVjaWZ5IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBsaW5rZXIuCi0rCi0rQGNpbmRleCBAb3B0aW9uey1sZ2NjfSwgdXNlIHdpdGggQG9wdGlvbnstbm9zdGRsaWJ9Ci0rQGNpbmRleCBAb3B0aW9uey1ub3N0ZGxpYn0gYW5kIHVucmVzb2x2ZWQgcmVmZXJlbmNlcwotK0BjaW5kZXggdW5yZXNvbHZlZCByZWZlcmVuY2VzIGFuZCBAb3B0aW9uey1ub3N0ZGxpYn0KLStAY2luZGV4IEBvcHRpb257LWxnY2N9LCB1c2Ugd2l0aCBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfQotK0BjaW5kZXggQG9wdGlvbnstbm9kZWZhdWx0bGlic30gYW5kIHVucmVzb2x2ZWQgcmVmZXJlbmNlcwotK0BjaW5kZXggdW5yZXNvbHZlZCByZWZlcmVuY2VzIGFuZCBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfQotK09uZSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyaWVzIGJ5cGFzc2VkIGJ5IEBvcHRpb257LW5vc3RkbGlifSBhbmQKLStAb3B0aW9uey1ub2RlZmF1bHRsaWJzfSBpcyBAZmlsZXtsaWJnY2MuYX0sIGEgbGlicmFyeSBvZiBpbnRlcm5hbCBzdWJyb3V0aW5lcwotK3doaWNoIEdDQyB1c2VzIHRvIG92ZXJjb21lIHNob3J0Y29taW5ncyBvZiBwYXJ0aWN1bGFyIG1hY2hpbmVzLCBvciBzcGVjaWFsCi0rbmVlZHMgZm9yIHNvbWUgbGFuZ3VhZ2VzLgotKyhAeHJlZntJbnRlcmZhY2UsLEludGVyZmFjaW5nIHRvIEdDQyBPdXRwdXQsZ2NjaW50LEdOVSBDb21waWxlcgotK0NvbGxlY3Rpb24gKEdDQykgSW50ZXJuYWxzfSwKLStmb3IgbW9yZSBkaXNjdXNzaW9uIG9mIEBmaWxle2xpYmdjYy5hfS4pCi0rSW4gbW9zdCBjYXNlcywgeW91IG5lZWQgQGZpbGV7bGliZ2NjLmF9IGV2ZW4gd2hlbiB5b3Ugd2FudCB0byBhdm9pZAotK290aGVyIHN0YW5kYXJkIGxpYnJhcmllcy4gIEluIG90aGVyIHdvcmRzLCB3aGVuIHlvdSBzcGVjaWZ5IEBvcHRpb257LW5vc3RkbGlifQotK29yIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9IHlvdSBzaG91bGQgdXN1YWxseSBzcGVjaWZ5IEBvcHRpb257LWxnY2N9IGFzIHdlbGwuCi0rVGhpcyBlbnN1cmVzIHRoYXQgeW91IGhhdmUgbm8gdW5yZXNvbHZlZCByZWZlcmVuY2VzIHRvIGludGVybmFsIEdDQwotK2xpYnJhcnkgc3Vicm91dGluZXMuCi0rKEFuIGV4YW1wbGUgb2Ygc3VjaCBhbiBpbnRlcm5hbCBzdWJyb3V0aW5lIGlzIEBjb2Rle19fbWFpbn0sIHVzZWQgdG8gZW5zdXJlIEMrKwotK2NvbnN0cnVjdG9ycyBhcmUgY2FsbGVkOyBAcHhyZWZ7Q29sbGVjdDIsLEBjb2Rle2NvbGxlY3QyfSwgZ2NjaW50LAotK0dOVSBDb21waWxlciBDb2xsZWN0aW9uIChHQ0MpIEludGVybmFsc30uKQotKwotIEBpdGVtIC1waWUKLSBAb3BpbmRleCBwaWUKLSBQcm9kdWNlIGEgZHluYW1pY2FsbHkgbGlua2VkIHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUgb24gdGFyZ2V0cwotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggYTI2MDFhNmJiMDYuLmNkNmM2ZmM5NWRiIDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0xMDUyLDYgKzEwNTIsNyBAQCBwcm9wZXIgcG9zaXRpb24gYW1vbmcgdGhlIG90aGVyIG91dHB1dCBmaWxlcy4gICovCi0gICAgICUobWZsaWIpICIgU1RBQ0tfU1BMSVRfU1BFQyAiXAotICAgICAle2Zwcm9maWxlLWFyY3N8ZnByb2ZpbGUtZ2VuZXJhdGUqfGNvdmVyYWdlOi1sZ2Nvdn0gIiBTQU5JVElaRVJfU1BFQyAiIFwKLSAgICAgJXshbm9zdGRsaWI6JXshcjoleyFub2RlZmF1bHRsaWJzOiUobGlua19zc3ApICUobGlua19nY2NfY19zZXF1ZW5jZSl9fX1cCi0rICAgICV7IW5vc3RkbGliKys6fVwKLSAgICAgJXshbm9zdGRsaWI6JXshcjoleyFub3N0YXJ0ZmlsZXM6JUV9fX0gJXtUKn0gIFxuJShwb3N0X2xpbmspIH19fX19fSIKLSAjZW5kaWYKLSAKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY3ZTYwMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIGI5MjYwY2QzYWMyNmIwMzAyODI0ZWQ0NjZhNTQ4NDY0Yzg2NGQ5NWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxNjoyOCArMDQwMAotU3ViamVjdDogW1BBVENIIDA2LzM2XSBDT0xMRUNUX0dDQ19PUFRJT05TCi0KLVRoaXMgcGF0Y2ggYWRkcyAtLXN5c3Jvb3QgaW50byBDT0xMRUNUX0dDQ19PUFRJT05TIHdoaWNoIGlzIHVzZWQgdG8KLWludm9rZSBjb2xsZWN0Mi4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvZ2NjLmMgfCA5ICsrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggY2Q2YzZmYzk1ZGIuLjdkYTljNWQ0NTdiIDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC00ODA0LDYgKzQ4MDQsMTUgQEAgc2V0X2NvbGxlY3RfZ2NjX29wdGlvbnMgKHZvaWQpCi0gCQlzaXplb2YgKCJDT0xMRUNUX0dDQ19PUFRJT05TPSIpIC0gMSk7Ci0gCi0gICBmaXJzdF90aW1lID0gVFJVRTsKLSsjaWZkZWYgSEFWRV9MRF9TWVNST09UCi0rICBpZiAodGFyZ2V0X3N5c3RlbV9yb290X2NoYW5nZWQgJiYgdGFyZ2V0X3N5c3RlbV9yb290KQotKyAgICB7Ci0rICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCAiJy0tc3lzcm9vdD0iLCBzaXplb2YoIictLXN5c3Jvb3Q9IiktMSk7Ci0rICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCB0YXJnZXRfc3lzdGVtX3Jvb3Qsc3RybGVuKHRhcmdldF9zeXN0ZW1fcm9vdCkpOwotKyAgICAgIG9ic3RhY2tfZ3JvdyAoJmNvbGxlY3Rfb2JzdGFjaywgIiciLCAxKTsKLSsgICAgICBmaXJzdF90aW1lID0gRkFMU0U7Ci0rICAgIH0KLSsjZW5kaWYKLSAgIGZvciAoaSA9IDA7IChpbnQpIGkgPCBuX3N3aXRjaGVzOyBpKyspCi0gICAgIHsKLSAgICAgICBjb25zdCBjaGFyICpjb25zdCAqYXJnczsKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDctVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGY4ZmMyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDctVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi1Gcm9tIDg4ZTcyOGRhZDUzZDQ4YzRhMTlmMTVlMTlmNjZmZDIzZjQ4MjBiNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxNzoyNSArMDQwMAotU3ViamVjdDogW1BBVENIIDA3LzM2XSBVc2UgdGhlIGRlZmF1bHRzLmggaW4gJHtCfSBpbnN0ZWFkIG9mICR7U30sIGFuZCB0LW9lIGluCi0gJHtCfQotCi1Vc2UgdGhlIGRlZmF1bHRzLmggaW4gJHtCfSBpbnN0ZWFkIG9mICR7U30sIGFuZCB0LW9lIGluICR7Qn0sIHNvIHRoYXQKLXRoZSBzb3VyY2UgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGdjYy1jcm9zcy1pbml0aWFsLAotZ2NjLWNyb3NzLWludGVybWVkaWF0ZSwgZ2NjLWNyb3NzLCBnY2MtcnVudGltZSwgYW5kIGFsc28gdGhlIHNkayBidWlsZC4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVdoaWxlIGNvbXBpbGluZyBnY2MtY3Jvc3NzZGstaW5pdGlhbC14ODZfNjQgb24gc29tZSBob3N0LCB0aGVyZSBpcwotb2NjYXNpb25hbGx5IGZhaWx1cmUgdGhhdCB0ZXN0IHRoZSBleGlzdGFuY2Ugb2YgZGVmYXVsdC5oIGRvZXNuJ3QKLXdvcmssIHRoZSByZWFzb24gaXMgdG1faW5jbHVkZV9saXN0PScqKiBkZWZhdWx0cy5oJyByYXRoZXIgdGhhbgotdG1faW5jbHVkZV9saXN0PScqKiAuL2RlZmF1bHRzLmgnCi0KLVNvIHdlIGFkZCB0aGUgdGVzdCBjb25kaXRpb24gZm9yIHRoaXMgc2l0dWF0aW9uLgotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZ2NjL01ha2VmaWxlLmluICB8IDIgKy0KLSBnY2MvY29uZmlndXJlICAgIHwgNCArKy0tCi0gZ2NjL2NvbmZpZ3VyZS5hYyB8IDQgKystLQotIGdjYy9ta2NvbmZpZy5zaCAgfCA0ICsrLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgotaW5kZXggNWY0M2Q5ZGUwMGUuLjQxZjBmNTkyZmY0IDEwMDY0NAotLS0tIGEvZ2NjL01ha2VmaWxlLmluCi0rKysgYi9nY2MvTWFrZWZpbGUuaW4KLUBAIC01NDAsNyArNTQwLDcgQEAgVEFSR0VUX1NZU1RFTV9ST09UID0gQFRBUkdFVF9TWVNURU1fUk9PVEAKLSBUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FID0gQFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkVACi0gCi0geG1ha2VfZmlsZT1AeG1ha2VfZmlsZUAKLS10bWFrZV9maWxlPUB0bWFrZV9maWxlQAotK3RtYWtlX2ZpbGU9QHRtYWtlX2ZpbGVAIC4vdC1vZQotIFRNX0VORElBTl9DT05GSUc9QFRNX0VORElBTl9DT05GSUdACi0gVE1fTVVMVElMSUJfQ09ORklHPUBUTV9NVUxUSUxJQl9DT05GSUdACi0gVE1fTVVMVElMSUJfRVhDRVBUSU9OU19DT05GSUc9QFRNX01VTFRJTElCX0VYQ0VQVElPTlNfQ09ORklHQAotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCBhNmVhM2E4YTg0Yy4uZTNiY2Y4YWJlOWEgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMTIzNDEsOCArMTIzNDEsOCBAQCBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KLSAgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCi0gICAgICAgIDs7Ci0gICAgIGRlZmF1bHRzLmggKQotLSAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpLyRmIgotLSAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi8kZiIKLSsgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi8kZiIKLSAgICAgICAgOzsKLSAgICAgKiApCi0gICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvY29uZmlnLyRmIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCBkNDJiYmQ0ZmQxYy4uMmViYzM3N2E3NGQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtMTk2OCw4ICsxOTY4LDggQEAgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCi0gICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgotICAgICAgICA7OwotICAgICBkZWZhdWx0cy5oICkKLS0gICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS8kZiIKLS0gICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCi0rICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vJGYiCi0rICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vJGYiCi0gICAgICAgIDs7Ci0gICAgICogKQotICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLWRpZmYgLS1naXQgYS9nY2MvbWtjb25maWcuc2ggYi9nY2MvbWtjb25maWcuc2gKLWluZGV4IDMwOGI4N2QwY2MxLi4xOTA2OGNiYzI0YSAxMDA2NDQKLS0tLSBhL2djYy9ta2NvbmZpZy5zaAotKysrIGIvZ2NjL21rY29uZmlnLnNoCi1AQCAtNzcsNyArNzcsNyBAQCBpZiBbIC1uICIkSEVBREVSUyIgXTsgdGhlbgotICAgICBpZiBbICQjIC1nZSAxIF07IHRoZW4KLSAJZWNobyAnI2lmZGVmIElOX0dDQycgPj4gJHtvdXRwdXR9VAotIAlmb3IgZmlsZSBpbiAiJEAiOyBkbwotLQkgICAgaWYgdGVzdCB4IiRmaWxlIiA9IHgiZGVmYXVsdHMuaCI7IHRoZW4KLSsJICAgIGlmIHRlc3QgeCIkZmlsZSIgPSB4Ii4vZGVmYXVsdHMuaCIgLW8geCIkZmlsZSIgPSB4ImRlZmF1bHRzLmgiOyB0aGVuCi0gCQlwb3N0cG9uZV9kZWZhdWx0c19oPSJ5ZXMiCi0gCSAgICBlbHNlCi0gCQllY2hvICIjIGluY2x1ZGUgXCIkZmlsZVwiIiA+PiAke291dHB1dH1UCi1AQCAtMTA2LDcgKzEwNiw3IEBAIGVzYWMKLSAKLSAjIElmIHdlIHBvc3Rwb25lZCBpbmNsdWRpbmcgZGVmYXVsdHMuaCwgYWRkIHRoZSAjaW5jbHVkZSBub3cuCi0gaWYgdGVzdCB4IiRwb3N0cG9uZV9kZWZhdWx0c19oIiA9IHgieWVzIjsgdGhlbgotLSAgICBlY2hvICIjIGluY2x1ZGUgXCJkZWZhdWx0cy5oXCIiID4+ICR7b3V0cHV0fVQKLSsgICAgZWNobyAiIyBpbmNsdWRlIFwiLi9kZWZhdWx0cy5oXCIiID4+ICR7b3V0cHV0fVQKLSBmaQotIAotICMgQWRkIG11bHRpcGxlIGluY2x1c2lvbiBwcm90ZWN0aW9uIGd1YXJkLCBwYXJ0IHR3by4KLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGUzYWJlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIDAxMGYwOWYyOTYzZWRlMjRlODUxMzRlNWZhYjJmYTYyN2E5YWZhMDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMDowMSArMDQwMAotU3ViamVjdDogW1BBVENIIDA4LzM2XSBmb3J0cmFuIGNyb3NzLWNvbXBpbGUgaGFjay4KLQotKiBGb3J0cmFuIHdvdWxkIGhhdmUgc2VhcmNoZWQgZm9yIGFybS1hbmdzdHJvbS1nbnVlYWJpLWdmb3J0cmFuIGJ1dCB3b3VsZCBoYXZlIHVzZWQKLXVzZWQgZ2ZvcnRhbi4gRm9yIGdjY180LjIuMi5iYiB3ZSB3YW50IHRvIHVzZSB0aGUgZ2ZvcnRyYW4gY29tcGlsZXIgZnJvbSBvdXIgY3Jvc3MKLWRpcmVjdG9yeS4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLS0tLQotIGxpYmdmb3J0cmFuL2NvbmZpZ3VyZSAgICB8IDIgKy0KLSBsaWJnZm9ydHJhbi9jb25maWd1cmUuYWMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9jb25maWd1cmUgYi9saWJnZm9ydHJhbi9jb25maWd1cmUKLWluZGV4IDYwODY3YjkzZDBlLi4zZmM5ZmNhNWI3YiAxMDA3NTUKLS0tLSBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQotKysrIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlCi1AQCAtMTMwNzEsNyArMTMwNzEsNyBAQCBlc2FjCi0gCi0gIyBXZSBuZWVkIGdmb3J0cmFuIHRvIGNvbXBpbGUgcGFydHMgb2YgdGhlIGxpYnJhcnkKLSAjQUNfUFJPR19GQyhnZm9ydHJhbikKLS1GQz0iJEdGT1JUUkFOIgotKyNGQz0iJEdGT1JUUkFOIgotIGFjX2V4dD0ke2FjX2ZjX3NyY2V4dC1mfQotIGFjX2NvbXBpbGU9JyRGQyAtYyAkRkNGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi0gYWNfbGluaz0nJEZDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkRkNGTEFHUyAkTERGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi1kaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCi1pbmRleCA3Y2ZjZTI4YWI2OS4uNmNkNTE1ZWUxYTQgMTAwNjQ0Ci0tLS0gYS9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKLSsrKyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYwotQEAgLTI1MCw3ICsyNTAsNyBAQCBBQ19TVUJTVChlbmFibGVfc3RhdGljKQotIAotICMgV2UgbmVlZCBnZm9ydHJhbiB0byBjb21waWxlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5Ci0gI0FDX1BST0dfRkMoZ2ZvcnRyYW4pCi0tRkM9IiRHRk9SVFJBTiIKLSsjRkM9IiRHRk9SVFJBTiIKLSBBQ19QUk9HX0ZDKGdmb3J0cmFuKQotIAotICMgZXh0cmEgTEQgRmxhZ3Mgd2hpY2ggYXJlIHJlcXVpcmVkIGZvciB0YXJnZXRzCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA5LWNwcC1ob25vci1zeXNyb290LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwOS1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFmMGEwMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA5LWNwcC1ob25vci1zeXNyb290LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSA0NWU5Y2QzOWQ5YzYyNDU0ZDQ2YjllOTQ3M2EwYzEwMzRjZWNhMTVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjI6MDAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwOS8zNl0gY3BwOiBob25vciBzeXNyb290LgotCi1DdXJyZW50bHksIGlmIHRoZSBnY2MgdG9vbGNoYWluIGlzIHJlbG9jYXRlZCBhbmQgaW5zdGFsbGVkIGZyb20gc3N0YXRlLCB0aGVuIHlvdSB0cnkgYW5kIGNvbXBpbGUKLXByZXByb2Nlc3NlZCBzb3VyY2UgKC5pIG9yIC5paSBmaWxlcyksIHRoZSBjb21waWxlciB3aWxsIHRyeSBhbmQgYWNjZXNzIHRoZSBidWlsdGluIHN5c3Jvb3QgbG9jYXRpb24KLXJhdGhlciB0aGFuIHRoZSAtLXN5c3Jvb3Qgb3B0aW9uIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZGxpbmUuIElmIGFjY2VzcyB0byB0aGF0IGRpcmVjdG9yeSBpcwotcGVybWlzc2lvbiBkZW5pZWQgKHVucmVhZGFibGUpLCBnY2Mgd2lsbCBlcnJvci4KLQotVGhpcyBoYXBwZW5zIHdoZW4gY2NhY2hlIGlzIGluIHVzZSBkdWUgdG8gdGhlIGZhY3QgaXQgdXNlcyBwcmVwcm9jZXNzZWQgc291cmNlIGZpbGVzLgotCi1UaGUgZml4IGJlbG93IGFkZHMgJUkgdG8gdGhlIGNwcC1vdXRwdXQgc3BlYyBtYWNybyBzbyB0aGUgZGVmYXVsdCBzdWJzdGl0dXRpb25zIGZvciAtaXByZWZpeCwKLS1pc3lzdGVtLCAtaXN5c3Jvb3QgaGFwcGVuIGFuZCB0aGUgY29ycmVjdCBzeXNyb290IGlzIHVzZWQuCi0KLVtZT0NUTyAjMjA3NF0KLQotUlAgMjAxMi8wNC8xMwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9jcC9sYW5nLXNwZWNzLmggfCAyICstCi0gZ2NjL2djYy5jICAgICAgICAgICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jcC9sYW5nLXNwZWNzLmggYi9nY2MvY3AvbGFuZy1zcGVjcy5oCi1pbmRleCBjNmU0MmVkYTI4My4uZTFkZGYwNjY0NjcgMTAwNjQ0Ci0tLS0gYS9nY2MvY3AvbGFuZy1zcGVjcy5oCi0rKysgYi9nY2MvY3AvbGFuZy1zcGVjcy5oCi1AQCAtNjYsNSArNjYsNSBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICAgeyIuaWkiLCAiQGMrKy1jcHAtb3V0cHV0IiwgMCwgMCwgMH0sCi0gICB7IkBjKystY3BwLW91dHB1dCIsCi0gICAgICAgIiV7IUU6JXshTToleyFNTToiCi0tICAgICAgIiAgY2MxcGx1cyAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAlMiIKLSsgICAgICAiICBjYzFwbHVzIC1mcHJlcHJvY2Vzc2VkICVpICVJICUoY2MxX29wdGlvbnMpICUyIgotICAgICAgICIgICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCA3ZGE5YzVkNDU3Yi4uNGU3YzQ1YjI2OGMgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTEzNDksNyArMTM0OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcGlsZXIgZGVmYXVsdF9jb21waWxlcnNbXSA9Ci0gCQkJCQkgICAlV3tvKjotLW91dHB1dC1wY2g9JSp9fSVWfX19fX19fSIsIDAsIDAsIDB9LAotICAgeyIuaSIsICJAY3BwLW91dHB1dCIsIDAsIDAsIDB9LAotICAgeyJAY3BwLW91dHB1dCIsCi0tICAgIiV7IU06JXshTU06JXshRTpjYzEgLWZwcmVwcm9jZXNzZWQgJWkgJShjYzFfb3B0aW9ucykgJXshZnN5bnRheC1vbmx5OiUoaW52b2tlX2FzKX19fX0iLCAwLCAwLCAwfSwKLSsgICAiJXshTToleyFNTToleyFFOmNjMSAtZnByZXByb2Nlc3NlZCAlaSAlSSAlKGNjMV9vcHRpb25zKSAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAotICAgeyIucyIsICJAYXNzZW1ibGVyIiwgMCwgMCwgMH0sCi0gICB7IkBhc3NlbWJsZXIiLAotICAgICIleyFNOiV7IU1NOiV7IUU6JXshUzphcyAlKGFzbV9kZWJ1ZykgJShhc21fb3B0aW9ucykgJWkgJUEgfX19fSIsIDAsIDAsIDB9LAotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxMC1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxMC1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzBjNmQ1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTAtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLUZyb20gMWZmNDEwOGQ3MDdiMzRlMzk5ZTlkYzQxOGFkMWVjYzQyZjcyNjc2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIzOjA4ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMzZdIE1JUFM2NDogRGVmYXVsdCB0byBONjQgQUJJCi0KLU1JUFM2NCBkZWZhdWx0cyB0byBuMzIgQUJJLCB0aGlzIHBhdGNoIG1ha2VzIGl0Ci1zbyB0aGF0IGl0IGRlZmF1bHRzIHRvIE42NCBBQkkKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWcgc3BlY2lmaWNdCi0tLS0KLSBnY2MvY29uZmlnLmdjYyB8IDEwICsrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy5nY2MgYi9nY2MvY29uZmlnLmdjYwotaW5kZXggZGRkM2I4ZjRkOWQuLmZkZmMwYmQzZTgyIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy5nY2MKLSsrKyBiL2djYy9jb25maWcuZ2NjCi1AQCAtMjI4MiwyOSArMjI4MiwyOSBAQCBtaXBzKi0qLWxpbnV4KikJCQkJIyBMaW51eCBNSVBTLCBlaXRoZXIgZW5kaWFuLgotIAkJCWRlZmF1bHRfbWlwc19hcmNoPW1pcHMzMgotIAkJCTs7Ci0gCQltaXBzNjRlbC1zdC1saW51eC1nbnUpCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJdG1fZmlsZT0iJHt0bV9maWxlfSBtaXBzL3N0LmgiCi0gCQkJdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlfSBtaXBzL3Qtc3QiCi0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJCW1pcHM2NG9jdGVvbiotKi1saW51eCopCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJdG1fZGVmaW5lcz0iJHt0bV9kZWZpbmVzfSBNSVBTX0NQVV9TVFJJTkdfREVGQVVMVD1cXFwib2N0ZW9uXFxcIiIKLSAJCQl0YXJnZXRfY3B1X2RlZmF1bHQ9TUFTS19TT0ZUX0ZMT0FUX0FCSQotIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgotIAkJCTs7Ci0gCQltaXBzaXNhNjRyNiotKi1saW51eCopCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczY0cjYKLSAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKLSAJCQk7OwotIAkJbWlwc2lzYTY0cjIqLSotbGludXgqKQotLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCi0rCQkJZGVmYXVsdF9taXBzX2FiaT02NAotIAkJCWRlZmF1bHRfbWlwc19hcmNoPW1pcHM2NHIyCi0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJCW1pcHM2NCotKi1saW51eCogfCBtaXBzaXNhNjQqLSotbGludXgqKQotLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCi0rCQkJZGVmYXVsdF9taXBzX2FiaT02NAotIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgotIAkJCTs7Ci0gCWVzYWMKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTEtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTEtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZmYjI0ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDExLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNDMgKzAsMCBAQAotRnJvbSA3MmZjMzk3NWJjZDcyMGIyZjgwNDBmYTg3Y2QyM2QzZGI0YzU5NzVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjQ6NTAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gRGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIGFuZCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIKLSByZWxhdGl2ZSB0byBTWVNURU1MSUJTX0RJUgotCi1UaGlzIHBhdGNoIGRlZmluZXMgR0xJQkNfRFlOQU1JQ19MSU5LRVIgYW5kIFVDTElCQ19EWU5BTUlDX0xJTktFUgotcmVsYXRpdmUgdG8gU1lTVEVNTElCU19ESVIgd2hpY2ggY2FuIGJlIHNldCBpbiBnZW5lcmF0ZWQgaGVhZGVycwotVGhpcyBicmVha3MgdGhlIGFzc3VtcHRpb24gb2YgaGFyZGNvZGVkIG11bHRpbGliIGluIGdjYwotQ2hhbmdlIGlzIG9ubHkgZm9yIHRoZSBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcyBpbiBPRSBpbmNsdWRpbmcKLVNILCBzcGFyYywgYWxwaGEgZm9yIHBvc3NpYmxlIGZ1dHVyZSBzdXBwb3J0IChpZiBhbnkpCi0KLVJlbW92ZXMgdGhlIGRvX2hlYWRlcmZpeCB0YXNrIGluIG1ldGFkYXRhCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlndXJhdGlvbl0KLS0tLQotIGdjYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmggfCAgNCArKy0tCi0gZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oICB8ICA0ICsrLS0KLSBnY2MvY29uZmlnL2FybS9saW51eC1lbGYuaCAgIHwgIDIgKy0KLSBnY2MvY29uZmlnL2kzODYvbGludXguaCAgICAgIHwgIDIgKy0KLSBnY2MvY29uZmlnL2kzODYvbGludXg2NC5oICAgIHwgIDYgKysrLS0tCi0gZ2NjL2NvbmZpZy9saW51eC5oICAgICAgICAgICB8ICA4ICsrKystLS0tCi0gZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggICAgICB8IDEyICsrKysrKy0tLS0tLQotIGdjYy9jb25maWcvcmlzY3YvbGludXguaCAgICAgfCAgMiArLQotIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCAgfCAxNSArKysrKy0tLS0tLS0tLS0KLSBnY2MvY29uZmlnL3NoL2xpbnV4LmggICAgICAgIHwgIDIgKy0KLSBnY2MvY29uZmlnL3NwYXJjL2xpbnV4LmggICAgIHwgIDIgKy0KLSBnY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaCAgIHwgIDQgKystLQotIDEyIGZpbGVzIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaCBiL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKLWluZGV4IDgyNDg2MWJlZmVjLi42YWZhY2NlMzI5MiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKLSsrKyBiL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKLUBAIC0yMyw4ICsyMyw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gI2RlZmluZSBFWFRSQV9TUEVDUyBcCi0geyAiZWxmX2R5bmFtaWNfbGlua2VyIiwgRUxGX0RZTkFNSUNfTElOS0VSIH0sCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUgkiL2xpYi9sZC1saW51eC5zby4yIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLXVDbGliYy5zby4wIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIJU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKLSAjaWYgREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDCi0gI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSkgIiV7bWdsaWJjOiIgRyAiOzoiIFUgIn0iCi0gI2VsaWYgREVGQVVMVF9MSUJDID09IExJQkNfR0xJQkMKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLWluZGV4IDY2ZWMwZWEzOTgwLi5lNGFkZTJlMmFiMCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotKysrIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi1AQCAtNjUsOCArNjUsOCBAQAotICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSX0RFRkFVTFQgYW5kIFRBUkdFVF9ERUZBVUxUX0ZMT0FUX0FCSS4gICovCi0gCi0gI3VuZGVmICBHTElCQ19EWU5BTUlDX0xJTktFUgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfU09GVF9GTE9BVCAiL2xpYi9sZC1saW51eC5zby4zIgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfSEFSRF9GTE9BVCAiL2xpYi9sZC1saW51eC1hcm1oZi5zby4zIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfU09GVF9GTE9BVCBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMyIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0hBUkRfRkxPQVQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LWFybWhmLnNvLjMiCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9ERUZBVUxUIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQKLSAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFwKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaCBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oCi1pbmRleCA5YTM2MGRlZmQyMS4uOThmNmU5NjBiNjQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAotKysrIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmgKLUBAIC02MCw3ICs2MCw3IEBACi0gCi0gI2RlZmluZSBMSUJHQ0NfU1BFQyAiJXttZmxvYXQtYWJpPXNvZnQqOi1sZmxvYXR9IC1sZ2NjIgotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotIAotICNkZWZpbmUgTElOVVhfVEFSR0VUX0xJTktfU1BFQyAgIiV7aCp9IFwKLSAgICAle3N0YXRpYzotQnN0YXRpY30gXAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9saW51eC5oIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKLWluZGV4IDlhNmUyZDk5ODk2Li4zMWVmYmI3MzAxNiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2kzODYvbGludXguaAotQEAgLTIwLDcgKzIwLDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotIAotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT04gImVsZl9pMzg2IgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotIAotICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSCi0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmggYi9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCi1pbmRleCBjMDgyMjFjNDIxMC4uZGJiNDc0ZDc5MmIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCi0rKysgYi9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCi1AQCAtMjcsOSArMjcsOSBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKLSAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9ONjQgImVsZl94ODZfNjQiCi0gI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTlgzMiAiZWxmMzJfeDg2XzY0IgotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1saW51eC5zby4yIgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yIgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgIi9saWJ4MzIvbGQtbGludXgteDMyLnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQtbGludXgteDg2LTY0LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUlgzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgteDMyLnNvLjIiCi0gCi0gI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIzMgotICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbGludXguaCBiL2djYy9jb25maWcvbGludXguaAotaW5kZXggYzNjNGEyMTllNjcuLjRiMDVkOGU5M2QxIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2xpbnV4LmgKLUBAIC05NCwxMCArOTQsMTAgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCi0gICAgR0xJQkNfRFlOQU1JQ19MSU5LRVIgbXVzdCBiZSBkZWZpbmVkIGZvciBlYWNoIHRhcmdldCB1c2luZyB0aGVtLCBvcgotICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgYW5kIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgZm9yIHRhcmdldHMKLSAgICBzdXBwb3J0aW5nIGJvdGggMzItYml0IGFuZCA2NC1iaXQgY29tcGlsYXRpb24uICAqLwotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLXVDbGliYy5zby4wIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYi9sZDY0LXVDbGliYy5zby4wIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSWDMyICIvbGliL2xkeDMyLXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSWDMyIFNZU1RFTUxJQlNfRElSICJsZHgzMi11Q2xpYmMuc28uMCIKLSAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUiAiL3N5c3RlbS9iaW4vbGlua2VyIgotICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSMzIgIi9zeXN0ZW0vYmluL2xpbmtlciIKLSAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUjY0ICIvc3lzdGVtL2Jpbi9saW5rZXI2NCIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL21pcHMvbGludXguaCBiL2djYy9jb25maWcvbWlwcy9saW51eC5oCi1pbmRleCA2Zjc5YWM5YzAxYS4uMjVkZTk2Zjk1NjEgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL21pcHMvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKLUBAIC0yMiwyMCArMjIsMjAgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OTjMyICJlbGYzMiV7RUI6Yn0le0VMOmx9dHNtaXBuMzIiCi0gCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFwKLS0gICIle21uYW49MjAwODovbGliL2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliL2xkLnNvLjF9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWI2NC9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYjY0L2xkLnNvLjF9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSTjMyIFwKLS0gICIle21uYW49MjAwODovbGliMzIvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWIzMi9sZC5zby4xfSIKLSsgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCi0gCi0gI3VuZGVmIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBcCi0tICAiJXttbmFuPTIwMDg6L2xpYi9sZC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIvbGQtdUNsaWJjLnNvLjB9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjB9IgotICN1bmRlZiBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NAotICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQ2NC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIvbGQ2NC11Q2xpYmMuc28uMH0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLnNvLjB9IgotICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSTjMyIFwKLS0gICIle21uYW49MjAwODovbGliMzIvbGQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliMzIvbGQtdUNsaWJjLnNvLjB9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjB9IgotIAotICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oIGIvZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oCi1pbmRleCA1OGRkMThiODlmMy4uMTEyYmE5Y2Q3NjQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3Jpc2N2L2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvcmlzY3YvbGludXguaAotQEAgLTIyLDcgKzIyLDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAgICAgR05VX1VTRVJfVEFSR0VUX09TX0NQUF9CVUlMVElOUygpOwkJCQlcCi0gICB9IHdoaWxlICgwKQotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXgtcmlzY3YiIFhMRU5fU1BFQyAiLSIgQUJJX1NQRUMgIi5zby4xIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXJpc2N2IiBYTEVOX1NQRUMgIi0iIEFCSV9TUEVDICIuc28uMSIKLSAKLSAjZGVmaW5lIE1VU0xfQUJJX1NVRkZJWCBcCi0gICAiJXttYWJpPWlscDMyOi1zZn0iIFwKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLWluZGV4IDk5NDZkM2ZlZDk0Li40NWE5YTdjYWU1OSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi1AQCAtNDIzLDI0ICs0MjMsMTkgQEAgZXh0ZXJuIGludCBkb3Rfc3ltYm9sczsKLSAjdW5kZWYJTElOS19PU19ERUZBVUxUX1NQRUMKLSAjZGVmaW5lIExJTktfT1NfREVGQVVMVF9TUEVDICIlKGxpbmtfb3NfbGludXgpIgotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiJShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYi9sZC5zby4xIgotLQotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQuc28uMSIKLSAjaWZkZWYgTElOVVg2NF9ERUZBVUxUX0FCSV9FTEZ2MgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCi0tIiV7bWFiaT1lbGZ2MTolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4xOyIgXAotLSI6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMn0iCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIle21hYmk9ZWxmdjE6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjJ9IgotICNlbHNlCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKLS0iJXttYWJpPWVsZnYyOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjI7IiBcCi0tIjolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4xfSIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIiV7bWFiaT1lbGZ2MjoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjI7OiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMX0iCi0gI2VuZGlmCi0gCi0gI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIzMgotICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjMyIFwKLS0gICIvbGliL2xkLW11c2wtcG93ZXJwYyIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKLSsgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLXBvd2VycGMiIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCi0gI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVI2NAotICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjY0IFwKLS0gICIvbGliL2xkLW11c2wtcG93ZXJwYzY0IiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bXNvZnQtZmxvYXQ6LXNmfS5zby4xIgotKyAgU1lTVEVNTElCU19ESVIgImxkLW11c2wtcG93ZXJwYzY0IiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bXNvZnQtZmxvYXQ6LXNmfS5zby4xIgotIAotICN1bmRlZiAgREVGQVVMVF9BU01fRU5ESUFOCi0gI2lmIChUQVJHRVRfREVGQVVMVCAmIE1BU0tfTElUVExFX0VORElBTikKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NoL2xpbnV4LmggYi9nY2MvY29uZmlnL3NoL2xpbnV4LmgKLWluZGV4IGM5ODk3YjdhY2E1Li44MmYyNzUzMTljYyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvc2gvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9zaC9saW51eC5oCi1AQCAtNjQsNyArNjQsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICAgIi9saWIvbGQtbXVzbC1zaCIgTVVTTF9EWU5BTUlDX0xJTktFUl9FIE1VU0xfRFlOQU1JQ19MSU5LRVJfRlAgXAotICAgIiV7bWZkcGljOi1mZHBpY30uc28uMSIKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSAKLSAjdW5kZWYgU1VCVEFSR0VUX0xJTktfRU1VTF9TVUZGSVgKLSAjZGVmaW5lIFNVQlRBUkdFVF9MSU5LX0VNVUxfU1VGRklYICIle21mZHBpYzpfZmQ7Ol9saW51eH0iCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCi1pbmRleCAwODQ3NmYxZDk0ZC4uODA0NDBlNzEyYWQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvc3BhcmMvbGludXguaAotQEAgLTg0LDcgKzg0LDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKmhvc3RfZGV0ZWN0X2xvY2FsX2NwdSAoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KTsKLSAgICBXaGVuIHRoZSAtc2hhcmVkIGxpbmsgb3B0aW9uIGlzIHVzZWQgYSBmaW5hbCBsaW5rIGlzIG5vdCBiZWluZwotICAgIGRvbmUuICAqLwotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotIAotICN1bmRlZiAgTElOS19TUEVDCi0gI2RlZmluZSBMSU5LX1NQRUMgIi1tIGVsZjMyX3NwYXJjICV7c2hhcmVkOi1zaGFyZWR9IFwKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaCBiL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCi1pbmRleCA3ODlkMWRmNGJkNS4uYjkyMGM2ODBmYjEgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKLUBAIC04NCw4ICs4NCw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gICAgV2hlbiB0aGUgLXNoYXJlZCBsaW5rIG9wdGlvbiBpcyB1c2VkIGEgZmluYWwgbGluayBpcyBub3QgYmVpbmcKLSAgICBkb25lLiAgKi8KLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbGludXguc28uMiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWI2NC9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI2lmZGVmIFNQQVJDX0JJX0FSQ0gKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTItZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxMi1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwNTM5NzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxMi1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDJjYjIyN2NkODA2OWM3MzI0MjI4NmY2NDE4M2ZiMjAzZjhkMjYxOGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyNjozNyArMDQwMAotU3ViamVjdDogW1BBVENIIDEyLzM2XSBnY2M6IEZpeCBhcmd1bWVudCBsaXN0IHRvbyBsb25nIGVycm9yLgotCi1UaGVyZSB3b3VsZCBiZSBhbiAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiB0aGUKLWJ1aWxkIGRpcmVjdG9yeSBpcyBsb25nZXIgdGhhbiAyMDAsIHRoaXMgaXMgY2F1c2VkIGJ5OgotCi1oZWFkZXJzPWBlY2hvICQoUExVR0lOX0hFQURFUlMpIHwgdHIgJyAnICdcMDEyJyB8IHNvcnQgLXVgCi0KLVRoZSBQTFVHSU5fSEVBREVSUyBpcyB0b28gbG9uZyBiZWZvcmUgc29ydCwgc28gdGhlICJlY2hvIiBjYW4ndCBoYW5kbGUKLWl0LCB1c2UgdGhlICQoc29ydCBsaXN0KSBvZiBHTlUgbWFrZSB3aGljaCBjYW4gaGFuZGxlIHRoZSB0b28gbG9uZyBsaXN0Ci13b3VsZCBmaXggdGhlIHByb2JsZW0sIHRoZSBoZWFkZXIgd291bGQgYmUgc2hvcnQgZW5vdWdoIGFmdGVyIHNvcnRlZC4KLVRoZSAidHIgJyAnICdcMDEyJyIgd2FzIHVzZWQgZm9yIHRyYW5zbGF0aW5nIHRoZSBzcGFjZSB0byAiXG4iLCB0aGUKLSQoc29ydCBsaXN0KSBkb2Vzbid0IG5lZWQgdGhpcy4KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9NYWtlZmlsZS5pbiB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgotaW5kZXggNDFmMGY1OTJmZjQuLjAwNjRhMjgyNDg4IDEwMDY0NAotLS0tIGEvZ2NjL01ha2VmaWxlLmluCi0rKysgYi9nY2MvTWFrZWZpbGUuaW4KLUBAIC0zNTM3LDcgKzM1MzcsNyBAQCBpbnN0YWxsLXBsdWdpbjogaW5zdGFsbGRpcnMgbGFuZy5pbnN0YWxsLXBsdWdpbiBzLWhlYWRlci12YXJzIGluc3RhbGwtZ2VuZ3R5cGUKLSAjIFdlIGtlZXAgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGZpbGVzIGluIGNvbmZpZyBvciBjLWZhbWlseSBhbmQgLmRlZgotICMgZmlsZXMuIEFsbCBvdGhlciBmaWxlcyBhcmUgZmxhdHRlbmVkIHRvIGEgc2luZ2xlIGRpcmVjdG9yeS4KLSAJJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChwbHVnaW5faW5jbHVkZWRpcikKLS0JaGVhZGVycz1gZWNobyAkKFBMVUdJTl9IRUFERVJTKSAkJChjZCAkKHNyY2Rpcik7IGVjaG8gKi5oICouZGVmKSB8IHRyICcgJyAnXDAxMicgfCBzb3J0IC11YDsgXAotKwloZWFkZXJzPSIkKHNvcnQgJChQTFVHSU5fSEVBREVSUykgJCQoY2QgJChzcmNkaXIpOyBlY2hvICouaCAqLmRlZikpIjsgXAotIAlzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqfF0vXFxcXCYvZydgOyBcCi0gCWZvciBmaWxlIGluICQkaGVhZGVyczsgZG8gXAotIAkgIGlmIFsgLWYgJCRmaWxlIF0gOyB0aGVuIFwKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTMtRGlzYWJsZS1zZHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDEzLURpc2FibGUtc2R0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjFhNjNjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTMtRGlzYWJsZS1zZHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotRnJvbSBhZWE1ZmZhOWQ3MDRmNGViOGZhOTMzNjY4ODRkM2MyNmExZGJlYzQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6Mjg6MTAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMy8zNl0gRGlzYWJsZSBzZHQuCi0KLVdlIGRvbid0IGxpc3QgZHRyYWNlIGluIERFUEVORFMgc28gd2Ugc2hvdWxkbid0IGJlIGRlcGVuZGluZyBvbiB0aGlzIGhlYWRlci4KLUl0IG1heSBvciBtYXkgbm90IGV4aXN0IGZyb20gcHJlaXZvdXMgYnVpbGRzIHRob3VnaC4gVG8gYmUgZGV0ZXJtaW5zdGljLCBkaXNhYmxlCi1zZHQuaCB1c2FnZSBhbHdheXMuIFRoaXMgYXZvaWRzIGJ1aWxkIGZhaWx1cmVzIGlmIHRoZSBoZWFkZXIgaXMgcmVtb3ZlZCBhZnRlciBjb25maWd1cmUKLWJ1dCBiZWZvcmUgbGliZ2NjIGlzIGNvbXBpbGVkIGZvciBleGFtcGxlLgotCi1SUCAyMDEyLzgvNwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1EaXNhYmxlIHNkdCBmb3IgbGlic3RkYysrLXYzLgotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtoYWNrXQotLS0tCi0gZ2NjL2NvbmZpZ3VyZSAgICAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQotIGdjYy9jb25maWd1cmUuYWMgICAgICAgICAgfCAxOCArKysrKysrKystLS0tLS0tLS0KLSBsaWJzdGRjKystdjMvY29uZmlndXJlICAgIHwgIDYgKysrLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYyB8ICAyICstCi0gNCBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCBlM2JjZjhhYmU5YS4uMWYxZDIyY2E2NjYgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMjkzMzIsMTIgKzI5MzMyLDEyIEBAIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeS4uLiAiID4mNjsgfQotIGhhdmVfc3lzX3NkdF9oPW5vCi0taWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCi0tICBoYXZlX3N5c19zZHRfaD15ZXMKLS0KLS0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKLS0KLS1maQotKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLSsjICBoYXZlX3N5c19zZHRfaD15ZXMKLSsjCi0rIyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAotKyMKLSsjZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfc3lzX3NkdF9oIiA+JjUKLSAkYXNfZWNobyAiJGhhdmVfc3lzX3NkdF9oIiA+JjY7IH0KLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggMmViYzM3N2E3NGQuLmRkYzg1MTk3NTg4IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTU5OTUsMTUgKzU5OTUsMTUgQEAgZmkKLSBBQ19TVUJTVChbZW5hYmxlX2RlZmF1bHRfc3NwXSkKLSAKLSAjIFRlc3QgZm9yIDxzeXMvc2R0Lmg+IG9uIHRoZSB0YXJnZXQuCi0tR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQotLUFDX01TR19DSEVDS0lORyhzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkpCi0taGF2ZV9zeXNfc2R0X2g9bm8KLS1pZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLS0gIGhhdmVfc3lzX3NkdF9oPXllcwotLSAgQUNfREVGSU5FKEhBVkVfU1lTX1NEVF9ILCAxLAotLSAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCi0tZmkKLS1BQ19NU0dfUkVTVUxUKCRoYXZlX3N5c19zZHRfaCkKLSsjR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQotKyNBQ19NU0dfQ0hFQ0tJTkcoc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5KQotKyNoYXZlX3N5c19zZHRfaD1ubwotKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLSsjICBoYXZlX3N5c19zZHRfaD15ZXMKLSsjICBBQ19ERUZJTkUoSEFWRV9TWVNfU0RUX0gsIDEsCi0rIyAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCi0rI2ZpCi0rI0FDX01TR19SRVNVTFQoJGhhdmVfc3lzX3NkdF9oKQotIAotICMgQ2hlY2sgaWYgVEZtb2RlIGxvbmcgZG91YmxlIHNob3VsZCBiZSB1c2VkIGJ5IGRlZmF1bHQgb3Igbm90LgotICMgU29tZSBnbGliYyB0YXJnZXRzIHVzZWQgREZtb2RlIGxvbmcgZG91YmxlLCBidXQgd2l0aCBnbGliYyAyLjQKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQotaW5kZXggNWFjZjc5Y2JhNTQuLjE5MWJjNmM1Nzk2IDEwMDc1NQotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQotQEAgLTIyMDg1LDExICsyMjA4NSwxMSBAQCBhY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi0gYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLSBhY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251Ci0gCi0tICBpZiB0ZXN0ICRnbGliY3h4X2N2X3N5c19zZHRfaCA9IHllczsgdGhlbgotKyMgIGlmIHRlc3QgJGdsaWJjeHhfY3Zfc3lzX3NkdF9oID0geWVzOyB0aGVuCi0gCi0tJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCi0rIyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAotIAotLSAgZmkKLSsjICBmaQotICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbGliY3h4X2N2X3N5c19zZHRfaCIgPiY1Ci0gJGFzX2VjaG8gIiRnbGliY3h4X2N2X3N5c19zZHRfaCIgPiY2OyB9Ci0gCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKLWluZGV4IGRhZGQ4ODI3YjQ5Li42YjFjZTk5NTdkMyAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKLUBAIC0yMzAsNyArMjMwLDcgQEAgR0xJQkNYWF9DSEVDS19TQ19OUFJPQ0VTU09SU19PTkxOCi0gR0xJQkNYWF9DSEVDS19TQ19OUFJPQ19PTkxOCi0gR0xJQkNYWF9DSEVDS19QVEhSRUFEU19OVU1fUFJPQ0VTU09SU19OUAotIEdMSUJDWFhfQ0hFQ0tfU1lTQ1RMX0hXX05DUFUKLS1HTElCQ1hYX0NIRUNLX1NEVF9ICi0rI0dMSUJDWFhfQ0hFQ0tfU0RUX0gKLSAKLSAjIENoZWNrIGZvciBhdmFpbGFibGUgaGVhZGVycy4KLSBBQ19DSEVDS19IRUFERVJTKFtlbmRpYW4uaCBleGVjaW5mby5oIGZsb2F0LmggZnAuaCBpZWVlZnAuaCBpbnR0eXBlcy5oIFwKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTQtbGlidG9vbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTQtbGlidG9vbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E4ZjNhZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE0LWxpYnRvb2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDZjNGQwYzMwM2ViYzNlMWM3ZTU1NGQ1NGE4YmI4MDdkNzdlZDQxZmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyOToxMSArMDQwMAotU3ViamVjdDogW1BBVENIIDE0LzM2XSBsaWJ0b29sCi0KLWxpYnN0ZGMrKyBmcm9tIGdjYy1ydW50aW1lIGdldHMgY3JlYXRlZCB3aXRoIC1ycGF0aD0vdXNyL2xpYi8uLi9saWIgZm9yIHFlbXV4ODYtNjQKLXdoZW4gcnVubmluZyBvbiBhbSB4ODZfNjQgYnVpbGQgaG9zdC4KLQotVGhpcyBwYXRjaCBzdG9wcyB0aGlzIHNwZWFkaW5nIHRvIGxpYmRpciBpbiB0aGUgbGlic3RkYysrLmxhIGZpbGUgd2l0aGluIGxpYnRvb2wuCi1Bcmd1YWJseSwgaXQgc2hvdWxkbid0IGJlIHBhc3NpbmcgdGhpcyBpbnRvIGxpYnRvb2wgaW4gdGhlIGZpcnN0IHBsYWNlIGJ1dAotZm9yIG5vdyB0aGlzIHJlc29sdmVzIHRoZSBuYXN0aWVzdCBwcm9ibGVtcyB0aGlzIGNhdXNlcy4KLQotZnVuY19ub3JtYWxfYWJzcGF0aCB3b3VsZCByZXNvbHZlIGFuIGVtcHR5IHBhdGggdG8gYHB3ZGAgc28gd2UgbmVlZAotdG8gZmlsdGVyIHRoZSB6ZXJvIGNhc2UuCi0KLVJQIDIwMTIvOC8yNAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGx0bWFpbi5zaCB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAotaW5kZXggNzlmOWJhODlhZjUuLjhlMjIyZjdjMTZiIDEwMDY0NAotLS0tIGEvbHRtYWluLnNoCi0rKysgYi9sdG1haW4uc2gKLUBAIC02MzU5LDYgKzYzNTksMTAgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJZnVuY193YXJuaW5nICJpZ25vcmluZyBtdWx0aXBsZSBcYC1ycGF0aCdzIGZvciBhIGxpYnRvb2wgbGlicmFyeSIKLSAKLSAgICAgICBpbnN0YWxsX2xpYmRpcj0iJDEiCi0rICAgICAgaWYgdGVzdCAtbiAiJGluc3RhbGxfbGliZGlyIjsgdGhlbgotKwlmdW5jX25vcm1hbF9hYnNwYXRoICIkaW5zdGFsbF9saWJkaXIiCi0rCWluc3RhbGxfbGliZGlyPSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAotKyAgICAgIGZpCi0gCi0gICAgICAgb2xkbGlicz0KLSAgICAgICBpZiB0ZXN0IC16ICIkcnBhdGgiOyB0aGVuCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE1LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE1LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwNmFlMjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxNS1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotRnJvbSBjNTY2MmZmMWU3ZGVhMjI5MWI5Y2I3YTgzY2ZmZjMwMDFkZDMxZjUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MzA6MzIgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxNS8zNl0gZ2NjOiBhcm12NDogcGFzcyBmaXgtdjRieCB0byBsaW5rZXIgdG8gc3VwcG9ydCBFQUJJLgotCi1UaGUgTElOS19TUEVDIGZvciBsaW51eCBnZXRzIG92ZXJ3cml0dGVuIGJ5IGxpbnV4LWVhYmkuaCB3aGljaAotbWVhbnMgdGhlIHZhbHVlIG9mIFRBUkdFVF9GSVhfVjRCWF9TUEVDIGdldHMgbG9zdCBhbmQgYXMgYSByZXN1bHQKLXRoZSBvcHRpb24gaXMgbm90IHBhc3NlZCB0byBsaW5rZXIgd2hlbiBjaG9zaW5nIG1hcmNoPWFybXY0Ci1UaGlzIHBhdGNoIHJlZGVmaW5lcyB0aGlzIGluIGxpbnV4LWVhYmkuaCBhbmQgcmVpbnNlcnRzIGl0Ci1mb3IgZWFiaSBkZWZhdWx0aW5nIHRvb2xjaGFpbnMuCi0KLVdlIG1pZ2h0IHdhbnQgdG8gc2VuZCBpdCB1cHN0cmVhbS4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggfCA2ICsrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotaW5kZXggZTRhZGUyZTJhYjAuLjEwODg2M2Y2OWQyIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi0rKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLUBAIC05MSwxMCArOTEsMTQgQEAKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgXAotICAgIi9saWIvbGQtbXVzbC1hcm0iIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttZmxvYXQtYWJpPWhhcmQ6aGZ9LnNvLjEiCi0gCi0rLyogRm9yIGFybXY0IHdlIHBhc3MgLS1maXgtdjRieCB0byBsaW5rZXIgdG8gc3VwcG9ydCBFQUJJICovCi0rI3VuZGVmIFRBUkdFVF9GSVhfVjRCWF9TUEVDCi0rI2RlZmluZSBUQVJHRVRfRklYX1Y0QlhfU1BFQyAiJXttY3B1PWFybTh8bWNwdT1hcm04MTB8bWNwdT1zdHJvbmdhcm0qfG1hcmNoPWFybXY0OiAtLWZpeC12NGJ4fSIKLSsKLSAvKiBBdCB0aGlzIHBvaW50LCBicGFiaS5oIHdpbGwgaGF2ZSBjbG9iYmVyZWQgTElOS19TUEVDLiAgV2Ugd2FudCB0bwotICAgIHVzZSB0aGUgR05VL0xpbnV4IHZlcnNpb24sIG5vdCB0aGUgZ2VuZXJpYyBCUEFCSSB2ZXJzaW9uLiAgKi8KLSAjdW5kZWYgIExJTktfU1BFQwotLSNkZWZpbmUgTElOS19TUEVDIEVBQklfTElOS19TUEVDCQkJCQlcCi0rI2RlZmluZSBMSU5LX1NQRUMgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgRUFCSV9MSU5LX1NQRUMJCQlcCi0gICBMSU5VWF9PUl9BTkRST0lEX0xEIChMSU5VWF9UQVJHRVRfTElOS19TUEVDLAkJCQlcCi0gCQkgICAgICAgTElOVVhfVEFSR0VUX0xJTktfU1BFQyAiICIgQU5EUk9JRF9MSU5LX1NQRUMpCi0gCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE2LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE2LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxMGNhZWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxNi1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLUZyb20gZTNiNjkzYjlkNmRjOTQ5NmY3Yzk4YTEzYjI4MTgyZDIzMDg0MjE1YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjMzOjA0ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTYvMzZdIFVzZSB0aGUgbXVsdGlsaWIgY29uZmlnIGZpbGVzIGZyb20gJHtCfSBpbnN0ZWFkIG9mCi0gdXNpbmcgdGhlIG9uZXMgZnJvbSAke1N9Ci0KLVVzZSB0aGUgbXVsdGlsaWIgY29uZmlnIGZpbGVzIGZyb20gJHtCfSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBvbmVzIGZyb20gJHtTfQotc28gdGhhdCB0aGUgc291cmNlIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBnY2MtY3Jvc3MtaW5pdGlhbCwKLWdjYy1jcm9zcy1pbnRlcm1lZGlhdGUsIGdjYy1jcm9zcywgZ2NjLXJ1bnRpbWUsIGFuZCBhbHNvIHRoZSBzZGsgYnVpbGQuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBDb25zdGFudGluIE11c2NhIDxjb25zdGFudGlueC5tdXNjYUBpbnRlbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLS0tLQotIGdjYy9jb25maWd1cmUgICAgfCAyMiArKysrKysrKysrKysrKysrKystLS0tCi0gZ2NjL2NvbmZpZ3VyZS5hYyB8IDIyICsrKysrKysrKysrKysrKysrKy0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQotaW5kZXggMWYxZDIyY2E2NjYuLjkxMWRlMmNmMDE3IDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTEyMzIxLDEwICsxMjMyMSwyMCBAQCBkb25lCi0gdG1ha2VfZmlsZV89Ci0gZm9yIGYgaW4gJHt0bWFrZV9maWxlfQotIGRvCi0tCWlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgotLQl0aGVuCi0tCQl0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0tCWZpCi0rICBjYXNlICRmIGluCi0rICAgICovdC1saW51eDY0ICkKLSsgICAgICAgaWYgdGVzdCAtZiAuL2NvbmZpZy8kZgotKyAgICAgICB0aGVuCi0rICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IC4vY29uZmlnLyRmIgotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgICAqICkKLSsgICAgICAgaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCi0rICAgICAgIHRoZW4KLSsgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICBlc2FjCi0gZG9uZQotIHRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZV99IgotIAotQEAgLTEyMzM1LDYgKzEyMzQ1LDEwIEBAIHRtX2ZpbGVfbGlzdD0ib3B0aW9ucy5oIgotIHRtX2luY2x1ZGVfbGlzdD0ib3B0aW9ucy5oIGluc24tY29uc3RhbnRzLmgiCi0gZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCi0gICBjYXNlICRmIGluCi0rICAgICovbGludXg2NC5oICkKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi9jb25maWcvJGYiCi0rICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vY29uZmlnLyRmIgotKyAgICAgICA7OwotICAgICAuLyogKQotICAgICAgICBmPWBlY2hvICRmIHwgc2VkICdzL14uLi8vJ2AKLSAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gJGYiCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IGRkYzg1MTk3NTg4Li5iNDEzYWU5YmYyNSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC0xOTQ4LDEwICsxOTQ4LDIwIEBAIGRvbmUKLSB0bWFrZV9maWxlXz0KLSBmb3IgZiBpbiAke3RtYWtlX2ZpbGV9Ci0gZG8KLS0JaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCi0tCXRoZW4KLS0JCXRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLS0JZmkKLSsgIGNhc2UgJGYgaW4KLSsgICAgKi90LWxpbnV4NjQgKQotKyAgICAgICBpZiB0ZXN0IC1mIC4vY29uZmlnLyRmCi0rICAgICAgIHRoZW4KLSsgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gLi9jb25maWcvJGYiCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICAgICogKQotKyAgICAgICBpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKLSsgICAgICAgdGhlbgotKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLSsgICAgICAgZmkKLSsgICAgICAgOzsKLSsgIGVzYWMKLSBkb25lCi0gdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlX30iCi0gCi1AQCAtMTk2Miw2ICsxOTcyLDEwIEBAIHRtX2ZpbGVfbGlzdD0ib3B0aW9ucy5oIgotIHRtX2luY2x1ZGVfbGlzdD0ib3B0aW9ucy5oIGluc24tY29uc3RhbnRzLmgiCi0gZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCi0gICBjYXNlICRmIGluCi0rICAgICovbGludXg2NC5oICkKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi9jb25maWcvJGYiCi0rICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vY29uZmlnLyRmIgotKyAgICAgICA7OwotICAgICAuLyogKQotICAgICAgICBmPWBlY2hvICRmIHwgc2VkICdzL14uLi8vJ2AKLSAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gJGYiCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE3LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE3LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkMWQxZDQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxNy1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSAwOWQ5Y2NjMWQ0NzEwMjA5NDlkMTI4NWE1Mjc2ZjE3NTA0ZmQ2MGRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMDk6Mzk6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxNy8zNl0gQXZvaWQgdXNpbmcgbGliZGlyIGZyb20gLmxhIHdoaWNoIHVzdWFsbHkgcG9pbnRzIHRvIGEKLSBob3N0IHBhdGgKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gTGl1IDxuZXQxNDdAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGx0bWFpbi5zaCB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCi1pbmRleCA4ZTIyMmY3YzE2Yi4uMGE5M2I0ZTVjM2IgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTU2MjgsNiArNTYyOCw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCi0gCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCi0gCSAgZWxzZQotKwkgICAgIyBJbnN0ZWFkIG9mIHVzaW5nIGxpYmRpciBmcm9tIC5sYSB3aGljaCB1c3VhbGx5IHBvaW50cyB0byBhIGhvc3QgcGF0aCwKLSsJICAgICMgdXNlIHRoZSBwYXRoIHRoZSAubGEgaXMgY29udGFpbmVkIGluLgotKwkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgotIAkgICAgZGlyPSIkbGliZGlyIgotIAkgICAgYWJzZGlyPSIkbGliZGlyIgotIAkgIGZpCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE4LWV4cG9ydC1DUFAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE4LWV4cG9ydC1DUFAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmNzI4ZWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxOC1leHBvcnQtQ1BQLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbSA5ODczMzhjZDg0N2E3MjNkZTUzM2JiMzE3ZTQ1MmE2MGIxZTUyMTY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMDk6NDA6NTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxOC8zNl0gZXhwb3J0IENQUAotCi1UaGUgT0UgZW52aXJvbm1lbnQgc2V0cyBhbmQgZXhwb3J0cyBDUFAgYXMgYmVpbmcgdGhlIHRhcmdldCBnY2MuIFdoZW4KLWJ1aWxkaW5nIGdjYy1jcm9zcy1jYW5hZGlhbiBmb3IgYSBtaW5ndyB0YXJnZXR0ZWQgc2RrLCB0aGUgZm9sbG93aW5nIGNhbiBiZSBmb3VuZAotaW4gYnVpbGQueDg2XzY0LXBva3lzZGstbWluZ3czMi5pNTg2LXBva3ktbGludXgvYnVpbGQteDg2XzY0LWxpbnV4L2xpYmliZXJ0eS9jb25maWcubG9nOgotCi1jb25maWd1cmU6MzY0MTogY2hlY2tpbmcgZm9yIF9GSUxFX09GRlNFVF9CSVRTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMKLWNvbmZpZ3VyZTozNjY2OiBnY2MgIC1jIC1pc3lzdGVtL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2luY2x1ZGUgLU8yIC1waXBlICBjb25mdGVzdC5jID4mNQotY29uZmlndXJlOjM2NjY6ICQ/ID0gMAotY29uZmlndXJlOjM2OTg6IHJlc3VsdDogbm8KLWNvbmZpZ3VyZTozNzg2OiBjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvcgotY29uZmlndXJlOjM4NTY6IHJlc3VsdDogeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MgLUUgLS1zeXNyb290PS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LW5hdGl2ZXNkay1taW5ndzMyLXBva3lzZGstbWluZ3czMgotY29uZmlndXJlOjM4NzY6IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjIC1FIC0tc3lzcm9vdD0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1uYXRpdmVzZGstbWluZ3czMi1wb2t5c2RrLW1pbmd3MzIgY29uZnRlc3QuYwotY29uZmlndXJlOjM4NzY6ICQ/ID0gMAotCi1Ob3RlIHRoaXMgaXMgYSAqYnVpbGQqIHRhcmdldCAoaW4gYnVpbGQteDg2XzY0LWxpbnV4KSBzbyBpdCBzaG91bGQgYmUKLXVzaW5nIHRoZSBob3N0ICJnY2MiLCBub3QgeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MuIFNpbmNlIHRoZSBtaW5ndzMyCi1oZWFkZXJzIGFyZSB2ZXJ5IGRpZmZlcmVudCwgdXNpbmcgdGhlIHdyb25nIGNwcCBpcyBhIHJlYWwgcHJvYmxlbS4gSXQgaXMgbGVha2luZwotaW50byBjb25maWd1cmUgdGhyb3VnaCB0aGUgQ1BQIHZhcmlhYmxlLiBVbHRpbWF0ZWx5IHRoaXMgbGVhZHMgdG8gYnVpbGQKLWZhaWx1cmVzIHJlbGF0ZWQgdG8gbm90IGJlaW5nIGFibGUgdG8gaW5jbHVkZSBhIHByb2Nlc3MuaCBmaWxlIGZvciBwZW0tdW5peC5jLgotCi1UaGUgZml4IGlzIHRvIGVuc3VyZSB3ZSBleHBvcnQgYSBzYW5lIENQUCB2YWx1ZSBpbnRvIHRoZSBidWlsZAotZW52aXJvbm1lbnQgd2hlbiB1c2luZyBidWlsZCB0YXJnZXRzLiBXZSBjb3VsZCBkZWZpbmUgYSBDUFBfRk9SX0JVSUxEIHZhbHVlIHdoaWNoIG1heSBiZQotdGhlIHZlcnNpb24gd2hpY2ggbmVlZHMgdG8gYmUgdXBzdHJlYW1lZCBidXQgZm9yIG5vdywgdGhpcyBmaXggaXMgZ29vZCBlbm91Z2ggdG8KLWF2b2lkIHRoZSBwcm9ibGVtLgotCi1SUCAyMi8wOC8yMDEzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUuaW4gfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDY0ZTA5MWJhNzFkLi4yNTU4MjJlM2YyNyAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTE0OSw2ICsxNDksNyBAQCBCVUlMRF9FWFBPUlRTID0gXAotIAlBUj0iJChBUl9GT1JfQlVJTEQpIjsgZXhwb3J0IEFSOyBcCi0gCUFTPSIkKEFTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQVM7IFwKLSAJQ0M9IiQoQ0NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDQzsgXAotKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE5LUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxOS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNmOWU5OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE5LUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotRnJvbSBkMjdiYTQ5ZTJlNWM2MDhjNDMyNjU0NjJkNjgzMTM2M2NjN2Y1NjViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTA6MjU6MTEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxOS8zNl0gRW5zdXJlIHRhcmdldCBnY2MgaGVhZGVycyBjYW4gYmUgaW5jbHVkZWQKLQotVGhlcmUgYXJlIGEgZmV3IGhlYWRlcnMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgdGhlIE9wZW5FbWJlZGRlZAotZ2NjLXJ1bnRpbWUgdGFyZ2V0IChvbXAuaCwgc3NwLyouaCkuIEJlaW5nIGluc3RhbGxlZCBmcm9tIGEgcmVjaXBlCi1idWlsdCBmb3IgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIHRoZXNlIGFyZSB3aXRoaW4gdGhlIHRhcmdldAotc3lzcm9vdCBhbmQgbm90IGNyb3NzL25hdGl2ZXNkazsgdGh1cyB0aGV5IHdlcmVuJ3QgYWJsZSB0byBiZQotZm91bmQgYnkgZ2NjIHdpdGggdGhlIGV4aXN0aW5nIHNlYXJjaCBwYXRocy4gQWRkIHN1cHBvcnQgZm9yCi1waWNraW5nIHVwIHRoZXNlIGhlYWRlcnMgdW5kZXIgdGhlIHN5c3Jvb3Qgc3VwcGxpZWQgb24gdGhlIGdjYwotY29tbWFuZCBsaW5lIGluIG9yZGVyIHRvIHJlc29sdmUgdGhpcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9NYWtlZmlsZS5pbiAgfCAyICsrCi0gZ2NjL2NwcGRlZmF1bHQuYyB8IDQgKysrKwotIGdjYy9kZWZhdWx0cy5oICAgfCA5ICsrKysrKysrKwotIGdjYy9nY2MuYyAgICAgICAgfCA3IC0tLS0tLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLS0tLSBhL2djYy9NYWtlZmlsZS5pbgotKysrIGIvZ2NjL01ha2VmaWxlLmluCi1AQCAtNjE4LDYgKzYxOCw3IEBAIGxpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKLSAKLSAjIERpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tcGlsZXIgZmluZHMgbGlicmFyaWVzIGV0Yy4KLSBsaWJzdWJkaXIgPSAkKGxpYmRpcikvZ2NjLyQocmVhbF90YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQotK2xpYnN1YmRpcl90YXJnZXQgPSAkKHRhcmdldF9ub25jYW5vbmljYWwpLyQodmVyc2lvbikKLSAjIERpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tcGlsZXIgZmluZHMgZXhlY3V0YWJsZXMKLSBsaWJleGVjc3ViZGlyID0gJChsaWJleGVjZGlyKS9nY2MvJChyZWFsX3RhcmdldF9ub25jYW5vbmljYWwpLyQodmVyc2lvbikkKGFjY2VsX2Rpcl9zdWZmaXgpCi0gIyBEaXJlY3RvcnkgaW4gd2hpY2ggYWxsIHBsdWdpbiByZXNvdXJjZXMgYXJlIGluc3RhbGxlZAotQEAgLTI4NjYsNiArMjg2Nyw3IEBAIENGTEFHUy1pbnRsLm8gKz0gLURMT0NBTEVESVI9XCIkKGxvY2FsZWQKLSAKLSBQUkVQUk9DRVNTT1JfREVGSU5FUyA9IFwKLSAgIC1ER0NDX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGVcIiBcCi0rICAtREdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQ9XCIkKGxpYnN1YmRpcl90YXJnZXQpL2luY2x1ZGVcIiBcCi0gICAtREZJWEVEX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGUtZml4ZWRcIiBcCi0gICAtREdQTFVTUExVU19JTkNMVURFX0RJUj1cIiQoZ2NjX2d4eF9pbmNsdWRlX2RpcilcIiBcCi0gICAtREdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVD0kKGdjY19neHhfaW5jbHVkZV9kaXJfYWRkX3N5c3Jvb3QpIFwKLS0tLSBhL2djYy9jcHBkZWZhdWx0LmMKLSsrKyBiL2djYy9jcHBkZWZhdWx0LmMKLUBAIC01OSw2ICs1OSwxMCBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzLiAgKi8KLSAgICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCi0gI2VuZGlmCi0rI2lmZGVmIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQKLSsgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMgdW5kZXIgdGhlIHNwZWNpZmllZCBzeXNyb290LiAgKi8KLSsgICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVCwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKLSsjZW5kaWYKLSAjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKLSAgICAgLyogL3Vzci9sb2NhbC9pbmNsdWRlIGNvbWVzIGJlZm9yZSB0aGUgZml4aW5jbHVkZWQgaGVhZGVyIGZpbGVzLiAgKi8KLSAgICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMiB9LApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyMC1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyMC1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGY5NmQwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjAtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gODNiY2Q0Y2M0N2FlNjM5NzFjODg4YzExN2FiZDAwZGZkNTA2NTMyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIwIEZlYiAyMDE1IDExOjE3OjE5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjAvMzZdIGdjYyA0LjgrIHdvbid0IGJ1aWxkIHdpdGggLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcKLQotc2luY2UgdGhlICouUHBvIGZpbGVzIGRvbid0IGdldCBjcmVhdGVkIHVubGVzcyAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIGlzIHRydWUuCi0KLVRoaXMgcGF0Y2ggZW5zdXJlcyB3ZSBvbmx5IHVzZSB0aG9zZSBjb21waWxlciBvcHRpb25zIHdoZW4gaXRzIGVuYWJsZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLShQcm9ibGVtIHdhcyBhbHJlYWR5IHJlcG9ydGVkIHVwc3RyZWFtLCBhdHRhY2hlZCB0aGlzIHBhdGNoIHRoZXJlCi1odHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTU1OTMwKQotCi1SUAotMjAxMi8wOS8yMgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGliYXRvbWljL01ha2VmaWxlLmFtIHwgMyArKy0KLSBsaWJhdG9taWMvTWFrZWZpbGUuaW4gfCAzICsrLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXRvbWljL01ha2VmaWxlLmFtIGIvbGliYXRvbWljL01ha2VmaWxlLmFtCi1pbmRleCBjMWI3YzczOTM0YS4uZWY0M2Q2MmMwN2EgMTAwNjQ0Ci0tLS0gYS9saWJhdG9taWMvTWFrZWZpbGUuYW0KLSsrKyBiL2xpYmF0b21pYy9NYWtlZmlsZS5hbQotQEAgLTEwMSw3ICsxMDEsOCBAQCBQQVRfUwkJPSAkKHdvcmQgMywkKFBBVF9TUExJVCkpCi0gSUZVTkNfREVGCT0gLURJRlVOQ19BTFQ9JChQQVRfUykKLSBJRlVOQ19PUFQJPSAkKHdvcmQgJChQQVRfUyksJChJRlVOQ19PUFRJT05TKSkKLSAKLS1NX0RFUFMJCT0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KLStAQU1ERVBfVFJVRUBNX0RFUFMJCT0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KLStAQU1ERVBfRkFMU0VATV9ERVBTCQk9Ci0gTV9TSVpFCQk9IC1ETj0kKFBBVF9OKQotIE1fSUZVTkMJCT0gJChpZiAkKFBBVF9TKSwkKElGVU5DX0RFRikgJChJRlVOQ19PUFQpKQotIE1fRklMRQkJPSAkKFBBVF9CQVNFKV9uLmMKLWRpZmYgLS1naXQgYS9saWJhdG9taWMvTWFrZWZpbGUuaW4gYi9saWJhdG9taWMvTWFrZWZpbGUuaW4KLWluZGV4IDI5MzI0ZTNlMGFjLi5kNWNkYjQyNTllZiAxMDA2NDQKLS0tLSBhL2xpYmF0b21pYy9NYWtlZmlsZS5pbgotKysrIGIvbGliYXRvbWljL01ha2VmaWxlLmluCi1AQCAtNDE0LDcgKzQxNCw4IEBAIFBBVF9OID0gJCh3b3JkIDIsJChQQVRfU1BMSVQpKQotIFBBVF9TID0gJCh3b3JkIDMsJChQQVRfU1BMSVQpKQotIElGVU5DX0RFRiA9IC1ESUZVTkNfQUxUPSQoUEFUX1MpCi0gSUZVTkNfT1BUID0gJCh3b3JkICQoUEFUX1MpLCQoSUZVTkNfT1BUSU9OUykpCi0tTV9ERVBTID0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KLStAQU1ERVBfVFJVRUBNX0RFUFMgPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbwotK0BBTURFUF9GQUxTRUBNX0RFUFMgPQotIE1fU0laRSA9IC1ETj0kKFBBVF9OKQotIE1fSUZVTkMgPSAkKGlmICQoUEFUX1MpLCQoSUZVTkNfREVGKSAkKElGVU5DX09QVCkpCi0gTV9GSUxFID0gJChQQVRfQkFTRSlfbi5jCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDIxLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDIxLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzNmNhMjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyMS1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSA2NjdjYzhkNDNlOGZiNGFjMDk2NTRlZTQwOGRhNDgyZjk2YjA5NTgwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMyBNYXIgMjAxNSAwODoyMToxOSArMDAwMAotU3ViamVjdDogW1BBVENIIDIxLzM2XSBEb24ndCBzZWFyY2ggaG9zdCBkaXJlY3RvcnkgZHVyaW5nICJyZWxpbmsiIGlmCi0gJGluc3RfcHJlZml4IGlzIHByb3ZpZGVkCi0KLWh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9saWJ0b29sLXBhdGNoZXMvMjAxMS0wMS9tc2cwMDAyNi5odG1sCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsdG1haW4uc2ggfCA1ICsrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAotaW5kZXggMGE5M2I0ZTVjM2IuLjZkZTZlZDJmOWEwIDEwMDY0NAotLS0tIGEvbHRtYWluLnNoCi0rKysgYi9sdG1haW4uc2gKLUBAIC02MDA0LDEyICs2MDA0LDEzIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAgIGZpCi0gCSAgICBlbHNlCi0gCSAgICAgICMgV2UgY2Fubm90IHNlZW0gdG8gaGFyZGNvZGUgaXQsIGd1ZXNzIHdlJ2xsIGZha2UgaXQuCi0rCSAgICAgICMgRGVmYXVsdCBpZiAkbGliZGlyIGlzIG5vdCByZWxhdGl2ZSB0byB0aGUgcHJlZml4OgotIAkgICAgICBhZGRfZGlyPSItTCRsaWJkaXIiCi0tCSAgICAgICMgVHJ5IGxvb2tpbmcgZmlyc3QgaW4gdGhlIGxvY2F0aW9uIHdlJ3JlIGJlaW5nIGluc3RhbGxlZCB0by4KLSsKLSAJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KLSAJCWNhc2UgJGxpYmRpciBpbgotIAkJICBbXFwvXSopCi0tCQkgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKLSsJCSAgICBhZGRfZGlyPSItTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgotIAkJICAgIDs7Ci0gCQllc2FjCi0gCSAgICAgIGZpCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDIyLVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDIyLVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1YjkxNTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyMi1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSAyNzljNGRlNDhlM2ZkNjFlMmYyNjg3ODdlZDNmMWQ2OWVkOTIyNGY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjggQXByIDIwMTUgMjM6MTU6MjcgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyMi8zNl0gVXNlIFNZU1RFTUxJQlNfRElSIHJlcGxhY2VtZW50IGluc3RlYWQgb2YgaGFyZGNvZGluZwotIGJhc2VfbGliZGlyCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1pbmRleCA1ZThiMzRkZWQwMy4uN2U2MjhiZjY2MWUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1AQCAtMjEsNyArMjEsNyBAQAotICNpZm5kZWYgR0NDX0FBUkNINjRfTElOVVhfSAotICNkZWZpbmUgR0NDX0FBUkNINjRfTElOVVhfSAotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgotIAotICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSCi0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLW11c2wtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDIzLWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjMtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODExMzA2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjMtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSAxMjc3ZDEyMDU4MzM0MDg3NDQzODI4ZGZkNTdkNDRlM2IxZGZjYzlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjggQXByIDIwMTUgMjM6MTg6MzkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyMy8zNl0gYWFyY2g2NDogQWRkIHN1cHBvcnQgZm9yIG11c2wgbGRzbwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotaW5kZXggN2U2MjhiZjY2MWUuLjE3MTdjYmU1NDcxIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotQEAgLTI0LDcgKzI0LDcgQEAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0gCi0gI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIKLS0jZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgotIAotICN1bmRlZiAgQVNBTl9DQzFfU1BFQwotICNkZWZpbmUgQVNBTl9DQzFfU1BFQyAiJXslOnNhbml0aXplKGFkZHJlc3MpOi1mdW53aW5kLXRhYmxlc30iCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDI0LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjQtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOThiMDk2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjQtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSA0YTA0ODdhZDc1YWNjZDc4MGRkMTU1YWE1OTA4NmNjNGIxMWNmYzQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBTdW4sIDUgSnVsIDIwMTUgMjA6MjU6MTggLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyNC8zNl0gbGliY2MxOiBmaXggbGliY2MxJ3MgaW5zdGFsbCBwYXRoIGFuZCBycGF0aAotCi0qIEluc3RhbGwgbGliY2MxLnNvIGFuZCBsaWJjYzFwbHVnaW4uc28gaW50bwotICAkKGxpYmV4ZWNkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pLCBhcyB3aGF0IHdlCi0gIGhhZCBkb25lIHRvIGx0by1wbHVnaW4uCi0qIEZpeCBiYWQgUlBBVEggaXVzc3VlOgotICBnY2MtNS4yLjA6IHBhY2thZ2UgZ2NjLXBsdWdpbnMgY29udGFpbnMgYmFkIFJQQVRIIC9wYXRodC90by90bXAvc3lzcm9vdHMvcWVtdXg4Ni02NC91c3IvbGliNjQvLi4vbGliNjQgaW4gZmlsZQotIC9wYXRoL3RvL2djYy81LjIuMC1yMC9wYWNrYWdlcy1zcGxpdC9nY2MtcGx1Z2lucy91c3IvbGliNjQvZ2NjL3g4Nl82NC1wb2t5LWxpbnV4LzUuMi4wL3BsdWdpbi9saWJjYzFwbHVnaW4uc28uMC4wLjAKLSBbcnBhdGhzXQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliY2MxL01ha2VmaWxlLmFtIHwgNCArKy0tCi0gbGliY2MxL01ha2VmaWxlLmluIHwgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJjYzEvTWFrZWZpbGUuYW0gYi9saWJjYzEvTWFrZWZpbGUuYW0KLWluZGV4IDcyYzZhZWFkNDc1Li40MmE4Nzc0MGIzMSAxMDA2NDQKLS0tLSBhL2xpYmNjMS9NYWtlZmlsZS5hbQotKysrIGIvbGliY2MxL01ha2VmaWxlLmFtCi1AQCAtMzcsOCArMzcsOCBAQCBsaWJpYmVydHkgPSAkKGlmICQod2lsZGNhcmQgJChsaWJpYmVydHlfbm9hc2FuKSksJChXYykkKGxpYmliZXJ0eV9ub2FzYW4pLCBcCi0gCSAgICAkKFdjKSQobGliaWJlcnR5X25vcm1hbCkpKQotIGxpYmliZXJ0eV9kZXAgPSAkKHBhdHN1YnN0ICQoV2MpJSwlLCQobGliaWJlcnR5KSkKLSAKLS1wbHVnaW5kaXIgPSAkKGxpYmRpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikvcGx1Z2luCi0tY2MxbGliZGlyID0gJChsaWJkaXIpLyQobGlic3VmZml4KQotK2NjMWxpYmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikKLStwbHVnaW5kaXIgPSAkKGNjMWxpYmRpcikKLSAKLSBpZiBFTkFCTEVfUExVR0lOCi0gcGx1Z2luX0xUTElCUkFSSUVTID0gbGliY2MxcGx1Z2luLmxhIGxpYmNwMXBsdWdpbi5sYQotZGlmZiAtLWdpdCBhL2xpYmNjMS9NYWtlZmlsZS5pbiBiL2xpYmNjMS9NYWtlZmlsZS5pbgotaW5kZXggNzEwNGI2NDkwMjYuLjIxMDNjNDc3NDY4IDEwMDY0NAotLS0tIGEvbGliY2MxL01ha2VmaWxlLmluCi0rKysgYi9saWJjYzEvTWFrZWZpbGUuaW4KLUBAIC0zOTMsOCArMzkzLDggQEAgbGliaWJlcnR5ID0gJChpZiAkKHdpbGRjYXJkICQobGliaWJlcnR5X25vYXNhbikpLCQoV2MpJChsaWJpYmVydHlfbm9hc2FuKSwgXAotIAkgICAgJChXYykkKGxpYmliZXJ0eV9ub3JtYWwpKSkKLSAKLSBsaWJpYmVydHlfZGVwID0gJChwYXRzdWJzdCAkKFdjKSUsJSwkKGxpYmliZXJ0eSkpCi0tcGx1Z2luZGlyID0gJChsaWJkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pL3BsdWdpbgotLWNjMWxpYmRpciA9ICQobGliZGlyKS8kKGxpYnN1ZmZpeCkKLStjYzFsaWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pCi0rcGx1Z2luZGlyID0gJChjYzFsaWJkaXIpCi0gQEVOQUJMRV9QTFVHSU5fVFJVRUBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJjYzFwbHVnaW4ubGEgbGliY3AxcGx1Z2luLmxhCi0gQEVOQUJMRV9QTFVHSU5fVFJVRUBjYzFsaWJfTFRMSUJSQVJJRVMgPSBsaWJjYzEubGEKLSBzaGFyZWRfc291cmNlID0gY2FsbGJhY2tzLmNjIGNhbGxiYWNrcy5oaCBjb25uZWN0aW9uLmNjIGNvbm5lY3Rpb24uaGggXAotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyNS1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyNS1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTYyYmMxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjUtaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxMyArMCwwIEBACi1Gcm9tIGExODNjODJlYTJhZjkzNGE4ZDMwMDU1YTc5MWRjMWQ4MGM5MDY3YTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjM5OjU0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjUvMzZdIGhhbmRsZSBzeXNyb290IHN1cHBvcnQgZm9yIG5hdGl2ZXNkay1nY2MKLQotQmVpbmcgYWJsZSB0byBidWlsZCBhIG5hdGl2ZXNkayBnY2MgaXMgdXNlZnVsLCBwYXJ0aWN1bGFybHkgaW4gY2FzZXMKLXdoZXJlIHRoZSBob3N0IGNvbXBpbGVyIG1heSBiZSBvZiBhbiBpbmNvbXBhdGlibGUgdmVyc2lvbiAob3IgYSAzMgotYml0IGNvbXBpbGVyIGlzIG5lZWRlZCkuCi0KLVNhZGx5LCBidWlsZGluZyBuYXRpdmVzZGstZ2NjIGlzIG5vdCBzdHJhaWdodCBmb3J3YXJkLiBXZSBpbnN0YWxsCi1uYXRpdmVzZGstZ2NjIGludG8gYSByZWxvY2F0YWJsZSBsb2NhdGlvbiBhbmQgdGhpcyBtZWFucyB0aGF0IGl0cwotbGlicmFyeSBsb2NhdGlvbnMgY2FuIGNoYW5nZS4gIk5vcm1hbCIgc3lzcm9vdCBzdXBwb3J0IGRvZXNuJ3QgaGVscAotaW4gdGhpcyBjYXNlIHNpbmNlIHRoZSB2YWx1ZXMgb2YgcGF0aHMgbGlrZSAibGliZGlyIiBjaGFuZ2UsIG5vdCBqdXN0Ci1iYXNlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBzeXN0ZW0uCi0KLUluIG9yZGVyIHRvIGhhbmRsZSB0aGlzIHdlIGRvIHR3byB0aGluZ3M6Ci0KLWEpIEFkZCAlciBpbnRvIHNwZWMgZmlsZSBtYXJrdXAgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGluamVjdGVkIHBhdGhzCi0gICBzdWNoIGFzIFNZU1RFTUxJQlNfRElSIChzZWUgZ2NjX211bHRpbGliX3NldHVwKCkpLgotYikgQWRkIG90aGVyIHBhdGhzIHdoaWNoIG5lZWQgcmVsb2NhdGlvbiBpbnRvIGEgLmdjY3JlbG9jcHJlZml4IHNlY3Rpb24KLSAgIHdoaWNoIHRoZSByZWxvY2F0aW9uIGNvZGUgd2lsbCBub3RpY2UgYW5kIGFkanVzdCBhdXRvbWF0aWNhbGx5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLVJQIDIwMTUvNy8yOAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NwcGRlZmF1bHQuYyB8IDUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQotIGdjYy9jcHBkZWZhdWx0LmggfCAgMyArKy0KLSBnY2MvZ2NjLmMgICAgICAgIHwgMjAgKysrKysrKysrKysrKy0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5jIGIvZ2NjL2NwcGRlZmF1bHQuYwotaW5kZXggOTgwZTJiZDQ3YTcuLjM5YjYwNTllZmRjIDEwMDY0NAotLS0tIGEvZ2NjL2NwcGRlZmF1bHQuYwotKysrIGIvZ2NjL2NwcGRlZmF1bHQuYwotQEAgLTM1LDYgKzM1LDMwIEBACi0gIyB1bmRlZiBDUk9TU19JTkNMVURFX0RJUgotICNlbmRpZgotIAotK3N0YXRpYyBjaGFyIEdQTFVTUExVU19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHUExVU1BMVVNfSU5DTFVERV9ESVI7Ci0rc3RhdGljIGNoYXIgR0NDX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdDQ19JTkNMVURFX0RJUjsKLStzdGF0aWMgY2hhciBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUjsKLStzdGF0aWMgY2hhciBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSOwotK3N0YXRpYyBjaGFyIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVDsKLSsjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBMT0NBTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBMT0NBTF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgUFJFRklYX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgUFJFRklYX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFBSRUZJWF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgRklYRURfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBGSVhFRF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBGSVhFRF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgQ1JPU1NfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBDUk9TU19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBDUk9TU19JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgVE9PTF9JTkNMVURFX0RJUgotK3N0YXRpYyBjaGFyIFRPT0xfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gVE9PTF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSCi0rc3RhdGljIGNoYXIgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUjsKLSsjZW5kaWYKLSsKLSBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KLSAjaWZkZWYgSU5DTFVERV9ERUZBVUxUUwotID0gSU5DTFVERV9ERUZBVUxUUzsKLUBAIC00MiwzOCArNjYsMzggQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCi0gPSB7Ci0gI2lmZGVmIEdQTFVTUExVU19JTkNMVURFX0RJUgotICAgICAvKiBQaWNrIHVwIEdOVSBDKysgZ2VuZXJpYyBpbmNsdWRlIGZpbGVzLiAgKi8KLS0gICAgeyBHUExVU1BMVVNfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAotKyAgICB7IEdQTFVTUExVU19JTkNMVURFX0RJUlZBUiwgIkcrKyIsIDEsIDEsCi0gICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSCi0gICAgIC8qIFBpY2sgdXAgR05VIEMrKyB0YXJnZXQtZGVwZW5kZW50IGluY2x1ZGUgZmlsZXMuICAqLwotLSAgICB7IEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKLSsgICAgeyBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUlZBUiwgIkcrKyIsIDEsIDEsCi0gICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAxIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUgotICAgICAvKiBQaWNrIHVwIEdOVSBDKysgYmFja3dhcmQgYW5kIGRlcHJlY2F0ZWQgaW5jbHVkZSBmaWxlcy4gICovCi0tICAgIHsgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKLSsgICAgeyBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAotICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBHQ0NfSU5DTFVERV9ESVIKLSAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMuICAqLwotLSAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSsgICAgeyBHQ0NfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQKLSAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMgdW5kZXIgdGhlIHNwZWNpZmllZCBzeXNyb290LiAgKi8KLS0gICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVCwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKLSsgICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzJWQVIsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCi0gICAgIC8qIC91c3IvbG9jYWwvaW5jbHVkZSBjb21lcyBiZWZvcmUgdGhlIGZpeGluY2x1ZGVkIGhlYWRlciBmaWxlcy4gICovCi0tICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDIgfSwKLS0gICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMCB9LAotKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAxLCAyIH0sCi0rICAgIHsgTE9DQUxfSU5DTFVERV9ESVJWQVIsIDAsIDAsIDEsIDEsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgUFJFRklYX0lOQ0xVREVfRElSCi0tICAgIHsgUFJFRklYX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAwLCAwIH0sCi0rICAgIHsgUFJFRklYX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAwLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEZJWEVEX0lOQ0xVREVfRElSCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZml4aW5jbHVkZXMuICAqLwotLSAgICB7IEZJWEVEX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwKLSsgICAgeyBGSVhFRF9JTkNMVURFX0RJUlZBUiwgIkdDQyIsIDAsIDAsIDAsCi0gICAgICAgLyogQSBtdWx0aWxpYiBzdWZmaXggbmVlZHMgYWRkaW5nIGlmIGRpZmZlcmVudCBtdWx0aWxpYnMgdXNlCi0gCSBkaWZmZXJlbnQgaGVhZGVycy4gICovCi0gI2lmZGVmIFNZU1JPT1RfSEVBREVSU19TVUZGSVhfU1BFQwotQEAgLTg1LDE2ICsxMDksMTYgQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCi0gI2VuZGlmCi0gI2lmZGVmIENST1NTX0lOQ0xVREVfRElSCi0gICAgIC8qIE9uZSBwbGFjZSB0aGUgdGFyZ2V0IHN5c3RlbSdzIGhlYWRlcnMgbWlnaHQgYmUuICAqLwotLSAgICB7IENST1NTX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotKyAgICB7IENST1NTX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBUT09MX0lOQ0xVREVfRElSCi0gICAgIC8qIEFub3RoZXIgcGxhY2UgdGhlIHRhcmdldCBzeXN0ZW0ncyBoZWFkZXJzIG1pZ2h0IGJlLiAgKi8KLS0gICAgeyBUT09MX0lOQ0xVREVfRElSLCAiQklOVVRJTFMiLCAwLCAxLCAwLCAwIH0sCi0rICAgIHsgVE9PTF9JTkNMVURFX0RJUlZBUiwgIkJJTlVUSUxTIiwgMCwgMSwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIKLSAgICAgLyogL3Vzci9pbmNsdWRlIGNvbWVzIGRlYWQgbGFzdC4gICovCi0tICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDIgfSwKLS0gICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMCB9LAotKyAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAyIH0sCi0rICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDAgfSwKLSAjZW5kaWYKLSAgICAgeyAwLCAwLCAwLCAwLCAwLCAwIH0KLSAgIH07Ci1kaWZmIC0tZ2l0IGEvZ2NjL2NwcGRlZmF1bHQuaCBiL2djYy9jcHBkZWZhdWx0LmgKLWluZGV4IGUyZDk2ZjFlNzYwLi4yOWZhNWY4MTVjOCAxMDA2NDQKLS0tLSBhL2djYy9jcHBkZWZhdWx0LmgKLSsrKyBiL2djYy9jcHBkZWZhdWx0LmgKLUBAIC0zMyw3ICszMyw4IEBACi0gCi0gc3RydWN0IGRlZmF1bHRfaW5jbHVkZQotIHsKLS0gIGNvbnN0IGNoYXIgKmNvbnN0IGZuYW1lOwkvKiBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5LiAgKi8KLSsgIGNvbnN0IGNoYXIgKmZuYW1lOyAgICAgLyogVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeS4gICovCi0rCi0gICBjb25zdCBjaGFyICpjb25zdCBjb21wb25lbnQ7CS8qIFRoZSBjb21wb25lbnQgY29udGFpbmluZyB0aGUgZGlyZWN0b3J5Ci0gCQkJCSAgIChzZWUgdXBkYXRlX3BhdGggaW4gcHJlZml4LmMpICovCi0gICBjb25zdCBjaGFyIGNwbHVzcGx1czsJCS8qIE9ubHkgbG9vayBoZXJlIGlmIHdlJ3JlIGNvbXBpbGluZyBDKysuICAqLwotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggMWEzNzA0YjI3NjMuLmRiMGUyOTM0MDM4IDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0yNTMsNiArMjUzLDggQEAgRklMRSAqcmVwb3J0X3RpbWVzX3RvX2ZpbGUgPSBOVUxMOwotICNlbmRpZgotIHN0YXRpYyBjb25zdCBjaGFyICp0YXJnZXRfc3lzdGVtX3Jvb3QgPSBERUZBVUxUX1RBUkdFVF9TWVNURU1fUk9PVDsKLSAKLStzdGF0aWMgY2hhciB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNZU1RFTUxJQlNfRElSOwotKwotIC8qIE5vbnplcm8gbWVhbnMgcGFzcyB0aGUgdXBkYXRlZCB0YXJnZXRfc3lzdGVtX3Jvb3QgdG8gdGhlIGNvbXBpbGVyLiAgKi8KLSAKLSBzdGF0aWMgaW50IHRhcmdldF9zeXN0ZW1fcm9vdF9jaGFuZ2VkOwotQEAgLTUyNyw2ICs1MjksNyBAQCBvciB3aXRoIGNvbnN0YW50IHRleHQgaW4gYSBzaW5nbGUgYXJndW1lbnQuCi0gICVHICAgICBwcm9jZXNzIExJQkdDQ19TUEVDIGFzIGEgc3BlYy4KLSAgJVIgICAgIE91dHB1dCB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0YXJnZXRfc3lzdGVtX3Jvb3QgYW5kCi0gICAgICAgICB0YXJnZXRfc3lzcm9vdF9zdWZmaXguCi0rICVyICAgICBPdXRwdXQgdGhlIGJhc2UgcGF0aCB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4Ci0gICVTICAgICBwcm9jZXNzIFNUQVJURklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBTIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KLSAgJUUgICAgIHByb2Nlc3MgRU5ERklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBFIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KLSAgJUMgICAgIHByb2Nlc3MgQ1BQX1NQRUMgYXMgYSBzcGVjLgotQEAgLTE0OTMsMTAgKzE0OTYsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmdjY19saWJleGVjX3ByZWZpeDsKLSAgICBnY2NfZXhlY19wcmVmaXggaXMgc2V0IGJlY2F1c2UsIGluIHRoYXQgY2FzZSwgd2Uga25vdyB3aGVyZSB0aGUKLSAgICBjb21waWxlciBoYXMgYmVlbiBpbnN0YWxsZWQsIGFuZCB1c2UgcGF0aHMgcmVsYXRpdmUgdG8gdGhhdAotICAgIGxvY2F0aW9uIGluc3RlYWQuICAqLwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9leGVjX3ByZWZpeCA9IFNUQU5EQVJEX0VYRUNfUFJFRklYOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9saWJleGVjX3ByZWZpeCA9IFNUQU5EQVJEX0xJQkVYRUNfUFJFRklYOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9iaW5kaXJfcHJlZml4ID0gU1RBTkRBUkRfQklORElSX1BSRUZJWDsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeCA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVg7Ci0rc3RhdGljIGNoYXIgc3RhbmRhcmRfZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7Ci0rc3RhdGljIGNoYXIgc3RhbmRhcmRfbGliZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfTElCRVhFQ19QUkVGSVg7Ci0rc3RhdGljIGNoYXIgc3RhbmRhcmRfYmluZGlyX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9CSU5ESVJfUFJFRklYOwotK3N0YXRpYyBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKLSAKLSAvKiBGb3IgbmF0aXZlIGNvbXBpbGVycywgdGhlc2UgYXJlIHdlbGwta25vd24gcGF0aHMgY29udGFpbmluZwotICAgIGNvbXBvbmVudHMgdGhhdCBtYXkgYmUgcHJvdmlkZWQgYnkgdGhlIHN5c3RlbS4gIEZvciBjcm9zcwotQEAgLTE1MDQsOSArMTUwNyw5IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKLSBzdGF0aWMgY29uc3QgY2hhciAqbWRfZXhlY19wcmVmaXggPSBNRF9FWEVDX1BSRUZJWDsKLSBzdGF0aWMgY29uc3QgY2hhciAqbWRfc3RhcnRmaWxlX3ByZWZpeCA9IE1EX1NUQVJURklMRV9QUkVGSVg7Ci0gc3RhdGljIGNvbnN0IGNoYXIgKm1kX3N0YXJ0ZmlsZV9wcmVmaXhfMSA9IE1EX1NUQVJURklMRV9QUkVGSVhfMTsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xCi0rc3RhdGljIGNoYXIgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKQotICAgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzE7Ci0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMgotK3N0YXRpYyBjaGFyIHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkKLSAgID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yOwotIAotIC8qIEEgcmVsYXRpdmUgcGF0aCB0byBiZSB1c2VkIGluIGZpbmRpbmcgdGhlIGxvY2F0aW9uIG9mIHRvb2xzCi1AQCAtNTkxNSw2ICs1OTE4LDExIEBAIGRvX3NwZWNfMSAoY29uc3QgY2hhciAqc3BlYywgaW50IGluc3dpdGNoLCBjb25zdCBjaGFyICpzb2Z0X21hdGNoZWRfcGFydCkKLSAJICAgICAgfQotIAkgICAgYnJlYWs7Ci0gCi0rICAgICAgICAgIGNhc2UgJ3InOgotKyAgICAgICAgICAgICAgb2JzdGFja19ncm93ICgmb2JzdGFjaywgdGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCwKLSsJCSAgICAgIHN0cmxlbiAodGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCkpOwotKyAgICAgICAgICAgIGJyZWFrOwotKwotIAkgIGNhc2UgJ1MnOgotIAkgICAgdmFsdWUgPSBkb19zcGVjXzEgKHN0YXJ0ZmlsZV9zcGVjLCAwLCBOVUxMKTsKLSAJICAgIGlmICh2YWx1ZSAhPSAwKQotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyNi1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyNi1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZGUyMDZlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjYtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi1Gcm9tIGRhYjRkYjE0ZTMxOWYzMjM5YTJiNGM3ZDFmYmYyOTcxOTM2ZTI3YmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjQxOjQ1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjYvMzZdIFNlYXJjaCB0YXJnZXQgc3lzcm9vdCBnY2MgdmVyc2lvbiBzcGVjaWZpYyBkaXJzIHdpdGgKLSBtdWx0aWxpYi4KLQotV2UgaW5zdGFsbCB0aGUgZ2NjIGxpYnJhcmllcyAoc3VjaCBhcyBjcnRiZWdpbi5wKSBpbnRvCi08c3lzcm9vdD48bGliZGlyPi88dGFyZ2V0LXN5cz4vNS4yLjAvCi13aGljaCBpcyBhIGRlZmF1bHQgc2VhcmNoIHBhdGggZm9yIEdDQyAoYWthIG11bHRpX3N1ZmZpeCBpbiB0aGUKLWNvZGUgYmVsb3cpLiA8dGFyZ2V0LXN5cz4gaXMgJ21hY2hpbmUnIGluIGdjYydzIHRlcm1pbm9sb2d5LiBXZSB1c2UKLXRoZXNlIGRpcmVjdG9yaWVzIHNvIHRoYXQgbXVsdGlwbGUgZ2NjIHZlcnNpb25zIGNvdWxkIGluIHRoZW9yeQotY28tZXhpc3Qgb24gdGFyZ2V0LgotCi1XZSBvbmx5IHdhbnQgdG8gYnVpbGQgb25lIGdjYy1jcm9zcy1jYW5hZGlhbiBwZXIgYXJjaCBhbmQgaGF2ZSB0aGlzIHdvcmsKLWZvciBhbGwgbXVsdGlsaWJzLiA8dGFyZ2V0LXN5cz4gY2FuIGJlIGhhbmRsZWQgYnkgbWFwcGluZyB0aGUgbXVsdGlsaWIKLTx0YXJnZXQtc3lzPiB0byB0aGUgb25lIHVzZWQgYnkgZ2NjLWNyb3NzLWNhbmFkaWFuLCBlLmcuCi1taXBzNjQtcG9sa21sbGliMzItbGludXgKLWlzIHN5bWxpbmtlZCB0byBieSBtaXBzNjQtcG9reS1saW51eC4KLQotVGhlIGRlZmF1bHQgZ2NjIHNlYXJjaCBwYXRoIGluIHRoZSB0YXJnZXQgc3lzcm9vdCBmb3IgYSAibGliNjQiIG11dGxpbGliCi1pczoKLQotPHN5c3Jvb3Q+L2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0LwotPHN5c3Jvb3Q+L3Vzci9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi91c3IvbGliMzIvLi4vbGliNjQvCi08c3lzcm9vdD4vbGliMzIvCi08c3lzcm9vdD4vdXNyL2xpYjMyLwotCi13aGljaCBtZWFucyB0aGF0IHRoZSBsaWIzMiBjcnRiZWdpbi5vIHdpbGwgYmUgZm91bmQgYW5kIHRoZSBsaWI2NCBvbmVzCi13aWxsIG5vdCB3aGljaCBsZWFkcyB0byBjb21waWxlciBmYWlsdXJlcy4KLQotVGhpcyBwYXRjaCBpbmplY3RzIGEgbXVsdGlsaWIgdmVyc2lvbiBvZiB0aGF0IHBhdGggZmlyc3Qgc28gdGhlIGxpYjY0Ci1iaW5hcmllcyBjYW4gYmUgZm91bmQgZmlyc3QuIFdpdGggdGhpcyBjaGFuZ2UgdGhlIHNlYXJjaCBwYXRoIGJlY29tZXM6Ci0KLTxzeXNyb290Pi9saWIzMi8uLi9saWI2NC9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi9saWIzMi8uLi9saWI2NC8KLTxzeXNyb290Pi91c3IvbGliMzIvLi4vbGliNjQvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vdXNyL2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC8KLTxzeXNyb290Pi9saWIzMi8KLTxzeXNyb290Pi91c3IvbGliMzIvCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotUlAgMjAxNS83LzMxCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvZ2NjLmMgfCAyOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IGRiMGUyOTM0MDM4Li4xYzIxZDFiMDhlYiAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMjYxMCw3ICsyNjEwLDcgQEAgZm9yX2VhY2hfcGF0aCAoY29uc3Qgc3RydWN0IHBhdGhfcHJlZml4ICpwYXRocywKLSAgICAgICBpZiAocGF0aCA9PSBOVUxMKQotIAl7Ci0gCSAgbGVuID0gcGF0aHMtPm1heF9sZW4gKyBleHRyYV9zcGFjZSArIDE7Ci0tCSAgbGVuICs9IE1BWCAoTUFYIChzdWZmaXhfbGVuLCBtdWx0aV9vc19kaXJfbGVuKSwgbXVsdGlhcmNoX2xlbik7Ci0rCSAgbGVuICs9IE1BWCAoKHN1ZmZpeF9sZW4gKyBtdWx0aV9vc19kaXJfbGVuKSwgbXVsdGlhcmNoX2xlbik7Ci0gCSAgcGF0aCA9IFhORVdWRUMgKGNoYXIsIGxlbik7Ci0gCX0KLSAKLUBAIC0yNjIyLDYgKzI2MjIsMzMgQEAgZm9yX2VhY2hfcGF0aCAoY29uc3Qgc3RydWN0IHBhdGhfcHJlZml4ICpwYXRocywKLSAJICAvKiBMb29rIGZpcnN0IGluIE1BQ0hJTkUvVkVSU0lPTiBzdWJkaXJlY3RvcnkuICAqLwotIAkgIGlmICghc2tpcF9tdWx0aV9kaXIpCi0gCSAgICB7Ci0rCSAgICAgIGlmICghKHBsLT5vc19tdWx0aWxpYiA/IHNraXBfbXVsdGlfb3NfZGlyIDogc2tpcF9tdWx0aV9kaXIpKQotKwkgICAgICAgIHsKLSsJICAgICAgICAgIGNvbnN0IGNoYXIgKnRoaXNfbXVsdGk7Ci0rCSAgICAgICAgICBzaXplX3QgdGhpc19tdWx0aV9sZW47Ci0rCi0rCSAgICAgICAgICBpZiAocGwtPm9zX211bHRpbGliKQotKwkJICAgIHsKLSsJCSAgICAgIHRoaXNfbXVsdGkgPSBtdWx0aV9vc19kaXI7Ci0rCQkgICAgICB0aGlzX211bHRpX2xlbiA9IG11bHRpX29zX2Rpcl9sZW47Ci0rCQkgICAgfQotKwkgICAgICAgICAgZWxzZQotKwkJICAgIHsKLSsJCSAgICAgIHRoaXNfbXVsdGkgPSBtdWx0aV9kaXI7Ci0rCQkgICAgICB0aGlzX211bHRpX2xlbiA9IG11bHRpX2Rpcl9sZW47Ci0rCQkgICAgfQotKwotKwkgICAgICAgICAgLyogTG9vayBpbiBtdWx0aWxpYiBNQUNISU5FL1ZFUlNJT04gc3ViZGlyZWN0b3J5IGZpcnN0ICovCi0rCSAgICAgICAgICBpZiAodGhpc19tdWx0aV9sZW4pCi0rCSAgICAgICAgICAgIHsKLSsJCSAgICAgIG1lbWNweSAocGF0aCArIGxlbiwgdGhpc19tdWx0aSwgdGhpc19tdWx0aV9sZW4gKyAxKTsKLSsJICAgICAgICAgICAgICBtZW1jcHkgKHBhdGggKyBsZW4gKyB0aGlzX211bHRpX2xlbiwgbXVsdGlfc3VmZml4LCBzdWZmaXhfbGVuICsgMSk7Ci0rCSAgICAgICAgICAgICAgcmV0ID0gY2FsbGJhY2sgKHBhdGgsIGNhbGxiYWNrX2luZm8pOwotKwkgICAgICAgICAgICAgICAgaWYgKHJldCkKLSsJCSAgICAgICAgICBicmVhazsKLSsJICAgICAgICAgICAgfQotKwkgICAgICAgIH0KLSsKLSAJICAgICAgbWVtY3B5IChwYXRoICsgbGVuLCBtdWx0aV9zdWZmaXgsIHN1ZmZpeF9sZW4gKyAxKTsKLSAJICAgICAgcmV0ID0gY2FsbGJhY2sgKHBhdGgsIGNhbGxiYWNrX2luZm8pOwotIAkgICAgICBpZiAocmV0KQotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyNy1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjctRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkODllOGUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyNy1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBACi1Gcm9tIDhlODRiYjA5ZDJiN2E2MDQ4N2EzMGU0MzhiYjEwOWYzMWMyYzI1NGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjQyOjQ1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjcvMzZdIEZpeCB2YXJpb3VzIF9GT1JfQlVJTEQgYW5kIHJlbGF0ZWQgdmFyaWFibGVzCi0KLVdoZW4gZG9pbmcgYSBGT1JfQlVJTEQgdGhpbmcsIHlvdSBoYXZlIHRvIG92ZXJyaWRlIENGTEFHUyB3aXRoCi1DRkxBR1NfRk9SX0JVSUxELiBBbmQgaWYgeW91IHVzZSBDKyssIHlvdSBhbHNvIGhhdmUgdG8gb3ZlcnJpZGUKLUNYWEZMQUdTIHdpdGggQ1hYRkxBR1NfRk9SX0JVSUxELgotV2l0aG91dCB0aGlzLCB3aGVuIGJ1aWxkaW5nIGZvciBtaW5ndywgeW91IGVuZCB1cCB0cnlpbmcgdG8gdXNlCi10aGUgbWluZ3cgaGVhZGVycyBmb3IgYSBob3N0IGJ1aWxkLgotCi1UaGUgc2FtZSBnb2VzIGZvciBvdGhlciB2YXJpYWJsZXMgYXMgd2VsbCwgc3VjaCBhcyBDUFBGTEFHUywKLUNQUCwgYW5kIEdNUElOQy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFBldGVyIFNlZWJhY2ggPHBldGVyLnNlZWJhY2hAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5pbiAgICAgIHwgNiArKysrKysKLSBNYWtlZmlsZS50cGwgICAgIHwgNSArKysrKwotIGdjYy9NYWtlZmlsZS5pbiAgfCAyICstCi0gZ2NjL2NvbmZpZ3VyZSAgICB8IDIgKy0KLSBnY2MvY29uZmlndXJlLmFjIHwgMiArLQotIDUgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDI1NTgyMmUzZjI3Li45ZGMwZGZmMDQ3NCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTE1Miw2ICsxNTIsNyBAQCBCVUlMRF9FWFBPUlRTID0gXAotIAlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENQUEZMQUdTOyBcCi0gCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKLSAJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFhGTEFHUzsgXAotIAlHRk9SVFJBTj0iJChHRk9SVFJBTl9GT1JfQlVJTEQpIjsgZXhwb3J0IEdGT1JUUkFOOyBcCi1AQCAtMTcxLDYgKzE3Miw5IEBAIEJVSUxEX0VYUE9SVFMgPSBcCi0gIyBidWlsdCBmb3IgdGhlIGJ1aWxkIHN5c3RlbSB0byBvdmVycmlkZSB0aG9zZSBpbiBCQVNFX0ZMQUdTX1RPX1BBU1MuCi0gRVhUUkFfQlVJTERfRkxBR1MgPSBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSIgXAotKwlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCi0rCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIiBcCi0rCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJTERGTEFHUz0iJChMREZMQUdTX0ZPUl9CVUlMRCkiCi0gCi0gIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJ1aWx0IGZvciB0aGUgaG9zdCBzeXN0ZW0uCi1AQCAtMTg4LDYgKzE5Miw3IEBAIEhPU1RfU1VCRElSID0gQGhvc3Rfc3ViZGlyQAotIEhPU1RfRVhQT1JUUyA9IFwKLSAJJChCQVNFX0VYUE9SVFMpIFwKLSAJQ0M9IiQoQ0MpIjsgZXhwb3J0IENDOyBcCi0rCUNQUD0iJChDQykgLUUiOyBleHBvcnQgQ1BQOyBcCi0gCUFEQV9DRkxBR1M9IiQoQURBX0NGTEFHUykiOyBleHBvcnQgQURBX0NGTEFHUzsgXAotIAlDRkxBR1M9IiQoQ0ZMQUdTKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLUBAIC03NzUsNiArNzgwLDcgQEAgQkFTRV9GTEFHU19UT19QQVNTID0gXAotIAkiQ0NfRk9SX0JVSUxEPSQoQ0NfRk9SX0JVSUxEKSIgXAotIAkiQ0ZMQUdTX0ZPUl9CVUlMRD0kKENGTEFHU19GT1JfQlVJTEQpIiBcCi0gCSJDWFhfRk9SX0JVSUxEPSQoQ1hYX0ZPUl9CVUlMRCkiIFwKLSsJIkNYWEZMQUdTX0ZPUl9CVUlMRD0kKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJIkVYUEVDVD0kKEVYUEVDVCkiIFwKLSAJIkZMRVg9JChGTEVYKSIgXAotIAkiSU5TVEFMTD0kKElOU1RBTEwpIiBcCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUudHBsIGIvTWFrZWZpbGUudHBsCi1pbmRleCA0MWNhZTU4YTI2Ny4uZDNmNmI3OWFjZGMgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS50cGwKLSsrKyBiL01ha2VmaWxlLnRwbAotQEAgLTE1NCw2ICsxNTQsNyBAQCBCVUlMRF9FWFBPUlRTID0gXAotIAlDQz0iJChDQ19GT1JfQlVJTEQpIjsgZXhwb3J0IENDOyBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLSsJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDUFBGTEFHUzsgXAotIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCi0gCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYRkxBR1M7IFwKLSAJR0ZPUlRSQU49IiQoR0ZPUlRSQU5fRk9SX0JVSUxEKSI7IGV4cG9ydCBHRk9SVFJBTjsgXAotQEAgLTE3Myw2ICsxNzQsOSBAQCBCVUlMRF9FWFBPUlRTID0gXAotICMgYnVpbHQgZm9yIHRoZSBidWlsZCBzeXN0ZW0gdG8gb3ZlcnJpZGUgdGhvc2UgaW4gQkFTRV9GTEFHU19UT19QQVNTLgotIEVYVFJBX0JVSUxEX0ZMQUdTID0gXAotIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiIFwKLSsJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSIgXAotKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSIgXAotKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIiBcCi0gCUxERkxBR1M9IiQoTERGTEFHU19GT1JfQlVJTEQpIgotIAotICMgVGhpcyBpcyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBidWlsdCBmb3IgdGhlIGhvc3Qgc3lzdGVtLgotQEAgLTE5MCw2ICsxOTQsNyBAQCBIT1NUX1NVQkRJUiA9IEBob3N0X3N1YmRpckAKLSBIT1NUX0VYUE9SVFMgPSBcCi0gCSQoQkFTRV9FWFBPUlRTKSBcCi0gCUNDPSIkKENDKSI7IGV4cG9ydCBDQzsgXAotKwlDUFA9IiQoQ0MpIC1FIjsgZXhwb3J0IENQUDsgXAotIAlBREFfQ0ZMQUdTPSIkKEFEQV9DRkxBR1MpIjsgZXhwb3J0IEFEQV9DRkxBR1M7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHUykiOyBleHBvcnQgQ0ZMQUdTOyBcCi0gCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCi1kaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCi1pbmRleCAyMTQ3Mjc0NWMyYy4uOGM5M2YwM2ZmZGMgMTAwNjQ0Ci0tLS0gYS9nY2MvTWFrZWZpbGUuaW4KLSsrKyBiL2djYy9NYWtlZmlsZS5pbgotQEAgLTgwNSw3ICs4MDUsNyBAQCBCVUlMRF9MREZMQUdTPUBCVUlMRF9MREZMQUdTQAotIEJVSUxEX05PX1BJRV9GTEFHID0gQEJVSUxEX05PX1BJRV9GTEFHQAotIEJVSUxEX0xERkxBR1MgKz0gJChCVUlMRF9OT19QSUVfRkxBRykKLSBCVUlMRF9DUFBGTEFHUz0gLUkuIC1JJChARCkgLUkkKHNyY2RpcikgLUkkKHNyY2RpcikvJChARCkgXAotLQkJLUkkKHNyY2RpcikvLi4vaW5jbHVkZSBASU5DSU5UTEAgJChDUFBJTkMpICQoQ1BQRkxBR1MpCi0rCQktSSQoc3JjZGlyKS8uLi9pbmNsdWRlIEBJTkNJTlRMQCAkKENQUElOQykgJChDUFBGTEFHU19GT1JfQlVJTEQpCi0gCi0gIyBBY3R1YWwgbmFtZSB0byB1c2Ugd2hlbiBpbnN0YWxsaW5nIGEgbmF0aXZlIGNvbXBpbGVyLgotIEdDQ19JTlNUQUxMX05BTUUgOj0gJChzaGVsbCBlY2hvIGdjY3xzZWQgJyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknKQotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCA5MTFkZTJjZjAxNy4uMzI1YWNlMzRjZGYgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMTE5NjUsNyArMTE5NjUsNyBAQCBlbHNlCi0gCUNDPSIke0NDX0ZPUl9CVUlMRH0iIENGTEFHUz0iJHtDRkxBR1NfRk9SX0JVSUxEfSIgXAotIAlDWFg9IiR7Q1hYX0ZPUl9CVUlMRH0iIENYWEZMQUdTPSIke0NYWEZMQUdTX0ZPUl9CVUlMRH0iIFwKLSAJTEQ9IiR7TERfRk9SX0JVSUxEfSIgTERGTEFHUz0iJHtMREZMQUdTX0ZPUl9CVUlMRH0iIFwKLS0JR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTfSAtREdFTkVSQVRPUl9GSUxFIiBcCi0rCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU19GT1JfQlVJTER9IC1ER0VORVJBVE9SX0ZJTEUiIFwKLSAJJHtyZWFsc3JjZGlyfS9jb25maWd1cmUgXAotIAkJLS1lbmFibGUtbGFuZ3VhZ2VzPSR7ZW5hYmxlX2xhbmd1YWdlcy1hbGx9IFwKLSAJCS0tdGFyZ2V0PSR0YXJnZXRfYWxpYXMgLS1ob3N0PSRidWlsZF9hbGlhcyAtLWJ1aWxkPSRidWlsZF9hbGlhcwotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCBiNDEzYWU5YmYyNS4uNzJhNmM5NTEyMWIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtMTc0Myw3ICsxNzQzLDcgQEAgZWxzZQotIAlDQz0iJHtDQ19GT1JfQlVJTER9IiBDRkxBR1M9IiR7Q0ZMQUdTX0ZPUl9CVUlMRH0iIFwKLSAJQ1hYPSIke0NYWF9GT1JfQlVJTER9IiBDWFhGTEFHUz0iJHtDWFhGTEFHU19GT1JfQlVJTER9IiBcCi0gCUxEPSIke0xEX0ZPUl9CVUlMRH0iIExERkxBR1M9IiR7TERGTEFHU19GT1JfQlVJTER9IiBcCi0tCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU30gLURHRU5FUkFUT1JfRklMRSIgXAotKwlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1NfRk9SX0JVSUxEfSAtREdFTkVSQVRPUl9GSUxFIiBcCi0gCSR7cmVhbHNyY2Rpcn0vY29uZmlndXJlIFwKLSAJCS0tZW5hYmxlLWxhbmd1YWdlcz0ke2VuYWJsZV9sYW5ndWFnZXMtYWxsfSBcCi0gCQktLXRhcmdldD0kdGFyZ2V0X2FsaWFzIC0taG9zdD0kYnVpbGRfYWxpYXMgLS1idWlsZD0kYnVpbGRfYWxpYXMKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjgtbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDI4LW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGQ5MmEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjgtbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDU2NDdmNzczZTI4YjUyOGE2NzgwMGVmMDZjYTQ0NzMwZjlmNWRjN2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyIEZlYiAyMDE2IDEwOjI2OjEwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMjgvMzZdIG5pb3MyOiBEZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmggYi9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKLWluZGV4IDY5ODczNGFkZDM1Li5lZWVlNjBlY2ZlYSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbmlvczIvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oCi1AQCAtMzAsNiArMzAsNyBAQAotICNkZWZpbmUgQ1BQX1NQRUMgIiV7cG9zaXg6LURfUE9TSVhfU09VUkNFfSAle3B0aHJlYWQ6LURfUkVFTlRSQU5UfSIKLSAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LW5pb3MyLnNvLjEiCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICAiL2xpYi9sZC1tdXNsLW5pb3MyLnNvLjEiCi0gCi0gI3VuZGVmIExJTktfU1BFQwotICNkZWZpbmUgTElOS19TUEVDIExJTktfU1BFQ19FTkRJQU4gXAotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyOS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyOS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTllNWEwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjktQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLUZyb20gNDc0MDQzY2E3YTA2NGNhN2IwYTMyMzA4YTBlZDZmN2M1NDZmMTdiMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI3IEp1biAyMDE3IDE4OjEwOjU0IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMjkvMzZdIEFkZCBzc3Bfbm9uc2hhcmVkIHRvIGxpbmsgY29tbWFuZGxpbmUgZm9yIG11c2wgdGFyZ2V0cwotCi13aGVuIC1mc3RhY2stcHJvdGVjdG9yIG9wdGlvbnMgYXJlIGVuYWJsZWQgd2UgbmVlZCB0bwotbGluayB3aXRoIHNzcF9zaGFyZWQgb24gbXVzbCBzaW5jZSBpdCBkb2VzIG5vdCBwcm92aWRlCi10aGUgX19zdGFja19jaGtfZmFpbF9sb2NhbCgpIHNvIGVzc2VudGlhbGx5IGl0IHByb3ZpZGVzCi1saWJzc3AgYnV0IG5vdCBsaWJzc3Bfbm9uc2hhcmVkIHNvbWV0aGluZyBsaWtlCi1UQVJHRVRfTElCQ19QUk9WSURFU19TU1BfQlVUX05PVF9TU1BfTk9OU0hBUkVECi0gd2hlcmUtYXMgZm9yIGdsaWJjIHRoZSBuZWVkZWQgc3ltYm9scwotYXJlIGFscmVhZHkgcHJlc2VudCBpbiBsaWJjX25vbnNoYXJlZCBsaWJyYXJ5IHRoZXJlZm9yZQotd2UgZG8gbm90IG5lZWQgYW55IGxpYnJhcnkgaGVscGVyIG9uIGdsaWJjIGJhc2VkIHN5c3RlbXMKLWJ1dCBtdXNsIG5lZWRzIHRoZSBsaWJzc3Bfbm9zaGFyZWQgZnJvbSBnY2MKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL2xpbnV4LmggICAgICAgICAgfCAgNyArKysrKysrCi0gZ2NjL2NvbmZpZy9yczYwMDAvbGludXguaCAgIHwgMTAgKysrKysrKysrKwotIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCB8IDEwICsrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbGludXguaCBiL2djYy9jb25maWcvbGludXguaAotaW5kZXggNGIwNWQ4ZTkzZDEuLjBjYTExN2UyZWQ0IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2xpbnV4LmgKLUBAIC0xOTUsNiArMTk1LDEzIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQotICAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDEsIDAsIDAgfSwJCVwKLSAgICAgeyAwLCAwLCAwLCAwLCAwLCAwIH0JCQkJXAotICAgfQotKyNpZmRlZiBUQVJHRVRfTElCQ19QUk9WSURFU19TU1AKLSsjdW5kZWYgTElOS19TU1BfU1BFQwotKyNkZWZpbmUgTElOS19TU1BfU1BFQyAiJXtmc3RhY2stcHJvdGVjdG9yfGZzdGFjay1wcm90ZWN0b3ItYWxsIiBcCi0rCQkgICAgICAgInxmc3RhY2stcHJvdGVjdG9yLXN0cm9uZ3xmc3RhY2stcHJvdGVjdG9yLWV4cGxpY2l0IiBcCi0rCQkgICAgICAgIjotbHNzcF9ub25zaGFyZWR9IgotKyNlbmRpZgotKwotICNlbmRpZgotIAotICNpZiAoREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDKSAmJiBkZWZpbmVkIChTSU5HTEVfTElCQykgLyogdUNsaW51eCAqLwotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCi1pbmRleCBmZmNlYjMyYmY2NS4uYzgyY2IyYWQwNWIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCi1AQCAtOTQsNiArOTQsMTYgQEAKLSAJCQkJCSAiIC1tIGVsZjMycHBjbGludXgiKQotICNlbmRpZgotIAotKy8qIGxpbmsgbGlic3NwX25vbnNoYXJlZC5hIHdpdGggbXVzbCAqLwotKyNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCi0rI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAotKyN1bmRlZiBMSU5LX1NTUF9TUEVDCi0rI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKLSsJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKLSsJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCi0rI2VuZGlmCi0rI2VuZGlmCi0rCi0gI3VuZGVmIExJTktfT1NfTElOVVhfU1BFQwotICNkZWZpbmUgTElOS19PU19MSU5VWF9TUEVDIExJTktfT1NfTElOVVhfRU1VTCAiICV7IXNoYXJlZDogJXshc3RhdGljOiBcCi0gICAleyFzdGF0aWMtcGllOiBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi1pbmRleCA0NWE5YTdjYWU1OS4uZDFlODhhNDBlODIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotQEAgLTQ1Niw2ICs0NTYsMTYgQEAgZXh0ZXJuIGludCBkb3Rfc3ltYm9sczsKLSAJCQkJCSAgICIgLW0gZWxmNjRwcGMiKQotICNlbmRpZgotIAotKy8qIGxpbmsgbGlic3NwX25vbnNoYXJlZC5hIHdpdGggbXVzbCAqLwotKyNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCi0rI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAotKyN1bmRlZiBMSU5LX1NTUF9TUEVDCi0rI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKLSsJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKLSsJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCi0rI2VuZGlmCi0rI2VuZGlmCi0rCi0gI2RlZmluZSBMSU5LX09TX0xJTlVYX1NQRUMzMiBMSU5LX09TX0xJTlVYX0VNVUwzMiAiICV7IXNoYXJlZDogJXshc3RhdGljOiBcCi0gICAleyFzdGF0aWMtcGllOiBcCi0gICAgICV7cmR5bmFtaWM6LWV4cG9ydC1keW5hbWljfSBcCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDMwLWxpYmdjYy1BZGQta25vYi10by11c2UtbGRibC0xMjgtb24tcHBjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMC1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhlYWI1YS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDMwLWxpYmdjYy1BZGQta25vYi10by11c2UtbGRibC0xMjgtb24tcHBjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotRnJvbSA0NzQ2N2YzYWIwZmIyZjJmY2VkZTgxMDYwZmU4YmIzMzlkMDkwOWViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3phYm9sY3MgTmFneSA8bnN6QHBvcnQ3MC5uZXQ+Ci1EYXRlOiBXZWQsIDI4IEZlYiAyMDE4IDAwOjU0OjA1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMTJdIGxkYmwxMjggY29uZmlnCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZ3VyZSAgICB8IDEzICsrKysrKysrKysrKysKLSBnY2MvY29uZmlndXJlLmFjIHwgMTYgKysrKysrKysrKysrKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCA2MTIxZTE2MzI1OS4uMDdmZjg1OTdkNDggMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMjkzMDksNiArMjkzMDksMTUgQEAgaWYgdGVzdCAiJHt3aXRoX2xvbmdfZG91YmxlXzEyOCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0gICB3aXRodmFsPSR3aXRoX2xvbmdfZG91YmxlXzEyODsgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PSIkd2l0aF9sb25nX2RvdWJsZV8xMjgiCi0gZWxzZQotIAotKyAgICAgIGNhc2UgIiR0YXJnZXQiIGluCi0rCXMzOTAqLSotbGludXgtbXVzbCopCi0rCSAgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PXllcwotKwkgIDs7Ci0rCXBvd2VycGMqLSotbGludXgtbXVzbCopCi0rCSAgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PW5vCi0rCSAgOzsKLSsJKikKLSsKLSBpZiB0ZXN0ICRnbGliY192ZXJzaW9uX21ham9yIC1ndCAyIFwKLSAgIHx8ICggdGVzdCAkZ2xpYmNfdmVyc2lvbl9tYWpvciAtZXEgMiAmJiB0ZXN0ICRnbGliY192ZXJzaW9uX21pbm9yIC1nZSA0ICk7IHRoZW4gOgotICAgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PXllcwotQEAgLTI5MzIwLDYgKzI5MzI5LDEwIEBAIGVsc2UKLSAgICAgICAmJiBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9eWVzCi0gCi0gZmkKLSsKLSsJICA7OwotKyAgICAgIGVzYWMKLSsKLSBmaQotIAotICAgICA7OwotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCBiMDY2Y2M2MDllMS4uNmMxNWVkODk4YzAgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtNTk3MSwxMyArNTk3MSwyNSBAQCBjYXNlICIkdGFyZ2V0IiBpbgotICAgICBBQ19BUkdfV0lUSChsb25nLWRvdWJsZS0xMjgsCi0gICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtbG9uZy1kb3VibGUtMTI4XSwKLSAJCSAgICAgIFt1c2UgMTI4LWJpdCBsb25nIGRvdWJsZSBieSBkZWZhdWx0XSldLAotLSAgICAgIGdjY19jdl90YXJnZXRfbGRibDEyOD0iJHdpdGhfbG9uZ19kb3VibGVfMTI4IiwKLSsgICAgICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9IiR3aXRoX2xvbmdfZG91YmxlXzEyOCIsIFsKLSsgICAgICBjYXNlICIkdGFyZ2V0IiBpbgotKwlzMzkwKi0qLWxpbnV4LW11c2wqKQotKwkgIGdjY19jdl90YXJnZXRfbGRibDEyOD15ZXMKLSsJICA7OwotKwlwb3dlcnBjKi0qLWxpbnV4LW11c2wqKQotKwkgIGdjY19jdl90YXJnZXRfbGRibDEyOD1ubwotKwkgIDs7Ci0rCSopXQotICAgICAgIFtHQ0NfR0xJQkNfVkVSU0lPTl9HVEVfSUZFTFNFKFsyXSwgWzRdLCBbZ2NjX2N2X3RhcmdldF9sZGJsMTI4PXllc10sIFsKLSAgICAgICBbZ2NjX2N2X3RhcmdldF9sZGJsMTI4PW5vCi0gICAgICAgZ3JlcCAnXlsgCV0qI1sgCV0qZGVmaW5lWyAJXVsgCV0qX19MT05HX0RPVUJMRV9NQVRIX09QVElPTkFMJyBcCi0gICAgICAgICAkdGFyZ2V0X2hlYWRlcl9kaXIvYml0cy93b3Jkc2l6ZS5oID4gL2Rldi9udWxsIDI+JjEgXAotICAgICAgICYmIGdjY19jdl90YXJnZXRfbGRibDEyOD15ZXMKLS0gICAgICBdXSldKQotKyAgICAgIF1dKV0KLSsgICAgICBbCi0rCSAgOzsKLSsgICAgICBlc2FjCi0rICAgICAgXSkKLSAgICAgOzsKLSBlc2FjCi0gaWYgdGVzdCB4JGdjY19jdl90YXJnZXRfbGRibDEyOCA9IHh5ZXM7IHRoZW4KLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzEtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMS1MaW5rLWxpYmdjYy11c2luZy1MREZMQUdTLW5vdC1qdXN0LVNITElCX0xERkxBR1MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjMjE0MWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMS1MaW5rLWxpYmdjYy11c2luZy1MREZMQUdTLW5vdC1qdXN0LVNITElCX0xERkxBR1MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDI2NmRjYzc4ZTRkOWQzOGRlMjgwOTExODk3N2Q5N2RjOTI3MGNmMWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA0IE1heSAyMDE2IDIxOjExOjM0IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMzEvMzZdIExpbmsgbGliZ2NjIHVzaW5nIExERkxBR1MsIG5vdCBqdXN0IFNITElCX0xERkxBR1MKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYyBiL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCi1pbmRleCAwOTliZjIzZTYyZi4uNDM2YjI3N2E3OWYgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYwotKysrIGIvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MKLUBAIC0zMiw3ICszMiw3IEBAIFNITElCX0lOU1RBTExfU09MSU5LID0gJChMTl9TKSAkKFNITElCX1NPTkFNRSkgXAotIAkkKERFU1RESVIpJChzbGliZGlyKSQoU0hMSUJfU0xJQkRJUl9RVUFMKS8kKFNITElCX1NPTElOSykKLSAKLSBTSExJQl9MSU5LID0gJChDQykgJChMSUJHQ0MyX0NGTEFHUykgLXNoYXJlZCAtbm9kZWZhdWx0bGlicyBcCi0tCSQoU0hMSUJfTERGTEFHUykgXAotKwkkKExERkxBR1MpICQoU0hMSUJfTERGTEFHUykgXAotIAktbyAkKFNITElCX0RJUikvJChTSExJQl9TT05BTUUpLnRtcCBAbXVsdGlsaWJfZmxhZ3NAIFwKLSAJJChTSExJQl9PQkpTKSAkKFNITElCX0xDKSAmJiBcCi0gCXJtIC1mICQoU0hMSUJfRElSKS8kKFNITElCX1NPTElOSykgJiYgXAotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMi1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMi1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGRlMDE2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzItbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLUZyb20gOTk3NWI2ZWQzNTcwYmJmN2M3ZDJkODJmNGQ1ZjczM2QyNGNjYWNmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN6YWJvbGNzIE5hZ3kgPG5zekBwb3J0NzAubmV0PgotRGF0ZTogU2F0LCAyNCBPY3QgMjAxNSAyMDowOTo1MyArMDAwMAotU3ViamVjdDogW1BBVENIIDMyLzM2XSBsaWJnY2NfczogVXNlIGFsaWFzIGZvciBfX2NwdV9pbmRpY2F0b3JfaW5pdCBpbnN0ZWFkIG9mCi0gc3ltdmVyCi0KLUFkYXB0ZXIgZnJvbQotCi1odHRwczovL2djYy5nbnUub3JnL21sL2djYy1wYXRjaGVzLzIwMTUtMDUvbXNnMDA4OTkuaHRtbAotCi1UaGlzIGZpeCB3YXMgZGViYXRlZCBidXQgaGFzbnQgYmVlbiBhcHBsaWVkIGdjYyB1cHN0cmVhbSBzaW5jZQotdGhleSBleHBlY3QgbXVzbCB0byBzdXBwb3J0ICdAJyBpbiBzeW1ib2wgdmVyc2lvbmluZyB3aGljaCBpcwotYSBzdW4vZ251IHZlcnNpb25pbmcgZXh0ZW50aW9uLiBUaGlzIHBhdGNoIGhvd2V2ZXIgYXZvaWRzIHRoZQotbmVlZCBmb3IgdGhlICdAJyBzeW1ib2xzIGF0IGFsbAotCi1saWJnY2MvQ2hhbmdlbG9nOgotCi0yMDE1LTA1LTExICBTemFib2xjcyBOYWd5ICA8c3phYm9sY3MubmFneUBhcm0uY29tPgotCi0JKiBjb25maWcvaTM4Ni9jcHVpbmZvLmMgKF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsKTogQWRkLgotCShfX2NwdV9pbmRpY2F0b3JfaW5pdEBHQ0NfNC44LjAsIF9fY3B1X21vZGVsQEdDQ180LjguMCk6IFJlbW92ZS4KLQotCSogY29uZmlnL2kzODYvdC1saW51eCAoSE9TVF9MSUJHQ0MyX0NGTEFHUyk6IFJlbW92ZSAtRFVTRV9FTEZfU1lNVkVSLgotCi1nY2MvQ2hhbmdlbG9nOgotCi0yMDE1LTA1LTExICBTemFib2xjcyBOYWd5ICA8c3phYm9sY3MubmFneUBhcm0uY29tPgotCi0JKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX2J1aWx0aW4pOiBNYWtlIF9fYnVpbHRpbl9jcHVfaW5pdAotCWNhbGwgX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwgaW5zdGVhZCBvZiBfX2NwdV9pbmRpY2F0b3JfaW5pdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL2kzODYvaTM4Ni5jICAgICAgIHwgNCArKy0tCi0gbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYyB8IDYgKysrLS0tCi0gbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXggICB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1pbmRleCAyYjM3Mjk2ZTUzNy4uZGQzODBkZGJhODggMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi0rKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCi1AQCAtMzY2NTgsMTAgKzM2NjU4LDEwIEBAIGl4ODZfZXhwYW5kX2J1aWx0aW4gKHRyZWUgZXhwLCBydHggdGFyZ2V0LCBydHggc3VidGFyZ2V0LAotICAgICB7Ci0gICAgIGNhc2UgSVg4Nl9CVUlMVElOX0NQVV9JTklUOgotICAgICAgIHsKLS0JLyogTWFrZSBpdCBjYWxsIF9fY3B1X2luZGljYXRvcl9pbml0IGluIGxpYmdjYy4gKi8KLSsJLyogTWFrZSBpdCBjYWxsIF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsIGluIGxpYmdjYy5hLiAqLwotIAl0cmVlIGNhbGxfZXhwciwgZm5kZWNsLCB0eXBlOwotICAgICAgICAgdHlwZSA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoaW50ZWdlcl90eXBlX25vZGUsIE5VTExfVFJFRSk7IAotLQlmbmRlY2wgPSBidWlsZF9mbl9kZWNsICgiX19jcHVfaW5kaWNhdG9yX2luaXQiLCB0eXBlKTsKLSsJZm5kZWNsID0gYnVpbGRfZm5fZGVjbCAoIl9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsIiwgdHlwZSk7Ci0gCWNhbGxfZXhwciA9IGJ1aWxkX2NhbGxfZXhwciAoZm5kZWNsLCAwKTsgCi0gCXJldHVybiBleHBhbmRfZXhwciAoY2FsbF9leHByLCB0YXJnZXQsIG1vZGUsIEVYUEFORF9OT1JNQUwpOwotICAgICAgIH0KLWRpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jIGIvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYwotaW5kZXggZDZjYjJkZTYyNjUuLmNlMDRlZjc4MjA1IDEwMDY0NAotLS0tIGEvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYwotKysrIGIvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYwotQEAgLTUwNCw3ICs1MDQsNyBAQCBfX2NwdV9pbmRpY2F0b3JfaW5pdCAodm9pZCkKLSAgIHJldHVybiAwOwotIH0KLSAKLS0jaWYgZGVmaW5lZCBTSEFSRUQgJiYgZGVmaW5lZCBVU0VfRUxGX1NZTVZFUgotLV9fYXNtX18gKCIuc3ltdmVyIF9fY3B1X2luZGljYXRvcl9pbml0LCBfX2NwdV9pbmRpY2F0b3JfaW5pdEBHQ0NfNC44LjAiKTsKLS1fX2FzbV9fICgiLnN5bXZlciBfX2NwdV9tb2RlbCwgX19jcHVfbW9kZWxAR0NDXzQuOC4wIik7Ci0rI2lmbmRlZiBTSEFSRUQKLStpbnQgX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwgKHZvaWQpCi0rICBfX2F0dHJpYnV0ZV9fICgod2VhaywgYWxpYXMgKCJfX2NwdV9pbmRpY2F0b3JfaW5pdCIpKSk7Ci0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXggYi9saWJnY2MvY29uZmlnL2kzODYvdC1saW51eAotaW5kZXggODUwNmE2MzU3OTAuLjU2NDI5NmY3ODhlIDEwMDY0NAotLS0tIGEvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXgKLSsrKyBiL2xpYmdjYy9jb25maWcvaTM4Ni90LWxpbnV4Ci1AQCAtMyw1ICszLDUgQEAKLSAjIHQtc2xpYmdjYy1lbGYtdmVyIGFuZCB0LWxpbnV4Ci0gU0hMSUJfTUFQRklMRVMgPSBsaWJnY2Mtc3RkLnZlciAkKHNyY2RpcikvY29uZmlnL2kzODYvbGliZ2NjLWdsaWJjLnZlcgotIAotLUhPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS04MCAtRFVTRV9FTEZfU1lNVkVSICQoQ0VUX0ZMQUdTKQotK0hPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS04MCAkKENFVF9GTEFHUykKLSBDUlRTVFVGRl9UX0NGTEFHUyArPSAkKENFVF9GTEFHUykKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzMtc3luYy1nY2Mtc3RkZGVmLmgtd2l0aC1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMy1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5OWFjNDIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMy1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi1Gcm9tIDM5ZTJmNjFkMjYyZjlmNmM3YTkxMDY4OTk4ZGVhODA3OTFlZjY2NWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAzIEZlYiAyMDE3IDEyOjU2OjAwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMzMvMzZdIHN5bmMgZ2NjIHN0ZGRlZi5oIHdpdGggbXVzbAotCi1tdXNsIGRlZmluZXMgcHRyZGlmZl90IHNpemVfdCBhbmQgd2NoYXJfdAotc28gZG9udCBkZWZpbmUgdGhlbSBoZXJlIGlmIG11c2wgaXMgZGVmaW5pbmluZyB0aGVtCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oIHwgOSArKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvZ2luY2x1ZGUvc3RkZGVmLmggYi9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgKLWluZGV4IGRhNjkyZTFjMDFhLi45YTAwYzI2MWFkYiAxMDA2NDQKLS0tLSBhL2djYy9naW5jbHVkZS9zdGRkZWYuaAotKysrIGIvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCi1AQCAtMTI4LDYgKzEyOCw3IEBAIF9UWVBFX3djaGFyX3Q7Ci0gI2lmbmRlZiBfX19pbnRfcHRyZGlmZl90X2gKLSAjaWZuZGVmIF9HQ0NfUFRSRElGRl9UCi0gI2lmbmRlZiBfUFRSRElGRl9UX0RFQ0xBUkVEIC8qIERyYWdvbkZseSAqLwotKyNpZm5kZWYgX19ERUZJTkVEX3B0cmRpZmZfdCAvKiBtdXNsICovCi0gI2RlZmluZSBfUFRSRElGRl9UCi0gI2RlZmluZSBfVF9QVFJESUZGXwotICNkZWZpbmUgX1RfUFRSRElGRgotQEAgLTEzNywxMCArMTM4LDEyIEBAIF9UWVBFX3djaGFyX3Q7Ci0gI2RlZmluZSBfX19pbnRfcHRyZGlmZl90X2gKLSAjZGVmaW5lIF9HQ0NfUFRSRElGRl9UCi0gI2RlZmluZSBfUFRSRElGRl9UX0RFQ0xBUkVECi0rI2RlZmluZSBfX0RFRklORURfcHRyZGlmZl90IC8qIG11c2wgKi8KLSAjaWZuZGVmIF9fUFRSRElGRl9UWVBFX18KLSAjZGVmaW5lIF9fUFRSRElGRl9UWVBFX18gbG9uZyBpbnQKLSAjZW5kaWYKLSB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OwotKyNlbmRpZiAvKiBfX0RFRklORURfcHRyZGlmZl90ICovCi0gI2VuZGlmIC8qIF9QVFJESUZGX1RfREVDTEFSRUQgKi8KLSAjZW5kaWYgLyogX0dDQ19QVFJESUZGX1QgKi8KLSAjZW5kaWYgLyogX19faW50X3B0cmRpZmZfdF9oICovCi1AQCAtMTc4LDYgKzE4MSw3IEBAIHR5cGVkZWYgX19QVFJESUZGX1RZUEVfXyBwdHJkaWZmX3Q7Ci0gI2lmbmRlZiBfR0NDX1NJWkVfVAotICNpZm5kZWYgX1NJWkVUXwotICNpZm5kZWYgX19zaXplX3QKLSsjaWZuZGVmIF9fREVGSU5FRF9zaXplX3QgLyogbXVzbCAqLwotICNkZWZpbmUgX19zaXplX3RfXwkvKiBCZU9TICovCi0gI2RlZmluZSBfX1NJWkVfVF9fCS8qIENyYXkgVW5pY29zL01rICovCi0gI2RlZmluZSBfU0laRV9UCi1AQCAtMTk0LDYgKzE5OCw3IEBAIHR5cGVkZWYgX19QVFJESUZGX1RZUEVfXyBwdHJkaWZmX3Q7Ci0gI2RlZmluZSBfX19pbnRfc2l6ZV90X2gKLSAjZGVmaW5lIF9HQ0NfU0laRV9UCi0gI2RlZmluZSBfU0laRVRfCi0rI2RlZmluZSBfX0RFRklORURfc2l6ZV90IC8qIG11c2wgKi8KLSAjaWYgZGVmaW5lZCAoX19GcmVlQlNEX18pIFwKLSAgIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgXAotICAgfHwgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pIFwKLUBAIC0yMjgsNiArMjMzLDcgQEAgdHlwZWRlZiBsb25nIHNzaXplX3Q7Ci0gI2VuZGlmIC8qIF9TSVpFX1QgKi8KLSAjZW5kaWYgLyogX19TSVpFX1RfXyAqLwotICNlbmRpZiAvKiBfX3NpemVfdF9fICovCi0rI2VuZGlmIC8qIF9fREVGSU5FRF9zaXplX3QgKi8KLSAjdW5kZWYJX19uZWVkX3NpemVfdAotICNlbmRpZiAvKiBfU1REREVGX0ggb3IgX19uZWVkX3NpemVfdC4gICovCi0gCi1AQCAtMjU3LDYgKzI2Myw3IEBAIHR5cGVkZWYgbG9uZyBzc2l6ZV90OwotICNpZm5kZWYgX19faW50X3djaGFyX3RfaAotICNpZm5kZWYgX19JTlRfV0NIQVJfVF9ICi0gI2lmbmRlZiBfR0NDX1dDSEFSX1QKLSsjaWZuZGVmIF9fREVGSU5FRF93Y2hhcl90IC8qIG11c2wgKi8KLSAjZGVmaW5lIF9fd2NoYXJfdF9fCS8qIEJlT1MgKi8KLSAjZGVmaW5lIF9fV0NIQVJfVF9fCS8qIENyYXkgVW5pY29zL01rICovCi0gI2RlZmluZSBfV0NIQVJfVAotQEAgLTI3Miw2ICsyNzksNyBAQCB0eXBlZGVmIGxvbmcgc3NpemVfdDsKLSAjZGVmaW5lIF9fSU5UX1dDSEFSX1RfSAotICNkZWZpbmUgX0dDQ19XQ0hBUl9UCi0gI2RlZmluZSBfV0NIQVJfVF9ERUNMQVJFRAotKyNkZWZpbmUgX19ERUZJTkVEX3djaGFyX3QgLyogbXVzbCAqLwotIAotIC8qIE9uIEJTRC8zODYgMS4xLCBhdCBsZWFzdCwgbWFjaGluZS9hbnNpLmggZGVmaW5lcyBfQlNEX1dDSEFSX1RfCi0gICAgaW5zdGVhZCBvZiBfV0NIQVJfVF8sIGFuZCBfQlNEX1JVTkVfVF8gKHdoaWNoLCB1bmxpa2UgdGhlIG90aGVyCi1AQCAtMzM3LDYgKzM0NSw3IEBAIHR5cGVkZWYgX19XQ0hBUl9UWVBFX18gd2NoYXJfdDsKLSAjZW5kaWYKLSAjZW5kaWYgLyogX19XQ0hBUl9UX18gKi8KLSAjZW5kaWYgLyogX193Y2hhcl90X18gKi8KLSsjZW5kaWYgLyogX19ERUZJTkVEX3djaGFyX3QgbXVzbCAqLwotICN1bmRlZglfX25lZWRfd2NoYXJfdAotICNlbmRpZiAvKiBfU1REREVGX0ggb3IgX19uZWVkX3djaGFyX3QuICAqLwotIAotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzNC1maXgtc2VnbWVudGF0aW9uLWZhdWx0LWluLXByZWNvbXBpbGVkLWhlYWRlci1nZW5lcmF0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzNC1maXgtc2VnbWVudGF0aW9uLWZhdWx0LWluLXByZWNvbXBpbGVkLWhlYWRlci1nZW5lcmF0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNmEzYzlmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzQtZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1pbi1wcmVjb21waWxlZC1oZWFkZXItZ2VuZXJhdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLUZyb20gYWFhODk2YTU3YjAwMDRhNzRjMWQ0NzRlNzRiMjFmNDExNDdhNjVjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDE5IE1hciAyMDE4IDIyOjMxOjIwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMzQvMzZdIGZpeCBzZWdtZW50YXRpb24gZmF1bHQgaW4gcHJlY29tcGlsZWQgaGVhZGVyIGdlbmVyYXRpb24KLQotUHJldmVudCBhIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGljaCBvY2N1cnMgd2hlbiB1c2luZyBpbmNvcnJlY3QKLXN0cnVjdHVyZSB0cnlpbmcgdG8gYWNjZXNzIG5hbWUgb2Ygc29tZSBuYW1lZCBvcGVyYXRvcnMsIHN1Y2ggYXMKLUNQUF9OT1QsIENQUF9BTkQgZXRjLiAidG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nIiBjYW5ub3QgYmUgdXNlZCBpbgotdGhvc2UgY2FzZXMsIGFzIGlzIG1heSBub3QgYmUgaW5pdGlhbGl6ZWQgYXQgYWxsLgotCi1bWU9DVE8gIzExNzM4XQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsaWJjcHAvbGV4LmMgfCAyNiArKysrKysrKysrKysrKysrKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliY3BwL2xleC5jIGIvbGliY3BwL2xleC5jCi1pbmRleCBlZWRmY2JiMzE0Ni4uMTUwNDBhMWIxZjAgMTAwNjQ0Ci0tLS0gYS9saWJjcHAvbGV4LmMKLSsrKyBiL2xpYmNwcC9sZXguYwotQEAgLTMyODAsMTEgKzMyODAsMjcgQEAgY3BwX3NwZWxsX3Rva2VuIChjcHBfcmVhZGVyICpwZmlsZSwgY29uc3QgY3BwX3Rva2VuICp0b2tlbiwKLSAgICAgc3BlbGxfaWRlbnQ6Ci0gICAgIGNhc2UgU1BFTExfSURFTlQ6Ci0gICAgICAgaWYgKGZvcnN0cmluZykKLS0JewotLQkgIG1lbWNweSAoYnVmZmVyLCBOT0RFX05BTUUgKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyksCi0tCQkgIE5PREVfTEVOICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpKTsKLS0JICBidWZmZXIgKz0gTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyk7Ci0tCX0KLSsgICAgICAgIHsKLSsgICAgICAgICAgaWYgKHRva2VuLT50eXBlID09IENQUF9OQU1FKQotKyAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgIG1lbWNweSAoYnVmZmVyLCBOT0RFX05BTUUgKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyksCi0rICAgICAgICAgICAgICAgICAgICBOT0RFX0xFTiAodG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nKSk7Ci0rICAgICAgICAgICAgICBidWZmZXIgKz0gTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyk7Ci0rICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgIC8qIE5BTUVEX09QLCBjYW5ub3QgdXNlIG5vZGUuc3BlbGxpbmcgKi8KLSsgICAgICAgICAgaWYgKHRva2VuLT5mbGFncyAmIE5BTUVEX09QKQotKyAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0ciA9IGNwcF9uYW1lZF9vcGVyYXRvcjJuYW1lICh0b2tlbi0+dHlwZSk7Ci0rICAgICAgICAgICAgICBpZiAoc3RyKQotKyAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihzdHIpOwotKyAgICAgICAgICAgICAgICAgIG1lbWNweShidWZmZXIsIHN0ciwgbGVuKTsKLSsgICAgICAgICAgICAgICAgICBidWZmZXIgKz0gbGVuOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0gICAgICAgZWxzZQotIAlidWZmZXIgPSBfY3BwX3NwZWxsX2lkZW50X3VjbnMgKGJ1ZmZlciwgdG9rZW4tPnZhbC5ub2RlLm5vZGUpOwotICAgICAgIGJyZWFrOwotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzNS1GaXgtZm9yLXRlc3RzdWl0ZS1mYWlsdXJlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzNS1GaXgtZm9yLXRlc3RzdWl0ZS1mYWlsdXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDcwY2JmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzUtRml4LWZvci10ZXN0c3VpdGUtZmFpbHVyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1OCArMCwwIEBACi1Gcm9tIDBmOWQ0NDljNzM5ZGYwMzc4MmNlOWQyOWY2YjY4ZDlhZjk3NmE2MDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSQUdIVU5BVEggTE9MVVIgPHJhZ2h1bmF0aC5sb2x1ckBrcGl0LmNvbT4KLURhdGU6IFdlZCwgNiBEZWMgMjAxNyAyMjo1MjoyNiAtMDgwMAotU3ViamVjdDogW1BBVENIIDM1LzM2XSBGaXggZm9yIHRlc3RzdWl0ZSBmYWlsdXJlCi0KLTIwMTctMTEtMTYgIFJhZ2h1bmF0aCBMb2x1ciAgPHJhZ2h1bmF0aC5sb2x1ckBrcGl0LmNvbT4KLQotCSogZ2NjLmRnL3ByNTYyNzUuYzogSWYgU1NFIGlzIGRpc2FibGVkLCBlbnN1cmUgdGhhdAotCSItbWZwbWF0aCIgaXMgbm90IHNldCB0byB1c2UgU1NFLiBTZXQgIi1tZnBtYXRoPTM4NyIuCi0JKiBnY2MuZGcvcHI2ODMwNi5jOiBMaWtld2lzZQotCSogZ2NjLmRnL3ByNjgzMDYtMi5jOiBMaWtld2lzZQotCSogZ2NjLmRnL3ByNjgzMDYtMy5jOiBMaWtld2lzZQotCSogZ2NjLmRnL3ByNjk2MzQuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmM6IExpa2V3aXNlCi0JKiBnY2MudGFyZ2V0L2kzODYvaXNhLTE0LmM6IExpa2V3aXNlCi0JKiBnY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmM6IExpa2V3aXNlCi0JKiBnY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmM6IExpa2V3aXNlCi0KLUlmIC1XYWxsLCAtV2Vycm9yIGFyZSB1c2VkIGR1cmluZyBjb21waWxhdGlvbiB2YXJpb3VzIHRlc3QgY2FzZXMgZmFpbAotdG8gY29tcGlsZS4KLQotSWYgU1NFIGlzIGRpc2FibGVkLCBiZSBzdXJlIHRvIC1tZnBtYXRoPTM4NyB0byByZXNvbHZlIHRoaXMuCi0KLVRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgY2hhbmdlcyB0byBDaGFuZ2Vsb2cgZnJvbSB0aGUgb3JpZ2luYWwgcGF0Y2guCi1UaGlzIHdpbGwgaGVscCB1cyBhdm9pZCBjb25mbGljdHMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0yLmMgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMy5jICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LmMgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0xLmMgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmMgICAgICAgICAgfCAxICsKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmMgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaXNhLTE0LmMgICAgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYyAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYyAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYyAgICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMgICAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jICAgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jICAgICAgfCAyICstCi0gMTcgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMKLWluZGV4IGI5MDFiYjJiMTk5Li5hNGY2Yzk1ZTFhMSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTYyNzUuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1NjI3NS5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotIC8qIHsgZGctb3B0aW9ucyAiLU8yIiB9ICovCi0tLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIiB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gKi8KLSsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gKi8KLSAKLSB0eXBlZGVmIGxvbmcgbG9uZyB2MnR3IF9fYXR0cmlidXRlX18gKCh2ZWN0b3Jfc2l6ZSAoMiAqIHNpemVvZiAobG9uZyBsb25nKSkpKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMi5jCi1pbmRleCA0NjcyZWJlNzk4Ny4uMmEzNjhjNDg0YjYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0yLmMKLUBAIC0xLDYgKzEsNiBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0gLyogeyBkZy1vcHRpb25zICItTzMiIH0gKi8KLS0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXgiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCi0rLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KLSAKLSBzdHJ1Y3QgewotICAgICBpbnQgdHpfbWludXRlc3dlc3Q7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTMuYwotaW5kZXggZjVhOGMxMDJjZjguLmRmMzM5MGM2NGMyIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0zLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMy5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotIC8qIHsgZGctb3B0aW9ucyAiLU8zIiB9ICovCi0tLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLwotKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbW5vLW1teCAtbWZwbWF0aD0zODciIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCi0gLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tYWx0aXZlYyAtbW5vLXZzeCIgeyB0YXJnZXQgcG93ZXJwYyotKi0qIH0gfSAqLwotIAotIGV4dGVybiB2b2lkIGZuMigpOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYuYwotaW5kZXggNTRlNWI0MGYyMjEuLjA4MTMzODllMmMxIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LmMKLUBAIC0xLDYgKzEsNiBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0gLyogeyBkZy1vcHRpb25zICItTzMiIH0gKi8KLS0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXgiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCi0rLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KLSAKLSBlbnVtIHBvd2VycGNfcG1jX3R5cGUgeyBQUENfUE1DX0lCTSB9OwotIHN0cnVjdCB7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jCi1pbmRleCA2MGE1NjE0OTQ2My4uYmNjMjNmOWNjZDYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY5NjM0LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjk2MzQuYwotQEAgLTEsNiArMSw2IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSAvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLWRjZSAtZnNjaGVkdWxlLWluc25zIC1mbm8tdHJlZS12cnAgLWZjb21wYXJlLWRlYnVnIC1Xbm8tcHNhYmkiIH0gKi8KLS0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCi0rLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KLSAvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBzY2hlZHVsaW5nIH0gKi8KLSAKLSB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHUxNjsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYwotaW5kZXggNjlmZGU1N2JmMDYuLjdmMWYxYzAzZWRmIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCi0gLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tYWJpPXN5c3YiIHsgdGFyZ2V0ICotKi1taW5ndyogfSB9ICovCi0gCi0gZG91YmxlIGZvbyh2b2lkKSB7IHJldHVybiAwOyB9CS8qIHsgZGctZXJyb3IgIlNTRSBkaXNhYmxlZCIgfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYwotaW5kZXggZWE4OTZiN2ViZmQuLmJmMTU1NjliODI2IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZnVuY3NwZWMtNi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmMKLUBAIC0xLDYgKzEsNyBAQAotIC8qIFRlc3Qgd2hldGhlciBhbGwgb2YgdGhlIDY0LWJpdCBmdW5jdGlvbiBzcGVjaWZpYyBvcHRpb25zIGFyZSBhY2NlcHRlZAotICAgIHdpdGhvdXQgZXJyb3IuICAqLwotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLwotKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbWZwbWF0aD0zODciIH0gKi8KLSAKLSAjaW5jbHVkZSAiZnVuY3NwZWMtNTYuaW5jIgotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYwotaW5kZXggODU2MWEzYzI2ZDYuLjYzNzdmODE0NjQ1IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTM4Ny1lcnItMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1nZW5lcmFsLXJlZ3Mtb25seSAtbW5vLWNsZCAtbW5vLWlhbWN1IC1tODAzODciIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWdlbmVyYWwtcmVncy1vbmx5IC1tbm8tY2xkIC1tbm8taWFtY3UgLW04MDM4NyAtbWZwbWF0aD0zODciIH0gKi8KLSAKLSB0eXBlZGVmIHVuc2lnbmVkIGludCB1d29yZF90IF9fYXR0cmlidXRlX18gKChtb2RlIChfX3dvcmRfXykpKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pc2EtMTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2lzYS0xNC5jCi1pbmRleCA1ZDQ5ZTZlNzdmZS4uMWRlMmRiOTJiZGQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pc2EtMTQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaXNhLTE0LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gcnVuIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD14ODYtNjQgLW1zc2U0YSAtbWZtYTQgLW1uby1zc2UiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD14ODYtNjQgLW1zc2U0YSAtbWZtYTQgLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYwotaW5kZXggZmExNzY5YjYyZmIuLmY3OWZiMTI3MjZmIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjQ0OTQ4LTJiLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTyAtbW5vLXNzZSAtV25vLXBzYWJpIC1tdHVuZT1nZW5lcmljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTyAtbW5vLXNzZSAtV25vLXBzYWJpIC1tdHVuZT1nZW5lcmljIC1tZnBtYXRoPTM4NyIgfSAqLwotIAotIHN0cnVjdCBBCi0geyAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jCi1pbmRleCAyZTg5ZmY3ZDgxZC4uNjMzOWJmNmI3MzYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0xLmMKLUBAIC0xLDYgKzEsNiBAQAotIC8qIFBSIHRhcmdldC81MzQyNSAqLwotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCi0gLyogeyBkZy1za2lwLWlmICJubyBTU0UgdmVjdG9yIiB7IHg4Nl82NC0qLW1pbmd3KiB9IH0gKi8KLSAKLSB0eXBlZGVmIGRvdWJsZSBfX3YyZGYgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMTYpKSk7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTIuYwotaW5kZXggNjFmNjI4M2RiZTkuLjJjNWE1NWYwYWMzIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiBQUiB0YXJnZXQvNTM0MjUgKi8KLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLwotIC8qIHsgZGctc2tpcC1pZiAibm8gU1NFIHZlY3RvciIgeyB4ODZfNjQtKi1taW5ndyogfSB9ICovCi0gCi0gdHlwZWRlZiBmbG9hdCBfX3Yyc2YgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoOCkpKTsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmMKLWluZGV4IDIzMzY2ZDA5MDlkLi45ODEwZTNhYmI3NiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1NTI0Ny5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KLSAvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBtYXliZV94MzIgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIC1tbm8tbW14IC1teDMyIC1tYWRkcmVzcy1tb2RlPWxvbmciIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSAtbW5vLW1teCAtbXgzMiAtbWFkZHJlc3MtbW9kZT1sb25nIC1tZnBtYXRoPTM4NyIgfSAqLwotIAotIHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMl90OwotIHR5cGVkZWYgdWludDMyX3QgRWxmMzJfV29yZDsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMKLWluZGV4IDk2MDA2YjNlMzM4Li40Mjg3ZTQ1MzhiZiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTk2NDQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1OTY0NC5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiBQUiB0YXJnZXQvNTk2NDQgKi8KLSAvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBscDY0IH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mZnJlZXN0YW5kaW5nIC1tbm8tc3NlIC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTMgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mZnJlZXN0YW5kaW5nIC1tbm8tc3NlIC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTMgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSAtbWZwbWF0aD0zODciIH0gKi8KLSAKLSAvKiBUaGlzIHRlc3QgdXNlcyBfX2J1aWx0aW5fdHJhcCAoKSBpbnN0ZWFkIG9mIGUuZy4gYWJvcnQsCi0gICAgYmVjYXVzZSBkdWUgdG8gLW1wcmVmZXJyZWQtc3RhY2stYm91bmRhcnk9MyBpdCBzaG91bGQgbm90IGNhbGwKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmMKLWluZGV4IGJmYjhjNDcwM2ViLi5lZDA0Y2YxODFmMyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNjIxMjAuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLwotIAotIHZvaWQgZm9vICgpCi0gewotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3MDQ2Ny0xLmMKLWluZGV4IDRlMTEyYzg4ZDA3Li5iY2ZiMzk2YTY4ZCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjcwNDY3LTEuYwotQEAgLTEsNiArMSw2IEBACi0gLyogUFIgcnRsLW9wdGltaXphdGlvbi83MDQ2NyAqLwotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSAtbWZwbWF0aD0zODciIH0gKi8KLSAKLSB2b2lkIGZvbyAodW5zaWduZWQgbG9uZyBsb25nICopOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jCi1pbmRleCA2Y2RhMTUzNDMxMS4uMjZlMzdmNWI4YmEgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gICovCi0tLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSAtV3ZlY3Rvci1vcGVyYXRpb24tcGVyZm9ybWFuY2UiIH0gICovCi0rLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSAtV3ZlY3Rvci1vcGVyYXRpb24tcGVyZm9ybWFuY2UgLW1mcG1hdGg9Mzg3IiB9ICAqLwotICNkZWZpbmUgdmVjdG9yKGVsY291bnQsIHR5cGUpICBcCi0gX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoKGVsY291bnQpKnNpemVvZih0eXBlKSkpKSB0eXBlCi0gCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDM2LVJlLWludHJvZHVjZS1zcGUtY29tbWFuZGxpbmUtb3B0aW9ucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzYtUmUtaW50cm9kdWNlLXNwZS1jb21tYW5kbGluZS1vcHRpb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGJjZDk4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzYtUmUtaW50cm9kdWNlLXNwZS1jb21tYW5kbGluZS1vcHRpb25zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSA3MWU5OWMyYjU4YTllYjAwY2RkNjVhMDRhZWI2ZmI3ODIyN2UzMjk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgNiBKdW4gMjAxOCAxMjoxMDoyMiAtMDcwMAotU3ViamVjdDogW1BBVENIIDM2LzM2XSBSZS1pbnRyb2R1Y2Ugc3BlIGNvbW1hbmRsaW5lIG9wdGlvbnMKLQotVGhpcyBzaG91bGQgZW5zdXJlIHRoYXQgd2Uga2VlcCBhY2NlcHRpbmcKLXNwZSBvcHRpb25zCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbU1BFIHBvcnQgaXMgcmVtb3ZlZCBmcm9tIHJzNjAwIHBvcnRdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0IHwgMTIgKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQgYi9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0Ci1pbmRleCBmNGI1YzkxZTExZi4uNjk4NjkzNTBmY2UgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0Ci0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0Ci1AQCAtMzQ1LDYgKzM0NSwxOCBAQCBtZGVidWc9Ci0gVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIEpvaW5lZAotIC1tZGVidWc9CUVuYWJsZSBkZWJ1ZyBvdXRwdXQuCi0gCi0rbXNwZQotK1RhcmdldCBWYXIocnM2MDAwX3NwZSkgU2F2ZQotK0dlbmVyYXRlIFNQRSBTSU1EIGluc3RydWN0aW9ucyBvbiBFNTAwLgotKwotK21hYmk9c3BlCi0rVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIFZhcihyczYwMDBfc3BlX2FiaSkgU2F2ZQotK1VzZSB0aGUgU1BFIEFCSSBleHRlbnNpb25zLgotKwotK21hYmk9bm8tc3BlCi0rVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIFZhcihyczYwMDBfc3BlX2FiaSwgMCkKLStEbyBub3QgdXNlIHRoZSBTUEUgQUJJIGV4dGVuc2lvbnMuCi0rCi0gbWFiaT1hbHRpdmVjCi0gVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIFZhcihyczYwMDBfYWx0aXZlY19hYmkpIFNhdmUKLSBVc2UgdGhlIEFsdGlWZWMgQUJJIGV4dGVuc2lvbnMuCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi9DVkUtMjAxOS0xNDI1MC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yL0NWRS0yMDE5LTE0MjUwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NWVhMzQ1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yL0NWRS0yMDE5LTE0MjUwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSA1MTdiMjExYTNkNzgzNjZjYThkNTkyOWY1ODBlOGNhNzJmZDJjMDA0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogcmd1ZW50aCA8cmd1ZW50aEAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBUaHUsIDI1IEp1bCAyMDE5IDEwOjQ2OjU0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIDIwMTktMDctMjUgIFJpY2hhcmQgQmllbmVyICA8cmd1ZW50aGVyQHN1c2UuZGU+Ci0KLQlQUiBsdG8vOTA5MjQKLQlCYWNrcG9ydCBmcm9tIG1haW5saW5lCi0JMjAxOS0wNy0xMiAgUmVuIEtpbXVyYSAgPHJreDEyMDlkZXZAZ21haWwuY29tPgotCi0JKiBzaW1wbGUtb2JqZWN0LWVsZi5jIChzaW1wbGVfb2JqZWN0X2VsZl9tYXRjaCk6IENoZWNrIHplcm8gdmFsdWUKLQlzaHN0cm5keC4KLQotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy9icmFuY2hlcy9nY2MtOS1icmFuY2hAMjczNzkzIDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1BZmZlY3RlczogPCAgOS4yCi1DVkU6IENWRS0yMDE5LTE0MjUwCi1Ecm9wcGVkIGNoYW5nZWxvZwotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxBa3VzdHJlQG12aXN0YS5jb20+Ci0KLS0tLQotIGxpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jIHwgOCArKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKQotCi1JbmRleDogZ2NjLTkuMi4wL2xpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTkuMi4wLm9yaWcvbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMKLSsrKyBnY2MtOS4yLjAvbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMKLUBAIC01NTcsNiArNTU3LDE0IEBAIHNpbXBsZV9vYmplY3RfZWxmX21hdGNoICh1bnNpZ25lZCBjaGFyIGgKLSAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotKyAgaWYgKGVvci0+c2hzdHJuZHggPT0gMCkKLSsgICAgewotKyAgICAgICplcnJtc2cgPSAiaW52YWxpZCBFTEYgc2hzdHJuZHggPT0gMCI7Ci0rICAgICAgKmVyciA9IDA7Ci0rICAgICAgWERFTEVURSAoZW9yKTsKLSsgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwotICAgcmV0dXJuICh2b2lkICopIGVvcjsKLSB9Ci0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi9DVkUtMjAxOS0xNTg0N18xLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvQ1ZFLTIwMTktMTU4NDdfMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjI3ZmQ0Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi9DVkUtMjAxOS0xNTg0N18xLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIxICswLDAgQEAKLUZyb20gOGM2MTU2NjExNmQyMzA2M2ZmNTk3MjcxODg0ZjhlMDBkOTRhYjFhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IHNlZ2hlciA8c2VnaGVyQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IEZyaSwgMzAgQXVnIDIwMTkgMTM6NDg6NDggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gCUJhY2twb3J0IGZyb20gdHJ1bmsgCTIwMTktMDgtMjIgIFNlZ2hlciBCb2Vzc2Vua29vbAotICA8c2VnaGVyQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLQkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5tZCAodW5zcGVjKTogRGVsZXRlIFVOU1BFQ19EQVJOLCBVTlNQRUNfREFSTl8zMiwKLQlVTlNQRUNfREFSTl9SQVcsIFVOU1BFQ19DTVBSQiwgVU5TUEVDX0NNUFJCMiwgVU5TUEVDX0NNUEVRQjsgbW92ZSB0by4uLgotCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKHVuc3BlYyk6IC4uLiBoZXJlLgotCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kIChkYXJuXzMyLCBkYXJuX3JhdywgZGFybiwgY21wcmIsCi0JKmNtcHJiX2ludGVybmFsLCBzZXRiX3NpZ25lZCwgc2V0Yl91bnNpZ25lZCwgY21wcmIyLCAqY21wcmIyX2ludGVybmFsLAotCWNtcGVxYiwgKmNtcGVxYl9pbnRlcm5hbCk6IERlbGV0ZSwgbW92ZSB0by4uLgotCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGRhcm5fMzIsIGRhcm5fcmF3LCBkYXJuLCBjbXByYiwKLQkqY21wcmJfaW50ZXJuYWwsIHNldGJfc2lnbmVkLCBzZXRiX3Vuc2lnbmVkLCBjbXByYjIsICpjbXByYjJfaW50ZXJuYWwsCi0JY21wZXFiLCAqY21wZXFiX2ludGVybmFsKTogLi4uIGhlcmUuCi0KLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvYnJhbmNoZXMvZ2NjLTktYnJhbmNoQDI3NTE3MCAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxOS0xNTg0NyBwMQotQWZmZWN0cyA8PSA5LjIuMAotRHJvcHBlZCBDaGFuZ2Vsb2cgY2hhbmdlcwotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGdjYy9jb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgfCAyMjMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5tZCAgfCAyMjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDIzOSBpbnNlcnRpb25zKCspLCAyMjMgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnY2MtOS4yLjAvZ2NjL2NvbmZpZy9yczYwMDAvYWx0aXZlYy5tZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy05LjIuMC5vcmlnL2djYy9jb25maWcvcnM2MDAwL2FsdGl2ZWMubWQKLSsrKyBnY2MtOS4yLjAvZ2NjL2NvbmZpZy9yczYwMDAvYWx0aXZlYy5tZAotQEAgLTgwLDkgKzgwLDYgQEAKLSAgICBVTlNQRUNfVlVQS0hQWAotICAgIFVOU1BFQ19WVVBLTFBYCi0gICAgVU5TUEVDX0NPTlZFUlRfNEYzMl84STE2Ci0tICAgVU5TUEVDX0RBUk4KLS0gICBVTlNQRUNfREFSTl8zMgotLSAgIFVOU1BFQ19EQVJOX1JBVwotICAgIFVOU1BFQ19EU1QKLSAgICBVTlNQRUNfRFNUVAotICAgIFVOU1BFQ19EU1RTVAotQEAgLTE2MSw5ICsxNTgsNiBAQAotICAgIFVOU1BFQ19CQ0RBREQKLSAgICBVTlNQRUNfQkNEU1VCCi0gICAgVU5TUEVDX0JDRF9PVkVSRkxPVwotLSAgIFVOU1BFQ19DTVBSQgotLSAgIFVOU1BFQ19DTVBSQjIKLS0gICBVTlNQRUNfQ01QRVFCCi0gICAgVU5TUEVDX1ZSTE1JCi0gICAgVU5TUEVDX1ZSTE5NCi0gXSkKLUBAIC00MTAxLDIyMyArNDA5NSw2IEBACi0gICAiYmNkPGJjZF9hZGRfc3ViPi4gJTAsJTEsJTIsJTMiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc2ltcGxlIildKQotIAotLShkZWZpbmVfaW5zbiAiZGFybl8zMiIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCi0tICAgICAgICAodW5zcGVjOlNJIFsoY29uc3RfaW50IDApXSBVTlNQRUNfREFSTl8zMikpXQotLSAgIlRBUkdFVF9QOV9NSVNDIgotLSAgImRhcm4gJTAsMCIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJpbnRlZ2VyIildKQotLQotLShkZWZpbmVfaW5zbiAiZGFybl9yYXciCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpESSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKQotLSAgICAgICAgKHVuc3BlYzpESSBbKGNvbnN0X2ludCAwKV0gVU5TUEVDX0RBUk5fUkFXKSldCi0tICAiVEFSR0VUX1A5X01JU0MgJiYgVEFSR0VUXzY0QklUIgotLSAgImRhcm4gJTAsMiIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJpbnRlZ2VyIildKQotLQotLShkZWZpbmVfaW5zbiAiZGFybiIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCi0tICAgICAgICAodW5zcGVjOkRJIFsoY29uc3RfaW50IDApXSBVTlNQRUNfREFSTikpXQotLSAgIlRBUkdFVF9QOV9NSVNDICYmIFRBUkdFVF82NEJJVCIKLS0gICJkYXJuICUwLDEiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAiaW50ZWdlciIpXSkKLS0KLS07OyBUZXN0IGJ5dGUgd2l0aGluIHJhbmdlLgotLTs7Ci0tOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMSBhcmUgb3JnYW5pemVkIGFzIHh4Onh4Onh4OnZ2LCB3aGVyZSB4eAotLTs7IHJlcHJlc2VudHMgYSBieXRlIHdob3NlIHZhbHVlIGlzIGlnbm9yZWQgaW4gdGhpcyBjb250ZXh0IGFuZAotLTs7IHZ2LCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSwgaG9sZHMgdGhlIGJ5dGUgdmFsdWUgdGhhdCBpcyB0bwotLTs7IGJlIHRlc3RlZCBmb3IgbWVtYmVyc2hpcCB3aXRoaW4gdGhlIHJhbmdlIHNwZWNpZmllZCBieSBvcGVyYW5kIDIuCi0tOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMiBhcmUgb3JnYW5pemVkIGFzIHh4Onh4OmhpOmxvLgotLTs7Ci0tOzsgUmV0dXJuIGluIHRhcmdldCByZWdpc3RlciBvcGVyYW5kIDAgYSB2YWx1ZSBvZiAxIGlmIGxvIDw9IHZ2IGFuZAotLTs7IHZ2IDw9IGhpLiAgT3RoZXJ3aXNlLCBzZXQgcmVnaXN0ZXIgb3BlcmFuZCAwIHRvIDAuCi0tOzsKLS07OyBUaG91Z2ggdGhlIGluc3RydWN0aW9ucyB0byB3aGljaCB0aGlzIGV4cGFuc2lvbiBtYXBzIG9wZXJhdGUgb24KLS07OyA2NC1iaXQgcmVnaXN0ZXJzLCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5IG9wZXJhdGVzIG9uCi0tOzsgU0ktbW9kZSBvcGVyYW5kcyBhcyB0aGUgaGlnaC1vcmRlciBiaXRzIHByb3ZpZGUgbm8gaW5mb3JtYXRpb24KLS07OyB0aGF0IGlzIG5vdCBhbHJlYWR5IGF2YWlsYWJsZSBpbiB0aGUgbG93LW9yZGVyIGJpdHMuICBUbyBhdm9pZCB0aGUKLS07OyBjb3N0cyBvZiBkYXRhIHdpZGVuaW5nIG9wZXJhdGlvbnMsIGZ1dHVyZSBlbmhhbmNlbWVudHMgbWlnaHQgYWxsb3cKLS07OyBESSBtb2RlIGZvciBvcGVyYW5kIDAgYW5kL29yIG1pZ2h0IGFsbG93IG9wZXJhbmQgMSB0byBiZSBRSSBtb2RlLgotLShkZWZpbmVfZXhwYW5kICJjbXByYiIKLS0gIFsoc2V0IChtYXRjaF9kdXAgMykKLS0JKHVuc3BlYzpDQyBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpCi0tCQkgICAgKG1hdGNoX29wZXJhbmQ6U0kgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotLQkgVU5TUEVDX0NNUFJCKSkKLS0gICAoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgImdwY19yZWdfb3BlcmFuZCIgIj1yIikKLS0JKGlmX3RoZW5fZWxzZTpTSSAobHQgKG1hdGNoX2R1cCAzKQotLQkJCSAgICAgKGNvbnN0X2ludCAwKSkKLS0JCQkgKGNvbnN0X2ludCAtMSkKLS0JCQkgKGlmX3RoZW5fZWxzZSAoZ3QgKG1hdGNoX2R1cCAzKQotLQkJCQkJICAgKGNvbnN0X2ludCAwKSkKLS0JCQkJICAgICAgIChjb25zdF9pbnQgMSkKLS0JCQkJICAgICAgIChjb25zdF9pbnQgMCkpKSldCi0tICAiVEFSR0VUX1A5X01JU0MiCi0tewotLSAgb3BlcmFuZHNbM10gPSBnZW5fcmVnX3J0eCAoQ0Ntb2RlKTsKLS19KQotLQotLTs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDEgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDp4eDp2diwgd2hlcmUgeHgKLS07OyByZXByZXNlbnRzIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBpZ25vcmVkIGluIHRoaXMgY29udGV4dCBhbmQKLS07OyB2diwgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUsIGhvbGRzIHRoZSBieXRlIHZhbHVlIHRoYXQgaXMgdG8KLS07OyBiZSB0ZXN0ZWQgZm9yIG1lbWJlcnNoaXAgd2l0aGluIHRoZSByYW5nZSBzcGVjaWZpZWQgYnkgb3BlcmFuZCAyLgotLTs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDIgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDpoaTpsby4KLS07OwotLTs7IFNldCBiaXQgMSAodGhlIEdUIGJpdCwgMHg0KSBvZiBDUiByZWdpc3RlciBvcGVyYW5kIDAgdG8gMSBpZgotLTs7IGxvIDw9IHZ2IGFuZCB2diA8PSBoaS4gIE90aGVyd2lzZSwgc2V0IHRoZSBHVCBiaXQgdG8gMC4gIFRoZSBvdGhlcgotLTs7IDMgYml0cyBvZiB0aGUgdGFyZ2V0IENSIHJlZ2lzdGVyIGFyZSBhbGwgc2V0IHRvIDAuCi0tKGRlZmluZV9pbnNuICIqY21wcmJfaW50ZXJuYWwiCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpDQyAwICJjY19yZWdfb3BlcmFuZCIgIj15IikKLS0JKHVuc3BlYzpDQyBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpCi0tCQkgICAgKG1hdGNoX29wZXJhbmQ6U0kgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotLQkgVU5TUEVDX0NNUFJCKSldCi0tICAiVEFSR0VUX1A5X01JU0MiCi0tICAiY21wcmIgJTAsMCwlMSwlMiIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJsb2dpY2FsIildKQotLQotLTs7IFNldCBvcGVyYW5kIDAgcmVnaXN0ZXIgdG8gLTEgaWYgdGhlIExUIGJpdCAoMHg4KSBvZiBjb25kaXRpb24KLS07OyByZWdpc3RlciBvcGVyYW5kIDEgaXMgb24uICBPdGhlcndpc2UsIHNldCBvcGVyYW5kIDAgcmVnaXN0ZXIgdG8gMQotLTs7IGlmIHRoZSBHVCBiaXQgKDB4NCkgb2YgY29uZGl0aW9uIHJlZ2lzdGVyIG9wZXJhbmQgMSBpcyBvbi4KLS07OyBPdGhlcndpc2UsIHNldCBvcGVyYW5kIDAgdG8gMC4gIE5vdGUgdGhhdCB0aGUgcmVzdWx0IHN0b3JlZCBpbnRvCi0tOzsgcmVnaXN0ZXIgb3BlcmFuZCAwIGlzIG5vbi16ZXJvIGlmZiBlaXRoZXIgdGhlIExUIG9yIEdUIGJpdHMgYXJlIG9uCi0tOzsgd2l0aGluIGNvbmRpdGlvbiByZWdpc3RlciBvcGVyYW5kIDEuCi0tKGRlZmluZV9pbnNuICJzZXRiX3NpZ25lZCIKLS0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNfcmVnX29wZXJhbmQiICI9ciIpCi0tCSAoaWZfdGhlbl9lbHNlOlNJIChsdCAobWF0Y2hfb3BlcmFuZDpDQyAxICJjY19yZWdfb3BlcmFuZCIgInkiKQotLQkJCSAgICAgIChjb25zdF9pbnQgMCkpCi0tCQkJICAoY29uc3RfaW50IC0xKQotLQkJCSAgKGlmX3RoZW5fZWxzZSAoZ3QgKG1hdGNoX2R1cCAxKQotLQkJCQkJICAgIChjb25zdF9pbnQgMCkpCi0tCQkJCQkoY29uc3RfaW50IDEpCi0tCQkJCQkoY29uc3RfaW50IDApKSkpXQotLSAgIlRBUkdFVF9QOV9NSVNDIgotLSAgInNldGIgJTAsJTEiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAibG9naWNhbCIpXSkKLS0KLS0oZGVmaW5lX2luc24gInNldGJfdW5zaWduZWQiCi0tICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U0kgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPXIiKQotLQkgKGlmX3RoZW5fZWxzZTpTSSAobHR1IChtYXRjaF9vcGVyYW5kOkNDVU5TIDEgImNjX3JlZ19vcGVyYW5kIiAieSIpCi0tCQkJICAgICAgKGNvbnN0X2ludCAwKSkKLS0JCQkgIChjb25zdF9pbnQgLTEpCi0tCQkJICAoaWZfdGhlbl9lbHNlIChndHUgKG1hdGNoX2R1cCAxKQotLQkJCQkJICAgIChjb25zdF9pbnQgMCkpCi0tCQkJCQkoY29uc3RfaW50IDEpCi0tCQkJCQkoY29uc3RfaW50IDApKSkpXQotLSAgIlRBUkdFVF9QOV9NSVNDIgotLSAgInNldGIgJTAsJTEiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAibG9naWNhbCIpXSkKLS0KLS07OyBUZXN0IGJ5dGUgd2l0aGluIHR3byByYW5nZXMuCi0tOzsKLS07OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAxIGFyZSBvcmdhbml6ZWQgYXMgeHg6eHg6eHg6dnYsIHdoZXJlIHh4Ci0tOzsgcmVwcmVzZW50cyBhIGJ5dGUgd2hvc2UgdmFsdWUgaXMgaWdub3JlZCBpbiB0aGlzIGNvbnRleHQgYW5kCi0tOzsgdnYsIHRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlLCBob2xkcyB0aGUgYnl0ZSB2YWx1ZSB0aGF0IGlzIHRvCi0tOzsgYmUgdGVzdGVkIGZvciBtZW1iZXJzaGlwIHdpdGhpbiB0aGUgcmFuZ2Ugc3BlY2lmaWVkIGJ5IG9wZXJhbmQgMi4KLS07OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAyIGFyZSBvcmdhbml6ZWQgYXMgaGlfMTpsb18xOmhpXzI6bG9fMi4KLS07OwotLTs7IFJldHVybiBpbiB0YXJnZXQgcmVnaXN0ZXIgb3BlcmFuZCAwIGEgdmFsdWUgb2YgMSBpZiAobG9fMSA8PSB2diBhbmQKLS07OyB2diA8PSBoaV8xKSBvciBpZiAobG9fMiA8PSB2diBhbmQgdnYgPD0gaGlfMikuICBPdGhlcndpc2UsIHNldCByZWdpc3RlcgotLTs7IG9wZXJhbmQgMCB0byAwLgotLTs7Ci0tOzsgVGhvdWdoIHRoZSBpbnN0cnVjdGlvbnMgdG8gd2hpY2ggdGhpcyBleHBhbnNpb24gbWFwcyBvcGVyYXRlIG9uCi0tOzsgNjQtYml0IHJlZ2lzdGVycywgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb25seSBvcGVyYXRlcyBvbgotLTs7IFNJLW1vZGUgb3BlcmFuZHMgYXMgdGhlIGhpZ2gtb3JkZXIgYml0cyBwcm92aWRlIG5vIGluZm9ybWF0aW9uCi0tOzsgdGhhdCBpcyBub3QgYWxyZWFkeSBhdmFpbGFibGUgaW4gdGhlIGxvdy1vcmRlciBiaXRzLiAgVG8gYXZvaWQgdGhlCi0tOzsgY29zdHMgb2YgZGF0YSB3aWRlbmluZyBvcGVyYXRpb25zLCBmdXR1cmUgZW5oYW5jZW1lbnRzIG1pZ2h0IGFsbG93Ci0tOzsgREkgbW9kZSBmb3Igb3BlcmFuZCAwIGFuZC9vciBtaWdodCBhbGxvdyBvcGVyYW5kIDEgdG8gYmUgUUkgbW9kZS4KLS0oZGVmaW5lX2V4cGFuZCAiY21wcmIyIgotLSAgWyhzZXQgKG1hdGNoX2R1cCAzKQotLQkodW5zcGVjOkNDIFsobWF0Y2hfb3BlcmFuZDpTSSAxICJncGNfcmVnX29wZXJhbmQiICJyIikKLS0JCSAgICAobWF0Y2hfb3BlcmFuZDpTSSAyICJncGNfcmVnX29wZXJhbmQiICJyIildCi0tCSBVTlNQRUNfQ01QUkIyKSkKLS0gICAoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgImdwY19yZWdfb3BlcmFuZCIgIj1yIikKLS0JKGlmX3RoZW5fZWxzZTpTSSAobHQgKG1hdGNoX2R1cCAzKQotLQkJCSAgICAgKGNvbnN0X2ludCAwKSkKLS0JCQkgKGNvbnN0X2ludCAtMSkKLS0JCQkgKGlmX3RoZW5fZWxzZSAoZ3QgKG1hdGNoX2R1cCAzKQotLQkJCQkJICAgKGNvbnN0X2ludCAwKSkKLS0JCQkJICAgICAgIChjb25zdF9pbnQgMSkKLS0JCQkJICAgICAgIChjb25zdF9pbnQgMCkpKSldCi0tICAiVEFSR0VUX1A5X01JU0MiCi0tewotLSAgb3BlcmFuZHNbM10gPSBnZW5fcmVnX3J0eCAoQ0Ntb2RlKTsKLS19KQotLQotLTs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDEgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDp4eDp2diwgd2hlcmUgeHgKLS07OyByZXByZXNlbnRzIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBpZ25vcmVkIGluIHRoaXMgY29udGV4dCBhbmQKLS07OyB2diwgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUsIGhvbGRzIHRoZSBieXRlIHZhbHVlIHRoYXQgaXMgdG8KLS07OyBiZSB0ZXN0ZWQgZm9yIG1lbWJlcnNoaXAgd2l0aGluIHRoZSByYW5nZXMgc3BlY2lmaWVkIGJ5IG9wZXJhbmQgMi4KLS07OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAyIGFyZSBvcmdhbml6ZWQgYXMgaGlfMTpsb18xOmhpXzI6bG9fMi4KLS07OwotLTs7IFNldCBiaXQgMSAodGhlIEdUIGJpdCwgMHg0KSBvZiBDUiByZWdpc3RlciBvcGVyYW5kIDAgdG8gMSBpZgotLTs7IChsb18xIDw9IHZ2IGFuZCB2diA8PSBoaV8xKSBvciBpZiAobG9fMiA8PSB2diBhbmQgdnYgPD0gaGlfMikuCi0tOzsgT3RoZXJ3aXNlLCBzZXQgdGhlIEdUIGJpdCB0byAwLiAgVGhlIG90aGVyIDMgYml0cyBvZiB0aGUgdGFyZ2V0Ci0tOzsgQ1IgcmVnaXN0ZXIgYXJlIGFsbCBzZXQgdG8gMC4KLS0oZGVmaW5lX2luc24gIipjbXByYjJfaW50ZXJuYWwiCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpDQyAwICJjY19yZWdfb3BlcmFuZCIgIj15IikKLS0JKHVuc3BlYzpDQyBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpCi0tCQkgICAgKG1hdGNoX29wZXJhbmQ6U0kgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotLQkgVU5TUEVDX0NNUFJCMikpXQotLSAgIlRBUkdFVF9QOV9NSVNDIgotLSAgImNtcHJiICUwLDEsJTEsJTIiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAibG9naWNhbCIpXSkKLS0KLS07OyBUZXN0IGJ5dGUgbWVtYmVyc2hpcCB3aXRoaW4gc2V0IG9mIDggYnl0ZXMuCi0tOzsKLS07OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAxIGFyZSBvcmdhbml6ZWQgYXMgeHg6eHg6eHg6dnYsIHdoZXJlIHh4Ci0tOzsgcmVwcmVzZW50cyBhIGJ5dGUgd2hvc2UgdmFsdWUgaXMgaWdub3JlZCBpbiB0aGlzIGNvbnRleHQgYW5kCi0tOzsgdnYsIHRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlLCBob2xkcyB0aGUgYnl0ZSB2YWx1ZSB0aGF0IGlzIHRvCi0tOzsgYmUgdGVzdGVkIGZvciBtZW1iZXJzaGlwIHdpdGhpbiB0aGUgc2V0IHNwZWNpZmllZCBieSBvcGVyYW5kIDIuCi0tOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMiBhcmUgb3JnYW5pemVkIGFzIGUwOmUxOmUyOmUzOmU0OmU1OmU2OmU3LgotLTs7Ci0tOzsgUmV0dXJuIGluIHRhcmdldCByZWdpc3RlciBvcGVyYW5kIDAgYSB2YWx1ZSBvZiAxIGlmIHZ2IGVxdWFscyBvbmUKLS07OyBvZiB0aGUgdmFsdWVzIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBvciBlNy4gIE90aGVyd2lzZSwgc2V0Ci0tOzsgcmVnaXN0ZXIgb3BlcmFuZCAwIHRvIDAuICBOb3RlIHRoYXQgdGhlIDggYnl0ZSB2YWx1ZXMgaGVsZCB3aXRoaW4KLS07OyBvcGVyYW5kIDIgbmVlZCBub3QgYmUgdW5pcXVlLgotLTs7Ci0tOzsgVGhvdWdoIHRoZSBpbnN0cnVjdGlvbnMgdG8gd2hpY2ggdGhpcyBleHBhbnNpb24gbWFwcyBvcGVyYXRlIG9uCi0tOzsgNjQtYml0IHJlZ2lzdGVycywgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgdGhhdCBvcGVyYW5kcwotLTs7IDAgYW5kIDEgaGF2ZSBtb2RlIFNJIGFzIHRoZSBoaWdoLW9yZGVyIGJpdHMgcHJvdmlkZSBubyBpbmZvcm1hdGlvbgotLTs7IHRoYXQgaXMgbm90IGFscmVhZHkgYXZhaWxhYmxlIGluIHRoZSBsb3ctb3JkZXIgYml0cy4gIFRvIGF2b2lkIHRoZQotLTs7IGNvc3RzIG9mIGRhdGEgd2lkZW5pbmcgb3BlcmF0aW9ucywgZnV0dXJlIGVuaGFuY2VtZW50cyBtaWdodCBhbGxvdwotLTs7IERJIG1vZGUgZm9yIG9wZXJhbmQgMCBhbmQvb3IgbWlnaHQgYWxsb3cgb3BlcmFuZCAxIHRvIGJlIFFJIG1vZGUuCi0tKGRlZmluZV9leHBhbmQgImNtcGVxYiIKLS0gIFsoc2V0IChtYXRjaF9kdXAgMykKLS0JKHVuc3BlYzpDQyBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpCi0tCQkgICAgKG1hdGNoX29wZXJhbmQ6REkgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotLQkgVU5TUEVDX0NNUEVRQikpCi0tICAgKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNfcmVnX29wZXJhbmQiICI9ciIpCi0tCShpZl90aGVuX2Vsc2U6U0kgKGx0IChtYXRjaF9kdXAgMykKLS0JCQkgICAgIChjb25zdF9pbnQgMCkpCi0tCQkJIChjb25zdF9pbnQgLTEpCi0tCQkJIChpZl90aGVuX2Vsc2UgKGd0IChtYXRjaF9kdXAgMykKLS0JCQkJCSAgIChjb25zdF9pbnQgMCkpCi0tCQkJCSAgICAgICAoY29uc3RfaW50IDEpCi0tCQkJCSAgICAgICAoY29uc3RfaW50IDApKSkpXQotLSAgIlRBUkdFVF9QOV9NSVNDICYmIFRBUkdFVF82NEJJVCIKLS17Ci0tICBvcGVyYW5kc1szXSA9IGdlbl9yZWdfcnR4IChDQ21vZGUpOwotLX0pCi0tCi0tOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMSBhcmUgb3JnYW5pemVkIGFzIHh4Onh4Onh4OnZ2LCB3aGVyZSB4eAotLTs7IHJlcHJlc2VudHMgYSBieXRlIHdob3NlIHZhbHVlIGlzIGlnbm9yZWQgaW4gdGhpcyBjb250ZXh0IGFuZAotLTs7IHZ2LCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSwgaG9sZHMgdGhlIGJ5dGUgdmFsdWUgdGhhdCBpcyB0bwotLTs7IGJlIHRlc3RlZCBmb3IgbWVtYmVyc2hpcCB3aXRoaW4gdGhlIHNldCBzcGVjaWZpZWQgYnkgb3BlcmFuZCAyLgotLTs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDIgYXJlIG9yZ2FuaXplZCBhcyBlMDplMTplMjplMzplNDplNTplNjplNy4KLS07OwotLTs7IFNldCBiaXQgMSAodGhlIEdUIGJpdCwgMHg0KSBvZiBDUiByZWdpc3RlciBvcGVyYW5kIDAgdG8gMSBpZiB2dgotLTs7IGVxdWFscyBvbmUgb2YgdGhlIHZhbHVlcyBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgb3IgZTcuICBPdGhlcndpc2UsCi0tOzsgc2V0IHRoZSBHVCBiaXQgdG8gemVyby4gIFRoZSBvdGhlciAzIGJpdHMgb2YgdGhlIHRhcmdldCBDUiByZWdpc3RlcgotLTs7IGFyZSBhbGwgc2V0IHRvIDAuCi0tKGRlZmluZV9pbnNuICIqY21wZXFiX2ludGVybmFsIgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Q0MgMCAiY2NfcmVnX29wZXJhbmQiICI9eSIpCi0tCSAodW5zcGVjOkNDIFsobWF0Y2hfb3BlcmFuZDpTSSAxICJncGNfcmVnX29wZXJhbmQiICJyIikKLS0JCSAgICAgKG1hdGNoX29wZXJhbmQ6REkgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotLQkgIFVOU1BFQ19DTVBFUUIpKV0KLS0gICJUQVJHRVRfUDlfTUlTQyAmJiBUQVJHRVRfNjRCSVQiCi0tICAiY21wZXFiICUwLCUxLCUyIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImxvZ2ljYWwiKV0pCi0tCi0gKGRlZmluZV9leHBhbmQgImJjZDxiY2RfYWRkX3N1Yj5fPGNvZGU+IgotICAgWyhwYXJhbGxlbCBbKHNldCAocmVnOkNDRlAgQ1I2X1JFR05PKQotIAkJICAgKGNvbXBhcmU6Q0NGUAotSW5kZXg6IGdjYy05LjIuMC9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAubWQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtOS4yLjAub3JpZy9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAubWQKLSsrKyBnY2MtOS4yLjAvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm1kCi1AQCAtMTM3LDYgKzEzNywxMiBAQAotICAgIFVOU1BFQ19MU1EKLSAgICBVTlNQRUNfRlVTSU9OX0dQUgotICAgIFVOU1BFQ19TVEFDS19DSEVDSwotKyAgIFVOU1BFQ19EQVJOCi0rICAgVU5TUEVDX0RBUk5fMzIKLSsgICBVTlNQRUNfREFSTl9SQVcKLSsgICBVTlNQRUNfQ01QUkIKLSsgICBVTlNQRUNfQ01QUkIyCi0rICAgVU5TUEVDX0NNUEVRQgotICAgIFVOU1BFQ19BRERfUk9VTkRfVE9fT0RECi0gICAgVU5TUEVDX1NVQl9ST1VORF9UT19PREQKLSAgICBVTlNQRUNfTVVMX1JPVU5EX1RPX09ERAotQEAgLTE0MzIyLDcgKzE0MzI4LDIyNSBAQAotICAgICJ4c2NtcHVxcCAlMCwlMSwlMiIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNjbXAiKQotICAgIChzZXRfYXR0ciAic2l6ZSIgIjEyOCIpXSkKLSsMCi0rOzsgTWlzY2VsbGFuZW91cyBJU0EgMy4wIChwb3dlcjkpIGluc3RydWN0aW9ucwotKwotKyhkZWZpbmVfaW5zbiAiZGFybl8zMiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCi0rICAgICAgICAodW5zcGVjOlNJIFsoY29uc3RfaW50IDApXSBVTlNQRUNfREFSTl8zMikpXQotKyAgIlRBUkdFVF9QOV9NSVNDIgotKyAgImRhcm4gJTAsMCIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJpbnRlZ2VyIildKQotKwotKyhkZWZpbmVfaW5zbiAiZGFybl9yYXciCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpESSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKQotKyAgICAgICAgKHVuc3BlYzpESSBbKGNvbnN0X2ludCAwKV0gVU5TUEVDX0RBUk5fUkFXKSldCi0rICAiVEFSR0VUX1A5X01JU0MgJiYgVEFSR0VUXzY0QklUIgotKyAgImRhcm4gJTAsMiIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJpbnRlZ2VyIildKQotKwotKyhkZWZpbmVfaW5zbiAiZGFybiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCi0rICAgICAgICAodW5zcGVjOkRJIFsoY29uc3RfaW50IDApXSBVTlNQRUNfREFSTikpXQotKyAgIlRBUkdFVF9QOV9NSVNDICYmIFRBUkdFVF82NEJJVCIKLSsgICJkYXJuICUwLDEiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiaW50ZWdlciIpXSkKLSsKLSs7OyBUZXN0IGJ5dGUgd2l0aGluIHJhbmdlLgotKzs7Ci0rOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMSBhcmUgb3JnYW5pemVkIGFzIHh4Onh4Onh4OnZ2LCB3aGVyZSB4eAotKzs7IHJlcHJlc2VudHMgYSBieXRlIHdob3NlIHZhbHVlIGlzIGlnbm9yZWQgaW4gdGhpcyBjb250ZXh0IGFuZAotKzs7IHZ2LCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSwgaG9sZHMgdGhlIGJ5dGUgdmFsdWUgdGhhdCBpcyB0bwotKzs7IGJlIHRlc3RlZCBmb3IgbWVtYmVyc2hpcCB3aXRoaW4gdGhlIHJhbmdlIHNwZWNpZmllZCBieSBvcGVyYW5kIDIuCi0rOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMiBhcmUgb3JnYW5pemVkIGFzIHh4Onh4OmhpOmxvLgotKzs7Ci0rOzsgUmV0dXJuIGluIHRhcmdldCByZWdpc3RlciBvcGVyYW5kIDAgYSB2YWx1ZSBvZiAxIGlmIGxvIDw9IHZ2IGFuZAotKzs7IHZ2IDw9IGhpLiAgT3RoZXJ3aXNlLCBzZXQgcmVnaXN0ZXIgb3BlcmFuZCAwIHRvIDAuCi0rOzsKLSs7OyBUaG91Z2ggdGhlIGluc3RydWN0aW9ucyB0byB3aGljaCB0aGlzIGV4cGFuc2lvbiBtYXBzIG9wZXJhdGUgb24KLSs7OyA2NC1iaXQgcmVnaXN0ZXJzLCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5IG9wZXJhdGVzIG9uCi0rOzsgU0ktbW9kZSBvcGVyYW5kcyBhcyB0aGUgaGlnaC1vcmRlciBiaXRzIHByb3ZpZGUgbm8gaW5mb3JtYXRpb24KLSs7OyB0aGF0IGlzIG5vdCBhbHJlYWR5IGF2YWlsYWJsZSBpbiB0aGUgbG93LW9yZGVyIGJpdHMuICBUbyBhdm9pZCB0aGUKLSs7OyBjb3N0cyBvZiBkYXRhIHdpZGVuaW5nIG9wZXJhdGlvbnMsIGZ1dHVyZSBlbmhhbmNlbWVudHMgbWlnaHQgYWxsb3cKLSs7OyBESSBtb2RlIGZvciBvcGVyYW5kIDAgYW5kL29yIG1pZ2h0IGFsbG93IG9wZXJhbmQgMSB0byBiZSBRSSBtb2RlLgotKyhkZWZpbmVfZXhwYW5kICJjbXByYiIKLSsgIFsoc2V0IChtYXRjaF9kdXAgMykKLSsJKHVuc3BlYzpDQyBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpCi0rCQkgICAgKG1hdGNoX29wZXJhbmQ6U0kgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotKwkgVU5TUEVDX0NNUFJCKSkKLSsgICAoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgImdwY19yZWdfb3BlcmFuZCIgIj1yIikKLSsJKGlmX3RoZW5fZWxzZTpTSSAobHQgKG1hdGNoX2R1cCAzKQotKwkJCSAgICAgKGNvbnN0X2ludCAwKSkKLSsJCQkgKGNvbnN0X2ludCAtMSkKLSsJCQkgKGlmX3RoZW5fZWxzZSAoZ3QgKG1hdGNoX2R1cCAzKQotKwkJCQkJICAgKGNvbnN0X2ludCAwKSkKLSsJCQkJICAgICAgIChjb25zdF9pbnQgMSkKLSsJCQkJICAgICAgIChjb25zdF9pbnQgMCkpKSldCi0rICAiVEFSR0VUX1A5X01JU0MiCi0rewotKyAgb3BlcmFuZHNbM10gPSBnZW5fcmVnX3J0eCAoQ0Ntb2RlKTsKLSt9KQotKwotKzs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDEgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDp4eDp2diwgd2hlcmUgeHgKLSs7OyByZXByZXNlbnRzIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBpZ25vcmVkIGluIHRoaXMgY29udGV4dCBhbmQKLSs7OyB2diwgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUsIGhvbGRzIHRoZSBieXRlIHZhbHVlIHRoYXQgaXMgdG8KLSs7OyBiZSB0ZXN0ZWQgZm9yIG1lbWJlcnNoaXAgd2l0aGluIHRoZSByYW5nZSBzcGVjaWZpZWQgYnkgb3BlcmFuZCAyLgotKzs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDIgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDpoaTpsby4KLSs7OwotKzs7IFNldCBiaXQgMSAodGhlIEdUIGJpdCwgMHg0KSBvZiBDUiByZWdpc3RlciBvcGVyYW5kIDAgdG8gMSBpZgotKzs7IGxvIDw9IHZ2IGFuZCB2diA8PSBoaS4gIE90aGVyd2lzZSwgc2V0IHRoZSBHVCBiaXQgdG8gMC4gIFRoZSBvdGhlcgotKzs7IDMgYml0cyBvZiB0aGUgdGFyZ2V0IENSIHJlZ2lzdGVyIGFyZSBhbGwgc2V0IHRvIDAuCi0rKGRlZmluZV9pbnNuICIqY21wcmJfaW50ZXJuYWwiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpDQyAwICJjY19yZWdfb3BlcmFuZCIgIj15IikKLSsJKHVuc3BlYzpDQyBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpCi0rCQkgICAgKG1hdGNoX29wZXJhbmQ6U0kgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotKwkgVU5TUEVDX0NNUFJCKSldCi0rICAiVEFSR0VUX1A5X01JU0MiCi0rICAiY21wcmIgJTAsMCwlMSwlMiIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJsb2dpY2FsIildKQotKwotKzs7IFNldCBvcGVyYW5kIDAgcmVnaXN0ZXIgdG8gLTEgaWYgdGhlIExUIGJpdCAoMHg4KSBvZiBjb25kaXRpb24KLSs7OyByZWdpc3RlciBvcGVyYW5kIDEgaXMgb24uICBPdGhlcndpc2UsIHNldCBvcGVyYW5kIDAgcmVnaXN0ZXIgdG8gMQotKzs7IGlmIHRoZSBHVCBiaXQgKDB4NCkgb2YgY29uZGl0aW9uIHJlZ2lzdGVyIG9wZXJhbmQgMSBpcyBvbi4KLSs7OyBPdGhlcndpc2UsIHNldCBvcGVyYW5kIDAgdG8gMC4gIE5vdGUgdGhhdCB0aGUgcmVzdWx0IHN0b3JlZCBpbnRvCi0rOzsgcmVnaXN0ZXIgb3BlcmFuZCAwIGlzIG5vbi16ZXJvIGlmZiBlaXRoZXIgdGhlIExUIG9yIEdUIGJpdHMgYXJlIG9uCi0rOzsgd2l0aGluIGNvbmRpdGlvbiByZWdpc3RlciBvcGVyYW5kIDEuCi0rKGRlZmluZV9pbnNuICJzZXRiX3NpZ25lZCIKLSsgICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNfcmVnX29wZXJhbmQiICI9ciIpCi0rCSAoaWZfdGhlbl9lbHNlOlNJIChsdCAobWF0Y2hfb3BlcmFuZDpDQyAxICJjY19yZWdfb3BlcmFuZCIgInkiKQotKwkJCSAgICAgIChjb25zdF9pbnQgMCkpCi0rCQkJICAoY29uc3RfaW50IC0xKQotKwkJCSAgKGlmX3RoZW5fZWxzZSAoZ3QgKG1hdGNoX2R1cCAxKQotKwkJCQkJICAgIChjb25zdF9pbnQgMCkpCi0rCQkJCQkoY29uc3RfaW50IDEpCi0rCQkJCQkoY29uc3RfaW50IDApKSkpXQotKyAgIlRBUkdFVF9QOV9NSVNDIgotKyAgInNldGIgJTAsJTEiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAibG9naWNhbCIpXSkKLSAKLSsoZGVmaW5lX2luc24gInNldGJfdW5zaWduZWQiCi0rICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U0kgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPXIiKQotKwkgKGlmX3RoZW5fZWxzZTpTSSAobHR1IChtYXRjaF9vcGVyYW5kOkNDVU5TIDEgImNjX3JlZ19vcGVyYW5kIiAieSIpCi0rCQkJICAgICAgKGNvbnN0X2ludCAwKSkKLSsJCQkgIChjb25zdF9pbnQgLTEpCi0rCQkJICAoaWZfdGhlbl9lbHNlIChndHUgKG1hdGNoX2R1cCAxKQotKwkJCQkJICAgIChjb25zdF9pbnQgMCkpCi0rCQkJCQkoY29uc3RfaW50IDEpCi0rCQkJCQkoY29uc3RfaW50IDApKSkpXQotKyAgIlRBUkdFVF9QOV9NSVNDIgotKyAgInNldGIgJTAsJTEiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAibG9naWNhbCIpXSkKLSsKLSs7OyBUZXN0IGJ5dGUgd2l0aGluIHR3byByYW5nZXMuCi0rOzsKLSs7OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAxIGFyZSBvcmdhbml6ZWQgYXMgeHg6eHg6eHg6dnYsIHdoZXJlIHh4Ci0rOzsgcmVwcmVzZW50cyBhIGJ5dGUgd2hvc2UgdmFsdWUgaXMgaWdub3JlZCBpbiB0aGlzIGNvbnRleHQgYW5kCi0rOzsgdnYsIHRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlLCBob2xkcyB0aGUgYnl0ZSB2YWx1ZSB0aGF0IGlzIHRvCi0rOzsgYmUgdGVzdGVkIGZvciBtZW1iZXJzaGlwIHdpdGhpbiB0aGUgcmFuZ2Ugc3BlY2lmaWVkIGJ5IG9wZXJhbmQgMi4KLSs7OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAyIGFyZSBvcmdhbml6ZWQgYXMgaGlfMTpsb18xOmhpXzI6bG9fMi4KLSs7OwotKzs7IFJldHVybiBpbiB0YXJnZXQgcmVnaXN0ZXIgb3BlcmFuZCAwIGEgdmFsdWUgb2YgMSBpZiAobG9fMSA8PSB2diBhbmQKLSs7OyB2diA8PSBoaV8xKSBvciBpZiAobG9fMiA8PSB2diBhbmQgdnYgPD0gaGlfMikuICBPdGhlcndpc2UsIHNldCByZWdpc3RlcgotKzs7IG9wZXJhbmQgMCB0byAwLgotKzs7Ci0rOzsgVGhvdWdoIHRoZSBpbnN0cnVjdGlvbnMgdG8gd2hpY2ggdGhpcyBleHBhbnNpb24gbWFwcyBvcGVyYXRlIG9uCi0rOzsgNjQtYml0IHJlZ2lzdGVycywgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb25seSBvcGVyYXRlcyBvbgotKzs7IFNJLW1vZGUgb3BlcmFuZHMgYXMgdGhlIGhpZ2gtb3JkZXIgYml0cyBwcm92aWRlIG5vIGluZm9ybWF0aW9uCi0rOzsgdGhhdCBpcyBub3QgYWxyZWFkeSBhdmFpbGFibGUgaW4gdGhlIGxvdy1vcmRlciBiaXRzLiAgVG8gYXZvaWQgdGhlCi0rOzsgY29zdHMgb2YgZGF0YSB3aWRlbmluZyBvcGVyYXRpb25zLCBmdXR1cmUgZW5oYW5jZW1lbnRzIG1pZ2h0IGFsbG93Ci0rOzsgREkgbW9kZSBmb3Igb3BlcmFuZCAwIGFuZC9vciBtaWdodCBhbGxvdyBvcGVyYW5kIDEgdG8gYmUgUUkgbW9kZS4KLSsoZGVmaW5lX2V4cGFuZCAiY21wcmIyIgotKyAgWyhzZXQgKG1hdGNoX2R1cCAzKQotKwkodW5zcGVjOkNDIFsobWF0Y2hfb3BlcmFuZDpTSSAxICJncGNfcmVnX29wZXJhbmQiICJyIikKLSsJCSAgICAobWF0Y2hfb3BlcmFuZDpTSSAyICJncGNfcmVnX29wZXJhbmQiICJyIildCi0rCSBVTlNQRUNfQ01QUkIyKSkKLSsgICAoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgImdwY19yZWdfb3BlcmFuZCIgIj1yIikKLSsJKGlmX3RoZW5fZWxzZTpTSSAobHQgKG1hdGNoX2R1cCAzKQotKwkJCSAgICAgKGNvbnN0X2ludCAwKSkKLSsJCQkgKGNvbnN0X2ludCAtMSkKLSsJCQkgKGlmX3RoZW5fZWxzZSAoZ3QgKG1hdGNoX2R1cCAzKQotKwkJCQkJICAgKGNvbnN0X2ludCAwKSkKLSsJCQkJICAgICAgIChjb25zdF9pbnQgMSkKLSsJCQkJICAgICAgIChjb25zdF9pbnQgMCkpKSldCi0rICAiVEFSR0VUX1A5X01JU0MiCi0rewotKyAgb3BlcmFuZHNbM10gPSBnZW5fcmVnX3J0eCAoQ0Ntb2RlKTsKLSt9KQotKwotKzs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDEgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDp4eDp2diwgd2hlcmUgeHgKLSs7OyByZXByZXNlbnRzIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBpZ25vcmVkIGluIHRoaXMgY29udGV4dCBhbmQKLSs7OyB2diwgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUsIGhvbGRzIHRoZSBieXRlIHZhbHVlIHRoYXQgaXMgdG8KLSs7OyBiZSB0ZXN0ZWQgZm9yIG1lbWJlcnNoaXAgd2l0aGluIHRoZSByYW5nZXMgc3BlY2lmaWVkIGJ5IG9wZXJhbmQgMi4KLSs7OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAyIGFyZSBvcmdhbml6ZWQgYXMgaGlfMTpsb18xOmhpXzI6bG9fMi4KLSs7OwotKzs7IFNldCBiaXQgMSAodGhlIEdUIGJpdCwgMHg0KSBvZiBDUiByZWdpc3RlciBvcGVyYW5kIDAgdG8gMSBpZgotKzs7IChsb18xIDw9IHZ2IGFuZCB2diA8PSBoaV8xKSBvciBpZiAobG9fMiA8PSB2diBhbmQgdnYgPD0gaGlfMikuCi0rOzsgT3RoZXJ3aXNlLCBzZXQgdGhlIEdUIGJpdCB0byAwLiAgVGhlIG90aGVyIDMgYml0cyBvZiB0aGUgdGFyZ2V0Ci0rOzsgQ1IgcmVnaXN0ZXIgYXJlIGFsbCBzZXQgdG8gMC4KLSsoZGVmaW5lX2luc24gIipjbXByYjJfaW50ZXJuYWwiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpDQyAwICJjY19yZWdfb3BlcmFuZCIgIj15IikKLSsJKHVuc3BlYzpDQyBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpCi0rCQkgICAgKG1hdGNoX29wZXJhbmQ6U0kgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotKwkgVU5TUEVDX0NNUFJCMikpXQotKyAgIlRBUkdFVF9QOV9NSVNDIgotKyAgImNtcHJiICUwLDEsJTEsJTIiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAibG9naWNhbCIpXSkKLSsKLSs7OyBUZXN0IGJ5dGUgbWVtYmVyc2hpcCB3aXRoaW4gc2V0IG9mIDggYnl0ZXMuCi0rOzsKLSs7OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAxIGFyZSBvcmdhbml6ZWQgYXMgeHg6eHg6eHg6dnYsIHdoZXJlIHh4Ci0rOzsgcmVwcmVzZW50cyBhIGJ5dGUgd2hvc2UgdmFsdWUgaXMgaWdub3JlZCBpbiB0aGlzIGNvbnRleHQgYW5kCi0rOzsgdnYsIHRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlLCBob2xkcyB0aGUgYnl0ZSB2YWx1ZSB0aGF0IGlzIHRvCi0rOzsgYmUgdGVzdGVkIGZvciBtZW1iZXJzaGlwIHdpdGhpbiB0aGUgc2V0IHNwZWNpZmllZCBieSBvcGVyYW5kIDIuCi0rOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMiBhcmUgb3JnYW5pemVkIGFzIGUwOmUxOmUyOmUzOmU0OmU1OmU2OmU3LgotKzs7Ci0rOzsgUmV0dXJuIGluIHRhcmdldCByZWdpc3RlciBvcGVyYW5kIDAgYSB2YWx1ZSBvZiAxIGlmIHZ2IGVxdWFscyBvbmUKLSs7OyBvZiB0aGUgdmFsdWVzIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBvciBlNy4gIE90aGVyd2lzZSwgc2V0Ci0rOzsgcmVnaXN0ZXIgb3BlcmFuZCAwIHRvIDAuICBOb3RlIHRoYXQgdGhlIDggYnl0ZSB2YWx1ZXMgaGVsZCB3aXRoaW4KLSs7OyBvcGVyYW5kIDIgbmVlZCBub3QgYmUgdW5pcXVlLgotKzs7Ci0rOzsgVGhvdWdoIHRoZSBpbnN0cnVjdGlvbnMgdG8gd2hpY2ggdGhpcyBleHBhbnNpb24gbWFwcyBvcGVyYXRlIG9uCi0rOzsgNjQtYml0IHJlZ2lzdGVycywgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgdGhhdCBvcGVyYW5kcwotKzs7IDAgYW5kIDEgaGF2ZSBtb2RlIFNJIGFzIHRoZSBoaWdoLW9yZGVyIGJpdHMgcHJvdmlkZSBubyBpbmZvcm1hdGlvbgotKzs7IHRoYXQgaXMgbm90IGFscmVhZHkgYXZhaWxhYmxlIGluIHRoZSBsb3ctb3JkZXIgYml0cy4gIFRvIGF2b2lkIHRoZQotKzs7IGNvc3RzIG9mIGRhdGEgd2lkZW5pbmcgb3BlcmF0aW9ucywgZnV0dXJlIGVuaGFuY2VtZW50cyBtaWdodCBhbGxvdwotKzs7IERJIG1vZGUgZm9yIG9wZXJhbmQgMCBhbmQvb3IgbWlnaHQgYWxsb3cgb3BlcmFuZCAxIHRvIGJlIFFJIG1vZGUuCi0rKGRlZmluZV9leHBhbmQgImNtcGVxYiIKLSsgIFsoc2V0IChtYXRjaF9kdXAgMykKLSsJKHVuc3BlYzpDQyBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpCi0rCQkgICAgKG1hdGNoX29wZXJhbmQ6REkgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotKwkgVU5TUEVDX0NNUEVRQikpCi0rICAgKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNfcmVnX29wZXJhbmQiICI9ciIpCi0rCShpZl90aGVuX2Vsc2U6U0kgKGx0IChtYXRjaF9kdXAgMykKLSsJCQkgICAgIChjb25zdF9pbnQgMCkpCi0rCQkJIChjb25zdF9pbnQgLTEpCi0rCQkJIChpZl90aGVuX2Vsc2UgKGd0IChtYXRjaF9kdXAgMykKLSsJCQkJCSAgIChjb25zdF9pbnQgMCkpCi0rCQkJCSAgICAgICAoY29uc3RfaW50IDEpCi0rCQkJCSAgICAgICAoY29uc3RfaW50IDApKSkpXQotKyAgIlRBUkdFVF9QOV9NSVNDICYmIFRBUkdFVF82NEJJVCIKLSt7Ci0rICBvcGVyYW5kc1szXSA9IGdlbl9yZWdfcnR4IChDQ21vZGUpOwotK30pCi0rCi0rOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMSBhcmUgb3JnYW5pemVkIGFzIHh4Onh4Onh4OnZ2LCB3aGVyZSB4eAotKzs7IHJlcHJlc2VudHMgYSBieXRlIHdob3NlIHZhbHVlIGlzIGlnbm9yZWQgaW4gdGhpcyBjb250ZXh0IGFuZAotKzs7IHZ2LCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSwgaG9sZHMgdGhlIGJ5dGUgdmFsdWUgdGhhdCBpcyB0bwotKzs7IGJlIHRlc3RlZCBmb3IgbWVtYmVyc2hpcCB3aXRoaW4gdGhlIHNldCBzcGVjaWZpZWQgYnkgb3BlcmFuZCAyLgotKzs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDIgYXJlIG9yZ2FuaXplZCBhcyBlMDplMTplMjplMzplNDplNTplNjplNy4KLSs7OwotKzs7IFNldCBiaXQgMSAodGhlIEdUIGJpdCwgMHg0KSBvZiBDUiByZWdpc3RlciBvcGVyYW5kIDAgdG8gMSBpZiB2dgotKzs7IGVxdWFscyBvbmUgb2YgdGhlIHZhbHVlcyBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgb3IgZTcuICBPdGhlcndpc2UsCi0rOzsgc2V0IHRoZSBHVCBiaXQgdG8gemVyby4gIFRoZSBvdGhlciAzIGJpdHMgb2YgdGhlIHRhcmdldCBDUiByZWdpc3RlcgotKzs7IGFyZSBhbGwgc2V0IHRvIDAuCi0rKGRlZmluZV9pbnNuICIqY21wZXFiX2ludGVybmFsIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Q0MgMCAiY2NfcmVnX29wZXJhbmQiICI9eSIpCi0rCSAodW5zcGVjOkNDIFsobWF0Y2hfb3BlcmFuZDpTSSAxICJncGNfcmVnX29wZXJhbmQiICJyIikKLSsJCSAgICAgKG1hdGNoX29wZXJhbmQ6REkgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiciIpXQotKwkgIFVOU1BFQ19DTVBFUUIpKV0KLSsgICJUQVJHRVRfUDlfTUlTQyAmJiBUQVJHRVRfNjRCSVQiCi0rICAiY21wZXFiICUwLCUxLCUyIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgImxvZ2ljYWwiKV0pCi0gDAotIAotIChpbmNsdWRlICJzeW5jLm1kIikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yL0NWRS0yMDE5LTE1ODQ3XzIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi9DVkUtMjAxOS0xNTg0N18yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTdhODNjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yL0NWRS0yMDE5LTE1ODQ3XzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi1Gcm9tIDg3YmM3ODRhN2NhM2E0MzE4MmY3MjcyMjQxNTk3YTUwZDc0OTEzNDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBzZWdoZXIgPHNlZ2hlckAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBGcmksIDMwIEF1ZyAyMDE5IDEzOjUxOjI2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIAlCYWNrcG9ydCBmcm9tIHRydW5rIAkyMDE5LTA4LTIyICBTZWdoZXIgQm9lc3Nlbmtvb2wKLSAgPHNlZ2hlckBrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi0JUFIgdGFyZ2V0LzkxNDgxCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAodW5zcGVjKTogRGVsZXRlIFVOU1BFQ19EQVJOLCBVTlNQRUNfREFSTl8zMiwKLQlhbmQgVU5TUEVDX0RBUk5fUkFXLgotCSh1bnNwZWN2KTogTmV3IGVudW1lcmF0b3IgdmFsdWVzIFVOU1BFQ1ZfREFSTiwgVU5TUEVDVl9EQVJOXzMyLCBhbmQKLQlVTlNQRUNWX0RBUk5fUkFXLgotCShkYXJuXzMyKTogVXNlIGFuIHVuc3BlY192b2xhdGlsZSwgYW5kIFVOU1BFQ1ZfREFSTl8zMi4KLQkoZGFybl9yYXcpOiBVc2UgYW4gdW5zcGVjX3ZvbGF0aWxlLCBhbmQgVU5TUEVDVl9EQVJOX1JBVy4KLQkoZGFybik6IFVzZSBhbiB1bnNwZWNfdm9sYXRpbGUsIGFuZCBVTlNQRUNWX0RBUk4uCi0KLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvYnJhbmNoZXMvZ2NjLTktYnJhbmNoQDI3NTE3NSAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxOS0xNTg0NyBwMgotQWZmZWN0cyA8PSA5LjIuMAotRHJvcHBlZCBDaGFuZ2Vsb2cgY2hhbmdlcwotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5tZCB8IDEyICsrKysrKy0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdjYy05LjIuMC9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAubWQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtOS4yLjAub3JpZy9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAubWQKLSsrKyBnY2MtOS4yLjAvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm1kCi1AQCAtMTM3LDkgKzEzNyw2IEBACi0gICAgVU5TUEVDX0xTUQotICAgIFVOU1BFQ19GVVNJT05fR1BSCi0gICAgVU5TUEVDX1NUQUNLX0NIRUNLCi0tICAgVU5TUEVDX0RBUk4KLS0gICBVTlNQRUNfREFSTl8zMgotLSAgIFVOU1BFQ19EQVJOX1JBVwotICAgIFVOU1BFQ19DTVBSQgotICAgIFVOU1BFQ19DTVBSQjIKLSAgICBVTlNQRUNfQ01QRVFCCi1AQCAtMTcwLDYgKzE2Nyw5IEBACi0gICAgVU5TUEVDVl9FSF9SUgkJOyBlaF9yZWdfcmVzdG9yZQotICAgIFVOU1BFQ1ZfSVNZTkMJCTsgaXN5bmMgaW5zdHJ1Y3Rpb24KLSAgICBVTlNQRUNWX01GVEIJCQk7IG1vdmUgZnJvbSB0aW1lIGJhc2UKLSsgICBVTlNQRUNWX0RBUk4JCQk7IGRhcm4gMSAoZGVsaXZlciBhIHJhbmRvbSBudW1iZXIpCi0rICAgVU5TUEVDVl9EQVJOXzMyCQk7IGRhcm4gMgotKyAgIFVOU1BFQ1ZfREFSTl9SQVcJCTsgZGFybiAwCi0gICAgVU5TUEVDVl9OTEdSCQkJOyBub24tbG9jYWwgZ290byByZWNlaXZlcgotICAgIFVOU1BFQ1ZfTUZGUwkJCTsgTW92ZSBmcm9tIEZQU0NSCi0gICAgVU5TUEVDVl9NRkZTTAkJOyBNb3ZlIGZyb20gRlBTQ1IgbGlnaHQgaW5zdHJ1Y3Rpb24gdmVyc2lvbgotQEAgLTE0MzMzLDIxICsxNDMzMywyMSBAQAotIAotIChkZWZpbmVfaW5zbiAiZGFybl8zMiIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCi0tICAgICAgICAodW5zcGVjOlNJIFsoY29uc3RfaW50IDApXSBVTlNQRUNfREFSTl8zMikpXQotKyAgICAgICAgKHVuc3BlY192b2xhdGlsZTpTSSBbKGNvbnN0X2ludCAwKV0gVU5TUEVDVl9EQVJOXzMyKSldCi0gICAiVEFSR0VUX1A5X01JU0MiCi0gICAiZGFybiAlMCwwIgotICAgWyhzZXRfYXR0ciAidHlwZSIgImludGVnZXIiKV0pCi0gCi0gKGRlZmluZV9pbnNuICJkYXJuX3JhdyIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCi0tICAgICAgICAodW5zcGVjOkRJIFsoY29uc3RfaW50IDApXSBVTlNQRUNfREFSTl9SQVcpKV0KLSsgICAgICAgICh1bnNwZWNfdm9sYXRpbGU6REkgWyhjb25zdF9pbnQgMCldIFVOU1BFQ1ZfREFSTl9SQVcpKV0KLSAgICJUQVJHRVRfUDlfTUlTQyAmJiBUQVJHRVRfNjRCSVQiCi0gICAiZGFybiAlMCwyIgotICAgWyhzZXRfYXR0ciAidHlwZSIgImludGVnZXIiKV0pCi0gCi0gKGRlZmluZV9pbnNuICJkYXJuIgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1yIikKLS0gICAgICAgICh1bnNwZWM6REkgWyhjb25zdF9pbnQgMCldIFVOU1BFQ19EQVJOKSldCi0rICAgICAgICAodW5zcGVjX3ZvbGF0aWxlOkRJIFsoY29uc3RfaW50IDApXSBVTlNQRUNWX0RBUk4pKV0KLSAgICJUQVJHRVRfUDlfTUlTQyAmJiBUQVJHRVRfNjRCSVQiCi0gICAiZGFybiAlMCwxIgotICAgWyhzZXRfYXR0ciAidHlwZSIgImludGVnZXIiKV0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi9DVkUtMjAxOS0xNTg0N18zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvQ1ZFLTIwMTktMTU4NDdfMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE3MTMwYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi9DVkUtMjAxOS0xNTg0N18zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotRnJvbSBkYzRjOGRkOWRiZTcwNzQwZWM3YTY4NGIwZjM1NjIwMjQ5ZmIwMzZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogc2VnaGVyIDxzZWdoZXJAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogRnJpLCAzMCBBdWcgMjAxOSAxMzo1MzoxMSArMDAwMAotU3ViamVjdDogW1BBVENIXSAJQmFja3BvcnQgZnJvbSB0cnVuayAJMjAxOS0wOC0yMyAgU2VnaGVyIEJvZXNzZW5rb29sCi0gIDxzZWdoZXJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotZ2NjL3Rlc3RzdWl0ZS8KLQlQUiB0YXJnZXQvOTE0ODEKLQkqIGdjYy50YXJnZXQvcG93ZXJwYy9kYXJuLTMuYzogTmV3IHRlc3RjYXNlLgotCi0KLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL2JyYW5jaGVzL2djYy05LWJyYW5jaEAyNzUxNzYgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTktMTU4NDcgcDMKLUFmZmVjdHMgPD0gOS4yLjAKLURyb3BwZWQgQ2hhbmdlbG9nIGNoYW5nZXMKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICB8ICA2ICsrKysrKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL2Rhcm4tMy5jIHwgMTYgKysrKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9kYXJuLTMuYwotCi1JbmRleDogZ2NjLTkuMi4wL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL2Rhcm4tMy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgZ2NjLTkuMi4wL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL2Rhcm4tMy5jCi1AQCAtMCwwICsxLDE2IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgcG93ZXJwYyotKi0qIH0gfSB9ICovCi0rLyogeyBkZy1za2lwLWlmICIiIHsgcG93ZXJwYyotKi1haXgqIH0gfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZGVqYWdudS1jcHU9cG93ZXI5IiB9ICovCi0rCi0rc3RhdGljIGludCBkYXJuMzIodm9pZCkgeyByZXR1cm4gX19idWlsdGluX2Rhcm5fMzIoKTsgfQotKwotK2ludCBmb3VyKHZvaWQpCi0rewotKwlpbnQgc3VtID0gMDsKLSsJaW50IGk7Ci0rCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspCi0rCQlzdW0gKz0gZGFybjMyKCk7Ci0rCXJldHVybiBzdW07Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7KD9uKVxtZGFybiAuKiwwXE19IDQgfSB9ICovCi1JbmRleDogZ2NjLTkuMi4wL2djYy90ZXN0c3VpdGUvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTkuMi4wLm9yaWcvZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKLSsrKyBnY2MtOS4yLjAvZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTEgQEAKLSsyMDE5LTA4LTMwICBTZWdoZXIgQm9lc3Nlbmtvb2wgIDxzZWdoZXJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSsKLSsJQmFja3BvcnQgZnJvbSB0cnVuawotKwkyMDE5LTA4LTIzICBTZWdoZXIgQm9lc3Nlbmtvb2wgIDxzZWdoZXJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSsKLSsJUFIgdGFyZ2V0LzkxNDgxCi0rCSogZ2NjLnRhcmdldC9wb3dlcnBjL2Rhcm4tMy5jOiBOZXcgdGVzdGNhc2UuCi0rCi0gMjAxOS0wOC0xMiAgUmVsZWFzZSBNYW5hZ2VyCi0gCi0gCSogR0NDIDkuMi4wIHJlbGVhc2VkLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwNDExMDcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy5pbmMKQEAgLTAsMCArMSwxMTkgQEAKK3JlcXVpcmUgZ2NjLWNvbW1vbi5pbmMKKworIyBUaGlyZCBkaWdpdCBpbiBQViBzaG91bGQgYmUgaW5jcmVtZW50ZWQgYWZ0ZXIgYSBtaW5vciByZWxlYXNlCisKK1BWID0gIjkuMy4wIgorCisjIEJJTlYgc2hvdWxkIGJlIGluY3JlbWVudGVkIHRvIGEgcmV2aXNpb24gYWZ0ZXIgYSBtaW5vciBnY2MgcmVsZWFzZQorCitCSU5WID0gIjkuMy4wIgorCitGSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9nY2MtOS4zOiR7RklMRV9ESVJOQU1FfS9nY2MtOS4zL2JhY2twb3J0OiIKKworREVQRU5EUyA9KyAibXBmciBnbXAgbGlibXBjIHpsaWIgZmxleC1uYXRpdmUiCitOQVRJVkVERVBTID0gIm1wZnItbmF0aXZlIGdtcC1uYXRpdmUgbGlibXBjLW5hdGl2ZSB6bGliLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKKworTElDRU5TRSA9ICJHUEwtMy4wLXdpdGgtR0NDLWV4Y2VwdGlvbiAmIEdQTHYzIgorCitMSUNfRklMRVNfQ0hLU1VNID0gIlwKKyAgICBmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAorICAgIGZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKKyAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKKyAgICBmaWxlOi8vQ09QWUlORy5SVU5USU1FO21kNT1mZTYwZDg3MDQ4NTY3ZDRmZThjOGEwZWQyNDQ4YmNjOCBcCisiCisKK0JBU0VVUkkgPz0gIiR7R05VX01JUlJPUn0vZ2NjL2djYy0ke1BWfS9nY2MtJHtQVn0udGFyLnh6IgorI1JFTEVBU0UgPz0gIjVhNWNhMmQiCisjQkFTRVVSSSA/PSAiaHR0cHM6Ly9yZXBvLm9yLmN6L29mZmljaWFsLWdjYy5naXQvc25hcHNob3QvJHtSRUxFQVNFfS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT1nY2MtJHtSRUxFQVNFfS50YXIuZ3oiCitTUkNfVVJJID0gIlwKKyAgICAgICAgICAgJHtCQVNFVVJJfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1vcHRpb25hbC1saWJzdGRjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTItZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTMtRGlzYWJsZS1zZHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNC1saWJ0b29sLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTUtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE2LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNy1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTgtZXhwb3J0LUNQUC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE5LUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjAtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIxLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMi1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjMtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjQtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjUtaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI2LVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNy1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI4LW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjktQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMwLWxkYmwxMjgtY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzEtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzItbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMzLXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM0LWZpeC1zZWdtZW50YXRpb24tZmF1bHQtaW4tcHJlY29tcGlsZWQtaGVhZGVyLWdlbmVyYXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNS1GaXgtZm9yLXRlc3RzdWl0ZS1mYWlsdXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzYtUmUtaW50cm9kdWNlLXNwZS1jb21tYW5kbGluZS1vcHRpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzctQ1ZFLTIwMTktMTQyNTAtQ2hlY2stemVyby12YWx1ZS1pbi1zaW1wbGVfb2JqZWN0X2VsZi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM4LWdlbnR5cGVzLWdlbm1vZGVzLURvLW5vdC11c2UtX19MSU5FX18tZm9yLW1haW50YWluaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzOS1wcm9jZXNzX2FsdF9vcGVyYW5kcy1Eb24tdC1tYXRjaC11c2VyLWRlZmluZWQtcmVncy1vLnBhdGNoIFwKKyIKK1MgPSAiJHtUTVBESVJ9L3dvcmstc2hhcmVkL2djYy0ke1BWfS0ke1BSfS9nY2MtJHtQVn0iCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzFlMTk3ODY3NjExZjYwNTRhYTExMTliMTNhMGMwYWJhYzEyODM0NzY1ZmUyZDgxZjM1YWM1N2Y4NGY3NDJkMSIKKyMgRm9yIGRldiByZWxlYXNlIHNuYXBzaG90dGluZworI1MgPSAiJHtUTVBESVJ9L3dvcmstc2hhcmVkL2djYy0ke1BWfS0ke1BSfS9vZmZpY2lhbC1nY2MtJHtSRUxFQVNFfSIKKyNCID0gIiR7V09SS0RJUn0vZ2NjLSR7UFZ9L2J1aWxkLiR7SE9TVF9TWVN9LiR7VEFSR0VUX1NZU30iCisKKyMgTGFuZ3VhZ2UgT3ZlcnJpZGVzCitGT1JUUkFOID0gIiIKK0pBVkEgPSAiIgorCitMVE8gPSAiLS1lbmFibGUtbHRvIgorU1NQID89ICItLWRpc2FibGUtbGlic3NwIgorU1NQX21pbmd3MzIgPSAiLS1lbmFibGUtbGlic3NwIgorCitFWFRSQV9PRUNPTkZfQkFTRSA9ICJcCisgICAgJHtMVE99IFwKKyAgICAke1NTUH0gXAorICAgIC0tZW5hYmxlLWxpYml0bSBcCisgICAgLS1kaXNhYmxlLWJvb3RzdHJhcCBcCisgICAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAorICAgIC0td2l0aC1zeXN0ZW0temxpYiBcCisgICAgJHtAJy0td2l0aC1saW5rZXItaGFzaC1zdHlsZT0ke0xJTktFUl9IQVNIX1NUWUxFfScgaWYgJyR7TElOS0VSX0hBU0hfU1RZTEV9JyBlbHNlICcnfSBcCisgICAgLS1lbmFibGUtbGlua2VyLWJ1aWxkLWlkIFwKKyAgICAtLXdpdGgtcHBsPW5vIFwKKyAgICAtLXdpdGgtY2xvb2c9bm8gXAorICAgIC0tZW5hYmxlLWNoZWNraW5nPXJlbGVhc2UgXAorICAgIC0tZW5hYmxlLWNoZWFkZXJzPWNfZ2xvYmFsIFwKKyAgICAtLXdpdGhvdXQtaXNsIFwKKyIKKworRVhUUkFfT0VDT05GX0lOSVRJQUwgPSAiXAorICAgIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKKyAgICAtLWRpc2FibGUtbGliZ29tcCBcCisgICAgLS1kaXNhYmxlLWxpYml0bSBcCisgICAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoIFwKKyAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAorICAgIC0tZGlzYWJsZS1sdG8gXAorICAgIC0tZGlzYWJsZS1wbHVnaW4gXAorICAgIC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZCBcCisgICAgLS1lbmFibGUtZGVjaW1hbC1mbG9hdD1ubyBcCisgICAgLS13aXRob3V0LWlzbCBcCisgICAgLS1kaXNhYmxlLWxpYnNzcCBcCisiCisKK0VYVFJBX09FQ09ORl9QQVRIUyA9ICJcCisgICAgLS13aXRoLWd4eC1pbmNsdWRlLWRpcj0vbm90L2V4aXN0e3RhcmdldF9pbmNsdWRlZGlyfS9jKysvJHtCSU5WfSBcCisgICAgLS13aXRoLXN5c3Jvb3Q9L25vdC9leGlzdCBcCisgICAgLS13aXRoLWJ1aWxkLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IFwKKyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDkyMjJkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gMDJiMTc4OWRiYmIxODQ3MjY3ODJiNTAzOGE0ZGQ5NjUxNWVjNzkwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjM3OjExICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDEvMzldIGdjYy00LjMuMTogQVJDSF9GTEFHU19GT1JfVEFSR0VUCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCistLS0KKyBjb25maWd1cmUgICAgfCAyICstCisgY29uZmlndXJlLmFjIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCBhYmQ5M2E5OTBhOS4uYjEyMTA4OGQ3NzggMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTc2MDMsNyArNzYwMyw3IEBAIGZpCisgIyBmb3IgdGFyZ2V0X2FsaWFzIGFuZCBnY2MgZG9lc24ndCBtYW5hZ2UgaXQgY29uc2lzdGVudGx5LgorIHRhcmdldF9jb25maWdhcmdzPSItLWNhY2hlLWZpbGU9Li9jb25maWcuY2FjaGUgJHt0YXJnZXRfY29uZmlnYXJnc30iCisgCistRkxBR1NfRk9SX1RBUkdFVD0KKytGTEFHU19GT1JfVEFSR0VUPSIkQVJDSF9GTEFHU19GT1JfVEFSR0VUIgorIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2RpcnMgIiBpbgorICAqIiBuZXdsaWIgIiopCisgICBjYXNlICIgJHRhcmdldF9jb25maWdhcmdzICIgaW4KK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDlkYjRmZDE0YWEyLi5hYWQ5M2M0ZDE4MyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzExOSw3ICszMTE5LDcgQEAgZmkKKyAjIGZvciB0YXJnZXRfYWxpYXMgYW5kIGdjYyBkb2Vzbid0IG1hbmFnZSBpdCBjb25zaXN0ZW50bHkuCisgdGFyZ2V0X2NvbmZpZ2FyZ3M9Ii0tY2FjaGUtZmlsZT0uL2NvbmZpZy5jYWNoZSAke3RhcmdldF9jb25maWdhcmdzfSIKKyAKKy1GTEFHU19GT1JfVEFSR0VUPQorK0ZMQUdTX0ZPUl9UQVJHRVQ9IiRBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQiCisgY2FzZSAiICR0YXJnZXRfY29uZmlnZGlycyAiIGluCisgICoiIG5ld2xpYiAiKikKKyAgIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2FyZ3MgIiBpbgorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwMi1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDItZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQyN2VlNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDItZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2gKQEAgLTAsMCArMSwyMDMgQEAKK0Zyb20gNTM2OGNkMDI5M2NlNTBhNjljZWQ2ZTRiMjViYTZjOGQ4ZTAxNDI1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjU5OjAwICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDIvMzldIGdjYzogcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworCitBZGQgL3N3L2luY2x1ZGUgYW5kIC9vcHQvaW5jbHVkZSBiYXNlZCBvbiB0aGUgb3JpZ2luYWwKK3plY2tlLW5vLWhvc3QtaW5jbHVkZXMucGF0Y2ggcGF0Y2guICBUaGUgb3JpZ2luYWwgcGF0Y2ggY2hlY2tlZCBmb3IKKy91c3IvaW5jbHVkZSwgL3N3L2luY2x1ZGUgYW5kIC9vcHQvaW5jbHVkZSBhbmQgdGhlbiB0cmlnZ2VyZWQgYSBmYWlsdXJlIGFuZAorYWJvcnRlZC4KKworSW5zdGVhZCwgd2UgYWRkIHRoZSB0d28gbWlzc2luZyBpdGVtcyB0byB0aGUgY3VycmVudCBzY2FuLiAgSWYgdGhlIHVzZXIKK3dhbnRzIHRoaXMgdG8gYmUgYSBmYWlsdXJlLCB0aGV5IGNhbiBhZGQgIi1XZXJyb3I9cG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyIuCisKK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgZ2NjL2NvbW1vbi5vcHQgICAgICB8ICA0ICsrKysKKyBnY2MvY29uZmlnLmluICAgICAgIHwgIDYgKysrKysrCisgZ2NjL2NvbmZpZ3VyZSAgICAgICB8IDE2ICsrKysrKysrKysrKysrKysKKyBnY2MvY29uZmlndXJlLmFjICAgIHwgMTAgKysrKysrKysrKworIGdjYy9kb2MvaW52b2tlLnRleGkgfCAgOSArKysrKysrKysKKyBnY2MvZ2NjLmMgICAgICAgICAgIHwgIDIgKysKKyBnY2MvaW5jcGF0aC5jICAgICAgIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCisgNyBmaWxlcyBjaGFuZ2VkLCA2OCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nY2MvY29tbW9uLm9wdCBiL2djYy9jb21tb24ub3B0CitpbmRleCBkMzQyYzRmMzc0OS4uYzY0ZmQ0YTZjNTAgMTAwNjQ0CistLS0gYS9nY2MvY29tbW9uLm9wdAorKysrIGIvZ2NjL2NvbW1vbi5vcHQKK0BAIC02ODQsNiArNjg0LDEwIEBAIFdyZXR1cm4tbG9jYWwtYWRkcgorIENvbW1vbiBWYXIod2Fybl9yZXR1cm5fbG9jYWxfYWRkcikgSW5pdCgxKSBXYXJuaW5nCisgV2FybiBhYm91dCByZXR1cm5pbmcgYSBwb2ludGVyL3JlZmVyZW5jZSB0byBhIGxvY2FsIG9yIHRlbXBvcmFyeSB2YXJpYWJsZS4KKyAKKytXcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0NvbW1vbiBWYXIoZmxhZ19wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKSBJbml0KDEpIFdhcm5pbmcKKytXYXJuIGZvciAtSSBhbmQgLUwgb3B0aW9ucyB1c2luZyBzeXN0ZW0gZGlyZWN0b3JpZXMgaWYgY3Jvc3MgY29tcGlsaW5nCisrCisgV3NoYWRvdworIENvbW1vbiBWYXIod2Fybl9zaGFkb3cpIFdhcm5pbmcKKyBXYXJuIHdoZW4gb25lIHZhcmlhYmxlIHNoYWRvd3MgYW5vdGhlci4gIFNhbWUgYXMgLVdzaGFkb3c9Z2xvYmFsLgorZGlmZiAtLWdpdCBhL2djYy9jb25maWcuaW4gYi9nY2MvY29uZmlnLmluCitpbmRleCBhNzE4Y2VhZjNkYS4uNTcxMzM0MmVmYjEgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnLmluCisrKysgYi9nY2MvY29uZmlnLmluCitAQCAtMjAwLDYgKzIwMCwxMiBAQAorICNlbmRpZgorIAorIAorKy8qIERlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXMgKi8KKysjaWZuZGVmIFVTRURfRk9SX1RBUkdFVAorKyN1bmRlZiBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUworKyNlbmRpZgorKworKworIC8qIERlZmluZSBpZiB5b3Ugd2FudCBhbGwgb3BlcmF0aW9ucyBvbiBSVEwgKHRoZSBiYXNpYyBkYXRhIHN0cnVjdHVyZSBvZiB0aGUKKyAgICBvcHRpbWl6ZXIgYW5kIGJhY2sgZW5kKSB0byBiZSBjaGVja2VkIGZvciBkeW5hbWljIHR5cGUgc2FmZXR5IGF0IHJ1bnRpbWUuCisgICAgVGhpcyBpcyBxdWl0ZSBleHBlbnNpdmUuICovCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IGEwNjViYTIzNzI4Li4yZTI2ZGQzMzMxMCAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC05OTYsNiArOTk2LDcgQEAgd2l0aF9zeXN0ZW1femxpYgorIGVuYWJsZV9tYWludGFpbmVyX21vZGUKKyBlbmFibGVfbGlua19tdXRleAorIGVuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicworK2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzCisgZW5hYmxlX3BsdWdpbgorIGVuYWJsZV9ob3N0X3NoYXJlZAorIGVuYWJsZV9saWJxdWFkbWF0aF9zdXBwb3J0CitAQCAtMTc0OSw2ICsxNzUwLDggQEAgT3B0aW9uYWwgRmVhdHVyZXM6CisgICAtLWVuYWJsZS12ZXJzaW9uLXNwZWNpZmljLXJ1bnRpbWUtbGlicworICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSB0aGF0IHJ1bnRpbWUgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgY29tcGlsZXItc3BlY2lmaWMgZGlyZWN0b3J5CisrICAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXMKKyAgIC0tZW5hYmxlLXBsdWdpbiAgICAgICAgIGVuYWJsZSBwbHVnaW4gc3VwcG9ydAorICAgLS1lbmFibGUtaG9zdC1zaGFyZWQgICAgYnVpbGQgaG9zdCBjb2RlIGFzIHNoYXJlZCBsaWJyYXJpZXMKKyAgIC0tZGlzYWJsZS1saWJxdWFkbWF0aC1zdXBwb3J0CitAQCAtMjk3NTMsNiArMjk3NTYsMTkgQEAgaWYgdGVzdCAiJHtlbmFibGVfdmVyc2lvbl9zcGVjaWZpY19ydW50aW1lX2xpYnMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorIGZpCisgCisgCisrIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgZW5hYmxldmFsPSRlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllczsKKytlbHNlCisrICBlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ubworK2ZpCisrCisraWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgorKworKyRhc19lY2hvICIjZGVmaW5lIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTIDEiID4+Y29uZmRlZnMuaAorKworK2ZpCisrCisgIyBTdWJzdGl0dXRlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCisgCisgCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKK2luZGV4IDNhNzI1MTEwMmVmLi4xMmQxZDA0ZTY0NSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrKyBiL2djYy9jb25maWd1cmUuYWMKK0BAIC02MzgwLDYgKzYzODAsMTYgQEAgQUNfQVJHX0VOQUJMRSh2ZXJzaW9uLXNwZWNpZmljLXJ1bnRpbWUtbGlicywKKyAgICAgICAgICAgICAgICAgW3NwZWNpZnkgdGhhdCBydW50aW1lIGxpYnJhcmllcyBzaG91bGQgYmUKKyAgICAgICAgICAgICAgICAgIGluc3RhbGxlZCBpbiBhIGNvbXBpbGVyLXNwZWNpZmljIGRpcmVjdG9yeV0pXSkKKyAKKytBQ19BUkdfRU5BQkxFKFtwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKKysgICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzXSksLAorKyAgICAgICAgICAgICBbZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm9dKQorK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KKysgIEFDX0RFRklORShbRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVNdLAorKyAgICAgICAgICAgWzFdLAorKyAgICAgICAgICAgW0RlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXNdKQorK2ZpCisrCisgIyBTdWJzdGl0dXRlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCisgQUNfU1VCU1Qoc3ViZGlycykKKyBBQ19TVUJTVChzcmNkaXIpCitkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKK2luZGV4IDBhYjZjOWM2NDQ5Li5jM2QzZDUxYTI4ZiAxMDA2NDQKKy0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKKysrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKK0BAIC0zMzMsNiArMzMzLDcgQEAgT2JqZWN0aXZlLUMgYW5kIE9iamVjdGl2ZS1DKysgRGlhbGVjdHN9LgorIC1XcGFja2VkICAtV3BhY2tlZC1iaXRmaWVsZC1jb21wYXQgLVdwYWNrZWQtbm90LWFsaWduZWQgIC1XcGFkZGVkIEBnb2wKKyAtV3BhcmVudGhlc2VzICAtV25vLXBlZGFudGljLW1zLWZvcm1hdCBAZ29sCisgLVdwbGFjZW1lbnQtbmV3ICAtV3BsYWNlbWVudC1uZXc9QHZhcntufSBAZ29sCisrLVduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIEBnb2wKKyAtV3BvaW50ZXItYXJpdGggIC1XcG9pbnRlci1jb21wYXJlICAtV25vLXBvaW50ZXItdG8taW50LWNhc3QgQGdvbAorIC1Xbm8tcHJhZ21hcyAgLVduby1wcmlvLWN0b3ItZHRvciAgLVdyZWR1bmRhbnQtZGVjbHMgQGdvbAorIC1XcmVzdHJpY3QgIC1Xbm8tcmV0dXJuLWxvY2FsLWFkZHIgQGdvbAorQEAgLTYyOTAsNiArNjI5MSwxNCBAQCBtYWRlIHVwIG9mIGRhdGEgb25seSBhbmQgdGh1cyByZXF1aXJlcyBubyBzcGVjaWFsIHRyZWF0bWVudC4gIEJ1dCwgZm9yCisgbW9zdCB0YXJnZXRzLCBpdCBpcyBtYWRlIHVwIG9mIGNvZGUgYW5kIHRodXMgcmVxdWlyZXMgdGhlIHN0YWNrIHRvIGJlCisgbWFkZSBleGVjdXRhYmxlIGluIG9yZGVyIGZvciB0aGUgcHJvZ3JhbSB0byB3b3JrIHByb3Blcmx5LgorIAorK0BpdGVtIC1Xbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0BvcGluZGV4IFduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrRG8gbm90IHdhcm4gZm9yIEBvcHRpb257LUl9IG9yIEBvcHRpb257LUx9IG9wdGlvbnMgdXNpbmcgc3lzdGVtCisrZGlyZWN0b3JpZXMgc3VjaCBhcyBAZmlsZXsvdXNyL2luY2x1ZGV9IHdoZW4gY3Jvc3MgY29tcGlsaW5nLiAgVGhpcworK29wdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIGluIGNocm9vdCBlbnZpcm9ubWVudHMgd2hlbiBzdWNoCisrZGlyZWN0b3JpZXMgY29udGFpbiB0aGUgY29ycmVjdCBoZWFkZXJzIGFuZCBsaWJyYXJpZXMgZm9yIHRoZSB0YXJnZXQKKytzeXN0ZW0gcmF0aGVyIHRoYW4gdGhlIGhvc3QuCisrCisgQGl0ZW0gLVdmbG9hdC1lcXVhbAorIEBvcGluZGV4IFdmbG9hdC1lcXVhbAorIEBvcGluZGV4IFduby1mbG9hdC1lcXVhbAorZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYworaW5kZXggNGY1Nzc2NWIwMTIuLmEyNjAxYTZiYjA2IDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC0xMDQyLDYgKzEwNDIsOCBAQCBwcm9wZXIgcG9zaXRpb24gYW1vbmcgdGhlIG90aGVyIG91dHB1dCBmaWxlcy4gICovCisgICAgIiV7ZnVzZS1sZD0qOi1mdXNlLWxkPSUqfSAiIExJTktfQ09NUFJFU1NfREVCVUdfU1BFQyBcCisgICAgIiVYICV7byp9ICV7ZSp9ICV7Tn0gJXtufSAle3J9XAorICAgICAle3N9ICV7dH0gJXt1Kn0gJXt6fSAle1p9ICV7IW5vc3RkbGliOiV7IXI6JXshbm9zdGFydGZpbGVzOiVTfX19IFwKKysgICAgJXtXbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllczotLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXN9IFwKKysgICAgJXtXZXJyb3I9cG9pc29uLXN5c3RlbS1kaXJlY3RvcmllczotLWVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXN9IFwKKyAgICAgJXtzdGF0aWN8bm8tcGllfHN0YXRpYy1waWU6fSAlQHtMKn0gJShtZndyYXApICUobGlua19saWJnY2MpICIgXAorICAgICBWVEFCTEVfVkVSSUZJQ0FUSU9OX1NQRUMgIiAiIFNBTklUSVpFUl9FQVJMWV9TUEVDICIgJW8gIiIgXAorICAgICAle2ZvcGVuYWNjfGZvcGVubXB8JTpndCgle2Z0cmVlLXBhcmFsbGVsaXplLWxvb3BzPSo6JSp9IDEpOlwKK2RpZmYgLS1naXQgYS9nY2MvaW5jcGF0aC5jIGIvZ2NjL2luY3BhdGguYworaW5kZXggYmNiZTIwODI5MDUuLjU3NTIyOThiYmYyIDEwMDY0NAorLS0tIGEvZ2NjL2luY3BhdGguYworKysrIGIvZ2NjL2luY3BhdGguYworQEAgLTI2LDYgKzI2LDcgQEAKKyAjaW5jbHVkZSAiaW50bC5oIgorICNpbmNsdWRlICJpbmNwYXRoLmgiCisgI2luY2x1ZGUgImNwcGRlZmF1bHQuaCIKKysjaW5jbHVkZSAiZGlhZ25vc3RpYy1jb3JlLmgiCisgCisgLyogTWljcm9zb2Z0IFdpbmRvd3MgZG9lcyBub3QgbmF0aXZlbHkgc3VwcG9ydCBpbm9kZXMuCisgICAgVk1TIGhhcyBub24tbnVtZXJpYyBpbm9kZXMuICAqLworQEAgLTM5Myw2ICszOTQsMjYgQEAgbWVyZ2VfaW5jbHVkZV9jaGFpbnMgKGNvbnN0IGNoYXIgKnN5c3Jvb3QsIGNwcF9yZWFkZXIgKnBmaWxlLCBpbnQgdmVyYm9zZSkKKyAJfQorICAgICAgIGZwcmludGYgKHN0ZGVyciwgXygiRW5kIG9mIHNlYXJjaCBsaXN0LlxuIikpOworICAgICB9CisrCisrI2lmZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCisrICBpZiAoZmxhZ19wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKQorKyAgICB7CisrICAgICAgIHN0cnVjdCBjcHBfZGlyICpwOworKworKyAgICAgICBmb3IgKHAgPSBoZWFkc1tJTkNfUVVPVEVdOyBwOyBwID0gcC0+bmV4dCkKKysgICAgICAgICB7CisrICAgICAgICAgIGlmICgoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2luY2x1ZGUiLCAxMikpCisrICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2xvY2FsL2luY2x1ZGUiLCAxOCkpCisrICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL1gxMVI2L2luY2x1ZGUiLCAxOCkpCisrICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvc3cvaW5jbHVkZSIsIDExKSkKKysgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi9vcHQvaW5jbHVkZSIsIDEyKSkpCisrICAgICAgICAgICAgd2FybmluZyAoT1BUX1dwb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLAorKyAgICAgICAgICAgICAgICAgICAgICJpbmNsdWRlIGxvY2F0aW9uIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKKysgICAgICAgICAgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb24iLAorKyAgICAgICAgICAgICAgICAgICAgIHAtPm5hbWUpOworKyAgICAgICAgIH0KKysgICAgfQorKyNlbmRpZgorIH0KKyAKKyAvKiBVc2UgZ2l2ZW4gLUkgcGF0aHMgZm9yICNpbmNsdWRlICIuLi4iIGJ1dCBub3QgI2luY2x1ZGUgPC4uLj4sIGFuZAorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwMy1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDMtZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNlYzViYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDMtZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKQEAgLTAsMCArMSw3MyBAQAorRnJvbSBkZjkwZGJkYmE3YTg1YzIwYmFkOTVkZTcxNTI1ZjBmNDAwYTg0OWQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MDg6MzEgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwMy8zOV0gZ2NjLTQuMy4zOiBTWVNST09UX0NGTEFHU19GT1JfVEFSR0VUCisKK0JlZm9yZSBjb21taXR0aW5nLCBJIG5vdGljZWQgdGhhdCBQUi8zMjE2MSB3YXMgbWFya2VkIGFzIGEgZHVwIG9mIFBSLzMyMDA5LCBidXQgbXkgcHJldmlvdXMgcGF0Y2ggZGlkIG5vdCBmaXggaXQuCisKK1RoaXMgYWx0ZXJuYXRpdmUgcGF0Y2ggaXMgYmV0dGVyIGJlY2F1c2UgaXQgbGV0cyB5b3UganVzdCB1c2UgQ0ZMQUdTX0ZPUl9UQVJHRVQgdG8gc2V0IHRoZSBjb21waWxhdGlvbiBmbGFncyBmb3IgbGliZ2NjLiBTaW5jZSBib290c3RyYXBwZWQgdGFyZ2V0IGxpYnJhcmllcyBhcmUgbmV2ZXIgY29tcGlsZWQgd2l0aCB0aGUgbmF0aXZlIGNvbXBpbGVyLCBpdCBtYWtlcyBsaXR0bGUgc2Vuc2UgdG8gdXNlIGRpZmZlcmVudCBmbGFncyBmb3Igc3RhZ2UxIGFuZCBsYXRlciBzdGFnZXMuIEFuZCBpdCBhbHNvIG1ha2VzIGxpdHRsZSBzZW5zZSB0byB1c2UgYSBkaWZmZXJlbnQgdmFyaWFibGUgdGhhbiBDRkxBR1NfRk9SX1RBUkdFVC4KKworT3RoZXIgY2hhbmdlcyBJIGhhZCB0byBkbyBpbmNsdWRlOgorCistIG1vdmluZyB0aGUgY3JlYXRpb24gb2YgZGVmYXVsdCBDRkxBR1NfRk9SX1RBUkdFVCBmcm9tIE1ha2VmaWxlLmFtIHRvIGNvbmZpZ3VyZS5hYywgYmVjYXVzZSBvdGhlcndpc2UgdGhlIEJPT1RfQ0ZMQUdTIGFyZSBzdWJzdGl0dXRlZCBpbnRvIENGTEFHU19GT1JfVEFSR0VUICh3aGljaCBpcyAiLU8yIC1nICQoQ0ZMQUdTKSIpIHZpYSAkKENGTEFHUykuIEl0IGlzIGFsc28gY2xlYW5lciB0aGlzIHdheSB0aG91Z2guCisKKy0gcGFzc2luZyB0aGUgcmlnaHQgQ0ZMQUdTIHRvIGNvbmZpZ3VyZSBzY3JpcHRzIGFzIGV4cG9ydGVkIGVudmlyb25tZW50IHZhcmlhYmxlcworCitJIGFsc28gc3RvcHBlZCBwYXNzaW5nIExJQkNGTEFHUyB0byBjb25maWd1cmUgc2NyaXB0cyBzaW5jZSB0aGV5IGFyZSB1bnVzZWQgaW4gdGhlIHdob2xlIHNyYyB0cmVlLiBBbmQgSSB1cGRhdGVkIHRoZSBkb2N1bWVudGF0aW9uIGFzIEgtUCByZW1pbmRlZCBtZSB0byBkby4KKworQm9vdHN0cmFwcGVkL3JlZ3Rlc3RlZCBpNjg2LXBjLWxpbnV4LWdudSwgd2lsbCBjb21taXQgdG8gNC40IHNob3J0bHkuIE9rIGZvciA0LjM/CisKK1NpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGNvbmZpZ3VyZSB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggYjEyMTA4OGQ3NzguLjkzYWFlNWJiMjZmIDEwMDc1NQorLS0tIGEvY29uZmlndXJlCisrKysgYi9jb25maWd1cmUKK0BAIC02ODY0LDYgKzY4NjQsMzggQEAgZmkKKyAKKyAKKyAKKysjIER1cmluZyBnY2MgYm9vdHN0cmFwLCBpZiB3ZSB1c2Ugc29tZSByYW5kb20gY2MgZm9yIHN0YWdlMSB0aGVuIENGTEFHUworKyMgbWlnaHQgYmUgZW1wdHkgb3IgIi1nIi4gIFdlIGRvbid0IHJlcXVpcmUgYSBDKysgY29tcGlsZXIsIHNvIENYWEZMQUdTCisrIyBtaWdodCBhbHNvIGJlIGVtcHR5IChvciAiLWciLCBpZiBhIG5vbi1HQ0MgQysrIGNvbXBpbGVyIGlzIGluIHRoZSBwYXRoKS4KKysjIFdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgVEFSR0VUIGxpYnJhcmllcyAod2hpY2ggd2Uga25vdyBhcmUgYnVpbHQgd2l0aAorKyMgZ2NjKSBhcmUgYnVpbHQgd2l0aCAiLU8yIC1nIiwgc28gaW5jbHVkZSB0aG9zZSBvcHRpb25zIHdoZW4gc2V0dGluZworKyMgQ0ZMQUdTX0ZPUl9UQVJHRVQgYW5kIENYWEZMQUdTX0ZPUl9UQVJHRVQuCisraWYgdGVzdCAieCRDRkxBR1NfRk9SX1RBUkdFVCIgPSB4OyB0aGVuCisrICBDRkxBR1NfRk9SX1RBUkdFVD0kQ0ZMQUdTCisrICBjYXNlICIgJENGTEFHUyAiIGluCisrICAgICoiIC1PMiAiKikgOzsKKysgICAgKikgQ0ZMQUdTX0ZPUl9UQVJHRVQ9Ii1PMiAkQ0ZMQUdTIiA7OworKyAgZXNhYworKyAgY2FzZSAiICRDRkxBR1MgIiBpbgorKyAgICAqIiAtZyAiKiB8ICoiIC1nMyAiKikgOzsKKysgICAgKikgQ0ZMQUdTX0ZPUl9UQVJHRVQ9Ii1nICRDRkxBR1MiIDs7CisrICBlc2FjCisrZmkKKysKKysKKytpZiB0ZXN0ICJ4JENYWEZMQUdTX0ZPUl9UQVJHRVQiID0geDsgdGhlbgorKyAgQ1hYRkxBR1NfRk9SX1RBUkdFVD0kQ1hYRkxBR1MKKysgIGNhc2UgIiAkQ1hYRkxBR1MgIiBpbgorKyAgICAqIiAtTzIgIiopIDs7CisrICAgICopIENYWEZMQUdTX0ZPUl9UQVJHRVQ9Ii1PMiAkQ1hYRkxBR1MiIDs7CisrICBlc2FjCisrICBjYXNlICIgJENYWEZMQUdTICIgaW4KKysgICAgKiIgLWcgIiogfCAqIiAtZzMgIiopIDs7CisrICAgICopIENYWEZMQUdTX0ZPUl9UQVJHRVQ9Ii1nICRDWFhGTEFHUyIgOzsKKysgIGVzYWMKKytmaQorKworKworICMgSGFuZGxlIC0td2l0aC1oZWFkZXJzPVhYWC4gIElmIHRoZSB2YWx1ZSBpcyBub3QgInllcyIsIHRoZSBjb250ZW50cyBvZgorICMgdGhlIG5hbWVkIGRpcmVjdG9yeSBhcmUgY29waWVkIHRvICQodG9vbGRpcikvc3lzLWluY2x1ZGUuCisgaWYgdGVzdCB4IiR7d2l0aF9oZWFkZXJzfSIgIT0geCAmJiB0ZXN0IHgiJHt3aXRoX2hlYWRlcnN9IiAhPSB4bm8gOyB0aGVuCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA0LTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwNC02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2VjODk4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwNC02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaApAQCAtMCwwICsxLDExOSBAQAorRnJvbSAyZTAwZDBhOWE4MDkxNTNmNjkzNjU5ZTk3N2MxZTA1NTA2NjVlNjVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTA6MDYgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwNC8zOV0gNjQtYml0IG11bHRpbGliIGhhY2suCisKK0dDQyBoYXMgaW50ZXJuYWwgbXVsdGlsaWIgaGFuZGxpbmcgY29kZSBidXQgaXQgYXNzdW1lcyBhIHZlcnkgc3BlY2lmaWMgcmlnaWQgZGlyZWN0b3J5CitsYXlvdXQuIFRoZSBidWlsZCBzeXN0ZW0gaW1wbGVtZW50YXRpb24gb2YgbXVsdGlsaWIgbGF5b3V0IGlzIHZlcnkgZ2VuZXJpYyBhbmQgYWxsb3dzCitjb21wbGV0ZSBjdXN0b21pc2F0aW9uIG9mIHRoZSBsaWJyYXJ5IGRpcmVjdG9yaWVzLgorCitUaGlzIHBhdGNoIGlzIGEgcGFydGlhbCBzb2x1dGlvbiB0byBhbGxvdyBhbnkgY3VzdG9tIGRpcmVjdG9yaWVzIHRvIGJlIHBhc3NlZCBpbnRvIGdjYworYW5kIGhhbmRsZWQgY29ycmVjdGx5LiBJdCBmb3JjZXMgZ2NjIHRvIHVzZSB0aGUgYmFzZV9saWJkaXIgKHdoaWNoIGlzIHRoZSBjdXJyZW50CitkaXJlY3RvcnksICIuIikuIFdlIG5lZWQgdG8gZG8gdGhpcyBmb3IgZWFjaCBtdWx0aWxpYiB0aGF0IGlzIGNvbmZpZ3VyZWQgYXMgd2UgZG9uJ3QKK2tub3cgd2hpY2ggY29tcGlsZXIgb3B0aW9ucyBtYXkgYmUgYmVpbmcgcGFzc2VkIGludG8gdGhlIGNvbXBpbGVyLiBTaW5jZSB3ZSBoYXZlIGEgY29tcGlsZXIKK3BlciBtdWxpdGxpYiBhdCB0aGlzIHBvaW50IHRoYXQgaXNuJ3QgYW4gaXNzdWUuCisKK1RoZSBvbmUgcHJvYmxlbSBpcyB0aGUgdGFyZ2V0IGNvbXBpbGVyIGlzIG9ubHkgZ29pbmcgdG8gd29yayBmb3IgdGhlIGRlZmF1bHQgbXVsdGxpbGliIGF0Cit0aGlzIHBvaW50LiBJZGVhbGx5IHdlJ2QgZmlndXJlIG91dCB3aGljaCBtdWx0aWxpYnMgd2VyZSBiZWluZyBlbmFibGVkIHdpdGggd2hpY2ggcGF0aHMKK2FuZCBiZSBhYmxlIHRvIHBhdGNoIHRoZXNlIGVudHJpZXMgd2l0aCBhIGNvbXBsZXRlIHNldCBvZiBjb3JyZWN0IHBhdGhzIGJ1dCB0aGlzIHdlCitkb24ndCBoYXZlIHN1Y2ggY29kZSBhdCB0aGlzIHBvaW50LiBUaGlzIGlzIHNvbWV0aGluZyB0aGUgdGFyZ2V0IGdjYyByZWNpcGUgc2hvdWxkIGRvCithbmQgb3ZlcnJpZGUgdGhlc2UgcGxhdGZvcm0gZGVmYXVsdHMgaW4gaXRzIGJ1aWxkIGNvbmZpZy4KKworRG8gc2FtZSBmb3IgcmlzY3Y2NCBhbmQgYWFyY2g2NAorCitSUCAxNS84LzExCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtPRS1TcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEVsdmlzIERvd3NvbiA8ZWx2aXMuZG93c29uQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KKy0tLQorIGdjYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXggfCAgOCArKysrLS0tLQorIGdjYy9jb25maWcvaTM4Ni90LWxpbnV4NjQgICAgICAgICAgfCAgNiArKy0tLS0KKyBnY2MvY29uZmlnL21pcHMvdC1saW51eDY0ICAgICAgICAgIHwgMTAgKysrLS0tLS0tLQorIGdjYy9jb25maWcvcmlzY3YvdC1saW51eCAgICAgICAgICAgfCAgNiArKysrLS0KKyBnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQgICAgICAgIHwgIDUgKystLS0KKyA1IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eCBiL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKK2luZGV4IDVhZDY3MGJhMmNlLi5lMjYwMTllNzE1NyAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKKysrKyBiL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKK0BAIC0yMSw4ICsyMSw4IEBACisgTElCMUFTTVNSQyAgID0gYWFyY2g2NC9saWIxZnVuY3MuYXNtCisgTElCMUFTTUZVTkNTID0gX2FhcmNoNjRfc3luY19jYWNoZV9yYW5nZQorIAorLUFBUkNIX0JFID0gJChpZiAkKGZpbmRzdHJpbmcgVEFSR0VUX0JJR19FTkRJQU5fREVGQVVMVD0xLCAkKHRtX2RlZmluZXMpKSxfYmUpCistTVVMVElMSUJfT1NESVJOQU1FUyA9IG1hYmkubHA2ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCistTVVMVElBUkNIX0RJUk5BTUUgPSAkKGNhbGwgaWZfbXVsdGlhcmNoLGFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCisrI0FBUkNIX0JFID0gJChpZiAkKGZpbmRzdHJpbmcgVEFSR0VUX0JJR19FTkRJQU5fREVGQVVMVD0xLCAkKHRtX2RlZmluZXMpKSxfYmUpCisrI01VTFRJTElCX09TRElSTkFNRVMgPSBtYWJpLmxwNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQorKyNNVUxUSUFSQ0hfRElSTkFNRSA9ICQoY2FsbCBpZl9tdWx0aWFyY2gsYWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKKyAKKy1NVUxUSUxJQl9PU0RJUk5BTUVTICs9IG1hYmkuaWxwMzI9Li4vbGliaWxwMzIkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251X2lscDMyKQorKyNNVUxUSUxJQl9PU0RJUk5BTUVTICs9IG1hYmkuaWxwMzI9Li4vbGliaWxwMzIkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251X2lscDMyKQorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQgYi9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0CitpbmRleCBjNjg2YWIyZjBkMi4uYzgyYjYwZGFkY2QgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0CisrKysgYi9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0CitAQCAtMzIsNyArMzIsNSBAQAorICMKKyBjb21tYT0sCisgTVVMVElMSUJfT1BUSU9OUyAgICA9ICQoc3Vic3QgJChjb21tYSksLywkKFRNX01VTFRJTElCX0NPTkZJRykpCistTVVMVElMSUJfRElSTkFNRVMgICA9ICQocGF0c3Vic3QgbSUsICUsICQoc3Vic3QgLywgLCQoTVVMVElMSUJfT1BUSU9OUykpKQorLU1VTFRJTElCX09TRElSTkFNRVMgPSBtNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDp4ODZfNjQtbGludXgtZ251KQorLU1VTFRJTElCX09TRElSTkFNRVMrPSBtMzI9JChpZiAkKHdpbGRjYXJkICQoc2hlbGwgZWNobyAkKFNZU1RFTV9IRUFERVJfRElSKSkvLi4vLi4vdXNyL2xpYjMyKSwuLi9saWIzMiwuLi9saWIpJChjYWxsIGlmX211bHRpYXJjaCw6aTM4Ni1saW51eC1nbnUpCistTVVMVElMSUJfT1NESVJOQU1FUys9IG14MzI9Li4vbGlieDMyJChjYWxsIGlmX211bHRpYXJjaCw6eDg2XzY0LWxpbnV4LWdudXgzMikKKytNVUxUSUxJQl9ESVJOQU1FUyA9IC4gLgorK01VTFRJTElCX09TRElSTkFNRVMgPSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQgYi9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0CitpbmRleCAzYTJmZjcwMGQ3ZC4uMTNlZjE5NTc2YjUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0CisrKysgYi9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0CitAQCAtMTcsMTAgKzE3LDYgQEAKKyAjIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAKKyBNVUxUSUxJQl9PUFRJT05TID0gbWFiaT1uMzIvbWFiaT0zMi9tYWJpPTY0CistTVVMVElMSUJfRElSTkFNRVMgPSBuMzIgMzIgNjQKKy1NSVBTX0VMID0gJChpZiAkKGZpbHRlciAlZWwsICQoZmlyc3R3b3JkICQoc3Vic3QgLSwgLCQodGFyZ2V0KSkpKSxlbCkKKy1NSVBTX1NPRlQgPSAkKGlmICQoc3RyaXAgJChmaWx0ZXIgTUFTS19TT0ZUX0ZMT0FUX0FCSSwgJCh0YXJnZXRfY3B1X2RlZmF1bHQpKSAkKGZpbHRlciBzb2Z0LCAkKHdpdGhfZmxvYXQpKSksc29mdCkKKy1NVUxUSUxJQl9PU0RJUk5BTUVTID0gXAorLQkuLi9saWIzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHM2NCQoTUlQU19FTCktbGludXgtZ251YWJpbjMyJChNSVBTX1NPRlQpKSBcCistCS4uL2xpYiQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHMkKE1JUFNfRUwpLWxpbnV4LWdudSQoTUlQU19TT0ZUKSkgXAorLQkuLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHM2NCQoTUlQU19FTCktbGludXgtZ251YWJpNjQkKE1JUFNfU09GVCkpCisrTVVMVElMSUJfRElSTkFNRVMgPSAuIC4gLgorK01VTFRJTElCX09TRElSTkFNRVMgPSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQorKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvdC1saW51eCBiL2djYy9jb25maWcvcmlzY3YvdC1saW51eAoraW5kZXggMjE2ZDI3NzZhMTguLmU0ZDgxNzYyMWZjIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi90LWxpbnV4CisrKysgYi9nY2MvY29uZmlnL3Jpc2N2L3QtbGludXgKK0BAIC0xLDMgKzEsNSBAQAorICMgT25seSBYTEVOIGFuZCBBQkkgYWZmZWN0IExpbnV4IG11bHRpbGliIGRpciBuYW1lcywgZS5nLiAvbGliMzIvaWxwMzJkLworLU1VTFRJTElCX0RJUk5BTUVTIDo9ICQocGF0c3Vic3QgcnYzMiUsbGliMzIsJChwYXRzdWJzdCBydjY0JSxsaWI2NCwkKE1VTFRJTElCX0RJUk5BTUVTKSkpCistTVVMVElMSUJfT1NESVJOQU1FUyA6PSAkKHBhdHN1YnN0IGxpYiUsLi4vbGliJSwkKE1VTFRJTElCX0RJUk5BTUVTKSkKKysjTVVMVElMSUJfRElSTkFNRVMgOj0gJChwYXRzdWJzdCBydjMyJSxsaWIzMiwkKHBhdHN1YnN0IHJ2NjQlLGxpYjY0LCQoTVVMVElMSUJfRElSTkFNRVMpKSkKKytNVUxUSUxJQl9ESVJOQU1FUyA6PSAuIC4KKysjTVVMVElMSUJfT1NESVJOQU1FUyA6PSAkKHBhdHN1YnN0IGxpYiUsLi4vbGliJSwkKE1VTFRJTElCX0RJUk5BTUVTKSkKKytNVUxUSUxJQl9PU0RJUk5BTUVTIDo9IC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0CitpbmRleCBmM2M2ZTJiZTFkOS4uYmQwMzkzMTU1ZmEgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKKysrKyBiL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAorQEAgLTI2LDEwICsyNiw5IEBACisgIyBNVUxUSUxJQl9PU0RJUk5BTUVTIGFjY29yZGluZyB0byB3aGF0IGlzIGZvdW5kIG9uIHRoZSB0YXJnZXQuCisgCisgTVVMVElMSUJfT1BUSU9OUyAgICA6PSBtNjQvbTMyCistTVVMVElMSUJfRElSTkFNRVMgICA6PSA2NCAzMgorK01VTFRJTElCX0RJUk5BTUVTICAgOj0gLiAuCisgTVVMVElMSUJfRVhUUkFfT1BUUyA6PSAKKy1NVUxUSUxJQl9PU0RJUk5BTUVTIDo9IG02ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOnBvd2VycGM2NC1saW51eC1nbnUpCistTVVMVElMSUJfT1NESVJOQU1FUyArPSBtMzI9JChpZiAkKHdpbGRjYXJkICQoc2hlbGwgZWNobyAkKFNZU1RFTV9IRUFERVJfRElSKSkvLi4vLi4vdXNyL2xpYjMyKSwuLi9saWIzMiwuLi9saWIpJChjYWxsIGlmX211bHRpYXJjaCw6cG93ZXJwYy1saW51eC1nbnUpCisrTVVMVElMSUJfT1NESVJOQU1FUyA6PSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQorIAorIHJzNjAwMC1saW51eC5vOiAkKHNyY2RpcikvY29uZmlnL3JzNjAwMC9yczYwMDAtbGludXguYworIAkkKENPTVBJTEUpICQ8CistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA1LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA1LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MyOGFlYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDUtb3B0aW9uYWwtbGlic3RkYy5wYXRjaApAQCAtMCwwICsxLDEyNSBAQAorRnJvbSA0MzVlNDU1OTJlOTQ0MDE4ZjMzYmZmMzJmMTIwMmIwODcyYTIzMTQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTI6NTYgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwNS8zOV0gb3B0aW9uYWwgbGlic3RkYworCitnY2MtcnVudGltZSBidWlsZHMgbGlic3RkYysrIHNlcGFyYXRlbHkgZnJvbSBnY2MtY3Jvc3MtKi4gSXRzIGNvbmZpZ3VyZSB0ZXN0cyB1c2luZyBnKysKK3dpbGwgbm90IHJ1biBjb3JyZWN0bHkgc2luY2UgYnkgZGVmYXVsdCB0aGUgbGlua2VyIHdpbGwgdHJ5IHRvIGxpbmsgYWdhaW5zdCBsaWJzdGRjKysKK3doaWNoIHNob3VsZG4ndCBleGlzdCB5ZXQuIFdlIG5lZWQgYW4gb3B0aW9uIHRvIGRpc2FibGUgLWxzdGRjKysKK29wdGlvbiB3aGlsc3QgbGVhdmluZyAtbGMsIC1sZ2NjIGFuZCBvdGhlciBhdXRvbWF0aWMgbGlicmFyeSBkZXBlbmRlbmNpZXMgYWRkZWQgYnkgZ2NjCitkcml2ZXIuIFRoaXMgcGF0Y2ggYWRkcyBzdWNoIGFuIG9wdGlvbiB3aGljaCBvbmx5IGRpc2FibGVzIHRoZSAtbHN0ZGMrKy4KKworQSAic3RhbmRhcmQiIGdjYyBidWlsZCB1c2VzIHhnY2MgYW5kIGhlbmNlIGF2b2lkcyB0aGlzLiBXZSBzaG91bGQgYXNrIHVwc3RyZWFtIGhvdyB0bworZG8gdGhpcyBvZmZpY2lhbGx5LCB0aGUgbGlrZWx5IGFuc3dlciBpcyBkb24ndCBidWlsZCBsaWJzdGRjKysgc2VwYXJhdGVseS4KKworUlAgMjkvNi8xMAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorLS0tCisgZ2NjL2MtZmFtaWx5L2Mub3B0ICB8ICA0ICsrKysKKyBnY2MvY3AvZysrc3BlYy5jICAgIHwgIDEgKworIGdjYy9kb2MvaW52b2tlLnRleGkgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQorIGdjYy9nY2MuYyAgICAgICAgICAgfCAgMSArCisgNCBmaWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy5vcHQgYi9nY2MvYy1mYW1pbHkvYy5vcHQKK2luZGV4IDkxNmNjNjdiNDUzLi40MTYxOWZhNTkxYyAxMDA2NDQKKy0tLSBhL2djYy9jLWZhbWlseS9jLm9wdAorKysrIGIvZ2NjL2MtZmFtaWx5L2Mub3B0CitAQCAtMTk1Miw2ICsxOTUyLDEwIEBAIG5vc3RkaW5jKysKKyBDKysgT2JqQysrCisgRG8gbm90IHNlYXJjaCBzdGFuZGFyZCBzeXN0ZW0gaW5jbHVkZSBkaXJlY3RvcmllcyBmb3IgQysrLgorIAorK25vc3RkbGliKysKKytEcml2ZXIKKytEbyBub3QgbGluayBzdGFuZGFyZCBDKysgcnVudGltZSBsaWJyYXJ5CisrCisgbworIEMgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBTZXBhcmF0ZQorIDsgRG9jdW1lbnRlZCBpbiBjb21tb24ub3B0CitkaWZmIC0tZ2l0IGEvZ2NjL2NwL2crK3NwZWMuYyBiL2djYy9jcC9nKytzcGVjLmMKK2luZGV4IDZjNDU3NGE4MzdkLi4wZTI2NTdmMDBlZSAxMDA2NDQKKy0tLSBhL2djYy9jcC9nKytzcGVjLmMKKysrKyBiL2djYy9jcC9nKytzcGVjLmMKK0BAIC0xMzcsNiArMTM3LDcgQEAgbGFuZ19zcGVjaWZpY19kcml2ZXIgKHN0cnVjdCBjbF9kZWNvZGVkX29wdGlvbiAqKmluX2RlY29kZWRfb3B0aW9ucywKKyAgICAgICBzd2l0Y2ggKGRlY29kZWRfb3B0aW9uc1tpXS5vcHRfaW5kZXgpCisgCXsKKyAJY2FzZSBPUFRfbm9zdGRsaWI6CisrCWNhc2UgT1BUX25vc3RkbGliX186CisgCWNhc2UgT1BUX25vZGVmYXVsdGxpYnM6CisgCSAgbGlicmFyeSA9IC0xOworIAkgIGJyZWFrOworZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpCitpbmRleCBjM2QzZDUxYTI4Zi4uMmY3ZmZlNDU2YzMgMTAwNjQ0CistLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCisrKysgYi9nY2MvZG9jL2ludm9rZS50ZXhpCitAQCAtMjI4LDYgKzIyOCw5IEBAIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMuCisgLWZuby13ZWFrICAtbm9zdGRpbmMrKyBAZ29sCisgLWZ2aXNpYmlsaXR5LWlubGluZXMtaGlkZGVuIEBnb2wKKyAtZnZpc2liaWxpdHktbXMtY29tcGF0IEBnb2wKKystZnZ0YWJsZS12ZXJpZnk9QHJ7W31zdGRAcnt8fXByZWluaXRAcnt8fW5vbmVAcntdfSBAZ29sCisrLWZ2dHYtY291bnRzIC1mdnR2LWRlYnVnIEBnb2wKKystbm9zdGRsaWIrKyBAZ29sCisgLWZleHQtbnVtZXJpYy1saXRlcmFscyBAZ29sCisgLVdhYmk9QHZhcntufSAgLVdhYmktdGFnICAtV2NvbnZlcnNpb24tbnVsbCAgLVdjdG9yLWR0b3ItcHJpdmFjeSBAZ29sCisgLVdkZWxldGUtbm9uLXZpcnR1YWwtZHRvciAgLVdkZXByZWNhdGVkLWNvcHkgIC1XZGVwcmVjYXRlZC1jb3B5LWR0b3IgQGdvbAorQEAgLTUzOSw3ICs1NDIsNyBAQCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCisgLXBpZSAgLXB0aHJlYWQgIC1yICAtcmR5bmFtaWMgQGdvbAorIC1zICAtc3RhdGljICAtc3RhdGljLXBpZSAgLXN0YXRpYy1saWJnY2MgIC1zdGF0aWMtbGlic3RkYysrIEBnb2wKKyAtc3RhdGljLWxpYmFzYW4gIC1zdGF0aWMtbGlidHNhbiAgLXN0YXRpYy1saWJsc2FuICAtc3RhdGljLWxpYnVic2FuIEBnb2wKKy0tc2hhcmVkICAtc2hhcmVkLWxpYmdjYyAgLXN5bWJvbGljIEBnb2wKKystc2hhcmVkICAtc2hhcmVkLWxpYmdjYyAgLXN5bWJvbGljIC1ub3N0ZGxpYisrIEBnb2wKKyAtVCBAdmFye3NjcmlwdH0gIC1XbCxAdmFye29wdGlvbn0gIC1YbGlua2VyIEB2YXJ7b3B0aW9ufSBAZ29sCisgLXUgQHZhcntzeW1ib2x9ICAteiBAdmFye2tleXdvcmR9fQorIAorQEAgLTEzMzIxLDYgKzEzMzI0LDMzIEBAIFNwZWNpZnkgdGhhdCB0aGUgcHJvZ3JhbSBlbnRyeSBwb2ludCBpcyBAdmFye2VudHJ5fS4gIFRoZSBhcmd1bWVudCBpcworIGludGVycHJldGVkIGJ5IHRoZSBsaW5rZXI7IHRoZSBHTlUgbGlua2VyIGFjY2VwdHMgZWl0aGVyIGEgc3ltYm9sIG5hbWUKKyBvciBhbiBhZGRyZXNzLgorIAorK0BpdGVtIC1ub3N0ZGxpYisrCisrQG9waW5kZXggbm9zdGRsaWIrKworK0RvIG5vdCB1c2UgdGhlIHN0YW5kYXJkIHN5c3RlbSBDKysgcnVudGltZSBsaWJyYXJpZXMgd2hlbiBsaW5raW5nLgorK09ubHkgdGhlIGxpYnJhcmllcyB5b3Ugc3BlY2lmeSB3aWxsIGJlIHBhc3NlZCB0byB0aGUgbGlua2VyLgorKworK0BjaW5kZXggQG9wdGlvbnstbGdjY30sIHVzZSB3aXRoIEBvcHRpb257LW5vc3RkbGlifQorK0BjaW5kZXggQG9wdGlvbnstbm9zdGRsaWJ9IGFuZCB1bnJlc29sdmVkIHJlZmVyZW5jZXMKKytAY2luZGV4IHVucmVzb2x2ZWQgcmVmZXJlbmNlcyBhbmQgQG9wdGlvbnstbm9zdGRsaWJ9CisrQGNpbmRleCBAb3B0aW9uey1sZ2NjfSwgdXNlIHdpdGggQG9wdGlvbnstbm9kZWZhdWx0bGlic30KKytAY2luZGV4IEBvcHRpb257LW5vZGVmYXVsdGxpYnN9IGFuZCB1bnJlc29sdmVkIHJlZmVyZW5jZXMKKytAY2luZGV4IHVucmVzb2x2ZWQgcmVmZXJlbmNlcyBhbmQgQG9wdGlvbnstbm9kZWZhdWx0bGlic30KKytPbmUgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcmllcyBieXBhc3NlZCBieSBAb3B0aW9uey1ub3N0ZGxpYn0gYW5kCisrQG9wdGlvbnstbm9kZWZhdWx0bGlic30gaXMgQGZpbGV7bGliZ2NjLmF9LCBhIGxpYnJhcnkgb2YgaW50ZXJuYWwgc3Vicm91dGluZXMKKyt3aGljaCBHQ0MgdXNlcyB0byBvdmVyY29tZSBzaG9ydGNvbWluZ3Mgb2YgcGFydGljdWxhciBtYWNoaW5lcywgb3Igc3BlY2lhbAorK25lZWRzIGZvciBzb21lIGxhbmd1YWdlcy4KKysoQHhyZWZ7SW50ZXJmYWNlLCxJbnRlcmZhY2luZyB0byBHQ0MgT3V0cHV0LGdjY2ludCxHTlUgQ29tcGlsZXIKKytDb2xsZWN0aW9uIChHQ0MpIEludGVybmFsc30sCisrZm9yIG1vcmUgZGlzY3Vzc2lvbiBvZiBAZmlsZXtsaWJnY2MuYX0uKQorK0luIG1vc3QgY2FzZXMsIHlvdSBuZWVkIEBmaWxle2xpYmdjYy5hfSBldmVuIHdoZW4geW91IHdhbnQgdG8gYXZvaWQKKytvdGhlciBzdGFuZGFyZCBsaWJyYXJpZXMuICBJbiBvdGhlciB3b3Jkcywgd2hlbiB5b3Ugc3BlY2lmeSBAb3B0aW9uey1ub3N0ZGxpYn0KKytvciBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfSB5b3Ugc2hvdWxkIHVzdWFsbHkgc3BlY2lmeSBAb3B0aW9uey1sZ2NjfSBhcyB3ZWxsLgorK1RoaXMgZW5zdXJlcyB0aGF0IHlvdSBoYXZlIG5vIHVucmVzb2x2ZWQgcmVmZXJlbmNlcyB0byBpbnRlcm5hbCBHQ0MKKytsaWJyYXJ5IHN1YnJvdXRpbmVzLgorKyhBbiBleGFtcGxlIG9mIHN1Y2ggYW4gaW50ZXJuYWwgc3Vicm91dGluZSBpcyBAY29kZXtfX21haW59LCB1c2VkIHRvIGVuc3VyZSBDKysKKytjb25zdHJ1Y3RvcnMgYXJlIGNhbGxlZDsgQHB4cmVme0NvbGxlY3QyLCxAY29kZXtjb2xsZWN0Mn0sIGdjY2ludCwKKytHTlUgQ29tcGlsZXIgQ29sbGVjdGlvbiAoR0NDKSBJbnRlcm5hbHN9LikKKysKKyBAaXRlbSAtcGllCisgQG9waW5kZXggcGllCisgUHJvZHVjZSBhIGR5bmFtaWNhbGx5IGxpbmtlZCBwb3NpdGlvbiBpbmRlcGVuZGVudCBleGVjdXRhYmxlIG9uIHRhcmdldHMKK2RpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKK2luZGV4IGEyNjAxYTZiYjA2Li5jZDZjNmZjOTVkYiAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtMTA1Miw2ICsxMDUyLDcgQEAgcHJvcGVyIHBvc2l0aW9uIGFtb25nIHRoZSBvdGhlciBvdXRwdXQgZmlsZXMuICAqLworICAgICAlKG1mbGliKSAiIFNUQUNLX1NQTElUX1NQRUMgIlwKKyAgICAgJXtmcHJvZmlsZS1hcmNzfGZwcm9maWxlLWdlbmVyYXRlKnxjb3ZlcmFnZTotbGdjb3Z9ICIgU0FOSVRJWkVSX1NQRUMgIiBcCisgICAgICV7IW5vc3RkbGliOiV7IXI6JXshbm9kZWZhdWx0bGliczolKGxpbmtfc3NwKSAlKGxpbmtfZ2NjX2Nfc2VxdWVuY2UpfX19XAorKyAgICAleyFub3N0ZGxpYisrOn1cCisgICAgICV7IW5vc3RkbGliOiV7IXI6JXshbm9zdGFydGZpbGVzOiVFfX19ICV7VCp9ICBcbiUocG9zdF9saW5rKSB9fX19fX0iCisgI2VuZGlmCisgCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA2ZjNhNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIGM5OTY4NDQ3N2VjNjZmMjkwZWM3NGVmZTczMmFjZDNjMjRkYjdkY2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxNjoyOCArMDQwMAorU3ViamVjdDogW1BBVENIIDA2LzM5XSBDT0xMRUNUX0dDQ19PUFRJT05TCisKK1RoaXMgcGF0Y2ggYWRkcyAtLXN5c3Jvb3QgaW50byBDT0xMRUNUX0dDQ19PUFRJT05TIHdoaWNoIGlzIHVzZWQgdG8KK2ludm9rZSBjb2xsZWN0Mi4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBnY2MvZ2NjLmMgfCA5ICsrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYworaW5kZXggY2Q2YzZmYzk1ZGIuLjdkYTljNWQ0NTdiIDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC00ODA0LDYgKzQ4MDQsMTUgQEAgc2V0X2NvbGxlY3RfZ2NjX29wdGlvbnMgKHZvaWQpCisgCQlzaXplb2YgKCJDT0xMRUNUX0dDQ19PUFRJT05TPSIpIC0gMSk7CisgCisgICBmaXJzdF90aW1lID0gVFJVRTsKKysjaWZkZWYgSEFWRV9MRF9TWVNST09UCisrICBpZiAodGFyZ2V0X3N5c3RlbV9yb290X2NoYW5nZWQgJiYgdGFyZ2V0X3N5c3RlbV9yb290KQorKyAgICB7CisrICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCAiJy0tc3lzcm9vdD0iLCBzaXplb2YoIictLXN5c3Jvb3Q9IiktMSk7CisrICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCB0YXJnZXRfc3lzdGVtX3Jvb3Qsc3RybGVuKHRhcmdldF9zeXN0ZW1fcm9vdCkpOworKyAgICAgIG9ic3RhY2tfZ3JvdyAoJmNvbGxlY3Rfb2JzdGFjaywgIiciLCAxKTsKKysgICAgICBmaXJzdF90aW1lID0gRkFMU0U7CisrICAgIH0KKysjZW5kaWYKKyAgIGZvciAoaSA9IDA7IChpbnQpIGkgPCBuX3N3aXRjaGVzOyBpKyspCisgICAgIHsKKyAgICAgICBjb25zdCBjaGFyICpjb25zdCAqYXJnczsKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDctVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4YTg3NmMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoCkBAIC0wLDAgKzEsOTYgQEAKK0Zyb20gZDZmNGVkYWFiMGFkMGU3NDJmYjFlM2E2Zjc2OTA4YTJhYzk5MjdkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE3OjI1ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDcvMzldIFVzZSB0aGUgZGVmYXVsdHMuaCBpbiAke0J9IGluc3RlYWQgb2YgJHtTfSwgYW5kIHQtb2UgaW4KKyAke0J9CisKK1VzZSB0aGUgZGVmYXVsdHMuaCBpbiAke0J9IGluc3RlYWQgb2YgJHtTfSwgYW5kIHQtb2UgaW4gJHtCfSwgc28gdGhhdAordGhlIHNvdXJjZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZ2NjLWNyb3NzLWluaXRpYWwsCitnY2MtY3Jvc3MtaW50ZXJtZWRpYXRlLCBnY2MtY3Jvc3MsIGdjYy1ydW50aW1lLCBhbmQgYWxzbyB0aGUgc2RrIGJ1aWxkLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworV2hpbGUgY29tcGlsaW5nIGdjYy1jcm9zc3Nkay1pbml0aWFsLXg4Nl82NCBvbiBzb21lIGhvc3QsIHRoZXJlIGlzCitvY2Nhc2lvbmFsbHkgZmFpbHVyZSB0aGF0IHRlc3QgdGhlIGV4aXN0YW5jZSBvZiBkZWZhdWx0LmggZG9lc24ndAord29yaywgdGhlIHJlYXNvbiBpcyB0bV9pbmNsdWRlX2xpc3Q9JyoqIGRlZmF1bHRzLmgnIHJhdGhlciB0aGFuCit0bV9pbmNsdWRlX2xpc3Q9JyoqIC4vZGVmYXVsdHMuaCcKKworU28gd2UgYWRkIHRoZSB0ZXN0IGNvbmRpdGlvbiBmb3IgdGhpcyBzaXR1YXRpb24uCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBnY2MvTWFrZWZpbGUuaW4gIHwgMiArLQorIGdjYy9jb25maWd1cmUgICAgfCA0ICsrLS0KKyBnY2MvY29uZmlndXJlLmFjIHwgNCArKy0tCisgZ2NjL21rY29uZmlnLnNoICB8IDQgKystLQorIDQgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCitpbmRleCBhYmFlODcyY2Q2My4uZmVmNmM0YzYxZTMgMTAwNjQ0CistLS0gYS9nY2MvTWFrZWZpbGUuaW4KKysrKyBiL2djYy9NYWtlZmlsZS5pbgorQEAgLTU0MCw3ICs1NDAsNyBAQCBUQVJHRVRfU1lTVEVNX1JPT1QgPSBAVEFSR0VUX1NZU1RFTV9ST09UQAorIFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkUgPSBAVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORUAKKyAKKyB4bWFrZV9maWxlPUB4bWFrZV9maWxlQAorLXRtYWtlX2ZpbGU9QHRtYWtlX2ZpbGVACisrdG1ha2VfZmlsZT1AdG1ha2VfZmlsZUAgLi90LW9lCisgVE1fRU5ESUFOX0NPTkZJRz1AVE1fRU5ESUFOX0NPTkZJR0AKKyBUTV9NVUxUSUxJQl9DT05GSUc9QFRNX01VTFRJTElCX0NPTkZJR0AKKyBUTV9NVUxUSUxJQl9FWENFUFRJT05TX0NPTkZJRz1AVE1fTVVMVElMSUJfRVhDRVBUSU9OU19DT05GSUdACitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IDJlMjZkZDMzMzEwLi5lZDc5MzFkYWVkMyAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC0xMjM0Miw4ICsxMjM0Miw4IEBAIGZvciBmIGluICR0bV9maWxlOyBkbworICAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKKyAgICAgICAgOzsKKyAgICAgZGVmYXVsdHMuaCApCistICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvJGYiCistICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgorKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuLyRmIgorKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuLyRmIgorICAgICAgICA7OworICAgICAqICkKKyAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS9jb25maWcvJGYiCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKK2luZGV4IDEyZDFkMDRlNjQ1Li5lMDUwMGUzMGQ1MCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrKyBiL2djYy9jb25maWd1cmUuYWMKK0BAIC0xOTY4LDggKzE5NjgsOCBAQCBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KKyAgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCisgICAgICAgIDs7CisgICAgIGRlZmF1bHRzLmggKQorLSAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpLyRmIgorLSAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKKysgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi8kZiIKKysgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi8kZiIKKyAgICAgICAgOzsKKyAgICAgKiApCisgICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvY29uZmlnLyRmIgorZGlmZiAtLWdpdCBhL2djYy9ta2NvbmZpZy5zaCBiL2djYy9ta2NvbmZpZy5zaAoraW5kZXggMzA4Yjg3ZDBjYzEuLjE5MDY4Y2JjMjRhIDEwMDY0NAorLS0tIGEvZ2NjL21rY29uZmlnLnNoCisrKysgYi9nY2MvbWtjb25maWcuc2gKK0BAIC03Nyw3ICs3Nyw3IEBAIGlmIFsgLW4gIiRIRUFERVJTIiBdOyB0aGVuCisgICAgIGlmIFsgJCMgLWdlIDEgXTsgdGhlbgorIAllY2hvICcjaWZkZWYgSU5fR0NDJyA+PiAke291dHB1dH1UCisgCWZvciBmaWxlIGluICIkQCI7IGRvCistCSAgICBpZiB0ZXN0IHgiJGZpbGUiID0geCJkZWZhdWx0cy5oIjsgdGhlbgorKwkgICAgaWYgdGVzdCB4IiRmaWxlIiA9IHgiLi9kZWZhdWx0cy5oIiAtbyB4IiRmaWxlIiA9IHgiZGVmYXVsdHMuaCI7IHRoZW4KKyAJCXBvc3Rwb25lX2RlZmF1bHRzX2g9InllcyIKKyAJICAgIGVsc2UKKyAJCWVjaG8gIiMgaW5jbHVkZSBcIiRmaWxlXCIiID4+ICR7b3V0cHV0fVQKK0BAIC0xMDYsNyArMTA2LDcgQEAgZXNhYworIAorICMgSWYgd2UgcG9zdHBvbmVkIGluY2x1ZGluZyBkZWZhdWx0cy5oLCBhZGQgdGhlICNpbmNsdWRlIG5vdy4KKyBpZiB0ZXN0IHgiJHBvc3Rwb25lX2RlZmF1bHRzX2giID0geCJ5ZXMiOyB0aGVuCistICAgIGVjaG8gIiMgaW5jbHVkZSBcImRlZmF1bHRzLmhcIiIgPj4gJHtvdXRwdXR9VAorKyAgICBlY2hvICIjIGluY2x1ZGUgXCIuL2RlZmF1bHRzLmhcIiIgPj4gJHtvdXRwdXR9VAorIGZpCisgCisgIyBBZGQgbXVsdGlwbGUgaW5jbHVzaW9uIHByb3RlY3Rpb24gZ3VhcmQsIHBhcnQgdHdvLgorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwOC1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFjZDJiMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSAyYzUxNGFkYTM2ZmZiZjcwMTc3OTA5ZjYzM2U5ZjY4ODExZGU2MWUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjA6MDEgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwOC8zOV0gZm9ydHJhbiBjcm9zcy1jb21waWxlIGhhY2suCisKKyogRm9ydHJhbiB3b3VsZCBoYXZlIHNlYXJjaGVkIGZvciBhcm0tYW5nc3Ryb20tZ251ZWFiaS1nZm9ydHJhbiBidXQgd291bGQgaGF2ZSB1c2VkCit1c2VkIGdmb3J0YW4uIEZvciBnY2NfNC4yLjIuYmIgd2Ugd2FudCB0byB1c2UgdGhlIGdmb3J0cmFuIGNvbXBpbGVyIGZyb20gb3VyIGNyb3NzCitkaXJlY3RvcnkuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCistLS0KKyBsaWJnZm9ydHJhbi9jb25maWd1cmUgICAgfCAyICstCisgbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlCitpbmRleCA2MDg2N2I5M2QwZS4uM2ZjOWZjYTViN2IgMTAwNzU1CistLS0gYS9saWJnZm9ydHJhbi9jb25maWd1cmUKKysrKyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQorQEAgLTEzMDcxLDcgKzEzMDcxLDcgQEAgZXNhYworIAorICMgV2UgbmVlZCBnZm9ydHJhbiB0byBjb21waWxlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5CisgI0FDX1BST0dfRkMoZ2ZvcnRyYW4pCistRkM9IiRHRk9SVFJBTiIKKysjRkM9IiRHRk9SVFJBTiIKKyBhY19leHQ9JHthY19mY19zcmNleHQtZn0KKyBhY19jb21waWxlPSckRkMgLWMgJEZDRkxBR1MgJGFjX2ZjZmxhZ3Nfc3JjZXh0IGNvbmZ0ZXN0LiRhY19leHQgPiY1JworIGFjX2xpbms9JyRGQyAtbyBjb25mdGVzdCRhY19leGVleHQgJEZDRkxBR1MgJExERkxBR1MgJGFjX2ZjZmxhZ3Nfc3JjZXh0IGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYworaW5kZXggN2NmY2UyOGFiNjkuLjZjZDUxNWVlMWE0IDEwMDY0NAorLS0tIGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCisrKysgYi9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKK0BAIC0yNTAsNyArMjUwLDcgQEAgQUNfU1VCU1QoZW5hYmxlX3N0YXRpYykKKyAKKyAjIFdlIG5lZWQgZ2ZvcnRyYW4gdG8gY29tcGlsZSBwYXJ0cyBvZiB0aGUgbGlicmFyeQorICNBQ19QUk9HX0ZDKGdmb3J0cmFuKQorLUZDPSIkR0ZPUlRSQU4iCisrI0ZDPSIkR0ZPUlRSQU4iCisgQUNfUFJPR19GQyhnZm9ydHJhbikKKyAKKyAjIGV4dHJhIExEIEZsYWdzIHdoaWNoIGFyZSByZXF1aXJlZCBmb3IgdGFyZ2V0cworLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwOS1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDktY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE5ZTUyNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDktY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorRnJvbSAwYTdjMDNhOWNmOTI1YmEwOWE1MTBhMzJlNjg0ZjAxZWM1YTUwNjUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjI6MDAgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwOS8zOV0gY3BwOiBob25vciBzeXNyb290LgorCitDdXJyZW50bHksIGlmIHRoZSBnY2MgdG9vbGNoYWluIGlzIHJlbG9jYXRlZCBhbmQgaW5zdGFsbGVkIGZyb20gc3N0YXRlLCB0aGVuIHlvdSB0cnkgYW5kIGNvbXBpbGUKK3ByZXByb2Nlc3NlZCBzb3VyY2UgKC5pIG9yIC5paSBmaWxlcyksIHRoZSBjb21waWxlciB3aWxsIHRyeSBhbmQgYWNjZXNzIHRoZSBidWlsdGluIHN5c3Jvb3QgbG9jYXRpb24KK3JhdGhlciB0aGFuIHRoZSAtLXN5c3Jvb3Qgb3B0aW9uIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZGxpbmUuIElmIGFjY2VzcyB0byB0aGF0IGRpcmVjdG9yeSBpcworcGVybWlzc2lvbiBkZW5pZWQgKHVucmVhZGFibGUpLCBnY2Mgd2lsbCBlcnJvci4KKworVGhpcyBoYXBwZW5zIHdoZW4gY2NhY2hlIGlzIGluIHVzZSBkdWUgdG8gdGhlIGZhY3QgaXQgdXNlcyBwcmVwcm9jZXNzZWQgc291cmNlIGZpbGVzLgorCitUaGUgZml4IGJlbG93IGFkZHMgJUkgdG8gdGhlIGNwcC1vdXRwdXQgc3BlYyBtYWNybyBzbyB0aGUgZGVmYXVsdCBzdWJzdGl0dXRpb25zIGZvciAtaXByZWZpeCwKKy1pc3lzdGVtLCAtaXN5c3Jvb3QgaGFwcGVuIGFuZCB0aGUgY29ycmVjdCBzeXNyb290IGlzIHVzZWQuCisKK1tZT0NUTyAjMjA3NF0KKworUlAgMjAxMi8wNC8xMworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGdjYy9jcC9sYW5nLXNwZWNzLmggfCAyICstCisgZ2NjL2djYy5jICAgICAgICAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jcC9sYW5nLXNwZWNzLmggYi9nY2MvY3AvbGFuZy1zcGVjcy5oCitpbmRleCBjNmU0MmVkYTI4My4uZTFkZGYwNjY0NjcgMTAwNjQ0CistLS0gYS9nY2MvY3AvbGFuZy1zcGVjcy5oCisrKysgYi9nY2MvY3AvbGFuZy1zcGVjcy5oCitAQCAtNjYsNSArNjYsNSBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICAgeyIuaWkiLCAiQGMrKy1jcHAtb3V0cHV0IiwgMCwgMCwgMH0sCisgICB7IkBjKystY3BwLW91dHB1dCIsCisgICAgICAgIiV7IUU6JXshTToleyFNTToiCistICAgICAgIiAgY2MxcGx1cyAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAlMiIKKysgICAgICAiICBjYzFwbHVzIC1mcHJlcHJvY2Vzc2VkICVpICVJICUoY2MxX29wdGlvbnMpICUyIgorICAgICAgICIgICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCA3ZGE5YzVkNDU3Yi4uNGU3YzQ1YjI2OGMgMTAwNjQ0CistLS0gYS9nY2MvZ2NjLmMKKysrKyBiL2djYy9nY2MuYworQEAgLTEzNDksNyArMTM0OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcGlsZXIgZGVmYXVsdF9jb21waWxlcnNbXSA9CisgCQkJCQkgICAlV3tvKjotLW91dHB1dC1wY2g9JSp9fSVWfX19fX19fSIsIDAsIDAsIDB9LAorICAgeyIuaSIsICJAY3BwLW91dHB1dCIsIDAsIDAsIDB9LAorICAgeyJAY3BwLW91dHB1dCIsCistICAgIiV7IU06JXshTU06JXshRTpjYzEgLWZwcmVwcm9jZXNzZWQgJWkgJShjYzFfb3B0aW9ucykgJXshZnN5bnRheC1vbmx5OiUoaW52b2tlX2FzKX19fX0iLCAwLCAwLCAwfSwKKysgICAiJXshTToleyFNTToleyFFOmNjMSAtZnByZXByb2Nlc3NlZCAlaSAlSSAlKGNjMV9vcHRpb25zKSAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAorICAgeyIucyIsICJAYXNzZW1ibGVyIiwgMCwgMCwgMH0sCisgICB7IkBhc3NlbWJsZXIiLAorICAgICIleyFNOiV7IU1NOiV7IUU6JXshUzphcyAlKGFzbV9kZWJ1ZykgJShhc21fb3B0aW9ucykgJWkgJUEgfX19fSIsIDAsIDAsIDB9LAorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxMC1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxMC1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4MTAzYjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDEwLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2gKQEAgLTAsMCArMSw1NyBAQAorRnJvbSAzNzRhYWI2YTg4MjAwZmJkNzM0MzQ2N2Q5N2Y3ZWU2NDU1YmJjZTYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjM6MDggKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxMC8zOV0gTUlQUzY0OiBEZWZhdWx0IHRvIE42NCBBQkkKKworTUlQUzY0IGRlZmF1bHRzIHRvIG4zMiBBQkksIHRoaXMgcGF0Y2ggbWFrZXMgaXQKK3NvIHRoYXQgaXQgZGVmYXVsdHMgdG8gTjY0IEFCSQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZyBzcGVjaWZpY10KKy0tLQorIGdjYy9jb25maWcuZ2NjIHwgMTAgKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnLmdjYyBiL2djYy9jb25maWcuZ2NjCitpbmRleCBiMjI4MmVjZGYwYi4uNjljMGU0YTAwNWIgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnLmdjYworKysrIGIvZ2NjL2NvbmZpZy5nY2MKK0BAIC0yMjgyLDI5ICsyMjgyLDI5IEBAIG1pcHMqLSotbGludXgqKQkJCQkjIExpbnV4IE1JUFMsIGVpdGhlciBlbmRpYW4uCisgCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczMyCisgCQkJOzsKKyAJCW1pcHM2NGVsLXN0LWxpbnV4LWdudSkKKy0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgorKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKKyAJCQl0bV9maWxlPSIke3RtX2ZpbGV9IG1pcHMvc3QuaCIKKyAJCQl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IG1pcHMvdC1zdCIKKyAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKKyAJCQk7OworIAkJbWlwczY0b2N0ZW9uKi0qLWxpbnV4KikKKy0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgorKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKKyAJCQl0bV9kZWZpbmVzPSIke3RtX2RlZmluZXN9IE1JUFNfQ1BVX1NUUklOR19ERUZBVUxUPVxcXCJvY3Rlb25cXFwiIgorIAkJCXRhcmdldF9jcHVfZGVmYXVsdD1NQVNLX1NPRlRfRkxPQVRfQUJJCisgCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCisgCQkJOzsKKyAJCW1pcHNpc2E2NHI2Ki0qLWxpbnV4KikKKy0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgorKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKKyAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzNjRyNgorIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgorIAkJCTs7CisgCQltaXBzaXNhNjRyMiotKi1saW51eCopCistCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKKysJCQlkZWZhdWx0X21pcHNfYWJpPTY0CisgCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczY0cjIKKyAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKKyAJCQk7OworIAkJbWlwczY0Ki0qLWxpbnV4KiB8IG1pcHNpc2E2NCotKi1saW51eCopCistCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKKysJCQlkZWZhdWx0X21pcHNfYWJpPTY0CisgCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCisgCQkJOzsKKyAJZXNhYworLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5ZDU2M2QKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDExLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2gKQEAgLTAsMCArMSwyNDYgQEAKK0Zyb20gZGNkNzg5MWQ2YWVhNTMyNzk2OTEzMmZlYTZjYTRjMTk5ZjE0ZTk4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI0OjUwICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTEvMzldIERlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBhbmQgVUNMSUJDX0RZTkFNSUNfTElOS0VSCisgcmVsYXRpdmUgdG8gU1lTVEVNTElCU19ESVIKKworVGhpcyBwYXRjaCBkZWZpbmVzIEdMSUJDX0RZTkFNSUNfTElOS0VSIGFuZCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIKK3JlbGF0aXZlIHRvIFNZU1RFTUxJQlNfRElSIHdoaWNoIGNhbiBiZSBzZXQgaW4gZ2VuZXJhdGVkIGhlYWRlcnMKK1RoaXMgYnJlYWtzIHRoZSBhc3N1bXB0aW9uIG9mIGhhcmRjb2RlZCBtdWx0aWxpYiBpbiBnY2MKK0NoYW5nZSBpcyBvbmx5IGZvciB0aGUgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMgaW4gT0UgaW5jbHVkaW5nCitTSCwgc3BhcmMsIGFscGhhIGZvciBwb3NzaWJsZSBmdXR1cmUgc3VwcG9ydCAoaWYgYW55KQorCitSZW1vdmVzIHRoZSBkb19oZWFkZXJmaXggdGFzayBpbiBtZXRhZGF0YQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZ3VyYXRpb25dCistLS0KKyBnY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oIHwgIDQgKystLQorIGdjYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCAgfCAgNCArKy0tCisgZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmggICB8ICAyICstCisgZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmggICAgICB8ICAyICstCisgZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaCAgICB8ICA2ICsrKy0tLQorIGdjYy9jb25maWcvbGludXguaCAgICAgICAgICAgfCAgOCArKysrLS0tLQorIGdjYy9jb25maWcvbWlwcy9saW51eC5oICAgICAgfCAxMiArKysrKystLS0tLS0KKyBnY2MvY29uZmlnL3Jpc2N2L2xpbnV4LmggICAgIHwgIDIgKy0KKyBnY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggIHwgMTUgKysrKystLS0tLS0tLS0tCisgZ2NjL2NvbmZpZy9zaC9saW51eC5oICAgICAgICB8ICAyICstCisgZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oICAgICB8ICAyICstCisgZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmggICB8ICA0ICsrLS0KKyAxMiBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmggYi9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCitpbmRleCA4MjQ4NjFiZWZlYy4uNmFmYWNjZTMyOTIgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCisrKysgYi9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCitAQCAtMjMsOCArMjMsOCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICNkZWZpbmUgRVhUUkFfU1BFQ1MgXAorIHsgImVsZl9keW5hbWljX2xpbmtlciIsIEVMRl9EWU5BTUlDX0xJTktFUiB9LAorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIJIi9saWIvbGQtbGludXguc28uMiIKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSCVNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCisgI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQworICNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUpICIle21nbGliYzoiIEcgIjs6IiBVICJ9IgorICNlbGlmIERFRkFVTFRfTElCQyA9PSBMSUJDX0dMSUJDCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCitpbmRleCA2NmVjMGVhMzk4MC4uZTRhZGUyZTJhYjAgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKKysrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAorQEAgLTY1LDggKzY1LDggQEAKKyAgICBHTElCQ19EWU5BTUlDX0xJTktFUl9ERUZBVUxUIGFuZCBUQVJHRVRfREVGQVVMVF9GTE9BVF9BQkkuICAqLworIAorICN1bmRlZiAgR0xJQkNfRFlOQU1JQ19MSU5LRVIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgIi9saWIvbGQtbGludXguc28uMyIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0hBUkRfRkxPQVQgIi9saWIvbGQtbGludXgtYXJtaGYuc28uMyIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjMiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9IQVJEX0ZMT0FUIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hcm1oZi5zby4zIgorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfREVGQVVMVCBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUCisgCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBcCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAoraW5kZXggOWEzNjBkZWZkMjEuLjk4ZjZlOTYwYjY0IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmgKKysrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oCitAQCAtNjAsNyArNjAsNyBAQAorIAorICNkZWZpbmUgTElCR0NDX1NQRUMgIiV7bWZsb2F0LWFiaT1zb2Z0KjotbGZsb2F0fSAtbGdjYyIKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKyAKKyAjZGVmaW5lIExJTlVYX1RBUkdFVF9MSU5LX1NQRUMgICIle2gqfSBcCisgICAgJXtzdGF0aWM6LUJzdGF0aWN9IFwKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvbGludXguaCBiL2djYy9jb25maWcvaTM4Ni9saW51eC5oCitpbmRleCA5YTZlMmQ5OTg5Ni4uMzFlZmJiNzMwMTYgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2kzODYvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKK0BAIC0yMCw3ICsyMCw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKyAKKyAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OICJlbGZfaTM4NiIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUgorICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAoraW5kZXggYzA4MjIxYzQyMTAuLmRiYjQ3NGQ3OTJiIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAorKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAorQEAgLTI3LDkgKzI3LDkgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisgI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTjY0ICJlbGZfeDg2XzY0IgorICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT05YMzIgImVsZjMyX3g4Nl82NCIKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbGludXguc28uMiIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMiIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyICIvbGlieDMyL2xkLWxpbnV4LXgzMi5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXg4Ni02NC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXgzMi5zby4yIgorIAorICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2xpbnV4LmggYi9nY2MvY29uZmlnL2xpbnV4LmgKK2luZGV4IGMzYzRhMjE5ZTY3Li40YjA1ZDhlOTNkMSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9saW51eC5oCitAQCAtOTQsMTAgKzk0LDEwIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSIG11c3QgYmUgZGVmaW5lZCBmb3IgZWFjaCB0YXJnZXQgdXNpbmcgdGhlbSwgb3IKKyAgICBHTElCQ19EWU5BTUlDX0xJTktFUjMyIGFuZCBHTElCQ19EWU5BTUlDX0xJTktFUjY0IGZvciB0YXJnZXRzCisgICAgc3VwcG9ydGluZyBib3RoIDMyLWJpdCBhbmQgNjQtYml0IGNvbXBpbGF0aW9uLiAgKi8KKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLXVDbGliYy5zby4wIgorLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWIvbGQ2NC11Q2xpYmMuc28uMCIKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiAiL2xpYi9sZHgzMi11Q2xpYmMuc28uMCIKKysjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMCIKKysjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiBTWVNURU1MSUJTX0RJUiAibGR4MzItdUNsaWJjLnNvLjAiCisgI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIgIi9zeXN0ZW0vYmluL2xpbmtlciIKKyAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUjMyICIvc3lzdGVtL2Jpbi9saW5rZXIiCisgI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVI2NCAiL3N5c3RlbS9iaW4vbGlua2VyNjQiCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggYi9nY2MvY29uZmlnL21pcHMvbGludXguaAoraW5kZXggNmY3OWFjOWMwMWEuLjI1ZGU5NmY5NTYxIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvbWlwcy9saW51eC5oCitAQCAtMjIsMjAgKzIyLDIwIEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTk4zMiAiZWxmMzIle0VCOmJ9JXtFTDpsfXRzbWlwbjMyIgorIAorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBcCistICAiJXttbmFuPTIwMDg6L2xpYi9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYi9sZC5zby4xfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKKy0gICIle21uYW49MjAwODovbGliNjQvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWI2NC9sZC5zby4xfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUk4zMiBcCistICAiJXttbmFuPTIwMDg6L2xpYjMyL2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliMzIvbGQuc28uMX0iCisrICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgorIAorICN1bmRlZiBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMgorICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgXAorLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliL2xkLXVDbGliYy5zby4wfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wfSIKKyAjdW5kZWYgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQKKyAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKKy0gICIle21uYW49MjAwODovbGliL2xkNjQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliL2xkNjQtdUNsaWJjLnNvLjB9IgorKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy5zby4wfSIKKyAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUk4zMiBcCistICAiJXttbmFuPTIwMDg6L2xpYjMyL2xkLXVDbGliYy1taXBzbjguc28uMDs6L2xpYjMyL2xkLXVDbGliYy5zby4wfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wfSIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUjMyCisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgXAorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvbGludXguaCBiL2djYy9jb25maWcvcmlzY3YvbGludXguaAoraW5kZXggNThkZDE4Yjg5ZjMuLjExMmJhOWNkNzY0IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL3Jpc2N2L2xpbnV4LmgKK0BAIC0yMiw3ICsyMiw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgICAgIEdOVV9VU0VSX1RBUkdFVF9PU19DUFBfQlVJTFRJTlMoKTsJCQkJXAorICAgfSB3aGlsZSAoMCkKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LXJpc2N2IiBYTEVOX1NQRUMgIi0iIEFCSV9TUEVDICIuc28uMSIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1yaXNjdiIgWExFTl9TUEVDICItIiBBQklfU1BFQyAiLnNvLjEiCisgCisgI2RlZmluZSBNVVNMX0FCSV9TVUZGSVggXAorICAgIiV7bWFiaT1pbHAzMjotc2Z9IiBcCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCitpbmRleCA5OTQ2ZDNmZWQ5NC4uNDVhOWE3Y2FlNTkgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKKysrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAorQEAgLTQyMywyNCArNDIzLDE5IEBAIGV4dGVybiBpbnQgZG90X3N5bWJvbHM7CisgI3VuZGVmCUxJTktfT1NfREVGQVVMVF9TUEVDCisgI2RlZmluZSBMSU5LX09TX0RFRkFVTFRfU1BFQyAiJShsaW5rX29zX2xpbnV4KSIKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWIvbGQuc28uMSIKKy0KKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLnNvLjEiCisgI2lmZGVmIExJTlVYNjRfREVGQVVMVF9BQklfRUxGdjIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAorLSIle21hYmk9ZWxmdjE6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMTsiIFwKKy0iOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjJ9IgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYxOiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4yfSIKKyAjZWxzZQorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCistIiV7bWFiaT1lbGZ2MjolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4yOyIgXAorLSI6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMX0iCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIle21hYmk9ZWxmdjI6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4yOzoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjF9IgorICNlbmRpZgorIAorICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiBcCistICAiL2xpYi9sZC1tdXNsLXBvd2VycGMiIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCisrICBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1wb3dlcnBjIiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bXNvZnQtZmxvYXQ6LXNmfS5zby4xIgorICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSNjQKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVI2NCBcCistICAiL2xpYi9sZC1tdXNsLXBvd2VycGM2NCIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKKysgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLXBvd2VycGM2NCIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKKyAKKyAjdW5kZWYgIERFRkFVTFRfQVNNX0VORElBTgorICNpZiAoVEFSR0VUX0RFRkFVTFQgJiBNQVNLX0xJVFRMRV9FTkRJQU4pCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9zaC9saW51eC5oIGIvZ2NjL2NvbmZpZy9zaC9saW51eC5oCitpbmRleCBjOTg5N2I3YWNhNS4uODJmMjc1MzE5Y2MgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3NoL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvc2gvbGludXguaAorQEAgLTY0LDcgKzY0LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAgICIvbGliL2xkLW11c2wtc2giIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSBNVVNMX0RZTkFNSUNfTElOS0VSX0ZQIFwKKyAgICIle21mZHBpYzotZmRwaWN9LnNvLjEiCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCisgCisgI3VuZGVmIFNVQlRBUkdFVF9MSU5LX0VNVUxfU1VGRklYCisgI2RlZmluZSBTVUJUQVJHRVRfTElOS19FTVVMX1NVRkZJWCAiJXttZmRwaWM6X2ZkOzpfbGludXh9IgorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc3BhcmMvbGludXguaCBiL2djYy9jb25maWcvc3BhcmMvbGludXguaAoraW5kZXggMDg0NzZmMWQ5NGQuLjgwNDQwZTcxMmFkIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgKK0BAIC04NCw3ICs4NCw3IEBAIGV4dGVybiBjb25zdCBjaGFyICpob3N0X2RldGVjdF9sb2NhbF9jcHUgKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndik7CisgICAgV2hlbiB0aGUgLXNoYXJlZCBsaW5rIG9wdGlvbiBpcyB1c2VkIGEgZmluYWwgbGluayBpcyBub3QgYmVpbmcKKyAgICBkb25lLiAgKi8KKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKyAKKyAjdW5kZWYgIExJTktfU1BFQworICNkZWZpbmUgTElOS19TUEVDICItbSBlbGYzMl9zcGFyYyAle3NoYXJlZDotc2hhcmVkfSBcCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmggYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAoraW5kZXggNzg5ZDFkZjRiZDUuLmI5MjBjNjgwZmIxIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKKysrKyBiL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCitAQCAtODQsOCArODQsOCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICAgIFdoZW4gdGhlIC1zaGFyZWQgbGluayBvcHRpb24gaXMgdXNlZCBhIGZpbmFsIGxpbmsgaXMgbm90IGJlaW5nCisgICAgZG9uZS4gICovCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLWxpbnV4LnNvLjIiCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliNjQvbGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorIAorICNpZmRlZiBTUEFSQ19CSV9BUkNICisgCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDEyLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTItZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkOTg4NzgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDEyLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIGZhYTBmNzEyYTY3MDA1ZWYwMjYwZjk1ZWViZTdjN2M1N2E2ZjgzNjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyNjozNyArMDQwMAorU3ViamVjdDogW1BBVENIIDEyLzM5XSBnY2M6IEZpeCBhcmd1bWVudCBsaXN0IHRvbyBsb25nIGVycm9yLgorCitUaGVyZSB3b3VsZCBiZSBhbiAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiB0aGUKK2J1aWxkIGRpcmVjdG9yeSBpcyBsb25nZXIgdGhhbiAyMDAsIHRoaXMgaXMgY2F1c2VkIGJ5OgorCitoZWFkZXJzPWBlY2hvICQoUExVR0lOX0hFQURFUlMpIHwgdHIgJyAnICdcMDEyJyB8IHNvcnQgLXVgCisKK1RoZSBQTFVHSU5fSEVBREVSUyBpcyB0b28gbG9uZyBiZWZvcmUgc29ydCwgc28gdGhlICJlY2hvIiBjYW4ndCBoYW5kbGUKK2l0LCB1c2UgdGhlICQoc29ydCBsaXN0KSBvZiBHTlUgbWFrZSB3aGljaCBjYW4gaGFuZGxlIHRoZSB0b28gbG9uZyBsaXN0Cit3b3VsZCBmaXggdGhlIHByb2JsZW0sIHRoZSBoZWFkZXIgd291bGQgYmUgc2hvcnQgZW5vdWdoIGFmdGVyIHNvcnRlZC4KK1RoZSAidHIgJyAnICdcMDEyJyIgd2FzIHVzZWQgZm9yIHRyYW5zbGF0aW5nIHRoZSBzcGFjZSB0byAiXG4iLCB0aGUKKyQoc29ydCBsaXN0KSBkb2Vzbid0IG5lZWQgdGhpcy4KKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGdjYy9NYWtlZmlsZS5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgoraW5kZXggZmVmNmM0YzYxZTMuLjU3Y2Y3ODA0ZjBhIDEwMDY0NAorLS0tIGEvZ2NjL01ha2VmaWxlLmluCisrKysgYi9nY2MvTWFrZWZpbGUuaW4KK0BAIC0zNTM4LDcgKzM1MzgsNyBAQCBpbnN0YWxsLXBsdWdpbjogaW5zdGFsbGRpcnMgbGFuZy5pbnN0YWxsLXBsdWdpbiBzLWhlYWRlci12YXJzIGluc3RhbGwtZ2VuZ3R5cGUKKyAjIFdlIGtlZXAgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGZpbGVzIGluIGNvbmZpZyBvciBjLWZhbWlseSBhbmQgLmRlZgorICMgZmlsZXMuIEFsbCBvdGhlciBmaWxlcyBhcmUgZmxhdHRlbmVkIHRvIGEgc2luZ2xlIGRpcmVjdG9yeS4KKyAJJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChwbHVnaW5faW5jbHVkZWRpcikKKy0JaGVhZGVycz1gZWNobyAkKFBMVUdJTl9IRUFERVJTKSAkJChjZCAkKHNyY2Rpcik7IGVjaG8gKi5oICouZGVmKSB8IHRyICcgJyAnXDAxMicgfCBzb3J0IC11YDsgXAorKwloZWFkZXJzPSIkKHNvcnQgJChQTFVHSU5fSEVBREVSUykgJCQoY2QgJChzcmNkaXIpOyBlY2hvICouaCAqLmRlZikpIjsgXAorIAlzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqfF0vXFxcXCYvZydgOyBcCisgCWZvciBmaWxlIGluICQkaGVhZGVyczsgZG8gXAorIAkgIGlmIFsgLWYgJCRmaWxlIF0gOyB0aGVuIFwKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTMtRGlzYWJsZS1zZHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDEzLURpc2FibGUtc2R0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1NTg1ODMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDEzLURpc2FibGUtc2R0LnBhdGNoCkBAIC0wLDAgKzEsMTEzIEBACitGcm9tIDRkZjVhNzQ3MjY1OTgzMDkyYWZkNmZiYzUzMjlkZDgwOGNjMWRhM2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyODoxMCArMDQwMAorU3ViamVjdDogW1BBVENIIDEzLzM5XSBEaXNhYmxlIHNkdC4KKworV2UgZG9uJ3QgbGlzdCBkdHJhY2UgaW4gREVQRU5EUyBzbyB3ZSBzaG91bGRuJ3QgYmUgZGVwZW5kaW5nIG9uIHRoaXMgaGVhZGVyLgorSXQgbWF5IG9yIG1heSBub3QgZXhpc3QgZnJvbSBwcmVpdm91cyBidWlsZHMgdGhvdWdoLiBUbyBiZSBkZXRlcm1pbnN0aWMsIGRpc2FibGUKK3NkdC5oIHVzYWdlIGFsd2F5cy4gVGhpcyBhdm9pZHMgYnVpbGQgZmFpbHVyZXMgaWYgdGhlIGhlYWRlciBpcyByZW1vdmVkIGFmdGVyIGNvbmZpZ3VyZQorYnV0IGJlZm9yZSBsaWJnY2MgaXMgY29tcGlsZWQgZm9yIGV4YW1wbGUuCisKK1JQIDIwMTIvOC83CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0Rpc2FibGUgc2R0IGZvciBsaWJzdGRjKystdjMuCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2hhY2tdCistLS0KKyBnY2MvY29uZmlndXJlICAgICAgICAgICAgIHwgMTIgKysrKysrLS0tLS0tCisgZ2NjL2NvbmZpZ3VyZS5hYyAgICAgICAgICB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQorIGxpYnN0ZGMrKy12My9jb25maWd1cmUgICAgfCAgNiArKystLS0KKyBsaWJzdGRjKystdjMvY29uZmlndXJlLmFjIHwgIDIgKy0KKyA0IGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IGVkNzkzMWRhZWQzLi41MmY1MmIwZWM4NiAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC0yOTMzMywxMiArMjkzMzMsMTIgQEAgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeSIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5Li4uICIgPiY2OyB9CisgaGF2ZV9zeXNfc2R0X2g9bm8KKy1pZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KKy0gIGhhdmVfc3lzX3NkdF9oPXllcworLQorLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCisrI2lmIHRlc3QgLWYgJHRhcmdldF9oZWFkZXJfZGlyL3N5cy9zZHQuaDsgdGhlbgorKyMgIGhhdmVfc3lzX3NkdF9oPXllcworKyMKKysjJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCisrIworKyNmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGF2ZV9zeXNfc2R0X2giID4mNQorICRhc19lY2hvICIkaGF2ZV9zeXNfc2R0X2giID4mNjsgfQorIAorZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCitpbmRleCBlMDUwMGUzMGQ1MC4uMjQyYWQyOGVjODMgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlndXJlLmFjCisrKysgYi9nY2MvY29uZmlndXJlLmFjCitAQCAtNTk5NSwxNSArNTk5NSwxNSBAQCBmaQorIEFDX1NVQlNUKFtlbmFibGVfZGVmYXVsdF9zc3BdKQorIAorICMgVGVzdCBmb3IgPHN5cy9zZHQuaD4gb24gdGhlIHRhcmdldC4KKy1HQ0NfVEFSR0VUX1RFTVBMQVRFKFtIQVZFX1NZU19TRFRfSF0pCistQUNfTVNHX0NIRUNLSU5HKHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeSkKKy1oYXZlX3N5c19zZHRfaD1ubworLWlmIHRlc3QgLWYgJHRhcmdldF9oZWFkZXJfZGlyL3N5cy9zZHQuaDsgdGhlbgorLSAgaGF2ZV9zeXNfc2R0X2g9eWVzCistICBBQ19ERUZJTkUoSEFWRV9TWVNfU0RUX0gsIDEsCistICAgICAgICAgICAgW0RlZmluZSBpZiB5b3VyIHRhcmdldCBDIGxpYnJhcnkgcHJvdmlkZXMgc3lzL3NkdC5oXSkKKy1maQorLUFDX01TR19SRVNVTFQoJGhhdmVfc3lzX3NkdF9oKQorKyNHQ0NfVEFSR0VUX1RFTVBMQVRFKFtIQVZFX1NZU19TRFRfSF0pCisrI0FDX01TR19DSEVDS0lORyhzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkpCisrI2hhdmVfc3lzX3NkdF9oPW5vCisrI2lmIHRlc3QgLWYgJHRhcmdldF9oZWFkZXJfZGlyL3N5cy9zZHQuaDsgdGhlbgorKyMgIGhhdmVfc3lzX3NkdF9oPXllcworKyMgIEFDX0RFRklORShIQVZFX1NZU19TRFRfSCwgMSwKKysjICAgICAgICAgICAgW0RlZmluZSBpZiB5b3VyIHRhcmdldCBDIGxpYnJhcnkgcHJvdmlkZXMgc3lzL3NkdC5oXSkKKysjZmkKKysjQUNfTVNHX1JFU1VMVCgkaGF2ZV9zeXNfc2R0X2gpCisgCisgIyBDaGVjayBpZiBURm1vZGUgbG9uZyBkb3VibGUgc2hvdWxkIGJlIHVzZWQgYnkgZGVmYXVsdCBvciBub3QuCisgIyBTb21lIGdsaWJjIHRhcmdldHMgdXNlZCBERm1vZGUgbG9uZyBkb3VibGUsIGJ1dCB3aXRoIGdsaWJjIDIuNAorZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUgYi9saWJzdGRjKystdjMvY29uZmlndXJlCitpbmRleCAxMjI1ZWRjNTk2Yi4uM2I4OWI4ODBmYzggMTAwNzU1CistLS0gYS9saWJzdGRjKystdjMvY29uZmlndXJlCisrKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlCitAQCAtMjIzMjUsMTEgKzIyMzI1LDExIEBAIGFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKKyBhY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworIGFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKyAKKy0gIGlmIHRlc3QgJGdsaWJjeHhfY3Zfc3lzX3NkdF9oID0geWVzOyB0aGVuCisrIyAgaWYgdGVzdCAkZ2xpYmN4eF9jdl9zeXNfc2R0X2ggPSB5ZXM7IHRoZW4KKyAKKy0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKKysjJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCisgCistICBmaQorKyMgIGZpCisgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsaWJjeHhfY3Zfc3lzX3NkdF9oIiA+JjUKKyAkYXNfZWNobyAiJGdsaWJjeHhfY3Zfc3lzX3NkdF9oIiA+JjY7IH0KKyAKK2RpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlLmFjIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYworaW5kZXggZDg0NTVlNDE1NzQuLjg0NGNmMWFjYmNlIDEwMDY0NAorLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYworKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYworQEAgLTIzMiw3ICsyMzIsNyBAQCBHTElCQ1hYX0NIRUNLX1NDX05QUk9DRVNTT1JTX09OTE4KKyBHTElCQ1hYX0NIRUNLX1NDX05QUk9DX09OTE4KKyBHTElCQ1hYX0NIRUNLX1BUSFJFQURTX05VTV9QUk9DRVNTT1JTX05QCisgR0xJQkNYWF9DSEVDS19TWVNDVExfSFdfTkNQVQorLUdMSUJDWFhfQ0hFQ0tfU0RUX0gKKysjR0xJQkNYWF9DSEVDS19TRFRfSAorIAorICMgQ2hlY2sgZm9yIGF2YWlsYWJsZSBoZWFkZXJzLgorIEFDX0NIRUNLX0hFQURFUlMoW2VuZGlhbi5oIGV4ZWNpbmZvLmggZmxvYXQuaCBmcC5oIGllZWVmcC5oIGludHR5cGVzLmggXAorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxNC1saWJ0b29sLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxNC1saWJ0b29sLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NTM4NTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE0LWxpYnRvb2wucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSAzNDk3N2Q5OTQ2NjZhOTA5ODNjOTZhOTI0MGRmYTM1NDA1NjJkYTM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6Mjk6MTEgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxNC8zOV0gbGlidG9vbAorCitsaWJzdGRjKysgZnJvbSBnY2MtcnVudGltZSBnZXRzIGNyZWF0ZWQgd2l0aCAtcnBhdGg9L3Vzci9saWIvLi4vbGliIGZvciBxZW11eDg2LTY0Cit3aGVuIHJ1bm5pbmcgb24gYW0geDg2XzY0IGJ1aWxkIGhvc3QuCisKK1RoaXMgcGF0Y2ggc3RvcHMgdGhpcyBzcGVhZGluZyB0byBsaWJkaXIgaW4gdGhlIGxpYnN0ZGMrKy5sYSBmaWxlIHdpdGhpbiBsaWJ0b29sLgorQXJndWFibHksIGl0IHNob3VsZG4ndCBiZSBwYXNzaW5nIHRoaXMgaW50byBsaWJ0b29sIGluIHRoZSBmaXJzdCBwbGFjZSBidXQKK2ZvciBub3cgdGhpcyByZXNvbHZlcyB0aGUgbmFzdGllc3QgcHJvYmxlbXMgdGhpcyBjYXVzZXMuCisKK2Z1bmNfbm9ybWFsX2Fic3BhdGggd291bGQgcmVzb2x2ZSBhbiBlbXB0eSBwYXRoIHRvIGBwd2RgIHNvIHdlIG5lZWQKK3RvIGZpbHRlciB0aGUgemVybyBjYXNlLgorCitSUCAyMDEyLzgvMjQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBsdG1haW4uc2ggfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKK2luZGV4IDc5ZjliYTg5YWY1Li44ZTIyMmY3YzE2YiAxMDA2NDQKKy0tLSBhL2x0bWFpbi5zaAorKysrIGIvbHRtYWluLnNoCitAQCAtNjM1OSw2ICs2MzU5LDEwIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCWZ1bmNfd2FybmluZyAiaWdub3JpbmcgbXVsdGlwbGUgXGAtcnBhdGgncyBmb3IgYSBsaWJ0b29sIGxpYnJhcnkiCisgCisgICAgICAgaW5zdGFsbF9saWJkaXI9IiQxIgorKyAgICAgIGlmIHRlc3QgLW4gIiRpbnN0YWxsX2xpYmRpciI7IHRoZW4KKysJZnVuY19ub3JtYWxfYWJzcGF0aCAiJGluc3RhbGxfbGliZGlyIgorKwlpbnN0YWxsX2xpYmRpcj0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKKysgICAgICBmaQorIAorICAgICAgIG9sZGxpYnM9CisgICAgICAgaWYgdGVzdCAteiAiJHJwYXRoIjsgdGhlbgorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxNS1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxNS1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0NDQ1MjQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE1LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSA0NTU4YmE3ZmEwMjBjMTExZjlhMjA0MDIxYTQxOGMwY2U1NWQ3N2Y5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MzA6MzIgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxNS8zOV0gZ2NjOiBhcm12NDogcGFzcyBmaXgtdjRieCB0byBsaW5rZXIgdG8gc3VwcG9ydCBFQUJJLgorCitUaGUgTElOS19TUEVDIGZvciBsaW51eCBnZXRzIG92ZXJ3cml0dGVuIGJ5IGxpbnV4LWVhYmkuaCB3aGljaAorbWVhbnMgdGhlIHZhbHVlIG9mIFRBUkdFVF9GSVhfVjRCWF9TUEVDIGdldHMgbG9zdCBhbmQgYXMgYSByZXN1bHQKK3RoZSBvcHRpb24gaXMgbm90IHBhc3NlZCB0byBsaW5rZXIgd2hlbiBjaG9zaW5nIG1hcmNoPWFybXY0CitUaGlzIHBhdGNoIHJlZGVmaW5lcyB0aGlzIGluIGxpbnV4LWVhYmkuaCBhbmQgcmVpbnNlcnRzIGl0Citmb3IgZWFiaSBkZWZhdWx0aW5nIHRvb2xjaGFpbnMuCisKK1dlIG1pZ2h0IHdhbnQgdG8gc2VuZCBpdCB1cHN0cmVhbS4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBnY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggfCA2ICsrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAoraW5kZXggZTRhZGUyZTJhYjAuLjEwODg2M2Y2OWQyIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCisrKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKK0BAIC05MSwxMCArOTEsMTQgQEAKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgXAorICAgIi9saWIvbGQtbXVzbC1hcm0iIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttZmxvYXQtYWJpPWhhcmQ6aGZ9LnNvLjEiCisgCisrLyogRm9yIGFybXY0IHdlIHBhc3MgLS1maXgtdjRieCB0byBsaW5rZXIgdG8gc3VwcG9ydCBFQUJJICovCisrI3VuZGVmIFRBUkdFVF9GSVhfVjRCWF9TUEVDCisrI2RlZmluZSBUQVJHRVRfRklYX1Y0QlhfU1BFQyAiJXttY3B1PWFybTh8bWNwdT1hcm04MTB8bWNwdT1zdHJvbmdhcm0qfG1hcmNoPWFybXY0OiAtLWZpeC12NGJ4fSIKKysKKyAvKiBBdCB0aGlzIHBvaW50LCBicGFiaS5oIHdpbGwgaGF2ZSBjbG9iYmVyZWQgTElOS19TUEVDLiAgV2Ugd2FudCB0bworICAgIHVzZSB0aGUgR05VL0xpbnV4IHZlcnNpb24sIG5vdCB0aGUgZ2VuZXJpYyBCUEFCSSB2ZXJzaW9uLiAgKi8KKyAjdW5kZWYgIExJTktfU1BFQworLSNkZWZpbmUgTElOS19TUEVDIEVBQklfTElOS19TUEVDCQkJCQlcCisrI2RlZmluZSBMSU5LX1NQRUMgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgRUFCSV9MSU5LX1NQRUMJCQlcCisgICBMSU5VWF9PUl9BTkRST0lEX0xEIChMSU5VWF9UQVJHRVRfTElOS19TUEVDLAkJCQlcCisgCQkgICAgICAgTElOVVhfVEFSR0VUX0xJTktfU1BFQyAiICIgQU5EUk9JRF9MSU5LX1NQRUMpCisgCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE2LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE2LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYwODMzYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTYtVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaApAQCAtMCwwICsxLDEwMiBAQAorRnJvbSA3ZWZmYzYzMmQ2NWMyZDcyYmY2ZmEzMmEyMTllYzJmODJmZWY5NDA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MzM6MDQgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxNi8zOV0gVXNlIHRoZSBtdWx0aWxpYiBjb25maWcgZmlsZXMgZnJvbSAke0J9IGluc3RlYWQgb2YKKyB1c2luZyB0aGUgb25lcyBmcm9tICR7U30KKworVXNlIHRoZSBtdWx0aWxpYiBjb25maWcgZmlsZXMgZnJvbSAke0J9IGluc3RlYWQgb2YgdXNpbmcgdGhlIG9uZXMgZnJvbSAke1N9CitzbyB0aGF0IHRoZSBzb3VyY2UgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGdjYy1jcm9zcy1pbml0aWFsLAorZ2NjLWNyb3NzLWludGVybWVkaWF0ZSwgZ2NjLWNyb3NzLCBnY2MtcnVudGltZSwgYW5kIGFsc28gdGhlIHNkayBidWlsZC4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENvbnN0YW50aW4gTXVzY2EgPGNvbnN0YW50aW54Lm11c2NhQGludGVsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorLS0tCisgZ2NjL2NvbmZpZ3VyZSAgICB8IDIyICsrKysrKysrKysrKysrKysrKy0tLS0KKyBnY2MvY29uZmlndXJlLmFjIHwgMjIgKysrKysrKysrKysrKysrKysrLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCitpbmRleCA1MmY1MmIwZWM4Ni4uYTVmMjA4YWY3Y2YgMTAwNzU1CistLS0gYS9nY2MvY29uZmlndXJlCisrKysgYi9nY2MvY29uZmlndXJlCitAQCAtMTIzMjIsMTAgKzEyMzIyLDIwIEBAIGRvbmUKKyB0bWFrZV9maWxlXz0KKyBmb3IgZiBpbiAke3RtYWtlX2ZpbGV9CisgZG8KKy0JaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCistCXRoZW4KKy0JCXRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKKy0JZmkKKysgIGNhc2UgJGYgaW4KKysgICAgKi90LWxpbnV4NjQgKQorKyAgICAgICBpZiB0ZXN0IC1mIC4vY29uZmlnLyRmCisrICAgICAgIHRoZW4KKysgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gLi9jb25maWcvJGYiCisrICAgICAgIGZpCisrICAgICAgIDs7CisrICAgICogKQorKyAgICAgICBpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKKysgICAgICAgdGhlbgorKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKKysgICAgICAgZmkKKysgICAgICAgOzsKKysgIGVzYWMKKyBkb25lCisgdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlX30iCisgCitAQCAtMTIzMzYsNiArMTIzNDYsMTAgQEAgdG1fZmlsZV9saXN0PSJvcHRpb25zLmgiCisgdG1faW5jbHVkZV9saXN0PSJvcHRpb25zLmggaW5zbi1jb25zdGFudHMuaCIKKyBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KKyAgIGNhc2UgJGYgaW4KKysgICAgKi9saW51eDY0LmggKQorKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuL2NvbmZpZy8kZiIKKysgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi9jb25maWcvJGYiCisrICAgICAgIDs7CisgICAgIC4vKiApCisgICAgICAgIGY9YGVjaG8gJGYgfCBzZWQgJ3MvXi4uLy8nYAorICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAkZiIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggMjQyYWQyOGVjODMuLmI3YTdlYWQxYzAyIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTE5NDgsMTAgKzE5NDgsMjAgQEAgZG9uZQorIHRtYWtlX2ZpbGVfPQorIGZvciBmIGluICR7dG1ha2VfZmlsZX0KKyBkbworLQlpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKKy0JdGhlbgorLQkJdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IFwkKHNyY2RpcikvY29uZmlnLyRmIgorLQlmaQorKyAgY2FzZSAkZiBpbgorKyAgICAqL3QtbGludXg2NCApCisrICAgICAgIGlmIHRlc3QgLWYgLi9jb25maWcvJGYKKysgICAgICAgdGhlbgorKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSAuL2NvbmZpZy8kZiIKKysgICAgICAgZmkKKysgICAgICAgOzsKKysgICAgKiApCisrICAgICAgIGlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgorKyAgICAgICB0aGVuCisrICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IFwkKHNyY2RpcikvY29uZmlnLyRmIgorKyAgICAgICBmaQorKyAgICAgICA7OworKyAgZXNhYworIGRvbmUKKyB0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGVffSIKKyAKK0BAIC0xOTYyLDYgKzE5NzIsMTAgQEAgdG1fZmlsZV9saXN0PSJvcHRpb25zLmgiCisgdG1faW5jbHVkZV9saXN0PSJvcHRpb25zLmggaW5zbi1jb25zdGFudHMuaCIKKyBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KKyAgIGNhc2UgJGYgaW4KKysgICAgKi9saW51eDY0LmggKQorKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuL2NvbmZpZy8kZiIKKysgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi9jb25maWcvJGYiCisrICAgICAgIDs7CisgICAgIC4vKiApCisgICAgICAgIGY9YGVjaG8gJGYgfCBzZWQgJ3MvXi4uLy8nYAorICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAkZiIKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTctQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTctQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmRhMDEzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxNy1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gYTJiMmJmNzc2MjFmMzQ0YTg0OWU1NWFiMTc5ZWNlODU4N2QxOTIzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIwIEZlYiAyMDE1IDA5OjM5OjM4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMTcvMzldIEF2b2lkIHVzaW5nIGxpYmRpciBmcm9tIC5sYSB3aGljaCB1c3VhbGx5IHBvaW50cyB0byBhCisgaG9zdCBwYXRoCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEpvbmF0aGFuIExpdSA8bmV0MTQ3QGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsdG1haW4uc2ggfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAoraW5kZXggOGUyMjJmN2MxNmIuLjBhOTNiNGU1YzNiIDEwMDY0NAorLS0tIGEvbHRtYWluLnNoCisrKysgYi9sdG1haW4uc2gKK0BAIC01NjI4LDYgKzU2MjgsOSBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgorIAkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgorIAkgIGVsc2UKKysJICAgICMgSW5zdGVhZCBvZiB1c2luZyBsaWJkaXIgZnJvbSAubGEgd2hpY2ggdXN1YWxseSBwb2ludHMgdG8gYSBob3N0IHBhdGgsCisrCSAgICAjIHVzZSB0aGUgcGF0aCB0aGUgLmxhIGlzIGNvbnRhaW5lZCBpbi4KKysJICAgIGxpYmRpcj0iJGFic19sYWRpciIKKyAJICAgIGRpcj0iJGxpYmRpciIKKyAJICAgIGFic2Rpcj0iJGxpYmRpciIKKyAJICBmaQorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxOC1leHBvcnQtQ1BQLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxOC1leHBvcnQtQ1BQLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzODUwOTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE4LWV4cG9ydC1DUFAucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSBjYWZiNmE2MjFjMDVjMWYyMzg2NzlkNTJmYzAyNjQ0NmYzOGM4YWY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjAgRmViIDIwMTUgMDk6NDA6NTkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxOC8zOV0gZXhwb3J0IENQUAorCitUaGUgT0UgZW52aXJvbm1lbnQgc2V0cyBhbmQgZXhwb3J0cyBDUFAgYXMgYmVpbmcgdGhlIHRhcmdldCBnY2MuIFdoZW4KK2J1aWxkaW5nIGdjYy1jcm9zcy1jYW5hZGlhbiBmb3IgYSBtaW5ndyB0YXJnZXR0ZWQgc2RrLCB0aGUgZm9sbG93aW5nIGNhbiBiZSBmb3VuZAoraW4gYnVpbGQueDg2XzY0LXBva3lzZGstbWluZ3czMi5pNTg2LXBva3ktbGludXgvYnVpbGQteDg2XzY0LWxpbnV4L2xpYmliZXJ0eS9jb25maWcubG9nOgorCitjb25maWd1cmU6MzY0MTogY2hlY2tpbmcgZm9yIF9GSUxFX09GRlNFVF9CSVRTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMKK2NvbmZpZ3VyZTozNjY2OiBnY2MgIC1jIC1pc3lzdGVtL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2luY2x1ZGUgLU8yIC1waXBlICBjb25mdGVzdC5jID4mNQorY29uZmlndXJlOjM2NjY6ICQ/ID0gMAorY29uZmlndXJlOjM2OTg6IHJlc3VsdDogbm8KK2NvbmZpZ3VyZTozNzg2OiBjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvcgorY29uZmlndXJlOjM4NTY6IHJlc3VsdDogeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MgLUUgLS1zeXNyb290PS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LW5hdGl2ZXNkay1taW5ndzMyLXBva3lzZGstbWluZ3czMgorY29uZmlndXJlOjM4NzY6IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjIC1FIC0tc3lzcm9vdD0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1uYXRpdmVzZGstbWluZ3czMi1wb2t5c2RrLW1pbmd3MzIgY29uZnRlc3QuYworY29uZmlndXJlOjM4NzY6ICQ/ID0gMAorCitOb3RlIHRoaXMgaXMgYSAqYnVpbGQqIHRhcmdldCAoaW4gYnVpbGQteDg2XzY0LWxpbnV4KSBzbyBpdCBzaG91bGQgYmUKK3VzaW5nIHRoZSBob3N0ICJnY2MiLCBub3QgeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MuIFNpbmNlIHRoZSBtaW5ndzMyCitoZWFkZXJzIGFyZSB2ZXJ5IGRpZmZlcmVudCwgdXNpbmcgdGhlIHdyb25nIGNwcCBpcyBhIHJlYWwgcHJvYmxlbS4gSXQgaXMgbGVha2luZworaW50byBjb25maWd1cmUgdGhyb3VnaCB0aGUgQ1BQIHZhcmlhYmxlLiBVbHRpbWF0ZWx5IHRoaXMgbGVhZHMgdG8gYnVpbGQKK2ZhaWx1cmVzIHJlbGF0ZWQgdG8gbm90IGJlaW5nIGFibGUgdG8gaW5jbHVkZSBhIHByb2Nlc3MuaCBmaWxlIGZvciBwZW0tdW5peC5jLgorCitUaGUgZml4IGlzIHRvIGVuc3VyZSB3ZSBleHBvcnQgYSBzYW5lIENQUCB2YWx1ZSBpbnRvIHRoZSBidWlsZAorZW52aXJvbm1lbnQgd2hlbiB1c2luZyBidWlsZCB0YXJnZXRzLiBXZSBjb3VsZCBkZWZpbmUgYSBDUFBfRk9SX0JVSUxEIHZhbHVlIHdoaWNoIG1heSBiZQordGhlIHZlcnNpb24gd2hpY2ggbmVlZHMgdG8gYmUgdXBzdHJlYW1lZCBidXQgZm9yIG5vdywgdGhpcyBmaXggaXMgZ29vZCBlbm91Z2ggdG8KK2F2b2lkIHRoZSBwcm9ibGVtLgorCitSUCAyMi8wOC8yMDEzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuaW4gfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IDY0ZTA5MWJhNzFkLi4yNTU4MjJlM2YyNyAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTE0OSw2ICsxNDksNyBAQCBCVUlMRF9FWFBPUlRTID0gXAorIAlBUj0iJChBUl9GT1JfQlVJTEQpIjsgZXhwb3J0IEFSOyBcCisgCUFTPSIkKEFTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQVM7IFwKKyAJQ0M9IiQoQ0NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDQzsgXAorKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSI7IGV4cG9ydCBDUFA7IFwKKyAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAorIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAorIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE5LUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxOS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDEyOWQxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxOS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaApAQCAtMCwwICsxLDYwIEBACitGcm9tIDE4MjA1N2I4MDg5MWVkYzBlOGQ0NjgzNWUyZDhiZmQyODMzMGE1NWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAxMDoyNToxMSArMDAwMAorU3ViamVjdDogW1BBVENIIDE5LzM5XSBFbnN1cmUgdGFyZ2V0IGdjYyBoZWFkZXJzIGNhbiBiZSBpbmNsdWRlZAorCitUaGVyZSBhcmUgYSBmZXcgaGVhZGVycyBpbnN0YWxsZWQgYXMgcGFydCBvZiB0aGUgT3BlbkVtYmVkZGVkCitnY2MtcnVudGltZSB0YXJnZXQgKG9tcC5oLCBzc3AvKi5oKS4gQmVpbmcgaW5zdGFsbGVkIGZyb20gYSByZWNpcGUKK2J1aWx0IGZvciB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSwgdGhlc2UgYXJlIHdpdGhpbiB0aGUgdGFyZ2V0CitzeXNyb290IGFuZCBub3QgY3Jvc3MvbmF0aXZlc2RrOyB0aHVzIHRoZXkgd2VyZW4ndCBhYmxlIHRvIGJlCitmb3VuZCBieSBnY2Mgd2l0aCB0aGUgZXhpc3Rpbmcgc2VhcmNoIHBhdGhzLiBBZGQgc3VwcG9ydCBmb3IKK3BpY2tpbmcgdXAgdGhlc2UgaGVhZGVycyB1bmRlciB0aGUgc3lzcm9vdCBzdXBwbGllZCBvbiB0aGUgZ2NjCitjb21tYW5kIGxpbmUgaW4gb3JkZXIgdG8gcmVzb2x2ZSB0aGlzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2NjL01ha2VmaWxlLmluICB8IDIgKysKKyBnY2MvY3BwZGVmYXVsdC5jIHwgNCArKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgoraW5kZXggNTdjZjc4MDRmMGEuLjc3NzIzNDJhZDVlIDEwMDY0NAorLS0tIGEvZ2NjL01ha2VmaWxlLmluCisrKysgYi9nY2MvTWFrZWZpbGUuaW4KK0BAIC02MTgsNiArNjE4LDcgQEAgbGliZXhlY2RpciA9IEBsaWJleGVjZGlyQAorIAorICMgRGlyZWN0b3J5IGluIHdoaWNoIHRoZSBjb21waWxlciBmaW5kcyBsaWJyYXJpZXMgZXRjLgorIGxpYnN1YmRpciA9ICQobGliZGlyKS9nY2MvJChyZWFsX3RhcmdldF9ub25jYW5vbmljYWwpLyQodmVyc2lvbikkKGFjY2VsX2Rpcl9zdWZmaXgpCisrbGlic3ViZGlyX3RhcmdldCA9ICQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKQorICMgRGlyZWN0b3J5IGluIHdoaWNoIHRoZSBjb21waWxlciBmaW5kcyBleGVjdXRhYmxlcworIGxpYmV4ZWNzdWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHJlYWxfdGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKSQoYWNjZWxfZGlyX3N1ZmZpeCkKKyAjIERpcmVjdG9yeSBpbiB3aGljaCBhbGwgcGx1Z2luIHJlc291cmNlcyBhcmUgaW5zdGFsbGVkCitAQCAtMjg2Nyw2ICsyODY4LDcgQEAgQ0ZMQUdTLWludGwubyArPSAtRExPQ0FMRURJUj1cIiQobG9jYWxlZGlyKVwiCisgCisgUFJFUFJPQ0VTU09SX0RFRklORVMgPSBcCisgICAtREdDQ19JTkNMVURFX0RJUj1cIiQobGlic3ViZGlyKS9pbmNsdWRlXCIgXAorKyAgLURHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUPVwiJChsaWJzdWJkaXJfdGFyZ2V0KS9pbmNsdWRlXCIgXAorICAgLURGSVhFRF9JTkNMVURFX0RJUj1cIiQobGlic3ViZGlyKS9pbmNsdWRlLWZpeGVkXCIgXAorICAgLURHUExVU1BMVVNfSU5DTFVERV9ESVI9XCIkKGdjY19neHhfaW5jbHVkZV9kaXIpXCIgXAorICAgLURHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1Q9JChnY2NfZ3h4X2luY2x1ZGVfZGlyX2FkZF9zeXNyb290KSBcCitkaWZmIC0tZ2l0IGEvZ2NjL2NwcGRlZmF1bHQuYyBiL2djYy9jcHBkZWZhdWx0LmMKK2luZGV4IGM0Nzk2Mzg1NjQzLi45ODBlMmJkNDdhNyAxMDA2NDQKKy0tLSBhL2djYy9jcHBkZWZhdWx0LmMKKysrKyBiL2djYy9jcHBkZWZhdWx0LmMKK0BAIC01OSw2ICs1OSwxMCBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KKyAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMuICAqLworICAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKKyAjZW5kaWYKKysjaWZkZWYgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVAorKyAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycyB1bmRlciB0aGUgc3BlY2lmaWVkIHN5c3Jvb3QuICAqLworKyAgICB7IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VULCAiR0NDIiwgMCwgMCwgMSwgMCB9LAorKyNlbmRpZgorICNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgorICAgICAvKiAvdXNyL2xvY2FsL2luY2x1ZGUgY29tZXMgYmVmb3JlIHRoZSBmaXhpbmNsdWRlZCBoZWFkZXIgZmlsZXMuICAqLworICAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAyIH0sCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDIwLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDIwLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQyMTgyMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjAtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIGE0NzQwZjEyOTBlNmE2MDJmYmJmYTI3Yjg2M2JlMmUzYjI2NzU2ODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAxMToxNzoxOSArMDAwMAorU3ViamVjdDogW1BBVENIIDIwLzM5XSBnY2MgNC44KyB3b24ndCBidWlsZCB3aXRoIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nCisKK3NpbmNlIHRoZSAqLlBwbyBmaWxlcyBkb24ndCBnZXQgY3JlYXRlZCB1bmxlc3MgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2luZyBpcyB0cnVlLgorCitUaGlzIHBhdGNoIGVuc3VyZXMgd2Ugb25seSB1c2UgdGhvc2UgY29tcGlsZXIgb3B0aW9ucyB3aGVuIGl0cyBlbmFibGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCisoUHJvYmxlbSB3YXMgYWxyZWFkeSByZXBvcnRlZCB1cHN0cmVhbSwgYXR0YWNoZWQgdGhpcyBwYXRjaCB0aGVyZQoraHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD01NTkzMCkKKworUlAKKzIwMTIvMDkvMjIKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYmF0b21pYy9NYWtlZmlsZS5hbSB8IDMgKystCisgbGliYXRvbWljL01ha2VmaWxlLmluIHwgMyArKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmF0b21pYy9NYWtlZmlsZS5hbSBiL2xpYmF0b21pYy9NYWtlZmlsZS5hbQoraW5kZXggYzFiN2M3MzkzNGEuLmVmNDNkNjJjMDdhIDEwMDY0NAorLS0tIGEvbGliYXRvbWljL01ha2VmaWxlLmFtCisrKysgYi9saWJhdG9taWMvTWFrZWZpbGUuYW0KK0BAIC0xMDEsNyArMTAxLDggQEAgUEFUX1MJCT0gJCh3b3JkIDMsJChQQVRfU1BMSVQpKQorIElGVU5DX0RFRgk9IC1ESUZVTkNfQUxUPSQoUEFUX1MpCisgSUZVTkNfT1BUCT0gJCh3b3JkICQoUEFUX1MpLCQoSUZVTkNfT1BUSU9OUykpCisgCistTV9ERVBTCQk9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCisrQEFNREVQX1RSVUVATV9ERVBTCQk9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCisrQEFNREVQX0ZBTFNFQE1fREVQUwkJPQorIE1fU0laRQkJPSAtRE49JChQQVRfTikKKyBNX0lGVU5DCQk9ICQoaWYgJChQQVRfUyksJChJRlVOQ19ERUYpICQoSUZVTkNfT1BUKSkKKyBNX0ZJTEUJCT0gJChQQVRfQkFTRSlfbi5jCitkaWZmIC0tZ2l0IGEvbGliYXRvbWljL01ha2VmaWxlLmluIGIvbGliYXRvbWljL01ha2VmaWxlLmluCitpbmRleCAyOTMyNGUzZTBhYy4uZDVjZGI0MjU5ZWYgMTAwNjQ0CistLS0gYS9saWJhdG9taWMvTWFrZWZpbGUuaW4KKysrKyBiL2xpYmF0b21pYy9NYWtlZmlsZS5pbgorQEAgLTQxNCw3ICs0MTQsOCBAQCBQQVRfTiA9ICQod29yZCAyLCQoUEFUX1NQTElUKSkKKyBQQVRfUyA9ICQod29yZCAzLCQoUEFUX1NQTElUKSkKKyBJRlVOQ19ERUYgPSAtRElGVU5DX0FMVD0kKFBBVF9TKQorIElGVU5DX09QVCA9ICQod29yZCAkKFBBVF9TKSwkKElGVU5DX09QVElPTlMpKQorLU1fREVQUyA9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCisrQEFNREVQX1RSVUVATV9ERVBTID0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KKytAQU1ERVBfRkFMU0VATV9ERVBTID0KKyBNX1NJWkUgPSAtRE49JChQQVRfTikKKyBNX0lGVU5DID0gJChpZiAkKFBBVF9TKSwkKElGVU5DX0RFRikgJChJRlVOQ19PUFQpKQorIE1fRklMRSA9ICQoUEFUX0JBU0UpX24uYworLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyMS1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyMS1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzNjNjN2QKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDIxLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSBmM2VkYWQ4MWQ4MGRkZTVkNjRiZjc3ZTZhYmFmZGE1NGRiMTBiODI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMyBNYXIgMjAxNSAwODoyMToxOSArMDAwMAorU3ViamVjdDogW1BBVENIIDIxLzM5XSBEb24ndCBzZWFyY2ggaG9zdCBkaXJlY3RvcnkgZHVyaW5nICJyZWxpbmsiIGlmCisgJGluc3RfcHJlZml4IGlzIHByb3ZpZGVkCisKK2h0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9saWJ0b29sLXBhdGNoZXMvMjAxMS0wMS9tc2cwMDAyNi5odG1sCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsdG1haW4uc2ggfCA1ICsrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAoraW5kZXggMGE5M2I0ZTVjM2IuLjZkZTZlZDJmOWEwIDEwMDY0NAorLS0tIGEvbHRtYWluLnNoCisrKysgYi9sdG1haW4uc2gKK0BAIC02MDA0LDEyICs2MDA0LDEzIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgIGZpCisgCSAgICBlbHNlCisgCSAgICAgICMgV2UgY2Fubm90IHNlZW0gdG8gaGFyZGNvZGUgaXQsIGd1ZXNzIHdlJ2xsIGZha2UgaXQuCisrCSAgICAgICMgRGVmYXVsdCBpZiAkbGliZGlyIGlzIG5vdCByZWxhdGl2ZSB0byB0aGUgcHJlZml4OgorIAkgICAgICBhZGRfZGlyPSItTCRsaWJkaXIiCistCSAgICAgICMgVHJ5IGxvb2tpbmcgZmlyc3QgaW4gdGhlIGxvY2F0aW9uIHdlJ3JlIGJlaW5nIGluc3RhbGxlZCB0by4KKysKKyAJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KKyAJCWNhc2UgJGxpYmRpciBpbgorIAkJICBbXFwvXSopCistCQkgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKysJCSAgICBhZGRfZGlyPSItTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorIAkJICAgIDs7CisgCQllc2FjCisgCSAgICAgIGZpCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDIyLVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDIyLVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ2YzBkZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjItVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIGI4ZWEyYzJjN2QzMzM3NmY1ZGQ2NTE2NDZjN2U4MjIwMDBlNDc3NDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyOCBBcHIgMjAxNSAyMzoxNToyNyAtMDcwMAorU3ViamVjdDogW1BBVENIIDIyLzM5XSBVc2UgU1lTVEVNTElCU19ESVIgcmVwbGFjZW1lbnQgaW5zdGVhZCBvZiBoYXJkY29kaW5nCisgYmFzZV9saWJkaXIKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKK2luZGV4IDVlOGIzNGRlZDAzLi43ZTYyOGJmNjYxZSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKKysrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKK0BAIC0yMSw3ICsyMSw3IEBACisgI2lmbmRlZiBHQ0NfQUFSQ0g2NF9MSU5VWF9ICisgI2RlZmluZSBHQ0NfQUFSQ0g2NF9MSU5VWF9ICisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCisgCisgI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjMtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyMy1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAyZDZmYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjMtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gODY0NWI1N2U3YzBkZmQ5M2FmZWU1Y2FlYWE1MzRjNzE0ZjQ0OWJhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI4IEFwciAyMDE1IDIzOjE4OjM5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMjMvMzldIGFhcmNoNjQ6IEFkZCBzdXBwb3J0IGZvciBtdXNsIGxkc28KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKK2luZGV4IDdlNjI4YmY2NjFlLi4xNzE3Y2JlNTQ3MSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKKysrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKK0BAIC0yNCw3ICsyNCw3IEBACisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgorIAorICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSCistI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLW11c2wtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCisrI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKyAKKyAjdW5kZWYgIEFTQU5fQ0MxX1NQRUMKKyAjZGVmaW5lIEFTQU5fQ0MxX1NQRUMgIiV7JTpzYW5pdGl6ZShhZGRyZXNzKTotZnVud2luZC10YWJsZXN9IgorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyNC1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI0LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDNlMGEyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyNC1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorRnJvbSBiMTY2NjU2NWU0ZTEzM2VlNDFmMzJmYTgwMzIxNjViY2IwNmFmZTlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBTdW4sIDUgSnVsIDIwMTUgMjA6MjU6MTggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyNC8zOV0gbGliY2MxOiBmaXggbGliY2MxJ3MgaW5zdGFsbCBwYXRoIGFuZCBycGF0aAorCisqIEluc3RhbGwgbGliY2MxLnNvIGFuZCBsaWJjYzFwbHVnaW4uc28gaW50bworICAkKGxpYmV4ZWNkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pLCBhcyB3aGF0IHdlCisgIGhhZCBkb25lIHRvIGx0by1wbHVnaW4uCisqIEZpeCBiYWQgUlBBVEggaXVzc3VlOgorICBnY2MtNS4yLjA6IHBhY2thZ2UgZ2NjLXBsdWdpbnMgY29udGFpbnMgYmFkIFJQQVRIIC9wYXRodC90by90bXAvc3lzcm9vdHMvcWVtdXg4Ni02NC91c3IvbGliNjQvLi4vbGliNjQgaW4gZmlsZQorIC9wYXRoL3RvL2djYy81LjIuMC1yMC9wYWNrYWdlcy1zcGxpdC9nY2MtcGx1Z2lucy91c3IvbGliNjQvZ2NjL3g4Nl82NC1wb2t5LWxpbnV4LzUuMi4wL3BsdWdpbi9saWJjYzFwbHVnaW4uc28uMC4wLjAKKyBbcnBhdGhzXQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZ3VyYXRpb25dCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgbGliY2MxL01ha2VmaWxlLmFtIHwgNCArKy0tCisgbGliY2MxL01ha2VmaWxlLmluIHwgNCArKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJjYzEvTWFrZWZpbGUuYW0gYi9saWJjYzEvTWFrZWZpbGUuYW0KK2luZGV4IDcyYzZhZWFkNDc1Li40MmE4Nzc0MGIzMSAxMDA2NDQKKy0tLSBhL2xpYmNjMS9NYWtlZmlsZS5hbQorKysrIGIvbGliY2MxL01ha2VmaWxlLmFtCitAQCAtMzcsOCArMzcsOCBAQCBsaWJpYmVydHkgPSAkKGlmICQod2lsZGNhcmQgJChsaWJpYmVydHlfbm9hc2FuKSksJChXYykkKGxpYmliZXJ0eV9ub2FzYW4pLCBcCisgCSAgICAkKFdjKSQobGliaWJlcnR5X25vcm1hbCkpKQorIGxpYmliZXJ0eV9kZXAgPSAkKHBhdHN1YnN0ICQoV2MpJSwlLCQobGliaWJlcnR5KSkKKyAKKy1wbHVnaW5kaXIgPSAkKGxpYmRpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikvcGx1Z2luCistY2MxbGliZGlyID0gJChsaWJkaXIpLyQobGlic3VmZml4KQorK2NjMWxpYmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikKKytwbHVnaW5kaXIgPSAkKGNjMWxpYmRpcikKKyAKKyBpZiBFTkFCTEVfUExVR0lOCisgcGx1Z2luX0xUTElCUkFSSUVTID0gbGliY2MxcGx1Z2luLmxhIGxpYmNwMXBsdWdpbi5sYQorZGlmZiAtLWdpdCBhL2xpYmNjMS9NYWtlZmlsZS5pbiBiL2xpYmNjMS9NYWtlZmlsZS5pbgoraW5kZXggNzEwNGI2NDkwMjYuLjIxMDNjNDc3NDY4IDEwMDY0NAorLS0tIGEvbGliY2MxL01ha2VmaWxlLmluCisrKysgYi9saWJjYzEvTWFrZWZpbGUuaW4KK0BAIC0zOTMsOCArMzkzLDggQEAgbGliaWJlcnR5ID0gJChpZiAkKHdpbGRjYXJkICQobGliaWJlcnR5X25vYXNhbikpLCQoV2MpJChsaWJpYmVydHlfbm9hc2FuKSwgXAorIAkgICAgJChXYykkKGxpYmliZXJ0eV9ub3JtYWwpKSkKKyAKKyBsaWJpYmVydHlfZGVwID0gJChwYXRzdWJzdCAkKFdjKSUsJSwkKGxpYmliZXJ0eSkpCistcGx1Z2luZGlyID0gJChsaWJkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pL3BsdWdpbgorLWNjMWxpYmRpciA9ICQobGliZGlyKS8kKGxpYnN1ZmZpeCkKKytjYzFsaWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pCisrcGx1Z2luZGlyID0gJChjYzFsaWJkaXIpCisgQEVOQUJMRV9QTFVHSU5fVFJVRUBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJjYzFwbHVnaW4ubGEgbGliY3AxcGx1Z2luLmxhCisgQEVOQUJMRV9QTFVHSU5fVFJVRUBjYzFsaWJfTFRMSUJSQVJJRVMgPSBsaWJjYzEubGEKKyBzaGFyZWRfc291cmNlID0gY2FsbGJhY2tzLmNjIGNhbGxiYWNrcy5oaCBjb25uZWN0aW9uLmNjIGNvbm5lY3Rpb24uaGggXAorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyNS1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyNS1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5YWM5N2UKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI1LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2gKQEAgLTAsMCArMSwzNDYgQEAKK0Zyb20gN2Q2MTRhODQ3MDlkN2RjNGEyNTI5YzNkNTI5ZTJkYTg1NDFmOWZkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6Mzk6NTQgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyNS8zOV0gaGFuZGxlIHN5c3Jvb3Qgc3VwcG9ydCBmb3IgbmF0aXZlc2RrLWdjYworCitCZWluZyBhYmxlIHRvIGJ1aWxkIGEgbmF0aXZlc2RrIGdjYyBpcyB1c2VmdWwsIHBhcnRpY3VsYXJseSBpbiBjYXNlcword2hlcmUgdGhlIGhvc3QgY29tcGlsZXIgbWF5IGJlIG9mIGFuIGluY29tcGF0aWJsZSB2ZXJzaW9uIChvciBhIDMyCitiaXQgY29tcGlsZXIgaXMgbmVlZGVkKS4KKworU2FkbHksIGJ1aWxkaW5nIG5hdGl2ZXNkay1nY2MgaXMgbm90IHN0cmFpZ2h0IGZvcndhcmQuIFdlIGluc3RhbGwKK25hdGl2ZXNkay1nY2MgaW50byBhIHJlbG9jYXRhYmxlIGxvY2F0aW9uIGFuZCB0aGlzIG1lYW5zIHRoYXQgaXRzCitsaWJyYXJ5IGxvY2F0aW9ucyBjYW4gY2hhbmdlLiAiTm9ybWFsIiBzeXNyb290IHN1cHBvcnQgZG9lc24ndCBoZWxwCitpbiB0aGlzIGNhc2Ugc2luY2UgdGhlIHZhbHVlcyBvZiBwYXRocyBsaWtlICJsaWJkaXIiIGNoYW5nZSwgbm90IGp1c3QKK2Jhc2Ugcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHN5c3RlbS4KKworSW4gb3JkZXIgdG8gaGFuZGxlIHRoaXMgd2UgZG8gdHdvIHRoaW5nczoKKworYSkgQWRkICVyIGludG8gc3BlYyBmaWxlIG1hcmt1cCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgaW5qZWN0ZWQgcGF0aHMKKyAgIHN1Y2ggYXMgU1lTVEVNTElCU19ESVIgKHNlZSBnY2NfbXVsdGlsaWJfc2V0dXAoKSkuCitiKSBBZGQgb3RoZXIgcGF0aHMgd2hpY2ggbmVlZCByZWxvY2F0aW9uIGludG8gYSAuZ2NjcmVsb2NwcmVmaXggc2VjdGlvbgorICAgd2hpY2ggdGhlIHJlbG9jYXRpb24gY29kZSB3aWxsIG5vdGljZSBhbmQgYWRqdXN0IGF1dG9tYXRpY2FsbHkuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorUlAgMjAxNS83LzI4CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0FkZGVkIFBSRUZJWFZBUiBhbmQgRVhFQ19QUkVGSVhWQVIgdG8gc3VwcG9ydCBydW50aW1lIHJlbG9jYXRpb24uICBXaXRob3V0Cit0aGVzZSBhcyBwYXJ0IG9mIHRoZSBnY2NyZWxvY3ByZWZpeCB0aGUgc3lzdGVtIGNhbid0IGRvIHJ1bnRpbWUgcmVsb2NhdGlvbgoraWYgdGhlIGV4ZWN1dGFibGUgaXMgbW92ZWQuICAoVGhlc2UgcGF0aHMgd2VyZSBtaXNzZWQgaW4gdGhlIG9yaWdpbmFsCitpbXBsZW1lbnRhdGlvbi4pCisKK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAa2VybmVsLmNyYXNoaW5nLm9yZz4KKy0tLQorIGMtZmFtaWx5L2Mtb3B0cy5jIHwgICAgNCArLS0KKyBjcHBkZWZhdWx0LmMgICAgICB8ICAgNjMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgY3BwZGVmYXVsdC5oICAgICAgfCAgIDEzICsrKystLS0tLS0tCisgZ2NjLmMgICAgICAgICAgICAgfCAgIDIwICsrKysrKysrKysrKy0tLS0tCisgaW5jcGF0aC5jICAgICAgICAgfCAgIDEyICsrKysrLS0tLS0KKyBwcmVmaXguYyAgICAgICAgICB8ICAgIDQgKy0tCisgNiBmaWxlcyBjaGFuZ2VkLCA2OCBpbnNlcnRpb25zKCspLCA0OCBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdjYy05LjMuMC9nY2MvY3BwZGVmYXVsdC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2NjLTkuMy4wLm9yaWcvZ2NjL2NwcGRlZmF1bHQuYworKysrIGdjYy05LjMuMC9nY2MvY3BwZGVmYXVsdC5jCitAQCAtMzUsNiArMzUsMzAgQEAKKyAjIHVuZGVmIENST1NTX0lOQ0xVREVfRElSCisgI2VuZGlmCisgCisrc3RhdGljIGNoYXIgR1BMVVNQTFVTX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdQTFVTUExVU19JTkNMVURFX0RJUjsKKytjaGFyIEdDQ19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHQ0NfSU5DTFVERV9ESVI7Cisrc3RhdGljIGNoYXIgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVI7Cisrc3RhdGljIGNoYXIgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUjsKKytzdGF0aWMgY2hhciBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQ7CisrI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCisrc3RhdGljIGNoYXIgTE9DQUxfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gTE9DQUxfSU5DTFVERV9ESVI7CisrI2VuZGlmCisrI2lmZGVmIFBSRUZJWF9JTkNMVURFX0RJUgorK3N0YXRpYyBjaGFyIFBSRUZJWF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBQUkVGSVhfSU5DTFVERV9ESVI7CisrI2VuZGlmCisrI2lmZGVmIEZJWEVEX0lOQ0xVREVfRElSCisrc3RhdGljIGNoYXIgRklYRURfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gRklYRURfSU5DTFVERV9ESVI7CisrI2VuZGlmCisrI2lmZGVmIENST1NTX0lOQ0xVREVfRElSCisrc3RhdGljIGNoYXIgQ1JPU1NfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gQ1JPU1NfSU5DTFVERV9ESVI7CisrI2VuZGlmCisrI2lmZGVmIFRPT0xfSU5DTFVERV9ESVIKKytzdGF0aWMgY2hhciBUT09MX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFRPT0xfSU5DTFVERV9ESVI7CisrI2VuZGlmCisrI2lmZGVmIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUgorK3N0YXRpYyBjaGFyIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVI7CisrI2VuZGlmCisrCisgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCisgI2lmZGVmIElOQ0xVREVfREVGQVVMVFMKKyA9IElOQ0xVREVfREVGQVVMVFM7CitAQCAtNDIsMzggKzY2LDM4IEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGUKKyA9IHsKKyAjaWZkZWYgR1BMVVNQTFVTX0lOQ0xVREVfRElSCisgICAgIC8qIFBpY2sgdXAgR05VIEMrKyBnZW5lcmljIGluY2x1ZGUgZmlsZXMuICAqLworLSAgICB7IEdQTFVTUExVU19JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCisrICAgIHsgR1BMVVNQTFVTX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKKyAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIKKyAgICAgLyogUGljayB1cCBHTlUgQysrIHRhcmdldC1kZXBlbmRlbnQgaW5jbHVkZSBmaWxlcy4gICovCistICAgIHsgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAorKyAgICB7IEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKKyAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDEgfSwKKyAjZW5kaWYKKyAjaWZkZWYgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSCisgICAgIC8qIFBpY2sgdXAgR05VIEMrKyBiYWNrd2FyZCBhbmQgZGVwcmVjYXRlZCBpbmNsdWRlIGZpbGVzLiAgKi8KKy0gICAgeyBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAorKyAgICB7IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUlZBUiwgIkcrKyIsIDEsIDEsCisgICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIEdDQ19JTkNMVURFX0RJUgorICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycy4gICovCistICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAorKyAgICB7IEdDQ19JTkNMVURFX0RJUlZBUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVAorICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycyB1bmRlciB0aGUgc3BlY2lmaWVkIHN5c3Jvb3QuICAqLworLSAgICB7IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VULCAiR0NDIiwgMCwgMCwgMSwgMCB9LAorKyAgICB7IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMlZBUiwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKKyAgICAgLyogL3Vzci9sb2NhbC9pbmNsdWRlIGNvbWVzIGJlZm9yZSB0aGUgZml4aW5jbHVkZWQgaGVhZGVyIGZpbGVzLiAgKi8KKy0gICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMiB9LAorLSAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAwIH0sCisrICAgIHsgTE9DQUxfSU5DTFVERV9ESVJWQVIsIDAsIDAsIDEsIDEsIDIgfSwKKysgICAgeyBMT0NBTF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMSwgMCB9LAorICNlbmRpZgorICNpZmRlZiBQUkVGSVhfSU5DTFVERV9ESVIKKy0gICAgeyBQUkVGSVhfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDAsIDAgfSwKKysgICAgeyBQUkVGSVhfSU5DTFVERV9ESVJWQVIsIDAsIDAsIDEsIDAsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgRklYRURfSU5DTFVERV9ESVIKKyAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBmaXhpbmNsdWRlcy4gICovCistICAgIHsgRklYRURfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLAorKyAgICB7IEZJWEVEX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwKKyAgICAgICAvKiBBIG11bHRpbGliIHN1ZmZpeCBuZWVkcyBhZGRpbmcgaWYgZGlmZmVyZW50IG11bHRpbGlicyB1c2UKKyAJIGRpZmZlcmVudCBoZWFkZXJzLiAgKi8KKyAjaWZkZWYgU1lTUk9PVF9IRUFERVJTX1NVRkZJWF9TUEVDCitAQCAtODUsMzMgKzEwOSwyNCBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlCisgI2VuZGlmCisgI2lmZGVmIENST1NTX0lOQ0xVREVfRElSCisgICAgIC8qIE9uZSBwbGFjZSB0aGUgdGFyZ2V0IHN5c3RlbSdzIGhlYWRlcnMgbWlnaHQgYmUuICAqLworLSAgICB7IENST1NTX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAorKyAgICB7IENST1NTX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAorICNlbmRpZgorICNpZmRlZiBUT09MX0lOQ0xVREVfRElSCisgICAgIC8qIEFub3RoZXIgcGxhY2UgdGhlIHRhcmdldCBzeXN0ZW0ncyBoZWFkZXJzIG1pZ2h0IGJlLiAgKi8KKy0gICAgeyBUT09MX0lOQ0xVREVfRElSLCAiQklOVVRJTFMiLCAwLCAxLCAwLCAwIH0sCisrICAgIHsgVE9PTF9JTkNMVURFX0RJUlZBUiwgIkJJTlVUSUxTIiwgMCwgMSwgMCwgMCB9LAorICNlbmRpZgorICNpZmRlZiBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIKKyAgICAgLyogL3Vzci9pbmNsdWRlIGNvbWVzIGRlYWQgbGFzdC4gICovCistICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDIgfSwKKy0gICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMCB9LAorKyAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAyIH0sCisrICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDAgfSwKKyAjZW5kaWYKKyAgICAgeyAwLCAwLCAwLCAwLCAwLCAwIH0KKyAgIH07CisgI2VuZGlmIC8qIG5vIElOQ0xVREVfREVGQVVMVFMgKi8KKyAKKy0jaWZkZWYgR0NDX0lOQ0xVREVfRElSCistY29uc3QgY2hhciBjcHBfR0NDX0lOQ0xVREVfRElSW10gPSBHQ0NfSU5DTFVERV9ESVI7CistY29uc3Qgc2l6ZV90IGNwcF9HQ0NfSU5DTFVERV9ESVJfbGVuID0gc2l6ZW9mIEdDQ19JTkNMVURFX0RJUiAtIDg7CistI2Vsc2UKKy1jb25zdCBjaGFyIGNwcF9HQ0NfSU5DTFVERV9ESVJbXSA9ICIiOworLWNvbnN0IHNpemVfdCBjcHBfR0NDX0lOQ0xVREVfRElSX2xlbiA9IDA7CistI2VuZGlmCistCisgLyogVGhlIGNvbmZpZ3VyZWQgcHJlZml4LiAgKi8KKy1jb25zdCBjaGFyIGNwcF9QUkVGSVhbXSA9IFBSRUZJWDsKKy1jb25zdCBzaXplX3QgY3BwX1BSRUZJWF9sZW4gPSBzaXplb2YgUFJFRklYIC0gMTsKKy1jb25zdCBjaGFyIGNwcF9FWEVDX1BSRUZJWFtdID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7CisrY2hhciBQUkVGSVhWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gUFJFRklYOworK2NoYXIgRVhFQ19QUkVGSVhWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7CisgCisgLyogVGhpcyB2YWx1ZSBpcyBzZXQgYnkgY3BwX3JlbG9jYXRlZCBhdCBydW50aW1lICovCisgY29uc3QgY2hhciAqZ2NjX2V4ZWNfcHJlZml4OworSW5kZXg6IGdjYy05LjMuMC9nY2MvY3BwZGVmYXVsdC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2NjLTkuMy4wLm9yaWcvZ2NjL2NwcGRlZmF1bHQuaAorKysrIGdjYy05LjMuMC9nY2MvY3BwZGVmYXVsdC5oCitAQCAtMzMsNyArMzMsOCBAQAorIAorIHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUKKyB7CistICBjb25zdCBjaGFyICpjb25zdCBmbmFtZTsJLyogVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeS4gICovCisrICBjb25zdCBjaGFyICpmbmFtZTsgICAgIC8qIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkuICAqLworKworICAgY29uc3QgY2hhciAqY29uc3QgY29tcG9uZW50OwkvKiBUaGUgY29tcG9uZW50IGNvbnRhaW5pbmcgdGhlIGRpcmVjdG9yeQorIAkJCQkgICAoc2VlIHVwZGF0ZV9wYXRoIGluIHByZWZpeC5jKSAqLworICAgY29uc3QgY2hhciBjcGx1c3BsdXM7CQkvKiBPbmx5IGxvb2sgaGVyZSBpZiB3ZSdyZSBjb21waWxpbmcgQysrLiAgKi8KK0BAIC01MCwxNyArNTEsMTMgQEAgc3RydWN0IGRlZmF1bHRfaW5jbHVkZQorIH07CisgCisgZXh0ZXJuIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXTsKKy1leHRlcm4gY29uc3QgY2hhciBjcHBfR0NDX0lOQ0xVREVfRElSW107CistZXh0ZXJuIGNvbnN0IHNpemVfdCBjcHBfR0NDX0lOQ0xVREVfRElSX2xlbjsKKytleHRlcm4gY2hhciBHQ0NfSU5DTFVERV9ESVJWQVJbXSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSk7CisgCisgLyogVGhlIGNvbmZpZ3VyZS10aW1lIHByZWZpeCwgaS5lLiwgdGhlIHZhbHVlIHN1cHBsaWVkIGFzIHRoZSBhcmd1bWVudAorICAgIHRvIC0tcHJlZml4PS4gICovCistZXh0ZXJuIGNvbnN0IGNoYXIgY3BwX1BSRUZJWFtdOworK2V4dGVybiBjaGFyIFBSRUZJWFZBUltdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKTsKKyAvKiBUaGUgbGVuZ3RoIG9mIHRoZSBjb25maWd1cmUtdGltZSBwcmVmaXguICAqLworLWV4dGVybiBjb25zdCBzaXplX3QgY3BwX1BSRUZJWF9sZW47CistLyogVGhlIGNvbmZpZ3VyZS10aW1lIGV4ZWN1dGlvbiBwcmVmaXguICBUaGlzIGlzIHR5cGljYWxseSB0aGUgbGliL2djYworLSAgIHN1YmRpcmVjdG9yeSBvZiBjcHBfUFJFRklYLiAgKi8KKy1leHRlcm4gY29uc3QgY2hhciBjcHBfRVhFQ19QUkVGSVhbXTsKKytleHRlcm4gY2hhciBFWEVDX1BSRUZJWFZBUltdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKTsKKyAvKiBUaGUgcnVuLXRpbWUgZXhlY3V0aW9uIHByZWZpeC4gIFRoaXMgaXMgdHlwaWNhbGx5IHRoZSBsaWIvZ2NjCisgICAgc3ViZGlyZWN0b3J5IG9mIHRoZSBhY3R1YWwgaW5zdGFsbGF0aW9uLiAgKi8KKyBleHRlcm4gY29uc3QgY2hhciAqZ2NjX2V4ZWNfcHJlZml4OworSW5kZXg6IGdjYy05LjMuMC9nY2MvZ2NjLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnY2MtOS4zLjAub3JpZy9nY2MvZ2NjLmMKKysrKyBnY2MtOS4zLjAvZ2NjL2djYy5jCitAQCAtMjUzLDYgKzI1Myw4IEBAIEZJTEUgKnJlcG9ydF90aW1lc190b19maWxlID0gTlVMTDsKKyAjZW5kaWYKKyBzdGF0aWMgY29uc3QgY2hhciAqdGFyZ2V0X3N5c3RlbV9yb290ID0gREVGQVVMVF9UQVJHRVRfU1lTVEVNX1JPT1Q7CisgCisrc3RhdGljIGNoYXIgdGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTWVNURU1MSUJTX0RJUjsKKysKKyAvKiBOb256ZXJvIG1lYW5zIHBhc3MgdGhlIHVwZGF0ZWQgdGFyZ2V0X3N5c3RlbV9yb290IHRvIHRoZSBjb21waWxlci4gICovCisgCisgc3RhdGljIGludCB0YXJnZXRfc3lzdGVtX3Jvb3RfY2hhbmdlZDsKK0BAIC01MjcsNiArNTI5LDcgQEAgb3Igd2l0aCBjb25zdGFudCB0ZXh0IGluIGEgc2luZ2xlIGFyZ3VtZQorICAlRyAgICAgcHJvY2VzcyBMSUJHQ0NfU1BFQyBhcyBhIHNwZWMuCisgICVSICAgICBPdXRwdXQgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGFyZ2V0X3N5c3RlbV9yb290IGFuZAorICAgICAgICAgdGFyZ2V0X3N5c3Jvb3Rfc3VmZml4LgorKyAlciAgICAgT3V0cHV0IHRoZSBiYXNlIHBhdGggdGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeAorICAlUyAgICAgcHJvY2VzcyBTVEFSVEZJTEVfU1BFQyBhcyBhIHNwZWMuICBBIGNhcGl0YWwgUyBpcyBhY3R1YWxseSB1c2VkIGhlcmUuCisgICVFICAgICBwcm9jZXNzIEVOREZJTEVfU1BFQyBhcyBhIHNwZWMuICBBIGNhcGl0YWwgRSBpcyBhY3R1YWxseSB1c2VkIGhlcmUuCisgICVDICAgICBwcm9jZXNzIENQUF9TUEVDIGFzIGEgc3BlYy4KK0BAIC0xNTAwLDEwICsxNTAzLDEwIEBAIHN0YXRpYyBjb25zdCBjaGFyICpnY2NfbGliZXhlY19wcmVmaXg7CisgICAgZ2NjX2V4ZWNfcHJlZml4IGlzIHNldCBiZWNhdXNlLCBpbiB0aGF0IGNhc2UsIHdlIGtub3cgd2hlcmUgdGhlCisgICAgY29tcGlsZXIgaGFzIGJlZW4gaW5zdGFsbGVkLCBhbmQgdXNlIHBhdGhzIHJlbGF0aXZlIHRvIHRoYXQKKyAgICBsb2NhdGlvbiBpbnN0ZWFkLiAgKi8KKy1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfZXhlY19wcmVmaXggPSBTVEFOREFSRF9FWEVDX1BSRUZJWDsKKy1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfbGliZXhlY19wcmVmaXggPSBTVEFOREFSRF9MSUJFWEVDX1BSRUZJWDsKKy1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfYmluZGlyX3ByZWZpeCA9IFNUQU5EQVJEX0JJTkRJUl9QUkVGSVg7Cistc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXggPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYOworK3N0YXRpYyBjaGFyIHN0YW5kYXJkX2V4ZWNfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX0VYRUNfUFJFRklYOworK3N0YXRpYyBjaGFyIHN0YW5kYXJkX2xpYmV4ZWNfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX0xJQkVYRUNfUFJFRklYOworK3N0YXRpYyBjaGFyIHN0YW5kYXJkX2JpbmRpcl9wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfQklORElSX1BSRUZJWDsKKytzdGF0aWMgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeCA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVg7CisgCisgLyogRm9yIG5hdGl2ZSBjb21waWxlcnMsIHRoZXNlIGFyZSB3ZWxsLWtub3duIHBhdGhzIGNvbnRhaW5pbmcKKyAgICBjb21wb25lbnRzIHRoYXQgbWF5IGJlIHByb3ZpZGVkIGJ5IHRoZSBzeXN0ZW0uICBGb3IgY3Jvc3MKK0BAIC0xNTExLDkgKzE1MTQsOSBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmCisgc3RhdGljIGNvbnN0IGNoYXIgKm1kX2V4ZWNfcHJlZml4ID0gTURfRVhFQ19QUkVGSVg7Cisgc3RhdGljIGNvbnN0IGNoYXIgKm1kX3N0YXJ0ZmlsZV9wcmVmaXggPSBNRF9TVEFSVEZJTEVfUFJFRklYOworIHN0YXRpYyBjb25zdCBjaGFyICptZF9zdGFydGZpbGVfcHJlZml4XzEgPSBNRF9TVEFSVEZJTEVfUFJFRklYXzE7Cistc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMQorK3N0YXRpYyBjaGFyIHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMVs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkKKyAgID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xOworLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzIKKytzdGF0aWMgY2hhciBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpCisgICA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMjsKKyAKKyAvKiBBIHJlbGF0aXZlIHBhdGggdG8gYmUgdXNlZCBpbiBmaW5kaW5nIHRoZSBsb2NhdGlvbiBvZiB0b29scworQEAgLTU5MjIsNiArNTkyNSwxMSBAQCBkb19zcGVjXzEgKGNvbnN0IGNoYXIgKnNwZWMsIGludCBpbnN3aXRjCisgCSAgICAgIH0KKyAJICAgIGJyZWFrOworIAorKyAgICAgICAgICBjYXNlICdyJzoKKysgICAgICAgICAgICAgIG9ic3RhY2tfZ3JvdyAoJm9ic3RhY2ssIHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXgsCisrCQkgICAgICBzdHJsZW4gKHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXgpKTsKKysgICAgICAgICAgICBicmVhazsKKysKKyAJICBjYXNlICdTJzoKKyAJICAgIHZhbHVlID0gZG9fc3BlY18xIChzdGFydGZpbGVfc3BlYywgMCwgTlVMTCk7CisgCSAgICBpZiAodmFsdWUgIT0gMCkKK0luZGV4OiBnY2MtOS4zLjAvZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2NjLTkuMy4wLm9yaWcvZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jCisrKysgZ2NjLTkuMy4wL2djYy9jLWZhbWlseS9jLW9wdHMuYworQEAgLTEzODIsOCArMTM4Miw4IEBAIGFkZF9wcmVmaXhlZF9wYXRoIChjb25zdCBjaGFyICpzdWZmaXgsIGkKKyAgIHNpemVfdCBwcmVmaXhfbGVuLCBzdWZmaXhfbGVuOworIAorICAgc3VmZml4X2xlbiA9IHN0cmxlbiAoc3VmZml4KTsKKy0gIHByZWZpeCAgICAgPSBpcHJlZml4ID8gaXByZWZpeCA6IGNwcF9HQ0NfSU5DTFVERV9ESVI7CistICBwcmVmaXhfbGVuID0gaXByZWZpeCA/IHN0cmxlbiAoaXByZWZpeCkgOiBjcHBfR0NDX0lOQ0xVREVfRElSX2xlbjsKKysgIHByZWZpeCAgICAgPSBpcHJlZml4ID8gaXByZWZpeCA6IEdDQ19JTkNMVURFX0RJUlZBUjsKKysgIHByZWZpeF9sZW4gPSBpcHJlZml4ID8gc3RybGVuIChpcHJlZml4KSA6IHN0cmxlbihHQ0NfSU5DTFVERV9ESVJWQVIpIC0gNzsKKyAKKyAgIHBhdGggPSAoY2hhciAqKSB4bWFsbG9jIChwcmVmaXhfbGVuICsgc3VmZml4X2xlbiArIDEpOworICAgbWVtY3B5IChwYXRoLCBwcmVmaXgsIHByZWZpeF9sZW4pOworSW5kZXg6IGdjYy05LjMuMC9nY2MvaW5jcGF0aC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2NjLTkuMy4wLm9yaWcvZ2NjL2luY3BhdGguYworKysrIGdjYy05LjMuMC9nY2MvaW5jcGF0aC5jCitAQCAtMTMxLDcgKzEzMSw3IEBAIGFkZF9zdGFuZGFyZF9wYXRocyAoY29uc3QgY2hhciAqc3lzcm9vdCwKKyAgIGludCByZWxvY2F0ZWQgPSBjcHBfcmVsb2NhdGVkICgpOworICAgc2l6ZV90IGxlbjsKKyAKKy0gIGlmIChpcHJlZml4ICYmIChsZW4gPSBjcHBfR0NDX0lOQ0xVREVfRElSX2xlbikgIT0gMCkKKysgIGlmIChpcHJlZml4ICYmIChsZW4gPSBzdHJsZW4oR0NDX0lOQ0xVREVfRElSVkFSKSAtIDcpICE9IDApCisgICAgIHsKKyAgICAgICAvKiBMb29rIGZvciBkaXJlY3RvcmllcyB0aGF0IHN0YXJ0IHdpdGggdGhlIHN0YW5kYXJkIHByZWZpeC4KKyAJICJUcmFuc2xhdGUiIHRoZW0sIGkuZS4gcmVwbGFjZSAvdXNyL2xvY2FsL2xpYi9nY2MuLi4gd2l0aAorQEAgLTE0NSw3ICsxNDUsNyBAQCBhZGRfc3RhbmRhcmRfcGF0aHMgKGNvbnN0IGNoYXIgKnN5c3Jvb3QsCisgCQkgbm93LiAgKi8KKyAJICAgICAgaWYgKHN5c3Jvb3QgJiYgcC0+YWRkX3N5c3Jvb3QpCisgCQljb250aW51ZTsKKy0JICAgICAgaWYgKCFmaWxlbmFtZV9uY21wIChwLT5mbmFtZSwgY3BwX0dDQ19JTkNMVURFX0RJUiwgbGVuKSkKKysJICAgICAgaWYgKCFmaWxlbmFtZV9uY21wIChwLT5mbmFtZSwgR0NDX0lOQ0xVREVfRElSVkFSLCBsZW4pKQorIAkJeworIAkJICBjaGFyICpzdHIgPSBjb25jYXQgKGlwcmVmaXgsIHAtPmZuYW1lICsgbGVuLCBOVUxMKTsKKyAJCSAgaWYgKHAtPm11bHRpbGliID09IDEgJiYgaW11bHRpbGliKQorQEAgLTE4NSw3ICsxODUsNyBAQCBhZGRfc3RhbmRhcmRfcGF0aHMgKGNvbnN0IGNoYXIgKnN5c3Jvb3QsCisgCSAgICAgIGZyZWUgKHN5c3Jvb3Rfbm9fdHJhaWxpbmdfZGlyX3NlcGFyYXRvcik7CisgCSAgICB9CisgCSAgZWxzZSBpZiAoIXAtPmFkZF9zeXNyb290ICYmIHJlbG9jYXRlZAorLQkJICAgJiYgIWZpbGVuYW1lX25jbXAgKHAtPmZuYW1lLCBjcHBfUFJFRklYLCBjcHBfUFJFRklYX2xlbikpCisrCQkgICAmJiAhZmlsZW5hbWVfbmNtcCAocC0+Zm5hbWUsIFBSRUZJWFZBUiwgc3RybGVuKFBSRUZJWFZBUikpKQorIAkgICAgeworICAJICAgICAgc3RhdGljIGNvbnN0IGNoYXIgKnJlbG9jYXRlZF9wcmVmaXg7CisgCSAgICAgIGNoYXIgKm9zdHI7CitAQCAtMjAyLDEyICsyMDIsMTIgQEAgYWRkX3N0YW5kYXJkX3BhdGhzIChjb25zdCBjaGFyICpzeXNyb290LAorIAkJICBkdW1teSA9IGNvbmNhdCAoZ2NjX2V4ZWNfcHJlZml4LCAiZHVtbXkiLCBOVUxMKTsKKyAJCSAgcmVsb2NhdGVkX3ByZWZpeAorIAkJICAgID0gbWFrZV9yZWxhdGl2ZV9wcmVmaXggKGR1bW15LAorLQkJCQkJICAgIGNwcF9FWEVDX1BSRUZJWCwKKy0JCQkJCSAgICBjcHBfUFJFRklYKTsKKysJCQkJCSAgICBFWEVDX1BSRUZJWFZBUiwKKysJCQkJCSAgICBQUkVGSVhWQVIpOworIAkJICBmcmVlIChkdW1teSk7CisgCQl9CisgCSAgICAgIG9zdHIgPSBjb25jYXQgKHJlbG9jYXRlZF9wcmVmaXgsCistCQkJICAgICBwLT5mbmFtZSArIGNwcF9QUkVGSVhfbGVuLAorKwkJCSAgICAgcC0+Zm5hbWUgKyBzdHJsZW4oUFJFRklYVkFSKSwKKyAJCQkgICAgIE5VTEwpOworIAkgICAgICBzdHIgPSB1cGRhdGVfcGF0aCAob3N0ciwgcC0+Y29tcG9uZW50KTsKKyAJICAgICAgZnJlZSAob3N0cik7CitJbmRleDogZ2NjLTkuMy4wL2djYy9wcmVmaXguYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdjYy05LjMuMC5vcmlnL2djYy9wcmVmaXguYworKysrIGdjYy05LjMuMC9nY2MvcHJlZml4LmMKK0BAIC03Miw3ICs3Miw5IEBAIExpY2Vuc2UgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1AKKyAjaW5jbHVkZSAicHJlZml4LmgiCisgI2luY2x1ZGUgImNvbW1vbi9jb21tb24tdGFyZ2V0LmgiCisgCistc3RhdGljIGNvbnN0IGNoYXIgKnN0ZF9wcmVmaXggPSBQUkVGSVg7Cisrc3RhdGljIGNvbnN0IGNoYXIgUFJFRklYVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFBSRUZJWDsKKysKKytzdGF0aWMgY29uc3QgY2hhciAqc3RkX3ByZWZpeCA9IFBSRUZJWFZBUjsKKyAKKyBzdGF0aWMgY29uc3QgY2hhciAqZ2V0X2tleV92YWx1ZSAoY2hhciAqKTsKKyBzdGF0aWMgY2hhciAqdHJhbnNsYXRlX25hbWUgKGNoYXIgKik7CitAQCAtMjEyLDcgKzIxNCw3IEBAIHRyYW5zbGF0ZV9uYW1lIChjaGFyICpuYW1lKQorIAlwcmVmaXggPSBnZXRlbnYgKGtleSk7CisgCisgICAgICAgaWYgKHByZWZpeCA9PSAwKQorLQlwcmVmaXggPSBQUkVGSVg7CisrCXByZWZpeCA9IFBSRUZJWFZBUjsKKyAKKyAgICAgICAvKiBXZSB1c2VkIHRvIHN0cmlwIHRyYWlsaW5nIERJUl9TRVBBUkFUT1JzIGhlcmUsIGJ1dCB0aGF0IGNhbgorIAkgc29tZXRpbWVzIHlpZWxkIGEgcmVzdWx0IHdpdGggbm8gc2VwYXJhdG9yIHdoZW4gb25lIHdhcyBjb2RlZApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyNi1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyNi1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiZmE3NTE2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyNi1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCkBAIC0wLDAgKzEsMTAyIEBACitGcm9tIDZjMzlhMjJjM2U4NWQyMGRlZTllMmZjMjI3NGU5NWRhOTgwZGU0ZDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjQxOjQ1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMjYvMzldIFNlYXJjaCB0YXJnZXQgc3lzcm9vdCBnY2MgdmVyc2lvbiBzcGVjaWZpYyBkaXJzIHdpdGgKKyBtdWx0aWxpYi4KKworV2UgaW5zdGFsbCB0aGUgZ2NjIGxpYnJhcmllcyAoc3VjaCBhcyBjcnRiZWdpbi5wKSBpbnRvCis8c3lzcm9vdD48bGliZGlyPi88dGFyZ2V0LXN5cz4vNS4yLjAvCit3aGljaCBpcyBhIGRlZmF1bHQgc2VhcmNoIHBhdGggZm9yIEdDQyAoYWthIG11bHRpX3N1ZmZpeCBpbiB0aGUKK2NvZGUgYmVsb3cpLiA8dGFyZ2V0LXN5cz4gaXMgJ21hY2hpbmUnIGluIGdjYydzIHRlcm1pbm9sb2d5LiBXZSB1c2UKK3RoZXNlIGRpcmVjdG9yaWVzIHNvIHRoYXQgbXVsdGlwbGUgZ2NjIHZlcnNpb25zIGNvdWxkIGluIHRoZW9yeQorY28tZXhpc3Qgb24gdGFyZ2V0LgorCitXZSBvbmx5IHdhbnQgdG8gYnVpbGQgb25lIGdjYy1jcm9zcy1jYW5hZGlhbiBwZXIgYXJjaCBhbmQgaGF2ZSB0aGlzIHdvcmsKK2ZvciBhbGwgbXVsdGlsaWJzLiA8dGFyZ2V0LXN5cz4gY2FuIGJlIGhhbmRsZWQgYnkgbWFwcGluZyB0aGUgbXVsdGlsaWIKKzx0YXJnZXQtc3lzPiB0byB0aGUgb25lIHVzZWQgYnkgZ2NjLWNyb3NzLWNhbmFkaWFuLCBlLmcuCittaXBzNjQtcG9sa21sbGliMzItbGludXgKK2lzIHN5bWxpbmtlZCB0byBieSBtaXBzNjQtcG9reS1saW51eC4KKworVGhlIGRlZmF1bHQgZ2NjIHNlYXJjaCBwYXRoIGluIHRoZSB0YXJnZXQgc3lzcm9vdCBmb3IgYSAibGliNjQiIG11dGxpbGliCitpczoKKworPHN5c3Jvb3Q+L2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLworPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0LworPHN5c3Jvb3Q+L3Vzci9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KKzxzeXNyb290Pi91c3IvbGliMzIvLi4vbGliNjQvCis8c3lzcm9vdD4vbGliMzIvCis8c3lzcm9vdD4vdXNyL2xpYjMyLworCit3aGljaCBtZWFucyB0aGF0IHRoZSBsaWIzMiBjcnRiZWdpbi5vIHdpbGwgYmUgZm91bmQgYW5kIHRoZSBsaWI2NCBvbmVzCit3aWxsIG5vdCB3aGljaCBsZWFkcyB0byBjb21waWxlciBmYWlsdXJlcy4KKworVGhpcyBwYXRjaCBpbmplY3RzIGEgbXVsdGlsaWIgdmVyc2lvbiBvZiB0aGF0IHBhdGggZmlyc3Qgc28gdGhlIGxpYjY0CitiaW5hcmllcyBjYW4gYmUgZm91bmQgZmlyc3QuIFdpdGggdGhpcyBjaGFuZ2UgdGhlIHNlYXJjaCBwYXRoIGJlY29tZXM6CisKKzxzeXNyb290Pi9saWIzMi8uLi9saWI2NC9taXBzNjQtcG9reS1saW51eC81LjIuMC8KKzxzeXNyb290Pi9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KKzxzeXNyb290Pi9saWIzMi8uLi9saWI2NC8KKzxzeXNyb290Pi91c3IvbGliMzIvLi4vbGliNjQvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCis8c3lzcm9vdD4vdXNyL2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLworPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC8KKzxzeXNyb290Pi9saWIzMi8KKzxzeXNyb290Pi91c3IvbGliMzIvCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworUlAgMjAxNS83LzMxCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvZ2NjLmMgfCAyOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKK2luZGV4IDU5ZmI2NGY1ZmQ1Li4zZTc5ZGE0MjM4YyAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtMjYxNyw3ICsyNjE3LDcgQEAgZm9yX2VhY2hfcGF0aCAoY29uc3Qgc3RydWN0IHBhdGhfcHJlZml4ICpwYXRocywKKyAgICAgICBpZiAocGF0aCA9PSBOVUxMKQorIAl7CisgCSAgbGVuID0gcGF0aHMtPm1heF9sZW4gKyBleHRyYV9zcGFjZSArIDE7CistCSAgbGVuICs9IE1BWCAoTUFYIChzdWZmaXhfbGVuLCBtdWx0aV9vc19kaXJfbGVuKSwgbXVsdGlhcmNoX2xlbik7CisrCSAgbGVuICs9IE1BWCAoKHN1ZmZpeF9sZW4gKyBtdWx0aV9vc19kaXJfbGVuKSwgbXVsdGlhcmNoX2xlbik7CisgCSAgcGF0aCA9IFhORVdWRUMgKGNoYXIsIGxlbik7CisgCX0KKyAKK0BAIC0yNjI5LDYgKzI2MjksMzMgQEAgZm9yX2VhY2hfcGF0aCAoY29uc3Qgc3RydWN0IHBhdGhfcHJlZml4ICpwYXRocywKKyAJICAvKiBMb29rIGZpcnN0IGluIE1BQ0hJTkUvVkVSU0lPTiBzdWJkaXJlY3RvcnkuICAqLworIAkgIGlmICghc2tpcF9tdWx0aV9kaXIpCisgCSAgICB7CisrCSAgICAgIGlmICghKHBsLT5vc19tdWx0aWxpYiA/IHNraXBfbXVsdGlfb3NfZGlyIDogc2tpcF9tdWx0aV9kaXIpKQorKwkgICAgICAgIHsKKysJICAgICAgICAgIGNvbnN0IGNoYXIgKnRoaXNfbXVsdGk7CisrCSAgICAgICAgICBzaXplX3QgdGhpc19tdWx0aV9sZW47CisrCisrCSAgICAgICAgICBpZiAocGwtPm9zX211bHRpbGliKQorKwkJICAgIHsKKysJCSAgICAgIHRoaXNfbXVsdGkgPSBtdWx0aV9vc19kaXI7CisrCQkgICAgICB0aGlzX211bHRpX2xlbiA9IG11bHRpX29zX2Rpcl9sZW47CisrCQkgICAgfQorKwkgICAgICAgICAgZWxzZQorKwkJICAgIHsKKysJCSAgICAgIHRoaXNfbXVsdGkgPSBtdWx0aV9kaXI7CisrCQkgICAgICB0aGlzX211bHRpX2xlbiA9IG11bHRpX2Rpcl9sZW47CisrCQkgICAgfQorKworKwkgICAgICAgICAgLyogTG9vayBpbiBtdWx0aWxpYiBNQUNISU5FL1ZFUlNJT04gc3ViZGlyZWN0b3J5IGZpcnN0ICovCisrCSAgICAgICAgICBpZiAodGhpc19tdWx0aV9sZW4pCisrCSAgICAgICAgICAgIHsKKysJCSAgICAgIG1lbWNweSAocGF0aCArIGxlbiwgdGhpc19tdWx0aSwgdGhpc19tdWx0aV9sZW4gKyAxKTsKKysJICAgICAgICAgICAgICBtZW1jcHkgKHBhdGggKyBsZW4gKyB0aGlzX211bHRpX2xlbiwgbXVsdGlfc3VmZml4LCBzdWZmaXhfbGVuICsgMSk7CisrCSAgICAgICAgICAgICAgcmV0ID0gY2FsbGJhY2sgKHBhdGgsIGNhbGxiYWNrX2luZm8pOworKwkgICAgICAgICAgICAgICAgaWYgKHJldCkKKysJCSAgICAgICAgICBicmVhazsKKysJICAgICAgICAgICAgfQorKwkgICAgICAgIH0KKysKKyAJICAgICAgbWVtY3B5IChwYXRoICsgbGVuLCBtdWx0aV9zdWZmaXgsIHN1ZmZpeF9sZW4gKyAxKTsKKyAJICAgICAgcmV0ID0gY2FsbGJhY2sgKHBhdGgsIGNhbGxiYWNrX2luZm8pOworIAkgICAgICBpZiAocmV0KQorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyNy1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjctRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU4YWNjNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjctRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2gKQEAgLTAsMCArMSwxMzcgQEAKK0Zyb20gMDdkYjM0YjE2YjZjOGUzZDk0OGI0MTdmMmZjMDUyNTAwZmZiNzdkMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6NDI6NDUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyNy8zOV0gRml4IHZhcmlvdXMgX0ZPUl9CVUlMRCBhbmQgcmVsYXRlZCB2YXJpYWJsZXMKKworV2hlbiBkb2luZyBhIEZPUl9CVUlMRCB0aGluZywgeW91IGhhdmUgdG8gb3ZlcnJpZGUgQ0ZMQUdTIHdpdGgKK0NGTEFHU19GT1JfQlVJTEQuIEFuZCBpZiB5b3UgdXNlIEMrKywgeW91IGFsc28gaGF2ZSB0byBvdmVycmlkZQorQ1hYRkxBR1Mgd2l0aCBDWFhGTEFHU19GT1JfQlVJTEQuCitXaXRob3V0IHRoaXMsIHdoZW4gYnVpbGRpbmcgZm9yIG1pbmd3LCB5b3UgZW5kIHVwIHRyeWluZyB0byB1c2UKK3RoZSBtaW5ndyBoZWFkZXJzIGZvciBhIGhvc3QgYnVpbGQuCisKK1RoZSBzYW1lIGdvZXMgZm9yIG90aGVyIHZhcmlhYmxlcyBhcyB3ZWxsLCBzdWNoIGFzIENQUEZMQUdTLAorQ1BQLCBhbmQgR01QSU5DLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogUGV0ZXIgU2VlYmFjaCA8cGV0ZXIuc2VlYmFjaEB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluICAgICAgfCA2ICsrKysrKworIE1ha2VmaWxlLnRwbCAgICAgfCA1ICsrKysrCisgZ2NjL01ha2VmaWxlLmluICB8IDIgKy0KKyBnY2MvY29uZmlndXJlICAgIHwgMiArLQorIGdjYy9jb25maWd1cmUuYWMgfCAyICstCisgNSBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggMjU1ODIyZTNmMjcuLjlkYzBkZmYwNDc0IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtMTUyLDYgKzE1Miw3IEBAIEJVSUxEX0VYUE9SVFMgPSBcCisgCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIjsgZXhwb3J0IENQUDsgXAorIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0ZMQUdTOyBcCisgCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCisrCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1BQRkxBR1M7IFwKKyAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAorIAlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENYWEZMQUdTOyBcCisgCUdGT1JUUkFOPSIkKEdGT1JUUkFOX0ZPUl9CVUlMRCkiOyBleHBvcnQgR0ZPUlRSQU47IFwKK0BAIC0xNzEsNiArMTcyLDkgQEAgQlVJTERfRVhQT1JUUyA9IFwKKyAjIGJ1aWx0IGZvciB0aGUgYnVpbGQgc3lzdGVtIHRvIG92ZXJyaWRlIHRob3NlIGluIEJBU0VfRkxBR1NfVE9fUEFTUy4KKyBFWFRSQV9CVUlMRF9GTEFHUyA9IFwKKyAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIiBcCisrCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKKysJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiIFwKKysJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSIgXAorIAlMREZMQUdTPSIkKExERkxBR1NfRk9SX0JVSUxEKSIKKyAKKyAjIFRoaXMgaXMgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gYnVpbHQgZm9yIHRoZSBob3N0IHN5c3RlbS4KK0BAIC0xODgsNiArMTkyLDcgQEAgSE9TVF9TVUJESVIgPSBAaG9zdF9zdWJkaXJACisgSE9TVF9FWFBPUlRTID0gXAorIAkkKEJBU0VfRVhQT1JUUykgXAorIAlDQz0iJChDQykiOyBleHBvcnQgQ0M7IFwKKysJQ1BQPSIkKENDKSAtRSI7IGV4cG9ydCBDUFA7IFwKKyAJQURBX0NGTEFHUz0iJChBREFfQ0ZMQUdTKSI7IGV4cG9ydCBBREFfQ0ZMQUdTOyBcCisgCUNGTEFHUz0iJChDRkxBR1MpIjsgZXhwb3J0IENGTEFHUzsgXAorIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAorQEAgLTc3NSw2ICs3ODAsNyBAQCBCQVNFX0ZMQUdTX1RPX1BBU1MgPSBcCisgCSJDQ19GT1JfQlVJTEQ9JChDQ19GT1JfQlVJTEQpIiBcCisgCSJDRkxBR1NfRk9SX0JVSUxEPSQoQ0ZMQUdTX0ZPUl9CVUlMRCkiIFwKKyAJIkNYWF9GT1JfQlVJTEQ9JChDWFhfRk9SX0JVSUxEKSIgXAorKwkiQ1hYRkxBR1NfRk9SX0JVSUxEPSQoQ1hYRkxBR1NfRk9SX0JVSUxEKSIgXAorIAkiRVhQRUNUPSQoRVhQRUNUKSIgXAorIAkiRkxFWD0kKEZMRVgpIiBcCisgCSJJTlNUQUxMPSQoSU5TVEFMTCkiIFwKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS50cGwgYi9NYWtlZmlsZS50cGwKK2luZGV4IDQxY2FlNThhMjY3Li5kM2Y2Yjc5YWNkYyAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLnRwbAorKysrIGIvTWFrZWZpbGUudHBsCitAQCAtMTU0LDYgKzE1NCw3IEBAIEJVSUxEX0VYUE9SVFMgPSBcCisgCUNDPSIkKENDX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0M7IFwKKyAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAorIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAorKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENQUEZMQUdTOyBcCisgCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKKyAJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFhGTEFHUzsgXAorIAlHRk9SVFJBTj0iJChHRk9SVFJBTl9GT1JfQlVJTEQpIjsgZXhwb3J0IEdGT1JUUkFOOyBcCitAQCAtMTczLDYgKzE3NCw5IEBAIEJVSUxEX0VYUE9SVFMgPSBcCisgIyBidWlsdCBmb3IgdGhlIGJ1aWxkIHN5c3RlbSB0byBvdmVycmlkZSB0aG9zZSBpbiBCQVNFX0ZMQUdTX1RPX1BBU1MuCisgRVhUUkFfQlVJTERfRkxBR1MgPSBcCisgCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSIgXAorKwlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCisrCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIiBcCisrCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiIFwKKyAJTERGTEFHUz0iJChMREZMQUdTX0ZPUl9CVUlMRCkiCisgCisgIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJ1aWx0IGZvciB0aGUgaG9zdCBzeXN0ZW0uCitAQCAtMTkwLDYgKzE5NCw3IEBAIEhPU1RfU1VCRElSID0gQGhvc3Rfc3ViZGlyQAorIEhPU1RfRVhQT1JUUyA9IFwKKyAJJChCQVNFX0VYUE9SVFMpIFwKKyAJQ0M9IiQoQ0MpIjsgZXhwb3J0IENDOyBcCisrCUNQUD0iJChDQykgLUUiOyBleHBvcnQgQ1BQOyBcCisgCUFEQV9DRkxBR1M9IiQoQURBX0NGTEFHUykiOyBleHBvcnQgQURBX0NGTEFHUzsgXAorIAlDRkxBR1M9IiQoQ0ZMQUdTKSI7IGV4cG9ydCBDRkxBR1M7IFwKKyAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKK2RpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KK2luZGV4IDc3NzIzNDJhZDVlLi4wMmZlYzg4MWI2ZCAxMDA2NDQKKy0tLSBhL2djYy9NYWtlZmlsZS5pbgorKysrIGIvZ2NjL01ha2VmaWxlLmluCitAQCAtODA1LDcgKzgwNSw3IEBAIEJVSUxEX0xERkxBR1M9QEJVSUxEX0xERkxBR1NACisgQlVJTERfTk9fUElFX0ZMQUcgPSBAQlVJTERfTk9fUElFX0ZMQUdACisgQlVJTERfTERGTEFHUyArPSAkKEJVSUxEX05PX1BJRV9GTEFHKQorIEJVSUxEX0NQUEZMQUdTPSAtSS4gLUkkKEBEKSAtSSQoc3JjZGlyKSAtSSQoc3JjZGlyKS8kKEBEKSBcCistCQktSSQoc3JjZGlyKS8uLi9pbmNsdWRlIEBJTkNJTlRMQCAkKENQUElOQykgJChDUFBGTEFHUykKKysJCS1JJChzcmNkaXIpLy4uL2luY2x1ZGUgQElOQ0lOVExAICQoQ1BQSU5DKSAkKENQUEZMQUdTX0ZPUl9CVUlMRCkKKyAKKyAjIEFjdHVhbCBuYW1lIHRvIHVzZSB3aGVuIGluc3RhbGxpbmcgYSBuYXRpdmUgY29tcGlsZXIuCisgR0NDX0lOU1RBTExfTkFNRSA6PSAkKHNoZWxsIGVjaG8gZ2NjfHNlZCAnJChwcm9ncmFtX3RyYW5zZm9ybV9uYW1lKScpCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IGE1ZjIwOGFmN2NmLi4wNzg4YjdiZjBiNSAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC0xMTk2Niw3ICsxMTk2Niw3IEBAIGVsc2UKKyAJQ0M9IiR7Q0NfRk9SX0JVSUxEfSIgQ0ZMQUdTPSIke0NGTEFHU19GT1JfQlVJTER9IiBcCisgCUNYWD0iJHtDWFhfRk9SX0JVSUxEfSIgQ1hYRkxBR1M9IiR7Q1hYRkxBR1NfRk9SX0JVSUxEfSIgXAorIAlMRD0iJHtMRF9GT1JfQlVJTER9IiBMREZMQUdTPSIke0xERkxBR1NfRk9SX0JVSUxEfSIgXAorLQlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9IC1ER0VORVJBVE9SX0ZJTEUiIFwKKysJR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTX0ZPUl9CVUlMRH0gLURHRU5FUkFUT1JfRklMRSIgXAorIAkke3JlYWxzcmNkaXJ9L2NvbmZpZ3VyZSBcCisgCQktLWVuYWJsZS1sYW5ndWFnZXM9JHtlbmFibGVfbGFuZ3VhZ2VzLWFsbH0gXAorIAkJLS10YXJnZXQ9JHRhcmdldF9hbGlhcyAtLWhvc3Q9JGJ1aWxkX2FsaWFzIC0tYnVpbGQ9JGJ1aWxkX2FsaWFzCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKK2luZGV4IGI3YTdlYWQxYzAyLi41YWI1MGZhZTBmMyAxMDA2NDQKKy0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrKyBiL2djYy9jb25maWd1cmUuYWMKK0BAIC0xNzQzLDcgKzE3NDMsNyBAQCBlbHNlCisgCUNDPSIke0NDX0ZPUl9CVUlMRH0iIENGTEFHUz0iJHtDRkxBR1NfRk9SX0JVSUxEfSIgXAorIAlDWFg9IiR7Q1hYX0ZPUl9CVUlMRH0iIENYWEZMQUdTPSIke0NYWEZMQUdTX0ZPUl9CVUlMRH0iIFwKKyAJTEQ9IiR7TERfRk9SX0JVSUxEfSIgTERGTEFHUz0iJHtMREZMQUdTX0ZPUl9CVUlMRH0iIFwKKy0JR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTfSAtREdFTkVSQVRPUl9GSUxFIiBcCisrCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU19GT1JfQlVJTER9IC1ER0VORVJBVE9SX0ZJTEUiIFwKKyAJJHtyZWFsc3JjZGlyfS9jb25maWd1cmUgXAorIAkJLS1lbmFibGUtbGFuZ3VhZ2VzPSR7ZW5hYmxlX2xhbmd1YWdlcy1hbGx9IFwKKyAJCS0tdGFyZ2V0PSR0YXJnZXRfYWxpYXMgLS1ob3N0PSRidWlsZF9hbGlhcyAtLWJ1aWxkPSRidWlsZF9hbGlhcworLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyOC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjgtbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJhNWQ5NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjgtbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA1OTU0M2U4OTdlYjM1MTk0ZmI0NzI4OGY3NzYyZTQwYTE4ZmZmNjExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMiBGZWIgMjAxNiAxMDoyNjoxMCAtMDgwMAorU3ViamVjdDogW1BBVENIIDI4LzM5XSBuaW9zMjogRGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9jb25maWcvbmlvczIvbGludXguaCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oIGIvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oCitpbmRleCA2OTg3MzRhZGQzNS4uZWVlZTYwZWNmZWEgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvbmlvczIvbGludXguaAorQEAgLTMwLDYgKzMwLDcgQEAKKyAjZGVmaW5lIENQUF9TUEVDICIle3Bvc2l4Oi1EX1BPU0lYX1NPVVJDRX0gJXtwdGhyZWFkOi1EX1JFRU5UUkFOVH0iCisgCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1uaW9zMi5zby4xIgorKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAgIi9saWIvbGQtbXVzbC1uaW9zMi5zby4xIgorIAorICN1bmRlZiBMSU5LX1NQRUMKKyAjZGVmaW5lIExJTktfU1BFQyBMSU5LX1NQRUNfRU5ESUFOIFwKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjktQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjktQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZmE3ZTE5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyOS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoCkBAIC0wLDAgKzEsODcgQEAKK0Zyb20gOGRmOTlhZjBhNjVlZjc0MGJjZjJiN2RjOWExMDljYzU3ZjE1YzNhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI3IEp1biAyMDE3IDE4OjEwOjU0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMjkvMzldIEFkZCBzc3Bfbm9uc2hhcmVkIHRvIGxpbmsgY29tbWFuZGxpbmUgZm9yIG11c2wgdGFyZ2V0cworCit3aGVuIC1mc3RhY2stcHJvdGVjdG9yIG9wdGlvbnMgYXJlIGVuYWJsZWQgd2UgbmVlZCB0bworbGluayB3aXRoIHNzcF9zaGFyZWQgb24gbXVzbCBzaW5jZSBpdCBkb2VzIG5vdCBwcm92aWRlCit0aGUgX19zdGFja19jaGtfZmFpbF9sb2NhbCgpIHNvIGVzc2VudGlhbGx5IGl0IHByb3ZpZGVzCitsaWJzc3AgYnV0IG5vdCBsaWJzc3Bfbm9uc2hhcmVkIHNvbWV0aGluZyBsaWtlCitUQVJHRVRfTElCQ19QUk9WSURFU19TU1BfQlVUX05PVF9TU1BfTk9OU0hBUkVECisgd2hlcmUtYXMgZm9yIGdsaWJjIHRoZSBuZWVkZWQgc3ltYm9scworYXJlIGFscmVhZHkgcHJlc2VudCBpbiBsaWJjX25vbnNoYXJlZCBsaWJyYXJ5IHRoZXJlZm9yZQord2UgZG8gbm90IG5lZWQgYW55IGxpYnJhcnkgaGVscGVyIG9uIGdsaWJjIGJhc2VkIHN5c3RlbXMKK2J1dCBtdXNsIG5lZWRzIHRoZSBsaWJzc3Bfbm9zaGFyZWQgZnJvbSBnY2MKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvY29uZmlnL2xpbnV4LmggICAgICAgICAgfCAgNyArKysrKysrCisgZ2NjL2NvbmZpZy9yczYwMDAvbGludXguaCAgIHwgMTAgKysrKysrKysrKworIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCB8IDEwICsrKysrKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbGludXguaCBiL2djYy9jb25maWcvbGludXguaAoraW5kZXggNGIwNWQ4ZTkzZDEuLjBjYTExN2UyZWQ0IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL2xpbnV4LmgKK0BAIC0xOTUsNiArMTk1LDEzIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDEsIDAsIDAgfSwJCVwKKyAgICAgeyAwLCAwLCAwLCAwLCAwLCAwIH0JCQkJXAorICAgfQorKyNpZmRlZiBUQVJHRVRfTElCQ19QUk9WSURFU19TU1AKKysjdW5kZWYgTElOS19TU1BfU1BFQworKyNkZWZpbmUgTElOS19TU1BfU1BFQyAiJXtmc3RhY2stcHJvdGVjdG9yfGZzdGFjay1wcm90ZWN0b3ItYWxsIiBcCisrCQkgICAgICAgInxmc3RhY2stcHJvdGVjdG9yLXN0cm9uZ3xmc3RhY2stcHJvdGVjdG9yLWV4cGxpY2l0IiBcCisrCQkgICAgICAgIjotbHNzcF9ub25zaGFyZWR9IgorKyNlbmRpZgorKworICNlbmRpZgorIAorICNpZiAoREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDKSAmJiBkZWZpbmVkIChTSU5HTEVfTElCQykgLyogdUNsaW51eCAqLworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCitpbmRleCBmZmNlYjMyYmY2NS4uYzgyY2IyYWQwNWIgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oCitAQCAtOTQsNiArOTQsMTYgQEAKKyAJCQkJCSAiIC1tIGVsZjMycHBjbGludXgiKQorICNlbmRpZgorIAorKy8qIGxpbmsgbGlic3NwX25vbnNoYXJlZC5hIHdpdGggbXVzbCAqLworKyNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCisrI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAorKyN1bmRlZiBMSU5LX1NTUF9TUEVDCisrI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKKysJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKKysJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCisrI2VuZGlmCisrI2VuZGlmCisrCisgI3VuZGVmIExJTktfT1NfTElOVVhfU1BFQworICNkZWZpbmUgTElOS19PU19MSU5VWF9TUEVDIExJTktfT1NfTElOVVhfRU1VTCAiICV7IXNoYXJlZDogJXshc3RhdGljOiBcCisgICAleyFzdGF0aWMtcGllOiBcCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCitpbmRleCA0NWE5YTdjYWU1OS4uZDFlODhhNDBlODIgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKKysrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAorQEAgLTQ1Niw2ICs0NTYsMTYgQEAgZXh0ZXJuIGludCBkb3Rfc3ltYm9sczsKKyAJCQkJCSAgICIgLW0gZWxmNjRwcGMiKQorICNlbmRpZgorIAorKy8qIGxpbmsgbGlic3NwX25vbnNoYXJlZC5hIHdpdGggbXVzbCAqLworKyNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCisrI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAorKyN1bmRlZiBMSU5LX1NTUF9TUEVDCisrI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKKysJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKKysJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCisrI2VuZGlmCisrI2VuZGlmCisrCisgI2RlZmluZSBMSU5LX09TX0xJTlVYX1NQRUMzMiBMSU5LX09TX0xJTlVYX0VNVUwzMiAiICV7IXNoYXJlZDogJXshc3RhdGljOiBcCisgICAleyFzdGF0aWMtcGllOiBcCisgICAgICV7cmR5bmFtaWM6LWV4cG9ydC1keW5hbWljfSBcCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDMwLWxkYmwxMjgtY29uZmlnLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzMC1sZGJsMTI4LWNvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGU4YzA3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzMC1sZGJsMTI4LWNvbmZpZy5wYXRjaApAQCAtMCwwICsxLDc5IEBACitGcm9tIDFiZmFlNjI0YjI3ZWE0YTFmNWM1YTkyMDUwZDc0MWI1MTFlN2IzZDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTemFib2xjcyBOYWd5IDxuc3pAcG9ydDcwLm5ldD4KK0RhdGU6IFdlZCwgMjggRmViIDIwMTggMDA6NTQ6MDUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAzMC8zOV0gbGRibDEyOCBjb25maWcKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvY29uZmlndXJlICAgIHwgMTMgKysrKysrKysrKysrKworIGdjYy9jb25maWd1cmUuYWMgfCAxNiArKysrKysrKysrKysrKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IDA3ODhiN2JmMGI1Li5lYjFhNDViYjI2MyAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC0yOTM3MCw2ICsyOTM3MCwxNSBAQCBpZiB0ZXN0ICIke3dpdGhfbG9uZ19kb3VibGVfMTI4K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgIHdpdGh2YWw9JHdpdGhfbG9uZ19kb3VibGVfMTI4OyBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9IiR3aXRoX2xvbmdfZG91YmxlXzEyOCIKKyBlbHNlCisgCisrICAgICAgY2FzZSAiJHRhcmdldCIgaW4KKysJczM5MCotKi1saW51eC1tdXNsKikKKysJICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9eWVzCisrCSAgOzsKKysJcG93ZXJwYyotKi1saW51eC1tdXNsKikKKysJICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9bm8KKysJICA7OworKwkqKQorKworIGlmIHRlc3QgJGdsaWJjX3ZlcnNpb25fbWFqb3IgLWd0IDIgXAorICAgfHwgKCB0ZXN0ICRnbGliY192ZXJzaW9uX21ham9yIC1lcSAyICYmIHRlc3QgJGdsaWJjX3ZlcnNpb25fbWlub3IgLWdlIDQgKTsgdGhlbiA6CisgICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9eWVzCitAQCAtMjkzODEsNiArMjkzOTAsMTAgQEAgZWxzZQorICAgICAgICYmIGdjY19jdl90YXJnZXRfbGRibDEyOD15ZXMKKyAKKyBmaQorKworKwkgIDs7CisrICAgICAgZXNhYworKworIGZpCisgCisgICAgIDs7CitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKK2luZGV4IDVhYjUwZmFlMGYzLi43ZmZlMzVlZTFjMyAxMDA2NDQKKy0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrKyBiL2djYy9jb25maWd1cmUuYWMKK0BAIC02MDMwLDEzICs2MDMwLDI1IEBAIGNhc2UgIiR0YXJnZXQiIGluCisgICAgIEFDX0FSR19XSVRIKGxvbmctZG91YmxlLTEyOCwKKyAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1sb25nLWRvdWJsZS0xMjhdLAorIAkJICAgICAgW3VzZSAxMjgtYml0IGxvbmcgZG91YmxlIGJ5IGRlZmF1bHRdKV0sCistICAgICAgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PSIkd2l0aF9sb25nX2RvdWJsZV8xMjgiLAorKyAgICAgIGdjY19jdl90YXJnZXRfbGRibDEyOD0iJHdpdGhfbG9uZ19kb3VibGVfMTI4IiwgWworKyAgICAgIGNhc2UgIiR0YXJnZXQiIGluCisrCXMzOTAqLSotbGludXgtbXVzbCopCisrCSAgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PXllcworKwkgIDs7CisrCXBvd2VycGMqLSotbGludXgtbXVzbCopCisrCSAgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PW5vCisrCSAgOzsKKysJKildCisgICAgICAgW0dDQ19HTElCQ19WRVJTSU9OX0dURV9JRkVMU0UoWzJdLCBbNF0sIFtnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9eWVzXSwgWworICAgICAgIFtnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9bm8KKyAgICAgICBncmVwICdeWyAJXSojWyAJXSpkZWZpbmVbIAldWyAJXSpfX0xPTkdfRE9VQkxFX01BVEhfT1BUSU9OQUwnIFwKKyAgICAgICAgICR0YXJnZXRfaGVhZGVyX2Rpci9iaXRzL3dvcmRzaXplLmggPiAvZGV2L251bGwgMj4mMSBcCisgICAgICAgJiYgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PXllcworLSAgICAgIF1dKV0pCisrICAgICAgXV0pXQorKyAgICAgIFsKKysJICA7OworKyAgICAgIGVzYWMKKysgICAgICBdKQorICAgICA7OworIGVzYWMKKyBpZiB0ZXN0IHgkZ2NjX2N2X3RhcmdldF9sZGJsMTI4ID0geHllczsgdGhlbgorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzMS1MaW5rLWxpYmdjYy11c2luZy1MREZMQUdTLW5vdC1qdXN0LVNITElCX0xERkxBR1MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDMxLUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGEyOWZjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzMS1MaW5rLWxpYmdjYy11c2luZy1MREZMQUdTLW5vdC1qdXN0LVNITElCX0xERkxBR1MucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSAzMWQwMDhmNTU3MzYyN2M2MTkyY2U5ZmNmNzI5ZjBiZTQ2NGE3Y2Y1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNCBNYXkgMjAxNiAyMToxMTozNCAtMDcwMAorU3ViamVjdDogW1BBVENIIDMxLzM5XSBMaW5rIGxpYmdjYyB1c2luZyBMREZMQUdTLCBub3QganVzdCBTSExJQl9MREZMQUdTCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYmdjYy9jb25maWcvdC1zbGliZ2NjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MgYi9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYworaW5kZXggMDk5YmYyM2U2MmYuLjQzNmIyNzdhNzlmIDEwMDY0NAorLS0tIGEvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MKKysrKyBiL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCitAQCAtMzIsNyArMzIsNyBAQCBTSExJQl9JTlNUQUxMX1NPTElOSyA9ICQoTE5fUykgJChTSExJQl9TT05BTUUpIFwKKyAJJChERVNURElSKSQoc2xpYmRpcikkKFNITElCX1NMSUJESVJfUVVBTCkvJChTSExJQl9TT0xJTkspCisgCisgU0hMSUJfTElOSyA9ICQoQ0MpICQoTElCR0NDMl9DRkxBR1MpIC1zaGFyZWQgLW5vZGVmYXVsdGxpYnMgXAorLQkkKFNITElCX0xERkxBR1MpIFwKKysJJChMREZMQUdTKSAkKFNITElCX0xERkxBR1MpIFwKKyAJLW8gJChTSExJQl9ESVIpLyQoU0hMSUJfU09OQU1FKS50bXAgQG11bHRpbGliX2ZsYWdzQCBcCisgCSQoU0hMSUJfT0JKUykgJChTSExJQl9MQykgJiYgXAorIAlybSAtZiAkKFNITElCX0RJUikvJChTSExJQl9TT0xJTkspICYmIFwKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzItbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzItbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjA0OGRhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzMi1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoCkBAIC0wLDAgKzEsODYgQEAKK0Zyb20gNzYxZmE2ZTNlMzc2MDhjZmQxYjI4OGU3MjFhMmZmODkyODhjZDZhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN6YWJvbGNzIE5hZ3kgPG5zekBwb3J0NzAubmV0PgorRGF0ZTogU2F0LCAyNCBPY3QgMjAxNSAyMDowOTo1MyArMDAwMAorU3ViamVjdDogW1BBVENIIDMyLzM5XSBsaWJnY2NfczogVXNlIGFsaWFzIGZvciBfX2NwdV9pbmRpY2F0b3JfaW5pdCBpbnN0ZWFkIG9mCisgc3ltdmVyCisKK0FkYXB0ZXIgZnJvbQorCitodHRwczovL2djYy5nbnUub3JnL21sL2djYy1wYXRjaGVzLzIwMTUtMDUvbXNnMDA4OTkuaHRtbAorCitUaGlzIGZpeCB3YXMgZGViYXRlZCBidXQgaGFzbnQgYmVlbiBhcHBsaWVkIGdjYyB1cHN0cmVhbSBzaW5jZQordGhleSBleHBlY3QgbXVzbCB0byBzdXBwb3J0ICdAJyBpbiBzeW1ib2wgdmVyc2lvbmluZyB3aGljaCBpcworYSBzdW4vZ251IHZlcnNpb25pbmcgZXh0ZW50aW9uLiBUaGlzIHBhdGNoIGhvd2V2ZXIgYXZvaWRzIHRoZQorbmVlZCBmb3IgdGhlICdAJyBzeW1ib2xzIGF0IGFsbAorCitsaWJnY2MvQ2hhbmdlbG9nOgorCisyMDE1LTA1LTExICBTemFib2xjcyBOYWd5ICA8c3phYm9sY3MubmFneUBhcm0uY29tPgorCisJKiBjb25maWcvaTM4Ni9jcHVpbmZvLmMgKF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsKTogQWRkLgorCShfX2NwdV9pbmRpY2F0b3JfaW5pdEBHQ0NfNC44LjAsIF9fY3B1X21vZGVsQEdDQ180LjguMCk6IFJlbW92ZS4KKworCSogY29uZmlnL2kzODYvdC1saW51eCAoSE9TVF9MSUJHQ0MyX0NGTEFHUyk6IFJlbW92ZSAtRFVTRV9FTEZfU1lNVkVSLgorCitnY2MvQ2hhbmdlbG9nOgorCisyMDE1LTA1LTExICBTemFib2xjcyBOYWd5ICA8c3phYm9sY3MubmFneUBhcm0uY29tPgorCisJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX2J1aWx0aW4pOiBNYWtlIF9fYnVpbHRpbl9jcHVfaW5pdAorCWNhbGwgX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwgaW5zdGVhZCBvZiBfX2NwdV9pbmRpY2F0b3JfaW5pdC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvY29uZmlnL2kzODYvaTM4Ni5jICAgICAgIHwgNCArKy0tCisgbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYyB8IDYgKysrLS0tCisgbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXggICB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCitpbmRleCAxYmNhNWE3ZWVhNi4uMDk2YzRiYzhlMjUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCisrKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCitAQCAtMzY2ODUsMTAgKzM2Njg1LDEwIEBAIGl4ODZfZXhwYW5kX2J1aWx0aW4gKHRyZWUgZXhwLCBydHggdGFyZ2V0LCBydHggc3VidGFyZ2V0LAorICAgICB7CisgICAgIGNhc2UgSVg4Nl9CVUlMVElOX0NQVV9JTklUOgorICAgICAgIHsKKy0JLyogTWFrZSBpdCBjYWxsIF9fY3B1X2luZGljYXRvcl9pbml0IGluIGxpYmdjYy4gKi8KKysJLyogTWFrZSBpdCBjYWxsIF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsIGluIGxpYmdjYy5hLiAqLworIAl0cmVlIGNhbGxfZXhwciwgZm5kZWNsLCB0eXBlOworICAgICAgICAgdHlwZSA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoaW50ZWdlcl90eXBlX25vZGUsIE5VTExfVFJFRSk7IAorLQlmbmRlY2wgPSBidWlsZF9mbl9kZWNsICgiX19jcHVfaW5kaWNhdG9yX2luaXQiLCB0eXBlKTsKKysJZm5kZWNsID0gYnVpbGRfZm5fZGVjbCAoIl9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsIiwgdHlwZSk7CisgCWNhbGxfZXhwciA9IGJ1aWxkX2NhbGxfZXhwciAoZm5kZWNsLCAwKTsgCisgCXJldHVybiBleHBhbmRfZXhwciAoY2FsbF9leHByLCB0YXJnZXQsIG1vZGUsIEVYUEFORF9OT1JNQUwpOworICAgICAgIH0KK2RpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jIGIvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYworaW5kZXggZDZjYjJkZTYyNjUuLmNlMDRlZjc4MjA1IDEwMDY0NAorLS0tIGEvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYworKysrIGIvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYworQEAgLTUwNCw3ICs1MDQsNyBAQCBfX2NwdV9pbmRpY2F0b3JfaW5pdCAodm9pZCkKKyAgIHJldHVybiAwOworIH0KKyAKKy0jaWYgZGVmaW5lZCBTSEFSRUQgJiYgZGVmaW5lZCBVU0VfRUxGX1NZTVZFUgorLV9fYXNtX18gKCIuc3ltdmVyIF9fY3B1X2luZGljYXRvcl9pbml0LCBfX2NwdV9pbmRpY2F0b3JfaW5pdEBHQ0NfNC44LjAiKTsKKy1fX2FzbV9fICgiLnN5bXZlciBfX2NwdV9tb2RlbCwgX19jcHVfbW9kZWxAR0NDXzQuOC4wIik7CisrI2lmbmRlZiBTSEFSRUQKKytpbnQgX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwgKHZvaWQpCisrICBfX2F0dHJpYnV0ZV9fICgod2VhaywgYWxpYXMgKCJfX2NwdV9pbmRpY2F0b3JfaW5pdCIpKSk7CisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXggYi9saWJnY2MvY29uZmlnL2kzODYvdC1saW51eAoraW5kZXggODUwNmE2MzU3OTAuLjU2NDI5NmY3ODhlIDEwMDY0NAorLS0tIGEvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXgKKysrKyBiL2xpYmdjYy9jb25maWcvaTM4Ni90LWxpbnV4CitAQCAtMyw1ICszLDUgQEAKKyAjIHQtc2xpYmdjYy1lbGYtdmVyIGFuZCB0LWxpbnV4CisgU0hMSUJfTUFQRklMRVMgPSBsaWJnY2Mtc3RkLnZlciAkKHNyY2RpcikvY29uZmlnL2kzODYvbGliZ2NjLWdsaWJjLnZlcgorIAorLUhPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS04MCAtRFVTRV9FTEZfU1lNVkVSICQoQ0VUX0ZMQUdTKQorK0hPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS04MCAkKENFVF9GTEFHUykKKyBDUlRTVFVGRl9UX0NGTEFHUyArPSAkKENFVF9GTEFHUykKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzMtc3luYy1nY2Mtc3RkZGVmLmgtd2l0aC1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzMy1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA4MGIwNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzMtc3luYy1nY2Mtc3RkZGVmLmgtd2l0aC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsOTEgQEAKK0Zyb20gMTI2ZTM0MmZiMzlkN2FmNzBjMWU1YTZkZjhmZmFmYzhkZmMzYmYwOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDMgRmViIDIwMTcgMTI6NTY6MDAgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAzMy8zOV0gc3luYyBnY2Mgc3RkZGVmLmggd2l0aCBtdXNsCisKK211c2wgZGVmaW5lcyBwdHJkaWZmX3Qgc2l6ZV90IGFuZCB3Y2hhcl90CitzbyBkb250IGRlZmluZSB0aGVtIGhlcmUgaWYgbXVzbCBpcyBkZWZpbmluaW5nIHRoZW0KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvZ2luY2x1ZGUvc3RkZGVmLmggfCA5ICsrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2djYy9naW5jbHVkZS9zdGRkZWYuaCBiL2djYy9naW5jbHVkZS9zdGRkZWYuaAoraW5kZXggZGE2OTJlMWMwMWEuLjlhMDBjMjYxYWRiIDEwMDY0NAorLS0tIGEvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCisrKysgYi9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgKK0BAIC0xMjgsNiArMTI4LDcgQEAgX1RZUEVfd2NoYXJfdDsKKyAjaWZuZGVmIF9fX2ludF9wdHJkaWZmX3RfaAorICNpZm5kZWYgX0dDQ19QVFJESUZGX1QKKyAjaWZuZGVmIF9QVFJESUZGX1RfREVDTEFSRUQgLyogRHJhZ29uRmx5ICovCisrI2lmbmRlZiBfX0RFRklORURfcHRyZGlmZl90IC8qIG11c2wgKi8KKyAjZGVmaW5lIF9QVFJESUZGX1QKKyAjZGVmaW5lIF9UX1BUUkRJRkZfCisgI2RlZmluZSBfVF9QVFJESUZGCitAQCAtMTM3LDEwICsxMzgsMTIgQEAgX1RZUEVfd2NoYXJfdDsKKyAjZGVmaW5lIF9fX2ludF9wdHJkaWZmX3RfaAorICNkZWZpbmUgX0dDQ19QVFJESUZGX1QKKyAjZGVmaW5lIF9QVFJESUZGX1RfREVDTEFSRUQKKysjZGVmaW5lIF9fREVGSU5FRF9wdHJkaWZmX3QgLyogbXVzbCAqLworICNpZm5kZWYgX19QVFJESUZGX1RZUEVfXworICNkZWZpbmUgX19QVFJESUZGX1RZUEVfXyBsb25nIGludAorICNlbmRpZgorIHR5cGVkZWYgX19QVFJESUZGX1RZUEVfXyBwdHJkaWZmX3Q7CisrI2VuZGlmIC8qIF9fREVGSU5FRF9wdHJkaWZmX3QgKi8KKyAjZW5kaWYgLyogX1BUUkRJRkZfVF9ERUNMQVJFRCAqLworICNlbmRpZiAvKiBfR0NDX1BUUkRJRkZfVCAqLworICNlbmRpZiAvKiBfX19pbnRfcHRyZGlmZl90X2ggKi8KK0BAIC0xNzgsNiArMTgxLDcgQEAgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKKyAjaWZuZGVmIF9HQ0NfU0laRV9UCisgI2lmbmRlZiBfU0laRVRfCisgI2lmbmRlZiBfX3NpemVfdAorKyNpZm5kZWYgX19ERUZJTkVEX3NpemVfdCAvKiBtdXNsICovCisgI2RlZmluZSBfX3NpemVfdF9fCS8qIEJlT1MgKi8KKyAjZGVmaW5lIF9fU0laRV9UX18JLyogQ3JheSBVbmljb3MvTWsgKi8KKyAjZGVmaW5lIF9TSVpFX1QKK0BAIC0xOTQsNiArMTk4LDcgQEAgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKKyAjZGVmaW5lIF9fX2ludF9zaXplX3RfaAorICNkZWZpbmUgX0dDQ19TSVpFX1QKKyAjZGVmaW5lIF9TSVpFVF8KKysjZGVmaW5lIF9fREVGSU5FRF9zaXplX3QgLyogbXVzbCAqLworICNpZiBkZWZpbmVkIChfX0ZyZWVCU0RfXykgXAorICAgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSBcCisgICB8fCBkZWZpbmVkKF9fRnJlZUJTRF9rZXJuZWxfXykgXAorQEAgLTIyOCw2ICsyMzMsNyBAQCB0eXBlZGVmIGxvbmcgc3NpemVfdDsKKyAjZW5kaWYgLyogX1NJWkVfVCAqLworICNlbmRpZiAvKiBfX1NJWkVfVF9fICovCisgI2VuZGlmIC8qIF9fc2l6ZV90X18gKi8KKysjZW5kaWYgLyogX19ERUZJTkVEX3NpemVfdCAqLworICN1bmRlZglfX25lZWRfc2l6ZV90CisgI2VuZGlmIC8qIF9TVERERUZfSCBvciBfX25lZWRfc2l6ZV90LiAgKi8KKyAKK0BAIC0yNTcsNiArMjYzLDcgQEAgdHlwZWRlZiBsb25nIHNzaXplX3Q7CisgI2lmbmRlZiBfX19pbnRfd2NoYXJfdF9oCisgI2lmbmRlZiBfX0lOVF9XQ0hBUl9UX0gKKyAjaWZuZGVmIF9HQ0NfV0NIQVJfVAorKyNpZm5kZWYgX19ERUZJTkVEX3djaGFyX3QgLyogbXVzbCAqLworICNkZWZpbmUgX193Y2hhcl90X18JLyogQmVPUyAqLworICNkZWZpbmUgX19XQ0hBUl9UX18JLyogQ3JheSBVbmljb3MvTWsgKi8KKyAjZGVmaW5lIF9XQ0hBUl9UCitAQCAtMjcyLDYgKzI3OSw3IEBAIHR5cGVkZWYgbG9uZyBzc2l6ZV90OworICNkZWZpbmUgX19JTlRfV0NIQVJfVF9ICisgI2RlZmluZSBfR0NDX1dDSEFSX1QKKyAjZGVmaW5lIF9XQ0hBUl9UX0RFQ0xBUkVECisrI2RlZmluZSBfX0RFRklORURfd2NoYXJfdCAvKiBtdXNsICovCisgCisgLyogT24gQlNELzM4NiAxLjEsIGF0IGxlYXN0LCBtYWNoaW5lL2Fuc2kuaCBkZWZpbmVzIF9CU0RfV0NIQVJfVF8KKyAgICBpbnN0ZWFkIG9mIF9XQ0hBUl9UXywgYW5kIF9CU0RfUlVORV9UXyAod2hpY2gsIHVubGlrZSB0aGUgb3RoZXIKK0BAIC0zMzcsNiArMzQ1LDcgQEAgdHlwZWRlZiBfX1dDSEFSX1RZUEVfXyB3Y2hhcl90OworICNlbmRpZgorICNlbmRpZiAvKiBfX1dDSEFSX1RfXyAqLworICNlbmRpZiAvKiBfX3djaGFyX3RfXyAqLworKyNlbmRpZiAvKiBfX0RFRklORURfd2NoYXJfdCBtdXNsICovCisgI3VuZGVmCV9fbmVlZF93Y2hhcl90CisgI2VuZGlmIC8qIF9TVERERUZfSCBvciBfX25lZWRfd2NoYXJfdC4gICovCisgCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM0LWZpeC1zZWdtZW50YXRpb24tZmF1bHQtaW4tcHJlY29tcGlsZWQtaGVhZGVyLWdlbmVyYXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM0LWZpeC1zZWdtZW50YXRpb24tZmF1bHQtaW4tcHJlY29tcGlsZWQtaGVhZGVyLWdlbmVyYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I3Y2NiMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzQtZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1pbi1wcmVjb21waWxlZC1oZWFkZXItZ2VuZXJhdC5wYXRjaApAQCAtMCwwICsxLDYwIEBACitGcm9tIGQyNmZhOWVkZWRjY2M3ZTFlYzQ3ZWFkN2YxOGFmYzgwOTcxNDgzYTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorRGF0ZTogTW9uLCAxOSBNYXIgMjAxOCAyMjozMToyMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDM0LzM5XSBmaXggc2VnbWVudGF0aW9uIGZhdWx0IGluIHByZWNvbXBpbGVkIGhlYWRlciBnZW5lcmF0aW9uCisKK1ByZXZlbnQgYSBzZWdtZW50YXRpb24gZmF1bHQgd2hpY2ggb2NjdXJzIHdoZW4gdXNpbmcgaW5jb3JyZWN0CitzdHJ1Y3R1cmUgdHJ5aW5nIHRvIGFjY2VzcyBuYW1lIG9mIHNvbWUgbmFtZWQgb3BlcmF0b3JzLCBzdWNoIGFzCitDUFBfTk9ULCBDUFBfQU5EIGV0Yy4gInRva2VuLT52YWwubm9kZS5zcGVsbGluZyIgY2Fubm90IGJlIHVzZWQgaW4KK3Rob3NlIGNhc2VzLCBhcyBpcyBtYXkgbm90IGJlIGluaXRpYWxpemVkIGF0IGFsbC4KKworW1lPQ1RPICMxMTczOF0KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGliY3BwL2xleC5jIHwgMjYgKysrKysrKysrKysrKysrKysrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmNwcC9sZXguYyBiL2xpYmNwcC9sZXguYworaW5kZXggZWVkZmNiYjMxNDYuLjE1MDQwYTFiMWYwIDEwMDY0NAorLS0tIGEvbGliY3BwL2xleC5jCisrKysgYi9saWJjcHAvbGV4LmMKK0BAIC0zMjgwLDExICszMjgwLDI3IEBAIGNwcF9zcGVsbF90b2tlbiAoY3BwX3JlYWRlciAqcGZpbGUsIGNvbnN0IGNwcF90b2tlbiAqdG9rZW4sCisgICAgIHNwZWxsX2lkZW50OgorICAgICBjYXNlIFNQRUxMX0lERU5UOgorICAgICAgIGlmIChmb3JzdHJpbmcpCistCXsKKy0JICBtZW1jcHkgKGJ1ZmZlciwgTk9ERV9OQU1FICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpLAorLQkJICBOT0RFX0xFTiAodG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nKSk7CistCSAgYnVmZmVyICs9IE5PREVfTEVOICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpOworLQl9CisrICAgICAgICB7CisrICAgICAgICAgIGlmICh0b2tlbi0+dHlwZSA9PSBDUFBfTkFNRSkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICBtZW1jcHkgKGJ1ZmZlciwgTk9ERV9OQU1FICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpLAorKyAgICAgICAgICAgICAgICAgICAgTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZykpOworKyAgICAgICAgICAgICAgYnVmZmVyICs9IE5PREVfTEVOICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpOworKyAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAvKiBOQU1FRF9PUCwgY2Fubm90IHVzZSBub2RlLnNwZWxsaW5nICovCisrICAgICAgICAgIGlmICh0b2tlbi0+ZmxhZ3MgJiBOQU1FRF9PUCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIgPSBjcHBfbmFtZWRfb3BlcmF0b3IybmFtZSAodG9rZW4tPnR5cGUpOworKyAgICAgICAgICAgICAgaWYgKHN0cikKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4oc3RyKTsKKysgICAgICAgICAgICAgICAgICBtZW1jcHkoYnVmZmVyLCBzdHIsIGxlbik7CisrICAgICAgICAgICAgICAgICAgYnVmZmVyICs9IGxlbjsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorICAgICAgIGVsc2UKKyAJYnVmZmVyID0gX2NwcF9zcGVsbF9pZGVudF91Y25zIChidWZmZXIsIHRva2VuLT52YWwubm9kZS5ub2RlKTsKKyAgICAgICBicmVhazsKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzUtRml4LWZvci10ZXN0c3VpdGUtZmFpbHVyZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzUtRml4LWZvci10ZXN0c3VpdGUtZmFpbHVyZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTE5OWZiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzNS1GaXgtZm9yLXRlc3RzdWl0ZS1mYWlsdXJlLnBhdGNoCkBAIC0wLDAgKzEsMjU4IEBACitGcm9tIGZiNWJkZjhmODUyNzIyOGQ1ODdlOGFmOWZjNzAwZTUxNjRiM2MxOGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSQUdIVU5BVEggTE9MVVIgPHJhZ2h1bmF0aC5sb2x1ckBrcGl0LmNvbT4KK0RhdGU6IFdlZCwgNiBEZWMgMjAxNyAyMjo1MjoyNiAtMDgwMAorU3ViamVjdDogW1BBVENIIDM1LzM5XSBGaXggZm9yIHRlc3RzdWl0ZSBmYWlsdXJlCisKKzIwMTctMTEtMTYgIFJhZ2h1bmF0aCBMb2x1ciAgPHJhZ2h1bmF0aC5sb2x1ckBrcGl0LmNvbT4KKworCSogZ2NjLmRnL3ByNTYyNzUuYzogSWYgU1NFIGlzIGRpc2FibGVkLCBlbnN1cmUgdGhhdAorCSItbWZwbWF0aCIgaXMgbm90IHNldCB0byB1c2UgU1NFLiBTZXQgIi1tZnBtYXRoPTM4NyIuCisJKiBnY2MuZGcvcHI2ODMwNi5jOiBMaWtld2lzZQorCSogZ2NjLmRnL3ByNjgzMDYtMi5jOiBMaWtld2lzZQorCSogZ2NjLmRnL3ByNjgzMDYtMy5jOiBMaWtld2lzZQorCSogZ2NjLmRnL3ByNjk2MzQuYzogTGlrZXdpc2UKKwkqIGdjYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYzogTGlrZXdpc2UKKwkqIGdjYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvaXNhLTE0LmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYzogTGlrZXdpc2UKKwkqIGdjYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmM6IExpa2V3aXNlCisKK0lmIC1XYWxsLCAtV2Vycm9yIGFyZSB1c2VkIGR1cmluZyBjb21waWxhdGlvbiB2YXJpb3VzIHRlc3QgY2FzZXMgZmFpbAordG8gY29tcGlsZS4KKworSWYgU1NFIGlzIGRpc2FibGVkLCBiZSBzdXJlIHRvIC1tZnBtYXRoPTM4NyB0byByZXNvbHZlIHRoaXMuCisKK1RoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgY2hhbmdlcyB0byBDaGFuZ2Vsb2cgZnJvbSB0aGUgb3JpZ2luYWwgcGF0Y2guCitUaGlzIHdpbGwgaGVscCB1cyBhdm9pZCBjb25mbGljdHMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CistLS0KKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0yLmMgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMy5jICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LmMgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0xLmMgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmMgICAgICAgICAgfCAxICsKKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmMgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaXNhLTE0LmMgICAgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYyAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYyAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYyAgICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMgICAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jICAgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jICAgICAgfCAyICstCisgMTcgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMKK2luZGV4IGI5MDFiYjJiMTk5Li5hNGY2Yzk1ZTFhMSAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTYyNzUuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1NjI3NS5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworIC8qIHsgZGctb3B0aW9ucyAiLU8yIiB9ICovCistLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIiB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gKi8KKysvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gKi8KKyAKKyB0eXBlZGVmIGxvbmcgbG9uZyB2MnR3IF9fYXR0cmlidXRlX18gKCh2ZWN0b3Jfc2l6ZSAoMiAqIHNpemVvZiAobG9uZyBsb25nKSkpKTsKKyAKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMi5jCitpbmRleCA0NjcyZWJlNzk4Ny4uMmEzNjhjNDg0YjYgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTIuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0yLmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCisgLyogeyBkZy1vcHRpb25zICItTzMiIH0gKi8KKy0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXgiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCisrLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKyAKKyBzdHJ1Y3QgeworICAgICBpbnQgdHpfbWludXRlc3dlc3Q7CitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTMuYworaW5kZXggZjVhOGMxMDJjZjguLmRmMzM5MGM2NGMyIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0zLmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMy5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworIC8qIHsgZGctb3B0aW9ucyAiLU8zIiB9ICovCistLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLworKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbW5vLW1teCAtbWZwbWF0aD0zODciIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCisgLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tYWx0aXZlYyAtbW5vLXZzeCIgeyB0YXJnZXQgcG93ZXJwYyotKi0qIH0gfSAqLworIAorIGV4dGVybiB2b2lkIGZuMigpOworZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYuYworaW5kZXggNTRlNWI0MGYyMjEuLjA4MTMzODllMmMxIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCisgLyogeyBkZy1vcHRpb25zICItTzMiIH0gKi8KKy0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXgiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCisrLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKyAKKyBlbnVtIHBvd2VycGNfcG1jX3R5cGUgeyBQUENfUE1DX0lCTSB9OworIHN0cnVjdCB7CitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jCitpbmRleCA2MGE1NjE0OTQ2My4uYmNjMjNmOWNjZDYgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY5NjM0LmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjk2MzQuYworQEAgLTEsNiArMSw2IEBACisgLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKyAvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLWRjZSAtZnNjaGVkdWxlLWluc25zIC1mbm8tdHJlZS12cnAgLWZjb21wYXJlLWRlYnVnIC1Xbm8tcHNhYmkiIH0gKi8KKy0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCisrLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKyAvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBzY2hlZHVsaW5nIH0gKi8KKyAKKyB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHUxNjsKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYworaW5kZXggNjlmZGU1N2JmMDYuLjdmMWYxYzAzZWRmIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYworQEAgLTEsNSArMSw1IEBACisgLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICovCistLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSIgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCisgLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tYWJpPXN5c3YiIHsgdGFyZ2V0ICotKi1taW5ndyogfSB9ICovCisgCisgZG91YmxlIGZvbyh2b2lkKSB7IHJldHVybiAwOyB9CS8qIHsgZGctZXJyb3IgIlNTRSBkaXNhYmxlZCIgfSAqLworZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYworaW5kZXggZWE4OTZiN2ViZmQuLmJmMTU1NjliODI2IDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZnVuY3NwZWMtNi5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmMKK0BAIC0xLDYgKzEsNyBAQAorIC8qIFRlc3Qgd2hldGhlciBhbGwgb2YgdGhlIDY0LWJpdCBmdW5jdGlvbiBzcGVjaWZpYyBvcHRpb25zIGFyZSBhY2NlcHRlZAorICAgIHdpdGhvdXQgZXJyb3IuICAqLworIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLworKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbWZwbWF0aD0zODciIH0gKi8KKyAKKyAjaW5jbHVkZSAiZnVuY3NwZWMtNTYuaW5jIgorIAorZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYworaW5kZXggODU2MWEzYzI2ZDYuLjYzNzdmODE0NjQ1IDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTM4Ny1lcnItMS5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmMKK0BAIC0xLDUgKzEsNSBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCistLyogeyBkZy1vcHRpb25zICItTzIgLW1nZW5lcmFsLXJlZ3Mtb25seSAtbW5vLWNsZCAtbW5vLWlhbWN1IC1tODAzODciIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWdlbmVyYWwtcmVncy1vbmx5IC1tbm8tY2xkIC1tbm8taWFtY3UgLW04MDM4NyAtbWZwbWF0aD0zODciIH0gKi8KKyAKKyB0eXBlZGVmIHVuc2lnbmVkIGludCB1d29yZF90IF9fYXR0cmlidXRlX18gKChtb2RlIChfX3dvcmRfXykpKTsKKyAKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pc2EtMTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2lzYS0xNC5jCitpbmRleCA1ZDQ5ZTZlNzdmZS4uMWRlMmRiOTJiZGQgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pc2EtMTQuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaXNhLTE0LmMKK0BAIC0xLDUgKzEsNSBAQAorIC8qIHsgZGctZG8gcnVuIH0gKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD14ODYtNjQgLW1zc2U0YSAtbWZtYTQgLW1uby1zc2UiIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD14ODYtNjQgLW1zc2U0YSAtbWZtYTQgLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCisgCisgZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpOworIAorZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYworaW5kZXggZmExNzY5YjYyZmIuLmY3OWZiMTI3MjZmIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjQ0OTQ4LTJiLmMKK0BAIC0xLDUgKzEsNSBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCistLyogeyBkZy1vcHRpb25zICItTyAtbW5vLXNzZSAtV25vLXBzYWJpIC1tdHVuZT1nZW5lcmljIiB9ICovCisrLyogeyBkZy1vcHRpb25zICItTyAtbW5vLXNzZSAtV25vLXBzYWJpIC1tdHVuZT1nZW5lcmljIC1tZnBtYXRoPTM4NyIgfSAqLworIAorIHN0cnVjdCBBCisgeyAKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jCitpbmRleCAyZTg5ZmY3ZDgxZC4uNjMzOWJmNmI3MzYgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0xLmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIFBSIHRhcmdldC81MzQyNSAqLworIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLworLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIiB9ICovCisrLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCisgLyogeyBkZy1za2lwLWlmICJubyBTU0UgdmVjdG9yIiB7IHg4Nl82NC0qLW1pbmd3KiB9IH0gKi8KKyAKKyB0eXBlZGVmIGRvdWJsZSBfX3YyZGYgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMTYpKSk7CitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTIuYworaW5kZXggNjFmNjI4M2RiZTkuLjJjNWE1NWYwYWMzIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiBQUiB0YXJnZXQvNTM0MjUgKi8KKyAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSIgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLworIC8qIHsgZGctc2tpcC1pZiAibm8gU1NFIHZlY3RvciIgeyB4ODZfNjQtKi1taW5ndyogfSB9ICovCisgCisgdHlwZWRlZiBmbG9hdCBfX3Yyc2YgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoOCkpKTsKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmMKK2luZGV4IDIzMzY2ZDA5MDlkLi45ODEwZTNhYmI3NiAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1NTI0Ny5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KKyAvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBtYXliZV94MzIgfSAqLworLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIC1tbm8tbW14IC1teDMyIC1tYWRkcmVzcy1tb2RlPWxvbmciIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSAtbW5vLW1teCAtbXgzMiAtbWFkZHJlc3MtbW9kZT1sb25nIC1tZnBtYXRoPTM4NyIgfSAqLworIAorIHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMl90OworIHR5cGVkZWYgdWludDMyX3QgRWxmMzJfV29yZDsKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMKK2luZGV4IDk2MDA2YjNlMzM4Li40Mjg3ZTQ1MzhiZiAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTk2NDQuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1OTY0NC5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiBQUiB0YXJnZXQvNTk2NDQgKi8KKyAvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBscDY0IH0gfSAqLworLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mZnJlZXN0YW5kaW5nIC1tbm8tc3NlIC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTMgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSIgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mZnJlZXN0YW5kaW5nIC1tbm8tc3NlIC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTMgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSAtbWZwbWF0aD0zODciIH0gKi8KKyAKKyAvKiBUaGlzIHRlc3QgdXNlcyBfX2J1aWx0aW5fdHJhcCAoKSBpbnN0ZWFkIG9mIGUuZy4gYWJvcnQsCisgICAgYmVjYXVzZSBkdWUgdG8gLW1wcmVmZXJyZWQtc3RhY2stYm91bmRhcnk9MyBpdCBzaG91bGQgbm90IGNhbGwKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmMKK2luZGV4IGJmYjhjNDcwM2ViLi5lZDA0Y2YxODFmMyAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNjIxMjAuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jCitAQCAtMSw1ICsxLDUgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLS8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UiIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLworIAorIHZvaWQgZm9vICgpCisgeworZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3MDQ2Ny0xLmMKK2luZGV4IDRlMTEyYzg4ZDA3Li5iY2ZiMzk2YTY4ZCAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjcwNDY3LTEuYworQEAgLTEsNiArMSw2IEBACisgLyogUFIgcnRsLW9wdGltaXphdGlvbi83MDQ2NyAqLworIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCistLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UiIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSAtbWZwbWF0aD0zODciIH0gKi8KKyAKKyB2b2lkIGZvbyAodW5zaWduZWQgbG9uZyBsb25nICopOworIAorZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jCitpbmRleCA2Y2RhMTUzNDMxMS4uMjZlMzdmNWI4YmEgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jCitAQCAtMSw1ICsxLDUgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gICovCistLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSAtV3ZlY3Rvci1vcGVyYXRpb24tcGVyZm9ybWFuY2UiIH0gICovCisrLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSAtV3ZlY3Rvci1vcGVyYXRpb24tcGVyZm9ybWFuY2UgLW1mcG1hdGg9Mzg3IiB9ICAqLworICNkZWZpbmUgdmVjdG9yKGVsY291bnQsIHR5cGUpICBcCisgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoKGVsY291bnQpKnNpemVvZih0eXBlKSkpKSB0eXBlCisgCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM2LVJlLWludHJvZHVjZS1zcGUtY29tbWFuZGxpbmUtb3B0aW9ucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzYtUmUtaW50cm9kdWNlLXNwZS1jb21tYW5kbGluZS1vcHRpb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNWUwNzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM2LVJlLWludHJvZHVjZS1zcGUtY29tbWFuZGxpbmUtb3B0aW9ucy5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIGRjMjNjYWJhYzZhN2IyY2E4NWIwMmQyYTU4YTg5MTZjOThmMzgyZTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCA2IEp1biAyMDE4IDEyOjEwOjIyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMzYvMzldIFJlLWludHJvZHVjZSBzcGUgY29tbWFuZGxpbmUgb3B0aW9ucworCitUaGlzIHNob3VsZCBlbnN1cmUgdGhhdCB3ZSBrZWVwIGFjY2VwdGluZworc3BlIG9wdGlvbnMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtTUEUgcG9ydCBpcyByZW1vdmVkIGZyb20gcnM2MDAgcG9ydF0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQgfCAxMiArKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdCBiL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQKK2luZGV4IGY0YjVjOTFlMTFmLi42OTg2OTM1MGZjZSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQKKysrKyBiL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQKK0BAIC0zNDUsNiArMzQ1LDE4IEBAIG1kZWJ1Zz0KKyBUYXJnZXQgUmVqZWN0TmVnYXRpdmUgSm9pbmVkCisgLW1kZWJ1Zz0JRW5hYmxlIGRlYnVnIG91dHB1dC4KKyAKKyttc3BlCisrVGFyZ2V0IFZhcihyczYwMDBfc3BlKSBTYXZlCisrR2VuZXJhdGUgU1BFIFNJTUQgaW5zdHJ1Y3Rpb25zIG9uIEU1MDAuCisrCisrbWFiaT1zcGUKKytUYXJnZXQgUmVqZWN0TmVnYXRpdmUgVmFyKHJzNjAwMF9zcGVfYWJpKSBTYXZlCisrVXNlIHRoZSBTUEUgQUJJIGV4dGVuc2lvbnMuCisrCisrbWFiaT1uby1zcGUKKytUYXJnZXQgUmVqZWN0TmVnYXRpdmUgVmFyKHJzNjAwMF9zcGVfYWJpLCAwKQorK0RvIG5vdCB1c2UgdGhlIFNQRSBBQkkgZXh0ZW5zaW9ucy4KKysKKyBtYWJpPWFsdGl2ZWMKKyBUYXJnZXQgUmVqZWN0TmVnYXRpdmUgVmFyKHJzNjAwMF9hbHRpdmVjX2FiaSkgU2F2ZQorIFVzZSB0aGUgQWx0aVZlYyBBQkkgZXh0ZW5zaW9ucy4KKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzctQ1ZFLTIwMTktMTQyNTAtQ2hlY2stemVyby12YWx1ZS1pbi1zaW1wbGVfb2JqZWN0X2VsZi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzctQ1ZFLTIwMTktMTQyNTAtQ2hlY2stemVyby12YWx1ZS1pbi1zaW1wbGVfb2JqZWN0X2VsZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjY4YTRlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzNy1DVkUtMjAxOS0xNDI1MC1DaGVjay16ZXJvLXZhbHVlLWluLXNpbXBsZV9vYmplY3RfZWxmLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gYWM0YWY1ODNiZDU5ZjY2MzE2NzFhZDRhYmY5ODU3OTljZTRhNTNkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IHJndWVudGggPHJndWVudGhAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgorRGF0ZTogVGh1LCAyNSBKdWwgMjAxOSAxMDo0Njo1NCArMDAwMAorU3ViamVjdDogW1BBVENIIDM3LzM5XSBDVkUtMjAxOS0xNDI1MDogQ2hlY2sgemVybyB2YWx1ZSBpbgorIHNpbXBsZV9vYmplY3RfZWxmX21hdGNoCisKKzIwMTktMDctMjUgUmljaGFyZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPgorCisJUFIgbHRvLzkwOTI0CisJQmFja3BvcnQgZnJvbSBtYWlubGluZQorCTIwMTktMDctMTIgIFJlbiBLaW11cmEgIDxya3gxMjA5ZGV2QGdtYWlsLmNvbT4KKworCSogc2ltcGxlLW9iamVjdC1lbGYuYyAoc2ltcGxlX29iamVjdF9lbGZfbWF0Y2gpOiBDaGVjayB6ZXJvIHZhbHVlCisJc2hzdHJuZHguCisKK2dpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL2JyYW5jaGVzL2djYy05LWJyYW5jaEAyNzM3OTMgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK0FmZmVjdGVzOiA8ICA5LjIKK0NWRTogQ1ZFLTIwMTktMTQyNTAKK0Ryb3BwZWQgY2hhbmdlbG9nCitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPEFrdXN0cmVAbXZpc3RhLmNvbT4KKy0tLQorIGxpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jIHwgOCArKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jIGIvbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMKK2luZGV4IDNkNDlmMzM5NjMxLi5jMDBjZWJkYjZjNyAxMDA2NDQKKy0tLSBhL2xpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jCisrKysgYi9saWJpYmVydHkvc2ltcGxlLW9iamVjdC1lbGYuYworQEAgLTU1Nyw2ICs1NTcsMTQgQEAgc2ltcGxlX29iamVjdF9lbGZfbWF0Y2ggKHVuc2lnbmVkIGNoYXIgaGVhZGVyW1NJTVBMRV9PQkpFQ1RfTUFUQ0hfSEVBREVSX0xFTl0sCisgICAgICAgcmV0dXJuIE5VTEw7CisgICAgIH0KKyAKKysgIGlmIChlb3ItPnNoc3RybmR4ID09IDApCisrICAgIHsKKysgICAgICAqZXJybXNnID0gImludmFsaWQgRUxGIHNoc3RybmR4ID09IDAiOworKyAgICAgICplcnIgPSAwOworKyAgICAgIFhERUxFVEUgKGVvcik7CisrICAgICAgcmV0dXJuIE5VTEw7CisrICAgIH0KKysKKyAgIHJldHVybiAodm9pZCAqKSBlb3I7CisgfQorIAorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzOC1nZW50eXBlcy1nZW5tb2Rlcy1Eby1ub3QtdXNlLV9fTElORV9fLWZvci1tYWludGFpbmluLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzOC1nZW50eXBlcy1nZW5tb2Rlcy1Eby1ub3QtdXNlLV9fTElORV9fLWZvci1tYWludGFpbmluLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3OWZjMDMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM4LWdlbnR5cGVzLWdlbm1vZGVzLURvLW5vdC11c2UtX19MSU5FX18tZm9yLW1haW50YWluaW4ucGF0Y2gKQEAgLTAsMCArMSwxODUgQEAKK0Zyb20gMDc1ZTA5MjllMDQ5MTM1MzgzOTEwNTJjMzIxNzhiNmExNGVmMGFlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDEyIE1hciAyMDIwIDE0OjQxOjQwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMzgvMzldIGdlbnR5cGVzL2dlbm1vZGVzOiBEbyBub3QgdXNlIF9fTElORV9fIGZvciBtYWludGFpbmluZworIHJlcHJvZHVjaWJpbGl0eQorCitJbnNlcnRpbmcgbGluZSBudW1iZXJzIGludG8gZ2VuZXJhdGVkIGNvZGUgbWVhbnMgaXRzIG5vdCBhbHdheXMgcmVwcm9kdWNpYmxlIHd0aAorZGlmZmVyaW5nIHZlcnNpb25zIG9mIGhvc3QgZ2NjLiBWb2lkIHRoZSBpc3N1ZSBieSBub3QgYWRkaW5nIHRoZXNlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIFJlcHJvZHVjaWJpbGl0eSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2NjL2dlbmd0eXBlLmMgfCAgNiArKystLS0KKyBnY2MvZ2VubW9kZXMuYyB8IDMyICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9nZW5ndHlwZS5jIGIvZ2NjL2dlbmd0eXBlLmMKK2luZGV4IDUzMzE3MzM3Y2Y4Li5iYmIyNjE1MTY3MSAxMDA2NDQKKy0tLSBhL2djYy9nZW5ndHlwZS5jCisrKysgYi9nY2MvZ2VuZ3R5cGUuYworQEAgLTk5MSw3ICs5OTEsNyBAQCBjcmVhdGVfZmllbGRfYXQgKHBhaXJfcCBuZXh0LCB0eXBlX3AgdHlwZSwgY29uc3QgY2hhciAqbmFtZSwgb3B0aW9uc19wIG9wdCwKKyAvKiBDcmVhdGUgYSBmYWtlIGZpZWxkIHdpdGggdGhlIGdpdmVuIHR5cGUgYW5kIG5hbWUuICBORVhUIGlzIHRoZSBuZXh0CisgICAgZmllbGQgaW4gdGhlIGNoYWluLiAgKi8KKyAjZGVmaW5lIGNyZWF0ZV9maWVsZChuZXh0LHR5cGUsbmFtZSkgXAorLSAgICBjcmVhdGVfZmllbGRfYWxsIChuZXh0LHR5cGUsbmFtZSwgMCwgdGhpc19maWxlLCBfX0xJTkVfXykKKysgICAgY3JlYXRlX2ZpZWxkX2FsbCAobmV4dCx0eXBlLG5hbWUsIDAsIHRoaXNfZmlsZSwgMCkKKyAKKyAvKiBMaWtlIGNyZWF0ZV9maWVsZCwgYnV0IHRoZSBmaWVsZCBpcyBvbmx5IHZhbGlkIHdoZW4gY29uZGl0aW9uIENPTkQKKyAgICBpcyB0cnVlLiAgKi8KK0BAIC0xMDI0LDcgKzEwMjQsNyBAQCBjcmVhdGVfb3B0aW9uYWxfZmllbGRfIChwYWlyX3AgbmV4dCwgdHlwZV9wIHR5cGUsIGNvbnN0IGNoYXIgKm5hbWUsCisgfQorIAorICNkZWZpbmUgY3JlYXRlX29wdGlvbmFsX2ZpZWxkKG5leHQsdHlwZSxuYW1lLGNvbmQpCVwKKy0gICAgICAgY3JlYXRlX29wdGlvbmFsX2ZpZWxkXyhuZXh0LHR5cGUsbmFtZSxjb25kLF9fTElORV9fKQorKyAgICAgICBjcmVhdGVfb3B0aW9uYWxfZmllbGRfKG5leHQsdHlwZSxuYW1lLGNvbmQsMCkKKyAKKyAvKiBSZXZlcnNlIGEgbGlua2VkIGxpc3Qgb2YgJ3N0cnVjdCBwYWlyJ3MgaW4gcGxhY2UuICAqLworIHBhaXJfcAorQEAgLTUxODYsNyArNTE4Niw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAvKiBUaGVzZSB0eXBlcyBhcmUgc2V0IHVwIHdpdGggI2RlZmluZSBvciBlbHNlIG91dHNpZGUgb2Ygd2hlcmUKKyAgICAgICAgICB3ZSBjYW4gc2VlIHRoZW0uICBXZSBzaG91bGQgaW5pdGlhbGl6ZSB0aGVtIGJlZm9yZSBjYWxsaW5nCisgICAgICAgICAgcmVhZF9pbnB1dF9saXN0LiAgKi8KKy0jZGVmaW5lIFBPU19IRVJFKENhbGwpIGRvIHsgcG9zLmZpbGUgPSB0aGlzX2ZpbGU7IHBvcy5saW5lID0gX19MSU5FX187IFwKKysjZGVmaW5lIFBPU19IRVJFKENhbGwpIGRvIHsgcG9zLmZpbGUgPSB0aGlzX2ZpbGU7IHBvcy5saW5lID0gMDsgXAorIAlDYWxsO30gd2hpbGUgKDApCisgICAgICAgUE9TX0hFUkUgKGRvX3NjYWxhcl90eXBlZGVmICgiQ1VNVUxBVElWRV9BUkdTIiwgJnBvcykpOworICAgICAgIFBPU19IRVJFIChkb19zY2FsYXJfdHlwZWRlZiAoIlJFQUxfVkFMVUVfVFlQRSIsICZwb3MpKTsKK2RpZmYgLS1naXQgYS9nY2MvZ2VubW9kZXMuYyBiL2djYy9nZW5tb2Rlcy5jCitpbmRleCBmMzNlZWZhMjQ5NC4uMDdiZWY5ZWViZTIgMTAwNjQ0CistLS0gYS9nY2MvZ2VubW9kZXMuYworKysrIGIvZ2NjL2dlbm1vZGVzLmMKK0BAIC00MjksNyArNDI5LDcgQEAgY29tcGxldGVfYWxsX21vZGVzICh2b2lkKQorIH0KKyAKKyAvKiBGb3IgZWFjaCBtb2RlIGluIGNsYXNzIENMQVNTLCBjb25zdHJ1Y3QgYSBjb3JyZXNwb25kaW5nIGNvbXBsZXggbW9kZS4gICovCistI2RlZmluZSBDT01QTEVYX01PREVTKEMpIG1ha2VfY29tcGxleF9tb2RlcyAoTU9ERV8jI0MsIF9fRklMRV9fLCBfX0xJTkVfXykKKysjZGVmaW5lIENPTVBMRVhfTU9ERVMoQykgbWFrZV9jb21wbGV4X21vZGVzIChNT0RFXyMjQywgX19GSUxFX18sIDApCisgc3RhdGljIHZvaWQKKyBtYWtlX2NvbXBsZXhfbW9kZXMgKGVudW0gbW9kZV9jbGFzcyBjbCwKKyAJCSAgICBjb25zdCBjaGFyICpmaWxlLCB1bnNpZ25lZCBpbnQgbGluZSkKK0BAIC00ODcsNyArNDg3LDcgQEAgbWFrZV9jb21wbGV4X21vZGVzIChlbnVtIG1vZGVfY2xhc3MgY2wsCisgLyogRm9yIGFsbCBtb2RlcyBpbiBjbGFzcyBDTCwgY29uc3RydWN0IHZlY3RvciBtb2RlcyBvZiB3aWR0aAorICAgIFdJRFRILCBoYXZpbmcgYXMgbWFueSBjb21wb25lbnRzIGFzIG5lY2Vzc2FyeS4gICovCisgI2RlZmluZSBWRUNUT1JfTU9ERVNfV0lUSF9QUkVGSVgoUFJFRklYLCBDLCBXKSBcCistICBtYWtlX3ZlY3Rvcl9tb2RlcyAoTU9ERV8jI0MsICNQUkVGSVgsIFcsIF9fRklMRV9fLCBfX0xJTkVfXykKKysgIG1ha2VfdmVjdG9yX21vZGVzIChNT0RFXyMjQywgI1BSRUZJWCwgVywgX19GSUxFX18sIDApCisgI2RlZmluZSBWRUNUT1JfTU9ERVMoQywgVykgVkVDVE9SX01PREVTX1dJVEhfUFJFRklYIChWLCBDLCBXKQorIHN0YXRpYyB2b2lkIEFUVFJJQlVURV9VTlVTRUQKKyBtYWtlX3ZlY3Rvcl9tb2RlcyAoZW51bSBtb2RlX2NsYXNzIGNsLCBjb25zdCBjaGFyICpwcmVmaXgsIHVuc2lnbmVkIGludCB3aWR0aCwKK0BAIC01MzgsNyArNTM4LDcgQEAgbWFrZV92ZWN0b3JfbW9kZXMgKGVudW0gbW9kZV9jbGFzcyBjbCwgY29uc3QgY2hhciAqcHJlZml4LCB1bnNpZ25lZCBpbnQgd2lkdGgsCisgLyogQ3JlYXRlIGEgdmVjdG9yIG9mIGJvb2xlYW5zIGNhbGxlZCBOQU1FIHdpdGggQ09VTlQgZWxlbWVudHMgYW5kCisgICAgQllURVNJWkUgYnl0ZXMgaW4gdG90YWwuICAqLworICNkZWZpbmUgVkVDVE9SX0JPT0xfTU9ERShOQU1FLCBDT1VOVCwgQllURVNJWkUpIFwKKy0gIG1ha2VfdmVjdG9yX2Jvb2xfbW9kZSAoI05BTUUsIENPVU5ULCBCWVRFU0laRSwgX19GSUxFX18sIF9fTElORV9fKQorKyAgbWFrZV92ZWN0b3JfYm9vbF9tb2RlICgjTkFNRSwgQ09VTlQsIEJZVEVTSVpFLCBfX0ZJTEVfXywgMCkKKyBzdGF0aWMgdm9pZCBBVFRSSUJVVEVfVU5VU0VECisgbWFrZV92ZWN0b3JfYm9vbF9tb2RlIChjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBpbnQgY291bnQsCisgCQkgICAgICAgdW5zaWduZWQgaW50IGJ5dGVzaXplLCBjb25zdCBjaGFyICpmaWxlLAorQEAgLTU2MCw3ICs1NjAsNyBAQCBtYWtlX3ZlY3Rvcl9ib29sX21vZGUgKGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGludCBjb3VudCwKKyAvKiBJbnB1dC4gICovCisgCisgI2RlZmluZSBfU1BFQ0lBTF9NT0RFKEMsIE4pIFwKKy0gIG1ha2Vfc3BlY2lhbF9tb2RlIChNT0RFXyMjQywgI04sIF9fRklMRV9fLCBfX0xJTkVfXykKKysgIG1ha2Vfc3BlY2lhbF9tb2RlIChNT0RFXyMjQywgI04sIF9fRklMRV9fLCAwKQorICNkZWZpbmUgUkFORE9NX01PREUoTikgX1NQRUNJQUxfTU9ERSAoUkFORE9NLCBOKQorICNkZWZpbmUgQ0NfTU9ERShOKSBfU1BFQ0lBTF9NT0RFIChDQywgTikKKyAKK0BAIC01NzMsNyArNTczLDcgQEAgbWFrZV9zcGVjaWFsX21vZGUgKGVudW0gbW9kZV9jbGFzcyBjbCwgY29uc3QgY2hhciAqbmFtZSwKKyAKKyAjZGVmaW5lIElOVF9NT0RFKE4sIFkpIEZSQUNUSU9OQUxfSU5UX01PREUgKE4sIC0xVSwgWSkKKyAjZGVmaW5lIEZSQUNUSU9OQUxfSU5UX01PREUoTiwgQiwgWSkgXAorLSAgbWFrZV9pbnRfbW9kZSAoI04sIEIsIFksIF9fRklMRV9fLCBfX0xJTkVfXykKKysgIG1ha2VfaW50X21vZGUgKCNOLCBCLCBZLCBfX0ZJTEVfXywgMCkKKyAKKyBzdGF0aWMgdm9pZAorIG1ha2VfaW50X21vZGUgKGNvbnN0IGNoYXIgKm5hbWUsCitAQCAtNTg2LDE2ICs1ODYsMTYgQEAgbWFrZV9pbnRfbW9kZSAoY29uc3QgY2hhciAqbmFtZSwKKyB9CisgCisgI2RlZmluZSBGUkFDVF9NT0RFKE4sIFksIEYpIFwKKy0JbWFrZV9maXhlZF9wb2ludF9tb2RlIChNT0RFX0ZSQUNULCAjTiwgWSwgMCwgRiwgX19GSUxFX18sIF9fTElORV9fKQorKwltYWtlX2ZpeGVkX3BvaW50X21vZGUgKE1PREVfRlJBQ1QsICNOLCBZLCAwLCBGLCBfX0ZJTEVfXywgMCkKKyAKKyAjZGVmaW5lIFVGUkFDVF9NT0RFKE4sIFksIEYpIFwKKy0JbWFrZV9maXhlZF9wb2ludF9tb2RlIChNT0RFX1VGUkFDVCwgI04sIFksIDAsIEYsIF9fRklMRV9fLCBfX0xJTkVfXykKKysJbWFrZV9maXhlZF9wb2ludF9tb2RlIChNT0RFX1VGUkFDVCwgI04sIFksIDAsIEYsIF9fRklMRV9fLCAwKQorIAorICNkZWZpbmUgQUNDVU1fTU9ERShOLCBZLCBJLCBGKSBcCistCW1ha2VfZml4ZWRfcG9pbnRfbW9kZSAoTU9ERV9BQ0NVTSwgI04sIFksIEksIEYsIF9fRklMRV9fLCBfX0xJTkVfXykKKysJbWFrZV9maXhlZF9wb2ludF9tb2RlIChNT0RFX0FDQ1VNLCAjTiwgWSwgSSwgRiwgX19GSUxFX18sIDApCisgCisgI2RlZmluZSBVQUNDVU1fTU9ERShOLCBZLCBJLCBGKSBcCistCW1ha2VfZml4ZWRfcG9pbnRfbW9kZSAoTU9ERV9VQUNDVU0sICNOLCBZLCBJLCBGLCBfX0ZJTEVfXywgX19MSU5FX18pCisrCW1ha2VfZml4ZWRfcG9pbnRfbW9kZSAoTU9ERV9VQUNDVU0sICNOLCBZLCBJLCBGLCBfX0ZJTEVfXywgMCkKKyAKKyAvKiBDcmVhdGUgYSBmaXhlZC1wb2ludCBtb2RlIGJ5IHNldHRpbmcgQ0wsIE5BTUUsIEJZVEVTSVpFLCBJQklULCBGQklULAorICAgIEZJTEUsIGFuZCBMSU5FLiAgKi8KK0BAIC02MTYsNyArNjE2LDcgQEAgbWFrZV9maXhlZF9wb2ludF9tb2RlIChlbnVtIG1vZGVfY2xhc3MgY2wsCisgCisgI2RlZmluZSBGTE9BVF9NT0RFKE4sIFksIEYpICAgICAgICAgICAgIEZSQUNUSU9OQUxfRkxPQVRfTU9ERSAoTiwgLTFVLCBZLCBGKQorICNkZWZpbmUgRlJBQ1RJT05BTF9GTE9BVF9NT0RFKE4sIEIsIFksIEYpIFwKKy0gIG1ha2VfZmxvYXRfbW9kZSAoI04sIEIsIFksICNGLCBfX0ZJTEVfXywgX19MSU5FX18pCisrICBtYWtlX2Zsb2F0X21vZGUgKCNOLCBCLCBZLCAjRiwgX19GSUxFX18sIDApCisgCisgc3RhdGljIHZvaWQKKyBtYWtlX2Zsb2F0X21vZGUgKGNvbnN0IGNoYXIgKm5hbWUsCitAQCAtNjMzLDcgKzYzMyw3IEBAIG1ha2VfZmxvYXRfbW9kZSAoY29uc3QgY2hhciAqbmFtZSwKKyAjZGVmaW5lIERFQ0lNQUxfRkxPQVRfTU9ERShOLCBZLCBGKQlcCisgCUZSQUNUSU9OQUxfREVDSU1BTF9GTE9BVF9NT0RFIChOLCAtMVUsIFksIEYpCisgI2RlZmluZSBGUkFDVElPTkFMX0RFQ0lNQUxfRkxPQVRfTU9ERShOLCBCLCBZLCBGKQlcCistICBtYWtlX2RlY2ltYWxfZmxvYXRfbW9kZSAoI04sIEIsIFksICNGLCBfX0ZJTEVfXywgX19MSU5FX18pCisrICBtYWtlX2RlY2ltYWxfZmxvYXRfbW9kZSAoI04sIEIsIFksICNGLCBfX0ZJTEVfXywgMCkKKyAKKyBzdGF0aWMgdm9pZAorIG1ha2VfZGVjaW1hbF9mbG9hdF9tb2RlIChjb25zdCBjaGFyICpuYW1lLAorQEAgLTY0OCw3ICs2NDgsNyBAQCBtYWtlX2RlY2ltYWxfZmxvYXRfbW9kZSAoY29uc3QgY2hhciAqbmFtZSwKKyB9CisgCisgI2RlZmluZSBSRVNFVF9GTE9BVF9GT1JNQVQoTiwgRikgXAorLSAgcmVzZXRfZmxvYXRfZm9ybWF0ICgjTiwgI0YsIF9fRklMRV9fLCBfX0xJTkVfXykKKysgIHJlc2V0X2Zsb2F0X2Zvcm1hdCAoI04sICNGLCBfX0ZJTEVfXywgMCkKKyBzdGF0aWMgdm9pZCBBVFRSSUJVVEVfVU5VU0VECisgcmVzZXRfZmxvYXRfZm9ybWF0IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmb3JtYXQsCisgCQkgICAgY29uc3QgY2hhciAqZmlsZSwgdW5zaWduZWQgaW50IGxpbmUpCitAQCAtNjY5LDcgKzY2OSw3IEBAIHJlc2V0X2Zsb2F0X2Zvcm1hdCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZm9ybWF0LAorIAorIC8qIF9faW50TiBzdXBwb3J0LiAgKi8KKyAjZGVmaW5lIElOVF9OKE0sUFJFQykJCQkJXAorLSAgbWFrZV9pbnRfbiAoI00sIFBSRUMsIF9fRklMRV9fLCBfX0xJTkVfXykKKysgIG1ha2VfaW50X24gKCNNLCBQUkVDLCBfX0ZJTEVfXywgMCkKKyBzdGF0aWMgdm9pZCBBVFRSSUJVVEVfVU5VU0VECisgbWFrZV9pbnRfbiAoY29uc3QgY2hhciAqbSwgaW50IGJpdHNpemUsCisgICAgICAgICAgICAgY29uc3QgY2hhciAqZmlsZSwgdW5zaWduZWQgaW50IGxpbmUpCitAQCAtNjk4LDcgKzY5OCw3IEBAIG1ha2VfaW50X24gKGNvbnN0IGNoYXIgKm0sIGludCBiaXRzaXplLAorIC8qIFBhcnRpYWwgaW50ZWdlciBtb2RlcyBhcmUgc3BlY2lmaWVkIGJ5IHJlbGF0aW9uIHRvIGEgZnVsbCBpbnRlZ2VyCisgICAgbW9kZS4gICovCisgI2RlZmluZSBQQVJUSUFMX0lOVF9NT0RFKE0sUFJFQyxOQU1FKQkJCQlcCistICBtYWtlX3BhcnRpYWxfaW50ZWdlcl9tb2RlICgjTSwgI05BTUUsIFBSRUMsIF9fRklMRV9fLCBfX0xJTkVfXykKKysgIG1ha2VfcGFydGlhbF9pbnRlZ2VyX21vZGUgKCNNLCAjTkFNRSwgUFJFQywgX19GSUxFX18sIDApCisgc3RhdGljIHZvaWQgQVRUUklCVVRFX1VOVVNFRAorIG1ha2VfcGFydGlhbF9pbnRlZ2VyX21vZGUgKGNvbnN0IGNoYXIgKmJhc2UsIGNvbnN0IGNoYXIgKm5hbWUsCisgCQkJICAgdW5zaWduZWQgaW50IHByZWNpc2lvbiwKK0BAIC03MjUsNyArNzI1LDcgQEAgbWFrZV9wYXJ0aWFsX2ludGVnZXJfbW9kZSAoY29uc3QgY2hhciAqYmFzZSwgY29uc3QgY2hhciAqbmFtZSwKKyAvKiBBIHNpbmdsZSB2ZWN0b3IgbW9kZSBjYW4gYmUgc3BlY2lmaWVkIGJ5IG5hbWluZyBpdHMgY29tcG9uZW50CisgICAgbW9kZSBhbmQgdGhlIG51bWJlciBvZiBjb21wb25lbnRzLiAgKi8KKyAjZGVmaW5lIFZFQ1RPUl9NT0RFKEMsIE0sIE4pIFwKKy0gIG1ha2VfdmVjdG9yX21vZGUgKE1PREVfIyNDLCAjTSwgTiwgX19GSUxFX18sIF9fTElORV9fKTsKKysgIG1ha2VfdmVjdG9yX21vZGUgKE1PREVfIyNDLCAjTSwgTiwgX19GSUxFX18sIDApOworIHN0YXRpYyB2b2lkIEFUVFJJQlVURV9VTlVTRUQKKyBtYWtlX3ZlY3Rvcl9tb2RlIChlbnVtIG1vZGVfY2xhc3MgYmNsYXNzLAorIAkJICBjb25zdCBjaGFyICpiYXNlLAorQEAgLTc2OCw3ICs3NjgsNyBAQCBtYWtlX3ZlY3Rvcl9tb2RlIChlbnVtIG1vZGVfY2xhc3MgYmNsYXNzLAorIAorIC8qIEFkanVzdGFiaWxpdHkuICAqLworICNkZWZpbmUgX0FERF9BREpVU1QoQSwgTSwgWCwgQzEsIEMyKSBcCistICBuZXdfYWRqdXN0ICgjTSwgJmFkal8jI0EsICNBLCAjWCwgTU9ERV8jI0MxLCBNT0RFXyMjQzIsIF9fRklMRV9fLCBfX0xJTkVfXykKKysgIG5ld19hZGp1c3QgKCNNLCAmYWRqXyMjQSwgI0EsICNYLCBNT0RFXyMjQzEsIE1PREVfIyNDMiwgX19GSUxFX18sIDApCisgCisgI2RlZmluZSBBREpVU1RfTlVOSVRTKE0sIFgpICAgIF9BRERfQURKVVNUIChudW5pdHMsIE0sIFgsIFJBTkRPTSwgUkFORE9NKQorICNkZWZpbmUgQURKVVNUX0JZVEVTSVpFKE0sIFgpICBfQUREX0FESlVTVCAoYnl0ZXNpemUsIE0sIFgsIFJBTkRPTSwgUkFORE9NKQorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzOS1wcm9jZXNzX2FsdF9vcGVyYW5kcy1Eb24tdC1tYXRjaC11c2VyLWRlZmluZWQtcmVncy1vLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzOS1wcm9jZXNzX2FsdF9vcGVyYW5kcy1Eb24tdC1tYXRjaC11c2VyLWRlZmluZWQtcmVncy1vLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2OTExNGQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM5LXByb2Nlc3NfYWx0X29wZXJhbmRzLURvbi10LW1hdGNoLXVzZXItZGVmaW5lZC1yZWdzLW8ucGF0Y2gKQEAgLTAsMCArMSwxMDAgQEAKK0Zyb20gZTc1YmNjMmVjNGYxZTdlMDgxY2UxODcxM2YwYTI1OTEzYmExNTM0MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFZsYWRpbWlyIE1ha2Fyb3YgPHZtYWthcm92QHJlZGhhdC5jb20+CitEYXRlOiBXZWQsIDEwIEp1bCAyMDE5IDE2OjA3OjEwICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMzkvMzldIHByb2Nlc3NfYWx0X29wZXJhbmRzOiBEb24ndCBtYXRjaCB1c2VyIGRlZmluZWQgcmVncworIG9ubHkgaWYgdGhleSBhcmUgZWFybHkgY2xvYmJlcnMKKworUFIgdGFyZ2V0LzkxMTAyIChhYXJjaDY0IElDRSBvbiBMaW51eCBrZXJuZWwgd2l0aCAtT3Mgc3RhcnRpbmcgd2l0aCByMjcwMjY2KQorCisyMDE5LTA3LTEwICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KKworCVBSIHRhcmdldC85MTEwMgorCSogbHJhLWNvbnN0cmFpbnRzLmMgKHByb2Nlc3NfYWx0X29wZXJhbmRzKTogRG9uJ3QgbWF0Y2ggdXNlcgorCWRlZmluZWQgcmVncyBvbmx5IGlmIHRoZXkgYXJlIGVhcmx5IGNsb2JiZXJzLgorCisyMDE5LTA3LTEwICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KKworCVBSIHRhcmdldC85MTEwMgorCSogZ2NjLnRhcmdldC9hYXJjaDY0L3ByOTExMDIuYzogTmV3IHRlc3QuCisKK0Zyb20tU1ZOOiByMjczMzU3CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vZ2NjLW1pcnJvci9nY2MvY29tbWl0LzYxM2NhZWQyZmViOWNmYzgxNTgzMDg2NzBiNTlkZjNkMDMxZWM2MjldCitbdGFrb25kcmE6IGRyb3BwZWQgY29uZmxpY3RpbmcgQ2hhbmdlTG9nIGNoYW5nZXNdCitTaWduZWQtb2ZmLWJ5OiBUYXJhcyBLb25kcmF0aXVrIDx0YWtvbmRyYUBjaXNjby5jb20+CistLS0KKyBnY2MvbHJhLWNvbnN0cmFpbnRzLmMgICAgICAgICAgICAgICAgICAgICAgfCAxNyArKysrKysrKysrLS0tLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByOTExMDIuYyB8IDI2ICsrKysrKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByOTExMDIuYworCitkaWZmIC0tZ2l0IGEvZ2NjL2xyYS1jb25zdHJhaW50cy5jIGIvZ2NjL2xyYS1jb25zdHJhaW50cy5jCitpbmRleCBjZjMzZGE4MDEzZS4uNjM4MmRiZjg1MmIgMTAwNjQ0CistLS0gYS9nY2MvbHJhLWNvbnN0cmFpbnRzLmMKKysrKyBiL2djYy9scmEtY29uc3RyYWludHMuYworQEAgLTIxNzIsOCArMjE3Miw5IEBAIHByb2Nlc3NfYWx0X29wZXJhbmRzIChpbnQgb25seV9hbHRlcm5hdGl2ZSkKKyAJCSAgICBlbHNlCisgCQkgICAgICB7CisgCQkJLyogT3BlcmFuZHMgZG9uJ3QgbWF0Y2guICBJZiB0aGUgb3BlcmFuZHMgYXJlCistCQkJICAgZGlmZmVyZW50IHVzZXIgZGVmaW5lZCBleHBsaWNpdCBoYXJkIHJlZ2lzdGVycywKKy0JCQkgICB0aGVuIHdlIGNhbm5vdCBtYWtlIHRoZW0gbWF0Y2guICAqLworKwkJCSAgIGRpZmZlcmVudCB1c2VyIGRlZmluZWQgZXhwbGljaXQgaGFyZAorKwkJCSAgIHJlZ2lzdGVycywgdGhlbiB3ZSBjYW5ub3QgbWFrZSB0aGVtIG1hdGNoCisrCQkJICAgd2hlbiBvbmUgaXMgZWFybHkgY2xvYmJlciBvcGVyYW5kLiAgKi8KKyAJCQlpZiAoKFJFR19QICgqY3Vycl9pZC0+b3BlcmFuZF9sb2Nbbm9wXSkKKyAJCQkgICAgIHx8IFNVQlJFR19QICgqY3Vycl9pZC0+b3BlcmFuZF9sb2Nbbm9wXSkpCisgCQkJICAgICYmIChSRUdfUCAoKmN1cnJfaWQtPm9wZXJhbmRfbG9jW21dKQorQEAgLTIxOTIsOSArMjE5MywxNyBAQCBwcm9jZXNzX2FsdF9vcGVyYW5kcyAoaW50IG9ubHlfYWx0ZXJuYXRpdmUpCisgCQkJCSYmIFJFR19QIChtX3JlZykKKyAJCQkJJiYgSEFSRF9SRUdJU1RFUl9QIChtX3JlZykKKyAJCQkJJiYgUkVHX1VTRVJWQVJfUCAobV9yZWcpKQorLQkJCSAgICAgIGJyZWFrOworKwkJCSAgICAgIHsKKysJCQkJaW50IGk7CisrCQkJCQorKwkJCQlmb3IgKGkgPSAwOyBpIDwgZWFybHlfY2xvYmJlcmVkX3JlZ3NfbnVtOyBpKyspCisrCQkJCSAgaWYgKG0gPT0gZWFybHlfY2xvYmJlcmVkX25vcHNbaV0pCisrCQkJCSAgICBicmVhazsKKysJCQkJaWYgKGkgPCBlYXJseV9jbG9iYmVyZWRfcmVnc19udW0KKysJCQkJICAgIHx8IGVhcmx5X2Nsb2JiZXJfcCkKKysJCQkJICBicmVhazsKKysJCQkgICAgICB9CisgCQkJICB9CistCisgCQkJLyogQm90aCBvcGVyYW5kcyBtdXN0IGFsbG93IGEgcmVsb2FkIHJlZ2lzdGVyLAorIAkJCSAgIG90aGVyd2lzZSB3ZSBjYW5ub3QgbWFrZSB0aGVtIG1hdGNoLiAgKi8KKyAJCQlpZiAoY3Vycl9hbHRbbV0gPT0gTk9fUkVHUykKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9wcjkxMTAyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC9wcjkxMTAyLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uNzBiOTkwNDVhNDgKKy0tLSAvZGV2L251bGwKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByOTExMDIuYworQEAgLTAsMCArMSwyNiBAQAorKy8qIFBSIHRhcmdldC85MTEwMiAqLworKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisrLyogeyBkZy1vcHRpb25zICItTzIiIH0gKi8KKysKKytpbnQKKytmb28gKGxvbmcgZCwgbG9uZyBsKQorK3sKKysgIHJlZ2lzdGVyIGxvbmcgZSBhc20gKCJ4MSIpID0gZDsKKysgIHJlZ2lzdGVyIGxvbmcgZiBhc20oIngyIikgPSBsOworKyAgYXNtICgiIiA6IDogInIiIChlKSwgInIiIChmKSk7CisrICByZXR1cm4gMzsKKyt9CisrCisrc3RydWN0IFQgeyBpbnQgaTsgaW50IGo7IH07CisrdW5pb24gUyB7IGxvbmcgaDsgc3RydWN0IFQgdDsgfTsKKysKKyt2b2lkCisrYmFyICh1bmlvbiBTIGIpCisreworKyAgd2hpbGUgKDEpCisrICAgIHsKKysgICAgICB1bmlvbiBTIGMgPSBiOworKyAgICAgIGMudC5qKys7CisrICAgICAgYi5oID0gZm9vIChiLmgsIGMuaCk7CisrICAgIH0KKyt9CistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbW1vbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbW1vbi5pbmMKaW5kZXggNDRjYmEyOC4uM2RjZmRmOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb21tb24uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29tbW9uLmluYwpAQCAtNDcsNiArNDcsNyBAQAogICAgICAgICAiaTU4NiI6ICAgICItLWVuYWJsZS10YXJnZXRzPWFsbCIsCiAgICAgICAgICJpNjg2IjogICAgIi0tZW5hYmxlLXRhcmdldHM9YWxsIiwKICAgICAgICAgInBvd2VycGMiOiAiLS1lbmFibGUtdGFyZ2V0cz1wb3dlcnBjNjQiLAorICAgICAgICAicG93ZXJwYzY0bGUiOiAiLS1lbmFibGUtdGFyZ2V0cz1wb3dlcnBjbGUiLAogICAgICAgICAibWlwcyI6ICAgICItLWVuYWJsZS10YXJnZXRzPWFsbCIsCiAgICAgICAgICJzcGFyYyI6ICAgIi0tZW5hYmxlLXRhcmdldHM9YWxsIiwKICAgICB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbmZpZ3VyZS1jb21tb24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb25maWd1cmUtY29tbW9uLmluYwppbmRleCAyNGJhOGNlLi5hNjRjNGNhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbmZpZ3VyZS1jb21tb24uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29uZmlndXJlLWNvbW1vbi5pbmMKQEAgLTE3LDYgKzE3LDggQEAKIAogR0NDUElFID8/PSAiIgogCitTWU1WRVJTX0NPTkYgPz0gIi0tZW5hYmxlLXN5bXZlcnM9Z251IgorCiBFWFRSQV9PRUNPTkYgPSAiXAogICAgICR7QFsnLS1lbmFibGUtY2xvY2FsZT1nZW5lcmljJywgJyddW2QuZ2V0VmFyKCdVU0VfTkxTJykgIT0gJ25vJ119IFwKICAgICAtLXdpdGgtZ251LWxkIFwKQEAgLTI3LDEwICsyOSwxMSBAQAogICAgICR7R0NDUElFfSBcCiAgICAgLS1lbmFibGUtYzk5IFwKICAgICAtLWVuYWJsZS1sb25nLWxvbmcgXAotICAgIC0tZW5hYmxlLXN5bXZlcnM9Z251IFwKKyAgICAke1NZTVZFUlNfQ09ORn0gXAogICAgIC0tZW5hYmxlLWxpYnN0ZGN4eC1wY2ggXAogICAgIC0tcHJvZ3JhbS1wcmVmaXg9JHtUQVJHRVRfUFJFRklYfSBcCiAgICAgLS13aXRob3V0LWxvY2FsLXByZWZpeCBcCisgICAgLS1kaXNhYmxlLWluc3RhbGwtbGliaWJlcnR5IFwKICAgICAke0VYVFJBX09FQ09ORl9CQVNFfSBcCiAgICAgJHtFWFRSQV9PRUNPTkZfR0NDX0ZMT0FUfSBcCiAgICAgJHtFWFRSQV9PRUNPTkZfUEFUSFN9IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW4uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbi5pbmMKaW5kZXggZjE0Y2JmNy4uNTUzZWY3ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbi5pbmMKQEAgLTEwOCwxMiArMTA4LDYgQEAKIAkjIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGdjYy08dmVyc2lvbj4gY29waWVzCiAJcm0gLWYgJHtEfSR7YmluZGlyfS8qZ2NjLT8uPyoKIAotCSMgV2UgdXNlIGxpYmliZXJ0eSBmcm9tIGJpbnV0aWxzCi0Jcm0gLWYgJHtEfSR7cHJlZml4fS8ke1RBUkdFVF9TWVN9L2xpYi9saWJpYmVydHkuYQotCSMgTm90IHN1cmUgd2hlcmUgdGhlIHN0cmFuZ2UgcGF0aHMgY29tZSBmcm9tCi0Jcm0gLWYgJHtEfSR7bGliZGlyfS8uLi9saWIvbGliaWJlcnR5LmEKLQlybSAtZiAke0R9JHtsaWJkaXJ9L2xpYmliZXJ0eS5hCi0KIAkjIENsZWFudXAgZW1wdHkgZGlyZWN0b3JpZXMgd2hpY2ggYXJlIG5vdCBzaGlwcGVkCiAJIyB3ZSB1c2Ugcm1kaXIgaW5zdGVhZCBvZiAncm0gLWYnIHRvIGVuc3VyZSB0aGUgbm9uIGVtcHR5IGRpcmVjdG9yaWVzIGFyZSBub3QgZGVsZXRlZAogCSMgJHtEfSR7bGliZGlyfS8uLi9saWIgb25seSBzZWVtcyB0byBhcHBlYXIgd2l0aCBTREtNQUNISU5FPWk2ODYKQEAgLTE1OCw3ICsxNTIsNyBAQAogRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIgogRVhUUkFfT0VDT05GX3JlbW92ZV9lbGYgPSAiLS13aXRoLXN5c3Jvb3Q9L25vdC9leGlzdCIKIEVYVFJBX09FQ09ORl9yZW1vdmVfZWFiaSA9ICItLXdpdGgtc3lzcm9vdD0vbm90L2V4aXN0IgotRVhUUkFfT0VDT05GX2FwcGVuZF9lbGYgPSAiLS13aXRob3V0LWhlYWRlcnMgLS13aXRoLW5ld2xpYiIKLUVYVFJBX09FQ09ORl9hcHBlbmRfZWFiaSA9ICItLXdpdGhvdXQtaGVhZGVycyAtLXdpdGgtbmV3bGliIgorRVhUUkFfT0VDT05GX2FwcGVuZF9lbGYgPSAiIC0td2l0aG91dC1oZWFkZXJzIC0td2l0aC1uZXdsaWIiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2VhYmkgPSAiIC0td2l0aG91dC1oZWFkZXJzIC0td2l0aC1uZXdsaWIiCiAjIGdjYyA0LjcgbmVlZHMgLWlzeXN0ZW0KIGV4cG9ydCBBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQgPSAiLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSAtaXN5c3RlbT0ke3RhcmdldF9pbmNsdWRlZGlyfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fOS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbl85LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fOS4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuXzkuMy5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLmluYwppbmRleCA4ODU1YmIxLi42ZmE4YzI3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLmluYwpAQCAtNjEsOTggKzYxLDIyIEBACiAJZXhwb3J0IENYWEZMQUdTX0ZPUl9UQVJHRVQ9IiR7VEFSR0VUX0NYWEZMQUdTfSIKIAlleHBvcnQgTERGTEFHU19GT1JfVEFSR0VUPSIke1RBUkdFVF9MREZMQUdTfSIKIAorCSMgUHJldmVudCBuYXRpdmUvaG9zdCBzeXNyb290IHBhdGggZnJvbSBiZWluZyB1c2VkIGluIGNvbmZpZ2FyZ3MuaCBoZWFkZXIsCisJIyBhcyBpdCB3aWxsIGJlIHJld3JpdHRlbiB3aGVuIHVzZWQgYnkgb3RoZXIgc3lzcm9vdHMgcHJldmVudGluZyBzdXBwb3J0CisJIyBmb3IgZ2NjIHBsdWdpbnMKKwlvZV9ydW5tYWtlIGNvbmZpZ3VyZS1nY2MKKwlzZWQgLWkgJ3NAJHtTVEFHSU5HX0RJUl9UQVJHRVR9QC9ob3N0QGcnICR7Qn0vZ2NjL2NvbmZpZ2FyZ3MuaAorCXNlZCAtaSAnc0Ake1NUQUdJTkdfRElSX0hPU1R9QC9ob3N0QGcnICR7Qn0vZ2NjL2NvbmZpZ2FyZ3MuaAorCisJIyBQcmV2ZW50IHN5c3Jvb3Qvd29ya2RpciBwYXRocyBmcm9tIGJlaW5nIHVzZWQgaW4gY2hlY2tzdW0tb3B0aW9ucy4KKwkjIGNoZWNrc3VtLW9wdGlvbnMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIGNoZWNrc3VtIHdoaWNoIGlzIGVtYmVkZGVkIGludG8KKwkjIHRoZSBvdXRwdXQgYmluYXJ5LgorCW9lX3J1bm1ha2UgVEFSR0VULWdjYz1jaGVja3N1bS1vcHRpb25zIGFsbC1nY2MKKwlzZWQgLWkgJ3NAJHtERUJVR19QUkVGSVhfTUFQfUBAZycgJHtCfS9nY2MvY2hlY2tzdW0tb3B0aW9ucworCXNlZCAtaSAnc0Ake1NUQUdJTkdfRElSX0hPU1R9QC9ob3N0QGcnICR7Qn0vZ2NjL2NoZWNrc3VtLW9wdGlvbnMKKwogCW9lX3J1bm1ha2UgYWxsLWhvc3QgY29uZmlndXJlLXRhcmdldC1saWJnY2MKIAkoY2QgJHtCfS8ke1RBUkdFVF9TWVN9L2xpYmdjYzsgb2VfcnVubWFrZSBlbmFibGUtZXhlY3V0ZS1zdGFjay5jIHVud2luZC5oIG1kLXVud2luZC1zdXBwb3J0Lmggc2ZwLW1hY2hpbmUuaCBndGhyLWRlZmF1bHQuaCkKLQkjIG5vdyBnZW5lcmF0ZSBzY3JpcHQgdG8gZHJpdmUgdGVzdGluZwotCWVjaG8gIiMhL3Vzci9iaW4vZW52IHNoIiA+JHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNldCA+PiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0JIyBwcnVuZSBvdXQgdGhlIHVubmVlZGVkIHZhcnMKLQlzZWQgLWkgLWUgIi9eQkFTSC9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXlVTRVIvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15PUFQvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15ESVJTVEFDSy9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXkVVSUQvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15GVU5DTkFNRS9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXkdST1VQUy9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXkhPU1QvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15IT01FL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eSUZTL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eTENfQUxML2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eTE9HTkFNRS9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXk1BQ0hUWVBFL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eT1NUWVBFL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eUElQRS9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXlNIRUxML2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eJy9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXlVJRC9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXlRFUk0vZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15QS0dfL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eUE9TSVhMWV8vZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15QUElEL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eUFM0L2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eUS9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXlNITFZML2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eU1RBR0lORy9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXkxEX0xJQlJBUllfUEFUSC9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXlBTRVVETy9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0KLQkjIGFwcGVuZCBleGVjdXRpb24gcGFydCBvZiB0aGUgc2NyaXB0Ci1jYXQgPj4gJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYyA8PCBTVE9QCi10YXJnZXQ9IlwkMSIKLXVzYWdlICgpIHsKLQllY2hvICJVc2FnZToiCi0JZWNobyAiXCQwIHVzZXJAdGFyZ2V0ICdleHRyYSBvcHRpb25zIHRvIGRlamFnbnUnIgotCWVjaG8gIlwkMCB0YXJnZXQgJ2V4dHJhIG9wdGlvbnMgdG8gZGVqYWdudSciCi0JZWNobyAiXCQwIHRhcmdldCIKLQllY2hvICJlLmcuIFwkMCAxOTIuMTY4LjcuMiAnIGRnLmV4cD12aXNpYmlsaXR5LWQuYyciCi0JZWNobyAid2lsbCBvbmx5IHJ1biB2aXNpYmlsaXR5LWQuYyB0ZXN0IGNhc2UiCi0JZWNobyAiZS5nLiBcJDAgMTkyLjE2OC43LjIgJy8tbXRodW1iIGRnLmV4cD12aXNpYmlsaXR5LWQuYyciCi0JZWNobyAid2lsbCBvbmx5IHJ1biB2aXNpYmlsaXR5LWQuYyB0ZXN0IGNhc2UgaW4gdGh1bWIgbW9kZSIKLQllY2hvICJZb3UgbmVlZCB0byBoYXZlIGRlamFnbnUgYXV0b2dlbiBleHBlY3QgaW5zdGFsbGVkIgotCWVjaG8gIm9uIHRoZSBidWlsZCBob3N0IgotICAgIH0KLWlmIFsgInhcJHRhcmdldCIgPSAieCIgXQotdGhlbgotCWVjaG8gIlBsZWFzZSBzcGVjaWZ5IHRoZSB0YXJnZXQgbWFjaGluZSBhbmQgcmVtb3RlIHVzZXIgaW4gZm9ybSBvZiB1c2VyQHRhcmdldFxuIgotCXVzYWdlCi0JZXhpdCAxOwotZmkKLQotc2hpZnQKLQotZWNobyAiXCR0YXJnZXQiIHwgZ3JlcCAiQCIgMj4mMSA+IC9kZXYvbnVsbAotaWYgWyAieFwkPyIgPSAieDAiIF0KLXRoZW4KLSAgIHVzZXI9XCQoZWNobyBcJHRhcmdldCB8IGN1dCAtZCAnQCcgLWYgMSkKLSAgIHRhcmdldD1cJChlY2hvIFwkdGFyZ2V0IHwgY3V0IC1kICdAJyAtZiAyKQotZWxzZQotICAgdXNlcj1cJFVTRVIKLWZpCi1zc2ggXCR1c2VyQFwkdGFyZ2V0IGRhdGUgMj4mMSA+IC9kZXYvbnVsbAotaWYgWyAieFwkPyIgIT0gIngwIiBdCi10aGVuCi0JZWNobyAiRmFpbGVkIGNvbm5lY3RpbmcgdG8gXCR1c2VyQFwkdGFyZ2V0IGl0IGNvdWxkIGJlIGJlY2F1c2UiCi0JZWNobyAieW91IGRvbid0IGhhdmUgcGFzc3dvcmRsZXNzIHNzaCBzZXR1cCB0byBhY2Nlc3MgXCR0YXJnZXQiCi0JZWNobyAib3Igc29tZXRpbWVzIGhvc3Qga2V5IGhhcyBiZWVuIGNoYW5nZWQiCi0JZWNobyAiaW4gc3VjaCBjYXNlIGRvIHNvbWV0aGluZyBsaWtlIGJlbG93IG9uIGJ1aWxkIGhvc3QiCi0JZWNobyAic3NoLWtleWdlbiAtZiAifi8uc3NoL2tub3duX2hvc3RzIiAtUiBcJHRhcmdldCIKLQllY2hvICJhbmQgdGhlbiB0cnkgc3NoIFwkdXNlckBcJHRhcmdldCIKLQotCXVzYWdlCi0JZXhpdCAxCi1maQotCWVjaG8gImxhcHBlbmQgYm9hcmRzX2RpciBbcHdkXS8uLi8uLi8uLiIgPiAke0J9L3NpdGUuZXhwCi0JZWNobyAibG9hZF9nZW5lcmljX2NvbmZpZyBcInVuaXhcIiIgPiAke0J9LyR7UEFDS0FHRV9BUkNIfS5leHAKLQllY2hvICJzZXRfYm9hcmRfaW5mbyB1c2VybmFtZSBcJHVzZXIiID4+ICR7Qn0vJHtQQUNLQUdFX0FSQ0h9LmV4cAotCWVjaG8gInNldF9ib2FyZF9pbmZvIHJzaF9wcm9nIHNzaCIgPj4gJHtCfS8ke1BBQ0tBR0VfQVJDSH0uZXhwCi0JZWNobyAic2V0X2JvYXJkX2luZm8gcmNwX3Byb2cgc2NwIiA+PiAke0J9LyR7UEFDS0FHRV9BUkNIfS5leHAKLQllY2hvICJzZXRfYm9hcmRfaW5mbyBob3N0bmFtZSBcJHRhcmdldCIgPj4gJHtCfS8ke1BBQ0tBR0VfQVJDSH0uZXhwCi0JREVKQUdOVT0ke0J9L3NpdGUuZXhwIG1ha2UgLWsgY2hlY2sgUlVOVEVTVEZMQUdTPSItLXRhcmdldF9ib2FyZD0ke1BBQ0tBR0VfQVJDSH1cJEAiCi0KLVNUT1AKLQotCWNobW9kICt4ICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQogfQogCiBJTkhJQklUX1BBQ0tBR0VfU1RSSVAgPSAiMSIKQEAgLTE5MywxMCArMTE3LDYgQEAKIAljcCAke1N9L2xpYnF1YWRtYXRoL3F1YWRtYXRoLmggJHtEfSR7bGliZGlyfS9nY2MvJHtUQVJHRVRfU1lTfS8ke0JJTlZ9L2luY2x1ZGUvCiAJY3AgJHtTfS9saWJxdWFkbWF0aC9xdWFkbWF0aF93ZWFrLmggJHtEfSR7bGliZGlyfS9nY2MvJHtUQVJHRVRfU1lTfS8ke0JJTlZ9L2luY2x1ZGUvCiAKLQkjIFdlIHVzZSBsaWJpYmVydHkgZnJvbSBiaW51dGlscwotCWZpbmQgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYiAtbmFtZSBsaWJpYmVydHkuYSB8IHhhcmdzIHJtIC1mCi0JZmluZCAke0R9JHtleGVjX3ByZWZpeH0vbGliIC1uYW1lIGxpYmliZXJ0eS5oIHwgeGFyZ3Mgcm0gLWYKLQogCWZpbmQgJHtEfSR7bGliZGlyfS9nY2MvJHtUQVJHRVRfU1lTfS8ke0JJTlZ9L2luY2x1ZGUtZml4ZWQgLXR5cGUgZiAtbm90IC1uYW1lICJSRUFETUUiIC1ub3QgLW5hbWUgbGltaXRzLmggLW5vdCAtbmFtZSBzeXNsaW1pdHMuaCB8IHhhcmdzIHJtIC1mCiB9CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NfOS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc185LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NfOS4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXzkuMy5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nka185LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzkuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nka185LjIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfOS4zLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lLmluYwppbmRleCAyZGEzYzAyLi5hY2U3MDZkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZS5pbmMKQEAgLTE2LDkgKzE2LDE2IEBACiAKIEVYVFJBX09FQ09ORl9hcHBlbmRfbGludXhzdGRiYXNlID0gIiAtLWVuYWJsZS1jbG9jYWxlPWdudSIKIEVYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0tY2FjaGUtZmlsZT0ke0J9L2NvbmZpZy5jYWNoZSIKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1uZXdsaWIgPSAiIC0td2l0aC1uZXdsaWIiCiAKICMgRGlzYWJsZSBpZnVuY3MgZm9yIGxpYmF0b21pYyBvbiBhcm0gY29uZmxpY3RzIC1tYXJjaC8tbWNwdQogRVhUUkFfT0VDT05GX2FwcGVuZF9hcm0gPSAiIGxpYmF0X2N2X2hhdmVfaWZ1bmM9bm8gIgorRVhUUkFfT0VDT05GX2FwcGVuZF9hcm1lYiA9ICIgbGliYXRfY3ZfaGF2ZV9pZnVuYz1ubyAiCisKK0RJU0FCTEVfU1RBVElDX2NsYXNzLW5hdGl2ZXNkayA/PSAiIgorCisjIE5ld2xpYiBkb2VzIG5vdCBzdXBwb3J0IHN5bWJvbCB2ZXJzaW9uaW5nIG9uIGxpYnNkdGNjKysKK1NZTVZFUlNfQ09ORl9saWJjLW5ld2xpYiA9ICIiCiAKICMgQnVpbGRpbmcgd2l0aCB0aHVtYiBlbmFibGVkIG9uIGFybXY2dCBmYWlscwogQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCkBAIC0zNiw2ICs0Myw4IEBACiBSVU5USU1FVEFSR0VUID0gIiR7UlVOVElNRUxJQlNTUH0gbGlic3RkYysrLXYzIGxpYmdvbXAgbGliYXRvbWljICR7UlVOVElNRUxJQklUTX0gXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnRk9SVFJBTicsIFsnLGZvcnRyYW4nLCcsZjc3J10sICdsaWJxdWFkbWF0aCcsICcnLCBkKX0gXAogIgorIyBPbmx5IGJ1aWxkIGxpYnN0ZGMrKyBmb3IgbmV3bGliCitSVU5USU1FVEFSR0VUX2xpYmMtbmV3bGliID0gImxpYnN0ZGMrKy12MyIKIAogIyBsaWJpYmVydHkKICMgbGlibXVkZmxhcApAQCAtMTc5LDcgKzE4OCw3IEBACiAKICMgaW5jbHVkZSBweXRob24gZGVidWdnaW5nIHNjcmlwdHMKIEZJTEVTXyR7UE59LWRiZyArPSAiXAotICAgICR7bGliZGlyfS9saWJzdGRjKysuc28uKi1nZGIucHkgXAorICAgICR7bGliZGlyfS9saWJzdGRjKysuKi1nZGIucHkgXAogICAgICR7ZGF0YWRpcn0vZ2NjLSR7QklOVn0vcHl0aG9uL2xpYnN0ZGN4eCBcCiAiCiAKQEAgLTMwMiwxMCArMzExLDYgQEAKIAogICAgICMgSEFDSzogdGhpcyB3b3JrcyBhcm91bmQgdGhlIGNvbmZpZ3VyZSBzZXR0aW5nIENYWCB3aXRoIC1ub3N0ZCogYXJncwogICAgIHNlZCAtaSAncy8tbm9zdGRpbmMrKyAtbm9zdGRsaWIrKy8vZycgJChmaW5kICR7Qn0gLW5hbWUgdGVzdHN1aXRlX2ZsYWdzIHwgaGVhZCAtMSkKLSAgICAjIEhBQ0s6IHRoaXMgd29ya3MgYXJvdW5kIHRoZSBkZS1zdGFzaGluZyBjaGFuZ2VzIHRvIGNvbmZpZ2FyZ3MuaCwgYXMgd2VsbCBhcyByZWNpcGUtc3lzcm9vdCBjaGFuZ2luZyB0aGUgY29udGVudAotICAgIHNlZCAtaSAnL3N0YXRpYyBjb25zdCBjaGFyIGNvbmZpZ3VyYXRpb25fYXJndW1lbnRzL2QnICR7Qn0vZ2NjL2NvbmZpZ2FyZ3MuaAotICAgICR7Q0N9IC12IDI+JjEgfCBncmVwICJeQ29uZmlndXJlZCB3aXRoOiIgfCBcCi0gICAgICAgIHNlZCAncy9Db25maWd1cmVkIHdpdGg6IFwoLipcKS9zdGF0aWMgY29uc3QgY2hhciBjb25maWd1cmF0aW9uX2FyZ3VtZW50c1tdID0gIlwxIjsvZycgPj4gJHtCfS9nY2MvY29uZmlnYXJncy5oCiAKICAgICBpZiBbICIke1RPT0xDSEFJTl9URVNUX1RBUkdFVH0iID0gInVzZXIiIF07IHRoZW4KICAgICAgICAgIyBxZW11IHVzZXIgaGFzIGlzc3VlcyBhbGxvY2F0aW5nIGxhcmdlIGFtb3VudHMgb2YgbWVtb3J5CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWVfOS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzkuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzkuMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzkuMy5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVycy5pbmMKaW5kZXggOGIxZDFjOS4uNjY4ZTE0YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnMuaW5jCkBAIC00Myw3ICs0Myw3IEBACiAKIElOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCiBBTExPV19FTVBUWV8ke1BOfSA9ICIxIgotREVQRU5EUyA9ICJnY2MtcnVudGltZSB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2MiCitERVBFTkRTID0gInZpcnR1YWwvY3J5cHQgZ2NjLXJ1bnRpbWUgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjIgogCiAjIHVzZWQgdG8gZml4IC4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3dvcmstc2hhcmVkL2djYy04LjMuMC1yMC9nY2MtOC4zLjAvbGlic2FuaXRpemVyL2xpYmJhY2t0cmFjZS8uLi8uLi9saWJiYWNrdHJhY2UvZWxmLmM6NzcyOjIxOiBlcnJvcjogJ3N0LnN0X21vZGUnIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbiBbLVdlcnJvcj1tYXliZS11bmluaXRpYWxpemVkXQogREVCVUdfT1BUSU1JWkFUSU9OX2FwcGVuZCA9ICIgLVduby1lcnJvciIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc185LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnNfOS4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnNfOS4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnNfOS4zLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV85LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV85LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc291cmNlXzkuMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2VfOS4zLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXRhcmdldC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXRhcmdldC5pbmMKaW5kZXggYmRjNmZmNi4uOGNiNDMyNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy10YXJnZXQuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtdGFyZ2V0LmluYwpAQCAtMTksNiArMTksNyBAQAogRVhUUkFfT0VDT05GX2FwcGVuZF9hcm12N2EgPSAiIC0td2l0aC1hcmNoPWFybXY3LWEke0FSTUZQQVJDSEVYVH0iCiBFWFRSQV9PRUNPTkZfYXBwZW5kX2FybXY3dmUgPSAiIC0td2l0aC1hcmNoPWFybXY3dmUke0FSTUZQQVJDSEVYVH0iCiBFWFRSQV9PRUNPTkZfYXBwZW5kX2FyYyA9ICIgLS13aXRoLWNwdT0ke1RVTkVfUEtHQVJDSH0iCitFWFRSQV9PRUNPTkZfYXBwZW5kX3g4Ni02NCA9ICIgLS13aXRoLWFyY2g9bmF0aXZlIgogCiAjIGxpYmNjMSByZXF1cmVzIGdjY19jdl9vYmpkdW1wIHdoZW4gY3Jvc3MgYnVpbGQsIGJ1dCBnY2NfY3Zfb2JqZHVtcCBpcwogIyBzZXQgaW4gc3ViZGlyIGdjYywgc28gc3ViZGlyIGxpYmNjMSBjYW4ndCB1c2UgaXQsIGV4cG9ydCBpdCBoZXJlIHRvCkBAIC0xMzcsNiArMTM4LDIxIEBACiAiCiAKIGRvX2NvbXBpbGUgKCkgeworCSMgUHJldmVudCBmdWxsIHRhcmdldCBzeXNyb290IHBhdGggZnJvbSBiZWluZyB1c2VkIGluIGNvbmZpZ2FyZ3MuaCBoZWFkZXIsCisJIyBhcyBpdCB3aWxsIGJlIHJld3JpdHRlbiB3aGVuIHVzZWQgYnkgb3RoZXIgc3lzcm9vdHMgcHJldmVudGluZyBzdXBwb3J0CisJIyBmb3IgZ2NjIHBsdWdpbnMuIEFkZGl0aW9uYWxseSB0aGUgcGF0aCBpcyBlbWJlZGRlZGVkIGludG8gdGhlIG91dHB1dAorCSMgYmluYXJ5LCB0aGlzIHByZXZlbnRzIGJ1aWxkaW5nIGEgcmVwcm9kdWNpYmxlIGJpbmFyeS4KKwlvZV9ydW5tYWtlIGNvbmZpZ3VyZS1nY2MKKwlzZWQgLWkgJ3NAJHtTVEFHSU5HX0RJUl9UQVJHRVR9QC9AZycgJHtCfS9nY2MvY29uZmlnYXJncy5oCisJc2VkIC1pICdzQCR7U1RBR0lOR19ESVJfSE9TVH1AL0BnJyAke0J9L2djYy9jb25maWdhcmdzLmgKKworCSMgUHJldmVudCBzeXNyb290L3dvcmtkaXIgcGF0aHMgZnJvbSBiZWluZyB1c2VkIGluIGNoZWNrc3VtLW9wdGlvbnMuCisJIyBjaGVja3N1bS1vcHRpb25zIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBjaGVja3N1bSB3aGljaCBpcyBlbWJlZGRlZCBpbnRvCisJIyB0aGUgb3V0cHV0IGJpbmFyeS4KKwlvZV9ydW5tYWtlIFRBUkdFVC1nY2M9Y2hlY2tzdW0tb3B0aW9ucyBhbGwtZ2NjCisJc2VkIC1pICdzQCR7REVCVUdfUFJFRklYX01BUH1AQGcnICR7Qn0vZ2NjL2NoZWNrc3VtLW9wdGlvbnMKKwlzZWQgLWkgJ3NAJHtTVEFHSU5HX0RJUl9UQVJHRVR9QC9AZycgJHtCfS9nY2MvY2hlY2tzdW0tb3B0aW9ucworCiAJb2VfcnVubWFrZSBhbGwtaG9zdAogfQogCkBAIC0xNjQsNiArMTgwLDEwIEBACiAJIyBDbGVhbnVwIG1hbnBhZ2VzLi4KIAlybSAtcmYgJHtEfSR7bWFuZGlyfS9tYW43CiAKKwkjIERvbid0IHBhY2thZ2UgZGV0YWlscyBhYm91dCB0aGUgYnVpbGQgaG9zdAorCXJtIC1mICR7RH0ke2xpYmRpcn0vZ2NjLyR7VEFSR0VUX1NZU30vJHtCSU5WfS9wbHVnaW4vaW5jbHVkZS9hdXRvLWJ1aWxkLmgKKwlybSAtZiAke0R9JHtsaWJkaXJ9L2djYy8ke1RBUkdFVF9TWVN9LyR7QklOVn0vcGx1Z2luL2luY2x1ZGUvYmNvbmZpZy5oCisKIAljZCAke0R9JHtiaW5kaXJ9CiAKIAkjIFdlIGNhcmUgYWJvdXQgZysrIG5vdCBjKysKQEAgLTE3MiwxMCArMTkyLDYgQEAKIAkjIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGdjYy08dmVyc2lvbj4gb25lcyBmb3IgdGhpcwogCXJtIC1mICpnY2MtPy4/KgogCi0JIyBXZSB1c2UgbGliaWJlcnR5IGZyb20gYmludXRpbHMKLQlmaW5kICR7RH0ke2xpYmRpcn0gLW5hbWUgbGliaWJlcnR5LmEgfCB4YXJncyBybSAtZgotCWZpbmQgJHtEfSR7bGliZGlyfSAtbmFtZSBsaWJpYmVydHkuaCB8IHhhcmdzIHJtIC1mCi0KIAkjIE5vdCBzdXJlIHdoeSB3ZSBlbmQgdXAgd2l0aCB0aGVzZSBidXQgd2UgZG9uJ3Qgd2FudCB0aGVtLi4uCiAJcm0gLWYgJHtUQVJHRVRfUFJFRklYfSR7VEFSR0VUX1BSRUZJWH0qCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfOS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY185LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfOS4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjXzkuMy5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzkuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF85LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF85LjIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF85LjMuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy5pbmMKaW5kZXggZTAwOGQxNC4uNmQ0OGVjOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy5pbmMKQEAgLTksMTQgKzksMTggQEAKIAkJCSJsaW51eC1tdXNsZWFiaSIpIGV4dHJhX3RhcmdldF9vcz0ibGludXgtZ251ZWFiaSI7OwogCQkJKikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eCI7OwogCQllc2FjCi0JCWxuIC1zICR7VEFSR0VUX1NZU30gJHtEfSR7bGliZGlyfS8ke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0tJGV4dHJhX3RhcmdldF9vcworCQlpZiBbICEgLWUgJHtEfSR7bGliZGlyfS8ke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0tJGV4dHJhX3RhcmdldF9vcyBdOyB0aGVuCisJCQlsbiAtcyAke1RBUkdFVF9TWVN9ICR7RH0ke2xpYmRpcn0vJHtUQVJHRVRfQVJDSH0ke1RBUkdFVF9WRU5ET1J9LSRleHRyYV90YXJnZXRfb3MKKwkJZmkKIAlmaQogCWlmIFsgLW4gIiR7QCBiYi51dGlscy5jb250YWlucygnVFVORV9DQ0FSR1NfTUZMT0FUJywgJ2hhcmQnLCAnaGYnLCAnJywgZCl9IiBdOyB0aGVuCiAJCWNhc2UgIiR7VEFSR0VUX09TfSIgaW4KIAkJCSJsaW51eC1tdXNsZWFiaSIpIGV4dHJhX3RhcmdldF9vcz0ibGludXgtbXVzbGVhYmloZiI7OwogCQkJImxpbnV4LWdudWVhYmkiKSBleHRyYV90YXJnZXRfb3M9ImxpbnV4LWdudWVhYmloZiI7OwogCQllc2FjCi0JCWxuIC1zICR7VEFSR0VUX1NZU30gJHtEfSR7bGliZGlyfS8ke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0tJGV4dHJhX3RhcmdldF9vcworCQlpZiBbICEgLWUgJHtEfSR7bGliZGlyfS8ke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0tJGV4dHJhX3RhcmdldF9vcyBdOyB0aGVuCisJCQlsbiAtcyAke1RBUkdFVF9TWVN9ICR7RH0ke2xpYmRpcn0vJHtUQVJHRVRfQVJDSH0ke1RBUkdFVF9WRU5ET1J9LSRleHRyYV90YXJnZXRfb3MKKwkJZmkKIAlmaQogfQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzkuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2NfOS4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzkuMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjY185LjMuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbl85LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW5fOS4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW5fOS4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW5fOS4zLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLTguMy4xLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOC4zLjEuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWYxYzQ4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOC4zLjEuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYzICYgTEdQTHYyICYgTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotCQkgICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0JCSAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCi0JCSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTlmNjA0ZDhhNGY4ZTc0ZjRmNTE0MDg0NWEyMWI2Njc0IgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ2RiL2dkYi0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1nZGJzZXJ2ZXItY3RybC1jLWhhbmRsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LVVzZS1leG9ydGVkLWRlZmluaXRpb25zLW9mLVNJR1JUTUlOLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLUZpeC1pbnZhbGlkLXNpZ3Byb2NtYXNrLWNhbGwucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNzNiNmE1ZDgxNDE2NzJjNjJiZjg1MWNkMzRjNGFhODMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWU1NWI0ZDdjZGNhN2IzNGJlMTJmNGNlYWU2NTE2MjNhYTczYjJmZDY0MDE1MjMxM2Y5ZjY2YTcxNDk3NTdjNCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOS4xLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOS4xLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDE5ZTZiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi05LjEuaW5jCkBAIC0wLDAgKzEsMjEgQEAKK0xJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MyAmIExHUEx2MiAmIExHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKKwkJICAgIGZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorCQkgICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAorCQkgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT05ZjYwNGQ4YTRmOGU3NGY0ZjUxNDA4NDVhMjFiNjY3NCIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dkYi9nZGItJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LVVzZS1leG9ydGVkLWRlZmluaXRpb25zLW9mLVNJR1JUTUlOLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLUZpeC1pbnZhbGlkLXNpZ3Byb2NtYXNrLWNhbGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1nZGJzZXJ2ZXItY3RybC1jLWhhbmRsaW5nLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImY3ZTlmNjIzNmM0MjUwOTdkOWU1ZjE4YTZhYzQwNjU1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY5OWUwZWM4MzJmZGQyZjIxYzgyNjYxNzFlYTViZjQ0MDI0YmQwNTE2NGZkZjA2NGU0ZDEwY2M0Y2YwZDE3MzciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzLWNhbmFkaWFuXzguMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbl85LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW5fOC4zLjEuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW5fOS4xLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzXzguMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zc185LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfOC4zLjEuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfOS4xLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDEtZ2Ric2VydmVyLWN0cmwtYy1oYW5kbGluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1nZGJzZXJ2ZXItY3RybC1jLWhhbmRsaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWZlN2Y4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1nZGJzZXJ2ZXItY3RybC1jLWhhbmRsaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotVGhpcyBwcm9ibGVtIHdhcyBjcmVhdGVkIGJ5IHRoZSB1cHN0cmVhbSBjb21taXQgNzg3MDhiN2M4YwotQWZ0ZXIgYXBwbHlpbmcgdGhlIGNvbW1pdCwgaXQgd2lsbCBzZW5kIFNJR0lOVCB0byB0aGUgcHJvY2VzcyBncm91cCgtc2lnbmFsX3BpZCkuCi1CdXQgaWYgd2UgdXNlIGdkYnNlcnZlciBzZW5kIFNJR0lOVCwgYW5kIHRoZSBhdHRhY2hlZCBwcm9jZXNzIGlzIG5vdCBhIHByb2Nlc3MKLWdyb3VwIGxlYWRlciwgdGhlbiB0aGUgImtpbGwgKC1zaWduYWxfcGlkLCBTSUdJTlQpIiByZXR1cm5zIGVycm9yIGFuZCBmYWlscyAgdG8KLWludGVycnVwdCB0aGUgYXR0YWNoZWQgcHJvY2Vzcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE4OTQ1XQotCi1BdXRob3I6IEpvc2ggR2FvCi1TaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgotCi1JbmRleDogZ2RiLTguMi9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTguMi5vcmlnL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMKLSsrKyBnZGItOC4yL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMKLUBAIC01OTQwLDkgKzU5NDAsNyBAQCBsaW51eF9sb29rX3VwX3N5bWJvbHMgKHZvaWQpCi0gc3RhdGljIHZvaWQKLSBsaW51eF9yZXF1ZXN0X2ludGVycnVwdCAodm9pZCkKLSB7Ci0tICAvKiBTZW5kIGEgU0lHSU5UIHRvIHRoZSBwcm9jZXNzIGdyb3VwLiAgVGhpcyBhY3RzIGp1c3QgbGlrZSB0aGUgdXNlcgotLSAgICAgdHlwZWQgYSBeQyBvbiB0aGUgY29udHJvbGxpbmcgdGVybWluYWwuICAqLwotLSAga2lsbCAoLXNpZ25hbF9waWQsIFNJR0lOVCk7Ci0rICBraWxsIChzaWduYWxfcGlkLCBTSUdJTlQpOwotIH0KLSAKLSAvKiBDb3B5IExFTiBieXRlcyBmcm9tIGluZmVyaW9yJ3MgYXV4aWxpYXJ5IHZlY3RvciBzdGFydGluZyBhdCBPRkZTRVQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDEtbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyMjg3ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDEtbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0Zyb20gMDM2ZjhlMWQzODdmNjVlNTJjYjAyMWRiYjFiZDI4ZThiNzVjZjAxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDI6Mjc6NTUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gbWFrZSBtYW4gaW5zdGFsbCByZWxhdGl2ZSB0byBERVNURElSCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc2ltL2NvbW1vbi9NYWtlZmlsZS5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NpbS9jb21tb24vTWFrZWZpbGUuaW4gYi9zaW0vY29tbW9uL01ha2VmaWxlLmluCitpbmRleCBjNmRlMTQxMjJjLi5jNGIxMjE0OTQ2IDEwMDY0NAorLS0tIGEvc2ltL2NvbW1vbi9NYWtlZmlsZS5pbgorKysrIGIvc2ltL2NvbW1vbi9NYWtlZmlsZS5pbgorQEAgLTM1LDcgKzM1LDcgQEAgdG9vbGRpciA9ICQobGliZGlyKS8kKHRhcmdldF9hbGlhcykKKyBkYXRhcm9vdGRpciA9IEBkYXRhcm9vdGRpckAKKyBkYXRhZGlyID0gQGRhdGFkaXJACisgbWFuZGlyID0gQG1hbmRpckAKKy1tYW4xZGlyID0gJChtYW5kaXIpL21hbjEKKyttYW4xZGlyID0gJChERVNURElSKSQobWFuZGlyKS9tYW4xCisgaW5mb2RpciA9IEBpbmZvZGlyQAorIGluY2x1ZGVkaXIgPSBAaW5jbHVkZWRpckAKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMi1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDItbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDQ3OWU1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMi1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIGIwMjA5ZjI4MjcxNmJlZDJjMjMwYzdiNDk2ZmJjYzdhZjUwM2QwY2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAyOjI3OjU1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMTFdIG1ha2UgbWFuIGluc3RhbGwgcmVsYXRpdmUgdG8gREVTVERJUgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNpbS9jb21tb24vTWFrZWZpbGUuaW4gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zaW0vY29tbW9uL01ha2VmaWxlLmluIGIvc2ltL2NvbW1vbi9NYWtlZmlsZS5pbgotaW5kZXggMjI3ZTRjZmJjMi4uOGMzNDU3ZTBiZCAxMDA2NDQKLS0tLSBhL3NpbS9jb21tb24vTWFrZWZpbGUuaW4KLSsrKyBiL3NpbS9jb21tb24vTWFrZWZpbGUuaW4KLUBAIC0zNSw3ICszNSw3IEBAIHRvb2xkaXIgPSAkKGxpYmRpcikvJCh0YXJnZXRfYWxpYXMpCi0gZGF0YXJvb3RkaXIgPSBAZGF0YXJvb3RkaXJACi0gZGF0YWRpciA9IEBkYXRhZGlyQAotIG1hbmRpciA9IEBtYW5kaXJACi0tbWFuMWRpciA9ICQobWFuZGlyKS9tYW4xCi0rbWFuMWRpciA9ICQoREVTVERJUikkKG1hbmRpcikvbWFuMQotIGluZm9kaXIgPSBAaW5mb2RpckAKLSBpbmNsdWRlZGlyID0gQGluY2x1ZGVkaXJACi0gCi0tLSAKLTIuMTguMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDItbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDItbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA2N2NhZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMi1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDZiZmYyODYyZjk1OTdmMzI0YTkzODVlYjJmODI4ZTgzOGU1MWE4YTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyMyBNYXIgMjAxNiAwNjozMDowOSArMDAwMAorU3ViamVjdDogW1BBVENIXSBtaXBzLWxpbnV4LW5hdDogRGVmaW5lIF9BQklPMzIgaWYgbm90IGRlZmluZWQKKworVGhpcyBoZWxwcyBidWlsZGluZyBnZGIgb24gbWlwczY0IG9uIG11c2wsIHNpbmNlCittdXNsIGRvZXMgbm90IHByb3ZpZGUgc2dpZGVmcy5oIHRoaXMgZGVmaW5lIGlzCitvbmx5IGRlZmluZWQgd2hlbiBHQ0MgaXMgdXNpbmcgbzMyIEFCSSwgaW4gdGhhdAorY2FzZSBnY2MgZW1pdHMgaXQgYXMgYnVpbHQtaW4gZGVmaW5lIGFuZCBoZW5jZQoraXQgd29ya3Mgb2sgZm9yIG1pcHMzMgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnZGIvbWlwcy1saW51eC1uYXQuYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2dkYi9taXBzLWxpbnV4LW5hdC5jIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKK2luZGV4IDEwNGM5NzJmMjQuLjdmNTc1YjMzNjMgMTAwNjQ0CistLS0gYS9nZGIvbWlwcy1saW51eC1uYXQuYworKysrIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKK0BAIC00MSw2ICs0MSwxMCBAQAorICNpZm5kZWYgUFRSQUNFX0dFVF9USFJFQURfQVJFQQorICNkZWZpbmUgUFRSQUNFX0dFVF9USFJFQURfQVJFQSAyNQorICNlbmRpZgorKy8qIG11c2wgZG9lcyBub3QgZGVmaW5lIGFuZCByZWxpZXMgb24gY29tcGlsZXIgYnVpbHQtaW4gbWFjcm9zIGZvciBpdCAgICovCisrI2lmbmRlZiBfQUJJTzMyCisrI2RlZmluZSBfQUJJTzMyIDEKKysjZW5kaWYKKyAKKyBjbGFzcyBtaXBzX2xpbnV4X25hdF90YXJnZXQgZmluYWwgOiBwdWJsaWMgbGludXhfbmF0X3RyYWRfdGFyZ2V0CisgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAzLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAzLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjU0Yzc0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMy1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gYjE0YTU3ZDkwZTFjZGQ4MTQ0Y2RhNGM4ODgyYmQxZGI0NGQyNmRhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIzIE1hciAyMDE2IDA2OjMwOjA5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMTFdIG1pcHMtbGludXgtbmF0OiBEZWZpbmUgX0FCSU8zMiBpZiBub3QgZGVmaW5lZAotCi1UaGlzIGhlbHBzIGJ1aWxkaW5nIGdkYiBvbiBtaXBzNjQgb24gbXVzbCwgc2luY2UKLW11c2wgZG9lcyBub3QgcHJvdmlkZSBzZ2lkZWZzLmggdGhpcyBkZWZpbmUgaXMKLW9ubHkgZGVmaW5lZCB3aGVuIEdDQyBpcyB1c2luZyBvMzIgQUJJLCBpbiB0aGF0Ci1jYXNlIGdjYyBlbWl0cyBpdCBhcyBidWlsdC1pbiBkZWZpbmUgYW5kIGhlbmNlCi1pdCB3b3JrcyBvayBmb3IgbWlwczMyCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdkYi9taXBzLWxpbnV4LW5hdC5jIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL21pcHMtbGludXgtbmF0LmMgYi9nZGIvbWlwcy1saW51eC1uYXQuYwotaW5kZXggMzI4MzVjMTZiMi4uNjhhNzU4N2FmMiAxMDA2NDQKLS0tLSBhL2dkYi9taXBzLWxpbnV4LW5hdC5jCi0rKysgYi9nZGIvbWlwcy1saW51eC1uYXQuYwotQEAgLTQxLDYgKzQxLDEwIEBACi0gI2lmbmRlZiBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBCi0gI2RlZmluZSBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBIDI1Ci0gI2VuZGlmCi0rLyogbXVzbCBkb2VzIG5vdCBkZWZpbmUgYW5kIHJlbGllcyBvbiBjb21waWxlciBidWlsdC1pbiBtYWNyb3MgZm9yIGl0ICAgKi8KLSsjaWZuZGVmIF9BQklPMzIKLSsjZGVmaW5lIF9BQklPMzIgMQotKyNlbmRpZgotIAotIGNsYXNzIG1pcHNfbGludXhfbmF0X3RhcmdldCBmaW5hbCA6IHB1YmxpYyBsaW51eF9uYXRfdHJhZF90YXJnZXQKLSB7Ci0tLSAKLTIuMTguMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDMtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMy1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0YmFiN2IKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDMtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIGQ1ODE3YmNmMmY3MzEzNjk5YmZhODViNDEyMjBkODYyZGIzMjc2NjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxODozMjoxNCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBwcGMvcHRyYWNlOiBEZWZpbmUgcHRfcmVncyB1YXBpX3B0X3JlZ3Mgb24gIUdMSUJDIHN5c3RlbXMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYyB8IDYgKysrKysrCisgZ2RiL25hdC9wcGMtbGludXguaCAgICAgICAgICAgfCA2ICsrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9saW51eC1wcGMtbG93LmMgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYworaW5kZXggNWQ4ZDY3YmVjMi4uZmZjZjY1YWI1OCAxMDA2NDQKKy0tLSBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jCisrKysgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYworQEAgLTIzLDcgKzIzLDEzIEBACisgI2luY2x1ZGUgImVsZi9jb21tb24uaCIKKyAjaW5jbHVkZSA8c3lzL3Vpby5oPgorICNpbmNsdWRlIDxlbGYuaD4KKysjaWYgIWRlZmluZWQoX19HTElCQ19fKQorKyMgZGVmaW5lIHB0X3JlZ3MgdWFwaV9wdF9yZWdzCisrI2VuZGlmCisgI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKysjaWYgIWRlZmluZWQoX19HTElCQ19fKQorKyMgdW5kZWYgcHRfcmVncworKyNlbmRpZgorIAorICNpbmNsdWRlICJhcmNoL3BwYy1saW51eC1jb21tb24uaCIKKyAjaW5jbHVkZSAiYXJjaC9wcGMtbGludXgtdGRlc2MuaCIKK2RpZmYgLS1naXQgYS9nZGIvbmF0L3BwYy1saW51eC5oIGIvZ2RiL25hdC9wcGMtbGludXguaAoraW5kZXggZDkzN2E2NWI2OS4uMWZkNTRiNGEwZSAxMDA2NDQKKy0tLSBhL2dkYi9uYXQvcHBjLWxpbnV4LmgKKysrKyBiL2dkYi9uYXQvcHBjLWxpbnV4LmgKK0BAIC0xOCw3ICsxOCwxMyBAQAorICNpZm5kZWYgTkFUX1BQQ19MSU5VWF9ICisgI2RlZmluZSBOQVRfUFBDX0xJTlVYX0gKKyAKKysjaWYgIWRlZmluZWQoX19HTElCQ19fKQorKyMgZGVmaW5lIHB0X3JlZ3MgdWFwaV9wdF9yZWdzCisrI2VuZGlmCisgI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKysjaWYgIWRlZmluZWQoX19HTElCQ19fKQorKyMgdW5kZWYgcHRfcmVncworKyNlbmRpZgorICNpbmNsdWRlIDxhc20vY3B1dGFibGUuaD4KKyAKKyAvKiBUaGlzIHNvbWV0aW1lcyBpc24ndCBkZWZpbmVkLiAgKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNC1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA0LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQxNjVkNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNC1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoCkBAIC0wLDAgKzEsOTExIEBACitGcm9tIDUwNWYxMGEwZWExYThiYmEwNTg0ODU5ZDlhMzQ4YmI3Nzk1OTNlYzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAyOjMxOjEyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBzdXBwb3J0IGZvciBSZW5lc2FzIFNIIChzaDQpIGFyY2hpdGVjdHVyZS4KKworZ2RiICg3LjQtMX5jdnMyMDExMTExNy4yKSBleHBlcmltZW50YWw7IHVyZ2VuY3k9bG93CisgLgorICAgKiBBZGQgUmVuZXNhcyBTSCAoc2g0KSBzdXBwb3J0IChDbG9zZXM6ICM1NzYyNDIpCisgICAgIC0gVGhhbmtzIE5vYnVoaXJvIEl3YW1hdHN1LCBUYWthc2hpIFlvc2hpaS4KK0F1dGhvcjogSGVjdG9yIE9yb24gPHp1bWJpQGRlYmlhbi5vcmc+CitCdWctRGViaWFuOiBodHRwOi8vYnVncy5kZWJpYW4ub3JnLzU3NjI0MgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnZGIvTWFrZWZpbGUuaW4gICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKworIGdkYi9jb25maWd1cmUuaG9zdCAgICAgICAgICAgICAgICAgICB8ICAgMSArCisgZ2RiL3NoLWxpbnV4LXRkZXAuYyAgICAgICAgICAgICAgICAgIHwgNTE5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKworIGdkYi9zaC10ZGVwLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICA1MyArKy0KKyBnZGIvc2gtdGRlcC5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDkgKysrCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwIHwgICA1ICsKKyBnZGIvdGVzdHN1aXRlL2dkYi5hc20vc2guaW5jICAgICAgICAgfCAgIDMgKy0KKyBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTEuYyAgICAgfCAgIDMgKworIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5jICAgICB8ICAgNCArCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYyAgICAgIHwgICAzICsKKyBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYyAgICAgfCAgIDQgKworIDExIGZpbGVzIGNoYW5nZWQsIDYxNyBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgoraW5kZXggYzNlMDc0YjIxZi4uNDJkZDdhZjU5YyAxMDA2NDQKKy0tLSBhL2dkYi9NYWtlZmlsZS5pbgorKysrIGIvZ2RiL01ha2VmaWxlLmluCitAQCAtMjMxNyw2ICsyMzE3LDggQEAgQUxMREVQRklMRVMgPSBcCisgCXNoLW5ic2QtbmF0LmMgXAorIAlzaC1uYnNkLXRkZXAuYyBcCisgCXNoLXRkZXAuYyBcCisrCXNoLWxpbnV4LXRkZXAuYyBcCisrCXNoLWxpbnV4LW5hdC5jIFwKKyAJc29sMi10ZGVwLmMgXAorIAlzb2xpYi1haXguYyBcCisgCXNvbGliLXN2cjQuYyBcCitkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS5ob3N0IGIvZ2RiL2NvbmZpZ3VyZS5ob3N0CitpbmRleCBjZTUyODIzNzI5Li41YjUxNzNhNzFhIDEwMDY0NAorLS0tIGEvZ2RiL2NvbmZpZ3VyZS5ob3N0CisrKysgYi9nZGIvY29uZmlndXJlLmhvc3QKK0BAIC0xNDgsNiArMTQ4LDcgQEAgcmlzY3YqLSotbGludXgqKQlnZGJfaG9zdD1saW51eCA7OworIAorIHMzOTAqLSotbGludXgqKQkJZ2RiX2hvc3Q9bGludXggOzsKKyAKKytzaCotKi1saW51eCopCQlnZGJfaG9zdD1saW51eCA7OworIHNoKi0qLW5ldGJzZGVsZiogfCBzaCotKi1rbmV0YnNkKi1nbnUpCisgCQkJZ2RiX2hvc3Q9bmJzZCA7OworIHNoKi0qLW9wZW5ic2QqKQkJZ2RiX2hvc3Q9bmJzZCA7OworZGlmZiAtLWdpdCBhL2dkYi9zaC1saW51eC10ZGVwLmMgYi9nZGIvc2gtbGludXgtdGRlcC5jCitpbmRleCAxM2MxMGVlZWRhLi4xZDBkNTgzYTY0IDEwMDY0NAorLS0tIGEvZ2RiL3NoLWxpbnV4LXRkZXAuYworKysrIGIvZ2RiL3NoLWxpbnV4LXRkZXAuYworQEAgLTE4LDE0ICsxOCwzNyBAQAorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKyAKKyAjaW5jbHVkZSAiZGVmcy5oIgorKyNpbmNsdWRlICJnZGJjb3JlLmgiCisrI2luY2x1ZGUgImZyYW1lLmgiCisrI2luY2x1ZGUgImZyYW1lLWJhc2UuaCIKKysjaW5jbHVkZSAiZnJhbWUtdW53aW5kLmgiCisrI2luY2x1ZGUgImR3YXJmMi1mcmFtZS5oIgorKyNpbmNsdWRlICJ2YWx1ZS5oIgorKyNpbmNsdWRlICJyZWdjYWNoZS5oIgorKyNpbmNsdWRlICJpbmZlcmlvci5oIgorICNpbmNsdWRlICJvc2FiaS5oIgorIAorKyNpbmNsdWRlICJyZWdncm91cHMuaCIKKysjaW5jbHVkZSAiYXJjaC11dGlscy5oIgorKyNpbmNsdWRlICJmbG9hdGZvcm1hdC5oIgorICNpbmNsdWRlICJzb2xpYi1zdnI0LmgiCisgI2luY2x1ZGUgInN5bXRhYi5oIgorKyNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCisrI2luY2x1ZGUgImNvbW1hbmQuaCIKKysjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgorIAorICNpbmNsdWRlICJ0cmFkLWZyYW1lLmgiCisgI2luY2x1ZGUgInRyYW1wLWZyYW1lLmgiCisgCisrI2luY2x1ZGUgPHN5cy9wdHJhY2UuaD4KKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorKyNpbmNsdWRlIDxzeXMvdXNlci5oPgorKyNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorKworKyNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CisrCisrI2luY2x1ZGUgInJlZ3NldC5oIgorICNpbmNsdWRlICJnbGliYy10ZGVwLmgiCisgI2luY2x1ZGUgInNoLXRkZXAuaCIKKyAjaW5jbHVkZSAibGludXgtdGRlcC5oIgorQEAgLTE4MSw5ICsyMDQsNTA1IEBAIHN0YXRpYyBzdHJ1Y3QgdHJhbXBfZnJhbWUgc2hfbGludXhfcnRfc2lncmV0dXJuX3RyYW1wX2ZyYW1lID0geworICAgc2hfbGludXhfcnRfc2lncmV0dXJuX2luaXQKKyB9OworIAorKy8qIFJlY29nbml6aW5nIHNpZ25hbCBoYW5kbGVyIGZyYW1lcy4gICovCisrCisrLyogR05VL0xpbnV4IGhhcyB0d28gZmxhdm9ycyBvZiBzaWduYWxzLiAgTm9ybWFsIHNpZ25hbCBoYW5kbGVycywgYW5kCisrICAgInJlYWx0aW1lIiAoUlQpIHNpZ25hbHMuICBUaGUgUlQgc2lnbmFscyBjYW4gcHJvdmlkZSBhZGRpdGlvbmFsCisrICAgaW5mb3JtYXRpb24gdG8gdGhlIHNpZ25hbCBoYW5kbGVyIGlmIHRoZSBTQV9TSUdJTkZPIGZsYWcgaXMgc2V0CisrICAgd2hlbiBlc3RhYmxpc2hpbmcgYSBzaWduYWwgaGFuZGxlciB1c2luZyBgc2lnYWN0aW9uJy4gIEl0IGlzIG5vdAorKyAgIHVubGlrZWx5IHRoYXQgZnV0dXJlIHZlcnNpb25zIG9mIEdOVS9MaW51eCB3aWxsIHN1cHBvcnQgU0FfU0lHSU5GTworKyAgIGZvciBub3JtYWwgc2lnbmFscyB0b28uICAqLworKworKy8qIFdoZW4gdGhlIFNIIExpbnV4IGtlcm5lbCBjYWxscyBhIHNpZ25hbCBoYW5kbGVyIGFuZCB0aGUKKysgICBTQV9SRVNUT1JFUiBmbGFnIGlzbid0IHNldCwgdGhlIHJldHVybiBhZGRyZXNzIHBvaW50cyB0byBhIGJpdCBvZgorKyAgIGNvZGUgb24gdGhlIHN0YWNrLiAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHdoZXRoZXIgdGhlIFBDIGFwcGVhcnMgdG8KKysgICBiZSB3aXRoaW4gdGhpcyBiaXQgb2YgY29kZS4KKysKKysgICBUaGUgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UgZm9yIG5vcm1hbCBzaWduYWxzIGlzCisrICAgICAgIG1vdi53ICAxZixyMworKyAgICAgICB0cmFwYSAgIzE2CisrICAgICAgIG9yICAgICByMCwgcjAKKysgICAgICAgb3IgICAgIHIwLCByMAorKyAgICAgICBvciAgICAgcjAsIHIwCisrICAgICAgIG9yICAgICByMCwgcjAKKysgICAgICAgb3IgICAgIHIwLCByMAorKyAgICAxOiAud29yZCAgX19OUl9zaWdyZXR1cm4KKysgICBvciAweDkzMDUgMHhjMzEwIDB4MjAwYiAweDIwMGIgMHgyMDBiIDB4MjAwYiAweDIwMGIgMHgwMDc3LgorKworKyAgIENoZWNraW5nIGZvciB0aGUgY29kZSBzZXF1ZW5jZSBzaG91bGQgYmUgc29tZXdoYXQgcmVsaWFibGUsIGJlY2F1c2UKKysgICB0aGUgZWZmZWN0IGlzIHRvIGNhbGwgdGhlIHN5c3RlbSBjYWxsIHNpZ3JldHVybi4gIFRoaXMgaXMgdW5saWtlbHkKKysgICB0byBvY2N1ciBhbnl3aGVyZSBvdGhlciB0aGFuIGEgc2lnbmFsIHRyYW1wb2xpbmUuCisrCisrICAgSXQga2luZCBvZiBzdWNrcyB0aGF0IHdlIGhhdmUgdG8gcmVhZCBtZW1vcnkgZnJvbSB0aGUgcHJvY2VzcyBpbgorKyAgIG9yZGVyIHRvIGlkZW50aWZ5IGEgc2lnbmFsIHRyYW1wb2xpbmUsIGJ1dCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUKKysgICBhbnkgb3RoZXIgd2F5LiAgVGhlIFBDX0lOX1NJR1RSQU1QIG1hY3JvIGluIHRtLWxpbnV4LmggYXJyYW5nZXMgdG8KKysgICBvbmx5IGNhbGwgdXMgaWYgbm8gZnVuY3Rpb24gbmFtZSBjb3VsZCBiZSBpZGVudGlmaWVkLCB3aGljaCBzaG91bGQKKysgICBiZSB0aGUgY2FzZSBzaW5jZSB0aGUgY29kZSBpcyBvbiB0aGUgc3RhY2suCisrCisrICAgRGV0ZWN0aW9uIG9mIHNpZ25hbCB0cmFtcG9saW5lcyBmb3IgaGFuZGxlcnMgdGhhdCBzZXQgdGhlCisrICAgU0FfUkVTVE9SRVIgZmxhZyBpcyBpbiBnZW5lcmFsIG5vdCBwb3NzaWJsZS4gIFVuZm9ydHVuYXRlbHkgdGhpcyBpcworKyAgIHdoYXQgdGhlIEdOVSBDIExpYnJhcnkgaGFzIGJlZW4gZG9pbmcgZm9yIHF1aXRlIHNvbWUgdGltZSBub3cuCisrICAgSG93ZXZlciwgYXMgb2YgdmVyc2lvbiAyLjEuMiwgdGhlIEdOVSBDIExpYnJhcnkgdXNlcyBzaWduYWwKKysgICB0cmFtcG9saW5lcyAobmFtZWQgX19yZXN0b3JlIGFuZCBfX3Jlc3RvcmVfcnQpIHRoYXQgYXJlIGlkZW50aWNhbAorKyAgIHRvIHRoZSBvbmVzIHVzZWQgYnkgdGhlIGtlcm5lbC4gIFRoZXJlZm9yZSwgdGhlc2UgdHJhbXBvbGluZXMgYXJlCisrICAgc3VwcG9ydGVkIHRvby4gICovCisrCisrI2RlZmluZSBNT1ZXKG4pCSAoMHg5MzAwfCgobiktMikpCS8qIE1vdmUgbWVtIHdvcmQgYXQgUEMrbiB0byBSMyAqLworKyNkZWZpbmUgVFJBUDE2CSAweGMzMTAJCQkvKiBTeXNjYWxsIHcvbm8gYXJncyAoTlIgaW4gUjMpICovCisrI2RlZmluZSBPUl9SMF9SMCAweDIwMGIJCQkvKiBvciByMCxyMCAoaW5zZXJ0IHRvIGF2b2lkIGhhcmR3YXJlIGJ1ZykgKi8KKysKKysjZGVmaW5lIExJTlVYX1NJR1RSQU1QX0lOU04wCU1PVlcoNykJCS8qIE1vdmUgbWVtIHdvcmQgYXQgUEMrNyB0byBSMyAqLworKyNkZWZpbmUgTElOVVhfU0lHVFJBTVBfSU5TTjEJVFJBUDE2CQkvKiBTeXNjYWxsIHcvbm8gYXJncyAoTlIgaW4gUjMpICovCisrI2RlZmluZSBMSU5VWF9TSUdUUkFNUF9JTlNOMglPUl9SMF9SMAkvKiBvciByMCxyMCAoaW5zZXJ0IHRvIGF2b2lkIGhhcmR3YXJlIGJ1ZykgKi8KKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgbGludXhfc2lndHJhbXBfY29kZVtdID0KKyt7CisrICBMSU5VWF9TSUdUUkFNUF9JTlNOMCwKKysgIExJTlVYX1NJR1RSQU1QX0lOU04xLAorKyAgTElOVVhfU0lHVFJBTVBfSU5TTjIsCisrICBMSU5VWF9TSUdUUkFNUF9JTlNOMiwKKysgIExJTlVYX1NJR1RSQU1QX0lOU04yLAorKyAgTElOVVhfU0lHVFJBTVBfSU5TTjIsCisrICBMSU5VWF9TSUdUUkFNUF9JTlNOMiwKKysgIF9fTlJfc2lncmV0dXJuCisrfTsKKysKKysjZGVmaW5lIExJTlVYX1NJR1RSQU1QX0xFTiAoc2l6ZW9mIGxpbnV4X3NpZ3RyYW1wX2NvZGUpCisrCisrLyogSWYgUEMgaXMgaW4gYSBzaWd0cmFtcCByb3V0aW5lLCByZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIHN0YXJ0IG9mCisrICAgdGhlIHJvdXRpbmUuICBPdGhlcndpc2UsIHJldHVybiAwLiAgKi8KKysKKytzdGF0aWMgQ09SRV9BRERSCisrc2hfbGludXhfc2lndHJhbXBfc3RhcnQgKHN0cnVjdCBmcmFtZV9pbmZvICpuZXh0X2ZyYW1lKQorK3sKKysgIENPUkVfQUREUiBwYyA9IGdldF9mcmFtZV9wYyAobmV4dF9mcmFtZSk7CisrICBnZGJfYnl0ZSBidWZbTElOVVhfU0lHVFJBTVBfTEVOXTsKKysKKysgIC8qIFdlIG9ubHkgcmVjb2duaXplIGEgc2lnbmFsIHRyYW1wb2xpbmUgaWYgUEMgaXMgYXQgdGhlIHN0YXJ0IG9mCisrICAgICBvbmUgb2YgdGhlIHRocmVlIGluc3RydWN0aW9ucy4gIFdlIG9wdGltaXplIGZvciBmaW5kaW5nIHRoZSBQQyBhdAorKyAgICAgdGhlIHN0YXJ0LCBhcyB3aWxsIGJlIHRoZSBjYXNlIHdoZW4gdGhlIHRyYW1wb2xpbmUgaXMgbm90IHRoZQorKyAgICAgZmlyc3QgZnJhbWUgb24gdGhlIHN0YWNrLiAgV2UgYXNzdW1lIHRoYXQgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlCisrICAgICBQQyBpcyBub3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBpbnN0cnVjdGlvbiBzZXF1ZW5jZSwgdGhlcmUgd2lsbCBiZQorKyAgICAgYSBmZXcgdHJhaWxpbmcgcmVhZGFibGUgYnl0ZXMgb24gdGhlIHN0YWNrLiAgKi8KKysKKysgIGlmICghc2FmZV9mcmFtZV91bndpbmRfbWVtb3J5IChuZXh0X2ZyYW1lLCBwYywgYnVmLCBMSU5VWF9TSUdUUkFNUF9MRU4pKQorKyAgICByZXR1cm4gMDsKKysKKysgIGlmIChidWZbMF0gIT0gTElOVVhfU0lHVFJBTVBfSU5TTjApCisrICAgIHsKKysgICAgICBpZiAoYnVmWzBdICE9IExJTlVYX1NJR1RSQU1QX0lOU04xKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisrICAgICAgcGMgLT0gMjsKKysKKysgICAgICBpZiAoIXNhZmVfZnJhbWVfdW53aW5kX21lbW9yeSAobmV4dF9mcmFtZSwgcGMsIGJ1ZiwgTElOVVhfU0lHVFJBTVBfTEVOKSkKKysJcmV0dXJuIDA7CisrICAgIH0KKysKKysgIGlmIChtZW1jbXAgKGJ1ZiwgbGludXhfc2lndHJhbXBfY29kZSwgTElOVVhfU0lHVFJBTVBfTEVOKSAhPSAwKQorKyAgICByZXR1cm4gMDsKKysKKysgIHJldHVybiBwYzsKKyt9CisrCisrLyogVGhpcyBmdW5jdGlvbiBkb2VzIHRoZSBzYW1lIGZvciBSVCBzaWduYWxzLiAgSGVyZSB0aGUgaW5zdHJ1Y3Rpb24KKysgICBzZXF1ZW5jZSBpcworKyAgICAgICBtb3YudyAgMWYscjMKKysgICAgICAgdHJhcGEgICMxNgorKyAgICAgICBvciAgICAgcjAsIHIwCisrICAgICAgIG9yICAgICByMCwgcjAKKysgICAgICAgb3IgICAgIHIwLCByMAorKyAgICAgICBvciAgICAgcjAsIHIwCisrICAgICAgIG9yICAgICByMCwgcjAKKysgICAgMTogLndvcmQgIF9fTlJfcnRfc2lncmV0dXJuCisrICAgb3IgMHg5MzA1IDB4YzMxMCAweDIwMGIgMHgyMDBiIDB4MjAwYiAweDIwMGIgMHgyMDBiIDB4MDBhZC4KKysKKysgICBUaGUgZWZmZWN0IGlzIHRvIGNhbGwgdGhlIHN5c3RlbSBjYWxsIHJ0X3NpZ3JldHVybi4gICovCisrCisrI2RlZmluZSBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMAkJTU9WVyg3KQkJLyogTW92ZSBtZW0gd29yZCBhdCBQQys3IHRvIFIzICovCisrI2RlZmluZSBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMQkJVFJBUDE2CQkvKiBTeXNjYWxsIHcvbm8gYXJncyAoTlIgaW4gUjMpICovCisrI2RlZmluZSBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMgkJT1JfUjBfUjAJLyogb3IgcjAscjAgKGluc2VydCB0byBhdm9pZCBoYXJkd2FyZSBidWcpICovCisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IGxpbnV4X3J0X3NpZ3RyYW1wX2NvZGVbXSA9CisreworKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjAsCisrICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMSwKKysgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04yLAorKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjIsCisrICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMiwKKysgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04yLAorKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjIsCisrICBfX05SX3J0X3NpZ3JldHVybgorK307CisrCisrI2RlZmluZSBMSU5VWF9SVF9TSUdUUkFNUF9MRU4gKHNpemVvZiBsaW51eF9ydF9zaWd0cmFtcF9jb2RlKQorKworKy8qIElmIFBDIGlzIGluIGEgUlQgc2lndHJhbXAgcm91dGluZSwgcmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBzdGFydAorKyAgIG9mIHRoZSByb3V0aW5lLiAgT3RoZXJ3aXNlLCByZXR1cm4gMC4gICovCisrCisrc3RhdGljIENPUkVfQUREUgorK3NoX2xpbnV4X3J0X3NpZ3RyYW1wX3N0YXJ0IChzdHJ1Y3QgZnJhbWVfaW5mbyAqbmV4dF9mcmFtZSkKKyt7CisrICBDT1JFX0FERFIgcGMgPSBnZXRfZnJhbWVfcGMgKG5leHRfZnJhbWUpOworKyAgZ2RiX2J5dGUgYnVmW0xJTlVYX1JUX1NJR1RSQU1QX0xFTl07CisrCisrICAvKiBXZSBvbmx5IHJlY29nbml6ZSBhIHNpZ25hbCB0cmFtcG9saW5lIGlmIFBDIGlzIGF0IHRoZSBzdGFydCBvZgorKyAgICAgb25lIG9mIHRoZSB0d28gaW5zdHJ1Y3Rpb25zLiAgV2Ugb3B0aW1pemUgZm9yIGZpbmRpbmcgdGhlIFBDIGF0CisrICAgICB0aGUgc3RhcnQsIGFzIHdpbGwgYmUgdGhlIGNhc2Ugd2hlbiB0aGUgdHJhbXBvbGluZSBpcyBub3QgdGhlCisrICAgICBmaXJzdCBmcmFtZSBvbiB0aGUgc3RhY2suICBXZSBhc3N1bWUgdGhhdCBpbiB0aGUgY2FzZSB3aGVyZSB0aGUKKysgICAgIFBDIGlzIG5vdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGluc3RydWN0aW9uIHNlcXVlbmNlLCB0aGVyZSB3aWxsIGJlCisrICAgICBhIGZldyB0cmFpbGluZyByZWFkYWJsZSBieXRlcyBvbiB0aGUgc3RhY2suICAqLworKworKyAgaWYgKCFzYWZlX2ZyYW1lX3Vud2luZF9tZW1vcnkgKG5leHRfZnJhbWUsIHBjLCBidWYsIExJTlVYX1JUX1NJR1RSQU1QX0xFTikpCisrICAgIHJldHVybiAwOworKworKyAgaWYgKGJ1ZlswXSAhPSBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMCkKKysgICAgeworKyAgICAgIGlmIChidWZbMF0gIT0gTElOVVhfUlRfU0lHVFJBTVBfSU5TTjEpCisrCXJldHVybiAwOworKworKyAgICAgIHBjIC09IDI7CisrCisrICAgICAgaWYgKCFzYWZlX2ZyYW1lX3Vud2luZF9tZW1vcnkgKG5leHRfZnJhbWUsIHBjLCBidWYsCisrCQkJCSAgICAgTElOVVhfUlRfU0lHVFJBTVBfTEVOKSkKKysJcmV0dXJuIDA7CisrICAgIH0KKysKKysgIGlmIChtZW1jbXAgKGJ1ZiwgbGludXhfcnRfc2lndHJhbXBfY29kZSwgTElOVVhfUlRfU0lHVFJBTVBfTEVOKSAhPSAwKQorKyAgICByZXR1cm4gMDsKKysKKysgIHJldHVybiBwYzsKKyt9CisrCisrLyogUmV0dXJuIHdoZXRoZXIgUEMgaXMgaW4gYSBHTlUvTGludXggc2lndHJhbXAgcm91dGluZS4gICovCisrCisrc3RhdGljIGludAorK3NoX2xpbnV4X3NpZ3RyYW1wX3AgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lKQorK3sKKysgIENPUkVfQUREUiBwYyA9IGdldF9mcmFtZV9wYyAodGhpc19mcmFtZSk7CisrICBjaGFyICpuYW1lOworKworKyAgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChwYywgJm5hbWUsIE5VTEwsIE5VTEwpOworKworKyAgLyogSWYgd2UgaGF2ZSBOQU1FLCB3ZSBjYW4gb3B0aW1pemUgdGhlIHNlYXJjaC4gIFRoZSB0cmFtcG9saW5lcyBhcmUKKysgICAgIG5hbWVkIF9fcmVzdG9yZSBhbmQgX19yZXN0b3JlX3J0LiAgSG93ZXZlciwgdGhleSBhcmVuJ3QgZHluYW1pY2FsbHkKKysgICAgIGV4cG9ydGVkIGZyb20gdGhlIHNoYXJlZCBDIGxpYnJhcnksIHNvIHRoZSB0cmFtcG9saW5lIG1heSBhcHBlYXIgdG8KKysgICAgIGJlIHBhcnQgb2YgdGhlIHByZWNlZGluZyBmdW5jdGlvbi4gIFRoaXMgc2hvdWxkIGFsd2F5cyBiZSBzaWdhY3Rpb24sCisrICAgICBfX3NpZ2FjdGlvbiwgb3IgX19saWJjX3NpZ2FjdGlvbiAoYWxsIGFsaWFzZXMgdG8gdGhlIHNhbWUgZnVuY3Rpb24pLiAgKi8KKysgIGlmIChuYW1lID09IE5VTEwgfHwgc3Ryc3RyIChuYW1lLCAic2lnYWN0aW9uIikgIT0gTlVMTCkKKysgICAgcmV0dXJuIChzaF9saW51eF9zaWd0cmFtcF9zdGFydCAodGhpc19mcmFtZSkgIT0gMAorKwkgICAgfHwgc2hfbGludXhfcnRfc2lndHJhbXBfc3RhcnQgKHRoaXNfZnJhbWUpICE9IDApOworKworKyAgcmV0dXJuIChzdHJjbXAgKCJfX3Jlc3RvcmUiLCBuYW1lKSA9PSAwCisrCSAgfHwgc3RyY21wICgiX19yZXN0b3JlX3J0IiwgbmFtZSkgPT0gMCk7CisrfQorKworKy8qIE9mZnNldCB0byBzdHJ1Y3Qgc2lnY29udGV4dCBpbiB1Y29udGV4dCwgZnJvbSA8YXNtL3Vjb250ZXh0Lmg+LiAgKi8KKysjZGVmaW5lIFNIX0xJTlVYX1VDT05URVhUX1NJR0NPTlRFWFRfT0ZGU0VUIDEyCisrCisrCisrLyogQXNzdW1pbmcgTkVYVF9GUkFNRSBpcyBhIGZyYW1lIGZvbGxvd2luZyBhIEdOVS9MaW51eCBzaWd0cmFtcAorKyAgIHJvdXRpbmUsIHJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgYXNzb2NpYXRlZCBzaWdjb250ZXh0IHN0cnVjdHVyZS4gICovCisrCisrc3RhdGljIENPUkVfQUREUgorK3NoX2xpbnV4X3NpZ2NvbnRleHRfYWRkciAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUpCisreworKyAgQ09SRV9BRERSIHBjOworKyAgQ09SRV9BRERSIHNwOworKworKyAgc3AgPSBnZXRfZnJhbWVfcmVnaXN0ZXJfdW5zaWduZWQgKHRoaXNfZnJhbWUsIFNQX1JFR05VTSk7CisrCisrICBwYyA9IHNoX2xpbnV4X3NpZ3RyYW1wX3N0YXJ0ICh0aGlzX2ZyYW1lKTsKKysgIGlmIChwYykKKysgICAgeworKyAgICAgIHJldHVybiBzcDsKKysgICAgfQorKworKyAgcGMgPSBzaF9saW51eF9ydF9zaWd0cmFtcF9zdGFydCAodGhpc19mcmFtZSk7CisrICBpZiAocGMpCisrICAgIHsKKysgICAgICBDT1JFX0FERFIgdWNvbnRleHRfYWRkcjsKKysKKysgICAgICAvKiBUaGUgc2lnY29udGV4dCBzdHJ1Y3R1cmUgaXMgcGFydCBvZiB0aGUgdXNlciBjb250ZXh0LiAgQQorKwkgcG9pbnRlciB0byB0aGUgdXNlciBjb250ZXh0IGlzIHBhc3NlZCBhcyB0aGUgdGhpcmQgYXJndW1lbnQKKysJIHRvIHRoZSBzaWduYWwgaGFuZGxlci4gICovCisrICAgICAgdWNvbnRleHRfYWRkciA9IGdldF9mcmFtZV9yZWdpc3Rlcl91bnNpZ25lZCAodGhpc19mcmFtZSwgQVJHMF9SRUdOVU0rMik7CisrICAgICAgcmV0dXJuIHVjb250ZXh0X2FkZHIgKyBTSF9MSU5VWF9VQ09OVEVYVF9TSUdDT05URVhUX09GRlNFVDsKKysgICAgfQorKworKyAgZXJyb3IgKCJDb3VsZG4ndCByZWNvZ25pemUgc2lnbmFsIHRyYW1wb2xpbmUuIik7CisrICByZXR1cm4gMDsKKyt9CisrCisrLyogU2lnbmFsIHRyYW1wb2xpbmVzLiAgKi8KKytleHRlcm4gc3RydWN0IHNoX2ZyYW1lX2NhY2hlICpzaF9hbGxvY19mcmFtZV9jYWNoZSAodm9pZCk7CisrCisrc3RhdGljIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqCisrc2hfbGludXhfc2lndHJhbXBfZnJhbWVfY2FjaGUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSkKKyt7CisrICBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKmNhY2hlOworKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2V0X2N1cnJlbnRfYXJjaCAoKSk7CisrICBDT1JFX0FERFIgc2lnY29udGV4dF9hZGRyOworKworKyAgaWYgKCp0aGlzX2NhY2hlKQorKyAgICByZXR1cm4gKnRoaXNfY2FjaGU7CisrCisrICBjYWNoZSA9IHNoX2FsbG9jX2ZyYW1lX2NhY2hlICgpOworKworKyAgY2FjaGUtPmJhc2UgPSBnZXRfZnJhbWVfcmVnaXN0ZXJfdW5zaWduZWQgKHRoaXNfZnJhbWUsIFNQX1JFR05VTSk7CisrICBzaWdjb250ZXh0X2FkZHIgPSB0ZGVwLT5zaWdjb250ZXh0X2FkZHIgKHRoaXNfZnJhbWUpOworKyAgaWYgKHRkZXAtPnNjX3JlZ19vZmZzZXQpCisrICAgIHsKKysgICAgICBpbnQgaTsKKysKKysgICAgICBnZGJfYXNzZXJ0ICh0ZGVwLT5zY19udW1fcmVncyA8PSBTSF9OVU1fUkVHUyk7CisrCisrICAgICAgZm9yIChpID0gMDsgaSA8IHRkZXAtPnNjX251bV9yZWdzOyBpKyspCisrCWlmICh0ZGVwLT5zY19yZWdfb2Zmc2V0W2ldICE9IC0xKQorKwkgIGNhY2hlLT5zYXZlZF9yZWdzW2ldID0gc2lnY29udGV4dF9hZGRyICsgdGRlcC0+c2NfcmVnX29mZnNldFtpXTsKKysgICAgfQorKworKyAgKnRoaXNfY2FjaGUgPSBjYWNoZTsKKysgIHJldHVybiBjYWNoZTsKKyt9CisrCisrc3RhdGljIHZvaWQKKytzaF9saW51eF9zaWd0cmFtcF9mcmFtZV90aGlzX2lkIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUsCisrCQkJICAgICBzdHJ1Y3QgZnJhbWVfaWQgKnRoaXNfaWQpCisreworKyAgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICpjYWNoZSA9CisrICAgIHNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX2NhY2hlICh0aGlzX2ZyYW1lLCB0aGlzX2NhY2hlKTsKKysKKysgICgqdGhpc19pZCkgPSBmcmFtZV9pZF9idWlsZCAoY2FjaGUtPmJhc2UgKyA2NCwgY2FjaGUtPnBjKTsKKyt9CisrCisrZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqIHNoX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKCk7Cisrc3RhdGljIHN0cnVjdCB2YWx1ZSAqCisrc2hfbGludXhfc2lndHJhbXBfZnJhbWVfcHJldl9yZWdpc3RlciAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsCisrICAgICAgICAgICAgICAgICAgIHZvaWQgKip0aGlzX2NhY2hlLCBpbnQgcmVnbnVtKQorK3sKKysgIHNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX2NhY2hlICh0aGlzX2ZyYW1lLCB0aGlzX2NhY2hlKTsKKysKKysgIHJldHVybiBzaF9mcmFtZV9wcmV2X3JlZ2lzdGVyICh0aGlzX2ZyYW1lLCB0aGlzX2NhY2hlLCByZWdudW0pOworK30KKysKKytzdGF0aWMgaW50Cisrc2hfbGludXhfc2lndHJhbXBfZnJhbWVfc25pZmZlciAoY29uc3Qgc3RydWN0IGZyYW1lX3Vud2luZCAqc2VsZiwKKysgICAgICAgICAgICAgICAgIHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLAorKyAgICAgICAgICAgICAgICAgdm9pZCAqKnRoaXNfcHJvbG9ndWVfY2FjaGUpCisreworKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2V0X2ZyYW1lX2FyY2ggKHRoaXNfZnJhbWUpKTsKKysKKysgIC8qIFdlIHNob3VsZG4ndCBldmVuIGJvdGhlciBpZiB3ZSBkb24ndCBoYXZlIGEgc2lnY29udGV4dF9hZGRyCisrICAgICBoYW5kbGVyLiAgKi8KKysgIGlmICh0ZGVwLT5zaWdjb250ZXh0X2FkZHIgPT0gTlVMTCkKKysgICAgcmV0dXJuIDA7CisrCisrICBpZiAodGRlcC0+c2lndHJhbXBfcCAhPSBOVUxMKQorKyAgICB7CisrICAgICAgaWYgKHRkZXAtPnNpZ3RyYW1wX3AgKHRoaXNfZnJhbWUpKQorKyAgICByZXR1cm4gMTsKKysgICAgfQorKworKyAgcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZnJhbWVfdW53aW5kIHNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3Vud2luZCA9CisreworKyAgU0lHVFJBTVBfRlJBTUUsCisrICBzaF9saW51eF9zaWd0cmFtcF9mcmFtZV90aGlzX2lkLAorKyAgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfcHJldl9yZWdpc3RlciwKKysgIE5VTEwsCisrICBzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9zbmlmZmVyCisrfTsKKysKKysvKiBTdXBwbHkgcmVnaXN0ZXIgUkVHTlVNIGZyb20gdGhlIGJ1ZmZlciBzcGVjaWZpZWQgYnkgR1JFR1MgYW5kIExFTgorKyAgIGluIHRoZSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgc2V0IFJFR1NFVCB0byByZWdpc3RlciBjYWNoZQorKyAgIFJFR0NBQ0hFLiAgSWYgUkVHTlVNIGlzIC0xLCBkbyB0aGlzIGZvciBhbGwgcmVnaXN0ZXJzIGluIFJFR1NFVC4gICovCisrCisrdm9pZAorK3NoX3N1cHBseV9ncmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCisrICAgICAgICAgICAgIGludCByZWdudW0sIGNvbnN0IHZvaWQgKmdyZWdzLCBzaXplX3QgbGVuKQorK3sKKysgIGNvbnN0IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKHJlZ3NldC0+YXJjaCk7CisrICBjb25zdCBjaGFyICpyZWdzID0gZ3JlZ3M7CisrICBpbnQgaTsKKysKKysgIGdkYl9hc3NlcnQgKGxlbiA9PSB0ZGVwLT5zaXplb2ZfZ3JlZ3NldCk7CisrCisrICBmb3IgKGkgPSAwOyBpIDwgdGRlcC0+Z3JlZ3NldF9udW1fcmVnczsgaSsrKQorKyAgICB7CisrICAgICAgaWYgKChyZWdudW0gPT0gaSB8fCByZWdudW0gPT0gLTEpCisrICAgICAgJiYgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0W2ldICE9IC0xKQorKyAgICByZWdjYWNoZV9yYXdfc3VwcGx5IChyZWdjYWNoZSwgaSwgcmVncyArIHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldFtpXSk7CisrICAgIH0KKyt9CisrCisrLyogQ29sbGVjdCByZWdpc3RlciBSRUdOVU0gZnJvbSB0aGUgcmVnaXN0ZXIgY2FjaGUgUkVHQ0FDSEUgYW5kIHN0b3JlCisrICAgaXQgaW4gdGhlIGJ1ZmZlciBzcGVjaWZpZWQgYnkgR1JFR1MgYW5kIExFTiBhcyBkZXNjcmliZWQgYnkgdGhlCisrICAgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIHNldCBSRUdTRVQuICBJZiBSRUdOVU0gaXMgLTEsIGRvIHRoaXMgZm9yCisrICAgYWxsIHJlZ2lzdGVycyBpbiBSRUdTRVQuICAqLworKworK3ZvaWQKKytzaF9jb2xsZWN0X2dyZWdzZXQgKGNvbnN0IHN0cnVjdCByZWdzZXQgKnJlZ3NldCwKKysgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCisrICAgICAgICAgICAgICBpbnQgcmVnbnVtLCB2b2lkICpncmVncywgc2l6ZV90IGxlbikKKyt7CisrICBjb25zdCBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChyZWdzZXQtPmFyY2gpOworKyAgY2hhciAqcmVncyA9IGdyZWdzOworKyAgaW50IGk7CisrCisrICBnZGJfYXNzZXJ0IChsZW4gPT0gdGRlcC0+c2l6ZW9mX2dyZWdzZXQpOworKworKyAgZm9yIChpID0gMDsgaSA8IHRkZXAtPmdyZWdzZXRfbnVtX3JlZ3M7IGkrKykKKysgICAgeworKyAgICAgIGlmICgocmVnbnVtID09IGkgfHwgcmVnbnVtID09IC0xKQorKyAgICAgICYmIHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldFtpXSAhPSAtMSkKKysgICAgcmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCBpLCByZWdzICsgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0W2ldKTsKKysgICAgfQorK30KKysKKysvKiBTdXBwbHkgcmVnaXN0ZXIgUkVHTlVNIGZyb20gdGhlIGJ1ZmZlciBzcGVjaWZpZWQgYnkgRlBSRUdTIGFuZCBMRU4KKysgICBpbiB0aGUgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXIgc2V0IFJFR1NFVCB0byByZWdpc3RlciBjYWNoZQorKyAgIFJFR0NBQ0hFLiAgSWYgUkVHTlVNIGlzIC0xLCBkbyB0aGlzIGZvciBhbGwgcmVnaXN0ZXJzIGluIFJFR1NFVC4gICovCisrCisrc3RhdGljIHZvaWQKKytzaF9zdXBwbHlfZnByZWdzZXQgKGNvbnN0IHN0cnVjdCByZWdzZXQgKnJlZ3NldCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKysgICAgICAgICAgICAgIGludCByZWdudW0sIGNvbnN0IHZvaWQgKmZwcmVncywgc2l6ZV90IGxlbikKKyt7CisrICBjb25zdCBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChyZWdzZXQtPmFyY2gpOworKyAgY29uc3QgY2hhciAqcmVncyA9IGZwcmVnczsKKysgIGludCBpOworKworKyAgZ2RiX2Fzc2VydCAobGVuID09IHRkZXAtPnNpemVvZl9mcHJlZ3NldCk7CisrICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKKysgICAgeworKyAgICAgIGlmIChyZWdudW0gPT0gaSsyNSB8fCByZWdudW0gPT0gLTEpCisrICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCBpKzI1LCByZWdzICsgaSo0KTsKKysgICAgfQorKyAgaWYgKHJlZ251bSA9PSBGUFNDUl9SRUdOVU0gfHwgcmVnbnVtID09IC0xKQorKyAgICByZWdjYWNoZV9yYXdfc3VwcGx5IChyZWdjYWNoZSwgRlBTQ1JfUkVHTlVNLCByZWdzICsgMzIqNCk7CisrICBpZiAocmVnbnVtID09IEZQVUxfUkVHTlVNIHx8IHJlZ251bSA9PSAtMSkKKysgICAgcmVnY2FjaGVfcmF3X3N1cHBseSAocmVnY2FjaGUsIEZQVUxfUkVHTlVNLCByZWdzICsgMzMqNCk7CisrfQorKworKy8qIENvbGxlY3QgcmVnaXN0ZXIgUkVHTlVNIGZyb20gdGhlIHJlZ2lzdGVyIGNhY2hlIFJFR0NBQ0hFIGFuZCBzdG9yZQorKyAgIGl0IGluIHRoZSBidWZmZXIgc3BlY2lmaWVkIGJ5IEZQUkVHUyBhbmQgTEVOIGFzIGRlc2NyaWJlZCBieSB0aGUKKysgICBmbG9hdGluZy1wb2ludCByZWdpc3RlciBzZXQgUkVHU0VULiAgSWYgUkVHTlVNIGlzIC0xLCBkbyB0aGlzIGZvcgorKyAgIGFsbCByZWdpc3RlcnMgaW4gUkVHU0VULiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3NoX2NvbGxlY3RfZnByZWdzZXQgKGNvbnN0IHN0cnVjdCByZWdzZXQgKnJlZ3NldCwKKysgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorKyAgICAgICAgICAgICAgIGludCByZWdudW0sIHZvaWQgKmZwcmVncywgc2l6ZV90IGxlbikKKyt7CisrICBjb25zdCBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChyZWdzZXQtPmFyY2gpOworKyAgY2hhciAqcmVncyA9IGZwcmVnczsKKysgIGludCBpOworKworKyAgZ2RiX2Fzc2VydCAobGVuID09IHRkZXAtPnNpemVvZl9mcHJlZ3NldCk7CisrICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKKysgICAgeworKyAgICAgIGlmIChyZWdudW0gPT0gaSsyNSB8fCByZWdudW0gPT0gLTEpCisrICAgIHJlZ2NhY2hlX3Jhd19jb2xsZWN0IChyZWdjYWNoZSwgaSsyNSwgcmVncyArIGkqNCk7CisrICAgIH0KKysgIGlmIChyZWdudW0gPT0gRlBTQ1JfUkVHTlVNIHx8IHJlZ251bSA9PSAtMSkKKysgICAgcmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCBGUFNDUl9SRUdOVU0sIHJlZ3MgKyAzMio0KTsKKysgIGlmIChyZWdudW0gPT0gRlBVTF9SRUdOVU0gfHwgcmVnbnVtID09IC0xKQorKyAgICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIEZQVUxfUkVHTlVNLCByZWdzICsgMzMqNCk7CisrfQorKworKy8qIFJldHVybiB0aGUgYXBwcm9wcmlhdGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgY29yZSBzZWN0aW9uIGlkZW50aWZpZWQKKysgICBieSBTRUNUX05BTUUgYW5kIFNFQ1RfU0laRS4gICovCisrCisrY29uc3Qgc3RydWN0IHJlZ3NldCAqCisrc2hfbGludXhfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2VjdF9uYW1lLCBzaXplX3Qgc2VjdF9zaXplKQorK3sKKysgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOworKworKyAgaWYgKHN0cmNtcCAoc2VjdF9uYW1lLCAiLnJlZyIpID09IDAgJiYgc2VjdF9zaXplID09IHRkZXAtPnNpemVvZl9ncmVnc2V0KQorKyAgICB7CisrICAgICAgaWYgKHRkZXAtPmdyZWdzZXQgPT0gTlVMTCkKKysgICAgdGRlcC0+Z3JlZ3NldCA9IHJlZ3NldF9hbGxvYyAoZ2RiYXJjaCwgc2hfc3VwcGx5X2dyZWdzZXQsCisrICAgICAgICAgICAgICAgICAgICAgIHNoX2NvbGxlY3RfZ3JlZ3NldCk7CisrICAgICAgcmV0dXJuIHRkZXAtPmdyZWdzZXQ7CisrICAgIH0KKysKKysgIGlmICgoc3RyY21wIChzZWN0X25hbWUsICIucmVnMiIpID09IDAgJiYgc2VjdF9zaXplID09IHRkZXAtPnNpemVvZl9mcHJlZ3NldCkpCisrICAgIHsKKysgICAgICBpZiAodGRlcC0+ZnByZWdzZXQgPT0gTlVMTCkKKysgICAgdGRlcC0+ZnByZWdzZXQgPSByZWdzZXRfYWxsb2MgKGdkYmFyY2gsIHNoX3N1cHBseV9mcHJlZ3NldCwKKysgICAgICAgICAgICAgICAgICAgICAgIHNoX2NvbGxlY3RfZnByZWdzZXQpOworKyAgICAgIHJldHVybiB0ZGVwLT5mcHJlZ3NldDsKKysgICAgfQorKworKyAgcmV0dXJuIE5VTEw7CisrfQorKworKy8qIFRoZSByZWdpc3RlciBzZXRzIHVzZWQgaW4gR05VL0xpbnV4IEVMRiBjb3JlLWR1bXBzIGFyZSBpZGVudGljYWwgdG8KKysgICB0aGUgcmVnaXN0ZXIgc2V0cyBpbiBgc3RydWN0IHVzZXInIHRoYXQgYXJlIHVzZWQgZm9yIGEub3V0CisrICAgY29yZS1kdW1wcy4gIFRoZXNlIGFyZSBhbHNvIHVzZWQgYnkgcHRyYWNlKDIpLiAgVGhlIGNvcnJlc3BvbmRpbmcKKysgICB0eXBlcyBhcmUgYGVsZl9ncmVnc2V0X3QnIGZvciB0aGUgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycyAod2l0aAorKyAgIGBlbGZfZ3JlZ190JyB0aGUgdHlwZSBvZiBhIHNpbmdsZSBHUCByZWdpc3RlcikgYW5kIGBlbGZfZnByZWdzZXRfdCcKKysgICBmb3IgdGhlIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4KKysKKysgICBUaG9zZSB0eXBlcyB1c2VkIHRvIGJlIGF2YWlsYWJsZSB1bmRlciB0aGUgbmFtZXMgYGdyZWdzZXRfdCcgYW5kCisrICAgYGZwcmVnc2V0X3QnIHRvbywgYW5kIEdEQiB1c2VkIHRob3NlIG5hbWVzIGluIHRoZSBwYXN0LiAgQnV0IHRob3NlCisrICAgbmFtZXMgYXJlIG5vdyB1c2VkIGZvciB0aGUgcmVnaXN0ZXIgc2V0cyB1c2VkIGluIHRoZSBgbWNvbnRleHRfdCcKKysgICB0eXBlLCB3aGljaCBoYXZlIGEgZGlmZmVyZW50IHNpemUgYW5kIGxheW91dC4gICovCisrCisrLyogTWFwcGluZyBiZXR3ZWVuIHRoZSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzIGluIGBzdHJ1Y3QgdXNlcicKKysgICBmb3JtYXQgYW5kIEdEQidzIHJlZ2lzdGVyIGNhY2hlIGxheW91dC4gICovCisrCisrLyogRnJvbSA8c3lzL3JlZy5oPi4gICovCisrc3RhdGljIGludCBzaF9saW51eF9ncmVnc2V0X3JlZ19vZmZzZXRbXSA9CisreworKyAwLAk0LAk4LAkxMiwJMTYsCTIwLAkyNCwJMjgsCisrIDMyLAkzNiwJNDAsCTQ0LAk0OCwJNTIsCTU2LAk2MCwKKysKKysgUkVHX1BDKjQsICAgUkVHX1BSKjQsICAgUkVHX0dCUio0LCAgLTEsCisrIFJFR19NQUNIKjQsIFJFR19NQUNMKjQsIFJFR19TUio0LAorK307CisrCisrLyogTWFwcGluZyBiZXR3ZWVuIHRoZSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzIGluIGBzdHJ1Y3QKKysgICBzaWdjb250ZXh0JyBmb3JtYXQgYW5kIEdEQidzIHJlZ2lzdGVyIGNhY2hlIGxheW91dC4gICovCisrCisrLyogRnJvbSA8YXNtL3NpZ2NvbnRleHQuaD4uICAqLworK3N0YXRpYyBpbnQgc2hfbGludXhfc2NfcmVnX29mZnNldFtdID0KKyt7CisrIDQsCTgsCTEyLAkxNiwJMjAsCTI0LAkyOCwJMzIsCisrIDM2LAk0MCwJNDQsCTQ4LAk1MiwJNTYsCTYwLAk2NCwKKysgNjgsCTcyLAk4MCwJLTEsCisrIDg0LAk4OCwJNzYKKyt9OworKworIHN0YXRpYyB2b2lkCisgc2hfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCisgeworKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7CisrICBiZmQgYWJmZDsKKysKKysgIHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldCA9IHNoX2xpbnV4X2dyZWdzZXRfcmVnX29mZnNldDsKKysgIHRkZXAtPmdyZWdzZXRfbnVtX3JlZ3MgPSBBUlJBWV9TSVpFIChzaF9saW51eF9ncmVnc2V0X3JlZ19vZmZzZXQpOworKyAgdGRlcC0+c2l6ZW9mX2dyZWdzZXQgPSAyMyAqIDQ7CisrCisrICB0ZGVwLT5qYl9wY19vZmZzZXQgPSAzMjsgICAgIC8qIEZyb20gPGJpdHMvc2V0am1wLmg+LiAgKi8KKysKKysgIHRkZXAtPnNpZ3RyYW1wX3AgPSBzaF9saW51eF9zaWd0cmFtcF9wOworKyAgdGRlcC0+c2lnY29udGV4dF9hZGRyID0gc2hfbGludXhfc2lnY29udGV4dF9hZGRyOworKyAgdGRlcC0+c2NfcmVnX29mZnNldCA9IHNoX2xpbnV4X3NjX3JlZ19vZmZzZXQ7CisrICB0ZGVwLT5zY19udW1fcmVncyA9IEFSUkFZX1NJWkUgKHNoX2xpbnV4X3NjX3JlZ19vZmZzZXQpOworKworKyAgZnJhbWVfdW53aW5kX2FwcGVuZF91bndpbmRlcihnZGJhcmNoLCAmc2hfbGludXhfc2lndHJhbXBfZnJhbWVfdW53aW5kKTsKKysKKysgIC8qIElmIHdlIGhhdmUgYSByZWdpc3RlciBtYXBwaW5nLCBlbmFibGUgdGhlIGdlbmVyaWMgY29yZSBmaWxlCisrICAgICBzdXBwb3J0LCB1bmxlc3MgaXQgaGFzIGFscmVhZHkgYmVlbiBlbmFibGVkLiAgKi8KKysgIGlmICh0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXQKKysgICAgICAmJiAhZ2RiYXJjaF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb25fcCAoZ2RiYXJjaCkpCisrICAgIHNldF9nZGJhcmNoX3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbiAoZ2RiYXJjaCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoX2xpbnV4X3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbik7CisrCisgICBsaW51eF9pbml0X2FiaSAoaW5mbywgZ2RiYXJjaCk7CisgCisgICAvKiBHTlUvTGludXggdXNlcyBTVlI0LXN0eWxlIHNoYXJlZCBsaWJyYXJpZXMuICAqLworZGlmZiAtLWdpdCBhL2dkYi9zaC10ZGVwLmMgYi9nZGIvc2gtdGRlcC5jCitpbmRleCBlM2FlZTBhYzI4Li41OTU4Y2YzNjg4IDEwMDY0NAorLS0tIGEvZ2RiL3NoLXRkZXAuYworKysrIGIvZ2RiL3NoLXRkZXAuYworQEAgLTIxLDYgKzIxLDkgQEAKKyAgICBzYWNAY3lnbnVzLmNvbS4gICovCisgCisgI2luY2x1ZGUgImRlZnMuaCIKKysjaW5jbHVkZSAiYXJjaC11dGlscy5oIgorKyNpbmNsdWRlICJjb21tYW5kLmgiCisrI2luY2x1ZGUgImR1bW15LWZyYW1lLmgiCisgI2luY2x1ZGUgImZyYW1lLmgiCisgI2luY2x1ZGUgImZyYW1lLWJhc2UuaCIKKyAjaW5jbHVkZSAiZnJhbWUtdW53aW5kLmgiCitAQCAtNjYsMjMgKzY5LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHNoX2NjX2VudW1bXSA9IHsKKyAKKyBzdGF0aWMgY29uc3QgY2hhciAqc2hfYWN0aXZlX2NhbGxpbmdfY29udmVudGlvbiA9IHNoX2NjX2djYzsKKyAKKy0jZGVmaW5lIFNIX05VTV9SRUdTIDY3CistCistc3RydWN0IHNoX2ZyYW1lX2NhY2hlCisteworLSAgLyogQmFzZSBhZGRyZXNzLiAgKi8KKy0gIENPUkVfQUREUiBiYXNlOworLSAgTE9OR0VTVCBzcF9vZmZzZXQ7CistICBDT1JFX0FERFIgcGM7CistCistICAvKiBGbGFnIHNob3dpbmcgdGhhdCBhIGZyYW1lIGhhcyBiZWVuIGNyZWF0ZWQgaW4gdGhlIHByb2xvZ3VlIGNvZGUuICAqLworLSAgaW50IHVzZXNfZnA7CistCistICAvKiBTYXZlZCByZWdpc3RlcnMuICAqLworLSAgQ09SRV9BRERSIHNhdmVkX3JlZ3NbU0hfTlVNX1JFR1NdOworLSAgQ09SRV9BRERSIHNhdmVkX3NwOworLX07CistCisgc3RhdGljIGludAorIHNoX2lzX3JlbmVzYXNfY2FsbGluZ19jb252ZW50aW9uIChzdHJ1Y3QgdHlwZSAqZnVuY190eXBlKQorIHsKK0BAIC0xMDUwLDcgKzEwMzYsNyBAQCBzaF90cmVhdF9hc19mbHRfcCAoc3RydWN0IHR5cGUgKnR5cGUpCisgICAgIHJldHVybiAwOworICAgLyogT3RoZXJ3aXNlIGlmIHRoZSB0eXBlIG9mIHRoYXQgbWVtYmVyIGlzIGZsb2F0LCB0aGUgd2hvbGUgdHlwZSBpcworICAgICAgdHJlYXRlZCBhcyBmbG9hdC4gICovCistICBpZiAoVFlQRV9DT0RFIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIDApKSA9PSBUWVBFX0NPREVfRkxUKQorKyAgaWYgKFRZUEVfQ09ERSAoY2hlY2tfdHlwZWRlZiAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCAwKSkpID09IFRZUEVfQ09ERV9GTFQpCisgICAgIHJldHVybiAxOworICAgLyogT3RoZXJ3aXNlIGl0J3Mgbm90IHRyZWF0ZWQgYXMgZmxvYXQuICAqLworICAgcmV0dXJuIDA7CitAQCAtMTEwMCw3ICsxMDg2LDcgQEAgc2hfcHVzaF9kdW1teV9jYWxsX2ZwdSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgICAgICBpbiBmb3VyIHJlZ2lzdGVycyBhdmFpbGFibGUuICBMb29wIHRocnUgYXJncyBmcm9tIGZpcnN0IHRvIGxhc3QuICAqLworICAgZm9yIChhcmdudW0gPSAwOyBhcmdudW0gPCBuYXJnczsgYXJnbnVtKyspCisgICAgIHsKKy0gICAgICB0eXBlID0gdmFsdWVfdHlwZSAoYXJnc1thcmdudW1dKTsKKysgICAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnc1thcmdudW1dKSk7CisgICAgICAgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpOworICAgICAgIHZhbCA9IHNoX2p1c3RpZnlfdmFsdWVfaW5fcmVnIChnZGJhcmNoLCBhcmdzW2FyZ251bV0sIGxlbik7CisgCitAQCAtMTgzNSw3ICsxODIxLDcgQEAgc2hfZHdhcmYyX2ZyYW1lX2luaXRfcmVnIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSwKKyAgICAgcmVnLT5ob3cgPSBEV0FSRjJfRlJBTUVfUkVHX1VOREVGSU5FRDsKKyB9CisgCistc3RhdGljIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqCisrc3RydWN0IHNoX2ZyYW1lX2NhY2hlICoKKyBzaF9hbGxvY19mcmFtZV9jYWNoZSAodm9pZCkKKyB7CisgICBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKmNhY2hlOworQEAgLTE4NjIsNyArMTg0OCw3IEBAIHNoX2FsbG9jX2ZyYW1lX2NhY2hlICh2b2lkKQorICAgcmV0dXJuIGNhY2hlOworIH0KKyAKKy1zdGF0aWMgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICoKKytzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKgorIHNoX2ZyYW1lX2NhY2hlIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUpCisgeworICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAodGhpc19mcmFtZSk7CitAQCAtMTkyOSw5ICsxOTE1LDkgQEAgc2hfZnJhbWVfY2FjaGUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSkKKyAgIHJldHVybiBjYWNoZTsKKyB9CisgCistc3RhdGljIHN0cnVjdCB2YWx1ZSAqCistc2hfZnJhbWVfcHJldl9yZWdpc3RlciAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsCistCQkJdm9pZCAqKnRoaXNfY2FjaGUsIGludCByZWdudW0pCisrc3RydWN0IHZhbHVlICoKKytzaF9mcmFtZV9wcmV2X3JlZ2lzdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUsCisrCQkJaW50IHJlZ251bSkKKyB7CisgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoICh0aGlzX2ZyYW1lKTsKKyAgIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqY2FjaGUgPSBzaF9mcmFtZV9jYWNoZSAodGhpc19mcmFtZSwgdGhpc19jYWNoZSk7CitAQCAtMTk0NSw3ICsxOTMxLDcgQEAgc2hfZnJhbWVfcHJldl9yZWdpc3RlciAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsCisgICAgICB0aGUgY3VycmVudCBmcmFtZS4gIEZyb2IgcmVnbnVtIHNvIHRoYXQgd2UgcHVsbCB0aGUgdmFsdWUgZnJvbQorICAgICAgdGhlIGNvcnJlY3QgcGxhY2UuICAqLworICAgaWYgKHJlZ251bSA9PSBnZGJhcmNoX3BjX3JlZ251bSAoZ2RiYXJjaCkpCistICAgIHJlZ251bSA9IFBSX1JFR05VTTsKKysgICAgcmVnbnVtID0gUFJfUkVHTlVNOyAvKiBYWFg6IHJlYWxseT8gKi8KKyAKKyAgIGlmIChyZWdudW0gPCBTSF9OVU1fUkVHUyAmJiBjYWNoZS0+c2F2ZWRfcmVnc1tyZWdudW1dICE9IC0xKQorICAgICByZXR1cm4gZnJhbWVfdW53aW5kX2dvdF9tZW1vcnkgKHRoaXNfZnJhbWUsIHJlZ251bSwKK0BAIC0yMjM0LDggKzIyMjAsOCBAQCBzaF9yZXR1cm5faW5fZmlyc3RfaGlkZGVuX3BhcmFtX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorIHN0YXRpYyBzdHJ1Y3QgZ2RiYXJjaCAqCisgc2hfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykKKyB7CistICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaDsKKyAgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXA7CisrICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaDsKKyAKKyAgIC8qIElmIHRoZXJlIGlzIGFscmVhZHkgYSBjYW5kaWRhdGUsIHVzZSBpdC4gICovCisgICBhcmNoZXMgPSBnZGJhcmNoX2xpc3RfbG9va3VwX2J5X2luZm8gKGFyY2hlcywgJmluZm8pOworQEAgLTIyNDcsNiArMjIzMywxOCBAQCBzaF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQorICAgdGRlcCA9IFhDTkVXIChzdHJ1Y3QgZ2RiYXJjaF90ZGVwKTsKKyAgIGdkYmFyY2ggPSBnZGJhcmNoX2FsbG9jICgmaW5mbywgdGRlcCk7CisgCisrICAvKiBHZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzLiAgKi8KKysgIHRkZXAtPmdyZWdzZXQgPSBOVUxMOworKyAgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0ID0gTlVMTDsKKysgIHRkZXAtPmdyZWdzZXRfbnVtX3JlZ3MgPSAyMzsKKysgIHRkZXAtPnNpemVvZl9ncmVnc2V0ID0gMDsKKysKKysgIC8qIEZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4gICovCisrICB0ZGVwLT5mcHJlZ3NldCA9IE5VTEw7CisrICB0ZGVwLT5zaXplb2ZfZnByZWdzZXQgPSAzNCo0OworKworKyAgdGRlcC0+amJfcGNfb2Zmc2V0ID0gLTE7CisrCisgICBzZXRfZ2RiYXJjaF9zaG9ydF9iaXQgKGdkYmFyY2gsIDIgKiBUQVJHRVRfQ0hBUl9CSVQpOworICAgc2V0X2dkYmFyY2hfaW50X2JpdCAoZ2RiYXJjaCwgNCAqIFRBUkdFVF9DSEFSX0JJVCk7CisgICBzZXRfZ2RiYXJjaF9sb25nX2JpdCAoZ2RiYXJjaCwgNCAqIFRBUkdFVF9DSEFSX0JJVCk7CitAQCAtMjM5OCwxMCArMjM5NiwxMSBAQCBzaF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQorICAgICAgIGJyZWFrOworICAgICB9CisgCisrICBkd2FyZjJfYXBwZW5kX3Vud2luZGVycyAoZ2RiYXJjaCk7CisrCisgICAvKiBIb29rIGluIEFCSS1zcGVjaWZpYyBvdmVycmlkZXMsIGlmIHRoZXkgaGF2ZSBiZWVuIHJlZ2lzdGVyZWQuICAqLworICAgZ2RiYXJjaF9pbml0X29zYWJpIChpbmZvLCBnZGJhcmNoKTsKKyAKKy0gIGR3YXJmMl9hcHBlbmRfdW53aW5kZXJzIChnZGJhcmNoKTsKKyAgIGZyYW1lX3Vud2luZF9hcHBlbmRfdW53aW5kZXIgKGdkYmFyY2gsICZzaF9zdHViX3Vud2luZCk7CisgICBmcmFtZV91bndpbmRfYXBwZW5kX3Vud2luZGVyIChnZGJhcmNoLCAmc2hfZnJhbWVfdW53aW5kKTsKKyAKK2RpZmYgLS1naXQgYS9nZGIvc2gtdGRlcC5oIGIvZ2RiL3NoLXRkZXAuaAoraW5kZXggNzZlMmU3NmUzOS4uMjcxMGY2MzAxMCAxMDA2NDQKKy0tLSBhL2dkYi9zaC10ZGVwLmgKKysrKyBiL2dkYi9zaC10ZGVwLmgKK0BAIC0yMSw2ICsyMSwxMiBAQAorIAorIC8qIENvbnRyaWJ1dGVkIGJ5IFN0ZXZlIENoYW1iZXJsYWluIHNhY0BjeWdudXMuY29tLiAgKi8KKyAKKytzdHJ1Y3QgZnJhbWVfaW5mbzsKKytzdHJ1Y3QgZ2RiYXJjaDsKKytzdHJ1Y3QgcmVnZ3JvdXA7Cisrc3RydWN0IHJlZ3NldDsKKytzdHJ1Y3QgcmVnY2FjaGU7CisrCisgLyogUmVnaXN0ZXJzIGZvciBhbGwgU0ggdmFyaWFudHMuICBVc2VkIGFsc28gYnkgc2gzLXJvbS5jLiAgKi8KKyBlbnVtCisgICB7CitAQCAtMjksNiArMzUsNyBAQCBlbnVtCisgICAgIEFSRzBfUkVHTlVNID0gNCwKKyAgICAgQVJHTEFTVF9SRUdOVU0gPSA3LAorICAgICBGUF9SRUdOVU0gPSAxNCwKKysgICAgU1BfUkVHTlVNID0gMTUsCisgICAgIFBDX1JFR05VTSA9IDE2LAorICAgICBQUl9SRUdOVU0gPSAxNywKKyAgICAgR0JSX1JFR05VTSA9IDE4LAorQEAgLTgxLDYgKzg4LDI0IEBAIGVudW0KKyAgICAgRlYwX1JFR05VTSA9IDc2LAorICAgICBGVl9MQVNUX1JFR05VTSA9IDc5CisgICB9OworKyNkZWZpbmUgU0hfTlVNX1JFR1MgNjcKKysKKytzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUKKyt7CisrICAvKiBCYXNlIGFkZHJlc3MuICAqLworKyAgQ09SRV9BRERSIGJhc2U7CisrICBMT05HRVNUIHNwX29mZnNldDsKKysgIENPUkVfQUREUiBwYzsKKysKKysgIC8qIEZsYWcgc2hvd2luZyB0aGF0IGEgZnJhbWUgaGFzIGJlZW4gY3JlYXRlZCBpbiB0aGUgcHJvbG9ndWUgY29kZS4gKi8KKysgIGludCB1c2VzX2ZwOworKworKyAgLyogU2F2ZWQgcmVnaXN0ZXJzLiAgKi8KKysgIENPUkVfQUREUiBzYXZlZF9yZWdzW1NIX05VTV9SRUdTXTsKKysgIENPUkVfQUREUiBzYXZlZF9zcDsKKyt9OworKworK2V4dGVybiBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKnNoX2ZyYW1lX2NhY2hlIChzdHJ1Y3QgZnJhbWVfaW5mbyAqbmV4dF9mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUpOworIAorIC8qIFRoaXMgc3RydWN0dXJlIGRlc2NyaWJlcyBhIHJlZ2lzdGVyIGluIGEgY29yZS1maWxlLiAgKi8KKyBzdHJ1Y3Qgc2hfY29yZWZpbGVfcmVnbWFwCitAQCAtODksOCArMTE0LDMyIEBAIHN0cnVjdCBzaF9jb3JlZmlsZV9yZWdtYXAKKyAgIHVuc2lnbmVkIGludCBvZmZzZXQ7CisgfTsKKyAKKysvKiBzaCBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgaW5mb3JtYXRpb24uICAqLworIHN0cnVjdCBnZGJhcmNoX3RkZXAKKyB7CisrICAvKiBHZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzLiAgKi8KKysgIHN0cnVjdCByZWdzZXQgKmdyZWdzZXQ7CisrICBpbnQgKmdyZWdzZXRfcmVnX29mZnNldDsKKysgIGludCBncmVnc2V0X251bV9yZWdzOworKyAgc2l6ZV90IHNpemVvZl9ncmVnc2V0OworKworKyAgLyogRmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLiAgKi8KKysgIHN0cnVjdCByZWdzZXQgKmZwcmVnc2V0OworKyAgc2l6ZV90IHNpemVvZl9mcHJlZ3NldDsKKysKKysgIC8qIE9mZnNldCBvZiBzYXZlZCBQQyBpbiBqbXBfYnVmLiAgKi8KKysgIGludCBqYl9wY19vZmZzZXQ7CisrCisrICAvKiBEZXRlY3Qgc2lndHJhbXAuICAqLworKyAgaW50ICgqc2lndHJhbXBfcCkgKHN0cnVjdCBmcmFtZV9pbmZvICopOworKworKyAgLyogR2V0IGFkZHJlc3Mgb2Ygc2lnY29udGV4dCBmb3Igc2lndHJhbXAuICAqLworKyAgQ09SRV9BRERSICgqc2lnY29udGV4dF9hZGRyKSAoc3RydWN0IGZyYW1lX2luZm8gKik7CisrCisrICAvKiBPZmZzZXQgb2YgcmVnaXN0ZXJzIGluIGBzdHJ1Y3Qgc2lnY29udGV4dCcuICAqLworKyAgaW50ICpzY19yZWdfb2Zmc2V0OworKyAgaW50IHNjX251bV9yZWdzOworKworICAgLyogTm9uLU5VTEwgd2hlbiBkZWJ1Z2dpbmcgZnJvbSBhIGNvcmUgZmlsZS4gIFByb3ZpZGVzIHRoZSBvZmZzZXQKKyAgICAgIHdoZXJlIGVhY2ggZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIGlzIHN0b3JlZCBpbnNpZGUgdGhlIGFzc29jaWF0ZWQKKyAgICAgIGNvcmUgZmlsZSBzZWN0aW9uLiAgKi8KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAKK2luZGV4IDQ5MTQ0OThmOTguLjZlMjVjYmVkMTggMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cAorQEAgLTExNiw2ICsxMTYsMTEgQEAgc3dpdGNoIC1nbG9iIC0tIFtpc3RhcmdldF0geworICAgICAgICAgICAgIGFwcGVuZCBsaW5rLWZsYWdzICIgLW0gZWxmMzJwcGMiCisgICAgICAgICB9CisgICAgIH0KKysgICAgInNoKi1saW51eCoiIHsKKysgICAgICAgIHNldCBhc20tYXJjaCBzaC1saW51eAorKyAgICAgICAgc2V0IGFzbS1mbGFncyAiLUkke3NyY2Rpcn0vJHtzdWJkaXJ9IC1JJHtvYmpkaXJ9LyR7c3ViZGlyfSIKKysJc2V0IGRlYnVnLWZsYWdzICItZ2R3YXJmLTIiCisrICAgIH0KKyAgICAgInNoKi0qLSoiIHsKKyAgICAgICAgIHNldCBhc20tYXJjaCBzaAorIAlzZXQgZGVidWctZmxhZ3MgIi1nZHdhcmYtMiIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hc20vc2guaW5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL3NoLmluYworaW5kZXggYTRhNWZjNTQ1ZS4uODllZmVkNzc5NSAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9zaC5pbmMKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9zaC5pbmMKK0BAIC00MCw5ICs0MCw4IEBACisgCW1vdi5sICAgLkxjb25zdFxALHIxCisgCWJyYQkuTGFmdGVyY29uc3RcQAorIAlub3AKKy0Jbm9wCistLkxjb25zdFxAOgorIAkuYWxpZ24JMgorKy5MY29uc3RcQDoKKyAJLmxvbmcJXHN1YnIKKyAJLmFsaWduCTEKKyAuTGFmdGVyY29uc3RcQDoKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTEuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5jCitpbmRleCA0MjRlMWI4MzI3Li4wZGUyZTdiNjMzIDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmMKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5jCitAQCAtMSw2ICsxLDkgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c2lnbmFsLmg+CisgCisrI2lmZGVmIF9fc2hfXworKyNkZWZpbmUgc2lnbmFsKGEsYikgICAgLyogU2lnbmFscyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdGFyZ2V0IC0gbWFrZSB0aGVtIGdvIGF3YXkgKi8KKysjZW5kaWYKKyAKKyB2b2lkCisgaGFuZGxlX1VTUjEgKGludCBzaWcpCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuYworaW5kZXggNDI0ZTFiODMyNy4uOTUyYWFmMjE4YSAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5jCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuYworQEAgLTEsNiArMSwxMCBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzaWduYWwuaD4KKyAKKysjaWZkZWYgX19zaF9fCisrI2RlZmluZSBzaWduYWwoYSxiKSAgICAvKiBTaWduYWxzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB0YXJnZXQgLSBtYWtlIHRoZW0gZ28gYXdheSAqLworKyNlbmRpZgorKworIAorIHZvaWQKKyBoYW5kbGVfVVNSMSAoaW50IHNpZykKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2FsbC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYworaW5kZXggODFmM2IwOGQ2Yi4uMTU3NGIyZDZjYiAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnYWxsLmMKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnYWxsLmMKK0BAIC0xLDYgKzEsOSBAQAorICNpbmNsdWRlIDxzaWduYWwuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgCisrI2lmZGVmIF9fc2hfXworKyNkZWZpbmUgc2lnbmFsKGEsYikgICAgLyogU2lnbmFscyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdGFyZ2V0IC0gbWFrZSB0aGVtIGdvIGF3YXkgKi8KKysjZW5kaWYKKyAKKyAvKiBTaWduYWwgaGFuZGxlcnMsIHdlIHNldCBicmVha3BvaW50cyBpbiB0aGVtIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZQorICAgIHNpZ25hbHMgcmVhbGx5IGdldCBkZWxpdmVyZWQuICAqLworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWduYWxzLmMKK2luZGV4IDc1NjYwNjg4MGYuLjEyMDVhOWJjOWMgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYworKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWduYWxzLmMKK0BAIC0zLDYgKzMsMTAgQEAKKyAjaW5jbHVkZSA8c2lnbmFsLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorIAorKyNpZmRlZiBfX3NoX18KKysjZGVmaW5lIHNpZ25hbChhLGIpICAgIC8qIFNpZ25hbHMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHRhcmdldCAtIG1ha2UgdGhlbSBnbyBhd2F5ICovCisrI2RlZmluZSBhbGFybShhKSAgICAgICAvKiBEaXR0byBmb3IgYWxhcm0oKSAqLworKyNlbmRpZgorIAorIHN0YXRpYyBpbnQgY291bnQgPSAwOworIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA0LXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDQtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTcwZDUxMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDQtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gZGEzMDM3MGMxZTNmZjc3MjhhODU3ZTExOWUwNTI5YTlmMDk3MDg2ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE4OjMyOjE0IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBwYy9wdHJhY2U6IERlZmluZSBwdF9yZWdzIHVhcGlfcHRfcmVncyBvbiAhR0xJQkMgc3lzdGVtcwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotLS0tCi0gZ2RiL2dkYnNlcnZlci9saW51eC1wcGMtbG93LmMgfCA2ICsrKysrKwotIGdkYi9uYXQvcHBjLWxpbnV4LmggICAgICAgICAgIHwgNiArKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jIGIvZ2RiL2dkYnNlcnZlci9saW51eC1wcGMtbG93LmMKLWluZGV4IDFiNjk1ZTUzLi4xOTc4MzQ3YyAxMDA2NDQKLS0tLSBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jCi0rKysgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYwotQEAgLTIzLDcgKzIzLDEzIEBACi0gI2luY2x1ZGUgImVsZi9jb21tb24uaCIKLSAjaW5jbHVkZSA8c3lzL3Vpby5oPgotICNpbmNsdWRlIDxlbGYuaD4KLSsjaWYgIWRlZmluZWQoX19HTElCQ19fKQotKyMgZGVmaW5lIHB0X3JlZ3MgdWFwaV9wdF9yZWdzCi0rI2VuZGlmCi0gI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSsjaWYgIWRlZmluZWQoX19HTElCQ19fKQotKyMgdW5kZWYgcHRfcmVncwotKyNlbmRpZgotIAotICNpbmNsdWRlICJhcmNoL3BwYy1saW51eC1jb21tb24uaCIKLSAjaW5jbHVkZSAiYXJjaC9wcGMtbGludXgtdGRlc2MuaCIKLWRpZmYgLS1naXQgYS9nZGIvbmF0L3BwYy1saW51eC5oIGIvZ2RiL25hdC9wcGMtbGludXguaAotaW5kZXggZjE1NjFiM2IuLjQwMzk5MzYxIDEwMDY0NAotLS0tIGEvZ2RiL25hdC9wcGMtbGludXguaAotKysrIGIvZ2RiL25hdC9wcGMtbGludXguaAotQEAgLTE4LDcgKzE4LDEzIEBACi0gI2lmbmRlZiBOQVRfUFBDX0xJTlVYX0gKLSAjZGVmaW5lIE5BVF9QUENfTElOVVhfSAotIAotKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCi0rIyBkZWZpbmUgcHRfcmVncyB1YXBpX3B0X3JlZ3MKLSsjZW5kaWYKLSAjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCi0rIyB1bmRlZiBwdF9yZWdzCi0rI2VuZGlmCi0gI2luY2x1ZGUgPGFzbS9jcHV0YWJsZS5oPgotIAotIC8qIFRoaXMgc29tZXRpbWVzIGlzbid0IGRlZmluZWQuICAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA1LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDUtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg0MGNhZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDUtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkxNCArMCwwIEBACi1Gcm9tIDIxNTQ4NmI1M2E3YTZkZmNhMDY0Y2QyZTkxOTZhOWRlNmVkNmYwYzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAyOjMxOjEyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMTFdIEFkZCBzdXBwb3J0IGZvciBSZW5lc2FzIFNIIChzaDQpIGFyY2hpdGVjdHVyZS4KLQotZ2RiICg3LjQtMX5jdnMyMDExMTExNy4yKSBleHBlcmltZW50YWw7IHVyZ2VuY3k9bG93Ci0gLgotICAgKiBBZGQgUmVuZXNhcyBTSCAoc2g0KSBzdXBwb3J0IChDbG9zZXM6ICM1NzYyNDIpCi0gICAgIC0gVGhhbmtzIE5vYnVoaXJvIEl3YW1hdHN1LCBUYWthc2hpIFlvc2hpaS4KLUF1dGhvcjogSGVjdG9yIE9yb24gPHp1bWJpQGRlYmlhbi5vcmc+Ci1CdWctRGViaWFuOiBodHRwOi8vYnVncy5kZWJpYW4ub3JnLzU3NjI0MgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnZGIvTWFrZWZpbGUuaW4gICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwotIGdkYi9jb25maWd1cmUuaG9zdCAgICAgICAgICAgICAgICAgICB8ICAgMSArCi0gZ2RiL3NoLWxpbnV4LXRkZXAuYyAgICAgICAgICAgICAgICAgIHwgNTE5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGdkYi9zaC10ZGVwLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICA1MyArKy0KLSBnZGIvc2gtdGRlcC5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDkgKysrCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwIHwgICA1ICsKLSBnZGIvdGVzdHN1aXRlL2dkYi5hc20vc2guaW5jICAgICAgICAgfCAgIDMgKy0KLSBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTEuYyAgICAgfCAgIDMgKwotIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5jICAgICB8ICAgNCArCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYyAgICAgIHwgICAzICsKLSBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYyAgICAgfCAgIDQgKwotIDExIGZpbGVzIGNoYW5nZWQsIDYxNyBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgotaW5kZXggYzc2YTRlNDM5NC4uOTIxZmRhZGI0OSAxMDA2NDQKLS0tLSBhL2dkYi9NYWtlZmlsZS5pbgotKysrIGIvZ2RiL01ha2VmaWxlLmluCi1AQCAtMjMyNiw2ICsyMzI2LDggQEAgQUxMREVQRklMRVMgPSBcCi0gCXNoLW5ic2QtbmF0LmMgXAotIAlzaC1uYnNkLXRkZXAuYyBcCi0gCXNoLXRkZXAuYyBcCi0rCXNoLWxpbnV4LXRkZXAuYyBcCi0rCXNoLWxpbnV4LW5hdC5jIFwKLSAJc29sMi10ZGVwLmMgXAotIAlzb2xpYi1haXguYyBcCi0gCXNvbGliLXNwdS5jIFwKLWRpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlLmhvc3QgYi9nZGIvY29uZmlndXJlLmhvc3QKLWluZGV4IDIzYTJmMTYzOTkuLjM5YTg4NmVjNTMgMTAwNjQ0Ci0tLS0gYS9nZGIvY29uZmlndXJlLmhvc3QKLSsrKyBiL2dkYi9jb25maWd1cmUuaG9zdAotQEAgLTE1Myw2ICsxNTMsNyBAQCByaXNjdiotKi1saW51eCopCWdkYl9ob3N0PWxpbnV4IDs7Ci0gCi0gczM5MCotKi1saW51eCopCQlnZGJfaG9zdD1saW51eCA7OwotIAotK3NoKi0qLWxpbnV4KikJCWdkYl9ob3N0PWxpbnV4IDs7Ci0gc2gqLSotbmV0YnNkZWxmKiB8IHNoKi0qLWtuZXRic2QqLWdudSkKLSAJCQlnZGJfaG9zdD1uYnNkIDs7Ci0gc2gqLSotb3BlbmJzZCopCQlnZGJfaG9zdD1uYnNkIDs7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3NoLWxpbnV4LXRkZXAuYyBiL2dkYi9zaC1saW51eC10ZGVwLmMKLWluZGV4IGRiOTM5Njc5MTAuLjQxMDljNTQ5ZTggMTAwNjQ0Ci0tLS0gYS9nZGIvc2gtbGludXgtdGRlcC5jCi0rKysgYi9nZGIvc2gtbGludXgtdGRlcC5jCi1AQCAtMTgsMTQgKzE4LDM3IEBACi0gICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotIAotICNpbmNsdWRlICJkZWZzLmgiCi0rI2luY2x1ZGUgImdkYmNvcmUuaCIKLSsjaW5jbHVkZSAiZnJhbWUuaCIKLSsjaW5jbHVkZSAiZnJhbWUtYmFzZS5oIgotKyNpbmNsdWRlICJmcmFtZS11bndpbmQuaCIKLSsjaW5jbHVkZSAiZHdhcmYyLWZyYW1lLmgiCi0rI2luY2x1ZGUgInZhbHVlLmgiCi0rI2luY2x1ZGUgInJlZ2NhY2hlLmgiCi0rI2luY2x1ZGUgImluZmVyaW9yLmgiCi0gI2luY2x1ZGUgIm9zYWJpLmgiCi0gCi0rI2luY2x1ZGUgInJlZ2dyb3Vwcy5oIgotKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi0rI2luY2x1ZGUgImZsb2F0Zm9ybWF0LmgiCi0gI2luY2x1ZGUgInNvbGliLXN2cjQuaCIKLSAjaW5jbHVkZSAic3ltdGFiLmgiCi0rI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLSsjaW5jbHVkZSAiY29tbWFuZC5oIgotKyNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCi0gCi0gI2luY2x1ZGUgInRyYWQtZnJhbWUuaCIKLSAjaW5jbHVkZSAidHJhbXAtZnJhbWUuaCIKLSAKLSsjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0rI2luY2x1ZGUgPHN5cy91c2VyLmg+Ci0rI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0rCi0rI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSsKLSsjaW5jbHVkZSAicmVnc2V0LmgiCi0gI2luY2x1ZGUgImdsaWJjLXRkZXAuaCIKLSAjaW5jbHVkZSAic2gtdGRlcC5oIgotICNpbmNsdWRlICJsaW51eC10ZGVwLmgiCi1AQCAtMTgwLDkgKzIwMyw1MDUgQEAgc3RhdGljIHN0cnVjdCB0cmFtcF9mcmFtZSBzaF9saW51eF9ydF9zaWdyZXR1cm5fdHJhbXBfZnJhbWUgPSB7Ci0gICBzaF9saW51eF9ydF9zaWdyZXR1cm5faW5pdAotIH07Ci0gCi0rLyogUmVjb2duaXppbmcgc2lnbmFsIGhhbmRsZXIgZnJhbWVzLiAgKi8KLSsKLSsvKiBHTlUvTGludXggaGFzIHR3byBmbGF2b3JzIG9mIHNpZ25hbHMuICBOb3JtYWwgc2lnbmFsIGhhbmRsZXJzLCBhbmQKLSsgICAicmVhbHRpbWUiIChSVCkgc2lnbmFscy4gIFRoZSBSVCBzaWduYWxzIGNhbiBwcm92aWRlIGFkZGl0aW9uYWwKLSsgICBpbmZvcm1hdGlvbiB0byB0aGUgc2lnbmFsIGhhbmRsZXIgaWYgdGhlIFNBX1NJR0lORk8gZmxhZyBpcyBzZXQKLSsgICB3aGVuIGVzdGFibGlzaGluZyBhIHNpZ25hbCBoYW5kbGVyIHVzaW5nIGBzaWdhY3Rpb24nLiAgSXQgaXMgbm90Ci0rICAgdW5saWtlbHkgdGhhdCBmdXR1cmUgdmVyc2lvbnMgb2YgR05VL0xpbnV4IHdpbGwgc3VwcG9ydCBTQV9TSUdJTkZPCi0rICAgZm9yIG5vcm1hbCBzaWduYWxzIHRvby4gICovCi0rCi0rLyogV2hlbiB0aGUgU0ggTGludXgga2VybmVsIGNhbGxzIGEgc2lnbmFsIGhhbmRsZXIgYW5kIHRoZQotKyAgIFNBX1JFU1RPUkVSIGZsYWcgaXNuJ3Qgc2V0LCB0aGUgcmV0dXJuIGFkZHJlc3MgcG9pbnRzIHRvIGEgYml0IG9mCi0rICAgY29kZSBvbiB0aGUgc3RhY2suICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgd2hldGhlciB0aGUgUEMgYXBwZWFycyB0bwotKyAgIGJlIHdpdGhpbiB0aGlzIGJpdCBvZiBjb2RlLgotKwotKyAgIFRoZSBpbnN0cnVjdGlvbiBzZXF1ZW5jZSBmb3Igbm9ybWFsIHNpZ25hbHMgaXMKLSsgICAgICAgbW92LncgIDFmLHIzCi0rICAgICAgIHRyYXBhICAjMTYKLSsgICAgICAgb3IgICAgIHIwLCByMAotKyAgICAgICBvciAgICAgcjAsIHIwCi0rICAgICAgIG9yICAgICByMCwgcjAKLSsgICAgICAgb3IgICAgIHIwLCByMAotKyAgICAgICBvciAgICAgcjAsIHIwCi0rICAgIDE6IC53b3JkICBfX05SX3NpZ3JldHVybgotKyAgIG9yIDB4OTMwNSAweGMzMTAgMHgyMDBiIDB4MjAwYiAweDIwMGIgMHgyMDBiIDB4MjAwYiAweDAwNzcuCi0rCi0rICAgQ2hlY2tpbmcgZm9yIHRoZSBjb2RlIHNlcXVlbmNlIHNob3VsZCBiZSBzb21ld2hhdCByZWxpYWJsZSwgYmVjYXVzZQotKyAgIHRoZSBlZmZlY3QgaXMgdG8gY2FsbCB0aGUgc3lzdGVtIGNhbGwgc2lncmV0dXJuLiAgVGhpcyBpcyB1bmxpa2VseQotKyAgIHRvIG9jY3VyIGFueXdoZXJlIG90aGVyIHRoYW4gYSBzaWduYWwgdHJhbXBvbGluZS4KLSsKLSsgICBJdCBraW5kIG9mIHN1Y2tzIHRoYXQgd2UgaGF2ZSB0byByZWFkIG1lbW9yeSBmcm9tIHRoZSBwcm9jZXNzIGluCi0rICAgb3JkZXIgdG8gaWRlbnRpZnkgYSBzaWduYWwgdHJhbXBvbGluZSwgYnV0IHRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZQotKyAgIGFueSBvdGhlciB3YXkuICBUaGUgUENfSU5fU0lHVFJBTVAgbWFjcm8gaW4gdG0tbGludXguaCBhcnJhbmdlcyB0bwotKyAgIG9ubHkgY2FsbCB1cyBpZiBubyBmdW5jdGlvbiBuYW1lIGNvdWxkIGJlIGlkZW50aWZpZWQsIHdoaWNoIHNob3VsZAotKyAgIGJlIHRoZSBjYXNlIHNpbmNlIHRoZSBjb2RlIGlzIG9uIHRoZSBzdGFjay4KLSsKLSsgICBEZXRlY3Rpb24gb2Ygc2lnbmFsIHRyYW1wb2xpbmVzIGZvciBoYW5kbGVycyB0aGF0IHNldCB0aGUKLSsgICBTQV9SRVNUT1JFUiBmbGFnIGlzIGluIGdlbmVyYWwgbm90IHBvc3NpYmxlLiAgVW5mb3J0dW5hdGVseSB0aGlzIGlzCi0rICAgd2hhdCB0aGUgR05VIEMgTGlicmFyeSBoYXMgYmVlbiBkb2luZyBmb3IgcXVpdGUgc29tZSB0aW1lIG5vdy4KLSsgICBIb3dldmVyLCBhcyBvZiB2ZXJzaW9uIDIuMS4yLCB0aGUgR05VIEMgTGlicmFyeSB1c2VzIHNpZ25hbAotKyAgIHRyYW1wb2xpbmVzIChuYW1lZCBfX3Jlc3RvcmUgYW5kIF9fcmVzdG9yZV9ydCkgdGhhdCBhcmUgaWRlbnRpY2FsCi0rICAgdG8gdGhlIG9uZXMgdXNlZCBieSB0aGUga2VybmVsLiAgVGhlcmVmb3JlLCB0aGVzZSB0cmFtcG9saW5lcyBhcmUKLSsgICBzdXBwb3J0ZWQgdG9vLiAgKi8KLSsKLSsjZGVmaW5lIE1PVlcobikJICgweDkzMDB8KChuKS0yKSkJLyogTW92ZSBtZW0gd29yZCBhdCBQQytuIHRvIFIzICovCi0rI2RlZmluZSBUUkFQMTYJIDB4YzMxMAkJCS8qIFN5c2NhbGwgdy9ubyBhcmdzIChOUiBpbiBSMykgKi8KLSsjZGVmaW5lIE9SX1IwX1IwIDB4MjAwYgkJCS8qIG9yIHIwLHIwIChpbnNlcnQgdG8gYXZvaWQgaGFyZHdhcmUgYnVnKSAqLwotKwotKyNkZWZpbmUgTElOVVhfU0lHVFJBTVBfSU5TTjAJTU9WVyg3KQkJLyogTW92ZSBtZW0gd29yZCBhdCBQQys3IHRvIFIzICovCi0rI2RlZmluZSBMSU5VWF9TSUdUUkFNUF9JTlNOMQlUUkFQMTYJCS8qIFN5c2NhbGwgdy9ubyBhcmdzIChOUiBpbiBSMykgKi8KLSsjZGVmaW5lIExJTlVYX1NJR1RSQU1QX0lOU04yCU9SX1IwX1IwCS8qIG9yIHIwLHIwIChpbnNlcnQgdG8gYXZvaWQgaGFyZHdhcmUgYnVnKSAqLwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBsaW51eF9zaWd0cmFtcF9jb2RlW10gPQotK3sKLSsgIExJTlVYX1NJR1RSQU1QX0lOU04wLAotKyAgTElOVVhfU0lHVFJBTVBfSU5TTjEsCi0rICBMSU5VWF9TSUdUUkFNUF9JTlNOMiwKLSsgIExJTlVYX1NJR1RSQU1QX0lOU04yLAotKyAgTElOVVhfU0lHVFJBTVBfSU5TTjIsCi0rICBMSU5VWF9TSUdUUkFNUF9JTlNOMiwKLSsgIExJTlVYX1NJR1RSQU1QX0lOU04yLAotKyAgX19OUl9zaWdyZXR1cm4KLSt9OwotKwotKyNkZWZpbmUgTElOVVhfU0lHVFJBTVBfTEVOIChzaXplb2YgbGludXhfc2lndHJhbXBfY29kZSkKLSsKLSsvKiBJZiBQQyBpcyBpbiBhIHNpZ3RyYW1wIHJvdXRpbmUsIHJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgc3RhcnQgb2YKLSsgICB0aGUgcm91dGluZS4gIE90aGVyd2lzZSwgcmV0dXJuIDAuICAqLwotKwotK3N0YXRpYyBDT1JFX0FERFIKLStzaF9saW51eF9zaWd0cmFtcF9zdGFydCAoc3RydWN0IGZyYW1lX2luZm8gKm5leHRfZnJhbWUpCi0rewotKyAgQ09SRV9BRERSIHBjID0gZ2V0X2ZyYW1lX3BjIChuZXh0X2ZyYW1lKTsKLSsgIGdkYl9ieXRlIGJ1ZltMSU5VWF9TSUdUUkFNUF9MRU5dOwotKwotKyAgLyogV2Ugb25seSByZWNvZ25pemUgYSBzaWduYWwgdHJhbXBvbGluZSBpZiBQQyBpcyBhdCB0aGUgc3RhcnQgb2YKLSsgICAgIG9uZSBvZiB0aGUgdGhyZWUgaW5zdHJ1Y3Rpb25zLiAgV2Ugb3B0aW1pemUgZm9yIGZpbmRpbmcgdGhlIFBDIGF0Ci0rICAgICB0aGUgc3RhcnQsIGFzIHdpbGwgYmUgdGhlIGNhc2Ugd2hlbiB0aGUgdHJhbXBvbGluZSBpcyBub3QgdGhlCi0rICAgICBmaXJzdCBmcmFtZSBvbiB0aGUgc3RhY2suICBXZSBhc3N1bWUgdGhhdCBpbiB0aGUgY2FzZSB3aGVyZSB0aGUKLSsgICAgIFBDIGlzIG5vdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGluc3RydWN0aW9uIHNlcXVlbmNlLCB0aGVyZSB3aWxsIGJlCi0rICAgICBhIGZldyB0cmFpbGluZyByZWFkYWJsZSBieXRlcyBvbiB0aGUgc3RhY2suICAqLwotKwotKyAgaWYgKCFzYWZlX2ZyYW1lX3Vud2luZF9tZW1vcnkgKG5leHRfZnJhbWUsIHBjLCBidWYsIExJTlVYX1NJR1RSQU1QX0xFTikpCi0rICAgIHJldHVybiAwOwotKwotKyAgaWYgKGJ1ZlswXSAhPSBMSU5VWF9TSUdUUkFNUF9JTlNOMCkKLSsgICAgewotKyAgICAgIGlmIChidWZbMF0gIT0gTElOVVhfU0lHVFJBTVBfSU5TTjEpCi0rICAgICAgICByZXR1cm4gMDsKLSsKLSsgICAgICBwYyAtPSAyOwotKwotKyAgICAgIGlmICghc2FmZV9mcmFtZV91bndpbmRfbWVtb3J5IChuZXh0X2ZyYW1lLCBwYywgYnVmLCBMSU5VWF9TSUdUUkFNUF9MRU4pKQotKwlyZXR1cm4gMDsKLSsgICAgfQotKwotKyAgaWYgKG1lbWNtcCAoYnVmLCBsaW51eF9zaWd0cmFtcF9jb2RlLCBMSU5VWF9TSUdUUkFNUF9MRU4pICE9IDApCi0rICAgIHJldHVybiAwOwotKwotKyAgcmV0dXJuIHBjOwotK30KLSsKLSsvKiBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIHNhbWUgZm9yIFJUIHNpZ25hbHMuICBIZXJlIHRoZSBpbnN0cnVjdGlvbgotKyAgIHNlcXVlbmNlIGlzCi0rICAgICAgIG1vdi53ICAxZixyMwotKyAgICAgICB0cmFwYSAgIzE2Ci0rICAgICAgIG9yICAgICByMCwgcjAKLSsgICAgICAgb3IgICAgIHIwLCByMAotKyAgICAgICBvciAgICAgcjAsIHIwCi0rICAgICAgIG9yICAgICByMCwgcjAKLSsgICAgICAgb3IgICAgIHIwLCByMAotKyAgICAxOiAud29yZCAgX19OUl9ydF9zaWdyZXR1cm4KLSsgICBvciAweDkzMDUgMHhjMzEwIDB4MjAwYiAweDIwMGIgMHgyMDBiIDB4MjAwYiAweDIwMGIgMHgwMGFkLgotKwotKyAgIFRoZSBlZmZlY3QgaXMgdG8gY2FsbCB0aGUgc3lzdGVtIGNhbGwgcnRfc2lncmV0dXJuLiAgKi8KLSsKLSsjZGVmaW5lIExJTlVYX1JUX1NJR1RSQU1QX0lOU04wCQlNT1ZXKDcpCQkvKiBNb3ZlIG1lbSB3b3JkIGF0IFBDKzcgdG8gUjMgKi8KLSsjZGVmaW5lIExJTlVYX1JUX1NJR1RSQU1QX0lOU04xCQlUUkFQMTYJCS8qIFN5c2NhbGwgdy9ubyBhcmdzIChOUiBpbiBSMykgKi8KLSsjZGVmaW5lIExJTlVYX1JUX1NJR1RSQU1QX0lOU04yCQlPUl9SMF9SMAkvKiBvciByMCxyMCAoaW5zZXJ0IHRvIGF2b2lkIGhhcmR3YXJlIGJ1ZykgKi8KLSsKLStzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgbGludXhfcnRfc2lndHJhbXBfY29kZVtdID0KLSt7Ci0rICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMCwKLSsgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04xLAotKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjIsCi0rICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMiwKLSsgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04yLAotKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjIsCi0rICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMiwKLSsgIF9fTlJfcnRfc2lncmV0dXJuCi0rfTsKLSsKLSsjZGVmaW5lIExJTlVYX1JUX1NJR1RSQU1QX0xFTiAoc2l6ZW9mIGxpbnV4X3J0X3NpZ3RyYW1wX2NvZGUpCi0rCi0rLyogSWYgUEMgaXMgaW4gYSBSVCBzaWd0cmFtcCByb3V0aW5lLCByZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIHN0YXJ0Ci0rICAgb2YgdGhlIHJvdXRpbmUuICBPdGhlcndpc2UsIHJldHVybiAwLiAgKi8KLSsKLStzdGF0aWMgQ09SRV9BRERSCi0rc2hfbGludXhfcnRfc2lndHJhbXBfc3RhcnQgKHN0cnVjdCBmcmFtZV9pbmZvICpuZXh0X2ZyYW1lKQotK3sKLSsgIENPUkVfQUREUiBwYyA9IGdldF9mcmFtZV9wYyAobmV4dF9mcmFtZSk7Ci0rICBnZGJfYnl0ZSBidWZbTElOVVhfUlRfU0lHVFJBTVBfTEVOXTsKLSsKLSsgIC8qIFdlIG9ubHkgcmVjb2duaXplIGEgc2lnbmFsIHRyYW1wb2xpbmUgaWYgUEMgaXMgYXQgdGhlIHN0YXJ0IG9mCi0rICAgICBvbmUgb2YgdGhlIHR3byBpbnN0cnVjdGlvbnMuICBXZSBvcHRpbWl6ZSBmb3IgZmluZGluZyB0aGUgUEMgYXQKLSsgICAgIHRoZSBzdGFydCwgYXMgd2lsbCBiZSB0aGUgY2FzZSB3aGVuIHRoZSB0cmFtcG9saW5lIGlzIG5vdCB0aGUKLSsgICAgIGZpcnN0IGZyYW1lIG9uIHRoZSBzdGFjay4gIFdlIGFzc3VtZSB0aGF0IGluIHRoZSBjYXNlIHdoZXJlIHRoZQotKyAgICAgUEMgaXMgbm90IGF0IHRoZSBzdGFydCBvZiB0aGUgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UsIHRoZXJlIHdpbGwgYmUKLSsgICAgIGEgZmV3IHRyYWlsaW5nIHJlYWRhYmxlIGJ5dGVzIG9uIHRoZSBzdGFjay4gICovCi0rCi0rICBpZiAoIXNhZmVfZnJhbWVfdW53aW5kX21lbW9yeSAobmV4dF9mcmFtZSwgcGMsIGJ1ZiwgTElOVVhfUlRfU0lHVFJBTVBfTEVOKSkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICBpZiAoYnVmWzBdICE9IExJTlVYX1JUX1NJR1RSQU1QX0lOU04wKQotKyAgICB7Ci0rICAgICAgaWYgKGJ1ZlswXSAhPSBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMSkKLSsJcmV0dXJuIDA7Ci0rCi0rICAgICAgcGMgLT0gMjsKLSsKLSsgICAgICBpZiAoIXNhZmVfZnJhbWVfdW53aW5kX21lbW9yeSAobmV4dF9mcmFtZSwgcGMsIGJ1ZiwKLSsJCQkJICAgICBMSU5VWF9SVF9TSUdUUkFNUF9MRU4pKQotKwlyZXR1cm4gMDsKLSsgICAgfQotKwotKyAgaWYgKG1lbWNtcCAoYnVmLCBsaW51eF9ydF9zaWd0cmFtcF9jb2RlLCBMSU5VWF9SVF9TSUdUUkFNUF9MRU4pICE9IDApCi0rICAgIHJldHVybiAwOwotKwotKyAgcmV0dXJuIHBjOwotK30KLSsKLSsvKiBSZXR1cm4gd2hldGhlciBQQyBpcyBpbiBhIEdOVS9MaW51eCBzaWd0cmFtcCByb3V0aW5lLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rc2hfbGludXhfc2lndHJhbXBfcCAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUpCi0rewotKyAgQ09SRV9BRERSIHBjID0gZ2V0X2ZyYW1lX3BjICh0aGlzX2ZyYW1lKTsKLSsgIGNoYXIgKm5hbWU7Ci0rCi0rICBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKHBjLCAmbmFtZSwgTlVMTCwgTlVMTCk7Ci0rCi0rICAvKiBJZiB3ZSBoYXZlIE5BTUUsIHdlIGNhbiBvcHRpbWl6ZSB0aGUgc2VhcmNoLiAgVGhlIHRyYW1wb2xpbmVzIGFyZQotKyAgICAgbmFtZWQgX19yZXN0b3JlIGFuZCBfX3Jlc3RvcmVfcnQuICBIb3dldmVyLCB0aGV5IGFyZW4ndCBkeW5hbWljYWxseQotKyAgICAgZXhwb3J0ZWQgZnJvbSB0aGUgc2hhcmVkIEMgbGlicmFyeSwgc28gdGhlIHRyYW1wb2xpbmUgbWF5IGFwcGVhciB0bwotKyAgICAgYmUgcGFydCBvZiB0aGUgcHJlY2VkaW5nIGZ1bmN0aW9uLiAgVGhpcyBzaG91bGQgYWx3YXlzIGJlIHNpZ2FjdGlvbiwKLSsgICAgIF9fc2lnYWN0aW9uLCBvciBfX2xpYmNfc2lnYWN0aW9uIChhbGwgYWxpYXNlcyB0byB0aGUgc2FtZSBmdW5jdGlvbikuICAqLwotKyAgaWYgKG5hbWUgPT0gTlVMTCB8fCBzdHJzdHIgKG5hbWUsICJzaWdhY3Rpb24iKSAhPSBOVUxMKQotKyAgICByZXR1cm4gKHNoX2xpbnV4X3NpZ3RyYW1wX3N0YXJ0ICh0aGlzX2ZyYW1lKSAhPSAwCi0rCSAgICB8fCBzaF9saW51eF9ydF9zaWd0cmFtcF9zdGFydCAodGhpc19mcmFtZSkgIT0gMCk7Ci0rCi0rICByZXR1cm4gKHN0cmNtcCAoIl9fcmVzdG9yZSIsIG5hbWUpID09IDAKLSsJICB8fCBzdHJjbXAgKCJfX3Jlc3RvcmVfcnQiLCBuYW1lKSA9PSAwKTsKLSt9Ci0rCi0rLyogT2Zmc2V0IHRvIHN0cnVjdCBzaWdjb250ZXh0IGluIHVjb250ZXh0LCBmcm9tIDxhc20vdWNvbnRleHQuaD4uICAqLwotKyNkZWZpbmUgU0hfTElOVVhfVUNPTlRFWFRfU0lHQ09OVEVYVF9PRkZTRVQgMTIKLSsKLSsKLSsvKiBBc3N1bWluZyBORVhUX0ZSQU1FIGlzIGEgZnJhbWUgZm9sbG93aW5nIGEgR05VL0xpbnV4IHNpZ3RyYW1wCi0rICAgcm91dGluZSwgcmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBhc3NvY2lhdGVkIHNpZ2NvbnRleHQgc3RydWN0dXJlLiAgKi8KLSsKLStzdGF0aWMgQ09SRV9BRERSCi0rc2hfbGludXhfc2lnY29udGV4dF9hZGRyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSkKLSt7Ci0rICBDT1JFX0FERFIgcGM7Ci0rICBDT1JFX0FERFIgc3A7Ci0rCi0rICBzcCA9IGdldF9mcmFtZV9yZWdpc3Rlcl91bnNpZ25lZCAodGhpc19mcmFtZSwgU1BfUkVHTlVNKTsKLSsKLSsgIHBjID0gc2hfbGludXhfc2lndHJhbXBfc3RhcnQgKHRoaXNfZnJhbWUpOwotKyAgaWYgKHBjKQotKyAgICB7Ci0rICAgICAgcmV0dXJuIHNwOwotKyAgICB9Ci0rCi0rICBwYyA9IHNoX2xpbnV4X3J0X3NpZ3RyYW1wX3N0YXJ0ICh0aGlzX2ZyYW1lKTsKLSsgIGlmIChwYykKLSsgICAgewotKyAgICAgIENPUkVfQUREUiB1Y29udGV4dF9hZGRyOwotKwotKyAgICAgIC8qIFRoZSBzaWdjb250ZXh0IHN0cnVjdHVyZSBpcyBwYXJ0IG9mIHRoZSB1c2VyIGNvbnRleHQuICBBCi0rCSBwb2ludGVyIHRvIHRoZSB1c2VyIGNvbnRleHQgaXMgcGFzc2VkIGFzIHRoZSB0aGlyZCBhcmd1bWVudAotKwkgdG8gdGhlIHNpZ25hbCBoYW5kbGVyLiAgKi8KLSsgICAgICB1Y29udGV4dF9hZGRyID0gZ2V0X2ZyYW1lX3JlZ2lzdGVyX3Vuc2lnbmVkICh0aGlzX2ZyYW1lLCBBUkcwX1JFR05VTSsyKTsKLSsgICAgICByZXR1cm4gdWNvbnRleHRfYWRkciArIFNIX0xJTlVYX1VDT05URVhUX1NJR0NPTlRFWFRfT0ZGU0VUOwotKyAgICB9Ci0rCi0rICBlcnJvciAoIkNvdWxkbid0IHJlY29nbml6ZSBzaWduYWwgdHJhbXBvbGluZS4iKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiBTaWduYWwgdHJhbXBvbGluZXMuICAqLwotK2V4dGVybiBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKnNoX2FsbG9jX2ZyYW1lX2NhY2hlICh2b2lkKTsKLSsKLStzdGF0aWMgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICoKLStzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQotK3sKLSsgIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqY2FjaGU7Ci0rICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZXRfY3VycmVudF9hcmNoICgpKTsKLSsgIENPUkVfQUREUiBzaWdjb250ZXh0X2FkZHI7Ci0rCi0rICBpZiAoKnRoaXNfY2FjaGUpCi0rICAgIHJldHVybiAqdGhpc19jYWNoZTsKLSsKLSsgIGNhY2hlID0gc2hfYWxsb2NfZnJhbWVfY2FjaGUgKCk7Ci0rCi0rICBjYWNoZS0+YmFzZSA9IGdldF9mcmFtZV9yZWdpc3Rlcl91bnNpZ25lZCAodGhpc19mcmFtZSwgU1BfUkVHTlVNKTsKLSsgIHNpZ2NvbnRleHRfYWRkciA9IHRkZXAtPnNpZ2NvbnRleHRfYWRkciAodGhpc19mcmFtZSk7Ci0rICBpZiAodGRlcC0+c2NfcmVnX29mZnNldCkKLSsgICAgewotKyAgICAgIGludCBpOwotKwotKyAgICAgIGdkYl9hc3NlcnQgKHRkZXAtPnNjX251bV9yZWdzIDw9IFNIX05VTV9SRUdTKTsKLSsKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgdGRlcC0+c2NfbnVtX3JlZ3M7IGkrKykKLSsJaWYgKHRkZXAtPnNjX3JlZ19vZmZzZXRbaV0gIT0gLTEpCi0rCSAgY2FjaGUtPnNhdmVkX3JlZ3NbaV0gPSBzaWdjb250ZXh0X2FkZHIgKyB0ZGVwLT5zY19yZWdfb2Zmc2V0W2ldOwotKyAgICB9Ci0rCi0rICAqdGhpc19jYWNoZSA9IGNhY2hlOwotKyAgcmV0dXJuIGNhY2hlOwotK30KLSsKLStzdGF0aWMgdm9pZAotK3NoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3RoaXNfaWQgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSwKLSsJCQkgICAgIHN0cnVjdCBmcmFtZV9pZCAqdGhpc19pZCkKLSt7Ci0rICBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKmNhY2hlID0KLSsgICAgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfY2FjaGUgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUpOwotKwotKyAgKCp0aGlzX2lkKSA9IGZyYW1lX2lkX2J1aWxkIChjYWNoZS0+YmFzZSArIDY0LCBjYWNoZS0+cGMpOwotK30KLSsKLStleHRlcm4gc3RydWN0IHZhbHVlICogc2hfZnJhbWVfcHJldl9yZWdpc3RlciAoKTsKLStzdGF0aWMgc3RydWN0IHZhbHVlICoKLStzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9wcmV2X3JlZ2lzdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwKLSsgICAgICAgICAgICAgICAgICAgdm9pZCAqKnRoaXNfY2FjaGUsIGludCByZWdudW0pCi0rewotKyAgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfY2FjaGUgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUpOwotKwotKyAgcmV0dXJuIHNoX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUsIHJlZ251bSk7Ci0rfQotKwotK3N0YXRpYyBpbnQKLStzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9zbmlmZmVyIChjb25zdCBzdHJ1Y3QgZnJhbWVfdW53aW5kICpzZWxmLAotKyAgICAgICAgICAgICAgICAgc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsCi0rICAgICAgICAgICAgICAgICB2b2lkICoqdGhpc19wcm9sb2d1ZV9jYWNoZSkKLSt7Ci0rICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZXRfZnJhbWVfYXJjaCAodGhpc19mcmFtZSkpOwotKwotKyAgLyogV2Ugc2hvdWxkbid0IGV2ZW4gYm90aGVyIGlmIHdlIGRvbid0IGhhdmUgYSBzaWdjb250ZXh0X2FkZHIKLSsgICAgIGhhbmRsZXIuICAqLwotKyAgaWYgKHRkZXAtPnNpZ2NvbnRleHRfYWRkciA9PSBOVUxMKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGlmICh0ZGVwLT5zaWd0cmFtcF9wICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBpZiAodGRlcC0+c2lndHJhbXBfcCAodGhpc19mcmFtZSkpCi0rICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCBmcmFtZV91bndpbmQgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfdW53aW5kID0KLSt7Ci0rICBTSUdUUkFNUF9GUkFNRSwKLSsgIHNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3RoaXNfaWQsCi0rICBzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9wcmV2X3JlZ2lzdGVyLAotKyAgTlVMTCwKLSsgIHNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3NuaWZmZXIKLSt9OwotKwotKy8qIFN1cHBseSByZWdpc3RlciBSRUdOVU0gZnJvbSB0aGUgYnVmZmVyIHNwZWNpZmllZCBieSBHUkVHUyBhbmQgTEVOCi0rICAgaW4gdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlciBzZXQgUkVHU0VUIHRvIHJlZ2lzdGVyIGNhY2hlCi0rICAgUkVHQ0FDSEUuICBJZiBSRUdOVU0gaXMgLTEsIGRvIHRoaXMgZm9yIGFsbCByZWdpc3RlcnMgaW4gUkVHU0VULiAgKi8KLSsKLSt2b2lkCi0rc2hfc3VwcGx5X2dyZWdzZXQgKGNvbnN0IHN0cnVjdCByZWdzZXQgKnJlZ3NldCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLSsgICAgICAgICAgICAgaW50IHJlZ251bSwgY29uc3Qgdm9pZCAqZ3JlZ3MsIHNpemVfdCBsZW4pCi0rewotKyAgY29uc3Qgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAocmVnc2V0LT5hcmNoKTsKLSsgIGNvbnN0IGNoYXIgKnJlZ3MgPSBncmVnczsKLSsgIGludCBpOwotKwotKyAgZ2RiX2Fzc2VydCAobGVuID09IHRkZXAtPnNpemVvZl9ncmVnc2V0KTsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCB0ZGVwLT5ncmVnc2V0X251bV9yZWdzOyBpKyspCi0rICAgIHsKLSsgICAgICBpZiAoKHJlZ251bSA9PSBpIHx8IHJlZ251bSA9PSAtMSkKLSsgICAgICAmJiB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXRbaV0gIT0gLTEpCi0rICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCBpLCByZWdzICsgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0W2ldKTsKLSsgICAgfQotK30KLSsKLSsvKiBDb2xsZWN0IHJlZ2lzdGVyIFJFR05VTSBmcm9tIHRoZSByZWdpc3RlciBjYWNoZSBSRUdDQUNIRSBhbmQgc3RvcmUKLSsgICBpdCBpbiB0aGUgYnVmZmVyIHNwZWNpZmllZCBieSBHUkVHUyBhbmQgTEVOIGFzIGRlc2NyaWJlZCBieSB0aGUKLSsgICBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgc2V0IFJFR1NFVC4gIElmIFJFR05VTSBpcyAtMSwgZG8gdGhpcyBmb3IKLSsgICBhbGwgcmVnaXN0ZXJzIGluIFJFR1NFVC4gICovCi0rCi0rdm9pZAotK3NoX2NvbGxlY3RfZ3JlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LAotKyAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLSsgICAgICAgICAgICAgIGludCByZWdudW0sIHZvaWQgKmdyZWdzLCBzaXplX3QgbGVuKQotK3sKLSsgIGNvbnN0IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKHJlZ3NldC0+YXJjaCk7Ci0rICBjaGFyICpyZWdzID0gZ3JlZ3M7Ci0rICBpbnQgaTsKLSsKLSsgIGdkYl9hc3NlcnQgKGxlbiA9PSB0ZGVwLT5zaXplb2ZfZ3JlZ3NldCk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgdGRlcC0+Z3JlZ3NldF9udW1fcmVnczsgaSsrKQotKyAgICB7Ci0rICAgICAgaWYgKChyZWdudW0gPT0gaSB8fCByZWdudW0gPT0gLTEpCi0rICAgICAgJiYgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0W2ldICE9IC0xKQotKyAgICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIGksIHJlZ3MgKyB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXRbaV0pOwotKyAgICB9Ci0rfQotKwotKy8qIFN1cHBseSByZWdpc3RlciBSRUdOVU0gZnJvbSB0aGUgYnVmZmVyIHNwZWNpZmllZCBieSBGUFJFR1MgYW5kIExFTgotKyAgIGluIHRoZSBmbG9hdGluZy1wb2ludCByZWdpc3RlciBzZXQgUkVHU0VUIHRvIHJlZ2lzdGVyIGNhY2hlCi0rICAgUkVHQ0FDSEUuICBJZiBSRUdOVU0gaXMgLTEsIGRvIHRoaXMgZm9yIGFsbCByZWdpc3RlcnMgaW4gUkVHU0VULiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3NoX3N1cHBseV9mcHJlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAotKyAgICAgICAgICAgICAgaW50IHJlZ251bSwgY29uc3Qgdm9pZCAqZnByZWdzLCBzaXplX3QgbGVuKQotK3sKLSsgIGNvbnN0IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKHJlZ3NldC0+YXJjaCk7Ci0rICBjb25zdCBjaGFyICpyZWdzID0gZnByZWdzOwotKyAgaW50IGk7Ci0rCi0rICBnZGJfYXNzZXJ0IChsZW4gPT0gdGRlcC0+c2l6ZW9mX2ZwcmVnc2V0KTsKLSsgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKQotKyAgICB7Ci0rICAgICAgaWYgKHJlZ251bSA9PSBpKzI1IHx8IHJlZ251bSA9PSAtMSkKLSsgICAgcmVnY2FjaGVfcmF3X3N1cHBseSAocmVnY2FjaGUsIGkrMjUsIHJlZ3MgKyBpKjQpOwotKyAgICB9Ci0rICBpZiAocmVnbnVtID09IEZQU0NSX1JFR05VTSB8fCByZWdudW0gPT0gLTEpCi0rICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCBGUFNDUl9SRUdOVU0sIHJlZ3MgKyAzMio0KTsKLSsgIGlmIChyZWdudW0gPT0gRlBVTF9SRUdOVU0gfHwgcmVnbnVtID09IC0xKQotKyAgICByZWdjYWNoZV9yYXdfc3VwcGx5IChyZWdjYWNoZSwgRlBVTF9SRUdOVU0sIHJlZ3MgKyAzMyo0KTsKLSt9Ci0rCi0rLyogQ29sbGVjdCByZWdpc3RlciBSRUdOVU0gZnJvbSB0aGUgcmVnaXN0ZXIgY2FjaGUgUkVHQ0FDSEUgYW5kIHN0b3JlCi0rICAgaXQgaW4gdGhlIGJ1ZmZlciBzcGVjaWZpZWQgYnkgRlBSRUdTIGFuZCBMRU4gYXMgZGVzY3JpYmVkIGJ5IHRoZQotKyAgIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyIHNldCBSRUdTRVQuICBJZiBSRUdOVU0gaXMgLTEsIGRvIHRoaXMgZm9yCi0rICAgYWxsIHJlZ2lzdGVycyBpbiBSRUdTRVQuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hfY29sbGVjdF9mcHJlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LAotKyAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCi0rICAgICAgICAgICAgICAgaW50IHJlZ251bSwgdm9pZCAqZnByZWdzLCBzaXplX3QgbGVuKQotK3sKLSsgIGNvbnN0IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKHJlZ3NldC0+YXJjaCk7Ci0rICBjaGFyICpyZWdzID0gZnByZWdzOwotKyAgaW50IGk7Ci0rCi0rICBnZGJfYXNzZXJ0IChsZW4gPT0gdGRlcC0+c2l6ZW9mX2ZwcmVnc2V0KTsKLSsgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKQotKyAgICB7Ci0rICAgICAgaWYgKHJlZ251bSA9PSBpKzI1IHx8IHJlZ251bSA9PSAtMSkKLSsgICAgcmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCBpKzI1LCByZWdzICsgaSo0KTsKLSsgICAgfQotKyAgaWYgKHJlZ251bSA9PSBGUFNDUl9SRUdOVU0gfHwgcmVnbnVtID09IC0xKQotKyAgICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIEZQU0NSX1JFR05VTSwgcmVncyArIDMyKjQpOwotKyAgaWYgKHJlZ251bSA9PSBGUFVMX1JFR05VTSB8fCByZWdudW0gPT0gLTEpCi0rICAgIHJlZ2NhY2hlX3Jhd19jb2xsZWN0IChyZWdjYWNoZSwgRlBVTF9SRUdOVU0sIHJlZ3MgKyAzMyo0KTsKLSt9Ci0rCi0rLyogUmV0dXJuIHRoZSBhcHByb3ByaWF0ZSByZWdpc3RlciBzZXQgZm9yIHRoZSBjb3JlIHNlY3Rpb24gaWRlbnRpZmllZAotKyAgIGJ5IFNFQ1RfTkFNRSBhbmQgU0VDVF9TSVpFLiAgKi8KLSsKLStjb25zdCBzdHJ1Y3QgcmVnc2V0ICoKLStzaF9saW51eF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzZWN0X25hbWUsIHNpemVfdCBzZWN0X3NpemUpCi0rewotKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7Ci0rCi0rICBpZiAoc3RyY21wIChzZWN0X25hbWUsICIucmVnIikgPT0gMCAmJiBzZWN0X3NpemUgPT0gdGRlcC0+c2l6ZW9mX2dyZWdzZXQpCi0rICAgIHsKLSsgICAgICBpZiAodGRlcC0+Z3JlZ3NldCA9PSBOVUxMKQotKyAgICB0ZGVwLT5ncmVnc2V0ID0gcmVnc2V0X2FsbG9jIChnZGJhcmNoLCBzaF9zdXBwbHlfZ3JlZ3NldCwKLSsgICAgICAgICAgICAgICAgICAgICAgc2hfY29sbGVjdF9ncmVnc2V0KTsKLSsgICAgICByZXR1cm4gdGRlcC0+Z3JlZ3NldDsKLSsgICAgfQotKwotKyAgaWYgKChzdHJjbXAgKHNlY3RfbmFtZSwgIi5yZWcyIikgPT0gMCAmJiBzZWN0X3NpemUgPT0gdGRlcC0+c2l6ZW9mX2ZwcmVnc2V0KSkKLSsgICAgewotKyAgICAgIGlmICh0ZGVwLT5mcHJlZ3NldCA9PSBOVUxMKQotKyAgICB0ZGVwLT5mcHJlZ3NldCA9IHJlZ3NldF9hbGxvYyAoZ2RiYXJjaCwgc2hfc3VwcGx5X2ZwcmVnc2V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgc2hfY29sbGVjdF9mcHJlZ3NldCk7Ci0rICAgICAgcmV0dXJuIHRkZXAtPmZwcmVnc2V0OwotKyAgICB9Ci0rCi0rICByZXR1cm4gTlVMTDsKLSt9Ci0rCi0rLyogVGhlIHJlZ2lzdGVyIHNldHMgdXNlZCBpbiBHTlUvTGludXggRUxGIGNvcmUtZHVtcHMgYXJlIGlkZW50aWNhbCB0bwotKyAgIHRoZSByZWdpc3RlciBzZXRzIGluIGBzdHJ1Y3QgdXNlcicgdGhhdCBhcmUgdXNlZCBmb3IgYS5vdXQKLSsgICBjb3JlLWR1bXBzLiAgVGhlc2UgYXJlIGFsc28gdXNlZCBieSBwdHJhY2UoMikuICBUaGUgY29ycmVzcG9uZGluZwotKyAgIHR5cGVzIGFyZSBgZWxmX2dyZWdzZXRfdCcgZm9yIHRoZSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzICh3aXRoCi0rICAgYGVsZl9ncmVnX3QnIHRoZSB0eXBlIG9mIGEgc2luZ2xlIEdQIHJlZ2lzdGVyKSBhbmQgYGVsZl9mcHJlZ3NldF90JwotKyAgIGZvciB0aGUgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLgotKwotKyAgIFRob3NlIHR5cGVzIHVzZWQgdG8gYmUgYXZhaWxhYmxlIHVuZGVyIHRoZSBuYW1lcyBgZ3JlZ3NldF90JyBhbmQKLSsgICBgZnByZWdzZXRfdCcgdG9vLCBhbmQgR0RCIHVzZWQgdGhvc2UgbmFtZXMgaW4gdGhlIHBhc3QuICBCdXQgdGhvc2UKLSsgICBuYW1lcyBhcmUgbm93IHVzZWQgZm9yIHRoZSByZWdpc3RlciBzZXRzIHVzZWQgaW4gdGhlIGBtY29udGV4dF90JwotKyAgIHR5cGUsIHdoaWNoIGhhdmUgYSBkaWZmZXJlbnQgc2l6ZSBhbmQgbGF5b3V0LiAgKi8KLSsKLSsvKiBNYXBwaW5nIGJldHdlZW4gdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMgaW4gYHN0cnVjdCB1c2VyJwotKyAgIGZvcm1hdCBhbmQgR0RCJ3MgcmVnaXN0ZXIgY2FjaGUgbGF5b3V0LiAgKi8KLSsKLSsvKiBGcm9tIDxzeXMvcmVnLmg+LiAgKi8KLStzdGF0aWMgaW50IHNoX2xpbnV4X2dyZWdzZXRfcmVnX29mZnNldFtdID0KLSt7Ci0rIDAsCTQsCTgsCTEyLAkxNiwJMjAsCTI0LAkyOCwKLSsgMzIsCTM2LAk0MCwJNDQsCTQ4LAk1MiwJNTYsCTYwLAotKwotKyBSRUdfUEMqNCwgICBSRUdfUFIqNCwgICBSRUdfR0JSKjQsICAtMSwKLSsgUkVHX01BQ0gqNCwgUkVHX01BQ0wqNCwgUkVHX1NSKjQsCi0rfTsKLSsKLSsvKiBNYXBwaW5nIGJldHdlZW4gdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMgaW4gYHN0cnVjdAotKyAgIHNpZ2NvbnRleHQnIGZvcm1hdCBhbmQgR0RCJ3MgcmVnaXN0ZXIgY2FjaGUgbGF5b3V0LiAgKi8KLSsKLSsvKiBGcm9tIDxhc20vc2lnY29udGV4dC5oPi4gICovCi0rc3RhdGljIGludCBzaF9saW51eF9zY19yZWdfb2Zmc2V0W10gPQotK3sKLSsgNCwJOCwJMTIsCTE2LAkyMCwJMjQsCTI4LAkzMiwKLSsgMzYsCTQwLAk0NCwJNDgsCTUyLAk1NiwJNjAsCTY0LAotKyA2OCwJNzIsCTgwLAktMSwKLSsgODQsCTg4LAk3NgotK307Ci0rCi0gc3RhdGljIHZvaWQKLSBzaF9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKLSB7Ci0rICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZGJhcmNoKTsKLSsgIGJmZCBhYmZkOwotKwotKyAgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0ID0gc2hfbGludXhfZ3JlZ3NldF9yZWdfb2Zmc2V0OwotKyAgdGRlcC0+Z3JlZ3NldF9udW1fcmVncyA9IEFSUkFZX1NJWkUgKHNoX2xpbnV4X2dyZWdzZXRfcmVnX29mZnNldCk7Ci0rICB0ZGVwLT5zaXplb2ZfZ3JlZ3NldCA9IDIzICogNDsKLSsKLSsgIHRkZXAtPmpiX3BjX29mZnNldCA9IDMyOyAgICAgLyogRnJvbSA8Yml0cy9zZXRqbXAuaD4uICAqLwotKwotKyAgdGRlcC0+c2lndHJhbXBfcCA9IHNoX2xpbnV4X3NpZ3RyYW1wX3A7Ci0rICB0ZGVwLT5zaWdjb250ZXh0X2FkZHIgPSBzaF9saW51eF9zaWdjb250ZXh0X2FkZHI7Ci0rICB0ZGVwLT5zY19yZWdfb2Zmc2V0ID0gc2hfbGludXhfc2NfcmVnX29mZnNldDsKLSsgIHRkZXAtPnNjX251bV9yZWdzID0gQVJSQVlfU0laRSAoc2hfbGludXhfc2NfcmVnX29mZnNldCk7Ci0rCi0rICBmcmFtZV91bndpbmRfYXBwZW5kX3Vud2luZGVyKGdkYmFyY2gsICZzaF9saW51eF9zaWd0cmFtcF9mcmFtZV91bndpbmQpOwotKwotKyAgLyogSWYgd2UgaGF2ZSBhIHJlZ2lzdGVyIG1hcHBpbmcsIGVuYWJsZSB0aGUgZ2VuZXJpYyBjb3JlIGZpbGUKLSsgICAgIHN1cHBvcnQsIHVubGVzcyBpdCBoYXMgYWxyZWFkeSBiZWVuIGVuYWJsZWQuICAqLwotKyAgaWYgKHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldAotKyAgICAgICYmICFnZGJhcmNoX3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbl9wIChnZGJhcmNoKSkKLSsgICAgc2V0X2dkYmFyY2hfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uIChnZGJhcmNoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hfbGludXhfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uKTsKLSsKLSAgIGxpbnV4X2luaXRfYWJpIChpbmZvLCBnZGJhcmNoKTsKLSAKLSAgIC8qIEdOVS9MaW51eCB1c2VzIFNWUjQtc3R5bGUgc2hhcmVkIGxpYnJhcmllcy4gICovCi1kaWZmIC0tZ2l0IGEvZ2RiL3NoLXRkZXAuYyBiL2dkYi9zaC10ZGVwLmMKLWluZGV4IGZlNjRjZjk3OWEuLjQ0MTcxMTRjZDAgMTAwNjQ0Ci0tLS0gYS9nZGIvc2gtdGRlcC5jCi0rKysgYi9nZGIvc2gtdGRlcC5jCi1AQCAtMjEsNiArMjEsOSBAQAotICAgIHNhY0BjeWdudXMuY29tLiAgKi8KLSAKLSAjaW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi0rI2luY2x1ZGUgImNvbW1hbmQuaCIKLSsjaW5jbHVkZSAiZHVtbXktZnJhbWUuaCIKLSAjaW5jbHVkZSAiZnJhbWUuaCIKLSAjaW5jbHVkZSAiZnJhbWUtYmFzZS5oIgotICNpbmNsdWRlICJmcmFtZS11bndpbmQuaCIKLUBAIC02NiwyMyArNjksNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc2hfY2NfZW51bVtdID0gewotIAotIHN0YXRpYyBjb25zdCBjaGFyICpzaF9hY3RpdmVfY2FsbGluZ19jb252ZW50aW9uID0gc2hfY2NfZ2NjOwotIAotLSNkZWZpbmUgU0hfTlVNX1JFR1MgNjcKLS0KLS1zdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUKLS17Ci0tICAvKiBCYXNlIGFkZHJlc3MuICAqLwotLSAgQ09SRV9BRERSIGJhc2U7Ci0tICBMT05HRVNUIHNwX29mZnNldDsKLS0gIENPUkVfQUREUiBwYzsKLS0KLS0gIC8qIEZsYWcgc2hvd2luZyB0aGF0IGEgZnJhbWUgaGFzIGJlZW4gY3JlYXRlZCBpbiB0aGUgcHJvbG9ndWUgY29kZS4gICovCi0tICBpbnQgdXNlc19mcDsKLS0KLS0gIC8qIFNhdmVkIHJlZ2lzdGVycy4gICovCi0tICBDT1JFX0FERFIgc2F2ZWRfcmVnc1tTSF9OVU1fUkVHU107Ci0tICBDT1JFX0FERFIgc2F2ZWRfc3A7Ci0tfTsKLS0KLSBzdGF0aWMgaW50Ci0gc2hfaXNfcmVuZXNhc19jYWxsaW5nX2NvbnZlbnRpb24gKHN0cnVjdCB0eXBlICpmdW5jX3R5cGUpCi0gewotQEAgLTEwNTAsNyArMTAzNiw3IEBAIHNoX3RyZWF0X2FzX2ZsdF9wIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSAgICAgcmV0dXJuIDA7Ci0gICAvKiBPdGhlcndpc2UgaWYgdGhlIHR5cGUgb2YgdGhhdCBtZW1iZXIgaXMgZmxvYXQsIHRoZSB3aG9sZSB0eXBlIGlzCi0gICAgICB0cmVhdGVkIGFzIGZsb2F0LiAgKi8KLS0gIGlmIChUWVBFX0NPREUgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgMCkpID09IFRZUEVfQ09ERV9GTFQpCi0rICBpZiAoVFlQRV9DT0RFIChjaGVja190eXBlZGVmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIDApKSkgPT0gVFlQRV9DT0RFX0ZMVCkKLSAgICAgcmV0dXJuIDE7Ci0gICAvKiBPdGhlcndpc2UgaXQncyBub3QgdHJlYXRlZCBhcyBmbG9hdC4gICovCi0gICByZXR1cm4gMDsKLUBAIC0xMTAwLDcgKzEwODYsNyBAQCBzaF9wdXNoX2R1bW15X2NhbGxfZnB1IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAgICAgIGluIGZvdXIgcmVnaXN0ZXJzIGF2YWlsYWJsZS4gIExvb3AgdGhydSBhcmdzIGZyb20gZmlyc3QgdG8gbGFzdC4gICovCi0gICBmb3IgKGFyZ251bSA9IDA7IGFyZ251bSA8IG5hcmdzOyBhcmdudW0rKykKLSAgICAgewotLSAgICAgIHR5cGUgPSB2YWx1ZV90eXBlIChhcmdzW2FyZ251bV0pOwotKyAgICAgIHR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmdzW2FyZ251bV0pKTsKLSAgICAgICBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gICAgICAgdmFsID0gc2hfanVzdGlmeV92YWx1ZV9pbl9yZWcgKGdkYmFyY2gsIGFyZ3NbYXJnbnVtXSwgbGVuKTsKLSAKLUBAIC0xODM0LDcgKzE4MjAsNyBAQCBzaF9kd2FyZjJfZnJhbWVfaW5pdF9yZWcgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtLAotICAgICByZWctPmhvdyA9IERXQVJGMl9GUkFNRV9SRUdfVU5ERUZJTkVEOwotIH0KLSAKLS1zdGF0aWMgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICoKLStzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKgotIHNoX2FsbG9jX2ZyYW1lX2NhY2hlICh2b2lkKQotIHsKLSAgIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqY2FjaGU7Ci1AQCAtMTg2MSw3ICsxODQ3LDcgQEAgc2hfYWxsb2NfZnJhbWVfY2FjaGUgKHZvaWQpCi0gICByZXR1cm4gY2FjaGU7Ci0gfQotIAotLXN0YXRpYyBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKgotK3N0cnVjdCBzaF9mcmFtZV9jYWNoZSAqCi0gc2hfZnJhbWVfY2FjaGUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSkKLSB7Ci0gICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoICh0aGlzX2ZyYW1lKTsKLUBAIC0xOTI4LDkgKzE5MTQsOSBAQCBzaF9mcmFtZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQotICAgcmV0dXJuIGNhY2hlOwotIH0KLSAKLS1zdGF0aWMgc3RydWN0IHZhbHVlICoKLS1zaF9mcmFtZV9wcmV2X3JlZ2lzdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwKLS0JCQl2b2lkICoqdGhpc19jYWNoZSwgaW50IHJlZ251bSkKLStzdHJ1Y3QgdmFsdWUgKgotK3NoX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSwKLSsJCQlpbnQgcmVnbnVtKQotIHsKLSAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKHRoaXNfZnJhbWUpOwotICAgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICpjYWNoZSA9IHNoX2ZyYW1lX2NhY2hlICh0aGlzX2ZyYW1lLCB0aGlzX2NhY2hlKTsKLUBAIC0xOTQ0LDcgKzE5MzAsNyBAQCBzaF9mcmFtZV9wcmV2X3JlZ2lzdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwKLSAgICAgIHRoZSBjdXJyZW50IGZyYW1lLiAgRnJvYiByZWdudW0gc28gdGhhdCB3ZSBwdWxsIHRoZSB2YWx1ZSBmcm9tCi0gICAgICB0aGUgY29ycmVjdCBwbGFjZS4gICovCi0gICBpZiAocmVnbnVtID09IGdkYmFyY2hfcGNfcmVnbnVtIChnZGJhcmNoKSkKLS0gICAgcmVnbnVtID0gUFJfUkVHTlVNOwotKyAgICByZWdudW0gPSBQUl9SRUdOVU07IC8qIFhYWDogcmVhbGx5PyAqLwotIAotICAgaWYgKHJlZ251bSA8IFNIX05VTV9SRUdTICYmIGNhY2hlLT5zYXZlZF9yZWdzW3JlZ251bV0gIT0gLTEpCi0gICAgIHJldHVybiBmcmFtZV91bndpbmRfZ290X21lbW9yeSAodGhpc19mcmFtZSwgcmVnbnVtLAotQEAgLTIyNTUsOCArMjI0MSw4IEBAIHNoX3JldHVybl9pbl9maXJzdF9oaWRkZW5fcGFyYW1fcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gc3RhdGljIHN0cnVjdCBnZGJhcmNoICoKLSBzaF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQotIHsKLS0gIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOwotICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcDsKLSsgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOwotIAotICAgLyogSWYgdGhlcmUgaXMgYWxyZWFkeSBhIGNhbmRpZGF0ZSwgdXNlIGl0LiAgKi8KLSAgIGFyY2hlcyA9IGdkYmFyY2hfbGlzdF9sb29rdXBfYnlfaW5mbyAoYXJjaGVzLCAmaW5mbyk7Ci1AQCAtMjI2OCw2ICsyMjU0LDE4IEBAIHNoX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCi0gICB0ZGVwID0gWENORVcgKHN0cnVjdCBnZGJhcmNoX3RkZXApOwotICAgZ2RiYXJjaCA9IGdkYmFyY2hfYWxsb2MgKCZpbmZvLCB0ZGVwKTsKLSAKLSsgIC8qIEdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMuICAqLwotKyAgdGRlcC0+Z3JlZ3NldCA9IE5VTEw7Ci0rICB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXQgPSBOVUxMOwotKyAgdGRlcC0+Z3JlZ3NldF9udW1fcmVncyA9IDIzOwotKyAgdGRlcC0+c2l6ZW9mX2dyZWdzZXQgPSAwOwotKwotKyAgLyogRmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLiAgKi8KLSsgIHRkZXAtPmZwcmVnc2V0ID0gTlVMTDsKLSsgIHRkZXAtPnNpemVvZl9mcHJlZ3NldCA9IDM0KjQ7Ci0rCi0rICB0ZGVwLT5qYl9wY19vZmZzZXQgPSAtMTsKLSsKLSAgIHNldF9nZGJhcmNoX3Nob3J0X2JpdCAoZ2RiYXJjaCwgMiAqIFRBUkdFVF9DSEFSX0JJVCk7Ci0gICBzZXRfZ2RiYXJjaF9pbnRfYml0IChnZGJhcmNoLCA0ICogVEFSR0VUX0NIQVJfQklUKTsKLSAgIHNldF9nZGJhcmNoX2xvbmdfYml0IChnZGJhcmNoLCA0ICogVEFSR0VUX0NIQVJfQklUKTsKLUBAIC0yNDIyLDEwICsyNDIwLDExIEBAIHNoX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCi0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAKLSsgIGR3YXJmMl9hcHBlbmRfdW53aW5kZXJzIChnZGJhcmNoKTsKLSsKLSAgIC8qIEhvb2sgaW4gQUJJLXNwZWNpZmljIG92ZXJyaWRlcywgaWYgdGhleSBoYXZlIGJlZW4gcmVnaXN0ZXJlZC4gICovCi0gICBnZGJhcmNoX2luaXRfb3NhYmkgKGluZm8sIGdkYmFyY2gpOwotIAotLSAgZHdhcmYyX2FwcGVuZF91bndpbmRlcnMgKGdkYmFyY2gpOwotICAgZnJhbWVfdW53aW5kX2FwcGVuZF91bndpbmRlciAoZ2RiYXJjaCwgJnNoX3N0dWJfdW53aW5kKTsKLSAgIGZyYW1lX3Vud2luZF9hcHBlbmRfdW53aW5kZXIgKGdkYmFyY2gsICZzaF9mcmFtZV91bndpbmQpOwotIAotZGlmZiAtLWdpdCBhL2dkYi9zaC10ZGVwLmggYi9nZGIvc2gtdGRlcC5oCi1pbmRleCA1OWFjZDM1Yjg4Li5iZTNmOTk4ZDg0IDEwMDY0NAotLS0tIGEvZ2RiL3NoLXRkZXAuaAotKysrIGIvZ2RiL3NoLXRkZXAuaAotQEAgLTIxLDYgKzIxLDEyIEBACi0gCi0gLyogQ29udHJpYnV0ZWQgYnkgU3RldmUgQ2hhbWJlcmxhaW4gc2FjQGN5Z251cy5jb20uICAqLwotIAotK3N0cnVjdCBmcmFtZV9pbmZvOwotK3N0cnVjdCBnZGJhcmNoOwotK3N0cnVjdCByZWdncm91cDsKLStzdHJ1Y3QgcmVnc2V0OwotK3N0cnVjdCByZWdjYWNoZTsKLSsKLSAvKiBSZWdpc3RlcnMgZm9yIGFsbCBTSCB2YXJpYW50cy4gIFVzZWQgYWxzbyBieSBzaDMtcm9tLmMuICAqLwotIGVudW0KLSAgIHsKLUBAIC0yOSw2ICszNSw3IEBAIGVudW0KLSAgICAgQVJHMF9SRUdOVU0gPSA0LAotICAgICBBUkdMQVNUX1JFR05VTSA9IDcsCi0gICAgIEZQX1JFR05VTSA9IDE0LAotKyAgICBTUF9SRUdOVU0gPSAxNSwKLSAgICAgUENfUkVHTlVNID0gMTYsCi0gICAgIFBSX1JFR05VTSA9IDE3LAotICAgICBHQlJfUkVHTlVNID0gMTgsCi1AQCAtODEsNiArODgsMjQgQEAgZW51bQotICAgICBGVjBfUkVHTlVNID0gNzYsCi0gICAgIEZWX0xBU1RfUkVHTlVNID0gNzkKLSAgIH07Ci0rI2RlZmluZSBTSF9OVU1fUkVHUyA2NwotKwotK3N0cnVjdCBzaF9mcmFtZV9jYWNoZQotK3sKLSsgIC8qIEJhc2UgYWRkcmVzcy4gICovCi0rICBDT1JFX0FERFIgYmFzZTsKLSsgIExPTkdFU1Qgc3Bfb2Zmc2V0OwotKyAgQ09SRV9BRERSIHBjOwotKwotKyAgLyogRmxhZyBzaG93aW5nIHRoYXQgYSBmcmFtZSBoYXMgYmVlbiBjcmVhdGVkIGluIHRoZSBwcm9sb2d1ZSBjb2RlLiAqLwotKyAgaW50IHVzZXNfZnA7Ci0rCi0rICAvKiBTYXZlZCByZWdpc3RlcnMuICAqLwotKyAgQ09SRV9BRERSIHNhdmVkX3JlZ3NbU0hfTlVNX1JFR1NdOwotKyAgQ09SRV9BRERSIHNhdmVkX3NwOwotK307Ci0rCi0rZXh0ZXJuIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqc2hfZnJhbWVfY2FjaGUgKHN0cnVjdCBmcmFtZV9pbmZvICpuZXh0X2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSk7Ci0gCi0gLyogVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIGEgcmVnaXN0ZXIgaW4gYSBjb3JlLWZpbGUuICAqLwotIHN0cnVjdCBzaF9jb3JlZmlsZV9yZWdtYXAKLUBAIC04OSw4ICsxMTQsMzIgQEAgc3RydWN0IHNoX2NvcmVmaWxlX3JlZ21hcAotICAgdW5zaWduZWQgaW50IG9mZnNldDsKLSB9OwotIAotKy8qIHNoIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBpbmZvcm1hdGlvbi4gICovCi0gc3RydWN0IGdkYmFyY2hfdGRlcAotIHsKLSsgIC8qIEdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMuICAqLwotKyAgc3RydWN0IHJlZ3NldCAqZ3JlZ3NldDsKLSsgIGludCAqZ3JlZ3NldF9yZWdfb2Zmc2V0OwotKyAgaW50IGdyZWdzZXRfbnVtX3JlZ3M7Ci0rICBzaXplX3Qgc2l6ZW9mX2dyZWdzZXQ7Ci0rCi0rICAvKiBGbG9hdGluZy1wb2ludCByZWdpc3RlcnMuICAqLwotKyAgc3RydWN0IHJlZ3NldCAqZnByZWdzZXQ7Ci0rICBzaXplX3Qgc2l6ZW9mX2ZwcmVnc2V0OwotKwotKyAgLyogT2Zmc2V0IG9mIHNhdmVkIFBDIGluIGptcF9idWYuICAqLwotKyAgaW50IGpiX3BjX29mZnNldDsKLSsKLSsgIC8qIERldGVjdCBzaWd0cmFtcC4gICovCi0rICBpbnQgKCpzaWd0cmFtcF9wKSAoc3RydWN0IGZyYW1lX2luZm8gKik7Ci0rCi0rICAvKiBHZXQgYWRkcmVzcyBvZiBzaWdjb250ZXh0IGZvciBzaWd0cmFtcC4gICovCi0rICBDT1JFX0FERFIgKCpzaWdjb250ZXh0X2FkZHIpIChzdHJ1Y3QgZnJhbWVfaW5mbyAqKTsKLSsKLSsgIC8qIE9mZnNldCBvZiByZWdpc3RlcnMgaW4gYHN0cnVjdCBzaWdjb250ZXh0Jy4gICovCi0rICBpbnQgKnNjX3JlZ19vZmZzZXQ7Ci0rICBpbnQgc2NfbnVtX3JlZ3M7Ci0rCi0gICAvKiBOb24tTlVMTCB3aGVuIGRlYnVnZ2luZyBmcm9tIGEgY29yZSBmaWxlLiAgUHJvdmlkZXMgdGhlIG9mZnNldAotICAgICAgd2hlcmUgZWFjaCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgaXMgc3RvcmVkIGluc2lkZSB0aGUgYXNzb2NpYXRlZAotICAgICAgY29yZSBmaWxlIHNlY3Rpb24uICAqLwotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cAotaW5kZXggOTg3OWYwY2E0Ny4uY2JjMGU0ZDVmNyAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwCi1AQCAtMTE2LDYgKzExNiwxMSBAQCBzd2l0Y2ggLWdsb2IgLS0gW2lzdGFyZ2V0XSB7Ci0gICAgICAgICAgICAgYXBwZW5kIGxpbmstZmxhZ3MgIiAtbSBlbGYzMnBwYyIKLSAgICAgICAgIH0KLSAgICAgfQotKyAgICAic2gqLWxpbnV4KiIgewotKyAgICAgICAgc2V0IGFzbS1hcmNoIHNoLWxpbnV4Ci0rICAgICAgICBzZXQgYXNtLWZsYWdzICItSSR7c3JjZGlyfS8ke3N1YmRpcn0gLUkke29iamRpcn0vJHtzdWJkaXJ9IgotKwlzZXQgZGVidWctZmxhZ3MgIi1nZHdhcmYtMiIKLSsgICAgfQotICAgICAic2gqLSotKiIgewotICAgICAgICAgc2V0IGFzbS1hcmNoIHNoCi0gCXNldCBkZWJ1Zy1mbGFncyAiLWdkd2FyZi0yIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9zaC5pbmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5hc20vc2guaW5jCi1pbmRleCBhNGE1ZmM1NDVlLi44OWVmZWQ3Nzk1IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL3NoLmluYwotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL3NoLmluYwotQEAgLTQwLDkgKzQwLDggQEAKLSAJbW92LmwgICAuTGNvbnN0XEAscjEKLSAJYnJhCS5MYWZ0ZXJjb25zdFxACi0gCW5vcAotLQlub3AKLS0uTGNvbnN0XEA6Ci0gCS5hbGlnbgkyCi0rLkxjb25zdFxAOgotIAkubG9uZwlcc3VicgotIAkuYWxpZ24JMQotIC5MYWZ0ZXJjb25zdFxAOgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmMKLWluZGV4IDQyNGUxYjgzMjcuLjBkZTJlN2I2MzMgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTEuYwotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmMKLUBAIC0xLDYgKzEsOSBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzaWduYWwuaD4KLSAKLSsjaWZkZWYgX19zaF9fCi0rI2RlZmluZSBzaWduYWwoYSxiKSAgICAvKiBTaWduYWxzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB0YXJnZXQgLSBtYWtlIHRoZW0gZ28gYXdheSAqLwotKyNlbmRpZgotIAotIHZvaWQKLSBoYW5kbGVfVVNSMSAoaW50IHNpZykKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5jCi1pbmRleCA0MjRlMWI4MzI3Li45NTJhYWYyMThhIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmMKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5jCi1AQCAtMSw2ICsxLDEwIEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHNpZ25hbC5oPgotIAotKyNpZmRlZiBfX3NoX18KLSsjZGVmaW5lIHNpZ25hbChhLGIpICAgIC8qIFNpZ25hbHMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHRhcmdldCAtIG1ha2UgdGhlbSBnbyBhd2F5ICovCi0rI2VuZGlmCi0rCi0gCi0gdm9pZAotIGhhbmRsZV9VU1IxIChpbnQgc2lnKQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnYWxsLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2FsbC5jCi1pbmRleCA4MWYzYjA4ZDZiLi4xNTc0YjJkNmNiIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYwotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYwotQEAgLTEsNiArMSw5IEBACi0gI2luY2x1ZGUgPHNpZ25hbC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLSsjaWZkZWYgX19zaF9fCi0rI2RlZmluZSBzaWduYWwoYSxiKSAgICAvKiBTaWduYWxzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB0YXJnZXQgLSBtYWtlIHRoZW0gZ28gYXdheSAqLwotKyNlbmRpZgotIAotIC8qIFNpZ25hbCBoYW5kbGVycywgd2Ugc2V0IGJyZWFrcG9pbnRzIGluIHRoZW0gdG8gbWFrZSBzdXJlIHRoYXQgdGhlCi0gICAgc2lnbmFscyByZWFsbHkgZ2V0IGRlbGl2ZXJlZC4gICovCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWduYWxzLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYwotaW5kZXggNzU2NjA2ODgwZi4uMTIwNWE5YmM5YyAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5jCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYwotQEAgLTMsNiArMywxMCBAQAotICNpbmNsdWRlIDxzaWduYWwuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gCi0rI2lmZGVmIF9fc2hfXwotKyNkZWZpbmUgc2lnbmFsKGEsYikgICAgLyogU2lnbmFscyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdGFyZ2V0IC0gbWFrZSB0aGVtIGdvIGF3YXkgKi8KLSsjZGVmaW5lIGFsYXJtKGEpICAgICAgIC8qIERpdHRvIGZvciBhbGFybSgpICovCi0rI2VuZGlmCi0gCi0gc3RhdGljIGludCBjb3VudCA9IDA7Ci0gCi0tLSAKLTIuMTguMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDUtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNS1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwMzYwZGEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDUtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaApAQCAtMCwwICsxLDQ3IEBACitGcm9tIGQxMzJmMjFkODkxNTdlOTgwNTc0ZGE3ZDBjOTQ5ZjZkZDE3ZGY4YzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxNToyNTowMyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBEb250IGRpc2FibGUgbGlicmVhZGxpbmUuYSB3aGVuIHVzaW5nIC0tZGlzYWJsZS1zdGF0aWMKKworSWYgZ2RiIGlzIGNvbmZpZ3VyZWQgd2l0aCAtLWRpc2FibGUtc3RhdGljIHRoZW4gdGhpcyBpcyBkdXRpZnVsbHkgcGFzc2VkIHRvCityZWFkbGluZSB3aGljaCB0aGVuIGRpc2FibGVzIGxpYnJlYWRsaW5lLmEsIHdoaWNoIGNhdXNlcyBhIHByb2JsZW0gd2hlbiBnZGIKK3RyaWVzIHRvIGxpbmsgYWdhaW5zdCB0aGF0LgorCitUbyBlbnN1cmUgdGhhdCByZWFkbGluZSBhbHdheXMgYnVpbGRzIHN0YXRpYyBsaWJyYXJpZXMsIHBhc3MgLS1lbmFibGUtc3RhdGljIHRvCit0aGUgc3ViLWNvbmZpZ3VyZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLmRlZiB8IDMgKystCisgTWFrZWZpbGUuaW4gIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuZGVmIGIvTWFrZWZpbGUuZGVmCitpbmRleCAzMTFmZWI5ZGUzLi4yNGMwNjg1ZDQ4IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuZGVmCisrKysgYi9NYWtlZmlsZS5kZWYKK0BAIC0xMDUsNyArMTA1LDggQEAgaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gbGliaWNvbnY7CisgCQltaXNzaW5nPSBpbnN0YWxsLWh0bWw7CisgCQltaXNzaW5nPSBpbnN0YWxsLWluZm87IH07CisgaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gbTQ7IH07CistaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gcmVhZGxpbmU7IH07CisraG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gcmVhZGxpbmU7CisrICAgICAgICAgICAgICAgIGV4dHJhX2NvbmZpZ3VyZV9mbGFncz0nLS1lbmFibGUtc3RhdGljJzt9OworIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IHNpZDsgfTsKKyBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSBzaW07IH07CisgaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gdGV4aW5mbzsgbm9faW5zdGFsbD0gdHJ1ZTsgfTsKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCAxYWFiZjZlZGU0Li5kOTU3ZWZkZTgxIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtMjU1MTAsNyArMjU1MTAsNyBAQCBjb25maWd1cmUtcmVhZGxpbmU6CisgCSAgJCRzLyQkbW9kdWxlX3NyY2Rpci9jb25maWd1cmUgXAorIAkgIC0tc3JjZGlyPSQke3RvcGRpcn0vJCRtb2R1bGVfc3JjZGlyIFwKKyAJICAkKEhPU1RfQ09ORklHQVJHUykgLS1idWlsZD0ke2J1aWxkX2FsaWFzfSAtLWhvc3Q9JHtob3N0X2FsaWFzfSBcCistCSAgLS10YXJnZXQ9JHt0YXJnZXRfYWxpYXN9ICBcCisrCSAgLS10YXJnZXQ9JHt0YXJnZXRfYWxpYXN9IC0tZW5hYmxlLXN0YXRpYyBcCisgCSAgfHwgZXhpdCAxCisgQGVuZGlmIHJlYWRsaW5lCisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDYtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWUzZWU2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSA1ZmRkNDJhY2FhOTY1YmU3YzQyMGEzZjJiYTEyYjc3ZWE1MDNjNTliIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMzAgQXByIDIwMTYgMTU6MjU6MDMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAwNi8xMV0gRG9udCBkaXNhYmxlIGxpYnJlYWRsaW5lLmEgd2hlbiB1c2luZyAtLWRpc2FibGUtc3RhdGljCi0KLUlmIGdkYiBpcyBjb25maWd1cmVkIHdpdGggLS1kaXNhYmxlLXN0YXRpYyB0aGVuIHRoaXMgaXMgZHV0aWZ1bGx5IHBhc3NlZCB0bwotcmVhZGxpbmUgd2hpY2ggdGhlbiBkaXNhYmxlcyBsaWJyZWFkbGluZS5hLCB3aGljaCBjYXVzZXMgYSBwcm9ibGVtIHdoZW4gZ2RiCi10cmllcyB0byBsaW5rIGFnYWluc3QgdGhhdC4KLQotVG8gZW5zdXJlIHRoYXQgcmVhZGxpbmUgYWx3YXlzIGJ1aWxkcyBzdGF0aWMgbGlicmFyaWVzLCBwYXNzIC0tZW5hYmxlLXN0YXRpYyB0bwotdGhlIHN1Yi1jb25maWd1cmUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5kZWYgfCAzICsrLQotIE1ha2VmaWxlLmluICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmRlZiBiL01ha2VmaWxlLmRlZgotaW5kZXggNzUwNjNiNmQxMi4uYzI3YmJlNGQyOCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmRlZgotKysrIGIvTWFrZWZpbGUuZGVmCi1AQCAtMTA1LDcgKzEwNSw4IEBAIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IGxpYmljb252OwotIAkJbWlzc2luZz0gaW5zdGFsbC1odG1sOwotIAkJbWlzc2luZz0gaW5zdGFsbC1pbmZvOyB9OwotIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IG00OyB9OwotLWhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IHJlYWRsaW5lOyB9OwotK2hvc3RfbW9kdWxlcz0geyBtb2R1bGU9IHJlYWRsaW5lOwotKyAgICAgICAgICAgICAgICBleHRyYV9jb25maWd1cmVfZmxhZ3M9Jy0tZW5hYmxlLXN0YXRpYyc7fTsKLSBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSBzaWQ7IH07Ci0gaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gc2ltOyB9OwotIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IHRleGluZm87IG5vX2luc3RhbGw9IHRydWU7IH07Ci1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggNzgxNGZlNzQ1Zi4uM2IwZGM3Y2JiMCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTI1NDcwLDcgKzI1NDcwLDcgQEAgY29uZmlndXJlLXJlYWRsaW5lOgotIAkgICQkcy8kJG1vZHVsZV9zcmNkaXIvY29uZmlndXJlIFwKLSAJICAtLXNyY2Rpcj0kJHt0b3BkaXJ9LyQkbW9kdWxlX3NyY2RpciBcCi0gCSAgJChIT1NUX0NPTkZJR0FSR1MpIC0tYnVpbGQ9JHtidWlsZF9hbGlhc30gLS1ob3N0PSR7aG9zdF9hbGlhc30gXAotLQkgIC0tdGFyZ2V0PSR7dGFyZ2V0X2FsaWFzfSAgXAotKwkgIC0tdGFyZ2V0PSR7dGFyZ2V0X2FsaWFzfSAtLWVuYWJsZS1zdGF0aWMgXAotIAkgIHx8IGV4aXQgMQotIEBlbmRpZiByZWFkbGluZQotIAotLS0gCi0yLjE4LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA2LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA2LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMjJkMDEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDYtdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSAzMjllNWJmMjllOTM0YmE5OTYyMjM3MmE5NjYwODY1ODY0YmIwMjk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmUgTWNDdXJkeSA8YW1jY3VyZHlAZ21haWwuY29tPgorRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxNToyOTowNiAtMDcwMAorU3ViamVjdDogW1BBVENIXSB1c2UgPGFzbS9zZ2lkZWZzLmg+CisKK0J1aWxkIGZpeCBmb3IgTUlQUyB3aXRoIG11c2wgbGliYworCitUaGUgTUlQUyBzcGVjaWZpYyBoZWFkZXIgPHNnaWRlZnMuaD4gaXMgcHJvdmlkZWQgYnkgZ2xpYmMgYW5kIHVjbGliYworYnV0IG5vdCBieSBtdXNsLiBSZWdhcmRsZXNzIG9mIHRoZSBsaWJjLCB0aGUga2VybmVsIGhlYWRlcnMgcHJvdmlkZQorPGFzbS9zZ2lkZWZzLmg+IHdoaWNoIHByb3ZpZGVzIHRoZSBzYW1lIGRlZmluaXRpb25zLCBzbyB1c2UgdGhhdAoraW5zdGVhZC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2RiL21pcHMtbGludXgtbmF0LmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nZGIvbWlwcy1saW51eC1uYXQuYyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCitpbmRleCA3ZjU3NWIzMzYzLi5kYzkzYTY0YTkzIDEwMDY0NAorLS0tIGEvZ2RiL21pcHMtbGludXgtbmF0LmMKKysrKyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCitAQCAtMzEsNyArMzEsNyBAQAorICNpbmNsdWRlICJnZGJfcHJvY19zZXJ2aWNlLmgiCisgI2luY2x1ZGUgImdyZWdzZXQuaCIKKyAKKy0jaW5jbHVkZSA8c2dpZGVmcy5oPgorKyNpbmNsdWRlIDxhc20vc2dpZGVmcy5oPgorICNpbmNsdWRlICJuYXQvZ2RiX3B0cmFjZS5oIgorICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CisgI2luY2x1ZGUgImluZi1wdHJhY2UuaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNy1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNy1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTg5NjYxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA3LVVzZS1leG9ydGVkLWRlZmluaXRpb25zLW9mLVNJR1JUTUlOLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gNzgyYmIyYWI5YjEwNGRhZDRiYmFlZDFkOWFjNzY5Y2U3ZTViOWY0ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjMxOjQwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBleG9ydGVkIGRlZmluaXRpb25zIG9mIFNJR1JUTUlOCisKK0RlZmluZSBXX1NUT1BDT0RFIGlmIG5vdCBkZWZpbmVkIGFscmVhZHkKKworX19TSUdSVE1JTiBpcyBpbnRlcm5hbCB0byBnbGliYyBhbmQgb3RoZXIgbGliY3MgZS5nLiBtdXNsCittYXkgbm90IHByb3ZpZGUgdGhlbQorCitGaXhlcworaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTMwMTIKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdkYi9saW51eC1uYXQuYyAgICAgfCA0ICsrLS0KKyBnZGIvbmF0L2xpbnV4LW5hdC5oIHwgNCArKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nZGIvbGludXgtbmF0LmMgYi9nZGIvbGludXgtbmF0LmMKK2luZGV4IDQ0ODRmYTVjODcuLjNiYjBlZTdhNDkgMTAwNjQ0CistLS0gYS9nZGIvbGludXgtbmF0LmMKKysrKyBiL2dkYi9saW51eC1uYXQuYworQEAgLTQ1ODgsNiArNDU4OCw2IEBAIGxpbl90aHJlYWRfZ2V0X3RocmVhZF9zaWduYWxzIChzaWdzZXRfdCAqc2V0KQorICAgLyogTlBUTCByZXNlcnZlcyB0aGUgZmlyc3QgdHdvIFJUIHNpZ25hbHMsIGJ1dCBkb2VzIG5vdCBwcm92aWRlIGFueQorICAgICAgd2F5IGZvciB0aGUgZGVidWdnZXIgdG8gcXVlcnkgdGhlIHNpZ25hbCBudW1iZXJzIC0gZm9ydHVuYXRlbHkKKyAgICAgIHRoZXkgZG9uJ3QgY2hhbmdlLiAgKi8KKy0gIHNpZ2FkZHNldCAoc2V0LCBfX1NJR1JUTUlOKTsKKy0gIHNpZ2FkZHNldCAoc2V0LCBfX1NJR1JUTUlOICsgMSk7CisrICBzaWdhZGRzZXQgKHNldCwgU0lHUlRNSU4pOworKyAgc2lnYWRkc2V0IChzZXQsIFNJR1JUTUlOICsgMSk7CisgfQorZGlmZiAtLWdpdCBhL2dkYi9uYXQvbGludXgtbmF0LmggYi9nZGIvbmF0L2xpbnV4LW5hdC5oCitpbmRleCA0NGRjYmI3NzU4Li45NzVkNzI3NmY2IDEwMDY0NAorLS0tIGEvZ2RiL25hdC9saW51eC1uYXQuaAorKysrIGIvZ2RiL25hdC9saW51eC1uYXQuaAorQEAgLTkxLDQgKzkxLDggQEAgZXh0ZXJuIHZvaWQgbGludXhfc3RvcF9sd3AgKHN0cnVjdCBsd3BfaW5mbyAqbHdwKTsKKyAKKyBleHRlcm4gaW50IGx3cF9pc19zdGVwcGluZyAoc3RydWN0IGx3cF9pbmZvICpsd3ApOworIAorKyNpZm5kZWYgV19TVE9QQ09ERQorKyNkZWZpbmUgV19TVE9QQ09ERShzaWcpICgoc2lnKSA8PCA4IHwgMHg3ZikKKysjZW5kaWYKKysKKyAjZW5kaWYgLyogTkFUX0xJTlVYX05BVF9IICovCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDctdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDctdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwOGY0YmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA3LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSBkNmUxMmQ1MmY5Y2VmN2Y1ZTYzMTUwMDNjZWFhMjM2ZjZjYzc3MjNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmUgTWNDdXJkeSA8YW1jY3VyZHlAZ21haWwuY29tPgotRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxNToyOTowNiAtMDcwMAotU3ViamVjdDogW1BBVENIIDA3LzExXSB1c2UgPGFzbS9zZ2lkZWZzLmg+Ci0KLUJ1aWxkIGZpeCBmb3IgTUlQUyB3aXRoIG11c2wgbGliYwotCi1UaGUgTUlQUyBzcGVjaWZpYyBoZWFkZXIgPHNnaWRlZnMuaD4gaXMgcHJvdmlkZWQgYnkgZ2xpYmMgYW5kIHVjbGliYwotYnV0IG5vdCBieSBtdXNsLiBSZWdhcmRsZXNzIG9mIHRoZSBsaWJjLCB0aGUga2VybmVsIGhlYWRlcnMgcHJvdmlkZQotPGFzbS9zZ2lkZWZzLmg+IHdoaWNoIHByb3ZpZGVzIHRoZSBzYW1lIGRlZmluaXRpb25zLCBzbyB1c2UgdGhhdAotaW5zdGVhZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2RiL21pcHMtbGludXgtbmF0LmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nZGIvbWlwcy1saW51eC1uYXQuYyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCi1pbmRleCA2OGE3NTg3YWYyLi4yYjc3MjIxMzcyIDEwMDY0NAotLS0tIGEvZ2RiL21pcHMtbGludXgtbmF0LmMKLSsrKyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCi1AQCAtMzEsNyArMzEsNyBAQAotICNpbmNsdWRlICJnZGJfcHJvY19zZXJ2aWNlLmgiCi0gI2luY2x1ZGUgImdyZWdzZXQuaCIKLSAKLS0jaW5jbHVkZSA8c2dpZGVmcy5oPgotKyNpbmNsdWRlIDxhc20vc2dpZGVmcy5oPgotICNpbmNsdWRlICJuYXQvZ2RiX3B0cmFjZS5oIgotICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+Ci0gI2luY2x1ZGUgImluZi1wdHJhY2UuaCIKLS0tIAotMi4xOC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOC1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA4LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTgxNjhjNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOC1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gNDBjOWMxNzQ1OTBjZTZmZGM4NzNiNDUzMjg1MjQ5ZmU5NTdmMzc2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjM1OjM5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIENoYW5nZSBvcmRlciBvZiBDRkxBR1MKKworTGV0cyB1cyBvdmVycmlkZSBXZXJyb3IgaWYgbmVlZCBiZQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluIGIvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbgoraW5kZXggMTZhOWYyZmQzOC4uYjljOGNkOWM0MSAxMDA2NDQKKy0tLSBhL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KKysrKyBiL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KK0BAIC0xNDYsNyArMTQ2LDcgQEAgUFRIUkVBRF9MSUJTID0gQFBUSFJFQURfTElCU0AKKyBJTlRFUk5BTF9DRkxBR1NfQkFTRSA9ICR7Q1hYRkxBR1N9ICR7R0xPQkFMX0NGTEFHU30gXAorIAkke1BST0ZJTEVfQ0ZMQUdTfSAke0lOQ0xVREVfQ0ZMQUdTfSAke0NQUEZMQUdTfSAkKFBUSFJFQURfQ0ZMQUdTKQorIElOVEVSTkFMX1dBUk5fQ0ZMQUdTID0gJHtJTlRFUk5BTF9DRkxBR1NfQkFTRX0gJChXQVJOX0NGTEFHUykKKy1JTlRFUk5BTF9DRkxBR1MgPSAke0lOVEVSTkFMX1dBUk5fQ0ZMQUdTfSAkKFdFUlJPUl9DRkxBR1MpIC1ER0RCU0VSVkVSCisrSU5URVJOQUxfQ0ZMQUdTID0gJHtJTlRFUk5BTF9XQVJOX0NGTEFHU30gJChXRVJST1JfQ0ZMQUdTKSAke0NPTVBJTEVSX0NGTEFHU30gLURHREJTRVJWRVIKKyAKKyAjIExERkxBR1MgaXMgc3BlY2lmaWNhbGx5IHJlc2VydmVkIGZvciBzZXR0aW5nIGZyb20gdGhlIGNvbW1hbmQgbGluZQorICMgd2hlbiBydW5uaW5nIG1ha2UuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1YmVjNWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA4LVVzZS1leG9ydGVkLWRlZmluaXRpb25zLW9mLVNJR1JUTUlOLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbSBiYWIwYjM0NjcyNzI3YzUwMzEzZWI5OGI4NTIyMzU1Y2JlMWJkZTM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMzAgQXByIDIwMTYgMTU6MzE6NDAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNlIGV4b3J0ZWQgZGVmaW5pdGlvbnMgb2YgU0lHUlRNSU4KLQotRGVmaW5lIFdfU1RPUENPREUgaWYgbm90IGRlZmluZWQgYWxyZWFkeQotCi1fX1NJR1JUTUlOIGlzIGludGVybmFsIHRvIGdsaWJjIGFuZCBvdGhlciBsaWJjcyBlLmcuIG11c2wKLW1heSBub3QgcHJvdmlkZSB0aGVtCi0KLUZpeGVzCi1odHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xMzAxMgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSBnZGIvbGludXgtbmF0LmMgICAgIHwgNCArKy0tCi0gZ2RiL25hdC9saW51eC1uYXQuaCB8IDQgKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4LW5hdC5jIGIvZ2RiL2xpbnV4LW5hdC5jCi1pbmRleCAwNjNhZmUyNi4uZmIxZDJkNWQgMTAwNjQ0Ci0tLS0gYS9nZGIvbGludXgtbmF0LmMKLSsrKyBiL2dkYi9saW51eC1uYXQuYwotQEAgLTQ3MTMsNiArNDcxMyw2IEBAIGxpbl90aHJlYWRfZ2V0X3RocmVhZF9zaWduYWxzIChzaWdzZXRfdCAqc2V0KQotICAgLyogTlBUTCByZXNlcnZlcyB0aGUgZmlyc3QgdHdvIFJUIHNpZ25hbHMsIGJ1dCBkb2VzIG5vdCBwcm92aWRlIGFueQotICAgICAgd2F5IGZvciB0aGUgZGVidWdnZXIgdG8gcXVlcnkgdGhlIHNpZ25hbCBudW1iZXJzIC0gZm9ydHVuYXRlbHkKLSAgICAgIHRoZXkgZG9uJ3QgY2hhbmdlLiAgKi8KLS0gIHNpZ2FkZHNldCAoc2V0LCBfX1NJR1JUTUlOKTsKLS0gIHNpZ2FkZHNldCAoc2V0LCBfX1NJR1JUTUlOICsgMSk7Ci0rICBzaWdhZGRzZXQgKHNldCwgU0lHUlRNSU4pOwotKyAgc2lnYWRkc2V0IChzZXQsIFNJR1JUTUlOICsgMSk7Ci0gfQotZGlmZiAtLWdpdCBhL2dkYi9uYXQvbGludXgtbmF0LmggYi9nZGIvbmF0L2xpbnV4LW5hdC5oCi1pbmRleCAxZTMyZGQ5ZS4uYjg4NjMwNWQgMTAwNjQ0Ci0tLS0gYS9nZGIvbmF0L2xpbnV4LW5hdC5oCi0rKysgYi9nZGIvbmF0L2xpbnV4LW5hdC5oCi1AQCAtOTAsNCArOTAsOCBAQCBleHRlcm4gdm9pZCBsaW51eF9zdG9wX2x3cCAoc3RydWN0IGx3cF9pbmZvICpsd3ApOwotIAotIGV4dGVybiBpbnQgbHdwX2lzX3N0ZXBwaW5nIChzdHJ1Y3QgbHdwX2luZm8gKmx3cCk7Ci0gCi0rI2lmbmRlZiBXX1NUT1BDT0RFCi0rI2RlZmluZSBXX1NUT1BDT0RFKHNpZykgKChzaWcpIDw8IDggfCAweDdmKQotKyNlbmRpZgotKwotICNlbmRpZiAvKiBOQVRfTElOVVhfTkFUX0ggKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOS1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNGJjMjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIGJhNmZmYTQ2MWZlNzgxZDQ0ZDZkY2JjMGZiZDU2OTIzN2I0NTBmZGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxNTozNTozOSAtMDcwMAotU3ViamVjdDogW1BBVENIIDA5LzExXSBDaGFuZ2Ugb3JkZXIgb2YgQ0ZMQUdTCi0KLUxldHMgdXMgb3ZlcnJpZGUgV2Vycm9yIGlmIG5lZWQgYmUKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbiBiL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KLWluZGV4IGYyZjhhMDg0YmQuLjk1MjhkYjEzNjQgMTAwNjQ0Ci0tLS0gYS9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCi0rKysgYi9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCi1AQCAtMTQzLDcgKzE0Myw3IEBAIENQUEZMQUdTID0gQENQUEZMQUdTQAotIElOVEVSTkFMX0NGTEFHU19CQVNFID0gJHtDWFhGTEFHU30gJHtHTE9CQUxfQ0ZMQUdTfSBcCi0gCSR7UFJPRklMRV9DRkxBR1N9ICR7SU5DTFVERV9DRkxBR1N9ICR7Q1BQRkxBR1N9Ci0gSU5URVJOQUxfV0FSTl9DRkxBR1MgPSAke0lOVEVSTkFMX0NGTEFHU19CQVNFfSAkKFdBUk5fQ0ZMQUdTKQotLUlOVEVSTkFMX0NGTEFHUyA9ICR7SU5URVJOQUxfV0FSTl9DRkxBR1N9ICQoV0VSUk9SX0NGTEFHUykgLURHREJTRVJWRVIKLStJTlRFUk5BTF9DRkxBR1MgPSAke0lOVEVSTkFMX1dBUk5fQ0ZMQUdTfSAkKFdFUlJPUl9DRkxBR1MpICR7Q09NUElMRVJfQ0ZMQUdTfSAtREdEQlNFUlZFUgotIAotICMgTERGTEFHUyBpcyBzcGVjaWZpY2FsbHkgcmVzZXJ2ZWQgZm9yIHNldHRpbmcgZnJvbSB0aGUgY29tbWFuZCBsaW5lCi0gIyB3aGVuIHJ1bm5pbmcgbWFrZS4KLS0tIAotMi4xOC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOS1yZXNvbHZlLXJlc3RyaWN0LWtleXdvcmQtY29uZmxpY3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDktcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMTVjNDkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDktcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gNWI2OWE5OGY2YmI3MzYzYTFmNzlmMjliYWMyYjI1YjdkZjZkMmZkZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDEwIE1heSAyMDE2IDA4OjQ3OjA1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHJlc29sdmUgcmVzdHJpY3Qga2V5d29yZCBjb25mbGljdAorCitHQ0MgZGV0ZWN0cyB0aGF0IHdlIGNhbGwgJ3Jlc3RyaWN0JyBhcyBwYXJhbSBuYW1lIGluIGZ1bmN0aW9uCitzaWduYXR1cmVzIGFuZCBjb21wbGFpbnMgc2luY2UgYm90aCBwYXJhbXMgYXJlIGNhbGxlZCAncmVzdHJpY3QnCit0aGVyZWZvcmUgd2UgdXNlIF9fcmVzdHJpY3QgdG8gZGVub3RlIHRoZSBDOTkga2V5d29yaworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdudWxpYi9pbXBvcnQvc3lzX3RpbWUuaW4uaCB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ251bGliL2ltcG9ydC9zeXNfdGltZS5pbi5oIGIvZ251bGliL2ltcG9ydC9zeXNfdGltZS5pbi5oCitpbmRleCBkNTM1YTZhNDhiLi43YzM0ZDVhMWFhIDEwMDY0NAorLS0tIGEvZ251bGliL2ltcG9ydC9zeXNfdGltZS5pbi5oCisrKysgYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmgKK0BAIC05MywyMCArOTMsMjAgQEAgc3RydWN0IHRpbWV2YWwKKyAjICAgZGVmaW5lIGdldHRpbWVvZmRheSBycGxfZ2V0dGltZW9mZGF5CisgIyAgZW5kaWYKKyBfR0xfRlVOQ0RFQ0xfUlBMIChnZXR0aW1lb2ZkYXksIGludCwKKy0gICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKnJlc3RyaWN0LCB2b2lkICpyZXN0cmljdCkKKysgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QsIHZvaWQgKl9fcmVzdHJpY3QpCisgICAgICAgICAgICAgICAgICAgX0dMX0FSR19OT05OVUxMICgoMSkpKTsKKyBfR0xfQ1hYQUxJQVNfUlBMIChnZXR0aW1lb2ZkYXksIGludCwKKy0gICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKnJlc3RyaWN0LCB2b2lkICpyZXN0cmljdCkpOworKyAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCwgdm9pZCAqX19yZXN0cmljdCkpOworICMgZWxzZQorICMgIGlmICFASEFWRV9HRVRUSU1FT0ZEQVlACisgX0dMX0ZVTkNERUNMX1NZUyAoZ2V0dGltZW9mZGF5LCBpbnQsCistICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpyZXN0cmljdCwgdm9pZCAqcmVzdHJpY3QpCisrICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0LCB2b2lkICpfX3Jlc3RyaWN0KQorICAgICAgICAgICAgICAgICAgIF9HTF9BUkdfTk9OTlVMTCAoKDEpKSk7CisgIyAgZW5kaWYKKyAvKiBOZWVkIHRvIGNhc3QsIGJlY2F1c2Ugb24gZ2xpYmMgc3lzdGVtcywgYnkgZGVmYXVsdCwgdGhlIHNlY29uZCBhcmd1bWVudCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV6b25lICouICAqLworIF9HTF9DWFhBTElBU19TWVNfQ0FTVCAoZ2V0dGltZW9mZGF5LCBpbnQsCistICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKnJlc3RyaWN0LCB2b2lkICpyZXN0cmljdCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0LCB2b2lkICpfX3Jlc3RyaWN0KSk7CisgIyBlbmRpZgorIF9HTF9DWFhBTElBU1dBUk4gKGdldHRpbWVvZmRheSk7CisgIyBpZiBkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEwLUZpeC1pbnZhbGlkLXNpZ3Byb2NtYXNrLWNhbGwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTAtRml4LWludmFsaWQtc2lncHJvY21hc2stY2FsbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjA5YzAwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEwLUZpeC1pbnZhbGlkLXNpZ3Byb2NtYXNrLWNhbGwucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSBiYzFmMDFmZjVlNTI0Zjc3NzcwODMwMjRiY2UzNDhhOWIwMDE3YTdhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWW91c29uZyBaaG91IDx5c3pob3U0dGVjaEBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI0IE1hciAyMDE3IDEwOjM2OjAzICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBpbnZhbGlkIHNpZ3Byb2NtYXNrIGNhbGwKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVGhlIFBPU0lYIGRvY3VtZW50IHNheXMKKworICAgIFRoZSBwdGhyZWFkX3NpZ21hc2soKSBhbmQgc2lncHJvY21hc2soKSBmdW5jdGlvbnMgc2hhbGwgZmFpbCBpZjoKKworICAgIFtFSU5WQUxdCisgICAgVGhlIHZhbHVlIG9mIHRoZSBob3cgYXJndW1lbnQgaXMgbm90IGVxdWFsIHRvIG9uZSBvZiB0aGUgZGVmaW5lZCB2YWx1ZXMuCisKK2FuZCB0aGlzIGlzIGhvdyBtdXNsLWxpYmMgaXMgY3VycmVudGx5IGRvaW5nLiAgRml4IHRoZSBjYWxsIHRvIGJlIHNhZmUKK2FuZCBjb3JyZWN0CisKKyBbMV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvZnVuY3Rpb25zL3B0aHJlYWRfc2lnbWFzay5odG1sCisKK2dkYi9DaGFuZ2VMb2c6CisyMDE3LTAzLTI0ICBZb3Vzb25nIFpob3UgIDx5c3pob3U0dGVjaEBnbWFpbC5jb20+CisKKyAgICAqIGNvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jIChzYXZlX29yaWdpbmFsX3NpZ25hbHNfc3RhdGUpOgorICAgIEZpeCBpbnZhbGlkIHNpZ3Byb2NtYXNrIGNhbGwuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbbm90IGF1dGhvciwgY2hlcnJ5LXBpY2tlZCBmcm9tIExFREUgaHR0cHM6Ly9idWdzLmxlZGUtcHJvamVjdC5vcmcvaW5kZXgucGhwP2RvPWRldGFpbHMmdGFza19pZD02Mzcmb3BlbmVkZnJvbT0tMSUyQndlZWtdCitTaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YWRyYXN6aWtAdHljb2ludC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2RiL2dkYnN1cHBvcnQvc2lnbmFscy1zdGF0ZS1zYXZlLXJlc3RvcmUuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2dkYi9nZGJzdXBwb3J0L3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMgYi9nZGIvZ2Ric3VwcG9ydC9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jCitpbmRleCBjMjkyZDQ5OGRhLi5hZjlkY2FlYjA4IDEwMDY0NAorLS0tIGEvZ2RiL2dkYnN1cHBvcnQvc2lnbmFscy1zdGF0ZS1zYXZlLXJlc3RvcmUuYworKysrIGIvZ2RiL2dkYnN1cHBvcnQvc2lnbmFscy1zdGF0ZS1zYXZlLXJlc3RvcmUuYworQEAgLTM4LDcgKzM4LDcgQEAgc2F2ZV9vcmlnaW5hbF9zaWduYWxzX3N0YXRlIChib29sIHF1aWV0KQorICAgaW50IGk7CisgICBpbnQgcmVzOworIAorLSAgcmVzID0gZ2RiX3NpZ21hc2sgKDAsICBOVUxMLCAmb3JpZ2luYWxfc2lnbmFsX21hc2spOworKyAgcmVzID0gZ2RiX3NpZ21hc2sgKFNJR19CTE9DSywgIE5VTEwsICZvcmlnaW5hbF9zaWduYWxfbWFzayk7CisgICBpZiAocmVzID09IC0xKQorICAgICBwZXJyb3Jfd2l0aF9uYW1lICgoInNpZ3Byb2NtYXNrIikpOworIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMC1yZXNvbHZlLXJlc3RyaWN0LWtleXdvcmQtY29uZmxpY3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwOWQ1MmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gMTliNTgxMDU2YzE3MDlmN2QyODcyY2Q3NmI5Nzc1NDJhMGZlNjE0MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDEwIE1heSAyMDE2IDA4OjQ3OjA1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMTFdIHJlc29sdmUgcmVzdHJpY3Qga2V5d29yZCBjb25mbGljdAotCi1HQ0MgZGV0ZWN0cyB0aGF0IHdlIGNhbGwgJ3Jlc3RyaWN0JyBhcyBwYXJhbSBuYW1lIGluIGZ1bmN0aW9uCi1zaWduYXR1cmVzIGFuZCBjb21wbGFpbnMgc2luY2UgYm90aCBwYXJhbXMgYXJlIGNhbGxlZCAncmVzdHJpY3QnCi10aGVyZWZvcmUgd2UgdXNlIF9fcmVzdHJpY3QgdG8gZGVub3RlIHRoZSBDOTkga2V5d29yawotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdkYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmggfCA4ICsrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dkYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmggYi9nZGIvZ251bGliL2ltcG9ydC9zeXNfdGltZS5pbi5oCi1pbmRleCBiNGEwZTQ5YzUwLi5kMjJjZWE5YWFmIDEwMDY0NAotLS0tIGEvZ2RiL2dudWxpYi9pbXBvcnQvc3lzX3RpbWUuaW4uaAotKysrIGIvZ2RiL2dudWxpYi9pbXBvcnQvc3lzX3RpbWUuaW4uaAotQEAgLTkzLDIwICs5MywyMCBAQCBzdHJ1Y3QgdGltZXZhbAotICMgICBkZWZpbmUgZ2V0dGltZW9mZGF5IHJwbF9nZXR0aW1lb2ZkYXkKLSAjICBlbmRpZgotIF9HTF9GVU5DREVDTF9SUEwgKGdldHRpbWVvZmRheSwgaW50LAotLSAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqcmVzdHJpY3QsIHZvaWQgKnJlc3RyaWN0KQotKyAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCwgdm9pZCAqX19yZXN0cmljdCkKLSAgICAgICAgICAgICAgICAgICBfR0xfQVJHX05PTk5VTEwgKCgxKSkpOwotIF9HTF9DWFhBTElBU19SUEwgKGdldHRpbWVvZmRheSwgaW50LAotLSAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqcmVzdHJpY3QsIHZvaWQgKnJlc3RyaWN0KSk7Ci0rICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0LCB2b2lkICpfX3Jlc3RyaWN0KSk7Ci0gIyBlbHNlCi0gIyAgaWYgIUBIQVZFX0dFVFRJTUVPRkRBWUAKLSBfR0xfRlVOQ0RFQ0xfU1lTIChnZXR0aW1lb2ZkYXksIGludCwKLS0gICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKnJlc3RyaWN0LCB2b2lkICpyZXN0cmljdCkKLSsgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QsIHZvaWQgKl9fcmVzdHJpY3QpCi0gICAgICAgICAgICAgICAgICAgX0dMX0FSR19OT05OVUxMICgoMSkpKTsKLSAjICBlbmRpZgotIC8qIE5lZWQgdG8gY2FzdCwgYmVjYXVzZSBvbiBnbGliYyBzeXN0ZW1zLCBieSBkZWZhdWx0LCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXpvbmUgKi4gICovCi0gX0dMX0NYWEFMSUFTX1NZU19DQVNUIChnZXR0aW1lb2ZkYXksIGludCwKLS0gICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqcmVzdHJpY3QsIHZvaWQgKnJlc3RyaWN0KSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QsIHZvaWQgKl9fcmVzdHJpY3QpKTsKLSAjIGVuZGlmCi0gX0dMX0NYWEFMSUFTV0FSTiAoZ2V0dGltZW9mZGF5KTsKLSAjIGlmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFCi0tLSAKLTIuMTguMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTEtRml4LWludmFsaWQtc2lncHJvY21hc2stY2FsbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMS1GaXgtaW52YWxpZC1zaWdwcm9jbWFzay1jYWxsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2UwMjVjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMS1GaXgtaW52YWxpZC1zaWdwcm9jbWFzay1jYWxsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSBiMTk4NTU5NWU0NjcyMWJiMTY4YWMzOGY0Yzg0MWE5MTVjYzJmNzk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogWW91c29uZyBaaG91IDx5c3pob3U0dGVjaEBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI0IE1hciAyMDE3IDEwOjM2OjAzICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMTFdIEZpeCBpbnZhbGlkIHNpZ3Byb2NtYXNrIGNhbGwKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotVGhlIFBPU0lYIGRvY3VtZW50IHNheXMKLQotICAgIFRoZSBwdGhyZWFkX3NpZ21hc2soKSBhbmQgc2lncHJvY21hc2soKSBmdW5jdGlvbnMgc2hhbGwgZmFpbCBpZjoKLQotICAgIFtFSU5WQUxdCi0gICAgVGhlIHZhbHVlIG9mIHRoZSBob3cgYXJndW1lbnQgaXMgbm90IGVxdWFsIHRvIG9uZSBvZiB0aGUgZGVmaW5lZCB2YWx1ZXMuCi0KLWFuZCB0aGlzIGlzIGhvdyBtdXNsLWxpYmMgaXMgY3VycmVudGx5IGRvaW5nLiAgRml4IHRoZSBjYWxsIHRvIGJlIHNhZmUKLWFuZCBjb3JyZWN0Ci0KLSBbMV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvZnVuY3Rpb25zL3B0aHJlYWRfc2lnbWFzay5odG1sCi0KLWdkYi9DaGFuZ2VMb2c6Ci0yMDE3LTAzLTI0ICBZb3Vzb25nIFpob3UgIDx5c3pob3U0dGVjaEBnbWFpbC5jb20+Ci0KLSAgICAqIGNvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jIChzYXZlX29yaWdpbmFsX3NpZ25hbHNfc3RhdGUpOgotICAgIEZpeCBpbnZhbGlkIHNpZ3Byb2NtYXNrIGNhbGwuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbbm90IGF1dGhvciwgY2hlcnJ5LXBpY2tlZCBmcm9tIExFREUgaHR0cHM6Ly9idWdzLmxlZGUtcHJvamVjdC5vcmcvaW5kZXgucGhwP2RvPWRldGFpbHMmdGFza19pZD02Mzcmb3BlbmVkZnJvbT0tMSUyQndlZWtdCi1TaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YWRyYXN6aWtAdHljb2ludC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2RiL2NvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jIGIvZ2RiL2NvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jCi1pbmRleCA1YmI2NjMyMWJiLi42NTk3ZGVjYmM2IDEwMDY0NAotLS0tIGEvZ2RiL2NvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jCi0rKysgYi9nZGIvY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMKLUBAIC00MSw3ICs0MSw3IEBAIHNhdmVfb3JpZ2luYWxfc2lnbmFsc19zdGF0ZSAoYm9vbCBxdWlldCkKLSAgIGludCBpOwotICAgaW50IHJlczsKLSAKLS0gIHJlcyA9IHNpZ3Byb2NtYXNrICgwLCAgTlVMTCwgJm9yaWdpbmFsX3NpZ25hbF9tYXNrKTsKLSsgIHJlcyA9IHNpZ3Byb2NtYXNrIChTSUdfQkxPQ0ssICBOVUxMLCAmb3JpZ2luYWxfc2lnbmFsX21hc2spOwotICAgaWYgKHJlcyA9PSAtMSkKLSAgICAgcGVycm9yX3dpdGhfbmFtZSAoKCJzaWdwcm9jbWFzayIpKTsKLSAKLS0tIAotMi4xOC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMS1nZGJzZXJ2ZXItY3RybC1jLWhhbmRsaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDExLWdkYnNlcnZlci1jdHJsLWMtaGFuZGxpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVkZDk0YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMS1nZGJzZXJ2ZXItY3RybC1jLWhhbmRsaW5nLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gM2Q2NzAwZDM4MTUzYTBlYzhlMDgwMGRlNzAzYTUwODlhOGNkM2QyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDI5IE5vdiAyMDE4IDE4OjAwOjIzIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGdkYnNlcnZlciBjdHJsLWMgaGFuZGxpbmcKKworVGhpcyBwcm9ibGVtIHdhcyBjcmVhdGVkIGJ5IHRoZSB1cHN0cmVhbSBjb21taXQgNzg3MDhiN2M4YworQWZ0ZXIgYXBwbHlpbmcgdGhlIGNvbW1pdCwgaXQgd2lsbCBzZW5kIFNJR0lOVCB0byB0aGUgcHJvY2VzcworZ3JvdXAoLXNpZ25hbF9waWQpLgorQnV0IGlmIHdlIHVzZSBnZGJzZXJ2ZXIgc2VuZCBTSUdJTlQsIGFuZCB0aGUgYXR0YWNoZWQgcHJvY2VzcyBpcyBub3QgYQorcHJvY2VzcworZ3JvdXAgbGVhZGVyLCB0aGVuIHRoZSAia2lsbCAoLXNpZ25hbF9waWQsIFNJR0lOVCkiIHJldHVybnMgZXJyb3IgYW5kCitmYWlscyAgdG8KK2ludGVycnVwdCB0aGUgYXR0YWNoZWQgcHJvY2Vzcy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKK1todHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xODk0NV0KKworQXV0aG9yOiBKb3NoIEdhbworU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jIHwgNCArLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMKK2luZGV4IDQyNTU3OTVlYTYuLjc2MmY4YmFmYjYgMTAwNjQ0CistLS0gYS9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCisrKysgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCitAQCAtNTkwNCw5ICs1OTA0LDcgQEAgbGludXhfbG9va191cF9zeW1ib2xzICh2b2lkKQorIHN0YXRpYyB2b2lkCisgbGludXhfcmVxdWVzdF9pbnRlcnJ1cHQgKHZvaWQpCisgeworLSAgLyogU2VuZCBhIFNJR0lOVCB0byB0aGUgcHJvY2VzcyBncm91cC4gIFRoaXMgYWN0cyBqdXN0IGxpa2UgdGhlIHVzZXIKKy0gICAgIHR5cGVkIGEgXkMgb24gdGhlIGNvbnRyb2xsaW5nIHRlcm1pbmFsLiAgKi8KKy0gIGtpbGwgKC1zaWduYWxfcGlkLCBTSUdJTlQpOworKyAga2lsbCAoc2lnbmFsX3BpZCwgU0lHSU5UKTsKKyB9CisgCisgLyogQ29weSBMRU4gYnl0ZXMgZnJvbSBpbmZlcmlvcidzIGF1eGlsaWFyeSB2ZWN0b3Igc3RhcnRpbmcgYXQgT0ZGU0VUCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiXzguMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYl85LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfOC4zLjEuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfOS4xLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jCmluZGV4IDk1YWIzOTcuLjQxMzFjOTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jCkBAIC0yMiw2ICsyMiw3IEBACiBFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXBlcmw9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL3BlcmwgXAogCQktLXdpdGhvdXQtdGNsdGsgXAogIgorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC0td2l0aC1naXRjb25maWc9L2V0Yy9naXRjb25maWcgIgogCiAjIE5lZWRzIGJyb2tlbnNlcCBhcyB0aGlzIGRvZXNuJ3QgdXNlIGF1dG9tYWtlCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGVybG5hdGl2ZSBiYXNoLWNvbXBsZXRpb24KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXRfMi4yNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjI0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5Y2IzODIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjI0LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIGdpdC5pbmMKLQotRVhUUkFfT0VDT05GICs9ICJhY19jdl9zbnByaW50Zl9yZXR1cm5zX2JvZ3VzPW5vIFwKLSAgICAgICAgICAgICAgICAgYWNfY3ZfZnJlYWRfcmVhZHNfZGlyZWN0b3JpZXM9JHthY19jdl9mcmVhZF9yZWFkc19kaXJlY3Rvcmllcz15ZXN9IFwKLSAgICAgICAgICAgICAgICAgIgotRVhUUkFfT0VNQUtFICs9ICJOT19HRVRURVhUPTEiCi0KLVNSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gImVkMzkzNjFhM2FlMzYyYzhhZjg1MmQxYTA2OTkyYmMyIgotU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiYWQxMTAzMGQyZWFjNjU2ZWU5ZTg4NjJmNTZkMTYxMDU1MGY3ODY3MTgxYmVmZjgxNGM3NzEyYTk5MTkyZTk5ZCIKLVNSQ19VUklbbWFucGFnZXMubWQ1c3VtXSA9ICI1NzQ2NWU4M2YxM2JhOTEwYTE3OGI3MTdkOTM5NThjMCIKLVNSQ19VUklbbWFucGFnZXMuc2hhMjU2c3VtXSA9ICJjZTk5NWY4NmY0NDFiNTZhYjFmZDA3ODhhOTQ3ODY5MDRhZTJlMjk4OWU3MTkxZmQ2ODA2MDAwMzAxMTM2NmQ3IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjI0LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWVhMzFlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjI0LjEuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSBnaXQuaW5jCisKK0VYVFJBX09FQ09ORiArPSAiYWNfY3Zfc25wcmludGZfcmV0dXJuc19ib2d1cz1ubyBcCisgICAgICAgICAgICAgICAgIGFjX2N2X2ZyZWFkX3JlYWRzX2RpcmVjdG9yaWVzPSR7YWNfY3ZfZnJlYWRfcmVhZHNfZGlyZWN0b3JpZXM9eWVzfSBcCisgICAgICAgICAgICAgICAgICIKK0VYVFJBX09FTUFLRSArPSAiTk9fR0VUVEVYVD0xIgorCitTUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICIxNjZiZGU5NmFkYmJjMTFjODg0M2Q0ZjhmNGY5ODExYiIKK1NSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gImFkNTMzNDk1NjMwMWM4Njg0MWViMWU1YjFiYjIwODg0YTZiYWQ4OWExMGE2NzYyYzk1ODIyMGM3Y2Y2NGRhMDIiCitTUkNfVVJJW21hbnBhZ2VzLm1kNXN1bV0gPSAiMzFjMjI3MmE4OTc5MDIyNDk3YmEzZDQyMDJkZjE0NWQiCitTUkNfVVJJW21hbnBhZ2VzLnNoYTI1NnN1bV0gPSAiOWE3YWUzYTA5M2JlYTM5NzcwZWI5NmNhM2U1YjQwYmZmN2FmMGI5ZjYxMjNmMDg5ZDc4MjFkMGU1YjhlMTIzMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dsaWRlL2dsaWRlXzAuMTMuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dsaWRlL2dsaWRlXzAuMTMuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2ZhYWY0YS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbGlkZS9nbGlkZV8wLjEzLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1TVU1NQVJZID0gIlZlbmRvciBQYWNrYWdlIE1hbmFnZW1lbnQgZm9yIEdvbGFuZyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2xpZGUuc2giCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy8ke0dPX0lNUE9SVH0vTElDRU5TRTttZDU9NTQ5MDVjZjg5NGY4Y2M0MTZhOTJmNGZjMzUwYzM1YjIiCi0KLUdPX0lNUE9SVCA9ICJnaXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlIgotU1JDX1VSSSA9ICJnaXQ6Ly8ke0dPX0lNUE9SVH0iCi1TUkNSRVYgPSAiOWVmNmNhMzEzYjMyMDAwNzk4NjFmMmRlNGU1NjdiMWQyMjA4MWQxOSIKLQotaW5oZXJpdCBnbwotCi1SREVQRU5EU18ke1BOfS1kZXYgKz0gImJhc2giCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi0jIGZvciB4ODYgZW5kcyB3aXRoIHRleHRyZWwgaW4gJHtQTn0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzE4NTYzMS8KLSMgRVJST1I6IFFBIElzc3VlOiBFTEYgYmluYXJ5ICcvd29yay9pNTg2LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS91c3IvYmluL2dsaWRlJyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQgW3RleHRyZWxdCi1JTlNBTkVfU0tJUF8ke1BOfSArPSAidGV4dHJlbCIKLQotIyBmb3IgYWFyY2g2NCBlbmRzIHdpdGggdGV4dHJlbCBpbiAke1BOfS1wdGVzdAotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTg1NjMzLwotIyBFUlJPUjogUUEgSXNzdWU6IEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9nbGlkZS50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKLSMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL2RlcGVuZGVuY3kvZGVwZW5kZW5jeS50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKLSMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL3JlcG8vcmVwby50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKLSMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL21pcnJvcnMvbWlycm9ycy50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKLSMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL2NmZy9jZmcudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0Ci0jIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9nb2RlcC9zdHJpcC9zdHJpcC50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKLSMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL3BhdGgvcGF0aC50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKLSMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL3RyZWUvdHJlZS50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKLSMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL3V0aWwvdXRpbC50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKLSMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL2FjdGlvbi9hY3Rpb24udGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0Ci0jIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9jYWNoZS9jYWNoZS50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQgW3RleHRyZWxdCi1JTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAidGV4dHJlbCIKLQotIyBmYWlscyB0byBydW4gdGFzayBjb21waWxlX3B0ZXN0X2Jhc2Ugb24gbWlwcwotUFRFU1RfRU5BQkxFRF9taXBzYXJjaCA9ICIwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2xpZGUvZ2xpZGVfMC4xMy4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2xpZGUvZ2xpZGVfMC4xMy4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViYWQwZWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbGlkZS9nbGlkZV8wLjEzLjMuYmIKQEAgLTAsMCArMSwzOCBAQAorU1VNTUFSWSA9ICJWZW5kb3IgUGFja2FnZSBNYW5hZ2VtZW50IGZvciBHb2xhbmciCitIT01FUEFHRSA9ICJodHRwczovL2dsaWRlLnNoIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvJHtHT19JTVBPUlR9L0xJQ0VOU0U7bWQ1PTU0OTA1Y2Y4OTRmOGNjNDE2YTkyZjRmYzM1MGMzNWIyIgorCitHT19JTVBPUlQgPSAiZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZSIKK1NSQ19VUkkgPSAiZ2l0Oi8vJHtHT19JTVBPUlR9IgorU1JDUkVWID0gIjhlZDViOTI5MjM3OWQ4NmMzOTU5MmE3ZTZhNThlYjljOTAzODc3Y2YiCisKK2luaGVyaXQgZ28KKworUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJiYXNoIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworIyBmb3IgeDg2IGVuZHMgd2l0aCB0ZXh0cmVsIGluICR7UE59CisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xODU2MzEvCisjIEVSUk9SOiBRQSBJc3N1ZTogRUxGIGJpbmFyeSAnL3dvcmsvaTU4Ni1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUvdXNyL2Jpbi9nbGlkZScgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0IFt0ZXh0cmVsXQorSU5TQU5FX1NLSVBfJHtQTn0gKz0gInRleHRyZWwiCisKKyMgZm9yIGFhcmNoNjQgZW5kcyB3aXRoIHRleHRyZWwgaW4gJHtQTn0tcHRlc3QKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzE4NTYzMy8KKyMgRVJST1I6IFFBIElzc3VlOiBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvZ2xpZGUudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9kZXBlbmRlbmN5L2RlcGVuZGVuY3kudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9yZXBvL3JlcG8udGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9taXJyb3JzL21pcnJvcnMudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9jZmcvY2ZnLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAorIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvZ29kZXAvc3RyaXAvc3RyaXAudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9wYXRoL3BhdGgudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS90cmVlL3RyZWUudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS91dGlsL3V0aWwudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9hY3Rpb24vYWN0aW9uLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAorIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvY2FjaGUvY2FjaGUudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0IFt0ZXh0cmVsXQorSU5TQU5FX1NLSVBfJHtQTn0tcHRlc3QgKz0gInRleHRyZWwiCisKKyMgZmFpbHMgdG8gcnVuIHRhc2sgY29tcGlsZV9wdGVzdF9iYXNlIG9uIG1pcHMKK1BURVNUX0VOQUJMRURfbWlwc2FyY2ggPSAiMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWdfZ2l0LmJiCmluZGV4IDE2MzBjMTIuLjQ4YjdlNmQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ19naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnX2dpdC5iYgpAQCAtOCw4ICs4LDggQEAKIAogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKIAotU1JDUkVWID0gImI5ODQyNGMyNDkxMTliNzlkM2Y3MDllMjZlYjg2ZjJmZDRkNWU1ZjMiCi1QViA9ICIyMDE5MDUwMStnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICI1MjU2ODE3YWNlODQ5MzUwMmVjODg1MDFhMTllNDA1MWMyZTIyMGIwIgorUFYgPSAiMjAyMDAxMTcrZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY29uZmlnLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9nbnUtY29uZmlnaXplLmluIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQxNGIxNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLXJlcXVpcmUgZ28tY29tbW9uLmluYwotCi1HT19CQVNFVkVSU0lPTiA9ICIxLjEyIgotR09fTUlOT1IgPSAiLjkiCi1QViAuPSAiJHtHT19NSU5PUn0iCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtGSUxFX0RJUk5BTUV9L2dvLSR7R09fQkFTRVZFUlNJT059OiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NWQ0OTUwZWNiN2IyNmQyYzVlNGU3YjRlMGRkNzQ3MDciCi0KLVNSQ19VUkkgKz0gIlwKLSAgICBmaWxlOi8vMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLWFsbG93LUdPVE9PTERJUi10by1iZS1vdmVycmlkZGVuLWluLXRoZS1lbnZpcm9ubWVudC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDQtbGQtYWRkLXNvbmFtZS10by1zaGFyZWFibGUtb2JqZWN0cy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDYtY21kLWRpc3Qtc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA4LXVzZS1HT0JVSUxETU9ERS10by1zZXQtYnVpbGRtb2RlLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1yZWxlYXNlLWJyYW5jaC5nbzEuMTItc2VjdXJpdHktbmV0LXRleHRwcm90by1kb24tdC1uLnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovLzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2giCi0KLVNSQ19VUklbbWFpbi5tZDVzdW1dID0gIjYxMzIxMDlkNDA1MGRhMzQ5ZWFkYzlmN2IwMzA0ZWY0IgotU1JDX1VSSVttYWluLnNoYTI1NnN1bV0gPSAiYWIwZTU2ZWQ5YzQ3MzJhNjUzZWQyMmUyMzI2NTI3MDlhZmJmNTczZTcxMGY1NmEwN2Y3ZmRlY2E1NzhkNjJmYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDQyODU4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDdjYzUxOWFhNWY4NGNmOGZjN2FjOGMxMGZjNjlhYTgwNDAzMzBlYTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotRGF0ZTogTW9uLCAxOSBGZWIgMjAxOCAwODo0OTozMyAtMDgwMAotU3ViamVjdDogW1BBVENIXSBhbGxvdyBDQyBhbmQgQ1hYIHRvIGhhdmUgbXVsdGlwbGUgd29yZHMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLQotLS0tCi0gc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbwotaW5kZXggYWZhZGJhZC4uY2VkYmZiZiAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbwotKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCi1AQCAtODUsMTEgKzg1LDExIEBAIGZ1bmMgTWtFbnYoKSBbXWNmZy5FbnZWYXIgewotIAotIAljYyA6PSBjZmcuRGVmYXVsdENDKGNmZy5Hb29zLCBjZmcuR29hcmNoKQotIAlpZiBlbnYgOj0gc3RyaW5ncy5GaWVsZHMob3MuR2V0ZW52KCJDQyIpKTsgbGVuKGVudikgPiAwIHsKLS0JCWNjID0gZW52WzBdCi0rCQljYyA9IHN0cmluZ3MuSm9pbihlbnYsICIgIikKLSAJfQotIAljeHggOj0gY2ZnLkRlZmF1bHRDWFgoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpCi0gCWlmIGVudiA6PSBzdHJpbmdzLkZpZWxkcyhvcy5HZXRlbnYoIkNYWCIpKTsgbGVuKGVudikgPiAwIHsKLS0JCWN4eCA9IGVudlswXQotKwkJY3h4ID0gc3RyaW5ncy5Kb2luKGVudiwgIiAiKQotIAl9Ci0gCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkNDIiwgVmFsdWU6IGNjfSkKLSAJZW52ID0gYXBwZW5kKGVudiwgY2ZnLkVudlZhcntOYW1lOiAiQ1hYIiwgVmFsdWU6IGN4eH0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDEtcmVsZWFzZS1icmFuY2guZ28xLjEyLXNlY3VyaXR5LW5ldC10ZXh0cHJvdG8tZG9uLXQtbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMS1yZWxlYXNlLWJyYW5jaC5nbzEuMTItc2VjdXJpdHktbmV0LXRleHRwcm90by1kb24tdC1uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjM5ZGJkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMS1yZWxlYXNlLWJyYW5jaC5nbzEuMTItc2VjdXJpdHktbmV0LXRleHRwcm90by1kb24tdC1uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLUZyb20gMjY1YjY5MWFjNDQwYmZiNzExZDhkZTMyMzM0NmY3ZDcyZTYyMGVmZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZpbGlwcG8gVmFsc29yZGEgPGZpbGlwcG9AZ29sYW5nLm9yZz4KLURhdGU6IFRodSwgMTIgU2VwIDIwMTkgMTI6Mzc6MzYgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gW3JlbGVhc2UtYnJhbmNoLmdvMS4xMi1zZWN1cml0eV0gbmV0L3RleHRwcm90bzogZG9uJ3QKLSBub3JtYWxpemUgaGVhZGVycyB3aXRoIHNwYWNlcyBiZWZvcmUgdGhlIGNvbG9uCi0KLVJGQyA3MjMwIGlzIGNsZWFyIGFib3V0IGhlYWRlcnMgd2l0aCBhIHNwYWNlIGJlZm9yZSB0aGUgY29sb24sIGxpa2UKLQotWC1BbnN3ZXIgOiA0MgotCi1iZWluZyBpbnZhbGlkLCBidXQgd2UndmUgYmVlbiBhY2NlcHRpbmcgYW5kIG5vcm1hbGl6aW5nIHRoZW0gZm9yIGNvbXBhdGliaWxpdHkKLXB1cnBvc2VzIHNpbmNlIENMIDU2OTAwNTkgaW4gMjAxMi4KLQotT24gdGhlIGNsaWVudCBzaWRlLCB0aGlzIGlzIGhhcm1sZXNzIGFuZCBpbmRlZWQgbW9zdCBicm93c2VycyBiZWhhdmUgdGhlIHNhbWUKLXRvIHRoaXMgZGF5LiBPbiB0aGUgc2VydmVyIHNpZGUsIHRoaXMgYmVjb21lcyBhIHNlY3VyaXR5IGlzc3VlIHdoZW4gdGhlCi1iZWhhdmlvciBkb2Vzbid0IG1hdGNoIHRoYXQgb2YgYSByZXZlcnNlIHByb3h5IHNpdHRpbmcgaW4gZnJvbnQgb2YgdGhlIHNlcnZlci4KLQotRm9yIGV4YW1wbGUsIGlmIGEgV0FGIGFjY2VwdHMgdGhlbSB3aXRob3V0IG5vcm1hbGl6aW5nIHRoZW0sIGl0IG1pZ2h0IGJlCi1wb3NzaWJsZSB0byBieXBhc3MgaXRzIGZpbHRlcnMsIGJlY2F1c2UgdGhlIEdvIHNlcnZlciB3b3VsZCBpbnRlcnByZXQgdGhlCi1oZWFkZXIgZGlmZmVyZW50bHkuIFdvcnNlLCBpZiB0aGUgcmV2ZXJzZSBwcm94eSBjb2FsZXNjZXMgcmVxdWVzdHMgb250byBhCi1zaW5nbGUgSFRUUC8xLjEgY29ubmVjdGlvbiB0byBhIEdvIHNlcnZlciwgdGhlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHJlcXVlc3QKLWJvdW5kYXJpZXMgY2FuIGdldCBvdXQgb2Ygc3luYyBiZXR3ZWVuIHRoZW0sIGFsbG93aW5nIGFuIGF0dGFja2VyIHRvIHRhY2sgYW4KLWFyYml0cmFyeSBtZXRob2QgYW5kIHBhdGggb250byBhIHJlcXVlc3QgYnkgb3RoZXIgY2xpZW50cywgaW5jbHVkaW5nCi1hdXRoZW50aWNhdGlvbiBoZWFkZXJzIHVua25vd24gdG8gdGhlIGF0dGFja2VyLgotCi1UaGlzIHdhcyByZWNlbnRseSBwcmVzZW50ZWQgYXQgbXVsdGlwbGUgc2VjdXJpdHkgY29uZmVyZW5jZXM6Ci1odHRwczovL3BvcnRzd2lnZ2VyLm5ldC9ibG9nL2h0dHAtZGVzeW5jLWF0dGFja3MtcmVxdWVzdC1zbXVnZ2xpbmctcmVib3JuCi0KLW5ldC9odHRwIHNlcnZlcnMgYWxyZWFkeSByZWplY3QgaGVhZGVyIGtleXMgd2l0aCBpbnZhbGlkIGNoYXJhY3RlcnMuCi1TaW1wbHkgc3RvcCBub3JtYWxpemluZyBleHRyYSBzcGFjZXMgaW4gbmV0L3RleHRwcm90bywgbGV0IGl0IHJldHVybiB0aGVtCi11bmNoYW5nZWQgbGlrZSBpdCBkb2VzIGZvciBvdGhlciBpbnZhbGlkIGhlYWRlcnMsIGFuZCBsZXQgbmV0L2h0dHAgZW5mb3JjZQotUkZDIDcyMzAsIHdoaWNoIGlzIEhUVFAgc3BlY2lmaWMuIFRoaXMgbG9zZXMgdXMgbm9ybWFsaXphdGlvbiBvbiB0aGUgY2xpZW50Ci1zaWRlLCBidXQgdGhlcmUncyBubyByaWdodCBhbnN3ZXIgb24gdGhlIGNsaWVudCBzaWRlIGFueXdheSwgYW5kIGhpZGluZyB0aGUKLWlzc3VlIHNvdW5kcyB3b3JzZSB0aGFuIGxldHRpbmcgdGhlIGFwcGxpY2F0aW9uIGRlY2lkZS4KLQotRml4ZXMgQ1ZFLTIwMTktMTYyNzYKLQotQ2hhbmdlLUlkOiBJNmQyNzJkZTgyN2UwODcwZGE4NWQ5M2RmNzcwZDZhMGUxNjFiYmNmMQotUmV2aWV3ZWQtb246IGh0dHBzOi8vdGVhbS1yZXZpZXcuZ2l0LmNvcnAuZ29vZ2xlLmNvbS9jL2dvbGFuZy9nby1wcml2YXRlLysvNTQ5NzE5Ci1SZXZpZXdlZC1ieTogQnJhZCBGaXR6cGF0cmljayA8YnJhZGZpdHpAZ29vZ2xlLmNvbT4KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDEyODBiODY4ZTgyYmYxNzNlYTNlOTg4YmUzMDkyZDE2MGVlNjYwODIpCi1SZXZpZXdlZC1vbjogaHR0cHM6Ly90ZWFtLXJldmlldy5naXQuY29ycC5nb29nbGUuY29tL2MvZ29sYW5nL2dvLXByaXZhdGUvKy81NTg3NzYKLVJldmlld2VkLWJ5OiBEbWl0cmkgU2h1cmFseW92IDxkbWl0c2h1ckBnb29nbGUuY29tPgotCi1DVkU6IENWRS0yMDE5LTE2Mjc2Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9nb2xhbmcvZ28vY29tbWl0LzZlNmY0YWFmNzBjOGIxY2M4MWU2NWEyNjMzMmFhOTQwOWRlMDNhZDhdCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9uZXQvaHR0cC9zZXJ2ZV90ZXN0LmdvICAgICAgIHwgIDQgKysrKwotIHNyYy9uZXQvaHR0cC90cmFuc3BvcnRfdGVzdC5nbyAgIHwgMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gc3JjL25ldC90ZXh0cHJvdG8vcmVhZGVyLmdvICAgICAgfCAxMCArKy0tLS0tLS0tCi0gc3JjL25ldC90ZXh0cHJvdG8vcmVhZGVyX3Rlc3QuZ28gfCAxMyArKysrKystLS0tLS0tCi0gNCBmaWxlcyBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9uZXQvaHR0cC9zZXJ2ZV90ZXN0LmdvIGIvc3JjL25ldC9odHRwL3NlcnZlX3Rlc3QuZ28KLWluZGV4IDZlYjAwODhhOTYuLjg5YmZkZmJiODIgMTAwNjQ0Ci0tLS0gYS9zcmMvbmV0L2h0dHAvc2VydmVfdGVzdC5nbwotKysrIGIvc3JjL25ldC9odHRwL3NlcnZlX3Rlc3QuZ28KLUBAIC00NzQ4LDYgKzQ3NDgsMTAgQEAgZnVuYyBUZXN0U2VydmVyVmFsaWRhdGVzSGVhZGVycyh0ICp0ZXN0aW5nLlQpIHsKLSAJCXsiZm9vXHhmZmJhcjogZm9vXHJcbiIsIDQwMH0sICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpbmFyeSBpbiBoZWFkZXIKLSAJCXsiZm9vXHgwMGJhcjogZm9vXHJcbiIsIDQwMH0sICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpbmFyeSBpbiBoZWFkZXIKLSAJCXsiRm9vOiAiICsgc3RyaW5ncy5SZXBlYXQoIngiLCAxPDwyMSkgKyAiXHJcbiIsIDQzMX0sIC8vIGhlYWRlciB0b28gbGFyZ2UKLSsJCS8vIFNwYWNlcyBiZXR3ZWVuIHRoZSBoZWFkZXIga2V5IGFuZCBjb2xvbiBhcmUgbm90IGFsbG93ZWQuCi0rCQkvLyBTZWUgUkZDIDcyMzAsIFNlY3Rpb24gMy4yLjQuCi0rCQl7IkZvbyA6IGJhclxyXG4iLCA0MDB9LAotKwkJeyJGb29cdDogYmFyXHJcbiIsIDQwMH0sCi0gCi0gCQl7ImZvbzogZm9vIGZvb1xyXG4iLCAyMDB9LCAgICAvLyBMV1Mgc3BhY2UgaXMgb2theQotIAkJeyJmb286IGZvb1x0Zm9vXHJcbiIsIDIwMH0sICAgLy8gTFdTIHRhYiBpcyBva2F5Ci1kaWZmIC0tZ2l0IGEvc3JjL25ldC9odHRwL3RyYW5zcG9ydF90ZXN0LmdvIGIvc3JjL25ldC9odHRwL3RyYW5zcG9ydF90ZXN0LmdvCi1pbmRleCA1YzMyOTU0M2UyLi41ZTU0MzhhNzA4IDEwMDY0NAotLS0tIGEvc3JjL25ldC9odHRwL3RyYW5zcG9ydF90ZXN0LmdvCi0rKysgYi9zcmMvbmV0L2h0dHAvdHJhbnNwb3J0X3Rlc3QuZ28KLUBAIC01MTMzLDMgKzUxMzMsMzAgQEAgZnVuYyBUZXN0VHJhbnNwb3J0SWdub3JlczQwOCh0ICp0ZXN0aW5nLlQpIHsKLSAJfQotIAl0LkZhdGFsZigidGltZW91dCBhZnRlciAldiB3YWl0aW5nIGZvciBUcmFuc3BvcnQgY29ubmVjdGlvbnMgdG8gZGllIG9mZiIsIHRpbWUuU2luY2UodDApKQotIH0KLSsKLStmdW5jIFRlc3RJbnZhbGlkSGVhZGVyUmVzcG9uc2UodCAqdGVzdGluZy5UKSB7Ci0rCXNldFBhcmFsbGVsKHQpCi0rCWRlZmVyIGFmdGVyVGVzdCh0KQotKwljc3QgOj0gbmV3Q2xpZW50U2VydmVyVGVzdCh0LCBoMU1vZGUsIEhhbmRsZXJGdW5jKGZ1bmModyBSZXNwb25zZVdyaXRlciwgciAqUmVxdWVzdCkgewotKwkJY29ubiwgYnVmLCBfIDo9IHcuKEhpamFja2VyKS5IaWphY2soKQotKwkJYnVmLldyaXRlKFtdYnl0ZSgiSFRUUC8xLjEgMjAwIE9LXHJcbiIgKwotKwkJCSJEYXRlOiBXZWQsIDMwIEF1ZyAyMDE3IDE5OjA5OjI3IEdNVFxyXG4iICsKLSsJCQkiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLThcclxuIiArCi0rCQkJIkNvbnRlbnQtTGVuZ3RoOiAwXHJcbiIgKwotKwkJCSJGb28gOiBiYXJcclxuXHJcbiIpKQotKwkJYnVmLkZsdXNoKCkKLSsJCWNvbm4uQ2xvc2UoKQotKwl9KSkKLSsJZGVmZXIgY3N0LmNsb3NlKCkKLSsJcmVzLCBlcnIgOj0gY3N0LmMuR2V0KGNzdC50cy5VUkwpCi0rCWlmIGVyciAhPSBuaWwgewotKwkJdC5GYXRhbChlcnIpCi0rCX0KLSsJZGVmZXIgcmVzLkJvZHkuQ2xvc2UoKQotKwlpZiB2IDo9IHJlcy5IZWFkZXIuR2V0KCJGb28iKTsgdiAhPSAiIiB7Ci0rCQl0LkVycm9yZihgdW5leHBlY3RlZCAiRm9vIiBoZWFkZXI6ICVxYCwgdikKLSsJfQotKwlpZiB2IDo9IHJlcy5IZWFkZXIuR2V0KCJGb28gIik7IHYgIT0gImJhciIgewotKwkJdC5FcnJvcmYoYGJhZCAiRm9vICIgaGVhZGVyIHZhbHVlOiAlcSwgd2FudCAlcWAsIHYsICJiYXIiKQotKwl9Ci0rfQotZGlmZiAtLWdpdCBhL3NyYy9uZXQvdGV4dHByb3RvL3JlYWRlci5nbyBiL3NyYy9uZXQvdGV4dHByb3RvL3JlYWRlci5nbwotaW5kZXggMmM0ZjI1ZDVhZS4uMWE1ZTM2NGNmNyAxMDA2NDQKLS0tLSBhL3NyYy9uZXQvdGV4dHByb3RvL3JlYWRlci5nbwotKysrIGIvc3JjL25ldC90ZXh0cHJvdG8vcmVhZGVyLmdvCi1AQCAtNDkzLDE4ICs0OTMsMTIgQEAgZnVuYyAociAqUmVhZGVyKSBSZWFkTUlNRUhlYWRlcigpIChNSU1FSGVhZGVyLCBlcnJvcikgewotIAkJCXJldHVybiBtLCBlcnIKLSAJCX0KLSAKLS0JCS8vIEtleSBlbmRzIGF0IGZpcnN0IGNvbG9uOyBzaG91bGQgbm90IGhhdmUgdHJhaWxpbmcgc3BhY2VzCi0tCQkvLyBidXQgdGhleSBhcHBlYXIgaW4gdGhlIHdpbGQsIHZpb2xhdGluZyBzcGVjcywgc28gd2UgcmVtb3ZlCi0tCQkvLyB0aGVtIGlmIHByZXNlbnQuCi0rCQkvLyBLZXkgZW5kcyBhdCBmaXJzdCBjb2xvbi4KLSAJCWkgOj0gYnl0ZXMuSW5kZXhCeXRlKGt2LCAnOicpCi0gCQlpZiBpIDwgMCB7Ci0gCQkJcmV0dXJuIG0sIFByb3RvY29sRXJyb3IoIm1hbGZvcm1lZCBNSU1FIGhlYWRlciBsaW5lOiAiICsgc3RyaW5nKGt2KSkKLSAJCX0KLS0JCWVuZEtleSA6PSBpCi0tCQlmb3IgZW5kS2V5ID4gMCAmJiBrdltlbmRLZXktMV0gPT0gJyAnIHsKLS0JCQllbmRLZXktLQotLQkJfQotLQkJa2V5IDo9IGNhbm9uaWNhbE1JTUVIZWFkZXJLZXkoa3ZbOmVuZEtleV0pCi0rCQlrZXkgOj0gY2Fub25pY2FsTUlNRUhlYWRlcktleShrdls6aV0pCi0gCi0gCQkvLyBBcyBwZXIgUkZDIDcyMzAgZmllbGQtbmFtZSBpcyBhIHRva2VuLCB0b2tlbnMgY29uc2lzdCBvZiBvbmUgb3IgbW9yZSBjaGFycy4KLSAJCS8vIFdlIGNvdWxkIHJldHVybiBhIFByb3RvY29sRXJyb3IgaGVyZSwgYnV0IGJldHRlciB0byBiZSBsaWJlcmFsIGluIHdoYXQgd2UKLWRpZmYgLS1naXQgYS9zcmMvbmV0L3RleHRwcm90by9yZWFkZXJfdGVzdC5nbyBiL3NyYy9uZXQvdGV4dHByb3RvL3JlYWRlcl90ZXN0LmdvCi1pbmRleCBmODVmYmRjMzZkLi5iOTJmZGNkM2M3IDEwMDY0NAotLS0tIGEvc3JjL25ldC90ZXh0cHJvdG8vcmVhZGVyX3Rlc3QuZ28KLSsrKyBiL3NyYy9uZXQvdGV4dHByb3RvL3JlYWRlcl90ZXN0LmdvCi1AQCAtMTg4LDExICsxODgsMTAgQEAgZnVuYyBUZXN0TGFyZ2VSZWFkTUlNRUhlYWRlcih0ICp0ZXN0aW5nLlQpIHsKLSAJfQotIH0KLSAKLS0vLyBUZXN0IHRoYXQgd2UgcmVhZCBzbGlnaHRseS1ib2d1cyBNSU1FIGhlYWRlcnMgc2VlbiBpbiB0aGUgd2lsZCwKLS0vLyB3aXRoIHNwYWNlcyBiZWZvcmUgY29sb25zLCBhbmQgc3BhY2VzIGluIGtleXMuCi0rLy8gVGVzdFJlYWRNSU1FSGVhZGVyTm9uQ29tcGxpYW50IGNoZWNrcyB0aGF0IHdlIGRvbid0IG5vcm1hbGl6ZSBoZWFkZXJzCi0rLy8gd2l0aCBzcGFjZXMgYmVmb3JlIGNvbG9ucywgYW5kIGFjY2VwdCBzcGFjZXMgaW4ga2V5cy4KLSBmdW5jIFRlc3RSZWFkTUlNRUhlYWRlck5vbkNvbXBsaWFudCh0ICp0ZXN0aW5nLlQpIHsKLS0JLy8gSW52YWxpZCBIVFRQIHJlc3BvbnNlIGhlYWRlciBhcyBzZW50IGJ5IGFuIEF4aXMgc2VjdXJpdHkKLS0JLy8gY2FtZXJhOiAodGhpcyBpcyBoYW5kbGVkIGJ5IElFLCBGaXJlZm94LCBDaHJvbWUsIGN1cmwsIGV0Yy4pCi0rCS8vIFRoZXNlIGludmFsaWQgaGVhZGVycyB3aWxsIGJlIHJlamVjdGVkIGJ5IG5ldC9odHRwIGFjY29yZGluZyB0byBSRkMgNzIzMC4KLSAJciA6PSByZWFkZXIoIkZvbzogYmFyXHJcbiIgKwotIAkJIkNvbnRlbnQtTGFuZ3VhZ2U6IGVuXHJcbiIgKwotIAkJIlNJRCA6IDBcclxuIiArCi1AQCAtMjAyLDkgKzIwMSw5IEBAIGZ1bmMgVGVzdFJlYWRNSU1FSGVhZGVyTm9uQ29tcGxpYW50KHQgKnRlc3RpbmcuVCkgewotIAl3YW50IDo9IE1JTUVIZWFkZXJ7Ci0gCQkiRm9vIjogICAgICAgICAgICAgIHsiYmFyIn0sCi0gCQkiQ29udGVudC1MYW5ndWFnZSI6IHsiZW4ifSwKLS0JCSJTaWQiOiAgICAgICAgICAgICAgeyIwIn0sCi0tCQkiQXVkaW8gTW9kZSI6ICAgICAgIHsiTm9uZSJ9LAotLQkJIlByaXZpbGVnZSI6ICAgICAgICB7IjEyNyJ9LAotKwkJIlNJRCAiOiAgICAgICAgICAgICB7IjAifSwKLSsJCSJBdWRpbyBNb2RlICI6ICAgICAgeyJOb25lIn0sCi0rCQkiUHJpdmlsZWdlICI6ICAgICAgIHsiMTI3In0sCi0gCX0KLSAJaWYgIXJlZmxlY3QuRGVlcEVxdWFsKG0sIHdhbnQpIHx8IGVyciAhPSBuaWwgewotIAkJdC5GYXRhbGYoIlJlYWRNSU1FSGVhZGVyID1cbiV2LCAldjsgd2FudDpcbiV2IiwgbSwgZXJyLCB3YW50KQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZiODU2MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxOCArMCwwIEBACi1Gcm9tIDQ3ZGI2OWUyMGVkNjZmYjYyYjAxYWZmZDgzZDgyOTY1NGI4Mjk4OTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotRGF0ZTogTW9uLCAxOSBGZWIgMjAxOCAwODo1MDo1OSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBjbWQvZ286IG1ha2UgY29udGVudC1iYXNlZCBoYXNoIGdlbmVyYXRpb24gbGVzcyBwZWRhbnRpYwotCi1HbyAxLjEwJ3MgYnVpbGQgdG9vbCBub3cgdXNlcyBjb250ZW50LWJhc2VkIGhhc2hlcyB0bwotZGV0ZXJtaW5lIHdoZW4gc29tZXRoaW5nIHNob3VsZCBiZSBidWlsdCBvciByZS1idWlsdC4KLVRoaXMgc2FtZSBtZWNoYW5pc20gaXMgdXNlZCB0byBtYWludGFpbiBhIGJ1aWx0LWFydGlmYWN0Ci1jYWNoZSBmb3Igc3BlZWRpbmcgdXAgYnVpbGRzLgotCi1Ib3dldmVyLCB0aGUgaGFzaGVzIGl0IGdlbmVyYXRlcyBpbmNsdWRlIGluZm9ybWF0aW9uIHRoYXQKLWRvZXNuJ3Qgd29yayB3ZWxsIHdpdGggT0UsIG5vciB3aXRoIHVzaW5nIGEgc2hhcmVkIHJ1bnRpbWUKLWxpYnJhcnkuCi0KLUZpcnN0LCBpdCBlbWJlZHMgcGF0aCBuYW1lcyB0byBzb3VyY2UgZmlsZXMsIHVubGVzcwotYnVpbGRpbmcgd2l0aGluIEdPUk9PVC4gIFRoaXMgcHJldmVudHMgdGhlIGJ1aWxkaW5nCi1vZiBhIHBhY2thZ2UgaW4gR09QQVRIIGZvciBsYXRlciBzdGFnaW5nIGludG8gR09ST09ULgotCi1UaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCi1HT1BBVEhfT01JVF9JTl9BQ1RJT05JRC4gIElmIHByZXNlbnQsIHBhdGggbmFtZQotZW1iZWRkaW5nIGlzIGRpc2FibGVkLgotCi1TZWNvbmQsIGlmIGNnbyBpcyBlbmFibGVkLCB0aGUgYnVpbGQgSUQgZm9yIGNnby1yZWxhdGVkCi1wYWNrYWdlcyB3aWxsIGluY2x1ZGUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50Ci12YXJpYWJsZXMgZm9yIGludm9raW5nIHRoZSBjb21waWxlciAoQ0MsIENYWCwgRkMpIGFuZAotYW55IENHT194eEZMQUdTIHZhcmlhYmxlcy4gIE9ubHkgaWYgdGhlIHNldHRpbmdzIHVzZWQKLWR1cmluZyBhIGNvbXBpbGF0aW9uIGV4YWN0bHkgbWF0Y2gsIGNoYXJhY3RlciBmb3IgY2hhcmFjdGVyLAotdGhlIHZhbHVlcyB1c2VkIGZvciBjb21waWxpbmcgcnVudGltZS9jZ28gb3IgYW55IG90aGVyCi1jZ28tZW5hYmxlZCBwYWNrYWdlIGJlaW5nIGltcG9ydGVkLCB3aWxsIHRoZSB0b29sCi1kZWNpZGUgdGhhdCB0aGUgaW1wb3J0ZWQgcGFja2FnZSBpcyB1cC10by1kYXRlLgotCi1UaGlzIGlzIGRvbmUgdG8gaGVscCBlbnN1cmUgY29ycmVjdG5lc3MsIGJ1dCBpcyBvdmVybHkKLXNpbXBsaXN0aWMgYW5kIGVmZmVjdGl2ZWx5IHByZXZlbnRzIHRoZSByZXVzZSBvZiBidWlsdAotYXJ0aWZhY3RzIHRoYXQgdXNlIGNnbyAob3Igc2hhcmVkIHJ1bnRpbWUsIHdoaWNoIGluY2x1ZGVzCi1ydW50aW1lL2NnbykuCi0KLVRoaXMgcGF0Y2ggZmlsdGVycyBvdXQgYWxsIGNvbXBpbGVyIGZsYWdzIGV4Y2VwdCB0aG9zZQotYmVnaW5uaW5nIHdpdGggJy1tJy4gIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGNhbiBiZSByZXN0b3JlZAotYnkgc2V0dGluZyB0aGUgQ0dPX1BFREFOVElDIGVudmlyb25tZW50IHZhcmlhYmxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotCi0tLS0KLSBzcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gfCAgMiArLQotIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvICB8IDYzICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCi1pbmRleCBjZWRiZmJmLi41NzYzYTBkIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLUBAIC0xMjgsNyArMTI4LDcgQEAgZnVuYyBFeHRyYUVudlZhcnMoKSBbXWNmZy5FbnZWYXIgewotIGZ1bmMgRXh0cmFFbnZWYXJzQ29zdGx5KCkgW11jZmcuRW52VmFyIHsKLSAJdmFyIGIgd29yay5CdWlsZGVyCi0gCWIuSW5pdCgpCi0tCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIGVyciA6PSBiLkNGbGFncygmbG9hZC5QYWNrYWdle30pCi0rCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIGVyciA6PSBiLkNGbGFncygmbG9hZC5QYWNrYWdle30sIGZhbHNlKQotIAlpZiBlcnIgIT0gbmlsIHsKLSAJCS8vIFNob3VsZCBub3QgaGFwcGVuIC0gYi5DRmxhZ3Mgd2FzIGdpdmVuIGFuIGVtcHR5IHBhY2thZ2UuCi0gCQlmbXQuRnByaW50Zihvcy5TdGRlcnIsICJnbzogaW52YWxpZCBjZmxhZ3M6ICV2XG4iLCBlcnIpCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbwotaW5kZXggMTJlMTUyNy4uZTQxYmZhYyAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbwotQEAgLTE3NCw2ICsxNzQsOCBAQCBmdW5jIChiICpCdWlsZGVyKSBEbyhyb290ICpBY3Rpb24pIHsKLSAJd2cuV2FpdCgpCi0gfQotIAotK3ZhciBvbWl0R29wYXRoID0gb3MuR2V0ZW52KCJHT1BBVEhfT01JVF9JTl9BQ1RJT05JRCIpICE9ICIiCi0rCi0gLy8gYnVpbGRBY3Rpb25JRCBjb21wdXRlcyB0aGUgYWN0aW9uIElEIGZvciBhIGJ1aWxkIGFjdGlvbi4KLSBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvbikgY2FjaGUuQWN0aW9uSUQgewotIAlwIDo9IGEuUGFja2FnZQotQEAgLTE5MCw3ICsxOTIsNyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvbikgY2FjaGUuQWN0aW9uSUQgewotIAkvLyBidXQgaXQgZG9lcyBub3QgaGlkZSB0aGUgZXhhY3QgdmFsdWUgb2YgJEdPUEFUSC4KLSAJLy8gSW5jbHVkZSB0aGUgZnVsbCBkaXIgaW4gdGhhdCBjYXNlLgotIAkvLyBBc3N1bWUgYi5Xb3JrRGlyIGlzIGJlaW5nIHRyaW1tZWQgcHJvcGVybHkuCi0tCWlmICFwLkdvcm9vdCAmJiAhc3RyaW5ncy5IYXNQcmVmaXgocC5EaXIsIGIuV29ya0RpcikgewotKwlpZiAhcC5Hb3Jvb3QgJiYgIW9taXRHb3BhdGggJiYgIXN0cmluZ3MuSGFzUHJlZml4KHAuRGlyLCBiLldvcmtEaXIpIHsKLSAJCWZtdC5GcHJpbnRmKGgsICJkaXIgJXNcbiIsIHAuRGlyKQotIAl9Ci0gCWZtdC5GcHJpbnRmKGgsICJnb29zICVzIGdvYXJjaCAlc1xuIiwgY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpCi1AQCAtMjAxLDEzICsyMDMsMTMgQEAgZnVuYyAoYiAqQnVpbGRlcikgYnVpbGRBY3Rpb25JRChhICpBY3Rpb24pIGNhY2hlLkFjdGlvbklEIHsKLSAJfQotIAlpZiBsZW4ocC5DZ29GaWxlcykrbGVuKHAuU3dpZ0ZpbGVzKSA+IDAgewotIAkJZm10LkZwcmludGYoaCwgImNnbyAlcVxuIiwgYi50b29sSUQoImNnbyIpKQotLQkJY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgXyA6PSBiLkNGbGFncyhwKQotLQkJZm10LkZwcmludGYoaCwgIkNDPSVxICVxICVxICVxXG4iLCBiLmNjRXhlKCksIGNwcGZsYWdzLCBjZmxhZ3MsIGxkZmxhZ3MpCi0rCQljcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzLCBfIDo9IGIuQ0ZsYWdzKHAsIHRydWUpCi0rCQlmbXQuRnByaW50ZihoLCAiQ0M9JXEgJXEgJXEgJXFcbiIsIGIuY2NFeGUodHJ1ZSksIGNwcGZsYWdzLCBjZmxhZ3MsIGxkZmxhZ3MpCi0gCQlpZiBsZW4ocC5DWFhGaWxlcykrbGVuKHAuU3dpZ0ZpbGVzKSA+IDAgewotLQkJCWZtdC5GcHJpbnRmKGgsICJDWFg9JXEgJXFcbiIsIGIuY3h4RXhlKCksIGN4eGZsYWdzKQotKwkJCWZtdC5GcHJpbnRmKGgsICJDWFg9JXEgJXFcbiIsIGIuY3h4RXhlKHRydWUpLCBjeHhmbGFncykKLSAJCX0KLSAJCWlmIGxlbihwLkZGaWxlcykgPiAwIHsKLS0JCQlmbXQuRnByaW50ZihoLCAiRkM9JXEgJXFcbiIsIGIuZmNFeGUoKSwgZmZsYWdzKQotKwkJCWZtdC5GcHJpbnRmKGgsICJGQz0lcSAlcVxuIiwgYi5mY0V4ZSh0cnVlKSwgZmZsYWdzKQotIAkJfQotIAkJLy8gVE9ETyhyc2MpOiBTaG91bGQgd2UgaW5jbHVkZSB0aGUgU1dJRyB2ZXJzaW9uIG9yIEZvcnRyYW4vR0NDL0crKy9PYmplY3RpdmUtQyBjb21waWxlciB2ZXJzaW9ucz8KLSAJfQotQEAgLTIwOTYsMzMgKzIwOTgsMzMgQEAgdmFyICgKLSAvLyBnY2NDbWQgcmV0dXJucyBhIGdjYyBjb21tYW5kIGxpbmUgcHJlZml4Ci0gLy8gZGVmYXVsdENDIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KLSBmdW5jIChiICpCdWlsZGVyKSBHY2NDbWQoaW5jZGlyLCB3b3JrZGlyIHN0cmluZykgW11zdHJpbmcgewotLQlyZXR1cm4gYi5jb21waWxlckNtZChiLmNjRXhlKCksIGluY2Rpciwgd29ya2RpcikKLSsJcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jY0V4ZShmYWxzZSksIGluY2Rpciwgd29ya2RpcikKLSB9Ci0gCi0gLy8gZ3h4Q21kIHJldHVybnMgYSBnKysgY29tbWFuZCBsaW5lIHByZWZpeAotIC8vIGRlZmF1bHRDWFggaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotIGZ1bmMgKGIgKkJ1aWxkZXIpIEd4eENtZChpbmNkaXIsIHdvcmtkaXIgc3RyaW5nKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY3h4RXhlKCksIGluY2Rpciwgd29ya2RpcikKLSsJcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jeHhFeGUoZmFsc2UpLCBpbmNkaXIsIHdvcmtkaXIpCi0gfQotIAotIC8vIGdmb3J0cmFuQ21kIHJldHVybnMgYSBnZm9ydHJhbiBjb21tYW5kIGxpbmUgcHJlZml4LgotIGZ1bmMgKGIgKkJ1aWxkZXIpIGdmb3J0cmFuQ21kKGluY2Rpciwgd29ya2RpciBzdHJpbmcpIFtdc3RyaW5nIHsKLS0JcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5mY0V4ZSgpLCBpbmNkaXIsIHdvcmtkaXIpCi0rCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuZmNFeGUoZmFsc2UpLCBpbmNkaXIsIHdvcmtkaXIpCi0gfQotIAotIC8vIGNjRXhlIHJldHVybnMgdGhlIENDIGNvbXBpbGVyIHNldHRpbmcgd2l0aG91dCBhbGwgdGhlIGV4dHJhIGZsYWdzIHdlIGFkZCBpbXBsaWNpdGx5LgotLWZ1bmMgKGIgKkJ1aWxkZXIpIGNjRXhlKCkgW11zdHJpbmcgewotLQlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ0MsIGNmZy5EZWZhdWx0Q0MoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpKQotK2Z1bmMgKGIgKkJ1aWxkZXIpIGNjRXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKLSsJcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NDLCBjZmcuRGVmYXVsdENDKGNmZy5Hb29zLCBjZmcuR29hcmNoKSwgZmlsdGVyZWQpCi0gfQotIAotIC8vIGN4eEV4ZSByZXR1cm5zIHRoZSBDWFggY29tcGlsZXIgc2V0dGluZyB3aXRob3V0IGFsbCB0aGUgZXh0cmEgZmxhZ3Mgd2UgYWRkIGltcGxpY2l0bHkuCi0tZnVuYyAoYiAqQnVpbGRlcikgY3h4RXhlKCkgW11zdHJpbmcgewotLQlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ1hYLCBjZmcuRGVmYXVsdENYWChjZmcuR29vcywgY2ZnLkdvYXJjaCkpCi0rZnVuYyAoYiAqQnVpbGRlcikgY3h4RXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKLSsJcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NYWCwgY2ZnLkRlZmF1bHRDWFgoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpLCBmaWx0ZXJlZCkKLSB9Ci0gCi0gLy8gZmNFeGUgcmV0dXJucyB0aGUgRkMgY29tcGlsZXIgc2V0dGluZyB3aXRob3V0IGFsbCB0aGUgZXh0cmEgZmxhZ3Mgd2UgYWRkIGltcGxpY2l0bHkuCi0tZnVuYyAoYiAqQnVpbGRlcikgZmNFeGUoKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyRXhlKG9zLkdldGVudigiRkMiKSwgImdmb3J0cmFuIikKLStmdW5jIChiICpCdWlsZGVyKSBmY0V4ZShmaWx0ZXJlZCBib29sKSBbXXN0cmluZyB7Ci0rCXJldHVybiBiLmNvbXBpbGVyRXhlKG9zLkdldGVudigiRkMiKSwgImdmb3J0cmFuIiwgZmlsdGVyZWQpCi0gfQotIAotIC8vIGNvbXBpbGVyRXhlIHJldHVybnMgdGhlIGNvbXBpbGVyIHRvIHVzZSBnaXZlbiBhbgotQEAgLTIxMzEsMTEgKzIxMzMsMTQgQEAgZnVuYyAoYiAqQnVpbGRlcikgZmNFeGUoKSBbXXN0cmluZyB7Ci0gLy8gb2YgdGhlIGNvbXBpbGVyIGJ1dCBjYW4gaGF2ZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBpZiB0aGV5Ci0gLy8gd2VyZSBwcmVzZW50IGluIHRoZSBlbnZpcm9ubWVudCB2YWx1ZS4KLSAvLyBGb3IgZXhhbXBsZSBpZiBDQz0iZ2NjIC1ER09QSEVSIiB0aGVuIHRoZSByZXN1bHQgaXMgWyJnY2MiLCAiLURHT1BIRVIiXS4KLS1mdW5jIChiICpCdWlsZGVyKSBjb21waWxlckV4ZShlbnZWYWx1ZSBzdHJpbmcsIGRlZiBzdHJpbmcpIFtdc3RyaW5nIHsKLStmdW5jIChiICpCdWlsZGVyKSBjb21waWxlckV4ZShlbnZWYWx1ZSBzdHJpbmcsIGRlZiBzdHJpbmcsIGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKLSAJY29tcGlsZXIgOj0gc3RyaW5ncy5GaWVsZHMoZW52VmFsdWUpCi0gCWlmIGxlbihjb21waWxlcikgPT0gMCB7Ci0gCQljb21waWxlciA9IFtdc3RyaW5ne2RlZn0KLSAJfQotKwlpZiBmaWx0ZXJlZCB7Ci0rCQlyZXR1cm4gYXBwZW5kKGNvbXBpbGVyWzA6MV0sIGZpbHRlckNvbXBpbGVyRmxhZ3MoY29tcGlsZXJbMTpdKS4uLikKLSsJfQotIAlyZXR1cm4gY29tcGlsZXIKLSB9Ci0gCi1AQCAtMjI4NSw4ICsyMjkwLDIzIEBAIGZ1bmMgZW52TGlzdChrZXksIGRlZiBzdHJpbmcpIFtdc3RyaW5nIHsKLSAJcmV0dXJuIHN0cmluZ3MuRmllbGRzKHYpCi0gfQotIAotK3ZhciBmaWx0ZXJGbGFncyA9IG9zLkdldGVudigiQ0dPX1BFREFOVElDIikgPT0gIiIKLSsKLStmdW5jIGZpbHRlckNvbXBpbGVyRmxhZ3MoZmxhZ3MgW11zdHJpbmcpIFtdc3RyaW5nIHsKLSsJdmFyIG5ld2ZsYWdzIFtdc3RyaW5nCi0rCWlmICFmaWx0ZXJGbGFncyB7Ci0rCQlyZXR1cm4gZmxhZ3MKLSsJfQotKwlmb3IgXywgZmxhZyA6PSByYW5nZSBmbGFncyB7Ci0rCQlpZiBzdHJpbmdzLkhhc1ByZWZpeChmbGFnLCAiLW0iKSB7Ci0rCQkJbmV3ZmxhZ3MgPSBhcHBlbmQobmV3ZmxhZ3MsIGZsYWcpCi0rCQl9Ci0rCX0KLSsJcmV0dXJuIG5ld2ZsYWdzCi0rfQotKwotIC8vIENGbGFncyByZXR1cm5zIHRoZSBmbGFncyB0byB1c2Ugd2hlbiBpbnZva2luZyB0aGUgQywgQysrIG9yIEZvcnRyYW4gY29tcGlsZXJzLCBvciBjZ28uCi0tZnVuYyAoYiAqQnVpbGRlcikgQ0ZsYWdzKHAgKmxvYWQuUGFja2FnZSkgKGNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MgW11zdHJpbmcsIGVyciBlcnJvcikgewotK2Z1bmMgKGIgKkJ1aWxkZXIpIENGbGFncyhwICpsb2FkLlBhY2thZ2UsIGZpbHRlcmVkIGJvb2wpIChjcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzIFtdc3RyaW5nLCBlcnIgZXJyb3IpIHsKLSAJZGVmYXVsdHMgOj0gIi1nIC1PMiIKLSAKLSAJaWYgY3BwZmxhZ3MsIGVyciA9IGJ1aWxkRmxhZ3MoIkNQUEZMQUdTIiwgIiIsIHAuQ2dvQ1BQRkxBR1MsIGNoZWNrQ29tcGlsZXJGbGFncyk7IGVyciAhPSBuaWwgewotQEAgLTIzMDQsNiArMjMyNCwxMyBAQCBmdW5jIChiICpCdWlsZGVyKSBDRmxhZ3MocCAqbG9hZC5QYWNrYWdlKSAoY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbAotIAlpZiBsZGZsYWdzLCBlcnIgPSBidWlsZEZsYWdzKCJMREZMQUdTIiwgZGVmYXVsdHMsIHAuQ2dvTERGTEFHUywgY2hlY2tMaW5rZXJGbGFncyk7IGVyciAhPSBuaWwgewotIAkJcmV0dXJuCi0gCX0KLSsJaWYgZmlsdGVyZWQgewotKwkJY3BwZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGNwcGZsYWdzKQotKwkJY2ZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhjZmxhZ3MpCi0rCQljeHhmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoY3h4ZmxhZ3MpCi0rCQlmZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGZmbGFncykKLSsJCWxkZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGxkZmxhZ3MpCi0rCX0KLSAKLSAJcmV0dXJuCi0gfQotQEAgLTIzMTksNyArMjM0Niw3IEBAIHZhciBjZ29SZSA9IHJlZ2V4cC5NdXN0Q29tcGlsZShgWy9cXDpdYCkKLSAKLSBmdW5jIChiICpCdWlsZGVyKSBjZ28oYSAqQWN0aW9uLCBjZ29FeGUsIG9iamRpciBzdHJpbmcsIHBjQ0ZMQUdTLCBwY0xERkxBR1MsIGNnb2ZpbGVzLCBnY2NmaWxlcywgZ3h4ZmlsZXMsIG1maWxlcywgZmZpbGVzIFtdc3RyaW5nKSAob3V0R28sIG91dE9iaiBbXXN0cmluZywgZXJyIGVycm9yKSB7Ci0gCXAgOj0gYS5QYWNrYWdlCi0tCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBjZ29GRkxBR1MsIGNnb0xERkxBR1MsIGVyciA6PSBiLkNGbGFncyhwKQotKwljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgY2dvRkZMQUdTLCBjZ29MREZMQUdTLCBlcnIgOj0gYi5DRmxhZ3MocCwgZmFsc2UpCi0gCWlmIGVyciAhPSBuaWwgewotIAkJcmV0dXJuIG5pbCwgbmlsLCBlcnIKLSAJfQotQEAgLTI2NzksNyArMjcwNiw3IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIHN3aWdJbnRTaXplKG9iamRpciBzdHJpbmcpIChpbnRzaXplIHN0cmluZywgZXJyIGVycm9yKSB7Ci0gCi0gLy8gUnVuIFNXSUcgb24gb25lIFNXSUcgaW5wdXQgZmlsZS4KLSBmdW5jIChiICpCdWlsZGVyKSBzd2lnT25lKGEgKkFjdGlvbiwgcCAqbG9hZC5QYWNrYWdlLCBmaWxlLCBvYmpkaXIgc3RyaW5nLCBwY0NGTEFHUyBbXXN0cmluZywgY3h4IGJvb2wsIGludGdvc2l6ZSBzdHJpbmcpIChvdXRHbywgb3V0QyBzdHJpbmcsIGVyciBlcnJvcikgewotLQljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgXywgXywgZXJyIDo9IGIuQ0ZsYWdzKHApCi0rCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBfLCBfLCBlcnIgOj0gYi5DRmxhZ3MocCwgZmFsc2UpCi0gCWlmIGVyciAhPSBuaWwgewotIAkJcmV0dXJuICIiLCAiIiwgZXJyCi0gCX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmNhNDBlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIDVjMzJjMzhiZjE5YjI0ZjBhYWRkNzgwMTJkMTdmZjVjYWE4MjE1MWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotRGF0ZTogU2F0LCAxNyBGZWIgMjAxOCAwNToyNDoyMCAtMDgwMAotU3ViamVjdDogW1BBVENIXSBhbGxvdyBHT1RPT0xESVIgdG8gYmUgb3ZlcnJpZGRlbiBpbiB0aGUgZW52aXJvbm1lbnQKLQotdG8gYWxsb3cgZm9yIHNwbGl0IGhvc3QvdGFyZ2V0IGJ1aWxkIHJvb3RzCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci0KLS0tLQotIHNyYy9jbWQvZGlzdC9idWlsZC5nbyAgICAgICAgICB8IDQgKysrLQotIHNyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbyB8IDcgKysrKystLQotIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ28vc3JjL2NtZC9kaXN0L2J1aWxkLmdvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLSsrKyBnby9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLUBAIC0yMjgsNyArMjI4LDkgQEAgZnVuYyB4aW5pdCgpIHsKLSAJd29ya2RpciA9IHh3b3JrZGlyKCkKLSAJeGF0ZXhpdChybXdvcmtkaXIpCi0gCi0tCXRvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQotKwlpZiB0b29sZGlyID0gb3MuR2V0ZW52KCJHT1RPT0xESVIiKTsgdG9vbGRpciA9PSAiIiB7Ci0rCQl0b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sLyVzXyVzIiwgZ29yb290LCBnb2hvc3RvcywgZ29ob3N0YXJjaCkKLSsJfQotIH0KLSAKLSAvLyBjb21waWxlckVudiByZXR1cm5zIGEgbWFwIGZyb20gImdvb3MvZ29hcmNoIiB0byB0aGUKLUluZGV4OiBnby9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbwotKysrIGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbwotQEAgLTExNiw3ICsxMTYsMTEgQEAgZnVuYyBpbml0KCkgewotIAkJLy8gdmFyaWFibGVzLiBUaGlzIG1hdGNoZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIFRvb2xEaXIgaW4KLSAJCS8vIGdvL2J1aWxkLCBleGNlcHQgZm9yIHVzaW5nIEdPUk9PVCByYXRoZXIgdGhhbgotIAkJLy8gcnVudGltZS5HT1JPT1QuCi0tCQlidWlsZC5Ub29sRGlyID0gZmlsZXBhdGguSm9pbihHT1JPT1QsICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCi0rCQlpZiBzIDo9IG9zLkdldGVudigiR09UT09MRElSIik7IHMgIT0gIiIgewotKwkJCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5DbGVhbihzKQotKwkJfSBlbHNlIHsKLSsJCQlidWlsZC5Ub29sRGlyID0gZmlsZXBhdGguSm9pbihHT1JPT1QsICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCi0rCQl9Ci0gCX0KLSB9Ci0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDQtbGQtYWRkLXNvbmFtZS10by1zaGFyZWFibGUtb2JqZWN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDRhMzNhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSA1NWViOGM5NWE4OWYzMmFlYzE2Yjc3NjRlNzhlOGNmNzUxNjlkYzgxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLURhdGU6IFNhdCwgMTcgRmViIDIwMTggMDY6MjY6MTAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbGQ6IGFkZCBzb25hbWUgdG8gc2hhcmVhYmxlIG9iamVjdHMKLQotc28gdGhhdCBPRSdzIHNoYXJlZCBsaWJyYXJ5IGRlcGVuZGVuY3kgaGFuZGxpbmcKLWNhbiBmaW5kIHRoZW0uCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci0KLS0tLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28gfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbwotaW5kZXggMjIwYWFiMy4uNzAzOTI1ZiAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KLUBAIC0xMTM1LDYgKzExMzUsNyBAQCBmdW5jIChjdHh0ICpMaW5rKSBob3N0bGluaygpIHsKLSAJCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKLSAJCQl9Ci0gCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLXNoYXJlZCIpCi0rCQkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQotIAkJCWlmIGN0eHQuSGVhZFR5cGUgIT0gb2JqYWJpLkh3aW5kb3dzIHsKLSAJCQkJLy8gUGFzcyAteiBub2RlbGV0ZSB0byBtYXJrIHRoZSBzaGFyZWQgbGlicmFyeSBhcwotIAkJCQkvLyBub24tY2xvc2VhYmxlOiBhIGRsY2xvc2Ugd2lsbCBkbyBub3RoaW5nLgotQEAgLTExNDYsNiArMTE0Nyw4IEBAIGZ1bmMgKGN0eHQgKkxpbmspIGhvc3RsaW5rKCkgewotIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCi0gCQl9Ci0gCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIikKLSsJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKLSsKLSAJY2FzZSBCdWlsZE1vZGVQbHVnaW46Ci0gCQlpZiBjdHh0LkhlYWRUeXBlID09IG9iamFiaS5IZGFyd2luIHsKLSAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItZHluYW1pY2xpYiIpCi1AQCAtMTE1NCw2ICsxMTU3LDcgQEAgZnVuYyAoY3R4dCAqTGluaykgaG9zdGxpbmsoKSB7Ci0gCQkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCi0gCQkJfQotIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQotKwkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKLSAJCX0KLSAJfQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNlOGRlOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gMWJmMTVhYThmYjc3MzYwNGIyNTI0Y2ZkYWI0OTNmYTRkOGZhOTI4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci1EYXRlOiBTYXQsIDE3IEZlYiAyMDE4IDA2OjMyOjQ1IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1ha2UuYmFzaDogb3ZlcnJpZGUgQ0Mgd2hlbiBidWlsZGluZyBkaXN0IGFuZCBnb19ib290c3RyYXAKLQotZm9yIGhhbmRsaW5nIE9FIGNyb3NzLWNhbmFkaWFuIGJ1aWxkcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLQotLS0tCi0gc3JjL21ha2UuYmFzaCB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbWFrZS5iYXNoIGIvc3JjL21ha2UuYmFzaAotaW5kZXggNzg4ODJkOS4uMjU5NDNkMCAxMDA3NTUKLS0tLSBhL3NyYy9tYWtlLmJhc2gKLSsrKyBiL3NyYy9tYWtlLmJhc2gKLUBAIC0xNjMsNyArMTYzLDcgQEAgaWYgWyAiJEdPUk9PVF9CT09UU1RSQVAiID0gIiRHT1JPT1QiIF07IHRoZW4KLSAJZXhpdCAxCi0gZmkKLSBybSAtZiBjbWQvZGlzdC9kaXN0Ci0tR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgIiRHT1JPT1RfQk9PVFNUUkFQL2Jpbi9nbyIgYnVpbGQgLW8gY21kL2Rpc3QvZGlzdCAuL2NtZC9kaXN0Ci0rQ0M9IiR7QlVJTERfQ0M6LSR7Q0N9fSIgR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgIiRHT1JPT1RfQk9PVFNUUkFQL2Jpbi9nbyIgYnVpbGQgLW8gY21kL2Rpc3QvZGlzdCAuL2NtZC9kaXN0Ci0gCi0gIyAtZSBkb2Vzbid0IHByb3BhZ2F0ZSBvdXQgb2YgZXZhbCwgc28gY2hlY2sgc3VjY2VzcyBieSBoYW5kLgotIGV2YWwgJCguL2NtZC9kaXN0L2Rpc3QgZW52IC1wIHx8IGVjaG8gRkFJTD10cnVlKQotQEAgLTE5NCw3ICsxOTQsNyBAQCBmaQotICMgUnVuIGRpc3QgYm9vdHN0cmFwIHRvIGNvbXBsZXRlIG1ha2UuYmFzaC4KLSAjIEJvb3RzdHJhcCBpbnN0YWxscyBhIHByb3BlciBjbWQvZGlzdCwgYnVpbHQgd2l0aCB0aGUgbmV3IHRvb2xjaGFpbi4KLSAjIFRocm93IG91cnMsIGJ1aWx0IHdpdGggR28gMS40LCBhd2F5IGFmdGVyIGJvb3RzdHJhcC4KLS0uL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkdmZsYWcgJEdPX0RJU1RGTEFHUyAiJEAiCi0rQ0M9IiR7QlVJTERfQ0M6LSR7Q0N9fSIgLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJHZmbGFnICRHT19ESVNURkxBR1MgIiRAIgotIHJtIC1mIC4vY21kL2Rpc3QvZGlzdAotIAotICMgRE8gTk9UIEFERCBBTlkgTkVXIENPREUgSEVSRS4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjMGQ1ZGEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyODIgKzAsMCBAQAotRnJvbSBmZTBmY2FmNDNlZjNhYWI4MTU0MWRhZDJhNzFiNDYyNTRkYzRjZjZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLURhdGU6IFNhdCwgMTcgRmViIDIwMTggMTA6MDM6NDggLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gY21kL2Rpc3Q6IHNlcGFyYXRlIGhvc3QgYW5kIHRhcmdldCBidWlsZHMKLQotQ2hhbmdlIHRoZSBkaXN0IHRvb2wgdG8gYWxsb3cgZm9yIE9FLXN0eWxlIGNyb3NzLQotYW5kIGNyb3NzLWNhbmFkaWFuIGJ1aWxkczoKLQotIC0gY29tbWFuZCBmbGFncyAtLWhvc3Qtb25seSBhbmQgLS10YXJnZXQgb25seSBhcmUgYWRkZWQ7Ci0gICBpZiBvbmUgaXMgcHJlc2VudCwgdGhlIG90aGVyIGNoYW5nZXMgbWVudGlvbmVkIGJlbG93Ci0gICB0YWtlIGVmZmVjdCwgYW5kIGFyZ3VtZW50cyBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgb24KLSAgIHRoZSBjb21tYW5kIGxpbmUgdG8gZW51bWVyYXRlIHRoZSBwYWNrYWdlKHMpIHRvIGJlCi0gICBidWlsdC4KLQotIC0gZm9yIE9FIGNyb3NzIGJ1aWxkcywgZ29fYm9vdHN0cmFwIGlzIGFsd2F5cyBidWlsdCBmb3IKLSAgIHRoZSBjdXJyZW50IGJ1aWxkIGhvc3QsIGFuZCBpcyBtb3ZlZCwgYWxvbmcgd2l0aCB0aGUgc3VwcG9ydGluZwotICAgdG9vbGNoYWluIChhc20sIGNvbXBpbGUsIGV0Yy4pIHRvIGEgc2VwYXJhdGUgJ25hdGl2ZV9uYXRpdmUnCi0gICBkaXJlY3RvcnkgdW5kZXIgR09ST09UL3BrZy90b29sLgotCi0gLSBnb19ib290c3RyYXAgaXMgbm90IGF1dG9tYXRpY2FsbHkgcmVtb3ZlZCBhZnRlciB0aGUgYnVpbGQsCi0gICBzbyBpdCBjYW4gYmUgcmV1c2VkIGxhdGVyIChlLmcuLCBidWlsZGluZyBib3RoIHN0YXRpYyBhbmQKLSAgIHNoYXJlZCBydW50aW1lKS4KLQotTm90ZSB0aGF0IGZvciAtLWhvc3Qtb25seSBidWlsZHMsIGl0IHdvdWxkIGJlIG5pY2UgdG8gc3BlY2lmeQotanVzdCB0aGUgImNtZCIgcGFja2FnZSB0byBidWlsZCBvbmx5IHRoZSBnbyBjb21tYW5kcy90b29scywKLXRoZSBzdGFsZW5lc3MgY2hlY2tzIGluIHRoZSBkaXN0IHRvb2wgd2lsbCBmYWlsIGlmIHRoZSAic3RkIgotbGlicmFyeSBoYXMgbm90IGFsc28gYmVlbiBidWlsdC4gIFNvIGhvc3Qtb25seSBidWlsZHMgaGF2ZSB0bwotYnVpbGQgZXZlcnl0aGluZyBhbnl3YXkuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci0KLW1vcmUgZGlzdCBjbGVhbnVwCi0KLS0tLQotIHNyYy9jbWQvZGlzdC9idWlsZC5nbyB8IDE1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTExIGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ28vc3JjL2NtZC9kaXN0L2J1aWxkLmdvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLSsrKyBnby9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLUBAIC0zOSw2ICszOSw3IEBAIHZhciAoCi0gCWdvbGRmbGFncyAgICAgICAgc3RyaW5nCi0gCXdvcmtkaXIgICAgICAgICAgc3RyaW5nCi0gCXRvb2xkaXIgICAgICAgICAgc3RyaW5nCi0rCWJ1aWxkX3Rvb2xkaXIJIHN0cmluZwotIAlvbGRnb29zICAgICAgICAgIHN0cmluZwotIAlvbGRnb2FyY2ggICAgICAgIHN0cmluZwotIAlleGUgICAgICAgICAgICAgIHN0cmluZwotQEAgLTUwLDYgKzUxLDcgQEAgdmFyICgKLSAKLSAJcmVidWlsZGFsbCAgIGJvb2wKLSAJZGVmYXVsdGNsYW5nIGJvb2wKLSsJY3Jvc3NCdWlsZCAgIGJvb2wKLSAKLSAJdmZsYWcgaW50IC8vIHZlcmJvc2l0eQotICkKLUBAIC0yMzEsNiArMjMzLDggQEAgZnVuYyB4aW5pdCgpIHsKLSAJaWYgdG9vbGRpciA9IG9zLkdldGVudigiR09UT09MRElSIik7IHRvb2xkaXIgPT0gIiIgewotIAkJdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCi0gCX0KLSsJYnVpbGRfdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC9uYXRpdmVfbmF0aXZlIiwgZ29yb290KQotKwotIH0KLSAKLSAvLyBjb21waWxlckVudiByZXR1cm5zIGEgbWFwIGZyb20gImdvb3MvZ29hcmNoIiB0byB0aGUKLUBAIC0yNjAsNyArMjY0LDYgQEAgZnVuYyBjb21waWxlckVudihlbnZOYW1lLCBkZWYgc3RyaW5nKSBtYQotIAkJaWYgZ29ob3N0b3MgIT0gZ29vcyB8fCBnb2hvc3RhcmNoICE9IGdvYXJjaCB7Ci0gCQkJbVtnb2hvc3RvcysiLyIrZ29ob3N0YXJjaF0gPSBtWyIiXQotIAkJfQotLQkJbVsiIl0gPSBlbnYKLSAJfQotIAotIAlmb3IgXywgZ29vcyA6PSByYW5nZSBva2dvb3MgewotQEAgLTQ4Nyw4ICs0OTAsMTAgQEAgZnVuYyBzZXR1cCgpIHsKLSAJLy8gV2Uga2VlcCBpdCBpbiBwa2cvLCBqdXN0IGxpa2UgdGhlIG9iamVjdCBkaXJlY3RvcnkgYWJvdmUuCi0gCWlmIHJlYnVpbGRhbGwgewotIAkJeHJlbW92ZWFsbCh0b29sZGlyKQotKwkJeHJlbW92ZWFsbChidWlsZF90b29sZGlyKQotIAl9Ci0gCXhta2RpcmFsbCh0b29sZGlyKQotKwl4bWtkaXJhbGwoYnVpbGRfdG9vbGRpcikKLSAKLSAJLy8gUmVtb3ZlIHRvb2wgYmluYXJpZXMgZnJvbSBiZWZvcmUgdGhlIHRvb2wvZ29ob3N0b3NfZ29ob3N0YXJjaAotIAl4cmVtb3ZlYWxsKHBhdGhmKCIlcy9iaW4vdG9vbCIsIGdvcm9vdCkpCi1AQCAtMTE1NSwxMSArMTE2MCwyOSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKLSAKLSAJdmFyIG5vQmFubmVyIGJvb2wKLSAJdmFyIGRlYnVnIGJvb2wKLSsJdmFyIGhvc3RPbmx5IGJvb2wKLSsJdmFyIHRhcmdldE9ubHkgYm9vbAotKwl2YXIgdG9CdWlsZCA9IFtdc3RyaW5nIHsgInN0ZCIsICJjbWQiIH0KLSsKLSAJZmxhZy5Cb29sVmFyKCZyZWJ1aWxkYWxsLCAiYSIsIHJlYnVpbGRhbGwsICJyZWJ1aWxkIGFsbCIpCi0gCWZsYWcuQm9vbFZhcigmZGVidWcsICJkIiwgZGVidWcsICJlbmFibGUgZGVidWdnaW5nIG9mIGJvb3RzdHJhcCBwcm9jZXNzIikKLSAJZmxhZy5Cb29sVmFyKCZub0Jhbm5lciwgIm5vLWJhbm5lciIsIG5vQmFubmVyLCAiZG8gbm90IHByaW50IGJhbm5lciIpCi0rCWZsYWcuQm9vbFZhcigmaG9zdE9ubHksICJob3N0LW9ubHkiLCBob3N0T25seSwgImJ1aWxkIG9ubHkgaG9zdCBiaW5hcmllcywgbm90IHRhcmdldCIpCi0rCWZsYWcuQm9vbFZhcigmdGFyZ2V0T25seSwgInRhcmdldC1vbmx5IiwgdGFyZ2V0T25seSwgImJ1aWxkIG9ubHkgdGFyZ2V0IGJpbmFyaWVzLCBub3QgaG9zdCIpCi0gCi0tCXhmbGFncGFyc2UoMCkKLSsJeGZsYWdwYXJzZSgtMSkKLSsKLSsJaWYgKGhvc3RPbmx5ICYmIHRhcmdldE9ubHkpIHsKLSsJCWZhdGFsZigic3BlY2lmeSBvbmx5IG9uZSBvZiAtLWhvc3Qtb25seSBvciAtLXRhcmdldC1vbmx5XG4iKQotKwl9Ci0rCWNyb3NzQnVpbGQgPSBob3N0T25seSB8fCB0YXJnZXRPbmx5Ci0rCWlmIGZsYWcuTkFyZygpID4gMCB7Ci0rCQlpZiBjcm9zc0J1aWxkIHsKLSsJCQl0b0J1aWxkID0gZmxhZy5BcmdzKCkKLSsJCX0gZWxzZSB7Ci0rCQkJZmF0YWxmKCJwYWNrYWdlIG5hbWVzIG5vdCBwZXJtaXR0ZWQgd2l0aG91dCAtLWhvc3Qtb25seSBvciAtLXRhcmdldC1vbmx5XG4iKQotKwkJfQotKwl9Ci0gCi0gCWlmIGRlYnVnIHsKLSAJCS8vIGNtZC9idWlsZGlkIGlzIHVzZWQgaW4gZGVidWcgbW9kZS4KLUBAIC0xMjA3LDggKzEyMzAsMTMgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7Ci0gCQl4cHJpbnRmKCJcbiIpCi0gCX0KLSAKLS0JZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19HQ0ZMQUdTIHVudGlsIG5vdwotLQlnb2xkZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0xERkxBR1MiKQotKwkvLyBGb3Igc3BsaXQgaG9zdC90YXJnZXQgY3Jvc3MvY3Jvc3MtY2FuYWRpYW4gYnVpbGRzLCB3ZSBkb24ndAotKwkvLyB3YW50IHRvIGJlIHNldHRpbmcgdGhlc2UgZmxhZ3MgdW50aWwgYWZ0ZXIgd2UgaGF2ZSBjb21waWxlZAotKwkvLyB0aGUgdG9vbGNoYWluIHRoYXQgcnVucyBvbiB0aGUgYnVpbGQgaG9zdC4KLSsJaWYgISBjcm9zc0J1aWxkIHsKLSsJCWdvZ2NmbGFncyA9IG9zLkdldGVudigiR09fR0NGTEFHUyIpIC8vIHdlIHdlcmUgdXNpbmcgJEJPT1RfR09fR0NGTEFHUyB1bnRpbCBub3cKLSsJCWdvbGRmbGFncyA9IG9zLkdldGVudigiR09fTERGTEFHUyIpCi0rCX0KLSAJZ29Cb290c3RyYXAgOj0gcGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIHRvb2xkaXIpCi0gCWNtZEdvIDo9IHBhdGhmKCIlcy9nbyIsIGdvYmluKQotIAlpZiBkZWJ1ZyB7Ci1AQCAtMTIzNyw3ICsxMjY1LDExIEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgewotIAkJeHByaW50ZigiXG4iKQotIAl9Ci0gCXhwcmludGYoIkJ1aWxkaW5nIEdvIHRvb2xjaGFpbjIgdXNpbmcgZ29fYm9vdHN0cmFwIGFuZCBHbyB0b29sY2hhaW4xLlxuIikKLS0Jb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKLSsJaWYgY3Jvc3NCdWlsZCB7Ci0rCQlvcy5TZXRlbnYoIkNDIiwgZGVmYXVsdGNjWyIiXSkKLSsJfSBlbHNlIHsKLSsJCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCi0rCX0KLSAJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCBhcHBlbmQoW11zdHJpbmd7Ii1pIn0sIHRvb2xjaGFpbi4uLikuLi4pCi0gCWlmIGRlYnVnIHsKLSAJCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksICItVj1mdWxsIikKLUBAIC0xMjc0LDUwICsxMzA2LDg0IEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgewotIAl9Ci0gCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIGFwcGVuZCh0b29sY2hhaW4sICJydW50aW1lL2ludGVybmFsL3N5cyIpLi4uKQotIAotLQlpZiBnb29zID09IG9sZGdvb3MgJiYgZ29hcmNoID09IG9sZGdvYXJjaCB7Ci0tCQkvLyBDb21tb24gY2FzZSAtIG5vdCBzZXR0aW5nIHVwIGZvciBjcm9zcy1jb21waWxhdGlvbi4KLS0JCXRpbWVsb2coImJ1aWxkIiwgInRvb2xjaGFpbiIpCi0tCQlpZiB2ZmxhZyA+IDAgewotLQkJCXhwcmludGYoIlxuIikKLSsJaWYgY3Jvc3NCdWlsZCB7Ci0rCQlnb2djZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0dDRkxBR1MiKQotKwkJZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikKLSsJCXRvb2xfZmlsZXMsIF8gOj0gZmlsZXBhdGguR2xvYihwYXRoZigiJXMvKiIsIHRvb2xkaXIpKQotKwkJZm9yIF8sIGYgOj0gcmFuZ2UgdG9vbF9maWxlcyB7Ci0rCQkJY29weWZpbGUocGF0aGYoIiVzLyVzIiwgYnVpbGRfdG9vbGRpciwgZmlsZXBhdGguQmFzZShmKSksIGYsIHdyaXRlRXhlYykKLSsJCQl4cmVtb3ZlKGYpCi0rCQl9Ci0rCQlvcy5TZXRlbnYoIkdPVE9PTERJUiIsIGJ1aWxkX3Rvb2xkaXIpCi0rCQlnb0Jvb3RzdHJhcCA9IHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCBidWlsZF90b29sZGlyKQotKwkJaWYgaG9zdE9ubHkgewotKwkJCXRpbWVsb2coImJ1aWxkIiwgImhvc3QgdG9vbGNoYWluIikKLSsJCQlpZiB2ZmxhZyA+IDAgewotKwkJCQl4cHJpbnRmKCJcbiIpCi0rCQkJfQotKwkJCXhwcmludGYoIkJ1aWxkaW5nICVzIGZvciBob3N0LCAlcy8lcy5cbiIsIHN0cmluZ3MuSm9pbih0b0J1aWxkLCAiLCIpLCBnb29zLCBnb2FyY2gpCi0rCQkJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQotKwkJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCi0rCQkJLy8gU2tpcCBjbWRHbyBzdGFsZW5lc3MgY2hlY2tzIGhlcmUsIHNpbmNlIHdlIGNhbid0IG5lY2Vzc2FyaWx5IHJ1biB0aGUgY21kR28gYmluYXJ5Ci0rCi0rCQkJdGltZWxvZygiYnVpbGQiLCAidGFyZ2V0IHRvb2xjaGFpbiIpCi0rCQkJaWYgdmZsYWcgPiAwIHsKLSsJCQkJeHByaW50ZigiXG4iKQotKwkJCX0KLSsJCX0gZWxzZSBpZiB0YXJnZXRPbmx5IHsKLSsJCQlnb29zID0gb2xkZ29vcwotKwkJCWdvYXJjaCA9IG9sZGdvYXJjaAotKwkJCW9zLlNldGVudigiR09PUyIsIGdvb3MpCi0rCQkJb3MuU2V0ZW52KCJHT0FSQ0giLCBnb2FyY2gpCi0rCQkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKLSsJCQl4cHJpbnRmKCJCdWlsZGluZyAlcyBmb3IgdGFyZ2V0LCAlcy8lcy5cbiIsIHN0cmluZ3MuSm9pbih0b0J1aWxkLCAiLCIpLCBnb29zLCBnb2FyY2gpCi0rCQkJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQotKwkJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCi0rCQkJLy8gU2tpcCBjbWRHbyBzdGFsZW5lc3MgY2hlY2tzIGhlcmUsIHNpbmNlIHdlIGNhbid0IHJ1biB0aGUgdGFyZ2V0J3MgY21kR28gYmluYXJ5Ci0gCQl9Ci0tCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotIAl9IGVsc2UgewotLQkJLy8gR09PUy9HT0FSQ0ggZG9lcyBub3QgbWF0Y2ggR09IT1NUT1MvR09IT1NUQVJDSC4KLS0JCS8vIEZpbmlzaCBHT0hPU1RPUy9HT0hPU1RBUkNIIGluc3RhbGxhdGlvbiBhbmQgdGhlbgotLQkJLy8gcnVuIEdPT1MvR09BUkNIIGluc3RhbGxhdGlvbi4KLS0JCXRpbWVsb2coImJ1aWxkIiwgImhvc3QgdG9vbGNoYWluIikKLS0JCWlmIHZmbGFnID4gMCB7Ci0tCQkJeHByaW50ZigiXG4iKQotKwotKwkJaWYgZ29vcyA9PSBvbGRnb29zICYmIGdvYXJjaCA9PSBvbGRnb2FyY2ggewotKwkJCS8vIENvbW1vbiBjYXNlIC0gbm90IHNldHRpbmcgdXAgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLgotKwkJCXRpbWVsb2coImJ1aWxkIiwgInRvb2xjaGFpbiIpCi0rCQkJaWYgdmZsYWcgPiAwIHsKLSsJCQkJeHByaW50ZigiXG4iKQotKwkJCX0KLSsJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotKwkJfSBlbHNlIHsKLSsJCQkvLyBHT09TL0dPQVJDSCBkb2VzIG5vdCBtYXRjaCBHT0hPU1RPUy9HT0hPU1RBUkNILgotKwkJCS8vIEZpbmlzaCBHT0hPU1RPUy9HT0hPU1RBUkNIIGluc3RhbGxhdGlvbiBhbmQgdGhlbgotKwkJCS8vIHJ1biBHT09TL0dPQVJDSCBpbnN0YWxsYXRpb24uCi0rCQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQotKwkJCWlmIHZmbGFnID4gMCB7Ci0rCQkJCXhwcmludGYoIlxuIikKLSsJCQl9Ci0rCQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciBob3N0LCAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKLSsJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKLSsJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCi0rCQkJY2hlY2tOb3RTdGFsZShjbWRHbywgInN0ZCIsICJjbWQiKQotKwotKwkJCXRpbWVsb2coImJ1aWxkIiwgInRhcmdldCB0b29sY2hhaW4iKQotKwkJCWlmIHZmbGFnID4gMCB7Ci0rCQkJCXhwcmludGYoIlxuIikKLSsJCQl9Ci0rCQkJZ29vcyA9IG9sZGdvb3MKLSsJCQlnb2FyY2ggPSBvbGRnb2FyY2gKLSsJCQlvcy5TZXRlbnYoIkdPT1MiLCBnb29zKQotKwkJCW9zLlNldGVudigiR09BUkNIIiwgZ29hcmNoKQotKwkJCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCi0rCQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciB0YXJnZXQsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotIAkJfQotLQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciBob3N0LCAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKLSAJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQotIAkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQotIAkJY2hlY2tOb3RTdGFsZShjbWRHbywgInN0ZCIsICJjbWQiKQotIAotLQkJdGltZWxvZygiYnVpbGQiLCAidGFyZ2V0IHRvb2xjaGFpbiIpCi0tCQlpZiB2ZmxhZyA+IDAgewotLQkJCXhwcmludGYoIlxuIikKLS0JCX0KLS0JCWdvb3MgPSBvbGRnb29zCi0tCQlnb2FyY2ggPSBvbGRnb2FyY2gKLS0JCW9zLlNldGVudigiR09PUyIsIGdvb3MpCi0tCQlvcy5TZXRlbnYoIkdPQVJDSCIsIGdvYXJjaCkKLS0JCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCi0tCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0tCX0KLS0JdGFyZ2V0cyA6PSBbXXN0cmluZ3sic3RkIiwgImNtZCJ9Ci0tCWlmIGdvb3MgPT0gImpzIiAmJiBnb2FyY2ggPT0gIndhc20iIHsKLS0JCS8vIFNraXAgdGhlIGNtZCB0b29scyBmb3IganMvd2FzbS4gVGhleSdyZSBub3QgdXNhYmxlLgotLQkJdGFyZ2V0cyA9IHRhcmdldHNbOjFdCi0tCX0KLS0JZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCB0YXJnZXRzLi4uKQotLQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCB0YXJnZXRzLi4uKQotLQljaGVja05vdFN0YWxlKGNtZEdvLCB0YXJnZXRzLi4uKQotLQlpZiBkZWJ1ZyB7Ci0tCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCAiLVY9ZnVsbCIpCi0tCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvYnVpbGRpZCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvcGtnLyVzXyVzL3J1bnRpbWUvaW50ZXJuYWwvc3lzLmEiLCBnb3Jvb3QsIGdvb3MsIGdvYXJjaCkpCi0tCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCBhcHBlbmQodG9vbGNoYWluLCAicnVudGltZS9pbnRlcm5hbC9zeXMiKS4uLikKLS0JCWNvcHlmaWxlKHBhdGhmKCIlcy9jb21waWxlNCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCB3cml0ZUV4ZWMpCi0rCQlpZiBkZWJ1ZyB7Ci0rCQkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgIi1WPWZ1bGwiKQotKwkJCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9idWlsZGlkIiwgdG9vbGRpciksIHBhdGhmKCIlcy9wa2cvJXNfJXMvcnVudGltZS9pbnRlcm5hbC9zeXMuYSIsIGdvcm9vdCwgZ29vcywgZ29hcmNoKSkKLSsJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCBhcHBlbmQodG9vbGNoYWluLCAicnVudGltZS9pbnRlcm5hbC9zeXMiKS4uLikKLSsJCQljb3B5ZmlsZShwYXRoZigiJXMvY29tcGlsZTQiLCB0b29sZGlyKSwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgd3JpdGVFeGVjKQotKwkJfQotIAl9Ci0gCi0gCS8vIENoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIG5ldyBmaWxlcyBpbiAkR09ST09UL2JpbiBvdGhlciB0aGFuCi1AQCAtMTMzNSw3ICsxNDAxLDExIEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgewotIAl9Ci0gCi0gCS8vIFJlbW92ZSBnb19ib290c3RyYXAgbm93IHRoYXQgd2UncmUgZG9uZS4KLS0JeHJlbW92ZShwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgdG9vbGRpcikpCi0rCS8vIEV4Y2VwdCB0aGF0IGZvciBzcGxpdCBob3N0L3RhcmdldCBjcm9zcy1idWlsZHMsIHdlIG5lZWQgdG8KLSsJLy8ga2VlcCBpdC4KLSsJaWYgISBjcm9zc0J1aWxkIHsKLSsJCXhyZW1vdmUocGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIHRvb2xkaXIpKQotKwl9Ci0gCi0gCS8vIFByaW50IHRyYWlsaW5nIGJhbm5lciB1bmxlc3MgaW5zdHJ1Y3RlZCBvdGhlcndpc2UuCi0gCWlmICFub0Jhbm5lciB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5ZWY5NDcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLUZyb20gN2NjNjBiMzg4N2JlMmQ1Njc0YjlmNWQ0MjJkMDIyOTc2Y2YyMDVlNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci1EYXRlOiBGcmksIDIgTWFyIDIwMTggMDY6MDA6MjAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gY21kL2dvOiBtYWtlIEdPUk9PVCBwcmVjaW91cyBieSBkZWZhdWx0Ci0KLVRoZSBnbyBidWlsZCB0b29sIG5vcm1hbGx5IHJlYnVpbGRzIHdoYXRldmVyIGl0IGRldGVjdHMgaXMKLXN0YWxlLiAgVGhpcyBjYW4gYmUgYSBwcm9ibGVtIHdoZW4gR09ST09UIGlzIGludGVuZGVkIHRvCi1iZSByZWFkLW9ubHkgYW5kIHRoZSBnbyBydW50aW1lIGhhcyBiZWVuIGJ1aWx0IGFzIGEgc2hhcmVkCi1saWJyYXJ5LCBzaW5jZSB3ZSBkb24ndCB3YW50IGV2ZXJ5IGFwcGxpY2F0aW9uIHRvIGJlIHJlYnVpbGRpbmcKLXRoZSBzaGFyZWQgcnVudGltZSAtIHBhcnRpY3VsYXJseSBpbiBjcm9zcy1idWlsZC9wYWNrYWdpbmcKLXNldHVwcywgc2luY2UgdGhhdCB3b3VsZCBsZWFkIHRvICdhYmkgbWlzbWF0Y2gnIHJ1bnRpbWUgZXJyb3JzLgotCi1UaGlzIHBhdGNoIHByZXZlbnRzIHRoZSBpbnN0YWxsIGFuZCBsaW5rc2hhcmVkIGFjdGlvbnMgZnJvbQotaW5zdGFsbGluZyB0byBHT1JPT1QgdW5sZXNzIG92ZXJyaWRkZW4gd2l0aCB0aGUgR09ST09UX09WRVJSSURFCi1lbnZpcm9ubWVudCB2YXJpYWJsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLQotLS0tCi0gc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbyB8ICAzICsrKwotIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbyAgfCAgNSArKysrKwotIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvICAgfCAyNSArKysrKysrKysrKysrKysrKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspCi0KLUluZGV4OiBnby9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvCi0rKysgZ28vc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbwotQEAgLTYwMCw2ICs2MDAsOSBAQCBmdW5jIChiICpCdWlsZGVyKSBhZGRUcmFuc2l0aXZlTGlua0RlcHMoCi0gCQkJaWYgcDEgPT0gbmlsIHx8IHAxLlNobGliID09ICIiIHx8IGhhdmVTaGxpYltmaWxlcGF0aC5CYXNlKHAxLlNobGliKV0gewotIAkJCQljb250aW51ZQotIAkJCX0KLSsJCQlpZiBnb1Jvb3RQcmVjaW91cyAmJiAocDEuU3RhbmRhcmQgfHwgcDEuR29yb290KSB7Ci0rCQkJCWNvbnRpbnVlCi0rCQkJfQotIAkJCWhhdmVTaGxpYltmaWxlcGF0aC5CYXNlKHAxLlNobGliKV0gPSB0cnVlCi0gCQkJLy8gVE9ETyhyc2MpOiBUaGUgdXNlIG9mIE1vZGVJbnN0YWxsIGhlcmUgaXMgc3VzcGVjdCwgYnV0IGlmIHdlIG9ubHkgZG8gTW9kZUJ1aWxkLAotIAkJCS8vIHdlJ2xsIGVuZCB1cCBidWlsZGluZyBhbiBvdmVyYWxsIGxpYnJhcnkgb3IgZXhlY3V0YWJsZSB0aGF0IGRlcGVuZHMgYXQgcnVudGltZQotSW5kZXg6IGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCi0rKysgZ28vc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCi1AQCAtMTQ3LDYgKzE0Nyw3IEBAIFNlZSBhbHNvOiBnbyBpbnN0YWxsLCBnbyBnZXQsIGdvIGNsZWFuLgotIH0KLSAKLSBjb25zdCBjb25jdXJyZW50R0NCYWNrZW5kQ29tcGlsYXRpb25FbmFibGVkQnlEZWZhdWx0ID0gdHJ1ZQotK3ZhciBnb1Jvb3RQcmVjaW91cyBib29sID0gdHJ1ZQotIAotIGZ1bmMgaW5pdCgpIHsKLSAJLy8gYnJlYWsgaW5pdCBjeWNsZQotQEAgLTE2MCw2ICsxNjEsMTAgQEAgZnVuYyBpbml0KCkgewotIAotIAlBZGRCdWlsZEZsYWdzKENtZEJ1aWxkKQotIAlBZGRCdWlsZEZsYWdzKENtZEluc3RhbGwpCi0rCi0rCWlmIHggOj0gb3MuR2V0ZW52KCJHT1JPT1RfT1ZFUlJJREUiKTsgeCAhPSAiIiB7Ci0rCQlnb1Jvb3RQcmVjaW91cyA9IGZhbHNlCi0rCX0KLSB9Ci0gCi0gLy8gTm90ZSB0aGF0IGZsYWdzIGNvbnN1bHRlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUgY29kZQotSW5kZXg6IGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbwotKysrIGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi1AQCAtNDM2LDYgKzQzNiwyMyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZChhICpBY3Rpb24pIChlcnIKLSAJCXJldHVybiBmbXQuRXJyb3JmKCJtaXNzaW5nIG9yIGludmFsaWQgYmluYXJ5LW9ubHkgcGFja2FnZTsgZXhwZWN0ZWQgZmlsZSAlcSIsIGEuUGFja2FnZS5UYXJnZXQpCi0gCX0KLSAKLSsJaWYgZ29Sb290UHJlY2lvdXMgJiYgKGEuUGFja2FnZS5TdGFuZGFyZCB8fCBhLlBhY2thZ2UuR29yb290KSB7Ci0rCQlfLCBlcnIgOj0gb3MuU3RhdChhLlBhY2thZ2UuVGFyZ2V0KQotKwkJaWYgZXJyID09IG5pbCB7Ci0rCQkJYS5idWlsdCA9IGEuUGFja2FnZS5UYXJnZXQKLSsJCQlhLlRhcmdldCA9IGEuUGFja2FnZS5UYXJnZXQKLSsJCQlhLmJ1aWxkSUQgPSBiLmZpbGVIYXNoKGEuUGFja2FnZS5UYXJnZXQpCi0rCQkJYS5QYWNrYWdlLlN0YWxlID0gZmFsc2UKLSsJCQlhLlBhY2thZ2UuU3RhbGVSZWFzb24gPSAiR09ST09ULXJlc2lkZW50IHBhY2thZ2UiCi0rCQkJcmV0dXJuIG5pbAotKwkJfQotKwkJYS5QYWNrYWdlLlN0YWxlID0gdHJ1ZQotKwkJYS5QYWNrYWdlLlN0YWxlUmVhc29uID0gIm1pc3Npbmcgb3IgaW52YWxpZCBHT1JPT1QtcmVzaWRlbnQgcGFja2FnZSIKLSsJCWlmIGIuSXNDbWRMaXN0IHsKLSsJCQlyZXR1cm4gbmlsCi0rCQl9Ci0rCX0KLSsKLSAJaWYgZXJyIDo9IGIuTWtkaXIoYS5PYmpkaXIpOyBlcnIgIT0gbmlsIHsKLSAJCXJldHVybiBlcnIKLSAJfQotQEAgLTE0MzgsNiArMTQ1NSwxNCBAQCBmdW5jIEJ1aWxkSW5zdGFsbEZ1bmMoYiAqQnVpbGRlciwgYSAqQWN0Ci0gCQlyZXR1cm4gbmlsCi0gCX0KLSAKLSsJaWYgZ29Sb290UHJlY2lvdXMgJiYgYS5QYWNrYWdlICE9IG5pbCB7Ci0rCQlwIDo9IGEuUGFja2FnZQotKwkJaWYgcC5TdGFuZGFyZCB8fCBwLkdvcm9vdCB7Ci0rCQkJZXJyIDo9IGZtdC5FcnJvcmYoImF0dGVtcHRpbmcgdG8gaW5zdGFsbCBwYWNrYWdlICVzIGludG8gcmVhZC1vbmx5IEdPUk9PVCIsIHAuSW1wb3J0UGF0aCkKLSsJCQlyZXR1cm4gZXJyCi0rCQl9Ci0rCX0KLSsKLSAJaWYgZXJyIDo9IGIuTWtkaXIoYS5PYmpkaXIpOyBlcnIgIT0gbmlsIHsKLSAJCXJldHVybiBlcnIKLSAJfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA4LXVzZS1HT0JVSUxETU9ERS10by1zZXQtYnVpbGRtb2RlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA4LXVzZS1HT0JVSUxETU9ERS10by1zZXQtYnVpbGRtb2RlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjVjZjQzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwOC11c2UtR09CVUlMRE1PREUtdG8tc2V0LWJ1aWxkbW9kZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gMGUwYzI0N2YwY2FlYzIzNTI4ODg5ZmYwOWQ5ODM0OGNiYTkwMjhmMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgMjYgT2N0IDIwMTggMTU6MDI6MzIgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gdXNlIEdPQlVJTERNT0RFIHRvIHNldCBidWlsZG1vZGUKLQotV2hpbGUgYnVpbGRpbmcgZ28gaXRzZWxmLCB0aGUgZ28gYnVpbGQgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQKLXRvIHNldCBgLWJ1aWxkbW9kZT1waWUnIGZyb20gZW52aXJvbm1lbnQuCi0KLUFkZCBHT0JVSUxETU9ERSB0byBzdXBwb3J0IGl0IHdoaWNoIG1ha2UgUElFIGV4ZWN1dGFibGVzIHRoZSBkZWZhdWx0Ci1idWlsZCBtb2RlLCBhcyBQSUUgZXhlY3V0YWJsZXMgYXJlIHJlcXVpcmVkIGFzIG9mIFlvY3RvCi0KLVJlZmVyczogaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8jIXRvcGljL2dvbGFuZy1kZXYvZ1JDZTVVUktld0kKLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkIFt1cHN0cmVhbSBjaG9vc2UgYW50b2hlciBzb2x1dGlvbjogYDE3YTI1NmIKLWNtZC9nbzogLWJ1aWxkbW9kZT1waWUgZm9yIGFuZHJvaWQvYXJtJ10KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvIHwgNiArKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBnby9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotKysrIGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotQEAgLTIyMyw3ICsyMjMsMTEgQEAgZnVuYyBBZGRCdWlsZEZsYWdzKGNtZCAqYmFzZS5Db21tYW5kKSB7Ci0gCi0gCWNtZC5GbGFnLlZhcigmbG9hZC5CdWlsZEFzbWZsYWdzLCAiYXNtZmxhZ3MiLCAiIikKLSAJY21kLkZsYWcuVmFyKGJ1aWxkQ29tcGlsZXJ7fSwgImNvbXBpbGVyIiwgIiIpCi0tCWNtZC5GbGFnLlN0cmluZ1ZhcigmY2ZnLkJ1aWxkQnVpbGRtb2RlLCAiYnVpbGRtb2RlIiwgImRlZmF1bHQiLCAiIikKLSsJaWYgYm0gOj0gb3MuR2V0ZW52KCJHT0JVSUxETU9ERSIpOyBibSAhPSAiIiB7Ci0rCQljbWQuRmxhZy5TdHJpbmdWYXIoJmNmZy5CdWlsZEJ1aWxkbW9kZSwgImJ1aWxkbW9kZSIsIGJtLCAiIikKLSsJfSBlbHNlIHsKLSsJCWNtZC5GbGFnLlN0cmluZ1ZhcigmY2ZnLkJ1aWxkQnVpbGRtb2RlLCAiYnVpbGRtb2RlIiwgImRlZmF1bHQiLCAiIikKLSsJfQotIAljbWQuRmxhZy5WYXIoJmxvYWQuQnVpbGRHY2ZsYWdzLCAiZ2NmbGFncyIsICIiKQotIAljbWQuRmxhZy5WYXIoJmxvYWQuQnVpbGRHY2Nnb2ZsYWdzLCAiZ2NjZ29mbGFncyIsICIiKQotIAljbWQuRmxhZy5TdHJpbmdWYXIoJmNmZy5CdWlsZE1vZCwgIm1vZCIsICIiLCAiIikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQwY2Y0Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotRnJvbSAzNWVhNGJlMzRlOTQ5MTJiMDA4MzdlMGY3YzczODVmMmU5OGZlNzY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLURhdGU6IFN1biwgMTggRmViIDIwMTggMDg6MjQ6MDUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbGQ6IHJlcGxhY2UgZ2xpYmMgZHluYW1pYyBsaW5rZXIgd2l0aCBtdXNsCi0KLVJld29yayBvZiBwYXRjaCBieSBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotZm9yIGdvIDEuMTAuICBTaG91bGQgYmUgYXBwbGllZCBjb25kaXRpb25hbGx5IG9uCi1tdXNsIGJlaW5nIHRoZSBzeXN0ZW0gQyBsaWJyYXJ5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1JlYWwgZml4IHNob3VsZCBiZSBwb3J0YWJsZSBhY3Jvc3MgbGliY3NdCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci0KLS0tLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28gIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvICAgIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28gIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbyAgIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28gIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28gIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvICAgIHwgMiArLQotIDggZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCi1AQCAtNjIsNyArNjIsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKLSAJCVRMU0lFdG9MRTogICAgICAgIHRsc0lFdG9MRSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yIiwKLSsJCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkLW11c2wteDg2LTY0LnNvLjEiLAotIAkJRnJlZWJzZGR5bmxkOiAgICIvbGliZXhlYy9sZC1lbGYuc28uMSIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC5zbyIsCi0gCQlOZXRic2RkeW5sZDogICAgIi9saWJleGVjL2xkLmVsZl9zbyIsCi0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28KLUBAIC01OSw3ICs1OSw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAotIAkJUEVyZWxvYzE6ICAgICAgICAgcGVyZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAgICAgIi9saWIvbGQtbGludXguc28uMyIsIC8vIDIgZm9yIE9BQkksIDMgZm9yIEVBQkkKLSsJCUxpbnV4ZHlubGQ6ICAgICAiL2xpYi9sZC1tdXNsLWFybWhmLnNvLjEiLAotIAkJRnJlZWJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQtZWxmLnNvLjEiLAotIAkJT3BlbmJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQuc28iLAotIAkJTmV0YnNkZHlubGQ6ICAgICIvbGliZXhlYy9sZC5lbGZfc28iLAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbwotQEAgLTU3LDcgKzU3LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJR2VudGV4dDogICAgICAgICAgZ2VudGV4dCwKLSAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAotIAotLQkJTGludXhkeW5sZDogIi9saWIvbGQtbGludXgtYWFyY2g2NC5zby4xIiwKLSsJCUxpbnV4ZHlubGQ6ICIvbGliL2xkLW11c2wtYWFyY2g2NC5zby4xIiwKLSAKLSAJCUZyZWVic2RkeW5sZDogICAiWFhYIiwKLSAJCU9wZW5ic2RkeW5sZDogICAiWFhYIiwKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvCi1AQCAtNjAsNyArNjAsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAiL2xpYi9sZC5zby4xIiwKLSsJCUxpbnV4ZHlubGQ6ICIvbGliL2xkLW11c2wtbWlwc2xlLnNvLjEiLAotIAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvCi1AQCAtNTksNyArNTksNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZDY0LnNvLjEiLAotKwkJTGludXhkeW5sZDogICAgICIvbGliNjQvbGQtbXVzbC1taXBzNjRsZS5zby4xIiwKLSAJCUZyZWVic2RkeW5sZDogICAiWFhYIiwKLSAJCU9wZW5ic2RkeW5sZDogICAiWFhYIiwKLSAJCU5ldGJzZGR5bmxkOiAgICAiWFhYIiwKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28KLUBAIC02Miw3ICs2Miw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAotIAotIAkJLy8gVE9ETyhhdXN0aW4pOiBBQkkgdjEgdXNlcyAvdXNyL2xpYi9sZC5zby4xLAotLQkJTGludXhkeW5sZDogIi9saWI2NC9sZDY0LnNvLjEiLAotKwkJTGludXhkeW5sZDogIi9saWI2NC9sZC1tdXNsLXBvd2VycGM2NGxlLnNvLjEiLAotIAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbwotQEAgLTU3LDcgKzU3LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJR2VudGV4dDogICAgICAgICAgZ2VudGV4dCwKLSAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAotIAotLQkJTGludXhkeW5sZDogIi9saWI2NC9sZDY0LnNvLjEiLAotKwkJTGludXhkeW5sZDogIi9saWI2NC9sZC1tdXNsLXMzOTB4LnNvLjEiLAotIAotIAkJLy8gbm90IHJlbGV2YW50IGZvciBzMzkweAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvCi1AQCAtNTgsNyArNTgsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKLSAJCVBFcmVsb2MxOiAgICAgICAgIHBlcmVsb2MxLAotIAotLQkJTGludXhkeW5sZDogICAiL2xpYi9sZC1saW51eC5zby4yIiwKLSsJCUxpbnV4ZHlubGQ6ICAgIi9saWIvbGQtbXVzbC1pMzg2LnNvLjEiLAotIAkJRnJlZWJzZGR5bmxkOiAiL3Vzci9saWJleGVjL2xkLWVsZi5zby4xIiwKLSAJCU9wZW5ic2RkeW5sZDogIi91c3IvbGliZXhlYy9sZC5zbyIsCi0gCQlOZXRic2RkeW5sZDogICIvdXNyL2xpYmV4ZWMvbGQuZWxmX3NvIiwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGZkNWU0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIDllM2RjNDRjZGZhNThkOTY1MDRkMGE3ODlkYzgyNjE3ZGQ1YmVmNTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4IEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMyBPY3QgMjAxOSAyMTowMToxMyArMDQzMAotU3ViamVjdDogW1BBVENIIDEvOV0gY21kL2dvOiBBbGxvdyBDQyBhbmQgQ1hYIHRvIGhhdmUgbXVsdGlwbGUgd29yZHMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwotdGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5Ci1NYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KLQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEogS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci0KLS0tLQotIHNyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLWluZGV4IDE3ODUyZGUuLjdiNWVjNWUgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLSsrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbwotQEAgLTEwMCwxMSArMTAwLDExIEBAIGZ1bmMgTWtFbnYoKSBbXWNmZy5FbnZWYXIgewotIAotIAljYyA6PSBjZmcuRGVmYXVsdENDKGNmZy5Hb29zLCBjZmcuR29hcmNoKQotIAlpZiBlbnYgOj0gc3RyaW5ncy5GaWVsZHMoY2ZnLkdldGVudigiQ0MiKSk7IGxlbihlbnYpID4gMCB7Ci0tCQljYyA9IGVudlswXQotKwkJY2MgPSBzdHJpbmdzLkpvaW4oZW52LCAiICIpCi0gCX0KLSAJY3h4IDo9IGNmZy5EZWZhdWx0Q1hYKGNmZy5Hb29zLCBjZmcuR29hcmNoKQotIAlpZiBlbnYgOj0gc3RyaW5ncy5GaWVsZHMoY2ZnLkdldGVudigiQ1hYIikpOyBsZW4oZW52KSA+IDAgewotLQkJY3h4ID0gZW52WzBdCi0rCQljeHggPSBzdHJpbmdzLkpvaW4oZW52LCAiICIpCi0gCX0KLSAJZW52ID0gYXBwZW5kKGVudiwgY2ZnLkVudlZhcntOYW1lOiAiQVIiLCBWYWx1ZTogZW52T3IoIkFSIiwgImFyIil9KQotIAllbnYgPSBhcHBlbmQoZW52LCBjZmcuRW52VmFye05hbWU6ICJDQyIsIFZhbHVlOiBjY30pCi0tLSAKLTIuMTcuMSAoQXBwbGUgR2l0LTExMikKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVkZGQzOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyNiArMCwwIEBACi1Gcm9tIGExM2FlNDg0ZTQxMTM5MDk0NTA1ZDI4MzQ0MzdlOTI2MmE1MzE1ZjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4IEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMyBPY3QgMjAxOSAyMToxNDoyMiArMDQzMAotU3ViamVjdDogW1BBVENIIDIvOV0gY21kL2dvOiBtYWtlIGNvbnRlbnQtYmFzZWQgaGFzaCBnZW5lcmF0aW9uIGxlc3MgcGVkYW50aWMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotR28gMS4xMCdzIGJ1aWxkIHRvb2wgbm93IHVzZXMgY29udGVudC1iYXNlZCBoYXNoZXMgdG8KLWRldGVybWluZSB3aGVuIHNvbWV0aGluZyBzaG91bGQgYmUgYnVpbHQgb3IgcmUtYnVpbHQuCi1UaGlzIHNhbWUgbWVjaGFuaXNtIGlzIHVzZWQgdG8gbWFpbnRhaW4gYSBidWlsdC1hcnRpZmFjdAotY2FjaGUgZm9yIHNwZWVkaW5nIHVwIGJ1aWxkcy4KLQotSG93ZXZlciwgdGhlIGhhc2hlcyBpdCBnZW5lcmF0ZXMgaW5jbHVkZSBpbmZvcm1hdGlvbiB0aGF0Ci1kb2Vzbid0IHdvcmsgd2VsbCB3aXRoIE9FLCBub3Igd2l0aCB1c2luZyBhIHNoYXJlZCBydW50aW1lCi1saWJyYXJ5LgotCi1GaXJzdCwgaXQgZW1iZWRzIHBhdGggbmFtZXMgdG8gc291cmNlIGZpbGVzLCB1bmxlc3MKLWJ1aWxkaW5nIHdpdGhpbiBHT1JPT1QuICBUaGlzIHByZXZlbnRzIHRoZSBidWlsZGluZwotb2YgYSBwYWNrYWdlIGluIEdPUEFUSCBmb3IgbGF0ZXIgc3RhZ2luZyBpbnRvIEdPUk9PVC4KLQotVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQotR09QQVRIX09NSVRfSU5fQUNUSU9OSUQuICBJZiBwcmVzZW50LCBwYXRoIG5hbWUKLWVtYmVkZGluZyBpcyBkaXNhYmxlZC4KLQotU2Vjb25kLCBpZiBjZ28gaXMgZW5hYmxlZCwgdGhlIGJ1aWxkIElEIGZvciBjZ28tcmVsYXRlZAotcGFja2FnZXMgd2lsbCBpbmNsdWRlIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudAotdmFyaWFibGVzIGZvciBpbnZva2luZyB0aGUgY29tcGlsZXIgKENDLCBDWFgsIEZDKSBhbmQKLWFueSBDR09feHhGTEFHUyB2YXJpYWJsZXMuICBPbmx5IGlmIHRoZSBzZXR0aW5ncyB1c2VkCi1kdXJpbmcgYSBjb21waWxhdGlvbiBleGFjdGx5IG1hdGNoLCBjaGFyYWN0ZXIgZm9yIGNoYXJhY3RlciwKLXRoZSB2YWx1ZXMgdXNlZCBmb3IgY29tcGlsaW5nIHJ1bnRpbWUvY2dvIG9yIGFueSBvdGhlcgotY2dvLWVuYWJsZWQgcGFja2FnZSBiZWluZyBpbXBvcnRlZCwgd2lsbCB0aGUgdG9vbAotZGVjaWRlIHRoYXQgdGhlIGltcG9ydGVkIHBhY2thZ2UgaXMgdXAtdG8tZGF0ZS4KLQotVGhpcyBpcyBkb25lIHRvIGhlbHAgZW5zdXJlIGNvcnJlY3RuZXNzLCBidXQgaXMgb3Zlcmx5Ci1zaW1wbGlzdGljIGFuZCBlZmZlY3RpdmVseSBwcmV2ZW50cyB0aGUgcmV1c2Ugb2YgYnVpbHQKLWFydGlmYWN0cyB0aGF0IHVzZSBjZ28gKG9yIHNoYXJlZCBydW50aW1lLCB3aGljaCBpbmNsdWRlcwotcnVudGltZS9jZ28pLgotCi1UaGlzIHBhdGNoIGZpbHRlcnMgb3V0IGFsbCBjb21waWxlciBmbGFncyBleGNlcHQgdGhvc2UKLWJlZ2lubmluZyB3aXRoICctbScuICBUaGUgZGVmYXVsdCBiZWhhdmlvciBjYW4gYmUgcmVzdG9yZWQKLWJ5IHNldHRpbmcgdGhlIENHT19QRURBTlRJQyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLQotQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwotdGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5Ci1NYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KLQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEogS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gfCAgMiArLQotIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvICB8IDY2ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCi1pbmRleCA3YjVlYzVlLi4yOTJmMTE3IDEwMDY0NAotLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLUBAIC0xNTQsNyArMTU0LDcgQEAgZnVuYyBFeHRyYUVudlZhcnMoKSBbXWNmZy5FbnZWYXIgewotIGZ1bmMgRXh0cmFFbnZWYXJzQ29zdGx5KCkgW11jZmcuRW52VmFyIHsKLSAJdmFyIGIgd29yay5CdWlsZGVyCi0gCWIuSW5pdCgpCi0tCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIGVyciA6PSBiLkNGbGFncygmbG9hZC5QYWNrYWdle30pCi0rCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIGVyciA6PSBiLkNGbGFncygmbG9hZC5QYWNrYWdle30sIGZhbHNlKQotIAlpZiBlcnIgIT0gbmlsIHsKLSAJCS8vIFNob3VsZCBub3QgaGFwcGVuIC0gYi5DRmxhZ3Mgd2FzIGdpdmVuIGFuIGVtcHR5IHBhY2thZ2UuCi0gCQlmbXQuRnByaW50Zihvcy5TdGRlcnIsICJnbzogaW52YWxpZCBjZmxhZ3M6ICV2XG4iLCBlcnIpCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbwotaW5kZXggN2RkOWE5MC4uY2NlYmFmOCAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbwotQEAgLTMyLDYgKzMyLDggQEAgaW1wb3J0ICgKLSAJInRpbWUiCi0gKQotIAotK3ZhciBvbWl0R29wYXRoID0gb3MuR2V0ZW52KCJHT1BBVEhfT01JVF9JTl9BQ1RJT05JRCIpICE9ICIiCi0rCi0gLy8gYWN0aW9uTGlzdCByZXR1cm5zIHRoZSBsaXN0IG9mIGFjdGlvbnMgaW4gdGhlIGRhZyByb290ZWQgYXQgcm9vdAotIC8vIGFzIHZpc2l0ZWQgaW4gYSBkZXB0aC1maXJzdCBwb3N0LW9yZGVyIHRyYXZlcnNhbC4KLSBmdW5jIGFjdGlvbkxpc3Qocm9vdCAqQWN0aW9uKSBbXSpBY3Rpb24gewotQEAgLTIwNSw3ICsyMDcsNyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvbikgY2FjaGUuQWN0aW9uSUQgewotIAkvLyBUaGUgY29tcGlsZXIgaGlkZXMgdGhlIGV4YWN0IHZhbHVlIG9mICRHT1JPT1QKLSAJLy8gd2hlbiBidWlsZGluZyB0aGluZ3MgaW4gR09ST09ULgotIAkvLyBBc3N1bWUgYi5Xb3JrRGlyIGlzIGJlaW5nIHRyaW1tZWQgcHJvcGVybHkuCi0tCWlmICFwLkdvcm9vdCAmJiAhY2ZnLkJ1aWxkVHJpbXBhdGggJiYgIXN0cmluZ3MuSGFzUHJlZml4KHAuRGlyLCBiLldvcmtEaXIpIHsKLSsJaWYgIXAuR29yb290ICYmICFvbWl0R29wYXRoICYmICFjZmcuQnVpbGRUcmltcGF0aCAmJiAhc3RyaW5ncy5IYXNQcmVmaXgocC5EaXIsIGIuV29ya0RpcikgewotIAkJZm10LkZwcmludGYoaCwgImRpciAlc1xuIiwgcC5EaXIpCi0gCX0KLSAJZm10LkZwcmludGYoaCwgImdvb3MgJXMgZ29hcmNoICVzXG4iLCBjZmcuR29vcywgY2ZnLkdvYXJjaCkKLUBAIC0yMTksMTMgKzIyMSwxMyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvbikgY2FjaGUuQWN0aW9uSUQgewotIAl9Ci0gCWlmIGxlbihwLkNnb0ZpbGVzKStsZW4ocC5Td2lnRmlsZXMpID4gMCB7Ci0gCQlmbXQuRnByaW50ZihoLCAiY2dvICVxXG4iLCBiLnRvb2xJRCgiY2dvIikpCi0tCQljcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzLCBfIDo9IGIuQ0ZsYWdzKHApCi0tCQlmbXQuRnByaW50ZihoLCAiQ0M9JXEgJXEgJXEgJXFcbiIsIGIuY2NFeGUoKSwgY3BwZmxhZ3MsIGNmbGFncywgbGRmbGFncykKLSsJCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIF8gOj0gYi5DRmxhZ3MocCwgdHJ1ZSkKLSsJCWZtdC5GcHJpbnRmKGgsICJDQz0lcSAlcSAlcSAlcVxuIiwgYi5jY0V4ZSh0cnVlKSwgY3BwZmxhZ3MsIGNmbGFncywgbGRmbGFncykKLSAJCWlmIGxlbihwLkNYWEZpbGVzKStsZW4ocC5Td2lnRmlsZXMpID4gMCB7Ci0tCQkJZm10LkZwcmludGYoaCwgIkNYWD0lcSAlcVxuIiwgYi5jeHhFeGUoKSwgY3h4ZmxhZ3MpCi0rCQkJZm10LkZwcmludGYoaCwgIkNYWD0lcSAlcVxuIiwgYi5jeHhFeGUodHJ1ZSksIGN4eGZsYWdzKQotIAkJfQotIAkJaWYgbGVuKHAuRkZpbGVzKSA+IDAgewotLQkJCWZtdC5GcHJpbnRmKGgsICJGQz0lcSAlcVxuIiwgYi5mY0V4ZSgpLCBmZmxhZ3MpCi0rCQkJZm10LkZwcmludGYoaCwgIkZDPSVxICVxXG4iLCBiLmZjRXhlKHRydWUpLCBmZmxhZ3MpCi0gCQl9Ci0gCQkvLyBUT0RPKHJzYyk6IFNob3VsZCB3ZSBpbmNsdWRlIHRoZSBTV0lHIHZlcnNpb24gb3IgRm9ydHJhbi9HQ0MvRysrL09iamVjdGl2ZS1DIGNvbXBpbGVyIHZlcnNpb25zPwotIAl9Ci1AQCAtMjIyOSwzMyArMjIzMSw0OCBAQCB2YXIgKAotIC8vIGdjY0NtZCByZXR1cm5zIGEgZ2NjIGNvbW1hbmQgbGluZSBwcmVmaXgKLSAvLyBkZWZhdWx0Q0MgaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotIGZ1bmMgKGIgKkJ1aWxkZXIpIEdjY0NtZChpbmNkaXIsIHdvcmtkaXIgc3RyaW5nKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY2NFeGUoKSwgaW5jZGlyLCB3b3JrZGlyKQotKwlyZXR1cm4gYi5jb21waWxlckNtZChiLmNjRXhlKGZhbHNlKSwgaW5jZGlyLCB3b3JrZGlyKQotIH0KLSAKLSAvLyBneHhDbWQgcmV0dXJucyBhIGcrKyBjb21tYW5kIGxpbmUgcHJlZml4Ci0gLy8gZGVmYXVsdENYWCBpcyBkZWZpbmVkIGluIHpkZWZhdWx0Y2MuZ28sIHdyaXR0ZW4gYnkgY21kL2Rpc3QuCi0gZnVuYyAoYiAqQnVpbGRlcikgR3h4Q21kKGluY2Rpciwgd29ya2RpciBzdHJpbmcpIFtdc3RyaW5nIHsKLS0JcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jeHhFeGUoKSwgaW5jZGlyLCB3b3JrZGlyKQotKwlyZXR1cm4gYi5jb21waWxlckNtZChiLmN4eEV4ZShmYWxzZSksIGluY2Rpciwgd29ya2RpcikKLSB9Ci0gCi0gLy8gZ2ZvcnRyYW5DbWQgcmV0dXJucyBhIGdmb3J0cmFuIGNvbW1hbmQgbGluZSBwcmVmaXguCi0gZnVuYyAoYiAqQnVpbGRlcikgZ2ZvcnRyYW5DbWQoaW5jZGlyLCB3b3JrZGlyIHN0cmluZykgW11zdHJpbmcgewotLQlyZXR1cm4gYi5jb21waWxlckNtZChiLmZjRXhlKCksIGluY2Rpciwgd29ya2RpcikKLSsJcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5mY0V4ZShmYWxzZSksIGluY2Rpciwgd29ya2RpcikKLSB9Ci0gCi0gLy8gY2NFeGUgcmV0dXJucyB0aGUgQ0MgY29tcGlsZXIgc2V0dGluZyB3aXRob3V0IGFsbCB0aGUgZXh0cmEgZmxhZ3Mgd2UgYWRkIGltcGxpY2l0bHkuCi0tZnVuYyAoYiAqQnVpbGRlcikgY2NFeGUoKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDQywgY2ZnLkRlZmF1bHRDQyhjZmcuR29vcywgY2ZnLkdvYXJjaCkpCi0rZnVuYyAoYiAqQnVpbGRlcikgY2NFeGUoZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgewotKwlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ0MsIGNmZy5EZWZhdWx0Q0MoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpLCBmaWx0ZXJlZCkKLSB9Ci0gCi0gLy8gY3h4RXhlIHJldHVybnMgdGhlIENYWCBjb21waWxlciBzZXR0aW5nIHdpdGhvdXQgYWxsIHRoZSBleHRyYSBmbGFncyB3ZSBhZGQgaW1wbGljaXRseS4KLS1mdW5jIChiICpCdWlsZGVyKSBjeHhFeGUoKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDWFgsIGNmZy5EZWZhdWx0Q1hYKGNmZy5Hb29zLCBjZmcuR29hcmNoKSkKLStmdW5jIChiICpCdWlsZGVyKSBjeHhFeGUoZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgewotKwlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ1hYLCBjZmcuRGVmYXVsdENYWChjZmcuR29vcywgY2ZnLkdvYXJjaCksIGZpbHRlcmVkKQotIH0KLSAKLSAvLyBmY0V4ZSByZXR1cm5zIHRoZSBGQyBjb21waWxlciBzZXR0aW5nIHdpdGhvdXQgYWxsIHRoZSBleHRyYSBmbGFncyB3ZSBhZGQgaW1wbGljaXRseS4KLS1mdW5jIChiICpCdWlsZGVyKSBmY0V4ZSgpIFtdc3RyaW5nIHsKLS0JcmV0dXJuIGIuY29tcGlsZXJFeGUoY2ZnLkdldGVudigiRkMiKSwgImdmb3J0cmFuIikKLStmdW5jIChiICpCdWlsZGVyKSBmY0V4ZShmaWx0ZXJlZCBib29sKSBbXXN0cmluZyB7Ci0rCXJldHVybiBiLmNvbXBpbGVyRXhlKG9zLkdldGVudigiRkMiKSwgImdmb3J0cmFuIiwgZmlsdGVyZWQpCi0rfQotKwotK3ZhciBmaWx0ZXJGbGFncyA9IG9zLkdldGVudigiQ0dPX1BFREFOVElDIikgPT0gIiIKLSsKLStmdW5jIGZpbHRlckNvbXBpbGVyRmxhZ3MoZmxhZ3MgW11zdHJpbmcpIFtdc3RyaW5nIHsKLSsJdmFyIG5ld2ZsYWdzIFtdc3RyaW5nCi0rCWlmICFmaWx0ZXJGbGFncyB7Ci0rCQlyZXR1cm4gZmxhZ3MKLSsJfQotKwlmb3IgXywgZmxhZyA6PSByYW5nZSBmbGFncyB7Ci0rCQlpZiBzdHJpbmdzLkhhc1ByZWZpeChmbGFnLCAiLW0iKSB7Ci0rCQkJbmV3ZmxhZ3MgPSBhcHBlbmQobmV3ZmxhZ3MsIGZsYWcpCi0rCQl9Ci0rCX0KLSsJcmV0dXJuIG5ld2ZsYWdzCi0gfQotIAotIC8vIGNvbXBpbGVyRXhlIHJldHVybnMgdGhlIGNvbXBpbGVyIHRvIHVzZSBnaXZlbiBhbgotQEAgLTIyNjQsMTEgKzIyODEsMTYgQEAgZnVuYyAoYiAqQnVpbGRlcikgZmNFeGUoKSBbXXN0cmluZyB7Ci0gLy8gb2YgdGhlIGNvbXBpbGVyIGJ1dCBjYW4gaGF2ZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBpZiB0aGV5Ci0gLy8gd2VyZSBwcmVzZW50IGluIHRoZSBlbnZpcm9ubWVudCB2YWx1ZS4KLSAvLyBGb3IgZXhhbXBsZSBpZiBDQz0iZ2NjIC1ER09QSEVSIiB0aGVuIHRoZSByZXN1bHQgaXMgWyJnY2MiLCAiLURHT1BIRVIiXS4KLS1mdW5jIChiICpCdWlsZGVyKSBjb21waWxlckV4ZShlbnZWYWx1ZSBzdHJpbmcsIGRlZiBzdHJpbmcpIFtdc3RyaW5nIHsKLStmdW5jIChiICpCdWlsZGVyKSBjb21waWxlckV4ZShlbnZWYWx1ZSBzdHJpbmcsIGRlZiBzdHJpbmcsIGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKLSAJY29tcGlsZXIgOj0gc3RyaW5ncy5GaWVsZHMoZW52VmFsdWUpCi0gCWlmIGxlbihjb21waWxlcikgPT0gMCB7Ci0gCQljb21waWxlciA9IFtdc3RyaW5ne2RlZn0KLSAJfQotKwotKwlpZiBmaWx0ZXJlZCB7Ci0rCQlyZXR1cm4gYXBwZW5kKGNvbXBpbGVyWzA6MV0sIGZpbHRlckNvbXBpbGVyRmxhZ3MoY29tcGlsZXJbMTpdKS4uLikKLSsJfQotKwotIAlyZXR1cm4gY29tcGlsZXIKLSB9Ci0gCi1AQCAtMjQyOSw3ICsyNDUxLDcgQEAgZnVuYyBlbnZMaXN0KGtleSwgZGVmIHN0cmluZykgW11zdHJpbmcgewotIH0KLSAKLSAvLyBDRmxhZ3MgcmV0dXJucyB0aGUgZmxhZ3MgdG8gdXNlIHdoZW4gaW52b2tpbmcgdGhlIEMsIEMrKyBvciBGb3J0cmFuIGNvbXBpbGVycywgb3IgY2dvLgotLWZ1bmMgKGIgKkJ1aWxkZXIpIENGbGFncyhwICpsb2FkLlBhY2thZ2UpIChjcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzIFtdc3RyaW5nLCBlcnIgZXJyb3IpIHsKLStmdW5jIChiICpCdWlsZGVyKSBDRmxhZ3MocCAqbG9hZC5QYWNrYWdlLCBmaWx0ZXJlZCBib29sKSAoY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncyBbXXN0cmluZywgZXJyIGVycm9yKSB7Ci0gCWRlZmF1bHRzIDo9ICItZyAtTzIiCi0gCi0gCWlmIGNwcGZsYWdzLCBlcnIgPSBidWlsZEZsYWdzKCJDUFBGTEFHUyIsICIiLCBwLkNnb0NQUEZMQUdTLCBjaGVja0NvbXBpbGVyRmxhZ3MpOyBlcnIgIT0gbmlsIHsKLUBAIC0yNDQ4LDYgKzI0NzAsMTQgQEAgZnVuYyAoYiAqQnVpbGRlcikgQ0ZsYWdzKHAgKmxvYWQuUGFja2FnZSkgKGNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGwKLSAJCXJldHVybgotIAl9Ci0gCi0rCWlmIGZpbHRlcmVkIHsKLSsJCWNwcGZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhjcHBmbGFncykKLSsJCWNmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoY2ZsYWdzKQotKwkJY3h4ZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGN4eGZsYWdzKQotKwkJZmZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhmZmxhZ3MpCi0rCQlsZGZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhsZGZsYWdzKQotKwl9Ci0rCi0gCXJldHVybgotIH0KLSAKLUBAIC0yNDYyLDcgKzI0OTIsNyBAQCB2YXIgY2dvUmUgPSBsYXp5cmVnZXhwLk5ldyhgWy9cXDpdYCkKLSAKLSBmdW5jIChiICpCdWlsZGVyKSBjZ28oYSAqQWN0aW9uLCBjZ29FeGUsIG9iamRpciBzdHJpbmcsIHBjQ0ZMQUdTLCBwY0xERkxBR1MsIGNnb2ZpbGVzLCBnY2NmaWxlcywgZ3h4ZmlsZXMsIG1maWxlcywgZmZpbGVzIFtdc3RyaW5nKSAob3V0R28sIG91dE9iaiBbXXN0cmluZywgZXJyIGVycm9yKSB7Ci0gCXAgOj0gYS5QYWNrYWdlCi0tCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBjZ29GRkxBR1MsIGNnb0xERkxBR1MsIGVyciA6PSBiLkNGbGFncyhwKQotKwljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgY2dvRkZMQUdTLCBjZ29MREZMQUdTLCBlcnIgOj0gYi5DRmxhZ3MocCwgZmFsc2UpCi0gCWlmIGVyciAhPSBuaWwgewotIAkJcmV0dXJuIG5pbCwgbmlsLCBlcnIKLSAJfQotQEAgLTI4MjEsNyArMjg1MSw3IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIHN3aWdJbnRTaXplKG9iamRpciBzdHJpbmcpIChpbnRzaXplIHN0cmluZywgZXJyIGVycm9yKSB7Ci0gCi0gLy8gUnVuIFNXSUcgb24gb25lIFNXSUcgaW5wdXQgZmlsZS4KLSBmdW5jIChiICpCdWlsZGVyKSBzd2lnT25lKGEgKkFjdGlvbiwgcCAqbG9hZC5QYWNrYWdlLCBmaWxlLCBvYmpkaXIgc3RyaW5nLCBwY0NGTEFHUyBbXXN0cmluZywgY3h4IGJvb2wsIGludGdvc2l6ZSBzdHJpbmcpIChvdXRHbywgb3V0QyBzdHJpbmcsIGVyciBlcnJvcikgewotLQljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgXywgXywgZXJyIDo9IGIuQ0ZsYWdzKHApCi0rCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBfLCBfLCBlcnIgOj0gYi5DRmxhZ3MocCwgZmFsc2UpCi0gCWlmIGVyciAhPSBuaWwgewotIAkJcmV0dXJuICIiLCAiIiwgZXJyCi0gCX0KLS0tIAotMi4xNy4xIChBcHBsZSBHaXQtMTEyKQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDAzLWFsbG93LUdPVE9PTERJUi10by1iZS1vdmVycmlkZGVuLWluLXRoZS1lbnZpcm9ubWVudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWFhMDExOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSAyOGFkYTg4OTZiNzZkNjIwMjQwYmFmYzIyYWEzOTUwNzFkNjAxNDgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MTU6MzcgKzA0MzAKLVN1YmplY3Q6IFtQQVRDSCAzLzldIGNtZC9nbzogQWxsb3cgR09UT09MRElSIHRvIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGVudmlyb25tZW50Ci0KLXRvIGFsbG93IGZvciBzcGxpdCBob3N0L3RhcmdldCBidWlsZCByb290cwotCi1BZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCi10aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKLU1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9jbWQvZGlzdC9idWlsZC5nbyAgICAgICAgICB8IDQgKysrLQotIHNyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbyB8IDYgKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2Rpc3QvYnVpbGQuZ28gYi9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLWluZGV4IDllNTAzMTEuLjY4M2NhNmYgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLSsrKyBiL3NyYy9jbWQvZGlzdC9idWlsZC5nbwotQEAgLTI0NCw3ICsyNDQsOSBAQCBmdW5jIHhpbml0KCkgewotIAl3b3JrZGlyID0geHdvcmtkaXIoKQotIAl4YXRleGl0KHJtd29ya2RpcikKLSAKLS0JdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCi0rCWlmIHRvb2xkaXIgPSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpOyB0b29sZGlyID09ICIiIHsKLSsJCXRvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQotKwl9Ci0gfQotIAotIC8vIGNvbXBpbGVyRW52IHJldHVybnMgYSBtYXAgZnJvbSAiZ29vcy9nb2FyY2giIHRvIHRoZQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbwotaW5kZXggYTMyNzdhNi4uZGI5NjM1MCAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbwotKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCi1AQCAtNjAsNyArNjAsMTEgQEAgZnVuYyBkZWZhdWx0Q29udGV4dCgpIGJ1aWxkLkNvbnRleHQgewotIAkJLy8gdmFyaWFibGVzLiBUaGlzIG1hdGNoZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIFRvb2xEaXIgaW4KLSAJCS8vIGdvL2J1aWxkLCBleGNlcHQgZm9yIHVzaW5nIGN0eHQuR09ST09UIHJhdGhlciB0aGFuCi0gCQkvLyBydW50aW1lLkdPUk9PVC4KLS0JCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKGN0eHQuR09ST09ULCAicGtnL3Rvb2wvIitydW50aW1lLkdPT1MrIl8iK3J1bnRpbWUuR09BUkNIKQotKwkJaWYgcyA6PSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpOyBzICE9ICIiIHsKLSsJCQlidWlsZC5Ub29sRGlyID0gZmlsZXBhdGguQ2xlYW4ocykKLSsJCX0gZWxzZSB7Ci0rCQkJYnVpbGQuVG9vbERpciA9IGZpbGVwYXRoLkpvaW4oY3R4dC5HT1JPT1QsICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCi0rCQl9Ci0gCX0KLSAKLSAJY3R4dC5HT1BBVEggPSBlbnZPcigiR09QQVRIIiwgY3R4dC5HT1BBVEgpCi0tLSAKLTIuMTcuMSAoQXBwbGUgR2l0LTExMikKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDQtbGQtYWRkLXNvbmFtZS10by1zaGFyZWFibGUtb2JqZWN0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDA3NjNhZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDQtbGQtYWRkLXNvbmFtZS10by1zaGFyZWFibGUtb2JqZWN0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gYmY1Y2Y1MzAxYWU1OTE0NDk4NDU0Yzg3MjkzZDFkZjJlMWQ4NDg5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE2OjMyICswNDMwCi1TdWJqZWN0OiBbUEFUQ0ggNC85XSBsZDogYWRkIHNvbmFtZSB0byBzaGFyZWFibGUgb2JqZWN0cwotCi1zbyB0aGF0IE9FJ3Mgc2hhcmVkIGxpYnJhcnkgZGVwZW5kZW5jeSBoYW5kbGluZwotY2FuIGZpbmQgdGhlbS4KLQotQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwotdGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5Ci1NYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEogS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvIHwgMyArKysKLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbwotaW5kZXggM2ZhMjU4ZC4uZjk2ZmIwMiAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KLUBAIC0xMjE1LDYgKzEyMTUsNyBAQCBmdW5jIChjdHh0ICpMaW5rKSBob3N0bGluaygpIHsKLSAJCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKLSAJCQl9Ci0gCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLXNoYXJlZCIpCi0rCQkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQotIAkJCWlmIGN0eHQuSGVhZFR5cGUgIT0gb2JqYWJpLkh3aW5kb3dzIHsKLSAJCQkJLy8gUGFzcyAteiBub2RlbGV0ZSB0byBtYXJrIHRoZSBzaGFyZWQgbGlicmFyeSBhcwotIAkJCQkvLyBub24tY2xvc2VhYmxlOiBhIGRsY2xvc2Ugd2lsbCBkbyBub3RoaW5nLgotQEAgLTEyMjYsNiArMTIyNyw3IEBAIGZ1bmMgKGN0eHQgKkxpbmspIGhvc3RsaW5rKCkgewotIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCi0gCQl9Ci0gCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIikKLSsJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKLSAJY2FzZSBCdWlsZE1vZGVQbHVnaW46Ci0gCQlpZiBjdHh0LkhlYWRUeXBlID09IG9iamFiaS5IZGFyd2luIHsKLSAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItZHluYW1pY2xpYiIpCi1AQCAtMTIzNCw2ICsxMjM2LDcgQEAgZnVuYyAoY3R4dCAqTGluaykgaG9zdGxpbmsoKSB7Ci0gCQkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCi0gCQkJfQotIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQotKwkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKLSAJCX0KLSAJfQotIAotLS0gCi0yLjE3LjEgKEFwcGxlIEdpdC0xMTIpCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmMmE0NmMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIGYwNWVmM2RlZDUyYjk4NTM3YzEwZWZkMGIxNWNkOTYxMjQ3MTUyNGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4IEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMyBPY3QgMjAxOSAyMToxNzoxNiArMDQzMAotU3ViamVjdDogW1BBVENIIDUvOV0gbWFrZS5iYXNoOiBvdmVycmlkZSBDQyB3aGVuIGJ1aWxkaW5nIGRpc3QgYW5kCi0gZ29fYm9vdHN0cmFwCi0KLWZvciBoYW5kbGluZyBPRSBjcm9zcy1jYW5hZGlhbiBidWlsZHMuCi0KLUFkYXB0ZWQgdG8gR28gMS4xMyBmcm9tIHBhdGNoZXMgb3JpZ2luYWxseSBzdWJtaXR0ZWQgdG8KLXRoZSBtZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28gdHJlZSBieQotTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4uCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBKIEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotLS0tCi0gc3JjL21ha2UuYmFzaCB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbWFrZS5iYXNoIGIvc3JjL21ha2UuYmFzaAotaW5kZXggOTJkMTQ4MS4uMGMyODIyZiAxMDA3NTUKLS0tLSBhL3NyYy9tYWtlLmJhc2gKLSsrKyBiL3NyYy9tYWtlLmJhc2gKLUBAIC0xNzcsNyArMTc3LDcgQEAgaWYgWyAiJEdPUk9PVF9CT09UU1RSQVAiID0gIiRHT1JPT1QiIF07IHRoZW4KLSAJZXhpdCAxCi0gZmkKLSBybSAtZiBjbWQvZGlzdC9kaXN0Ci0tR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgR08xMTFNT0RVTEU9b2ZmICIkR09ST09UX0JPT1RTVFJBUC9iaW4vZ28iIGJ1aWxkIC1vIGNtZC9kaXN0L2Rpc3QgLi9jbWQvZGlzdAotK0NDPSIke0JVSUxEX0NDOi0ke0NDfX0iIEdPUk9PVD0iJEdPUk9PVF9CT09UU1RSQVAiIEdPT1M9IiIgR09BUkNIPSIiIEdPMTExTU9EVUxFPW9mZiAiJEdPUk9PVF9CT09UU1RSQVAvYmluL2dvIiBidWlsZCAtbyBjbWQvZGlzdC9kaXN0IC4vY21kL2Rpc3QKLSAKLSAjIC1lIGRvZXNuJ3QgcHJvcGFnYXRlIG91dCBvZiBldmFsLCBzbyBjaGVjayBzdWNjZXNzIGJ5IGhhbmQuCi0gZXZhbCAkKC4vY21kL2Rpc3QvZGlzdCBlbnYgLXAgfHwgZWNobyBGQUlMPXRydWUpCi1AQCAtMjA4LDcgKzIwOCw3IEBAIGZpCi0gIyBSdW4gZGlzdCBib290c3RyYXAgdG8gY29tcGxldGUgbWFrZS5iYXNoLgotICMgQm9vdHN0cmFwIGluc3RhbGxzIGEgcHJvcGVyIGNtZC9kaXN0LCBidWlsdCB3aXRoIHRoZSBuZXcgdG9vbGNoYWluLgotICMgVGhyb3cgb3VycywgYnVpbHQgd2l0aCBHbyAxLjQsIGF3YXkgYWZ0ZXIgYm9vdHN0cmFwLgotLS4vY21kL2Rpc3QvZGlzdCBib290c3RyYXAgJGJ1aWxkYWxsICR2ZmxhZyAkR09fRElTVEZMQUdTICIkQCIKLStDQz0iJHtCVUlMRF9DQzotJHtDQ319IiAuL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkdmZsYWcgJEdPX0RJU1RGTEFHUyAiJEAiCi0gcm0gLWYgLi9jbWQvZGlzdC9kaXN0Ci0gCi0gIyBETyBOT1QgQUREIEFOWSBORVcgQ09ERSBIRVJFLgotLS0gCi0yLjE3LjEgKEFwcGxlIEdpdC0xMTIpCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1NGFhY2EuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNzkgKzAsMCBAQAotRnJvbSAxMDczNWJiODRkZjE3YmE2NTdmNzY4MzVmNDgzY2Q4NTQzYTg3OWMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MTg6MTIgKzA0MzAKLVN1YmplY3Q6IFtQQVRDSCA2LzldIGNtZC9kaXN0OiBzZXBhcmF0ZSBob3N0IGFuZCB0YXJnZXQgYnVpbGRzCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLUNoYW5nZSB0aGUgZGlzdCB0b29sIHRvIGFsbG93IGZvciBPRS1zdHlsZSBjcm9zcy0KLWFuZCBjcm9zcy1jYW5hZGlhbiBidWlsZHM6Ci0KLSAtIGNvbW1hbmQgZmxhZ3MgLS1ob3N0LW9ubHkgYW5kIC0tdGFyZ2V0IG9ubHkgYXJlIGFkZGVkOwotICAgaWYgb25lIGlzIHByZXNlbnQsIHRoZSBvdGhlciBjaGFuZ2VzIG1lbnRpb25lZCBiZWxvdwotICAgdGFrZSBlZmZlY3QsIGFuZCBhcmd1bWVudHMgbWF5IGFsc28gYmUgc3BlY2lmaWVkIG9uCi0gICB0aGUgY29tbWFuZCBsaW5lIHRvIGVudW1lcmF0ZSB0aGUgcGFja2FnZShzKSB0byBiZQotICAgYnVpbHQuCi0KLSAtIGZvciBPRSBjcm9zcyBidWlsZHMsIGdvX2Jvb3RzdHJhcCBpcyBhbHdheXMgYnVpbHQgZm9yCi0gICB0aGUgY3VycmVudCBidWlsZCBob3N0LCBhbmQgaXMgbW92ZWQsIGFsb25nIHdpdGggdGhlIHN1cHBvcnRpbmcKLSAgIHRvb2xjaGFpbiAoYXNtLCBjb21waWxlLCBldGMuKSB0byBhIHNlcGFyYXRlICduYXRpdmVfbmF0aXZlJwotICAgZGlyZWN0b3J5IHVuZGVyIEdPUk9PVC9wa2cvdG9vbC4KLQotIC0gZ29fYm9vdHN0cmFwIGlzIG5vdCBhdXRvbWF0aWNhbGx5IHJlbW92ZWQgYWZ0ZXIgdGhlIGJ1aWxkLAotICAgc28gaXQgY2FuIGJlIHJldXNlZCBsYXRlciAoZS5nLiwgYnVpbGRpbmcgYm90aCBzdGF0aWMgYW5kCi0gICBzaGFyZWQgcnVudGltZSkuCi0KLU5vdGUgdGhhdCBmb3IgLS1ob3N0LW9ubHkgYnVpbGRzLCBpdCB3b3VsZCBiZSBuaWNlIHRvIHNwZWNpZnkKLWp1c3QgdGhlICJjbWQiIHBhY2thZ2UgdG8gYnVpbGQgb25seSB0aGUgZ28gY29tbWFuZHMvdG9vbHMsCi10aGUgc3RhbGVuZXNzIGNoZWNrcyBpbiB0aGUgZGlzdCB0b29sIHdpbGwgZmFpbCBpZiB0aGUgInN0ZCIKLWxpYnJhcnkgaGFzIG5vdCBhbHNvIGJlZW4gYnVpbHQuICBTbyBob3N0LW9ubHkgYnVpbGRzIGhhdmUgdG8KLWJ1aWxkIGV2ZXJ5dGhpbmcgYW55d2F5LgotCi1BZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCi10aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKLU1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9jbWQvZGlzdC9idWlsZC5nbyB8IDE1NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTEyIGluc2VydGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9kaXN0L2J1aWxkLmdvIGIvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCi1pbmRleCA2ODNjYTZmLi4wYWQwODJiIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCi0rKysgYi9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLUBAIC00MSw2ICs0MSw3IEBAIHZhciAoCi0gCWdvbGRmbGFncyAgICAgICAgc3RyaW5nCi0gCXdvcmtkaXIgICAgICAgICAgc3RyaW5nCi0gCXRvb2xkaXIgICAgICAgICAgc3RyaW5nCi0rCWJ1aWxkX3Rvb2xkaXIgICAgc3RyaW5nCi0gCW9sZGdvb3MgICAgICAgICAgc3RyaW5nCi0gCW9sZGdvYXJjaCAgICAgICAgc3RyaW5nCi0gCWV4ZSAgICAgICAgICAgICAgc3RyaW5nCi1AQCAtNTMsNiArNTQsNyBAQCB2YXIgKAotIAotIAlyZWJ1aWxkYWxsICAgYm9vbAotIAlkZWZhdWx0Y2xhbmcgYm9vbAotKwljcm9zc0J1aWxkICAgYm9vbAotIAotIAl2ZmxhZyBpbnQgLy8gdmVyYm9zaXR5Ci0gKQotQEAgLTI0Nyw2ICsyNDksOCBAQCBmdW5jIHhpbml0KCkgewotIAlpZiB0b29sZGlyID0gb3MuR2V0ZW52KCJHT1RPT0xESVIiKTsgdG9vbGRpciA9PSAiIiB7Ci0gCQl0b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sLyVzXyVzIiwgZ29yb290LCBnb2hvc3RvcywgZ29ob3N0YXJjaCkKLSAJfQotKwotKwlidWlsZF90b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sL25hdGl2ZV9uYXRpdmUiLCBnb3Jvb3QpCi0gfQotIAotIC8vIGNvbXBpbGVyRW52IHJldHVybnMgYSBtYXAgZnJvbSAiZ29vcy9nb2FyY2giIHRvIHRoZQotQEAgLTQ3OCw4ICs0ODIsMTAgQEAgZnVuYyBzZXR1cCgpIHsKLSAJcCA6PSBwYXRoZigiJXMvcGtnLyVzXyVzIiwgZ29yb290LCBnb2hvc3RvcywgZ29ob3N0YXJjaCkKLSAJaWYgcmVidWlsZGFsbCB7Ci0gCQl4cmVtb3ZlYWxsKHApCi0rCQl4cmVtb3ZlYWxsKGJ1aWxkX3Rvb2xkaXIpCi0gCX0KLSAJeG1rZGlyYWxsKHApCi0rCXhta2RpcmFsbChidWlsZF90b29sZGlyKQotIAotIAlpZiBnb29zICE9IGdvaG9zdG9zIHx8IGdvYXJjaCAhPSBnb2hvc3RhcmNoIHsKLSAJCXAgOj0gcGF0aGYoIiVzL3BrZy8lc18lcyIsIGdvcm9vdCwgZ29vcywgZ29hcmNoKQotQEAgLTEyMDcsMTIgKzEyMTMsMjkgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7Ci0gCi0gCXZhciBub0Jhbm5lciBib29sCi0gCXZhciBkZWJ1ZyBib29sCi0rCXZhciBob3N0T25seSBib29sCi0rCXZhciB0YXJnZXRPbmx5IGJvb2wKLSsJdmFyIHRvQnVpbGQgPSBbXXN0cmluZ3sic3RkIiwgImNtZCJ9Ci0rCi0gCWZsYWcuQm9vbFZhcigmcmVidWlsZGFsbCwgImEiLCByZWJ1aWxkYWxsLCAicmVidWlsZCBhbGwiKQotIAlmbGFnLkJvb2xWYXIoJmRlYnVnLCAiZCIsIGRlYnVnLCAiZW5hYmxlIGRlYnVnZ2luZyBvZiBib290c3RyYXAgcHJvY2VzcyIpCi0gCWZsYWcuQm9vbFZhcigmbm9CYW5uZXIsICJuby1iYW5uZXIiLCBub0Jhbm5lciwgImRvIG5vdCBwcmludCBiYW5uZXIiKQotKwlmbGFnLkJvb2xWYXIoJmhvc3RPbmx5LCAiaG9zdC1vbmx5IiwgaG9zdE9ubHksICJidWlsZCBvbmx5IGhvc3QgYmluYXJpZXMsIG5vdCB0YXJnZXQiKQotKwlmbGFnLkJvb2xWYXIoJnRhcmdldE9ubHksICJ0YXJnZXQtb25seSIsIHRhcmdldE9ubHksICJidWlsZCBvbmx5IHRhcmdldCBiaW5hcmllcywgbm90IGhvc3QiKQotIAotLQl4ZmxhZ3BhcnNlKDApCi0rCXhmbGFncGFyc2UoLTEpCi0gCi0rCWlmIGhvc3RPbmx5ICYmIHRhcmdldE9ubHkgewotKwkJZmF0YWxmKCJzcGVjaWZ5IG9ubHkgb25lIG9mIC0taG9zdC1vbmx5IG9yIC0tdGFyZ2V0LW9ubHlcbiIpCi0rCX0KLSsJY3Jvc3NCdWlsZCA9IGhvc3RPbmx5IHx8IHRhcmdldE9ubHkKLSsJaWYgZmxhZy5OQXJnKCkgPiAwIHsKLSsJCWlmIGNyb3NzQnVpbGQgewotKwkJCXRvQnVpbGQgPSBmbGFnLkFyZ3MoKQotKwkJfSBlbHNlIHsKLSsJCQlmYXRhbGYoInBhY2thZ2UgbmFtZXMgbm90IHBlcm1pdHRlZCB3aXRob3V0IC0taG9zdC1vbmx5IG9yIC0tdGFyZ2V0LW9ubHlcbiIpCi0rCQl9Ci0rCX0KLSAJLy8gU2V0IEdPUEFUSCB0byBhbiBpbnRlcm5hbCBkaXJlY3RvcnkuIFdlIHNob3VsZG4ndCBhY3R1YWxseQotIAkvLyBuZWVkIHRvIHN0b3JlIGZpbGVzIGhlcmUsIHNpbmNlIHRoZSB0b29sY2hhaW4gd29uJ3QKLSAJLy8gZGVwZW5kIG9uIG1vZHVsZXMgb3V0c2lkZSBvZiB2ZW5kb3IgZGlyZWN0b3JpZXMsIGJ1dCBpZgotQEAgLTEyNjYsOCArMTI4OSwxMyBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKLSAJCXhwcmludGYoIlxuIikKLSAJfQotIAotLQlnb2djZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0dDRkxBR1MiKSAvLyB3ZSB3ZXJlIHVzaW5nICRCT09UX0dPX0dDRkxBR1MgdW50aWwgbm93Ci0tCWdvbGRmbGFncyA9IG9zLkdldGVudigiR09fTERGTEFHUyIpIC8vIHdlIHdlcmUgdXNpbmcgJEJPT1RfR09fTERGTEFHUyB1bnRpbCBub3cKLSsJLy8gRm9yIHNwbGl0IGhvc3QvdGFyZ2V0IGNyb3NzL2Nyb3NzLWNhbmFkaWFuIGJ1aWxkcywgd2UgZG9uJ3QKLSsJLy8gd2FudCB0byBiZSBzZXR0aW5nIHRoZXNlIGZsYWdzIHVudGlsIGFmdGVyIHdlIGhhdmUgY29tcGlsZWQKLSsJLy8gdGhlIHRvb2xjaGFpbiB0aGF0IHJ1bnMgb24gdGhlIGJ1aWxkIGhvc3QuCi0rCWlmICFjcm9zc0J1aWxkIHsKLSsJCWdvZ2NmbGFncyA9IG9zLkdldGVudigiR09fR0NGTEFHUyIpIC8vIHdlIHdlcmUgdXNpbmcgJEJPT1RfR09fR0NGTEFHUyB1bnRpbCBub3cKLSsJCWdvbGRmbGFncyA9IG9zLkdldGVudigiR09fTERGTEFHUyIpIC8vIHdlIHdlcmUgdXNpbmcgJEJPT1RfR09fTERGTEFHUyB1bnRpbCBub3cKLSsJfQotIAlnb0Jvb3RzdHJhcCA6PSBwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgdG9vbGRpcikKLSAJY21kR28gOj0gcGF0aGYoIiVzL2dvIiwgZ29iaW4pCi0gCWlmIGRlYnVnIHsKLUBAIC0xMjk2LDcgKzEzMjQsMTEgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7Ci0gCQl4cHJpbnRmKCJcbiIpCi0gCX0KLSAJeHByaW50ZigiQnVpbGRpbmcgR28gdG9vbGNoYWluMiB1c2luZyBnb19ib290c3RyYXAgYW5kIEdvIHRvb2xjaGFpbjEuXG4iKQotLQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQotKwlpZiBjcm9zc0J1aWxkIHsKLSsJCW9zLlNldGVudigiQ0MiLCBkZWZhdWx0Y2NbIiJdKQotKwl9IGVsc2UgewotKwkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKLSsJfQotIAlnb0luc3RhbGwoZ29Cb290c3RyYXAsIGFwcGVuZChbXXN0cmluZ3siLWkifSwgdG9vbGNoYWluLi4uKS4uLikKLSAJaWYgZGVidWcgewotIAkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgIi1WPWZ1bGwiKQotQEAgLTEzMzMsNTAgKzEzNjUsODQgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7Ci0gCX0KLSAJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCi0gCi0tCWlmIGdvb3MgPT0gb2xkZ29vcyAmJiBnb2FyY2ggPT0gb2xkZ29hcmNoIHsKLS0JCS8vIENvbW1vbiBjYXNlIC0gbm90IHNldHRpbmcgdXAgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLgotLQkJdGltZWxvZygiYnVpbGQiLCAidG9vbGNoYWluIikKLS0JCWlmIHZmbGFnID4gMCB7Ci0tCQkJeHByaW50ZigiXG4iKQotKwlpZiBjcm9zc0J1aWxkIHsKLSsJCWdvZ2NmbGFncyA9IG9zLkdldGVudigiR09fR0NGTEFHUyIpCi0rCQlnb2xkZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0xERkxBR1MiKQotKwkJdG9vbF9maWxlcywgXyA6PSBmaWxlcGF0aC5HbG9iKHBhdGhmKCIlcy8qIiwgdG9vbGRpcikpCi0rCQlmb3IgXywgZiA6PSByYW5nZSB0b29sX2ZpbGVzIHsKLSsJCQljb3B5ZmlsZShwYXRoZigiJXMvJXMiLCBidWlsZF90b29sZGlyLCBmaWxlcGF0aC5CYXNlKGYpKSwgZiwgd3JpdGVFeGVjKQotKwkJCXhyZW1vdmUoZikKLSsJCX0KLSsJCW9zLlNldGVudigiR09UT09MRElSIiwgYnVpbGRfdG9vbGRpcikKLSsJCWdvQm9vdHN0cmFwID0gcGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIGJ1aWxkX3Rvb2xkaXIpCi0rCQlpZiBob3N0T25seSB7Ci0rCQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQotKwkJCWlmIHZmbGFnID4gMCB7Ci0rCQkJCXhwcmludGYoIlxuIikKLSsJCQl9Ci0rCQkJeHByaW50ZigiQnVpbGRpbmcgJXMgZm9yIGhvc3QsICVzLyVzLlxuIiwgc3RyaW5ncy5Kb2luKHRvQnVpbGQsICIsIiksIGdvb3MsIGdvYXJjaCkKLSsJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCi0rCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKLSsJCQkvLyBTa2lwIGNtZEdvIHN0YWxlbmVzcyBjaGVja3MgaGVyZSwgc2luY2Ugd2UgY2FuJ3QgbmVjZXNzYXJpbHkgcnVuIHRoZSBjbWRHbyBiaW5hcnkKLSsKLSsJCQl0aW1lbG9nKCJidWlsZCIsICJ0YXJnZXQgdG9vbGNoYWluIikKLSsJCQlpZiB2ZmxhZyA+IDAgewotKwkJCQl4cHJpbnRmKCJcbiIpCi0rCQkJfQotKwkJfSBlbHNlIGlmIHRhcmdldE9ubHkgewotKwkJCWdvb3MgPSBvbGRnb29zCi0rCQkJZ29hcmNoID0gb2xkZ29hcmNoCi0rCQkJb3MuU2V0ZW52KCJHT09TIiwgZ29vcykKLSsJCQlvcy5TZXRlbnYoIkdPQVJDSCIsIGdvYXJjaCkKLSsJCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQotKwkJCXhwcmludGYoIkJ1aWxkaW5nICVzIGZvciB0YXJnZXQsICVzLyVzLlxuIiwgc3RyaW5ncy5Kb2luKHRvQnVpbGQsICIsIiksIGdvb3MsIGdvYXJjaCkKLSsJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCi0rCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKLSsJCQkvLyBTa2lwIGNtZEdvIHN0YWxlbmVzcyBjaGVja3MgaGVyZSwgc2luY2Ugd2UgY2FuJ3QgcnVuIHRoZSB0YXJnZXQncyBjbWRHbyBiaW5hcnkKLSAJCX0KLS0JCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0gCX0gZWxzZSB7Ci0tCQkvLyBHT09TL0dPQVJDSCBkb2VzIG5vdCBtYXRjaCBHT0hPU1RPUy9HT0hPU1RBUkNILgotLQkJLy8gRmluaXNoIEdPSE9TVE9TL0dPSE9TVEFSQ0ggaW5zdGFsbGF0aW9uIGFuZCB0aGVuCi0tCQkvLyBydW4gR09PUy9HT0FSQ0ggaW5zdGFsbGF0aW9uLgotLQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQotLQkJaWYgdmZsYWcgPiAwIHsKLS0JCQl4cHJpbnRmKCJcbiIpCi0tCQl9Ci0tCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotKwotKwkJaWYgZ29vcyA9PSBvbGRnb29zICYmIGdvYXJjaCA9PSBvbGRnb2FyY2ggewotKwkJCS8vIENvbW1vbiBjYXNlIC0gbm90IHNldHRpbmcgdXAgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLgotKwkJCXRpbWVsb2coImJ1aWxkIiwgInRvb2xjaGFpbiIpCi0rCQkJaWYgdmZsYWcgPiAwIHsKLSsJCQkJeHByaW50ZigiXG4iKQotKwkJCX0KLSsJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotKwkJfSBlbHNlIHsKLSsJCQkvLyBHT09TL0dPQVJDSCBkb2VzIG5vdCBtYXRjaCBHT0hPU1RPUy9HT0hPU1RBUkNILgotKwkJCS8vIEZpbmlzaCBHT0hPU1RPUy9HT0hPU1RBUkNIIGluc3RhbGxhdGlvbiBhbmQgdGhlbgotKwkJCS8vIHJ1biBHT09TL0dPQVJDSCBpbnN0YWxsYXRpb24uCi0rCQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQotKwkJCWlmIHZmbGFnID4gMCB7Ci0rCQkJCXhwcmludGYoIlxuIikKLSsJCQl9Ci0rCQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciBob3N0LCAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKLSsJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKLSsJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCi0rCQkJY2hlY2tOb3RTdGFsZShjbWRHbywgInN0ZCIsICJjbWQiKQotKwotKwkJCXRpbWVsb2coImJ1aWxkIiwgInRhcmdldCB0b29sY2hhaW4iKQotKwkJCWlmIHZmbGFnID4gMCB7Ci0rCQkJCXhwcmludGYoIlxuIikKLSsJCQl9Ci0rCQkJZ29vcyA9IG9sZGdvb3MKLSsJCQlnb2FyY2ggPSBvbGRnb2FyY2gKLSsJCQlvcy5TZXRlbnYoIkdPT1MiLCBnb29zKQotKwkJCW9zLlNldGVudigiR09BUkNIIiwgZ29hcmNoKQotKwkJCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCi0rCQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciB0YXJnZXQsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotKwkJfQotIAkJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCi0gCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCi0gCQljaGVja05vdFN0YWxlKGNtZEdvLCAic3RkIiwgImNtZCIpCi0gCi0tCQl0aW1lbG9nKCJidWlsZCIsICJ0YXJnZXQgdG9vbGNoYWluIikKLS0JCWlmIHZmbGFnID4gMCB7Ci0tCQkJeHByaW50ZigiXG4iKQotKwkJaWYgZGVidWcgewotKwkJCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksICItVj1mdWxsIikKLSsJCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvYnVpbGRpZCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvcGtnLyVzXyVzL3J1bnRpbWUvaW50ZXJuYWwvc3lzLmEiLCBnb3Jvb3QsIGdvb3MsIGdvYXJjaCkpCi0rCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCi0rCQkJY29weWZpbGUocGF0aGYoIiVzL2NvbXBpbGU0IiwgdG9vbGRpciksIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksIHdyaXRlRXhlYykKLSAJCX0KLS0JCWdvb3MgPSBvbGRnb29zCi0tCQlnb2FyY2ggPSBvbGRnb2FyY2gKLS0JCW9zLlNldGVudigiR09PUyIsIGdvb3MpCi0tCQlvcy5TZXRlbnYoIkdPQVJDSCIsIGdvYXJjaCkKLS0JCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCi0tCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0tCX0KLS0JdGFyZ2V0cyA6PSBbXXN0cmluZ3sic3RkIiwgImNtZCJ9Ci0tCWlmIGdvb3MgPT0gImpzIiAmJiBnb2FyY2ggPT0gIndhc20iIHsKLS0JCS8vIFNraXAgdGhlIGNtZCB0b29scyBmb3IganMvd2FzbS4gVGhleSdyZSBub3QgdXNhYmxlLgotLQkJdGFyZ2V0cyA9IHRhcmdldHNbOjFdCi0tCX0KLS0JZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCB0YXJnZXRzLi4uKQotLQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCB0YXJnZXRzLi4uKQotLQljaGVja05vdFN0YWxlKGNtZEdvLCB0YXJnZXRzLi4uKQotLQlpZiBkZWJ1ZyB7Ci0tCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCAiLVY9ZnVsbCIpCi0tCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvYnVpbGRpZCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvcGtnLyVzXyVzL3J1bnRpbWUvaW50ZXJuYWwvc3lzLmEiLCBnb3Jvb3QsIGdvb3MsIGdvYXJjaCkpCi0tCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCBhcHBlbmQodG9vbGNoYWluLCAicnVudGltZS9pbnRlcm5hbC9zeXMiKS4uLikKLS0JCWNvcHlmaWxlKHBhdGhmKCIlcy9jb21waWxlNCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCB3cml0ZUV4ZWMpCi0gCX0KLSAKLSAJLy8gQ2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gbmV3IGZpbGVzIGluICRHT1JPT1QvYmluIG90aGVyIHRoYW4KLUBAIC0xMzkzLDggKzE0NTksMTEgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7Ci0gCQl9Ci0gCX0KLSAKLS0JLy8gUmVtb3ZlIGdvX2Jvb3RzdHJhcCBub3cgdGhhdCB3ZSdyZSBkb25lLgotLQl4cmVtb3ZlKHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCB0b29sZGlyKSkKLSsJLy8gRXhjZXB0IHRoYXQgZm9yIHNwbGl0IGhvc3QvdGFyZ2V0IGNyb3NzLWJ1aWxkcywgd2UgbmVlZCB0bwotKwkvLyBrZWVwIGl0LgotKwlpZiAhY3Jvc3NCdWlsZCB7Ci0rCQl4cmVtb3ZlKHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCB0b29sZGlyKSkKLSsJfQotIAotIAlpZiBnb29zID09ICJhbmRyb2lkIiB7Ci0gCQkvLyBNYWtlIHN1cmUgdGhlIGV4ZWMgd3JhcHBlciB3aWxsIHN5bmMgYSBmcmVzaCAkR09ST09UIHRvIHRoZSBkZXZpY2UuCi0tLSAKLTIuMTcuMSAoQXBwbGUgR2l0LTExMikKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjMyYzc5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi1Gcm9tIDliYTUwN2UwNzZjNzQ0ZjRkMzk0NDE4ZTRhODQ5ZTY4Y2Q0MjZhNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4IEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMyBPY3QgMjAxOSAyMToxODo1NiArMDQzMAotU3ViamVjdDogW1BBVENIIDcvOV0gY21kL2dvOiBtYWtlIEdPUk9PVCBwcmVjaW91cyBieSBkZWZhdWx0Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVRoZSBnbyBidWlsZCB0b29sIG5vcm1hbGx5IHJlYnVpbGRzIHdoYXRldmVyIGl0IGRldGVjdHMgaXMKLXN0YWxlLiAgVGhpcyBjYW4gYmUgYSBwcm9ibGVtIHdoZW4gR09ST09UIGlzIGludGVuZGVkIHRvCi1iZSByZWFkLW9ubHkgYW5kIHRoZSBnbyBydW50aW1lIGhhcyBiZWVuIGJ1aWx0IGFzIGEgc2hhcmVkCi1saWJyYXJ5LCBzaW5jZSB3ZSBkb24ndCB3YW50IGV2ZXJ5IGFwcGxpY2F0aW9uIHRvIGJlIHJlYnVpbGRpbmcKLXRoZSBzaGFyZWQgcnVudGltZSAtIHBhcnRpY3VsYXJseSBpbiBjcm9zcy1idWlsZC9wYWNrYWdpbmcKLXNldHVwcywgc2luY2UgdGhhdCB3b3VsZCBsZWFkIHRvICdhYmkgbWlzbWF0Y2gnIHJ1bnRpbWUgZXJyb3JzLgotCi1UaGlzIHBhdGNoIHByZXZlbnRzIHRoZSBpbnN0YWxsIGFuZCBsaW5rc2hhcmVkIGFjdGlvbnMgZnJvbQotaW5zdGFsbGluZyB0byBHT1JPT1QgdW5sZXNzIG92ZXJyaWRkZW4gd2l0aCB0aGUgR09ST09UX09WRVJSSURFCi1lbnZpcm9ubWVudCB2YXJpYWJsZS4KLQotQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwotdGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5Ci1NYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KLQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEogS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvIHwgIDMgKysrCi0gc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvICB8ICA2ICsrKysrKwotIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvICAgfCAyNSArKysrKysrKysrKysrKysrKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbwotaW5kZXggMzNiNzgxOC4uNzYxN2I0YyAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28KLSsrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28KLUBAIC02NjIsNiArNjYyLDkgQEAgZnVuYyAoYiAqQnVpbGRlcikgYWRkVHJhbnNpdGl2ZUxpbmtEZXBzKGEsIGExICpBY3Rpb24sIHNobGliIHN0cmluZykgewotIAkJCWlmIHAxID09IG5pbCB8fCBwMS5TaGxpYiA9PSAiIiB8fCBoYXZlU2hsaWJbZmlsZXBhdGguQmFzZShwMS5TaGxpYildIHsKLSAJCQkJY29udGludWUKLSAJCQl9Ci0rCQkJaWYgZ29Sb290UHJlY2lvdXMgJiYgKHAxLlN0YW5kYXJkIHx8IHAxLkdvcm9vdCkgewotKwkJCQljb250aW51ZQotKwkJCX0KLSAJCQloYXZlU2hsaWJbZmlsZXBhdGguQmFzZShwMS5TaGxpYildID0gdHJ1ZQotIAkJCS8vIFRPRE8ocnNjKTogVGhlIHVzZSBvZiBNb2RlSW5zdGFsbCBoZXJlIGlzIHN1c3BlY3QsIGJ1dCBpZiB3ZSBvbmx5IGRvIE1vZGVCdWlsZCwKLSAJCQkvLyB3ZSdsbCBlbmQgdXAgYnVpbGRpbmcgYW4gb3ZlcmFsbCBsaWJyYXJ5IG9yIGV4ZWN1dGFibGUgdGhhdCBkZXBlbmRzIGF0IHJ1bnRpbWUKLWRpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KLWluZGV4IDkzMDViMmQuLjY1NjAzMTcgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KLSsrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotQEAgLTE1NSw2ICsxNTUsOCBAQCBTZWUgYWxzbzogZ28gaW5zdGFsbCwgZ28gZ2V0LCBnbyBjbGVhbi4KLSAKLSBjb25zdCBjb25jdXJyZW50R0NCYWNrZW5kQ29tcGlsYXRpb25FbmFibGVkQnlEZWZhdWx0ID0gdHJ1ZQotIAotK3ZhciBnb1Jvb3RQcmVjaW91cyBib29sID0gdHJ1ZQotKwotIGZ1bmMgaW5pdCgpIHsKLSAJLy8gYnJlYWsgaW5pdCBjeWNsZQotIAlDbWRCdWlsZC5SdW4gPSBydW5CdWlsZAotQEAgLTE2Nyw2ICsxNjksMTAgQEAgZnVuYyBpbml0KCkgewotIAotIAlBZGRCdWlsZEZsYWdzKENtZEJ1aWxkKQotIAlBZGRCdWlsZEZsYWdzKENtZEluc3RhbGwpCi0rCi0rCWlmIHggOj0gb3MuR2V0ZW52KCJHT1JPT1RfT1ZFUlJJREUiKTsgeCAhPSAiIiB7Ci0rCQlnb1Jvb3RQcmVjaW91cyA9IGZhbHNlCi0rCX0KLSB9Ci0gCi0gLy8gTm90ZSB0aGF0IGZsYWdzIGNvbnN1bHRlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUgY29kZQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KLWluZGV4IGNjZWJhZjguLjU5NDUwZDcgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbwotKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KLUBAIC00NTUsNiArNDU1LDIzIEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkKGEgKkFjdGlvbikgKGVyciBlcnJvcikgewotIAkJcmV0dXJuIGVycm9ycy5OZXcoImJpbmFyeS1vbmx5IHBhY2thZ2VzIGFyZSBubyBsb25nZXIgc3VwcG9ydGVkIikKLSAJfQotIAotKwlpZiBnb1Jvb3RQcmVjaW91cyAmJiAoYS5QYWNrYWdlLlN0YW5kYXJkIHx8IGEuUGFja2FnZS5Hb3Jvb3QpIHsKLSsJCV8sIGVyciA6PSBvcy5TdGF0KGEuUGFja2FnZS5UYXJnZXQpCi0rCQlpZiBlcnIgPT0gbmlsIHsKLSsJCQlhLmJ1aWx0ID0gYS5QYWNrYWdlLlRhcmdldAotKwkJCWEuVGFyZ2V0ID0gYS5QYWNrYWdlLlRhcmdldAotKwkJCWEuYnVpbGRJRCA9IGIuZmlsZUhhc2goYS5QYWNrYWdlLlRhcmdldCkKLSsJCQlhLlBhY2thZ2UuU3RhbGUgPSBmYWxzZQotKwkJCWEuUGFja2FnZS5TdGFsZVJlYXNvbiA9ICJHT1JPT1QtcmVzaWRlbnQgcGFja2FnZSIKLSsJCQlyZXR1cm4gbmlsCi0rCQl9Ci0rCQlhLlBhY2thZ2UuU3RhbGUgPSB0cnVlCi0rCQlhLlBhY2thZ2UuU3RhbGVSZWFzb24gPSAibWlzc2luZyBvciBpbnZhbGlkIEdPUk9PVC1yZXNpZGVudCBwYWNrYWdlIgotKwkJaWYgYi5Jc0NtZExpc3QgewotKwkJCXJldHVybiBuaWwKLSsJCX0KLSsJfQotKwotIAlpZiBlcnIgOj0gYi5Na2RpcihhLk9iamRpcik7IGVyciAhPSBuaWwgewotIAkJcmV0dXJuIGVycgotIAl9Ci1AQCAtMTQ5OSw2ICsxNTE2LDE0IEBAIGZ1bmMgQnVpbGRJbnN0YWxsRnVuYyhiICpCdWlsZGVyLCBhICpBY3Rpb24pIChlcnIgZXJyb3IpIHsKLSAJCXJldHVybiBuaWwKLSAJfQotIAotKwlpZiBnb1Jvb3RQcmVjaW91cyAmJiBhLlBhY2thZ2UgIT0gbmlsIHsKLSsJCXAgOj0gYS5QYWNrYWdlCi0rCQlpZiBwLlN0YW5kYXJkIHx8IHAuR29yb290IHsKLSsJCQllcnIgOj0gZm10LkVycm9yZigiYXR0ZW1wdGluZyB0byBpbnN0YWxsIHBhY2thZ2UgJXMgaW50byByZWFkLW9ubHkgR09ST09UIiwgcC5JbXBvcnRQYXRoKQotKwkJCXJldHVybiBlcnIKLSsJCX0KLSsJfQotKwotIAlpZiBlcnIgOj0gYi5Na2RpcihhLk9iamRpcik7IGVyciAhPSBuaWwgewotIAkJcmV0dXJuIGVycgotIAl9Ci0tLSAKLTIuMTcuMSAoQXBwbGUgR2l0LTExMikKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA4LXVzZS1HT0JVSUxETU9ERS10by1zZXQtYnVpbGRtb2RlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA4LXVzZS1HT0JVSUxETU9ERS10by1zZXQtYnVpbGRtb2RlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OGUxMzJmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwOC11c2UtR09CVUlMRE1PREUtdG8tc2V0LWJ1aWxkbW9kZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gOTcxYjU2MjYzMzljZTBjNGQ1N2Y5NzIxYzlhODFhZjU2NmM1YTA0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE5OjI2ICswNDMwCi1TdWJqZWN0OiBbUEFUQ0ggOC85XSBjbWQvZ286IFVzZSBHT0JVSUxETU9ERSB0byBzZXQgYnVpbGRtb2RlCi0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkIFt1cHN0cmVhbSBjaG9vc2UgYW50b2hlciBzb2x1dGlvbjogYDE3YTI1NmIKLWNtZC9nbzogLWJ1aWxkbW9kZT1waWUgZm9yIGFuZHJvaWQvYXJtJ10KLQotV2hpbGUgYnVpbGRpbmcgZ28gaXRzZWxmLCB0aGUgZ28gYnVpbGQgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQKLXRvIHNldCBgLWJ1aWxkbW9kZT1waWUnIGZyb20gZW52aXJvbm1lbnQuCi0KLUFkZCBHT0JVSUxETU9ERSB0byBzdXBwb3J0IGl0IHdoaWNoIG1ha2UgUElFIGV4ZWN1dGFibGVzIHRoZSBkZWZhdWx0Ci1idWlsZCBtb2RlLCBhcyBQSUUgZXhlY3V0YWJsZXMgYXJlIHJlcXVpcmVkIGFzIG9mIFlvY3RvCi0KLVJlZmVyczogaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8jIXRvcGljL2dvbGFuZy1kZXYvZ1JDZTVVUktld0kKLQotQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwotdGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5Ci1Ib25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBKIEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotLS0tCi0gc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvIHwgOCArKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotaW5kZXggNjU2MDMxNy4uNWYzYTk4OCAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCi1AQCAtMjMxLDcgKzIzMSwxMyBAQCBmdW5jIEFkZEJ1aWxkRmxhZ3MoY21kICpiYXNlLkNvbW1hbmQpIHsKLSAKLSAJY21kLkZsYWcuVmFyKCZsb2FkLkJ1aWxkQXNtZmxhZ3MsICJhc21mbGFncyIsICIiKQotIAljbWQuRmxhZy5WYXIoYnVpbGRDb21waWxlcnt9LCAiY29tcGlsZXIiLCAiIikKLS0JY21kLkZsYWcuU3RyaW5nVmFyKCZjZmcuQnVpbGRCdWlsZG1vZGUsICJidWlsZG1vZGUiLCAiZGVmYXVsdCIsICIiKQotKwotKwlpZiBibSA6PSBvcy5HZXRlbnYoIkdPQlVJTERNT0RFIik7IGJtICE9ICIiIHsKLSsJCWNtZC5GbGFnLlN0cmluZ1ZhcigmY2ZnLkJ1aWxkQnVpbGRtb2RlLCAiYnVpbGRtb2RlIiwgYm0sICIiKQotKwl9IGVsc2UgewotKwkJY21kLkZsYWcuU3RyaW5nVmFyKCZjZmcuQnVpbGRCdWlsZG1vZGUsICJidWlsZG1vZGUiLCAiZGVmYXVsdCIsICIiKQotKwl9Ci0rCi0gCWNtZC5GbGFnLlZhcigmbG9hZC5CdWlsZEdjZmxhZ3MsICJnY2ZsYWdzIiwgIiIpCi0gCWNtZC5GbGFnLlZhcigmbG9hZC5CdWlsZEdjY2dvZmxhZ3MsICJnY2Nnb2ZsYWdzIiwgIiIpCi0gCWNtZC5GbGFnLlN0cmluZ1ZhcigmY2ZnLkJ1aWxkTW9kLCAibW9kIiwgIiIsICIiKQotLS0gCi0yLjE3LjEgKEFwcGxlIEdpdC0xMTIpCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJiMTEwNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotRnJvbSA5NzMyNTFhZTBjNjlhMzU3MjFmNjExNTM0NWQzZjU3YjI4NDc5NzlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MjA6MTMgKzA0MzAKLVN1YmplY3Q6IFtQQVRDSCA5LzldIGxkOiByZXBsYWNlIGdsaWJjIGR5bmFtaWMgbGlua2VyIHdpdGggbXVzbAotCi1SZXdvcmsgb2YgcGF0Y2ggYnkgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLWZvciBnbyAxLjEwLiAgU2hvdWxkIGJlIGFwcGxpZWQgY29uZGl0aW9uYWxseSBvbgotbXVzbCBiZWluZyB0aGUgc3lzdGVtIEMgbGlicmFyeS4KLQotQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwotdGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5Ci1NYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtSZWFsIGZpeCBzaG91bGQgYmUgcG9ydGFibGUgYWNyb3NzIGxpYmNzXQotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28gIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvICAgIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28gIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbyAgIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28gIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28gIHwgMiArLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvICAgIHwgMiArLQotIDggZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28KLWluZGV4IDIzNzQxZWIuLjhlNzQ1NzYgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCi1AQCAtNjIsNyArNjIsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKLSAJCVRMU0lFdG9MRTogICAgICAgIHRsc0lFdG9MRSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yIiwKLSsJCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkLW11c2wteDg2LTY0LnNvLjEiLAotIAkJRnJlZWJzZGR5bmxkOiAgICIvbGliZXhlYy9sZC1lbGYuc28uMSIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC5zbyIsCi0gCQlOZXRic2RkeW5sZDogICAgIi9saWJleGVjL2xkLmVsZl9zbyIsCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbwotaW5kZXggNDVhNDA2ZS4uNzI0ZDNlMyAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbwotQEAgLTU5LDcgKzU5LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYi9sZC1saW51eC5zby4zIiwgLy8gMiBmb3IgT0FCSSwgMyBmb3IgRUFCSQotKwkJTGludXhkeW5sZDogICAgICIvbGliL2xkLW11c2wtYXJtaGYuc28uMSIsCi0gCQlGcmVlYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC1lbGYuc28uMSIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC5zbyIsCi0gCQlOZXRic2RkeW5sZDogICAgIi9saWJleGVjL2xkLmVsZl9zbyIsCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28KLWluZGV4IDdjNjY2MjMuLmQ4YjFkYjEgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCi1AQCAtNTcsNyArNTcsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAiL2xpYi9sZC1saW51eC1hYXJjaDY0LnNvLjEiLAotKwkJTGludXhkeW5sZDogIi9saWIvbGQtbXVzbC1hYXJjaDY0LnNvLjEiLAotIAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotIAkJT3BlbmJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQuc28iLAotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbwotaW5kZXggMjMxZTFmZi4uNjMxZGQ3YSAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvCi1AQCAtNjAsNyArNjAsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAiL2xpYi9sZC5zby4xIiwKLSsJCUxpbnV4ZHlubGQ6ICIvbGliL2xkLW11c2wtbWlwc2xlLnNvLjEiLAotIAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KLWluZGV4IDk2MDQyMDguLjVlZjNmZmMgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KLUBAIC01OSw3ICs1OSw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCi0gCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkNjQuc28uMSIsCi0rCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZC1tdXNsLW1pcHM2NGxlLnNvLjEiLAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAotIAkJTmV0YnNkZHlubGQ6ICAgICJYWFgiLAotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvcHBjNjQvb2JqLmdvCi1pbmRleCA1MWQxNzkxLi5iMTVkYTg1IDEwMDY0NAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbwotQEAgLTYzLDcgKzYzLDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJWGNvZmZyZWxvYzE6ICAgICAgeGNvZmZyZWxvYzEsCi0gCi0gCQkvLyBUT0RPKGF1c3Rpbik6IEFCSSB2MSB1c2VzIC91c3IvbGliL2xkLnNvLjEsCi0tCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkNjQuc28uMSIsCi0rCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkLW11c2wtcG93ZXJwYzY0bGUuc28uMSIsCi0gCi0gCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIlhYWCIsCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28KLWluZGV4IDM0NTQ0NzYuLjQyY2MzNDYgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCi1AQCAtNTcsNyArNTcsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkNjQuc28uMSIsCi0rCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkLW11c2wtczM5MHguc28uMSIsCi0gCi0gCQkvLyBub3QgcmVsZXZhbnQgZm9yIHMzOTB4Ci0gCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbwotaW5kZXggZjFmYWQyMC4uZDJjYTEwYyAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbwotQEAgLTU4LDcgKzU4LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICAgIi9saWIvbGQtbGludXguc28uMiIsCi0rCQlMaW51eGR5bmxkOiAgICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIiwKLSAJCUZyZWVic2RkeW5sZDogIi91c3IvbGliZXhlYy9sZC1lbGYuc28uMSIsCi0gCQlPcGVuYnNkZHlubGQ6ICIvdXNyL2xpYmV4ZWMvbGQuc28iLAotIAkJTmV0YnNkZHlubGQ6ICAiL3Vzci9saWJleGVjL2xkLmVsZl9zbyIsCi0tLSAKLTIuMTcuMSAoQXBwbGUgR2l0LTExMikKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTI1OTNkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC5pbmMKQEAgLTAsMCArMSwyMiBAQAorcmVxdWlyZSBnby1jb21tb24uaW5jCisKK0dPX0JBU0VWRVJTSU9OID0gIjEuMTQiCitHT19NSU5PUiA9ICIuMSIKK1BWIC49ICIke0dPX01JTk9SfSIKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke0ZJTEVfRElSTkFNRX0vZ28tJHtHT19CQVNFVkVSU0lPTn06IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01ZDQ5NTBlY2I3YjI2ZDJjNWU0ZTdiNGUwZGQ3NDcwNyIKKworU1JDX1VSSSArPSAiXAorICAgIGZpbGU6Ly8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDgtdXNlLUdPQlVJTERNT0RFLXRvLXNldC1idWlsZG1vZGUucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaCIKKworU1JDX1VSSVttYWluLnNoYTI1NnN1bV0gPSAiMmFkMjU3MjExNWIwZDFiNGNiNGMxMzhlNmIzYTMxY2VlNjI5NGNiNDhhZjc1ZWU4NmJlYzNkY2EwNDUwNzY3NiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0NzY2NGQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gOWUzZGM0NGNkZmE1OGQ5NjUwNGQwYTc4OWRjODI2MTdkZDViZWY1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjAxOjEzICswNDMwCitTdWJqZWN0OiBbUEFUQ0ggMS85XSBjbWQvZ286IEFsbG93IENDIGFuZCBDWFggdG8gaGF2ZSBtdWx0aXBsZSB3b3JkcworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitBZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCit0aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKK01hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KKworLS0tCisgc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KK0BAIC0xMDIsMTEgKzEwMiwxMSBAQCBmdW5jIE1rRW52KCkgW11jZmcuRW52VmFyIHsKKyAKKyAJY2MgOj0gY2ZnLkRlZmF1bHRDQyhjZmcuR29vcywgY2ZnLkdvYXJjaCkKKyAJaWYgZW52IDo9IHN0cmluZ3MuRmllbGRzKGNmZy5HZXRlbnYoIkNDIikpOyBsZW4oZW52KSA+IDAgeworLQkJY2MgPSBlbnZbMF0KKysJCWNjID0gc3RyaW5ncy5Kb2luKGVudiwgIiAiKQorIAl9CisgCWN4eCA6PSBjZmcuRGVmYXVsdENYWChjZmcuR29vcywgY2ZnLkdvYXJjaCkKKyAJaWYgZW52IDo9IHN0cmluZ3MuRmllbGRzKGNmZy5HZXRlbnYoIkNYWCIpKTsgbGVuKGVudikgPiAwIHsKKy0JCWN4eCA9IGVudlswXQorKwkJY3h4ID0gc3RyaW5ncy5Kb2luKGVudiwgIiAiKQorIAl9CisgCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkFSIiwgVmFsdWU6IGVudk9yKCJBUiIsICJhciIpfSkKKyAJZW52ID0gYXBwZW5kKGVudiwgY2ZnLkVudlZhcntOYW1lOiAiQ0MiLCBWYWx1ZTogY2N9KQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTg4NTY3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2gKQEAgLTAsMCArMSwyMTkgQEAKK0Zyb20gYTEzYWU0ODRlNDExMzkwOTQ1MDVkMjgzNDQzN2U5MjYyYTUzMTVmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE0OjIyICswNDMwCitTdWJqZWN0OiBbUEFUQ0ggMi85XSBjbWQvZ286IG1ha2UgY29udGVudC1iYXNlZCBoYXNoIGdlbmVyYXRpb24gbGVzcyBwZWRhbnRpYworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitHbyAxLjEwJ3MgYnVpbGQgdG9vbCBub3cgdXNlcyBjb250ZW50LWJhc2VkIGhhc2hlcyB0bworZGV0ZXJtaW5lIHdoZW4gc29tZXRoaW5nIHNob3VsZCBiZSBidWlsdCBvciByZS1idWlsdC4KK1RoaXMgc2FtZSBtZWNoYW5pc20gaXMgdXNlZCB0byBtYWludGFpbiBhIGJ1aWx0LWFydGlmYWN0CitjYWNoZSBmb3Igc3BlZWRpbmcgdXAgYnVpbGRzLgorCitIb3dldmVyLCB0aGUgaGFzaGVzIGl0IGdlbmVyYXRlcyBpbmNsdWRlIGluZm9ybWF0aW9uIHRoYXQKK2RvZXNuJ3Qgd29yayB3ZWxsIHdpdGggT0UsIG5vciB3aXRoIHVzaW5nIGEgc2hhcmVkIHJ1bnRpbWUKK2xpYnJhcnkuCisKK0ZpcnN0LCBpdCBlbWJlZHMgcGF0aCBuYW1lcyB0byBzb3VyY2UgZmlsZXMsIHVubGVzcworYnVpbGRpbmcgd2l0aGluIEdPUk9PVC4gIFRoaXMgcHJldmVudHMgdGhlIGJ1aWxkaW5nCitvZiBhIHBhY2thZ2UgaW4gR09QQVRIIGZvciBsYXRlciBzdGFnaW5nIGludG8gR09ST09ULgorCitUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCitHT1BBVEhfT01JVF9JTl9BQ1RJT05JRC4gIElmIHByZXNlbnQsIHBhdGggbmFtZQorZW1iZWRkaW5nIGlzIGRpc2FibGVkLgorCitTZWNvbmQsIGlmIGNnbyBpcyBlbmFibGVkLCB0aGUgYnVpbGQgSUQgZm9yIGNnby1yZWxhdGVkCitwYWNrYWdlcyB3aWxsIGluY2x1ZGUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50Cit2YXJpYWJsZXMgZm9yIGludm9raW5nIHRoZSBjb21waWxlciAoQ0MsIENYWCwgRkMpIGFuZAorYW55IENHT194eEZMQUdTIHZhcmlhYmxlcy4gIE9ubHkgaWYgdGhlIHNldHRpbmdzIHVzZWQKK2R1cmluZyBhIGNvbXBpbGF0aW9uIGV4YWN0bHkgbWF0Y2gsIGNoYXJhY3RlciBmb3IgY2hhcmFjdGVyLAordGhlIHZhbHVlcyB1c2VkIGZvciBjb21waWxpbmcgcnVudGltZS9jZ28gb3IgYW55IG90aGVyCitjZ28tZW5hYmxlZCBwYWNrYWdlIGJlaW5nIGltcG9ydGVkLCB3aWxsIHRoZSB0b29sCitkZWNpZGUgdGhhdCB0aGUgaW1wb3J0ZWQgcGFja2FnZSBpcyB1cC10by1kYXRlLgorCitUaGlzIGlzIGRvbmUgdG8gaGVscCBlbnN1cmUgY29ycmVjdG5lc3MsIGJ1dCBpcyBvdmVybHkKK3NpbXBsaXN0aWMgYW5kIGVmZmVjdGl2ZWx5IHByZXZlbnRzIHRoZSByZXVzZSBvZiBidWlsdAorYXJ0aWZhY3RzIHRoYXQgdXNlIGNnbyAob3Igc2hhcmVkIHJ1bnRpbWUsIHdoaWNoIGluY2x1ZGVzCitydW50aW1lL2NnbykuCisKK1RoaXMgcGF0Y2ggZmlsdGVycyBvdXQgYWxsIGNvbXBpbGVyIGZsYWdzIGV4Y2VwdCB0aG9zZQorYmVnaW5uaW5nIHdpdGggJy1tJy4gIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGNhbiBiZSByZXN0b3JlZAorYnkgc2V0dGluZyB0aGUgQ0dPX1BFREFOVElDIGVudmlyb25tZW50IHZhcmlhYmxlLgorCitBZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCit0aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKK01hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyB8ICAyICstCisgc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gIHwgNjYgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCisKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbworKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCitAQCAtMTU2LDcgKzE1Niw3IEBAIGZ1bmMgRXh0cmFFbnZWYXJzKCkgW11jZmcuRW52VmFyIHsKKyBmdW5jIEV4dHJhRW52VmFyc0Nvc3RseSgpIFtdY2ZnLkVudlZhciB7CisgCXZhciBiIHdvcmsuQnVpbGRlcgorIAliLkluaXQoKQorLQljcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzLCBlcnIgOj0gYi5DRmxhZ3MoJmxvYWQuUGFja2FnZXt9KQorKwljcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzLCBlcnIgOj0gYi5DRmxhZ3MoJmxvYWQuUGFja2FnZXt9LCBmYWxzZSkKKyAJaWYgZXJyICE9IG5pbCB7CisgCQkvLyBTaG91bGQgbm90IGhhcHBlbiAtIGIuQ0ZsYWdzIHdhcyBnaXZlbiBhbiBlbXB0eSBwYWNrYWdlLgorIAkJZm10LkZwcmludGYob3MuU3RkZXJyLCAiZ286IGludmFsaWQgY2ZsYWdzOiAldlxuIiwgZXJyKQorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCitAQCAtMzIsNiArMzIsOCBAQCBpbXBvcnQgKAorIAkidGltZSIKKyApCisgCisrdmFyIG9taXRHb3BhdGggPSBvcy5HZXRlbnYoIkdPUEFUSF9PTUlUX0lOX0FDVElPTklEIikgIT0gIiIKKysKKyAvLyBhY3Rpb25MaXN0IHJldHVybnMgdGhlIGxpc3Qgb2YgYWN0aW9ucyBpbiB0aGUgZGFnIHJvb3RlZCBhdCByb290CisgLy8gYXMgdmlzaXRlZCBpbiBhIGRlcHRoLWZpcnN0IHBvc3Qtb3JkZXIgdHJhdmVyc2FsLgorIGZ1bmMgYWN0aW9uTGlzdChyb290ICpBY3Rpb24pIFtdKkFjdGlvbiB7CitAQCAtMjA4LDcgKzIxMCw3IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkQWN0aW9uSUQoYSAqQWN0aW8KKyAJLy8gQXNzdW1lIGIuV29ya0RpciBpcyBiZWluZyB0cmltbWVkIHByb3Blcmx5LgorIAkvLyBXaGVuIC10cmltcGF0aCBpcyB1c2VkIHdpdGggYSBwYWNrYWdlIGJ1aWx0IGZyb20gdGhlIG1vZHVsZSBjYWNoZSwKKyAJLy8gdXNlIHRoZSBtb2R1bGUgcGF0aCBhbmQgdmVyc2lvbiBpbnN0ZWFkIG9mIHRoZSBkaXJlY3RvcnkuCistCWlmICFwLkdvcm9vdCAmJiAhY2ZnLkJ1aWxkVHJpbXBhdGggJiYgIXN0cmluZ3MuSGFzUHJlZml4KHAuRGlyLCBiLldvcmtEaXIpIHsKKysJaWYgIXAuR29yb290ICYmICFvbWl0R29wYXRoICYmICFjZmcuQnVpbGRUcmltcGF0aCAmJiAhc3RyaW5ncy5IYXNQcmVmaXgocC5EaXIsIGIuV29ya0RpcikgeworIAkJZm10LkZwcmludGYoaCwgImRpciAlc1xuIiwgcC5EaXIpCisgCX0gZWxzZSBpZiBjZmcuQnVpbGRUcmltcGF0aCAmJiBwLk1vZHVsZSAhPSBuaWwgeworIAkJZm10LkZwcmludGYoaCwgIm1vZHVsZSAlc0Alc1xuIiwgcC5Nb2R1bGUuUGF0aCwgcC5Nb2R1bGUuVmVyc2lvbikKK0BAIC0yMjQsMTMgKzIyNiwxMyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvCisgCX0KKyAJaWYgbGVuKHAuQ2dvRmlsZXMpK2xlbihwLlN3aWdGaWxlcykgPiAwIHsKKyAJCWZtdC5GcHJpbnRmKGgsICJjZ28gJXFcbiIsIGIudG9vbElEKCJjZ28iKSkKKy0JCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIF8gOj0gYi5DRmxhZ3MocCkKKy0JCWZtdC5GcHJpbnRmKGgsICJDQz0lcSAlcSAlcSAlcVxuIiwgYi5jY0V4ZSgpLCBjcHBmbGFncywgY2ZsYWdzLCBsZGZsYWdzKQorKwkJY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgXyA6PSBiLkNGbGFncyhwLCB0cnVlKQorKwkJZm10LkZwcmludGYoaCwgIkNDPSVxICVxICVxICVxXG4iLCBiLmNjRXhlKHRydWUpLCBjcHBmbGFncywgY2ZsYWdzLCBsZGZsYWdzKQorIAkJaWYgbGVuKHAuQ1hYRmlsZXMpK2xlbihwLlN3aWdGaWxlcykgPiAwIHsKKy0JCQlmbXQuRnByaW50ZihoLCAiQ1hYPSVxICVxXG4iLCBiLmN4eEV4ZSgpLCBjeHhmbGFncykKKysJCQlmbXQuRnByaW50ZihoLCAiQ1hYPSVxICVxXG4iLCBiLmN4eEV4ZSh0cnVlKSwgY3h4ZmxhZ3MpCisgCQl9CisgCQlpZiBsZW4ocC5GRmlsZXMpID4gMCB7CistCQkJZm10LkZwcmludGYoaCwgIkZDPSVxICVxXG4iLCBiLmZjRXhlKCksIGZmbGFncykKKysJCQlmbXQuRnByaW50ZihoLCAiRkM9JXEgJXFcbiIsIGIuZmNFeGUodHJ1ZSksIGZmbGFncykKKyAJCX0KKyAJCS8vIFRPRE8ocnNjKTogU2hvdWxkIHdlIGluY2x1ZGUgdGhlIFNXSUcgdmVyc2lvbiBvciBGb3J0cmFuL0dDQy9HKysvT2JqZWN0aXZlLUMgY29tcGlsZXIgdmVyc2lvbnM/CisgCX0KK0BAIC0yMjI4LDMzICsyMjMwLDQ4IEBAIHZhciAoCisgLy8gZ2NjQ21kIHJldHVybnMgYSBnY2MgY29tbWFuZCBsaW5lIHByZWZpeAorIC8vIGRlZmF1bHRDQyBpcyBkZWZpbmVkIGluIHpkZWZhdWx0Y2MuZ28sIHdyaXR0ZW4gYnkgY21kL2Rpc3QuCisgZnVuYyAoYiAqQnVpbGRlcikgR2NjQ21kKGluY2Rpciwgd29ya2RpciBzdHJpbmcpIFtdc3RyaW5nIHsKKy0JcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jY0V4ZSgpLCBpbmNkaXIsIHdvcmtkaXIpCisrCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY2NFeGUoZmFsc2UpLCBpbmNkaXIsIHdvcmtkaXIpCisgfQorIAorIC8vIGd4eENtZCByZXR1cm5zIGEgZysrIGNvbW1hbmQgbGluZSBwcmVmaXgKKyAvLyBkZWZhdWx0Q1hYIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KKyBmdW5jIChiICpCdWlsZGVyKSBHeHhDbWQoaW5jZGlyLCB3b3JrZGlyIHN0cmluZykgW11zdHJpbmcgeworLQlyZXR1cm4gYi5jb21waWxlckNtZChiLmN4eEV4ZSgpLCBpbmNkaXIsIHdvcmtkaXIpCisrCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY3h4RXhlKGZhbHNlKSwgaW5jZGlyLCB3b3JrZGlyKQorIH0KKyAKKyAvLyBnZm9ydHJhbkNtZCByZXR1cm5zIGEgZ2ZvcnRyYW4gY29tbWFuZCBsaW5lIHByZWZpeC4KKyBmdW5jIChiICpCdWlsZGVyKSBnZm9ydHJhbkNtZChpbmNkaXIsIHdvcmtkaXIgc3RyaW5nKSBbXXN0cmluZyB7CistCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuZmNFeGUoKSwgaW5jZGlyLCB3b3JrZGlyKQorKwlyZXR1cm4gYi5jb21waWxlckNtZChiLmZjRXhlKGZhbHNlKSwgaW5jZGlyLCB3b3JrZGlyKQorIH0KKyAKKyAvLyBjY0V4ZSByZXR1cm5zIHRoZSBDQyBjb21waWxlciBzZXR0aW5nIHdpdGhvdXQgYWxsIHRoZSBleHRyYSBmbGFncyB3ZSBhZGQgaW1wbGljaXRseS4KKy1mdW5jIChiICpCdWlsZGVyKSBjY0V4ZSgpIFtdc3RyaW5nIHsKKy0JcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NDLCBjZmcuRGVmYXVsdENDKGNmZy5Hb29zLCBjZmcuR29hcmNoKSkKKytmdW5jIChiICpCdWlsZGVyKSBjY0V4ZShmaWx0ZXJlZCBib29sKSBbXXN0cmluZyB7CisrCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDQywgY2ZnLkRlZmF1bHRDQyhjZmcuR29vcywgY2ZnLkdvYXJjaCksIGZpbHRlcmVkKQorIH0KKyAKKyAvLyBjeHhFeGUgcmV0dXJucyB0aGUgQ1hYIGNvbXBpbGVyIHNldHRpbmcgd2l0aG91dCBhbGwgdGhlIGV4dHJhIGZsYWdzIHdlIGFkZCBpbXBsaWNpdGx5LgorLWZ1bmMgKGIgKkJ1aWxkZXIpIGN4eEV4ZSgpIFtdc3RyaW5nIHsKKy0JcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NYWCwgY2ZnLkRlZmF1bHRDWFgoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpKQorK2Z1bmMgKGIgKkJ1aWxkZXIpIGN4eEV4ZShmaWx0ZXJlZCBib29sKSBbXXN0cmluZyB7CisrCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDWFgsIGNmZy5EZWZhdWx0Q1hYKGNmZy5Hb29zLCBjZmcuR29hcmNoKSwgZmlsdGVyZWQpCisgfQorIAorIC8vIGZjRXhlIHJldHVybnMgdGhlIEZDIGNvbXBpbGVyIHNldHRpbmcgd2l0aG91dCBhbGwgdGhlIGV4dHJhIGZsYWdzIHdlIGFkZCBpbXBsaWNpdGx5LgorLWZ1bmMgKGIgKkJ1aWxkZXIpIGZjRXhlKCkgW11zdHJpbmcgeworLQlyZXR1cm4gYi5jb21waWxlckV4ZShjZmcuR2V0ZW52KCJGQyIpLCAiZ2ZvcnRyYW4iKQorK2Z1bmMgKGIgKkJ1aWxkZXIpIGZjRXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKKysJcmV0dXJuIGIuY29tcGlsZXJFeGUob3MuR2V0ZW52KCJGQyIpLCAiZ2ZvcnRyYW4iLCBmaWx0ZXJlZCkKKyt9CisrCisrdmFyIGZpbHRlckZsYWdzID0gb3MuR2V0ZW52KCJDR09fUEVEQU5USUMiKSA9PSAiIgorKworK2Z1bmMgZmlsdGVyQ29tcGlsZXJGbGFncyhmbGFncyBbXXN0cmluZykgW11zdHJpbmcgeworKwl2YXIgbmV3ZmxhZ3MgW11zdHJpbmcKKysJaWYgIWZpbHRlckZsYWdzIHsKKysJCXJldHVybiBmbGFncworKwl9CisrCWZvciBfLCBmbGFnIDo9IHJhbmdlIGZsYWdzIHsKKysJCWlmIHN0cmluZ3MuSGFzUHJlZml4KGZsYWcsICItbSIpIHsKKysJCQluZXdmbGFncyA9IGFwcGVuZChuZXdmbGFncywgZmxhZykKKysJCX0KKysJfQorKwlyZXR1cm4gbmV3ZmxhZ3MKKyB9CisgCisgLy8gY29tcGlsZXJFeGUgcmV0dXJucyB0aGUgY29tcGlsZXIgdG8gdXNlIGdpdmVuIGFuCitAQCAtMjI2MywxMSArMjI4MCwxNiBAQCBmdW5jIChiICpCdWlsZGVyKSBmY0V4ZSgpIFtdc3RyaW5nIHsKKyAvLyBvZiB0aGUgY29tcGlsZXIgYnV0IGNhbiBoYXZlIGFkZGl0aW9uYWwgYXJndW1lbnRzIGlmIHRoZXkKKyAvLyB3ZXJlIHByZXNlbnQgaW4gdGhlIGVudmlyb25tZW50IHZhbHVlLgorIC8vIEZvciBleGFtcGxlIGlmIENDPSJnY2MgLURHT1BIRVIiIHRoZW4gdGhlIHJlc3VsdCBpcyBbImdjYyIsICItREdPUEhFUiJdLgorLWZ1bmMgKGIgKkJ1aWxkZXIpIGNvbXBpbGVyRXhlKGVudlZhbHVlIHN0cmluZywgZGVmIHN0cmluZykgW11zdHJpbmcgeworK2Z1bmMgKGIgKkJ1aWxkZXIpIGNvbXBpbGVyRXhlKGVudlZhbHVlIHN0cmluZywgZGVmIHN0cmluZywgZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgeworIAljb21waWxlciA6PSBzdHJpbmdzLkZpZWxkcyhlbnZWYWx1ZSkKKyAJaWYgbGVuKGNvbXBpbGVyKSA9PSAwIHsKKyAJCWNvbXBpbGVyID0gW11zdHJpbmd7ZGVmfQorIAl9CisrCisrCWlmIGZpbHRlcmVkIHsKKysJCXJldHVybiBhcHBlbmQoY29tcGlsZXJbMDoxXSwgZmlsdGVyQ29tcGlsZXJGbGFncyhjb21waWxlclsxOl0pLi4uKQorKwl9CisrCisgCXJldHVybiBjb21waWxlcgorIH0KKyAKK0BAIC0yNDI4LDcgKzI0NTAsNyBAQCBmdW5jIGVudkxpc3Qoa2V5LCBkZWYgc3RyaW5nKSBbXXN0cmluZyB7CisgfQorIAorIC8vIENGbGFncyByZXR1cm5zIHRoZSBmbGFncyB0byB1c2Ugd2hlbiBpbnZva2luZyB0aGUgQywgQysrIG9yIEZvcnRyYW4gY29tcGlsZXJzLCBvciBjZ28uCistZnVuYyAoYiAqQnVpbGRlcikgQ0ZsYWdzKHAgKmxvYWQuUGFja2FnZSkgKGNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MgW11zdHJpbmcsIGVyciBlcnJvcikgeworK2Z1bmMgKGIgKkJ1aWxkZXIpIENGbGFncyhwICpsb2FkLlBhY2thZ2UsIGZpbHRlcmVkIGJvb2wpIChjcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzIFtdc3RyaW5nLCBlcnIgZXJyb3IpIHsKKyAJZGVmYXVsdHMgOj0gIi1nIC1PMiIKKyAKKyAJaWYgY3BwZmxhZ3MsIGVyciA9IGJ1aWxkRmxhZ3MoIkNQUEZMQUdTIiwgIiIsIHAuQ2dvQ1BQRkxBR1MsIGNoZWNrQ29tcGlsZXJGbGFncyk7IGVyciAhPSBuaWwgeworQEAgLTI0NDcsNiArMjQ2OSwxNCBAQCBmdW5jIChiICpCdWlsZGVyKSBDRmxhZ3MocCAqbG9hZC5QYWNrYWdlCisgCQlyZXR1cm4KKyAJfQorIAorKwlpZiBmaWx0ZXJlZCB7CisrCQljcHBmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoY3BwZmxhZ3MpCisrCQljZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGNmbGFncykKKysJCWN4eGZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhjeHhmbGFncykKKysJCWZmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoZmZsYWdzKQorKwkJbGRmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MobGRmbGFncykKKysJfQorKworIAlyZXR1cm4KKyB9CisgCitAQCAtMjQ2MSw3ICsyNDkxLDcgQEAgdmFyIGNnb1JlID0gbGF6eXJlZ2V4cC5OZXcoYFsvXFw6XWApCisgCisgZnVuYyAoYiAqQnVpbGRlcikgY2dvKGEgKkFjdGlvbiwgY2dvRXhlLCBvYmpkaXIgc3RyaW5nLCBwY0NGTEFHUywgcGNMREZMQUdTLCBjZ29maWxlcywgZ2NjZmlsZXMsIGd4eGZpbGVzLCBtZmlsZXMsIGZmaWxlcyBbXXN0cmluZykgKG91dEdvLCBvdXRPYmogW11zdHJpbmcsIGVyciBlcnJvcikgeworIAlwIDo9IGEuUGFja2FnZQorLQljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgY2dvRkZMQUdTLCBjZ29MREZMQUdTLCBlcnIgOj0gYi5DRmxhZ3MocCkKKysJY2dvQ1BQRkxBR1MsIGNnb0NGTEFHUywgY2dvQ1hYRkxBR1MsIGNnb0ZGTEFHUywgY2dvTERGTEFHUywgZXJyIDo9IGIuQ0ZsYWdzKHAsIGZhbHNlKQorIAlpZiBlcnIgIT0gbmlsIHsKKyAJCXJldHVybiBuaWwsIG5pbCwgZXJyCisgCX0KK0BAIC0yODIwLDcgKzI4NTAsNyBAQCBmdW5jIChiICpCdWlsZGVyKSBzd2lnSW50U2l6ZShvYmpkaXIgc3RyCisgCisgLy8gUnVuIFNXSUcgb24gb25lIFNXSUcgaW5wdXQgZmlsZS4KKyBmdW5jIChiICpCdWlsZGVyKSBzd2lnT25lKGEgKkFjdGlvbiwgcCAqbG9hZC5QYWNrYWdlLCBmaWxlLCBvYmpkaXIgc3RyaW5nLCBwY0NGTEFHUyBbXXN0cmluZywgY3h4IGJvb2wsIGludGdvc2l6ZSBzdHJpbmcpIChvdXRHbywgb3V0QyBzdHJpbmcsIGVyciBlcnJvcikgeworLQljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgXywgXywgZXJyIDo9IGIuQ0ZsYWdzKHApCisrCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBfLCBfLCBlcnIgOj0gYi5DRmxhZ3MocCwgZmFsc2UpCisgCWlmIGVyciAhPSBuaWwgeworIAkJcmV0dXJuICIiLCAiIiwgZXJyCisgCX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MmM3MDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gMjhhZGE4ODk2Yjc2ZDYyMDI0MGJhZmMyMmFhMzk1MDcxZDYwMTQ4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE1OjM3ICswNDMwCitTdWJqZWN0OiBbUEFUQ0ggMy85XSBjbWQvZ286IEFsbG93IEdPVE9PTERJUiB0byBiZSBvdmVycmlkZGVuIGluIHRoZSBlbnZpcm9ubWVudAorCit0byBhbGxvdyBmb3Igc3BsaXQgaG9zdC90YXJnZXQgYnVpbGQgcm9vdHMKKworQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwordGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5CitNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEogS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CistLS0KKyBzcmMvY21kL2Rpc3QvYnVpbGQuZ28gICAgICAgICAgfCA0ICsrKy0KKyBzcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28gfCA2ICsrKysrLQorIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCistLS0gYS9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KKysrKyBiL3NyYy9jbWQvZGlzdC9idWlsZC5nbworQEAgLTI0Niw3ICsyNDYsOSBAQCBmdW5jIHhpbml0KCkgeworIAl3b3JrZGlyID0geHdvcmtkaXIoKQorIAl4YXRleGl0KHJtd29ya2RpcikKKyAKKy0JdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCisrCWlmIHRvb2xkaXIgPSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpOyB0b29sZGlyID09ICIiIHsKKysJCXRvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQorKwl9CisgfQorIAorIC8vIGNvbXBpbGVyRW52IHJldHVybnMgYSBtYXAgZnJvbSAiZ29vcy9nb2FyY2giIHRvIHRoZQorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28KK0BAIC02NCw3ICs2NCwxMSBAQCBmdW5jIGRlZmF1bHRDb250ZXh0KCkgYnVpbGQuQ29udGV4dCB7CisgCQkvLyB2YXJpYWJsZXMuIFRoaXMgbWF0Y2hlcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgVG9vbERpciBpbgorIAkJLy8gZ28vYnVpbGQsIGV4Y2VwdCBmb3IgdXNpbmcgY3R4dC5HT1JPT1QgcmF0aGVyIHRoYW4KKyAJCS8vIHJ1bnRpbWUuR09ST09ULgorLQkJYnVpbGQuVG9vbERpciA9IGZpbGVwYXRoLkpvaW4oY3R4dC5HT1JPT1QsICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCisrCQlpZiBzIDo9IG9zLkdldGVudigiR09UT09MRElSIik7IHMgIT0gIiIgeworKwkJCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5DbGVhbihzKQorKwkJfSBlbHNlIHsKKysJCQlidWlsZC5Ub29sRGlyID0gZmlsZXBhdGguSm9pbihjdHh0LkdPUk9PVCwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKKysJCX0KKyAJfQorIAorIAljdHh0LkdPUEFUSCA9IGVudk9yKCJHT1BBVEgiLCBjdHh0LkdPUEFUSCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVjOWM3NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gYmY1Y2Y1MzAxYWU1OTE0NDk4NDU0Yzg3MjkzZDFkZjJlMWQ4NDg5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE2OjMyICswNDMwCitTdWJqZWN0OiBbUEFUQ0ggNC85XSBsZDogYWRkIHNvbmFtZSB0byBzaGFyZWFibGUgb2JqZWN0cworCitzbyB0aGF0IE9FJ3Mgc2hhcmVkIGxpYnJhcnkgZGVwZW5kZW5jeSBoYW5kbGluZworY2FuIGZpbmQgdGhlbS4KKworQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwordGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5CitNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEogS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CistLS0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KK0BAIC0xMjgwLDYgKzEyODAsNyBAQCBmdW5jIChjdHh0ICpMaW5rKSBob3N0bGluaygpIHsKKyAJCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKKyAJCQl9CisgCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLXNoYXJlZCIpCisrCQkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQorIAkJCWlmIGN0eHQuSGVhZFR5cGUgIT0gb2JqYWJpLkh3aW5kb3dzIHsKKyAJCQkJLy8gUGFzcyAteiBub2RlbGV0ZSB0byBtYXJrIHRoZSBzaGFyZWQgbGlicmFyeSBhcworIAkJCQkvLyBub24tY2xvc2VhYmxlOiBhIGRsY2xvc2Ugd2lsbCBkbyBub3RoaW5nLgorQEAgLTEyOTEsNiArMTI5Miw3IEBAIGZ1bmMgKGN0eHQgKkxpbmspIGhvc3RsaW5rKCkgeworIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCisgCQl9CisgCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIikKKysJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKKyAJY2FzZSBCdWlsZE1vZGVQbHVnaW46CisgCQlpZiBjdHh0LkhlYWRUeXBlID09IG9iamFiaS5IZGFyd2luIHsKKyAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItZHluYW1pY2xpYiIpCitAQCAtMTI5OSw2ICsxMzAxLDcgQEAgZnVuYyAoY3R4dCAqTGluaykgaG9zdGxpbmsoKSB7CisgCQkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCisgCQkJfQorIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQorKwkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKKyAJCX0KKyAJfQorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWMxMmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSBmMDVlZjNkZWQ1MmI5ODUzN2MxMGVmZDBiMTVjZDk2MTI0NzE1MjRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MTc6MTYgKzA0MzAKK1N1YmplY3Q6IFtQQVRDSCA1LzldIG1ha2UuYmFzaDogb3ZlcnJpZGUgQ0Mgd2hlbiBidWlsZGluZyBkaXN0IGFuZAorIGdvX2Jvb3RzdHJhcAorCitmb3IgaGFuZGxpbmcgT0UgY3Jvc3MtY2FuYWRpYW4gYnVpbGRzLgorCitBZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCit0aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKK01hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9tYWtlLmJhc2ggfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCistLS0gYS9zcmMvbWFrZS5iYXNoCisrKysgYi9zcmMvbWFrZS5iYXNoCitAQCAtMTc4LDcgKzE3OCw3IEBAIGlmIFsgIiRHT1JPT1RfQk9PVFNUUkFQIiA9ICIkR09ST09UIiBdOworIAlleGl0IDEKKyBmaQorIHJtIC1mIGNtZC9kaXN0L2Rpc3QKKy1HT1JPT1Q9IiRHT1JPT1RfQk9PVFNUUkFQIiBHT09TPSIiIEdPQVJDSD0iIiBHTzExMU1PRFVMRT1vZmYgIiRHT1JPT1RfQk9PVFNUUkFQL2Jpbi9nbyIgYnVpbGQgLW8gY21kL2Rpc3QvZGlzdCAuL2NtZC9kaXN0CisrQ0M9IiR7QlVJTERfQ0M6LSR7Q0N9fSIgR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgR08xMTFNT0RVTEU9b2ZmICIkR09ST09UX0JPT1RTVFJBUC9iaW4vZ28iIGJ1aWxkIC1vIGNtZC9kaXN0L2Rpc3QgLi9jbWQvZGlzdAorIAorICMgLWUgZG9lc24ndCBwcm9wYWdhdGUgb3V0IG9mIGV2YWwsIHNvIGNoZWNrIHN1Y2Nlc3MgYnkgaGFuZC4KKyBldmFsICQoLi9jbWQvZGlzdC9kaXN0IGVudiAtcCB8fCBlY2hvIEZBSUw9dHJ1ZSkKK0BAIC0yMDksNyArMjA5LDcgQEAgZmkKKyAjIFJ1biBkaXN0IGJvb3RzdHJhcCB0byBjb21wbGV0ZSBtYWtlLmJhc2guCisgIyBCb290c3RyYXAgaW5zdGFsbHMgYSBwcm9wZXIgY21kL2Rpc3QsIGJ1aWx0IHdpdGggdGhlIG5ldyB0b29sY2hhaW4uCisgIyBUaHJvdyBvdXJzLCBidWlsdCB3aXRoIEdvIDEuNCwgYXdheSBhZnRlciBib290c3RyYXAuCistLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJHZmbGFnICRHT19ESVNURkxBR1MgIiRAIgorK0NDPSIke0JVSUxEX0NDOi0ke0NDfX0iIC4vY21kL2Rpc3QvZGlzdCBib290c3RyYXAgJGJ1aWxkYWxsICR2ZmxhZyAkR09fRElTVEZMQUdTICIkQCIKKyBybSAtZiAuL2NtZC9kaXN0L2Rpc3QKKyAKKyAjIERPIE5PVCBBREQgQU5ZIE5FVyBDT0RFIEhFUkUuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDYtY21kLWRpc3Qtc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZWUwYmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDYtY21kLWRpc3Qtc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaApAQCAtMCwwICsxLDI3NCBAQAorRnJvbSAxMDczNWJiODRkZjE3YmE2NTdmNzY4MzVmNDgzY2Q4NTQzYTg3OWMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MTg6MTIgKzA0MzAKK1N1YmplY3Q6IFtQQVRDSCA2LzldIGNtZC9kaXN0OiBzZXBhcmF0ZSBob3N0IGFuZCB0YXJnZXQgYnVpbGRzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK0NoYW5nZSB0aGUgZGlzdCB0b29sIHRvIGFsbG93IGZvciBPRS1zdHlsZSBjcm9zcy0KK2FuZCBjcm9zcy1jYW5hZGlhbiBidWlsZHM6CisKKyAtIGNvbW1hbmQgZmxhZ3MgLS1ob3N0LW9ubHkgYW5kIC0tdGFyZ2V0IG9ubHkgYXJlIGFkZGVkOworICAgaWYgb25lIGlzIHByZXNlbnQsIHRoZSBvdGhlciBjaGFuZ2VzIG1lbnRpb25lZCBiZWxvdworICAgdGFrZSBlZmZlY3QsIGFuZCBhcmd1bWVudHMgbWF5IGFsc28gYmUgc3BlY2lmaWVkIG9uCisgICB0aGUgY29tbWFuZCBsaW5lIHRvIGVudW1lcmF0ZSB0aGUgcGFja2FnZShzKSB0byBiZQorICAgYnVpbHQuCisKKyAtIGZvciBPRSBjcm9zcyBidWlsZHMsIGdvX2Jvb3RzdHJhcCBpcyBhbHdheXMgYnVpbHQgZm9yCisgICB0aGUgY3VycmVudCBidWlsZCBob3N0LCBhbmQgaXMgbW92ZWQsIGFsb25nIHdpdGggdGhlIHN1cHBvcnRpbmcKKyAgIHRvb2xjaGFpbiAoYXNtLCBjb21waWxlLCBldGMuKSB0byBhIHNlcGFyYXRlICduYXRpdmVfbmF0aXZlJworICAgZGlyZWN0b3J5IHVuZGVyIEdPUk9PVC9wa2cvdG9vbC4KKworIC0gZ29fYm9vdHN0cmFwIGlzIG5vdCBhdXRvbWF0aWNhbGx5IHJlbW92ZWQgYWZ0ZXIgdGhlIGJ1aWxkLAorICAgc28gaXQgY2FuIGJlIHJldXNlZCBsYXRlciAoZS5nLiwgYnVpbGRpbmcgYm90aCBzdGF0aWMgYW5kCisgICBzaGFyZWQgcnVudGltZSkuCisKK05vdGUgdGhhdCBmb3IgLS1ob3N0LW9ubHkgYnVpbGRzLCBpdCB3b3VsZCBiZSBuaWNlIHRvIHNwZWNpZnkKK2p1c3QgdGhlICJjbWQiIHBhY2thZ2UgdG8gYnVpbGQgb25seSB0aGUgZ28gY29tbWFuZHMvdG9vbHMsCit0aGUgc3RhbGVuZXNzIGNoZWNrcyBpbiB0aGUgZGlzdCB0b29sIHdpbGwgZmFpbCBpZiB0aGUgInN0ZCIKK2xpYnJhcnkgaGFzIG5vdCBhbHNvIGJlZW4gYnVpbHQuICBTbyBob3N0LW9ubHkgYnVpbGRzIGhhdmUgdG8KK2J1aWxkIGV2ZXJ5dGhpbmcgYW55d2F5LgorCitBZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCit0aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKK01hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jbWQvZGlzdC9idWlsZC5nbyB8IDE1NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTEyIGluc2VydGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQorCistLS0gYS9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KKysrKyBiL3NyYy9jbWQvZGlzdC9idWlsZC5nbworQEAgLTQxLDYgKzQxLDcgQEAgdmFyICgKKyAJZ29sZGZsYWdzICAgICAgICBzdHJpbmcKKyAJd29ya2RpciAgICAgICAgICBzdHJpbmcKKyAJdG9vbGRpciAgICAgICAgICBzdHJpbmcKKysJYnVpbGRfdG9vbGRpciAgICBzdHJpbmcKKyAJb2xkZ29vcyAgICAgICAgICBzdHJpbmcKKyAJb2xkZ29hcmNoICAgICAgICBzdHJpbmcKKyAJZXhlICAgICAgICAgICAgICBzdHJpbmcKK0BAIC01Myw2ICs1NCw3IEBAIHZhciAoCisgCisgCXJlYnVpbGRhbGwgICBib29sCisgCWRlZmF1bHRjbGFuZyBib29sCisrCWNyb3NzQnVpbGQgICBib29sCisgCisgCXZmbGFnIGludCAvLyB2ZXJib3NpdHkKKyApCitAQCAtMjQ5LDYgKzI1MSw4IEBAIGZ1bmMgeGluaXQoKSB7CisgCWlmIHRvb2xkaXIgPSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpOyB0b29sZGlyID09ICIiIHsKKyAJCXRvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQorIAl9CisrCisrCWJ1aWxkX3Rvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvbmF0aXZlX25hdGl2ZSIsIGdvcm9vdCkKKyB9CisgCisgLy8gY29tcGlsZXJFbnYgcmV0dXJucyBhIG1hcCBmcm9tICJnb29zL2dvYXJjaCIgdG8gdGhlCitAQCAtNDgwLDggKzQ4NCwxMCBAQCBmdW5jIHNldHVwKCkgeworIAlwIDo9IHBhdGhmKCIlcy9wa2cvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQorIAlpZiByZWJ1aWxkYWxsIHsKKyAJCXhyZW1vdmVhbGwocCkKKysJCXhyZW1vdmVhbGwoYnVpbGRfdG9vbGRpcikKKyAJfQorIAl4bWtkaXJhbGwocCkKKysJeG1rZGlyYWxsKGJ1aWxkX3Rvb2xkaXIpCisgCisgCWlmIGdvb3MgIT0gZ29ob3N0b3MgfHwgZ29hcmNoICE9IGdvaG9zdGFyY2ggeworIAkJcCA6PSBwYXRoZigiJXMvcGtnLyVzXyVzIiwgZ29yb290LCBnb29zLCBnb2FyY2gpCitAQCAtMTI0NCwxMiArMTI1MCwyOSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKKyAKKyAJdmFyIG5vQmFubmVyIGJvb2wKKyAJdmFyIGRlYnVnIGJvb2wKKysJdmFyIGhvc3RPbmx5IGJvb2wKKysJdmFyIHRhcmdldE9ubHkgYm9vbAorKwl2YXIgdG9CdWlsZCA9IFtdc3RyaW5neyJzdGQiLCAiY21kIn0KKysKKyAJZmxhZy5Cb29sVmFyKCZyZWJ1aWxkYWxsLCAiYSIsIHJlYnVpbGRhbGwsICJyZWJ1aWxkIGFsbCIpCisgCWZsYWcuQm9vbFZhcigmZGVidWcsICJkIiwgZGVidWcsICJlbmFibGUgZGVidWdnaW5nIG9mIGJvb3RzdHJhcCBwcm9jZXNzIikKKyAJZmxhZy5Cb29sVmFyKCZub0Jhbm5lciwgIm5vLWJhbm5lciIsIG5vQmFubmVyLCAiZG8gbm90IHByaW50IGJhbm5lciIpCisrCWZsYWcuQm9vbFZhcigmaG9zdE9ubHksICJob3N0LW9ubHkiLCBob3N0T25seSwgImJ1aWxkIG9ubHkgaG9zdCBiaW5hcmllcywgbm90IHRhcmdldCIpCisrCWZsYWcuQm9vbFZhcigmdGFyZ2V0T25seSwgInRhcmdldC1vbmx5IiwgdGFyZ2V0T25seSwgImJ1aWxkIG9ubHkgdGFyZ2V0IGJpbmFyaWVzLCBub3QgaG9zdCIpCisgCistCXhmbGFncGFyc2UoMCkKKysJeGZsYWdwYXJzZSgtMSkKKyAKKysJaWYgaG9zdE9ubHkgJiYgdGFyZ2V0T25seSB7CisrCQlmYXRhbGYoInNwZWNpZnkgb25seSBvbmUgb2YgLS1ob3N0LW9ubHkgb3IgLS10YXJnZXQtb25seVxuIikKKysJfQorKwljcm9zc0J1aWxkID0gaG9zdE9ubHkgfHwgdGFyZ2V0T25seQorKwlpZiBmbGFnLk5BcmcoKSA+IDAgeworKwkJaWYgY3Jvc3NCdWlsZCB7CisrCQkJdG9CdWlsZCA9IGZsYWcuQXJncygpCisrCQl9IGVsc2UgeworKwkJCWZhdGFsZigicGFja2FnZSBuYW1lcyBub3QgcGVybWl0dGVkIHdpdGhvdXQgLS1ob3N0LW9ubHkgb3IgLS10YXJnZXQtb25seVxuIikKKysJCX0KKysJfQorIAkvLyBTZXQgR09QQVRIIHRvIGFuIGludGVybmFsIGRpcmVjdG9yeS4gV2Ugc2hvdWxkbid0IGFjdHVhbGx5CisgCS8vIG5lZWQgdG8gc3RvcmUgZmlsZXMgaGVyZSwgc2luY2UgdGhlIHRvb2xjaGFpbiB3b24ndAorIAkvLyBkZXBlbmQgb24gbW9kdWxlcyBvdXRzaWRlIG9mIHZlbmRvciBkaXJlY3RvcmllcywgYnV0IGlmCitAQCAtMTMwMyw4ICsxMzI2LDEzIEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgeworIAkJeHByaW50ZigiXG4iKQorIAl9CisgCistCWdvZ2NmbGFncyA9IG9zLkdldGVudigiR09fR0NGTEFHUyIpIC8vIHdlIHdlcmUgdXNpbmcgJEJPT1RfR09fR0NGTEFHUyB1bnRpbCBub3cKKy0JZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19MREZMQUdTIHVudGlsIG5vdworKwkvLyBGb3Igc3BsaXQgaG9zdC90YXJnZXQgY3Jvc3MvY3Jvc3MtY2FuYWRpYW4gYnVpbGRzLCB3ZSBkb24ndAorKwkvLyB3YW50IHRvIGJlIHNldHRpbmcgdGhlc2UgZmxhZ3MgdW50aWwgYWZ0ZXIgd2UgaGF2ZSBjb21waWxlZAorKwkvLyB0aGUgdG9vbGNoYWluIHRoYXQgcnVucyBvbiB0aGUgYnVpbGQgaG9zdC4KKysJaWYgIWNyb3NzQnVpbGQgeworKwkJZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19HQ0ZMQUdTIHVudGlsIG5vdworKwkJZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19MREZMQUdTIHVudGlsIG5vdworKwl9CisgCWdvQm9vdHN0cmFwIDo9IHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCB0b29sZGlyKQorIAljbWRHbyA6PSBwYXRoZigiJXMvZ28iLCBnb2JpbikKKyAJaWYgZGVidWcgeworQEAgLTEzMzMsNyArMTM2MSwxMSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKKyAJCXhwcmludGYoIlxuIikKKyAJfQorIAl4cHJpbnRmKCJCdWlsZGluZyBHbyB0b29sY2hhaW4yIHVzaW5nIGdvX2Jvb3RzdHJhcCBhbmQgR28gdG9vbGNoYWluMS5cbiIpCistCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCisrCWlmIGNyb3NzQnVpbGQgeworKwkJb3MuU2V0ZW52KCJDQyIsIGRlZmF1bHRjY1siIl0pCisrCX0gZWxzZSB7CisrCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQorKwl9CisgCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgYXBwZW5kKFtdc3RyaW5neyItaSJ9LCB0b29sY2hhaW4uLi4pLi4uKQorIAlpZiBkZWJ1ZyB7CisgCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCAiLVY9ZnVsbCIpCitAQCAtMTM3MCw1MCArMTQwMiw4NCBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKKyAJfQorIAljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCBhcHBlbmQodG9vbGNoYWluLCAicnVudGltZS9pbnRlcm5hbC9zeXMiKS4uLikKKyAKKy0JaWYgZ29vcyA9PSBvbGRnb29zICYmIGdvYXJjaCA9PSBvbGRnb2FyY2ggeworLQkJLy8gQ29tbW9uIGNhc2UgLSBub3Qgc2V0dGluZyB1cCBmb3IgY3Jvc3MtY29tcGlsYXRpb24uCistCQl0aW1lbG9nKCJidWlsZCIsICJ0b29sY2hhaW4iKQorLQkJaWYgdmZsYWcgPiAwIHsKKy0JCQl4cHJpbnRmKCJcbiIpCisrCWlmIGNyb3NzQnVpbGQgeworKwkJZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikKKysJCWdvbGRmbGFncyA9IG9zLkdldGVudigiR09fTERGTEFHUyIpCisrCQl0b29sX2ZpbGVzLCBfIDo9IGZpbGVwYXRoLkdsb2IocGF0aGYoIiVzLyoiLCB0b29sZGlyKSkKKysJCWZvciBfLCBmIDo9IHJhbmdlIHRvb2xfZmlsZXMgeworKwkJCWNvcHlmaWxlKHBhdGhmKCIlcy8lcyIsIGJ1aWxkX3Rvb2xkaXIsIGZpbGVwYXRoLkJhc2UoZikpLCBmLCB3cml0ZUV4ZWMpCisrCQkJeHJlbW92ZShmKQorKwkJfQorKwkJb3MuU2V0ZW52KCJHT1RPT0xESVIiLCBidWlsZF90b29sZGlyKQorKwkJZ29Cb290c3RyYXAgPSBwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgYnVpbGRfdG9vbGRpcikKKysJCWlmIGhvc3RPbmx5IHsKKysJCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCisrCQkJaWYgdmZsYWcgPiAwIHsKKysJCQkJeHByaW50ZigiXG4iKQorKwkJCX0KKysJCQl4cHJpbnRmKCJCdWlsZGluZyAlcyBmb3IgaG9zdCwgJXMvJXMuXG4iLCBzdHJpbmdzLkpvaW4odG9CdWlsZCwgIiwiKSwgZ29vcywgZ29hcmNoKQorKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKKysJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQorKwkJCS8vIFNraXAgY21kR28gc3RhbGVuZXNzIGNoZWNrcyBoZXJlLCBzaW5jZSB3ZSBjYW4ndCBuZWNlc3NhcmlseSBydW4gdGhlIGNtZEdvIGJpbmFyeQorKworKwkJCXRpbWVsb2coImJ1aWxkIiwgInRhcmdldCB0b29sY2hhaW4iKQorKwkJCWlmIHZmbGFnID4gMCB7CisrCQkJCXhwcmludGYoIlxuIikKKysJCQl9CisrCQl9IGVsc2UgaWYgdGFyZ2V0T25seSB7CisrCQkJZ29vcyA9IG9sZGdvb3MKKysJCQlnb2FyY2ggPSBvbGRnb2FyY2gKKysJCQlvcy5TZXRlbnYoIkdPT1MiLCBnb29zKQorKwkJCW9zLlNldGVudigiR09BUkNIIiwgZ29hcmNoKQorKwkJCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCisrCQkJeHByaW50ZigiQnVpbGRpbmcgJXMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBzdHJpbmdzLkpvaW4odG9CdWlsZCwgIiwiKSwgZ29vcywgZ29hcmNoKQorKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKKysJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQorKwkJCS8vIFNraXAgY21kR28gc3RhbGVuZXNzIGNoZWNrcyBoZXJlLCBzaW5jZSB3ZSBjYW4ndCBydW4gdGhlIHRhcmdldCdzIGNtZEdvIGJpbmFyeQorIAkJfQorLQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKKyAJfSBlbHNlIHsKKy0JCS8vIEdPT1MvR09BUkNIIGRvZXMgbm90IG1hdGNoIEdPSE9TVE9TL0dPSE9TVEFSQ0guCistCQkvLyBGaW5pc2ggR09IT1NUT1MvR09IT1NUQVJDSCBpbnN0YWxsYXRpb24gYW5kIHRoZW4KKy0JCS8vIHJ1biBHT09TL0dPQVJDSCBpbnN0YWxsYXRpb24uCistCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCistCQlpZiB2ZmxhZyA+IDAgeworLQkJCXhwcmludGYoIlxuIikKKysKKysJCWlmIGdvb3MgPT0gb2xkZ29vcyAmJiBnb2FyY2ggPT0gb2xkZ29hcmNoIHsKKysJCQkvLyBDb21tb24gY2FzZSAtIG5vdCBzZXR0aW5nIHVwIGZvciBjcm9zcy1jb21waWxhdGlvbi4KKysJCQl0aW1lbG9nKCJidWlsZCIsICJ0b29sY2hhaW4iKQorKwkJCWlmIHZmbGFnID4gMCB7CisrCQkJCXhwcmludGYoIlxuIikKKysJCQl9CisrCQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKKysJCX0gZWxzZSB7CisrCQkJLy8gR09PUy9HT0FSQ0ggZG9lcyBub3QgbWF0Y2ggR09IT1NUT1MvR09IT1NUQVJDSC4KKysJCQkvLyBGaW5pc2ggR09IT1NUT1MvR09IT1NUQVJDSCBpbnN0YWxsYXRpb24gYW5kIHRoZW4KKysJCQkvLyBydW4gR09PUy9HT0FSQ0ggaW5zdGFsbGF0aW9uLgorKwkJCXRpbWVsb2coImJ1aWxkIiwgImhvc3QgdG9vbGNoYWluIikKKysJCQlpZiB2ZmxhZyA+IDAgeworKwkJCQl4cHJpbnRmKCJcbiIpCisrCQkJfQorKwkJCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgaG9zdCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCisrCQkJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCisrCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQorKwkJCWNoZWNrTm90U3RhbGUoY21kR28sICJzdGQiLCAiY21kIikKKysKKysJCQl0aW1lbG9nKCJidWlsZCIsICJ0YXJnZXQgdG9vbGNoYWluIikKKysJCQlpZiB2ZmxhZyA+IDAgeworKwkJCQl4cHJpbnRmKCJcbiIpCisrCQkJfQorKwkJCWdvb3MgPSBvbGRnb29zCisrCQkJZ29hcmNoID0gb2xkZ29hcmNoCisrCQkJb3MuU2V0ZW52KCJHT09TIiwgZ29vcykKKysJCQlvcy5TZXRlbnYoIkdPQVJDSCIsIGdvYXJjaCkKKysJCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQorKwkJCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgdGFyZ2V0LCAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKKyAJCX0KKy0JCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgaG9zdCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCisgCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKKyAJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKKyAJCWNoZWNrTm90U3RhbGUoY21kR28sICJzdGQiLCAiY21kIikKKyAKKy0JCXRpbWVsb2coImJ1aWxkIiwgInRhcmdldCB0b29sY2hhaW4iKQorLQkJaWYgdmZsYWcgPiAwIHsKKy0JCQl4cHJpbnRmKCJcbiIpCistCQl9CistCQlnb29zID0gb2xkZ29vcworLQkJZ29hcmNoID0gb2xkZ29hcmNoCistCQlvcy5TZXRlbnYoIkdPT1MiLCBnb29zKQorLQkJb3MuU2V0ZW52KCJHT0FSQ0giLCBnb2FyY2gpCistCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQorLQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciB0YXJnZXQsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQorLQl9CistCXRhcmdldHMgOj0gW11zdHJpbmd7InN0ZCIsICJjbWQifQorLQlpZiBnb29zID09ICJqcyIgJiYgZ29hcmNoID09ICJ3YXNtIiB7CistCQkvLyBTa2lwIHRoZSBjbWQgdG9vbHMgZm9yIGpzL3dhc20uIFRoZXkncmUgbm90IHVzYWJsZS4KKy0JCXRhcmdldHMgPSB0YXJnZXRzWzoxXQorLQl9CistCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgdGFyZ2V0cy4uLikKKy0JY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgdGFyZ2V0cy4uLikKKy0JY2hlY2tOb3RTdGFsZShjbWRHbywgdGFyZ2V0cy4uLikKKy0JaWYgZGVidWcgeworLQkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgIi1WPWZ1bGwiKQorLQkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2J1aWxkaWQiLCB0b29sZGlyKSwgcGF0aGYoIiVzL3BrZy8lc18lcy9ydW50aW1lL2ludGVybmFsL3N5cy5hIiwgZ29yb290LCBnb29zLCBnb2FyY2gpKQorLQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCistCQljb3B5ZmlsZShwYXRoZigiJXMvY29tcGlsZTQiLCB0b29sZGlyKSwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgd3JpdGVFeGVjKQorKwkJaWYgZGVidWcgeworKwkJCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksICItVj1mdWxsIikKKysJCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvYnVpbGRpZCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvcGtnLyVzXyVzL3J1bnRpbWUvaW50ZXJuYWwvc3lzLmEiLCBnb3Jvb3QsIGdvb3MsIGdvYXJjaCkpCisrCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCisrCQkJY29weWZpbGUocGF0aGYoIiVzL2NvbXBpbGU0IiwgdG9vbGRpciksIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksIHdyaXRlRXhlYykKKysJCX0KKyAJfQorIAorIAkvLyBDaGVjayB0aGF0IHRoZXJlIGFyZSBubyBuZXcgZmlsZXMgaW4gJEdPUk9PVC9iaW4gb3RoZXIgdGhhbgorQEAgLTE0MzAsOCArMTQ5NiwxMSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKKyAJCX0KKyAJfQorIAorLQkvLyBSZW1vdmUgZ29fYm9vdHN0cmFwIG5vdyB0aGF0IHdlJ3JlIGRvbmUuCistCXhyZW1vdmUocGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIHRvb2xkaXIpKQorKwkvLyBFeGNlcHQgdGhhdCBmb3Igc3BsaXQgaG9zdC90YXJnZXQgY3Jvc3MtYnVpbGRzLCB3ZSBuZWVkIHRvCisrCS8vIGtlZXAgaXQuCisrCWlmICFjcm9zc0J1aWxkIHsKKysJCXhyZW1vdmUocGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIHRvb2xkaXIpKQorKwl9CisgCisgCWlmIGdvb3MgPT0gImFuZHJvaWQiIHsKKyAJCS8vIE1ha2Ugc3VyZSB0aGUgZXhlYyB3cmFwcGVyIHdpbGwgc3luYyBhIGZyZXNoICRHT1JPT1QgdG8gdGhlIGRldmljZS4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTNmODNkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoCkBAIC0wLDAgKzEsMTA0IEBACitGcm9tIDliYTUwN2UwNzZjNzQ0ZjRkMzk0NDE4ZTRhODQ5ZTY4Y2Q0MjZhNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4IEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgorRGF0ZTogV2VkLCAyMyBPY3QgMjAxOSAyMToxODo1NiArMDQzMAorU3ViamVjdDogW1BBVENIIDcvOV0gY21kL2dvOiBtYWtlIEdPUk9PVCBwcmVjaW91cyBieSBkZWZhdWx0CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1RoZSBnbyBidWlsZCB0b29sIG5vcm1hbGx5IHJlYnVpbGRzIHdoYXRldmVyIGl0IGRldGVjdHMgaXMKK3N0YWxlLiAgVGhpcyBjYW4gYmUgYSBwcm9ibGVtIHdoZW4gR09ST09UIGlzIGludGVuZGVkIHRvCitiZSByZWFkLW9ubHkgYW5kIHRoZSBnbyBydW50aW1lIGhhcyBiZWVuIGJ1aWx0IGFzIGEgc2hhcmVkCitsaWJyYXJ5LCBzaW5jZSB3ZSBkb24ndCB3YW50IGV2ZXJ5IGFwcGxpY2F0aW9uIHRvIGJlIHJlYnVpbGRpbmcKK3RoZSBzaGFyZWQgcnVudGltZSAtIHBhcnRpY3VsYXJseSBpbiBjcm9zcy1idWlsZC9wYWNrYWdpbmcKK3NldHVwcywgc2luY2UgdGhhdCB3b3VsZCBsZWFkIHRvICdhYmkgbWlzbWF0Y2gnIHJ1bnRpbWUgZXJyb3JzLgorCitUaGlzIHBhdGNoIHByZXZlbnRzIHRoZSBpbnN0YWxsIGFuZCBsaW5rc2hhcmVkIGFjdGlvbnMgZnJvbQoraW5zdGFsbGluZyB0byBHT1JPT1QgdW5sZXNzIG92ZXJyaWRkZW4gd2l0aCB0aGUgR09ST09UX09WRVJSSURFCitlbnZpcm9ubWVudCB2YXJpYWJsZS4KKworQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwordGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5CitNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KKworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEogS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CistLS0KKyBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvIHwgIDMgKysrCisgc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvICB8ICA2ICsrKysrKworIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvICAgfCAyNSArKysrKysrKysrKysrKysrKysrKysrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspCisKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28KK0BAIC02NzAsNiArNjcwLDkgQEAgZnVuYyAoYiAqQnVpbGRlcikgYWRkVHJhbnNpdGl2ZUxpbmtEZXBzKAorIAkJCWlmIHAxID09IG5pbCB8fCBwMS5TaGxpYiA9PSAiIiB8fCBoYXZlU2hsaWJbZmlsZXBhdGguQmFzZShwMS5TaGxpYildIHsKKyAJCQkJY29udGludWUKKyAJCQl9CisrCQkJaWYgZ29Sb290UHJlY2lvdXMgJiYgKHAxLlN0YW5kYXJkIHx8IHAxLkdvcm9vdCkgeworKwkJCQljb250aW51ZQorKwkJCX0KKyAJCQloYXZlU2hsaWJbZmlsZXBhdGguQmFzZShwMS5TaGxpYildID0gdHJ1ZQorIAkJCS8vIFRPRE8ocnNjKTogVGhlIHVzZSBvZiBNb2RlSW5zdGFsbCBoZXJlIGlzIHN1c3BlY3QsIGJ1dCBpZiB3ZSBvbmx5IGRvIE1vZGVCdWlsZCwKKyAJCQkvLyB3ZSdsbCBlbmQgdXAgYnVpbGRpbmcgYW4gb3ZlcmFsbCBsaWJyYXJ5IG9yIGV4ZWN1dGFibGUgdGhhdCBkZXBlbmRzIGF0IHJ1bnRpbWUKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbworKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCitAQCAtMTY3LDYgKzE2Nyw4IEBAIFNlZSBhbHNvOiBnbyBpbnN0YWxsLCBnbyBnZXQsIGdvIGNsZWFuLgorIAorIGNvbnN0IGNvbmN1cnJlbnRHQ0JhY2tlbmRDb21waWxhdGlvbkVuYWJsZWRCeURlZmF1bHQgPSB0cnVlCisgCisrdmFyIGdvUm9vdFByZWNpb3VzIGJvb2wgPSB0cnVlCisrCisgZnVuYyBpbml0KCkgeworIAkvLyBicmVhayBpbml0IGN5Y2xlCisgCUNtZEJ1aWxkLlJ1biA9IHJ1bkJ1aWxkCitAQCAtMTc5LDYgKzE4MSwxMCBAQCBmdW5jIGluaXQoKSB7CisgCisgCUFkZEJ1aWxkRmxhZ3MoQ21kQnVpbGQsIERlZmF1bHRCdWlsZEZsYWdzKQorIAlBZGRCdWlsZEZsYWdzKENtZEluc3RhbGwsIERlZmF1bHRCdWlsZEZsYWdzKQorKworKwlpZiB4IDo9IG9zLkdldGVudigiR09ST09UX09WRVJSSURFIik7IHggIT0gIiIgeworKwkJZ29Sb290UHJlY2lvdXMgPSBmYWxzZQorKwl9CisgfQorIAorIC8vIE5vdGUgdGhhdCBmbGFncyBjb25zdWx0ZWQgYnkgb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbworQEAgLTQ2NCw2ICs0NjQsMjMgQEAgZnVuYyAoYiAqQnVpbGRlcikgYnVpbGQoYSAqQWN0aW9uKSAoZXJyCisgCQlyZXR1cm4gZXJyb3JzLk5ldygiYmluYXJ5LW9ubHkgcGFja2FnZXMgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQiKQorIAl9CisgCisrCWlmIGdvUm9vdFByZWNpb3VzICYmIChhLlBhY2thZ2UuU3RhbmRhcmQgfHwgYS5QYWNrYWdlLkdvcm9vdCkgeworKwkJXywgZXJyIDo9IG9zLlN0YXQoYS5QYWNrYWdlLlRhcmdldCkKKysJCWlmIGVyciA9PSBuaWwgeworKwkJCWEuYnVpbHQgPSBhLlBhY2thZ2UuVGFyZ2V0CisrCQkJYS5UYXJnZXQgPSBhLlBhY2thZ2UuVGFyZ2V0CisrCQkJYS5idWlsZElEID0gYi5maWxlSGFzaChhLlBhY2thZ2UuVGFyZ2V0KQorKwkJCWEuUGFja2FnZS5TdGFsZSA9IGZhbHNlCisrCQkJYS5QYWNrYWdlLlN0YWxlUmVhc29uID0gIkdPUk9PVC1yZXNpZGVudCBwYWNrYWdlIgorKwkJCXJldHVybiBuaWwKKysJCX0KKysJCWEuUGFja2FnZS5TdGFsZSA9IHRydWUKKysJCWEuUGFja2FnZS5TdGFsZVJlYXNvbiA9ICJtaXNzaW5nIG9yIGludmFsaWQgR09ST09ULXJlc2lkZW50IHBhY2thZ2UiCisrCQlpZiBiLklzQ21kTGlzdCB7CisrCQkJcmV0dXJuIG5pbAorKwkJfQorKwl9CisrCisgCWlmIGVyciA6PSBiLk1rZGlyKGEuT2JqZGlyKTsgZXJyICE9IG5pbCB7CisgCQlyZXR1cm4gZXJyCisgCX0KK0BAIC0xNDkzLDYgKzE1MTAsMTQgQEAgZnVuYyBCdWlsZEluc3RhbGxGdW5jKGIgKkJ1aWxkZXIsIGEgKkFjdAorIAkJcmV0dXJuIG5pbAorIAl9CisgCisrCWlmIGdvUm9vdFByZWNpb3VzICYmIGEuUGFja2FnZSAhPSBuaWwgeworKwkJcCA6PSBhLlBhY2thZ2UKKysJCWlmIHAuU3RhbmRhcmQgfHwgcC5Hb3Jvb3QgeworKwkJCWVyciA6PSBmbXQuRXJyb3JmKCJhdHRlbXB0aW5nIHRvIGluc3RhbGwgcGFja2FnZSAlcyBpbnRvIHJlYWQtb25seSBHT1JPT1QiLCBwLkltcG9ydFBhdGgpCisrCQkJcmV0dXJuIGVycgorKwkJfQorKwl9CisrCisgCWlmIGVyciA6PSBiLk1rZGlyKGEuT2JqZGlyKTsgZXJyICE9IG5pbCB7CisgCQlyZXR1cm4gZXJyCisgCX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwOC11c2UtR09CVUlMRE1PREUtdG8tc2V0LWJ1aWxkbW9kZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwOC11c2UtR09CVUlMRE1PREUtdG8tc2V0LWJ1aWxkbW9kZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTVkOTgxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA4LXVzZS1HT0JVSUxETU9ERS10by1zZXQtYnVpbGRtb2RlLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gOTcxYjU2MjYzMzljZTBjNGQ1N2Y5NzIxYzlhODFhZjU2NmM1YTA0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE5OjI2ICswNDMwCitTdWJqZWN0OiBbUEFUQ0ggOC85XSBjbWQvZ286IFVzZSBHT0JVSUxETU9ERSB0byBzZXQgYnVpbGRtb2RlCisKK1Vwc3RyZWFtLVN0YXR1czogRGVuaWVkIFt1cHN0cmVhbSBjaG9vc2UgYW50b2hlciBzb2x1dGlvbjogYDE3YTI1NmIKK2NtZC9nbzogLWJ1aWxkbW9kZT1waWUgZm9yIGFuZHJvaWQvYXJtJ10KKworV2hpbGUgYnVpbGRpbmcgZ28gaXRzZWxmLCB0aGUgZ28gYnVpbGQgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQKK3RvIHNldCBgLWJ1aWxkbW9kZT1waWUnIGZyb20gZW52aXJvbm1lbnQuCisKK0FkZCBHT0JVSUxETU9ERSB0byBzdXBwb3J0IGl0IHdoaWNoIG1ha2UgUElFIGV4ZWN1dGFibGVzIHRoZSBkZWZhdWx0CitidWlsZCBtb2RlLCBhcyBQSUUgZXhlY3V0YWJsZXMgYXJlIHJlcXVpcmVkIGFzIG9mIFlvY3RvCisKK1JlZmVyczogaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8jIXRvcGljL2dvbGFuZy1kZXYvZ1JDZTVVUktld0kKKworQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwordGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5CitIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBKIEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgorLS0tCisgc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvIHwgOCArKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KK0BAIC0yNTEsNyArMjUxLDEzIEBAIGZ1bmMgQWRkQnVpbGRGbGFncyhjbWQgKmJhc2UuQ29tbWFuZCwgbWEKKyAKKyAJY21kLkZsYWcuVmFyKCZsb2FkLkJ1aWxkQXNtZmxhZ3MsICJhc21mbGFncyIsICIiKQorIAljbWQuRmxhZy5WYXIoYnVpbGRDb21waWxlcnt9LCAiY29tcGlsZXIiLCAiIikKKy0JY21kLkZsYWcuU3RyaW5nVmFyKCZjZmcuQnVpbGRCdWlsZG1vZGUsICJidWlsZG1vZGUiLCAiZGVmYXVsdCIsICIiKQorKworKwlpZiBibSA6PSBvcy5HZXRlbnYoIkdPQlVJTERNT0RFIik7IGJtICE9ICIiIHsKKysJCWNtZC5GbGFnLlN0cmluZ1ZhcigmY2ZnLkJ1aWxkQnVpbGRtb2RlLCAiYnVpbGRtb2RlIiwgYm0sICIiKQorKwl9IGVsc2UgeworKwkJY21kLkZsYWcuU3RyaW5nVmFyKCZjZmcuQnVpbGRCdWlsZG1vZGUsICJidWlsZG1vZGUiLCAiZGVmYXVsdCIsICIiKQorKwl9CisrCisgCWNtZC5GbGFnLlZhcigmbG9hZC5CdWlsZEdjZmxhZ3MsICJnY2ZsYWdzIiwgIiIpCisgCWNtZC5GbGFnLlZhcigmbG9hZC5CdWlsZEdjY2dvZmxhZ3MsICJnY2Nnb2ZsYWdzIiwgIiIpCisgCWlmIG1hc2smT21pdE1vZEZsYWcgPT0gMCB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI3Y2ZiMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaApAQCAtMCwwICsxLDExNSBAQAorRnJvbSA5NzMyNTFhZTBjNjlhMzU3MjFmNjExNTM0NWQzZjU3YjI4NDc5NzlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MjA6MTMgKzA0MzAKK1N1YmplY3Q6IFtQQVRDSCA5LzldIGxkOiByZXBsYWNlIGdsaWJjIGR5bmFtaWMgbGlua2VyIHdpdGggbXVzbAorCitSZXdvcmsgb2YgcGF0Y2ggYnkgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK2ZvciBnbyAxLjEwLiAgU2hvdWxkIGJlIGFwcGxpZWQgY29uZGl0aW9uYWxseSBvbgorbXVzbCBiZWluZyB0aGUgc3lzdGVtIEMgbGlicmFyeS4KKworQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwordGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5CitNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtSZWFsIGZpeCBzaG91bGQgYmUgcG9ydGFibGUgYWNyb3NzIGxpYmNzXQorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28gIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvICAgIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28gIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbyAgIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28gIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28gIHwgMiArLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvICAgIHwgMiArLQorIDggZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCitAQCAtNTksNyArNTksNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKKyAJCVRMU0lFdG9MRTogICAgICAgIHRsc0lFdG9MRSwKKyAKKy0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yIiwKKysJCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkLW11c2wteDg2LTY0LnNvLjEiLAorIAkJRnJlZWJzZGR5bmxkOiAgICIvbGliZXhlYy9sZC1lbGYuc28uMSIsCisgCQlPcGVuYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC5zbyIsCisgCQlOZXRic2RkeW5sZDogICAgIi9saWJleGVjL2xkLmVsZl9zbyIsCistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28KK0BAIC01OSw3ICs1OSw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAorIAkJUEVyZWxvYzE6ICAgICAgICAgcGVyZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAgICAgIi9saWIvbGQtbGludXguc28uMyIsIC8vIDIgZm9yIE9BQkksIDMgZm9yIEVBQkkKKysJCUxpbnV4ZHlubGQ6ICAgICAiL2xpYi9sZC1tdXNsLWFybWhmLnNvLjEiLAorIAkJRnJlZWJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQtZWxmLnNvLjEiLAorIAkJT3BlbmJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQuc28iLAorIAkJTmV0YnNkZHlubGQ6ICAgICIvbGliZXhlYy9sZC5lbGZfc28iLAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbworQEAgLTU3LDcgKzU3LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJR2VudGV4dDogICAgICAgICAgZ2VudGV4dCwKKyAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAorIAorLQkJTGludXhkeW5sZDogIi9saWIvbGQtbGludXgtYWFyY2g2NC5zby4xIiwKKysJCUxpbnV4ZHlubGQ6ICIvbGliL2xkLW11c2wtYWFyY2g2NC5zby4xIiwKKyAKKyAJCUZyZWVic2RkeW5sZDogICAiL3Vzci9saWJleGVjL2xkLWVsZi5zby4xIiwKKyAJCU9wZW5ic2RkeW5sZDogICAiL3Vzci9saWJleGVjL2xkLnNvIiwKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvCitAQCAtNjAsNyArNjAsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAorIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAiL2xpYi9sZC5zby4xIiwKKysJCUxpbnV4ZHlubGQ6ICIvbGliL2xkLW11c2wtbWlwc2xlLnNvLjEiLAorIAorIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAorIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvCitAQCAtNTksNyArNTksNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAorIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZDY0LnNvLjEiLAorKwkJTGludXhkeW5sZDogICAgICIvbGliNjQvbGQtbXVzbC1taXBzNjRsZS5zby4xIiwKKyAJCUZyZWVic2RkeW5sZDogICAiWFhYIiwKKyAJCU9wZW5ic2RkeW5sZDogICAiWFhYIiwKKyAJCU5ldGJzZGR5bmxkOiAgICAiWFhYIiwKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28KK0BAIC02Myw3ICs2Myw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCVhjb2ZmcmVsb2MxOiAgICAgIHhjb2ZmcmVsb2MxLAorIAorIAkJLy8gVE9ETyhhdXN0aW4pOiBBQkkgdjEgdXNlcyAvdXNyL2xpYi9sZC5zby4xLAorLQkJTGludXhkeW5sZDogIi9saWI2NC9sZDY0LnNvLjEiLAorKwkJTGludXhkeW5sZDogIi9saWI2NC9sZC1tdXNsLXBvd2VycGM2NGxlLnNvLjEiLAorIAorIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAorIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbworQEAgLTU3LDcgKzU3LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJR2VudGV4dDogICAgICAgICAgZ2VudGV4dCwKKyAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAorIAorLQkJTGludXhkeW5sZDogIi9saWI2NC9sZDY0LnNvLjEiLAorKwkJTGludXhkeW5sZDogIi9saWI2NC9sZC1tdXNsLXMzOTB4LnNvLjEiLAorIAorIAkJLy8gbm90IHJlbGV2YW50IGZvciBzMzkweAorIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvCitAQCAtNTgsNyArNTgsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKKyAJCVBFcmVsb2MxOiAgICAgICAgIHBlcmVsb2MxLAorIAorLQkJTGludXhkeW5sZDogICAiL2xpYi9sZC1saW51eC5zby4yIiwKKysJCUxpbnV4ZHlubGQ6ICAgIi9saWIvbGQtbXVzbC1pMzg2LnNvLjEiLAorIAkJRnJlZWJzZGR5bmxkOiAiL3Vzci9saWJleGVjL2xkLWVsZi5zby4xIiwKKyAJCU9wZW5ic2RkeW5sZDogIi91c3IvbGliZXhlYy9sZC5zbyIsCisgCQlOZXRic2RkeW5sZDogICIvdXNyL2xpYmV4ZWMvbGQuZWxmX3NvIiwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNvbW1vbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jb21tb24uaW5jCmluZGV4IDkzYTNkM2IuLmYxOGQ5MjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNvbW1vbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY29tbW9uLmluYwpAQCAtMjcsNiArMjcsMTYgQEAKIEdPVE1QRElSW3ZhcmRlcHZhbHVlXSA9ICIiCiBleHBvcnQgQ0dPX0VOQUJMRUQgPSAiMSIKIAorZXhwb3J0IEdPSE9TVE9TID89ICIke0JVSUxEX0dPT1N9IgorZXhwb3J0IEdPSE9TVEFSQ0ggPz0gIiR7QlVJTERfR09BUkNIfSIKK2V4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID89ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28iCitleHBvcnQgR09PUyA/PSAiJHtUQVJHRVRfR09PU30iCitleHBvcnQgR09BUkNIID89ICIke1RBUkdFVF9HT0FSQ0h9IgorZXhwb3J0IEdPQVJNID89ICIke1RBUkdFVF9HT0FSTX0iCitleHBvcnQgR08zODYgPz0gIiR7VEFSR0VUX0dPMzg2fSIKK2V4cG9ydCBHT01JUFMgPz0gIiR7VEFSR0VUX0dPTUlQU30iCitleHBvcnQgR09ST09UX0ZJTkFMID89ICIke2xpYmRpcn0vZ28iCisKIGRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKIAlCVUlMRF9DQz0ke0JVSUxEX0NDfQogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW4uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW4uaW5jCmluZGV4IDk0NWQwZjkuLmQ0OTI1MGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy1jYW5hZGlhbi5pbmMKQEAgLTEzLDExICsxMyw3IEBACiAgICAgICAgICAgICAgICAgICAgIC1mZGVidWctcHJlZml4LW1hcD0ke1NUQUdJTkdfRElSX05BVElWRX09IFwKICAgICAgICAgICAgICAgICAgICAgIgogCi1leHBvcnQgR09IT1NUT1MgPSAiJHtCVUlMRF9HT09TfSIKLWV4cG9ydCBHT0hPU1RBUkNIID0gIiR7QlVJTERfR09BUkNIfSIKLWV4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKIGV4cG9ydCBHT1RPT0xESVJfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS8ke0hPU1RfU1lTfS9nby9wa2cvdG9vbC8ke0JVSUxEX0dPVFVQTEV9IgotZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCiBleHBvcnQgQ0dPX0NGTEFHUyA9ICIke0NGTEFHU30iCiBleHBvcnQgQ0dPX0xERkxBR1MgPSAiJHtMREZMQUdTfSIKIGV4cG9ydCBHT19MREZMQUdTID0gJy1saW5rbW9kZSBleHRlcm5hbCAtZXh0bGQgJHtIT1NUX1BSRUZJWH1nY2MgLWV4dGxkZmxhZ3MgIi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9ICR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSAke0hPU1RfQ0NfQVJDSH0gJHtMREZMQUdTfSInCkBAIC0yNSw4ICsyMSw4IEBACiBkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgogCiBkb19jb21waWxlKCkgewotCWV4cG9ydCBDQ19GT1JfJHtIT1NUX0dPT1N9XyR7SE9TVF9HT0FSQ0h9PSIke0hPU1RfUFJFRklYfWdjYyAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSR7U0RLUEFUSE5BVElWRX0gJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgotCWV4cG9ydCBDWFhfRk9SXyR7SE9TVF9HT09TfV8ke0hPU1RfR09BUkNIfT0iJHtIT1NUX1BSRUZJWH1neHggLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0ke1NES1BBVEhOQVRJVkV9ICR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKKwlleHBvcnQgQ0NfRk9SXyR7SE9TVF9HT1RVUExFfT0iJHtIT1NUX1BSRUZJWH1nY2MgLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0ke1NES1BBVEhOQVRJVkV9ICR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKKwlleHBvcnQgQ1hYX0ZPUl8ke0hPU1RfR09UVVBMRX09IiR7SE9TVF9QUkVGSVh9Z3h4IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9JHtTREtQQVRITkFUSVZFfSAke1NFQ1VSSVRZX05PUElFX0NGTEFHU30iCiAJY2Qgc3JjCiAJLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkgLS1uby1iYW5uZXIKIAljZCAke0J9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy1jYW5hZGlhbl8xLjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS4xNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS4xMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS4xNC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jCmluZGV4IDNkMzQ0YTcuLjNkNTgwM2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy5pbmMKQEAgLTUsMjMgKzUsMTQgQEAKIAogUE4gPSAiZ28tY3Jvc3MtJHtUVU5FX1BLR0FSQ0h9IgogCi1leHBvcnQgR09IT1NUT1MgPSAiJHtCVUlMRF9HT09TfSIKLWV4cG9ydCBHT0hPU1RBUkNIID0gIiR7QlVJTERfR09BUkNIfSIKLWV4cG9ydCBHT09TID0gIiR7VEFSR0VUX0dPT1N9IgotZXhwb3J0IEdPQVJDSCA9ICIke1RBUkdFVF9HT0FSQ0h9IgotZXhwb3J0IEdPQVJNID0gIiR7VEFSR0VUX0dPQVJNfSIKLWV4cG9ydCBHTzM4NiA9ICIke1RBUkdFVF9HTzM4Nn0iCi1leHBvcnQgR09NSVBTID0gIiR7VEFSR0VUX0dPTUlQU30iCi1leHBvcnQgR09ST09UX0JPT1RTVFJBUCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28iCi1leHBvcnQgR09ST09UX0ZJTkFMID0gIiR7bGliZGlyfS9nbyIKIGV4cG9ydCBHT0NBQ0hFID0gIiR7Qn0vLmNhY2hlIgogQ0MgPSAiJHtAZC5nZXRWYXIoJ0JVSUxEX0NDJykuc3RyaXAoKX0iCiAKIGRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCiAKIGRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IENDX0ZPUl8ke0dPT1N9XyR7R09BUkNIfT0iJHtUQVJHRVRfUFJFRklYfWdjYyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgotCWV4cG9ydCBDWFhfRk9SXyR7R09PU31fJHtHT0FSQ2h9PSIke1RBUkdFVF9QUkVGSVh9ZysrICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCisJZXhwb3J0IENDX0ZPUl8ke1RBUkdFVF9HT1RVUExFfT0iJHtUQVJHRVRfUFJFRklYfWdjYyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgorCWV4cG9ydCBDWFhfRk9SXyR7VEFSR0VUX0dPVFVQTEV9PSIke1RBUkdFVF9QUkVGSVh9ZysrICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCiAJY2Qgc3JjCiAJLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkgLS1uby1iYW5uZXIKIAljZCAke0J9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS4xNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS4xMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS4xNC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGsuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGsuaW5jCmluZGV4IDk0ZjZmYjguLmYwYmVjNzkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3Nzc2RrLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nkay5pbmMKQEAgLTQsMTggKzQsMTEgQEAKIFBOID0gImdvLWNyb3Nzc2RrLSR7U0RLX1NZU30iCiBQUk9WSURFUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nby1jcm9zc3NkayIKIAotZXhwb3J0IEdPSE9TVE9TID0gIiR7QlVJTERfR09PU30iCi1leHBvcnQgR09IT1NUQVJDSCA9ICIke0JVSUxEX0dPQVJDSH0iCi1leHBvcnQgR09PUyA9ICIke1RBUkdFVF9HT09TfSIKLWV4cG9ydCBHT0FSQ0ggPSAiJHtUQVJHRVRfR09BUkNIfSIKLWV4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKLWV4cG9ydCBHT1JPT1RfRklOQUwgPSAiJHtsaWJkaXJ9L2dvIgotCiBkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgogCiBkb19jb21waWxlKCkgewotCWV4cG9ydCBDQ19GT1JfJHtUQVJHRVRfR09PU31fJHtUQVJHRVRfR09BUkNIfT0iJHtUQVJHRVRfUFJFRklYfWdjYyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtTREtQQVRITkFUSVZFfSIKLQlleHBvcnQgQ1hYX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9PSIke1RBUkdFVF9QUkVGSVh9ZysrICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0ke1NES1BBVEhOQVRJVkV9IgorCWV4cG9ydCBDQ19GT1JfJHtUQVJHRVRfR09UVVBMRX09IiR7VEFSR0VUX1BSRUZJWH1nY2MgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7U0RLUEFUSE5BVElWRX0iCisJZXhwb3J0IENYWF9GT1JfJHtUQVJHRVRfR09UVVBMRX09IiR7VEFSR0VUX1BSRUZJWH1nKysgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7U0RLUEFUSE5BVElWRX0iCiAJY2Qgc3JjCiAJLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkgLS1uby1iYW5uZXIKIAljZCAke0J9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nka18xLjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS4xNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS4xMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS4xNC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwLzAwMDEtYm9sdF9yaXNjdjY0LUFkZC1zdXBwb3J0LWZvci1yaXNjdjY0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwLzAwMDEtYm9sdF9yaXNjdjY0LUFkZC1zdXBwb3J0LWZvci1yaXNjdjY0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkOTdkNDgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXAvMDAwMS1ib2x0X3Jpc2N2NjQtQWRkLXN1cHBvcnQtZm9yLXJpc2N2NjQucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA1ZTA1MTY2OWQxMTdkN2NkOWIyNGNlYTM0OTQ5NTllZWMzOTZlYzFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjUgSmFuIDIwMjAgMjI6Mzc6MjUgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gL2JvbHRfcmlzY3Y2NDogQWRkIHN1cHBvcnQgZm9yIHJpc2N2NjQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgdmVuZG9yL2dpdGh1Yi5jb20vYm9sdGRiL2JvbHQvYm9sdF9yaXNjdjY0LmdvIHwgMTIgKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgdmVuZG9yL2dpdGh1Yi5jb20vYm9sdGRiL2JvbHQvYm9sdF9yaXNjdjY0LmdvCisKK2RpZmYgLS1naXQgYS92ZW5kb3IvZ2l0aHViLmNvbS9ib2x0ZGIvYm9sdC9ib2x0X3Jpc2N2NjQuZ28gYi92ZW5kb3IvZ2l0aHViLmNvbS9ib2x0ZGIvYm9sdC9ib2x0X3Jpc2N2NjQuZ28KK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uM2Q2Yjg4ZDQKKy0tLSAvZGV2L251bGwKKysrKyBiL3ZlbmRvci9naXRodWIuY29tL2JvbHRkYi9ib2x0L2JvbHRfcmlzY3Y2NC5nbworQEAgLTAsMCArMSwxMiBAQAorKy8vICtidWlsZCByaXNjdjY0CisrCisrcGFja2FnZSBib2x0CisrCisrLy8gbWF4TWFwU2l6ZSByZXByZXNlbnRzIHRoZSBsYXJnZXN0IG1tYXAgc2l6ZSBzdXBwb3J0ZWQgYnkgQm9sdC4KKytjb25zdCBtYXhNYXBTaXplID0gMHhGRkZGRkZGRkZGRkYgLy8gMjU2VEIKKysKKysvLyBtYXhBbGxvY1NpemUgaXMgdGhlIHNpemUgdXNlZCB3aGVuIGNyZWF0aW5nIGFycmF5IHBvaW50ZXJzLgorK2NvbnN0IG1heEFsbG9jU2l6ZSA9IDB4N0ZGRkZGRkYKKysKKysvLyBBcmUgdW5hbGlnbmVkIGxvYWQvc3RvcmVzIGJyb2tlbiBvbiB0aGlzIGFyY2g/CisrdmFyIGJyb2tlblVuYWxpZ25lZCA9IGZhbHNlCistLSAKKzIuMjUuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC41LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC41LjQuYmIKaW5kZXggZWFkODc4Ny4uNjE1Y2IyOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwXzAuNS40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcF8wLjUuNC5iYgpAQCAtNiw2ICs2LDcgQEAKIEdPX0lNUE9SVCA9ICJnaXRodWIuY29tL2dvbGFuZy9kZXAiCiBTUkNfVVJJID0gImdpdDovLyR7R09fSU1QT1JUfSBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1zdXBwb3J0LWZvci1taXBzLW1pcHM2NC5wYXRjaDtwYXRjaGRpcj1zcmMvZ2l0aHViLmNvbS9nb2xhbmcvZGVwIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYm9sdF9yaXNjdjY0LUFkZC1zdXBwb3J0LWZvci1yaXNjdjY0LnBhdGNoO3BhdGNoZGlyPXNyYy9naXRodWIuY29tL2dvbGFuZy9kZXAgXAogICAgICAgICAgICIKIAogU1JDUkVWID0gIjFmN2MxOWU1ZjUyZjQ5ZmZiOWY5NTZmNjRjMDEwYmUxNDY4MzQ2OGIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmVfMS4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZV8xLjE0LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmVfMS4xMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuMTQuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWUuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZS5pbmMKaW5kZXggOTczMWUxNi4uMjExNzlhOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZS5pbmMKQEAgLTIsMTUgKzIsNiBAQAogREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z28tY3Jvc3NzZGsiCiBQUk9WSURFUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nby1ydW50aW1lIgogCi1leHBvcnQgR09IT1NUT1MgPSAiJHtCVUlMRF9HT09TfSIKLWV4cG9ydCBHT0hPU1RBUkNIID0gIiR7QlVJTERfR09BUkNIfSIKLWV4cG9ydCBHT09TID0gIiR7VEFSR0VUX0dPT1N9IgotZXhwb3J0IEdPQVJDSCA9ICIke1RBUkdFVF9HT0FSQ0h9IgotZXhwb3J0IEdPQVJNID0gIiR7VEFSR0VUX0dPQVJNfSIKLWV4cG9ydCBHTzM4NiA9ICIke1RBUkdFVF9HTzM4Nn0iCi1leHBvcnQgR09NSVBTID0gIiR7VEFSR0VUX0dPTUlQU30iCi1leHBvcnQgR09ST09UX0JPT1RTVFJBUCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28iCi1leHBvcnQgR09ST09UX0ZJTkFMID0gIiR7bGliZGlyfS9nbyIKIGV4cG9ydCBDR09fQ0ZMQUdTID0gIiR7Q0ZMQUdTfSIKIGV4cG9ydCBDR09fQ1BQRkxBR1MgPSAiJHtDUFBGTEFHU30iCiBleHBvcnQgQ0dPX0NYWEZMQUdTID0gIiR7Q1hYRkxBR1N9IgpAQCAtMjksMTQgKzIwLDE0IEBACiB9CiAKIGRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IENDX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9PSIke0NDfSIKLQlleHBvcnQgQ1hYX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9PSIke0NYWH0iCisJZXhwb3J0IENDX0ZPUl8ke1RBUkdFVF9HT1RVUExFfT0iJHtDQ30iCisJZXhwb3J0IENYWF9GT1JfJHtUQVJHRVRfR09UVVBMRX09IiR7Q1hYfSIKIAogCWNkIHNyYwogCS4vbWFrZS5iYXNoIC0tdGFyZ2V0LW9ubHkgLS1uby1iYW5uZXIgc3RkCiAJaWYgWyAtbiAiJHtHT19EWU5MSU5LfSIgXTsgdGhlbgogCQlleHBvcnQgR09UT09MRElSPSIke0J9L3BrZy90b29sL25hdGl2ZV9uYXRpdmUiCi0JCUNDPSIkQ0NfRk9SXyR7VEFSR0VUX0dPT1N9XyR7VEFSR0VUX0dPQVJDSH0iIEdPQVJDSD0iJHtUQVJHRVRfR09BUkNIfSIgR09PUz0iJHtUQVJHRVRfR09PU30iIEdPUk9PVD0ke0J9IFwKKwkJQ0M9IiRDQ19GT1JfJHtUQVJHRVRfR09UVVBMRX0iIEdPQVJDSD0iJHtUQVJHRVRfR09BUkNIfSIgR09PUz0iJHtUQVJHRVRfR09PU30iIEdPUk9PVD0ke0J9IFwKIAkJCSRHT1RPT0xESVIvZ29fYm9vdHN0cmFwIGluc3RhbGwgLWxpbmtzaGFyZWQgLWJ1aWxkbW9kZT1zaGFyZWQgJHtHT19TSExJQl9MREZMQUdTfSBzdGQKIAlmaQogCWNkICR7Qn0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWVfMS4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWVfMS4xNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZV8xLjEyLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lXzEuMTQuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXRhcmdldC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby10YXJnZXQuaW5jCmluZGV4IDkxZWZkM2UuLjhlNDQyNDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXRhcmdldC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tdGFyZ2V0LmluYwpAQCAtMSwxNSArMSw2IEBACiBERVBFTkRTID0gInZpcnR1YWwvJHtUVU5FX1BLR0FSQ0h9LWdvIGdvLW5hdGl2ZSIKIERFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvLWNyb3Nzc2RrIGdvLW5hdGl2ZSIKIAotZXhwb3J0IEdPSE9TVE9TID0gIiR7QlVJTERfR09PU30iCi1leHBvcnQgR09IT1NUQVJDSCA9ICIke0JVSUxEX0dPQVJDSH0iCi1leHBvcnQgR09PUyA9ICIke1RBUkdFVF9HT09TfSIKLWV4cG9ydCBHT0FSQ0ggPSAiJHtUQVJHRVRfR09BUkNIfSIKLWV4cG9ydCBHT0FSTSA9ICIke1RBUkdFVF9HT0FSTX0iCi1leHBvcnQgR08zODYgPSAiJHtUQVJHRVRfR08zODZ9IgotZXhwb3J0IEdPTUlQUyA9ICIke1RBUkdFVF9HT01JUFN9IgotZXhwb3J0IEdPUk9PVF9CT09UU1RSQVAgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvIgotZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCiBleHBvcnQgR09DQUNIRSA9ICIke0J9Ly5jYWNoZSIKIEdPX0xERkxBR1MgPSAiIgogR09fTERGTEFHU19jbGFzcy1uYXRpdmVzZGsgPSAiLWxpbmttb2RlIGV4dGVybmFsIgpAQCAtNDMsMTIgKzM0LDEyIEBACiAJCWluc3RhbGwgLW0gMDc1NSAkZiAke0R9JHtsaWJkaXJ9L2dvL2Jpbi8KIAkJbG4gLXNmIC4uLyR7YmFzZWxpYn0vZ28vYmluLyRuYW1lICR7RH0ke2JpbmRpcn0vCiAJZG9uZQorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2dvL3NyYwogfQogCiBQQUNLQUdFUyA9ICIke1BOfSAke1BOfS1kZXYiCiBGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vZ28vYmluICR7bGliZGlyfS9nby9wa2cvdG9vbC8ke1RBUkdFVF9HT1RVUExFfSAke2JpbmRpcn0iCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtsaWJkaXJ9L2dvIgotUkRFUEVORFNfJHtQTn0tZGV2ID0gInBlcmwgYmFzaCIKK1JERVBFTkRTXyR7UE59ID0gImdvLXJ1bnRpbWUiCiBJTlNBTkVfU0tJUF8ke1BOfSA9ICJsZGZsYWdzIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuMTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MmNkYjA0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuMTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1yZXF1aXJlIGdvLSR7UFZ9LmluYwotcmVxdWlyZSBnby10YXJnZXQuaW5jCi0KLWV4cG9ydCBHT0JVSUxETU9ERT0iIgotCi0jIEFkZCBwaWUgdG8gR09CVUlMRE1PREUgdG8gc2F0aXNmeSAidGV4dHJlbCIgUUEgY2hlY2tpbmcsIGJ1dCBtaXBzCi0jIGRvZXNuJ3Qgc3VwcG9ydCAtYnVpbGRtb2RlPXBpZSwgc28gc2tpcCB0aGUgUUEgY2hlY2tpbmcgZm9yIG1pcHMgYW5kIGl0cwotIyB2YXJpYW50cy4KLXB5dGhvbigpIHsKLSAgICBpZiAnbWlwcycgaW4gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyk6Ci0gICAgICAgIGQuYXBwZW5kVmFyKCdJTlNBTkVfU0tJUF8lcycgJSBkLmdldFZhcignUE4nKSwgIiB0ZXh0cmVsIikKLSAgICBlbHNlOgotICAgICAgICBkLnNldFZhcignR09CVUlMRE1PREUnLCAncGllJykKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuMTQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkNDBjZjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjE0LmJiCkBAIC0wLDAgKzEsMTQgQEAKK3JlcXVpcmUgZ28tJHtQVn0uaW5jCityZXF1aXJlIGdvLXRhcmdldC5pbmMKKworZXhwb3J0IEdPQlVJTERNT0RFPSIiCisKKyMgQWRkIHBpZSB0byBHT0JVSUxETU9ERSB0byBzYXRpc2Z5ICJ0ZXh0cmVsIiBRQSBjaGVja2luZywgYnV0IG1pcHMvcmlzY3YKKyMgZG9lc24ndCBzdXBwb3J0IC1idWlsZG1vZGU9cGllLCBzbyBza2lwIHRoZSBRQSBjaGVja2luZyBmb3IgbWlwcy9yaXNjdiBhbmQgaXRzCisjIHZhcmlhbnRzLgorcHl0aG9uKCkgeworICAgIGlmICdtaXBzJyBpbiBkLmdldFZhcignVEFSR0VUX0FSQ0gnLFRydWUpIG9yICdyaXNjdicgaW4gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyxUcnVlKToKKyAgICAgICAgZC5hcHBlbmRWYXIoJ0lOU0FORV9TS0lQXyVzJyAlIGQuZ2V0VmFyKCdQTicsVHJ1ZSksICIgdGV4dHJlbCIpCisgICAgZWxzZToKKyAgICAgICAgZC5zZXRWYXIoJ0dPQlVJTERNT0RFJywgJ3BpZScpCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qcXVlcnkvanF1ZXJ5XzMuNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanF1ZXJ5L2pxdWVyeV8zLjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmY2ZWY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanF1ZXJ5L2pxdWVyeV8zLjQuMS5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gImpRdWVyeSBpcyBhIGZhc3QsIHNtYWxsLCBhbmQgZmVhdHVyZS1yaWNoIEphdmFTY3JpcHQgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHBzOi8vanF1ZXJ5LmNvbS8iCitMSUNFTlNFID0gIk1JVCIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9LyR7QlB9LmpzO3N0YXJ0bGluZT04O2VuZGxpbmU9MTA7bWQ1PWNkYjg2ZjViZGE5MGNhZWMwMjM1OTJkMmU3NjgzNTdjIgorCitTUkNfVVJJID0gIlwKKyAgICBodHRwczovL2NvZGUuanF1ZXJ5LmNvbS8ke0JQfS5qcztuYW1lPWpzIFwKKyAgICBodHRwczovL2NvZGUuanF1ZXJ5LmNvbS8ke0JQfS5taW4uanM7bmFtZT1taW4gXAorICAgIGh0dHBzOi8vY29kZS5qcXVlcnkuY29tLyR7QlB9Lm1pbi5tYXA7bmFtZT1tYXAgXAorICAgICIKKworU1JDX1VSSVtqcy5zaGEyNTZzdW1dID0gIjVhOTNhODg0OTNhYTMyYWFiMjI4YmY0NTcxYzAxMjA3ZDNiNDJiMDAwMjQwOWE0NTRkNDA0YjRkODM5NWJkNTUiCitTUkNfVVJJW21pbi5zaGEyNTZzdW1dID0gIjA5MjVlOGFkN2JkOTcxMzkxYThiMWU5OGJlOGU4N2E2OTcxOTE5ZWI1YjYwYzE5NjQ4NTk0MWMzYzFkZjA4OWEiCitTUkNfVVJJW21hcC5zaGEyNTZzdW1dID0gIjhkYTc0YWVjMGZjZGQ3Njc4YTI2NjNiM2NjOWJhZmJhZjAwOWU2ZDY5MjliMjhiYjNkZDk1YmNlZDE4MjA2ZjYiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImpxdWVyeS0oP1A8cHZlcj5cZCsoXC5cZCspKylcLmpzIgorCitpbmhlcml0IGFsbGFyY2gKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2phdmFzY3JpcHQvJHtCUE59LworICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vJHtCUH0uanMgJHtEfSR7ZGF0YWRpcn0vamF2YXNjcmlwdC8ke0JQTn0vJHtCUE59LmpzCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS8ke0JQfS5taW4uanMgJHtEfSR7ZGF0YWRpcn0vamF2YXNjcmlwdC8ke0JQTn0vJHtCUE59Lm1pbi5qcworICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vJHtCUH0ubWluLm1hcCAke0R9JHtkYXRhZGlyfS9qYXZhc2NyaXB0LyR7QlBOfS8ke0JQTn0ubWluLm1hcAorfQorCitQQUNLQUdFUyA9ICIke1BOfSIKK0ZJTEVTXyR7UE59ID0gIiR7ZGF0YWRpcn0iCisKK0JCQ0xBU1NFWFRFTkQgKz0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJjb21wcy9saWJjb21wcy8wMDAxLURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliY29tcHMvbGliY29tcHMvMDAwMS1Eby1ub3Qtc2V0LVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXB5dGhvbi5wYXRjaAppbmRleCAyNmU4YjA2Li41OWMwOWFhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJjb21wcy9saWJjb21wcy8wMDAxLURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmNvbXBzL2xpYmNvbXBzLzAwMDEtRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2gKQEAgLTEsNDEgKzEsMjUgQEAKLUZyb20gZmY0YWFlNGM4YmVhZjE3Y2I4ZTdhMzQzMWY2YzU0MWVjY2ZhZTI0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYjI4ODU5ZWE5MzExMGQ1MmQ4YTg3ZDdiNWE2Yzg3OTZkMGQ1MjNlZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogRnJpLCAzMCBEZWMgMjAxNiAxODoyMjowOSArMDIwMAotU3ViamVjdDogW1BBVENIIDEvMl0gRG8gbm90IHNldCBQWVRIT05fSU5TVEFMTF9ESVIgYnkgcnVubmluZyBweXRob24uCitTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBzZXQgUFlUSE9OX0lOU1RBTExfRElSIGJ5IHJ1bm5pbmcgcHl0aG9uLgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCi0gbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvcHl0aG9uMi9DTWFrZUxpc3RzLnR4dCB8IDIgKy0KLSBsaWJjb21wcy9zcmMvcHl0aG9uL3NyYy9weXRob24zL0NNYWtlTGlzdHMudHh0IHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorIGxpYmNvbXBzL3NyYy9weXRob24vc3JjL0NNYWtlTGlzdHMudHh0IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvcHl0aG9uMi9DTWFrZUxpc3RzLnR4dCBiL2xpYmNvbXBzL3NyYy9weXRob24vc3JjL3B5dGhvbjIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDNhZDllMTguLjBlN2RkNGIgMTAwNjQ0Ci0tLS0gYS9saWJjb21wcy9zcmMvcHl0aG9uL3NyYy9weXRob24yL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9saWJjb21wcy9zcmMvcHl0aG9uL3NyYy9weXRob24yL0NNYWtlTGlzdHMudHh0Ci1AQCAtMSw3ICsxLDcgQEAKLSBmaW5kX3BhY2thZ2UgKFB5dGhvbkxpYnMgMi42KQotIGZpbmRfcGFja2FnZSAoUHl0aG9uSW50ZXJwIDIuNiBSRVFVSVJFRCkKK2RpZmYgLS1naXQgYS9saWJjb21wcy9zcmMvcHl0aG9uL3NyYy9DTWFrZUxpc3RzLnR4dCBiL2xpYmNvbXBzL3NyYy9weXRob24vc3JjL0NNYWtlTGlzdHMudHh0CitpbmRleCBmYTU5MGFlLi42OTEzMjE0IDEwMDY0NAorLS0tIGEvbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvQ01ha2VMaXN0cy50eHQKKysrKyBiL2xpYmNvbXBzL3NyYy9weXRob24vc3JjL0NNYWtlTGlzdHMudHh0CitAQCAtMTE3LDcgKzExNyw3IEBAIElGIChTS0JVSUxEKQorICAgICBJTlNUQUxMKEZJTEVTIGxpYmNvbXBzL19faW5pdF9fLnB5IERFU1RJTkFUSU9OIGxpYmNvbXBzL3NyYy9weXRob24vc3JjL2xpYmNvbXBzKQorICAgICBJTlNUQUxMKFRBUkdFVFMgcHljb21wcyBMSUJSQVJZIERFU1RJTkFUSU9OIGxpYmNvbXBzL3NyYy9weXRob24vc3JjL2xpYmNvbXBzKQorIEVMU0UgKCkKKy0gICAgRVhFQ1VURV9QUk9DRVNTKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgImZyb20gc3lzIGltcG9ydCBzdGRvdXQ7IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWc7IHN0ZG91dC53cml0ZShzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoVHJ1ZSkpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQorKyAgICAjRVhFQ1VURV9QUk9DRVNTKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgImZyb20gc3lzIGltcG9ydCBzdGRvdXQ7IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWc7IHN0ZG91dC53cml0ZShzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoVHJ1ZSkpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQogIAotLWV4ZWN1dGVfcHJvY2VzcyAoQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAtYyAiZnJvbSBzeXMgaW1wb3J0IHN0ZG91dDsgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZzsgc3Rkb3V0LndyaXRlKHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihUcnVlKSkiIE9VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCi0rI2V4ZWN1dGVfcHJvY2VzcyAoQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAtYyAiZnJvbSBzeXMgaW1wb3J0IHN0ZG91dDsgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZzsgc3Rkb3V0LndyaXRlKHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihUcnVlKSkiIE9VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCi0gCi0gaW5jbHVkZV9kaXJlY3Rvcmllcygke1BZVEhPTl9JTkNMVURFX1BBVEh9KQotIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtMSUJDT01QU19JTkNMVURFX1BBVEh9KQotZGlmZiAtLWdpdCBhL2xpYmNvbXBzL3NyYy9weXRob24vc3JjL3B5dGhvbjMvQ01ha2VMaXN0cy50eHQgYi9saWJjb21wcy9zcmMvcHl0aG9uL3NyYy9weXRob24zL0NNYWtlTGlzdHMudHh0Ci1pbmRleCA3ZmFmYTlmLi5lZDgyZDNkIDEwMDY0NAotLS0tIGEvbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvcHl0aG9uMy9DTWFrZUxpc3RzLnR4dAotKysrIGIvbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvcHl0aG9uMy9DTWFrZUxpc3RzLnR4dAotQEAgLTIsNyArMiw3IEBAIGZpbmRfcGFja2FnZSAoUHl0aG9uTGlicyAzLjApCi0gZmluZF9wYWNrYWdlIChQeXRob25JbnRlcnAgMy4wKQotICNhZGRfY3VzdG9tX3RhcmdldChweTMtY29weSkKLSAKLS1leGVjdXRlX3Byb2Nlc3MgKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgImZyb20gc3lzIGltcG9ydCBzdGRvdXQ7IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWc7IHN0ZG91dC53cml0ZShzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoVHJ1ZSkpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQotKyNleGVjdXRlX3Byb2Nlc3MgKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgImZyb20gc3lzIGltcG9ydCBzdGRvdXQ7IGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWc7IHN0ZG91dC53cml0ZShzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoVHJ1ZSkpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQotIAotIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtQWVRIT05fSU5DTFVERV9QQVRIfSkKLSBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7TElCQ09NUFNfSU5DTFVERV9QQVRIfSkKLS0tIAotMi4xMS4wCi0KKyAgICAgSU5TVEFMTChGSUxFUyAke3B5Y29tcHNfU1JDRElSfS9saWJjb21wcy9fX2luaXRfXy5weSBERVNUSU5BVElPTiAke1BZVEhPTl9JTlNUQUxMX0RJUn0vbGliY29tcHMpCisgICAgICNJTlNUQUxMKEZJTEVTICR7cHljb21wc19TUkNESVJ9L3Rlc3RzL19fdGVzdC5weSBERVNUSU5BVElPTgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliY29tcHMvbGliY29tcHNfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliY29tcHMvbGliY29tcHNfZ2l0LmJiCmluZGV4IDM3MmMzYzMuLjQwYjYwMTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmNvbXBzL2xpYmNvbXBzX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJjb21wcy9saWJjb21wc19naXQuYmIKQEAgLTgsOCArOCw4IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1jcmMzMi5jLXRvLXNvdXJjZXMtbGlzdC5wYXRjaCBcCiAgICAgICAgICAgICIKIAotUFYgPSAiMC4xLjExIgotU1JDUkVWID0gImQ4NjhhNzliNzZmYjk4MGQxMzcxYzI4MTI0YWUwN2YwMGQyYjYzYTkiCitQViA9ICIwLjEuMTQiCitTUkNSRVYgPSAiNWEwZTA0Mjg2ZjM0NjJlMzMwOGYyYTMzMmViMGY5MGE2NjkyMDIxOCIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAxLWluY2x1ZGUtc3RkZXhjZXB0LWZvci1ydW50aW1lX2Vycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAxLWluY2x1ZGUtc3RkZXhjZXB0LWZvci1ydW50aW1lX2Vycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlZGY1MzkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDEtaW5jbHVkZS1zdGRleGNlcHQtZm9yLXJ1bnRpbWVfZXJyb3IucGF0Y2gKQEAgLTAsMCArMSw2NSBAQAorRnJvbSA1ZjhlZWU1MDQwZDcwNzQ3MTBjZDU0MmZjNTBmN2E0MDkxODMyMWZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMjMgRGVjIDIwMTkgMTQ6MzA6MjIgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSA8c3RkZXhjZXB0PiBmb3IgcnVudGltZV9lcnJvcgorCitGaXhlcworCitlcnJvcjogY2xhc3MgJ2xpYmRuZjo6TW9kdWxlUGFja2FnZUNvbnRhaW5lcjo6RXhjZXB0aW9uJyBkb2VzIG5vdCBoYXZlIGFueSBmaWVsZCBuYW1lZCAncnVudGltZV9lcnJvcicKKyAgICAgICAgIGV4cGxpY2l0IEV4Y2VwdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmd2hhdCkgOiBydW50aW1lX2Vycm9yKHdoYXQpIHt9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+fgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYmRuZi9wdWxsLzg2N10KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWJkbmYvZ29hbC9Hb2FsLmhwcCAgICAgICAgICAgICAgICAgICAgIHwgMSArCisgbGliZG5mL21vZHVsZS9Nb2R1bGVQYWNrYWdlQ29udGFpbmVyLmhwcCB8IDEgKworIGxpYmRuZi9yZXBvL3NvbHZhYmxlL0RlcGVuZGVuY3kuY3BwICAgICAgfCAzICsrLQorIDMgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJkbmYvZ29hbC9Hb2FsLmhwcCBiL2xpYmRuZi9nb2FsL0dvYWwuaHBwCitpbmRleCBmMzNkZmEyNC4uN2I4ZDgyMmMgMTAwNjQ0CistLS0gYS9saWJkbmYvZ29hbC9Hb2FsLmhwcAorKysrIGIvbGliZG5mL2dvYWwvR29hbC5ocHAKK0BAIC0yMiw2ICsyMiw3IEBACisgI2RlZmluZSBfX0dPQUxfSFBQCisgCisgI2luY2x1ZGUgPG1lbW9yeT4KKysjaW5jbHVkZSA8c3RkZXhjZXB0PgorIAorICNpbmNsdWRlICIuLi9kbmYtdHlwZXMuaCIKKyAjaW5jbHVkZSAiLi4vaHktZ29hbC5oIgorZGlmZiAtLWdpdCBhL2xpYmRuZi9tb2R1bGUvTW9kdWxlUGFja2FnZUNvbnRhaW5lci5ocHAgYi9saWJkbmYvbW9kdWxlL01vZHVsZVBhY2thZ2VDb250YWluZXIuaHBwCitpbmRleCAxZjgxNWZkYS4uMzdhODgzMmQgMTAwNjQ0CistLS0gYS9saWJkbmYvbW9kdWxlL01vZHVsZVBhY2thZ2VDb250YWluZXIuaHBwCisrKysgYi9saWJkbmYvbW9kdWxlL01vZHVsZVBhY2thZ2VDb250YWluZXIuaHBwCitAQCAtMzAsNiArMzAsNyBAQAorICNpbmNsdWRlIDxzdHJpbmc+CisgI2luY2x1ZGUgPHZlY3Rvcj4KKyAjaW5jbHVkZSA8c2V0PgorKyNpbmNsdWRlIDxzdGRleGNlcHQ+CisgCisgLy9jbGFzcyBNb2R1bGVQYWNrYWdlQ29udGFpbmVyOworIC8vdHlwZWRlZiBzdGQ6OnNoYXJlZF9wdHI8TW9kdWxlUGFja2FnZUNvbnRhaW5lcj4gTW9kdWxlUGFja2FnZUNvbnRhaW5lclB0cjsKK2RpZmYgLS1naXQgYS9saWJkbmYvcmVwby9zb2x2YWJsZS9EZXBlbmRlbmN5LmNwcCBiL2xpYmRuZi9yZXBvL3NvbHZhYmxlL0RlcGVuZGVuY3kuY3BwCitpbmRleCA2NjgyYjcyOS4uMGZjOGI1Y2QgMTAwNjQ0CistLS0gYS9saWJkbmYvcmVwby9zb2x2YWJsZS9EZXBlbmRlbmN5LmNwcAorKysrIGIvbGliZG5mL3JlcG8vc29sdmFibGUvRGVwZW5kZW5jeS5jcHAKK0BAIC0xOCw2ICsxOCw3IEBACisgICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICAqLworIAorKyNpbmNsdWRlIDxzdGRleGNlcHQ+CisgI2luY2x1ZGUgIkRlcGVuZGVuY3kuaHBwIgorICNpbmNsdWRlICJsaWJkbmYvdXRpbHMvdXRpbHMuaHBwIgorICNpbmNsdWRlICJsaWJkbmYvcmVwby9EZXBlbmRlbmN5U3BsaXR0ZXIuaHBwIgorQEAgLTEwNiw0ICsxMDcsNCBAQCBEZXBlbmRlbmN5OjpnZXRSZWxkZXBJZChEbmZTYWNrICpzYWNrLCBjb25zdCBjaGFyICogcmVsZGVwU3RyKQorICAgICB9CisgfQorIAorLX0KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorK30KKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvZml4LWRlcHJlY2F0aW9uLXdhcm5pbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mL2ZpeC1kZXByZWNhdGlvbi13YXJuaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhM2UwMmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mL2ZpeC1kZXByZWNhdGlvbi13YXJuaW5nLnBhdGNoCkBAIC0wLDAgKzEsNzEgQEAKK0Zyb20gNjZkOWIyYmEzZmJjN2IwNGYyYjVhZDlkMGU1MzcxMzQwYzAzN2I1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcmVrIEJsYWhhIDxtYmxhaGFAcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgMTAgSnVsIDIwMTkgMTA6MTE6MDEgKzAyMDAKK1N1YmplY3Q6IFtvZS1jb3JlXVtQQVRDSCAxLzFdIEZpeCBQeXRob24gMy44IGRlcHJlY2F0aW9uIHdhcm5pbmcKKyAoUmhCdWc6MTcyNDI0NCkKKworVGhpcyBkZXByZWNhdGlvbiB3YXJuaW5nIHdhcyBpbnRyb2R1Y2VkIGluIFB5dGhvbiAzLjggYnkKK2h0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzYzODE6CisKKy91c3IvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2RuZi9wYWNrYWdlLnB5OjU3OiBEZXByZWNhdGlvbldhcm5pbmc6IFBZX1NTSVpFX1RfQ0xFQU4gd2lsbCBiZSByZXF1aXJlZCBmb3IgJyMnIGZvcm1hdHMKKyAgcmV0dXJuIHN1cGVyKFBhY2thZ2UsIHNlbGYpLmNoa3N1bQorCitodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTE3MjQyNDQKKy0tLQorIHB5dGhvbi9oYXdrZXkvcGFja2FnZS1weS5jcHAgICAgICB8IDMgKystCisgcHl0aG9uL2hhd2tleS9wYWNrYWdlZGVsdGEtcHkuY3BwIHwgMyArKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKy0tLQorCitVbmNoYW5nZWQuICBBcHBlYXJzIGluIHZlcnNpb24gMC4zNS4yLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYmRuZi5naXRdCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworCitkaWZmIC0tZ2l0IGEvcHl0aG9uL2hhd2tleS9wYWNrYWdlLXB5LmNwcCBiL3B5dGhvbi9oYXdrZXkvcGFja2FnZS1weS5jcHAKK2luZGV4IDUxMDJiYmEuLjY4ZTAzY2IgMTAwNjQ0CistLS0gYS9weXRob24vaGF3a2V5L3BhY2thZ2UtcHkuY3BwCisrKysgYi9weXRob24vaGF3a2V5L3BhY2thZ2UtcHkuY3BwCitAQCAtMTgsNiArMTgsNyBAQAorICAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAgKi8KKyAKKysjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KKyAjaW5jbHVkZSA8UHl0aG9uLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgCitAQCAtMjUxLDcgKzI1Miw3IEBAIGdldF9jaGtzdW0oX1BhY2thZ2VPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCisgI2lmIFBZX01BSk9SX1ZFUlNJT04gPCAzCisgICAgIHJlcyA9IFB5X0J1aWxkVmFsdWUoImlzIyIsIHR5cGUsIGNzLCBjaGVja3N1bV9sZW5ndGgpOworICNlbHNlCistICAgIHJlcyA9IFB5X0J1aWxkVmFsdWUoIml5IyIsIHR5cGUsIGNzLCBjaGVja3N1bV9sZW5ndGgpOworKyAgICByZXMgPSBQeV9CdWlsZFZhbHVlKCJpeSMiLCB0eXBlLCBjcywgKFB5X3NzaXplX3QpY2hlY2tzdW1fbGVuZ3RoKTsKKyAjZW5kaWYKKyAKKyAgICAgcmV0dXJuIHJlczsKK2RpZmYgLS1naXQgYS9weXRob24vaGF3a2V5L3BhY2thZ2VkZWx0YS1weS5jcHAgYi9weXRob24vaGF3a2V5L3BhY2thZ2VkZWx0YS1weS5jcHAKK2luZGV4IGNhMWNiN2QuLjFhNjQ4MzYgMTAwNjQ0CistLS0gYS9weXRob24vaGF3a2V5L3BhY2thZ2VkZWx0YS1weS5jcHAKKysrKyBiL3B5dGhvbi9oYXdrZXkvcGFja2FnZWRlbHRhLXB5LmNwcAorQEAgLTE4LDYgKzE4LDcgQEAKKyAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgICovCisgCisrI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCisgI2luY2x1ZGUgPFB5dGhvbi5oPgorIAorIC8vIGhhd2tleQorQEAgLTkyLDcgKzkzLDcgQEAgZ2V0X2Noa3N1bShfUGFja2FnZURlbHRhT2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQorICNpZiBQWV9NQUpPUl9WRVJTSU9OIDwgMworICAgICByZXMgPSBQeV9CdWlsZFZhbHVlKCJpcyMiLCB0eXBlLCBjcywgY2hlY2tzdW1fbGVuZ3RoKTsKKyAjZWxzZQorLSAgICByZXMgPSBQeV9CdWlsZFZhbHVlKCJpeSMiLCB0eXBlLCBjcywgY2hlY2tzdW1fbGVuZ3RoKTsKKysgICAgcmVzID0gUHlfQnVpbGRWYWx1ZSgiaXkjIiwgdHlwZSwgY3MsIChQeV9zc2l6ZV90KWNoZWNrc3VtX2xlbmd0aCk7CisgI2VuZGlmCisgCisgICAgIHJldHVybiByZXM7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmZfMC4yOC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl8wLjI4LjEuYmIKaW5kZXggM2YxMWUwMi4uY2MyY2ViOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl8wLjI4LjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl8wLjI4LjEuYmIKQEAgLTcsOSArNywxMiBAQAogICAgICAgICAgICBmaWxlOi8vMDAwNC1TZXQtbGlic29sdi12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLWNtYWtlLXMtb3duLW1vLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtR2V0LXBhcmFtZXRlcnMtZm9yLWJvdGgtbGlic29sdi1hbmQtbGlic29sdmV4dC1saWJkbi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1XSVRIX1RFU1RTLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3RkZXhjZXB0LWZvci1ydW50aW1lX2Vycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1kZXByZWNhdGlvbi13YXJuaW5nLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNSRVYgPSAiNzUxZjg5MDQ1YjgwZDU4YzBkMDU4MDBmNzQzNTdjZjc4Y2RmN2U3NyIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApAQCAtMjUsNCArMjgsNSBAQAogRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAtRFdJVEhfR0lSPU9GRiIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorUE5CTEFDS0xJU1RbbGliZG5mXSA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VfQ0xBU1NFUycsICdwYWNrYWdlX3JwbScsICcnLCAnRG9lcyBub3QgYnVpbGQgd2l0aG91dCBwYWNrYWdlX3JwbSBpbiBQQUNLQUdFX0NMQVNTRVMgZHVlIGRpc2FibGVkIHJwbSBzdXBwb3J0IGluIGxpYnNvbHYnLCBkKX0iCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmVkaXQvbGliZWRpdF8yMDE5MTAyNS0zLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJlZGl0L2xpYmVkaXRfMjAxOTEwMjUtMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODEwMDEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmVkaXQvbGliZWRpdF8yMDE5MTAyNS0zLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIkJTRCByZXBsYWNlbWVudCBmb3IgbGlicmVhZGxpbmUiCi1ERVNDUklQVElPTiA9ICJDb21tYW5kIGxpbmUgZWRpdG9yIGxpYnJhcnkgcHJvdmlkaW5nIGdlbmVyaWMgbGluZSBlZGl0aW5nLCBcCi1oaXN0b3J5LCBhbmQgdG9rZW5pemF0aW9uIGZ1bmN0aW9ucyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cudGhyeXNvZWUuZGsvZWRpdGxpbmUvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZTQyMjhkMGM1YTkwOTNiMDFhZWFhZWFlNjY0MTUzMyIKLQotREVQRU5EUyA9ICJuY3Vyc2VzIgotCi1pbmhlcml0IGF1dG90b29scwotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cudGhyeXNvZWUuZGsvZWRpdGxpbmUvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3N0ZGMtcHJlZGVmLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMmQ2NTY4NDY3MDgwY2ZkNzVlNzE1ZDA0NTEwMmI1NDQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmRmZjAzNjY2MGQ0NzhiZmFhMTRlNDA3ZmM1ZGUyNmQyMmRhMTA4NzExOGM4OTdiMWEzYWQyZTkwY2I3YmYzOSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZWRpdC9saWJlZGl0XzIwMTkxMjMxLTMuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmVkaXQvbGliZWRpdF8yMDE5MTIzMS0zLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQyZDU3YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmVkaXQvbGliZWRpdF8yMDE5MTIzMS0zLjEuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJCU0QgcmVwbGFjZW1lbnQgZm9yIGxpYnJlYWRsaW5lIgorREVTQ1JJUFRJT04gPSAiQ29tbWFuZCBsaW5lIGVkaXRvciBsaWJyYXJ5IHByb3ZpZGluZyBnZW5lcmljIGxpbmUgZWRpdGluZywgXAoraGlzdG9yeSwgYW5kIHRva2VuaXphdGlvbiBmdW5jdGlvbnMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnRocnlzb2VlLmRrL2VkaXRsaW5lLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWU0MjI4ZDBjNWE5MDkzYjAxYWVhYWVhZTY2NDE1MzMiCisKK0RFUEVORFMgPSAibmN1cnNlcyIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LnRocnlzb2VlLmRrL2VkaXRsaW5lLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9zdGRjLXByZWRlZi5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjJlMjJhNTExMzFkZTk0ZmYyZGYyNDkwMWY3Y2ZlNDE2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRiYjgyY2I3ZTExNmE1ZjgwMjVkMzVlZjViNGY3ZDRhM2NkZDBhMzkwOWExNDZhMzkxMTIwOTVhMmQyMjkwNzEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjkwIgorQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gImhpc3RvcnkuMyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtoaXN0b3J5LjNdID0gIiR7bWFuZGlyfS9tYW4zL2hpc3RvcnkuMyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb18xLjExLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG9fMS4xMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGM4YTVjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb18xLjExLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIkEgbGlicmFyeSBwcm92aWRpbmcgQyBhbmQgUHl0aG9uIChsaWJjVVJMIGxpa2UpIEFQSSBcCi0gICAgICAgICAgIGZvciBkb3dubG9hZGluZyBsaW51eCByZXBvc2l0b3J5IG1ldGFkYXRhIGFuZCBwYWNrYWdlcy4iCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9saWJyZXBvLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC10cnktdG8tb2J0YWluLVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1TZXQtZ3BnbWUtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1ub3Qtd2l0aC1jbWFrZS1tLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNSRVYgPSAiNDk3ZjVlYjIyOTM2NjI4MzViZWQ2YmRiMGY0MzUyMTc4OGIyY2ViZSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotREVQRU5EUyA9ICJjdXJsIGdsaWItMi4wIG9wZW5zc2wgYXR0ciBncGdtZSBsaWJ4bWwyIgotCi1pbmhlcml0IGNtYWtlIGRpc3R1dGlsczMtYmFzZSBwa2djb25maWcKLQotRVhUUkFfT0VDTUFLRSA9ICIgXAotICAgIC1EUFlUSE9OX0lOU1RBTExfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKLSAgICAtRFBZVEhPTl9ERVNJUkVEPTMgXAotICAgIC1ERU5BQkxFX1RFU1RTPU9GRiBcCi0gICAgLURFTkFCTEVfRE9DUz1PRkYgXAotICAgIC1EV0lUSF9aQ0hVTks9T0ZGIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvXzEuMTEuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb18xLjExLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmEwYTU5ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb18xLjExLjIuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJBIGxpYnJhcnkgcHJvdmlkaW5nIEMgYW5kIFB5dGhvbiAobGliY1VSTCBsaWtlKSBBUEkgXAorICAgICAgICAgICBmb3IgZG93bmxvYWRpbmcgbGludXggcmVwb3NpdG9yeSBtZXRhZGF0YSBhbmQgcGFja2FnZXMuIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGlicmVwby5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1Eby1ub3QtdHJ5LXRvLW9idGFpbi1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtU2V0LWdwZ21lLXZhcmlhYmxlcy13aXRoLXBrZy1jb25maWctbm90LXdpdGgtY21ha2UtbS5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDUkVWID0gIjY3YzJkMWY4M2YxYmY4N2JlM2YyNmJhNzMwZmNlN2ZiZGYwYzlmYmEiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0RFUEVORFMgPSAiY3VybCBnbGliLTIuMCBvcGVuc3NsIGF0dHIgZ3BnbWUgbGlieG1sMiIKKworaW5oZXJpdCBjbWFrZSBkaXN0dXRpbHMzLWJhc2UgcGtnY29uZmlnCisKK0VYVFJBX09FQ01BS0UgPSAiIFwKKyAgICAtRFBZVEhPTl9JTlNUQUxMX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCisgICAgLURQWVRIT05fREVTSVJFRD0zIFwKKyAgICAtREVOQUJMRV9URVNUUz1PRkYgXAorICAgIC1ERU5BQkxFX0RPQ1M9T0ZGIFwKKyAgICAtRFdJVEhfWkNIVU5LPU9GRiBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bV9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm1fZ2l0LmJiCmluZGV4IDVmOTI3N2YuLmE4NjA3ZjUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bV9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtX2dpdC5iYgpAQCAtMTAsNiArMTAsOSBAQAogCiBERVBFTkRTID0gImxpYmZmaSBsaWJ4bWwyIHpsaWIgbGliZWRpdCBuaW5qYS1uYXRpdmUgbGx2bS1uYXRpdmUiCiAKK0NPTVBBVElCTEVfSE9TVF9yaXNjdjY0ID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfcmlzY3YzMiA9ICJudWxsIgorCiBSREVQRU5EU18ke1BOfV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBuY3Vyc2VzLXRlcm1pbmZvIgogCiBpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwpAQCAtMTgsNyArMjEsNyBAQAogCiBNQUpPUl9WRVJTSU9OID0gIjkiCiBNSU5PUl9WRVJTSU9OID0gIjAiCi1QQVRDSF9WRVJTSU9OID0gIjAiCitQQVRDSF9WRVJTSU9OID0gIjEiCiAKIFBWID0gIiR7TUFKT1JfVkVSU0lPTn0uJHtNSU5PUl9WRVJTSU9OfS4ke1BBVENIX1ZFUlNJT059IgogCkBAIC0yNiwxMiArMjksMTQgQEAKIExMVk1fRElSID0gImxsdm0ke0xMVk1fUkVMRUFTRX0iCiAKIEJSQU5DSCA9ICJyZWxlYXNlLyR7TUFKT1JfVkVSU0lPTn0ueCIKLVNSQ1JFViA9ICIwMzk5ZDVhOTY4MmIzY2VmNzFjNjUzMzczZTM4ODkwYzYzYzRjMzY1IgorU1JDUkVWID0gImMxYTBhMjEzMzc4YTQ1OGZiZWExYTVjNzdiMzE1YzdkY2UwOGZkMDUiCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QuZ2l0O2JyYW5jaD0ke0JSQU5DSH0gXAogICAgICAgICAgICBmaWxlOi8vMDAwNi1sbHZtLVRhcmdldExpYnJhcnlJbmZvLVVuZGVmaW5lLWxpYmMtZnVuY3Rpb25zLWlmLXRoLnBhdGNoO3N0cmlwbGV2ZWw9MiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA3LWxsdm0tYWxsb3ctZW52LW92ZXJyaWRlLW9mLWV4ZS1wYXRoLnBhdGNoO3N0cmlwbGV2ZWw9MiBcCiAgICAgICAgICAgIgogCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJsbHZtb3JnLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKKwogUyA9ICIke1dPUktESVJ9L2dpdC9sbHZtIgogCiBMTFZNX0lOU1RBTExfRElSID0gIiR7V09SS0RJUn0vbGx2bS1pbnN0YWxsIgpAQCAtODcsNiArOTIsOCBAQAogICAgICAgICAgICAgICAgICAgLURMTFZNX0NPTkZJR19QQVRIPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9sbHZtLWNvbmZpZyR7UFZ9IFwKICAgICAgICAgICAgICAgICAgIgogCitDRkxBR1MgKz0gIi1mY29tbW9uIgorCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKICMgRml4IHBhdGhzIGluIGxsdm0tY29uZmlnCiAJc2VkIC1pICJzfHN5czo6cGF0aDo6cGFyZW50X3BhdGgoQ3VycmVudFBhdGgpKVwuc3RyKCl8c3lzOjpwYXRoOjpwYXJlbnRfcGF0aChzeXM6OnBhdGg6OnBhcmVudF9wYXRoKEN1cnJlbnRQYXRoKSkpLnN0cigpfGciICR7U30vdG9vbHMvbGx2bS1jb25maWcvbGx2bS1jb25maWcuY3BwCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLmluYwppbmRleCBiODkwNWJjLi5hMGE3MmI2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS5pbmMKQEAgLTUsOSArNSw3IEBACiBIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbWFrZS8iCiBTRUNUSU9OID0gImRldmVsIgogCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbWFrZS9tYWtlLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2ggXAorU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L21ha2UvbWFrZS0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICAiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHRleGluZm8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAxLWdsb2ItRG8tbm90LWFzc3VtZS1nbGliYy1nbG9iLWludGVybmFscy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAxLWdsb2ItRG8tbm90LWFzc3VtZS1nbGliYy1nbG9iLWludGVybmFscy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI2ZTRkNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMS1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIGM5MGE3ZGRhNmM1NzJmNzliOGU3OGRhNDRiNmViZjg3MDRlZGVmNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgotRGF0ZTogU3VuLCAyNCBTZXAgMjAxNyAwOToxMjo1OCAtMDQwMAotU3ViamVjdDogW1BBVENIIDEvMl0gZ2xvYjogRG8gbm90IGFzc3VtZSBnbGliYyBnbG9iIGludGVybmFscy4KLQotSXQgaGFzIGJlZW4gcHJvcG9zZWQgdGhhdCBnbGliYyBnbG9iIHN0YXJ0IHVzaW5nIGdsX2xzdGF0LAotd2hpY2ggdGhlIEFQSSBhbGxvd3MgaXQgdG8gZG8uICBHTlUgJ21ha2UnIHNob3VsZCBub3QgZ2V0IGluCi10aGUgd2F5IG9mIHRoaXMuICBTZWU6Ci1odHRwczovL3NvdXJjZXdhcmUub3JnL21sL2xpYmMtYWxwaGEvMjAxNy0wOS9tc2cwMDQwOS5odG1sCi0KLSogZGlyLmMgKGxvY2FsX2xzdGF0KTogTmV3IGZ1bmN0aW9uLCBsaWtlIGxvY2FsX3N0YXQuCi0oZGlyX3NldHVwX2dsb2IpOiBVc2UgaXQgdG8gaW5pdGlhbGl6ZSBnbF9sc3RhdCB0b28sIGFzIHRoZSBBUEkKLXJlcXVpcmVzLgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gZGlyLmMgfCAyOSArKysrKysrKysrKysrKysrKysrKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZGlyLmMgYi9kaXIuYwotaW5kZXggZjM0YmJmNS4uMTJlZWYzMCAxMDA2NDQKLS0tLSBhL2Rpci5jCi0rKysgYi9kaXIuYwotQEAgLTEyOTksMTUgKzEyOTksNDAgQEAgbG9jYWxfc3RhdCAoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKmJ1ZikKLSB9Ci0gI2VuZGlmCi0gCi0rLyogU2ltaWxhcmx5IGZvciBsc3RhdC4gICovCi0rI2lmICFkZWZpbmVkKGxzdGF0KSAmJiAhZGVmaW5lZChXSU5ET1dTMzIpIHx8IGRlZmluZWQoVk1TKQotKyMgaWZuZGVmIFZNUwotKyMgIGlmbmRlZiBIQVZFX1NZU19TVEFUX0gKLStpbnQgbHN0YXQgKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpzYnVmKTsKLSsjICBlbmRpZgotKyMgZWxzZQotKyAgICAvKiBXZSBhcmUgZG9uZSB3aXRoIHRoZSBmYWtlIGxzdGF0LiAgR28gYmFjayB0byB0aGUgcmVhbCBsc3RhdCAqLwotKyMgICBpZmRlZiBsc3RhdAotKyMgICAgIHVuZGVmIGxzdGF0Ci0rIyAgIGVuZGlmCi0rIyBlbmRpZgotKyMgZGVmaW5lIGxvY2FsX2xzdGF0IGxzdGF0Ci0rI2VsaWYgZGVmaW5lZChXSU5ET1dTMzIpCi0rLyogV2luZG93cyBkb2Vzbid0IHN1cHBvcnQgbHN0YXQoKS4gICovCi0rIyBkZWZpbmUgbG9jYWxfbHN0YXQgbG9jYWxfc3RhdAotKyNlbHNlCi0rc3RhdGljIGludAotK2xvY2FsX2xzdGF0IChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqYnVmKQotK3sKLSsgIGludCBlOwotKyAgRUlOVFJMT09QIChlLCBsc3RhdCAocGF0aCwgYnVmKSk7Ci0rICByZXR1cm4gZTsKLSt9Ci0rI2VuZGlmCi0rCi0gdm9pZAotIGRpcl9zZXR1cF9nbG9iIChnbG9iX3QgKmdsKQotIHsKLSAgIGdsLT5nbF9vcGVuZGlyID0gb3Blbl9kaXJzdHJlYW07Ci0gICBnbC0+Z2xfcmVhZGRpciA9IHJlYWRfZGlyc3RyZWFtOwotICAgZ2wtPmdsX2Nsb3NlZGlyID0gZnJlZTsKLSsgIGdsLT5nbF9sc3RhdCA9IGxvY2FsX2xzdGF0OwotICAgZ2wtPmdsX3N0YXQgPSBsb2NhbF9zdGF0OwotLSAgLyogV2UgZG9uJ3QgYm90aGVyIHNldHRpbmcgZ2xfbHN0YXQsIHNpbmNlIGdsb2IgbmV2ZXIgY2FsbHMgaXQuCi0tICAgICBUaGUgc2xvdCBpcyBvbmx5IHRoZXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggNC40IEJTRC4gICovCi0gfQotIAotIHZvaWQKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAxLW00LWdldGxvYWRhdmcubTQtcmVzdHJpY3QtQUlYLXNwZWNpZmljLXRlc3Qtb24tQUlYLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtbTQtZ2V0bG9hZGF2Zy5tNC1yZXN0cmljdC1BSVgtc3BlY2lmaWMtdGVzdC1vbi1BSVgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk2YmNmZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAxLW00LWdldGxvYWRhdmcubTQtcmVzdHJpY3QtQUlYLXNwZWNpZmljLXRlc3Qtb24tQUlYLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gODMwOTYwMTc3NWQ5NDQyNDE2MzI5YTc3ZjdkY2ZkOGFhNzk5ZTlhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplbnMgUmVoc2FjayA8c25vQG5ldGJzZC5vcmc+CitEYXRlOiBGcmksIDIxIEZlYiAyMDIwIDE3OjM5OjU2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBtNC9nZXRsb2FkYXZnLm00OiByZXN0cmljdCBBSVggc3BlY2lmaWMgdGVzdCBvbiBBSVgKKworV2hlbiBjcm9zcyBjb21waWxpbmcgZm9yIGEgc3lzdGVtIHdpdGhvdXQgZ2V0bG9hZGF2ZywgZG8gbm90IHRyeSBhZGQKK2FkZGl0aW9uYWwgbGlua2VyIHBhdGhzIHVubGVzcyBpdCdzIGFic29sdXRlbHkgbmVjZXNzYXJ5LgorCitTaWduZWQtb2ZmLWJ5OiBKZW5zIFJlaHNhY2sgPHNub0BuZXRic2Qub3JnPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKyBtNC9nZXRsb2FkYXZnLm00IHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9tNC9nZXRsb2FkYXZnLm00IGIvbTQvZ2V0bG9hZGF2Zy5tNAoraW5kZXggM2JkMmExNC4uNjk2YzVkZSAxMDA2NDQKKy0tLSBhL200L2dldGxvYWRhdmcubTQKKysrKyBiL200L2dldGxvYWRhdmcubTQKK0BAIC00Miw2ICs0Miw4IEBAIEFDX0NIRUNLX0ZVTkMoW2dldGxvYWRhdmddLCBbXSwKKyAgICBmaQorIAorICAgIGlmIHRlc3QgJGdsX2Z1bmNfZ2V0bG9hZGF2Z19kb25lID0gbm87IHRoZW4KKysgICAgIEFTX0NBU0UoWyRob3N0X29zXSwKKysgICAgICAgICAgICAgW2FpeCpdLCBbCisgICAgICAjIFRoZXJlIGlzIGEgY29tbW9ubHkgYXZhaWxhYmxlIGxpYnJhcnkgZm9yIFJTLzYwMDAgQUlYLgorICAgICAgIyBTaW5jZSBpdCBpcyBub3QgYSBzdGFuZGFyZCBwYXJ0IG9mIEFJWCwgaXQgbWlnaHQgYmUgaW5zdGFsbGVkIGxvY2FsbHkuCisgICAgICBnbF9nZXRsb2FkYXZnX0xJQlM9JExJQlMKK0BAIC00OSw2ICs1MSw3IEBAIEFDX0NIRUNLX0ZVTkMoW2dldGxvYWRhdmddLCBbXSwKKyAgICAgIEFDX0NIRUNLX0xJQihbZ2V0bG9hZGF2Z10sIFtnZXRsb2FkYXZnXSwKKyAgICAgICAgICAgICAgICAgICBbTElCUz0iLWxnZXRsb2FkYXZnICRMSUJTIiBnbF9mdW5jX2dldGxvYWRhdmdfZG9uZT15ZXNdLAorICAgICAgICAgICAgICAgICAgIFtMSUJTPSRnbF9nZXRsb2FkYXZnX0xJQlNdKQorKyAgICAgICBdLCBbOl0pCisgICAgZmkKKyAKKyAgICAjIFNldCB1cCB0aGUgcmVwbGFjZW1lbnQgZnVuY3Rpb24gaWYgbmVjZXNzYXJ5LgorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtbWFrZWluc3QtRG8tbm90LXVuZGVmLVBPU0lYLW9uLWNsYW5nLWFybS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAxLW1ha2VpbnN0LURvLW5vdC11bmRlZi1QT1NJWC1vbi1jbGFuZy1hcm0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRhN2M5OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAxLW1ha2VpbnN0LURvLW5vdC11bmRlZi1QT1NJWC1vbi1jbGFuZy1hcm0ucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSA4NmI3OTQ3MTU2YTBjMzNlNzY4ZDBhMjY1ZTM4ZjI4ODFhNzBhN2UyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgNiBNYXIgMjAyMCAyMzoxOTozNyAtMDgwMAorU3ViamVjdDogW1BBVENIXSBtYWtlaW5zdDogRG8gbm90IHVuZGVmIFBPU0lYIG9uIGNsYW5nL2FybQorCitpZiBfX2FybSBpbnRlcm5hbCBjb21waWxlciBtYWNybyBpcyBkZWZpbmVkIHRoZW4gbWFrZSBhc3N1bWVzIHRoYXQgdGhlCitzeXN0ZW0gaXMgbm90IHBvc2l4IGFuZCBnb2VzIGFoZWFkIGFuZCB1bmRlZnMgUE9TSVgsIHdoaWNoIHJlc3VsdHMgaW4KK21pc2NvbXBpbGluZyBtYWtlIHdpdGggY2xhbmcsIHNpbmNlIGNsYW5nIGRvZXMgZGVmaW5lIF9fYXJtIHVubGlrZSBnY2MKK3doaWNoIGRvZXMgbm90LCBidXQgdGhleSBib3RoIHN1cHBvcnQgcG9zaXgganVzdCBmaW5lLCBzbyBoZXJlIGNoZWNrIGZvcgorY29tcGlsZXIgbm90IGJlaW5nIGNsYW5nIHdoZW4gX19hcm0gaXMgZGVmaW5lZCBiZWZvcmUgdW5kZWZpbmluZyBwb3NpeAorCitGaXhlcyBlcnJvciBsaWtlCisuLi9tYWtlLTQuMy9zcmMvam9iLmM6NTA3OjI3OiBlcnJvcjogdG9vIG1hbnkgYXJndW1lbnRzIHRvIGZ1bmN0aW9uIGNhbGwsIGV4cGVjdGVkIDAsIGhhdmUgMQorICBzaWdzZXRtYXNrIChzaWdnZXRtYXNrICgwKSAmIH5mYXRhbF9zaWduYWxfbWFzaykKKyAgICAgICAgICAgICAgfn5+fn5+fn5+fiAgXgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvbWFrZWludC5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21ha2VpbnQuaCBiL3NyYy9tYWtlaW50LmgKK2luZGV4IGM0MjhhMzYuLmZhZGY5NjMgMTAwNjQ0CistLS0gYS9zcmMvbWFrZWludC5oCisrKysgYi9zcmMvbWFrZWludC5oCitAQCAtMTE1LDcgKzExNSw3IEBAIGV4dGVybiBpbnQgZXJybm87CisgI2VuZGlmCisgCisgLyogU29tZSBzeXN0ZW1zIGRlZmluZSBfUE9TSVhfVkVSU0lPTiBidXQgYXJlIG5vdCByZWFsbHkgUE9TSVguMS4gICovCistI2lmIChkZWZpbmVkIChidXR0ZXJmbHkpIHx8IGRlZmluZWQgKF9fYXJtKSB8fCAoZGVmaW5lZCAoX19taXBzKSAmJiBkZWZpbmVkIChfU1lTVFlQRV9TVlIzKSkgfHwgKGRlZmluZWQgKHNlcXVlbnQpICYmIGRlZmluZWQgKGkzODYpKSkKKysjaWYgKGRlZmluZWQgKGJ1dHRlcmZseSkgfHwgKGRlZmluZWQgKF9fYXJtKSAmJiAhZGVmaW5lZChfX2NsYW5nX18pKSB8fCAoZGVmaW5lZCAoX19taXBzKSAmJiBkZWZpbmVkIChfU1lTVFlQRV9TVlIzKSkgfHwgKGRlZmluZWQgKHNlcXVlbnQpICYmIGRlZmluZWQgKGkzODYpKSkKKyAjIHVuZGVmIFBPU0lYCisgI2VuZGlmCisgCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMS1zcmMtZGlyLmMtZml4LWJ1ZmZlci1vdmVyZmxvdy13YXJuaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtc3JjLWRpci5jLWZpeC1idWZmZXItb3ZlcmZsb3ctd2FybmluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Nzk3MDgyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtc3JjLWRpci5jLWZpeC1idWZmZXItb3ZlcmZsb3ctd2FybmluZy5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIGNkNzA5MWE3ZDg4MzA2MDA0Y2E5OGM1ZGFmY2M0MGY0NDU4OWIxMDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZW5zIFJlaHNhY2sgPHNub0BuZXRic2Qub3JnPgorRGF0ZTogTW9uLCAyNCBGZWIgMjAyMCAxMDo1MjoyMSArMDEwMAorU3ViamVjdDogW1BBVENIIDEvM10gc3JjL2Rpci5jOiBmaXggYnVmZmVyLW92ZXJmbG93IHdhcm5pbmcKKworRml4IGNvbXBpbGVyIHdhcm5pbmc6CisJc3JjL2Rpci5jOjEyOTQ6Nzogd2FybmluZzogJ3N0cm5jcHknIHNwZWNpZmllZCBib3VuZCBkZXBlbmRzIG9uIHRoZQorCQkJICBsZW5ndGggb2YgdGhlIHNvdXJjZSBhcmd1bWVudCBbLVdzdHJpbmdvcC1vdmVyZmxvdz1dCisKK1RoZSBleGlzdGluZyBjb2RlIGFzc3VtZXMgYHBhdGhgIHdpbGwgbmV2ZXIgZXhjZWVkIGBNQVhQQVRITEVOYC4gQWxzbyB0aGUKK3NpemUgb2YgdGhlIGJ1ZmZlciBpcyBpbmNyZWFzZWQgYnkgMSB0byBob2xkIGEgcGF0aCB3aXRoIHRoZSBsZW5ndGggb2YKK2BNQVhQQVRITEVOYCBhbmQgdHJhaWxpbmcgYDBgLgorCitTaWduZWQtb2ZmLWJ5OiBKZW5zIFJlaHNhY2sgPHNub0BuZXRic2Qub3JnPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgKGh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz81Nzg4OCkKKworIHNyYy9kaXIuYyB8IDYgKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9kaXIuYyBiL3NyYy9kaXIuYworaW5kZXggODYyYTE4ZS4uY2FkNGM0YSAxMDA2NDQKKy0tLSBhL3NyYy9kaXIuYworKysrIGIvc3JjL2Rpci5jCitAQCAtMTI4OSwxMCArMTI4OSwxMCBAQCBsb2NhbF9zdGF0IChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqYnVmKQorICAgaWYgKHBsZW4gPiAxICYmIHBhdGhbcGxlbiAtIDFdID09ICcuJworICAgICAgICYmIChwYXRoW3BsZW4gLSAyXSA9PSAnLycgfHwgcGF0aFtwbGVuIC0gMl0gPT0gJ1xcJykpCisgICAgIHsKKy0gICAgICBjaGFyIHBhcmVudFtNQVhQQVRITEVOXTsKKysgICAgICBjaGFyIHBhcmVudFtNQVhQQVRITEVOKzFdOworIAorLSAgICAgIHN0cm5jcHkgKHBhcmVudCwgcGF0aCwgcGxlbiAtIDIpOworLSAgICAgIHBhcmVudFtwbGVuIC0gMl0gPSAnXDAnOworKyAgICAgIHN0cm5jcHkgKHBhcmVudCwgcGF0aCwgTUFYUEFUSExFTik7CisrICAgICAgcGFyZW50W01JTihwbGVuIC0gMiwgTUFYUEFUSExFTildID0gJ1wwJzsKKyAgICAgICBpZiAoc3RhdCAocGFyZW50LCBidWYpIDwgMCB8fCAhX1NfSVNESVIgKGJ1Zi0+c3RfbW9kZSkpCisgICAgICAgICByZXR1cm4gLTE7CisgICAgIH0KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAyLWdsb2ItRG8tbm90LWFzc3VtZS1nbGliYy1nbG9iLWludGVybmFscy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAyLWdsb2ItRG8tbm90LWFzc3VtZS1nbGliYy1nbG9iLWludGVybmFscy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ5YWNkOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMi1nbG9iLURvLW5vdC1hc3N1bWUtZ2xpYmMtZ2xvYi1pbnRlcm5hbHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIDk4NTg3MDJkYmQxZTEzNzI2MmMwNjc2NTkxOTkzNzY2MDg3OWY2M2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgotRGF0ZTogU3VuLCAyNCBTZXAgMjAxNyAwOToxMjo1OCAtMDQwMAotU3ViamVjdDogW1BBVENIIDIvMl0gZ2xvYjogRG8gbm90IGFzc3VtZSBnbGliYyBnbG9iIGludGVybmFscy4KLQotSXQgaGFzIGJlZW4gcHJvcG9zZWQgdGhhdCBnbGliYyBnbG9iIHN0YXJ0IHVzaW5nIGdsX2xzdGF0LAotd2hpY2ggdGhlIEFQSSBhbGxvd3MgaXQgdG8gZG8uICBHTlUgJ21ha2UnIHNob3VsZCBub3QgZ2V0IGluCi10aGUgd2F5IG9mIHRoaXMuICBTZWU6Ci1odHRwczovL3NvdXJjZXdhcmUub3JnL21sL2xpYmMtYWxwaGEvMjAxNy0wOS9tc2cwMDQwOS5odG1sCi0KLSogZGlyLmMgKGxvY2FsX2xzdGF0KTogTmV3IGZ1bmN0aW9uLCBsaWtlIGxvY2FsX3N0YXQuCi0oZGlyX3NldHVwX2dsb2IpOiBVc2UgaXQgdG8gaW5pdGlhbGl6ZSBnbF9sc3RhdCB0b28sIGFzIHRoZSBBUEkKLXJlcXVpcmVzLgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBjb25maWd1cmUuYWMgfCAzICstLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNjRlYzg3MC4uZTg3OTAxYyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzk5LDEwICszOTksOSBAQCBBQ19DQUNIRV9DSEVDSyhbaWYgc3lzdGVtIGxpYmMgaGFzIEdOVSBnbG9iXSwgW21ha2VfY3Zfc3lzX2dudV9nbG9iXSwKLSAjaW5jbHVkZSA8Z2xvYi5oPgotICNpbmNsdWRlIDxmbm1hdGNoLmg+Ci0gCi0tI2RlZmluZSBHTE9CX0lOVEVSRkFDRV9WRVJTSU9OIDEKLSAjaWYgIWRlZmluZWQgX0xJQkMgJiYgZGVmaW5lZCBfX0dOVV9MSUJSQVJZX18gJiYgX19HTlVfTElCUkFSWV9fID4gMQotICMgaW5jbHVkZSA8Z251LXZlcnNpb25zLmg+Ci0tIyBpZiBfR05VX0dMT0JfSU5URVJGQUNFX1ZFUlNJT04gPT0gR0xPQl9JTlRFUkZBQ0VfVkVSU0lPTgotK2lmIF9HTlVfR0xPQl9JTlRFUkZBQ0VfVkVSU0lPTiA9PSAxIHx8IF9HTlVfR0xPQl9JTlRFUkZBQ0VfVkVSU0lPTiA9PSAyCi0gICAgZ251IGdsb2IKLSAjIGVuZGlmCi0gI2VuZGlmXSwKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAyLW1vZHVsZXMtZmNudGwtYWxsb3ctYmVpbmctZGV0ZWN0ZWQtYnktaW1wb3J0aW5nLXByb2oucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMi1tb2R1bGVzLWZjbnRsLWFsbG93LWJlaW5nLWRldGVjdGVkLWJ5LWltcG9ydGluZy1wcm9qLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZDk3ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMi1tb2R1bGVzLWZjbnRsLWFsbG93LWJlaW5nLWRldGVjdGVkLWJ5LWltcG9ydGluZy1wcm9qLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gZmI4YWFlZDNiMDQwZTU4OWNkODgwZmQ3MTRkZGE1ZWMwMDY4NzIxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplbnMgUmVoc2FjayA8c25vQG5ldGJzZC5vcmc+CitEYXRlOiBNb24sIDI0IEZlYiAyMDIwIDEyOjEwOjA2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBtb2R1bGVzOiBmY250bDogYWxsb3cgYmVpbmcgZGV0ZWN0ZWQgYnkgaW1wb3J0aW5nCisgcHJvamVjdHMKKworR05VIHByb2plY3QgYG1ha2VgIHJlbGllcyBvbiBnbnVsaWIgYnV0IHByb3ZpZGVzIHNvbWUgb3duIGNvbXBhdGliaWxpdHkKK2Z1bmN0aW9ucyAtIGluY2x1ZGluZyBhbiBgZmNudGxgLCB3aGljaCBmYWlscyBvbiBtaW5ndy4KK1RoZSBpbnRlbnNpb24gb2YgZ251bGliIGlzIHByb3ZpZGluZyB0aGVzZSBmdW5jdGlvbnMgYW5kIGJlaW5nIHdpZGVyIHRlc3RlZCwKK2J1dCBzaWxlbnRseSBpbmplY3RpbmcgYSBmdW5jdGlvbiBvcGVucyBiYXR0bGUgb2YgY29tcGF0aWJpbGl0eSBsYXllcnMuCisKK1NvIGFkZGluZyBhIGhpbnQgaW50byB0YXJnZXQgYGNvbmZpZy5oYCB0byBhbGxvdyBkZWNpZGluZyB3aGV0aGVyIHVzaW5nCithbiBvd24gY29tcGF0aWJpbGl0eSBpbXBsZW1lbnRhdGlvbiBvciBub3QuCisKK1NpZ25lZC1vZmYtYnk6IEplbnMgUmVoc2FjayA8c25vQG5ldGJzZC5vcmc+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgbTQvZ251bGliLWNvbXAubTQgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL200L2dudWxpYi1jb21wLm00IGIvbTQvZ251bGliLWNvbXAubTQKK2luZGV4IDNlZTA4MTEuLmNmNzU1NDEgMTAwNjQ0CistLS0gYS9tNC9nbnVsaWItY29tcC5tNAorKysrIGIvbTQvZ251bGliLWNvbXAubTQKK0BAIC0xNDcsNiArMTQ3LDcgQEAKKyAgIGdsX0ZVTkNfRkNOVEwKKyAgIGlmIHRlc3QgJEhBVkVfRkNOVEwgPSAwIHx8IHRlc3QgJFJFUExBQ0VfRkNOVEwgPSAxOyB0aGVuCisgICAgIEFDX0xJQk9CSihbZmNudGxdKQorKyAgICBBQ19ERUZJTkUoSEFWRV9HTlVMSUJfRkNOVEwsIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZjbnRsJyBmdW5jdGlvbiB2aWEgZ251bGliLl0pCisgICBmaQorICAgZ2xfRkNOVExfTU9EVUxFX0lORElDQVRPUihbZmNudGxdKQorICAgZ2xfRkNOVExfSApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDItdzMyLWNvbXBhdC1kaXJlbnQuYy1mb2xsb3ctaGVhZGVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDItdzMyLWNvbXBhdC1kaXJlbnQuYy1mb2xsb3ctaGVhZGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllY2M0NDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMi13MzItY29tcGF0LWRpcmVudC5jLWZvbGxvdy1oZWFkZXIucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSA0ZGQ4YjRmNDNhYTAwNzg3MDdhZDlhNzkzMmY0ZTEzN2JjNDM4M2VkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVucyBSZWhzYWNrIDxzbm9AbmV0YnNkLm9yZz4KK0RhdGU6IE1vbiwgMjQgRmViIDIwMjAgMTE6MTI6NDMgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIHczMjogY29tcGF0OiBkaXJlbnQuYzogZm9sbG93IGhlYWRlcgorCitzcmMvdzMyL2luY2x1ZGUvZGlyZW50LmggY29tcGxldGVseSBkZWxlZ2F0ZXMgdG8gbWluZ3cgZGlyZW50IGltcGxlbWVudGF0aW9uLAorZ251bGliIGRldGVjdHMgaXQgYXMgZmluZSBhbmQgY29tcGxldGVseSB1c2FibGUgLSB0cnVzdCBpbiB0aGF0LgorCitTaWduZWQtb2ZmLWJ5OiBKZW5zIFJlaHNhY2sgPHNub0BuZXRic2Qub3JnPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgKGh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz81Nzg4OCkKKworIHNyYy93MzIvY29tcGF0L2RpcmVudC5jIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdzMyL2NvbXBhdC9kaXJlbnQuYyBiL3NyYy93MzIvY29tcGF0L2RpcmVudC5jCitpbmRleCBiOGVjNjE1Li5kZTgwZjcyIDEwMDY0NAorLS0tIGEvc3JjL3czMi9jb21wYXQvZGlyZW50LmMKKysrKyBiL3NyYy93MzIvY29tcGF0L2RpcmVudC5jCitAQCAtMjMsNyArMjMsNyBAQCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSAiZGlyZW50LmgiCisgCistCisrI2lmbmRlZiBfX01JTkdXMzJfXworIERJUioKKyBvcGVuZGlyKGNvbnN0IGNoYXIqIHBEaXJOYW1lKQorIHsKK0BAIC0xOTMsMyArMTkzLDQgQEAgc2Vla2RpcihESVIqIHBEaXIsIGxvbmcgblBvc2l0aW9uKQorIAorICAgICAgICAgcmV0dXJuOworIH0KKysjZW5kaWYgIC8qICFfX01JTkdXMzJfXyAqLworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDMtcG9zaXhmY24tZmNudGwtZ251bGliLW1ha2UtZW11bGF0ZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMy1wb3NpeGZjbi1mY250bC1nbnVsaWItbWFrZS1lbXVsYXRlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDQxNGM1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDMtcG9zaXhmY24tZmNudGwtZ251bGliLW1ha2UtZW11bGF0ZWQucGF0Y2gKQEAgLTAsMCArMSw3OSBAQAorRnJvbSAzZDA3NGM4ZmNhNWZjZjNlNmI4M2QzMzc4OGYzNWE4ZjFiM2E0NGEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVucyBSZWhzYWNrIDxzbm9AbmV0YnNkLm9yZz4KK0RhdGU6IEZyaSwgMjEgRmViIDIwMjAgMTk6Mjk6NDkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIHBvc2l4ZmNuOiBmY250bDogZ251bGliID4gbWFrZS1lbXVsYXRlZAorCitSYXRlIHRoZSBmY250bCBlbXVsYXRpb24gZnJvbSBnbnVsaWIgaGlnaGVyIHRoYW4gdGhlIG93biBvbmUuCisKK1NpZ25lZC1vZmYtYnk6IEplbnMgUmVoc2FjayA8c25vQG5ldGJzZC5vcmc+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyAoaHR0cHM6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvPzU3ODg4KQorCisgc3JjL291dHB1dC5oICAgICAgICAgICAgICB8IDE5ICsrKysrKysrKysrKysrLS0tLS0KKyBzcmMvdzMyL2NvbXBhdC9wb3NpeGZjbi5jIHwgIDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvb3V0cHV0LmggYi9zcmMvb3V0cHV0LmgKK2luZGV4IGE1MDY1MDUuLmQzY2U2YjcgMTAwNjQ0CistLS0gYS9zcmMvb3V0cHV0LmgKKysrKyBiL3NyYy9vdXRwdXQuaAorQEAgLTY3LDE0ICs2NywyMSBAQCB2b2lkIG91dHB1dF9kdW1wIChzdHJ1Y3Qgb3V0cHV0ICpvdXQpOworIAorICMgaWZkZWYgV0lORE9XUzMyCisgLyogRm9yIGVtdWxhdGlvbnMgaW4gdzMyL2NvbXBhdC9wb3NpeGZjbi5jLiAgKi8KKy0jICBkZWZpbmUgRl9HRVRGRCAxCistIyAgZGVmaW5lIEZfU0VUTEtXIDIKKysjICBpZm5kZWYgRl9HRVRGRAorKyMgICBkZWZpbmUgRl9HRVRGRCAxCisrIyAgZW5kaWYKKysjICBpZm5kZWYgRl9TRVRMS1cKKysjICAgZGVmaW5lIEZfU0VUTEtXIDIKKysjICBlbmRpZgorIC8qIEltcGxlbWVudGF0aW9uIG5vdGU6IE5vbmUgb2YgdGhlIHZhbHVlcyBvZiBsX3R5cGUgYmVsb3cgY2FuIGJlIHplcm8KKyAgICAtLSB0aGV5IGFyZSBjb21wYXJlZCB3aXRoIGEgc3RhdGljIGluc3RhbmNlIG9mIHRoZSBzdHJ1Y3QsIHNvIHplcm8KKyAgICBtZWFucyB1bmtub3duL2ludmFsaWQsIHNlZSB3MzIvY29tcGF0L3Bvc2l4ZmNuLmMuICovCistIyAgZGVmaW5lIEZfV1JMQ0sgMQorLSMgIGRlZmluZSBGX1VOTENLIDIKKy0KKysjICBpZm5kZWYgRl9XUkxDSworKyMgICBkZWZpbmUgRl9XUkxDSyAxCisrIyAgZW5kaWYKKysjICBpZm5kZWYgRl9VTkxDSworKyMgICBkZWZpbmUgRl9VTkxDSyAyCisrIyAgZW5kaWYKKyBzdHJ1Y3QgZmxvY2sKKyAgIHsKKyAgICAgc2hvcnQgbF90eXBlOworQEAgLTg5LDcgKzk2LDkgQEAgc3RydWN0IGZsb2NrCisgdHlwZWRlZiBpbnRwdHJfdCBzeW5jX2hhbmRsZV90OworIAorIC8qIFB1YmxpYyBmdW5jdGlvbnMgZW11bGF0ZWQvcHJvdmlkZWQgaW4gcG9zaXhmY24uYy4gICovCisrIyAgaWZuZGVmIEhBVkVfR05VTElCX0ZDTlRMCisgaW50IGZjbnRsIChpbnRwdHJfdCBmZCwgaW50IGNtZCwgLi4uKTsKKysjICBlbmRpZgorIGludHB0cl90IGNyZWF0ZV9tdXRleCAodm9pZCk7CisgaW50IHNhbWVfc3RyZWFtIChGSUxFICpmMSwgRklMRSAqZjIpOworIAorZGlmZiAtLWdpdCBhL3NyYy93MzIvY29tcGF0L3Bvc2l4ZmNuLmMgYi9zcmMvdzMyL2NvbXBhdC9wb3NpeGZjbi5jCitpbmRleCA5NzVkZmI3Li5kMzM3YjljIDEwMDY0NAorLS0tIGEvc3JjL3czMi9jb21wYXQvcG9zaXhmY24uYworKysrIGIvc3JjL3czMi9jb21wYXQvcG9zaXhmY24uYworQEAgLTI5LDYgKzI5LDcgQEAgdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKyAjaWZuZGVmIE5PX09VVFBVVF9TWU5DCisgLyogU3VwcG9ydCBmb3IgT1VUUFVUX1NZTkMgYW5kIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eS4gICovCisgCisrI2lmbmRlZiBIQVZFX0dOVUxJQl9GQ05UTAorIC8qIEVtdWxhdGlvbiBvZiBmY250bCB0aGF0IHN1cHBvcnRzIG9ubHkgRl9HRVRGRCBhbmQgRl9TRVRMS1cuICAqLworIGludAorIGZjbnRsIChpbnRwdHJfdCBmZCwgaW50IGNtZCwgLi4uKQorQEAgLTE0Miw2ICsxNDMsNyBAQCBmY250bCAoaW50cHRyX3QgZmQsIGludCBjbWQsIC4uLikKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICAgfQorIH0KKysjZW5kaWYgLyogR05VTElCX1RFU1RfRkNOVEwgKi8KKyAKKyBzdGF0aWMgaW50cHRyX3QgbXV0ZXhfaGFuZGxlID0gLTE7CisgCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2VfNC4yLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2VfNC4yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2ZTZhMGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlXzQuMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dsb2IvQ09QWUlORy5MSUI7bWQ1PTRhNzcwYjY3ZTZiZTBmNjBkYTI0NGJlYjJkZTBmY2U0IgotcmVxdWlyZSBtYWtlLmluYwotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1ndWlsZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE1YjAxMjYxN2U3YzQ0YzBlZDQ4MjcyMTYyOTU3N2FjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2ZTI2MmJmMzYwMWI0MmQyYjFlNGVmODMxMDAyOWUxZGNmMjAwODNjNTQ0NmI0YjdhYTY3MDgxZmRmZmM1ODkiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZV80LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2VfNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlMGViNTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2VfNC4zLmJiCkBAIC0wLDAgKzEsMTggQEAKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKK3JlcXVpcmUgbWFrZS5pbmMKKworU1JDX1VSSSArPSAiXAorCWZpbGU6Ly8wMDAxLW00LWdldGxvYWRhdmcubTQtcmVzdHJpY3QtQUlYLXNwZWNpZmljLXRlc3Qtb24tQUlYLnBhdGNoIFwKKwlmaWxlOi8vMDAwMi1tb2R1bGVzLWZjbnRsLWFsbG93LWJlaW5nLWRldGVjdGVkLWJ5LWltcG9ydGluZy1wcm9qLnBhdGNoIFwKKwlmaWxlOi8vMDAwMS1zcmMtZGlyLmMtZml4LWJ1ZmZlci1vdmVyZmxvdy13YXJuaW5nLnBhdGNoIFwKKwlmaWxlOi8vMDAwMi13MzItY29tcGF0LWRpcmVudC5jLWZvbGxvdy1oZWFkZXIucGF0Y2ggXAorCWZpbGU6Ly8wMDAzLXBvc2l4ZmNuLWZjbnRsLWdudWxpYi1tYWtlLWVtdWxhdGVkLnBhdGNoIFwKKwlmaWxlOi8vMDAwMS1tYWtlaW5zdC1Eby1ub3QtdW5kZWYtUE9TSVgtb24tY2xhbmctYXJtLnBhdGNoIFwKKyIKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtZ3VpbGUiCisKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMDVmZGRlNDdjNWY3Y2E0NWNiNjk3ZTk3Mzg5NGZmNGY1ZDc5ZTEzYjc1MGVkNTdkN2I2NmQ4ZGVmYzc4ZTE5IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAxLU1ha2UtQ1BVLWZhbWlseS13YXJuaW5ncy1mYXRhbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtTWFrZS1DUFUtZmFtaWx5LXdhcm5pbmdzLWZhdGFsLnBhdGNoCmluZGV4IDljZTMxZTUuLmU2NDQ4OGIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtTWFrZS1DUFUtZmFtaWx5LXdhcm5pbmdzLWZhdGFsLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtTWFrZS1DUFUtZmFtaWx5LXdhcm5pbmdzLWZhdGFsLnBhdGNoCkBAIC0xNiwxMiArMTYsMTIgQEAKIC0tLSBhL21lc29uYnVpbGQvZW52Y29uZmlnLnB5CiArKysgYi9tZXNvbmJ1aWxkL2VudmNvbmZpZy5weQogQEAgLTE5Miw3ICsxOTIsNyBAQCBjbGFzcyBNYWNoaW5lSW5mbzoKLSAKKwogICAgICAgICAgY3B1X2ZhbWlseSA9IGxpdGVyYWxbJ2NwdV9mYW1pbHknXQogICAgICAgICAgaWYgY3B1X2ZhbWlseSBub3QgaW4ga25vd25fY3B1X2ZhbWlsaWVzOgogLSAgICAgICAgICAgIG1sb2cud2FybmluZygnVW5rbm93biBDUFUgZmFtaWx5ICVzLCBwbGVhc2UgcmVwb3J0IHRoaXMgYXQgaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb24vaXNzdWVzL25ldycgJSBjcHVfZmFtaWx5KQogKyAgICAgICAgICAgIHJhaXNlIEVudmlyb25tZW50RXhjZXB0aW9uKCdVbmtub3duIENQVSBmYW1pbHkgJXMsIHNlZSBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL01lc29uL1Vua25vd25DUFUgZm9yIGRpcmVjdGlvbnMuJyAlIGNwdV9mYW1pbHkpCi0gCisKICAgICAgICAgIGVuZGlhbiA9IGxpdGVyYWxbJ2VuZGlhbiddCiAgICAgICAgICBpZiBlbmRpYW4gbm90IGluICgnbGl0dGxlJywgJ2JpZycpOgogZGlmZiAtLWdpdCBhL21lc29uYnVpbGQvZW52aXJvbm1lbnQucHkgYi9tZXNvbmJ1aWxkL2Vudmlyb25tZW50LnB5CkBAIC0zMCwxMiArMzAsMTIgQEAKICsrKyBiL21lc29uYnVpbGQvZW52aXJvbm1lbnQucHkKIEBAIC0zNTQsOSArMzU0LDcgQEAgZGVmIGRldGVjdF9jcHVfZmFtaWx5KGNvbXBpbGVyczogQ29tcGlsZXJzRGljdCkgLT4gc3RyOgogICAgICAgICAgdHJpYWwgPSAncGFyaXNjJwotIAorCiAgICAgIGlmIHRyaWFsIG5vdCBpbiBrbm93bl9jcHVfZmFtaWxpZXM6CiAtICAgICAgICBtbG9nLndhcm5pbmcoJ1Vua25vd24gQ1BVIGZhbWlseSB7IXJ9LCBwbGVhc2UgcmVwb3J0IHRoaXMgYXQgJwogLSAgICAgICAgICAgICAgICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9pc3N1ZXMvbmV3IHdpdGggdGhlICcKIC0gICAgICAgICAgICAgICAgICAgICAnb3V0cHV0IG9mIGB1bmFtZSAtYWAgYW5kIGBjYXQgL3Byb2MvY3B1aW5mb2AnLmZvcm1hdCh0cmlhbCkpCiArICAgICAgICByYWlzZSBFbnZpcm9ubWVudEV4Y2VwdGlvbignVW5rbm93biBDUFUgZmFtaWx5ICVzLCBzZWUgaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9NZXNvbi9Vbmtub3duQ1BVIGZvciBkaXJlY3Rpb25zLicgJSB0cmlhbCkKLSAKKwogICAgICByZXR1cm4gdHJpYWwKLSAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMi1TdXBwb3J0LWJ1aWxkaW5nLWFsbGFyY2gtcmVjaXBlcy1hZ2Fpbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDItU3VwcG9ydC1idWlsZGluZy1hbGxhcmNoLXJlY2lwZXMtYWdhaW4ucGF0Y2gKaW5kZXggY2UxODY2MC4uZDJjM2Y4YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMi1TdXBwb3J0LWJ1aWxkaW5nLWFsbGFyY2gtcmVjaXBlcy1hZ2Fpbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAyLVN1cHBvcnQtYnVpbGRpbmctYWxsYXJjaC1yZWNpcGVzLWFnYWluLnBhdGNoCkBAIC0xNyw4ICsxNyw4IEBACiAtLS0gYS9tZXNvbmJ1aWxkL2VudmNvbmZpZy5weQogKysrIGIvbWVzb25idWlsZC9lbnZjb25maWcucHkKIEBAIC0zNiw2ICszNiw3IEBAIF9UID0gdHlwaW5nLlR5cGVWYXIoJ19UJykKLSAKLSAKKworCiAga25vd25fY3B1X2ZhbWlsaWVzID0gKAogKyAgICAnYWxsYXJjaCcsCiAgICAgICdhYXJjaDY0JywKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDMtbmF0aXZlX2JpbmRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDMtbmF0aXZlX2JpbmRpci5wYXRjaAppbmRleCBkYzgyMmZiLi5hNWJhY2EwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAzLW5hdGl2ZV9iaW5kaXIucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMy1uYXRpdmVfYmluZGlyLnBhdGNoCkBAIC0yOCwyNSArMjgsMjUgQEAKIEBAIC0xODQsNyArMTg0LDcgQEAgY2xhc3MgRGVwZW5kZW5jeToKICAgICAgZGVmIGdldF9leGVfYXJncyhzZWxmLCBjb21waWxlcik6CiAgICAgICAgICByZXR1cm4gW10KLSAKKwogLSAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lLCBrd2FyZ3MpOgogKyAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lLCBrd2FyZ3MsIHVzZV9uYXRpdmU9RmFsc2UpOgogICAgICAgICAgcmFpc2UgRGVwZW5kZW5jeUV4Y2VwdGlvbigneyFyfSBpcyBub3QgYSBwa2djb25maWcgZGVwZW5kZW5jeScuZm9ybWF0KHNlbGYubmFtZSkpCi0gCisKICAgICAgZGVmIGdldF9jb25maWd0b29sX3ZhcmlhYmxlKHNlbGYsIHZhcmlhYmxlX25hbWUpOgogQEAgLTI0Nyw3ICsyNDcsNyBAQCBjbGFzcyBJbnRlcm5hbERlcGVuZGVuY3koRGVwZW5kZW5jeSk6CiAgICAgICAgICBzZWxmLnNvdXJjZXMgPSBzb3VyY2VzCiAgICAgICAgICBzZWxmLmV4dF9kZXBzID0gZXh0X2RlcHMKLSAKKwogLSAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lLCBrd2FyZ3MpOgogKyAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lLCBrd2FyZ3MsIHVzZV9uYXRpdmU9RmFsc2UpOgogICAgICAgICAgcmFpc2UgRGVwZW5kZW5jeUV4Y2VwdGlvbignTWV0aG9kICJnZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCkiIGlzICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZm9yIGFuIGludGVybmFsIGRlcGVuZGVuY3knKQotIAorCiBAQCAtNjczLDE1ICs2NzMsMTggQEAgY2xhc3MgUGtnQ29uZmlnRGVwZW5kZW5jeShFeHRlcm5hbERlcGVuZGVuY3kpOgogICAgICAgICAgcmV0dXJuIHMuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLm5hbWUsIHNlbGYuaXNfZm91bmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJzaW9uX3JlcXMpCi0gCisKIC0gICAgZGVmIF9jYWxsX3BrZ2Jpbl9yZWFsKHNlbGYsIGFyZ3MsIGVudik6CiAtICAgICAgICBjbWQgPSBzZWxmLnBrZ2Jpbi5nZXRfY29tbWFuZCgpICsgYXJncwogKyAgICBkZWYgX2NhbGxfcGtnYmluX3JlYWwoc2VsZiwgYXJncywgZW52LCB1c2VfbmF0aXZlPUZhbHNlKToKQEAgLTU5LDcgKzU5LDcgQEAKICAgICAgICAgIGNhbGwgPSAnICcuam9pbihjbWQpCiAgICAgICAgICBtbG9nLmRlYnVnKCJDYWxsZWQgYHt9YCAtPiB7fVxue30iLmZvcm1hdChjYWxsLCByYywgb3V0KSkKICAgICAgICAgIHJldHVybiByYywgb3V0LCBlcnIKLSAKKwogLSAgICBkZWYgX2NhbGxfcGtnYmluKHNlbGYsIGFyZ3MsIGVudj1Ob25lKToKICsgICAgZGVmIF9jYWxsX3BrZ2JpbihzZWxmLCBhcmdzLCBlbnY9Tm9uZSwgdXNlX25hdGl2ZT1GYWxzZSk6CiAgICAgICAgICAjIEFsd2F5cyBjb3B5IHRoZSBlbnZpcm9ubWVudCBzaW5jZSB3ZSdyZSBnb2luZyB0byBtb2RpZnkgaXQKQEAgLTcyLDIxICs3MiwyMSBAQAogLSAgICAgICAgICAgIGNhY2hlWyhzZWxmLnBrZ2JpbiwgdGFyZ3MsIGZlbnYpXSA9IHNlbGYuX2NhbGxfcGtnYmluX3JlYWwoYXJncywgZW52KQogKyAgICAgICAgICAgIGNhY2hlWyhzZWxmLnBrZ2JpbiwgdGFyZ3MsIGZlbnYpXSA9IHNlbGYuX2NhbGxfcGtnYmluX3JlYWwoYXJncywgZW52LCB1c2VfbmF0aXZlKQogICAgICAgICAgcmV0dXJuIGNhY2hlWyhzZWxmLnBrZ2JpbiwgdGFyZ3MsIGZlbnYpXQotIAorCiAgICAgIGRlZiBfY29udmVydF9taW5nd19wYXRocyhzZWxmLCBhcmdzOiBULkxpc3Rbc3RyXSkgLT4gVC5MaXN0W3N0cl06CiBAQCAtOTA3LDcgKzkxMCw3IEBAIGNsYXNzIFBrZ0NvbmZpZ0RlcGVuZGVuY3koRXh0ZXJuYWxEZXBlbmRlbmN5KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLm5hbWUsIG91dF9yYXcpKQogICAgICAgICAgc2VsZi5saW5rX2FyZ3MsIHNlbGYucmF3X2xpbmtfYXJncyA9IHNlbGYuX3NlYXJjaF9saWJzKG91dCwgb3V0X3JhdykKLSAKKwogLSAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lLCBrd2FyZ3MpOgogKyAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lLCBrd2FyZ3MsIHVzZV9uYXRpdmU9RmFsc2UpOgogICAgICAgICAgb3B0aW9ucyA9IFsnLS12YXJpYWJsZT0nICsgdmFyaWFibGVfbmFtZSwgc2VsZi5uYW1lXQotIAorCiAgICAgICAgICBpZiAnZGVmaW5lX3ZhcmlhYmxlJyBpbiBrd2FyZ3M6CiBAQCAtOTIwLDcgKzkyMyw3IEBAIGNsYXNzIFBrZ0NvbmZpZ0RlcGVuZGVuY3koRXh0ZXJuYWxEZXBlbmRlbmN5KToKLSAKKwogICAgICAgICAgICAgIG9wdGlvbnMgPSBbJy0tZGVmaW5lLXZhcmlhYmxlPScgKyAnPScuam9pbihkZWZpbml0aW9uKV0gKyBvcHRpb25zCi0gCisKIC0gICAgICAgIHJldCwgb3V0LCBlcnIgPSBzZWxmLl9jYWxsX3BrZ2JpbihvcHRpb25zKQogKyAgICAgICAgcmV0LCBvdXQsIGVyciA9IHNlbGYuX2NhbGxfcGtnYmluKG9wdGlvbnMsIHVzZV9uYXRpdmU9dXNlX25hdGl2ZSkKICAgICAgICAgIHZhcmlhYmxlID0gJycKQEAgLTEwNCw3ICsxMDQsNyBAQAogKyAgICAgICAgICAgIHByZWZpeCA9IGNvcmUuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnZXhlY19wcmVmaXgnLCB7fSwgdXNlX25hdGl2ZT1UcnVlKQogICAgICAgICAgICAgIGlmIHByZWZpeDoKICAgICAgICAgICAgICAgICAgc2VsZi5iaW5kaXIgPSBvcy5wYXRoLmpvaW4ocHJlZml4LCAnYmluJykKLSAKKwogQEAgLTUwOCw3ICs1MDgsNyBAQCBjbGFzcyBRdDREZXBlbmRlbmN5KFF0QmFzZURlcGVuZGVuY3kpOgogICAgICAgICAgYXBwbGljYXRpb25zID0gWydtb2MnLCAndWljJywgJ3JjYycsICdsdXBkYXRlJywgJ2xyZWxlYXNlJ10KICAgICAgICAgIGZvciBhcHBsaWNhdGlvbiBpbiBhcHBsaWNhdGlvbnM6CkBAIC0xMTMsMTMgKzExMywxMyBAQAogKyAgICAgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5kaXJuYW1lKGNvcmUuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnJXNfbG9jYXRpb24nICUgYXBwbGljYXRpb24sIHt9LCB1c2VfbmF0aXZlPVRydWUpKQogICAgICAgICAgICAgIGV4Y2VwdCBNZXNvbkV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgcGFzcwotIAorCiBAQCAtNTE4LDcgKzUxOCw3IEBAIGNsYXNzIFF0NURlcGVuZGVuY3koUXRCYXNlRGVwZW5kZW5jeSk6CiAgICAgICAgICBRdEJhc2VEZXBlbmRlbmN5Ll9faW5pdF9fKHNlbGYsICdxdDUnLCBlbnYsIGt3YXJncykKLSAKKwogICAgICBkZWYgZ2V0X3BrZ2NvbmZpZ19ob3N0X2JpbnMoc2VsZiwgY29yZSk6CiAtICAgICAgICByZXR1cm4gY29yZS5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdob3N0X2JpbnMnLCB7fSkKICsgICAgICAgIHJldHVybiBjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2hvc3RfYmlucycsIHt9LCB1c2VfbmF0aXZlPVRydWUpCi0gCisKICAgICAgZGVmIGdldF9wcml2YXRlX2luY2x1ZGVzKHNlbGYsIG1vZF9pbmNfZGlyLCBtb2R1bGUpOgogICAgICAgICAgcmV0dXJuIF9xdF9nZXRfcHJpdmF0ZV9pbmNsdWRlcyhtb2RfaW5jX2RpciwgbW9kdWxlLCBzZWxmLnZlcnNpb24pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tbWMvbW1jLXV0aWxzX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21tYy9tbWMtdXRpbHNfZ2l0LmJiCmluZGV4IDBjNDAxYzguLjVmZDFjNWMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21tYy9tbWMtdXRpbHNfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21tYy9tbWMtdXRpbHNfZ2l0LmJiCkBAIC00LDcgKzQsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbW1jLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9ZmFlMzI3OTJlMjBmNGQyN2FkZTFjNWE3NjJkMTZiN2QiCiAKIFNSQ0JSQU5DSCA/PSAibWFzdGVyIgotU1JDUkVWID0gImFlZjkxM2UzMWI2NTk0NjJmZTZiOTMyMGQyNDE2NzZjYmE5N2Y2N2IiCitTUkNSRVYgPSAiNzNkNmM1OWFmOGQxYmNlZGY1ZGU0YWExZjVkNWI3Zjc2NWY1NDVmNSIKIAogUFYgPSAiMC4xK2dpdCR7U1JDUFZ9IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc20vMDAwMS1zdGRsaWItQWRkLXN0cmxjYXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc20vMDAwMS1zdGRsaWItQWRkLXN0cmxjYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk0ZmQzMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbS8wMDAxLXN0ZGxpYi1BZGQtc3RybGNhdC5wYXRjaApAQCAtMCwwICsxLDExNyBAQAorRnJvbSA4YTIwNDE3MTAwNGZhMGQ3ZDIxMzg5NTMwYzc0NGQyMTVlOTllZmIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgorRGF0ZTogVHVlLCAxOSBOb3YgMjAxOSAxMjo0NzozMCAtMDYwMAorU3ViamVjdDogW1BBVENIIDEvMl0gc3RkbGliOiBBZGQgc3RybGNhdAorCitBZGRzIHN0cmxjYXQgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2FmZWx5IGNvbmNhdGVuYXRlIHN0cmluZ3MKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEubmFzbS51cy9zaG93X2J1Zy5jZ2k/aWQ9MzM5MjYzNV0KK1NpZ25lZC1vZmYtYnk6IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluICAgICAgICB8ICAyICstCisgY29uZmlndXJlLmFjICAgICAgIHwgIDIgKysKKyBpbmNsdWRlL2NvbXBpbGVyLmggfCAgNCArKysrCisgc3RkbGliL3N0cmxjYXQuYyAgIHwgNDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDQgZmlsZXMgY2hhbmdlZCwgNTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBzdGRsaWIvc3RybGNhdC5jCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCAzMmVmM2Q5MS4uZmY3ZWI0NDcgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC05Myw3ICs5Myw3IEBAIE5BU00gPQlhc20vbmFzbS4kKE8pCisgTkRJU0FTTSA9IGRpc2FzbS9uZGlzYXNtLiQoTykKKyAKKyBMSUJPQkogPSBzdGRsaWIvc25wcmludGYuJChPKSBzdGRsaWIvdnNucHJpbnRmLiQoTykgc3RkbGliL3N0cmxjcHkuJChPKSBcCistCXN0ZGxpYi9zdHJubGVuLiQoTykgc3RkbGliL3N0cnJjaHJudWwuJChPKSBcCisrCXN0ZGxpYi9zdHJubGVuLiQoTykgc3RkbGliL3N0cnJjaHJudWwuJChPKSBzdGRsaWIvc3RybGNhdC4kKE8pIFwKKyAJXAorIAluYXNtbGliL3Zlci4kKE8pIFwKKyAJbmFzbWxpYi9jcmM2NC4kKE8pIG5hc21saWIvbWFsbG9jLiQoTykgbmFzbWxpYi9lcnJmaWxlLiQoTykgXAorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMzhiM2I1OTYuLmI0ZTg4Nzc4IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xNTIsNiArMTUyLDcgQEAgQUNfQ0hFQ0tfRlVOQ1MoW3ZzbnByaW50ZiBfdnNucHJpbnRmXSkKKyBBQ19DSEVDS19GVU5DUyhbc25wcmludGYgX3NucHJpbnRmXSkKKyBBQ19DSEVDS19GVU5DUyhbc3RybGNweV0pCisgQUNfQ0hFQ0tfRlVOQ1MoW3N0cnJjaHJudWxdKQorK0FDX0NIRUNLX0ZVTkNTKFtzdHJsY2F0XSkKKyAKKyBkbmwgVGhlc2UgdHlwZXMgYXJlIFBPU0lYLXNwZWNpZmljLCBhbmQgV2luZG93cyBkb2VzIGl0IGRpZmZlcmVudGx5Li4uCisgQUNfQ0hFQ0tfVFlQRVMoW3N0cnVjdCBfc3RhdGk2NF0pCitAQCAtMTcwLDYgKzE3MSw3IEBAIEFDX0NIRUNLX0RFQ0xTKHN0cnNlcCkKKyBBQ19DSEVDS19ERUNMUyhzdHJsY3B5KQorIEFDX0NIRUNLX0RFQ0xTKHN0cm5sZW4pCisgQUNfQ0hFQ0tfREVDTFMoc3RycmNocm51bCkKKytBQ19DSEVDS19ERUNMUyhzdHJsY2F0KQorIAorIGRubCBDaGVjayBmb3IgbWlzc2luZyB0eXBlcworIEFDX1RZUEVfVUlOVFBUUl9UCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb21waWxlci5oIGIvaW5jbHVkZS9jb21waWxlci5oCitpbmRleCA0MTc4Yzk4ZS4uODE1M2QyOTcgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2NvbXBpbGVyLmgKKysrKyBiL2luY2x1ZGUvY29tcGlsZXIuaAorQEAgLTE1OSw2ICsxNTksMTAgQEAgc2l6ZV90IHN0cmxjcHkoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CisgY2hhciAqc3RycmNocm51bChjb25zdCBjaGFyICosIGludCk7CisgI2VuZGlmCisgCisrI2lmICFkZWZpbmVkKEhBVkVfU1RSTENBVCkgfHwgIUhBVkVfREVDTF9TVFJMQ0FUCisrc2l6ZV90IHN0cmxjYXQoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CisrI2VuZGlmCisrCisgI2lmbmRlZiBfX2NwbHVzcGx1cwkJLyogQysrIGhhcyBmYWxzZSwgdHJ1ZSwgYm9vbCBhcyBrZXl3b3JkcyAqLworICMgaWZkZWYgSEFWRV9TVERCT09MX0gKKyAjICBpbmNsdWRlIDxzdGRib29sLmg+CitkaWZmIC0tZ2l0IGEvc3RkbGliL3N0cmxjYXQuYyBiL3N0ZGxpYi9zdHJsY2F0LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uNzA4NGQ0NjAKKy0tLSAvZGV2L251bGwKKysrKyBiL3N0ZGxpYi9zdHJsY2F0LmMKK0BAIC0wLDAgKzEsNDMgQEAKKysvKgorKyAqIENvcHlyaWdodCAoYykgMjAxOSBHYXJtaW4gTHRkLiBvciBpdHMgc3Vic2lkaWFyaWVzCisrICoKKysgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKKysgKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlCisrICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy4KKysgKgorKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUworKyAqIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKysgKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUgorKyAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKKysgKiBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4KKysgKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRgorKyAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCisrICovCisrCisrI2luY2x1ZGUgImNvbXBpbGVyLmgiCisrCisrLyoKKysgKiBDb25jYXRlbmF0ZSBzcmMgc3RyaW5nIHRvIGRlc3Qgb2Ygc2l6ZSBzaXplLiBUaGUgZGVzdGluYXRpb24gYnVmZmVyIHdpbGwKKysgKiBoYXZlIG5vIG1vcmUgdGhhbiBzaXplLTEgY2hhcmFjdGVyIHdoZW4gdGhlIG9wZXJhdGlvbiBmaW5pc2hlcy4gQWx3YXlzIE5VTAorKyAqIHRlcm1pbmF0ZXMsIHVubGVzcyBzaXplID09IDAgb3IgZGVzdCBoYXMgbm8gTlVMIHRlcm1pbmF0b3IuIFJldHVybnMKKysgKiBzdHJsZW4oaW5pdGlhbCBkZXN0KSArIHN0cmxlbihzcmMpOyBpZiByZXR2YWwgPj0gc2l6ZSwgdHJ1bmNhdGlvbiBvY2N1cnJlZC4KKysgKi8KKysjaWZuZGVmIEhBVkVfU1RSTENBVAorKworK3NpemVfdCBzdHJsY2F0KGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNpemUpCisreworKyAgICBzaXplX3QgbjsKKysKKysgICAgLyogZmluZCB0aGUgTlVMTCB0ZXJtaW5hdG9yIGluIGRlc3QgKi8KKysgICAgZm9yIChuID0gMDsgaSA8IHNpemUgJiYgZGVzdFtuXSAhPSAnXDAnOyBuKyspCisrICAgICAgICA7CisrCisrICAgIC8qIGRlc3RpbmF0aW9uIHdhcyBub3QgTlVMTCB0ZXJtaW5hdGVkLiBSZXR1cm4gdGhlIGluaXRpYWwgc2l6ZSAqLworKyAgICBpZiAobiA9PSBzaXplKQorKyAgICAgICAgcmV0dXJuIHNpemU7CisrCisrICAgIHJldHVybiBzdHJsY3B5KCZkZXN0W25dLCBzcmMsIHNpemUgLSBuKSArIG47CisrfQorKworKyNlbmRpZgorKworLS0gCisyLjIzLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtLzAwMDItQWRkLWRlYnVnLXByZWZpeC1tYXAtb3B0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtLzAwMDItQWRkLWRlYnVnLXByZWZpeC1tYXAtb3B0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiZmFlMmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc20vMDAwMi1BZGQtZGVidWctcHJlZml4LW1hcC1vcHRpb24ucGF0Y2gKQEAgLTAsMCArMSwzMjUgQEAKK0Zyb20gZmE2NzdjMWNhZjZiODE5Mjk3MTkyMGNmNWMxYWE4Y2IzM2M3NDYwNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTkgTm92IDIwMTkgMTM6MTI6MTcgLTA2MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIEFkZCAtLWRlYnVnLXByZWZpeC1tYXAgb3B0aW9uCisKK0FkZHMgYW4gb3B0aW9uIHRvIHJlbWFwIGZpbGUgcHJlZml4ZXMgaW4gb3V0cHV0IG9iamVjdCBmaWxlcy4gVGhpcyBpcworYW5hbG9nb3VzIHRvIHRoZSAiLWZkZWJ1Zy1wcmVmaXgtbWFwIiBvcHRpb24gaW4gR0NDLCBhbmQgYWxsb3dzIGZpbGVzIHRvCitiZSBidWlsdCBpbiBhIHJlcHJvZHVjaWJsZSBtYW5uZXIgcmVnYXJkbGVzcyBvZiB0aGUgYnVpbGQgZGlyZWN0b3J5LgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5uYXNtLnVzL3Nob3dfYnVnLmNnaT9pZD0zMzkyNjM1XQorU2lnbmVkLW9mZi1ieTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgorLS0tCisgYXNtL25hc20uYyAgICAgICAgICAgICAgfCAyOCArKysrKysrKysrKysrKysrKysrKysrKysrKy0tCisgaW5jbHVkZS9uYXNtbGliLmggICAgICAgfCAgOSArKysrKysrKysKKyBuYXNtLnR4dCAgICAgICAgICAgICAgICB8ICA0ICsrKysKKyBuYXNtbGliL2ZpbGVuYW1lLmMgICAgICB8IDIwICsrKysrKysrKysrKysrKysrKysrCisgb3V0cHV0L291dGFzODYuYyAgICAgICAgfCAgNCArKystCisgb3V0cHV0L291dGNvZmYuYyAgICAgICAgfCAgNCArKy0tCisgb3V0cHV0L291dGVsZi5jICAgICAgICAgfCAgOCArKysrLS0tLQorIG91dHB1dC9vdXRpZWVlLmMgICAgICAgIHwgIDIgKy0KKyBvdXRwdXQvb3V0b2JqLmMgICAgICAgICB8ICAyICstCisgc3RkbGliL3N0cmxjYXQuYyAgICAgICAgfCAgMiArLQorIHRlc3QvZWxmZGVidWdwcmVmaXguYXNtIHwgIDYgKysrKysrCisgdGVzdC9wZXJmb3JtdGVzdC5wbCAgICAgfCAxMiArKysrKysrKysrLS0KKyAxMiBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC9lbGZkZWJ1Z3ByZWZpeC5hc20KKworZGlmZiAtLWdpdCBhL2FzbS9uYXNtLmMgYi9hc20vbmFzbS5jCitpbmRleCAxYzVhNWZjNS4uNWQ0NTEwM2MgMTAwNjQ0CistLS0gYS9hc20vbmFzbS5jCisrKysgYi9hc20vbmFzbS5jCitAQCAtODQxLDcgKzg0MSw4IEBAIGVudW0gdGV4dF9vcHRpb25zIHsKKyAgICAgT1BUX0JFRk9SRSwKKyAgICAgT1BUX0xJTUlULAorICAgICBPUFRfS0VFUF9BTEwsCistICAgIE9QVF9OT19MSU5FCisrICAgIE9QVF9OT19MSU5FLAorKyAgICBPUFRfREVCVUdfUFJFRklYX01BUAorIH07Cisgc3RydWN0IHRleHRhcmdzIHsKKyAgICAgY29uc3QgY2hhciAqbGFiZWw7CitAQCAtODY2LDYgKzg2Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGV4dGFyZ3MgdGV4dG9wdHNbXSA9IHsKKyAgICAgeyJsaW1pdC0iLCAgIE9QVF9MSU1JVCwgICB0cnVlLCAwfSwKKyAgICAgeyJrZWVwLWFsbCIsIE9QVF9LRUVQX0FMTCwgZmFsc2UsIDB9LAorICAgICB7Im5vLWxpbmUiLCAgT1BUX05PX0xJTkUsIGZhbHNlLCAwfSwKKysgICAgeyJkZWJ1Zy1wcmVmaXgtbWFwIiwgT1BUX0RFQlVHX1BSRUZJWF9NQVAsIHRydWUsIDB9LAorICAgICB7TlVMTCwgT1BUX0JPR1VTLCBmYWxzZSwgMH0KKyB9OworIAorQEAgLTEyMTcsNiArMTIxOSwyNiBAQCBzdGF0aWMgYm9vbCBwcm9jZXNzX2FyZyhjaGFyICpwLCBjaGFyICpxLCBpbnQgcGFzcykKKyAgICAgICAgICAgICAgICAgY2FzZSBPUFRfTk9fTElORToKKyAgICAgICAgICAgICAgICAgICAgIHBwX25vbGluZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICAgICAgY2FzZSBPUFRfREVCVUdfUFJFRklYX01BUDogeworKyAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRlYnVnX3ByZWZpeF9saXN0ICpkOworKyAgICAgICAgICAgICAgICAgICAgY2hhciAqYzsKKysgICAgICAgICAgICAgICAgICAgIGMgPSBzdHJjaHIocGFyYW0sICc9Jyk7CisrCisrICAgICAgICAgICAgICAgICAgICBpZiAoIWMpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBuYXNtX2Vycm9yKEVSUl9OT05GQVRBTCB8IEVSUl9OT0ZJTEUgfCBFUlJfVVNBR0UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3B0aW9uIGAtLSVzJyBtdXN0IGJlIG9mIHRoZSBmb3JtIGBCQVNFPURFU1QnIiwgcCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgICAgICAgICAqYyA9ICdcMCc7CisrICAgICAgICAgICAgICAgICAgICBkID0gbmFzbV9tYWxsb2Moc2l6ZW9mKCpkKSk7CisrICAgICAgICAgICAgICAgICAgICBkLT5uZXh0ID0gZGVidWdfcHJlZml4ZXM7CisrICAgICAgICAgICAgICAgICAgICBkLT5iYXNlID0gbmFzbV9zdHJkdXAocGFyYW0pOworKyAgICAgICAgICAgICAgICAgICAgZC0+ZGVzdCA9IG5hc21fc3RyZHVwKGMgKyAxKTsKKysgICAgICAgICAgICAgICAgICAgIGRlYnVnX3ByZWZpeGVzID0gZDsKKysgICAgICAgICAgICAgICAgICAgICpjID0gJz0nOworKyAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIGNhc2UgT1BUX0hFTFA6CisgICAgICAgICAgICAgICAgICAgICBoZWxwKDApOworICAgICAgICAgICAgICAgICAgICAgZXhpdCgwKTsKK0BAIC0yMDEwLDcgKzIwMzIsOSBAQCBzdGF0aWMgdm9pZCBoZWxwKGNvbnN0IGNoYXIgeG9wdCkKKyAgICAgICAgICAiICAgLS1scG9zdGZpeCBzdHIgYXBwZW5kIHRoZSBnaXZlbiBzdHJpbmcgdG8gYWxsIG90aGVyIHN5bWJvbHNcbiIKKyAgICAgICAgICAiICAgLS1rZWVwLWFsbCAgICAgb3V0cHV0IGZpbGVzIHdpbGwgbm90IGJlIHJlbW92ZWQgZXZlbiBpZiBhbiBlcnJvciBoYXBwZW5zXG4iCisgICAgICAgICAgIiAgIC0tbm8tbGluZSAgICAgIGlnbm9yZSAlJWxpbmUgZGlyZWN0aXZlcyBpbiBpbnB1dFxuIgorLSAgICAgICAgICIgICAtLWxpbWl0LVggdmFsICBzZXQgZXhlY3V0aW9uIGxpbWl0IFhcbiIpOworKyAgICAgICAgICIgICAtLWxpbWl0LVggdmFsICBzZXQgZXhlY3V0aW9uIGxpbWl0IFhcbiIKKysgICAgICAgICAiICAgLS1kZWJ1Zy1wcmVmaXgtbWFwIGJhc2U9ZGVzdFxuIgorKyAgICAgICAgICIgICAgICAgICAgICAgICAgICByZW1hcCBwYXRocyBzdGFydGluZyB3aXRoICdiYXNlJyB0byAnZGVzdCcgaW4gb3V0cHV0IGZpbGVzXG4iKTsKKyAKKyAgICAgZm9yIChpID0gMDsgaSA8PSBMSU1JVF9NQVg7IGkrKykgeworICAgICAgICAgcHJpbnRmKCIgICAgICAgICAgICAgICAgICAgICAlLTE1cyAlcyAoZGVmYXVsdCAiLAorZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmFzbWxpYi5oIGIvaW5jbHVkZS9uYXNtbGliLmgKK2luZGV4IGU1N2QwZTZkLi5jZjkyMTU0NyAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvbmFzbWxpYi5oCisrKysgYi9pbmNsdWRlL25hc21saWIuaAorQEAgLTE5NSwxMCArMTk1LDE5IEBAIGludDY0X3QgcmVhZHN0cm51bShjaGFyICpzdHIsIGludCBsZW5ndGgsIGJvb2wgKndhcm4pOworICAqLworIGludDMyX3Qgc2VnX2FsbG9jKHZvaWQpOworIAorK3N0cnVjdCBkZWJ1Z19wcmVmaXhfbGlzdCB7CisrICAgIHN0cnVjdCBkZWJ1Z19wcmVmaXhfbGlzdCAqbmV4dDsKKysgICAgY2hhciAqYmFzZTsKKysgICAgY2hhciAqZGVzdDsKKyt9OworKworK2V4dGVybiBzdHJ1Y3QgZGVidWdfcHJlZml4X2xpc3QgKmRlYnVnX3ByZWZpeGVzOworKworIC8qCisgICogQWRkL3JlcGxhY2Ugb3IgcmVtb3ZlIGFuIGV4dGVuc2lvbiB0byB0aGUgZW5kIG9mIGEgZmlsZW5hbWUKKyAgKi8KKyBjb25zdCBjaGFyICpmaWxlbmFtZV9zZXRfZXh0ZW5zaW9uKGNvbnN0IGNoYXIgKmlubmFtZSwgY29uc3QgY2hhciAqZXh0ZW5zaW9uKTsKKytjaGFyICpmaWxlbmFtZV9kZWJ1Z19yZW1hcChjaGFyICpkZXN0LCBjaGFyIGNvbnN0ICppbm5hbWUsIHNpemVfdCBsZW4pOworIAorIC8qCisgICogVXRpbGl0eSBtYWNyb3MuLi4KK2RpZmYgLS1naXQgYS9uYXNtLnR4dCBiL25hc20udHh0CitpbmRleCBhMjgyMDJmOS4uNDQzYzA2YjIgMTAwNjQ0CistLS0gYS9uYXNtLnR4dAorKysrIGIvbmFzbS50eHQKK0BAIC0xNDcsNiArMTQ3LDEwIEBAIE9QVElPTlMKKyAJUHJlcGVuZCBvciBhcHBlbmQgKHJlc3BlY3RpdmVseSkgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFsbCBnbG9iYWwgb3IKKyAJZXh0ZXJuIHZhcmlhYmxlcy4KKyAKKystLWRlYnVnLXByZWZpeC1tYXAgJ0JBU0U9REVTVCc6OgorKyAgICBNYXAgZmlsZSBuYW1lcyBiZWdpbm5pbmcgd2l0aCAnQkFTRScgdG8gJ0RFU1QnIHdoZW4gZW5jb2RpbmcgdGhlbSBpbgorKyAgICBvdXRwdXQgb2JqZWN0IGZpbGVzLgorKworIFNZTlRBWAorIC0tLS0tLQorIFRoaXMgbWFuIHBhZ2UgZG9lcyBub3QgZnVsbHkgZGVzY3JpYmUgdGhlIHN5bnRheCBvZiAqbmFzbSoncyBhc3NlbWJseSBsYW5ndWFnZSwKK2RpZmYgLS1naXQgYS9uYXNtbGliL2ZpbGVuYW1lLmMgYi9uYXNtbGliL2ZpbGVuYW1lLmMKK2luZGV4IDE3MmFlMGJjLi5mZGEyYmU0MSAxMDA2NDQKKy0tLSBhL25hc21saWIvZmlsZW5hbWUuYworKysrIGIvbmFzbWxpYi9maWxlbmFtZS5jCitAQCAtMzksNiArMzksOCBAQAorICNpbmNsdWRlICJuYXNtbGliLmgiCisgI2luY2x1ZGUgImVycm9yLmgiCisgCisrc3RydWN0IGRlYnVnX3ByZWZpeF9saXN0ICpkZWJ1Z19wcmVmaXhlcyA9IE5VTEw7CisrCisgLyoKKyAgKiBBZGQvbW9kaWZ5IGEgZmlsZW5hbWUgZXh0ZW5zaW9uLCBhc3N1bWVkIHRvIGJlIGEgcGVyaW9kLWRlbGltaXRlZAorICAqIGZpZWxkIGF0IHRoZSB2ZXJ5IGVuZCBvZiB0aGUgZmlsZW5hbWUuICBSZXR1cm5zIGEgbmV3bHkgYWxsb2NhdGVkCitAQCAtNjEsMyArNjMsMjEgQEAgY29uc3QgY2hhciAqZmlsZW5hbWVfc2V0X2V4dGVuc2lvbihjb25zdCBjaGFyICppbm5hbWUsIGNvbnN0IGNoYXIgKmV4dGVuc2lvbikKKyAKKyAgICAgcmV0dXJuIHA7CisgfQorKworK2NoYXIgKmZpbGVuYW1lX2RlYnVnX3JlbWFwKGNoYXIgKmRlc3QsIGNoYXIgY29uc3QgKmluLCBzaXplX3QgbGVuKQorK3sKKysgICAgc3RydWN0IGRlYnVnX3ByZWZpeF9saXN0ICpkOworKyAgICBzaXplX3QgbjsKKysKKysgICAgZm9yIChkID0gZGVidWdfcHJlZml4ZXM7IGQgIT0gTlVMTDsgZCA9IGQtPm5leHQpIHsKKysgICAgICAgIG4gPSBzdHJsZW4oZC0+YmFzZSk7CisrICAgICAgICBpZiAoc3RybmNtcChpbiwgZC0+YmFzZSwgbikgPT0gMCkgeworKyAgICAgICAgICAgIHN0cmxjcHkoZGVzdCwgZC0+ZGVzdCwgbGVuKTsKKysgICAgICAgICAgICBzdHJsY2F0KGRlc3QsICZpbltuXSwgbGVuKTsKKysgICAgICAgICAgICByZXR1cm4gZGVzdDsKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICBzdHJsY3B5KGRlc3QsIGluLCBsZW4pOworKyAgICByZXR1cm4gZGVzdDsKKyt9CitkaWZmIC0tZ2l0IGEvb3V0cHV0L291dGFzODYuYyBiL291dHB1dC9vdXRhczg2LmMKK2luZGV4IDNmOTg2N2I5Li5kNWY0Zjk2NiAxMDA2NDQKKy0tLSBhL291dHB1dC9vdXRhczg2LmMKKysrKyBiL291dHB1dC9vdXRhczg2LmMKK0BAIC0xMTMsNiArMTEzLDggQEAgc3RhdGljIHZvaWQgYXM4Nl9zZWN0X3dyaXRlKHN0cnVjdCBTZWN0aW9uICosIGNvbnN0IHVpbnQ4X3QgKiwKKyAKKyBzdGF0aWMgdm9pZCBhczg2X2luaXQodm9pZCkKKyB7CisrICAgIGNoYXIgZmlsZW5hbWVbRklMRU5BTUVfTUFYXTsKKysKKyAgICAgc3RleHQuZGF0YSA9IHNhYV9pbml0KDFMKTsKKyAgICAgc3RleHQuZGF0YWxlbiA9IDBMOworICAgICBzdGV4dC5oZWFkID0gc3RleHQubGFzdCA9IE5VTEw7CitAQCAtMTM0LDcgKzEzNiw3IEBAIHN0YXRpYyB2b2lkIGFzODZfaW5pdCh2b2lkKQorICAgICBzdHJzbGVuID0gMDsKKyAKKyAgICAgLyogYXM4NiBtb2R1bGUgbmFtZSA9IGlucHV0IGZpbGUgbWludXMgZXh0ZW5zaW9uICovCistICAgIGFzODZfYWRkX3N0cmluZyhmaWxlbmFtZV9zZXRfZXh0ZW5zaW9uKGlubmFtZSwgIiIpKTsKKysgICAgYXM4Nl9hZGRfc3RyaW5nKGZpbGVuYW1lX2RlYnVnX3JlbWFwKGZpbGVuYW1lLCBmaWxlbmFtZV9zZXRfZXh0ZW5zaW9uKGlubmFtZSwgIiIpLCBzaXplb2YoZmlsZW5hbWUpKSk7CisgfQorIAorIHN0YXRpYyB2b2lkIGFzODZfY2xlYW51cCh2b2lkKQorZGlmZiAtLWdpdCBhL291dHB1dC9vdXRjb2ZmLmMgYi9vdXRwdXQvb3V0Y29mZi5jCitpbmRleCBhMmZkMzAyYy4uYmNmNTc2ZmIgMTAwNjQ0CistLS0gYS9vdXRwdXQvb3V0Y29mZi5jCisrKysgYi9vdXRwdXQvb3V0Y29mZi5jCitAQCAtMTA3MCwxNCArMTA3MCwxNCBAQCBzdGF0aWMgdm9pZCBjb2ZmX3N5bWJvbChjaGFyICpuYW1lLCBpbnQzMl90IHN0cnBvcywgaW50MzJfdCB2YWx1ZSwKKyAKKyBzdGF0aWMgdm9pZCBjb2ZmX3dyaXRlX3N5bWJvbHModm9pZCkKKyB7CistICAgIGNoYXIgZmlsZW5hbWVbMThdOworKyAgICBjaGFyIGZpbGVuYW1lWzE5XTsKKyAgICAgdWludDMyX3QgaTsKKyAKKyAgICAgLyoKKyAgICAgICogVGhlIGAuZmlsZScgcmVjb3JkLCBhbmQgdGhlIGZpbGUgbmFtZSBhdXhpbGlhcnkgcmVjb3JkLgorICAgICAgKi8KKyAgICAgY29mZl9zeW1ib2woIi5maWxlIiwgMEwsIDBMLCAtMiwgMCwgMHg2NywgMSk7CistICAgIHN0cm5jcHkoZmlsZW5hbWUsIGlubmFtZSwgMTgpOworKyAgICBmaWxlbmFtZV9kZWJ1Z19yZW1hcChmaWxlbmFtZSwgaW5uYW1lLCAxOSk7CisgICAgIG5hc21fd3JpdGUoZmlsZW5hbWUsIDE4LCBvZmlsZSk7CisgCisgICAgIC8qCitkaWZmIC0tZ2l0IGEvb3V0cHV0L291dGVsZi5jIGIvb3V0cHV0L291dGVsZi5jCitpbmRleCBkZTk5ZDA3Ni4uMjAzYjVkYzAgMTAwNjQ0CistLS0gYS9vdXRwdXQvb3V0ZWxmLmMKKysrKyBiL291dHB1dC9vdXRlbGYuYworQEAgLTEsNSArMSw1IEBACisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKgorLSAqICAgCisrICoKKyAgKiAgIENvcHlyaWdodCAxOTk2LTIwMTcgVGhlIE5BU00gQXV0aG9ycyAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQKKyAgKiAgIFNlZSB0aGUgZmlsZSBBVVRIT1JTIGluY2x1ZGVkIHdpdGggdGhlIE5BU00gZGlzdHJpYnV0aW9uIGZvcgorICAqICAgdGhlIHNwZWNpZmljIGNvcHlyaWdodCBob2xkZXJzLgorQEAgLTE0LDcgKzE0LDcgQEAKKyAgKiAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAgKiAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCisgICogICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy0gKiAgICAgCisrICoKKyAgKiAgICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5ECisgICogICAgIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCisgICogICAgIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCitAQCAtMzE1LDcgKzMxNSw3IEBAIGVsZl9kaXJlY3RpdmUoZW51bSBkaXJlY3RpdmUgZGlyZWN0aXZlLCBjaGFyICp2YWx1ZSwgaW50IHBhc3MpCisgCisgc3RhdGljIHZvaWQgZWxmX2luaXQodm9pZCkKKyB7CistICAgIHN0cmxjcHkoZWxmX21vZHVsZSwgaW5uYW1lLCBzaXplb2YoZWxmX21vZHVsZSkpOworKyAgICBmaWxlbmFtZV9kZWJ1Z19yZW1hcChlbGZfbW9kdWxlLCBpbm5hbWUsIHNpemVvZihlbGZfbW9kdWxlKSk7CisgICAgIHNlY3RzID0gTlVMTDsKKyAgICAgbnNlY3RzID0gc2VjdGxlbiA9IDA7CisgICAgIHN5bXMgPSBzYWFfaW5pdCgoaW50MzJfdClzaXplb2Yoc3RydWN0IGVsZl9zeW1ib2wpKTsKK0BAIC04NjgsNyArODY4LDcgQEAgc3RhdGljIHZvaWQgZWxmMzJfb3V0KGludDMyX3Qgc2VndG8sIGNvbnN0IHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICIgc2VnbWVudCBiYXNlIHJlZmVyZW5jZXMiKTsKKyAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICBpZiAod3J0ID09IE5PX1NFRykgeworLSAgICAgICAgICAgICAgICAgICAgLyogCisrICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgICogVGhlIGlmKCkgaXMgYSBoYWNrIHRvIGRlYWwgd2l0aCBjb21waWxlcnMgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAqIGRvbid0IGhhbmRsZSBzd2l0Y2goKSBzdGF0ZW1lbnRzIHdpdGggNjQtYml0CisgICAgICAgICAgICAgICAgICAgICAgKiBleHByZXNzaW9ucy4KK2RpZmYgLS1naXQgYS9vdXRwdXQvb3V0aWVlZS5jIGIvb3V0cHV0L291dGllZWUuYworaW5kZXggM2EyODk0MmQuLmY2MTgyNGU0IDEwMDY0NAorLS0tIGEvb3V0cHV0L291dGllZWUuYworKysrIGIvb3V0cHV0L291dGllZWUuYworQEAgLTIwOSw3ICsyMDksNyBAQCBzdGF0aWMgdm9pZCBpZWVlX3VucXVhbGlmaWVkX25hbWUoY2hhciAqLCBjaGFyICopOworICAqLworIHN0YXRpYyB2b2lkIGllZWVfaW5pdCh2b2lkKQorIHsKKy0gICAgc3RybGNweShpZWVlX2luZmlsZSwgaW5uYW1lLCBzaXplb2YoaWVlZV9pbmZpbGUpKTsKKysgICAgZmlsZW5hbWVfZGVidWdfcmVtYXAoaWVlZV9pbmZpbGUsIGlubmFtZSwgc2l6ZW9mKGllZWVfaW5maWxlKSk7CisgICAgIGFueV9zZWdzID0gZmFsc2U7CisgICAgIGZwdWJoZWFkID0gTlVMTDsKKyAgICAgZnB1YnRhaWwgPSAmZnB1YmhlYWQ7CitkaWZmIC0tZ2l0IGEvb3V0cHV0L291dG9iai5jIGIvb3V0cHV0L291dG9iai5jCitpbmRleCBiNGYyYzQ5OS4uNTViYmE0YTEgMTAwNjQ0CistLS0gYS9vdXRwdXQvb3V0b2JqLmMKKysrKyBiL291dHB1dC9vdXRvYmouYworQEAgLTY0MCw3ICs2NDAsNyBAQCBzdGF0aWMgZW51bSBkaXJlY3RpdmVfcmVzdWx0IG9ial9kaXJlY3RpdmUoZW51bSBkaXJlY3RpdmUsIGNoYXIgKiwgaW50KTsKKyAKKyBzdGF0aWMgdm9pZCBvYmpfaW5pdCh2b2lkKQorIHsKKy0gICAgc3RybGNweShvYmpfaW5maWxlLCBpbm5hbWUsIHNpemVvZihvYmpfaW5maWxlKSk7CisrICAgIGZpbGVuYW1lX2RlYnVnX3JlbWFwKG9ial9pbmZpbGUsIGlubmFtZSwgc2l6ZW9mKG9ial9pbmZpbGUpKTsKKyAgICAgZmlyc3Rfc2VnID0gc2VnX2FsbG9jKCk7CisgICAgIGFueV9zZWdzID0gZmFsc2U7CisgICAgIGZwdWJoZWFkID0gTlVMTDsKK2RpZmYgLS1naXQgYS9zdGRsaWIvc3RybGNhdC5jIGIvc3RkbGliL3N0cmxjYXQuYworaW5kZXggNzA4NGQ0NjAuLmVlOTNkZWEzIDEwMDY0NAorLS0tIGEvc3RkbGliL3N0cmxjYXQuYworKysrIGIvc3RkbGliL3N0cmxjYXQuYworQEAgLTI5LDcgKzI5LDcgQEAgc2l6ZV90IHN0cmxjYXQoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc2l6ZSkKKyAgICAgc2l6ZV90IG47CisgCisgICAgIC8qIGZpbmQgdGhlIE5VTEwgdGVybWluYXRvciBpbiBkZXN0ICovCistICAgIGZvciAobiA9IDA7IGkgPCBzaXplICYmIGRlc3Rbbl0gIT0gJ1wwJzsgbisrKQorKyAgICBmb3IgKG4gPSAwOyBuIDwgc2l6ZSAmJiBkZXN0W25dICE9ICdcMCc7IG4rKykKKyAgICAgICAgIDsKKyAKKyAgICAgLyogZGVzdGluYXRpb24gd2FzIG5vdCBOVUxMIHRlcm1pbmF0ZWQuIFJldHVybiB0aGUgaW5pdGlhbCBzaXplICovCitkaWZmIC0tZ2l0IGEvdGVzdC9lbGZkZWJ1Z3ByZWZpeC5hc20gYi90ZXN0L2VsZmRlYnVncHJlZml4LmFzbQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi5hNjdiYTI5YworLS0tIC9kZXYvbnVsbAorKysrIGIvdGVzdC9lbGZkZWJ1Z3ByZWZpeC5hc20KK0BAIC0wLDAgKzEsNiBAQAorKztUZXN0bmFtZT11bm9wdGltaXplZDsgQXJndW1lbnRzPS1PMCAtLWRlYnVnLXByZWZpeC1tYXAgZWxmPUVMRiAtZmVsZiAtb2VsZmRlYnVncHJlZml4Lm87IEZpbGVzPXN0ZG91dCBzdGRlcnIgZWxmZGVidWdwcmVmaXgubzsgVmFsaWRhdGU9cmVhZGVsZiAtLXdpZGUgLS1zeW1ib2xzIGVsZmRlYnVncHJlZml4Lm8gfCBncmVwICdGSUxFLipFTEZkZWJ1Z3ByZWZpeC5hc20nCisrCisrCSAgU0VDVElPTiAudGV4dAorK3Rlc3Q6CQkJOyBbMV0KKysJICByZXQKKysKK2RpZmYgLS1naXQgYS90ZXN0L3BlcmZvcm10ZXN0LnBsIGIvdGVzdC9wZXJmb3JtdGVzdC5wbAoraW5kZXggZjc4NjViMzkuLjA5NmY5NjA0IDEwMDc1NQorLS0tIGEvdGVzdC9wZXJmb3JtdGVzdC5wbAorKysrIGIvdGVzdC9wZXJmb3JtdGVzdC5wbAorQEAgLTQyLDE0ICs0MiwyMiBAQCBzdWIgcGVyZm9ybSB7CisgICAgIFRFU1Q6CisgICAgIHdoaWxlKDxURVNURklMRT4pIHsKKyAgICAgICAgICNTZWUgaWYgdGhlcmUgaXMgYSB0ZXN0IGNhc2UKKy0gICAgICAgIGxhc3QgdW5sZXNzIC9UZXN0bmFtZT0oLiopO1xzKkFyZ3VtZW50cz0oLiopO1xzKkZpbGVzPSguKikvOworLSAgICAgICAgbXkgKCRzdWJuYW1lLCAkYXJndW1lbnRzLCAkZmlsZXMpID0gKCQxLCAkMiwgJDMpOworKyAgICAgICAgbGFzdCB1bmxlc3MgL1Rlc3RuYW1lPSguKik7XHMqQXJndW1lbnRzPSguKik7XHMqRmlsZXM9KFteO10qKSg/OjtccypWYWxpZGF0ZT0oLiopKT8vOworKyAgICAgICAgbXkgKCRzdWJuYW1lLCAkYXJndW1lbnRzLCAkZmlsZXMsICR2YWxpZGF0ZSkgPSAoJDEsICQyLCAkMywgJDQpOworKyAgICAgICAgY2hvbXAgJGZpbGVzOworICAgICAgICAgZGVidWdwcmludCgiJHN1Ym5hbWUgfCAkYXJndW1lbnRzIHwgJGZpbGVzIik7CisgCisgICAgICAgICAjQ2FsbCBuYXNtIHdpdGggdGhpcyB0ZXN0IGNhc2UKKyAgICAgICAgIHN5c3RlbSgiJG5hc20gJGFyZ3VtZW50cyAkdGVzdHBhdGggPiAkc3Rkb3V0ZmlsZSAyPiAkc3RkZXJyZmlsZSIpOworICAgICAgICAgZGVidWdwcmludCgiJG5hc20gJGFyZ3VtZW50cyAkdGVzdHBhdGggPiAkc3Rkb3V0ZmlsZSAyPiAkc3RkZXJyZmlsZSAtLS0tPiAkPyIpOworIAorKyAgICAgICAgaWYoJHZhbGlkYXRlKSB7CisrICAgICAgICAgICAgaWYoc3lzdGVtKCIkdmFsaWRhdGUgPj4gJHN0ZG91dGZpbGUgMj4+ICRzdGRlcnJmaWxlIikgIT0gMCkgeworKyAgICAgICAgICAgICAgICBwcmludCAiVGVzdCAkdGVzdG5hbWUvJHN1Ym5hbWUgdmFsaWRhdGlvbiBmYWlsZWRcbiI7CisrICAgICAgICAgICAgICAgICRnbG9iYWxyZXN1bHQgPSAxOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysKKyAgICAgICAgICNNb3ZlIHRoZSBvdXRwdXQgdG8gdGhlIHRlc3QgZGlyCisgICAgICAgICBta3BhdGgoIiRvdXRwdXRkaXIvJHRlc3RuYW1lLyRzdWJuYW1lIik7CisgICAgICAgICBmb3JlYWNoKHNwbGl0IC8gLywkZmlsZXMpIHsKKy0tIAorMi4yMy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbS9DVkUtMjAxOS0xNDI0OC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbS9DVkUtMjAxOS0xNDI0OC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDVkMmNiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtL0NWRS0yMDE5LTE0MjQ4LnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gOTNkNDFkODI5NjNiMmNmZDBiMjRjOTA2ZjVhOGRhZjUzMjgxYjU1OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJILiBQZXRlciBBbnZpbiAoSW50ZWwpIiA8aHBhQHp5dG9yLmNvbT4KK0RhdGU6IEZyaSwgMTYgQXVnIDIwMTkgMDE6MTI6NTQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gQlIgMzM5MjU3NjogZG9uJ3Qgc2VnZmF1bHQgb24gYSBiYWQgJXByYWdtYSBsaW1pdAorCitEb24ndCBzZWdmYXVsdCBvbiBhIGJhZCAlcHJhZ21hIGxpbWl0LiBJbnN0ZWFkIHRyZWF0IGEgTlVMTCBwb2ludGVyIGFzCithbiBlbXB0eSBzdHJpbmcuCisKK1JlcG9ydGVkLWJ5OiBSZW4gS2ltdXJhIDxya3gxMjA5ZGV2QGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEguIFBldGVyIEFudmluIChJbnRlbCkgPGhwYUB6eXRvci5jb20+CisKK0NWRTogQ1ZFLTIwMTktMTQyNDgKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vcmVwby5vci5jei9uYXNtLmdpdC9jb21taXQvOTNkNDFkODI5NjNiMmNmZDBiMjRjOTA2ZjVhOGRhZjUzMjgxYjU1OV0KK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CistLS0KKyBhc20vbmFzbS5jIHwgNyArKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYXNtL25hc20uYyBiL2FzbS9uYXNtLmMKK2luZGV4IGM4NGQ2NzUuLjY1MTE2YWIgMTAwNjQ0CistLS0gYS9hc20vbmFzbS5jCisrKysgYi9hc20vbmFzbS5jCitAQCAtMjEyLDYgKzIxMiwxMSBAQCBuYXNtX3NldF9saW1pdChjb25zdCBjaGFyICpsaW1pdCwgY29uc3QgY2hhciAqdmFsc3RyKQorICAgICBib29sIHJuX2Vycm9yOworICAgICBpbnQgZXJybGV2ZWw7CisgCisrICAgIGlmICghbGltaXQpCisrICAgICAgICBsaW1pdCA9ICIiOworKyAgICBpZiAoIXZhbHN0cikKKysgICAgICAgIHZhbHN0ciA9ICIiOworKworICAgICBmb3IgKGkgPSAwOyBpIDw9IExJTUlUX01BWDsgaSsrKSB7CisgICAgICAgICBpZiAoIW5hc21fc3RyaWNtcChsaW1pdCwgbGltaXRfaW5mb1tpXS5uYW1lKSkKKyAgICAgICAgICAgICBicmVhazsKK0BAIC0yMDQsNyArMjA5LDcgQEAgbmFzbV9zZXRfbGltaXQoY29uc3QgY2hhciAqbGltaXQsIGNvbnN0IGNoYXIgKnZhbHN0cikKKyAgICAgICAgICAgICBlcnJsZXZlbCA9IEVSUl9XQVJOSU5HfEVSUl9OT0ZJTEV8RVJSX1VTQUdFOworICAgICAgICAgZWxzZQorICAgICAgICAgICAgIGVycmxldmVsID0gRVJSX1dBUk5JTkd8RVJSX1BBU1MxfFdBUk5fVU5LTk9XTl9QUkFHTUE7CistICAgICAgICBuYXNtX2Vycm9yKGVycmxldmVsLCAidW5rbm93biBsaW1pdDogYCVzJyIsIGxpbWl0KTsKKysgICAgICAgIG5hc21fZXJyb3IoZXJybGV2ZWwsICJpbnZhbGlkIGxpbWl0IHZhbHVlOiBgJXMnIiwgdmFsc3RyKTsKKyAgICAgICAgIHJldHVybiBESVJSX0VSUk9SOworICAgICB9CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc21fMi4xNC4wMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjE0LjAyLmJiCmluZGV4IGU0Zjk2NGMuLmY4YThkNzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjE0LjAyLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjE0LjAyLmJiCkBAIC01LDYgKzUsOSBAQAogCiBTUkNfVVJJID0gImh0dHA6Ly93d3cubmFzbS51cy9wdWIvbmFzbS9yZWxlYXNlYnVpbGRzLyR7UFZ9L25hc20tJHtQVn0udGFyLmJ6MiBcCiAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xOTc1NS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOS0xNDI0OC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN0ZGxpYi1BZGQtc3RybGNhdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1kZWJ1Zy1wcmVmaXgtbWFwLW9wdGlvbi5wYXRjaCBcCiAgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjNmNDg5YWE0OGFkMmFhMWY5NjdkYzVlMjkzYmJkMDZmIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamEvZml4LW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYS9maXgtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2ZkNzc5MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYS9maXgtbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gZTkyYTkxNTE4M2Y4YmZmMjY4Zjc0YzhjZDAwZDk4NjMwMWEyYmJmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IG1ha2Vwb3N0IDxtYWtlcG9zdEBmaXJlbWFpbC5jYz4KLURhdGU6IE1vbiwgMjQgRGVjIDIwMTggMDM6MTM6MTYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNlIHN0X210aW0gaWYgc3RfbXRpbWUgaXMgbWFjcm8sIGZpeCAjMTUxMAotCi1JbiBQT1NJWC4xLTIwMDgsIHN5c19zdGF0IGhhcyBhIHN0X210aW0gbWVtYmVyIGFuZCBhIHN0X210aW1lIGJhY2t3YXJkCi1jb21wYXRpYmlsaXR5IG1hY3JvLiBTaG91bGQgaGVscCBhdm9pZCBoYXJkY29kaW5nIHBsYXRmb3JtIGRldGVjdGlvbi4KLQotU2lnbmVkLW9mZi1ieTogT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIHNyYy9kaXNrX2ludGVyZmFjZS5jYyB8IDE0ICsrKystLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvZGlza19pbnRlcmZhY2UuY2MgYi9zcmMvZGlza19pbnRlcmZhY2UuY2MKLWluZGV4IGQ0YzJmYjAuLmRjMjk3YzQgMTAwNjQ0Ci0tLS0gYS9zcmMvZGlza19pbnRlcmZhY2UuY2MKLSsrKyBiL3NyYy9kaXNrX2ludGVyZmFjZS5jYwotQEAgLTIwMiwxOSArMjAyLDEzIEBAIFRpbWVTdGFtcCBSZWFsRGlza0ludGVyZmFjZTo6U3RhdChjb25zdCBzdHJpbmcmIHBhdGgsIHN0cmluZyogZXJyKSBjb25zdCB7Ci0gICAvLyB0aGF0IGl0IGRvZXNuJ3QgZXhpc3QuCi0gICBpZiAoc3Quc3RfbXRpbWUgPT0gMCkKLSAgICAgcmV0dXJuIDE7Ci0tI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfUE9TSVhfQ19TT1VSQ0UpCi0rI2lmIGRlZmluZWQoX0FJWCkKLSsgIHJldHVybiAoaW50NjRfdClzdC5zdF9tdGltZSAqIDEwMDAwMDAwMDBMTCArIHN0LnN0X210aW1lX247Ci0rI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCi0gICByZXR1cm4gKChpbnQ2NF90KXN0LnN0X210aW1lc3BlYy50dl9zZWMgKiAxMDAwMDAwMDAwTEwgKwotICAgICAgICAgICBzdC5zdF9tdGltZXNwZWMudHZfbnNlYyk7Ci0tI2VsaWYgKF9QT1NJWF9DX1NPVVJDRSA+PSAyMDA4MDlMIHx8IF9YT1BFTl9TT1VSQ0UgPj0gNzAwIHx8IGRlZmluZWQoX0JTRF9TT1VSQ0UpIHx8IGRlZmluZWQoX1NWSURfU09VUkNFKSB8fCBcCi0tICAgICAgIGRlZmluZWQoX19CSU9OSUNfXykgfHwgKGRlZmluZWQgKF9fU1ZSNCkgJiYgZGVmaW5lZCAoX19zdW4pKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSkKLS0gIC8vIEZvciBnbGliYywgc2VlICJUaW1lc3RhbXAgZmlsZXMiIGluIHRoZSBOb3RlcyBvZiBodHRwOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL21hbi1wYWdlcy9vbmxpbmUvcGFnZXMvbWFuMi9zdGF0LjIuaHRtbAotLSAgLy8gbmV3bGliLCB1Q2xpYmMgYW5kIG11c2wgZm9sbG93IHRoZSBrZXJuZWwgKG9yIEN5Z3dpbikgaGVhZGVycyBhbmQgZGVmaW5lIHRoZSByaWdodCBtYWNybyB2YWx1ZXMgYWJvdmUuCi0tICAvLyBGb3IgYnNkLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZyZWVic2QvZnJlZWJzZC9ibG9iL21hc3Rlci9zeXMvc3lzL3N0YXQuaCBhbmQgc2ltaWxhcgotLSAgLy8gRm9yIGJpb25pYywgQyBhbmQgUE9TSVggQVBJIGlzIGFsd2F5cyBlbmFibGVkLgotLSAgLy8gRm9yIHNvbGFyaXMsIHNlZSBodHRwczovL2RvY3Mub3JhY2xlLmNvbS9jZC9FODgzNTNfMDEvaHRtbC9FMzc4NDEvc3RhdC0yLmh0bWwuCi0rI2VsaWYgZGVmaW5lZChzdF9tdGltZSkgLy8gQSBtYWNybywgc28gd2UncmUgbGlrZWx5IG9uIG1vZGVybiBQT1NJWC4KLSAgIHJldHVybiAoaW50NjRfdClzdC5zdF9tdGltLnR2X3NlYyAqIDEwMDAwMDAwMDBMTCArIHN0LnN0X210aW0udHZfbnNlYzsKLS0jZWxpZiBkZWZpbmVkKF9BSVgpCi0tICByZXR1cm4gKGludDY0X3Qpc3Quc3RfbXRpbWUgKiAxMDAwMDAwMDAwTEwgKyBzdC5zdF9tdGltZV9uOwotICNlbHNlCi0gICByZXR1cm4gKGludDY0X3Qpc3Quc3RfbXRpbWUgKiAxMDAwMDAwMDAwTEwgKyBzdC5zdF9tdGltZW5zZWM7Ci0gI2VuZGlmCi0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjEwLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjEwLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRjNjM2NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25pbmphL25pbmphXzEuMTAuMC5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIk5pbmphIGlzIGEgc21hbGwgYnVpbGQgc3lzdGVtIHdpdGggYSBmb2N1cyBvbiBzcGVlZC4iCitIT01FUEFHRSA9ICJodHRwOi8vbWFydGluZS5naXRodWIuY29tL25pbmphLyIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE4MTU4NmE2NGFkNGU0NzZjNzkxY2RhN2UyZjJjNTJlIgorCitERVBFTkRTID0gInJlMmMtbmF0aXZlIG5pbmphLW5hdGl2ZSIKKworU1JDUkVWID0gImVkN2Y2NzA0MGIzNzAxODlkOTg5YWRiZDYwZmY4ZWEyOTk1NzIzMWYiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9uaW5qYS1idWlsZC9uaW5qYS5naXQ7YnJhbmNoPXJlbGVhc2UiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+LiopIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorCitkb19jb21waWxlX2NsYXNzLW5hdGl2ZSgpIHsKKwlweXRob24zIC4vY29uZmlndXJlLnB5IC0tYm9vdHN0cmFwCit9CisKK2RvX2NvbXBpbGUoKSB7CisJcHl0aG9uMyAuL2NvbmZpZ3VyZS5weQorCW5pbmphCit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtRCAtbSAwNzU1ICAke1N9L25pbmphICR7RH0ke2JpbmRpcn0vbmluamEKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamFfMS45LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjkuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjEyMzZlOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjkuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAiTmluamEgaXMgYSBzbWFsbCBidWlsZCBzeXN0ZW0gd2l0aCBhIGZvY3VzIG9uIHNwZWVkLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9tYXJ0aW5lLmdpdGh1Yi5jb20vbmluamEvIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTgxNTg2YTY0YWQ0ZTQ3NmM3OTFjZGE3ZTJmMmM1MmUiCi0KLURFUEVORFMgPSAicmUyYy1uYXRpdmUgbmluamEtbmF0aXZlIgotCi1TUkNSRVYgPSAiYjI1YzA4YmRhNDk0OTE5MmM2OWNlYTRjZWUwNTc4ODczNDFhMmZmYyIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL25pbmphLWJ1aWxkL25pbmphLmdpdDticmFuY2g9cmVsZWFzZSBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtbXVzbC5wYXRjaCBcCi0iCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+LiopIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgotCi1kb19jb21waWxlX2NsYXNzLW5hdGl2ZSgpIHsKLQlweXRob24zIC4vY29uZmlndXJlLnB5IC0tYm9vdHN0cmFwCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0JcHl0aG9uMyAuL2NvbmZpZ3VyZS5weQotCW5pbmphCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtRCAtbSAwNzU1ICAke1N9L25pbmphICR7RH0ke2JpbmRpcn0vbmluamEKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzLzAwMDEtU3dpdGNoLWFsbC1zY3JpcHRzLXRvLXVzZS1QeXRob24tMy54LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzLzAwMDEtU3dpdGNoLWFsbC1zY3JpcHRzLXRvLXVzZS1QeXRob24tMy54LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTFlZDUwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy8wMDAxLVN3aXRjaC1hbGwtc2NyaXB0cy10by11c2UtUHl0aG9uLTMueC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi1Gcm9tIGQ0MmIyM2Y0ZmI1ZDZiZDU4ZTkyZTk5NWZlNWJlZmM3NmVmYmFlMGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMjcgQXByIDIwMTcgMTU6NDc6NTggKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gU3dpdGNoIGFsbCBzY3JpcHRzIHRvIHVzZSBQeXRob24gMy54Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBtYWtlUGFja2FnZSAgICAgICAgICB8IDIgKy0KLSBvcGtnLWNvbXBhcmUtaW5kZXhlcyB8IDIgKy0KLSBvcGtnLWdyYXBoLWRlcHMgICAgICB8IDIgKy0KLSBvcGtnLWxpc3QtZmllbGRzICAgICB8IDIgKy0KLSBvcGtnLW1ha2UtaW5kZXggICAgICB8IDIgKy0KLSBvcGtnLXNob3ctZGVwcyAgICAgICB8IDIgKy0KLSBvcGtnLXVuYnVpbGQgICAgICAgICB8IDIgKy0KLSBvcGtnLXVwZGF0ZS1pbmRleCAgICB8IDIgKy0KLSBvcGtnLnB5ICAgICAgICAgICAgICB8IDIgKy0KLSA5IGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL21ha2VQYWNrYWdlIGIvbWFrZVBhY2thZ2UKLWluZGV4IDRiZGZjNTYuLjAyMTI0ZGQgMTAwNzU1Ci0tLS0gYS9tYWtlUGFja2FnZQotKysrIGIvbWFrZVBhY2thZ2UKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vcHl0aG9uCi0rIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotIAotICMgVGhlIGdlbmVyYWwgYWxnb3JpdGhtIHRoaXMgcHJvZ3JhbSBmb2xsb3dzIGdvZXMgbGlrZSB0aGlzOgotICMgICBSdW4gdGFyIHRvIGV4dHJhY3QgY29udHJvbCBmcm9tIGNvbnRyb2wudGFyLmd6IGZyb20gdGhlIHBhY2thZ2UuCi1kaWZmIC0tZ2l0IGEvb3BrZy1jb21wYXJlLWluZGV4ZXMgYi9vcGtnLWNvbXBhcmUtaW5kZXhlcwotaW5kZXggYjYwZDIwYS4uODBjMTI2MyAxMDA3NTUKLS0tLSBhL29wa2ctY29tcGFyZS1pbmRleGVzCi0rKysgYi9vcGtnLWNvbXBhcmUtaW5kZXhlcwotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0rIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Ci0gZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotIAotZGlmZiAtLWdpdCBhL29wa2ctZ3JhcGgtZGVwcyBiL29wa2ctZ3JhcGgtZGVwcwotaW5kZXggNjY1M2ZkNS4uZjFlMzc2YSAxMDA3NTUKLS0tLSBhL29wa2ctZ3JhcGgtZGVwcwotKysrIGIvb3BrZy1ncmFwaC1kZXBzCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL2VudiBweXRob24KLSsjIS91c3IvYmluL2VudiBweXRob24zCi0gZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKLSBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi0gCi1kaWZmIC0tZ2l0IGEvb3BrZy1saXN0LWZpZWxkcyBiL29wa2ctbGlzdC1maWVsZHMKLWluZGV4IGMxNGE5MGYuLjI0Zjc5NTUgMTAwNzU1Ci0tLS0gYS9vcGtnLWxpc3QtZmllbGRzCi0rKysgYi9vcGtnLWxpc3QtZmllbGRzCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL2VudiBweXRob24KLSsjIS91c3IvYmluL2VudiBweXRob24zCi0gZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKLSBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi0gCi1kaWZmIC0tZ2l0IGEvb3BrZy1tYWtlLWluZGV4IGIvb3BrZy1tYWtlLWluZGV4Ci1pbmRleCAzZjc1N2Y2Li4yOTg4ZjlmIDEwMDc1NQotLS0tIGEvb3BrZy1tYWtlLWluZGV4Ci0rKysgYi9vcGtnLW1ha2UtaW5kZXgKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLSAiIiIKLSAgICBVdGlsaXR5IHRvIGNyZWF0ZSBvcGtnIGNvbXBhdGlibGUgaW5kZXhlcwotICIiIgotIAotZGlmZiAtLWdpdCBhL29wa2ctc2hvdy1kZXBzIGIvb3BrZy1zaG93LWRlcHMKLWluZGV4IDE1M2YyMWUuLjRlMThiNGYgMTAwNzU1Ci0tLS0gYS9vcGtnLXNob3ctZGVwcwotKysrIGIvb3BrZy1zaG93LWRlcHMKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLSBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAotIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KLSAKLWRpZmYgLS1naXQgYS9vcGtnLXVuYnVpbGQgYi9vcGtnLXVuYnVpbGQKLWluZGV4IDRmMzZiZWMuLjU3NjQyYzkgMTAwNzU1Ci0tLS0gYS9vcGtnLXVuYnVpbGQKLSsrKyBiL29wa2ctdW5idWlsZAotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0rIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Ci0gZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotIAotZGlmZiAtLWdpdCBhL29wa2ctdXBkYXRlLWluZGV4IGIvb3BrZy11cGRhdGUtaW5kZXgKLWluZGV4IDM0MWMxYzIuLjdiZmY4YTEgMTAwNzU1Ci0tLS0gYS9vcGtnLXVwZGF0ZS1pbmRleAotKysrIGIvb3BrZy11cGRhdGUtaW5kZXgKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLSBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAotIAotIGltcG9ydCBzeXMsIG9zCi1kaWZmIC0tZ2l0IGEvb3BrZy5weSBiL29wa2cucHkKLWluZGV4IDJlY2FjOGEuLjdlNjRkZTQgMTAwNjQ0Ci0tLS0gYS9vcGtnLnB5Ci0rKysgYi9vcGtnLnB5Ci1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL2VudiBweXRob24KLSsjIS91c3IvYmluL2VudiBweXRob24zCi0gIyAgIENvcHlyaWdodCAoQykgMjAwMSBBbGV4YW5kZXIgUy4gR3V5IDxhN3JAYW5kZXJuLm9yZz4KLSAjICAgICAgICAgICAgICAgICAgICAgIEFuZGVybiBSZXNlYXJjaCBMYWJzCi0gIwotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzLzAwMDEtb3BrZy1idWlsZC1jbGFtcC1tdGltZXMtdG8tU09VUkNFX0RBVEVfRVBPQ0gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvMDAwMS1vcGtnLWJ1aWxkLWNsYW1wLW10aW1lcy10by1TT1VSQ0VfREFURV9FUE9DSC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE4MTE2OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvMDAwMS1vcGtnLWJ1aWxkLWNsYW1wLW10aW1lcy10by1TT1VSQ0VfREFURV9FUE9DSC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gNTlkYTU1NzdiZjhkZjQ0MWM2Y2E5NThlNTBmY2I4MzIyODcwMjc2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+Ci1EYXRlOiBUaHUsIDEyIFNlcCAyMDE5IDEwOjI0OjU4IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIG9wa2ctYnVpbGQ6IGNsYW1wIG10aW1lcyB0byBTT1VSQ0VfREFURV9FUE9DSAotCi1Gb3IgcmVwcm9kdWNpYmxlIGJ1aWxkcywgY2xhbXAgbXRpbWVzIGJpZ2dlciB0aGFuIFNPVVJDRV9EQVRFX0VQT0NIIHRvCi1TT1VSQ0VfREFURV9FUE9DSCAoYnVpbGQgZ2VuZXJhdGVkIGZpbGVzLCB1c3VhbGx5KS4KLQotRml4ZXMgYnVnemlsbGEgMTM0NTAKLQotU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0tLS0KLSBvcGtnLWJ1aWxkIHwgOSArKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9vcGtnLWJ1aWxkIGIvb3BrZy1idWlsZAotaW5kZXggZGNkMmQ2OC4uMjUxN2EyYiAxMDA3NTUKLS0tLSBhL29wa2ctYnVpbGQKLSsrKyBiL29wa2ctYnVpbGQKLUBAIC0yOTcsOSArMjk3LDE2IEBAIG1rZGlyICR0bXBfZGlyCi0gCi0gYnVpbGRfZGF0ZT0iJHtTT1VSQ0VfREFURV9FUE9DSDotJChkYXRlICslcyl9IgotIAotK210aW1lX2FyZ3M9IiIKLSsjIC0tY2xhbXAtbXRpbWUgcmVxdWlyZXMgdGFyID4gMS4yOC4gT25seSB1c2UgaXQgaWYgU09VUkNFX0RBVEVfRVBPQ0ggaXMgc2V0LCB0byBhdm9pZCBoYXZpbmcgYSBnZW5lcmljIGNhc2UgZGVwZW5kZW5jeSBvbiB0YXIgPiAxLjI4LgotKyMgdGhpcyBzZXR0aW5nIHdpbGwgbWFrZSBzdXJlIGZpbGVzIGdlbmVyYXRlZCBhdCBidWlsZCB0aW1lIGhhdmUgY29uc2lzdGVudCBtdGltZXMsIGZvciByZXByb2R1Y2libGUgYnVpbGRzLgotK2lmIFsgISAteiAiJFNPVVJDRV9EQVRFX0VQT0NIIiAgXTsgdGhlbgotKyAgICBtdGltZV9hcmdzPSItLW10aW1lPUAkYnVpbGRfZGF0ZSAtLWNsYW1wLW10aW1lIgotK2ZpCi0rCi0gKCBjZCAkcGtnX2Rpci8kQ09OVFJPTCAmJiBmaW5kIC4gLXR5cGUgZiA+ICR0bXBfZGlyL2NvbnRyb2xfbGlzdCApCi0gKCBjZCAkcGtnX2RpciAmJiBmaW5kIC4gLXBhdGggLi8kQ09OVFJPTCAtcHJ1bmUgLW8gLXByaW50ID4gJHRtcF9kaXIvZmlsZV9saXN0ICkKLS0oIGNkICRwa2dfZGlyICYmIHRhciAkb2dhcmdzICR0c29ydGFyZ3MgLS1uby1yZWN1cnNpb24gLWMgJHRhcmZvcm1hdCAtVCAkdG1wX2Rpci9maWxlX2xpc3QgfCAkY29tcHJlc3NvciAkY29tcHJlc3NvcmFyZ3MgPiAkdG1wX2Rpci9kYXRhLnRhci4kY2V4dCApCi0rKCBjZCAkcGtnX2RpciAmJiB0YXIgJG9nYXJncyAkdHNvcnRhcmdzIC0tbm8tcmVjdXJzaW9uICRtdGltZV9hcmdzIC1jICR0YXJmb3JtYXQgLVQgJHRtcF9kaXIvZmlsZV9saXN0IHwgJGNvbXByZXNzb3IgJGNvbXByZXNzb3JhcmdzID4gJHRtcF9kaXIvZGF0YS50YXIuJGNleHQgKQotICggY2QgJHBrZ19kaXIvJENPTlRST0wgJiYgdGFyICRvZ2FyZ3MgJHRzb3J0YXJncyAtLW5vLXJlY3Vyc2lvbiAtLW10aW1lPUAkYnVpbGRfZGF0ZSAtYyAkdGFyZm9ybWF0IC1UICR0bXBfZGlyL2NvbnRyb2xfbGlzdCB8IGd6aXAgJHppcGFyZ3MgPiAkdG1wX2Rpci9jb250cm9sLnRhci5neiApCi0gcm0gJHRtcF9kaXIvZmlsZV9saXN0Ci0gcm0gJHRtcF9kaXIvY29udHJvbF9saXN0Ci0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvZml4LXJlcHJvZHVjaWJpbGl0eS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy9maXgtcmVwcm9kdWNpYmlsaXR5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NTk3OWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvZml4LXJlcHJvZHVjaWJpbGl0eS5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGaXggcmVwcm9kdWNpYmlsaXR5IGlzc3VlcyBpbiBvcGtnLWJ1aWxkCisKK1RoZXJlIGlzIGEgc29ydGluZyBwcm9ibGVtIHdpdGggb3BrZy1idWlsZCB3aGVyZSB0aGUgaXBrIGdlbmVyYXRlZCBpcyBkZXBlbmRpbmcKK3Vwb24gdGhlIG9yZGVyIG9mIGZpbGVzIG9uIGRpc2suIFRoZSByZWFzb24gaXMgdGhlIC0tc29ydCBvcHRpb24gdG8gdGFyIG9ubHkKK2luZmx1ZW5jZXMgdGhlIG9yZGVycyBvZiBmaWxlcyB0YXIgcmVhZHMsIG5vdCB0aG9zZSBwYXNzZWQgYnkgdGhlIC1UIG9wdGlvbi4KKworQWRkIGluIGEgc29ydCBjYWxsIHRvIHJlc29sdmUgdGhpcyBpc3N1ZS4gVG8gZW5zdXJlIGNvbnNpc3RlbnQgc29ydGluZyB3ZQorYWxzbyBuZWVkIHRvIGZvcmNlIHRvIGEgc3BlY2lmaWMgbG9jYWxlIChDKSBlbHNlIHRoZSByZXN1bHRzIGFyZSBzdGlsbCBub3QKK2RldGVybWluaXN0aWMuCisKK1JQIDIwMjAvMi81CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2ZvcnVtLyMhdG9waWMvb3BrZy1kZXZlbC9ZdHRaNzNOTHJZUV0KK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorCitJbmRleDogb3BrZy11dGlscy0wLjQuMi9vcGtnLWJ1aWxkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3BrZy11dGlscy0wLjQuMi5vcmlnL29wa2ctYnVpbGQKKysrKyBvcGtnLXV0aWxzLTAuNC4yL29wa2ctYnVpbGQKK0BAIC0zMDUsOCArMzA1LDEwIEBAIGlmIFsgISAteiAiJFNPVVJDRV9EQVRFX0VQT0NIIiAgXTsgdGhlbgorICAgICBtdGltZV9hcmdzPSItLW10aW1lPUAkYnVpbGRfZGF0ZSAtLWNsYW1wLW10aW1lIgorIGZpCisgCistKCBjZCAkcGtnX2Rpci8kQ09OVFJPTCAmJiBmaW5kIC4gLXR5cGUgZiA+ICR0bXBfZGlyL2NvbnRyb2xfbGlzdCApCistKCBjZCAkcGtnX2RpciAmJiBmaW5kIC4gLXBhdGggLi8kQ09OVFJPTCAtcHJ1bmUgLW8gLXBhdGggLiAtbyAtcHJpbnQgID4gJHRtcF9kaXIvZmlsZV9saXN0ICkKKytleHBvcnQgTEFORz1DCisrZXhwb3J0IExDX0FMTD1DCisrKCBjZCAkcGtnX2Rpci8kQ09OVFJPTCAmJiBmaW5kIC4gLXR5cGUgZiB8IHNvcnQgPiAkdG1wX2Rpci9jb250cm9sX2xpc3QgKQorKyggY2QgJHBrZ19kaXIgJiYgZmluZCAuIC1wYXRoIC4vJENPTlRST0wgLXBydW5lIC1vIC1wYXRoIC4gLW8gLXByaW50ICB8IHNvcnQgPiAkdG1wX2Rpci9maWxlX2xpc3QgKQorICggY2QgJHBrZ19kaXIgJiYgdGFyICRvZ2FyZ3MgJHRzb3J0YXJncyAtLW5vLXJlY3Vyc2lvbiAkbXRpbWVfYXJncyAtYyAkdGFyZm9ybWF0IC1UICR0bXBfZGlyL2ZpbGVfbGlzdCB8ICRjb21wcmVzc29yICRjb21wcmVzc29yYXJncyA+ICR0bXBfZGlyL2RhdGEudGFyLiRjZXh0ICkKKyAoIGNkICRwa2dfZGlyLyRDT05UUk9MICYmIHRhciAkb2dhcmdzICR0c29ydGFyZ3MgLS1uby1yZWN1cnNpb24gLS1tdGltZT1AJGJ1aWxkX2RhdGUgLWMgJHRhcmZvcm1hdCAtVCAkdG1wX2Rpci9jb250cm9sX2xpc3QgfCBnemlwICR6aXBhcmdzID4gJHRtcF9kaXIvY29udHJvbC50YXIuZ3ogKQorIHJtICR0bXBfZGlyL2ZpbGVfbGlzdApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL3BpcGVmYWlsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL3BpcGVmYWlsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWRkY2MxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy9waXBlZmFpbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVdlIG5lZWQgb3BrZy1idWlsZCB0byBmYWlsIGlmIGZvciBleGFtcGxlIHRoZSB0YXIgY29tbWFuZCBpcyBwYXNzZWQgaW52YWxpZCAKLW9wdGlvbnMuIFdpdGhvdXQgdGhpcywgd2Ugc2VlIHNpbGVudGx5IGNyZWF0ZWQgZW1wdHkgcGFja2FnZWQgd2hlcmUgZGF0YS50YXIKLWlzIHplcm8gYnl0ZXMgaW4gc2l6ZS4gVGhpcyBjcmVhdGVzIGhhcmQgdG8gZGVidWcgcHJvYmxlbXMuCi0KLUFuIGV4YW1wbGUgaXMgd2hlbiByZXByb2R1Y2libGUgYnVpbGRzIGFyZSBlbmFibGVkIGFuZCBydW4gb24gb2xkIGhvc3RzIGxpa2UKLWNlbnRvczcgd2hpY2ggaGFzIHRhciA8IDEuMjg6Ci0KLVN1YnByb2Nlc3Mgb3V0cHV0OnRhcjogdW5yZWNvZ25pemVkIG9wdGlvbiAnLS1jbGFtcC1tdGltZScKLVRyeSBgdGFyIC0taGVscCcgb3IgYHRhciAtLXVzYWdlJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KLQotSW5kZXg6IG9wa2ctdXRpbHMtMC40LjEvb3BrZy1idWlsZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wa2ctdXRpbHMtMC40LjEub3JpZy9vcGtnLWJ1aWxkCi0rKysgb3BrZy11dGlscy0wLjQuMS9vcGtnLWJ1aWxkCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS9iaW4vc2gKLSsjIS9iaW4vYmFzaAotIAotIDogPDw9Y3V0Ci0gPWhlYWQxIE5BTUUKLUBAIC0xMiw2ICsxMiw3IEBAIG9wa2ctYnVpbGQgLSBjb25zdHJ1Y3QgYW4gLm9wayBmcm9tIGEgZGkKLSAjICAgVXBkYXRlZCB0byB3b3JrIG9uIEZhbWlsaWFyIFByZTAuN3JjMSwgd2l0aCBidXN5Ym94IHRhci4KLSAjICAgTm90ZSBpdCBSZXF1aXJlczogYmludXRpbHMtYXIgKHNpbmNlIHRoZSBidXN5Ym94IGFyIGNhbid0IGNyZWF0ZSkKLSBzZXQgLWUKLStzZXQgLW8gcGlwZWZhaWwKLSAKLSB2ZXJzaW9uPTEuMAotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzXzAuNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzXzAuNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjZjN2EzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc18wLjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLVNVTU1BUlkgPSAiQWRkaXRpb25hbCB1dGlsaXRpZXMgZm9yIHRoZSBvcGtnIHBhY2thZ2UgbWFuYWdlciIKLVNVTU1BUllfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gIlV0aWxpdHkgZm9yIG1hbmFnaW5nIHRoZSBhbHRlcm5hdGl2ZXMgc3lzdGVtIgotU0VDVElPTiA9ICJiYXNlIgotSE9NRVBBR0UgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvb3BrZy11dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vb3BrZy5weTtiZWdpbmxpbmU9MjtlbmRsaW5lPTE4O21kNT02M2NlOWU2YmNjNDQ1MTgxY2Q5ZTRiYWY0YjRjY2MzNSIKLVBST1ZJREVTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1cGRhdGUtYWx0ZXJuYXRpdmVzJywgJ3ZpcnR1YWwvdXBkYXRlLWFsdGVybmF0aXZlcycsICcnLCBkKX0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvJHtCUE59L3NuYXBzaG90LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Td2l0Y2gtYWxsLXNjcmlwdHMtdG8tdXNlLVB5dGhvbi0zLngucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1vcGtnLWJ1aWxkLWNsYW1wLW10aW1lcy10by1TT1VSQ0VfREFURV9FUE9DSC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9waXBlZmFpbC5wYXRjaCBcCi0iCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvb3BrZy11dGlscy9yZWZzLyIKLQotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGMxNDBmODM1YjY5NGEwYzI3Y2ZiMjNkMjQyNmEwMmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWVhOWVmZGQ5ZmUxMzY2MWFkMjUxZTNhMjg2MGMxYzkzMDQ1YWRjZmFhNjY1OWMzZTg2ZDk3NDhlY2RhM2I2ZSIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJiYXNoIgotCi0jIEZvciBuYXRpdmUgYnVpbGRzIHdlIHVzZSB0aGUgaG9zdCBQeXRob24KLVBZVEhPTlJERVBTID0gInB5dGhvbjMgcHl0aG9uMy1zaGVsbCBweXRob24zLWlvIHB5dGhvbjMtbWF0aCBweXRob24zLWNyeXB0IHB5dGhvbjMtbG9nZ2luZyBweXRob24zLWZjbnRsIHB5dGhvbjMtcGlja2xlIHB5dGhvbjMtY29tcHJlc3Npb24gcHl0aG9uMy1zdHJpbmdvbGQiCi1QWVRIT05SREVQU19jbGFzcy1uYXRpdmUgPSAiIgotCi1QQUNLQUdFQ09ORklHID0gInB5dGhvbiB1cGRhdGUtYWx0ZXJuYXRpdmVzIgotUEFDS0FHRUNPTkZJR1tweXRob25dID0gIiwsLCR7UFlUSE9OUkRFUFN9IgotUEFDS0FHRUNPTkZJR1t1cGRhdGUtYWx0ZXJuYXRpdmVzXSA9ICIsLCwiCi0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBQUkVGSVg9JHtwcmVmaXh9IERFU1RESVI9JHtEfSBpbnN0YWxsCi0JaWYgISAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1cGRhdGUtYWx0ZXJuYXRpdmVzJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJcm0gLWYgIiR7RH0ke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyIKLQlmaQotCi0gICAgaWYgISAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBncmVwIC1sWiAiL3Vzci9iaW4vZW52LipweXRob24iICR7RH0ke2JpbmRpcn0vKiB8IHhhcmdzIC0wIHJtCi0gICAgZmkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotCWlmIFsgLWUgIiR7RH0ke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyIgXTsgdGhlbgotCQlzZWQgLWkgJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIC1lICdzLC91c3IvYmluLCR7YmluZGlyfSxnOyBzLC91c3IvbGliLCR7bm9uYXJjaF9saWJkaXJ9LGcnCi0JZmkKLX0KLQotIyBUaGVzZSBhcmUgZW1wdHkgYW5kIHdpbGwgcHVsbCBweXRob24zLWRldiBpbnRvIGltYWdlcyB3aGVyZSBpdCB3b3VsZG4ndAotIyBoYXZlIGJlZW4gb3RoZXJ3aXNlLCBzbyBkb24ndCBnZW5lcmF0ZSB0aGVtLgotUEFDS0FHRVNfcmVtb3ZlID0gIiR7UE59LWRldiAke1BOfS1zdGF0aWNkZXYiCi0KLVBBQ0tBR0VTID0rICJ1cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2ciCi1GSUxFU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAiJHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMiCi1SUFJPVklERVNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMgdXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgiCi1SUkVQTEFDRVNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMtY3dvcnRoIgotUkNPTkZMSUNUU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAidXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgiCi0KLXBrZ19wb3N0cm1fdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnKCkgewotCXJtIC1yZiAkRCR7bm9uYXJjaF9saWJkaXJ9L29wa2cvYWx0ZXJuYXRpdmVzCi0Jcm1kaXIgJEQke25vbmFyY2hfbGliZGlyfS9vcGtnIHx8IHRydWUKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1DTEVBTkJST0tFTiA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzXzAuNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzXzAuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzMTUyNDAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfMC40LjIuYmIKQEAgLTAsMCArMSw2NiBAQAorU1VNTUFSWSA9ICJBZGRpdGlvbmFsIHV0aWxpdGllcyBmb3IgdGhlIG9wa2cgcGFja2FnZSBtYW5hZ2VyIgorU1VNTUFSWV91cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAiVXRpbGl0eSBmb3IgbWFuYWdpbmcgdGhlIGFsdGVybmF0aXZlcyBzeXN0ZW0iCitTRUNUSU9OID0gImJhc2UiCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9vcGtnLXV0aWxzIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9vcGtnLnB5O2JlZ2lubGluZT0yO2VuZGxpbmU9MTg7bWQ1PWZmYTExZmYzYzE1ZWIzMWM2YTdjZWFhMDBjYzlmOTg2IgorUFJPVklERVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAndmlydHVhbC91cGRhdGUtYWx0ZXJuYXRpdmVzJywgJycsIGQpfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS8ke0JQTn0vc25hcHNob3QvJHtCUE59LSR7UFZ9LnRhci5neiBcIAorICAgICAgICAgICBmaWxlOi8vZml4LXJlcHJvZHVjaWJpbGl0eS5wYXRjaCBcCisiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvb3BrZy11dGlscy9yZWZzLyIKKworU1JDX1VSSVttZDVzdW1dID0gImNjMjEwNjUwNjQ0ZmNiOWJiYTA2YWQ1ZWM5NWE2M2VjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU5MjlhZDg3ZDU0MTc4OWUwYjgyZDYyNmRiMDFhMTIwMWFjNDhkZjZmNDlmMjI2MmZjZmI4NmNmODE1ZTVkNmMiCisKK1RBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgorCitSREVQRU5EU18ke1BOfSArPSAiYmFzaCIKKworaW5oZXJpdCBwZXJsbmF0aXZlCisKKyMgRm9yIG5hdGl2ZSBidWlsZHMgd2UgdXNlIHRoZSBob3N0IFB5dGhvbgorUFlUSE9OUkRFUFMgPSAicHl0aG9uMyBweXRob24zLXNoZWxsIHB5dGhvbjMtaW8gcHl0aG9uMy1tYXRoIHB5dGhvbjMtY3J5cHQgcHl0aG9uMy1sb2dnaW5nIHB5dGhvbjMtZmNudGwgcHl0aG9uMy1waWNrbGUgcHl0aG9uMy1jb21wcmVzc2lvbiBweXRob24zLXN0cmluZ29sZCIKK1BZVEhPTlJERVBTX2NsYXNzLW5hdGl2ZSA9ICIiCisKK1BBQ0tBR0VDT05GSUcgPSAicHl0aG9uIHVwZGF0ZS1hbHRlcm5hdGl2ZXMiCitQQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLCwsJHtQWVRIT05SREVQU30iCitQQUNLQUdFQ09ORklHW3VwZGF0ZS1hbHRlcm5hdGl2ZXNdID0gIiwsLCIKKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIFBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IGluc3RhbGwKKwlpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlybSAtZiAiJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIgorCWZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKwlpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWdyZXAgLWxaICIvdXNyL2Jpbi9lbnYuKnB5dGhvbiIgJHtEfSR7YmluZGlyfS8qIHwgeGFyZ3MgLTAgcm0KKwlmaQorCisJaWYgWyAtZSAiJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIiBdOyB0aGVuCisJCXNlZCAtaSAke0R9JHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMgLWUgJ3MsL3Vzci9iaW4sJHtiaW5kaXJ9LGc7IHMsL3Vzci9saWIsJHtub25hcmNoX2xpYmRpcn0sZycKKwlmaQorfQorCisjIFRoZXNlIGFyZSBlbXB0eSBhbmQgd2lsbCBwdWxsIHB5dGhvbjMtZGV2IGludG8gaW1hZ2VzIHdoZXJlIGl0IHdvdWxkbid0CisjIGhhdmUgYmVlbiBvdGhlcndpc2UsIHNvIGRvbid0IGdlbmVyYXRlIHRoZW0uCitQQUNLQUdFU19yZW1vdmUgPSAiJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiIKKworUEFDS0FHRVMgPSsgInVwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyIKK0ZJTEVTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICIke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyIKK1JQUk9WSURFU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAidXBkYXRlLWFsdGVybmF0aXZlcyB1cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aCIKK1JSRVBMQUNFU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAidXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgiCitSQ09ORkxJQ1RTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJ1cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aCIKKworcGtnX3Bvc3RybV91cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2coKSB7CisJcm0gLXJmICREJHtub25hcmNoX2xpYmRpcn0vb3BrZy9hbHRlcm5hdGl2ZXMKKwlybWRpciAkRCR7bm9uYXJjaF9saWJkaXJ9L29wa2cgfHwgdHJ1ZQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK0NMRUFOQlJPS0VOID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2cvb3Blbl9pbm5lci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy9vcGVuX2lubmVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzhlMDk5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy9vcGVuX2lubmVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSBhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tIFdlZCBOb3YgMjAgMjI6MzU6MDIgMjAxOQotRnJvbTogQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLVRvOiA8b3BrZy1kZXZlbEBnb29nbGVncm91cHMuY29tPiwgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci1DQzogQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLVN1YmplY3Q6IFtvcGtnXVtQQVRDSCAyLzJdIG9wZW5faW5uZXI6IGFkZCBzdXBwb3J0IGZvciBlbXB0eSBwYXlsb2FkcwotRGF0ZTogV2VkLCAyMCBOb3YgMjAxOSAxNjozNDo0OCAtMDYwMAotTWVzc2FnZS1JRDogPDIwMTkxMTIwMjIzNDQ4LjI2NTIyLTMtYWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLVgtTWFpbGVyOiBnaXQtc2VuZC1lbWFpbCAyLjIyLjAKLUluLVJlcGx5LVRvOiA8MjAxOTExMjAyMjM0NDguMjY1MjItMS1hbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPgotUmVmZXJlbmNlczogPDIwMTkxMTIwMjIzNDQ4LjI2NTIyLTEtYWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW4KLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotU3VwcG9ydCBmb3IgZW1wdHkgY29tcHJlc3NlZCBwYXlsb2FkcyBuZWVkIHRvIGJlIGV4cGxpY2l0bHkgZW5hYmxlZCBvbg0KLWxpYmFyY2hpdmUuDQotDQotU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4NCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLS0tLQ0KLSBsaWJvcGtnL29wa2dfYXJjaGl2ZS5jIHwgNyArKysrKysrDQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykNCi0NCi1kaWZmIC0tZ2l0IGEvbGlib3BrZy9vcGtnX2FyY2hpdmUuYyBiL2xpYm9wa2cvb3BrZ19hcmNoaXZlLmMNCi1pbmRleCAwZTljY2VhLi5mMTljZWNlIDEwMDY0NA0KLS0tLSBhL2xpYm9wa2cvb3BrZ19hcmNoaXZlLmMNCi0rKysgYi9saWJvcGtnL29wa2dfYXJjaGl2ZS5jDQotQEAgLTYxOCw2ICs2MTgsMTMgQEAgc3RhdGljIHN0cnVjdCBhcmNoaXZlICpvcGVuX2lubmVyKHN0cnVjdCBhcmNoaXZlICpvdXRlcikNCi0gICAgICAgICBnb3RvIGVycl9jbGVhbnVwOw0KLSAgICAgfQ0KLSANCi0rICAgIHIgPSBhcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfZW1wdHkoaW5uZXIpOw0KLSsgICAgaWYgKHIgIT0gQVJDSElWRV9PSykgew0KLSsgICAgICAgIG9wa2dfbXNnKEVSUk9SLCAiRW1wdHkgZm9ybWF0IG5vdCBzdXBwb3J0ZWQ6ICVzXG4iLA0KLSsgICAgICAgICAgICAgICAgIGFyY2hpdmVfZXJyb3Jfc3RyaW5nKGlubmVyKSk7DQotKyAgICAgICAgZ290byBlcnJfY2xlYW51cDsNCi0rICAgIH0NCi0rDQotICAgICByID0gYXJjaGl2ZV9yZWFkX29wZW4oaW5uZXIsIGRhdGEsIE5VTEwsIGlubmVyX3JlYWQsIGlubmVyX2Nsb3NlKTsNCi0gICAgIGlmIChyICE9IEFSQ0hJVkVfT0spIHsNCi0gICAgICAgICBvcGtnX21zZyhFUlJPUiwgIkZhaWxlZCB0byBvcGVuIGlubmVyIGFyY2hpdmU6ICVzXG4iLA0KLS0tIA0KLTIuMjIuMA0KLQ0KLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnL29wa2dfYXJjaGl2ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy9vcGtnX2FyY2hpdmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlMWViYWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnL29wa2dfYXJjaGl2ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gYWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbSBXZWQgTm92IDIwIDIyOjM1OjAxIDIwMTkKLVJldHVybi1QYXRoOiA8cmljaGFyZC5wdXJkaWUrY2FmXz1ycHVyZGllPXJwc3lzLm5ldEBsaW51eGZvdW5kYXRpb24ub3JnPgotRnJvbTogQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLVRvOiA8b3BrZy1kZXZlbEBnb29nbGVncm91cHMuY29tPiwgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci1DQzogQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLVN1YmplY3Q6IFtvcGtnXVtQQVRDSCAxLzJdIG9wa2dfYXJjaGl2ZS5jOiBhdm9pZCBkb3VibGUgZnJlZSBvbiB1bmNvbXByZXNzCi0gZXJyb3IKLURhdGU6IFdlZCwgMjAgTm92IDIwMTkgMTY6MzQ6NDcgLTA2MDAKLU1lc3NhZ2UtSUQ6IDwyMDE5MTEyMDIyMzQ0OC4yNjUyMi0yLWFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+Ci1YLU1haWxlcjogZ2l0LXNlbmQtZW1haWwgMi4yMi4wCi1Jbi1SZXBseS1UbzogPDIwMTkxMTIwMjIzNDQ4LjI2NTIyLTEtYWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLVJlZmVyZW5jZXM6IDwyMDE5MTEyMDIyMzQ0OC4yNjUyMi0xLWFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+Ci1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCi1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVRoZSBvcGVuLWlubmVyIGZ1bmN0aW9uIGNhbGxzIGFyY2hpdmVfcmVhZF9vcGVuLiBPbiBlcnJvciwNCi1hcmNoaXZlX3JlYWRfb3BlbiBjYWxscyBpbm5lcl9jbG9zZSwgd2hpY2ggYWxzbyBjbG9zZXMgdGhlIG91dHRlcg0KLWFyY2hpdmUuIE9uIGVycm9yLCByZXR1cm4gTlVMTCBkaXJlY3RseSB0byBhdm9pZCBkb3VibGUgZnJlZS4NCi0NCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4NCi0tLS0NCi0gbGlib3BrZy9vcGtnX2FyY2hpdmUuYyB8IDQgKystLQ0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KLQ0KLWRpZmYgLS1naXQgYS9saWJvcGtnL29wa2dfYXJjaGl2ZS5jIGIvbGlib3BrZy9vcGtnX2FyY2hpdmUuYw0KLWluZGV4IDNkODdkYjEuLjBlOWNjZWEgMTAwNjQ0DQotLS0tIGEvbGlib3BrZy9vcGtnX2FyY2hpdmUuYw0KLSsrKyBiL2xpYm9wa2cvb3BrZ19hcmNoaXZlLmMNCi1AQCAtNjIyLDcgKzYyMiw3IEBAIHN0YXRpYyBzdHJ1Y3QgYXJjaGl2ZSAqb3Blbl9pbm5lcihzdHJ1Y3QgYXJjaGl2ZSAqb3V0ZXIpDQotICAgICBpZiAociAhPSBBUkNISVZFX09LKSB7DQotICAgICAgICAgb3BrZ19tc2coRVJST1IsICJGYWlsZWQgdG8gb3BlbiBpbm5lciBhcmNoaXZlOiAlc1xuIiwNCi0gICAgICAgICAgICAgICAgICBhcmNoaXZlX2Vycm9yX3N0cmluZyhpbm5lcikpOw0KLS0gICAgICAgIGdvdG8gZXJyX2NsZWFudXA7DQotKyAgICAgICAgcmV0dXJuIE5VTEw7DQotICAgICB9DQotIA0KLSAgICAgcmV0dXJuIGlubmVyOw0KLUBAIC02ODMsNyArNjgzLDcgQEAgc3RhdGljIHN0cnVjdCBhcmNoaXZlICpleHRyYWN0X291dGVyKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICphcm5hbWUpDQotIA0KLSAgICAgaW5uZXIgPSBvcGVuX2lubmVyKG91dGVyKTsNCi0gICAgIGlmICghaW5uZXIpDQotLSAgICAgICAgZ290byBlcnJfY2xlYW51cDsNCi0rICAgICAgICByZXR1cm4gTlVMTDsNCi0gDQotICAgICByZXR1cm4gaW5uZXI7DQotIA0KLS0tIA0KLTIuMjIuMA0KLQ0KLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnXzAuNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnXzAuNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGFlOGIzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlbiBQYWNrYWdlIE1hbmFnZXIiCi1TVU1NQVJZX2xpYm9wa2cgPSAiT3BlbiBQYWNrYWdlIE1hbmFnZXIgbGlicmFyeSIKLVNFQ1RJT04gPSAiYmFzZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGtnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL29wa2cvaXNzdWVzL2xpc3QiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9vcGtnLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0yMTttZDU9OTA0MzVhNTE5YzZlYTY5ZWYyMmU0YTg4YmNjNTJmYTAiCi0KLURFUEVORFMgPSAibGliYXJjaGl2ZSIKLQotUEUgPSAiMSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vb3BrZy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtb3BrZ19jb25mLWNyZWF0ZS1vcGtnLmxvY2staW4tcnVuLWluc3RlYWQtb2YtdmFyLXJ1bi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGtnX2FyY2hpdmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3Blbl9pbm5lci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmEwYzIxMzA1ZmM5M2IyNmU4NDQ5ODFlZjEwMGRjODUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDVhYzFlMDM3ZDM4NzdmNjM1ZDg4M2Y4YTU1NWUxNzI4ODNhMjVkM2VlYjc5ODZjNzU4OTBmZGQzMTI1MGE0MyIKLQotIyBUaGlzIG5lZWRzIHRvIGJlIGJlZm9yZSBwdGVzdCBpbmhlcml0LCBvdGhlcndpc2UgYWxsIHB0ZXN0IGZpbGVzIGVuZCBwYWNrYWdlZAotIyBpbiBsaWJvcGtnIHBhY2thZ2UgaWYgT1BLR0xJQkRJUiA9PSBsaWJkaXIsIGJlY2F1c2UgZGVmYXVsdAotIyBQVEVTVF9QQVRIID89ICIke2xpYmRpcn0vJHtCUE59L3B0ZXN0IgotUEFDS0FHRVMgPSsgImxpYm9wa2ciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwdGVzdAotCi10YXJnZXRfbG9jYWxzdGF0ZWRpciA6PSAiJHtsb2NhbHN0YXRlZGlyfSIKLU9QS0dMSUJESVIgPz89ICIke3RhcmdldF9sb2NhbHN0YXRlZGlyfS9saWIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJsaWJzb2x2IgotCi1QQUNLQUdFQ09ORklHW2dwZ10gPSAiLS1lbmFibGUtZ3BnLC0tZGlzYWJsZS1ncGcsXAotICAgIGdudXBnIGdwZ21lIGxpYmdwZy1lcnJvcixcCi0gICAgJHtAICJnbnVwZyIgaWYgKCJuYXRpdmUiIGluIGQuZ2V0VmFyKCJQTiIpKSBlbHNlICJnbnVwZy1ncGcifVwKLSAgICAiCi1QQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCIKLVBBQ0tBR0VDT05GSUdbc3NsLWN1cmxdID0gIi0tZW5hYmxlLXNzbC1jdXJsLC0tZGlzYWJsZS1zc2wtY3VybCxjdXJsIG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbc2hhMjU2XSA9ICItLWVuYWJsZS1zaGEyNTYsLS1kaXNhYmxlLXNoYTI1NiIKLVBBQ0tBR0VDT05GSUdbbGlic29sdl0gPSAiLS13aXRoLWxpYnNvbHYsLS13aXRob3V0LWxpYnNvbHYsbGlic29sdiIKLQotRVhUUkFfT0VDT05GICs9ICIgLS1kaXNhYmxlLXBhdGhmaW5kZXIiCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tbG9jYWxzdGF0ZWRpcj0vJHtAb3MucGF0aC5yZWxwYXRoKCcke2xvY2Fsc3RhdGVkaXJ9JywgJyR7U1RBR0lOR19ESVJfTkFUSVZFfScpfSAtLXN5c2NvbmZkaXI9LyR7QG9zLnBhdGgucmVscGF0aCgnJHtzeXNjb25mZGlyfScsICcke1NUQUdJTkdfRElSX05BVElWRX0nKX0iCi0KLSMgUmVsZWFzZSB0YXJiYWxsIGhhcyB1bnVzZWQgYmluYXJpZXMgb24gdGhlIHRlc3RzIGZvbGRlciwgYXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IGF1dG9tYWtlLgotIyBGb3Igbm93LCBkZWxldGUgdGhlbSB0byBhdm9pZCBwYWNrYWdpbmcgZXJyb3JzICh3cm9uZyBhcmNoaXRlY3R1cmUpCi1kb191bnBhY2tfYXBwZW5kICgpIHsKLSAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ3JlbW92ZV90ZXN0X2JpbmFyaWVzJywgZCkKLX0KLQotcmVtb3ZlX3Rlc3RfYmluYXJpZXMgKCkgewotCXJtICR7V09SS0RJUn0vb3BrZy0ke1BWfS90ZXN0cy9saWJvcGtnX3Rlc3QqCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L29wa2cKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGtnLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYKLQllY2hvICJvcHRpb24gbGlzdHNfZGlyICR7T1BLR0xJQkRJUn0vb3BrZy9saXN0cyIgPj4ke0R9JHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZgotCi0JIyBXZSBuZWVkIHRvIGNyZWF0ZSB0aGUgbG9jayBkaXJlY3RvcnkKLQlpbnN0YWxsIC1kICR7RH0ke09QS0dMSUJESVJ9L29wa2cKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0Jc2VkIC1pIC1lICcvQGVjaG8gJF4vZCcgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUKLQlzZWQgLWkgLWUgJy9AUFlUSE9OUEFUSD0uICQoUFlUSE9OKSAkXi9hXFx0QGlmIFsgIiQkPyIgIT0gIjAiIF07dGhlbiBlY2hvICJGQUlMOiIkXjtlbHNlIGVjaG8gIlBBU1M6IiReO2ZpJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQotfQotCi1SREVQRU5EU18ke1BOfSA9ICIke1ZJUlRVQUwtUlVOVElNRV91cGRhdGUtYWx0ZXJuYXRpdmVzfSBvcGtnLWFyY2gtY29uZmlnIGxpYmFyY2hpdmUiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIiIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIGJpbnV0aWxzIHB5dGhvbjMtY29yZSBweXRob24zLWNvbXByZXNzaW9uIgotUlJFUExBQ0VTXyR7UE59ID0gIm9wa2ctbm9ncGcgb3BrZy1jb2xsYXRlcmFsIgotUkNPTkZMSUNUU18ke1BOfSA9ICJvcGtnLWNvbGxhdGVyYWwiCi1SUFJPVklERVNfJHtQTn0gPSAib3BrZy1jb2xsYXRlcmFsIgotCi1GSUxFU19saWJvcGtnID0gIiR7bGliZGlyfS8qLnNvLiogJHtPUEtHTElCRElSfS9vcGtnLyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NmE3NGRjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnXzAuNC4yLmJiCkBAIC0wLDAgKzEsNzQgQEAKK1NVTU1BUlkgPSAiT3BlbiBQYWNrYWdlIE1hbmFnZXIiCitTVU1NQVJZX2xpYm9wa2cgPSAiT3BlbiBQYWNrYWdlIE1hbmFnZXIgbGlicmFyeSIKK1NFQ1RJT04gPSAiYmFzZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGtnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL29wa2cvaXNzdWVzL2xpc3QiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9vcGtnLmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xODttZDU9ZDYyMDBiMGYyYjQxZGVlMjc4YWE1ZmFkMzMzZWVjYWUiCisKK0RFUEVORFMgPSAibGliYXJjaGl2ZSIKKworUEUgPSAiMSIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vb3BrZy5jb25mIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtb3BrZ19jb25mLWNyZWF0ZS1vcGtnLmxvY2staW4tcnVuLWluc3RlYWQtb2YtdmFyLXJ1bi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmQxM2U1ZGZjMWMyNTM2ZjBjN2IyZTE1Zjc5NTI3OGUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODY4ODc4NTJjNDM0NTdlZGZmZjlkOGI2ZDk1MjBmM2YxY2RkNTVmMjVlYjYwMGE2ZWIzMWUxYzRlMTUxZTEwNiIKKworIyBUaGlzIG5lZWRzIHRvIGJlIGJlZm9yZSBwdGVzdCBpbmhlcml0LCBvdGhlcndpc2UgYWxsIHB0ZXN0IGZpbGVzIGVuZCBwYWNrYWdlZAorIyBpbiBsaWJvcGtnIHBhY2thZ2UgaWYgT1BLR0xJQkRJUiA9PSBsaWJkaXIsIGJlY2F1c2UgZGVmYXVsdAorIyBQVEVTVF9QQVRIID89ICIke2xpYmRpcn0vJHtCUE59L3B0ZXN0IgorUEFDS0FHRVMgPSsgImxpYm9wa2ciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwdGVzdAorCit0YXJnZXRfbG9jYWxzdGF0ZWRpciA6PSAiJHtsb2NhbHN0YXRlZGlyfSIKK09QS0dMSUJESVIgPz89ICIke3RhcmdldF9sb2NhbHN0YXRlZGlyfS9saWIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJsaWJzb2x2IgorCitQQUNLQUdFQ09ORklHW2dwZ10gPSAiLS1lbmFibGUtZ3BnLC0tZGlzYWJsZS1ncGcsXAorICAgIGdudXBnIGdwZ21lIGxpYmdwZy1lcnJvcixcCisgICAgJHtAICJnbnVwZyIgaWYgKCJuYXRpdmUiIGluIGQuZ2V0VmFyKCJQTiIpKSBlbHNlICJnbnVwZy1ncGcifVwKKyAgICAiCitQQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCIKK1BBQ0tBR0VDT05GSUdbc3NsLWN1cmxdID0gIi0tZW5hYmxlLXNzbC1jdXJsLC0tZGlzYWJsZS1zc2wtY3VybCxjdXJsIG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbc2hhMjU2XSA9ICItLWVuYWJsZS1zaGEyNTYsLS1kaXNhYmxlLXNoYTI1NiIKK1BBQ0tBR0VDT05GSUdbbGlic29sdl0gPSAiLS13aXRoLWxpYnNvbHYsLS13aXRob3V0LWxpYnNvbHYsbGlic29sdiIKKworRVhUUkFfT0VDT05GICs9ICIgLS1kaXNhYmxlLXBhdGhmaW5kZXIiCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tbG9jYWxzdGF0ZWRpcj0vJHtAb3MucGF0aC5yZWxwYXRoKCcke2xvY2Fsc3RhdGVkaXJ9JywgJyR7U1RBR0lOR19ESVJfTkFUSVZFfScpfSAtLXN5c2NvbmZkaXI9LyR7QG9zLnBhdGgucmVscGF0aCgnJHtzeXNjb25mZGlyfScsICcke1NUQUdJTkdfRElSX05BVElWRX0nKX0iCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L29wa2cKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGtnLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYKKwllY2hvICJvcHRpb24gbGlzdHNfZGlyICR7T1BLR0xJQkRJUn0vb3BrZy9saXN0cyIgPj4ke0R9JHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZgorCisJIyBXZSBuZWVkIHRvIGNyZWF0ZSB0aGUgbG9jayBkaXJlY3RvcnkKKwlpbnN0YWxsIC1kICR7RH0ke09QS0dMSUJESVJ9L29wa2cKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisJc2VkIC1pIC1lICcvQGVjaG8gJF4vZCcgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUKKwlzZWQgLWkgLWUgJy9AUFlUSE9OUEFUSD0uICQoUFlUSE9OKSAkXi9hXFx0QGlmIFsgIiQkPyIgIT0gIjAiIF07dGhlbiBlY2hvICJGQUlMOiIkXjtlbHNlIGVjaG8gIlBBU1M6IiReO2ZpJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQorfQorCitSREVQRU5EU18ke1BOfSA9ICIke1ZJUlRVQUwtUlVOVElNRV91cGRhdGUtYWx0ZXJuYXRpdmVzfSBvcGtnLWFyY2gtY29uZmlnIGxpYmFyY2hpdmUiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIiIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIGJpbnV0aWxzIHB5dGhvbjMtY29yZSBweXRob24zLWNvbXByZXNzaW9uIgorUlJFUExBQ0VTXyR7UE59ID0gIm9wa2ctbm9ncGcgb3BrZy1jb2xsYXRlcmFsIgorUkNPTkZMSUNUU18ke1BOfSA9ICJvcGtnLWNvbGxhdGVyYWwiCitSUFJPVklERVNfJHtQTn0gPSAib3BrZy1jb2xsYXRlcmFsIgorCitGSUxFU19saWJvcGtnID0gIiR7bGliZGlyfS8qLnNvLiogJHtPUEtHTElCRElSfS9vcGtnLyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjI5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3JjL29yY18wLjQuMjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzMTM1NzYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3JjL29yY18wLjQuMjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIk9wdGltaXNlZCBJbm5lciBMb29wIFJ1bnRpbWUgQ29tcGlsZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9tb2R1bGVzL29yYy5odG1sIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UgJiBCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xNDAwYmQ5ZDA5ZThhZjU2YjllYzk4MmIzZDg1Nzk3ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvb3JjL29yYy0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiMjU3OTk5MTdjN2QzMWE4OTFkNWUzMmI4M2FkMDhmNmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGY4OTAxZjkxNDRiNWVjMTdkZmZkYjMzNTQ4YjVmNGM3ZjgwNDliMGQxMDIzYmUzNDYyY2RkNjRlYzVhM2FiMiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1QQUNLQUdFUyA9KyAib3JjLWV4YW1wbGVzIgotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYm9yYy0uKiIKLUZJTEVTX29yYy1leGFtcGxlcyA9ICIke2xpYmRpcn0vb3JjLyoiCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGxpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0nKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgcidebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnT1JDICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQotfQotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLSAgICBzZWQgLWkgLWUgJ3MjL3RtcCMuI2cnICR7U30vb3JjL29yY2NvZGVtZW0uYwotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3JjL29yY18wLjQuMzEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4zMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDRkYzMxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3JjL29yY18wLjQuMzEuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJPcHRpbWlzZWQgSW5uZXIgTG9vcCBSdW50aW1lIENvbXBpbGVyIgorSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvbW9kdWxlcy9vcmMuaHRtbCIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlICYgQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTQwMGJkOWQwOWU4YWY1NmI5ZWM5ODJiM2Q4NTc5N2UiCisKK1NSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL29yYy9vcmMtJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImI2Yjk1YTQ3ZWZmNzEzZTkxODczZTJjMmIxYTViM2FkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEwYWI1ZjEwYTZhOWFlN2MzYTZiNDIxODI0NjU2NGMzYmYwMGQ2NTdjYmRmNTg3ZTZkMzRlYzNlZjA2MTYwNzUiCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIGd0ay1kb2MKKworR1RLRE9DX01FU09OX09QVElPTiA9ICJndGtfZG9jIgorR1RLRE9DX01FU09OX0VOQUJMRV9GTEFHID0gImVuYWJsZWQiCitHVEtET0NfTUVTT05fRElTQUJMRV9GTEFHID0gImRpc2FibGVkIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1BBQ0tBR0VTID0rICJvcmMtZXhhbXBsZXMiCitQQUNLQUdFU19EWU5BTUlDICs9ICJebGlib3JjLS4qIgorRklMRVNfb3JjLWV4YW1wbGVzID0gIiR7bGliZGlyfS9vcmMvKiIKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS8qIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfScpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCByJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdPUkMgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUgKCkgeworICAgIHNlZCAtaSAtZSAncyMvdG1wIy4jZycgJHtTfS9vcmMvb3JjY29kZW1lbS5jCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaC9wYXRjaF8yLjcuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoXzIuNy42LmJiCmluZGV4IDVkN2Y1NWYuLmI1ODk3YjMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoXzIuNy42LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoXzIuNy42LmJiCkBAIC0yMiwzICsyMiw2IEBACiBQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsIGQpfSIKIFBBQ0tBR0VDT05GSUdbeGF0dHJdID0gIi0tZW5hYmxlLXhhdHRyLC0tZGlzYWJsZS14YXR0cixhdHRyLCIKIAorUFJPVklERVNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgcGF0Y2gtcmVwbGFjZW1lbnQtbmF0aXZlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZl8wLjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2hlbGYvcGF0Y2hlbGZfMC4xMC5iYgppbmRleCA1ODAxMDhlLi5jYzk4M2UwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZl8wLjEwLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmXzAuMTAuYmIKQEAgLTEsNCArMSw0IEBACi1TUkNfVVJJID0gImh0dHA6Ly9uaXhvcy5vcmcvcmVsZWFzZXMvJHtCUE59LyR7QlBOfS0ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCitTUkNfVVJJID0gImh0dHBzOi8vbml4b3Mub3JnL3JlbGVhc2VzLyR7QlBOfS8ke0JQTn0tJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAogICAgICAgICAgICBmaWxlOi8vaGFuZGxlLXJlYWQtb25seS1maWxlcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtYWRqdXN0aW5nLXN0YXJ0UGFnZS5wYXRjaCBcCiAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvMDAwMS1DaGVja0xpYi5wbS1kby1ub3QtYXR0ZW1wdC10by1ydW4tYS1jcm9zcy1leGVjdXRhYmxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy8wMDAxLUNoZWNrTGliLnBtLWRvLW5vdC1hdHRlbXB0LXRvLXJ1bi1hLWNyb3NzLWV4ZWN1dGFibGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzViYmU3OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvMDAwMS1DaGVja0xpYi5wbS1kby1ub3QtYXR0ZW1wdC10by1ydW4tYS1jcm9zcy1leGVjdXRhYmxlLnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK0Zyb20gYTAzM2M5ZWNlMTJiNmVlYWQ0OGVlZDYzZjEwNmNjZGVjNjE1OWIwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBEZWMgMjAxOSAxNjoyNjo1NSArMDEwMAorU3ViamVjdDogW1BBVENIXSBDaGVja0xpYi5wbTogZG8gbm90IGF0dGVtcHQgdG8gcnVuIGEgY3Jvc3MgZXhlY3V0YWJsZQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGluYy9EZXZlbC9DaGVja0xpYi5wbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2luYy9EZXZlbC9DaGVja0xpYi5wbSBiL2luYy9EZXZlbC9DaGVja0xpYi5wbQoraW5kZXggMzZhNDUxYS4uYjA0YWNjMSAxMDA2NDQKKy0tLSBhL2luYy9EZXZlbC9DaGVja0xpYi5wbQorKysrIGIvaW5jL0RldmVsL0NoZWNrTGliLnBtCitAQCAtMzMwLDcgKzMzMCw3IEBAIHN1YiBhc3NlcnRfbGliIHsKKyAgICAgICAgIHB1c2ggQG1pc3NpbmcsICRsaWIgaWYgJHJ2ICE9IDAgfHwgIS14ICRleGVmaWxlOworICAgICAgICAgbXkgJGFic2V4ZWZpbGUgPSBGaWxlOjpTcGVjLT5yZWwyYWJzKCRleGVmaWxlKTsKKyAgICAgICAgICRhYnNleGVmaWxlID0gJyInIC4gJGFic2V4ZWZpbGUgLiAnIicgaWYgJGFic2V4ZWZpbGUgPX4gbS9ccy87CistICAgICAgICBwdXNoIEB3cm9uZ3Jlc3VsdCwgJGxpYiBpZiAkcnYgPT0gMCAmJiAteCAkZXhlZmlsZSAmJiBzeXN0ZW0oJGFic2V4ZWZpbGUpICE9IDA7CisrICAgICAgICBwdXNoIEB3cm9uZ3Jlc3VsdCwgJGxpYiBpZiAkcnYgPT0gMCAmJiAteCAkZXhlZmlsZSAmJiAwICE9IDA7CisgICAgICAgICB1bmxpbmsgJG9maWxlIGlmIC1lICRvZmlsZTsKKyAgICAgICAgIF9jbGVhbnVwX2V4ZSgkZXhlZmlsZSk7CisgICAgIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvMDAwMS1QQVRDSC1wZXJsLTEzNDExNy1DbG9zZS1EQVRBLWluLWxvY190b29scy5wbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvMDAwMS1QQVRDSC1wZXJsLTEzNDExNy1DbG9zZS1EQVRBLWluLWxvY190b29scy5wbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWNhZTBkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy8wMDAxLVBBVENILXBlcmwtMTM0MTE3LUNsb3NlLURBVEEtaW4tbG9jX3Rvb2xzLnBsLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gYTA0YTc1ZjIwZjAzYWEwOGNlODExOGIzYjBiM2Y5M2ViM2U5OTdjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY2hhcmQgTGVhY2ggPHJpY2grcGVybEBoeXBoZW4tZGFzaC1oeXBoZW4uaW5mbz4KK0RhdGU6IFN1biwgMTkgTWF5IDIwMTkgMjA6MTY6NDEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gUEFUQ0g6IFtwZXJsICMxMzQxMTddIENsb3NlIERBVEEgaW4gbG9jX3Rvb2xzLnBsCisKK1RoaXMgcHJldmVudHMgdW5leHBlY3RlZCB0ZXh0IGFuZCBmaXhlcyB0ZXN0IGxpYi93YXJuaW5ncy50CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2EwNGE3NWYyMGYwM2FhMDhjZTgxMThiM2IwYjNmOTNlYjNlOTk3YzVdCisKK1NpZ25lZC1vZmYtYnk6IE1hdHRoZXcgWmVuZyA8bWF0dGhldy56ZW5nQHdpbmRyaXZlci5jb20+CisKKy0tLQorIHQvbG9jX3Rvb2xzLnBsIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdC9sb2NfdG9vbHMucGwgYi90L2xvY190b29scy5wbAoraW5kZXggYzc2ZTI5Mzg4YS4uYmVlYmQ5OGQ4OCAxMDA2NDQKKy0tLSBhL3QvbG9jX3Rvb2xzLnBsCisrKysgYi90L2xvY190b29scy5wbAorQEAgLTQyMSw3ICs0MjEsNyBAQCBzdWIgZmluZF9sb2NhbGVzICgkOyQpIHsKKyAgICAgICAgIH0KKworICAgICAgICAgIyBUaGUgcmVzdCBvZiB0aGUgbG9jYWxlcyBhcmUgaW4gdGhpcyBmaWxlLgorLSAgICAgICAgcHVzaCBARGF0YSwgPERBVEE+OworKyAgICAgICAgcHVzaCBARGF0YSwgPERBVEE+OyBjbG9zZSBEQVRBOworCisgICAgICAgICBmb3JlYWNoIG15ICRsaW5lIChARGF0YSkgeworICAgICAgICAgICAgIG15ICgkbG9jYWxlX25hbWUsICRsYW5ndWFnZV9jb2RlcywgJGNvdW50cnlfY29kZXMsICRlbmNvZGluZ3MpID0KKy0tCisyLjI1LjAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvZGV0ZXJtaW5pc20ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL2RldGVybWluaXNtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjZGQ1MmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL2RldGVybWluaXNtLnBhdGNoCkBAIC0wLDAgKzEsNjggQEAKK0ZpeGVzIHRvIG1ha2UgdGhlIHBlcmwgYnVpbGQgcmVwcm9kdWNpYmxlOgorCithKSBSZW1vdmUgdGhlIFxuIGZyb20gY29uZmlndXJlX2F0dHIuc2ggc2luY2UgaXQgZ2V0cyBxdW90ZWQgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uCisgICB3aGV0aGVyIHRoZSBzaGVsbCBpcyBiYXNoIG9yIGRhc2ggd2hpY2ggY2FuIGNhdXNlIHRoZSB0ZXN0IHJlc3VsdCB0byBiZSBpbmNvcnJlY3QuCisgICBSZXBvcnRlZCB1cHN0cmVhbTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc3YvcGVybC1jcm9zcy9pc3N1ZXMvODcKKworYikgU29ydCB0aGUgb3JkZXIgb2YgdGhlIG1vZHVsZSBsaXN0cyBmcm9tIGNvbmZpZ3VyZV9tb2RzLnNoIHNpbmNlIG90aGVyd2lzZQorICAgdGhlIHJlc3VsdCBpc24ndCB0aGUgc2FtZSBsZWFkaW5nIHRvIG1ha2VmaWxlIGRpZmZlcmVuY2VzLgorICAgUmVwb3J0ZWQgdXBzdHJlYW06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnN2L3BlcmwtY3Jvc3MvaXNzdWVzLzg4CisKK2MpIFNvcnQgdGhlIEVuY29kZTo6Qnl0ZSBieXRlX3QuZm5tIGZpbGUgb3V0cHV0IChhbmQgdGhlIG1ha2VmaWxlIGRlcGVuZHMgd2hpbHN0IAorICAgdGhlcmUgZm9yIGdvb2QgbWVhc3VyZSkKKyAgIFRoaXMgbmVlZHMgdG8gZ28gdG8gdXBzdHJlYW0gcGVybCAobm90IGRvbmUpCisKK2QpIFVzZSBiYXNoIGZvciBwZXJsLWNyb3NzIGNvbmZpZ3VyZSBzaW5jZSBvdGhlcndpc2UgdHJubCBnZXRzIHNldCB0byAiXG4iIHdpdGggYmFzaAorICAgYW5kICIiIHdpdGggZGFzaAorICAgUmVwb3J0ZWQgdXBzdHJlYW06IGh0dHBzOi8vZ2l0aHViLmNvbS9hcnN2L3BlcmwtY3Jvc3MvaXNzdWVzLzg3CisKK1JQIDIwMjAvMi83CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbNzUlIHN1Ym1pdHRlZF0KK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnCisKK0luZGV4OiBwZXJsLTUuMzAuMS9jbmYvY29uZmlndXJlX21vZHMuc2gKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwZXJsLTUuMzAuMS5vcmlnL2NuZi9jb25maWd1cmVfbW9kcy5zaAorKysrIHBlcmwtNS4zMC4xL2NuZi9jb25maWd1cmVfbW9kcy5zaAorQEAgLTgyLDcgKzgyLDcgQEAgZXh0b25seWlmKCkgeworIH0KKyAKKyBkZWZpbmV0cmltc3BhY2VzKCkgeworLQl2PWBlY2hvICIkMiIgfCBzZWQgLXIgLWUgJ3MvXHMrLyAvZycgLWUgJ3MvXlxzKy8vJyAtZSAncy9ccyskLy8nYAorKwl2PWBlY2hvICIkMiIgfCBzZWQgLXIgLWUgJ3MvXHMrLyAvZycgLWUgJ3MvXlxzKy8vJyAtZSAncy9ccyskLy8nIHwgeGFyZ3MgLW4xIHwgTEFORz1DIHNvcnQgfCB4YXJnc2AKKyAJZGVmaW5lICQxICIkdiIKKyB9CisgCitJbmRleDogcGVybC01LjMwLjEvY3Bhbi9FbmNvZGUvQnl0ZS9NYWtlZmlsZS5QTAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBlcmwtNS4zMC4xLm9yaWcvY3Bhbi9FbmNvZGUvQnl0ZS9NYWtlZmlsZS5QTAorKysrIHBlcmwtNS4zMC4xL2NwYW4vRW5jb2RlL0J5dGUvTWFrZWZpbGUuUEwKK0BAIC0xNzEsNyArMTcxLDcgQEAgc3ViIHBvc3RhbWJsZQorICAgICBteSAkbGVuZ3Roc29mYXIgPSBsZW5ndGgoJHN0cik7CisgICAgIG15ICRjb250aW51YXRvciA9ICcnOworICAgICAkc3RyIC49ICIkdGFibGUuYyA6ICRlbmMyeHMgTWFrZWZpbGUuUEwiOworLSAgICBmb3JlYWNoIG15ICRmaWxlIChAeyR0YWJsZXN7JHRhYmxlfX0pCisrICAgIGZvcmVhY2ggbXkgJGZpbGUgKHNvcnQgKEB7JHRhYmxlc3skdGFibGV9fSkpCisgICAgIHsKKyAgICAgICAgICRzdHIgLj0gJGNvbnRpbnVhdG9yLicgJy4kc2VsZi0+Y2F0ZmlsZSgkZGlyLCRmaWxlKTsKKyAgICAgICAgIGlmICggbGVuZ3RoKCRzdHIpLSRsZW5ndGhzb2ZhciA+IDEyOCokbnVtbGluZXMgKQorQEAgLTE4OSw3ICsxODksNyBAQCBzdWIgcG9zdGFtYmxlCisgICAgICAgICBxcXtcblx0XCQoUEVSTCkgJHBsaWIgJGVuYzJ4cyAkdWNvcHRzIC1vIFwkXEAgLWYgJHRhYmxlLmZubVxuXG59OworICAgICBvcGVuIChGSUxFTElTVCwgIj4kdGFibGUuZm5tIikKKyAgICAgICAgIHx8IGRpZSAiQ291bGQgbm90IG9wZW4gJHRhYmxlLmZubTogJCEiOworLSAgICBmb3JlYWNoIG15ICRmaWxlIChAeyR0YWJsZXN7JHRhYmxlfX0pCisrICAgIGZvcmVhY2ggbXkgJGZpbGUgKHNvcnQgKEB7JHRhYmxlc3skdGFibGV9fSkpCisgICAgIHsKKyAgICAgICAgIHByaW50IEZJTEVMSVNUICRzZWxmLT5jYXRmaWxlKCRkaXIsJGZpbGUpIC4gIlxuIjsKKyAgICAgfQorSW5kZXg6IHBlcmwtNS4zMC4xL2NuZi9jb25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwZXJsLTUuMzAuMS5vcmlnL2NuZi9jb25maWd1cmUKKysrKyBwZXJsLTUuMzAuMS9jbmYvY29uZmlndXJlCitAQCAtMSw0ICsxLDQgQEAKKy0jIS9iaW4vc2gKKysjIS9iaW4vYmFzaAorIAorIGJhc2U9JHswJS8qfTsgdGVzdCAteiAiJGJhc2UiICYmIGJhc2U9LgorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9lbmNvZGVmaXgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL2VuY29kZWZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTZlZDBkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9lbmNvZGVmaXgucGF0Y2gKQEAgLTAsMCArMSwyMCBAQAorVGhlIGNvZGUgaXMgZW5jb2RpbmcgaG9zdCBjb21waWxlciBwYXJhbWV0ZXJzIGludG8gdGFyZ2V0IGJ1aWxkcy4gQXZvaWQKK3RoaXMgZm9yIG91ciB0YXJnZXQgYnVpbGRzIChwYXRjaCBpcyB0YXJnZXQgc3BlY2lmaWMsIG5vdCBuYXRpdmUpCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbQ3Jvc3MgY29tcGlsZSBoYWNrXQorUlAgMjAyMC8yLzE4CitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KKworSW5kZXg6IHBlcmwtNS4zMC4xL2NwYW4vRW5jb2RlL2Jpbi9lbmMyeHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwZXJsLTUuMzAuMS5vcmlnL2NwYW4vRW5jb2RlL2Jpbi9lbmMyeHMKKysrKyBwZXJsLTUuMzAuMS9jcGFuL0VuY29kZS9iaW4vZW5jMnhzCitAQCAtMTk1LDcgKzE5NSw3IEBAIHN1YiBjb21waWxlcl9pbmZvIHsKKyAgICAgIyBhYm92ZSBiZWNvbWVzIGZhbHNlLgorICAgICBteSAkc2l6ZWQgID0gJGRlY2xhcmF0aW9uICYmICEoJGNvbXBhdCAmJiAhJHBlZGFudGljKTsKKyAKKy0gICAgcmV0dXJuICgkY3BwLCAkc3RhdGljLCAkc2l6ZWQpOworKyAgICByZXR1cm4gKDAsIDEsIDEpOworIH0KKyAKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvZml4LXNldGdyb3VwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9maXgtc2V0Z3JvdXAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNDkwZTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9maXgtc2V0Z3JvdXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1UZXN0IHNjcmlwdCB0byByZXByb2R1Y2UgdGhlIHByb2JsZW06Ci0KLSMhL3Vzci9iaW4vZW52IHBlcmwKLSQpID0gIjIgMiI7Ci1wcmludCAkITsKLQotUmVzdWx0IGZyb20gcGVybCA1LjI4IHVuZGVyIHN0cmFjZToKLQotc2V0Z3JvdXBzKDEsIFsyXSkgICAgICAgICAgICAgICAgICAgICAgID0gMAotc2V0cmVzZ2lkKC0xLCAyLCAtMSkgICAgICAgICAgICAgICAgICAgID0gMAotCi1SZXN1bHQgZnJvbSBwZXJsIDUuMzAgdW5kZXIgc3RyYWNlOgotCi1zZXRncm91cHMoMSwgWy0xXSkgICAgICAgICAgICAgICAgICAgICAgPSAtMSBFSU5WQUwgKEludmFsaWQgYXJndW1lbnQpCi1zZXRyZXNnaWQoLTEsIDIsIC0xKSAgICAgICAgICAgICAgICAgICAgPSAwCi0KLVBhdGNoIHdoaWNoIGJyb2tlIHRoaXMgdXBzdHJlYW06Ci1odHRwczovL3Blcmw1LmdpdC5wZXJsLm9yZy9wZXJsLmdpdC9jb21taXRkaWZmLzVkNGE1MmI1YzY4YTExYmZjOTdjMmUyNDgwNjk5M2I4NGE2MWVhZGUKLQotSXNzdWUgaXMgdGhhdCB0aGUgbmV3IGZ1bmN0aW9uIGNoYW5nZXMgdGhlIGVuZHB0ciB0byB0aGUgZW5kIG9mIHRoZQotc2Nhbm5lZCBudW1iZXIgYW5kIG5lZWRzIHRvIGJlIHJlc2V0IHRvIHRoZSBlbmQgb2YgdGhlIHN0cmluZyBmb3IgCi1lYWNoIGl0ZXJhdGlvbiBvZiB0aGUgbG9vcC4KLQotW1lPQ1RPICMxMzM5MV0KLQotUlAKLTIwMTkvNi8xNAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiBwZXJsLTUuMzAuMC9tZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGVybC01LjMwLjAub3JpZy9tZy5jCi0rKysgcGVybC01LjMwLjAvbWcuYwotQEAgLTMxNzksNiArMzI1Niw3IEBAIFBlcmxfbWFnaWNfc2V0KHBUSFhfIFNWICpzdiwgTUFHSUMgKm1nKQotIAkgICAgY29uc3QgY2hhciAqcCA9IFN2UFZfY29uc3Qoc3YsIGxlbik7Ci0gICAgICAgICAgICAgR3JvdXBzX3QgKmdhcnkgPSBOVUxMOwotICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVuZHB0ciA9IHAgKyBsZW47Ci0rICAgICAgICAgICAgY29uc3QgY2hhciogcmVhbGVuZCA9IHAgKyBsZW47Ci0gICAgICAgICAgICAgVVYgdXY7Ci0gI2lmZGVmIF9TQ19OR1JPVVBTX01BWAotICAgICAgICAgICAgaW50IG1heGdycCA9IHN5c2NvbmYoX1NDX05HUk9VUFNfTUFYKTsKLUBAIC0zMjA5LDYgKzMyODcsNyBAQCBQZXJsX21hZ2ljX3NldChwVEhYXyBTViAqc3YsIE1BR0lDICptZykKLSAgICAgICAgICAgICAgICAgICAgIE5ld3goZ2FyeSwgaSArIDEsIEdyb3Vwc190KTsKLSAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgUmVuZXcoZ2FyeSwgaSArIDEsIEdyb3Vwc190KTsKLSsgICAgICAgICAgICAgICAgZW5kcHRyID0gcmVhbGVuZDsKLSAgICAgICAgICAgICAgICAgaWYgKGdyb2tfYXRvVVYocCwgJnV2LCAmZW5kcHRyKSkKLSAgICAgICAgICAgICAgICAgICAgIGdhcnlbaV0gPSAoR3JvdXBzX3QpdXY7Ci0gICAgICAgICAgICAgICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9wZXJsLWNvbmZpZ3BtLXN3aXRjaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvcGVybC1jb25maWdwbS1zd2l0Y2gucGF0Y2gKaW5kZXggM2MyY2VjYi4uODBjZTRhNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9wZXJsLWNvbmZpZ3BtLXN3aXRjaC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL3BlcmwtY29uZmlncG0tc3dpdGNoLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA3ZjMxM2NhYzMxYzU1Y2JlNjJhNGQwY2RmYTgzMjFjYzA1YThlYjNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1MTIwYWNhYTJiZTU3ODdkOTY1N2Y2YjkxYmM4ZWUzYzJkNjY0ZmJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBTdW4sIDI3IE1heSAyMDA3IDIxOjA0OjExICswMDAwCiBTdWJqZWN0OiBbUEFUQ0hdIHBlcmw6IDUuOC43IC0+IDUuOC44IChmcm9tIE9FKQpAQCAtMjAsNyArMjAsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlncG0gYi9jb25maWdwbQotaW5kZXggMDljNGEzYi4uNmEwYTY4MCAxMDA3NTUKK2luZGV4IGM4ZGU4YmYuLjIwNDYxM2MgMTAwNzU1CiAtLS0gYS9jb25maWdwbQogKysrIGIvY29uZmlncG0KIEBAIC02ODcsNyArNjg3LDcgQEAgc3ViIEZFVENIIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvcGVybC1yZGVwZW5kcy50eHQgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL3BlcmwtcmRlcGVuZHMudHh0CmluZGV4IDMzMWE0NGQuLjllY2ZjZTAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvcGVybC1yZGVwZW5kcy50eHQKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9wZXJsLXJkZXBlbmRzLnR4dApAQCAtMjIxOCw2ICsyMjE4LDcgQEAKIFJERVBFTkRTX3BlcmwtbW9kdWxlLXRpZS1oYXNoLW5hbWVkY2FwdHVyZSArPSAicGVybC1tb2R1bGUtc3RyaWN0IgogUkRFUEVORFNfcGVybC1tb2R1bGUtdGllLWhhc2gtbmFtZWRjYXB0dXJlICs9ICJwZXJsLW1vZHVsZS14c2xvYWRlciIKIFJERVBFTkRTX3BlcmwtbW9kdWxlLXRpZS1oYXNoICs9ICJwZXJsLW1vZHVsZS13YXJuaW5ncy1yZWdpc3RlciIKK1JERVBFTkRTX3BlcmwtbW9kdWxlLXRpZS1oYXNoICs9ICJwZXJsLW1vZHVsZS1jYXJwIgogUkRFUEVORFNfcGVybC1tb2R1bGUtdGllLW1lbW9pemUgKz0gInBlcmwtbW9kdWxlLXN0cmljdCIKIFJERVBFTkRTX3BlcmwtbW9kdWxlLXRpZS1tZW1vaXplICs9ICJwZXJsLW1vZHVsZS10aWUtaGFzaCIKIFJERVBFTkRTX3BlcmwtbW9kdWxlLXRpZS1yZWZoYXNoICs9ICJwZXJsLW1vZHVsZS1jb25maWciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmVycm9yLXBlcmxfMC4xNzAyNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZXJyb3ItcGVybF8wLjE3MDI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjFmNmQ2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZXJyb3ItcGVybF8wLjE3MDI3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotU1VNTUFSWSA9ICJFcnJvciAtIEVycm9yL2V4Y2VwdGlvbiBoYW5kbGluZyBpbiBhbiBPTy1pc2ggd2F5IgotREVTQ1JJUFRJT04gPSAiVGhlIEVycm9yIHBhY2thZ2UgcHJvdmlkZXMgdHdvIGludGVyZmFjZXMuIEZpcnN0bHkgXAotRXJyb3IgcHJvdmlkZXMgYSBwcm9jZWR1cmFsIGludGVyZmFjZSB0byBleGNlcHRpb24gaGFuZGxpbmcuIFwKLVNlY29uZGx5IEVycm9yIGlzIGEgYmFzZSBjbGFzcyBmb3IgZXJyb3JzL2V4Y2VwdGlvbnMgdGhhdCBjYW4gXAotZWl0aGVyIGJlIHRocm93biwgZm9yIHN1YnNlcXVlbnQgY2F0Y2gsIG9yIGNhbiBzaW1wbHkgYmUgcmVjb3JkZWQuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9iaXRidWNrZXQub3JnL3NobG9taWYvcGVybC1lcnJvci5wbSIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PThmMzQ5OWQwOWVlNzRhMDUwYzAzMTkzOTFmZjlkMTAwIgotCi1ERVBFTkRTICs9ICJwZXJsIgotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICBwZXJsLW1vZHVsZS1jYXJwIFwKLSAgICBwZXJsLW1vZHVsZS1leHBvcnRlciBcCi0gICAgcGVybC1tb2R1bGUtc2NhbGFyLXV0aWwgXAotICAgIHBlcmwtbW9kdWxlLW92ZXJsb2FkIFwKLSAgICBwZXJsLW1vZHVsZS1zdHJpY3QgXAotICAgIHBlcmwtbW9kdWxlLXZhcnMgXAotICAgIHBlcmwtbW9kdWxlLXdhcm5pbmdzIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCi0gICAgcGVybC1tb2R1bGUtYmFzZSBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKLSAgICBwZXJsLW1vZHVsZS1pby1oYW5kbGUgXAotICAgIHBlcmwtbW9kdWxlLWlwYy1vcGVuMyBcCi0gICAgcGVybC1tb2R1bGUtbGliIFwKLSAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAotIgotCi1TUkNfVVJJID0gImh0dHA6Ly9jcGFuLm1ldGFjcGFuLm9yZy9hdXRob3JzL2lkL1MvU0gvU0hMT01JRi9FcnJvci0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZWY5YjI4OTBmYjE0NGQ4MDQ1MjdiYTMyNTczZGQ1NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwN2IyYWM4Mjc1ZGZhMDQxNDQ3NDVhNmMxOTAwYTU5NjI4MGY4NjJiOTdkMjJiYWIwYzVjZTAyNjgyZWJkM2JlIgotCi1TID0gIiR7V09SS0RJUn0vRXJyb3ItJHtQVn0iCi0KLWluaGVyaXQgY3BhbiBwdGVzdC1wZXJsCi0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLQkjIHRlc3QgcmVxdWlyZXMgIi1UIiAodGFpbnQpIGNvbW1hbmQgbGluZSBvcHRpb24KLQlybSAtcmYgJHtCfS90L3BvZC1jb3ZlcmFnZS50Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJlcnJvci1wZXJsXzAuMTcwMjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmVycm9yLXBlcmxfMC4xNzAyOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzg4MDhmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJlcnJvci1wZXJsXzAuMTcwMjkuYmIKQEAgLTAsMCArMSw0NyBAQAorU1VNTUFSWSA9ICJFcnJvciAtIEVycm9yL2V4Y2VwdGlvbiBoYW5kbGluZyBpbiBhbiBPTy1pc2ggd2F5IgorREVTQ1JJUFRJT04gPSAiVGhlIEVycm9yIHBhY2thZ2UgcHJvdmlkZXMgdHdvIGludGVyZmFjZXMuIEZpcnN0bHkgXAorRXJyb3IgcHJvdmlkZXMgYSBwcm9jZWR1cmFsIGludGVyZmFjZSB0byBleGNlcHRpb24gaGFuZGxpbmcuIFwKK1NlY29uZGx5IEVycm9yIGlzIGEgYmFzZSBjbGFzcyBmb3IgZXJyb3JzL2V4Y2VwdGlvbnMgdGhhdCBjYW4gXAorZWl0aGVyIGJlIHRocm93biwgZm9yIHN1YnNlcXVlbnQgY2F0Y2gsIG9yIGNhbiBzaW1wbHkgYmUgcmVjb3JkZWQuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3NobG9taWYvcGVybC1lcnJvci5wbSIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PThmMzQ5OWQwOWVlNzRhMDUwYzAzMTkzOTFmZjlkMTAwIgorCitERVBFTkRTICs9ICJwZXJsIgorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICBwZXJsLW1vZHVsZS1jYXJwIFwKKyAgICBwZXJsLW1vZHVsZS1leHBvcnRlciBcCisgICAgcGVybC1tb2R1bGUtc2NhbGFyLXV0aWwgXAorICAgIHBlcmwtbW9kdWxlLW92ZXJsb2FkIFwKKyAgICBwZXJsLW1vZHVsZS1zdHJpY3QgXAorICAgIHBlcmwtbW9kdWxlLXZhcnMgXAorICAgIHBlcmwtbW9kdWxlLXdhcm5pbmdzIFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisgICAgcGVybC1tb2R1bGUtYmFzZSBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKKyAgICBwZXJsLW1vZHVsZS1pby1oYW5kbGUgXAorICAgIHBlcmwtbW9kdWxlLWlwYy1vcGVuMyBcCisgICAgcGVybC1tb2R1bGUtbGliIFwKKyAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAorIgorCitTUkNfVVJJID0gImh0dHA6Ly9jcGFuLm1ldGFjcGFuLm9yZy9hdXRob3JzL2lkL1MvU0gvU0hMT01JRi9FcnJvci0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NzMyYjFjNjIwN2U0YTlhM2UyOTg3Yzg4MzY4MDM5YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYTIzZjc5MTMwMzJhZWQ2ZDRiNjgzMjEzNzNhMzg5OWNhNjY1OTBmNDcyNzM5MWEwOTFlYzE5Yzk1YmY3YWRjIgorCitTID0gIiR7V09SS0RJUn0vRXJyb3ItJHtQVn0iCisKK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKwkjIHRlc3QgcmVxdWlyZXMgIi1UIiAodGFpbnQpIGNvbW1hbmQgbGluZSBvcHRpb24KKwlybSAtcmYgJHtCfS90L3BvZC1jb3ZlcmFnZS50Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJtb2R1bGUtYnVpbGQtcGVybC9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYm1vZHVsZS1idWlsZC1wZXJsL3J1bi1wdGVzdAppbmRleCAwZDYzZDE1Li5kODAyNzgxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYm1vZHVsZS1idWlsZC1wZXJsL3J1bi1wdGVzdAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYm1vZHVsZS1idWlsZC1wZXJsL3J1bi1wdGVzdApAQCAtNiw4ICs2LDYgQEAKICAgICBjYXQgJGNhc2Uub3V0cHV0CiAgICAgaWYgWyAkcmV0IC1uZSAwIF07IHRoZW4KICAgICAgICAgZWNobyAiRkFJTDogJHtjYXNlJS50fSIKLSAgICBlbGlmIGdyZXAgLWkgJ1NLSVAnICRjYXNlLm91dHB1dDsgdGhlbgotICAgICAgICBlY2hvICJTS0lQOiAke2Nhc2UlLnR9IgogICAgIGVsc2UKICAgICAgICAgZWNobyAiUEFTUzogJHtjYXNlJS50fSIKICAgICBmaQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJtb2R1bGUtYnVpbGQtcGVybF8wLjQyMjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYm1vZHVsZS1idWlsZC1wZXJsXzAuNDIyOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc1OWY4Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYm1vZHVsZS1idWlsZC1wZXJsXzAuNDIyOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi1TVU1NQVJZID0gIk1vZHVsZTo6QnVpbGQgLSBCdWlsZCBhbmQgaW5zdGFsbCBQZXJsIG1vZHVsZXMiCi1ERVNDUklQVElPTiA9ICJNYW55IFBlcmwgZGlzdHJpYnV0aW9ucyB1c2UgYSBCdWlsZC5QTCBmaWxlIGluc3RlYWQgb2YgYSBcCi1NYWtlZmlsZS5QTCBmaWxlIHRvIGRyaXZlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uLCBidWlsZCwgdGVzdCBhbmQgXAotaW5zdGFsbGF0aW9uLiBUcmFkaXRpb25hbGx5LCBCdWlsZC5QTCB1c2VzIE1vZHVsZTo6QnVpbGQgYXMgdGhlIHVuZGVybHlpbmcgXAotYnVpbGQgc3lzdGVtLiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIHNpbXBsZSwgbGlnaHR3ZWlnaHQsIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFwKLVdoZXJlYXMgTW9kdWxlOjpCdWlsZCBoYXMgb3ZlciA2LDcwMCBsaW5lcyBvZiBjb2RlOyB0aGlzIG1vZHVsZSBoYXMgbGVzcyB0aGFuIFwKLTEyMCwgeWV0IHN1cHBvcnRzIHRoZSBmZWF0dXJlcyBuZWVkZWQgYnkgbW9zdCBkaXN0cmlidXRpb25zLiIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1IT01FUEFHRSA9ICJodHRwczovL21ldGFjcGFuLm9yZy9yZWxlYXNlL01vZHVsZS1CdWlsZCIKLQotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9OTQ5O2VuZGxpbmU9OTU0O21kNT02MjRjMDZkYjU2YTJhZjRkNzBjZjllZGMyOWZjYWUxYiIKLQotU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0wvTEUvTEVPTlQvTW9kdWxlLUJ1aWxkLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxNDQ3ZDllMDJlNjNmN2ExNjQzOTg2Nzg5YThmMWJhOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZmU0OTFhNmNkYTkxNGIwMWJjOGU1OTJmYWEyYjU0MDRlOWYzNTkxNWNhMTUzMjJmOGYyYThkOGY5MDA4YzE4IgotCi1TID0gIiR7V09SS0RJUn0vTW9kdWxlLUJ1aWxkLSR7UFZ9IgotCi1pbmhlcml0IGNwYW5fYnVpbGQgcHRlc3QtcGVybAotCi0jIEZyb206Ci0jIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWhzYWNrL21ldGEtY3Bhbi9ibG9iL21hc3Rlci9yZWNpcGVzLWRldmVsL21vZHVsZS1idWlsZC1wZXJsL21vZHVsZS1idWlsZC1wZXJsXzAuNDIxNi5iYgotIwotZG9fcGF0Y2hfbW9kdWxlX2J1aWxkICgpIHsKLSAgICBjZCAke1N9Ci0gICAgc2VkIC1pIC1lICdzLG15ICRpbnRlcnByZXRlciA9ICRzZWxmLT57cHJvcGVydGllc317cGVybH07LG15ICRpbnRlcnByZXRlciA9ICIke2JpbmRpcn0vcGVybCI7LGcnIGxpYi9Nb2R1bGUvQnVpbGQvQmFzZS5wbQotfQotCi1kb19wYXRjaFtwb3N0ZnVuY3NdICs9ICJkb19wYXRjaF9tb2R1bGVfYnVpbGQiCi0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JY3AgLXIgJHtCfS9pbmMgJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke0J9L2JsaWIgJHtEfSR7UFRFU1RfUEFUSH0KLQljaG93biAtUiByb290OnJvb3QgJHtEfSR7UFRFU1RfUEFUSH0KLX0KLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgcGVybC1tb2R1bGUtY2FycCBcCi0gICAgcGVybC1tb2R1bGUtY3BhbiBcCi0gICAgcGVybC1tb2R1bGUtY29uZmlnIFwKLSAgICBwZXJsLW1vZHVsZS1jd2QgXAotICAgIHBlcmwtbW9kdWxlLWRhdGEtZHVtcGVyIFwKLSAgICBwZXJsLW1vZHVsZS1lbmNvZGUgXAotICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLWNidWlsZGVyIFwKLSAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1jb21tYW5kIFwKLSAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1pbnN0YWxsIFwKLSAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1pbnN0YWxsZWQgXAotICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLW1rYm9vdHN0cmFwIFwKLSAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1wYWNrbGlzdCBcCi0gICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtcGFyc2V4cyBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1jb21wYXJlIFwKLSAgICBwZXJsLW1vZHVsZS1maWxlLWNvcHkgXAotICAgIHBlcmwtbW9kdWxlLWZpbGUtZmluZCBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1nbG9iIFwKLSAgICBwZXJsLW1vZHVsZS1maWxlLXBhdGggXAotICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYyBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjLWZ1bmN0aW9ucyBcCi0gICAgcGVybC1tb2R1bGUtZ2V0b3B0LWxvbmcgXAotICAgIHBlcmwtbW9kdWxlLW1ldGFkYXRhIFwKLSAgICBwZXJsLW1vZHVsZS1wZXJsLW9zdHlwZSBcCi0gICAgcGVybC1tb2R1bGUtcG9kLW1hbiBcCi0gICAgcGVybC1tb2R1bGUtdGFwLWhhcm5lc3MgXAotICAgIHBlcmwtbW9kdWxlLXRleHQtYWJicmV2IFwKLSAgICBwZXJsLW1vZHVsZS10ZXh0LXBhcnNld29yZHMgXAotICAgIHBlcmwtbW9kdWxlLXV0ZjggXAotIgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKLSAgICBnY2MgXAotICAgIG1ha2UgXAotICAgIHBlcmwtbW9kdWxlLWJsaWIgXAotICAgIHBlcmwtbW9kdWxlLWZpbGUtdGVtcCBcCi0gICAgcGVybC1tb2R1bGUtbGliIFwKLSAgICBwZXJsLW1vZHVsZS1wZXJsaW8gXAotICAgIHBlcmwtbW9kdWxlLXBlcmxpby1lbmNvZGluZyBcCi0gICAgcGVybC1tb2R1bGUtcG9kLXRleHQgXAotICAgIHBlcmwtbW9kdWxlLXRhcC1oYXJuZXNzLWVudiBcCi0gICAgcGVybC1tb2R1bGUtdGFwLXBhcnNlciBcCi0gICAgcGVybC1tb2R1bGUtdGFwLXBhcnNlci1zY2hlZHVsZXIgXAotICAgIHBlcmwtbW9kdWxlLXRlc3QtaGFybmVzcyBcCi0gICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKLSIKLQotUlBST1ZJREVTXyR7UE59ICs9ICJcCi0gICAgbGlibW9kdWxlLWJ1aWxkLWJhc2UtcGVybCBcCi0gICAgbGlibW9kdWxlLWJ1aWxkLWNvbXBhdC1wZXJsIFwKLSAgICBsaWJtb2R1bGUtYnVpbGQtY29uZmlnLXBlcmwgXAotICAgIGxpYm1vZHVsZS1idWlsZC1jb29rYm9vay1wZXJsIFwKLSAgICBsaWJtb2R1bGUtYnVpbGQtZHVtcGVyLXBlcmwgXAotICAgIGxpYm1vZHVsZS1idWlsZC1ub3Rlcy1wZXJsIFwKLSAgICBsaWJtb2R1bGUtYnVpbGQtcHBtYWtlci1wZXJsIFwKLSAgICBsaWJtb2R1bGUtYnVpbGQtcGxhdGZvcm0tZGVmYXVsdC1wZXJsIFwKLSAgICBsaWJtb2R1bGUtYnVpbGQtcGxhdGZvcm0tdW5peC1wZXJsIFwKLSAgICBsaWJtb2R1bGUtYnVpbGQtcG9kcGFyc2VyLXBlcmwgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlibW9kdWxlLWJ1aWxkLXBlcmxfMC40MjMxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJtb2R1bGUtYnVpbGQtcGVybF8wLjQyMzEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTZmZDdiMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlibW9kdWxlLWJ1aWxkLXBlcmxfMC40MjMxLmJiCkBAIC0wLDAgKzEsMTIzIEBACitTVU1NQVJZID0gIk1vZHVsZTo6QnVpbGQgLSBCdWlsZCBhbmQgaW5zdGFsbCBQZXJsIG1vZHVsZXMiCitERVNDUklQVElPTiA9ICJNYW55IFBlcmwgZGlzdHJpYnV0aW9ucyB1c2UgYSBCdWlsZC5QTCBmaWxlIGluc3RlYWQgb2YgYSBcCitNYWtlZmlsZS5QTCBmaWxlIHRvIGRyaXZlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uLCBidWlsZCwgdGVzdCBhbmQgXAoraW5zdGFsbGF0aW9uLiBUcmFkaXRpb25hbGx5LCBCdWlsZC5QTCB1c2VzIE1vZHVsZTo6QnVpbGQgYXMgdGhlIHVuZGVybHlpbmcgXAorYnVpbGQgc3lzdGVtLiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIHNpbXBsZSwgbGlnaHR3ZWlnaHQsIGRyb3AtaW4gcmVwbGFjZW1lbnQuIFwKK1doZXJlYXMgTW9kdWxlOjpCdWlsZCBoYXMgb3ZlciA2LDcwMCBsaW5lcyBvZiBjb2RlOyB0aGlzIG1vZHVsZSBoYXMgbGVzcyB0aGFuIFwKKzEyMCwgeWV0IHN1cHBvcnRzIHRoZSBmZWF0dXJlcyBuZWVkZWQgYnkgbW9zdCBkaXN0cmlidXRpb25zLiIKKworU0VDVElPTiA9ICJsaWJzIgorCitIT01FUEFHRSA9ICJodHRwczovL21ldGFjcGFuLm9yZy9yZWxlYXNlL01vZHVsZS1CdWlsZCIKKworTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9OTQ5O2VuZGxpbmU9OTU0O21kNT02MjRjMDZkYjU2YTJhZjRkNzBjZjllZGMyOWZjYWUxYiIKKworU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0wvTEUvTEVPTlQvTW9kdWxlLUJ1aWxkLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMDY2YjE5M2U0NjFkN2RmZTFlY2ExN2ExMzkzNTMwMDEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2UwZjRjNjkyYzE3NDBjMWFjODRlYTE0ZDdlYTNkOGJjNzk4YjJmYjI2YzA5ODc3MjI5ZTA0ZjQzMGIyYjcxNyIKKworUyA9ICIke1dPUktESVJ9L01vZHVsZS1CdWlsZC0ke1BWfSIKKworaW5oZXJpdCBjcGFuX2J1aWxkIHB0ZXN0LXBlcmwKKworIyBGcm9tOgorIyBodHRwczovL2dpdGh1Yi5jb20vcmVoc2Fjay9tZXRhLWNwYW4vYmxvYi9tYXN0ZXIvcmVjaXBlcy1kZXZlbC9tb2R1bGUtYnVpbGQtcGVybC9tb2R1bGUtYnVpbGQtcGVybF8wLjQyMTYuYmIKKyMKK2RvX3BhdGNoX21vZHVsZV9idWlsZCAoKSB7CisgICAgY2QgJHtTfQorICAgIHNlZCAtaSAtZSAncyxteSAkaW50ZXJwcmV0ZXIgPSAkc2VsZi0+e3Byb3BlcnRpZXN9e3Blcmx9OyxteSAkaW50ZXJwcmV0ZXIgPSAiJHtiaW5kaXJ9L3BlcmwiOyxnJyBsaWIvTW9kdWxlL0J1aWxkL0Jhc2UucG0KK30KKworZG9fcGF0Y2hbcG9zdGZ1bmNzXSArPSAiZG9fcGF0Y2hfbW9kdWxlX2J1aWxkIgorCitFWFRSQV9DUEFOX0JVSUxEX0ZMQUdTID0gIi0tY3JlYXRlX3BhY2tsaXN0PTAiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICAgICAgcm0gLXJmICR7RH0ke2RvY2Rpcn0vcGVybC9odG1sCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgLXIgJHtCfS9pbmMgJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtciAke0J9L2JsaWIgJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtciAke0J9L19idWlsZCAke0R9JHtQVEVTVF9QQVRIfQorCWNwIC1yICR7Qn0vbGliICR7RH0ke1BURVNUX1BBVEh9CisJY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke1BURVNUX1BBVEh9CisJc2VkIC1pIC1lICJzLCdwZXJsJyA9PiAuKiwncGVybCcgPT4gJy91c3IvYmluL3BlcmwnXCwsZyIgXAorICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL1wuXC4sJHtiaW5kaXJ9LyxnIiBcCisgICAgICAgICAgICAgICAtZSAicywke1N9LCxnIiBcCisgICAgICAgICAgICAgICAtZSAicywke0R9LCxnIiBcCisgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9fYnVpbGQvYnVpbGRfcGFyYW1zIFwKKyAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L19idWlsZC9ydW50aW1lX3BhcmFtcworICAgICAgICBybSAtcmYgJHtEfSR7UFRFU1RfUEFUSH0vYmxpYi9saWJodG1sL3NpdGUvbGliL01vZHVsZS8KKyAgICAgICAgcm0gLXJmICR7RH0ke1BURVNUX1BBVEh9L19idWlsZC9tYWdpY251bQorfQorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICBwZXJsLW1vZHVsZS1jYXJwIFwKKyAgICBwZXJsLW1vZHVsZS1jcGFuIFwKKyAgICBwZXJsLW1vZHVsZS1jb25maWcgXAorICAgIHBlcmwtbW9kdWxlLWN3ZCBcCisgICAgcGVybC1tb2R1bGUtZGF0YS1kdW1wZXIgXAorICAgIHBlcmwtbW9kdWxlLWVuY29kZSBcCisgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtY2J1aWxkZXIgXAorICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLWNvbW1hbmQgXAorICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLWluc3RhbGwgXAorICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLWluc3RhbGxlZCBcCisgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtbWtib290c3RyYXAgXAorICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLXBhY2tsaXN0IFwKKyAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1wYXJzZXhzIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLWJhc2VuYW1lIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLWNvbXBhcmUgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtY29weSBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1maW5kIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLWdsb2IgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtcGF0aCBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLXNwZWMtZnVuY3Rpb25zIFwKKyAgICBwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyBcCisgICAgcGVybC1tb2R1bGUtbWV0YWRhdGEgXAorICAgIHBlcmwtbW9kdWxlLXBlcmwtb3N0eXBlIFwKKyAgICBwZXJsLW1vZHVsZS1wb2QtbWFuIFwKKyAgICBwZXJsLW1vZHVsZS10YXAtaGFybmVzcyBcCisgICAgcGVybC1tb2R1bGUtdGV4dC1hYmJyZXYgXAorICAgIHBlcmwtbW9kdWxlLXRleHQtcGFyc2V3b3JkcyBcCisgICAgcGVybC1tb2R1bGUtdXRmOCBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorICAgIHBhY2thZ2Vncm91cC1jb3JlLWJ1aWxkZXNzZW50aWFsIFwKKyAgICBwZXJsLWRldiBcCisgICAgcGVybC1tb2R1bGUtYmxpYiBcCisgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtY29tbWFuZC1tbSBcCisgICAgcGVybC1tb2R1bGUtZmlsZS10ZW1wIFwKKyAgICBwZXJsLW1vZHVsZS1saWIgXAorICAgIHBlcmwtbW9kdWxlLXBlcmxpbyBcCisgICAgcGVybC1tb2R1bGUtcGVybGlvLWVuY29kaW5nIFwKKyAgICBwZXJsLW1vZHVsZS1wb2QtdGV4dCBcCisgICAgcGVybC1tb2R1bGUtdGFwLWhhcm5lc3MtZW52IFwKKyAgICBwZXJsLW1vZHVsZS10YXAtcGFyc2VyIFwKKyAgICBwZXJsLW1vZHVsZS10YXAtcGFyc2VyLXNjaGVkdWxlciBcCisgICAgcGVybC1tb2R1bGUtdGVzdC1oYXJuZXNzIFwKKyAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAorIgorCitSUFJPVklERVNfJHtQTn0gKz0gIlwKKyAgICBsaWJtb2R1bGUtYnVpbGQtYmFzZS1wZXJsIFwKKyAgICBsaWJtb2R1bGUtYnVpbGQtY29tcGF0LXBlcmwgXAorICAgIGxpYm1vZHVsZS1idWlsZC1jb25maWctcGVybCBcCisgICAgbGlibW9kdWxlLWJ1aWxkLWNvb2tib29rLXBlcmwgXAorICAgIGxpYm1vZHVsZS1idWlsZC1kdW1wZXItcGVybCBcCisgICAgbGlibW9kdWxlLWJ1aWxkLW5vdGVzLXBlcmwgXAorICAgIGxpYm1vZHVsZS1idWlsZC1wcG1ha2VyLXBlcmwgXAorICAgIGxpYm1vZHVsZS1idWlsZC1wbGF0Zm9ybS1kZWZhdWx0LXBlcmwgXAorICAgIGxpYm1vZHVsZS1idWlsZC1wbGF0Zm9ybS11bml4LXBlcmwgXAorICAgIGxpYm1vZHVsZS1idWlsZC1wb2RwYXJzZXItcGVybCBcCisiCisKKyMgdC94cy50IFJERVBFTkRTIG9uICJFWFRFUk4uaCIgcHJvdmlkZWQgYnkgcGVybC1kZXYKK0lOU0FORV9TS0lQXyR7UE59LXB0ZXN0ID0gImRldi1kZXBzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBhcnNlci1wZXJsXzIuNDQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wYXJzZXItcGVybF8yLjQ0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzliNzY5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBhcnNlci1wZXJsXzIuNDQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1TVU1NQVJZID0gIlhNTDo6UGFyc2VyIC0gQSBwZXJsIG1vZHVsZSBmb3IgcGFyc2luZyBYTUwgZG9jdW1lbnRzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9saWJleHBhdC5naXRodWIuaW8vIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MjtlbmRsaW5lPTY7bWQ1PWM4NzY3ZDc1MTYyMjlmMDdiMjZlNDJkMWNmOGI1MWYxIgotCi1ERVBFTkRTICs9ICJleHBhdCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmNwYW4ub3JnL21vZHVsZXMvYnktbW9kdWxlL1hNTC9YTUwtUGFyc2VyLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhZjQ4MTNmZTM5NTIzNjI0NTEyMDFjZWQ2ZmJjZTM3OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYWU5ZDA3ZWU5YzM1MzI2YjNkOWFhZDU2ZWFlNzFhNjczMGE3M2ExMTZiOWZlOWU4YTQ3NThiN2NjMDMzMjE2IgotCi1TID0gIiR7V09SS0RJUn0vWE1MLVBhcnNlci0ke1BWfSIKLQotRVhUUkFfQ1BBTkZMQUdTID0gIkVYUEFUTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBFWFBBVElOQ1BBVEg9JHtTVEFHSU5HX0lOQ0RJUn0gQ0M9JyR7Q0N9JyBMRD0nJHtDQ0xEfScgRlVMTF9BUj0nJHtBUn0nIgotCi1pbmhlcml0IGNwYW4gcHRlc3QtcGVybAotCi0jIGZpeCB1cCBzdWIgTWFrZU1ha2VyIHByb2plY3QgYXMgYXJndW1lbnRzIGRvbid0IGdldCBwcm9wYWdhdGVkIHRob3VnaAotIyBzZWUgaHR0cHM6Ly9ydC5jcGFuLm9yZy9QdWJsaWMvQnVnL0Rpc3BsYXkuaHRtbD9pZD0yODYzMgotZG9fY29uZmlndXJlX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0Jc2VkIC1FIFwKLQkgICAgLWUgJ3M6LUwke1NUQUdJTkdfTElCRElSfTo6ZycgLWUgJ3M6LUkke1NUQUdJTkdfSU5DRElSfTo6ZycgXAotCSAgICAtaSBNYWtlZmlsZSBFeHBhdC9NYWtlZmlsZQotfQotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCXNlZCAtZSAnczotLXN5c3Jvb3Q9LipcKFxzXHwkXCk6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSA6ZycgXAotCSAgICAtaSBNYWtlZmlsZSBFeHBhdC9NYWtlZmlsZQotCXNlZCAnczpeRlVMTF9BUiA9IC4qOkZVTExfQVIgPSAke0FSfTpnJyAtaSBFeHBhdC9NYWtlZmlsZQotCSMgbWFrZSBzdXJlIHRoZXNlIHR3byBkbyBub3QgYnVpbGQgaW4gcGFyYWxsZWwKLQlzZWQgJ3MhXiQoSU5TVF9EWU5BTUlDKTohJChJTlNUX0RZTkFNSUMpOiAkKEJPT1RTVFJBUCkhJyAtaSBFeHBhdC9NYWtlZmlsZQotfQotCi1kb19jb21waWxlKCkgewotCWV4cG9ydCBMSUJDPSIkKGZpbmQgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9LyAtbmFtZSAnbGliYy0qLnNvJykiCi0JY3Bhbl9kb19jb21waWxlCi19Ci0KLWRvX2NvbXBpbGVfY2xhc3MtbmF0aXZlKCkgewotCWNwYW5fZG9fY29tcGlsZQotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCXNlZCAtaSAtZSAiczovdXNyL2xvY2FsL2Jpbi9wZXJsOi91c3IvYmluL3Blcmw6ZyIgJHtCfS9zYW1wbGVzL3htbHN0YXRzCi0Jc2VkIC1pIC1lICJzOi91c3IvbG9jYWwvYmluL3Blcmw6L3Vzci9iaW4vcGVybDpnIiAke0J9L3NhbXBsZXMveG1sZmlsdGVyCi0Jc2VkIC1pIC1lICJzOi91c3IvbG9jYWwvYmluL3Blcmw6L3Vzci9iaW4vcGVybDpnIiAke0J9L3NhbXBsZXMveG1sY29tbWVudHMKLQlzZWQgLWkgLWUgInM6L3Vzci9sb2NhbC9iaW4vcGVybDovdXNyL2Jpbi9wZXJsOmciICR7Qn0vc2FtcGxlcy9jYW5vbmljYWwKLQljcCAtciAke0J9L3NhbXBsZXMgJHtEfSR7UFRFU1RfUEFUSH0KLQljaG93biAtUiByb290OnJvb3QgJHtEfSR7UFRFU1RfUEFUSH0vc2FtcGxlcwotfQotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybC1tb2R1bGUtZmlsZWhhbmRsZSBwZXJsLW1vZHVsZS1pZiBwZXJsLW1vZHVsZS10ZXN0IHBlcmwtbW9kdWxlLXRlc3QtbW9yZSIKLQotQkJDTEFTU0VYVEVORD0ibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBhcnNlci1wZXJsXzIuNDYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wYXJzZXItcGVybF8yLjQ2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMTU0YmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wYXJzZXItcGVybF8yLjQ2LmJiCkBAIC0wLDAgKzEsNTggQEAKK1NVTU1BUlkgPSAiWE1MOjpQYXJzZXIgLSBBIHBlcmwgbW9kdWxlIGZvciBwYXJzaW5nIFhNTCBkb2N1bWVudHMiCitIT01FUEFHRSA9ICJodHRwczovL2xpYmV4cGF0LmdpdGh1Yi5pby8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUGFyc2VyLnBtO2JlZ2lubGluZT0xO2VuZGxpbmU9NzttZDU9ZDEyY2M3NzhjODBmYzRjNTE4ZjBlNWRlZTI5ZmQ1ZmIiCisKK0RFUEVORFMgKz0gImV4cGF0IgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuY3Bhbi5vcmcvbW9kdWxlcy9ieS1tb2R1bGUvWE1ML1hNTC1QYXJzZXItJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3B0ZXN0LXBlcmwvcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQ2hlY2tMaWIucG0tZG8tbm90LWF0dGVtcHQtdG8tcnVuLWEtY3Jvc3MtZXhlY3V0YWJsZS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MGJiMThhOGU2MjQwZmNmN2VjMmY3YjU3NjAxYzE3MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMzMxMzMyNDkxYzUxY2NjZmI0Y2I5NGZmYzQ0ZjljZDczMzc4ZTYxODQ5OGQ0YTM3ZGY5ZTA0MzY2MWM1MTVkIgorCitTID0gIiR7V09SS0RJUn0vWE1MLVBhcnNlci0ke1BWfSIKKworRVhUUkFfQ1BBTkZMQUdTID0gIkVYUEFUTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBFWFBBVElOQ1BBVEg9JHtTVEFHSU5HX0lOQ0RJUn0gQ0M9JyR7Q0N9JyBMRD0nJHtDQ0xEfScgRlVMTF9BUj0nJHtBUn0nIgorCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAorCisjIGZpeCB1cCBzdWIgTWFrZU1ha2VyIHByb2plY3QgYXMgYXJndW1lbnRzIGRvbid0IGdldCBwcm9wYWdhdGVkIHRob3VnaAorIyBzZWUgaHR0cHM6Ly9ydC5jcGFuLm9yZy9QdWJsaWMvQnVnL0Rpc3BsYXkuaHRtbD9pZD0yODYzMgorZG9fY29uZmlndXJlX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisJc2VkIC1FIFwKKwkgICAgLWUgJ3M6LUwke1NUQUdJTkdfTElCRElSfTo6ZycgLWUgJ3M6LUkke1NUQUdJTkdfSU5DRElSfTo6ZycgXAorCSAgICAtaSBNYWtlZmlsZSBFeHBhdC9NYWtlZmlsZQorfQorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworCXNlZCAtZSAnczotLXN5c3Jvb3Q9LipcKFxzXHwkXCk6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSA6ZycgXAorCSAgICAtaSBNYWtlZmlsZSBFeHBhdC9NYWtlZmlsZQorCXNlZCAnczpeRlVMTF9BUiA9IC4qOkZVTExfQVIgPSAke0FSfTpnJyAtaSBFeHBhdC9NYWtlZmlsZQorCSMgbWFrZSBzdXJlIHRoZXNlIHR3byBkbyBub3QgYnVpbGQgaW4gcGFyYWxsZWwKKwlzZWQgJ3MhXiQoSU5TVF9EWU5BTUlDKTohJChJTlNUX0RZTkFNSUMpOiAkKEJPT1RTVFJBUCkhJyAtaSBFeHBhdC9NYWtlZmlsZQorfQorCitkb19jb21waWxlKCkgeworCWV4cG9ydCBMSUJDPSIkKGZpbmQgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9LyAtbmFtZSAnbGliYy0qLnNvJykiCisJY3Bhbl9kb19jb21waWxlCit9CisKK2RvX2NvbXBpbGVfY2xhc3MtbmF0aXZlKCkgeworCWNwYW5fZG9fY29tcGlsZQorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCXNlZCAtaSAtZSAiczovdXNyL2xvY2FsL2Jpbi9wZXJsOi91c3IvYmluL3Blcmw6ZyIgJHtCfS9zYW1wbGVzL3htbHN0YXRzCisJc2VkIC1pIC1lICJzOi91c3IvbG9jYWwvYmluL3Blcmw6L3Vzci9iaW4vcGVybDpnIiAke0J9L3NhbXBsZXMveG1sZmlsdGVyCisJc2VkIC1pIC1lICJzOi91c3IvbG9jYWwvYmluL3Blcmw6L3Vzci9iaW4vcGVybDpnIiAke0J9L3NhbXBsZXMveG1sY29tbWVudHMKKwlzZWQgLWkgLWUgInM6L3Vzci9sb2NhbC9iaW4vcGVybDovdXNyL2Jpbi9wZXJsOmciICR7Qn0vc2FtcGxlcy9jYW5vbmljYWwKKwljcCAtciAke0J9L3NhbXBsZXMgJHtEfSR7UFRFU1RfUEFUSH0KKwljaG93biAtUiByb290OnJvb3QgJHtEfSR7UFRFU1RfUEFUSH0vc2FtcGxlcworfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybC1tb2R1bGUtZmlsZWhhbmRsZSBwZXJsLW1vZHVsZS1pZiBwZXJsLW1vZHVsZS10ZXN0IHBlcmwtbW9kdWxlLXRlc3QtbW9yZSIKKworQkJDTEFTU0VYVEVORD0ibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1wdGVzdC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtcHRlc3QuaW5jCmluZGV4IDcxNTIwNTcuLjk4ZTMzNjEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1wdGVzdC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLXB0ZXN0LmluYwpAQCAtNDIsNiArNDIsOSBAQAogCiAJICMgUmVtb3ZlIGEgdXNlbGVzcyB0aW1lc3RhbXAuLi4KIAkgc2VkIC1pIC1lICcvQXV0b2dlbmVyYXRlZCBzdGFydGluZyBvbi9kJyAke0R9JHtQVEVTVF9QQVRIfS9saWIvdW5pY29yZS9ta3RhYmxlcy5sc3QKKworCSAjIFJlbW92ZSBmaWxlcyB3aXRoIGhvc3Qtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IgYnVpbGRpbmcgbmF0aXZlIGJpbmFyaWVzCisJIHJtICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlLmNvbmZpZyAke0R9JHtQVEVTVF9QQVRIfS94Y29uZmlnLmggJHtEfSR7UFRFU1RfUEFUSH0veGNvbmZpZy5zaAogfQogCiBweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjMwLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmxfNS4zMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDkwNmE3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjMwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJQZXJsIHNjcmlwdGluZyBsYW5ndWFnZSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucGVybC5vcmcvIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Db3B5aW5nO21kNT01YjEyMmEzNmQwZjZkYzU1Mjc5YTBlYmM2OWYzYzYwYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9BcnRpc3RpYzttZDU9NzFhNGQ1ZDlhY2MxOGMwOTUyYTZkZjIyMThiYjY4ZGEgXAotICAgICAgICAgICAgICAgICAgICAiCi0KLQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5jcGFuLm9yZy9zcmMvNS4wL3BlcmwtJHtQVn0udGFyLmd6O25hbWU9cGVybCBcCi0gICAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hcnN2L3BlcmwtY3Jvc3MvcmVsZWFzZXMvZG93bmxvYWQvMS4zL3BlcmwtY3Jvc3MtMS4zLnRhci5nejtuYW1lPXBlcmwtY3Jvc3MgXAotICAgICAgICAgICBmaWxlOi8vcGVybC1yZGVwZW5kcy50eHQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmVfdG9vbC5zaC1kby1ub3QtcXVvdGUtdGhlLWFyZ3VtZW50LXRvLWNvbW1hLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRXh0VXRpbHMtTWFrZU1ha2VyLWFkZC1MREZMQUdTLXdoZW4tbGlua2luZy1iaW5hcnktbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVNvbWVob3ctdGhpcy1tb2R1bGUtYnJlYWtzLXRocm91Z2gtdGhlLXBlcmwtd3JhcHBlci0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZXJybm9fdmVyLmRpZmYgXAotICAgICAgICAgICBmaWxlOi8vbmF0aXZlLXBlcmxpbmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wZXJsLWNyb3NzLWFkZC1MREZMQUdTLXdoZW4tbGlua2luZy1saWJwZXJsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BlcmwtZHlubG9hZGVyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlX3BhdGguc2gtZG8tbm90LWhhcmRjb2RlLXByZWZpeC1saWItYXMtbGlici5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtc2V0Z3JvdXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1lbmMyeHMtQWRkLWVudmlyb25tZW50LXZhcmlhYmxlLXRvLXN1cHByZXNzLWNvbW1lbnRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItQ29uc3RhbnQtRml4LXVwLXNoZWJhbmcucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKLSAgICAgICAgICAgZmlsZTovL3BlcmwtY29uZmlncG0tc3dpdGNoLnBhdGNoIFwKLSIKLQotU1JDX1VSSVtwZXJsLm1kNXN1bV0gPSAiOTc3MDU4NGNkZjliNTYzMWMzODA5NzY0NWNlMzM1NDkiCi1TUkNfVVJJW3Blcmwuc2hhMjU2c3VtXSA9ICI4NTEyMTNjNzU0ZDk4Y2NmZjA0MmNhYTQwYmE3YTc5NmIyY2VlODhjNTMyNWYxMjFiZTVjYmI2MWJiZjk3NWYyIgotU1JDX1VSSVtwZXJsLWNyb3NzLm1kNXN1bV0gPSAiNGRkYTNkYWY5YzRmZTQyYjNkNmE1ZGQwNTI4NTJhNDgiCi1TUkNfVVJJW3BlcmwtY3Jvc3Muc2hhMjU2c3VtXSA9ICI0OWVkZWExZWEyY2Q2YzVjNDczODZjYTcxYmVkYThkMTUwYzc0ODgzNTc4MTM1NGRiZTdmNzViMWRmMjdlNzAzIgotCi1TID0gIiR7V09SS0RJUn0vcGVybC0ke1BWfSIKLQotaW5oZXJpdCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotREVQRU5EUyArPSAiemxpYiB2aXJ0dWFsL2NyeXB0IgotCi1QRVJMX0xJQl9WRVIgPSAiJHtAJy4nLmpvaW4oZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswOjJdKX0uMCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImJkYiBnZGJtIgotUEFDS0FHRUNPTkZJR1tiZGJdID0gIiwtVWlfZGIsZGIiCi1QQUNLQUdFQ09ORklHW2dkYm1dID0gIiwtVWlfZ2RibSxnZGJtIgotCi0jIERvbid0IGdlbmVyYXRlIGNvbW1lbnRzIGluIGVuYzJ4cyBvdXRwdXQgZmlsZXMuIFRoZXkgYXJlIG5vdCByZXByb2R1Y2libGUKLWV4cG9ydCBFTkMyWFNfTk9fQ09NTUVOVFMgPSAiMSIKLQotZG9fdW5wYWNrX2FwcGVuZCgpIHsKLSAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2RvX2NvcHlfcGVybGNyb3NzJywgZCkKLX0KLQotZG9fY29weV9wZXJsY3Jvc3MoKSB7Ci0gICAgY3AgLXJmcCAke1dPUktESVJ9L3BlcmwtY3Jvc3MqLyogJHtTfQotfQotCi1kb19jb25maWd1cmVfY2xhc3MtdGFyZ2V0KCkgewotICAgIC4vY29uZmlndXJlIC0tcHJlZml4PSR7cHJlZml4fSAtLWxpYmRpcj0ke2xpYmRpcn0gXAotICAgIC0tdGFyZ2V0PSR7VEFSR0VUX1NZU30gXAotICAgIC1EdXNlc2hycGxpYiBcCi0gICAgLURzb25hbWU9bGlicGVybC5zby41IFwKLSAgICAtRHZlbmRvcnByZWZpeD0ke3ByZWZpeH0gXAotICAgIC1EYXJjaGxpYmV4cD0ke1NUQUdJTkdfTElCRElSfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eCBcCi0gICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfQotCi0gICAgI3BlcmwuYyB1c2VzIGFuIEFSQ0hMSUJfRVhQIGRlZmluZSB0byBnZW5lcmF0ZSBjb21waWxlLXRpbWUgY29kZSB0aGF0Ci0gICAgI2FkZHMgdGhlIGFyY2hsaWJleHAgcGF0aCB0byBASU5DIGR1cmluZyBydW4tdGltZSBpbml0aWFsaXphdGlvbiBvZiBhCi0gICAgI25ldyBwZXJsIGludGVycHJldGVyLgotCi0gICAgI0JlY2F1c2Ugd2UndmUgY2hhbmdlZCB0aGlzIHZhbHVlIGluIGEgdGVtcG9yYXJ5IHdheSB0byBtYWtlIGl0Ci0gICAgI3Bvc3NpYmxlIHRvIHVzZSBFeHRVdGlsczo6RW1iZWQgaW4gdGhlIHRhcmdldCBidWlsZCAodGhlIHRlbXBvcmFyeQotICAgICN2YWx1ZSBpbiBjb25maWcuc2ggZ2V0cyByZS1zdHJpcHBlZCBvdXQgZHVyaW5nIHBhY2thZ2luZyksIHRoZQotICAgICNBUkNITElCX0VYUCB2YWx1ZSB0aGF0IGdldHMgZ2VuZXJhdGVkIHN0aWxsIHVzZXMgdGhlIHRlbXBvcmFyeSB2ZXJzaW9uCi0gICAgI2luc3RlYWQgb2YgdGhlIG9yaWdpbmFsIGV4cGVjdGVkIHZlcnNpb24gKGkuZS4gYmVjYXVzZXMgaXQncyBpbiB0aGUKLSAgICAjZ2VuZXJhdGVkIGNvbmZpZy5oLCBpdCBkb2Vzbid0IGdldCBzdHJpcHBlZCBvdXQgZHVyaW5nIHBhY2thZ2luZyBsaWtlCi0gICAgI3RoZSBvdGhlcnMgaW4gY29uZmlnLnNoKS4KLQotICAgIHNlZCAtaSAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sZyIgY29uZmlnLmgKLX0KLQotZG9fY29uZmlndXJlX2NsYXNzLW5hdGl2ZXNkaygpIHsKLSAgICAuL2NvbmZpZ3VyZSAtLXByZWZpeD0ke3ByZWZpeH0gXAotICAgIC0tdGFyZ2V0PSR7VEFSR0VUX1NZU30gXAotICAgIC1EdXNlc2hycGxpYiBcCi0gICAgLURzb25hbWU9bGlicGVybC5zby41IFwKLSAgICAtRHZlbmRvcnByZWZpeD0ke3ByZWZpeH0gXAotICAgIC1EYXJjaGxpYmV4cD0ke1NUQUdJTkdfTElCRElSfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eCBcCi0gICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfQotCi0gICAgIyBTZWUgdGhlIGNvbW1lbnQgYWJvdmUKLSAgICBzZWQgLWkgLWUgInMsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LGciIGNvbmZpZy5oCi19Ci0KLWRvX2NvbmZpZ3VyZV9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgLi9jb25maWd1cmUgLS1wcmVmaXg9JHtwcmVmaXh9IFwKLSAgICAtRGJpbj0ke2JpbmRpcn0vcGVybC1uYXRpdmUgXAotICAgIC1EdXNlc2hycGxpYiBcCi0gICAgLURzb25hbWU9bGlicGVybC5zby41IFwKLSAgICAtRHZlbmRvcnByZWZpeD0ke3ByZWZpeH0gXAotICAgIC1VaV94bG9jYWxlIFwKLSAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9Ci19Ci0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0gICAgaWYgWyAtbiAiJFNPVVJDRV9EQVRFX0VQT0NIIiBdOyB0aGVuCi0gICAgICAgIFBFUkxfQlVJTERfREFURT0iJCgke1BZVEhPTn0gLWMgIlwKLWZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lem9uZTsgXAotcHJpbnQoZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgkU09VUkNFX0RBVEVfRVBPQ0gsIHRpbWV6b25lLnV0Yykuc3RyZnRpbWUoJyVhICViICVkICVIOiVNOiVTICVZJykpIFwKLSAgICAgICAgICAgICIpIgotICAgICAgICBlY2hvICIjZGVmaW5lIFBFUkxfQlVJTERfREFURSBcIiRQRVJMX0JVSUxEX0RBVEVcIiIgPj4gY29uZmlnLmgKLSAgICBmaQotfQotCi1kb19jb21waWxlKCkgewotICAgIG9lX3J1bm1ha2UKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wZXJsNQotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8KLSAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vRXh0VXRpbHMvCi0KLSAgICAjIFNhdmUgbmF0aXZlIGNvbmZpZwotICAgIGluc3RhbGwgY29uZmlnLnNoICR7RH0ke2xpYmRpcn0vcGVybDUKLSAgICBpbnN0YWxsIGxpYi9Db25maWcucG0gJHtEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8KLSAgICBpbnN0YWxsIGxpYi9FeHRVdGlscy90eXBlbWFwICR7RH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vRXh0VXRpbHMvCi0KLSAgICAjIEZpeCB1cCBzaGFyZWQgbGlicmFyeQotICAgIHJtICR7RH0vJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovQ09SRS9saWJwZXJsLnNvCi0gICAgbG4gLXNmIC4uLy4uLy4uLy4uL2xpYnBlcmwuc28uJHtQRVJMX0xJQl9WRVJ9ICQoZWNobyAke0R9LyR7bGliZGlyfS9wZXJsNS8ke1BWfS8qL0NPUkUpL2xpYnBlcmwuc28KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICMgVGhpcyBpcyB1c2VkIHRvIHN1YnN0aXR1dGUgdGFyZ2V0IGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIG5hdGl2ZSBwZXJsIHZpYSBwZXJsLWNvbmZpZ3BtLXN3aXRjaC5wYXRjaAotICAgIGxuIC1zIENvbmZpZ19oZWF2eS5wbCAke0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NvbmZpZ19oZWF2eS10YXJnZXQucGwKLQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0gICAgIyBUaGlzIGlzIHVzZWQgdG8gc3Vic3RpdHV0ZSB0YXJnZXQgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgbmF0aXZlIHBlcmwgdmlhIHBlcmwtY29uZmlncG0tc3dpdGNoLnBhdGNoCi0gICAgbG4gLXMgQ29uZmlnX2hlYXZ5LnBsICR7RH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ29uZmlnX2hlYXZ5LXRhcmdldC5wbAotCi0gICAgY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9wZXJsIFwKLSAgICAgICAgUEVSTDVMSUI9JyRQRVJMNUxJQjokT0VDT1JFX05BVElWRV9TWVNST09ULyR7bGliZGlyX25hdGl2ZXNka30vcGVybDUvc2l0ZV9wZXJsLyR7UFZ9OiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvJHtsaWJkaXJfbmF0aXZlc2RrfS9wZXJsNS92ZW5kb3JfcGVybC8ke1BWfTokT0VDT1JFX05BVElWRV9TWVNST09ULyR7bGliZGlyX25hdGl2ZXNka30vcGVybDUvJHtQVn0nCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgIyBUaG9zZSB3cmFwcGVycyBtZWFuIHRoYXQgcGVybCBpbnN0YWxsZWQgZnJvbSBzc3RhdGUgKHdoaWNoIG1heSBjaGFuZ2UKLSAgICAjIHBhdGggbG9jYXRpb24pIHdvcmtzIGFuZCB0aGF0IGluIHRoZSBuYXRpdmVzZGsgY2FzZSwgdGhlIFNESyBjYW4gYmUKLSAgICAjIGluc3RhbGxlZCB0byBhIGRpZmZlcmVudCBsb2NhdGlvbiBmcm9tIHRoZSBvbmUgaXQgd2FzIGJ1aWx0IGZvci4KLSAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3BlcmwtbmF0aXZlL3BlcmwgUEVSTDVMSUI9JyRQRVJMNUxJQjoke1NUQUdJTkdfTElCRElSfS9wZXJsNS9zaXRlX3BlcmwvJHtQVn06JHtTVEFHSU5HX0xJQkRJUn0vcGVybDUvdmVuZG9yX3BlcmwvJHtQVn06JHtTVEFHSU5HX0xJQkRJUn0vcGVybDUvJHtQVn0nCi0KLSAgICAjIFVzZSAvdXNyL2Jpbi9lbnYgbmF0aXZlcGVybCBmb3IgdGhlIHBlcmwgc2NyaXB0LgotICAgIGZvciBmIGluIGBncmVwIC1JbCAnIyEgKiR7YmluZGlyfS9wZXJsJyAke0R9LyR7YmluZGlyfS8qYDsgZG8KLSAgICAgICAgICAgIHNlZCAtaSAtZSAnc3wke2JpbmRpcn0vcGVybHwvdXNyL2Jpbi9lbnYgbmF0aXZlcGVybHwnICRmCi0gICAgZG9uZQotfQotCi1QQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInBlcmxfcGFja2FnZV9wcmVwcm9jZXNzIgotCi1wZXJsX3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7Ci0gICAgICAgICMgRml4IHVwIGluc3RhbGxlZCBjb25maWd1cmF0aW9uCi0gICAgICAgIHNlZCAtaSAtZSAicywke0R9LCxnIiBcCi0gICAgICAgICAgICAgICAtZSAicywke0RFQlVHX1BSRUZJWF9NQVB9LCxnIiBcCi0gICAgICAgICAgICAgICAtZSAicywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSwsZyIgXAotICAgICAgICAgICAgICAgLWUgInMsLWlzeXN0ZW0ke1NUQUdJTkdfSU5DRElSfSAsLGciIFwKLSAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSxnIiBcCi0gICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSfSwke2JpbmRpcn0sZyIgXAotICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0lOQ0RJUn0sJHtpbmNsdWRlZGlyfSxnIiBcCi0gICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvLCR7YmluZGlyfS8sZyIgXAotICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LywsZyIgXAotICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU59LyR7VEFSR0VUX1BSRUZJWH0sJHtiaW5kaXJ9LGciIFwKLSAgICAgICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCi0gICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L2gyeHMgXAotICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9oMnBoIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vcG9kMm1hbiBcCi0gICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZDJ0ZXh0IFwKLSAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vcG9kMnVzYWdlIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vcG9kY2hlY2tlciBcCi0gICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZHNlbGVjdCBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NPUkUvY29uZmlnLmggXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9DT1JFL3BlcmwuaCBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NPUkUvcHAuaCBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0NvbmZpZy5wbSBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NvbmZpZy5wbSBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NvbmZpZy5wb2QgXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9Db25maWdfZ2l0LnBsIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ29uZmlnX2hlYXZ5LnBsIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vRXh0VXRpbHMvTGlibGlzdC9LaWQucG0gXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS9GaWxlQ2FjaGUucG0gXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS9wb2QvKi5wb2QgXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS9jb25maWcuc2gKLX0KLQotcmVxdWlyZSBwZXJsLXB0ZXN0LmluYwotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vcGVybCAke2JpbmRpcn0vcGVybC5yZWFsICR7YmluZGlyfS9wZXJsJHtQVn0gJHtsaWJkaXJ9L2xpYnBlcmwuc28qIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS9zaXRlX3BlcmwgXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0NvbmZpZy5wbSBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi9Db25maWdfZ2l0LnBsIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qL0NvbmZpZ19oZWF2eS10YXJnZXQucGwgXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1L2NvbmZpZy5zaCBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vc3RyaWN0LnBtIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS93YXJuaW5ncy5wbSBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vd2FybmluZ3MgXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L3ZhcnMucG0gXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1L3NpdGVfcGVybCBcCi0gICAgICAgICAgICAgICAiCi1SUFJPVklERVNfJHtQTn0gKz0gInBlcmwtbW9kdWxlLXN0cmljdCBwZXJsLW1vZHVsZS12YXJzIHBlcmwtbW9kdWxlLWNvbmZpZyBwZXJsLW1vZHVsZS13YXJuaW5ncyBcCi0gICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXdhcm5pbmdzLXJlZ2lzdGVyIgotCi1GSUxFU18ke1BOfS1zdGF0aWNkZXZfYXBwZW5kID0gIiAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi9DT1JFL2xpYnBlcmwuYSIKLQotRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovQ09SRSIKLQotRklMRVNfJHtQTn0tZG9jX2FwcGVuZCA9ICIgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L1VuaWNvZGUvQ29sbGF0ZS8qLnR4dCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi8ucGFja2xpc3QgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0V4dFV0aWxzL01BTklGRVNULlNLSVAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0V4dFV0aWxzL3hzdWJwcCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vRXh0VXRpbHMvdHlwZW1hcCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vRW5jb2RlL2VuY29kZS5oIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiCi1QQUNLQUdFUyArPSAiJHtQTn0tbWlzYyIKLQotRklMRVNfJHtQTn0tbWlzYyA9ICIke2JpbmRpcn0vKiIKLQotUEFDS0FHRVMgKz0gIiR7UE59LXBvZCIKLQotRklMRVNfJHtQTn0tcG9kID0gIiR7bGliZGlyfS9wZXJsNS8ke1BWfS9wb2QgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qLnBvZCBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovKi5wb2QgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qLyovKi5wb2QgXCAKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi8qLyovKi5wb2QgXCAKLSAgICAgICAgICAgICAgICAgICIKLQotUEFDS0FHRVMgKz0gIiR7UE59LW1vZHVsZS1jcGFuICR7UE59LW1vZHVsZS11bmljb3JlIgotCi1GSUxFU18ke1BOfS1tb2R1bGUtY3BhbiArPSAiJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0NQQU4gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAiCi1GSUxFU18ke1BOfS1tb2R1bGUtdW5pY29yZSArPSAiJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L3VuaWNvcmUiCi0KLSMgQ3JlYXRlIGEgcGVybC1tb2R1bGVzIHBhY2thZ2UgcmVjb21tZW5kaW5nIGFsbCB0aGUgb3RoZXIgcGVybAotIyBwYWNrYWdlcyAoYWN0dWFsbHkgdGhlIG5vbiBtb2R1bGVzIHBhY2thZ2VzIGFuZCBub3QgY3JlYXRlZCB0b28pCi1BTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzID0gIjEiCi1QQUNLQUdFUyArPSAiJHtQTn0tbW9kdWxlcyAiCi0KLVBBQ0tBR0VTUExJVEZVTkNTX3ByZXBlbmQgPSAic3BsaXRfcGVybF9wYWNrYWdlcyAiCi0KLXB5dGhvbiBzcGxpdF9wZXJsX3BhY2thZ2VzICgpIHsKLSAgICBsaWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9JykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsIHInLiovYXV0by8oW14uXSopL1teL10qXC4oc298bGR8aXh8YWwpJywgJyR7UE59LW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCByJy4qbGludXgvKFteXC9dKilcLnBtJywgJyR7UE59LW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBhbGxvd19kaXJzPUZhbHNlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCByJ01vZHVsZS8oW15cL10qKVwucG0nLCAnJHtQTn0tbW9kdWxlLSVzJywgJ3BlcmwgbW9kdWxlICVzJywgcmVjdXJzaXZlPVRydWUsIGFsbG93X2RpcnM9RmFsc2UsIG1hdGNoX3BhdGg9VHJ1ZSwgcHJlcGVuZD1GYWxzZSkKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsIHInTW9kdWxlLyhbXlwvXSopLy4qJywgJyR7UE59LW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBhbGxvd19kaXJzPUZhbHNlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCByJy4qbGludXgvKFteXC9dLiopXC4ocG18cGx8ZTJ4KScsICcke1BOfS1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgYWxsb3dfZGlycz1GYWxzZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgcicoXig/IShDUEFOXC98Q1BBTlBMVVNcL3xNb2R1bGVcL3x1bmljb3JlXC8pW15cL10pLiopXC4ocG18cGx8ZTJ4KScsICcke1BOfS1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgYWxsb3dfZGlycz1GYWxzZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQotCi0gICAgIyBwZXJsLW1vZHVsZXMgc2hvdWxkIHJlY29tbWVuZCBldmVyeSBwZXJsIG1vZHVsZSwgYW5kIG9ubHkgdGhlCi0gICAgIyBtb2R1bGVzLiBEb24ndCBhdHRlbXB0IHRvIHVzZSB0aGUgcmVzdWx0IG9mIGRvX3NwbGl0X3BhY2thZ2VzKCkgYXMgc29tZQotICAgICMgbW9kdWxlcyBhcmUgbWFudWFsbHkgc3BsaXQgKGVnLiBwZXJsLW1vZHVsZS11bmljb3JlKS4KLSAgICBwYWNrYWdlcyA9IGZpbHRlcihsYW1iZGEgcDogJ3BlcmwtbW9kdWxlLScgaW4gcCwgZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKSkKLSAgICBkLnNldFZhcihkLmV4cGFuZCgiUlJFQ09NTUVORFNfJHtQTn0tbW9kdWxlcyIpLCAnICcuam9pbihwYWNrYWdlcykpCi0KLSAgICAjIFJlYWQgdGhlIHByZS1nZW5lcmF0ZWQgZGVwZW5kZW5jeSBmaWxlLCBhbmQgdXNlIGl0IHRvIHNldCBtb2R1bGUgZGVwZW5kZWNpZXMKLSAgICBmb3IgbGluZSBpbiBvcGVuKGQuZXhwYW5kKCIke1dPUktESVJ9IikgKyAnL3BlcmwtcmRlcGVuZHMudHh0JykucmVhZGxpbmVzKCk6Ci0gICAgICAgIHNwbGl0bGluZSA9IGxpbmUuc3BsaXQoKQotICAgICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmUnLCBkKToKLSAgICAgICAgICAgIG1vZHVsZSA9IHNwbGl0bGluZVswXSArICctbmF0aXZlJwotICAgICAgICAgICAgZGVwZW5kcyA9ICJwZXJsLW5hdGl2ZSIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1vZHVsZSA9IHNwbGl0bGluZVswXS5yZXBsYWNlKCJSREVQRU5EU19wZXJsIiwgIlJERVBFTkRTXyR7UE59IikKLSAgICAgICAgICAgIGRlcGVuZHMgPSBzcGxpdGxpbmVbMl0uc3RyaXAoJyInKS5yZXBsYWNlKCJwZXJsLW1vZHVsZSIsICIke1BOfS1tb2R1bGUiKQotICAgICAgICBkLmFwcGVuZFZhcihkLmV4cGFuZChtb2R1bGUpLCAiICIgKyBkZXBlbmRzKQotfQotCi1weXRob24oKSB7Ci0gICAgaWYgZC5nZXRWYXIoJ0NMQVNTT1ZFUlJJREUnKSA9PSAiY2xhc3MtdGFyZ2V0IjoKLSAgICAgICAgZC5zZXRWYXIoIlBBQ0tBR0VTX0RZTkFNSUMiLCAiXnBlcmwtbW9kdWxlLS4qKD88IW5hdGl2ZSkkIikKLSAgICBlbGlmIGQuZ2V0VmFyKCdDTEFTU09WRVJSSURFJykgPT0gImNsYXNzLW5hdGl2ZSI6Ci0gICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFU19EWU5BTUlDIiwgIl5wZXJsLW1vZHVsZS0uKi1uYXRpdmUkIikKLSAgICBlbGlmIGQuZ2V0VmFyKCdDTEFTU09WRVJSSURFJykgPT0gImNsYXNzLW5hdGl2ZXNkayI6Ci0gICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFU19EWU5BTUlDIiwgIl5uYXRpdmVzZGstcGVybC1tb2R1bGUtLioiKQotfQotCi1SREVQRU5EU18ke1BOfS1taXNjICs9ICJwZXJsIHBlcmwtbW9kdWxlcyIKLVJERVBFTkRTXyR7UE59LXBvZCArPSAicGVybCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiKi5wbSAqLnBvZCAqLmggKi5wbCAqLnNoIgotCi1kb19jcmVhdGVfcmRlcGVuZHNfaW5jKCkgewotICAgIGNkICR7V09SS0RJUn0KLSAgICBjYXQgPDwnRU9QUkVBTUJMRScgPiAke1dPUktESVJ9L3BlcmwtcmRlcGVuZHMuaW5jCi0KLSMgU29tZSBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcyB0aGF0IHRoZSBhYm92ZSBkb2Vzbid0IG1hbmFnZSB0byBmaWd1cmUgb3V0Ci1SREVQRU5EU18ke1BOfS1tb2R1bGUtZmlsZS1zcGVjICs9ICIke1BOfS1tb2R1bGUtZmlsZS1zcGVjLXVuaXgiCi1SREVQRU5EU18ke1BOfS1tb2R1bGUtbWF0aC1iaWdpbnQgKz0gIiR7UE59LW1vZHVsZS1tYXRoLWJpZ2ludC1jYWxjIgotUkRFUEVORFNfJHtQTn0tbW9kdWxlLXRocmVhZC1xdWV1ZSArPSAiJHtQTn0tbW9kdWxlLWF0dHJpYnV0ZXMiCi1SREVQRU5EU18ke1BOfS1tb2R1bGUtb3ZlcmxvYWQgKz0gIiR7UE59LW1vZHVsZS1vdmVybG9hZGluZyIKLQotIyBHZW5lcmF0ZWQgZGVwZW5kcyBsaXN0IGJleW9uZCB0aGlzIGxpbmUKLUVPUFJFQU1CTEUKLSAgICB0ZXN0IC1lIHBhY2thZ2VzLXNwbGl0Lm5ldyAmJiBybSAtcmYgcGFja2FnZXMtc3BsaXQubmV3Ci0gICAgY3AgLXIgcGFja2FnZXMtc3BsaXQgcGFja2FnZXMtc3BsaXQubmV3ICYmIGNkIHBhY2thZ2VzLXNwbGl0Lm5ldwotICAgIGZpbmQgLiAtbmFtZSBcKi5wbSB8IHhhcmdzIHNlZCAtaSAnL149aGVhZC8sL149Y3V0L2QnCi0gICAgZWdyZXAgLXIgIl5ccyooXDx1c2UgLip8XDxyZXF1aXJlIC4qKTs/IiBwZXJsLW1vZHVsZS0qIC0taW5jbHVkZT0iKi5wbSIgfCBcCi0gICAgc2VkICJzL1wvLipcLnBtOiAqLyArPSAvZztzL1tcIlwnXS8vZztzLzsuKi9cIi9nO3MvKz0gLipcKHJlcXVpcmVcfHVzZVwpXD4gKi8rPSBcInBlcmwtbW9kdWxlLS9nO3MvQ1BBTlBMVVM6Oi4qL2NwYW5wbHVzL2c7cy9DUEFOOjouKi9jcGFuL2c7cy86Oi8tL2c7cy8gW14rXCJdLiovL2c7cy9fLy0vZztzL1wucGxcIiQvXCIvO3MvXCJcP1wkL1wiLztzLygvLzsiIHwgdHIgWzp1cHBlcjpdIFs6bG93ZXI6XSB8IFwKLSAgICBhd2sgJ3tpZiAoJDMgIT0gIlx4MjIiJDEiXHgyMiIpeyBwcmludCAkMH19J3wgXAotICAgIGdyZXAgLXYgLWUgIlwtdm1zXC0iIC1lIG1vZHVsZS01IC1lICJeJCIgLWUgIlxcJCIgLWUgeW91ciAtZSB0ayAtZSBhdXRvcGVybCAtZSBodG1sIC1lIGh0dHAgLWUgcGFyc2UtY3BhbiAtZSBwZXJsLW9zdHlwZSAtZSBuZGJtLWZpbGUgLWUgbW9kdWxlLW1hYyAtZSBmY2dpIC1lIGx3cCAtZSBkYmQgLWUgZGJpeCB8IFwKLSAgICBzb3J0IC11IHwgXAotICAgIHNlZCAncy9eL1JERVBFTkRTXy87cy9wZXJsLW1vZHVsZS0vJHtQTn0tbW9kdWxlLS9nO3MvbW9kdWxlLVwobW9kdWxlLVwpL1wxL2c7cy9cKG1vZHVsZS1sb2FkXCktY29uZGl0aW9uYWwvXDEvZztzL2VuY29kZS1jb25maWdsb2NhbC8mLXBtLzsnIHwgXAotICAgIGVncmVwIC13diAnPT58bW9kdWxlLWF8bW9kdWxlLWFwYWNoZS4/fG1vZHVsZS1hcHJ8bW9kdWxlLWF1dGhlbi1zYXNsfG1vZHVsZS1iLWFzbWRhdGF8bW9kdWxlLWNvbnZlcnQtZWJjZGljfG1vZHVsZS1kZXZlbC1zaXplfG1vZHVsZS1kaWdlc3QtcGVybC1tZDV8bW9kdWxlLWR1bXB2YWx1ZXxtb2R1bGUtZXh0dXRpbHMtY29uc3RhbnQtYWFhcmdoNTZoYXNofG1vZHVsZS1leHR1dGlscy14c3N5bXNldHxtb2R1bGUtZmlsZS1ic2RnbG9ifG1vZHVsZS1mb3J8bW9kdWxlLWl0fG1vZHVsZS1pby1zb2NrZXQtaW5ldDZ8bW9kdWxlLWlvLXNvY2tldC1zc2x8bW9kdWxlLWlvLXN0cmluZ3xtb2R1bGUtaXBjLXN5c3RlbS1zaW1wbGV8bW9kdWxlLWxleGljYWx8bW9kdWxlLWxvY2FsLWxpYnxtZXRhZGF0YXxtb2R1bGUtbW9kcGVybC11dGlsfG1vZHVsZS1wbHVnZ2FibGUtb2JqZWN0fG1vZHVsZS10ZXN0LWJ1aWxkZXItaW8tc2NhbGFyfG1vZHVsZS10ZXN0Mnxtb2R1bGUtdGV4dC11bmlkZWNvZGV8bW9kdWxlLXVuaWNvcmV8bW9kdWxlLXdpbjMyfG9iamVjdHNcc2xvYWR8c3lzY2FsbC5waHxzeXN0ZW1pbmZvLnBofCVzJyB8IFwKLSAgICBlZ3JlcCAtd3YgJz0+fG1vZHVsZS1hbGdvcml0aG0tZGlmZnxtb2R1bGUtY2FycHxtb2R1bGUtYzxleHR1dGlscy1tbS11bml4Pnxtb2R1bGUtZW5jb2RlLWhhbmV4dHJhfG1vZHVsZS1leHR1dGlscy1tYWtlbWFrZXItdmVyc2lvbi1yZWdleHxtb2R1bGUtZmlsZS1zcGVjfG1vZHVsZS1pby1jb21wcmVzcy1sem1hfG1vZHVsZS1sb2NhbGUtbWFrZXRleHQtbGV4aWNvbnxtb2R1bGUtbG9nLWFnZW50fG1vZHVsZS1tZXRhLW5vdGF0aW9ufG1vZHVsZS1uZXQtbG9jYWxjZmd8bW9kdWxlLW5ldC1waW5nLWV4dGVybmFsfG1vZHVsZS1iLWRlcGFyc2V8bW9kdWxlLXNjYWxhci11dGlsfG1vZHVsZS1zb21lLW1vZHVsZXxtb2R1bGUtc3ltYm9sfG1vZHVsZS11cml8bW9kdWxlLXdpbjMyYXBpLWZpbGUnID4+ICR7V09SS0RJUn0vcGVybC1yZGVwZW5kcy5nZW5lcmF0ZWQKLSAgICBjcCAke1dPUktESVJ9L3BlcmwtcmRlcGVuZHMuZ2VuZXJhdGVkICR7VEhJU0RJUn0vZmlsZXMvcGVybC1yZGVwZW5kcy50eHQKLX0KLQotIyBiaXRiYWtlIHBlcmwgLWMgY3JlYXRlX3JkZXBlbmRzX2luYwotYWRkdGFzayBkb19jcmVhdGVfcmRlcGVuZHNfaW5jCi0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAicGVybF9zeXNyb290X2NyZWF0ZV93cmFwcGVyIgotCi1wZXJsX3N5c3Jvb3RfY3JlYXRlX3dyYXBwZXIgKCkgewotICAgICAgIG1rZGlyIC1wICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfQotICAgICAgICMgQ3JlYXRlIGEgd3JhcHBlciB0aGF0IC91c3IvYmluL2VudiBwZXJsIHdpbGwgdXNlIHRvIGdldCBwZXJsLW5hdGl2ZS4KLSAgICAgICAjIFRoaXMgTVVTVCBsaXZlIGluIHRoZSBub3JtYWwgYmluZGlyLgotICAgICAgIGNhdCA+ICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfS9uYXRpdmVwZXJsIDw8IEVPRgotIyEvYmluL3NoCi1yZWFscGF0aD1cYHJlYWRsaW5rIC1mbiBcJDBcYAotZXhlYyBcYGRpcm5hbWUgXCRyZWFscGF0aFxgL3BlcmwtbmF0aXZlL3BlcmwgIlwkQCIKLUVPRgotICAgICAgIGNobW9kIDA3NTUgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9L25hdGl2ZXBlcmwKLSAgICAgICBjYXQgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9L25hdGl2ZXBlcmwKLX0KLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsXzUuMzAuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjMwLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc4YzQyMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjMwLjIuYmIKQEAgLTAsMCArMSwzODcgQEAKK1NVTU1BUlkgPSAiUGVybCBzY3JpcHRpbmcgbGFuZ3VhZ2UiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnBlcmwub3JnLyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weWluZzttZDU9NWIxMjJhMzZkMGY2ZGM1NTI3OWEwZWJjNjlmM2M2MGIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQXJ0aXN0aWM7bWQ1PTcxYTRkNWQ5YWNjMThjMDk1MmE2ZGYyMjE4YmI2OGRhIFwKKyAgICAgICAgICAgICAgICAgICAgIgorCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cuY3Bhbi5vcmcvc3JjLzUuMC9wZXJsLSR7UFZ9LnRhci5nejtuYW1lPXBlcmwgXAorICAgICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vYXJzdi9wZXJsLWNyb3NzL3JlbGVhc2VzL2Rvd25sb2FkLzEuMy4yL3BlcmwtY3Jvc3MtMS4zLjIudGFyLmd6O25hbWU9cGVybC1jcm9zcyBcCisgICAgICAgICAgIGZpbGU6Ly9wZXJsLXJkZXBlbmRzLnR4dCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZV90b29sLnNoLWRvLW5vdC1xdW90ZS10aGUtYXJndW1lbnQtdG8tY29tbWEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1FeHRVdGlscy1NYWtlTWFrZXItYWRkLUxERkxBR1Mtd2hlbi1saW5raW5nLWJpbmFyeS1tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtU29tZWhvdy10aGlzLW1vZHVsZS1icmVha3MtdGhyb3VnaC10aGUtcGVybC13cmFwcGVyLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9lcnJub192ZXIuZGlmZiBcCisgICAgICAgICAgIGZpbGU6Ly9uYXRpdmUtcGVybGluYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBlcmwtY3Jvc3MtYWRkLUxERkxBR1Mtd2hlbi1saW5raW5nLWxpYnBlcmwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcGVybC1keW5sb2FkZXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmVfcGF0aC5zaC1kby1ub3QtaGFyZGNvZGUtcHJlZml4LWxpYi1hcy1saWJyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZW5jMnhzLUFkZC1lbnZpcm9ubWVudC12YXJpYWJsZS10by1zdXBwcmVzcy1jb21tZW50cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUNvbnN0YW50LUZpeC11cC1zaGViYW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUEFUQ0gtcGVybC0xMzQxMTctQ2xvc2UtREFUQS1pbi1sb2NfdG9vbHMucGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGV0ZXJtaW5pc20ucGF0Y2ggIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBcCisgICAgICAgICAgIGZpbGU6Ly9wZXJsLWNvbmZpZ3BtLXN3aXRjaC5wYXRjaCBcCisiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKKyAgICAgICAgICAgZmlsZTovL2VuY29kZWZpeC5wYXRjaCBcCisiCisKK1NSQ19VUklbcGVybC5zaGEyNTZzdW1dID0gIjY2ZGI3ZGY4YTkxOTc5ZWI1NzZmYWM5MTc0MzY0NGRhODc4MjQ0Y2Y4ZWUxNTJmMDJjZDZmNWNkN2E3MzE2ODkiCitTUkNfVVJJW3BlcmwtY3Jvc3Muc2hhMjU2c3VtXSA9ICJkZWZhMTJmMGFkN2JlMGI2YzQ4YjRmNzZlMmZiNWIzN2MxYjM3ZmJlYjZlOWViZTkzODI3OWNkNTM5YTBjMjBjIgorCitTID0gIiR7V09SS0RJUn0vcGVybC0ke1BWfSIKKworaW5oZXJpdCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gdXBkYXRlLWFsdGVybmF0aXZlcworCitERVBFTkRTICs9ICJ6bGliIHZpcnR1YWwvY3J5cHQiCisKK1BFUkxfTElCX1ZFUiA9ICIke0AnLicuam9pbihkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzA6Ml0pfS4wIgorCitQQUNLQUdFQ09ORklHID8/PSAiYmRiIGdkYm0iCitQQUNLQUdFQ09ORklHW2JkYl0gPSAiLC1VaV9kYixkYiIKK1BBQ0tBR0VDT05GSUdbZ2RibV0gPSAiLC1VaV9nZGJtLGdkYm0iCisKKyMgRG9uJ3QgZ2VuZXJhdGUgY29tbWVudHMgaW4gZW5jMnhzIG91dHB1dCBmaWxlcy4gVGhleSBhcmUgbm90IHJlcHJvZHVjaWJsZQorZXhwb3J0IEVOQzJYU19OT19DT01NRU5UUyA9ICIxIgorCitkb191bnBhY2tfYXBwZW5kKCkgeworICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fY29weV9wZXJsY3Jvc3MnLCBkKQorfQorCitkb19jb3B5X3Blcmxjcm9zcygpIHsKKyAgICBjcCAtcmZwICR7V09SS0RJUn0vcGVybC1jcm9zcyovKiAke1N9Cit9CisKK2RvX2NvbmZpZ3VyZV9jbGFzcy10YXJnZXQoKSB7CisgICAgLi9jb25maWd1cmUgLS1wcmVmaXg9JHtwcmVmaXh9IC0tbGliZGlyPSR7bGliZGlyfSBcCisgICAgLS10YXJnZXQ9JHtUQVJHRVRfU1lTfSBcCisgICAgLUR1c2VzaHJwbGliIFwKKyAgICAtRHNvbmFtZT1saWJwZXJsLnNvLjUgXAorICAgIC1EdmVuZG9ycHJlZml4PSR7cHJlZml4fSBcCisgICAgLURhcmNobGliZXhwPSR7U1RBR0lOR19MSUJESVJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4IFwKKyAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9CisKKyAgICAjcGVybC5jIHVzZXMgYW4gQVJDSExJQl9FWFAgZGVmaW5lIHRvIGdlbmVyYXRlIGNvbXBpbGUtdGltZSBjb2RlIHRoYXQKKyAgICAjYWRkcyB0aGUgYXJjaGxpYmV4cCBwYXRoIHRvIEBJTkMgZHVyaW5nIHJ1bi10aW1lIGluaXRpYWxpemF0aW9uIG9mIGEKKyAgICAjbmV3IHBlcmwgaW50ZXJwcmV0ZXIuCisKKyAgICAjQmVjYXVzZSB3ZSd2ZSBjaGFuZ2VkIHRoaXMgdmFsdWUgaW4gYSB0ZW1wb3Jhcnkgd2F5IHRvIG1ha2UgaXQKKyAgICAjcG9zc2libGUgdG8gdXNlIEV4dFV0aWxzOjpFbWJlZCBpbiB0aGUgdGFyZ2V0IGJ1aWxkICh0aGUgdGVtcG9yYXJ5CisgICAgI3ZhbHVlIGluIGNvbmZpZy5zaCBnZXRzIHJlLXN0cmlwcGVkIG91dCBkdXJpbmcgcGFja2FnaW5nKSwgdGhlCisgICAgI0FSQ0hMSUJfRVhQIHZhbHVlIHRoYXQgZ2V0cyBnZW5lcmF0ZWQgc3RpbGwgdXNlcyB0aGUgdGVtcG9yYXJ5IHZlcnNpb24KKyAgICAjaW5zdGVhZCBvZiB0aGUgb3JpZ2luYWwgZXhwZWN0ZWQgdmVyc2lvbiAoaS5lLiBiZWNhdXNlcyBpdCdzIGluIHRoZQorICAgICNnZW5lcmF0ZWQgY29uZmlnLmgsIGl0IGRvZXNuJ3QgZ2V0IHN0cmlwcGVkIG91dCBkdXJpbmcgcGFja2FnaW5nIGxpa2UKKyAgICAjdGhlIG90aGVycyBpbiBjb25maWcuc2gpLgorCisgICAgc2VkIC1pIC1lICJzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSxnIiBjb25maWcuaAorfQorCitkb19jb25maWd1cmVfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgIC4vY29uZmlndXJlIC0tcHJlZml4PSR7cHJlZml4fSBcCisgICAgLS10YXJnZXQ9JHtUQVJHRVRfU1lTfSBcCisgICAgLUR1c2VzaHJwbGliIFwKKyAgICAtRHNvbmFtZT1saWJwZXJsLnNvLjUgXAorICAgIC1EdmVuZG9ycHJlZml4PSR7cHJlZml4fSBcCisgICAgLURhcmNobGliZXhwPSR7U1RBR0lOR19MSUJESVJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4IFwKKyAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9CisKKyAgICAjIFNlZSB0aGUgY29tbWVudCBhYm92ZQorICAgIHNlZCAtaSAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sZyIgY29uZmlnLmgKK30KKworZG9fY29uZmlndXJlX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICAuL2NvbmZpZ3VyZSAtLXByZWZpeD0ke3ByZWZpeH0gXAorICAgIC1EYmluPSR7YmluZGlyfS9wZXJsLW5hdGl2ZSBcCisgICAgLUR1c2VzaHJwbGliIFwKKyAgICAtRHNvbmFtZT1saWJwZXJsLnNvLjUgXAorICAgIC1EdmVuZG9ycHJlZml4PSR7cHJlZml4fSBcCisgICAgLVVpX3hsb2NhbGUgXAorICAgICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30KK30KKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKyAgICBpZiBbIC1uICIkU09VUkNFX0RBVEVfRVBPQ0giIF07IHRoZW4KKyAgICAgICAgUEVSTF9CVUlMRF9EQVRFPSIkKCR7UFlUSE9OfSAtYyAiXAorZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWV6b25lOyBcCitwcmludChkYXRldGltZS5mcm9tdGltZXN0YW1wKCRTT1VSQ0VfREFURV9FUE9DSCwgdGltZXpvbmUudXRjKS5zdHJmdGltZSgnJWEgJWIgJWQgJUg6JU06JVMgJVknKSkgXAorICAgICAgICAgICAgIikiCisgICAgICAgIGVjaG8gIiNkZWZpbmUgUEVSTF9CVUlMRF9EQVRFIFwiJFBFUkxfQlVJTERfREFURVwiIiA+PiBjb25maWcuaAorICAgIGZpCit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgb2VfcnVubWFrZQorICAgICMgVGhpcyBpc24ndCBnZW5lcmF0ZWQgcmVsaWFibHkgc28gZGVsZXRlIGFuZCByZS1nZW5lcmF0ZS4KKyAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9hcnN2L3BlcmwtY3Jvc3MvaXNzdWVzLzg2CisKKyAgICBpZiBbIC1lIHBvZC9wZXJsdG9jLnBvZCBdOyB0aGVuCisgICAgICAgIGJibm90ZSBSZWJ1aWxkaW5nIHBlcmx0b2MucG9kCisgICAgICAgIHJtIC1mIHBvZC9wZXJsdG9jLnBvZAorICAgICAgICBvZV9ydW5tYWtlIHBvZC9wZXJsdG9jLnBvZAorICAgIGZpCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGVybDUKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vCisgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0V4dFV0aWxzLworCisgICAgIyBTYXZlIG5hdGl2ZSBjb25maWcKKyAgICBpbnN0YWxsIGNvbmZpZy5zaCAke0R9JHtsaWJkaXJ9L3Blcmw1CisgICAgaW5zdGFsbCBsaWIvQ29uZmlnLnBtICR7RH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vCisgICAgaW5zdGFsbCBsaWIvRXh0VXRpbHMvdHlwZW1hcCAke0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0V4dFV0aWxzLworCisgICAgIyBGaXggdXAgc2hhcmVkIGxpYnJhcnkKKyAgICBybSAke0R9LyR7bGliZGlyfS9wZXJsNS8ke1BWfS8qL0NPUkUvbGlicGVybC5zbworICAgIGxuIC1zZiAuLi8uLi8uLi8uLi9saWJwZXJsLnNvLiR7UEVSTF9MSUJfVkVSfSAkKGVjaG8gJHtEfS8ke2xpYmRpcn0vcGVybDUvJHtQVn0vKi9DT1JFKS9saWJwZXJsLnNvCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAjIFRoaXMgaXMgdXNlZCB0byBzdWJzdGl0dXRlIHRhcmdldCBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBuYXRpdmUgcGVybCB2aWEgcGVybC1jb25maWdwbS1zd2l0Y2gucGF0Y2gKKyAgICBsbiAtcyBDb25maWdfaGVhdnkucGwgJHtEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9Db25maWdfaGVhdnktdGFyZ2V0LnBsCisKKyAgICAjIFRoaXMgY29udGFpbnMgaG9zdC1zcGVjaWZpYyBpbmZvcm1hdGlvbiB1c2VkIGZvciBidWlsZGluZyBtaW5pcGVybCAoYSBoZWxwZXIgZXhlY3V0YWJsZSBidWlsdCB3aXRoIGhvc3QgY29tcGlsZXIpCisgICAgIyBhbmQgdGhlcmVmb3JlIGlzbid0IHJlcHJvZHVjaWJsZS4gSSBiZWxpZXZlIHRoZSBmaWxlIGlzbid0IGFjdHVhbGx5IG5lZWRlZCBvbiB0YXJnZXQuCisgICAgcm0gJHtEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9DT1JFL3hjb25maWcuaAorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisgICAgIyBUaGlzIGlzIHVzZWQgdG8gc3Vic3RpdHV0ZSB0YXJnZXQgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgbmF0aXZlIHBlcmwgdmlhIHBlcmwtY29uZmlncG0tc3dpdGNoLnBhdGNoCisgICAgbG4gLXMgQ29uZmlnX2hlYXZ5LnBsICR7RH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ29uZmlnX2hlYXZ5LXRhcmdldC5wbAorCisgICAgY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9wZXJsIFwKKyAgICAgICAgUEVSTDVMSUI9JyRQRVJMNUxJQjokT0VDT1JFX05BVElWRV9TWVNST09ULyR7bGliZGlyX25hdGl2ZXNka30vcGVybDUvc2l0ZV9wZXJsLyR7UFZ9OiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvJHtsaWJkaXJfbmF0aXZlc2RrfS9wZXJsNS92ZW5kb3JfcGVybC8ke1BWfTokT0VDT1JFX05BVElWRV9TWVNST09ULyR7bGliZGlyX25hdGl2ZXNka30vcGVybDUvJHtQVn0nCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgIyBUaG9zZSB3cmFwcGVycyBtZWFuIHRoYXQgcGVybCBpbnN0YWxsZWQgZnJvbSBzc3RhdGUgKHdoaWNoIG1heSBjaGFuZ2UKKyAgICAjIHBhdGggbG9jYXRpb24pIHdvcmtzIGFuZCB0aGF0IGluIHRoZSBuYXRpdmVzZGsgY2FzZSwgdGhlIFNESyBjYW4gYmUKKyAgICAjIGluc3RhbGxlZCB0byBhIGRpZmZlcmVudCBsb2NhdGlvbiBmcm9tIHRoZSBvbmUgaXQgd2FzIGJ1aWx0IGZvci4KKyAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3BlcmwtbmF0aXZlL3BlcmwgUEVSTDVMSUI9JyRQRVJMNUxJQjoke1NUQUdJTkdfTElCRElSfS9wZXJsNS9zaXRlX3BlcmwvJHtQVn06JHtTVEFHSU5HX0xJQkRJUn0vcGVybDUvdmVuZG9yX3BlcmwvJHtQVn06JHtTVEFHSU5HX0xJQkRJUn0vcGVybDUvJHtQVn0nCisKKyAgICAjIFVzZSAvdXNyL2Jpbi9lbnYgbmF0aXZlcGVybCBmb3IgdGhlIHBlcmwgc2NyaXB0LgorICAgIGZvciBmIGluIGBncmVwIC1JbCAnIyEgKiR7YmluZGlyfS9wZXJsJyAke0R9LyR7YmluZGlyfS8qYDsgZG8KKyAgICAgICAgICAgIHNlZCAtaSAtZSAnc3wke2JpbmRpcn0vcGVybHwvdXNyL2Jpbi9lbnYgbmF0aXZlcGVybHwnICRmCisgICAgZG9uZQorfQorCitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInBlcmxfcGFja2FnZV9wcmVwcm9jZXNzIgorCitwZXJsX3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CisgICAgICAgICMgRml4IHVwIGluc3RhbGxlZCBjb25maWd1cmF0aW9uCisgICAgICAgIHNlZCAtaSAtZSAicywke0R9LCxnIiBcCisgICAgICAgICAgICAgICAtZSAicywke0RFQlVHX1BSRUZJWF9NQVB9LCxnIiBcCisgICAgICAgICAgICAgICAtZSAicywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSwsZyIgXAorICAgICAgICAgICAgICAgLWUgInMsLWlzeXN0ZW0ke1NUQUdJTkdfSU5DRElSfSAsLGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSxnIiBcCisgICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSfSwke2JpbmRpcn0sZyIgXAorICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0lOQ0RJUn0sJHtpbmNsdWRlZGlyfSxnIiBcCisgICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvLCR7YmluZGlyfS8sZyIgXAorICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LywsZyIgXAorICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU59LyR7VEFSR0VUX1BSRUZJWH0sJHtiaW5kaXJ9LGciIFwKKyAgICAgICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCisgICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L2gyeHMucGVybCBcCisgICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L2gycGgucGVybCBcCisgICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZDJtYW4ucGVybCBcCisgICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZDJ0ZXh0LnBlcmwgXAorICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9wb2QydXNhZ2UucGVybCBcCisgICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZGNoZWNrZXIucGVybCBcCisgICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZHNlbGVjdC5wZXJsIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ09SRS9jb25maWcuaCBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NPUkUvcGVybC5oIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ09SRS9wcC5oIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vQ29uZmlnLnBtIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ29uZmlnLnBtIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ29uZmlnLnBvZCBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NvbmZpZ19naXQucGwgXAorICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9Db25maWdfaGVhdnkucGwgXAorICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS9FeHRVdGlscy9MaWJsaXN0L0tpZC5wbSBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0ZpbGVDYWNoZS5wbSBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L3BvZC8qLnBvZCBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1L2NvbmZpZy5zaAorfQorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitBTFRFUk5BVElWRV8ke1BOfS1taXNjID0gImNvcmVsaXN0IGNwYW4gZW5jMnhzIGVuY2d1ZXNzIGgycGggaDJ4cyBpbnN0bW9kc2gganNvbl9wcCBsaWJuZXRjZmcgXAorICAgICAgICAgICAgICAgICAgICAgcGljb252IHBsMnBtIHBvZDJodG1sIHBvZDJtYW4gcG9kMnRleHQgcG9kMnVzYWdlIHBvZGNoZWNrZXIgcG9kc2VsZWN0IFwKKyAgICAgICAgICAgICAgICAgICAgIHByb3ZlIHB0YXIgcHRhcmRpZmYgcHRhcmdyZXAgc2hhc3VtIHNwbGFpbiB4c3VicHAgemlwZGV0YWlscyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtjb3JlbGlzdF0gPSAiJHtiaW5kaXJ9L2NvcmVsaXN0IgorQUxURVJOQVRJVkVfTElOS19OQU1FW2NwYW5dID0gIiR7YmluZGlyfS9jcGFuIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2VuYzJ4c10gPSAiJHtiaW5kaXJ9L2VuYzJ4cyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtlbmNndWVzc10gPSAiJHtiaW5kaXJ9L2VuY2d1ZXNzIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2gycGhdID0gIiR7YmluZGlyfS9oMnBoIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2gyeHNdID0gIiR7YmluZGlyfS9oMnhzIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2luc3Rtb2RzaF0gPSAiJHtiaW5kaXJ9L2luc3Rtb2RzaCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtqc29uX3BwXSA9ICIke2JpbmRpcn0vanNvbl9wcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtsaWJuZXRjZmddID0gIiR7YmluZGlyfS9saWJuZXRjZmciCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcGljb252XSA9ICIke2JpbmRpcn0vcGljb252IgorQUxURVJOQVRJVkVfTElOS19OQU1FW3BsMnBtXSA9ICIke2JpbmRpcn0vcGwycG0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcG9kMmh0bWxdID0gIiR7YmluZGlyfS9wb2QyaHRtbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwb2QybWFuXSA9ICIke2JpbmRpcn0vcG9kMm1hbiIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwb2QydGV4dF0gPSAiJHtiaW5kaXJ9L3BvZDJ0ZXh0IgorQUxURVJOQVRJVkVfTElOS19OQU1FW3BvZDJ1c2FnZV0gPSAiJHtiaW5kaXJ9L3BvZDJ1c2FnZSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwb2RjaGVja2VyXSA9ICIke2JpbmRpcn0vcG9kY2hlY2tlciIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwb2RzZWxlY3RdID0gIiR7YmluZGlyfS9wb2RzZWxlY3QiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcHJvdmVdID0gIiR7YmluZGlyfS9wcm92ZSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwdGFyXSA9ICIke2JpbmRpcn0vcHRhciIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwdGFyZGlmZl0gPSAiJHtiaW5kaXJ9L3B0YXJkaWZmIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3B0YXJncmVwXSA9ICIke2JpbmRpcn0vcHRhcmdyZXAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc2hhc3VtXSA9ICIke2JpbmRpcn0vc2hhc3VtIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3NwbGFpbl0gPSAiJHtiaW5kaXJ9L3NwbGFpbiIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt4c3VicHBdID0gIiR7YmluZGlyfS94c3VicHAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbemlwZGV0YWlsc10gPSAiJHtiaW5kaXJ9L3ppcGRldGFpbHMiCisKK3JlcXVpcmUgcGVybC1wdGVzdC5pbmMKKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L3BlcmwgJHtiaW5kaXJ9L3BlcmwucmVhbCAke2JpbmRpcn0vcGVybCR7UFZ9ICR7bGliZGlyfS9saWJwZXJsLnNvKiBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvc2l0ZV9wZXJsIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS9Db25maWcucG0gXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NvbmZpZy5wbSBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi9Db25maWdfZ2l0LnBsIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qL0NvbmZpZ19oZWF2eS10YXJnZXQucGwgXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1L2NvbmZpZy5zaCBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vc3RyaWN0LnBtIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS93YXJuaW5ncy5wbSBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vd2FybmluZ3MgXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L3ZhcnMucG0gXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1L3NpdGVfcGVybCBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vRXh0VXRpbHMvTUFOSUZFU1QuU0tJUCBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vRXh0VXRpbHMveHN1YnBwIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS9FeHRVdGlscy90eXBlbWFwIFwKKyAgICAgICAgICAgICAgICIKK1JQUk9WSURFU18ke1BOfSArPSAicGVybC1tb2R1bGUtc3RyaWN0IHBlcmwtbW9kdWxlLXZhcnMgcGVybC1tb2R1bGUtY29uZmlnIHBlcmwtbW9kdWxlLXdhcm5pbmdzIFwKKyAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtd2FybmluZ3MtcmVnaXN0ZXIiCisKK0ZJTEVTXyR7UE59LXN0YXRpY2Rldl9hcHBlbmQgPSAiICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qL0NPUkUvbGlicGVybC5hIgorCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi9DT1JFIgorCitGSUxFU18ke1BOfS1kb2NfYXBwZW5kID0gIiAke2xpYmRpcn0vcGVybDUvJHtQVn0vVW5pY29kZS9Db2xsYXRlLyoudHh0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qLy5wYWNrbGlzdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vRW5jb2RlL2VuY29kZS5oIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiCitQQUNLQUdFUyArPSAiJHtQTn0tbWlzYyIKKworRklMRVNfJHtQTn0tbWlzYyA9ICIke2JpbmRpcn0vKiIKKworUEFDS0FHRVMgKz0gIiR7UE59LXBvZCIKKworRklMRVNfJHtQTn0tcG9kID0gIiR7bGliZGlyfS9wZXJsNS8ke1BWfS9wb2QgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qLnBvZCBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovKi5wb2QgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qLyovKi5wb2QgXCAKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi8qLyovKi5wb2QgXCAKKyAgICAgICAgICAgICAgICAgICIKKworUEFDS0FHRVMgKz0gIiR7UE59LW1vZHVsZS1jcGFuICR7UE59LW1vZHVsZS11bmljb3JlIgorCitGSUxFU18ke1BOfS1tb2R1bGUtY3BhbiArPSAiJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0NQQU4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAiCitGSUxFU18ke1BOfS1tb2R1bGUtdW5pY29yZSArPSAiJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L3VuaWNvcmUiCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjQwIgorQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gIlRocmVhZC4zIgorQUxURVJOQVRJVkVfTElOS19OQU1FW1RocmVhZC4zXSA9ICIke21hbmRpcn0vbWFuMy9UaHJlYWQuMyIKKworIyBDcmVhdGUgYSBwZXJsLW1vZHVsZXMgcGFja2FnZSByZWNvbW1lbmRpbmcgYWxsIHRoZSBvdGhlciBwZXJsCisjIHBhY2thZ2VzIChhY3R1YWxseSB0aGUgbm9uIG1vZHVsZXMgcGFja2FnZXMgYW5kIG5vdCBjcmVhdGVkIHRvbykKK0FMTE9XX0VNUFRZXyR7UE59LW1vZHVsZXMgPSAiMSIKK1BBQ0tBR0VTICs9ICIke1BOfS1tb2R1bGVzICIKKworUEFDS0FHRVNQTElURlVOQ1NfcHJlcGVuZCA9ICJzcGxpdF9wZXJsX3BhY2thZ2VzICIKKworcHl0aG9uIHNwbGl0X3BlcmxfcGFja2FnZXMgKCkgeworICAgIGxpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vcGVybDUvJHtQVn0nKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgcicuKi9hdXRvLyhbXi5dKikvW14vXSpcLihzb3xsZHxpeHxhbCknLCAnJHtQTn0tbW9kdWxlLSVzJywgJ3BlcmwgbW9kdWxlICVzJywgcmVjdXJzaXZlPVRydWUsIG1hdGNoX3BhdGg9VHJ1ZSwgcHJlcGVuZD1GYWxzZSkKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsIHInLipsaW51eC8oW15cL10qKVwucG0nLCAnJHtQTn0tbW9kdWxlLSVzJywgJ3BlcmwgbW9kdWxlICVzJywgcmVjdXJzaXZlPVRydWUsIGFsbG93X2RpcnM9RmFsc2UsIG1hdGNoX3BhdGg9VHJ1ZSwgcHJlcGVuZD1GYWxzZSkKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsIHInTW9kdWxlLyhbXlwvXSopXC5wbScsICcke1BOfS1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgYWxsb3dfZGlycz1GYWxzZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgcidNb2R1bGUvKFteXC9dKikvLionLCAnJHtQTn0tbW9kdWxlLSVzJywgJ3BlcmwgbW9kdWxlICVzJywgcmVjdXJzaXZlPVRydWUsIGFsbG93X2RpcnM9RmFsc2UsIG1hdGNoX3BhdGg9VHJ1ZSwgcHJlcGVuZD1GYWxzZSkKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsIHInLipsaW51eC8oW15cL10uKilcLihwbXxwbHxlMngpJywgJyR7UE59LW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBhbGxvd19kaXJzPUZhbHNlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCByJyheKD8hKENQQU5cL3xDUEFOUExVU1wvfE1vZHVsZVwvfHVuaWNvcmVcLylbXlwvXSkuKilcLihwbXxwbHxlMngpJywgJyR7UE59LW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBhbGxvd19kaXJzPUZhbHNlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCisKKyAgICAjIHBlcmwtbW9kdWxlcyBzaG91bGQgcmVjb21tZW5kIGV2ZXJ5IHBlcmwgbW9kdWxlLCBhbmQgb25seSB0aGUKKyAgICAjIG1vZHVsZXMuIERvbid0IGF0dGVtcHQgdG8gdXNlIHRoZSByZXN1bHQgb2YgZG9fc3BsaXRfcGFja2FnZXMoKSBhcyBzb21lCisgICAgIyBtb2R1bGVzIGFyZSBtYW51YWxseSBzcGxpdCAoZWcuIHBlcmwtbW9kdWxlLXVuaWNvcmUpLgorICAgIHBhY2thZ2VzID0gZmlsdGVyKGxhbWJkYSBwOiAncGVybC1tb2R1bGUtJyBpbiBwLCBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpKQorICAgIGQuc2V0VmFyKGQuZXhwYW5kKCJSUkVDT01NRU5EU18ke1BOfS1tb2R1bGVzIiksICcgJy5qb2luKHBhY2thZ2VzKSkKKworICAgICMgUmVhZCB0aGUgcHJlLWdlbmVyYXRlZCBkZXBlbmRlbmN5IGZpbGUsIGFuZCB1c2UgaXQgdG8gc2V0IG1vZHVsZSBkZXBlbmRlY2llcworICAgIGZvciBsaW5lIGluIG9wZW4oZC5leHBhbmQoIiR7V09SS0RJUn0iKSArICcvcGVybC1yZGVwZW5kcy50eHQnKS5yZWFkbGluZXMoKToKKyAgICAgICAgc3BsaXRsaW5lID0gbGluZS5zcGxpdCgpCisgICAgICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZScsIGQpOgorICAgICAgICAgICAgbW9kdWxlID0gc3BsaXRsaW5lWzBdICsgJy1uYXRpdmUnCisgICAgICAgICAgICBkZXBlbmRzID0gInBlcmwtbmF0aXZlIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbW9kdWxlID0gc3BsaXRsaW5lWzBdLnJlcGxhY2UoIlJERVBFTkRTX3BlcmwiLCAiUkRFUEVORFNfJHtQTn0iKQorICAgICAgICAgICAgZGVwZW5kcyA9IHNwbGl0bGluZVsyXS5zdHJpcCgnIicpLnJlcGxhY2UoInBlcmwtbW9kdWxlIiwgIiR7UE59LW1vZHVsZSIpCisgICAgICAgIGQuYXBwZW5kVmFyKGQuZXhwYW5kKG1vZHVsZSksICIgIiArIGRlcGVuZHMpCit9CisKK3B5dGhvbigpIHsKKyAgICBpZiBkLmdldFZhcignQ0xBU1NPVkVSUklERScpID09ICJjbGFzcy10YXJnZXQiOgorICAgICAgICBkLnNldFZhcigiUEFDS0FHRVNfRFlOQU1JQyIsICJecGVybC1tb2R1bGUtLiooPzwhbmF0aXZlKSQiKQorICAgIGVsaWYgZC5nZXRWYXIoJ0NMQVNTT1ZFUlJJREUnKSA9PSAiY2xhc3MtbmF0aXZlIjoKKyAgICAgICAgZC5zZXRWYXIoIlBBQ0tBR0VTX0RZTkFNSUMiLCAiXnBlcmwtbW9kdWxlLS4qLW5hdGl2ZSQiKQorICAgIGVsaWYgZC5nZXRWYXIoJ0NMQVNTT1ZFUlJJREUnKSA9PSAiY2xhc3MtbmF0aXZlc2RrIjoKKyAgICAgICAgZC5zZXRWYXIoIlBBQ0tBR0VTX0RZTkFNSUMiLCAiXm5hdGl2ZXNkay1wZXJsLW1vZHVsZS0uKiIpCit9CisKK1JERVBFTkRTXyR7UE59LW1pc2MgKz0gInBlcmwgcGVybC1tb2R1bGVzIgorUkRFUEVORFNfJHtQTn0tcG9kICs9ICJwZXJsIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICIqLnBtICoucG9kICouaCAqLnBsICouc2giCisKK2RvX2NyZWF0ZV9yZGVwZW5kc19pbmMoKSB7CisgICAgY2QgJHtXT1JLRElSfQorICAgIGNhdCA8PCdFT1BSRUFNQkxFJyA+ICR7V09SS0RJUn0vcGVybC1yZGVwZW5kcy5pbmMKKworIyBTb21lIGFkZGl0aW9uYWwgZGVwZW5kZW5jaWVzIHRoYXQgdGhlIGFib3ZlIGRvZXNuJ3QgbWFuYWdlIHRvIGZpZ3VyZSBvdXQKK1JERVBFTkRTXyR7UE59LW1vZHVsZS1maWxlLXNwZWMgKz0gIiR7UE59LW1vZHVsZS1maWxlLXNwZWMtdW5peCIKK1JERVBFTkRTXyR7UE59LW1vZHVsZS1tYXRoLWJpZ2ludCArPSAiJHtQTn0tbW9kdWxlLW1hdGgtYmlnaW50LWNhbGMiCitSREVQRU5EU18ke1BOfS1tb2R1bGUtdGhyZWFkLXF1ZXVlICs9ICIke1BOfS1tb2R1bGUtYXR0cmlidXRlcyIKK1JERVBFTkRTXyR7UE59LW1vZHVsZS1vdmVybG9hZCArPSAiJHtQTn0tbW9kdWxlLW92ZXJsb2FkaW5nIgorCisjIEdlbmVyYXRlZCBkZXBlbmRzIGxpc3QgYmV5b25kIHRoaXMgbGluZQorRU9QUkVBTUJMRQorICAgIHRlc3QgLWUgcGFja2FnZXMtc3BsaXQubmV3ICYmIHJtIC1yZiBwYWNrYWdlcy1zcGxpdC5uZXcKKyAgICBjcCAtciBwYWNrYWdlcy1zcGxpdCBwYWNrYWdlcy1zcGxpdC5uZXcgJiYgY2QgcGFja2FnZXMtc3BsaXQubmV3CisgICAgZmluZCAuIC1uYW1lIFwqLnBtIHwgeGFyZ3Mgc2VkIC1pICcvXj1oZWFkLywvXj1jdXQvZCcKKyAgICBlZ3JlcCAtciAiXlxzKihcPHVzZSAuKnxcPHJlcXVpcmUgLiopOz8iIHBlcmwtbW9kdWxlLSogLS1pbmNsdWRlPSIqLnBtIiB8IFwKKyAgICBzZWQgInMvXC8uKlwucG06ICovICs9IC9nO3MvW1wiXCddLy9nO3MvOy4qL1wiL2c7cy8rPSAuKlwocmVxdWlyZVx8dXNlXClcPiAqLys9IFwicGVybC1tb2R1bGUtL2c7cy9DUEFOUExVUzo6LiovY3BhbnBsdXMvZztzL0NQQU46Oi4qL2NwYW4vZztzLzo6Ly0vZztzLyBbXitcIl0uKi8vZztzL18vLS9nO3MvXC5wbFwiJC9cIi87cy9cIlw/XCQvXCIvO3MvKC8vOyIgfCB0ciBbOnVwcGVyOl0gWzpsb3dlcjpdIHwgXAorICAgIGF3ayAne2lmICgkMyAhPSAiXHgyMiIkMSJceDIyIil7IHByaW50ICQwfX0nfCBcCisgICAgZ3JlcCAtdiAtZSAiXC12bXNcLSIgLWUgbW9kdWxlLTUgLWUgIl4kIiAtZSAiXFwkIiAtZSB5b3VyIC1lIHRrIC1lIGF1dG9wZXJsIC1lIGh0bWwgLWUgaHR0cCAtZSBwYXJzZS1jcGFuIC1lIHBlcmwtb3N0eXBlIC1lIG5kYm0tZmlsZSAtZSBtb2R1bGUtbWFjIC1lIGZjZ2kgLWUgbHdwIC1lIGRiZCAtZSBkYml4IHwgXAorICAgIHNvcnQgLXUgfCBcCisgICAgc2VkICdzL14vUkRFUEVORFNfLztzL3BlcmwtbW9kdWxlLS8ke1BOfS1tb2R1bGUtL2c7cy9tb2R1bGUtXChtb2R1bGUtXCkvXDEvZztzL1wobW9kdWxlLWxvYWRcKS1jb25kaXRpb25hbC9cMS9nO3MvZW5jb2RlLWNvbmZpZ2xvY2FsLyYtcG0vOycgfCBcCisgICAgZWdyZXAgLXd2ICc9Pnxtb2R1bGUtYXxtb2R1bGUtYXBhY2hlLj98bW9kdWxlLWFwcnxtb2R1bGUtYXV0aGVuLXNhc2x8bW9kdWxlLWItYXNtZGF0YXxtb2R1bGUtY29udmVydC1lYmNkaWN8bW9kdWxlLWRldmVsLXNpemV8bW9kdWxlLWRpZ2VzdC1wZXJsLW1kNXxtb2R1bGUtZHVtcHZhbHVlfG1vZHVsZS1leHR1dGlscy1jb25zdGFudC1hYWFyZ2g1Nmhhc2h8bW9kdWxlLWV4dHV0aWxzLXhzc3ltc2V0fG1vZHVsZS1maWxlLWJzZGdsb2J8bW9kdWxlLWZvcnxtb2R1bGUtaXR8bW9kdWxlLWlvLXNvY2tldC1pbmV0Nnxtb2R1bGUtaW8tc29ja2V0LXNzbHxtb2R1bGUtaW8tc3RyaW5nfG1vZHVsZS1pcGMtc3lzdGVtLXNpbXBsZXxtb2R1bGUtbGV4aWNhbHxtb2R1bGUtbG9jYWwtbGlifG1ldGFkYXRhfG1vZHVsZS1tb2RwZXJsLXV0aWx8bW9kdWxlLXBsdWdnYWJsZS1vYmplY3R8bW9kdWxlLXRlc3QtYnVpbGRlci1pby1zY2FsYXJ8bW9kdWxlLXRlc3QyfG1vZHVsZS10ZXh0LXVuaWRlY29kZXxtb2R1bGUtdW5pY29yZXxtb2R1bGUtd2luMzJ8b2JqZWN0c1xzbG9hZHxzeXNjYWxsLnBofHN5c3RlbWluZm8ucGh8JXMnIHwgXAorICAgIGVncmVwIC13diAnPT58bW9kdWxlLWFsZ29yaXRobS1kaWZmfG1vZHVsZS1jYXJwfG1vZHVsZS1jPGV4dHV0aWxzLW1tLXVuaXg+fG1vZHVsZS1lbmNvZGUtaGFuZXh0cmF8bW9kdWxlLWV4dHV0aWxzLW1ha2VtYWtlci12ZXJzaW9uLXJlZ2V4fG1vZHVsZS1maWxlLXNwZWN8bW9kdWxlLWlvLWNvbXByZXNzLWx6bWF8bW9kdWxlLWxvY2FsZS1tYWtldGV4dC1sZXhpY29ufG1vZHVsZS1sb2ctYWdlbnR8bW9kdWxlLW1ldGEtbm90YXRpb258bW9kdWxlLW5ldC1sb2NhbGNmZ3xtb2R1bGUtbmV0LXBpbmctZXh0ZXJuYWx8bW9kdWxlLWItZGVwYXJzZXxtb2R1bGUtc2NhbGFyLXV0aWx8bW9kdWxlLXNvbWUtbW9kdWxlfG1vZHVsZS1zeW1ib2x8bW9kdWxlLXVyaXxtb2R1bGUtd2luMzJhcGktZmlsZScgPj4gJHtXT1JLRElSfS9wZXJsLXJkZXBlbmRzLmdlbmVyYXRlZAorICAgIGNwICR7V09SS0RJUn0vcGVybC1yZGVwZW5kcy5nZW5lcmF0ZWQgJHtUSElTRElSfS9maWxlcy9wZXJsLXJkZXBlbmRzLnR4dAorfQorCisjIGJpdGJha2UgcGVybCAtYyBjcmVhdGVfcmRlcGVuZHNfaW5jCithZGR0YXNrIGRvX2NyZWF0ZV9yZGVwZW5kc19pbmMKKworU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTICs9ICJwZXJsX3N5c3Jvb3RfY3JlYXRlX3dyYXBwZXIiCisKK3Blcmxfc3lzcm9vdF9jcmVhdGVfd3JhcHBlciAoKSB7CisgICAgICAgbWtkaXIgLXAgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9CisgICAgICAgIyBDcmVhdGUgYSB3cmFwcGVyIHRoYXQgL3Vzci9iaW4vZW52IHBlcmwgd2lsbCB1c2UgdG8gZ2V0IHBlcmwtbmF0aXZlLgorICAgICAgICMgVGhpcyBNVVNUIGxpdmUgaW4gdGhlIG5vcm1hbCBiaW5kaXIuCisgICAgICAgY2F0ID4gJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9L25hdGl2ZXBlcmwgPDwgRU9GCisjIS9iaW4vc2gKK3JlYWxwYXRoPVxgcmVhZGxpbmsgLWZuIFwkMFxgCitleGVjIFxgZGlybmFtZSBcJHJlYWxwYXRoXGAvcGVybC1uYXRpdmUvcGVybCAiXCRAIgorRU9GCisgICAgICAgY2htb2QgMDc1NSAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vbmF0aXZlcGVybAorICAgICAgIGNhdCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vbmF0aXZlcGVybAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mXzEuNi4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mXzEuNi4zLmJiCmluZGV4IDk0YmMxMTIuLjczMmNhMmEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjYuMy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmZfMS42LjMuYmIKQEAgLTgsNyArOCw2IEBACiBTRUNUSU9OID0gImRldmVsIgogUFJPVklERVMgKz0gInBrZ2NvbmZpZyIKIFJQUk9WSURFU18ke1BOfSArPSAicGtnY29uZmlnIgotREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgogCiAjIFRoZSBwa2djb25mIGxpY2Vuc2Ugc2VlbXMgdG8gYmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gQlNELTItQ2xhdXNlIG9yCiAjIElTQywgYnV0IGhhcyBkaWZmZXJlbnQgd29yZGluZywgc28gbmVlZHMgaXRzIG93biBuYW1lLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rLzAwMDEtQWRkLU1JUFMtZ251LWhhc2gtc3VwcG9ydC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGluay8wMDAxLUFkZC1NSVBTLWdudS1oYXNoLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGEwMjc1YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGluay8wMDAxLUFkZC1NSVBTLWdudS1oYXNoLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSwxMTAgQEAKK0Zyb20gMDUyNDBlMTM2Njg0MjJjNGY5MTE4ZjJjZGU5NTNlYzg3NWQwZDY4ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE0IEphbiAyMDIwIDAxOjM3OjIyIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBNSVBTIGdudSBoYXNoIHN1cHBvcnQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2FyY2gtbWlwcy5jIHwgMSArCisgc3JjL3ByZWxpbmsuYyAgIHwgMSArCisgc3JjL3ByZWxpbmsuaCAgIHwgNSArKysrKworIDMgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCisKKy0tLSBhL3NyYy9hcmNoLW1pcHMuYworKysrIGIvc3JjL2FyY2gtbWlwcy5jCitAQCAtMzI0LDYgKzMyNCw3IEBAIG1pcHNfYWRqdXN0X2R5biAoRFNPICpkc28sIGludCBuLCBHRWxmX0QKKyAgICAgY2FzZSBEVF9NSVBTX0JBU0VfQUREUkVTUzoKKyAgICAgY2FzZSBEVF9NSVBTX1JMRF9NQVA6CisgICAgIGNhc2UgRFRfTUlQU19PUFRJT05TOgorKyAgICBjYXNlIERUX01JUFNfWEhBU0g6CisgICAgICAgaWYgKGR5bi0+ZF91bi5kX3B0ciA+PSBzdGFydCkKKyAJZHluLT5kX3VuLmRfcHRyICs9IGFkanVzdDsKKyAgICAgICByZXR1cm4gMTsKKy0tLSBhL3NyYy9wcmVsaW5rLmMKKysrKyBiL3NyYy9wcmVsaW5rLmMKK0BAIC00MjUsNiArNDI1LDcgQEAgcHJlbGlua19wcmVwYXJlIChEU08gKmRzbykKKyAJICB7CisgCSAgY2FzZSBTSFRfSEFTSDoKKyAJICBjYXNlIFNIVF9HTlVfSEFTSDoKKysJICBjYXNlIFNIVF9NSVBTX1hIQVNIOgorIAkgIGNhc2UgU0hUX0RZTlNZTToKKyAJICBjYXNlIFNIVF9SRUw6CisgCSAgY2FzZSBTSFRfUkVMQToKKy0tLSBhL3NyYy9wcmVsaW5rLmgKKysrKyBiL3NyYy9wcmVsaW5rLmgKK0BAIC0xMTQsNiArMTE0LDExIEBAIHR5cGVkZWYgdWludDhfdCBFbGY2NF9CeXRlOworICNkZWZpbmUgU0hUX01JUFNfQUJJRkxBR1MgICAgICAgMHg3MDAwMDAyYQorICNlbmRpZgorIAorKyNpZm5kZWYgU0hUX01JUFNfWEhBU0gKKysjZGVmaW5lIERUX01JUFNfWEhBU0gJICAgIDB4NzAwMDAwMzYKKysjZGVmaW5lIFNIVF9NSVBTX1hIQVNIICAgICAgIDB4NzAwMDAwMmIKKysjZW5kaWYKKysKKyAjaWZuZGVmIFJTU19VTkRFRgorICNkZWZpbmUgUlNTX1VOREVGICAgICAgICAgICAgICAwCisgI2VuZGlmCistLS0gYS9zcmMvZHNvLmMKKysrKyBiL3NyYy9kc28uYworQEAgLTEwOSw2ICsxMDksMTEgQEAgcmVhZF9keW5hbWljIChEU08gKmRzbykKKyAJCSAgICBkc28tPmluZm9fRFRfR05VX0hBU0ggPSBkeW4uZF91bi5kX3ZhbDsKKyAJCSAgICBkc28tPmluZm9fc2V0X21hc2sgfD0gKDFVTEwgPDwgRFRfR05VX0hBU0hfQklUKTsKKyAJCSAgfQorKwkJZWxzZSBpZiAoZHluLmRfdGFnID09IERUX01JUFNfWEhBU0gpCisrCQkgIHsKKysJCSAgICBkc28tPmluZm9fRFRfR05VX0hBU0ggPSBkeW4uZF91bi5kX3ZhbDsKKysJCSAgICBkc28tPmluZm9fc2V0X21hc2sgfD0gKDFVTEwgPDwgRFRfR05VX0hBU0hfQklUKTsKKysJCSAgfQorIAkJZWxzZSBpZiAoZHluLmRfdGFnID09IERUX1RMU0RFU0NfUExUKQorIAkJICB7CisgCQkgICAgZHNvLT5pbmZvX0RUX1RMU0RFU0NfUExUID0gZHluLmRfdW4uZF92YWw7CitAQCAtMTQ2Myw2ICsxNDY4LDcgQEAgYWRqdXN0X2RzbyAoRFNPICpkc28sIEdFbGZfQWRkciBzdGFydCwgRworIAkgIGJyZWFrOworIAljYXNlIFNIVF9IQVNIOgorIAljYXNlIFNIVF9HTlVfSEFTSDoKKysJY2FzZSBTSFRfTUlQU19YSEFTSDoKKyAJY2FzZSBTSFRfTk9CSVRTOgorIAljYXNlIFNIVF9TVFJUQUI6CisgCSAgYnJlYWs7CistLS0gYS9zcmMvc3BhY2UuYworKysrIGIvc3JjL3NwYWNlLmMKK0BAIC02MSw2ICs2MSw3IEBAIHByaW50X3NlY3Rpb25zIChEU08gKmRzbywgR0VsZl9FaGRyICplaGQKKyAgICAgICB7IFNIVF9HTlVfdmVyc3ltLCAiVkVSU1lNIiB9LAorICAgICAgIHsgU0hUX0dOVV9MSUJMSVNULCAiTElCTElTVCIgfSwKKyAgICAgICB7IFNIVF9HTlVfSEFTSCwgIkdOVV9IQVNIIiB9LAorKyAgICAgIHsgU0hUX01JUFNfWEhBU0gsICJNSVBTX1hIQVNIIiB9LAorICAgICAgIHsgMCwgTlVMTCB9CisgICAgIH07CisgCitAQCAtMTgzLDYgKzE4NCw3IEBAIHJlYWRvbmx5X2lzX21vdmFibGUgKERTTyAqZHNvLCBHRWxmX0VoZHIKKyAgICAgeworICAgICBjYXNlIFNIVF9IQVNIOgorICAgICBjYXNlIFNIVF9HTlVfSEFTSDoKKysgICAgY2FzZSBTSFRfTUlQU19YSEFTSDoKKyAgICAgY2FzZSBTSFRfRFlOU1lNOgorICAgICBjYXNlIFNIVF9SRUw6CisgICAgIGNhc2UgU0hUX1JFTEE6CitAQCAtNTU4LDYgKzU2MCw3IEBAIGZpbmRfcmVhZG9ubHlfc3BhY2UgKERTTyAqZHNvLCBHRWxmX1NoZHIKKyAJCSAgICB7CisgCQkgICAgY2FzZSBTSFRfSEFTSDoKKyAJCSAgICBjYXNlIFNIVF9HTlVfSEFTSDoKKysJCSAgICBjYXNlIFNIVF9NSVBTX1hIQVNIOgorIAkJICAgIGNhc2UgU0hUX0RZTlNZTToKKyAJCSAgICBjYXNlIFNIVF9TVFJUQUI6CisgCQkgICAgY2FzZSBTSFRfR05VX3ZlcmRlZjoKKy0tLSBhL3NyYy9leGVjLmMKKysrKyBiL3NyYy9leGVjLmMKK0BAIC02NSw3ICs2NSwxMSBAQCB1cGRhdGVfZHluYW1pY190YWdzIChEU08gKmRzbywgR0VsZl9TaGRyCisgCSAgfHwgKGR5bmFtaWNfaW5mb19pc19zZXQgKGRzbywgRFRfR05VX0hBU0hfQklUKQorIAkgICAgICAmJiBkc28tPmluZm9fRFRfR05VX0hBU0ggPT0gb2xkX3NoZHJbal0uc2hfYWRkcgorIAkgICAgICAmJiBvbGRfc2hkcltqXS5zaF90eXBlID09IFNIVF9HTlVfSEFTSAorLQkgICAgICAmJiBzZXRfZHluYW1pYyAoZHNvLCBEVF9HTlVfSEFTSCwgc2hkcltpXS5zaF9hZGRyLCAxKSkpCisrCSAgICAgICYmIHNldF9keW5hbWljIChkc28sIERUX0dOVV9IQVNILCBzaGRyW2ldLnNoX2FkZHIsIDEpKQorKwkgIHx8IChkeW5hbWljX2luZm9faXNfc2V0IChkc28sIERUX0dOVV9IQVNIX0JJVCkKKysJICAgICAgJiYgZHNvLT5pbmZvX0RUX0dOVV9IQVNIID09IG9sZF9zaGRyW2pdLnNoX2FkZHIKKysJICAgICAgJiYgb2xkX3NoZHJbal0uc2hfdHlwZSA9PSBTSFRfTUlQU19YSEFTSAorKwkgICAgICAmJiBzZXRfZHluYW1pYyAoZHNvLCBEVF9NSVBTX1hIQVNILCBzaGRyW2ldLnNoX2FkZHIsIDEpKSkKKyAJcmV0dXJuIDE7CisgICAgIH0KKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGluay8wMDAxLXNyYy1hcmNoLW1pcHMuYy1jaGVjay1pbmZvLXJlc29sdmV0bHMtYmVmb3JlLXVzZS1pdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmsvMDAwMS1zcmMtYXJjaC1taXBzLmMtY2hlY2staW5mby1yZXNvbHZldGxzLWJlZm9yZS11c2UtaXRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTY4ODI0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGluay8wMDAxLXNyYy1hcmNoLW1pcHMuYy1jaGVjay1pbmZvLXJlc29sdmV0bHMtYmVmb3JlLXVzZS1pdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIDIxMzY5NjllM2UxOTZiOWNmN2Y0Nzg4MzQwZWZhNGIxZDliMzk1NjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMTEgT2N0IDIwMTggMTA6MDU6NTIgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gc3JjL2FyY2gtbWlwcy5jOiBjaGVjayBpbmZvLT5yZXNvbHZldGxzIGJlZm9yZSB1c2UgaXRzIG1lbWJlcgotCi1UaGUgaW5mby0+cmVzb2x2ZXRscyBtaWdodCBiZSBOVUxMIGFjY29yZGluZyB0byBzcmMvcHJlbGluay5jOgotW3NuaXBdCi0gLyogRHluYW1pYyBsaW5rZXIgZG9lcyBub3QgZGVwZW5kIG9uIGFueSBvdGhlciBsaWJyYXJ5LAotICAgIGFsbCBzeW1ib2xzIHJlc29sdmUgdG8gdGhlbXNlbHZlcyB3aXRoIHRoZSBleGNlcHRpb24KLSAgICBvZiBTSE5fVU5ERUYgc3ltYm9scyB3aGljaCByZXNvbHZlIHRvIDAuICAqLwotaWYgKGluZm8tPnN5bXRhYltyX3N5bV0uc3Rfc2huZHggPT0gU0hOX1VOREVGKQotICB7Ci0gICAgaW5mby0+cmVzb2x2ZWVudCA9IE5VTEw7Ci0gICAgaW5mby0+cmVzb2x2ZXRscyA9IE5VTEw7Ci1bc25pcF0KLQotU28gd2UgbXVzdCBjaGVjayBpdCBiZWZvcmUgdXNlIGl0cyBtZW1iZXJzLCBvdGhlcndpc2UsIHRoZXJlIG1pZ2h0IGJlCi1TZWdtZW50YXRpb24gZmF1bHQgZXJyb3IuCi0KLUZpeGVkOgotTUFDSElORSA9ICJxZW11bWlwcyIKLUlNQUdFX0lOU1RBTExfYXBwZW5kID0gIiBxZW11IgotJCBiaXRiYWtlIGNvcmUtaW1hZ2UtbWluaW1hbAotW3NuaXBdCi18IC9wYXRoL3RvL3FlbXVtaXBzLXBva3ktbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC90ZW1wL3J1bi5wcmVsaW5rX2ltYWdlLjEwMDA6IGxpbmUgMTExOiAgMTAxMCBTZWdtZW50YXRpb24gZmF1bHQgICAgICAoY29yZSBkdW1wZWQpCi1bc25pcF0KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vbGlzdHMueW9jdG9wcm9qZWN0Lm9yZy9waXBlcm1haWwveW9jdG8vMjAxOC1PY3RvYmVyLzA0MjgxMi5odG1sXQotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9hcmNoLW1pcHMuYyB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2FyY2gtbWlwcy5jIGIvc3JjL2FyY2gtbWlwcy5jCi1pbmRleCBjY2IxODM0Li4wMmM2MDhmIDEwMDY0NAotLS0tIGEvc3JjL2FyY2gtbWlwcy5jCi0rKysgYi9zcmMvYXJjaC1taXBzLmMKLUBAIC01NjcsNyArNTY3LDggQEAgbWlwc19wcmVsaW5rX3JlbG9jIChzdHJ1Y3QgcHJlbGlua19pbmZvICppbmZvLCBHRWxmX0FkZHIgcl9vZmZzZXQsCi0gICAgICAgaWYgKGRzby0+ZWhkci5lX3R5cGUgPT0gRVRfRVhFQykKLSAJewotIAkgIHZhbHVlID0gaW5mby0+cmVzb2x2ZSAoaW5mbywgcl9zeW0sIHJfdHlwZSk7Ci0tCSAgdmFsdWUgKz0gaW5mby0+cmVzb2x2ZXRscy0+b2Zmc2V0IC0gVExTX1RQX09GRlNFVDsKLSsJICBpZiAoaW5mby0+cmVzb2x2ZXRscyAhPSBOVUxMKQotKwkgICAgdmFsdWUgKz0gaW5mby0+cmVzb2x2ZXRscy0+b2Zmc2V0IC0gVExTX1RQX09GRlNFVDsKLSAJICBpZiAocl90eXBlID09IFJfTUlQU19UTFNfVFBSRUwzMikKLSAJICAgIG1pcHNfcHJlbGlua18zMmJpdF9yZWxvYyAoZHNvLCByZWxhLCB2YWx1ZSk7Ci0gCSAgZWxzZQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmtfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rX2dpdC5iYgppbmRleCBmMDk0NmRlLi5lMTk3YWY5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmtfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGlua19naXQuYmIKQEAgLTksNyArOSw3IEBACiBydW50aW1lIGFuZCB0aHVzIHByb2dyYW1zIGNvbWUgdXAgZmFzdGVyLiIKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jOTNjMDU1MGJkMzE3M2Y0NTA0YjJjYmQ4OTkxZTUwYiIKLVNSQ1JFViA9ICJhODUzYTVkNzE1ZDg0ZWVjOTNhYTY4ZThmMmRmMjZiN2Q4NjBmNWIyIgorU1JDUkVWID0gImY5OTc1NTM3ZGJmZDlhZGUwZmM4MTNiZDVjZjVmY2JlNDE3NTNhMzciCiBQViA9ICIxLjArZ2l0JHtTUkNQVn0iCiAKICMKQEAgLTI4LDEyICsyOCwxMiBAQAogUEFDS0FHRVMgPSsgIiR7UE59LWNyb24iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcHJlbGluay1jcm9zcy5naXQ7YnJhbmNoPWNyb3NzX3ByZWxpbmtfc3RhZ2luZyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1NSVBTLWdudS1oYXNoLXN1cHBvcnQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcHJlbGluay5jb25mIFwKICAgICAgICAgICAgZmlsZTovL3ByZWxpbmsuY3Jvbi5kYWlseSBcCiAgICAgICAgICAgIGZpbGU6Ly9wcmVsaW5rLmRlZmF1bHQgXAogICAgICAgICAgICBmaWxlOi8vbWFjcm9zLnByZWxpbmsgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zcmMtYXJjaC1taXBzLmMtY2hlY2staW5mby1yZXNvbHZldGxzLWJlZm9yZS11c2UtaXRzLnBhdGNoIFwKLSIKKyAgICAgICAgICAgIgogVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCiAjIGVycm9yOiBlcnJvci5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwMS1wc2V1ZG8tT24tYS1EQi1maXh1cC1yZW1vdmUtZmlsZXMtdGhhdC1kby1ub3QtZXhpc3QtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDEtcHNldWRvLU9uLWEtREItZml4dXAtcmVtb3ZlLWZpbGVzLXRoYXQtZG8tbm90LWV4aXN0LS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzQ5ZTMzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDEtcHNldWRvLU9uLWEtREItZml4dXAtcmVtb3ZlLWZpbGVzLXRoYXQtZG8tbm90LWV4aXN0LS5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIGIwOTAyZTM2MTA4YjQ5ZTZiYzg4ZDZiMjUxY2MyZjhjZmZjZDVhMTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNhcmRvIFJpYmFsZGEgPHJpY2FyZG9AcmliYWxkYS5jb20+CitEYXRlOiBTdW4sIDUgQXByIDIwMjAgMTE6NDA6MzAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gcHNldWRvOiBPbiBhIERCIGZpeHVwIHJlbW92ZSBmaWxlcyB0aGF0IGRvIG5vdCBleGlzdCBhbnltb3JlCisKK0lmIHRoZSB1c2VyIGRlY2lkZXMgdG8gZml4IGEgZGF0YWJhc2UsIHJlbW92ZSB0aGUgZmlsZXMgdGhhdCBkbyBub3QKK2V4aXN0IGFueW1vcmUuCitJZiBvbmx5IERCIHRlc3QgaXMgc2VsZWN0ZWQgZG8gbm90IGNoYW5nZSB0aGUgYmVoYXZpb3VyIChyZXR1cm4gZXJyb3IpLgorCitTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgPHJpY2FyZG9AcmliYWxkYS5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy5vcGVuZW1iZWRkZWQub3JnL2cvb3BlbmVtYmVkZGVkLWNvcmUvbWVzc2FnZS8xMzcwNDVdCistLS0KKyBwc2V1ZG8uYyB8IDEzICsrKysrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3BzZXVkby5jIGIvcHNldWRvLmMKK2luZGV4IDBmNTg1MGUuLjk4ZTViMGMgMTAwNjQ0CistLS0gYS9wc2V1ZG8uYworKysrIGIvcHNldWRvLmMKK0BAIC0xMDg3LDkgKzEwODcsMTUgQEAgcHNldWRvX2RiX2NoZWNrKGludCBmaXgpIHsKKyAJCQlpbnQgZml4dXBfbmVlZGVkID0gMDsKKyAJCQlwc2V1ZG9fZGVidWcoUERCR0ZfREIsICJDaGVja2luZyA8JXM+XG4iLCBtLT5wYXRoKTsKKyAJCQlpZiAobHN0YXQobS0+cGF0aCwgJmJ1ZikpIHsKKy0JCQkJZXJyb3JzID0gRVhJVF9GQUlMVVJFOworLQkJCQlwc2V1ZG9fZGlhZygiY2FuJ3Qgc3RhdCA8JXM+XG4iLCBtLT5wYXRoKTsKKy0JCQkJY29udGludWU7CisrCQkJCWlmICghZml4KSB7CisrCQkJCQlwc2V1ZG9fZGlhZygiY2FuJ3Qgc3RhdCA8JXM+XG4iLCBtLT5wYXRoKTsKKysJCQkJCWVycm9ycyA9IEVYSVRfRkFJTFVSRTsKKysJCQkJCWNvbnRpbnVlOworKwkJCQl9IGVsc2UgeworKwkJCQkJcHNldWRvX2RlYnVnKFBEQkdGX0RCLCAiY2FuJ3Qgc3RhdCA8JXM+XG4iLCBtLT5wYXRoKTsKKysJCQkJCWZpeHVwX25lZWRlZCA9IDI7CisrCQkJCQlnb3RvIGRvX2ZpeHVwOworKwkJCQl9CisgCQkJfQorIAkJCS8qIGNhbid0IGNoZWNrIGZvciBkZXZpY2UgdHlwZSBtaXNtYXRjaGVzLCB1aWQvZ2lkLCBvcgorIAkJCSAqIHBlcm1pc3Npb25zLCBiZWNhdXNlIHRob3NlIGFyZSB0aGUgdmVyeSB0aGluZ3Mgd2UKK0BAIC0xMTI1LDYgKzExMzEsNyBAQCBwc2V1ZG9fZGJfY2hlY2soaW50IGZpeCkgeworIAkJCQkJU19JU0RJUihtLT5tb2RlKSk7CisgCQkJCWZpeHVwX25lZWRlZCA9IDI7CisgCQkJfQorKwkJCWRvX2ZpeHVwOgorIAkJCWlmIChmaXh1cF9uZWVkZWQpIHsKKyAJCQkJLyogaW4gZml4dXAgbW9kZSwgZWl0aGVyIGRlbGV0ZSAobWlzbWF0Y2hlcykgb3IKKyAJCQkJICogY29ycmVjdCAoZGV2L2lubykuCistLSAKKzIuMjEuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwMS1yZWFscGF0aC5jLVJlbW92ZS10cmFpbGluZy1zbGFzaGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDEtcmVhbHBhdGguYy1SZW1vdmUtdHJhaWxpbmctc2xhc2hlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzgyOWVmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDEtcmVhbHBhdGguYy1SZW1vdmUtdHJhaWxpbmctc2xhc2hlcy5wYXRjaApAQCAtMCwwICsxLDU3IEBACitGcm9tIDg2YzlhNTYxMGUzMzMzYWQ2YWFhZGIxYWMxZThiNWEyYzk0OGQxMTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMjUgTm92IDIwMTkgMTg6NDY6NDUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVhbHBhdGguYzogUmVtb3ZlIHRyYWlsaW5nIHNsYXNoZXMKKworTGludXggc3lzdGVtJ3MgcmVhbHBhdGgoKSByZW1vdmUgdHJhaWxpbmcgc2xhc2hlcywgYnV0IHBzZXVkbydzIGRvZXNuJ3QsIG5lZWQKK21ha2UgdGhlbSBpZGVudGljYWwuCisKK0UuZy4sIHRoZSBmb2xsb3dpbmcgY29kZSAocmVsLmMpIHByaW50cyAnL3RtcCcgd2l0aCBzeXN0ZW0ncyByZWFscGF0aCwgYnV0Citwc2V1ZG8ncyByZWFscGF0aCBwcmludHMgJy90bXAvJzoKKworICAgICNpbmNsdWRlIDxzdGRpby5oPgorICAgICNpbmNsdWRlIDxsaW1pdHMuaD4KKyAgICAjaW5jbHVkZSA8c3RkbGliLmg+CisKKyAgICBpbnQgbWFpbigpIHsKKyAgICAgICAgY2hhciBvdXRbUEFUSF9NQVhdOworICAgICAgICBwcmludGYoIiVzXG4iLCByZWFscGF0aCgiL3RtcC8iLCBvdXQpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiskIGJpdGJha2UgYmFzZS1wYXNzd2QgLWNkZXZzaGVsbCAjIEZvciBwc2V1ZG8gZW52CiskIGdjYyByZWwuYworJCAuL2Eub3V0CisvdG1wLyAoYnV0IHNob3VsZCBiZSAvdG1wKQorCitUaGlzIHBhdGNoIGZpeGVzIHRoZSBwcm9ibGVtLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy55b2N0b3Byb2plY3Qub3JnL2cvcG9reS9tZXNzYWdlLzExODc5XQorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIHBvcnRzL3VuaXgvZ3V0cy9yZWFscGF0aC5jIHwgICAgOSArKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9wb3J0cy91bml4L2d1dHMvcmVhbHBhdGguYyBiL3BvcnRzL3VuaXgvZ3V0cy9yZWFscGF0aC5jCistLS0gYS9wb3J0cy91bml4L2d1dHMvcmVhbHBhdGguYworKysrIGIvcG9ydHMvdW5peC9ndXRzL3JlYWxwYXRoLmMKK0BAIC0xNCw3ICsxNCwxNCBAQAorIAkJZXJybm8gPSBFTkFNRVRPT0xPTkc7CisgCQlyZXR1cm4gTlVMTDsKKyAJfQorLQlpZiAoKGxlbiA9IHN0cmxlbihybmFtZSkpID49IHBzZXVkb19zeXNfcGF0aF9tYXgoKSkgeworKwkJbGVuID0gc3RybGVuKHJuYW1lKTsKKysJCWNoYXIgKmVwID0gcm5hbWUgKyBsZW4gLSAxOworKwkJd2hpbGUgKGVwID4gcm5hbWUgJiYgKmVwID09ICcvJykgeworKwkJCS0tbGVuOworKwkJCSooZXAtLSkgPSAnXDAnOworKwkJfQorKworKwkJaWYgKGxlbiA+PSBwc2V1ZG9fc3lzX3BhdGhfbWF4KCkpIHsKKyAJCWVycm5vID0gRU5BTUVUT09MT05HOworIAkJcmV0dXJuIE5VTEw7CisgCX0KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDYteGF0dHItYWRqdXN0LWZvci1hdHRyLTIuNC40OC1yZWxlYXNlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDYteGF0dHItYWRqdXN0LWZvci1hdHRyLTIuNC40OC1yZWxlYXNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MTM1N2QKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwNi14YXR0ci1hZGp1c3QtZm9yLWF0dHItMi40LjQ4LXJlbGVhc2UucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorRnJvbSA5M2Q5NWVkMmVhZWRjY2ExMTBjMjE0ZTFmZTNmODg5NmIxZjZmODUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE3IERlYyAyMDE5IDIwOjI0OjI3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHhhdHRyOiBhZGp1c3QgZm9yIGF0dHIgMi40LjQ4IHJlbGVhc2UKKworTGF0ZXN0IHZlcnNpb25zIG9mIGF0dHIgaGF2ZSByZW1vdmVkIHRoZSB4YXR0ci5oIGhlYWRlciwKK3dpdGggdGhlIHJhdGlvbmFsZSB0aGF0IGxpYmMgaXMgcHJvdmlkaW5nIHRoZSBzYW1lIHdyYXBwZXJzLgorCithdHRyL2F0dHJpYnV0ZXMuaCBpcyBwcm92aWRpbmcgdGhlIEVOT0FUVFIgZGVmaW5pdGlvbi4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHBvcnRzL2xpbnV4L3N1YnBvcnRzICAgICAgICAgfCA1ICsrKy0tCisgcG9ydHMvbGludXgveGF0dHIvcG9ydGRlZnMuaCB8IDMgKystCisgMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wb3J0cy9saW51eC9zdWJwb3J0cyBiL3BvcnRzL2xpbnV4L3N1YnBvcnRzCitpbmRleCAyYzQzYWM5Li43NDBlYzgzIDEwMDc1NQorLS0tIGEvcG9ydHMvbGludXgvc3VicG9ydHMKKysrKyBiL3BvcnRzL2xpbnV4L3N1YnBvcnRzCitAQCAtMjksMTEgKzI5LDEyIEBAIGZpCisgaWYJJHBvcnRfeGF0dHI7IHRoZW4KKyAJY2F0ID4gZHVtbXkuYyA8PEVPRgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaW5jbHVkZSA8YXR0ci94YXR0ci5oPgorKyNpbmNsdWRlIDxzeXMveGF0dHIuaD4KKysjaW5jbHVkZSA8YXR0ci9hdHRyaWJ1dGVzLmg+CisgaW50IGk7CisgRU9GCisgCWlmICEgJHtDQ30gLWMgLW8gZHVtbXkubyBkdW1teS5jID4vZGV2L251bGwgMj4mMTsgdGhlbgorLQkJZWNobyA+JjIgIldhcm5pbmc6IENhbid0IGNvbXBpbGUgdHJpdmlhbCBwcm9ncmFtIHVzaW5nIDxhdHRyL3hhdHRyLmg+Ii4KKysJCWVjaG8gPiYyICJXYXJuaW5nOiBDYW4ndCBjb21waWxlIHRyaXZpYWwgcHJvZ3JhbSB1c2luZyA8YXR0ci9hdHRyaWJ1dGVzLmg+Ii4KKyAJCWVjaG8gPiYyICIgICAgICAgICB4YXR0ciBzdXBwb3J0IHdpbGwgcmVxdWlyZSB0aGF0IGhlYWRlci4iCisgCWZpCisgCWVjaG8gImxpbnV4L3hhdHRyIgorZGlmZiAtLWdpdCBhL3BvcnRzL2xpbnV4L3hhdHRyL3BvcnRkZWZzLmggYi9wb3J0cy9saW51eC94YXR0ci9wb3J0ZGVmcy5oCitpbmRleCA1NmNkM2NhLi4wNjhkMzlhIDEwMDY0NAorLS0tIGEvcG9ydHMvbGludXgveGF0dHIvcG9ydGRlZnMuaAorKysrIGIvcG9ydHMvbGludXgveGF0dHIvcG9ydGRlZnMuaAorQEAgLTIsNSArMiw2IEBACisgICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExHUEwtMi4xLW9ubHkKKyAgKgorICAqLworLSNpbmNsdWRlIDxhdHRyL3hhdHRyLmg+CisrI2luY2x1ZGUgPHN5cy94YXR0ci5oPgorKyNpbmNsdWRlIDxhdHRyL2F0dHJpYnV0ZXMuaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvc2VjY29tcC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9zZWNjb21wLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4M2Y5OTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvc2VjY29tcC5wYXRjaApAQCAtMCwwICsxLDEzNyBAQAorUHNldWRvIGNoYW5nZXMgdGhlIHN5c2NhbGwgYWNjZXNzIHBhdHRlcm5zIHdoaWNoIG1ha2VzIGl0IGluY29tcGF0aWJsZSB3aXRoCitzZWNjb21wLiBUaGVyZWZvcmUgaW50ZXJjZXB0IHRoZSBzZWNjb21wIHN5c2NhbGwgYW5kIGFsdGVyIGl0LCBwcmV0ZW5kaW5nIHRoYXQKK3NlY2NvbXAgd2FzIHNldHVwIHdoZW4gaW4gZmFjdCB3ZSBkbyBub3RoaW5nLiBJZiB3ZSBlcnJvciBhcyB1bnN1cHBvcnRlZCwgCit1dGlsaXRpZXMgbGlrZSBmaWxlIHdpbGwgZXhpdCB3aXRoIGVycm9ycyBzbyB3ZSBjYW4ndCBqdXN0IGRpc2FibGUgaXQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworUlAgMjAyMC80LzMKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorCitJdCBmYWlscyB0byBjb21waWxlIHBzZXVkby1uYXRpdmUgb24gY2VudG9zIDc6CisKK3wgcG9ydHMvbGludXgvcHNldWRvX3dyYXBwZXJzLmM6IEluIGZ1bmN0aW9uIOKAmHByY3Rs4oCZOgorfCBwb3J0cy9saW51eC9wc2V1ZG9fd3JhcHBlcnMuYzoxMjk6MTQ6IGVycm9yOiDigJhTRUNDT01QX1NFVF9NT0RFX0ZJTFRFUuKAmSB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKK3wgICAgaWYgKGNtZCA9PSBTRUNDT01QX1NFVF9NT0RFX0ZJTFRFUikgeworfCAgICAgICAgICAgICAgIF4KKworQWRkIG1hY3JvIGd1YXJkIGZvciBzZWNjb21wIHRvIGF2b2lkIHRoZSBmYWlsdXJlLgorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKworSW5kZXg6IGdpdC9wb3J0cy9saW51eC9wc2V1ZG9fd3JhcHBlcnMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3BvcnRzL2xpbnV4L3BzZXVkb193cmFwcGVycy5jCisrKysgZ2l0L3BvcnRzL2xpbnV4L3BzZXVkb193cmFwcGVycy5jCitAQCAtNTcsNiArNTcsNyBAQCBpbnQgcHNldWRvX2NhcHNldChjYXBfdXNlcl9oZWFkZXJfdCBoZHJwCisgbG9uZworIHN5c2NhbGwobG9uZyBudW1iZXIsIC4uLikgeworIAlsb25nIHJjID0gLTE7CisrCXZhX2xpc3QgYXA7CisgCisgCWlmICghcHNldWRvX2NoZWNrX3dyYXBwZXJzKCkgfHwgIXJlYWxfc3lzY2FsbCkgeworIAkJLyogcmMgd2FzIGluaXRpYWxpemVkIHRvIHRoZSAiZmFpbHVyZSIgdmFsdWUgKi8KK0BAIC03Nyw2ICs3OCwyMCBAQCBzeXNjYWxsKGxvbmcgbnVtYmVyLCAuLi4pIHsKKyAJKHZvaWQpIG51bWJlcjsKKyAjZW5kaWYKKyAKKysjaWZkZWYgU1lTX3NlY2NvbXAKKysJLyogcHNldWRvIGFuZCBzZWNjb21wIGFyZSBpbmNvbXBhdGlibGUgYXMgcHNldWRvIHVzZXMgZGlmZmVyZW50IHN5c2NhbGxzCisrCSAqIHNvIHByZXRlbmQgdG8gZW5hYmxlIHNlY2NvbXAgYnV0IHJlYWxseSBkbyBub3RoaW5nICovCisrCWlmIChudW1iZXIgPT0gU1lTX3NlY2NvbXApIHsKKysJCXVuc2lnbmVkIGxvbmcgY21kOworKwkJdmFfc3RhcnQoYXAsIG51bWJlcik7CisrCQljbWQgPSB2YV9hcmcoYXAsIHVuc2lnbmVkIGxvbmcpOworKwkJdmFfZW5kKGFwKTsKKysJCWlmIChjbWQgPT0gU0VDQ09NUF9TRVRfTU9ERV9GSUxURVIpIHsKKysJCSAgICByZXR1cm4gMDsKKysJCX0KKysJfQorKyNlbmRpZgorKworIAkvKiBnY2MgbWFnaWMgdG8gYXR0ZW1wdCB0byBqdXN0IHBhc3MgdGhlc2UgYXJncyB0byBzeXNjYWxsLiB3ZSBoYXZlIHRvCisgCSAqIGd1ZXNzIGFib3V0IHRoZSBudW1iZXIgb2YgYXJnczsgdGhlIGRvY3MgZGlzY3VzcyBjYWxsaW5nIGNvbnZlbnRpb25zCisgCSAqIHVwIHRvIDcsIHNvIGxldCdzIHRyeSB0aGF0PworQEAgLTkyLDMgKzEwOCw0NCBAQCBzdGF0aWMgbG9uZyB3cmFwX3N5c2NhbGwobG9uZyBuciwgdmFfbGlzCisgCSh2b2lkKSBhcDsKKyAJcmV0dXJuIC0xOworIH0KKysKKytpbnQKKytwcmN0bChpbnQgb3B0aW9uLCAuLi4pIHsKKysJaW50IHJjID0gLTE7CisrCXZhX2xpc3QgYXA7CisrCisrCWlmICghcHNldWRvX2NoZWNrX3dyYXBwZXJzKCkgfHwgIXJlYWxfcHJjdGwpIHsKKysJCS8qIHJjIHdhcyBpbml0aWFsaXplZCB0byB0aGUgImZhaWx1cmUiIHZhbHVlICovCisrCQlwc2V1ZG9fZW5vc3lzKCJwcmN0bCIpOworKwkJcmV0dXJuIHJjOworKwl9CisrCisrI2lmZGVmIFNFQ0NPTVBfU0VUX01PREVfRklMVEVSCisrCS8qIHBzZXVkbyBhbmQgc2VjY29tcCBhcmUgaW5jb21wYXRpYmxlIGFzIHBzZXVkbyB1c2VzIGRpZmZlcmVudCBzeXNjYWxscworKwkgKiBzbyBwcmV0ZW5kIHRvIGVuYWJsZSBzZWNjb21wIGJ1dCByZWFsbHkgZG8gbm90aGluZyAqLworKwlpZiAob3B0aW9uID09IFBSX1NFVF9TRUNDT01QKSB7CisrCQl1bnNpZ25lZCBsb25nIGNtZDsKKysJCXZhX3N0YXJ0KGFwLCBvcHRpb24pOworKwkJY21kID0gdmFfYXJnKGFwLCB1bnNpZ25lZCBsb25nKTsKKysJCXZhX2VuZChhcCk7CisrCQlpZiAoY21kID09IFNFQ0NPTVBfU0VUX01PREVfRklMVEVSKSB7CisrCQkgICAgcmV0dXJuIDA7CisrCQl9CisrCX0KKysjZW5kaWYKKysKKysJLyogZ2NjIG1hZ2ljIHRvIGF0dGVtcHQgdG8ganVzdCBwYXNzIHRoZXNlIGFyZ3MgdG8gcHJjdGwuIHdlIGhhdmUgdG8KKysJICogZ3Vlc3MgYWJvdXQgdGhlIG51bWJlciBvZiBhcmdzOyB0aGUgZG9jcyBkaXNjdXNzIGNhbGxpbmcgY29udmVudGlvbnMKKysJICogdXAgdG8gNSwgc28gbGV0J3MgdHJ5IHRoYXQ/CisrCSAqLworKwl2b2lkICpyZXMgPSBfX2J1aWx0aW5fYXBwbHkoKHZvaWQgKCopKCkpIHJlYWxfcHJjdGwsIF9fYnVpbHRpbl9hcHBseV9hcmdzKCksIHNpemVvZihsb25nKSAqIDUpOworKwlfX2J1aWx0aW5fcmV0dXJuKHJlcyk7CisrfQorKworKy8qIHVudXNlZC4KKysgKi8KKytzdGF0aWMgaW50IHdyYXBfcHJjdGwoaW50IG9wdGlvbiwgdmFfbGlzdCBhcCkgeworKwkodm9pZCkgb3B0aW9uOworKwkodm9pZCkgYXA7CisrCXJldHVybiAtMTsKKyt9CitJbmRleDogZ2l0L3BvcnRzL2xpbnV4L2d1dHMvcHJjdGwuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAorKysrIGdpdC9wb3J0cy9saW51eC9ndXRzL3ByY3RsLmMKK0BAIC0wLDAgKzEsMTUgQEAKKysvKgorKyAqIENvcHlyaWdodCAoYykgMjAyMCBSaWNoYXJkIFB1cmRpZQorKyAqCisrICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExHUEwtMi4xLW9ubHkKKysgKgorKyAqIGludCBwcmN0bChpbnQgb3B0aW9uLCAuLi4pCisrICoJaW50IHJjID0gLTE7CisrICovCisrCisrCS8qIHdlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgcHJjdGwgaXMgaGFuZC13cmFwcGVkICovCisrCXJjID0gLTE7CisrCisrLyoJcmV0dXJuIHJjOworKyAqIH0KKysgKi8KK0luZGV4OiBnaXQvcG9ydHMvbGludXgvcG9ydGRlZnMuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3BvcnRzL2xpbnV4L3BvcnRkZWZzLmgKKysrKyBnaXQvcG9ydHMvbGludXgvcG9ydGRlZnMuaAorQEAgLTMyLDMgKzMyLDUgQEAgR0xJQkNfQ09NUEFUX1NZTUJPTChtZW1jcHksMi4wKTsKKyAKKyAjaW5jbHVkZSA8bGludXgvY2FwYWJpbGl0eS5oPgorICNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorKyNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KKysjaW5jbHVkZSA8bGludXgvc2VjY29tcC5oPgorSW5kZXg6IGdpdC9wb3J0cy9saW51eC93cmFwZnVuY3MuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9wb3J0cy9saW51eC93cmFwZnVuY3MuaW4KKysrKyBnaXQvcG9ydHMvbGludXgvd3JhcGZ1bmNzLmluCitAQCAtNTYsMyArNTYsNCBAQCBpbnQgZ2V0Z3JlbnRfcihzdHJ1Y3QgZ3JvdXAgKmdidWYsIGNoYXIKKyBpbnQgY2Fwc2V0KGNhcF91c2VyX2hlYWRlcl90IGhkcnAsIGNvbnN0IGNhcF91c2VyX2RhdGFfdCBkYXRhcCk7IC8qIHJlYWxfZnVuYz1wc2V1ZG9fY2Fwc2V0ICovCisgbG9uZyBzeXNjYWxsKGxvbmcgbnIsIC4uLik7IC8qIGhhbmRfd3JhcHBlZD0xICovCisgaW50IHJlbmFtZWF0MihpbnQgb2xkZGlyZmQsIGNvbnN0IGNoYXIgKm9sZHBhdGgsIGludCBuZXdkaXJmZCwgY29uc3QgY2hhciAqbmV3cGF0aCwgdW5zaWduZWQgaW50IGZsYWdzKTsgLyogZmxhZ3M9QVRfU1lNTElOS19OT0ZPTExPVyAqLworK2ludCBwcmN0bChpbnQgb3B0aW9uLCAuLi4pOyAvKiBoYW5kX3dyYXBwZWQ9MSAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkby5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvLmluYwppbmRleCA3ZmY4ZTQ0Li41MGUzMDA2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvLmluYwpAQCAtMTYsNiArMTYsNyBAQAogUFJPVklERVMgKz0gInZpcnR1YWwvZmFrZXJvb3QiCiAKIE1BS0VPUFRTID0gIiIKK01BS0VPUFRTX2NsYXNzLW5hdGl2ZSA9ICInUlBBVEg9LVdsLC0tcnBhdGg9WE9SSUdJTi8uLi8uLi8uLi9zcWxpdGUzLW5hdGl2ZS91c3IvbGliLyciCiAKIGluaGVyaXQgc2l0ZWluZm8gcGtnY29uZmlnCiAKQEAgLTExNSw2ICsxMTYsNyBAQAogfQogCiBkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgeworCWNocnBhdGggJHtEfSR7YmluZGlyfS9wc2V1ZG8gLXIgYGNocnBhdGggJHtEfSR7YmluZGlyfS9wc2V1ZG8gfCBjdXQgLWQgPSAtZiAyIHwgc2VkIHMvWE9SSUdJTi9cXCRPUklHSU4vYAogCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KIAkjIFRoZSBmYWxsYmFjayBmaWxlcyBzaG91bGQgbmV2ZXIgYmUgbW9kaWZpZWQKIAlpbnN0YWxsIC1tIDQ0NCAke1dPUktESVJ9L2ZhbGxiYWNrLXBhc3N3ZCAke0R9JHtzeXNjb25mZGlyfS9wYXNzd2QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb19naXQuYmIKaW5kZXggMWYyZGY0YS4uYTMwNDljNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb19naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb19naXQuYmIKQEAgLTgsNiArOCwxMCBAQAogICAgICAgICAgICBmaWxlOi8vdG9vbWFueWZpbGVzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZXRhYmxlcy13cmFwcGVycy11c2UtUHl0aG9uLTMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtc3RhdHgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yZWFscGF0aC5jLVJlbW92ZS10cmFpbGluZy1zbGFzaGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYteGF0dHItYWRqdXN0LWZvci1hdHRyLTIuNC40OC1yZWxlYXNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NlY2NvbXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wc2V1ZG8tT24tYS1EQi1maXh1cC1yZW1vdmUtZmlsZXMtdGhhdC1kby1ub3QtZXhpc3QtLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNSRVYgPSAiMDYwMDU4YmIyOWY3MGIyNDRlNjg1YjNjNzA0ZWIwNjQxYjczNmY3MyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLWNvbnZlcnQtc2hlYmFuZy1mcm9tLXB5dGhvbi10by1weXRob24zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtY29udmVydC1zaGViYW5nLWZyb20tcHl0aG9uLXRvLXB5dGhvbjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQxNjI0NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLWNvbnZlcnQtc2hlYmFuZy1mcm9tLXB5dGhvbi10by1weXRob24zLnBhdGNoCkBAIC0wLDAgKzEsNTU1IEBACitGcm9tIDAwODQ4ZDc2MGZhMzk5OWUyYmVkNzU5YjU4NTQ1MmIzNWQ2NWQ2ZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCA1IE1hciAyMDIwIDEyOjAyOjM1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbnZlcnQgc2hlYmFuZyBmcm9tIHB5dGhvbiB0byBweXRob24zCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvY29tbWl0LzU4MzkwMWEwNzRkYzY1MTQ1ZDNkNjEzNmJhN2RjZDAyNjM0ZDY4MGJdCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CisKKy0tLQorIGRvYy9ESVNUVVRJTFMucnN0LnR4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBkb2MvY2RvYy9udW1weWZpbHRlci5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgZG9jL3Bvc3Rwcm9jZXNzLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIGRvYy9zdW1tYXJpemUucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9kaXN0dXRpbHMvY29udl90ZW1wbGF0ZS5weSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZGlzdHV0aWxzL2NwdWluZm8ucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2Rpc3R1dGlscy9mcm9tX3RlbXBsYXRlLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9kaXN0dXRpbHMvc2V0dXAucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZGlzdHV0aWxzL3N5c3RlbV9pbmZvLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2YycHkvX19pbml0X18ucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9mMnB5L2F1eGZ1bmNzLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZjJweS9jYXBpX21hcHMucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2YycHkvY2JfcnVsZXMucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9mMnB5L2NmdW5jcy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZjJweS9jb21tb25fcnVsZXMucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2YycHkvY3JhY2tmb3J0cmFuLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9mMnB5L2RpYWdub3NlLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZjJweS9mMnB5MmUucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2YycHkvZjkwbW9kX3J1bGVzLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9mMnB5L2Z1bmMyc3Vici5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZjJweS9ydWxlcy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2YycHkvc2V0dXAucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9mMnB5L3VzZV9ydWxlcy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvbGluYWxnL2xhcGFja19saXRlL2NsYXBhY2tfc2NydWIucHkgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2xpbmFsZy9sYXBhY2tfbGl0ZS9tYWtlX2xpdGUucHkgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9tYS9iZW5jaC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvbWEvc2V0dXAucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L21hdHJpeGxpYi9zZXR1cC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9yYW5kb20vX2V4YW1wbGVzL2N5dGhvbi9leHRlbmRpbmcucHl4ICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvcmFuZG9tL19leGFtcGxlcy9jeXRob24vZXh0ZW5kaW5nX2Rpc3RyaWJ1dGlvbnMucHl4IHwgMiArLQorIG51bXB5L3NldHVwLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS90ZXN0aW5nL3ByaW50X2NvZXJjaW9uX3RhYmxlcy5weSAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvdGVzdGluZy9zZXR1cC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHJ1bnRlc3RzLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBzZXR1cC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdG9vbHMvY19jb3ZlcmFnZS9jX2NvdmVyYWdlX3JlcG9ydC5weSAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHRvb2xzL2NoYW5nZWxvZy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB0b29scy9jaS9wdXNoX2RvY3NfdG9fcmVwby5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdG9vbHMvZmluZF9kZXByZWNhdGVkX2VzY2FwZWRfY2hhcmFjdGVycy5weSAgICAgICAgICAgICAgIHwgMiArLQorIHRvb2xzL3JlZmd1aWRlX2NoZWNrLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB0b29scy9zd2lnL3Rlc3Qvc2V0dXAucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdG9vbHMvc3dpZy90ZXN0L3Rlc3RBcnJheS5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHRvb2xzL3N3aWcvdGVzdC90ZXN0RmFycmF5LnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB0b29scy9zd2lnL3Rlc3QvdGVzdEZsYXQucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdG9vbHMvc3dpZy90ZXN0L3Rlc3RGb3J0cmFuLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHRvb2xzL3N3aWcvdGVzdC90ZXN0TWF0cml4LnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB0b29scy9zd2lnL3Rlc3QvdGVzdFN1cGVyVGVuc29yLnB5ICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdG9vbHMvc3dpZy90ZXN0L3Rlc3RUZW5zb3IucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHRvb2xzL3N3aWcvdGVzdC90ZXN0VmVjdG9yLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyA0OSBmaWxlcyBjaGFuZ2VkLCA0OSBpbnNlcnRpb25zKCspLCA0OSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RvYy9ESVNUVVRJTFMucnN0LnR4dCBiL2RvYy9ESVNUVVRJTFMucnN0LnR4dAoraW5kZXggYmNlZjgyNS4uYmMxNzAwZiAxMDA2NDQKKy0tLSBhL2RvYy9ESVNUVVRJTFMucnN0LnR4dAorKysrIGIvZG9jL0RJU1RVVElMUy5yc3QudHh0CitAQCAtNTksNyArNTksNyBAQCBTY2lQeSBwdXJlIFB5dGhvbiBwYWNrYWdlIGV4YW1wbGUKKyAKKyBCZWxvdyBpcyBhbiBleGFtcGxlIG9mIGEgbWluaW1hbCBgYHNldHVwLnB5YGAgZmlsZSBmb3IgYSBwdXJlIFNjaVB5IHBhY2thZ2U6OgorIAorLSAgIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrICAjIS91c3IvYmluL2VudiBweXRob24zCisgICBkZWYgY29uZmlndXJhdGlvbihwYXJlbnRfcGFja2FnZT0nJyx0b3BfcGF0aD1Ob25lKToKKyAgICAgICBmcm9tIG51bXB5LmRpc3R1dGlscy5taXNjX3V0aWwgaW1wb3J0IENvbmZpZ3VyYXRpb24KKyAgICAgICBjb25maWcgPSBDb25maWd1cmF0aW9uKCdteXBhY2thZ2UnLHBhcmVudF9wYWNrYWdlLHRvcF9wYXRoKQorZGlmZiAtLWdpdCBhL2RvYy9jZG9jL251bXB5ZmlsdGVyLnB5IGIvZG9jL2Nkb2MvbnVtcHlmaWx0ZXIucHkKK2luZGV4IDBlYzUwNjkuLjA2N2JkMzYgMTAwNzU1CistLS0gYS9kb2MvY2RvYy9udW1weWZpbHRlci5weQorKysrIGIvZG9jL2Nkb2MvbnVtcHlmaWx0ZXIucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyBudW1weWZpbHRlci5weSBJTlBVVEZJTEUKKyAKK2RpZmYgLS1naXQgYS9kb2MvcG9zdHByb2Nlc3MucHkgYi9kb2MvcG9zdHByb2Nlc3MucHkKK2luZGV4IDJlNTBjMTEuLjFiZTZmMzkgMTAwNzU1CistLS0gYS9kb2MvcG9zdHByb2Nlc3MucHkKKysrKyBiL2RvYy9wb3N0cHJvY2Vzcy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorICVwcm9nIE1PREUgRklMRVMuLi4KKyAKK2RpZmYgLS1naXQgYS9kb2Mvc3VtbWFyaXplLnB5IGIvZG9jL3N1bW1hcml6ZS5weQoraW5kZXggY2ZjZTI3MS4uNTYzYWYwMiAxMDA3NTUKKy0tLSBhL2RvYy9zdW1tYXJpemUucHkKKysrKyBiL2RvYy9zdW1tYXJpemUucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyBzdW1tYXJpemUucHkKKyAKK2RpZmYgLS1naXQgYS9udW1weS9kaXN0dXRpbHMvY29udl90ZW1wbGF0ZS5weSBiL251bXB5L2Rpc3R1dGlscy9jb252X3RlbXBsYXRlLnB5CitpbmRleCAzYmNiN2I4Li44ODQzMmM4IDEwMDY0NAorLS0tIGEvbnVtcHkvZGlzdHV0aWxzL2NvbnZfdGVtcGxhdGUucHkKKysrKyBiL251bXB5L2Rpc3R1dGlscy9jb252X3RlbXBsYXRlLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgdGFrZXMgdGVtcGxhdGVkIGZpbGUgLnh4eC5zcmMgYW5kIHByb2R1Y2VzIC54eHggZmlsZSAgd2hlcmUgLnh4eCBpcworIC5pIG9yIC5jIG9yIC5oLCB1c2luZyB0aGUgZm9sbG93aW5nIHRlbXBsYXRlIHJ1bGVzCitkaWZmIC0tZ2l0IGEvbnVtcHkvZGlzdHV0aWxzL2NwdWluZm8ucHkgYi9udW1weS9kaXN0dXRpbHMvY3B1aW5mby5weQoraW5kZXggYmM5NzI4My4uODc1MDJhOSAxMDA2NDQKKy0tLSBhL251bXB5L2Rpc3R1dGlscy9jcHVpbmZvLnB5CisrKysgYi9udW1weS9kaXN0dXRpbHMvY3B1aW5mby5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIGNwdWluZm8KKyAKK2RpZmYgLS1naXQgYS9udW1weS9kaXN0dXRpbHMvZnJvbV90ZW1wbGF0ZS5weSBiL251bXB5L2Rpc3R1dGlscy9mcm9tX3RlbXBsYXRlLnB5CitpbmRleCBjNWMxMTYzLi5hZjc1OTcxIDEwMDY0NAorLS0tIGEvbnVtcHkvZGlzdHV0aWxzL2Zyb21fdGVtcGxhdGUucHkKKysrKyBiL251bXB5L2Rpc3R1dGlscy9mcm9tX3RlbXBsYXRlLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgCisgcHJvY2Vzc19maWxlKGZpbGVuYW1lKQorZGlmZiAtLWdpdCBhL251bXB5L2Rpc3R1dGlscy9zZXR1cC5weSBiL251bXB5L2Rpc3R1dGlscy9zZXR1cC5weQoraW5kZXggODJhNTNiZC4uNjQ2OTIxYiAxMDA2NDQKKy0tLSBhL251bXB5L2Rpc3R1dGlscy9zZXR1cC5weQorKysrIGIvbnVtcHkvZGlzdHV0aWxzL3NldHVwLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KKyAKKyBkZWYgY29uZmlndXJhdGlvbihwYXJlbnRfcGFja2FnZT0nJyx0b3BfcGF0aD1Ob25lKToKK2RpZmYgLS1naXQgYS9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkgYi9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKK2luZGV4IDRmMzQwYjYuLjE4OTA4MWQgMTAwNjQ0CistLS0gYS9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKKysrKyBiL251bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIFRoaXMgZmlsZSBkZWZpbmVzIGEgc2V0IG9mIHN5c3RlbV9pbmZvIGNsYXNzZXMgZm9yIGdldHRpbmcKKyBpbmZvcm1hdGlvbiBhYm91dCB2YXJpb3VzIHJlc291cmNlcyAobGlicmFyaWVzLCBsaWJyYXJ5IGRpcmVjdG9yaWVzLAorZGlmZiAtLWdpdCBhL251bXB5L2YycHkvX19pbml0X18ucHkgYi9udW1weS9mMnB5L19faW5pdF9fLnB5CitpbmRleCA0MmUzNjMyLi4wOWEzNjU3IDEwMDY0NAorLS0tIGEvbnVtcHkvZjJweS9fX2luaXRfXy5weQorKysrIGIvbnVtcHkvZjJweS9fX2luaXRfXy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIkZvcnRyYW4gdG8gUHl0aG9uIEludGVyZmFjZSBHZW5lcmF0b3IuCisgCisgIiIiCitkaWZmIC0tZ2l0IGEvbnVtcHkvZjJweS9hdXhmdW5jcy5weSBiL251bXB5L2YycHkvYXV4ZnVuY3MucHkKK2luZGV4IDQwNGJkYmQuLmQyM2Q5NTkgMTAwNjQ0CistLS0gYS9udW1weS9mMnB5L2F1eGZ1bmNzLnB5CisrKysgYi9udW1weS9mMnB5L2F1eGZ1bmNzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgCisgQXV4aWxpYXJ5IGZ1bmN0aW9ucyBmb3IgZjJweTJlLgorZGlmZiAtLWdpdCBhL251bXB5L2YycHkvY2FwaV9tYXBzLnB5IGIvbnVtcHkvZjJweS9jYXBpX21hcHMucHkKK2luZGV4IGNlNzlmNjguLmU1ZDNmZDIgMTAwNjQ0CistLS0gYS9udW1weS9mMnB5L2NhcGlfbWFwcy5weQorKysrIGIvbnVtcHkvZjJweS9jYXBpX21hcHMucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyAKKyBDb3B5cmlnaHQgMTk5OSwyMDAwIFBlYXJ1IFBldGVyc29uIGFsbCByaWdodHMgcmVzZXJ2ZWQsCitkaWZmIC0tZ2l0IGEvbnVtcHkvZjJweS9jYl9ydWxlcy5weSBiL251bXB5L2YycHkvY2JfcnVsZXMucHkKK2luZGV4IDE4M2Q3YzIuLjkzZTkzZmUgMTAwNjQ0CistLS0gYS9udW1weS9mMnB5L2NiX3J1bGVzLnB5CisrKysgYi9udW1weS9mMnB5L2NiX3J1bGVzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgCisgQnVpbGQgY2FsbC1iYWNrIG1lY2hhbmlzbSBmb3IgZjJweTJlLgorZGlmZiAtLWdpdCBhL251bXB5L2YycHkvY2Z1bmNzLnB5IGIvbnVtcHkvZjJweS9jZnVuY3MucHkKK2luZGV4IGNjYjdiM2EuLmNkYjc4M2QgMTAwNjQ0CistLS0gYS9udW1weS9mMnB5L2NmdW5jcy5weQorKysrIGIvbnVtcHkvZjJweS9jZnVuY3MucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyAKKyBDIGRlY2xhcmF0aW9ucywgQ1BQIG1hY3JvcywgYW5kIEMgZnVuY3Rpb25zIGZvciBmMnB5MmUuCitkaWZmIC0tZ2l0IGEvbnVtcHkvZjJweS9jb21tb25fcnVsZXMucHkgYi9udW1weS9mMnB5L2NvbW1vbl9ydWxlcy5weQoraW5kZXggZjYxZDg4MS4uZmU1MTBiZiAxMDA2NDQKKy0tLSBhL251bXB5L2YycHkvY29tbW9uX3J1bGVzLnB5CisrKysgYi9udW1weS9mMnB5L2NvbW1vbl9ydWxlcy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIAorIEJ1aWxkIGNvbW1vbiBibG9jayBtZWNoYW5pc20gZm9yIGYycHkyZS4KK2RpZmYgLS1naXQgYS9udW1weS9mMnB5L2NyYWNrZm9ydHJhbi5weSBiL251bXB5L2YycHkvY3JhY2tmb3J0cmFuLnB5CitpbmRleCAyYWFmNWQ3Li5mYjVlZjJmIDEwMDc1NQorLS0tIGEvbnVtcHkvZjJweS9jcmFja2ZvcnRyYW4ucHkKKysrKyBiL251bXB5L2YycHkvY3JhY2tmb3J0cmFuLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgY3JhY2tmb3J0cmFuIC0tLSByZWFkIGZvcnRyYW4gKDc3LDkwKSBjb2RlIGFuZCBleHRyYWN0IGRlY2xhcmF0aW9uIGluZm9ybWF0aW9uLgorIAorZGlmZiAtLWdpdCBhL251bXB5L2YycHkvZGlhZ25vc2UucHkgYi9udW1weS9mMnB5L2RpYWdub3NlLnB5CitpbmRleCAwMjQxZmVkLi42YzAzMDRjIDEwMDY0NAorLS0tIGEvbnVtcHkvZjJweS9kaWFnbm9zZS5weQorKysrIGIvbnVtcHkvZjJweS9kaWFnbm9zZS5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24KKyAKKyBpbXBvcnQgb3MKK2RpZmYgLS1naXQgYS9udW1weS9mMnB5L2YycHkyZS5weSBiL251bXB5L2YycHkvZjJweTJlLnB5CitpbmRleCBkMDNlZmY5Li5jMTdiZmQ5IDEwMDc1NQorLS0tIGEvbnVtcHkvZjJweS9mMnB5MmUucHkKKysrKyBiL251bXB5L2YycHkvZjJweTJlLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgCisgZjJweTJlIC0gRm9ydHJhbiB0byBQeXRob24gQy9BUEkgZ2VuZXJhdG9yLiAybmQgRWRpdGlvbi4KK2RpZmYgLS1naXQgYS9udW1weS9mMnB5L2Y5MG1vZF9ydWxlcy5weSBiL251bXB5L2YycHkvZjkwbW9kX3J1bGVzLnB5CitpbmRleCA4NWVhZTgwLi43MGJlMTI4IDEwMDY0NAorLS0tIGEvbnVtcHkvZjJweS9mOTBtb2RfcnVsZXMucHkKKysrKyBiL251bXB5L2YycHkvZjkwbW9kX3J1bGVzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgCisgQnVpbGQgRjkwIG1vZHVsZSBzdXBwb3J0IGZvciBmMnB5MmUuCitkaWZmIC0tZ2l0IGEvbnVtcHkvZjJweS9mdW5jMnN1YnIucHkgYi9udW1weS9mMnB5L2Z1bmMyc3Vici5weQoraW5kZXggNjAxMGQ1YS4uZmRlYTBjMiAxMDA2NDQKKy0tLSBhL251bXB5L2YycHkvZnVuYzJzdWJyLnB5CisrKysgYi9udW1weS9mMnB5L2Z1bmMyc3Vici5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIAorIFJ1bGVzIGZvciBidWlsZGluZyBDL0FQSSBtb2R1bGUgd2l0aCBmMnB5MmUuCitkaWZmIC0tZ2l0IGEvbnVtcHkvZjJweS9ydWxlcy5weSBiL251bXB5L2YycHkvcnVsZXMucHkKK2luZGV4IGYyZjcxM2IuLmY4N2IwM2MgMTAwNzU1CistLS0gYS9udW1weS9mMnB5L3J1bGVzLnB5CisrKysgYi9udW1weS9mMnB5L3J1bGVzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgCisgUnVsZXMgZm9yIGJ1aWxkaW5nIEMvQVBJIG1vZHVsZSB3aXRoIGYycHkyZS4KK2RpZmYgLS1naXQgYS9udW1weS9mMnB5L3NldHVwLnB5IGIvbnVtcHkvZjJweS9zZXR1cC5weQoraW5kZXggYThjMTQwMS4uMmU3YTUxNyAxMDA2NDQKKy0tLSBhL251bXB5L2YycHkvc2V0dXAucHkKKysrKyBiL251bXB5L2YycHkvc2V0dXAucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyBzZXR1cC5weSBmb3IgaW5zdGFsbGluZyBGMlBZCisgCitkaWZmIC0tZ2l0IGEvbnVtcHkvZjJweS91c2VfcnVsZXMucHkgYi9udW1weS9mMnB5L3VzZV9ydWxlcy5weQoraW5kZXggNmY0NGYxNi4uODIxNGY0MiAxMDA2NDQKKy0tLSBhL251bXB5L2YycHkvdXNlX3J1bGVzLnB5CisrKysgYi9udW1weS9mMnB5L3VzZV9ydWxlcy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIAorIEJ1aWxkICd1c2Ugb3RoZXJzIG1vZHVsZSBkYXRhJyBtZWNoYW5pc20gZm9yIGYycHkyZS4KK2RpZmYgLS1naXQgYS9udW1weS9saW5hbGcvbGFwYWNrX2xpdGUvY2xhcGFja19zY3J1Yi5weSBiL251bXB5L2xpbmFsZy9sYXBhY2tfbGl0ZS9jbGFwYWNrX3NjcnViLnB5CitpbmRleCA0MzQ1ODYxLi45MWU2NmU3IDEwMDY0NAorLS0tIGEvbnVtcHkvbGluYWxnL2xhcGFja19saXRlL2NsYXBhY2tfc2NydWIucHkKKysrKyBiL251bXB5L2xpbmFsZy9sYXBhY2tfbGl0ZS9jbGFwYWNrX3NjcnViLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbgorIAorIGltcG9ydCBzeXMsIG9zCitkaWZmIC0tZ2l0IGEvbnVtcHkvbGluYWxnL2xhcGFja19saXRlL21ha2VfbGl0ZS5weSBiL251bXB5L2xpbmFsZy9sYXBhY2tfbGl0ZS9tYWtlX2xpdGUucHkKK2luZGV4IDYxMTAyZDYuLjAyMTFmNGUgMTAwNzU1CistLS0gYS9udW1weS9saW5hbGcvbGFwYWNrX2xpdGUvbWFrZV9saXRlLnB5CisrKysgYi9udW1weS9saW5hbGcvbGFwYWNrX2xpdGUvbWFrZV9saXRlLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgVXNhZ2U6IG1ha2VfbGl0ZS5weSA8d3JhcHBlZF9yb3V0aW5lc19maWxlPiA8bGFwYWNrX2Rpcj4gPG91dHB1dF9kaXI+CisgCitkaWZmIC0tZ2l0IGEvbnVtcHkvbWEvYmVuY2gucHkgYi9udW1weS9tYS9iZW5jaC5weQoraW5kZXggYTliYTQyZC4uYTM3NzQzNiAxMDA2NDQKKy0tLSBhL251bXB5L21hL2JlbmNoLnB5CisrKysgYi9udW1weS9tYS9iZW5jaC5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIAorIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCitkaWZmIC0tZ2l0IGEvbnVtcHkvbWEvc2V0dXAucHkgYi9udW1weS9tYS9zZXR1cC5weQoraW5kZXggZDFkNmM4OS4uYTA0Yjc5YiAxMDA2NDQKKy0tLSBhL251bXB5L21hL3NldHVwLnB5CisrKysgYi9udW1weS9tYS9zZXR1cC5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCisgCisgZGVmIGNvbmZpZ3VyYXRpb24ocGFyZW50X3BhY2thZ2U9JycsdG9wX3BhdGg9Tm9uZSk6CitkaWZmIC0tZ2l0IGEvbnVtcHkvbWF0cml4bGliL3NldHVwLnB5IGIvbnVtcHkvbWF0cml4bGliL3NldHVwLnB5CitpbmRleCBkMDk4MWQ2Li41NzUzNGQxIDEwMDY0NAorLS0tIGEvbnVtcHkvbWF0cml4bGliL3NldHVwLnB5CisrKysgYi9udW1weS9tYXRyaXhsaWIvc2V0dXAucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgorIAorIGRlZiBjb25maWd1cmF0aW9uKHBhcmVudF9wYWNrYWdlPScnLCB0b3BfcGF0aD1Ob25lKToKK2RpZmYgLS1naXQgYS9udW1weS9yYW5kb20vX2V4YW1wbGVzL2N5dGhvbi9leHRlbmRpbmcucHl4IGIvbnVtcHkvcmFuZG9tL19leGFtcGxlcy9jeXRob24vZXh0ZW5kaW5nLnB5eAoraW5kZXggN2EwZGZlMC4uM2E3ZjgxYSAxMDA2NDQKKy0tLSBhL251bXB5L3JhbmRvbS9fZXhhbXBsZXMvY3l0aG9uL2V4dGVuZGluZy5weXgKKysrKyBiL251bXB5L3JhbmRvbS9fZXhhbXBsZXMvY3l0aG9uL2V4dGVuZGluZy5weXgKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjY3l0aG9uOiBsYW5ndWFnZV9sZXZlbD0zCisgCisgZnJvbSBsaWJjLnN0ZGludCBjaW1wb3J0IHVpbnQzMl90CitkaWZmIC0tZ2l0IGEvbnVtcHkvcmFuZG9tL19leGFtcGxlcy9jeXRob24vZXh0ZW5kaW5nX2Rpc3RyaWJ1dGlvbnMucHl4IGIvbnVtcHkvcmFuZG9tL19leGFtcGxlcy9jeXRob24vZXh0ZW5kaW5nX2Rpc3RyaWJ1dGlvbnMucHl4CitpbmRleCAxYmVmNTA2Li40ZGE2YTRiIDEwMDY0NAorLS0tIGEvbnVtcHkvcmFuZG9tL19leGFtcGxlcy9jeXRob24vZXh0ZW5kaW5nX2Rpc3RyaWJ1dGlvbnMucHl4CisrKysgYi9udW1weS9yYW5kb20vX2V4YW1wbGVzL2N5dGhvbi9leHRlbmRpbmdfZGlzdHJpYnV0aW9ucy5weXgKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjY3l0aG9uOiBsYW5ndWFnZV9sZXZlbD0zCisgIiIiCisgVGhpcyBmaWxlIHNob3dzIGhvdyB0aGUgdG8gdXNlIGEgQml0R2VuZXJhdG9yIHRvIGNyZWF0ZSBhIGRpc3RyaWJ1dGlvbi4KK2RpZmYgLS1naXQgYS9udW1weS9zZXR1cC5weSBiL251bXB5L3NldHVwLnB5CitpbmRleCA0Y2NkYWVlLi5kYjA2YzgyIDEwMDY0NAorLS0tIGEvbnVtcHkvc2V0dXAucHkKKysrKyBiL251bXB5L3NldHVwLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KKyAKKyAKK2RpZmYgLS1naXQgYS9udW1weS90ZXN0aW5nL3ByaW50X2NvZXJjaW9uX3RhYmxlcy5weSBiL251bXB5L3Rlc3RpbmcvcHJpbnRfY29lcmNpb25fdGFibGVzLnB5CitpbmRleCA3MmIyMmNlLi4xZTlhMzAxIDEwMDc1NQorLS0tIGEvbnVtcHkvdGVzdGluZy9wcmludF9jb2VyY2lvbl90YWJsZXMucHkKKysrKyBiL251bXB5L3Rlc3RpbmcvcHJpbnRfY29lcmNpb25fdGFibGVzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiUHJpbnRzIHR5cGUtY29lcmNpb24gdGFibGVzIGZvciB0aGUgYnVpbHQtaW4gTnVtUHkgdHlwZXMKKyAKKyAiIiIKK2RpZmYgLS1naXQgYS9udW1weS90ZXN0aW5nL3NldHVwLnB5IGIvbnVtcHkvdGVzdGluZy9zZXR1cC5weQoraW5kZXggN2MzZjJmYi4uYmQzMTVlZSAxMDA3NTUKKy0tLSBhL251bXB5L3Rlc3Rpbmcvc2V0dXAucHkKKysrKyBiL251bXB5L3Rlc3Rpbmcvc2V0dXAucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgorIAorIAorZGlmZiAtLWdpdCBhL3J1bnRlc3RzLnB5IGIvcnVudGVzdHMucHkKK2luZGV4IGEzODA1NGYuLjM4M2RkYWEgMTAwNzU1CistLS0gYS9ydW50ZXN0cy5weQorKysrIGIvcnVudGVzdHMucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyBydW50ZXN0cy5weSBbT1BUSU9OU10gWy0tIEFSR1NdCisgCitkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQoraW5kZXggZDdmODA3Yi4uNzA1ZWE1ZCAxMDA3NTUKKy0tLSBhL3NldHVwLnB5CisrKysgYi9zZXR1cC5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIiBOdW1QeSBpcyB0aGUgZnVuZGFtZW50YWwgcGFja2FnZSBmb3IgYXJyYXkgY29tcHV0aW5nIHdpdGggUHl0aG9uLgorIAorIEl0IHByb3ZpZGVzOgorZGlmZiAtLWdpdCBhL3Rvb2xzL2NfY292ZXJhZ2UvY19jb3ZlcmFnZV9yZXBvcnQucHkgYi90b29scy9jX2NvdmVyYWdlL2NfY292ZXJhZ2VfcmVwb3J0LnB5CitpbmRleCAzMjdmNmRjLi44ODM3Njg0IDEwMDc1NQorLS0tIGEvdG9vbHMvY19jb3ZlcmFnZS9jX2NvdmVyYWdlX3JlcG9ydC5weQorKysrIGIvdG9vbHMvY19jb3ZlcmFnZS9jX2NvdmVyYWdlX3JlcG9ydC5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIEEgc2NyaXB0IHRvIGNyZWF0ZSBDIGNvZGUtY292ZXJhZ2UgcmVwb3J0cyBiYXNlZCBvbiB0aGUgb3V0cHV0IG9mCisgdmFsZ3JpbmQncyBjYWxsZ3JpbmQgdG9vbC4KK2RpZmYgLS1naXQgYS90b29scy9jaGFuZ2Vsb2cucHkgYi90b29scy9jaGFuZ2Vsb2cucHkKK2luZGV4IGIxMzViMTQuLjVkOGIzM2MgMTAwNzU1CistLS0gYS90b29scy9jaGFuZ2Vsb2cucHkKKysrKyBiL3Rvb2xzL2NoYW5nZWxvZy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgLSotIGVuY29kaW5nOnV0Zi04IC0qLQorICIiIgorIFNjcmlwdCB0byBnZW5lcmF0ZSBjb250cmlidXRvciBhbmQgcHVsbCByZXF1ZXN0IGxpc3RzCitkaWZmIC0tZ2l0IGEvdG9vbHMvY2kvcHVzaF9kb2NzX3RvX3JlcG8ucHkgYi90b29scy9jaS9wdXNoX2RvY3NfdG9fcmVwby5weQoraW5kZXggYTk4OTY2OC4uYWU1MzA1NCAxMDA3NTUKKy0tLSBhL3Rvb2xzL2NpL3B1c2hfZG9jc190b19yZXBvLnB5CisrKysgYi90b29scy9jaS9wdXNoX2RvY3NfdG9fcmVwby5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIAorIGltcG9ydCBhcmdwYXJzZQorIGltcG9ydCBzdWJwcm9jZXNzCitkaWZmIC0tZ2l0IGEvdG9vbHMvZmluZF9kZXByZWNhdGVkX2VzY2FwZWRfY2hhcmFjdGVycy5weSBiL3Rvb2xzL2ZpbmRfZGVwcmVjYXRlZF9lc2NhcGVkX2NoYXJhY3RlcnMucHkKK2luZGV4IDZmOTAwMDEuLjEwZTAzNzggMTAwNjQ0CistLS0gYS90b29scy9maW5kX2RlcHJlY2F0ZWRfZXNjYXBlZF9jaGFyYWN0ZXJzLnB5CisrKysgYi90b29scy9maW5kX2RlcHJlY2F0ZWRfZXNjYXBlZF9jaGFyYWN0ZXJzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIHIiIiIKKyBMb29rIGZvciBlc2NhcGUgc2VxdWVuY2VzIGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuNi4KKyAKK2RpZmYgLS1naXQgYS90b29scy9yZWZndWlkZV9jaGVjay5weSBiL3Rvb2xzL3JlZmd1aWRlX2NoZWNrLnB5CitpbmRleCAyYzYyODA5Li5hMTlhMjllIDEwMDY0NAorLS0tIGEvdG9vbHMvcmVmZ3VpZGVfY2hlY2sucHkKKysrKyBiL3Rvb2xzL3JlZmd1aWRlX2NoZWNrLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgcmVmZ3VpZGVfY2hlY2sucHkgW09QVElPTlNdIFstLSBBUkdTXQorIAorZGlmZiAtLWdpdCBhL3Rvb2xzL3N3aWcvdGVzdC9zZXR1cC5weSBiL3Rvb2xzL3N3aWcvdGVzdC9zZXR1cC5weQoraW5kZXggNGZmODcwZS4uZjhmMDVlNiAxMDA3NTUKKy0tLSBhL3Rvb2xzL3N3aWcvdGVzdC9zZXR1cC5weQorKysrIGIvdG9vbHMvc3dpZy90ZXN0L3NldHVwLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCisgCisgIyBTeXN0ZW0gaW1wb3J0cworZGlmZiAtLWdpdCBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0QXJyYXkucHkgYi90b29scy9zd2lnL3Rlc3QvdGVzdEFycmF5LnB5CitpbmRleCA4ZDljNzk3Li41NGZmZTcxIDEwMDc1NQorLS0tIGEvdG9vbHMvc3dpZy90ZXN0L3Rlc3RBcnJheS5weQorKysrIGIvdG9vbHMvc3dpZy90ZXN0L3Rlc3RBcnJheS5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uCisgCisgIyBTeXN0ZW0gaW1wb3J0cworZGlmZiAtLWdpdCBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0RmFycmF5LnB5IGIvdG9vbHMvc3dpZy90ZXN0L3Rlc3RGYXJyYXkucHkKK2luZGV4IGU4YmY3MTEuLmIzNzdmN2MgMTAwNzU1CistLS0gYS90b29scy9zd2lnL3Rlc3QvdGVzdEZhcnJheS5weQorKysrIGIvdG9vbHMvc3dpZy90ZXN0L3Rlc3RGYXJyYXkucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhIC91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbgorIAorICMgU3lzdGVtIGltcG9ydHMKK2RpZmYgLS1naXQgYS90b29scy9zd2lnL3Rlc3QvdGVzdEZsYXQucHkgYi90b29scy9zd2lnL3Rlc3QvdGVzdEZsYXQucHkKK2luZGV4IDcxYmUyNzcuLjU1MDM0YmYgMTAwNzU1CistLS0gYS90b29scy9zd2lnL3Rlc3QvdGVzdEZsYXQucHkKKysrKyBiL3Rvb2xzL3N3aWcvdGVzdC90ZXN0RmxhdC5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uCisgCisgIyBTeXN0ZW0gaW1wb3J0cworZGlmZiAtLWdpdCBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0Rm9ydHJhbi5weSBiL3Rvb2xzL3N3aWcvdGVzdC90ZXN0Rm9ydHJhbi5weQoraW5kZXggNDI2ZTg5NC4uMGY3ZDBlNiAxMDA2NDQKKy0tLSBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0Rm9ydHJhbi5weQorKysrIGIvdG9vbHMvc3dpZy90ZXN0L3Rlc3RGb3J0cmFuLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24KKyAKKyAjIFN5c3RlbSBpbXBvcnRzCitkaWZmIC0tZ2l0IGEvdG9vbHMvc3dpZy90ZXN0L3Rlc3RNYXRyaXgucHkgYi90b29scy9zd2lnL3Rlc3QvdGVzdE1hdHJpeC5weQoraW5kZXggMDY1YmUwZC4uODU0YTIzYyAxMDA3NTUKKy0tLSBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0TWF0cml4LnB5CisrKysgYi90b29scy9zd2lnL3Rlc3QvdGVzdE1hdHJpeC5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uCisgCisgIyBTeXN0ZW0gaW1wb3J0cworZGlmZiAtLWdpdCBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0U3VwZXJUZW5zb3IucHkgYi90b29scy9zd2lnL3Rlc3QvdGVzdFN1cGVyVGVuc29yLnB5CitpbmRleCA5N2ZlODBjLi4zMWI2M2QwIDEwMDY0NAorLS0tIGEvdG9vbHMvc3dpZy90ZXN0L3Rlc3RTdXBlclRlbnNvci5weQorKysrIGIvdG9vbHMvc3dpZy90ZXN0L3Rlc3RTdXBlclRlbnNvci5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgorIAorICMgU3lzdGVtIGltcG9ydHMKK2RpZmYgLS1naXQgYS90b29scy9zd2lnL3Rlc3QvdGVzdFRlbnNvci5weSBiL3Rvb2xzL3N3aWcvdGVzdC90ZXN0VGVuc29yLnB5CitpbmRleCBhYzFiNzQ5Li5mNDdkOWU4IDEwMDc1NQorLS0tIGEvdG9vbHMvc3dpZy90ZXN0L3Rlc3RUZW5zb3IucHkKKysrKyBiL3Rvb2xzL3N3aWcvdGVzdC90ZXN0VGVuc29yLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24KKyAKKyAjIFN5c3RlbSBpbXBvcnRzCitkaWZmIC0tZ2l0IGEvdG9vbHMvc3dpZy90ZXN0L3Rlc3RWZWN0b3IucHkgYi90b29scy9zd2lnL3Rlc3QvdGVzdFZlY3Rvci5weQoraW5kZXggNDVlNzYzYi4uMDY3YjkyMiAxMDA3NTUKKy0tLSBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0VmVjdG9yLnB5CisrKysgYi90b29scy9zd2lnL3Rlc3QvdGVzdFZlY3Rvci5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uCisgCisgIyBTeXN0ZW0gaW1wb3J0cwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtbnB5X2NwdS1BZGQtcmlzY3Ytc3VwcG9ydC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLW5weV9jcHUtQWRkLXJpc2N2LXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkZWNmZTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtbnB5X2NwdS1BZGQtcmlzY3Ytc3VwcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUZyb20gNjI5ODkxZjY3NjAxMjc1YzljNGRlMGJiMDFhZmNmMWE4YzQ0ZmEzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDE2IE1hciAyMDE4IDE5OjU1OjIxIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIG5weV9jcHU6IEFkZCByaXNjdiBzdXBwb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL251bXB5L251bXB5L3B1bGwvMTA3NjFdCi0tLS0KLSBudW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvbnB5X2NwdS5oIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL251bXB5L2NvcmUvaW5jbHVkZS9udW1weS9ucHlfY3B1LmggYi9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvbnB5X2NwdS5oCi1pbmRleCA1ZWRkOGY0Li5lMWU0Nzk2IDEwMDY0NAotLS0tIGEvbnVtcHkvY29yZS9pbmNsdWRlL251bXB5L25weV9jcHUuaAotKysrIGIvbnVtcHkvY29yZS9pbmNsdWRlL251bXB5L25weV9jcHUuaAotQEAgLTk2LDYgKzk2LDggQEAKLSAgICAgI2RlZmluZSBOUFlfQ1BVX09SMUsKLSAjZWxpZiBkZWZpbmVkKF9fbWM2ODAwMF9fKQotICAgICAjZGVmaW5lIE5QWV9DUFVfTTY4SwotKyNlbGlmIGRlZmluZWQoX19yaXNjdikKLSsgICAgI2RlZmluZSBOUFlfQ1BVX1JJU0NWCi0gI2VsaWYgZGVmaW5lZChfX2FyY19fKSAmJiBkZWZpbmVkKF9fTElUVExFX0VORElBTl9fKQotICAgICAjZGVmaW5lIE5QWV9DUFVfQVJDRUwKLSAjZWxpZiBkZWZpbmVkKF9fYXJjX18pICYmIGRlZmluZWQoX19CSUdfRU5ESUFOX18pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1udW1weS1yYW5kb20tc2V0dXAucHktcmVtb3ZlLXRoZS1kZXRlY3Rpb24tb2YteDg2LXRhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtbnVtcHktcmFuZG9tLXNldHVwLnB5LXJlbW92ZS10aGUtZGV0ZWN0aW9uLW9mLXg4Ni10YS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJiMmE2Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1udW1weS1yYW5kb20tc2V0dXAucHktcmVtb3ZlLXRoZS1kZXRlY3Rpb24tb2YteDg2LXRhLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSBiODgxZTBiMmJhOWNmMWE0YWEzNTFhMWMxZWE5MGIxZTE3NzZjZTIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDEyIEF1ZyAyMDE5IDE1OjM3OjM2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIG51bXB5L3JhbmRvbS9zZXR1cC5weTogcmVtb3ZlIHRoZSBkZXRlY3Rpb24gb2YgeDg2IHRhcmdldHMKLSB2aWEgdW5hbWUoKQotCi1UaGlzIHdhcyBiYWRseSBicmVha2luZyBjb21waWxhdGlvbiBmb3IgQVJNIHRhcmdldHMgKGFuZCBwb3NzaWJseQotb3RoZXIgbm9uLXg4NiB0YXJnZXRzKTsgaWYgLW1zc2UyIGlzIGRlc2lyYWJsZSBmb3IgeDg2IGJ1aWxkcyBpdCBoYXMKLXRvIGJlIHBhc3NlZCB0aHJvdWdoIGFub3RoZXIgY2hhbm5lbC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBudW1weS9yYW5kb20vc2V0dXAucHkgfCA1IC0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9udW1weS9yYW5kb20vc2V0dXAucHkgYi9udW1weS9yYW5kb20vc2V0dXAucHkKLWluZGV4IGExYmYzYjguLjYwZmI1MzQgMTAwNjQ0Ci0tLS0gYS9udW1weS9yYW5kb20vc2V0dXAucHkKLSsrKyBiL251bXB5L3JhbmRvbS9zZXR1cC5weQotQEAgLTQ5LDExICs0OSw2IEBAIGRlZiBjb25maWd1cmF0aW9uKHBhcmVudF9wYWNrYWdlPScnLCB0b3BfcGF0aD1Ob25lKToKLSAgICAgZWxpZiBub3QgaXNfbXN2YzoKLSAgICAgICAgICMgU29tZSBiaXQgZ2VuZXJhdG9ycyByZXF1aXJlIGM5OQotICAgICAgICAgRVhUUkFfQ09NUElMRV9BUkdTICs9IFsnLXN0ZD1jOTknXQotLSAgICAgICAgSU5URUxfTElLRSA9IGFueShbdmFsIGluIGsubG93ZXIoKSBmb3IgayBpbiBwbGF0Zm9ybS51bmFtZSgpCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdmFsIGluICgneDg2JywgJ2k2ODYnLCAnaTM4NicsICdhbWQ2NCcpXSkKLS0gICAgICAgIGlmIElOVEVMX0xJS0U6Ci0tICAgICAgICAgICAgIyBBc3N1bWVzIEdDQyBvciBHQ0MtbGlrZSBjb21waWxlcgotLSAgICAgICAgICAgIEVYVFJBX0NPTVBJTEVfQVJHUyArPSBbJy1tc3NlMiddCi0gCi0gICAgICMgVXNlIGxlZ2FjeSBpbnRlZ2VyIHZhcmlhYmxlIHNpemVzCi0gICAgIExFR0FDWV9ERUZTID0gWygnTlBfUkFORE9NX0xFR0FDWScsICcxJyldCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHkuaW5jCmluZGV4IGY2OGI5MGUuLjcyNzc1NTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHkuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHkuaW5jCkBAIC03LDExICs3LDEwIEBACiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbnB5X2NwdS1BZGQtcmlzY3Ytc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW51bXB5LXJhbmRvbS1zZXR1cC5weS1yZW1vdmUtdGhlLWRldGVjdGlvbi1vZi14ODYtdGEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb252ZXJ0LXNoZWJhbmctZnJvbS1weXRob24tdG8tcHl0aG9uMy5wYXRjaCBcCiAgICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjNDhiMmFkNzg1ZjgyY2RmZTI4YzkwN2NlMzVlMmE3MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0N2I3YjYxNDVlN2JhNTkxOGNlMjZiZTI1OTk5YjZkNGIzNWNmOWZiZmRmNDZiN2RhNTAwOTBmZmRiMDIwNDQ1IgorU1JDX1VSSVttZDVzdW1dID0gImNkNjMxYzc2MWYxNDFkMzgyYjRlMWIzMWM4MjMyZmMwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkzZWU1OWVjMzhmM2JmOGY5YTQyZDVmNDMwMWY2MGU2ODI1YTRhNjM4NWExNDVmNzBiYWRjZDJiZjJhMTExMzQiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvcmVsZWFzZXMiCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKQEAgLTE5LDYgKzE4LDggQEAKICMgTmVlZGVkIGZvciBidWlsZGluZyB3aXRoIGdjYyA0LnggZnJvbSBjZW50b3MgNwogQ0ZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1zdGQ9Yzk5IgogCitERVBFTkRTICs9ICJweXRob24zLWN5dGhvbi1uYXRpdmUiCisKIFMgPSAiJHtXT1JLRElSfS9udW1weS0ke1BWfSIKIAogQ0xFQU5CUk9LRU4gPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTcuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTguMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbjMtbnVtcHlfMS4xNy4wLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjE4LjMuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9maWxlcy8wMDAxLWJwby0zOTUwMy1DVkUtMjAyMC04NDkyLUZpeC1BYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vZmlsZXMvMDAwMS1icG8tMzk1MDMtQ1ZFLTIwMjAtODQ5Mi1GaXgtQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNmI5OWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vZmlsZXMvMDAwMS1icG8tMzk1MDMtQ1ZFLTIwMjAtODQ5Mi1GaXgtQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyLnBhdGNoCkBAIC0wLDAgKzEsMjQ4IEBACitGcm9tIDBiMjk3ZDRmZjFjMGU0NDgwYWQzM2FjYWU3OTNmYmFmNGJmMDE1YjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBWaWN0b3IgU3Rpbm5lciA8dnN0aW5uZXJAcHl0aG9uLm9yZz4KK0RhdGU6IFRodSwgMiBBcHIgMjAyMCAwMjo1MjoyMCArMDIwMAorU3ViamVjdDogW1BBVENIXSBicG8tMzk1MDM6IENWRS0yMDIwLTg0OTI6IEZpeCBBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIKKyAoR0gtMTgyODQpCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKyhodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vY29tbWl0LzBiMjk3ZDRmZjFjMGU0NDgwYWQzM2FjYWU3OTNmYmFmNGJmMDE1YjQpCisKK0NWRTogQ1ZFLTIwMjAtODQ5MgorCitUaGUgQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyIGNsYXNzIG9mIHRoZSB1cmxsaWIucmVxdWVzdCBtb2R1bGUgdXNlcworYW4gaW5lZmZpY2llbnQgcmVndWxhciBleHByZXNzaW9uIHdoaWNoIGNhbiBiZSBleHBsb2l0ZWQgYnkgYW4KK2F0dGFja2VyIHRvIGNhdXNlIGEgZGVuaWFsIG9mIHNlcnZpY2UuIEZpeCB0aGUgcmVnZXggdG8gcHJldmVudCB0aGUKK2NhdGFzdHJvcGhpYyBiYWNrdHJhY2tpbmcuIFZ1bG5lcmFiaWxpdHkgcmVwb3J0ZWQgYnkgQmVuIENhbGxlcgorYW5kIE1hdHQgU2Nod2FnZXIuCisKK0Fic3RyYWN0QmFzaWNBdXRoSGFuZGxlciBvZiB1cmxsaWIucmVxdWVzdCBub3cgcGFyc2VzIGFsbAorV1dXLUF1dGhlbnRpY2F0ZSBIVFRQIGhlYWRlcnMgYW5kIGFjY2VwdHMgbXVsdGlwbGUgY2hhbGxlbmdlcyBwZXIKK2hlYWRlcjogdXNlIHRoZSByZWFsbSBvZiB0aGUgZmlyc3QgQmFzaWMgY2hhbGxlbmdlLgorCitDby1BdXRob3JlZC1CeTogU2VyaGl5IFN0b3JjaGFrYSA8c3RvcmNoYWthQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFRyZXZvciBHYW1ibGluIDx0cmV2b3IuZ2FtYmxpbkB3aW5kcml2ZXIuY29tPgorLS0tCisgTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5ICAgICAgICAgICAgICAgICAgICAgIHwgOTAgKysrKysrKysrKysrLS0tLS0tLQorIExpYi91cmxsaWIvcmVxdWVzdC5weSAgICAgICAgICAgICAgICAgICAgICAgICB8IDY5ICsrKysrKysrKystLS0tCisgLi4uLzIwMjAtMDMtMjUtMTYtMDItMTYuYnBvLTM5NTAzLlltTWJZbi5yc3QgIHwgIDMgKworIC4uLi8yMDIwLTAxLTMwLTE2LTE1LTI5LmJwby0zOTUwMy5CMjk5WXEucnN0ICB8ICA1ICsrCisgNCBmaWxlcyBjaGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IE1pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDIwLTAzLTI1LTE2LTAyLTE2LmJwby0zOTUwMy5ZbU1iWW4ucnN0CisgY3JlYXRlIG1vZGUgMTAwNjQ0IE1pc2MvTkVXUy5kL25leHQvU2VjdXJpdHkvMjAyMC0wMS0zMC0xNi0xNS0yOS5icG8tMzk1MDMuQjI5OVlxLnJzdAorCitkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CitpbmRleCA4YWJlZGFhYzk4Li5lNjlhYzNlMjEzIDEwMDY0NAorLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CisrKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKK0BAIC0xNDQ2LDQwICsxNDQ2LDY0IEBAIGNsYXNzIEhhbmRsZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBieXBhc3MgPSB7J2V4Y2x1ZGVfc2ltcGxlJzogVHJ1ZSwgJ2V4Y2VwdGlvbnMnOiBbXX0KKyAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShfcHJveHlfYnlwYXNzX21hY29zeF9zeXNjb25mKCd0ZXN0JywgYnlwYXNzKSkKKyAKKy0gICAgZGVmIHRlc3RfYmFzaWNfYXV0aChzZWxmLCBxdW90ZV9jaGFyPSciJyk6CistICAgICAgICBvcGVuZXIgPSBPcGVuZXJEaXJlY3RvcigpCistICAgICAgICBwYXNzd29yZF9tYW5hZ2VyID0gTW9ja1Bhc3N3b3JkTWFuYWdlcigpCistICAgICAgICBhdXRoX2hhbmRsZXIgPSB1cmxsaWIucmVxdWVzdC5IVFRQQmFzaWNBdXRoSGFuZGxlcihwYXNzd29yZF9tYW5hZ2VyKQorLSAgICAgICAgcmVhbG0gPSAiQUNNRSBXaWRnZXQgU3RvcmUiCistICAgICAgICBodHRwX2hhbmRsZXIgPSBNb2NrSFRUUEhhbmRsZXIoCistICAgICAgICAgICAgNDAxLCAnV1dXLUF1dGhlbnRpY2F0ZTogQmFzaWMgcmVhbG09JXMlcyVzXHJcblxyXG4nICUKKy0gICAgICAgICAgICAocXVvdGVfY2hhciwgcmVhbG0sIHF1b3RlX2NoYXIpKQorLSAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGF1dGhfaGFuZGxlcikKKy0gICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihodHRwX2hhbmRsZXIpCistICAgICAgICBzZWxmLl90ZXN0X2Jhc2ljX2F1dGgob3BlbmVyLCBhdXRoX2hhbmRsZXIsICJBdXRob3JpemF0aW9uIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsbSwgaHR0cF9oYW5kbGVyLCBwYXNzd29yZF9tYW5hZ2VyLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vYWNtZS5leGFtcGxlLmNvbS9wcm90ZWN0ZWQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vYWNtZS5leGFtcGxlLmNvbS9wcm90ZWN0ZWQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKy0KKy0gICAgZGVmIHRlc3RfYmFzaWNfYXV0aF93aXRoX3NpbmdsZV9xdW90ZWRfcmVhbG0oc2VsZik6CistICAgICAgICBzZWxmLnRlc3RfYmFzaWNfYXV0aChxdW90ZV9jaGFyPSInIikKKy0KKy0gICAgZGVmIHRlc3RfYmFzaWNfYXV0aF93aXRoX3VucXVvdGVkX3JlYWxtKHNlbGYpOgorLSAgICAgICAgb3BlbmVyID0gT3BlbmVyRGlyZWN0b3IoKQorLSAgICAgICAgcGFzc3dvcmRfbWFuYWdlciA9IE1vY2tQYXNzd29yZE1hbmFnZXIoKQorLSAgICAgICAgYXV0aF9oYW5kbGVyID0gdXJsbGliLnJlcXVlc3QuSFRUUEJhc2ljQXV0aEhhbmRsZXIocGFzc3dvcmRfbWFuYWdlcikKKy0gICAgICAgIHJlYWxtID0gIkFDTUUgV2lkZ2V0IFN0b3JlIgorLSAgICAgICAgaHR0cF9oYW5kbGVyID0gTW9ja0hUVFBIYW5kbGVyKAorLSAgICAgICAgICAgIDQwMSwgJ1dXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPSVzXHJcblxyXG4nICUgcmVhbG0pCistICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoYXV0aF9oYW5kbGVyKQorLSAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGh0dHBfaGFuZGxlcikKKy0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhVc2VyV2FybmluZyk6CisrICAgIGRlZiBjaGVja19iYXNpY19hdXRoKHNlbGYsIGhlYWRlcnMsIHJlYWxtKToKKysgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHJlYWxtPXJlYWxtLCBoZWFkZXJzPWhlYWRlcnMpOgorKyAgICAgICAgICAgIG9wZW5lciA9IE9wZW5lckRpcmVjdG9yKCkKKysgICAgICAgICAgICBwYXNzd29yZF9tYW5hZ2VyID0gTW9ja1Bhc3N3b3JkTWFuYWdlcigpCisrICAgICAgICAgICAgYXV0aF9oYW5kbGVyID0gdXJsbGliLnJlcXVlc3QuSFRUUEJhc2ljQXV0aEhhbmRsZXIocGFzc3dvcmRfbWFuYWdlcikKKysgICAgICAgICAgICBib2R5ID0gJ1xyXG4nLmpvaW4oaGVhZGVycykgKyAnXHJcblxyXG4nCisrICAgICAgICAgICAgaHR0cF9oYW5kbGVyID0gTW9ja0hUVFBIYW5kbGVyKDQwMSwgYm9keSkKKysgICAgICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoYXV0aF9oYW5kbGVyKQorKyAgICAgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihodHRwX2hhbmRsZXIpCisgICAgICAgICAgICAgc2VsZi5fdGVzdF9iYXNpY19hdXRoKG9wZW5lciwgYXV0aF9oYW5kbGVyLCAiQXV0aG9yaXphdGlvbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsbSwgaHR0cF9oYW5kbGVyLCBwYXNzd29yZF9tYW5hZ2VyLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9hY21lLmV4YW1wbGUuY29tL3Byb3RlY3RlZCIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL2FjbWUuZXhhbXBsZS5jb20vcHJvdGVjdGVkIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbG0sIGh0dHBfaGFuZGxlciwgcGFzc3dvcmRfbWFuYWdlciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9hY21lLmV4YW1wbGUuY29tL3Byb3RlY3RlZCIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vYWNtZS5leGFtcGxlLmNvbS9wcm90ZWN0ZWQiKQorKworKyAgICBkZWYgdGVzdF9iYXNpY19hdXRoKHNlbGYpOgorKyAgICAgICAgcmVhbG0gPSAicmVhbG0yQGV4YW1wbGUuY29tIgorKyAgICAgICAgcmVhbG0yID0gInJlYWxtMkBleGFtcGxlLmNvbSIKKysgICAgICAgIGJhc2ljID0gZidCYXNpYyByZWFsbT0ie3JlYWxtfSInCisrICAgICAgICBiYXNpYzIgPSBmJ0Jhc2ljIHJlYWxtPSJ7cmVhbG0yfSInCisrICAgICAgICBvdGhlcl9ub19yZWFsbSA9ICdPdGhlcnNjaGVtZSB4eHgnCisrICAgICAgICBkaWdlc3QgPSAoZidEaWdlc3QgcmVhbG09IntyZWFsbTJ9IiwgJworKyAgICAgICAgICAgICAgICAgIGYncW9wPSJhdXRoLCBhdXRoLWludCIsICcKKysgICAgICAgICAgICAgICAgICBmJ25vbmNlPSJkY2Q5OGI3MTAyZGQyZjBlOGIxMWQwZjYwMGJmYjBjMDkzIiwgJworKyAgICAgICAgICAgICAgICAgIGYnb3BhcXVlPSI1Y2NjMDY5YzQwM2ViYWY5ZjAxNzFlOTUxN2Y0MGU0MSInKQorKyAgICAgICAgZm9yIHJlYWxtX3N0ciBpbiAoCisrICAgICAgICAgICAgIyB0ZXN0ICJxdW90ZSIgYW5kICdxdW90ZScKKysgICAgICAgICAgICBmJ0Jhc2ljIHJlYWxtPSJ7cmVhbG19IicsCisrICAgICAgICAgICAgZiJCYXNpYyByZWFsbT0ne3JlYWxtfSciLAorKworKyAgICAgICAgICAgICMgY2hhcnNldCBpcyBpZ25vcmVkCisrICAgICAgICAgICAgZidCYXNpYyByZWFsbT0ie3JlYWxtfSIsIGNoYXJzZXQ9IlVURi04IicsCisrCisrICAgICAgICAgICAgIyBNdWx0aXBsZSBjaGFsbGVuZ2VzIHBlciBoZWFkZXIKKysgICAgICAgICAgICBmJ3tiYXNpY30sIHtiYXNpYzJ9JywKKysgICAgICAgICAgICBmJ3tiYXNpY30sIHtvdGhlcl9ub19yZWFsbX0nLAorKyAgICAgICAgICAgIGYne290aGVyX25vX3JlYWxtfSwge2Jhc2ljfScsCisrICAgICAgICAgICAgZid7YmFzaWN9LCB7ZGlnZXN0fScsCisrICAgICAgICAgICAgZid7ZGlnZXN0fSwge2Jhc2ljfScsCisrICAgICAgICApOgorKyAgICAgICAgICAgIGhlYWRlcnMgPSBbZidXV1ctQXV0aGVudGljYXRlOiB7cmVhbG1fc3RyfSddCisrICAgICAgICAgICAgc2VsZi5jaGVja19iYXNpY19hdXRoKGhlYWRlcnMsIHJlYWxtKQorKworKyAgICAgICAgIyBubyBxdW90ZTogZXhwZWN0IGEgd2FybmluZworKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgiQmFzaWMgQXV0aCBSZWFsbSB3YXMgdW5xdW90ZWQiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyV2FybmluZykpOgorKyAgICAgICAgICAgIGhlYWRlcnMgPSBbZidXV1ctQXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT17cmVhbG19J10KKysgICAgICAgICAgICBzZWxmLmNoZWNrX2Jhc2ljX2F1dGgoaGVhZGVycywgcmVhbG0pCisrCisrICAgICAgICAjIE11bHRpcGxlIGhlYWRlcnM6IG9uZSBjaGFsbGVuZ2UgcGVyIGhlYWRlci4KKysgICAgICAgICMgVXNlIHRoZSBmaXJzdCBCYXNpYyByZWFsbS4KKysgICAgICAgIGZvciBjaGFsbGVuZ2VzIGluICgKKysgICAgICAgICAgICBbYmFzaWMsICBiYXNpYzJdLAorKyAgICAgICAgICAgIFtiYXNpYywgIGRpZ2VzdF0sCisrICAgICAgICAgICAgW2RpZ2VzdCwgYmFzaWNdLAorKyAgICAgICAgKToKKysgICAgICAgICAgICBoZWFkZXJzID0gW2YnV1dXLUF1dGhlbnRpY2F0ZToge2NoYWxsZW5nZX0nCisrICAgICAgICAgICAgICAgICAgICAgICBmb3IgY2hhbGxlbmdlIGluIGNoYWxsZW5nZXNdCisrICAgICAgICAgICAgc2VsZi5jaGVja19iYXNpY19hdXRoKGhlYWRlcnMsIHJlYWxtKQorIAorICAgICBkZWYgdGVzdF9wcm94eV9iYXNpY19hdXRoKHNlbGYpOgorICAgICAgICAgb3BlbmVyID0gT3BlbmVyRGlyZWN0b3IoKQorZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvcmVxdWVzdC5weSBiL0xpYi91cmxsaWIvcmVxdWVzdC5weQoraW5kZXggN2ZlNTA1MzVkYS4uMmEzZDcxNTU0ZiAxMDA2NDQKKy0tLSBhL0xpYi91cmxsaWIvcmVxdWVzdC5weQorKysrIGIvTGliL3VybGxpYi9yZXF1ZXN0LnB5CitAQCAtOTM3LDggKzkzNywxNSBAQCBjbGFzcyBBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXI6CisgCisgICAgICMgYWxsb3cgZm9yIGRvdWJsZS0gYW5kIHNpbmdsZS1xdW90ZWQgcmVhbG0gdmFsdWVzCisgICAgICMgKHNpbmdsZSBxdW90ZXMgYXJlIGEgdmlvbGF0aW9uIG9mIHRoZSBSRkMsIGJ1dCBhcHBlYXIgaW4gdGhlIHdpbGQpCistICAgIHJ4ID0gcmUuY29tcGlsZSgnKD86LiosKSpbIFx0XSooW14gXHRdKylbIFx0XSsnCistICAgICAgICAgICAgICAgICAgICAncmVhbG09KFsiXCddPykoW14iXCddKilcXDInLCByZS5JKQorKyAgICByeCA9IHJlLmNvbXBpbGUoJyg/Ol58LCknICAgIyBzdGFydCBvZiB0aGUgc3RyaW5nIG9yICcsJworKyAgICAgICAgICAgICAgICAgICAgJ1sgXHRdKicgICAgIyBvcHRpb25hbCB3aGl0ZXNwYWNlcworKyAgICAgICAgICAgICAgICAgICAgJyhbXiBcdF0rKScgIyBzY2hlbWUgbGlrZSAiQmFzaWMiCisrICAgICAgICAgICAgICAgICAgICAnWyBcdF0rJyAgICAjIG1hbmRhdG9yeSB3aGl0ZXNwYWNlcworKyAgICAgICAgICAgICAgICAgICAgIyByZWFsbT14eHgKKysgICAgICAgICAgICAgICAgICAgICMgcmVhbG09J3h4eCcKKysgICAgICAgICAgICAgICAgICAgICMgcmVhbG09Inh4eCIKKysgICAgICAgICAgICAgICAgICAgICdyZWFsbT0oWyJcJ10/KShbXiJcJ10qKVxcMicsCisrICAgICAgICAgICAgICAgICAgICByZS5JKQorIAorICAgICAjIFhYWCBjb3VsZCBwcmUtZW1wdGl2ZWx5IHNlbmQgYXV0aCBpbmZvIGFscmVhZHkgYWNjZXB0ZWQgKFJGQyAyNjE3LAorICAgICAjIGVuZCBvZiBzZWN0aW9uIDIsIGFuZCBzZWN0aW9uIDEuMiBpbW1lZGlhdGVseSBhZnRlciAiY3JlZGVudGlhbHMiCitAQCAtOTUwLDI3ICs5NTcsNTEgQEAgY2xhc3MgQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyOgorICAgICAgICAgc2VsZi5wYXNzd2QgPSBwYXNzd29yZF9tZ3IKKyAgICAgICAgIHNlbGYuYWRkX3Bhc3N3b3JkID0gc2VsZi5wYXNzd2QuYWRkX3Bhc3N3b3JkCisgCisrICAgIGRlZiBfcGFyc2VfcmVhbG0oc2VsZiwgaGVhZGVyKToKKysgICAgICAgICMgcGFyc2UgV1dXLUF1dGhlbnRpY2F0ZSBoZWFkZXI6IGFjY2VwdCBtdWx0aXBsZSBjaGFsbGVuZ2VzIHBlciBoZWFkZXIKKysgICAgICAgIGZvdW5kX2NoYWxsZW5nZSA9IEZhbHNlCisrICAgICAgICBmb3IgbW8gaW4gQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyLnJ4LmZpbmRpdGVyKGhlYWRlcik6CisrICAgICAgICAgICAgc2NoZW1lLCBxdW90ZSwgcmVhbG0gPSBtby5ncm91cHMoKQorKyAgICAgICAgICAgIGlmIHF1b3RlIG5vdCBpbiBbJyInLCAiJyJdOgorKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJCYXNpYyBBdXRoIFJlYWxtIHdhcyB1bnF1b3RlZCIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcldhcm5pbmcsIDMpCisrCisrICAgICAgICAgICAgeWllbGQgKHNjaGVtZSwgcmVhbG0pCisrCisrICAgICAgICAgICAgZm91bmRfY2hhbGxlbmdlID0gVHJ1ZQorKworKyAgICAgICAgaWYgbm90IGZvdW5kX2NoYWxsZW5nZToKKysgICAgICAgICAgICBpZiBoZWFkZXI6CisrICAgICAgICAgICAgICAgIHNjaGVtZSA9IGhlYWRlci5zcGxpdCgpWzBdCisrICAgICAgICAgICAgZWxzZToKKysgICAgICAgICAgICAgICAgc2NoZW1lID0gJycKKysgICAgICAgICAgICB5aWVsZCAoc2NoZW1lLCBOb25lKQorKworICAgICBkZWYgaHR0cF9lcnJvcl9hdXRoX3JlcWVkKHNlbGYsIGF1dGhyZXEsIGhvc3QsIHJlcSwgaGVhZGVycyk6CisgICAgICAgICAjIGhvc3QgbWF5IGJlIGFuIGF1dGhvcml0eSAod2l0aG91dCB1c2VyaW5mbykgb3IgYSBVUkwgd2l0aCBhbgorICAgICAgICAgIyBhdXRob3JpdHkKKy0gICAgICAgICMgWFhYIGNvdWxkIGJlIG11bHRpcGxlIGhlYWRlcnMKKy0gICAgICAgIGF1dGhyZXEgPSBoZWFkZXJzLmdldChhdXRocmVxLCBOb25lKQorKyAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuZ2V0X2FsbChhdXRocmVxKQorKyAgICAgICAgaWYgbm90IGhlYWRlcnM6CisrICAgICAgICAgICAgIyBubyBoZWFkZXIgZm91bmQKKysgICAgICAgICAgICByZXR1cm4KKyAKKy0gICAgICAgIGlmIGF1dGhyZXE6CistICAgICAgICAgICAgc2NoZW1lID0gYXV0aHJlcS5zcGxpdCgpWzBdCistICAgICAgICAgICAgaWYgc2NoZW1lLmxvd2VyKCkgIT0gJ2Jhc2ljJzoKKy0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyIGRvZXMgbm90IgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc3VwcG9ydCB0aGUgZm9sbG93aW5nIHNjaGVtZTogJyVzJyIgJQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtZSkKKy0gICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICBtbyA9IEFic3RyYWN0QmFzaWNBdXRoSGFuZGxlci5yeC5zZWFyY2goYXV0aHJlcSkKKy0gICAgICAgICAgICAgICAgaWYgbW86CistICAgICAgICAgICAgICAgICAgICBzY2hlbWUsIHF1b3RlLCByZWFsbSA9IG1vLmdyb3VwcygpCistICAgICAgICAgICAgICAgICAgICBpZiBxdW90ZSBub3QgaW4gWyciJywiJyJdOgorLSAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIkJhc2ljIEF1dGggUmVhbG0gd2FzIHVucXVvdGVkIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJXYXJuaW5nLCAyKQorLSAgICAgICAgICAgICAgICAgICAgaWYgc2NoZW1lLmxvd2VyKCkgPT0gJ2Jhc2ljJzoKKy0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXRyeV9odHRwX2Jhc2ljX2F1dGgoaG9zdCwgcmVxLCByZWFsbSkKKysgICAgICAgIHVuc3VwcG9ydGVkID0gTm9uZQorKyAgICAgICAgZm9yIGhlYWRlciBpbiBoZWFkZXJzOgorKyAgICAgICAgICAgIGZvciBzY2hlbWUsIHJlYWxtIGluIHNlbGYuX3BhcnNlX3JlYWxtKGhlYWRlcik6CisrICAgICAgICAgICAgICAgIGlmIHNjaGVtZS5sb3dlcigpICE9ICdiYXNpYyc6CisrICAgICAgICAgICAgICAgICAgICB1bnN1cHBvcnRlZCA9IHNjaGVtZQorKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKysKKysgICAgICAgICAgICAgICAgaWYgcmVhbG0gaXMgbm90IE5vbmU6CisrICAgICAgICAgICAgICAgICAgICAjIFVzZSB0aGUgZmlyc3QgbWF0Y2hpbmcgQmFzaWMgY2hhbGxlbmdlLgorKyAgICAgICAgICAgICAgICAgICAgIyBJZ25vcmUgZm9sbG93aW5nIGNoYWxsZW5nZXMgZXZlbiBpZiB0aGV5IHVzZSB0aGUgQmFzaWMKKysgICAgICAgICAgICAgICAgICAgICMgc2NoZW1lLgorKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0cnlfaHR0cF9iYXNpY19hdXRoKGhvc3QsIHJlcSwgcmVhbG0pCisrCisrICAgICAgICBpZiB1bnN1cHBvcnRlZCBpcyBub3QgTm9uZToKKysgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIgZG9lcyBub3QgIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnQgdGhlIGZvbGxvd2luZyBzY2hlbWU6ICVyIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc2NoZW1lLCkpCisgCisgICAgIGRlZiByZXRyeV9odHRwX2Jhc2ljX2F1dGgoc2VsZiwgaG9zdCwgcmVxLCByZWFsbSk6CisgICAgICAgICB1c2VyLCBwdyA9IHNlbGYucGFzc3dkLmZpbmRfdXNlcl9wYXNzd29yZChyZWFsbSwgaG9zdCkKK2RpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAyMC0wMy0yNS0xNi0wMi0xNi5icG8tMzk1MDMuWW1NYlluLnJzdCBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDIwLTAzLTI1LTE2LTAyLTE2LmJwby0zOTUwMy5ZbU1iWW4ucnN0CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uYmU4MGNlNzlkOQorLS0tIC9kZXYvbnVsbAorKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMjAtMDMtMjUtMTYtMDItMTYuYnBvLTM5NTAzLlltTWJZbi5yc3QKK0BAIC0wLDAgKzEsMyBAQAorKzpjbGFzczpgfnVybGxpYi5yZXF1ZXN0LkFic3RyYWN0QmFzaWNBdXRoSGFuZGxlcmAgb2YgOm1vZDpgdXJsbGliLnJlcXVlc3RgCisrbm93IHBhcnNlcyBhbGwgV1dXLUF1dGhlbnRpY2F0ZSBIVFRQIGhlYWRlcnMgYW5kIGFjY2VwdHMgbXVsdGlwbGUgY2hhbGxlbmdlcworK3BlciBoZWFkZXI6IHVzZSB0aGUgcmVhbG0gb2YgdGhlIGZpcnN0IEJhc2ljIGNoYWxsZW5nZS4KK2RpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L1NlY3VyaXR5LzIwMjAtMDEtMzAtMTYtMTUtMjkuYnBvLTM5NTAzLkIyOTlZcS5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L1NlY3VyaXR5LzIwMjAtMDEtMzAtMTYtMTUtMjkuYnBvLTM5NTAzLkIyOTlZcS5yc3QKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi45ZjI4MDA1ODFjCistLS0gL2Rldi9udWxsCisrKysgYi9NaXNjL05FV1MuZC9uZXh0L1NlY3VyaXR5LzIwMjAtMDEtMzAtMTYtMTUtMjkuYnBvLTM5NTAzLkIyOTlZcS5yc3QKK0BAIC0wLDAgKzEsNSBAQAorK0NWRS0yMDIwLTg0OTI6IFRoZSA6Y2xhc3M6YH51cmxsaWIucmVxdWVzdC5BYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXJgIGNsYXNzIG9mIHRoZQorKzptb2Q6YHVybGxpYi5yZXF1ZXN0YCBtb2R1bGUgdXNlcyBhbiBpbmVmZmljaWVudCByZWd1bGFyIGV4cHJlc3Npb24gd2hpY2ggY2FuCisrYmUgZXhwbG9pdGVkIGJ5IGFuIGF0dGFja2VyIHRvIGNhdXNlIGEgZGVuaWFsIG9mIHNlcnZpY2UuIEZpeCB0aGUgcmVnZXggdG8KKytwcmV2ZW50IHRoZSBjYXRhc3Ryb3BoaWMgYmFja3RyYWNraW5nLiBWdWxuZXJhYmlsaXR5IHJlcG9ydGVkIGJ5IEJlbiBDYWxsZXIKKythbmQgTWF0dCBTY2h3YWdlci4KKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9maWxlcy8wMDAxLWNvbmRpdGlvbmFsbHktZG8tbm90LWZldGNoLWNvZGUtYnktZWFzeV9pbnN0YWxsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL2ZpbGVzLzAwMDEtY29uZGl0aW9uYWxseS1kby1ub3QtZmV0Y2gtY29kZS1ieS1lYXN5X2luc3RhbGwucGF0Y2gKaW5kZXggMTY5ZDFiMS4uNWY5OWNkMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL2ZpbGVzLzAwMDEtY29uZGl0aW9uYWxseS1kby1ub3QtZmV0Y2gtY29kZS1ieS1lYXN5X2luc3RhbGwucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL2ZpbGVzLzAwMDEtY29uZGl0aW9uYWxseS1kby1ub3QtZmV0Y2gtY29kZS1ieS1lYXN5X2luc3RhbGwucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDViYmE0ZjU3ZjA0ODAxNmFhOTJjZTU5MDllOWUzNzJkYjYxOTU1NGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGE4Zjg3MWM5ZWJjNGZjYjk5ZDQxNjNiMjI2YWFiZWVmMjY1NjcwOTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUdWUsIDE3IEp1bCAyMDE4IDEwOjEzOjM4ICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIGNvbmRpdGlvbmFsbHkgZG8gbm90IGZldGNoIGNvZGUgYnkgZWFzeV9pbnN0YWxsCkBAIC0xNSwxMCArMTUsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zZXR1cHRvb2xzL2NvbW1hbmQvZWFzeV9pbnN0YWxsLnB5IGIvc2V0dXB0b29scy9jb21tYW5kL2Vhc3lfaW5zdGFsbC5weQotaW5kZXggMDU1MDhjZS4uOTQ1ZTExOCAxMDA3NTUKK2luZGV4IDQyNjMwMWQuLjU1YzgwNjIgMTAwNjQ0CiAtLS0gYS9zZXR1cHRvb2xzL2NvbW1hbmQvZWFzeV9pbnN0YWxsLnB5CiArKysgYi9zZXR1cHRvb2xzL2NvbW1hbmQvZWFzeV9pbnN0YWxsLnB5Ci1AQCAtNjQwLDYgKzY0MCwxMSBAQCBjbGFzcyBlYXN5X2luc3RhbGwoQ29tbWFuZCk6CitAQCAtNjQ5LDYgKzY0OSwxMSBAQCBjbGFzcyBlYXN5X2luc3RhbGwoQ29tbWFuZCk6CiAgICAgICAgICAgICAgb3MucGF0aC5leGlzdHModG1wZGlyKSBhbmQgcm10cmVlKHJtdHJlZV9zYWZlKHRtcGRpcikpCiAgCiAgICAgIGRlZiBlYXN5X2luc3RhbGwoc2VsZiwgc3BlYywgZGVwcz1GYWxzZSk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWN5dGhvbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWN5dGhvbi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM3ZTc5NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3l0aG9uLmluYwpAQCAtMCwwICsxLDQxIEBACitERVNDUklQVElPTiA9ICJDeXRob24gaXMgYSBsYW5ndWFnZSBzcGVjaWFsbHkgZGVzaWduZWQgZm9yIHdyaXRpbmcgUHl0aG9uIGV4dGVuc2lvbiBtb2R1bGVzLiBcCitJdCdzIGRlc2lnbmVkIHRvIGJyaWRnZSB0aGUgZ2FwIGJldHdlZW4gdGhlIG5pY2UsIGhpZ2gtbGV2ZWwsIGVhc3ktdG8tdXNlIHdvcmxkIG9mIFB5dGhvbiBcCithbmQgdGhlIG1lc3N5LCBsb3ctbGV2ZWwgd29ybGQgb2YgQy4iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1lMjNmYWRkNmNlZWY4YzYxOGZjMWM2NTE5MWQ4NDZmYSIKK1BZUElfUEFDS0FHRSA9ICJDeXRob24iCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhODk5YWJhYTQ4YjY4YmI2NzlhZWY0NWNlYjRiODlkMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMzI3NTUyODRmOTQyY2JiM2I0M2EwNmNkODU5NzRlZjNjOTcwYTAyMWFlZjE5YjUyNDNjMDNlZTJiMDhmYTA1IgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiQ3l0aG9uLSg/UDxwdmVyPi4qKVwudGFyIgorCitpbmhlcml0IHB5cGkKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCisgICAgJHtQWVRIT05fUE59LW1pc2MgXAorICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAorICAgICR7UFlUSE9OX1BOfS1wa2d1dGlsIFwKKyAgICAke1BZVEhPTl9QTn0tcHlwYXJzaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tc2V0dXB0b29scyBcCisgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKKyAgICAke1BZVEhPTl9QTn0teG1sIFwKKyIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlc2RrICs9ICJcCisgICAgbmF0aXZlc2RrLSR7UFlUSE9OX1BOfS1taXNjIFwKKyAgICBuYXRpdmVzZGstJHtQWVRIT05fUE59LW5ldHNlcnZlciBcCisgICAgbmF0aXZlc2RrLSR7UFlUSE9OX1BOfS1wa2d1dGlsIFwKKyAgICBuYXRpdmVzZGstJHtQWVRIT05fUE59LXB5cGFyc2luZyBcCisgICAgbmF0aXZlc2RrLSR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzIFwKKyAgICBuYXRpdmVzZGstJHtQWVRIT05fUE59LXNoZWxsIFwKKyAgICBuYXRpdmVzZGstJHtQWVRIT05fUE59LXhtbCBcCisiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcHl0aG9uCisJZm9yIFBZVEhTQ1JJUFQgaW4gYGdyZXAgLXJJbCAnXiMhLipweXRob24nICR7RH1gOyBkbworCQlzZWQgLWkgLWUgJzFzfF4jIS4qfCMhL3Vzci9iaW4vZW52ICR7UFlUSE9OX1BOfXwnICRQWVRIU0NSSVBUCisJZG9uZQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXRkYi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdGRiLmluYwppbmRleCA2MzM3NTJmLi4yM2VjMjk4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdGRiLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdGRiLmluYwpAQCAtOCw4ICs4LDggQEAKIAogUFlQSV9QQUNLQUdFID0gImdpdGRiMiIKIAotU1JDX1VSSVttZDVzdW1dID0gIjk0ZTU5ZTVmYjAwOTYwNTQxZjZlMTM3YjE0NTZhYjBhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgzMzYxMTMxYTE4MzY2NjFhMTU1MTcyOTMyYTEzYzA4YmRhMmRiMzY3NGU0Y2FhMzIzNjhhYTZlYjAyZjM4YzIiCitTUkNfVVJJW21kNXN1bV0gPSAiMWE3ZWEzMzYyZTQwNWY4YTU2MzRmN2VlNTM2MzYwOTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWI2ZGYxNDMzNTY3YTUxYTRhOWMxYTVhMGRlOTc3YWEzNTFhNDA1Y2M1NmQ3ZDM1ZjMzODhiYWQxZjYzMDM1MCIKIAogREVQRU5EUyA9ICIke1BZVEhPTl9QTn0tYXN5bmMgJHtQWVRIT05fUE59LXNldHVwdG9vbHMtbmF0aXZlICR7UFlUSE9OX1BOfS1zbW1hcCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvMDAwMS1weXRob24tbmF0aXZlLWZpeC1vbmUtZG9fcG9wdWxhdGVfc3lzcm9vdC13YXJuaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvMDAwMS1weXRob24tbmF0aXZlLWZpeC1vbmUtZG9fcG9wdWxhdGVfc3lzcm9vdC13YXJuaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDdlZTU5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLzAwMDEtcHl0aG9uLW5hdGl2ZS1maXgtb25lLWRvX3BvcHVsYXRlX3N5c3Jvb3Qtd2FybmluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gNmNiYjc1MjljZjdmZjBkYTNjYTY0OWZiMzQ4NmZhY2Q5NjIwZDYyNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDI1IE9jdCAyMDE4IDA3OjMyOjE0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHB5dGhvbi1uYXRpdmU6IGZpeCBvbmUgZG9fcG9wdWxhdGVfc3lzcm9vdCB3YXJuaW5nCi0KLUZpeCBiZWxvdyB3YXJuaW5nOgotV0FSTklORzogU2tpcHBpbmcgUlBBVEggL3Vzci9saWI2NCBhcyBpcyBhIHN0YW5kYXJkIHNlYXJjaCBwYXRoIGZvcgotd29yay94ODZfNjQtbGludXgvcHl0aG9uLW5hdGl2ZS8yLjcuMTUtcjEuMS9yZWNpcGUtc3lzcm9vdC1uYXRpdmUvCi11c3IvbGliL3B5dGhvbjIuNy9saWItZHlubG9hZC9fYnNkZGIuc28KLQotc2V0dXAucHkgd2lsbCBjaGVjayBkYi5oIHVuZGVyIGluY2x1ZGVfZGlycywgZm9yIG5hdGl2ZSBidWlsZCwKLS91c3IvbGliNjQgd2lsbCBiZSBpbnNlcnQgdG8gcG9zdGlvbiAwIG9mIGluY2x1ZGVfZGlycywgc28KLWl0J3MgcHJpb3JpdHkgaXMgaGlnaGVyIHRoZW4gb3VyIHN5c3Jvb3QsIGNhdXNlIGRiLmggc3lzcm9vdAotaXMgaWdub3JlZCwgYW5kIHJwYXRoIHNldCB0byAvdXNyL2xpYjY0LiBhbmQgdGhpcyBjYXVzZSB3YXJuaW5nCi13aGVuIGRvX3BvcHVsYXRlX3N5c3Jvb3QuIHVzZSBhcHBlbmQgdG8gZml4IGl0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLXNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBzZXR1cC5weSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKLWluZGV4IGEyYzgxMjcuLjIyZjllMjMgMTAwNjQ0Ci0tLS0gYS9zZXR1cC5weQotKysrIGIvc2V0dXAucHkKLUBAIC00Nyw3ICs0Nyw3IEBAIGRlZiBhZGRfZGlyX3RvX2xpc3QoZGlybGlzdCwgZGlyKToKLSAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgZGlyX2V4aXN0cyA9IG9zLnBhdGguaXNkaXIoZGlyKQotICAgICAgICAgaWYgZGlyX2V4aXN0czoKLS0gICAgICAgICAgICBkaXJsaXN0Lmluc2VydCgwLCBkaXIpCi0rICAgICAgICAgICAgZGlybGlzdC5hcHBlbmQoZGlyKQotIAotIE1BQ09TX1NES19ST09UID0gTm9uZQotIAotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvMTAtZGlzdHV0aWxzLWZpeC1zd2lnLXBhcmFtZXRlci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLzEwLWRpc3R1dGlscy1maXgtc3dpZy1wYXJhbWV0ZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzOTI0N2MuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvMTAtZGlzdHV0aWxzLWZpeC1zd2lnLXBhcmFtZXRlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0jIFNvbWUgdmVyc2lvbnMgb2YgU1dJRyBkbyBub3QgdXNlIHRoZSBleHRlbnNpb24gcGFyYW1ldGVyLgotIyBNYWtlIGl0IG9wdGlvbmFsLgotIyBTaWduZWQtT2ZmOiBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtaWNrZXlAdmFuaWxsZS1tZWRpYS5kZT4KLUluZGV4OiBQeXRob24tMi42LjEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjYuMS5vcmlnL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKLSsrKyBQeXRob24tMi42LjEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQotQEAgLTU2Niw3ICs1NjYsNyBAQCBjbGFzcyBidWlsZF9leHQgKENvbW1hbmQpOgotICAgICAgICAgICAgIHRhcmdldF9sYW5nPWxhbmd1YWdlKQotIAotIAotLSAgICBkZWYgc3dpZ19zb3VyY2VzIChzZWxmLCBzb3VyY2VzLCBleHRlbnNpb24pOgotKyAgICBkZWYgc3dpZ19zb3VyY2VzIChzZWxmLCBzb3VyY2VzLCBleHRlbnNpb249Tm9uZSk6Ci0gCi0gICAgICAgICAiIiJXYWxrIHRoZSBsaXN0IG9mIHNvdXJjZSBmaWxlcyBpbiAnc291cmNlcycsIGxvb2tpbmcgZm9yIFNXSUcKLSAgICAgICAgIGludGVyZmFjZSAoLmkpIGZpbGVzLiAgUnVuIFNXSUcgb24gYWxsIHRoYXQgYXJlIGZvdW5kLCBhbmQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLzExLWRpc3R1dGlscy1uZXZlci1tb2RpZnktc2hlYmFuZy1saW5lLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvMTEtZGlzdHV0aWxzLW5ldmVyLW1vZGlmeS1zaGViYW5nLWxpbmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5MjQ2OWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvMTEtZGlzdHV0aWxzLW5ldmVyLW1vZGlmeS1zaGViYW5nLWxpbmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIyBEb24ndCBtb2RpZnkgdGhlIHNoZS1iYW5nIGxpbmUgZm9yIGEgY3Jvc3MtYnVpbGQuCi0jIE90aGVyd2lzZSBpdCBwb2ludHMgdG8gb3VyIGhvc3RweXRob24gKHdoaWNoIHdlIGRvIG5vdCB3YW50KQotIwotIyBTaWduZWQtT2ZmOiBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtaWNrZXlAdmFuaWxsZS1tZWRpYS5kZT4KLQotSW5kZXg6IFB5dGhvbi0yLjYuMS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjYuMS5vcmlnL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5Ci0rKysgUHl0aG9uLTIuNi4xL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5Ci1AQCAtODcsNyArODcsNyBAQCBjbGFzcyBidWlsZF9zY3JpcHRzIChDb21tYW5kKToKLSAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gCi0gICAgICAgICAgICAgICAgIG1hdGNoID0gZmlyc3RfbGluZV9yZS5tYXRjaChmaXJzdF9saW5lKQotLSAgICAgICAgICAgICAgICBpZiBtYXRjaDoKLSsgICAgICAgICAgICAgICAgaWYgRmFsc2U6ICNtYXRjaDoKLSAgICAgICAgICAgICAgICAgICAgIGFkanVzdCA9IDEKLSAgICAgICAgICAgICAgICAgICAgIHBvc3RfaW50ZXJwID0gbWF0Y2guZ3JvdXAoMSkgb3IgJycKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL211bHRpbGliLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvbXVsdGlsaWIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmMGYxNzMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvbXVsdGlsaWIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMzUgKzAsMCBAQAotUmViYXNlZCBmb3IgUHl0aG9uIDIuNy45Ci0KLVNpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPgotCi0yMDExLzA5LzI5Ci1UaGUgcHl0aG9uIHJlY2lwZSBidWlsZGluZyB3YXMgZmFpbGluZyBiZWNhdXNlIHB5dGhvbi1uYXRpdmUgCi1jb3VsZCBub3QgaGFuZGxlIHN5cy5saWIgdmFyLiBzeXMubGliIHZhciBpcyBkZWZpbmVkIGluIHRoZSAKLW11bHRpbGliIHBhdGNoIGhlbmNlIGFkZGVkIHRoaXMgbXVsdGlsaWIucGF0Y2ggZm9yIHB5dGhvbi1uYXRpdmUgCi1yZWNpcGUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Utc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0KLUluZGV4OiBQeXRob24tMi43LjE0L0luY2x1ZGUvcHl0aG9ucnVuLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvSW5jbHVkZS9weXRob25ydW4uaAotKysrIFB5dGhvbi0yLjcuMTQvSW5jbHVkZS9weXRob25ydW4uaAotQEAgLTEwOCw2ICsxMDgsNyBAQCBQeUFQSV9GVU5DKGNoYXIgKikgUHlfR2V0UGF0aCh2b2lkKTsKLSAvKiBJbiB0aGVpciBvd24gZmlsZXMgKi8KLSBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0VmVyc2lvbih2b2lkKTsKLSBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0UGxhdGZvcm0odm9pZCk7Ci0rUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldExpYih2b2lkKTsKLSBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0Q29weXJpZ2h0KHZvaWQpOwotIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRDb21waWxlcih2b2lkKTsKLSBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0QnVpbGRJbmZvKHZvaWQpOwotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKLSsrKyBQeXRob24tMi43LjE0L0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5Ci1AQCAtMjIsNiArMjIsOCBAQCBmcm9tIHNpdGUgaW1wb3J0IFVTRVJfQkFTRQotIGZyb20gc2l0ZSBpbXBvcnQgVVNFUl9TSVRFCi0gCi0gCi0rbGlibmFtZSA9IHN5cy5saWIKLSsKLSBpZiBzeXMudmVyc2lvbiA8ICIyLjIiOgotICAgICBXSU5ET1dTX1NDSEVNRSA9IHsKLSAgICAgICAgICdwdXJlbGliJzogJyRiYXNlJywKLUBAIC00Miw3ICs0NCw3IEBAIGVsc2U6Ci0gSU5TVEFMTF9TQ0hFTUVTID0gewotICAgICAndW5peF9wcmVmaXgnOiB7Ci0gICAgICAgICAncHVyZWxpYic6ICckYmFzZS9saWIvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCi0tICAgICAgICAncGxhdGxpYic6ICckcGxhdGJhc2UvbGliL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAotKyAgICAgICAgJ3BsYXRsaWInOiAnJHBsYXRiYXNlLycrbGlibmFtZSsnL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAotICAgICAgICAgJ2hlYWRlcnMnOiAnJGJhc2UvaW5jbHVkZS9weXRob24kcHlfdmVyc2lvbl9zaG9ydC8kZGlzdF9uYW1lJywKLSAgICAgICAgICdzY3JpcHRzJzogJyRiYXNlL2JpbicsCi0gICAgICAgICAnZGF0YScgICA6ICckYmFzZScsCi1JbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvcHlkb2MucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL3B5ZG9jLnB5Ci0rKysgUHl0aG9uLTIuNy4xNC9MaWIvcHlkb2MucHkKLUBAIC0zNzUsNyArMzc1LDcgQEAgY2xhc3MgRG9jOgotICAgICBkb2Ntb2R1bGUgPSBkb2NjbGFzcyA9IGRvY3JvdXRpbmUgPSBkb2NvdGhlciA9IGRvY3Byb3BlcnR5ID0gZG9jZGF0YSA9IGZhaWwKLSAKLSAgICAgZGVmIGdldGRvY2xvYyhzZWxmLCBvYmplY3QsCi0tICAgICAgICAgICAgICAgICAgYmFzZWRpcj1vcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAibGliIiwKLSsgICAgICAgICAgICAgICAgICBiYXNlZGlyPW9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICJzeXMubGliIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIitzeXMudmVyc2lvblswOjNdKSk6Ci0gICAgICAgICAiIiJSZXR1cm4gdGhlIGxvY2F0aW9uIG9mIG1vZHVsZSBkb2NzIG9yIE5vbmUiIiIKLSAKLUluZGV4OiBQeXRob24tMi43LjE0L0xpYi9zaXRlLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi9zaXRlLnB5Ci0rKysgUHl0aG9uLTIuNy4xNC9MaWIvc2l0ZS5weQotQEAgLTI4OCwxMyArMjg4LDE5IEBAIGRlZiBnZXRzaXRlcGFja2FnZXMoKToKLSAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ29zMmVteCcsICdyaXNjb3MnKToKLSAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJMaWIiLCAic2l0ZS1wYWNrYWdlcyIpKQotICAgICAgICAgZWxpZiBvcy5zZXAgPT0gJy8nOgotLSAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsCi0rICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCBzeXMubGliLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpdGUtcGFja2FnZXMiKSkKLS0gICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLCAic2l0ZS1weXRob24iKSkKLSsgICAgICAgICAgICBpZiBzeXMubGliICE9ICJsaWIiOgotKyAgICAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpdGUtcGFja2FnZXMiKSkKLSsgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsIHN5cy5saWIsICJzaXRlLXB5dGhvbiIpKQotKyAgICAgICAgICAgIGlmIHN5cy5saWIgIT0gImxpYiI6Ci0rICAgICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsICJzaXRlLXB5dGhvbiIpKQotICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKHByZWZpeCkKLS0gICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLCAic2l0ZS1wYWNrYWdlcyIpKQotKyAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgc3lzLmxpYiwgInNpdGUtcGFja2FnZXMiKSkKLSAgICAgcmV0dXJuIHNpdGVwYWNrYWdlcwotIAotIGRlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMpOgotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3Rlc3QvdGVzdF9kbC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvdGVzdC90ZXN0X2RsLnB5Ci0rKysgUHl0aG9uLTIuNy4xNC9MaWIvdGVzdC90ZXN0X2RsLnB5Ci1AQCAtNCwxMCArNCwxMSBAQAotIGltcG9ydCB1bml0dGVzdAotIGZyb20gdGVzdC50ZXN0X3N1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIGltcG9ydF9tb2R1bGUKLSBkbCA9IGltcG9ydF9tb2R1bGUoJ2RsJywgZGVwcmVjYXRlZD1UcnVlKQotK2ltcG9ydCBzeXMKLSAKLSBzaGFyZWRsaWJzID0gWwotLSAgICAoJy91c3IvbGliL2xpYmMuc28nLCAnZ2V0cGlkJyksCi0tICAgICgnL2xpYi9saWJjLnNvLjYnLCAnZ2V0cGlkJyksCi0rICAgICgnL3Vzci8nK3N5cy5saWIrJy9saWJjLnNvJywgJ2dldHBpZCcpLAotKyAgICAoJy8nK3N5cy5saWIrJy9saWJjLnNvLjYnLCAnZ2V0cGlkJyksCi0gICAgICgnL3Vzci9iaW4vY3lnd2luMS5kbGwnLCAnZ2V0cGlkJyksCi0gICAgICgnL3Vzci9saWIvbGliYy5keWxpYicsICdnZXRwaWQnKSwKLSAgICAgXQotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3RyYWNlLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi90cmFjZS5weQotKysrIFB5dGhvbi0yLjcuMTQvTGliL3RyYWNlLnB5Ci1AQCAtNzU0LDEwICs3NTQsMTAgQEAgZGVmIG1haW4oYXJndj1Ob25lKToKLSAgICAgICAgICAgICAgICAgIyBzaG91bGQgSSBhbHNvIGNhbGwgZXhwYW5kdXNlcj8gKGFmdGVyIGFsbCwgY291bGQgdXNlICRIT01FKQotIAotICAgICAgICAgICAgICAgICBzID0gcy5yZXBsYWNlKCIkcHJlZml4IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgImxpYiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsIHN5cy5saWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKLSAgICAgICAgICAgICAgICAgcyA9IHMucmVwbGFjZSgiJGV4ZWNfcHJlZml4IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAibGliIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCBzeXMubGliLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSkpCi0gICAgICAgICAgICAgICAgIHMgPSBvcy5wYXRoLm5vcm1wYXRoKHMpCi0gICAgICAgICAgICAgICAgIGlnbm9yZV9kaXJzLmFwcGVuZChzKQotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTWFrZWZpbGUucHJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL01ha2VmaWxlLnByZS5pbgotKysrIFB5dGhvbi0yLjcuMTQvTWFrZWZpbGUucHJlLmluCi1AQCAtOTEsNiArOTEsNyBAQCBQWV9DRkxBR1M9CSQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAkKENGTEFHCi0gCi0gIyBNYWNoaW5lLWRlcGVuZGVudCBzdWJkaXJlY3RvcmllcwotIE1BQ0hERVA9CUBNQUNIREVQQAotK0xJQj0JCUBMSUJACi0gCi0gIyBNdWx0aWFyY2ggZGlyZWN0b3J5IChtYXkgYmUgZW1wdHkpCi0gTVVMVElBUkNIPQlATVVMVElBUkNIQAotQEAgLTExMCw3ICsxMTEsNyBAQCBMSUJESVI9CQlAbGliZGlyQAotIE1BTkRJUj0JCUBtYW5kaXJACi0gSU5DTFVERURJUj0JQGluY2x1ZGVkaXJACi0gQ09ORklOQ0xVREVESVI9CSQoZXhlY19wcmVmaXgpL2luY2x1ZGUKLS1TQ1JJUFRESVI9CSQocHJlZml4KS9saWIKLStTQ1JJUFRESVI9CSQocHJlZml4KS9ATElCQAotIAotICMgRGV0YWlsZWQgZGVzdGluYXRpb24gZGlyZWN0b3JpZXMKLSBCSU5MSUJERVNUPQkkKExJQkRJUikvcHl0aG9uJChWRVJTSU9OKQotQEAgLTY0NCw2ICs2NDUsNyBAQCBNb2R1bGVzL2dldHBhdGgubzogJChzcmNkaXIpL01vZHVsZXMvZ2V0Ci0gCQktREVYRUNfUFJFRklYPSciJChleGVjX3ByZWZpeCkiJyBcCi0gCQktRFZFUlNJT049JyIkKFZFUlNJT04pIicgXAotIAkJLURWUEFUSD0nIiQoVlBBVEgpIicgXAotKwkJLURMSUI9JyIkKExJQikiJyBcCi0gCQktbyAkQCAkKHNyY2RpcikvTW9kdWxlcy9nZXRwYXRoLmMKLSAKLSBNb2R1bGVzL3B5dGhvbi5vOiAkKHNyY2RpcikvTW9kdWxlcy9weXRob24uYwotQEAgLTY5Miw3ICs2OTQsNyBAQCByZWdlbi1hc3Q6Ci0gUHl0aG9uL2NvbXBpbGUubyBQeXRob24vc3ltdGFibGUubyBQeXRob24vYXN0Lm86ICQoc3JjZGlyKS9JbmNsdWRlL2dyYW1pbml0LmggJChzcmNkaXIpL0luY2x1ZGUvUHl0aG9uLWFzdC5oCi0gCi0gUHl0aG9uL2dldHBsYXRmb3JtLm86ICQoc3JjZGlyKS9QeXRob24vZ2V0cGxhdGZvcm0uYwotLQkJJChDQykgLWMgJChQWV9DRkxBR1MpIC1EUExBVEZPUk09JyIkKE1BQ0hERVApIicgLW8gJEAgJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi0rCQkkKENDKSAtYyAkKFBZX0NGTEFHUykgLURQTEFURk9STT0nIiQoTUFDSERFUCkiJyAtRExJQj0nIiQoTElCKSInIC1vICRAICQoc3JjZGlyKS9QeXRob24vZ2V0cGxhdGZvcm0uYwotIAotIFB5dGhvbi9pbXBvcnRkbC5vOiAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKLSAJCSQoQ0MpIC1jICQoUFlfQ0ZMQUdTKSAtSSQoRExJTkNMRElSKSAtbyAkQCAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKLUluZGV4OiBQeXRob24tMi43LjE0L01vZHVsZXMvZ2V0cGF0aC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL01vZHVsZXMvZ2V0cGF0aC5jCi0rKysgUHl0aG9uLTIuNy4xNC9Nb2R1bGVzL2dldHBhdGguYwotQEAgLTEwMCw2ICsxMDAsMTMgQEAKLSAjZXJyb3IgIlBSRUZJWCwgRVhFQ19QUkVGSVgsIFZFUlNJT04sIGFuZCBWUEFUSCBtdXN0IGJlIGNvbnN0YW50IGRlZmluZWQiCi0gI2VuZGlmCi0gCi0rI2RlZmluZSBMSUJfUFlUSE9OIExJQiAiL3B5dGhvbiIgVkVSU0lPTgotKwotKyNpZm5kZWYgUFlUSE9OUEFUSAotKyNkZWZpbmUgUFlUSE9OUEFUSCBQUkVGSVggIi8iIExJQl9QWVRIT04gIjoiIFwKLSsgICAgICAgIEVYRUNfUFJFRklYICIvIiBMSUJfUFlUSE9OICIvbGliLWR5bmxvYWQiCi0rI2VuZGlmCi0rCi0gI2lmbmRlZiBMQU5ETUFSSwotICNkZWZpbmUgTEFORE1BUksgIm9zLnB5IgotICNlbmRpZgotQEAgLTEwOCw3ICsxMTUsNyBAQCBzdGF0aWMgY2hhciBwcmVmaXhbTUFYUEFUSExFTisxXTsKLSBzdGF0aWMgY2hhciBleGVjX3ByZWZpeFtNQVhQQVRITEVOKzFdOwotIHN0YXRpYyBjaGFyIHByb2dwYXRoW01BWFBBVEhMRU4rMV07Ci0gc3RhdGljIGNoYXIgKm1vZHVsZV9zZWFyY2hfcGF0aCA9IE5VTEw7Ci0tc3RhdGljIGNoYXIgbGliX3B5dGhvbltdID0gImxpYi9weXRob24iIFZFUlNJT047Ci0rc3RhdGljIGNoYXIgbGliX3B5dGhvbltdID0gTElCX1BZVEhPTjsKLSAKLSBzdGF0aWMgdm9pZAotIHJlZHVjZShjaGFyICpkaXIpCi1JbmRleDogUHl0aG9uLTIuNy4xNC9QeXRob24vZ2V0cGxhdGZvcm0uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9QeXRob24vZ2V0cGxhdGZvcm0uYwotKysrIFB5dGhvbi0yLjcuMTQvUHl0aG9uL2dldHBsYXRmb3JtLmMKLUBAIC0xMCwzICsxMCwxMyBAQCBQeV9HZXRQbGF0Zm9ybSh2b2lkKQotIHsKLSAJcmV0dXJuIFBMQVRGT1JNOwotIH0KLSsKLSsjaWZuZGVmIExJQgotKyNkZWZpbmUgTElCICJsaWIiCi0rI2VuZGlmCi0rCi0rY29uc3QgY2hhciAqCi0rUHlfR2V0TGliKHZvaWQpCi0rewotKwlyZXR1cm4gTElCOwotK30KLUluZGV4OiBQeXRob24tMi43LjE0L1B5dGhvbi9zeXNtb2R1bGUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9QeXRob24vc3lzbW9kdWxlLmMKLSsrKyBQeXRob24tMi43LjE0L1B5dGhvbi9zeXNtb2R1bGUuYwotQEAgLTE0MzcsNiArMTQzNyw4IEBAIF9QeVN5c19Jbml0KHZvaWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlTdHJpbmdfRnJvbVN0cmluZyhQeV9HZXRDb3B5cmlnaHQoKSkpOwotICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJwbGF0Zm9ybSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlTdHJpbmdfRnJvbVN0cmluZyhQeV9HZXRQbGF0Zm9ybSgpKSk7Ci0rICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImxpYiIsCi0rICAgICAgICAgICAgICAgIFB5U3RyaW5nX0Zyb21TdHJpbmcoUHlfR2V0TGliKCkpKTsKLSAgICAgU0VUX1NZU19GUk9NX1NUUklORygiZXhlY3V0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlTdHJpbmdfRnJvbVN0cmluZyhQeV9HZXRQcm9ncmFtRnVsbFBhdGgoKSkpOwotICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJwcmVmaXgiLAotSW5kZXg6IFB5dGhvbi0yLjcuMTQvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIFB5dGhvbi0yLjcuMTQvY29uZmlndXJlLmFjCi1AQCAtNzU4LDYgKzc1OCwxMSBAQCBTdW5PUyopCi0gICAgIDs7Ci0gZXNhYwotIAotK0FDX1NVQlNUKExJQikKLStBQ19NU0dfQ0hFQ0tJTkcoTElCKQotK0xJQj1gYmFzZW5hbWUgJHtsaWJkaXJ9YAotK0FDX01TR19SRVNVTFQoJExJQikKLSsKLSAKLSBBQ19TVUJTVChMSUJSQVJZKQotIEFDX01TR19DSEVDS0lORyhMSUJSQVJZKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvbm9ob3N0bGlicy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL25vaG9zdGxpYnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3ODA2MGIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvbm9ob3N0bGlicy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLTIwMTQvMTIvMTUKLVJlYmFzZWQgZm9yIHB5dGhvbi0yLjcuOQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPgotCi1JbmRleDogUHl0aG9uLTIuNy45L3NldHVwLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvc2V0dXAucHkKLSsrKyBQeXRob24tMi43Ljkvc2V0dXAucHkKLUBAIC00MzksOSArNDM5LDkgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotIAotICAgICBkZWYgZGV0ZWN0X21vZHVsZXMoc2VsZik6Ci0gICAgICAgICAjIEVuc3VyZSB0aGF0IC91c3IvbG9jYWwgaXMgYWx3YXlzIHVzZWQKLS0gICAgICAgIGlmIG5vdCBjcm9zc19jb21waWxpbmc6Ci0tICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzLCAnL3Vzci9sb2NhbC9saWInKQotLSAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycywgJy91c3IvbG9jYWwvaW5jbHVkZScpCi0rICAgICAgICAjIGlmIG5vdCBjcm9zc19jb21waWxpbmc6Ci0rICAgICAgICAgICAgIyBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMsICcvdXNyL2xvY2FsL2xpYicpCi0rICAgICAgICAgICAgIyBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMsICcvdXNyL2xvY2FsL2luY2x1ZGUnKQotICAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgotICAgICAgICAgICAgIHNlbGYuYWRkX2djY19wYXRocygpCi0gICAgICAgICBzZWxmLmFkZF9tdWx0aWFyY2hfcGF0aHMoKQotQEAgLTQ4MCwxNSArNDgwLDE1IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgICAgICAgICAgICAgIGZvciBkaXJlY3RvcnkgaW4gcmV2ZXJzZWQob3B0aW9ucy5kaXJzKToKLSAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3QoZGlyX2xpc3QsIGRpcmVjdG9yeSkKLSAKLS0gICAgICAgIGlmIG9zLnBhdGgubm9ybXBhdGgoc3lzLnByZWZpeCkgIT0gJy91c3InIFwKLS0gICAgICAgICAgICAgICAgYW5kIG5vdCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1BZVEhPTkZSQU1FV09SSycpOgotKyAgICAgICAgI2lmIG9zLnBhdGgubm9ybXBhdGgoc3lzLnByZWZpeCkgIT0gJy91c3InIFwKLSsgICAgICAgICAgICAgICAgI2FuZCBub3Qgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdQWVRIT05GUkFNRVdPUksnKToKLSAgICAgICAgICAgICAjIE9TWCBub3RlOiBEb24ndCBhZGQgTElCRElSIGFuZCBJTkNMVURFRElSIHRvIGJ1aWxkaW5nIGEgZnJhbWV3b3JrCi0gICAgICAgICAgICAgIyAoUFlUSE9ORlJBTUVXT1JLIGlzIHNldCkgdG8gYXZvaWQgIyBsaW5raW5nIHByb2JsZW1zIHdoZW4KLSAgICAgICAgICAgICAjIGJ1aWxkaW5nIGEgZnJhbWV3b3JrIHdpdGggZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMgdGhhbgotICAgICAgICAgICAgICMgdGhlIG9uZSB0aGF0IGlzIGN1cnJlbnRseSBpbnN0YWxsZWQgKGlzc3VlICM3NDczKQotLSAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlycywKLSsgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJMSUJESVIiKSkKLS0gICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMsCi0rICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiSU5DTFVERURJUiIpKQotIAotICAgICAgICAgdHJ5OgotQEAgLTc2MSw4ICs3NjEsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICAgICAgICAgIHBhc3MgIyBJc3N1ZSA3Mzg0OiBBbHJlYWR5IGxpbmtlZCBhZ2FpbnN0IGN1cnNlcyBvciB0aW5mby4KLSAgICAgICAgICAgICBlbGlmIGN1cnNlc19saWJyYXJ5OgotICAgICAgICAgICAgICAgICByZWFkbGluZV9saWJzLmFwcGVuZChjdXJzZXNfbGlicmFyeSkKLS0gICAgICAgICAgICBlbGlmIHNlbGYuY29tcGlsZXIuZmluZF9saWJyYXJ5X2ZpbGUobGliX2RpcnMgKwotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycvdXNyL2xpYi90ZXJtY2FwJ10sCi0rICAgICAgICAgICAgZWxpZiBzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlcm1jYXAnKToKLSAgICAgICAgICAgICAgICAgcmVhZGxpbmVfbGlicy5hcHBlbmQoJ3Rlcm1jYXAnKQotICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3JlYWRsaW5lJywgWydyZWFkbGluZS5jJ10sCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS9yZXZlcnRfdXNlX29mX3N5c2NvbmZpZ2RhdGEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS9yZXZlcnRfdXNlX29mX3N5c2NvbmZpZ2RhdGEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMmFhZjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvcmV2ZXJ0X3VzZV9vZl9zeXNjb25maWdkYXRhLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotT24gb2xkZXIgdmVyc2lvbnMgb2YgUHl0aG9uLCBzeXNjb25maWcgcmVhZCB0aGUgZGF0YSBmcm9tIGJvdGggdGhlIE1ha2VmaWxlIGFuZAotdGhlIFB5dGhvbi5oIGZpbGUgZ2VuZXJhdGVkIGF0IGJ1aWxkIHRpbWUsIGNyZWF0ZWQgZGljdGlvbmFyaWVzIHdpdGggdGhlaXIgdmFyaWFibGVzCi1hbmQgdXNlZCB0aG9zZSB3aGVuIHVzaW5nIGdldF9jb25maWdfdmFyKCksIG5vdyBpdCB1c2VzIF9zeXNjb25maWdkYXRhLmJ1aWxkX3RpbWVfdmFyc1tdCi13aGljaCBjb250YWlucyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBIT1NULCBlcnJvbmVvdXMgaW4gb3VyIGNhc2UsIHRoaXMgcGF0Y2ggcmV2ZXJ0cyB0aGlzCi1iZWhhdmlvciBhbmQgdXNlcyBQeXRob24uaCBhbmQgTWFrZWZpbGUgdG8gZ2V0IGluZm9ybWF0aW9uLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLXNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4KLQotSW5kZXg6IFB5dGhvbi0yLjcuOS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuOS5vcmlnL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci0rKysgUHl0aG9uLTIuNy45L0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci1AQCAtNDAxLDEyICs0MDEsNjYgQEAgX2NvbmZpZ192YXJzID0gTm9uZQotIAotIGRlZiBfaW5pdF9wb3NpeCgpOgotICAgICAiIiJJbml0aWFsaXplIHRoZSBtb2R1bGUgYXMgYXBwcm9wcmlhdGUgZm9yIFBPU0lYIHN5c3RlbXMuIiIiCi0tICAgICMgX3N5c2NvbmZpZ2RhdGEgaXMgZ2VuZXJhdGVkIGF0IGJ1aWxkIHRpbWUsIHNlZSB0aGUgc3lzY29uZmlnIG1vZHVsZQotLSAgICBmcm9tIF9zeXNjb25maWdkYXRhIGltcG9ydCBidWlsZF90aW1lX3ZhcnMKLS0gICAgZ2xvYmFsIF9jb25maWdfdmFycwotLSAgICBfY29uZmlnX3ZhcnMgPSB7fQotLSAgICBfY29uZmlnX3ZhcnMudXBkYXRlKGJ1aWxkX3RpbWVfdmFycykKLSsgICAgZyA9IHt9Ci0rICAgICMgbG9hZCB0aGUgaW5zdGFsbGVkIE1ha2VmaWxlOgotKyAgICB0cnk6Ci0rICAgICAgICBmaWxlbmFtZSA9IGdldF9tYWtlZmlsZV9maWxlbmFtZSgpCi0rICAgICAgICBwYXJzZV9tYWtlZmlsZShmaWxlbmFtZSwgZykKLSsgICAgZXhjZXB0IElPRXJyb3IsIG1zZzoKLSsgICAgICAgIG15X21zZyA9ICJpbnZhbGlkIFB5dGhvbiBpbnN0YWxsYXRpb246IHVuYWJsZSB0byBvcGVuICVzIiAlIGZpbGVuYW1lCi0rICAgICAgICBpZiBoYXNhdHRyKG1zZywgInN0cmVycm9yIik6Ci0rICAgICAgICAgICAgbXlfbXNnID0gbXlfbXNnICsgIiAoJXMpIiAlIG1zZy5zdHJlcnJvcgotKwotKyAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcihteV9tc2cpCi0rCi0rICAgICMgbG9hZCB0aGUgaW5zdGFsbGVkIHB5Y29uZmlnLmg6Ci0rICAgIHRyeToKLSsgICAgICAgIGZpbGVuYW1lID0gZ2V0X2NvbmZpZ19oX2ZpbGVuYW1lKCkKLSsgICAgICAgIHBhcnNlX2NvbmZpZ19oKGZpbGUoZmlsZW5hbWUpLCBnKQotKyAgICBleGNlcHQgSU9FcnJvciwgbXNnOgotKyAgICAgICAgbXlfbXNnID0gImludmFsaWQgUHl0aG9uIGluc3RhbGxhdGlvbjogdW5hYmxlIHRvIG9wZW4gJXMiICUgZmlsZW5hbWUKLSsgICAgICAgIGlmIGhhc2F0dHIobXNnLCAic3RyZXJyb3IiKToKLSsgICAgICAgICAgICBteV9tc2cgPSBteV9tc2cgKyAiICglcykiICUgbXNnLnN0cmVycm9yCi0rCi0rICAgICAgICByYWlzZSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yKG15X21zZykKLSsKLSsgICAgIyBPbiBBSVgsIHRoZXJlIGFyZSB3cm9uZyBwYXRocyB0byB0aGUgbGlua2VyIHNjcmlwdHMgaW4gdGhlIE1ha2VmaWxlCi0rICAgICMgLS0gdGhlc2UgcGF0aHMgYXJlIHJlbGF0aXZlIHRvIHRoZSBQeXRob24gc291cmNlLCBidXQgd2hlbiBpbnN0YWxsZWQKLSsgICAgIyB0aGUgc2NyaXB0cyBhcmUgaW4gYW5vdGhlciBkaXJlY3RvcnkuCi0rICAgIGlmIHB5dGhvbl9idWlsZDoKLSsgICAgICAgIGdbJ0xEU0hBUkVEJ10gPSBnWydCTERTSEFSRUQnXQotIAotKyAgICBlbGlmIGdldF9weXRob25fdmVyc2lvbigpIDwgJzIuMSc6Ci0rICAgICAgICAjIFRoZSBmb2xsb3dpbmcgdHdvIGJyYW5jaGVzIGFyZSBmb3IgMS41LjIgY29tcGF0aWJpbGl0eS4KLSsgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnYWl4NCc6ICAgICAgICAgICMgd2hhdCBhYm91dCBBSVggMy54ID8KLSsgICAgICAgICAgICAjIExpbmtlciBzY3JpcHQgaXMgaW4gdGhlIGNvbmZpZyBkaXJlY3RvcnksIG5vdCBpbiBNb2R1bGVzIGFzIHRoZQotKyAgICAgICAgICAgICMgTWFrZWZpbGUgc2F5cy4KLSsgICAgICAgICAgICBweXRob25fbGliID0gZ2V0X3B5dGhvbl9saWIoc3RhbmRhcmRfbGliPTEpCi0rICAgICAgICAgICAgbGRfc29fYWl4ID0gb3MucGF0aC5qb2luKHB5dGhvbl9saWIsICdjb25maWcnLCAnbGRfc29fYWl4JykKLSsgICAgICAgICAgICBweXRob25fZXhwID0gb3MucGF0aC5qb2luKHB5dGhvbl9saWIsICdjb25maWcnLCAncHl0aG9uLmV4cCcpCi0rCi0rICAgICAgICAgICAgZ1snTERTSEFSRUQnXSA9ICIlcyAlcyAtYkk6JXMiICUgKGxkX3NvX2FpeCwgZ1snQ0MnXSwgcHl0aG9uX2V4cCkKLSsKLSsgICAgICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICdiZW9zJzoKLSsgICAgICAgICAgICAjIExpbmtlciBzY3JpcHQgaXMgaW4gdGhlIGNvbmZpZyBkaXJlY3RvcnkuICBJbiB0aGUgTWFrZWZpbGUgaXQgaXMKLSsgICAgICAgICAgICAjIHJlbGF0aXZlIHRvIHRoZSBzcmNkaXIsIHdoaWNoIGFmdGVyIGluc3RhbGxhdGlvbiBubyBsb25nZXIgbWFrZXMKLSsgICAgICAgICAgICAjIHNlbnNlLgotKyAgICAgICAgICAgIHB5dGhvbl9saWIgPSBnZXRfcHl0aG9uX2xpYihzdGFuZGFyZF9saWI9MSkKLSsgICAgICAgICAgICBsaW5rZXJzY3JpcHRfcGF0aCA9IHN0cmluZy5zcGxpdChnWydMRFNIQVJFRCddKVswXQotKyAgICAgICAgICAgIGxpbmtlcnNjcmlwdF9uYW1lID0gb3MucGF0aC5iYXNlbmFtZShsaW5rZXJzY3JpcHRfcGF0aCkKLSsgICAgICAgICAgICBsaW5rZXJzY3JpcHQgPSBvcy5wYXRoLmpvaW4ocHl0aG9uX2xpYiwgJ2NvbmZpZycsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtlcnNjcmlwdF9uYW1lKQotKwotKyAgICAgICAgICAgICMgWFhYIHRoaXMgaXNuJ3QgdGhlIHJpZ2h0IHBsYWNlIHRvIGRvIHRoaXM6IGFkZGluZyB0aGUgUHl0aG9uCi0rICAgICAgICAgICAgIyBsaWJyYXJ5IHRvIHRoZSBsaW5rLCBpZiBuZWVkZWQsIHNob3VsZCBiZSBpbiB0aGUgImJ1aWxkX2V4dCIKLSsgICAgICAgICAgICAjIGNvbW1hbmQuICAoSXQncyBhbHNvIG5lZWRlZCBmb3Igbm9uLU1TIGNvbXBpbGVycyBvbiBXaW5kb3dzLCBhbmQKLSsgICAgICAgICAgICAjIGl0J3MgdGFrZW4gY2FyZSBvZiBmb3IgdGhlbSBieSB0aGUgJ2J1aWxkX2V4dC5nZXRfbGlicmFyaWVzKCknCi0rICAgICAgICAgICAgIyBtZXRob2QuKQotKyAgICAgICAgICAgIGdbJ0xEU0hBUkVEJ10gPSAoIiVzIC1MJXMvbGliIC1scHl0aG9uJXMiICUKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rZXJzY3JpcHQsIFBSRUZJWCwgZ2V0X3B5dGhvbl92ZXJzaW9uKCkpKQotKwotKyAgICBnbG9iYWwgX2NvbmZpZ192YXJzCi0rICAgIF9jb25maWdfdmFycyA9IGcKLSAKLSBkZWYgX2luaXRfbnQoKToKLSAgICAgIiIiSW5pdGlhbGl6ZSB0aGUgbW9kdWxlIGFzIGFwcHJvcHJpYXRlIGZvciBOVCIiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvdW5peGNjb21waWxlci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL3VuaXhjY29tcGlsZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1MDI4MjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvdW5peGNjb21waWxlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1UaGUgQ0MgdmFyaWFibGUsc29tZXRpbWVzIGxpa2U6Ing4Nl82NC1wb2t5LWxpbnV4LWdjYyAgIC1tNjQgLS1zeXNyb290PS8ke1RNUERJUn0vc3lzcm9vdHMvcWVtdXg4Ni02NCIsIGNvbnRhaW5zIG9wdGlvbiBpbmZvcm1hdGlvbi4gCi1UaGlzIHdpbGwgbGVhZCB0byB3cm9uZyBjb21waWxlciBuYW1lICJxZW11eDg2LTY0IiByYXRoZXIgdGhhbiAieDg2XzY0LXBva3ktbGludXgtZ2NjIiB3aGVuIHB5dGhvbiBmaW5kaW5nIHRoZSBjb21waWxlciBuYW1lLgotCi1TaWduZWQtb2ZmLWJ5OiBNZWkgTGVpIDxsZWkubWVpQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1JbmRleDogUHl0aG9uLTIuNy4yL0xpYi9kaXN0dXRpbHMvdW5peGNjb21waWxlci5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMi5vcmlnL0xpYi9kaXN0dXRpbHMvdW5peGNjb21waWxlci5weQkyMDExLTExLTI0IDEzOjUxOjEwLjUzOTk5ODcyMiAtMDgwMAotKysrIFB5dGhvbi0yLjcuMi9MaWIvZGlzdHV0aWxzL3VuaXhjY29tcGlsZXIucHkJMjAxMS0xMS0yNCAxNTo1NDozNi44NzIxMzc3NjYgLTA4MDAKLUBAIC0yODIsNyArMjgyLDcgQEAKLSAgICAgICAgICMgdGhpcyB0aW1lLCB0aGVyZSdzIG5vIHdheSB0byBkZXRlcm1pbmUgdGhpcyBpbmZvcm1hdGlvbiBmcm9tCi0gICAgICAgICAjIHRoZSBjb25maWd1cmF0aW9uIGRhdGEgc3RvcmVkIGluIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uLCBzbwotICAgICAgICAgIyB3ZSB1c2UgdGhpcyBoYWNrLgotLSAgICAgICAgY29tcGlsZXIgPSBvcy5wYXRoLmJhc2VuYW1lKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ0MiKSkKLSsgICAgICAgIGNvbXBpbGVyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDQyIpCi0gICAgICAgICBpZiBzeXMucGxhdGZvcm1bOjZdID09ICJkYXJ3aW4iOgotICAgICAgICAgICAgICMgTWFjT1NYJ3MgbGlua2VyIGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGUgLVIgZmxhZyBhdCBhbGwKLSAgICAgICAgICAgICByZXR1cm4gIi1MIiArIGRpcgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmVfMi43LjE3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmVfMi43LjE3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzY4MTBkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlXzIuNy4xNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLmluYwotRVhUUkFOQVRJVkVQQVRIICs9ICJiemlwMi1uYXRpdmUiCi1ERVBFTkRTID0gIm9wZW5zc2wtbmF0aXZlIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSB6bGliLW5hdGl2ZSByZWFkbGluZS1uYXRpdmUgc3FsaXRlMy1uYXRpdmUgZXhwYXQtbmF0aXZlIGdkYm0tbmF0aXZlIGRiLW5hdGl2ZSIKLQotU1JDX1VSSSArPSAiXAotICAgICAgICAgICAgZmlsZTovLzA1LWVuYWJsZS1jdHlwZXMtY3Jvc3MtYnVpbGQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzEwLWRpc3R1dGlscy1maXgtc3dpZy1wYXJhbWV0ZXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzExLWRpc3R1dGlscy1uZXZlci1tb2RpZnktc2hlYmFuZy1saW5lLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc3R1dGlscy1zZXQtdGhlLXByZWZpeC10by1iZS1pbnNpZGUtc3RhZ2luZy1kaXJlY3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3VuaXhjY29tcGlsZXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL25vaG9zdGxpYnMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL211bHRpbGliLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hZGQtbWQ1bW9kdWxlLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtcHl0aG9uLVJlc29sdmUtaW50ZXJtZWRpYXRlLXN0YWdpbmctaXNzdWVzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbC1tYWtlaW5zdC1jcmVhdGUtYmluZGlyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9yZXZlcnRfdXNlX29mX3N5c2NvbmZpZ2RhdGEucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtcHl0aG9uLW5hdGl2ZS1maXgtb25lLWRvX3BvcHVsYXRlX3N5c3Jvb3Qtd2FybmluZy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKLQotRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vJHtQTn06IgotCi1pbmhlcml0IG5hdGl2ZQotCi1FWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLWJpbmRpcj0ke2JpbmRpcn0vJHtQTn0gLS13aXRoLXN5c3RlbS1leHBhdD0ke1NUQUdJTkdfRElSX0hPU1R9IgotCi1FWFRSQV9PRU1BS0UgPSAnXAotICBMSUJDPSIiIFwKLSAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IFwKLSAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9IFwKLScKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlhdXRvcmVjb25mIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCi19Ci0KLSMgUmVnZW5lcmF0ZSBhbGwgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcwotIyBUaGlzIGVuc3VyZXMgdGhhdCBwZ2VuIGFuZCBmcmllbmRzIGdldCBjcmVhdGVkIGR1cmluZyB0aGUgY29tcGlsZSBwaGFzZQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIG9lX3J1bm1ha2UgcmVnZW4tYWxsCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LyR7UE59Ci0JaW5zdGFsbCAtbSAwNzU1IFBhcnNlci9wZ2VuICR7RH0ke2JpbmRpcn0vJHtQTn0KLQotCSMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcHl0aG9uCi0JZm9yIFBZVEhTQ1JJUFQgaW4gYGdyZXAgLXJJbCAke2JpbmRpcn0vJHtQTn0vcHl0aG9uICR7RH0ke2JpbmRpcn0vJHtQTn1gOyBkbwotCQlzZWQgLWkgLWUgJzFzfF4jIS4qfCMhL3Vzci9iaW4vZW52IHB5dGhvbnwnICRQWVRIU0NSSVBUCi0JZG9uZQotCi0JIyBBZGQgYSBzeW1saW5rIHRvIHRoZSBuYXRpdmUgUHl0aG9uIHNvIHRoYXQgc2NyaXB0cyBjYW4ganVzdCBpbnZva2UKLQkjICJuYXRpdmVweXRob24iIGFuZCBnZXQgdGhlIHJpZ2h0IG9uZSB3aXRob3V0IG5lZWRpbmcgYWJzb2x1dGUgcGF0aHMKLQkjICh0aGVzZSBvZnRlbiBlbmQgdXAgdG9vIGxvbmcgZm9yIHRoZSAjISBwYXJzZXIgaW4gdGhlIGtlcm5lbCBhcyB0aGUKLQkjIGJ1ZmZlciBpcyAxMjggYnl0ZXMgbG9uZykuCi0JbG4gLXMgcHl0aG9uLW5hdGl2ZS9weXRob24gJHtEfSR7YmluZGlyfS9uYXRpdmVweXRob24KLQotCSMgV2UgZG9uJ3Qgd2FudCBtb2R1bGVzIGluIH4vLmxvY2FsIGJlaW5nIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZQotCSMgaW5zdGFsbGVkIGluIHRoZSBuYXRpdmUgc3lzcm9vdCwgc28gZGlzYWJsZSB1c2VyIHNpdGUgc3VwcG9ydC4KLQlzZWQgLWkgLWUgJ3MsXlwoRU5BQkxFX1VTRVJfU0lURSA9IFwpLiosXDFGYWxzZSwnICR7RH0ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaXRlLnB5Ci19Ci0KLXB5dGhvbigpewotCi0gICAgIyBSZWFkIEpTT04gbWFuaWZlc3QKLSAgICBpbXBvcnQganNvbgotICAgIHB5dGhvbmRpciA9IGQuZ2V0VmFyKCdUSElTRElSJykKLSAgICB3aXRoIG9wZW4ocHl0aG9uZGlyKycvcHl0aG9uL3B5dGhvbjItbWFuaWZlc3QuanNvbicpIGFzIG1hbmlmZXN0X2ZpbGU6Ci0gICAgICAgIG1hbmlmZXN0X3N0ciA9ICBtYW5pZmVzdF9maWxlLnJlYWQoKQotICAgICAgICBqc29uX3N0YXJ0ID0gbWFuaWZlc3Rfc3RyLmZpbmQoJyMgRU9DJykgKyA2Ci0gICAgICAgIG1hbmlmZXN0X2ZpbGUuc2Vlayhqc29uX3N0YXJ0KQotICAgICAgICBtYW5pZmVzdF9zdHIgPSBtYW5pZmVzdF9maWxlLnJlYWQoKQotICAgICAgICBweXRob25fbWFuaWZlc3QgPSBqc29uLmxvYWRzKG1hbmlmZXN0X3N0cikKLQotICAgIHJwcm92aWRlcyA9IGQuZ2V0VmFyKCdSUFJPVklERVMnKS5zcGxpdCgpCi0KLSAgICAjIEhhcmRjb2RlZCBzaW5jZSBpdCBjYW50IGJlIHB5dGhvbi1uYXRpdmUtZm9vLCBzaG91bGQgYmUgcHl0aG9uLWZvby1uYXRpdmUKLSAgICBwbiA9ICdweXRob24nCi0KLSAgICBmb3Iga2V5IGluIHB5dGhvbl9tYW5pZmVzdDoKLSAgICAgICAgcHlwYWNrYWdlID0gcG4gKyAnLScgKyBrZXkgKyAnLW5hdGl2ZScKLSAgICAgICAgaWYgcHlwYWNrYWdlIG5vdCBpbiBycHJvdmlkZXM6Ci0gICAgICAgICAgICAgIHJwcm92aWRlcy5hcHBlbmQocHlwYWNrYWdlKQotCi0gICAgZC5zZXRWYXIoJ1JQUk9WSURFUycsICcgJy5qb2luKHJwcm92aWRlcykpCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBici5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBici5pbmMKaW5kZXggMGU2NDUwMS4uY2UzYzIyNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYnIuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGJyLmluYwpAQCAtNSw2ICs1LDggQEAKIExJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFkZWNlNzgyMWJmM2ZkNzBmZTEzMDllYWEzN2Q1MmEyIgogCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1jaGFuZ2Utc2hlYmFuZy10by1weXRob24zLnBhdGNoIgorCiBpbmhlcml0IHB5cGkKIAogUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1waXAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGFyc2luZy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGFyc2luZy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ4YjMyNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwYXJzaW5nLmluYwpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIlB5dGhvbiBwYXJzaW5nIG1vZHVsZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9weXBhcnNpbmcud2lraXNwYWNlcy5jb20vIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02NTdhNTY2MjMzODg4NTEzZTFmMDdiYTEzZTJmNDdmMSIKKworU1JDX1VSSVttZDVzdW1dID0gImYwOTUzZTQ3YTAxMTJmN2E2NWFlYzIzMDVmZmRmN2I0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImMyMDNlYzg3ODNiZjc3MWExNTViMjA3Mjc5YjliY2NiOGRlYTAyZDhmMGM5ZTVmOGVhZDUwN2JjMzI0NmVjYzEiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJweXBhcnNpbmctKD9QPHB2ZXI+LiopXC50YXIiCisKK2luaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICR7UFlUSE9OX1BOfS1kZWJ1Z2dlciBcCisgICAgJHtQWVRIT05fUE59LWpzb24gXAorICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICR7UFlUSE9OX1BOfS1wcHJpbnQgXAorICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLmluYwppbmRleCAwMjdlMjU5Li4wN2MyZjhiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy5pbmMKQEAgLTEwLDggKzEwLDEwIEBACiAKIFNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovLzAwMDEtY29uZGl0aW9uYWxseS1kby1ub3QtZmV0Y2gtY29kZS1ieS1lYXN5X2luc3RhbGwucGF0Y2giCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI4OWE1OTJkNzMzYjMxZTE4MGE0YjZhZDc2MGMwNjg1YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZWFlNzgyY2NmMzZiNzkwYzIxYmRlN2Q4NmE0ZjMwM2E0NDFjZDc3MDM2YjI1YzU1OWE2MDJjZjUxODZjZTRkIgorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtY2hhbmdlLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjBjOTU2ZWVhMTQyYWY5YzJiMDJkNzJlM2MwNDJhZjMwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg5YzZlNjAxMWVjMmY2ZDU3ZDQzYTNmOTI5NmM0ZWYwMjJjMmNiZjQ5YmFiMjZiNDA3ZmU2Nzk5MmFlMzM5N2YiCiAKIERFUEVORFMgKz0gIiR7UFlUSE9OX1BOfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzQxLjQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc180MS40LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmOTQ0MDQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzQxLjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotcmVxdWlyZSBweXRob24tc2V0dXB0b29scy5pbmMKLQotUFJPVklERVMgPSAicHl0aG9uLWRpc3RyaWJ1dGUiCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1SUkVQTEFDRVNfJHtQTn0gPSAicHl0aG9uLWRpc3RyaWJ1dGUiCi1SUFJPVklERVNfJHtQTn0gPSAicHl0aG9uLWRpc3RyaWJ1dGUiCi1SQ09ORkxJQ1RTXyR7UE59ID0gInB5dGhvbi1kaXN0cmlidXRlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaXguaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaXguaW5jCmluZGV4IGMzODYwOTAuLjA1YjMyODEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2l4LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeC5pbmMKQEAgLTIsMTAgKzIsNyBAQAogSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9zaXgvIgogU0VDVElPTiA9ICJkZXZlbC9weXRob24iCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWY4MmViM2ExYTdmYWRlNjBiZGE1OTgwOTM1MDg0YjYyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTkyYzIzYzg4MmM3ZDU1NjRjZTU3NzNmZTMxYjI3NzEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzBmNjEwMjc5ZThiMjU3OGNhYjZkYjIwNzQxMTMwMzMxNzM1Yzc4MWI1NjA1M2M1OWM0MDc2ZGEyN2YwNmI2NiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTQzY2ZjOWU0YWMwZTM3N2FjZmI5Yjc2ZjU2Yjg0MTVkIgogCiBpbmhlcml0IHB5cGkKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTYzMGMyNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYworKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIFB5dGhvbiBQcm9ncmFtbWluZyBMYW5ndWFnZSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZyIKLUxJQ0VOU0UgPSAiUFNGdjIiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLSMgYnVtcCB0aGlzIG9uIGV2ZXJ5IGNoYW5nZSBpbiBjb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0yLjcucHkKLUlOQ19QUiA9ICJyMSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTQ2NjI0Mjk4OWJkMzNjMWJkMmI2YTUyNmE3NDI0OTgiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImIzYjZkMmM5MmY0MmE2MDY2NzgxNDM1OGFiOWYwY2ZkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRkNDNmMDMzY2RiZDBhYTdiNzAyM2M4MWIwZTk4NmZkMTFlNjUzYjUyNDhkYWM5MTQ0ZDUwOGYxMTgxMmJhNDEiCi0KLSMgcHl0aG9uIHJlY2lwZSBpcyBhY3R1YWxseSBweXRob24gMi54Ci0jIGFsc28sIGV4Y2x1ZGUgcHJlLXJlbGVhc2VzIGZvciBib3RoIHB5dGhvbiAyLnggYW5kIDMueAotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiW1BwXXl0aG9uLSg/UDxwdmVyPjIoXC5cZCspKykudGFyIgotCi1DVkVfUFJPRFVDVCA9ICJweXRob24iCi0KLVBZVEhPTl9NQUpNSU4gPSAiMi43IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgLS13aXRoLXRocmVhZHMgXAotICAtLXdpdGgtcHltYWxsb2MgXAotICAtLXdpdGhvdXQtY3h4LW1haW4gXAotICAtLXdpdGgtc2lnbmFsLW1vZHVsZSBcCi0gIC0tZW5hYmxlLXNoYXJlZCBcCi0gIC0tZW5hYmxlLWlwdjY9JHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ3llcycsICdubycsIGQpfSBcCi0gIGFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9bm8gYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9oPW5vIFwKLSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JbGliZGlybGVhZj0iJChlY2hvICR7bGliZGlyfSB8IHNlZCAtZSAnczoke3ByZWZpeH0vOjonKSIKLQlzZWQgLWkgLWUgInM6U0VETUVMSUJMRUFGOiR7bGliZGlybGVhZn06ZyIgXAotCQkke1N9L2NvbmZpZ3VyZS5hYwotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0Jc2VkIC1pIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vaW5zdGFsbDppbnN0YWxsOmcnIFwKLQkJLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS9ta2Rpcjpta2RpcjpnJyBcCi0JCSR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHkKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMS1kaXN0dXRpbHMtc2V0LXRoZS1wcmVmaXgtdG8tYmUtaW5zaWRlLXN0YWdpbmctZGlyZWN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLWRpc3R1dGlscy1zZXQtdGhlLXByZWZpeC10by1iZS1pbnNpZGUtc3RhZ2luZy1kaXJlY3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwMmY4NDkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLWRpc3R1dGlscy1zZXQtdGhlLXByZWZpeC10by1iZS1pbnNpZGUtc3RhZ2luZy1kaXJlY3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIDRjZGYyZTlkZjEzYzYzMjdmY2M5NGQ1M2U0OTUzMDA1NTQzYWVmM2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgNiBBcHIgMjAxNiAxNzo0MzowMiArMDMwMAotU3ViamVjdDogW1BBVENIIDAxLzEwXSBkaXN0dXRpbHM6IHNldCB0aGUgcHJlZml4IHRvIGJlIGluc2lkZSBzdGFnaW5nCi0gZGlyZWN0b3J5Ci0KLVRoZSBwcm9wZXIgcHJlZml4IGlzIGluc2lkZSBvdXIgc3RhZ2luZyBhcmVhLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWlja2V5QHZhbmlsbGUtbWVkaWEuZGU+Ci1TaWduZWQtb2ZmLWJ5OiBQaGlsIEJsdW5kZWxsIDxwaGlsYkBnbnUub3JnPgotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBMaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weSB8IDEwICsrKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotaW5kZXggZGU3ZGExZC4uZjNhYWNmNyAxMDA2NDQKLS0tLSBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci0rKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotQEAgLTc1LDcgKzc1LDcgQEAgZGVmIGdldF9weXRob25faW5jKHBsYXRfc3BlY2lmaWM9MCwgcHJlZml4PU5vbmUpOgotICAgICBzeXMuZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KLSAgICAgIiIiCi0gICAgIGlmIHByZWZpeCBpcyBOb25lOgotLSAgICAgICAgcHJlZml4ID0gcGxhdF9zcGVjaWZpYyBhbmQgRVhFQ19QUkVGSVggb3IgUFJFRklYCi0rICAgICAgICBwcmVmaXggPSBvcy5lbnZpcm9uWydTVEFHSU5HX0lOQ0RJUiddLnJzdHJpcCgnaW5jbHVkZScpCi0gCi0gICAgIGlmIG9zLm5hbWUgPT0gInBvc2l4IjoKLSAgICAgICAgIGlmIHB5dGhvbl9idWlsZDoKLUBAIC0xMTUsMTIgKzExNSwxNiBAQCBkZWYgZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuZGFyZF9saWI9MCwgcHJlZml4PU5vbmUpOgotICAgICBJZiAncHJlZml4JyBpcyBzdXBwbGllZCwgdXNlIGl0IGluc3RlYWQgb2Ygc3lzLnByZWZpeCBvcgotICAgICBzeXMuZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KLSAgICAgIiIiCi0rICAgIGxpYl9iYXNlbmFtZSA9IG9zLmVudmlyb25bJ1NUQUdJTkdfTElCRElSJ10uc3BsaXQoJy8nKVstMV0KLSAgICAgaWYgcHJlZml4IGlzIE5vbmU6Ci0tICAgICAgICBwcmVmaXggPSBwbGF0X3NwZWNpZmljIGFuZCBFWEVDX1BSRUZJWCBvciBQUkVGSVgKLSsgICAgICAgIGlmIHBsYXRfc3BlY2lmaWM6Ci0rICAgICAgICAgICAgcHJlZml4ID0gb3MuZW52aXJvblsnU1RBR0lOR19MSUJESVInXS5yc3RyaXAobGliX2Jhc2VuYW1lKQotKyAgICAgICAgZWxzZToKLSsgICAgICAgICAgICBwcmVmaXggPSBQUkVGSVgKLSAKLSAgICAgaWYgb3MubmFtZSA9PSAicG9zaXgiOgotICAgICAgICAgbGlicHl0aG9uID0gb3MucGF0aC5qb2luKHByZWZpeCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGliIiwgInB5dGhvbiIgKyBnZXRfcHl0aG9uX3ZlcnNpb24oKSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJfYmFzZW5hbWUsICJweXRob24iICsgZ2V0X3B5dGhvbl92ZXJzaW9uKCkpCi0gICAgICAgICBpZiBzdGFuZGFyZF9saWI6Ci0gICAgICAgICAgICAgcmV0dXJuIGxpYnB5dGhvbgotICAgICAgICAgZWxzZToKLS0tIAotMi44LjAucmMzCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMS1weXRob24tUmVzb2x2ZS1pbnRlcm1lZGlhdGUtc3RhZ2luZy1pc3N1ZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtcHl0aG9uLVJlc29sdmUtaW50ZXJtZWRpYXRlLXN0YWdpbmctaXNzdWVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmYyY2NjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMS1weXRob24tUmVzb2x2ZS1pbnRlcm1lZGlhdGUtc3RhZ2luZy1pc3N1ZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1Gcm9tIDc3YmNiMzIzOGIyODUzZDUxMTcxNDU0NGUwZjg0YTM3YmU2Yzc5YmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KLURhdGU6IFdlZCwgMTQgTm92IDIwMTIgMTQ6MzE6MjQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gcHl0aG9uOiBSZXNvbHZlIGludGVybWVkaWF0ZSBzdGFnaW5nIGlzc3VlcwotCi1XaGVuIGNyb3NzIGNvbXBpbGluZyBweXRob24sIHdlIHVzZWQgdG8gbmVlZCB0byBpbnN0YWxsIHRoZSBNYWtlZmlsZSwgcHljb25maWcuaAotYW5kIHRoZSBweXRob24gbGlicmFyeSB0byB0aGVpciBmaW5hbCBsb2NhdGlvbiBiZWZvcmUgYmVpbmcgYWJsZSB0byBjb21waWxlIHRoZQotcmVzdCBvZiBweXRob24uIFRoaXMgY2hhbmdlIGFsbG93cyB1cyB0byBwb2ludCBweXRob24gYXQgaXRzIG93biBzb3VyY2Ugd2hlbgotYnVpbGRpbmcsIGF2b2lkaW5nIGEgdmFyaWV0eSBvZiBzeXNyb290IHN0YWdpbmcgaXNzdWVzIGFuZCBzaW1wbGlmeWluZyB0aGUgbWFpbgotcHl0aG9uIHJlY2lwZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi1SUCAyMDEyLzExLzEzCi0KLS0tLQotIExpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5IHwgMyArKysKLSBMaWIvc3lzY29uZmlnLnB5ICAgICAgICAgICB8IDUgKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotaW5kZXggMmY0YjhjYS4uMTViY2ViNSAxMDA2NDQKLS0tLSBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci0rKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotQEAgLTMxLDYgKzMxLDkgQEAgZWxzZToKLSAgICAgIyBzeXMuZXhlY3V0YWJsZSBjYW4gYmUgZW1wdHkgaWYgYXJndlswXSBoYXMgYmVlbiBjaGFuZ2VkIGFuZCBQeXRob24gaXMKLSAgICAgIyB1bmFibGUgdG8gcmV0cmlldmUgdGhlIHJlYWwgcHJvZ3JhbSBuYW1lCi0gICAgIHByb2plY3RfYmFzZSA9IG9zLmdldGN3ZCgpCi0rX1BZVEhPTkJVSUxERElSID0gb3MuZW52aXJvbi5nZXQoIlBZVEhPTkJVSUxERElSIiwgTm9uZSkKLStpZiBfUFlUSE9OQlVJTERESVI6Ci0rICAgIHByb2plY3RfYmFzZSA9IF9QWVRIT05CVUlMRERJUgotIGlmIG9zLm5hbWUgPT0gIm50IiBhbmQgInBjYnVpbGQiIGluIHByb2plY3RfYmFzZVstODpdLmxvd2VyKCk6Ci0gICAgIHByb2plY3RfYmFzZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ocHJvamVjdF9iYXNlLCBvcy5wYXRoLnBhcmRpcikpCi0gIyBQQy9WUzcuMQotZGlmZiAtLWdpdCBhL0xpYi9zeXNjb25maWcucHkgYi9MaWIvc3lzY29uZmlnLnB5Ci1pbmRleCA5YzgzNTBkLi5iZGRiZTJlIDEwMDY0NAotLS0tIGEvTGliL3N5c2NvbmZpZy5weQotKysrIGIvTGliL3N5c2NvbmZpZy5weQotQEAgLTkzLDYgKzkzLDcgQEAgX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLnByZWZpeCkKLSBfRVhFQ19QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5leGVjX3ByZWZpeCkKLSBfQ09ORklHX1ZBUlMgPSBOb25lCi0gX1VTRVJfQkFTRSA9IE5vbmUKLStfUFlUSE9OQlVJTERESVIgPSBvcy5lbnZpcm9uLmdldCgiUFlUSE9OQlVJTERESVIiLCBOb25lKQotIAotIGRlZiBfc2FmZV9yZWFscGF0aChwYXRoKToKLSAgICAgdHJ5OgotQEAgLTEwMCw3ICsxMDEsOSBAQCBkZWYgX3NhZmVfcmVhbHBhdGgocGF0aCk6Ci0gICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgcmV0dXJuIHBhdGgKLSAKLS1pZiBzeXMuZXhlY3V0YWJsZToKLStpZiBfUFlUSE9OQlVJTERESVI6Ci0rICAgIF9QUk9KRUNUX0JBU0UgPSBfUFlUSE9OQlVJTERESVIKLStlbGlmIHN5cy5leGVjdXRhYmxlOgotICAgICBfUFJPSkVDVF9CQVNFID0gb3MucGF0aC5kaXJuYW1lKF9zYWZlX3JlYWxwYXRoKHN5cy5leGVjdXRhYmxlKSkKLSBlbHNlOgotICAgICAjIHN5cy5leGVjdXRhYmxlIGNhbiBiZSBlbXB0eSBpZiBhcmd2WzBdIGhhcyBiZWVuIGNoYW5nZWQgYW5kIFB5dGhvbiBpcwotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLXB5dGhvbjItdXNlLWNjX2Jhc2VuYW1lLXRvLXJlcGxhY2UtQ0MtZm9yLWNoZWNraW5nLWMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtcHl0aG9uMi11c2UtY2NfYmFzZW5hbWUtdG8tcmVwbGFjZS1DQy1mb3ItY2hlY2tpbmctYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmU0ZjgyMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtcHl0aG9uMi11c2UtY2NfYmFzZW5hbWUtdG8tcmVwbGFjZS1DQy1mb3ItY2hlY2tpbmctYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi1Gcm9tIDNmNDliZTgxZTMxYzE2NDY1NGFlYjEwYjY1ZWJhZGU5ODJjYTJlZDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAyMiBPY3QgMjAxOCAxNToyNDo0OCArMDgwMAotU3ViamVjdDogW1BBVENIXSBweXRob24yOiB1c2UgY2NfYmFzZW5hbWUgdG8gcmVwbGFjZSBDQyBmb3IgY2hlY2tpbmcgY29tcGlsZXIKLQotV2hlbiB3b3JraW5nIHBhdGggY29udGFpbnMgImNsYW5nIi8iZ2NjIi8iaWNjIiwgaXQgbWlnaHQgYmUgcGFydCBvZiAkQ0MKLWJlY2F1c2Ugb2YgdGhlICItLXN5c3Jvb3QiIHBhcmFtZXRlci4gVGhhdCBjb3VsZCBjYXVzZSBqdWRnZW1lbnQgZXJyb3IKLWFib3V0IGNsYW5nL2djYy9pY2MgY29tcGlsZXJzLiBlLmcuCi1XaGVuICJpY2MiIGlzIGNvbnRhaW5kZWQgaW4gd29ya2luZyBwYXRoLCBiZWxvdyBlcnJvcnMgYXJlIHJlcG9ydGVkIHdoZW4KLWNvbXBpbGluZyBweXRob246Ci14ODZfNjQtd3JzLWxpbnV4LWdjYzogZXJyb3I6IHN0cmljdDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQoteDg2XzY0LXdycy1saW51eC1nY2M6IGVycm9yOiB1bnJlY29nbml6ZWQgY29tbWFuZCBsaW5lIG9wdGlvbiAnLWZwLW1vZGVsJwotCi1IZXJlIHVzZSBjY19iYXNlbmFtZSB0byByZXBsYWNlIENDIGZvciBjaGVja2luZyBjb21waWxlciB0byBhdm9pZCBzdWNoCi1raW5kIG9mIGlzc3VlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuY29tPgotCi1QYXRjaCBvcmlnbmFsbHkgZnJvbSBMaSBaaG91LCBJIGp1c3QgcmV3b3JrIGl0IHRvIG5ldyB2ZXJzaW9uCi0KLVNpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAxOCArKysrKysrKystLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBkYjFjOTQwLi5kZmNkODlhIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02ODQsNyArNjg0LDcgQEAgQUNfTVNHX1JFU1VMVCgkd2l0aF9jeHhfbWFpbikKLSBwcmVzZXRfY3h4PSIkQ1hYIgotIGlmIHRlc3QgLXogIiRDWFgiCi0gdGhlbgotLSAgICAgICAgY2FzZSAiJENDIiBpbgotKyAgICAgICAgY2FzZSAiJGNjX2Jhc2VuYW1lIiBpbgotICAgICAgICAgZ2NjKSAgICBBQ19QQVRIX1RPT0woQ1hYLCBbZysrXSwgW2crK10sIFtub3Rmb3VuZF0pIDs7Ci0gICAgICAgICBjYykgICAgIEFDX1BBVEhfVE9PTChDWFgsIFtjKytdLCBbYysrXSwgW25vdGZvdW5kXSkgOzsKLSAgICAgICAgIGVzYWMKLUBAIC03NTcsMTQgKzc1NywxNCBAQCBybWRpciBDYXNlU2Vuc2l0aXZlVGVzdERpcgotIAotIGNhc2UgJE1BQ0hERVAgaW4KLSBic2RvcyopCi0tICAgIGNhc2UgJENDIGluCi0rICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgIGdjYykgQ0M9IiRDQyAtRF9IQVZFX0JTREkiOzsKLSAgICAgZXNhYzs7Ci0gZXNhYwotIAotIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KLSBocCp8SFAqKQotLSAgICBjYXNlICRDQyBpbgotKyAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICBjY3wqL2NjKSBDQz0iJENDIC1BZSI7OwotICAgICBlc2FjOzsKLSBTdW5PUyopCi1AQCAtMTA4NCw3ICsxMDg0LDcgQEAgdGhlbgotICAgICAgICAgZmkKLSAKLSAgICAgICAgICMgQ2xhbmcgYWxzbyBuZWVkcyAtZndyYXB2Ci0tICAgICAgICBjYXNlICRDQyBpbgotKyAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgICAgICAgICAqY2xhbmcqKSBXUkFQPSItZndyYXB2IgotICAgICAgICAgICAgIDs7Ci0gICAgICAgICBlc2FjCi1AQCAtMTMwNCw3ICsxMzA0LDcgQEAgeWVzKQotIGVzYWMKLSAKLSAjIElDQyBuZWVkcyAtZnAtbW9kZWwgc3RyaWN0IG9yIGZsb2F0cyBiZWhhdmUgYmFkbHkKLS1jYXNlICIkQ0MiIGluCi0rY2FzZSAiJGNjX2Jhc2VuYW1lIiBpbgotICppY2MqKQotICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtZnAtbW9kZWwgc3RyaWN0IgotICAgICA7OwotQEAgLTE0NDMsNyArMTQ0Myw3IEBAIGVsc2UKLSBmaV0sCi0gW0FDX01TR19SRVNVTFQobm8pXSkKLSBpZiB0ZXN0ICIkUHlfTFRPIiA9ICd0cnVlJyA7IHRoZW4KLS0gIGNhc2UgJENDIGluCi0rICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAqY2xhbmcqKQotICAgICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdwotICAgICAgIExUT0ZMQUdTPSItZmx0byIKLUBAIC0xNTA4LDcgKzE1MDgsNyBAQCB0aGVuCi0gICBmaQotIGZpCi0gTExWTV9QUk9GX0VSUj1ubwotLWNhc2UgJENDIGluCi0rY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICpjbGFuZyopCi0gICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdwotICAgICBQR09fUFJPRl9HRU5fRkxBRz0iLWZwcm9maWxlLWluc3RyLWdlbmVyYXRlIgotQEAgLTIzMjIsNyArMjMyMiw3IEBAIHRoZW4KLSAJCXRoZW4gQ0NTSEFSRUQ9Ii1mUElDIgotIAkJZWxzZSBDQ1NIQVJFRD0iLUtwaWMgLWJlbGYiCi0gCQlmaTs7Ci0tCUlSSVgqLzYqKSAgY2FzZSAkQ0MgaW4KLSsJSVJJWCovNiopICBjYXNlICRjY19iYXNlbmFtZSBpbgotIAkJICAgKmdjYyopIENDU0hBUkVEPSItc2hhcmVkIjs7Ci0gCQkgICAqKSBDQ1NIQVJFRD0iIjs7Ci0gCQkgICBlc2FjOzsKLUBAIC0yMzY2LDcgKzIzNjYsNyBAQCB0aGVuCi0gCQl0aGVuCi0gCQkJTElOS0ZPUlNIQVJFRD0iLVdsLC0tZXhwb3J0LWR5bmFtaWMiCi0gCQlmaTs7Ci0tCVN1bk9TLzUqKSBjYXNlICRDQyBpbgotKwlTdW5PUy81KikgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAJCSAgKmdjYyopCi0gCQkgICAgaWYgJENDIC1YbGlua2VyIC0taGVscCAyPiYxIHwgZ3JlcCBleHBvcnQtZHluYW1pYyA+L2Rldi9udWxsCi0gCQkgICAgdGhlbgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAxLXVzZS1wcm9wZXItdG9vbHMtZm9yLWNyb3NzLWJ1aWxkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMS11c2UtcHJvcGVyLXRvb2xzLWZvci1jcm9zcy1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTc5NWE3NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAxLXVzZS1wcm9wZXItdG9vbHMtZm9yLWNyb3NzLWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLVdlIG5lZWQgdG8gZW5zdXJlIG91ciBob3N0IHRvb2xzIGdldCBydW4gZHVyaW5nIGJ1aWxkLCBub3QgdGhlIGZyZXNobHkKLWJ1aWx0IGNyb3NzLXRvb2xzICh0aGlzIHdpbGwgbm90IHdvcmspLCBzbyB3ZSBpbnRyb2R1Y2UgSE9TVFBZVEhPTiBhbmQgSE9TVFBHRU4uCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1pY2tleUB2YW5pbGxlLW1lZGlhLmRlPgotU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+Ci0KLVJlYmFzZWQgZm9yIHB5dGhvbi0yLjcuOQotU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+Ci0KLVJlYmFzZWQgZm9yIHB5dGhvbi0yLjcuMTQKLVNpZ25lZC1vZmYtYnk6IERlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+Ci0KLUluZGV4OiBQeXRob24tMi43LjEzL01ha2VmaWxlLnByZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9NYWtlZmlsZS5wcmUuaW4KLSsrKyBQeXRob24tMi43LjEzL01ha2VmaWxlLnByZS5pbgotQEAgLTI0NSw2ICsyNDUsNyBAQCBMSUJGRklfSU5DTFVERURJUj0JQExJQkZGSV9JTkNMVURFRElSQAotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gIyBQYXJzZXIKLSBQR0VOPQkJUGFyc2VyL3BnZW4kKEVYRSkKLStIT1NUUEdFTj0JJChQR0VOKSQoRVhFKQotIAotIFBTUkNTPQkJXAotIAkJUGFyc2VyL2FjY2VsZXIuYyBcCi1AQCAtNTEyLDcgKzUxMyw3IEBAICQoQlVJTERQWVRIT04pOglNb2R1bGVzL3B5dGhvbi5vICQoTElCUkEKLSAJCQkkKEJMRExJQlJBUlkpICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQotIAotIHBsYXRmb3JtOiAkKEJVSUxEUFlUSE9OKSBweWJ1aWxkZGlyLnR4dAotLQkkKFJVTlNIQVJFRCkgJChQWVRIT05fRk9SX0JVSUxEKSAtYyAnaW1wb3J0IHN5cyA7IGZyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfcGxhdGZvcm0gOyBwcmludCBnZXRfcGxhdGZvcm0oKSsiLSIrc3lzLnZlcnNpb25bMDozXScgPnBsYXRmb3JtCi0rCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpIC1jICdpbXBvcnQgc3lzIDsgZnJvbSBkaXN0dXRpbHMudXRpbCBpbXBvcnQgZ2V0X3BsYXRmb3JtIDsgcHJpbnQgZ2V0X3BsYXRmb3JtKCkrIi0iK3N5cy52ZXJzaW9uWzA6M10nID5wbGF0Zm9ybQotIAotICMgQ3JlYXRlIGJ1aWxkIGRpcmVjdG9yeSBhbmQgZ2VuZXJhdGUgdGhlIHN5c2NvbmZpZyBidWlsZC10aW1lIGRhdGEgdGhlcmUuCi0gIyBweWJ1aWxkZGlyLnR4dCBjb250YWlucyB0aGUgbmFtZSBvZiB0aGUgYnVpbGQgZGlyIGFuZCBpcyB1c2VkIGZvcgotQEAgLTY2Myw3ICs2NjMsNyBAQAotIAkjIFJlZ2VuZXJhdGUgSW5jbHVkZS9ncmFtaW5pdC5oIGFuZCBQeXRob24vZ3JhbWluaXQuYwotIAkjIGZyb20gR3JhbW1hci9HcmFtbWFyIHVzaW5nIHBnZW4KLSAJQCQoTUtESVJfUCkgSW5jbHVkZQotLQkkKFBHRU4pICQoc3JjZGlyKS9HcmFtbWFyL0dyYW1tYXIgXAotKwkkKEhPU1RQR0VOKSAkKHNyY2RpcikvR3JhbW1hci9HcmFtbWFyIFwKLSAJCSQoc3JjZGlyKS9JbmNsdWRlL2dyYW1pbml0LmggXAotIAkJJChzcmNkaXIpL1B5dGhvbi9ncmFtaW5pdC5jCi0gCi1AQCAtMTEyMSwyNyArMTEyMiwyNyBAQCBsaWJpbnN0YWxsOglidWlsZF9hbGwgJChzcmNkaXIpL0xpYi8kKFBMCi0gCQkJJChERVNURElSKSQoTElCREVTVCkvZGlzdHV0aWxzL3Rlc3RzIDsgXAotIAlmaQotIAlQWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICAkKFJVTlNIQVJFRCkgXAotLQkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgLXR0ICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAotKwkJJChIT1NUUFlUSE9OKSAtV2kgLXR0ICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAotIAkJLWQgJChMSUJERVNUKSAtZiBcCi0gCQkteCAnYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xsaWIydG8zL3Rlc3RzL2RhdGEnIFwKLSAJCSQoREVTVERJUikkKExJQkRFU1QpCi0gCVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKLS0JCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC10dCAtTyAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKLSsJCSQoSE9TVFBZVEhPTikgLVdpIC10dCAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKLSAJCS1kICQoTElCREVTVCkgLWYgXAotIAkJLXggJ2JhZF9jb2Rpbmd8YmFkc3ludGF4fHNpdGUtcGFja2FnZXN8bGliMnRvMy90ZXN0cy9kYXRhJyBcCi0gCQkkKERFU1RESVIpJChMSUJERVNUKQotIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAgJChSVU5TSEFSRUQpIFwKLS0JCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC10ICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAotKwkJJChIT1NUUFlUSE9OKSAtV2kgLXR0ICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAotIAkJLWQgJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzIC1mIFwKLSAJCS14IGJhZHN5bnRheCAkKERFU1RESVIpJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzCi0gCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCi0tCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1XaSAtdCAtTyAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKLSsJCSQoSE9TVFBZVEhPTikgLVdpIC10dCAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKLSAJCS1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCi0gCQkteCBiYWRzeW50YXggJChERVNURElSKSQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcwotIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAotLQkJJChQWVRIT05fRk9SX0JVSUxEKSAtbSBsaWIydG8zLnBnZW4yLmRyaXZlciAkKERFU1RESVIpJChMSUJERVNUKS9saWIydG8zL0dyYW1tYXIudHh0Ci0rCQkkKEhPU1RQWVRIT04pIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvR3JhbW1hci50eHQKLSAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKLS0JCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9QYXR0ZXJuR3JhbW1hci50eHQKLSsJCSQoSE9TVFBZVEhPTikgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9QYXR0ZXJuR3JhbW1hci50eHQKLSAKLSAjIENyZWF0ZSB0aGUgUExBVERJUiBzb3VyY2UgZGlyZWN0b3J5LCBpZiBvbmUgd2Fzbid0IGRpc3RyaWJ1dGVkLi4KLSAkKHNyY2RpcikvTGliLyQoUExBVERJUik6Ci1JbmRleDogUHl0aG9uLTIuNy4xMy9zZXR1cC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9zZXR1cC5weQotKysrIFB5dGhvbi0yLjcuMTMvc2V0dXAucHkKLUBAIC0zNTAsNiArMzUwLDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgICAgIHNlbGYuZmFpbGVkLmFwcGVuZChleHQubmFtZSkKLSAgICAgICAgICAgICBzZWxmLmFubm91bmNlKCcqKiogV0FSTklORzogcmVuYW1pbmcgIiVzIiBzaW5jZSBpbXBvcnRpbmcgaXQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnIGZhaWxlZDogJXMnICUgKGV4dC5uYW1lLCB3aHkpLCBsZXZlbD0zKQotKyAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgIGFzc2VydCBub3Qgc2VsZi5pbnBsYWNlCi0gICAgICAgICAgICAgYmFzZW5hbWUsIHRhaWwgPSBvcy5wYXRoLnNwbGl0ZXh0KGV4dF9maWxlbmFtZSkKLSAgICAgICAgICAgICBuZXduYW1lID0gYmFzZW5hbWUgKyAiX2ZhaWxlZCIgKyB0YWlsCi1AQCAtNTc0LDYgKzU3NSw5IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAKLSAgICAgICAgICMgWFhYIE9taXR0ZWQgbW9kdWxlczogZ2wsIHB1cmUsIGRsLCBTR0ktc3BlY2lmaWMgbW9kdWxlcwotIAotKyAgICAgICAgbGliX2RpcnMgPSBbIG9zLmdldGVudigiU1RBR0lOR19MSUJESVIiKSwgIG9zLmdldGVudigiU1RBR0lOR19CQVNFTElCRElSIikgXQotKyAgICAgICAgaW5jX2RpcnMgPSBbIG9zLmdldGVudigiU1RBR0lOR19JTkNESVIiKSBdCi0rCi0gICAgICAgICAjCi0gICAgICAgICAjIFRoZSBmb2xsb3dpbmcgbW9kdWxlcyBhcmUgYWxsIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIGFuZCBjb21waWxlCi0gICAgICAgICAjIG9uIHByZXR0eSBtdWNoIGFueSBQT1NJWGlzaCBwbGF0Zm9ybS4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDMtZml4LXRraW50ZXItZGV0ZWN0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMy1maXgtdGtpbnRlci1kZXRlY3Rpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1MGNlYjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMy1maXgtdGtpbnRlci1kZXRlY3Rpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1XZSBuZWVkIHRvIHN1cHBseSBTVEFHSU5HX0lOQ0RJUiBoZXJlLCBvdGhlcndpc2UgdGhlIFRrIGhlYWRlcnMKLXdpbGwgbm90IGJlIGZvdW5kLgotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtaWNrZXlAdmFuaWxsZS5kZT4KLVNpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgotCi1SZWJhc2VkIGZvciBweXRob24tMi43LjkKLQotZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKLWluZGV4IDhmZTFmYjguLjY3ZWRhNzQgMTAwNjQ0Ci0tLS0gYS9zZXR1cC5weQotKysrIGIvc2V0dXAucHkKLUBAIC0xODkyLDcgKzE4OTIsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICAgICAgICAgIGRvdHZlcnNpb24gPSBkb3R2ZXJzaW9uWzotMV0gKyAnLicgKyBkb3R2ZXJzaW9uWy0xXQotICAgICAgICAgICAgIHRjbF9pbmNsdWRlX3N1YiA9IFtdCi0gICAgICAgICAgICAgdGtfaW5jbHVkZV9zdWIgPSBbXQotLSAgICAgICAgICAgIGZvciBkaXIgaW4gaW5jX2RpcnM6Ci0rICAgICAgICAgICAgZm9yIGRpciBpbiBbb3MuZ2V0ZW52KCJTVEFHSU5HX0lOQ0RJUiIpXToKLSAgICAgICAgICAgICAgICAgdGNsX2luY2x1ZGVfc3ViICs9IFtkaXIgKyBvcy5zZXAgKyAidGNsIiArIGRvdHZlcnNpb25dCi0gICAgICAgICAgICAgICAgIHRrX2luY2x1ZGVfc3ViICs9IFtkaXIgKyBvcy5zZXAgKyAidGsiICsgZG90dmVyc2lvbl0KLSAgICAgICAgICAgICB0a19pbmNsdWRlX3N1YiArPSB0Y2xfaW5jbHVkZV9zdWIKLUBAIC0xOTExLDIyICsxOTExLDYgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgICAgIGlmIGRpciBub3QgaW4gaW5jbHVkZV9kaXJzOgotICAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnMuYXBwZW5kKGRpcikKLSAKLS0gICAgICAgICMgQ2hlY2sgZm9yIHZhcmlvdXMgcGxhdGZvcm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMKLS0gICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ3N1bm9zNSc6Ci0tICAgICAgICAgICAgaW5jbHVkZV9kaXJzLmFwcGVuZCgnL3Vzci9vcGVud2luL2luY2x1ZGUnKQotLSAgICAgICAgICAgIGFkZGVkX2xpYl9kaXJzLmFwcGVuZCgnL3Vzci9vcGVud2luL2xpYicpCi0tICAgICAgICBlbGlmIG9zLnBhdGguZXhpc3RzKCcvdXNyL1gxMVI2L2luY2x1ZGUnKToKLS0gICAgICAgICAgICBpbmNsdWRlX2RpcnMuYXBwZW5kKCcvdXNyL1gxMVI2L2luY2x1ZGUnKQotLSAgICAgICAgICAgIGFkZGVkX2xpYl9kaXJzLmFwcGVuZCgnL3Vzci9YMTFSNi9saWI2NCcpCi0tICAgICAgICAgICAgYWRkZWRfbGliX2RpcnMuYXBwZW5kKCcvdXNyL1gxMVI2L2xpYicpCi0tICAgICAgICBlbGlmIG9zLnBhdGguZXhpc3RzKCcvdXNyL1gxMVI1L2luY2x1ZGUnKToKLS0gICAgICAgICAgICBpbmNsdWRlX2RpcnMuYXBwZW5kKCcvdXNyL1gxMVI1L2luY2x1ZGUnKQotLSAgICAgICAgICAgIGFkZGVkX2xpYl9kaXJzLmFwcGVuZCgnL3Vzci9YMTFSNS9saWInKQotLSAgICAgICAgZWxzZToKLS0gICAgICAgICAgICAjIEFzc3VtZSBkZWZhdWx0IGxvY2F0aW9uIGZvciBYMTEKLS0gICAgICAgICAgICBpbmNsdWRlX2RpcnMuYXBwZW5kKCcvdXNyL1gxMS9pbmNsdWRlJykKLS0gICAgICAgICAgICBhZGRlZF9saWJfZGlycy5hcHBlbmQoJy91c3IvWDExL2xpYicpCi0tCi0gICAgICAgICAjIElmIEN5Z3dpbiwgdGhlbiB2ZXJpZnkgdGhhdCBYIGlzIGluc3RhbGxlZCBiZWZvcmUgcHJvY2VlZGluZwotICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnY3lnd2luJzoKLSAgICAgICAgICAgICB4MTFfaW5jID0gZmluZF9maWxlKCdYMTEvWGxpYi5oJywgW10sIGluY2x1ZGVfZGlycykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDUtZW5hYmxlLWN0eXBlcy1jcm9zcy1idWlsZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDUtZW5hYmxlLWN0eXBlcy1jcm9zcy1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNjODc0Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzA1LWVuYWJsZS1jdHlwZXMtY3Jvc3MtYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1SZWJhc2VkIGZvciBweXRob24gMi43LjkKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotIyBDVHlwZXMgbmVlZCB0byBrbm93IHRoZSBhY3R1YWwgaG9zdCB3ZSBhcmUgYnVpbGRpbmcgb24uCi0jIFNpZ25lZC1PZmY6IE1pY2hhZWwgRGlldHJpY2ggPG1kdEBlbWRldGUuZGU+Ci0KLUluZGV4OiBQeXRob24tMi43Ljkvc2V0dXAucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43Ljkub3JpZy9zZXR1cC5weQotKysrIFB5dGhvbi0yLjcuOS9zZXR1cC5weQotQEAgLTIwMjgsMTIgKzIwMjgsMTIgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotIAotICAgICAgICAgICAgICAgICAjIFBhc3MgZW1wdHkgQ0ZMQUdTIGJlY2F1c2Ugd2UnbGwganVzdCBhcHBlbmQgdGhlIHJlc3VsdGluZwotICAgICAgICAgICAgICAgICAjIENGTEFHUyB0byBQeXRob24nczsgLWcgb3IgLU8yIGlzIHRvIGJlIGF2b2lkZWQuCi0tICAgICAgICAgICAgICAgIGNtZCA9ICJjZCAlcyAmJiBlbnYgQ0ZMQUdTPScnICclcy9jb25maWd1cmUnICVzIiBcCi0tICAgICAgICAgICAgICAgICAgICAgICUgKGZmaV9idWlsZGRpciwgZmZpX3NyY2RpciwgIiAiLmpvaW4oY29uZmlnX2FyZ3MpKQotKyAgICAgICAgICAgICAgICBjbWQgPSAiKGNkICVzICYmIGF1dG9jb25mIC1XIGNyb3NzKSAmJiAoY2QgJXMgJiYgZW52IENGTEFHUz0nJyAnJXMvY29uZmlndXJlJyAlcykiIFwKLSsgICAgICAgICAgICAgICAgICAgICUgKGZmaV9zcmNkaXIsIGZmaV9idWlsZGRpciwgZmZpX3NyY2RpciwgIiAiLmpvaW4oY29uZmlnX2FyZ3MpKQotIAotICAgICAgICAgICAgICAgICByZXMgPSBvcy5zeXN0ZW0oY21kKQotICAgICAgICAgICAgICAgICBpZiByZXMgb3Igbm90IG9zLnBhdGguZXhpc3RzKGZmaV9jb25maWdmaWxlKToKLS0gICAgICAgICAgICAgICAgICAgIHByaW50ICJGYWlsZWQgdG8gY29uZmlndXJlIF9jdHlwZXMgbW9kdWxlIgotKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgIkZhaWxlZCB0byBjb25maWd1cmUgX2N0eXBlcyBtb2R1bGUgKHJlcz0lZCkgb3IgbWlzc2luZyBjb25mZmlsZT0lcyIgJSAoIHJlcywgZmZpX2NvbmZpZ2ZpbGUgKQotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gCi0gICAgICAgICAgICAgZmZpY29uZmlnID0ge30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDYtYXZvaWRfdXNyX2xpYl90ZXJtY2FwX3BhdGhfaW5fbGlua2luZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDYtYXZvaWRfdXNyX2xpYl90ZXJtY2FwX3BhdGhfaW5fbGlua2luZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM1YjMxOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzA2LWF2b2lkX3Vzcl9saWJfdGVybWNhcF9wYXRoX2luX2xpbmtpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotVGhlIHBvaXNvbiBkaXJlY3RvcmllcyBwYXRjaCBoYXMgZGV0ZWN0ZWQgbGlicmFyeSBwYXRoIGlzc3VlIHdoaWxlIAotY29tcGlsaW5nIHRoZSBweXRob24gaW4gY3Jvc3MgZW52aXJvbm1lbnQsIGFzIHNlZW4gYmVsbG93LgotCi13YXJuaW5nOiBsaWJyYXJ5IHNlYXJjaCBwYXRoICIvdXNyL2xpYi90ZXJtY2FwIiBpcyB1bnNhZmUgZm9yIGNyb3NzLWNvbXBpbGF0aW9uCi0KLVRoaXMgUGF0Y2ggZml4ZXMgdGhpcyBpc3N1ZSBpbiB0aGUgcHl0aG9uIGJ1aWxkIGVudmlyb25tZW50LgotMTEgT2N0IDIwMTAKLU5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0KLTIwMTEvMDkvMjkKLVJlYmFzZWQgZm9yIHB5dGhvbiAyLjcuMgotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLQotU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+Ci0KLWRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5Ci1pbmRleCA2N2VkYTc0Li41OWM1MzdlIDEwMDY0NAotLS0tIGEvc2V0dXAucHkKLSsrKyBiL3NldHVwLnB5Ci1AQCAtNzYxLDEyICs3NjEsMTAgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgICAgICAgICBwYXNzICMgSXNzdWUgNzM4NDogQWxyZWFkeSBsaW5rZWQgYWdhaW5zdCBjdXJzZXMgb3IgdGluZm8uCi0gICAgICAgICAgICAgZWxpZiBjdXJzZXNfbGlicmFyeToKLSAgICAgICAgICAgICAgICAgcmVhZGxpbmVfbGlicy5hcHBlbmQoY3Vyc2VzX2xpYnJhcnkpCi0tICAgICAgICAgICAgZWxpZiBzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzICsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnL3Vzci9saWIvdGVybWNhcCddLAotKyAgICAgICAgICAgIGVsaWYgc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXJtY2FwJyk6Ci0gICAgICAgICAgICAgICAgIHJlYWRsaW5lX2xpYnMuYXBwZW5kKCd0ZXJtY2FwJykKLSAgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdyZWFkbGluZScsIFsncmVhZGxpbmUuYyddLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeV9kaXJzPVsnL3Vzci9saWIvdGVybWNhcCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfbGlua19hcmdzPXJlYWRsaW5lX2V4dHJhX2xpbmtfYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz1yZWFkbGluZV9saWJzKSApCi0gICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hZGQtQ1JPU1NQWVRIT05QQVRILWZvci1QWVRIT05fRk9SX0JVSUxELnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hZGQtQ1JPU1NQWVRIT05QQVRILWZvci1QWVRIT05fRk9SX0JVSUxELnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjk3MzQwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYWRkLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLWNvbmZpZ3VyZS5hYzogYWRkIENST1NTUFlUSE9OUEFUSCBpbnRvIFBZVEhPTlBBVEggZm9yIFBZVEhPTl9GT1JfQlVJTEQKLQotV2hlbiBidWlsZGluZyB4ODYtPng4NiB0aGUgc3lzdGVtIHdpbGwgdHJ5IHRvIGV4ZWN1dGUgLnNvIGFuZCByZWxhdGVkIGl0ZW1zCi1mcm9tIHRoZSBkZWZhdWx0IFBZVEhPTlBBVEguICBUaGlzIHdpbGwgZmFpbCBpZiB0aGUgdGFyZ2V0IENQVSBjb250YWlucwotaW5zdHJ1Y3Rpb25zIHRoYXQgdGhlIGhvc3QgQ1BVIGRvZXMgbm90IGhhdmUsIGFkZCBDUk9TU1BZVEhPTlBBVEgKLWludG8gUFlUSE9OUEFUSCBzbyB3ZSBjYW4gcHJlcGVuZCB0aGUgbGlzdCB0byBmaW5kIGNvcnJlY3QgbGlicy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1Db3JlIGludGVncmF0aW9uIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogUHl0aG9uLTIuNy4xNC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgUHl0aG9uLTIuNy4xNC9jb25maWd1cmUuYWMKLUBAIC0zNiw3ICszNiw3IEBAIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCi0gCSAgICBBQ19NU0dfRVJST1IoW3B5dGhvbiRQQUNLQUdFX1ZFUlNJT04gaW50ZXJwcmV0ZXIgbm90IGZvdW5kXSkKLSAJZmkKLSAgICAgICAgIEFDX01TR19SRVNVTFQoJGludGVycCkKLS0JUFlUSE9OX0ZPUl9CVUlMRD0nX1BZVEhPTl9QUk9KRUNUX0JBU0U9JChhYnNfYnVpbGRkaXIpIF9QWVRIT05fSE9TVF9QTEFURk9STT0kKF9QWVRIT05fSE9TVF9QTEFURk9STSkgUFlUSE9OUEFUSD0kKHNoZWxsIHRlc3QgLWYgcHlidWlsZGRpci50eHQgJiYgZWNobyAkKGFic19idWlsZGRpcikvYGNhdCBweWJ1aWxkZGlyLnR4dGA6KSQoc3JjZGlyKS9MaWI6JChzcmNkaXIpL0xpYi8kKFBMQVRESVIpICckaW50ZXJwCi0rCVBZVEhPTl9GT1JfQlVJTEQ9J19QWVRIT05fUFJPSkVDVF9CQVNFPSQoYWJzX2J1aWxkZGlyKSBfUFlUSE9OX0hPU1RfUExBVEZPUk09JChfUFlUSE9OX0hPU1RfUExBVEZPUk0pIFBZVEhPTlBBVEg9JChDUk9TU1BZVEhPTlBBVEgpOiQoc2hlbGwgdGVzdCAtZiBweWJ1aWxkZGlyLnR4dCAmJiBlY2hvICQoYWJzX2J1aWxkZGlyKS9gY2F0IHB5YnVpbGRkaXIudHh0YDopJChzcmNkaXIpL0xpYjokKHNyY2RpcikvTGliL3BsYXQtJChNQUNIREVQKSAnJGludGVycAotICAgICBmaQotIGVsaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBtYXliZTsgdGhlbgotICAgICBBQ19NU0dfRVJST1IoW0Nyb3NzIGNvbXBpbGluZyByZXF1aXJlZCAtLWhvc3Q9SE9TVC1UVVBMRSBhbmQgLS1idWlsZD1BUkNIXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYWRkLW1kNW1vZHVsZS1zdXBwb3J0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hZGQtbWQ1bW9kdWxlLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzZmVhNzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hZGQtbWQ1bW9kdWxlLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgotCi1JbmRleDogUHl0aG9uLTIuNy4yL01vZHVsZXMvU2V0dXAuZGlzdAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMi5vcmlnL01vZHVsZXMvU2V0dXAuZGlzdAkyMDExLTA2LTExIDA4OjQ2OjI2LjAwMDAwMDAwMCAtMDcwMAotKysrIFB5dGhvbi0yLjcuMi9Nb2R1bGVzL1NldHVwLmRpc3QJMjAxMS0xMi0yNyAxNTo1MTo0MS4yNDQ2MjMyMTkgLTA4MDAKLUBAIC0yNDgsNyArMjQ4LDcgQEAKLSAjIE1lc3NhZ2UtRGlnZXN0IEFsZ29yaXRobSwgZGVzY3JpYmVkIGluIFJGQyAxMzIxLiAgVGhlIG5lY2Vzc2FyeSBmaWxlcwotICMgbWQ1LmMgYW5kIG1kNS5oIGFyZSBpbmNsdWRlZCBoZXJlLgotIAotLSNfbWQ1IG1kNW1vZHVsZS5jIG1kNS5jCi0rX21kNSBtZDVtb2R1bGUuYyBtZDUuYwotIAotIAotICMgVGhlIF9zaGEgbW9kdWxlIGltcGxlbWVudHMgdGhlIFNIQSBjaGVja3N1bSBhbGdvcml0aG1zLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg3MDk1Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLV90a2ludGVyIG1vZHVsZSBuZWVkcyB0ayBtb2R1bGUgYWxvbmcgd2l0aCB0Y2wuIHRrIGlzIG5vdCB5ZXQgaW50ZWdyYXRlZAotaW4geW9jdG8gc28gd2Ugc2tpcCB0aGUgY2hlY2sgZm9yIHRoaXMgbW9kdWxlLgotQXZvaWQgYSB3YXJuaW5nIGJ5IG5vdCBhZGRpbmcgdGhpcyBtb2R1bGUgdG8gbWlzc2luZyB2YXJpYWJsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXN0cmlidXRpb25dCi0KLUFsc28gc2ltcGx5IGRpc2FibGUgdGhlIHRrIG1vZHVsZSBzaW5jZSBpdHMgbm90IGluIERFUEVORFMuCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+Ci0KLUluZGV4OiBQeXRob24tMi43LjEzL3NldHVwLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL3NldHVwLnB5Ci0rKysgUHl0aG9uLTIuNy4xMy9zZXR1cC5weQotQEAgLTE3ODMsMTAgKzE3ODMsMTIgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgc2VsZi5leHRlbnNpb25zLmV4dGVuZChleHRzKQotIAotICAgICAgICAgIyBDYWxsIHRoZSBtZXRob2QgZm9yIGRldGVjdGluZyB3aGV0aGVyIF90a2ludGVyIGNhbiBiZSBjb21waWxlZAotLSAgICAgICAgc2VsZi5kZXRlY3RfdGtpbnRlcihpbmNfZGlycywgbGliX2RpcnMpCi0rICAgICAgICAjIHNlbGYuZGV0ZWN0X3RraW50ZXIoaW5jX2RpcnMsIGxpYl9kaXJzKQotIAotLSAgICAgICAgaWYgJ190a2ludGVyJyBub3QgaW4gW2UubmFtZSBmb3IgZSBpbiBzZWxmLmV4dGVuc2lvbnNdOgotLSAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfdGtpbnRlcicpCi0rICAgICAgICAjIHRraW50ZXIgbW9kdWxlIHdpbGwgbm90IGJlIGF2YWxhaWJsZSBhcyB5b2N0bwotKyAgICAgICAgIyBkb2Vzbid0IGhhdmUgdGsgaW50ZWdyYXRlZCAoeWV0KQotKyAgICAgICAgI2lmICdfdGtpbnRlcicgbm90IGluIFtlLm5hbWUgZm9yIGUgaW4gc2VsZi5leHRlbnNpb25zXToKLSsgICAgICAgICMgICAgbWlzc2luZy5hcHBlbmQoJ190a2ludGVyJykKLSAKLSAjIyAgICAgICAgICMgVW5jb21tZW50IHRoZXNlIGxpbmVzIGlmIHlvdSB3YW50IHRvIHBsYXkgd2l0aCB4eG1vZHVsZS5jCi0gIyMgICAgICAgICBleHQgPSBFeHRlbnNpb24oJ3h4JywgWyd4eG1vZHVsZS5jJ10pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2F2b2lkX3dhcm5pbmdfZm9yX3N1bm9zX3NwZWNpZmljX21vZHVsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYXZvaWRfd2FybmluZ19mb3Jfc3Vub3Nfc3BlY2lmaWNfbW9kdWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmE1ODIzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYXZvaWRfd2FybmluZ19mb3Jfc3Vub3Nfc3BlY2lmaWNfbW9kdWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotc3VuYXVkaW9kZXYgbW9kdWxlIGlzIHN1bm9zIHNwZWNpZmljIHNvIHdlIGF2b2lkIGEgd2FybmluZyBieSBub3QgCi1hZGRpbmcgdGhpcyBtb2R1bGUgdG8gbWlzc2luZyB2YXJpYWJsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXN0cmlidXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KLQotSW5kZXg6IFB5dGhvbi0yLjcuMTMvc2V0dXAucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvc2V0dXAucHkKLSsrKyBQeXRob24tMi43LjEzL3NldHVwLnB5Ci1AQCAtMTY3MSw4ICsxNjcxLDkgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnc3Vub3M1JzoKLSAgICAgICAgICAgICAjIFN1bk9TIHNwZWNpZmljIG1vZHVsZXMKLSAgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdzdW5hdWRpb2RldicsIFsnc3VuYXVkaW9kZXYuYyddKSApCi0tICAgICAgICBlbHNlOgotLSAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdzdW5hdWRpb2RldicpCi0rICAgICAgICAjIElmIHBsYXRmb3JtIGlzIG5vdCBzdW5vcyB3YXJuaW5nIGlzIHVzZWxlc3MKLSsgICAgICAgICNlbHNlOgotKyAgICAgICAgIyAgICBtaXNzaW5nLmFwcGVuZCgnc3VuYXVkaW9kZXYnKQotIAotICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgICAgICAjIF9zY3Byb3h5CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2NnaV9weS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vY2dpX3B5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTUwNGY5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vY2dpX3B5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotTGliL2NnaS5weTogVXBkYXRlIHRoZSBzY3JpcHQgYXMgbWVudGlvbmVkIGluIHRoZSBjb21tZW50Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzdHJpYnV0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci0KLS0tLSBQeXRob24tMi42LjYvTGliL2NnaS5weS5vcmlnCTIwMTAtMDgtMDEgMjI6MTQ6MjcuMDAwMDAwMDAwIC0wNTAwCi0rKysgUHl0aG9uLTIuNi42L0xpYi9jZ2kucHkJMjAxMS0wOS0yMSAxNToyODo0MC40NzgyMDg2MzEgLTA1MDAKLUBAIC0xLDEzICsxLDQgQEAKLS0jISAvdXNyL2xvY2FsL2Jpbi9weXRob24KLS0KLS0jIE5PVEU6IHRoZSBhYm92ZSAiL3Vzci9sb2NhbC9iaW4vcHl0aG9uIiBpcyBOT1QgYSBtaXN0YWtlLiAgSXQgaXMKLS0jIGludGVudGlvbmFsbHkgTk9UICIvdXNyL2Jpbi9lbnYgcHl0aG9uIi4gIE9uIG1hbnkgc3lzdGVtcwotLSMgKGUuZy4gU29sYXJpcyksIC91c3IvbG9jYWwvYmluIGlzIG5vdCBpbiAkUEFUSCBhcyBwYXNzZWQgdG8gQ0dJCi0tIyBzY3JpcHRzLCBhbmQgL3Vzci9sb2NhbC9iaW4gaXMgdGhlIGRlZmF1bHQgZGlyZWN0b3J5IHdoZXJlIFB5dGhvbiBpcwotLSMgaW5zdGFsbGVkLCBzbyAvdXNyL2Jpbi9lbnYgd291bGQgYmUgdW5hYmxlIHRvIGZpbmQgcHl0aG9uLiAgR3JhbnRlZCwKLS0jIGJpbmFyeSBpbnN0YWxsYXRpb25zIGJ5IExpbnV4IHZlbmRvcnMgb2Z0ZW4gaW5zdGFsbCBQeXRob24gaW4KLS0jIC91c3IvYmluLiAgU28gbGV0IHRob3NlIHZlbmRvcnMgcGF0Y2ggY2dpLnB5IHRvIG1hdGNoIHRoZWlyIGNob2ljZQotLSMgb2YgaW5zdGFsbGF0aW9uLgotKyMhIC91c3IvYmluL2VudiBweXRob24KLSAKLSAiIiJTdXBwb3J0IG1vZHVsZSBmb3IgQ0dJIChDb21tb24gR2F0ZXdheSBJbnRlcmZhY2UpIHNjcmlwdHMuCi0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2NoZWNrLWlmLXRhcmdldC1pcy02NGItbm90LWhvc3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2NoZWNrLWlmLXRhcmdldC1pcy02NGItbm90LWhvc3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ZDZjNjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9jaGVjay1pZi10YXJnZXQtaXMtNjRiLW5vdC1ob3N0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotQXV0aG9yOiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+Ci1EYXRlOiAgIFN1biBNYXIgMjUgMDI6MDI6MjcgMjAxMiArMDIwMAotCi1UaGlzIHBhdGNoIHdhcyBhZGRlZCBmb3IgNjRiaXQgaG9zdCBtYWNoaW5lcy4gSW4gdGhlIGNvbXBpbGUgcHJvY2VzcyBweXRob24KLWlzIGNoZWNraW5nIGlmIHBsYXRmb3JtIGlzIGEgNjRiaXQgcGxhdGZvcm0gdXNpbmcgc3lzLm1heGludCB3aGljaCBpcyB0aGUgaG9zdCdzCi12YWx1ZS4gVGhlIHBhdGNoIGZpeGVzIHRoaXMgaXNzdWUgc28gdGhhdCBweXRob24gd291bGQgY2hlY2sgaWYgVEFSR0VUIG1hY2hpbmUKLWlzIDY0Yml0IG5vdCB0aGUgSE9TVCBtYWNoaW5lLiBJbiB0aGlzIHdheSB3aWxsIGhhdmUgImRsIiBhbmQgImltYWdlb3AiIG1vZHVsZXMKLWJ1aWx0IGlmIEhPU1QgbWFjaGluZSBpcyA2NGJpdCBidXQgdGhlIHRhcmdldCBtYWNoaW5lIGlzIDMyYml0LgotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JbmRleDogUHl0aG9uLTIuNy4xMS9zZXR1cC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTEub3JpZy9zZXR1cC5weQotKysrIFB5dGhvbi0yLjcuMTEvc2V0dXAucHkKLUBAIC0zNSw2ICszNSwyMSBAQCBDT01QSUxFRF9XSVRIX1BZREVCVUcgPSAoJy0td2l0aC1weWRlYnVnCi0gIyBUaGlzIGdsb2JhbCB2YXJpYWJsZSBpcyB1c2VkIHRvIGhvbGQgdGhlIGxpc3Qgb2YgbW9kdWxlcyB0byBiZSBkaXNhYmxlZC4KLSBkaXNhYmxlZF9tb2R1bGVfbGlzdCA9IFtdCi0gCi0rZGVmIHRhcmdldF9pc182NGJpdF9wbGF0Zm9ybSAoKToKLSsgICAgIiIiCi0rICAgIEluIGNhc2Ugb2YgY3Jvc3MtY29tcGlsZSwgc29tZSBtb2R1bGVzIGFyZSBub3QgYnVpbGQgYXMgc2V0dXAgY2hlY2tzIGlmIEhPU1QKLSsgICAgaXMgNjRiaXQgYW5kIG5vdCBUQVJHRVQuCi0rICAgIEFzIHB5dGhvbiB3YXMgYnVpbHQgZm9yIFRBUkdFVCB3ZSBjYW4gY2hlY2sgdGhpcyBpbiBweWNvbmZpZy5oIGluIHRoaXMgd2F5OgotKwlTaXplb2YgTE9ORyBvbiBhIDMyIGJpdCBwbGF0Zm9ybSBpcyA0IGJ5dGVzCi0rCVNpemVvZiBMT05HIG9uIGEgNjQgYml0IHBsYXRmb3JtIGlzIDggYnl0ZXMKLSsgICAgIiIiCi0rICAgIHB5Y29uZiA9IG9wZW4oInB5Y29uZmlnLmgiKS5yZWFkKCkKLSsgICAgYXV4ID0gcmUuc2VhcmNoKHIiI3MqZGVmaW5lXHMrU0laRU9GX0xPTkdccys4XHMqIiwgcHljb25mKQotKyAgICBpZiBhdXggaXMgbm90IE5vbmU6Ci0rCXJldHVybiBUcnVlCi0rICAgIGVsc2U6Ci0rCXJldHVybiBGYWxzZQotKwotIGRlZiBhZGRfZGlyX3RvX2xpc3QoZGlybGlzdCwgZGlyKToKLSAgICAgIiIiQWRkIHRoZSBkaXJlY3RvcnkgJ2RpcicgdG8gdGhlIGxpc3QgJ2Rpcmxpc3QnIChhdCB0aGUgZnJvbnQpIGlmCi0gICAgIDEpICdkaXInIGlzIG5vdCBhbHJlYWR5IGluICdkaXJsaXN0JwotQEAgLTcxNiw3ICs3MzEsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdhdWRpb29wJywgWydhdWRpb29wLmMnXSkgKQotIAotICAgICAgICAgIyBEaXNhYmxlZCBvbiA2NC1iaXQgcGxhdGZvcm1zCi0tICAgICAgICBpZiBzeXMubWF4c2l6ZSAhPSA5MjIzMzcyMDM2ODU0Nzc1ODA3TDoKLSsgICAgICAgIGlmIG5vdCB0YXJnZXRfaXNfNjRiaXRfcGxhdGZvcm0oKToKLSAgICAgICAgICAgICAjIE9wZXJhdGlvbnMgb24gaW1hZ2VzCi0gICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignaW1hZ2VvcCcsIFsnaW1hZ2VvcC5jJ10pICkKLSAgICAgICAgIGVsc2U6Ci1AQCAtMTU0NSw3ICsxNTYwLDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX2NvZGVjc18lcycgJSBsb2MpCi0gCi0gICAgICAgICAjIER5bmFtaWMgbG9hZGluZyBtb2R1bGUKLS0gICAgICAgIGlmIHN5cy5tYXhpbnQgPT0gMHg3ZmZmZmZmZjoKLSsgICAgICAgIGlmIG5vdCB0YXJnZXRfaXNfNjRiaXRfcGxhdGZvcm0oKToKLSAgICAgICAgICAgICAjIFRoaXMgcmVxdWlyZXMgc2l6ZW9mKGludCkgPT0gc2l6ZW9mKGxvbmcpID09IHNpemVvZihjaGFyKikKLSAgICAgICAgICAgICBkbF9pbmMgPSBmaW5kX2ZpbGUoJ2RsZmNuLmgnLCBbXSwgaW5jX2RpcnMpCi0gICAgICAgICAgICAgaWYgKGRsX2luYyBpcyBub3QgTm9uZSkgYW5kIChob3N0X3BsYXRmb3JtIG5vdCBpbiBbJ2F0aGVvcyddKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vY3JlYXRlX21hbmlmZXN0Mi5weSBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vY3JlYXRlX21hbmlmZXN0Mi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ2NTk1MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2NyZWF0ZV9tYW5pZmVzdDIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyOTggKzAsMCBAQAotIyBUaGlzIHNjcmlwdCBpcyB1c2VkIGFzIGEgYml0YmFrZSB0YXNrIHRvIGNyZWF0ZSBhIG5ldyBweXRob24gbWFuaWZlc3QKLSMgJCBiaXRiYWtlIHB5dGhvbiAtYyBjcmVhdGVfbWFuaWZlc3QKLSMKLSMgT3VyIGdvYWwgaXMgdG8ga2VlcCBweXRob24tY29yZSBhcyBzbWFsbCBhcyBwb3NpYmxlIGFuZCBhZGQgb3RoZXIgcHl0aG9uCi0jIHBhY2thZ2VzIG9ubHkgd2hlbiB0aGUgdXNlciBuZWVkcyB0aGVtLCBoZW5jZSB3aHkgd2Ugc3BsaXQgdXBzdHJlYW0gcHl0aG9uCi0jIGludG8gc2V2ZXJhbCBwYWNrYWdlcy4KLSMKLSMgSW4gYSB2ZXJ5IHNpbXBsaXN0aWMgd2F5IHdoYXQgdGhpcyBkb2VzIGlzOiAKLSMgTGF1bmNoIHB5dGhvbiBhbmQgc2VlIHNwZWNpZmljYWxseSB3aGF0IGlzIHJlcXVpcmVkIGZvciBpdCB0byBydW4gYXQgYSBtaW5pbXVtCi0jCi0jIEdvIHRocm91Z2ggdGhlIHB5dGhvbi1tYW5pZmVzdCBmaWxlIGFuZCBsYXVuY2ggYSBzZXBhcmF0ZSB0YXNrIGZvciBldmVyeSBzaW5nbGUKLSMgb25lIG9mIHRoZSBmaWxlcyBvbiBlYWNoIHBhY2thZ2UsIHRoaXMgdGFzayB3aWxsIGNoZWNrIHdoYXQgd2FzIHJlcXVpcmVkIGZvciB0aGF0Ci0jIHNwZWNpZmljIG1vZHVsZSB0byBydW4sIHRoZXNlIG1vZHVsZXMgd2lsbCBiZSBjYWxsZWQgZGVwZW5kZW5jaWVzLgotIyBUaGUgb3V0cHV0IG9mIHN1Y2ggdGFzayB3aWxsIGJlIGEgbGlzdCBvZiB0aGUgbW9kdWxlcyBvciBkZXBlbmRlbmNpZXMgdGhhdCB3ZXJlCi0jIGZvdW5kIGZvciB0aGF0IGZpbGUuCi0jCi0jIFN1Y2ggb3V0cHV0IHdpbGwgYmUgcGFyc2VkIGJ5IHRoaXMgc2NyaXB0LCB3ZSB3aWxsIGxvb2sgZm9yIGVhY2ggZGVwZW5kZW5jeSBvbiB0aGUKLSMgbWFuaWZlc3QgYW5kIGlmIHdlIGZpbmQgdGhhdCBhbm90aGVyIHBhY2thZ2UgYWxyZWFkeSBpbmNsdWRlcyBpdCwgdGhlbiB3ZSB3aWxsIGFkZAotIyB0aGF0IHBhY2thZ2UgYXMgYW4gUkRFUEVORFMgdG8gdGhlIHBhY2thZ2Ugd2UgYXJlIGN1cnJlbnRseSBjaGVja2luZzsgaW4gY2FzZSB3ZSBkb250Ci0jIGZpbmQgdGhlIGN1cnJlbnQgZGVwZW5kZW5jeSBvbiBhbnkgb3RoZXIgcGFja2FnZSB3ZSB3aWxsIGFkZCBpdCB0byB0aGUgY3VycmVudCBwYWNrYWdlCi0jIGFzIHBhcnQgb2YgRklMRVMuCi0jCi0jCi0jIFRoaXMgd2F5IHdlIHdpbGwgY3JlYXRlIGEgbmV3IG1hbmlmZXN0IGZyb20gdGhlIGRhdGEgc3RydWN0dXJlIHRoYXQgd2FzIGJ1aWx0IGR1cmluZwotIyB0aGlzIHByb2Nlc3MsIG9uIHRoaXMgbmV3IG1hbmlmZXN0IGVhY2ggcGFja2FnZSB3aWxsIGNvbnRhaW4gc3BlY2lmaWNhbGx5IG9ubHkKLSMgd2hhdCBpdCBuZWVkcyB0byBydW4uCi0jCi0jIFRoZXJlIGFyZSBzb21lIGNhdmVhdHMgd2hpY2ggd2UgdHJ5IHRvIGRlYWwgd2l0aCwgc3VjaCBhcyByZXBlYXRlZCBmaWxlcyBvbiBkaWZmZXJlbnQKLSMgcGFja2FnZXMsIHBhY2thZ2VzIHRoYXQgaW5jbHVkZSBmb2xkZXJzLCB3aWxkY2FyZHMsIGFuZCBzcGVjaWFsIHBhY2thZ2VzLgotIyBJdHMgYWxzbyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoaXMgbWV0aG9kIG9ubHkgd29ya3MgZm9yIHB5dGhvbiBmaWxlcywgYW5kIHNoYXJlZAotIyBsaWJyYXJpZXMuIFN0YXRpYyBsaWJyYXJpZXMsIGhlYWRlciBmaWxlcyBhbmQgYmluYXJpZXMgbmVlZCB0byBiZSBkZWFsdCB3aXRoIG1hbnVhbGx5LgotIwotIyBBdXRob3I6IEFsZWphbmRybyBFbmVkaW5vIEhlcm5hbmRleiBTYW1hbmllZ28gImFlaHMyOSIgPGFlaHMyOSBhdCBnbWFpbCBkb3QgY29tPgotCi0KLWltcG9ydCBzeXMKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQganNvbgotaW1wb3J0IG9zCi1pbXBvcnQgY29sbGVjdGlvbnMKLQotIyBIYWNrIHRvIGdldCBuYXRpdmUgcHl0aG9uIHNlYXJjaCBwYXRoIChmb3IgZm9sZGVycyksIG5vdCBmb25kIG9mIGl0IGJ1dCBpdCB3b3JrcyBmb3Igbm93Ci1waXZvdD0ncmVjaXBlLXN5c3Jvb3QtbmF0aXZlJwotZm9yIHAgaW4gc3lzLnBhdGg6Ci0gIGlmIHBpdm90IGluIHA6Ci0gICAgbmF0aXZlbGliZm9sZGVyPXBbOnAuZmluZChwaXZvdCkrbGVuKHBpdm90KV0KLQotIyBFbXB0eSBkaWN0IHRvIGhvbGQgdGhlIHdob2xlIG1hbmlmZXN0Ci1uZXdfbWFuaWZlc3QgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpCi0KLSMgQ2hlY2sgZm9yIHJlcGVhdGVkIGZpbGVzLCBmb2xkZXJzIGFuZCB3aWxkY2FyZHMKLWFsbGZpbGVzPVtdCi1yZXBlYXRlZD1bXQotd2lsZGNhcmRzPVtdCi0KLWhhc2ZvbGRlcnM9W10KLWFsbGZvbGRlcnM9W10KLQotZGVmIGlzRm9sZGVyKHZhbHVlKToKLSAgaWYgb3MucGF0aC5pc2Rpcih2YWx1ZS5yZXBsYWNlKCcke2xpYmRpcn0nLG5hdGl2ZWxpYmZvbGRlcisnL3Vzci9saWInKSkgb3Igb3MucGF0aC5pc2Rpcih2YWx1ZS5yZXBsYWNlKCcke2xpYmRpcn0nLG5hdGl2ZWxpYmZvbGRlcisnL3Vzci9saWI2NCcpKSBvciBvcy5wYXRoLmlzZGlyKHZhbHVlLnJlcGxhY2UoJyR7bGliZGlyfScsbmF0aXZlbGliZm9sZGVyKycvdXNyL2xpYjMyJykpOgotICAgIHJldHVybiBUcnVlCi0gIGVsc2U6Ci0gICAgcmV0dXJuIEZhbHNlCi0KLWRlZiBwcmVwZW5kX2NvbW1lbnRzKGNvbW1lbnRzLCBqc29uX21hbmlmZXN0KToKLSAgICB3aXRoIG9wZW4oanNvbl9tYW5pZmVzdCwgJ3IrJykgYXMgbWFuaWZlc3Q6Ci0gICAgICAgIGpzb25fY29udGVudHMgPSBtYW5pZmVzdC5yZWFkKCkKLSAgICAgICAgbWFuaWZlc3Quc2VlaygwLCAwKQotICAgICAgICBtYW5pZmVzdC53cml0ZShjb21tZW50cyArIGpzb25fY29udGVudHMpCi0KLSMgUmVhZCBleGlzdGluZyBKU09OIG1hbmlmZXN0Ci13aXRoIG9wZW4oJ3B5dGhvbjItbWFuaWZlc3QuanNvbicpIGFzIG1hbmlmZXN0OgotICAgICMgVGhlIEpTT04gZm9ybWF0IGRvZXNuJ3QgYWxsb3cgY29tbWVudHMgc28gd2UgaGFjayB0aGUgY2FsbCB0byBrZWVwIHRoZSBjb21tZW50cyB1c2luZyBhIG1hcmtlcgotICAgIG1hbmlmZXN0X3N0ciA9ICBtYW5pZmVzdC5yZWFkKCkKLSAgICBqc29uX3N0YXJ0ID0gbWFuaWZlc3Rfc3RyLmZpbmQoJyMgRU9DJykgKyA2ICMgRU9DICsgXG4KLSAgICBtYW5pZmVzdC5zZWVrKDApCi0gICAgY29tbWVudHMgPSBtYW5pZmVzdC5yZWFkKGpzb25fc3RhcnQpCi0gICAgbWFuaWZlc3Rfc3RyID0gbWFuaWZlc3QucmVhZCgpCi0gICAgb2xkX21hbmlmZXN0ID0ganNvbi5sb2FkcyhtYW5pZmVzdF9zdHIsIG9iamVjdF9wYWlyc19ob29rPWNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KQotCi0jIEZpcnN0IHBhc3MgdG8gZ2V0IGNvcmUtcGFja2FnZSBmdW5jdGlvbmFsaXR5LCBiZWNhdXNlIHdlIGJhc2UgZXZlcnl0aGluZyBvbiB0aGUgZmFjdCB0aGF0IGNvcmUgaXMgYWN0dWFsbHkgd29ya2luZwotIyBOb3QgZXhhY3RseSB0aGUgc2FtZSBzbyBpdCBzaG91bGQgbm90IGJlIGEgZnVuY3Rpb24KLXByaW50ICgiR2V0dGluZyBkZXBlbmRlbmNpZXMgZm9yIGNvcmUgcGFja2FnZToiKQotCi0jIFNwZWNpYWwgY2FsbCB0byBjaGVjayBmb3IgY29yZSBwYWNrYWdlCi1vdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbc3lzLmV4ZWN1dGFibGUsICdnZXRfbW9kdWxlX2RlcHMyLnB5JywgJ3B5dGhvbi1jb3JlLXBhY2thZ2UnXSkKLWZvciBpdGVtIGluIG91dHB1dC5zcGxpdCgpOgotICAgICMgV2UgYXBwZW5kIGl0IHNvIGl0IGRvZXNudCBodXJ0IHdoYXQgd2UgY3VycmVudGx5IGhhdmU6Ci0gICAgaWYgaXRlbSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106Ci0gICAgICAgICMgV2UgdXNlIHRoZSBzYW1lIGRhdGEgc3RydWN0dXJlIHNpbmNlIGl0cyB0aGUgb25lIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjaGVjawotICAgICAgICAjIGRlcGVuZGVuY2llcyBmb3Igb3RoZXIgcGFja2FnZXMKLSAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKGl0ZW0pCi0KLWZvciB2YWx1ZSBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKLSAgIyBJZ25vcmUgZm9sZGVycywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlLCBkaWZmaWN1bHQgdG8gaGFuZGxlIG11bHRpbGliCi0gIGlmIGlzRm9sZGVyKHZhbHVlKToKLSAgICAjIFBhc3MgaXQgZGlyZWN0bHkKLSAgICBpZiB2YWx1ZSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106Ci0gICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCi0gICMgSWdub3JlIGJpbmFyaWVzLCBzaW5jZSB3ZSBkb24ndCBpbXBvcnQgdGhvc2UsIGFzc3VtZSBpdCB3YXMgYWRkZWQgY29ycmVjdGx5IChtYW51YWxseSkKLSAgaWYgJyR7YmluZGlyfScgaW4gdmFsdWU6Ci0gICAgIyBQYXNzIGl0IGRpcmVjdGx5Ci0gICAgaWYgdmFsdWUgbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgotICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQotICAgIGNvbnRpbnVlCi0gICMgSWdub3JlIGVtcHR5IHZhbHVlcwotICBpZiB2YWx1ZSA9PSAnJzoKLSAgICBjb250aW51ZQotICBpZiAnJHtpbmNsdWRlZGlyfScgaW4gdmFsdWU6Ci0gICAgaWYgdmFsdWUgbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgotICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQotICAgIGNvbnRpbnVlCi0gICMgR2V0IG1vZHVsZSBuYW1lICwgc2hvdWxkbnQgYmUgYWZmZWN0ZWQgYnkgbGliZGlyL2JpbmRpcgotICB2YWx1ZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShvcy5wYXRoLm5vcm1wYXRoKHZhbHVlKSkpWzBdCi0KLQotICAjIExhdW5jaCBzZXBhcmF0ZSB0YXNrIGZvciBlYWNoIG1vZHVsZSBmb3IgZGV0ZXJtaW5pc3RpYyBiZWhhdmlvcgotICAjIEVhY2ggbW9kdWxlIHdpbGwgb25seSBpbXBvcnQgd2hhdCBpcyBuZWNlc3NhcnkgZm9yIGl0IHRvIHdvcmsgaW4gc3BlY2lmaWMKLSAgcHJpbnQgKCdHZXR0aW5nIGRlcGVuZGVuY2llcyBmb3IgbW9kdWxlOiAlcycgJSB2YWx1ZSkKLSAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3N5cy5leGVjdXRhYmxlLCAnZ2V0X21vZHVsZV9kZXBzMi5weScsICclcycgJSB2YWx1ZV0pCi0gIGZvciBpdGVtIGluIG91dHB1dC5zcGxpdCgpOgotICAgICMgV2UgYXBwZW5kIGl0IHNvIGl0IGRvZXNudCBodXJ0IHdoYXQgd2UgY3VycmVudGx5IGhhdmU6Ci0gICAgaWYgaXRlbSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106Ci0gICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQoaXRlbSkKLQotIyBXZSBjaGVjayB3aGljaCBwYWNrYWdlcyBpbmNsdWRlIGZvbGRlcnMKLWZvciBrZXkgaW4gb2xkX21hbmlmZXN0OgotICAgIGZvciB2YWx1ZSBpbiBvbGRfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKLSAgICAgICAgIyBJZ25vcmUgZm9sZGVycywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlLCBkaWZmaWN1bHQgdG8gaGFuZGxlIG11bHRpbGliCi0gICAgICAgIGlmIGlzRm9sZGVyKHZhbHVlKToKLSAgICAgICAgICAgIHByaW50ICgnJXMgaXMgYSBmb2xkZXInICUgdmFsdWUpCi0gICAgICAgICAgICBpZiBrZXkgbm90IGluIGhhc2ZvbGRlcnM6Ci0gICAgICAgICAgICAgICAgaGFzZm9sZGVycy5hcHBlbmQoa2V5KQotICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIGFsbGZvbGRlcnM6Ci0gICAgICAgICAgICAgICAgYWxsZm9sZGVycy5hcHBlbmQodmFsdWUpCi0KLWZvciBrZXkgaW4gb2xkX21hbmlmZXN0OgotICAgICMgVXNlIGFuIGVtcHR5IGRpY3QgYXMgZGF0YSBzdHJ1Y3R1cmUgdG8gaG9sZCBkYXRhIGZvciBlYWNoIHBhY2thZ2UgYW5kIGZpbGwgaXQgdXAKLSAgICBuZXdfbWFuaWZlc3Rba2V5XSA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCkKLSAgICBuZXdfbWFuaWZlc3Rba2V5XVsnc3VtbWFyeSddID0gb2xkX21hbmlmZXN0W2tleV1bJ3N1bW1hcnknXQotICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddPVtdCi0gICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10gPSBbXQotCi0gICAgIyBBbGwgcGFja2FnZXMgc2hvdWxkIGRlcGVuZCBvbiBjb3JlCi0gICAgaWYga2V5ICE9ICdjb3JlJzoKLSAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ10uYXBwZW5kKCdjb3JlJykKLQotICAgICMgSGFuZGxlIHNwZWNpYWwgY2FzZXMsIHdlIGFzc3VtZSB0aGF0IHdoZW4gdGhleSB3ZXJlIG1hbnVhbGx5IGFkZGVkIAotICAgICMgdG8gdGhlIG1hbmlmZXN0IHdlIGtuZXcgd2hhdCB3ZSB3ZXJlIGRvaW5nLgotICAgIHByaW50ICgnSGFuZGxpbmcgcGFja2FnZSAlcycgJSBrZXkpCi0gICAgc3BlY2lhbF9wYWNrYWdlcz1bJ21pc2MnLCAnbW9kdWxlcycsICd0ZXN0cycsICdkZXYnXQotICAgIGlmIGtleSBpbiBzcGVjaWFsX3BhY2thZ2VzIG9yICdzdGF0aWNkZXYnIGluIGtleToKLSAgICAgICAgcHJpbnQoJ1Bhc3NpbmcgJXMgcGFja2FnZSBkaXJlY3RseScgJSBrZXkpCi0gICAgICAgIG5ld19tYW5pZmVzdFtrZXldPW9sZF9tYW5pZmVzdFtrZXldCi0gICAgICAgIGNvbnRpbnVlCi0KLSAgICBmb3IgdmFsdWUgaW4gb2xkX21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106Ci0gICAgICAgICMgV2UgYWxyZWFkeSBoYW5kbGVkIGNvcmUgb24gdGhlIGZpcnN0IHBhc3MKLSAgICAgICAgaWYga2V5ID09ICdjb3JlJzoKLSAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICMgSWdub3JlIGZvbGRlcnMsIHNpbmNlIHdlIGRvbid0IGltcG9ydCB0aG9zZSwgZGlmZmljdWx0IHRvIGhhbmRsZSBtdWx0aWxpYgotICAgICAgICBpZiBpc0ZvbGRlcih2YWx1ZSk6Ci0gICAgICAgICAgICAjIFBhc3MgZm9sZGVycyBkaXJlY3RseQotICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQotICAgICAgICAjIElnbm9yZSBiaW5hcmllcywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlCi0gICAgICAgIGlmICcke2JpbmRpcn0nIGluIHZhbHVlOgotICAgICAgICAgICAgIyBQYXNzIGl0IGRpcmVjdGx5IHRvIHRoZSBuZXcgbWFuaWZlc3QgZGF0YSBzdHJ1Y3R1cmUKLSAgICAgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKLSAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICAjIElnbm9yZSBlbXB0eSB2YWx1ZXMKLSAgICAgICAgaWYgdmFsdWUgPT0gJyc6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiAnJHtpbmNsdWRlZGlyfScgaW4gdmFsdWU6Ci0gICAgICAgICAgICBpZiB2YWx1ZSBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106Ci0gICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgIyBHZXQgbW9kdWxlIG5hbWUgLCBzaG91bGRudCBiZSBhZmZlY3RlZCBieSBsaWJkaXIvYmluZGlyCi0gICAgICAgIHZhbHVlID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGgubm9ybXBhdGgodmFsdWUpKSlbMF0KLQotICAgICAgICAjIExhdW5jaCBzZXBhcmF0ZSB0YXNrIGZvciBlYWNoIG1vZHVsZSBmb3IgZGV0ZXJtaW5pc3RpYyBiZWhhdmlvcgotICAgICAgICAjIEVhY2ggbW9kdWxlIHdpbGwgb25seSBpbXBvcnQgd2hhdCBpcyBuZWNlc3NhcnkgZm9yIGl0IHRvIHdvcmsgaW4gc3BlY2lmaWMKLSAgICAgICAgcHJpbnQgKCdHZXR0aW5nIGRlcGVuZGVuY2llcyBmb3IgbW9kdWxlOiAlcycgJSB2YWx1ZSkKLSAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3N5cy5leGVjdXRhYmxlLCAnZ2V0X21vZHVsZV9kZXBzMi5weScsICclcycgJSB2YWx1ZV0pCi0KLSAgICAgICAgIyBXZSBjYW4gcHJpbnQgZGVwZW5kZW5jaWVzIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMKLSAgICAgICAgI3ByaW50IChvdXRwdXQpCi0gICAgICAgICMgT3V0cHV0IHdpbGwgaGF2ZSBhbGwgZGVwZW5kZW5jaWVzCi0gICAgICAgIGZvciBpdGVtIGluIG91dHB1dC5zcGxpdCgpOgotCi0gICAgICAgICAgICAjIFdhcm5pbmc6IFRoaXMgZmlyc3QgcGFydCBpcyB1Z2x5Ci0gICAgICAgICAgICAjIE9uZSBvZiB0aGUgZGVwZW5kZW5jaWVzIHRoYXQgd2FzIGZvdW5kLCBjb3VsZCBiZSBpbnNpZGUgb2Ygb25lIG9mIHRoZSBmb2xkZXJzIGluY2x1ZGVkIGJ5IGFub3RoZXIgcGFja2FnZQotICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGNoZWNrIGlmIHRoaXMgaGFwcGVucyBzbyB3ZSBjYW4gYWRkIHRoZSBwYWNrYWdlIGNvbnRhaW5pbmcgdGhlIGZvbGRlciBhcyBhbiBSREVQRU5EUwotICAgICAgICAgICAgIyBlLmcuIEZvbGRlciBlbmNvZGluZ3MgY29udGFpbmVkIGluIGNvZGVjcwotICAgICAgICAgICAgIyBUaGlzIHdvdWxkIGJlIHNvbHZlZCBpZiBubyBwYWNrYWdlcyBpbmNsdWRlZCBhbnkgZm9sZGVycwotCi0gICAgICAgICAgICAjIFRoaXMgY2FuIGJlIGRvbmUgaW4gdHdvIHdheXM6Ci0gICAgICAgICAgICAjIDEgLSBXZSBhc3N1bWUgdGhhdCBpZiB3ZSB0YWtlIG91dCB0aGUgZmlsZW5hbWUgZnJvbSB0aGUgcGF0aCB3ZSB3b3VsZCBnZXQKLSAgICAgICAgICAgICMgICB0aGUgZm9sZGVyIHN0cmluZywgdGhlbiB3ZSB3b3VsZCBjaGVjayBpZiBmb2xkZXIgc3RyaW5nIGlzIGluIHRoZSBsaXN0IG9mIGZvbGRlcnMKLSAgICAgICAgICAgICMgICBUaGlzIHdvdWxkIG5vdCB3b3JrIGlmIGEgcGFja2FnZSBjb250YWlucyBhIGZvbGRlciB3aGljaCBjb250YWlucyBhbm90aGVyIGZvbGRlcgotICAgICAgICAgICAgIyAgIGUuZy4gcGF0aC9mb2xkZXIxL2ZvbGRlcjIvZmlsZW5hbWUgIGZvbGRlcl9zdHJpbmc9IHBhdGgvZm9sZGVyMS9mb2xkZXIyCi0gICAgICAgICAgICAjICAgZm9sZGVyX3N0cmluZyB3b3VsZCBub3QgbWF0Y2ggYW55IHZhbHVlIGNvbnRhaW5lZCBpbiB0aGUgbGlzdCBvZiBmb2xkZXJzCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIDIgLSBXZSBkbyBpdCB0aGUgb3RoZXIgd2F5IGFyb3VuZCwgY2hlY2tpbmcgaWYgdGhlIGZvbGRlciBpcyBjb250YWluZWQgaW4gdGhlIHBhdGgKLSAgICAgICAgICAgICMgICBlLmcuIHBhdGgvZm9sZGVyMS9mb2xkZXIyL2ZpbGVuYW1lICBmb2xkZXJfc3RyaW5nPSBwYXRoL2ZvbGRlcjEvZm9sZGVyMgotICAgICAgICAgICAgIyAgIGlzIGZvbGRlcl9zdHJpbmcgaW5zaWRlIHBhdGgvZm9sZGVyMS9mb2xkZXIyL2ZpbGVuYW1lPywgCi0gICAgICAgICAgICAjICAgWWVzLCBpdCB3b3JrcywgYnV0IHdlIHdhc3RlIGEgY291cGxlIG9mIG1pbGxpc2Vjb25kcy4KLQotICAgICAgICAgICAgaW5Gb2xkZXJzPUZhbHNlCi0gICAgICAgICAgICBmb3IgZm9sZGVyIGluIGFsbGZvbGRlcnM6Ci0gICAgICAgICAgICAgICAgIyBUaGUgbW9kdWxlIGNvdWxkIGhhdmUgYSBkaXJlY3RvcnkgbmFtZWQgYWZ0ZXIgaXQsIGUuZy4geG1sLCBpZiB3ZSB0YWtlIG91dCB0aGUgZmlsZW5hbWUgZnJvbSB0aGUgcGF0aAotICAgICAgICAgICAgICAgICMgd2UnbGwgZW5kIHVwIHdpdGggJHtsaWJkaXJ9LCBhbmQgd2Ugd2FudCAke2xpYmRpcn0veG1sCi0gICAgICAgICAgICAgICAgaWYgaXNGb2xkZXIoaXRlbSk6Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrX3BhdGggPSBpdGVtCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgY2hlY2tfcGF0aCA9IG9zLnBhdGguZGlybmFtZShpdGVtKQotICAgICAgICAgICAgICAgIGlmIGZvbGRlciBpbiBjaGVja19wYXRoIDoKLSAgICAgICAgICAgICAgICAgICAgaW5Gb2xkZXJzID0gVHJ1ZSAjIERpZCB3ZSBmaW5kIGEgZm9sZGVyPwotICAgICAgICAgICAgICAgICAgICBmb2xkZXJGb3VuZCA9IEZhbHNlICMgU2Vjb25kIGZsYWcgdG8gYnJlYWsgaW5uZXIgZm9yCi0gICAgICAgICAgICAgICAgICAgICMgTG9vcCBvbmx5IHRocm91Z2ggcGFja2FnZXMgd2hpY2ggY29udGFpbiBmb2xkZXJzCi0gICAgICAgICAgICAgICAgICAgIGZvciBrZXlmb2xkZXIgaW4gaGFzZm9sZGVyczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb2xkZXJGb3VuZCA9PSBGYWxzZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgI3ByaW50KCJDaGVja2luZyBmb2xkZXIgJXMgb24gcGFja2FnZSAlcyIgJSAoaXRlbSxrZXlmb2xkZXIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmaWxlX2ZvbGRlciBpbiBvbGRfbWFuaWZlc3Rba2V5Zm9sZGVyXVsnZmlsZXMnXToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmlsZV9mb2xkZXI9PWZvbGRlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICgnJXMgZm91bmQgaW4gJXMnICUgKGZvbGRlciwga2V5Zm9sZGVyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGRlckZvdW5kID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYga2V5Zm9sZGVyIG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXSBhbmQga2V5Zm9sZGVyICE9IGtleToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXS5hcHBlbmQoa2V5Zm9sZGVyKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgICAgICAjIEEgZm9sZGVyIHdhcyBmb3VuZCBzbyB3ZSdyZSBkb25lIHdpdGggdGhpcyBpdGVtLCB3ZSBjYW4gZ28gb24KLSAgICAgICAgICAgIGlmIGluRm9sZGVyczoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAjIFdlIG1pZ2h0IGFscmVhZHkgaGF2ZSBpdCBvbiB0aGUgZGljdGlvbmFyeSBzaW5jZSBpdCBjb3VsZCBkZXBlbmQgb24gYSAocHJldmlvdXNseSBjaGVja2VkKSBtb2R1bGUKLSAgICAgICAgICAgIGlmIGl0ZW0gbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddOgotICAgICAgICAgICAgICAgICMgSGFuZGxlIGNvcmUgYXMgYSBzcGVjaWFsIHBhY2thZ2UsIHdlIGFscmVhZHkgZGlkIGl0IHNvIHdlIHBhc3MgaXQgdG8gTkVXIGRhdGEgc3RydWN0dXJlIGRpcmVjdGx5Ci0gICAgICAgICAgICAgICAgaWYga2V5PT0nY29yZSc6Ci0gICAgICAgICAgICAgICAgICBwcmludCgnQWRkaW5nICVzIHRvICVzIEZJTEVTJyAlIChpdGVtLCBrZXkpKQotICAgICAgICAgICAgICAgICAgaWYgaXRlbS5lbmRzd2l0aCgnKicpOgotICAgICAgICAgICAgICAgICAgICAgIHdpbGRjYXJkcy5hcHBlbmQoaXRlbSkKLSAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZChpdGVtKQotCi0gICAgICAgICAgICAgICAgICAjIENoZWNrIGZvciByZXBlYXRlZCBmaWxlcwotICAgICAgICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gYWxsZmlsZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgYWxsZmlsZXMuYXBwZW5kKGl0ZW0pCi0gICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdGVkLmFwcGVuZChpdGVtKQotCi0gICAgICAgICAgICAgICAgZWxzZToKLQotICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGlmIHRoaXMgZGVwZW5kZW5jeSBpcyBhbHJlYWR5IGNvbnRhaW5lZCBvbiBhbm90aGVyIHBhY2thZ2UsIHNvIHdlIGFkZCBpdAotICAgICAgICAgICAgICAgICAgICAjIGFzIGFuIFJERVBFTkRTLCBvciBpZiBpdHMgbm90LCBpdCBtZWFucyBpdCBzaG91bGQgYmUgY29udGFpbmVkIG9uIHRoZSBjdXJyZW50Ci0gICAgICAgICAgICAgICAgICAgICMgcGFja2FnZSwgc28gd2Ugc2hvdWxkIGFkZCBpdCB0byBGSUxFUwotICAgICAgICAgICAgICAgICAgICBmb3IgbmV3a2V5IGluIG9sZF9tYW5pZmVzdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgRGVidWcKLSAgICAgICAgICAgICAgICAgICAgICAgICNwcmludCgiQ2hlY2tpbmcgJXMgIiAlIGl0ZW0gKyAiIGluICVzIiAlIG5ld2tleSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0ZW0gaW4gb2xkX21hbmlmZXN0W25ld2tleV1bJ2ZpbGVzJ106ICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU2luY2Ugd2VyZSBuZXN0aW5nLCB3ZSBuZWVkIHRvIGNoZWNrIGl0cyBub3QgdGhlIHNhbWUga2V5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG5ld2tleSE9a2V5KToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5ld2tleSBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ106Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCBpdCB0byB0aGUgbmV3IG1hbmlmZXN0IGRhdGEgc3RydWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERlYnVnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnQWRkaW5nICVzIHRvICVzIFJERVBFTkRTLCBiZWNhdXNlIGl0IGNvbnRhaW5zICVzJyAlIChuZXdrZXksIGtleSwgaXRlbSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXS5hcHBlbmQobmV3a2V5KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgRGVidWcKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdBZGRpbmcgJXMgdG8gJXMgRklMRVMnICUgKGl0ZW0sIGtleSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFNpbmNlIGl0IHdhc250IGZvdW5kIG9uIGFub3RoZXIgcGFja2FnZSwgaXRzIG5vdCBhbiBSREVQLCBzbyBhZGQgaXQgdG8gRklMRVMgZm9yIHRoaXMgcGFja2FnZQotICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKGl0ZW0pCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtLmVuZHN3aXRoKCcqJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsZGNhcmRzLmFwcGVuZChpdGVtKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gYWxsZmlsZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsZmlsZXMuYXBwZW5kKGl0ZW0pCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdGVkLmFwcGVuZChpdGVtKQotCi1wcmludCAoJ1RoZSBmb2xsb3dpbmcgZmlsZXMgYXJlIHJlcGVhdGVkIChjb250YWluZWQgaW4gbW9yZSB0aGFuIG9uZSBwYWNrYWdlKSwgcGxlYXNlIGNoZWNrIHdoaWNoIHBhY2thZ2Ugc2hvdWxkIGdldCBpdDonKQotcHJpbnQgKHJlcGVhdGVkKQotcHJpbnQoJ1RoZSBmb2xsb3dpbmcgZmlsZXMgY29udGFpbiB3aWxkY2FyZHMsIHBsZWFzZSBjaGVjayB0aGV5IGFyZSBuZWNlc3NhcnknKQotcHJpbnQod2lsZGNhcmRzKQotcHJpbnQoJ1RoZSBmb2xsb3dpbmcgZmlsZXMgY29udGFpbiBmb2xkZXJzLCBwbGVhc2UgY2hlY2sgdGhleSBhcmUgbmVjZXNzYXJ5JykKLXByaW50KGhhc2ZvbGRlcnMpCi0KLSMgU29ydCBpdCBqdXN0IHNvIGl0IGxvb2tzIG5pY2UgCi1mb3Iga2V5IGluIG5ld19tYW5pZmVzdDoKLSAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5zb3J0KCkKLSAgICBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXS5zb3J0KCkKLQotIyBDcmVhdGUgdGhlIG1hbmlmZXN0IGZyb20gdGhlIGRhdGEgc3RydWN0dXJlIHRoYXQgd2FzIGJ1aWx0Ci13aXRoIG9wZW4oJ3B5dGhvbjItbWFuaWZlc3QuanNvbi5uZXcnLCd3JykgYXMgb3V0ZmlsZToKLSAgICBqc29uLmR1bXAobmV3X21hbmlmZXN0LG91dGZpbGUsIGluZGVudD00KQotCi1wcmVwZW5kX2NvbW1lbnRzKGNvbW1lbnRzLCdweXRob24yLW1hbmlmZXN0Lmpzb24ubmV3JykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vZml4X2Zvcl91c2luZ19kaWZmZXJlbnRfbGliZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9maXhfZm9yX3VzaW5nX2RpZmZlcmVudF9saWJkaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmNzMwOTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9maXhfZm9yX3VzaW5nX2RpZmZlcmVudF9saWJkaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0VtYmVkZGVkIHNwZWNpZmljXQotCi1UaGlzIHBhdGNoIGZpeGVzIGlzc3Vpbmcgd2l0aCBkaWZmZXJlbnQgbGliZGlyIGxpa2UgbGliNjQuCi1UaGlzIHBhdGNoIG1ha2VzIHRoZSBuYXRpdmUgcHl0aG9uIGJpbmFyeSBtb2R1bGVzIGZpbmRhYmxlCi1pbiB0aGUgaW5zdGFsbCBwcm9jZXNzIG9mIHRoZSBob3N0IHB5dGhvbi4KLQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLURhdGU6IDIwMTIvMDMvMTQKLQotVXBkYXRlZCBmb3IgcHl0aG9uIDIuNy4zCi1TaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotRGF0ZTogMjAxMi8wNS8wMQotCi1SZWJhc2VkIGZvciBweXRob24tMi43LjkKLVNpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPgotCi0KLUluZGV4OiBQeXRob24tMi43LjkvTGliL3N5c2NvbmZpZy5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuOS5vcmlnL0xpYi9zeXNjb25maWcucHkKLSsrKyBQeXRob24tMi43LjkvTGliL3N5c2NvbmZpZy5weQotQEAgLTksNyArOSw3IEBAIF9JTlNUQUxMX1NDSEVNRVMgPSB7Ci0gICAgICdwb3NpeF9wcmVmaXgnOiB7Ci0gICAgICAgICAnc3RkbGliJzogJ3tiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotICAgICAgICAgJ3BsYXRzdGRsaWInOiAne3BsYXRiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotLSAgICAgICAgJ3B1cmVsaWInOiAne2Jhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCi0rICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAotICAgICAgICAgJ3BsYXRsaWInOiAne3BsYXRiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCi0gICAgICAgICAnaW5jbHVkZSc6ICd7YmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotICAgICAgICAgJ3BsYXRpbmNsdWRlJzogJ3twbGF0YmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotQEAgLTY3LDcgKzY3LDcgQEAgX0lOU1RBTExfU0NIRU1FUyA9IHsKLSAgICAgJ3Bvc2l4X3VzZXInOiB7Ci0gICAgICAgICAnc3RkbGliJzogJ3t1c2VyYmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSAgICAgICAgICdwbGF0c3RkbGliJzogJ3t1c2VyYmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLS0gICAgICAgICdwdXJlbGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKLSsgICAgICAgICdwdXJlbGliJzogJ3t1c2VyYmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAotICAgICAgICAgJ3BsYXRsaWInOiAne3VzZXJiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCi0gICAgICAgICAnaW5jbHVkZSc6ICd7dXNlcmJhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSAgICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vYmluJywKLUluZGV4OiBQeXRob24tMi43LjkvTWFrZWZpbGUucHJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvTWFrZWZpbGUucHJlLmluCi0rKysgUHl0aG9uLTIuNy45L01ha2VmaWxlLnByZS5pbgotQEAgLTEwNDYsMjcgKzEwNDYsMjcgQEAgbGliaW5zdGFsbDoJYnVpbGRfYWxsICQoc3JjZGlyKS9MaWIvJChQTAotIAkJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9Nb2R1bGVzL3h4bW9kdWxlLmMgXAotIAkJCSQoREVTVERJUikkKExJQkRFU1QpL2Rpc3R1dGlscy90ZXN0cyA7IFwKLSAJZmkKLS0JUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAgJChSVU5TSEFSRUQpIFwKLSsJUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKToke0NST1NTUFlUSE9OUEFUSH0gJChSVU5TSEFSRUQpIFwKLSAJCSQoSE9TVFBZVEhPTikgLVdpIC10dCAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKLSAJCS1kICQoTElCREVTVCkgLWYgXAotIAkJLXggJ2JhZF9jb2Rpbmd8YmFkc3ludGF4fHNpdGUtcGFja2FnZXN8bGliMnRvMy90ZXN0cy9kYXRhJyBcCi0gCQkkKERFU1RESVIpJChMSUJERVNUKQotLQlQWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCi0rCVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCk6JHtDUk9TU1BZVEhPTlBBVEh9JChSVU5TSEFSRUQpIFwKLSAJCSQoSE9TVFBZVEhPTikgLVdpIC10dCAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKLSAJCS1kICQoTElCREVTVCkgLWYgXAotIAkJLXggJ2JhZF9jb2Rpbmd8YmFkc3ludGF4fHNpdGUtcGFja2FnZXN8bGliMnRvMy90ZXN0cy9kYXRhJyBcCi0gCQkkKERFU1RESVIpJChMSUJERVNUKQotLQktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAgJChSVU5TSEFSRUQpIFwKLSsJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCk6JHtDUk9TU1BZVEhPTlBBVEh9ICQoUlVOU0hBUkVEKSBcCi0gCQkkKEhPU1RQWVRIT04pIC1XaSAtdHQgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCi0gCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAotIAkJLXggYmFkc3ludGF4ICQoREVTVERJUikkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMKLS0JLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKLSsJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCk6JHtDUk9TU1BZVEhPTlBBVEh9ICQoUlVOU0hBUkVEKSBcCi0gCQkkKEhPU1RQWVRIT04pIC1XaSAtdHQgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCi0gCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAotIAkJLXggYmFkc3ludGF4ICQoREVTVERJUikkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMKLS0JLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKLSsJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCk6JHtDUk9TU1BZVEhPTlBBVEh9ICQoUlVOU0hBUkVEKSBcCi0gCQkkKEhPU1RQWVRIT04pIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvR3JhbW1hci50eHQKLS0JLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKLSsJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCk6JHtDUk9TU1BZVEhPTlBBVEh9ICQoUlVOU0hBUkVEKSBcCi0gCQkkKEhPU1RQWVRIT04pIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvUGF0dGVybkdyYW1tYXIudHh0Ci0gCi0gIyBDcmVhdGUgdGhlIFBMQVRESVIgc291cmNlIGRpcmVjdG9yeSwgaWYgb25lIHdhc24ndCBkaXN0cmlidXRlZC4uCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2Zsb2F0LWVuZGlhbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vZmxvYXQtZW5kaWFuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTVjOTBhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vZmxvYXQtZW5kaWFuLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjE2ICswLDAgQEAKLVB5dGhvbiB1c2VzIEFDX1JVTl9JRkVMU0UgdG8gZGV0ZXJtaW5lIHRoZSBieXRlIG9yZGVyIGZvciBmbG9hdHMgYW5kIGRvdWJsZXMsCi1hbmQgZmFsbHMgYmFjayBvbnRvICJJIGRvbid0IGtub3ciIGlmIGl0IGNhbid0IHJ1biBjb2RlLiAgVGhpcyByZXN1bHRzIGluCi1jcmlwcGxlZCBmbG9hdGluZyBwb2ludCBudW1iZXJzIGluIFB5dGhvbiwgYW5kIHRoZSByZWdyZXNzaW9uIHRlc3RzIGZhaWwuCi0KLUluc3RlYWQgb2YgcnVubmluZyBjb2RlLCB0YWtlIGEgbWFjcm8gZnJvbSBhdXRvY29uZi1hcmNoaXZlIHdoaWNoIGNvbXBpbGVzIEMKLXdpdGggYSBzcGVjaWFsIGRvdWJsZSBpbiB3aGljaCBoYXMgYW4gQVNDSUkgcmVwcmVzZW50YXRpb24sIGFuZCB0aGVuIGdyZXBzIHRoZQotYmluYXJ5IHRvIGlkZW50aWZ5IHRoZSBmb3JtYXQuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gMjUzZjQ3YjI4MTIwYzQyY2ZlNTNhNGUyZjVlZDBhYjBlZDQ2OWRlYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvc3MgQnVydG9uIDxyb3NzQGJ1cnRvbmluaS5jb20+Ci1EYXRlOiBXZWQsIDE5IFNlcCAyMDE4IDA3OjI1OjQ4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNsb3NlcyBicG8tMzQ1ODU6IERvbid0IGRvIHJ1bnRpbWUgdGVzdCB0byBnZXQgZmxvYXQgYnl0ZQotIG9yZGVyLiAoR0gtOTA4NSkKLQotQ3VycmVudGx5IGNvbmZpZ3VyZS5hYyB1c2VzIEFDX1JVTl9JRkVMU0UgdG8gZGV0ZXJtaW5lIHRoZSBieXRlIG9yZGVyIG9mIGRvdWJsZXMsIGJ1dCB0aGlzIHNpbGVudGx5IGZhaWxzIHVuZGVyIGNyb3NzIGNvbXBpbGF0aW9uIGFuZCBQeXRob24gZG9lc24ndCBkbyBmbG9hdHMgcHJvcGVybHkuCi0KLUluc3RlYWQsIHN0ZWFsIGEgbWFjcm8gZnJvbSBhdXRvY29uZi1hcmNoaXZlIHdoaWNoIGNvbXBpbGVzIGNvZGUgdXNpbmcgbWFnaWMgZG91YmxlcyAod2hpY2ggZW5jb2RlIHRvIEFTQ0lJKSBhbmQgZ3JlcCBmb3IgdGhlIHJlcHJlc2VudGF0aW9uIGluIHRoZSBiaW5hcnkuCi0KLVJGQyBiZWNhdXNlIHRoaXMgZG9lc24ndCB5ZXQgaGFuZGxlIHRoZSB3ZWlyZCBhbmNpZW50IEFSTXY0IE9BQkkgJ21peGVkLWVuZGlhbicgZW5jb2RpbmcgcHJvcGVybHkuIFRoaXMgZW5jb2RpbmcgaXMgYW5jaWVudCBhbmQgSSBkb24ndCBiZWxpZXZlIHRoZSB1bmlvbiBvZiAiUHl0aG9uIDMuOCB1c2VycyIgYW5kICJPQUJJIHVzZXJzIiBoYXMgYW55dGhpbmcgaW4uIFNob3VsZCB0aGUgc3VwcG9ydCBmb3IgdGhpcyBqdXN0IGJlIGRyb3BwZWQgdG9vPyBBbHRlcm5hdGl2ZWx5LCBzb21lb25lIHdpbGwgbmVlZCB0byBmaW5kIGFuIE9BQkkgdG9vbGNoYWluIHRvIHZlcmlmeSB0aGUgZW5jb2Rpbmcgb2YgdGhlIG1hZ2ljIGRvdWJsZS4KLQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLS0tLQotIC4uLi9CdWlsZC8yMDE4LTA5LTE4LTE2LTI4LTMxLmJwby0zNDU4NS5DR011MGgucnN0IHwgIDMgKwotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNzYgKysrKy0tLS0tLS0tLS0tLS0tLS0KLSBtNC9heF9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbi5tNCAgICAgICAgICAgICAgICAgICB8IDgzICsrKysrKysrKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDk5IGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBNaXNjL05FV1MuZC9uZXh0L0J1aWxkLzIwMTgtMDktMTgtMTYtMjgtMzEuYnBvLTM0NTg1LkNHTXUwaC5yc3QKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbTQvYXhfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4ubTQKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOTEzZDU0NjlkMC4uNzY3MjczNTM5NiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzgzNSw3NCArMzgzNSwyNCBAQCBmaV0sCi0gIyAqIENoZWNrIGZvciB2YXJpb3VzIHByb3BlcnRpZXMgb2YgZmxvYXRpbmcgcG9pbnQgKgotICMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAKLS1BQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBDIGRvdWJsZXMgYXJlIGxpdHRsZS1lbmRpYW4gSUVFRSA3NTQgYmluYXJ5NjQpCi0tQUNfQ0FDSEVfVkFMKGFjX2N2X2xpdHRsZV9lbmRpYW5fZG91YmxlLCBbCi0tQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0taW50IG1haW4oKSB7Ci0tICAgIGRvdWJsZSB4ID0gOTAwNjEwNDA3MTgzMjU4MS4wOwotLSAgICBpZiAobWVtY21wKCZ4LCAiXHgwNVx4MDRceDAzXHgwMlx4MDFceGZmXHgzZlx4NDMiLCA4KSA9PSAwKQotLSAgICAgICAgcmV0dXJuIDA7Ci0tICAgIGVsc2UKLS0gICAgICAgIHJldHVybiAxOwotLX0KLS1dXSldLAotLVthY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZT15ZXNdLAotLVthY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZT1ub10sCi0tW2FjX2N2X2xpdHRsZV9lbmRpYW5fZG91YmxlPW5vXSldKQotLUFDX01TR19SRVNVTFQoJGFjX2N2X2xpdHRsZV9lbmRpYW5fZG91YmxlKQotLWlmIHRlc3QgIiRhY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZSIgPSB5ZXMKLS10aGVuCi0tICBBQ19ERUZJTkUoRE9VQkxFX0lTX0xJVFRMRV9FTkRJQU5fSUVFRTc1NCwgMSwKLS0gIFtEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkCi0tICAgd2l0aCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSBmaXJzdF0pCi0tZmkKLS0KLS1BQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBDIGRvdWJsZXMgYXJlIGJpZy1lbmRpYW4gSUVFRSA3NTQgYmluYXJ5NjQpCi0tQUNfQ0FDSEVfVkFMKGFjX2N2X2JpZ19lbmRpYW5fZG91YmxlLCBbCi0tQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0taW50IG1haW4oKSB7Ci0tICAgIGRvdWJsZSB4ID0gOTAwNjEwNDA3MTgzMjU4MS4wOwotLSAgICBpZiAobWVtY21wKCZ4LCAiXHg0M1x4M2ZceGZmXHgwMVx4MDJceDAzXHgwNFx4MDUiLCA4KSA9PSAwKQotLSAgICAgICAgcmV0dXJuIDA7Ci0tICAgIGVsc2UKLS0gICAgICAgIHJldHVybiAxOwotLX0KLS1dXSldLAotLVthY19jdl9iaWdfZW5kaWFuX2RvdWJsZT15ZXNdLAotLVthY19jdl9iaWdfZW5kaWFuX2RvdWJsZT1ub10sCi0tW2FjX2N2X2JpZ19lbmRpYW5fZG91YmxlPW5vXSldKQotLUFDX01TR19SRVNVTFQoJGFjX2N2X2JpZ19lbmRpYW5fZG91YmxlKQotLWlmIHRlc3QgIiRhY19jdl9iaWdfZW5kaWFuX2RvdWJsZSIgPSB5ZXMKLStBWF9DX0ZMT0FUX1dPUkRTX0JJR0VORElBTgotK2lmIHRlc3QgIiRheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbiIgPSAieWVzIgotIHRoZW4KLSAgIEFDX0RFRklORShET1VCTEVfSVNfQklHX0VORElBTl9JRUVFNzU0LCAxLAotICAgW0RlZmluZSBpZiBDIGRvdWJsZXMgYXJlIDY0LWJpdCBJRUVFIDc1NCBiaW5hcnkgZm9ybWF0LCBzdG9yZWQKLSAgICB3aXRoIHRoZSBtb3N0IHNpZ25pZmljYW50IGJ5dGUgZmlyc3RdKQotLWZpCi0tCi0tIyBTb21lIEFSTSBwbGF0Zm9ybXMgdXNlIGEgbWl4ZWQtZW5kaWFuIHJlcHJlc2VudGF0aW9uIGZvciBkb3VibGVzLgotLSMgV2hpbGUgUHl0aG9uIGRvZXNuJ3QgY3VycmVudGx5IGhhdmUgZnVsbCBzdXBwb3J0IGZvciB0aGVzZSBwbGF0Zm9ybXMKLS0jIChzZWUgZS5nLiwgaXNzdWUgMTc2MjU2MSksIHdlIGNhbiBhdCBsZWFzdCBtYWtlIHN1cmUgdGhhdCBmbG9hdCA8LT4gc3RyaW5nCi0tIyBjb252ZXJzaW9ucyB3b3JrLgotLUFDX01TR19DSEVDS0lORyh3aGV0aGVyIEMgZG91YmxlcyBhcmUgQVJNIG1peGVkLWVuZGlhbiBJRUVFIDc1NCBiaW5hcnk2NCkKLS1BQ19DQUNIRV9WQUwoYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZSwgWwotLUFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCi0tI2luY2x1ZGUgPHN0cmluZy5oPgotLWludCBtYWluKCkgewotLSAgICBkb3VibGUgeCA9IDkwMDYxMDQwNzE4MzI1ODEuMDsKLS0gICAgaWYgKG1lbWNtcCgmeCwgIlx4MDFceGZmXHgzZlx4NDNceDA1XHgwNFx4MDNceDAyIiwgOCkgPT0gMCkKLS0gICAgICAgIHJldHVybiAwOwotLSAgICBlbHNlCi0tICAgICAgICByZXR1cm4gMTsKLS19Ci0tXV0pXSwKLS1bYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZT15ZXNdLAotLVthY19jdl9taXhlZF9lbmRpYW5fZG91YmxlPW5vXSwKLS1bYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZT1ub10pXSkKLS1BQ19NU0dfUkVTVUxUKCRhY19jdl9taXhlZF9lbmRpYW5fZG91YmxlKQotLWlmIHRlc3QgIiRhY19jdl9taXhlZF9lbmRpYW5fZG91YmxlIiA9IHllcwotK2VsaWYgdGVzdCAiJGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuIiA9ICJubyIKLSB0aGVuCi0rICBBQ19ERUZJTkUoRE9VQkxFX0lTX0xJVFRMRV9FTkRJQU5fSUVFRTc1NCwgMSwKLSsgIFtEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkCi0rICAgd2l0aCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSBmaXJzdF0pCi0rZWxzZQotKyAgIyBTb21lIEFSTSBwbGF0Zm9ybXMgdXNlIGEgbWl4ZWQtZW5kaWFuIHJlcHJlc2VudGF0aW9uIGZvciBkb3VibGVzLgotKyAgIyBXaGlsZSBQeXRob24gZG9lc24ndCBjdXJyZW50bHkgaGF2ZSBmdWxsIHN1cHBvcnQgZm9yIHRoZXNlIHBsYXRmb3JtcwotKyAgIyAoc2VlIGUuZy4sIGlzc3VlIDE3NjI1NjEpLCB3ZSBjYW4gYXQgbGVhc3QgbWFrZSBzdXJlIHRoYXQgZmxvYXQgPC0+IHN0cmluZwotKyAgIyBjb252ZXJzaW9ucyB3b3JrLgotKyAgIyBGTE9BVF9XT1JEU19CSUdFTkRJQU4gZG9lc250IGFjdHVhbGx5IGRldGVjdCB0aGlzIGNhc2UsIGJ1dCBpZiBpdCdzIG5vdCBiaWcKLSsgICMgb3IgbGl0dGxlLCB0aGVuIGl0IG11c3QgYmUgdGhpcz8KLSAgIEFDX0RFRklORShET1VCTEVfSVNfQVJNX01JWEVEX0VORElBTl9JRUVFNzU0LCAxLAotICAgW0RlZmluZSBpZiBDIGRvdWJsZXMgYXJlIDY0LWJpdCBJRUVFIDc1NCBiaW5hcnkgZm9ybWF0LCBzdG9yZWQKLSAgICBpbiBBUk0gbWl4ZWQtZW5kaWFuIG9yZGVyIChieXRlIG9yZGVyIDQ1NjcwMTIzKV0pCi1kaWZmIC0tZ2l0IGEvbTQvYXhfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4ubTQgYi9tNC9heF9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbi5tNAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjIxNmI5MGQ4MDMKLS0tLSAvZGV2L251bGwKLSsrKyBiL200L2F4X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLm00Ci1AQCAtMCwwICsxLDgzIEBACi0rIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rIyAgaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLmh0bWwKLSsjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsjCi0rIyBTWU5PUFNJUwotKyMKLSsjICAgQVhfQ19GTE9BVF9XT1JEU19CSUdFTkRJQU4oW0FDVElPTi1JRi1UUlVFXSwgW0FDVElPTi1JRi1GQUxTRV0sIFtBQ1RJT04tSUYtVU5LTk9XTl0pCi0rIwotKyMgREVTQ1JJUFRJT04KLSsjCi0rIyAgIENoZWNrcyB0aGUgb3JkZXJpbmcgb2Ygd29yZHMgd2l0aGluIGEgbXVsdGktd29yZCBmbG9hdC4gVGhpcyBjaGVjayBpcwotKyMgICBuZWNlc3NhcnkgYmVjYXVzZSBvbiBzb21lIHN5c3RlbXMgKGUuZy4gY2VydGFpbiBBUk0gc3lzdGVtcyksIHRoZSBmbG9hdAotKyMgICB3b3JkIG9yZGVyaW5nIGNhbiBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgYnl0ZSBvcmRlcmluZy4gSW4gYSBtdWx0aS13b3JkCi0rIyAgIGZsb2F0IGNvbnRleHQsICJiaWctZW5kaWFuIiBpbXBsaWVzIHRoYXQgdGhlIHdvcmQgY29udGFpbmluZyB0aGUgc2lnbgotKyMgICBiaXQgaXMgZm91bmQgaW4gdGhlIG1lbW9yeSBsb2NhdGlvbiB3aXRoIHRoZSBsb3dlc3QgYWRkcmVzcy4gVGhpcwotKyMgICBpbXBsZW1lbnRhdGlvbiB3YXMgaW5zcGlyZWQgYnkgdGhlIEFDX0NfQklHRU5ESUFOIG1hY3JvIGluIGF1dG9jb25mLgotKyMKLSsjICAgVGhlIGVuZGlhbm5lc3MgaXMgZGV0ZWN0ZWQgYnkgZmlyc3QgY29tcGlsaW5nIEMgY29kZSB0aGF0IGNvbnRhaW5zIGEKLSsjICAgc3BlY2lhbCBkb3VibGUgZmxvYXQgdmFsdWUsIHRoZW4gZ3JlcHBpbmcgdGhlIHJlc3VsdGluZyBvYmplY3QgZmlsZSBmb3IKLSsjICAgY2VydGFpbiBzdHJpbmdzIG9mIEFTQ0lJIHZhbHVlcy4gVGhlIGRvdWJsZSBpcyBzcGVjaWFsbHkgY3JhZnRlZCB0byBoYXZlCi0rIyAgIGEgYmluYXJ5IHJlcHJlc2VudGF0aW9uIHRoYXQgY29ycmVzcG9uZHMgd2l0aCBhIHNpbXBsZSBzdHJpbmcuIEluIHRoaXMKLSsjICAgaW1wbGVtZW50YXRpb24sIHRoZSBzdHJpbmcgIm5vb25zZWVzIiB3YXMgc2VsZWN0ZWQgYmVjYXVzZSB0aGUKLSsjICAgaW5kaXZpZHVhbCB3b3JkIHZhbHVlcyAoIm5vb24iIGFuZCAic2VlcyIpIGFyZSBwYWxpbmRyb21lcywgdGh1cyBtYWtpbmcKLSsjICAgdGhpcyB0ZXN0IGJ5dGUtb3JkZXIgYWdub3N0aWMuIElmIGdyZXAgZmluZHMgdGhlIHN0cmluZyAibm9vbnNlZXMiIGluCi0rIyAgIHRoZSBvYmplY3QgZmlsZSwgdGhlIHRhcmdldCBwbGF0Zm9ybSBzdG9yZXMgZmxvYXQgd29yZHMgaW4gYmlnLWVuZGlhbgotKyMgICBvcmRlci4gSWYgZ3JlcCBmaW5kcyAic2Vlc25vb24iLCBmbG9hdCB3b3JkcyBhcmUgaW4gbGl0dGxlLWVuZGlhbiBvcmRlci4KLSsjICAgSWYgbmVpdGhlciB2YWx1ZSBpcyBmb3VuZCwgdGhlIHVzZXIgaXMgaW5zdHJ1Y3RlZCB0byBzcGVjaWZ5IHRoZQotKyMgICBvcmRlcmluZy4KLSsjCi0rIyBMSUNFTlNFCi0rIwotKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggRGFuaWVsIEFtZWxhbmcgPGRhbkBhbWVsYW5nLm5ldD4KLSsjCi0rIyAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZQotKyMgICBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UKLSsjICAgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBvZmZlcmVkIGFzLWlzLCB3aXRob3V0IGFueQotKyMgICB3YXJyYW50eS4KLSsKLSsjc2VyaWFsIDExCi0rCi0rQUNfREVGVU4oW0FYX0NfRkxPQVRfV09SRFNfQklHRU5ESUFOXSwKLSsgIFtBQ19DQUNIRV9DSEVDSyh3aGV0aGVyIGZsb2F0IHdvcmQgb3JkZXJpbmcgaXMgYmlnZW5kaWFuLAotKyAgICAgICAgICAgICAgICAgIGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLCBbCi0rCi0rYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49dW5rbm93bgotK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWwotKwotK2RvdWJsZSBkID0gOTA5MDQyMzQ5NjcwMzY4MTAzMzc0NzA0Nzg5MDU1MDUwMTE0NzYyMTE2OTI3MzU2MTU2MzIwMTQ3OTcxMjA4NDQwNTM0ODg4NjU4MTY2OTUyNzM3MjM0NjkwOTc4NTgwNTYyNTc1MTcwMjAxOTEyNDc0ODc0Mjk1MTY5MzIxMzA1MDM1NjA2NTAwMDIzMjc1NjQ1MTc1NzA3Nzg0ODAyMzY3MjQ1MjUxNDA1MjAxMjEzNzE3MzkyMDE0OTY1NDAxMzI2NDAxMDk5Nzc3Nzk0MjA1NjU3NzY1Njg5NDI1OTIuMDsKLSsKLStdXSldLCBbCi0rCi0raWYgZ3JlcCBub29uc2VlcyBjb25mdGVzdC4kYWNfb2JqZXh0ID4vZGV2L251bGwgOyB0aGVuCi0rICBheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbj15ZXMKLStmaQotK2lmIGdyZXAgc2Vlc25vb24gY29uZnRlc3QuJGFjX29iamV4dCA+L2Rldi9udWxsIDsgdGhlbgotKyAgaWYgdGVzdCAiJGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuIiA9IHVua25vd247IHRoZW4KLSsgICAgYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49bm8KLSsgIGVsc2UKLSsgICAgYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49dW5rbm93bgotKyAgZmkKLStmaQotKwotK10pXSkKLSsKLStjYXNlICRheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbiBpbgotKyAgeWVzKQotKyAgICBtNF9kZWZhdWx0KFskMV0sCi0rICAgICAgW0FDX0RFRklORShbRkxPQVRfV09SRFNfQklHRU5ESUFOXSwgMSwKLSsgICAgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3VyIHN5c3RlbSBzdG9yZXMgd29yZHMgd2l0aGluIGZsb2F0cwotKyAgICAgICAgICAgICAgICAgIHdpdGggdGhlIG1vc3Qgc2lnbmlmaWNhbnQgd29yZCBmaXJzdF0pXSkgOzsKLSsgIG5vKQotKyAgICAkMiA7OwotKyAgKikKLSsgICAgbTRfZGVmYXVsdChbJDNdLAotKyAgICAgIFtBQ19NU0dfRVJST1IoWwotKwotK1Vua25vd24gZmxvYXQgd29yZCBvcmRlcmluZy4gWW91IG5lZWQgdG8gbWFudWFsbHkgcHJlc2V0Ci0rYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49bm8gKG9yIHllcykgYWNjb3JkaW5nIHRvIHlvdXIgc3lzdGVtLgotKwotKyAgICBdKV0pIDs7Ci0rZXNhYwotKwotK10pIyBBWF9DX0ZMT0FUX1dPUkRTX0JJR0VORElBTgotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9nZXRfbW9kdWxlX2RlcHMyLnB5IGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9nZXRfbW9kdWxlX2RlcHMyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2U3YzZmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vZ2V0X21vZHVsZV9kZXBzMi5weQorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0jIFRoaXMgc2NyaXB0IGlzIGxhdW5jaGVkIG9uIHNlcGFyYXRlIHRhc2sgZm9yIGVhY2ggcHl0aG9uIG1vZHVsZQotIyBJdCBjaGVja3MgZm9yIGRlcGVuZGVuY2llcyBmb3IgdGhhdCBzcGVjaWZpYyBtb2R1bGUgYW5kIHByaW50cyAKLSMgdGhlbSBvdXQsIHRoZSBvdXRwdXQgb2YgdGhpcyBleGVjdXRpb24gd2lsbCBoYXZlIGFsbCBkZXBlbmRlbmNpZXMKLSMgZm9yIGEgc3BlY2lmaWMgbW9kdWxlLCB3aGljaCB3aWxsIGJlIHBhcnNlZCBhbiBkZWFsdCBvbiBjcmVhdGVfbWFuaWZlc3QucHkKLSMKLSMgQXV0aG9yOiBBbGVqYW5kcm8gRW5lZGlubyBIZXJuYW5kZXogU2FtYW5pZWdvICJhZWhzMjkiIDxhZWhzMjlAZ21haWwuY29tPgotCi0KLSMgV2UgY2FuIGdldCBhIGxvZyBwZXIgbW9kdWxlLCBmb3IgYWxsIHRoZSBkZXBlbmRlbmNpZXMgdGhhdCB3ZXJlIGZvdW5kLCBidXQgaXRzIG1lc3N5LgotZGVidWc9RmFsc2UKLQotaW1wb3J0IHN5cwotCi0jIFdlIGNhbiBnZXQgYSBsaXN0IG9mIHRoZSBtb2R1bGVzIHdoaWNoIGFyZSBjdXJyZW50bHkgcmVxdWlyZWQgdG8gcnVuIHB5dGhvbgotIyBzbyB3ZSBydW4gcHl0aG9uLWNvcmUgYW5kIGdldCBpdHMgbW9kdWxlcywgd2UgdGhlbiBpbXBvcnQgd2hhdCB3ZSBuZWVkCi0jIGFuZCBjaGVjayB3aGF0IG1vZHVsZXMgYXJlIGN1cnJlbnRseSBydW5uaW5nLCBpZiB3ZSBzdWJzdHJhY3QgdGhlbSBmcm9tIHRoZQotIyBtb2R1bGVzIHdlIGhhZCBpbml0aWFsbHksIHdlIGdldCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgbW9kdWxlIHdlIGltcG9ydGVkLgotCi0jIFdlIHVzZSBpbXBvcnRsaWIgdG8gYWNoaWV2ZSB0aGlzLCBzbyB3ZSBhbHNvIG5lZWQgdG8ga25vdyB3aGF0IG1vZHVsZXMgaW1wb3J0bGliIG5lZWRzCi1pbXBvcnQgaW1wb3J0bGliCi0KLWNvcmVfZGVwcz1zZXQoc3lzLm1vZHVsZXMpCi0KLWRlZiBmaXhfcGF0aChkZXBfcGF0aCk6Ci0gICAgaW1wb3J0IG9zCi0gICAgIyBXZSBET05UIHdhbnQgdGhlIHBhdGggb24gb3VyIEhPU1Qgc3lzdGVtCi0gICAgcGl2b3Q9J3JlY2lwZS1zeXNyb290LW5hdGl2ZScKLSAgICBkZXBfcGF0aD1kZXBfcGF0aFtkZXBfcGF0aC5maW5kKHBpdm90KStsZW4ocGl2b3QpOl0KLQotICAgIGlmICcvdXNyL2JpbicgaW4gZGVwX3BhdGg6Ci0gICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9iaW4nJyR7YmluZGlyfScpCi0KLSAgICAjIEhhbmRsZSBtdWx0aWxpYiwgaXMgdGhlcmUgYSBiZXR0ZXIgd2F5PwotICAgIGlmICcvdXNyL2xpYjMyJyBpbiBkZXBfcGF0aDoKLSAgICAgICAgZGVwX3BhdGggPSBkZXBfcGF0aC5yZXBsYWNlKCcvdXNyL2xpYjMyJywnJHtsaWJkaXJ9JykKLSAgICBpZiAnL3Vzci9saWI2NCcgaW4gZGVwX3BhdGg6Ci0gICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9saWI2NCcsJyR7bGliZGlyfScpCi0gICAgaWYgJy91c3IvbGliJyBpbiBkZXBfcGF0aDoKLSAgICAgICAgZGVwX3BhdGggPSBkZXBfcGF0aC5yZXBsYWNlKCcvdXNyL2xpYicsJyR7bGliZGlyfScpCi0gICAgaWYgJy91c3IvaW5jbHVkZScgaW4gZGVwX3BhdGg6Ci0gICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnL3Vzci9pbmNsdWRlJywnJHtpbmNsdWRlZGlyfScpCi0gICAgaWYgJ19faW5pdF9fLicgaW4gZGVwX3BhdGg6Ci0gICAgICAgIGRlcF9wYXRoID0gIG9zLnBhdGguc3BsaXQoZGVwX3BhdGgpWzBdCi0KLSAgICAjIElmIGEgKi5weWMgZmlsZSB3YXMgaW1wb3J0ZWQsIHdlIHJlcGxhY2UgaXQgd2l0aCAqLnB5IChzaW5jZSB3ZSBkZWFsIHdpdGggUFlDcyBvbiBjcmVhdGVfbWFuaWZlc3QpCi0gICAgaWYgJy5weWMnIGluIGRlcF9wYXRoOgotICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2UoJy5weWMnLCcucHknKQotCi0gICAgcmV0dXJuIGRlcF9wYXRoCi0KLSMgTW9kdWxlIHRvIGltcG9ydCB3YXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50Ci1jdXJyZW50X21vZHVsZSA9ICBzdHIoc3lzLmFyZ3ZbMV0pLnJzdHJpcCgpCi1pZihkZWJ1Zz09VHJ1ZSk6Ci0JbG9nID0gb3BlbignbG9nXyVzJyAlIGN1cnJlbnRfbW9kdWxlLCd3JykKLSAgICAgICAgbG9nLndyaXRlKCdNb2R1bGUgJXMgZ2VuZXJhdGVkIHRoZSBmb2xsb3dpbmcgZGVwZW5kZW5jaWVzOlxuJyAlIGN1cnJlbnRfbW9kdWxlKQotdHJ5OgotICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCclcycgJSBjdXJyZW50X21vZHVsZSkKLWV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgotICAgIGlmIChkZWJ1Zz09VHJ1ZSk6Ci0gICAgICAgIGxvZy53cml0ZSgnTW9kdWxlIHdhcyBub3QgZm91bmQnKQotICAgIHBhc3MKLQotCi0jIEdldCBjdXJyZW50IG1vZHVsZSBkZXBlbmRlbmNpZXMsIGRpZiB3aWxsIGNvbnRhaW4gYSBsaXN0IG9mIHNwZWNpZmljIGRlcHMgZm9yIHRoaXMgbW9kdWxlCi1tb2R1bGVfZGVwcz1zZXQoc3lzLm1vZHVsZXMpCi0KLSMgV2UgaGFuZGxlIHRoZSBjb3JlIHBhY2thZ2UgKDFzdCBwYXNzIG9uIGNyZWF0ZV9tYW5pZmVzdC5weSkgYXMgYSBzcGVjaWFsIGNhc2UKLWlmIGN1cnJlbnRfbW9kdWxlID09ICdweXRob24tY29yZS1wYWNrYWdlJzoKLSAgICBkaWYgPSBjb3JlX2RlcHMKLWVsc2U6Ci0gICAgZGlmID0gbW9kdWxlX2RlcHMtY29yZV9kZXBzCi0KLQotIyBDaGVjayB3aGVyZSBlYWNoIGRlcGVuZGVuY3kgY2FtZSBmcm9tCi1mb3IgaXRlbSBpbiBkaWY6Ci0gICAgZGVwX3BhdGg9JycKLSAgICB0cnk6Ci0gICAgICAgIGlmIChkZWJ1Zz09VHJ1ZSk6Ci0gICAgICAgICAgICBsb2cud3JpdGUoJ0NhbGxpbmc6IHN5cy5tb2R1bGVzWycgKyAnJXMnICUgaXRlbSArICddLl9fZmlsZV9fXG4nKQotICAgICAgICBkZXBfcGF0aCA9IHN5cy5tb2R1bGVzWyclcycgJSBpdGVtXS5fX2ZpbGVfXwotICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlOgotICAgICAgICAjIERlYWxzIHdpdGggdGhyZWFkIChidWlsdGluIG1vZHVsZSkgbm90IGhhdmluZyBfX2ZpbGVfXyBhdHRyaWJ1dGUKLQlpZiBkZWJ1Zz09VHJ1ZToKLSAgICAgICAgICAgIGxvZy53cml0ZShpdGVtICsgJyAnKQotICAgICAgICAgICAgbG9nLndyaXRlKHN0cihlKSkKLQkgICAgbG9nLndyaXRlKCdcbicpCi0gICAgICAgICAgICBwYXNzCi0gICAgZXhjZXB0IE5hbWVFcnJvciBhcyBlOgotICAgICAgICAjIERlYWxzIHdpdGggTmFtZUVycm9yOiBuYW1lICdkZXBfcGF0aCcgaXMgbm90IGRlZmluZWQKLSAgICAgICAgIyBiZWNhdXNlIG1vZHVsZSBpcyBub3QgZm91bmQgKHdhc24ndCBjb21waWxlZD8pLCBlLmcuIGJkZHNtCi0gICAgICAgIGlmIChkZWJ1Zz09VHJ1ZSk6Ci0gICAgICAgICAgICBsb2cud3JpdGUoaXRlbSsnICcpIAotICAgICAgICAgICAgbG9nLndyaXRlKHN0cihlKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgIHBhc3MKLQotICAgICMgU2l0ZS1jdXN0b21pemUgaXMgYSBzcGVjaWFsIGNhc2Ugc2luY2Ugd2UgKE9wZW5FbWJlZGRlZCkgcHV0IGl0IHRoZXJlIG1hbnVhbGx5Ci0gICAgaWYgJ3NpdGVjdXN0b21pemUnIGluIGRlcF9wYXRoOgotICAgICAgICBkZXBfcGF0aCA9ICcke2xpYmRpcn0vcHl0aG9uMi43L3NpdGVjdXN0b21pemUucHknCi0gICAgICAgICMgUHJpbnRzIG91dCByZXN1bHQsIHdoaWNoIGlzIHdoYXQgd2lsbCBiZSB1c2VkIGJ5IGNyZWF0ZV9tYW5pZmVzdAotICAgICAgICBwcmludCAoZGVwX3BhdGgpCi0gICAgICAgIGNvbnRpbnVlCi0KLSAgICBkZXBfcGF0aCA9IGZpeF9wYXRoKGRlcF9wYXRoKQotCi0gICAgaWYgKGRlYnVnPT1UcnVlKToKLSAgICAgICAgbG9nLndyaXRlKGRlcF9wYXRoKydcbicpCi0KLSAgICAjIFByaW50cyBvdXQgcmVzdWx0LCB3aGljaCBpcyB3aGF0IHdpbGwgYmUgdXNlZCBieSBjcmVhdGVfbWFuaWZlc3QKLSAgICBwcmludCAoZGVwX3BhdGgpCi0KLWlmIGRlYnVnPT1UcnVlOgotICAgIGxvZy5jbG9zZSgpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2hvc3RfaW5jbHVkZV9jb250YW1pbmF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9ob3N0X2luY2x1ZGVfY29udGFtaW5hdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBhYWZiMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2hvc3RfaW5jbHVkZV9jb250YW1pbmF0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotd2hlbiBidWlsZGluZyBweXRob24gZm9yIHFlbXV4ODYtNjQgb24gdWJ1bnR1IDExLjEwLzY0Yml0Ci1pdCBncm9wZXMgaW50byBob3N0IGluY2x1ZGVzIGFuZCB0aGVuIG1peGVzIHRoZW0gd2l0aCBjcm9zcwotaW5jbHVkZXMgYW5kIGFzIGEgcmVzdWx0IHNvbWUgbW9kdWxlcyBmYWlsIHRvIGNvbXBpbGUgYW5kIGxpbmsKLW9uZSBvZiB0aGUgbW9kdWxlcyBpcyBweXRob24tZWxlbWVudHRyZWUgd2hpY2ggaXMgdGhlbiBub3QKLWZvdW5kIGR1cmluZyBpbWFnZSBjcmVhdGlvbgotCi1Qcm9ibGUgaXMgdGhhdCBzZXR1cC5weSB0cmllcyB0byBhZGQgbmF0aXZlIGluY2x1ZGVzIHRoYXQgbmV3ZXIKLXVidW50dSBoYXMgaW50cm9kdWNlZCBmb3IgbXVsdGlhcmNoIHN1cHBvcnQuIEJ1dCB0aGF0IHNob3VsZAotb25seSBoYXBwZW4gZm9yIG5hdGl2ZSBidWlsZHMgYW5kIG5vdCBjcm9zcyBidWlsZGluZyBweXRob24KLXNvIHdlIGFkZCBhIGNoZWNrIGhlcmUuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggYmEyZDI0Mi4uYmY4NTliZSAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTM5Myw2ICszOTMsOCBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gCi0gICAgICAgICBpZiBub3QgZmluZF9leGVjdXRhYmxlKCdkcGtnLWFyY2hpdGVjdHVyZScpOgotICAgICAgICAgICAgIHJldHVybgotKyAgICAgICAgaWYgb3MuZW52aXJvbi5nZXQoJ0NST1NTX0NPTVBJTEUnKSBpcyBub3QgTm9uZToKLSsgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgIG9wdCA9ICcnCi0gICAgICAgICBpZiBjcm9zc19jb21waWxpbmc6Ci0gICAgICAgICAgICAgb3B0ID0gJy10JyArIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSE9TVF9HTlVfVFlQRScpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL211bHRpbGliLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9tdWx0aWxpYi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI0YmMxNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL211bHRpbGliLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjk4ICswLDAgQEAKLVJlYmFzZWQgZm9yIHB5dGhvbi0yLjcuOQotU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBQeXRob24tMi43LjE0L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9jb25maWd1cmUuYWMKLSsrKyBQeXRob24tMi43LjE0L2NvbmZpZ3VyZS5hYwotQEAgLTc1OCw2ICs3NTgsMTAgQEAgU3VuT1MqKQotICAgICA7OwotIGVzYWMKLSAKLStBQ19TVUJTVChMSUIpCi0rQUNfTVNHX0NIRUNLSU5HKExJQikKLStMSUI9IlNFRE1FTElCTEVBRiIKLStBQ19NU0dfUkVTVUxUKCRMSUIpCi0gCi0gQUNfU1VCU1QoTElCUkFSWSkKLSBBQ19NU0dfQ0hFQ0tJTkcoTElCUkFSWSkKLUluZGV4OiBQeXRob24tMi43LjE0L0luY2x1ZGUvcHl0aG9ucnVuLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvSW5jbHVkZS9weXRob25ydW4uaAotKysrIFB5dGhvbi0yLjcuMTQvSW5jbHVkZS9weXRob25ydW4uaAotQEAgLTEwOCw2ICsxMDgsNyBAQCBQeUFQSV9GVU5DKGNoYXIgKikgUHlfR2V0UGF0aCh2b2lkKTsKLSAvKiBJbiB0aGVpciBvd24gZmlsZXMgKi8KLSBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0VmVyc2lvbih2b2lkKTsKLSBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0UGxhdGZvcm0odm9pZCk7Ci0rUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldExpYih2b2lkKTsKLSBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0Q29weXJpZ2h0KHZvaWQpOwotIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRDb21waWxlcih2b2lkKTsKLSBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0QnVpbGRJbmZvKHZvaWQpOwotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKLSsrKyBQeXRob24tMi43LjE0L0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5Ci1AQCAtMjIsNiArMjIsOCBAQCBmcm9tIHNpdGUgaW1wb3J0IFVTRVJfQkFTRQotIGZyb20gc2l0ZSBpbXBvcnQgVVNFUl9TSVRFCi0gCi0gCi0rbGlibmFtZSA9IHN5cy5saWIKLSsKLSBpZiBzeXMudmVyc2lvbiA8ICIyLjIiOgotICAgICBXSU5ET1dTX1NDSEVNRSA9IHsKLSAgICAgICAgICdwdXJlbGliJzogJyRiYXNlJywKLUBAIC00MSw4ICs0Myw4IEBAIGVsc2U6Ci0gCi0gSU5TVEFMTF9TQ0hFTUVTID0gewotICAgICAndW5peF9wcmVmaXgnOiB7Ci0tICAgICAgICAncHVyZWxpYic6ICckYmFzZS9saWIvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCi0tICAgICAgICAncGxhdGxpYic6ICckcGxhdGJhc2UvbGliL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAotKyAgICAgICAgJ3B1cmVsaWInOiAnJHBsYXRiYXNlLycrbGlibmFtZSsnL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAotKyAgICAgICAgJ3BsYXRsaWInOiAnJHBsYXRiYXNlLycrbGlibmFtZSsnL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAotICAgICAgICAgJ2hlYWRlcnMnOiAnJGJhc2UvaW5jbHVkZS9weXRob24kcHlfdmVyc2lvbl9zaG9ydC8kZGlzdF9uYW1lJywKLSAgICAgICAgICdzY3JpcHRzJzogJyRiYXNlL2JpbicsCi0gICAgICAgICAnZGF0YScgICA6ICckYmFzZScsCi1JbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotKysrIFB5dGhvbi0yLjcuMTQvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKLUBAIC0xMTksOCArMTE5LDExIEBAIGRlZiBnZXRfcHl0aG9uX2xpYihwbGF0X3NwZWNpZmljPTAsIHN0YW4KLSAgICAgICAgIHByZWZpeCA9IHBsYXRfc3BlY2lmaWMgYW5kIEVYRUNfUFJFRklYIG9yIFBSRUZJWAotIAotICAgICBpZiBvcy5uYW1lID09ICJwb3NpeCI6Ci0tICAgICAgICBsaWJweXRob24gPSBvcy5wYXRoLmpvaW4ocHJlZml4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWIiLCAicHl0aG9uIiArIGdldF9weXRob25fdmVyc2lvbigpKQotKyAgICAgICAgaWYgcGxhdF9zcGVjaWZpYyBvciBzdGFuZGFyZF9saWI6Ci0rICAgICAgICAgICAgbGliID0gc3lzLmxpYgotKyAgICAgICAgZWxzZToKLSsgICAgICAgICAgICBsaWIgPSAibGliIgotKyAgICAgICAgbGlicHl0aG9uID0gb3MucGF0aC5qb2luKHByZWZpeCwgbGliLCAicHl0aG9uIiArIGdldF9weXRob25fdmVyc2lvbigpKQotICAgICAgICAgaWYgc3RhbmRhcmRfbGliOgotICAgICAgICAgICAgIHJldHVybiBsaWJweXRob24KLSAgICAgICAgIGVsc2U6Ci1JbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvcHlkb2MucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL3B5ZG9jLnB5Ci0rKysgUHl0aG9uLTIuNy4xNC9MaWIvcHlkb2MucHkKLUBAIC0zNzUsNyArMzc1LDcgQEAgY2xhc3MgRG9jOgotICAgICBkb2Ntb2R1bGUgPSBkb2NjbGFzcyA9IGRvY3JvdXRpbmUgPSBkb2NvdGhlciA9IGRvY3Byb3BlcnR5ID0gZG9jZGF0YSA9IGZhaWwKLSAKLSAgICAgZGVmIGdldGRvY2xvYyhzZWxmLCBvYmplY3QsCi0tICAgICAgICAgICAgICAgICAgYmFzZWRpcj1vcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAibGliIiwKLSsgICAgICAgICAgICAgICAgICBiYXNlZGlyPW9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICJzeXMubGliIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIitzeXMudmVyc2lvblswOjNdKSk6Ci0gICAgICAgICAiIiJSZXR1cm4gdGhlIGxvY2F0aW9uIG9mIG1vZHVsZSBkb2NzIG9yIE5vbmUiIiIKLSAKLUluZGV4OiBQeXRob24tMi43LjE0L0xpYi9zaXRlLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi9zaXRlLnB5Ci0rKysgUHl0aG9uLTIuNy4xNC9MaWIvc2l0ZS5weQotQEAgLTI4OCwxMyArMjg4LDE4IEBAIGRlZiBnZXRzaXRlcGFja2FnZXMoKToKLSAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ29zMmVteCcsICdyaXNjb3MnKToKLSAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJMaWIiLCAic2l0ZS1wYWNrYWdlcyIpKQotICAgICAgICAgZWxpZiBvcy5zZXAgPT0gJy8nOgotLSAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsCi0rICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCBzeXMubGliLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpdGUtcGFja2FnZXMiKSkKLS0gICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLCAic2l0ZS1weXRob24iKSkKLSsgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsIHN5cy5saWIsICJzaXRlLXB5dGhvbiIpKQotKyAgICAgICAgICAgIGlmIHN5cy5saWIgIT0gImxpYiI6Ci0rICAgICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaXRlLXBhY2thZ2VzIikpCi0rICAgICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsICJzaXRlLXB5dGhvbiIpKQotICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKHByZWZpeCkKLS0gICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLCAic2l0ZS1wYWNrYWdlcyIpKQotKyAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgc3lzLmxpYiwgInNpdGUtcGFja2FnZXMiKSkKLSAgICAgcmV0dXJuIHNpdGVwYWNrYWdlcwotIAotIGRlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMpOgotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3N5c2NvbmZpZy5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvc3lzY29uZmlnLnB5Ci0rKysgUHl0aG9uLTIuNy4xNC9MaWIvc3lzY29uZmlnLnB5Ci1AQCAtNywxMCArNywxMCBAQCBmcm9tIG9zLnBhdGggaW1wb3J0IHBhcmRpciwgcmVhbHBhdGgKLSAKLSBfSU5TVEFMTF9TQ0hFTUVTID0gewotICAgICAncG9zaXhfcHJlZml4JzogewotLSAgICAgICAgJ3N0ZGxpYic6ICd7YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCi0tICAgICAgICAncGxhdHN0ZGxpYic6ICd7cGxhdGJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotKyAgICAgICAgJ3N0ZGxpYic6ICd7YmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSsgICAgICAgICdwbGF0c3RkbGliJzogJ3twbGF0YmFzZX0vJytzeXMubGliKycvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSAgICAgICAgICdwdXJlbGliJzogJ3tiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAotLSAgICAgICAgJ3BsYXRsaWInOiAne3BsYXRiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAotKyAgICAgICAgJ3BsYXRsaWInOiAne3BsYXRiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCi0gICAgICAgICAnaW5jbHVkZSc6ICd7YmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotICAgICAgICAgJ3BsYXRpbmNsdWRlJzogJ3twbGF0YmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotICAgICAgICAgJ3NjcmlwdHMnOiAne2Jhc2V9L2JpbicsCi1AQCAtNjUsMTAgKzY1LDEwIEBAIF9JTlNUQUxMX1NDSEVNRVMgPSB7Ci0gICAgICAgICAnZGF0YScgICA6ICd7dXNlcmJhc2V9JywKLSAgICAgICAgIH0sCi0gICAgICdwb3NpeF91c2VyJzogewotLSAgICAgICAgJ3N0ZGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotLSAgICAgICAgJ3BsYXRzdGRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSsgICAgICAgICdzdGRsaWInOiAne3VzZXJiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotKyAgICAgICAgJ3BsYXRzdGRsaWInOiAne3VzZXJiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotICAgICAgICAgJ3B1cmVsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAotLSAgICAgICAgJ3BsYXRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAotKyAgICAgICAgJ3BsYXRsaWInOiAne3VzZXJiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCi0gICAgICAgICAnaW5jbHVkZSc6ICd7dXNlcmJhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLSAgICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vYmluJywKLSAgICAgICAgICdkYXRhJyAgIDogJ3t1c2VyYmFzZX0nLAotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3Rlc3QvdGVzdF9kbC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvdGVzdC90ZXN0X2RsLnB5Ci0rKysgUHl0aG9uLTIuNy4xNC9MaWIvdGVzdC90ZXN0X2RsLnB5Ci1AQCAtNCwxMCArNCwxMSBAQAotIGltcG9ydCB1bml0dGVzdAotIGZyb20gdGVzdC50ZXN0X3N1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIGltcG9ydF9tb2R1bGUKLSBkbCA9IGltcG9ydF9tb2R1bGUoJ2RsJywgZGVwcmVjYXRlZD1UcnVlKQotK2ltcG9ydCBzeXMKLSAKLSBzaGFyZWRsaWJzID0gWwotLSAgICAoJy91c3IvbGliL2xpYmMuc28nLCAnZ2V0cGlkJyksCi0tICAgICgnL2xpYi9saWJjLnNvLjYnLCAnZ2V0cGlkJyksCi0rICAgICgnL3Vzci8nK3N5cy5saWIrJy9saWJjLnNvJywgJ2dldHBpZCcpLAotKyAgICAoJy8nK3N5cy5saWIrJy9saWJjLnNvLjYnLCAnZ2V0cGlkJyksCi0gICAgICgnL3Vzci9iaW4vY3lnd2luMS5kbGwnLCAnZ2V0cGlkJyksCi0gICAgICgnL3Vzci9saWIvbGliYy5keWxpYicsICdnZXRwaWQnKSwKLSAgICAgXQotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3Rlc3QvdGVzdF9zaXRlLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQotKysrIFB5dGhvbi0yLjcuMTQvTGliL3Rlc3QvdGVzdF9zaXRlLnB5Ci1AQCAtMjUyLDEyICsyNTIsMTYgQEAgY2xhc3MgSGVscGVyRnVuY3Rpb25zVGVzdHModW5pdHRlc3QuVGVzdAotICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyc1swXSwgd2FudGVkKQotICAgICAgICAgZWxpZiBvcy5zZXAgPT0gJy8nOgotICAgICAgICAgICAgICMgT1MgWCwgTGludXgsIEZyZWVCU0QsIGV0YwotLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcnMpLCAyKQotICAgICAgICAgICAgIHdhbnRlZCA9IG9zLnBhdGguam9pbigneG94bycsICdsaWInLCAncHl0aG9uJyArIHN5cy52ZXJzaW9uWzozXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdGUtcGFja2FnZXMnKQotLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyc1swXSwgd2FudGVkKQotKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3YW50ZWQgaW4gZGlycykKLSAgICAgICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oJ3hveG8nLCAnbGliJywgJ3NpdGUtcHl0aG9uJykKLS0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcnNbMV0sIHdhbnRlZCkKLSsgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUod2FudGVkIGluIGRpcnMpCi0rICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCd4b3hvJywgc3lzLmxpYiwgJ3B5dGhvbicgKyBzeXMudmVyc2lvbls6M10sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXRlLXBhY2thZ2VzJykKLSsgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUod2FudGVkIGluIGRpcnMpCi0rICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCd4b3hvJywgc3lzLmxpYiwgJ3NpdGUtcHl0aG9uJykKLSsgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUod2FudGVkIGluIGRpcnMpCi0gICAgICAgICBlbHNlOgotICAgICAgICAgICAgICMgb3RoZXIgcGxhdGZvcm1zCi0gICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlycyksIDIpCi1JbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvdHJhY2UucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL3RyYWNlLnB5Ci0rKysgUHl0aG9uLTIuNy4xNC9MaWIvdHJhY2UucHkKLUBAIC03NTQsMTAgKzc1NCwxMCBAQCBkZWYgbWFpbihhcmd2PU5vbmUpOgotICAgICAgICAgICAgICAgICAjIHNob3VsZCBJIGFsc28gY2FsbCBleHBhbmR1c2VyPyAoYWZ0ZXIgYWxsLCBjb3VsZCB1c2UgJEhPTUUpCi0gCi0gICAgICAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoIiRwcmVmaXgiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMucHJlZml4LCAibGliIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgc3lzLmxpYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10pKQotICAgICAgICAgICAgICAgICBzID0gcy5yZXBsYWNlKCIkZXhlY19wcmVmaXgiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICJsaWIiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsIHN5cy5saWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKLSAgICAgICAgICAgICAgICAgcyA9IG9zLnBhdGgubm9ybXBhdGgocykKLSAgICAgICAgICAgICAgICAgaWdub3JlX2RpcnMuYXBwZW5kKHMpCi1JbmRleDogUHl0aG9uLTIuNy4xNC9NYWtlZmlsZS5wcmUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTWFrZWZpbGUucHJlLmluCi0rKysgUHl0aG9uLTIuNy4xNC9NYWtlZmlsZS5wcmUuaW4KLUBAIC05MSw2ICs5MSw3IEBAIFBZX0NGTEFHUz0JJChDRkxBR1MpICQoQ1BQRkxBR1MpICQoQ0ZMQUcKLSAKLSAjIE1hY2hpbmUtZGVwZW5kZW50IHN1YmRpcmVjdG9yaWVzCi0gTUFDSERFUD0JQE1BQ0hERVBACi0rTElCPQkJQExJQkAKLSAKLSAjIE11bHRpYXJjaCBkaXJlY3RvcnkgKG1heSBiZSBlbXB0eSkKLSBNVUxUSUFSQ0g9CUBNVUxUSUFSQ0hACi1AQCAtMTEwLDcgKzExMSw3IEBAIExJQkRJUj0JCUBsaWJkaXJACi0gTUFORElSPQkJQG1hbmRpckAKLSBJTkNMVURFRElSPQlAaW5jbHVkZWRpckAKLSBDT05GSU5DTFVERURJUj0JJChleGVjX3ByZWZpeCkvaW5jbHVkZQotLVNDUklQVERJUj0JJChwcmVmaXgpL2xpYgotK1NDUklQVERJUj0JJChwcmVmaXgpL0BMSUJACi0gCi0gIyBEZXRhaWxlZCBkZXN0aW5hdGlvbiBkaXJlY3RvcmllcwotIEJJTkxJQkRFU1Q9CSQoTElCRElSKS9weXRob24kKFZFUlNJT04pCi1AQCAtNjQ1LDYgKzY0Niw3IEBAIE1vZHVsZXMvZ2V0cGF0aC5vOiAkKHNyY2RpcikvTW9kdWxlcy9nZXQKLSAJCS1ERVhFQ19QUkVGSVg9JyIkKGV4ZWNfcHJlZml4KSInIFwKLSAJCS1EVkVSU0lPTj0nIiQoVkVSU0lPTikiJyBcCi0gCQktRFZQQVRIPSciJChWUEFUSCkiJyBcCi0rCQktRExJQj0nIiQoTElCKSInIFwKLSAJCS1vICRAICQoc3JjZGlyKS9Nb2R1bGVzL2dldHBhdGguYwotIAotIE1vZHVsZXMvcHl0aG9uLm86ICQoc3JjZGlyKS9Nb2R1bGVzL3B5dGhvbi5jCi1AQCAtNjkzLDcgKzY5NSw3IEBAIHJlZ2VuLWFzdDoKLSBQeXRob24vY29tcGlsZS5vIFB5dGhvbi9zeW10YWJsZS5vIFB5dGhvbi9hc3QubzogJChzcmNkaXIpL0luY2x1ZGUvZ3JhbWluaXQuaCAkKHNyY2RpcikvSW5jbHVkZS9QeXRob24tYXN0LmgKLSAKLSBQeXRob24vZ2V0cGxhdGZvcm0ubzogJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi0tCQkkKENDKSAtYyAkKFBZX0NGTEFHUykgLURQTEFURk9STT0nIiQoTUFDSERFUCkiJyAtbyAkQCAkKHNyY2RpcikvUHl0aG9uL2dldHBsYXRmb3JtLmMKLSsJCSQoQ0MpIC1jICQoUFlfQ0ZMQUdTKSAtRFBMQVRGT1JNPSciJChNQUNIREVQKSInIC1ETElCPSciJChMSUIpIicgLW8gJEAgJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi0gCi0gUHl0aG9uL2ltcG9ydGRsLm86ICQoc3JjZGlyKS9QeXRob24vaW1wb3J0ZGwuYwotIAkJJChDQykgLWMgJChQWV9DRkxBR1MpIC1JJChETElOQ0xESVIpIC1vICRAICQoc3JjZGlyKS9QeXRob24vaW1wb3J0ZGwuYwotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTW9kdWxlcy9nZXRwYXRoLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTW9kdWxlcy9nZXRwYXRoLmMKLSsrKyBQeXRob24tMi43LjE0L01vZHVsZXMvZ2V0cGF0aC5jCi1AQCAtMTAwLDYgKzEwMCwxMyBAQAotICNlcnJvciAiUFJFRklYLCBFWEVDX1BSRUZJWCwgVkVSU0lPTiwgYW5kIFZQQVRIIG11c3QgYmUgY29uc3RhbnQgZGVmaW5lZCIKLSAjZW5kaWYKLSAKLSsjZGVmaW5lIExJQl9QWVRIT04gTElCICIvcHl0aG9uIiBWRVJTSU9OCi0rCi0rI2lmbmRlZiBQWVRIT05QQVRICi0rI2RlZmluZSBQWVRIT05QQVRIIFBSRUZJWCAiLyIgTElCX1BZVEhPTiAiOiIgXAotKyAgICAgICAgICAgICAgRVhFQ19QUkVGSVggIi8iIExJQl9QWVRIT04gIi9saWItZHlubG9hZCIKLSsjZW5kaWYKLSsKLSAjaWZuZGVmIExBTkRNQVJLCi0gI2RlZmluZSBMQU5ETUFSSyAib3MucHkiCi0gI2VuZGlmCi1AQCAtMTA4LDcgKzExNSw3IEBAIHN0YXRpYyBjaGFyIHByZWZpeFtNQVhQQVRITEVOKzFdOwotIHN0YXRpYyBjaGFyIGV4ZWNfcHJlZml4W01BWFBBVEhMRU4rMV07Ci0gc3RhdGljIGNoYXIgcHJvZ3BhdGhbTUFYUEFUSExFTisxXTsKLSBzdGF0aWMgY2hhciAqbW9kdWxlX3NlYXJjaF9wYXRoID0gTlVMTDsKLS1zdGF0aWMgY2hhciBsaWJfcHl0aG9uW10gPSAibGliL3B5dGhvbiIgVkVSU0lPTjsKLStzdGF0aWMgY2hhciBsaWJfcHl0aG9uW10gPSBMSUJfUFlUSE9OOwotIAotIHN0YXRpYyB2b2lkCi0gcmVkdWNlKGNoYXIgKmRpcikKLUluZGV4OiBQeXRob24tMi43LjE0L1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi0rKysgUHl0aG9uLTIuNy4xNC9QeXRob24vZ2V0cGxhdGZvcm0uYwotQEAgLTEwLDMgKzEwLDEzIEBAIFB5X0dldFBsYXRmb3JtKHZvaWQpCi0gewotIAlyZXR1cm4gUExBVEZPUk07Ci0gfQotKwotKyNpZm5kZWYgTElCCi0rI2RlZmluZSBMSUIgImxpYiIKLSsjZW5kaWYKLSsKLStjb25zdCBjaGFyICoKLStQeV9HZXRMaWIodm9pZCkKLSt7Ci0rCXJldHVybiBMSUI7Ci0rfQotSW5kZXg6IFB5dGhvbi0yLjcuMTQvUHl0aG9uL3N5c21vZHVsZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL1B5dGhvbi9zeXNtb2R1bGUuYwotKysrIFB5dGhvbi0yLjcuMTQvUHl0aG9uL3N5c21vZHVsZS5jCi1AQCAtMTQzNyw2ICsxNDM3LDggQEAgX1B5U3lzX0luaXQodm9pZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeVN0cmluZ19Gcm9tU3RyaW5nKFB5X0dldENvcHlyaWdodCgpKSk7Ci0gICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInBsYXRmb3JtIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeVN0cmluZ19Gcm9tU3RyaW5nKFB5X0dldFBsYXRmb3JtKCkpKTsKLSsgICAgU0VUX1NZU19GUk9NX1NUUklORygibGliIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICBQeVN0cmluZ19Gcm9tU3RyaW5nKFB5X0dldExpYigpKSk7Ci0gICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImV4ZWN1dGFibGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5U3RyaW5nX0Zyb21TdHJpbmcoUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoKCkpKTsKLSAgICAgU0VUX1NZU19GUk9NX1NUUklORygicHJlZml4IiwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcGFyYWxsZWwtbWFrZWluc3QtY3JlYXRlLWJpbmRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcGFyYWxsZWwtbWFrZWluc3QtY3JlYXRlLWJpbmRpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWJhYjQxZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3BhcmFsbGVsLW1ha2VpbnN0LWNyZWF0ZS1iaW5kaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1XaGVuIHVzaW5nIG1ha2UgLWogd2l0aCB0aGUgJ2luc3RhbGwnIHRhcmdldCwgaXQncyBwb3NzaWJsZSBmb3IgYWx0YmluaW5zdGFsbAotKHdoaWNoIG5vcm1hbGx5IGNyZWF0ZXMgQklORElSKSBhbmQgbGliYWluc3RhbGwgKHdoaWNoIGRvZXNuJ3QsIHRob3VnaCBpdAotaW5zdGFsbHMgcHl0aG9uLWNvbmZpZyB0aGVyZSkgdG8gcmFjZSwgcmVzdWx0aW5nIGluIGEgZmFpbHVyZSBkdWUgdG8KLWF0dGVtcHRpbmcgdG8gaW5zdGFsbCBweXRob24tY29uZmlnIGludG8gYSBub25leGlzdGVudCBCSU5ESVIuIEVuc3VyZSBpdCBhbHNvCi1leGlzdHMgaW4gdGhlIGxpYmFpbnN0YWxsIHRhcmdldC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLSBQeXRob24tMi43LjMub3JpZy9NYWtlZmlsZS5wcmUuaW4KLSsrKyBQeXRob24tMi43LjMvTWFrZWZpbGUucHJlLmluCi1AQCAtMTE4Nyw3ICsxMTg3LDcgQEAKLSBMSUJQQz0JCSQoTElCRElSKS9wa2djb25maWcKLSAKLSBsaWJhaW5zdGFsbDoJQERFRl9NQUtFX1JVTEVAIHB5dGhvbi1jb25maWcKLS0JQGZvciBpIGluICQoTElCRElSKSAkKExJQlApICQoTElCUEwpICQoTElCUEMpOyBcCi0rCUBmb3IgaSBpbiAkKExJQkRJUikgJChMSUJQKSAkKExJQlBMKSAkKExJQlBDKSAkKEJJTkRJUik7IFwKLSAJZG8gXAotIAkJaWYgdGVzdCAhIC1kICQoREVTVERJUikkJGk7IHRoZW4gXAotIAkJCWVjaG8gIkNyZWF0aW5nIGRpcmVjdG9yeSAkJGkiOyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3Bhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3Bhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0ZmNhYWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotRnJvbSA3MTQ0N2YwNDk3OWIyNjdmODg2NjU3M2I2N2E0MzQwYjI3MTlkNzk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCA0IEF1ZyAyMDE3IDE0OjEwOjQzICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNldHVwLnB5OiBwYXNzIG1pc3NpbmcgbGlicmFyaWVzIHRvIEV4dGVuc2lvbiBmb3IgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZQotCi1JbiB0aGUgZm9sbG93aW5nIGNvbW1pdDoKLS4uLgotY29tbWl0IGU3MTFjYWZhYjEzZWZjOWMxZmU2YzVjZDc1ODI2NDAxNDQ1ZWI1ODUKLUF1dGhvcjogQmVuamFtaW4gUGV0ZXJzb24gPGJlbmphbWluQHB5dGhvbi5vcmc+Ci1EYXRlOiAgIFdlZCBKdW4gMTEgMTY6NDQ6MDQgMjAwOCArMDAwMAotCi0gICAgTWVyZ2VkIHJldmlzaW9ucyA2NDEwNCw2NDExNyB2aWEgc3ZubWVyZ2UgZnJvbQotICAgIHN2bitzc2g6Ly9weXRob25kZXZAc3ZuLnB5dGhvbi5vcmcvcHl0aG9uL3RydW5rCi0uLi4KLShzZWUgZGlmZiBpbiBzZXR1cC5weSkKLUl0IGFzc2lnbmVkIGxpYnJhcmllcyBmb3IgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZSBhY2NvcmRpbmcKLXRoZSBob3N0X3BsYXRmb3JtLCBidXQgbm90IHBhc3MgaXQgdG8gRXh0ZW5zaW9uLgotCi1JbiBnbGliYywgdGhlIGZvbGxvd2luZyBjb21taXQgY2F1c2VkIHR3byBkZWZpbml0aW9uIG9mCi1zZW1fZ2V0dmFsdWUgYXJlIGRpZmZlcmVudC4KLWh0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0Lz9wPWdsaWJjLmdpdDthPWNvbW1pdDtoPTA0MmUxNTIxYzc5NGE5NDVlZGM0M2I1YmZhN2U2OWFkNzA0MjA1MjQKLShzZWUgZGlmZiBpbiBucHRsL3NlbV9nZXR2YWx1ZS5jIGZvciBkZXRhaWwpCi1gX19uZXdfc2VtX2dldHZhbHVlJyBpcyB0aGUgbGF0ZXN0IHNlbV9nZXR2YWx1ZUBAR0xJQkNfMi4xCi1hbmQgYF9fb2xkX3NlbV9nZXR2YWx1ZScgaXMgdG8gY29tcGF0IHRoZSBvbGQgdmVyc2lvbgotc2VtX2dldHZhbHVlQEdMSUJDXzIuMC4KLQotVG8gYnVpbGQgcHl0aG9uIGZvciBlbWJlZGRlZCBMaW51eCBzeXN0ZW1zOgotaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi4zLjEveW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLmh0bWwKLUlmIG5vdCBleHBsaWNpdGx5IGxpbmsgdG8gbGlicmFyeSBwdGhyZWFkICgtbHB0aHJlYWQpLCBpdCB3aWxsCi1sb2FkIGdsaWJjJ3Mgc2VtX2dldHZhbHVlIHJhbmRvbWx5IGF0IHJ1bnRpbWUuCi0KLVN1Y2ggYXMgYnVpbGQgcHl0aG9uIG9uIGxpbnV4IHg4Nl82NCBob3N0IGFuZCBydW4gdGhlIHB5dGhvbgotb24gbGludXggeDg2XzMyIHRhcmdldC4gSWYgbm90IGxpbmsgbGlicmFyeSBwdGhyZWFkLCBpdCBjYXVzZWQKLW11bHRpcHJvY2Vzc2luZyBib3VuZGVkIHNlbWFwaG9yZSBjb3VsZCBub3Qgd29yayBjb3JyZWN0bHkuCi0uLi4KLT4+PiBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCi0+Pj4gcG9vbF9zZW1hID0gbXVsdGlwcm9jZXNzaW5nLkJvdW5kZWRTZW1hcGhvcmUodmFsdWU9MSkKLT4+PiBwb29sX3NlbWEuYWNxdWlyZSgpCi1UcnVlCi0+Pj4gcG9vbF9zZW1hLnJlbGVhc2UoKQotVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgotVmFsdWVFcnJvcjogc2VtYXBob3JlIG9yIGxvY2sgcmVsZWFzZWQgdG9vIG1hbnkgdGltZXMKLS4uLgotCi1BbmQgdGhlIHNlbWFwaG9yZSBpc3N1ZSBhbHNvIGNhdXNlZCBtdWx0aXByb2Nlc3NpbmcuUXVldWUoKS5wdXQoKSBodW5nLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL3B1bGwvMjk5OV0KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc2V0dXAucHkgfCA3ICsrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggNTQwNTRjMi4uOTY0NmJmYyAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTE1ODYsOCArMTU4NiwxMCBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICBlbGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgnbmV0YnNkJyk6Ci0gICAgICAgICAgICAgbWFjcm9zID0gZGljdCgpCi0gICAgICAgICAgICAgbGlicmFyaWVzID0gW10KLS0KLS0gICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIExpbnV4IGFuZCBvdGhlciB1bmljZXMKLSsgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybS5zdGFydHN3aXRoKCgnbGludXgnKSk6Ci0rICAgICAgICAgICAgbWFjcm9zID0gZGljdCgpCi0rICAgICAgICAgICAgbGlicmFyaWVzID0gWydwdGhyZWFkJ10KLSsgICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE90aGVyIHVuaWNlcwotICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQotICAgICAgICAgICAgIGxpYnJhcmllcyA9IFsncnQnXQotIAotQEAgLTE2MTAsNiArMTYxMiw3IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgIGlmIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignV0lUSF9USFJFQUQnKToKLSAgICAgICAgICAgICBleHRzLmFwcGVuZCAoIEV4dGVuc2lvbignX211bHRpcHJvY2Vzc2luZycsIG11bHRpcHJvY2Vzc2luZ19zcmNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZV9tYWNyb3M9bWFjcm9zLml0ZW1zKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPWxpYnJhcmllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnM9WyJNb2R1bGVzL19tdWx0aXByb2Nlc3NpbmciXSkpCi0gICAgICAgICBlbHNlOgotICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfbXVsdGlwcm9jZXNzaW5nJykKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9weXRob24tMi43LjMtcmVtb3ZlLWJzZGItcnBhdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3B5dGhvbi0yLjcuMy1yZW1vdmUtYnNkYi1ycGF0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE2YmUwYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3B5dGhvbi0yLjcuMy1yZW1vdmUtYnNkYi1ycGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVJlbW92ZSB0aGUgUlBBVEggdG8gYXZvaWQgUUEgaXNzdWUgd2FybmluZy4KLQotUlA6IEFkZGVkIHNlY29uZGFyeSB1bm5lY2Vzc2FyeSBycGF0aCB0byB0aGUgbGlzdCAyMDEyLzgvNwotU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLQotCi1JbmRleDogUHl0aG9uLTIuNy4zL3NldHVwLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4zLm9yaWcvc2V0dXAucHkJMjAxMi0wOC0wNyAxMDo0MTo1OC41NjAxMzI1MjkgKzAwMDAKLSsrKyBQeXRob24tMi43LjMvc2V0dXAucHkJMjAxMi0wOC0wNyAxMTowOTo0Ny44NTIwOTQ1MTUgKzAwMDAKLUBAIC0xMDQyLDcgKzEwNDIsNiBAQAotICAgICAgICAgICAgIGV4dHMuYXBwZW5kKEV4dGVuc2lvbignX2JzZGRiJywgWydfYnNkZGIuYyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzID0gWydic2RkYi5oJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnlfZGlycz1kYmxpYl9kaXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWVfbGlicmFyeV9kaXJzPWRibGliX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzPWRiX2luY3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz1kYmxpYnMpKQotICAgICAgICAgZWxzZToKLUBAIC0xMjUyLDcgKzEyNTEsNiBAQAotICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICJidWlsZGluZyBkYm0gdXNpbmcgYmRiIgotICAgICAgICAgICAgICAgICAgICAgICAgIGRibWV4dCA9IEV4dGVuc2lvbignZGJtJywgWydkYm1tb2R1bGUuYyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5X2RpcnM9ZGJsaWJfZGlyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW50aW1lX2xpYnJhcnlfZGlycz1kYmxpYl9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycz1kYl9pbmNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPVsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnSEFWRV9CRVJLREJfSCcsIE5vbmUpLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9weXRob24yLW1hbmlmZXN0Lmpzb24gYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3B5dGhvbjItbWFuaWZlc3QuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWI1MmU4Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3B5dGhvbjItbWFuaWZlc3QuanNvbgorKysgL2Rldi9udWxsCkBAIC0xLDExMzggKzAsMCBAQAotIyBETyBOT1QgKGVudGlyZWx5KSBtb2RpZnkgdGhpcyBmaWxlIG1hbnVhbGx5LCBwbGVhc2UgcmVhZC4KLSMKLSMgSU1QT1JUQU5UIE5PVEU6Ci0jIFBsZWFzZSBrZWVwIGluIG1pbmQgdGhhdCB0aGUgY3JlYXRlX21hbmlmZXN0IHRhc2sgcmVsaWVzIG9uIHRoZSBmYWN0IHRoZSB0aGUKLSMgdGFyZ2V0IGFuZCBuYXRpdmUgUHl0aG9uIHBhY2thZ2VzIGFyZSB0aGUgc2FtZSwgYW5kIGl0IGFsc28gbmVlZHMgdG8gYmUgZXhlY3V0ZWQKLSMgd2l0aCBhIGZ1bGx5IHdvcmtpbmcgbmF0aXZlIHBhY2thZ2UgKHdpdGggYWxsIHRoZSBQQUNLQUdFQ09ORklHcyBlbmFibGVkIGFuZCBhbGwKLSMgYW5kIGFsbCB0aGUgbW9kdWxlcyBzaG91bGQgYmUgd29ya2luZywgY2hlY2sgbG9nLmRvX2NvbXBpbGUpLCBvdGhlcndpc2UgdGhlIHNjcmlwdAotIyB3aWxsIGZhaWwgdG8gZmluZCBkZXBlbmRlbmNpZXMgY29ycmVjdGx5LCB0aGlzIG5vdGUgaXMgdmFsaWQgZWl0aGVyIGlmIHlvdSBhcmUKLSMgdXBncmFkaW5nIHRvIGEgbmV3IFB5dGhvbiB2ZXJzaW9uIG9yIGFkZGluZyBhIG5ldyBwYWNrYWdlLgotIwotIwotIyBJZiB5b3UgYXJlIGFkZGluZyBhIG5ldyBwYWNrYWdlIHBsZWFzZSBmb2xsb3cgdGhlIG5leHQgc3RlcHM6Ci0jICAgICBIb3cgdG8gYWRkIGEgbmV3IHBhY2thZ2U6Ci0jICAgICAtIElmIGEgdXNlciB3YW50cyB0byBhZGQgYSBuZXcgcGFja2FnZSBhbGwgdGhhdCBoYXMgdG8gYmUgZG9uZSBpczoKLSMgICAgIE1vZGlmeSB0aGUgcHl0aG9uMi1tYW5pZmVzdC5qc29uIGZpbGUsIGFuZCBhZGQgdGhlIHJlcXVpcmVkIGZpbGUocykgdG8gdGhlIEZJTEVTIGxpc3QsCi0jICAgICBmaWxsIHVwIHRoZSBTVU1NQVJZIHNlY3Rpb24gYXMgd2VsbCwgdGhlIHNjcmlwdCBzaG91bGQgaGFuZGxlIGFsbCB0aGUgcmVzdC4KLSMKLSMgICAgIFJlYWwgZXhhbXBsZToKLSMgICAgIFdlIHdhbnQgdG8gYWRkIGEgd2ViIGJyb3dzZXIgcGFja2FnZSwgaW5jbHVkaW5nIHRoZSBmaWxlIHdlYmJyb3dzZXIucHkKLSMgICAgIHdoaWNoIGF0IHRoZSBtb21lbnQgaXMgb24gcHl0aG9uLW1pc2MuCi0jICAgICAid2ViYnJvd3NlciI6IHsKLSMgICAgICAgICAiZmlsZXMiOiBbIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvd2ViYnJvd3Nlci5weSJdLAotIyAgICAgICAgICJyZGVwZW5kcyI6IFtdLAotIyAgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBXZWIgQnJvd3NlciBzdXBwb3J0In0KLSMKLSMgICAgICogTm90ZSB0aGF0IHRoZSByZGVwZW5kcyBmaWVsZCB3YXMgbGVmdCBlbXB0eQotIwotIyAgICAgV2UgcnVuICQgYml0YmFrZSBweXRob24gLWMgY3JlYXRlX21hbmlmZXN0IGFuZCB0aGUgcmVzdWx0aW5nIG1hbmlmZXN0Ci0jICAgICBzaG91bGQgYmUgY29tcGxldGVkIGFmdGVyIGEgZmV3IHNlY29uZHMsIHNob3dpbmcgc29tZXRoaW5nIGxpa2U6Ci0jICAgICAid2ViYnJvd3NlciI6IHsKLSMgICAgICAgICAiZmlsZXMiOiBbIiR7bGliZGlyfS9weXRob24yLjcvd2ViYnJvd3Nlci5weSJdLAotIyAgICAgICAgICJyZGVwZW5kcyI6IFsiY29yZSIsImZjbnRsIiwiaW8iLCJwaWNrbGUiLCJzaGVsbCIsInN1YnByb2Nlc3MiXSwKLSMgICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gV2ViIEJyb3dzZXIgc3VwcG9ydCJ9Ci0jCi0jCi0jIElmIHlvdSBhcmUgdXBncmFkaW5nIFB5dGhvbiB0byBhIG5ldyB2ZXJzaW9uIHBsZWFzZSBmb2xsb3cgdGhlIG5leHQgc3RlcHM6Ci0jICAgICBBZnRlciBlYWNoIFB5dGhvbiB1cGdyYWRlLCB0aGUgY3JlYXRlX21hbmlmZXN0IHRhc2sgc2hvdWxkIGJlIGV4ZWN1dGVkLCBiZWNhdXNlIHdlCi0jICAgICBkb24ndCBjb250cm9sIHdoYXQgY2hhbmdlcyBvbiB1cHN0cmVhbSBQeXRob24sIHNvLCBzb21lIG1vZHVsZSBkZXBlbmRlbmN5Ci0jICAgICBtaWdodCBoYXZlIGNoYW5nZWQgd2l0aG91dCB1cyByZWFsaXppbmcgaXQsIGEgY2VydGFpbiBtb2R1bGUgY2FuIGVpdGhlciBoYXZlCi0jICAgICBtb3JlIG9yIGxlc3MgZGVwZW5kZW5jaWVzLCBvciBjb3VsZCBiZSBkZXBlbmRpbmcgb24gYSBuZXcgZmlsZSB0aGF0IHdhcyBqdXN0Ci0jICAgICBjcmVhdGVkIG9uIHRoZSBuZXcgcmVsZWFzZSBhbmQgZm9yIG9idmlvdXMgcmVhc29ucyB3ZSB3b3VsZG4ndCBoYXZlIGl0IG9uIG91cgotIyAgICAgb2xkIG1hbmlmZXN0LCBhbGwgb2YgdGhlc2UgaXNzdWVzIHdvdWxkIGNhdXNlIHJ1bnRpbWUgZXJyb3JzIG9uIG91ciBzeXN0ZW0uCi0jCi0jICAgICAtIFVwZ3JhZGUgYm90aCB0aGUgbmF0aXZlIGFuZCB0YXJnZXQgUHl0aG9uIHBhY2thZ2VzIHRvIGEgbmV3IHZlcnNpb24KLSMgICAgIC0gUnVuIHRoZSBjcmVhdGVfbWFuaWZlc3QgdGFzayBmb3IgdGhlIHRhcmdldCBQeXRob24gcGFja2FnZSBhcyBpdHMgc2hvd24gYmVsb3c6Ci0jCi0jICAgICAkIGJpdGJha2UgcHl0aG9uIC1jIGNyZWF0ZV9tYW5pZmVzdAotIwotIyAgICAgVGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgcmVwbGFjZSB5b3VyIG1hbmlmZXN0IGZpbGUgbG9jYXRlZCB1bmRlciB0aGUgUHl0aG9uIGRpcmVjdG9yeQotIyAgICAgd2l0aCBhbiBuZXcgb25lLCB3aGljaCBjb250YWlucyB0aGUgbmV3IGRlcGVuZGVuY2llcyAoaWYgYW55KS4KLSMKLSMgICAgIFNldmVyYWwgdGhpbmdzIGNvdWxkIGhhdmUgZ29uZSB3cm9uZyBoZXJlLCBJIHdpbGwgdHJ5IHRvIGV4cGxhaW4gYSBmZXc6Ci0jCi0jICAgICBhKSBBIG5ldyBmaWxlIHdhcyBpbnRyb2R1Y2VkIG9uIHRoaXMgcmVsZWFzZSwgZS5nLiBzaGEzKi5zbzoKLSMgICAgICAgIFRoZSB0YXNrIHdpbGwgY2hlY2sgd2hhdCBpdHMgbmVlZGVkIHRvIGltcG9ydCBldmVyeSBtb2R1bGUsIG1vcmUgdGhhbiBvbmUgbW9kdWxlIHdvdWxkCi0jICAgICAgICB3b3VsZCBwcm9iYWJseSBkZXBlbmQgb24gc2hhMyouc28sIGFsdGhvdWdoIG9ubHkgb25lIG1vZHVsZSBzaG91bGQgY29udGFpbiBpdC4KLSMKLSMgICAgICAgIEFmdGVyIHJ1bm5pbmcgdGhlIHRhc2ssIHRoZSBuZXcgbWFuaWZlc3Qgd2lsbCBoYXZlIHRoZSBzaGEzKi5zbyBmaWxlIG9uIG1vcmUgdGhhbiBvbmUKLSMgICAgICAgIG1vZHVsZSwgeW91IG5lZWQgdG8gbWFudWFsbHkgZGVjaWRlIHdoaWNoIG9uZSBvZiB0aGVtIHNob3VsZCBnZXQgaXQgYW5kIGRlbGV0ZSBpdCBmcm9tCi0jICAgICAgICB0aGUgb3RoZXJzLCBmb3IgZXhhbXBsZSBzaGEzKi5zbyBzaG91bGQgbGlrZWx5IGJlIG9uICR7UE59LWNyeXB0LgotIyAgICAgICAgT25jZSB5b3UgaGF2ZSBkZWxldGVkIGZyb20gdGhlIG90aGVycyB5b3UgbmVlZCB0byBydW4gdGhlIGNyZWF0ZV9tYW5pZmVzdCB0YXNrIGFnYWluLAotIyAgICAgICAgdGhpcyB3aWxsIHBvcHVsYXRlIHRoZSBvdGhlciBtb2R1bGUncyByZGVwZW5kcyBmaWVsZHMsIHdpdGggJHtQTn0tY3J5cHQgYW5kIHlvdSBzaG91bGQgYmUKLSMgICAgICAgIGdvb2QgdG8gZ28uCi0jCi0jICAgICBiKSBUaGUgbmF0aXZlIHBhY2thZ2Ugd2Fzbid0IGJ1aWx0IGNvcnJlY3RseSBhbmQgaXRzIG1pc3NpbmcgYSBjZXJ0YWluIG1vZHVsZToKLSMgICAgICAgIEFzIG1lbnRpb25lZCBiZWZvcmUsIHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgbmF0aXZlIHBhY2thZ2Ugd2FzIGJ1aWx0IHdpdGggYWxsIHRoZSBtb2R1bGVzCi0jICAgICAgICBiZWNhdXNlIGl0IGlzIHVzZWQgYXMgYmFzZSB0byBidWlsZCB0aGUgbWFuaWZlc3QgZmlsZSwgeW91IG5lZWQgdG8gbWFudWFsbHkgY2hlY2sgbG9nLmRvX2NvbXBpbGUKLSMgICAgICAgIHNpbmNlIGl0IHdvbid0IGVycm9yIG91dCB0aGUgY29tcGlsZSBmdW5jdGlvbiBpZiBpdHMgb25seSBtaXNzaW5nIGEgY291cGxlIG9mIG1vZHVsZXMuCi0jCi0jICAgICAgICBlLmcuIG1pc3NpbmcgdGhlIF91dWlkIG1vZHVsZSwgbG9nLmRvX2NvbXBpbGUgd291bGQgc2hvdyB0aGUgZm9sbG93aW5nOgotIyAgICAgICAgUHl0aG9uIGJ1aWxkIGZpbmlzaGVkIHN1Y2Nlc3NmdWxseSEKLSMgICAgICAgIFRoZSBuZWNlc3NhcnkgYml0cyB0byBidWlsZCB0aGVzZSBvcHRpb25hbCBtb2R1bGVzIHdlcmUgbm90IGZvdW5kOgotIyAgICAgICAgX3V1aWQKLSMKLSMgICAgICAgIFdoYXQgd2lsbCBoYXBwZW4gaGVyZSBpcyB0aGF0IHRoZSBuZXcgbWFuaWZlc3Qgd291bGQgbm90IGJlIGF3YXJlIHRoYXQgdGhlIF91dWlkIG1vZHVsZSBleGlzdHMsIHNvCi0jICAgICAgICBub3Qgb25seSB3ZSB3b24ndCBrbm93IG9mIGFueSBkZXBlbmRlbmNpZXMgdG8gaXQsIGJ1dCBhbHNvLCB0aGUgX3V1aWQqIGZpbGVzIHdpbGwgYmUgcGFja2FnZWQgb24KLSMgICAgICAgIHRoZSBtaXNjIHBhY2thZ2UgKHdoaWNoIGlzIHdoZXJlIGFueSBmaWxlIHRoYXQgZG9lc24ndCBiZWxvbmcgYW55d2hlcmUgZWxzZSBlbmRzIHVwKS4KLSMKLSMgICAgICAgIFRoaXMgd2lsbCBldmVudHVhbGx5IGNhdXNlIHJ1bnRpbWUgZXJyb3JzIG9uIG91ciBzeXN0ZW0gaWYgd2UgZG9uJ3QgaW5jbHVkZSB0aGUgbWlzYyBwYWNrYWdlIG9uCi0jICAgICAgICBvbiBvdXIgaW1hZ2UsIGJlY2F1c2UgdGhlIF91dWlkIGZpbGVzIHdpbGwgYmUgbWlzc2luZy4KLSMgICAgICAgIElmIHdlIGJ1aWxkIHRoZSBfdXVpZCBtb2R1bGUgY29ycmVjdGx5IGFuZCBydW4gdGhlIGNyZWF0ZV9tYW5pZmVzdCB0YXNrIHRoZSBfdXVpZCBmaWxlcyB3aWxsIGJlCi0jICAgICAgICBkZXRlY3RlZCBjb3JyZWN0bHkgYWxvbmcgd2l0aCBpdHMgZGVwZW5kZW5jaWVzLCBhbmQgd2Ugd2lsbCBnZXQgYSB3b3JraW5nIG1hbmlmZXN0LgotIwotIyAgICAgICAgVGhpcyBpcyB0aGUgcmVhc29uIHdoeSBpdCBpcyBpbXBvcnRhbnQgdG8gbWFrZSBzdXJlIHdlIGhhdmUgYSBmdWxseSB3b3JraW5nIG5hdGl2ZSBidWlsZCwKLSMgICAgICAgIHNvIHdlIGNhbiBhdm9pZCB0aGVzZSBlcnJvcnMuCi0jCi0jCi0jCi0jIERPIE5PVCBNT0RJRlkgVEhFIE5FWFQgTElORSEsIElUIElTIFVTRUQgQVMgQSBNQVJLRVIgRk9SIFRIRSBBQ1RVQUwgSlNPTiBNQU5JRkVTVAotIyBFT0MKLXsKLSAgICAidGVzdHMiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB0ZXN0IHN1aXRlIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAibW9kdWxlcyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43LyovdGVzdCIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvKi90ZXN0cyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaWRsZWxpYi9pZGxlX3Rlc3QvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90ZXN0IgotICAgICAgICBdLCAKLSAgICAgICAgImNhY2hlZCI6IFtdCi0gICAgfSwgCi0gICAgIjJ0bzMiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBhdXRvbWF0ZWQgUHl0aG9uIDIgdG8gMyBjb2RlIHRyYW5zbGF0b3IiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtiaW5kaXJ9LzJ0bzMqIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYjJ0bzMiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiYXJncGFyc2UiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBjb21tYW5kIGxpbmUgYXJndW1lbnQgcGFyc2VyIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb2RlY3MiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgInRleHR1dGlscyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2FyZ3BhcnNlLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImF1ZGlvIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gQXVkaW8gSGFuZGxpbmciLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJjcnlwdCIsIAotICAgICAgICAgICAgImZjbnRsIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJtYXRoIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYXVkaW9kZXYucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NodW5rLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9hdWRpb29wLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9vc3NhdWRpb2Rldi5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc25kaGRyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdW5hdS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3VuYXVkaW8ucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3RvYWlmZi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvd2F2ZS5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJic2RkYiI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgQmVya2VsZXkgRGF0YWJhc2UiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9ic2RkYiIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2JzZGRiLnNvIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImNvZGVjcyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGNvZGVjIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJsYW5nIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZ2V0dGV4dC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2NvZGVjc19jbi5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2NvZGVjc19oay5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2NvZGVjc19pc28yMDIyLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY29kZWNzX2pwLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY29kZWNzX2tyLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY29kZWNzX3R3LnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fbXVsdGlieXRlY29kZWMuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3VuaWNvZGVkYXRhLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9sb2NhbGUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3N0cmluZ3ByZXAucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3hkcmxpYi5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJjb21waWxlIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYnl0ZWNvZGUgY29tcGlsYXRpb24gc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvbXBpbGVhbGwucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3B5X2NvbXBpbGUucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiY29tcGlsZXIiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBjb21waWxlciBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJsYW5nIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29tcGlsZXIiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiY29tcHJlc3Npb24iOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBoaWdoLWxldmVsIGNvbXByZXNzaW9uIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgInNoZWxsIiwgCi0gICAgICAgICAgICAidW5peGFkbWluIiwgCi0gICAgICAgICAgICAiemxpYiIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2d6aXAucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2J6Mi5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdGFyZmlsZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvemlwZmlsZS5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJjb250ZXh0bGliIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdXRpbGl0aWVzIGZvciB3aXRoLXN0YXRlbWVudGNvbnRleHRzLiIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImxhbmciCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb250ZXh0bGliLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImNvcmUiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBpbnRlcnByZXRlciBhbmQgY29yZSBtb2R1bGVzIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFtdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7YmluZGlyfS9weXRob24qIiwgCi0gICAgICAgICAgICAiJHtpbmNsdWRlZGlyfS9weXRob24yLjcvcHljb25maWcqLmgiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L0NvbmZpZ1BhcnNlci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvVXNlckRpY3QucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L1VzZXJMaXN0LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9Vc2VyU3RyaW5nLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fX2Z1dHVyZV9fLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fYWJjb2xsLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fc3lzY29uZmlnZGF0YS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX3dlYWtyZWZzZXQucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2FiYy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYXN0LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9hdGV4aXQucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvZGVjcy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29sbGVjdGlvbnMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvcHkucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvcHlfcmVnLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9lbmNvZGluZ3MiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2VuY29kaW5ncy9hbGlhc2VzLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9lbmNvZGluZ3MvdXRmXzgucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2dlbmVyaWNwYXRoLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9nZXRvcHQucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2hlYXBxLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9pbXBvcnRsaWIiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2tleXdvcmQucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jb2xsZWN0aW9ucy5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2hlYXBxLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fbG9jYWxlLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fc3RydWN0LnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9iaW5hc2NpaS5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvaXRlcnRvb2xzLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9vcGVyYXRvci5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvcmVhZGxpbmUuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3N0cm9wLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC90aW1lLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC94cmVhZGxpbmVzLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saW5lY2FjaGUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L25ldy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvb3MucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BsYXRmb3JtLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wb3NpeHBhdGgucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3JlLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9ybGNvbXBsZXRlci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc2l0ZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc2l0ZWN1c3RvbWl6ZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3JlX2NvbXBpbGUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NyZV9jb25zdGFudHMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NyZV9wYXJzZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3RhdC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3RyaW5nLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdHJ1Y3QucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3N5c2NvbmZpZy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdHJhY2ViYWNrLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90eXBlcy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvd2FybmluZ3MucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3dlYWtyZWYucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiY3J5cHQiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBiYXNpYyBjcnlwdG9ncmFwaGljIGFuZCBoYXNoaW5nIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9oYXNobGliLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9faGFzaGxpYi5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvY3J5cHQuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L21kNS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc2hhLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImN0eXBlcyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEMgdHlwZXMgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2N0eXBlcyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2N0eXBlcy5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2N0eXBlc190ZXN0LnNvIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImN1cnNlcyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGN1cnNlcyBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY3Vyc2VzIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY3Vyc2VzLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY3Vyc2VzX3BhbmVsLnNvIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImRhdGV0aW1lIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gY2FsZW5kYXIgYW5kIHRpbWUgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29kZWNzIiwgCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImxhbmciCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fc3RycHRpbWUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NhbGVuZGFyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9kYXRldGltZS5zbyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJkYiI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGZpbGUtYmFzZWQgZGF0YWJhc2Ugc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiYnNkZGIiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiZ2RibSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2FueWRibS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZGJoYXNoLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kdW1iZGJtLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9kYm0uc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3doaWNoZGIucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiZGVidWdnZXIiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBkZWJ1Z2dlciIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgInBwcmludCIsIAotICAgICAgICAgICAgInNoZWxsIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYmRiLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wZGIucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiZGV2IjogewotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtiYXNlX2xpYmRpcn0vKi5hIiwgCi0gICAgICAgICAgICAiJHtiYXNlX2xpYmRpcn0vKi5vIiwgCi0gICAgICAgICAgICAiJHtkYXRhZGlyfS9hY2xvY2FsIiwgCi0gICAgICAgICAgICAiJHtkYXRhZGlyfS9wa2djb25maWciLCAKLSAgICAgICAgICAgICIke2luY2x1ZGVkaXJ9IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9LyouYSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS8qLmxhIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9LyoubyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9saWIqJHtTT0xJQlNERVZ9IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3BrZ2NvbmZpZyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29uZmlnL01ha2VmaWxlIgotICAgICAgICBdLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZGV2ZWxvcG1lbnQgcGFja2FnZSIKLSAgICB9LCAKLSAgICAiZGlmZmxpYiI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGhlbHBlcnMgZm9yIGNvbXB1dGluZyBkZWx0YXMgYmV0d2VlbiBvYmplY3RzIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAibGFuZyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2RpZmZsaWIucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiZGlzdHV0aWxzLXN0YXRpY2RldiI6IHsKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29uZmlnL2xpYiouYSIKLSAgICAgICAgXSwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJkaXN0dXRpbHMiCi0gICAgICAgIF0sIAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZGlzdHJpYnV0aW9uIHV0aWxpdGllcyAoc3RhdGljIGxpYnJhcmllcykiCi0gICAgfSwgCi0gICAgImRpc3R1dGlscyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIERpc3RyaWJ1dGlvbiBVdGlsaXRpZXMiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb25maWciLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Rpc3R1dGlscyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJkb2N0ZXN0IjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZnJhbWV3b3JrIGZvciBydW5uaW5nIGV4YW1wbGVzIGluIGRvY3N0cmluZ3MiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJjcnlwdCIsIAotICAgICAgICAgICAgImRlYnVnZ2VyIiwgCi0gICAgICAgICAgICAiZGlmZmxpYiIsIAotICAgICAgICAgICAgImZjbnRsIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJsYW5nIiwgCi0gICAgICAgICAgICAibWF0aCIsIAotICAgICAgICAgICAgInBwcmludCIsIAotICAgICAgICAgICAgInNoZWxsIiwgCi0gICAgICAgICAgICAidW5pdHRlc3QiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kb2N0ZXN0LnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImVtYWlsIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZW1haWwgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29udGV4dGxpYiIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJjcnlwdCIsIAotICAgICAgICAgICAgImZjbnRsIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJsYW5nIiwgCi0gICAgICAgICAgICAibWF0aCIsIAotICAgICAgICAgICAgIm5ldGNsaWVudCIsIAotICAgICAgICAgICAgInBpY2tsZSIsIAotICAgICAgICAgICAgInN1YnByb2Nlc3MiLCAKLSAgICAgICAgICAgICJ0ZXh0dXRpbHMiLCAKLSAgICAgICAgICAgICJ0aHJlYWRpbmciCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9lbWFpbCIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaW1hcGxpYi5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJmY250bCI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uJ3MgZmNudGwgaW50ZXJmYWNlIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvZmNudGwuc28iCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiZ2RibSI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEdOVSBkYXRhYmFzZSBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvZ2RibS5zbyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJob3RzaG90IjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaG90c2hvdCBwZXJmb3JtYW5jZSBwcm9maWxlciIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2hvdHNob3QiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19ob3RzaG90LnNvIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImh0bWwiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBIVE1MIHByb2Nlc3Npbmcgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L0hUTUxQYXJzZXIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Zvcm1hdHRlci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaHRtbGVudGl0eWRlZnMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2h0bWxsaWIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L21hcmt1cGJhc2UucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NnbWxsaWIucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiaWRsZSI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEludGVncmF0ZWQgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtiaW5kaXJ9L2lkbGUiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2lkbGVsaWIiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiaW1hZ2UiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBncmFwaGljYWwgaW1hZ2UgaGFuZGxpbmciLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb2xvcnN5cy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaW1naGRyLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImlvIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbG93LWxldmVsIEkvTyIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29udGV4dGxpYiIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJjcnlwdCIsIAotICAgICAgICAgICAgImZjbnRsIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgIm1hdGgiLCAKLSAgICAgICAgICAgICJuZXRjbGllbnQiLCAKLSAgICAgICAgICAgICJ0ZXh0dXRpbHMiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9TdHJpbmdJTy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX3B5aW8ucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2lvLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9faW8uc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19zb2NrZXQuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19zc2wuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2NTdHJpbmdJTy5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvc2VsZWN0LnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC90ZXJtaW9zLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9waXBlcy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc29ja2V0LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zc2wucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3RlbXBmaWxlLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImpzb24iOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBKU09OIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9qc29uIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fanNvbi5zbyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJsYW5nIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbG93LWxldmVsIGxhbmd1YWdlIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9iaXNlY3QucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvZGUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvZGVvcC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZGlzLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9mdW5jdG9vbHMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2luc3BlY3QucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19iaXNlY3Quc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19mdW5jdG9vbHMuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2FycmF5LnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9wYXJzZXIuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L29wY29kZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcmVwci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3ltYm9sLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90b2tlbi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdG9rZW5pemUucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAibG9nZ2luZyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGxvZ2dpbmcgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAidGhyZWFkaW5nIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbG9nZ2luZyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJtYWlsYm94IjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbWFpbGJveCBmb3JtYXQgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29kZWNzIiwgCi0gICAgICAgICAgICAiY29udGV4dGxpYiIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJjcnlwdCIsIAotICAgICAgICAgICAgImRhdGV0aW1lIiwgCi0gICAgICAgICAgICAiZW1haWwiLCAKLSAgICAgICAgICAgICJmY250bCIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgIm1hdGgiLCAKLSAgICAgICAgICAgICJtaW1lIiwgCi0gICAgICAgICAgICAibmV0Y2xpZW50IiwgCi0gICAgICAgICAgICAidGV4dHV0aWxzIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbWFpbGJveC5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJtYXRoIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbWF0aCBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiY3J5cHQiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fcmFuZG9tLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9jbWF0aC5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvbWF0aC5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcmFuZG9tLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zZXRzLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgIm1pbWUiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBNSU1FIGhhbmRsaW5nIEFQSXMiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvbnRleHRsaWIiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiY3J5cHQiLCAKLSAgICAgICAgICAgICJmY250bCIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgIm1hdGgiLCAKLSAgICAgICAgICAgICJuZXRjbGllbnQiLCAKLSAgICAgICAgICAgICJ0ZXh0dXRpbHMiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9NaW1lV3JpdGVyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9taW1ldG9vbHMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L21pbWV0eXBlcy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcXVvcHJpLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9yZmM4MjIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3V1LnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgIm1tYXAiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBtZW1vcnktbWFwcGVkIGZpbGUgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL21tYXAuc28iCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAibW9kdWxlcyI6IHsKLSAgICAgICAgImZpbGVzIjogW10sIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiMnRvMyIsIAotICAgICAgICAgICAgImFyZ3BhcnNlIiwgCi0gICAgICAgICAgICAiYXVkaW8iLCAKLSAgICAgICAgICAgICJic2RkYiIsIAotICAgICAgICAgICAgImNvZGVjcyIsIAotICAgICAgICAgICAgImNvbXBpbGUiLCAKLSAgICAgICAgICAgICJjb21waWxlciIsIAotICAgICAgICAgICAgImNvbXByZXNzaW9uIiwgCi0gICAgICAgICAgICAiY29udGV4dGxpYiIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJjcnlwdCIsIAotICAgICAgICAgICAgImN0eXBlcyIsIAotICAgICAgICAgICAgImN1cnNlcyIsIAotICAgICAgICAgICAgImRhdGV0aW1lIiwgCi0gICAgICAgICAgICAiZGIiLCAKLSAgICAgICAgICAgICJkZWJ1Z2dlciIsIAotICAgICAgICAgICAgImRpZmZsaWIiLCAKLSAgICAgICAgICAgICJkaXN0dXRpbHMiLCAKLSAgICAgICAgICAgICJkb2N0ZXN0IiwgCi0gICAgICAgICAgICAiZW1haWwiLCAKLSAgICAgICAgICAgICJmY250bCIsIAotICAgICAgICAgICAgImdkYm0iLCAKLSAgICAgICAgICAgICJob3RzaG90IiwgCi0gICAgICAgICAgICAiaHRtbCIsIAotICAgICAgICAgICAgImlkbGUiLCAKLSAgICAgICAgICAgICJpbWFnZSIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAianNvbiIsIAotICAgICAgICAgICAgImxhbmciLCAKLSAgICAgICAgICAgICJsb2dnaW5nIiwgCi0gICAgICAgICAgICAibWFpbGJveCIsIAotICAgICAgICAgICAgIm1hdGgiLCAKLSAgICAgICAgICAgICJtaW1lIiwgCi0gICAgICAgICAgICAibW1hcCIsIAotICAgICAgICAgICAgIm11bHRpcHJvY2Vzc2luZyIsIAotICAgICAgICAgICAgIm5ldGNsaWVudCIsIAotICAgICAgICAgICAgIm5ldHNlcnZlciIsIAotICAgICAgICAgICAgIm51bWJlcnMiLCAKLSAgICAgICAgICAgICJwaWNrbGUiLCAKLSAgICAgICAgICAgICJwa2d1dGlsIiwgCi0gICAgICAgICAgICAicGxpc3RsaWIiLCAKLSAgICAgICAgICAgICJwcHJpbnQiLCAKLSAgICAgICAgICAgICJwcm9maWxlIiwgCi0gICAgICAgICAgICAicHlkb2MiLCAKLSAgICAgICAgICAgICJyZSIsIAotICAgICAgICAgICAgInJlc291cmNlIiwgCi0gICAgICAgICAgICAicm9ib3RwYXJzZXIiLCAKLSAgICAgICAgICAgICJydW5weSIsIAotICAgICAgICAgICAgInNoZWxsIiwgCi0gICAgICAgICAgICAic210cGQiLCAKLSAgICAgICAgICAgICJzcWxpdGUzIiwgCi0gICAgICAgICAgICAic3FsaXRlMyIsIAotICAgICAgICAgICAgInN0cmluZ29sZCIsIAotICAgICAgICAgICAgInN1YnByb2Nlc3MiLCAKLSAgICAgICAgICAgICJzeXNsb2ciLCAKLSAgICAgICAgICAgICJ0ZXJtaW5hbCIsIAotICAgICAgICAgICAgInRleHR1dGlscyIsIAotICAgICAgICAgICAgInRocmVhZGluZyIsIAotICAgICAgICAgICAgInRraW50ZXIiLCAKLSAgICAgICAgICAgICJ1bml0dGVzdCIsIAotICAgICAgICAgICAgInVuaXhhZG1pbiIsIAotICAgICAgICAgICAgInhtbCIsIAotICAgICAgICAgICAgInhtbHJwYyIsIAotICAgICAgICAgICAgInpsaWIiCi0gICAgICAgIF0sIAotICAgICAgICAic3VtbWFyeSI6ICJBbGwgUHl0aG9uIG1vZHVsZXMiCi0gICAgfSwgCi0gICAgIm11bHRpcHJvY2Vzc2luZyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG11bHRpcHJvY2Vzc2luZyBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiZmNudGwiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgInBpY2tsZSIsIAotICAgICAgICAgICAgInN1YnByb2Nlc3MiLCAKLSAgICAgICAgICAgICJ0aHJlYWRpbmciCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fbXVsdGlwcm9jZXNzaW5nLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9tdWx0aXByb2Nlc3NpbmciCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAibmV0Y2xpZW50IjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSW50ZXJuZXQgUHJvdG9jb2wgY2xpZW50cyIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29kZWNzIiwgCi0gICAgICAgICAgICAiY29udGV4dGxpYiIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJjcnlwdCIsIAotICAgICAgICAgICAgImN0eXBlcyIsIAotICAgICAgICAgICAgImRhdGV0aW1lIiwgCi0gICAgICAgICAgICAiZW1haWwiLCAKLSAgICAgICAgICAgICJmY250bCIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgIm1hdGgiLCAKLSAgICAgICAgICAgICJtaW1lIiwgCi0gICAgICAgICAgICAicGlja2xlIiwgCi0gICAgICAgICAgICAic3VicHJvY2VzcyIsIAotICAgICAgICAgICAgInRleHR1dGlscyIsIAotICAgICAgICAgICAgInRocmVhZGluZyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L0Nvb2tpZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX0xXUENvb2tpZUphci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX01vemlsbGFDb29raWVKYXIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Jhc2U2NC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29va2llbGliLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9mdHBsaWIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2htYWMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2h0dHBsaWIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L25udHBsaWIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BvcGxpYi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc210cGxpYi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdGVsbmV0bGliLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy91cmxsaWIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3VybGxpYjIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3VybHBhcnNlLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy91dWlkLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgIm5ldHNlcnZlciI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEludGVybmV0IFByb3RvY29sIHNlcnZlcnMiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvbXByZXNzaW9uIiwgCi0gICAgICAgICAgICAiY29udGV4dGxpYiIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJjcnlwdCIsIAotICAgICAgICAgICAgImZjbnRsIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJsYW5nIiwgCi0gICAgICAgICAgICAibWF0aCIsIAotICAgICAgICAgICAgIm1pbWUiLCAKLSAgICAgICAgICAgICJuZXRjbGllbnQiLCAKLSAgICAgICAgICAgICJzaGVsbCIsIAotICAgICAgICAgICAgInRleHR1dGlscyIsIAotICAgICAgICAgICAgInRocmVhZGluZyIsIAotICAgICAgICAgICAgInVuaXhhZG1pbiIsIAotICAgICAgICAgICAgInpsaWIiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9CYXNlSFRUUFNlcnZlci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvQ0dJSFRUUFNlcnZlci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvU2ltcGxlSFRUUFNlcnZlci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvU29ja2V0U2VydmVyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jZ2kucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAibnVtYmVycyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG51bWJlciBBUElzIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb2RlY3MiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgIm1hdGgiLCAKLSAgICAgICAgICAgICJ0aHJlYWRpbmciCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kZWNpbWFsLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9mcmFjdGlvbnMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L251bWJlcnMucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAicGlja2xlIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gc2VyaWFsaXNhdGlvbi9wZXJzaXN0ZW5jZSBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiaW8iCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9jUGlja2xlLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9waWNrbGUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaGVsdmUucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAicGtndXRpbCI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHBhY2thZ2UgZXh0ZW5zaW9uIHV0aWxpdHkgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BrZ3V0aWwucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAicGxpc3RsaWIiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIkdlbmVyYXRlIGFuZCBwYXJzZSBNYWMgT1MgWCAucGxpc3QgZmlsZXMiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJkYXRldGltZSIsIAotICAgICAgICAgICAgImlvIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcGxpc3RsaWIucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAicHByaW50IjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gcHJldHR5LXByaW50IHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJpbyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BwcmludC5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJwcm9maWxlIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYmFzaWMgcGVyZm9ybWFuY2UgcHJvZmlsaW5nIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvZGVjcyIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJsYW5nIiwgCi0gICAgICAgICAgICAicmVzb3VyY2UiLCAKLSAgICAgICAgICAgICJ0ZXh0dXRpbHMiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jUHJvZmlsZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2xzcHJvZi5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHJvZmlsZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHN0YXRzLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInB5ZG9jIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaW50ZXJhY3RpdmUgaGVscCBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb2RlY3MiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgInBrZ3V0aWwiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtiaW5kaXJ9L3B5ZG9jIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9weWRvYy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHlkb2NfZGF0YSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJyZSI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFJlZ3VsYXIgRXhwcmVzc2lvbiBBUElzIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3JlLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInJlc291cmNlIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gcmVzb3VyY2UgY29udHJvbCBpbnRlcmZhY2UiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9yZXNvdXJjZS5zbyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJyb2JvdHBhcnNlciI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHJvYm90cy50eHQgcGFyc2VyIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb250ZXh0bGliIiwgCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgIm5ldGNsaWVudCIsIAotICAgICAgICAgICAgInRleHR1dGlscyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3JvYm90cGFyc2VyLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInJ1bnB5IjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaGVscGVyIGZvciBsb2NhdGluZy9leGVjdXRpbmcgc2NyaXB0cyBpbiBtb2R1bGUgbmFtZXNwYWNlIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAicGtndXRpbCIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3J1bnB5LnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInNoZWxsIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gc2hlbGwtbGlrZSBmdW5jdGlvbmFsaXR5IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb21wcmVzc2lvbiIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgInVuaXhhZG1pbiIsIAotICAgICAgICAgICAgInpsaWIiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jbWQucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvbW1hbmRzLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kaXJjYWNoZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZm5tYXRjaC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZ2xvYi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcG9wZW4yLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaGxleC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc2h1dGlsLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInNtdHBkIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gU2ltcGxlIE1haWwgVHJhbnNwb3J0IERhZW1vbiIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImZjbnRsIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJsYW5nIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7YmluZGlyfS9zbXRwZC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYXN5bmNoYXQucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2FzeW5jb3JlLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zbXRwZC5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJzcWxpdGUzIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiZGF0ZXRpbWUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fc3FsaXRlMy5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3FsaXRlMyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJzdHJpbmdvbGQiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzdHJpbmcgQVBJcyBbZGVwcmVjYXRlZF0iLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdHJpbmdvbGQucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAic3VicHJvY2VzcyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHN1YnByb2Nlc3Mgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImZjbnRsIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJwaWNrbGUiLCAKLSAgICAgICAgICAgICJ0aHJlYWRpbmciCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdWJwcm9jZXNzLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInN5c2xvZyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHN5c2xvZyBpbnRlcmZhY2UiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9zeXNsb2cuc28iCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAidGVybWluYWwiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB0ZXJtaW5hbCBjb250cm9sbGluZyBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiaW8iCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wdHkucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3R0eS5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJ0ZXh0dXRpbHMiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBvcHRpb24gcGFyc2luIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb2RlY3MiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJsYW5nIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY3N2LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY3N2LnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9vcHRwYXJzZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdGV4dHdyYXAucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAidGhyZWFkaW5nIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdGhyZWFkaW5nICYgc3luY2hyb25pemF0aW9uIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9RdWV1ZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvX3RocmVhZGluZ19sb2NhbC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZHVtbXlfdGhyZWFkLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kdW1teV90aHJlYWRpbmcucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L211dGV4LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90aHJlYWRpbmcucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAidGtpbnRlciI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFRjbC9UayBiaW5kaW5ncyIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fdGtpbnRlci5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItdGsiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAidW5pdHRlc3QiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiZGlmZmxpYiIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgInBwcmludCIsIAotICAgICAgICAgICAgInNoZWxsIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdW5pdHRlc3QiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAidW5peGFkbWluIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gVW5peCBhZG1pbmlzdHJhdGlvbiBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiaW8iCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9nZXRwYXNzLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9ncnAuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL25pcy5zbyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJ4bWwiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBiYXNpYyBYTUwgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19lbGVtZW50dHJlZS5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvcHlleHBhdC5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcveG1sIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInhtbHJwYyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFhNTC1SUEMgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29kZWNzIiwgCi0gICAgICAgICAgICAiY29tcHJlc3Npb24iLCAKLSAgICAgICAgICAgICJjb250ZXh0bGliIiwgCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImNyeXB0IiwgCi0gICAgICAgICAgICAiZGF0ZXRpbWUiLCAKLSAgICAgICAgICAgICJmY250bCIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgIm1hdGgiLCAKLSAgICAgICAgICAgICJtaW1lIiwgCi0gICAgICAgICAgICAibmV0Y2xpZW50IiwgCi0gICAgICAgICAgICAibmV0c2VydmVyIiwgCi0gICAgICAgICAgICAicGtndXRpbCIsIAotICAgICAgICAgICAgInB5ZG9jIiwgCi0gICAgICAgICAgICAidGV4dHV0aWxzIiwgCi0gICAgICAgICAgICAidGhyZWFkaW5nIiwgCi0gICAgICAgICAgICAieG1sIiwgCi0gICAgICAgICAgICAiemxpYiIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L0RvY1hNTFJQQ1NlcnZlci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvU2ltcGxlWE1MUlBDU2VydmVyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy94bWxycGNsaWIucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiemxpYiI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHpsaWIgY29tcHJlc3Npb24gc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3psaWIuc28iCi0gICAgICAgIF0KLSAgICB9Ci19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcnVuLXB0ZXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzAwMmE0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcnVuLXB0ZXN0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jIS9iaW4vc2gKLQotcHl0aG9uIC1tdGVzdCAtVyB8IHNlZCAtdSAtZSAnL1wuXC5cLiBvay8gcy9eL1BBU1M6IC9nJyAtZSAnL1wuXC5cLiBbRVJST1J8RkFJTF0vIHMvXi9GQUlMOiAvZycgLWUgJy9cLlwuXC4gc2tpcHBlZC8gcy9eL1NLSVA6IC9nJyAtZSAncy8gXC5cLlwuIG9rLy9nJyAtZSAncy8gXC5cLlwuIEVSUk9SLy9nJyAtZSAncy8gXC5cLlwuIEZBSUwvL2cnIC1lICdzLyBcLlwuXC4gc2tpcHBlZC8vZycKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc2VhcmNoX2RiX2hfaW5faW5jX2RpcnNfYW5kX2F2b2lkX3dhcm5pbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3NlYXJjaF9kYl9oX2luX2luY19kaXJzX2FuZF9hdm9pZF93YXJuaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWNiNTUyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc2VhcmNoX2RiX2hfaW5faW5jX2RpcnNfYW5kX2F2b2lkX3dhcm5pbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1weXRob24gc2hvdWxkIHNlYXJjaCBmb3IgZGIuaCBpbiBpbmNfZGlycyBhbmQgbm90IGluIGEgaGFyZGNvZGVkIHBhdGguCi1JZiBkYi5oIGlzIGZvdW5kIGJ1dCBIQVNIVkVSU0lPTiBpcyBub3QgMiB3ZSBhdm9pZCBhIHdhcm5pbmcgYnkgbm90IAotYWRkaW5nIHRoaXMgbW9kdWxlIHRvIG1pc3NpbmcgdmFyaWFibGUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzdHJpYnV0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+Ci0KLQotZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKLWluZGV4IGI4ODc4MDguLmFlNTE2MDcgMTAwNjQ0Ci0tLS0gYS9zZXR1cC5weQotKysrIGIvc2V0dXAucHkKLUBAIC0xMjM3LDYgKzEyMzcsOCBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICAjIHRoZSBtb3JlIHJlY2VudCBiZXJrZWxleWRiJ3MgZGIuaCBmaWxlIGZpcnN0IGluIHRoZSBpbmNsdWRlIHBhdGgKLSAgICAgICAgICMgd2hlbiBhdHRlbXB0aW5nIHRvIGNvbXBpbGUgYW5kIGl0IHdpbGwgZmFpbC4KLSAgICAgICAgIGYgPSAiL3Vzci9pbmNsdWRlL2RiLmgiCi0rICAgICAgICBpZiBsZW4oaW5jX2RpcnMpICE9IDA6Ci0rICAgICAgICAgICAgZiA9IG9zLnBhdGguam9pbihpbmNfZGlyc1swXSwgImRiLmgiKQotIAotICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgICAgICBpZiBpc19tYWNvc3hfc2RrX3BhdGgoZik6Ci1AQCAtMTI1Nyw4ICsxMjU5LDEwIEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9bGlicmFyaWVzKSkKLSAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIGV4dHMuYXBwZW5kKEV4dGVuc2lvbignYnNkZGIxODUnLCBbJ2JzZGRibW9kdWxlLmMnXSkpCi0tICAgICAgICAgICAgZWxzZToKLS0gICAgICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ2JzZGRiMTg1JykKLSsgICAgICAgICAgICAjIElmIGEgbmV3ZXIgdmVyc2lvbiBpcyBkZXRlY3RlZCBkb24ndCByZXBvcnQgYW4gdXNlbGVzcwotKyAgICAgICAgICAgICMgd2FybmluZwotKyAgICAgICAgICAgICNlbHNlOgotKyAgICAgICAgICAgICMgICAgbWlzc2luZy5hcHBlbmQoJ2JzZGRiMTg1JykKLSAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ2JzZGRiMTg1JykKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc2V0dXBfcHlfc2tpcF9jcm9zc19pbXBvcnRfY2hlY2sucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3NldHVwX3B5X3NraXBfY3Jvc3NfaW1wb3J0X2NoZWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2NkYjk0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc2V0dXBfcHlfc2tpcF9jcm9zc19pbXBvcnRfY2hlY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1UaGlzIHBhdGNoIHNraXBzIG92ZXIgdGhlICdpbXBvcnQgY2hlY2snIHNldHVwLnB5IGRvZXMgd2hlbiBidWlsZGluZwotZXh0ZW5zaW9ucy4gIFRoaXMgZ2VuZXJhbGx5IHdvbid0IHdvcmsgd2hlbiBjcm9zcy1jb21waWxpbmcuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQtc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IFRvbSBaYW51c3NpIDx0b20uemFudXNzaUBpbnRlbC5jb20+Ci0KLUluZGV4OiBQeXRob24tMi43LjIvc2V0dXAucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjIub3JpZy9zZXR1cC5weQkyMDExLTExLTA0IDE2OjQ2OjM0LjU1Mzc5NjQxMCAtMDUwMAotKysrIFB5dGhvbi0yLjcuMi9zZXR1cC5weQkyMDExLTExLTA0IDE2OjU5OjQ5LjY5MjgwMjMxMyAtMDUwMAotQEAgLTI4Nyw2ICsyODcsMTUgQEAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChleHQubmFtZSwgc3lzLmV4Y19pbmZvKClbMV0pKQotICAgICAgICAgICAgIHNlbGYuZmFpbGVkLmFwcGVuZChleHQubmFtZSkKLSAgICAgICAgICAgICByZXR1cm4KLSsKLSsgICAgICAgICMgSWYgd2UncmUgY3Jvc3MtY29tcGlsaW5nLCB3ZSB3YW50IHRvIHNraXAgdGhlIGltcG9ydCBjaGVjawotKyAgICAgICAgIyBpLmUuIHdlIHNob3VsZG4ndCBiZSBkeW5hbWljYWxseSBsb2FkaW5nIHRhcmdldCBzaGFyZWQgbGlicwotKyAgICAgICAgaWYgb3MuZW52aXJvbi5nZXQoJ0NST1NTX0NPTVBJTEUnKSBpcyBub3QgTm9uZToKLSsgICAgICAgICAgICBzZWxmLmFubm91bmNlKAotKyAgICAgICAgICAgICAgICAnV0FSTklORzogc2tpcHBpbmcgaW1wb3J0IGNoZWNrIGZvciBjcm9zcy1jb21waWxlZCAiJXMiJyAlCi0rICAgICAgICAgICAgICAgIGV4dC5uYW1lKQotKyAgICAgICAgICAgIHJldHVybgotKwotICAgICAgICAgIyBXb3JrYXJvdW5kIGZvciBNYWMgT1MgWDogVGhlIENhcmJvbi1iYXNlZCBtb2R1bGVzIGNhbm5vdCBiZQotICAgICAgICAgIyByZWxpYWJseSBpbXBvcnRlZCBpbnRvIGEgY29tbWFuZC1saW5lIFB5dGhvbgotICAgICAgICAgaWYgJ0NhcmJvbicgaW4gZXh0LmV4dHJhX2xpbmtfYXJnczoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc2V0dXB0d2Vha3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3NldHVwdHdlYWtzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTkxYjE5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc2V0dXB0d2Vha3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1UaGlzIHBhdGNoIHJlbW92ZXMgdmFyaW91cyB3YXlzIG5hdGl2ZSBzeXN0ZW0gb3B0aW9ucyBjYW4gcGFzcyBpbnRvIHRoZSBweXRob24gCi1jb21waWxhdGlvbiBhbmQgc29tZWhvdyBicmVhayBDIG1vZHVsZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgU3BlY2lmaWNdCi0KLVJQIDIwMTIvMDQvMjMKLQotSW5kZXg6IFB5dGhvbi0yLjcuMi9zZXR1cC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMi5vcmlnL3NldHVwLnB5CTIwMTItMDQtMjMgMjA6MDM6NDcuMjk1NTgyNTUzICswMDAwCi0rKysgUHl0aG9uLTIuNy4yL3NldHVwLnB5CTIwMTItMDQtMjMgMjA6MDM6MTUuMDAwMDAwMDAwICswMDAwCi1AQCAtMjMxLDcgKzIzMSwxMyBAQAotICAgICAgICAgIyBjb21waWxlcnMKLSAgICAgICAgIGlmIGNvbXBpbGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgIChjY3NoYXJlZCxjZmxhZ3MpID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFycygnQ0NTSEFSRUQnLCdDRkxBR1MnKQotLSAgICAgICAgICAgIGFyZ3NbJ2NvbXBpbGVyX3NvJ10gPSBjb21waWxlciArICcgJyArIGNjc2hhcmVkICsgJyAnICsgY2ZsYWdzCi0rICAgICAgICAgICAgIyBOZWVkIHRvIGZpbHRlciBvdXQgLWlzeXNyb290IGZyb20gdGhlIGZsYWdzLiBJZGVhbGx5IHNob3VsZCAKLSsgICAgICAgICAgICAjIGZpZ3VyZSBvdXQgdGFyZ2V0IGZsYWdzIGhlcmUuCi0rICAgICAgICAgICAgZmxhZ3MgPSBbXQotKyAgICAgICAgICAgIGZvciBmIGluIGNmbGFncy5zcGxpdCgpOgotKyAgICAgICAgICAgICAgICBpZiBub3QgZi5zdGFydHN3aXRoKCItaXN5c3RlbSIpOgotKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MuYXBwZW5kKGYpCi0rICAgICAgICAgICAgYXJnc1snY29tcGlsZXJfc28nXSA9IGNvbXBpbGVyICsgJyAnICsgY2NzaGFyZWQgKyAnICcgKyAnICcuam9pbihmbGFncykKLSAgICAgICAgIHNlbGYuY29tcGlsZXIuc2V0X2V4ZWN1dGFibGVzKCoqYXJncykKLSAKLSAgICAgICAgIGJ1aWxkX2V4dC5idWlsZF9leHRlbnNpb25zKHNlbGYpCi1AQCAtMzkzLDcgKzM5OSw2IEBACi0gICAgICAgICAjIGludG8gY29uZmlndXJlIGFuZCBzdG9yZWQgaW4gdGhlIE1ha2VmaWxlIChpc3N1ZSBmb3VuZCBvbiBPUyBYIDEwLjMpLgotICAgICAgICAgZm9yIGVudl92YXIsIGFyZ19uYW1lLCBkaXJfbGlzdCBpbiAoCi0gICAgICAgICAgICAgICAgICgnTERGTEFHUycsICctUicsIHNlbGYuY29tcGlsZXIucnVudGltZV9saWJyYXJ5X2RpcnMpLAotLSAgICAgICAgICAgICAgICAoJ0xERkxBR1MnLCAnLUwnLCBzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlycyksCi0gICAgICAgICAgICAgICAgICgnQ1BQRkxBR1MnLCAnLUknLCBzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycykpOgotICAgICAgICAgICAgIGVudl92YWwgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoZW52X3ZhcikKLSAgICAgICAgICAgICBpZiBlbnZfdmFsOgotQEAgLTQxOSwxNiArNDI0LDE2IEBACi0gICAgICAgICAgICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGluIHJldmVyc2VkKG9wdGlvbnMuZGlycyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KGRpcl9saXN0LCBkaXJlY3RvcnkpCi0gCi0tICAgICAgICBpZiBvcy5wYXRoLm5vcm1wYXRoKHN5cy5wcmVmaXgpICE9ICcvdXNyJyBcCi0tICAgICAgICAgICAgICAgIGFuZCBub3Qgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdQWVRIT05GUkFNRVdPUksnKToKLSsjICAgICAgICBpZiBvcy5wYXRoLm5vcm1wYXRoKHN5cy5wcmVmaXgpICE9ICcvdXNyJyBcCi0rIyAgICAgICAgICAgICAgICBhbmQgbm90IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignUFlUSE9ORlJBTUVXT1JLJyk6Ci0gICAgICAgICAgICAgIyBPU1ggbm90ZTogRG9uJ3QgYWRkIExJQkRJUiBhbmQgSU5DTFVERURJUiB0byBidWlsZGluZyBhIGZyYW1ld29yawotICAgICAgICAgICAgICMgKFBZVEhPTkZSQU1FV09SSyBpcyBzZXQpIHRvIGF2b2lkICMgbGlua2luZyBwcm9ibGVtcyB3aGVuCi0gICAgICAgICAgICAgIyBidWlsZGluZyBhIGZyYW1ld29yayB3aXRoIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzIHRoYW4KLSAgICAgICAgICAgICAjIHRoZSBvbmUgdGhhdCBpcyBjdXJyZW50bHkgaW5zdGFsbGVkIChpc3N1ZSAjNzQ3MykKLS0gICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiTElCRElSIikpCi0tICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIklOQ0xVREVESVIiKSkKLSsjICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzLAotKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJMSUJESVIiKSkKLSsjICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzLAotKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJJTkNMVURFRElSIikpCi0gCi0gICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgaGF2ZV91bmljb2RlID0gdW5pY29kZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zaXRlY3VzdG9taXplLnB5IGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zaXRlY3VzdG9taXplLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzhiNWUyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc2l0ZWN1c3RvbWl6ZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLSMgT3BlbkVtYmVkZGVkIHNpdGVjdXN0b21pemUucHkgKEMpIDIwMDItMjAwOCBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtbGF1ZXJAdmFuaWxsZS1tZWRpYS5kZT4KLSMgR1BMdjIgb3IgbGF0ZXIKLSMgVmVyc2lvbjogMjAwODExMjMKLSMgRmVhdHVyZXM6Ci0jICogc2V0IHByb3BlciBkZWZhdWx0IGVuY29kaW5nCi0jICogZW5hYmxlIHJlYWRsaW5lIGNvbXBsZXRpb24gaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyCi0jICogbG9hZCBjb21tYW5kIGxpbmUgaGlzdG9yeSBvbiBzdGFydHVwCi0jICogc2F2ZSBjb21tYW5kIGxpbmUgaGlzdG9yeSBvbiBleGl0IAotCi1pbXBvcnQgb3MKLQotZGVmIF9fZXhpdGhhbmRsZXIoKToKLSAgICB0cnk6Ci0gICAgICAgIHJlYWRsaW5lLndyaXRlX2hpc3RvcnlfZmlsZSggIiVzLy5weXRob24taGlzdG9yeSIgJSBvcy5nZXRlbnYoICJIT01FIiwgIi90bXAiICkgKQotICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICBwYXNzCi0KLWRlZiBfX3JlZ2lzdGVyRXhpdEhhbmRsZXIoKToKLSAgICBpbXBvcnQgYXRleGl0Ci0gICAgYXRleGl0LnJlZ2lzdGVyKCBfX2V4aXRoYW5kbGVyICkKLQotZGVmIF9fZW5hYmxlUmVhZGxpbmVTdXBwb3J0KCk6Ci0gICAgcmVhZGxpbmUuc2V0X2hpc3RvcnlfbGVuZ3RoKCAxMDAwICkKLSAgICByZWFkbGluZS5wYXJzZV9hbmRfYmluZCggInRhYjogY29tcGxldGUiICkKLSAgICB0cnk6Ci0gICAgICAgIHJlYWRsaW5lLnJlYWRfaGlzdG9yeV9maWxlKCAiJXMvLnB5dGhvbi1oaXN0b3J5IiAlIG9zLmdldGVudiggIkhPTUUiLCAiL3RtcCIgKSApCi0gICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgIHBhc3MKLQotaW1wb3J0IHN5cwotdHJ5OgotICAgIGltcG9ydCBybGNvbXBsZXRlciwgcmVhZGxpbmUKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi1lbHNlOgotICAgIF9fcmVnaXN0ZXJFeGl0SGFuZGxlcigpCi0gICAgX19lbmFibGVSZWFkbGluZVN1cHBvcnQoKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGVfMi43LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGVfMi43LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjY1MTc5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlXzIuNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLVRoZSBjb21waWxlZCAucHljIGZpbGVzIGNvbnRhaW4gdGltZSBzdGFtcCBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb21waWxlIHRpbWUuCi1UaGlzIHByZXZlbnRzIGJpbmFyeSByZXByb2R1Y2liaWxpdHkuIFRoaXMgcGF0Y2ggYWxsb3dzIHRvIGFjaGlldmUgYmluYXJ5Ci1yZXByb2R1Y2liaWxpdHkgYnkgb3ZlcnJpZGluZyB0aGUgYnVpbGQgdGltZSBzdGFtcCBieSB0aGUgdmFsdWUgCi1leHBvcnRlZCB2aWEgU09VUkNFX0RBVEVfRVBPQ0guIAotCi1QYXRjaCBieSBCZXJuaGFyZCBNLiBXaWVkZW1hbm4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotCi1GcmkgRmViIDI0IDE3OjA4OjI1IFVUQyAyMDE3IC0gYndpZWRlbWFubkBzdXNlLmNvbQotCi0tIEFkZCByZXByb2R1Y2libGUucGF0Y2ggdG8gYWxsb3cgcmVwcm9kdWNpYmxlIGJ1aWxkcyBvZiB2YXJpb3VzCi0gIHB5dGhvbiBwYWNrYWdlcyBsaWtlIHB5dGhvbi1hbXFwCi0gIFVwc3RyZWFtOiBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vcHVsbC8yOTYKLQotCi1AQCAtMCwwICsxLDE1IEBACi1JbmRleDogUHl0aG9uLTIuNy4xMy9MaWIvcHlfY29tcGlsZS5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9MaWIvcHlfY29tcGlsZS5weQotKysrIFB5dGhvbi0yLjcuMTMvTGliL3B5X2NvbXBpbGUucHkKLUBAIC0xMDgsNiArMTA4LDEwIEBAIGRlZiBjb21waWxlKGZpbGUsIGNmaWxlPU5vbmUsIGRmaWxlPU5vbmUKLSAgICAgICAgICAgICB0aW1lc3RhbXAgPSBsb25nKG9zLmZzdGF0KGYuZmlsZW5vKCkpLnN0X210aW1lKQotICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgIHRpbWVzdGFtcCA9IGxvbmcob3Muc3RhdChmaWxlKS5zdF9tdGltZSkKLSsgICAgICAgIHNkZSA9IG9zLmVudmlyb24uZ2V0KCdTT1VSQ0VfREFURV9FUE9DSCcpCi0rICAgICAgICBpZiBzZGUgYW5kIHRpbWVzdGFtcCA+IGludChzZGUpOgotKyAgICAgICAgICAgIHRpbWVzdGFtcCA9IGludChzZGUpCi0rICAgICAgICAgICAgb3MudXRpbWUoZmlsZSwgKHRpbWVzdGFtcCwgdGltZXN0YW1wKSkKLSAgICAgICAgIGNvZGVzdHJpbmcgPSBmLnJlYWQoKQotICAgICB0cnk6Ci0gICAgICAgICBjb2Rlb2JqZWN0ID0gX19idWlsdGluX18uY29tcGlsZShjb2Rlc3RyaW5nLCBkZmlsZSBvciBmaWxlLCdleGVjJykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vdXNlX3N5c3Jvb3RfbmN1cnNlc19pbnN0ZWFkX29mX2hvc3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3VzZV9zeXNyb290X25jdXJzZXNfaW5zdGVhZF9vZl9ob3N0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjRhM2JjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vdXNlX3N5c3Jvb3RfbmN1cnNlc19pbnN0ZWFkX29mX2hvc3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1QeXRob24gdHJpZXMgdG8gdXNlIG5jdXJzZXN3IGZyb20gdGhlIGhvc3QsCi1pZiBpdCBpcyBub3QgZm91bmQgY2F1c2VzIGFuIGVycm9yIG9uIGNvbmZpZ3VyZSwKLXdlIHNob3VsZCB1c2UgbmN1cnNlc3cgZnJvbSBzeXNyb290IGluc3RlYWQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPgotCi1JbmRleDogUHl0aG9uLTIuNy45L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuOS5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIFB5dGhvbi0yLjcuOS9jb25maWd1cmUuYWMKLUBAIC00MzExLDcgKzQzMTEsNyBAQCBmaQotIAotICMgZmlyc3QgY3Vyc2VzIGNvbmZpZ3VyZSBjaGVjawotIGFjX3NhdmVfY3BwZmxhZ3M9IiRDUFBGTEFHUyIKLS1DUFBGTEFHUz0iJENQUEZMQUdTIC1JL3Vzci9pbmNsdWRlL25jdXJzZXN3IgotK0NQUEZMQUdTPSIkQ1BQRkxBR1MgLUk9L3Vzci9pbmNsdWRlL25jdXJzZXN3IgotIAotIEFDX0NIRUNLX0hFQURFUlMoY3Vyc2VzLmggbmN1cnNlcy5oKQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3l0aG9uXzAuMjkuMTYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jeXRob25fMC4yOS4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2U2YmRiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3l0aG9uXzAuMjkuMTYuYmIKQEAgLTAsMCArMSwxOCBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tY3l0aG9uLmluYworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgIHB5dGhvbjMtc2V0dXB0b29scyBcCisiCisKKyMgcnVubmluZyBidWlsZF9leHQgYSBzZWNvbmQgdGltZSBkdXJpbmcgaW5zdGFsbCBmYWlscywgYmVjYXVzZSBQeXRob24KKyMgd291bGQgdGhlbiBhdHRlbXB0IHRvIGltcG9ydCBjeXRob25pemVkIG1vZHVsZXMgYnVpbHQgZm9yIHRoZSB0YXJnZXQKKyMgYXJjaGl0ZWN0dXJlLgorRElTVFVUSUxTX0lOU1RBTExfQVJHUyArPSAiLS1za2lwLWJ1aWxkIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIHJlbmFtZSBzY3JpcHRzIHRoYXQgd291bGQgY29uZmxpY3Qgd2l0aCB0aGUgUHl0aG9uIDIgYnVpbGQgb2YgQ3l0aG9uCisgICAgbXYgJHtEfSR7YmluZGlyfS9jeXRob24gJHtEfSR7YmluZGlyfS9jeXRob24zCisgICAgbXYgJHtEfSR7YmluZGlyfS9jeXRob25pemUgJHtEfSR7YmluZGlyfS9jeXRob25pemUzCisgICAgbXYgJHtEfSR7YmluZGlyfS9jeWdkYiAke0R9JHtiaW5kaXJ9L2N5Z2RiMworfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGJ1c18xLjIuMTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi4xMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAwNWRjNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgREJ1cyBpbnRlci1wcm9jZXNzIGNvbW11bmljYXRpb24gc3lzdGVtIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9Tb2Z0d2FyZS9kYnVzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMDMyNDA1MTg5OTRkZjZkOGM5NzQ2NzU2NzVlNWNhNCIKLURFUEVORFMgPSAiZXhwYXQgZGJ1cyBnbGliLTIuMCB2aXJ0dWFsL2xpYmludGwiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMtcHl0aG9uL2RidXMtcHl0aG9uLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQyOGI3YTllN2UyZDE1NGE3Y2ViM2UxMzUzNjI4M2U0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNkZDRkZTJjNGY1ZTU4ZjI4N2IxMjAxM2VkN2I0MWRlZTgxZDUwM2M4ZDBkMjM5N2M1YmQyZmIwMWJhZGYyNjAiCi0KLVMgPSAiJHtXT1JLRElSfS9kYnVzLXB5dGhvbi0ke1BWfSIKLQotaW5oZXJpdCBkaXN0dXRpbHMzLWJhc2UgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi0jIGRvY3VtZW50YXRpb24gbmVlZHMgcHl0aG9uMy1zcGhpbngsIHdoaWNoIGlzIG5vdCBpbiBvZS1jb3JlIG9yIG1ldGEtcHl0aG9uIGZvciBub3cKLSMgY2hhbmdlIHRvIHVzZSBQQUNLQUdFQ09ORklHIHdoZW4gcHl0aG9uMy1zcGhpbnggaXMgYWRkZWQgdG8gb2UtY29yZQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtZG9jdW1lbnRhdGlvbiIKLQotCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24zLWlvIHB5dGhvbjMtbG9nZ2luZyBweXRob24zLXN0cmluZ29sZCBweXRob24zLXRocmVhZGluZyBweXRob24zLXhtbCIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGtnY29uZmlnIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi4xNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjE2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNzAwZmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi4xNi5iYgpAQCAtMCwwICsxLDI2IEBACitTVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIERCdXMgaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIHN5c3RlbSIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvU29mdHdhcmUvZGJ1cyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjAzMjQwNTE4OTk0ZGY2ZDhjOTc0Njc1Njc1ZTVjYTQiCitERVBFTkRTID0gImV4cGF0IGRidXMgZ2xpYi0yLjAgdmlydHVhbC9saWJpbnRsIgorCitTUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzLXB5dGhvbi9kYnVzLXB5dGhvbi0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MWE0NWM5NzNkODJiZWRmZjAzM2E0YjU3ZDY5ZDVkOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxMTIzOGYxZDg2Yzk5NWQ4YWVkMmUyMmYwNGExZTM3NzlmMGQ3MGU1ODdjYWZmZWFiNDg1N2YzYzY2MmVkNWE0IgorCitTID0gIiR7V09SS0RJUn0vZGJ1cy1weXRob24tJHtQVn0iCisKK2luaGVyaXQgZGlzdHV0aWxzMy1iYXNlIGF1dG90b29scyBwa2djb25maWcKKworIyBkb2N1bWVudGF0aW9uIG5lZWRzIHB5dGhvbjMtc3BoaW54LCB3aGljaCBpcyBub3QgaW4gb2UtY29yZSBvciBtZXRhLXB5dGhvbiBmb3Igbm93CisjIGNoYW5nZSB0byB1c2UgUEFDS0FHRUNPTkZJRyB3aGVuIHB5dGhvbjMtc3BoaW54IGlzIGFkZGVkIHRvIG9lLWNvcmUKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWRvY3VtZW50YXRpb24iCisKKworUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1pbyBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1zdHJpbmdvbGQgcHl0aG9uMy10aHJlYWRpbmcgcHl0aG9uMy14bWwiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3BrZ2NvbmZpZyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9jdXRpbHNfMC4xNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY3V0aWxzXzAuMTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1YzNmNWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9jdXRpbHNfMC4xNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiVGV4dCBwcm9jZXNzaW5nIHN5c3RlbSBmb3IgZG9jdW1lbnRhdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9kb2N1dGlscy5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiUFNGICYgQlNELTItQ2xhdXNlICYgR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9MzVhMjNkNDJiNjE1NDcwNTgzNTYzMTMyODcyYzk3ZDYiCi0KLURFUEVORFMgPSAicHl0aG9uMyIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZG9jdXRpbHMvZG9jdXRpbHMtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImY1MTcyOWYxOWU3MGE5ZGM0ODM3NDMzMTkzYTVlNzk4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImMzNWU4N2U5ODVmNzAxMDZmNmY5N2UwNTBmM2JlZDk5MDY0MWUwZTEwNDU2NjEzNGI5Y2QyMzg0OWE0NjBlOTYiCi0KLVMgPSAiJHtXT1JLRElSfS9kb2N1dGlscy0ke1BWfSIKLQotaW5oZXJpdCBkaXN0dXRpbHMzCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9jdXRpbHNfMC4xNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY3V0aWxzXzAuMTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA1NDdhMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY3V0aWxzXzAuMTYuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJUZXh0IHByb2Nlc3Npbmcgc3lzdGVtIGZvciBkb2N1bWVudGF0aW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL2RvY3V0aWxzLnNvdXJjZWZvcmdlLm5ldCIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJQU0YgJiBCU0QtMi1DbGF1c2UgJiBHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT03YTQ2NDY5MDdhYjkwODNjODI2MjgwYjE5ZTEwMzEwNiIKKworREVQRU5EUyA9ICJweXRob24zIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9kb2N1dGlscy9kb2N1dGlscy0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiOWNjYjZmMzMyZTIzMzYwZjk2NGRlNzJjOGVhNWYwZWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2Q0ZTk5OWNjYTc0YTUyNjExNzczYTQyOTEyMDg4MDc4MzYzYTMwOTEyZTg4MjJmN2EzZDM4MDQzYjc2NzU3MyIKKworUyA9ICIke1dPUktESVJ9L2RvY3V0aWxzLSR7UFZ9IgorCitpbmhlcml0IGRpc3R1dGlsczMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMy4wLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMy4wLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZDc1M2QuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzMuMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gbGlicmFyeSB1c2VkIHRvIGludGVyYWN0IHdpdGggR2l0IHJlcG9zaXRvcmllcyIKLURFU0NSSVBUSU9OID0gIkdpdFB5dGhvbiBwcm92aWRlcyBvYmplY3QgbW9kZWwgcmVhZCBhbmQgd3JpdGUgYWNjZXNzIHRvIFwKLWEgZ2l0IHJlcG9zaXRvcnkuIEFjY2VzcyByZXBvc2l0b3J5IGluZm9ybWF0aW9uIGNvbnZlbmllbnRseSwgYWx0ZXIgdGhlIFwKLWluZGV4IGRpcmVjdGx5LCBoYW5kbGUgcmVtb3Rlcywgb3IgZ28gZG93biB0byBsb3ctbGV2ZWwgb2JqZWN0IGRhdGFiYXNlIFwKLWFjY2VzcyB3aXRoIGJpZy1maWxlcyBzdXBwb3J0LiIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2dpdHB5dGhvbi1kZXZlbG9wZXJzL0dpdFB5dGhvbiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04YjhkMjZjMzdjMWQ1YTA0ZjliMDE4NmVkYmViYzE4MyIKLQotUFlQSV9QQUNLQUdFID0gIkdpdFB5dGhvbiIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjY2VjMTRhNWM5ZjE4NzAyNDA2MTIyOTgzZDgwMDMyYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMmY0OTQ1ZjgyNjBmNjk4MWQ3MjRmNTk1N2JjMDc2Mzk4YWRhNTVjYjVkMjVhYWVlMTAxMDhiY2RjODk0MTAwIgotCi1ERVBFTkRTICs9ICIgJHtQWVRIT05fUE59LWdpdGRiIgotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAotICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1naXRkYiBcCi0gICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWlvIFwKLSAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCi0gICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW1hdGggXAotICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAotICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAotICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS11bml0dGVzdCBcCi0gICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXVuaXhhZG1pbiBcCi0gICAgICAgICAgICAgICAgICAgZ2l0IFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzMuMC41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzMuMC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MzEzZWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMy4wLjUuYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJQeXRob24gbGlicmFyeSB1c2VkIHRvIGludGVyYWN0IHdpdGggR2l0IHJlcG9zaXRvcmllcyIKK0RFU0NSSVBUSU9OID0gIkdpdFB5dGhvbiBwcm92aWRlcyBvYmplY3QgbW9kZWwgcmVhZCBhbmQgd3JpdGUgYWNjZXNzIHRvIFwKK2EgZ2l0IHJlcG9zaXRvcnkuIEFjY2VzcyByZXBvc2l0b3J5IGluZm9ybWF0aW9uIGNvbnZlbmllbnRseSwgYWx0ZXIgdGhlIFwKK2luZGV4IGRpcmVjdGx5LCBoYW5kbGUgcmVtb3Rlcywgb3IgZ28gZG93biB0byBsb3ctbGV2ZWwgb2JqZWN0IGRhdGFiYXNlIFwKK2FjY2VzcyB3aXRoIGJpZy1maWxlcyBzdXBwb3J0LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2dpdHB5dGhvbi1kZXZlbG9wZXJzL0dpdFB5dGhvbiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04YjhkMjZjMzdjMWQ1YTA0ZjliMDE4NmVkYmViYzE4MyIKKworUFlQSV9QQUNLQUdFID0gIkdpdFB5dGhvbiIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3NTU1YWQ4OWEyMmY2NjNjMjVjY2VkNWY2MjNiZGVmMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5YzIzOThmZmMzZGNiM2M0MGIyNzMyNGIzMTZmMDhhNGY5M2FkNjQ2ZDVhNjMyOGNhZmJiODcxYWE3OWY1ZTQyIgorCitERVBFTkRTICs9ICIgJHtQWVRIT05fUE59LWdpdGRiIgorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1naXRkYiBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWlvIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW1hdGggXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS11bml0dGVzdCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXVuaXhhZG1pbiBcCisgICAgICAgICAgICAgICAgICAgZ2l0IFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0ZGJfMi4wLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRkYl8yLjAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmUxNTgzMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRkYl8yLjAuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tZ2l0ZGIuaW5jCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRkYl8yLjAuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdGRiXzIuMC42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkY2Q5YzgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRkYl8yLjAuNi5iYgpAQCAtMCwwICsxLDMgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWdpdGRiLmluYworCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1saWJhcmNoaXZlLWNfMi45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbGliYXJjaGl2ZS1jXzIuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTgzYWU1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbGliYXJjaGl2ZS1jXzIuOS5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIlB5dGhvbiBpbnRlcmZhY2UgdG8gbGliYXJjaGl2ZSIKK0RFU0NSSVBUSU9OID0gIkEgUHl0aG9uIGludGVyZmFjZSB0byBsaWJhcmNoaXZlLiBJdCB1c2VzIHRoZSBzdGFuZGFyZCBjdHlwZXMgbW9kdWxlIHRvIFwKKyAgICBkeW5hbWljYWxseSBsb2FkIGFuZCBhY2Nlc3MgdGhlIEMgbGlicmFyeS4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vQ2hhbmdhY28vcHl0aG9uLWxpYmFyY2hpdmUtYyIKK0xJQ0VOU0UgPSAiQ0MwLTEuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PWJjYWIzODAyMjdhODNiYzE0NzM1MGI0MGE4MWU2ZmZjIgorCitQWVBJX1BBQ0tBR0UgPSAibGliYXJjaGl2ZS1jIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSVttZDVzdW1dID0gIjA4M2JkMmNiMDA0M2MxZTIyYTUyY2I5YTA1ZTMxNTMyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk5MTkzNDRjZWMyMDNmNWRiNjU5NmEyOWI1YmMyNmIwN2JhOTY2MjkyNWEwNWUyNDk4MGI4NDcwOTIzMmVmNjAiCisKK1JERVBFTkRTXyR7UE59ICs9ICJsaWJhcmNoaXZlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1hZ2ljXzAuNC4xNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1hZ2ljXzAuNC4xNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTgwMTZiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFnaWNfMC40LjE1LmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiRmlsZSB0eXBlIGlkZW50aWZpY2F0aW9uIHVzaW5nIGxpYm1hZ2ljIgorREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgdXNlcyBjdHlwZXMgdG8gYWNjZXNzIHRoZSBsaWJtYWdpYyBmaWxlIHR5cGUgXAorICAgIGlkZW50aWZpY2F0aW9uIGxpYnJhcnkuIEl0IG1ha2VzIHVzZSBvZiB0aGUgbG9jYWwgbWFnaWMgZGF0YWJhc2UgYW5kIHN1cHBvcnRzIFwKKyAgICBib3RoIHRleHR1YWwgYW5kIE1JTUUtdHlwZSBvdXRwdXQuIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vYWh1cHAvcHl0aG9uLW1hZ2ljIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE2YTkzNGYxNjVlOGMzMjQ1ZjI0MWU3N2Q0MDFiYjg4IgorCitQWVBJX1BBQ0tBR0UgPSAicHl0aG9uLW1hZ2ljIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSVttZDVzdW1dID0gImUzODRjOTVhNDcyMThmNjZjNjUwMWNkNmRkNDVmZjU5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImYzNzY1YzBmNTgyZDJkZmM3MmMxNWYzYjVhODJhZWNmYWU5NDk4YmQyOWNhODQwZDcyZjM3ZDdiZDM4YmZjZDUiCisKK1JERVBFTkRTXyR7UE59ICs9ICJmaWxlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1ha29fMS4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWtvXzEuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTM5ZTVhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1ha29fMS4xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIlRlbXBsYXRpbmcgbGlicmFyeSBmb3IgUHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tYWtvdGVtcGxhdGVzLm9yZy8iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZGY3ZTZjN2M4Mjk5MGFjZjAyMjhhNTVlMDBkMjliYzkiCi0KLVBZUElfUEFDS0FHRSA9ICJNYWtvIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLQotU1JDX1VSSVttZDVzdW1dID0gIjZjM2YyZGEwYjc0YWY1MjlhNGM0YTUzN2QwODQ4YmYyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEzNjkxOTU5OWE5YjdkYzVkODZhN2E4OTg4ZjIzYTlhM2EzZDA4MzA3MDAyM2JhYjIzZDY0ZjdmMWQxZTBhNGIiCi0KLVJERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1odG1sIFwKLSAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAotICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0iCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1ha29fMS4xLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWtvXzEuMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMzgwMDkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWtvXzEuMS4xLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiVGVtcGxhdGluZyBsaWJyYXJ5IGZvciBQeXRob24iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1ha290ZW1wbGF0ZXMub3JnLyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05NDNlYjY3NzE4MjIyZGIyMWQ0NGE0ZWYxODM2Njc1ZiIKKworUFlQSV9QQUNLQUdFID0gIk1ha28iCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiMjY2MGE0OTE2ZjJmNjM0NTZlNjg4NWM3MjdiN2NkMmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjk4NGE2NzMzZTFkNDcyNzk2Y2VlZjM3YWQ0OGMyNmY0YTk4NGJiMTgxMTliYjJkYmMzN2E0NGQ4ZjZlNzVhNCIKKworUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LWh0bWwgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGJyLzAwMDEtY2hhbmdlLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBici8wMDAxLWNoYW5nZS1zaGViYW5nLXRvLXB5dGhvbjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg4ZGE2YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBici8wMDAxLWNoYW5nZS1zaGViYW5nLXRvLXB5dGhvbjMucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSAwOWJkODM2OGJmMGQ1Mzg1NjYzYTEwZWViODkwMTMxNDgxNjgxYmRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjMgQXByIDIwMjAgMDk6Mjg6NTggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gY2hhbmdlIHNoZWJhbmcgdG8gcHl0aG9uMworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIHBici90ZXN0cy90ZXN0X2ludGVncmF0aW9uLnB5IHwgMiArLQorIHBici90ZXN0cy90ZXN0X3BhY2thZ2luZy5weSAgIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcGJyL3Rlc3RzL3Rlc3RfaW50ZWdyYXRpb24ucHkgYi9wYnIvdGVzdHMvdGVzdF9pbnRlZ3JhdGlvbi5weQoraW5kZXggOGU5NmYyMS4uYjA3Y2JlMyAxMDA2NDQKKy0tLSBhL3Bici90ZXN0cy90ZXN0X2ludGVncmF0aW9uLnB5CisrKysgYi9wYnIvdGVzdHMvdGVzdF9pbnRlZ3JhdGlvbi5weQorQEAgLTE1MCw3ICsxNTAsNyBAQCBjbGFzcyBUZXN0SW5zdGFsbFdpdGhvdXRQYnIoYmFzZS5CYXNlVGVzdENhc2UpOgorICAgICAgICAgcGtncyA9IHsKKyAgICAgICAgICAgICAncGtnVGVzdCc6IHsKKyAgICAgICAgICAgICAgICAgJ3NldHVwLnB5JzogdGV4dHdyYXAuZGVkZW50KCIiIlwKKy0gICAgICAgICAgICAgICAgICAgICMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyAgICAgICAgICAgICAgICAgICAgIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHNldHVwdG9vbHMKKyAgICAgICAgICAgICAgICAgICAgIHNldHVwdG9vbHMuc2V0dXAoCisgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICdwa2dUZXN0JywKK2RpZmYgLS1naXQgYS9wYnIvdGVzdHMvdGVzdF9wYWNrYWdpbmcucHkgYi9wYnIvdGVzdHMvdGVzdF9wYWNrYWdpbmcucHkKK2luZGV4IDA3YmU1NDcuLmY2YTk0MTIgMTAwNjQ0CistLS0gYS9wYnIvdGVzdHMvdGVzdF9wYWNrYWdpbmcucHkKKysrKyBiL3Bici90ZXN0cy90ZXN0X3BhY2thZ2luZy5weQorQEAgLTIwNiw3ICsyMDYsNyBAQCBjbGFzcyBDcmVhdGVQYWNrYWdlcyhmaXh0dXJlcy5GaXh0dXJlKToKKyAKKyAgICAgZGVmYXVsdHMgPSB7CisgICAgICAgICAnc2V0dXAucHknOiB0ZXh0d3JhcC5kZWRlbnQoc2l4LnUoIiIiXAorLSAgICAgICAgICAgICMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyAgICAgICAgICAgICMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAgICAgICAgICAgICBpbXBvcnQgc2V0dXB0b29scworICAgICAgICAgICAgIHNldHVwdG9vbHMuc2V0dXAoCisgICAgICAgICAgICAgICAgIHNldHVwX3JlcXVpcmVzPVsncGJyJ10sCistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYnJfNS40LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYnJfNS40LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ODM1ZTcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGJyXzUuNC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1wYnIuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0NzdkMmFhMjg1YWQ5NzI1MGExNzJiMTk5ZjQwNjBiNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYzhlNDIwY2Q0ZWQ0Y2VjNGU3OTk5ZWU0NzQwOWU4NzZhZjU3NWQ0YzM1YTQ1ODQwZDU5ZThiNWYzMTU1YWI4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGJyXzUuNC40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGJyXzUuNC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmMzM1ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYnJfNS40LjQuYmIKQEAgLTAsMCArMSw1IEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1wYnIuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NWNkYzMyZTFhMWZmNTZkNDgxZmMxNWFhOGNhZjk4OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxMzlkMjYyNTU0N2RiZmE1ZmIwYjgxZGFlYmIzOTYwMWM0NzhjMjE5NTZkYzU3ZTJlMDdiNzQ0NTBhOGM1MDZiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwLzAwMDEtY2hhbmdlLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcC8wMDAxLWNoYW5nZS1zaGViYW5nLXRvLXB5dGhvbjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBjZmZlMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcC8wMDAxLWNoYW5nZS1zaGViYW5nLXRvLXB5dGhvbjMucGF0Y2gKQEAgLTAsMCArMSw2MCBAQAorRnJvbSBlN2EwMGU5YjUxMDRhZTJmYmNlYTMyYTM1Yzg1NzYwYjc3ZmFlN2U1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjMgQXByIDIwMjAgMDk6NDI6MTAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gY2hhbmdlIHNoZWJhbmcgdG8gcHl0aG9uMworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworcGlwIHdpbGwgZHJvcCBzdXBwb3J0IG9mIHB5dGhvbjIgZnJvbSAyMS4wCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvcGlwL19pbnRlcm5hbC9fX2luaXRfXy5weSAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvcGlwL192ZW5kb3IvYXBwZGlycy5weSAgICAgICAgICAgICAgICB8IDIgKy0KKyBzcmMvcGlwL192ZW5kb3IvY2hhcmRldC9jbGkvY2hhcmRldGVjdC5weSB8IDIgKy0KKyBzcmMvcGlwL192ZW5kb3IvcmVxdWVzdHMvY2VydHMucHkgICAgICAgICB8IDIgKy0KKyA0IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9waXAvX2ludGVybmFsL19faW5pdF9fLnB5IGIvc3JjL3BpcC9faW50ZXJuYWwvX19pbml0X18ucHkKK2luZGV4IDNhYThhNDYuLmUxYWQxNzkgMTAwNzU1CistLS0gYS9zcmMvcGlwL19pbnRlcm5hbC9fX2luaXRfXy5weQorKysrIGIvc3JjL3BpcC9faW50ZXJuYWwvX19pbml0X18ucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBpbXBvcnQgcGlwLl9pbnRlcm5hbC51dGlscy5pbmplY3Rfc2VjdXJldHJhbnNwb3J0ICAjIG5vcWEKKyBmcm9tIHBpcC5faW50ZXJuYWwudXRpbHMudHlwaW5nIGltcG9ydCBNWVBZX0NIRUNLX1JVTk5JTkcKKyAKK2RpZmYgLS1naXQgYS9zcmMvcGlwL192ZW5kb3IvYXBwZGlycy5weSBiL3NyYy9waXAvX3ZlbmRvci9hcHBkaXJzLnB5CitpbmRleCAzYTUyYjc1Li5hZDNmODFkIDEwMDY0NAorLS0tIGEvc3JjL3BpcC9fdmVuZG9yL2FwcGRpcnMucHkKKysrKyBiL3NyYy9waXAvX3ZlbmRvci9hcHBkaXJzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyAjIENvcHlyaWdodCAoYykgMjAwNS0yMDEwIEFjdGl2ZVN0YXRlIFNvZnR3YXJlIEluYy4KKyAjIENvcHlyaWdodCAoYykgMjAxMyBFZGR5IFBldHJpyJlvcgorZGlmZiAtLWdpdCBhL3NyYy9waXAvX3ZlbmRvci9jaGFyZGV0L2NsaS9jaGFyZGV0ZWN0LnB5IGIvc3JjL3BpcC9fdmVuZG9yL2NoYXJkZXQvY2xpL2NoYXJkZXRlY3QucHkKK2luZGV4IGM2MTEzNmIuLmE0OTdlOTggMTAwNjQ0CistLS0gYS9zcmMvcGlwL192ZW5kb3IvY2hhcmRldC9jbGkvY2hhcmRldGVjdC5weQorKysrIGIvc3JjL3BpcC9fdmVuZG9yL2NoYXJkZXQvY2xpL2NoYXJkZXRlY3QucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyBTY3JpcHQgd2hpY2ggdGFrZXMgb25lIG9yIG1vcmUgZmlsZSBwYXRocyBhbmQgcmVwb3J0cyBvbiB0aGVpciBkZXRlY3RlZAorIGVuY29kaW5ncworZGlmZiAtLWdpdCBhL3NyYy9waXAvX3ZlbmRvci9yZXF1ZXN0cy9jZXJ0cy5weSBiL3NyYy9waXAvX3ZlbmRvci9yZXF1ZXN0cy9jZXJ0cy5weQoraW5kZXggMDZhNTk0ZS4uYmZhNzgzOSAxMDA2NDQKKy0tLSBhL3NyYy9waXAvX3ZlbmRvci9yZXF1ZXN0cy9jZXJ0cy5weQorKysrIGIvc3JjL3BpcC9fdmVuZG9yL3JlcXVlc3RzL2NlcnRzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyAKKyAiIiIKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF8xOS4zLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfMTkuMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjdlNmZjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF8xOS4zLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBQeVBBIHJlY29tbWVuZGVkIHRvb2wgZm9yIGluc3RhbGxpbmcgUHl0aG9uIHBhY2thZ2VzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9waXAiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PThiYTA2ZDUyOWM5NTUwNDhlNWRkZDdjNDU0NTllYjJlIgotCi1ERVBFTkRTICs9ICJweXRob24zIHB5dGhvbjMtc2V0dXB0b29scy1uYXRpdmUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxYWFhZjkwZmJhZmM1MGU3YmExZTY2ZmZjZWIwMDk2MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMTIwN2Q3NmMxMDMxZTUxNzY2ODg5OGE2YjQ2YTlmYjE1MDFjN2E0NzEwZWY1ZGZkNmE0MGFkOWU2NzU3ZWE3IgotCi1pbmhlcml0IHB5cGkgZGlzdHV0aWxzMwotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIEluc3RhbGwgYXMgcGlwMyBhbmQgbGVhdmUgcGlwMiBhcyBkZWZhdWx0Ci0gICAgcm0gJHtEfS8ke2JpbmRpcn0vcGlwCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgcHl0aG9uMy1jb21waWxlIFwKLSAgcHl0aG9uMy1pbyBcCi0gIHB5dGhvbjMtaHRtbCBcCi0gIHB5dGhvbjMtanNvbiBcCi0gIHB5dGhvbjMtbmV0c2VydmVyIFwKLSAgcHl0aG9uMy1zZXR1cHRvb2xzIFwKLSAgcHl0aG9uMy11bml4YWRtaW4gXAotICBweXRob24zLXhtbHJwYyBcCi0gIHB5dGhvbjMtcGlja2xlIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzIwLjAuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF8yMC4wLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY5NzNkYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF8yMC4wLjIuYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJUaGUgUHlQQSByZWNvbW1lbmRlZCB0b29sIGZvciBpbnN0YWxsaW5nIFB5dGhvbiBwYWNrYWdlcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcGlwIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT04YmEwNmQ1MjljOTU1MDQ4ZTVkZGQ3YzQ1NDU5ZWIyZSIKKworREVQRU5EUyArPSAicHl0aG9uMyBweXRob24zLXNldHVwdG9vbHMtbmF0aXZlIgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1jaGFuZ2Utc2hlYmFuZy10by1weXRob24zLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiN2Q0MmJhNDliODA5NjA0ZjBkZjNkNTVkZjFjM2ZkODYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2RiMGM4ZWE0YzdlYTUxYzgwNDk2NDBlOGU2ZTdmZGU5NDlkZTY3MmJmYTQ5NDk5MjA2NzU1NjNhNWE2OTY3ZiIKKworaW5oZXJpdCBweXBpIGRpc3R1dGlsczMKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBJbnN0YWxsIGFzIHBpcDMgYW5kIGxlYXZlIHBpcDIgYXMgZGVmYXVsdAorICAgIHJtICR7RH0vJHtiaW5kaXJ9L3BpcAorfQorCitSREVQRU5EU18ke1BOfSA9ICJcCisgIHB5dGhvbjMtY29tcGlsZSBcCisgIHB5dGhvbjMtaW8gXAorICBweXRob24zLWh0bWwgXAorICBweXRob24zLWpzb24gXAorICBweXRob24zLW5ldHNlcnZlciBcCisgIHB5dGhvbjMtc2V0dXB0b29scyBcCisgIHB5dGhvbjMtdW5peGFkbWluIFwKKyAgcHl0aG9uMy14bWxycGMgXAorICBweXRob24zLXBpY2tsZSBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y2Fpcm9fMS4xOC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjE4LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhYWEwMWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjE4LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIENhaXJvIGNhbnZhcyBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL3B5Y2Fpcm8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZyIKLVNFQ1RJT04gPSAicHl0aG9uLWRldmVsIgotTElDRU5TRSA9ICJMR1BMdjIuMSAmIE1QTHYxLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMmUwNzFhYjcyOTc4NDMxYjI5NGEwZDY5NjMyNzQyMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLUxHUEwtMi4xO21kNT1mYWQ5YjMzMzJiZTg5NGJhYjliYzUwMTU3Mjg2NGIyOSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLU1QTC0xLjE7bWQ1PWJmZTFmNzVkNjA2OTEyYTQxMTFjOTA3NDNkNmM3MzI1IgotCi0jIGNhaXJvID49IDEuMTQKLURFUEVORFMgPSAiY2Fpcm8gcHl0aG9uMyIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcHlnb2JqZWN0L3B5Y2Fpcm8vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9L3B5Y2Fpcm8tJHtQVn0udGFyLmd6IgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9weWdvYmplY3QvcHljYWlyby9yZWxlYXNlcy8iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3NjEwZGE4YTQwYTdiZWQ1NDg5OTFhYTM0MTY0MzFkMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MDE3MmU1OGI2YmFkNzU3MmEzNTE4YzI2NzI5YjA3NGFjZGRlMTVlNmZlZTZjYmFiNmQzNTI4YWQ1NTJiNzg2IgotCi1TID0gIiR7V09SS0RJUn0vcHljYWlyby0ke1BWfSIKLQotaW5oZXJpdCBtZXNvbiBwa2djb25maWcKLQotQ0ZMQUdTICs9ICItZlBJQyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLUZJTEVTXyR7UE59ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNhaXJvXzEuMTkuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y2Fpcm9fMS4xOS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmNjA4MzQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNhaXJvXzEuMTkuMC5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIENhaXJvIGNhbnZhcyBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnL3B5Y2Fpcm8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZyIKK1NFQ1RJT04gPSAicHl0aG9uLWRldmVsIgorTElDRU5TRSA9ICJMR1BMdjIuMSAmIE1QTHYxLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMzcxM2NhMmMyOGQ5MzEyYWQ3MTg1MjBiNmRjM2VlZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLUxHUEwtMi4xO21kNT1mYWQ5YjMzMzJiZTg5NGJhYjliYzUwMTU3Mjg2NGIyOSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLU1QTC0xLjE7bWQ1PWJmZTFmNzVkNjA2OTEyYTQxMTFjOTA3NDNkNmM3MzI1IgorCisjIGNhaXJvID49IDEuMTQKK0RFUEVORFMgPSAiY2Fpcm8gcHl0aG9uMyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcHlnb2JqZWN0L3B5Y2Fpcm8vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9L3B5Y2Fpcm8tJHtQVn0udGFyLmd6IgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9weWdvYmplY3QvcHljYWlyby9yZWxlYXNlcy8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzOGI4NDQxNjAyMTY0MGIwMTI1MGM4ZjhlYzRjNTJkNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZjViYTkzNzRhNDZjOTg3MjlkZDM3MjdkOTkzZjVlMTdlZDAyODZmZDY3MzhlZDQ2NGZlNGVmYTA2MTJkMTljIgorCitTID0gIiR7V09SS0RJUn0vcHljYWlyby0ke1BWfSIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcKKworQ0ZMQUdTICs9ICItZlBJQyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK0ZJTEVTXyR7UE59ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdtZW50c18yLjQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z21lbnRzXzIuNC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWMwYWM2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z21lbnRzXzIuNC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJQeWdtZW50cyBpcyBhIHN5bnRheCBoaWdobGlnaHRpbmcgcGFja2FnZSB3cml0dGVuIGluIFB5dGhvbi4iCi1ERVNDUklQVElPTiA9ICJQeWdtZW50cyBpcyBhIHN5bnRheCBoaWdobGlnaHRpbmcgcGFja2FnZSB3cml0dGVuIGluIFB5dGhvbi4iCi1IT01FUEFHRSA9ICJodHRwOi8vcHlnbWVudHMub3JnLyIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTFkN2I3YmZmYmZlYWExNDA4M2ZkMmJkMzIzNmFlYTgiCi0KLWluaGVyaXQgc2V0dXB0b29sczMKLVNSQ19VUklbbWQ1c3VtXSA9ICI1ZWNjM2ZiYjJhNzgzZTkxN2IzNjkyNzFmYzBlNmNkMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ODFjNGMxNTdlNDVmMzBhZjE4NWMxZmZlOGQ1NDlkNDhhYzkxMjc0MzNmMmMzODBjMjRiODQ1NzJhZDY2Mjk3IgotCi1ERVBFTkRTICs9ICJcCi0gICAgICAgICAgICAke1BZVEhPTl9QTn0gXAotICAgICAgICAgICAgIgotCi1QWVBJX1BBQ0tBR0UgPSAiUHlnbWVudHMiCi0KLWluaGVyaXQgcHlwaQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z21lbnRzXzIuNS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnbWVudHNfMi41LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc0Yjk1NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z21lbnRzXzIuNS4yLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiUHlnbWVudHMgaXMgYSBzeW50YXggaGlnaGxpZ2h0aW5nIHBhY2thZ2Ugd3JpdHRlbiBpbiBQeXRob24uIgorREVTQ1JJUFRJT04gPSAiUHlnbWVudHMgaXMgYSBzeW50YXggaGlnaGxpZ2h0aW5nIHBhY2thZ2Ugd3JpdHRlbiBpbiBQeXRob24uIgorSE9NRVBBR0UgPSAiaHR0cDovL3B5Z21lbnRzLm9yZy8iCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWUxZDdiN2JmZmJmZWFhMTQwODNmZDJiZDMyMzZhZWE4IgorCitpbmhlcml0IHNldHVwdG9vbHMzCitTUkNfVVJJW21kNXN1bV0gPSAiNDY1YTM1NTU5ODYzMDg5ZDk1OWQ3ODNhNjlmNzliOWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOThjOGFhNWE5Zjc3OGZjZDEwMjZhMTczNjFkZGFmNzMzMGQxYjdjNjJhZTk3YzNiYjBhZTczZTBiOWI2YjBmZSIKKworREVQRU5EUyArPSAiXAorICAgICAgICAgICAgJHtQWVRIT05fUE59IFwKKyAgICAgICAgICAgICIKKworUFlQSV9QQUNLQUdFID0gIlB5Z21lbnRzIgorCitpbmhlcml0IHB5cGkKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXBhcnNpbmdfMi40LjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXBhcnNpbmdfMi40LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBjM2QwYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cGFyc2luZ18yLjQuNy5iYgpAQCAtMCwwICsxLDMgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXB5cGFyc2luZy5pbmMKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NvbnMtbmF0aXZlXzMuMS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NvbnMtbmF0aXZlXzMuMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2Q1OTU2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjb25zLW5hdGl2ZV8zLjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSBweXRob24zLXNjb25zXyR7UFZ9LmJiCi1pbmhlcml0IG5hdGl2ZSBweXRob24zbmF0aXZlCi1ERVBFTkRTID0gInB5dGhvbjMtbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gPSAiIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3Njb25zIFNDT05TX0xJQl9ESVI9JyR7U1RBR0lOR19ESVJfSE9TVH0vJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFBZVEhPTk5PVVNFUlNJVEU9JzEnCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY29ucy1uYXRpdmVfMy4xLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY29ucy1uYXRpdmVfMy4xLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWUxMjczMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjb25zLW5hdGl2ZV8zLjEuMi5iYgpAQCAtMCwwICsxLDcgQEAKK3JlcXVpcmUgcHl0aG9uMy1zY29uc18ke1BWfS5iYgoraW5oZXJpdCBuYXRpdmUgcHl0aG9uM25hdGl2ZQorREVQRU5EUyA9ICJweXRob24zLW5hdGl2ZSBweXRob24zLXNldHVwdG9vbHMtbmF0aXZlIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3Njb25zIFNDT05TX0xJQl9ESVI9JyR7U1RBR0lOR19ESVJfSE9TVH0vJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFBZVEhPTk5PVVNFUlNJVEU9JzEnCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY29uc18zLjEuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjb25zXzMuMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzdhYWVhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjb25zXzMuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotU1VNTUFSWSA9ICJTb2Z0d2FyZSBDb25zdHJ1Y3Rpb24gdG9vbCAobWFrZS9hdXRvdG9vbHMgcmVwbGFjZW1lbnQpIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zN2JiNTNhMDhlNmJlYWVhMGM5MGU3ODIxZDczMTI4NCIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vc2NvbnMvc2NvbnMtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjM1YjJhMzk5MzMxM2JiZWRkMjIxZDRkNTc1OGZkMmZkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRjZWE0MTdmZGQ3NDk5YTM2ZjQwNzkyM2QwM2I0YjcwMDBiMGY5ZThmZDdiMzFiMzE2YjljZTdlYmE5MTQzYTUiCi0KLVMgPSAiJHtXT1JLRElSfS9zY29ucy0ke1BWfSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zY29ucy5vcmcvcGFnZXMvZG93bmxvYWQuaHRtbCIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgotCi1pbmhlcml0IHNldHVwdG9vbHMzCi0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgIjFzLCMhLipweXRob24uKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsIiAke1N9L3NjcmlwdC8qCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgcHl0aG9uMy1jb3JlIFwKLSAgcHl0aG9uMy1mY250bCBcCi0gIHB5dGhvbjMtaW8gXAotICBweXRob24zLWpzb24gXAotICBweXRob24zLXNoZWxsIFwKLSAgcHl0aG9uMy1waWNrbGUgXAotICBweXRob24zLXBwcmludCBcCi0gICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjb25zXzMuMS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NvbnNfMy4xLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UxMTdhOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjb25zXzMuMS4yLmJiCkBAIC0wLDAgKzEsMzMgQEAKK1NVTU1BUlkgPSAiU29mdHdhcmUgQ29uc3RydWN0aW9uIHRvb2wgKG1ha2UvYXV0b3Rvb2xzIHJlcGxhY2VtZW50KSIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9L0xJQ0VOU0UtcHl0aG9uMy1zY29ucy0ke1BWfTttZDU9ZTE0ZTFiMzM0MjhkZjI0YTQwYTc4MmFlMTQyNzg1ZDAiCisKKyMgcHlwaSBwYWNrYWdlIGRvZXMgbm90IGhhdmUgYSB2YWxpZCBsaWNlbnNlIGZpbGUKK1NSQ19VUkkgKz0gImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9TQ29ucy9zY29ucy8ke1BWfS9MSUNFTlNFO2Rvd25sb2FkZmlsZW5hbWU9TElDRU5TRS1weXRob24zLXNjb25zLSR7UFZ9O25hbWU9bGljZW5zZSIKKworU1JDX1VSSVttZDVzdW1dID0gImY5YzRhZDA2ZGNmMTQyN2JlOTU0NzJlYWYzODBjODFhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhhYWE0ODNjMzAzZWZlYjY3OGU2ZjdjNzc2Yzg0NDRhNDgyZjhkZGMzYWQ4OTFmOGI2Y2RkMzUyNjRkYTlhMWYiCitTUkNfVVJJW2xpY2Vuc2UubWQ1c3VtXSA9ICJlMTRlMWIzMzQyOGRmMjRhNDBhNzgyYWUxNDI3ODVkMCIKK1NSQ19VUklbbGljZW5zZS5zaGEyNTZzdW1dID0gIjcyZWQ4ODkxNjVmYjI4Mzc4Y2FkYWMxNDU1MmJlNGE5NTlmMWViYWI2YjE0OGFiYjVkZDJiNDk3MTJjM2M2ZjYiCisKK1MgPSAiJHtXT1JLRElSfS9zY29ucy0ke1BWfSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zY29ucy5vcmcvcGFnZXMvZG93bmxvYWQuaHRtbCIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworZG9faW5zdGFsbF9wcmVwZW5kKCkgeworICAgIHNlZCAtaSAtZSAiMXMsIyEuKnB5dGhvbi4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywiICR7U30vc2NyaXB0LyoKK30KKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gIlwKKyAgcHl0aG9uMy1jb3JlIFwKKyAgcHl0aG9uMy1mY250bCBcCisgIHB5dGhvbjMtaW8gXAorICBweXRob24zLWpzb24gXAorICBweXRob24zLXNoZWxsIFwKKyAgcHl0aG9uMy1waWNrbGUgXAorICBweXRob24zLXBwcmludCBcCisgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHMvMDAwMS1jaGFuZ2Utc2hlYmFuZy10by1weXRob24zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29scy8wMDAxLWNoYW5nZS1zaGViYW5nLXRvLXB5dGhvbjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNhZjhkYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHMvMDAwMS1jaGFuZ2Utc2hlYmFuZy10by1weXRob24zLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gYzM5ZDA4OTY5MzBlMjVjMjI0Y2M4OTc2NjBmYzg1MTFjY2FlMzBjOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDIzIEFwciAyMDIwIDEwOjAxOjEyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGNoYW5nZSBzaGViYW5nIHRvIHB5dGhvbjMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBwa2dfcmVzb3VyY2VzL192ZW5kb3IvYXBwZGlycy5weSAgIHwgMiArLQorIHNldHVwdG9vbHMvY29tbWFuZC9lYXN5X2luc3RhbGwucHkgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wa2dfcmVzb3VyY2VzL192ZW5kb3IvYXBwZGlycy5weSBiL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9hcHBkaXJzLnB5CitpbmRleCBhZTY3MDAxLi45MzNlMzk4IDEwMDY0NAorLS0tIGEvcGtnX3Jlc291cmNlcy9fdmVuZG9yL2FwcGRpcnMucHkKKysrKyBiL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9hcHBkaXJzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyAjIENvcHlyaWdodCAoYykgMjAwNS0yMDEwIEFjdGl2ZVN0YXRlIFNvZnR3YXJlIEluYy4KKyAjIENvcHlyaWdodCAoYykgMjAxMyBFZGR5IFBldHJpyJlvcgorZGlmZiAtLWdpdCBhL3NldHVwdG9vbHMvY29tbWFuZC9lYXN5X2luc3RhbGwucHkgYi9zZXR1cHRvb2xzL2NvbW1hbmQvZWFzeV9pbnN0YWxsLnB5CitpbmRleCBhYmNhMWFlLi42YmNkYzk4IDEwMDY0NAorLS0tIGEvc2V0dXB0b29scy9jb21tYW5kL2Vhc3lfaW5zdGFsbC5weQorKysrIGIvc2V0dXB0b29scy9jb21tYW5kL2Vhc3lfaW5zdGFsbC5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIEVhc3kgSW5zdGFsbAorIC0tLS0tLS0tLS0tLQorLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc180MS40LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzQ1LjIuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc180MS40LjAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfNDUuMi4wLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaXhfMS4xMy4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2l4XzEuMTMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc5NTMxMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaXhfMS4xMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1zaXguaW5jCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaXhfMS4xNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2l4XzEuMTQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTFjMzY2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2l4XzEuMTQuMC5iYgpAQCAtMCwwICsxLDUgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXNpeC5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gIjIxNjc0NTg4YTU3ZTY0OWQxYTZkOTc3ZWMzMTIyMTQwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzNmJkYmRjZTQ2ZTZlNmEzZDYxYTMzN2MwZjhiNzYzY2ExZTg3MTdjMDNiMzY5ZTg3YTdlYzdjZTEzMTljMGEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10ZXN0dG9vbHMvbm9fdHJhY2ViYWNrMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRlc3R0b29scy9ub190cmFjZWJhY2syLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5NDUxMDMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10ZXN0dG9vbHMvbm9fdHJhY2ViYWNrMi5wYXRjaApAQCAtMCwwICsxLDIzIEBACit0cmFjZWJhY2syIGFkZHMgdHJhY2ViYWNrIGZvciBweXRob24yLiBSYXRoZXIgdGhhbiBkZXBlbmQgb24gdHJhY2ViYWNrMiwgd2UncmUKK3B5dGhvbjMgb25seSBzbyBqdXN0IHVzZSB0cmFjZWJhY2suCitUaGlzIGNhdXNlZCBicmVha2FnZSBpbiBvZS1zZWxmdGVzdCAtaiB3aGljaCB1c2VzIHRlc3R0b29scyBvbiB0aGUgYXV0b2J1aWxkZXIKK3VzaW5nIGJ1aWxkdG9vbHMtdGFyYmFsbC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPdXIgcmVjaXBlIGlzIHB5dGhvbjMgc3BlY2lmaWNdCisoT25jZSBweTIgaXMgRU9MIHVwc3RyZWFtIHByb2JhYmx5IGNvdWxkL3Nob3VsZCB0YWtlIHRoaXMpCitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KKworSW5kZXg6IHRlc3R0b29scy0yLjMuMC90ZXN0dG9vbHMvY29udGVudC5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHRlc3R0b29scy0yLjMuMC5vcmlnL3Rlc3R0b29scy9jb250ZW50LnB5CisrKysgdGVzdHRvb2xzLTIuMy4wL3Rlc3R0b29scy9jb250ZW50LnB5CitAQCAtMTksOCArMTksNyBAQCBpbXBvcnQgb3MKKyBpbXBvcnQgc3lzCisgCisgZnJvbSBleHRyYXMgaW1wb3J0IHRyeV9pbXBvcnQKKy0jIFRvIGxldCBzZXR1cC5weSB3b3JrLCBtYWtlIHRoaXMgYSBjb25kaXRpb25hbCBpbXBvcnQuCistdHJhY2ViYWNrID0gdHJ5X2ltcG9ydCgndHJhY2ViYWNrMicpCisraW1wb3J0IHRyYWNlYmFjaworIAorIGZyb20gdGVzdHRvb2xzLmNvbXBhdCBpbXBvcnQgKAorICAgICBfYiwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRlc3R0b29sc18yLjMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRlc3R0b29sc18yLjMuMC5iYgppbmRleCA4OTZlY2VlLi5hMjU0YjkwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10ZXN0dG9vbHNfMi4zLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdGVzdHRvb2xzXzIuMy4wLmJiCkBAIC0xLDIgKzEsNCBAQAogaW5oZXJpdCBzZXR1cHRvb2xzMwogcmVxdWlyZSBweXRob24tdGVzdHRvb2xzLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vbm9fdHJhY2ViYWNrMi5wYXRjaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtRG8tbm90LWFkZC11c3ItbGliLXRlcm1jYXAtdG8tbGlua2VyLWZsYWdzLXRvLWF2b2lkLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtRG8tbm90LWFkZC11c3ItbGliLXRlcm1jYXAtdG8tbGlua2VyLWZsYWdzLXRvLWF2b2lkLS5wYXRjaAppbmRleCAwOWYyNzliLi41OTU5MjgyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvLW5vdC1hZGQtdXNyLWxpYi10ZXJtY2FwLXRvLWxpbmtlci1mbGFncy10by1hdm9pZC0ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1Eby1ub3QtYWRkLXVzci1saWItdGVybWNhcC10by1saW5rZXItZmxhZ3MtdG8tYXZvaWQtLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyMzI5NGM2YmE2ODk2MTE1ODI4MjkzZmRiN2U2N2I0N2IzOGJhNjc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwMzljNTNkZDViYWRkZWMzMzU5YTA1YmUwYmZmNDZhM2IzMmJiYjg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDI1IEphbiAyMDE5IDE5OjA0OjEzICswMTAwCiBTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBhZGQgL3Vzci9saWIvdGVybWNhcCB0byBsaW5rZXIgZmxhZ3MgdG8gYXZvaWQgaG9zdApAQCAtMTIsMTQgKzEyLDE0IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKLWluZGV4IGI0MzU3ZTMuLmZiZWMwMGQgMTAwNjQ0CitpbmRleCAyMGQ3ZjM1Li5hYjE4ZmYwIDEwMDY0NAogLS0tIGEvc2V0dXAucHkKICsrKyBiL3NldHVwLnB5Ci1AQCAtODU2LDcgKzg1Niw2IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKK0BAIC05NTcsNyArOTU3LDYgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlcm1jYXAnKToKICAgICAgICAgICAgICAgICAgcmVhZGxpbmVfbGlicy5hcHBlbmQoJ3Rlcm1jYXAnKQotICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3JlYWRsaW5lJywgWydyZWFkbGluZS5jJ10sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5X2RpcnM9WycvdXNyL2xpYi90ZXJtY2FwJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9saW5rX2FyZ3M9cmVhZGxpbmVfZXh0cmFfbGlua19hcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPXJlYWRsaW5lX2xpYnMpICkKKyAgICAgICAgICAgICBzZWxmLmFkZChFeHRlbnNpb24oJ3JlYWRsaW5lJywgWydyZWFkbGluZS5jJ10sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnlfZGlycz1bJy91c3IvbGliL3Rlcm1jYXAnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfbGlua19hcmdzPXJlYWRsaW5lX2V4dHJhX2xpbmtfYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPXJlYWRsaW5lX2xpYnMpKQogICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1hcy1sb2NhdGlvbi1mb3Itc2l0ZS1wYWNrYWdlcy1hbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1hcy1sb2NhdGlvbi1mb3Itc2l0ZS1wYWNrYWdlcy1hbi5wYXRjaAppbmRleCBlYTc1MjYyLi4xMTJjOTc5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItYXMtbG9jYXRpb24tZm9yLXNpdGUtcGFja2FnZXMtYW4ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLWFzLWxvY2F0aW9uLWZvci1zaXRlLXBhY2thZ2VzLWFuLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAwZmJkYWQxZWFmNTQxYThlOTJiZTgxZjM5NTE0Y2QyNDliM2IwODAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhMDc4YjZmZjE0OTJlODQ4YWQxMDU1NzY0ZmI5YTQxNGFiYWYzZTEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBUdWUsIDUgRmViIDIwMTkgMTU6NTI6MDIgKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGhhcmRjb2RlICJsaWIiIGFzIGxvY2F0aW9uIGZvciBtb2R1bGVzLCBzaXRlLXBhY2thZ2VzCkBAIC0xMSwxMyArMTEsMTMgQEAKICBJbmNsdWRlL3B5dGhvbnJ1bi5oICB8ICAyICsrCiAgTGliL3NpdGUucHkgICAgICAgICAgfCAgNCArKy0tCiAgTWFrZWZpbGUucHJlLmluICAgICAgfCAgNSArKystLQotIE1vZHVsZXMvZ2V0cGF0aC5jICAgIHwgMTggKysrKysrKysrKysrLS0tLS0tCisgTW9kdWxlcy9nZXRwYXRoLmMgICAgfCAyMiArKysrKysrKysrKysrKy0tLS0tLS0tCiAgUHl0aG9uL2dldHBsYXRmb3JtLmMgfCAxMCArKysrKysrKysrCiAgUHl0aG9uL3N5c21vZHVsZS5jICAgfCAgMiArKwotIDYgZmlsZXMgY2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCisgNiBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aG9ucnVuLmggYi9JbmNsdWRlL3B5dGhvbnJ1bi5oCi1pbmRleCA2ZjBjNmZjLi4wYTE3ZWRkIDEwMDY0NAoraW5kZXggNDYwOTFlMC4uNjFiMmUxNSAxMDA2NDQKIC0tLSBhL0luY2x1ZGUvcHl0aG9ucnVuLmgKICsrKyBiL0luY2x1ZGUvcHl0aG9ucnVuLmgKIEBAIC03LDYgKzcsOCBAQApAQCAtMjgsMTIgKzI4LDEyIEBACiArCiAgI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogIFB5QVBJX0ZVTkMoaW50KSBQeVJ1bl9TaW1wbGVTdHJpbmdGbGFncyhjb25zdCBjaGFyICosIFB5Q29tcGlsZXJGbGFncyAqKTsKLSBQeUFQSV9GVU5DKGludCkgUHlSdW5fQW55RmlsZUZsYWdzKEZJTEUgKiwgY29uc3QgY2hhciAqLCBQeUNvbXBpbGVyRmxhZ3MgKik7CisgUHlBUElfRlVOQyhpbnQpIFB5UnVuX0FueUZpbGVFeEZsYWdzKAogZGlmZiAtLWdpdCBhL0xpYi9zaXRlLnB5IGIvTGliL3NpdGUucHkKLWluZGV4IGZmZDEzMmIuLmI1NWY2ZDggMTAwNjQ0CitpbmRleCBhMDY1YWIwLi4xZDcyMGVmIDEwMDY0NAogLS0tIGEvTGliL3NpdGUucHkKICsrKyBiL0xpYi9zaXRlLnB5Ci1AQCAtMzM0LDEyICszMzQsMTIgQEAgZGVmIGdldHNpdGVwYWNrYWdlcyhwcmVmaXhlcz1Ob25lKToKK0BAIC0zMzUsMTIgKzMzNSwxMiBAQCBkZWYgZ2V0c2l0ZXBhY2thZ2VzKHByZWZpeGVzPU5vbmUpOgogICAgICAgICAgc2Vlbi5hZGQocHJlZml4KQogIAogICAgICAgICAgaWYgb3Muc2VwID09ICcvJzoKQEAgLTQ5LDEwICs0OSwxMCBAQAogIAogIGRlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMsIHByZWZpeGVzPU5vbmUpOgogZGlmZiAtLWdpdCBhL01ha2VmaWxlLnByZS5pbiBiL01ha2VmaWxlLnByZS5pbgotaW5kZXggNmU4MWIyZi4uNjcxYTIwZSAxMDA2NDQKK2luZGV4IDY1NjY1ZGYuLmJlNDkxNDAgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5wcmUuaW4KICsrKyBiL01ha2VmaWxlLnByZS5pbgotQEAgLTE0Miw3ICsxNDIsNyBAQCBMSUJESVI9CQlAbGliZGlyQAorQEAgLTE0Myw3ICsxNDMsNyBAQCBMSUJESVI9CQlAbGliZGlyQAogIE1BTkRJUj0JCUBtYW5kaXJACiAgSU5DTFVERURJUj0JQGluY2x1ZGVkaXJACiAgQ09ORklOQ0xVREVESVI9CSQoZXhlY19wcmVmaXgpL2luY2x1ZGUKQEAgLTYxLDcgKzYxLDcgQEAKICBBQklGTEFHUz0JQEFCSUZMQUdTQAogIAogICMgRGV0YWlsZWQgZGVzdGluYXRpb24gZGlyZWN0b3JpZXMKLUBAIC03NjgsNiArNzY4LDcgQEAgTW9kdWxlcy9nZXRwYXRoLm86ICQoc3JjZGlyKS9Nb2R1bGVzL2dldHBhdGguYyBNYWtlZmlsZQorQEAgLTc1Myw2ICs3NTMsNyBAQCBNb2R1bGVzL2dldHBhdGgubzogJChzcmNkaXIpL01vZHVsZXMvZ2V0cGF0aC5jIE1ha2VmaWxlCiAgCQktREVYRUNfUFJFRklYPSciJChleGVjX3ByZWZpeCkiJyBcCiAgCQktRFZFUlNJT049JyIkKFZFUlNJT04pIicgXAogIAkJLURWUEFUSD0nIiQoVlBBVEgpIicgXApAQCAtNjksNyArNjksNyBAQAogIAkJLW8gJEAgJChzcmNkaXIpL01vZHVsZXMvZ2V0cGF0aC5jCiAgCiAgUHJvZ3JhbXMvcHl0aG9uLm86ICQoc3JjZGlyKS9Qcm9ncmFtcy9weXRob24uYwotQEAgLTg1Niw3ICs4NTcsNyBAQCByZWdlbi1vcGNvZGU6CitAQCAtODY4LDcgKzg2OSw3IEBAIHJlZ2VuLXN5bWJvbDogJChzcmNkaXIpL0luY2x1ZGUvZ3JhbWluaXQuaAogIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdF91bnBhcnNlLm8gUHl0aG9uL2FzdC5vIFB5dGhvbi9mdXR1cmUubyBQYXJzZXIvcGFyc2V0b2subzogJChzcmNkaXIpL0luY2x1ZGUvZ3JhbWluaXQuaCAkKHNyY2RpcikvSW5jbHVkZS9QeXRob24tYXN0LmgKICAKICBQeXRob24vZ2V0cGxhdGZvcm0ubzogJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCkBAIC03OSw3MiArNzksOTAgQEAKICBQeXRob24vaW1wb3J0ZGwubzogJChzcmNkaXIpL1B5dGhvbi9pbXBvcnRkbC5jCiAgCQkkKENDKSAtYyAkKFBZX0NPUkVfQ0ZMQUdTKSAtSSQoRExJTkNMRElSKSAtbyAkQCAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKIGRpZmYgLS1naXQgYS9Nb2R1bGVzL2dldHBhdGguYyBiL01vZHVsZXMvZ2V0cGF0aC5jCi1pbmRleCBlNmEzZThlLi4wYzYyYWY2IDEwMDY0NAoraW5kZXggYjcyN2Y2Ni4uYzAwM2U0NiAxMDA2NDQKIC0tLSBhL01vZHVsZXMvZ2V0cGF0aC5jCiArKysgYi9Nb2R1bGVzL2dldHBhdGguYwotQEAgLTEyMyw2ICsxMjMsNyBAQCB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgIHdjaGFyX3QgKmV4ZWNfcHJlZml4OyAgICAgICAgICAgICAgLyogRVhFQ19QUkVGSVggZGVmaW5lICovCitAQCAtMTI4LDYgKzEyOCw3IEBAIHR5cGVkZWYgc3RydWN0IHsKKyAgICAgd2NoYXJfdCAqZXhlY19wcmVmaXg7ICAgICAgICAgICAgICAvKiBFWEVDX1BSRUZJWCBtYWNybyAqLwogIAogICAgICB3Y2hhcl90ICpsaWJfcHl0aG9uOyAgICAgICAgICAgICAgIC8qICJsaWIvcHl0aG9uWC5ZIiAqLwogKyAgICB3Y2hhcl90ICptdWx0aWxpYl9weXRob247ICAgICAgICAgICAgICAgLyogImxpYltzdWZmaXhdL3B5dGhvblguWSIgKi8KLSAgICAgd2NoYXJfdCBhcmd2MF9wYXRoW01BWFBBVEhMRU4rMV07Ci0gICAgIHdjaGFyX3QgemlwX3BhdGhbTUFYUEFUSExFTisxXTsgICAgLyogIi4uLi9saWIvcHl0aG9uWFkuemlwIiAqLwogIAotQEAgLTMxNCw3ICszMTUsNyBAQCBzZWFyY2hfZm9yX3ByZWZpeChjb25zdCBfUHlDb3JlQ29uZmlnICpjb3JlX2NvbmZpZywKKyAgICAgaW50IHByZWZpeF9mb3VuZDsgICAgICAgICAvKiBmb3VuZCBwbGF0Zm9ybSBpbmRlcGVuZGVudCBsaWJyYXJpZXM/ICovCisgICAgIGludCBleGVjX3ByZWZpeF9mb3VuZDsgICAgLyogZm91bmQgdGhlIHBsYXRmb3JtIGRlcGVuZGVudCBsaWJyYXJpZXM/ICovCitAQCAtMzg2LDcgKzM4Nyw3IEBAIHNlYXJjaF9mb3JfcHJlZml4KFB5Q2FsY3VsYXRlUGF0aCAqY2FsY3VsYXRlLCBfUHlQYXRoQ29uZmlnICpwYXRoY29uZmlnLAogICAgICAgICAgaWYgKGRlbGltKSB7CiAgICAgICAgICAgICAgKmRlbGltID0gTCdcMCc7CiAgICAgICAgICB9Ci0tICAgICAgICBqb2lucGF0aChwcmVmaXgsIGNhbGN1bGF0ZS0+bGliX3B5dGhvbik7Ci0rICAgICAgICBqb2lucGF0aChwcmVmaXgsIGNhbGN1bGF0ZS0+bXVsdGlsaWJfcHl0aG9uKTsKLSAgICAgICAgIGpvaW5wYXRoKHByZWZpeCwgTEFORE1BUkspOwotICAgICAgICAgcmV0dXJuIDE7Ci0gICAgIH0KLUBAIC0zNDMsNyArMzQ0LDcgQEAgc2VhcmNoX2Zvcl9wcmVmaXgoY29uc3QgX1B5Q29yZUNvbmZpZyAqY29yZV9jb25maWcsCi0gICAgIGNvcHlfYWJzb2x1dGUocHJlZml4LCBjYWxjdWxhdGUtPmFyZ3YwX3BhdGgsIE1BWFBBVEhMRU4rMSk7Ci0gICAgIGRvIHsKLSAgICAgICAgIG4gPSB3Y3NsZW4ocHJlZml4KTsKLS0gICAgICAgIGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uKTsKLSsgICAgICAgIGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5tdWx0aWxpYl9weXRob24pOwotICAgICAgICAgam9pbnBhdGgocHJlZml4LCBMQU5ETUFSSyk7Ci0gICAgICAgICBpZiAoaXNtb2R1bGUocHJlZml4KSkgewotICAgICAgICAgICAgIHJldHVybiAxOwotQEAgLTM1NSw3ICszNTYsNyBAQCBzZWFyY2hfZm9yX3ByZWZpeChjb25zdCBfUHlDb3JlQ29uZmlnICpjb3JlX2NvbmZpZywKLSAgICAgLyogTG9vayBhdCBjb25maWd1cmUncyBQUkVGSVggKi8KLSAgICAgd2NzbmNweShwcmVmaXgsIGNhbGN1bGF0ZS0+cHJlZml4LCBNQVhQQVRITEVOKTsKLSAgICAgcHJlZml4W01BWFBBVEhMRU5dID0gTCdcMCc7Ci0tICAgIGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uKTsKLSsgICAgam9pbnBhdGgocHJlZml4LCBjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbik7Ci0gICAgIGpvaW5wYXRoKHByZWZpeCwgTEFORE1BUkspOwotICAgICBpZiAoaXNtb2R1bGUocHJlZml4KSkgewotICAgICAgICAgcmV0dXJuIDE7Ci1AQCAtNDI3LDcgKzQyOCw3IEBAIHNlYXJjaF9mb3JfZXhlY19wcmVmaXgoY29uc3QgX1B5Q29yZUNvbmZpZyAqY29yZV9jb25maWcsCi0gICAgICAgICAgICAgd2NzbmNweShleGVjX3ByZWZpeCwgY29yZV9jb25maWctPmhvbWUsIE1BWFBBVEhMRU4pOworLSAgICAgICAgc3RhdHVzID0gam9pbnBhdGgocHJlZml4LCBjYWxjdWxhdGUtPmxpYl9weXRob24sIHByZWZpeF9sZW4pOworKyAgICAgICAgc3RhdHVzID0gam9pbnBhdGgocHJlZml4LCBjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbiwgcHJlZml4X2xlbik7CisgICAgICAgICBpZiAoX1B5U3RhdHVzX0VYQ0VQVElPTihzdGF0dXMpKSB7CisgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKICAgICAgICAgIH0KLSAgICAgICAgIGV4ZWNfcHJlZml4W01BWFBBVEhMRU5dID0gTCdcMCc7Ci0tICAgICAgICBqb2lucGF0aChleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uKTsKLSsgICAgICAgIGpvaW5wYXRoKGV4ZWNfcHJlZml4LCBjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbik7Ci0gICAgICAgICBqb2lucGF0aChleGVjX3ByZWZpeCwgTCJsaWItZHlubG9hZCIpOwotICAgICAgICAgcmV0dXJuIDE7Ci0gICAgIH0KLUBAIC00NjQsNyArNDY1LDcgQEAgc2VhcmNoX2Zvcl9leGVjX3ByZWZpeChjb25zdCBfUHlDb3JlQ29uZmlnICpjb3JlX2NvbmZpZywKLSAgICAgY29weV9hYnNvbHV0ZShleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5hcmd2MF9wYXRoLCBNQVhQQVRITEVOKzEpOworQEAgLTQ0NCw3ICs0NDUsNyBAQCBzZWFyY2hfZm9yX3ByZWZpeChQeUNhbGN1bGF0ZVBhdGggKmNhbGN1bGF0ZSwgX1B5UGF0aENvbmZpZyAqcGF0aGNvbmZpZywKICAgICAgZG8gewotICAgICAgICAgbiA9IHdjc2xlbihleGVjX3ByZWZpeCk7Ci0tICAgICAgICBqb2lucGF0aChleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uKTsKLSsgICAgICAgIGpvaW5wYXRoKGV4ZWNfcHJlZml4LCBjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbik7Ci0gICAgICAgICBqb2lucGF0aChleGVjX3ByZWZpeCwgTCJsaWItZHlubG9hZCIpOwotICAgICAgICAgaWYgKGlzZGlyKGV4ZWNfcHJlZml4KSkgewotICAgICAgICAgICAgIHJldHVybiAxOwotQEAgLTQ3Niw3ICs0NzcsNyBAQCBzZWFyY2hfZm9yX2V4ZWNfcHJlZml4KGNvbnN0IF9QeUNvcmVDb25maWcgKmNvcmVfY29uZmlnLAotICAgICAvKiBMb29rIGF0IGNvbmZpZ3VyZSdzIEVYRUNfUFJFRklYICovCi0gICAgIHdjc25jcHkoZXhlY19wcmVmaXgsIGNhbGN1bGF0ZS0+ZXhlY19wcmVmaXgsIE1BWFBBVEhMRU4pOwotICAgICBleGVjX3ByZWZpeFtNQVhQQVRITEVOXSA9IEwnXDAnOwotLSAgICBqb2lucGF0aChleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uKTsKLSsgICAgam9pbnBhdGgoZXhlY19wcmVmaXgsIGNhbGN1bGF0ZS0+bXVsdGlsaWJfcHl0aG9uKTsKLSAgICAgam9pbnBhdGgoZXhlY19wcmVmaXgsIEwibGliLWR5bmxvYWQiKTsKLSAgICAgaWYgKGlzZGlyKGV4ZWNfcHJlZml4KSkgewotICAgICAgICAgcmV0dXJuIDE7Ci1AQCAtODcxLDYgKzg3MiwxMCBAQCBjYWxjdWxhdGVfaW5pdChQeUNhbGN1bGF0ZVBhdGggKmNhbGN1bGF0ZSwKKyAgICAgICAgIC8qIFBhdGg6IDxhcmd2MF9wYXRoIG9yIHN1YnN0cmluZz4gLyA8bGliX3B5dGhvbj4gLyBMQU5ETUFSSyAqLworICAgICAgICAgc2l6ZV90IG4gPSB3Y3NsZW4ocHJlZml4KTsKKy0gICAgICAgIHN0YXR1cyA9IGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uLCBwcmVmaXhfbGVuKTsKKysgICAgICAgIHN0YXR1cyA9IGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5tdWx0aWxpYl9weXRob24sIHByZWZpeF9sZW4pOworICAgICAgICAgaWYgKF9QeVN0YXR1c19FWENFUFRJT04oc3RhdHVzKSkgeworICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgICAgICB9CitAQCAtNDY3LDcgKzQ2OCw3IEBAIHNlYXJjaF9mb3JfcHJlZml4KFB5Q2FsY3VsYXRlUGF0aCAqY2FsY3VsYXRlLCBfUHlQYXRoQ29uZmlnICpwYXRoY29uZmlnLAorICAgICBpZiAoc2FmZV93Y3NjcHkocHJlZml4LCBjYWxjdWxhdGUtPnByZWZpeCwgcHJlZml4X2xlbikgPCAwKSB7CisgICAgICAgICByZXR1cm4gUEFUSExFTl9FUlIoKTsKKyAgICAgfQorLSAgICBzdGF0dXMgPSBqb2lucGF0aChwcmVmaXgsIGNhbGN1bGF0ZS0+bGliX3B5dGhvbiwgcHJlZml4X2xlbik7CisrICAgIHN0YXR1cyA9IGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5tdWx0aWxpYl9weXRob24sIHByZWZpeF9sZW4pOworICAgICBpZiAoX1B5U3RhdHVzX0VYQ0VQVElPTihzdGF0dXMpKSB7CisgICAgICAgICByZXR1cm4gc3RhdHVzOworICAgICB9CitAQCAtNTEwLDcgKzUxMSw3IEBAIGNhbGN1bGF0ZV9wcmVmaXgoUHlDYWxjdWxhdGVQYXRoICpjYWxjdWxhdGUsIF9QeVBhdGhDb25maWcgKnBhdGhjb25maWcsCisgICAgICAgICBpZiAoc2FmZV93Y3NjcHkocHJlZml4LCBjYWxjdWxhdGUtPnByZWZpeCwgcHJlZml4X2xlbikgPCAwKSB7CisgICAgICAgICAgICAgcmV0dXJuIFBBVEhMRU5fRVJSKCk7CisgICAgICAgICB9CistICAgICAgICBzdGF0dXMgPSBqb2lucGF0aChwcmVmaXgsIGNhbGN1bGF0ZS0+bGliX3B5dGhvbiwgcHJlZml4X2xlbik7CisrICAgICAgICBzdGF0dXMgPSBqb2lucGF0aChwcmVmaXgsIGNhbGN1bGF0ZS0+bXVsdGlsaWJfcHl0aG9uLCBwcmVmaXhfbGVuKTsKKyAgICAgICAgIGlmIChfUHlTdGF0dXNfRVhDRVBUSU9OKHN0YXR1cykpIHsKKyAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOworICAgICAgICAgfQorQEAgLTYzNSw3ICs2MzYsNyBAQCBzZWFyY2hfZm9yX2V4ZWNfcHJlZml4KFB5Q2FsY3VsYXRlUGF0aCAqY2FsY3VsYXRlLCBfUHlQYXRoQ29uZmlnICpwYXRoY29uZmlnLAorICAgICAgICAgICAgICAgICByZXR1cm4gUEFUSExFTl9FUlIoKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CistICAgICAgICBzdGF0dXMgPSBqb2lucGF0aChleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uLCBleGVjX3ByZWZpeF9sZW4pOworKyAgICAgICAgc3RhdHVzID0gam9pbnBhdGgoZXhlY19wcmVmaXgsIGNhbGN1bGF0ZS0+bXVsdGlsaWJfcHl0aG9uLCBleGVjX3ByZWZpeF9sZW4pOworICAgICAgICAgaWYgKF9QeVN0YXR1c19FWENFUFRJT04oc3RhdHVzKSkgeworICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgICAgICB9CitAQCAtNjY3LDcgKzY2OCw3IEBAIHNlYXJjaF9mb3JfZXhlY19wcmVmaXgoUHlDYWxjdWxhdGVQYXRoICpjYWxjdWxhdGUsIF9QeVBhdGhDb25maWcgKnBhdGhjb25maWcsCisgICAgIGRvIHsKKyAgICAgICAgIC8qIFBhdGg6IDxhcmd2MF9wYXRoIG9yIHN1YnN0cmluZz4gLyA8bGliX3B5dGhvbj4gLyAibGliLWR5bmxvYWQiICovCisgICAgICAgICBzaXplX3QgbiA9IHdjc2xlbihleGVjX3ByZWZpeCk7CistICAgICAgICBzdGF0dXMgPSBqb2lucGF0aChleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uLCBleGVjX3ByZWZpeF9sZW4pOworKyAgICAgICAgc3RhdHVzID0gam9pbnBhdGgoZXhlY19wcmVmaXgsIGNhbGN1bGF0ZS0+bXVsdGlsaWJfcHl0aG9uLCBleGVjX3ByZWZpeF9sZW4pOworICAgICAgICAgaWYgKF9QeVN0YXR1c19FWENFUFRJT04oc3RhdHVzKSkgeworICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgICAgICB9CitAQCAtNjg5LDcgKzY5MCw3IEBAIHNlYXJjaF9mb3JfZXhlY19wcmVmaXgoUHlDYWxjdWxhdGVQYXRoICpjYWxjdWxhdGUsIF9QeVBhdGhDb25maWcgKnBhdGhjb25maWcsCisgICAgIGlmIChzYWZlX3djc2NweShleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5leGVjX3ByZWZpeCwgZXhlY19wcmVmaXhfbGVuKSA8IDApIHsKKyAgICAgICAgIHJldHVybiBQQVRITEVOX0VSUigpOworICAgICB9CistICAgIHN0YXR1cyA9IGpvaW5wYXRoKGV4ZWNfcHJlZml4LCBjYWxjdWxhdGUtPmxpYl9weXRob24sIGV4ZWNfcHJlZml4X2xlbik7CisrICAgIHN0YXR1cyA9IGpvaW5wYXRoKGV4ZWNfcHJlZml4LCBjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbiwgZXhlY19wcmVmaXhfbGVuKTsKKyAgICAgaWYgKF9QeVN0YXR1c19FWENFUFRJT04oc3RhdHVzKSkgeworICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgfQorQEAgLTkyOCw3ICs5MjksNyBAQCBjYWxjdWxhdGVfYXJndjBfcGF0aChQeUNhbGN1bGF0ZVBhdGggKmNhbGN1bGF0ZSwgY29uc3Qgd2NoYXJfdCAqcHJvZ3JhbV9mdWxsX3BhdAorICAgICAgICAgICAgIHJldHVybiBQQVRITEVOX0VSUigpOworICAgICAgICAgfQorICAgICAgICAgcmVkdWNlKGFyZ3YwX3BhdGgpOworLSAgICAgICAgc3RhdHVzID0gam9pbnBhdGgoYXJndjBfcGF0aCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uLCBhcmd2MF9wYXRoX2xlbik7CisrICAgICAgICBzdGF0dXMgPSBqb2lucGF0aChhcmd2MF9wYXRoLCBjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbiwgYXJndjBfcGF0aF9sZW4pOworICAgICAgICAgaWYgKF9QeVN0YXR1c19FWENFUFRJT04oc3RhdHVzKSkgeworICAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUod2J1Zik7CisgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKK0BAIC0xMjAxLDYgKzEyMDIsMTAgQEAgY2FsY3VsYXRlX2luaXQoUHlDYWxjdWxhdGVQYXRoICpjYWxjdWxhdGUsIGNvbnN0IFB5Q29uZmlnICpjb25maWcpCiAgICAgIGlmICghY2FsY3VsYXRlLT5saWJfcHl0aG9uKSB7CiAgICAgICAgICByZXR1cm4gREVDT0RFX0xPQ0FMRV9FUlIoIkVYRUNfUFJFRklYIGRlZmluZSIsIGxlbik7CiAgICAgIH0KQEAgLTE1MiwxMCArMTcwLDEwIEBACiArICAgIGlmICghY2FsY3VsYXRlLT5tdWx0aWxpYl9weXRob24pIHsKICsgICAgICAgIHJldHVybiBERUNPREVfTE9DQUxFX0VSUigiRVhFQ19QUkVGSVggZGVmaW5lIiwgbGVuKTsKICsgICAgfQotICAgICByZXR1cm4gX1B5X0lOSVRfT0soKTsKLSB9CiAgCi1AQCAtODgyLDYgKzg4Nyw3IEBAIGNhbGN1bGF0ZV9mcmVlKFB5Q2FsY3VsYXRlUGF0aCAqY2FsY3VsYXRlKQorICAgICBjYWxjdWxhdGUtPndhcm5pbmdzID0gY29uZmlnLT5wYXRoY29uZmlnX3dhcm5pbmdzOworICAgICBjYWxjdWxhdGUtPnB5dGhvbnBhdGhfZW52ID0gY29uZmlnLT5weXRob25wYXRoX2VudjsKK0BAIC0xMjE2LDYgKzEyMjEsNyBAQCBjYWxjdWxhdGVfZnJlZShQeUNhbGN1bGF0ZVBhdGggKmNhbGN1bGF0ZSkKICAgICAgUHlNZW1fUmF3RnJlZShjYWxjdWxhdGUtPnByZWZpeCk7CiAgICAgIFB5TWVtX1Jhd0ZyZWUoY2FsY3VsYXRlLT5leGVjX3ByZWZpeCk7CiAgICAgIFB5TWVtX1Jhd0ZyZWUoY2FsY3VsYXRlLT5saWJfcHl0aG9uKTsKQEAgLTE4MiwxMCArMjAwLDEwIEBACiArCXJldHVybiBMSUI7CiArfQogZGlmZiAtLWdpdCBhL1B5dGhvbi9zeXNtb2R1bGUuYyBiL1B5dGhvbi9zeXNtb2R1bGUuYwotaW5kZXggZWZlNWIyOS4uZGU3N2IxNyAxMDA2NDQKK2luZGV4IDViMGZiODEuLjBkY2U3NTQgMTAwNjQ0CiAtLS0gYS9QeXRob24vc3lzbW9kdWxlLmMKICsrKyBiL1B5dGhvbi9zeXNtb2R1bGUuYwotQEAgLTIzMTksNiArMjMxOSw4IEBAIF9QeVN5c19CZWdpbkluaXQoUHlPYmplY3QgKipzeXNtb2QpCitAQCAtMjY2OCw2ICsyNjY4LDggQEAgX1B5U3lzX0luaXRDb3JlKF9QeVJ1bnRpbWVTdGF0ZSAqcnVudGltZSwgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmcoUHlfR2V0Q29weXJpZ2h0KCkpKTsKICAgICAgU0VUX1NZU19GUk9NX1NUUklORygicGxhdGZvcm0iLAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tU3RyaW5nKFB5X0dldFBsYXRmb3JtKCkpKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtRG9uLXQtc2VhcmNoLXN5c3RlbS1mb3ItaGVhZGVycy1saWJyYXJpZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvbi10LXNlYXJjaC1zeXN0ZW0tZm9yLWhlYWRlcnMtbGlicmFyaWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjZjhlMWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvbi10LXNlYXJjaC1zeXN0ZW0tZm9yLWhlYWRlcnMtbGlicmFyaWVzLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gODVlOGY4NmFkMmI3ZGVjMDg0OGNkNTViOGU4MTBhNWUyNzIyYjIwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorRGF0ZTogV2VkLCA0IE1hciAyMDIwIDAwOjA2OjQyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIERvbid0IHNlYXJjaCBzeXN0ZW0gZm9yIGhlYWRlcnMvbGlicmFyaWVzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorLS0tCisgc2V0dXAucHkgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQoraW5kZXggOWRhMWIzYS4uNTk3ODJjMCAxMDA2NDQKKy0tLSBhL3NldHVwLnB5CisrKysgYi9zZXR1cC5weQorQEAgLTY3NCw4ICs2NzQsOCBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CisgICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIklOQ0xVREVESVIiKSkKKyAKKy0gICAgICAgIHN5c3RlbV9saWJfZGlycyA9IFsnL2xpYjY0JywgJy91c3IvbGliNjQnLCAnL2xpYicsICcvdXNyL2xpYiddCistICAgICAgICBzeXN0ZW1faW5jbHVkZV9kaXJzID0gWycvdXNyL2luY2x1ZGUnXQorKyAgICAgICAgc3lzdGVtX2xpYl9kaXJzID0gW10KKysgICAgICAgIHN5c3RlbV9pbmNsdWRlX2RpcnMgPSBbXQorICAgICAgICAgIyBsaWJfZGlycyBhbmQgaW5jX2RpcnMgYXJlIHVzZWQgdG8gc2VhcmNoIGZvciBmaWxlczsKKyAgICAgICAgICMgaWYgYSBmaWxlIGlzIGZvdW5kIGluIG9uZSBvZiB0aG9zZSBkaXJlY3RvcmllcywgaXQgY2FuCisgICAgICAgICAjIGJlIGFzc3VtZWQgdGhhdCBubyBhZGRpdGlvbmFsIC1JLC1MIGRpcmVjdGl2ZXMgYXJlIG5lZWRlZC4KKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtTWFrZWZpbGUtZG8tbm90LWNvbXBpbGUtLnB5Yy1pbi1wYXJhbGxlbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtTWFrZWZpbGUtZG8tbm90LWNvbXBpbGUtLnB5Yy1pbi1wYXJhbGxlbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWJjZWFjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1NYWtlZmlsZS1kby1ub3QtY29tcGlsZS0ucHljLWluLXBhcmFsbGVsLnBhdGNoCkBAIC0wLDAgKzEsNTggQEAKK0Zyb20gYzUwMWUxMjFhODcyY2JjZWY4ZmZlNjI2YzFkZTE3M2ExMjViZTlmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxNiBKYW4gMjAyMCAxMjozNDoyMCArMDEwMAorU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogZG8gbm90IGNvbXBpbGUgLnB5YyBpbiBwYXJhbGxlbAorCitUaGlzIHdhcyBmb3VuZCB0byBicmVhayByZXByb2R1Y2liaWxpdHksIGFuZCBwcm9kdWNlIHN0cmFuZ2UgZmlsZSBvd25lcnNoaXAKK3JhY2VzLgorCitUaGUgdXBzdHJlYW0gY29tbWl0IGludHJvZHVjaW5nIHRoZSBjaGFuZ2Ugd2FzOgoraHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2NvbW1pdC8xYTJkZDgyZjU2YmQ4MTNhYWNjNTcwZTE3MmNlZmU1NWE4YTQxNTA0CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5wcmUuaW4gfCAxMiArKysrKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUucHJlLmluIGIvTWFrZWZpbGUucHJlLmluCitpbmRleCAxMjQxMTEyLi41ZGZkZjQ0IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUucHJlLmluCisrKysgYi9NYWtlZmlsZS5wcmUuaW4KK0BAIC0xNDU3LDMwICsxNDU3LDMwIEBAIGxpYmluc3RhbGw6CWJ1aWxkX2FsbCAkKHNyY2RpcikvTW9kdWxlcy94eG1vZHVsZS5jCisgCWZpCisgCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICAkKFJVTlNIQVJFRCkgXAorIAkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCistCQktajAgLWQgJChMSUJERVNUKSAtZiBcCisrCQktZCAkKExJQkRFU1QpIC1mIFwKKyAJCS14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAorIAkJJChERVNURElSKSQoTElCREVTVCkKKyAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKKyAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC1PICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorLQkJLWowIC1kICQoTElCREVTVCkgLWYgXAorKwkJLWQgJChMSUJERVNUKSAtZiBcCisgCQkteCAnYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xsaWIydG8zL3Rlc3RzL2RhdGEnIFwKKyAJCSQoREVTVERJUikkKExJQkRFU1QpCisgCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCisgCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1XaSAtT08gJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCistCQktajAgLWQgJChMSUJERVNUKSAtZiBcCisrCQktZCAkKExJQkRFU1QpIC1mIFwKKyAJCS14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAorIAkJJChERVNURElSKSQoTElCREVTVCkKKyAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKKyAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorLQkJLWowIC1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCisrCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAorIAkJLXggYmFkc3ludGF4ICQoREVTVERJUikkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMKKyAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKKyAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC1PICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorLQkJLWowIC1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCisrCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAorIAkJLXggYmFkc3ludGF4ICQoREVTVERJUikkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMKKyAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKKyAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC1PTyAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKKy0JCS1qMCAtZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAorKwkJLWQgJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzIC1mIFwKKyAJCS14IGJhZHN5bnRheCAkKERFU1RESVIpJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzCisgCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCisgCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvR3JhbW1hci50eHQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtYnBvLTM2ODUyLXByb3Blci1kZXRlY3Rpb24tb2YtbWlwcy1hcmNoaXRlY3R1cmUtZm9yLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtYnBvLTM2ODUyLXByb3Blci1kZXRlY3Rpb24tb2YtbWlwcy1hcmNoaXRlY3R1cmUtZm9yLS5wYXRjaAppbmRleCBlN2FmODg2Li5jNGZhZTA5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWJwby0zNjg1Mi1wcm9wZXItZGV0ZWN0aW9uLW9mLW1pcHMtYXJjaGl0ZWN0dXJlLWZvci0ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1icG8tMzY4NTItcHJvcGVyLWRldGVjdGlvbi1vZi1taXBzLWFyY2hpdGVjdHVyZS1mb3ItLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA3NTM1YzM5OTUxYjlkMTVkZDY0YzQ2NjkwOTJhODU4MmJhNTU1NDY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxYWQ3NzFkODY3MjhlZTJlZDMwZTIwMmU5NzY4ZDhkODI1Zjk2NDY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWF0dGhpYXMgU2Nob2VwZmVyIDxtYXR0aGlhcy5zY2hvZXBmZXJAaXRoaW54LmlvPgogRGF0ZTogRnJpLCAzMSBNYXkgMjAxOSAxNTozNDozNCArMDIwMAogU3ViamVjdDogW1BBVENIXSBicG8tMzY4NTI6IHByb3BlciBkZXRlY3Rpb24gb2YgbWlwcyBhcmNoaXRlY3R1cmUgZm9yIHNvZnQKQEAgLTEyLDE1ICsxMiwxNyBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL3B1bGwvMTMxOTZdCiBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBTY2hvZXBmZXIgPG1hdHRoaWFzLnNjaG9lcGZlckBpdGhpbnguaW8+CisKKyUlIG9yaWdpbmFsIHBhdGNoOiAwMDAxLWJwby0zNjg1Mi1wcm9wZXItZGV0ZWN0aW9uLW9mLW1pcHMtYXJjaGl0ZWN0dXJlLWZvci0ucGF0Y2gKIC0tLQotIGNvbmZpZ3VyZS5hYyB8IDE2OSArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTUyIGRlbGV0aW9ucygtKQorIGNvbmZpZ3VyZS5hYyB8IDE3NSArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMTU0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBhN2RlOTAxZTA4Li5hNzNlMmRlNTFiIDEwMDY0NAoraW5kZXggZWRlNzEwZS4uYmM4MWIwYiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNzI3LDE1OCArNzI3LDIzIEBAIGZpCitAQCAtNzEwLDE2MCArNzEwLDI3IEBAIGZpCiAgTVVMVElBUkNIPSQoJENDIC0tcHJpbnQtbXVsdGlhcmNoIDI+L2Rldi9udWxsKQogIEFDX1NVQlNUKE1VTFRJQVJDSCkKICAKQEAgLTE2Myw2ICsxNjUsOCBAQAogLSAgICAgICAgaTM4Ni1nbnUKIC0jZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKIC0gICAgICAgIGRhcndpbgorLSNlbGlmIGRlZmluZWQoX19WWFdPUktTX18pCistICAgICAgICB2eHdvcmtzCiAtI2Vsc2UKIC0jIGVycm9yIHVua25vd24gcGxhdGZvcm0gdHJpcGxldAogLSNlbmRpZgpAQCAtMTkwLDEyICsxOTQsMTYgQEAKICsgICAgIAlQTEFURk9STV9UUklQTEVUPXZ4d29ya3MKICsJOzsKICsgICAgICopCi0rCVBMQVRGT1JNX1RSSVBMRVQ9JHt0YXJnZXRfY3B1fS0ke3RhcmdldF9vc30KKysgICAgICAgIGlmIHRlc3QgIiR7dGFyZ2V0X2NwdX0iICE9ICJpNjg2IjsgdGhlbgorKwkJUExBVEZPUk1fVFJJUExFVD0ke3RhcmdldF9jcHV9LSR7dGFyZ2V0X29zfQorKwllbHNlCisrCQlQTEFURk9STV9UUklQTEVUPWkzODYtJHt0YXJnZXRfb3N9CisrCWZpCiArCTs7CiArZXNhYwkKICAKICBpZiB0ZXN0IHgkUExBVEZPUk1fVFJJUExFVCAhPSB4ICYmIHRlc3QgeCRNVUxUSUFSQ0ggIT0geDsgdGhlbgogICAgaWYgdGVzdCB4JFBMQVRGT1JNX1RSSVBMRVQgIT0geCRNVUxUSUFSQ0g7IHRoZW4KIC0tIAotMi4yMS4wCisyLjI0LjEKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1jb25maWd1cmUuYWMtZml4LUxJQlBMLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1jb25maWd1cmUuYWMtZml4LUxJQlBMLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyM2NlM2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtTElCUEwucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSBhY2NlM2Q0NDFlN2VhZGFkZDJkM2NlMzg2NTQxNTVkYzQzZjFmNjA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgNyBGZWIgMjAyMCAwOTozNjoyNSArMDgwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IGZpeCBMSUJQTAorCitVc2UgTElCRElSIHJhdGhlciB0aGFuIHByZWZpeC9saWIsIHNvIHRoYXQgaXQgd291bGQgd29yayB3aGVuIGxpYjY0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuYz4KK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBjZTA0MjU4Li45MTVmNDc1IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC00NTMyLDkgKzQ1MzIsOSBAQCBmaQorIGRubCBkZWZpbmUgTElCUEwgYWZ0ZXIgQUJJRkxBR1MgYW5kIExEVkVSU0lPTiBpcyBkZWZpbmVkLgorIEFDX1NVQlNUKFBZX0VOQUJMRV9TSEFSRUQpCisgaWYgdGVzdCB4JFBMQVRGT1JNX1RSSVBMRVQgPSB4OyB0aGVuCistICBMSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfSIKKysgIExJQlBMPSckKExJQkRJUiknIi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0iCisgZWxzZQorLSAgTElCUEw9JyQocHJlZml4KSciL2xpYi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0tJHtQTEFURk9STV9UUklQTEVUfSIKKysgIExJQlBMPSckKExJQkRJUiknIi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0tJHtQTEFURk9STV9UUklQTEVUfSIKKyBmaQorIEFDX1NVQlNUKExJQlBMKQorCistLQorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1kaXN0dXRpbHMtc3lzY29uZmlnLWFwcGVuZC1TVEFHSU5HX0xJQkRJUi1weXRob24tc3lzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1kaXN0dXRpbHMtc3lzY29uZmlnLWFwcGVuZC1TVEFHSU5HX0xJQkRJUi1weXRob24tc3lzLnBhdGNoCmluZGV4IDE3MDkwMTEuLmU3YWYzYzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtZGlzdHV0aWxzLXN5c2NvbmZpZy1hcHBlbmQtU1RBR0lOR19MSUJESVItcHl0aG9uLXN5cy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWRpc3R1dGlscy1zeXNjb25maWctYXBwZW5kLVNUQUdJTkdfTElCRElSLXB5dGhvbi1zeXMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGVmZjkwM2M2MDBmNGM0MGY1NzUzZTk1YWIxNTU3MTI2ZmM2ZTBjOWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDdhZGE5Yzc0OWY2YmViNTFjMTNhM2RlYmM4NTA3NTVlOTExNTQ4YTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMzEgSmFuIDIwMTkgMTY6NDY6MzAgKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gZGlzdHV0aWxzL3N5c2NvbmZpZzogYXBwZW5kCkBAIC0xNSwxMCArMTUsMTAgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotaW5kZXggMGEwMzRlZS4uM2RmZDBhMyAxMDA2NDQKK2luZGV4IGI1MTYyOWUuLjJkZjM0OGMgMTAwNjQ0CiAtLS0gYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQogKysrIGIvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKLUBAIC00MzksNiArNDM5LDggQEAgZGVmIF9pbml0X3Bvc2l4KCk6CitAQCAtNDM4LDYgKzQzOCw4IEBAIGRlZiBfaW5pdF9wb3NpeCgpOgogICAgICAgICAgcGxhdGZvcm09c3lzLnBsYXRmb3JtLAogICAgICAgICAgbXVsdGlhcmNoPWdldGF0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAnX211bHRpYXJjaCcsICcnKSwKICAgICAgKSkKQEAgLTI4LDcgKzI4LDcgQEAKICAgICAgYnVpbGRfdGltZV92YXJzID0gX3RlbXAuYnVpbGRfdGltZV92YXJzCiAgICAgIGdsb2JhbCBfY29uZmlnX3ZhcnMKIGRpZmYgLS1naXQgYS9MaWIvc3lzY29uZmlnLnB5IGIvTGliL3N5c2NvbmZpZy5weQotaW5kZXggODdmYTVlNi4uNzU2YTQxYyAxMDA2NDQKK2luZGV4IGIyZDc5MGIuLjQwNTI3M2MgMTAwNjQ0CiAtLS0gYS9MaWIvc3lzY29uZmlnLnB5CiArKysgYi9MaWIvc3lzY29uZmlnLnB5CiBAQCAtNDE5LDYgKzQxOSw4IEBAIGRlZiBfaW5pdF9wb3NpeCh2YXJzKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtbWFpbi5jLWlmLU9FUFlUSE9OM0hPTUUtaXMtc2V0LXVzZS1pbnN0ZWFkLW9mLVBZVEhPTi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtbWFpbi5jLWlmLU9FUFlUSE9OM0hPTUUtaXMtc2V0LXVzZS1pbnN0ZWFkLW9mLVBZVEhPTi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE0NmM3NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLW1haW4uYy1pZi1PRVBZVEhPTjNIT01FLWlzLXNldC11c2UtaW5zdGVhZC1vZi1QWVRIT04ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1Gcm9tIDVjZTNhYzU5NTMxODI4ZmY2ODI2NDZmYmJhNTliMjEyNmIyOGE4YWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKYWV3b24gTGVlIDxqYWV3b24ubGVlQHhpbGlueC5jb20+Ci1EYXRlOiBUaHUsIDI1IEFwciAyMDE5IDE1OjM0OjI2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1haW4uYzogaWYgT0VQWVRIT04zSE9NRSBpcyBzZXQgdXNlIGluc3RlYWQgb2YgUFlUSE9OSE9NRQotCi1UaGVyZSBpcyBvbmUgdmFyaWFibGUgUFlUSE9OSE9NRSB0byBkZXRlcm1pbmUgd2hlcmUgbGlicmFyaWVzIGFyZSBjb21pbmcKLWZyb20gZm9yIGJvdGggcHl0aG9uMiBhbmQgcHl0aG9uMy4gVGhpcyBiZWNvbWVzIGFuIGlzc3VlIGlmIG9ubHkgb25lIGhhcwotbGlicmFyaWVzIGluIHRoZSBzcGVjaWZpZWQgUFlUSE9OSE9NRSBwYXRoLCBidXQgdGhleSBhcmUgdXNpbmcgdGhlIHNhbWUKLVBZVEhPTkhPTUUuIENyZWF0aW5nIGFub3RoZXIgdmFyaWFibGUgT0VQWVRIT04zSE9NRSB0byBhbGxvdyBmb3IgYSB3YXkKLXRvIHNldCBhIGRpZmZlcmVudCBwYXRoIGZvciBweXRob24zCi0KLVNpZ25lZC1vZmYtYnk6IEphZXdvbiBMZWUgPGphZXdvbi5sZWVAeGlsaW54LmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpYyBjb25maWd1cmF0aW9uXQotCi0tLS0KLSBNb2R1bGVzL21haW4uYyB8IDE3ICsrKysrKysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9Nb2R1bGVzL21haW4uYyBiL01vZHVsZXMvbWFpbi5jCi1pbmRleCBhY2M1OWM2Li40MDcwODVhIDEwMDY0NAotLS0tIGEvTW9kdWxlcy9tYWluLmMKLSsrKyBiL01vZHVsZXMvbWFpbi5jCi1AQCAtMTgzNCwxMCArMTgzNCwxOSBAQCBjb25maWdfaW5pdF9ob21lKF9QeUNvcmVDb25maWcgKmNvbmZpZykKLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybiBfUHlfSU5JVF9PSygpOwotICAgICB9Ci0tCi0tICAgIGludCByZXMgPSBjb25maWdfZ2V0X2Vudl92YXJfZHVwKCZob21lLCBMIlBZVEhPTkhPTUUiLCAiUFlUSE9OSE9NRSIpOwotLSAgICBpZiAocmVzIDwgMCkgewotLSAgICAgICAgcmV0dXJuIERFQ09ERV9MT0NBTEVfRVJSKCJQWVRIT05IT01FIiwgcmVzKTsKLSsgICAgaW50IHJlczsKLSsgICAgY29uc3QgY2hhciAqb2VweXRob24zaG9tZSA9IGNvbmZpZ19nZXRfZW52X3ZhcigiT0VQWVRIT04zSE9NRSIpOwotKyAgICBpZiAob2VweXRob24zaG9tZSkgewotKyAgICAgICAgcmVzID0gY29uZmlnX2dldF9lbnZfdmFyX2R1cCgmaG9tZSwgTCJPRVBZVEhPTjNIT01FIiwgIk9FUFlUSE9OM0hPTUUiKTsKLSsgICAgICAgIGlmIChyZXMgPCAwKSB7Ci0rICAgICAgICAgICAgcmV0dXJuIERFQ09ERV9MT0NBTEVfRVJSKCJPRVBZVEhPTjNIT01FIiwgcmVzKTsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgICBlbHNlIHsKLSsgICAgICAgIHJlcyA9IGNvbmZpZ19nZXRfZW52X3Zhcl9kdXAoJmhvbWUsIEwiUFlUSE9OSE9NRSIsICJQWVRIT05IT01FIik7Ci0rICAgICAgICBpZiAocmVzIDwgMCkgewotKyAgICAgICAgICAgIHJldHVybiBERUNPREVfTE9DQUxFX0VSUigiUFlUSE9OSE9NRSIsIHJlcyk7Ci0rICAgICAgICB9Ci0gICAgIH0KLSAgICAgY29uZmlnLT5ob21lID0gaG9tZTsKLSAgICAgcmV0dXJuIF9QeV9JTklUX09LKCk7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLXB5dGhvbjMtRG8tbm90LWhhcmRjb2RlLWxpYi1mb3ItZGlzdHV0aWxzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1weXRob24zLURvLW5vdC1oYXJkY29kZS1saWItZm9yLWRpc3R1dGlscy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTAzMWI5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1weXRob24zLURvLW5vdC1oYXJkY29kZS1saWItZm9yLWRpc3R1dGlscy5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIGJiNzExYjUzZjEwZDMyYTkwYTI3Y2NmNGIwZGM1MWU0YTcwMWQ4NjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCA3IEZlYiAyMDIwIDA5OjQyOjA5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHB5dGhvbjM6IERvIG5vdCBoYXJkY29kZSAibGliIiBmb3IgZGlzdHV0aWxzCisKK0dldCB0aGUgc3lzLmxpYiBmcm9tIHB5dGhvbjMgaXRzZWxmIGFuZCBkbyBub3QgdXNlCitoYXJkY29kZWQgdmFsdWUgb2YgJ2xpYicgZm9yIGRpc3R1dGlscy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkgfCA2ICsrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CitpbmRleCBjNjI1Yzk1Li44ZTMyZjU0IDEwMDY0NAorLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKKysrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CitAQCAtMTksNiArMTksOCBAQCBmcm9tIHNpdGUgaW1wb3J0IFVTRVJfQkFTRQorIGZyb20gc2l0ZSBpbXBvcnQgVVNFUl9TSVRFCisgSEFTX1VTRVJfU0lURSA9IFRydWUKKworK2xpYm5hbWUgPSBzeXMubGliCisrCisgV0lORE9XU19TQ0hFTUUgPSB7CisgICAgICdwdXJlbGliJzogJyRiYXNlL0xpYi9zaXRlLXBhY2thZ2VzJywKKyAgICAgJ3BsYXRsaWInOiAnJGJhc2UvTGliL3NpdGUtcGFja2FnZXMnLAorQEAgLTI5LDggKzMxLDggQEAgV0lORE9XU19TQ0hFTUUgPSB7CisKKyBJTlNUQUxMX1NDSEVNRVMgPSB7CisgICAgICd1bml4X3ByZWZpeCc6IHsKKy0gICAgICAgICdwdXJlbGliJzogJyRiYXNlL2xpYi9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKKy0gICAgICAgICdwbGF0bGliJzogJyRwbGF0YmFzZS9saWIvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCisrICAgICAgICAncHVyZWxpYic6ICckYmFzZS8nICsgbGlibmFtZSArICcvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCisrICAgICAgICAncGxhdGxpYic6ICckcGxhdGJhc2UvJyArIGxpYm5hbWUgKyAnL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAorICAgICAgICAgJ2hlYWRlcnMnOiAnJGJhc2UvaW5jbHVkZS9weXRob24kcHlfdmVyc2lvbl9zaG9ydCRhYmlmbGFncy8kZGlzdF9uYW1lJywKKyAgICAgICAgICdzY3JpcHRzJzogJyRiYXNlL2JpbicsCisgICAgICAgICAnZGF0YScgICA6ICckYmFzZScsCistLQorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1weXRob24zLXVzZS1jY19iYXNlbmFtZS10by1yZXBsYWNlLUNDLWZvci1jaGVja2luZy1jLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1weXRob24zLXVzZS1jY19iYXNlbmFtZS10by1yZXBsYWNlLUNDLWZvci1jaGVja2luZy1jLnBhdGNoCmluZGV4IGEwZWE4OTcuLmZiMTBjYTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtcHl0aG9uMy11c2UtY2NfYmFzZW5hbWUtdG8tcmVwbGFjZS1DQy1mb3ItY2hlY2tpbmctYy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLXB5dGhvbjMtdXNlLWNjX2Jhc2VuYW1lLXRvLXJlcGxhY2UtQ0MtZm9yLWNoZWNraW5nLWMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDI2NDUzMTdmZWYwOWFmZTMxYjAxYmIyYzFkNGZlNWI5YWZkYmIxMWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDk5NDc4M2RhNWMyMWNhYjgxYjY1ODllZDJkNDI3NWU2NjVhOTQ2ZjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyMiBPY3QgMjAxOCAxNToxOTo1MSArMDgwMAogU3ViamVjdDogW1BBVENIXSBweXRob24zOiB1c2UgY2NfYmFzZW5hbWUgdG8gcmVwbGFjZSBDQyBmb3IgY2hlY2tpbmcgY29tcGlsZXIKQEAgLTIxLDEyICsyMSwxMyBAQAogcGF0Y2ggb3JpZ2luYWxseSBmcm9tIExpIFpob3UsIEkganVzdCByZXdvcmsgaXQgdG8gbmV3IHZlcnNpb24KIAogU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKwogLS0tCiAgY29uZmlndXJlLmFjIHwgMTkgKysrKysrKysrKy0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBhN2RlOTAxLi40YTM2ODFmIDEwMDY0NAoraW5kZXggYTE4OWQ0Mi4uMGY4NTQ4NiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCiBAQCAtNTQsNiArNTQsNyBAQCBBQ19DT05GSUdfSEVBREVSKHB5Y29uZmlnLmgpCkBAIC0zNyw3ICszOCw3IEBACiAgCiAgIyBweWJ1aWxkZGlyLnR4dCB3aWxsIGJlIGNyZWF0ZWQgYnkgLS1nZW5lcmF0ZS1wb3NpeC12YXJzIGluIHRoZSBNYWtlZmlsZQogIHJtIC1mIHB5YnVpbGRkaXIudHh0Ci1AQCAtNjk1LDcgKzY5Niw3IEBAIEFDX01TR19SRVNVTFQoJHdpdGhfY3h4X21haW4pCitAQCAtNjcxLDcgKzY3Miw3IEBAIEFDX01TR19SRVNVTFQoJHdpdGhfY3h4X21haW4pCiAgcHJlc2V0X2N4eD0iJENYWCIKICBpZiB0ZXN0IC16ICIkQ1hYIgogIHRoZW4KQEAgLTQ2LDcgKzQ3LDcgQEAKICAgICAgICAgIGdjYykgICAgQUNfUEFUSF9UT09MKENYWCwgW2crK10sIFtnKytdLCBbbm90Zm91bmRdKSA7OwogICAgICAgICAgY2MpICAgICBBQ19QQVRIX1RPT0woQ1hYLCBbYysrXSwgW2MrK10sIFtub3Rmb3VuZF0pIDs7CiAgICAgICAgICBjbGFuZ3wqL2NsYW5nKSAgICAgQUNfUEFUSF9UT09MKENYWCwgW2NsYW5nKytdLCBbY2xhbmcrK10sIFtub3Rmb3VuZF0pIDs7Ci1AQCAtOTc5LDcgKzk4MCw3IEBAIHJtZGlyIENhc2VTZW5zaXRpdmVUZXN0RGlyCitAQCAtOTU3LDcgKzk1OCw3IEBAIHJtZGlyIENhc2VTZW5zaXRpdmVUZXN0RGlyCiAgCiAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgogIGhwKnxIUCopCkBAIC01NSw3ICs1Niw3IEBACiAgICAgIGNjfCovY2MpIENDPSIkQ0MgLUFlIjs7CiAgICAgIGVzYWM7OwogIGVzYWMKLUBAIC0xMzM2LDcgKzEzMzcsNyBAQCBlbHNlCitAQCAtMTMzNSw3ICsxMzM2LDcgQEAgZWxzZQogIGZpXSwKICBbQUNfTVNHX1JFU1VMVChubyldKQogIGlmIHRlc3QgIiRQeV9MVE8iID0gJ3RydWUnIDsgdGhlbgpAQCAtNjQsNyArNjUsNyBAQAogICAgICAqY2xhbmcqKQogICAgICAgIEFDX1NVQlNUKExMVk1fQVIpCiAgICAgICAgQUNfUEFUSF9UT09MKExMVk1fQVIsIGxsdm0tYXIsICcnLCAke2xsdm1fcGF0aH0pCi1AQCAtMTQyNiw3ICsxNDI3LDcgQEAgdGhlbgorQEAgLTE0MjUsNyArMTQyNiw3IEBAIHRoZW4KICAgIGZpCiAgZmkKICBMTFZNX1BST0ZfRVJSPW5vCkBAIC03MywxNiArNzQsMTYgQEAKICAgICpjbGFuZyopCiAgICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdwogICAgICBQR09fUFJPRl9HRU5fRkxBRz0iLWZwcm9maWxlLWluc3RyLWdlbmVyYXRlIgotQEAgLTE1MDAsNyArMTUwMSw3IEBAIHRoZW4KLSAgICAgICAgICAgIFdSQVA9Ii1md3JhcHYiCi0gICAgICAgICBmaQorQEAgLTE0ODYsNyArMTQ4Nyw3IEBAIGVzYWMKKyAjIGNvbXBpbGVyIGFuZCBwbGF0Zm9ybS4gIEJBU0VDRkxBR1MgdHdlYWtzIG5lZWQgdG8gYmUgbWFkZSBldmVuIGlmIHRoZQorICMgdXNlciBzZXQgT1BULgogIAotLSAgICAgICAgY2FzZSAkQ0MgaW4KLSsgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICAgICAgICAgKmNsYW5nKikKLSAgICAgICAgICAgICAgICAgY2NfaXNfY2xhbmc9MQotICAgICAgICAgICAgICAgICA7OwotQEAgLTE2MjMsNyArMTYyNCw3IEBAIHllcykKKy1jYXNlICRDQyBpbgorK2Nhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICpjbGFuZyopCisgICAgICAgICBjY19pc19jbGFuZz0xCisgICAgICAgICA7OworQEAgLTE2MjIsNyArMTYyMyw3IEBAIHllcykKICAKICAgICAgIyBJQ0MgZG9lc24ndCByZWNvZ25pemUgdGhlIG9wdGlvbiwgYnV0IG9ubHkgZW1pdHMgYSB3YXJuaW5nCiAgICAgICMjIFhYWCBkb2VzIGl0IGVtaXQgYW4gdW51c2VkIHJlc3VsdCB3YXJuaW5nIGFuZCBjYW4gaXQgYmUgZGlzYWJsZWQ/CkBAIC05MSw3ICs5Miw3IEBACiAgICAgICppY2MqKQogICAgICBhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZz1ubwogICAgICA7OwotQEAgLTE5NjUsNyArMTk2Niw3IEBAIHllcykKK0BAIC0xOTQzLDcgKzE5NDQsNyBAQCB5ZXMpCiAgZXNhYwogIAogICMgSUNDIG5lZWRzIC1mcC1tb2RlbCBzdHJpY3Qgb3IgZmxvYXRzIGJlaGF2ZSBiYWRseQpAQCAtMTAwLDcgKzEwMSw3IEBACiAgKmljYyopCiAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1mcC1tb2RlbCBzdHJpY3QiCiAgICAgIDs7Ci1AQCAtMjcyNyw3ICsyNzI4LDcgQEAgdGhlbgorQEAgLTI3MTEsNyArMjcxMiw3IEBAIHRoZW4KICAJCXRoZW4KICAJCQlMSU5LRk9SU0hBUkVEPSItV2wsLS1leHBvcnQtZHluYW1pYyIKICAJCWZpOzsKQEAgLTEwOSw3ICsxMTAsNyBAQAogIAkJICAqZ2NjKikKICAJCSAgICBpZiAkQ0MgLVhsaW5rZXIgLS1oZWxwIDI+JjEgfCBncmVwIGV4cG9ydC1keW5hbWljID4vZGV2L251bGwKICAJCSAgICB0aGVuCi1AQCAtNTQyOSw3ICs1NDMwLDcgQEAgaWYgdGVzdCAiJGhhdmVfZ2NjX2FzbV9mb3JfeDg3IiA9IHllczsgdGhlbgorQEAgLTUzNjIsNyArNTM2Myw3IEBAIGlmIHRlc3QgIiRoYXZlX2djY19hc21fZm9yX3g4NyIgPSB5ZXM7IHRoZW4KICAgICAgIyBTb21lIHZlcnNpb25zIG9mIGdjYyBtaXNjb21waWxlIGlubGluZSBhc206CiAgICAgICMgaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00NjQ5MQogICAgICAjIGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9nY2MvMjAxMC0xMS9tc2cwMDM2Ni5odG1sCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLXNldHVwLnB5LXBhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLXNldHVwLnB5LXBhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM4ZWQ2MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtc2V0dXAucHktcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaApAQCAtMCwwICsxLDY5IEBACitGcm9tIDcwMTliYTE4NGI4MjhlZDcyNTM3NTBjZjQwOWZjNTc2MGVmOTBhNTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgOSBKYW4gMjAyMCAxNzo0NDowNSArMDEwMAorU3ViamVjdDogW1BBVENIXSBzZXR1cC5weTogcGFzcyBtaXNzaW5nIGxpYnJhcmllcyB0byBFeHRlbnNpb24gZm9yCisgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZQorCitJbiB0aGUgZm9sbG93aW5nIGNvbW1pdDoKKy4uLgorY29tbWl0IGU3MTFjYWZhYjEzZWZjOWMxZmU2YzVjZDc1ODI2NDAxNDQ1ZWI1ODUKK0F1dGhvcjogQmVuamFtaW4gUGV0ZXJzb24gPGJlbmphbWluQHB5dGhvbi5vcmc+CitEYXRlOiAgIFdlZCBKdW4gMTEgMTY6NDQ6MDQgMjAwOCArMDAwMAorCisgICAgTWVyZ2VkIHJldmlzaW9ucyA2NDEwNCw2NDExNyB2aWEgc3ZubWVyZ2UgZnJvbQorICAgIHN2bitzc2g6Ly9weXRob25kZXZAc3ZuLnB5dGhvbi5vcmcvcHl0aG9uL3RydW5rCisuLi4KKyhzZWUgZGlmZiBpbiBzZXR1cC5weSkKK0l0IGFzc2lnbmVkIGxpYnJhcmllcyBmb3IgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZSBhY2NvcmRpbmcKK3RoZSBob3N0X3BsYXRmb3JtLCBidXQgbm90IHBhc3MgaXQgdG8gRXh0ZW5zaW9uLgorCitJbiBnbGliYywgdGhlIGZvbGxvd2luZyBjb21taXQgY2F1c2VkIHR3byBkZWZpbml0aW9uIG9mCitzZW1fZ2V0dmFsdWUgYXJlIGRpZmZlcmVudC4KK2h0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0Lz9wPWdsaWJjLmdpdDthPWNvbW1pdDtoPTA0MmUxNTIxYzc5NGE5NDVlZGM0M2I1YmZhN2U2OWFkNzA0MjA1MjQKKyhzZWUgZGlmZiBpbiBucHRsL3NlbV9nZXR2YWx1ZS5jIGZvciBkZXRhaWwpCitgX19uZXdfc2VtX2dldHZhbHVlJyBpcyB0aGUgbGF0ZXN0IHNlbV9nZXR2YWx1ZUBAR0xJQkNfMi4xCithbmQgYF9fb2xkX3NlbV9nZXR2YWx1ZScgaXMgdG8gY29tcGF0IHRoZSBvbGQgdmVyc2lvbgorc2VtX2dldHZhbHVlQEdMSUJDXzIuMC4KKworVG8gYnVpbGQgcHl0aG9uIGZvciBlbWJlZGRlZCBMaW51eCBzeXN0ZW1zOgoraHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi4zLjEveW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLmh0bWwKK0lmIG5vdCBleHBsaWNpdGx5IGxpbmsgdG8gbGlicmFyeSBwdGhyZWFkICgtbHB0aHJlYWQpLCBpdCB3aWxsCitsb2FkIGdsaWJjJ3Mgc2VtX2dldHZhbHVlIHJhbmRvbWx5IGF0IHJ1bnRpbWUuCisKK1N1Y2ggYXMgYnVpbGQgcHl0aG9uIG9uIGxpbnV4IHg4Nl82NCBob3N0IGFuZCBydW4gdGhlIHB5dGhvbgorb24gbGludXggeDg2XzMyIHRhcmdldC4gSWYgbm90IGxpbmsgbGlicmFyeSBwdGhyZWFkLCBpdCBjYXVzZWQKK211bHRpcHJvY2Vzc2luZyBib3VuZGVkIHNlbWFwaG9yZSBjb3VsZCBub3Qgd29yayBjb3JyZWN0bHkuCisuLi4KKz4+PiBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCis+Pj4gcG9vbF9zZW1hID0gbXVsdGlwcm9jZXNzaW5nLkJvdW5kZWRTZW1hcGhvcmUodmFsdWU9MSkKKz4+PiBwb29sX3NlbWEuYWNxdWlyZSgpCitUcnVlCis+Pj4gcG9vbF9zZW1hLnJlbGVhc2UoKQorVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorVmFsdWVFcnJvcjogc2VtYXBob3JlIG9yIGxvY2sgcmVsZWFzZWQgdG9vIG1hbnkgdGltZXMKKy4uLgorCitBbmQgdGhlIHNlbWFwaG9yZSBpc3N1ZSBhbHNvIGNhdXNlZCBtdWx0aXByb2Nlc3NpbmcuUXVldWUoKS5wdXQoKSBodW5nLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbnNpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBzZXR1cC5weSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKK2luZGV4IGVjM2YyYTQuLmIwZjE1NDEgMTAwNjQ0CistLS0gYS9zZXR1cC5weQorKysrIGIvc2V0dXAucHkKK0BAIC0xNjcxLDcgKzE2NzEsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9bGlicywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycz1bIk1vZHVsZXMvX211bHRpcHJvY2Vzc2luZyJdKSkKKyAKKy0gICAgICAgIHNlbGYuYWRkKEV4dGVuc2lvbignX211bHRpcHJvY2Vzc2luZycsIG11bHRpcHJvY2Vzc2luZ19zcmNzLAorKyAgICAgICAgc2VsZi5hZGQoRXh0ZW5zaW9uKCdfbXVsdGlwcm9jZXNzaW5nJywgbXVsdGlwcm9jZXNzaW5nX3NyY3MsIGxpYnJhcmllcz1bJ3B0aHJlYWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnM9WyJNb2R1bGVzL19tdWx0aXByb2Nlc3NpbmciXSkpCisgCisgICAgIGRlZiBkZXRlY3RfdXVpZChzZWxmKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDItRG9uLXQtZG8tcnVudGltZS10ZXN0LXRvLWdldC1mbG9hdC1ieXRlLW9yZGVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMi1Eb24tdC1kby1ydW50aW1lLXRlc3QtdG8tZ2V0LWZsb2F0LWJ5dGUtb3JkZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3MjFlN2MuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMi1Eb24tdC1kby1ydW50aW1lLXRlc3QtdG8tZ2V0LWZsb2F0LWJ5dGUtb3JkZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOTkgKzAsMCBAQAotRnJvbSBmYTk2YTdmZDE5ZTE3YjljNmI0ZGQwMWMzYzM3NzRmYjM4MmRkZGM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLURhdGU6IFdlZCwgNSBTZXAgMjAxOCAxMTo0NTo1MiArMDEwMAotU3ViamVjdDogW1BBVENIXSBEb24ndCBkbyBydW50aW1lIHRlc3QgdG8gZ2V0IGZsb2F0IGJ5dGUgb3JkZXIKLQotUHl0aG9uIHVzZXMgQUNfUlVOX0lGRUxTRSB0byBkZXRlcm1pbmUgdGhlIGJ5dGUgb3JkZXIgZm9yIGZsb2F0cyBhbmQgZG91YmxlcywKLWFuZCBmYWxscyBiYWNrIG9udG8gIkkgZG9uJ3Qga25vdyIgaWYgaXQgY2FuJ3QgcnVuIGNvZGUuICBUaGlzIHJlc3VsdHMgaW4KLWNyaXBwbGVkIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgaW4gUHl0aG9uLCBhbmQgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgZmFpbC4KLQotSW5zdGVhZCBvZiBydW5uaW5nIGNvZGUsIHRha2UgYSBtYWNybyBmcm9tIGF1dG9jb25mLWFyY2hpdmUgd2hpY2ggY29tcGlsZXMgQwotd2l0aCBhIHNwZWNpYWwgZG91YmxlIGluIHdoaWNoIGhhcyBhbiBBU0NJSSByZXByZXNlbnRhdGlvbiwgYW5kIHRoZW4gZ3JlcHMgdGhlCi1iaW5hcnkgdG8gaWRlbnRpZnkgdGhlIGZvcm1hdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzQ1ODVdCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgfCA3MiArKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBtNC9heF9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbi5tNCB8IDgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA5MCBpbnNlcnRpb25zKCspLCA2NSBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbTQvYXhfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4ubTQKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNGEzNjgxZi4uNGFiMTlhNiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNDMyOCw3NyArNDMyOCwxOSBAQCBmaQotICMgKiBDaGVjayBmb3IgdmFyaW91cyBwcm9wZXJ0aWVzIG9mIGZsb2F0aW5nIHBvaW50ICoKLSAjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gCi0tQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgQyBkb3VibGVzIGFyZSBsaXR0bGUtZW5kaWFuIElFRUUgNzU0IGJpbmFyeTY0KQotLUFDX0NBQ0hFX1ZBTChhY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZSwgWwotLUFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCi0tI2luY2x1ZGUgPHN0cmluZy5oPgotLWludCBtYWluKCkgewotLSAgICBkb3VibGUgeCA9IDkwMDYxMDQwNzE4MzI1ODEuMDsKLS0gICAgaWYgKG1lbWNtcCgmeCwgIlx4MDVceDA0XHgwM1x4MDJceDAxXHhmZlx4M2ZceDQzIiwgOCkgPT0gMCkKLS0gICAgICAgIHJldHVybiAwOwotLSAgICBlbHNlCi0tICAgICAgICByZXR1cm4gMTsKLS19Ci0tXV0pXSwKLS1bYWNfY3ZfbGl0dGxlX2VuZGlhbl9kb3VibGU9eWVzXSwKLS1bYWNfY3ZfbGl0dGxlX2VuZGlhbl9kb3VibGU9bm9dLAotLVthY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZT1ub10pXSkKLS1BQ19NU0dfUkVTVUxUKCRhY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZSkKLS1pZiB0ZXN0ICIkYWNfY3ZfbGl0dGxlX2VuZGlhbl9kb3VibGUiID0geWVzCi0tdGhlbgotLSAgQUNfREVGSU5FKERPVUJMRV9JU19MSVRUTEVfRU5ESUFOX0lFRUU3NTQsIDEsCi0tICBbRGVmaW5lIGlmIEMgZG91YmxlcyBhcmUgNjQtYml0IElFRUUgNzU0IGJpbmFyeSBmb3JtYXQsIHN0b3JlZAotLSAgIHdpdGggdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUgZmlyc3RdKQotLWZpCi0tCi0tQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgQyBkb3VibGVzIGFyZSBiaWctZW5kaWFuIElFRUUgNzU0IGJpbmFyeTY0KQotLUFDX0NBQ0hFX1ZBTChhY19jdl9iaWdfZW5kaWFuX2RvdWJsZSwgWwotLUFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCi0tI2luY2x1ZGUgPHN0cmluZy5oPgotLWludCBtYWluKCkgewotLSAgICBkb3VibGUgeCA9IDkwMDYxMDQwNzE4MzI1ODEuMDsKLS0gICAgaWYgKG1lbWNtcCgmeCwgIlx4NDNceDNmXHhmZlx4MDFceDAyXHgwM1x4MDRceDA1IiwgOCkgPT0gMCkKLS0gICAgICAgIHJldHVybiAwOwotLSAgICBlbHNlCi0tICAgICAgICByZXR1cm4gMTsKLS19Ci0tXV0pXSwKLS1bYWNfY3ZfYmlnX2VuZGlhbl9kb3VibGU9eWVzXSwKLS1bYWNfY3ZfYmlnX2VuZGlhbl9kb3VibGU9bm9dLAotLVthY19jdl9iaWdfZW5kaWFuX2RvdWJsZT1ub10pXSkKLS1BQ19NU0dfUkVTVUxUKCRhY19jdl9iaWdfZW5kaWFuX2RvdWJsZSkKLS1pZiB0ZXN0ICIkYWNfY3ZfYmlnX2VuZGlhbl9kb3VibGUiID0geWVzCi0rQVhfQ19GTE9BVF9XT1JEU19CSUdFTkRJQU4KLStpZiB0ZXN0ICIkYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4iID0gInllcyIKLSB0aGVuCi0gICBBQ19ERUZJTkUoRE9VQkxFX0lTX0JJR19FTkRJQU5fSUVFRTc1NCwgMSwKLSAgIFtEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkCi0gICAgd2l0aCB0aGUgbW9zdCBzaWduaWZpY2FudCBieXRlIGZpcnN0XSkKLS1maQotLQotLSMgU29tZSBBUk0gcGxhdGZvcm1zIHVzZSBhIG1peGVkLWVuZGlhbiByZXByZXNlbnRhdGlvbiBmb3IgZG91Ymxlcy4KLS0jIFdoaWxlIFB5dGhvbiBkb2Vzbid0IGN1cnJlbnRseSBoYXZlIGZ1bGwgc3VwcG9ydCBmb3IgdGhlc2UgcGxhdGZvcm1zCi0tIyAoc2VlIGUuZy4sIGlzc3VlIDE3NjI1NjEpLCB3ZSBjYW4gYXQgbGVhc3QgbWFrZSBzdXJlIHRoYXQgZmxvYXQgPC0+IHN0cmluZwotLSMgY29udmVyc2lvbnMgd29yay4KLS1BQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBDIGRvdWJsZXMgYXJlIEFSTSBtaXhlZC1lbmRpYW4gSUVFRSA3NTQgYmluYXJ5NjQpCi0tQUNfQ0FDSEVfVkFMKGFjX2N2X21peGVkX2VuZGlhbl9kb3VibGUsIFsKLS1BQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWwotLSNpbmNsdWRlIDxzdHJpbmcuaD4KLS1pbnQgbWFpbigpIHsKLS0gICAgZG91YmxlIHggPSA5MDA2MTA0MDcxODMyNTgxLjA7Ci0tICAgIGlmIChtZW1jbXAoJngsICJceDAxXHhmZlx4M2ZceDQzXHgwNVx4MDRceDAzXHgwMiIsIDgpID09IDApCi0tICAgICAgICByZXR1cm4gMDsKLS0gICAgZWxzZQotLSAgICAgICAgcmV0dXJuIDE7Ci0tfQotLV1dKV0sCi0tW2FjX2N2X21peGVkX2VuZGlhbl9kb3VibGU9eWVzXSwKLS1bYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZT1ub10sCi0tW2FjX2N2X21peGVkX2VuZGlhbl9kb3VibGU9bm9dKV0pCi0tQUNfTVNHX1JFU1VMVCgkYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZSkKLS1pZiB0ZXN0ICIkYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZSIgPSB5ZXMKLStlbGlmIHRlc3QgIiRheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbiIgPSAibm8iCi0gdGhlbgotLSAgQUNfREVGSU5FKERPVUJMRV9JU19BUk1fTUlYRURfRU5ESUFOX0lFRUU3NTQsIDEsCi0rICBBQ19ERUZJTkUoRE9VQkxFX0lTX0xJVFRMRV9FTkRJQU5fSUVFRTc1NCwgMSwKLSAgIFtEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkCi0tICAgaW4gQVJNIG1peGVkLWVuZGlhbiBvcmRlciAoYnl0ZSBvcmRlciA0NTY3MDEyMyldKQotKyAgIHdpdGggdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUgZmlyc3RdKQotK2Vsc2UKLSsgIEFDX01TR19FUlJPUihbQ2Fubm90IGlkZW50aWZ5IGZsb2F0aW5nIHBvaW50IGJ5dGUgb3JkZXJdKQotIGZpCi0gCi0gIyBUaGUgc2hvcnQgZmxvYXQgcmVwciBpbnRyb2R1Y2VkIGluIFB5dGhvbiAzLjEgcmVxdWlyZXMgdGhlCi1kaWZmIC0tZ2l0IGEvbTQvYXhfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4ubTQgYi9tNC9heF9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbi5tNAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjIxNmI5MGQKLS0tLSAvZGV2L251bGwKLSsrKyBiL200L2F4X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLm00Ci1AQCAtMCwwICsxLDgzIEBACi0rIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rIyAgaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLmh0bWwKLSsjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsjCi0rIyBTWU5PUFNJUwotKyMKLSsjICAgQVhfQ19GTE9BVF9XT1JEU19CSUdFTkRJQU4oW0FDVElPTi1JRi1UUlVFXSwgW0FDVElPTi1JRi1GQUxTRV0sIFtBQ1RJT04tSUYtVU5LTk9XTl0pCi0rIwotKyMgREVTQ1JJUFRJT04KLSsjCi0rIyAgIENoZWNrcyB0aGUgb3JkZXJpbmcgb2Ygd29yZHMgd2l0aGluIGEgbXVsdGktd29yZCBmbG9hdC4gVGhpcyBjaGVjayBpcwotKyMgICBuZWNlc3NhcnkgYmVjYXVzZSBvbiBzb21lIHN5c3RlbXMgKGUuZy4gY2VydGFpbiBBUk0gc3lzdGVtcyksIHRoZSBmbG9hdAotKyMgICB3b3JkIG9yZGVyaW5nIGNhbiBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgYnl0ZSBvcmRlcmluZy4gSW4gYSBtdWx0aS13b3JkCi0rIyAgIGZsb2F0IGNvbnRleHQsICJiaWctZW5kaWFuIiBpbXBsaWVzIHRoYXQgdGhlIHdvcmQgY29udGFpbmluZyB0aGUgc2lnbgotKyMgICBiaXQgaXMgZm91bmQgaW4gdGhlIG1lbW9yeSBsb2NhdGlvbiB3aXRoIHRoZSBsb3dlc3QgYWRkcmVzcy4gVGhpcwotKyMgICBpbXBsZW1lbnRhdGlvbiB3YXMgaW5zcGlyZWQgYnkgdGhlIEFDX0NfQklHRU5ESUFOIG1hY3JvIGluIGF1dG9jb25mLgotKyMKLSsjICAgVGhlIGVuZGlhbm5lc3MgaXMgZGV0ZWN0ZWQgYnkgZmlyc3QgY29tcGlsaW5nIEMgY29kZSB0aGF0IGNvbnRhaW5zIGEKLSsjICAgc3BlY2lhbCBkb3VibGUgZmxvYXQgdmFsdWUsIHRoZW4gZ3JlcHBpbmcgdGhlIHJlc3VsdGluZyBvYmplY3QgZmlsZSBmb3IKLSsjICAgY2VydGFpbiBzdHJpbmdzIG9mIEFTQ0lJIHZhbHVlcy4gVGhlIGRvdWJsZSBpcyBzcGVjaWFsbHkgY3JhZnRlZCB0byBoYXZlCi0rIyAgIGEgYmluYXJ5IHJlcHJlc2VudGF0aW9uIHRoYXQgY29ycmVzcG9uZHMgd2l0aCBhIHNpbXBsZSBzdHJpbmcuIEluIHRoaXMKLSsjICAgaW1wbGVtZW50YXRpb24sIHRoZSBzdHJpbmcgIm5vb25zZWVzIiB3YXMgc2VsZWN0ZWQgYmVjYXVzZSB0aGUKLSsjICAgaW5kaXZpZHVhbCB3b3JkIHZhbHVlcyAoIm5vb24iIGFuZCAic2VlcyIpIGFyZSBwYWxpbmRyb21lcywgdGh1cyBtYWtpbmcKLSsjICAgdGhpcyB0ZXN0IGJ5dGUtb3JkZXIgYWdub3N0aWMuIElmIGdyZXAgZmluZHMgdGhlIHN0cmluZyAibm9vbnNlZXMiIGluCi0rIyAgIHRoZSBvYmplY3QgZmlsZSwgdGhlIHRhcmdldCBwbGF0Zm9ybSBzdG9yZXMgZmxvYXQgd29yZHMgaW4gYmlnLWVuZGlhbgotKyMgICBvcmRlci4gSWYgZ3JlcCBmaW5kcyAic2Vlc25vb24iLCBmbG9hdCB3b3JkcyBhcmUgaW4gbGl0dGxlLWVuZGlhbiBvcmRlci4KLSsjICAgSWYgbmVpdGhlciB2YWx1ZSBpcyBmb3VuZCwgdGhlIHVzZXIgaXMgaW5zdHJ1Y3RlZCB0byBzcGVjaWZ5IHRoZQotKyMgICBvcmRlcmluZy4KLSsjCi0rIyBMSUNFTlNFCi0rIwotKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggRGFuaWVsIEFtZWxhbmcgPGRhbkBhbWVsYW5nLm5ldD4KLSsjCi0rIyAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZQotKyMgICBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UKLSsjICAgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBvZmZlcmVkIGFzLWlzLCB3aXRob3V0IGFueQotKyMgICB3YXJyYW50eS4KLSsKLSsjc2VyaWFsIDExCi0rCi0rQUNfREVGVU4oW0FYX0NfRkxPQVRfV09SRFNfQklHRU5ESUFOXSwKLSsgIFtBQ19DQUNIRV9DSEVDSyh3aGV0aGVyIGZsb2F0IHdvcmQgb3JkZXJpbmcgaXMgYmlnZW5kaWFuLAotKyAgICAgICAgICAgICAgICAgIGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLCBbCi0rCi0rYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49dW5rbm93bgotK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWwotKwotK2RvdWJsZSBkID0gOTA5MDQyMzQ5NjcwMzY4MTAzMzc0NzA0Nzg5MDU1MDUwMTE0NzYyMTE2OTI3MzU2MTU2MzIwMTQ3OTcxMjA4NDQwNTM0ODg4NjU4MTY2OTUyNzM3MjM0NjkwOTc4NTgwNTYyNTc1MTcwMjAxOTEyNDc0ODc0Mjk1MTY5MzIxMzA1MDM1NjA2NTAwMDIzMjc1NjQ1MTc1NzA3Nzg0ODAyMzY3MjQ1MjUxNDA1MjAxMjEzNzE3MzkyMDE0OTY1NDAxMzI2NDAxMDk5Nzc3Nzk0MjA1NjU3NzY1Njg5NDI1OTIuMDsKLSsKLStdXSldLCBbCi0rCi0raWYgZ3JlcCBub29uc2VlcyBjb25mdGVzdC4kYWNfb2JqZXh0ID4vZGV2L251bGwgOyB0aGVuCi0rICBheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbj15ZXMKLStmaQotK2lmIGdyZXAgc2Vlc25vb24gY29uZnRlc3QuJGFjX29iamV4dCA+L2Rldi9udWxsIDsgdGhlbgotKyAgaWYgdGVzdCAiJGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuIiA9IHVua25vd247IHRoZW4KLSsgICAgYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49bm8KLSsgIGVsc2UKLSsgICAgYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49dW5rbm93bgotKyAgZmkKLStmaQotKwotK10pXSkKLSsKLStjYXNlICRheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbiBpbgotKyAgeWVzKQotKyAgICBtNF9kZWZhdWx0KFskMV0sCi0rICAgICAgW0FDX0RFRklORShbRkxPQVRfV09SRFNfQklHRU5ESUFOXSwgMSwKLSsgICAgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3VyIHN5c3RlbSBzdG9yZXMgd29yZHMgd2l0aGluIGZsb2F0cwotKyAgICAgICAgICAgICAgICAgIHdpdGggdGhlIG1vc3Qgc2lnbmlmaWNhbnQgd29yZCBmaXJzdF0pXSkgOzsKLSsgIG5vKQotKyAgICAkMiA7OwotKyAgKikKLSsgICAgbTRfZGVmYXVsdChbJDNdLAotKyAgICAgIFtBQ19NU0dfRVJST1IoWwotKwotK1Vua25vd24gZmxvYXQgd29yZCBvcmRlcmluZy4gWW91IG5lZWQgdG8gbWFudWFsbHkgcHJlc2V0Ci0rYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49bm8gKG9yIHllcykgYWNjb3JkaW5nIHRvIHlvdXIgc3lzdGVtLgotKwotKyAgICBdKV0pIDs7Ci0rZXNhYwotKwotK10pIyBBWF9DX0ZMT0FUX1dPUkRTX0JJR0VORElBTgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMy1zZXR1cC5weS1wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMy1zZXR1cC5weS1wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWQ1YmM5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDMtc2V0dXAucHktcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLUZyb20gYjg4MWE3OWFkY2Q0YWU1YWM4ZmU0ZjQ5ZDBmYzc3YzQ3Zjc3NzkxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgNCBBdWcgMjAxNyAxMToxNjoxNCArMDgwMAotU3ViamVjdDogW1BBVENIXSBzZXR1cC5weTogcGFzcyBtaXNzaW5nIGxpYnJhcmllcyB0byBFeHRlbnNpb24gZm9yCi0gbXVsdGlwcm9jZXNzaW5nIG1vZHVsZQotCi1JbiB0aGUgZm9sbG93aW5nIGNvbW1pdDoKLS4uLgotY29tbWl0IGU3MTFjYWZhYjEzZWZjOWMxZmU2YzVjZDc1ODI2NDAxNDQ1ZWI1ODUKLUF1dGhvcjogQmVuamFtaW4gUGV0ZXJzb24gPGJlbmphbWluQHB5dGhvbi5vcmc+Ci1EYXRlOiAgIFdlZCBKdW4gMTEgMTY6NDQ6MDQgMjAwOCArMDAwMAotCi0gICAgTWVyZ2VkIHJldmlzaW9ucyA2NDEwNCw2NDExNyB2aWEgc3ZubWVyZ2UgZnJvbQotICAgIHN2bitzc2g6Ly9weXRob25kZXZAc3ZuLnB5dGhvbi5vcmcvcHl0aG9uL3RydW5rCi0uLi4KLShzZWUgZGlmZiBpbiBzZXR1cC5weSkKLUl0IGFzc2lnbmVkIGxpYnJhcmllcyBmb3IgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZSBhY2NvcmRpbmcKLXRoZSBob3N0X3BsYXRmb3JtLCBidXQgbm90IHBhc3MgaXQgdG8gRXh0ZW5zaW9uLgotCi1JbiBnbGliYywgdGhlIGZvbGxvd2luZyBjb21taXQgY2F1c2VkIHR3byBkZWZpbml0aW9uIG9mCi1zZW1fZ2V0dmFsdWUgYXJlIGRpZmZlcmVudC4KLWh0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0Lz9wPWdsaWJjLmdpdDthPWNvbW1pdDtoPTA0MmUxNTIxYzc5NGE5NDVlZGM0M2I1YmZhN2U2OWFkNzA0MjA1MjQKLShzZWUgZGlmZiBpbiBucHRsL3NlbV9nZXR2YWx1ZS5jIGZvciBkZXRhaWwpCi1gX19uZXdfc2VtX2dldHZhbHVlJyBpcyB0aGUgbGF0ZXN0IHNlbV9nZXR2YWx1ZUBAR0xJQkNfMi4xCi1hbmQgYF9fb2xkX3NlbV9nZXR2YWx1ZScgaXMgdG8gY29tcGF0IHRoZSBvbGQgdmVyc2lvbgotc2VtX2dldHZhbHVlQEdMSUJDXzIuMC4KLQotVG8gYnVpbGQgcHl0aG9uIGZvciBlbWJlZGRlZCBMaW51eCBzeXN0ZW1zOgotaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi4zLjEveW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLmh0bWwKLUlmIG5vdCBleHBsaWNpdGx5IGxpbmsgdG8gbGlicmFyeSBwdGhyZWFkICgtbHB0aHJlYWQpLCBpdCB3aWxsCi1sb2FkIGdsaWJjJ3Mgc2VtX2dldHZhbHVlIHJhbmRvbWx5IGF0IHJ1bnRpbWUuCi0KLVN1Y2ggYXMgYnVpbGQgcHl0aG9uIG9uIGxpbnV4IHg4Nl82NCBob3N0IGFuZCBydW4gdGhlIHB5dGhvbgotb24gbGludXggeDg2XzMyIHRhcmdldC4gSWYgbm90IGxpbmsgbGlicmFyeSBwdGhyZWFkLCBpdCBjYXVzZWQKLW11bHRpcHJvY2Vzc2luZyBib3VuZGVkIHNlbWFwaG9yZSBjb3VsZCBub3Qgd29yayBjb3JyZWN0bHkuCi0uLi4KLT4+PiBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCi0+Pj4gcG9vbF9zZW1hID0gbXVsdGlwcm9jZXNzaW5nLkJvdW5kZWRTZW1hcGhvcmUodmFsdWU9MSkKLT4+PiBwb29sX3NlbWEuYWNxdWlyZSgpCi1UcnVlCi0+Pj4gcG9vbF9zZW1hLnJlbGVhc2UoKQotVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgotVmFsdWVFcnJvcjogc2VtYXBob3JlIG9yIGxvY2sgcmVsZWFzZWQgdG9vIG1hbnkgdGltZXMKLS4uLgotCi1BbmQgdGhlIHNlbWFwaG9yZSBpc3N1ZSBhbHNvIGNhdXNlZCBtdWx0aXByb2Nlc3NpbmcuUXVldWUoKS5wdXQoKSBodW5nLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL3B1bGwvMjk5OV0KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc2V0dXAucHkgfCA3ICsrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggYjdhMzZhNi4uNjU4ZWFkMyAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTE1ODQsOCArMTU4NCwxMCBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICBlbGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgnbmV0YnNkJyk6Ci0gICAgICAgICAgICAgbWFjcm9zID0gZGljdCgpCi0gICAgICAgICAgICAgbGlicmFyaWVzID0gW10KLS0KLS0gICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIExpbnV4IGFuZCBvdGhlciB1bmljZXMKLSsgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybS5zdGFydHN3aXRoKCgnbGludXgnKSk6Ci0rICAgICAgICAgICAgbWFjcm9zID0gZGljdCgpCi0rICAgICAgICAgICAgbGlicmFyaWVzID0gWydwdGhyZWFkJ10KLSsgICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE90aGVyIHVuaWNlcwotICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQotICAgICAgICAgICAgIGxpYnJhcmllcyA9IFsncnQnXQotIAotQEAgLTE2MDMsNiArMTYwNSw3IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAKLSAgICAgICAgIGV4dHMuYXBwZW5kICggRXh0ZW5zaW9uKCdfbXVsdGlwcm9jZXNzaW5nJywgbXVsdGlwcm9jZXNzaW5nX3NyY3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPWxpc3QobWFjcm9zLml0ZW1zKCkpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPWxpYnJhcmllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycz1bIk1vZHVsZXMvX211bHRpcHJvY2Vzc2luZyJdKSkKLSAgICAgICAgICMgRW5kIG11bHRpcHJvY2Vzc2luZwotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAxNy1zZXR1cC5weS1kby1ub3QtcmVwb3J0LW1pc3NpbmctZGVwZW5kZW5jaWVzLWZvci1kaXNhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAxNy1zZXR1cC5weS1kby1ub3QtcmVwb3J0LW1pc3NpbmctZGVwZW5kZW5jaWVzLWZvci1kaXNhLnBhdGNoCmluZGV4IGMxNTI5NWMuLjRiZDk4ZjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMTctc2V0dXAucHktZG8tbm90LXJlcG9ydC1taXNzaW5nLWRlcGVuZGVuY2llcy1mb3ItZGlzYS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDE3LXNldHVwLnB5LWRvLW5vdC1yZXBvcnQtbWlzc2luZy1kZXBlbmRlbmNpZXMtZm9yLWRpc2EucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGUzYjU5Y2I5NjU4ZTFkM2VmYTM1MzU4NDA5MzlhMGZhOTJhNzBhNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGEyZGQxMjdiNDE2M2FmZjZjYzM1YWYwZDAyNTEzMjE5NjQyMzJhZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgNyBPY3QgMjAxOSAxMzoyMjoxNCArMDIwMAogU3ViamVjdDogW1BBVENIXSBzZXR1cC5weTogZG8gbm90IHJlcG9ydCBtaXNzaW5nIGRlcGVuZGVuY2llcyBmb3IgZGlzYWJsZWQKQEAgLTEwLDIyICsxMCwyMyBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgc2V0dXAucHkgfCA0ICsrKysKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5Ci1pbmRleCA0YjUzNjY4Li4wMDk3NjQzIDEwMDY0NAoraW5kZXggNzY5MTI1OC4uZWMzZjJhNCAxMDA2NDQKIC0tLSBhL3NldHVwLnB5CiArKysgYi9zZXR1cC5weQotQEAgLTM2NSw2ICszNjUsMTAgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgorQEAgLTQwOCw2ICs0MDgsMTAgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgogICAgICAgICAgICAgICAgICBwcmludCgiJS0qcyAgICUtKnMgICAlLSpzIiAlIChsb25nZXN0LCBlLCBsb25nZXN0LCBmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nZXN0LCBnKSkKICAKICsgICAgICAgICMgVGhlcmUgaXMgbm8gbmVlZCB0byByZXBvcnQgbWlzc2luZyBtb2R1bGUgZGVwZW5kZW5jaWVzLAogKyAgICAgICAgIyBpZiB0aGUgbW9kdWxlcyBoYXZlIGJlZW4gZGlzYWJsZWQgaW4gdGhlIGZpcnN0IHBsYWNlLgotKyAgICAgICAgbWlzc2luZyA9IGxpc3Qoc2V0KG1pc3NpbmcpIC0gc2V0KHN5c2NvbmZfZGlzKSkKKysgICAgICAgIHNlbGYubWlzc2luZyA9IGxpc3Qoc2V0KHNlbGYubWlzc2luZykgLSBzZXQoc3lzY29uZl9kaXMpKQogKwotICAgICAgICAgaWYgbWlzc2luZzoKKyAgICAgICAgIGlmIHNlbGYubWlzc2luZzoKICAgICAgICAgICAgICBwcmludCgpCiAgICAgICAgICAgICAgcHJpbnQoIlB5dGhvbiBidWlsZCBmaW5pc2hlZCBzdWNjZXNzZnVsbHkhIikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMjAtY29uZmlndXJlLmFjLXNldHVwLnB5LWRvLW5vdC1hZGQtYS1jdXJzZXMtaW5jbHVkZS1wYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMjAtY29uZmlndXJlLmFjLXNldHVwLnB5LWRvLW5vdC1hZGQtYS1jdXJzZXMtaW5jbHVkZS1wYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDRhOTE2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAyMC1jb25maWd1cmUuYWMtc2V0dXAucHktZG8tbm90LWFkZC1hLWN1cnNlcy1pbmNsdWRlLXBhLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gODYzYzA5ZjY0MGE1ZGZkMzNmZjIyOTE1YjBkNWZlZTdiYzVkZjcwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxNiBGZWIgMjAyMCAxNzo1MDoyNSArMDEwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWMsIHNldHVwLnB5OiBkbyBub3QgYWRkIGEgY3Vyc2VzIGluY2x1ZGUgcGF0aCBmcm9tCisgdGhlIGhvc3QKKworVGhpcyBsZWFkcyB0byBob3N0IGNvbnRhbWluYXRpb24sIGFuZCBwYXJ0aWN1bGFybHkgY2FuIGNhdXNlCitjdXJzZXMgbW9kdWxlcyB0byBmYWlsIGF0IHJ1bnRpbWUgaWYgdGhlIGhvc3QgY3Vyc2VzIGlzIGNvbmZpZ3VyZWQKK2RpZmZlcmVudGx5IHRvIG5hdGl2ZSBjdXJzZXMgKG9ic2VydmVkIG9uIGN1cnJlbnQgT3BlblN1c2UgVHVtYmxld2VlZAorYXMgZG5mIGZhaWx1cmVzKS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA2IC0tLS0tLQorIHNldHVwLnB5ICAgICB8IDIgLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDkxNWY0NzUuLmM5MTEwMTEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTQ4MjgsMTIgKzQ4MjgsNiBAQCB0aGVuCisgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHN0cnVjdCBzdGF0LnN0X210aW1lbnNlY10pCisgZmkKKyAKKy0jIGZpcnN0IGN1cnNlcyBoZWFkZXIgY2hlY2sKKy1hY19zYXZlX2NwcGZsYWdzPSIkQ1BQRkxBR1MiCistaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBubzsgdGhlbgorLSAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSS91c3IvaW5jbHVkZS9uY3Vyc2VzdyIKKy1maQorLQorIEFDX0NIRUNLX0hFQURFUlMoY3Vyc2VzLmggbmN1cnNlcy5oKQorIAorICMgT24gU29sYXJpcywgdGVybS5oIHJlcXVpcmVzIGN1cnNlcy5oCitkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQoraW5kZXggYjBmMTU0MS4uNzIwOGNkMCAxMDA2NDQKKy0tLSBhL3NldHVwLnB5CisrKysgYi9zZXR1cC5weQorQEAgLTk3Myw4ICs5NzMsNiBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CisgICAgICAgICBwYW5lbF9saWJyYXJ5ID0gJ3BhbmVsJworICAgICAgICAgaWYgY3Vyc2VzX2xpYnJhcnkgPT0gJ25jdXJzZXN3JzoKKyAgICAgICAgICAgICBjdXJzZXNfZGVmaW5lcy5hcHBlbmQoKCdIQVZFX05DVVJTRVNXJywgJzEnKSkKKy0gICAgICAgICAgICBpZiBub3QgQ1JPU1NfQ09NUElMSU5HOgorLSAgICAgICAgICAgICAgICBjdXJzZXNfaW5jbHVkZXMuYXBwZW5kKCcvdXNyL2luY2x1ZGUvbmN1cnNlc3cnKQorICAgICAgICAgICAgICMgQnVnIDE0NjQwNTY6IElmIF9jdXJzZXMuc28gbGlua3Mgd2l0aCBuY3Vyc2VzdywKKyAgICAgICAgICAgICAjIF9jdXJzZXNfcGFuZWwuc28gbXVzdCBsaW5rIHdpdGggcGFuZWx3LgorICAgICAgICAgICAgIHBhbmVsX2xpYnJhcnkgPSAncGFuZWx3JwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMTItZGlzdHV0aWxzLXByZWZpeC1pcy1pbnNpZGUtc3RhZ2luZy1hcmVhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMTItZGlzdHV0aWxzLXByZWZpeC1pcy1pbnNpZGUtc3RhZ2luZy1hcmVhLnBhdGNoCmluZGV4IGQ0OTYwNGIuLjYxYWMzZTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzEyLWRpc3R1dGlscy1wcmVmaXgtaXMtaW5zaWRlLXN0YWdpbmctYXJlYS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8xMi1kaXN0dXRpbHMtcHJlZml4LWlzLWluc2lkZS1zdGFnaW5nLWFyZWEucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGEyNzRiYTc3ODgzODgyNGVmY2FjYWJhNTdjNDE1YjcyNjJmNzc5ZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDI1MTM0N2ZjOTcwYTM5N2E5Y2Q2M2VkM2Y4N2M1ZTZjNTJlMTUxODcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogVHVlLCAxNCBNYXkgMjAxMyAxNTowMDoyNiAtMDcwMAogU3ViamVjdDogW1BBVENIXSBweXRob24zOiBBZGQgdGFyZ2V0IGFuZCBuYXRpdmUgcmVjaXBlcwpAQCAtMTgsMTAgKzE4LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci1pbmRleCAzZGZkMGEzLi42YzZiMDlhIDEwMDY0NAoraW5kZXggMmRmMzQ4Yy4uNGY4ZGI4NCAxMDA2NDQKIC0tLSBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CiArKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotQEAgLTk3LDcgKzk3LDkgQEAgZGVmIGdldF9weXRob25faW5jKHBsYXRfc3BlY2lmaWM9MCwgcHJlZml4PU5vbmUpOgorQEAgLTk2LDcgKzk2LDkgQEAgZGVmIGdldF9weXRob25faW5jKHBsYXRfc3BlY2lmaWM9MCwgcHJlZml4PU5vbmUpOgogICAgICBJZiAncHJlZml4JyBpcyBzdXBwbGllZCwgdXNlIGl0IGluc3RlYWQgb2Ygc3lzLmJhc2VfcHJlZml4IG9yCiAgICAgIHN5cy5iYXNlX2V4ZWNfcHJlZml4IC0tIGkuZS4sIGlnbm9yZSAncGxhdF9zcGVjaWZpYycuCiAgICAgICIiIgpAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICAgcHJlZml4ID0gcGxhdF9zcGVjaWZpYyBhbmQgQkFTRV9FWEVDX1BSRUZJWCBvciBCQVNFX1BSRUZJWAogICAgICBpZiBvcy5uYW1lID09ICJwb3NpeCI6CiAgICAgICAgICBpZiBweXRob25fYnVpbGQ6Ci1AQCAtMTQwLDcgKzE0MiwxMyBAQCBkZWYgZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuZGFyZF9saWI9MCwgcHJlZml4PU5vbmUpOgorQEAgLTEzOSw3ICsxNDEsMTMgQEAgZGVmIGdldF9weXRob25fbGliKHBsYXRfc3BlY2lmaWM9MCwgc3RhbmRhcmRfbGliPTAsIHByZWZpeD1Ob25lKToKICAgICAgSWYgJ3ByZWZpeCcgaXMgc3VwcGxpZWQsIHVzZSBpdCBpbnN0ZWFkIG9mIHN5cy5iYXNlX3ByZWZpeCBvcgogICAgICBzeXMuYmFzZV9leGVjX3ByZWZpeCAtLSBpLmUuLCBpZ25vcmUgJ3BsYXRfc3BlY2lmaWMnLgogICAgICAiIiIKQEAgLTQ3LDcgKzQ3LDcgQEAKICAgICAgICAgIGlmIHN0YW5kYXJkX2xpYjoKICAgICAgICAgICAgICBwcmVmaXggPSBwbGF0X3NwZWNpZmljIGFuZCBCQVNFX0VYRUNfUFJFRklYIG9yIEJBU0VfUFJFRklYCiAgICAgICAgICBlbHNlOgotQEAgLTE0OCw3ICsxNTYsNyBAQCBkZWYgZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuZGFyZF9saWI9MCwgcHJlZml4PU5vbmUpOgorQEAgLTE0Nyw3ICsxNTUsNyBAQCBkZWYgZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuZGFyZF9saWI9MCwgcHJlZml4PU5vbmUpOgogIAogICAgICBpZiBvcy5uYW1lID09ICJwb3NpeCI6CiAgICAgICAgICBsaWJweXRob24gPSBvcy5wYXRoLmpvaW4ocHJlZml4LApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoCmluZGV4IDI0ZTY3YjQuLjE4NDU0MGUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGZlYWQ0OGM4YjUwMWE4ZDdjM2RiMjFkZjJlNTk5ZjkwZjM4ZjExZDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGJhNzIwMjcwMDU3OGQ0MzViMDdjZmRmYjdiNTdlODMxODU3NTI4MDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+CiBEYXRlOiBNb24sIDI4IEphbiAyMDE5IDE1OjU3OjU0ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0hdIF90a2ludGVyIG1vZHVsZSBuZWVkcyB0ayBtb2R1bGUgYWxvbmcgd2l0aCB0Y2wuIHRrIGlzIG5vdCB5ZXQKQEAgLTExLDI2ICsxMSwyMSBAQAogU2lnbmVkLW9mZi1ieTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgogCiAtLS0KLSBzZXR1cC5weSB8IDggKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorIHNldHVwLnB5IHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKLWluZGV4IGZiZWMwMGQuLmI3YTM2YTYgMTAwNjQ0CitpbmRleCBhYjE4ZmYwLi43NjkxMjU4IDEwMDY0NAogLS0tIGEvc2V0dXAucHkKICsrKyBiL3NldHVwLnB5Ci1AQCAtMTYyMywxMCArMTYyMywxMiBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICBzZWxmLmV4dGVuc2lvbnMuZXh0ZW5kKGV4dHMpCitAQCAtMTcwNiw4ICsxNzA2LDggQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgorICAgICAgICAgc2VsZi5kZXRlY3RfZGVjaW1hbCgpCisgICAgICAgICBzZWxmLmRldGVjdF9jdHlwZXMoKQorICAgICAgICAgc2VsZi5kZXRlY3RfbXVsdGlwcm9jZXNzaW5nKCkKKy0gICAgICAgIGlmIG5vdCBzZWxmLmRldGVjdF90a2ludGVyKCk6CistICAgICAgICAgICAgc2VsZi5taXNzaW5nLmFwcGVuZCgnX3RraW50ZXInKQorKyMgICAgICAgIGlmIG5vdCBzZWxmLmRldGVjdF90a2ludGVyKCk6CisrIyAgICAgICAgICAgIHNlbGYubWlzc2luZy5hcHBlbmQoJ190a2ludGVyJykKKyAgICAgICAgIHNlbGYuZGV0ZWN0X3V1aWQoKQogIAotICAgICAgICAgIyBDYWxsIHRoZSBtZXRob2QgZm9yIGRldGVjdGluZyB3aGV0aGVyIF90a2ludGVyIGNhbiBiZSBjb21waWxlZAotLSAgICAgICAgc2VsZi5kZXRlY3RfdGtpbnRlcihpbmNfZGlycywgbGliX2RpcnMpCi0rICAgICAgICAjIHNlbGYuZGV0ZWN0X3RraW50ZXIoaW5jX2RpcnMsIGxpYl9kaXJzKQotIAotLSAgICAgICAgaWYgJ190a2ludGVyJyBub3QgaW4gW2UubmFtZSBmb3IgZSBpbiBzZWxmLmV4dGVuc2lvbnNdOgotLSAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfdGtpbnRlcicpCi0rICAgICAgICAjIHRraW50ZXIgbW9kdWxlIHdpbGwgbm90IGJlIGF2YWxhaWJsZSBhcyB5b2N0bwotKyAgICAgICAgIyBkb2Vzbid0IGhhdmUgdGsgaW50ZWdyYXRlZCAoeWV0KQotKyAgICAgICAgI2lmICdfdGtpbnRlcicgbm90IGluIFtlLm5hbWUgZm9yIGUgaW4gc2VsZi5leHRlbnNpb25zXToKLSsgICAgICAgICMgICAgbWlzc2luZy5hcHBlbmQoJ190a2ludGVyJykKLSAKLSAgICAgICAgICMgQnVpbGQgdGhlIF91dWlkIG1vZHVsZSBpZiBwb3NzaWJsZQotICAgICAgICAgdXVpZF9pbmNzID0gZmluZF9maWxlKCJ1dWlkLmgiLCBpbmNfZGlycywgWyIvdXNyL2luY2x1ZGUvdXVpZCJdKQorICMjICAgICAgICAgIyBVbmNvbW1lbnQgdGhlc2UgbGluZXMgaWYgeW91IHdhbnQgdG8gcGxheSB3aXRoIHh4bW9kdWxlLmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbi1jb25maWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24tY29uZmlnLnBhdGNoCmluZGV4IGYyM2I4YjcuLmM4YThmM2QgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbi1jb25maWcucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uLWNvbmZpZy5wYXRjaApAQCAtMSw0ICsxLDcgQEAKLXB5dGhvbi1jb25maWc6IFJldmVydCB0byB1c2luZyBkaXN0dXRpbHMuc3lzY29uZmlnCitGcm9tIDA3ZGYwYWUwZDcwY2JhNmQxODQ3ZmUxYzI0YTcxMDYzOTMwYmVjNjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUeWxlciBIYWxsIDx0eWxlcndoYWxsQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgNCBNYXkgMjAxNCAyMDowNjo0MyAtMDQwMAorU3ViamVjdDogW1BBVENIXSBweXRob24tY29uZmlnOiBSZXZlcnQgdG8gdXNpbmcgZGlzdHV0aWxzLnN5c2NvbmZpZwogCiBUaGUgbmV3ZXIgc3lzY29uZmlnIG1vZHVsZSBzaGFyZXMgc29tZSBjb2RlIHdpdGggZGlzdHV0aWxzLnN5c2NvbmZpZywgYnV0IHRoZSBzYW1lIG1vZGlmaWNhdGlvbnMgYXMgaW4KIApAQCAtMTIsMTEgKzE1LDE2IEBACiAKIFNpZ25lZC1vZmYtYnk6IFR5bGVyIEhhbGwgPHR5bGVyd2hhbGxAZ21haWwuY29tPgogOgotSW5kZXg6IFB5dGhvbi0zLjMuMy9NaXNjL3B5dGhvbi1jb25maWcuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMy4zLjMub3JpZy9NaXNjL3B5dGhvbi1jb25maWcuaW4KLSsrKyBQeXRob24tMy4zLjMvTWlzYy9weXRob24tY29uZmlnLmluCi1AQCAtNCw3ICs0LDcgQEAKKworLS0tCisgTWlzYy9weXRob24tY29uZmlnLmluIHwgMTAgKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NaXNjL3B5dGhvbi1jb25maWcuaW4gYi9NaXNjL3B5dGhvbi1jb25maWcuaW4KK2luZGV4IDcyN2M0YTguLmM3MDI4MjkgMTAwNjQ0CistLS0gYS9NaXNjL3B5dGhvbi1jb25maWcuaW4KKysrKyBiL01pc2MvcHl0aG9uLWNvbmZpZy5pbgorQEAgLTYsNyArNiw3IEBACiAgaW1wb3J0IGdldG9wdAogIGltcG9ydCBvcwogIGltcG9ydCBzeXMKQEAgLTI0LDggKzMyLDggQEAKICtmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCiAgCiAgdmFsaWRfb3B0cyA9IFsncHJlZml4JywgJ2V4ZWMtcHJlZml4JywgJ2luY2x1ZGVzJywgJ2xpYnMnLCAnY2ZsYWdzJywKLSAgICAgICAgICAgICAgICdsZGZsYWdzJywgJ2V4dGVuc2lvbi1zdWZmaXgnLCAnaGVscCcsICdhYmlmbGFncycsICdjb25maWdkaXInXQotQEAgLTMyLDE0ICszMiwxNCBAQCBpZiAnLS1oZWxwJyBpbiBvcHRfZmxhZ3M6CisgICAgICAgICAgICAgICAnbGRmbGFncycsICdleHRlbnNpb24tc3VmZml4JywgJ2hlbHAnLCAnYWJpZmxhZ3MnLCAnY29uZmlnZGlyJywKK0BAIC0zNSwxNCArMzUsMTQgQEAgaWYgJy0taGVscCcgaW4gb3B0X2ZsYWdzOgogIAogIGZvciBvcHQgaW4gb3B0X2ZsYWdzOgogICAgICBpZiBvcHQgPT0gJy0tcHJlZml4JzoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbgppbmRleCBkYmE5MmIwLi4zYmNjOWI4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24KKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uCkBAIC0xMjIsNyArMTIyLDggQEAKICAgICAgICAgICAgICJsb2dnaW5nIiwKICAgICAgICAgICAgICJuZXRjbGllbnQiLAogICAgICAgICAgICAgIm51bWJlcnMiLAotICAgICAgICAgICAgInN0cmluZ29sZCIKKyAgICAgICAgICAgICJzdHJpbmdvbGQiLAorICAgICAgICAgICAgInR5cGluZyIKICAgICAgICAgXSwKICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2FzeW5jaW8iLApAQCAtMTgyLDI2ICsxODMsMTUgQEAKICAgICAiY29tcHJlc3Npb24iOiB7CiAgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBoaWdoLWxldmVsIGNvbXByZXNzaW9uIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsCi0gICAgICAgICAgICAic2hlbGwiLAotICAgICAgICAgICAgInVuaXhhZG1pbiIKKyAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAogICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX2NvbXByZXNzaW9uLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9iejIucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2d6aXAucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19iejIuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2x6bWEuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvemxpYi4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9sem1hLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS90YXJmaWxlLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS96aXBmaWxlLnB5IgogICAgICAgICBdLAogICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19jb21wcmVzc2lvbi4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vYnoyLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9nemlwLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9sem1hLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy90YXJmaWxlLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy96aXBmaWxlLioucHljIgogICAgICAgICBdCkBAIC0yMTAsMTIgKzIwMCwxMCBAQAogICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaW50ZXJwcmV0ZXIgYW5kIGNvcmUgbW9kdWxlcyIsCiAgICAgICAgICJyZGVwZW5kcyI6IFtdLAogICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtiaW5kaXJ9L3B5dGhvbjMiLAogICAgICAgICAgICAgIiR7YmluZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IiwKICAgICAgICAgICAgICIke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS5yZWFsIiwKLSAgICAgICAgICAgICIke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fQklOQUJJfSIsCi0gICAgICAgICAgICAiJHtpbmNsdWRlZGlyfS9weXRob24ke1BZVEhPTl9CSU5BQkl9L3B5Y29uZmlnKi5oIiwKLSAgICAgICAgICAgICIke3ByZWZpeH0vbGliL3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnKi8qWyEuYV0iLAorICAgICAgICAgICAgIiR7YmluZGlyfS9weXRob24zIiwKKyAgICAgICAgICAgICIke2luY2x1ZGVkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcHljb25maWcqLmgiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L1VzZXJEaWN0LnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9Vc2VyTGlzdC5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vVXNlclN0cmluZy5weSIsCkBAIC0yMjMsNiArMjExLDcgQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fYWJjb2xsLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fYm9vdGxvY2FsZS5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX2NvbGxlY3Rpb25zX2FiYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX2NvbXByZXNzaW9uLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fbWFya3VwYmFzZS5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3NpdGVidWlsdGlucy5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEqLnB5IiwKQEAgLTIzMSw2ICsyMjAsNyBAQAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2FyZ3BhcnNlLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9hc3QucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2Jpc2VjdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vYnoyLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb2RlLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb2RlY3MucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvZGVvcC5weSIsCkBAIC0yNDcsNiArMjM3LDcgQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9lbmNvZGluZ3MvbGF0aW5fMS5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZW5jb2RpbmdzL3V0Zl84LnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9lbnVtLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9mbm1hdGNoLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9mdW5jdG9vbHMucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2dlbmVyaWNwYXRoLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9nZXRvcHQucHkiLApAQCAtMjY3LDEzICsyNTgsMTYgQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy90aW1lLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3hyZWFkbGluZXMuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2Jpc2VjdC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fYnoyLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19jc3YuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2hlYXBxLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19sem1hLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19vcGNvZGUuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX3Bvc2l4c3VicHJvY2Vzcy4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fc3RydWN0Liouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL2FycmF5Liouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL2JpbmFzY2lpLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL2dycC4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9tYXRoLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL3BhcnNlci4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9yZWFkbGluZS4qLnNvIiwKQEAgLTI4MSwxNCArMjc1LDE4IEBACiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvdGltZS4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC91bmljb2RlZGF0YS4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC94cmVhZGxpbmVzLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL3psaWIuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGluZWNhY2hlLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9sb2NhbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2x6bWEucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L25ldy5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbnRwYXRoLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9vcGNvZGUucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L29wZXJhdG9yLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9vcHRwYXJzZS5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vb3MucHkiLAorCSAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcGF0aGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcGtndXRpbC5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcGxhdGZvcm0ucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3Bvc2l4cGF0aC5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcmUucHkiLApAQCAtMjk2LDYgKzI5NCw3IEBACiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcmxjb21wbGV0ZXIucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3J1bnB5LnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zZWxlY3RvcnMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NodXRpbC5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2lnbmFsLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaXRlLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaXRlY3VzdG9taXplLnB5IiwKQEAgLTMxNSwxMiArMzE0LDE0IEBACiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vdHJhY2ViYWNrLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS90eXBlcy5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vd2FybmluZ3MucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3dlYWtyZWYucHkiCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vd2Vha3JlZi5weSIsCisgICAgICAgICAgICAiJHtwcmVmaXh9L2xpYi9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZyovKlshLmFdIgogICAgICAgICBdLAogICAgICAgICAiY2FjaGVkIjogWwogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19fZnV0dXJlX18uKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19ib290bG9jYWxlLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fY29sbGVjdGlvbnNfYWJjLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fY29tcHJlc3Npb24uKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19tYXJrdXBiYXNlLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fc2l0ZWJ1aWx0aW5zLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fc3lzY29uZmlnZGF0YS4qLnB5YyIsCkBAIC0zMjksNiArMzMwLDcgQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9hcmdwYXJzZS4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vYXN0LioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9iaXNlY3QuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2J6Mi4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY29kZS4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY29kZWNzLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9jb2Rlb3AuKi5weWMiLApAQCAtMzM5LDYgKzM0MSw3IEBACiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY3N2LioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9kaXMuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2VudW0uKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2ZubWF0Y2guKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2Z1bmN0b29scy4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZ2VuZXJpY3BhdGguKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2dldG9wdC4qLnB5YyIsCkBAIC0zNTAsMTAgKzM1MywxNCBAQAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2tleXdvcmQuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2xpbmVjYWNoZS4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vbG9jYWxlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9sem1hLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9udHBhdGguKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL29wY29kZS4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vb3BlcmF0b3IuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL29wdHBhcnNlLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9vcy4qLnB5YyIsCisJICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9wYXRobGliLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9wa2d1dGlsLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9wbGF0Zm9ybS4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcG9zaXhwYXRoLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9yZS4qLnB5YyIsCkBAIC0zNjEsNiArMzY4LDcgQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9ybGNvbXBsZXRlci4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcnVucHkuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3NlbGVjdG9ycy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc2h1dGlsLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zaWduYWwuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3NpdGUuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3NyZV9jb21waWxlLioucHljIiwKQEAgLTQwNSwxMCArNDEzLDEwIEBACiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2JsYWtlMi4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fY3J5cHQuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2hhc2hsaWIuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX21kNS4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fc2hhMS4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fc2hhMjU2Liouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19zaGEzLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19zaGExLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19tZDUuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX3NoYTUxMi4qLnNvIgogICAgICAgICBdLAogICAgICAgICAiY2FjaGVkIjogWwpAQCAtNTE5LDE0ICs1MjcsMTIgQEAKICAgICAgICAgXQogICAgIH0sCiAgICAgImRpc3R1dGlscy13aW5kb3dzIjogewotICAgICAgICAiY2FjaGVkIjogW10sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LSouZXhlIgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZGlzdHJpYnV0aW9uIHV0aWxpdGllcyAoV2luZG93cyBpbnN0YWxsZXIgc3R1YnMpIiwKICAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImRpc3R1dGlscyIKKyAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZGlzdHJpYnV0aW9uIHV0aWxpdGllcyAoV2luZG93cyBpbnN0YWxsZXIgc3R1YnMpIgorICAgICAgICAiZmlsZXMiOiBbXSwKKyAgICAgICAgImNhY2hlZCI6IFtdCiAgICAgfSwKICAgICAiZGlzdHV0aWxzIjogewogICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gRGlzdHJpYnV0aW9uIFV0aWxpdGllcyIsCkBAIC01NDEsMTMgKzU0NywxOSBAQAogICAgICJkb2N0ZXN0IjogewogICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZnJhbWV3b3JrIGZvciBydW5uaW5nIGV4YW1wbGVzIGluIGRvY3N0cmluZ3MiLAogICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiYXN5bmNpbyIsCisgICAgICAgICAgICAiY29tcHJlc3Npb24iLAogICAgICAgICAgICAgImNvcmUiLAogICAgICAgICAgICAgImRlYnVnZ2VyIiwKICAgICAgICAgICAgICJkaWZmbGliIiwKKyAgICAgICAgICAgICJpbyIsCiAgICAgICAgICAgICAibG9nZ2luZyIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJudW1iZXJzIiwKICAgICAgICAgICAgICJwcHJpbnQiLAogICAgICAgICAgICAgInNoZWxsIiwKICAgICAgICAgICAgICJzdHJpbmdvbGQiLAorICAgICAgICAgICAgInR5cGluZyIsCiAgICAgICAgICAgICAidW5pdHRlc3QiCiAgICAgICAgIF0sCiAgICAgICAgICJmaWxlcyI6IFsKQEAgLTY0MSw4ICs2NTMsNyBAQAogICAgICAgICAgICAgImNyeXB0IiwKICAgICAgICAgICAgICJtYXRoIiwKICAgICAgICAgICAgICJuZXRjbGllbnQiLAotICAgICAgICAgICAgInNoZWxsIiwKLSAgICAgICAgICAgICJ1bml4YWRtaW4iCisgICAgICAgICAgICAic2hlbGwiCiAgICAgICAgIF0sCiAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fcHlpby5weSIsCkBAIC04NzUsOSArODg2LDcgQEAKICAgICAgICAgICAgICJtYXRoIiwKICAgICAgICAgICAgICJtaW1lIiwKICAgICAgICAgICAgICJuZXRjbGllbnQiLAotICAgICAgICAgICAgInNoZWxsIiwKLSAgICAgICAgICAgICJzdHJpbmdvbGQiLAotICAgICAgICAgICAgInVuaXhhZG1pbiIKKyAgICAgICAgICAgICJzdHJpbmdvbGQiCiAgICAgICAgIF0sCiAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jZ2kucHkiLApAQCAtOTM0LDEyICs5NDMsOCBAQAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3BrZ3V0aWwucHkiCi0gICAgICAgIF0sCi0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcGtndXRpbC4qLnB5YyIKLSAgICAgICAgXQorICAgICAgICAiZmlsZXMiOiBbXSwKKyAgICAgICAgImNhY2hlZCI6IFtdCiAgICAgfSwKICAgICAicGxpc3RsaWIiOiB7CiAgICAgICAgICJzdW1tYXJ5IjogIkdlbmVyYXRlIGFuZCBwYXJzZSBNYWMgT1MgWCAucGxpc3QgZmlsZXMiLApAQCAtOTg4LDggKzk5Myw3IEBACiAgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBpbnRlcmFjdGl2ZSBoZWxwIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIsCi0gICAgICAgICAgICAibmV0Y2xpZW50IiwKLSAgICAgICAgICAgICJwa2d1dGlsIgorICAgICAgICAgICAgIm5ldGNsaWVudCIKICAgICAgICAgXSwKICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgIiR7YmluZGlyfS9weWRvYyoiLApAQCAtMTAxNSwyMiArMTAxOSwxNyBAQAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29tcHJlc3Npb24iLAogICAgICAgICAgICAgImNvcmUiLAotICAgICAgICAgICAgInN0cmluZ29sZCIsCi0gICAgICAgICAgICAidW5peGFkbWluIgorICAgICAgICAgICAgInN0cmluZ29sZCIKICAgICAgICAgXSwKICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NtZC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZm5tYXRjaC5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZ2xvYi5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2hsZXgucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NodXRpbC5weSIKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaGxleC5weSIKICAgICAgICAgXSwKICAgICAgICAgImNhY2hlZCI6IFsKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9jbWQuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2ZubWF0Y2guKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2dsb2IuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3NobGV4LioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zaHV0aWwuKi5weWMiCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc2hsZXguKi5weWMiCiAgICAgICAgIF0KICAgICB9LAogICAgICJzbXRwZCI6IHsKQEAgLTExNTAsMTIgKzExNDksMTcgQEAKICAgICAidW5pdHRlc3QiOiB7CiAgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIiwKICAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImFzeW5jaW8iLAorICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKICAgICAgICAgICAgICJjb3JlIiwKICAgICAgICAgICAgICJkaWZmbGliIiwKKyAgICAgICAgICAgICJpbyIsCiAgICAgICAgICAgICAibG9nZ2luZyIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJudW1iZXJzIiwKICAgICAgICAgICAgICJwcHJpbnQiLAotICAgICAgICAgICAgInNoZWxsIiwKLSAgICAgICAgICAgICJzdHJpbmdvbGQiCisgICAgICAgICAgICAic3RyaW5nb2xkIiwKKyAgICAgICAgICAgICJ0eXBpbmciCiAgICAgICAgIF0sCiAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS91bml0dGVzdCIsCkBAIC0xMTcyLDcgKzExNzYsNiBAQAogICAgICAgICBdLAogICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZ2V0cGFzcy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvZ3JwLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL25pcy4qLnNvIgogICAgICAgICBdLAogICAgICAgICAiY2FjaGVkIjogWwpAQCAtMTE4NSw5ICsxMTg4LDcgQEAKICAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCiAgICAgICAgICAgICAiY29yZSIsCiAgICAgICAgICAgICAibG9nZ2luZyIsCi0gICAgICAgICAgICAic2hlbGwiLAotICAgICAgICAgICAgInN0cmluZ29sZCIsCi0gICAgICAgICAgICAidW5peGFkbWluIgorICAgICAgICAgICAgInN0cmluZ29sZCIKICAgICAgICAgXSwKICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgIiR7YmluZGlyfS9weXZlbnYqIiwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3J1bi1wdGVzdAppbmRleCAzZTQ1ZDM5Li40MDViMDdmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcnVuLXB0ZXN0CkBAIC0xLDMgKzEsMyBAQAogIyEvYmluL3NoCiAKLXB5dGhvbjMgLW0gdGVzdCAtdiB8IHNlZCAtdSAtZSAnL1wuXC5cLiBvay8gcy9eL1BBU1M6IC9nJyAtZSAnL1wuXC5cLiBbRVJST1J8RkFJTF0vIHMvXi9GQUlMOiAvZycgLWUgJy9cLlwuXC4gc2tpcHBlZC8gcy9eL1NLSVA6IC9nJyAtZSAncy8gXC5cLlwuIG9rLy9nJyAtZSAncy8gXC5cLlwuIEVSUk9SLy9nJyAtZSAncy8gXC5cLlwuIEZBSUwvL2cnIC1lICdzLyBcLlwuXC4gc2tpcHBlZC8vZycKK3B5dGhvbjMgLW0gdGVzdCAtdiB8IHNlZCAtdSAtZSAnL1wuXC5cLiBvay8gcy9eL1BBU1M6IC9nJyAtciAtZSAnL1wuXC5cLiAoRVJST1J8RkFJTCkvIHMvXi9GQUlMOiAvZycgLWUgJy9cLlwuXC4gc2tpcHBlZC8gcy9eL1NLSVA6IC9nJyAtZSAncy8gXC5cLlwuIG9rLy9nJyAtZSAncy8gXC5cLlwuIEVSUk9SLy9nJyAtZSAncy8gXC5cLlwuIEZBSUwvL2cnIC1lICdzLyBcLlwuXC4gc2tpcHBlZC8vZycKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zXzMuNy41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy43LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwOTE0ZjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy43LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNDAgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgUHl0aG9uIFByb2dyYW1taW5nIExhbmd1YWdlIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5weXRob24ub3JnIgotTElDRU5TRSA9ICJQU0Z2MiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNDY2MjQyOTg5YmQzM2MxYmQyYjZhNTI2YTc0MjQ5OCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8ke1BWfS9QeXRob24tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9jcmVhdGVfbWFuaWZlc3QzLnB5IFwKLSAgICAgICAgICAgZmlsZTovL2dldF9tb2R1bGVfZGVwczMucHkgXAotICAgICAgICAgICBmaWxlOi8vcHl0aG9uMy1tYW5pZmVzdC5qc29uIFwKLSAgICAgICAgICAgZmlsZTovL2NoZWNrX2J1aWxkX2NvbXBsZXRlbmVzcy5weSBcCi0gICAgICAgICAgIGZpbGU6Ly9jZ2lfcHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtYWRkLXVzci1saWItdGVybWNhcC10by1saW5rZXItZmxhZ3MtdG8tYXZvaWQtLnBhdGNoIFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGsnLCAnJywgJ2ZpbGU6Ly9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2gnLCBkKX0gXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtdXNlLXRoZS1zaGVsbC12ZXJzaW9uLW9mLXB5dGhvbi1jb25maWctdGhhdC13LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3B5dGhvbi1jb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS5wcmUtdXNlLXFlbXUtd3JhcHBlci13aGVuLWdhdGhlcmluZy1wcm9maWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1hcy1sb2NhdGlvbi1mb3Itc2l0ZS1wYWNrYWdlcy1hbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXB5dGhvbjMtdXNlLWNjX2Jhc2VuYW1lLXRvLXJlcGxhY2UtQ0MtZm9yLWNoZWNraW5nLWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1Eb24tdC1kby1ydW50aW1lLXRlc3QtdG8tZ2V0LWZsb2F0LWJ5dGUtb3JkZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1zZXR1cC5weS1wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTGliLXN5c2NvbmZpZy5weS1maXgtYW5vdGhlci1wbGFjZS13aGVyZS1saWItaXMtaGFyZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLWZpeC1Jc3N1ZTM2NDY0LXBhcmFsbGVsLWJ1aWxkLXJhY2UtcHJvYmxlbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJwby0zNjg1Mi1wcm9wZXItZGV0ZWN0aW9uLW9mLW1pcHMtYXJjaGl0ZWN0dXJlLWZvci0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY3Jvc3NweXRob25wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlZm9ybWF0X3N5c2NvbmZpZy5weSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1GTEFHX1JFRi1hbHdheXMtZm9yLWludGVybmVkLXN0cmluZ3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0X2xvY2FsZS5weS1jb3JyZWN0LXRoZS10ZXN0LW91dHB1dC1mb3JtYXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNy1zZXR1cC5weS1kby1ub3QtcmVwb3J0LW1pc3NpbmctZGVwZW5kZW5jaWVzLWZvci1kaXNhLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZGlzdHV0aWxzLXN5c2NvbmZpZy1hcHBlbmQtU1RBR0lOR19MSUJESVItcHl0aG9uLXN5cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8xMi1kaXN0dXRpbHMtcHJlZml4LWlzLWluc2lkZS1zdGFnaW5nLWFyZWEucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbWFpbi5jLWlmLU9FUFlUSE9OM0hPTUUtaXMtc2V0LXVzZS1pbnN0ZWFkLW9mLVBZVEhPTi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA4ZWQ4MDMwYjExODMxMDdjNDhmMjA5MmU3OWE4N2UyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4NWE3NmVhOWYzZDZjNDg1ZWMxNzgwZmNhNGU1MDA3MjVhNGE3YmJjNjNjNzhlYmM0NDE3MGRlOWI2MTlkOTQiCi0KLSMgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54Ci1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbUHBdeXRob24tKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKLQotQ1ZFX1BST0RVQ1QgPSAicHl0aG9uIgotCi1QWVRIT05fTUFKTUlOID0gIjMuNyIKLVBZVEhPTl9CSU5BQkkgPSAiJHtQWVRIT05fTUFKTUlOfW0iCi0KLVMgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHFlbXUgcHRlc3QgbXVsdGlsaWJfaGVhZGVyIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotTVVMVElMSUJfU1VGRklYID0gIiR7QGQuZ2V0VmFyKCdiYXNlX2xpYmRpcicsMSkuc3BsaXQoJy8nKVstMV19IgotCi1BTFRFUk5BVElWRV8ke1BOfS1kZXYgPSAicHl0aG9uMy1jb25maWciCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcHl0aG9uMy1jb25maWddID0gIiR7YmluZGlyfS9weXRob24ke1BZVEhPTl9CSU5BQkl9LWNvbmZpZyIKLUFMVEVSTkFUSVZFX1RBUkdFVFtweXRob24zLWNvbmZpZ10gPSAiJHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX0JJTkFCSX0tY29uZmlnLSR7TVVMVElMSUJfU1VGRklYfSIKLQotCi1ERVBFTkRTID0gImJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSBsaWJmZmkgYnppcDIgb3BlbnNzbCBzcWxpdGUzIHpsaWIgdmlydHVhbC9saWJpbnRsIHh6IHZpcnR1YWwvY3J5cHQgdXRpbC1saW51eCBsaWJ0aXJwYyBsaWJuc2wyIgotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBweXRob24zLW5hdGl2ZSIKLURFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgcHl0aG9uMy1uYXRpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICIgLS13aXRob3V0LWVuc3VyZXBpcCAtLWVuYWJsZS1zaGFyZWQiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS1iaW5kaXI9JHtiaW5kaXJ9LyR7UE59IgotCi1leHBvcnQgQ1JPU1NQWVRIT05QQVRIPSIke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8iCi0KLUVYVFJBTkFUSVZFUEFUSCArPSAicHl0aG9uMy1uYXRpdmUiCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTID0gIiBcCi0gICAgICAgICAgICAgICAgYWNfY3ZfZmlsZV9fZGV2X3B0bXg9eWVzIFwKLSAgICAgICAgICAgICAgICBhY19jdl9maWxlX19kZXZfcHRjPW5vIFwKLSAgICAgICAgICAgICAgICBhY19jdl93b3JraW5nX3R6c2V0PXllcyBcCi0iCi1weXRob24oKSB7Ci0gICAgIyBQR08gY3VycmVudGx5IGNhdXNlcyBidWlsZHMgdG8gbm90IGJlIHJlcHJvZHVjaWJsZSwgc28gZGlzYWJsZSBpdCBmb3IKLSAgICAjIG5vdy4gU2VlIFlPQ1RPICMxMzQwNwotICAgIGlmIGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3FlbXUtdXNlcm1vZGUnLCBUcnVlLCBGYWxzZSwgZCkgYW5kIGQuZ2V0VmFyKCdCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMnKSAhPSAnMSc6Ci0gICAgICAgIGQuc2V0VmFyKCdQQUNLQUdFQ09ORklHX1BHTycsICdwZ28nKQotICAgIGVsc2U6Ci0gICAgICAgIGQuc2V0VmFyKCdQQUNLQUdFQ09ORklHX1BHTycsICcnKQotfQotCi1QQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gInJlYWRsaW5lICR7UEFDS0FHRUNPTkZJR19QR099IGdkYm0iCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA/Pz0gInJlYWRsaW5lIGdkYm0iCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA/Pz0gInJlYWRsaW5lIGdkYm0iCi1QQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICIsLHJlYWRsaW5lIgotIyBVc2UgcHJvZmlsZSBndWlkZWQgb3B0aW1pc2F0aW9uIGJ5IHJ1bm5pbmcgUHlCZW5jaCBpbnNpZGUgcWVtdS11c2VyCi1QQUNLQUdFQ09ORklHW3Bnb10gPSAiLS1lbmFibGUtb3B0aW1pemF0aW9ucywscWVtdS1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW3RrXSA9ICIsLHRrIgotUEFDS0FHRUNPTkZJR1tnZGJtXSA9ICIsLGdkYm0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICBta2RpciAtcCAke0J9L01vZHVsZXMKLSAgICBjYXQgPiAke0J9L01vZHVsZXMvU2V0dXAubG9jYWwgPDwgRU9GCi0qZGlzYWJsZWQqCi0ke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdnZGJtJywgJycsICdfZ2RibSBfZGJtJywgZCl9Ci0ke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyZWFkbGluZScsICcnLCAncmVhZGxpbmUnLCBkKX0KLUVPRgotfQotCi1DUFBGTEFHU19hcHBlbmQgPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0vbmN1cnNlc3cgLUkke1NUQUdJTkdfSU5DRElSfS91dWlkIgotCi1FWFRSQV9PRU1BS0UgPSAnXAotICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0gIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgTElCPSR7YmFzZWxpYn0gXAotJwotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BnbycsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgICAgICAgICAgcWVtdV9iaW5hcnk9IiR7QHFlbXVfd3JhcHBlcl9jbWRsaW5lKGQsICcke1NUQUdJTkdfRElSX1RBUkdFVH0nLCBbJyR7Qn0nLCAnJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9J10pfSIKLSAgICAgICAgICAgICAgICBjYXQgPnBnby13cmFwcGVyIDw8RU9GCi0jIS9iaW4vc2gKLWNkICR7Qn0KLSRxZW11X2JpbmFyeSAiXCRAIgotRU9GCi0gICAgICAgICAgICAgICAgY2htb2QgK3ggcGdvLXdyYXBwZXIKLSAgICAgICAgZmkKLX0KLQotZG9faW5zdGFsbF9wcmVwZW5kKCkgewotICAgICAgICAke1dPUktESVJ9L2NoZWNrX2J1aWxkX2NvbXBsZXRlbmVzcy5weSAke1R9L2xvZy5kb19jb21waWxlCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAgICAgb2VfbXVsdGlsaWJfaGVhZGVyIHB5dGhvbiR7UFlUSE9OX0JJTkFCSX0vcHljb25maWcuaAotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgICAgICMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcHl0aG9uCi0gICAgICAgIGZvciBQWVRIU0NSSVBUIGluIGBncmVwIC1ySWwgJHtiaW5kaXJ9LyR7UE59L3B5dGhvbiAke0R9JHtiaW5kaXJ9LyR7UE59YDsgZG8KLSAgICAgICAgICAgICAgICBzZWQgLWkgLWUgJzFzfF4jIS4qfCMhL3Vzci9iaW4vZW52IHB5dGhvbjN8JyAkUFlUSFNDUklQVAotICAgICAgICBkb25lCi0gICAgICAgICMgQWRkIGEgc3ltbGluayB0byB0aGUgbmF0aXZlIFB5dGhvbiBzbyB0aGF0IHNjcmlwdHMgY2FuIGp1c3QgaW52b2tlCi0gICAgICAgICMgIm5hdGl2ZXB5dGhvbiIgYW5kIGdldCB0aGUgcmlnaHQgb25lIHdpdGhvdXQgbmVlZGluZyBhYnNvbHV0ZSBwYXRocwotICAgICAgICAjICh0aGVzZSBvZnRlbiBlbmQgdXAgdG9vIGxvbmcgZm9yIHRoZSAjISBwYXJzZXIgaW4gdGhlIGtlcm5lbCBhcyB0aGUKLSAgICAgICAgIyBidWZmZXIgaXMgMTI4IGJ5dGVzIGxvbmcpLgotICAgICAgICBsbiAtcyBweXRob24zLW5hdGl2ZS9weXRob24zICR7RH0ke2JpbmRpcn0vbmF0aXZlcHl0aG9uMwotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgICAgbWtkaXIgLXAgJHtEfSR7bGliZGlyfS9weXRob24tc3lzY29uZmlnZGF0YQotICAgICAgICBzeXNjb25maWdmaWxlPWBmaW5kICR7RH0gLW5hbWUgX3N5c2NvbmZpZyoucHlgCi0gICAgICAgIGNwICRzeXNjb25maWdmaWxlICR7RH0ke2xpYmRpcn0vcHl0aG9uLXN5c2NvbmZpZ2RhdGEvX3N5c2NvbmZpZ2RhdGEucHkKLQotICAgICAgICBzZWQgLWkgIFwKLSAgICAgICAgICAgICAgICAtZSAicyxeICdMSUJESVInLiosICdMSUJESVInOiAnJHtTVEFHSU5HX0xJQkRJUn0nXCwsZyIgXAotICAgICAgICAgICAgICAgIC1lICJzLF4gJ0lOQ0xVREVESVInLiosICdJTkNMVURFRElSJzogJyR7U1RBR0lOR19JTkNESVJ9J1wsLGciIFwKLSAgICAgICAgICAgICAgICAtZSAicyxeICdDT05GSU5DTFVERURJUicuKiwgJ0NPTkZJTkNMVURFRElSJzogJyR7U1RBR0lOR19JTkNESVJ9J1wsLGciIFwKLSAgICAgICAgICAgICAgICAtZSAiL14gJ0lOQ0xESVJTVE9NQUtFJy97TjsgcywvdXNyL2luY2x1ZGUsJHtTVEFHSU5HX0lOQ0RJUn0sZ30iIFwKLSAgICAgICAgICAgICAgICAtZSAiL14gJ0lOQ0xVREVQWScvcywvdXNyL2luY2x1ZGUsJHtTVEFHSU5HX0lOQ0RJUn0sZyIgXAotICAgICAgICAgICAgICAgICR7RH0ke2xpYmRpcn0vcHl0aG9uLXN5c2NvbmZpZ2RhdGEvX3N5c2NvbmZpZ2RhdGEucHkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKLSAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0gT0VQWVRIT04zSE9NRT0nJHtwcmVmaXh9JyBURVJNSU5GT19ESVJTPScke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbycgUFlUSE9OTk9VU0VSU0lURT0nMScKLX0KLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gIk1ha2VmaWxlIF9zeXNjb25maWdkYXRhLnB5IgotUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJweV9wYWNrYWdlX3ByZXByb2Nlc3MiCi0KLXB5X3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7Ci0gICAgICAgICMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lIHBhdGhzIGluIHRhcmdldCBNYWtlZmlsZSBhbmQgX3N5c2NvbmZpZ2RhdGEKLSAgICAgICAgc2VkIC1pIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIC1lIHM6Jy0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCi0gICAgICAgICAgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAotICAgICAgICAgICAgICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCi0gICAgICAgICAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0gICAgICAgICAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKLSAgICAgICAgICAgICAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKLSAgICAgICAgICAgICAgICAke1BLR0R9LyR7cHJlZml4fS9saWIvcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0qL01ha2VmaWxlIFwKLSAgICAgICAgICAgICAgICAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhKi5weSBcCi0gICAgICAgICAgICAgICAgJHtQS0dEfS8ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fQklOQUJJfS1jb25maWcKLQotICAgICAgICAjIFJlZm9ybWF0IF9zeXNjb25maWdkYXRhIGFmdGVyIG1vZGlmeWluZyBpdCBzbyB0aGF0IGl0IHJlbWFpbnMKLSAgICAgICAgIyByZXByb2R1Y2libGUKLSAgICAgICAgZm9yIGMgaW4gJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YSoucHk7IGRvCi0gICAgICAgICAgICBweXRob24zICR7V09SS0RJUn0vcmVmb3JtYXRfc3lzY29uZmlnLnB5ICRjCi0gICAgICAgIGRvbmUKLQotICAgICAgICAjIFJlY29tcGlsZSBfc3lzY29uZmlnZGF0YSBhZnRlciBtb2RpZnlpbmcgaXQKLSAgICAgICAgY2QgJHtQS0dEfQotICAgICAgICBzeXNjb25maWdmaWxlPWBmaW5kIC4gLW5hbWUgX3N5c2NvbmZpZ2RhdGFfKi5weWAKLSAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAotICAgICAgICAgICAgIC1jICJmcm9tIHB5X2NvbXBpbGUgaW1wb3J0IGNvbXBpbGU7IGNvbXBpbGUoJyRzeXNjb25maWdmaWxlJykiCi0gICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKLSAgICAgICAgICAgICAtYyAiZnJvbSBweV9jb21waWxlIGltcG9ydCBjb21waWxlOyBjb21waWxlKCckc3lzY29uZmlnZmlsZScsIG9wdGltaXplPTEpIgotICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0gICAgICAgICAgICAgLWMgImZyb20gcHlfY29tcGlsZSBpbXBvcnQgY29tcGlsZTsgY29tcGlsZSgnJHN5c2NvbmZpZ2ZpbGUnLCBvcHRpbWl6ZT0yKSIKLSAgICAgICAgY2QgLQotCi0gICAgICAgIG12ICR7UEtHRH0vJHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX0JJTkFCSX0tY29uZmlnICR7UEtHRH0vJHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX0JJTkFCSX0tY29uZmlnLSR7TVVMVElMSUJfU1VGRklYfQotICAgICAgICAKLSAgICAgICAgI1JlbW92ZSB0aGUgdW5uZWVkZWQgY29weSBvZiB0YXJnZXQgc3lzY29uZmlnIGRhdGEKLSAgICAgICAgcm0gLXJmICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbi1zeXNjb25maWdkYXRhCi19Ci0KLSMgV2Ugd2FudCBieXRlY29kZSBwcmVjb21waWxlZCAucHkgZmlsZXMgKC5weWMncykgYnkgZGVmYXVsdAotIyBidXQgdGhlIHVzZXIgbWF5IHNldCBpdCBvbiB0aGVpciBvd24gY29uZgotSU5DTFVERV9QWUNTID89ICIxIgotCi1weXRob24oKXsKLSAgICBpbXBvcnQgY29sbGVjdGlvbnMsIGpzb24KLQotICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdUSElTRElSJyksICdweXRob24zJywgJ3B5dGhvbjMtbWFuaWZlc3QuanNvbicpCi0gICAgIyBUaGlzIHB5dGhvbiBjaGFuZ2VzIHRoZSBkYXRhc3RvcmUgYmFzZWQgb24gdGhlIGNvbnRlbnRzIG9mIGEgZmlsZSwgc28gbWFyawotICAgICMgdGhhdCBkZXBlbmRlbmN5LgotICAgIGJiLnBhcnNlLm1hcmtfZGVwZW5kZW5jeShkLCBmaWxlbmFtZSkKLQotICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgbWFuaWZlc3RfZmlsZToKLSAgICAgICAgbWFuaWZlc3Rfc3RyID0gIG1hbmlmZXN0X2ZpbGUucmVhZCgpCi0gICAgICAgIGpzb25fc3RhcnQgPSBtYW5pZmVzdF9zdHIuZmluZCgnIyBFT0MnKSArIDYKLSAgICAgICAgbWFuaWZlc3RfZmlsZS5zZWVrKGpzb25fc3RhcnQpCi0gICAgICAgIG1hbmlmZXN0X3N0ciA9IG1hbmlmZXN0X2ZpbGUucmVhZCgpCi0gICAgICAgIHB5dGhvbl9tYW5pZmVzdCA9IGpzb24ubG9hZHMobWFuaWZlc3Rfc3RyLCBvYmplY3RfcGFpcnNfaG9vaz1jb2xsZWN0aW9ucy5PcmRlcmVkRGljdCkKLQotICAgICMgRmlyc3Qgc2V0IFJQUk9WSURFUyBmb3IgLW5hdGl2ZSBjYXNlCi0gICAgIyBIYXJkY29kZWQgc2luY2UgaXQgY2FudCBiZSBweXRob24zLW5hdGl2ZS1mb28sIHNob3VsZCBiZSBweXRob24zLWZvby1uYXRpdmUKLSAgICBwbiA9ICdweXRob24zJwotICAgIHJwcm92aWRlcyA9IGQuZ2V0VmFyKCdSUFJPVklERVMnKS5zcGxpdCgpCi0KLSAgICBmb3Iga2V5IGluIHB5dGhvbl9tYW5pZmVzdDoKLSAgICAgICAgcHlwYWNrYWdlID0gcG4gKyAnLScgKyBrZXkgKyAnLW5hdGl2ZScKLSAgICAgICAgaWYgcHlwYWNrYWdlIG5vdCBpbiBycHJvdmlkZXM6Ci0gICAgICAgICAgICAgIHJwcm92aWRlcy5hcHBlbmQocHlwYWNrYWdlKQotCi0gICAgZC5zZXRWYXIoJ1JQUk9WSURFU19jbGFzcy1uYXRpdmUnLCAnICcuam9pbihycHJvdmlkZXMpKQotCi0gICAgIyBUaGVuIHdvcmsgb24gdGhlIHRhcmdldAotICAgIGluY2x1ZGVfcHljcyA9IGQuZ2V0VmFyKCdJTkNMVURFX1BZQ1MnKQotCi0gICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCi0gICAgcG4gPSBkLmdldFZhcignUE4nKQotCi0gICAgbmV3cGFja2FnZXM9W10KLSAgICBmb3Iga2V5IGluIHB5dGhvbl9tYW5pZmVzdDoKLSAgICAgICAgcHlwYWNrYWdlID0gcG4gKyAnLScgKyBrZXkKLQotICAgICAgICBpZiBweXBhY2thZ2Ugbm90IGluIHBhY2thZ2VzOgotICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHByZXBlbmQsIG90aGVyd2lzZSBweXRob24tbWlzYyBnZXRzIGV2ZXJ5dGhpbmcKLSAgICAgICAgICAgICMgc28gd2UgdXNlIGEgbmV3IHZhcmlhYmxlCi0gICAgICAgICAgICBuZXdwYWNrYWdlcy5hcHBlbmQocHlwYWNrYWdlKQotCi0gICAgICAgICMgIkJ1aWxkIiBweXRob24ncyBtYW5pZmVzdCBGSUxFUywgUkRFUEVORFMgYW5kIFNVTU1BUlkKLSAgICAgICAgZC5zZXRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcnKQotICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106Ci0gICAgICAgICAgICBkLmFwcGVuZFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJyAnICsgdmFsdWUpCi0KLSAgICAgICAgIyBBZGQgY2FjaGVkIGZpbGVzCi0gICAgICAgIGlmIGluY2x1ZGVfcHljcyA9PSAnMSc6Ci0gICAgICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ2NhY2hlZCddOgotICAgICAgICAgICAgICAgICAgICBkLmFwcGVuZFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJyAnICsgdmFsdWUpCi0KLSAgICAgICAgZm9yIHZhbHVlIGluIHB5dGhvbl9tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddOgotICAgICAgICAgICAgIyBNYWtlIGl0IHdvcmsgd2l0aCBvciB3aXRob3V0ICRQTgotICAgICAgICAgICAgaWYgJyR7UE59JyBpbiB2YWx1ZToKLSAgICAgICAgICAgICAgICB2YWx1ZT12YWx1ZS5zcGxpdCgnLScsIDEpWzFdCi0gICAgICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJyArIHB5cGFja2FnZSwgJyAnICsgcG4gKyAnLScgKyB2YWx1ZSkKLQotICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV0uZ2V0KCdycmVjb21tZW5kcycsICgpKToKLSAgICAgICAgICAgIGlmICcke1BOfScgaW4gdmFsdWU6Ci0gICAgICAgICAgICAgICAgdmFsdWU9dmFsdWUuc3BsaXQoJy0nLCAxKVsxXQotICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ1JSRUNPTU1FTkRTXycgKyBweXBhY2thZ2UsICcgJyArIHBuICsgJy0nICsgdmFsdWUpCi0KLSAgICAgICAgZC5zZXRWYXIoJ1NVTU1BUllfJyArIHB5cGFja2FnZSwgcHl0aG9uX21hbmlmZXN0W2tleV1bJ3N1bW1hcnknXSkKLQotICAgICMgUHJlcGVuZGluZyBzbyB0byBhdm9pZCBweXRob24tbWlzYyBnZXR0aW5nIGV2ZXJ5dGhpbmcKLSAgICBwYWNrYWdlcyA9IG5ld3BhY2thZ2VzICsgcGFja2FnZXMKLSAgICBkLnNldFZhcignUEFDS0FHRVMnLCAnICcuam9pbihwYWNrYWdlcykpCi0gICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZXyR7UE59LW1vZHVsZXMnLCAnMScpCi19Ci0KLSMgRmlsZXMgbmVlZGVkIHRvIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdAotCi1kb19jcmVhdGVfbWFuaWZlc3QoKSB7Ci0gICAgIyBUaGlzIHRhc2sgc2hvdWxkIGJlIHJ1biB3aXRoIGV2ZXJ5IG5ldyByZWxlYXNlIG9mIFB5dGhvbi4KLSAgICAjIFdlIG11c3QgZW5zdXJlIHRoYXQgUEFDS0FHRUNPTkZJRyBlbmFibGVzIGV2ZXJ5dGhpbmcgd2hlbiBjcmVhdGluZwotICAgICMgYSBuZXcgbWFuaWZlc3QsIHRoaXMgaXMgdG8gYmFzZSBvdXIgbmV3IG1hbmlmZXN0IG9uIGEgY29tcGxldGUKLSAgICAjIG5hdGl2ZSBweXRob24gYnVpbGQsIGNvbnRhaW5pbmcgYWxsIGRlcGVuZGVuY2llcywgb3RoZXJ3aXNlIHRoZSB0YXNrCi0gICAgIyB3b250IGJlIGFibGUgdG8gZmluZCB0aGUgcmVxdWlyZWQgZmlsZXMuCi0gICAgIyBlLmcuIEJlcmtlbGV5REIgaXMgYW4gb3B0aW9uYWwgYnVpbGQgZGVwZW5kZW5jeSBzbyBpdCBtYXkgb3IgbWF5IG5vdAotICAgICMgYmUgcHJlc2VudCwgd2UgbXVzdCBlbnN1cmUgaXQgaXMuCi0KLSAgICBjZCAke1dPUktESVJ9Ci0gICAgIyBUaGlzIG5lZWRzIHRvIGJlIGV4ZWN1dGVkIGJ5IHB5dGhvbi1uYXRpdmUgYW5kIE5PVCBieSBIT1NUJ3MgcHl0aG9uCi0gICAgbmF0aXZlcHl0aG9uMyBjcmVhdGVfbWFuaWZlc3QzLnB5ICR7UFlUSE9OX01BSk1JTn0KLSAgICBjcCBweXRob24zLW1hbmlmZXN0Lmpzb24ubmV3ICR7VEhJU0RJUn0vcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24KLX0KLQotIyBiaXRiYWtlIHB5dGhvbiAtYyBjcmVhdGVfbWFuaWZlc3QKLWFkZHRhc2sgZG9fY3JlYXRlX21hbmlmZXN0Ci0KLSMgTWFrZSBzdXJlIHdlIGhhdmUgbmF0aXZlIHB5dGhvbiByZWFkeSB3aGVuIHdlIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdAotZG9fY3JlYXRlX21hbmlmZXN0W2RlcGVuZHNdICs9ICIke1BOfTpkb19wcmVwYXJlX3JlY2lwZV9zeXNyb290IgotZG9fY3JlYXRlX21hbmlmZXN0W2RlcGVuZHNdICs9ICIke1BOfTpkb19wYXRjaCIKLQotIyBtYW51YWwgZGVwZW5kZW5jeSBhZGRpdGlvbnMKLVJSRUNPTU1FTkRTXyR7UE59LWNvcmVfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgbmF0aXZlc2RrLXB5dGhvbjMtbW9kdWxlcyIKLVJSRUNPTU1FTkRTXyR7UE59LWNyeXB0X2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIG9wZW5zc2wgY2EtY2VydGlmaWNhdGVzIgotUlJFQ09NTUVORFNfJHtQTn0tY3J5cHRfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgb3BlbnNzbCBjYS1jZXJ0aWZpY2F0ZXMiCi0KLSMgRm9yIGhpc3RvcmljYWwgcmVhc29ucyBQTiBpcyBlbXB0eSBhbmQgcHJvdmlkZWQgYnkgcHl0aG9uMy1tb2R1bGVzCi1GSUxFU18ke1BOfSA9ICIiCi1SUFJPVklERVNfJHtQTn0tbW9kdWxlcyA9ICIke1BOfSIKLQotRklMRVNfJHtQTn0tcHlkb2MgKz0gIiR7YmluZGlyfS9weWRvYyR7UFlUSE9OX01BSk1JTn0gJHtiaW5kaXJ9L3B5ZG9jMyIKLUZJTEVTXyR7UE59LWlkbGUgKz0gIiR7YmluZGlyfS9pZGxlMyAke2JpbmRpcn0vaWRsZSR7UFlUSE9OX01BSk1JTn0iCi0KLSMgcHJvdmlkZSBweXRob24tcHl2ZW52IGZyb20gcHl0aG9uMy12ZW52Ci1SUFJPVklERVNfJHtQTn0tdmVudiArPSAicHl0aG9uMy1weXZlbnYiCi0KLSMgcGFja2FnZSBsaWJweXRob24zCi1QQUNLQUdFUyA9KyAibGlicHl0aG9uMyBsaWJweXRob24zLXN0YXRpY2RldiIKLUZJTEVTX2xpYnB5dGhvbjMgPSAiJHtsaWJkaXJ9L2xpYnB5dGhvbiouc28uKiIKLUZJTEVTX2xpYnB5dGhvbjMtc3RhdGljZGV2ICs9ICIke3ByZWZpeH0vbGliL3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX0JJTkFCSX0tKi9saWJweXRob24ke1BZVEhPTl9CSU5BQkl9LmEiCi1JTlNBTkVfU0tJUF8ke1BOfS1kZXYgKz0gImRldi1lbGYiCi0KLSMgY2F0Y2ggYWxsIHRoZSByZXN0ICh1bnNvcnRlZCkKLVBBQ0tBR0VTICs9ICIke1BOfS1taXNjIgotUkRFUEVORFNfJHtQTn0tbWlzYyArPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtZW1haWwgcHl0aG9uMy1jb2RlY3MgcHl0aG9uMy1weWRvYyBweXRob24zLXBpY2tsZSBweXRob24zLWF1ZGlvIgotUkRFUEVORFNfJHtQTn0tbW9kdWxlc19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBweXRob24zLW1pc2MiCi1SREVQRU5EU18ke1BOfS1tb2R1bGVzX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIHB5dGhvbjMtbWlzYyIKLUZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0gJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQiCi0KLSMgY2F0Y2ggbWFucGFnZQotUEFDS0FHRVMgKz0gIiR7UE59LW1hbiIKLUZJTEVTXyR7UE59LW1hbiA9ICIke2RhdGFkaXJ9L21hbiIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiJHtQTn0tbW9kdWxlcyAke1BOfS10ZXN0cyB1bnppcCBiemlwMiBsaWJnY2MgdHpkYXRhLWV1cm9wZSBjb3JldXRpbHMgc2VkIgotUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGxvY2FsZS1iYXNlLXRyLXRyLmlzby04ODU5LTkiCi1SREVQRU5EU18ke1BOfS10a2ludGVyICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0aycsICd0ayB0ay1saWInLCAnJywgZCl9IgotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy44LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGExNmZkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy44LjIuYmIKQEAgLTAsMCArMSwzNTIgQEAKK1NVTU1BUlkgPSAiVGhlIFB5dGhvbiBQcm9ncmFtbWluZyBMYW5ndWFnZSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZyIKK0xJQ0VOU0UgPSAiUFNGdjIiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjAzYTZkYmM4MDJlZTg5NjAyMGE0NzE2MWU3NTk2NDIiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vY3JlYXRlX21hbmlmZXN0My5weSBcCisgICAgICAgICAgIGZpbGU6Ly9nZXRfbW9kdWxlX2RlcHMzLnB5IFwKKyAgICAgICAgICAgZmlsZTovL3B5dGhvbjMtbWFuaWZlc3QuanNvbiBcCisgICAgICAgICAgIGZpbGU6Ly9jaGVja19idWlsZF9jb21wbGV0ZW5lc3MucHkgXAorICAgICAgICAgICBmaWxlOi8vY2dpX3B5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWFkZC11c3ItbGliLXRlcm1jYXAtdG8tbGlua2VyLWZsYWdzLXRvLWF2b2lkLS5wYXRjaCBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RrJywgJycsICdmaWxlOi8vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXVzZS10aGUtc2hlbGwtdmVyc2lvbi1vZi1weXRob24tY29uZmlnLXRoYXQtdy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUucHJlLXVzZS1xZW11LXdyYXBwZXItd2hlbi1nYXRoZXJpbmctcHJvZmlsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItYXMtbG9jYXRpb24tZm9yLXNpdGUtcGFja2FnZXMtYW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1weXRob24zLXVzZS1jY19iYXNlbmFtZS10by1yZXBsYWNlLUNDLWZvci1jaGVja2luZy1jLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTGliLXN5c2NvbmZpZy5weS1maXgtYW5vdGhlci1wbGFjZS13aGVyZS1saWItaXMtaGFyZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLWZpeC1Jc3N1ZTM2NDY0LXBhcmFsbGVsLWJ1aWxkLXJhY2UtcHJvYmxlbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJwby0zNjg1Mi1wcm9wZXItZGV0ZWN0aW9uLW9mLW1pcHMtYXJjaGl0ZWN0dXJlLWZvci0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY3Jvc3NweXRob25wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlZm9ybWF0X3N5c2NvbmZpZy5weSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1GTEFHX1JFRi1hbHdheXMtZm9yLWludGVybmVkLXN0cmluZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0X2xvY2FsZS5weS1jb3JyZWN0LXRoZS10ZXN0LW91dHB1dC1mb3JtYXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNy1zZXR1cC5weS1kby1ub3QtcmVwb3J0LW1pc3NpbmctZGVwZW5kZW5jaWVzLWZvci1kaXNhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc2V0dXAucHktcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLWRvLW5vdC1jb21waWxlLS5weWMtaW4tcGFyYWxsZWwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZml4LUxJQlBMLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcHl0aG9uMy1Eby1ub3QtaGFyZGNvZGUtbGliLWZvci1kaXN0dXRpbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1jb25maWd1cmUuYWMtc2V0dXAucHktZG8tbm90LWFkZC1hLWN1cnNlcy1pbmNsdWRlLXBhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnBvLTM5NTAzLUNWRS0yMDIwLTg0OTItRml4LUFic3RyYWN0QmFzaWNBdXRoSGFuZGxlci5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc3R1dGlscy1zeXNjb25maWctYXBwZW5kLVNUQUdJTkdfTElCRElSLXB5dGhvbi1zeXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMTItZGlzdHV0aWxzLXByZWZpeC1pcy1pbnNpZGUtc3RhZ2luZy1hcmVhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtc2VhcmNoLXN5c3RlbS1mb3ItaGVhZGVycy1saWJyYXJpZXMucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlOWQ2ZWJjOTIxODNhMTc3YjhlOGE1OGNhZDViOGQ2NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNjQ2ZTdkYzIzMzM2MmY1OTcxNGM2MTkzMDE3YmIyZDZmN2IzOGQ2YWI0YTBjYjVmYmFjNWMzNmM0ZDg0NWRmIgorCisjIGV4Y2x1ZGUgcHJlLXJlbGVhc2VzIGZvciBib3RoIHB5dGhvbiAyLnggYW5kIDMueAorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiW1BwXXl0aG9uLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCisKK0NWRV9QUk9EVUNUID0gInB5dGhvbiIKKworIyBUaGlzIGlzIG5vdCBleHBsb2l0YWJsZSB3aGVuIGdsaWJjIGhhcyBDVkUtMjAxNi0xMDczOSBmaXhlZC4KK0NWRV9DSEVDS19XSElURUxJU1QgKz0gIkNWRS0yMDE5LTE4MzQ4IgorCitQWVRIT05fTUFKTUlOID0gIjMuOCIKKworUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcWVtdSBwdGVzdCBtdWx0aWxpYl9oZWFkZXIgdXBkYXRlLWFsdGVybmF0aXZlcworCitNVUxUSUxJQl9TVUZGSVggPSAiJHtAZC5nZXRWYXIoJ2Jhc2VfbGliZGlyJywxKS5zcGxpdCgnLycpWy0xXX0iCisKK0FMVEVSTkFUSVZFXyR7UE59LWRldiA9ICJweXRob24zLWNvbmZpZyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtweXRob24zLWNvbmZpZ10gPSAiJHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0tY29uZmlnIgorQUxURVJOQVRJVkVfVEFSR0VUW3B5dGhvbjMtY29uZmlnXSA9ICIke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS1jb25maWctJHtNVUxUSUxJQl9TVUZGSVh9IgorCisKK0RFUEVORFMgPSAiYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIGxpYmZmaSBiemlwMiBvcGVuc3NsIHNxbGl0ZTMgemxpYiB2aXJ0dWFsL2xpYmludGwgeHogdmlydHVhbC9jcnlwdCB1dGlsLWxpbnV4IGxpYnRpcnBjIGxpYm5zbDIiCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHB5dGhvbjMtbmF0aXZlIgorREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBweXRob24zLW5hdGl2ZSIKKworRVhUUkFfT0VDT05GID0gIiAtLXdpdGhvdXQtZW5zdXJlcGlwIC0tZW5hYmxlLXNoYXJlZCIKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLWJpbmRpcj0ke2JpbmRpcn0vJHtQTn0iCisKK2V4cG9ydCBDUk9TU1BZVEhPTlBBVEg9IiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLyIKKworRVhUUkFOQVRJVkVQQVRIICs9ICJweXRob24zLW5hdGl2ZSIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiIFwKKyAgICAgICAgICAgICAgICBhY19jdl9maWxlX19kZXZfcHRteD15ZXMgXAorICAgICAgICAgICAgICAgIGFjX2N2X2ZpbGVfX2Rldl9wdGM9bm8gXAorICAgICAgICAgICAgICAgIGFjX2N2X3dvcmtpbmdfdHpzZXQ9eWVzIFwKKyIKK3B5dGhvbigpIHsKKyAgICAjIFBHTyBjdXJyZW50bHkgY2F1c2VzIGJ1aWxkcyB0byBub3QgYmUgcmVwcm9kdWNpYmxlLCBzbyBkaXNhYmxlIGl0IGZvcgorICAgICMgbm93LiBTZWUgWU9DVE8gIzEzNDA3CisgICAgaWYgYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAncWVtdS11c2VybW9kZScsIFRydWUsIEZhbHNlLCBkKSBhbmQgZC5nZXRWYXIoJ0JVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFUycpICE9ICcxJzoKKyAgICAgICAgZC5zZXRWYXIoJ1BBQ0tBR0VDT05GSUdfUEdPJywgJ3BnbycpCisgICAgZWxzZToKKyAgICAgICAgZC5zZXRWYXIoJ1BBQ0tBR0VDT05GSUdfUEdPJywgJycpCit9CisKK1BBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAicmVhZGxpbmUgJHtQQUNLQUdFQ09ORklHX1BHT30gZ2RibSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID8/PSAicmVhZGxpbmUgZ2RibSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID8/PSAicmVhZGxpbmUgZ2RibSIKK1BBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIiwscmVhZGxpbmUiCisjIFVzZSBwcm9maWxlIGd1aWRlZCBvcHRpbWlzYXRpb24gYnkgcnVubmluZyBQeUJlbmNoIGluc2lkZSBxZW11LXVzZXIKK1BBQ0tBR0VDT05GSUdbcGdvXSA9ICItLWVuYWJsZS1vcHRpbWl6YXRpb25zLCxxZW11LW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbdGtdID0gIiwsdGsiCitQQUNLQUdFQ09ORklHW2dkYm1dID0gIiwsZ2RibSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgIG1rZGlyIC1wICR7Qn0vTW9kdWxlcworICAgIGNhdCA+ICR7Qn0vTW9kdWxlcy9TZXR1cC5sb2NhbCA8PCBFT0YKKypkaXNhYmxlZCoKKyR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dkYm0nLCAnJywgJ19nZGJtIF9kYm0nLCBkKX0KKyR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3JlYWRsaW5lJywgJycsICdyZWFkbGluZScsIGQpfQorRU9GCit9CisKK0NQUEZMQUdTX2FwcGVuZCA9ICIgLUkke1NUQUdJTkdfSU5DRElSfS9uY3Vyc2VzdyAtSSR7U1RBR0lOR19JTkNESVJ9L3V1aWQiCisKK0VYVFJBX09FTUFLRSA9ICdcCisgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICBMSUI9JHtiYXNlbGlifSBcCisnCisKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncGdvJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgICAgICAgICBxZW11X2JpbmFyeT0iJHtAcWVtdV93cmFwcGVyX2NtZGxpbmUoZCwgJyR7U1RBR0lOR19ESVJfVEFSR0VUfScsIFsnJHtCfScsICcke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0nXSl9IgorICAgICAgICAgICAgICAgIGNhdCA+cGdvLXdyYXBwZXIgPDxFT0YKKyMhL2Jpbi9zaAorY2QgJHtCfQorJHFlbXVfYmluYXJ5ICJcJEAiCitFT0YKKyAgICAgICAgICAgICAgICBjaG1vZCAreCBwZ28td3JhcHBlcgorICAgICAgICBmaQorfQorCitkb19pbnN0YWxsX3ByZXBlbmQoKSB7CisgICAgICAgICR7V09SS0RJUn0vY2hlY2tfYnVpbGRfY29tcGxldGVuZXNzLnB5ICR7VH0vbG9nLmRvX2NvbXBpbGUKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICAgICBvZV9tdWx0aWxpYl9oZWFkZXIgcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9weWNvbmZpZy5oCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICAgICAgIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBweXRob24KKyAgICAgICAgZm9yIFBZVEhTQ1JJUFQgaW4gYGdyZXAgLXJJbCAke2JpbmRpcn0vJHtQTn0vcHl0aG9uICR7RH0ke2JpbmRpcn0vJHtQTn1gOyBkbworICAgICAgICAgICAgICAgIHNlZCAtaSAtZSAnMXN8XiMhLip8IyEvdXNyL2Jpbi9lbnYgcHl0aG9uM3wnICRQWVRIU0NSSVBUCisgICAgICAgIGRvbmUKKyAgICAgICAgIyBBZGQgYSBzeW1saW5rIHRvIHRoZSBuYXRpdmUgUHl0aG9uIHNvIHRoYXQgc2NyaXB0cyBjYW4ganVzdCBpbnZva2UKKyAgICAgICAgIyAibmF0aXZlcHl0aG9uIiBhbmQgZ2V0IHRoZSByaWdodCBvbmUgd2l0aG91dCBuZWVkaW5nIGFic29sdXRlIHBhdGhzCisgICAgICAgICMgKHRoZXNlIG9mdGVuIGVuZCB1cCB0b28gbG9uZyBmb3IgdGhlICMhIHBhcnNlciBpbiB0aGUga2VybmVsIGFzIHRoZQorICAgICAgICAjIGJ1ZmZlciBpcyAxMjggYnl0ZXMgbG9uZykuCisgICAgICAgIGxuIC1zIHB5dGhvbjMtbmF0aXZlL3B5dGhvbjMgJHtEfSR7YmluZGlyfS9uYXRpdmVweXRob24zCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICAgICBta2RpciAtcCAke0R9JHtsaWJkaXJ9L3B5dGhvbi1zeXNjb25maWdkYXRhCisgICAgICAgIHN5c2NvbmZpZ2ZpbGU9YGZpbmQgJHtEfSAtbmFtZSBfc3lzY29uZmlnKi5weWAKKyAgICAgICAgY3AgJHN5c2NvbmZpZ2ZpbGUgJHtEfSR7bGliZGlyfS9weXRob24tc3lzY29uZmlnZGF0YS9fc3lzY29uZmlnZGF0YS5weQorCisgICAgICAgIHNlZCAtaSAgXAorICAgICAgICAgICAgICAgIC1lICJzLF4gJ0xJQkRJUicuKiwgJ0xJQkRJUic6ICcke1NUQUdJTkdfTElCRElSfSdcLCxnIiBcCisgICAgICAgICAgICAgICAgLWUgInMsXiAnSU5DTFVERURJUicuKiwgJ0lOQ0xVREVESVInOiAnJHtTVEFHSU5HX0lOQ0RJUn0nXCwsZyIgXAorICAgICAgICAgICAgICAgIC1lICJzLF4gJ0NPTkZJTkNMVURFRElSJy4qLCAnQ09ORklOQ0xVREVESVInOiAnJHtTVEFHSU5HX0lOQ0RJUn0nXCwsZyIgXAorICAgICAgICAgICAgICAgIC1lICIvXiAnSU5DTERJUlNUT01BS0UnL3tOOyBzLC91c3IvaW5jbHVkZSwke1NUQUdJTkdfSU5DRElSfSxnfSIgXAorICAgICAgICAgICAgICAgIC1lICIvXiAnSU5DTFVERVBZJy9zLC91c3IvaW5jbHVkZSwke1NUQUdJTkdfSU5DRElSfSxnIiBcCisgICAgICAgICAgICAgICAgJHtEfSR7bGliZGlyfS9weXRob24tc3lzY29uZmlnZGF0YS9fc3lzY29uZmlnZGF0YS5weQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgeworICAgIGNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSBURVJNSU5GT19ESVJTPScke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbycgUFlUSE9OTk9VU0VSU0lURT0nMScKK30KKworU1NUQVRFX1NDQU5fRklMRVMgKz0gIk1ha2VmaWxlIF9zeXNjb25maWdkYXRhLnB5IgorUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJweV9wYWNrYWdlX3ByZXByb2Nlc3MiCisKK3B5X3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CisgICAgICAgICMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lIHBhdGhzIGluIHRhcmdldCBNYWtlZmlsZSBhbmQgX3N5c2NvbmZpZ2RhdGEKKyAgICAgICAgc2VkIC1pIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIC1lIHM6Jy0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCisgICAgICAgICAgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorICAgICAgICAgICAgICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisgICAgICAgICAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisgICAgICAgICAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKyAgICAgICAgICAgICAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKyAgICAgICAgICAgICAgICAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfSovTWFrZWZpbGUgXAorICAgICAgICAgICAgICAgICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEqLnB5IFwKKyAgICAgICAgICAgICAgICAke1BLR0R9LyR7YmluZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59LWNvbmZpZworCisgICAgICAgICMgUmVmb3JtYXQgX3N5c2NvbmZpZ2RhdGEgYWZ0ZXIgbW9kaWZ5aW5nIGl0IHNvIHRoYXQgaXQgcmVtYWlucworICAgICAgICAjIHJlcHJvZHVjaWJsZQorICAgICAgICBmb3IgYyBpbiAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhKi5weTsgZG8KKyAgICAgICAgICAgIHB5dGhvbjMgJHtXT1JLRElSfS9yZWZvcm1hdF9zeXNjb25maWcucHkgJGMKKyAgICAgICAgZG9uZQorCisgICAgICAgICMgUmVjb21waWxlIF9zeXNjb25maWdkYXRhIGFmdGVyIG1vZGlmeWluZyBpdAorICAgICAgICBjZCAke1BLR0R9CisgICAgICAgIHN5c2NvbmZpZ2ZpbGU9YGZpbmQgLiAtbmFtZSBfc3lzY29uZmlnZGF0YV8qLnB5YAorICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCisgICAgICAgICAgICAgLWMgImZyb20gcHlfY29tcGlsZSBpbXBvcnQgY29tcGlsZTsgY29tcGlsZSgnJHN5c2NvbmZpZ2ZpbGUnKSIKKyAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAorICAgICAgICAgICAgIC1jICJmcm9tIHB5X2NvbXBpbGUgaW1wb3J0IGNvbXBpbGU7IGNvbXBpbGUoJyRzeXNjb25maWdmaWxlJywgb3B0aW1pemU9MSkiCisgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKyAgICAgICAgICAgICAtYyAiZnJvbSBweV9jb21waWxlIGltcG9ydCBjb21waWxlOyBjb21waWxlKCckc3lzY29uZmlnZmlsZScsIG9wdGltaXplPTIpIgorICAgICAgICBjZCAtCisKKyAgICAgICAgbXYgJHtQS0dEfS8ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS1jb25maWcgJHtQS0dEfS8ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS1jb25maWctJHtNVUxUSUxJQl9TVUZGSVh9CisgICAgICAgIAorICAgICAgICAjUmVtb3ZlIHRoZSB1bm5lZWRlZCBjb3B5IG9mIHRhcmdldCBzeXNjb25maWcgZGF0YQorICAgICAgICBybSAtcmYgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uLXN5c2NvbmZpZ2RhdGEKK30KKworIyBXZSB3YW50IGJ5dGVjb2RlIHByZWNvbXBpbGVkIC5weSBmaWxlcyAoLnB5YydzKSBieSBkZWZhdWx0CisjIGJ1dCB0aGUgdXNlciBtYXkgc2V0IGl0IG9uIHRoZWlyIG93biBjb25mCitJTkNMVURFX1BZQ1MgPz0gIjEiCisKK3B5dGhvbigpeworICAgIGltcG9ydCBjb2xsZWN0aW9ucywganNvbgorCisgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ1RISVNESVInKSwgJ3B5dGhvbjMnLCAncHl0aG9uMy1tYW5pZmVzdC5qc29uJykKKyAgICAjIFRoaXMgcHl0aG9uIGNoYW5nZXMgdGhlIGRhdGFzdG9yZSBiYXNlZCBvbiB0aGUgY29udGVudHMgb2YgYSBmaWxlLCBzbyBtYXJrCisgICAgIyB0aGF0IGRlcGVuZGVuY3kuCisgICAgYmIucGFyc2UubWFya19kZXBlbmRlbmN5KGQsIGZpbGVuYW1lKQorCisgICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBtYW5pZmVzdF9maWxlOgorICAgICAgICBtYW5pZmVzdF9zdHIgPSAgbWFuaWZlc3RfZmlsZS5yZWFkKCkKKyAgICAgICAganNvbl9zdGFydCA9IG1hbmlmZXN0X3N0ci5maW5kKCcjIEVPQycpICsgNgorICAgICAgICBtYW5pZmVzdF9maWxlLnNlZWsoanNvbl9zdGFydCkKKyAgICAgICAgbWFuaWZlc3Rfc3RyID0gbWFuaWZlc3RfZmlsZS5yZWFkKCkKKyAgICAgICAgcHl0aG9uX21hbmlmZXN0ID0ganNvbi5sb2FkcyhtYW5pZmVzdF9zdHIsIG9iamVjdF9wYWlyc19ob29rPWNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KQorCisgICAgIyBGaXJzdCBzZXQgUlBST1ZJREVTIGZvciAtbmF0aXZlIGNhc2UKKyAgICAjIEhhcmRjb2RlZCBzaW5jZSBpdCBjYW50IGJlIHB5dGhvbjMtbmF0aXZlLWZvbywgc2hvdWxkIGJlIHB5dGhvbjMtZm9vLW5hdGl2ZQorICAgIHBuID0gJ3B5dGhvbjMnCisgICAgcnByb3ZpZGVzID0gZC5nZXRWYXIoJ1JQUk9WSURFUycpLnNwbGl0KCkKKworICAgICMgJHtQTn0tbWlzYy1uYXRpdmUgaXMgbm90IGluIHRoZSBtYW5pZmVzdAorICAgIHJwcm92aWRlcy5hcHBlbmQocG4gKyAnLW1pc2MtbmF0aXZlJykKKworICAgIGZvciBrZXkgaW4gcHl0aG9uX21hbmlmZXN0OgorICAgICAgICBweXBhY2thZ2UgPSBwbiArICctJyArIGtleSArICctbmF0aXZlJworICAgICAgICBpZiBweXBhY2thZ2Ugbm90IGluIHJwcm92aWRlczoKKyAgICAgICAgICAgICAgcnByb3ZpZGVzLmFwcGVuZChweXBhY2thZ2UpCisKKyAgICBkLnNldFZhcignUlBST1ZJREVTX2NsYXNzLW5hdGl2ZScsICcgJy5qb2luKHJwcm92aWRlcykpCisKKyAgICAjIFRoZW4gd29yayBvbiB0aGUgdGFyZ2V0CisgICAgaW5jbHVkZV9weWNzID0gZC5nZXRWYXIoJ0lOQ0xVREVfUFlDUycpCisKKyAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKKyAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCisKKyAgICBuZXdwYWNrYWdlcz1bXQorICAgIGZvciBrZXkgaW4gcHl0aG9uX21hbmlmZXN0OgorICAgICAgICBweXBhY2thZ2UgPSBwbiArICctJyArIGtleQorCisgICAgICAgIGlmIHB5cGFja2FnZSBub3QgaW4gcGFja2FnZXM6CisgICAgICAgICAgICAjIFdlIG5lZWQgdG8gcHJlcGVuZCwgb3RoZXJ3aXNlIHB5dGhvbi1taXNjIGdldHMgZXZlcnl0aGluZworICAgICAgICAgICAgIyBzbyB3ZSB1c2UgYSBuZXcgdmFyaWFibGUKKyAgICAgICAgICAgIG5ld3BhY2thZ2VzLmFwcGVuZChweXBhY2thZ2UpCisKKyAgICAgICAgIyAiQnVpbGQiIHB5dGhvbidzIG1hbmlmZXN0IEZJTEVTLCBSREVQRU5EUyBhbmQgU1VNTUFSWQorICAgICAgICBkLnNldFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJycpCisgICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnICcgKyB2YWx1ZSkKKworICAgICAgICAjIEFkZCBjYWNoZWQgZmlsZXMKKyAgICAgICAgaWYgaW5jbHVkZV9weWNzID09ICcxJzoKKyAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsnY2FjaGVkJ106CisgICAgICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnICcgKyB2YWx1ZSkKKworICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ106CisgICAgICAgICAgICAjIE1ha2UgaXQgd29yayB3aXRoIG9yIHdpdGhvdXQgJFBOCisgICAgICAgICAgICBpZiAnJHtQTn0nIGluIHZhbHVlOgorICAgICAgICAgICAgICAgIHZhbHVlPXZhbHVlLnNwbGl0KCctJywgMSlbMV0KKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcHlwYWNrYWdlLCAnICcgKyBwbiArICctJyArIHZhbHVlKQorCisgICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XS5nZXQoJ3JyZWNvbW1lbmRzJywgKCkpOgorICAgICAgICAgICAgaWYgJyR7UE59JyBpbiB2YWx1ZToKKyAgICAgICAgICAgICAgICB2YWx1ZT12YWx1ZS5zcGxpdCgnLScsIDEpWzFdCisgICAgICAgICAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfJyArIHB5cGFja2FnZSwgJyAnICsgcG4gKyAnLScgKyB2YWx1ZSkKKworICAgICAgICBkLnNldFZhcignU1VNTUFSWV8nICsgcHlwYWNrYWdlLCBweXRob25fbWFuaWZlc3Rba2V5XVsnc3VtbWFyeSddKQorCisgICAgIyBQcmVwZW5kaW5nIHNvIHRvIGF2b2lkIHB5dGhvbi1taXNjIGdldHRpbmcgZXZlcnl0aGluZworICAgIHBhY2thZ2VzID0gbmV3cGFja2FnZXMgKyBwYWNrYWdlcworICAgIGQuc2V0VmFyKCdQQUNLQUdFUycsICcgJy5qb2luKHBhY2thZ2VzKSkKKyAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJHtQTn0tbW9kdWxlcycsICcxJykKKyAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJHtQTn0tcGtndXRpbCcsICcxJykKK30KKworIyBGaWxlcyBuZWVkZWQgdG8gY3JlYXRlIGEgbmV3IG1hbmlmZXN0CisKK2RvX2NyZWF0ZV9tYW5pZmVzdCgpIHsKKyAgICAjIFRoaXMgdGFzayBzaG91bGQgYmUgcnVuIHdpdGggZXZlcnkgbmV3IHJlbGVhc2Ugb2YgUHl0aG9uLgorICAgICMgV2UgbXVzdCBlbnN1cmUgdGhhdCBQQUNLQUdFQ09ORklHIGVuYWJsZXMgZXZlcnl0aGluZyB3aGVuIGNyZWF0aW5nCisgICAgIyBhIG5ldyBtYW5pZmVzdCwgdGhpcyBpcyB0byBiYXNlIG91ciBuZXcgbWFuaWZlc3Qgb24gYSBjb21wbGV0ZQorICAgICMgbmF0aXZlIHB5dGhvbiBidWlsZCwgY29udGFpbmluZyBhbGwgZGVwZW5kZW5jaWVzLCBvdGhlcndpc2UgdGhlIHRhc2sKKyAgICAjIHdvbnQgYmUgYWJsZSB0byBmaW5kIHRoZSByZXF1aXJlZCBmaWxlcy4KKyAgICAjIGUuZy4gQmVya2VsZXlEQiBpcyBhbiBvcHRpb25hbCBidWlsZCBkZXBlbmRlbmN5IHNvIGl0IG1heSBvciBtYXkgbm90CisgICAgIyBiZSBwcmVzZW50LCB3ZSBtdXN0IGVuc3VyZSBpdCBpcy4KKworICAgIGNkICR7V09SS0RJUn0KKyAgICAjIFRoaXMgbmVlZHMgdG8gYmUgZXhlY3V0ZWQgYnkgcHl0aG9uLW5hdGl2ZSBhbmQgTk9UIGJ5IEhPU1QncyBweXRob24KKyAgICBuYXRpdmVweXRob24zIGNyZWF0ZV9tYW5pZmVzdDMucHkgJHtQWVRIT05fTUFKTUlOfQorICAgIGNwIHB5dGhvbjMtbWFuaWZlc3QuanNvbi5uZXcgJHtUSElTRElSfS9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbgorfQorCisjIGJpdGJha2UgcHl0aG9uIC1jIGNyZWF0ZV9tYW5pZmVzdAorYWRkdGFzayBkb19jcmVhdGVfbWFuaWZlc3QKKworIyBNYWtlIHN1cmUgd2UgaGF2ZSBuYXRpdmUgcHl0aG9uIHJlYWR5IHdoZW4gd2UgY3JlYXRlIGEgbmV3IG1hbmlmZXN0Citkb19jcmVhdGVfbWFuaWZlc3RbZGVwZW5kc10gKz0gIiR7UE59OmRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3QiCitkb19jcmVhdGVfbWFuaWZlc3RbZGVwZW5kc10gKz0gIiR7UE59OmRvX3BhdGNoIgorCisjIG1hbnVhbCBkZXBlbmRlbmN5IGFkZGl0aW9ucworUlJFQ09NTUVORFNfJHtQTn0tY29yZV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBuYXRpdmVzZGstcHl0aG9uMy1tb2R1bGVzIgorUlJFQ09NTUVORFNfJHtQTn0tY3J5cHRfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgb3BlbnNzbCBjYS1jZXJ0aWZpY2F0ZXMiCitSUkVDT01NRU5EU18ke1BOfS1jcnlwdF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBvcGVuc3NsIGNhLWNlcnRpZmljYXRlcyIKKworIyBGb3IgaGlzdG9yaWNhbCByZWFzb25zIFBOIGlzIGVtcHR5IGFuZCBwcm92aWRlZCBieSBweXRob24zLW1vZHVsZXMKK0ZJTEVTXyR7UE59ID0gIiIKK1JQUk9WSURFU18ke1BOfS1tb2R1bGVzID0gIiR7UE59IgorCitGSUxFU18ke1BOfS1weWRvYyArPSAiJHtiaW5kaXJ9L3B5ZG9jJHtQWVRIT05fTUFKTUlOfSAke2JpbmRpcn0vcHlkb2MzIgorRklMRVNfJHtQTn0taWRsZSArPSAiJHtiaW5kaXJ9L2lkbGUzICR7YmluZGlyfS9pZGxlJHtQWVRIT05fTUFKTUlOfSIKKworIyBwcm92aWRlIHB5dGhvbi1weXZlbnYgZnJvbSBweXRob24zLXZlbnYKK1JQUk9WSURFU18ke1BOfS12ZW52ICs9ICJweXRob24zLXB5dmVudiIKKworIyBwYWNrYWdlIGxpYnB5dGhvbjMKK1BBQ0tBR0VTID0rICJsaWJweXRob24zIGxpYnB5dGhvbjMtc3RhdGljZGV2IgorRklMRVNfbGlicHl0aG9uMyA9ICIke2xpYmRpcn0vbGlicHl0aG9uKi5zby4qIgorRklMRVNfbGlicHl0aG9uMy1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59LSovbGlicHl0aG9uJHtQWVRIT05fTUFKTUlOfS5hIgorSU5TQU5FX1NLSVBfJHtQTn0tZGV2ICs9ICJkZXYtZWxmIgorCisjIGNhdGNoIGFsbCB0aGUgcmVzdCAodW5zb3J0ZWQpCitQQUNLQUdFUyArPSAiJHtQTn0tbWlzYyIKK1JERVBFTkRTXyR7UE59LW1pc2MgKz0gInB5dGhvbjMtY29yZSBweXRob24zLWVtYWlsIHB5dGhvbjMtY29kZWNzIHB5dGhvbjMtcHlkb2MgcHl0aG9uMy1waWNrbGUgcHl0aG9uMy1hdWRpbyIKK1JERVBFTkRTXyR7UE59LW1vZHVsZXNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgcHl0aG9uMy1taXNjIgorUkRFUEVORFNfJHtQTn0tbW9kdWxlc19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBweXRob24zLW1pc2MiCitGSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59ICR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkIgorCisjIGNhdGNoIG1hbnBhZ2UKK1BBQ0tBR0VTICs9ICIke1BOfS1tYW4iCitGSUxFU18ke1BOfS1tYW4gPSAiJHtkYXRhZGlyfS9tYW4iCisKKyMgU2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTg3NDggYW5kIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzczOTUKK1JERVBFTkRTX2xpYnB5dGhvbjNfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGxpYmdjYyIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gIiR7UE59LW1vZHVsZXMgJHtQTn0tdGVzdHMgdW56aXAgYnppcDIgbGliZ2NjIHR6ZGF0YS1ldXJvcGUgY29yZXV0aWxzIHNlZCIKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBsb2NhbGUtYmFzZS10ci10ci5pc28tODg1OS05IgorUkRFUEVORFNfJHtQTn0tdGtpbnRlciArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGsnLCAndGsgdGstbGliJywgJycsIGQpfSIKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCisKK1JERVBFTkRTXyR7UE59LXRlc3RzX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGJhc2giCitSREVQRU5EU18ke1BOfS10ZXN0c19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBiYXNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbl8yLjcuMTcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI4NTZhNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2NyArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi5pbmMKLQotREVQRU5EUyA9ICJweXRob24tbmF0aXZlIGxpYmZmaSBiemlwMiBnZGJtIG9wZW5zc2wgXAotICAgICAgICAgICByZWFkbGluZSBzcWxpdGUzIHpsaWIgdmlydHVhbC9jcnlwdCIKLQotRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgotRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKLVNSQ19VUkkgKz0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMS11c2UtcHJvcGVyLXRvb2xzLWZvci1jcm9zcy1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMy1maXgtdGtpbnRlci1kZXRlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDYtYXZvaWRfdXNyX2xpYl90ZXJtY2FwX3BhdGhfaW5fbGlua2luZy5wYXRjaCBcCi0gICAgICAgICAgICR7RElTVFJPX1NSQ19VUkl9IFwKLSAgICAgICAgICAgZmlsZTovL211bHRpbGliLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NnaV9weS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zZXR1cF9weV9za2lwX2Nyb3NzX2ltcG9ydF9jaGVjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hZGQtbWQ1bW9kdWxlLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaG9zdF9pbmNsdWRlX2NvbnRhbWluYXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4X2Zvcl91c2luZ19kaWZmZXJlbnRfbGliZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NldHVwdHdlYWtzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NoZWNrLWlmLXRhcmdldC1pcy02NGItbm90LWhvc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2VhcmNoX2RiX2hfaW5faW5jX2RpcnNfYW5kX2F2b2lkX3dhcm5pbmcucGF0Y2ggXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0aycsICcnLCAnZmlsZTovL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCcsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly9hdm9pZF93YXJuaW5nX2Zvcl9zdW5vc19zcGVjaWZpY19tb2R1bGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcHl0aG9uLTIuNy4zLXJlbW92ZS1ic2RiLXJwYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbC1tYWtlaW5zdC1jcmVhdGUtYmluZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VzZV9zeXNyb290X25jdXJzZXNfaW5zdGVhZF9vZl9ob3N0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FkZC1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGVfMi43LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Zsb2F0LWVuZGlhbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXB5dGhvbjItdXNlLWNjX2Jhc2VuYW1lLXRvLXJlcGxhY2UtQ0MtZm9yLWNoZWNraW5nLWMucGF0Y2ggXAotIgotCi1TID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBtdWx0aWxpYl9oZWFkZXIgcHl0aG9uLWRpciBweXRob25uYXRpdmUgcHRlc3QKLQotQ09ORklHVVJFT1BUUyArPSAiIC0td2l0aC1zeXN0ZW0tZmZpICIKLQotRVhUUkFfT0VDT05GICs9ICJhY19jdl9maWxlX19kZXZfcHRteD15ZXMgYWNfY3ZfZmlsZV9fZGV2X3B0Yz1ubyBhY19jdl93b3JraW5nX3R6c2V0PXllcyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImJkYiIKLVBBQ0tBR0VDT05GSUdbYmRiXSA9ICIsLGRiIgotUEFDS0FHRUNPTkZJR1t0a10gPSAiLCx0ayIKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlybSAtZiAke1N9L01ha2VmaWxlLm9yaWcKLSAgICAgICAgYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgICAgICMgcmVnZW5lcmF0ZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWxlcywgYmVjYXVzZSB0aGV5IGRlcGVuZCBvbiBzeXN0ZW0gaGVhZGVycwotICAgICAgICBjZCAke1N9L0xpYi9wbGF0LWxpbnV4MgotICAgICAgICBpbmNsdWRlPSR7U1RBR0lOR19JTkNESVJ9ICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBcCi0gICAgICAgICAgICAgICAgJHtTfS9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vZGxmY24uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbGludXgvY2Ryb20uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbmV0aW5ldC9pbi5oIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9zeXMvdHlwZXMuaAotICAgICAgICBzZWQgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgLWkgKi5weQotICAgICAgICBjZCAtCi0KLQkjIHJlbW92ZSBhbnkgYm9ndXMgTERfTElCUkFSWV9QQVRICi0Jc2VkIC1pIC1lIHMsUlVOU0hBUkVEPS4qLFJVTlNIQVJFRD0sIE1ha2VmaWxlCi0KLQlpZiBbICEgLWYgTWFrZWZpbGUub3JpZyBdOyB0aGVuCi0JCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5vcmlnCi0JZmkKLQlzZWQgLWkgLWUgJ3MjXkxERkxBR1M9LiojTERGTEFHUz0ke0xERkxBR1N9IC1MLiAtTCR7U1RBR0lOR19MSUJESVJ9I2cnIFwKLQkJLWUgJ3MsbGliZGlyPSR7bGliZGlyfSxsaWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxsaWJleGVjZGlyPSR7bGliZXhlY2Rpcn0sbGliZXhlY2Rpcj0ke1NUQUdJTkdfRElSX0hPU1R9JHtsaWJleGVjZGlyfSxnJyBcCi0JCS1lICdzLF5MSUJESVI9LiosTElCRElSPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKLQkJLWUgJ3MsaW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9LGluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQktZSAncyxeSU5DTFVERURJUj0uKixJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKLQkJLWUgJ3MsXkNPTkZJTkNMVURFRElSPS4qLENPTkZJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKLQkJTWFrZWZpbGUKLQkjIHNhdmUgY29weSBvZiBpdCBub3csIGJlY2F1c2UgaWYgd2UgZG8gaXQgaW4gZG9faW5zdGFsbCBhbmQgCi0JIyB0aGVuIGNhbGwgZG9faW5zdGFsbCB0d2ljZSB3ZSBnZXQgTWFrZWZpbGUub3JpZyA9PSBNYWtlZmlsZS5zeXNyb290Ci0JaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLnN5c3Jvb3QKLQotCWV4cG9ydCBDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IgotCWV4cG9ydCBQWVRIT05CVUlMRERJUj0iJHtCfSIKLQotCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIFwKLQkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0JCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAotCQlPUFQ9IiR7Q0ZMQUdTfSIKLX0KLQotZG9faW5zdGFsbCgpIHsKLQkjIG1ha2UgaW5zdGFsbCBuZWVkcyB0aGUgb3JpZ2luYWwgTWFrZWZpbGUsIG9yIG90aGVyd2lzZSB0aGUgaW5jbHVlcyB3b3VsZAotCSMgZ28gdG8gJHtEfSR7U1RBR0lORy4uLn0vLi4uCi0JaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLm9yaWcgTWFrZWZpbGUKLQotCWV4cG9ydCBDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IgotCWV4cG9ydCBQWVRIT05CVUlMRERJUj0iJHtCfSIKLQotCSMgQWZ0ZXIgc3dpenpsaW5nIHRoZSBtYWtlZmlsZSwgd2UgbmVlZCB0byBydW4gdGhlIGJ1aWxkIGFnYWluLgotCSMgaW5zdGFsbCBjYW4gcmFjZSB3aXRoIHRoZSBidWlsZCBzbyB3ZSBoYXZlIHRvIHJ1biB0aGlzIGZpcnN0LCB0aGVuIGluc3RhbGwKLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3BnZW4gXAotCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBcCi0JCUNST1NTUFlUSE9OUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8gXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLQkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCi0JCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9Ci0JCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gXAotCQlDUk9TU1BZVEhPTlBBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvIFwKLQkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0JCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAotCQlERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfSBpbnN0YWxsCi0KLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUuc3lzcm9vdCAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZQotCi0JaWYgWyAtZSAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgXTsgdGhlbgotCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0KLQlmaQotCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIHB5dGhvbiR7UFlUSE9OX01BSk1JTn0vcHljb25maWcuaAotCi0gICAgaWYgWyAteiAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ2JkYicsIGQpfSIgXTsgdGhlbgotICAgICAgICBybSAtcmYgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9ic2RkYgotICAgIGZpCi0KLSAgICAjIFB5dGhvbiAzLnggdmVyc2lvbiBvZiAydG8zIGlzIG5vdyB0aGUgZGVmYXVsdAotICAgIG12ICR7RH0vJHtiaW5kaXJ9LzJ0bzMgJHtEfS8ke2JpbmRpcn0vMnRvMy0ke1BZVEhPTl9NQUpNSU59Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7Ci0JY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9weXRob24yLjcgUFlUSE9OSE9NRT0nJHtwcmVmaXh9JyBURVJNSU5GT19ESVJTPScke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbycgUFlUSE9OTk9VU0VSU0lURT0nMScKLX0KLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gIk1ha2VmaWxlIgotUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJweV9wYWNrYWdlX3ByZXByb2Nlc3MiCi0KLXB5X3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7Ci0JIyBjb3B5IGJhY2sgdGhlIG9sZCBNYWtlZmlsZSB0byBmaXggdGFyZ2V0IHBhY2thZ2UKLQlpbnN0YWxsIC1tIDA2NDQgJHtCfS9NYWtlZmlsZS5vcmlnICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCi0KLQkjIFJlbW92ZSByZWZlcmVuY2VzIHRvIGJ1aWxkbWFjaGluZSBwYXRocyBpbiB0YXJnZXQgTWFrZWZpbGUgYW5kIF9zeXNjb25maWdkYXRhCi0Jc2VkIC1pIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIC1lIHM6Jy0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCi0JCS1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKLQkJLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKLQkJLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0JCS1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCi0JCS1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAotCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZSBcCi0JCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHkKLQkoY2QgJHtQS0dEfTsgcHl0aG9uIC1tIHB5X2NvbXBpbGUgLi8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weSkKLX0KLQotUEFDS0FHRVNfcmVtb3ZlID0gIiR7UE59IgotCi0jIG1hbnVhbCBkZXBlbmRlbmN5IGFkZGl0aW9ucwotUlBST1ZJREVTXyR7UE59LW1vZHVsZXMgPSAiJHtQTn0iCi1SUkVDT01NRU5EU18ke1BOfS1jb3JlX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIG5hdGl2ZXNkay1weXRob24tbW9kdWxlcyIKLVJSRUNPTU1FTkRTXyR7UE59LWNyeXB0ID0gIm9wZW5zc2wiCi0KLSMgcGFja2FnZSBsaWJweXRob24yCi1QQUNLQUdFUyA9KyAibGliJHtCUE59MiIKLUZJTEVTX2xpYiR7QlBOfTIgPSAiJHtsaWJkaXJ9L2xpYnB5dGhvbiouc28uKiIKLQotIyBjYXRjaCBhbGwgdGhlIHJlc3QgKHVuc29ydGVkKQotUEFDS0FHRVMgKz0gIiR7UE59LW1pc2MiCi1GSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IgotUkRFUEVORFNfJHtQTn0tbW9kdWxlcyArPSAiJHtQTn0tbWlzYyIKLQotIyBwdGVzdAotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiJHtQTn0tbW9kdWxlcyAke1BOfS10ZXN0cyB1bnppcCB0emRhdGEtZXVyb3BlIGNvcmV1dGlscyBzZWQiCi1SREVQRU5EU18ke1BOfS10a2ludGVyICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0aycsICd0ayB0ay1saWInLCAnJywgZCl9IgotIyBjYXRjaCBtYW5wYWdlCi1QQUNLQUdFUyArPSAiJHtQTn0tbWFuIgotRklMRVNfJHtQTn0tbWFuID0gIiR7ZGF0YWRpcn0vbWFuIgotCi0jIE5hc3R5IGJ1dCBpZiBiZGIgaXNuJ3QgZW5hYmxlZCB0aGUgcGFja2FnZSB3b24ndCBiZSBnZW5lcmF0ZWQKLVJERVBFTkRTXyR7UE59LW1vZHVsZXNfcmVtb3ZlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JkYicsICcnLCAnJHtQTn0tYnNkZGInLCBkKX0iCi0KLVJERVBFTkRTXyR7UE59LWRldiA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgotCi0jIFdlIHdhbnQgYnl0ZWNvZGUgcHJlY29tcGlsZWQgLnB5IGZpbGVzICgucHljJ3MpIGJ5IGRlZmF1bHQKLSMgYnV0IHRoZSB1c2VyIG1heSBzZXQgaXQgb24gdGhlaXIgb3duIGNvbmYKLQotSU5DTFVERV9QWUNTID89ICIxIgotCi1weXRob24oKXsKLSAgICBpbXBvcnQgY29sbGVjdGlvbnMsIGpzb24KLQotICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdUSElTRElSJyksICdweXRob24nLCAncHl0aG9uMi1tYW5pZmVzdC5qc29uJykKLSAgICAjIFRoaXMgcHl0aG9uIGNoYW5nZXMgdGhlIGRhdGFzdG9yZSBiYXNlZCBvbiB0aGUgY29udGVudHMgb2YgYSBmaWxlLCBzbyBtYXJrCi0gICAgIyB0aGF0IGRlcGVuZGVuY3kuCi0gICAgYmIucGFyc2UubWFya19kZXBlbmRlbmN5KGQsIGZpbGVuYW1lKQotCi0gICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBtYW5pZmVzdF9maWxlOgotICAgICAgICBtYW5pZmVzdF9zdHIgPSAgbWFuaWZlc3RfZmlsZS5yZWFkKCkKLSAgICAgICAganNvbl9zdGFydCA9IG1hbmlmZXN0X3N0ci5maW5kKCcjIEVPQycpICsgNgotICAgICAgICBtYW5pZmVzdF9maWxlLnNlZWsoanNvbl9zdGFydCkKLSAgICAgICAgbWFuaWZlc3Rfc3RyID0gbWFuaWZlc3RfZmlsZS5yZWFkKCkKLSAgICAgICAgcHl0aG9uX21hbmlmZXN0ID0ganNvbi5sb2FkcyhtYW5pZmVzdF9zdHIsIG9iamVjdF9wYWlyc19ob29rPWNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KQotCi0gICAgaW5jbHVkZV9weWNzID0gZC5nZXRWYXIoJ0lOQ0xVREVfUFlDUycpCi0KLSAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKLSAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCi0KLSAgICBuZXdwYWNrYWdlcz1bXQotCi0gICAgZm9yIGtleSBpbiBweXRob25fbWFuaWZlc3Q6Ci0gICAgICAgIHB5cGFja2FnZT0gcG4gKyAnLScgKyBrZXkKLQotICAgICAgICBpZiBweXBhY2thZ2Ugbm90IGluIHBhY2thZ2VzOgotICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHByZXBlbmQsIG90aGVyd2lzZSBweXRob24tbWlzYyBnZXRzIGV2ZXJ5dGhpbmcKLSAgICAgICAgICAgICMgc28gd2UgdXNlIGEgbmV3IHZhcmlhYmxlCi0gICAgICAgICAgICBuZXdwYWNrYWdlcy5hcHBlbmQocHlwYWNrYWdlKQotCi0gICAgICAgICMgIkJ1aWxkIiBweXRob24ncyBtYW5pZmVzdCBGSUxFUywgUkRFUEVORFMgYW5kIFNVTU1BUlkKLSAgICAgICAgZC5zZXRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcnKQotICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106Ci0gICAgICAgICAgICBkLmFwcGVuZFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJyAnICsgdmFsdWUpCi0gICAgICAgICAgICBpZiBpbmNsdWRlX3B5Y3MgPT0gJzEnOgotICAgICAgICAgICAgICAgIGlmIHZhbHVlLmVuZHN3aXRoKCcucHknKToKLSAgICAgICAgICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcgJyArIHZhbHVlICsgJ2MnKQotCi0gICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXToKLSAgICAgICAgICAgICMgTWFrZSBpdCB3b3JrIHdpdGggb3Igd2l0aG91dCAkUE4KLSAgICAgICAgICAgIGlmICcke1BOfScgaW4gdmFsdWU6Ci0gICAgICAgICAgICAgICAgdmFsdWU9dmFsdWUuc3BsaXQoJy0nKVsxXQotICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBweXBhY2thZ2UsICcgJyArIHBuICsgJy0nICsgdmFsdWUpCi0gICAgICAgIGQuc2V0VmFyKCdTVU1NQVJZXycgKyBweXBhY2thZ2UsIHB5dGhvbl9tYW5pZmVzdFtrZXldWydzdW1tYXJ5J10pCi0KLSAgICAjIFByZXBlbmRpbmcgc28gdG8gYXZvaWQgcHl0aG9uLW1pc2MgZ2V0dGluZyBldmVyeXRoaW5nCi0gICAgcGFja2FnZXMgPSBuZXdwYWNrYWdlcyArIHBhY2thZ2VzCi0gICAgZC5zZXRWYXIoJ1BBQ0tBR0VTJywgJyAnLmpvaW4ocGFja2FnZXMpKQotICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzJywgJzEnKQotfQotCi0jIEZpbGVzIG5lZWRlZCB0byBjcmVhdGUgYSBuZXcgbWFuaWZlc3QKLVNSQ19VUkkgKz0gImZpbGU6Ly9jcmVhdGVfbWFuaWZlc3QyLnB5IGZpbGU6Ly9nZXRfbW9kdWxlX2RlcHMyLnB5IGZpbGU6Ly9weXRob24yLW1hbmlmZXN0Lmpzb24iCi0KLWRvX2NyZWF0ZV9tYW5pZmVzdCgpIHsKLSAgICAjIFRoaXMgdGFzayBzaG91bGQgYmUgcnVuIHdpdGggZXZlcnkgbmV3IHJlbGVhc2Ugb2YgUHl0aG9uLgotICAgICMgV2UgbXVzdCBlbnN1cmUgdGhhdCBQQUNLQUdFQ09ORklHIGVuYWJsZXMgZXZlcnl0aGluZyB3aGVuIGNyZWF0aW5nCi0gICAgIyBhIG5ldyBtYW5pZmVzdCwgdGhpcyBpcyB0byBiYXNlIG91ciBuZXcgbWFuaWZlc3Qgb24gYSBjb21wbGV0ZQotICAgICMgbmF0aXZlIHB5dGhvbiBidWlsZCwgY29udGFpbmluZyBhbGwgZGVwZW5kZW5jaWVzLCBvdGhlcndpc2UgdGhlIHRhc2sKLSAgICAjIHdvbnQgYmUgYWJsZSB0byBmaW5kIHRoZSByZXF1aXJlZCBmaWxlcy4KLSAgICAjIGUuZy4gQmVya2VsZXlEQiBpcyBhbiBvcHRpb25hbCBidWlsZCBkZXBlbmRlbmN5IHNvIGl0IG1heSBvciBtYXkgbm90Ci0gICAgIyBiZSBwcmVzZW50LCB3ZSBtdXN0IGVuc3VyZSBpdCBpcy4KLQotICAgIGNkICR7V09SS0RJUn0KLSAgICAjIFRoaXMgbmVlZHMgdG8gYmUgZXhlY3V0ZWQgYnkgcHl0aG9uLW5hdGl2ZSBhbmQgTk9UIGJ5IEhPU1QncyBweXRob24KLSAgICBuYXRpdmVweXRob24gY3JlYXRlX21hbmlmZXN0Mi5weQotICAgIGNwIHB5dGhvbjItbWFuaWZlc3QuanNvbi5uZXcgJHtUSElTRElSfS9weXRob24vcHl0aG9uMi1tYW5pZmVzdC5qc29uCi19Ci0KLSMgYml0YmFrZSBweXRob24gLWMgY3JlYXRlX21hbmlmZXN0Ci1hZGR0YXNrIGRvX2NyZWF0ZV9tYW5pZmVzdAotCi0jIE1ha2Ugc3VyZSB3ZSBoYXZlIG5hdGl2ZSBweXRob24gcmVhZHkgd2hlbiB3ZSBjcmVhdGUgYSBuZXcgbWFuaWZlc3QKLWRvX2NyZWF0ZV9tYW5pZmVzdFtkZXBlbmRzXSArPSAicHl0aG9uOmRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3QiCi1kb19jcmVhdGVfbWFuaWZlc3RbZGVwZW5kc10gKz0gInB5dGhvbjpkb19wYXRjaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1oZWxwZXItbmF0aXZlXzEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1oZWxwZXItbmF0aXZlXzEuMC5iYgppbmRleCAzNzJlZWJkLi4yZmMwNzY2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtaGVscGVyLW5hdGl2ZV8xLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LWhlbHBlci1uYXRpdmVfMS4wLmJiCkBAIC01LDcgKzUsMTAgQEAKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtXT1JLRElSfS90dW5jdGwuYztlbmRsaW5lPTQ7bWQ1PWZmM2EwOTk5NmJjNWZmZjZiYzVkNGUwYjRjMjhmOTk5IgogCi1TUkNfVVJJID0gImZpbGU6Ly90dW5jdGwuYyIKK1NSQ19VUkkgPSAiXAorICAgIGZpbGU6Ly90dW5jdGwuYyBcCisgICAgZmlsZTovL3FlbXUtb2UtYnJpZGdlLWhlbHBlciBcCisgICAgIgogCiBTID0gIiR7V09SS0RJUn0iCiAKQEAgLTE4LDYgKzIxLDggQEAKIGRvX2luc3RhbGwoKSB7CiAJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CiAJaW5zdGFsbCB0dW5jdGwgJHtEfSR7YmluZGlyfS8KKworICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vcWVtdS1vZS1icmlkZ2UtaGVscGVyICR7RH0ke2JpbmRpcn0vCiB9CiAKIERFUEVORFMgKz0gInFlbXUtc3lzdGVtLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1oZWxwZXIvcWVtdS1vZS1icmlkZ2UtaGVscGVyIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LWhlbHBlci9xZW11LW9lLWJyaWRnZS1oZWxwZXIKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjA1N2Q0ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1oZWxwZXIvcWVtdS1vZS1icmlkZ2UtaGVscGVyCkBAIC0wLDAgKzEsMjUgQEAKKyMhIC9iaW4vc2gKKyMgQ29weXJpZ2h0IDIwMjAgR2FybWluIEx0ZC4gb3IgaXRzIHN1YnNpZGlhcmllcworIworIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorIworIyBBdHRlbXB0cyB0byBmaW5kIGFuZCBleGVjIHRoZSBob3N0IHFlbXUtYnJpZGdlLWhlbHBlciBwcm9ncmFtCisKKyMgSWYgdGhlIFFFTVVfQlJJREdFX0hFTFBFUiB2YXJpYWJsZSBpcyBzZXQgYnkgdGhlIHVzZXIsIGV4ZWMgaXQuCitpZiBbIC1uICIkUUVNVV9CUklER0VfSEVMUEVSIiBdOyB0aGVuCisgICAgZXhlYyAiJFFFTVVfQlJJREdFX0hFTFBFUiIgIiRAIgorZmkKKworIyBTZWFyY2ggY29tbW9uIHBhdGhzIGZvciB0aGUgaGVscGVyIHByb2dyYW0KK0JOPSJxZW11LWJyaWRnZS1oZWxwZXIiCitQQVRIUz0iL3Vzci9saWJleGVjLyAvdXNyL2xpYi9xZW11LyIKKworZm9yIHAgaW4gJFBBVEhTOyBkbworICAgIGlmIFsgLWUgIiRwLyRCTiIgXTsgdGhlbgorICAgICAgICBleGVjICIkcC8kQk4iICIkQCIKKyAgICBmaQorZG9uZQorCitlY2hvICIkQk4gbm90IGZvdW5kISIgPiAvZGV2L3N0ZGVycgorZXhpdCAxCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1uYXRpdmUuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LW5hdGl2ZS5pbmMKaW5kZXggNjljMmM0My4uMjhjZmQyYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LW5hdGl2ZS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LW5hdGl2ZS5pbmMKQEAgLTMsOCArMyw4IEBACiByZXF1aXJlIHFlbXUuaW5jCiAKIFNSQ19VUklfYXBwZW5kID0gIiBcCi0gICAgICAgICAgICBmaWxlOi8vMDAxMC1maXgtbGliY2FwLWhlYWRlci1pc3N1ZS1vbi1zb21lLWRpc3Ryby5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAxMS1jcHVzLmMtQWRkLWVycm9yLW1lc3NhZ2VzLXdoZW4tcWVtaV9jcHVfa2lja190aHJlYWQtLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDEyLWZpeC1saWJjYXAtaGVhZGVyLWlzc3VlLW9uLXNvbWUtZGlzdHJvLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDEzLWNwdXMuYy1BZGQtZXJyb3ItbWVzc2FnZXMtd2hlbi1xZW1pX2NwdV9raWNrX3RocmVhZC0ucGF0Y2ggXAogICAgICAgICAgICAgIgogCiBFWFRSQV9PRU1BS0VfYXBwZW5kID0gIiBMRD0nJHtMRH0nIEFSPScke0FSfScgT0JKQ09QWT0nJHtPQkpDT1BZfScgTERGTEFHUz0nJHtMREZMQUdTfSciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtbmF0aXZlXzQuMS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LW5hdGl2ZV80LjIuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LW5hdGl2ZV80LjEuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LW5hdGl2ZV80LjIuMC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LXN5c3RlbS1uYXRpdmVfNC4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtc3lzdGVtLW5hdGl2ZV80LjIuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LXN5c3RlbS1uYXRpdmVfNC4xLjAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1zeXN0ZW0tbmF0aXZlXzQuMi4wLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtdGFyZ2V0cy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtdGFyZ2V0cy5pbmMKaW5kZXggODE4NGVmNS4uMjRmOWEwMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LXRhcmdldHMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS10YXJnZXRzLmluYwpAQCAtMTMsNyArMTMsNyBAQAogICAgICAgICAgICAgc29mdG1tdW9ubHkgKz0gYXJjaCArICItc29mdG1tdSwiCiAgICAgICAgICAgICBhcmNocy5yZW1vdmUoYXJjaCkKICAgICBsaW51eHVzZXJvbmx5ID0gIiIKLSAgICBmb3IgYXJjaCBpbiBbJ2FybWViJywgJ2FscGhhJywgJ3BwYzY0YWJpMzInLCAnc3BhcmMzMnBsdXMnLCAnYWFyY2g2NF9iZSddOgorICAgIGZvciBhcmNoIGluIFsnYXJtZWInLCAnYWxwaGEnLCAncHBjNjRhYmkzMicsICdwcGM2NGxlJywgJ3NwYXJjMzJwbHVzJywgJ2FhcmNoNjRfYmUnXToKICAgICAgICAgaWYgYXJjaCBpbiBhcmNoczoKICAgICAgICAgICAgIGxpbnV4dXNlcm9ubHkgKz0gYXJjaCArICItbGludXgtdXNlciwiCiAgICAgICAgICAgICBhcmNocy5yZW1vdmUoYXJjaCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUuaW5jCmluZGV4IDYwMWZjMjIuLjdhMWNjZjIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LmluYwpAQCAtMjcsMTMgKzI3LDIxIEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDA4LWxpbnV4LXVzZXItRml4LXdlYmtpdGd0ay1oYW5ncy1vbi0zMi1iaXQteDg2LXRhcmdldC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA5LUZpeC13ZWJraXRndGstYnVpbGRzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMTAtY29uZmlndXJlLUFkZC1wa2ctY29uZmlnLWhhbmRsaW5nLWZvci1saWJnY3J5cHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1ody1pMzg2LXBjLWZpeC1yZWdyZXNzaW9uLWluLXBhcnNpbmctdmdhLWNtZGxpbmUtcGFyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTE1ODkwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTEyMDY4LnBhdGNoIFwKLSAgICAgICAgICAgIgorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMjAtMTcxMS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAyMC03MDM5LTEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMjAtNzAzOS0yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDIwLTcwMzktMy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1lbmFibGUtZGlzYWJsZS11ZGV2LnBhdGNoIFwKKwkgICBmaWxlOi8vQ1ZFLTIwMjAtNzIxMS5wYXRjaCBcCisJICAgZmlsZTovLzAwMDEtcWVtdS1Eby1ub3QtaW5jbHVkZS1maWxlLWlmLW5vdC1leGlzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMjAtMTExMDIucGF0Y2ggXAorCSAgICIKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInFlbXUtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJjZGYyYjVjYTUyYjlhYmFjOWJhY2I1ODQyZmE0MjBmOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2NTZlNjAyMTg2ODliZGVlYzY5OTAzMDg3ZmQ3NTgyZDVkM2U3MjIzOGQwMmY0NDgxZDhkYzZkNzlmZDkwOWM2IgorU1JDX1VSSVttZDVzdW1dID0gIjI3OGVlYjI5NGU0YjQ5N2U3OWFmN2E1N2U2NjBjYjlhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQzNDgxZDQxMDhjZTIxMWEwNTNlZjE1YmU2OWFmMWJkZDlkZGUxNTEwZmRhODBkOTJiZTBmNmMzZTk4NzY4ZjAiCiAKIENPTVBBVElCTEVfSE9TVF9taXBzYXJjaG4zMiA9ICJudWxsIgogQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjY0ID0gIm51bGwiCkBAIC01NSwxMCArNjMsMTIgQEAKIAkjIERvbid0IGNoZWNrIHRoZSBmaWxlIGdlbnJlYXRlZCBieSBjb25maWd1cmUKIAlzZWQgLWkgLWUgJy93aWxkY2FyZCBjb25maWctaG9zdC5tYWsvZCcgXAogCSAgICAgICAtZSAnJCB7L2VuZGlmL2R9JyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlCisgICAgICAgIHNlZCAtaSAtZSAncywke0hPU1RUT09MU19ESVJ9L3B5dGhvbjMsJHtiaW5kaXJ9L3B5dGhvbjMsJyBcCisgICAgICAgICAgICAke0R9LyR7UFRFU1RfUEFUSH0vdGVzdHMvcWVtdS1pb3Rlc3RzL2NvbW1vbi5lbnYgCiB9CiAKICMgUUVNVV9UQVJHRVRTIGlzIG92ZXJyaWRhYmxlIHZhcmlhYmxlCi1RRU1VX1RBUkdFVFMgPz0gImFybSBhYXJjaDY0IGkzODYgbWlwcyBtaXBzZWwgbWlwczY0IG1pcHM2NGVsIHBwYyBwcGM2NCByaXNjdjMyIHJpc2N2NjQgc2g0IHg4Nl82NCIKK1FFTVVfVEFSR0VUUyA/PSAiYXJtIGFhcmNoNjQgaTM4NiBtaXBzIG1pcHNlbCBtaXBzNjQgbWlwczY0ZWwgcHBjIHBwYzY0IHBwYzY0bGUgcmlzY3YzMiByaXNjdjY0IHNoNCB4ODZfNjQiCiAKIEVYVFJBX09FQ09ORiA9ICIgXAogICAgIC0tcHJlZml4PSR7cHJlZml4fSBcCkBAIC03NSw2ICs4NSw4IEBACiAgICAgLS1kaXNhYmxlLXN0cmlwIFwKICAgICAtLWRpc2FibGUtd2Vycm9yIFwKICAgICAtLWV4dHJhLWNmbGFncz0nJHtDRkxBR1N9JyBcCisgICAgLS13aXRoLWdpdD0vYmluL2ZhbHNlIFwKKyAgICAtLWRpc2FibGUtZ2l0LXVwZGF0ZSBcCiAgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCiAgICAgIgogCkBAIC0xMzUsNyArMTQ3LDcgQEAKIFBBQ0tBR0VDT05GSUdbdmlydGZzXSA9ICItLWVuYWJsZS12aXJ0ZnMgLS1lbmFibGUtYXR0ciwtLWRpc2FibGUtdmlydGZzLGxpYmNhcCBhdHRyLCIKIFBBQ0tBR0VDT05GSUdbYWlvXSA9ICItLWVuYWJsZS1saW51eC1haW8sLS1kaXNhYmxlLWxpbnV4LWFpbyxsaWJhaW8sIgogUEFDS0FHRUNPTkZJR1t4ZnNdID0gIi0tZW5hYmxlLXhmc2N0bCwtLWRpc2FibGUteGZzY3RsLHhmc3Byb2dzLCIKLVBBQ0tBR0VDT05GSUdbeGVuXSA9ICItLWVuYWJsZS14ZW4sLS1kaXNhYmxlLXhlbix4ZW4seGVuLWxpYnhlbnN0b3JlIHhlbi1saWJ4ZW5jdHJsIHhlbi1saWJ4ZW5ndWVzdCIKK1BBQ0tBR0VDT05GSUdbeGVuXSA9ICItLWVuYWJsZS14ZW4sLS1kaXNhYmxlLXhlbix4ZW4tdG9vbHMseGVuLXRvb2xzLWxpYnhlbnN0b3JlIHhlbi10b29scy1saWJ4ZW5jdHJsIHhlbi10b29scy1saWJ4ZW5ndWVzdCIKIFBBQ0tBR0VDT05GSUdbdm5jLXNhc2xdID0gIi0tZW5hYmxlLXZuYyAtLWVuYWJsZS12bmMtc2FzbCwtLWRpc2FibGUtdm5jLXNhc2wsY3lydXMtc2FzbCwiCiBQQUNLQUdFQ09ORklHW3ZuYy1qcGVnXSA9ICItLWVuYWJsZS12bmMgLS1lbmFibGUtdm5jLWpwZWcsLS1kaXNhYmxlLXZuYy1qcGVnLGpwZWcsIgogUEFDS0FHRUNPTkZJR1t2bmMtcG5nXSA9ICItLWVuYWJsZS12bmMgLS1lbmFibGUtdm5jLXBuZywtLWRpc2FibGUtdm5jLXBuZyxsaWJwbmcsIgpAQCAtMTY1LDYgKzE3NywxMCBAQAogIyB1c2JyZWRpciB3aWxsIGJlIGluIG1ldGEtbmV0d29ya2luZyBsYXllcgogUEFDS0FHRUNPTkZJR1t1c2ItcmVkaXJdID0gIi0tZW5hYmxlLXVzYi1yZWRpciwtLWRpc2FibGUtdXNiLXJlZGlyLHVzYnJlZGlyIgogUEFDS0FHRUNPTkZJR1tzbmFwcHldID0gIi0tZW5hYmxlLXNuYXBweSwtLWRpc2FibGUtc25hcHB5LHNuYXBweSIKK1BBQ0tBR0VDT05GSUdbZ2x1c3RlcmZzXSA9ICItLWVuYWJsZS1nbHVzdGVyZnMsLS1kaXNhYmxlLWdsdXN0ZXJmcyIKK1BBQ0tBR0VDT05GSUdbeGtiY29tbW9uXSA9ICItLWVuYWJsZS14a2Jjb21tb24sLS1kaXNhYmxlLXhrYmNvbW1vbixsaWJ4a2Jjb21tb24iCitQQUNLQUdFQ09ORklHW2xpYnVkZXZdID0gIi0tZW5hYmxlLWxpYnVkZXYsLS1kaXNhYmxlLWxpYnVkZXYsZXVkZXYiCitQQUNLQUdFQ09ORklHW2xpYnhtbDJdID0gIi0tZW5hYmxlLWxpYnhtbDIsLS1kaXNhYmxlLWxpYnhtbDIsbGlieG1sMiIKIAogSU5TQU5FX1NLSVBfJHtQTn0gPSAiYXJjaCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtQWRkLWVuYWJsZS1kaXNhYmxlLXVkZXYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1BZGQtZW5hYmxlLWRpc2FibGUtdWRldi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmM1ODQ5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtQWRkLWVuYWJsZS1kaXNhYmxlLXVkZXYucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSBhNDcxY2Y0ZTRjNzMzNTBlMDkwZWIyY2Q4N2VjOTU5ZDEzODAxMmU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CitEYXRlOiBUaHUsIDE5IE1hciAyMDIwIDExOjU0OjI2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBlbmFibGUvZGlzYWJsZSBsaWJ1ZGV2CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CistLS0KKyBjb25maWd1cmUgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IGNhYzI3MWMuLmJkMTE2ZWIgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTE1MzksNiArMTUzOSwxMCBAQCBmb3Igb3B0IGRvCisgICA7OworICAgLS1kaXNhYmxlLXBsdWdpbnMpIHBsdWdpbnM9Im5vIgorICAgOzsKKysgIC0tZW5hYmxlLWxpYnVkZXYpIGxpYnVkZXY9InllcyIKKysgIDs7CisrICAtLWRpc2FibGUtbGlidWRldikgbGlidWRldj0ibm8iCisrICA7OworICAgKikKKyAgICAgICBlY2hvICJFUlJPUjogdW5rbm93biBvcHRpb24gJG9wdCIKKyAgICAgICBlY2hvICJUcnkgJyQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24iCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtcWVtdS1BZGQtbWlzc2luZy13YWNvbS1ISUQtZGVzY3JpcHRvci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLXFlbXUtQWRkLW1pc3Npbmctd2Fjb20tSElELWRlc2NyaXB0b3IucGF0Y2gKaW5kZXggOTQ3ODEwMi4uNjZmZjk5NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtcWVtdS1BZGQtbWlzc2luZy13YWNvbS1ISUQtZGVzY3JpcHRvci5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1xZW11LUFkZC1taXNzaW5nLXdhY29tLUhJRC1kZXNjcmlwdG9yLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA0NjU1ZGMxODA3NGUwYmU5ZDIzOWY1MWRhYzMyYjYxNDM1ZGE4NTQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1MjZjYjdlMjZmNmRkOTZjOWVlMmZmYTA1Y2UwYTM1OGQzYmZiZmIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CiBEYXRlOiBUaHUsIDI3IE5vdiAyMDE0IDE0OjA0OjI5ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0hdIHFlbXU6IEFkZCBtaXNzaW5nIHdhY29tIEhJRCBkZXNjcmlwdG9yCkBAIC0xOSw3ICsxOSw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2h3L3VzYi9kZXYtd2Fjb20uYyBiL2h3L3VzYi9kZXYtd2Fjb20uYwotaW5kZXggOGM0M2RiOTMuLjNmZjhjYTI4IDEwMDY0NAoraW5kZXggOGVkNTdiM2IuLjE1MDI5MjhiIDEwMDY0NAogLS0tIGEvaHcvdXNiL2Rldi13YWNvbS5jCiArKysgYi9ody91c2IvZGV2LXdhY29tLmMKIEBAIC03NCw2ICs3NCw4OSBAQCBzdGF0aWMgY29uc3QgVVNCRGVzY1N0cmluZ3MgZGVzY19zdHJpbmdzID0gewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtcWVtdS1Eby1ub3QtaW5jbHVkZS1maWxlLWlmLW5vdC1leGlzdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1xZW11LURvLW5vdC1pbmNsdWRlLWZpbGUtaWYtbm90LWV4aXN0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2NhYzA1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtcWVtdS1Eby1ub3QtaW5jbHVkZS1maWxlLWlmLW5vdC1leGlzdHMucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA5OGMyZGExMjlkYjE5ZWU2M2Q3ZTIxYjc3YTBlZjcwODIyYzk1MDY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT2xla3NpeSBPYml0b3Rza3l5IDxvb2JpdG90c0BjaXNjby5jb20+CitEYXRlOiBXZWQsIDI1IE1hciAyMDIwIDIxOjIxOjM1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIHFlbXU6IERvIG5vdCBpbmNsdWRlIGZpbGUgaWYgbm90IGV4aXN0cworCitTY3JpcHQgY29uZmlndXJlIGNoZWNrcyBmb3IgaWZfYWxnLmggYW5kIGNoZWNrIGZhaWxlZCBidXQKK2lmX2FsZy5oIHN0aWxsIGluY2x1ZGVkLgorCitVcHN0cmVhbS1zdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9xZW11LWRldmVsLzIwMjAtMDMvbXNnMDcxODguaHRtbF0KK1NpZ25lZC1vZmYtYnk6IE9sZWtzaXkgT2JpdG90c2t5eSA8b29iaXRvdHNAY2lzY28uY29tPgorLS0tCisgbGludXgtdXNlci9zeXNjYWxsLmMgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGludXgtdXNlci9zeXNjYWxsLmMgYi9saW51eC11c2VyL3N5c2NhbGwuYworaW5kZXggZmMxOGYyNDQuLjY4ZDYyNjY2IDEwMDY0NAorLS0tIGEvbGludXgtdXNlci9zeXNjYWxsLmMKKysrKyBiL2xpbnV4LXVzZXIvc3lzY2FsbC5jCitAQCAtMTA2LDcgKzEwNiw5IEBACisgI2luY2x1ZGUgPGxpbnV4L2Jsa3BnLmg+CisgI2luY2x1ZGUgPG5ldHBhY2tldC9wYWNrZXQuaD4KKyAjaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgorKyNpZiBkZWZpbmVkKENPTkZJR19BRl9BTEcpCisgI2luY2x1ZGUgPGxpbnV4L2lmX2FsZy5oPgorKyNlbmRpZgorICNpbmNsdWRlICJsaW51eF9sb29wLmgiCisgI2luY2x1ZGUgInVuYW1lLmgiCisgCistLSAKKzIuMjAuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMi1BZGQtc3VicGFja2FnZS1wdGVzdC13aGljaC1ydW5zLWFsbC11bml0LXRlc3QtY2FzZXMtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDItQWRkLXN1YnBhY2thZ2UtcHRlc3Qtd2hpY2gtcnVucy1hbGwtdW5pdC10ZXN0LWNhc2VzLS5wYXRjaAppbmRleCAyY2NkZGQ1Li43ZjdkYTUxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMi1BZGQtc3VicGFja2FnZS1wdGVzdC13aGljaC1ydW5zLWFsbC11bml0LXRlc3QtY2FzZXMtLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAyLUFkZC1zdWJwYWNrYWdlLXB0ZXN0LXdoaWNoLXJ1bnMtYWxsLXVuaXQtdGVzdC1jYXNlcy0ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDY3NzUxZjNhMjNlM2RiMzAxMmYzOTFiM2IzYjczYTQ0ODQ0ODhjZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDhlZTYyODE1MTZiZDkyMTBlNzVlOTFkNzA1ZGE4OTE2YmFiM2JmNTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgogRGF0ZTogVGh1LCAzMSBBdWcgMjAxNyAxMTowNjo1NiAtMDcwMAogU3ViamVjdDogW1BBVENIXSBBZGQgc3VicGFja2FnZSAtcHRlc3Qgd2hpY2ggcnVucyBhbGwgdW5pdCB0ZXN0IGNhc2VzIGZvcgpAQCAtMTUsMTAgKzE1LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuaW5jbHVkZSBiL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKLWluZGV4IGZkN2ZkYjg2Li44M2I3ZjQwOSAxMDA2NDQKK2luZGV4IDg1NjZmNWYxLi41MmQwMzIwYiAxMDA2NDQKIC0tLSBhL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKICsrKyBiL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKLUBAIC0xMTgzLDQgKzExODMsMTIgQEAgYWxsOiAkKFFFTVVfSU9URVNUU19IRUxQRVJTLXkpCitAQCAtMTIxMCw0ICsxMjEwLDEyIEBAIGFsbDogJChRRU1VX0lPVEVTVFNfSEVMUEVSUy15KQogIC1pbmNsdWRlICQod2lsZGNhcmQgdGVzdHMvKi5kKQogIC1pbmNsdWRlICQod2lsZGNhcmQgdGVzdHMvbGlicW9zLyouZCkKICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAzLXFlbXUtQWRkLWFkZGl0aW9uLWVudmlyb25tZW50LXNwYWNlLXRvLWJvb3QtbG9hZGVyLXEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMy1xZW11LUFkZC1hZGRpdGlvbi1lbnZpcm9ubWVudC1zcGFjZS10by1ib290LWxvYWRlci1xLnBhdGNoCmluZGV4IDVjNDJkNjguLjAxMmQ2MGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAzLXFlbXUtQWRkLWFkZGl0aW9uLWVudmlyb25tZW50LXNwYWNlLXRvLWJvb3QtbG9hZGVyLXEucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDMtcWVtdS1BZGQtYWRkaXRpb24tZW52aXJvbm1lbnQtc3BhY2UtdG8tYm9vdC1sb2FkZXItcS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMjM1Yjk0ZjExODg1OTc4NzNjODc3NmIwMTlmZWQ0OTk0Nzk4MzM5MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gY2UxZWNlYWIyMzUwZDI3OTYwZWMyNTQ2NTA3MTcwODVmNmExMWM5YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CiBEYXRlOiBGcmksIDI4IE1hciAyMDE0IDE3OjQyOjQzICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIHFlbXU6IEFkZCBhZGRpdGlvbiBlbnZpcm9ubWVudCBzcGFjZSB0byBib290IGxvYWRlcgpAQCAtMTksMTUgKzE5LDE1IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9ody9taXBzL21pcHNfbWFsdGEuYyBiL2h3L21pcHMvbWlwc19tYWx0YS5jCi1pbmRleCAyMGUwMTliZi4uZDE1MGIwMWMgMTAwNjQ0CitpbmRleCA5MmU5Y2E1Yi4uM2E3ZjM5NTQgMTAwNjQ0CiAtLS0gYS9ody9taXBzL21pcHNfbWFsdGEuYwogKysrIGIvaHcvbWlwcy9taXBzX21hbHRhLmMKLUBAIC02MCw3ICs2MCw3IEBACitAQCAtNTksNyArNTksNyBAQAogIAotICNkZWZpbmUgRU5WUF9BRERSCQkweDgwMDAyMDAwbAotICNkZWZpbmUgRU5WUF9OQl9FTlRSSUVTCSAJMTYKLS0jZGVmaW5lIEVOVlBfRU5UUllfU0laRQkgCTI1NgotKyNkZWZpbmUgRU5WUF9FTlRSWV9TSVpFCSAJMTAyNAorICNkZWZpbmUgRU5WUF9BRERSICAgICAgICAgICAweDgwMDAyMDAwbAorICNkZWZpbmUgRU5WUF9OQl9FTlRSSUVTICAgICAxNgorLSNkZWZpbmUgRU5WUF9FTlRSWV9TSVpFICAgICAyNTYKKysjZGVmaW5lIEVOVlBfRU5UUllfU0laRSAgICAgMTAyNAogIAogIC8qIEhhcmR3YXJlIGFkZHJlc3NlcyAqLwotICNkZWZpbmUgRkxBU0hfQUREUkVTUyAweDFlMDAwMDAwVUxMCisgI2RlZmluZSBGTEFTSF9BRERSRVNTICAgICAgIDB4MWUwMDAwMDBVTEwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA0LXFlbXUtZGlzYWJsZS1WYWxncmluZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA0LXFlbXUtZGlzYWJsZS1WYWxncmluZC5wYXRjaAppbmRleCAwYWM0YWI0Li5iYzMwMzk3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNC1xZW11LWRpc2FibGUtVmFsZ3JpbmQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDQtcWVtdS1kaXNhYmxlLVZhbGdyaW5kLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAzYWQ3YTM3NTAxNWQ0N2ZkZjUwMTZlMDNlMTFmYTkzNDQwZDZkOGJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0MTI3Mjk2YmIxMDQ2Y2RmNzM5OTRiYTY5ZGM5MTNkOGMwMmZkNzRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIERhdGU6IFR1ZSwgMjAgT2N0IDIwMTUgMjI6MTk6MDggKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gcWVtdTogZGlzYWJsZSBWYWxncmluZApAQCAtMTMsMTAgKzEzLDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDkgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IDcxNGU3ZmI2Li5kYWQ0ZmM1OSAxMDA3NTUKK2luZGV4IDYwOTliZTFkLi5hNzY2MDE3YiAxMDA3NTUKIC0tLSBhL2NvbmZpZ3VyZQogKysrIGIvY29uZmlndXJlCi1AQCAtNTMzNSwxNSArNTMzNSw2IEBAIGZpCitAQCAtNTM5MCwxNSArNTM5MCw2IEBAIGZpCiAgIyBjaGVjayBpZiB3ZSBoYXZlIHZhbGdyaW5kL3ZhbGdyaW5kLmgKICAKICB2YWxncmluZF9oPW5vCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNS1xZW11LW5hdGl2ZS1zZXQtbGQuYmZkLWZpeC1jZmxhZ3MtYW5kLXNldC1zb21lLWVudmlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDUtcWVtdS1uYXRpdmUtc2V0LWxkLmJmZC1maXgtY2ZsYWdzLWFuZC1zZXQtc29tZS1lbnZpci5wYXRjaAppbmRleCBhNzM2ODE1Li5lYzMwMzM3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNS1xZW11LW5hdGl2ZS1zZXQtbGQuYmZkLWZpeC1jZmxhZ3MtYW5kLXNldC1zb21lLWVudmlyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA1LXFlbXUtbmF0aXZlLXNldC1sZC5iZmQtZml4LWNmbGFncy1hbmQtc2V0LXNvbWUtZW52aXIucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDgwZTYwNzBiY2RmZTYzNmIxMDNhMTM1OThlNmMzOGFkMGQwZTc2MjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDZjZGY4MmFmMmViYTMxMmI5YjhkYTg2ZGRhMjhiOThkM2Q1MWY0ZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBTdGVwaGVuIEFybm9sZCA8c2Fybm9sZEB2Y3RsYWJzLmNvbT4KIERhdGU6IFN1biwgMTIgSnVuIDIwMTYgMTg6MDk6NTYgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gcWVtdS1uYXRpdmU6IHNldCBsZC5iZmQsIGZpeCBjZmxhZ3MsIGFuZCBzZXQgc29tZSBlbnZpcm9ubWVudApAQCAtMTAsMTAgKzEwLDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IGRhZDRmYzU5Li42ODViYmU1ZSAxMDA3NTUKK2luZGV4IGE3NjYwMTdiLi43MmYxMWFjYSAxMDA3NTUKIC0tLSBhL2NvbmZpZ3VyZQogKysrIGIvY29uZmlndXJlCi1AQCAtNTk3MSwxMCArNTk3MSw2IEBAIHdyaXRlX2Nfc2tlbGV0b24KK0BAIC02MDg1LDEwICs2MDg1LDYgQEAgd3JpdGVfY19za2VsZXRvbgogIGlmIHRlc3QgIiRnY292IiA9ICJ5ZXMiIDsgdGhlbgogICAgQ0ZMQUdTPSItZnByb2ZpbGUtYXJjcyAtZnRlc3QtY292ZXJhZ2UgLWcgJENGTEFHUyIKICAgIExERkxBR1M9Ii1mcHJvZmlsZS1hcmNzIC1mdGVzdC1jb3ZlcmFnZSAkTERGTEFHUyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA2LWNoYXJkZXYtY29ubmVjdC1zb2NrZXQtdG8tYS1zcGF3bmVkLWNvbW1hbmQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNi1jaGFyZGV2LWNvbm5lY3Qtc29ja2V0LXRvLWEtc3Bhd25lZC1jb21tYW5kLnBhdGNoCmluZGV4IGE0MjM4NTUuLjA4MTBhZTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA2LWNoYXJkZXYtY29ubmVjdC1zb2NrZXQtdG8tYS1zcGF3bmVkLWNvbW1hbmQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDYtY2hhcmRldi1jb25uZWN0LXNvY2tldC10by1hLXNwYXduZWQtY29tbWFuZC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYWQ4NTM2MDFlNzVmNmQwZGQwOTY3MmJjY2EwNWZiZTRmYWM3NjZhNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYmNjNjNmNzc1ZTI2NWRmNjk5NjNhNGFkNzgwNWI4Njc4YWNlNjhmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAeGlsaW54LmNvbT4KIERhdGU6IFRodSwgMjEgRGVjIDIwMTcgMTE6MzU6MTYgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gY2hhcmRldjogY29ubmVjdCBzb2NrZXQgdG8gYSBzcGF3bmVkIGNvbW1hbmQKQEAgLTUyLDEwICs1MiwxMCBAQAogIDMgZmlsZXMgY2hhbmdlZCwgMTA5IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL2NoYXJkZXYvY2hhci1zb2NrZXQuYyBiL2NoYXJkZXYvY2hhci1zb2NrZXQuYwotaW5kZXggN2NhNWQ5N2EuLjIwN2ZhZTRhIDEwMDY0NAoraW5kZXggMTg1ZmUzOGQuLjU0ZmE0MjM0IDEwMDY0NAogLS0tIGEvY2hhcmRldi9jaGFyLXNvY2tldC5jCiArKysgYi9jaGFyZGV2L2NoYXItc29ja2V0LmMKLUBAIC0xMjc4LDYgKzEyNzgsNjcgQEAgc3RhdGljIGJvb2wgcW1wX2NoYXJkZXZfdmFsaWRhdGVfc29ja2V0KENoYXJkZXZTb2NrZXQgKnNvY2ssCitAQCAtMTI4OCw2ICsxMjg4LDY3IEBAIHN0YXRpYyBib29sIHFtcF9jaGFyZGV2X3ZhbGlkYXRlX3NvY2tldChDaGFyZGV2U29ja2V0ICpzb2NrLAogICAgICByZXR1cm4gdHJ1ZTsKICB9CiAgCkBAIC0xMjMsNyArMTIzLDcgQEAKICAKICBzdGF0aWMgdm9pZCBxbXBfY2hhcmRldl9vcGVuX3NvY2tldChDaGFyZGV2ICpjaHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhcmRldkJhY2tlbmQgKmJhY2tlbmQsCi1AQCAtMTI4Niw2ICsxMzQ3LDkgQEAgc3RhdGljIHZvaWQgcW1wX2NoYXJkZXZfb3Blbl9zb2NrZXQoQ2hhcmRldiAqY2hyLAorQEAgLTEyOTYsNiArMTM1Nyw5IEBAIHN0YXRpYyB2b2lkIHFtcF9jaGFyZGV2X29wZW5fc29ja2V0KENoYXJkZXYgKmNociwKICB7CiAgICAgIFNvY2tldENoYXJkZXYgKnMgPSBTT0NLRVRfQ0hBUkRFVihjaHIpOwogICAgICBDaGFyZGV2U29ja2V0ICpzb2NrID0gYmFja2VuZC0+dS5zb2NrZXQuZGF0YTsKQEAgLTEzMyw3ICsxMzMsNyBAQAogICAgICBib29sIGRvX25vZGVsYXkgICAgID0gc29jay0+aGFzX25vZGVsYXkgPyBzb2NrLT5ub2RlbGF5IDogZmFsc2U7CiAgICAgIGJvb2wgaXNfbGlzdGVuICAgICAgPSBzb2NrLT5oYXNfc2VydmVyICA/IHNvY2stPnNlcnZlciAgOiB0cnVlOwogICAgICBib29sIGlzX3RlbG5ldCAgICAgID0gc29jay0+aGFzX3RlbG5ldCAgPyBzb2NrLT50ZWxuZXQgIDogZmFsc2U7Ci1AQCAtMTM1MSw2ICsxNDE1LDE0IEBAIHN0YXRpYyB2b2lkIHFtcF9jaGFyZGV2X29wZW5fc29ja2V0KENoYXJkZXYgKmNociwKK0BAIC0xMzYxLDYgKzE0MjUsMTQgQEAgc3RhdGljIHZvaWQgcW1wX2NoYXJkZXZfb3Blbl9zb2NrZXQoQ2hhcmRldiAqY2hyLAogIAogICAgICB1cGRhdGVfZGlzY29ubmVjdGVkX2ZpbGVuYW1lKHMpOwogIApAQCAtMTQ4LDcgKzE0OCw3IEBACiAgICAgIGlmIChzLT5pc19saXN0ZW4pIHsKICAgICAgICAgIGlmIChxbXBfY2hhcmRldl9vcGVuX3NvY2tldF9zZXJ2ZXIoY2hyLCBpc190ZWxuZXQgfHwgaXNfdG4zMjcwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc193YWl0Y29ubmVjdCwgZXJycCkgPCAwKSB7Ci1AQCAtMTM3MCw5ICsxNDQyLDI2IEBAIHN0YXRpYyB2b2lkIHFlbXVfY2hyX3BhcnNlX3NvY2tldChRZW11T3B0cyAqb3B0cywgQ2hhcmRldkJhY2tlbmQgKmJhY2tlbmQsCitAQCAtMTM4MCw5ICsxNDUyLDI2IEBAIHN0YXRpYyB2b2lkIHFlbXVfY2hyX3BhcnNlX3NvY2tldChRZW11T3B0cyAqb3B0cywgQ2hhcmRldkJhY2tlbmQgKmJhY2tlbmQsCiAgICAgIGNvbnN0IGNoYXIgKmhvc3QgPSBxZW11X29wdF9nZXQob3B0cywgImhvc3QiKTsKICAgICAgY29uc3QgY2hhciAqcG9ydCA9IHFlbXVfb3B0X2dldChvcHRzLCAicG9ydCIpOwogICAgICBjb25zdCBjaGFyICpmZCA9IHFlbXVfb3B0X2dldChvcHRzLCAiZmQiKTsKQEAgLTE3NSw3ICsxNzUsNyBAQAogICAgICBpZiAoKCEhcGF0aCArICEhZmQgKyAhIWhvc3QpICE9IDEpIHsKICAgICAgICAgIGVycm9yX3NldGcoZXJycCwKICAgICAgICAgICAgICAgICAgICAgIkV4YWN0bHkgb25lIG9mICdwYXRoJywgJ2ZkJyBvciAnaG9zdCcgcmVxdWlyZWQiKTsKLUBAIC0xNDE1LDEyICsxNTA0LDI0IEBAIHN0YXRpYyB2b2lkIHFlbXVfY2hyX3BhcnNlX3NvY2tldChRZW11T3B0cyAqb3B0cywgQ2hhcmRldkJhY2tlbmQgKmJhY2tlbmQsCitAQCAtMTQyNSwxMiArMTUxNCwyNCBAQCBzdGF0aWMgdm9pZCBxZW11X2Nocl9wYXJzZV9zb2NrZXQoUWVtdU9wdHMgKm9wdHMsIENoYXJkZXZCYWNrZW5kICpiYWNrZW5kLAogICAgICBzb2NrLT5oYXNfdGxzX2F1dGh6ID0gcWVtdV9vcHRfZ2V0KG9wdHMsICJ0bHMtYXV0aHoiKTsKICAgICAgc29jay0+dGxzX2F1dGh6ID0gZ19zdHJkdXAocWVtdV9vcHRfZ2V0KG9wdHMsICJ0bHMtYXV0aHoiKSk7CiAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNy1hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA3LWFwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoCmluZGV4IGI1MGU4YzIuLjg5YmFhZDkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA3LWFwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA3LWFwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBmNTFlNDllN2Q3ZDg3YjcyNTQyNDJiNzM2MGY5OWMyZGY5NGE1YTJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhNTlhOThkMTAwMTIzMDMwYTQxNDVlN2VmZTNiOGEwMDE5MjBhOWYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KIERhdGU6IFR1ZSwgMjYgRmViIDIwMTMgMTE6NDM6MjggLTA1MDAKIFN1YmplY3Q6IFtQQVRDSF0gYXBpYzogZml4dXAgZmFsbHRocm91Z2ggdG8gUElDCkBAIC0zMCw3ICszMCw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9ody9pbnRjL2FwaWMuYyBiL2h3L2ludGMvYXBpYy5jCi1pbmRleCBiY2U4OTkxMS4uZGY0YjU4MmUgMTAwNjQ0CitpbmRleCAyYTc0ZjdiNC4uNGQ1ZGEzNjUgMTAwNjQ0CiAtLS0gYS9ody9pbnRjL2FwaWMuYwogKysrIGIvaHcvaW50Yy9hcGljLmMKIEBAIC02MDMsNyArNjAzLDcgQEAgaW50IGFwaWNfYWNjZXB0X3BpY19pbnRyKERldmljZVN0YXRlICpkZXYpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwOC1saW51eC11c2VyLUZpeC13ZWJraXRndGstaGFuZ3Mtb24tMzItYml0LXg4Ni10YXJnZXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwOC1saW51eC11c2VyLUZpeC13ZWJraXRndGstaGFuZ3Mtb24tMzItYml0LXg4Ni10YXJnZXQucGF0Y2gKaW5kZXggZTU2MmYyNS4uMzBiYjRkZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDgtbGludXgtdXNlci1GaXgtd2Via2l0Z3RrLWhhbmdzLW9uLTMyLWJpdC14ODYtdGFyZ2V0LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA4LWxpbnV4LXVzZXItRml4LXdlYmtpdGd0ay1oYW5ncy1vbi0zMi1iaXQteDg2LXRhcmdldC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMjVhMDY0ZjkxZjczNjMwZTVkZmYyYTZhZWIyM2Q5NTNjNDY5Y2VhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gY2Y4YzlhYWM1MjQzZjUwNmExYTNlOGUyODQ0MTRmMzExY2RlMDRmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAeGlsaW54LmNvbT4KIERhdGU6IFdlZCwgMTcgSmFuIDIwMTggMTA6NTE6NDkgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gbGludXgtdXNlcjogRml4IHdlYmtpdGd0ayBoYW5ncyBvbiAzMi1iaXQgeDg2IHRhcmdldApAQCAtMTksMTUgKzE5LDE1IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9saW51eC11c2VyL21haW4uYyBiL2xpbnV4LXVzZXIvbWFpbi5jCi1pbmRleCA4ZmZjNTI1MS4uNDA2N2U3MzkgMTAwNjQ0CitpbmRleCA2ZmY3ODUxZS4uZWJmZjA0ODUgMTAwNjQ0CiAtLS0gYS9saW51eC11c2VyL21haW4uYwogKysrIGIvbGludXgtdXNlci9tYWluLmMKLUBAIC03Nyw3ICs3Nyw3IEBAIGludCBoYXZlX2d1ZXN0X2Jhc2U7CitAQCAtNzgsNyArNzgsNyBAQCBpbnQgaGF2ZV9ndWVzdF9iYXNlOwogICAgICAgIChUQVJHRVRfTE9OR19CSVRTID09IDMyIHx8IGRlZmluZWQoVEFSR0VUX0FCSTMyKSkKICAvKiBUaGVyZSBhcmUgYSBudW1iZXIgb2YgcGxhY2VzIHdoZXJlIHdlIGFzc2lnbiByZXNlcnZlZF92YSB0byBhIHZhcmlhYmxlCiAgICAgb2YgdHlwZSBhYmlfdWxvbmcgYW5kIGV4cGVjdCBpdCB0byBmaXQuICBBdm9pZCB0aGUgbGFzdCBwYWdlLiAgKi8KLS0jICAgZGVmaW5lIE1BWF9SRVNFUlZFRF9WQSAgKDB4ZmZmZmZmZmZ1bCAmIFRBUkdFVF9QQUdFX01BU0spCi0rIyAgIGRlZmluZSBNQVhfUkVTRVJWRURfVkEgICgweDdmZmZmZmZmdWwgJiBUQVJHRVRfUEFHRV9NQVNLKQorLSMgICBkZWZpbmUgTUFYX1JFU0VSVkVEX1ZBKENQVSkgICgweGZmZmZmZmZmdWwgJiBUQVJHRVRfUEFHRV9NQVNLKQorKyMgICBkZWZpbmUgTUFYX1JFU0VSVkVEX1ZBKENQVSkgICgweDdmZmZmZmZmdWwgJiBUQVJHRVRfUEFHRV9NQVNLKQogICMgIGVsc2UKLSAjICAgZGVmaW5lIE1BWF9SRVNFUlZFRF9WQSAgKDF1bCA8PCBUQVJHRVRfVklSVF9BRERSX1NQQUNFX0JJVFMpCisgIyAgIGRlZmluZSBNQVhfUkVTRVJWRURfVkEoQ1BVKSAgKDF1bCA8PCBUQVJHRVRfVklSVF9BRERSX1NQQUNFX0JJVFMpCiAgIyAgZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA5LUZpeC13ZWJraXRndGstYnVpbGRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDktRml4LXdlYmtpdGd0ay1idWlsZHMucGF0Y2gKaW5kZXggNDA3MmQ5NC4uN2UyNzNlZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDktRml4LXdlYmtpdGd0ay1idWlsZHMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDktRml4LXdlYmtpdGd0ay1idWlsZHMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGI2MzNiOWExODEzZmNkNzE1ZGNlNDQ2NTlhODkyOTNmMWM2NGFlOGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDYxMzE2NjAwN2UzYjg1MmM5OWNhZjJjZDM0YTk3MmUyYzg0NjA3MzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJ0aW4gSmFuc2EgPG1hcnRpbi5qYW5zYUBsZ2UuY29tPgogRGF0ZTogRnJpLCAxIEp1biAyMDE4IDA4OjQxOjA3ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0hdIEZpeCB3ZWJraXRndGsgYnVpbGRzCkBAIC0xOCw2ICsxOCw3IEBACiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorCiAtLS0KICBpbmNsdWRlL2V4ZWMvY3B1LWFsbC5oICB8ICA2ICstLS0tLQogIGluY2x1ZGUvZXhlYy9jcHVfbGRzdC5oIHwgIDUgKysrKy0KQEAgLTI2LDcgKzI3LDcgQEAKICA0IGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9leGVjL2NwdS1hbGwuaCBiL2luY2x1ZGUvZXhlYy9jcHUtYWxsLmgKLWluZGV4IDUzNmVhNThmODEuLjRjNjNhNmEyZTQgMTAwNjQ0CitpbmRleCBlOTY3ODFhNC4uYTM2OWY4MWEgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL2V4ZWMvY3B1LWFsbC5oCiArKysgYi9pbmNsdWRlL2V4ZWMvY3B1LWFsbC5oCiBAQCAtMTYyLDEyICsxNjIsOCBAQCBleHRlcm4gdW5zaWduZWQgbG9uZyBndWVzdF9iYXNlOwpAQCAtNDQsNyArNDUsNyBAQAogIAogICNpbmNsdWRlICJleGVjL2h3YWRkci5oIgogZGlmZiAtLWdpdCBhL2luY2x1ZGUvZXhlYy9jcHVfbGRzdC5oIGIvaW5jbHVkZS9leGVjL2NwdV9sZHN0LmgKLWluZGV4IDkxNTFmZGIwNDIuLmNiMmI4ZjMyOWYgMTAwNjQ0CitpbmRleCBmZDQ5OWY3ZS4uMzA1NzVmNjAgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL2V4ZWMvY3B1X2xkc3QuaAogKysrIGIvaW5jbHVkZS9leGVjL2NwdV9sZHN0LmgKIEBAIC02NSw3ICs2NSwxMCBAQCB0eXBlZGVmIHVpbnQ2NF90IGFiaV9wdHI7CkBAIC02MCw3ICs2MSw3IEBACiAgI2RlZmluZSBoMmdfdmFsaWQoeCkgZ3Vlc3RfYWRkcl92YWxpZCgodW5zaWduZWQgbG9uZykoeCkgLSBndWVzdF9iYXNlKQogIAogZGlmZiAtLWdpdCBhL2xpbnV4LXVzZXIvbW1hcC5jIGIvbGludXgtdXNlci9tbWFwLmMKLWluZGV4IDQ2YTZlM2E3NjEuLjc3MzU0NjU0NjIgMTAwNjQ0CitpbmRleCA0NmE2ZTNhNy4uNzczNTQ2NTQgMTAwNjQ0CiAtLS0gYS9saW51eC11c2VyL21tYXAuYwogKysrIGIvbGludXgtdXNlci9tbWFwLmMKIEBAIC03OCw3ICs3OCw3IEBAIGludCB0YXJnZXRfbXByb3RlY3QoYWJpX3Vsb25nIHN0YXJ0LCBhYmlfdWxvbmcgbGVuLCBpbnQgcHJvdCkKQEAgLTExMCwxMCArMTExLDEwIEBACiAgCiAgICAgIGlmIChmbGFncyAmIE1SRU1BUF9GSVhFRCkgewogZGlmZiAtLWdpdCBhL2xpbnV4LXVzZXIvc3lzY2FsbC5jIGIvbGludXgtdXNlci9zeXNjYWxsLmMKLWluZGV4IDhiNDFhMDM5MDEuLmJjNWQ4NWRlMDIgMTAwNjQ0CitpbmRleCAxNzFjMGNhZS4uZmMxOGYyNDQgMTAwNjQ0CiAtLS0gYS9saW51eC11c2VyL3N5c2NhbGwuYwogKysrIGIvbGludXgtdXNlci9zeXNjYWxsLmMKLUBAIC00MDMxLDkgKzQwMzEsNiBAQCBzdGF0aWMgaW5saW5lIGFiaV91bG9uZyBkb19zaG1hdChDUFVBcmNoU3RhdGUgKmNwdV9lbnYsCitAQCAtNDEzOCw5ICs0MTM4LDYgQEAgc3RhdGljIGlubGluZSBhYmlfdWxvbmcgZG9fc2htYXQoQ1BVQXJjaFN0YXRlICpjcHVfZW52LAogICAgICAgICAgICAgIHJldHVybiAtVEFSR0VUX0VJTlZBTDsKICAgICAgICAgIH0KICAgICAgfQpAQCAtMTIzLDcgKzEyNCw3IEBACiAgCiAgICAgIG1tYXBfbG9jaygpOwogIAotQEAgLTY4ODEsNyArNjg3OCw3IEBAIHN0YXRpYyBpbnQgb3Blbl9zZWxmX21hcHModm9pZCAqY3B1X2VudiwgaW50IGZkKQorQEAgLTY5OTAsNyArNjk4Nyw3IEBAIHN0YXRpYyBpbnQgb3Blbl9zZWxmX21hcHModm9pZCAqY3B1X2VudiwgaW50IGZkKQogICAgICAgICAgfQogICAgICAgICAgaWYgKGgyZ192YWxpZChtaW4pKSB7CiAgICAgICAgICAgICAgaW50IGZsYWdzID0gcGFnZV9nZXRfZmxhZ3MoaDJnKG1pbikpOwpAQCAtMTMyLDYgKzEzMywzIEBACiAgICAgICAgICAgICAgaWYgKHBhZ2VfY2hlY2tfcmFuZ2UoaDJnKG1pbiksIG1heCAtIG1pbiwgZmxhZ3MpID09IC0xKSB7CiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIH0KLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEwLWNvbmZpZ3VyZS1BZGQtcGtnLWNvbmZpZy1oYW5kbGluZy1mb3ItbGliZ2NyeXB0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTAtY29uZmlndXJlLUFkZC1wa2ctY29uZmlnLWhhbmRsaW5nLWZvci1saWJnY3J5cHQucGF0Y2gKaW5kZXggYThhYjdkYS4uMzRkZjc4YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTAtY29uZmlndXJlLUFkZC1wa2ctY29uZmlnLWhhbmRsaW5nLWZvci1saWJnY3J5cHQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTAtY29uZmlndXJlLUFkZC1wa2ctY29uZmlnLWhhbmRsaW5nLWZvci1saWJnY3J5cHQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDUyMTRkZDQ0NjFmMjA5MGVmMDk2NWI0ZDI1MThmNDk5MjdkNjFjYmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGMyMDc2MDdjZGYzOTk2YWQ5NzgzYzNiZmZiY2QzZDY1ZTc0YzAxNTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgogRGF0ZTogV2VkLCAyOCBBdWcgMjAxOSAxOTo1NjoyOCArMDgwMAotU3ViamVjdDogW1FlbXUtZGV2ZWxdIFtQQVRDSF0gY29uZmlndXJlOiBBZGQgcGtnLWNvbmZpZyBoYW5kbGluZyBmb3IgbGliZ2NyeXB0CitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogQWRkIHBrZy1jb25maWcgaGFuZGxpbmcgZm9yIGxpYmdjcnlwdAogCiBsaWJnY3J5cHQgbWF5IGFsc28gYmUgY29udHJvbGxlZCBieSBwa2ctY29uZmlnLCB0aGlzIHBhdGNoIGFkZHMgcGtnLWNvbmZpZwogaGFuZGxpbmcgZm9yIGxpYmdjcnlwdC4KQEAgLTksMTIgKzksMTMgQEAKIFVwc3RyZWFtLVN0YXR1czogRGVuaWVkIFtodHRwczovL2xpc3RzLm5vbmdudS5vcmcvYXJjaGl2ZS9odG1sL3FlbXUtZGV2ZWwvMjAxOS0wOC9tc2cwNjMzMy5odG1sXQogCiBTaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBjb25maWd1cmUgfCA0OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggZTQ0ZTQ1NC4uMGYzNjJhNyAxMDA3NTUKK2luZGV4IDcyZjExYWNhLi5jYWMyNzFjZSAxMDA3NTUKIC0tLSBhL2NvbmZpZ3VyZQogKysrIGIvY29uZmlndXJlCiBAQCAtMjg3NSw2ICsyODc1LDMwIEBAIGhhc19saWJnY3J5cHQoKSB7CkBAIC00OCw3ICs0OSw3IEBACiAgCiAgaWYgdGVzdCAiJG5ldHRsZSIgIT0gIm5vIjsgdGhlbgogICAgICBwYXNzPSJubyIKLUBAIC0yOTAyLDcgKzI5MjYsMTQgQEAgZmkKK0BAIC0yOTE1LDcgKzI5MzksMTQgQEAgZmkKICAKICBpZiB0ZXN0ICIkZ2NyeXB0IiAhPSAibm8iOyB0aGVuCiAgICAgIHBhc3M9Im5vIgpAQCAtNjQsNyArNjUsNyBAQAogICAgICAgICAgZ2NyeXB0X2NmbGFncz0kKGxpYmdjcnlwdC1jb25maWcgLS1jZmxhZ3MpCiAgICAgICAgICBnY3J5cHRfbGlicz0kKGxpYmdjcnlwdC1jb25maWcgLS1saWJzKQogICAgICAgICAgIyBEZWJpYW4gaGFzIHJlbW92ZWQgLWxncGctZXJyb3IgZnJvbSBsaWJnY3J5cHQtY29uZmlnCi1AQCAtMjkxMiwxNSArMjk0MywxNiBAQCBpZiB0ZXN0ICIkZ2NyeXB0IiAhPSAibm8iOyB0aGVuCitAQCAtMjkyNSwxNSArMjk1NiwxNiBAQCBpZiB0ZXN0ICIkZ2NyeXB0IiAhPSAibm8iOyB0aGVuCiAgICAgICAgICB0aGVuCiAgICAgICAgICAgICAgZ2NyeXB0X2xpYnM9IiRnY3J5cHRfbGlicyAtbGdwZy1lcnJvciIKICAgICAgICAgIGZpCkBAIC04OCw2ICs4OSwzIEBACiAgICAgIGlmIHRlc3QgIiRwYXNzIiA9ICJ5ZXMiOyB0aGVuCiAgICAgICAgICBnY3J5cHQ9InllcyIKICAgICAgICAgIGNhdCA+ICRUTVBDIDw8IEVPRgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMS1ody1pMzg2LXBjLWZpeC1yZWdyZXNzaW9uLWluLXBhcnNpbmctdmdhLWNtZGxpbmUtcGFyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTEtaHctaTM4Ni1wYy1maXgtcmVncmVzc2lvbi1pbi1wYXJzaW5nLXZnYS1jbWRsaW5lLXBhci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmUwODUwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTEtaHctaTM4Ni1wYy1maXgtcmVncmVzc2lvbi1pbi1wYXJzaW5nLXZnYS1jbWRsaW5lLXBhci5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIGE4OGM0MGYwMmFjZTg4ZjA5YjJhODVhNjQ4MzFiMjc3YjJlYmM4OGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQZXRlciBXdSA8cGV0ZXJAbGVrZW5zdGV5bi5ubD4KK0RhdGU6IFNhdCwgMjEgRGVjIDIwMTkgMTc6MjE6MjQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gaHcvaTM4Ni9wYzogZml4IHJlZ3Jlc3Npb24gaW4gcGFyc2luZyB2Z2EgY21kbGluZSBwYXJhbWV0ZXIKKworV2hlbiB0aGUgJ3ZnYT0nIHBhcmFtZXRlciBpcyBzdWNjZWVkZWQgYnkgYW5vdGhlciBwYXJhbWV0ZXIsIFFFTVUgNC4yLjAKK3dvdWxkIHJlZnVzZSB0byBzdGFydCB3aXRoIGEgcmF0aGVyIGNyeXB0aWMgbWVzc2FnZToKKworICAgICQgcWVtdS1zeXN0ZW0teDg2XzY0IC1rZXJuZWwgL2Jvb3Qvdm1saW51ei1saW51eCAtYXBwZW5kICd2Z2E9NzkyIHF1aWV0JworICAgIHFlbXU6IGNhbid0IHBhcnNlICd2Z2EnIHBhcmFtZXRlcjogSW52YWxpZCBhcmd1bWVudAorCitJdCB3YXMgbm90IGNsZWFyIHdoZXRoZXIgdGhpcyBhcHBsaWVkIHRvIHRoZSAnLXZnYSBzdGQnIHBhcmFtZXRlciBvciB0aGUKKyctYXBwZW5kJyBvbmUuIEZpeCB0aGUgcGFyc2luZyByZWdyZXNzaW9uIGFuZCBjbGFyaWZ5IHRoZSBlcnJvci4KKworRml4ZXM6IDEzM2VmMDc0YmQgKCJody9pMzg2L3BjOiByZXBsYWNlIHVzZSBvZiBzdHJ0b2wgd2l0aCBxZW11X3N0cnRvdWkgaW4geDg2X2xvYWRfbGludXgoKSIpCitDYzogU2VyZ2lvIExvcGV6IDxzbHBAcmVkaGF0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IFBldGVyIFd1IDxwZXRlckBsZWtlbnN0ZXluLm5sPgorTWVzc2FnZS1JZDogPDIwMTkxMjIxMTYyMTI0LjExNTkyOTEtMS1wZXRlckBsZWtlbnN0ZXluLm5sPgorQ2M6IHFlbXUtc3RhYmxlQG5vbmdudS5vcmcKK1NpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5xZW11Lm9yZy8/cD1xZW11LmdpdDthPWNvbW1pdGRpZmY7aD1hODhjNDBmMDJhY2U4OGYwOWIyYTg1YTY0ODMxYjI3N2IyZWJjODhjXQorLS0tCisgaHcvaTM4Ni94ODYuYyB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaHcvaTM4Ni94ODYuYyBiL2h3L2kzODYveDg2LmMKK2luZGV4IGQ4YmI1YzJhOTYuLjliOWE0ZDU4MzcgMTAwNjQ0CistLS0gYS9ody9pMzg2L3g4Ni5jCisrKysgYi9ody9pMzg2L3g4Ni5jCitAQCAtNjEyLDYgKzYxMiw3IEBAIHZvaWQgeDg2X2xvYWRfbGludXgoWDg2TWFjaGluZVN0YXRlICp4ODZtcywKKyAgICAgdm1vZGUgPSBzdHJzdHIoa2VybmVsX2NtZGxpbmUsICJ2Z2E9Iik7CisgICAgIGlmICh2bW9kZSkgeworICAgICAgICAgdW5zaWduZWQgaW50IHZpZGVvX21vZGU7CisrICAgICAgICBjb25zdCBjaGFyICplbmQ7CisgICAgICAgICBpbnQgcmV0OworICAgICAgICAgLyogc2tpcCAidmdhPSIgKi8KKyAgICAgICAgIHZtb2RlICs9IDQ7CitAQCAtNjIyLDEwICs2MjMsOSBAQCB2b2lkIHg4Nl9sb2FkX2xpbnV4KFg4Nk1hY2hpbmVTdGF0ZSAqeDg2bXMsCisgICAgICAgICB9IGVsc2UgaWYgKCFzdHJuY21wKHZtb2RlLCAiYXNrIiwgMykpIHsKKyAgICAgICAgICAgICB2aWRlb19tb2RlID0gMHhmZmZkOworICAgICAgICAgfSBlbHNlIHsKKy0gICAgICAgICAgICByZXQgPSBxZW11X3N0cnRvdWkodm1vZGUsIE5VTEwsIDAsICZ2aWRlb19tb2RlKTsKKy0gICAgICAgICAgICBpZiAocmV0ICE9IDApIHsKKy0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJxZW11OiBjYW4ndCBwYXJzZSAndmdhJyBwYXJhbWV0ZXI6ICVzXG4iLAorLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKC1yZXQpKTsKKysgICAgICAgICAgICByZXQgPSBxZW11X3N0cnRvdWkodm1vZGUsICZlbmQsIDAsICZ2aWRlb19tb2RlKTsKKysgICAgICAgICAgICBpZiAocmV0ICE9IDAgfHwgKCplbmQgJiYgKmVuZCAhPSAnICcpKSB7CisrICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicWVtdTogaW52YWxpZCAndmdhPScga2VybmVsIHBhcmFtZXRlci5cbiIpOworICAgICAgICAgICAgICAgICBleGl0KDEpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKy0tIAorMi4yNS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEwLWZpeC1saWJjYXAtaGVhZGVyLWlzc3VlLW9uLXNvbWUtZGlzdHJvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTItZml4LWxpYmNhcC1oZWFkZXItaXNzdWUtb24tc29tZS1kaXN0cm8ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEwLWZpeC1saWJjYXAtaGVhZGVyLWlzc3VlLW9uLXNvbWUtZGlzdHJvLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMi1maXgtbGliY2FwLWhlYWRlci1pc3N1ZS1vbi1zb21lLWRpc3Ryby5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTEtY3B1cy5jLUFkZC1lcnJvci1tZXNzYWdlcy13aGVuLXFlbWlfY3B1X2tpY2tfdGhyZWFkLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEzLWNwdXMuYy1BZGQtZXJyb3ItbWVzc2FnZXMtd2hlbi1xZW1pX2NwdV9raWNrX3RocmVhZC0ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDExLWNwdXMuYy1BZGQtZXJyb3ItbWVzc2FnZXMtd2hlbi1xZW1pX2NwdV9raWNrX3RocmVhZC0ucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEzLWNwdXMuYy1BZGQtZXJyb3ItbWVzc2FnZXMtd2hlbi1xZW1pX2NwdV9raWNrX3RocmVhZC0ucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxOS0xMjA2OC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxOS0xMjA2OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE2NTVlNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTktMTIwNjgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotRnJvbSBkZTU5NGU0NzY1OTAyOTMxNmJiZjkzOTFlZmI3OWRhMGExYTA4ZTA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGFvbG8gQm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgMTQgQXVnIDIwMTkgMTc6MzU6MjEgKzA1MzAKLVN1YmplY3Q6IFtQQVRDSF0gc2NzaTogbHNpOiBleGl0IGluZmluaXRlIGxvb3Agd2hpbGUgZXhlY3V0aW5nIHNjcmlwdAotIChDVkUtMjAxOS0xMjA2OCkKLQotV2hlbiBleGVjdXRpbmcgc2NyaXB0IGluIGxzaV9leGVjdXRlX3NjcmlwdCgpLCB0aGUgTFNJIHNjc2kgYWRhcHRlcgotZW11bGF0b3IgYWR2YW5jZXMgJ3MtPmRzcCcgaW5kZXggdG8gcmVhZCBuZXh0IG9wY29kZS4gVGhpcyBjYW4gbGVhZAotdG8gYW4gaW5maW5pdGUgbG9vcCBpZiB0aGUgbmV4dCBvcGNvZGUgaXMgZW1wdHkuIE1vdmUgdGhlIGV4aXN0aW5nCi1sb29wIGV4aXQgYWZ0ZXIgMTBrIGl0ZXJhdGlvbnMgc28gdGhhdCBpdCBjb3ZlcnMgbm8tb3Agb3Bjb2RlcyBhcwotd2VsbC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQucWVtdS5vcmcvP3A9cWVtdS5naXQ7YT1jb21taXQ7aD1kZTU5NGU0NzY1OTAyOTMxNmJiZjkzOTFlZmI3OWRhMGExYTA4ZTA4XQotQ1ZFOiBDVkUtMjAxOS0xMjA2OAotCi1SZXBvcnRlZC1ieTogQnVncyBTeXNTZWMgPGJ1Z3Mtc3lzc2VjQHJ1Yi5kZT4KLVNpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBQcmFzYWQgSiBQYW5kaXQgPHBqcEBmZWRvcmFwcm9qZWN0Lm9yZz4KLVNpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+Ci0KLVNpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBody9zY3NpL2xzaTUzYzg5NWEuYyB8IDQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaHcvc2NzaS9sc2k1M2M4OTVhLmMgYi9ody9zY3NpL2xzaTUzYzg5NWEuYwotaW5kZXggMjIyYTI4Ni4uZWM1M2IxNCAxMDA2NDQKLS0tLSBhL2h3L3Njc2kvbHNpNTNjODk1YS5jCi0rKysgYi9ody9zY3NpL2xzaTUzYzg5NWEuYwotQEAgLTE4Niw2ICsxODYsOSBAQCBzdGF0aWMgY29uc3QgY2hhciAqbmFtZXNbXSA9IHsKLSAvKiBGbGFnIHNldCBpZiB0aGlzIGlzIGEgdGFnZ2VkIGNvbW1hbmQuICAqLwotICNkZWZpbmUgTFNJX1RBR19WQUxJRCAgICAgKDEgPDwgMTYpCi0gCi0rLyogTWF4aW11bSBpbnN0cnVjdGlvbnMgdG8gcHJvY2Vzcy4gKi8KLSsjZGVmaW5lIExTSV9NQVhfSU5TTiAgICAxMDAwMAotKwotIHR5cGVkZWYgc3RydWN0IGxzaV9yZXF1ZXN0IHsKLSAgICAgU0NTSVJlcXVlc3QgKnJlcTsKLSAgICAgdWludDMyX3QgdGFnOwotQEAgLTExMzMsNyArMTEzNiwyMSBAQCBzdGF0aWMgdm9pZCBsc2lfZXhlY3V0ZV9zY3JpcHQoTFNJU3RhdGUgKnMpCi0gCi0gICAgIHMtPmlzdGF0MSB8PSBMU0lfSVNUQVQxX1NSVU47Ci0gYWdhaW46Ci0tICAgIGluc25fcHJvY2Vzc2VkKys7Ci0rICAgIGlmICgrK2luc25fcHJvY2Vzc2VkID4gTFNJX01BWF9JTlNOKSB7Ci0rICAgICAgICAvKiBTb21lIHdpbmRvd3MgZHJpdmVycyBtYWtlIHRoZSBkZXZpY2Ugc3BpbiB3YWl0aW5nIGZvciBhIG1lbW9yeQotKyAgICAgICAgICAgbG9jYXRpb24gdG8gY2hhbmdlLiAgSWYgd2UgaGF2ZSBiZWVuIGV4ZWN1dGVkIGEgbG90IG9mIGNvZGUgdGhlbgotKyAgICAgICAgICAgYXNzdW1lIHRoaXMgaXMgdGhlIGNhc2UgYW5kIGZvcmNlIGFuIHVuZXhwZWN0ZWQgZGV2aWNlIGRpc2Nvbm5lY3QuCi0rICAgICAgICAgICBUaGlzIGlzIGFwcGFyZW50bHkgc3VmZmljaWVudCB0byBiZWF0IHRoZSBkcml2ZXJzIGludG8gc3VibWlzc2lvbi4KLSsgICAgICAgICAqLwotKyAgICAgICAgaWYgKCEocy0+c2llbjAgJiBMU0lfU0lTVDBfVURDKSkgewotKyAgICAgICAgICAgIHFlbXVfbG9nX21hc2soTE9HX0dVRVNUX0VSUk9SLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgImxzaV9zY3NpOiBpbmYuIGxvb3Agd2l0aCBVREMgbWFza2VkIik7Ci0rICAgICAgICB9Ci0rICAgICAgICBsc2lfc2NyaXB0X3Njc2lfaW50ZXJydXB0KHMsIExTSV9TSVNUMF9VREMsIDApOwotKyAgICAgICAgbHNpX2Rpc2Nvbm5lY3Qocyk7Ci0rICAgICAgICB0cmFjZV9sc2lfZXhlY3V0ZV9zY3JpcHRfc3RvcCgpOwotKyAgICAgICAgcmV0dXJuOwotKyAgICB9Ci0gICAgIGluc24gPSByZWFkX2R3b3JkKHMsIHMtPmRzcCk7Ci0gICAgIGlmICghaW5zbikgewotICAgICAgICAgLyogSWYgd2UgcmVjZWl2ZSBhbiBlbXB0eSBvcGNvZGUgaW5jcmVtZW50IHRoZSBEU1AgYnkgNCBieXRlcwotQEAgLTE1NzAsMTkgKzE1ODcsNyBAQCBhZ2FpbjoKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgIH0KLS0gICAgaWYgKGluc25fcHJvY2Vzc2VkID4gMTAwMDAgJiYgcy0+d2FpdGluZyA9PSBMU0lfTk9XQUlUKSB7Ci0tICAgICAgICAvKiBTb21lIHdpbmRvd3MgZHJpdmVycyBtYWtlIHRoZSBkZXZpY2Ugc3BpbiB3YWl0aW5nIGZvciBhIG1lbW9yeQotLSAgICAgICAgICAgbG9jYXRpb24gdG8gY2hhbmdlLiAgSWYgd2UgaGF2ZSBiZWVuIGV4ZWN1dGVkIGEgbG90IG9mIGNvZGUgdGhlbgotLSAgICAgICAgICAgYXNzdW1lIHRoaXMgaXMgdGhlIGNhc2UgYW5kIGZvcmNlIGFuIHVuZXhwZWN0ZWQgZGV2aWNlIGRpc2Nvbm5lY3QuCi0tICAgICAgICAgICBUaGlzIGlzIGFwcGFyZW50bHkgc3VmZmljaWVudCB0byBiZWF0IHRoZSBkcml2ZXJzIGludG8gc3VibWlzc2lvbi4KLS0gICAgICAgICAqLwotLSAgICAgICAgaWYgKCEocy0+c2llbjAgJiBMU0lfU0lTVDBfVURDKSkgewotLSAgICAgICAgICAgIHFlbXVfbG9nX21hc2soTE9HX0dVRVNUX0VSUk9SLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgImxzaV9zY3NpOiBpbmYuIGxvb3Agd2l0aCBVREMgbWFza2VkIik7Ci0tICAgICAgICB9Ci0tICAgICAgICBsc2lfc2NyaXB0X3Njc2lfaW50ZXJydXB0KHMsIExTSV9TSVNUMF9VREMsIDApOwotLSAgICAgICAgbHNpX2Rpc2Nvbm5lY3Qocyk7Ci0tICAgIH0gZWxzZSBpZiAocy0+aXN0YXQxICYgTFNJX0lTVEFUMV9TUlVOICYmIHMtPndhaXRpbmcgPT0gTFNJX05PV0FJVCkgewotKyAgICBpZiAocy0+aXN0YXQxICYgTFNJX0lTVEFUMV9TUlVOICYmIHMtPndhaXRpbmcgPT0gTFNJX05PV0FJVCkgewotICAgICAgICAgaWYgKHMtPmRjbnRsICYgTFNJX0RDTlRMX1NTTSkgewotICAgICAgICAgICAgIGxzaV9zY3JpcHRfZG1hX2ludGVycnVwdChzLCBMU0lfRFNUQVRfU1NJKTsKLSAgICAgICAgIH0gZWxzZSB7Ci1AQCAtMTk3MCw2ICsxOTc1LDEwIEBAIHN0YXRpYyB2b2lkIGxzaV9yZWdfd3JpdGViKExTSVN0YXRlICpzLCBpbnQgb2Zmc2V0LCB1aW50OF90IHZhbCkKLSAgICAgY2FzZSAweDJmOiAvKiBEU1BbMjQ6MzFdICovCi0gICAgICAgICBzLT5kc3AgJj0gMHgwMGZmZmZmZjsKLSAgICAgICAgIHMtPmRzcCB8PSB2YWwgPDwgMjQ7Ci0rICAgICAgICAvKgotKyAgICAgICAgICogRklYTUU6IGlmIHMtPndhaXRpbmcgIT0gTFNJX05PV0FJVCwgdGhpcyB3aWxsIG9ubHkgZXhlY3V0ZSBvbmUKLSsgICAgICAgICAqIGluc3RydWN0aW9uLiAgSXMgdGhpcyBjb3JyZWN0PwotKyAgICAgICAgICovCi0gICAgICAgICBpZiAoKHMtPmRtb2RlICYgTFNJX0RNT0RFX01BTikgPT0gMAotICAgICAgICAgICAgICYmIChzLT5pc3RhdDEgJiBMU0lfSVNUQVQxX1NSVU4pID09IDApCi0gICAgICAgICAgICAgbHNpX2V4ZWN1dGVfc2NyaXB0KHMpOwotQEAgLTE5ODgsNiArMTk5NywxMCBAQCBzdGF0aWMgdm9pZCBsc2lfcmVnX3dyaXRlYihMU0lTdGF0ZSAqcywgaW50IG9mZnNldCwgdWludDhfdCB2YWwpCi0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSAweDNiOiAvKiBEQ05UTCAqLwotICAgICAgICAgcy0+ZGNudGwgPSB2YWwgJiB+KExTSV9EQ05UTF9QRkYgfCBMU0lfRENOVExfU1REKTsKLSsgICAgICAgIC8qCi0rICAgICAgICAgKiBGSVhNRTogaWYgcy0+d2FpdGluZyAhPSBMU0lfTk9XQUlULCB0aGlzIHdpbGwgb25seSBleGVjdXRlIG9uZQotKyAgICAgICAgICogaW5zdHJ1Y3Rpb24uICBJcyB0aGlzIGNvcnJlY3Q/Ci0rICAgICAgICAgKi8KLSAgICAgICAgIGlmICgodmFsICYgTFNJX0RDTlRMX1NURCkgJiYgKHMtPmlzdGF0MSAmIExTSV9JU1RBVDFfU1JVTikgPT0gMCkKLSAgICAgICAgICAgICBsc2lfZXhlY3V0ZV9zY3JpcHQocyk7Ci0gICAgICAgICBicmVhazsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTExMTAyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTExMTAyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ZjNlMWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMjAtMTExMDIucGF0Y2gKQEAgLTAsMCArMSwxNDggQEAKK0Zyb20gOGZmYjcyNjVhZjY0ZWM4MTc0ODMzNWVjOGYyMGU3YWI1NDJjMzg1MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFByYXNhZCBKIFBhbmRpdCA8cGpwQGZlZG9yYXByb2plY3Qub3JnPgorRGF0ZTogVHVlLCAyNCBNYXIgMjAyMCAyMjo1NzoyMiArMDUzMAorU3ViamVjdDogW1BBVENIXSBuZXQ6IHR1bGlwOiBjaGVjayBmcmFtZSBzaXplIGFuZCByL3cgZGF0YSBsZW5ndGgKKworVHVsaXAgbmV0d29yayBkcml2ZXIgd2hpbGUgY29weWluZyB0eC9yeCBidWZmZXJzIGRvZXMgbm90IGNoZWNrCitmcmFtZSBzaXplIGFnYWluc3Qgci93IGRhdGEgbGVuZ3RoLiBUaGlzIG1heSBsZWFkIHRvIE9PQiBidWZmZXIKK2FjY2Vzcy4gQWRkIGNoZWNrIHRvIGF2b2lkIGl0LgorCitMaW1pdCBpdGVyYXRpb25zIG92ZXIgZGVzY3JpcHRvcnMgdG8gYXZvaWQgcG90ZW50aWFsIGluZmluaXRlCitsb29wIGlzc3VlIGluIHR1bGlwX3htaXRfbGlzdF91cGRhdGUuCisKK1JlcG9ydGVkLWJ5OiBMaSBRaWFuZyA8cGFuZ3BlaS5scUBhbnRmaW4uY29tPgorUmVwb3J0ZWQtYnk6IFppbWluZyBaaGFuZyA8ZXpyYWtpZXpAZ21haWwuY29tPgorUmVwb3J0ZWQtYnk6IEphc29uIFdhbmcgPGphc293YW5nQHJlZGhhdC5jb20+CitUZXN0ZWQtYnk6IExpIFFpYW5nIDxsaXEzZWFAZ21haWwuY29tPgorUmV2aWV3ZWQtYnk6IExpIFFpYW5nIDxsaXEzZWFAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+CitTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXYW5nIDxqYXNvd2FuZ0ByZWRoYXQuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5xZW11Lm9yZy8/cD1xZW11LmdpdDthPWNvbW1pdDtoPThmZmI3MjY1YWY2NGVjODE3NDgzMzVlYzhmMjBlN2FiNTQyYzM4NTBdCitDVkU6IENWRS0yMDIwLTExMTAyCitTaWduZWQtb2ZmLWJ5OiBDaGVlIFlhbmcgTGVlIDxjaGVlLnlhbmcubGVlQGludGVsLmNvbT4KKy0tLQorIGh3L25ldC90dWxpcC5jIHwgMzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ody9uZXQvdHVsaXAuYyBiL2h3L25ldC90dWxpcC5jCitpbmRleCBjZmFjMjcxLi4xMjk1ZjUxIDEwMDY0NAorLS0tIGEvaHcvbmV0L3R1bGlwLmMKKysrKyBiL2h3L25ldC90dWxpcC5jCitAQCAtMTcwLDYgKzE3MCwxMCBAQCBzdGF0aWMgdm9pZCB0dWxpcF9jb3B5X3J4X2J5dGVzKFRVTElQU3RhdGUgKnMsIHN0cnVjdCB0dWxpcF9kZXNjcmlwdG9yICpkZXNjKQorICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBsZW4gPSBzLT5yeF9mcmFtZV9sZW47CisgICAgICAgICB9CisrCisrICAgICAgICBpZiAocy0+cnhfZnJhbWVfbGVuICsgbGVuID4gc2l6ZW9mKHMtPnJ4X2ZyYW1lKSkgeworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKyAgICAgICAgIHBjaV9kbWFfd3JpdGUoJnMtPmRldiwgZGVzYy0+YnVmX2FkZHIxLCBzLT5yeF9mcmFtZSArCisgICAgICAgICAgICAgKHMtPnJ4X2ZyYW1lX3NpemUgLSBzLT5yeF9mcmFtZV9sZW4pLCBsZW4pOworICAgICAgICAgcy0+cnhfZnJhbWVfbGVuIC09IGxlbjsKK0BAIC0xODEsNiArMTg1LDEwIEBAIHN0YXRpYyB2b2lkIHR1bGlwX2NvcHlfcnhfYnl0ZXMoVFVMSVBTdGF0ZSAqcywgc3RydWN0IHR1bGlwX2Rlc2NyaXB0b3IgKmRlc2MpCisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIGxlbiA9IHMtPnJ4X2ZyYW1lX2xlbjsKKyAgICAgICAgIH0KKysKKysgICAgICAgIGlmIChzLT5yeF9mcmFtZV9sZW4gKyBsZW4gPiBzaXplb2Yocy0+cnhfZnJhbWUpKSB7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorICAgICAgICAgcGNpX2RtYV93cml0ZSgmcy0+ZGV2LCBkZXNjLT5idWZfYWRkcjIsIHMtPnJ4X2ZyYW1lICsKKyAgICAgICAgICAgICAocy0+cnhfZnJhbWVfc2l6ZSAtIHMtPnJ4X2ZyYW1lX2xlbiksIGxlbik7CisgICAgICAgICBzLT5yeF9mcmFtZV9sZW4gLT0gbGVuOworQEAgLTIyNyw3ICsyMzUsOCBAQCBzdGF0aWMgc3NpemVfdCB0dWxpcF9yZWNlaXZlKFRVTElQU3RhdGUgKnMsIGNvbnN0IHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90IHNpemUpCisgCisgICAgIHRyYWNlX3R1bGlwX3JlY2VpdmUoYnVmLCBzaXplKTsKKyAKKy0gICAgaWYgKHNpemUgPCAxNCB8fCBzaXplID4gMjA0OCB8fCBzLT5yeF9mcmFtZV9sZW4gfHwgdHVsaXBfcnhfc3RvcHBlZChzKSkgeworKyAgICBpZiAoc2l6ZSA8IDE0IHx8IHNpemUgPiBzaXplb2Yocy0+cnhfZnJhbWUpIC0gNAorKyAgICAgICAgfHwgcy0+cnhfZnJhbWVfbGVuIHx8IHR1bGlwX3J4X3N0b3BwZWQocykpIHsKKyAgICAgICAgIHJldHVybiAwOworICAgICB9CisgCitAQCAtMjc1LDcgKzI4NCw2IEBAIHN0YXRpYyBzc2l6ZV90IHR1bGlwX3JlY2VpdmVfbmMoTmV0Q2xpZW50U3RhdGUgKm5jLAorICAgICByZXR1cm4gdHVsaXBfcmVjZWl2ZShxZW11X2dldF9uaWNfb3BhcXVlKG5jKSwgYnVmLCBzaXplKTsKKyB9CisgCistCisgc3RhdGljIE5ldENsaWVudEluZm8gbmV0X3R1bGlwX2luZm8gPSB7CisgICAgIC50eXBlID0gTkVUX0NMSUVOVF9EUklWRVJfTklDLAorICAgICAuc2l6ZSA9IHNpemVvZihOSUNTdGF0ZSksCitAQCAtNTU4LDcgKzU2Niw3IEBAIHN0YXRpYyB2b2lkIHR1bGlwX3R4KFRVTElQU3RhdGUgKnMsIHN0cnVjdCB0dWxpcF9kZXNjcmlwdG9yICpkZXNjKQorICAgICAgICAgaWYgKChzLT5jc3JbNl0gPj4gQ1NSNl9PTV9TSElGVCkgJiBDU1I2X09NX01BU0spIHsKKyAgICAgICAgICAgICAvKiBJbnRlcm5hbCBvciBleHRlcm5hbCBMb29wYmFjayAqLworICAgICAgICAgICAgIHR1bGlwX3JlY2VpdmUocywgcy0+dHhfZnJhbWUsIHMtPnR4X2ZyYW1lX2xlbik7CistICAgICAgICB9IGVsc2UgeworKyAgICAgICAgfSBlbHNlIGlmIChzLT50eF9mcmFtZV9sZW4gPD0gc2l6ZW9mKHMtPnR4X2ZyYW1lKSkgeworICAgICAgICAgICAgIHFlbXVfc2VuZF9wYWNrZXQocWVtdV9nZXRfcXVldWUocy0+bmljKSwKKyAgICAgICAgICAgICAgICAgcy0+dHhfZnJhbWUsIHMtPnR4X2ZyYW1lX2xlbik7CisgICAgICAgICB9CitAQCAtNTcwLDIzICs1NzgsMzEgQEAgc3RhdGljIHZvaWQgdHVsaXBfdHgoVFVMSVBTdGF0ZSAqcywgc3RydWN0IHR1bGlwX2Rlc2NyaXB0b3IgKmRlc2MpCisgICAgIH0KKyB9CisgCistc3RhdGljIHZvaWQgdHVsaXBfY29weV90eF9idWZmZXJzKFRVTElQU3RhdGUgKnMsIHN0cnVjdCB0dWxpcF9kZXNjcmlwdG9yICpkZXNjKQorK3N0YXRpYyBpbnQgdHVsaXBfY29weV90eF9idWZmZXJzKFRVTElQU3RhdGUgKnMsIHN0cnVjdCB0dWxpcF9kZXNjcmlwdG9yICpkZXNjKQorIHsKKyAgICAgaW50IGxlbjEgPSAoZGVzYy0+Y29udHJvbCA+PiBUREVTMV9CVUYxX1NJWkVfU0hJRlQpICYgVERFUzFfQlVGMV9TSVpFX01BU0s7CisgICAgIGludCBsZW4yID0gKGRlc2MtPmNvbnRyb2wgPj4gVERFUzFfQlVGMl9TSVpFX1NISUZUKSAmIFRERVMxX0JVRjJfU0laRV9NQVNLOworIAorKyAgICBpZiAocy0+dHhfZnJhbWVfbGVuICsgbGVuMSA+IHNpemVvZihzLT50eF9mcmFtZSkpIHsKKysgICAgICAgIHJldHVybiAtMTsKKysgICAgfQorICAgICBpZiAobGVuMSkgeworICAgICAgICAgcGNpX2RtYV9yZWFkKCZzLT5kZXYsIGRlc2MtPmJ1Zl9hZGRyMSwKKyAgICAgICAgICAgICBzLT50eF9mcmFtZSArIHMtPnR4X2ZyYW1lX2xlbiwgbGVuMSk7CisgICAgICAgICBzLT50eF9mcmFtZV9sZW4gKz0gbGVuMTsKKyAgICAgfQorIAorKyAgICBpZiAocy0+dHhfZnJhbWVfbGVuICsgbGVuMiA+IHNpemVvZihzLT50eF9mcmFtZSkpIHsKKysgICAgICAgIHJldHVybiAtMTsKKysgICAgfQorICAgICBpZiAobGVuMikgeworICAgICAgICAgcGNpX2RtYV9yZWFkKCZzLT5kZXYsIGRlc2MtPmJ1Zl9hZGRyMiwKKyAgICAgICAgICAgICBzLT50eF9mcmFtZSArIHMtPnR4X2ZyYW1lX2xlbiwgbGVuMik7CisgICAgICAgICBzLT50eF9mcmFtZV9sZW4gKz0gbGVuMjsKKyAgICAgfQorICAgICBkZXNjLT5zdGF0dXMgPSAobGVuMSArIGxlbjIpID8gMCA6IDB4N2ZmZmZmZmY7CisrCisrICAgIHJldHVybiAwOworIH0KKyAKKyBzdGF0aWMgdm9pZCB0dWxpcF9zZXR1cF9maWx0ZXJfYWRkcihUVUxJUFN0YXRlICpzLCB1aW50OF90ICpidWYsIGludCBuKQorQEAgLTY1MSwxMyArNjY3LDE1IEBAIHN0YXRpYyB1aW50MzJfdCB0dWxpcF90cyhUVUxJUFN0YXRlICpzKQorIAorIHN0YXRpYyB2b2lkIHR1bGlwX3htaXRfbGlzdF91cGRhdGUoVFVMSVBTdGF0ZSAqcykKKyB7CisrI2RlZmluZSBUVUxJUF9ERVNDX01BWCAxMjgKKysgICAgdWludDhfdCBpID0gMDsKKyAgICAgc3RydWN0IHR1bGlwX2Rlc2NyaXB0b3IgZGVzYzsKKyAKKyAgICAgaWYgKHR1bGlwX3RzKHMpICE9IENTUjVfVFNfU1VTUEVOREVEKSB7CisgICAgICAgICByZXR1cm47CisgICAgIH0KKyAKKy0gICAgZm9yICg7OykgeworKyAgICBmb3IgKGkgPSAwOyBpIDwgVFVMSVBfREVTQ19NQVg7IGkrKykgeworICAgICAgICAgdHVsaXBfZGVzY19yZWFkKHMsIHMtPmN1cnJlbnRfdHhfZGVzYywgJmRlc2MpOworICAgICAgICAgdHVsaXBfZHVtcF90eF9kZXNjcmlwdG9yKHMsICZkZXNjKTsKKyAKK0BAIC02NzUsMTAgKzY5MywxMCBAQCBzdGF0aWMgdm9pZCB0dWxpcF94bWl0X2xpc3RfdXBkYXRlKFRVTElQU3RhdGUgKnMpCisgICAgICAgICAgICAgICAgIHMtPnR4X2ZyYW1lX2xlbiA9IDA7CisgICAgICAgICAgICAgfQorIAorLSAgICAgICAgICAgIHR1bGlwX2NvcHlfdHhfYnVmZmVycyhzLCAmZGVzYyk7CistCistICAgICAgICAgICAgaWYgKGRlc2MuY29udHJvbCAmIFRERVMxX0xTKSB7CistICAgICAgICAgICAgICAgIHR1bGlwX3R4KHMsICZkZXNjKTsKKysgICAgICAgICAgICBpZiAoIXR1bGlwX2NvcHlfdHhfYnVmZmVycyhzLCAmZGVzYykpIHsKKysgICAgICAgICAgICAgICAgaWYgKGRlc2MuY29udHJvbCAmIFRERVMxX0xTKSB7CisrICAgICAgICAgICAgICAgICAgICB0dWxpcF90eChzLCAmZGVzYyk7CisrICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgICB0dWxpcF9kZXNjX3dyaXRlKHMsIHMtPmN1cnJlbnRfdHhfZGVzYywgJmRlc2MpOworLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC0xNzExLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTE3MTEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE3YmM4MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC0xNzExLnBhdGNoCkBAIC0wLDAgKzEsNjQgQEAKK0Zyb20gNjkzZmQyYWNkZjE0ZGQ4NmMwYmY4NTI2MTBmMWMyY2NhODBhNzRkYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZlbGlwZSBGcmFuY2lvc2kgPGZlbGlwZUBudXRhbml4LmNvbT4KK0RhdGU6IFRodSwgMjMgSmFuIDIwMjAgMTI6NDQ6NTkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gaXNjc2k6IENhcCBibG9jayBjb3VudCBmcm9tIEdFVCBMQkEgU1RBVFVTIChDVkUtMjAyMC0xNzExKQorCitXaGVuIHF1ZXJ5aW5nIGFuIGlTQ1NJIHNlcnZlciBmb3IgdGhlIHByb3Zpc2lvbmluZyBzdGF0dXMgb2YgYmxvY2tzICh2aWEKK0dFVCBMQkEgU1RBVFVTKSwgUWVtdSBvbmx5IHZhbGlkYXRlcyB0aGF0IHRoZSByZXNwb25zZSBkZXNjcmlwdG9yIHplcm8ncworTEJBIG1hdGNoZXMgdGhlIG9uZSByZXF1ZXN0ZWQuIEdpdmVuIHRoZSBTQ1NJIHNwZWMgYWxsb3dzIHNlcnZlcnMgdG8KK3Jlc3BvbmQgd2l0aCB0aGUgc3RhdHVzIG9mIGJsb2NrcyBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgTFVOLCBRZW11IG1heQoraGF2ZSBpdHMgaGVhcCBjb3JydXB0ZWQgYnkgY2xlYXJpbmcvc2V0dGluZyB0b28gbWFueSBiaXRzIGF0IHRoZSBlbmQgb2YKK2l0cyBhbGxvY21hcCBmb3IgdGhlIExVTi4KKworQSBtYWxpY2lvdXMgZ3Vlc3QgaW4gY29udHJvbCBvZiB0aGUgaVNDU0kgc2VydmVyIGNvdWxkIGNhcmVmdWxseSBwcm9ncmFtCitRZW11J3MgaGVhcCAoYnkgc2VsZWN0aXZlbHkgc2V0dGluZyB0aGUgYml0bWFwKSBhbmQgdGhlbiBzbWFzaCBpdC4KKworVGhpcyBsaW1pdHMgdGhlIG51bWJlciBvZiBiaXRzIHRoYXQgaXNjc2lfY29fYmxvY2tfc3RhdHVzKCkgd2lsbCB0cnkgdG8KK3VwZGF0ZSBpbiB0aGUgYWxsb2NtYXAgc28gaXQgY2FuJ3Qgb3ZlcmZsb3cgdGhlIGJpdG1hcC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQucWVtdS5vcmcvP3A9cWVtdS5naXQ7YT1wYXRjaDtoPTY5M2ZkMmFjZGYxNGRkODZjMGJmODUyNjEwZjFjMmNjYTgwYTc0ZGNdCitDVkU6IENWRS0yMDIwLTE3MTEKKworRml4ZXM6IENWRS0yMDIwLTE3MTEKK0NjOiBxZW11LXN0YWJsZUBub25nbnUub3JnCitTaWduZWQtb2ZmLWJ5OiBGZWxpcGUgRnJhbmNpb3NpIDxmZWxpcGVAbnV0YW5peC5jb20+CitTaWduZWQtb2ZmLWJ5OiBQZXRlciBUdXJzY2htaWQgPHBldGVyLnR1cnNjaG1AbnV0YW5peC5jb20+CitTaWduZWQtb2ZmLWJ5OiBSYXBoYWVsIE5vcndpdHogPHJhcGhhZWwubm9yd2l0ekBudXRhbml4LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtldmluIFdvbGYgPGt3b2xmQHJlZGhhdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBMZWUgQ2hlZSBZYW5nIDxjaGVlLnlhbmcubGVlQGludGVsLmNvbT4KKy0tLQorIGJsb2NrL2lzY3NpLmMgfCA1ICsrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2Jsb2NrL2lzY3NpLmMgYi9ibG9jay9pc2NzaS5jCitpbmRleCAyYWVhN2UzLi5jYmQ1NzI5IDEwMDY0NAorLS0tIGEvYmxvY2svaXNjc2kuYworKysrIGIvYmxvY2svaXNjc2kuYworQEAgLTcwMSw3ICs3MDEsNyBAQCBzdGF0aWMgaW50IGNvcm91dGluZV9mbiBpc2NzaV9jb19ibG9ja19zdGF0dXMoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsCisgICAgIHN0cnVjdCBzY3NpX2dldF9sYmFfc3RhdHVzICpsYmFzID0gTlVMTDsKKyAgICAgc3RydWN0IHNjc2lfbGJhX3N0YXR1c19kZXNjcmlwdG9yICpsYmFzZCA9IE5VTEw7CisgICAgIHN0cnVjdCBJc2NzaVRhc2sgaVRhc2s7CistICAgIHVpbnQ2NF90IGxiYTsKKysgICAgdWludDY0X3QgbGJhLCBtYXhfYnl0ZXM7CisgICAgIGludCByZXQ7CisgCisgICAgIGlzY3NpX2NvX2luaXRfaXNjc2l0YXNrKGlzY3NpbHVuLCAmaVRhc2spOworQEAgLTcyMSw2ICs3MjEsNyBAQCBzdGF0aWMgaW50IGNvcm91dGluZV9mbiBpc2NzaV9jb19ibG9ja19zdGF0dXMoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsCisgICAgIH0KKyAKKyAgICAgbGJhID0gb2Zmc2V0IC8gaXNjc2lsdW4tPmJsb2NrX3NpemU7CisrICAgIG1heF9ieXRlcyA9IChpc2NzaWx1bi0+bnVtX2Jsb2NrcyAtIGxiYSkgKiBpc2NzaWx1bi0+YmxvY2tfc2l6ZTsKKyAKKyAgICAgcWVtdV9tdXRleF9sb2NrKCZpc2NzaWx1bi0+bXV0ZXgpOworIHJldHJ5OgorQEAgLTc2NCw3ICs3NjUsNyBAQCByZXRyeToKKyAgICAgICAgIGdvdG8gb3V0X3VubG9jazsKKyAgICAgfQorIAorLSAgICAqcG51bSA9IChpbnQ2NF90KSBsYmFzZC0+bnVtX2Jsb2NrcyAqIGlzY3NpbHVuLT5ibG9ja19zaXplOworKyAgICAqcG51bSA9IE1JTigoaW50NjRfdCkgbGJhc2QtPm51bV9ibG9ja3MgKiBpc2NzaWx1bi0+YmxvY2tfc2l6ZSwgbWF4X2J5dGVzKTsKKyAKKyAgICAgaWYgKGxiYXNkLT5wcm92aXNpb25pbmcgPT0gU0NTSV9QUk9WSVNJT05JTkdfVFlQRV9ERUFMTE9DQVRFRCB8fAorICAgICAgICAgbGJhc2QtPnByb3Zpc2lvbmluZyA9PSBTQ1NJX1BST1ZJU0lPTklOR19UWVBFX0FOQ0hPUkVEKSB7CistLSAKKzEuOC4zLjEKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MDM5LTEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMjAtNzAzOS0xLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNmJjYTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMjAtNzAzOS0xLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0Zyb20gYjI2NjNkNTI3YTE5OTJiYTk4YzAyNjY0NThiMjFhZGEzYjlkMGQyZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI3IEZlYiAyMDIwIDEyOjA3OjM1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHRjcF9lbXU6IEZpeCBvb2IgYWNjZXNzCisKK1RoZSBtYWluIGxvb3Agb25seSBjaGVja3MgZm9yIG9uZSBhdmFpbGFibGUgYnl0ZSwgd2hpbGUgd2Ugc29tZXRpbWVzCituZWVkIHR3byBieXRlcy4KKworQ1ZFOiBDVkUtMjAyMC03MDM5CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL3NsaXJwL2xpYnNsaXJwL2NvbW1pdC8yNjU1ZmZmZWQ3YTllNzY1YmNiNDcwMWRkODc2ZTlkYWI5NzVmMjg5XQorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgc2xpcnAvc3JjL3RjcF9zdWJyLmMgfCA2ICsrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NsaXJwL3NyYy90Y3Bfc3Vici5jIGIvc2xpcnAvc3JjL3RjcF9zdWJyLmMKK2luZGV4IGQ2ZGQxMzMuLjRiZWEyZDQgMTAwNjQ0CistLS0gYS9zbGlycC9zcmMvdGNwX3N1YnIuYworKysrIGIvc2xpcnAvc3JjL3RjcF9zdWJyLmMKK0BAIC04ODYsNiArODg2LDggQEAgaW50IHRjcF9lbXUoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICptKQorICAgICAgICAgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgICAgICBjYXNlIDU6CisrICAgICAgICAgICAgICAgIGlmIChicHRyID09IG0tPm1fZGF0YSArIG0tPm1fbGVuIC0gMSkKKysgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsgLyogV2UgbmVlZCB0d28gYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICogVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB2ZXJzaW9ucyAxLjAgYW5kCisgICAgICAgICAgICAgICAgICAqIDIuMCBpcyBoZXJlLiBGb3IgZnV0dXJlIHZlcnNpb25zIG9mCitAQCAtOTAxLDYgKzkwMywxMCBAQCBpbnQgdGNwX2VtdShzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm0pCisgICAgICAgICAgICAgICAgIC8qIFRoaXMgaXMgdGhlIGZpZWxkIGNvbnRhaW5pbmcgdGhlIHBvcnQKKyAgICAgICAgICAgICAgICAgICogbnVtYmVyIHRoYXQgUkEtcGxheWVyIGlzIGxpc3RlbmluZyB0by4KKyAgICAgICAgICAgICAgICAgICovCisrCisrICAgICAgICAgICAgICAgIGlmIChicHRyID09IG0tPm1fZGF0YSArIG0tPm1fbGVuIC0gMSkKKysgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsgLyogV2UgbmVlZCB0d28gYnl0ZXMgKi8KKysKKyAgICAgICAgICAgICAgICAgbHBvcnQgPSAoKCh1aW50OF90ICopYnB0cilbMF0gPDwgOCkgKyAoKHVpbnQ4X3QgKilicHRyKVsxXTsKKyAgICAgICAgICAgICAgICAgaWYgKGxwb3J0IDwgNjk3MCkKKyAgICAgICAgICAgICAgICAgICAgIGxwb3J0ICs9IDI1NjsgLyogZG9uJ3Qga25vdyB3aHkgKi8KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTcwMzktMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MDM5LTIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGEwMGZhMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MDM5LTIucGF0Y2gKQEAgLTAsMCArMSw1OSBAQAorRnJvbSA4ZjY3ZTc2ZTQxNDhlMzdmM2Q4ZDJiY2JkZWU3NDE3ZmRlZGI3NjY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjcgRmViIDIwMjAgMTI6MTA6MzQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc2xpcnA6IHVzZSBjb3JyZWN0IHNpemUgd2hpbGUgZW11bGF0aW5nIGNvbW1hbmRzCisKK1doaWxlIGVtdWxhdGluZyBzZXJ2aWNlcyBpbiB0Y3BfZW11KCksIGl0IHVzZXMgJ21idWYnIHNpemUKKydtLT5tX3NpemUnIHRvIHdyaXRlIGNvbW1hbmRzIHZpYSBzbnByaW50ZigzKS4gVXNlIE1fRlJFRVJPT00obSkKK3NpemUgdG8gYXZvaWQgcG9zc2libGUgT09CIGFjY2Vzcy4KK1NpZ25lZC1vZmYtYnk6IGRlZmF1bHQgYXZhdGFyUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+CitTaWduZWQtb2ZmLWJ5OiBTYW11ZWwgVGhpYmF1bHQncyBhdmF0YXJTYW11ZWwgVGhpYmF1bHQKKzxzYW11ZWwudGhpYmF1bHRAZW5zLWx5b24ub3JnPgorTWVzc2FnZS1JZDogPDIwMjAwMTA5MDk0MjI4Ljc5NzY0LTMtcHBhbmRpdEByZWRoYXQuY29tPgorCitDVkU6IENWRS0yMDIwLTcwMzkKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvc2xpcnAvbGlic2xpcnAvY29tbWl0LzgyZWJlOWMzNzBhMGUyOTcwZmI1Njk1YWExOWFhNTIxNGE2YTFjODBdCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBzbGlycC9zcmMvdGNwX3N1YnIuYyB8IDkgKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NsaXJwL3NyYy90Y3Bfc3Vici5jIGIvc2xpcnAvc3JjL3RjcF9zdWJyLmMKK2luZGV4IDRiZWEyZDQuLmU4ZWQ0ZWYgMTAwNjQ0CistLS0gYS9zbGlycC9zcmMvdGNwX3N1YnIuYworKysrIGIvc2xpcnAvc3JjL3RjcF9zdWJyLmMKK0BAIC02OTYsNyArNjk2LDcgQEAgaW50IHRjcF9lbXUoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICptKQorICAgICAgICAgICAgIG40ID0gKGxhZGRyICYgMHhmZik7CisgCisgICAgICAgICAgICAgbS0+bV9sZW4gPSBicHRyIC0gbS0+bV9kYXRhOyAvKiBBZGp1c3QgbGVuZ3RoICovCistICAgICAgICAgICAgbS0+bV9sZW4gKz0gc25wcmludGYoYnB0ciwgbS0+bV9zaXplIC0gbS0+bV9sZW4sCisrICAgICAgICAgICAgbS0+bV9sZW4gKz0gc25wcmludGYoYnB0ciwgTV9GUkVFUk9PTShtKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT1JUICVkLCVkLCVkLCVkLCVkLCVkXHJcbiVzIiwgbjEsIG4yLCBuMywgbjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjUsIG42LCB4ID09IDcgPyBidWZmIDogIiIpOworICAgICAgICAgICAgIHJldHVybiAxOworQEAgLTczMSw4ICs3MzEsNyBAQCBpbnQgdGNwX2VtdShzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm0pCisgICAgICAgICAgICAgbjQgPSAobGFkZHIgJiAweGZmKTsKKyAKKyAgICAgICAgICAgICBtLT5tX2xlbiA9IGJwdHIgLSBtLT5tX2RhdGE7IC8qIEFkanVzdCBsZW5ndGggKi8KKy0gICAgICAgICAgICBtLT5tX2xlbiArPQorLSAgICAgICAgICAgICAgICBzbnByaW50ZihicHRyLCBtLT5tX3NpemUgLSBtLT5tX2xlbiwKKysgICAgICAgICAgICBtLT5tX2xlbiArPSBzbnByaW50ZihicHRyLCBNX0ZSRUVST09NKG0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiMjcgRW50ZXJpbmcgUGFzc2l2ZSBNb2RlICglZCwlZCwlZCwlZCwlZCwlZClcclxuJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCB4ID09IDcgPyBidWZmIDogIiIpOworIAorQEAgLTc1OCw4ICs3NTcsOCBAQCBpbnQgdGNwX2VtdShzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm0pCisgICAgICAgICBpZiAobS0+bV9kYXRhW20tPm1fbGVuIC0gMV0gPT0gJ1wwJyAmJiBscG9ydCAhPSAwICYmCisgICAgICAgICAgICAgKHNvID0gdGNwX2xpc3RlbihzbGlycCwgSU5BRERSX0FOWSwgMCwgc28tPnNvX2xhZGRyLnNfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0b25zKGxwb3J0KSwgU1NfRkFDQ0VQVE9OQ0UpKSAhPSBOVUxMKQorLSAgICAgICAgICAgIG0tPm1fbGVuID0KKy0gICAgICAgICAgICAgICAgc25wcmludGYobS0+bV9kYXRhLCBtLT5tX3NpemUsICIlZCIsIG50b2hzKHNvLT5zb19mcG9ydCkpICsgMTsKKysgICAgICAgICAgICBtLT5tX2xlbiA9IHNucHJpbnRmKG0tPm1fZGF0YSwgTV9ST09NKG0pLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVkIiwgbnRvaHMoc28tPnNvX2Zwb3J0KSkgKyAxOworICAgICAgICAgcmV0dXJuIDE7CisgCisgICAgIGNhc2UgRU1VX0lSQzoKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTcwMzktMy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MDM5LTMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBjZTQ4MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MDM5LTMucGF0Y2gKQEAgLTAsMCArMSw2NCBAQAorRnJvbSAwYjAzOTU5YjcyMDM2YWZjZTE1MTc4MzcyMGQ5ZTU0OTg4Y2Y3NmVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjcgRmViIDIwMjAgMTI6MTU6MDQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc2xpcnA6IHVzZSBjb3JyZWN0IHNpemUgd2hpbGUgZW11bGF0aW5nIElSQyBjb21tYW5kcworCitXaGlsZSBlbXVsYXRpbmcgSVJDIERDQyBjb21tYW5kcywgdGNwX2VtdSgpIHVzZXMgJ21idWYnIHNpemUKKydtLT5tX3NpemUnIHRvIHdyaXRlIERDQyBjb21tYW5kcyB2aWEgc25wcmludGYoMykuIFRoaXMgbWF5CitsZWFkIHRvIE9PQiB3cml0ZSBhY2Nlc3MsIGJlY2F1c2UgJ2JwdHInIHBvaW50cyBzb21ld2hlcmUgaW4KK3RoZSBtaWRkbGUgb2YgJ21idWYnIGJ1ZmZlciwgbm90IGF0IHRoZSBzdGFydC4gVXNlIE1fRlJFRVJPT00obSkKK3NpemUgdG8gYXZvaWQgT09CIGFjY2Vzcy4KK1JlcG9ydGVkLWJ5OiBkZWZhdWx0IGF2YXRhclZpc2hudSBEZXYgVEogPHZpc2hudWRldnRqQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IGRlZmF1bHQgYXZhdGFyUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+CitSZXZpZXdlZC1ieTogU2FtdWVsIFRoaWJhdWx0J3MgYXZhdGFyU2FtdWVsIFRoaWJhdWx0Cis8c2FtdWVsLnRoaWJhdWx0QGVucy1seW9uLm9yZz4KK01lc3NhZ2UtSWQ6IDwyMDIwMDEwOTA5NDIyOC43OTc2NC0yLXBwYW5kaXRAcmVkaGF0LmNvbT4KKworQ1ZFOiBDVkUtMjAyMC03MDM5CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL3NsaXJwL2xpYnNsaXJwL2NvbW1pdC9jZTEzMTAyOWQ2ZDRhNDA1Y2I3ZDNhYzY3MTZkMDNlNThmYjRhNWQ5XQorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgc2xpcnAvc3JjL3RjcF9zdWJyLmMgfCAxMSArKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zbGlycC9zcmMvdGNwX3N1YnIuYyBiL3NsaXJwL3NyYy90Y3Bfc3Vici5jCitpbmRleCBlOGVkNGVmLi4zYTRhOGVlIDEwMDY0NAorLS0tIGEvc2xpcnAvc3JjL3RjcF9zdWJyLmMKKysrKyBiL3NsaXJwL3NyYy90Y3Bfc3Vici5jCitAQCAtNzc3LDcgKzc3Nyw4IEBAIGludCB0Y3BfZW11KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIG0tPm1fbGVuID0gYnB0ciAtIG0tPm1fZGF0YTsgLyogQWRqdXN0IGxlbmd0aCAqLworLSAgICAgICAgICAgIG0tPm1fbGVuICs9IHNucHJpbnRmKGJwdHIsIG0tPm1fc2l6ZSwgIkRDQyBDSEFUIGNoYXQgJWx1ICV1JWNcbiIsCisrICAgICAgICAgICAgbS0+bV9sZW4gKz0gc25wcmludGYoYnB0ciwgTV9GUkVFUk9PTShtKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRENDIENIQVQgY2hhdCAlbHUgJXUlY1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZyludG9obChzby0+c29fZmFkZHIuc19hZGRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudG9ocyhzby0+c29fZnBvcnQpLCAxKTsKKyAgICAgICAgIH0gZWxzZSBpZiAoc3NjYW5mKGJwdHIsICJEQ0MgU0VORCAlMjU2cyAldSAldSAldSIsIGJ1ZmYsICZsYWRkciwgJmxwb3J0LAorQEAgLTc4Nyw4ICs3ODgsOCBAQCBpbnQgdGNwX2VtdShzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm0pCisgICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBtLT5tX2xlbiA9IGJwdHIgLSBtLT5tX2RhdGE7IC8qIEFkanVzdCBsZW5ndGggKi8KKy0gICAgICAgICAgICBtLT5tX2xlbiArPQorLSAgICAgICAgICAgICAgICBzbnByaW50ZihicHRyLCBtLT5tX3NpemUsICJEQ0MgU0VORCAlcyAlbHUgJXUgJXUlY1xuIiwgYnVmZiwKKysgICAgICAgICAgICBtLT5tX2xlbiArPSBzbnByaW50ZihicHRyLCBNX0ZSRUVST09NKG0pLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAiRENDIFNFTkQgJXMgJWx1ICV1ICV1JWNcbiIsIGJ1ZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKW50b2hsKHNvLT5zb19mYWRkci5zX2FkZHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBudG9ocyhzby0+c29fZnBvcnQpLCBuMSwgMSk7CisgICAgICAgICB9IGVsc2UgaWYgKHNzY2FuZihicHRyLCAiRENDIE1PVkUgJTI1NnMgJXUgJXUgJXUiLCBidWZmLCAmbGFkZHIsICZscG9ydCwKK0BAIC03OTgsOCArNzk5LDggQEAgaW50IHRjcF9lbXUoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICptKQorICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgbS0+bV9sZW4gPSBicHRyIC0gbS0+bV9kYXRhOyAvKiBBZGp1c3QgbGVuZ3RoICovCistICAgICAgICAgICAgbS0+bV9sZW4gKz0KKy0gICAgICAgICAgICAgICAgc25wcmludGYoYnB0ciwgbS0+bV9zaXplLCAiRENDIE1PVkUgJXMgJWx1ICV1ICV1JWNcbiIsIGJ1ZmYsCisrICAgICAgICAgICAgbS0+bV9sZW4gKz0gc25wcmludGYoYnB0ciwgTV9GUkVFUk9PTShtKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIkRDQyBNT1ZFICVzICVsdSAldSAldSVjXG4iLCBidWZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZyludG9obChzby0+c29fZmFkZHIuc19hZGRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbnRvaHMoc28tPnNvX2Zwb3J0KSwgbjEsIDEpOworICAgICAgICAgfQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMjAtNzIxMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MjExLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExYmU0YzkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMjAtNzIxMS5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDE0ZWMzNmUxMDdhOGM5YWY3ZDBhODBjMzU3MWZlMzliMjkxZmYxZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQcmFzYWQgSiBQYW5kaXQgPHBqcEBmZWRvcmFwcm9qZWN0Lm9yZz4KK0RhdGU6IE1vbiwgMTMgSmFuIDIwMjAgMTc6NDQ6MzEgKzA1MzAKK1N1YmplY3Q6IFtQQVRDSF0gc2xpcnA6IHRmdHA6IHJlc3RyaWN0IHJlbGF0aXZlIHBhdGggYWNjZXNzCisKK3RmdHAgcmVzdHJpY3RzIHJlbGF0aXZlIG9yIGRpcmVjdG9yeSBwYXRoIGFjY2VzcyBvbiBMaW51eCBzeXN0ZW1zLgorQXBwbHkgc2FtZSByZXN0cmljdGlvbnMgb24gV2luZG93cyBzeXN0ZW1zIHRvby4gSXQgaGVscHMgdG8gYXZvaWQKK2RpcmVjdG9yeSB0cmF2ZXJzYWwgaXNzdWUuCisKK0ZpeGVzOiBodHRwczovL2J1Z3MubGF1bmNocGFkLm5ldC9xZW11LytidWcvMTgxMjQ1MQorUmVwb3J0ZWQtYnk6IFBldGVyIE1heWRlbGwgPHBldGVyLm1heWRlbGxAbGluYXJvLm9yZz4KK1NpZ25lZC1vZmYtYnk6IFByYXNhZCBKIFBhbmRpdCA8cGpwQGZlZG9yYXByb2plY3Qub3JnPgorUmV2aWV3ZWQtYnk6IFNhbXVlbCBUaGliYXVsdCA8c2FtdWVsLnRoaWJhdWx0QGVucy1seW9uLm9yZz4KK01lc3NhZ2UtSWQ6IDwyMDIwMDExMzEyMTQzMS4xNTY3MDgtMS1wcGFuZGl0QHJlZGhhdC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9zbGlycC9saWJzbGlycC8tL2NvbW1pdC8xNGVjMzZlMTA3YThjOWFmN2QwYTgwYzM1NzFmZTM5YjI5MWZmMWQ0LnBhdGNoXQorQ1ZFOiBDVkUtMjAyMC03MjExCitTaWduZWQtb2ZmLWJ5OiBDaGVlIFlhbmcgTGVlIDxjaGVlLnlhbmcubGVlQGludGVsLmNvbT4KKworLS0tCisgc2xpcnAvc3JjL3RmdHAuYyB8IDkgKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NsaXJwL3NyYy90ZnRwLmMgYi9zbGlycC9zcmMvdGZ0cC5jCitpbmRleCAwOTNjMmUwLi5lNTJlNzFiIDEwMDY0NAorLS0tIGEvc2xpcnAvc3JjL3RmdHAuYworKysrIGIvc2xpcnAvc3JjL3RmdHAuYworQEAgLTM0NCw4ICszNDQsMTMgQEAgc3RhdGljIHZvaWQgdGZ0cF9oYW5kbGVfcnJxKFNsaXJwICpzbGlycCwgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKnNyY3NhcywKKyAgICAgayArPSA2OyAvKiBza2lwcGluZyBvY3RldCAqLworIAorICAgICAvKiBkbyBzYW5pdHkgY2hlY2tzIG9uIHRoZSBmaWxlbmFtZSAqLworLSAgICBpZiAoIXN0cm5jbXAocmVxX2ZuYW1lLCAiLi4vIiwgMykgfHwKKy0gICAgICAgIHJlcV9mbmFtZVtzdHJsZW4ocmVxX2ZuYW1lKSAtIDFdID09ICcvJyB8fCBzdHJzdHIocmVxX2ZuYW1lLCAiLy4uLyIpKSB7CisrICAgIGlmICgKKysjaWZkZWYgR19PU19XSU4zMgorKyAgICAgICAgc3Ryc3RyKHJlcV9mbmFtZSwgIi4uXFwiKSB8fAorKyAgICAgICAgcmVxX2ZuYW1lW3N0cmxlbihyZXFfZm5hbWUpIC0gMV0gPT0gJ1xcJyB8fAorKyNlbmRpZgorKyAgICAgICAgc3Ryc3RyKHJlcV9mbmFtZSwgIi4uLyIpIHx8CisrICAgICAgICByZXFfZm5hbWVbc3RybGVuKHJlcV9mbmFtZSkgLSAxXSA9PSAnLycpIHsKKyAgICAgICAgIHRmdHBfc2VuZF9lcnJvcihzcHQsIDIsICJBY2Nlc3MgdmlvbGF0aW9uIiwgdHApOworICAgICAgICAgcmV0dXJuOworICAgICB9CistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L3J1bi1wdGVzdAppbmRleCAyMjA2YjMxLi5iMjVhNzkyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvcnVuLXB0ZXN0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9ydW4tcHRlc3QKQEAgLTcsNCArNyw0IEBACiBleHBvcnQgU1JDX1BBVEg9JHB0ZXN0ZGlyCiAKIGNkICRwdGVzdGRpci90ZXN0cwotbWFrZSAtZiBNYWtlZmlsZS5pbmNsdWRlIC1rIHJ1bnRlc3QtVEVTVFMgfCBzZWQgJy86IE9LLyBzL14vUEFTUzogL2cnCittYWtlIC1mIE1ha2VmaWxlLmluY2x1ZGUgLWsgcnVudGVzdC1URVNUUyB8IHNlZCAnL15vayAvcy9vayAvUEFTUzogL2cnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfNC4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfNC4yLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV80LjEuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11XzQuMi4wLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1SaXAtb3V0LXBhcnRpYWwtc3VwcG9ydC1mb3ItdW51c2VkLU1EMi1hbmQtUklQRU1EMTYwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtUmlwLW91dC1wYXJ0aWFsLXN1cHBvcnQtZm9yLXVudXNlZC1NRDItYW5kLVJJUEVNRDE2MC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzRlMzhiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtUmlwLW91dC1wYXJ0aWFsLXN1cHBvcnQtZm9yLXVudXNlZC1NRDItYW5kLVJJUEVNRDE2MC5wYXRjaApAQCAtMCwwICsxLDgxIEBACitGcm9tIDJkNTNkMWUzMDhhNWJkMTVhMTZjYzI4OWZhN2UxZjI2NGVhNzA2YmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYW51IE1hdGlsYWluZW4gPHBtYXRpbGFpQHJlZGhhdC5jb20+CitEYXRlOiBUdWUsIDI2IEp1biAyMDE4IDEwOjQ2OjE0ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIFJpcCBvdXQgcGFydGlhbCBzdXBwb3J0IGZvciB1bnVzZWQgTUQyIGFuZCBSSVBFTUQxNjAgZGlnZXN0cworCitJbnNwaXJlZCBieSAjNDUzLCBhZGRpbmcgY29uZmlndXJlLWNoZWNrcyBmb3IgdW51c2VkIGRpZ2VzdHMgYWxnb3JpdGhtcworc2VlbXMgbm9uc2Vuc2ljYWwsIGF0IG5vIHBvaW50IGluIHJwbSBoaXN0b3J5IGhhdmUgdGhlc2UgYWxnb3JpdGhtcyBiZWVuCit1c2VkIGZvciBhbnl0aGluZyBpbiBycG0gc28gdGhlcmUncyBub3QgZXZlbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRvCitjYXJlIGFib3V0LiBTbyB0aGUgcXVlc3Rpb24gYmVjb21lcyB3aHkgZG8gd2UgYXBwZWFyIHRvIGhhdmUgKHNvbWUpCitzdXBwb3J0IGZvciB0aG9zZSB1bnVzZWQgYWxnb3JpdGhtcz8gU28gbGV0cyBkb24ndCwgcHJvYmxlbSBzb2x2ZWQuLi4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9jb21taXQvZmY0YjkxMTFhZWJhMDFkZDAyNWRkMTMzY2U2MTdmYjgwZjczOThhMF0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgcnBtaW8vZGlnZXN0X2JlZWNyeXB0LmMgfCA3IC0tLS0tLS0KKyBycG1pby9kaWdlc3RfbnNzLmMgICAgICB8IDIgLS0KKyBycG1pby9kaWdlc3Rfb3BlbnNzbC5jICB8IDYgLS0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3JwbWlvL2RpZ2VzdF9iZWVjcnlwdC5jIGIvcnBtaW8vZGlnZXN0X2JlZWNyeXB0LmMKK2luZGV4IDU5NzAyN2UyNS4uNjUzYTM5NDkxIDEwMDY0NAorLS0tIGEvcnBtaW8vZGlnZXN0X2JlZWNyeXB0LmMKKysrKyBiL3JwbWlvL2RpZ2VzdF9iZWVjcnlwdC5jCitAQCAtMTMyLDEwICsxMzIsNiBAQCBESUdFU1RfQ1RYIHJwbURpZ2VzdEluaXQoaW50IGhhc2hhbGdvLCBycG1EaWdlc3RGbGFncyBmbGFncykKKyAJY3R4LT5EaWdlc3QgPSAodm9pZCAqKSBzaGE1MTJEaWdlc3Q7CisgCWJyZWFrOworICNlbmRpZgorLSAgICBjYXNlIFBHUEhBU0hBTEdPX1JJUEVNRDE2MDoKKy0gICAgY2FzZSBQR1BIQVNIQUxHT19NRDI6CistICAgIGNhc2UgUEdQSEFTSEFMR09fVElHRVIxOTI6CistICAgIGNhc2UgUEdQSEFTSEFMR09fSEFWQUxfNV8xNjA6CisgICAgIGRlZmF1bHQ6CisgCWZyZWUoY3R4KTsKKyAJcmV0dXJuIE5VTEw7CitAQCAtMjkyLDkgKzI4OCw2IEBAIHN0YXRpYyBpbnQgcGdwVmVyaWZ5U2lnUlNBKHBncERpZ0FsZyBwZ3BrZXksIHBncERpZ0FsZyBwZ3BzaWcsIHVpbnQ4X3QgKmhhc2gsIHNpCisgICAgIGNhc2UgUEdQSEFTSEFMR09fU0hBMToKKyAgICAgICAgIHByZWZpeCA9ICIzMDIxMzAwOTA2MDUyYjBlMDMwMjFhMDUwMDA0MTQiOworICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgUEdQSEFTSEFMR09fTUQyOgorLSAgICAgICAgcHJlZml4ID0gIjMwMjAzMDBjMDYwODJhODY0ODg2ZjcwZDAyMDIwNTAwMDQxMCI7CistICAgICAgICBicmVhazsKKyAgICAgY2FzZSBQR1BIQVNIQUxHT19TSEEyNTY6CisgICAgICAgICBwcmVmaXggPSAiMzAzMTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMDA0MjAiOworICAgICAgICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvcnBtaW8vZGlnZXN0X25zcy5jIGIvcnBtaW8vZGlnZXN0X25zcy5jCitpbmRleCBlMTE5MjBlM2UuLmIzZDJiNTU5NSAxMDA2NDQKKy0tLSBhL3JwbWlvL2RpZ2VzdF9uc3MuYworKysrIGIvcnBtaW8vZGlnZXN0X25zcy5jCitAQCAtMTE3LDcgKzExNyw2IEBAIHN0YXRpYyBIQVNIX0hhc2hUeXBlIGdldEhhc2hUeXBlKGludCBoYXNoYWxnbykKKyB7CisgICAgIHN3aXRjaCAoaGFzaGFsZ28pIHsKKyAgICAgY2FzZSBQR1BIQVNIQUxHT19NRDU6CXJldHVybiBIQVNIX0FsZ01ENTsKKy0gICAgY2FzZSBQR1BIQVNIQUxHT19NRDI6CXJldHVybiBIQVNIX0FsZ01EMjsKKyAgICAgY2FzZSBQR1BIQVNIQUxHT19TSEExOglyZXR1cm4gSEFTSF9BbGdTSEExOworICNpZmRlZiBTSEEyMjRfTEVOR1RICisgICAgIGNhc2UgUEdQSEFTSEFMR09fU0hBMjI0OglyZXR1cm4gSEFTSF9BbGdTSEEyMjQ7CitAQCAtMjE3LDcgKzIxNiw2IEBAIHN0YXRpYyBTRUNPaWRUYWcgZ2V0SGFzaEFsZyh1bnNpZ25lZCBpbnQgaGFzaGFsZ28pCisgeworICAgICBzd2l0Y2ggKGhhc2hhbGdvKSB7CisgICAgIGNhc2UgUEdQSEFTSEFMR09fTUQ1OglyZXR1cm4gU0VDX09JRF9NRDU7CistICAgIGNhc2UgUEdQSEFTSEFMR09fTUQyOglyZXR1cm4gU0VDX09JRF9NRDI7CisgICAgIGNhc2UgUEdQSEFTSEFMR09fU0hBMToJcmV0dXJuIFNFQ19PSURfU0hBMTsKKyAjaWZkZWYgU0hBMjI0X0xFTkdUSAorICAgICBjYXNlIFBHUEhBU0hBTEdPX1NIQTIyNDoJcmV0dXJuIFNFQ19PSURfU0hBMjI0OworZGlmZiAtLWdpdCBhL3JwbWlvL2RpZ2VzdF9vcGVuc3NsLmMgYi9ycG1pby9kaWdlc3Rfb3BlbnNzbC5jCitpbmRleCAxOGU1MmE3MjQuLjBhZTQ4ZGQxZCAxMDA2NDQKKy0tLSBhL3JwbWlvL2RpZ2VzdF9vcGVuc3NsLmMKKysrKyBiL3JwbWlvL2RpZ2VzdF9vcGVuc3NsLmMKK0BAIC0xNzIsMTIgKzE3Miw2IEBAIHN0YXRpYyBjb25zdCBFVlBfTUQgKmdldEVWUE1EKGludCBoYXNoYWxnbykKKyAgICAgY2FzZSBQR1BIQVNIQUxHT19TSEExOgorICAgICAgICAgcmV0dXJuIEVWUF9zaGExKCk7CisgCistICAgIGNhc2UgUEdQSEFTSEFMR09fUklQRU1EMTYwOgorLSAgICAgICAgcmV0dXJuIEVWUF9yaXBlbWQxNjAoKTsKKy0KKy0gICAgY2FzZSBQR1BIQVNIQUxHT19NRDI6CistICAgICAgICByZXR1cm4gRVZQX21kMigpOworLQorICAgICBjYXNlIFBHUEhBU0hBTEdPX1NIQTI1NjoKKyAgICAgICAgIHJldHVybiBFVlBfc2hhMjU2KCk7CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1ycG1wbHVnaW5zLmMtY2FsbC1kbGVycm9yLXByaW9yLXRvLWRsc3ltLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtcnBtcGx1Z2lucy5jLWNhbGwtZGxlcnJvci1wcmlvci10by1kbHN5bS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODQyZTNlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtcnBtcGx1Z2lucy5jLWNhbGwtZGxlcnJvci1wcmlvci10by1kbHN5bS5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDY4NzhhODNmOWJhYzAxNWM2NGQ4M2NlZTQyNTMwYTIwYTI2NGNjNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgNyBKYW4gMjAyMCAxMjowMjowNiArMDEwMAorU3ViamVjdDogW1BBVENIXSBycG1wbHVnaW5zLmM6IGNhbGwgZGxlcnJvcigpIHByaW9yIHRvIGRsc3ltKCkKKworVGhpcyBpcyB0aGUgcmVjb21tZW5kZWQgd2F5IGluIHRoZSBtYW5wYWdlOyBpZiB0aGVyZSBpcworYSBsaW5nZXJpbmcgZXJyb3IgZnJvbSBhbiB1bnJlbGF0ZWQgZGwqKCkgY2FsbCB0aGF0IHdhcworbmV2ZXIgb2J0YWluZWQgdmlhIGRsZXJyb3IoKSwgaXQgbmVlZHMgdG8gYmUgY2xlYXJlZAorcHJpb3IgdG8gY2FsbGluZyBkbHN5bSgpLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9wdWxsLzk5OF0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgbGliL3JwbXBsdWdpbnMuYyB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWIvcnBtcGx1Z2lucy5jIGIvbGliL3JwbXBsdWdpbnMuYworaW5kZXggNjVlNjg0ZTg0Li5iOTUwZjg1Y2YgMTAwNjQ0CistLS0gYS9saWIvcnBtcGx1Z2lucy5jCisrKysgYi9saWIvcnBtcGx1Z2lucy5jCitAQCAtNjgsNiArNjgsOCBAQCBzdGF0aWMgcnBtUGx1Z2luIHJwbVBsdWdpbk5ldyhjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpwYXRoLAorIAorICAgICAvKiBtYWtlIHN1cmUgdGhlIHBsdWdpbiBoYXMgdGhlIHN1cHBvcnRlZCBob29rcyBmbGFnICovCisgICAgIGhvb2tzX25hbWUgPSByc3Ryc2NhdChOVUxMLCBuYW1lLCAiX2hvb2tzIiwgTlVMTCk7CisrICAgIC8qIGNsZWFyIG91dCBhbnkgb2xkIGVycm9ycyB0aGF0IHdlcmVuJ3QgZmV0Y2hlZCAqLworKyAgICBkbGVycm9yKCk7CisgICAgIGhvb2tzID0gZGxzeW0oaGFuZGxlLCBob29rc19uYW1lKTsKKyAgICAgaWYgKChlcnJvciA9IGRsZXJyb3IoKSkgIT0gTlVMTCkgeworIAlycG1sb2coUlBNTE9HX0VSUiwgXygiRmFpbGVkIHRvIHJlc29sdmUgc3ltYm9sICVzOiAlc1xuIiksCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzQuMTQuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV80LjE0LjIuMS5iYgppbmRleCBjMzczMzBlLi4xNzI1NWRjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzQuMTQuMi4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fNC4xNC4yLjEuYmIKQEAgLTQyLDYgKzQyLDggQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtcnBtLXJwbWlvLmMtcmVzdHJpY3QtdmlydHVhbC1tZW1vcnktdXNhZ2UtaWYtbGltaXQtcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDE2LXJwbXNjcmlwdC5jLWNoYW5nZS1sb2dnaW5nLWxldmVsLWFyb3VuZC1zY3JpcHRsZXRzLXQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1tb25vLWZpbmQtcHJvdmlkZXMtcmVxdWlyZXMtZG8tbm90LXVzZS1tb25vZGlzLWZyb20tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmlwLW91dC1wYXJ0aWFsLXN1cHBvcnQtZm9yLXVudXNlZC1NRDItYW5kLVJJUEVNRDE2MC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJwbXBsdWdpbnMuYy1jYWxsLWRsZXJyb3ItcHJpb3ItdG8tZGxzeW0ucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFBFID0gIjEiCkBAIC00OSw3ICs1MSw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLURFUEVORFMgPSAibnNzIGxpYmFyY2hpdmUgZGIgZmlsZSBwb3B0IHh6IGJ6aXAyIGRidXMgZWxmdXRpbHMgcHl0aG9uMyIKK0RFUEVORFMgPSAib3BlbnNzbCBsaWJhcmNoaXZlIGRiIGZpbGUgcG9wdCB4eiBiemlwMiBkYnVzIGVsZnV0aWxzIHB5dGhvbjMiCiBERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSIKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgcHl0aG9uM25hdGl2ZQpAQCAtNTgsNyArNjAsNyBAQAogIyBPRS1jb3JlIHBhdGNoZXMgYXV0b3JlY29uZiB0byBhZGRpdGlvbmFsbHkgcnVuIGdudS1jb25maWdpemUsIHdoaWNoIGZhaWxzIHdpdGggdGhpcyByZWNpcGUKIEVYVFJBX0FVVE9SRUNPTkZfYXBwZW5kID0gIiAtLWV4Y2x1ZGU9Z251LWNvbmZpZ2l6ZSIKIAotRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS13aXRob3V0LWx1YSAtLWVuYWJsZS1weXRob24iCitFWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLXdpdGhvdXQtbHVhIC0tZW5hYmxlLXB5dGhvbiAtLXdpdGgtY3J5cHRvPW9wZW5zc2wiCiBFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLW5scyIKIAogIyAtLXN5c2NvbmZkaXIgcHJldmVudHMgcnBtIGZyb20gYXR0ZW1wdGluZyB0byBhY2Nlc3MgbWFjaGluZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGluIHN5c3Jvb3QvZXRjOyB3ZSBuZWVkIHRvIGhhdmUgaXQgaW4gcm9vdGZzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luY18zLjEuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JzeW5jL3JzeW5jXzMuMS4zLmJiCmluZGV4IGZmYjFkMDYuLjE1MmZmMDIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JzeW5jL3JzeW5jXzMuMS4zLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JzeW5jL3JzeW5jXzMuMS4zLmJiCkBAIC0yMCw2ICsyMCw5IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiMTU4MWE1ODhmZGU5ZDg5ZjZiYzYyMDFlODEyOWFmYWYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTVjYzU1NGVmZWM1ZmRhYWQ3MGRlOTIxY2Q1YTVlZWI2YzI5YTk1NTI0YzcxNWYzYmJmODQ5MjM1YjA4MDBjMCIKIAorIyAtMTY1NDggcmVxdWlyZWQgZm9yIHYzLjEuM3ByZTEuIEFscmVhZHkgaW4gdjMuMS4zLgorQ1ZFX0NIRUNLX1dISVRFTElTVCArPSAiIENWRS0yMDE3LTE2NTQ4ICIKKwogaW5oZXJpdCBhdXRvdG9vbHMKIAogUEFDS0FHRUNPTkZJRyA/Pz0gImFjbCBhdHRyIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkuaW5jCmluZGV4IGNlMWIwMmYuLmEzOGIzZmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LmluYwpAQCAtOCwxMCArOCwxMCBAQAogU0VDVElPTiA9ICJkZXZlbC9ydWJ5IgogTElDRU5TRSA9ICJSdWJ5IHwgQlNELTItQ2xhdXNlIHwgQlNELTMtQ2xhdXNlIHwgR1BMdjIgfCBJU0MgfCBNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gIlwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9MzQwOTQ4ZTE4ODJlNTc5NzMxODQxYmY0OWNkYzIyYzEgXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT01YjhjODc1NTk4Njg3OTY5Nzk4MDYxMDBkYjNmMzgwNSBcCiAgICAgZmlsZTovL0JTREw7bWQ1PTE5YWFmNjVjODhhNDBiNTA4ZDE3YWU0YmU1MzljNGI1XAogICAgIGZpbGU6Ly9HUEw7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzXAotICAgIGZpbGU6Ly9MRUdBTDttZDU9NGFjMGI4NGQxZjdmNDIwYmNhMjgyZTFhZGVmYzdmOTkgXAorICAgIGZpbGU6Ly9MRUdBTDttZDU9MmI2ZDYyZGMwZDYwOGYzNGQ1MTBjYTNmNDI4MTEwZWMgXAogIgogCiBERVBFTkRTID0gInJ1YnktbmF0aXZlIHpsaWIgb3BlbnNzbCB0Y2wgbGlieWFtbCBnZGJtIHJlYWRsaW5lIGxpYmZmaSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAxLU1vZGlmeS1zaGViYW5nLW9mLWxpYmV4ZWMteTJyYWNjLWFuZC1saWJleGVjLXJhY2MyeS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAxLU1vZGlmeS1zaGViYW5nLW9mLWxpYmV4ZWMteTJyYWNjLWFuZC1saWJleGVjLXJhY2MyeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzE2YmVkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LzAwMDEtTW9kaWZ5LXNoZWJhbmctb2YtbGliZXhlYy15MnJhY2MtYW5kLWxpYmV4ZWMtcmFjYzJ5LnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gZWVkN2JjODU1ZmQ4ZDIzMmQ0ZDIwM2NjOTAyN2RkMDdjZWU4ZWNhMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFdhbmcgTWluZ3l1IDx3YW5nbXlAY24uZnVqaXRzdS5jb20+CitEYXRlOiBTYXQsIDggRmViIDIwMjAgMTU6MTY6MTQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gTW9kaWZ5IHNoZWJhbmcgb2YgbGliZXhlYy95MnJhY2MgYW5kIGxpYmV4ZWMvcmFjYzJ5LgorCitjaGFuZ2UgL3Vzci9sb2NhbC9iaW4vcnVieSB0byAvdXNyL2Jpbi9lbnYgcnVieS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFdhbmcgTWluZ3l1IDx3YW5nbXlAY24uZnVqaXRzdS5jb20+CistLS0KKyBsaWJleGVjL3JhY2MyeSB8IDIgKy0KKyBsaWJleGVjL3kycmFjYyB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmV4ZWMvcmFjYzJ5IGIvbGliZXhlYy9yYWNjMnkKK2luZGV4IGY4OGQ3M2VkMmMuLjc0ZTQ5Y2ZhMjEgMTAwNzU1CistLS0gYS9saWJleGVjL3JhY2MyeQorKysrIGIvbGliZXhlYy9yYWNjMnkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9sb2NhbC9iaW4vcnVieQorKyMhL3Vzci9iaW4vZW52IHJ1YnkKKyAjCisgIyAkSWQkCisgIworZGlmZiAtLWdpdCBhL2xpYmV4ZWMveTJyYWNjIGIvbGliZXhlYy95MnJhY2MKK2luZGV4IDc5MzNmOTQxNTMuLjM2ZGFmODY0ZTEgMTAwNzU1CistLS0gYS9saWJleGVjL3kycmFjYworKysrIGIvbGliZXhlYy95MnJhY2MKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9sb2NhbC9iaW4vcnVieQorKyMhL3Vzci9iaW4vZW52IHJ1YnkKKyAjCisgIyAkSWQkCisgIworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LzAwMDItT2JleS1MREZMQUdTLWZvci10aGUtbGluay1vZi1saWJydWJ5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LzAwMDItT2JleS1MREZMQUdTLWZvci10aGUtbGluay1vZi1saWJydWJ5LnBhdGNoCmluZGV4IDU5NzlkOGIuLmIzMWRlZTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAyLU9iZXktTERGTEFHUy1mb3ItdGhlLWxpbmstb2YtbGlicnVieS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvMDAwMi1PYmV5LUxERkxBR1MtZm9yLXRoZS1saW5rLW9mLWxpYnJ1YnkucGF0Y2gKQEAgLTYsMTMgKzYsMTMgQEAKIFNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQotIE1ha2VmaWxlLmluIHwgMiArLQorIHRlbXBsYXRlL01ha2VmaWxlLmluIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgorZGlmZiAtLWdpdCBhL3RlbXBsYXRlL01ha2VmaWxlLmluIGIvdGVtcGxhdGUvTWFrZWZpbGUuaW4KIGluZGV4IGZhMWUxOWVmMzcuLmJiZDA3ZmEzNGIgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KKy0tLSBhL3RlbXBsYXRlL01ha2VmaWxlLmluCisrKysgYi90ZW1wbGF0ZS9NYWtlZmlsZS5pbgogQEAgLTEwOSw3ICsxMDksNyBAQCBNSVNTSU5HID0gQExJQk9CSlNAIEBBTExPQ0FACiAgRU5BQkxFX1NIQVJFRCA9IEBFTkFCTEVfU0hBUkVEQAogIExEU0hBUkVEID0gQExJQlJVQllfTERTSEFSRURACmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvMDAwMy1jb25maWd1cmUuYWMtY2hlY2stZmluaXRlLWlzaW5mLWlzbmFuLWFzLW1hY3Jvcy1maXJzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LzAwMDMtY29uZmlndXJlLmFjLWNoZWNrLWZpbml0ZS1pc2luZi1pc25hbi1hcy1tYWNyb3MtZmlycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE4Y2ZmMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvMDAwMy1jb25maWd1cmUuYWMtY2hlY2stZmluaXRlLWlzaW5mLWlzbmFuLWFzLW1hY3Jvcy1maXJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLUZyb20gYmQ3MWI2OThiZjczM2U2ZTkzMjgyY2QyYjFiOTNmNTFlMWEzM2M3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IG5vYnUgPG5vYnVAYjJkZDAzYzgtMzlkNC00ZDhmLTk4ZmYtODIzZmU2OWIwODBlPgotRGF0ZTogRnJpLCA4IEZlYiAyMDE5IDA3OjIyOjU1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMy8zXSBjb25maWd1cmUuYWM6IGNoZWNrIGZpbml0ZSxpc2luZixpc25hbiBhcyBtYWNyb3MgZmlyc3QKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotW3J1YnktY29yZTo5MTQ4N10gW0J1ZyAjMTU1OTVdCi0KLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9jaS5ydWJ5LWxhbmcub3JnL3J1YnkvdHJ1bmtANjcwMzYgYjJkZDAzYzgtMzlkNC00ZDhmLTk4ZmYtODIzZmU2OWIwODBlCi0KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9jb21taXQvNzRmOTRiM2U2ZWJmMTViNzZmM2IzNTdlNzU0MDk1NDEyYjAwNmU5NF0KLVNpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhbmRyZS5kcmFzemlrQGpjaS5jb20+Ci0tLS0KLSBhY2xvY2FsLm00ICAgICAgICAgICAgICAgICAgICB8ICAxICsKLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICB8IDEzICsrKystLS0tLS0tLS0KLSB0b29sL200L3J1YnlfcmVwbGFjZV9mdW5jcy5tNCB8IDEzICsrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2wvbTQvcnVieV9yZXBsYWNlX2Z1bmNzLm00Ci0KLWRpZmYgLS1naXQgYS9hY2xvY2FsLm00IGIvYWNsb2NhbC5tNAotaW5kZXggYjBmZTNlYjk1OS4uZWQ3ZDE0ZWY2MyAxMDA2NDQKLS0tLSBhL2FjbG9jYWwubTQKLSsrKyBiL2FjbG9jYWwubTQKLUBAIC0zNSw2ICszNSw3IEBAIG00X2luY2x1ZGUoW3Rvb2wvbTQvcnVieV9mdW5jX2F0dHJpYnV0ZS5tNF0pCi0gbTRfaW5jbHVkZShbdG9vbC9tNC9ydWJ5X21pbmd3MzIubTRdKQotIG00X2luY2x1ZGUoW3Rvb2wvbTQvcnVieV9wcmVwZW5kX29wdGlvbi5tNF0pCi0gbTRfaW5jbHVkZShbdG9vbC9tNC9ydWJ5X3Byb2dfZ251X2xkLm00XSkKLSttNF9pbmNsdWRlKFt0b29sL200L3J1YnlfcmVwbGFjZV9mdW5jcy5tNF0pCi0gbTRfaW5jbHVkZShbdG9vbC9tNC9ydWJ5X3JlcGxhY2VfdHlwZS5tNF0pCi0gbTRfaW5jbHVkZShbdG9vbC9tNC9ydWJ5X3JtX3JlY3Vyc2l2ZS5tNF0pCi0gbTRfaW5jbHVkZShbdG9vbC9tNC9ydWJ5X3NldGptcF90eXBlLm00XSkKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDJjNGQyODg4ZDIuLjI2OTFkYTZhM2MgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTk0Niw5ICs5NDYsNiBAQCBtYWluKCkKLSAJCWFjX2N2X2Z1bmNfZnN5bmM9eWVzCi0gCQlhY19jdl9mdW5jX3NlZWtkaXI9eWVzCi0gCQlhY19jdl9mdW5jX3RlbGxkaXI9eWVzCi0tCQlhY19jdl9mdW5jX2lzaW5mPXllcwotLQkJYWNfY3ZfZnVuY19pc25hbj15ZXMKLS0JCWFjX2N2X2Z1bmNfZmluaXRlPXllcwotIAkJYWNfY3ZfZnVuY19sY2hvd249eWVzCi0gCQlhY19jdl9mdW5jX2xpbms9eWVzCi0gCQlhY19jdl9mdW5jX3JlYWRsaW5rPXllcwotQEAgLTk5OSw5ICs5OTYsNiBAQCBtYWluKCkKLSBbbmV0YnNkKl0sIFsJTElCUz0iLWxtICRMSUJTIgotIAkJXSwKLSBbZHJhZ29uZmx5Kl0sIFsJTElCUz0iLWxtICRMSUJTIgotLQkJIyBpc2luZigpIGFuZCBpc25hbigpIGFyZSBtYWNyb3Mgb24gRHJhZ29uRmx5LgotLQkJYWNfY3ZfZnVuY19pc2luZj15ZXMKLS0JCWFjX2N2X2Z1bmNfaXNuYW49eWVzCi0gCQldLAotIFthaXgqXSxbCUxJQlM9Ii1sbSAkTElCUyIKLSAJCWFjX2N2X2Z1bmNfcm91bmQ9bm8KLUBAIC0xNzI0LDExICsxNzE4LDggQEAgQUNfUkVQTEFDRV9GVU5DUyhkdXAyKQotIEFDX1JFUExBQ0VfRlVOQ1MoZXJmKQotIEFDX1JFUExBQ0VfRlVOQ1MoZXhwbGljaXRfYnplcm8pCi0gQUNfUkVQTEFDRV9GVU5DUyhmZnMpCi0tQUNfUkVQTEFDRV9GVU5DUyhmaW5pdGUpCi0gQUNfUkVQTEFDRV9GVU5DUyhmbG9jaykKLSBBQ19SRVBMQUNFX0ZVTkNTKGh5cG90KQotLUFDX1JFUExBQ0VfRlVOQ1MoaXNpbmYpCi0tQUNfUkVQTEFDRV9GVU5DUyhpc25hbikKLSBBQ19SRVBMQUNFX0ZVTkNTKGxnYW1tYV9yKQotIEFDX1JFUExBQ0VfRlVOQ1MobWVtbW92ZSkKLSBBQ19SRVBMQUNFX0ZVTkNTKG5hbikKLUBAIC0xNzQxLDYgKzE3MzIsMTAgQEAgQUNfUkVQTEFDRV9GVU5DUyhzdHJsY3B5KQotIEFDX1JFUExBQ0VfRlVOQ1Moc3Ryc3RyKQotIEFDX1JFUExBQ0VfRlVOQ1ModGdhbW1hKQotIAotK1JVQllfUkVQTEFDRV9GVU5DKFtmaW5pdGVdLCBbQCU6QGluY2x1ZGUgPG1hdGguaD5dKQotK1JVQllfUkVQTEFDRV9GVU5DKFtpc2luZl0sIFtAJTpAaW5jbHVkZSA8bWF0aC5oPl0pCi0rUlVCWV9SRVBMQUNFX0ZVTkMoW2lzbmFuXSwgW0AlOkBpbmNsdWRlIDxtYXRoLmg+XSkKLSsKLSAjIGZvciBtaXNzaW5nL3NldHByb2N0aXRsZS5jCi0gQVNfQ0FTRShbIiR0YXJnZXRfb3MiXSwKLSBbYWl4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSB8IGxpbnV4KiB8IGRhcndpbipdLCBbQUNfREVGSU5FKFNQVF9UWVBFLFNQVF9SRVVTRUFSR1YpXSwKLWRpZmYgLS1naXQgYS90b29sL200L3J1YnlfcmVwbGFjZV9mdW5jcy5tNCBiL3Rvb2wvbTQvcnVieV9yZXBsYWNlX2Z1bmNzLm00Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uZDA2MTJlMjlhMAotLS0tIC9kZXYvbnVsbAotKysrIGIvdG9vbC9tNC9ydWJ5X3JlcGxhY2VfZnVuY3MubTQKLUBAIC0wLDAgKzEsMTMgQEAKLSsjIC0qLSBBdXRvY29uZiAtKi0KLStkbmwgUlVCWV9SRVBMQUNFX0ZVTkMgW2Z1bmNdIFtpbmNsdWRlZF0KLStBQ19ERUZVTihbUlVCWV9SRVBMQUNFX0ZVTkNdLCBbZG5sCi0rICAgIEFDX0NIRUNLX0RFQ0woWyQxXSxkbmwKLSsgICAgICAgIFtBQ19ERUZJTkUoQVNfVFJfQ1BQKEhBVkVfWyQxXSkpXSxkbmwKLSsgICAgICAgIFtBQ19SRVBMQUNFX0ZVTkNTKCQxKV0sZG5sCi0rICAgICAgICBbJDJdKWRubAotK10pCi0rCi0rZG5sIFJVQllfUkVQTEFDRV9GVU5DUyBbZnVuY3NdIFtpbmNsdWRlZF0KLStBQ19ERUZVTihbUlVCWV9SRVBMQUNFX0ZVTkNTXSBbZG5sCi0rICAgIG00X21hcF9hcmdzX3coWyQxXSwgW1JVQllfUkVQTEFDRV9GVU5DKF0sIFspLCBbJDJdXSlkbmwKLStdKQotLS0gCi0yLjIzLjAucmMxCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9yZW1vdmVfaGFzX2luY2x1ZGVfbWFjcm9zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3JlbW92ZV9oYXNfaW5jbHVkZV9tYWNyb3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFlNjMzMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9yZW1vdmVfaGFzX2luY2x1ZGVfbWFjcm9zLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0ZpbHRlciBvdXQgX19oYXNfaW5jbHVkZSogY29tcGlsZXIgZGVmaW5lcworCitUaGV5IGFyZSBpbnRlcm5hbCB0byBjb21waWxlciBhbmQgdGhpcyBoZWFkZXIgaXMgbGF0ZXIgb24gaW5jbHVkZXMgaW4gQworZmlsZXMsIGJ1dCBuZXdlciBnY2MgPj0gMTAgY29tcGxhaW5zIGFib3V0IGl0LgorCitlcnJvciBpbiBpbml0aWFsIGhlYWRlciBmaWxlOgorfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gL3RtcC8yMDIwMDEyNC04NjYyNS0xNGhpanU0LmM6MToKK3wgL3RtcC8yMDIwMDEyNC04NjYyNS0xMXk2bDZpLmg6MTM4NDk6OTogZXJyb3I6ICJfX2hhc19pbmNsdWRlIiBjYW5ub3QgYmUgdXNlZCBhcyBhIG1hY3JvIG5hbWUKK3wgMTM4NDkgfCAjZGVmaW5lIF9faGFzX2luY2x1ZGUgX19oYXNfaW5jbHVkZQorfCAgICAgICB8ICAgICAgICAgXn5+fn5+fn5+fn5+fgorfCBjb21waWxhdGlvbiB0ZXJtaW5hdGVkIGR1ZSB0byAtV2ZhdGFsLWVycm9ycy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCistLS0gYS9jb21tb24ubWsKKysrKyBiL2NvbW1vbi5taworQEAgLTIyMSw2ICsyMjEsOCBAQCAkKFRJTUVTVEFNUERJUikvJChNSklUX0hFQURFUjouaD0pJChNSklUCisgCQkkKFRJTUVTVEFNUERJUikvJChhcmNoKS8udGltZQorIAkkKEVDSE8pIGJ1aWxkaW5nICQoQEY6LnRpbWU9LmgpCisgCSQoUSkgJChDUFApIC1ETUpJVF9IRUFERVIgJChNSklUX0hFQURFUl9GTEFHUykgJChDRkxBR1MpICQoWENGTEFHUykgJChDUFBGTEFHUykgJChzcmNkaXIpL3ZtLmMgJChDUFBPVVRGTEFHKSQoQEY6LnRpbWU9LmgpLm5ldworKwkkKFEpc2VkIC1pIC1lICIvI2RlZmluZSBfX2hhc19pbmNsdWRlIF9faGFzX2luY2x1ZGUvZCIgJChARjoudGltZT0uaCkubmV3CisrCSQoUSlzZWQgLWkgLWUgIi8jZGVmaW5lIF9faGFzX2luY2x1ZGVfbmV4dCBfX2hhc19pbmNsdWRlX25leHQvZCIgJChARjoudGltZT0uaCkubmV3CisgCSQoUSkgJChJRkNIQU5HRSkgIi0tdGltZXN0YW1wPSRAIiAkKEBGOi50aW1lPS5oKSAkKEBGOi50aW1lPS5oKS5uZXcKKyAKKyAkKE1KSVRfSEVBREVSOi5oPSkkKE1KSVRfSEVBREVSX1NVRkZJWCkuaDogJChUSU1FU1RBTVBESVIpLyQoTUpJVF9IRUFERVI6Lmg9KSQoTUpJVF9IRUFERVJfU1VGRklYKS50aW1lCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi42LjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi42LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4MjhmNjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotcmVxdWlyZSBydWJ5LmluYwotCi1TUkNfVVJJICs9ICIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1jb25maWd1cmUuYWMtY2hlY2stZmluaXRlLWlzaW5mLWlzbmFuLWFzLW1hY3Jvcy1maXJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg3NTRiZmIzNmQ1MmMyYmYxZmIzZDNkZGM3MTAxNjA2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2OTc2YjcxNmVjYzFmZDM0ZjliN2MzYzJiMDdiYmQzNzYzMTgxNTM3N2EyZTNlODVhNWIxOTRjZmRjYmVkN2QiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgotCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQ9eWVzLCAtLXdpdGgtdmFsZ3JpbmQ9bm8sIHZhbGdyaW5kIgotUEFDS0FHRUNPTkZJR1tnbXBdID0gIi0td2l0aC1nbXA9eWVzLCAtLXdpdGgtZ21wPW5vLCBnbXAiCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsIC0tZGlzYWJsZS1pcHY2LCIKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWRpc2FibGUtdmVyc2lvbmVkLXBhdGhzIFwKLSAgICAtLWRpc2FibGUtcnBhdGggXAotICAgIC0tZGlzYWJsZS1kdHJhY2UgXAotICAgIC0tZW5hYmxlLXNoYXJlZCBcCi0gICAgLS1lbmFibGUtbG9hZC1yZWxhdGl2ZSBcCi0gICAgLS13aXRoLXBrZy1jb25maWc9cGtnLWNvbmZpZyBcCi0iCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0gICAgIyBGaW5kIG91dCByYmNvbmZpZy5yYiBmcm9tIC5pbnN0YWxsZWQubGlzdAotICAgIHJiY29uZmlnX3JiPWBncmVwIHJiY29uZmlnLnJiICR7Qn0vLmluc3RhbGxlZC5saXN0YAotICAgICMgUmVtb3ZlIGJ1aWxkIGhvc3QgZGlyZWN0b3JpZXMKLSAgICBzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgXAotICAgICAgICAgICAtZSBzOictLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSc6OmcgXAotICAgICAgICAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCi0gICAgICAgICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCi0gICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAotICAgICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAotICAgICAgICAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKLSAgICAgICAgJHtEfSRyYmNvbmZpZ19yYgotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLSAgICBjcCAtcmYgJHtTfS90ZXN0ICR7RH0ke1BURVNUX1BBVEh9LwotICAgICMgaW5zdGFsbCB0ZXN0LWJpbmFyaWVzCi0gICAgZmluZCAkKGZpbmQgLi8uZXh0IC1wYXRoICcqLy10ZXN0LScpIC1uYW1lICcqLnNvJyAtcHJpbnQwIFwKLSAgICAgICAgfCB0YXIgLS1uby1yZWN1cnNpb24gLS1udWxsIC1UIC0gLS1uby1zYW1lLW93bmVyIC0tcHJlc2VydmUtcGVybWlzc2lvbnMgLWNmIC0gXAotICAgICAgICB8IHRhciAtQyAke0R9JHtsaWJkaXJ9L3J1YnkvJHtTSFJUX1ZFUn0uMC8gLS1uby1zYW1lLW93bmVyIC0tcHJlc2VydmUtcGVybWlzc2lvbnMgLS1zdHJpcC1jb21wb25lbnRzPTIgLXhmIC0KLSAgICAjIGFkanVzdCBwYXRoIHRvIG5vdCBhc3N1bWUgYnVpbGQgZGlyZWN0b3J5IGxheW91dAotICAgIHNlZCAtZSAnc3xGaWxlLmV4cGFuZF9wYXRoKC4qXC5cLi9iaW4vZXJiW14pXSp8RmlsZS5leHBhbmRfcGF0aCgiJHtiaW5kaXJ9L2VyYiJ8ZycgXAotICAgICAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0L2VyYi90ZXN0X2VyYl9jb21tYW5kLnJiCi0KLSAgICBjcCAtciAke1N9L2luY2x1ZGUgJHtEfS8ke2xpYmRpcn0vcnVieS8KLSAgICB0ZXN0X2Nhc2VfcmI9YGdyZXAgcnVieWdlbXMvdGVzdF9jYXNlLnJiICR7Qn0vLmluc3RhbGxlZC5saXN0YAotICAgIHNlZCAtaSAtZSAnczouLi8uLi8uLi90ZXN0LzouLi8uLi8uLi9wdGVzdC90ZXN0LzpnJyAke0R9LyR0ZXN0X2Nhc2VfcmIKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXJpLWRvY3MgJHtQTn0tcmRvYyIKLQotU1VNTUFSWV8ke1BOfS1yaS1kb2NzID0gInJpIChSdWJ5IEludGVyYWN0aXZlKSBkb2N1bWVudGF0aW9uIGZvciB0aGUgUnVieSBzdGFuZGFyZCBsaWJyYXJ5IgotUkRFUEVORFNfJHtQTn0tcmktZG9jcyA9ICIke1BOfSIKLUZJTEVTXyR7UE59LXJpLWRvY3MgKz0gIiR7ZGF0YWRpcn0vcmkiCi0KLVNVTU1BUllfJHtQTn0tcmRvYyA9ICJSRG9jIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGZyb20gUnVieSBzb3VyY2UiCi1SREVQRU5EU18ke1BOfS1yZG9jID0gIiR7UE59IgotRklMRVNfJHtQTn0tcmRvYyArPSAiJHtsaWJkaXJ9L3J1YnkvKi9yZG9jICR7YmluZGlyfS9yZG9jIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9ydWJ5Z2VtcyIKLQotRklMRVNfJHtQTn0tcHRlc3RfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCi0gICAgJHtsaWJkaXJ9L3J1YnkvaW5jbHVkZSBcCi0gICAgJHtsaWJkaXJ9L3J1YnkvJHtTSFJUX1ZFUn0uMC8qLy10ZXN0LSBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNy4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmMDcwODAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi43LjAuYmIKQEAgLTAsMCArMSw5MiBAQAorcmVxdWlyZSBydWJ5LmluYworCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYnVjb250ZXh0IgorCitTUkNfVVJJICs9ICIgXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlX2hhc19pbmNsdWRlX21hY3Jvcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Nb2RpZnktc2hlYmFuZy1vZi1saWJleGVjLXkycmFjYy1hbmQtbGliZXhlYy1yYWNjMnkucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZjRhNTRlODIzMTE3NmUxMDlhNDJjNTQ2YjQ3MjVhOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4Yzk5YWE5M2I1ZTJmMWJjODQzN2QxYmJiZWZkMjdiMTNlNzY5NDAyNTMzMWY3NzI0NWQwYzA2OGVmMWY4Y2JlIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJRyArPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKKworUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kPXllcywgLS13aXRoLXZhbGdyaW5kPW5vLCB2YWxncmluZCIKK1BBQ0tBR0VDT05GSUdbZ21wXSA9ICItLXdpdGgtZ21wPXllcywgLS13aXRoLWdtcD1ubywgZ21wIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LCAtLWRpc2FibGUtaXB2NiwiCisKK0VYVFJBX09FQ09ORiA9ICJcCisgICAgLS1kaXNhYmxlLXZlcnNpb25lZC1wYXRocyBcCisgICAgLS1kaXNhYmxlLXJwYXRoIFwKKyAgICAtLWRpc2FibGUtZHRyYWNlIFwKKyAgICAtLWVuYWJsZS1zaGFyZWQgXAorICAgIC0tZW5hYmxlLWxvYWQtcmVsYXRpdmUgXAorICAgIC0td2l0aC1wa2ctY29uZmlnPXBrZy1jb25maWcgXAorIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCisgICAgTElCUz0nLWx1Y29udGV4dCcgXAorICAgIGFjX2N2X2Z1bmNfaXNuYW49eWVzIFwKKyAgICBhY19jdl9mdW5jX2lzaW5mPXllcyBcCisiCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7CisgICAgIyBGaW5kIG91dCByYmNvbmZpZy5yYiBmcm9tIC5pbnN0YWxsZWQubGlzdAorICAgIHJiY29uZmlnX3JiPWBncmVwIHJiY29uZmlnLnJiICR7Qn0vLmluc3RhbGxlZC5saXN0YAorICAgICMgUmVtb3ZlIGJ1aWxkIGhvc3QgZGlyZWN0b3JpZXMKKyAgICBzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgXAorICAgICAgICAgICAtZSBzOictLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSc6OmcgXAorICAgICAgICAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisgICAgICAgICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisgICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorICAgICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorICAgICAgICAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKyAgICAgICAgJHtEfSRyYmNvbmZpZ19yYgorfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKyAgICBjcCAtcmYgJHtTfS90ZXN0ICR7RH0ke1BURVNUX1BBVEh9LworCisgICAgaW5zdGFsbCAtRCAke1N9L3Rvb2wvdGVzdC9ydW5uZXIucmIgJHtEfSR7UFRFU1RfUEFUSH0vdG9vbC90ZXN0L3J1bm5lci5yYgorICAgIGNwIC1yICR7U30vdG9vbC9saWIgJHtEfSR7UFRFU1RfUEFUSH0vdG9vbC8KKyAgICBta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS9saWIKKyAgICBjcCAtciAke1N9L2xpYi9kaWRfeW91X21lYW4gJHtTfS9saWIvcmRvYyAke0R9JHtQVEVTVF9QQVRIfS9saWIKKworICAgICMgaW5zdGFsbCB0ZXN0LWJpbmFyaWVzCisgICAgZmluZCAkKGZpbmQgLi8uZXh0IC1wYXRoICcqLy10ZXN0LScpIC1uYW1lICcqLnNvJyAtcHJpbnQwIFwKKyAgICAgICAgfCB0YXIgLS1uby1yZWN1cnNpb24gLS1udWxsIC1UIC0gLS1uby1zYW1lLW93bmVyIC0tcHJlc2VydmUtcGVybWlzc2lvbnMgLWNmIC0gXAorICAgICAgICB8IHRhciAtQyAke0R9JHtsaWJkaXJ9L3J1YnkvJHtTSFJUX1ZFUn0uMC8gLS1uby1zYW1lLW93bmVyIC0tcHJlc2VydmUtcGVybWlzc2lvbnMgLS1zdHJpcC1jb21wb25lbnRzPTIgLXhmIC0KKyAgICAjIGFkanVzdCBwYXRoIHRvIG5vdCBhc3N1bWUgYnVpbGQgZGlyZWN0b3J5IGxheW91dAorICAgIHNlZCAtZSAnc3xGaWxlLmV4cGFuZF9wYXRoKC4qXC5cLi9iaW4vZXJiW14pXSp8RmlsZS5leHBhbmRfcGF0aCgiJHtiaW5kaXJ9L2VyYiJ8ZycgXAorICAgICAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0L2VyYi90ZXN0X2VyYl9jb21tYW5kLnJiCisKKyAgICBjcCAtciAke1N9L2luY2x1ZGUgJHtEfS8ke2xpYmRpcn0vcnVieS8KKyAgICB0ZXN0X2Nhc2VfcmI9YGdyZXAgcnVieWdlbXMvdGVzdF9jYXNlLnJiICR7Qn0vLmluc3RhbGxlZC5saXN0YAorICAgIHNlZCAtaSAtZSAnczouLi8uLi8uLi90ZXN0LzouLi8uLi8uLi9wdGVzdC90ZXN0LzpnJyAke0R9LyR0ZXN0X2Nhc2VfcmIKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LXJpLWRvY3MgJHtQTn0tcmRvYyIKKworU1VNTUFSWV8ke1BOfS1yaS1kb2NzID0gInJpIChSdWJ5IEludGVyYWN0aXZlKSBkb2N1bWVudGF0aW9uIGZvciB0aGUgUnVieSBzdGFuZGFyZCBsaWJyYXJ5IgorUkRFUEVORFNfJHtQTn0tcmktZG9jcyA9ICIke1BOfSIKK0ZJTEVTXyR7UE59LXJpLWRvY3MgKz0gIiR7ZGF0YWRpcn0vcmkiCisKK1NVTU1BUllfJHtQTn0tcmRvYyA9ICJSRG9jIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGZyb20gUnVieSBzb3VyY2UiCitSREVQRU5EU18ke1BOfS1yZG9jID0gIiR7UE59IgorRklMRVNfJHtQTn0tcmRvYyArPSAiJHtsaWJkaXJ9L3J1YnkvKi9yZG9jICR7YmluZGlyfS9yZG9jIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9ydWJ5Z2VtcyIKKworRklMRVNfJHtQTn0tcHRlc3RfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCisgICAgJHtsaWJkaXJ9L3J1YnkvaW5jbHVkZSBcCisgICAgJHtsaWJkaXJ9L3J1YnkvJHtTSFJUX1ZFUn0uMC8qLy10ZXN0LSBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMuc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzLnNlcnZpY2UKaW5kZXggZDQyYWRkZi4uN2Y3MmYzMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMuc2VydmljZQorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy5zZXJ2aWNlCkBAIC04LDcgKzgsNyBAQAogVHlwZT1vbmVzaG90CiBFeGVjU3RhcnQ9I1NCSU5ESVIjL3J1bi1wb3N0aW5zdHMKIEV4ZWNTdGFydFBvc3Q9I0JBU0VfQklORElSIy9zeXN0ZW1jdGwgLS1uby1yZWxvYWQgZGlzYWJsZSBydW4tcG9zdGluc3RzLnNlcnZpY2UKLVJlbWFpbkFmdGVyRXhpdD1ObworUmVtYWluQWZ0ZXJFeGl0PXllcwogVGltZW91dFNlYz0wCiAKIFtJbnN0YWxsXQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHNfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHNfZ2l0LmJiCmluZGV4IDRmZDMzZjguLjliY2YwMjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zcXVhc2hmcy10b29scy9zcXVhc2hmcy10b29sc19naXQuYmIKQEAgLTEyLDkgKzEyLDYgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdC9zcXVhc2hmcy10b29scyIKIAotIyBuZWVkcyBGTk1fRVhUTUFUQ0gKLUNPTVBBVElCTEVfSE9TVF9saWJjLW11c2wgPSAnbnVsbCcKLQogRVhUUkFfT0VNQUtFID0gIiR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30iCiAKIFBBQ0tBR0VDT05GSUcgPz89ICJnemlwIHh6IGx6byBsejQgbHptYSB4YXR0ciByZXByb2R1Y2libGUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlLzAwMDEtY2Fwcy1hYmJyZXYuYXdrLWZpeC1nYXdrLXMtcGF0aC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoCmluZGV4IDUyZDJjZGMuLjIzNWU4MDMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBkMjI1YWFhODg0MWY0N2JhOGFhN2IzNTNiMGFjMzAyOGQ1OTEzZWZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1OTdjYzIwNmQ5ODJlNzIzN2ViOTNmZGMzM2U4YzRiYjZiYjJkNzk2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUaHUsIDkgRmViIDIwMTcgMDE6Mjc6NDkgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gY2Fwcy1hYmJyZXYuYXdrOiBmaXggZ2F3aydzIHBhdGgKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS1zdHJhY2UtZml4LXJlcHJvZHVjaWJpbHR5LWlzc3Vlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS1zdHJhY2UtZml4LXJlcHJvZHVjaWJpbHR5LWlzc3Vlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGMxNzZlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLXN0cmFjZS1maXgtcmVwcm9kdWNpYmlsdHktaXNzdWVzLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gNjMwOTc5MmM0OWNhOTAwY2VjNmE3ZjFkYzViNTFiZjc1YjYyOWUxMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorRGF0ZTogV2VkLCAxMSBNYXIgMjAyMCAxOTo1Njo1NSArMDAwMAorU3ViamVjdDogW1BBVENIXSBzdHJhY2U6IGZpeCByZXByb2R1Y2liaWx0eSBpc3N1ZXMKKworVGhlIGZ1bGwgcGF0aCB0byB0aGUgZ2VuX3Rlc3RzLnNoIHNjcmlwdCBpcyBlbmNvZGVkIGluIHRoZSB0ZXN0cworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CistLS0KKyB0ZXN0cy9nZW5fdGVzdHMuc2ggfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvZ2VuX3Rlc3RzLnNoIGIvdGVzdHMvZ2VuX3Rlc3RzLnNoCitpbmRleCA1ZTFlN2M5Li4xZTY1ZWFjIDEwMDc1NQorLS0tIGEvdGVzdHMvZ2VuX3Rlc3RzLnNoCisrKysgYi90ZXN0cy9nZW5fdGVzdHMuc2gKK0BAIC00Niw3ICs0Niw3IEBAIHdoaWxlIHJlYWQgLXIgbmFtZSBhcmcwIGFyZ3M7IGRvIHsKKyAKKyAJaGRyPSJcCisgIyEvYmluL3NoIC1lZnUKKy0jIEdlbmVyYXRlZCBieSAkMCBmcm9tICRpbnB1dCAoJG5hbWUgJGFyZzAgJGFyZ3MpOyBkbyBub3QgZWRpdC4iCisrIyBHZW5lcmF0ZWQgYnkgJChiYXNlbmFtZSAkMCkgZnJvbSAkaW5wdXQgKCRuYW1lICRhcmcwICRhcmdzKTsgZG8gbm90IGVkaXQuIgorIAorIAljYXNlICIkYXJnMCIgaW4KKyAJCSsqKQorQEAgLTgwLDcgKzgwLDcgQEAgd2hpbGUgcmVhZCAtciBuYW1lIGFyZzAgYXJnczsgZG8geworIAorIGlmIFsgLW4gIiRuYW1lcyIgXTsgdGhlbgorIAl7CistCQlwcmludGYgJyMgR2VuZXJhdGVkIGJ5ICVzIGZyb20gJXM7IGRvIG5vdCBlZGl0LlxuJyAiJDAiICIkaW5wdXQiCisrCQlwcmludGYgJyMgR2VuZXJhdGVkIGJ5ICVzIGZyb20gJXM7IGRvIG5vdCBlZGl0LlxuJyAiJChiYXNlbmFtZSAkMCkiICIkaW5wdXQiCisgCQlwcmludGYgJ0dFTl9URVNUUyA9JworIAkJcHJpbnRmICcgJXMuZ2VuLnRlc3QnICRuYW1lcworIAkJZWNobworLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLXRlc3RzLXNpZ2FjdGlvbi1DaGVjay1mb3ItbWlwcy1hbmQtYWxwaGEtYmVmb3JlLXVzaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlLzAwMDEtdGVzdHMtc2lnYWN0aW9uLUNoZWNrLWZvci1taXBzLWFuZC1hbHBoYS1iZWZvcmUtdXNpbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVkODViZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlLzAwMDEtdGVzdHMtc2lnYWN0aW9uLUNoZWNrLWZvci1taXBzLWFuZC1hbHBoYS1iZWZvcmUtdXNpbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gODc5YWU3MWM0NzJjZTUyMmYxYjM1MTRkMmFiZjZhZDQ5YjRhY2MwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDE4IFNlcCAyMDE3IDIyOjUxOjMyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRlc3RzL3NpZ2FjdGlvbjogQ2hlY2sgZm9yIG1pcHMgYW5kIGFscGhhIGJlZm9yZSB1c2luZwotIHNhX3Jlc3RvcmVyCi0KLWxvY2FsIHN0cnVjdHVyZSBkb2VzIG5vdCBkZWZpbmUgcmVzdG9yZXIgbWVtYmVyIGZvciBtaXBzIGFuZCBhbHBoYQotaW4gZGVmaW5pdGlvbiwgd2UgbmVlZCB0byBtYXRjaCB0aGF0IGFzc3VtcHRpb24gaGVyZSB3aGVyZSB0aGV5IGFyZQotYmVpbmcgc2V0Ci0KLUZpeGVzCi18IC4uLy4uL3N0cmFjZS00LjE4L3Rlc3RzL3NpZ2FjdGlvbi5jOjE3NzozNjogZXJyb3I6ICdzdHJ1Y3Rfc2V0X3NhIHtha2Egc3RydWN0IHNldF9zYX0nIGhhcyBubyBtZW1iZXIgbmFtZWQgJ3Jlc3RvcmVyJwotfCAgIyBkZWZpbmUgU0FfUkVTVE9SRVJfQVJHUyAsIG5ld19hY3QtPnJlc3RvcmVyCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotLS0tCi0gdGVzdHMvc2lnYWN0aW9uLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLS0tLSBhL3Rlc3RzL3NpZ2FjdGlvbi5jCi0rKysgYi90ZXN0cy9zaWdhY3Rpb24uYwotQEAgLTE1Niw3ICsxNTYsNyBAQCBtYWluKHZvaWQpCi0gCXNpZ2RlbHNldChtYXNrLmxpYmMsIFNJR0hVUCk7Ci0gCi0gCW1lbWNweShuZXdfYWN0LT5tYXNrLCBtYXNrLm9sZCwgc2l6ZW9mKG1hc2sub2xkKSk7Ci0tIyBpZmRlZiBTQV9SRVNUT1JFUgotKyNpZiBkZWZpbmVkKFNBX1JFU1RPUkVSKSAmJiAhZGVmaW5lZChNSVBTKSAmJiAhZGVmaW5lZChBTFBIQSkKLSAJbmV3X2FjdC0+ZmxhZ3MgPSBTQV9SRVNUT1JFUjsKLSAJbmV3X2FjdC0+cmVzdG9yZXIgPSAodW5zaWduZWQgbG9uZykgMHhkZWFkZmFjZWNhZmVmMDBkVUxMOwotICMgIGRlZmluZSBTQV9SRVNUT1JFUl9GTVQgIiwgc2FfZmxhZ3M9U0FfUkVTVE9SRVIsIHNhX3Jlc3RvcmVyPSUjbHgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9NYWtlZmlsZS1wdGVzdC5wYXRjaAppbmRleCAwOGZhNWM1Li40MmMxODkzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvTWFrZWZpbGUtcHRlc3QucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGVmNTA0MGI0ZjE1MDA2YTIyYWM2M2EzYmFjZmNlYWMzNmZmYzIwNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGVlNDdlMjA1MjU1OTI4Njc5NzAxYTViNzY5YmQ3YWUwZjgxNTExOWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBHYWJyaWVsIEJhcmJ1IDxnYWJyaWVsLmJhcmJ1QGVuZWEuY29tPgogRGF0ZTogVGh1LCAyNSBKdWwgMjAxMyAxNToyODozMyArMDIwMAogU3ViamVjdDogW1BBVENIXSBzdHJhY2U6IEFkZCBwdGVzdApAQCAtMTQsMTAgKzE0LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDgyNWM5ODkuLjQ2MjNjNDggMTAwNjQ0CitpbmRleCA4Y2Y0YzM2Li42NjE2MmViIDEwMDY0NAogLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KICsrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMTQsNiArMTQsNyBAQCBTSVpFT0ZfTE9ORyA9IEBTSVpFT0ZfTE9OR0AKK0BAIC0xNSw2ICsxNSw3IEBAIFNJWkVPRl9MT05HID0gQFNJWkVPRl9MT05HQAogIE1QRVJTX05BTUUgPQogIE1QRVJTX0NDX0ZMQUdTID0KICBBUkNIX01GTEFHUyA9CkBAIC0yNSw3ICsyNSw3IEBACiAgQU1fQ0ZMQUdTID0gJChXQVJOX0NGTEFHUykKICBBTV9DUFBGTEFHUyA9ICQoQVJDSF9NRkxBR1MpIFwKICAJICAgICAgLUkkKGJ1aWxkZGlyKSBcCi1AQCAtNDc3LDMgKzQ3OCwyMSBAQCBCVUlMVF9TT1VSQ0VTID0ga3N5c2VudC5oCitAQCAtNTM4LDMgKzUzOSwyMSBAQCBCVUlMVF9TT1VSQ0VTID0ga3N5c2VudC5oCiAgQ0xFQU5GSUxFUyA9IGtzeXNlbnQuaAogIAogIGluY2x1ZGUgLi4vc2Nuby5hbQpAQCAtNDQsNiArNDQsNiBAQAogKwlkb25lCiArCWZvciBmaWxlIGluICQoRVhUUkFfRElTVCk7IGRvIFwKICsJCWluc3RhbGwgJChzcmNkaXIpLyQkZmlsZSAkKERFU1RESVIpLyQoVEVTVERJUik7IFwKLSsJCXNlZCAtaSAtZSAncy8kJHtzcmNkaXI9Ln0vLi9nJyAkKERFU1RESVIpLyQoVEVTVERJUikvJCRmaWxlOyBcCisrCQkjc2VkIC1pIC1lICdzLyQke3NyY2Rpcj0ufS8uL2cnICQoREVTVERJUikvJChURVNURElSKS8kJGZpbGU7IFwKICsJZG9uZQogKwlmb3IgaSBpbiBuZXQgc2NtX3JpZ2h0cy1mZCBydF9zaWdhY3Rpb247IGRvIHNlZCAtaSAtZSAncy8kJHNyY2Rpci8uL2cnICQoREVTVERJUikvJChURVNURElSKS8kJGkudGVzdDsgZG9uZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9kaXNhYmxlLWdpdC12ZXJzaW9uLWdlbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvZGlzYWJsZS1naXQtdmVyc2lvbi1nZW4ucGF0Y2gKaW5kZXggNWZlZmZmMy4uZThkYmQ3ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9kaXNhYmxlLWdpdC12ZXJzaW9uLWdlbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL2Rpc2FibGUtZ2l0LXZlcnNpb24tZ2VuLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAzYmM0NzUwMmFiMDExZWE4ZDdjOWNkNzI0YjI1MTc0ZWNkOTUwNmJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkODdhN2ZlYjVlYTc1ZGE3MDYxYWZkZDQ3M2ZhYmEwNDRlYzhlYjBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMTggSmFuIDIwMTYgMTM6MzM6NTAgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gc3RyYWNlOiByZW1vdmUgbmVlZCBmb3Igc2NyaXB0cwpAQCAtMTYsNyArMTYsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDk0OWIwNTguLjRiYTk4OWMgMTAwNjQ0CitpbmRleCBkZDRmMTNmLi42NWYwMDBiIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKIEBAIC0xMiwxMiArMTIsMTIgQEAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvbWlwcy1TSUdFTVQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL21pcHMtU0lHRU1ULnBhdGNoCmluZGV4IDBkMzE5MmIuLmU4NmRhOTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvbWlwcy1TSUdFTVQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9taXBzLVNJR0VNVC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMjBjMTg0YTdhYjNmYjdiZTY3ZmI3NjI2YzQxMWU3NTZlYTYxZDJmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzk0NjQ4ZDg0NjcyYmJkYTMwYTkyMGEwNTU0MGI1NmNkMTU1ZWQ5ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTdW4sIDcgQXVnIDIwMTYgMjM6NDc6NTcgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gc3RyYWNlOiBGaXggYnVpbGQgd2l0aCBtaXBzL21pcHM2NCBvbiBtdXNsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL21vcmUtcm9idXN0LXRlc3QtZm9yLW0zMi1teDMyLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvbW9yZS1yb2J1c3QtdGVzdC1mb3ItbTMyLW14MzItY29tcGlsZS1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWJkOTAwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvbW9yZS1yb2J1c3QtdGVzdC1mb3ItbTMyLW14MzItY29tcGlsZS1zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSBjYzk3MzA3ZThlMzlhODE5OTljNmEzNjVkMDU3NDg3YTAyZTYxMjhlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTggSmFuIDIwMTYgMTE6MDA6MDAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbXBlcnMubTQ6IG1vcmUgcm9idXN0IHRlc3QgZm9yIC1tMzIvLW14MzIgY29tcGlsZSBzdXBwb3J0Ci0KLVdoZW4gdXNpbmcgdGhlIGRlZmF1bHQgT0UgdG9vbGNoYWluIGZvciB4ODYtNjQsIHRoZSBiYXNpYyBjaGVja3MgZm9yCi0tbTMyIGFuZCAtbXgzMiBjb21waWxlIHN1cHBvcnQgaW4gbXBlcnMubTQgcGFzcyBidXQgbGF0ZXIgYXR0ZW1wdHMgdG8KLWFjdHVhbGx5IHVzZSB0aGUgdG9vbGNoYWluIHdpdGggLW0zMiBmYWlsLCBlLmcuCi0KLSB8IEluIGZpbGUgaW5jbHVkZWQgZnJvbSAvaG9tZS9hbmRyZS9idWlsZC90bXAvc3lzcm9vdHMvcWVtdXg4Ni02NC91c3IvaW5jbHVkZS9zeXMvc3lzY2FsbC5oOjMxOjAsCi0gfCAgICAgICAgICAgICAgICAgIGZyb20gLi4vc3RyYWNlLTQuMTEvZGVmcy5oOjU1LAotIHwgICAgICAgICAgICAgICAgICBmcm9tIG1wZXJzLW0zMi9rZXJuZWxfZGlyZW50LmM6MzI6Ci0gfCAvaG9tZS9hbmRyZS9idWlsZC90bXAvc3lzcm9vdHMvcWVtdXg4Ni02NC91c3IvaW5jbHVkZS9iaXRzL3N5c2NhbGwuaDo0MToyOTogZmF0YWwgZXJyb3I6IGJpdHMvc3lzY2FsbC0zMi5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0KLU1ha2UgdGhlIG1wZXJzLm00IHRlc3RzIG1vcmUgcm9idXN0IHNvIHRoYXQgY29uZmlndXJlIGNvcnJlY3RseQotZGV0ZWN0cyB0aGUgbGltaXRhdGlvbnMgb2YgdGhlIE9FIHRvb2xjaGFpbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci0KLS0tLQotIG00L21wZXJzLm00IHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL200L21wZXJzLm00IGIvbTQvbXBlcnMubTQKLWluZGV4IDEzNzI1ZDcuLmQ4NTc4ZWEgMTAwNjQ0Ci0tLS0gYS9tNC9tcGVycy5tNAotKysrIGIvbTQvbXBlcnMubTQKLUBAIC04OCw2ICs4OCw3IEBAIGNhc2UgIiRhcmNoIiBpbgotIAlDRkxBR1M9IiRDRkxBR1MgTVBFUlNfQ0ZMQUdTICRJRkxBRyIKLSAJQUNfQ0FDSEVfQ0hFQ0soW2ZvciBtcGVyc19uYW1lIHBlcnNvbmFsaXR5IGNvbXBpbGUgc3VwcG9ydF0sIFtzdF9jdl9jY10sCi0gCQlbQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbI2luY2x1ZGUgPHN0ZGludC5oPgotKwkJCQkJCSAgICAgI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0gCQkJCQkJICAgICBpbnQgbWFpbigpe3JldHVybiAwO31dXSldLAotIAkJCQkgICBbc3RfY3ZfY2M9eWVzXSwKLSAJCQkJICAgW3N0X2N2X2NjPW5vXSldKQotQEAgLTk1LDYgKzk2LDcgQEAgY2FzZSAiJGFyY2giIGluCi0gCQlBQ19DQUNIRV9DSEVDSyhbZm9yIG1wZXJzX25hbWUgcGVyc29uYWxpdHkgcnVudGltZSBzdXBwb3J0XSwKLSAJCQlbc3RfY3ZfcnVudGltZV0sCi0gCQkJW0FDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbI2luY2x1ZGUgPHN0ZGludC5oPgotKwkJCQkJCQkgI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0gCQkJCQkJCSBpbnQgbWFpbigpe3JldHVybiAwO31dXSldLAotIAkJCQkgICAgICAgW3N0X2N2X3J1bnRpbWU9eWVzXSwKLSAJCQkJICAgICAgIFtzdF9jdl9ydW50aW1lPW5vXSwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvcHRlc3Qtc3BhY2VzYXZlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9wdGVzdC1zcGFjZXNhdmUucGF0Y2gKaW5kZXggM2UzMmNjMy4uYzVkOGZmOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9wdGVzdC1zcGFjZXNhdmUucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9wdGVzdC1zcGFjZXNhdmUucGF0Y2gKQEAgLTEsMyArMSw4IEBACitGcm9tIDNmYWQ0ODIxZDkwY2QyNjRkMWI5NDI1M2I5Y2Y0ZmRmNWQ0MDM0YjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK0RhdGU6IFdlZCwgMjkgTWF5IDIwMTkgMDA6MTA6MzIgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gc3RyYWNlOiBUd2VhayBwdGVzdCBkaXNrIHNwYWNlIG1hbmFnZW1lbnQKKwogSWYgdGhlIHRlc3QgaXMgc3VjY2Vzc2Z1bCwgcmVtb3ZlIHRoZSBsb2cgYW5kIGV4cCBmaWxlcy4gVGhpcyBzdG9wcyBzdHJhY2UKIHVzaW5nIGFyb3VuZCA2MDBNQiBvZiBkaXNrIHNwYWNlIGFuZCBydW5uaW5nIG91ciBwdGVzdCBpbWFnZXMgb3V0IG9mIHNwYWNlLgogCkBAIC01LDEwICsxMCwxNCBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3NwZWNpZmljIHRvIE9FIGltYWdlIHNwYWNlIGlzc3Vlc10KIAotSW5kZXg6IHN0cmFjZS00LjI2L3Rlc3RzL2dlbl90ZXN0cy5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN0cmFjZS00LjI2Lm9yaWcvdGVzdHMvZ2VuX3Rlc3RzLnNoCi0rKysgc3RyYWNlLTQuMjYvdGVzdHMvZ2VuX3Rlc3RzLnNoCistLS0KKyB0ZXN0cy9nZW5fdGVzdHMuc2ggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3Rlc3RzL2dlbl90ZXN0cy5zaCBiL3Rlc3RzL2dlbl90ZXN0cy5zaAoraW5kZXggMzU0MDIwNC4uNWUxZTdjOSAxMDA3NTUKKy0tLSBhL3Rlc3RzL2dlbl90ZXN0cy5zaAorKysrIGIvdGVzdHMvZ2VuX3Rlc3RzLnNoCiBAQCAtNjIsNiArNjIsNyBAQCB3aGlsZSByZWFkIC1yIG5hbWUgYXJnMCBhcmdzOyBkbyB7CiAgCQkkaGRyCiAgCQkuICJcJHtzcmNkaXI9Ln0vaW5pdC5zaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9ydW4tcHRlc3QKaW5kZXggMmZlZDk4NC4uNDY2MDIwNyAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9ydW4tcHRlc3QKQEAgLTEsMyArMSw2IEBACiAjIS9iaW4vc2gKLWV4cG9ydCBUSU1FT1VUX0RVUkFUSU9OPTMwCi1tYWtlIC1CIC1DIHRlc3RzIC1rIHRlc3Qtc3VpdGUubG9nCitleHBvcnQgVElNRU9VVF9EVVJBVElPTj0xMjAKK2Nob3duIG5vYm9keSB0ZXN0cworY2hvd24gbm9ib2R5IHRlc3RzLyoKK2Nob3duIG5vYm9keSAuLi9wdGVzdAorc3Ugbm9ib2R5IC1jICJtYWtlIC1CIC1DIHRlc3RzIC1rIHRlc3Qtc3VpdGUubG9nIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9zeXNfaGVhZGVycy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2Uvc3lzX2hlYWRlcnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0NmYyYzMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9zeXNfaGVhZGVycy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVJlbW92ZSBjb25maWd1cmUgY2hlY2tzIGZvciBmZXcgc3lzLyBoZWFkZXJzCi0KLXN5cy9pcGMuaCwgc3lzL3NlbS5oLCBzeXMvc2htLmgsIGFuZCBzeXMvbXNnLmggYXJlIGFjdHVhbGx5IHdyYXBwZXJzCi1mb3Iga2VybmVsIGhlYWRlcnMgaW4gbGliYyBpZiBhdmFpbGFibGUsIGhlcmUgc3RyYWNlIGlzIHRyeWluZyB0byBtYXRjaAotdHJhY2VkIHByb2Nlc3MncyBBUElzIHRvIHN5c2NhbGxzIGtlcm5lbCBzdHJ1Y3R1cmVzCi0KLVJlbW92aW5nIHRoZSBjaGVja3MgbWFrZXMgaXQgZGVmYXVsdCB0byByaWdodCBrZXJuZWwgVUFQSSBoZWFkZXJzIHVuZGVyIGxpbnV4LwotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy5zdHJhY2UuaW8vcGlwZXJtYWlsL3N0cmFjZS1kZXZlbC8yMDE5LU5vdmVtYmVyLzAwOTIyMi5odG1sXQotU3VnZ2VzdGVkLWJ5OiBSaWNoIEZlbGtlciA8ZGFsaWFzQGFlcmlmYWwuY3g+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC00MzksMTEgKzQzOSw3IEBAIEFDX0NIRUNLX0hFQURFUlMobTRfbm9ybWFsaXplKFsKLSAJc3lzL2NvbmYuaAotIAlzeXMvZXZlbnRmZC5oCi0gCXN5cy9mYW5vdGlmeS5oCi0tCXN5cy9pcGMuaAotLQlzeXMvbXNnLmgKLSAJc3lzL3F1b3RhLmgKLS0Jc3lzL3NlbS5oCi0tCXN5cy9zaG0uaAotIAlzeXMvc2lnbmFsZmQuaAotIAlzeXMveGF0dHIuaAotIAl1c3RhdC5oCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3VpbnRwdHJfdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvdWludHB0cl90LnBhdGNoCmluZGV4IDZkM2RkNmYuLjA4OGQ2ODUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvdWludHB0cl90LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvdWludHB0cl90LnBhdGNoCkBAIC0xLDEwICsxLDIwIEBACi1pbmNsdWRlIHN0ZGludC5oIGZvciBnZXR0aW5nIHVpbnRwdHJfdCBkZWZpbml0aW9uCitGcm9tIGE2YzkzNjZiZmJjZWY2ZjNmNGJiMDY4YjFmMWE1NjIzOTM1YjUwMTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCA1IE5vdiAyMDE5IDIwOjA1OjA4IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgc3RkaW50LmggZm9yIGdldHRpbmcgdWludHB0cl90IGRlZmluaXRpb24KIAogZml4ZXMgZG9fY29tcGlsZV9wdGVzdF9iYXNlCiB0ZXN0cy9mYW5vdGlmeV9tYXJrLmM6MTkxOjIzOiBlcnJvcjogJ3VpbnRwdHJfdCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ2ludHB0cl90Jz8KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCistLS0KKyB0ZXN0cy9mYW5vdGlmeV9tYXJrLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3Rlc3RzL2Zhbm90aWZ5X21hcmsuYyBiL3Rlc3RzL2Zhbm90aWZ5X21hcmsuYworaW5kZXggYWFkZTY0My4uZGU1NzlmMyAxMDA2NDQKIC0tLSBhL3Rlc3RzL2Zhbm90aWZ5X21hcmsuYwogKysrIGIvdGVzdHMvZmFub3RpZnlfbWFyay5jCiBAQCAtMTgsNiArMTgsNyBAQApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvdXBkYXRlLWdhd2stcGF0aHMucGF0Y2gKaW5kZXggNzA3NzA0OC4uZDQ2YjE0NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3VwZGF0ZS1nYXdrLXBhdGhzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBmMGQ3ZWJmNDg0NDFlMGIwOTBjM2U2MDUzYjhjODQ1ZDBhNGEzYjE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxMmE3MjZiMjgwZWNhOTQ4ODNlZGNiNGRhMWVhYWY4ZTkzZDQxNzM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMTggSmFuIDIwMTYgMTE6MDE6MDAgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gdXBkYXRlIGdhd2sgcGF0aHMsIC9iaW4vZ2F3ayAtPiAvdXNyL2Jpbi9nYXdrCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzUuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDAwYWZiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotU1VNTUFSWSA9ICJTeXN0ZW0gY2FsbCB0cmFjaW5nIHRvb2wiCi1IT01FUEFHRSA9ICJodHRwOi8vc3RyYWNlLmlvIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJMR1BMLTIuMSsgJiBHUEwtMisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wMTY5YTA0ODEwODMwZTk0ZjRiMWNmYjgyM2M5ZjU5MiIKLQotU1JDX1VSSSA9ICJodHRwczovL3N0cmFjZS5pby9maWxlcy8ke1BWfS9zdHJhY2UtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtZ2l0LXZlcnNpb24tZ2VuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21vcmUtcm9idXN0LXRlc3QtZm9yLW0zMi1teDMyLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vbWlwcy1TSUdFTVQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtc2lnYWN0aW9uLUNoZWNrLWZvci1taXBzLWFuZC1hbHBoYS1iZWZvcmUtdXNpbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wdGVzdC1zcGFjZXNhdmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdWludHB0cl90LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3N5c19oZWFkZXJzLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjg0ZjVlNzJkZTgxM2M5YjFiYjYwNTdlZThhYjQyOGQ4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjMTMxMTk4NzQ5NjU2NDAxZmUzZWZkNmI0YjE2YTA3ZWE4NjdlOGY1MzA4NjdjZWFlODkzMGJiYzkzN2EwNDciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0Ci0KLVBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAiXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbYmx1ZXpdID0gImFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9eWVzLGFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9bm8sYmx1ZXo1IgotUEFDS0FHRUNPTkZJR1tsaWJ1bndpbmRdID0gIi0td2l0aC1saWJ1bndpbmQsLS13aXRob3V0LWxpYnVud2luZCxsaWJ1bndpbmQiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtbXBlcnM9bm8iCi0KLUNGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtRHNpZ2NvbnRleHRfc3RydWN0PXNpZ2NvbnRleHQiCi0KLVRFU1RESVIgPSAidGVzdHMiCi1QVEVTVF9CVUlMRF9IT1NUX1BBVFRFUk4gPSAiXihERUJfQ0hBTkdFTE9HVElNRXxSUE1fQ0hBTkdFTE9HVElNRXxXQVJOX0NGTEFHU19GT1JfQlVJTER8TERGTEFHU19GT1JfQlVJTEQpIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIFdlIGRvbid0IHNoaXAgc3RyYWNlLWdyYXBoIGhlcmUgYmVjYXVzZSBpdCBuZWVkcyBwZXJsCi0Jcm0gJHtEfSR7YmluZGlyfS9zdHJhY2UtZ3JhcGgKLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gYnVpbGR0ZXN0LVRFU1RTCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGluc3RhbGwtcHRlc3QgQlVJTERESVI9JHtCfSBERVNURElSPSR7RH0ke1BURVNUX1BBVEh9IFRFU1RESVI9JHtURVNURElSfQotCWluc3RhbGwgLW0gNzU1ICR7U30vdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0KLQlpbnN0YWxsIC1tIDY0NCAke0J9L2NvbmZpZy5oICR7RH0ke1BURVNUX1BBVEh9Ci0gICAgICAgIHNlZCAtaSAtZSAnL15zcmMvcy9zdHJhY2UuKlsxLTldL3B0ZXN0LycgJHtEfS8ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKLX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgY29yZXV0aWxzIGdyZXAgZ2F3ayBzZWQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotVE9PTENIQUlOID0gImdjYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNS41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV81LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU1NTJkYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNS41LmJiCkBAIC0wLDAgKzEsNTYgQEAKK1NVTU1BUlkgPSAiU3lzdGVtIGNhbGwgdHJhY2luZyB0b29sIgorSE9NRVBBR0UgPSAiaHR0cDovL3N0cmFjZS5pbyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiTEdQTC0yLjErICYgR1BMLTIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzc1NmQ5ZDVkYWJjMjc2NjNkZjY0ZjBiZjQ5MjE2NmMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9zdHJhY2UuaW8vZmlsZXMvJHtQVn0vc3RyYWNlLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWdpdC12ZXJzaW9uLWdlbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1wdGVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vbWlwcy1TSUdFTVQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3B0ZXN0LXNwYWNlc2F2ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91aW50cHRyX3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zdHJhY2UtZml4LXJlcHJvZHVjaWJpbHR5LWlzc3Vlcy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkYmNlMmU4NDYzMmIzOWE0ZWQ4NmI5ZmM2MDQ0N2FmOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZjU4OTU4YzhlNTllYTYyMjkzZDkwN2QxMDU3MmUzNTJiNTgyYmQ3OTQ4ZWQyMWFhMjhlYmI0N2U1YmYzMGZmIgorCitpbmhlcml0IGF1dG90b29scyBwdGVzdAorCitQQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gIlwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV0b290aCcsICdibHVleicsICcnLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHW2JsdWV6XSA9ICJhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oPXllcyxhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oPW5vLGJsdWV6NSIKK1BBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICItLXdpdGgtbGlidW53aW5kLC0td2l0aG91dC1saWJ1bndpbmQsbGlidW53aW5kIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLW1wZXJzPW5vIgorCitDRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLURzaWdjb250ZXh0X3N0cnVjdD1zaWdjb250ZXh0IgorCitURVNURElSID0gInRlc3RzIgorUFRFU1RfQlVJTERfSE9TVF9QQVRURVJOID0gIl4oREVCX0NIQU5HRUxPR1RJTUV8UlBNX0NIQU5HRUxPR1RJTUV8V0FSTl9DRkxBR1NfRk9SX0JVSUxEfExERkxBR1NfRk9SX0JVSUxEKSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBXZSBkb24ndCBzaGlwIHN0cmFjZS1ncmFwaCBoZXJlIGJlY2F1c2UgaXQgbmVlZHMgcGVybAorCXJtICR7RH0ke2JpbmRpcn0vc3RyYWNlLWdyYXBoCit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGJ1aWxkdGVzdC1URVNUUworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBpbnN0YWxsLXB0ZXN0IEJVSUxERElSPSR7Qn0gREVTVERJUj0ke0R9JHtQVEVTVF9QQVRIfSBURVNURElSPSR7VEVTVERJUn0KKwlpbnN0YWxsIC1tIDc1NSAke1N9L3Rlc3QtZHJpdmVyICR7RH0ke1BURVNUX1BBVEh9CisJaW5zdGFsbCAtbSA2NDQgJHtCfS9jb25maWcuaCAke0R9JHtQVEVTVF9QQVRIfQorICAgICAgICBzZWQgLWkgLWUgJy9ec3JjL3Mvc3RyYWNlLipbMS05XS9wdGVzdC8nICR7RH0vJHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCit9CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIGNvcmV1dGlscyBncmVwIGdhd2sgc2VkIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK1RPT0xDSEFJTiA9ICJnY2MiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb25fMS4xMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZmYTFjNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb25fMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotU1VNTUFSWSA9ICJTdWJ2ZXJzaW9uIChzdm4pIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gY2xpZW50IgotSE9NRVBBR0UgPSAiaHR0cDovL3N1YnZlcnNpb24uYXBhY2hlLm9yZyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJBcGFjaGUtMiAmIE1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTY0ODdhZTcwOTRkMzU5ZmE5MGZiOWM0MDk2ZTUyZTJiIgotCi1ERVBFTkRTID0gImFwci11dGlsIHNlcmYgc3FsaXRlMyBmaWxlIGx6NCIKLURFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV9tYWNvcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1saWJ0b29sLW5hbWUtaW4tY29uZmlndXJlLmFjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NlcmZtYWNyby5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFmZjI0OWY4NDhmODM0ZGVkODg1MzY1NDNlMDMxOTc1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNiZDBiNWM4ZTRjNTE3NTI2M2RjOWE5MmZkOWFlZjk0Y2U5MTdlODBhZjAzNGYyNmZlNWM0NWZkZTdlMGY3NzEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0Ci0KLUNWRV9QUk9EVUNUID0gImFwYWNoZTpzdWJ2ZXJzaW9uIgotCi1QQUNLQUdFQ09ORklHID89ICIiCi0KLVBBQ0tBR0VDT05GSUdbYm9vc3RdID0gIi0td2l0aC1ib29zdD0ke1JFQ0lQRV9TWVNST09UfSR7ZXhlY19wcmVmaXh9LC0td2l0aG91dC1ib29zdCxib29zdCIKLVBBQ0tBR0VDT05GSUdbc2FzbF0gPSAiLS13aXRoLXNhc2wsLS13aXRob3V0LXNhc2wsY3lydXMtc2FzbCIKLVBBQ0tBR0VDT05GSUdbZ25vbWUta2V5cmluZ10gPSAiLS13aXRoLWdub21lLWtleXJpbmcsLS13aXRob3V0LWdub21lLWtleXJpbmcsZ2xpYi0yLjAgZ25vbWUta2V5cmluZyIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfSBcCi0gICAgLS13aXRoLWFwci11dGlsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKLSAgICAtLXdpdGhvdXQtYXB4cyBcCi0gICAgLS13aXRob3V0LWJlcmtlbGV5LWRiIFwKLSAgICAtLXdpdGhvdXQtc3dpZyBcCi0gICAgLS1kaXNhYmxlLWtleWNoYWluIFwKLSAgICAtLXdpdGgtdXRmOHByb2M9aW50ZXJuYWwgXAotICAgIGFjX2N2X3BhdGhfUlVCWT1ub25lIFwKLSIKLQotYWNwYXRocyA9ICItSSBidWlsZC8gLUkgYnVpbGQvYWMtbWFjcm9zLyIKLQotQ1BQRkxBR1MgKz0gIi1QIgotQlVJTERfQ1BQRkxBR1MgKz0gIi1QIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0Jcm0gLWYgJHtTfS9saWJ0b29sCi0Jcm0gLWYgJHtTfS9idWlsZC9saWJ0b29sLm00ICR7U30vYnVpbGQvbHRtYWluLnNoICR7U30vYnVpbGQvbHRvcHRpb25zLm00ICR7U30vYnVpbGQvbHRzdWdhci5tNCAke1N9L2J1aWxkL2x0dmVyc2lvbi5tNCAke1N9L2J1aWxkL2x0fm9ic29sZXRlLm00Ci0Jcm0gLWYgJHtTfS9hY2xvY2FsLm00Ci0Jc2VkIC1pIC1lICdzOndpdGhfc2FzbD0iL3Vzci9sb2NhbCI6d2l0aF9zYXNsPSIke1NUQUdJTkdfRElSfSI6JyAke1N9L2J1aWxkL2FjLW1hY3Jvcy9zYXNsLm00Ci19Ci0KLSN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfbG9jYWwvbGlic3ZuX3JhX2xvY2FsLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCAvdXNyL2Jpbi9sZDogY2Fubm90IGZpbmQgLWxzdm5fZGVsdGEtMXwgY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfc3ZuL2xpYnN2bl9yYV9zdm4tMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX3NlcmYvbGlic3ZuX3JhX3NlcmYtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCi0jfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogZXJyb3I6IHJlbGluayBgbGlic3ZuX3JhX3NlcmYtMS5sYScgd2l0aCB0aGUgYWJvdmUgY29tbWFuZCBiZWZvcmUgaW5zdGFsbGluZyBpdAotI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAuLi8uLi9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCi0jfCAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9zdWJ2ZXJzaW9uLTEuOC45L2J1aWxkLW91dHB1dHMubWs6MTA5MDogcmVjaXBlIGZvciB0YXJnZXQgJ2luc3RhbGwtc2VyZi1saWInIGZhaWxlZAotI3wgbWFrZTogKioqIFtpbnN0YWxsLXNlcmYtbGliXSBFcnJvciAxCi1QQVJBTExFTF9NQUtFSU5TVCA9ICIiCi0KLVJERVBFTkRTXyR7UE59ID0gInNlcmYiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuMTMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjEzLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg3OWYxMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjEzLjAuYmIKQEAgLTAsMCArMSw2MyBAQAorU1VNTUFSWSA9ICJTdWJ2ZXJzaW9uIChzdm4pIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gY2xpZW50IgorSE9NRVBBR0UgPSAiaHR0cDovL3N1YnZlcnNpb24uYXBhY2hlLm9yZyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJBcGFjaGUtMiAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTY0ODdhZTcwOTRkMzU5ZmE5MGZiOWM0MDk2ZTUyZTJiIgorCitERVBFTkRTID0gImFwci11dGlsIHNlcmYgc3FsaXRlMyBmaWxlIGx6NCIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV9tYWNvcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1saWJ0b29sLW5hbWUtaW4tY29uZmlndXJlLmFjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NlcmZtYWNyby5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjMwMDRiNGRhZTE4YmY0NWEwYjZlYTRlZjg4MjAwNjRkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJjNTBjZTJjM2ZhYTdiMWFlOTEwM2M0MzIwMTdkZjk4ZGZkOTg5YzQyMzlmOWY4MjcwYmIzYTMxNGVkOWU1YmQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0CisKK0NWRV9QUk9EVUNUID0gImFwYWNoZTpzdWJ2ZXJzaW9uIgorCitQQUNLQUdFQ09ORklHID89ICIiCisKK1BBQ0tBR0VDT05GSUdbYm9vc3RdID0gIi0td2l0aC1ib29zdD0ke1JFQ0lQRV9TWVNST09UfSR7ZXhlY19wcmVmaXh9LC0td2l0aG91dC1ib29zdCxib29zdCIKK1BBQ0tBR0VDT05GSUdbc2FzbF0gPSAiLS13aXRoLXNhc2wsLS13aXRob3V0LXNhc2wsY3lydXMtc2FzbCIKK1BBQ0tBR0VDT05GSUdbZ25vbWUta2V5cmluZ10gPSAiLS13aXRoLWdub21lLWtleXJpbmcsLS13aXRob3V0LWdub21lLWtleXJpbmcsZ2xpYi0yLjAgZ25vbWUta2V5cmluZyIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfSBcCisgICAgLS13aXRoLWFwci11dGlsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKKyAgICAtLXdpdGhvdXQtYXB4cyBcCisgICAgLS13aXRob3V0LWJlcmtlbGV5LWRiIFwKKyAgICAtLXdpdGhvdXQtc3dpZyBcCisgICAgLS1kaXNhYmxlLWtleWNoYWluIFwKKyAgICAtLXdpdGgtdXRmOHByb2M9aW50ZXJuYWwgXAorICAgIGFjX2N2X3BhdGhfUlVCWT1ub25lIFwKKyIKKworRVhUUkFfT0VNQUtFICs9ICJwa2djb25maWdfZGlyPSR7bGliZGlyfS9wa2djb25maWciCisKK2FjcGF0aHMgPSAiLUkgYnVpbGQvIC1JIGJ1aWxkL2FjLW1hY3Jvcy8iCisKK0NQUEZMQUdTICs9ICItUCIKK0JVSUxEX0NQUEZMQUdTICs9ICItUCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCXJtIC1mICR7U30vbGlidG9vbAorCXJtIC1mICR7U30vYnVpbGQvbGlidG9vbC5tNCAke1N9L2J1aWxkL2x0bWFpbi5zaCAke1N9L2J1aWxkL2x0b3B0aW9ucy5tNCAke1N9L2J1aWxkL2x0c3VnYXIubTQgJHtTfS9idWlsZC9sdHZlcnNpb24ubTQgJHtTfS9idWlsZC9sdH5vYnNvbGV0ZS5tNAorCXJtIC1mICR7U30vYWNsb2NhbC5tNAorCXNlZCAtaSAtZSAnczp3aXRoX3Nhc2w9Ii91c3IvbG9jYWwiOndpdGhfc2FzbD0iJHtTVEFHSU5HX0RJUn0iOicgJHtTfS9idWlsZC9hYy1tYWNyb3Mvc2FzbC5tNAorfQorCisjfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX2xvY2FsL2xpYnN2bl9yYV9sb2NhbC0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmVwb3MvbGlic3ZuX3JlcG9zLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgL3Vzci9iaW4vbGQ6IGNhbm5vdCBmaW5kIC1sc3ZuX2RlbHRhLTF8IGNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX3N2bi9saWJzdm5fcmFfc3ZuLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zZXJmL2xpYnN2bl9yYV9zZXJmLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJworI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IGVycm9yOiByZWxpbmsgYGxpYnN2bl9yYV9zZXJmLTEubGEnIHdpdGggdGhlIGFib3ZlIGNvbW1hbmQgYmVmb3JlIGluc3RhbGxpbmcgaXQKKyN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgLi4vLi4vc3VidmVyc2lvbi9saWJzdm5fcmVwb3MvbGlic3ZuX3JlcG9zLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJworI3wgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvc3VidmVyc2lvbi0xLjguOS9idWlsZC1vdXRwdXRzLm1rOjEwOTA6IHJlY2lwZSBmb3IgdGFyZ2V0ICdpbnN0YWxsLXNlcmYtbGliJyBmYWlsZWQKKyN8IG1ha2U6ICoqKiBbaW5zdGFsbC1zZXJmLWxpYl0gRXJyb3IgMQorUEFSQUxMRUxfTUFLRUlOU1QgPSAiIgorCitSREVQRU5EU18ke1BOfSA9ICJzZXJmIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0LzAwMDEtYXJjaGl0ZWN0dXJlLVJlY29nbmlzZS1SSVNDVi0zMi1SSVNDVi02NC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0LzAwMDEtYXJjaGl0ZWN0dXJlLVJlY29nbmlzZS1SSVNDVi0zMi1SSVNDVi02NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzAzODEyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvMDAwMS1hcmNoaXRlY3R1cmUtUmVjb2duaXNlLVJJU0NWLTMyLVJJU0NWLTY0LnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gNGE2YWNlMGE5NjU5NjVlYTE1ZTg4YzM0MThjNzE1OGNhNWNjOWY4ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIxIE5vdiAyMDE5IDEwOjEyOjA1IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGFyY2hpdGVjdHVyZTogUmVjb2duaXNlIFJJU0NWLTMyL1JJU0NWLTY0CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvY29tbWl0LzE3MWI1MzM4MDA4NWIxMjg4YjAzYjE5YTJiOTc4ZjM2YTVjMDAzZDBdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2FyY2hpdGVjdHVyZS5oIHwgMTMgKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvYXJjaGl0ZWN0dXJlLmggYi9zcmMvYXJjaGl0ZWN0dXJlLmgKK2luZGV4IDI2Njc5ZTIuLjg5YzdkMzIgMTAwNjQ0CistLS0gYS9zcmMvYXJjaGl0ZWN0dXJlLmgKKysrKyBiL3NyYy9hcmNoaXRlY3R1cmUuaAorQEAgLTU3LDYgKzU3LDggQEAgZW51bSB7CisgICAgICAgICBBUkNISVRFQ1RVUkVfTTY4SywKKyAgICAgICAgIEFSQ0hJVEVDVFVSRV9USUxFR1gsCisgICAgICAgICBBUkNISVRFQ1RVUkVfQ1JJUywKKysgICAgICAgQVJDSElURUNUVVJFX1JJU0NWMzIsCisrICAgICAgIEFSQ0hJVEVDVFVSRV9SSVNDVjY0LAorICAgICAgICAgX0FSQ0hJVEVDVFVSRV9NQVgsCisgICAgICAgICBfQVJDSElURUNUVVJFX0lOVkFMSUQgPSAtMQorIH07CitAQCAtMTk0LDYgKzE5NiwxNyBAQCBpbnQgdW5hbWVfYXJjaGl0ZWN0dXJlKHZvaWQpOworICNlbGlmIGRlZmluZWQoX19jcmlzX18pCisgIyAgZGVmaW5lIG5hdGl2ZV9hcmNoaXRlY3R1cmUoKSBBUkNISVRFQ1RVUkVfQ1JJUworICMgIGVycm9yICJNaXNzaW5nIExJQl9BUkNIX1RVUExFIGZvciBDUklTIgorKyNlbGlmIGRlZmluZWQoX19yaXNjdikKKysjICBpZiBfX1NJWkVPRl9QT0lOVEVSX18gPT0gNAorKyMgICAgZGVmaW5lIG5hdGl2ZV9hcmNoaXRlY3R1cmUoKSBBUkNISVRFQ1RVUkVfUklTQ1YzMgorKyMgICAgZGVmaW5lIExJQl9BUkNIX1RVUExFICJyaXNjdjMyLWxpbnV4LWdudSIKKysjICBlbGlmIF9fU0laRU9GX1BPSU5URVJfXyA9PSA4CisrIyAgICBkZWZpbmUgbmF0aXZlX2FyY2hpdGVjdHVyZSgpIEFSQ0hJVEVDVFVSRV9SSVNDVjY0CisrIyAgICBkZWZpbmUgTElCX0FSQ0hfVFVQTEUgInJpc2N2NjQtbGludXgtZ251IgorKyMgIGVsc2UKKysjICAgIGVycm9yICJVbnJlY29nbml6ZWQgcmlzY3YgYXJjaGl0ZWN0dXJlIHZhcmlhbnQiCisrIyAgZW5kaWYKKysjICBkZWZpbmUgUFJPQ19DUFVJTkZPX01PREVMICJjcHUgbW9kZWwiCisgI2Vsc2UKKyAjICBlcnJvciAiUGxlYXNlIHJlZ2lzdGVyIHlvdXIgYXJjaGl0ZWN0dXJlIGhlcmUhIgorICNlbmRpZgorLS0gCisyLjI0LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvbWlwczY0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvbWlwczY0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyMDZiYzQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydC9taXBzNjQucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorUmVjb2duaXNlIG1pcHM2NCBuMzIvbjY0CisKK1RoZXNlIGFyZSBzdXBwb3J0ZWQgaW4gc3lzdGVtZCBub3cgYSBkYXlzCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvY29tbWl0L2NhZjQ5Yjk1YjNhNmVmZTk0NTUwNzgwOThjNzI5ZDgzYjA4ZTUyMDZdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCistLS0gYS9zcmMvYXJjaGl0ZWN0dXJlLmgKKysrKyBiL3NyYy9hcmNoaXRlY3R1cmUuaAorQEAgLTEyNywxMyArMTI3LDIyIEBAIGludCB1bmFtZV9hcmNoaXRlY3R1cmUodm9pZCk7CisgIyAgZGVmaW5lIG5hdGl2ZV9hcmNoaXRlY3R1cmUoKSBBUkNISVRFQ1RVUkVfU1BBUkMKKyAjICBkZWZpbmUgTElCX0FSQ0hfVFVQTEUgInNwYXJjLWxpbnV4LWdudSIKKyAjICBkZWZpbmUgUFJPQ19DUFVJTkZPX01PREVMICJjcHUiCistI2VsaWYgZGVmaW5lZChfX21pcHM2NF9fKQorKyNlbGlmIGRlZmluZWQoX19taXBzNjQpICYmIGRlZmluZWQoX19MUDY0X18pCisgIyAgaWYgX19CWVRFX09SREVSID09IF9fQklHX0VORElBTgorICMgICAgZGVmaW5lIG5hdGl2ZV9hcmNoaXRlY3R1cmUoKSBBUkNISVRFQ1RVUkVfTUlQUzY0CistIyAgICBlcnJvciAiTWlzc2luZyBMSUJfQVJDSF9UVVBMRSBmb3IgTUlQUzY0IgorKyMgICAgZGVmaW5lIExJQl9BUkNIX1RVUExFICJtaXBzNjQtbGludXgtZ251YWJpNjQiCisgIyAgZWxzZQorICMgICAgZGVmaW5lIG5hdGl2ZV9hcmNoaXRlY3R1cmUoKSBBUkNISVRFQ1RVUkVfTUlQUzY0X0xFCistIyAgICBlcnJvciAiTWlzc2luZyBMSUJfQVJDSF9UVVBMRSBmb3IgTUlQUzY0X0xFIgorKyMgICAgZGVmaW5lIExJQl9BUkNIX1RVUExFICJtaXBzNjRlbC1saW51eC1nbnVhYmk2NCIKKysjICBlbmRpZgorKyMgIGRlZmluZSBQUk9DX0NQVUlORk9fTU9ERUwgImNwdSBtb2RlbCIKKysjZWxpZiBkZWZpbmVkKF9fbWlwczY0KQorKyMgIGlmIF9fQllURV9PUkRFUiA9PSBfX0JJR19FTkRJQU4KKysjICAgIGRlZmluZSBuYXRpdmVfYXJjaGl0ZWN0dXJlKCkgQVJDSElURUNUVVJFX01JUFM2NAorKyMgICAgZGVmaW5lIExJQl9BUkNIX1RVUExFICJtaXBzNjQtbGludXgtZ251YWJpbjMyIgorKyMgIGVsc2UKKysjICAgIGRlZmluZSBuYXRpdmVfYXJjaGl0ZWN0dXJlKCkgQVJDSElURUNUVVJFX01JUFM2NF9MRQorKyMgICAgZGVmaW5lIExJQl9BUkNIX1RVUExFICJtaXBzNjRlbC1saW51eC1nbnVhYmluMzIiCisgIyAgZW5kaWYKKyAjICBkZWZpbmUgUFJPQ19DUFVJTkZPX01PREVMICJjcHUgbW9kZWwiCisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMy5iYgppbmRleCBhZWY4ODM5Li5hN2ExZjBmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydF8yMzMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnRfMjMzLmJiCkBAIC0zLDYgKzMsOCBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5HUEwyO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC1ib290Y2hhcnQuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYXJjaGl0ZWN0dXJlLVJlY29nbmlzZS1SSVNDVi0zMi1SSVNDVi02NC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9taXBzNjQucGF0Y2ggXAogIgogCiBTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnRfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIKaW5kZXggYjRiZDRjYS4uZWQxNGZlNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIKQEAgLTI5LDcgKzI5LDcgQEAKIElOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDk5IDMgNSAuIHN0b3AgMjAgMCAxIDIgNiAuIgogCiAjIG1hbmdsaW5nIG5lZWRlZCBmb3IgbWFrZQotTUFLRV9BUkNIID0gImBlY2hvICR7VEFSR0VUX0FSQ0h9IHwgc2VkIHMsaS44NixpNjg2LCB8IHNlZCBzLGFhcmNoNjQuKixhNjQsYCIKK01BS0VfQVJDSCA9ICJgZWNobyAke1RBUkdFVF9BUkNIfSB8IHNlZCBzLGkuODYsaTY4NiwgfCBzZWQgcyxhYXJjaDY0LiosYTY0LCB8IHNlZCBzLGFybWViLGFybSxgIgogTUFLRV9PUyA9ICJgZWNobyAke1RBUkdFVF9PU30gfCBzZWQgcyxebGludXguKixHTlUvTGludXgsYCIKIAogRVhUUkFfT0VNQUtFID0gIk1BQ0hJTkU9JHtNQUtFX0FSQ0h9IE9QU1lTPSR7TUFLRV9PU30gJ0NDPSR7Q0N9JyAnQVI9JHtBUn0nIgpAQCAtNDYsNiArNDYsNyBAQAogQ0ZMQUdTX2FwcGVuZF9taXBzNjQgPSAiICR7TENMX1NUT1BfU0VSVklDRVN9IgogQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiICR7TENMX1NUT1BfU0VSVklDRVN9IgogQ0ZMQUdTX2FwcGVuZF9wb3dlcnBjNjQgPSAiICR7TENMX1NUT1BfU0VSVklDRVN9IgorQ0ZMQUdTX2FwcGVuZF9wb3dlcnBjNjRsZSA9ICIgJHtMQ0xfU1RPUF9TRVJWSUNFU30iCiBDRkxBR1NfYXBwZW5kX3Jpc2N2NjQgPSAiICR7TENMX1NUT1BfU0VSVklDRVN9IgogCiBkb19pbnN0YWxsKCkgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsLzAwMDEtRml4LWFiZDRhYmVkZDItRmFpbGVkLXRvLWJ1aWxkLXRrLTguNi4xMC13aXRoLWNyb3NzLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC8wMDAxLUZpeC1hYmQ0YWJlZGQyLUZhaWxlZC10by1idWlsZC10ay04LjYuMTAtd2l0aC1jcm9zcy0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NkMzQxNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC8wMDAxLUZpeC1hYmQ0YWJlZGQyLUZhaWxlZC10by1idWlsZC10ay04LjYuMTAtd2l0aC1jcm9zcy0ucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSBmN2ZhNDhjNGM3NWExZTc0OGRjNTA3MWU3MDljMGI2MmZmNzM5ZWFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogImphbi5uaWp0bWFucyIgPG5panRtYW5zQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6IE1vbiwgOSBEZWMgMjAxOSAxMDowMjoyMCArMDAwMAorU3ViamVjdDogW1BBVENIXSBGaXggW2FiZDRhYmVkZDJdOiBGYWlsZWQgdG8gYnVpbGQgdGsgOC42LjEwIHdpdGggY3Jvc3MKKyBjb21waWxlCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGh1Yi5jb20vdGNsdGsvdGNsL2NvbW1pdC9mN2ZhNDhjNGM3NWExZTc0OGRjNTA3MWU3MDljMGI2MmZmNzM5ZWFhXQorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBjb21wYXQvc3RydG9sLmMgIHwgMiArLQorIGNvbXBhdC9zdHJ0b3VsLmMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb21wYXQvc3RydG9sLmMgYi9jb21wYXQvc3RydG9sLmMKK2luZGV4IGI3ZjY5MTk2Yy4uODExMDA2YTY0IDEwMDY0NAorLS0tIGEvY29tcGF0L3N0cnRvbC5jCisrKysgYi9jb21wYXQvc3RydG9sLmMKK0BAIC01Myw3ICs1Myw3IEBAIHN0cnRvbCgKKyAgICAgICovCisgCisgICAgIHAgPSBzdHJpbmc7CistICAgIHdoaWxlIChUY2xJc1NwYWNlUHJvYygqcCkpIHsKKysgICAgd2hpbGUgKGlzc3BhY2UoVUNIQVIoKnApKSkgeworIAlwICs9IDE7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9jb21wYXQvc3RydG91bC5jIGIvY29tcGF0L3N0cnRvdWwuYworaW5kZXggZTM3ZWIwNWY4Li4xNTU4N2YxZGEgMTAwNjQ0CistLS0gYS9jb21wYXQvc3RydG91bC5jCisrKysgYi9jb21wYXQvc3RydG91bC5jCitAQCAtNzQsNyArNzQsNyBAQCBzdHJ0b3VsKAorICAgICAgKi8KKyAKKyAgICAgcCA9IHN0cmluZzsKKy0gICAgd2hpbGUgKFRjbElzU3BhY2VQcm9jKCpwKSkgeworKyAgICB3aGlsZSAoaXNzcGFjZShVQ0hBUigqcCkpKSB7CisgCXAgKz0gMTsKKyAgICAgfQorICAgICBpZiAoKnAgPT0gJy0nKSB7CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2wvYWx0ZXItaW5jbHVkZWRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC9hbHRlci1pbmNsdWRlZGlyLnBhdGNoCmluZGV4IGM4NTMwZTEuLjg2NjMyZDkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC9hbHRlci1pbmNsdWRlZGlyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC9hbHRlci1pbmNsdWRlZGlyLnBhdGNoCkBAIC04LDYgKzgsNyBAQAogRml4ZWQgdGhlIFRDTF9JTkNMVURFX1NQRUMKIAogU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CiAtLS0KICBNYWtlZmlsZS5pbiAgfCAgICAyICstCiAgY29uZmlndXJlICAgIHwgICAgNCArKy0tCkBAIC0zNCw3ICszNSw3IEBACiBAQCAtMTkxMzQsNyArMTkxMzQsNyBAQCBldmFsICJUQ0xfTElCX0ZJTEU9bGlidGNsJHtMSUJfU1VGRklYfSIKICBldmFsICJUQ0xfTElCX0ZJTEU9JHtUQ0xfTElCX0ZJTEV9IgogIAotIFRDTF9MSUJSQVJZPSckKGxpYmRpcikvdGNsJChWRVJTSU9OKScKKyB0ZXN0IC16ICIkVENMX0xJQlJBUlkiICYmIFRDTF9MSUJSQVJZPSckKGxpYmRpcikvdGNsJChWRVJTSU9OKScKIC1QUklWQVRFX0lOQ0xVREVfRElSPSckKGluY2x1ZGVkaXIpJwogK1BSSVZBVEVfSU5DTFVERV9ESVI9JyQoaW5jbHVkZWRpcikvdGNsJChWRVJTSU9OKScKICBIVE1MX0RJUj0nJChESVNURElSKS9odG1sJwpAQCAtNTYsNyArNTcsNyBAQAogQEAgLTc5MSw3ICs3OTEsNyBAQCBldmFsICJUQ0xfTElCX0ZJTEU9bGlidGNsJHtMSUJfU1VGRklYfSIKICBldmFsICJUQ0xfTElCX0ZJTEU9JHtUQ0xfTElCX0ZJTEV9IgogIAotIFRDTF9MSUJSQVJZPSckKGxpYmRpcikvdGNsJChWRVJTSU9OKScKKyB0ZXN0IC16ICIkVENMX0xJQlJBUlkiICYmIFRDTF9MSUJSQVJZPSckKGxpYmRpcikvdGNsJChWRVJTSU9OKScKIC1QUklWQVRFX0lOQ0xVREVfRElSPSckKGluY2x1ZGVkaXIpJwogK1BSSVZBVEVfSU5DTFVERV9ESVI9JyQoaW5jbHVkZWRpcikvdGNsJChWRVJTSU9OKScKICBIVE1MX0RJUj0nJChESVNURElSKS9odG1sJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsL3RjbC1yZW1vdmUtaGFyZGNvZGVkLWluc3RhbGwtcGF0aC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC90Y2wtcmVtb3ZlLWhhcmRjb2RlZC1pbnN0YWxsLXBhdGgucGF0Y2gKaW5kZXggMTZmN2M4MC4uMTdkMjUxZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsL3RjbC1yZW1vdmUtaGFyZGNvZGVkLWluc3RhbGwtcGF0aC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2wvdGNsLXJlbW92ZS1oYXJkY29kZWQtaW5zdGFsbC1wYXRoLnBhdGNoCkBAIC0xNCwxMCArMTQsMTEgQEAKIAogU2lnbmVkLW9mZi1ieTogU29uZy5MaSA8U29uZy5MaUB3aW5kcml2ZXIuY29tPgogU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KIC0tLQotIGNvbmZpZ3VyZSB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKyBjb25maWd1cmUgICAgfCAyICstCisgY29uZmlndXJlLmluIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBJbmRleDogdW5peC9jb25maWd1cmUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTI3LDggKzI4LDggQEAKICAKICBldmFsICJUQ0xfTElCX0ZJTEU9JHtUQ0xfTElCX0ZJTEV9IgogIAotLVRDTF9MSUJSQVJZPSckKHByZWZpeCkvbGliL3RjbCQoVkVSU0lPTiknCi0rVENMX0xJQlJBUlk9JyQobGliZGlyKS90Y2wkKFZFUlNJT04pJworLXRlc3QgLXogIiRUQ0xfTElCUkFSWSIgJiYgVENMX0xJQlJBUlk9JyQocHJlZml4KS9saWIvdGNsJChWRVJTSU9OKScKKyt0ZXN0IC16ICIkVENMX0xJQlJBUlkiICYmIFRDTF9MSUJSQVJZPSckKGxpYmRpcikvdGNsJChWRVJTSU9OKScKICBQUklWQVRFX0lOQ0xVREVfRElSPSckKGluY2x1ZGVkaXIpJwogIEhUTUxfRElSPSckKERJU1RESVIpL2h0bWwnCiAgCkBAIC00MCw4ICs0MSw4IEBACiAgCiAgZXZhbCAiVENMX0xJQl9GSUxFPSR7VENMX0xJQl9GSUxFfSIKICAKLS1UQ0xfTElCUkFSWT0nJChwcmVmaXgpL2xpYi90Y2wkKFZFUlNJT04pJwotK1RDTF9MSUJSQVJZPSckKGxpYmRpcikvdGNsJChWRVJTSU9OKScKKy10ZXN0IC16ICIkVENMX0xJQlJBUlkiICYmIFRDTF9MSUJSQVJZPSckKHByZWZpeCkvbGliL3RjbCQoVkVSU0lPTiknCisrdGVzdCAteiAiJFRDTF9MSUJSQVJZIiAmJiBUQ0xfTElCUkFSWT0nJChsaWJkaXIpL3RjbCQoVkVSU0lPTiknCiAgUFJJVkFURV9JTkNMVURFX0RJUj0nJChpbmNsdWRlZGlyKScKICBIVE1MX0RJUj0nJChESVNURElSKS9odG1sJwogIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVkZDk2YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuMTAuYmIKQEAgLTAsMCArMSwxMDUgQEAKK1NVTU1BUlkgPSAiVG9vbCBDb21tYW5kIExhbmd1YWdlIgorSE9NRVBBR0UgPSAiaHR0cDovL3RjbC5zb3VyY2Vmb3JnZS5uZXQiCitTRUNUSU9OID0gImRldmVsL3RjbHRrIgorCisjIGh0dHA6Ly93d3cudGNsLnRrL3NvZnR3YXJlL3RjbHRrL2xpY2Vuc2UuaHRtbAorTElDRU5TRSA9ICJ0Y2wgJiBCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL2NvbXBhdC9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL2xpYnJhcnkvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAorICAgIGZpbGU6Ly8uLi9tYWNvc3gvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAorICAgIGZpbGU6Ly8uLi90ZXN0cy9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL3dpbi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisiCisKK0RFUEVORFMgPSAidGNsLW5hdGl2ZSB6bGliIgorCitCQVNFX1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3RjbC8ke0JQTn0ke1BWfS1zcmMudGFyLmd6IFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vdGNsLWFkZC1zb25hbWUucGF0Y2giCitTUkNfVVJJID0gIiR7QkFTRV9TUkNfVVJJfSBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfbm9uX25hdGl2ZV9idWlsZF9pc3N1ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfaXNzdWVfd2l0aF9vbGRfZGlzdHJvX2dsaWJjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25vX3BhY2thZ2VzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3RjbC1yZW1vdmUtaGFyZGNvZGVkLWluc3RhbGwtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hbHRlci1pbmNsdWRlZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWFiZDRhYmVkZDItRmFpbGVkLXRvLWJ1aWxkLXRrLTguNi4xMC13aXRoLWNyb3NzLS5wYXRjaDtwYXRjaGRpcj0uLiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjk3YzU1NTczZjg1MjBiY2FiNzRlMjFiZmQ4ZDBhYWRjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUxOTZkYmY2NjM4ZTNkZjhkNWM4N2I1ODE1YzhjMmI3NTg0OTZlYjZmMGU0MTQ0NjU5NmM5YTRlNjM4ZDg3ZWQiCisKK1NSQ19VUklfY2xhc3MtbmF0aXZlID0gIiR7QkFTRV9TUkNfVVJJfSIKKworUyA9ICIke1dPUktESVJ9LyR7QlBOfSR7UFZ9L3VuaXgiCisKK1ZFUiA9ICIke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgYmluY29uZmlnIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRocmVhZHMgLS1kaXNhYmxlLXJwYXRoIC0tbGliZGlyPSR7bGliZGlyfSIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCWVjaG8gPiAke1N9Ly4uL2NvbXBhdC9maXhzdHJ0b2QuYworfQorCitkb19pbnN0YWxsKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLXByaXZhdGUtaGVhZGVycworCWxuIC1zZiAuL3RjbHNoJHtWRVJ9ICR7RH0ke2JpbmRpcn0vdGNsc2gKKwlsbiAtc2YgdGNsc2g4LjYgJHtEfSR7YmluZGlyfS90Y2xzaCR7VkVSfQorCXNlZCAtaSAiczstTCR7Qn07LUwke1NUQUdJTkdfTElCRElSfTtnIiB0Y2xDb25maWcuc2gKKwlzZWQgLWkgInM7JyR7V09SS0RJUn07JyR7U1RBR0lOR19JTkNESVJ9O2ciIHRjbENvbmZpZy5zaAorCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KKwlpbnN0YWxsIC1tIDA3NTUgdGNsQ29uZmlnLnNoICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9CisJaW5zdGFsbCAtbSAwNzU1IHRjbENvbmZpZy5zaCAke0R9JHtsaWJkaXJ9CisJZm9yIGRpciBpbiBjb21wYXQgZ2VuZXJpYyB1bml4OyBkbworCQlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyCisJCWluc3RhbGwgLW0gMDY0NCAke1N9Ly4uLyRkaXIvKi5oICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyLworCWRvbmUKK30KKworU1lTUk9PVF9ESVJTICs9ICIke2JpbmRpcl9jcm9zc3NjcmlwdHN9IgorCitQQUNLQUdFUyA9KyAidGNsLWxpYiIKK0ZJTEVTX3RjbC1saWIgPSAiJHtsaWJkaXJ9L2xpYnRjbDguNi5zby4qIgorRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS90Y2wke1ZFUn0gJHtsaWJkaXJ9L3RjbDguNiAke2xpYmRpcn0vdGNsOCIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCAke2xpYmRpcn0vdGNsb29Db25maWcuc2giCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJUaHJlYWQuMyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtUaHJlYWQuM10gPSAiJHttYW5kaXJ9L21hbjMvVGhyZWFkLjMiCisKKyMgaXNuJ3QgZ2V0dGluZyBwaWNrZWQgdXAgYnkgc2hsaWJzIGNvZGUKK1JERVBFTkRTXyR7UE59ICs9ICJ0Y2wtbGliIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJnY2MiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIHRjbHRlc3QKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAke0J9L3RjbHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtciAke1N9Ly4uL2xpYnJhcnkgJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtciAke1N9Ly4uL3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9Cit9CisKKyMgRml4IHNvbWUgcGF0aHMgdGhhdCBtaWdodCBiZSB1c2VkIGJ5IFRjbCBleHRlbnNpb25zCitCSU5DT05GSUdfR0xPQiA9ICIqQ29uZmlnLnNoIgorCisjIEZpeCB0aGUgcGF0aCBpbiBzc3RhdGUKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICIqQ29uZmlnLnNoIgorCisjIENsZWFudXAgaG9zdCBwYXRoIGZyb20gJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCBhbmQgcmVtb3ZlIHRoZQorIyAke2JpbmRpcl9jcm9zc3NjcmlwdHN9L3RjbENvbmZpZy5zaCBmcm9tIHRhcmdldAorUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJ0Y2xfcGFja2FnZV9wcmVwcm9jZXNzIgordGNsX3BhY2thZ2VfcHJlcHJvY2VzcygpIHsKKwlzZWQgLWkgLWUgInM7JHtERUJVR19QUkVGSVhfTUFQfTs7ZyIgXAorCSAgICAgICAtZSAiczstTCR7U1RBR0lOR19MSUJESVJ9Oy1MJHtsaWJkaXJ9O2ciIFwKKwkgICAgICAgLWUgInM7JHtTVEFHSU5HX0lOQ0RJUn07JHtpbmNsdWRlZGlyfTtnIiBcCisJICAgICAgIC1lICJzOy0tc3lzcm9vdD0ke1JFQ0lQRV9TWVNST09UfTs7ZyIgXAorCSAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3RjbENvbmZpZy5zaAorCisJcm0gLWYgJHtQS0dEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vdGNsQ29uZmlnLnNoCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmMzc3ODEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLVNVTU1BUlkgPSAiVG9vbCBDb21tYW5kIExhbmd1YWdlIgotSE9NRVBBR0UgPSAiaHR0cDovL3RjbC5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gImRldmVsL3RjbHRrIgotCi0jIGh0dHA6Ly93d3cudGNsLnRrL3NvZnR3YXJlL3RjbHRrL2xpY2Vuc2UuaHRtbAotTElDRU5TRSA9ICJ0Y2wgJiBCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL2NvbXBhdC9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL2xpYnJhcnkvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotICAgIGZpbGU6Ly8uLi9tYWNvc3gvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotICAgIGZpbGU6Ly8uLi90ZXN0cy9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL3dpbi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0iCi0KLURFUEVORFMgPSAidGNsLW5hdGl2ZSB6bGliIgotCi1CQVNFX1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3RjbC8ke0JQTn0ke1BWfS1zcmMudGFyLmd6IFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vdGNsLWFkZC1zb25hbWUucGF0Y2giCi1TUkNfVVJJID0gIiR7QkFTRV9TUkNfVVJJfSBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfbm9uX25hdGl2ZV9idWlsZF9pc3N1ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfaXNzdWVfd2l0aF9vbGRfZGlzdHJvX2dsaWJjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25vX3BhY2thZ2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3RjbC1yZW1vdmUtaGFyZGNvZGVkLWluc3RhbGwtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hbHRlci1pbmNsdWRlZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiYWEwYTEyMWQ5NWEwZTdiNzNhMDM2ZjI2MDI4NTM4ZDQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWQwY2QyZGUyYzg3YjliYTgwODZiNDM5NTdhMGRlM2ViMmViNTY1YzcxNTlkNWY1M2NjYmJhM2ZlYjkxNWY0ZSIKLQotU1JDX1VSSV9jbGFzcy1uYXRpdmUgPSAiJHtCQVNFX1NSQ19VUkl9IgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59JHtQVn0vdW5peCIKLQotVkVSID0gIiR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdCBiaW5jb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRocmVhZHMgLS1kaXNhYmxlLXJwYXRoIC0tbGliZGlyPSR7bGliZGlyfSIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCWVjaG8gPiAke1N9Ly4uL2NvbXBhdC9maXhzdHJ0b2QuYwotfQotCi1kb19pbnN0YWxsKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLXByaXZhdGUtaGVhZGVycwotCWxuIC1zZiAuL3RjbHNoJHtWRVJ9ICR7RH0ke2JpbmRpcn0vdGNsc2gKLQlsbiAtc2YgdGNsc2g4LjYgJHtEfSR7YmluZGlyfS90Y2xzaCR7VkVSfQotCXNlZCAtaSAiczstTCR7Qn07LUwke1NUQUdJTkdfTElCRElSfTtnIiB0Y2xDb25maWcuc2gKLQlzZWQgLWkgInM7JyR7V09SS0RJUn07JyR7U1RBR0lOR19JTkNESVJ9O2ciIHRjbENvbmZpZy5zaAotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KLQlpbnN0YWxsIC1tIDA3NTUgdGNsQ29uZmlnLnNoICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9Ci0JaW5zdGFsbCAtbSAwNzU1IHRjbENvbmZpZy5zaCAke0R9JHtsaWJkaXJ9Ci0JZm9yIGRpciBpbiBjb21wYXQgZ2VuZXJpYyB1bml4OyBkbwotCQlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyCi0JCWluc3RhbGwgLW0gMDY0NCAke1N9Ly4uLyRkaXIvKi5oICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyLwotCWRvbmUKLX0KLQotU1lTUk9PVF9ESVJTICs9ICIke2JpbmRpcl9jcm9zc3NjcmlwdHN9IgotCi1QQUNLQUdFUyA9KyAidGNsLWxpYiIKLUZJTEVTX3RjbC1saWIgPSAiJHtsaWJkaXJ9L2xpYnRjbDguNi5zby4qIgotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS90Y2wke1ZFUn0gJHtsaWJkaXJ9L3RjbDguNiAke2xpYmRpcn0vdGNsOCIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCAke2xpYmRpcn0vdGNsb29Db25maWcuc2giCi0KLSMgaXNuJ3QgZ2V0dGluZyBwaWNrZWQgdXAgYnkgc2hsaWJzIGNvZGUKLVJERVBFTkRTXyR7UE59ICs9ICJ0Y2wtbGliIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJnY2MiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIHRjbHRlc3QKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAke0J9L3RjbHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke1N9Ly4uL2xpYnJhcnkgJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke1N9Ly4uL3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9Ci19Ci0KLSMgRml4IHNvbWUgcGF0aHMgdGhhdCBtaWdodCBiZSB1c2VkIGJ5IFRjbCBleHRlbnNpb25zCi1CSU5DT05GSUdfR0xPQiA9ICIqQ29uZmlnLnNoIgotCi0jIEZpeCB0aGUgcGF0aCBpbiBzc3RhdGUKLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICIqQ29uZmlnLnNoIgotCi0jIENsZWFudXAgaG9zdCBwYXRoIGZyb20gJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCBhbmQgcmVtb3ZlIHRoZQotIyAke2JpbmRpcl9jcm9zc3NjcmlwdHN9L3RjbENvbmZpZy5zaCBmcm9tIHRhcmdldAotUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJ0Y2xfcGFja2FnZV9wcmVwcm9jZXNzIgotdGNsX3BhY2thZ2VfcHJlcHJvY2VzcygpIHsKLQlzZWQgLWkgLWUgInM7JHtERUJVR19QUkVGSVhfTUFQfTs7ZyIgXAotCSAgICAgICAtZSAiczstTCR7U1RBR0lOR19MSUJESVJ9Oy1MJHtsaWJkaXJ9O2ciIFwKLQkgICAgICAgLWUgInM7JHtTVEFHSU5HX0lOQ0RJUn07JHtpbmNsdWRlZGlyfTtnIiBcCi0JICAgICAgIC1lICJzOy0tc3lzcm9vdD0ke1JFQ0lQRV9TWVNST09UfTs7ZyIgXAotCSAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3RjbENvbmZpZy5zaAotCi0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vdGNsQ29uZmlnLnNoCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy91bmlmZGVmL3VuaWZkZWZfMi4xMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3VuaWZkZWYvdW5pZmRlZl8yLjExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmZjMTFlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3VuaWZkZWYvdW5pZmRlZl8yLjExLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJTZWxlY3RpdmVseSByZW1vdmUgI2lmZGVmIHN0YXRlbWVudHMgZnJvbSBzb3VyY2VzIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotSE9NRVBBR0UgPSAiaHR0cDovL2RvdGF0LmF0L3Byb2cvdW5pZmRlZi8iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc4ZmM2YzJjMWRjNGYxOGM4OTFlZDViN2E0NjlmZTMyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3VuaWZkZWYuYztlbmRsaW5lPTMyO21kNT1hYWVjODRkOGI2OGQ4YjZkZWE3MWY0NWU5OTQ5ZWJmZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG90YXQuYXQvcHJvZy8ke0JQTn0vJHtCUH0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gIjMzNzA1M2ZkOGE3ZDlhYjNhZGY1ZTUwZjg4YWY5NWI3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgyOGZmYzI3MGFjMjYyYjg4ZmUwMTExMzZhY2VmMjc4MGMwNWIwZGMzYzU0MzVkMDA1NjUxNzQwNzg4ZDQ1MzciCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInVuaWZkZWYtKD9QPHB2ZXI+KChcZCtcLiopKykoPyFbYS1mMC05XXs2LH0pKS50YXIiCi0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBwcmVmaXg9JHtwcmVmaXh9Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdW5pZmRlZi91bmlmZGVmXzIuMTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy91bmlmZGVmL3VuaWZkZWZfMi4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmIxMGJhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdW5pZmRlZi91bmlmZGVmXzIuMTIuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJTZWxlY3RpdmVseSByZW1vdmUgI2lmZGVmIHN0YXRlbWVudHMgZnJvbSBzb3VyY2VzIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorSE9NRVBBR0UgPSAiaHR0cDovL2RvdGF0LmF0L3Byb2cvdW5pZmRlZi8iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM0OThjYWYzNDZmNmI3NzkzNDg4MjEwMTc0OWFkYTIzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3VuaWZkZWYuYztlbmRsaW5lPTMyO21kNT02ZjRlZTgwODVkNmU2YWIwZjdjYjQzOTBlMWE5YzQ5NyBcCisgICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSSA9ICJodHRwOi8vZG90YXQuYXQvcHJvZy8ke0JQTn0vJHtCUH0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImFlOGMwYjNiNGM0M2MxZjZiYzVmMzI0MTJhODIwODE4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQzY2UwZjAyZWNkY2RjNzIzYjI0NzU1NzU1NjNkZGIxOTJlOTg4Yzg4NmQzNjgyNjBiYzBhNjNhZWUzYWM0MDAiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInVuaWZkZWYtKD9QPHB2ZXI+KChcZCtcLiopKykoPyFbYS1mMC05XXs2LH0pKS50YXIiCisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBwcmVmaXg9JHtwcmVmaXh9Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuNDYuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjQ2LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0Y2Q2ZGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuNDYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSAke0JQTn0uaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWdpdC12ZXJzaW9uLWdlbi1kb24tdC1hcHBlbmQtZGlydHktaWYtd2UtcmUtbm90LWluLWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS12YXBpZ2VuLm00LXVzZS1QS0dfQ09ORklHX1NZU1JPT1RfRElSLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjc5YmJhZjg5MjllYzhlZDM1OTExYjM1NzFmNWEyNDgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGJiOWI2MGZjMDIzMGIwZGIyYzhhMGUyYTgwZWMyOWYxYzEwYjQzZGM3ODM1NWFiYmE3OGFkZWRiYzJlMDNhMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjQ2LjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC40Ni42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2ZjYyMDMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC40Ni42LmJiCkBAIC0wLDAgKzEsOCBAQAorcmVxdWlyZSAke0JQTn0uaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWdpdC12ZXJzaW9uLWdlbi1kb24tdC1hcHBlbmQtZGlydHktaWYtd2UtcmUtbm90LWluLWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS12YXBpZ2VuLm00LXVzZS1QS0dfQ09ORklHX1NZU1JPT1RfRElSLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDlhZjEyNTY0ODUwNTUwM2IxMzllYmMyZDJjOWVlZTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWYzMTY0OTkzMjg3MmYwOTQ5NzFkNDY0NTNiMjFjNjBhNDE2NjE2NzBmOThhZmEzMzQwNjI0MjViNGFlYzQ3YSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtbWVtY2hlY2stdGVzdHMtRml4LXRpbWVyZmQtc3lzY2FsbC10ZXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1tZW1jaGVjay10ZXN0cy1GaXgtdGltZXJmZC1zeXNjYWxsLXRlc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVmYmJlOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtbWVtY2hlY2stdGVzdHMtRml4LXRpbWVyZmQtc3lzY2FsbC10ZXN0LnBhdGNoCkBAIC0wLDAgKzEsOTggQEAKK0Zyb20gNWQ0MTFmZDE0N2Q2NTJlOWQ3YmIyNTlmNDA0ODY5M2M2ZTQ3NDJhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDkgTWFyIDIwMjAgMTY6MzA6MTkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWVtY2hlY2svdGVzdHM6IEZpeCB0aW1lcmZkIHN5c2NhbGwgdGVzdAorCittb2Rlcm4gbGliYyBwcm92aWRlcyB0aGVzZSBmdW5jdGlvbnMsIG1vcmVvdmVyIHRoaXMgYWxzbyBlbnN1cmVzIHRoYXQgd2UKK2FyZSA2NGJpdCB0aW1lX3Qgc2FmZS4gRmFsbGJhY2sgdG8gZXhpc3RpbmcgZGVmaW5pdGlvbnMgaWYgbGliYyBkb2VzIG5vdAoraGF2ZSB0aGUgaW1wbGVtZW50YXRpb24gb3Igc3lzY2FsbCBpcyBub3QgZGVmaW5lZAorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC92YWxncmluZC9tYWlsbWFuL21lc3NhZ2UvMzY5NDM4OTcvXQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZy5oLmluICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkgKysrKysrKysrCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMyArKysKKyBtZW1jaGVjay90ZXN0cy9saW51eC90aW1lcmZkLXN5c2NhbGwuYyB8IDEwICsrKysrKysrLS0KKyA1IGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKKy0tLSBhL2NvbmZpZy5oLmluCisrKysgYi9jb25maWcuaC5pbgorQEAgLTMwMSw2ICszMDEsOSBAQAorIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N5c252bC5oPiBoZWFkZXIgZmlsZS4gKi8KKyAjdW5kZWYgSEFWRV9TWVNfU1lTTlZMX0gKKyAKKysvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90aW1lcmZkLmg+IGhlYWRlciBmaWxlLiAqLworKyN1bmRlZiBIQVZFX1NZU19USU1FUkZEX0gKKysKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90aW1lLmg+IGhlYWRlciBmaWxlLiAqLworICN1bmRlZiBIQVZFX1NZU19USU1FX0gKKyAKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNDA5OCw2ICs0MDk4LDcgQEAgQUNfQ0hFQ0tfSEVBREVSUyhbICAgICAgIFwKKyAgICAgICAgIHN5cy9zeXNjYWxsLmggICAgXAorICAgICAgICAgc3lzL3N5c252bC5oICAgICBcCisgICAgICAgICBzeXMvdGltZS5oICAgICAgIFwKKysgICAgICAgIHN5cy90aW1lcmZkLmggICAgXAorICAgICAgICAgc3lzL3R5cGVzLmggICAgICBcCisgICAgICAgICBdKQorIAorLS0tIGEvbWVtY2hlY2svdGVzdHMvbGludXgvdGltZXJmZC1zeXNjYWxsLmMKKysrKyBiL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3RpbWVyZmQtc3lzY2FsbC5jCitAQCAtNDUsNiArNDUsOSBAQAorICNpZiBkZWZpbmVkKEhBVkVfU1lTX1RJTUVfSCkKKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyAjZW5kaWYKKysjaWYgZGVmaW5lZChIQVZFX1NZU19USU1FUkZEX0gpCisrI2luY2x1ZGUgPHN5cy90aW1lcmZkLmg+CisrI2VuZGlmCisgI2lmIGRlZmluZWQoSEFWRV9TWVNfVFlQRVNfSCkKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2VuZGlmCitAQCAtNTQsNyArNTcsOCBAQAorICAqIHRpbWVyZmRfKiBzeXN0ZW0gY2FsbCBudW1iZXJzIGludHJvZHVjZWQgaW4gMi42LjIzLiBUaGVzZSBjb25zdGFudHMgYXJlCisgICogbm90IHlldCBpbiB0aGUgZ2xpYmMgMi43IGhlYWRlcnMsIHRoYXQgaXMgd2h5IHRoZXkgYXJlIGRlZmluZWQgaGVyZS4KKyAgKi8KKy0jaWZuZGVmIF9fTlJfdGltZXJmZF9jcmVhdGUKKysjaWYgIWRlZmluZWQoSEFWRV9TWVNfVElNRVJGRF9IKQorKyNpZiAhZGVmaW5lZChfX05SX3RpbWVyZmRfY3JlYXRlKQorICNpZiBkZWZpbmVkKF9feDg2XzY0X18pCisgI2RlZmluZSBfX05SX3RpbWVyZmRfY3JlYXRlICAyODMKKyAjZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQorQEAgLTY3LDggKzcxLDEwIEBACisgI2Vycm9yIENhbm5vdCBkZXRlY3QgeW91ciBhcmNoaXRlY3R1cmUhCisgI2VuZGlmCisgI2VuZGlmCisrI2VuZGlmCisgCistI2lmbmRlZiBfX05SX3RpbWVyZmRfc2V0dGltZQorKyNpZiAhZGVmaW5lZChIQVZFX1NZU19USU1FUkZEX0gpCisrI2lmICFkZWZpbmVkKF9fTlJfdGltZXJmZF9zZXR0aW1lKQorICNpZiBkZWZpbmVkKF9feDg2XzY0X18pCisgI2RlZmluZSBfX05SX3RpbWVyZmRfc2V0dGltZSAyODYKKyAjZGVmaW5lIF9fTlJfdGltZXJmZF9nZXR0aW1lIDI4NworQEAgLTg1LDcgKzkxLDcgQEAKKyAjZXJyb3IgQ2Fubm90IGRldGVjdCB5b3VyIGFyY2hpdGVjdHVyZSEKKyAjZW5kaWYKKyAjZW5kaWYKKy0KKysjZW5kaWYKKyAKKyAKKyAvKiBEZWZpbml0aW9ucyBmcm9tIGluY2x1ZGUvbGludXgvdGltZXJmZC5oICovCitAQCAtMTI3LDYgKzEzMyw3IEBAIHZvaWQgc2V0X3RpbWVzcGVjKHN0cnVjdCB0aW1lc3BlYyAqdG1yLAorICAgdG1yLT50dl9uc2VjID0gKGxvbmcpICgxMDAwVUxMICogKHVzdGltZSAlIDEwMDAwMDBVTEwpKTsKKyB9CisgCisrI2lmICFkZWZpbmVkKEhBVkVfU1lTX1RJTUVSRkRfSCkKKyBpbnQgdGltZXJmZF9jcmVhdGUoaW50IGNsb2NraWQsIGludCBmbGFncykKKyB7CisgICByZXR1cm4gc3lzY2FsbChfX05SX3RpbWVyZmRfY3JlYXRlLCBjbG9ja2lkLCBmbGFncyk7CitAQCAtMTQyLDYgKzE0OSw3IEBAIGludCB0aW1lcmZkX2dldHRpbWUoaW50IHVmYywgc3RydWN0IGl0aW0KKyB7CisgICByZXR1cm4gc3lzY2FsbChfX05SX3RpbWVyZmRfZ2V0dGltZSwgdWZjLCBvdG1yKTsKKyB9CisrI2VuZGlmCisgCisgbG9uZyB3YWl0dG1yKGludCB0ZmQsIGludCB0aW1lbykKKyB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLW5vbmUtdGVzdHMtZmRsZWFrX2Ntc2cuc3RkZXJyLmV4cC1hZGp1c3QtdG1wLXBhdGhzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1ub25lLXRlc3RzLWZkbGVha19jbXNnLnN0ZGVyci5leHAtYWRqdXN0LXRtcC1wYXRocy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjQxOTk4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1ub25lLXRlc3RzLWZkbGVha19jbXNnLnN0ZGVyci5leHAtYWRqdXN0LXRtcC1wYXRocy5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIGY0MDUyOTdkMzM4MmNkOTgzOTFkMDJmMzk3ZTIzODdkYTFmNDI4NzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjQgSmFuIDIwMjAgMTc6NTU6MzkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gbm9uZS90ZXN0cy9mZGxlYWtfY21zZy5zdGRlcnIuZXhwOiBhZGp1c3QgL3RtcCBwYXRocworCitJbiBvZS1jb3JlLCAvdG1wIGlzIGxpbmtlZCB0byAvdmFyL3ZvbGF0aWxlL3RtcCBhbmQKK3ZhbGdyaW5kIG91dHB1dCBjaGFuZ2VzIGFjY29yZGluZ2x5CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgbm9uZS90ZXN0cy9mZGxlYWtfY21zZy5zdGRlcnIuZXhwIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL25vbmUvdGVzdHMvZmRsZWFrX2Ntc2cuc3RkZXJyLmV4cCBiL25vbmUvdGVzdHMvZmRsZWFrX2Ntc2cuc3RkZXJyLmV4cAoraW5kZXggNmU1YTc5N2I5Li4wZWRlMWFiMTggMTAwNjQ0CistLS0gYS9ub25lL3Rlc3RzL2ZkbGVha19jbXNnLnN0ZGVyci5leHAKKysrKyBiL25vbmUvdGVzdHMvZmRsZWFrX2Ntc2cuc3RkZXJyLmV4cAorQEAgLTI1LDEwICsyNSwxMCBAQCBPcGVuIGZpbGUgZGVzY3JpcHRvciAuLi46IC9kZXYvbnVsbAorIAorIAorIEZJTEUgREVTQ1JJUFRPUlM6IDYgb3BlbiBhdCBleGl0LgorLU9wZW4gZmlsZSBkZXNjcmlwdG9yIC4uLjogL3RtcC9kYXRhMgorK09wZW4gZmlsZSBkZXNjcmlwdG9yIC4uLjogLi4uCisgICAgLi4uCisgCistT3BlbiBmaWxlIGRlc2NyaXB0b3IgLi4uOiAvdG1wL2RhdGExCisrT3BlbiBmaWxlIGRlc2NyaXB0b3IgLi4uOiAuLi4KKyAgICAuLi4KKyAKKyBPcGVuIEFGX1VOSVggc29ja2V0IC4uLjogPHVua25vd24+CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLXRlc3RzLU1ha2UtcHRocmVhZF9kZXRhdGNoLWNhbGwtcG9ydGFibGUtYWNyb3NzLXBsYXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLXRlc3RzLU1ha2UtcHRocmVhZF9kZXRhdGNoLWNhbGwtcG9ydGFibGUtYWNyb3NzLXBsYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQwN2Q4MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtdGVzdHMtTWFrZS1wdGhyZWFkX2RldGF0Y2gtY2FsbC1wb3J0YWJsZS1hY3Jvc3MtcGxhdC5wYXRjaApAQCAtMCwwICsxLDg3IEBACitGcm9tIDkyZmNmNzVkNmQzOTAzZTQ1NDkyYjA0MWJmNGFkMDc3ODdkMmU1OGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyNyBKYW4gMjAyMCAxOTo1MDowNCAtMDgwMAorU3ViamVjdDogW1BBVENIXSBkcmQvdGVzdHMvcHRoX2RldGFjaGVkMzogTWFrZSBwdGhyZWFkX2RldGFjaCgpIGNhbGwgcG9ydGFibGUKKyBhY3Jvc3MgcGxhdGZvcm1zCisKK3B0aHJlYWRfdCBpcyBvcGFxdWUgdHlwZSB0aGVyZWZvcmUgd2UgY2FuIG5vdCBhcHBseSBzaW1wbGUgYXJpdGhtZXRpYyB0bwordmFyaWFibGVzIG9mIHB0aHJlYWRfdCB0eXBlIHRoaXMgdGVzdCBuZWVkcyB0byBwYXNzIGEgaW52YWxpZCBwdGhyZWFkX3QKK2hhbmRsZSwgdHlwY2FzdGluZyB0byB1aW50cHRyX3Qgd29ya3MgdG9vIGFuZCBpcyBwb3J0YWJsZSBhY3Jvc3MgZ2xpYmMgYW5kCittdXNsCisKK0ZpeGVzCit8IHB0aF9kZXRhY2hlZDMuYzoyNDoyNTogZXJyb3I6IGludmFsaWQgdXNlIG9mIHVuZGVmaW5lZCB0eXBlICdzdHJ1Y3QgX19wdGhyZWFkJworfCAgICAyNCB8ICAgcHRocmVhZF9kZXRhY2godGhyZWFkICsgOCk7Cit8ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgXgorCitbIGJ2YW5hc3NjaGU6IHJlZm9ybWF0dGVkIHBhdGNoIGRlc2NyaXB0aW9uIGFuZCBmaXhlZCB1cCBsaW5lIG51bWJlcnMgXQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD12YWxncmluZC5naXQ7YT1jb21taXQ7aD05MmZjZjc1ZDZkMzkwM2U0NTQ5MmIwNDFiZjRhZDA3Nzg3ZDJlNThhXQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGRyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLmMgICAgICAgICAgIHwgMyArKy0KKyBkcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5zdGRlcnIuZXhwMSB8IDQgKystLQorIGRyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLnN0ZGVyci5leHAyIHwgNCArKy0tCisgMyBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5jIGIvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuYworaW5kZXggYzAyZWVmMS4uZWZlYjE1YiAxMDA2NDQKKy0tLSBhL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLmMKKysrKyBiL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLmMKK0BAIC00LDYgKzQsNyBAQAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxwdGhyZWFkLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHN0ZGludC5oPgorIAorIHN0YXRpYyB2b2lkKiB0aHJlYWRfZnVuYyh2b2lkKiBhcmcpCisgeworQEAgLTIxLDcgKzIyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQorICAgcHRocmVhZF9kZXRhY2godGhyZWFkKTsKKyAKKyAgIC8qIEludm9rZSBwdGhyZWFkX2RldGFjaCgpIHdpdGggYW4gaW52YWxpZCB0aHJlYWQgSUQuICovCistICBwdGhyZWFkX2RldGFjaCh0aHJlYWQgKyA4KTsKKysgIHB0aHJlYWRfZGV0YWNoKChwdGhyZWFkX3QpKCh1aW50cHRyX3QpdGhyZWFkICsgOCkpOworIAorICAgZnByaW50ZihzdGRlcnIsICJGaW5pc2hlZC5cbiIpOworIAorZGlmZiAtLWdpdCBhL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLnN0ZGVyci5leHAxIGIvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuc3RkZXJyLmV4cDEKK2luZGV4IDU4NDEyZWMuLjhkZDU4YmEgMTAwNjQ0CistLS0gYS9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5zdGRlcnIuZXhwMQorKysrIGIvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuc3RkZXJyLmV4cDEKK0BAIC0xLDExICsxLDExIEBACisgCisgcHRocmVhZF9kZXRhY2goKTogaW52YWxpZCB0aHJlYWQgSUQgMHguLi4uLi4uLgorICAgIGF0IDB4Li4uLi4uLi46IHB0aHJlYWRfZGV0YWNoIChkcmRfcHRocmVhZF9pbnRlcmNlcHRzLmM6PykKKy0gICBieSAweC4uLi4uLi4uOiBtYWluIChwdGhfZGV0YWNoZWQzLmM6MjEpCisrICAgYnkgMHguLi4uLi4uLjogbWFpbiAocHRoX2RldGFjaGVkMy5jOjIyKQorIAorIHB0aHJlYWRfZGV0YWNoKCk6IGludmFsaWQgdGhyZWFkIElEIDB4Li4uLi4uLi4KKyAgICBhdCAweC4uLi4uLi4uOiBwdGhyZWFkX2RldGFjaCAoZHJkX3B0aHJlYWRfaW50ZXJjZXB0cy5jOj8pCistICAgYnkgMHguLi4uLi4uLjogbWFpbiAocHRoX2RldGFjaGVkMy5jOjI0KQorKyAgIGJ5IDB4Li4uLi4uLi46IG1haW4gKHB0aF9kZXRhY2hlZDMuYzoyNSkKKyAKKyBGaW5pc2hlZC4KKyAKK2RpZmYgLS1naXQgYS9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5zdGRlcnIuZXhwMiBiL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLnN0ZGVyci5leHAyCitpbmRleCBiZGM1Y2Y4Li5lODJkZWUxIDEwMDY0NAorLS0tIGEvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuc3RkZXJyLmV4cDIKKysrKyBiL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLnN0ZGVyci5leHAyCitAQCAtMiwxMiArMiwxMiBAQAorIHB0aHJlYWRfZGV0YWNoKCk6IGludmFsaWQgdGhyZWFkIElEIDB4Li4uLi4uLi4KKyAgICBhdCAweC4uLi4uLi4uOiB2Z0RyZF9zZXRfam9pbmFibGUgKGRyZF9wdGhyZWFkX2ludGVyY2VwdHMuYzo/KQorICAgIGJ5IDB4Li4uLi4uLi46IHB0aHJlYWRfZGV0YWNoIChkcmRfcHRocmVhZF9pbnRlcmNlcHRzLmM6PykKKy0gICBieSAweC4uLi4uLi4uOiBtYWluIChwdGhfZGV0YWNoZWQzLmM6MjEpCisrICAgYnkgMHguLi4uLi4uLjogbWFpbiAocHRoX2RldGFjaGVkMy5jOjIyKQorIAorIHB0aHJlYWRfZGV0YWNoKCk6IGludmFsaWQgdGhyZWFkIElEIDB4Li4uLi4uLi4KKyAgICBhdCAweC4uLi4uLi4uOiB2Z0RyZF9zZXRfam9pbmFibGUgKGRyZF9wdGhyZWFkX2ludGVyY2VwdHMuYzo/KQorICAgIGJ5IDB4Li4uLi4uLi46IHB0aHJlYWRfZGV0YWNoIChkcmRfcHRocmVhZF9pbnRlcmNlcHRzLmM6PykKKy0gICBieSAweC4uLi4uLi4uOiBtYWluIChwdGhfZGV0YWNoZWQzLmM6MjQpCisrICAgYnkgMHguLi4uLi4uLjogbWFpbiAocHRoX2RldGFjaGVkMy5jOjI1KQorIAorIEZpbmlzaGVkLgorIAorLS0gCisyLjkuMworCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLXZhbGdyaW5kLWFkanVzdC1zdGRfbGlzdC1leHBlY3RlZC1vdXRwdXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLXZhbGdyaW5kLWFkanVzdC1zdGRfbGlzdC1leHBlY3RlZC1vdXRwdXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4Mjk3MmUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMi12YWxncmluZC1hZGp1c3Qtc3RkX2xpc3QtZXhwZWN0ZWQtb3V0cHV0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA2ZTFlOTI2NWIwM2NmNTFkMDljMDI4ZDY1N2ZlODI2ZDcxNTZhNzgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUmFuZHkgTWFjTGVvZCA8UmFuZHkuTWFjTGVvZEB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAxMyBNYXkgMjAxOSAxNzoyNjoyNiAtMDQwMAotU3ViamVjdDogW1BBVENIIDIvMl0gdmFsZ3JpbmQ6IGFkanVzdCBzdGRfbGlzdCBleHBlY3RlZCBvdXRwdXQKLQotVGhlIHJ1bi1wdGVzdCBzY3JpcHQgdXNlcyBhIGN1c3RvbSAtLXlvY3RvLXB0ZXN0IG9wdGlvbgotdG8gY2hhbmdlIHRoZSBzdW1tYXJ5IHN0YXRpc3RpY3MgdGhhdCB2YWxncmluZCBpc3N1ZXMKLXRvIGEgZm9ybWF0IHRoYXQgbWF0Y2hlcyB3aGF0IHB0ZXN0LXJ1bm5lciBleHBlY3RzLgotCi1Pbmx5IHRoaXMgc3RkX2xpc3QgdGVzdCB3aGljaCBjaGVja3MgdGhhdCBzdHJjcHkoKSB3b3JrcwotcHJvcGVybHkgb24gVWJ1bnR1LTEyLjA0IGFuZCBsYXRlciBpcyBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZS4KLUl0J3Mgbm9ybWFsIG91dHB1dCB3aGVuIGNhbGxlZCB3aXRoIC0teW9jdG8tcHRlc3QgaXMgYSBibGFuawotbGluZSBzbyBhZGp1c3QgdGhlIGV4cGVjdGVkIG91dHB1dC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtZb2N0byBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogUmFuZHkgTWFjTGVvZCA8UmFuZHkuTWFjTGVvZEB3aW5kcml2ZXIuY29tPgotLS0tCi0gZHJkL3Rlc3RzL3N0ZF9saXN0LnN0ZGVyci5leHAgfCAyIC0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9kcmQvdGVzdHMvc3RkX2xpc3Quc3RkZXJyLmV4cCBiL2RyZC90ZXN0cy9zdGRfbGlzdC5zdGRlcnIuZXhwCi1pbmRleCBkMTg3ODZmODAuLjhiMTM3ODkxNyAxMDA2NDQKLS0tLSBhL2RyZC90ZXN0cy9zdGRfbGlzdC5zdGRlcnIuZXhwCi0rKysgYi9kcmQvdGVzdHMvc3RkX2xpc3Quc3RkZXJyLmV4cAotQEAgLTEsMyArMSBAQAotIAotLQotLUVSUk9SIFNVTU1BUlk6IDAgZXJyb3JzIGZyb20gMCBjb250ZXh0cyAoc3VwcHJlc3NlZDogMCBmcm9tIDApCi0tLSAKLTIuMTcuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDA2LXB0aF9kZXRhY2hlZDMuYy1EZXJlZmVyZW5jZS1wdGhyZWFkX3QtYmVmb3JlLWFkZGluZy0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDA2LXB0aF9kZXRhY2hlZDMuYy1EZXJlZmVyZW5jZS1wdGhyZWFkX3QtYmVmb3JlLWFkZGluZy0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1ODg2YzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNi1wdGhfZGV0YWNoZWQzLmMtRGVyZWZlcmVuY2UtcHRocmVhZF90LWJlZm9yZS1hZGRpbmctLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSBhNjU0N2ZjMTdjMTIwZGJkOTViODUyZjUwYjBjNGJkZWU0ZmVkYjlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMTAgSnVuIDIwMTcgMDE6MjA6MzIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCA2LzZdIHB0aF9kZXRhY2hlZDMuYzogRGVyZWZlcmVuY2UgcHRocmVhZF90IGJlZm9yZSBhZGRpbmcKLSBvZmZzZXQgdG8gaXQKLQotRml4ZXMKLWVycm9yOiBpbnZhbGlkIHVzZSBvZiB1bmRlZmluZWQgdHlwZSAnc3RydWN0IF9fcHRocmVhZCcKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBkcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuYyBiL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLmMKLWluZGV4IGMwMmVlZjEuLjM1ZDQzYTYgMTAwNjQ0Ci0tLS0gYS9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5jCi0rKysgYi9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5jCi1AQCAtMjEsNyArMjEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi0gICBwdGhyZWFkX2RldGFjaCh0aHJlYWQpOwotIAotICAgLyogSW52b2tlIHB0aHJlYWRfZGV0YWNoKCkgd2l0aCBhbiBpbnZhbGlkIHRocmVhZCBJRC4gKi8KLS0gIHB0aHJlYWRfZGV0YWNoKHRocmVhZCArIDgpOwotKyAgcHRocmVhZF9kZXRhY2goKHB0aHJlYWRfdCopKCZ0aHJlYWQgKyA4KSk7Ci0gCi0gICBmcHJpbnRmKHN0ZGVyciwgIkZpbmlzaGVkLlxuIik7Ci0gCi0tLSAKLTIuMTMuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9yZW1vdmUtZm9yLWFhcmNoNjQgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9yZW1vdmUtZm9yLWFhcmNoNjQKaW5kZXggYWNmNGZkMS4uYTNhMGM2ZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvcmVtb3ZlLWZvci1hYXJjaDY0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL3JlbW92ZS1mb3ItYWFyY2g2NApAQCAtMSwzICsxLDQgQEAKK2dkYnNlcnZlcl90ZXN0cy9oZ3RscwogY2FjaGVncmluZC90ZXN0cy9hbm4xCiBjYWxsZ3JpbmQvdGVzdHMvc2ltd29yazEKIGNhbGxncmluZC90ZXN0cy9zaW13b3JrMgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvczM5MHhfdmVjX29wX3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9zMzkweF92ZWNfb3BfdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWE2NzFkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvczM5MHhfdmVjX29wX3QucGF0Y2gKQEAgLTAsMCArMSwxOSBAQAorczM5MHhfdmVjX29wX3QgaXMgbm90IG5lZWRlZCBhbnl3aGVyZSwgb25seSBlbGVtZW50cyBvZiBlbnVtIGFyZSBhY2Nlc3NlZAorcmVtb3ZpbmcgaXQgZW5zdXJlcyB0aGF0IHZhbGdyaW5kIGNhbiBiZSBidWlsdCB3aXRoIC1mbm8tY29tbW9uIG9wdGlvbgorCitGaXhlcworbGQ6IC4uLy4uL1ZFWC9saWJ2ZXgtYW1kNjQtbGludXguYShsaWJ2ZXhfYW1kNjRfbGludXhfYS1ndWVzdF9zMzkwX2hlbHBlcnMubyk6L3Vzci9zcmMvZGVidWcvdmFsZ3JpbmQvMy4xNS4wLXIwL2J1aWxkL1ZFWC8uLi8uLi92YWxncmluZC0zLjE1LjAvVkVYL3ByaXYvZ3Vlc3RfczM5MF9kZWZzLmg6Mjg5OiBtdWx0aXBsZSBkZWZpbml0aW9uIG9mIGBzMzkweF92ZWNfb3BfdCc7IC4uLy4uL1ZFWC9saWJ2ZXhtdWx0aWFyY2gtYW1kNjQtbGludXguYShsaWJ2ZXhtdWx0aWFyY2hfYW1kNjRfbGludXhfYS1tdWx0aWFyY2hfbWFpbl9tYWluLm8pOi91c3Ivc3JjL2RlYnVnL3ZhbGdyaW5kLzMuMTUuMC1yMC9idWlsZC9WRVgvLi4vLi4vdmFsZ3JpbmQtMy4xNS4wL1ZFWC9wcml2L2d1ZXN0X3MzOTBfZGVmcy5oOjI4OTogZmlyc3QgZGVmaW5lZCBoZXJlCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLSBhL1ZFWC9wcml2L2d1ZXN0X3MzOTBfZGVmcy5oCisrKysgYi9WRVgvcHJpdi9ndWVzdF9zMzkwX2RlZnMuaAorQEAgLTI4Niw3ICsyODYsNyBAQCBlbnVtIHsKKyAgICBTMzkwX1ZFQ19PUF9WRkNIRSA9IDE4LAorICAgIFMzOTBfVkVDX09QX1ZGVENJID0gMTksCisgICAgUzM5MF9WRUNfT1BfTEFTVCA9IDIwIC8vIHN1cHBvc2VkIHRvIGJlIHRoZSBsYXN0IGVsZW1lbnQgaW4gZW51bQorLX0gczM5MHhfdmVjX29wX3Q7CisrfTsKKyAKKyAvKiBBcmd1bWVudHMgb2YgczM5MHhfZGlydHloZWxwZXJfdmVjX29wKC4uLikgd2hpY2ggYXJlIHBhY2tlZCBpbnRvIG9uZQorICAgIFVMb25nIHZhcmlhYmxlLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmRfMy4xNS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmRfMy4xNS4wLmJiCmluZGV4IDYzZjk3MjkuLjc5NTQ0MzcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTUuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZF8zLjE1LjAuYmIKQEAgLTI5LDcgKzI5LDYgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDMtY29ycmVjdC1pbmNsdWRlLWRpcmVjdGl2ZS1wYXRoLWZvci1jb25maWcuaC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA0LXB0aF9hdGZvcmsxLmMtRGVmaW5lLWVycm9yLUFQSS1mb3ItbXVzbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA1LXRjMjBfdmVyaWZ5d3JhcC5jLUZha2UtX19HTElCQ19QUkVSRVEtd2l0aC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtcHRoX2RldGFjaGVkMy5jLURlcmVmZXJlbmNlLXB0aHJlYWRfdC1iZWZvcmUtYWRkaW5nLS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lbWNoZWNrLWFybTY0LURlZmluZS1fX1RIUk9XLWlmLW5vdC1hbHJlYWR5LWRlZmluZWQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1tZW1jaGVjay14ODYtRGVmaW5lLV9fVEhST1ctaWYtbm90LWRlZmluZWQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMy10ZXN0cy1zZWdfb3ZlcnJpZGUtUmVwbGFjZS1fX21vZGlmeV9sZHQtd2l0aC1zeXNjYWxsLnBhdGNoIFwKQEAgLTM4LDggKzM3LDExIEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtbG9jYWwtZnVuY3Rpb25zLXN0YXRpYy10by1hdm9pZC1hc3NlbWJsZXItZXJyb3IucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXR1cm4tYS12YWxpZC1leGl0X2NvZGUtZnJvbS12Z19yZWd0ZXN0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdmFsZ3JpbmQtZmlsdGVyX3htbF9mcmFtZXMtZG8tbm90LWZpbHRlci11c3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi12YWxncmluZC1hZGp1c3Qtc3RkX2xpc3QtZXhwZWN0ZWQtb3V0cHV0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtYWRqdXN0LXBhdGgtZmlsdGVyLWZvci0yLW1lbWNoZWNrLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3MzOTB4X3ZlY19vcF90LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbm9uZS10ZXN0cy1mZGxlYWtfY21zZy5zdGRlcnIuZXhwLWFkanVzdC10bXAtcGF0aHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1NYWtlLXB0aHJlYWRfZGV0YXRjaC1jYWxsLXBvcnRhYmxlLWFjcm9zcy1wbGF0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVtY2hlY2stdGVzdHMtRml4LXRpbWVyZmQtc3lzY2FsbC10ZXN0LnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjQ2ZTVmYmRjYmMzNTAyYTU5NzZhMzE3YTA4NjBhOTc1IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQxN2M3YTlkYThmNjBkZDA1Njk4YjNhN2JjNjAwMmU0ZWY5OTZmMTRjMTNmMGZmOTY2NzlhMTY4NzNlNzhhYjEiCkBAIC02Myw3ICs2NSw4IEBACiAjIERpc2FibGUgZm9yIHBvd2VycGM2NCB3aXRoIG11c2wKIENPTVBBVElCTEVfSE9TVF9saWJjLW11c2xfcG93ZXJwYzY0ID0gJ251bGwnCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IG11bHRpbGliX2hlYWRlcgorIyBicm9rZW5zZWlwIGlzIHVuZm9ydHVuYXRlbHkgcmVxdWlyZWQgYnkgcHRlc3RzIHRvIHBhc3MKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdCBtdWx0aWxpYl9oZWFkZXIKIAogRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRscyAtLXdpdGhvdXQtbXBpY2MiCiBFWFRSQV9PRUNPTkYgKz0gIiR7QFsnLS1lbmFibGUtb25seTMyYml0JywnLS1lbmFibGUtb25seTY0Yml0J11bZC5nZXRWYXIoJ1NJVEVJTkZPX0JJVFMnKSAhPSAnMzInXX0iCkBAIC0xMTUsNyArMTE4LDcgQEAKICAgIGdkYiBsaWJnb21wIFwKICAgIHBlcmwgXAogICAgcGVybC1tb2R1bGUtZ2V0b3B0LWxvbmcgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBwZXJsLW1vZHVsZS1maWxlLWdsb2IgXAotICAgcHJvY3BzIHNlZCAke1BOfS1kYmciCisgICBwcm9jcHMgc2VkICR7UE59LWRiZyAke1BOfS1zcmMiCiBSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtdXRpbHMiCiAKICMgT25lIG9mIHRoZSB0ZXN0cyBjb250YWlucyBhIGJvZ3VzIGludGVycHJldGVyIHBhdGggb24gcHVycG9zZS4KQEAgLTIwMyw0ICsyMDYsMjQgQEAKICAgICAjIGhhbmRsZSBtdWx0aWxpYgogICAgIHNlZCAtaSBzOkBsaWJkaXJAOiR7bGliZGlyfTpnICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAogICAgIHNlZCAtaSBzOkBiaW5kaXJAOiR7YmluZGlyfTpnICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAorCisgICAgIyBUaGlzIHRlc3QgZmFpbHMgb24gdGhlIGhvc3QgYXMgd2VsbCwgdXNpbmcgYm90aCAzLjE1IGFuZCBnaXQgbWFzdGVyIChhcyBvZiBKYW4gMjQgMjAyMCkKKyAgICAjIGh0dHBzOi8vYnVncy5rZGUub3JnL3Nob3dfYnVnLmNnaT9pZD00MDI4MzMKKyAgICBybSAke0R9JHtQVEVTVF9QQVRIfS9tZW1jaGVjay90ZXN0cy9vdmVybGFwLnZndGVzdAorCisgICAgIyBBcyB0aGUgYmluYXJ5IGlzbid0IHN0cmlwcGVkIG9yIGRlYnVnLXNwbGl0dGVkLCB0aGUgc291cmNlIGZpbGUgaXNuJ3QgZmV0Y2hlZAorICAgICMgdmlhIGR3YXJmc3JjZmlsZXMgZWl0aGVyLCBzbyBpdCBuZWVkcyB0byBiZSBpbnN0YWxsZWQgbWFudWFsbHkuCisgICAgbWtkaXIgLXAgJHtEfS91c3Ivc3JjL2RlYnVnLyR7UE59LyR7RVhURU5EUEV9JHtQVn0tJHtQUn0vJHtCUH0vbm9uZS90ZXN0cy8KKyAgICBpbnN0YWxsICR7U30vbm9uZS90ZXN0cy90bHMuYyAke0R9L3Vzci9zcmMvZGVidWcvJHtQTn0vJHtFWFRFTkRQRX0ke1BWfS0ke1BSfS8ke0JQfS9ub25lL3Rlc3RzLwogfQorCisjIGF2b2lkIHN0cmlwcGluZyBzb21lIGdlbmVyYXRlZCBiaW5hcmllcyBvdGhlcndpc2Ugc29tZSBvZiB0aGUgdGVzdHMgd2lsbCBmYWlsCisjIHJ1bi1zdHJpcC1yZWxvYy5zaCwgcnVuLXN0cmlwLXN0cm1lcmdlLnNoIGFuZCBzbyBvbiB3aWxsIGZhaWwKK0lOSElCSVRfUEFDS0FHRV9TVFJJUF9GSUxFUyA9ICJcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vbm9uZS90ZXN0cy90bHMgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L25vbmUvdGVzdHMvdGxzLnNvIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9ub25lL3Rlc3RzL3RsczIuc28gXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L2hlbGdyaW5kL3Rlc3RzL3RjMDlfYmFkX3VubG9jayBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vbWVtY2hlY2svdGVzdHMvbWFudWVsMSBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMgXAorIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMveG1sdG8veG1sdG9fMC4wLjI4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMveG1sdG8veG1sdG9fMC4wLjI4LmJiCmluZGV4IGRmNzk4ZGYuLjdkMjdjNDMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3htbHRvL3htbHRvXzAuMC4yOC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy94bWx0by94bWx0b18wLjAuMjguYmIKQEAgLTEzLDYgKzEzLDggQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMKIAorQ0xFQU5CUk9LRU4gPSAiMSIKKwogREVQRU5EUyA9ICJsaWJ4bWwyLW5hdGl2ZSIKIAogUkRFUEVORFNfJHtQTn0gPSAiZG9jYm9vay14bWwtZHRkNCBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMTkxMDE4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDE5MTAxOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY5MjI3NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMTkxMDE4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJBQ1BJQ0EgdG9vbHMgZm9yIHRoZSBkZXZlbG9wbWVudCBhbmQgZGVidWcgb2YgQUNQSSB0YWJsZXMiCi1ERVNDUklQVElPTiA9ICJUaGUgQUNQSSBDb21wb25lbnQgQXJjaGl0ZWN0dXJlIChBQ1BJQ0EpIHByb2plY3QgcHJvdmlkZXMgYW4gXAotT1MtaW5kZXBlbmRlbnQgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBBZHZhbmNlZCBDb25maWd1cmF0aW9uIGFuZCBcCi1Qb3dlciBJbnRlcmZhY2UgU3BlY2lmaWNhdGlvbiAoQUNQSSkuIEFDUElDQSBjb2RlIGNvbnRhaW5zIHRob3NlIHBvcnRpb25zIG9mIFwKLUFDUEkgbWVhbnQgdG8gYmUgZGlyZWN0bHkgaW50ZWdyYXRlZCBpbnRvIHRoZSBob3N0IE9TIGFzIGEga2VybmVsLXJlc2lkZW50IFwKLXN1YnN5c3RlbSwgYW5kIGEgc21hbGwgc2V0IG9mIHRvb2xzIHRvIGFzc2lzdCBpbiBkZXZlbG9waW5nIGFuZCBkZWJ1Z2dpbmcgXAotQUNQSSB0YWJsZXMuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFjcGljYS5vcmcvIgotU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgotCi1MSUNFTlNFID0gIkludGVsIHwgQlNEIHwgR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zb3VyY2UvY29tcGlsZXIvYXNsY29tcGlsZS5jO2JlZ2lubGluZT03O2VuZGxpbmU9MTUwO21kNT1iNTY5MGQ5ZWY4ZDU0YjJiMWUxY2M5OGFhZDY0Y2Q4NyIKLQotQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NHxhcm18YWFyY2g2NCkuKi1saW51eCIKLQotREVQRU5EUyA9ICJiaXNvbiBmbGV4IGJpc29uLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwczovL2FjcGljYS5vcmcvc2l0ZXMvYWNwaWNhL2ZpbGVzL2FjcGljYS11bml4LSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1MzlhMDI1MmJjYjQyYzM4M2NlZWFlYjEyYWU5YTYwZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMjlkYjQwMTQ2MDBlNGI3NzFiMTFhODQyNzZkMmQ3NmViNDBmYjI2ZWFiYzg1ODY0ODUyZWYxZjk2MmJlOTVmIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vYWNwaWNhLm9yZy9kb3dubG9hZHMiCi0KLVMgPSAiJHtXT1JLRElSfS9hY3BpY2EtdW5peC0ke1BWfSIKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gImFjcGl4dHJhY3QgYWNwaWR1bXAiCi0KLUVYVFJBX09FTUFLRSA9ICJDQz0nJHtDQ30nIFwKLSAgICAgICAgICAgICAgICBPUFRfQ0ZMQUdTPS1XYWxsIFwKLSAgICAgICAgICAgICAgICBERVNURElSPSR7RH0gXAotICAgICAgICAgICAgICAgIFBSRUZJWD0ke3ByZWZpeH0gXAotICAgICAgICAgICAgICAgIElOU1RBTExESVI9JHtiaW5kaXJ9IFwKLSAgICAgICAgICAgICAgICBJTlNUQUxMRkxBR1M9IFwKLSAgICAgICAgICAgICAgICAiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsCi19Ci0KLSMgaWFzbCouYmIgaXMgYSBzdWJzZXQgb2YgdGhpcyByZWNpcGUsIHNvIFJSRVBMQUNFIGl0Ci1QUk9WSURFUyA9ICJpYXNsIgotUlBST1ZJREVTXyR7UE59ICs9ICJpYXNsIgotUlJFUExBQ0VTXyR7UE59ICs9ICJpYXNsIgotUkNPTkZMSUNUU18ke1BOfSArPSAiaWFzbCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMjAwMjE0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDIwMDIxNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmE5ZmVjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDIwMDIxNC5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIkFDUElDQSB0b29scyBmb3IgdGhlIGRldmVsb3BtZW50IGFuZCBkZWJ1ZyBvZiBBQ1BJIHRhYmxlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBBQ1BJIENvbXBvbmVudCBBcmNoaXRlY3R1cmUgKEFDUElDQSkgcHJvamVjdCBwcm92aWRlcyBhbiBcCitPUy1pbmRlcGVuZGVudCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgdGhlIEFkdmFuY2VkIENvbmZpZ3VyYXRpb24gYW5kIFwKK1Bvd2VyIEludGVyZmFjZSBTcGVjaWZpY2F0aW9uIChBQ1BJKS4gQUNQSUNBIGNvZGUgY29udGFpbnMgdGhvc2UgcG9ydGlvbnMgb2YgXAorQUNQSSBtZWFudCB0byBiZSBkaXJlY3RseSBpbnRlZ3JhdGVkIGludG8gdGhlIGhvc3QgT1MgYXMgYSBrZXJuZWwtcmVzaWRlbnQgXAorc3Vic3lzdGVtLCBhbmQgYSBzbWFsbCBzZXQgb2YgdG9vbHMgdG8gYXNzaXN0IGluIGRldmVsb3BpbmcgYW5kIGRlYnVnZ2luZyBcCitBQ1BJIHRhYmxlcy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYWNwaWNhLm9yZy8iCitTRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCisKK0xJQ0VOU0UgPSAiSW50ZWwgfCBCU0QgfCBHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NvdXJjZS9jb21waWxlci9hc2xjb21waWxlLmM7YmVnaW5saW5lPTc7ZW5kbGluZT0xNTA7bWQ1PTZhZGJjYjgxZTllZTZhZTUwYzU2OWI5NGZlMTJmN2M1IgorCitDT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0fGFybXxhYXJjaDY0KS4qLWxpbnV4IgorCitERVBFTkRTID0gIm00LW5hdGl2ZSBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9hY3BpY2Eub3JnL3NpdGVzL2FjcGljYS9maWxlcy9hY3BpY2EtdW5peC0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMzUwNWJhNjE3MGI3N2RiMTM5OWVhZTBlMmE5NTkxMTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTc3YWI5Zjg1NTdjYTEwNGY2ZThmNDllZmFhOGVlYWQyOWY3OGNhMTFjYWRmYzg5ODkwMTI0NjllY2MwNzM4ZSIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2FjcGljYS5vcmcvZG93bmxvYWRzIgorCitTID0gIiR7V09SS0RJUn0vYWNwaWNhLXVuaXgtJHtQVn0iCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJhY3BpeHRyYWN0IGFjcGlkdW1wIgorCitFWFRSQV9PRU1BS0UgPSAiQ0M9JyR7Q0N9JyBcCisgICAgICAgICAgICAgICAgT1BUX0NGTEFHUz0tV2FsbCBcCisgICAgICAgICAgICAgICAgREVTVERJUj0ke0R9IFwKKyAgICAgICAgICAgICAgICBQUkVGSVg9JHtwcmVmaXh9IFwKKyAgICAgICAgICAgICAgICBJTlNUQUxMRElSPSR7YmluZGlyfSBcCisgICAgICAgICAgICAgICAgSU5TVEFMTEZMQUdTPSBcCisgICAgICAgICAgICAgICAgIgorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbAorfQorCisjIGlhc2wqLmJiIGlzIGEgc3Vic2V0IG9mIHRoaXMgcmVjaXBlLCBzbyBSUkVQTEFDRSBpdAorUFJPVklERVMgPSAiaWFzbCIKK1JQUk9WSURFU18ke1BOfSArPSAiaWFzbCIKK1JSRVBMQUNFU18ke1BOfSArPSAiaWFzbCIKK1JDT05GTElDVFNfJHtQTn0gKz0gImlhc2wiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC5pbmMKaW5kZXggMDM5Yjg2OC4uMWViYjMzYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2guaW5jCkBAIC0yNSw3ICsyNSw2IEBACiBSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgogUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgY29yZXV0aWxzIHBlcmwgc2VkIHNoYWRvdyB1dGlsLWxpbnV4LXNldHByaXYiCiAKLURFUEVORFNfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIHZpcnR1YWwvbGliYy1sb2NhbGUiCiBSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgXAogCWdsaWJjLWdjb252LWJpZzVoa3NjcyBcCiAJZ2xpYmMtZ2NvbnYtaXNvODg1OS0xIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF81LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNS4wLmJiCmluZGV4IGVhZGM4MjIuLjhmZjllNmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF81LjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzUuMC5iYgpAQCAtMTIsNiArMTIsMTUgQEAKICAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtJHtQVn0tcGF0Y2hlcy9iYXNoNTAtMDA1O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwNSBcCiAgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLSR7UFZ9LXBhdGNoZXMvYmFzaDUwLTAwNjthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDYgXAogICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC0ke1BWfS1wYXRjaGVzL2Jhc2g1MC0wMDc7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDA3IFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtJHtQVn0tcGF0Y2hlcy9iYXNoNTAtMDA4O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwOCBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLSR7UFZ9LXBhdGNoZXMvYmFzaDUwLTAwOTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDkgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC0ke1BWfS1wYXRjaGVzL2Jhc2g1MC0wMTA7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDEwIFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtJHtQVn0tcGF0Y2hlcy9iYXNoNTAtMDExO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAxMSBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLSR7UFZ9LXBhdGNoZXMvYmFzaDUwLTAxMjthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMTIgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC0ke1BWfS1wYXRjaGVzL2Jhc2g1MC0wMTM7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDEzIFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtJHtQVn0tcGF0Y2hlcy9iYXNoNTAtMDE0O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAxNCBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLSR7UFZ9LXBhdGNoZXMvYmFzaDUwLTAxNTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMTUgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC0ke1BWfS1wYXRjaGVzL2Jhc2g1MC0wMTY7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDE2IFwKICAgICAgICAgICAgZmlsZTovL2V4ZWN1dGVfY21kLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL21rYnVpbHRpbnNfaGF2ZV9zdHJpbmdpemUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vYnVpbGQtdGVzdHMucGF0Y2ggXApAQCAtMzgsNiArNDcsMjQgQEAKIFNSQ19VUklbcGF0Y2gwMDYuc2hhMjU2c3VtXSA9ICJkNjg1MjlhNmZmMjAxYjZmZjU5MTUzMThhYjEyZmMxNmI4YTBlYmI3N2ZkYTMzMDgzMDNmY2MxZTEzMzk4NDIwIgogU1JDX1VSSVtwYXRjaDAwNy5tZDVzdW1dID0gIjQxMTU2MGQ4MWZkZTJkYzViMTdiODNjM2YzYjU4YzZmIgogU1JDX1VSSVtwYXRjaDAwNy5zaGEyNTZzdW1dID0gIjE3YjQxZTdlZTM2NzNkODg4N2RkMjU5OTI0MTdhMzk4Njc3NTMzYWI4ODI3OTM4YWE0MWZhZDcwZGYxOWFmOWIiCitTUkNfVVJJW3BhdGNoMDA4Lm1kNXN1bV0gPSAiZGQ3Y2Y3YTc4NGQxODM4ODIyY2FkOGQ0MTkzMTU5OTEiCitTUkNfVVJJW3BhdGNoMDA4LnNoYTI1NnN1bV0gPSAiZWVjNjQ1ODg2MjJhODJhNTAyOWIyNzc2ZTIxOGE3NWEzNjQwYmVmNDk1M2YwOWQ2ZWUxZjQxOTk2NzBhZDdlMyIKK1NSQ19VUklbcGF0Y2gwMDkubWQ1c3VtXSA9ICJjMWIzZTkzN2NkNmRjY2JiN2ZkNzcyZjMyODEyYTBkYSIKK1NSQ19VUklbcGF0Y2gwMDkuc2hhMjU2c3VtXSA9ICJlZDNjYTIxNzY3MzAzZmMzZGU5MzkzNGFhNTI0YzJlOTIwNzg3YzUwNmI2MDFjYzQwYTQ4OTdkNGIwOTRkOTAzIgorU1JDX1VSSVtwYXRjaDAxMC5tZDVzdW1dID0gIjE5YjQxZTczYjAzNjAyZDBlMjYxYzQ3MWI1M2U2NzBjIgorU1JDX1VSSVtwYXRjaDAxMC5zaGEyNTZzdW1dID0gImQ2ZmJjMzI1ZjBiNWRjNTRkZGJlOGVlNDMwMjBiY2VkOGJkNTg5ZGRmZmVhNTlkMTI4ZGIxNGIyZTUyYThhMTEiCitTUkNfVVJJW3BhdGNoMDExLm1kNXN1bV0gPSAiNDE0MzM5MzMwYTM2MzQxMzcwODFhOTdmMmM4NjE1YTgiCitTUkNfVVJJW3BhdGNoMDExLnNoYTI1NnN1bV0gPSAiMmM0ZGUzMzJiOTFlYWY3OTdhYmJiZDZjNzk3MDk2OTBiNWNiZDQ4YjEyZThkZmU3NDgwOTZkYmQ3YmY0NzRlYSIKK1NSQ19VUklbcGF0Y2gwMTIubWQ1c3VtXSA9ICIxODcwMjY4ZjYyYjkwNzIyMWIwNzhhZDEwOWUxZmE5NCIKK1NSQ19VUklbcGF0Y2gwMTIuc2hhMjU2c3VtXSA9ICIyOTQzZWUxOTY4ODAxODI5NmYyYTA0ZGJmZTMwYjcxMzhiODg5NzAwZWZhOGZmMWMwNTI0YWYyNzFlMGVlMjMzIgorU1JDX1VSSVtwYXRjaDAxMy5tZDVzdW1dID0gIjQwZDkyM2FmNGI5NTJiMDE5ODNlZDRjODg5YWUyNjUzIgorU1JDX1VSSVtwYXRjaDAxMy5zaGEyNTZzdW1dID0gImY1ZDcxNzhkOGRhMzA3OTllMDFiODNhMDgwMjAxOGQ5MTNkNmFhOTcyZGQyZGRhZDNiOTI3ZjNmM2ViNzA5OWEiCitTUkNfVVJJW3BhdGNoMDE0Lm1kNXN1bV0gPSAiNTc4NTdiMjIwNTNjODE2NzY3N2U1ZTVhYzVjNjY2OWIiCitTUkNfVVJJW3BhdGNoMDE0LnNoYTI1NnN1bV0gPSAiNWQ2ZWVlNjUxNGVlNmUyMmE4N2JiYThkMjJiZTBhODYyMWEwYWUxMTkyNDZmMWM1YTlhMzVkYjFmNzJhZjU4OSIKK1NSQ19VUklbcGF0Y2gwMTUubWQ1c3VtXSA9ICJjNGM2ZWEyM2QwOWE3NGVhYTkzODU0MzhlNDhmZGYwMiIKK1NSQ19VUklbcGF0Y2gwMTUuc2hhMjU2c3VtXSA9ICJhNTE3ZGYyZGRhOTNiMjZkNWNiZjAwZWZmZWZlYTkzZTNhNGNjZDY2NTJmMTUyZjQxMDkxNzA1NDRlYmZhMDVlIgorU1JDX1VSSVtwYXRjaDAxNi5tZDVzdW1dID0gImE2ODJlZDZmYTJjMmU3YTdjM2JhNmJkZWFkYTA3ZmI1IgorU1JDX1VSSVtwYXRjaDAxNi5zaGEyNTZzdW1dID0gImZmZDFkN2E1NGE5OWZhN2Y1YjE4MjVlNGY3ZTk1ZDhjODg3NmJjMmNhMTUxZjE1MGU3NTFkNDI5YzY1MGIwNmQiCiAKIERFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfYXJtdjQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0NDQVJHUycsICctbXRodW1iJywgJy1mb21pdC1mcmFtZS1wb2ludGVyJywgJycsIGQpfSIKIERFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfYXJtdjUgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0NDQVJHUycsICctbXRodW1iJywgJy1mb21pdC1mcmFtZS1wb2ludGVyJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J6aXAyL2J6aXAyXzEuMC44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjguYmIKaW5kZXggOGU5Yjc3OS4uZDU4ZjU1MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjguYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjguYmIKQEAgLTQsNyArNCw3IEBACiBMWjc3L0xaNzgtYmFzZWQgY29tcHJlc3NvcnMsIGFuZCBhcHByb2FjaGVzIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgUFBNIGZhbWlseSBvZiBzdGF0aXN0aWNhbCBjb21wcmVzc29ycy4iCiBIT01FUEFHRSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL2J6aXAyLyIKIFNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiYnppcDIiCitMSUNFTlNFID0gImJ6aXAyLTEuMC42IgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTtiZWdpbmxpbmU9NDtlbmRsaW5lPTM3O21kNT02MDBhZjQzYzUwZjFmY2I4MmUzMmYxOWIzMmRmNDY2NCIKIAogU1JDX1VSSSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL3B1Yi8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jaGtjb25maWcvY2hrY29uZmlnLWFsdGVybmF0aXZlcy1uYXRpdmVfMS4zLjU5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY2hrY29uZmlnL2Noa2NvbmZpZy1hbHRlcm5hdGl2ZXMtbmF0aXZlXzEuMy41OS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdmYThlYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jaGtjb25maWcvY2hrY29uZmlnLWFsdGVybmF0aXZlcy1uYXRpdmVfMS4zLjU5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWdfMS4zLjU4LmJiCi0KLVNVTU1BUlkgPSAiJHtTVU1NQVJZX2Noa2NvbmZpZy1hbHRlcm5hdGl2ZXN9IgotREVTQ1JJUFRJT04gPSAiJHtERVNDUklQVElPTl9jaGtjb25maWctYWx0ZXJuYXRpdmVzfSIKLURFUEVORFMgPSAiIgotUFJPVklERVMgKz0gInZpcnR1YWwvdXBkYXRlLWFsdGVybmF0aXZlcy1uYXRpdmUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotIyBUaGUgc3lzcm9vdCBicmFuY2ggaXMgMS4zLjU5ICsgc29tZSBnaXQgY29tbWl0cyBmcm9tIG1hc3RlciArIC0tc3lzcm9vdAotIyBzdXBwb3J0IGZvciBhbHRlcm5hdGl2ZXMuCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20va2VyZ290aC9jaGtjb25maWc7YnJhbmNoPXN5c3Jvb3QiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiY2hrY29uZmlnLSg/UDxwdmVyPihcZCsoXC5cZCspKykpIgotCi1TUkNSRVYgPSAiY2Q0MzdlY2JkODk4NmM4OTQ0NDJmOGZjZTFlMDA2MWUyMGYwNGRlZSIKLVBWID0gIjEuMy41OSske1NSQ1BWfSIKLQotaW5oZXJpdCBuYXRpdmUKLQotIyBXZSB3YW50IG91ciBuYXRpdmUgcmVjaXBlcyB0byBidWlsZCB1c2luZyB0aGUgdGFyZ2V0IHBhdGhzIHJhdGhlciB0aGFuIHBhdGhzCi0jIGludG8gdGhlIHN5c3Jvb3QsIGFzIHdlIG1heSB1c2UgdGhlbSB0byBjb25zdHJ1Y3QgdGhlIHJvb3Rmcy4gQXMgc3VjaCwgd2UKLSMgb25seSBhZGp1c3QgdGhlIHBhdGhzIHRvIG1hdGNoIHRoZSBtZXRhZGF0YSBmb3IgdGhlIHRhcmdldCwgbm90IG5hdGl2ZS4KLW9iZXlfdmFyaWFibGVzICgpIHsKLQlzZWQgLWkgJ3MsQUxURVJOQVRJVkVTX1JPT1QsT1BLR19PRkZMSU5FX1JPT1QsJyAke1N9L2FsdGVybmF0aXZlcy5jCi19Ci0KLWRvX2NvbXBpbGUgKCkgewotCW9lX3J1bm1ha2UgYWx0ZXJuYXRpdmVzCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYWx0ZXJuYXRpdmVzIFwKLQkgICAgICAgICAgICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9hbHRlcm5hdGl2ZXMKLQotCWluc3RhbGwgLUQgLW0gMDc1NSBhbHRlcm5hdGl2ZXMgJHtEfSR7YmluZGlyfS9hbHRlcm5hdGl2ZXMKLQlpbnN0YWxsIC1EIC1tIDA2NDQgYWx0ZXJuYXRpdmVzLjggJHtEfSR7bWFuZGlyfS9tYW44L2FsdGVybmF0aXZlcy44Ci0KLQlsbiAtcyBhbHRlcm5hdGl2ZXMgJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzCi0JbG4gLXMgYWx0ZXJuYXRpdmVzLjggJHtEfSR7bWFuZGlyfS9tYW44L3VwZGF0ZS1hbHRlcm5hdGl2ZXMuOAotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9saW51eHN0ZGJhc2UoKSB7Ci0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vbHNiCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jaGtjb25maWcvY2hrY29uZmlnL3JlcGxhY2VfY2FkZHJfdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWcvcmVwbGFjZV9jYWRkcl90LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmQxOTM4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWcvcmVwbGFjZV9jYWRkcl90LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotY2FkZHJfdCBpcyBhIGxlZ2FjeSBCU0QgdHlwZSB3aGljaCB3YXMgcmVqZWN0ZWQgYnkgdGhlIFBPU0lYIHN0YW5kYXJkLgotVXNlIHZvaWQgKiBpbnN0ZWFkLgotCi1zeXMvdW5pdHN0ZC5oIGlzIG5vdCBuZWVkZWQgYW5kIG1vcmVvdmVyIGl0cyBub3QgYXZhaWxhYmxlIG9uIGFsbCBDIGxpYnJhcnkKLWltcGxlbWVudGF0aW9ucyBlLmcuIG11c2wKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotSW5kZXg6IGNoa2NvbmZpZy0xLjMuNTgvYWx0ZXJuYXRpdmVzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjaGtjb25maWctMS4zLjU4Lm9yaWcvYWx0ZXJuYXRpdmVzLmMKLSsrKyBjaGtjb25maWctMS4zLjU4L2FsdGVybmF0aXZlcy5jCi1AQCAtMjIsNyArMjIsNiBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLS0jaW5jbHVkZSA8c3lzL3VuaXN0ZC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLSAjZGVmaW5lCUZMQUdTX1RFU1QJKDEgPDwgMCkKLUluZGV4OiBjaGtjb25maWctMS4zLjU4L2xldmVsZGIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNoa2NvbmZpZy0xLjMuNTgub3JpZy9sZXZlbGRiLmMKLSsrKyBjaGtjb25maWctMS4zLjU4L2xldmVsZGIuYwotQEAgLTQ0Miw3ICs0NDIsNyBAQCBpbnQgcGFyc2VTZXJ2aWNlSW5mbyhpbnQgZmQsIGNoYXIgKiBuYW1lCi0gICAgIGZzdGF0KGZkLCAmc2IpOwotIAotICAgICBidWZzdGFydCA9IG1tYXAoTlVMTCwgc2Iuc3Rfc2l6ZSwgUFJPVF9SRUFELCBNQVBfU0hBUkVELCBmZCwgMCk7Ci0tICAgIGlmIChidWZzdGFydCA9PSAoKGNhZGRyX3QpIC0xKSkgewotKyAgICBpZiAoYnVmc3RhcnQgPT0gKCh2b2lkKikgLTEpKSB7Ci0gCWNsb3NlKGZkKTsKLSAJcmV0dXJuIC0xOwotICAgICB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jaGtjb25maWcvY2hrY29uZmlnXzEuMy41OC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWdfMS4zLjU4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjFkZDY5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWdfMS4zLjU4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHN5c3RlbSB0b29sIGZvciBtYWludGFpbmluZyB0aGUgL2V0Yy9yYyouZCBoaWVyYXJjaHkiCi1ERVNDUklQVElPTiA9ICJDaGtjb25maWcgaXMgYSBiYXNpYyBzeXN0ZW0gdXRpbGl0eS4gIEl0IHVwZGF0ZXMgYW5kIHF1ZXJpZXMgcnVubGV2ZWwgXAotaW5mb3JtYXRpb24gZm9yIHN5c3RlbSBzZXJ2aWNlcy4gIENoa2NvbmZpZyBtYW5pcHVsYXRlcyB0aGUgbnVtZXJvdXMgXAotc3ltYm9saWMgbGlua3MgaW4gL2V0Yy9yYy5kLCB0byByZWxpZXZlIHN5c3RlbSBhZG1pbmlzdHJhdG9ycyBvZiBzb21lIFwKLW9mIHRoZSBkcnVkZ2VyeSBvZiBtYW51YWxseSBlZGl0aW5nIHRoZSBzeW1ib2xpYyBsaW5rcy4iCi0KLVJFQ0lQRV9OT19VUERBVEVfUkVBU09OID0gIlZlcnNpb24gMS41IHJlcXVpcmVzIHNlbGludXgiCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9mZWRvcmEtc3lzdiIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1NzRjNjk2NWFlNWY1ODNlNTU4ODBlMzk3ZmJiMDE4IgotCi1ERVBFTkRTID0gImxpYm5ld3QgcG9wdCIKLVBST1ZJREVTICs9ICJ2aXJ0dWFsL3VwZGF0ZS1hbHRlcm5hdGl2ZXMiCi0KLVBSID0gInI3IgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59LSR7QlBOfS0ke1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ZlZG9yYS1zeXN2L2Noa2NvbmZpZy5naXQgXAotICAgICAgICAgICBmaWxlOi8vcmVwbGFjZV9jYWRkcl90LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ1JFViA9ICIzZTBiMzkwOWZmNjMyOGQyMzJiMjdiOWMzMmYxYTkzMDljNmNkMGE0IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGdldHRleHQKLQotIyBNYWtlZmlsZSB1c2VzIFJQTV9PUFRfRkxBR1MgdG8gY29uc3RydWN0IENGTEFHUwotIwotRVhUUkFfT0VNQUtFID0gIlwKLSAgICAnUlBNX09QVF9GTEFHUz0ke0NGTEFHU30nIFwKLSAgICAnTERGTEFHUz0ke0xERkxBR1N9JyBcCi0gICAgJ0JJTkRJUj0ke2Jhc2Vfc2JpbmRpcn0nIFwKLSAgICAnU0JJTkRJUj0ke3NiaW5kaXJ9JyBcCi0gICAgJ01BTkRJUj0ke21hbmRpcn0nIFwKLSAgICAnQUxURElSPSR7bG9jYWxzdGF0ZWRpcn0vbGliL2FsdGVybmF0aXZlcycgXAotICAgICdBTFREQVRBRElSPSR7c3lzY29uZmRpcn0vYWx0ZXJuYXRpdmVzJyBcCi0iCi0KLWRvX3VucGFja1twb3N0ZnVuY3NdICs9ICJvYmV5X3ZhcmlhYmxlcyIKLWRvX3VucGFja1t2YXJkZXBzXSArPSAib2JleV92YXJpYWJsZXMiCi1vYmV5X3ZhcmlhYmxlcyAoKSB7Ci0Jc2VkIC1pIC1lICdzLC9ldGMsJHtzeXNjb25mZGlyfSw7IHMsL2xpYi9zeXN0ZW1kLCR7YmFzZV9saWJkaXJ9L3N5c3RlbWQsJyAke1N9L2xldmVsZGIuaAotCXNlZCAtaSAtZSAncywvZXRjL2FsdGVybmF0aXZlcywke3N5c2NvbmZkaXJ9L2FsdGVybmF0aXZlcywnIFwKLQkgICAgICAgLWUgJ3MsL3Zhci9saWIvYWx0ZXJuYXRpdmVzLCR7bG9jYWxzdGF0ZWRpcn0vbGliL2FsdGVybmF0aXZlcywnIFwKLQkgICAgICAgLWUgJ3MsL3Vzci9zaGFyZS9sb2NhbGUsJHtkYXRhZGlyfS9sb2NhbGUsJyAke1N9L2FsdGVybmF0aXZlcy5jCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyAnSU5TVEFMTE5MU0RJUj0ke0R9JHtkYXRhZGlyfS9sb2NhbGUnIFwKLQkJJ0JJTkRJUj0ke3NiaW5kaXJ9JyBpbnN0YWxsCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9jaGtjb25maWcuZAotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tYWx0ZXJuYXRpdmVzICR7UE59LWFsdGVybmF0aXZlcy1kb2MiCi1TVU1NQVJZXyR7UE59LWFsdGVybmF0aXZlcyA9ICJNYWludGFpbiBzeW1ib2xpYyBsaW5rcyBkZXRlcm1pbmluZyBkZWZhdWx0IGNvbW1hbmRzIgotREVTQ1JJUFRJT05fJHtQTn0tYWx0ZXJuYXRpdmVzID0gImFsdGVybmF0aXZlcyBjcmVhdGVzLCByZW1vdmVzLCBtYWludGFpbnMgYW5kIGRpc3BsYXlzIFwKLWluZm9ybWF0aW9uIGFib3V0IHRoZSBzeW1ib2xpYyBsaW5rcyBjb21wcmlzaW5nIHRoZSBhbHRlcm5hdGl2ZXMgc3lzdGVtLiIKLVNVTU1BUllfJHtQTn0tYWx0ZXJuYXRpdmVzLWRvYyA9ICIke1NVTU1BUllfJHtQTn0tYWx0ZXJuYXRpdmVzfSAtIERvY3VtZW50YXRpb24gZmlsZXMiCi1ERVNDUklQVElPTl8ke1BOfS1hbHRlcm5hdGl2ZXMtZG9jID0gIiR7REVTQ1JJUFRJT05fJHtQTn0tYWx0ZXJuYXRpdmVzfSAgXAotVGhpcyBwYWNrYWdlIGNvbnRhaW5zIGRvY3VtZW50YXRpb24uIgotUlBST1ZJREVTXyR7UE59LWFsdGVybmF0aXZlcyArPSAidXBkYXRlLWFsdGVybmF0aXZlcyIKLVJDT05GTElDVFNfJHtQTn0tYWx0ZXJuYXRpdmVzID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyB1cGRhdGUtYWx0ZXJuYXRpdmVzLWRwa2ciCi1GSUxFU18ke1BOfS1hbHRlcm5hdGl2ZXMgPSAiJHtzYmluZGlyfS9hbHRlcm5hdGl2ZXMgJHtzYmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIFwKLQkJCSAgICAke3N5c2NvbmZkaXJ9L2FsdGVybmF0aXZlcyAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9hbHRlcm5hdGl2ZXMiCi1GSUxFU18ke1BOfS1hbHRlcm5hdGl2ZXMtZG9jID0gIiR7bWFuZGlyfS9tYW44L2FsdGVybmF0aXZlcy44IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjgvdXBkYXRlLWFsdGVybmF0aXZlcy44IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1DVkUtMjAxNi0yMDM3LTEtYnl0ZS1vdXQtb2YtYm91bmRzLXdyaXRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1DVkUtMjAxNi0yMDM3LTEtYnl0ZS1vdXQtb2YtYm91bmRzLXdyaXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTMwNTQ0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjEyLzAwMDEtQ1ZFLTIwMTYtMjAzNy0xLWJ5dGUtb3V0LW9mLWJvdW5kcy13cml0ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0NiArMCwwIEBACi1Gcm9tIGViZjlhMmQ3NzY0NzQxODE5MzZhNzIwY2U4MTFkNzJiYmQxZGEzYjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXZlbCBSYWlza3VwIDxwcmFpc2t1cEByZWRoYXQuY29tPgotRGF0ZTogVHVlLCAyNiBKYW4gMjAxNiAyMzoxNzo1NCArMDEwMAotU3ViamVjdDogW1BBVENIXSBDVkUtMjAxNi0yMDM3IC0gMSBieXRlIG91dC1vZi1ib3VuZHMgd3JpdGUKLQotRW5zdXJlIHRoYXQgY3Bpb19zYWZlcl9uYW1lX3N1ZmZpeCBhbHdheXMgd29ya3Mgd2l0aCBkeW5hbWljYWxseQotYWxsb2NhdGVkIGJ1ZmZlciwgYW5kIHRoYXQgaXQgaGFzIHNpemUgb2YgYXQgbGVhc3QgMzIgYnl0ZXMuCi1UaGVuLCBhbnkgY2FsbCB0byBjcGlvX3NhZmVyX25hbWVfc3VmZml4IGlzIHNhZmUgKGl0IHJlcXVpcmVzIGF0Ci1sZWFzdCAyIGJ5dGVzIGluIHRoZSBidWZmZXIpLgotCi1BbHNvIGVuc3VyZSB0aGF0IGNfbmFtZXNpemUgaXMgYWx3YXlzIGNvcnJlY3RseSBpbml0aWFsaXplZCAoYnkKLWNwaW9fc2V0X2NfbmFtZSkgdG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW9yIHdoZW4gcmVhZGluZwotZmlsZV9oZHIuY19uYW1lc2l6ZSAocHJldmlvdXNseSBoYXBwZW5lZCBmb3IgdGFyIGFyY2hpdmVzKS4KLQotUmVmZXJlbmNlczoKLWh0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9idWctY3Bpb0BnbnUub3JnL21zZzAwNTQ1Lmh0bWwKLQotKiBzcmMvY29weWluLmMgKHF1ZXJ5X3JlbmFtZSk6IERyb3AgdGhlIGhhY2ssIGFzIHdlIG5vdyB3b3JrIHdpdGgKLWR5bmFtaWNhbGx5IGFsbG9jYXRlZCBidWZmZXIuICBVc2UgY3Bpb19zZXRfY19uYW1lLgotKGNyZWF0ZV9kZWZlcmVkX2xpbmtzX3RvX3NraXBwZWQpOiBVc2UgY3Bpb19zZXRfY19uYW1lIHJhdGhlciB0aGFuCi1tYW51YWwgYXNzaWdubWVudC4KLShyZWFkX25hbWVfZnJvbV9maWxlKTogTmV3IGZ1bmN0aW9uIHRvIGF2b2lkIEMmUC4KLShyZWFkX2luX29sZF9hc2NpaSwgcmVhZF9pbl9uZXdfYXNjaWksIHJlYWRfaW5fYmluYXJ5KTogVXNlCi1yZWFkX25hbWVfZnJvbV9maWxlLgotKHByb2Nlc3NfY29weV9pbik6IEluaXRpYWxpemUgZmlsZV9oZHIuY19uYW1lc2l6ZS4KLSogc3JjL2NvcHlvdXQuYyAocHJvY2Vzc19jb3B5X291dCk6IFVzZSBjcGlvX3NldF9jX25hbWUuCi0qIHNyYy9jcGlvaGRyLmggKGNwaW9fc2V0X2NfbmFtZSk6IE5ldyBwcm90b3R5cGUuCi0qIHNyYy90YXIuYyAocmVhZF9pbl90YXJfaGVhZGVyKTogVXNlIGNwaW9fc2V0X2NfbmFtZS4KLSogc3JjL3V0aWwuYyAoY3Bpb19zZXRfY19uYW1lKTogTmV3IGZ1bmN0aW9uIHRvIHNldAotZmlsZV9oZHItPmNfbmFtZSBhbmQgY19uYW1lc2l6ZSBmcm9tIGFyYml0cmFyeSBzdHJpbmcuCi0oY3Bpb19zYWZlcl9uYW1lX3N1ZmZpeCk6IFNvbWUgZG9jcyBmaXhlcy4KLSogdGVzdHMvaW5vdXQuYXQ6IEFsc28gdGVzdCBjb3B5LWluLCBhbmQgdHJ5IHZhcmlvdXMgZm9ybWF0cy4KLQotQ1ZFOiBDVkUtMjAxNi0yMDM3Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2NwaW8uZ2l0L2NvbW1pdC8/aWQ9ZDM2ZWM1ZjRlOTMxMzBlZmIyNGZiOTY3OGFhZmQ4OGU4MDcwMDk1Yl0KLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLS0tLQotIHNyYy9jb3B5aW4uYyAgIHwgNjggKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHNyYy9jb3B5b3V0LmMgIHwgMTMgKysrKystLS0tLS0KLSBzcmMvY3Bpb2hkci5oICB8ICAxICsKLSBzcmMvdGFyLmMgICAgICB8IDEwICsrKysrLS0tLQotIHNyYy91dGlsLmMgICAgIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKystCi0gdGVzdHMvaW5vdXQuYXQgfCAxOSArKysrKysrKysrKysrKy0tCi0gNiBmaWxlcyBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCA2MSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jb3B5aW4uYyBiL3NyYy9jb3B5aW4uYwotaW5kZXggY2RlOTExZS4uOTcyZjhhNiAxMDA2NDQKLS0tLSBhL3NyYy9jb3B5aW4uYwotKysrIGIvc3JjL2NvcHlpbi5jCi1AQCAtNzYsMjggKzc2LDcgQEAgcXVlcnlfcmVuYW1lKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCogZmlsZV9oZHIsIEZJTEUgKnR0eV9pbiwgRklMRSAqdHR5X291dCwKLSAgICAgICByZXR1cm4gLTE7Ci0gICAgIH0KLSAgIGVsc2UKLS0gIC8qIERlYmlhbiBoYWNrOiBmaWxlX2hyZC5jX25hbWUgaXMgc29tZXRpbWVzIHNldCB0bwotLSAgICAgcG9pbnQgdG8gc3RhdGljIG1lbW9yeSBieSBjb2RlIGluIHRhci5jLiAgVGhpcwotLSAgICAgY2F1c2VzIGEgc2VnZmF1bHQuICBUaGlzIGhhcyBiZWVuIGZpeGVkIGFuZCBhbgotLSAgICAgYWRkaXRpb25hbCBjaGVjayB0byBlbnN1cmUgdGhhdCB0aGUgZmlsZSBuYW1lCi0tICAgICBpcyBub3QgdG9vIGxvbmcgaGFzIGJlZW4gYWRkZWQuICAoUmVwb3J0ZWQgYnkKLS0gICAgIEhvcnN0IEtub2Jsb2NoLikgIFRoaXMgYnVnIGhhcyBiZWVuIHJlcG9ydGVkIHRvCi0tICAgICAiYnVnLWdudS11dGlsc0BwcmVwLmFpLm1pdC5lZHUiLiAoOTkvMS82KSAtQkVNICovCi0tICAgIHsKLS0gICAgICBpZiAoYXJjaGl2ZV9mb3JtYXQgIT0gYXJmX3RhciAmJiBhcmNoaXZlX2Zvcm1hdCAhPSBhcmZfdXN0YXIpCi0tCXsKLS0JICBmcmVlIChmaWxlX2hkci0+Y19uYW1lKTsKLS0JICBmaWxlX2hkci0+Y19uYW1lID0geHN0cmR1cCAobmV3X25hbWUuZHNfc3RyaW5nKTsKLS0JfQotLSAgICAgIGVsc2UKLS0JewotLQkgIGlmIChpc190YXJfZmlsZW5hbWVfdG9vX2xvbmcgKG5ld19uYW1lLmRzX3N0cmluZykpCi0tCSAgICBlcnJvciAoMCwgMCwgXygiJXM6IGZpbGUgbmFtZSB0b28gbG9uZyIpLAotLQkJICAgbmV3X25hbWUuZHNfc3RyaW5nKTsKLS0JICBlbHNlCi0tCSAgICBzdHJjcHkgKGZpbGVfaGRyLT5jX25hbWUsIG5ld19uYW1lLmRzX3N0cmluZyk7Ci0tCX0KLS0gICAgfQotKyAgICBjcGlvX3NldF9jX25hbWUgKGZpbGVfaGRyLCBuZXdfbmFtZS5kc19zdHJpbmcpOwotICAgcmV0dXJuIDA7Ci0gfQotIAwKLUBAIC0zNDQsOCArMzIzLDcgQEAgY3JlYXRlX2RlZmVyZWRfbGlua3NfdG9fc2tpcHBlZCAoc3RydWN0IGNwaW9fZmlsZV9zdGF0ICpmaWxlX2hkciwKLSAJICAgIGRfcHJldi0+bmV4dCA9IGQtPm5leHQ7Ci0gCSAgZWxzZQotIAkgICAgZGVmZXJtZW50cyA9IGQtPm5leHQ7Ci0tCSAgZnJlZSAoZmlsZV9oZHItPmNfbmFtZSk7Ci0tCSAgZmlsZV9oZHItPmNfbmFtZSA9IHhzdHJkdXAoZC0+aGVhZGVyLmNfbmFtZSk7Ci0rCSAgY3Bpb19zZXRfY19uYW1lIChmaWxlX2hkciwgZC0+aGVhZGVyLmNfbmFtZSk7Ci0gCSAgZnJlZV9kZWZlcm1lbnQgKGQpOwotIAkgIGNvcHlpbl9yZWd1bGFyX2ZpbGUoZmlsZV9oZHIsIGluX2ZpbGVfZGVzKTsKLSAJICByZXR1cm4gMDsKLUBAIC0xMDY0LDYgKzEwNDIsMjIgQEAgcmVhZF9pbl9oZWFkZXIgKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCAqZmlsZV9oZHIsIGludCBpbl9kZXMpCi0gICAgIH0KLSB9Ci0gCi0rc3RhdGljIHZvaWQKLStyZWFkX25hbWVfZnJvbV9maWxlIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBpbnQgZmQsIHVpbnRtYXhfdCBsZW4pCi0rewotKyAgc3RhdGljIGNoYXIgKnRtcF9maWxlbmFtZTsKLSsgIHN0YXRpYyBzaXplX3QgYnVmbGVuOwotKwotKyAgaWYgKGJ1ZmxlbiA8IGxlbikKLSsgICAgewotKyAgICAgIGJ1ZmxlbiA9IGxlbjsKLSsgICAgICB0bXBfZmlsZW5hbWUgPSB4cmVhbGxvYyAodG1wX2ZpbGVuYW1lLCBidWZsZW4pOwotKyAgICB9Ci0rCi0rICB0YXBlX2J1ZmZlcmVkX3JlYWQgKHRtcF9maWxlbmFtZSwgZmQsIGxlbik7Ci0rICBjcGlvX3NldF9jX25hbWUgKGZpbGVfaGRyLCB0bXBfZmlsZW5hbWUpOwotK30KLSsKLSAvKiBGaWxsIGluIEZJTEVfSERSIGJ5IHJlYWRpbmcgYW4gb2xkLWZvcm1hdCBBU0NJSSBmb3JtYXQgY3BpbyBoZWFkZXIgZnJvbQotICAgIGZpbGUgZGVzY3JpcHRvciBJTl9ERVMsIGV4Y2VwdCBmb3IgdGhlIG1hZ2ljIG51bWJlciwgd2hpY2ggaXMKLSAgICBhbHJlYWR5IGZpbGxlZCBpbi4gICovCi1AQCAtMTA5MCwxNCArMTA4NCw4IEBAIHJlYWRfaW5fb2xkX2FzY2lpIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBpbnQgaW5fZGVzKQotICAgZmlsZV9oZHItPmNfcmRldl9taW4gPSBtaW5vciAoZGV2KTsKLSAKLSAgIGZpbGVfaGRyLT5jX210aW1lID0gRlJPTV9PQ1RBTCAoYXNjaWlfaGVhZGVyLmNfbXRpbWUpOwotLSAgZmlsZV9oZHItPmNfbmFtZXNpemUgPSBGUk9NX09DVEFMIChhc2NpaV9oZWFkZXIuY19uYW1lc2l6ZSk7Ci0gICBmaWxlX2hkci0+Y19maWxlc2l6ZSA9IEZST01fT0NUQUwgKGFzY2lpX2hlYWRlci5jX2ZpbGVzaXplKTsKLS0gIAotLSAgLyogUmVhZCBmaWxlIG5hbWUgZnJvbSBpbnB1dC4gICovCi0tICBpZiAoZmlsZV9oZHItPmNfbmFtZSAhPSBOVUxMKQotLSAgICBmcmVlIChmaWxlX2hkci0+Y19uYW1lKTsKLS0gIGZpbGVfaGRyLT5jX25hbWUgPSAoY2hhciAqKSB4bWFsbG9jIChmaWxlX2hkci0+Y19uYW1lc2l6ZSArIDEpOwotLSAgdGFwZV9idWZmZXJlZF9yZWFkIChmaWxlX2hkci0+Y19uYW1lLCBpbl9kZXMsIChsb25nKSBmaWxlX2hkci0+Y19uYW1lc2l6ZSk7Ci0rICByZWFkX25hbWVfZnJvbV9maWxlIChmaWxlX2hkciwgaW5fZGVzLCBGUk9NX09DVEFMIChhc2NpaV9oZWFkZXIuY19uYW1lc2l6ZSkpOwotIAotICAgLyogSFAvVVggY3BpbyBjcmVhdGVzIGFyY2hpdmVzIHRoYXQgbG9vayBqdXN0IGxpa2Ugb3JkaW5hcnkgYXJjaGl2ZXMsCi0gICAgICBidXQgZm9yIGRldmljZXMgaXQgc2V0cyBtYWpvciA9IDAsIG1pbm9yID0gMSwgYW5kIHB1dHMgdGhlCi1AQCAtMTE1MiwxNCArMTE0MCw4IEBAIHJlYWRfaW5fbmV3X2FzY2lpIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBpbnQgaW5fZGVzKQotICAgZmlsZV9oZHItPmNfZGV2X21pbiA9IEZST01fSEVYIChhc2NpaV9oZWFkZXIuY19kZXZfbWluKTsKLSAgIGZpbGVfaGRyLT5jX3JkZXZfbWFqID0gRlJPTV9IRVggKGFzY2lpX2hlYWRlci5jX3JkZXZfbWFqKTsKLSAgIGZpbGVfaGRyLT5jX3JkZXZfbWluID0gRlJPTV9IRVggKGFzY2lpX2hlYWRlci5jX3JkZXZfbWluKTsKLS0gIGZpbGVfaGRyLT5jX25hbWVzaXplID0gRlJPTV9IRVggKGFzY2lpX2hlYWRlci5jX25hbWVzaXplKTsKLSAgIGZpbGVfaGRyLT5jX2Noa3N1bSA9IEZST01fSEVYIChhc2NpaV9oZWFkZXIuY19jaGtzdW0pOwotLSAgCi0tICAvKiBSZWFkIGZpbGUgbmFtZSBmcm9tIGlucHV0LiAgKi8KLS0gIGlmIChmaWxlX2hkci0+Y19uYW1lICE9IE5VTEwpCi0tICAgIGZyZWUgKGZpbGVfaGRyLT5jX25hbWUpOwotLSAgZmlsZV9oZHItPmNfbmFtZSA9IChjaGFyICopIHhtYWxsb2MgKGZpbGVfaGRyLT5jX25hbWVzaXplKTsKLS0gIHRhcGVfYnVmZmVyZWRfcmVhZCAoZmlsZV9oZHItPmNfbmFtZSwgaW5fZGVzLCAobG9uZykgZmlsZV9oZHItPmNfbmFtZXNpemUpOwotKyAgcmVhZF9uYW1lX2Zyb21fZmlsZSAoZmlsZV9oZHIsIGluX2RlcywgRlJPTV9IRVggKGFzY2lpX2hlYWRlci5jX25hbWVzaXplKSk7Ci0gCi0gICAvKiBJbiBTVlI0IEFTQ0lJIGZvcm1hdCwgdGhlIGFtb3VudCBvZiBzcGFjZSBhbGxvY2F0ZWQgZm9yIHRoZSBoZWFkZXIKLSAgICAgIGlzIHJvdW5kZWQgdXAgdG8gdGhlIG5leHQgbG9uZy13b3JkLCBzbyB3ZSBtaWdodCBuZWVkIHRvIGRyb3AKLUBAIC0xMjA3LDE2ICsxMTg5LDkgQEAgcmVhZF9pbl9iaW5hcnkgKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCAqZmlsZV9oZHIsCi0gICBmaWxlX2hkci0+Y19yZGV2X21pbiA9IG1pbm9yIChzaG9ydF9oZHItPmNfcmRldik7Ci0gICBmaWxlX2hkci0+Y19tdGltZSA9ICh1bnNpZ25lZCBsb25nKSBzaG9ydF9oZHItPmNfbXRpbWVzWzBdIDw8IDE2Ci0gICAgICAgICAgICAgICAgICAgICAgIHwgc2hvcnRfaGRyLT5jX210aW1lc1sxXTsKLS0KLS0gIGZpbGVfaGRyLT5jX25hbWVzaXplID0gc2hvcnRfaGRyLT5jX25hbWVzaXplOwotICAgZmlsZV9oZHItPmNfZmlsZXNpemUgPSAodW5zaWduZWQgbG9uZykgc2hvcnRfaGRyLT5jX2ZpbGVzaXplc1swXSA8PCAxNgotICAgICAgICAgICAgICAgICAgICAgICB8IHNob3J0X2hkci0+Y19maWxlc2l6ZXNbMV07Ci0tCi0tICAvKiBSZWFkIGZpbGUgbmFtZSBmcm9tIGlucHV0LiAgKi8KLS0gIGlmIChmaWxlX2hkci0+Y19uYW1lICE9IE5VTEwpCi0tICAgIGZyZWUgKGZpbGVfaGRyLT5jX25hbWUpOwotLSAgZmlsZV9oZHItPmNfbmFtZSA9IChjaGFyICopIHhtYWxsb2MgKGZpbGVfaGRyLT5jX25hbWVzaXplKTsKLS0gIHRhcGVfYnVmZmVyZWRfcmVhZCAoZmlsZV9oZHItPmNfbmFtZSwgaW5fZGVzLCAobG9uZykgZmlsZV9oZHItPmNfbmFtZXNpemUpOwotKyAgcmVhZF9uYW1lX2Zyb21fZmlsZSAoZmlsZV9oZHIsIGluX2Rlcywgc2hvcnRfaGRyLT5jX25hbWVzaXplKTsKLSAKLSAgIC8qIEluIGJpbmFyeSBtb2RlLCB0aGUgYW1vdW50IG9mIHNwYWNlIGFsbG9jYXRlZCBpbiB0aGUgaGVhZGVyIGZvcgotICAgICAgdGhlIGZpbGVuYW1lIGlzIGBjX25hbWVzaXplJyByb3VuZGVkIHVwIHRvIHRoZSBuZXh0IHNob3J0LXdvcmQsCi1AQCAtMTI5Nyw2ICsxMjcyLDcgQEAgcHJvY2Vzc19jb3B5X2luICgpCi0gICAgICAgcmVhZF9wYXR0ZXJuX2ZpbGUgKCk7Ci0gICAgIH0KLSAgIGZpbGVfaGRyLmNfbmFtZSA9IE5VTEw7Ci0rICBmaWxlX2hkci5jX25hbWVzaXplID0gMDsKLSAKLSAgIGlmIChyZW5hbWVfYmF0Y2hfZmlsZSkKLSAgICAgewotZGlmZiAtLWdpdCBhL3NyYy9jb3B5b3V0LmMgYi9zcmMvY29weW91dC5jCi1pbmRleCAxZjA5ODdhLi5iYjM5NTU5IDEwMDY0NAotLS0tIGEvc3JjL2NvcHlvdXQuYwotKysrIGIvc3JjL2NvcHlvdXQuYwotQEAgLTY2MCw4ICs2NjAsNyBAQCBwcm9jZXNzX2NvcHlfb3V0ICgpCi0gCSAgY3Bpb19zYWZlcl9uYW1lX3N1ZmZpeCAoaW5wdXRfbmFtZS5kc19zdHJpbmcsIGZhbHNlLAotIAkJCQkgICFub19hYnNfcGF0aHNfZmxhZywgdHJ1ZSk7Ci0gI2lmbmRlZiBIUFVYX0NERgotLQkgIGZpbGVfaGRyLmNfbmFtZSA9IGlucHV0X25hbWUuZHNfc3RyaW5nOwotLQkgIGZpbGVfaGRyLmNfbmFtZXNpemUgPSBzdHJsZW4gKGlucHV0X25hbWUuZHNfc3RyaW5nKSArIDE7Ci0rCSAgY3Bpb19zZXRfY19uYW1lICgmZmlsZV9oZHIsIGlucHV0X25hbWUuZHNfc3RyaW5nKTsKLSAjZWxzZQotIAkgIGlmICggKGFyY2hpdmVfZm9ybWF0ICE9IGFyZl90YXIpICYmIChhcmNoaXZlX2Zvcm1hdCAhPSBhcmZfdXN0YXIpICkKLSAJICAgIHsKLUBAIC02NzAsMTYgKzY2OSwxNSBAQCBwcm9jZXNzX2NvcHlfb3V0ICgpCi0gCQkgcHJvcGVybHkgcmVjcmVhdGUgdGhlIGRpcmVjdG9yeSBhcyBoaWRkZW4gKGluIGNhc2UgdGhlCi0gCQkgZmlsZXMgb2YgYSBkaXJlY3RvcnkgZ28gaW50byB0aGUgYXJjaGl2ZSBiZWZvcmUgdGhlCi0gCQkgZGlyZWN0b3J5IGl0c2VsZiAoZS5nIGZyb20gImZpbmQgLi4uIC1kZXB0aCAuLi4gfCBjcGlvIikpLiAgKi8KLS0JICAgICAgZmlsZV9oZHIuY19uYW1lID0gYWRkX2NkZl9kb3VibGVfc2xhc2hlcyAoaW5wdXRfbmFtZS5kc19zdHJpbmcpOwotLQkgICAgICBmaWxlX2hkci5jX25hbWVzaXplID0gc3RybGVuIChmaWxlX2hkci5jX25hbWUpICsgMTsKLSsgICAgICAgICAgICAgIGNwaW9fc2V0X2NfbmFtZSAoJmZpbGVfaGRyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfY2RmX2RvdWJsZV9zbGFzaGVzIChpbnB1dF9uYW1lLmRzX3N0cmluZykpOwotIAkgICAgfQotIAkgIGVsc2UKLSAJICAgIHsKLSAJICAgICAgLyogV2UgZG9uJ3QgbWFyayBDREYncyBpbiB0YXIgZmlsZXMuICBXZSBhc3N1bWUgdGhlICJoaWRkZW4iCi0gCQkgZGlyZWN0b3J5IHdpbGwgYWx3YXlzIGdvIGludG8gdGhlIGFyY2hpdmUgYmVmb3JlIGFueSBvZgotIAkJIGl0cyBmaWxlcy4gICovCi0tCSAgICAgIGZpbGVfaGRyLmNfbmFtZSA9IGlucHV0X25hbWUuZHNfc3RyaW5nOwotLQkgICAgICBmaWxlX2hkci5jX25hbWVzaXplID0gc3RybGVuIChpbnB1dF9uYW1lLmRzX3N0cmluZykgKyAxOwotKyAgICAgICAgICAgICAgY3Bpb19zZXRfY19uYW1lICgmZmlsZV9oZHIsIGlucHV0X25hbWUuZHNfc3RyaW5nKTsKLSAJICAgIH0KLSAjZW5kaWYKLSAKLUBAIC04NjYsOCArODY0LDcgQEAgcHJvY2Vzc19jb3B5X291dCAoKQotICAgZmlsZV9oZHIuY19jaGtzdW0gPSAwOwotIAotICAgZmlsZV9oZHIuY19maWxlc2l6ZSA9IDA7Ci0tICBmaWxlX2hkci5jX25hbWVzaXplID0gMTE7Ci0tICBmaWxlX2hkci5jX25hbWUgPSBDUElPX1RSQUlMRVJfTkFNRTsKLSsgIGNwaW9fc2V0X2NfbmFtZSAoJmZpbGVfaGRyLCBDUElPX1RSQUlMRVJfTkFNRSk7Ci0gICBpZiAoYXJjaGl2ZV9mb3JtYXQgIT0gYXJmX3RhciAmJiBhcmNoaXZlX2Zvcm1hdCAhPSBhcmZfdXN0YXIpCi0gICAgIHdyaXRlX291dF9oZWFkZXIgKCZmaWxlX2hkciwgb3V0X2ZpbGVfZGVzKTsKLSAgIGVsc2UKLWRpZmYgLS1naXQgYS9zcmMvY3Bpb2hkci5oIGIvc3JjL2NwaW9oZHIuaAotaW5kZXggYjI5ZTZmYi4uZjRjNjNiZSAxMDA2NDQKLS0tLSBhL3NyYy9jcGlvaGRyLmgKLSsrKyBiL3NyYy9jcGlvaGRyLmgKLUBAIC0xMjksNSArMTI5LDYgQEAgc3RydWN0IGNwaW9fZmlsZV9zdGF0IC8qIEludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGEgQ1BJTyBoZWFkZXIgKi8KLSAgIGNoYXIgKmNfdGFyX2xpbmtuYW1lOwotIH07Ci0gCi0rdm9pZCBjcGlvX3NldF9jX25hbWUoc3RydWN0IGNwaW9fZmlsZV9zdGF0ICpmaWxlX2hkciwgY2hhciAqbmFtZSk7Ci0gCi0gI2VuZGlmIC8qIGNwaW9oZHIuaCAqLwotZGlmZiAtLWdpdCBhL3NyYy90YXIuYyBiL3NyYy90YXIuYwotaW5kZXggYTJjZTE3MS4uZTQxZjg5ZCAxMDA2NDQKLS0tLSBhL3NyYy90YXIuYwotKysrIGIvc3JjL3Rhci5jCi1AQCAtMjgyLDcgKzI4Miw3IEBAIHJlYWRfaW5fdGFyX2hlYWRlciAoc3RydWN0IGNwaW9fZmlsZV9zdGF0ICpmaWxlX2hkciwgaW50IGluX2RlcykKLSAgICAgICBpZiAobnVsbF9ibG9jayAoKGxvbmcgKikgJnRhcl9yZWMsIFRBUlJFQ09SRFNJWkUpKQotICNlbmRpZgotIAl7Ci0tCSAgZmlsZV9oZHItPmNfbmFtZSA9IENQSU9fVFJBSUxFUl9OQU1FOwotKwkgIGNwaW9fc2V0X2NfbmFtZSAoZmlsZV9oZHIsIENQSU9fVFJBSUxFUl9OQU1FKTsKLSAJICByZXR1cm47Ci0gCX0KLSAjaWYgMAotQEAgLTMxNiw5ICszMTYsMTEgQEAgcmVhZF9pbl90YXJfaGVhZGVyIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBpbnQgaW5fZGVzKQotIAl9Ci0gCi0gICAgICAgaWYgKGFyY2hpdmVfZm9ybWF0ICE9IGFyZl91c3RhcikKLS0JZmlsZV9oZHItPmNfbmFtZSA9IHN0YXNoX3Rhcl9maWxlbmFtZSAoTlVMTCwgdGFyX2hkci0+bmFtZSk7Ci0rICAgICAgICBjcGlvX3NldF9jX25hbWUgKGZpbGVfaGRyLCBzdGFzaF90YXJfZmlsZW5hbWUgKE5VTEwsIHRhcl9oZHItPm5hbWUpKTsKLSAgICAgICBlbHNlCi0tCWZpbGVfaGRyLT5jX25hbWUgPSBzdGFzaF90YXJfZmlsZW5hbWUgKHRhcl9oZHItPnByZWZpeCwgdGFyX2hkci0+bmFtZSk7Ci0rICAgICAgICBjcGlvX3NldF9jX25hbWUgKGZpbGVfaGRyLCBzdGFzaF90YXJfZmlsZW5hbWUgKHRhcl9oZHItPnByZWZpeCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJfaGRyLT5uYW1lKSk7Ci0rCi0gICAgICAgZmlsZV9oZHItPmNfbmxpbmsgPSAxOwotICAgICAgIGZpbGVfaGRyLT5jX21vZGUgPSBGUk9NX09DVEFMICh0YXJfaGRyLT5tb2RlKTsKLSAgICAgICBmaWxlX2hkci0+Y19tb2RlID0gZmlsZV9oZHItPmNfbW9kZSAmIDA3Nzc3OwotQEAgLTM5OCw3ICs0MDAsNyBAQCByZWFkX2luX3Rhcl9oZWFkZXIgKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCAqZmlsZV9oZHIsIGludCBpbl9kZXMpCi0gCWNhc2UgQVJFR1RZUEU6Ci0gCSAgLyogT2xkIHRhciBmb3JtYXQ7IGlmIHRoZSBsYXN0IGNoYXIgaW4gZmlsZW5hbWUgaXMgJy8nIHRoZW4gaXQgaXMKLSAJICAgICBhIGRpcmVjdG9yeSwgb3RoZXJ3aXNlIGl0J3MgYSByZWd1bGFyIGZpbGUuICAqLwotLQkgIGlmIChmaWxlX2hkci0+Y19uYW1lW3N0cmxlbiAoZmlsZV9oZHItPmNfbmFtZSkgLSAxXSA9PSAnLycpCi0rCSAgaWYgKGZpbGVfaGRyLT5jX25hbWVbZmlsZV9oZHItPmNfbmFtZXNpemUgLSAxXSA9PSAnLycpCi0gCSAgICBmaWxlX2hkci0+Y19tb2RlIHw9IENQX0lGRElSOwotIAkgIGVsc2UKLSAJICAgIGZpbGVfaGRyLT5jX21vZGUgfD0gQ1BfSUZSRUc7Ci1kaWZmIC0tZ2l0IGEvc3JjL3V0aWwuYyBiL3NyYy91dGlsLmMKLWluZGV4IDZmZjYwMzIuLjRmM2MwNzMgMTAwNjQ0Ci0tLS0gYS9zcmMvdXRpbC5jCi0rKysgYi9zcmMvdXRpbC5jCi1AQCAtMTQxMCw4ICsxNDEwLDM0IEBAIHNldF9maWxlX3RpbWVzIChpbnQgZmQsCi0gICAgIHV0aW1lX2Vycm9yIChuYW1lKTsKLSB9Ci0gCi0rCi0rdm9pZAotK2NwaW9fc2V0X2NfbmFtZSAoc3RydWN0IGNwaW9fZmlsZV9zdGF0ICpmaWxlX2hkciwgY2hhciAqbmFtZSkKLSt7Ci0rICBzdGF0aWMgc2l6ZV90IGJ1ZmxlbiA9IDA7Ci0rICBzaXplX3QgbGVuID0gc3RybGVuIChuYW1lKSArIDE7Ci0rCi0rICBpZiAoYnVmbGVuID09IDApCi0rICAgIHsKLSsgICAgICBidWZsZW4gPSBsZW47Ci0rICAgICAgaWYgKGJ1ZmxlbiA8IDMyKQotKyAgICAgICAgYnVmbGVuID0gMzI7Ci0rICAgICAgZmlsZV9oZHItPmNfbmFtZSA9IHhtYWxsb2MgKGJ1Zmxlbik7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGJ1ZmxlbiA8IGxlbikKLSsgICAgewotKyAgICAgIGJ1ZmxlbiA9IGxlbjsKLSsgICAgICBmaWxlX2hkci0+Y19uYW1lID0geHJlYWxsb2MgKGZpbGVfaGRyLT5jX25hbWUsIGJ1Zmxlbik7Ci0rICAgIH0KLSsKLSsgIGZpbGVfaGRyLT5jX25hbWVzaXplID0gbGVuOwotKyAgbWVtbW92ZSAoZmlsZV9oZHItPmNfbmFtZSwgbmFtZSwgbGVuKTsKLSt9Ci0rCi0gLyogRG8gd2UgaGF2ZSB0byBpZ25vcmUgYWJzb2x1dGUgcGF0aHMsIGFuZCBpZiBzbywgZG9lcyB0aGUgZmlsZW5hbWUKLS0gICBoYXZlIGFuIGFic29sdXRlIHBhdGg/ICAqLwotKyAgIGhhdmUgYW4gYWJzb2x1dGUgcGF0aD8gIEJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gbWFrZSBzdXJlIHRoYXQgdGhlCi0rICAgYWxsb2NhdGVkIE5BTUUgYnVmZmVyIGhhcyBjYXBhY2l0eSBhdCBsZWFzdCAyIGJ5dGVzLiAqLwotKwotIHZvaWQKLSBjcGlvX3NhZmVyX25hbWVfc3VmZml4IChjaGFyICpuYW1lLCBib29sIGxpbmtfdGFyZ2V0LCBib29sIGFic29sdXRlX25hbWVzLAotIAkJCWJvb2wgc3RyaXBfbGVhZGluZ19kb3RzKQotQEAgLTE0MjYsNiArMTQ1MiwxMCBAQCBjcGlvX3NhZmVyX25hbWVfc3VmZml4IChjaGFyICpuYW1lLCBib29sIGxpbmtfdGFyZ2V0LCBib29sIGFic29sdXRlX25hbWVzLAotIAkgICsrcDsKLSAgICAgICB9Ci0gICBpZiAocCAhPSBuYW1lKQotKyAgICAvKiBUaGUgJ3AnIHN0cmluZyBpcyBzaG9ydGVuZWQgdmVyc2lvbiBvZiAnbmFtZScgd2l0aCBvbmUgZXhjZXB0aW9uOyAgd2hlbgotKyAgICAgICB0aGUgJ25hbWUnIHBvaW50cyB0byBhbiBlbXB0eSBzdHJpbmcgKGJ1ZmZlciB3aGVyZSBuYW1lWzBdID09ICdcMCcpIHRoZQotKyAgICAgICAncCcgdGhlbiBwb2ludHMgdG8gc3RhdGljIHN0cmluZyAiLiIuICBTbyBjYWxsZXIgbmVlZHMgdG8gZW5zdXJlIHRoZXJlCi0rICAgICAgIGFyZSBhdCBsZWFzdCB0d28gYnl0ZXMgYXZhaWxhYmxlIGluICduYW1lJyBidWZmZXIgc28gbWVtbW92ZSBzdWNjZWVkcy4gKi8KLSAgICAgbWVtbW92ZSAobmFtZSwgcCwgKHNpemVfdCkoc3RybGVuIChwKSArIDEpKTsKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvaW5vdXQuYXQgYi90ZXN0cy9pbm91dC5hdAotaW5kZXggNjBjMzcxNi4uNzMwY2JkMiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2lub3V0LmF0Ci0rKysgYi90ZXN0cy9pbm91dC5hdAotQEAgLTM1LDcgKzM1LDIyIEBAIHdoaWxlIHJlYWQgTkFNRSBMRU5HVEgKLSBkbwotIAlnZW5maWxlIC0tbGVuZ3RoICRMRU5HVEggPiAkTkFNRQotIAllY2hvICROQU1FCi0tZG9uZSA8IGZpbGVsaXN0IHwKLS0gY3BpbyAtLXF1aWV0IC1vID4gYXJjaGl2ZV0pCi0rZG9uZSA8IGZpbGVsaXN0ID4gZmlsZWxpc3RfcmF3Ci0rCi0rZm9yIGZvcm1hdCBpbiBiaW4gb2RjIG5ld2MgY3JjIHRhciB1c3RhciBocGJpbiBocG9kYwotK2RvCi0rICAgIGNwaW8gLS1mb3JtYXQ9JGZvcm1hdCAtLXF1aWV0IC1vIDwgZmlsZWxpc3RfcmF3ID4gYXJjaGl2ZS4kZm9ybWF0Ci0rICAgIHJtIC1yZiBvdXRwdXQKLSsgICAgbWtkaXIgb3V0cHV0ICYmIGNkIG91dHB1dAotKyAgICBjcGlvIC1pIC0tcXVpZXQgPCAuLi9hcmNoaXZlLiRmb3JtYXQKLSsKLSsgICAgd2hpbGUgcmVhZCBmaWxlCi0rICAgIGRvCi0rICAgICAgICB0ZXN0IC1mICRmaWxlIHx8IGVjaG8gIiRmaWxlIG5vdCBmb3VuZCIKLSsgICAgZG9uZSA8IC4uL2ZpbGVsaXN0X3JhdwotKwotKyAgICBjZCAuLgotK2RvbmUKLStdKQotIAotIEFUX0NMRUFOVVAKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1GaXgtQ1ZFLTIwMTUtMTE5Ny5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjEyLzAwMDEtRml4LUNWRS0yMDE1LTExOTcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjOTk5MTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1GaXgtQ1ZFLTIwMTUtMTE5Ny5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi1Gcm9tIGRjZWU0ODlmODIxYzEyNjBhMDEzNmZjZGZkYjZmZjRkZDExMDg2YWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgOSBEZWMgMjAxNSAxNzo1ODowMyArMDIwMAotU3ViamVjdDogW1BBVENIXSBGaXggQ1ZFLTIwMTUtMTE5NwotCi1BcHBseSBwYXRjaCBieSBWaXRlenNsYXYgQ2l6ZWsgb2YgU3VTRSB0byBmaXggQ1ZFLTIwMTUtMTE5Ny4KLVVwc3RyZWFtIGlzIGRvcm1hbnQgb3Igbm8gbG9uZ2VyIGV4aXN0aW5nLiBUbyByZXN0b3JlIHRoZSBvbGQKLWJlaGF2aW91ciB1c2UgLS1leHRyYWN0LW92ZXItc3ltbGlua3MgKENsb3NlczogIzc3NDY2OSkKLVRoaXMgaXNzdWUgaGFzIGJlZW4gZGlzY292ZXJlZCBieSBBbGV4YW5kZXIgQ2hlcmVwYW5vdi4KLUF1dGhvcjogVml0ZXpzbGF2IENpemVrIDx2Y2l6ZWtAc3VzZS5jej4KLUJ1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzc3NDY2OQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUNWRTogQ1ZFLTIwMTUtMTE5NwotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLQotLS0tCi0gZG9jL2NwaW8uMSAgIHwgIDEgKwotIHNyYy9jb3B5aW4uYyB8IDYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIHNyYy9leHRlcm4uaCB8ICAxICsKLSBzcmMvZ2xvYmFsLmMgfCAgMyArKysKLSBzcmMvbWFpbi5jICAgfCAgNyArKysrKysrCi0gNSBmaWxlcyBjaGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9kb2MvY3Bpby4xIGIvZG9jL2NwaW8uMQotaW5kZXggMmE2ODI0MS4uZGM0Njc2YyAxMDA2NDQKLS0tLSBhL2RvYy9jcGlvLjEKLSsrKyBiL2RvYy9jcGlvLjEKLUBAIC00OSw2ICs0OSw3IEBAIGNwaW8gXC0gY29weSBmaWxlcyB0byBhbmQgZnJvbSBhcmNoaXZlcwotIFtcZkJcLVwtbm9cLXByZXNlcnZlXC1vd25lclxmUl0gW1xmQlwtXC1tZXNzYWdlPVxmSU1FU1NBR0VcZlJdCi0gW1xmQlwtXC1mb3JjZVwtbG9jYWxcZlJdIFtcZkJcLVwtbm9cLWFic29sdXRlXC1maWxlbmFtZXNcZlJdIFtcZkJcLVwtc3BhcnNlXGZSXQotIFtcZkJcLVwtb25seVwtdmVyaWZ5XC1jcmNcZlJdIFtcZkJcLVwtdG9cLXN0ZG91dFxmUl0gW1xmQlwtXC1xdWlldFxmUl0KLStbXGZCXC1cLWV4dHJhY3RcLW92ZXJcLXN5bWxpbmtzXGZSXQotIFtcZkJcLVwtcnNoXC1jb21tYW5kPVxmSUNPTU1BTkRcZlJdCi0gW1xmSXBhdHRlcm5cZlIuLi5dIFtcZkI8XGZSIFxmSWFyY2hpdmVcZlJdCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL2NvcHlpbi5jIGIvc3JjL2NvcHlpbi5jCi1pbmRleCBjZGU5MTFlLi4wNTNhZmU3IDEwMDY0NAotLS0tIGEvc3JjL2NvcHlpbi5jCi0rKysgYi9zcmMvY29weWluLmMKLUBAIC02OTUsNiArNjk1LDUxIEBAIGNvcHlpbl9saW5rIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBpbnQgaW5fZmlsZV9kZXMpCi0gICBmcmVlIChsaW5rX25hbWUpOwotIH0KLSAMCi0rCi0rc3RhdGljIGludAotK3BhdGhfY29udGFpbnNfc3ltbGluayhjaGFyICpwYXRoKQotK3sKLSsgIHN0cnVjdCBzdGF0IHN0OwotKyAgY2hhciAqc2xhc2g7Ci0rICBjaGFyICpuZXh0c2xhc2g7Ci0rCi0rICAvKiB3ZSBnb3QgTlVMTCBwb2ludGVyIG9yIGVtcHR5IHN0cmluZyAqLwotKyAgaWYgKCFwYXRoIHx8ICEqcGF0aCkgewotKyAgICByZXR1cm4gZmFsc2U7Ci0rICB9Ci0rCi0rICBzbGFzaCA9IHBhdGg7Ci0rCi0rICB3aGlsZSAoKG5leHRzbGFzaCA9IHN0cmNocihzbGFzaCArIDEsICcvJykpICE9IE5VTEwpIHsKLSsgICAgc2xhc2ggPSBuZXh0c2xhc2g7Ci0rICAgICpzbGFzaCA9ICdcMCc7Ci0rCi0rICAgIGlmIChsc3RhdChwYXRoLCAmc3QpICE9IDApIHsKLSsgICAgICBpZiAoZXJybm8gPT0gRUxPT1ApIHsKLSsgICAgICAgIC8qIEVMT09QIC0gdG9vIG1hbnkgc3ltbGlua3MgKi8KLSsgICAgICAgICpzbGFzaCA9ICcvJzsKLSsgICAgICAgIHJldHVybiB0cnVlOwotKyAgICAgIH0gZWxzZSBpZiAoZXJybm8gPT0gRU5PTUVNKSB7Ci0rICAgICAgICAvKiBObyBtZW1vcnkgZm9yIGxzdGF0IC0gdGVybWluYXRlICovCi0rICAgICAgICB4YWxsb2NfZGllKCk7Ci0rICAgICAgfSBlbHNlIHsKLSsgICAgICAgIC8qIGNhbm5vdCBsc3RhdCBwYXRoIC0gZ2l2ZSB1cCAqLwotKyAgICAgICAgKnNsYXNoID0gJy8nOwotKyAgICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICAgIH0KLSsgICAgfQotKwotKyAgICBpZiAoU19JU0xOSyhzdC5zdF9tb2RlKSkgewotKyAgICAgICpzbGFzaCA9ICcvJzsKLSsgICAgICByZXR1cm4gdHJ1ZTsKLSsgICAgfQotKwotKyAgICAqc2xhc2ggPSAnLyc7Ci0rICB9Ci0rCi0rICByZXR1cm4gZmFsc2U7Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gY29weWluX2ZpbGUgKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCAqZmlsZV9oZHIsIGludCBpbl9maWxlX2RlcykKLSB7Ci1AQCAtMTQ2OCw2ICsxNTEzLDIzIEBAIHByb2Nlc3NfY29weV9pbiAoKQotIAl7Ci0gCSAgLyogQ29weSB0aGUgaW5wdXQgZmlsZSBpbnRvIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlLiAgKi8KLSAKLSsgICAgICAgICAgLyogQ2FuIHdlIHdyaXRlIGZpbGVzIG92ZXIgc3ltbGlua3M/ICovCi0rICAgICAgICAgIGlmICghZXh0cmFjdF9vdmVyX3N5bWxpbmtzKQotKyAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgIGlmIChwYXRoX2NvbnRhaW5zX3N5bWxpbmsoZmlsZV9oZHIuY19uYW1lKSkKLSsgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgIC8qIHNraXAgdGhlIGZpbGUgKi8KLSsgICAgICAgICAgICAgICAgICAvKgotKyAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2FuJ3Qgd3JpdGUgb3ZlciBzeW1saW5rcy4gU2tpcHBpbmcgJXNcbiIsIGZpbGVfaGRyLmNfbmFtZSk7Ci0rICAgICAgICAgICAgICAgICAgdGFwZV90b3NzX2lucHV0IChpbl9maWxlX2RlcywgZmlsZV9oZHIuY19maWxlc2l6ZSk7Ci0rICAgICAgICAgICAgICAgICAgdGFwZV9za2lwX3BhZGRpbmcgKGluX2ZpbGVfZGVzLCBmaWxlX2hkci5jX2ZpbGVzaXplKTsKLSsgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICAgICAgICAqLwotKyAgICAgICAgICAgICAgICAgIC8qIHRlcm1pbmF0ZSAqLwotKwkgICAgICAgICAgZXJyb3IgKDEsIDAsIF8oIkNhbid0IHdyaXRlIG92ZXIgc3ltbGlua3M6ICVzXG4iKSwgZmlsZV9oZHIuY19uYW1lKTsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgIH0KLSsKLSAJICAvKiBEbyB3ZSBuZWVkIHRvIHJlbmFtZSB0aGUgZmlsZT8gKi8KLSAJICBpZiAocmVuYW1lX2ZsYWcgfHwgcmVuYW1lX2JhdGNoX2ZpbGUpCi0gCSAgICB7Ci1kaWZmIC0tZ2l0IGEvc3JjL2V4dGVybi5oIGIvc3JjL2V4dGVybi5oCi1pbmRleCBlMjdkNjYyLi5kODY0YmRlIDEwMDY0NAotLS0tIGEvc3JjL2V4dGVybi5oCi0rKysgYi9zcmMvZXh0ZXJuLmgKLUBAIC05Niw2ICs5Niw3IEBAIGV4dGVybiBjaGFyIGlucHV0X2lzX3NwZWNpYWw7Ci0gZXh0ZXJuIGNoYXIgb3V0cHV0X2lzX3NwZWNpYWw7Ci0gZXh0ZXJuIGNoYXIgaW5wdXRfaXNfc2Vla2FibGU7Ci0gZXh0ZXJuIGNoYXIgb3V0cHV0X2lzX3NlZWthYmxlOwotK2V4dGVybiBib29sIGV4dHJhY3Rfb3Zlcl9zeW1saW5rczsKLSBleHRlcm4gaW50ICgqeHN0YXQpICgpOwotIGV4dGVybiB2b2lkICgqY29weV9mdW5jdGlvbikgKCk7Ci0gZXh0ZXJuIGNoYXIgKmNoYW5nZV9kaXJlY3Rvcnlfb3B0aW9uOwotZGlmZiAtLWdpdCBhL3NyYy9nbG9iYWwuYyBiL3NyYy9nbG9iYWwuYwotaW5kZXggNTdlNTA1YS4uMzM2ZmNlNCAxMDA2NDQKLS0tLSBhL3NyYy9nbG9iYWwuYwotKysrIGIvc3JjL2dsb2JhbC5jCi1AQCAtMTg3LDYgKzE4Nyw5IEBAIGJvb2wgdG9fc3Rkb3V0X29wdGlvbiA9IGZhbHNlOwotIC8qIFRoZSBuYW1lIHRoaXMgcHJvZ3JhbSB3YXMgcnVuIHdpdGguICAqLwotIGNoYXIgKnByb2dyYW1fbmFtZTsKLSAKLSsvKiBFeHRyYWN0IGZpbGVzIG92ZXIgc3ltYm9saWMgbGlua3MgKi8KLStib29sIGV4dHJhY3Rfb3Zlcl9zeW1saW5rczsKLSsKLSAvKiBBIHBvaW50ZXIgdG8gZWl0aGVyIGxzdGF0IG9yIHN0YXQsIGRlcGVuZGluZyBvbiB3aGV0aGVyCi0gICAgZGVyZWZlcmVuY2luZyBvZiBzeW1saW5rcyBpcyBkb25lIGZvciBpbnB1dCBmaWxlcy4gICovCi0gaW50ICgqeHN0YXQpICgpOwotZGlmZiAtLWdpdCBhL3NyYy9tYWluLmMgYi9zcmMvbWFpbi5jCi1pbmRleCBhMTM4NjFmLi44N2NiMzA5IDEwMDY0NAotLS0tIGEvc3JjL21haW4uYwotKysrIGIvc3JjL21haW4uYwotQEAgLTU5LDYgKzU5LDcgQEAgZW51bSBjcGlvX29wdGlvbnMgewotICAgREVCVUdfT1BUSU9OLCAgICAgICAgICAgICAgICAgIAotICAgQkxPQ0tfU0laRV9PUFRJT04sICAgICAgICAgICAgIAotICAgVE9fU1RET1VUX09QVElPTiwKLSsgIEVYVFJBQ1RfT1ZFUl9TWU1MSU5LUywKLSAgIFJFTlVNQkVSX0lOT0RFU19PUFRJT04sCi0gICBJR05PUkVfREVWTk9fT1BUSU9OLAotICAgREVWSUNFX0lOREVQRU5ERU5UX09QVElPTgotQEAgLTI0Myw2ICsyNDQsOCBAQCBzdGF0aWMgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdGlvbnNbXSA9IHsKLSAgICBOXygiQ3JlYXRlIGxlYWRpbmcgZGlyZWN0b3JpZXMgd2hlcmUgbmVlZGVkIiksIEdSSUQrMSB9LAotICAgeyJuby1wcmVzZXJ2ZS1vd25lciIsIE5PX1BSRVNFUlZFX09XTkVSX09QVElPTiwgMCwgMCwKLSAgICBOXygiRG8gbm90IGNoYW5nZSB0aGUgb3duZXJzaGlwIG9mIHRoZSBmaWxlcyIpLCBHUklEKzEgfSwKLSsgIHsiZXh0cmFjdC1vdmVyLXN5bWxpbmtzIiwgRVhUUkFDVF9PVkVSX1NZTUxJTktTLCAwLCAwLAotKyAgIE5fKCJGb3JjZSB3cml0aW5nIG92ZXIgc3ltYm9saWMgbGlua3MiKSwgR1JJRCsxIH0sCi0gICB7InVuY29uZGl0aW9uYWwiLCAndScsIE5VTEwsIDAsCi0gICAgTl8oIlJlcGxhY2UgYWxsIGZpbGVzIHVuY29uZGl0aW9uYWxseSIpLCBHUklEKzEgfSwKLSAgIHsic3BhcnNlIiwgU1BBUlNFX09QVElPTiwgTlVMTCwgMCwKLUBAIC00MzIsNiArNDM1LDEwIEBAIGNyYyBuZXdjIG9kYyBiaW4gdXN0YXIgdGFyIChhbGwtY2FwcyBhbHNvIHJlY29nbml6ZWQpIiksIGFyZykpOwotICAgICAgIG5vX2Nob3duX2ZsYWcgPSB0cnVlOwotICAgICAgIGJyZWFrOwotIAotKyAgICBjYXNlIEVYVFJBQ1RfT1ZFUl9TWU1MSU5LUzogICAgICAgICAgICAgICAgICAgICAgICAvKiAtLWV4dHJhY3Qtb3Zlci1zeW1saW5rcyAqLwotKyAgICAgIGV4dHJhY3Rfb3Zlcl9zeW1saW5rcyA9IHRydWU7Ci0rICAgICAgYnJlYWs7Ci0rCi0gICAgIGNhc2UgJ28nOgkJLyogQ29weS1vdXQgbW9kZS4gICovCi0gICAgICAgaWYgKGNvcHlfZnVuY3Rpb24gIT0gMCkKLSAJVVNBR0VfRVJST1IgKCgwLCAwLCBfKCJNb2RlIGFscmVhZHkgZGVmaW5lZCIpKSk7Ci0tLSAKLTIuNi4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjEyLzAwMDEtRml4LXNlZ2ZhdWx0LXdpdGgtYXBwZW5kLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1GaXgtc2VnZmF1bHQtd2l0aC1hcHBlbmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjOGIzMDMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1GaXgtc2VnZmF1bHQtd2l0aC1hcHBlbmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDMyZDk1ZmUwYzkwYzU5MzUyYTBjZTMxMDJmYzk4NjZjYmZiMGY2MjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTZXJnZXkgUG96bnlha29mZiA8Z3JheUBnbnUub3JnPgotRGF0ZTogU2F0LCAxIERlYyAyMDE4IDExOjQwOjAyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBzaWdmYXVsdCB3aGVuIGFwcGVuZGluZyB0byBhcmNoaXZlCi0KLUJ1ZyByZXBvcnRlZCBieSBSb3NzIEJ1cnRvbi4gU2VlCi08aHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1jcGlvLzIwMTgtMTEvbXNnMDAwMDAuaHRtbD4KLQotKiBzcmMvdXRpbC5jOiBLZWVwIHN0YXRpYyBjb3B5IG9mIHRoZSBidWZmZXIgcG9pbnRlcjsgYWx3YXlzCi1hc3NpZ24gaXQgdG8gZmlsZV9oZHItPmNfbmFtZS4gVXNlIHgycmVhbGxvYyBmb3IgbWVtb3J5IG1hbmFnZW1lbnQuCi0tLS0KLSBzcmMvdXRpbC5jIHwgMTcgKysrKy0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy91dGlsLmMgYi9zcmMvdXRpbC5jCi1pbmRleCAxMDQ4NmRjLi40ZTQ5MTI0IDEwMDY0NAotLS0tIGEvc3JjL3V0aWwuYwotKysrIGIvc3JjL3V0aWwuYwotQEAgLTE0MTMsMjIgKzE0MTMsMTMgQEAgc2V0X2ZpbGVfdGltZXMgKGludCBmZCwKLSB2b2lkCi0gY3Bpb19zZXRfY19uYW1lIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBjaGFyICpuYW1lKQotIHsKLSsgIHN0YXRpYyBjaGFyICpidWYgPSBOVUxMOwotICAgc3RhdGljIHNpemVfdCBidWZsZW4gPSAwOwotICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAobmFtZSkgKyAxOwotIAotLSAgaWYgKGJ1ZmxlbiA9PSAwKQotLSAgICB7Ci0tICAgICAgYnVmbGVuID0gbGVuOwotLSAgICAgIGlmIChidWZsZW4gPCAzMikKLS0gICAgICAgIGJ1ZmxlbiA9IDMyOwotLSAgICAgIGZpbGVfaGRyLT5jX25hbWUgPSB4bWFsbG9jIChidWZsZW4pOwotLSAgICB9Ci0tICBlbHNlIGlmIChidWZsZW4gPCBsZW4pCi0tICAgIHsKLS0gICAgICBidWZsZW4gPSBsZW47Ci0tICAgICAgZmlsZV9oZHItPmNfbmFtZSA9IHhyZWFsbG9jIChmaWxlX2hkci0+Y19uYW1lLCBidWZsZW4pOwotLSAgICB9Ci0tCi0rICB3aGlsZSAoYnVmbGVuIDwgbGVuKQotKyAgICBidWYgPSB4MnJlYWxsb2MgKGJ1ZiwgJmJ1Zmxlbik7Ci0rICBmaWxlX2hkci0+Y19uYW1lID0gYnVmOwotICAgZmlsZV9oZHItPmNfbmFtZXNpemUgPSBsZW47Ci0gICBtZW1tb3ZlIChmaWxlX2hkci0+Y19uYW1lLCBuYW1lLCBsZW4pOwotIH0KLS0tIAotMi4xOC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjEyLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi4xMy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi4xMi8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi4xMy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW9fMi4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpb18yLjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzEzYmYwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpb18yLjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotU1VNTUFSWSA9ICJHTlUgY3BpbyBpcyBhIHByb2dyYW0gdG8gbWFuYWdlIGFyY2hpdmVzIG9mIGZpbGVzIgotREVTQ1JJUFRJT04gPSAiR05VIGNwaW8gaXMgYSB0b29sIGZvciBjcmVhdGluZyBhbmQgZXh0cmFjdGluZyBhcmNoaXZlcywgb3IgY29weWluZyBmaWxlcyBmcm9tIG9uZSBwbGFjZSB0byBcCi1hbm90aGVyLiBJdCBoYW5kbGVzIGEgbnVtYmVyIG9mIGNwaW8gZm9ybWF0cyBhcyB3ZWxsIGFzIHJlYWRpbmcgYW5kIHdyaXRpbmcgdGFyIGZpbGVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9jcGlvLyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMjdkZWZlMWU5NmMyZTFlY2Q0ZTBjOWJlODk2Nzk0OSIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2NwaW8vY3Bpby0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1DVkUtMjAxNS0xMTk3LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ1ZFLTIwMTYtMjAzNy0xLWJ5dGUtb3V0LW9mLWJvdW5kcy13cml0ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1zZWdmYXVsdC13aXRoLWFwcGVuZC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImZjMjA3NTYxYTg2YjYzODYyZWVhNGI4MzAwMzEzZTg2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA4YTM1ZTkyZGViM2M4NWQyNjlhMDA1OWEyN2Q0MTQwYTk2NjdhNjM2OTQ1OTI5OWQwOGMxN2Y3MTNhOTJlNzMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbwotCi1FWFRSQV9PRUNPTkYgKz0gIkRFRkFVTFRfUk1UX0RJUj0ke3NiaW5kaXJ9IgotCi1kb19pbnN0YWxsICgpIHsKLSAgICBhdXRvdG9vbHNfZG9faW5zdGFsbAotICAgIGlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9LwotICAgICAgICBtdiAiJHtEfSR7YmluZGlyfS9jcGlvIiAiJHtEfSR7YmFzZV9iaW5kaXJ9L2NwaW8iCi0gICAgICAgIHJtZGlyICR7RH0ke2JpbmRpcn0vCi0gICAgZmkKLQotICAgICMgQXZvaWQgY29uZmxpY3RzIHdpdGggdGhlIHZlcnNpb24gZnJvbSB0YXIKLSAgICBtdiAiJHtEfSR7bWFuZGlyfS9tYW44L3JtdC44IiAiJHtEfSR7bWFuZGlyfS9tYW44L3JtdC1jcGlvLjgiCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1ybXQiCi0KLUZJTEVTXyR7UE59LXJtdCA9ICIke3NiaW5kaXJ9L3JtdCoiCi0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImNwaW8iCi1BTFRFUk5BVElWRV8ke1BOfS1ybXQgPSAicm10IgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbY3Bpb10gPSAiJHtiYXNlX2JpbmRpcn0vY3BpbyIKLQotQUxURVJOQVRJVkVfUFJJT1JJVFlbcm10XSA9ICI1MCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtybXRdID0gIiR7c2JpbmRpcn0vcm10IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpb18yLjEzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvXzIuMTMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNlYThjNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpb18yLjEzLmJiCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiR05VIGNwaW8gaXMgYSBwcm9ncmFtIHRvIG1hbmFnZSBhcmNoaXZlcyBvZiBmaWxlcyIKK0RFU0NSSVBUSU9OID0gIkdOVSBjcGlvIGlzIGEgdG9vbCBmb3IgY3JlYXRpbmcgYW5kIGV4dHJhY3RpbmcgYXJjaGl2ZXMsIG9yIGNvcHlpbmcgZmlsZXMgZnJvbSBvbmUgcGxhY2UgdG8gXAorYW5vdGhlci4gSXQgaGFuZGxlcyBhIG51bWJlciBvZiBjcGlvIGZvcm1hdHMgYXMgd2VsbCBhcyByZWFkaW5nIGFuZCB3cml0aW5nIHRhciBmaWxlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvY3Bpby8iCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjI3ZGVmZTFlOTZjMmUxZWNkNGUwYzliZTg5Njc5NDkiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9jcGlvL2NwaW8tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzODljNTQ1MmQ2NjdjMjNiNWVjZWIyMDZmNTAwMDgxMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlODc0NzBkOWM5ODQzMTdmNjU4NTY3YzAzYmZlZmI2YjBjODI5ZmYxN2RiZjZiMGRlNDhkNzFhNGM4ZjNkYjg4IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8KKworRVhUUkFfT0VDT05GICs9ICJERUZBVUxUX1JNVF9ESVI9JHtzYmluZGlyfSIKKworZG9faW5zdGFsbCAoKSB7CisgICAgYXV0b3Rvb2xzX2RvX2luc3RhbGwKKyAgICBpZiBbICIke2Jhc2VfYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfS8KKyAgICAgICAgbXYgIiR7RH0ke2JpbmRpcn0vY3BpbyIgIiR7RH0ke2Jhc2VfYmluZGlyfS9jcGlvIgorICAgICAgICBybWRpciAke0R9JHtiaW5kaXJ9LworICAgIGZpCisKKyAgICAjIEF2b2lkIGNvbmZsaWN0cyB3aXRoIHRoZSB2ZXJzaW9uIGZyb20gdGFyCisgICAgbXYgIiR7RH0ke21hbmRpcn0vbWFuOC9ybXQuOCIgIiR7RH0ke21hbmRpcn0vbWFuOC9ybXQtY3Bpby44IgorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tcm10IgorCitGSUxFU18ke1BOfS1ybXQgPSAiJHtzYmluZGlyfS9ybXQqIgorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJjcGlvIgorQUxURVJOQVRJVkVfJHtQTn0tcm10ID0gInJtdCIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2NwaW9dID0gIiR7YmFzZV9iaW5kaXJ9L2NwaW8iCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3JtdF0gPSAiNTAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcm10XSA9ICIke3NiaW5kaXJ9L3JtdCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXzEuNS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZV8xLjUuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM1YzY2Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXzEuNS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotU1VNTUFSWSA9ICJDcm9uIGRhZW1vbiBmb3IgZXhlY3V0aW5nIHByb2dyYW1zIGF0IHNldCB0aW1lcyIKLURFU0NSSVBUSU9OID0gIkNyb25pZSBjb250YWlucyB0aGUgc3RhbmRhcmQgVU5JWCBkYWVtb24gY3JvbmQgdGhhdCBydW5zIFwKLXNwZWNpZmllZCBwcm9ncmFtcyBhdCBzY2hlZHVsZWQgdGltZXMgYW5kIHJlbGF0ZWQgdG9vbHMuIEl0IGlzIGJhc2VkIG9uIHRoZSBcCi1vcmlnaW5hbCBjcm9uIGFuZCBoYXMgc2VjdXJpdHkgYW5kIGNvbmZpZ3VyYXRpb24gZW5oYW5jZW1lbnRzIGxpa2UgdGhlIFwKLWFiaWxpdHkgdG8gdXNlIHBhbSBhbmQgU0VMaW51eC4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vY3JvbmllLWNyb25kL2Nyb25pZS8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbSIKLQotIyBJbnRlcm5ldCBTeXN0ZW1zIENvbnNvcnRpdW0gTGljZW5zZQotTElDRU5TRSA9ICJJU0MgJiBCU0QtMy1DbGF1c2UgJiBCU0QtMi1DbGF1c2UgJiBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZDJhNTkyMTcwNzYwZTEzODZjNzY5ZTEwNDNiMzcyMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvY3Jvbi5jO2VuZGxpbmU9MjA7bWQ1PWI0MjVjMzM0MjY1MDI2MTc3MTI4MzUzYTE0MjYzM2I0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9wb3Blbi5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MzE7bWQ1PWVkZDUwNzQyZDhkZWY3MTJlOTQ3MmRiYTM1MzY2OGE5IgotCi1TRUNUSU9OID0gInV0aWxzIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Nyb25pZS1jcm9uZC8ke0JQTn0vcmVsZWFzZXMvIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9jcm9uaWUtY3JvbmQvY3JvbmllL3JlbGVhc2VzL2Rvd25sb2FkL2Nyb25pZS0ke1BWfS1maW5hbC9jcm9uaWUtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2Nyb25kLmluaXQgXAotICAgICAgICAgICBmaWxlOi8vY3JvbnRhYiBcCi0gICAgICAgICAgIGZpbGU6Ly9jcm9uZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IgotCi1QQU1fU1JDX1VSSSA9ICJmaWxlOi8vY3JvbmRfcGFtX2NvbmZpZy5wYXRjaCIKLVBBTV9ERVBTID0gImxpYnBhbSBsaWJwYW0tcnVudGltZSBwYW0tcGx1Z2luLWFjY2VzcyBwYW0tcGx1Z2luLWxvZ2ludWlkIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjAyMzNiOTY5OTdlMTdhMTQyZTFmYmUwZDdjZTgyMjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWY4OTcwNTU5Y2FkNDI2MmY4ZmZkN2VjNzJhYmY2ODJkMmRjY2UwNGZkZmI4ZjIwNmE3MWQ5NjU2NmFiYTg4MiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgdXNlcmFkZCBzeXN0ZW1kCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLS13aXRoLWF1ZGl0LC0td2l0aG91dC1hdWRpdCxhdWRpdCwiCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLXBhbSwtLXdpdGhvdXQtcGFtLGxpYnBhbSwke1BBTV9ERVBTfSIKLQotSU5JVFNDUklQVF9OQU1FID0gImNyb25kIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgOTAgMiAzIDQgNSAuIHN0b3AgNjAgMCAxIDYgLiIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIGNyb250YWIiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjcm9uZC5zZXJ2aWNlIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCi0JaW5zdGFsbCAtbSAwNjQ0ICR7U30vY3JvbmQuc3lzY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9jcm9uZAotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2Nyb25kLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2Nyb25kCi0KLQkjIGluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGVzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2Nyb25kLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCi0JICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vY3JvbmQuc2VydmljZQotCi0JIyBiZWxvdyBhcmUgbmVjZXNzYXJ5IGZvciBhIGNvbXBsZXRlIGNyb24gZW52aXJvbm1lbnQKLQlpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9jcm9udGFiICR7RH0ke3N5c2NvbmZkaXJ9LwotCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZAotCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uaG91cmx5Ci0JbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseQotCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24ud2Vla2x5Ci0JbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5tb250aGx5Ci0JdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kZW55Ci0KLQkjIGJlbG93IHNldHRpbmcgaXMgbmVjZXNzYXJ5IHRvIGFsbG93IG5vcm1hbCB1c2VyIHVzaW5nIGNyb250YWIKLQotCSMgc2V0Z2lkIGZvciBjcm9udGFiIGJpbmFyeQotCWNob3duIHJvb3Q6Y3JvbnRhYiAke0R9JHtiaW5kaXJ9L2Nyb250YWIKLQljaG1vZCAyNzU1ICR7RH0ke2JpbmRpcn0vY3JvbnRhYgotCi0JIyBhbGxvdyAnY3JvbnRhYicgZ3JvdXAgd3JpdGUgdG8gL3Zhci9zcG9vbC9jcm9uCi0JY2hvd24gcm9vdDpjcm9udGFiICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KLQljaG1vZCA3NzAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvY3JvbgotCi0JY2htb2QgNjAwICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb250YWIKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY3JvbioiCi1DT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY3JvbnRhYiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Nyb25pZS9jcm9uaWVfMS41LjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXzEuNS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkZWY0YTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXzEuNS41LmJiCkBAIC0wLDAgKzEsODQgQEAKK1NVTU1BUlkgPSAiQ3JvbiBkYWVtb24gZm9yIGV4ZWN1dGluZyBwcm9ncmFtcyBhdCBzZXQgdGltZXMiCitERVNDUklQVElPTiA9ICJDcm9uaWUgY29udGFpbnMgdGhlIHN0YW5kYXJkIFVOSVggZGFlbW9uIGNyb25kIHRoYXQgcnVucyBcCitzcGVjaWZpZWQgcHJvZ3JhbXMgYXQgc2NoZWR1bGVkIHRpbWVzIGFuZCByZWxhdGVkIHRvb2xzLiBJdCBpcyBiYXNlZCBvbiB0aGUgXAorb3JpZ2luYWwgY3JvbiBhbmQgaGFzIHNlY3VyaXR5IGFuZCBjb25maWd1cmF0aW9uIGVuaGFuY2VtZW50cyBsaWtlIHRoZSBcCithYmlsaXR5IHRvIHVzZSBwYW0gYW5kIFNFTGludXguIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Nyb25pZS1jcm9uZC9jcm9uaWUvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20iCisKKyMgSW50ZXJuZXQgU3lzdGVtcyBDb25zb3J0aXVtIExpY2Vuc2UKK0xJQ0VOU0UgPSAiSVNDICYgQlNELTMtQ2xhdXNlICYgQlNELTItQ2xhdXNlICYgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGQyYTU5MjE3MDc2MGUxMzg2Yzc2OWUxMDQzYjM3MjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2Nyb24uYztlbmRsaW5lPTIwO21kNT1iNDI1YzMzNDI2NTAyNjE3NzEyODM1M2ExNDI2MzNiNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvcG9wZW4uYztiZWdpbmxpbmU9MztlbmRsaW5lPTMxO21kNT1lZGQ1MDc0MmQ4ZGVmNzEyZTk0NzJkYmEzNTM2NjhhOSIKKworU0VDVElPTiA9ICJ1dGlscyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9jcm9uaWUtY3JvbmQvJHtCUE59L3JlbGVhc2VzLyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vY3JvbmllLWNyb25kL2Nyb25pZS9yZWxlYXNlcy9kb3dubG9hZC9jcm9uaWUtJHtQVn0vY3JvbmllLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9jcm9uZC5pbml0IFwKKyAgICAgICAgICAgZmlsZTovL2Nyb250YWIgXAorICAgICAgICAgICBmaWxlOi8vY3JvbmQuc2VydmljZSBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSIKKworUEFNX1NSQ19VUkkgPSAiZmlsZTovL2Nyb25kX3BhbV9jb25maWcucGF0Y2giCitQQU1fREVQUyA9ICJsaWJwYW0gbGlicGFtLXJ1bnRpbWUgcGFtLXBsdWdpbi1hY2Nlc3MgcGFtLXBsdWdpbi1sb2dpbnVpZCIKKworU1JDX1VSSVttZDVzdW1dID0gIjM1MWEzN2QwYjViZDAxNDQ4MTY3MjRiNDQ4Mjc0N2FkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJlMzRjNzk1MDVlNTU0NDMyMzI4MTg1NDc0NGI5OTU1ZmYxNmIxNjBlZTU2OWY5ZGY3YzBkZGRhZTU3MjBlYWMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHVzZXJhZGQgc3lzdGVtZAorCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbYXVkaXRdID0gIi0td2l0aC1hdWRpdCwtLXdpdGhvdXQtYXVkaXQsYXVkaXQsIgorUEFDS0FHRUNPTkZJR1twYW1dID0gIi0td2l0aC1wYW0sLS13aXRob3V0LXBhbSxsaWJwYW0sJHtQQU1fREVQU30iCitQQUNLQUdFQ09ORklHW2FuYWNyb25dID0gIi0tZW5hYmxlLWFuYWNyb24sLS1kaXNhYmxlLWFuYWNyb24sYW5hY3JvbiIKKworSU5JVFNDUklQVF9OQU1FID0gImNyb25kIgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgOTAgMiAzIDQgNSAuIHN0b3AgNjAgMCAxIDYgLiIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIGNyb250YWIiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjcm9uZC5zZXJ2aWNlIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCisJaW5zdGFsbCAtbSAwNjQ0ICR7U30vY3JvbmQuc3lzY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9jcm9uZAorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2Nyb25kLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2Nyb25kCisKKwkjIGluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGVzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2Nyb25kLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCisJICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vY3JvbmQuc2VydmljZQorCisJIyBiZWxvdyBhcmUgbmVjZXNzYXJ5IGZvciBhIGNvbXBsZXRlIGNyb24gZW52aXJvbm1lbnQKKwlpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9jcm9udGFiICR7RH0ke3N5c2NvbmZkaXJ9LworCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZAorCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uaG91cmx5CisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseQorCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24ud2Vla2x5CisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5tb250aGx5CisJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kZW55CisKKwkjIGJlbG93IHNldHRpbmcgaXMgbmVjZXNzYXJ5IHRvIGFsbG93IG5vcm1hbCB1c2VyIHVzaW5nIGNyb250YWIKKworCSMgc2V0Z2lkIGZvciBjcm9udGFiIGJpbmFyeQorCWNob3duIHJvb3Q6Y3JvbnRhYiAke0R9JHtiaW5kaXJ9L2Nyb250YWIKKwljaG1vZCAyNzU1ICR7RH0ke2JpbmRpcn0vY3JvbnRhYgorCisJIyBhbGxvdyAnY3JvbnRhYicgZ3JvdXAgd3JpdGUgdG8gL3Zhci9zcG9vbC9jcm9uCisJY2hvd24gcm9vdDpjcm9udGFiICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KKwljaG1vZCA3NzAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvY3JvbgorCisJY2htb2QgNjAwICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb250YWIKK30KKworRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY3JvbioiCitDT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY3JvbnRhYiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMuaW5jCmluZGV4IDIxNDljYmUuLmUzODlkOGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLmluYwpAQCAtNSwxNCArNSwxNiBAQAogZG9jdW1lbnQgdHlwZXMuIgogSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuY3Vwcy5vcmcvIgogU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKIERFUEVORFMgPSAiZ251dGxzIGxpYnBuZyBqcGVnIGRidXMgemxpYiBsaWJ1c2IxIgogCiBTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQfS1zb3VyY2UudGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3VzZV9lY2hvX29ubHlfaW5faW5pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2N1cHNfc2VydmVyYmluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2N1cHMtYXZvaWQtaW5zdGFsbC1maWxlLWNvbmZsaWN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXVzZS1lY2hvLW9ubHktaW4taW5pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtY3Vwc18xLjQuNi5iYi1GaXgtYnVpbGQtb24tcHBjNjQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1jdXBzLWZpeC1tdWx0aWxpYi1pbnN0YWxsLWZpbGUtY29uZmxpY3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy45OV9jdXBzIFwKKyAgICAgICAgICAgZmlsZTovL2N1cHMtdm9sYXRpbGVzLmNvbmYgXAogICAgICAgICAgICAiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcyIKQEAgLTIyLDcgKzI0LDcgQEAKIAogQ0xFQU5CUk9LRU4gPSAiMSIKIAotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGJpbmNvbmZpZyB1c2VyYWRkIHN5c3RlbWQgcGtnY29uZmlnCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgYmluY29uZmlnIHVzZXJhZGQgc3lzdGVtZCBwa2djb25maWcgbXVsdGlsaWJfc2NyaXB0CiAKIFVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCiBHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSBscGFkbWluIgpAQCAtNDUsMTAgKzQ3LDYgQEAKICAgICAgICAgICAgICAgIC0tZW5hYmxlLWRlYnVnIFwKICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1yZWxybyBcCiAgICAgICAgICAgICAgICAtLWVuYWJsZS1saWJ1c2IgXAotICAgICAgICAgICAgICAgLS13aXRob3V0LXBocCBcCi0gICAgICAgICAgICAgICAtLXdpdGhvdXQtcGVybCBcCi0gICAgICAgICAgICAgICAtLXdpdGhvdXQtcHl0aG9uIFwKLSAgICAgICAgICAgICAgIC0td2l0aG91dC1qYXZhIFwKICAgICAgICAgICAgICAgIERTT0ZMQUdTPScke0xERkxBR1N9JyBcCiAgICAgICAgICAgICAgICAiCiAKQEAgLTcxLDYgKzY5LDcgQEAKIAogCSMgUmVtb3ZlIC92YXIvcnVuIGZyb20gcGFja2FnZSBhcyBjdXBzZCB3aWxsIHBvcHVsYXRlIGl0IG9uIHN0YXJ0dXAKIAlybSAtZnIgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L3J1bgorCXJtIC1mciAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbG9nCiAJcm1kaXIgJHtEfS8ke2xpYmV4ZWNkaXJ9LyR7QlBOfS9kcml2ZXIKIAogCSMgRml4IHRoZSBwYW0gY29uZmlndXJhdGlvbiBmaWxlIHBlcm1pc3Npb25zCkBAIC04MiwxOCArODEsMjAgQEAKIAlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdmluaXQnLCdmYWxzZScsJ3RydWUnLGQpfTsgdGhlbgogCSAgICBybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwogCSAgICBybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0vcmMqCisJICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorCSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9jdXBzLXZvbGF0aWxlcy5jb25mIFwKKwkJICAgICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvY3Vwcy5jb25mCisJZWxzZQorCSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisJICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy45OV9jdXBzIFwKKwkJICAgICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X2N1cHMKIAlmaQogfQogCiBQQUNLQUdFUyA9KyAiJHtQTn0tbGliICR7UE59LWxpYmltYWdlIgogCiBSREVQRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICdwcm9jcHMnLCAnJywgZCl9IgotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9jdXBzL2JhY2tlbmQgXAotCQkke2xpYmRpcn0vY3Vwcy9jZ2ktYmluIFwKLQkJJHtsaWJkaXJ9L2N1cHMvZmlsdGVyIFwKLQkJJHtsaWJkaXJ9L2N1cHMvbW9uaXRvciBcCi0JCSR7bGliZGlyfS9jdXBzL25vdGlmaWVyIFwKLQkJJHtsaWJkaXJ9L2N1cHMvZGFlbW9uIFwKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmV4ZWNkaXJ9L2N1cHMvIFwKIAkgICAgICAgIgogCiBGSUxFU18ke1BOfS1saWIgPSAiJHtsaWJkaXJ9L2xpYmN1cHMuc28uKiIKQEAgLTEwOSw3ICsxMTAsOSBAQAogICAgICAgICAgICAgICAgIgogQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2N1cHMvY3Vwc2QuY29uZiIKIAorTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfS1kZXY6JHtiaW5kaXJ9L2N1cHMtY29uZmlnIgorCiBTWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gImN1cHNfc3lzcm9vdF9wcmVwcm9jZXNzIgogY3Vwc19zeXNyb290X3ByZXByb2Nlc3MgKCkgewotCXNlZCAtaSAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L2N1cHMtY29uZmlnIC1lICdzOmN1cHNfZGF0YWRpcj0uKjpjdXBzX2RhdGFkaXI9JHtkYXRhZGlyfS9jdXBzOicgLWUgJ3M6Y3Vwc19zZXJ2ZXJiaW49Lio6Y3Vwc19zZXJ2ZXJiaW49JHtsaWJkaXJ9L2N1cHM6JworCXNlZCAtaSAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L2N1cHMtY29uZmlnIC1lICdzOmN1cHNfZGF0YWRpcj0uKjpjdXBzX2RhdGFkaXI9JHtkYXRhZGlyfS9jdXBzOicgLWUgJ3M6Y3Vwc19zZXJ2ZXJiaW49Lio6Y3Vwc19zZXJ2ZXJiaW49JHtsaWJleGVjZGlyfS9jdXBzOicKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAxLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDEtZG9uLXQtdHJ5LXRvLXJ1bi1nZW5lcmF0ZWQtYmluYXJpZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2YTY5ZjIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDEtZG9uLXQtdHJ5LXRvLXJ1bi1nZW5lcmF0ZWQtYmluYXJpZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIDFmYjA3MTYyYTllZDE4N2NjY2YwNmUzNGM5YmY4NDFkMTVjNmU2NGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotRGF0ZTogU3VuLCAzMCBKYW4gMjAxMSAxNjozNzoyNyArMDEwMAotU3ViamVjdDogW1BBVENIXSBkb24ndCB0cnkgdG8gcnVuIGdlbmVyYXRlZCBiaW5hcmllcwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotCi0tLS0KLSBwcGRjL01ha2VmaWxlIHwgMzIgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9wcGRjL01ha2VmaWxlIGIvcHBkYy9NYWtlZmlsZQotaW5kZXggZTU2Mzk4OC4uOTczZGQzZiAxMDA2NDQKLS0tLSBhL3BwZGMvTWFrZWZpbGUKLSsrKyBiL3BwZGMvTWFrZWZpbGUKLUBAIC0xODksOCArMTg5LDggQEAgZ2Vuc3RyaW5nczoJCWdlbnN0cmluZ3MubyBsaWJjdXBzcHBkYy5hIC4uL2N1cHMvJChMSUJDVVBTU1RBVElDKSBcCi0gCSQoTERfQ1hYKSAkKEFSQ0hGTEFHUykgJChMREZMQUdTKSAtbyBnZW5zdHJpbmdzIGdlbnN0cmluZ3MubyBcCi0gCQlsaWJjdXBzcHBkYy5hIC4uL2N1cHMvJChMSUJDVVBTU1RBVElDKSAkKExJQkdTU0FQSSkgJChTU0xMSUJTKSBcCi0gCQkkKEROU1NETElCUykgJChDT01NT05MSUJTKSAkKExJQlopCi0tCWVjaG8gR2VuZXJhdGluZyBsb2NhbGl6YXRpb24gc3RyaW5ncy4uLgotLQkuL2dlbnN0cmluZ3MgPnNhbXBsZS5jCi0rIwllY2hvIEdlbmVyYXRpbmcgbG9jYWxpemF0aW9uIHN0cmluZ3MuLi4KLSsjCS4vZ2Vuc3RyaW5ncyA+c2FtcGxlLmMKLSAKLSAKLSAjCi1AQCAtMjA5LDkgKzIwOSw5IEBAIHBwZGMtc3RhdGljOgkJcHBkYy5vIGxpYmN1cHNwcGRjLmEgLi4vY3Vwcy8kKExJQkNVUFNTVEFUSUMpIGZvby5kcnYgZm9vLWZyLnBvCi0gCQkuLi9jdXBzLyQoTElCQ1VQU1NUQVRJQykgJChMSUJHU1NBUEkpICQoU1NMTElCUykgJChETlNTRExJQlMpIFwKLSAJCSQoQ09NTU9OTElCUykgJChMSUJaKQotIAkkKENPREVfU0lHTikgLXMgIiQoQ09ERV9TSUdOX0lERU5USVRZKSIgJEAKLS0JZWNobyBUZXN0aW5nIFBQRCBjb21waWxlci4uLgotLQkuL3BwZGMtc3RhdGljIC1sIGVuLGZyIC1JIC4uL2RhdGEgZm9vLmRydgotLQkuL3BwZGMtc3RhdGljIC1sIGVuLGZyIC16IC1JIC4uL2RhdGEgZm9vLmRydgotKyMJZWNobyBUZXN0aW5nIFBQRCBjb21waWxlci4uLgotKyMJLi9wcGRjLXN0YXRpYyAtbCBlbixmciAtSSAuLi9kYXRhIGZvby5kcnYKLSsjCS4vcHBkYy1zdGF0aWMgLWwgZW4sZnIgLXogLUkgLi4vZGF0YSBmb28uZHJ2Ci0gCi0gCi0gIwotQEAgLTI0MCwxNyArMjQwLDE3IEBAIHBwZGktc3RhdGljOgkJcHBkYy1zdGF0aWMgcHBkaS5vIGxpYmN1cHNwcGRjLmEgIC4uL2N1cHMvJChMSUJDVVBTU1RBVElDKQotIAkJLi4vY3Vwcy8kKExJQkNVUFNTVEFUSUMpICQoTElCR1NTQVBJKSAkKFNTTExJQlMpICQoRE5TU0RMSUJTKSBcCi0gCQkkKENPTU1PTkxJQlMpICQoTElCWikKLSAJJChDT0RFX1NJR04pIC1zICIkKENPREVfU0lHTl9JREVOVElUWSkiICRACi0tCWVjaG8gVGVzdGluZyBQUEQgaW1wb3J0ZXIuLi4KLS0JJChSTSkgLXIgcHBkIHBwZDIgc2FtcGxlLWltcG9ydC5kcnYKLS0JLi9wcGRjLXN0YXRpYyAtbCBlbiAtSSAuLi9kYXRhIHNhbXBsZS5kcnYKLS0JLi9wcGRpLXN0YXRpYyAtSSAuLi9kYXRhIC1vIHNhbXBsZS1pbXBvcnQuZHJ2IHBwZC8qCi0tCS4vcHBkYy1zdGF0aWMgLWwgZW4gLUkgLi4vZGF0YSAtZCBwcGQyIHNhbXBsZS1pbXBvcnQuZHJ2Ci0tCWlmIGRpZmYgLXIgcHBkIHBwZDIgPi9kZXYvbnVsbDsgdGhlbiBcCi0tCQllY2hvIFBQRCBpbXBvcnQgT0s7IFwKLS0JZWxzZSBcCi0tCQllY2hvIFBQRCBpbXBvcnQgRkFJTEVEOyBcCi0tCQlleGl0IDE7IFwKLS0JZmkKLSsjCWVjaG8gVGVzdGluZyBQUEQgaW1wb3J0ZXIuLi4KLSsjCSQoUk0pIC1yIHBwZCBwcGQyIHNhbXBsZS1pbXBvcnQuZHJ2Ci0rIwkuL3BwZGMtc3RhdGljIC1sIGVuIC1JIC4uL2RhdGEgc2FtcGxlLmRydgotKyMJLi9wcGRpLXN0YXRpYyAtSSAuLi9kYXRhIC1vIHNhbXBsZS1pbXBvcnQuZHJ2IHBwZC8qCi0rIwkuL3BwZGMtc3RhdGljIC1sIGVuIC1JIC4uL2RhdGEgLWQgcHBkMiBzYW1wbGUtaW1wb3J0LmRydgotKyMJaWYgZGlmZiAtciBwcGQgcHBkMiA+L2Rldi9udWxsOyB0aGVuIFwKLSsjCQllY2hvIFBQRCBpbXBvcnQgT0s7IFwKLSsjCWVsc2UgXAotKyMJCWVjaG8gUFBEIGltcG9ydCBGQUlMRUQ7IFwKLSsjCQlleGl0IDE7IFwKLSsjCWZpCi0gCi0gCi0gIwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDEtdXNlLWVjaG8tb25seS1pbi1pbml0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDEtdXNlLWVjaG8tb25seS1pbi1pbml0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwYmJhZDAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwMS11c2UtZWNoby1vbmx5LWluLWluaXQucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBhM2Y0ZDhiYTk3ZjQ2NjlhOTU5NDNhN2U2NWViNjFhYTQ0Y2U3OTk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgorRGF0ZTogVGh1LCAxMyBEZWMgMjAxMiAxOTowMzo1MiAtMDgwMAorU3ViamVjdDogW1BBVENIIDEvNF0gdXNlIGVjaG8gb25seSBpbiBpbml0CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHNjaGVkdWxlci9jdXBzLnNoLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc2NoZWR1bGVyL2N1cHMuc2guaW4gYi9zY2hlZHVsZXIvY3Vwcy5zaC5pbgoraW5kZXggODlhYzM2ZC4uNjYxOGEwZiAxMDA2NDQKKy0tLSBhL3NjaGVkdWxlci9jdXBzLnNoLmluCisrKysgYi9zY2hlZHVsZXIvY3Vwcy5zaC5pbgorQEAgLTUwLDcgKzUwLDcgQEAgY2FzZSAiYHVuYW1lYCIgaW4KKyAJCUVDSE9fRVJST1I9OgorIAkJOzsKKyAKKy0JTGludXgqKQorKwlEaXNhYmxlTGludXgqKQorIAkJSVNfT049L2Jpbi90cnVlCisgCQlpZiB0ZXN0IC1mIC9ldGMvaW5pdC5kL2Z1bmN0aW9uczsgdGhlbgorIAkJCS4gL2V0Yy9pbml0LmQvZnVuY3Rpb25zCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwMi1kb24tdC10cnktdG8tcnVuLWdlbmVyYXRlZC1iaW5hcmllcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAyLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhMjQ4ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwMi1kb24tdC10cnktdG8tcnVuLWdlbmVyYXRlZC1iaW5hcmllcy5wYXRjaApAQCAtMCwwICsxLDczIEBACitGcm9tIDNlOWE5NjVkY2Q2NWFiMmQ0MGI3NTNiNmY3OTJhMWE0NTU5MTgyYWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgorRGF0ZTogU3VuLCAzMCBKYW4gMjAxMSAxNjozNzoyNyArMDEwMAorU3ViamVjdDogW1BBVENIIDIvNF0gZG9uJ3QgdHJ5IHRvIHJ1biBnZW5lcmF0ZWQgYmluYXJpZXMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KKworLS0tCisgcHBkYy9NYWtlZmlsZSB8IDMyICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcHBkYy9NYWtlZmlsZSBiL3BwZGMvTWFrZWZpbGUKK2luZGV4IDMyZTJlMGIuLmYxNDc4ZDQgMTAwNjQ0CistLS0gYS9wcGRjL01ha2VmaWxlCisrKysgYi9wcGRjL01ha2VmaWxlCitAQCAtMTg2LDggKzE4Niw4IEBAIGdlbnN0cmluZ3M6CQlnZW5zdHJpbmdzLm8gbGliY3Vwc3BwZGMuYSAuLi9jdXBzLyQoTElCQ1VQU1NUQVRJQykgXAorIAkkKExEX0NYWCkgJChBUkNIRkxBR1MpICQoQUxMX0xERkxBR1MpIC1vIGdlbnN0cmluZ3MgZ2Vuc3RyaW5ncy5vIFwKKyAJCWxpYmN1cHNwcGRjLmEgJChMSU5LQ1VQU1NUQVRJQykKKyAJJChDT0RFX1NJR04pIC1zICIkKENPREVfU0lHTl9JREVOVElUWSkiICRACistCWVjaG8gR2VuZXJhdGluZyBsb2NhbGl6YXRpb24gc3RyaW5ncy4uLgorLQkuL2dlbnN0cmluZ3MgPnNhbXBsZS5jCisrIwllY2hvIEdlbmVyYXRpbmcgbG9jYWxpemF0aW9uIHN0cmluZ3MuLi4KKysjCS4vZ2Vuc3RyaW5ncyA+c2FtcGxlLmMKKyAKKyAKKyAjCitAQCAtMjA1LDkgKzIwNSw5IEBAIHBwZGMtc3RhdGljOgkJcHBkYy5vIGxpYmN1cHNwcGRjLmEgLi4vY3Vwcy8kKExJQkNVUFNTVEFUSUMpIGZvby5kcnYgZm9vLWZyLnBvCisgCSQoTERfQ1hYKSAkKEFSQ0hGTEFHUykgJChBTExfTERGTEFHUykgLW8gcHBkYy1zdGF0aWMgcHBkYy5vIGxpYmN1cHNwcGRjLmEgXAorIAkJJChMSU5LQ1VQU1NUQVRJQykKKyAJJChDT0RFX1NJR04pIC1zICIkKENPREVfU0lHTl9JREVOVElUWSkiICRACistCWVjaG8gVGVzdGluZyBQUEQgY29tcGlsZXIuLi4KKy0JLi9wcGRjLXN0YXRpYyAtbCBlbixmciAtSSAuLi9kYXRhIGZvby5kcnYKKy0JLi9wcGRjLXN0YXRpYyAtbCBlbixmciAteiAtSSAuLi9kYXRhIGZvby5kcnYKKysjCWVjaG8gVGVzdGluZyBQUEQgY29tcGlsZXIuLi4KKysjCS4vcHBkYy1zdGF0aWMgLWwgZW4sZnIgLUkgLi4vZGF0YSBmb28uZHJ2CisrIwkuL3BwZGMtc3RhdGljIC1sIGVuLGZyIC16IC1JIC4uL2RhdGEgZm9vLmRydgorIAorIAorICMKK0BAIC0yMzUsMTcgKzIzNSwxNyBAQCBwcGRpLXN0YXRpYzoJCXBwZGMtc3RhdGljIHBwZGkubyBsaWJjdXBzcHBkYy5hIC4uL2N1cHMvJChMSUJDVVBTU1RBVElDKQorIAkkKExEX0NYWCkgJChBUkNIRkxBR1MpICQoQUxMX0xERkxBR1MpIC1vIHBwZGktc3RhdGljIHBwZGkubyBsaWJjdXBzcHBkYy5hIFwKKyAJCSQoTElOS0NVUFNTVEFUSUMpCisgCSQoQ09ERV9TSUdOKSAtcyAiJChDT0RFX1NJR05fSURFTlRJVFkpIiAkQAorLQllY2hvIFRlc3RpbmcgUFBEIGltcG9ydGVyLi4uCistCSQoUk0pIC1yIHBwZCBwcGQyIHNhbXBsZS1pbXBvcnQuZHJ2CistCS4vcHBkYy1zdGF0aWMgLWwgZW4gLUkgLi4vZGF0YSBzYW1wbGUuZHJ2CistCS4vcHBkaS1zdGF0aWMgLUkgLi4vZGF0YSAtbyBzYW1wbGUtaW1wb3J0LmRydiBwcGQvKgorLQkuL3BwZGMtc3RhdGljIC1sIGVuIC1JIC4uL2RhdGEgLWQgcHBkMiBzYW1wbGUtaW1wb3J0LmRydgorLQlpZiBkaWZmIC1yIHBwZCBwcGQyID4vZGV2L251bGw7IHRoZW4gXAorLQkJZWNobyBQUEQgaW1wb3J0IE9LOyBcCistCWVsc2UgXAorLQkJZWNobyBQUEQgaW1wb3J0IEZBSUxFRDsgXAorLQkJZXhpdCAxOyBcCistCWZpCisrIwllY2hvIFRlc3RpbmcgUFBEIGltcG9ydGVyLi4uCisrIwkkKFJNKSAtciBwcGQgcHBkMiBzYW1wbGUtaW1wb3J0LmRydgorKyMJLi9wcGRjLXN0YXRpYyAtbCBlbiAtSSAuLi9kYXRhIHNhbXBsZS5kcnYKKysjCS4vcHBkaS1zdGF0aWMgLUkgLi4vZGF0YSAtbyBzYW1wbGUtaW1wb3J0LmRydiBwcGQvKgorKyMJLi9wcGRjLXN0YXRpYyAtbCBlbiAtSSAuLi9kYXRhIC1kIHBwZDIgc2FtcGxlLWltcG9ydC5kcnYKKysjCWlmIGRpZmYgLXIgcHBkIHBwZDIgPi9kZXYvbnVsbDsgdGhlbiBcCisrIwkJZWNobyBQUEQgaW1wb3J0IE9LOyBcCisrIwllbHNlIFwKKysjCQllY2hvIFBQRCBpbXBvcnQgRkFJTEVEOyBcCisrIwkJZXhpdCAxOyBcCisrIwlmaQorIAorIAorICMKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAzLWN1cHNfMS40LjYuYmItRml4LWJ1aWxkLW9uLXBwYzY0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDMtY3Vwc18xLjQuNi5iYi1GaXgtYnVpbGQtb24tcHBjNjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ4YzdhOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAzLWN1cHNfMS40LjYuYmItRml4LWJ1aWxkLW9uLXBwYzY0LnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gNjZjMjA3OWFlOTEzODllZTBmOWQ3MDRiZjBkMmNjY2Q1M2IyYzYwMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDIyIEp1bCAyMDEyIDE2OjU0OjE3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMy80XSBjdXBzXzEuNC42LmJiOiBGaXggYnVpbGQgb24gcHBjNjQKKworTWFrZSBDVVBTX1NFUlZFUkJJTiByZWxhdGl2ZSB0byBsaWJkaXIgb3RoZXJ3aXNlIG9uIDY0Yml0IGFyY2hlcworZS5nLiBwcGM2NCB3aGVyZSBiYXNlIGxpYmRpciBpcyBsaWI2NCB0aGlzIGRvZXMgbm90IGdvIHdlbGwKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlnIHNwZWNpZmljXQorCitVcGRhdGUgb24gMjAxOTA5MDQ6CitSZWRlZmluZSBDVVBTX1NFUlZFUkJJTiB0byAiJGxpYmV4ZWNkaXIvY3VwcyIgd2hpY2ggc29sdmVzIGZpbGUgY29uZmxpY3Rpb24KK3doZW4gbXVsdGlsaWIgaXMgZW5hYmxlZC4KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKKy0tLQorIGNvbmZpZy1zY3JpcHRzL2N1cHMtZGlyZWN0b3JpZXMubTQgfCAyICstCisgY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZy1zY3JpcHRzL2N1cHMtZGlyZWN0b3JpZXMubTQgYi9jb25maWctc2NyaXB0cy9jdXBzLWRpcmVjdG9yaWVzLm00CitpbmRleCBiNzQwODNhLi45YTVhYmIyIDEwMDY0NAorLS0tIGEvY29uZmlnLXNjcmlwdHMvY3Vwcy1kaXJlY3Rvcmllcy5tNAorKysrIGIvY29uZmlnLXNjcmlwdHMvY3Vwcy1kaXJlY3Rvcmllcy5tNAorQEAgLTI3MCw3ICsyNzAsNyBAQCBjYXNlICIkaG9zdF9vc19uYW1lIiBpbgorIAkqKQorIAkJIyBBbGwgb3RoZXJzCisgCQlJTlNUQUxMX1NZU1Y9Imluc3RhbGwtc3lzdiIKKy0JCUNVUFNfU0VSVkVSQklOPSIkZXhlY19wcmVmaXgvbGliL2N1cHMiCisrCQlDVVBTX1NFUlZFUkJJTj0iJGxpYmV4ZWNkaXIvY3VwcyIKKyAJCTs7CisgZXNhYworIAorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggZDNkZjE0NS4uYmM2OGE2YyAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtNjQyMCw3ICs2NDIwLDcgQEAgY2FzZSAiJGhvc3Rfb3NfbmFtZSIgaW4KKyAJKikKKyAJCSMgQWxsIG90aGVycworIAkJSU5TVEFMTF9TWVNWPSJpbnN0YWxsLXN5c3YiCistCQlDVVBTX1NFUlZFUkJJTj0iJGV4ZWNfcHJlZml4L2xpYi9jdXBzIgorKwkJQ1VQU19TRVJWRVJCSU49IiRsaWJleGVjZGlyL2N1cHMiCisgCQk7OworIGVzYWMKKyAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDA0LWN1cHMtZml4LW11bHRpbGliLWluc3RhbGwtZmlsZS1jb25mbGljdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwNC1jdXBzLWZpeC1tdWx0aWxpYi1pbnN0YWxsLWZpbGUtY29uZmxpY3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjOTI2MDMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwNC1jdXBzLWZpeC1tdWx0aWxpYi1pbnN0YWxsLWZpbGUtY29uZmxpY3RzLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gN2RiZGExODg3YWExOWFiNzIwYWZmMjIzMTJmNGNhZmYyZDU3NWY2MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAzIE9jdCAyMDE4IDAwOjI3OjExICswODAwCitTdWJqZWN0OiBbUEFUQ0ggNC80XSBjdXBzOiBmaXggbXVsdGlsaWIgaW5zdGFsbCBmaWxlIGNvbmZsaWN0cworCitAQ1VQU19TRVJWRVJCSU5AIGlzICR7bGliZGlyfSByZWxhdGVkIHRoYXQgY2F1c2VzIG11bHRpbGliIGluc3RhbGwgZmlsZQorY29uZmxpY3QuIFJlbW92ZSBAQ1VQU19TRVJWRVJCSU5AIGZyb20gdGhlIGNvbW1lbnQgbGluZSBvZiBjdXBzLWZpbGVzLmNvbmYgdG8KK2F2b2lkIHRoZSBjb25mbGljdC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKKy0tLQorIGNvbmYvY3Vwcy1maWxlcy5jb25mLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZi9jdXBzLWZpbGVzLmNvbmYuaW4gYi9jb25mL2N1cHMtZmlsZXMuY29uZi5pbgoraW5kZXggNGE3OGJhNi4uMDNjNjU4MiAxMDA2NDQKKy0tLSBhL2NvbmYvY3Vwcy1maWxlcy5jb25mLmluCisrKysgYi9jb25mL2N1cHMtZmlsZXMuY29uZi5pbgorQEAgLTczLDcgKzczLDcgQEAgUGFnZUxvZyBAQ1VQU19MT0dESVJAL3BhZ2VfbG9nCisgI1JlcXVlc3RSb290IEBDVVBTX1JFUVVFU1RTQAorIAorICMgTG9jYXRpb24gb2YgaGVscGVyIHByb2dyYW1zLi4uCistI1NlcnZlckJpbiBAQ1VQU19TRVJWRVJCSU5ACisrI1NlcnZlckJpbgorIAorICMgU1NML1RMUyBrZXljaGFpbiBmb3IgdGhlIHNjaGVkdWxlci4uLgorICNTZXJ2ZXJLZXljaGFpbiBAQ1VQU19TRVJWRVJLRVlDSEFJTkAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy9jdXBzLWF2b2lkLWluc3RhbGwtZmlsZS1jb25mbGljdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwcy1hdm9pZC1pbnN0YWxsLWZpbGUtY29uZmxpY3RzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODg4NWZhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy9jdXBzLWF2b2lkLWluc3RhbGwtZmlsZS1jb25mbGljdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1AQ1VQU19TRVJWRVJCSU5AIGlzICR7bGliZGlyfSByZWxhdGVkIHRoYXQgY2F1c2VzIG11bHRpbGliIGluc3RhbGwgZmlsZQotY29uZmxpY3QuIFJlbW92ZSBAQ1VQU19TRVJWRVJCSU5AIGZyb20gdGhlIGNvbW1lbnQgbGluZSBvZiBjdXBzLWZpbGVzLmNvbmYgdG8KLWF2b2lkIHRoZSBjb25mbGljdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9jb25mL2N1cHMtZmlsZXMuY29uZi5pbiBiL2NvbmYvY3Vwcy1maWxlcy5jb25mLmluCi1pbmRleCA0YTc4YmE2Li4wM2M2NTgyIDEwMDY0NAotLS0tIGEvY29uZi9jdXBzLWZpbGVzLmNvbmYuaW4KLSsrKyBiL2NvbmYvY3Vwcy1maWxlcy5jb25mLmluCi1AQCAtNzMsNyArNzMsNyBAQCBQYWdlTG9nIEBDVVBTX0xPR0RJUkAvcGFnZV9sb2cKLSAjUmVxdWVzdFJvb3QgQENVUFNfUkVRVUVTVFNACi0gCi0gIyBMb2NhdGlvbiBvZiBoZWxwZXIgcHJvZ3JhbXMuLi4KLS0jU2VydmVyQmluIEBDVVBTX1NFUlZFUkJJTkAKLSsjU2VydmVyQmluCi0gCi0gIyBTU0wvVExTIGtleWNoYWluIGZvciB0aGUgc2NoZWR1bGVyLi4uCi0gI1NlcnZlcktleWNoYWluIEBDVVBTX1NFUlZFUktFWUNIQUlOQApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHMtdm9sYXRpbGVzLmNvbmYgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwcy12b2xhdGlsZXMuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWRlNzhlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHMtdm9sYXRpbGVzLmNvbmYKQEAgLTAsMCArMSBAQAorZCAgL3Zhci9sb2cvY3VwcyAwNzU1IHJvb3Qgcm9vdCAtCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwc19zZXJ2ZXJiaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwc19zZXJ2ZXJiaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1YzZhZjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHNfc2VydmVyYmluLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotTWFrZSBDVVBTX1NFUlZFUkJJTiByZWxhdGl2ZSB0byBsaWJkaXIgb3RoZXJ3aXNlIG9uIDY0Yml0IGFyY2hlcwotZS5nLiBwcGM2NCB3aGVyZSBiYXNlIGxpYmRpciBpcyBsaWI2NCB0aGlzIGRvZXMgbm90IGdvIHdlbGwKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlnIHNwZWNpZmljXQotCi1VcGRhdGUgb24gMjAxOTA5MDQ6Ci1SZWRlZmluZSBDVVBTX1NFUlZFUkJJTiB0byAiJGxpYmV4ZWNkaXIvY3VwcyIgd2hpY2ggc29sdmVzIGZpbGUgY29uZmxpY3Rpb24KLXdoZW4gbXVsdGlsaWIgaXMgZW5hYmxlZC4KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLUluZGV4OiBjdXBzLTEuNC42L2NvbmZpZy1zY3JpcHRzL2N1cHMtZGlyZWN0b3JpZXMubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjdXBzLTEuNC42Lm9yaWcvY29uZmlnLXNjcmlwdHMvY3Vwcy1kaXJlY3Rvcmllcy5tNAkyMDA5LTA0LTEyIDE2OjA0OjUxLjAwMDAwMDAwMCAtMDcwMAotKysrIGN1cHMtMS40LjYvY29uZmlnLXNjcmlwdHMvY3Vwcy1kaXJlY3Rvcmllcy5tNAkyMDEyLTA3LTIxIDEyOjEyOjA1Ljg5NjQwNTkyMyAtMDcwMAotQEAgLTM5Nyw3ICszOTcsNyBAQAotIAkqKQotIAkJIyBBbGwgb3RoZXJzCi0gCQlJTlNUQUxMX1NZU1Y9Imluc3RhbGwtc3lzdiIKLS0JCUNVUFNfU0VSVkVSQklOPSIkZXhlY19wcmVmaXgvbGliL2N1cHMiCi0rCQlDVVBTX1NFUlZFUkJJTj0iJGxpYmV4ZWNkaXIvY3VwcyIKLSAJCTs7Ci0gZXNhYwotIAotSW5kZXg6IGN1cHMtMS40LjYvY29uZmlndXJlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY3Vwcy0xLjQuNi5vcmlnL2NvbmZpZ3VyZQkyMDEyLTA3LTIxIDEyOjEzOjM0LjUxMjQwNTk1MCAtMDcwMAotKysrIGN1cHMtMS40LjYvY29uZmlndXJlCTIwMTItMDctMjEgMTI6MTQ6MDUuNzI0NDA2MDE3IC0wNzAwCi1AQCAtMTExODEsNyArMTExODEsNyBAQAotIAkqKQotIAkJIyBBbGwgb3RoZXJzCi0gCQlJTlNUQUxMX1NZU1Y9Imluc3RhbGwtc3lzdiIKLS0JCUNVUFNfU0VSVkVSQklOPSIkZXhlY19wcmVmaXgvbGliL2N1cHMiCi0rCQlDVVBTX1NFUlZFUkJJTj0iJGxpYmV4ZWNkaXIvY3VwcyIKLSAJCTs7Ci0gZXNhYwotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL3VzZV9lY2hvX29ubHlfaW5faW5pdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy91c2VfZWNob19vbmx5X2luX2luaXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5NmYxMzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL3VzZV9lY2hvX29ubHlfaW5faW5pdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLUluZGV4OiBjdXBzLTEuNi4xL3NjaGVkdWxlci9jdXBzLnNoLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY3Vwcy0xLjYuMS5vcmlnL3NjaGVkdWxlci9jdXBzLnNoLmluCi0rKysgY3Vwcy0xLjYuMS9zY2hlZHVsZXIvY3Vwcy5zaC5pbgotQEAgLTY3LDcgKzY3LDcgQEAgY2FzZSAiYHVuYW1lYCIgaW4KLSAJCUVDSE9fRVJST1I9OgotIAkJOzsKLSAKLS0JTGludXgqKQotKwlEaXNhYmxlTGludXgqKQotIAkJSVNfT049L2Jpbi90cnVlCi0gCQlpZiB0ZXN0IC1mIC9ldGMvaW5pdC5kL2Z1bmN0aW9uczsgdGhlbgotIAkJCS4gL2V0Yy9pbml0LmQvZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvdm9sYXRpbGVzLjk5X2N1cHMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvdm9sYXRpbGVzLjk5X2N1cHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MwZTE5ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy92b2xhdGlsZXMuOTlfY3VwcwpAQCAtMCwwICsxLDIgQEAKKyMgPHR5cGU+IDxvd25lcj4gPGdyb3VwPiA8bW9kZT4gPHBhdGg+IDxsaW5rc291cmNlPgorZCByb290IHJvb3QgMDc1NSAvdmFyL2xvZy9jdXBzIG5vbmUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjIuMTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTU1MzRhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjIuMTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXJlcXVpcmUgY3Vwcy5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWYyMTJiNDMzOGRiMGRhOGNiODkyZTk0YmYyOTQ5NDYwIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTc2MzY4OWY3NzM1ZDNmZTk1YTI5NDMzOTcxODllNDAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGY2MWFiNDQ5ZTQ3NDhhMjRjNmFiMzU1YjQ4MWZmNzY5MTI0N2ExNDBkMzI3YjJiNzUyNmZjZTM0YjdmOWFhOCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjMuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjMuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTIzMGZhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMy4xLmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBjdXBzLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKKworU1JDX1VSSVttZDVzdW1dID0gIjhhZDg4OTdjOTdjZjRkOTBmMjBkYWM0MzE4ZjQ3NDIxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiY2E5ZDg5NTA3ZTNmNjhjYmM4NDQ4MmZlNDZhZThkNTMzM2FmNWJjMmI5MDYxMzQ3YjIwMDcxODJhYzc3Y2UiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9lZC9lZF8xLjE1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZWQvZWRfMS4xNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg2YzNkZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9lZC9lZF8xLjE1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotU1VNTUFSWSA9ICJMaW5lLW9yaWVudGVkIHRleHQgZWRpdG9yIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2VkLyIKLQotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wYzcwNTFhZWY5MjE5ZGM3MjM3ZjIwNmM1YzQxNzlhNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lZC5oO2VuZGxpbmU9MjA7bWQ1PThhZjhlN2RjNzI3NWRjYTA1Y2U2YzllN2VjZTdhZWM4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL21haW4uYztlbmRsaW5lPTE3O21kNT1kNGRkNmE2MmM1MDI3MTIzNThjYTE4NTUxZjk3ODc4MSBcCi0gICAgICAgICAgICAgICAgICAgICIKLQotU0VDVElPTiA9ICJiYXNlIgotCi1DVkVfUFJPRFVDVCA9ICJnbnU6ZWQiCi0KLSMgTFNCIHN0YXRlcyB0aGF0IGVkIHNob3VsZCBiZSBpbiAvYmluLwotYmluZGlyID0gIiR7YmFzZV9iaW5kaXJ9IgotCi0jIFVwc3RyZWFtIHJlZ3VsYXJseSByZW1vdmVzIHByZXZpb3VzIHJlbGVhc2VzIGZyb20gaHR0cHM6Ly9mdHAuZ251Lm9yZy9nbnUvZWQvCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZWQvJHtCUH0udGFyLmx6IgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7R05VX01JUlJPUn0vZWQvIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDNhYWViNWViMDMyMTQyOTQ4ZDdhMmY5OGEyNDg5OWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWQ0NDg5YzBhZDdhMTA4YzUxNDI2MmRhMjhlNmMyYTQyNjk0NmZiNDA4YTM5NzdlZjFlZDM0MzA4YmRmZDE3NCIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCi0KLWluaGVyaXQgdGV4aW5mbwotCi1kb19jb25maWd1cmUoKSB7Ci0JJHtTfS9jb25maWd1cmUKLX0KLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLQkjIEluZm8gZGlyIGxpc3RpbmcgaXNuJ3QgaW50ZXJlc3RpbmcgYXQgdGhpcyBwb2ludCBzbyByZW1vdmUgaXQgaWYgaXQgZXhpc3RzLgotCWlmIFsgLWUgIiR7RH0ke2luZm9kaXJ9L2RpciIgXTsgdGhlbgotCQlybSAtZiAke0R9JHtpbmZvZGlyfS9kaXIKLQlmaQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZWQvZWRfMS4xNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2VkL2VkXzEuMTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM4MzAwNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2VkL2VkXzEuMTYuYmIKQEAgLTAsMCArMSwzOCBAQAorU1VNTUFSWSA9ICJMaW5lLW9yaWVudGVkIHRleHQgZWRpdG9yIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2VkLyIKKworTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wYzcwNTFhZWY5MjE5ZGM3MjM3ZjIwNmM1YzQxNzlhNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lZC5oO2VuZGxpbmU9MjA7bWQ1PTAyMjZhOGRkODhjNzZhZmJhNzczZjJmMGY3YzgzZjVlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL21haW4uYztlbmRsaW5lPTE3O21kNT1lYmQ0YWZmODZkYzlmYTUwMjdkNTViYzUxOTE3NDZiOSBcCisgICAgICAgICAgICAgICAgICAgICIKKworU0VDVElPTiA9ICJiYXNlIgorCitDVkVfUFJPRFVDVCA9ICJnbnU6ZWQiCisKKyMgTFNCIHN0YXRlcyB0aGF0IGVkIHNob3VsZCBiZSBpbiAvYmluLworYmluZGlyID0gIiR7YmFzZV9iaW5kaXJ9IgorCisjIFVwc3RyZWFtIHJlZ3VsYXJseSByZW1vdmVzIHByZXZpb3VzIHJlbGVhc2VzIGZyb20gaHR0cHM6Ly9mdHAuZ251Lm9yZy9nbnUvZWQvCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZWQvJHtCUH0udGFyLmx6IgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7R05VX01JUlJPUn0vZWQvIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYWI0ODBkOTgyMjg5MDY0Y2EwNDBiYzVjNzVmY2VmZmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2ZjMDdhMTRhYjA0OGE3NTg0NzNjZTIyMmU3ODRmYmYwMzE0ODViY2Q1NGE3NmY3NGFjZmVlMWYzOTBkOGIyYyIKKworRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCisKK2luaGVyaXQgdGV4aW5mbworCitkb19jb25maWd1cmUoKSB7CisJJHtTfS9jb25maWd1cmUKK30KKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKKwkjIEluZm8gZGlyIGxpc3RpbmcgaXNuJ3QgaW50ZXJlc3RpbmcgYXQgdGhpcyBwb2ludCBzbyByZW1vdmUgaXQgaWYgaXQgZXhpc3RzLgorCWlmIFsgLWUgIiR7RH0ke2luZm9kaXJ9L2RpciIgXTsgdGhlbgorCQlybSAtZiAke0R9JHtpbmZvZGlyfS9kaXIKKwlmaQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoCmluZGV4IDE1M2VhNTUuLmQ1YzkzMjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2wvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2gKQEAgLTE5LDcgKzE5LDcgQEAKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCiBAQCAtMiw3ICsyLDcgQEAgZG5sIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQuCi0gQUNfSU5JVChldGh0b29sLCA1LjMsIG5ldGRldkB2Z2VyLmtlcm5lbC5vcmcpCisgQUNfSU5JVChldGh0b29sLCA1LjQsIG5ldGRldkB2Z2VyLmtlcm5lbC5vcmcpCiAgQUNfUFJFUkVRKDIuNTIpCiAgQUNfQ09ORklHX1NSQ0RJUihbZXRodG9vbC5jXSkKIC1BTV9JTklUX0FVVE9NQUtFKFtnbnVdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sXzUuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF81LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwMTMzMWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sXzUuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiRGlzcGxheSBvciBjaGFuZ2UgZXRoZXJuZXQgY2FyZCBzZXR0aW5ncyIKLURFU0NSSVBUSU9OID0gIkEgc21hbGwgdXRpbGl0eSBmb3IgZXhhbWluaW5nIGFuZCB0dW5pbmcgdGhlIHNldHRpbmdzIG9mIHlvdXIgZXRoZXJuZXQtYmFzZWQgbmV0d29yayBpbnRlcmZhY2VzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay9ldGh0b29sLyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ldGh0b29sLmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNzttZDU9YzE5YjMwNTQ4YzU4MjU3N2ZjNmI0NDM2MjZmYzEyMTYiCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvZXRodG9vbC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjNkMWM4MzViODYxOTEyZWEwZGZkNTJjZjY2YTJkYTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2QyZDhlYTM2MDQzMWEyZWEzNWZmNjFjMjc2YmNmMmFmZWUxYWQ5MDE2NjhhMGI1MGFlOWYxYzU4MTQ3NTZiZCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC8iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IGJhc2gtY29tcGxldGlvbgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLSAgIG9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotICAgY3AgJHtCfS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KLSAgIGluc3RhbGwgJHtCfS90ZXN0LWNtZGxpbmUgICAgICAgICR7RH0ke1BURVNUX1BBVEh9Ci0gICBpbnN0YWxsICR7Qn0vdGVzdC1mZWF0dXJlcyAgICAgICAke0R9JHtQVEVTVF9QQVRIfQotICAgaW5zdGFsbCAke0J9L2V0aHRvb2wgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vZXRodG9vbAotICAgc2VkIC1pICdzL15NYWtlZmlsZS9fTWFrZWZpbGUvJyAgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF81LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZWFmYWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNS40LmJiCkBAIC0wLDAgKzEsMzMgQEAKK1NVTU1BUlkgPSAiRGlzcGxheSBvciBjaGFuZ2UgZXRoZXJuZXQgY2FyZCBzZXR0aW5ncyIKK0RFU0NSSVBUSU9OID0gIkEgc21hbGwgdXRpbGl0eSBmb3IgZXhhbWluaW5nIGFuZCB0dW5pbmcgdGhlIHNldHRpbmdzIG9mIHlvdXIgZXRoZXJuZXQtYmFzZWQgbmV0d29yayBpbnRlcmZhY2VzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay9ldGh0b29sLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ldGh0b29sLmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNzttZDU9YzE5YjMwNTQ4YzU4MjU3N2ZjNmI0NDM2MjZmYzEyMTYiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvZXRodG9vbC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZmJiMjRhYTQxNGFiOWExMWZmNjZkMzUxYjViODQ5M2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGIyNWE0NmI2MWJjNmUyNmY1NmRjYjk3M2ZjMjhhY2VhMTU5ZTJjMzJjOWQ2ZGE0MmMwZmE4ZDFhNjMzOTgyOSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC8iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IGJhc2gtY29tcGxldGlvbgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgIG9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgY3AgJHtCfS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KKyAgIGluc3RhbGwgJHtCfS90ZXN0LWNtZGxpbmUgICAgICAgICR7RH0ke1BURVNUX1BBVEh9CisgICBpbnN0YWxsICR7Qn0vdGVzdC1mZWF0dXJlcyAgICAgICAke0R9JHtQVEVTVF9QQVRIfQorICAgaW5zdGFsbCAke0J9L2V0aHRvb2wgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vZXRodG9vbAorICAgc2VkIC1pICdzL15NYWtlZmlsZS9fTWFrZWZpbGUvJyAgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy5pbmMKaW5kZXggYWQzNjQyOS4uOWFhNzIzOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy5pbmMKQEAgLTYsOSArNiw5IEBACiBCVUdUUkFDS0VSID0gImh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvP2dyb3VwPWZpbmR1dGlscyIKIFNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKIAotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuZ3oiCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci54eiIKIAotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcwogCiBBTFRFUk5BVElWRV8ke1BOfSA9ICJmaW5kIHhhcmdzIgogQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDY0ZDE4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gODZkYjJhNWYzYjdlZjgxMTNlNTM4NGI0ZTAyZDJiMjk5Yzg3YTA0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDEzIEFwciAyMDE1IDE3OjAyOjEzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVuc2V0IG5lZWRfY2hhcnNldF9hbGlhcyB3aGVuIGJ1aWxkaW5nIGZvciBtdXNsCi0KLWxvY2FsY2hhcnNldCB1c2VzIGFjX2N2X2dudV9saWJyYXJ5XzJfMSBmcm9tIGdsaWJjMjEubTQKLXdoaWNoIGFjdHVhbGx5IHNob3VkbCBiZSBmaXhlZCBpbiBnbnVsaWIgYW5kIHRoZW4gYWxsIGRvd25zdHJlYW0KLXByb2plY3RzIHdpbGwgZ2V0IGl0IGV2ZW50dWFsbHkuIEZvciBub3cgd2UgYXBwbHkgdGhlIGZpeCB0bwotY29yZXV0aWxzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSBnbC9saWIvTWFrZWZpbGUuYW0gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nbC9saWIvTWFrZWZpbGUuYW0gYi9nbC9saWIvTWFrZWZpbGUuYW0KLWluZGV4IGE5ZTJmZTQuLjFjNmVhOWMgMTAwNjQ0Ci0tLS0gYS9nbC9saWIvTWFrZWZpbGUuYW0KLSsrKyBiL2dsL2xpYi9NYWtlZmlsZS5hbQotQEAgLTEyMzQsNyArMTIzNCw3IEBAIGluc3RhbGwtZXhlYy1sb2NhbGNoYXJzZXQ6IGFsbC1sb2NhbAotIAkgIGNhc2UgJyQoaG9zdF9vcyknIGluIFwKLSAJICAgIGRhcndpbls1Nl0qKSBcCi0gCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKLS0JICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopIFwKLSsJICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyogfCBsaW51eC1tdXNsKikgXAotIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9ZmFsc2UgOzsgXAotIAkgICAgKikgXAotIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9dHJ1ZSA7OyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLzAwMDEtZmluZC1tYWtlLWRlbGV0ZS1ob25vdXItdGhlLWlnbm9yZV9yZWFkZGlyX3JhY2Utb3B0aS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvMDAwMS1maW5kLW1ha2UtZGVsZXRlLWhvbm91ci10aGUtaWdub3JlX3JlYWRkaXJfcmFjZS1vcHRpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTcwNDczLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvMDAwMS1maW5kLW1ha2UtZGVsZXRlLWhvbm91ci10aGUtaWdub3JlX3JlYWRkaXJfcmFjZS1vcHRpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQ0ICswLDAgQEAKLUZyb20gYTNmNDgyMWM0YTNmNzIzZDIxYzkyOThkNTRiZWU4YTY1NmJmZDdmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJlcm5oYXJkIFZvZWxrZXIgPG1haWxAYmVybmhhcmQtdm9lbGtlci5kZT4KLURhdGU6IFR1ZSwgMzAgSmFuIDIwMTggMjM6MzA6MDkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gZmluZDogbWFrZSAtZGVsZXRlIGhvbm91ciB0aGUgLWlnbm9yZV9yZWFkZGlyX3JhY2Ugb3B0aW9uCi0KLSogZmluZC9wcmVkLmMgKHByZWRfZGVsZXRlKTogUmV0dXJuIHRydWUgd2hlbiB0aGUgLWlnbm9yZV9yZWFkZGlyX3JhY2UKLW9wdGlvbiBpcyBhY3RpdmUgYW5kIHVubGlua2F0KCkgY2FtZSBiYWNrIHdpdGggRU5PRU5ULgotKiBkb2MvZmluZC50ZXhpIChPcHRpb24gLWlnbm9yZV9yZWFkZGlyX3JhY2UpOiBEb2N1bWVudCB0aGUgY2hhbmdlLgotKEFjdGlvbiAtZGVsZXRlKTogTGlrZXdpc2UuCi0qIGZpbmQvZmluZC4xOiBMaWtld2lzZS4KLSogTkVXUyAoQnVnIEZpeGVzKTogTWVudGlvbiB0aGUgZml4LgotCi1Gb3Igbm93LCBpdCBzZWVtcyBhIGJpdCBoYXJkIHRvIGFkZCBhIHByb3BlciB0ZXN0IGZvciB0aGlzLAotc28gdGhlIGZvbGxvd2luZyBzaGVsbCBzbmlwcGV0IGRlbW9uc3RyYXRlcyB0aGUgcmFjZToKLQotICAkIHNlcSAxMCB8IHhhcmdzIHRvdWNoCi0gICQgZW52IHRpbWUgLWYgJ2ZpbmQgZXhpdCBzdGF0dXM6ICV4XG5maW5kIHRpbWU6ICVlJyBcCi0gICAgICBmaW5kIC1pZ25vcmVfcmVhZGRpcl9yYWNlIC10eXBlIGYgXAotICAgICAgICAtZGVsZXRlIFwKLSAgICAgICAgLWV4ZWMgc2ggLWMgJ3NsZWVwICQoYmFzZW5hbWUge30pJyBcOyBcCi0gICAgICAgIC1wcmludGYgJ2ZpbmQgZGVsZXRlZDogJXBcbicgXAotICAgICAgICAmIFwKLSAgICBzbGVlcCAyMDsgXAotICAgIHNlcSAxMCB8IHhhcmdzIHJtIC1mdjsgXAotICAgIHdhaXQgJCEKLQotUmVwb3J0ZWQgYnkgQWxleGFuZGVyIEdvbHViZXYgaW4KLWh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz81Mjk4MQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBORVdTICAgICAgICAgIHwgIDQgKysrKwotIGRvYy9maW5kLnRleGkgfCAxNSArKysrKysrKysrKysrKy0KLSBmaW5kL2ZpbmQuMSAgIHwgMjIgKysrKysrKysrKysrKysrKysrKysrKwotIGZpbmQvcHJlZC5jICAgfCAgNiArKysrKysKLSA0IGZpbGVzIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL05FV1MgYi9ORVdTCi1pbmRleCA2NjBjMjQxLi5iODZlYzFlIDEwMDY0NAotLS0tIGEvTkVXUwotKysrIGIvTkVXUwotQEAgLTQyLDYgKzQyLDEwIEBAIFVwZGF0ZWQgdGhlIERhbmlzaCB0cmFuc2xhdGlvbi4KLSAKLSAqKiBCdWcgRml4ZXM6Ci0gCi0rIzUyOTgxOiBmaW5kOiB0aGUgJy1kZWxldGUnIGFjdGlvbiBubyBsb25nZXIgY29tcGxhaW5zIGFib3V0IGRpc2FwcGVhcmVkIGZpbGVzCi0rICAgICAgICB3aGVuIHRoZSAnLWlnbm9yZV9yZWFkZGlyX3JhY2UnIG9wdGlvbiBpcyBnaXZlbiwgdG9vLiAgVGhhdCBhY3Rpb24gd2lsbAotKyAgICAgICAgYWxzbyByZXR1cm5zIHRydWUgaW4gc3VjaCBhIGNhc2Ugbm93LgotKwotIEFwcGxpZWQgcGF0Y2ggIzg2ODg6IFNwZWxsaW5nIGZpeGVzLgotIAotICogTWFqb3IgY2hhbmdlcyBpbiByZWxlYXNlIDQuNS4xOCwgMjAxNS0xMi0yNwotZGlmZiAtLWdpdCBhL2RvYy9maW5kLnRleGkgYi9kb2MvZmluZC50ZXhpCi1pbmRleCBmZGViODQxLi4yNDdjMTlhIDEwMDY0NAotLS0tIGEvZG9jL2ZpbmQudGV4aQotKysrIGIvZG9jL2ZpbmQudGV4aQotQEAgLTE0MTgsNyArMTQxOCwxNSBAQCBnaXZlcyBhIHNpZ25pZmljYW50IGluY3JlYXNlIGluIHNlYXJjaCBzcGVlZC4KLSBJZiBhIGZpbGUgZGlzYXBwZWFycyBhZnRlciBpdHMgbmFtZSBoYXMgYmVlbiByZWFkIGZyb20gYSBkaXJlY3RvcnkgYnV0Ci0gYmVmb3JlIEBjb2Rle2ZpbmR9IGdldHMgYXJvdW5kIHRvIGV4YW1pbmluZyB0aGUgZmlsZSB3aXRoIEBjb2Rle3N0YXR9LAotIGRvbid0IGlzc3VlIGFuIGVycm9yIG1lc3NhZ2UuICBJZiB5b3UgZG9uJ3Qgc3BlY2lmeSB0aGlzIG9wdGlvbiwgYW4KLS1lcnJvciBtZXNzYWdlIHdpbGwgYmUgaXNzdWVkLiAgVGhpcyBvcHRpb24gY2FuIGJlIHVzZWZ1bCBpbiBzeXN0ZW0KLStlcnJvciBtZXNzYWdlIHdpbGwgYmUgaXNzdWVkLgotKwotK0Z1cnRoZXJtb3JlLCBAY29kZXtmaW5kfSB3aXRoIHRoZSBAc2FtcHstaWdub3JlX3JlYWRkaXJfcmFjZX0gb3B0aW9uCi0rd2lsbCBpZ25vcmUgZXJyb3JzIG9mIHRoZSBAc2FtcHstZGVsZXRlfSBhY3Rpb24gaW4gdGhlIGNhc2UgdGhlIGZpbGUKLStoYXMgZGlzYXBwZWFyZWQgc2luY2UgdGhlIHBhcmVudCBkaXJlY3Rvcnkgd2FzIHJlYWQ6IGl0IHdpbGwgbm90IG91dHB1dAotK2FuIGVycm9yIGRpYWdub3N0aWMsIGFuZCB0aGUgcmV0dXJuIGNvZGUgb2YgdGhlIEBzYW1wey1kZWxldGV9IGFjdGlvbgotK3dpbGwgYmUgdHJ1ZS4KLSsKLStUaGlzIG9wdGlvbiBjYW4gYmUgdXNlZnVsIGluIHN5c3RlbQotIHNjcmlwdHMgKGNyb24gc2NyaXB0cywgZm9yIGV4YW1wbGUpIHRoYXQgZXhhbWluZSBhcmVhcyBvZiB0aGUKLSBmaWxlc3lzdGVtIHRoYXQgY2hhbmdlIGZyZXF1ZW50bHkgKG1haWwgcXVldWVzLCB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMsCi0gYW5kIHNvIGZvcnRoKSwgYmVjYXVzZSB0aGlzIHNjZW5hcmlvIGlzIGNvbW1vbiBmb3IgdGhvc2Ugc29ydHMgb2YKLUBAIC0yNzc5LDYgKzI3ODcsMTEgQEAgZXhwbGljaXRseS4KLSAKLSBJZiBAc2FtcHstZGVsZXRlfSBmYWlscywgQGNvZGV7ZmluZH0ncyBleGl0IHN0YXR1cyB3aWxsIGJlIG5vbnplcm8KLSAod2hlbiBpdCBldmVudHVhbGx5IGV4aXRzKS4KLSsKLStUb2dldGhlciB3aXRoIHRoZSBAc2FtcHstaWdub3JlX3JlYWRkaXJfcmFjZX0gb3B0aW9uLCBAY29kZXtmaW5kfSB3aWxsCi0raWdub3JlIGVycm9ycyBvZiB0aGUgQHNhbXB7LWRlbGV0ZX0gYWN0aW9uIGluIHRoZSBjYXNlIHRoZSBmaWxlIGhhcyBkaXNhcHBlYXJlZAotK3NpbmNlIHRoZSBwYXJlbnQgZGlyZWN0b3J5IHdhcyByZWFkOiBpdCB3aWxsIG5vdCBvdXRwdXQgYW4gZXJyb3IgZGlhZ25vc3RpYywgYW5kCi0rdGhlIHJldHVybiBjb2RlIG9mIHRoZSBAc2FtcHstZGVsZXRlfSBhY3Rpb24gd2lsbCBiZSB0cnVlLgotIEBlbmQgZGVmZm4KLSAKLSBAbm9kZSBBZGRpbmcgVGVzdHMKLWRpZmYgLS1naXQgYS9maW5kL2ZpbmQuMSBiL2ZpbmQvZmluZC4xCi1pbmRleCA3YjE0MWI4Li4wZWVjNDFjIDEwMDY0NAotLS0tIGEvZmluZC9maW5kLjEKLSsrKyBiL2ZpbmQvZmluZC4xCi1AQCAtNDc5LDYgKzQ3OSwxNyBAQCBvbmUgcGFydCBvZiB0aGUgZmlsZXN5c3RlbSB3aXRoIHRoaXMgb3B0aW9uIG9uIGFuZCBwYXJ0IG9mIGl0IHdpdGggdGhpcyBvcHRpb24KLSBvZmYgKGlmIHlvdSBuZWVkIHRvIGRvIHRoYXQsIHlvdSB3aWxsIG5lZWQgdG8gaXNzdWUgdHdvIFxmQmZpbmRcZlIgY29tbWFuZHMKLSBpbnN0ZWFkLCBvbmUgd2l0aCB0aGUgb3B0aW9uIGFuZCBvbmUgd2l0aG91dCBpdCkuCi0gCi0rRnVydGhlcm1vcmUsCi0rLkIgZmluZAotK3dpdGggdGhlCi0rLkIgXC1pZ25vcmVfcmVhZGRpcl9yYWNlCi0rb3B0aW9uIHdpbGwgaWdub3JlIGVycm9ycyBvZiB0aGUKLSsuQiBcLWRlbGV0ZQotK2FjdGlvbiBpbiB0aGUgY2FzZSB0aGUgZmlsZSBoYXMgZGlzYXBwZWFyZWQgc2luY2UgdGhlIHBhcmVudCBkaXJlY3Rvcnkgd2FzIHJlYWQ6Ci0raXQgd2lsbCBub3Qgb3V0cHV0IGFuIGVycm9yIGRpYWdub3N0aWMsIGFuZCB0aGUgcmV0dXJuIGNvZGUgb2YgdGhlCi0rLkIgXC1kZWxldGUKLSthY3Rpb24gd2lsbCBiZSB0cnVlLgotKwotIC5JUCAiXC1tYXhkZXB0aCBcZklsZXZlbHNcZlIiCi0gRGVzY2VuZCBhdCBtb3N0IFxmSWxldmVsc1xmUiAoYSBub24tbmVnYXRpdmUgaW50ZWdlcikgbGV2ZWxzIG9mCi0gZGlyZWN0b3JpZXMgYmVsb3cgdGhlIHN0YXJ0aW5nLXBvaW50cy4KLUBAIC0xMDMwLDYgKzEwNDEsMTcgQEAgYW5kCi0gLkIgXC1kZWxldGUKLSB0b2dldGhlci4KLSAKLStUb2dldGhlciB3aXRoIHRoZQotKy5CIFwtaWdub3JlX3JlYWRkaXJfcmFjZQotK29wdGlvbiwKLSsuQiBmaW5kCi0rd2lsbCBpZ25vcmUgZXJyb3JzIG9mIHRoZQotKy5CIFwtZGVsZXRlCi0rYWN0aW9uIGluIHRoZSBjYXNlIHRoZSBmaWxlIGhhcyBkaXNhcHBlYXJlZCBzaW5jZSB0aGUgcGFyZW50IGRpcmVjdG9yeSB3YXMKLStyZWFkOiBpdCB3aWxsIG5vdCBvdXRwdXQgYW4gZXJyb3IgZGlhZ25vc3RpYywgYW5kIHRoZSByZXR1cm4gY29kZSBvZiB0aGUKLSsuQiBcLWRlbGV0ZQotK2FjdGlvbiB3aWxsIGJlIHRydWUuCi0rCi0gLklQICJcLWV4ZWMgXGZJY29tbWFuZFxmUiA7IgotIEV4ZWN1dGUgXGZJY29tbWFuZFxmUjsgdHJ1ZSBpZiAwIHN0YXR1cyBpcyByZXR1cm5lZC4gIEFsbCBmb2xsb3dpbmcKLSBhcmd1bWVudHMgdG8KLWRpZmYgLS1naXQgYS9maW5kL3ByZWQuYyBiL2ZpbmQvcHJlZC5jCi1pbmRleCAzMjkzOGZiLi40MzFmMDY1IDEwMDY0NAotLS0tIGEvZmluZC9wcmVkLmMKLSsrKyBiL2ZpbmQvcHJlZC5jCi1AQCAtMzI0LDYgKzMyNCwxMiBAQCBwcmVkX2RlbGV0ZSAoY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdGF0X2J1Ziwgc3RydWN0IHByZWRpY2F0ZSAqcHJlZAotIAl9Ci0gICAgICAgZWxzZQotIAl7Ci0rCSAgaWYgKEVOT0VOVCA9PSBlcnJubyAmJiBvcHRpb25zLmlnbm9yZV9yZWFkZGlyX3JhY2UpCi0rCSAgICB7Ci0rCSAgICAgIC8qIElnbm9yZSB1bmxpbmsoKSBlcnJvciBmb3IgdmFuaXNoZWQgZmlsZXMuICAqLwotKwkgICAgICBlcnJubyA9IDA7Ci0rCSAgICAgIHJldHVybiB0cnVlOwotKwkgICAgfQotIAkgIGlmIChFSVNESVIgPT0gZXJybm8pCi0gCSAgICB7Ci0gCSAgICAgIGlmICgoZmxhZ3MgJiBBVF9SRU1PVkVESVIpID09IDApCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItZmZsdXNoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy9maW5kdXRpbHMtNC42LjAtZ251bGliLWZmbHVzaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDEzZThlZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItZmZsdXNoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAgQEAKLUZyb20gODBjZGZiYTA3OTYyN2UxNTEyOWE5MjZhMTMzODI1Yjk2MWQ0MWUzNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+Ci1EYXRlOiBNb24sIDUgTWFyIDIwMTggMTA6NTY6MjkgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gZmZsdXNoOiBhZGp1c3QgdG8gZ2xpYmMgMi4yOCBsaWJpby5oIHJlbW92YWwKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotUHJvYmxlbSByZXBvcnRlZCBieSBEYW5pZWwgUC4gQmVycmFuZ8OpIGluOgotaHR0cHM6Ly9saXN0cy5nbnUub3JnL3IvYnVnLWdudWxpYi8yMDE4LTAzL21zZzAwMDAwLmh0bWwKLSogbGliL2ZmbHVzaC5jIChjbGVhcl91bmdldGNfYnVmZmVyX3ByZXNlcnZpbmdfcG9zaXRpb24pCi0oZGlzYWJsZV9zZWVrX29wdGltaXphdGlvbiwgcnBsX2ZmbHVzaCk6Ci0qIGxpYi9mcHVyZ2UuYyAoZnB1cmdlKToKLSogbGliL2ZyZWFkYWhlYWQuYyAoZnJlYWRhaGVhZCk6Ci0qIGxpYi9mcmVhZGluZy5jIChmcmVhZGluZyk6Ci0qIGxpYi9mc2Vla28uYyAoZnNlZWtvKToKLSogbGliL3N0ZGlvLWltcGwuaCAoX0lPX0lOX0JBQ0tVUCkgW19JT19FT0ZfU0VFTl06Ci1EZWZpbmUgaWYgbm90IGFscmVhZHkgZGVmaW5lZC4KLQotVXBzdHJlYW0tY29tbWl0OiA0YWY0YTRhNzE4MjdjMGJjNWUwZWM2N2FmMjNlZGVmNGYxNWNlZThlCi1TaWduZWQtb2ZmLWJ5OiBLYW1pbCBEdWRrYSA8a2R1ZGthQHJlZGhhdC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFs0YWY0YTRhNzE4MjdjMGJjNWUwZWM2N2FmMjNlZGVmNGYxNWNlZThlXQotLS0tCi0gZ2wvbGliL2ZmbHVzaC5jICAgICB8IDYgKysrLS0tCi0gZ2wvbGliL2ZwdXJnZS5jICAgICB8IDIgKy0KLSBnbC9saWIvZnJlYWRhaGVhZC5jIHwgMiArLQotIGdsL2xpYi9mcmVhZGluZy5jICAgfCAyICstCi0gZ2wvbGliL2ZzZWVrby5jICAgICB8IDQgKystLQotIGdsL2xpYi9zdGRpby1pbXBsLmggfCA2ICsrKysrKwotIDYgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGZpbmR1dGlscy00LjYuMC9nbC9saWIvZmZsdXNoLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvZmZsdXNoLmMKLSsrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZmbHVzaC5jCi1AQCAtMzMsNyArMzMsNyBAQAotICN1bmRlZiBmZmx1c2gKLSAKLSAKLS0jaWYgZGVmaW5lZCBfSU9fZnRyeWxvY2tmaWxlIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KLSsjaWYgZGVmaW5lZCBfSU9fRU9GX1NFRU4gfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLwotIAotIC8qIENsZWFyIHRoZSBzdHJlYW0ncyB1bmdldGMgYnVmZmVyLCBwcmVzZXJ2aW5nIHRoZSB2YWx1ZSBvZiBmdGVsbG8gKGZwKS4gICovCi0gc3RhdGljIHZvaWQKLUBAIC03Miw3ICs3Miw3IEBAIGNsZWFyX3VuZ2V0Y19idWZmZXIgKEZJTEUgKmZwKQotIAotICNlbmRpZgotIAotLSNpZiAhIChkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLykKLSsjaWYgISAoZGVmaW5lZCBfSU9fRU9GX1NFRU4gfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLykKLSAKLSAjIGlmIChkZWZpbmVkIF9fc2ZlcnJvciB8fCBkZWZpbmVkIF9fRHJhZ29uRmx5X18gfHwgZGVmaW5lZCBfX0FORFJPSURfXykgJiYgZGVmaW5lZCBfX1NOUFQKLSAvKiBGcmVlQlNELCBOZXRCU0QsIE9wZW5CU0QsIERyYWdvbkZseSwgTWFjIE9TIFgsIEN5Z3dpbiwgQW5kcm9pZCAqLwotQEAgLTE0OCw3ICsxNDgsNyBAQCBycGxfZmZsdXNoIChGSUxFICpzdHJlYW0pCi0gICBpZiAoc3RyZWFtID09IE5VTEwgfHwgISBmcmVhZGluZyAoc3RyZWFtKSkKLSAgICAgcmV0dXJuIGZmbHVzaCAoc3RyZWFtKTsKLSAKLS0jaWYgZGVmaW5lZCBfSU9fZnRyeWxvY2tmaWxlIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KLSsjaWYgZGVmaW5lZCBfSU9fRU9GX1NFRU4gfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLwotIAotICAgY2xlYXJfdW5nZXRjX2J1ZmZlcl9wcmVzZXJ2aW5nX3Bvc2l0aW9uIChzdHJlYW0pOwotIAotSW5kZXg6IGZpbmR1dGlscy00LjYuMC9nbC9saWIvZnB1cmdlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvZnB1cmdlLmMKLSsrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZwdXJnZS5jCi1AQCAtNjIsNyArNjIsNyBAQCBmcHVyZ2UgKEZJTEUgKmZwKQotICAgLyogTW9zdCBzeXN0ZW1zIHByb3ZpZGUgRklMRSBhcyBhIHN0cnVjdCBhbmQgdGhlIG5lY2Vzc2FyeSBiaXRtYXNrIGluCi0gICAgICA8c3RkaW8uaD4sIGJlY2F1c2UgdGhleSBuZWVkIGl0IGZvciBpbXBsZW1lbnRpbmcgZ2V0YygpIGFuZCBwdXRjKCkgYXMKLSAgICAgIGZhc3QgbWFjcm9zLiAgKi8KLS0jIGlmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0rIyBpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0gICBmcC0+X0lPX3JlYWRfZW5kID0gZnAtPl9JT19yZWFkX3B0cjsKLSAgIGZwLT5fSU9fd3JpdGVfcHRyID0gZnAtPl9JT193cml0ZV9iYXNlOwotICAgLyogQXZvaWQgbWVtb3J5IGxlYWsgd2hlbiB0aGVyZSBpcyBhbiBhY3RpdmUgdW5nZXRjIGJ1ZmZlci4gICovCi1JbmRleDogZmluZHV0aWxzLTQuNi4wL2dsL2xpYi9mcmVhZGFoZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvZnJlYWRhaGVhZC5jCi0rKysgZmluZHV0aWxzLTQuNi4wL2dsL2xpYi9mcmVhZGFoZWFkLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gc2l6ZV90Ci0gZnJlYWRhaGVhZCAoRklMRSAqZnApCi0gewotLSNpZiBkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLwotKyNpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0gICBpZiAoZnAtPl9JT193cml0ZV9wdHIgPiBmcC0+X0lPX3dyaXRlX2Jhc2UpCi0gICAgIHJldHVybiAwOwotICAgcmV0dXJuIChmcC0+X0lPX3JlYWRfZW5kIC0gZnAtPl9JT19yZWFkX3B0cikKLUluZGV4OiBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZyZWFkaW5nLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvZnJlYWRpbmcuYwotKysrIGZpbmR1dGlscy00LjYuMC9nbC9saWIvZnJlYWRpbmcuYwotQEAgLTMxLDcgKzMxLDcgQEAgZnJlYWRpbmcgKEZJTEUgKmZwKQotICAgLyogTW9zdCBzeXN0ZW1zIHByb3ZpZGUgRklMRSBhcyBhIHN0cnVjdCBhbmQgdGhlIG5lY2Vzc2FyeSBiaXRtYXNrIGluCi0gICAgICA8c3RkaW8uaD4sIGJlY2F1c2UgdGhleSBuZWVkIGl0IGZvciBpbXBsZW1lbnRpbmcgZ2V0YygpIGFuZCBwdXRjKCkgYXMKLSAgICAgIGZhc3QgbWFjcm9zLiAgKi8KLS0jIGlmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0rIyBpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0gICByZXR1cm4gKChmcC0+X2ZsYWdzICYgX0lPX05PX1dSSVRFUykgIT0gMAotICAgICAgICAgICB8fCAoKGZwLT5fZmxhZ3MgJiAoX0lPX05PX1JFQURTIHwgX0lPX0NVUlJFTlRMWV9QVVRUSU5HKSkgPT0gMAotICAgICAgICAgICAgICAgJiYgZnAtPl9JT19yZWFkX2Jhc2UgIT0gTlVMTCkpOwotSW5kZXg6IGZpbmR1dGlscy00LjYuMC9nbC9saWIvZnNlZWtvLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvZnNlZWtvLmMKLSsrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZzZWVrby5jCi1AQCAtNDcsNyArNDcsNyBAQCBmc2Vla28gKEZJTEUgKmZwLCBvZmZfdCBvZmZzZXQsIGludCB3aGVuCi0gI2VuZGlmCi0gCi0gICAvKiBUaGVzZSB0ZXN0cyBhcmUgYmFzZWQgb24gZnB1cmdlLmMuICAqLwotLSNpZiBkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLwotKyNpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0gICBpZiAoZnAtPl9JT19yZWFkX2VuZCA9PSBmcC0+X0lPX3JlYWRfcHRyCi0gICAgICAgJiYgZnAtPl9JT193cml0ZV9wdHIgPT0gZnAtPl9JT193cml0ZV9iYXNlCi0gICAgICAgJiYgZnAtPl9JT19zYXZlX2Jhc2UgPT0gTlVMTCkKLUBAIC0xMjMsNyArMTIzLDcgQEAgZnNlZWtvIChGSUxFICpmcCwgb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbgotICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICB9Ci0gCi0tI2lmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0rI2lmIGRlZmluZWQgX0lPX0VPRl9TRUVOIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KLSAgICAgICBmcC0+X2ZsYWdzICY9IH5fSU9fRU9GX1NFRU47Ci0gICAgICAgZnAtPl9vZmZzZXQgPSBwb3M7Ci0gI2VsaWYgZGVmaW5lZCBfX3NmZXJyb3IgfHwgZGVmaW5lZCBfX0RyYWdvbkZseV9fIHx8IGRlZmluZWQgX19BTkRST0lEX18KLUluZGV4OiBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL3N0ZGlvLWltcGwuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZpbmR1dGlscy00LjYuMC5vcmlnL2dsL2xpYi9zdGRpby1pbXBsLmgKLSsrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL3N0ZGlvLWltcGwuaAotQEAgLTE4LDYgKzE4LDEyIEBACi0gICAgdGhlIHNhbWUgaW1wbGVtZW50YXRpb24gb2Ygc3RkaW8gZXh0ZW5zaW9uIEFQSSwgZXhjZXB0IHRoYXQgc29tZSBmaWVsZHMKLSAgICBoYXZlIGRpZmZlcmVudCBuYW1pbmcgY29udmVudGlvbnMsIG9yIHRoZWlyIGFjY2VzcyByZXF1aXJlcyBzb21lIGNhc3RzLiAgKi8KLSAKLSsvKiBHbGliYyAyLjI4IG1hZGUgX0lPX0lOX0JBQ0tVUCBwcml2YXRlLiAgRm9yIG5vdywgd29yayBhcm91bmQgdGhpcwotKyAgIHByb2JsZW0gYnkgZGVmaW5pbmcgaXQgb3Vyc2VsdmVzLiAgRklYTUU6IERvIG5vdCByZWx5IG9uIGdsaWJjCi0rICAgaW50ZXJuYWxzLiAgKi8KLSsjaWYgIWRlZmluZWQgX0lPX0lOX0JBQ0tVUCAmJiBkZWZpbmVkIF9JT19FT0ZfU0VFTgotKyMgZGVmaW5lIF9JT19JTl9CQUNLVVAgMHgxMDAKLSsjZW5kaWYKLSAKLSAvKiBCU0Qgc3RkaW8gZGVyaXZlZCBpbXBsZW1lbnRhdGlvbnMuICAqLwotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy9maW5kdXRpbHMtNC42LjAtZ251bGliLW1ha2VkZXYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItbWFrZWRldi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZiMzk1My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItbWFrZWRldi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLUZyb20gODA2MjgwNDdhNmNjODNmODJlMGM0MTBhODJiOGY3ZmFjZDlkNTBmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEVyaWMgQmxha2UgPGVibGFrZUByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAxNCBTZXAgMjAxNiAxOToyMTo0MiAtMDUwMAotU3ViamVjdDogW1BBVENIXSBtb3VudGxpc3Q6IGluY2x1ZGUgc3lzbWFjcm9zLmggZm9yIGdsaWJjCi0KLU9uIEZlZG9yYSByYXdoaWRlIChnbGliYyAyLjI1KSwgJy4vZ251bGliLXRvb2wgLS10ZXN0IG1vdW50bGlzdCcKLXJlcG9ydHM6Ci0uLi8uLi9nbGxpYi9tb3VudGxpc3QuYzogSW4gZnVuY3Rpb24gJ3JlYWRfZmlsZV9zeXN0ZW1fbGlzdCc6Ci0uLi8uLi9nbGxpYi9tb3VudGxpc3QuYzo1MzQ6MTM6IHdhcm5pbmc6ICdfX21ha2VkZXZfZnJvbV9zeXNfdHlwZXMnIGlzIGRlcHJlY2F0ZWQ6Ci0gIEluIHRoZSBHTlUgQyBMaWJyYXJ5LCBgbWFrZWRldicgaXMgZGVmaW5lZCBieSA8c3lzL3N5c21hY3Jvcy5oPi4KLSAgRm9yIGhpc3RvcmljYWwgY29tcGF0aWJpbGl0eSwgaXQgaXMgY3VycmVudGx5IGRlZmluZWQgYnkKLSAgPHN5cy90eXBlcy5oPiBhcyB3ZWxsLCBidXQgd2UgcGxhbiB0byByZW1vdmUgdGhpcyBzb29uLgotICBUbyB1c2UgYG1ha2VkZXYnLCBpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+IGRpcmVjdGx5LgotICBJZiB5b3UgZGlkIG5vdCBpbnRlbmQgdG8gdXNlIGEgc3lzdGVtLWRlZmluZWQgbWFjcm8gYG1ha2VkZXYnLAotICB5b3Ugc2hvdWxkICN1bmRlZiBpdCBhZnRlciBpbmNsdWRpbmcgPHN5cy90eXBlcy5oPi4KLSAgWy1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNdCi0gICAgICAgICAgICAgbWUtPm1lX2RldiA9IG1ha2VkZXYgKGRldm1haiwgZGV2bWluKTsKLSAgICAgICAgICAgICBefgotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC91c3IvaW5jbHVkZS9mZWF0dXJlcy5oOjM5NzowLAotICAgICAgICAgICAgICAgICBmcm9tIC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaDoyNSwKLSAgICAgICAgICAgICAgICAgZnJvbSAuL3N5cy90eXBlcy5oOjI4LAotICAgICAgICAgICAgICAgICBmcm9tIC4uLy4uL2dsbGliL21vdW50bGlzdC5oOjIzLAotICAgICAgICAgICAgICAgICBmcm9tIC4uLy4uL2dsbGliL21vdW50bGlzdC5jOjIwOgotL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaDo4OToxOiBub3RlOiBkZWNsYXJlZCBoZXJlCi0gX19TWVNNQUNST1NfREVGSU5FX01BS0VERVYgKF9fU1lTTUFDUk9TX0ZTVF9JTVBMX1RFTVBMKQotIF4KLQotRml4IGl0IGJ5IGluY2x1ZGluZyB0aGUgcmlnaHQgaGVhZGVycy4gIFdlIGFsc28gbmVlZCBhIGZpeCB0bwotYXV0b2NvbmYncyBBQ19IRUFERVJfTUFKT1IsIGJ1dCB0aGF0J3MgYSBzZXBhcmF0ZSBwYXRjaC4KLQotKiBtNC9tb3VudGxpc3QubTQgKGdsX1BSRVJFUV9NT1VUTElTVF9FWFRSQSk6IEluY2x1ZGUKLUFDX0hFQURFUl9NQUpPUi4KLSogbGliL21vdW50bGlzdC5jIChpbmNsdWRlcyk6IFVzZSBjb3JyZWN0IGhlYWRlcnMuCi0KLVNpZ25lZC1vZmYtYnk6IEVyaWMgQmxha2UgPGVibGFrZUByZWRoYXQuY29tPgotCi1VcHN0cmVhbS1jb21taXQ6IDRkYTYzYzU4ODFmNjBmNzE5OTlhOTQzNjEyZGE5MTEyMjMyYjkxNjEKLVNpZ25lZC1vZmYtYnk6IEthbWlsIER1ZGthIDxrZHVka2FAcmVkaGF0LmNvbT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzRkYTYzYzU4ODFmNjBmNzE5OTlhOTQzNjEyZGE5MTEyMjMyYjkxNjFdCi0tLS0KLSBnbC9saWIvbW91bnRsaXN0LmMgfCA2ICsrKysrKwotIGdsL200L21vdW50bGlzdC5tNCB8IDMgKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGZpbmR1dGlscy00LjYuMC9nbC9saWIvbW91bnRsaXN0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvbW91bnRsaXN0LmMKLSsrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL21vdW50bGlzdC5jCi1AQCAtMzcsNiArMzcsMTIgQEAKLSAjIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgotICNlbmRpZgotIAotKyNpZiBNQUpPUl9JTl9NS0RFVgotKyMgaW5jbHVkZSA8c3lzL21rZGV2Lmg+Ci0rI2VsaWYgTUFKT1JfSU5fU1lTTUFDUk9TCi0rIyBpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0rI2VuZGlmCi0rCi0gI2lmIGRlZmluZWQgTU9VTlRFRF9HRVRGU1NUQVQgICAvKiBPU0ZfMSBhbmQgRGFyd2luMS4zLnggKi8KLSAjIGlmIEhBVkVfU1lTX1VDUkVEX0gKLSAjICBpbmNsdWRlIDxncnAuaD4gLyogbmVlZGVkIG9uIE9TRiBWNC4wIGZvciBkZWZpbml0aW9uIG9mIE5HUk9VUFMsCi1JbmRleDogZmluZHV0aWxzLTQuNi4wL2dsL200L21vdW50bGlzdC5tNAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZpbmR1dGlscy00LjYuMC5vcmlnL2dsL200L21vdW50bGlzdC5tNAotKysrIGZpbmR1dGlscy00LjYuMC9nbC9tNC9tb3VudGxpc3QubTQKLUBAIC0xLDQgKzEsNCBAQAotLSMgc2VyaWFsIDExCi0rIyBzZXJpYWwgMTIKLSBkbmwgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDYsIDIwMDktMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKLUBAIC0xNSw1ICsxNSw2IEBAIEFDX0RFRlVOKFtnbF9QUkVSRVFfTU9VTlRMSVNUX0VYVFJBXSwKLSBbCi0gICBkbmwgTm90ZSBnbF9MSVNUX01PVU5URURfRklMRV9TWVNURU1TIGNoZWNrcyBmb3IgbW50ZW50LmgsIG5vdCBzeXMvbW50ZW50LmguCi0gICBBQ19DSEVDS19IRUFERVJTKFtzeXMvbW50ZW50LmhdKQotKyAgQUNfSEVBREVSX01BSk9SKClkbmwgZm9yIHVzZSBvZiBtYWtlZGV2ICgpCi0gICBnbF9GU1RZUEVOQU1FCi0gXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHNfNC42LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzXzQuNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjYyZWQ5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHNfNC42LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1yZXF1aXJlIGZpbmR1dGlscy5pbmMKLQotIyBHUEx2MisgKDw8IDQuMi4zMiksIEdQTHYzKyAoPj0gNC4yLjMyKQotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMjdkZWZlMWU5NmMyZTFlY2Q0ZTBjOWJlODk2Nzk0OSIKLQotREVQRU5EUyA9ICJiaXNvbi1uYXRpdmUiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpbmQtbWFrZS1kZWxldGUtaG9ub3VyLXRoZS1pZ25vcmVfcmVhZGRpcl9yYWNlLW9wdGkucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItZmZsdXNoLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9maW5kdXRpbHMtNC42LjAtZ251bGliLW1ha2VkZXYucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTkzNmFhODAwOTQzOGNlMTg1YmVhMjY5NGE5OTdmYzEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGVkNGM5ZjczNzMxY2Q0OGZlYzNiNmJkYWNjY2U4OTY0NzNiNmQ4ZTMzN2U5NjEyZTE2Y2YxNDMxYmIxMTY5ZCIKLQotIyBodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz8yNzI5OQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImdsX2N2X2Z1bmNfd2N3aWR0aF93b3Jrcz15ZXMiCi0KLUVYVFJBX09FQ09ORiArPSAiYWNfY3ZfcGF0aF9TT1JUPSR7YmluZGlyfS9zb3J0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlsc180LjcuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHNfNC43LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk2ODhlNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHNfNC43LjAuYmIKQEAgLTAsMCArMSwxNSBAQAorcmVxdWlyZSBmaW5kdXRpbHMuaW5jCisKKyMgR1BMdjIrICg8PCA0LjIuMzIpLCBHUEx2MysgKD49IDQuMi4zMikKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWViYmQzZTM0MjM3YWYyNmRhNWRjMDhhNGU0NDA0NjQiCisKK0RFUEVORFMgPSAiYmlzb24tbmF0aXZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzMxMzU2ZGVjNGIxMTA5YjgxMmZlY2ZkZGZlYWQ2YjIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzVmZWZiZGY5ODU4ZjdlNGZlYjg2ZjAzNmUxMjQ3YTU0Yzc5ZmMyZDhlNGI3MDY0ZDVhYWExZjQ3ZGZhNzg5YSIKKworIyBodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz8yNzI5OQorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImdsX2N2X2Z1bmNfd2N3aWR0aF93b3Jrcz15ZXMiCisKK0VYVFJBX09FQ09ORiArPSAiYWNfY3ZfcGF0aF9TT1JUPSR7YmluZGlyfS9zb3J0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVycy00LjAuMTcvQ1ZFLTIwMTUtODMyNy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Zvb21hdGljL2Zvb21hdGljLWZpbHRlcnMtNC4wLjE3L0NWRS0yMDE1LTgzMjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhZWRjODguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVycy00LjAuMTcvQ1ZFLTIwMTUtODMyNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotCi1odHRwOi8vYnpyLmxpbnV4Zm91bmRhdGlvbi5vcmcvbG9nZ2VyaGVhZC9vcGVucHJpbnRpbmcvY3Vwcy1maWx0ZXJzL3JldmlzaW9uLzc0MDYKLQotSGFuZCBhcHBsaWVkIGNoYW5nZSB0byB1dGlsLmMuIEZpeCB3YXMgZm9yIGN1cHMtZmlsdGVycyBidXQgYWxzbyBhcHBsaWVkIHRvIGZvb21hdGljLWZpbHRlcnMuCi0KLUNWRTogQ1ZFLTIwMTUtODMyNwotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLUluZGV4OiB1dGlsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL3V0aWwuYwotKysrIGIvdXRpbC5jCi1AQCAtMzEsNyArMzEsNyBAQAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAKLSAKLS1jb25zdCBjaGFyKiBzaGVsbGVzY2FwZXMgPSAifDs8PiYhJFwnXCIjKj8oKVtde30iOwotK2NvbnN0IGNoYXIqIHNoZWxsZXNjYXBlcyA9ICJ8Ozw+JiEkXCdcImAjKj8oKVtde30iOwotIAotIGNvbnN0IGNoYXIgKiB0ZW1wX2RpcigpCi0gewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVycy00LjAuMTcvQ1ZFLTIwMTUtODU2MC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Zvb21hdGljL2Zvb21hdGljLWZpbHRlcnMtNC4wLjE3L0NWRS0yMDE1LTg1NjAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjOTczYzQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVycy00LjAuMTcvQ1ZFLTIwMTUtODU2MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotCi1odHRwOi8vYnpyLmxpbnV4Zm91bmRhdGlvbi5vcmcvbG9nZ2VyaGVhZC9vcGVucHJpbnRpbmcvY3Vwcy1maWx0ZXJzL3JldmlzaW9uLzc0MTkKLQotSGFuZCBhcHBsaWVkIGNoYW5nZSB0byB1dGlsLmMuIEZpeCB3YXMgZm9yIGN1cHMtZmlsdGVycyBidXQgYWxzbyBhcHBsaWVkIHRvIGZvb21hdGljLWZpbHRlcnMuCi0KLUNWRTogQ1ZFLTIwMTUtODU2MAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLUluZGV4OiB1dGlsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL3V0aWwuYwotKysrIGIvdXRpbC5jCi1AQCAtMzEsNyArMzEsNyBAQAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAKLSAKLS1jb25zdCBjaGFyKiBzaGVsbGVzY2FwZXMgPSAifDw+JiEkXCdcIiMqPygpW117fSI7Ci0rY29uc3QgY2hhciogc2hlbGxlc2NhcGVzID0gInw7PD4mISRcJ1wiIyo/KClbXXt9IjsKLSAKLSBjb25zdCBjaGFyICogdGVtcF9kaXIoKQotIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Zvb21hdGljL2Zvb21hdGljLWZpbHRlcnNfNC4wLjE3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVyc180LjAuMTcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0MmM5YTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVyc180LjAuMTcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIk9wZW5QcmludGluZyBwcmludGVyIHN1cHBvcnQgLSBmaWx0ZXJzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvb3BlbnByaW50aW5nL3N0YXJ0IgotREVTQ1JJUFRJT04gPSAiRm9vbWF0aWMgaXMgYSBwcmludGVyIGRhdGFiYXNlIGRlc2lnbmVkIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNldCB1cCBcCi1jb21tb24gcHJpbnRlcnMgZm9yIHVzZSB3aXRoIFVOSVgtbGlrZSBvcGVyYXRpbmcgc3lzdGVtcy5cCi1JdCBwcm92aWRlcyB0aGUgImdsdWUiIGJldHdlZW4gYSBwcmludCBzcG9vbGVyIChsaWtlIENVUFMgb3IgbHByKSBhbmQgXAotdGhlIHByaW50ZXIsIGJ5IHByb2Nlc3NpbmcgZmlsZXMgc2VudCB0byB0aGUgcHJpbnRlci4gXAotIFwKLVRoaXMgcGFja2FnZSBjb25zaXN0cyBvZiBmaWx0ZXJzIHVzZWQgYnkgdGhlIHByaW50ZXIgc3Bvb2xlcnMgXAotdG8gY29udmVydCB0aGUgaW5jb21pbmcgUG9zdFNjcmlwdCBkYXRhIGludG8gdGhlIHByaW50ZXIncyBuYXRpdmUgXAotZm9ybWF0IHVzaW5nIGEgcHJpbnRlci1zcGVjaWZpYywgYnV0IHNwb29sZXItaW5kZXBlbmRlbnQgUFBEIGZpbGUuIFwKLSIKLQotREVQRU5EUyArPSAiY3VwcyBwZXJsIGxpYnhtbDIiCi1QUiA9ICJyMSIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9L2Zvb21hdGljLWZpbHRlcnMtJHtQVn0vQ09QWUlORzttZDU9MzkzYTVjYTQ0NWY2OTY1ODczZWNhMDI1OWExN2Y4MzMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5vcGVucHJpbnRpbmcub3JnL2Rvd25sb2FkL2Zvb21hdGljL2Zvb21hdGljLWZpbHRlcnMtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJICs9ICJmaWxlOi8vQ1ZFLTIwMTUtODU2MC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTUtODMyNy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImIwNWY1ZGNiZmUzNTlmMTk4ZWVmM2RmNWIyODNkODk2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEyZTJlNTNlNTAyNTcxZTg4ZWViOTAxMGM0NWEwZDU0NjcxZjE1NzA3ZWUxMDRmNWM5YzIyYjU5ZWE3YTMzZTMiCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImZvb21hdGljLWZpbHRlcnMtKD9QPHB2ZXI+KChcZHxcZFxkKVwuKikrKVwudGFyXC5neiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWZpbGUtY29udmVydGVyLWNoZWNrIC0td2l0aC1maWxlLWNvbnZlcnRlcj10ZXh0dG9wcyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgZXhwb3J0IFBFUkw9IiR7YmluZGlyfS9lbnYgcGVybCIKLSAgICBleHBvcnQgQ1VQU19TRVJWRVJCSU49JHtleGVjX3ByZWZpeH0vbGliL2N1cHMgICAgICAgIyAvdXNyL2xpYiBOT1QgbGliZGlyCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2xpbnV4c3RkYmFzZSgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvY3Vwcy9maWx0ZXIKLSAgICBsbiAtc2YgJHtiaW5kaXJ9L2Zvb21hdGljLXJpcCAke0R9JHtleGVjX3ByZWZpeH0vbGliL2N1cHMvZmlsdGVyCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2V4ZWNfcHJlZml4fS9saWIvY3Vwcy8gJHtleGVjX3ByZWZpeH0vbGliL3Bwci8iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNS4wLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNS4wLjEuYmIKaW5kZXggZWFiYTZjNy4uZTc5Y2NmZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrXzUuMC4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3a181LjAuMS5iYgpAQCAtNDYsNiArNDYsOCBAQAogCWRvbmUKIAlzZWQgLWkgLWUgJ3N8L3Vzci9sb2NhbC9iaW58JHtiaW5kaXJ9fGcnIFwKIAkgICAgLWUgJ3N8IyEke2Jhc2VfYmluZGlyfS9hd2t8IyEke2JpbmRpcn0vYXdrfGcnICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvKi5hd2sKKworICAgICAgICBzZWQgLWkgLWUgInN8R0FXS0xPQ0FMRXxMQU5HfGciICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvTWFrZXRlc3RzCiB9CiAKIFJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTktMTQ4MTEtMDAwMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE5LTE0ODExLTAwMDEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmMjg1NTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTktMTQ4MTEtMDAwMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLUZyb20gODg1NDQ0ZmNiZTEwZGM0Mjc4N2VjYjc2Njg2YzhlZTRkZDMzYmYzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtlbiBTaGFycCA8a2VuLnNoYXJwQGFydGlmZXguY29tPgotRGF0ZTogVHVlLCAyMCBBdWcgMjAxOSAxMDoxMDoyOCArMDEwMAotU3ViamVjdDogW1BBVENIXSBtYWtlIC5mb3JjZXB1dCBpbmFjY2Vzc2libGUKLQotQnVnICM3MDEzNDMsICM3MDEzNDQsICM3MDEzNDUKLQotTW9yZSBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcuIFdlIGRvbid0IHdhbnQgcGVvcGxlIHRvIGFjY2VzcyAuZm9yZWNwdXQKLWV2ZW4gdGhvdWdoIGl0IGlzIG5vIGxvbmdlciBzdWZmaWNpZW50IHRvIGJ5cGFzcyBTQUZFUi4gVGhlIGV4cGxvaXQKLWluICM3MDEzNDMgZGlkbid0IHdvcmsgYW55d2F5IGJlY2F1c2Ugb2YgZWFybGllciB3b3JrIHRvIHN0b3AgdGhlIGVycm9yCi1oYW5kbGVyIGJlaW5nIHVzZWQsIGJ1dCBuZXZlcnRoZWxlc3MsIHByZXZlbnQgYWNjZXNzIHRvIC5mb3JjZXB1dCBmcm9tCi0uc2V0dXNlcnBhcmFtczIuCi0KLUNWRTogQ1ZFLTIwMTktMTQ4MTEKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdC5naG9zdHNjcmlwdC5jb20vZ2hvc3RwZGwuZ2l0XQotCi1TaWduZWQtb2ZmLWJ5OiBTdGVmYW4gR2hpbmVhIDxzdGVmYW4uZ2hpbmVhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBSZXNvdXJjZS9Jbml0L2dzX2xldjIucHMgIHwgNiArKystLS0KLSBSZXNvdXJjZS9Jbml0L2dzX3BkZndyLnBzIHwgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L2dzX2xldjIucHMgYi9SZXNvdXJjZS9Jbml0L2dzX2xldjIucHMKLWluZGV4IDk4ZDU1ZmUuLmYxYjc3MWYgMTAwNjQ0Ci0tLS0gYS9SZXNvdXJjZS9Jbml0L2dzX2xldjIucHMKLSsrKyBiL1Jlc291cmNlL0luaXQvZ3NfbGV2Mi5wcwotQEAgLTE1OCw3ICsxNTgsNyBAQCBlbmQKLSAgICAgewotICAgICAgIHBvcCBwb3AKLSAgICAgfSBpZmVsc2UKLS0gIH0gZm9yYWxsCi0rICB9IGV4ZWN1dGVvbmx5IGZvcmFsbAotICAgICAgICAgJSBBIGNvbnRleHQgc3dpdGNoIG1pZ2h0IGhhdmUgb2NjdXJyZWQgZHVyaW5nIHRoZSBhYm92ZSBsb29wLAotICAgICAgICAgJSBjYXVzaW5nIHRoZSBpbnRlcnByZXRlci1sZXZlbCBwYXJhbWV0ZXJzIHRvIGJlIHJlc2V0LgotICAgICAgICAgJSBTZXQgdGhlbSBhZ2FpbiB0byB0aGUgbmV3IHZhbHVlcy4gIEZyb20gaGVyZSBvbiwgd2UgYXJlIHNhZmUsCi1AQCAtMjI5LDkgKzIyOSw5IEBAIGVuZAotICAgICAgICB7IHBvcCBwb3AKLSAgICAgICAgfQotICAgICAgIGlmZWxzZQotLSAgICB9Ci0rICAgIH0gZXhlY3V0ZW9ubHkKLSAgICBmb3JhbGwgcG9wCi0tfSAuYmluZCBvZGVmCi0rfSAuYmluZCBleGVjdXRlb25seSBvZGVmCi0gCi0gJSBJbml0aWFsaXplIHRoZSBwYXNzd29yZHMuCi0gJSBOT1RFOiB0aGUgbmFtZXMgU3RhcnRKb2JQYXNzd29yZCBhbmQgU3lzdGVtUGFyYW1zUGFzc3dvcmQgYXJlIGtub3duIHRvCi1kaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9nc19wZGZ3ci5wcyBiL1Jlc291cmNlL0luaXQvZ3NfcGRmd3IucHMKLWluZGV4IDAwYzE5ZmEuLmRmZTUwNGQgMTAwNjQ0Ci0tLS0gYS9SZXNvdXJjZS9Jbml0L2dzX3BkZndyLnBzCi0rKysgYi9SZXNvdXJjZS9Jbml0L2dzX3BkZndyLnBzCi1AQCAtNjUyLDExICs2NTIsMTEgQEAgY3VycmVudGRpY3QgLy5wZGZtYXJrcGFyYW1zIC51bmRlZgotICAgICAgICAgICBzeXN0ZW1kaWN0IC8ucGRmX2hvb2tlZF9EU0NfQ3JlYXRvciAvL3RydWUgLmZvcmNlcHV0Ci0gICAgICAgICB9IGV4ZWN1dGVvbmx5IGlmCi0gICAgICAgICBwb3AKLS0gICAgICB9IGlmCi0rICAgICAgfSBleGVjdXRlb25seSBpZgotICAgICB9IHsKLSAgICAgICBwb3AKLSAgICAgfSBpZmVsc2UKLS0gIH0KLSsgIH0gZXhlY3V0ZW9ubHkKLSAgIHsKLSAgICAgcG9wCi0gICB9IGlmZWxzZQotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTktMTQ4MTctMDAwMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE5LTE0ODE3LTAwMDEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3NmUyMWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTktMTQ4MTctMDAwMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3MCArMCwwIEBACi1Gcm9tIDBiYWZiZDljMTI3M2ZhYjBkYzc5ZmQyMGRiMGZmYzQ0NDM2ODNmOTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLZW4gU2hhcnAgPGtlbi5zaGFycEBhcnRpZmV4LmNvbT4KLURhdGU6IE1vbiwgMjkgQXByIDIwMTkgMTE6MTQ6MDYgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIFBERiBpbnRlcnByZXRlciAtIERlY29kZSBUb1VuaWNvZGUgZW50cmllcyBvZiB0aGUgZm9ybQotIC9JZGVudGl0eS1IL1YKLQotQnVnICM3MDEwMDMgIlRleHQgc2VhcmNoYWJpbGl0eSBicm9rZW4gZHVlIHRvIG9taXNzaW9uIG9mIC9Ub1VuaWNvZGUgL0lkZW50aXR5LUgiCi0KLVRoZSBQREYgcmVmZXJlbmNlcyBmcm9tIDEuMiB0b28gMi4wIGFsbCBzdGF0ZSB0aGF0IHRoZSB2YWx1ZSBhc3NvY2lhdGVkCi13aXRoIGEgVG9Vbmljb2RlIGtleSBpbiBhIEZvbnREZXNjcmlwdG9yIG11c3QgYmUgYSBzdHJlYW0gb2JqZWN0LiBIb3dldmVyCi10aGlzIGZpbGUgKGFuZCBvbmUgY2FzZSBzZWVuIHByZXZpb3VzbHksIGJ1ZyA2ODczNTEpIGhhdmUgRm9udERlc2NyaXB0b3IKLWRpY3Rpb25hcmllcyB3aGVyZSB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEgL1RvVW5pY29kZSBrZXkgaXMgYQotbmFtZSBvYmplY3QsIGluIGJvdGggY2FzZXMgL0lkZW50aXR5LUguCi0KLUFsdGhvdWdoIHRoaXMgaXMgY2xlYXJseSBub3QgbGVnYWwsIEFjcm9iYXQgbm90IG9ubHkgdG9sZXJhdGVzIGl0LCBpdAotYWN0dWFsbHkgdXNlcyBpdCBmb3Igc2VhcmNoL2NvcHkvcGFzdGUgKHNlZSBidWcgNzAxMDAzIGZvciBkZXRhaWxzKS4KLVdpdGhvdXQgdGhlIGtleSBBY3JvYmF0IGlzIHVuYWJsZSB0byBzdWNjZXNzZnVsbHkgc2VhcmNoIHRoZSBvdXRwdXQgZmlsZS4KLQotV2UgY2FuJ3Qgc2ltcGx5IHByZXNlcnZlIHRoZSBuYW1lIG9iamVjdCBhcyBhIFRvVW5pY29kZSB2YWx1ZTsgd2hlbgotaGFuZGxpbmcgVG9Vbmljb2RlIHdlIGFjdHVhbGx5IGRlY29kZSB0aGUgQ01hcCBhbmQgYnVpbGQgYQotR2x5cGhOYW1lczJVbmljb2RlIG1hcCAoYW4gaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIEcyVSBkYXRhCi1wcm9kdWNlZCBieSB0aGUgTWljcm9zb2Z0IFBvc3RTY3JpcHQgcHJpbnRlciBkcml2ZXIpLiBXaGVuIHdyaXRpbmcgdGhlCi1vdXRwdXQgZmlsZSB3ZSB1c2UgdGhhdCBpbmZvcm1hdGlvbiB0byBnZXQgYSBVbmljb2RlIHZhbHVlIGZvciBlYWNoCi1jaGFyYWN0ZXIgd2Ugd3JpdGUsIGFuZCBidWlsZCBhIG5ldyBUb1VuaWNvZGUgQ01hcCB1c2luZyB0aGF0LgotCi1UaGlzIGNvbW1pdCB0YWNrbGVzIHRoZSBwcm9ibGVtIGJ5IHByZS1zY2FubmluZyBmb3IgYSBuYW1lIG9iamVjdCBhbmQKLXRoZW4gY2hlY2tpbmcgdG8gc2VlIGlmIGl0cyBJZGVudGl0eS1IIG9yIElkZW50aXR5LVYgKGFsdGhvdWdoIHdlIGhhdmUKLW5vdCBzZWVuIGFuIElkZW50aXR5LVYsIHRoZXJlIHNlZW1zIG5vIHJlYXNvbiB3aHkgaXQgd291bGRuJ3QgYmUKLWVxdWFsbHkgdmFsaWQpLiBJZiB3ZSBmaW5kIGVpdGhlciBvZiB0aGVzZSB0aGVuIHdlIGNvbnN0cnVjdCBhCi1HbHlwaE5hbWVzMlVuaWNvZGUgdGFibGUgZm9yIGFsbCBwb3NzaWJsZSB2YWx1ZXMgKDAgLSA2NTUzNSkgYW5kIHN0b3JlCi10aGF0IHdpdGggdGhlIGZvbnQgYXMgbm9ybWFsLiBXaGVuIHdlIHdyaXRlIHRoZSBvdXRwdXQgZmlsZSB3ZSBvbmx5Ci13cml0ZSB0aGUgcmVxdWlyZWQgZW50cmllcyBmb3IgdGhlIHN1YnNldCBmb250LCBzbyB3ZSB3cml0ZSBhIG5vdwotY29tcGxldGVseSBsZWdhbCBUb1VuaWNvZGUgQ01hcCwgYW5kIEFjcm9iYXQgaXMgZXF1YWxseSBoYXBweSB3aXRoIHRoYXQKLWFzIHRoZSBvcmlnaW5hbCBuYW1lLgotCi1JZiB0aGUgVG9Vbmljb2RlIHZhbHVlIGlzbid0IGEgbmFtZSBvYmplY3QsIG9yIGlzbid0IG9uZSBvZiB0aGUKLWlkZW50aXRpZXMgdGhlbiB3ZSBwcm9jZWVkIGFzIGJlZm9yZS4gVGhpcyBtZWFucyB3ZSB3aWxsIHByaW50IGEKLXdhcm5pbmcgZm9yIG5vbiBjb25mb3JtaW5nIFRvVW5pY29kZSBlbnRyaWVzIGFuZCBpZ25vcmUgdGhlbS4KLQotQ1ZFOiBDVkUtMjAxOS0xNDgxNwotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZ2l0Oi8vZ2l0Lmdob3N0c2NyaXB0LmNvbS9naG9zdHBkbC5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBHaGluZWEgPHN0ZWZhbi5naGluZWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIFJlc291cmNlL0luaXQvcGRmX2ZvbnQucHMgfCAyMDAgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTI5IGluc2VydGlvbnMoKyksIDcxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9wZGZfZm9udC5wcyBiL1Jlc291cmNlL0luaXQvcGRmX2ZvbnQucHMKLWluZGV4IDlmYjg1ZjYuLjJkZjMzMDMgMTAwNjQ0Ci0tLS0gYS9SZXNvdXJjZS9Jbml0L3BkZl9mb250LnBzCi0rKysgYi9SZXNvdXJjZS9Jbml0L3BkZl9mb250LnBzCi1AQCAtNjIxLDg2ICs2MjEsMTQ0IEBAIGN1cnJlbnRkaWN0IGVuZCByZWFkb25seSBkZWYKLSAgICAgICAgIFBERkRFQlVHIHsKLSAgICAgICAgICAgKC5wcm9jZXNzVG9Vbmljb2RlIGJlZykgPQotICAgICAgICAgfSBpZgotLSAgICAgICAgMiBpbmRleCAvVG9Vbmljb2RlIGtub3dub2dldCB7Ci0tICAgICAgICAgIGR1cCB0eXBlIC9kaWN0dHlwZSBlcSB7IGR1cCAvRmlsZSBrbm93biBub3QgfSB7IC8vdHJ1ZSB9IGlmZWxzZSB7Ci0tICAgICAgICAgICAgJSBXZSB1bmRlZmluZSB3cm9uZyAvTGVuZ3RoIGFuZCBkZWZpbmUgL0ZpbGUgaW4gc3RyZWFtIGRpY3Rpb25hcmllcy4KLS0gICAgICAgICAgICAlIEJ1ZzY4NzM1MS5wZGYgZGVmaW5lcyAvVG9Vbmljb2RlIC9JZGVudGl0eS1ILCB3aGF0IGlzIGluY29ycmVjdC4KLS0gICAgICAgICAgICAoICAgKioqKiBXYXJuaW5nOiBJZ25vcmluZyBiYWQgVG9Vbmljb2RlIENNYXAuXG4pICBwZGZmb3JtYXR3YXJuaW5nCi0tICAgICAgICAgICAgcG9wCi0rCi0rICAgICAgICAyIGluZGV4IC9Ub1VuaWNvZGUga25vd25vZ2V0Ci0rICAgICAgICB7Ci0rICAgICAgICAgICAgZHVwIHR5cGUgL25hbWV0eXBlIGVxIHsKLSsgICAgICAgICAgICAgICUgVGhpcyBpcyBjb250cmFyeSB0byB0aGUgc3BlY2lmaWNhdGlvbiBidXQgaXQgc2VlbXMgdGhhdCBBY3JvYmF0IGF0IGxlYXN0IHdpbGwgYWNjZXB0Ci0rICAgICAgICAgICAgICAlIGEgVG9Vbmljb2RlIHdpdGggYSB2YWx1ZSBvZiBJZGVudGl0eS1IICphbmQqIHdpbGwgdXNlIHRoYXQgZm9yIHNlYXJjaCwgY29weS9wYXN0ZS4KLSsgICAgICAgICAgICAgICUgV2UgY2FuJ3QgcGFzcyB0aHJvdWdoIGEgbmFtZSwgc28gdGhlIGJlc3Qgd2UgY2FuIGRvIGlzIGJ1aWxkIGEgR2x5cGhOYW1lczJVbmljb2RlCi0rICAgICAgICAgICAgICAlIG1hcCBtYXRjaGluZyB0aGF0IHdoaWNoIHdvdWxkIGhhdmUgYmVlbiBnZW5lcmF0ZWQgYnkgYSBmdWxsIDE2LWJpdCBJZGVudGl0eSBDTWFwCi0rICAgICAgICAgICAgICAlCi0rICAgICAgICAgICAgICAlIFNlZSBidWcgbnVtYmVycyA3MDEwMDMgYW5kIDY4NzM1MQotKyAgICAgICAgICAgICAgJQotKyAgICAgICAgICAgICAgZHVwIC9JZGVudGl0eS1IIGVxIDEgaW5kZXggL0lkZW50aXR5LVYgZXEgb3J7Ci0rICAgICAgICAgICAgICAgIHBvcAotKyAgICAgICAgICAgICAgICAxIGluZGV4IC9Gb250SW5mbyAua25vd25nZXQgbm90IHsKLSsgICAgICAgICAgICAgICAgICBjdXJyZW50Z2xvYmFsIDIgaW5kZXggZHVwIGdjaGVjayBzZXRnbG9iYWwKLSsgICAgICAgICAgICAgICAgICAvRm9udEluZm8gNSBkaWN0IGR1cCA1IDEgcm9sbCAuZm9yY2VwdXQKLSsgICAgICAgICAgICAgICAgICBzZXRnbG9iYWwKLSsgICAgICAgICAgICAgICAgfSBpZgotKyAgICAgICAgICAgICAgICBkdXAgL0dseXBoTmFtZXMyVW5pY29kZSAua25vd25nZXQgbm90IHsKLSsgICAgICAgICAgICAgICAgICAvL3RydWUgICAgICAgICAgICAgICAgICAgICAgICAlIE5vIGV4aXN0aW5nIEcyVSwgbWFrZSBvbmUKLSsgICAgICAgICAgICAgICAgfSB7Ci0rICAgICAgICAgICAgICAgICAgZHVwIHdjaGVjayB7Ci0rICAgICAgICAgICAgICAgICAgICAvL2ZhbHNlICAgICAgICAgICAgICAgICAgICAgJSBFeGlzdGluZywgd3JpdGVhYmxlIEcyVSwgZG9uJ3QgbWFrZSBuZXcgb25lCi0rICAgICAgICAgICAgICAgICAgfSB7Ci0rICAgICAgICAgICAgICAgICAgICBwb3AgLy90cnVlICAgICAgICAgICAgICAgICAgICAgICAgICAlIEV4aXN0aW5nIHJlYWQgb25seSBHMlUsIG1ha2UgbmV3IG9uZQotKyAgICAgICAgICAgICAgICAgIH0gaWZlbHNlCi0rICAgICAgICAgICAgICAgIH0gaWZlbHNlCi0rICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICBjdXJyZW50Z2xvYmFsIGV4Y2ggZHVwIGdjaGVjayBzZXRnbG9iYWwKLSsgICAgICAgICAgICAgICAgICBkdXAgL0dseXBoTmFtZXMyVW5pY29kZSAxMDAgZGljdCBkdXAgNCAxIHJvbGwgLmZvcmNlcHV0Ci0rICAgICAgICAgICAgICAgICAgMyAyIHJvbGwgc2V0Z2xvYmFsCi0rICAgICAgICAgICAgICAgIH0gaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdCBlbmNvZGluZ3xudWxsIGZvbnQtaW5mbyBnMnUKLSsKLSsgICAgICAgICAgICAgICAgMCAxIDY1NTM1ewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBnMnUgaW5kZXgKLSsgICAgICAgICAgICAgICAgICBkdXAgZHVwIDI1NiBtb2QgZXhjaCAyNTYgaWRpdiAgICAgICAgICUgZzJ1IGluZGV4IGxvLWJ5dGUgaGktYnl0ZQotKyAgICAgICAgICAgICAgICAgIDIgc3RyaW5nIGR1cCAwIDQgLTEgcm9sbCAgICAgICAgICAgICAgJSBnMnUgaW5kZXggbG8tYnl0ZSAoKSAoKSAwIGhpLWJ5dGUKLSsgICAgICAgICAgICAgICAgICBwdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZzJ1IGluZGV4IGxvLWJ5dGUgKHgpCi0rICAgICAgICAgICAgICAgICAgZHVwIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGcydSBpbmRleCBsby1ieXRlICh4KSAoeCkgMQotKyAgICAgICAgICAgICAgICAgIDQgLTEgcm9sbCBwdXQgICAgICAgICAgICAgICAgICAgICAgICAgJSBnMnUgaW5kZXggKHgpICh4KSAxIGxvLWJ5dGUgLT4gZGljdCBpbmRleCAoeHgpCi0rICAgICAgICAgICAgICAgICAgMiBpbmRleCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGcydSBpbmRleCAoeHgpIGRpY3QKLSsgICAgICAgICAgICAgICAgICAzIDEgcm9sbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZzJ1IGcydSBpbmRleCAoeHgpCi0rICAgICAgICAgICAgICAgICAgcHV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGcydQotKyAgICAgICAgICAgICAgICB9IGZvcgotKyAgICAgICAgICAgICAgICBwb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBmb250LXJlcyBmb250LWRpY3QgZW5jb2Rpbmd8bnVsbCBmb250LWluZm8KLSsgICAgICAgICAgICAgICAgcG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0IGVuY29kaW5nfG51bGwKLSsgICAgICAgICAgICAgICAgLy9mYWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgV2UgYnVpbHQgYSBHbHlwaE5hbWVzMlVuaWNvZGUgdGFibGUsIGRvbid0IG5lZWQgdG8gcHJvY2VzcyBmdXJ0aGVyCi0rICAgICAgICAgICAgICB9ewotKyAgICAgICAgICAgICAgICAvL3RydWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBuYW1lIGlzIG5vdCBJZGVudGl0eS1WIG9yIEgsIGZhaWwgYnkgZmFsbGluZyB0aHJvdWdoCi0rICAgICAgICAgICAgICB9aWZlbHNlCi0gICAgICAgICAgIH0gewotLSAgICAgICAgICAgIC9QREZTY2FuUnVsZXMgLmdldHVzZXJwYXJhbSBkdXAgLy9udWxsIGVxIHsKLS0gICAgICAgICAgICAgIHBvcCAvL1BERlNjYW5SdWxlc19udWxsCi0tICAgICAgICAgICAgfSB7Ci0tICAgICAgICAgICAgICAxIGRpY3QgZHVwIC9QREZTY2FuUnVsZXMgNCAtMSByb2xsIHB1dAotLSAgICAgICAgICAgIH0gaWZlbHNlCi0tICAgICAgICAgICAgLy9QREZTY2FuUnVsZXNfdHJ1ZSBzZXR1c2VycGFyYW1zCi0tICAgICAgICAgICAgUERGZmlsZSBmaWxlcG9zaXRpb24KLS0gICAgICAgICAgICAzIC0xIHJvbGwKLS0gICAgICAgICAgICBjb3VudCAxIHN1YgotLSAgICAgICAgICAgIGNvdW50ZGljdHN0YWNrCi0tICAgICAgICAgICAgeyAvL2ZhbHNlIHJlc29sdmVzdHJlYW0KLS0gICAgICAgICAgICAgICUgRm9sbG93aW5nIEFjcm9iYXQgd2UgaWdub3JlIGV2ZXJ5dGhpbmcgb3V0c2lkZQotLSAgICAgICAgICAgICAgJSAgIGJlZ2luY29kZXNwYWNlcmFuZ2UgLi4gZW5kY21hcC4KLS0gICAgICAgICAgICAgIGR1cCAwIChiZWdpbmNvZGVzcGFjZXJhbmdlKSAvU3ViRmlsZURlY29kZSBmaWx0ZXIgZmx1c2hmaWxlCi0tICAgICAgICAgICAgICAvQ0lESW5pdCAvUHJvY1NldCBmaW5kcmVzb3VyY2UgYmVnaW4KLS0gICAgICAgICAgICAgIC8vVG9Vbmljb2RlQ01hcFJlYWRlciBiZWdpbgotLSAgICAgICAgICAgICAgMTIgZGljdCBiZWdpbgotLSAgICAgICAgICAgICAgL0NNYXBUeXBlIDIgZGVmCi0tICAgICAgICAgICAgICBtYXJrIGV4Y2ggJSBlbXVsYXRlICdiZWdpbmNvZGVzcGFjZXJhbmdlJwotLSAgICAgICAgICAgICAgMCAoZW5kY21hcCkgL1N1YkZpbGVEZWNvZGUgZmlsdGVyIGN2eCAvYmVnaW5jbWFwIGN2eCBleGNoIDIgLmV4ZWNuCi0tICAgICAgICAgICAgICBlbmRjbWFwCi0tICAgICAgICAgICAgICB1c2VyZGljdCAvLmxhc3RUb1VuaWNvZGUgY3VycmVudGRpY3QgcHV0Ci0tICAgICAgICAgICAgICBlbmQgZW5kIGVuZAotLSAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAvL3RydWUKLSsgICAgICAgICAgfSBpZmVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgbm90IGEgbmFtZSwgdHJ5IGFzIGEgZGljdGlvbmFyeSAoYXMgc3BlY2lmaWVkKQotIAotLSAgICAgICAgICAgIFBERlNUT1BPTkVSUk9SIHsKLS0gICAgICAgICAgICAgIHsgZXhlYyB9IDAgZ2V0Ci0tICAgICAgICAgICAgICAvL2ZhbHNlCi0tICAgICAgICAgICAgICA1IC0yIHJvbGwKLS0gICAgICAgICAgICAgIDUKLSsgICAgICAgICAgJSBJZiB0aGUgVG9Vbmljb2RlIGlzbid0IGEgbmFtZSwgb3IgdGhlIG5hbWUgaXNuJ3QgSWRlbnRpdHktViBvciAtSCB0aGVuIGZvbGxvdyB0aGUgc3BlY2lmaWNhdGlvbgotKyAgICAgICAgICAlIElmIGl0cyBub3QgYSBkaWN0aW9uYXJ5IHR5cGUgdGhyb3cgYW4gZXJyb3IsIG90aGVyd2lzZSBkZWNvZGUgaXQgYW5kIGJ1aWxkIGEgR2x5cGhOYW1lczJVbmljb2RlCi0rICAgICAgICAgICUKLSsgICAgICAgICAgewotKyAgICAgICAgICAgIGR1cCB0eXBlIC9kaWN0dHlwZSBlcSB7IGR1cCAvRmlsZSBrbm93biBub3QgfSB7IC8vdHJ1ZSB9IGlmZWxzZSB7Ci0rICAgICAgICAgICAgICAlIFdlIHVuZGVmaW5lIHdyb25nIC9MZW5ndGggYW5kIGRlZmluZSAvRmlsZSBpbiBzdHJlYW0gZGljdGlvbmFyaWVzLgotKyAgICAgICAgICAgICAgJSBCdWc2ODczNTEucGRmIGRlZmluZXMgL1RvVW5pY29kZSAvSWRlbnRpdHktSCwgd2hhdCBpcyBpbmNvcnJlY3QuCi0rICAgICAgICAgICAgICAoICAgKioqKiBXYXJuaW5nOiBJZ25vcmluZyBiYWQgVG9Vbmljb2RlIENNYXAuXG4pICBwZGZmb3JtYXR3YXJuaW5nCi0rICAgICAgICAgICAgICBwb3AKLSAgICAgICAgICAgICB9IHsKLS0gICAgICAgICAgICAgIHsgc3RvcHBlZCB9IDAgZ2V0Ci0tICAgICAgICAgICAgICA0IDIgcm9sbAotLSAgICAgICAgICAgICAgNAotLSAgICAgICAgICAgIH0gaWZlbHNlCi0tICAgICAgICAgICAgYXJyYXkgYXN0b3JlIGN2eCBleGVjCi0rICAgICAgICAgICAgICAvUERGU2NhblJ1bGVzIC5nZXR1c2VycGFyYW0gZHVwIC8vbnVsbCBlcSB7Ci0rICAgICAgICAgICAgICAgIHBvcCAvL1BERlNjYW5SdWxlc19udWxsCi0rICAgICAgICAgICAgICB9IHsKLSsgICAgICAgICAgICAgICAgMSBkaWN0IGR1cCAvUERGU2NhblJ1bGVzIDQgLTEgcm9sbCBwdXQKLSsgICAgICAgICAgICAgIH0gaWZlbHNlCi0rICAgICAgICAgICAgICAvL1BERlNjYW5SdWxlc190cnVlIHNldHVzZXJwYXJhbXMKLSsgICAgICAgICAgICAgIFBERmZpbGUgZmlsZXBvc2l0aW9uCi0rICAgICAgICAgICAgICAzIC0xIHJvbGwKLSsgICAgICAgICAgICAgIGNvdW50IDEgc3ViCi0rICAgICAgICAgICAgICBjb3VudGRpY3RzdGFjawotKyAgICAgICAgICAgICAgeyAvL2ZhbHNlIHJlc29sdmVzdHJlYW0KLSsgICAgICAgICAgICAgICAgJSBGb2xsb3dpbmcgQWNyb2JhdCB3ZSBpZ25vcmUgZXZlcnl0aGluZyBvdXRzaWRlCi0rICAgICAgICAgICAgICAgICUgICBiZWdpbmNvZGVzcGFjZXJhbmdlIC4uIGVuZGNtYXAuCi0rICAgICAgICAgICAgICAgIGR1cCAwIChiZWdpbmNvZGVzcGFjZXJhbmdlKSAvU3ViRmlsZURlY29kZSBmaWx0ZXIgZmx1c2hmaWxlCi0rICAgICAgICAgICAgICAgIC9DSURJbml0IC9Qcm9jU2V0IGZpbmRyZXNvdXJjZSBiZWdpbgotKyAgICAgICAgICAgICAgICAvL1RvVW5pY29kZUNNYXBSZWFkZXIgYmVnaW4KLSsgICAgICAgICAgICAgICAgMTIgZGljdCBiZWdpbgotKyAgICAgICAgICAgICAgICAvQ01hcFR5cGUgMiBkZWYKLSsgICAgICAgICAgICAgICAgbWFyayBleGNoICUgZW11bGF0ZSAnYmVnaW5jb2Rlc3BhY2VyYW5nZScKLSsgICAgICAgICAgICAgICAgMCAoZW5kY21hcCkgL1N1YkZpbGVEZWNvZGUgZmlsdGVyIGN2eCAvYmVnaW5jbWFwIGN2eCBleGNoIDIgLmV4ZWNuCi0rICAgICAgICAgICAgICAgIGVuZGNtYXAKLSsgICAgICAgICAgICAgICAgdXNlcmRpY3QgLy5sYXN0VG9Vbmljb2RlIGN1cnJlbnRkaWN0IHB1dAotKyAgICAgICAgICAgICAgICBlbmQgZW5kIGVuZAotKyAgICAgICAgICAgICAgfQotIAotLSAgICAgICAgICAgIGNvdW50ZGljdHN0YWNrIGV4Y2ggc3ViIDAgLm1heCB7IGVuZCB9IHJlcGVhdAotLSAgICAgICAgICAgIGNvdW50IGV4Y2ggc3ViIDIgc3ViIDAgLm1heCB7IGV4Y2ggcG9wIH0gcmVwZWF0Ci0tICAgICAgICAgICAgMyAxIHJvbGwgICAgICAgICAgICAgICAgICAgICAlIFN0YWNoIHRoZSBzdG9wIGZsYWcuCi0tICAgICAgICAgICAgUERGZmlsZSBleGNoIHNldGZpbGVwb3NpdGlvbgotLSAgICAgICAgICAgIHNldHVzZXJwYXJhbXMKLS0gICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAoICAgKioqKiBXYXJuaW5nOiBGYWlsZWQgdG8gcmVhZCBUb1VuaWNvZGUgQ01hcC5cbikgIHBkZmZvcm1hdHdhcm5pbmcKLS0gICAgICAgICAgICB9IHsKLS0gICAgICAgICAgICAgIDEgaW5kZXggL0ZvbnRJbmZvIC5rbm93bmdldCBub3QgewotLSAgICAgICAgICAgICAgICBjdXJyZW50Z2xvYmFsIDIgaW5kZXggZHVwIGdjaGVjayBzZXRnbG9iYWwKLS0gICAgICAgICAgICAgICAgL0ZvbnRJbmZvIDUgZGljdCBkdXAgNSAxIHJvbGwgLmZvcmNlcHV0Ci0tICAgICAgICAgICAgICAgIHNldGdsb2JhbAotLSAgICAgICAgICAgICAgfSBpZgotLSAgICAgICAgICAgICAgZHVwIC9HbHlwaE5hbWVzMlVuaWNvZGUgLmtub3duZ2V0IG5vdCB7Ci0tICAgICAgICAgICAgICAgIC8vdHJ1ZSAgICAgICAgICAgICAgICAgICAgICAgICUgTm8gZXhpc3RpbmcgRzJVLCBtYWtlIG9uZQotKyAgICAgICAgICAgICAgUERGU1RPUE9ORVJST1IgewotKyAgICAgICAgICAgICAgICB7IGV4ZWMgfSAwIGdldAotKyAgICAgICAgICAgICAgICAvL2ZhbHNlCi0rICAgICAgICAgICAgICAgIDUgLTIgcm9sbAotKyAgICAgICAgICAgICAgICA1Ci0rICAgICAgICAgICAgICB9IHsKLSsgICAgICAgICAgICAgICAgeyBzdG9wcGVkIH0gMCBnZXQKLSsgICAgICAgICAgICAgICAgNCAyIHJvbGwKLSsgICAgICAgICAgICAgICAgNAotKyAgICAgICAgICAgICAgfSBpZmVsc2UKLSsgICAgICAgICAgICAgIGFycmF5IGFzdG9yZSBjdnggZXhlYwotKwotKyAgICAgICAgICAgICAgY291bnRkaWN0c3RhY2sgZXhjaCBzdWIgMCAubWF4IHsgZW5kIH0gcmVwZWF0Ci0rICAgICAgICAgICAgICBjb3VudCBleGNoIHN1YiAyIHN1YiAwIC5tYXggeyBleGNoIHBvcCB9IHJlcGVhdAotKyAgICAgICAgICAgICAgMyAxIHJvbGwgICAgICAgICAgICAgICAgICAgICAlIFN0YWNoIHRoZSBzdG9wIGZsYWcuCi0rICAgICAgICAgICAgICBQREZmaWxlIGV4Y2ggc2V0ZmlsZXBvc2l0aW9uCi0rICAgICAgICAgICAgICBzZXR1c2VycGFyYW1zCi0rICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICggICAqKioqIFdhcm5pbmc6IEZhaWxlZCB0byByZWFkIFRvVW5pY29kZSBDTWFwLlxuKSAgcGRmZm9ybWF0d2FybmluZwotICAgICAgICAgICAgICAgfSB7Ci0tICAgICAgICAgICAgICAgIGR1cCB3Y2hlY2sgewotLSAgICAgICAgICAgICAgICAgIC8vZmFsc2UgICAgICAgICAgICAgICAgICAgICAlIEV4aXN0aW5nLCB3cml0ZWFibGUgRzJVLCBkb24ndCBtYWtlIG5ldyBvbmUKLSsgICAgICAgICAgICAgICAgMSBpbmRleCAvRm9udEluZm8gLmtub3duZ2V0IG5vdCB7Ci0rICAgICAgICAgICAgICAgICAgY3VycmVudGdsb2JhbCAyIGluZGV4IGR1cCBnY2hlY2sgc2V0Z2xvYmFsCi0rICAgICAgICAgICAgICAgICAgL0ZvbnRJbmZvIDUgZGljdCBkdXAgNSAxIHJvbGwgLmZvcmNlcHV0Ci0rICAgICAgICAgICAgICAgICAgc2V0Z2xvYmFsCi0rICAgICAgICAgICAgICAgIH0gaWYKLSsgICAgICAgICAgICAgICAgZHVwIC9HbHlwaE5hbWVzMlVuaWNvZGUgLmtub3duZ2V0IG5vdCB7Ci0rICAgICAgICAgICAgICAgICAgLy90cnVlICAgICAgICAgICAgICAgICAgICAgICAgJSBObyBleGlzdGluZyBHMlUsIG1ha2Ugb25lCi0gICAgICAgICAgICAgICAgIH0gewotLSAgICAgICAgICAgICAgICAgIHBvcCAvL3RydWUgICAgICAgICAgICAgICAgICAgICAgICAgICUgRXhpc3RpbmcgcmVhZCBvbmx5IEcyVSwgbWFrZSBuZXcgb25lCi0rICAgICAgICAgICAgICAgICAgZHVwIHdjaGVjayB7Ci0rICAgICAgICAgICAgICAgICAgICAvL2ZhbHNlICAgICAgICAgICAgICAgICAgICAgJSBFeGlzdGluZywgd3JpdGVhYmxlIEcyVSwgZG9uJ3QgbWFrZSBuZXcgb25lCi0rICAgICAgICAgICAgICAgICAgfSB7Ci0rICAgICAgICAgICAgICAgICAgICBwb3AgLy90cnVlICAgICAgICAgICAgICAgICAgICAgICAgICAlIEV4aXN0aW5nIHJlYWQgb25seSBHMlUsIG1ha2UgbmV3IG9uZQotKyAgICAgICAgICAgICAgICAgIH0gaWZlbHNlCi0gICAgICAgICAgICAgICAgIH0gaWZlbHNlCi0rICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICBjdXJyZW50Z2xvYmFsIGV4Y2ggZHVwIGdjaGVjayBzZXRnbG9iYWwKLSsgICAgICAgICAgICAgICAgICBkdXAgL0dseXBoTmFtZXMyVW5pY29kZSAxMDAgZGljdCBkdXAgNCAxIHJvbGwgLmZvcmNlcHV0Ci0rICAgICAgICAgICAgICAgICAgMyAyIHJvbGwgc2V0Z2xvYmFsCi0rICAgICAgICAgICAgICAgIH0gaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdCBlbmNvZGluZ3xudWxsIGZvbnQtaW5mbyBnMnUKLSsgICAgICAgICAgICAgICAgZXhjaCBwb3AgZXhjaCAgICAgICAgICAgICAgICAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0IGcydSBlbmNvZGluZ3xudWxsCi0rICAgICAgICAgICAgICAgIHVzZXJkaWN0IC8ubGFzdFRvVW5pY29kZSBnZXQgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdCBnMnUgRW5jb2Rpbmd8bnVsbCBDTWFwCi0rICAgICAgICAgICAgICAgIC5jb252ZXJ0X1RvVW5pY29kZS1pbnRvLWcydSAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdAotKyAgICAgICAgICAgICAgICAvL251bGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBmb250LXJlcyBmb250LWRpY3QgLy9udWxsCi0gICAgICAgICAgICAgICB9IGlmZWxzZQotLSAgICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICBjdXJyZW50Z2xvYmFsIGV4Y2ggZHVwIGdjaGVjayBzZXRnbG9iYWwKLS0gICAgICAgICAgICAgICAgZHVwIC9HbHlwaE5hbWVzMlVuaWNvZGUgMTAwIGRpY3QgZHVwIDQgMSByb2xsIC5mb3JjZXB1dAotLSAgICAgICAgICAgICAgICAzIDIgcm9sbCBzZXRnbG9iYWwKLS0gICAgICAgICAgICAgIH0gaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdCBlbmNvZGluZ3xudWxsIGZvbnQtaW5mbyBnMnUKLS0gICAgICAgICAgICAgIGV4Y2ggcG9wIGV4Y2ggICAgICAgICAgICAgICAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdCBnMnUgZW5jb2Rpbmd8bnVsbAotLSAgICAgICAgICAgICAgdXNlcmRpY3QgLy5sYXN0VG9Vbmljb2RlIGdldCAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0IGcydSBFbmNvZGluZ3xudWxsIENNYXAKLS0gICAgICAgICAgICAgIC5jb252ZXJ0X1RvVW5pY29kZS1pbnRvLWcydSAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdAotLSAgICAgICAgICAgICAgLy9udWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0IC8vbnVsbAotICAgICAgICAgICAgIH0gaWZlbHNlCi0tICAgICAgICAgIH0gaWZlbHNlCi0tICAgICAgICB9IGlmCi0tICAgICAgICBQREZERUJVRyB7Ci0tICAgICAgICAgICgucHJvY2Vzc1RvVW5pY29kZSBlbmQpID0KLSsgICAgICAgICAgfSBpZgotKyAgICAgICAgICBQREZERUJVRyB7Ci0rICAgICAgICAgICAgKC5wcm9jZXNzVG9Vbmljb2RlIGVuZCkgPQotKyAgICAgICAgICB9IGlmCi0gICAgICAgICB9IGlmCi0gICAgICAgfSBpZgotICAgICB9IHN0b3BwZWQKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE5LTE0ODE3LTAwMDIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxOS0xNDgxNy0wMDAyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzQ4ZmZmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE5LTE0ODE3LTAwMDIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMzYgKzAsMCBAQAotRnJvbSBjZDFiMWNhY2FkYWMyNDc5ZTI5MWVmZTYxMTk3OWJkYzFiM2JkYjE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2VuIFNoYXJwIDxrZW4uc2hhcnBAYXJ0aWZleC5jb20+Ci1EYXRlOiBXZWQsIDIxIEF1ZyAyMDE5IDEwOjEwOjUxICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBQREYgaW50ZXJwcmV0ZXIgLSByZXZpZXcgLmZvcmNlcHV0IHNlY3VyaXR5Ci0KLUJ1ZyAjNzAxNDUwICJTYWZlciBNb2RlIEJ5cGFzcyBieSAuZm9yY2VwdXQgRXhwb3N1cmUgaW4gLnBkZmV4ZWN0b2tlbiIKLQotQnkgYWJ1c2luZyB0aGUgZXJyb3IgaGFuZGxlciBpdCB3YXMgcG9zc2libGUgdG8gZ2V0IHRoZSBQREZERUJVRyBwb3J0aW9uCi1vZiAucGRmZXhlY3Rva2VuLCB3aGljaCB1c2VzIC5mb3JjZXB1dCBsZWZ0IHJlYWRhYmxlLgotCi1BZGQgYW4gZXhlY3V0ZW9ubHkgYXBwcm9wcmlhdGVseSB0byBtYWtlIHN1cmUgdGhhdCBjbGF1c2UgaXNuJ3QgcmVhZGFibGUKLW5vIG1zdHRlciB3aGF0LgotCi1SZXZpZXcgYWxsIHRoZSB1c2VzIG9mIC5mb3JjZXB1dCBzZWFyY2hpbmcgZm9yIHNpbWlsYXIgY2FzZXMsIGFkZAotZXhlY3V0ZW9ubHkgYXMgcmVxdWlyZWQgdG8gc2VjdXJlIHRob3NlLiBBbGwgY2FzZXMgaW4gdGhlIFBvc3RTY3JpcHQKLXN1cHBvcnQgZmlsZXMgc2VlbSB0byBiZSBjb3ZlcmVkIGFscmVhZHkuCi0KLUNWRTogQ1ZFLTIwMTktMTQ4MTcKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdC5naG9zdHNjcmlwdC5jb20vZ2hvc3RwZGwuZ2l0XQotCi1TaWduZWQtb2ZmLWJ5OiBTdGVmYW4gR2hpbmVhIDxzdGVmYW4uZ2hpbmVhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBSZXNvdXJjZS9Jbml0L3BkZl9iYXNlLnBzIHwgIDIgKy0KLSBSZXNvdXJjZS9Jbml0L3BkZl9kcmF3LnBzIHwgMTQgKysrKysrKy0tLS0tLS0KLSBSZXNvdXJjZS9Jbml0L3BkZl9mb250LnBzIHwgMjkgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KLSBSZXNvdXJjZS9Jbml0L3BkZl9tYWluLnBzIHwgIDYgKysrLS0tCi0gUmVzb3VyY2UvSW5pdC9wZGZfb3BzLnBzICB8IDExICsrKysrKy0tLS0tCi0gNSBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvcGRmX2Jhc2UucHMgYi9SZXNvdXJjZS9Jbml0L3BkZl9iYXNlLnBzCi1pbmRleCAxYTIxOGY0Li5jZmZkZTVjIDEwMDY0NAotLS0tIGEvUmVzb3VyY2UvSW5pdC9wZGZfYmFzZS5wcwotKysrIGIvUmVzb3VyY2UvSW5pdC9wZGZfYmFzZS5wcwotQEAgLTE1Nyw3ICsxNTcsNyBAQCBjdXJyZW50ZGljdCAvbnVtLWNoYXJzLWRpY3QgLnVuZGVmCi0gICAgIHsKLSAgICAgICBkdXAgPT1vbmx5ICgpID0gZmx1c2gKLSAgICAgfSBpZmVsc2UgJSBQREZTVEVQCi0tICB9IGlmICUgUERGREVCVUcKLSsgIH0gZXhlY3V0ZW9ubHkgaWYgJSBQREZERUJVRwotICAgMiBjb3B5IC5rbm93bmdldCB7Ci0gICAgIGV4Y2ggcG9wIGV4Y2ggcG9wIGV4Y2ggcG9wIGV4ZWMKLSAgIH0gewotZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvcGRmX2RyYXcucHMgYi9SZXNvdXJjZS9Jbml0L3BkZl9kcmF3LnBzCi1pbmRleCBlMThhN2MyLi4wYTM5MjRjIDEwMDY0NAotLS0tIGEvUmVzb3VyY2UvSW5pdC9wZGZfZHJhdy5wcwotKysrIGIvUmVzb3VyY2UvSW5pdC9wZGZfZHJhdy5wcwotQEAgLTUwMSw4ICs1MDEsOCBAQCBlbmQKLSAgICAgICAoICAgICAgICBPdXRwdXQgbWF5IGJlIGluY29ycmVjdC5cbikgcGRmZm9ybWF0ZXJyb3IKLSAgICAgICAvL3BkZmRpY3QgLy5nc193YXJuaW5nX2lzc3VlZCAvL3RydWUgLmZvcmNlcHV0Ci0gICAgICAgUERGU1RPUE9ORVJST1IgeyAvZ3MgL3VuZGVmaW5lZCBzaWduYWxlcnJvciB9IGlmCi0tICAgIH0gaWYKLS0gIH0KLSsgICAgfSBleGVjdXRlb25seSBpZgotKyAgfSBleGVjdXRlb25seQotICAgaWZlbHNlCi0gfSBiaW5kIGV4ZWN1dGVvbmx5IGRlZgotIAotQEAgLTExNDIsNyArMTE0Miw3IEBAIGN1cnJlbnRkaWN0IGVuZCByZWFkb25seSBkZWYKLSAgICAgICAgICAgLnNldGdsb2JhbAotICAgICAgICAgICBwZGZmb3JtYXRlcnJvcgotICAgICAgICAgfSBleGVjdXRlb25seSBpZmVsc2UKLS0gICAgICB9Ci0rICAgICAgfSBleGVjdXRlb25seQotICAgICAgIHsKLSAgICAgICAgIGN1cnJlbnRnbG9iYWwgLy9wZGZkaWN0IGdjaGVjayAuc2V0Z2xvYmFsCi0gICAgICAgICAvL3BkZmRpY3QgLy5RcXdhcm5pbmdfaXNzdWVkIC8vdHJ1ZSAuZm9yY2VwdXQKLUBAIC0xMTUwLDggKzExNTAsOCBAQCBjdXJyZW50ZGljdCBlbmQgcmVhZG9ubHkgZGVmCi0gICAgICAgICBwZGZmb3JtYXRlcnJvcgotICAgICAgIH0gZXhlY3V0ZW9ubHkgaWZlbHNlCi0gICAgICAgZW5kCi0tICAgIH0gaWZlbHNlCi0tICB9IGxvb3AKLSsgICAgfSBleGVjdXRlb25seSBpZmVsc2UKLSsgIH0gZXhlY3V0ZW9ubHkgbG9vcAotICAgewotICAgICAoXG4gICAqKioqIEVycm9yOiBGaWxlIGhhcyB1bmJhbGFuY2VkIHEvUSBvcGVyYXRvcnMgXCh0b28gbWFueSBxJ3NcKVxuICAgICAgICAgICAgICAgT3V0cHV0IG1heSBiZSBpbmNvcnJlY3QuXG4pCi0gICAgIC8vcGRmZGljdCAvLlFxd2FybmluZ19pc3N1ZWQgLmtub3duZ2V0Ci1AQCAtMTE2NSwxNCArMTE2NSwxNCBAQCBjdXJyZW50ZGljdCBlbmQgcmVhZG9ubHkgZGVmCi0gICAgICAgICAuc2V0Z2xvYmFsCi0gICAgICAgICBwZGZmb3JtYXRlcnJvcgotICAgICAgIH0gZXhlY3V0ZW9ubHkgaWZlbHNlCi0tICAgIH0KLSsgICAgfSBleGVjdXRlb25seQotICAgICB7Ci0gICAgICAgY3VycmVudGdsb2JhbCAvL3BkZmRpY3QgZ2NoZWNrIC5zZXRnbG9iYWwKLSAgICAgICAvL3BkZmRpY3QgLy5RcXdhcm5pbmdfaXNzdWVkIC8vdHJ1ZSAuZm9yY2VwdXQKLSAgICAgICAuc2V0Z2xvYmFsCi0gICAgICAgcGRmZm9ybWF0ZXJyb3IKLSAgICAgfSBleGVjdXRlb25seSBpZmVsc2UKLS0gIH0gaWYKLSsgIH0gZXhlY3V0ZW9ubHkgaWYKLSAgIHBvcAotIAotICAgJSByZXN0b3JlIHBkZmVtcHR5Y291bnQKLWRpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L3BkZl9mb250LnBzIGIvUmVzb3VyY2UvSW5pdC9wZGZfZm9udC5wcwotaW5kZXggMmRmMzMwMy4uNmE2YTVmZSAxMDA2NDQKLS0tLSBhL1Jlc291cmNlL0luaXQvcGRmX2ZvbnQucHMKLSsrKyBiL1Jlc291cmNlL0luaXQvcGRmX2ZvbnQucHMKLUBAIC02MzgsNyArNjM4LDcgQEAgY3VycmVudGRpY3QgZW5kIHJlYWRvbmx5IGRlZgotICAgICAgICAgICAgICAgICAgIGN1cnJlbnRnbG9iYWwgMiBpbmRleCBkdXAgZ2NoZWNrIHNldGdsb2JhbAotICAgICAgICAgICAgICAgICAgIC9Gb250SW5mbyA1IGRpY3QgZHVwIDUgMSByb2xsIC5mb3JjZXB1dAotICAgICAgICAgICAgICAgICAgIHNldGdsb2JhbAotLSAgICAgICAgICAgICAgICB9IGlmCi0rICAgICAgICAgICAgICAgIH0gZXhlY3V0ZW9ubHkgaWYKLSAgICAgICAgICAgICAgICAgZHVwIC9HbHlwaE5hbWVzMlVuaWNvZGUgLmtub3duZ2V0IG5vdCB7Ci0gICAgICAgICAgICAgICAgICAgLy90cnVlICAgICAgICAgICAgICAgICAgICAgICAgJSBObyBleGlzdGluZyBHMlUsIG1ha2Ugb25lCi0gICAgICAgICAgICAgICAgIH0gewotQEAgLTY2OCwxMCArNjY4LDEyIEBAIGN1cnJlbnRkaWN0IGVuZCByZWFkb25seSBkZWYKLSAgICAgICAgICAgICAgICAgcG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0IGVuY29kaW5nfG51bGwgZm9udC1pbmZvCi0gICAgICAgICAgICAgICAgIHBvcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdCBlbmNvZGluZ3xudWxsCi0gICAgICAgICAgICAgICAgIC8vZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIFdlIGJ1aWx0IGEgR2x5cGhOYW1lczJVbmljb2RlIHRhYmxlLCBkb24ndCBuZWVkIHRvIHByb2Nlc3MgZnVydGhlcgotLSAgICAgICAgICAgICAgfXsKLSsgICAgICAgICAgICAgIH0gZXhlY3V0ZW9ubHkKLSsgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLy90cnVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgbmFtZSBpcyBub3QgSWRlbnRpdHktViBvciBILCBmYWlsIGJ5IGZhbGxpbmcgdGhyb3VnaAotICAgICAgICAgICAgICAgfWlmZWxzZQotLSAgICAgICAgICB9IHsKLSsgICAgICAgICAgfSBleGVjdXRlb25seQotKyAgICAgICAgICB7Ci0gICAgICAgICAgICAgLy90cnVlCi0gICAgICAgICAgIH0gaWZlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIG5vdCBhIG5hbWUsIHRyeSBhcyBhIGRpY3Rpb25hcnkgKGFzIHNwZWNpZmllZCkKLSAKLUBAIC03NTksOSArNzYxLDkgQEAgY3VycmVudGRpY3QgZW5kIHJlYWRvbmx5IGRlZgotICAgICAgICAgICBQREZERUJVRyB7Ci0gICAgICAgICAgICAgKC5wcm9jZXNzVG9Vbmljb2RlIGVuZCkgPQotICAgICAgICAgICB9IGlmCi0tICAgICAgICB9IGlmCi0tICAgICAgfSBpZgotLSAgICB9IHN0b3BwZWQKLSsgICAgICAgIH0gZXhlY3V0ZW9ubHkgaWYKLSsgICAgICB9IGV4ZWN1dGVvbmx5IGlmCi0rICAgIH0gZXhlY3V0ZW9ubHkgc3RvcHBlZAotICAgICB7Ci0gICAgICAgLmRzdGFja2RlcHRoIDEgY291bnRkaWN0c3RhY2sgMSBzdWIKLSAgICAgICB7cG9wIGVuZH0gZm9yCi1AQCAtMTI5MSwxOSArMTI5MywyMCBAQCBjdXJyZW50ZGljdCAvZWV4ZWNfcGRmX3BhcmFtX2RpY3QgLnVuZGVmCi0gICAgICAgICAgICAgICAgIC8vcGRmZGljdCAvLlFxd2FybmluZ19pc3N1ZWQgLy90cnVlIC5mb3JjZXB1dAotICAgICAgICAgICAgICAgfSBleGVjdXRlb25seSBpZgotICAgICAgICAgICAgICAgUQotLSAgICAgICAgICAgIH0gcmVwZWF0Ci0rICAgICAgICAgICAgfSBleGVjdXRlb25seSByZXBlYXQKLSAgICAgICAgICAgICBRCi0tICAgICAgICAgIH0gUERGZmlsZSBmaWxlcG9zaXRpb24gMiAuZXhlY24gJSBLZWVwIHBkZmNvdW50IHZhbGlkLgotKyAgICAgICAgICB9IGV4ZWN1dGVvbmx5IFBERmZpbGUgZmlsZXBvc2l0aW9uIDIgLmV4ZWNuICUgS2VlcCBwZGZjb3VudCB2YWxpZC4KLSAgICAgICAgICAgUERGZmlsZSBleGNoIHNldGZpbGVwb3NpdGlvbgotLSAgICAgICAgfSBpZmVsc2UKLS0gICAgICB9IHsKLSsgICAgICAgIH0gZXhlY3V0ZW9ubHkgaWZlbHNlCi0rICAgICAgfSBleGVjdXRlb25seQotKyAgICAgIHsKLSAgICAgICAgICUgUERGIFR5cGUgMyBmb250cyBkb24ndCB1c2UgLm5vdGRlZgotICAgICAgICAgJSBkMSBpbXBsZW1lbnRhdGlvbiBhZGp1c3RzIHRoZSB3aWR0aCBhcyBuZWVkZWQKLSAgICAgICAgIDAgMCAwIDAgMCAwCi0gICAgICAgICBwZGZvcGRpY3QgL2QxIGdldCBleGVjCi0gICAgICAgfSBpZmVsc2UKLSAgICAgICBlbmQgZW5kCi0tICAgIH0gYmRlZgotKyAgICB9IGV4ZWN1dGVvbmx5IGJkZWYKLSAgICAgZHVwIGN1cnJlbnRkaWN0IEVuY29kaW5nIC5wcm9jZXNzVG9Vbmljb2RlCi0gICAgIGN1cnJlbnRkaWN0IGVuZCAuY29tcGxldGVmb250IGV4Y2ggcG9wCi0gfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKLUBAIC0yMTAzLDkgKzIxMDYsOSBAQCBjdXJyZW50ZGljdCAvQ01hcF9yZWFkX2RpY3QgdW5kZWYKLSAgICAgICAgICAgKFdpbGwgY29udGludWUsIGJ1dCBjb250ZW50IG1heSBiZSBtaXNzaW5nLikgPSBmbHVzaAotICAgICAgICAgfSBpZmVsc2UKLSAgICAgICB9IGlmCi0tICAgIH0gaWYKLSsgICAgfSBleGVjdXRlb25seSBpZgotICAgICAvZmluZHJlc291cmNlIGN2eCAvdW5kZWZpbmVkIHNpZ25hbGVycm9yCi0tICB9IGxvb3AKLSsgIH0gZXhlY3V0ZW9ubHkgbG9vcAotIH0gYmluZCBleGVjdXRlb25seSBvZGVmCi0gCi0gL2J1aWxkQ0lEVHlwZTAgewklIDxDSURGb250VHlwZTAtZm9udC1yZXNvdXJjZT4gYnVpbGRDSURUeXBlMCA8Zm9udD4KLWRpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L3BkZl9tYWluLnBzIGIvUmVzb3VyY2UvSW5pdC9wZGZfbWFpbi5wcwotaW5kZXggNTMwNWVhNi4uYTU5ZTYzYyAxMDA2NDQKLS0tLSBhL1Jlc291cmNlL0luaXQvcGRmX21haW4ucHMKLSsrKyBiL1Jlc291cmNlL0luaXQvcGRmX21haW4ucHMKLUBAIC0yNzQ5LDE1ICsyNzQ5LDE1IEBAIGN1cnJlbnRkaWN0IC9QREYyUFNfbWF0cml4X2tleSB1bmRlZgotICAgICAgICAgICAuc2V0Z2xvYmFsCi0gICAgICAgICAgIHBkZmZvcm1hdGVycm9yCi0gICAgICAgICB9IGV4ZWN1dGVvbmx5IGlmZWxzZQotLSAgICAgIH0KLSsgICAgICB9IGV4ZWN1dGVvbmx5Ci0gICAgICAgewotICAgICAgICAgY3VycmVudGdsb2JhbCAvL3BkZmRpY3QgZ2NoZWNrIC5zZXRnbG9iYWwKLSAgICAgICAgIC8vcGRmZGljdCAvLlFxd2FybmluZ19pc3N1ZWQgLy90cnVlIC5mb3JjZXB1dAotICAgICAgICAgLnNldGdsb2JhbAotICAgICAgICAgcGRmZm9ybWF0ZXJyb3IKLSAgICAgICB9IGV4ZWN1dGVvbmx5IGlmZWxzZQotLSAgICB9IGlmCi0tICB9IGlmCi0rICAgIH0gZXhlY3V0ZW9ubHkgaWYKLSsgIH0gZXhlY3V0ZW9ubHkgaWYKLSAgIHBvcAotICAgY291bnQgUERGZXhlY3N0YWNrY291bnQgc3ViIHsgcG9wIH0gcmVwZWF0Ci0gICAoYWZ0ZXIgZXhlYykgVk1ERUJVRwotZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvcGRmX29wcy5wcyBiL1Jlc291cmNlL0luaXQvcGRmX29wcy5wcwotaW5kZXggMjg1ZTU4Mi4uNmMxZjEwMCAxMDA2NDQKLS0tLSBhL1Jlc291cmNlL0luaXQvcGRmX29wcy5wcwotKysrIGIvUmVzb3VyY2UvSW5pdC9wZGZfb3BzLnBzCi1AQCAtMTg2LDE0ICsxODYsMTQgQEAgY3VycmVudGRpY3QgL2dwdXRfYWx3YXlzX2FsbG93IC51bmRlZgotICAgICAgICAgLnNldGdsb2JhbAotICAgICAgICAgcGRmZm9ybWF0ZXJyb3IKLSAgICAgICB9IGV4ZWN1dGVvbmx5IGlmZWxzZQotLSAgICB9Ci0rICAgIH0gZXhlY3V0ZW9ubHkKLSAgICAgewotICAgICAgIGN1cnJlbnRnbG9iYWwgLy9wZGZkaWN0IGdjaGVjayAuc2V0Z2xvYmFsCi0gICAgICAgLy9wZGZkaWN0IC8uUXF3YXJuaW5nX2lzc3VlZCAvL3RydWUgLmZvcmNlcHV0Ci0gICAgICAgLnNldGdsb2JhbAotICAgICAgIHBkZmZvcm1hdGVycm9yCi0gICAgIH0gZXhlY3V0ZW9ubHkgaWZlbHNlCi0tICB9IGlmCi0rICB9IGV4ZWN1dGVvbmx5IGlmCi0gfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKLSAKLSAlIFNhdmUgUERGIGdzdGF0ZQotQEAgLTQ0MCwxMSArNDQwLDEyIEBAIGN1cnJlbnRkaWN0IC9ncHV0X2Fsd2F5c19hbGxvdyAudW5kZWYKLSAgIGR1cCB0eXBlIC9ib29sZWFudHlwZSBlcSB7Ci0gICAgIC5jdXJyZW50U01hc2sgdHlwZSAvZGljdHR5cGUgZXEgewotICAgICAgIC5jdXJyZW50U01hc2sgL1Byb2Nlc3NlZCAyIGluZGV4IC5mb3JjZXB1dAotKyAgICB9IGV4ZWN1dGVvbmx5Ci0rICAgIHsKLSsgICAgICAuc2V0U01hc2sKLSsgICAgfWlmZWxzZQotICAgfSBleGVjdXRlb25seQotICAgewotLSAgICAgIC5zZXRTTWFzawotLSAgfWlmZWxzZQotLSAgfXsKLSAgIC5zZXRTTWFzawotICAgfWlmZWxzZQotIAotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTktMTQ4NjktMDAwMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE5LTE0ODY5LTAwMDEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE1ZWMxYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE5LTE0ODY5LTAwMDEucGF0Y2gKQEAgLTAsMCArMSw3MCBAQAorRnJvbSA0ODU5MDQ3NzJjNWYwYWExMTQwMDMyNzQ2ZTVhMGFiZmM0MGY0Y2VmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyaXMgTGlkZGVsbCA8Y2hyaXMubGlkZGVsbEBhcnRpZmV4LmNvbT4KK0RhdGU6IFR1ZSwgNSBOb3YgMjAxOSAwOTo0NToyNyArMDAwMAorU3ViamVjdDogW1BBVENIXSBCdWcgNzAxODQxOiByZW1vdmUgLmZvcmNlcHV0IGZyb20gLy5jaGFya2V5cworCitXaGVuIGxvYWRpbmcgVHlwZSAxIG9yIFRydWV0eXBlIGZvbnRzIGZyb20gZGlzaywgd2UgYXR0ZW1wdCB0byBleHRlbmQgdGhlIGdseXBoCituYW1lIHRhYmxlIHRvIGluY2x1ZGUgYWxsIGlkZW50aWZpYWJsZSBnbHlwaCBuYW1lcyBmcm9tIHRoZSBBZG9iZSBHbHlwaCBMaXN0LgorCitJbiB0aGUgY2FzZSBvZiBUeXBlIDEgZm9udHMsIHRoZSBmb250IGl0c2VsZiAoYWxtb3N0IGFsd2F5cykgbWFya3MgdGhlCitDaGFyU3RyaW5ncyBkaWN0aW9uYXJ5IGFzIHJlYWQtb25seSwgaGVuY2Ugd2UgaGF2ZSB0byB1c2UgLmZvcmNlcHV0IGZvciB0aGF0CitjYXNlLgorCitCdXQgZm9yIFRydWV0eXBlIGZvbnRzLCB0aGUgQ2hhclN0cmluZ3MgZGljdGlvbmFyeSBpcyBjcmVhdGVkIGludGVybmFsbHkgYW5kIGlzCitub3QgcmVhZC1vbmx5IHVudGlsICphZnRlciogd2UgaGF2ZSBmdWxseSBwb3B1bGF0ZWQgaXQgKGluY2x1ZGluZyB0aGUgZXh0ZW5kZWQKK2dseXBoIG5hbWVzIGZyb20gdGhlIEFHTCksIGhlbmNlIHRoZXJlIGlzIG5vIG5lZWQgZm9yIC5mb3JjZXB1dCwgYW5kIG5vIG5lZWQgdG8KK2NhcnJ5IHRoZSBzZWN1cml0eSByaXNrIG9mIHVzaW5nIGl0LgorCitSZXBsYWNlIHdpdGggcmVndWxhciBwdXQuCisKK0NWRTogQ1ZFLTIwMTktMTQ4NjkKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdC5naG9zdHNjcmlwdC5jb20vZ2hvc3RwZGwuZ2l0XQorCitTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gR2hpbmVhIDxzdGVmYW4uZ2hpbmVhQHdpbmRyaXZlci5jb20+CistLS0KKyBSZXNvdXJjZS9Jbml0L2dzX3R0Zi5wcyB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9nc190dGYucHMgYi9SZXNvdXJjZS9Jbml0L2dzX3R0Zi5wcworaW5kZXggZTM0OTY3ZC4uNTM1NGZmMCAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvZ3NfdHRmLnBzCisrKysgYi9SZXNvdXJjZS9Jbml0L2dzX3R0Zi5wcworQEAgLTEzMDEsNyArMTMwMSw3IEBAIGN1cnJlbnRkaWN0IC8ucGlja2NtYXBfd2l0aF9ub194bGF0bWFwIC51bmRlZgorICAgICAgICAgICBUVEZERUJVRyB7IChcbjEgc2V0dGluZyBhbGlhczogKSBwcmludCBkdXAgPT1vbmx5CisgICAgICAgICAgICAgICAgICggdG8gYmUgdGhlIHNhbWUgYXMgICkgcHJpbnQgMiBpbmRleCAvLz09IGV4ZWMgfSBpZgorIAorLSAgICAgICAgICA3IGluZGV4IDIgaW5kZXggMyAtMSByb2xsIGV4Y2ggLmZvcmNlcHV0CisrICAgICAgICAgIDcgaW5kZXggMiBpbmRleCAzIC0xIHJvbGwgZXhjaCBwdXQKKyAgICAgICAgIH0gZm9yYWxsCisgICAgICAgICBwb3AgcG9wIHBvcAorICAgICAgIH0KK0BAIC0xMzE5LDcgKzEzMTksNyBAQCBjdXJyZW50ZGljdCAvLnBpY2tjbWFwX3dpdGhfbm9feGxhdG1hcCAudW5kZWYKKyAgICAgICAgICAgZXhjaCBwb3AKKyAgICAgICAgICAgVFRGREVCVUcgeyAoXG4yIHNldHRpbmcgYWxpYXM6ICkgcHJpbnQgMSBpbmRleCA9PW9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAoIHRvIHVzZSBnbHlwaCBpbmRleDogKSBwcmludCBkdXAgLy89PSBleGVjIH0gaWYKKy0gICAgICAgICAgNSBpbmRleCAzIDEgcm9sbCAuZm9yY2VwdXQKKysgICAgICAgICAgNSBpbmRleCAzIDEgcm9sbCBwdXQKKyAgICAgICAgICAgLy9mYWxzZQorICAgICAgICAgfQorICAgICAgICAgeworQEAgLTEzMzYsNyArMTMzNiw3IEBAIGN1cnJlbnRkaWN0IC8ucGlja2NtYXBfd2l0aF9ub194bGF0bWFwIC51bmRlZgorICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICBDaGFyU3RyaW5ncyhkaWN0KSBpc3VuaWNvZGUoYm9vbGVhbikgY21hcChkaWN0KSBSQUdMKGRpY3QpIGduYW1lKG5hbWUpIGNvZGVwKGludGVnZXIpIGdpbmRleChpbnRlZ2VyKQorICAgICAgICAgICBUVEZERUJVRyB7IChcMyBuc2V0dGluZyBhbGlhczogKSBwcmludCAxIGluZGV4ID09b25seQorICAgICAgICAgICAgICAgICAoIHRvIGJlIGluZGV4OiApIHByaW50IGR1cCAvLz09IGV4ZWMgfSBpZgorLSAgICAgICAgICBleGNoIHBvcCA1IGluZGV4IDMgMSByb2xsIC5mb3JjZXB1dAorKyAgICAgICAgICBleGNoIHBvcCA1IGluZGV4IDMgMSByb2xsIHB1dAorICAgICAgICAgfQorICAgICAgICAgeworICAgICAgICAgICBwb3AgcG9wCitAQCAtMTM2Niw3ICsxMzY2LDcgQEAgY3VycmVudGRpY3QgLy5waWNrY21hcF93aXRoX25vX3hsYXRtYXAgLnVuZGVmCisgICAgICAgfSBpZmVsc2UKKyAgICAgXQorICAgVFRGREVCVUcgeyAoRW5jb2Rpbmc6ICkgcHJpbnQgZHVwID09PSBmbHVzaCB9IGlmCistfSAuYmluZCBleGVjdXRlb25seSBvZGVmCQklIGhpZGVzIC5mb3JjZXB1dAorK30gLmJpbmQgb2RlZgorIAorICUgLS0tLS0tLS0tLS0tLS0tLSBDSURGb250VHlwZSAyIGZvbnQgbG9hZGluZyAtLS0tLS0tLS0tLS0tLS0tICUKKyAKKy0tIAorMi4yMC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L21pY3JvYmxhemVlYi9vYmphcmNoLmggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9taWNyb2JsYXplL29iamFyY2guaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWljcm9ibGF6ZWViL29iamFyY2guaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWljcm9ibGF6ZS9vYmphcmNoLmgKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L3Bvd2VycGM2NGxlL29iamFyY2guaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L3Bvd2VycGM2NGxlL29iamFyY2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDVkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvcG93ZXJwYzY0bGUvb2JqYXJjaC5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qIFBhcmFtZXRlcnMgZGVyaXZlZCBmcm9tIG1hY2hpbmUgYW5kIGNvbXBpbGVyIGFyY2hpdGVjdHVyZS4gKi8KKy8qIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgbWVjaGFuaWNhbGx5IGJ5IGdlbmFyY2guYy4gKi8KKworCSAvKiAtLS0tLS0tLS0tLS0tLS0tIFNjYWxhciBhbGlnbm1lbnRzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0FMSUdOX1NIT1JUX01PRCAyCisjZGVmaW5lIEFSQ0hfQUxJR05fSU5UX01PRCA0CisjZGVmaW5lIEFSQ0hfQUxJR05fTE9OR19NT0QgOAorI2RlZmluZSBBUkNIX0FMSUdOX1BUUl9NT0QgOAorI2RlZmluZSBBUkNIX0FMSUdOX0ZMT0FUX01PRCA0CisjZGVmaW5lIEFSQ0hfQUxJR05fRE9VQkxFX01PRCA4CisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBTY2FsYXIgc2l6ZXMgLS0tLS0tLS0tLS0tLS0tLSAqLworCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfQ0hBUiAwCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfU0hPUlQgMQorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0lOVCAyCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfTE9ORyAzCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfTE9OR19MT05HIDMKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfR1hfQ09MT1JfSU5ERVggOAorI2RlZmluZSBBUkNIX1NJWkVPRl9QVFIgOAorI2RlZmluZSBBUkNIX1NJWkVPRl9GTE9BVCA0CisjZGVmaW5lIEFSQ0hfU0laRU9GX0RPVUJMRSA4CisjZGVmaW5lIEFSQ0hfRkxPQVRfTUFOVElTU0FfQklUUyAyNAorI2RlZmluZSBBUkNIX0RPVUJMRV9NQU5USVNTQV9CSVRTIDUzCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBVbnNpZ25lZCBtYXggdmFsdWVzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX01BWF9VQ0hBUiAoKHVuc2lnbmVkIGNoYXIpMHhmZiArICh1bnNpZ25lZCBjaGFyKTApCisjZGVmaW5lIEFSQ0hfTUFYX1VTSE9SVCAoKHVuc2lnbmVkIHNob3J0KTB4ZmZmZiArICh1bnNpZ25lZCBzaG9ydCkwKQorI2RlZmluZSBBUkNIX01BWF9VSU5UICgodW5zaWduZWQgaW50KX4wICsgKHVuc2lnbmVkIGludCkwKQorI2RlZmluZSBBUkNIX01BWF9VTE9ORyAoKHVuc2lnbmVkIGxvbmcpfjBMICsgKHVuc2lnbmVkIGxvbmcpMCkKKworCSAvKiAtLS0tLS0tLS0tLS0tLS0tIE1pc2NlbGxhbmVvdXMgLS0tLS0tLS0tLS0tLS0tLSAqLworCisjZGVmaW5lIEFSQ0hfSVNfQklHX0VORElBTiAwCisjZGVmaW5lIEFSQ0hfUFRSU19BUkVfU0lHTkVEIDAKKyNkZWZpbmUgQVJDSF9GTE9BVFNfQVJFX0lFRUUgMQorI2RlZmluZSBBUkNIX0FSSVRIX1JTSElGVCAyCisjZGVmaW5lIEFSQ0hfRElWX05FR19QT1NfVFJVTkNBVEVTIDEKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTFmM2UyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgR1BMIEdob3N0c2NyaXB0IFBvc3RTY3JpcHQvUERGIGludGVycHJldGVyIgotREVTQ1JJUFRJT04gPSAiR2hvc3RzY3JpcHQgaXMgdXNlZCBmb3IgUG9zdFNjcmlwdC9QREYgcHJldmlldyBhbmQgcHJpbnRpbmcuICBVc3VhbGx5IGFzIFwKLWEgYmFjay1lbmQgdG8gYSBwcm9ncmFtIHN1Y2ggYXMgZ2hvc3R2aWV3LCBpdCBjYW4gZGlzcGxheSBQb3N0U2NyaXB0IGFuZCBQREYgXAotZG9jdW1lbnRzIGluIGFuIFgxMSBlbnZpcm9ubWVudC4gXAotXAotRnVydGhlcm1vcmUsIGl0IGNhbiByZW5kZXIgUG9zdFNjcmlwdCBhbmQgUERGIGZpbGVzIGFzIGdyYXBoaWNzIHRvIGJlIHByaW50ZWQgXAotb24gbm9uLVBvc3RTY3JpcHQgcHJpbnRlcnMuIFN1cHBvcnRlZCBwcmludGVycyBpbmNsdWRlIGNvbW1vbiBcCi1kb3QtbWF0cml4LCBpbmtqZXQgYW5kIGxhc2VyIG1vZGVscy4gXAotIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5naG9zdHNjcmlwdC5jb20iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03MGRjMmJhYzRkMGNlNDQ0OGRhODczY2Q4NmIxMjNmYyIKLQotREVQRU5EUyA9ICJnaG9zdHNjcmlwdC1uYXRpdmUgdGlmZiBqcGVnIGZvbnRjb25maWcgY3VwcyBsaWJwbmciCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJsaWJwbmctbmF0aXZlIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL0FydGlmZXhTb2Z0d2FyZS9naG9zdHBkbC1kb3dubG9hZHMvcmVsZWFzZXMiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKLQotU1JDX1VSSV9CQVNFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9BcnRpZmV4U29mdHdhcmUvZ2hvc3RwZGwtZG93bmxvYWRzL3JlbGVhc2VzL2Rvd25sb2FkL2dzOTI3LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2ggXAotICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE2LVdlcnJvci1yZXR1cm4tdHlwZS5wYXRjaCBcCi0gICAgICAgICAgICAgICAgZmlsZTovL2RvLW5vdC1jaGVjay1sb2NhbC1saWJwbmctc291cmNlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vYXZvaWQtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vbWtkaXItcC5wYXRjaCBcCi0gICAgICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTE0ODExLTAwMDEucGF0Y2ggXAotICAgICAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOS0xNDgxNy0wMDAxLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTktMTQ4MTctMDAwMi5wYXRjaCBcCi0iCi0KLVNSQ19VUkkgPSAiJHtTUkNfVVJJX0JBU0V9IFwKLSAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMjEtcHJldmVudF9yZWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb2JqYXJjaC5oIFwKLSAgICAgICAgICAgZmlsZTovL2N1cHMtbm8tZ2NyeXB0LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2NsYXNzLW5hdGl2ZSA9ICIke1NSQ19VUklfQkFTRX0gXAotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMjEtbmF0aXZlLWZpeC1kaXNhYmxlLXN5c3RlbS1saWJ0aWZmLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9iYXNlLWdlbmh0LmMtYWRkLWEtcHJlcHJvY2Vzc29yLWRlZmluZS10by1hbGxvdy1mb3BlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImMzOTkwYTUwNGEzYTIzYjliYWJlOWRlMDBlZDY1OTdkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk3NjBlOGJkZDA3YTA4ZGJkNDQ1MTg4YTY1NTdjYjcwZTYwY2NiNmE1NjAxZjdkYmZiYTBkMjI1ZTI4Y2UyODUiCi0KLSMgUHV0IHNvbWV0aGluZyBsaWtlCi0jCi0jICAgUEFDS0FHRUNPTkZJR19hcHBlbmRfcG4tZ2hvc3RzY3JpcHQgPSAiIHgxMSIKLSMKLSMgaW4gbG9jYWwuY29uZiB0byBlbmFibGUgYnVpbGRpbmcgd2l0aCBYMTEuICBCZSBjYXJlZnVsLiAgVGhlIG9yZGVyCi0jIG9mIHRoZSBvdmVycmlkZXMgbWF0dGVycyEKLSMKLSNQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycsIGQpfSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKLQotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14IC0teC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSAtLXgtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9LCBcCi0gICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LXgsIHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHQgZ3RrKzNcCi0gICAgICAgICAgICAgICAgICAgICAgIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWxpYnBhcGVyIC0td2l0aC1zeXN0ZW0tbGlidGlmZiAtLXdpdGhvdXQtamJpZzJkZWMgXAotICAgICAgICAgICAgICAgIC0td2l0aC1mb250cGF0aD0ke2RhdGFkaXJ9L2ZvbnRzIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbGliaWRuIC0td2l0aC1jdXBzLXNlcnZlcmJpbj0ke2V4ZWNfcHJlZml4fS9saWIvY3VwcyBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWN1cHMtZGF0YWRpcj0ke2RhdGFkaXJ9L2N1cHMgXAotICAgICAgICAgICAgICAgIENVUFNDT05GSUc9IiR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2N1cHMtY29uZmlnIiBcCi0gICAgICAgICAgICAgICAgIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX21pcHNhcmNobzMyID0gIiAtLXdpdGgtbGFyZ2VfY29sb3JfaW5kZXg9MCIKLQotIyBFeHBsaWNpdHkgZGlzYWJsZSBsaWJ0aWZmLCBmb250Y29uZmlnLAotIyBmcmVldHlwZSwgY3VwcyBmb3IgZ2hvc3RzY3JpcHQtbmF0aXZlCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC14IC0td2l0aC1zeXN0ZW0tbGlidGlmZj1ubyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1qYmlnMmRlYyAtLXdpdGhvdXQtbGlicGFwZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtZm9udHBhdGg9JHtkYXRhZGlyfS9mb250cyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1saWJpZG4gLS1kaXNhYmxlLWZvbnRjb25maWcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZnJlZXR5cGUgLS1kaXNhYmxlLWN1cHMiCi0KLSMgVGhpcyBoYXMgYmVlbiBmaXhlZCB1cHN0cmVhbSBidXQgZm9yIG5vdyB3ZSBuZWVkIHRvIHN1YnZlcnQgdGhlIGNoZWNrIGZvciB0aW1lLmgKLSMgaHR0cDovL2J1Z3MuZ2hvc3RzY3JpcHQuY29tL3Nob3dfYnVnLmNnaT9pZD02OTI0NDMKLSMgaHR0cDovL2J1Z3MuZ2hvc3RzY3JpcHQuY29tL3Nob3dfYnVnLmNnaT9pZD02OTI0MjYKLUNGTEFHUyArPSAiLURIQVZFX1NZU19USU1FX0g9MSIKLUJVSUxEX0NGTEFHUyArPSAiLURIQVZFX1NZU19USU1FX0g9MSIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCW1rZGlyIC1wIG9iagotCW1rZGlyIC1wIHNvb2JqCi0JaWYgWyAtZSAke1dPUktESVJ9L29iamFyY2guaCBdOyB0aGVuCi0JCWNwICR7V09SS0RJUn0vb2JqYXJjaC5oIG9iai9hcmNoLmgKLQlmaQotfQotCi1kb19jb25maWd1cmVfYXBwZW5kICgpIHsKLQkjIGNvcHkgdG9vbHMgZnJvbSB0aGUgbmF0aXZlIGdob3N0c2NyaXB0IGJ1aWxkCi0JaWYgWyAiJHtQTn0iICE9ICJnaG9zdHNjcmlwdC1uYXRpdmUiIF07IHRoZW4KLQkJbWtkaXIgLXAgb2JqL2F1eCBzb29iagotCQlmb3IgaSBpbiBnZW5hcmNoIGdlbmNvbmYgbWtyb21mcyBlY2hvZ3MgZ2VuZGV2IGdlbmh0IHBhY2twczsgZG8KLQkJCWNwICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9naG9zdHNjcmlwdC0ke1BWfS8kaSBvYmovYXV4LyRpCi0JCWRvbmUKLQlmaQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgbWtkaXIgLXAgJHtEfSR7ZGF0YWRpcn0vZ2hvc3RzY3JpcHQvJHtQVn0vCi0gICAgY3AgLXIgJHtTfS9SZXNvdXJjZSAke0R9JHtkYXRhZGlyfS9naG9zdHNjcmlwdC8ke1BWfS8KLSAgICBjcCAtciAke1N9L2ljY3Byb2ZpbGVzICR7RH0ke2RhdGFkaXJ9L2dob3N0c2NyaXB0LyR7UFZ9LwotfQotCi1kb19jb21waWxlX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgbWtkaXIgLXAgb2JqCi0gICAgZm9yIGkgaW4gZ2VuYXJjaCBnZW5jb25mIG1rcm9tZnMgZWNob2dzIGdlbmRldiBnZW5odCBwYWNrcHM7IGRvCi0gICAgICAgIG9lX3J1bm1ha2Ugb2JqL2F1eC8kaQotICAgIGRvbmUKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS9naG9zdHNjcmlwdC0ke1BWfQotICAgIGZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQgcGFja3BzOyBkbwotICAgICAgICBpbnN0YWxsIC1tIDc1NSBvYmovYXV4LyRpICR7RH0ke2JpbmRpcn0vZ2hvc3RzY3JpcHQtJHtQVn0vJGkKLSAgICBkb25lCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi0jIGdob3N0c2NyaXB0IGRvZXMgbm90IHN1cHBvcnRzICJhcmMiCi1DT01QQVRJQkxFX0hPU1QgPSAiXig/IWFyYykuKiIKLQotIyBzb21lIGVudHJpZXMgaW4gTlZEIHVzZXMgZ3BsX2dob3N0c2NyaXB0Ci1DVkVfUFJPRFVDVCA9ICJnaG9zdHNjcmlwdCBncGxfZ2hvc3RzY3JpcHQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjUwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS41MC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWMzMjY0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS41MC5iYgpAQCAtMCwwICsxLDEyOSBAQAorU1VNTUFSWSA9ICJUaGUgR1BMIEdob3N0c2NyaXB0IFBvc3RTY3JpcHQvUERGIGludGVycHJldGVyIgorREVTQ1JJUFRJT04gPSAiR2hvc3RzY3JpcHQgaXMgdXNlZCBmb3IgUG9zdFNjcmlwdC9QREYgcHJldmlldyBhbmQgcHJpbnRpbmcuICBVc3VhbGx5IGFzIFwKK2EgYmFjay1lbmQgdG8gYSBwcm9ncmFtIHN1Y2ggYXMgZ2hvc3R2aWV3LCBpdCBjYW4gZGlzcGxheSBQb3N0U2NyaXB0IGFuZCBQREYgXAorZG9jdW1lbnRzIGluIGFuIFgxMSBlbnZpcm9ubWVudC4gXAorXAorRnVydGhlcm1vcmUsIGl0IGNhbiByZW5kZXIgUG9zdFNjcmlwdCBhbmQgUERGIGZpbGVzIGFzIGdyYXBoaWNzIHRvIGJlIHByaW50ZWQgXAorb24gbm9uLVBvc3RTY3JpcHQgcHJpbnRlcnMuIFN1cHBvcnRlZCBwcmludGVycyBpbmNsdWRlIGNvbW1vbiBcCitkb3QtbWF0cml4LCBpbmtqZXQgYW5kIGxhc2VyIG1vZGVscy4gXAorIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5naG9zdHNjcmlwdC5jb20iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03MGRjMmJhYzRkMGNlNDQ0OGRhODczY2Q4NmIxMjNmYyIKKworREVQRU5EUyA9ICJnaG9zdHNjcmlwdC1uYXRpdmUgdGlmZiBqcGVnIGZvbnRjb25maWcgY3VwcyBsaWJwbmciCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJsaWJwbmctbmF0aXZlIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL0FydGlmZXhTb2Z0d2FyZS9naG9zdHBkbC1kb3dubG9hZHMvcmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKKworU1JDX1VSSV9CQVNFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9BcnRpZmV4U29mdHdhcmUvZ2hvc3RwZGwtZG93bmxvYWRzL3JlbGVhc2VzL2Rvd25sb2FkL2dzOTUwLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2ggXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE2LVdlcnJvci1yZXR1cm4tdHlwZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovL2RvLW5vdC1jaGVjay1sb2NhbC1saWJwbmctc291cmNlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vYXZvaWQtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vbWtkaXItcC5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTE0ODY5LTAwMDEucGF0Y2ggXAorIgorCitTUkNfVVJJID0gIiR7U1JDX1VSSV9CQVNFfSBcCisgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjIxLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4wMi1nZW5hcmNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29iamFyY2guaCBcCisgICAgICAgICAgIGZpbGU6Ly9jdXBzLW5vLWdjcnlwdC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9jbGFzcy1uYXRpdmUgPSAiJHtTUkNfVVJJX0JBU0V9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjIxLW5hdGl2ZS1maXgtZGlzYWJsZS1zeXN0ZW0tbGlidGlmZi5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYmFzZS1nZW5odC5jLWFkZC1hLXByZXByb2Nlc3Nvci1kZWZpbmUtdG8tYWxsb3ctZm9wZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMDk3MGNmNjIyYmQ1YjQ2ZjY4ZWVjOTM4Mzc1Mzg3MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwZjUzZTg5ZmQ2NDc4MTU4MjhmYzUxNzE2MTNlODYwZTg1MzViNjhmN2FmYmM5MWJmODlhZWU4ODY3NjljZTg5IgorCisjIFB1dCBzb21ldGhpbmcgbGlrZQorIworIyAgIFBBQ0tBR0VDT05GSUdfYXBwZW5kX3BuLWdob3N0c2NyaXB0ID0gIiB4MTEiCisjCisjIGluIGxvY2FsLmNvbmYgdG8gZW5hYmxlIGJ1aWxkaW5nIHdpdGggWDExLiAgQmUgY2FyZWZ1bC4gIFRoZSBvcmRlcgorIyBvZiB0aGUgb3ZlcnJpZGVzIG1hdHRlcnMhCisjCisjUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCisKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCAtLXgtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gLS14LWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSwgXAorICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC14LCB2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnh0IGd0ayszXAorICAgICAgICAgICAgICAgICAgICAgICIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1saWJwYXBlciAtLXdpdGgtc3lzdGVtLWxpYnRpZmYgLS13aXRob3V0LWpiaWcyZGVjIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZm9udHBhdGg9JHtkYXRhZGlyfS9mb250cyBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LWxpYmlkbiAtLXdpdGgtY3Vwcy1zZXJ2ZXJiaW49JHtleGVjX3ByZWZpeH0vbGliL2N1cHMgXAorICAgICAgICAgICAgICAgIC0td2l0aC1jdXBzLWRhdGFkaXI9JHtkYXRhZGlyfS9jdXBzIFwKKyAgICAgICAgICAgICAgICBDVVBTQ09ORklHPSIke1NUQUdJTkdfQklORElSX0NST1NTfS9jdXBzLWNvbmZpZyIgXAorICAgICAgICAgICAgICAgICIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9taXBzYXJjaG8zMiA9ICIgLS13aXRoLWxhcmdlX2NvbG9yX2luZGV4PTAiCisKKyMgRXhwbGljaXR5IGRpc2FibGUgbGlidGlmZiwgZm9udGNvbmZpZywKKyMgZnJlZXR5cGUsIGN1cHMgZm9yIGdob3N0c2NyaXB0LW5hdGl2ZQorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQteCAtLXdpdGgtc3lzdGVtLWxpYnRpZmY9bm8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtamJpZzJkZWMgLS13aXRob3V0LWxpYnBhcGVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLWZvbnRwYXRoPSR7ZGF0YWRpcn0vZm9udHMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbGliaWRuIC0tZGlzYWJsZS1mb250Y29uZmlnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWZyZWV0eXBlIC0tZGlzYWJsZS1jdXBzIgorCisjIFRoaXMgaGFzIGJlZW4gZml4ZWQgdXBzdHJlYW0gYnV0IGZvciBub3cgd2UgbmVlZCB0byBzdWJ2ZXJ0IHRoZSBjaGVjayBmb3IgdGltZS5oCisjIGh0dHA6Ly9idWdzLmdob3N0c2NyaXB0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjkyNDQzCisjIGh0dHA6Ly9idWdzLmdob3N0c2NyaXB0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjkyNDI2CitDRkxBR1MgKz0gIi1ESEFWRV9TWVNfVElNRV9IPTEiCitCVUlMRF9DRkxBR1MgKz0gIi1ESEFWRV9TWVNfVElNRV9IPTEiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlta2RpciAtcCBvYmoKKwlta2RpciAtcCBzb29iagorCWlmIFsgLWUgJHtXT1JLRElSfS9vYmphcmNoLmggXTsgdGhlbgorCQljcCAke1dPUktESVJ9L29iamFyY2guaCBvYmovYXJjaC5oCisJZmkKK30KKworZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7CisJIyBjb3B5IHRvb2xzIGZyb20gdGhlIG5hdGl2ZSBnaG9zdHNjcmlwdCBidWlsZAorCWlmIFsgIiR7UE59IiAhPSAiZ2hvc3RzY3JpcHQtbmF0aXZlIiBdOyB0aGVuCisJCW1rZGlyIC1wIG9iai9hdXggc29vYmoKKwkJZm9yIGkgaW4gZ2VuYXJjaCBnZW5jb25mIG1rcm9tZnMgZWNob2dzIGdlbmRldiBnZW5odCBwYWNrcHM7IGRvCisJCQljcCAke1NUQUdJTkdfQklORElSX05BVElWRX0vZ2hvc3RzY3JpcHQtJHtQVn0vJGkgb2JqL2F1eC8kaQorCQlkb25lCisJZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIG1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9L2dob3N0c2NyaXB0LyR7UFZ9LworICAgIGNwIC1yICR7U30vUmVzb3VyY2UgJHtEfSR7ZGF0YWRpcn0vZ2hvc3RzY3JpcHQvJHtQVn0vCisgICAgY3AgLXIgJHtTfS9pY2Nwcm9maWxlcyAke0R9JHtkYXRhZGlyfS9naG9zdHNjcmlwdC8ke1BWfS8KK30KKworZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUgKCkgeworICAgIG1rZGlyIC1wIG9iagorICAgIGZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQgcGFja3BzOyBkbworICAgICAgICBvZV9ydW5tYWtlIG9iai9hdXgvJGkKKyAgICBkb25lCit9CisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vZ2hvc3RzY3JpcHQtJHtQVn0KKyAgICBmb3IgaSBpbiBnZW5hcmNoIGdlbmNvbmYgbWtyb21mcyBlY2hvZ3MgZ2VuZGV2IGdlbmh0IHBhY2twczsgZG8KKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgb2JqL2F1eC8kaSAke0R9JHtiaW5kaXJ9L2dob3N0c2NyaXB0LSR7UFZ9LyRpCisgICAgZG9uZQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworIyBnaG9zdHNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0cyAiYXJjIgorQ09NUEFUSUJMRV9IT1NUID0gIl4oPyFhcmMpLioiCisKKyMgc29tZSBlbnRyaWVzIGluIE5WRCB1c2VzIGdwbF9naG9zdHNjcmlwdAorQ1ZFX1BST0RVQ1QgPSAiZ2hvc3RzY3JpcHQgZ3BsX2dob3N0c2NyaXB0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcF8zLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwNGEzZWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLVNVTU1BUlkgPSAiR05VIGdyZXAgdXRpbGl0eSIKLUhPTUVQQUdFID0gImh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL3Byb2plY3RzL2dyZXAvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz9ncm91cD1ncmVwIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFlYmJkM2UzNDIzN2FmMjZkYTVkYzA4YTRlNDQwNDY0IgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ3JlcC9ncmVwLSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA1ZDA3MThhMWI3Y2M3MDZhNGJkZjgxMTUzNjNmMWVkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI5NjA1NDFjNDk5NjE5ZWZkNmFmZTFmYTc5NTQwMmU0NzMzYzhlMTFlYmY5ZmFmY2NjMGJiNGJjY2RjNWI1MTQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKLQotIyBGaXggIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gbGVuKFRNUERJUikgPSA0MTAKLWFjcGF0aHMgPSAiLUkgLi9tNCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCXJtIC1mICR7U30vbTQvaW5pdC5tNAotfQotCi1kb19pbnN0YWxsICgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCWlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9Ci0JCW12ICR7RH0ke2JpbmRpcn0vZ3JlcCAke0R9JHtiYXNlX2JpbmRpcn0vZ3JlcAotCQltdiAke0R9JHtiaW5kaXJ9L2VncmVwICR7RH0ke2Jhc2VfYmluZGlyfS9lZ3JlcAotCQltdiAke0R9JHtiaW5kaXJ9L2ZncmVwICR7RH0ke2Jhc2VfYmluZGlyfS9mZ3JlcAotCQlybWRpciAke0R9JHtiaW5kaXJ9LwotCWZpCi19Ci0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1QQUNLQUdFQ09ORklHID8/PSAicGNyZSIKLVBBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS1lbmFibGUtcGVybC1yZWdleHAsLS1kaXNhYmxlLXBlcmwtcmVnZXhwLGxpYnBjcmUiCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiZ3JlcCBlZ3JlcCBmZ3JlcCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9ncmVwIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2VncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9lZ3JlcCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtmZ3JlcF0gPSAiJHtiYXNlX2JpbmRpcn0vZmdyZXAiCi0KLWV4cG9ydCBDT05GSUdfU0hFTEw9Ii9iaW4vc2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXBfMy40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTc2ZGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuNC5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIkdOVSBncmVwIHV0aWxpdHkiCitIT01FUEFHRSA9ICJodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9wcm9qZWN0cy9ncmVwLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/Z3JvdXA9Z3JlcCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZWJiZDNlMzQyMzdhZjI2ZGE1ZGMwOGE0ZTQ0MDQ2NCIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dyZXAvZ3JlcC0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxMTFiMTE3ZDIyZDZhN2QwNDlkNmFlNzUwNWU5YzRkMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1OGU2NzUxYzQxYTdjMjViZmM2ZTkzNjNhNDE3ODZjZmYzYmE1NzA5Y2YxMWQ1YWQ5MDNjZjdjY2UzMWNjM2ZiIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gcGtnY29uZmlnCisKKyMgRml4ICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIGxlbihUTVBESVIpID0gNDEwCithY3BhdGhzID0gIi1JIC4vbTQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlzZWQgLWkgLWUgJzFzLCMhQFNIRUxMQCwjIS9iaW4vc2gsJyAke1N9L3NyYy9lZ3JlcC5zaAorCXJtIC1mICR7U30vbTQvaW5pdC5tNAorfQorCitkb19pbnN0YWxsICgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCWlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisJCW12ICR7RH0ke2JpbmRpcn0vZ3JlcCAke0R9JHtiYXNlX2JpbmRpcn0vZ3JlcAorCQltdiAke0R9JHtiaW5kaXJ9L2VncmVwICR7RH0ke2Jhc2VfYmluZGlyfS9lZ3JlcAorCQltdiAke0R9JHtiaW5kaXJ9L2ZncmVwICR7RH0ke2Jhc2VfYmluZGlyfS9mZ3JlcAorCQlybWRpciAke0R9JHtiaW5kaXJ9LworCWZpCit9CisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitQQUNLQUdFQ09ORklHID8/PSAicGNyZSIKK1BBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS1lbmFibGUtcGVybC1yZWdleHAsLS1kaXNhYmxlLXBlcmwtcmVnZXhwLGxpYnBjcmUiCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiZ3JlcCBlZ3JlcCBmZ3JlcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9ncmVwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2VncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9lZ3JlcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtmZ3JlcF0gPSAiJHtiYXNlX2JpbmRpcn0vZmdyZXAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9maWxlcy8wMDAxLU1ha2UtbWFucGFnZXMtbXVsaXRsaWItaWRlbnRpY2FsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZmlsZXMvMDAwMS1NYWtlLW1hbnBhZ2VzLW11bGl0bGliLWlkZW50aWNhbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTA1ZGE2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZmlsZXMvMDAwMS1NYWtlLW1hbnBhZ2VzLW11bGl0bGliLWlkZW50aWNhbC5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIGU3MzhmOTE4NWJhOTBmMjA4M2M4NDZhZGUzNTUxMjM0YmI1YTdjYmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZXJlbXkgUHVobG1hbiA8anB1aGxtYW5AbXZpc3RhLmNvbT4KK0RhdGU6IFNhdCwgNyBNYXIgMjAyMCAwMDo1OToxMyArMDAwMAorU3ViamVjdDogW1BBVENIXSBNYWtlIG1hbnBhZ2VzIG11bGl0bGliIGlkZW50aWNhbAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCBkMThjNDliLi42MTc1ZmU5IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtOTE3LDcgKzkxNyw3IEBAIFNVRkZJWEVTICs9IC5tYW4KKyAJICAgICAtZSAic3xbQF1NREFURVtAXXxgJChQRVJMKSAkKHRvcF9zcmNkaXIpL21kYXRlLnBsICQ8YHxnIiBcCisgCSAgICAgLWUgInN8W0BdT0xERk9OVERJUltAXXxgZWNobyAkKG9sZGZvbnRkaXIpIHwgc2VkIC1mICQobWFrZXZhcmVzY2FwZSlgfGciIFwKKyAJICAgICAtZSAic3xbQF1QREZET0NESVJbQF18YGVjaG8gJChwZGZkb2NkaXIpIHwgc2VkIC1mICQobWFrZXZhcmVzY2FwZSlgfGciIFwKKy0JICAgICAtZSAic3xbQF1TWVNURU1NQUNST0RJUltAXXxgZWNobyAkKHN5c3RlbXRtYWNkaXIpIHwgc2VkIC1mICQobWFrZXZhcmVzY2FwZSlgfGciIFwKKysJICAgICAtZSAic3xbQF1TWVNURU1NQUNST0RJUltAXXxgZWNobyAkKHN5c3RlbXRtYWNkaXIpIHwgc2VkIC1lICdzLCQobGliZGlyKSwkKHByZWZpeCkvbGliKiwnIHwgc2VkIC1mICQobWFrZXZhcmVzY2FwZSlgfGciIFwKKyAJICAgICAtZSAic3xbQF1UTUFDX0FOX1BSRUZJWFtAXXwkKHRtYWNfYW5fcHJlZml4KXxnIiBcCisgCSAgICAgLWUgInN8W0BdVE1BQ19NX1BSRUZJWFtAXXwkKHRtYWNfbV9wcmVmaXgpfGciIFwKKyAJICAgICAtZSAic3xbQF1UTUFDX01ESVJbQF18JCh0bWFjZGlyKS9tbXxnIiBcCistLSAKKzIuMjMuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9ncm9mZl8xLjIyLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9ncm9mZl8xLjIyLjQuYmIKaW5kZXggMDgyNTk3Zi4uZTM5ODQ3OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZ3JvZmZfMS4yMi40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmXzEuMjIuNC5iYgpAQCAtMTIsNiArMTIsNyBAQAogCWZpbGU6Ly9ncm9mZi1ub3Qtc2VhcmNoLWZvbnRzLW9uLWJ1aWxkLWhvc3QucGF0Y2ggXAogCWZpbGU6Ly8wMDAxLXN1cHBvcnQtbXVzbC5wYXRjaCBcCiAJZmlsZTovLzAwMDEtSW5jbHVkZS1jb25maWcuaC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtbWFucGFnZXMtbXVsaXRsaWItaWRlbnRpY2FsLnBhdGNoIFwKICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjA4ZmIwNDMzNWUyZjVlNzNmMjNlYTRjM2FkYmYwYzVmIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS4xMC5iYgppbmRleCA1MGRhZDdiLi45Nzc4ZTY4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS4xMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS4xMC5iYgpAQCAtMTIsNyArMTIsNyBAQAogCiBQUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBnemlwLXJlcGxhY2VtZW50LW5hdGl2ZSIKIAotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgcGVybCBwZXJsLXB0ZXN0IGdyZXAgZGlmZnV0aWxzIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgcGVybCBncmVwIGRpZmZ1dGlscyIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY29yZS1pbWFnZS10ZXN0bWFzdGVyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2NvcmUtaW1hZ2UtdGVzdG1hc3Rlci5iYgppbmRleCA3ODI5NWM1Li4wZmFmMThmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY29yZS1pbWFnZS10ZXN0bWFzdGVyLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLXRlc3RtYXN0ZXIuYmIKQEAgLTgsNyArOCw3IEBACiAjIG5vcm1hbCBsaW51eCB1dGlsaXRpZXMgbm90IGJ1c3lib3ggb25lcwogSU1BR0VfSU5TVEFMTCArPSAiXAogICAgIGJhc2ggY29yZXV0aWxzIHV0aWwtbGludXggdGFyIGd6aXAgYnppcDIga21vZCBcCi0gICAgcHl0aG9uLW1vZHVsZXMgcHl0aG9uLW1pc2MgXAorICAgIHB5dGhvbjMtbW9kdWxlcyBweXRob24zLW1pc2MgXAogICAgIGUyZnNwcm9ncyBlMmZzcHJvZ3MtbWtlMmZzIHBhcnRlZCBcCiAgICAgIgogIyB3ZSBuZWVkIGEgcGFydGljdWxhciBpbml0cmFtZnMgZm9yIGxpdmUgaW1hZ2VzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy9pcDZ0YWJsZXMucnVsZXMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy9pcDZ0YWJsZXMucnVsZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL2lwNnRhYmxlcy5ydWxlcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXMvaXA2dGFibGVzLnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy9pcDZ0YWJsZXMuc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzA1OWZjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXMvaXA2dGFibGVzLnNlcnZpY2UKQEAgLTAsMCArMSwxMyBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1JUHY2IFBhY2tldCBGaWx0ZXJpbmcgRnJhbWV3b3JrCitCZWZvcmU9bmV0d29yay1wcmUudGFyZ2V0CitXYW50cz1uZXR3b3JrLXByZS50YXJnZXQKKworW1NlcnZpY2VdCitUeXBlPW9uZXNob3QKK0V4ZWNTdGFydD1AU0JJTkRJUkAvaXA2dGFibGVzLXJlc3RvcmUgLXcgLS0gQFJVTEVTRElSQC9pcDZ0YWJsZXMucnVsZXMKK0V4ZWNSZWxvYWQ9QFNCSU5ESVJAL2lwNnRhYmxlcy1yZXN0b3JlIC13IC0tIEBSVUxFU0RJUkAvaXA2dGFibGVzLnJ1bGVzCitSZW1haW5BZnRlckV4aXQ9eWVzCisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL2lwdGFibGVzLnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy9pcHRhYmxlcy5zZXJ2aWNlCmluZGV4IDA0MTMxNmUuLjBlYjNjMzQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL2lwdGFibGVzLnNlcnZpY2UKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXMvaXB0YWJsZXMuc2VydmljZQpAQCAtMSwxMiArMSwxMiBAQAogW1VuaXRdCi1EZXNjcmlwdGlvbj1QYWNrZXQgRmlsdGVyaW5nIEZyYW1ld29yaworRGVzY3JpcHRpb249SVB2NCBQYWNrZXQgRmlsdGVyaW5nIEZyYW1ld29yawogQmVmb3JlPW5ldHdvcmstcHJlLnRhcmdldAogV2FudHM9bmV0d29yay1wcmUudGFyZ2V0CiAKIFtTZXJ2aWNlXQogVHlwZT1vbmVzaG90Ci1FeGVjU3RhcnQ9QFNCSU5ESVJAL2lwdGFibGVzLXJlc3RvcmUgL2V0Yy9pcHRhYmxlcy9pcHRhYmxlcy5ydWxlcwotRXhlY1JlbG9hZD1AU0JJTkRJUkAvaXB0YWJsZXMtcmVzdG9yZSAvZXRjL2lwdGFibGVzL2lwdGFibGVzLnJ1bGVzCitFeGVjU3RhcnQ9QFNCSU5ESVJAL2lwdGFibGVzLXJlc3RvcmUgLXcgLS0gQFJVTEVTRElSQC9pcHRhYmxlcy5ydWxlcworRXhlY1JlbG9hZD1AU0JJTkRJUkAvaXB0YWJsZXMtcmVzdG9yZSAtdyAtLSBAUlVMRVNESVJAL2lwdGFibGVzLnJ1bGVzCiBSZW1haW5BZnRlckV4aXQ9eWVzCiAKIFtJbnN0YWxsXQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXNfMS44LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjguMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY5ZmNiMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjguMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLVNVTU1BUlkgPSAiVG9vbHMgZm9yIG1hbmFnaW5nIGtlcm5lbCBwYWNrZXQgZmlsdGVyaW5nIGNhcGFiaWxpdGllcyIKLURFU0NSSVBUSU9OID0gImlwdGFibGVzIGlzIHRoZSB1c2Vyc3BhY2UgY29tbWFuZCBsaW5lIHByb2dyYW0gdXNlZCB0byBjb25maWd1cmUgYW5kIGNvbnRyb2wgbmV0d29yayBwYWNrZXQgXAotZmlsdGVyaW5nIGNvZGUgaW4gTGludXguIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5uZXRmaWx0ZXIub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLm5ldGZpbHRlci5vcmcvIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2M1wKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2lwdGFibGVzL2lwdGFibGVzLmM7YmVnaW5saW5lPTEzO2VuZGxpbmU9MjU7bWQ1PWM1Y2ZmZDA5OTc0NTU4Y2YyN2QwZjc2M2RmMmExMmRjIgotCi1TUkNfVVJJID0gImh0dHA6Ly9uZXRmaWx0ZXIub3JnL3Byb2plY3RzL2lwdGFibGVzL2ZpbGVzL2lwdGFibGVzLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQWRkLW9wdGlvbi10by1lbmFibGUtZGlzYWJsZS1saWJuZm5ldGxpbmsucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUuYWMtb25seS1jaGVjay1jb25udHJhY2std2hlbi1saWJuZm5ldGxpbmstZW5hYmxlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pcHRhYmxlcy5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL2lwdGFibGVzLnJ1bGVzIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjI5ZGU3MTFkMTVjMDQwYzQwMmNmMzAzOGM2OWZmNTEzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEyM2NhYzAzNDE4MTIwNmI0NTQ1ZjRlN2U3MzBlNzZlMDhiNWYzZGQ3ODc3MWJhOTY0NWE2NzU2ZGU5Y2RkODAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgta2VybmVsPSR7U1RBR0lOR19JTkNESVJ9IgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgotCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgotCi0jIGxpYm5mbmV0bGluayByZWNpcGUgaXMgaW4gbWV0YS1uZXR3b3JraW5nIGxheWVyCi1QQUNLQUdFQ09ORklHW2xpYm5mbmV0bGlua10gPSAiLS1lbmFibGUtbGlibmZuZXRsaW5rLC0tZGlzYWJsZS1saWJuZm5ldGxpbmssbGlibmZuZXRsaW5rIGxpYm5ldGZpbHRlci1jb25udHJhY2siCi0KLSMgbGlibmZ0bmwgcmVjaXBlIGlzIGluIG1ldGEtbmV0d29ya2luZyBsYXllcihwcmV2aW91c2x5IGtub3duIGFzIGxpYm5mdGFibGVzKQotUEFDS0FHRUNPTkZJR1tsaWJuZnRubF0gPSAiLS1lbmFibGUtbmZ0YWJsZXMsLS1kaXNhYmxlLW5mdGFibGVzLGxpYm5mdG5sIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQkjIFJlbW92ZSBzb21lIGxpYnRvb2wgbTQgZmlsZXMKLQkjIEtlZXAgYXhfY2hlY2tfbGlua2VyX2ZsYWdzLm00IHdoaWNoIGJlbG9uZ3MgdG8gYXV0b2NvbmYtYXJjaGl2ZS4KLQlybSAtZiBsaWJ0b29sLm00IGx0fm9ic29sZXRlLm00IGx0b3B0aW9ucy5tNCBsdHN1Z2FyLm00IGx0dmVyc2lvbi5tNAotfQotCi1QQUNLQUdFUyArPSAiJHtQTn0tbW9kdWxlcyIKLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl4ke1BOfS1tb2R1bGUtLioiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kKCkgewotICAgIG1vZHVsZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCAnJHtsaWJkaXJ9L3h0YWJsZXMnLCByJ2xpYiguKilcLnNvJCcsICcke1BOfS1tb2R1bGUtJXMnLCAnJHtQTn0gbW9kdWxlICVzJywgZXh0cmFfZGVwZW5kcz0nJykKLSAgICBpZiBtb2R1bGVzOgotICAgICAgICBtZXRhcGtnID0gZC5nZXRWYXIoJ1BOJykgKyAnLW1vZHVsZXMnCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgbWV0YXBrZywgJyAnICsgJyAnLmpvaW4obW9kdWxlcykpCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3h0YWJsZXMiCi0KLSMgSW5jbHVkZSB0aGUgc3ltbGlua3MgYXMgd2VsbCBpbiByZXNwZWN0aXZlIHBhY2thZ2VzCi1GSUxFU18ke1BOfS1tb2R1bGUteHQtY29ubnRyYWNrICs9ICIke2xpYmRpcn0veHRhYmxlcy9saWJ4dF9zdGF0ZS5zbyIKLUZJTEVTXyR7UE59LW1vZHVsZS14dC1jdCArPSAiJHtsaWJkaXJ9L3h0YWJsZXMvbGlieHRfTk9UUkFDSy5zbyIKLQotSU5TQU5FX1NLSVBfJHtQTn0tbW9kdWxlLXh0LWNvbm50cmFjayA9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1tb2R1bGUteHQtY3QgPSAiZGV2LXNvIgotCi1BTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzID0gIjEiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaXB0YWJsZXMKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaXB0YWJsZXMucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vaXB0YWJsZXMKLQotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Ci0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2lwdGFibGVzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KLQotCXNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9pcHRhYmxlcy5zZXJ2aWNlCi19Ci0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJpcHRhYmxlcy5zZXJ2aWNlIgotCi1SREVQRU5EU18ke1BOfSA9ICIke1BOfS1tb2R1bGUteHQtc3RhbmRhcmQiCi1SUkVDT01NRU5EU18ke1BOfSA9ICIgXAotICAgICR7UE59LW1vZHVsZXMgXAotICAgIGtlcm5lbC1tb2R1bGUteC10YWJsZXMgXAotICAgIGtlcm5lbC1tb2R1bGUtaXAtdGFibGVzIFwKLSAgICBrZXJuZWwtbW9kdWxlLWlwdGFibGUtZmlsdGVyIFwKLSAgICBrZXJuZWwtbW9kdWxlLWlwdGFibGUtbmF0IFwKLSAgICBrZXJuZWwtbW9kdWxlLW5mLWRlZnJhZy1pcHY0IFwKLSAgICBrZXJuZWwtbW9kdWxlLW5mLWNvbm50cmFjayBcCi0gICAga2VybmVsLW1vZHVsZS1uZi1jb25udHJhY2staXB2NCBcCi0gICAga2VybmVsLW1vZHVsZS1uZi1uYXQgXAotICAgIGtlcm5lbC1tb2R1bGUtaXB0LW1hc3F1ZXJhZGUgXAotIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXNfMS44LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjguNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjEzODhjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXNfMS44LjQuYmIKQEAgLTAsMCArMSwxMDggQEAKK1NVTU1BUlkgPSAiVG9vbHMgZm9yIG1hbmFnaW5nIGtlcm5lbCBwYWNrZXQgZmlsdGVyaW5nIGNhcGFiaWxpdGllcyIKK0RFU0NSSVBUSU9OID0gImlwdGFibGVzIGlzIHRoZSB1c2Vyc3BhY2UgY29tbWFuZCBsaW5lIHByb2dyYW0gdXNlZCB0byBjb25maWd1cmUgYW5kIGNvbnRyb2wgbmV0d29yayBwYWNrZXQgXAorZmlsdGVyaW5nIGNvZGUgaW4gTGludXguIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5uZXRmaWx0ZXIub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLm5ldGZpbHRlci5vcmcvIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pcHRhYmxlcy9pcHRhYmxlcy5jO2JlZ2lubGluZT0xMztlbmRsaW5lPTI1O21kNT1jNWNmZmQwOTk3NDU1OGNmMjdkMGY3NjNkZjJhMTJkYyBcCisiCisKK1NSQ19VUkkgPSAiaHR0cDovL25ldGZpbHRlci5vcmcvcHJvamVjdHMvaXB0YWJsZXMvZmlsZXMvaXB0YWJsZXMtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BZGQtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLWxpYm5mbmV0bGluay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS5hYy1vbmx5LWNoZWNrLWNvbm50cmFjay13aGVuLWxpYm5mbmV0bGluay1lbmFibGVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2lwdGFibGVzLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vaXB0YWJsZXMucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vaXA2dGFibGVzLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vaXA2dGFibGVzLnJ1bGVzIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5YjIwMTEwNzk1N2ZiZjYyNzA5YzNkODIyNjIzOWIwZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5OTNhM2E1NDkwYTU0NGMyY2JmMmVmMTVjZjdlN2VkMjFhZjE4NDViYWYyMjgzMThkNWMzNmVmODgyN2UxNTdjIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiXAorICAgIGlwdGFibGVzLnNlcnZpY2UgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2lwdjYnLCAnaXA2dGFibGVzLnNlcnZpY2UnLCAnJywgZCl9IFwKKyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1rZXJuZWw9JHtTVEFHSU5HX0lOQ0RJUn0iCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorCisjIGxpYm5mbmV0bGluayByZWNpcGUgaXMgaW4gbWV0YS1uZXR3b3JraW5nIGxheWVyCitQQUNLQUdFQ09ORklHW2xpYm5mbmV0bGlua10gPSAiLS1lbmFibGUtbGlibmZuZXRsaW5rLC0tZGlzYWJsZS1saWJuZm5ldGxpbmssbGlibmZuZXRsaW5rIGxpYm5ldGZpbHRlci1jb25udHJhY2siCisKKyMgbGlibmZ0bmwgcmVjaXBlIGlzIGluIG1ldGEtbmV0d29ya2luZyBsYXllcihwcmV2aW91c2x5IGtub3duIGFzIGxpYm5mdGFibGVzKQorUEFDS0FHRUNPTkZJR1tsaWJuZnRubF0gPSAiLS1lbmFibGUtbmZ0YWJsZXMsLS1kaXNhYmxlLW5mdGFibGVzLGxpYm5mdG5sIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAjIFJlbW92ZSBzb21lIGxpYnRvb2wgbTQgZmlsZXMKKyAgICAjIEtlZXAgYXhfY2hlY2tfbGlua2VyX2ZsYWdzLm00IHdoaWNoIGJlbG9uZ3MgdG8gYXV0b2NvbmYtYXJjaGl2ZS4KKyAgICBybSAtZiBsaWJ0b29sLm00IGx0fm9ic29sZXRlLm00IGx0b3B0aW9ucy5tNCBsdHN1Z2FyLm00IGx0dmVyc2lvbi5tNAorfQorCitJUFRBQkxFU19SVUxFU19ESVIgPz0gIiR7c3lzY29uZmRpcn0vJHtCUE59IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke0lQVEFCTEVTX1JVTEVTX0RJUn0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9pcHRhYmxlcy5ydWxlcyAke0R9JHtJUFRBQkxFU19SVUxFU19ESVJ9CisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaXB0YWJsZXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorCisgICAgc2VkIC1pIFwKKyAgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorICAgICAgICAtZSAncyxAUlVMRVNESVJALCR7SVBUQUJMRVNfUlVMRVNfRElSfSxnJyBcCisgICAgICAgICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2lwdGFibGVzLnNlcnZpY2UKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2lwdjYnLCAndHJ1ZScsICdmYWxzZScsIGQpfSA7IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaXA2dGFibGVzLnJ1bGVzICR7RH0ke0lQVEFCTEVTX1JVTEVTX0RJUn0KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaXA2dGFibGVzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKworICAgICAgICBzZWQgLWkgXAorICAgICAgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorICAgICAgICAgICAgLWUgJ3MsQFJVTEVTRElSQCwke0lQVEFCTEVTX1JVTEVTX0RJUn0sZycgXAorICAgICAgICAgICAgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vaXA2dGFibGVzLnNlcnZpY2UKKyAgICBmaQorfQorCitQQUNLQUdFUyArPSAiJHtQTn0tbW9kdWxlcyIKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl4ke1BOfS1tb2R1bGUtLioiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kKCkgeworICAgIG1vZHVsZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCAnJHtsaWJkaXJ9L3h0YWJsZXMnLCByJ2xpYiguKilcLnNvJCcsICcke1BOfS1tb2R1bGUtJXMnLCAnJHtQTn0gbW9kdWxlICVzJywgZXh0cmFfZGVwZW5kcz0nJykKKyAgICBpZiBtb2R1bGVzOgorICAgICAgICBtZXRhcGtnID0gZC5nZXRWYXIoJ1BOJykgKyAnLW1vZHVsZXMnCisgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgbWV0YXBrZywgJyAnICsgJyAnLmpvaW4obW9kdWxlcykpCit9CisKK1JERVBFTkRTXyR7UE59ID0gIiR7UE59LW1vZHVsZS14dC1zdGFuZGFyZCIKK1JSRUNPTU1FTkRTXyR7UE59ID0gIiBcCisgICAgJHtQTn0tbW9kdWxlcyBcCisgICAga2VybmVsLW1vZHVsZS14LXRhYmxlcyBcCisgICAga2VybmVsLW1vZHVsZS1pcC10YWJsZXMgXAorICAgIGtlcm5lbC1tb2R1bGUtaXB0YWJsZS1maWx0ZXIgXAorICAgIGtlcm5lbC1tb2R1bGUtaXB0YWJsZS1uYXQgXAorICAgIGtlcm5lbC1tb2R1bGUtbmYtZGVmcmFnLWlwdjQgXAorICAgIGtlcm5lbC1tb2R1bGUtbmYtY29ubnRyYWNrIFwKKyAgICBrZXJuZWwtbW9kdWxlLW5mLWNvbm50cmFjay1pcHY0IFwKKyAgICBrZXJuZWwtbW9kdWxlLW5mLW5hdCBcCisgICAga2VybmVsLW1vZHVsZS1pcHQtbWFzcXVlcmFkZSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnaXB2NicsICdcCisgICAgICAgIGtlcm5lbC1tb2R1bGUtaXA2dGFibGUtZmlsdGVyIFwKKyAgICAgICAga2VybmVsLW1vZHVsZS1pcDYtdGFibGVzIFwKKyAgICAnLCAnJywgZCl9IFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veHRhYmxlcyIKKworIyBJbmNsdWRlIHRoZSBzeW1saW5rcyBhcyB3ZWxsIGluIHJlc3BlY3RpdmUgcGFja2FnZXMKK0ZJTEVTXyR7UE59LW1vZHVsZS14dC1jb25udHJhY2sgKz0gIiR7bGliZGlyfS94dGFibGVzL2xpYnh0X3N0YXRlLnNvIgorRklMRVNfJHtQTn0tbW9kdWxlLXh0LWN0ICs9ICIke2xpYmRpcn0veHRhYmxlcy9saWJ4dF9OT1RSQUNLLnNvIgorCitBTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzID0gIjEiCisKK0lOU0FORV9TS0lQXyR7UE59LW1vZHVsZS14dC1jb25udHJhY2sgPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tbW9kdWxlLXh0LWN0ID0gImRldi1zbyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlscy8wMDAxLW5pbmZvZC1jaGFuZ2UtdmFyaWFibGUtbmFtZS10by1hdm9pZC1jb2xsaWRpbmctd2l0aC0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvMDAwMS1uaW5mb2QtY2hhbmdlLXZhcmlhYmxlLW5hbWUtdG8tYXZvaWQtY29sbGlkaW5nLXdpdGgtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMDZhMGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvMDAwMS1uaW5mb2QtY2hhbmdlLXZhcmlhYmxlLW5hbWUtdG8tYXZvaWQtY29sbGlkaW5nLXdpdGgtLnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gYWIxYWEyZWIwMDk3YTdlZjA1ZmZjY2FjMDU4YjA2ODEyZGViMjY5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNhbWkgS2Vyb2xhIDxrZXJvbGFzYUBpa2kuZmk+CitEYXRlOiBTYXQsIDI4IERlYyAyMDE5IDE3OjE2OjI3ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIG5pbmZvZDogY2hhbmdlIHZhcmlhYmxlIG5hbWUgdG8gYXZvaWQgY29sbGlkaW5nIHdpdGggZnVuY3Rpb24KKyBuYW1lCisKK1RoZSBzeXMvY2FwYWJpbGl0eS5oIGhlYWRlciBoYXMgJ2V4dGVybiBpbnQgY2FwX3NldHVpZCh1aWRfdCB1aWQpOycKK2Z1bmN0aW9uIHByb3RvdHlwZS4KKworQWRkcmVzc2VzOiBodHRwczovL2dpdGh1Yi5jb20vaXB1dGlscy9pcHV0aWxzL2lzc3Vlcy8yNDYKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2lwdXRpbHMvaXB1dGlscy9jb21taXQvMThmOWE4NGUwZTcwMjg0MWQ2Y2M0ZDVmNTkzZGU0ZmJkMTM0OGU4M10KK1NpZ25lZC1vZmYtYnk6IFNhbWkgS2Vyb2xhIDxrZXJvbGFzYUBpa2kuZmk+CitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIG5pbmZvZC9uaW5mb2QuYyB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbmluZm9kL25pbmZvZC5jIGIvbmluZm9kL25pbmZvZC5jCitpbmRleCBiYWRiZjgwLi4yOGYwM2FmIDEwMDY0NAorLS0tIGEvbmluZm9kL25pbmZvZC5jCisrKysgYi9uaW5mb2QvbmluZm9kLmMKK0BAIC00NTQsNyArNDU0LDcgQEAgc3RhdGljIHZvaWQgZG9fZGFlbW9uaXplKHZvaWQpCisgLyogLS0tLS0tLS0tICovCisgI2lmZGVmIEhBVkVfTElCQ0FQCisgc3RhdGljIGNvbnN0IGNhcF92YWx1ZV90IGNhcF9uZXRfcmF3ID0gQ0FQX05FVF9SQVc7Cistc3RhdGljIGNvbnN0IGNhcF92YWx1ZV90IGNhcF9zZXR1aWQgPSAgQ0FQX1NFVFVJRDsgCisrc3RhdGljIGNvbnN0IGNhcF92YWx1ZV90IGNhcF9zZXR1c2VyaWQgPSBDQVBfU0VUVUlEOworIHN0YXRpYyBjYXBfZmxhZ192YWx1ZV90IGNhcF9vazsKKyAjZWxzZQorIHN0YXRpYyB1aWRfdCBldWlkOworQEAgLTQ4Niw3ICs0ODYsNyBAQCBzdGF0aWMgdm9pZCBsaW1pdF9jYXBhYmlsaXRpZXModm9pZCkKKyAKKyAJY2FwX2dldF9mbGFnKGNhcF9jdXJfcCwgQ0FQX1NFVFVJRCwgQ0FQX1BFUk1JVFRFRCwgJmNhcF9vayk7CisgCWlmIChjYXBfb2sgIT0gQ0FQX0NMRUFSKQorLQkJY2FwX3NldF9mbGFnKGNhcF9wLCBDQVBfUEVSTUlUVEVELCAxLCAmY2FwX3NldHVpZCwgQ0FQX1NFVCk7CisrCQljYXBfc2V0X2ZsYWcoY2FwX3AsIENBUF9QRVJNSVRURUQsIDEsICZjYXBfc2V0dXNlcmlkLCBDQVBfU0VUKTsKKyAKKyAJaWYgKGNhcF9zZXRfcHJvYyhjYXBfcCkgPCAwKSB7CisgCQlERUJVRyhMT0dfRVJSLCAiY2FwX3NldF9wcm9jOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKK0BAIC01MTksOCArNTE5LDggQEAgc3RhdGljIHZvaWQgZHJvcF9jYXBhYmlsaXRpZXModm9pZCkKKyAKKyAJLyogc2V0dWlkIC8gc2V0dWlkICovCisgCWlmIChjYXBfb2sgIT0gQ0FQX0NMRUFSKSB7CistCQljYXBfc2V0X2ZsYWcoY2FwX3AsIENBUF9QRVJNSVRURUQsIDEsICZjYXBfc2V0dWlkLCBDQVBfU0VUKTsKKy0JCWNhcF9zZXRfZmxhZyhjYXBfcCwgQ0FQX0VGRkVDVElWRSwgMSwgJmNhcF9zZXR1aWQsIENBUF9TRVQpOworKwkJY2FwX3NldF9mbGFnKGNhcF9wLCBDQVBfUEVSTUlUVEVELCAxLCAmY2FwX3NldHVzZXJpZCwgQ0FQX1NFVCk7CisrCQljYXBfc2V0X2ZsYWcoY2FwX3AsIENBUF9FRkZFQ1RJVkUsIDEsICZjYXBfc2V0dXNlcmlkLCBDQVBfU0VUKTsKKyAKKyAJCWlmIChjYXBfc2V0X3Byb2MoY2FwX3ApIDwgMCkgeworIAkJCURFQlVHKExPR19FUlIsICJjYXBfc2V0X3Byb2M6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzLzAwMDEtbmluZm9kLWZpeC1zeXN0ZW1kLURvY3VtZW50YXRpb24tdXJsLWVycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzLzAwMDEtbmluZm9kLWZpeC1zeXN0ZW1kLURvY3VtZW50YXRpb24tdXJsLWVycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzYTNmNTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvMDAwMS1uaW5mb2QtZml4LXN5c3RlbWQtRG9jdW1lbnRhdGlvbi11cmwtZXJyb3IucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSBjMWYxNTI3ZWIzMGQ0YTVmZWViZjlhMDc1NzU4MmJiZjdmZTNlYWU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVhIFN0ZXZhbmF0byA8YW5kcmVhLnN0ZXZhbmF0by45NUBob3RtYWlsLml0PgorRGF0ZTogVHVlLCA1IE5vdiAyMDE5IDE5OjA4OjMwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIG5pbmZvZDogZml4IHN5c3RlbWQgRG9jdW1lbnRhdGlvbiB1cmwgZXJyb3IKKworc3lzdGVtZFsxXTogL3Vzci9saWIvc3lzdGVtZC9zeXN0ZW0vbmluZm9kLnNlcnZpY2U6MzogSW52YWxpZCBVUkwsIGlnbm9yaW5nOiBuaW5mb2QoOCkKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2lwdXRpbHMvaXB1dGlscy9jb21taXQvYzFmMTUyN2ViMzBkNGE1ZmVlYmY5YTA3NTc1ODJiYmY3ZmUzZWFlOV0KK1NpZ25lZC1vZmYtYnk6IEFsZXggS2llcm5hbiA8YWxleC5raWVybmFuQGdtYWlsLmNvbT4KKy0tLQorIHN5c3RlbWQvbmluZm9kLnNlcnZpY2UuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zeXN0ZW1kL25pbmZvZC5zZXJ2aWNlLmluIGIvc3lzdGVtZC9uaW5mb2Quc2VydmljZS5pbgoraW5kZXggNWFiNjljYTAwZTk2Li44ZTc5ZmNkOTIzOGUgMTAwNjQ0CistLS0gYS9zeXN0ZW1kL25pbmZvZC5zZXJ2aWNlLmluCisrKysgYi9zeXN0ZW1kL25pbmZvZC5zZXJ2aWNlLmluCitAQCAtMSw2ICsxLDYgQEAKKyBbVW5pdF0KKyBEZXNjcmlwdGlvbj1SZXNwb25kIHRvIElQdjYgTm9kZSBJbmZvcm1hdGlvbiBRdWVyaWVzCistRG9jdW1lbnRhdGlvbj1uaW5mb2QoOCkKKytEb2N1bWVudGF0aW9uPW1hbjpuaW5mb2QoOCkKKyBSZXF1aXJlcz1uZXR3b3JrLnRhcmdldAorIEFmdGVyPW5ldHdvcmsudGFyZ2V0CisgCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvMDAwMS1yYXJwZC1yZGlzYy1Ecm9wLVByaXZhdGVVc2Vycy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlscy8wMDAxLXJhcnBkLXJkaXNjLURyb3AtUHJpdmF0ZVVzZXJzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MzY3Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvMDAwMS1yYXJwZC1yZGlzYy1Ecm9wLVByaXZhdGVVc2Vycy5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDZlNTFkNTI5OTg4Y2ZjMGJiMzU3NzUxZmQ3NjdlOWYxNDc4ZTJiODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4IEtpZXJuYW4gPGFsZXgua2llcm5hbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDEzIEZlYiAyMDIwIDA2OjA4OjQ1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHJhcnBkOiByZGlzYzogRHJvcCBQcml2YXRlVXNlcnMKKworTmVpdGhlciByYXJwZCBub3IgcmRpc2MgY2FuIGdhaW4gdGhlIG5lY2Vzc2FyeSBjYXBhYmlsaXRpZXMgd2l0aAorUHJpdmF0ZVVzZXJzIGVuYWJsZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleCBLaWVybmFuIDxhbGV4LmtpZXJuYW5AZ21haWwuY29tPgorLS0tCisgc3lzdGVtZC9yYXJwZC5zZXJ2aWNlLmluIHwgMSAtCisgc3lzdGVtZC9yZGlzYy5zZXJ2aWNlLmluIHwgMyArKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c3RlbWQvcmFycGQuc2VydmljZS5pbiBiL3N5c3RlbWQvcmFycGQuc2VydmljZS5pbgoraW5kZXggZTYwMGMxMGM5M2U2Li5mNWQ3NjIxYTdjZTggMTAwNjQ0CistLS0gYS9zeXN0ZW1kL3JhcnBkLnNlcnZpY2UuaW4KKysrKyBiL3N5c3RlbWQvcmFycGQuc2VydmljZS5pbgorQEAgLTEyLDcgKzEyLDYgQEAgQW1iaWVudENhcGFiaWxpdGllcz1DQVBfTkVUX1JBVworIER5bmFtaWNVc2VyPXllcworIFByaXZhdGVUbXA9eWVzCisgUHJpdmF0ZURldmljZXM9eWVzCistUHJpdmF0ZVVzZXJzPXllcworIFByb3RlY3RTeXN0ZW09c3RyaWN0CisgUHJvdGVjdEhvbWU9eWVzCisgUHJvdGVjdENvbnRyb2xHcm91cHM9eWVzCitkaWZmIC0tZ2l0IGEvc3lzdGVtZC9yZGlzYy5zZXJ2aWNlLmluIGIvc3lzdGVtZC9yZGlzYy5zZXJ2aWNlLmluCitpbmRleCA0ZTJhMWVjOWQwZTUuLmE3MWI4N2QzNmIzNyAxMDA2NDQKKy0tLSBhL3N5c3RlbWQvcmRpc2Muc2VydmljZS5pbgorKysrIGIvc3lzdGVtZC9yZGlzYy5zZXJ2aWNlLmluCitAQCAtOCw5ICs4LDEwIEBAIEFmdGVyPW5ldHdvcmsudGFyZ2V0CisgRW52aXJvbm1lbnRGaWxlPS0vZXRjL3N5c2NvbmZpZy9yZGlzYworIEV4ZWNTdGFydD1Ac2JpbmRpckAvcmRpc2MgLWYgLXQgJE9QVElPTlMgJFNFTkRfQUREUkVTUyAkUkVDRUlWRV9BRERSRVNTCisgCisrQ2FwYWJpbGl0eUJvdW5kaW5nU2V0PUNBUF9ORVRfUkFXCisgQW1iaWVudENhcGFiaWxpdGllcz1DQVBfTkVUX1JBVworIFByaXZhdGVUbXA9eWVzCistUHJpdmF0ZVVzZXJzPXllcworK0R5bmFtaWNVc2VyPXllcworIFByb3RlY3RTeXN0ZW09c3RyaWN0CisgUHJvdGVjdEhvbWU9eWVzCisgUHJvdGVjdENvbnRyb2xHcm91cHM9eWVzCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTkwNzA5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE5MDcwOS5iYgppbmRleCAzZjllOTkxLi4yYWVkNmI1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTkwNzA5LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxOTA3MDkuYmIKQEAgLTEwLDcgKzEwLDExIEBACiAKIERFUEVORFMgPSAiZ251dGxzIgogCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaXB1dGlscy9pcHV0aWxzIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2lwdXRpbHMvaXB1dGlscyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5pbmZvZC1jaGFuZ2UtdmFyaWFibGUtbmFtZS10by1hdm9pZC1jb2xsaWRpbmctd2l0aC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1uaW5mb2QtZml4LXN5c3RlbWQtRG9jdW1lbnRhdGlvbi11cmwtZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yYXJwZC1yZGlzYy1Ecm9wLVByaXZhdGVVc2Vycy5wYXRjaCBcCisgICAgICAgICAgICIKIFNSQ1JFViA9ICIxM2UwMDg0NzE3NmFhMjM2ODNkNjhmY2UxZDE3ZmZiNTIzNTEwOTQ2IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpAQCAtMjEsMzAgKzI1LDM1IEBACiAjIGJyZWFrcyB0aGUgdmVyc2lvbiBvcmRlci4KIENWRV9DSEVDS19XSElURUxJU1QgKz0gIkNWRS0yMDAwLTEyMTMgQ1ZFLTIwMDAtMTIxNCIKIAotUEFDS0FHRUNPTkZJRyA/Pz0gImxpYmNhcCBsaWJnY3J5cHQgcmFycGQgdHJhY2Vyb3V0ZTYiCitQQUNLQUdFQ09ORklHID8/PSAibGliY2FwIGxpYmdjcnlwdCByYXJwZCBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ25pbmZvZCB0cmFjZXJvdXRlNicsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCiBQQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLURVU0VfQ0FQPXRydWUsIC1EVVNFX0NBUD1mYWxzZSwgbGliY2FwIgogUEFDS0FHRUNPTkZJR1tsaWJnY3J5cHRdID0gIi1EVVNFX0NSWVBUTz1nY3J5cHQsIC1EVVNFX0NSWVBUTz1ub25lLCBsaWJnY3J5cHQiCiBQQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLURVU0VfSUROPXRydWUsIC1EVVNFX0lETj1mYWxzZSwgbGliaWRuMiIKIFBBQ0tBR0VDT05GSUdbZ2V0dGV4dF0gPSAiLURVU0VfR0VUVEVYVD10cnVlLCAtRFVTRV9HRVRURVhUPWZhbHNlLCBnZXR0ZXh0IgorUEFDS0FHRUNPTkZJR1tuaW5mb2RdID0gIi1EQlVJTERfTklORk9EPXRydWUsLURCVUlMRF9OSU5GT0Q9ZmFsc2UsIgogUEFDS0FHRUNPTkZJR1tyYXJwZF0gPSAiLURCVUlMRF9SQVJQRD10cnVlLC1EQlVJTERfUkFSUEQ9ZmFsc2UsIgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItRHN5c3RlbWR1bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0sLHN5c3RlbWQiCiBQQUNLQUdFQ09ORklHW3RyYWNlcm91dGU2XSA9ICItREJVSUxEX1RSQUNFUk9VVEU2PXRydWUsLURCVUlMRF9UUkFDRVJPVVRFNj1mYWxzZSwiCiBQQUNLQUdFQ09ORklHW2RvY3NdID0gIi1EQlVJTERfSFRNTF9NQU5TPXRydWUgLURCVUlMRF9NQU5TPXRydWUsLURCVUlMRF9IVE1MX01BTlM9ZmFsc2UgLURCVUlMRF9NQU5TPWZhbHNlLCBsaWJ4c2x0IgogCi1pbmhlcml0IG1lc29uIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKK2luaGVyaXQgbWVzb24gc3lzdGVtZCB1cGRhdGUtYWx0ZXJuYXRpdmVzCiAKLUVYVFJBX09FTUVTT04gKz0gIi0tcHJlZml4PSR7cm9vdF9wcmVmaXh9LyIKKyMgSGF2ZSB0byBkaXNhYmxlIHNldGNhcC9zdWlkIGFzIGl0cyBub3QgZGV0ZXJtaW5pc3RpYworRVhUUkFfT0VNRVNPTiArPSAiLS1wcmVmaXg9JHtyb290X3ByZWZpeH0vIC1ETk9fU0VUQ0FQX09SX1NVSUQ9dHJ1ZSIKIAogQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgogCiBBTFRFUk5BVElWRV8ke1BOfS1waW5nID0gInBpbmciCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbcGluZ10gPSAiJHtiYXNlX2JpbmRpcn0vcGluZyIKIAotU1BMSVRQS0dTID0gIiR7UE59LXBpbmcgJHtQTn0tYXJwaW5nICR7UE59LXRyYWNlcGF0aCAke1BOfS10cmFjZXJvdXRlNiAke1BOfS1jbG9ja2RpZmYgJHtQTn0tdGZ0cGQgJHtQTn0tcmFycGQgJHtQTn0tcmRpc2MgJHtQTn0tbmluZm9kIgorU1BMSVRQS0dTID0gIiR7UE59LXBpbmcgJHtQTn0tYXJwaW5nICR7UE59LXRyYWNlcGF0aCAke1BOfS1jbG9ja2RpZmYgJHtQTn0tdGZ0cGQgJHtQTn0tcmRpc2MgXAorICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3JhcnBkJywgJyR7UE59LXJhcnBkJywgJycsIGQpfSBcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJyR7UE59LXRyYWNlcm91dGU2ICR7UE59LW5pbmZvZCcsICcnLCBkKX0iCiBQQUNLQUdFUyArPSAiJHtTUExJVFBLR1N9IgogCiBBTExPV19FTVBUWV8ke1BOfSA9ICIxIgotQUxMT1dfRU1QVFlfJHtQTn0tcmFycGQgPSAiMSIKLUFMTE9XX0VNUFRZXyR7UE59LXRyYWNlcm91dGU2ID0gIjEiCiBSREVQRU5EU18ke1BOfSArPSAiJHtTUExJVFBLR1N9IgogCiBGSUxFU18ke1BOfSA9ICIiCkBAIC01NCw2ICs2MywxMSBAQAogRklMRVNfJHtQTn0tdHJhY2Vyb3V0ZTYJPSAiJHtiYXNlX2JpbmRpcn0vdHJhY2Vyb3V0ZTYiCiBGSUxFU18ke1BOfS1jbG9ja2RpZmYgPSAiJHtiYXNlX2JpbmRpcn0vY2xvY2tkaWZmIgogRklMRVNfJHtQTn0tdGZ0cGQgPSAiJHtiYXNlX2JpbmRpcn0vdGZ0cGQiCi1GSUxFU18ke1BOfS1yYXJwZCA9ICIke2Jhc2Vfc2JpbmRpcn0vcmFycGQiCitGSUxFU18ke1BOfS1yYXJwZCA9ICIke2Jhc2Vfc2JpbmRpcn0vcmFycGQgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmFycGRALnNlcnZpY2UiCiBGSUxFU18ke1BOfS1yZGlzYyA9ICIke2Jhc2Vfc2JpbmRpcn0vcmRpc2MiCiBGSUxFU18ke1BOfS1uaW5mb2QgPSAiJHtiYXNlX3NiaW5kaXJ9L25pbmZvZCAke3N5c2NvbmZkaXJ9L2luaXQuZC9uaW5mb2Quc2giCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJyR7UE59LW5pbmZvZCcsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1yZGlzYyIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1uaW5mb2QgPSAibmluZm9kLnNlcnZpY2UiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tcmRpc2MgPSAicmRpc2Muc2VydmljZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV8zLjQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV8zLjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWMwZDVlMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy40LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi1TVU1NQVJZID0gIlN1cHBvcnQgZm9yIHJlYWRpbmcgdmFyaW91cyBhcmNoaXZlIGZvcm1hdHMiCi1ERVNDUklQVElPTiA9ICJDIGxpYnJhcnkgYW5kIGNvbW1hbmQtbGluZSB0b29scyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyB0YXIsIGNwaW8sIHppcCwgSVNPLCBhbmQgb3RoZXIgYXJjaGl2ZSBmb3JtYXRzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJhcmNoaXZlLm9yZy8iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mZTAxZjVlMDJiMWYwY2M5MzRkNTkzYTdiMGRkY2ViNiIKLQotREVQRU5EUyA9ICJlMmZzcHJvZ3MtbmF0aXZlIgotCi1QQUNLQUdFQ09ORklHID89ICJ6bGliIGJ6MiB4eiBsem8iCi0KLVBBQ0tBR0VDT05GSUdfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCi0JbGlieG1sMiBcCi0JJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHhhdHRyJywgZCl9IFwKLSIKLQotREVQRU5EU19CWklQMiA9ICJiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUiCi1ERVBFTkRTX0JaSVAyX2NsYXNzLXRhcmdldCA9ICJiemlwMiIKLQotUEFDS0FHRUNPTkZJR1thY2xdID0gIi0tZW5hYmxlLWFjbCwtLWRpc2FibGUtYWNsLGFjbCwiCi1QQUNLQUdFQ09ORklHW3hhdHRyXSA9ICItLWVuYWJsZS14YXR0ciwtLWRpc2FibGUteGF0dHIsYXR0ciwiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIsIgotUEFDS0FHRUNPTkZJR1tiejJdID0gIi0td2l0aC1iejJsaWIsLS13aXRob3V0LWJ6MmxpYiwke0RFUEVORFNfQlpJUDJ9LCIKLVBBQ0tBR0VDT05GSUdbeHpdID0gIi0td2l0aC1sem1hLC0td2l0aG91dC1sem1hLHh6LCIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsLS13aXRob3V0LW9wZW5zc2wsb3BlbnNzbCwiCi1QQUNLQUdFQ09ORklHW2xpYnhtbDJdID0gIi0td2l0aC14bWwyLC0td2l0aG91dC14bWwyLGxpYnhtbDIsIgotUEFDS0FHRUNPTkZJR1tleHBhdF0gPSAiLS13aXRoLWV4cGF0LC0td2l0aG91dC1leHBhdCxleHBhdCwiCi1QQUNLQUdFQ09ORklHW2x6b10gPSAiLS13aXRoLWx6bzIsLS13aXRob3V0LWx6bzIsbHpvLCIKLVBBQ0tBR0VDT05GSUdbbmV0dGxlXSA9ICItLXdpdGgtbmV0dGxlLC0td2l0aG91dC1uZXR0bGUsbmV0dGxlLCIKLVBBQ0tBR0VDT05GSUdbbHo0XSA9ICItLXdpdGgtbHo0LC0td2l0aG91dC1sejQsbHo0LCIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1sYXJnZWZpbGUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2xpYmFyY2hpdmUub3JnL2Rvd25sb2Fkcy9saWJhcmNoaXZlLSR7UFZ9LnRhci5neiBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2MDQ2Mzk2MjU1YmQ3Y2Y2ZDBmNjYwM2E5YmRhMzlhYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NjQzZDUwZWQ0MGM3NTlmNTQxMmEzYWY0ZTM1M2NmZmJjZTRmZGYzYjVjZjMyMWNiNzJjYWNmMDZiMmQ4MjVlIgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzIHBrZ2NvbmZpZwotCi1DUFBGTEFHUyArPSAiLUkke1dPUktESVJ9L2V4dHJhLWluY2x1ZGVzIgotCi1kb19jb25maWd1cmVbY2xlYW5kaXJzXSArPSAiJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcyIKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCSMgV2UganVzdCBuZWVkIHRoZSBoZWFkZXJzIGZvciBzb21lIHR5cGUgY29uc3RhbnRzLCBzbyBubyBuZWVkIHRvCi0JIyBidWlsZCBhbGwgb2YgZTJmc3Byb2dzIGZvciB0aGUgdGFyZ2V0Ci0JY3AgLVIgJHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9L2V4dDJmcyAke1dPUktESVJ9L2V4dHJhLWluY2x1ZGVzLwotfQotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICI4MCIKLQotUEFDS0FHRVMgPSsgImJzZHRhciIKLUZJTEVTX2JzZHRhciA9ICIke2JpbmRpcn0vYnNkdGFyIgotCi1BTFRFUk5BVElWRV9ic2R0YXIgPSAidGFyIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Rhcl0gPSAiJHtiYXNlX2JpbmRpcn0vdGFyIgotQUxURVJOQVRJVkVfVEFSR0VUW3Rhcl0gPSAiJHtiaW5kaXJ9L2JzZHRhciIKLQotUEFDS0FHRVMgPSsgImJzZGNwaW8iCi1GSUxFU19ic2RjcGlvID0gIiR7YmluZGlyfS9ic2RjcGlvIgotCi1BTFRFUk5BVElWRV9ic2RjcGlvID0gImNwaW8iCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbY3Bpb10gPSAiJHtiYXNlX2JpbmRpcn0vY3BpbyIKLUFMVEVSTkFUSVZFX1RBUkdFVFtjcGlvXSA9ICIke2JpbmRpcn0vYnNkY3BpbyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhYjQwZmMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy40LjIuYmIKQEAgLTAsMCArMSw2NyBAQAorU1VNTUFSWSA9ICJTdXBwb3J0IGZvciByZWFkaW5nIHZhcmlvdXMgYXJjaGl2ZSBmb3JtYXRzIgorREVTQ1JJUFRJT04gPSAiQyBsaWJyYXJ5IGFuZCBjb21tYW5kLWxpbmUgdG9vbHMgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgdGFyLCBjcGlvLCB6aXAsIElTTywgYW5kIG90aGVyIGFyY2hpdmUgZm9ybWF0cyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGliYXJjaGl2ZS5vcmcvIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmUwMWY1ZTAyYjFmMGNjOTM0ZDU5M2E3YjBkZGNlYjYiCisKK0RFUEVORFMgPSAiZTJmc3Byb2dzLW5hdGl2ZSIKKworUEFDS0FHRUNPTkZJRyA/PSAiemxpYiBiejIgeHogbHpvIgorCitQQUNLQUdFQ09ORklHX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAorCWxpYnhtbDIgXAorCSR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCB4YXR0cicsIGQpfSBcCisiCisKK0RFUEVORFNfQlpJUDIgPSAiYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIgorREVQRU5EU19CWklQMl9jbGFzcy10YXJnZXQgPSAiYnppcDIiCisKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICItLWVuYWJsZS1hY2wsLS1kaXNhYmxlLWFjbCxhY2wsIgorUEFDS0FHRUNPTkZJR1t4YXR0cl0gPSAiLS1lbmFibGUteGF0dHIsLS1kaXNhYmxlLXhhdHRyLGF0dHIsIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliLCIKK1BBQ0tBR0VDT05GSUdbYnoyXSA9ICItLXdpdGgtYnoybGliLC0td2l0aG91dC1iejJsaWIsJHtERVBFTkRTX0JaSVAyfSwiCitQQUNLQUdFQ09ORklHW3h6XSA9ICItLXdpdGgtbHptYSwtLXdpdGhvdXQtbHptYSx4eiwiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLC0td2l0aG91dC1vcGVuc3NsLG9wZW5zc2wsIgorUEFDS0FHRUNPTkZJR1tsaWJ4bWwyXSA9ICItLXdpdGgteG1sMiwtLXdpdGhvdXQteG1sMixsaWJ4bWwyLCIKK1BBQ0tBR0VDT05GSUdbZXhwYXRdID0gIi0td2l0aC1leHBhdCwtLXdpdGhvdXQtZXhwYXQsZXhwYXQsIgorUEFDS0FHRUNPTkZJR1tsem9dID0gIi0td2l0aC1sem8yLC0td2l0aG91dC1sem8yLGx6bywiCitQQUNLQUdFQ09ORklHW25ldHRsZV0gPSAiLS13aXRoLW5ldHRsZSwtLXdpdGhvdXQtbmV0dGxlLG5ldHRsZSwiCitQQUNLQUdFQ09ORklHW2x6NF0gPSAiLS13aXRoLWx6NCwtLXdpdGhvdXQtbHo0LGx6NCwiCitQQUNLQUdFQ09ORklHW21iZWR0bHNdID0gIi0td2l0aC1tYmVkdGxzLC0td2l0aG91dC1tYmVkdGxzLG1iZWR0bHMsIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWxhcmdlZmlsZSIKKworU1JDX1VSSSA9ICJodHRwOi8vbGliYXJjaGl2ZS5vcmcvZG93bmxvYWRzL2xpYmFyY2hpdmUtJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDk1M2VkNmI0NzY5NGRhZGYwZTYwNDJmOGY5ZmY0NTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjYwZDU4ZDEyNjMyZWNmMWU4ZmFkNzMxNmRjODJjNmI5NzM4YTM1NjI1NzQ2YjQ3ZWNkY2FmNGFlZDE3NjE3NiIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcyBwa2djb25maWcKKworQ1BQRkxBR1MgKz0gIi1JJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcyIKKworZG9fY29uZmlndXJlW2NsZWFuZGlyc10gKz0gIiR7V09SS0RJUn0vZXh0cmEtaW5jbHVkZXMiCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwkjIFdlIGp1c3QgbmVlZCB0aGUgaGVhZGVycyBmb3Igc29tZSB0eXBlIGNvbnN0YW50cywgc28gbm8gbmVlZCB0bworCSMgYnVpbGQgYWxsIG9mIGUyZnNwcm9ncyBmb3IgdGhlIHRhcmdldAorCWNwIC1SICR7U1RBR0lOR19JTkNESVJfTkFUSVZFfS9leHQyZnMgJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcy8KK30KKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiODAiCisKK1BBQ0tBR0VTID0rICJic2R0YXIiCitGSUxFU19ic2R0YXIgPSAiJHtiaW5kaXJ9L2JzZHRhciIKKworQUxURVJOQVRJVkVfYnNkdGFyID0gInRhciIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt0YXJdID0gIiR7YmFzZV9iaW5kaXJ9L3RhciIKK0FMVEVSTkFUSVZFX1RBUkdFVFt0YXJdID0gIiR7YmluZGlyfS9ic2R0YXIiCisKK1BBQ0tBR0VTID0rICJic2RjcGlvIgorRklMRVNfYnNkY3BpbyA9ICIke2JpbmRpcn0vYnNkY3BpbyIKKworQUxURVJOQVRJVkVfYnNkY3BpbyA9ICJjcGlvIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2NwaW9dID0gIiR7YmFzZV9iaW5kaXJ9L2NwaW8iCitBTFRFUk5BVElWRV9UQVJHRVRbY3Bpb10gPSAiJHtiaW5kaXJ9L2JzZGNwaW8iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vYXZvaWRfQU1fUFJPR19NS0RJUl9QX3dhcm5pbmdfZXJyb3Jfd2l0aF9hdXRvbWFrZV8xLjEyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9hdm9pZF9BTV9QUk9HX01LRElSX1Bfd2FybmluZ19lcnJvcl93aXRoX2F1dG9tYWtlXzEuMTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzYmQyMzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9hdm9pZF9BTV9QUk9HX01LRElSX1Bfd2FybmluZ19lcnJvcl93aXRoX2F1dG9tYWtlXzEuMTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGNkZDllMmU5NjBlZWI0ZWRhN2IwOGYwMTEzZDBjZDAzNTI0YzFkNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotRGF0ZTogVHVlLCAxMCBKdWwgMjAxMiAwMjo0NDozMCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBsaWJpZG46IGZpeCBidWlsZCB3aXRoIGF1dG9tYWtlIDEuMTIKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0KLWF1dG9tYWtlIDEuMTIueCBoYXMgZGVwcmVjYXRlZCBBTV9QUk9HX01LRElSX1AgLCBhbmQgdGhyb3dzIGEgd2FybmluZyBmb3IgdGhhdCwKLWFuZCB0aGUgd2FybmluZ3MgYXJlIHRyZWF0ZWQgYXMgZXJyb3JzIGJlY2F1c2Ugb2YgdGhlIC1XZXJyb3IgcGFyYW1ldGVyLgotCi1UaGVzZSBBTV9QUk9HX01LRElSX1AgYXJlIGNvbWluZyBmcm9tIGdldHRleHQsIGFuZCB0aGUgbGF0ZXN0IGdldHRleHQgY29kZSBoYXMgbm90Ci1lbGltaW5hdGVkIHRoZXNlIGRlcHJlY2F0ZWQgbWFjcm9zIHlldC4gU28gZGlzYWJsZSB0aGUgdHJlYXRtZW50IG9mIHdhcm5pbmdzCi1hcyBlcnJvcnMgdW50aWwgZ2V0dGV4dCBpcyB1cGRhdGVkIHRvIHJlbW92ZSB0aGUgZGVwcmVjYXRlZCBtYWNyb3MuCi0KLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0yMDEyLzA3LzEwCi0KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMjYxZGFkMi4uYzRmOTM1ZSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjIsNyArMjIsNyBAQCBBQ19JTklUKFtHTlUgTGliaWRuXSwgWzEuMzRdLCBbYnVnLWxpYmlkbkBnbnUub3JnXSkKLSBBQ19DT05GSUdfQVVYX0RJUihbYnVpbGQtYXV4XSkKLSBBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCi0gQUNfQ09ORklHX0hFQURFUlMoY29uZmlnLmgpCi0tQU1fSU5JVF9BVVRPTUFLRShbMS4xMCAtV2FsbCAtV2Vycm9yIC1Xbm8tb3ZlcnJpZGVdKQotK0FNX0lOSVRfQVVUT01BS0UoWzEuMTAgLVdhbGwgLVduby1vdmVycmlkZV0pCi0gbTRfaWZkZWYoW0FNX1NJTEVOVF9SVUxFU10sIFtBTV9TSUxFTlRfUlVMRVMoW3llc10pXSkKLSAKLSAjIExpYnJhcnkgY29kZSBtb2RpZmllZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVZJU0lPTisrCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2xpYmlkbl9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2xpYmlkbl9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjMDU1OWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSBkNGY2NGI3ODQxOTEzOWVkYTNjMGUxYzZlZTExNmJiNWY3MGVhNjdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLURhdGU6IFdlZCwgMiBNYXkgMjAxMiAxODowNToxOSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBsaWJ0YXNuMTogZml4IGJ1aWxkIHdpdGggYXV0b21ha2UgMS4xMgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotVGhpcyBwYXRjaCBmaXhlcyBmb2xsb3dpbmcgaXNzdWUgd2l0aCBhdXRvbWFrZSAxLjEyCi0KLXwgYXV0b21ha2U6IHdhcm5pbmdzIGFyZSB0cmVhdGVkIGFzIGVycm9ycwotfCAvc3J2L2hvbWUvbml0aW4vYnVpbGRzL2J1aWxkLWdjYzQ3L3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL3NoYXJlL2F1dG9tYWtlLTEuMTIvYW0vbHRsaWJyYXJ5LmFtOiB3YXJuaW5nOiAnbGliaWRuLmxhJzogbGlua2luZyBsaWJ0b29sIGxpYnJhcmllcyB1c2luZyBhIG5vbi1QT1NJWAotfCAvc3J2L2hvbWUvbml0aW4vYnVpbGRzL2J1aWxkLWdjYzQ3L3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL3NoYXJlL2F1dG9tYWtlLTEuMTIvYW0vbHRsaWJyYXJ5LmFtOiBhcmNoaXZlciByZXF1aXJlcyAnQU1fUFJPR19BUicgaW4gJ2NvbmZpZ3VyZS5hYycKLQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLTIwMTIvMDUvMDMKLQotLS0tCi0gY29uZmlndXJlLmFjIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA4Mjk3NjQ5Li43Yjk2MjZlIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zMyw2ICszMywxMCBAQCBBQ19TVUJTVChMVF9DVVJSRU5ULCAxOCkKLSBBQ19TVUJTVChMVF9SRVZJU0lPTiwgMCkKLSBBQ19TVUJTVChMVF9BR0UsIDYpCi0gCi0rIyBhdXRvbWFrZSAxLjEyIHNlZW1zIHRvIHJlcXVpcmUgdGhpcywgYnV0IGF1dG9tYWtlIDEuMTEgZG9lc24ndCByZWNvZ25pemUgaXQKLSttNF9wYXR0ZXJuX2FsbG93KFtBTV9QUk9HX0FSXSkKLStBTV9QUk9HX0FSCi0rCi0gQUNfUFJPR19DQwotIGdsX0VBUkxZCi0gbGdsX0VBUkxZCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuMl8yLjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4yXzIuMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2JmZGQ4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4yXzIuMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZSBzdXBwb3J0IGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgU3RyaW5ncHJlcCwgUHVueWNvZGUgYW5kIElETkEgc3BlY2lmaWNhdGlvbnMgZGVmaW5lZCBieSB0aGUgSUVURiBJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZXMgKElETikgd29ya2luZyBncm91cC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliaWRuLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiKEdQTHYyKyB8IExHUEx2MykgJiBHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZDgzNGVhN2Q0ODA0MzhhZGEwNGU1ZDg0NjE1MjM5NSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUnYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9pZG4yLmM7ZW5kbGluZT0xNjttZDU9NDI2Yjc0ZDZkZWI2MjBhYjZkMzljOGE2ZWZkNGMxM2EgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2lkbjIuaC5pbjtlbmRsaW5lPTI3O21kNT1jMmNkMjhkM2Y4NzI2MGYxNTdmMDIyZWFiYjgzNzE0ZiIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2xpYmlkbi8ke0JQTn0tJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImI4NDZkNGQyMGUyMmI5OWQ2ZjczODdiYjY2ZTAwYTFmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZjNzM0NzMyYjUwNmQ4Nzg3NTNlYzY2MDY5ODJiZjdiOTM2ZTg2OGMyNWMzMGRkYjBkODNmN2Q3MDU2MzgxZmUiCi0KLURFUEVORFMgPSAidmlydHVhbC9saWJpY29udiBsaWJ1bmlzdHJpbmciCi0KLWluaGVyaXQgcGtnY29uZmlnIGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gZ3RrLWRvYyBsaWJfcGFja2FnZQotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1ycGF0aCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1saWJ1bmlzdHJpbmctcHJlZml4PSR7U1RBR0lOR19FWEVDUFJFRklYRElSfSBcCi0gICAgICAgICAgICAgICAgICIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jc2VkIC1pIC1lICdzfC1MJHtTVEFHSU5HX0xJQkRJUn18fCcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbGliaWRuMi5wYwotfQotCi1MSUNFTlNFXyR7UE59ID0gIihHUEx2MisgfCBMR1BMdjMpIgotTElDRU5TRV8ke1BOfS1iaW4gPSAiR1BMdjMrIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuMl8yLjMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4yXzIuMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZGY5MjQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuMl8yLjMuMC5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIkludGVybmF0aW9uYWxpemVkIERvbWFpbiBOYW1lIHN1cHBvcnQgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIkltcGxlbWVudGF0aW9uIG9mIHRoZSBTdHJpbmdwcmVwLCBQdW55Y29kZSBhbmQgSUROQSBzcGVjaWZpY2F0aW9ucyBkZWZpbmVkIGJ5IHRoZSBJRVRGIEludGVybmF0aW9uYWxpemVkIERvbWFpbiBOYW1lcyAoSUROKSB3b3JraW5nIGdyb3VwLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJpZG4vIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICIoR1BMdjIrIHwgTEdQTHYzKSAmIEdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJkODM0ZWE3ZDQ4MDQzOGFkYTA0ZTVkODQ2MTUyMzk1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkd2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2lkbjIuYztlbmRsaW5lPTE2O21kNT00MjZiNzRkNmRlYjYyMGFiNmQzOWM4YTZlZmQ0YzEzYSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvaWRuMi5oLmluO2VuZGxpbmU9Mjc7bWQ1PWMyY2QyOGQzZjg3MjYwZjE1N2YwMjJlYWJiODM3MTRmIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGliaWRuLyR7QlBOfS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMDFjNTA4NDk5NTI5NWU1MTlmOTU5NzhhZTk3ODVlZTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTFjYjFkYjNkMmUyNDlhNmEzZWI2ZjA5NDY3NzdjMmU4OTJkNWM1ZGM3YmQ5MWM3NDM5NGZjM2EwMWNhYjhiNSIKKworREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYmljb252IGxpYnVuaXN0cmluZyIKKworaW5oZXJpdCBwa2djb25maWcgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBndGstZG9jIGxpYl9wYWNrYWdlCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXJwYXRoIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWxpYnVuaXN0cmluZy1wcmVmaXg9JHtTVEFHSU5HX0VYRUNQUkVGSVhESVJ9IFwKKyAgICAgICAgICAgICAgICAgIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIE5lZWQgdG8gcmVtb3ZlIGFueSBkdXBsaWNhdGUgd2hpdGVzcGFjZSB0b28gZm9yIHJlcHJvZHVjaWJpbGl0eQorCXNlZCAtaSAtZSAnc3wtTCR7U1RBR0lOR19MSUJESVJ9fHwnIC1lICdzLyAgKi8gL2cnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2xpYmlkbjIucGMKK30KKworTElDRU5TRV8ke1BOfSA9ICIoR1BMdjIrIHwgTEdQTHYzKSIKK0xJQ0VOU0VfJHtQTn0tYmluID0gIkdQTHYzKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbl8xLjM1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbl8xLjM1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWNlNWI0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG5fMS4zNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLVNVTU1BUlkgPSAiSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWUgc3VwcG9ydCBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiSW1wbGVtZW50YXRpb24gb2YgdGhlIFN0cmluZ3ByZXAsIFB1bnljb2RlIGFuZCBJRE5BIHNwZWNpZmljYXRpb25zIGRlZmluZWQgYnkgdGhlIElFVEYgSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWVzIChJRE4pIHdvcmtpbmcgZ3JvdXAuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmlkbi8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIihMR1BMdjIuMSsgfCBMR1BMdjMpICYgR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGY0YmU0Nzk0MGE5MWVlNjk1NTZmNWY3MWVlZDRhZWMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlOR3YyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9pZG5hLmg7ZW5kbGluZT0yMTttZDU9MzdjZmZhZDI0ODA3ZjQ0NmEyNGRlM2U3MzcxZjIwYjkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2lkbi5jO2VuZGxpbmU9MjA7bWQ1PTA5ZTk3MDM0YTg4NzdiMzQ1MWNiNjUwNjVmYzJjMDZlIgotREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYmljb252IGF1dG9jb25mLWFyY2hpdmUiCi0KLWluaGVyaXQgcGtnY29uZmlnIGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gZ3RrLWRvYwotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGliaWRuLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbGliaWRuX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hdm9pZF9BTV9QUk9HX01LRElSX1Bfd2FybmluZ19lcnJvcl93aXRoX2F1dG9tYWtlXzEuMTIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pZG4tZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmVmNjM0MTQxZmUzOTMyNmNiMzU0Yjc1ZTg5MWZlYWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjExYWYxMDA1YjQ2YjdiMTVkMDU3ZDdmMTA3MzE1YTFhZDQ2OTM1YzdmY2RmMjQzYzE2ZTQ2ZWMxNGYwZmUxZSIKLQotIyBjb21tYW5kIHRvb2wgaXMgdW5kZXIgR1BMdjMrLCB3aGlsZSBsaWJpZG4gaXRzZWxmIGlzIHVuZGVyIExHUEx2Mi4xKyBvciBMR1BMdjMKLSMgc28gcGFja2FnZSBjb21tYW5kIGludG8gYSBzZXBhcmF0ZSBwYWNrYWdlCi1QQUNLQUdFUyA9KyAiaWRuIgotRklMRVNfaWRuID0gIiR7YmluZGlyfS8qIgotCi1MSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyB8IExHUEx2MyIKLUxJQ0VOU0VfaWRuID0gIkdQTHYzKyIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1jc2hhcnAiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCXJtIC1yZiAke0R9JHtkYXRhZGlyfS9lbWFjcwotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm1ubC9saWJtbmxfMS4wLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJtbmwvbGlibW5sXzEuMC40LmJiCmluZGV4IDIzMjYyZTguLmI1NWJiMzEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm1ubC9saWJtbmxfMS4wLjQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibW5sL2xpYm1ubF8xLjAuNC5iYgpAQCAtMSwxMiArMSwxMiBAQAogU1VNTUFSWSA9ICJNaW5pbWFsaXN0aWMgdXNlci1zcGFjZSBOZXRsaW5rIHV0aWxpdHkgbGlicmFyeSIKIERFU0NSSVBUSU9OID0gIk1pbmltYWxpc3RpYyB1c2VyLXNwYWNlIGxpYnJhcnkgb3JpZW50ZWQgdG8gTmV0bGluayBkZXZlbG9wZXJzLCBwcm92aWRpbmcgXAogICAgIGZ1bmN0aW9ucyBmb3IgY29tbW9uIHRhc2tzIGluIHBhcnNpbmcsIHZhbGlkYXRpbmcsIGFuZCBjb25zdHJ1Y3RpbmcgYm90aCB0aGUgTmV0bGluayBoZWFkZXIgYW5kIFRMVnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5uZXRmaWx0ZXIub3JnL3Byb2plY3RzL2xpYm1ubC9pbmRleC5odG1sIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cubmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9saWJtbmwvaW5kZXguaHRtbCIKIFNFQ1RJT04gPSAibGlicyIKIExJQ0VOU0UgPSAiTEdQTHYyLjErIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5uZXRmaWx0ZXIub3JnL3Byb2plY3RzL2xpYm1ubC9maWxlcy9saWJtbmwtJHtQVn0udGFyLmJ6MjtuYW1lPXRhciIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9uZXRmaWx0ZXIub3JnL3Byb2plY3RzL2xpYm1ubC9maWxlcy9saWJtbmwtJHtQVn0udGFyLmJ6MjtuYW1lPXRhciIKIFNSQ19VUklbdGFyLm1kNXN1bV0gPSAiYmU5YjRiNTMyOGM2ZGExYmRhNTY1YWM1ZGZmYWRiMmQiCiBTUkNfVVJJW3Rhci5zaGEyNTZzdW1dID0gIjE3MWY4OTY5OWYyODZhNTg1NGI3MmI5MWQwNmU4ZjhlMzY4MzA2NGM1OTAxZmIwOWQ5NTRhOWFiNmY1NTFmODEiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnBpcGVsaW5lL2xpYnBpcGVsaW5lXzEuNS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlicGlwZWxpbmUvbGlicGlwZWxpbmVfMS41LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1ODAyMDcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlicGlwZWxpbmUvbGlicGlwZWxpbmVfMS41LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gInBpcGVsaW5lIG1hbmlwdWxhdGlvbiBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiVGhpcyBpcyBhIEMgbGlicmFyeSBmb3Igc2V0dGluZyB1cCBhbmQgcnVubmluZyBwaXBlbGluZXMgb2YgcHJvY2Vzc2VzLCBcCi13aXRob3V0IG5lZWRpbmcgdG8gaW52b2x2ZSBzaGVsbCBjb21tYW5kLWxpbmUgcGFyc2luZyB3aGljaCBpcyBvZnRlbiBcCi1lcnJvci1wcm9uZSBhbmQgaW5zZWN1cmUuIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpYnBpcGVsaW5lLm5vbmdudS5vcmcvIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1TUkNfVVJJID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vbGlicGlwZWxpbmUvbGlicGlwZWxpbmUtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjRjOGZlNmNkODU0MjJiYWFmZDZlMDYwZjg5NmM2MWJjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2MzM3MDZiN2Q4NDVmMDhiNDJiYzY2ZGRiZTg0NWQ1N2U3MjZiZjg5Mjk4ZTJjZWUyOWYwOTU3N2UyZjkwMmYiCi0KLWluaGVyaXQgcGtnY29uZmlnIGF1dG90b29scwotCi1hY3BhdGhzID0gIi1JICR7U30vZ2wvbTQgLUkgJHtTfS9tNCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnBpcGVsaW5lL2xpYnBpcGVsaW5lXzEuNS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlicGlwZWxpbmUvbGlicGlwZWxpbmVfMS41LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE4MjQ2MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnBpcGVsaW5lL2xpYnBpcGVsaW5lXzEuNS4yLmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAicGlwZWxpbmUgbWFuaXB1bGF0aW9uIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJUaGlzIGlzIGEgQyBsaWJyYXJ5IGZvciBzZXR0aW5nIHVwIGFuZCBydW5uaW5nIHBpcGVsaW5lcyBvZiBwcm9jZXNzZXMsIFwKK3dpdGhvdXQgbmVlZGluZyB0byBpbnZvbHZlIHNoZWxsIGNvbW1hbmQtbGluZSBwYXJzaW5nIHdoaWNoIGlzIG9mdGVuIFwKK2Vycm9yLXByb25lIGFuZCBpbnNlY3VyZS4iCitIT01FUEFHRSA9ICJodHRwOi8vbGlicGlwZWxpbmUubm9uZ251Lm9yZy8iCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1NSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS9saWJwaXBlbGluZS9saWJwaXBlbGluZS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMTY5ZGU0Y2MxZjZmN2Y3ZDQzMGE1YmVkODU4YjJmZDMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmQ1OWM2NDljMWFlOWQ2NzYwNGQxNjQ0ZjExNmFkNGQyOTdlYWE2NmY4MzhlM2RmYWI5NmI0MWU4NWIwNTlmYiIKKworaW5oZXJpdCBwa2djb25maWcgYXV0b3Rvb2xzCisKK2FjcGF0aHMgPSAiLUkgJHtTfS9nbC9tNCAtSSAke1N9L200IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNy4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjcuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY1YTI3YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjcuMTAuYmIKQEAgLTAsMCArMSwzMSBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBzb2x2aW5nIHBhY2thZ2VzIGFuZCByZWFkaW5nIHJlcG9zaXRvcmllcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi9pc3N1ZXMiCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLkJTRDttZDU9NjIyNzJiZDExYzk3Mzk2ZDRhYWYxYzQxYmMxMWY3ZDgiCisKK0RFUEVORFMgPSAiZXhwYXQgemxpYiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYuZ2l0IFwKKyIKKworU1JDUkVWID0gIjYwNWRkMjY0NWVmODk5ZTJiN2M5NTcwOTQ3NmZiNTFlMjhkN2UzNzgiCisKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VfQ0xBU1NFUycsJ3BhY2thZ2VfcnBtJywncnBtJywnJyxkKX0iCitQQUNLQUdFQ09ORklHW3JwbV0gPSAiLURFTkFCTEVfUlBNTUQ9T04gLURFTkFCTEVfUlBNREI9T04sLHJwbSIKKworRVhUUkFfT0VDTUFLRSA9ICItRE1VTFRJX1NFTUFOVElDUz1PTiAtREVOQUJMRV9DT01QTEVYX0RFUFM9T04iCisKK1BBQ0tBR0VTID0rICIke1BOfS10b29scyAke1BOfWV4dCIKKworRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCitGSUxFU18ke1BOfWV4dCA9ICIke2xpYmRpcn0vJHtQTn1leHQuc28uKiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNy44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNy44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmU5YWUwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjcuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmb3Igc29sdmluZyBwYWNrYWdlcyBhbmQgcmVhZGluZyByZXBvc2l0b3JpZXMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdiIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYvaXNzdWVzIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5CU0Q7bWQ1PTYyMjcyYmQxMWM5NzM5NmQ0YWFmMWM0MWJjMTFmN2Q4IgotCi1ERVBFTkRTID0gImV4cGF0IHpsaWIiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2LmdpdCBcCi0iCi0KLVNSQ1JFViA9ICI1MjA1YzU2ODNjZTJjOGI4Mjg4NTM0MDU5YmE0MGEzMThhMmExNjFkIgotCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInJwbSIKLVBBQ0tBR0VDT05GSUdbcnBtXSA9ICItREVOQUJMRV9SUE1NRD1PTiAtREVOQUJMRV9SUE1EQj1PTiwscnBtIgotCi1FWFRSQV9PRUNNQUtFID0gIi1ETVVMVElfU0VNQU5USUNTPU9OIC1ERU5BQkxFX0NPTVBMRVhfREVQUz1PTiIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzICR7UE59ZXh0IgotCi1GSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKLUZJTEVTXyR7UE59ZXh0ID0gIiR7bGliZGlyfS8ke1BOfWV4dC5zby4qIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy9tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFjZDlmOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy9tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotQ29uc2lkZXIgbXVzbCBwcm92aWRlZCBidWlsdC1pbiBkZWZpbmVzCi0KLUhlbHBzIGNvbXBpbGUgbGlidGlycGMgd2l0aCBtdXNsCi1iaXRzL2VuZGlhbi5oIGlzIG5vdCBzdXBwb3NlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLS0tLSBhL3RpcnBjL3JwYy90eXBlcy5oCi0rKysgYi90aXJwYy9ycGMvdHlwZXMuaAotQEAgLTY2LDcgKzY2LDcgQEAgdHlwZWRlZiAgIGludDMyX3QgcnBjX2lubGluZV90OwotICNkZWZpbmUgbWVtX2ZyZWUocHRyLCBic2l6ZSkJZnJlZShwdHIpCi0gCi0gCi0tI2lmIGRlZmluZWQgX19BUFBMRV9DQ19fIHx8IGRlZmluZWQgX19GcmVlQlNEX18KLSsjaWYgZGVmaW5lZCBfX0FQUExFX0NDX18gfHwgZGVmaW5lZCBfX0ZyZWVCU0RfXyB8fCAhZGVmaW5lZChfX0dMSUJDX18pCi0gIyBkZWZpbmUgX191X2NoYXJfZGVmaW5lZAotICMgZGVmaW5lIF9fZGFkZHJfdF9kZWZpbmVkCi0gI2VuZGlmCi0tLS0gYS9zcmMveGRyX2Zsb2F0LmMKLSsrKyBiL3NyYy94ZHJfZmxvYXQuYwotQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIHN0cnVjdCBzZ2xfbGltaXRzIHsKLSB9OwotICNlbHNlCi0gCi0tI2luY2x1ZGUgPGJpdHMvZW5kaWFuLmg+Ci0rI2luY2x1ZGUgPGVuZGlhbi5oPgotICNkZWZpbmUgSUVFRUZQCi0gCi0gI2VuZGlmIC8qIHZheCAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGNfMS4xLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18xLjEuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjMzY2VjZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18xLjEuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLVNVTU1BUlkgPSAiVHJhbnNwb3J0LUluZGVwZW5kZW50IFJQQyBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiTGlidGlycGMgaXMgYSBwb3J0IG9mIFN1bnMgVHJhbnNwb3J0LUluZGVwZW5kZW50IFJQQyBsaWJyYXJ5IHRvIExpbnV4IgotU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCi1IT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYnRpcnBjLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD0xODMwNzUmYXRpZD05MDM3ODQiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY4MzVjY2U4ODUyNDgxZTRiMmJiYmRkMjNiNWU0N2YzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9uZXRuYW1lLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNzttZDU9ZjhhOGNkMmNiMjVhYzVhYTE2NzY3MzY0ZmIwZTNjMjQiCi0KLVBST1ZJREVTID0gInZpcnR1YWwvbGlicnBjIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYnRpcnBjL2ZpbGVzL2xpYnRpcnBjLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKS8iCi1TUkNfVVJJW21kNXN1bV0gPSAiZjVkMmE2MjNlOWRmYmQ4MThkMmYzZjNhNGE4NzhlM2EiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmNhNTI5ZjAyMjkyZTEwYzE1ODU2MjI5NWExZmZkOTVkMmNlOGFmOTc4MjBlMzUzNGZlMWIwZTNhZWM3NTYxZCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ3NzYXBpIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgICAgY2hvd24gcm9vdDpyb290ICR7RH0ke3N5c2NvbmZkaXJ9L25ldGNvbmZpZwotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L3JwYwotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L3JwY3N2YwotICAgICAgICBmb3IgbGlua19oZWFkZXIgaW4gJHtEfSR7aW5jbHVkZWRpcn0vdGlycGMvcnBjLyo7IGRvCi0gICAgICAgICAgICBpZiBbIC1mICRsaW5rX2hlYWRlciAtYSAhIC1lICR7RH0vJHtpbmNsdWRlZGlyfS9ycGMvJChiYXNlbmFtZSAkbGlua19oZWFkZXIpIF07IHRoZW4KLSAgICAgICAgICAgICAgICBsbiAtc2YgLi4vdGlycGMvcnBjLyQoYmFzZW5hbWUgJGxpbmtfaGVhZGVyKSAke0R9JHtpbmNsdWRlZGlyfS9ycGMvJChiYXNlbmFtZSAkbGlua19oZWFkZXIpCi0gICAgICAgICAgICBmaQotICAgICAgICBkb25lCi0gICAgICAgIGZvciBsaW5rX2hlYWRlciBpbiAke0R9JHtpbmNsdWRlZGlyfS90aXJwYy9ycGNzdmMvKjsgZG8KLSAgICAgICAgICAgIGlmIFsgLWYgJGxpbmtfaGVhZGVyIC1hICEgLWUgJHtEfS8ke2luY2x1ZGVkaXJ9L3JwY3N2Yy8kKGJhc2VuYW1lICRsaW5rX2hlYWRlcikgXTsgdGhlbgotICAgICAgICAgICAgICAgIGxuIC1zZiAuLi90aXJwYy9ycGMvJChiYXNlbmFtZSAkbGlua19oZWFkZXIpICR7RH0ke2luY2x1ZGVkaXJ9L3JwY3N2Yy8kKGJhc2VuYW1lICRsaW5rX2hlYWRlcikKLSAgICAgICAgICAgIGZpCi0gICAgICAgIGRvbmUKLSAgICAgICAgbG4gLXNmICB0aXJwYy9uZXRjb25maWcuaCAke0R9LyR7aW5jbHVkZWRpcn0vbmV0Y29uZmlnLmgKLQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18xLjIuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjXzEuMi42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMDBkMTUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18xLjIuNi5iYgpAQCAtMCwwICsxLDI4IEBACitTVU1NQVJZID0gIlRyYW5zcG9ydC1JbmRlcGVuZGVudCBSUEMgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIkxpYnRpcnBjIGlzIGEgcG9ydCBvZiBTdW5zIFRyYW5zcG9ydC1JbmRlcGVuZGVudCBSUEMgbGlicmFyeSB0byBMaW51eCIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJ0aXJwYy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MTgzMDc1JmF0aWQ9OTAzNzg0IgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mODM1Y2NlODg1MjQ4MWU0YjJiYmJkZDIzYjVlNDdmMyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbmV0bmFtZS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9Mjc7bWQ1PWY4YThjZDJjYjI1YWM1YWExNjc2NzM2NGZiMGUzYzI0IgorCitQUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYnJwYyIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5iejIiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlidGlycGMvZmlsZXMvbGlidGlycGMvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMjVmOWNjMThiZmFkNTBmN2M0NDZjNzdmNGFlMDBiYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0Mjc4ZTlhNTE4MWQ1YWY5Y2Q3ODg1MzIyZmRlY2ViYzQ0NGY5YTNkYTg3YzUyNmU3ZDQ3ZjdhMTJhMzdkMWNjIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1nc3NhcGkiCisKK0NGTEFHUyArPSAiLWZjb21tb24iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWNob3duIHJvb3Q6cm9vdCAke0R9JHtzeXNjb25mZGlyfS9uZXRjb25maWcKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGRfMS40LjU0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGRfMS40LjU0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGNlNjk4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC41NC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLVNVTU1BUlkgPSAiTGlnaHR3ZWlnaHQgaGlnaC1wZXJmb3JtYW5jZSB3ZWIgc2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWdodHRwZC5uZXQvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vcmVkbWluZS5saWdodHRwZC5uZXQvcHJvamVjdHMvbGlnaHR0cGQvaXNzdWVzIgotCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU0ZGFjNWM2YWIxNjlhYTIxMmZlYjUwMjg4NTNhNTc5IgotCi1TRUNUSU9OID0gIm5ldCIKLVJERVBFTkRTXyR7UE59ID0gImxpZ2h0dHBkLW1vZHVsZS1kaXJsaXN0aW5nIFwKLSAgICAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1pbmRleGZpbGUgXAotICAgICAgICAgICAgICAgICAgbGlnaHR0cGQtbW9kdWxlLXN0YXRpY2ZpbGUiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJsaWdodHRwZC1tb2R1bGUtYWNjZXNzIFwKLSAgICAgICAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1hY2Nlc3Nsb2ciCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmxpZ2h0dHBkLm5ldC9saWdodHRwZC9yZWxlYXNlcy0xLjQueC9saWdodHRwZC0ke1BWfS50YXIueHogXAotICAgICAgICBmaWxlOi8vaW5kZXguaHRtbC5saWdodHRwZCBcCi0gICAgICAgIGZpbGU6Ly9saWdodHRwZC5jb25mIFwKLSAgICAgICAgZmlsZTovL2xpZ2h0dHBkIFwKLSAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLXBjcmUtZGVwZW5kZW5jeS1pbnN0ZWFkLW9mLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdhYmM3NzYyNDNjODExZTk4NzJmNzNhYjM4YjdmOGI1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNmMTRjY2UyMjU0YTk2ZDhmY2I2ZDMxODFlMWEzYzI5YThmODMyNTMxYzNlODZmZjZmMjUyNGVjZGE5YTg3MjEiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJvcGVuc3NsIHBjcmUgemxpYiBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsICdhdHRyJywgJycsIGQpfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiIKLVBBQ0tBR0VDT05GSUdbbW1hcF0gPSAiLS1lbmFibGUtbW1hcCwtLWRpc2FibGUtbW1hcCIKLVBBQ0tBR0VDT05GSUdbbGliZXZdID0gIi0td2l0aC1saWJldiwtLXdpdGhvdXQtbGliZXYsbGliZXYiCi1QQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtbXlzcWwsLS13aXRob3V0LW15c3FsLG1hcmlhZGIiCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1thdHRyXSA9ICItLXdpdGgtYXR0ciwtLXdpdGhvdXQtYXR0cixhdHRyIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsLS13aXRob3V0LW9wZW5zc2wsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdba3JiNV0gPSAiLS13aXRoLWtyYjUsLS13aXRob3V0LWtyYjUsa3JiNSIKLVBBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS13aXRoLXBjcmUsLS13aXRob3V0LXBjcmUsbGlicGNyZSIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiIKLVBBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0td2l0aC1iemlwMiwtLXdpdGhvdXQtYnppcDIsYnppcDIiCi1QQUNLQUdFQ09ORklHW3dlYmRhdi1wcm9wc10gPSAiLS13aXRoLXdlYmRhdi1wcm9wcywtLXdpdGhvdXQtd2ViZGF2LXByb3BzLGxpYnhtbDIgc3FsaXRlMyIKLVBBQ0tBR0VDT05GSUdbd2ViZGF2LWxvY2tzXSA9ICItLXdpdGgtd2ViZGF2LWxvY2tzLC0td2l0aG91dC13ZWJkYXYtbG9ja3MsdXRpbC1saW51eCIKLVBBQ0tBR0VDT05GSUdbZ2RibV0gPSAiLS13aXRoLWdkYm0sLS13aXRob3V0LWdkYm0sZ2RibSIKLVBBQ0tBR0VDT05GSUdbbWVtY2FjaGVdID0gIi0td2l0aC1tZW1jYWNoZWQsLS13aXRob3V0LW1lbWNhY2hlZCxsaWJtZW1jYWNoZWQiCi1QQUNLQUdFQ09ORklHW2x1YV0gPSAiLS13aXRoLWx1YSwtLXdpdGhvdXQtbHVhLGx1YSIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1sZnMgLS13aXRob3V0LWZhbSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwZGF0ZS1yYy5kIGdldHRleHQgc3lzdGVtZAotCi1JTklUU0NSSVBUX05BTUUgPSAibGlnaHR0cGQiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA3MCIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImxpZ2h0dHBkLnNlcnZpY2UiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kICR7RH0ke3N5c2NvbmZkaXJ9L2xpZ2h0dHBkICR7RH0ke3N5c2NvbmZkaXJ9L2xpZ2h0dHBkLmQgJHtEfS93d3cvcGFnZXMvZGF2Ci0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbGlnaHR0cGQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlnaHR0cGQuY29uZiAke0R9JHtzeXNjb25mZGlyfS9saWdodHRwZAotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2luZGV4Lmh0bWwubGlnaHR0cGQgJHtEfS93d3cvcGFnZXMvaW5kZXguaHRtbAotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLW0gMDY0NCAke1N9L2RvYy9zeXN0ZW1kL2xpZ2h0dHBkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotCQktZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCi0JCS1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAotCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9saWdodHRwZC5zZXJ2aWNlCi0JI0ZvciBGSFMgY29tcGxpYW5jZSwgY3JlYXRlIHN5bWJvbGljIGxpbmtzIHRvIC92YXIvbG9nIGFuZCAvdmFyL3RtcCBmb3IgbG9ncyBhbmQgdGVtcG9yYXJ5IGRhdGEKLQlsbiAtc2YgJHtsb2NhbHN0YXRlZGlyfS9sb2cgJHtEfS93d3cvbG9ncwotCWxuIC1zZiAke2xvY2Fsc3RhdGVkaXJ9L3RtcCAke0R9L3d3dy92YXIKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0gL3d3dyIKLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vbGlnaHR0cGQvbGlnaHR0cGQuY29uZiIKLQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpZ2h0dHBkLW1vZHVsZS0uKiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGxpZ2h0dHBkX2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0nKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpZ2h0dHBkX2xpYmRpciwgcidebW9kXyguKilcLnNvJCcsICdsaWdodHRwZC1tb2R1bGUtJXMnLCAnTGlnaHR0cGQgbW9kdWxlIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycpCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNTUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNTUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EyNTVjZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC41NS5iYgpAQCAtMCwwICsxLDgzIEBACitTVU1NQVJZID0gIkxpZ2h0d2VpZ2h0IGhpZ2gtcGVyZm9ybWFuY2Ugd2ViIHNlcnZlciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGlnaHR0cGQubmV0LyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3JlZG1pbmUubGlnaHR0cGQubmV0L3Byb2plY3RzL2xpZ2h0dHBkL2lzc3VlcyIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNGRhYzVjNmFiMTY5YWEyMTJmZWI1MDI4ODUzYTU3OSIKKworU0VDVElPTiA9ICJuZXQiCitSREVQRU5EU18ke1BOfSA9ICJsaWdodHRwZC1tb2R1bGUtZGlybGlzdGluZyBcCisgICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtaW5kZXhmaWxlIFwKKyAgICAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1zdGF0aWNmaWxlIgorUlJFQ09NTUVORFNfJHtQTn0gPSAibGlnaHR0cGQtbW9kdWxlLWFjY2VzcyBcCisgICAgICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtYWNjZXNzbG9nIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5saWdodHRwZC5uZXQvbGlnaHR0cGQvcmVsZWFzZXMtMS40LngvbGlnaHR0cGQtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgZmlsZTovL2luZGV4Lmh0bWwubGlnaHR0cGQgXAorICAgICAgICBmaWxlOi8vbGlnaHR0cGQuY29uZiBcCisgICAgICAgIGZpbGU6Ly9saWdodHRwZCBcCisgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1wY3JlLWRlcGVuZGVuY3ktaW5zdGVhZC1vZi1jb25maWcucGF0Y2ggXAorICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZTRiZGEyYzI4YmNiZGFjNmViOTQxNTI4ZjZlZGYwMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2YTBiNTBlOWM5ZDVjYzNkOWU0ODU5MjMxNWMyNWEyZDY0NTg1OGY4NjNlMWNjZDEyMDUwN2EzMGNlMjFlOTI3IgorCitQQUNLQUdFQ09ORklHID8/PSAib3BlbnNzbCBwY3JlIHpsaWIgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCAnYXR0cicsICcnLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYiCitQQUNLQUdFQ09ORklHW21tYXBdID0gIi0tZW5hYmxlLW1tYXAsLS1kaXNhYmxlLW1tYXAiCitQQUNLQUdFQ09ORklHW2xpYmV2XSA9ICItLXdpdGgtbGliZXYsLS13aXRob3V0LWxpYmV2LGxpYmV2IgorUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS13aXRoLW15c3FsLC0td2l0aG91dC1teXNxbCxtYXJpYWRiIgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtbGRhcCwtLXdpdGhvdXQtbGRhcCxvcGVubGRhcCIKK1BBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS13aXRoLWF0dHIsLS13aXRob3V0LWF0dHIsYXR0ciIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZCwtLXdpdGhvdXQtdmFsZ3JpbmQsdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLC0td2l0aG91dC1vcGVuc3NsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1rcmI1LC0td2l0aG91dC1rcmI1LGtyYjUiCitQQUNLQUdFQ09ORklHW3BjcmVdID0gIi0td2l0aC1wY3JlLC0td2l0aG91dC1wY3JlLGxpYnBjcmUiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIiCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1t3ZWJkYXYtcHJvcHNdID0gIi0td2l0aC13ZWJkYXYtcHJvcHMsLS13aXRob3V0LXdlYmRhdi1wcm9wcyxsaWJ4bWwyIHNxbGl0ZTMiCitQQUNLQUdFQ09ORklHW3dlYmRhdi1sb2Nrc10gPSAiLS13aXRoLXdlYmRhdi1sb2NrcywtLXdpdGhvdXQtd2ViZGF2LWxvY2tzLHV0aWwtbGludXgiCitQQUNLQUdFQ09ORklHW2dkYm1dID0gIi0td2l0aC1nZGJtLC0td2l0aG91dC1nZGJtLGdkYm0iCitQQUNLQUdFQ09ORklHW21lbWNhY2hlXSA9ICItLXdpdGgtbWVtY2FjaGVkLC0td2l0aG91dC1tZW1jYWNoZWQsbGlibWVtY2FjaGVkIgorUEFDS0FHRUNPTkZJR1tsdWFdID0gIi0td2l0aC1sdWEsLS13aXRob3V0LWx1YSxsdWEiCisKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtbGZzIC0td2l0aG91dC1mYW0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtcmMuZCBnZXR0ZXh0IHN5c3RlbWQKKworSU5JVFNDUklQVF9OQU1FID0gImxpZ2h0dHBkIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgNzAiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJsaWdodHRwZC5zZXJ2aWNlIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCAke0R9JHtzeXNjb25mZGlyfS9saWdodHRwZCAke0R9JHtzeXNjb25mZGlyfS9saWdodHRwZC5kICR7RH0vd3d3L3BhZ2VzL2RhdgorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2xpZ2h0dHBkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xpZ2h0dHBkLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vbGlnaHR0cGQKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9pbmRleC5odG1sLmxpZ2h0dHBkICR7RH0vd3d3L3BhZ2VzL2luZGV4Lmh0bWwKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9kb2Mvc3lzdGVtZC9saWdodHRwZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAorCQktZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbGlnaHR0cGQuc2VydmljZQorCSNGb3IgRkhTIGNvbXBsaWFuY2UsIGNyZWF0ZSBzeW1ib2xpYyBsaW5rcyB0byAvdmFyL2xvZyBhbmQgL3Zhci90bXAgZm9yIGxvZ3MgYW5kIHRlbXBvcmFyeSBkYXRhCisJbG4gLXNmICR7bG9jYWxzdGF0ZWRpcn0vbG9nICR7RH0vd3d3L2xvZ3MKKwlsbiAtc2YgJHtsb2NhbHN0YXRlZGlyfS90bXAgJHtEfS93d3cvdmFyCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9IC93d3ciCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L2xpZ2h0dHBkL2xpZ2h0dHBkLmNvbmYiCisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWdodHRwZC1tb2R1bGUtLioiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICBsaWdodHRwZF9saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9JykKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWdodHRwZF9saWJkaXIsIHInXm1vZF8oLiopXC5zbyQnLCAnbGlnaHR0cGQtbW9kdWxlLSVzJywgJ0xpZ2h0dHBkIG1vZHVsZSBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnKQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi1yZWxlYXNlLzAwMDEtUmVtb3ZlLXRpbWVzdGFtcC1mcm9tLW1hbnBhZ2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiLXJlbGVhc2UvMDAwMS1SZW1vdmUtdGltZXN0YW1wLWZyb20tbWFucGFnZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjA5NWZkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi1yZWxlYXNlLzAwMDEtUmVtb3ZlLXRpbWVzdGFtcC1mcm9tLW1hbnBhZ2UucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBmYjBiNThiZTkzOGJhYjU1NzFhYzBiZGVjMzcyNWY2ZDg4YjA3ZTlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CitEYXRlOiBTYXQsIDIyIEZlYiAyMDIwIDE5OjAxOjI4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSB0aW1lc3RhbXAgZnJvbSBtYW5wYWdlCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtsc2ItZGlzY3Vzc0BsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZ10KK1NpZ25lZC1vZmYtYnk6IEplcmVteSBBLiBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorLS0tCisgTWFrZWZpbGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCAwNGZkZWNkLi41YmU4MDgxIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMTcsNyArMTcsNyBAQCBtYW46IGxzYl9yZWxlYXNlLjEuZ3oKKyAKKyBsc2JfcmVsZWFzZS4xLmd6OiBsc2JfcmVsZWFzZQorIAlALi9oZWxwMm1hbiAtTiAtLWluY2x1ZGUgLi9sc2JfcmVsZWFzZS5leGFtcGxlcyAtLWFsdF92ZXJzaW9uX2tleT1wcm9ncmFtX3ZlcnNpb24gLi9sc2JfcmVsZWFzZSA+bHNiX3JlbGVhc2UuMQorLQlAZ3ppcCAtOWYgbHNiX3JlbGVhc2UuMQorKwlAZ3ppcCAtOWZuIGxzYl9yZWxlYXNlLjEKKyAKKyBpbnN0YWxsOiBhbGwKKyAJaW5zdGFsbCAtRCAtbSA2NDQgbHNiX3JlbGVhc2UuMS5neiAke21hbmRpcn0vbWFuMS9sc2JfcmVsZWFzZS4xLmd6CistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiLXJlbGVhc2VfMS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi1yZWxlYXNlXzEuNC5iYgppbmRleCA1MmUzMDI2Li5hMDZjYmNmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiLXJlbGVhc2VfMS40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2ItcmVsZWFzZV8xLjQuYmIKQEAgLTEwLDYgKzEwLDcgQEAKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9sc2IvbHNiX3JlbGVhc2UvMS40L2xzYi1yZWxlYXNlLTEuNC50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtbHNiX3JlbGVhc2UtdG8td29yay13aXRoLWJ1c3lib3gtaGVhZC1hbmQtZmluZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS10aW1lc3RhbXAtZnJvbS1tYW5wYWdlLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiMzA1MzdlZjVhMDFlMGNhOTRiN2I4ZWI2YTM2YmIxZTQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtQWRkLWNvbmZpZ3VyZS10aW1lLWNoZWNrLWZvci1nZXRkZW50cy1nZXRkZW50czY0LUFQSS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1BZGQtY29uZmlndXJlLXRpbWUtY2hlY2stZm9yLWdldGRlbnRzLWdldGRlbnRzNjQtQVBJLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmNlYWRiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1BZGQtY29uZmlndXJlLXRpbWUtY2hlY2stZm9yLWdldGRlbnRzLWdldGRlbnRzNjQtQVBJLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotRnJvbSA0MDRkZmViNGZhZWYyMTNiMDQ1MGYxNzNiNjBjZDcwODBlZGVjMzQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjYgSnVsIDIwMTkgMTA6MzI6MjkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIEFkZCBjb25maWd1cmUgdGltZSBjaGVjayBmb3IgZ2V0ZGVudHMvZ2V0ZGVudHM2NCBBUElzCi0KLWdsaWJjIDIuMzAgaGFzIGFkZGVkIHdyYXBwZXIgZm9yIGdldGRlbnRzNjQgdGhpcyB3aWxsIGhlbHAgaW4gZGV0ZWN0aW5nCi1yaWdodCBjb25kaXRpb24gdG8gdXNlIGZhbGxiYWNrCi0KLUNoZWNrIGZvciBnZXRkZW50cyBBUEkgYXMgd2VsbCB3aGlsZSBoZXJlCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwOi8vbGlzdHMubGludXguaXQvcGlwZXJtYWlsL2x0cC8yMDE5LUp1bHkvMDEyOTU0Lmh0bWxdCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKwotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0ZGVudHMvZ2V0ZGVudHMuaCB8IDggKysrKysrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02NSw2ICs2NSw4IEBAIEFDX0NIRUNLX0ZVTkNTKFsgXAotICAgICBmYWxsb2NhdGUgXAotICAgICBmY2hvd25hdCBcCi0gICAgIGZzdGF0YXQgXAotKyAgICBnZXRkZW50cyBcCi0rICAgIGdldGRlbnRzNjQgXAotICAgICBrY21wIFwKLSAgICAgbWtkaXJhdCBcCi0gICAgIG1rbm9kYXQgXAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXRkZW50cy9nZXRkZW50cy5oCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldGRlbnRzL2dldGRlbnRzLmgKLUBAIC0yMyw3ICsyMyw3IEBACi0gI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlICJ0ZXN0LmgiCi0gI2luY2x1ZGUgImxhcGkvc3lzY2FsbHMuaCIKLS0KLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0gLyoKLSAgKiBTZWUgZnMvY29tcGF0LmMgc3RydWN0IGNvbXBhdF9saW51eF9kaXJlbnQKLSAgKi8KLUBAIC0zNCwxMiArMzQsMTcgQEAgc3RydWN0IGxpbnV4X2RpcmVudCB7Ci0gCWNoYXIgICAgICAgICAgICBkX25hbWVbXTsKLSB9OwotIAotKyNpZiBIQVZFX0dFVERFTlRTCi0rI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNlbHNlCi0gc3RhdGljIGlubGluZSBpbnQKLSBnZXRkZW50cyh1bnNpZ25lZCBpbnQgZmQsIHN0cnVjdCBsaW51eF9kaXJlbnQgKmRpcnAsIHVuc2lnbmVkIGludCBzaXplKQotIHsKLSAJcmV0dXJuIGx0cF9zeXNjYWxsKF9fTlJfZ2V0ZGVudHMsIGZkLCBkaXJwLCBzaXplKTsKLSB9Ci0gCi0rI2VuZGlmIC8qIEhBVkVfR0VUREVOVFMgKi8KLSsKLSBzdHJ1Y3QgbGludXhfZGlyZW50NjQgewotIAl1aW50NjRfdAlkX2lubzsKLSAJaW50NjRfdAkJZF9vZmY7Ci1AQCAtNDgsMTAgKzUzLDEzIEBAIHN0cnVjdCBsaW51eF9kaXJlbnQ2NCB7Ci0gCWNoYXIJCWRfbmFtZVtdOwotIH07Ci0gCi0rI2lmIEhBVkVfR0VUREVOVFM2NAotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjZWxzZQotIHN0YXRpYyBpbmxpbmUgaW50Ci0gZ2V0ZGVudHM2NCh1bnNpZ25lZCBpbnQgZmQsIHN0cnVjdCBsaW51eF9kaXJlbnQ2NCAqZGlycDY0LCB1bnNpZ25lZCBpbnQgc2l6ZSkKLSB7Ci0gCXJldHVybiBsdHBfc3lzY2FsbChfX05SX2dldGRlbnRzNjQsIGZkLCBkaXJwNjQsIHNpemUpOwotIH0KLS0KLSsjZW5kaWYgLyogSEFWRV9HRVRERU5UUzY0ICovCi0gI2VuZGlmIC8qIEdFVERFTlRTX0ggKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1BZGQtbW9yZS1tdXNsLWV4Y2x1c2lvbnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtQWRkLW1vcmUtbXVzbC1leGNsdXNpb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyYzJmZWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtQWRkLW1vcmUtbXVzbC1leGNsdXNpb25zLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0Zyb20gNzg4YzQ3Y2VlZjdmMTE1YWI3ZjdhYTE3ZjkxOGU1ODc5NWY0ZTZjNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBEZWMgMjAxOSAxMzowNjowNSArMDEwMAorU3ViamVjdDogW1BBVENIXSBBZGQgbW9yZSBtdXNsIGV4Y2x1c2lvbnMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK1sgcHZvcmVsOiByZWJhc2UgZm9yIDIwMjAwMTIwOiBlbmFibGUgZmFub3RpZnkxMywgZmFub3RpZnkxNSwgc2V0eGF0dHIwMyBdCitTaWduZWQtb2ZmLWJ5OiBQZXRyIFZvcmVsIDxwZXRyLnZvcmVsQGdtYWlsLmNvbT4KKy0tLQorIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvYWNjZXB0NC9NYWtlZmlsZSAgICAgIHwgNCArKysrCisgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy90aW1lcl9jcmVhdGUvTWFrZWZpbGUgfCA0ICsrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9hY2NlcHQ0L01ha2VmaWxlIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9hY2NlcHQ0L01ha2VmaWxlCitpbmRleCA1MDQwNDJlMTEuLjk0ZGIwNjI2NiAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvYWNjZXB0NC9NYWtlZmlsZQorKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9hY2NlcHQ0L01ha2VmaWxlCitAQCAtMjAsNCArMjAsOCBAQCB0b3Bfc3JjZGlyCQk/PSAuLi8uLi8uLi8uLgorIAorIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL3Rlc3RjYXNlcy5taworIAorK2lmZXEgKCQoTElCQyksbXVzbCkKKytGSUxURVJfT1VUX01BS0VfVEFSR0VUUyAgICAgICAgOj0gYWNjZXB0NF8wMQorK2VuZGlmCisrCisgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZ2VuZXJpY19sZWFmX3RhcmdldC5taworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdGltZXJfY3JlYXRlL01ha2VmaWxlIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy90aW1lcl9jcmVhdGUvTWFrZWZpbGUKK2luZGV4IDhkZTI0NzA3NS4uZWIyNDBmNDMyIDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy90aW1lcl9jcmVhdGUvTWFrZWZpbGUKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdGltZXJfY3JlYXRlL01ha2VmaWxlCitAQCAtMjAsNiArMjAsMTAgQEAgdG9wX3NyY2RpcgkJPz0gLi4vLi4vLi4vLi4KKyAKKyBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay90ZXN0Y2FzZXMubWsKKyAKKytpZmVxICgkKExJQkMpLG11c2wpCisrRklMVEVSX09VVF9NQUtFX1RBUkdFVFMgICAgICAgIDo9IHRpbWVyX2NyZWF0ZTAxIHRpbWVyX2NyZWF0ZTAzCisrZW5kaWYKKysKKyBDUFBGTEFHUwkJKz0gLURfR05VX1NPVVJDRSAtSSQoYWJzX3NyY2RpcikvLi4vaW5jbHVkZQorIAorIExETElCUwkJCSs9IC1scHRocmVhZCAtbHJ0CistLQorMi4yNS4xCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoCmluZGV4IGI1YzI1YzUuLmIxYTk5OTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBlYzI4Mjk4MGU2ZWVlOTZmNWI3NGFiYTQ2NDE0MWY4NjA0OTI2M2U2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiZTQ1M2QxYmU4MjZiODYyZDQ3ZTA4NjYzZmQ2OWVlYTlkZDYyNzMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgNyBKYW4gMjAxNiAxODoxOTowMyArMDAwMAotU3ViamVjdDogW1BBVENIXSBidWlsZDogQWRkIG9wdGlvbiB0byBzZWxlY3QgbGliYyBpbXBsZW1lbnRhdGlvbgorU3ViamVjdDogW1BBVENIIDEvNl0gYnVpbGQ6IEFkZCBvcHRpb24gdG8gc2VsZWN0IGxpYmMgaW1wbGVtZW50YXRpb24KIAogVGhlcmUgYXJlIG1vcmUgdGhhbiBnbGliYyBmb3IgQyBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSBvbgogbGludXggbm93IGEgZGF5cywgdWNsaWJjIGNsb2FrZWQgbGlrZSBnbGliYyBidXQgbXVzbCBlLmcuIGlzIHZlcnkKQEAgLTExLDIwICsxMSwyOSBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAorcnRfdGdzaWdxdWV1ZWluZm8gZmFpbHMgd2l0aDoKK3J0X3Rnc2lncXVldWVpbmZvMDEuYzogSW4gZnVuY3Rpb24gJ3NpZ3VzcjFfaGFuZGxlcic6CitydF90Z3NpZ3F1ZXVlaW5mbzAxLmM6NDI6MjI6IGVycm9yOiAnc2lnaW5mb190JyB7YWthICdzdHJ1Y3QgPGFub255bW91cz4nfSBoYXMgbm8gbWVtYmVyIG5hbWVkICdfc2lmaWVsZHMnOyBkaWQgeW91IG1lYW4gJ19fc2lfZmllbGRzJz8KKyAgIDQyIHwgIHNpZ3ZhbF9yY3YgPSB1aW5mby0+X3NpZmllbGRzLl9ydC5TSV9TSUdWQUwuc2l2YWxfcHRyOworICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn4KKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgX19zaV9maWVsZHMKKwogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1sgcHZvcmVsOiByZWJhc2UgZm9yIDIwMjAwMTIwOiBlbmFibGUgbWFsbG9wdCwgcHJvZmlsLCBycGMwMTYsCitydF9zaWdzdXNwZW5kLCBzYnJrX211dGV4LCBzZXRkb21haW5uYW1lLCBzZXRob3N0bmFtZSwgc2lnc3VzcGVuZCwKK3Rlc3RwaS0zLCB0ZXN0cGktNSwgdGVzdHBpLTYsIHVzdGF0OyBtb3ZlIHJ0X3Rnc2lncXVldWVpbmZvCitmcm9tIDAwMDYtcnRfdGdzaWdxdWV1ZWluZm8tZGlzYWJsZS10ZXN0LW9uLW11c2wucGF0Y2ggXQorU2lnbmVkLW9mZi1ieTogUGV0ciBWb3JlbCA8cGV0ci52b3JlbEBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBQZXRyIFZvcmVsIDxwdm9yZWxAc3VzZS5jej4KIC0tLQotIE1ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA1ICsrKysrCi0gdGVzdGNhc2VzL2tlcm5lbC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8IDUgKysrKy0KLSB0ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlICAgICAgICAgICAgIHwgNCArKystCi0gdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZSAgICAgICAgICB8IDUgKysrKysKLSB0ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvTWFrZWZpbGUgICAgICAgIHwgNCArKysrCi0gdGVzdGNhc2VzL25ldHdvcmsvcnBjL2Jhc2ljX3Rlc3RzL01ha2VmaWxlICB8IDUgKysrKysKLSB0ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9NYWtlZmlsZSAgIHwgNCArKysrCi0gdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZSB8IDUgKysrKysKLSA4IGZpbGVzIGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDUgKysrKysKKyB0ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlICAgICAgICAgIHwgNSArKysrLQorIHRlc3RjYXNlcy9rZXJuZWwvc2NoZWQvTWFrZWZpbGUgICAgfCA0ICsrKy0KKyB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlIHwgNCArKysrCisgNCBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggNzY4Y2E0Ni4uZTlkNjc5YSAxMDA2NDQKK2luZGV4IDc2OGNhNDYwNi4uZTlkNjc5YTcxIDEwMDY0NAogLS0tIGEvTWFrZWZpbGUKICsrKyBiL01ha2VmaWxlCiBAQCAtNDEsNiArNDEsMTEgQEAgdnBhdGggJS5tawkJJCh0b3Bfc3JjZGlyKS9tazokKHRvcF9zcmNkaXIpL21rL2luY2x1ZGUKQEAgLTQwLDE4ICs0OSwxOSBAQAogICMgQ09NTU9OX1RBUkdFVFM6CVRhcmdldHMgd2hpY2ggZXhpc3QgaW4gYWxsLCBjbGVhbiwgYW5kIGluc3RhbGwuCiAgIyBJTlNUQUxMX1RBUkdFVFM6CVRhcmdldHMgd2hpY2ggZXhpc3QgaW4gY2xlYW4gYW5kIGluc3RhbGwgKGNvbnRhaW5zCiBkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUKLWluZGV4IDM5ZDc5YzcuLjI0YTU3ZDkgMTAwNjQ0CitpbmRleCAzMzE5YjMxNjMuLjk0ZWEzNjJjOCAxMDA2NDQKIC0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUKICsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUKLUBAIC00OSwxMiArNDksMTUgQEAgU1VCRElSUwkJCSs9IGNvbm5lY3RvcnMgXAorQEAgLTQ5LDEzICs0OSwxNiBAQCBTVUJESVJTCQkJKz0gY29ubmVjdG9ycyBcCiAgCQkJICAgbG9nZ2luZyBcCiAgCQkJICAgbWVtIFwKICAJCQkgICBudW1hIFwKIC0JCQkgICBwdHkgXAogIAkJCSAgIHNjaGVkIFwKICAJCQkgICBzZWN1cml0eSBcCi0gCQkJICAgdGltZXJzIFwKKyAJCQkgICBzb3VuZCBcCiAgCQkJICAgdHJhY2luZyBcCisgCQkJICAgdWV2ZW50cyBcCiAgCiAraWZuZXEgKCQoTElCQyksbXVzbCkKICtTVUJESVJTCQkJKz0gcHR5CkBAIC02MSw3ICs3MSw3IEBACiAgU1VCRElSUwkJCSs9IHBvd2VyX21hbmFnZW1lbnQKICBlbmRpZgogZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc2NoZWQvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCi1pbmRleCA2YTU3ZDc5Li43NGJiOTMzIDEwMDY0NAoraW5kZXggNmE1N2Q3OWVlLi43NGJiOTMzNzAgMTAwNjQ0CiAtLS0gYS90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCiArKysgYi90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCiBAQCAtMjMsNSArMjMsNyBAQApAQCAtNzQsNzYgKzg0LDE5IEBACiArZW5kaWYKICBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX3RydW5rX3RhcmdldC5tawogZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCi1pbmRleCA0NWEwMGNmLi5kMWJlY2QwIDEwMDY0NAoraW5kZXggNDVhMDBjZjdkLi5hZjVhNTkxYTAgMTAwNjQ0CiAtLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCiArKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCi1AQCAtMjgsNiArMjgsMTEgQEAgaWZlcSAoJChVQ0xJTlVYKSwxKQotIEZJTFRFUl9PVVRfRElSUwkrPSBjYXBnZXQgY2Fwc2V0IGNobW9kIGNob3duIGNsb25lIGZvcmsgZ2V0Y29udGV4dCBsbHNlZWsgXAorQEAgLTI5LDYgKzI5LDEwIEBAIEZJTFRFUl9PVVRfRElSUwkrPSBjYXBnZXQgY2Fwc2V0IGNobW9kIGNob3duIGNsb25lIGZvcmsgZ2V0Y29udGV4dCBsbHNlZWsgXAogIAkJICAgbWluY29yZSBtcHJvdGVjdCBuZnR3IHByb2ZpbCByZW1hcF9maWxlX3BhZ2VzIHNicmsKICBlbmRpZgotK2lmZXEgKCQoTElCQyksbXVzbCkKLStGSUxURVJfT1VUX0RJUlMJKz0gY29uZnN0ciBmbXRtc2cgZ2V0Y29udGV4dCBpb2N0bCBtYWxsb3B0IHByb2ZpbCBcCi0rCQkgICBydF9zaWdzdXNwZW5kIHNldGRvbWFpbm5hbWUgc2V0aG9zdG5hbWUgc2lnc3VzcGVuZCBcCi0rCQkgICB1c3RhdAotK2VuZGlmCiAgCisraWZlcSAoJChMSUJDKSxtdXNsKQorK0ZJTFRFUl9PVVRfRElSUwkrPSBjb25mc3RyIGZtdG1zZyBnZXRjb250ZXh0IGlvY3RsIHJ0X3Rnc2lncXVldWVpbmZvCisrZW5kaWYKKysKICBpZmVxICgkKFVDTElCQyksMSkKICBGSUxURVJfT1VUX0RJUlMJKz0gcHJvZmlsCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlIGIvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlCi1pbmRleCA4YzU1YTZiLi5mN2NkYTYyIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlCi0rKysgYi90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvTWFrZWZpbGUKLUBAIC0yNiw0ICsyNiw4IEBAIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2Vudl9wcmUubWsKLSAKLSBMRExJQlMJCQkrPSAkKEFDTF9MSUJTKQotIAotK2lmZXEgKCQoTElCQyksbXVzbCkKLStGSUxURVJfT1VUX01BS0VfVEFSR0VUUwk6PSBhY2wxCi0rZW5kaWYKLSsKLSBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX2xlYWZfdGFyZ2V0Lm1rCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL25ldHdvcmsvcnBjL2Jhc2ljX3Rlc3RzL01ha2VmaWxlIGIvdGVzdGNhc2VzL25ldHdvcmsvcnBjL2Jhc2ljX3Rlc3RzL01ha2VmaWxlCi1pbmRleCA2NmU5ZDU2Li5lYThlYjhhIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvcnBjL2Jhc2ljX3Rlc3RzL01ha2VmaWxlCi0rKysgYi90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKLUBAIC0yMyw0ICsyMyw5IEBACi0gdG9wX3NyY2RpcgkJPz0gLi4vLi4vLi4vLi4KLSAKLSBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9lbnZfcHJlLm1rCi0rCi0raWZlcSAoJChMSUJDKSxtdXNsKQotK0ZJTFRFUl9PVVRfRElSUyArPSBycGMwMQotK2VuZGlmCi0rCi0gaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZ2VuZXJpY190cnVua190YXJnZXQubWsKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCi1pbmRleCA2ODYxNmE3Li43NDg3NTRiIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvTWFrZWZpbGUKLSsrKyBiL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCi1AQCAtMjcsNSArMjcsOSBAQCBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9lbnZfcHJlLm1rCi0gaW5jbHVkZSAkKGFic19zcmNkaXIpLy4uLy4uL2NvbmZpZy5tawotIAotIE1BS0VfVEFSR0VUUwkJOj0gdGVzdHBpLTAgdGVzdHBpLTEgdGVzdHBpLTIgdGVzdHBpLTQgdGVzdHBpLTUgdGVzdHBpLTYgdGVzdHBpLTcgc2Jya19tdXRleAotK2lmZXEgKCQoTElCQyksbXVzbCkKLStGSUxURVJfT1VUX01BS0VfVEFSR0VUUwk6PSB0ZXN0cGktNSB0ZXN0cGktNiBzYnJrX211dGV4Ci0rZW5kaWYKLSsKLSAKLSBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX2xlYWZfdGFyZ2V0Lm1rCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUKLWluZGV4IDE4ODFmNzUuLjI2NmUwYjggMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlCi0rKysgYi90ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlCi1AQCAtMjQsNCArMjQsOSBAQCB0b3Bfc3JjZGlyCQk/PSAuLi8uLi8uLi8uLgotIAotIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2Vudl9wcmUubWsKLSBpbmNsdWRlICQoYWJzX3NyY2RpcikvLi4vLi4vY29uZmlnLm1rCi0rCi0raWZlcSAoJChMSUJDKSxtdXNsKQotK0ZJTFRFUl9PVVRfTUFLRV9UQVJHRVRTCTo9IHRlc3RwaS0zCi0rZW5kaWYKLSsKLSBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX2xlYWZfdGFyZ2V0Lm1rCi0tLSAKLTIuNy40Ci0KKyBlbmRpZgorLS0KKzIuMjUuMQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWN2ZS0yMDE3LTE3MDUyLUF2b2lkLXVuc2FmZS1leGl0cy1pbi10aHJlYWRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWN2ZS0yMDE3LTE3MDUyLUF2b2lkLXVuc2FmZS1leGl0cy1pbi10aHJlYWRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzQwMDgxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jdmUtMjAxNy0xNzA1Mi1Bdm9pZC11bnNhZmUtZXhpdHMtaW4tdGhyZWFkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLUZyb20gZTNhODUwMmQwYTRmOGE0NGRkZDAyY2E0YjJlZmMwOTcxMzNmYjlmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdGhpYXMgRmllZGxlciA8bWF0aGlhcy5maWVkbGVyQGFveC10ZWNoLmRlPgotRGF0ZTogRnJpLCAyMyBBdWcgMjAxOSAxMjo0Njo0OCArMDIwMAotU3ViamVjdDogW1BBVENIXSBjdmUtMjAxNy0xNzA1MjogQXZvaWQgdW5zYWZlIGV4aXRzIGluIHRocmVhZHMKLQotQWNjb3JkaW5nIHRvIG1hbnBhZ2UgZXhpdCgzKSBjYWxsaW5nIGV4aXQgaXMgbm90IHRocmVhZC1zYWZlLgotQW5kIHdpdGggZ2xpYmMgMi4yOCAoYW5kIHByb2JhYmx5IGFsc28gd2l0aCBnbGliYyA+PTIuMjcpIHNvbWV0aW1lcwotY2hpbGQgcHJvY2Vzc2VzIGNyZWF0ZWQgaW4gZm9ya190aHJlYWQgY2FuIGdldCBzdHVjayBvbiBwcm9jZXNzIGV4aXQgaW4KLWdsaWJjJ3MgX19ydW5fZXhpdF9oYW5kbGVycyB0cnlpbmcgdG8gYWNxdWlyZSBzb21lIGxvY2sgd2hpY2ggd2FzIGluCi1sb2NrZWQgc3RhdGUgd2hpbGUgdGhlIGZvcmsgd2FzIGNyZWF0ZWQuIFRoaXMgY2FuIGhhcHBlbiB3aGVuIGV4aXQgaXMKLWNhbGxlZCBpbiBtbWFwX3RocmVhZCBjb25jdXJyZW50bHkgdG8gdGhlIGZvcmsuCi1XaGlsZSB0aGUgbWFpbiBwcm9jZXNzIHdpbGwgc3RpbGwgcmV0dXJuIHdpdGggUEFTU0VEIHNvbWUgb2YgaXRzCi1jaGlsZHJlbiBhcmUgbGVmdCBiZWhpbmQuCi0KLUNvbXBhcmluZyB0aGUgc291cmNlIGNvZGUgd2l0aCB0aGUgb3JpZ2luYWwgcHJvZ3JhbSBhcyBkZXNjcmliZWQgaW4gdGhlCi1jb21taXQgMmI3ZTg2NjViNGZmNTFjMDM0YzU1ZGYzY2ZmNzY1MThkMWE5ZWUzYSBvZiBsaW51eCBrZXJuZWwgPj00LjEzCi10aGUgZXhpdHMgaW4gbW1hcF90aHJlYWQgYW5kIGZvcmtfdGhyZWFkIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5IHRvCi10cmlnZ2VyIHRoZSBvcmlnaW5hbCBidWcuCi0KLVRoZXJlZm9yZSB0aG9zZSBleGl0IGNhbGxzIGFyZSByZW1vdmVkLiBUaGUgbW1hcF90aHJlYWQgYW5kIGZvcmtfdGhyZWFkCi1zaG91bGQgc3RpbGwgZXhpdCB3aGVuIHRoZWlyIGNvcnJlc3BvbmRpbmcgbWFpbiB0aHJlYWQgaW4gZG9fdGVzdF9mb3JrCi1jYWxscyBleGl0X2dyb3VwLiBUaGUgcmVtYWluaW5nIGV4aXQgaW4gZG9fdGVzdF9mb3JrIHdpbGwgYmUgY2FsbGVkIGluCi10aGUgbWFpbiB0aHJlYWQgd2l0aG91dCBhbnkgY29uY3VycmVudCB0aHJlYWQgaW4gdGhlIHNhbWUgcHJvY2Vzcy4KLQotU2lnbmVkLW9mZi1ieTogTWF0aGlhcyBGaWVkbGVyIDxtYXRoaWFzLmZpZWRsZXJAYW94LXRlY2guZGU+Ci1BY2tlZC1ieTogQ3lyaWwgSHJ1YmlzIDxjaHJ1YmlzQHN1c2UuY3o+Ci1BY2tlZC1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9jb21taXQvOWYwYjQ1MmMxYWY0YmNiNTRkYTM1NzExZWIzZmE3NzMzNGEzNTBiNF0KLQotQ1ZFOiBDVkUtMjAxNy0xNzA1MgotCi1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdGNhc2VzL2N2ZS9jdmUtMjAxNy0xNzA1Mi5jIHwgNSAtLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2N2ZS9jdmUtMjAxNy0xNzA1Mi5jIGIvdGVzdGNhc2VzL2N2ZS9jdmUtMjAxNy0xNzA1Mi5jCi1pbmRleCBkN2RhN2U5MTkuLjE4Y2QyYTZkNyAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9jdmUvY3ZlLTIwMTctMTcwNTIuYwotKysrIGIvdGVzdGNhc2VzL2N2ZS9jdmUtMjAxNy0xNzA1Mi5jCi1AQCAtNTgsOCArNTgsNiBAQCBzdGF0aWMgdm9pZCAqbW1hcF90aHJlYWQodm9pZCAqYXJnKQotIAlmb3IgKDs7KSB7Ci0gCQlTQUZFX01NQVAoTlVMTCwgMHgxMDAwMDAwLCBQUk9UX1JFQUQsCi0gCQkJCU1BUF9QT1BVTEFURXxNQVBfQU5PTllNT1VTfE1BUF9QUklWQVRFLCAtMSwgMCk7Ci0tCQlpZiAoKmRvX2V4aXQpCi0tCQkJZXhpdCgwKTsKLSAJfQotIAotIAlyZXR1cm4gYXJnOwotQEAgLTY3LDkgKzY1LDYgQEAgc3RhdGljIHZvaWQgKm1tYXBfdGhyZWFkKHZvaWQgKmFyZykKLSAKLSBzdGF0aWMgdm9pZCAqZm9ya190aHJlYWQodm9pZCAqYXJnKQotIHsKLS0JaWYgKCpkb19leGl0KQotLQkJZXhpdCgwKTsKLS0KLSAJdXNsZWVwKHJhbmQoKSAlIDEwMDAwKTsKLSAJU0FGRV9GT1JLKCk7Ci0gCi0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtY3ZlLW1lbHRkb3duLmMtRml4LWtlcm5lbC1zeW1ib2wtZmluZGluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jdmUtbWVsdGRvd24uYy1GaXgta2VybmVsLXN5bWJvbC1maW5kaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGY2ZjVhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jdmUtbWVsdGRvd24uYy1GaXgta2VybmVsLXN5bWJvbC1maW5kaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotRnJvbSBmYmVkYTgyZjQ0MGEwMDk4YmU0MmRkNjY4Y2JjNDcyMTJhODZhYjQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMjEgQXVnIDIwMTkgMTY6Mjc6MjQgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gY3ZlL21lbHRkb3duLmM6IEZpeCBrZXJuZWwgc3ltYm9sIGZpbmRpbmcKLQotbWVsdGRvd24gY2FzZSBmYWlscyBhcyBiZWxvdy4KLXNhZmVfZmlsZV9vcHMuYzoyMTk6IEJST0s6IEV4cGVjdGVkIDMgY29udmVyc2lvbnMgZ290IDIgYXQgbWVsdGRvd24uYzoyNzIKLQotZmluZF9rZXJuZWxfc3ltYm9sIGlzIGRlZmluZWQgdG8gdHJ5IHR3aWNlIHdpdGggZWFjaCBvZiAvcHJvYy9rYWxsc3ltcyBhbmQKLS9ib290L1N5c3RlbS5tYXAtJXMuIEN1cnJlbnRseSBpZiB0aGUgc3ltYm9sIGlzIG5vdCBmb3VuZCBpbiAvcHJvYy9rYWxsc3ltcywKLXdoZW4ga2VybmVsIG9wdGlvbiBDT05GSUdfS0FMTFNZTVNfQUxMIGlzIGRpc2FibGVkLCBpdCB3b3VsZCBzdG9wIHRoZSBjYXNlCi1pbW1lZGlhdGVseSBkdWUgdG8gU0FGRV9GSUxFX0xJTkVTX1NDQU5GLgotCi1UaGlzIHBhdGNoIHR1cm5zIHRvIHVzZSBGSUxFX0xJTkVTX1NDQU5GIHRvIGdpdmUgZmluZF9rZXJuZWxfc3ltYm9sIHNlY29uZAotY2hhbmNlLgotCi1banN0YW5jZWtdIEZpeCBhbHNvIGNvbmRpdGlvbiBpbnRyb2R1Y2VkIGluIDc3MDlkMmFlOTJlYSwgZXZlbiBpZgotICAgICAgICAgICAvcHJvYy9rYWxsc3ltcyBpcyBkaXNhYmxlZCwgd2Ugc3RpbGwgd2FudCB0byB0cnkgU3lzdGVtLm1hcC4KLQotU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvY29tbWl0L2MyMDQ5YjVjODc0YmMwNzFmODE4NWJmZmI1ZmQ3ZGNiMDQyZDllYzhdCi0KLVJlbW92ZSB0aGUgaHVuayBmb3IgdXBzdHJlYW0gNzcwOWQyYWU5MmVhICgiY3ZlL21lbHRkb3duLmM6IGFib3J0IHRoZSB0ZXN0IGlmIGthbGxzeW1zIHdhcyBub3QgZW5hYmxlZCIpCi10aGF0IGhhcyBiZWVuIGNvdmVyZWQgYnkgdGhpcyBwYXRjaC4KLQotU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RjYXNlcy9jdmUvbWVsdGRvd24uYyB8IDEzICsrKysrKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9jdmUvbWVsdGRvd24uYyBiL3Rlc3RjYXNlcy9jdmUvbWVsdGRvd24uYwotaW5kZXggYTUzZWE5Yi4uMjI2NTFhNiAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9jdmUvbWVsdGRvd24uYwotKysrIGIvdGVzdGNhc2VzL2N2ZS9tZWx0ZG93bi5jCi1AQCAtMjY3LDkgKzI2NywxNSBAQCBmaW5kX3N5bWJvbF9pbl9maWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpzeW1uYW1lKQotIAlpbnQgcmV0LCByZWFkOwotIAljaGFyIGZtdFtzdHJsZW4oc3ltbmFtZSkgKyA2NF07Ci0gCi0rCXRzdF9yZXMoVElORk8sICJMb29raW5nIGZvciAlcyBpbiAlcyIsIHN5bW5hbWUsIGZpbGVuYW1lKTsKLSsJaWYgKGFjY2VzcyhmaWxlbmFtZSwgRl9PSykgPT0gLTEpIHsKLSsJCXRzdF9yZXMoVElORk8sICIlcyBub3QgYXZhaWxhYmxlIiwgZmlsZW5hbWUpOwotKwkJcmV0dXJuIDA7Ci0rCX0KLSsKLSAJc3ByaW50ZihmbXQsICIlJWx4ICUlYyAlcyUlYyIsIHN5bW5hbWUpOwotIAotLQlyZXQgPSBTQUZFX0ZJTEVfTElORVNfU0NBTkYoZmlsZW5hbWUsIGZtdCwgJmFkZHIsICZ0eXBlLCAmcmVhZCk7Ci0rCXJldCA9IEZJTEVfTElORVNfU0NBTkYoZmlsZW5hbWUsIGZtdCwgJmFkZHIsICZ0eXBlLCAmcmVhZCk7Ci0gCWlmIChyZXQpCi0gCQlyZXR1cm4gMDsKLSAKLUBAIC0yODcsMTMgKzI5MywxMSBAQCBmaW5kX2tlcm5lbF9zeW1ib2woY29uc3QgY2hhciAqbmFtZSkKLSAJaWYgKGFkZHIpCi0gCQlyZXR1cm4gYWRkcjsKLSAKLS0JdHN0X3JlcyhUSU5GTywgIm5vdCBmb3VuZCAnJXMnIGluIC9wcm9jL2thbGxzeW1zIiwgbmFtZSk7Ci0gCWlmICh1bmFtZSgmdXRzbmFtZSkgPCAwKQotIAkJdHN0X2JyayhUQlJPSyB8IFRFUlJOTywgInVuYW1lIik7Ci0gCi0gCXNwcmludGYoc3lzdGVtbWFwLCAiL2Jvb3QvU3lzdGVtLm1hcC0lcyIsIHV0c25hbWUucmVsZWFzZSk7Ci0gCi0tCXRzdF9yZXMoVElORk8sICJsb29raW5nIGluICclcydcbiIsIHN5c3RlbW1hcCk7Ci0gCWFkZHIgPSBmaW5kX3N5bWJvbF9pbl9maWxlKHN5c3RlbW1hcCwgbmFtZSk7Ci0gCXJldHVybiBhZGRyOwotIH0KLUBAIC0zMDgsNiArMzEyLDkgQEAgc3RhdGljIHZvaWQgc2V0dXAodm9pZCkKLSAJc2F2ZWRfY21kbGluZV9hZGRyID0gZmluZF9rZXJuZWxfc3ltYm9sKCJzYXZlZF9jb21tYW5kX2xpbmUiKTsKLSAJdHN0X3JlcyhUSU5GTywgIiZzYXZlZF9jb21tYW5kX2xpbmUgPT0gMHglbHgiLCBzYXZlZF9jbWRsaW5lX2FkZHIpOwotIAotKwlpZiAoIXNhdmVkX2NtZGxpbmVfYWRkcikKLSsJCXRzdF9icmsoVENPTkYsICJzYXZlZF9jb21tYW5kX2xpbmUgbm90IGZvdW5kIik7Ci0rCi0gCXNwZWNfZmQgPSBTQUZFX09QRU4oIi9wcm9jL2NtZGxpbmUiLCBPX1JET05MWSk7Ci0gCi0gCW1lbXNldCh0YXJnZXRfYXJyYXksIDEsIHNpemVvZih0YXJnZXRfYXJyYXkpKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLW1rc3dhcDAxLnNoLUFkZC11ZGV2YWRtLXRyaWdnZXItYmVmb3JlLXN3YXAtdmVyaWZpY2EucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtbWtzd2FwMDEuc2gtQWRkLXVkZXZhZG0tdHJpZ2dlci1iZWZvcmUtc3dhcC12ZXJpZmljYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI0MzNkMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtbWtzd2FwMDEuc2gtQWRkLXVkZXZhZG0tdHJpZ2dlci1iZWZvcmUtc3dhcC12ZXJpZmljYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gZmFlODg1MmE2M2Q5ZmE2ZTU2ZmI4YjI0ZWFmMTA1NjBiZDEzNzU3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFlvbmd4aW4gTGl1IDx5b25neGluLmxpdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAxMiBOb3YgMjAxOSAxMTozMzo1MCArMDgwMAotU3ViamVjdDogW1BBVENIXSBta3N3YXAwMS5zaDogQWRkICJ1ZGV2YWRtIHRyaWdnZXIiIGJlZm9yZSBzd2FwIHZlcmlmaWNhdGlvbgotCi1GaXg6IGh0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL2lzc3Vlcy80NTgKLQotU29tZXRpbWVzIHRoZSBzd2FwIGRldmljZSBjYW5ub3Qgc2hvdyB1cCBpbiAvZGV2L2Rpc2svYnktdXVpZC8KLW9yIC9kZXYvZGlzay9ieS1sYWJsZS8gZHVlIHRvIHRoZSBpc3N1ZSAjNDU4LiBXaGVuIHRoaXMgaXNzdWUKLWhhcHBlbnMsICJibGtpZCAtYyAvZGV2L251bGwiIGFuZCAibHMgL2Rldi9kaXNrL2J5LXV1aWQvIiBzaG93Ci1kaWZmZXJlbnQgVVVJRCBvZiB0aGUgZGV2aWNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9wYXRjaHdvcmsub3psYWJzLm9yZy9wYXRjaC8xMTkzNDE0XQotCi1TaWduZWQtb2ZmLWJ5OiBZb25neGluIExpdSA8eW9uZ3hpbi5saXVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RjYXNlcy9jb21tYW5kcy9ta3N3YXAvbWtzd2FwMDEuc2ggfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2NvbW1hbmRzL21rc3dhcC9ta3N3YXAwMS5zaCBiL3Rlc3RjYXNlcy9jb21tYW5kcy9ta3N3YXAvbWtzd2FwMDEuc2gKLWluZGV4IDNhMzQ4YzZlNi4uOTQzN2M0YTRlIDEwMDc1NQotLS0tIGEvdGVzdGNhc2VzL2NvbW1hbmRzL21rc3dhcC9ta3N3YXAwMS5zaAotKysrIGIvdGVzdGNhc2VzL2NvbW1hbmRzL21rc3dhcC9ta3N3YXAwMS5zaAotQEAgLTEyOSw2ICsxMjksOCBAQCBta3N3YXBfdGVzdCgpCi0gCQlyZXR1cm4KLSAJZmkKLSAKLSsJdWRldmFkbSB0cmlnZ2VyIC0tbmFtZS1tYXRjaD0kVFNUX0RFVklDRQotKwotIAlpZiBbIC1uICIkZGV2aWNlIiBdOyB0aGVuCi0gCQlta3N3YXBfdmVyaWZ5ICIkbWtzd2FwX29wIiAiJG9wX2FyZyIgIiRkZXZpY2UiICIkc2l6ZSIgIiRkZXZfZmlsZSIKLSAJCWlmIFsgJD8gLW5lIDAgXTsgdGhlbgotLS0gCi0yLjE0LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLW92ZXJjb21taXRfbWVtb3J5LXVwZGF0ZS1mb3ItbW0tZml4LWZhbHNlLXBvc2l0aXZlLU8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtb3ZlcmNvbW1pdF9tZW1vcnktdXBkYXRlLWZvci1tbS1maXgtZmFsc2UtcG9zaXRpdmUtTy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVkODQ3MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtb3ZlcmNvbW1pdF9tZW1vcnktdXBkYXRlLWZvci1tbS1maXgtZmFsc2UtcG9zaXRpdmUtTy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLUZyb20gZDY1NmE0NDc4OTNkY2NjMzEwYzk3NWEyMzlmNDgyMjc4NTUwYzNlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgotRGF0ZTogVHVlLCAyMSBNYXkgMjAxOSAxMDoxMDo0NCArMDIwMAotU3ViamVjdDogW1BBVENIXSBvdmVyY29tbWl0X21lbW9yeTogdXBkYXRlIGZvciAibW06IGZpeCBmYWxzZS1wb3NpdGl2ZQotIE9WRVJDT01NSVRfR1VFU1MgZmFpbHVyZXMiCi0KLWNvbW1pdCA4Yzc4MjliMDRjNTIgKCJtbTogZml4IGZhbHNlLXBvc2l0aXZlIE9WRVJDT01NSVRfR1VFU1MgZmFpbHVyZXMiKQotY2hhbmdlcyBsb2dpYyBvZiBfX3ZtX2Vub3VnaF9tZW1vcnkoKSwgc2ltcGxpZnlpbmcgaXQgdG86Ci0gICAgV2hlbiBpbiBHVUVTUyBtb2RlLCBjYXRjaCB3aWxkIGFsbG9jYXRpb25zIGJ5IGNvbXBhcmluZyB0aGVpciByZXF1ZXN0Ci0gICAgc2l6ZSB0byB0b3RhbCBhbW91bnQgb2YgcmFtIGFuZCBzd2FwIGluIHRoZSBzeXN0ZW0uCi0KLVRlc3RjYXNlIGN1cnJlbnRseSBhbGxvY2F0ZXMgbWVtX3RvdGFsICsgc3dhcF90b3RhbCwgd2hpY2ggZG9lc24ndCB0cmlnZ2VyCi1uZXcgY29uZGl0aW9uLiBNYWtlIGl0IG1vcmUgZXh0cmVtZSwgYnV0IGFzc3VtaW5nIGZyZWVfdG90YWwgLyAyIHdpbGwgUEFTUywKLWFuZCAyKnN1bV90b3RhbCB3aWxsIEZBSUwuCi0KLVNpZ25lZC1vZmYtYnk6IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgotQWNrZWQtYnk6IEN5cmlsIEhydWJpcyA8Y2hydWJpc0BzdXNlLmN6PgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9jb21taXQvZDY1NmE0NDc4OTNkY2NjMzEwYzk3NWEyMzlmNDgyMjc4NTUwYzNlMF0KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL21lbS90dW5hYmxlL292ZXJjb21taXRfbWVtb3J5LmMgfCAxMSArKysrLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL21lbS90dW5hYmxlL292ZXJjb21taXRfbWVtb3J5LmMgYi90ZXN0Y2FzZXMva2VybmVsL21lbS90dW5hYmxlL292ZXJjb21taXRfbWVtb3J5LmMKLWluZGV4IDU1NTI5OGYuLjM0NTc2NGQgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL21lbS90dW5hYmxlL292ZXJjb21taXRfbWVtb3J5LmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL3R1bmFibGUvb3ZlcmNvbW1pdF9tZW1vcnkuYwotQEAgLTM2LDExICszNiwxMCBAQAotICAqCi0gICogVGhlIHByb2dyYW0gaXMgZGVzaWduZWQgdG8gdGVzdCB0aGUgdHdvIHR1bmFibGVzOgotICAqCi0tICogV2hlbiBvdmVyY29tbWl0X21lbW9yeSA9IDAsIGFsbG9jYXRhYmxlIG1lbW9yeSBjYW4ndCBvdmVyZXh0ZW5kcwotLSAqIHRoZSBhbW91bnQgb2YgZnJlZSBtZW1vcnkuIEkgY2hvb3NlIHRoZSB0aHJlZSBjYXNlczoKLSsgKiBXaGVuIG92ZXJjb21taXRfbWVtb3J5ID0gMCwgYWxsb2NhdGFibGUgbWVtb3J5IGNhbid0IG92ZXJleHRlbmQKLSsgKiB0aGUgYW1vdW50IG9mIHRvdGFsIG1lbW9yeToKLSAgKiBhLiBsZXNzIHRoYW4gZnJlZV90b3RhbDogICAgZnJlZV90b3RhbCAvIDIsIGFsbG9jIHNob3VsZCBwYXNzLgotLSAqIGIuIGdyZWF0ZXIgdGhhbiBmcmVlX3RvdGFsOiBmcmVlX3RvdGFsICogMiwgYWxsb2Mgc2hvdWxkIGZhaWwuCi0tICogYy4gZXF1YWwgdG8gc3VtX3RvdGFsOiAgICAgIHN1bV90YXRhbCwgICAgICBhbGxvYyBzaG91bGQgZmFpbAotKyAqIGIuIGdyZWF0ZXIgdGhhbiBzdW1fdG90YWw6ICAgc3VtX3RvdGFsICogMiwgYWxsb2Mgc2hvdWxkIGZhaWwuCi0gICoKLSAgKiBXaGVuIG92ZXJjb21taXRfbWVtb3J5ID0gMSwgaXQgY2FuIGFsbG9jIGVub3VnaCBtdWNoIG1lbW9yeSwgSQotICAqIGNob29zZSB0aGUgdGhyZWUgY2FzZXM6Ci1AQCAtMTY0LDkgKzE2Myw3IEBAIHN0YXRpYyB2b2lkIG92ZXJjb21taXRfbWVtb3J5X3Rlc3Qodm9pZCkKLSAKLSAJdXBkYXRlX21lbSgpOwotIAlhbGxvY19hbmRfY2hlY2soZnJlZV90b3RhbCAvIDIsIEVYUEVDVF9QQVNTKTsKLS0JdXBkYXRlX21lbSgpOwotLQlhbGxvY19hbmRfY2hlY2soZnJlZV90b3RhbCAqIDIsIEVYUEVDVF9GQUlMKTsKLS0JYWxsb2NfYW5kX2NoZWNrKHN1bV90b3RhbCwgRVhQRUNUX0ZBSUwpOwotKwlhbGxvY19hbmRfY2hlY2soc3VtX3RvdGFsICogMiwgRVhQRUNUX0ZBSUwpOwotIAotIAkvKiBzdGFydCB0byB0ZXN0IG92ZXJjb21taXRfbWVtb3J5PTEgKi8KLSAJc2V0X3N5c190dW5lKCJvdmVyY29tbWl0X21lbW9yeSIsIDEsIDEpOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc3lzY2FsbC1ydF9zaWd0aW1lZHdhaXQwMS1GaXgtd3Jvbmctc2lnc2V0LWxlbmd0aC1mby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1zeXNjYWxsLXJ0X3NpZ3RpbWVkd2FpdDAxLUZpeC13cm9uZy1zaWdzZXQtbGVuZ3RoLWZvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTU2YzA4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1zeXNjYWxsLXJ0X3NpZ3RpbWVkd2FpdDAxLUZpeC13cm9uZy1zaWdzZXQtbGVuZ3RoLWZvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSBhNTA0NjYyNWVhZWVkMmQzZmJhNDU2YzNiYTg0YzZjMTQxYzJhZDdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMjkgQXVnIDIwMTkgMjE6MDk6NDYgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gc3lzY2FsbC9ydF9zaWd0aW1lZHdhaXQwMTogRml4IHdyb25nIHNpZ3NldCBsZW5ndGggZm9yIE1JUFMKLQotcnRfc2lndGltZWR3YWl0MDEgZmFpbHMgYXMgZm9sbG93IG9uIE1JUFMgYXJjaGVzCi1ydF9zaWd0aW1lZHdhaXQwMSAgICAxICBURkFJTCAgOiAgLi4uL3NpZ3dhaXRpbmZvMDEuYzo1ODogdGVzdF9lbXB0eV9zZXQKLSguLi4vc2lnd2FpdGluZm8wMS5jOiAxNDgpOiBVbmV4cGVjdGVkIGZhaWx1cmU6Ci1URVNUX0VSUk5PPUVJTlZBTCgyMik6IEludmFsaWQgYXJndW1lbnQKLQotQXMgdGhpcyBjYXNlIHB1cnBvc2VseSBieXBhc3NlcyBnbGliYywgaXQgc2hvdWxkIGFsaWduIHdpdGggdGhlIHNpemUgb2Yga2VybmVsCi1kZWZpbml0aW9uIG9mIHNpZ3NldF90IHdoaWNoIGlzIGRpZmZlcmVudCBmcm9tIG90aGVyIGFyY2hlcy4KLWh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVlL2FyY2gvbWlwcy9pbmNsdWRlL3VhcGkvYXNtL3NpZ25hbC5oI24xNQotCi1UaGlzIHBhdGNoIHR1cm5zIHRvIHVzZSBfTlNJRyB3aGljaCBpcyBhbHdheXMgcmlnaHQgZm9yIGFsbCBhcmNoZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2E1MDQ2NjI1ZWFlZWQyZDNmYmE0NTZjM2JhODRjNmMxNDFjMmFkN2NdCi0KLVN1Z2dlc3RlZC1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1BY2tlZC1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1BY2tlZC1ieTogQ3lyaWwgSHJ1YmlzIDxjaHJ1YmlzQHN1c2UuY3o+Ci1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogUGV0ciBWb3JlbCA8cHZvcmVsQHN1c2UuY3o+Ci0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3dhaXRpbmZvL3NpZ3dhaXRpbmZvMDEuYyB8IDUgKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zaWd3YWl0aW5mby9zaWd3YWl0aW5mbzAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3dhaXRpbmZvL3NpZ3dhaXRpbmZvMDEuYwotaW5kZXggNWEzMmNlMS4uNmEzMGMyNyAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc2lnd2FpdGluZm8vc2lnd2FpdGluZm8wMS5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3dhaXRpbmZvL3NpZ3dhaXRpbmZvMDEuYwotQEAgLTEyOCw5ICsxMjgsOCBAQCBzdGF0aWMgaW50IG15X3NpZ3RpbWVkd2FpdChjb25zdCBzaWdzZXRfdCAqIHNldCwgc2lnaW5mb190ICogaW5mbywKLSBzdGF0aWMgaW50IG15X3J0X3NpZ3RpbWVkd2FpdChjb25zdCBzaWdzZXRfdCAqIHNldCwgc2lnaW5mb190ICogaW5mbywKLSAJCQkgICAgICBzdHJ1Y3QgdGltZXNwZWMgKnRpbWVvdXQpCi0gewotLQotLQkvKiBUaGUgbGFzdCBhcmd1bWVudCBpcyAobnVtYmVyX29mX3NpZ25hbHMpLyhiaXRzX3Blcl9ieXRlKSwgd2hpY2ggYXJlIDY0IGFuZCA4LCByZXNwLiAqLwotLQlyZXR1cm4gbHRwX3N5c2NhbGwoX19OUl9ydF9zaWd0aW1lZHdhaXQsIHNldCwgaW5mbywgdGltZW91dCwgOCk7Ci0rCS8qIF9OU0lHIGlzIGFsd2F5cyB0aGUgcmlnaHQgbnVtYmVyIG9mIGJpdHMgb2Ygc2lnbmFsIG1hcCBmb3IgYWxsIGFyY2hlcyAqLwotKwlyZXR1cm4gbHRwX3N5c2NhbGwoX19OUl9ydF9zaWd0aW1lZHdhaXQsIHNldCwgaW5mbywgdGltZW91dCwgX05TSUcvOCk7Ci0gfQotICNlbmRpZgotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc3lzY2FsbHMtQ2hlY2stZm9yLXRpbWU2NC11bnNhZmUtc3lzY2FsbHMtYmVmb3JlLXVzaS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1zeXNjYWxscy1DaGVjay1mb3ItdGltZTY0LXVuc2FmZS1zeXNjYWxscy1iZWZvcmUtdXNpLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjOGYwOGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc3lzY2FsbHMtQ2hlY2stZm9yLXRpbWU2NC11bnNhZmUtc3lzY2FsbHMtYmVmb3JlLXVzaS5wYXRjaApAQCAtMCwwICsxLDEyMiBAQAorRnJvbSA4OWM1ODQxYmQxNDhhN2FlNzBjNjVmNGExY2E1OTk2YjdmMGNkZGZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTkgRmViIDIwMjAgMjI6NTI6MDQgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3lzY2FsbHM6IENoZWNrIGZvciB0aW1lNjQgdW5zYWZlIHN5c2NhbGxzIGJlZm9yZSB1c2luZyB0aGVtCisKK211c2wgaXMgdXNpbmcgNjRiaXQgdGltZV90IG5vdyBvbiAzMmJpdCBhcmNoaXRlY3R1cmVzIGFuZCB0aGVzZSBzeXNjYWxscworbm8gbG9uZ2VyIGV4aXN0LCB0aGVyZWZvcmUgaXRzIGJldHRlciB0byBjaGVjayBmb3IgdGhlbSBiZWluZyBhdmFpbGFibGUKK2JlZm9yZSB1c2luZyB0aGVtCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitSZXZpZXdlZC1ieTogWWFuZyBYdSA8eHV5YW5nMjAxOC5qeUBjbi5mdWppdHN1LmNvbT4KK1Jldmlld2VkLWJ5OiBQZXRyIFZvcmVsIDxwdm9yZWxAc3VzZS5jej4KK1NpZ25lZC1vZmYtYnk6IFBldHIgVm9yZWwgPHB2b3JlbEBzdXNlLmN6PgorVXBzdHJlYW0tU3RhdHVzOiBhY2NlcHRlZCBhcyA1YjU3YWUyOTEzZTJkMmQxNjdjYmQzODIyNzg0YjRjNGJhMzM2ODEyCistLS0KKyBsaWIvdHN0X2Nsb2Nrcy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNiArKysrKystLS0tLS0tLS0tCisgLi4uL3N5c2NhbGxzL2dldHRpbWVvZmRheS9nZXR0aW1lb2ZkYXkwMS5jICAgICAgIHwgIDYgKystLS0tCisgLi4uL3N5c2NhbGxzL2dldHRpbWVvZmRheS9nZXR0aW1lb2ZkYXkwMi5jICAgICAgIHwgIDggKysrLS0tLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL3RzdF9jbG9ja3MuYyBiL2xpYi90c3RfY2xvY2tzLmMKK2luZGV4IDUxOTVkYTM4Zi4uZmEyZjFjYjg0IDEwMDY0NAorLS0tIGEvbGliL3RzdF9jbG9ja3MuYworKysrIGIvbGliL3RzdF9jbG9ja3MuYworQEAgLTMsMjggKzMsMjQgQEAKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgQ3lyaWwgSHJ1YmlzIDxjaHJ1YmlzQHN1c2UuY3o+CisgICovCisKKy0vKgorLSAqIGNsb2NrX2dldHRpbWUoKSBhbmQgY2xvY2tfZ2V0cmVzKCkgZnVuY3Rpb25zCistICovCistCistI2RlZmluZSBfR05VX1NPVVJDRQorLSNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8dGltZS5oPgorLSNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorCisrI2RlZmluZSBUU1RfTk9fREVGQVVMVF9NQUlOCisrI2luY2x1ZGUgInRzdF90ZXN0LmgiCisgI2luY2x1ZGUgInRzdF9jbG9ja3MuaCIKKysjaW5jbHVkZSAibGFwaS9zeXNjYWxscy5oIgorIAorIGludCB0c3RfY2xvY2tfZ2V0cmVzKGNsb2NraWRfdCBjbGtfaWQsIHN0cnVjdCB0aW1lc3BlYyAqcmVzKQorIHsKKy0JcmV0dXJuIHN5c2NhbGwoU1lTX2Nsb2NrX2dldHJlcywgY2xrX2lkLCByZXMpOworKwlyZXR1cm4gdHN0X3N5c2NhbGwoX19OUl9jbG9ja19nZXRyZXMsIGNsa19pZCwgcmVzKTsKKyB9CisgCisgaW50IHRzdF9jbG9ja19nZXR0aW1lKGNsb2NraWRfdCBjbGtfaWQsIHN0cnVjdCB0aW1lc3BlYyAqdHMpCisgeworLQlyZXR1cm4gc3lzY2FsbChTWVNfY2xvY2tfZ2V0dGltZSwgY2xrX2lkLCB0cyk7CisrCXJldHVybiB0c3Rfc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWUsIGNsa19pZCwgdHMpOworIH0KKyAKKyBpbnQgdHN0X2Nsb2NrX3NldHRpbWUoY2xvY2tpZF90IGNsa19pZCwgc3RydWN0IHRpbWVzcGVjICp0cykKKyB7CistCXJldHVybiBzeXNjYWxsKFNZU19jbG9ja19zZXR0aW1lLCBjbGtfaWQsIHRzKTsKKysJcmV0dXJuIHRzdF9zeXNjYWxsKF9fTlJfY2xvY2tfc2V0dGltZSwgY2xrX2lkLCB0cyk7CisgfQorZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0dGltZW9mZGF5L2dldHRpbWVvZmRheTAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldHRpbWVvZmRheS9nZXR0aW1lb2ZkYXkwMS5jCitpbmRleCA1ODNkOGY3YjkuLjA4ZWExNjczYSAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0dGltZW9mZGF5L2dldHRpbWVvZmRheTAxLmMKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0dGltZW9mZGF5L2dldHRpbWVvZmRheTAxLmMKK0BAIC0zOCwxMCArMzgsOCBAQAorICNpbmNsdWRlIDxzeXMvdGltZS5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlICJ0ZXN0LmgiCistI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorLQorLSNkZWZpbmUgZ2V0dGltZW9mZGF5KGEsYikgIHN5c2NhbGwoX19OUl9nZXR0aW1lb2ZkYXksYSxiKQorKyNpbmNsdWRlICJsYXBpL3N5c2NhbGxzLmgiCisgCisgY2hhciAqVENJRCA9ICJnZXR0aW1lb2ZkYXkwMSI7CisgaW50IFRTVF9UT1RBTCA9IDE7CitAQCAtNjMsNyArNjEsNyBAQCBpbnQgbWFpbihpbnQgYWMsIGNoYXIgKiphdikKKyAJZm9yIChsYyA9IDA7IFRFU1RfTE9PUElORyhsYyk7IGxjKyspIHsKKyAJCXRzdF9jb3VudCA9IDA7CisgCistCQlURVNUKGdldHRpbWVvZmRheSgodm9pZCAqKS0xLCAodm9pZCAqKS0xKSk7CisrCQlURVNUKGx0cF9zeXNjYWxsKF9fTlJfZ2V0dGltZW9mZGF5LCAodm9pZCAqKS0xLCAodm9pZCAqKS0xKSk7CisgCisgCQkvKiBnZXR0aW1lb2ZkYXkgcmV0dXJucyBhbiBpbnQsIHNvIHdlIG5lZWQgdG8gdHVybiB0aGUgbG9uZworIAkJICogVEVTVF9SRVRVUk4gaW50byBhbiBpbnQgdG8gdGVzdCB3aXRoICovCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXR0aW1lb2ZkYXkvZ2V0dGltZW9mZGF5MDIuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0dGltZW9mZGF5L2dldHRpbWVvZmRheTAyLmMKK2luZGV4IDFkNjBmNDQ4ZS4uNTE3MGFkMmY3IDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXR0aW1lb2ZkYXkvZ2V0dGltZW9mZGF5MDIuYworKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXR0aW1lb2ZkYXkvZ2V0dGltZW9mZGF5MDIuYworQEAgLTE2LDE0ICsxNiwxMiBAQAorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDx0aW1lLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgCisgI2luY2x1ZGUgInRzdF90ZXN0LmgiCistCistI2RlZmluZSBnZXR0aW1lb2ZkYXkoYSxiKSAgc3lzY2FsbChfX05SX2dldHRpbWVvZmRheSxhLGIpCisrI2luY2x1ZGUgImxhcGkvc3lzY2FsbHMuaCIKKyAKKyBzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IGRvbmU7Cisgc3RhdGljIGNoYXIgKnN0cl9ydGltZTsKK0BAIC00OCwxMyArNDYsMTMgQEAgc3RhdGljIHZvaWQgdmVyaWZ5X2dldHRpbWVvZmRheSh2b2lkKQorIAorIAlhbGFybShydGltZSk7CisgCistCWlmIChnZXR0aW1lb2ZkYXkoJnR2MSwgTlVMTCkpIHsKKysJaWYgKHRzdF9zeXNjYWxsKF9fTlJfZ2V0dGltZW9mZGF5LCAmdHYxLCBOVUxMKSkgeworIAkJdHN0X3JlcyhUQlJPSyB8IFRFUlJOTywgImdldHRpbWVvZmRheSgpIGZhaWxlZCIpOworIAkJcmV0dXJuOworIAl9CisgCisgCXdoaWxlICghZG9uZSkgeworLQkJaWYgKGdldHRpbWVvZmRheSgmdHYyLCBOVUxMKSkgeworKwkJaWYgKHRzdF9zeXNjYWxsKF9fTlJfZ2V0dGltZW9mZGF5LCAmdHYyLCBOVUxMKSkgeworIAkJCXRzdF9yZXMoVEJST0sgfCBURVJSTk8sICJnZXR0aW1lb2ZkYXkoKSBmYWlsZWQiKTsKKyAJCQlyZXR1cm47CisgCQl9CistLQorMi4yNS4xCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc3lzY2FsbHMtdGdraWxsMDMtd2FpdC1mb3ItZGVmdW5jdC10aWQtdG8tZ2V0LWRldGFjaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1zeXNjYWxscy10Z2tpbGwwMy13YWl0LWZvci1kZWZ1bmN0LXRpZC10by1nZXQtZGV0YWNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZWEyNjE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1zeXNjYWxscy10Z2tpbGwwMy13YWl0LWZvci1kZWZ1bmN0LXRpZC10by1nZXQtZGV0YWNoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotRnJvbSBlNzQ3ZDA0NTZhZGMwODBhMWQzMWZiNjUzYmRhOWRjNDkxNzk1YzgwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1EYXRlOiBTdW4sIDE2IEp1biAyMDE5IDExOjE0OjE2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHN5c2NhbGxzL3Rna2lsbDAzOiB3YWl0IGZvciBkZWZ1bmN0IHRpZCB0byBnZXQgZGV0YWNoZWQKLQotQ2FzZSB3aGVyZSBkZWZ1bmN0IHRpZCBpcyB1c2VkIGhhcyBiZWVuIG9ic2VydmVkIHRvIHNwb3JhZGljYWxseSBmYWlsOgotICB0Z2tpbGwwMy5jOjk2OiBGQUlMOiBEZWZ1bmN0IHRpZCBzaG91bGQgaGF2ZSBmYWlsZWQgd2l0aCBFU1JDSDogU1VDQ0VTUwotCi1nbGliYyBfX3B0aHJlYWRfdGltZWRqb2luX2V4KCkgd2FpdHMgZm9yIENMT05FX0NISUxEX0NMRUFSVElEIHRvIGNsZWFyIHRpZCwKLWFuZCB0aGVuIHJlc3VtZXMuIEtlcm5lbCBjbGVhcnMgaXQgKGdsaWJjIHBkLT50aWQpIGF0OgotICBkb19leGl0Ci0gICAgZXhpdF9tbQotICAgICAgbW1fcmVsZWFzZQotICAgICAgICBwdXRfdXNlcigwLCB0c2stPmNsZWFyX2NoaWxkX3RpZCk7Ci0KLWJ1dCBrZXJuZWwgdGlkIGlzIHN0aWxsIHZhbGlkLCBwcmVzdW1hYmx5IHVudGlsOgotICByZWxlYXNlX3Rhc2sKLSAgICBfX2V4aXRfc2lnbmFsCi0gICAgICBfX3VuaGFzaF9wcm9jZXNzCi0gICAgICAgIGRldGFjaF9waWQKLQotVG8gYXZvaWQgcmFjZSB3YWl0IHVudGlsIC9wcm9jLzxwaWQ+L3Rhc2svPHRpZD4gZGlzYXBwZWFycy4KLQotU2lnbmVkLW9mZi1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1SZXZpZXdlZC1ieTogTGkgV2FuZyA8bGl3YW5nQHJlZGhhdC5jb20+Ci1BY2tlZC1ieTogU3VtaXQgR2FyZyA8c3VtaXQuZ2FyZ0BsaW5hcm8ub3JnPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvY29tbWl0L2U3NDdkMDQ1NmFkYzA4MGExZDMxZmI2NTNiZGE5ZGM0OTE3OTVjODBdCi0KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3Rna2lsbC90Z2tpbGwwMy5jIHwgNiArKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3Rna2lsbC90Z2tpbGwwMy5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy90Z2tpbGwvdGdraWxsMDMuYwotaW5kZXggZjViYmRjNS4uNTkzYTIxNyAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdGdraWxsL3Rna2lsbDAzLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdGdraWxsL3Rna2lsbDAzLmMKLUBAIC03LDYgKzcsNyBAQAotIAotICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0gI2luY2x1ZGUgPHB3ZC5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAKLSAjaW5jbHVkZSAidHN0X3NhZmVfcHRocmVhZC5oIgotQEAgLTQyLDYgKzQzLDcgQEAgc3RhdGljIHZvaWQgc2V0dXAodm9pZCkKLSB7Ci0gCXNpZ3NldF90IHNpZ3VzcjE7Ci0gCXB0aHJlYWRfdCBkZWZ1bmN0X3RocmVhZDsKLSsJY2hhciBkZWZ1bmN0X3RpZF9wYXRoW1BBVEhfTUFYXTsKLSAKLSAJc2lnZW1wdHlzZXQoJnNpZ3VzcjEpOwotIAlzaWdhZGRzZXQoJnNpZ3VzcjEsIFNJR1VTUjEpOwotQEAgLTU1LDggKzU3LDkgQEAgc3RhdGljIHZvaWQgc2V0dXAodm9pZCkKLSAJVFNUX0NIRUNLUE9JTlRfV0FJVCgwKTsKLSAKLSAJU0FGRV9QVEhSRUFEX0NSRUFURSgmZGVmdW5jdF90aHJlYWQsIE5VTEwsIGRlZnVuY3RfdGhyZWFkX2Z1bmMsIE5VTEwpOwotLQotIAlTQUZFX1BUSFJFQURfSk9JTihkZWZ1bmN0X3RocmVhZCwgTlVMTCk7Ci0rCXNwcmludGYoZGVmdW5jdF90aWRfcGF0aCwgIi9wcm9jLyVkL3Rhc2svJWQiLCBnZXRwaWQoKSwgZGVmdW5jdF90aWQpOwotKwlUU1RfUkVUUllfRk5fRVhQX0JBQ0tPRkYoYWNjZXNzKGRlZnVuY3RfdGlkX3BhdGgsIFJfT0spLCAtMSwgMTUpOwotIH0KLSAKLSBzdGF0aWMgdm9pZCBjbGVhbnVwKHZvaWQpCi1AQCAtMTA4LDQgKzExMSw1IEBAIHN0YXRpYyBzdHJ1Y3QgdHN0X3Rlc3QgdGVzdCA9IHsKLSAJLnNldHVwID0gc2V0dXAsCi0gCS5jbGVhbnVwID0gY2xlYW51cCwKLSAJLnRlc3QgPSBydW4sCi0rCS50aW1lb3V0ID0gMjAsCi0gfTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLXRlc3RjYXNlcy11c2UtcHl0aG9uMy1ldmVyeXdoZXJlLXRvLXJ1bi1weXRob24tc2NyaXAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtdGVzdGNhc2VzLXVzZS1weXRob24zLWV2ZXJ5d2hlcmUtdG8tcnVuLXB5dGhvbi1zY3JpcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjRmODdmMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtdGVzdGNhc2VzLXVzZS1weXRob24zLWV2ZXJ5d2hlcmUtdG8tcnVuLXB5dGhvbi1zY3JpcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2MSArMCwwIEBACi1Gcm9tIDA0NjNkNzkzNTY2NzcyYTYwNjI1NTk1NzkxNWY5OWQxNjZkNTc0MGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjggQXVnIDIwMTkgMTg6MzA6MjMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gdGVzdGNhc2VzOiB1c2UgcHl0aG9uMyBldmVyeXdoZXJlIHRvIHJ1biBweXRob24gc2NyaXB0cwotCi1UaGUgc2NyaXB0cyB0aGVtc2VsdmVzIGhhdmUgIyEvdXNyL2Jpbi9weXRob24zIGluIHRoZW0sCi1zbyBJIHRydXN0IHRoZXkgYXJlIGFscmVhZHkgcHkzLWNvbXBhdGlibGUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0czA1LnNoICB8ICAyICstCi0gLi4uL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMS5zaCAgICAgfCAgMiArLQotIC4uLi9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDIuc2ggICAgIHwgIDIgKy0KLSAuLi4vcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAzLnNoICAgICB8ICAyICstCi0gLi4uL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwNC5zaCAgICAgfCAgMiArLQotIC4uLi9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDUuc2ggICAgIHwgIDIgKy0KLSB0ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvcnVudGVzdCAgICAgICAgICAgICAgICB8IDE0ICsrKysrKystLS0tLS0tCi0gdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvcnVuX2F1dG8uc2ggICAgICAgfCAgNiArKystLS0KLSA4IGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHMwNS5zaCBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzMDUuc2gKLWluZGV4IDhhN2QwZjZlMC4uNDNlMjM0ZDAxIDEwMDc1NQotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHMwNS5zaAotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHMwNS5zaAotQEAgLTM1LDcgKzM1LDcgQEAgZWxzZQotIAltYXhfc2NoZWRfc210PTEKLSBmaQotIAotLXRzdF90ZXN0X2NtZHMgcHl0aG9uCi0rdHN0X3Rlc3RfY21kcyBweXRob24zCi0gCi0gaWYgISBncmVwIHNjaGVkX2RlYnVnIC1xdyAvcHJvYy9jbWRsaW5lIDsgdGhlbgotIAl0c3RfYnJrbSBUQ09ORiAiS2VybmVsIGNtZGxpbmUgcGFyYW1ldGVyICdzY2hlZF9kZWJ1ZycgbmVlZGVkLCIgXAotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAxLnNoIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDEuc2gKLWluZGV4IGVjNzgzMTllMi4uOWZlZmNiZjZlIDEwMDc1NQotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDEuc2gKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAxLnNoCi1AQCAtMzUsNyArMzUsNyBAQCBlbHNlCi0gCW1heF9zY2hlZF9zbXQ9MQotIGZpCi0gCi0tdHN0X3Rlc3RfY21kcyBweXRob24KLSt0c3RfdGVzdF9jbWRzIHB5dGhvbjMKLSAKLSBoeXBlcl90aHJlYWRlZD0kKGlzX2h5cGVyX3RocmVhZGVkKQotIG11bHRpX3NvY2tldD0kKGlzX211bHRpX3NvY2tldCkKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMi5zaCBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAyLnNoCi1pbmRleCBlMTA3ZmNlMzUuLjJjZDBlY2IwNSAxMDA3NTUKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAyLnNoCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMi5zaAotQEAgLTMzLDcgKzMzLDcgQEAgZWxzZQotIAltYXhfc2NoZWRfc210PTEKLSBmaQotIAotLXRzdF90ZXN0X2NtZHMgcHl0aG9uCi0rdHN0X3Rlc3RfY21kcyBweXRob24zCi0gCi0gaHlwZXJfdGhyZWFkZWQ9JChpc19oeXBlcl90aHJlYWRlZCkKLSBtdWx0aV9zb2NrZXQ9JChpc19tdWx0aV9zb2NrZXQpCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDMuc2ggYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMy5zaAotaW5kZXggNDkwMzQ0YmIzLi5hYjNhNWQxMWQgMTAwNzU1Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMy5zaAotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDMuc2gKLUBAIC0zNSw3ICszNSw3IEBAIGVsc2UKLSAJbWF4X3NjaGVkX3NtdD0xCi0gZmkKLSAKLS10c3RfdGVzdF9jbWRzIHB5dGhvbgotK3RzdF90ZXN0X2NtZHMgcHl0aG9uMwotIAotIGh5cGVyX3RocmVhZGVkPSQoaXNfaHlwZXJfdGhyZWFkZWQpCi0gbXVsdGlfc29ja2V0PSQoaXNfbXVsdGlfc29ja2V0KQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTA0LnNoIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDQuc2gKLWluZGV4IDk3OGNhMDJhZS4uNDM4ZWY2MDNmIDEwMDc1NQotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDQuc2gKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTA0LnNoCi1AQCAtMjcsNyArMjcsNyBAQCBleHBvcnQgVFNUX1RPVEFMPTIKLSAjIENoZWNraW5nIHRlc3QgZW52aXJvbm1lbnQKLSBjaGVja19rZXJ2ZWxfYXJjaAotIAotLXRzdF90ZXN0X2NtZHMgcHl0aG9uCi0rdHN0X3Rlc3RfY21kcyBweXRob24zCi0gCi0gaHlwZXJfdGhyZWFkZWQ9JChpc19oeXBlcl90aHJlYWRlZCkKLSBtdWx0aV9zb2NrZXQ9JChpc19tdWx0aV9zb2NrZXQpCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDUuc2ggYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwNS5zaAotaW5kZXggYTBkYWQ1ODM0Li4zYTlhZmRiZjIgMTAwNzU1Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwNS5zaAotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDUuc2gKLUBAIC0zNSw3ICszNSw3IEBAIGVsc2UKLSAJbWF4X3NjaGVkX3NtdD0xCi0gZmkKLSAKLS10c3RfdGVzdF9jbWRzIHB5dGhvbgotK3RzdF90ZXN0X2NtZHMgcHl0aG9uMwotIAotIGh5cGVyX3RocmVhZGVkPSQoaXNfaHlwZXJfdGhyZWFkZWQpCi0gbXVsdGlfc29ja2V0PSQoaXNfbXVsdGlfc29ja2V0KQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9ydW50ZXN0IGIvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL3J1bnRlc3QKLWluZGV4IGQyZTFiNGM0OS4uYTg1OWU4NWJjIDEwMDc1NQotLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL3J1bnRlc3QKLSsrKyBiL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9ydW50ZXN0Ci1AQCAtMjIsNyArMjIsNyBAQCBkbwotIGRvbmUKLSAKLSAjICBjcmVhdGlvbiBvZiB1c2VycyBvbiB0aGUgcmVtb3RlIG1hY2hpbmUgKHJlbW92ZWQgb25seSBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0cykKLS1yc2ggLW4gJFJFTU9URUhPU1QgcHl0aG9uICRQV0QvY3JlYXRlX3VzZXJzLnB5IC11IDUwIC1nIDUwCi0rcnNoIC1uICRSRU1PVEVIT1NUIHB5dGhvbjMgJFBXRC9jcmVhdGVfdXNlcnMucHkgLXUgNTAgLWcgNTAKLSAKLSBlY2hvICJTdGFydGluZyBBQ0wgdGVzdGluZyIKLSAKLUBAIC01MSwxOSArNTEsMTkgQEAgZWNobyAiQmFzaWMgdGVzdHMgZmluaXNoZWQiCi0gCi0gZWNobyAiTE9ORyBBQ0wgVEVTVCIKLSBlY2hvICJjcmVhdGluZyBuZWNlc3NhcnkgdXNlcnMgYW5kIGdyb3VwcyIKLS1weXRob24gY3JlYXRlX3VzZXJzLnB5IC11IDUwIC1nIDUwCi0rcHl0aG9uMyBjcmVhdGVfdXNlcnMucHkgLXUgNTAgLWcgNTAKLSBlY2hvICJjcmVhdGluZyBuZWNlc3NhcnkgdXNlcnMgYW5kIGdyb3VwcyBvbiB0aGUgcmVtb3RlIGhvc3QiCi0gbWtkaXIgJE5GU01OVERJUi9sYWNsLXRlc3RkaXIKLS1weXRob24gdGVzdF9sb25nX2FjbC5weSAtbCAkTUFYTEVOR1RIIC1wICRORlNNTlRESVIvbGFjbC10ZXN0ZGlyCi0rcHl0aG9uMyB0ZXN0X2xvbmdfYWNsLnB5IC1sICRNQVhMRU5HVEggLXAgJE5GU01OVERJUi9sYWNsLXRlc3RkaXIKLSBybSAtcmYgJE5GU01OVERJUi9sYWNsLXRlc3RkaXIKLSBlY2hvICJMb25nIEFDTCB0ZXN0IE9LIHdpdGggJE1BWExFTkdUSCBlbnRyaWVzIgotIGVjaG8gIkFDTCBTVFJFU1NJTkcgVEVTVCIKLS1weXRob24gc2V0YWNsX3N0cmVzcy5weSAtbiAxMDAgLXUgJFVTRVJfTkIgLWcgJEdSUF9OQiAtZiAkRklMRV9OQiAtcCAkTkZTTU5URElSCi0rcHl0aG9uMyBzZXRhY2xfc3RyZXNzLnB5IC1uIDEwMCAtdSAkVVNFUl9OQiAtZyAkR1JQX05CIC1mICRGSUxFX05CIC1wICRORlNNTlRESVIKLSAKLSAjIHJlbW92ZSBsb2NhbCBhbiByZW1vdGUgdXNlcnMKLS1weXRob24gY2xlYW51c2Vycy5weQotLXB5dGhvbiBjbGVhbmdyb3Vwcy5weQotLXJzaCAtbiAkUkVNT1RFSE9TVCBweXRob24gJFBXRC9jbGVhbnVzZXJzLnB5Ci0rcHl0aG9uMyBjbGVhbnVzZXJzLnB5Ci0rcHl0aG9uMyBjbGVhbmdyb3Vwcy5weQotK3JzaCAtbiAkUkVNT1RFSE9TVCBweXRob24zICRQV0QvY2xlYW51c2Vycy5weQotIAotIGVjaG8gIlRlc3QgT0siCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvcnVuX2F1dG8uc2ggYi90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9ydW5fYXV0by5zaAotaW5kZXggZDEzMDI2MDQ5Li4yNzc5ODg1NjggMTAwNzU1Ci0tLS0gYS90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9ydW5fYXV0by5zaAotKysrIGIvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvcnVuX2F1dG8uc2gKLUBAIC0xNSwxNSArMTUsMTUgQEAgJFNDUklQVFNfRElSL3J1bl9jX2ZpbGVzLnNoICRwcm9maWxlIHRlc3RwaS0wCi0gCi0gZXhwb3J0IExPR19GSUxFPSIkTE9HX0RJUi8kTE9HX0ZPUk1BVC10ZXN0cGktMS5sb2ciCi0gJFNDUklQVFNfRElSL3J1bl9jX2ZpbGVzLnNoICRwcm9maWxlIHRlc3RwaS0xCi0tUFlUSE9OUEFUSD0uLi8uLi8gIHB5dGhvbiBwYXJzZS10ZXN0cGkxLnB5ICRMT0dfRklMRSAyPiYxIHwgdGVlIC1hICRMT0dfRklMRQotK1BZVEhPTlBBVEg9Li4vLi4vICBweXRob24zIHBhcnNlLXRlc3RwaTEucHkgJExPR19GSUxFIDI+JjEgfCB0ZWUgLWEgJExPR19GSUxFCi0gCi0gZXhwb3J0IExPR19GSUxFPSIkTE9HX0RJUi8kTE9HX0ZPUk1BVC10ZXN0cGktMi5sb2ciCi0gJFNDUklQVFNfRElSL3J1bl9jX2ZpbGVzLnNoICRwcm9maWxlIHRlc3RwaS0yCi0tUFlUSE9OUEFUSD0uLi8uLi8gIHB5dGhvbiBwYXJzZS10ZXN0cGkyLnB5ICRMT0dfRklMRSAyPiYxIHwgdGVlIC1hICRMT0dfRklMRQotK1BZVEhPTlBBVEg9Li4vLi4vICBweXRob24zIHBhcnNlLXRlc3RwaTIucHkgJExPR19GSUxFIDI+JjEgfCB0ZWUgLWEgJExPR19GSUxFCi0gCi0gZXhwb3J0IExPR19GSUxFPSIkTE9HX0RJUi8kTE9HX0ZPUk1BVC10ZXN0cGktNC5sb2ciCi0gJFNDUklQVFNfRElSL3J1bl9jX2ZpbGVzLnNoICRwcm9maWxlIHRlc3RwaS00Ci0tUFlUSE9OUEFUSD0uLi8uLi8gIHB5dGhvbiBwYXJzZS10ZXN0cGkxLnB5ICRMT0dfRklMRSAyPiYxIHwgdGVlIC1hICRMT0dfRklMRQotK1BZVEhPTlBBVEg9Li4vLi4vICBweXRob24zIHBhcnNlLXRlc3RwaTEucHkgJExPR19GSUxFIDI+JjEgfCB0ZWUgLWEgJExPR19GSUxFCi0gCi0gCi0gZXhwb3J0IExPR19GSUxFPSIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtdXN0YXQwMi1GaXgtRUZBVUxULWluLTMyYml0LWNvbXBhdGliaWxpdHktbW9kZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS11c3RhdDAyLUZpeC1FRkFVTFQtaW4tMzJiaXQtY29tcGF0aWJpbGl0eS1tb2RlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTM2Yjc4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS11c3RhdDAyLUZpeC1FRkFVTFQtaW4tMzJiaXQtY29tcGF0aWJpbGl0eS1tb2RlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSAxNTY3NzZhM2UyOTQ5MWIzNjNmZGM5ODExOTEyZTEyOTg2NTVkMDYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3RldmVuIFByaWNlIDxzdGV2ZW4ucHJpY2VAYXJtLmNvbT4KLURhdGU6IEZyaSwgMTkgSnVsIDIwMTkgMTM6NDg6MTcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gdXN0YXQwMjogRml4IEVGQVVMVCBpbiAzMmJpdCBjb21wYXRpYmlsaXR5IG1vZGUKLQotVGhlIHNpemUgb2YgZGV2X3QgaXMgbGFyZ2VyIHRoYW4gMzIgYml0cyB3aGljaCBjYXVzZXMgdGhlIGRldiBhcmd1bWVudAotdG8gYmUgcGFzc2VkIGluY29ycmVjdGx5LiBPbiBBcm0gdGhpcyBtZWFucyB0aGF0IHRoZSBFRkFVTFQgdGVzdCBjYXNlCi1hY3R1YWxseSByZXR1cm5zIEVJTlZBTCBiZWNhdXNlIHRoZSBkZXZpY2UgbnVtYmVyIGlzbid0IHJlY29nbmlzZWQuCi0KLVNpZ25lZC1vZmYtYnk6IFN0ZXZlbiBQcmljZSA8c3RldmVuLnByaWNlQGFybS5jb20+Ci1BY2tlZC1ieTogTGkgV2FuZyA8bGl3YW5nQHJlZGhhdC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9jb21taXQvMTU2Nzc2YTNlMjk0OTFiMzYzZmRjOTgxMTkxMmUxMjk4NjU1ZDA2MF0KLQotU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdXN0YXQvdXN0YXQwMi5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy91c3RhdC91c3RhdDAyLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3VzdGF0L3VzdGF0MDIuYwotaW5kZXggOWJiZTRmMy4uMWEwZTllMCAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdXN0YXQvdXN0YXQwMi5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3VzdGF0L3VzdGF0MDIuYwotQEAgLTM2LDcgKzM2LDcgQEAgaW50IFRTVF9UT1RBTCA9IEFSUkFZX1NJWkUodGMpOwotIAotIHZvaWQgcnVuKHVuc2lnbmVkIGludCB0ZXN0KQotIHsKLS0JVEVTVCh0c3Rfc3lzY2FsbChfX05SX3VzdGF0LCAqdGNbdGVzdF0uZGV2LCB0Y1t0ZXN0XS5idWYpKTsKLSsJVEVTVCh0c3Rfc3lzY2FsbChfX05SX3VzdGF0LCAodW5zaWduZWQgaW50KSp0Y1t0ZXN0XS5kZXYsIHRjW3Rlc3RdLmJ1ZikpOwotIAotIAlpZiAoKFRTVF9SRVQgPT0gLTEpICYmIChUU1RfRVJSID09IHRjW3Rlc3RdLmV4cF9lcnJubykpCi0gCQl0c3RfcmVzKFRQQVNTIHwgVFRFUlJOTywgInVzdGF0KDIpIGV4cGVjdGVkIGZhaWx1cmUiKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAyLWNoZWNrLWZvci1SRVNfVVNFX0lORVQ2LWR1cmluZy1jb25maWd1cmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDItY2hlY2stZm9yLVJFU19VU0VfSU5FVDYtZHVyaW5nLWNvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTJlNDdlYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDItY2hlY2stZm9yLVJFU19VU0VfSU5FVDYtZHVyaW5nLWNvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLUZyb20gN2JjMTM0NTQ1YjdiZWIwOTcxN2E2MDU0MTUzMGMyMGExYTU3NDBkMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI2IEp1bCAyMDE5IDEwOjU1OjI4IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBjaGVjayBmb3IgUkVTX1VTRV9JTkVUNiBkdXJpbmcgY29uZmlndXJlCi0KLWdsaWJjIDIuMzAgaGFzIHJlbW92ZSBSRVNfVVNFX0lORVQ2IGRlZmluZSB3aGljaCBoYXMgYmVlbiBvbiBpdHMgd2F5IG91dAotc2luY2UgMi4yNiByZWxlYXNlLCB0aGlzIGNoZWNrIGVuc3VyZXMgdGhhdCB3ZSBkZXRlY3QgaXQgYmVmb3JlIHVzaW5nIGl0Ci0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwOi8vbGlzdHMubGludXguaXQvcGlwZXJtYWlsL2x0cC8yMDE5LUp1bHkvMDEyOTU1Lmh0bWxdCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTMgKysrKysrKysrKysrKwotIHRlc3RjYXNlcy9uZXR3b3JrL211bHRpY2FzdC9tY19nZXRob3N0L21jX2dldGhvc3QuYyB8ICA2ICsrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyMjU1YjVjMTgxLi5lZDdhY2NjYjAxIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC05MSw2ICs5MSwxOSBAQCBBQ19DSEVDS19GVU5DUyhbIFwKLSAgICAgdm1zcGxpY2UgXAotIF0pCi0gCi0rI2NoZWNrIGRlZmluZXMKLStBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBSRVNfVVNFX0lORVQ2XSkKLStBQ19DT01QSUxFX0lGRUxTRSggW0FDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxyZXNvbHYuaD5dXSwKLSsgIFtbY2hhciBkdW1teVtSRVNfVVNFX0lORVQ2XTtdXSldLAotKyAgWwotKyAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQotKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoW0hBVkVfUkVTX1VTRV9JTkVUNl0sIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgUkVTX1VTRV9JTkVUNiBtYWNyby5dKQotKyAgXSwKLSsgIFsKLSsgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoW0hBVkVfUkVTX1VTRV9JTkVUNl0sIDAsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgUkVTX1VTRV9JTkVUNiBtYWNyby5dKQotKyAgXQotKykKLSAjIFRvb2xzIGtub2JzCi0gCi0gIyBFeHBlY3QKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvbmV0d29yay9tdWx0aWNhc3QvbWNfZ2V0aG9zdC9tY19nZXRob3N0LmMgYi90ZXN0Y2FzZXMvbmV0d29yay9tdWx0aWNhc3QvbWNfZ2V0aG9zdC9tY19nZXRob3N0LmMKLWluZGV4IDljYzE1ZDA4NmIuLmQxY2FlNTQ0MWEgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMvbmV0d29yay9tdWx0aWNhc3QvbWNfZ2V0aG9zdC9tY19nZXRob3N0LmMKLSsrKyBiL3Rlc3RjYXNlcy9uZXR3b3JrL211bHRpY2FzdC9tY19nZXRob3N0L21jX2dldGhvc3QuYwotQEAgLTE3LDYgKzE3LDggQEAKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotIAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsKLSAjaWZuZGVmIExPR19QRVJST1IKLSAjZGVmaW5lIExPR19QRVJST1IgMAotICNlbmRpZgotQEAgLTUwLDggKzUyLDEyIEBAIHVzYWdlOgotIAkJYXJndisrLCBhcmdjLS07Ci0gCX0KLSAJaWYgKGFyZ2MgPj0gMSAmJiAhc3RyY21wKCphcmd2LCAiLTYiKSkgewotKyNpZiBIQVZFX1JFU19VU0VfSU5FVDYKLSAJCWFmID0gQUZfSU5FVDYsIHNpemUgPSBJTjZBRERSU1o7Ci0gCQlfcmVzLm9wdGlvbnMgfD0gUkVTX1VTRV9JTkVUNjsKLSsjZWxzZQotKwkJYWYgPSBBRl9JTkVULCBzaXplID0gSU5BRERSU1o7Ci0rI2VuZGlmCi0gCQlhcmd2KyssIGFyZ2MtLTsKLSAJfQotIAlpZiAoYXJnYyA+PSAxICYmICFzdHJjbXAoKmFyZ3YsICItZiIpKSB7Ci0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDIta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMi1rZXJuZWwtY29udHJvbGxlcnMtTGluay13aXRoLWxpYmZ0cy1leHBsaWNpdGx5LW9uLW11LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmY5ZWQwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMi1rZXJuZWwtY29udHJvbGxlcnMtTGluay13aXRoLWxpYmZ0cy1leHBsaWNpdGx5LW9uLW11LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSA4MWU1YmQ1NDQyMzM3YTRhNjQ4YTBkYmJmZjQ3ZWFhYzBkMzUxMjg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgNyBKYW4gMjAxNiAxODoyMjozOCArMDAwMAotU3ViamVjdDogW1BBVENIXSBrZXJuZWwvY29udHJvbGxlcnM6IExpbmsgd2l0aCBsaWJmdHMgZXhwbGljaXRseSBvbiBtdXNsCi0KLW11c2wgZG9lcyBub3QgaW1wbGVtZW50IGZ0cyBsaWtlIGdsaWJjIGFuZCB0aGVyZWZvcmUgaXQgZGVwZW5kcyBvbgotZXh0ZXJuYWwgaW1wbGVtZW50YXRpb24gZm9yIGFsbCBmdHMgQVBJcwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvTWFrZWZpbGUuaW5jICAgICAgICB8IDMgKysrCi0gdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9jcHVzZXQvTWFrZWZpbGUuaW5jIHwgMyArKysKLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9NYWtlZmlsZS5pbmMgYi90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL01ha2VmaWxlLmluYwotaW5kZXggNGNhMGI1YS4uMWQ4NWU0ZCAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvTWFrZWZpbGUuaW5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL01ha2VmaWxlLmluYwotQEAgLTM2LDYgKzM2LDkgQEAgTUFLRV9ERVBTCQk6PSAkKExJQikKLSBDUFBGTEFHUwkJKz0gLUkkKGFic19zcmNkaXIpLy4uLyQoTElCRElSKQotIAotIExERkxBR1MJCQkrPSAtTCQoYWJzX2J1aWxkZGlyKS8uLi8kKExJQkRJUikKLStpZmVxICgkKExJQkMpLG11c2wpCi0rTERMSUJTCQkJKz0gLWxmdHMKLStlbmRpZgotIAotIElOU1RBTExfVEFSR0VUUwkJPz0gKi5zaAotIAotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvY3B1c2V0L01ha2VmaWxlLmluYyBiL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvY3B1c2V0L01ha2VmaWxlLmluYwotaW5kZXggZGI2YTg0My4uODZkZDJhOCAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvY3B1c2V0L01ha2VmaWxlLmluYwotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9jcHVzZXQvTWFrZWZpbGUuaW5jCi1AQCAtNDIsNiArNDIsOSBAQCBNQUtFX0RFUFMJCTo9ICQoTElCQ09OVFJPTExFUlMpICQoTElCQ1BVU0VUKQotIExERkxBR1MJCQkrPSAtTCQoYWJzX2J1aWxkZGlyKS8kKExJQkNQVVNFVF9ESVIpIC1MJChhYnNfYnVpbGRkaXIpLyQoTElCQ09OVFJPTExFUlNfRElSKQotIAotIExETElCUwkJCSs9IC1sY3B1X3NldCAtbGNvbnRyb2xsZXJzIC1sbHRwCi0raWZlcSAoJChMSUJDKSxtdXNsKQotK0xETElCUwkJCSs9IC1sZnRzCi0rZW5kaWYKLSAKLSBJTlNUQUxMX1RBUkdFVFMJCT89ICouc2gKLSAKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAzLUNoZWNrLWlmLV9fR0xJQkNfUFJFUkVRLWlzLWRlZmluZWQtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAzLUNoZWNrLWlmLV9fR0xJQkNfUFJFUkVRLWlzLWRlZmluZWQtYmVmb3JlLXVzaW5nLWl0LnBhdGNoCmluZGV4IGMwZjY5ZWMuLmRmM2U4ODMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMy1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDMtQ2hlY2staWYtX19HTElCQ19QUkVSRVEtaXMtZGVmaW5lZC1iZWZvcmUtdXNpbmctaXQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDI5Y2U5ZmRhYjNiZDM0ZTY5ZDczYjViODkwNzk1NTU5YzA2NTUzZjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDFjZTQ3YTZlZDgxMWZkNzhlZDA0ZWEyZjgyZTYzMjFjNmJjYTU3YjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogVGh1LCA3IEphbiAyMDE2IDE5OjQwOjA4ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0hdIENoZWNrIGlmIF9fR0xJQkNfUFJFUkVRIGlzIGRlZmluZWQgYmVmb3JlIHVzaW5nIGl0CkBAIC0xMCwxNiArMTAsMTcgQEAKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKwogLS0tCiAgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9hY2NlcHQ0L2FjY2VwdDRfMDEuYyB8IDcgKysrKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvYWNjZXB0NC9hY2NlcHQ0XzAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2FjY2VwdDQvYWNjZXB0NF8wMS5jCi1pbmRleCBkZDI4OWNmLi43NmFhOTY5IDEwMDY0NAoraW5kZXggMjllMThmMjdkLi4wNzQ0NGE0NmYgMTAwNjQ0CiAtLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2FjY2VwdDQvYWNjZXB0NF8wMS5jCiArKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2FjY2VwdDQvYWNjZXB0NF8wMS5jCiBAQCAtMzgsNiArMzgsNyBAQAotIHN0YXRpYyBzdHJ1Y3Qgc29ja2FkZHJfaW4gY29ubl9hZGRyOworIHN0YXRpYyBzdHJ1Y3Qgc29ja2FkZHJfaW4gKmNvbm5fYWRkciwgKmFjY2VwdF9hZGRyOwogIHN0YXRpYyBpbnQgbGlzdGVuaW5nX2ZkOwogIAogKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgZGVmaW5lZChfX0dMSUJDX1BSRVJFUSkKQEAgLTM0LDI1ICszNSwyMSBAQAogIAogIHN0YXRpYyBpbnQgY3JlYXRlX2xpc3RlbmluZ19zb2NrZXQodm9pZCkKICB7Ci1AQCAtMTE1LDYgKzExNyw3IEBAIHN0YXRpYyB2b2lkIHZlcmlmeV9hY2NlcHQ0KHVuc2lnbmVkIGludCBucikKLSAJU0FGRV9DT05ORUNUKGNvbm5mZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZjb25uX2FkZHIsIHNpemVvZihjb25uX2FkZHIpKTsKLSAJYWRkcmxlbiA9IHNpemVvZihjbGFkZHIpOworQEAgLTExNCwxMiArMTE2LDE3IEBAIHN0YXRpYyB2b2lkIHZlcmlmeV9hY2NlcHQ0KHVuc2lnbmVkIGludCBucikKKyAJU0FGRV9DT05ORUNUKGNvbm5mZCwgKHN0cnVjdCBzb2NrYWRkciAqKWNvbm5fYWRkciwgc2l6ZW9mKCpjb25uX2FkZHIpKTsKKyAJYWRkcmxlbiA9IHNpemVvZigqYWNjZXB0X2FkZHIpOwogIAogKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgZGVmaW5lZChfX0dMSUJDX1BSRVJFUSkKICAjaWYgIShfX0dMSUJDX1BSRVJFUSgyLCAxMCkpCi0gCVRFU1QoYWNjZXB0NF8wMShsaXN0ZW5pbmdfZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmY2xhZGRyLCAmYWRkcmxlbiwKKyAJVEVTVChhY2NlcHQ0XzAxKGxpc3RlbmluZ19mZCwgKHN0cnVjdCBzb2NrYWRkciAqKWFjY2VwdF9hZGRyLCAmYWRkcmxlbiwKICAJCQkJdGNhc2UtPmNsb2V4ZWMgfCB0Y2FzZS0+bm9uYmxvY2spKTsKLUBAIC0xMjIsNiArMTI1LDEwIEBAIHN0YXRpYyB2b2lkIHZlcmlmeV9hY2NlcHQ0KHVuc2lnbmVkIGludCBucikKLSAJVEVTVChhY2NlcHQ0KGxpc3RlbmluZ19mZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZjbGFkZHIsICZhZGRybGVuLAorICNlbHNlCisgCVRFU1QoYWNjZXB0NChsaXN0ZW5pbmdfZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKilhY2NlcHRfYWRkciwgJmFkZHJsZW4sCiAgCQkJCXRjYXNlLT5jbG9leGVjIHwgdGNhc2UtPm5vbmJsb2NrKSk7Ci0gI2VuZGlmCisrI2VuZGlmCiArI2Vsc2UKICsJVEVTVChhY2NlcHQ0KGxpc3RlbmluZ19mZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZjbGFkZHIsICZhZGRybGVuLAogKwkJCQl0Y2FzZS0+Y2xvZXhlYyB8IHRjYXNlLT5ub25ibG9jaykpOwotKyNlbmRpZgorICNlbmRpZgogIAlpZiAoVFNUX1JFVCA9PSAtMSkgewogIAkJaWYgKFRTVF9FUlIgPT0gRU5PU1lTKQotIAkJCXRzdF9icmsoVENPTkYsICJzeXNjYWxsIF9fTlJfYWNjZXB0NCBub3Qgc3VwcG9ydGVkIik7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNi1ydF90Z3NpZ3F1ZXVlaW5mby1kaXNhYmxlLXRlc3Qtb24tbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNi1ydF90Z3NpZ3F1ZXVlaW5mby1kaXNhYmxlLXRlc3Qtb24tbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA0ZWRmYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDYtcnRfdGdzaWdxdWV1ZWluZm8tZGlzYWJsZS10ZXN0LW9uLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDYwMDU0Njg2ZTJjMWE0YmVkZjFkNTA3YWY5N2ViYmI3ZmY0OTFlNzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDE4IEp1bCAyMDE5IDE1OjIzOjE1ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHJ0X3Rnc2lncXVldWVpbmZvOiBkaXNhYmxlIHRlc3Qgb24gbXVzbAotCi1GaXggYnVpbGQgZXJyb3Igd2l0aCBtdXNsOgotcnRfdGdzaWdxdWV1ZWluZm8wMS5jOiBJbiBmdW5jdGlvbiAnc2lndXNyMV9oYW5kbGVyJzoKLXJ0X3Rnc2lncXVldWVpbmZvMDEuYzo0MjoyMjogZXJyb3I6ICdzaWdpbmZvX3QnIHtha2EgJ3N0cnVjdCA8YW5vbnltb3VzPid9IGhhcyBubyBtZW1iZXIgbmFtZWQgJ19zaWZpZWxkcyc7IGRpZCB5b3UgbWVhbiAnX19zaV9maWVsZHMnPwotICAgNDIgfCAgc2lndmFsX3JjdiA9IHVpbmZvLT5fc2lmaWVsZHMuX3J0LlNJX1NJR1ZBTC5zaXZhbF9wdHI7Ci0gICAgICB8ICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fgotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBfX3NpX2ZpZWxkcwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCi1pbmRleCBkMWJlY2QwLi4xZjNmZjM0IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQotQEAgLTMxLDcgKzMxLDcgQEAgZW5kaWYKLSBpZmVxICgkKExJQkMpLG11c2wpCi0gRklMVEVSX09VVF9ESVJTCSs9IGNvbmZzdHIgZm10bXNnIGdldGNvbnRleHQgaW9jdGwgbWFsbG9wdCBwcm9maWwgXAotIAkJICAgcnRfc2lnc3VzcGVuZCBzZXRkb21haW5uYW1lIHNldGhvc3RuYW1lIHNpZ3N1c3BlbmQgXAotLQkJICAgdXN0YXQKLSsJCSAgIHVzdGF0IHJ0X3Rnc2lncXVldWVpbmZvCi0gZW5kaWYKLSAKLSBpZmVxICgkKFVDTElCQyksMSkKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA4LXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDgtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaAppbmRleCBiNDYzMjVlLi4zNTAwOTFhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDgtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDgtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaApAQCAtMSwzMyArMSwzNCBAQAotRnJvbSBhYTdhOTE4NWEwMzdhZDU5MDEyYmQ0NjcxM2FjMzQwNDU4ZTk1MjA5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0YjdkYjA5NGQ2ZmM1NjU5MDAxYWU4ZGMxNzA3OGJiNjVkNDZiOWM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogPT9VVEYtOD9xP0FuPUMzPUFEYmFsPTIwTGltPUMzPUIzbj89IDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPgogRGF0ZTogRnJpLCAxMyBNYXkgMjAxNiAxMToxMToyOCAtMDUwMAotU3ViamVjdDogW1BBVENIXSB0ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvYWNsMS5jOiBTZWN1cml0eSBmaXggb24KLSBzdHJpbmcgcHJpbnRmCitTdWJqZWN0OiBbUEFUQ0hdIGFjbDogU2VjdXJpdHkgZml4IG9uIHN0cmluZyBwcmludGYKIE1JTUUtVmVyc2lvbjogMS4wCiBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKIAotRml4ZXM6CitGaXhlcyBidWlsZCBlcnJvciB3aGVuIGNvbXBpbGVkIHdpdGggLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHk6CiAKLWFjbDEuYzogSW4gZnVuY3Rpb24gJ3Rlc3RfYWNsX2RlZmF1bHQnOgotYWNsMS5jOjMxNzoyOiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzCi1bLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi0gIHByaW50ZihjbWQpOworYWNsMS5jOiBJbiBmdW5jdGlvbiDigJh0ZXN0X2FjbF9kZWZhdWx04oCZOgorYWNsMS5jOjMwNToyOiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KKyAgMzA1IHwgIHByaW50ZihjbWQpOworCitQYXRjaCB0YWtlbiBmcm9tIG9wZW5lbWJlZGRlZC1jb3JlLAorb3JpZ2luYWwgYnVnIHJlcG9ydDogaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnLzk1NDgKIAogW1lPQ1RPICM5NTQ4XQogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQogU2lnbmVkLW9mZi1ieTogQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBQZXRyIFZvcmVsIDxwdm9yZWxAc3VzZS5jej4KK1Vwc3RyZWFtLVN0YXR1czogYWNjZXB0ZWQgaW4gNGI3ZGIwOTRkNmZjNTY1OTAwMWFlOGRjMTcwNzhiYjY1ZDQ2YjljOQogLS0tCiAgdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL2FjbDEuYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9hY2wxLmMgYi90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvYWNsMS5jCi1pbmRleCBiZGYwMTgwLi44OThiN2NhIDEwMDY0NAoraW5kZXggYWFlOTQ4NGU1Li5hZDc3OGNkMzMgMTAwNjQ0CiAtLS0gYS90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvYWNsMS5jCiArKysgYi90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvYWNsMS5jCi1AQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgdGVzdF9hY2xfZGVmYXVsdChjaGFyICpkaXIsIGFjbF90IGFjbCkKK0BAIC0zMDIsNyArMzAyLDcgQEAgdm9pZCB0ZXN0X2FjbF9kZWZhdWx0KGNoYXIgKmRpciwgYWNsX3QgYWNsKQogIAljaGFyICpjbWQgPSBtYWxsb2MoMjU2KTsKICAKICAJc3RyY3B5KGNtZCwgImNobW9kIDc3NzcgIik7CkBAIC0zNyw1ICszOCw1IEBACiAgCXN5c3RlbShjbWQpOwogIAlhY2wyID0gYWNsX2dldF9maWxlKHBhdGgsIEFDTF9UWVBFX0FDQ0VTUyk7CiAtLSAKLTIuNy40CisyLjI1LjEKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA5LW9wZW5fcG9zaXhfdGVzdHN1aXRlLW1tYXAyNC0yLVJlbGF4LWNvbmRpdGlvbi1hLWJpdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwOS1vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS1tbWFwMjQtMi1SZWxheC1jb25kaXRpb24tYS1iaXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMmFjMWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA5LW9wZW5fcG9zaXhfdGVzdHN1aXRlLW1tYXAyNC0yLVJlbGF4LWNvbmRpdGlvbi1hLWJpdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLUZyb20gYTg3MTVhMTQ0NjMwNWZmZDc2NDA2ZjYzYzdmMTYwYzEzYTViMmU3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJIb25nemhpLlNvbmciIDxob25nemhpLnNvbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMTAgT2N0IDIwMTggMjI6MDc6MDUgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gb3Blbl9wb3NpeF90ZXN0c3VpdGUvbW1hcDI0LTI6IFJlbGF4IGNvbmRpdGlvbiBhIGJpdAotCi1NaXBzIHdpbGwgcmV0dXJuIEVJTlZBTCBpbnN0ZWFkIG9mIEVOT01FTSBhcyBleHBlY3RlZAotaWYgdGhlIHJhbmdlIFthZGRyICsgbGVuKSBleGNlZWRzIFRBU0tfU0laRS4KLQotTGludXgga2VybmVsIGNvZGU6IGFyY2gvbWlwcy9tbS9tbWFwLmMKLWlmIChmbGFncyAmIE1BUF9GSVhFRCkgewotICAgIC8qIEV2ZW4gTUFQX0ZJWEVEIG1hcHBpbmdzIG11c3QgcmVzaWRlIHdpdGhpbiBUQVNLX1NJWkUgKi8KLSAgICBpZiAoVEFTS19TSVpFIC0gbGVuIDwgYWRkcikKLSAgICAgICAgcmV0dXJuIC1FSU5WQUw7Ci0KLVJlbGF4IHRoZSBjb25kaXRpb24gYW5kIGFjY2VwdCBib3RoIEVOT01FTSBhbmQgRUlOVkFMCi1hcyBleHBlY3RlZCBvdXRjb21lLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy5saW51eC5pdC9waXBlcm1haWwvbHRwLzIwMTgtT2N0b2Jlci8wMDk2MjQuaHRtbF0KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3poaS5Tb25nIDxob25nemhpLnNvbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIC4uLi9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS9pbnRlcmZhY2VzL21tYXAvMjQtMi5jICAgIHwgMTAgKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvY29uZm9ybWFuY2UvaW50ZXJmYWNlcy9tbWFwLzI0LTIuYyBiL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS9pbnRlcmZhY2VzL21tYXAvMjQtMi5jCi1pbmRleCA5Y2Y4M2Q5Li41NTA5MGE2IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2NvbmZvcm1hbmNlL2ludGVyZmFjZXMvbW1hcC8yNC0yLmMKLSsrKyBiL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS9pbnRlcmZhY2VzL21tYXAvMjQtMi5jCi1AQCAtNyw3ICs3LDcgQEAKLSAgKiBzb3VyY2UgdHJlZS4KLSAgKgotICAqIFRoZSBtbWFwKCkgZnVuY3Rpb24gc2hhbGwgZmFpbCBpZjoKLS0gKiBbRU5PTUVNXSBNQVBfRklYRUQgd2FzIHNwZWNpZmllZCwKLSsgKiBbRU5PTUVNIG9yIEVJTlZBTF0gTUFQX0ZJWEVEIHdhcyBzcGVjaWZpZWQsCi0gICogYW5kIHRoZSByYW5nZSBbYWRkcixhZGRyK2xlbikgZXhjZWVkcyB0aGF0IGFsbG93ZWQKLSAgKiBmb3IgdGhlIGFkZHJlc3Mgc3BhY2Ugb2YgYSBwcm9jZXNzOyBvciwgaWYgTUFQX0ZJWEVEIHdhcyBub3Qgc3BlY2lmaWVkIGFuZAotICAqIHRoZXJlIGlzIGluc3VmZmljaWVudCByb29tIGluIHRoZSBhZGRyZXNzIHNwYWNlIHRvIGVmZmVjdCB0aGUgbWFwcGluZy4KLUBAIC0xNSw3ICsxNSw3IEBACi0gICogVGVzdCBTdGVwOgotICAqIDEuIE1hcCBhIHNoYXJlZCBtZW1vcnkgb2JqZWN0LCB3aXRoIHNpemUgZXhjZWVkaW5nIHRoZSB2YWx1ZSBnZXQgZnJvbQotICAqICAgIHJsaW1fY3VyIG9mIHJlc291cmNlIFJMSU1JVF9BUywgc2V0dGluZyBNQVBfRklYRUQ7Ci0tICogMy4gU2hvdWxkIGdldCBFTk9NRU0uCi0rICogMy4gU2hvdWxkIGdldCBFTk9NRU0gb3IgRUlOVkFMLgotICAqLwotIAotICNpbmNsdWRlIDxzdGRpby5oPgotQEAgLTkyLDggKzkyLDggQEAgaW50IG1haW4odm9pZCkKLSAJICAgICAgICh1bnNpZ25lZCBsb25nKWxlbik7Ci0gCXBhID0gbW1hcChhZGRyLCBsZW4sIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1BUF9GSVhFRCB8IE1BUF9TSEFSRUQsIGZkLAotIAkJICAwKTsKLS0JaWYgKHBhID09IE1BUF9GQUlMRUQgJiYgZXJybm8gPT0gRU5PTUVNKSB7Ci0tCQlwcmludGYoIkdvdCBFTk9NRU06ICVzXG5UZXN0IFBBU1NFRFxuIiwgc3RyZXJyb3IoZXJybm8pKTsKLSsJaWYgKHBhID09IE1BUF9GQUlMRUQgJiYgKGVycm5vID09IEVOT01FTSB8fCBlcnJubyA9PSBFSU5WQUwpKSB7Ci0rCQlwcmludGYoIkdvdCBFTk9NRU0gb3IgRUlOVkFMOiAlc1xuVGVzdCBQQVNTRURcbiIsIHN0cmVycm9yKGVycm5vKSk7Ci0gCQlleGl0KFBUU19QQVNTKTsKLSAJfQotIAotQEAgLTEwMiw2ICsxMDIsNiBAQCBpbnQgbWFpbih2b2lkKQotIAllbHNlCi0gCQltdW5tYXAocGEsIGxlbik7Ci0gCWNsb3NlKGZkKTsKLS0JcHJpbnRmKCJUZXN0IEZhaWw6IERpZCBub3QgZ2V0IEVOT01FTSBhcyBleHBlY3RlZFxuIik7Ci0rCXByaW50ZigiVGVzdCBGYWlsZWQ6IERpZCBub3QgZ2V0IEVOT01FTSBvciBFSU5WQUwgYXMgZXhwZWN0ZWRcbiIpOwotIAlyZXR1cm4gUFRTX0ZBSUw7Ci0gfQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTAtc2htY3RsMDEtZG9uLXQtdXNlLWhhcmRjb2RlZC1pbmRleC0wLWZvci1TSE1fU1RBVC10ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMC1zaG1jdGwwMS1kb24tdC11c2UtaGFyZGNvZGVkLWluZGV4LTAtZm9yLVNITV9TVEFULXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzA0ZTVmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMC1zaG1jdGwwMS1kb24tdC11c2UtaGFyZGNvZGVkLWluZGV4LTAtZm9yLVNITV9TVEFULXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotRnJvbSA3OTQ5MzNiMzgzNTRhMjYxMmNmMmM0NzFmMTE3OThiMzA2ZjM1MzE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDIwIE1heSAyMDE5IDIwOjQ3OjIwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNobWN0bDAxOiBkb24ndCB1c2UgaGFyZGNvZGVkIGluZGV4ID09IDAgZm9yIFNITV9TVEFUIHRlc3QKLQotVGVzdCBmYWlscyBvbiBTSE1fU1RBVCB0ZXN0Y2FzZToKLSAgIHNobWN0bDAxICAgIDUgIFRGQUlMICA6ICBzaG1jdGwwMS5jOjE3Mzogc2htY3RsMDEgY2FsbCBmYWlsZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJubyA9IDIyIDogSW52YWxpZCBhcmd1bWVudAotICAgc2htY3RsKDAsIFNITV9TVEFULCAweDYwMTA2MCkgICAgICAgICAgID0gLUVJTlZBTAotCi1zaW5jZSBmb2xsb3dpbmcgY29tbWl0OgotICAgY29tbWl0IDk5ZGI0NmVhMjkyNzgwY2Q5NzhkNTY5MzJkOTQ0NWIxZThiZGFmZTgKLSAgIEF1dGhvcjogTWFuZnJlZCBTcHJhdWwgPG1hbmZyZWRAY29sb3JmdWxsaWZlLmNvbT4KLSAgIERhdGU6ICAgVHVlIE1heSAxNCAxNTo0NjozNiAyMDE5IC0wNzAwCi0gICAgIGlwYzogZG8gY3ljbGljIGlkIGFsbG9jYXRpb24gZm9yIHRoZSBpcGMgb2JqZWN0LgotCi1Eb24ndCByZWx5IG9uIGluZGV4IDAgYmVpbmcgYWx3YXlzIGF2YWlsYWJsZSwgYnV0IGluc3RlYWQKLXVzZSAobWF4aW11bSkgaW5kZXggcmV0dXJuZWQgYnkgU0hNX0lORk8uCi0KLVNpZ25lZC1vZmYtYnk6IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgotUmV2aWV3ZWQtYnk6IFBldHIgVm9yZWwgPHB2b3JlbEBzdXNlLmN6PgotQWNrZWQtYnk6IEN5cmlsIEhydWJpcyA8Y2hydWJpc0BzdXNlLmN6PgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvY29tbWl0L2RiMGE0M2Q5Mzg4YmUyYzM0N2E4MzA2NzUxYmJlNmJlYzA4NmQwNjJdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd6aGkgU29uZyA8aG9uZ3poaS5zb25nQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2lwYy9zaG1jdGwvc2htY3RsMDEuYyB8IDIxICsrKysrKysrKysrKysrKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9pcGMvc2htY3RsL3NobWN0bDAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2lwYy9zaG1jdGwvc2htY3RsMDEuYwotaW5kZXggMWI0Njk3Ny4uNTJiZjIzYSAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvaXBjL3NobWN0bC9zaG1jdGwwMS5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2lwYy9zaG1jdGwvc2htY3RsMDEuYwotQEAgLTc5LDYgKzc5LDcgQEAgc3RhdGljIHZvaWQgZnVuY19pbmZvKGludCByZXQpOwotIAotIC8qIENoZWNrIHJvdXRpbmUgZm9yIFNITV9TVEFUICovCi0gc3RhdGljIHZvaWQgZnVuY19zc3RhdChpbnQgcmV0KTsKLStzdGF0aWMgdm9pZCBmdW5jX3NzdGF0X3NldHVwKHZvaWQpOwotIAotIC8qIENoZWNrIHJvdXRpbmUgZm9yIFNITV9MT0NLICovCi0gc3RhdGljIHZvaWQgZnVuY19sb2NrKGludCByZXQpOwotQEAgLTExMCw3ICsxMTEsNyBAQCBzdGF0aWMgc3RydWN0IHRlc3RfY2FzZV90IHsKLSAjZW5kaWYKLSAJeyZzaG1faWRfMSwgSVBDX1NFVCwgJmJ1ZiwgZnVuY19zZXQsIHNldF9zZXR1cH0sCi0gCXsmc2htX2lkXzEsIElQQ19JTkZPLCAoc3RydWN0IHNobWlkX2RzICopICZpbmZvLCBmdW5jX2luZm8sIE5VTEx9LAotLQl7JnNobV9pbmRleCwgU0hNX1NUQVQsICZidWYsIGZ1bmNfc3N0YXQsIE5VTEx9LAotKwl7JnNobV9pbmRleCwgU0hNX1NUQVQsICZidWYsIGZ1bmNfc3N0YXQsIGZ1bmNfc3N0YXRfc2V0dXB9LAotIAl7JnNobV9pZF8xLCBTSE1fTE9DSywgTlVMTCwgZnVuY19sb2NrLCBOVUxMfSwKLSAJeyZzaG1faWRfMSwgU0hNX1VOTE9DSywgTlVMTCwgZnVuY191bmxvY2ssIE5VTEx9LAotIAl7JnNobV9pZF8xLCBJUENfUk1JRCwgTlVMTCwgZnVuY19ybWlkLCBOVUxMfSwKLUBAIC00MDcsOSArNDA4LDIzIEBAIHN0YXRpYyB2b2lkIGZ1bmNfaW5mbyhpbnQgcmV0KQotIHN0YXRpYyB2b2lkIGZ1bmNfc3N0YXQoaW50IHJldCkKLSB7Ci0gCWlmIChyZXQgPj0gMCkKLS0JCXRzdF9yZXNtKFRQQVNTLCAiZ2V0IGNvcnJlY3Qgc2hhcmVkIG1lbW9yeSBpZCIpOwotKwkJdHN0X3Jlc20oVFBBU1MsICJnZXQgY29ycmVjdCBzaGFyZWQgbWVtb3J5IGlkIGZvciBpbmRleDogJWQiLAotKwkJCXNobV9pbmRleCk7Ci0gCWVsc2UKLS0JCXRzdF9yZXNtKFRGQUlMLCAic2hhcmVkIG1lbW9yeSBpZCBpcyBpbmNvcnJlY3QiKTsKLSsJCXRzdF9yZXNtKFRGQUlMLCAic2hhcmVkIG1lbW9yeSBpZCBpcyBpbmNvcnJlY3QsIGluZGV4OiAlZCIsCi0rCQkJc2htX2luZGV4KTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgZnVuY19zc3RhdF9zZXR1cCh2b2lkKQotK3sKLSsJc3RydWN0IHNobV9pbmZvIHRtcDsKLSsJaW50IHJldDsKLSsKLSsJcmV0ID0gc2htY3RsKHNobV9pZF8xLCBTSE1fSU5GTywgKHZvaWQgKikmdG1wKTsKLSsJaWYgKHJldCA8IDApCi0rCQl0c3RfcmVzbShURkFJTHxURVJSTk8sICJzaG1jdGwoU0hNX0lORk8pIik7Ci0rCWVsc2UKLSsJCXNobV9pbmRleCA9IHJldDsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgZnVuY19sb2NrKGludCByZXQpCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMS1kaXJlY3RfaW8tZGlvdGVzdDQtZHJvcC1NQVBfRklYRUQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTEtZGlyZWN0X2lvLWRpb3Rlc3Q0LWRyb3AtTUFQX0ZJWEVELnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2QxODhmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMS1kaXJlY3RfaW8tZGlvdGVzdDQtZHJvcC1NQVBfRklYRUQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1Gcm9tIGYyMTBkN2UxOWI3MjEwNDFmMzFiN2YyNThhMTY5Zjg5ZGM4NTAzMDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgNCBKdWwgMjAxOSAxNjo0NToyMyArMDIwMAotU3ViamVjdDogW1BBVENIXSBkaXJlY3RfaW8vZGlvdGVzdDQ6IGRyb3AgTUFQX0ZJWEVECi0KLUhvbmd6aGkgcmVwb3J0cyB0aGF0IHRoaXMgdGVzdCBpcyBmYWlsaW5nIG9uIG1pcHM2NCB3aXRoIDUuMSs6Ci0gIGRpb3Rlc3Q0IDEwIFRCUk9LIDogZGlvdGVzdDQuYzozNjg6IGNhbid0IG1tYXAgZmlsZTogSW52YWxpZCBhcmd1bWVudAotICBkaW90ZXN0NCAxMSBUQlJPSyA6IGRpb3Rlc3Q0LmM6MzY4OiBSZW1haW5pbmcgY2FzZXMgYnJva2VuCi1JIGNvdWxkIHJlcHJvZHVjZSBpdCBvbiBlbXVsYXRlZCA1a2MtbWFsdGEsIHJ1bm5pbmcgNS4yLjAtcmM3LgotCi1UZXN0IGlzIHRyeWluZyB0byBtYXAgaW50byBhcmVhIGltbWVkaWF0ZWx5IGZvbGxvd2luZyBoZWFwIGFzIE1BUF9TSEFSRUQsCi1idXQgaXQgdXNlZCB3cm9uZyBhbGlnbm1lbnQgKGZpeGVkIGJ5ICdsYXBpL21tYXAuaDogaW5jbHVkZSBjb25maWcuaCcpLgotCi1Vc2FnZSBvZiBNQVBfRklYRUQgc2VlbXMgdW5uZWNlc3NhcnksIHNvIGRyb3AgdGhhdCB0b28gYW5kIGxldCB0aGUga2VybmVsCi1waWNrIGFuIGFkZHJlc3MuCi0KLVJlcG9ydGVkLWJ5OiBIb25nemhpLlNvbmcgPGhvbmd6aGkuc29uZ0B3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1BY2tlZC1ieTogQ3lyaWwgSHJ1YmlzIDxjaHJ1YmlzQHN1c2UuY3o+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9jb21taXQvZjU0NDRlZWVhYmYyNTJiODg4NGI5NDY1ZDI3N2I2YWY4NTM4MTllM10KLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdGNhc2VzL2tlcm5lbC9pby9kaXJlY3RfaW8vZGlvdGVzdDQuYyB8IDggKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9pby9kaXJlY3RfaW8vZGlvdGVzdDQuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvaW8vZGlyZWN0X2lvL2Rpb3Rlc3Q0LmMKLWluZGV4IGU0NjE2ZTQuLmJmMjAwY2QgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL2lvL2RpcmVjdF9pby9kaW90ZXN0NC5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL2lvL2RpcmVjdF9pby9kaW90ZXN0NC5jCi1AQCAtMzUyLDE4ICszNTIsMTQgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJdG90YWwrKzsKLSAKLSAJLyogVGVzdC0xMDogcmVhZCwgd3JpdGUgdG8gYSBtbWFwZWQgZmlsZSAqLwotLQlzaG1fYmFzZSA9IChjaGFyICopKCgobG9uZylzYnJrKDApICsgKHNobXN6IC0gMSkpICYgfihzaG1zeiAtIDEpKTsKLS0JaWYgKHNobV9iYXNlID09IE5VTEwpIHsKLS0JCXRzdF9icmttKFRCUk9LLCBjbGVhbnVwLCAic2JyayBmYWlsZWQ6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKLS0JfQotIAlvZmZzZXQgPSA0MDk2OwotIAljb3VudCA9IGJ1ZnNpemU7Ci0gCWlmICgoZmQgPSBvcGVuKGZpbGVuYW1lLCBPX0RJUkVDVCB8IE9fUkRXUikpIDwgMCkgewotIAkJdHN0X2Jya20oVEJST0ssIGNsZWFudXAsICJjYW4ndCBvcGVuICVzOiAlcyIsCi0gCQkJIGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOwotIAl9Ci0tCXNobV9iYXNlID0gbW1hcChzaG1fYmFzZSwgMHgxMDAwMDAsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCi0tCQkJTUFQX1NIQVJFRCB8IE1BUF9GSVhFRCwgZmQsIDApOwotKwlzaG1fYmFzZSA9IG1tYXAoMCwgMHgxMDAwMDAsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCi0rCQkJTUFQX1NIQVJFRCwgZmQsIDApOwotIAlpZiAoc2htX2Jhc2UgPT0gKGNhZGRyX3QpIC0gMSkgewotIAkJdHN0X2Jya20oVEJST0ssIGNsZWFudXAsICJjYW4ndCBtbWFwIGZpbGU6ICVzIiwKLSAJCQkgc3RyZXJyb3IoZXJybm8pKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDEyLWdldHJsaW1pdDAzLWFkanVzdC1hLWJpdC1vZi1jb2RlLXRvLWNvbXBhdGlhYmxlLXdpdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTItZ2V0cmxpbWl0MDMtYWRqdXN0LWEtYml0LW9mLWNvZGUtdG8tY29tcGF0aWFibGUtd2l0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVjYmM4MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTItZ2V0cmxpbWl0MDMtYWRqdXN0LWEtYml0LW9mLWNvZGUtdG8tY29tcGF0aWFibGUtd2l0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLUZyb20gNGFjNzQ3YzFmN2ZmOGUyZWMyNTY3ZDY2NzI4MjJlOTVhOWI1NmU1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJIb25nemhpLlNvbmciIDxob25nemhpLnNvbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMTUgSnVsIDIwMTkgMDM6Mzk6MDYgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gZ2V0cmxpbWl0MDM6IGFkanVzdCBhIGJpdCBvZiBjb2RlIHRvIGNvbXBhdGlhYmxlIHdpdGggbWlwczMyCi0KLUVycm9yIGluZm86Ci1nZXRybGltaXQwMy5jOjEwNDogRkFJTDogX19OUl9wcmxpbWl0NjQoMCkgaGFkIHJsaW1fY3VyID0KLWZmZmZmZmZmZmZmZmZmZmYgYnV0IF9fTlJfZ2V0cmxpbWl0KDApIGhhZCBybGltX2N1ciA9IDdmZmZmZmZmCi0KLUFjY29yZGluZyB0byBrZXJuZWwgY29kZTogW2FyY2gvbWlwcy9pbmNsdWRlL3VhcGkvYXNtL3Jlc291cmNlLmhdCi1STElNX0lORklOSVRZIGlzIHNldCB0byAweDdmZmZmZmZmVUwgaW5zdGVhZCBvZiBVTE9OR19NQVggb24gbWlwczMyLgotCi0gLyoKLSAqIFN1UyBzYXlzIGxpbWl0cyBoYXZlIHRvIGJlIHVuc2lnbmVkLgotICogV2hpY2ggbWFrZXMgYSB0b24gbW9yZSBzZW5zZSBhbnl3YXksCi0gKiBidXQgd2Uga2VlcCB0aGUgb2xkIHZhbHVlIG9uIE1JUFMzMiwKLSAqIGZvciBjb21wYXRpYmlsaXR5OgotICovCi0gI2lmbmRlZiBfX21pcHM2NAotICMgZGVmaW5lIFJMSU1fSU5GSU5JVFkgICAgICAweDdmZmZmZmZmVUwKLSAjZW5kaWYKLQotQWRkaW5nIGNvbmRpdGlvbmFsIHN0YXRlbWVudCBhYm91dCBtaXBzIHRvIGZpeCB0aGlzLgotCi1TaWduZWQtb2ZmLWJ5OiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KLVNpZ25lZC1vZmYtYnk6IEhvbmd6aGkuU29uZyA8aG9uZ3poaS5zb25nQHdpbmRyaXZlci5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9jb21taXQvN2EzYmNhNjNjZDdmMDU5ZDQ5MGI2Mjc0ZjBmZGYzMjQ3YmU5M2ZkZV0KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3poaS5Tb25nIDxob25nemhpLnNvbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0cmxpbWl0L2dldHJsaW1pdDAzLmMgfCA4ICsrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXRybGltaXQvZ2V0cmxpbWl0MDMuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0cmxpbWl0L2dldHJsaW1pdDAzLmMKLWluZGV4IGU0ZDU2YzQuLjMxOWJjNDkgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldHJsaW1pdC9nZXRybGltaXQwMy5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldHJsaW1pdC9nZXRybGltaXQwMy5jCi1AQCAtMjYsNiArMjYsNyBAQAotIAotICNpbmNsdWRlICJ0c3RfdGVzdC5oIgotICNpbmNsdWRlICJsYXBpL3N5c2NhbGxzLmgiCi0rI2luY2x1ZGUgImxhcGkvYWJpc2l6ZS5oIgotIAotIC8qKgotICAqIExpbnV4IHByb3ZpZGVzIGFuICJvbGQiIGdldHJsaW1pdCBzeXNjYWxsIGhhbmRsZXIgdGhhdCB1c2VzIHNpZ25lZCBsb25nLAotQEAgLTYxLDcgKzYyLDEyIEBAIHN0cnVjdCBybGltaXRfdWxvbmcgewotIAl1bnNpZ25lZCBsb25nIHJsaW1fY3VyOwotIAl1bnNpZ25lZCBsb25nIHJsaW1fbWF4OwotIH07Ci0tY29uc3QgdW5zaWduZWQgbG9uZyBSTElNX0lORklOSVRZX1VMID0gVUxPTkdfTUFYOwotKwotKyNpZiBkZWZpbmVkKF9fbWlwc19fKSAmJiBkZWZpbmVkKFRTVF9BQkkzMikKLSsJY29uc3QgdW5zaWduZWQgbG9uZyBSTElNX0lORklOSVRZX1VMID0gMHg3ZmZmZmZmZlVMOwotKyNlbHNlCi0rCWNvbnN0IHVuc2lnbmVkIGxvbmcgUkxJTV9JTkZJTklUWV9VTCA9IFVMT05HX01BWDsKLSsjZW5kaWYKLSAKLSBzdGF0aWMgaW50IGdldHJsaW1pdF91bG9uZyhpbnQgcmVzb3VyY2UsIHN0cnVjdCBybGltaXRfdWxvbmcgKnJsaW0pCi0gewotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMTkwNTE3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE5MDUxNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdhYTk2Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMTkwNTE3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTI0ICswLDAgQEAKLVNVTU1BUlkgPSAiTGludXggVGVzdCBQcm9qZWN0IgotREVTQ1JJUFRJT04gPSAiVGhlIExpbnV4IFRlc3QgUHJvamVjdCBpcyBhIGpvaW50IHByb2plY3Qgd2l0aCBTR0ksIElCTSwgT1NETCwgYW5kIEJ1bGwgd2l0aCBhIGdvYWwgdG8gZGVsaXZlciB0ZXN0IHN1aXRlcyB0byB0aGUgb3BlbiBzb3VyY2UgY29tbXVuaXR5IHRoYXQgdmFsaWRhdGUgdGhlIHJlbGlhYmlsaXR5LCByb2J1c3RuZXNzLCBhbmQgc3RhYmlsaXR5IG9mIExpbnV4LiBUaGUgTGludXggVGVzdCBQcm9qZWN0IGlzIGEgY29sbGVjdGlvbiBvZiB0b29scyBmb3IgdGVzdGluZyB0aGUgTGludXgga2VybmVsIGFuZCByZWxhdGVkIGZlYXR1cmVzLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vbGludXgtdGVzdC1wcm9qZWN0LmdpdGh1Yi5pby8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyICYgR1BMdjIrICYgTEdQTHYyKyAmIExHUEx2Mi4xKyAmIEJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9ydW5fZnJlZXplci5zaDtiZWdpbmxpbmU9NTtlbmRsaW5lPTE3O21kNT04NmE2MWQyYzA0MmQ1OTgzNmZmYjM1M2EyMTQ1NjQ5OCBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9tZW1vcnlfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9jcHVfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9DT1BZSU5HO21kNT00OGIxYzVlYzYzM2UzZTMwZWMyY2Y4ODRhZTY5OTk0NyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9yZWFsdGltZS9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCi0gICAgZmlsZTovL3V0aWxzL2JlbmNobWFyay9rZXJuYmVuY2gtMC40Mi9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgZmlsZTovL3V0aWxzL2Zmc2ItNi4wLXJjMi9DT1BZSU5HO21kNT1jNDYwODIxNjdhMzE0ZDc4NWQwMTJhMjQ0NzQ4ZDgwMyBcCi0iCi0KLURFUEVORFMgPSAiYXR0ciBsaWJhaW8gbGliY2FwIGFjbCBvcGVuc3NsIHppcC1uYXRpdmUiCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGZ0cyAiCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICIgTElCQz1tdXNsICIKLQotIyBzaW5jZSBsdHAgY29udGFpbnMgeDg2LTY0IGFzc2VtYmxlciB3aGljaCB1c2VzIHRoZSBmcmFtZS1wb2ludGVyIHJlZ2lzdGVyLAotIyBzZXQgLWZvbWl0LWZyYW1lLXBvaW50ZXIgeDg2LTY0IHRvIGhhbmRsZSBjYXNlcyB3aGVyZSBvcHRpbWlzYXRpb24KLSMgaXMgc2V0IHRvIC1PMCBvciBmcmFtZSBwb2ludGVycyBoYXZlIGJlZW4gZW5hYmxlZCBieSAtZm5vLW9taXQtZnJhbWUtcG9pbnRlcgotIyBlYXJsaWVyIGluIENGTEFHUywgZXRjLgotQ0ZMQUdTX2FwcGVuZF94ODYtNjQgPSAiIC1mb21pdC1mcmFtZS1wb2ludGVyIgotCi1DRkxBR1NfYXBwZW5kX3Bvd2VycGM2NCA9ICIgLURfX1NBTkVfVVNFUlNQQUNFX1RZUEVTX18iCi1DRkxBR1NfYXBwZW5kX21pcHNhcmNobjY0ID0gIiAtRF9fU0FORV9VU0VSU1BBQ0VfVFlQRVNfXyIKLVNSQ1JFViA9ICJhYzMzZWY4N2YwYjlkYzU2NTMzMDI2NDM1YmUzZWE4YzY3Y2U4NmQyIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDIta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUNoZWNrLWlmLV9fR0xJQkNfUFJFUkVRLWlzLWRlZmluZWQtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtZ3VhcmQtbWFsbG9jb3B0LXdpdGgtX19HTElCQ19fLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtcnRfdGdzaWdxdWV1ZWluZm8tZGlzYWJsZS10ZXN0LW9uLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy1GaXgtdGVzdF9wcm9jX2tpbGwtaGFuZ2luZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOS1vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS1tbWFwMjQtMi1SZWxheC1jb25kaXRpb24tYS1iaXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1zaG1jdGwwMS1kb24tdC11c2UtaGFyZGNvZGVkLWluZGV4LTAtZm9yLVNITV9TVEFULXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtZGlyZWN0X2lvLWRpb3Rlc3Q0LWRyb3AtTUFQX0ZJWEVELnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTItZ2V0cmxpbWl0MDMtYWRqdXN0LWEtYml0LW9mLWNvZGUtdG8tY29tcGF0aWFibGUtd2l0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1jb25maWd1cmUtdGltZS1jaGVjay1mb3ItZ2V0ZGVudHMtZ2V0ZGVudHM2NC1BUEkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1jaGVjay1mb3ItUkVTX1VTRV9JTkVUNi1kdXJpbmctY29uZmlndXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc3lzY2FsbHMtdGdraWxsMDMtd2FpdC1mb3ItZGVmdW5jdC10aWQtdG8tZ2V0LWRldGFjaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXVzdGF0MDItRml4LUVGQVVMVC1pbi0zMmJpdC1jb21wYXRpYmlsaXR5LW1vZGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jdmUtbWVsdGRvd24uYy1GaXgta2VybmVsLXN5bWJvbC1maW5kaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdGNhc2VzLXVzZS1weXRob24zLWV2ZXJ5d2hlcmUtdG8tcnVuLXB5dGhvbi1zY3JpcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXN5c2NhbGwtcnRfc2lndGltZWR3YWl0MDEtRml4LXdyb25nLXNpZ3NldC1sZW5ndGgtZm8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jdmUtMjAxNy0xNzA1Mi1Bdm9pZC11bnNhZmUtZXhpdHMtaW4tdGhyZWFkcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW92ZXJjb21taXRfbWVtb3J5LXVwZGF0ZS1mb3ItbW0tZml4LWZhbHNlLXBvc2l0aXZlLU8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1ta3N3YXAwMS5zaC1BZGQtdWRldmFkbS10cmlnZ2VyLWJlZm9yZS1zd2FwLXZlcmlmaWNhLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWV4cG9ydCBwcmVmaXggPSAiL29wdC9sdHAiCi1leHBvcnQgZXhlY19wcmVmaXggPSAiL29wdC9sdHAiCi0KLVBBQ0tBR0VDT05GSUdbbnVtYV0gPSAiLS13aXRoLW51bWEsIC0td2l0aG91dC1udW1hLCBudW1hY3RsLCIKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vdGVzdGNhc2VzL3JlYWx0aW1lL200IgotRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcG93ZXItbWFuYWdlbWVudC10ZXN0c3VpdGUgLS13aXRoLXJlYWx0aW1lLXRlc3RzdWl0ZSAtLXdpdGgtb3Blbi1wb3NpeC10ZXN0c3VpdGUgIgotIyBsdHAgbmV0d29yay9ycGMgdGVzdCBjYXNlcyBmdGJmcyB3aGVuIGxpYnRpcnBjIGlzIGZvdW5kCi1FWFRSQV9PRUNPTkYgKz0gIiAtLXdpdGhvdXQtdGlycGMgIgotCi1kb19pbnN0YWxsKCl7Ci0gICAgaW5zdGFsbCAtZCAke0R9L29wdC9sdHAvCi0gICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gU0tJUF9JRENIRUNLPTEgaW5zdGFsbAotCi0gICAgIyBmaXh1cCBub3QgZGVwbG95IFNUUGZhaWx1cmVfcmVwb3J0LnBsIHRvIGF2b2lkIGNvbmZ1c2luZyBhYm91dCBpdCBmYWlscyB0byBydW4KLSAgICAjIGFzIGl0IGxhY2tzIGRlcGVuZGVuY3kgb24gc29tZSBwZXJsIG1vdWRsZSBzdWNoIGFzIExXUDo6U2ltcGxlCi0gICAgIyBBbmQgdGhpcyBzY3JpcHQgcHJldmlvdXNseSB3b3JrcyBhcyBhIHRvb2wgZm9yIGFuYWx5emluZyBmYWlsdXJlcyBmcm9tIExUUAotICAgICMgcnVucyBvbiB0aGUgT1NETCdzIFNjYWxlYWJsZSBUZXN0IFBsYXRmb3JtIChTVFApIGFuZCBpdCBtYWlubHkgYWNjZXNzZXMKLSAgICAjIGh0dHA6Ly9raGFjay5vc2RsLm9yZyB0byByZXRyaWV2ZSBsdHAgdGVzdCByZXN1bHRzIHJ1biBvbgotICAgICMgT1NETCdzIFNjYWxlYWJsZSBUZXN0IFBsYXRmb3JtLCBidXQgbm93IGh0dHA6Ly9raGFjay5vc2RsLm9yZyB1bmFjY2Vzc2libGUKLSAgICBybSAtcmYgJHtEfS9vcHQvbHRwL2Jpbi9TVFBmYWlsdXJlX3JlcG9ydC5wbAotCi0gICAgIyBDb3B5IFBPU0lYIHRlc3Qgc3VpdGUgaW50byAke0R9L29wdC9sdHAvdGVzdGNhc2VzIGJ5IG1hbnVhbAotICAgIGNwIC1yIHRlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZSAke0R9L29wdC9sdHAvdGVzdGNhc2VzCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgICBhY2wgXAotICAgIGF0IFwKLSAgICBhdHRyIFwKLSAgICBiYXNoIFwKLSAgICBjcGlvIFwKLSAgICBjcm9uaWUgXAotICAgIGN1cmwgXAotICAgIGUyZnNwcm9ncy1ta2UyZnMgXAotICAgIGV4cGVjdCBcCi0gICAgZmlsZSBcCi0gICAgZ2F3ayBcCi0gICAgZ3ppcCBcCi0gICAgaXByb3V0ZTIgXAotICAgIGxkZCBcCi0gICAgbGliYWlvIFwKLSAgICBsb2dyb3RhdGUgXAotICAgIHBlcmwgXAotICAgIHB5dGhvbjMtY29yZSBcCi0gICAgcHJvY3BzIFwKLSAgICBxdW90YSBcCi0gICAgdW56aXAgXAotICAgIHV0aWwtbGludXggXAotICAgIHdoaWNoIFwKLSAgICB0YXIgXAotIgotCi1GSUxFU18ke1BOfSArPSAiL29wdC9sdHAvKiAvb3B0L2x0cC9ydW50ZXN0LyogL29wdC9sdHAvc2NlbmFyaW9fZ3JvdXBzLyogL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vKi9iaW4vKiAvb3B0L2x0cC90ZXN0c2NyaXB0cy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9Eb2N1bWVudGF0aW9uLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2Z1bmN0aW9uYWwvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvaW5jbHVkZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9zY3JpcHRzLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL3N0cmVzcy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS90b29scy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9kYXRhL25tMDEvbGliLmEgL29wdC9sdHAvbGliL2xpYm1lbS5hIgotCi0jIEF2b2lkIHN0cmlwcGluZyBzb21lIGdlbmVyYXRlZCBiaW5hcmllcyBvdGhlcndpc2Ugc29tZSBvZiB0aGUgbHRwIHRlc3RzIHN1Y2ggYXMgbGRkMDEgJiBubTAxIGZhaWwKLUlOSElCSVRfUEFDS0FHRV9TVFJJUF9GSUxFUyA9ICIvb3B0L2x0cC90ZXN0Y2FzZXMvYmluL25tMDEgL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi9sZGQwMSIKLUlOU0FORV9TS0lQXyR7UE59ICs9ICJhbHJlYWR5LXN0cmlwcGVkIHN0YXRpY2RldiIKLQotIyBBdm9pZCBmaWxlIGRlcGVuZGVuY3kgc2NhbnMsIGFzIExUUCBjaGVja3MgZm9yIHRoaW5ncyB0aGF0IG1heSBvciBtYXkgbm90Ci0jIGV4aXN0IG9uIHRoZSBydW5uaW5nIHN5c3RlbS4gIEZvciBpbnN0YW5jZSBpdCBoYXMgc3BlY2lmaWMgY2hlY2tzIGZvcgotIyBjc2ggYW5kIGtzaCB3aGljaCBhcmUgbm90IHR5cGljYWxseSBwYXJ0IG9mIE9wZW5FbWJlZGRlZCBzeXN0ZW1zIChidXQKLSMgY2FuIGJlIGFkZGVkIHZpYSBhZGRpdGlvbmFsIGxheWVycy4pCi1TS0lQX0ZJTEVERVBTXyR7UE59ID0gJzEnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMjAwMTIwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDIwMDEyMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWFjMzkxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDIwMDEyMC5iYgpAQCAtMCwwICsxLDExNCBAQAorU1VNTUFSWSA9ICJMaW51eCBUZXN0IFByb2plY3QiCitERVNDUklQVElPTiA9ICJUaGUgTGludXggVGVzdCBQcm9qZWN0IGlzIGEgam9pbnQgcHJvamVjdCB3aXRoIFNHSSwgSUJNLCBPU0RMLCBhbmQgQnVsbCB3aXRoIGEgZ29hbCB0byBkZWxpdmVyIHRlc3Qgc3VpdGVzIHRvIHRoZSBvcGVuIHNvdXJjZSBjb21tdW5pdHkgdGhhdCB2YWxpZGF0ZSB0aGUgcmVsaWFiaWxpdHksIHJvYnVzdG5lc3MsIGFuZCBzdGFiaWxpdHkgb2YgTGludXguIFRoZSBMaW51eCBUZXN0IFByb2plY3QgaXMgYSBjb2xsZWN0aW9uIG9mIHRvb2xzIGZvciB0ZXN0aW5nIHRoZSBMaW51eCBrZXJuZWwgYW5kIHJlbGF0ZWQgZmVhdHVyZXMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9saW51eC10ZXN0LXByb2plY3QuZ2l0aHViLmlvLyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisgJiBMR1BMdjIrICYgTEdQTHYyLjErICYgQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9mcmVlemVyL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9mcmVlemVyL3J1bl9mcmVlemVyLnNoO2JlZ2lubGluZT01O2VuZGxpbmU9MTc7bWQ1PTg2YTYxZDJjMDQyZDU5ODM2ZmZiMzUzYTIxNDU2NDk4IFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9ob3RwbHVnL21lbW9yeV9ob3RwbHVnL0NPUFlJTkc7bWQ1PWUwNGEyZTU0MmIyYjg2MjliZjljZDJiYTI5YjBmZTQxIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9ob3RwbHVnL2NwdV9ob3RwbHVnL0NPUFlJTkc7bWQ1PWUwNGEyZTU0MmIyYjg2MjliZjljZDJiYTI5YjBmZTQxIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL0NPUFlJTkc7bWQ1PTQ4YjFjNWVjNjMzZTNlMzBlYzJjZjg4NGFlNjk5OTQ3IFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL3JlYWx0aW1lL0NPUFlJTkc7bWQ1PTEyZjg4NGQyYWUxZmY4N2MwOWU1YjdjY2MyYzRjYTdlIFwKKyAgICBmaWxlOi8vdXRpbHMvYmVuY2htYXJrL2tlcm5iZW5jaC0wLjQyL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyIKKworREVQRU5EUyA9ICJhdHRyIGxpYmFpbyBsaWJjYXAgYWNsIG9wZW5zc2wgemlwLW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZnRzICIKK0VYVFJBX09FTUFLRV9hcHBlbmRfbGliYy1tdXNsID0gIiBMSUJDPW11c2wgIgorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIExJQlM9LWxmdHMgIgorCisjIHNpbmNlIGx0cCBjb250YWlucyB4ODYtNjQgYXNzZW1ibGVyIHdoaWNoIHVzZXMgdGhlIGZyYW1lLXBvaW50ZXIgcmVnaXN0ZXIsCisjIHNldCAtZm9taXQtZnJhbWUtcG9pbnRlciB4ODYtNjQgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIG9wdGltaXNhdGlvbgorIyBpcyBzZXQgdG8gLU8wIG9yIGZyYW1lIHBvaW50ZXJzIGhhdmUgYmVlbiBlbmFibGVkIGJ5IC1mbm8tb21pdC1mcmFtZS1wb2ludGVyCisjIGVhcmxpZXIgaW4gQ0ZMQUdTLCBldGMuCitDRkxBR1NfYXBwZW5kX3g4Ni02NCA9ICIgLWZvbWl0LWZyYW1lLXBvaW50ZXIiCisKK0NGTEFHU19hcHBlbmRfcG93ZXJwYzY0ID0gIiAtRF9fU0FORV9VU0VSU1BBQ0VfVFlQRVNfXyIKK0NGTEFHU19hcHBlbmRfbWlwc2FyY2huNjQgPSAiIC1EX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fIgorU1JDUkVWID0gIjQwNzlhYWYyNjRkMGU5ZWFkMDQyYjU5ZDFjNWY0ZTY0MzYyMGQwZDUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLUFkZC1vcHRpb24tdG8tc2VsZWN0LWxpYmMtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWd1YXJkLW1hbGxvY29wdC13aXRoLV9fR0xJQkNfXy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LUZpeC10ZXN0X3Byb2Nfa2lsbC1oYW5naW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1tb3JlLW11c2wtZXhjbHVzaW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN5c2NhbGxzLUNoZWNrLWZvci10aW1lNjQtdW5zYWZlLXN5c2NhbGxzLWJlZm9yZS11c2kucGF0Y2ggXAorICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworZXhwb3J0IHByZWZpeCA9ICIvb3B0LyR7UE59IgorZXhwb3J0IGV4ZWNfcHJlZml4ID0gIi9vcHQvJHtQTn0iCisKK1BBQ0tBR0VDT05GSUdbbnVtYV0gPSAiLS13aXRoLW51bWEsIC0td2l0aG91dC1udW1hLCBudW1hY3RsLCIKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vdGVzdGNhc2VzL3JlYWx0aW1lL200IgorRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcG93ZXItbWFuYWdlbWVudC10ZXN0c3VpdGUgLS13aXRoLXJlYWx0aW1lLXRlc3RzdWl0ZSAtLXdpdGgtb3Blbi1wb3NpeC10ZXN0c3VpdGUgIgorIyBsdHAgbmV0d29yay9ycGMgdGVzdCBjYXNlcyBmdGJmcyB3aGVuIGxpYnRpcnBjIGlzIGZvdW5kCitFWFRSQV9PRUNPTkYgKz0gIiAtLXdpdGhvdXQtdGlycGMgIgorCitkb19pbnN0YWxsKCl7CisgICAgaW5zdGFsbCAtZCAke0R9JHtwcmVmaXh9LworICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IFNLSVBfSURDSEVDSz0xIGluc3RhbGwKKworICAgICMgZml4dXAgbm90IGRlcGxveSBTVFBmYWlsdXJlX3JlcG9ydC5wbCB0byBhdm9pZCBjb25mdXNpbmcgYWJvdXQgaXQgZmFpbHMgdG8gcnVuCisgICAgIyBhcyBpdCBsYWNrcyBkZXBlbmRlbmN5IG9uIHNvbWUgcGVybCBtb3VkbGUgc3VjaCBhcyBMV1A6OlNpbXBsZQorICAgICMgQW5kIHRoaXMgc2NyaXB0IHByZXZpb3VzbHkgd29ya3MgYXMgYSB0b29sIGZvciBhbmFseXppbmcgZmFpbHVyZXMgZnJvbSBMVFAKKyAgICAjIHJ1bnMgb24gdGhlIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSAoU1RQKSBhbmQgaXQgbWFpbmx5IGFjY2Vzc2VzCisgICAgIyBodHRwOi8va2hhY2sub3NkbC5vcmcgdG8gcmV0cmlldmUgbHRwIHRlc3QgcmVzdWx0cyBydW4gb24KKyAgICAjIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSwgYnV0IG5vdyBodHRwOi8va2hhY2sub3NkbC5vcmcgdW5hY2Nlc3NpYmxlCisgICAgcm0gLXJmICR7RH0ke3ByZWZpeH0vYmluL1NUUGZhaWx1cmVfcmVwb3J0LnBsCisKKyAgICAjIENvcHkgUE9TSVggdGVzdCBzdWl0ZSBpbnRvICR7RH0ke3ByZWZpeH0vdGVzdGNhc2VzIGJ5IG1hbnVhbAorICAgIGNwIC1yIHRlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZSAke0R9JHtwcmVmaXh9L3Rlc3RjYXNlcworCisgICAgIyBNYWtlZmlsZSB3ZXJlIGNvbmZpZ3VyZWQgaW4gdGhlIGJ1aWxkIHN5c3RlbQorICAgIGZpbmQgJHtEfSR7cHJlZml4fSAtbmFtZSBNYWtlZmlsZSB8IHhhcmdzIC1uIDEgc2VkIC1pIFwKKyAgICAgICAgIC1lICdzQFteIF0qLWZkZWJ1Zy1wcmVmaXgtbWFwPVteICJdKkBAZycgXAorICAgICAgICAgLWUgJ3NAW14gXSotZm1hY3JvLXByZWZpeC1tYXA9W14gIl0qQEBnJyBcCisgICAgICAgICAtZSAnc0BbXiBdKi0tc3lzcm9vdD1bXiAiXSpAQGcnIAorfQorCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgYXR0ciBcCisgICAgYmFzaCBcCisgICAgY3BpbyBcCisgICAgY3JvbmllIFwKKyAgICBjdXJsIFwKKyAgICBlMmZzcHJvZ3MtbWtlMmZzIFwKKyAgICBleHBlY3QgXAorICAgIGZpbGUgXAorICAgIGdhd2sgXAorICAgIGd6aXAgXAorICAgIGlwcm91dGUyIFwKKyAgICBsZGQgXAorICAgIGxpYmFpbyBcCisgICAgbG9ncm90YXRlIFwKKyAgICBwZXJsIFwKKyAgICBweXRob24zLWNvcmUgXAorICAgIHByb2NwcyBcCisgICAgcXVvdGEgXAorICAgIHVuemlwIFwKKyAgICB1dGlsLWxpbnV4IFwKKyAgICB3aGljaCBcCisgICAgdGFyIFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiR7cHJlZml4fS8qICR7cHJlZml4fS9ydW50ZXN0LyogJHtwcmVmaXh9L3NjZW5hcmlvX2dyb3Vwcy8qICR7cHJlZml4fS90ZXN0Y2FzZXMvYmluLyogJHtwcmVmaXh9L3Rlc3RjYXNlcy9iaW4vKi9iaW4vKiAke3ByZWZpeH0vdGVzdHNjcmlwdHMvKiAke3ByZWZpeH0vdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlLyogJHtwcmVmaXh9L3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS8qICR7cHJlZml4fS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvRG9jdW1lbnRhdGlvbi8qICR7cHJlZml4fS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvZnVuY3Rpb25hbC8qICR7cHJlZml4fS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvaW5jbHVkZS8qICR7cHJlZml4fS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvc2NyaXB0cy8qICR7cHJlZml4fS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvc3RyZXNzLyogJHtwcmVmaXh9L3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS90b29scy8qICR7cHJlZml4fS90ZXN0Y2FzZXMvZGF0YS9ubTAxL2xpYi5hICR7cHJlZml4fS9saWIvbGlibWVtLmEiCisKKyMgQXZvaWQgc3RyaXBwaW5nIHNvbWUgZ2VuZXJhdGVkIGJpbmFyaWVzIG90aGVyd2lzZSBzb21lIG9mIHRoZSBsdHAgdGVzdHMgc3VjaCBhcyBsZGQwMSAmIG5tMDEgZmFpbAorSU5ISUJJVF9QQUNLQUdFX1NUUklQX0ZJTEVTID0gIiR7cHJlZml4fS90ZXN0Y2FzZXMvYmluL25tMDEgJHtwcmVmaXh9L3Rlc3RjYXNlcy9iaW4vbGRkMDEiCitJTlNBTkVfU0tJUF8ke1BOfSArPSAiYWxyZWFkeS1zdHJpcHBlZCBzdGF0aWNkZXYiCisKKyMgQXZvaWQgZmlsZSBkZXBlbmRlbmN5IHNjYW5zLCBhcyBMVFAgY2hlY2tzIGZvciB0aGluZ3MgdGhhdCBtYXkgb3IgbWF5IG5vdAorIyBleGlzdCBvbiB0aGUgcnVubmluZyBzeXN0ZW0uICBGb3IgaW5zdGFuY2UgaXQgaGFzIHNwZWNpZmljIGNoZWNrcyBmb3IKKyMgY3NoIGFuZCBrc2ggd2hpY2ggYXJlIG5vdCB0eXBpY2FsbHkgcGFydCBvZiBPcGVuRW1iZWRkZWQgc3lzdGVtcyAoYnV0CisjIGNhbiBiZSBhZGRlZCB2aWEgYWRkaXRpb25hbCBsYXllcnMuKQorU0tJUF9GSUxFREVQU18ke1BOfSA9ICcxJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL21hbi1kYl8yLjguNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4M2IyMzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL21hbi1kYl8yLjguNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLVNVTU1BUlkgPSAiQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIHN0YW5kYXJkIFVuaXggZG9jdW1lbnRhdGlvbiBzeXN0ZW0gYWNjZXNzZWQgdXNpbmcgdGhlIG1hbiBjb21tYW5kIgotSE9NRVBBR0UgPSAiaHR0cDovL21hbi1kYi5ub25nbnUub3JnLyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvQ09QWUlORy5MSUI7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvQ09QWUlORzttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEiCi0KLVNSQ19VUkkgPSAiJHtTQVZBTk5BSF9OT05HTlVfTUlSUk9SfS9tYW4tZGIvbWFuLWRiLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly85OV9tYW5kYiBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW5fZGIuY29uZi1hdm9pZC1tdWx0aWxpYi1pbnN0YWxsLWZpbGUtY29uZmxpY3QucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiZWMwYjIzYzgzMTRhMTY1NGM0ZDA1OWIyYzE4Y2U0M2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjljZDViYjk5NjMwNWQwOGJmZTllMTExNGVkYzMwYjRjOTdiZTgwNzA5M2I4OGFmODAzM2VkMWNmOWJlYjMyNiIKLQotREVQRU5EUyA9ICJsaWJwaXBlbGluZSBnZGJtIGdyb2ZmLW5hdGl2ZSBiYXNlLXBhc3N3ZCIKLVJERVBFTkRTXyR7UE59ICs9ICJiYXNlLXBhc3N3ZCIKLQotIyB8IC91c3Ivc3JjL2RlYnVnL21hbi1kYi8yLjguMC1yMC9tYW4tZGItMi44LjAvc3JjL3doYXRpcy5jOjkzOTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX25sX21zZ19jYXRfY250cicKLVVTRV9OTFNfbGliYy1tdXNsID0gIm5vIgotCi1pbmhlcml0IGdldHRleHQgcGtnY29uZmlnIGF1dG90b29scyBzeXN0ZW1kCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtcGFnZXI9bGVzcyAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSIKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vZ2wvbTQiCi0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCSAgICAgICAgaW5zdGFsbCAtZCAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcwotCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS85OV9tYW5kYiAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcwotCWZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2xpYmMtbXVzbCgpIHsKLSAgICAgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke3ByZWZpeH0vbGliL3RtcGZpbGVzLmQiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L21hbi1kYi9saWJtYW4uc28gJHtsaWJkaXJ9LyR7QlBOfS9saWJtYW5kYi5zbyIKLQotUkRFUEVORFNfJHtQTn0gKz0gImdyb2ZmIgotUlJFQ09NTUVORFNfJHtQTn0gKz0gImxlc3MiCi1SUFJPVklERVNfJHtQTn0gKz0gIiBtYW4iCi0KLWRlZiBjb21wcmVzc19wa2coZCk6Ci0gICAgaWYgYmIudXRpbHMuY29udGFpbnMoIklOSEVSSVQiLCAiY29tcHJlc3NfZG9jIiwgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICAgY29tcHJlc3MgPSBkLmdldFZhcigiRE9DX0NPTVBSRVNTIikKLSAgICAgICAgIGlmIGNvbXByZXNzID09ICJneiI6Ci0gICAgICAgICAgICAgcmV0dXJuICJnemlwIgotICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAiYnoyIjoKLSAgICAgICAgICAgICByZXR1cm4gImJ6aXAyIgotICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAieHoiOgotICAgICAgICAgICAgIHJldHVybiAieHoiCi0gICAgcmV0dXJuICIiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke0Bjb21wcmVzc19wa2coZCl9IgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibWFuLWRiLnRpbWVyIG1hbi1kYi5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA/PSAiZGlzYWJsZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi45LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tZGIvbWFuLWRiXzIuOS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3MTQ5ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tZGIvbWFuLWRiXzIuOS4xLmJiCkBAIC0wLDAgKzEsNTkgQEAKK1NVTU1BUlkgPSAiQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIHN0YW5kYXJkIFVuaXggZG9jdW1lbnRhdGlvbiBzeXN0ZW0gYWNjZXNzZWQgdXNpbmcgdGhlIG1hbiBjb21tYW5kIgorSE9NRVBBR0UgPSAiaHR0cDovL21hbi1kYi5ub25nbnUub3JnLyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvQ09QWUlORy5MSUI7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvQ09QWUlORzttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEiCisKK1NSQ19VUkkgPSAiJHtTQVZBTk5BSF9OT05HTlVfTUlSUk9SfS9tYW4tZGIvbWFuLWRiLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly85OV9tYW5kYiBcCisgICAgICAgICAgIGZpbGU6Ly9tYW5fZGIuY29uZi1hdm9pZC1tdWx0aWxpYi1pbnN0YWxsLWZpbGUtY29uZmxpY3QucGF0Y2giCitTUkNfVVJJW21kNXN1bV0gPSAiNTkzZjRmMGEyNmFiNGY2NmY1YjgxY2Y2YzBjNzM2NGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmEzZDhhZmM1YzA5YTcyNjVhOGRhYmZhMGU3YzFmNGIzYWI5N2RmOWFiZjFmNjgxMGZhYThmMzAxMDU2Yzc0ZiIKKworREVQRU5EUyA9ICJsaWJwaXBlbGluZSBnZGJtIGdyb2ZmLW5hdGl2ZSBiYXNlLXBhc3N3ZCIKK1JERVBFTkRTXyR7UE59ICs9ICJiYXNlLXBhc3N3ZCIKKworIyB8IC91c3Ivc3JjL2RlYnVnL21hbi1kYi8yLjguMC1yMC9tYW4tZGItMi44LjAvc3JjL3doYXRpcy5jOjkzOTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX25sX21zZ19jYXRfY250cicKK1VTRV9OTFNfbGliYy1tdXNsID0gIm5vIgorCitpbmhlcml0IGdldHRleHQgcGtnY29uZmlnIGF1dG90b29scyBzeXN0ZW1kCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtcGFnZXI9bGVzcyAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSIKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vZ2wvbTQiCisKK2RvX2luc3RhbGwoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCSAgICAgICAgaW5zdGFsbCAtZCAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcworCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS85OV9tYW5kYiAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcworCWZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2xpYmMtbXVzbCgpIHsKKyAgICAgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke3ByZWZpeH0vbGliL3RtcGZpbGVzLmQiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L21hbi1kYi9saWJtYW4uc28gJHtsaWJkaXJ9LyR7QlBOfS9saWJtYW5kYi5zbyIKKworUkRFUEVORFNfJHtQTn0gKz0gImdyb2ZmIgorUlJFQ09NTUVORFNfJHtQTn0gKz0gImxlc3MiCitSUFJPVklERVNfJHtQTn0gKz0gIiBtYW4iCisKK2RlZiBjb21wcmVzc19wa2coZCk6CisgICAgaWYgYmIudXRpbHMuY29udGFpbnMoIklOSEVSSVQiLCAiY29tcHJlc3NfZG9jIiwgVHJ1ZSwgRmFsc2UsIGQpOgorICAgICAgICAgY29tcHJlc3MgPSBkLmdldFZhcigiRE9DX0NPTVBSRVNTIikKKyAgICAgICAgIGlmIGNvbXByZXNzID09ICJneiI6CisgICAgICAgICAgICAgcmV0dXJuICJnemlwIgorICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAiYnoyIjoKKyAgICAgICAgICAgICByZXR1cm4gImJ6aXAyIgorICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAieHoiOgorICAgICAgICAgICAgIHJldHVybiAieHoiCisgICAgcmV0dXJuICIiCisKK1JERVBFTkRTXyR7UE59ICs9ICIke0Bjb21wcmVzc19wa2coZCl9IgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibWFuLWRiLnRpbWVyIG1hbi1kYi5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRSA/PSAiZGlzYWJsZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNS4wMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNS4wMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg1MjVmNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzUuMDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIkxpbnV4IG1hbi1wYWdlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdCBkb2N1bWVudHMgdGhlIExpbnV4IGtlcm5lbCBhbmQgQyBsaWJyYXJ5IGludGVyZmFjZXMgdGhhdCBhcmUgZW1wbG95ZWQgYnkgdXNlciBwcm9ncmFtcyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvZG9jcy9tYW4tcGFnZXMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT03OTRmNzAxNjE3Y2MwM2ZlNTBjNTMyNTc2NjBkOGVjNCIKLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9kb2NzLyR7QlBOfS9BcmNoaXZlLyR7QlB9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjM4YWJlYWQ3NzZhNTA2MTA5ZTEyOGFiOTZiY2JiZTU4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA3MGJlZjc5NGM2ODI2YjNmYjM5NjVkMWEyZWZkYjQ2YzI1Y2IzN2MwNmM3MTU5ODdmODhhNTA5MDZjZDViNmYiCi0KLWluaGVyaXQgbWFucGFnZXMKLQotTUFOX1BLRyA9ICIke1BOfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIiIKLQotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKLWRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgotCi1kb19pbnN0YWxsKCkgewotICAgICAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci19Ci0KLSMgT25seSBkZWxpdmVyZXMgbWFuLXBhZ2VzIHNvIEZJTEVTXyR7UE59IGdldHMgZXZlcnl0aGluZwotRklMRVNfJHtQTn0tZG9jID0gIiIKLUZJTEVTXyR7UE59ID0gIiR7bWFuZGlyfS8qIgotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAicGFzc3dkLjUgZ2V0c3BuYW0uMyBjcnlwdC4zIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Bhc3N3ZC41XSA9ICIke21hbmRpcn0vbWFuNS9wYXNzd2QuNSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtnZXRzcG5hbS4zXSA9ICIke21hbmRpcn0vbWFuMy9nZXRzcG5hbS4zIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2NyeXB0LjNdID0gIiR7bWFuZGlyfS9tYW4zL2NyeXB0LjMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzUuMDUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzUuMDUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk1ODcyZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNS4wNS5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIkxpbnV4IG1hbi1wYWdlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdCBkb2N1bWVudHMgdGhlIExpbnV4IGtlcm5lbCBhbmQgQyBsaWJyYXJ5IGludGVyZmFjZXMgdGhhdCBhcmUgZW1wbG95ZWQgYnkgdXNlciBwcm9ncmFtcyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvZG9jcy9tYW4tcGFnZXMiCitMSUNFTlNFID0gIkdQTHYyKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT03OTRmNzAxNjE3Y2MwM2ZlNTBjNTMyNTc2NjBkOGVjNCIKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9kb2NzLyR7QlBOfS8ke0JQfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjZGFkNWRlYjE1MTE3ZTYwYTZkOWUzYTZiZGMwMzViNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0M2MzM2QyZWVhOWJhOTg5YzE4ZWVmOTAyOThjZjZkNTUyMWZmMDM4ZGViNTFjZGEwZWNkMGZkYzNjZWMyYjdkIgorCitpbmhlcml0IG1hbnBhZ2VzCisKK01BTl9QS0cgPSAiJHtQTn0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICIiCisKK2RvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCitkb19jb21waWxlW25vZXhlY10gPSAiMSIKKworZG9faW5zdGFsbCgpIHsKKyAgICAgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQorfQorCisjIE9ubHkgZGVsaXZlcmVzIG1hbi1wYWdlcyBzbyBGSUxFU18ke1BOfSBnZXRzIGV2ZXJ5dGhpbmcKK0ZJTEVTXyR7UE59LWRvYyA9ICIiCitGSUxFU18ke1BOfSA9ICIke21hbmRpcn0vKiIKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gInBhc3N3ZC41IGdldHNwbmFtLjMgY3J5cHQuMyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwYXNzd2QuNV0gPSAiJHttYW5kaXJ9L21hbjUvcGFzc3dkLjUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZ2V0c3BuYW0uM10gPSAiJHttYW5kaXJ9L21hbjMvZ2V0c3BuYW0uMyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtjcnlwdC4zXSA9ICIke21hbmRpcn0vbWFuMy9jcnlwdC4zIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvZmlsZXMvMDAwMS1UaWNrZXQtMzYyOS1jb25maWd1cmUuYWMtZHJvcC1idW5kbGVkLWdldHRleHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9maWxlcy8wMDAxLVRpY2tldC0zNjI5LWNvbmZpZ3VyZS5hYy1kcm9wLWJ1bmRsZWQtZ2V0dGV4dC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjM1NzM3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvZmlsZXMvMDAwMS1UaWNrZXQtMzYyOS1jb25maWd1cmUuYWMtZHJvcC1idW5kbGVkLWdldHRleHQucGF0Y2gKQEAgLTAsMCArMSwxMTAgQEAKK0Zyb20gMGQ2NzdhMDE0YTg3Yjk2OGQ3OWVlYTIzNTNhYzRlMzQyYjBmZDRjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNlcmdlaSBUcm9maW1vdmljaCA8c2x5Zm94QGdlbnRvby5vcmc+CitEYXRlOiBXZWQsIDExIFNlcCAyMDE5IDIyOjU4OjE4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFRpY2tldCAjMzYyOTogY29uZmlndXJlLmFjOiBkcm9wIGJ1bmRsZWQgZ2V0dGV4dAorCitCdW5kbGVkIGxpYmludGwgZGlkIG5vdCBzdXBwb3J0IGxpbmtpbmcgdG8gaW50ZXJuYWwgc3RhdGljCitsaWJyYXJpZXMgKGxpYm1jIGluIG91ciBjYXNlKTogZGlyZWN0bHkgc3BlY2lmaWVkIHN0YXRpYworbGlicmFyaWVzIGFyZSBub3QgcHVsbGVkIGJ5IGxpYnRvb2wgYW5kIGFyZSBub3QgdXNhYmxlIGZvcgorZHluYW1pYyBsaWJyYXJpZXMgYXMgUElDLXJlbGF0ZWQgZmxhZ3MgYXJlIG5vdCBwYXNzZWQgZm9yCitjb21waWxhdGlvbi4KKworVGhpcyByZW5kZXJzIGJ1bmRsZWQgbGliaW50bCBsaWJyYXJ5IHVudXNhYmxlLgorCitUaGUgY2hhbmdlIGRyb3BzIGxpYmludGwgYnVuZGxpbmcgc3VwcG9ydCBhbmQgYWx3YXlzIHJlbGllcworb24gZXh0ZXJuYWwgbGliaW50bCAob3IgZmFsbHMgYmFjayB0byBkaXNhYmxlZCBOTFMpLgorCitPbiBhIHJlbGF0ZWQgbm90ZSBnZXR0ZXh0LTAuMjAgZHJvcHMgc3VwcG9ydCBmb3IgYnVuZGxpbmcKK29yIGxpYmludGwgYW5kIHRoaXMgY2hhbmdlIHdpbGwgZWFzZSBtaWdyYXRpb24gdG8gbmV3ZXIgdmVyc2lvbi4KKworVGhlIGNoYW5nZSBpcyB0ZXN0ZWQgb24geDg2XzY0LWdlbnRvby1saW51eC1tdXNsOiBtYyBidWlsZHMKK2FuZCBsaW5rcyBhbGwgdGVzdHMgc3VjY2Vzc2Z1bGx5LiBBIGZldyB0ZXN0cyBmYWlsIGZvciBsYWNrCitvZiBOTFMgc3VwcG9ydC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL01pZG5pZ2h0Q29tbWFuZGVyL21jL2NvbW1pdC9mMzBlNmZmMjgzZjRiYzg2MTc3ZTQzNjBkZTk0ZGFkNzk0Njc4Mzk1XQorU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFRyb2ZpbW92aWNoIDxzbHlmb3hAZ2VudG9vLm9yZz4KK1NpZ25lZC1vZmYtYnk6IEFuZHJldyBCb3JvZGluIDxhYm9yb2RpbkB2bWFpbC5ydT4KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gICAgICAgICAgIHwgMiArLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICB8IDUgKysrLS0KKyBkb2MvZG94eWdlbi5jZmcgICAgICAgfCAyICstCisgbGliL01ha2VmaWxlLmFtICAgICAgIHwgMiArLQorIG00LmluY2x1ZGUvbWMtaTE4bi5tNCB8IDUgLS0tLS0KKyA1IGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCBhYzA1YTgzLi5mODZmNmVkIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMSw3ICsxLDcgQEAKKyAjIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9tYWtlIHRvIGNyZWF0ZSBNYWtlZmlsZS5pbi4KKyBBVVRPTUFLRV9PUFRJT05TID0gMS41CisgCistU1VCRElSUyA9IGludGwgcG8gbGliIHNyYyBkb2MgY29udHJpYiBtaXNjCisrU1VCRElSUyA9IHBvIGxpYiBzcmMgZG9jIGNvbnRyaWIgbWlzYworIAorIGlmIEhBVkVfVEVTVFMKKyAgICAgU1VCRElSUyArPSB0ZXN0cworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYTE5NDhmNi4uYmJjOWU3MSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMjcyLDcgKzI3Miw5IEBAIGRubCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgZG5sIEludGVybmF0aW9uYWxpemF0aW9uCisgZG5sICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAKKy1BTV9HTlVfR0VUVEVYVChbbm8tbGlidG9vbF0sIFtuZWVkLW5nZXR0ZXh0XSkKKytBQ19DSEVDS19GVU5DUyhbc2V0bG9jYWxlXSkKKysKKytBTV9HTlVfR0VUVEVYVChbZXh0ZXJuYWxdLCBbbmVlZC1uZ2V0dGV4dF0pCisgQU1fR05VX0dFVFRFWFRfVkVSU0lPTihbMC4xOC4xXSkKKyAKKyBtY19JMThOCitAQCAtNjgwLDcgKzY4Miw2IEBAIGRvYy9obHAvcGwvTWFrZWZpbGUKKyBkb2MvaGxwL3J1L01ha2VmaWxlCisgZG9jL2hscC9zci9NYWtlZmlsZQorIAorLWludGwvTWFrZWZpbGUKKyBwby9NYWtlZmlsZS5pbgorIF0pCisgCitkaWZmIC0tZ2l0IGEvZG9jL2RveHlnZW4uY2ZnIGIvZG9jL2RveHlnZW4uY2ZnCitpbmRleCAwN2JjOTczLi4xMTE4MDYyIDEwMDY0NAorLS0tIGEvZG9jL2RveHlnZW4uY2ZnCisrKysgYi9kb2MvZG94eWdlbi5jZmcKK0BAIC05MSw3ICs5MSw3IEBAIEZJTEVfUEFUVEVSTlMgICAgICAgICAgPSAqLmMgXAorIFJFQ1VSU0lWRSAgICAgICAgICAgICAgPSBZRVMKKyBFWENMVURFICAgICAgICAgICAgICAgID0KKyBFWENMVURFX1NZTUxJTktTICAgICAgID0gTk8KKy1FWENMVURFX1BBVFRFUk5TICAgICAgID0gKi9pbnRsLyogKi90ZXN0cy8qICovLmdpdC8qCisrRVhDTFVERV9QQVRURVJOUyAgICAgICA9ICovdGVzdHMvKiAqLy5naXQvKgorIEVYQ0xVREVfU1lNQk9MUyAgICAgICAgPQorIEVYQU1QTEVfUEFUSCAgICAgICAgICAgPSAkKFNSQ0RJUikKKyBFWEFNUExFX1BBVFRFUk5TICAgICAgID0KK2RpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUuYW0gYi9saWIvTWFrZWZpbGUuYW0KK2luZGV4IGM0NDhlMmQuLjQ1NWY5ZGQgMTAwNjQ0CistLS0gYS9saWIvTWFrZWZpbGUuYW0KKysrKyBiL2xpYi9NYWtlZmlsZS5hbQorQEAgLTc0LDQgKzc0LDQgQEAgZWxzZQorICAgICBsaWJtY19sYV9MSUJBREQgKz0gJChHTElCX0xJQlMpCisgZW5kaWYKKyAKKy1saWJtY19sYV9MSUJBREQgKz0gJChQQ1JFX0xJQlMpICQoTElCSUNPTlYpICQoTElCSU5UTCkKKytsaWJtY19sYV9MSUJBREQgKz0gJChQQ1JFX0xJQlMpCitkaWZmIC0tZ2l0IGEvbTQuaW5jbHVkZS9tYy1pMThuLm00IGIvbTQuaW5jbHVkZS9tYy1pMThuLm00CitpbmRleCBkZDEwZDAwLi5lYzA4MzI0IDEwMDY0NAorLS0tIGEvbTQuaW5jbHVkZS9tYy1pMThuLm00CisrKysgYi9tNC5pbmNsdWRlL21jLWkxOG4ubTQKK0BAIC04LDExICs4LDYgQEAgZG5sIEBsaWNlbnNlIEdQTAorIGRubCBAY29weXJpZ2h0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorIEFDX0RFRlVOKFttY19JMThOXSxbCistCistICAgIGlmIHRlc3QgIngkVVNFX0lOQ0xVREVEX0xJQklOVEwiID0geHllczsgdGhlbgorLSAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSVwkKHRvcF9idWlsZGRpcikvaW50bCAtSVwkKHRvcF9zcmNkaXIpL2ludGwiCistICAgIGZpCistCisgICAgIGRubCBVc2VyIHZpc2libGUgc3VwcG9ydCBmb3IgY2hhcnNldCBjb252ZXJzaW9uLgorICAgICBBQ19BUkdfRU5BQkxFKFtjaGFyc2V0XSwKKyAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1jaGFyc2V0XSwgW1N1cHBvcnQgZm9yIGNoYXJzZXQgc2VsZWN0aW9uIGFuZCBjb252ZXJzaW9uIEA8OkB5ZXNAOj5AXSkpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9maWxlcy9ub21hbmRhdGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9maWxlcy9ub21hbmRhdGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhiZDczYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL2ZpbGVzL25vbWFuZGF0ZS5wYXRjaApAQCAtMCwwICsxLDIxIEBACitUaGUgbWFuIHBhZ2UgZGF0ZSBjYW4gdmFyeSBkZXBlbmRpbmcgdXBvbiB0aGUgaG9zdCBwZXJsLCBlLmcuIGluIFJ1c3NpYW4KK3NvbWUgdmVyc2lvbnMgcHJpbnQgJ9C40Y7QvdGPJywgb3RoZXJzICfQmNGO0L3RjCcgb3IgUG9saXNoICdjemVyd2NhJyBvciAnY3plcndpZWMnLgorUmF0aGVyIHRoYW4gZGVwZW5kIHVwb24gcGVybC1uYXRpdmUgdG8gZml4IHRoaXMsIGp1c3QgcmVtb3ZlIHRoZSBkYXRlIGZyb20gCit0aGUgbWFucGFnZXMuCisKK1JQIDIwMjAvMi80CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2ZpY2ljIHJlcHJvZHVjaWJpbGl0eSB3b3JrYXJvdW5kXQorU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKK0luZGV4OiBtYy00LjguMjMvZG9jL21hbi9kYXRlLW9mLW1hbi1pbmNsdWRlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbWMtNC44LjIzLm9yaWcvZG9jL21hbi9kYXRlLW9mLW1hbi1pbmNsdWRlLmFtCisrKysgbWMtNC44LjIzL2RvYy9tYW4vZGF0ZS1vZi1tYW4taW5jbHVkZS5hbQorQEAgLTEsNSArMSw1IEBACisgU0VEX1BBUkFNRVRFUlMgPSBcCistCS1lICJzLyVEQVRFX09GX01BTl9QQUdFJS8kJHtNQU5fREFURX0vZyIgXAorKwktZSAicy8lREFURV9PRl9NQU5fUEFHRSUvL2ciIFwKKyAJLWUgInMvJURJU1RSX1ZFUlNJT04lL0BESVNUUl9WRVJTSU9OQC9nIiBcCisgCS1lICJzeyVwcmVmaXgle0BwcmVmaXhAe2ciIFwKKyAJLWUgInN7JXN5c2NvbmZkaXIle0BzeXNjb25mZGlyQHtnIiBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMjMuYmIKaW5kZXggNzFmNjFiNC4uZWFkMzQ4YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjIzLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4yMy5iYgpAQCAtNCwxMSArNCwxNCBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjcwYmJhZmUzNjBlNzNmOTg0MGJkNzk4MTYyMWY5YzIiCiBTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCiBERVBFTkRTID0gIm5jdXJzZXMgZ2xpYi0yLjAgdXRpbC1saW51eCIKLVJERVBFTkRTXyR7UE59ID0gIm5jdXJzZXMtdGVybWluZm8iCitSREVQRU5EU18ke1BOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvLWJhc2UiCitSUkVDT01NRU5EU18ke1BOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvIgogCiBTUkNfVVJJID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy9kb3dubG9hZHMvJHtCUE59LSR7UFZ9LnRhci5iejIgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1tYy1yZXBsYWNlLXBlcmwtdy13aXRoLXVzZS13YXJuaW5ncy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1vcHRpb24tdG8tY29udHJvbC1jb25maWd1cmUtYXJncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVRpY2tldC0zNjI5LWNvbmZpZ3VyZS5hYy1kcm9wLWJ1bmRsZWQtZ2V0dGV4dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ub21hbmRhdGUucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiMTUyOTI3YWMyOWNmMGU2MWQ3ZDAxOWYyNjFiYjdkODkiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjM4YzQ1NTI1NDVkY2YzMDY1MzU5YmQ1MDc1M2FiYmIxNTBjMWIyMmVjNWEzNmVhYTAyYzgyODA4MjkzMjY3ZCIKQEAgLTI3LDYgKzMwLDcgQEAKIENBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BFUkw9Jy91c3IvYmluL2VudiBwZXJsJyIKIENBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BZVEhPTj0nL3Vzci9iaW4vZW52IHB5dGhvbiciCiBDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9HUkVQPScvdXNyL2Jpbi9lbnYgZ3JlcCciCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAibWNfY3ZfaGF2ZV96aXBpbmZvPXllcyIKIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogCXNlZCAtaSAtZSAnMXMsIyEuKnBlcmwsIyEke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtsaWJleGVjZGlyfS9tYy9leHRmcy5kLyoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL3J1bi1wdGVzdAppbmRleCBlNGE5YzJiLi5mYWU4MDcxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvcnVuLXB0ZXN0CkBAIC0xLDQgKzEsNyBAQAogIyEvYmluL3NoCiAKK21rZGlyIC1wIC9tZGFkbS10ZXN0aW5nLWRpcgogIyBtYWtlIHRoZSB0ZXN0IGNvbnRpbnVlIHRvIGV4ZWN1dGUgZXZlbiBvbmUgZmFpbAotLi90ZXN0IC0ta2VlcC1nb2luZworZGlyPS4gLi90ZXN0IC0ta2VlcC1nb2luZyAtLWRpc2FibGUtaW50ZWdyaXR5CisKK3JtIC1yZiAvbWRhZG0tdGVzdGluZy1kaXIvKgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vbWRhZG1fNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vbWRhZG1fNC4xLmJiCmluZGV4IDY0ZjUxOWUuLjQwYzUyNzMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL21kYWRtXzQuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9tZGFkbV80LjEuYmIKQEAgLTc1LDcgKzc1LDggQEAKIGRvX2luc3RhbGxfcHRlc3QoKSB7CiAJY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgJHtTfS90ZXN0cyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cwogCWNwICR7U30vdGVzdCAke0R9JHtQVEVTVF9QQVRIfQotCXNlZCAtZSAncyFzbGVlcCAwLiohc2xlZXAgMSFnOyBzIS92YXIvdG1wIS8hZycgLWkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCXNlZCAtZSAncyFzbGVlcCAwLiohc2xlZXAgMSFnOyBzIS92YXIvdG1wIS9tZGFkbS10ZXN0aW5nLWRpciFnJyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJc2VkIC1lICdzIS92YXIvdG1wIS9tZGFkbS10ZXN0aW5nLWRpciFnJyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8qCiAgICAgICAgIHNlZCAtaSAtZSAnL2VjaG8gLW5lICIkX3NjcmlwdC4uLiAiL2QnIFwKICAgICAgICAgICAgICAgIC1lICdzL2VjaG8gInN1Y2NlZWRlZCIvZWNobyAtZSAiUEFTUzogJF9zY3JpcHQiL2cnIFwKICAgICAgICAgICAgICAgIC1lICcvc2F2ZV9sb2cgZmFpbC9OOyAvX2ZhaWw9MS9pXFx0XHRcdGVjaG8gLW5lICJGQUlMOiAkX3NjcmlwdCInIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21zbXRwL21zbXRwXzEuOC42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbXNtdHAvbXNtdHBfMS44LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwOTE0NGIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbXNtdHAvbXNtdHBfMS44LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIm1zbXRwIGlzIGFuIFNNVFAgY2xpZW50IgotREVTQ1JJUFRJT04gPSAiQSBzZW5kbWFpbCByZXBsYWNlbWVudCBmb3IgdXNlIGluIE1UQXMgbGlrZSBtdXR0IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9tYXJsYW0uZGUvbXNtdHAvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLUxJQ0VOU0UgPSAiR1BMdjMiCi1ERVBFTkRTID0gInpsaWIgZ251dGxzIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vbWFybGFtLmRlL21zbXRwL2Rvd25sb2FkLyIKLQotU1JDX1VSSSA9ICJodHRwczovL21hcmxhbS5kZS8ke0JQTn0vcmVsZWFzZXMvJHtCUH0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImFkZmY0YTk5OTJlMWI0N2FhNTQ2OGI5NzQ1NTAzMDRlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2MjVmMTQ3NDMwYzY1YmE4NTI3ZjUyYzRmZTVkNGQzMzU1MmQzYzBmYjZkNzkzYmE3ZGY4MTlhM2IzMDQyZTEiCi0KLWluaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbGlic2VjcmV0IC0td2l0aG91dC1saWJnc2FzbCAtLXdpdGhvdXQtbGliaWRuIgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJzZW5kbWFpbCIKLSMgL3Vzci9saWIvc2VuZG1pYWwgaXMgcmVxdWlyZWQgYnkgTFNCIGNvcmUgdGVzdAotQUxURVJOQVRJVkVfJHtQTn1fbGludXhzdGRiYXNlID0gInNlbmRtYWlsIHVzci1saWItc2VuZG1haWwiCi1BTFRFUk5BVElWRV9UQVJHRVRbc2VuZG1haWxdID0gIiR7YmluZGlyfS9tc210cCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzZW5kbWFpbF0gPSAiJHtzYmluZGlyfS9zZW5kbWFpbCIKLUFMVEVSTkFUSVZFX1RBUkdFVFt1c3ItbGliLXNlbmRtYWlsXSA9ICIke2JpbmRpcn0vbXNtdHAiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbdXNyLWxpYi1zZW5kbWFpbF0gPSAiL3Vzci9saWIvc2VuZG1haWwiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tc210cC9tc210cF8xLjguOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21zbXRwL21zbXRwXzEuOC44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhMzU5YTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tc210cC9tc210cF8xLjguOC5iYgpAQCAtMCwwICsxLDI4IEBACitTVU1NQVJZID0gIm1zbXRwIGlzIGFuIFNNVFAgY2xpZW50IgorREVTQ1JJUFRJT04gPSAiQSBzZW5kbWFpbCByZXBsYWNlbWVudCBmb3IgdXNlIGluIE1UQXMgbGlrZSBtdXR0IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9tYXJsYW0uZGUvbXNtdHAvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiR1BMdjMiCitERVBFTkRTID0gInpsaWIgZ251dGxzIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vbWFybGFtLmRlL21zbXRwL2Rvd25sb2FkLyIKKworU1JDX1VSSSA9ICJodHRwczovL21hcmxhbS5kZS8ke0JQTn0vcmVsZWFzZXMvJHtCUH0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjAxNmU0MzJkMTJlMTJkYzVkNzM5NjBlMmJjNjdmMGZiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVjY2I1M2U0OGYwMjVmN2U2ZjYwMjEwMzE2ZGY2MWNmNjA5N2E0OTE3MjgzNDFjMWUzNzVmYzFhY2M2NDU5ZTUiCisKK2luaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcyBwa2djb25maWcKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbGlic2VjcmV0IC0td2l0aG91dC1saWJnc2FzbCAtLXdpdGhvdXQtbGliaWRuIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJzZW5kbWFpbCIKKyMgL3Vzci9saWIvc2VuZG1pYWwgaXMgcmVxdWlyZWQgYnkgTFNCIGNvcmUgdGVzdAorQUxURVJOQVRJVkVfJHtQTn1fbGludXhzdGRiYXNlID0gInNlbmRtYWlsIHVzci1saWItc2VuZG1haWwiCitBTFRFUk5BVElWRV9UQVJHRVRbc2VuZG1haWxdID0gIiR7YmluZGlyfS9tc210cCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzZW5kbWFpbF0gPSAiJHtzYmluZGlyfS9zZW5kbWFpbCIKK0FMVEVSTkFUSVZFX1RBUkdFVFt1c3ItbGliLXNlbmRtYWlsXSA9ICIke2JpbmRpcn0vbXNtdHAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdXNyLWxpYi1zZW5kbWFpbF0gPSAiL3Vzci9saWIvc2VuZG1haWwiCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL2ZpeHNlcGJ1aWxkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9maXhzZXBidWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE5YzNiMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL2ZpeHNlcGJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotRml4IHRoZSBidWlsZCBlcnJvciB3aGVuIGEgc2VwYXJhdGUgYnVpbGQgZGlyZWN0b3J5IGlzIHVzZWQ6Ci0KLU1ha2luZyBpbnN0YWxsIGluIHh0ZXN0c21ha2VbMV06IEVudGVyaW5nIGRpcmVjdG9yeSBgL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkMS90bXAvd29yay9pNTg2LXBva3ktbGludXgvbGlicGFtLzEuMS42LXIyL2J1aWxkL3h0ZXN0cycvdXNyL2Jpbi9pbnN0YWxsIC1jIC1kIC9tZWRpYS9idWlsZDEvcG9reS9idWlsZDEvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L2xpYnBhbS8xLjEuNi1yMi9pbWFnZS91c3Ivc2hhcmUvTGludXgtUEFNL3h0ZXN0c2ZvciBmaWxlIGluIHJ1bi14dGVzdHMuc2ggdHN0LXBhbV9kaXNwYXRjaDEucGFtZCB0c3QtcGFtX2Rpc3BhdGNoMi5wYW1kIHRzdC1wYW1fZGlzcGF0Y2gzLnBhbWQgdHN0LXBhbV9kaXNwYXRjaDQucGFtZCB0c3QtcGFtX2Rpc3BhdGNoNS5wYW1kIHRzdC1wYW1fY3JhY2tsaWIxLnBhbWQgdHN0LXBhbV9jcmFja2xpYjIucGFtZCB0c3QtcGFtX3VuaXgxLnBhbWQgdHN0LXBhbV91bml4Mi5wYW1kIHRzdC1wYW1fdW5peDMucGFtZCB0c3QtcGFtX3VuaXg0LnBhbWQgdHN0LXBhbV91bml4MS5zaCB0c3QtcGFtX3VuaXgyLnNoIHRzdC1wYW1fdW5peDMuc2ggdHN0LXBhbV91bml4NC5zaCBhY2Nlc3MuY29uZiB0c3QtcGFtX2FjY2VzczEucGFtZCB0c3QtcGFtX2FjY2VzczEuc2ggdHN0LXBhbV9hY2Nlc3MyLnBhbWQgdHN0LXBhbV9hY2Nlc3MyLnNoIHRzdC1wYW1fYWNjZXNzMy5wYW1kIHRzdC1wYW1fYWNjZXNzMy5zaCB0c3QtcGFtX2FjY2VzczQucGFtZCB0c3QtcGFtX2FjY2VzczQuc2ggbGltaXRzLmNvbmYgdHN0LXBhbV9saW1pdHMxLnBhbWQgdHN0LXBhbV9saW1pdHMxLnNoIHRzdC1wYW1fc3VjY2VlZF9pZjEucGFtZCB0c3QtcGFtX3N1Y2NlZWRfaWYxLnNoIGdyb3VwLmNvbmYgdHN0LXBhbV9ncm91cDEucGFtZCB0c3QtcGFtX2dyb3VwMS5zaCB0c3QtcGFtX2F1dGhmYWlsLnBhbWQgdHN0LXBhbV9hdXRoc3VjY2VlZC5wYW1kIHRzdC1wYW1fc3Vic3RhY2sxLnBhbWQgdHN0LXBhbV9zdWJzdGFjazFhLnBhbWQgdHN0LXBhbV9zdWJzdGFjazEuc2ggdHN0LXBhbV9zdWJzdGFjazIucGFtZCB0c3QtcGFtX3N1YnN0YWNrMmEucGFtZCB0c3QtcGFtX3N1YnN0YWNrMi5zaCB0c3QtcGFtX3N1YnN0YWNrMy5wYW1kIHRzdC1wYW1fc3Vic3RhY2szYS5wYW1kIHRzdC1wYW1fc3Vic3RhY2szLnNoIHRzdC1wYW1fc3Vic3RhY2s0LnBhbWQgdHN0LXBhbV9zdWJzdGFjazRhLnBhbWQgdHN0LXBhbV9zdWJzdGFjazQuc2ggdHN0LXBhbV9zdWJzdGFjazUucGFtZCB0c3QtcGFtX3N1YnN0YWNrNWEucGFtZCB0c3QtcGFtX3N1YnN0YWNrNS5zaCB0c3QtcGFtX2Fzc2VtYmxlX2xpbmUxLnBhbWQgdHN0LXBhbV9hc3NlbWJsZV9saW5lMS5zaCB0c3QtcGFtX3B3aGlzdG9yeTEucGFtZCB0c3QtcGFtX3B3aGlzdG9yeTEuc2ggdHN0LXBhbV90aW1lMS5wYW1kIHRpbWUuY29uZiA7IGRvIFwvdXNyL2Jpbi9pbnN0YWxsIC1jICRmaWxlIC9tZWRpYS9idWlsZDEvcG9reS9idWlsZDEvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L2xpYnBhbS8xLjEuNi1yMi9pbWFnZS91c3Ivc2hhcmUvTGludXgtUEFNL3h0ZXN0cyA7IFwJZG9uZQotL3Vzci9iaW4vaW5zdGFsbDogY2Fubm90IHN0YXQgYHJ1bi14dGVzdHMuc2gnOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0vdXNyL2Jpbi9pbnN0YWxsOiBjYW5ub3Qgc3RhdCBgdHN0LXBhbV9kaXNwYXRjaDEucGFtZCc6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLS91c3IvYmluL2luc3RhbGw6IGNhbm5vdCBzdGF0IGB0c3QtcGFtX2Rpc3BhdGNoMi5wYW1kJzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotUlAgMjAxMy8wMy8yMQotCi1JbmRleDogTGludXgtUEFNLTEuMS42L3h0ZXN0cy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIExpbnV4LVBBTS0xLjEuNi5vcmlnL3h0ZXN0cy9NYWtlZmlsZS5hbQkyMDEzLTAzLTA4IDEyOjI2OjMwLjM2MDI2NjAwMCArMDAwMAotKysrIExpbnV4LVBBTS0xLjEuNi94dGVzdHMvTWFrZWZpbGUuYW0JMjAxMy0wMy0yMSAxMTozOTo1OC41NTcxNjY2NTAgKzAwMDAKLUBAIC01OSw3ICs1OSw3IEBACi0gaW5zdGFsbF94dGVzdHM6Ci0gCSQoSU5TVEFMTCkgLWQgJChERVNURElSKSQocGtnZGF0YWRpcikveHRlc3RzCi0gCWZvciBmaWxlIGluICQoRVhUUkFfRElTVCkgOyBkbyBcCi0tCQkkKElOU1RBTEwpICQkZmlsZSAkKERFU1RESVIpJChwa2dkYXRhZGlyKS94dGVzdHMgOyBcCi0rCQkkKElOU1RBTEwpICQoc3JjZGlyKS8kJGZpbGUgJChERVNURElSKSQocGtnZGF0YWRpcikveHRlc3RzIDsgXAotIAlkb25lCi0gCWZvciBmaWxlIGluICQoWFRFU1RTKTsgZG8gXAotIAkJJChJTlNUQUxMKSAubGlicy8kJGZpbGUgJChERVNURElSKSQocGtnZGF0YWRpcikveHRlc3RzIDsgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9saWJwYW0teHRlc3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9saWJwYW0teHRlc3RzLnBhdGNoCmluZGV4IDdlZGY2NmYuLmVhMTQ1ODkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vbGlicGFtLXh0ZXN0cy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL2xpYnBhbS14dGVzdHMucGF0Y2gKQEAgLTI4LDcgKzI4LDcgQEAKICtpbnN0YWxsX3h0ZXN0czoKICsJJChJTlNUQUxMKSAtZCAkKERFU1RESVIpJChwa2dkYXRhZGlyKS94dGVzdHMKICsJZm9yIGZpbGUgaW4gJChFWFRSQV9ESVNUKSA7IGRvIFwKLSsJCSQoSU5TVEFMTCkgJCRmaWxlICQoREVTVERJUikkKHBrZ2RhdGFkaXIpL3h0ZXN0cyA7IFwKKysJCSQoSU5TVEFMTCkgJChzcmNkaXIpLyQkZmlsZSAkKERFU1RESVIpJChwa2dkYXRhZGlyKS94dGVzdHMgOyBcCiArCWRvbmUKICsJZm9yIGZpbGUgaW4gJChYVEVTVFMpOyBkbyBcCiArCQkkKElOU1RBTEwpIC5saWJzLyQkZmlsZSAkKERFU1RESVIpJChwa2dkYXRhZGlyKS94dGVzdHMgOyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtXzEuMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbV8xLjMuMS5iYgppbmRleCAxMTk0OTMzLi5iYzcyYWZlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtXzEuMy4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW1fMS4zLjEuYmIKQEAgLTEsMyArMSw0IEBACitESVNBQkxFX1NUQVRJQyA9ICIiCiBTVU1NQVJZID0gIkxpbnV4LVBBTSAoUGx1Z2dhYmxlIEF1dGhlbnRpY2F0aW9uIE1vZHVsZXMpIgogREVTQ1JJUFRJT04gPSAiTGludXgtUEFNIChQbHVnZ2FibGUgQXV0aGVudGljYXRpb24gTW9kdWxlcyBmb3IgTGludXgpLCBhIGZsZXhpYmxlIG1lY2hhbmlzbSBmb3IgYXV0aGVudGljYXRpbmcgdXNlcnMiCiBIT01FUEFHRSA9ICJodHRwczovL2ZlZG9yYWhvc3RlZC5vcmcvbGludXgtcGFtLyIKQEAgLTIwLDcgKzIxLDYgQEAKICAgICAgICAgICAgZmlsZTovL3BhbS5kL2NvbW1vbi1zZXNzaW9uLW5vbmludGVyYWN0aXZlIFwKICAgICAgICAgICAgZmlsZTovL3BhbS5kL290aGVyIFwKICAgICAgICAgICAgZmlsZTovL2xpYnBhbS14dGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4c2VwYnVpbGQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcGFtLXNlY3VyaXR5LWFic3RyYWN0LXNlY3VyZXR0eS1oYW5kbGluZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9wYW0tdW5peC1udWxsb2stc2VjdXJlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2NyeXB0X2NvbmZpZ3VyZS5wYXRjaCBcCkBAIC0zNSw4ICszNSw3IEBACiAKIERFUEVORFMgPSAiYmlzb24tbmF0aXZlIGZsZXggZmxleC1uYXRpdmUgY3JhY2tsaWIgbGlieG1sMi1uYXRpdmUgdmlydHVhbC9jcnlwdCIKIAotRVhUUkFfT0VDT05GID0gIi0td2l0aC1kYi11bmlxdWVuYW1lPV9wYW0gXAotICAgICAgICAgICAgICAgIC0taW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9L3NlY3VyaXR5IFwKK0VYVFJBX09FQ09ORiA9ICItLWluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfS9zZWN1cml0eSBcCiAgICAgICAgICAgICAgICAgLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0gXAogICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uaXMgXAogICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1yZWdlbmVyYXRlLWRvY3UgXApAQCAtNDgsNyArNDcsOSBAQAogCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwogCitQQUNLQUdFQ09ORklHID8/PSAiIgogUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLS1lbmFibGUtYXVkaXQsLS1kaXNhYmxlLWF1ZGl0LGF1ZGl0LCIKK1BBQ0tBR0VDT05GSUdbdXNlcmRiXSA9ICItLWVuYWJsZS1kYj1kYiwtLWVuYWJsZS1kYj1ubyxkYiwiCiAKIFBBQ0tBR0VTICs9ICIke1BOfS1ydW50aW1lICR7UE59LXh0ZXN0cyIKIEZJTEVTXyR7UE59ID0gIiR7YmFzZV9saWJkaXJ9L2xpYioke1NPTElCU30iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1JbmNsdWRlLWZjbnRsLmgtaW4tcGxhdGZvcm1fZGVmcy5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtSW5jbHVkZS1mY250bC5oLWluLXBsYXRmb3JtX2RlZnMuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDA3MDEyNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1JbmNsdWRlLWZjbnRsLmgtaW4tcGxhdGZvcm1fZGVmcy5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSBhMzg3NzExNWYxOTU2OTQ5MDk2ZDc3YWNhNWE3MDNhNDdlZDY4Mzk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVsaXggSmFuZGEgPGZlbGl4LmphbmRhQHBvc3Rlby5kZT4KLURhdGU6IFN1biwgMyBNYXkgMjAxNSAxMDozMzozMSArMDIwMAotU3ViamVjdDogW1BBVENIXSBsaWJwYXJ0ZWQvZnMveGZzL3BsYXRmb3JtX2RlZnMuaDogSW5jbHVkZSA8ZmNudGwuaD4gZm9yCi0gbG9mZl90Ci0KLVRoaXMgaXMgbmVlZGVkIGZvciBjb21waWxhdGlvbiB3aXRoIG11c2wgbGliYwotCi1TdWdnZXN0ZWQtYnk6IFRyYXZpcyBUaWxsZXkgPHR0aWxsZXlAZ21haWwuY29tPgotCi1TaWduZWQtb2ZmLWJ5OiBCcmlhbiBDLiBMYW5lIDxiY2xAcmVkaGF0LmNvbT4KLS0tLQotIGxpYnBhcnRlZC9mcy94ZnMvcGxhdGZvcm1fZGVmcy5oIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9saWJwYXJ0ZWQvZnMveGZzL3BsYXRmb3JtX2RlZnMuaCBiL2xpYnBhcnRlZC9mcy94ZnMvcGxhdGZvcm1fZGVmcy5oCi1pbmRleCAyYjU1NzUyLi5hNmVjOGZiIDEwMDY0NAotLS0tIGEvbGlicGFydGVkL2ZzL3hmcy9wbGF0Zm9ybV9kZWZzLmgKLSsrKyBiL2xpYnBhcnRlZC9mcy94ZnMvcGxhdGZvcm1fZGVmcy5oCi1AQCAtMzgsNiArMzgsNyBAQAotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGVuZGlhbi5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtTW92ZS1weXRob24taGVscGVyLXNjcmlwdHMtdXNlZC1vbmx5LWluLXRlc3RzLXRvLVB5dC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLU1vdmUtcHl0aG9uLWhlbHBlci1zY3JpcHRzLXVzZWQtb25seS1pbi10ZXN0cy10by1QeXQucGF0Y2gKaW5kZXggNDI4YjE0ZS4uODI5YzBjOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtTW92ZS1weXRob24taGVscGVyLXNjcmlwdHMtdXNlZC1vbmx5LWluLXRlc3RzLXRvLVB5dC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1Nb3ZlLXB5dGhvbi1oZWxwZXItc2NyaXB0cy11c2VkLW9ubHktaW4tdGVzdHMtdG8tUHl0LnBhdGNoCkBAIC0xLDE3ICsxLDE4IEBACi1Gcm9tIDZlODJhZjU0NzE0MzkyZGNkZjc0YThhZWRhYWU3ZGU3ZDBhZjEwODAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGRkYmVmZDgwZDc0YzNiYWFhZTMyODMzMjQ1OGRiNDQ3ZTE2NjYyNDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMjcgQXByIDIwMTcgMTY6Mzc6MjQgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gTW92ZSBweXRob24gaGVscGVyIHNjcmlwdHMgKHVzZWQgb25seSBpbiB0ZXN0cykgdG8gUHl0aG9uIDMKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgdGVzdHMvZ3B0LWhlYWRlci1tb3ZlIHwgMiArLQotIHRlc3RzL21zZG9zLW92ZXJsYXAgICB8IDQgKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorIHRlc3RzL21zZG9zLW92ZXJsYXAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3Rlc3RzL2dwdC1oZWFkZXItbW92ZSBiL3Rlc3RzL2dwdC1oZWFkZXItbW92ZQotaW5kZXggMDVjZGM2NS4uM2NiY2I3ZSAxMDA3NTUKK2luZGV4IDNkZGE1Y2IuLmEyYjk1MDggMTAwNzU1CiAtLS0gYS90ZXN0cy9ncHQtaGVhZGVyLW1vdmUKICsrKyBiL3Rlc3RzL2dwdC1oZWFkZXItbW92ZQogQEAgLTEsNCArMSw0IEBACkBAIC0yMSw3ICsyMiw3IEBACiAgIyBvcGVuIGltZyBmaWxlLCBzdWJ0cmFjdCAzMyBmcm9tIGFsdGxiYSBhZGRyZXNzLCBhbmQgbW92ZSB0aGUgbGFzdCAzMyBzZWN0b3JzCiAgIyBiYWNrIGJ5IDMzIHNlY3RvcnMKIGRpZmYgLS1naXQgYS90ZXN0cy9tc2Rvcy1vdmVybGFwIGIvdGVzdHMvbXNkb3Mtb3ZlcmxhcAotaW5kZXggNWJkZGZiMC4uM2RlN2QyZSAxMDA3NTUKK2luZGV4IGQ2YWU4ZDYuLjJjNjc0N2IgMTAwNzU1CiAtLS0gYS90ZXN0cy9tc2Rvcy1vdmVybGFwCiArKysgYi90ZXN0cy9tc2Rvcy1vdmVybGFwCiBAQCAtMSw0ICsxLDQgQEAKQEAgLTMwLDE1ICszMSwzIEBACiAgIiIiCiAgICAgIFdyaXRlIGFuIG92ZXJsYXBwaW5nIHBhcnRpdGlvbiB0byBhIG1zZG9zIGRpc2sKICAKLUBAIC0xNCw3ICsxNCw3IEBAIEJBRF9FTlRSWSA9ICgweDcyLCAweGY1LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotIE9GRlNFVCA9IDB4MWI4Ci0gCi0gaWYgbGVuKHN5cy5hcmd2KSA8IDI6Ci0tICAgIHByaW50ICIlczogPGltYWdlIG9yIGRldmljZT4iCi0rICAgIHByaW50KCIlczogPGltYWdlIG9yIGRldmljZT4iKQotICAgICBzeXMuZXhpdCgxKQotIAotIGRhdGEgPSAiIi5qb2luKGNocihjKSBmb3IgYyBpbiBCQURfRU5UUlkpCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTFhNGJhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSBiOTU2NWRjMmZlMGM0ZjdkYWFlYzkxYjdlODNiYzczMTNkZWUyZjRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTMgQXByIDIwMTUgMTc6MDI6MTMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gVW5zZXQgbmVlZF9jaGFyc2V0X2FsaWFzIHdoZW4gYnVpbGRpbmcgZm9yIG11c2wKLQotbG9jYWxjaGFyc2V0IHVzZXMgYWNfY3ZfZ251X2xpYnJhcnlfMl8xIGZyb20gZ2xpYmMyMS5tNAotd2hpY2ggYWN0dWFsbHkgc2hvdWRsIGJlIGZpeGVkIGluIGdudWxpYiBhbmQgdGhlbiBhbGwgZG93bnN0cmVhbQotcHJvamVjdHMgd2lsbCBnZXQgaXQgZXZlbnR1YWxseS4gRm9yIG5vdyB3ZSBhcHBseSB0aGUgZml4IHRvCi1jb3JldXRpbHMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsaWIvZ251bGliLm1rIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliL2dudWxpYi5tayBiL2xpYi9nbnVsaWIubWsKLWluZGV4IGUxZDc0ZGIuLmMwZTkyZGQgMTAwNjQ0Ci0tLS0gYS9saWIvZ251bGliLm1rCi0rKysgYi9saWIvZ251bGliLm1rCi1AQCAtMTg4Miw3ICsxODgyLDcgQEAgaW5zdGFsbC1leGVjLWxvY2FsY2hhcnNldDogYWxsLWxvY2FsCi0gCSAgY2FzZSAnJChob3N0X29zKScgaW4gXAotIAkgICAgZGFyd2luWzU2XSopIFwKLSAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPXRydWUgOzsgXAotLQkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikgXAotKwkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKiB8IGxpbnV4LW11c2wqKSBcCi0gCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz1mYWxzZSA7OyBcCi0gCSAgICAqKSBcCi0gCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtbGlicGFydGVkLVVzZS1yZWFkLW9ubHktd2hlbi1wcm9iaW5nLWRldmljZXMtb24tbGludS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLWxpYnBhcnRlZC1Vc2UtcmVhZC1vbmx5LXdoZW4tcHJvYmluZy1kZXZpY2VzLW9uLWxpbnUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5MTA3NjIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtbGlicGFydGVkLVVzZS1yZWFkLW9ubHktd2hlbi1wcm9iaW5nLWRldmljZXMtb24tbGludS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyMiArMCwwIEBACi1Gcm9tIDg0MzIyNWFhOWQ1MDc3YmViZGIwOGJiZjk2OTljMDJhZWMwYjgzZWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiQnJpYW4gQy4gTGFuZSIgPGJjbEByZWRoYXQuY29tPgotRGF0ZTogVHVlLCAyNiBTZXAgMjAxNyAwODowNDo1OCArMDAwMAotU3ViamVjdDogW1BBVENIXSBsaWJwYXJ0ZWQ6IFVzZSByZWFkIG9ubHkgd2hlbiBwcm9iaW5nIGRldmljZXMgb24gbGludXgKLQotICgjMTI0NTE0NCkKLQotV2hlbiBhIGRldmljZSBpcyBvcGVuZWQgZm9yIFJXIGNsb3NpbmcgaXQgY2FuIHRyaWdnZXIgb3RoZXIgYWN0aW9ucywKLWxpa2UgdWRldiBzY2FubmluZyBpdCBmb3IgcGFydGl0aW9uIGNoYW5nZXMuIFVzZSByZWFkIG9ubHkgZm9yIHRoZQotaW5pdF8qIG1ldGhvZHMgYW5kIFJXIGZvciBhY3R1YWwgY2hhbmdlcyB0byB0aGUgZGV2aWNlLgotCi1UaGlzIGFkZHMgX2RldmljZV9vcGVuIHdoaWNoIHRha2VzIG1vZGUgZmxhZ3MgYXMgYW4gYXJndW1lbnQgYW5kIHR1cm5zCi1saW51eF9vcGVuIGludG8gYSB3cmFwcGVyIGZvciBpdCB3aXRoIFJXX01PREUuCi0KLV9kZXZpY2Vfb3Blbl9ybyBpcyBhZGRlZCB0byBvcGVuIHRoZSBkZXZpY2Ugd2l0aCBSRF9NT0RFIGFuZCBpbmNyZW1lbnQKLXRoZSBvcGVuX2NvdW50ZXIuIFRoaXMgaXMgdXNlZCBpbiB0aGUgaW5pdF8qIGZ1bmN0aW9ucy4KLQotX2RldmljZV9jbG9zZSBpcyBhIHdyYXBwZXIgYXJvdW5kIGxpbnV4X2Nsb3NlIHRoYXQgZGVjcmVtZW50cyB0aGUKLW9wZW5fY291bnRlciBhbmQgaXMgdXNlZCBpbiB0aGUgaW5pdF8qIGZ1bmN0aW9ucy4KLQotQWxsIG9mIHRoZXNlIGNoYW5nZXMgYXJlIHNlbGYtY29udGFpbmVkIHdpdGggbm8gZXh0ZXJuYWwgQVBJIGNoYW5nZXMuCi1UaGUgb25seSB2aXNpYmxlIGNoYW5nZSBpbiBiZWhhdmlvciBpcyB0aGF0IHdoZW4gYSBuZXcgUGVkRGV2aWNlIGlzCi1jcmVhdGVkIHRoZSBkZXZpY2UgaXMgb3BlbmVkIGluIFJPX01PREUgaW5zdGVhZCBvZiBSV19NT0RFLgotCi1SZXNvbHZlczogcmhieiMxMjQ1MTQ0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogT3ZpZGl1IFBhbmFpdCA8b3ZpZGl1LnBhbmFpdEB3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBsaWJwYXJ0ZWQvYXJjaC9saW51eC5jIHwgNjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJwYXJ0ZWQvYXJjaC9saW51eC5jIGIvbGlicGFydGVkL2FyY2gvbGludXguYwotaW5kZXggN2YxMmY1OC4uNGRkZWE1OCAxMDA2NDQKLS0tLSBhL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKLSsrKyBiL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKLUBAIC0yOTIsNyArMjkyLDkgQEAgc3RydWN0IGJsa2Rldl9pb2N0bF9wYXJhbSB7Ci0gc3RhdGljIGNoYXIqIF9kZXZpY2VfZ2V0X3BhcnRfcGF0aCAoUGVkRGV2aWNlIGNvbnN0ICpkZXYsIGludCBudW0pOwotIHN0YXRpYyBpbnQgX3BhcnRpdGlvbl9pc19tb3VudGVkX2J5X3BhdGggKGNvbnN0IGNoYXIqIHBhdGgpOwotIHN0YXRpYyB1bnNpZ25lZCBpbnQgX2RldmljZV9nZXRfcGFydGl0aW9uX3JhbmdlKFBlZERldmljZSBjb25zdCogZGV2KTsKLS0KLStzdGF0aWMgaW50IF9kZXZpY2Vfb3BlbiAoUGVkRGV2aWNlKiBkZXYsIGludCBmbGFncyk7Ci0rc3RhdGljIGludCBfZGV2aWNlX29wZW5fcm8gKFBlZERldmljZSogZGV2KTsKLStzdGF0aWMgaW50IF9kZXZpY2VfY2xvc2UgKFBlZERldmljZSogZGV2KTsKLSAKLSBzdGF0aWMgaW50Ci0gX3JlYWRfZmQgKGludCBmZCwgY2hhciAqKmJ1ZikKLUBAIC05MTEsNyArOTEzLDcgQEAgaW5pdF9pZGUgKFBlZERldmljZSogZGV2KQotICAgICAgICAgaWYgKCFfZGV2aWNlX3N0YXQgKGRldiwgJmRldl9zdGF0KSkKLSAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAKLS0gICAgICAgIGlmICghcGVkX2RldmljZV9vcGVuIChkZXYpKQotKyAgICAgICAgaWYgKCFfZGV2aWNlX29wZW5fcm8gKGRldikpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gCi0gICAgICAgICBpZiAoaW9jdGwgKGFyY2hfc3BlY2lmaWMtPmZkLCBIRElPX0dFVF9JREVOVElUWSwgJmhkaSkpIHsKLUBAIC05ODAsMTEgKzk4MiwxMSBAQCBpbml0X2lkZSAoUGVkRGV2aWNlKiBkZXYpCi0gICAgICAgICBpZiAoIV9kZXZpY2VfcHJvYmVfZ2VvbWV0cnkgKGRldikpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfY2xvc2VfZGV2OwotIAotLSAgICAgICAgcGVkX2RldmljZV9jbG9zZSAoZGV2KTsKLSsgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7Ci0gICAgICAgICByZXR1cm4gMTsKLSAKLSBlcnJvcl9jbG9zZV9kZXY6Ci0tICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOwotKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKLSBlcnJvcjoKLSAgICAgICAgIHJldHVybiAwOwotIH0KLUBAIC0xMTE3LDcgKzExMTksNyBAQCBpbml0X3Njc2kgKFBlZERldmljZSogZGV2KQotICAgICAgICAgY2hhciogdmVuZG9yOwotICAgICAgICAgY2hhciogcHJvZHVjdDsKLSAKLS0gICAgICAgIGlmICghcGVkX2RldmljZV9vcGVuIChkZXYpKQotKyAgICAgICAgaWYgKCFfZGV2aWNlX29wZW5fcm8gKGRldikpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gCi0gICAgICAgICBpZiAoaW9jdGwgKGFyY2hfc3BlY2lmaWMtPmZkLCBTQ1NJX0lPQ1RMX0dFVF9JRExVTiwgJmlkbHVuKSA8IDApIHsKLUBAIC0xMTMxLDcgKzExMzMsNyBAQCBpbml0X3Njc2kgKFBlZERldmljZSogZGV2KQotICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfY2xvc2VfZGV2OwotICAgICAgICAgICAgICAgICBpZiAoIV9kZXZpY2VfcHJvYmVfZ2VvbWV0cnkgKGRldikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcl9jbG9zZV9kZXY7Ci0tICAgICAgICAgICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7Ci0rICAgICAgICAgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7Ci0gICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgfQotIAotQEAgLTExNTMsMTEgKzExNTUsMTEgQEAgaW5pdF9zY3NpIChQZWREZXZpY2UqIGRldikKLSAgICAgICAgIGlmICghX2RldmljZV9wcm9iZV9nZW9tZXRyeSAoZGV2KSkKLSAgICAgICAgICAgICAgICAgZ290byBlcnJvcl9jbG9zZV9kZXY7Ci0gCi0tICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOwotKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKLSAgICAgICAgIHJldHVybiAxOwotIAotIGVycm9yX2Nsb3NlX2RldjoKLS0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7Ci0rICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOwotIGVycm9yOgotICAgICAgICAgcmV0dXJuIDA7Ci0gfQotQEAgLTExNjksNyArMTE3MSw3IEBAIGluaXRfZmlsZSAoUGVkRGV2aWNlKiBkZXYpCi0gCi0gICAgICAgICBpZiAoIV9kZXZpY2Vfc3RhdCAoZGV2LCAmZGV2X3N0YXQpKQotICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotLSAgICAgICAgaWYgKCFwZWRfZGV2aWNlX29wZW4gKGRldikpCi0rICAgICAgICBpZiAoIV9kZXZpY2Vfb3Blbl9ybyAoZGV2KSkKLSAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAKLSAgICAgICAgIGRldi0+c2VjdG9yX3NpemUgPSBQRURfU0VDVE9SX1NJWkVfREVGQVVMVDsKLUBAIC0xMTk2LDcgKzExOTgsNyBAQCBpbml0X2ZpbGUgKFBlZERldmljZSogZGV2KQotICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2Nsb3NlX2RldjsKLSAgICAgICAgIH0KLSAKLS0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7Ci0rICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOwotIAotICAgICAgICAgZGV2LT5iaW9zX2dlb20uY3lsaW5kZXJzID0gZGV2LT5sZW5ndGggLyA0IC8gMzI7Ci0gICAgICAgICBkZXYtPmJpb3NfZ2VvbS5oZWFkcyA9IDQ7Ci1AQCAtMTIwNyw3ICsxMjA5LDcgQEAgaW5pdF9maWxlIChQZWREZXZpY2UqIGRldikKLSAgICAgICAgIHJldHVybiAxOwotIAotIGVycm9yX2Nsb3NlX2RldjoKLS0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7Ci0rICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOwotIGVycm9yOgotICAgICAgICAgcmV0dXJuIDA7Ci0gfQotQEAgLTEyMjMsNyArMTIyNSw3IEBAIGluaXRfZGFzZCAoUGVkRGV2aWNlKiBkZXYsIGNvbnN0IGNoYXIqIG1vZGVsX25hbWUpCi0gICAgICAgICBpZiAoIV9kZXZpY2Vfc3RhdCAoZGV2LCAmZGV2X3N0YXQpKQotICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotIAotLSAgICAgICAgaWYgKCFwZWRfZGV2aWNlX29wZW4gKGRldikpCi0rICAgICAgICBpZiAoIV9kZXZpY2Vfb3Blbl9ybyAoZGV2KSkKLSAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAKLSAgICAgICAgIExpbnV4U3BlY2lmaWMqIGFyY2hfc3BlY2lmaWMgPSBMSU5VWF9TUEVDSUZJQyAoZGV2KTsKLUBAIC0xMjYzLDExICsxMjY1LDExIEBAIGluaXRfZGFzZCAoUGVkRGV2aWNlKiBkZXYsIGNvbnN0IGNoYXIqIG1vZGVsX25hbWUpCi0gCi0gICAgICAgICBkZXYtPm1vZGVsID0gc3RyZHVwIChtb2RlbF9uYW1lKTsKLSAKLS0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7Ci0rICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOwotICAgICAgICAgcmV0dXJuIDE7Ci0gCi0gZXJyb3JfY2xvc2VfZGV2OgotLSAgICAgICAgcGVkX2RldmljZV9jbG9zZSAoZGV2KTsKLSsgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7Ci0gZXJyb3I6Ci0gICAgICAgICByZXR1cm4gMDsKLSB9Ci1AQCAtMTI4Miw3ICsxMjg0LDcgQEAgaW5pdF9nZW5lcmljIChQZWREZXZpY2UqIGRldiwgY29uc3QgY2hhciogbW9kZWxfbmFtZSkKLSAgICAgICAgIGlmICghX2RldmljZV9zdGF0IChkZXYsICZkZXZfc3RhdCkpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gCi0tICAgICAgICBpZiAoIXBlZF9kZXZpY2Vfb3BlbiAoZGV2KSkKLSsgICAgICAgIGlmICghX2RldmljZV9vcGVuX3JvIChkZXYpKQotICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotIAotICAgICAgICAgcGVkX2V4Y2VwdGlvbl9mZXRjaF9hbGwgKCk7Ci1AQCAtMTMzMCwxMSArMTMzMiwxMSBAQCBpbml0X2dlbmVyaWMgKFBlZERldmljZSogZGV2LCBjb25zdCBjaGFyKiBtb2RlbF9uYW1lKQotIAotICAgICAgICAgZGV2LT5tb2RlbCA9IHN0cmR1cCAobW9kZWxfbmFtZSk7Ci0gCi0tICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOwotKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKLSAgICAgICAgIHJldHVybiAxOwotIAotIGVycm9yX2Nsb3NlX2RldjoKLS0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7Ci0rICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOwotIGVycm9yOgotICAgICAgICAgcmV0dXJuIDA7Ci0gfQotQEAgLTE2MjEsMTIgKzE2MjMsMjcgQEAgcmV0cnk6Ci0gfQotIAotIHN0YXRpYyBpbnQKLStfZGV2aWNlX29wZW5fcm8gKFBlZERldmljZSogZGV2KQotK3sKLSsgICAgaW50IHJjID0gX2RldmljZV9vcGVuIChkZXYsIFJEX01PREUpOwotKyAgICBpZiAocmMpCi0rICAgICAgICBkZXYtPm9wZW5fY291bnQrKzsKLSsgICAgcmV0dXJuIHJjOwotK30KLSsKLStzdGF0aWMgaW50Ci0gbGludXhfb3BlbiAoUGVkRGV2aWNlKiBkZXYpCi0gewotKyAgICByZXR1cm4gX2RldmljZV9vcGVuIChkZXYsIFJXX01PREUpOwotK30KLSsKLStzdGF0aWMgaW50Ci0rX2RldmljZV9vcGVuIChQZWREZXZpY2UqIGRldiwgaW50IGZsYWdzKQotK3sKLSAgICAgICAgIExpbnV4U3BlY2lmaWMqICBhcmNoX3NwZWNpZmljID0gTElOVVhfU1BFQ0lGSUMgKGRldik7Ci0gCi0gcmV0cnk6Ci0tICAgICAgICBhcmNoX3NwZWNpZmljLT5mZCA9IG9wZW4gKGRldi0+cGF0aCwgUldfTU9ERSk7Ci0rICAgICAgICBhcmNoX3NwZWNpZmljLT5mZCA9IG9wZW4gKGRldi0+cGF0aCwgZmxhZ3MpOwotIAotICAgICAgICAgaWYgKGFyY2hfc3BlY2lmaWMtPmZkID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgIGNoYXIqICAgcndfZXJyb3JfbXNnID0gc3RyZXJyb3IgKGVycm5vKTsKLUBAIC0xNjk1LDYgKzE3MTIsMTUgQEAgbGludXhfcmVmcmVzaF9jbG9zZSAoUGVkRGV2aWNlKiBkZXYpCi0gICAgICAgICByZXR1cm4gMTsKLSB9Ci0gCi0rc3RhdGljIGludAotK19kZXZpY2VfY2xvc2UgKFBlZERldmljZSogZGV2KQotK3sKLSsgICAgaW50IHJjID0gbGludXhfY2xvc2UgKGRldik7Ci0rICAgIGlmIChkZXYtPm9wZW5fY291bnQgPiAwKQotKyAgICAgICAgZGV2LT5vcGVuX2NvdW50LS07Ci0rICAgIHJldHVybiByYzsKLSt9Ci0rCi0gI2lmIFNJWkVPRl9PRkZfVCA8IDgKLSAKLSBzdGF0aWMgX3N5c2NhbGw1KGludCxfbGxzZWVrLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtbGlicGFydGVkLWZzLWFkZC1zb3VyY2VkaXItbGliLXRvLWluY2x1ZGUtcGF0aHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1saWJwYXJ0ZWQtZnMtYWRkLXNvdXJjZWRpci1saWItdG8taW5jbHVkZS1wYXRocy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGMyYWIyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtbGlicGFydGVkLWZzLWFkZC1zb3VyY2VkaXItbGliLXRvLWluY2x1ZGUtcGF0aHMucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSBkNjBhOGE4NmY2NTkzNzM4YjUzMjRjY2Q4ZmUzZTZkODRhMWZlN2JjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDExIERlYyAyMDE5IDE0OjE4OjM2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYnBhcnRlZC9mczogYWRkICRzb3VyY2VkaXIvbGliIHRvIGluY2x1ZGUgcGF0aHMKKworT3RoZXJ3aXNlLCBnZXRvcHQtcGZ4LWNvcmUuaCB3b24ndCBiZSBmb3VuZC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGxpYnBhcnRlZC9mcy9NYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYnBhcnRlZC9mcy9NYWtlZmlsZS5hbSBiL2xpYnBhcnRlZC9mcy9NYWtlZmlsZS5hbQoraW5kZXggMjg2YmZmNi4uNjVmNDVkMyAxMDA2NDQKKy0tLSBhL2xpYnBhcnRlZC9mcy9NYWtlZmlsZS5hbQorKysrIGIvbGlicGFydGVkL2ZzL01ha2VmaWxlLmFtCitAQCAtMyw3ICszLDcgQEAKKyAjCisgIyBUaGlzIGZpbGUgbWF5IGJlIG1vZGlmaWVkIGFuZC9vciBkaXN0cmlidXRlZCB3aXRob3V0IHJlc3RyaWN0aW9uLgorIAorLXBhcnRlZGluY2x1ZGVkaXIgPSAtSSQodG9wX2J1aWxkZGlyKS9pbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlCisrcGFydGVkaW5jbHVkZWRpciA9IC1JJCh0b3BfYnVpbGRkaXIpL2luY2x1ZGUgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUgLUkkKHRvcF9zcmNkaXIpL2xpYgorIAorIEFNX0NGTEFHUyA9ICQoV0FSTl9DRkxBR1MpCisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1saW51eC1JbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWFjcm8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1saW51eC1JbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWFjcm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMjYyZTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtbGludXgtSW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1hY3JvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSAwYjcyYjhlYjQxNDM4YjYyZWViOWUzNTQ4YjBiOGYzMDk0YTc4NjgxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIlJpY2hhcmQgVy5NLiBKb25lcyIgPHJqb25lc0ByZWRoYXQuY29tPgotRGF0ZTogU2F0LCAyNCBNYXIgMjAxOCAxNzozNzowMiArMDAwMAotU3ViamVjdDogW1BBVENIXSBsaW51eDogSW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPiBmb3IgbWFqb3IoKSBtYWNyby4KLQotU2luY2UgZ2xpYmMgMi4yNyB0aGlzIGhlYWRlciBpcyByZXF1aXJlZC4KLS0tLQotIGxpYnBhcnRlZC9hcmNoL2xpbnV4LmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMgYi9saWJwYXJ0ZWQvYXJjaC9saW51eC5jCi1pbmRleCAwZjE4OTA0Li5hMTU4NTRmIDEwMDY0NAotLS0tIGEvbGlicGFydGVkL2FyY2gvbGludXguYwotKysrIGIvbGlicGFydGVkL2FyY2gvbGludXguYwotQEAgLTQxLDYgKzQxLDcgQEAKLSAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4gICAgICAgIC8qIGZvciB1bmFtZSgpICovCi0gI2luY2x1ZGUgPHNjc2kvc2NzaS5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotICNpZmRlZiBFTkFCTEVfREVWSUNFX01BUFBFUgotICNpbmNsdWRlIDxsaWJkZXZtYXBwZXIuaD4KLSAjZW5kaWYKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAyLXRlc3RzLXVzZS1za2lwXy1yYXRoZXItdGhhbi1za2lwX3Rlc3RfLXdoaWNoLWlzLXVuZGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMi10ZXN0cy11c2Utc2tpcF8tcmF0aGVyLXRoYW4tc2tpcF90ZXN0Xy13aGljaC1pcy11bmRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1MjRhZGYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMi10ZXN0cy11c2Utc2tpcF8tcmF0aGVyLXRoYW4tc2tpcF90ZXN0Xy13aGljaC1pcy11bmRlLnBhdGNoCkBAIC0wLDAgKzEsNjYgQEAKK0Zyb20gOWY4NDQ0ODRjZWRiMzllMzAxYjAxNmU5ZGE3ODUyYzFhMGZiNmVlYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxMSBEZWMgMjAxOSAxNjoyNzo0OCArMDEwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0czogdXNlIHNraXBfIHJhdGhlciB0aGFuIHNraXBfdGVzdF8gKHdoaWNoIGlzIHVuZGVmaW5lZCkKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHRlc3RzL3Q2MDAxLXBzZXAuc2ggICAgICAgICAgICAgICB8IDIgKy0KKyB0ZXN0cy90NjAwNC1kbS1tYW55LXBhcnRpdGlvbnMuc2ggfCAyICstCisgdGVzdHMvdDYwMDUtZG0tdXVpZC5zaCAgICAgICAgICAgIHwgMiArLQorIHRlc3RzL3Q2MDA2LWRtLTUxMmItc2VjdG9ycy5zaCAgICB8IDIgKy0KKyA0IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL3Q2MDAxLXBzZXAuc2ggYi90ZXN0cy90NjAwMS1wc2VwLnNoCitpbmRleCBlMzUwYmQyLi42NzAxNGEwIDEwMDY0NAorLS0tIGEvdGVzdHMvdDYwMDEtcHNlcC5zaAorKysrIGIvdGVzdHMvdDYwMDEtcHNlcC5zaAorQEAgLTIxLDcgKzIxLDcgQEAKKyByZXF1aXJlX3Jvb3RfCisgcmVxdWlyZV91ZGV2YWRtX3NldHRsZV8KKyAKKy0oZG1zZXR1cCAtLWhlbHApID4gL2Rldi9udWxsIDI+JjEgfHwgc2tpcF90ZXN0XyAiTm8gZG1zZXR1cCBpbnN0YWxsZWQiCisrKGRtc2V0dXAgLS1oZWxwKSA+IC9kZXYvbnVsbCAyPiYxIHx8IHNraXBfICJObyBkbXNldHVwIGluc3RhbGxlZCIKKyAKKyAjIERldmljZSBtYXBzIG5hbWVzIC0gc2hvdWxkIGJlIHJhbmRvbSB0byBub3QgY29uZmxpY3Qgd2l0aCBleGlzdGluZyBvbmVzIG9uCisgIyB0aGUgc3lzdGVtCitkaWZmIC0tZ2l0IGEvdGVzdHMvdDYwMDQtZG0tbWFueS1wYXJ0aXRpb25zLnNoIGIvdGVzdHMvdDYwMDQtZG0tbWFueS1wYXJ0aXRpb25zLnNoCitpbmRleCBiNGJlOTc1Li43MjE0ZjYwIDEwMDc1NQorLS0tIGEvdGVzdHMvdDYwMDQtZG0tbWFueS1wYXJ0aXRpb25zLnNoCisrKysgYi90ZXN0cy90NjAwNC1kbS1tYW55LXBhcnRpdGlvbnMuc2gKK0BAIC0yMSw3ICsyMSw3IEBACisgCisgcmVxdWlyZV9yb290XworIHJlcXVpcmVfdWRldmFkbV9zZXR0bGVfCistKGRtc2V0dXAgLS1oZWxwKSA+IC9kZXYvbnVsbCAyPiYxIHx8IHNraXBfdGVzdF8gIk5vIGRtc2V0dXAgaW5zdGFsbGVkIgorKyhkbXNldHVwIC0taGVscCkgPiAvZGV2L251bGwgMj4mMSB8fCBza2lwXyAiTm8gZG1zZXR1cCBpbnN0YWxsZWQiCisgCisgc3M9JHNlY3Rvcl9zaXplXworIG5zPTMwMAorZGlmZiAtLWdpdCBhL3Rlc3RzL3Q2MDA1LWRtLXV1aWQuc2ggYi90ZXN0cy90NjAwNS1kbS11dWlkLnNoCitpbmRleCA0MjY2NzQ3Li40NzkwYThiIDEwMDc1NQorLS0tIGEvdGVzdHMvdDYwMDUtZG0tdXVpZC5zaAorKysrIGIvdGVzdHMvdDYwMDUtZG0tdXVpZC5zaAorQEAgLTIxLDcgKzIxLDcgQEAKKyAKKyByZXF1aXJlX3Jvb3RfCisgcmVxdWlyZV91ZGV2YWRtX3NldHRsZV8KKy0oZG1zZXR1cCAtLWhlbHApID4gL2Rldi9udWxsIDI+JjEgfHwgc2tpcF90ZXN0XyAiTm8gZG1zZXR1cCBpbnN0YWxsZWQiCisrKGRtc2V0dXAgLS1oZWxwKSA+IC9kZXYvbnVsbCAyPiYxIHx8IHNraXBfICJObyBkbXNldHVwIGluc3RhbGxlZCIKKyAKKyBzcz0kc2VjdG9yX3NpemVfCisgbnM9MzAwCitkaWZmIC0tZ2l0IGEvdGVzdHMvdDYwMDYtZG0tNTEyYi1zZWN0b3JzLnNoIGIvdGVzdHMvdDYwMDYtZG0tNTEyYi1zZWN0b3JzLnNoCitpbmRleCBiZjMyMTM1Li5iNjc5YWRiIDEwMDY0NAorLS0tIGEvdGVzdHMvdDYwMDYtZG0tNTEyYi1zZWN0b3JzLnNoCisrKysgYi90ZXN0cy90NjAwNi1kbS01MTJiLXNlY3RvcnMuc2gKK0BAIC0yNSw3ICsyNSw3IEBAIHJlcXVpcmVfc2NzaV9kZWJ1Z19tb2R1bGVfCisgZ3JlcCAnXiNkZWZpbmUgVVNFX0JMS0lEIDEnICIkQ09ORklHX0hFQURFUiIgPiAvZGV2L251bGwgfHwKKyAgIHNraXBfICd0aGlzIHN5c3RlbSBsYWNrcyBhIG5ldy1lbm91Z2ggbGliYmxraWQnCisgCistKGRtc2V0dXAgLS1oZWxwKSA+IC9kZXYvbnVsbCAyPiYxIHx8IHNraXBfdGVzdF8gIk5vIGRtc2V0dXAgaW5zdGFsbGVkIgorKyhkbXNldHVwIC0taGVscCkgPiAvZGV2L251bGwgMj4mMSB8fCBza2lwXyAiTm8gZG1zZXR1cCBpbnN0YWxsZWQiCisgCisgIyBEZXZpY2UgbWFwcyBuYW1lcyAtIHNob3VsZCBiZSByYW5kb20gdG8gbm90IGNvbmZsaWN0IHdpdGggZXhpc3Rpbmcgb25lcyBvbgorICMgdGhlIHN5c3RlbQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL01ha2VmaWxlIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL01ha2VmaWxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTkwYmUwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9NYWtlZmlsZQorKysgL2Rldi9udWxsCkBAIC0xLDI4NSArMCwwIEBACi1hbV9fdHR5X2NvbG9yc19kdW1teSA9IFwKLSAgbWduPSByZWQ9IGdybj0gbGduPSBibHU9IGJyZz0gc3RkPTsgXAotICBhbV9fY29sb3JfdGVzdHM9bm8KLQotYW1fX3R0eV9jb2xvcnMgPSBcCi0kKGFtX190dHlfY29sb3JzX2R1bW15KTsgXAotdGVzdCAiWCQoQU1fQ09MT1JfVEVTVFMpIiAhPSBYbm8gXAotJiYgdGVzdCAiWCQkVEVSTSIgIT0gWGR1bWIgXAotJiYgeyB0ZXN0ICJYJChBTV9DT0xPUl9URVNUUykiID0gWGFsd2F5cyB8fCB0ZXN0IC10IDEgMj4vZGV2L251bGw7IH0gXAotJiYgeyBcCi0gIGFtX19jb2xvcl90ZXN0cz15ZXM7IFwKLSAgcmVkPScbWzA7MzFtJzsgXAotICBncm49JxtbMDszMm0nOyBcCi0gIGxnbj0nG1sxOzMybSc7IFwKLSAgYmx1PScbWzE7MzRtJzsgXAotICBtZ249JxtbMDszNW0nOyBcCi0gIGJyZz0nG1sxbSc7IFwKLSAgc3RkPScbW20nOyBcCi19Ci0KLWFtX192cGF0aF9hZGpfc2V0dXAgPSBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAnc3wufC58ZydgOwotYW1fX3ZwYXRoX2FkaiA9IGNhc2UgJCRwIGluIFwKLSAgICAkKHNyY2RpcikvKikgZj1gZWNobyAiJCRwIiB8IHNlZCAic3xeJCRzcmNkaXJzdHJpcC98fCJgOzsgXAotICAgICopIGY9JCRwOzsgXAotICBlc2FjOwotYW1fX3JzdF90aXRsZSA9IHsgc2VkICdzLy4qLyAgICYgICAvO2g7cy8uLz0vZztwO3g7cy8gKiQkLy87cDtnJyAmJiBlY2hvOyB9Ci1hbV9fcnN0X3NlY3Rpb24gPSB7IHNlZCAncDtzLy4vPS9nOycgJiYgZWNobzsgfQotYW1fX3NoX2Vfc2V0dXAgPSBjYXNlICQkLSBpbiAqZSopIHNldCArZTs7IGVzYWMKLQotYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MgPSBcCi0gIC0tY29sb3ItdGVzdHMgIiQkYW1fX2NvbG9yX3Rlc3RzIiBcCi0gIC0tZW5hYmxlLWhhcmQtZXJyb3JzICIkJGFtX19lbmFibGVfaGFyZF9lcnJvcnMiIFwKLSAgLS1leHBlY3QtZmFpbHVyZSAiJCRhbV9fZXhwZWN0X2ZhaWx1cmUiCi1hbV9fY2hlY2tfcHJlID0gXAotJChhbV9fc2hfZV9zZXR1cCk7CQkJCQlcCi0kKGFtX192cGF0aF9hZGpfc2V0dXApICQoYW1fX3ZwYXRoX2FkaikJCQlcCi0kKGFtX190dHlfY29sb3JzKTsJCQkJCVwKLXNyY2Rpcj0kKHNyY2Rpcik7IGV4cG9ydCBzcmNkaXI7CQkJXAotYW1fX29kaXI9YGVjaG8gIi4vJEAiIHwgc2VkICdzfC9bXi9dKiQkfHwnYDsJCVwKLXRlc3QgIngkJGFtX19vZGlyIiA9IHguIHx8ICQoTUtESVJfUCkgIiQkYW1fX29kaXIiIHx8IGV4aXQgJCQ/OwlcCi1pZiB0ZXN0IC1mICIuLyQkZiI7IHRoZW4gZGlyPS4vOwkJCVwKLWVsaWYgdGVzdCAtZiAiJCRmIjsgdGhlbiBkaXI9OwkJCQlcCi1lbHNlIGRpcj0iJChzcmNkaXIpLyI7IGZpOwkJCQlcCi10c3Q9JCRkaXIkJGY7IGxvZz0nJEAnOyAJCQkJXAotaWYgdGVzdCAtbiAnJChESVNBQkxFX0hBUkRfRVJST1JTKSc7IHRoZW4JCVwKLSAgYW1fX2VuYWJsZV9oYXJkX2Vycm9ycz1ubzsgCQkJCVwKLWVsc2UJCQkJCQkJXAotICBhbV9fZW5hYmxlX2hhcmRfZXJyb3JzPXllczsgCQkJCVwKLWZpOyAJCQkJCQkJXAotJChBTV9URVNUU19FTlZJUk9OTUVOVCkgJChURVNUU19FTlZJUk9OTUVOVCkKLQotYW1fX3NldF9URVNUU19iYXNlcyA9IFwKLSAgYmFzZXM9JyQoVEVTVF9MT0dTKSc7IFwKLSAgYmFzZXM9YGZvciBpIGluICQkYmFzZXM7IGRvIGVjaG8gJCRpOyBkb25lIHwgc2VkICdzL1wubG9nJCQvLydgOyBcCi0gIGJhc2VzPWBlY2hvICQkYmFzZXNgCi0KLVJFQ0hFQ0tfTE9HUyA9ICQoVEVTVF9MT0dTKQotVEVTVF9TVUlURV9MT0cgPSB0ZXN0LXN1aXRlLmxvZwotYW1fX3Rlc3RfbG9nczEgPSAkKFRFU1RTOj0ubG9nKQotYW1fX3Rlc3RfbG9nczIgPSAkKGFtX190ZXN0X2xvZ3MxOi5sb2c9LmxvZykKLVRFU1RfTE9HUyA9ICQoYW1fX3Rlc3RfbG9nczI6LnNoLmxvZz0ubG9nKQotU0hfTE9HX0RSSVZFUiA9ICQoU0hFTEwpICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L3Rlc3QtZHJpdmVyCi1TSF9MT0dfQ09NUElMRSA9ICQoU0hfTE9HX0NPTVBJTEVSKQotCi1hbV9fc2V0X2IgPSBcCi0gIGNhc2UgJyRAJyBpbiBcCi0gICAgKi8qKSBcCi0gICAgICBjYXNlICckKicgaW4gXAotICAgICAgICAqLyopIGI9JyQqJzs7IFwKLSAgICAgICAgICAqKSBiPWBlY2hvICckQCcgfCBzZWQgJ3MvXC5sb2ckJC8vJ2A7IFwKLSAgICAgICBlc2FjOzsgXAotICAgICopIFwKLSAgICAgIGI9JyQqJzs7IFwKLSAgZXNhYwotCi1NS0RJUl9QID0gL2Jpbi9ta2RpciAtcAotU0hFTEwgPSAvYmluL2Jhc2gKLVZFUlNJT04gPSAzLjEKLVBBQ0tBR0VfU1RSSU5HID0gR05VIHBhcnRlZCAzLjEKLVBBQ0tBR0VfQlVHUkVQT1JUID0gYnVnLXBhcnRlZEBnbnUub3JnCi1hYnNfc3JjZGlyID0gJChQV0QpCi1hYnNfdG9wX2J1aWxkZGlyID0gJChQV0QpLy4uCi1hYnNfdG9wX3NyY2RpciA9ICQoUFdEKS8uLgotc3JjZGlyID0gLgotdG9wX3NyY2RpciA9IC4uCi1zdWJkaXIgPSB0ZXN0cwotU0hfTE9HX0NPTVBJTEVSID0gJChTSEVMTCkKLQotVEVTVFMgPSBcCi0gIGhlbHAtdmVyc2lvbi5zaCBcCi0gIHQwMDAwLWJhc2ljLnNoIFwKLSAgdDAwMDEtdGlueS5zaCBcCi0gIHQwMDEwLXNjcmlwdC1uby1jdHJsLWNoYXJzLnNoIFwKLSAgdDAxMDAtcHJpbnQuc2ggXAotICB0MDEwMS1wcmludC1lbXB0eS5zaCBcCi0gIHQwMjAwLWdwdC5zaCBcCi0gIHQwMjAxLWdwdC5zaCBcCi0gIHQwMjAyLWdwdC1wbWJyLnNoIFwKLSAgdDAyMDMtZ3B0LXRpbnktZGV2aWNlLWFib3J0LnNoIFwKLSAgdDAyMDMtZ3B0LXNob3J0ZW5lZC1kZXZpY2UtcHJpbWFyeS12YWxpZC5zaCBcCi0gIHQwMjA1LWdwdC1saXN0LWNsb2JiZXJzLXBtYnIuc2ggXAotICB0MDIwNi1ncHQtcHJpbnQtd2l0aC1jb3JydXB0LXByaW1hcnktY2xvYmJlcnMtcG1ici5zaCBcCi0gIHQwMjA3LUlFQy1iaW5hcnktbm90YXRpb24uc2ggXAotICB0MDIwOC1ta3BhcnQtZW5kLWluLUlFQy5zaCBcCi0gIHQwMjA5LWdwdC1wbWJyX2Jvb3Quc2ggXAotICB0MDIxMC1ncHQtcmVzaXplZC1wYXJ0aXRpb24tZW50cnktYXJyYXkuc2ggXAotICB0MDIxMS1ncHQtcmV3cml0ZS1oZWFkZXIuc2ggXAotICB0MDIxMi1ncHQtbWFueS1wYXJ0aXRpb25zLnNoIFwKLSAgdDAyMjAtZ3B0LW1zZnRyZXMuc2ggXAotICB0MDI1MC1ncHQuc2ggXAotICB0MDI4MC1ncHQtY29ycnVwdC5zaCBcCi0gIHQwMzAwLWRvcy1vbi1ncHQuc2ggXAotICB0MDQwMC1sb29wLWNsb2JiZXItaW5mbG9vcC5zaCBcCi0gIHQwNTAwLWR1cC1jbG9iYmVyLnNoIFwKLSAgdDA1MDEtZHVwbGljYXRlLnNoIFwKLSAgdDExMDAtYnVzeS1sYWJlbC5zaCBcCi0gIHQxMTAxLWJ1c3ktcGFydGl0aW9uLnNoIFwKLSAgdDE3MDAtcHJvYmUtZnMuc2ggXAotICB0MjIwMC1kb3MtbGFiZWwtcmVjb2cuc2ggXAotICB0MjIwMS1wYzk4LWxhYmVsLXJlY29nLnNoIFwKLSAgdDIzMDAtZG9zLWxhYmVsLWV4dGVuZGVkLWJvb3Rjb2RlLnNoIFwKLSAgdDIzMTAtZG9zLWV4dGVuZGVkLTItc2VjdG9yLW1pbi1vZmZzZXQuc2ggXAotICB0MjQwMC1kb3MtaGZzLXBhcnRpdGlvbi10eXBlLnNoIFwKLSAgdDI1MDAtcHJvYmUtY29ycnVwdC1oZnMuc2ggXAotICB0MzAwMC1yZXNpemUtZnMuc2ggXAotICB0MzIwMC10eXBlLWNoYW5nZS5zaCBcCi0gIHQzMzAwLXBhbG8tcHJlcC5zaCBcCi0gIHQzMzEwLWZsYWdzLnNoIFwKLSAgdDM0MDAtd2hvbGUtZGlzay1GQVQtcGFydGl0aW9uLnNoIFwKLSAgdDQwMDAtc3VuLXJhaWQtdHlwZS5zaCBcCi0gIHQ0MDAxLXN1bi12dG9jLnNoIFwKLSAgdDQxMDAtbXNkb3MtcGFydGl0aW9uLWxpbWl0cy5zaCBcCi0gIHQ0MTAwLWR2aC1wYXJ0aXRpb24tbGltaXRzLnNoIFwKLSAgdDQxMDAtbXNkb3Mtc3RhcnRpbmctc2VjdG9yLnNoIFwKLSAgdDQyMDAtcGFydHByb2JlLnNoIFwKLSAgdDQzMDAtbmlsZnMyLXRpbnkuc2ggXAotICB0NTAwMC10YWdzLnNoIFwKLSAgdDYwMDAtZG0uc2ggXAotICB0NjAwMS1wc2VwLnNoIFwKLSAgdDYxMDAtbWRyYWlkLXBhcnRpdGlvbnMuc2ggXAotICB0NzAwMC1zY3JpcHRpbmcuc2ggXAotICB0ODAwMC1sb29wLnNoIFwKLSAgdDgwMDEtbG9vcC1ibGtwZy5zaCBcCi0gIHQ5MDEwLWJpZy1zZWN0b3Iuc2ggXAotICB0OTAyMC1hbGlnbm1lbnQuc2ggXAotICB0OTAyMS1tYXhpbWEuc2ggXAotICB0OTAyMi1vbmUtdW5pdC1zbmFwLnNoIFwKLSAgdDkwMjMtdmFsdWUtbHQtb25lLnNoIFwKLSAgdDkwMzAtYWxpZ24tY2hlY2suc2ggXAotICB0OTA0MC1tYW55LXBhcnRpdGlvbnMuc2ggXAotICB0OTA0MS11bmRldGVjdGVkLWluLXVzZS0xNnRoLXBhcnRpdGlvbi5zaCBcCi0gIHQ5MDQyLWRvcy1wYXJ0aXRpb24tbGltaXQuc2ggXAotICB0OTA1MC1wYXJ0aXRpb24tdGFibGUtdHlwZXMuc2gKLQotVEVTVFNfRU5WSVJPTk1FTlQgPSBcCi0gIGV4cG9ydAkJCQkJXAotICBhYnNfdG9wX2J1aWxkZGlyPSckKGFic190b3BfYnVpbGRkaXIpJwlcCi0gIGFic190b3Bfc3JjZGlyPSckKGFic190b3Bfc3JjZGlyKScJCVwKLSAgYWJzX3NyY2Rpcj0nJChhYnNfc3JjZGlyKScJCQlcCi0gIGJ1aWx0X3Byb2dyYW1zPXBhcnRlZAkJCQlcCi0gIHNyY2Rpcj0nJChzcmNkaXIpJwkJCQlcCi0gIHRvcF9zcmNkaXI9JyQodG9wX3NyY2RpciknCQkJXAotICBWRVJTSU9OPSQoVkVSU0lPTikJCQkJXAotICA7IDk+JjIKLQotLlNVRkZJWEVTOiAubG9nCi0KLSQoVEVTVF9TVUlURV9MT0cpOiAkKFRFU1RfTE9HUykKLQlAJChhbV9fc2hfZV9zZXR1cCk7ICQoYW1fX3R0eV9jb2xvcnMpOyAkKGFtX19zZXRfVEVTVFNfYmFzZXMpOyBcCi0Jd3M9J1sgCV0nOyBcCi0JcmVzdWx0cz1gZm9yIGIgaW4gJCRiYXNlczsgZG8gZWNobyAkJGIudHJzOyBkb25lYDsgXAotCXRlc3QgLW4gIiQkcmVzdWx0cyIgfHwgcmVzdWx0cz0vZGV2L251bGw7IFwKLQlhbGw9YCAgZ3JlcCAiXiQkd3MqOnRlc3QtcmVzdWx0OiIgICAgICAgICAgICQkcmVzdWx0cyB8IHdjIC1sYDsgXAotCXBhc3M9YCBncmVwICJeJCR3cyo6dGVzdC1yZXN1bHQ6JCR3cypQQVNTIiAgJCRyZXN1bHRzIHwgd2MgLWxgOyBcCi0JZmFpbD1gIGdyZXAgIl4kJHdzKjp0ZXN0LXJlc3VsdDokJHdzKkZBSUwiICAkJHJlc3VsdHMgfCB3YyAtbGA7IFwKLQlza2lwPWAgZ3JlcCAiXiQkd3MqOnRlc3QtcmVzdWx0OiQkd3MqU0tJUCIgICQkcmVzdWx0cyB8IHdjIC1sYDsgXAotCXhmYWlsPWBncmVwICJeJCR3cyo6dGVzdC1yZXN1bHQ6JCR3cypYRkFJTCIgJCRyZXN1bHRzIHwgd2MgLWxgOyBcCi0JeHBhc3M9YGdyZXAgIl4kJHdzKjp0ZXN0LXJlc3VsdDokJHdzKlhQQVNTIiAkJHJlc3VsdHMgfCB3YyAtbGA7IFwKLQllcnJvcj1gZ3JlcCAiXiQkd3MqOnRlc3QtcmVzdWx0OiQkd3MqRVJST1IiICQkcmVzdWx0cyB8IHdjIC1sYDsgXAotCWlmIHRlc3QgYGV4cHIgJCRmYWlsICsgJCR4cGFzcyArICQkZXJyb3JgIC1lcSAwOyB0aGVuIFwKLQkgIHN1Y2Nlc3M9dHJ1ZTsgXAotCWVsc2UgXAotCSAgc3VjY2Vzcz1mYWxzZTsgXAotCWZpOyBcCi0JYnI9Jz09PT09PT09PT09PT09PT09PT0nOyBicj0kJGJyJCRiciQkYnIkJGJyOyBcCi0JcmVzdWx0X2NvdW50ICgpIFwKLQl7IFwKLQkgICAgaWYgdGVzdCB4IiQkMSIgPSB4Ii0tbWF5YmUtY29sb3IiOyB0aGVuIFwKLQkgICAgICBtYXliZV9jb2xvcml6ZT15ZXM7IFwKLQkgICAgZWxpZiB0ZXN0IHgiJCQxIiA9IHgiLS1uby1jb2xvciI7IHRoZW4gXAotCSAgICAgIG1heWJlX2NvbG9yaXplPW5vOyBcCi0JICAgIGVsc2UgXAotCSAgICAgIGVjaG8gIiRAOiBpbnZhbGlkICdyZXN1bHRfY291bnQnIHVzYWdlIiA+JjI7IGV4aXQgNDsgXAotCSAgICBmaTsgXAotCSAgICBzaGlmdDsgXAotCSAgICBkZXNjPSQkMSBjb3VudD0kJDI7IFwKLQkgICAgaWYgdGVzdCAkJG1heWJlX2NvbG9yaXplID0geWVzICYmIHRlc3QgJCRjb3VudCAtZ3QgMDsgdGhlbiBcCi0JICAgICAgY29sb3Jfc3RhcnQ9JCQzIGNvbG9yX2VuZD0kJHN0ZDsgXAotCSAgICBlbHNlIFwKLQkgICAgICBjb2xvcl9zdGFydD0gY29sb3JfZW5kPTsgXAotCSAgICBmaTsgXAotCSAgICBlY2hvICIkJHtjb2xvcl9zdGFydH0jICQkZGVzYyAkJGNvdW50JCR7Y29sb3JfZW5kfSI7IFwKLQl9OyBcCi0JY3JlYXRlX3Rlc3RzdWl0ZV9yZXBvcnQgKCkgXAotCXsgXAotCSAgcmVzdWx0X2NvdW50ICQkMSAiVE9UQUw6IiAkJGFsbCAgICIkJGJyZyI7IFwKLQkgIHJlc3VsdF9jb3VudCAkJDEgIlBBU1M6ICIgJCRwYXNzICAiJCRncm4iOyBcCi0JICByZXN1bHRfY291bnQgJCQxICJTS0lQOiAiICQkc2tpcCAgIiQkYmx1IjsgXAotCSAgcmVzdWx0X2NvdW50ICQkMSAiWEZBSUw6IiAkJHhmYWlsICIkJGxnbiI7IFwKLQkgIHJlc3VsdF9jb3VudCAkJDEgIkZBSUw6ICIgJCRmYWlsICAiJCRyZWQiOyBcCi0JICByZXN1bHRfY291bnQgJCQxICJYUEFTUzoiICQkeHBhc3MgIiQkcmVkIjsgXAotCSAgcmVzdWx0X2NvdW50ICQkMSAiRVJST1I6IiAkJGVycm9yICIkJG1nbiI7IFwKLQl9OyBcCi0JewkJCQkJCQkJXAotCSAgZWNobyAiJChQQUNLQUdFX1NUUklORyk6ICQoc3ViZGlyKS8kKFRFU1RfU1VJVEVfTE9HKSIgfAlcCi0JICAgICQoYW1fX3JzdF90aXRsZSk7CQkJCQkJXAotCSAgY3JlYXRlX3Rlc3RzdWl0ZV9yZXBvcnQgLS1uby1jb2xvcjsJCQkJXAotCSAgZWNobzsJCQkJCQkJCVwKLQkgIGVjaG8gIi4uIGNvbnRlbnRzOjogOmRlcHRoOiAyIjsJCQkJXAotCSAgZWNobzsJCQkJCQkJCVwKLQkgIGZvciBpIGluICQkYmFzZXM7IGRvCQkJCQkJXAotCSAgICBpZiBncmVwICJeJCR3cyo6Y29weS1pbi1nbG9iYWwtbG9nOiQkd3Mqbm8kJHdzKiQkIiAkJGkudHJzIFwKLQkgICAgICAgICA+L2Rldi9udWxsOyB0aGVuIGNvbnRpbnVlOyBcCi0JICAgIGZpOyBcCi0JICAgIGdsb2JfcmVzPWBzZWQgLW4gLWUgInMvJCR3cyokJC8vIiBcCi0JICAgICAgICAgICAgICAgICAgICAgLWUgInMvXiQkd3MqOmdsb2JhbC10ZXN0LXJlc3VsdDokJHdzKi8vcCIgXAotCQkgICAgICAgICQkaS50cnNgOyBcCi0JICAgIHRlc3QgLW4gIiQkZ2xvYl9yZXMiIHx8IGdsb2JfcmVzPVJVTjsgXAotCSAgICBlY2hvICIkJGdsb2JfcmVzOiAkJGkiIHwgJChhbV9fcnN0X3NlY3Rpb24pOyBcCi0JICAgIGlmIHRlc3QgISAtciAkJGkubG9nOyB0aGVuIFwKLQkgICAgICBlY2hvICJmYXRhbDogbWFraW5nICRAOiAkJGkubG9nIGlzIHVucmVhZGFibGUiID4mMjsgXAotCSAgICAgIGV4aXQgMTsgXAotCSAgICBmaTsgXAotCSAgICBjYXQgJCRpLmxvZzsgZWNobzsgXAotCSAgZG9uZTsJXAotCX0gPiQoVEVTVF9TVUlURV9MT0cpLnRtcDsJCQkJCVwKLQltdiAkKFRFU1RfU1VJVEVfTE9HKS50bXAgJChURVNUX1NVSVRFX0xPRyk7CQkJXAotCWlmICQkc3VjY2VzczsgdGhlbgkJCQkJCVwKLQkgIGNvbD0iJCRncm4iOwkJCQkJCQlcCi0JIGVsc2UJCQkJCQkJCVwKLQkgIGNvbD0iJCRyZWQiOwkJCQkJCQlcCi0JICB0ZXN0IHgiJCRWRVJCT1NFIiA9IHggfHwgY2F0ICQoVEVTVF9TVUlURV9MT0cpOwkJXAotCWZpOwkJCQkJCQkJXAotCWVjaG8gIiQke2NvbH0kJGJyJCR7c3RkfSI7IAkJCQkJXAotCWVjaG8gIiQke2NvbH1UZXN0c3VpdGUgc3VtbWFyeSBmb3IgJChQQUNLQUdFX1NUUklORykkJHtzdGR9IjsJXAotCWVjaG8gIiQke2NvbH0kJGJyJCR7c3RkfSI7IAkJCQkJXAotCWNyZWF0ZV90ZXN0c3VpdGVfcmVwb3J0IC0tbWF5YmUtY29sb3I7CQkJCVwKLQllY2hvICIkJGNvbCQkYnIkJHN0ZCI7CQkJCQkJXAotCWlmICQkc3VjY2VzczsgdGhlbiA6OyBlbHNlCQkJCQlcCi0JICBlY2hvICIkJHtjb2x9U2VlICQoc3ViZGlyKS8kKFRFU1RfU1VJVEVfTE9HKSQke3N0ZH0iOwkJXAotCSAgaWYgdGVzdCAtbiAiJChQQUNLQUdFX0JVR1JFUE9SVCkiOyB0aGVuCQkJXAotCSAgICBlY2hvICIkJHtjb2x9UGxlYXNlIHJlcG9ydCB0byAkKFBBQ0tBR0VfQlVHUkVQT1JUKSQke3N0ZH0iOwlcCi0JICBmaTsJCQkJCQkJCVwKLQkgIGVjaG8gIiQkY29sJCRiciQkc3RkIjsJCQkJCVwKLQlmaTsJCQkJCQkJCVwKLQkkJHN1Y2Nlc3MgfHwgZXhpdCAxCi0KLWNoZWNrLVRFU1RTOgotCUBpZiB0ZXN0ICRAICE9IHJlY2hlY2s7IHRoZW4gXAotCSAgIGxpc3Q9JyQoUkVDSEVDS19MT0dTKSc7IFwKLQkgICB0ZXN0IC16ICIkJGxpc3QiIHx8IHJtIC1mICQkbGlzdDsgXAotCSBmaQotCUB0ZXN0IC16ICIkKFRFU1RfU1VJVEVfTE9HKSIgfHwgcm0gLWYgJChURVNUX1NVSVRFX0xPRykKLQlAd3M9J1sgCV0nOyBcCi0JbG9nX2xpc3Q9JycgdHJzX2xpc3Q9Jyc7ICQoYW1fX3NldF9URVNUU19iYXNlcyk7IFwKLQlmb3IgaSBpbiAkJGJhc2VzOyBkbyBcCi0JICBpZiB0ZXN0IC16ICIkJGxvZ19saXN0IjsgdGhlbiBcCi0JICAgIGxvZ19saXN0PSIkJGkubG9nIjsgXAotCSAgZWxzZSBcCi0JICAgIGxvZ19saXN0PSIkJGxvZ19saXN0ICQkaS5sb2ciOyBcCi0JICBmaTsgXAotCSAgaWYgdGVzdCAteiAiJCR0cnNfbGlzdCI7IHRoZW4gXAotCSAgICB0cnNfbGlzdD0iJCRpLnRycyI7IFwKLQkgIGVsc2UgXAotCSAgICB0cnNfbGlzdD0iJCR0cnNfbGlzdCAkJGkudHJzIjsgXAotCSAgZmk7IFwKLQlkb25lOyBcCi0JJChNQUtFKSAkKEFNX01BS0VGTEFHUykgJChURVNUX1NVSVRFX0xPRykgVEVTVF9MT0dTPSIkJGxvZ19saXN0IgotCi0uc2gubG9nOgotCUBwPSckPCc7IFwKLQkkKGFtX19zZXRfYik7IFwKLQkkKGFtX19jaGVja19wcmUpICQoU0hfTE9HX0RSSVZFUikgLS10ZXN0LW5hbWUgIiQkZiIgXAotCS0tbG9nLWZpbGUgJCRiLmxvZyAtLXRycy1maWxlICQkYi50cnMgXAotCSQoYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MpIC0tICQoU0hfTE9HX0NPTVBJTEUpICIkJHRzdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9kbV9jaGVjay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9kbV9jaGVjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWYzYzRkZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvZG1fY2hlY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1wYXJ0ZWQ6IGNoYW5nZSBjaGVjayBmb3IgZGV2aWNlLW1hbmFnZXIKLQotT3RoZXIgcHRlc3RzIHVzZSB0aGlzIG1ldGhvZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2J1Zy1wYXJ0ZWRAZ251Lm9yZ10KLQotU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgotCi0KLS0tLSBhL3Rlc3RzL3Q2MDAxLXBzZXAuc2gKLSsrKyBiL3Rlc3RzL3Q2MDAxLXBzZXAuc2gKLUBAIC0xOSw3ICsxOSw5IEBACi0gLiAiJHtzcmNkaXI9Ln0vaW5pdC5zaCI7IHBhdGhfcHJlcGVuZF8gLi4vcGFydGVkCi0gCi0gcmVxdWlyZV9yb290XwotLShkbXNldHVwIC0taGVscCkgPiAvZGV2L251bGwgMj4mMSB8fCBza2lwX3Rlc3RfICJObyBkbXNldHVwIGluc3RhbGxlZCIKLSsKLSt0ZXN0ICJ4JEVOQUJMRV9ERVZJQ0VfTUFQUEVSIiA9IHh5ZXMgXAotKyAgfHwgc2tpcF8gIm5vIGRldmljZS1tYXBwZXIgc3VwcG9ydCIKLSAKLSAjIERldmljZSBtYXBzIG5hbWVzIC0gc2hvdWxkIGJlIHJhbmRvbSB0byBub3QgY29uZmxpY3Qgd2l0aCBleGlzdGluZyBvbmVzIG9uCi0gIyB0aGUgc3lzdGVtCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvZml4LWNvbXBpbGUtZmFpbHVyZS13aGlsZS1kaXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvZml4LWNvbXBpbGUtZmFpbHVyZS13aGlsZS1kaXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjNGQyYWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL2ZpeC1jb21waWxlLWZhaWx1cmUtd2hpbGUtZGlzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSBkYTNmMTI5NzEwOTI5YWJlOWE0MDM5MDFmYTdkMTY4MzU1YjBlOTVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVsaXggSmFuZGEgPGZlbGl4LmphbmRhQHBvc3Rlby5kZT4KLURhdGU6IFN1biwgMyBNYXkgMjAxNSAxMDozMzoxNSArMDIwMAotU3ViamVjdDogW1BBVENIXSBsaWJwYXJ0ZWQvYXJjaC9saW51eC5jOiBDb21waWxlIHdpdGhvdXQgRU5BQkxFX0RFVklDRV9NQVBQRVIKLQotU2lnbmVkLW9mZi1ieTogQnJpYW4gQy4gTGFuZSA8YmNsQHJlZGhhdC5jb20+Ci0tLS0KLSBsaWJwYXJ0ZWQvYXJjaC9saW51eC5jIHwgMjEgKysrKysrKysrKysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJwYXJ0ZWQvYXJjaC9saW51eC5jIGIvbGlicGFydGVkL2FyY2gvbGludXguYwotaW5kZXggYTE1ODU0Zi4uN2YxMmY1OCAxMDA2NDQKLS0tLSBhL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKLSsrKyBiL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKLUBAIC0yMzA1LDYgKzIzMDUsNyBAQCB6YXNwcmludGYgKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotICAgcmV0dXJuIHIgPCAwID8gTlVMTCA6IHJlc3VsdHA7Ci0gfQotIAotKyNpZmRlZiBFTkFCTEVfREVWSUNFX01BUFBFUgotIHN0YXRpYyBjaGFyICoKLSBkbV9jYW5vbmljYWxfcGF0aCAoUGVkRGV2aWNlIGNvbnN0ICpkZXYpCi0gewotQEAgLTIzMjcsMTQgKzIzMjgsMjEgQEAgZG1fY2Fub25pY2FsX3BhdGggKFBlZERldmljZSBjb25zdCAqZGV2KQotIGVycjoKLSAgICAgICAgIHJldHVybiBOVUxMOwotIH0KLSsjZW5kaWYKLSAKLSBzdGF0aWMgY2hhcioKLSBfZGV2aWNlX2dldF9wYXJ0X3BhdGggKFBlZERldmljZSBjb25zdCAqZGV2LCBpbnQgbnVtKQotIHsKLS0gICAgICAgIGNoYXIgKmRldnBhdGggPSAoZGV2LT50eXBlID09IFBFRF9ERVZJQ0VfRE0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgPyBkbV9jYW5vbmljYWxfcGF0aCAoZGV2KSA6IGRldi0+cGF0aCk7Ci0tICAgICAgICBzaXplX3QgcGF0aF9sZW4gPSBzdHJsZW4gKGRldnBhdGgpOwotKyAgICAgICAgY2hhciAqZGV2cGF0aDsKLSsgICAgICAgIHNpemVfdCBwYXRoX2xlbjsKLSAgICAgICAgIGNoYXIgKnJlc3VsdDsKLSsjaWZkZWYgRU5BQkxFX0RFVklDRV9NQVBQRVIKLSsgICAgICAgIGRldnBhdGggPSAoZGV2LT50eXBlID09IFBFRF9ERVZJQ0VfRE0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgPyBkbV9jYW5vbmljYWxfcGF0aCAoZGV2KSA6IGRldi0+cGF0aCk7Ci0rI2Vsc2UKLSsgICAgICAgIGRldnBhdGggPSBkZXYtPnBhdGg7Ci0rI2VuZGlmCi0rICAgICAgICBwYXRoX2xlbiA9IHN0cmxlbiAoZGV2cGF0aCk7Ci0gICAgICAgICAvKiBDaGVjayBmb3IgZGV2ZnMtc3R5bGUgL2Rpc2MgPT4gL3BhcnROIHRyYW5zZm9ybWF0aW9uCi0gICAgICAgICAgICB1bmNvbmRpdGlvbmFsbHk7IHRoZSBzeXN0ZW0gbWlnaHQgYmUgdXNpbmcgdWRldiB3aXRoIGRldmZzIHJ1bGVzLAotICAgICAgICAgICAgYW5kIGlmIG5vdCB0aGUgdGVzdCBpcyBoYXJtbGVzcy4gKi8KLUBAIC0yMzUwLDggKzIzNTgsMTAgQEAgX2RldmljZV9nZXRfcGFydF9wYXRoIChQZWREZXZpY2UgY29uc3QgKmRldiwgaW50IG51bSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICJwIiA6ICIiKTsKLSAgICAgICAgICAgICAgICAgcmVzdWx0ID0gemFzcHJpbnRmICgiJXMlcyVkIiwgZGV2cGF0aCwgcCwgbnVtKTsKLSAgICAgICAgIH0KLSsjaWZkZWYgRU5BQkxFX0RFVklDRV9NQVBQRVIKLSAgICAgICAgIGlmIChkZXYtPnR5cGUgPT0gUEVEX0RFVklDRV9ETSkKLSAgICAgICAgICAgICAgICAgZnJlZSAoZGV2cGF0aCk7Ci0rI2VuZGlmCi0gICAgICAgICByZXR1cm4gcmVzdWx0OwotIH0KLSAKLUBAIC0yOTQ2LDEyICsyOTU2LDE1IEBAIF9kaXNrX3N5bmNfcGFydF90YWJsZSAoUGVkRGlzayogZGlzaykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyAqbGVuZ3RoKTsKLSAKLSAKLSsjaWZkZWYgRU5BQkxFX0RFVklDRV9NQVBQRVIKLSAgICAgICAgIGlmIChkaXNrLT5kZXYtPnR5cGUgPT0gUEVEX0RFVklDRV9ETSkgewotICAgICAgICAgICAgICAgICBhZGRfcGFydGl0aW9uID0gX2RtX2FkZF9wYXJ0aXRpb247Ci0gICAgICAgICAgICAgICAgIHJlbW92ZV9wYXJ0aXRpb24gPSBfZG1fcmVtb3ZlX3BhcnRpdGlvbjsKLSAgICAgICAgICAgICAgICAgcmVzaXplX3BhcnRpdGlvbiA9IF9kbV9yZXNpemVfcGFydGl0aW9uOwotICAgICAgICAgICAgICAgICBnZXRfcGFydGl0aW9uX3N0YXJ0X2FuZF9sZW5ndGggPSBfZG1fZ2V0X3BhcnRpdGlvbl9zdGFydF9hbmRfbGVuZ3RoOwotLSAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgIH0gZWxzZQotKyNlbmRpZgotKyAgICAgICAgewotICAgICAgICAgICAgICAgICBhZGRfcGFydGl0aW9uID0gX2Jsa3BnX2FkZF9wYXJ0aXRpb247Ci0gICAgICAgICAgICAgICAgIHJlbW92ZV9wYXJ0aXRpb24gPSBfYmxrcGdfcmVtb3ZlX3BhcnRpdGlvbjsKLSAjaWZkZWYgQkxLUEdfUkVTSVpFX1BBUlRJVElPTgotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9ydW4tcHRlc3QKaW5kZXggNjk1YzVlOC4uZjM5YzQ3OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3J1bi1wdGVzdAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvcnVuLXB0ZXN0CkBAIC0xLDMgKzEsNSBAQAogIyEvYmluL3NoCiAKLW1ha2UgLUMgdGVzdHMgY2hlY2stVEVTVFMKK2VjaG8gL2Rldi9zZGExID4+IC9ldGMvdWRldi9tb3VudC5ibGFja2xpc3QuZC9wYXJ0ZWQtdG1wCittYWtlIC1DIHRlc3RzIHRlc3Qtc3VpdGUubG9nCitybSAvZXRjL3VkZXYvbW91bnQuYmxhY2tsaXN0LmQvcGFydGVkLXRtcApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL3BhcnRlZF8zLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFhODE1My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLVNVTU1BUlkgPSAiRGlzayBwYXJ0aXRpb24gZWRpdGluZy9yZXNpemluZyB1dGlsaXR5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3BhcnRlZC9wYXJ0ZWQuaHRtbCIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmYzMWIyNjZkMzQ0MGRkN2VlNTBmOTJjZjY3ZDhlNmMiCi1TRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCi1ERVBFTkRTID0gIm5jdXJzZXMgcmVhZGxpbmUgdXRpbC1saW51eCB2aXJ0dWFsL2xpYmljb252IgotUFIgPSAicjEiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9wYXJ0ZWQvcGFydGVkLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9ub19jaGVjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtZG9jLW1hbmRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtY29tcGlsZS1mYWlsdXJlLXdoaWxlLWRpcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtZmNudGwuaC1pbi1wbGF0Zm9ybV9kZWZzLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWxpYnBhcnRlZF9mc19yZXNpemUtbGluay1hZ2FpbnN0LWxpYnV1aWQtZXhwbGljaXRseS0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Nb3ZlLXB5dGhvbi1oZWxwZXItc2NyaXB0cy11c2VkLW9ubHktaW4tdGVzdHMtdG8tUHl0LnBhdGNoIFwKLQkgICBmaWxlOi8vMDAwMS1saW51eC1JbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWFjcm8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL01ha2VmaWxlIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGlicGFydGVkLVVzZS1yZWFkLW9ubHktd2hlbi1wcm9iaW5nLWRldmljZXMtb24tbGludS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kbV9jaGVjay5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwMjQ3YjZhN2IzMTRmOGVkZWI2MTgxNTlmYTk1ZjljYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NThiNTg5YzIyMjk3Y2FjZGY0MzdmM2JhZmY2ZjA0YjMzMzA4NzUyMWFiMjc0ZjdhYjY3N2NiOGM2YmI3OGU0IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRldmljZS1tYXBwZXIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHRleGluZm8gcHRlc3QKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSAtQyB0ZXN0cyBwcmludC1hbGlnbiBwcmludC1tYXggZHVwLWNsb2JiZXIgZHVwbGljYXRlIGZzLXJlc2l6ZQotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCXQ9JHtEfSR7UFRFU1RfUEFUSH0KLQlta2RpciAkdC9idWlsZC1hdXgKLQljcCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAkdC9idWlsZC1hdXgvCi0JY3AgLXIgJHtTfS90ZXN0cyAkdAotCWNwICR7V09SS0RJUn0vTWFrZWZpbGUgJHQvdGVzdHMvCi0Jc2VkIC1pICJzfF5WRVJTSU9OLip8VkVSU0lPTiA9ICR7UFZ9fGciICR0L3Rlc3RzL01ha2VmaWxlCi0JZm9yIGkgaW4gcHJpbnQtYWxpZ24gcHJpbnQtbWF4IGR1cC1jbG9iYmVyIGR1cGxpY2F0ZSBmcy1yZXNpemU7IFwKLQkgIGRvIGNwICR7Qn0vdGVzdHMvLmxpYnMvJGkgJHQvdGVzdHMvOyBcCi0JZG9uZQotCXNlZCAtZSAnc3wgLi4vcGFydGVkfHwnIC1pICR0L3Rlc3RzLyouc2gKLX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYmFzaCBjb3JldXRpbHMgcGVybCB1dGlsLWxpbnV4LWxvc2V0dXAgcHl0aG9uMyBtYWtlIgotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAicGFydHByb2JlIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3BhcnRwcm9iZV0gPSAiJHtzYmluZGlyfS9wYXJ0cHJvYmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9wYXJ0ZWRfMy4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZmQ5ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMy5iYgpAQCAtMCwwICsxLDU5IEBACitTVU1NQVJZID0gIkRpc2sgcGFydGl0aW9uIGVkaXRpbmcvcmVzaXppbmcgdXRpbGl0eSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9wYXJ0ZWQvcGFydGVkLmh0bWwiCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJmMzFiMjY2ZDM0NDBkZDdlZTUwZjkyY2Y2N2Q4ZTZjIgorU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgorREVQRU5EUyA9ICJuY3Vyc2VzIHJlYWRsaW5lIHV0aWwtbGludXggdmlydHVhbC9saWJpY29udiIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3BhcnRlZC9wYXJ0ZWQtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL25vX2NoZWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1kb2MtbWFuZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbGlicGFydGVkX2ZzX3Jlc2l6ZS1saW5rLWFnYWluc3QtbGlidXVpZC1leHBsaWNpdGx5LS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1vdmUtcHl0aG9uLWhlbHBlci1zY3JpcHRzLXVzZWQtb25seS1pbi10ZXN0cy10by1QeXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGlicGFydGVkLWZzLWFkZC1zb3VyY2VkaXItbGliLXRvLWluY2x1ZGUtcGF0aHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi10ZXN0cy11c2Utc2tpcF8tcmF0aGVyLXRoYW4tc2tpcF90ZXN0Xy13aGljaC1pcy11bmRlLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDkwNjU1ZDA1ZjNjNDcxYWE4ZTE1YTI3NTM2ODg5ZWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTdlMmI0YmQ4NzAxODYyNWM1MTU0MjFkNDUyNGY2ZTNiNTUxNzViNDcyMzAyMDU2MzkxYzVmN2VjY2I4M2Q0NCIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZXZpY2UtbWFwcGVyIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCB0ZXhpbmZvIHB0ZXN0CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgLUMgdGVzdHMgcHJpbnQtYWxpZ24gcHJpbnQtbWF4IGR1cC1jbG9iYmVyIGR1cGxpY2F0ZSBmcy1yZXNpemUgcHJpbnQtZmxhZ3MKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwl0PSR7RH0ke1BURVNUX1BBVEh9CisJbWtkaXIgJHQvYnVpbGQtYXV4CisJY3AgJHtTfS9idWlsZC1hdXgvdGVzdC1kcml2ZXIgJHQvYnVpbGQtYXV4LworCWNwIC1yICR7U30vdGVzdHMgJHQKKwljcCAke0J9L3Rlc3RzL01ha2VmaWxlICR0L3Rlc3RzLworCXNlZCAtaSAic3xeVkVSU0lPTi4qfFZFUlNJT04gPSAke1BWfXxnIiAkdC90ZXN0cy9NYWtlZmlsZQorCXNlZCAtaSAic3xec3JjZGlyID0uKnxzcmNkaXIgPSBcLnxnIiAkdC90ZXN0cy9NYWtlZmlsZQorCXNlZCAtaSAic3xeYWJzX3NyY2RpciA9Lip8YWJzX3NyY2RpciA9IFwufGciICR0L3Rlc3RzL01ha2VmaWxlCisJc2VkIC1pICJzfF5hYnNfdG9wX3NyY2RpciA9Lip8YWJzX3RvcF9zcmNkaXIgPSBcLlwufGciICR0L3Rlc3RzL01ha2VmaWxlCisJc2VkIC1pICJzfF5NYWtlZmlsZTouKnxNYWtlZmlsZTp8ZyIgJHQvdGVzdHMvTWFrZWZpbGUKKwlmb3IgaSBpbiBwcmludC1hbGlnbiBwcmludC1tYXggcHJpbnQtZmxhZ3MgZHVwLWNsb2JiZXIgZHVwbGljYXRlIGZzLXJlc2l6ZTsgXAorCSAgZG8gY3AgJHtCfS90ZXN0cy8ubGlicy8kaSAkdC90ZXN0cy87IFwKKwlkb25lCisJc2VkIC1lICdzfCAuLi9wYXJ0ZWR8fCcgLWkgJHQvdGVzdHMvKi5zaAorfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJiYXNoIGNvcmV1dGlscyBwZXJsIHV0aWwtbGludXgtbG9zZXR1cCBweXRob24zIG1ha2UgZ2F3ayBlMmZzcHJvZ3MtbWtlMmZzIgorCitSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICJcCisgICAgICAgIGdsaWJjLXV0aWxzIFwKKyAgICAgICAgbG9jYWxlLWJhc2UtZW4tdXMgXAorICAgICAgICAiCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJwYXJ0cHJvYmUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcGFydHByb2JlXSA9ICIke3NiaW5kaXJ9L3BhcnRwcm9iZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BiemlwMi9wYnppcDJfMS4xLjEzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGJ6aXAyL3BiemlwMl8xLjEuMTMuYmIKaW5kZXggMTI3NWNjMC4uZTMyMWNkMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGJ6aXAyL3BiemlwMl8xLjEuMTMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGJ6aXAyL3BiemlwMl8xLjEuMTMuYmIKQEAgLTUsNyArNSw3IEBACiBuZXdlciAoaWU6IGFueXRoaW5nIGNvbXByZXNzZWQgd2l0aCBwYnppcDIgY2FuIGJlIGRlY29tcHJlc3NlZCB3aXRoIGJ6aXAyKS4iCiBIT01FUEFHRSA9ICJodHRwOi8vY29tcHJlc3Npb24uY2EvcGJ6aXAyLyIKIFNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiQlNELTQtQ2xhdXNlIgorTElDRU5TRSA9ICJiemlwMi0xLjAuNiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM5OGI4ODMyYzZmODQwY2ZlYmQyMGFiMmJlNmEzNzQzIgogCiBERVBFTkRTID0gImJ6aXAyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwcy8wMDAxLUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzLzAwMDEtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU0ODE5NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzLzAwMDEtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUZyb20gMDgyNWRiOTRmYzkxZmEyMTUwYzBlNjQ5ZTkyY2M4ZGNjNDRmNGIzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogV2VkLCA0IEFwciAyMDE4IDE0OjA5OjQ1ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBvdXQgb2YgdHJlZSBidWlsZHMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIGluY2x1ZGUvbmxzLmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL25scy5oIGIvaW5jbHVkZS9ubHMuaAotaW5kZXggMTE2NmI3Yi4uZjVhYmUwNSAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvbmxzLmgKLSsrKyBiL2luY2x1ZGUvbmxzLmgKLUBAIC02LDcgKzYsNyBAQAotICNkZWZpbmUgUFJPQ1BTX05HX05MU19ICi0gCi0gLyogcHJvZ3JhbXMgaXNzdWluZyB0ZXh0ZG9tYWluKCkgbmVlZCBQQUNLQUdFIHN0cmluZyAqLwotLSNpbmNsdWRlICIuLi9jb25maWcuaCIKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0gCi0gLyogcHJvZ3JhbXMgaXNzdWluZyBiaW5kdGV4dGRvbWFpbigpIGFsc28gbmVlZCBMT0NBTEVESVIgc3RyaW5nICovCi0gI2lmbmRlZiBMT0NBTEVESVIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjE1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNDBlNTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1TVU1NQVJZID0gIlN5c3RlbSBhbmQgcHJvY2VzcyBtb25pdG9yaW5nIHV0aWxpdGllcyIKLURFU0NSSVBUSU9OID0gIlByb2NwcyBjb250YWlucyBhIHNldCBvZiBzeXN0ZW0gdXRpbGl0aWVzIHRoYXQgcHJvdmlkZSBzeXN0ZW0gaW5mb3JtYXRpb24gYWJvdXQgcHJvY2Vzc2VzIHVzaW5nIFwKLXRoZSAvcHJvYyBmaWxlc3lzdGVtLiBUaGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgcHJvZ3JhbXMgcHMsIHRvcCwgdm1zdGF0LCB3LCBraWxsLCBhbmQgc2tpbGwuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRsYWIuY29tL3Byb2Nwcy1uZy9wcm9jcHMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGNmNjZhNDk4NDEyMDAwN2M5ODgxY2M4NzFjZjQ5ZGIgXAotICAgICAgICAgICAgICAgICAgICAiCi0KLURFUEVORFMgPSAibmN1cnNlcyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvcHJvY3BzLW5nL1Byb2R1Y3Rpb24vcHJvY3BzLW5nLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9zeXNjdGwuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyYjA3MTdhN2NiNDc0YjNkNmRmZGVlZGZiYWQyZWNjYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMGJkNzQ0ZmZjYjNkZTJkNTkxZDJmNmFjZjFhNTRhN2JhMDcwZmRjYzQzMmE4NTU5MzFhNTA1NzE0OWYwNDY1IgotCi1TID0gIiR7V09SS0RJUn0vcHJvY3BzLW5nLSR7UFZ9IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2tpbGwgLS1kaXNhYmxlLW1vZGVybi10b3AiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQotCVsgIiR7YmluZGlyfSIgIT0gIiR7YmFzZV9iaW5kaXJ9IiBdICYmIGZvciBpIGluICR7YmFzZV9iaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke2Jhc2VfYmluZGlyfS8kaTsgZG9uZQotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9zYmluZGlyfQotCVsgIiR7c2JpbmRpcn0iICE9ICIke2Jhc2Vfc2JpbmRpcn0iIF0gJiYgZm9yIGkgaW4gJHtiYXNlX3NiaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtzYmluZGlyfS8kaSAke0R9JHtiYXNlX3NiaW5kaXJ9LyRpOyBkb25lCi0gICAgICAgIGlmIFsgIiR7YmFzZV9zYmluZGlyfSIgIT0gIiR7c2JpbmRpcn0iIF07IHRoZW4KLSAgICAgICAgICAgICAgICBybWRpciAke0R9JHtzYmluZGlyfQotICAgICAgICBmaQotCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3lzY3RsLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY3RsLmNvbmYKLSAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY3RsLmQKLSAgICAgICAgICAgICAgICBsbiAtc2YgLi4vc3lzY3RsLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY3RsLmQvOTktc3lzY3RsLmNvbmYKLSAgICAgICAgZmkKLX0KLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vc3lzY3RsLmNvbmYiCi0KLWJpbmRpcl9wcm9ncyA9ICJmcmVlIHBraWxsIHBtYXAgcGdyZXAgcHdkeCBza2lsbCBzbmljZSB0b3AgdXB0aW1lIHciCi1iYXNlX2JpbmRpcl9wcm9ncyArPSAia2lsbCBwaWRvZiBwcyB3YXRjaCIKLWJhc2Vfc2JpbmRpcl9wcm9ncyArPSAic3lzY3RsIgotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIyMDAiCi1BTFRFUk5BVElWRV9QUklPUklUWVtwaWRvZl0gPSAiMTUwIgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICIke2JpbmRpcl9wcm9nc30gJHtiYXNlX2JpbmRpcl9wcm9nc30gJHtiYXNlX3NiaW5kaXJfcHJvZ3N9IgotCi1BTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAia2lsbC4xIHVwdGltZS4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2tpbGwuMV0gPSAiJHttYW5kaXJ9L21hbjEva2lsbC4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3VwdGltZS4xXSA9ICIke21hbmRpcn0vbWFuMS91cHRpbWUuMSIKLQotcHl0aG9uIF9fYW5vbnltb3VzKCkgewotICAgIGZvciBwcm9nIGluIGQuZ2V0VmFyKCdiYXNlX2JpbmRpcl9wcm9ncycpLnNwbGl0KCk6Ci0gICAgICAgIGQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgcHJvZywgJyVzLyVzJyAlIChkLmdldFZhcignYmFzZV9iaW5kaXInKSwgcHJvZykpCi0KLSAgICBmb3IgcHJvZyBpbiBkLmdldFZhcignYmFzZV9zYmluZGlyX3Byb2dzJykuc3BsaXQoKToKLSAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBwcm9nLCAnJXMvJXMnICUgKGQuZ2V0VmFyKCdiYXNlX3NiaW5kaXInKSwgcHJvZykpCi19Ci0KLSMgJ3BzJyBpc24ndCBzdWl0YWJsZSBmb3IgdXNlIGFzIGEgc2VjdXJpdHkgdG9vbCBzbyB3aGl0ZWxpc3QgdGhpcyBDVkUuCi0jIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTU3NTQ3MyNjMwotQ1ZFX0NIRUNLX1dISVRFTElTVCArPSAiQ1ZFLTIwMTgtMTEyMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjE2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgxMGViZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjE2LmJiCkBAIC0wLDAgKzEsNzYgQEAKK1NVTU1BUlkgPSAiU3lzdGVtIGFuZCBwcm9jZXNzIG1vbml0b3JpbmcgdXRpbGl0aWVzIgorREVTQ1JJUFRJT04gPSAiUHJvY3BzIGNvbnRhaW5zIGEgc2V0IG9mIHN5c3RlbSB1dGlsaXRpZXMgdGhhdCBwcm92aWRlIHN5c3RlbSBpbmZvcm1hdGlvbiBhYm91dCBwcm9jZXNzZXMgdXNpbmcgXAordGhlIC9wcm9jIGZpbGVzeXN0ZW0uIFRoZSBwYWNrYWdlIGluY2x1ZGVzIHRoZSBwcm9ncmFtcyBwcywgdG9wLCB2bXN0YXQsIHcsIGtpbGwsIGFuZCBza2lsbC4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGxhYi5jb20vcHJvY3BzLW5nL3Byb2NwcyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00Y2Y2NmE0OTg0MTIwMDA3Yzk4ODFjYzg3MWNmNDlkYiBcCisgICAgICAgICAgICAgICAgICAgICIKKworREVQRU5EUyA9ICJuY3Vyc2VzIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0bGFiLmNvbS9wcm9jcHMtbmcvcHJvY3BzLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIGZpbGU6Ly9zeXNjdGwuY29uZiBcCisgICAgICAgICAgICIKK1NSQ1JFViA9ICI1OWM4OGUxOGYyOTAwMGNlYWY3ZTVmOTgxODFiMDdiZTQ0M2NmMTJmIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCisjIFVwc3RyZWFtIGhhcyBhIGN1c3RvbSBhdXRvZ2VuLnNoIHdoaWNoIGludm9rZXMgcG8vdXBkYXRlLXBvdGZpbGVzIGFzIHRoZXkKKyMgZG9uJ3Qgc2hpcCBhIHBvL1BPVEZJTEVTLmluICh3aGljaCBpcyBzaWxseSkuICBXaXRob3V0IHRoYXQgZmlsZSBnZXR0ZXh0CisjIGRvZXNuJ3QgYmVsaWV2ZSBwby8gaXMgYSBnZXR0ZXh0IGRpcmVjdG9yeSBhbmQgd29uJ3QgZ2VuZXJhdGUgcG8vTWFrZWZpbGUuCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAoIGNkICR7U30gJiYgcG8vdXBkYXRlLXBvdGZpbGVzICkKK30KKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNraWxsIC0tZGlzYWJsZS1tb2Rlcm4tdG9wIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWQsLS13aXRob3V0LXN5c3RlbWQsc3lzdGVtZCIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisJWyAiJHtiaW5kaXJ9IiAhPSAiJHtiYXNlX2JpbmRpcn0iIF0gJiYgZm9yIGkgaW4gJHtiYXNlX2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7YmFzZV9iaW5kaXJ9LyRpOyBkb25lCisJaW5zdGFsbCAtZCAke0R9JHtiYXNlX3NiaW5kaXJ9CisJWyAiJHtzYmluZGlyfSIgIT0gIiR7YmFzZV9zYmluZGlyfSIgXSAmJiBmb3IgaSBpbiAke2Jhc2Vfc2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke3NiaW5kaXJ9LyRpICR7RH0ke2Jhc2Vfc2JpbmRpcn0vJGk7IGRvbmUKKyAgICAgICAgaWYgWyAiJHtiYXNlX3NiaW5kaXJ9IiAhPSAiJHtzYmluZGlyfSIgXTsgdGhlbgorICAgICAgICAgICAgICAgIHJtZGlyICR7RH0ke3NiaW5kaXJ9CisgICAgICAgIGZpCisKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zeXNjdGwuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNjdGwuY29uZgorICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjdGwuZAorICAgICAgICAgICAgICAgIGxuIC1zZiAuLi9zeXNjdGwuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNjdGwuZC85OS1zeXNjdGwuY29uZgorICAgICAgICBmaQorfQorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9zeXNjdGwuY29uZiIKKworYmluZGlyX3Byb2dzID0gImZyZWUgcGtpbGwgcG1hcCBwZ3JlcCBwd2R4IHNraWxsIHNuaWNlIHRvcCB1cHRpbWUgdyIKK2Jhc2VfYmluZGlyX3Byb2dzICs9ICJraWxsIHBpZG9mIHBzIHdhdGNoIgorYmFzZV9zYmluZGlyX3Byb2dzICs9ICJzeXNjdGwiCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjIwMCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3BpZG9mXSA9ICIxNTAiCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gIiR7YmluZGlyX3Byb2dzfSAke2Jhc2VfYmluZGlyX3Byb2dzfSAke2Jhc2Vfc2JpbmRpcl9wcm9nc30iCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJraWxsLjEgdXB0aW1lLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVba2lsbC4xXSA9ICIke21hbmRpcn0vbWFuMS9raWxsLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdXB0aW1lLjFdID0gIiR7bWFuZGlyfS9tYW4xL3VwdGltZS4xIgorCitweXRob24gX19hbm9ueW1vdXMoKSB7CisgICAgZm9yIHByb2cgaW4gZC5nZXRWYXIoJ2Jhc2VfYmluZGlyX3Byb2dzJykuc3BsaXQoKToKKyAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBwcm9nLCAnJXMvJXMnICUgKGQuZ2V0VmFyKCdiYXNlX2JpbmRpcicpLCBwcm9nKSkKKworICAgIGZvciBwcm9nIGluIGQuZ2V0VmFyKCdiYXNlX3NiaW5kaXJfcHJvZ3MnKS5zcGxpdCgpOgorICAgICAgICBkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ2Jhc2Vfc2JpbmRpcicpLCBwcm9nKSkKK30KKworIyAncHMnIGlzbid0IHN1aXRhYmxlIGZvciB1c2UgYXMgYSBzZWN1cml0eSB0b29sIHNvIHdoaXRlbGlzdCB0aGlzIENWRS4KKyMgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xNTc1NDczI2MzCitDVkVfQ0hFQ0tfV0hJVEVMSVNUICs9ICJDVkUtMjAxOC0xMTIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLmluYwppbmRleCA1OTRhMTBjLi42YWIxMjg4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLmluYwpAQCAtNyw3ICs3LDcgQEAKIHByb2Nlc3NlcyBpZGVudGlmaWVkIGJ5IG5hbWUuICBUaGUgZnVzZXIgY29tbWFuZCBpZGVudGlmaWVzIHRoZSBQSURzIFwKIG9mIHByb2Nlc3NlcyB0aGF0IGFyZSB1c2luZyBzcGVjaWZpZWQgZmlsZXMgb3IgZmlsZXN5c3RlbXMuIgogU0VDVElPTiA9ICJiYXNlIgotREVQRU5EUyA9ICJuY3Vyc2VzIHZpcnR1YWwvbGliaW50bCBnZXR0ZXh0LW5hdGl2ZSIKK0RFUEVORFMgPSAibmN1cnNlcyB2aXJ0dWFsL2xpYmludGwiCiBMSUNFTlNFID0gIkdQTHYyIgogCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wc21pc2MvcHNtaXNjLSR7UFZ9LnRhci5neiIKQEAgLTE5LDcgKzE5LDYgQEAKICMgVXBzdHJlYW0gaGFzIGEgY3VzdG9tIGF1dG9nZW4uc2ggd2hpY2ggaW52b2tlcyBwby91cGRhdGUtcG90ZmlsZXMgYXMgdGhleSAKICMgZG9uJ3Qgc2hpcCBhIHBvL1BPVEZJTEVTLmluICh3aGljaCBpcyBzaWxseSkuICBXaXRob3V0IHRoYXQgZmlsZSBnZXR0ZXh0IAogIyBkb2Vzbid0IGJlbGlldmUgcG8vIGlzIGEgZ2V0dGV4dCBkaXJlY3RvcnkgYW5kIHdvbid0IGdlbmVyYXRlIHBvL01ha2VmaWxlLgotRVhUUkFfQVVUT1JFQ09ORl9yZW1vdmUgPSAiLS1leGNsdWRlPWF1dG9wb2ludCIKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewogICAgICggY2QgJHtTfSAmJiBwby91cGRhdGUtcG90ZmlsZXMgKQogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy8wMDAxLU1ha2VmaWxlLmFtLWNyZWF0ZS1zcmMtZGlyZWN0b3J5LWJlZm9yZS1hdHRlbXB0aW5nLXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLzAwMDEtTWFrZWZpbGUuYW0tY3JlYXRlLXNyYy1kaXJlY3RvcnktYmVmb3JlLWF0dGVtcHRpbmctdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQ1MTMwMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLzAwMDEtTWFrZWZpbGUuYW0tY3JlYXRlLXNyYy1kaXJlY3RvcnktYmVmb3JlLWF0dGVtcHRpbmctdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gZGFjMzc1ZjY0MGZlY2Q0NWU2MjU0YThkODcwZWUzN2VjOGY0MTY3MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVGh1LCAyIE5vdiAyMDE3IDE2OjIxOjIyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiBjcmVhdGUgc3JjIGRpcmVjdG9yeSBiZWZvcmUgYXR0ZW1wdGluZyB0byB3cml0ZQotIHRoZXJlCi0KLU90aGVyd2lzZSBvdXQgb2YgdHJlZSBidWlsZHMgd2lsbCBmYWlsLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotCi0tLS0KLSBNYWtlZmlsZS5hbSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDQ0MWFlOTQuLjg4Mjk2OWQgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC04Niw3ICs4Niw3IEBAIEVYVFJBX0RJU1QgPSBzcmMvc2lnbmFtZXMuYyBSRUFETUUubWQgbWlzYy9naXQtdmVyc2lvbi1nZW4KLSBDTEVBTkZJTEVTID0gc3JjL3NpZ25hbWVzLmgKLSAKLSBzcmMvc2lnbmFtZXMuaDogc3JjL3NpZ25hbWVzLmMgTWFrZWZpbGUgc3JjLyQoYW1fX2RpcnN0YW1wKQotLQkJZXhwb3J0IExDX0FMTD1DIDsgXAotKwkJZXhwb3J0IExDX0FMTD1DIDsgbWtkaXIgLXAgc3JjIDsgXAotIAkJQENQUEAgLWRNICQ8IHxcCi0gCQl0ciAtcyAnXHQgJyAnICcgfCBzb3J0IC1uIC1rIDMgfCBzZWQgXAotIAknczojZGVmaW5lIFNJR1woW0EtWl1bQS1aXSpbMC05XSpcKSBcKFswLTldWzAtOV0qXCkuKiRcOntcIFwyLCJcMSIgfSw6cDtkJyB8IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2NfMjMuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2NfMjMuMy5iYgppbmRleCBiM2MzYzdlLi5lNTY5ZjEwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIzLjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzY18yMy4zLmJiCkBAIC00LDcgKzQsNiBAQAogCiBTUkNfVVJJID0gImdpdDovL2dpdGxhYi5jb20vcHNtaXNjL3BzbWlzYy5naXQ7cHJvdG9jb2w9aHR0cHMgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtVUlOVFBUUl9NQVgtaW5zdGVhZC1vZi1fX1dPUkRTSVpFLnBhdGNoIFwKLQkgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS5hbS1jcmVhdGUtc3JjLWRpcmVjdG9yeS1iZWZvcmUtYXR0ZW1wdGluZy10LnBhdGNowqBcCiAgICAgICAgICAgICIKIFNSQ1JFViA9ICI3OGJkZTg0OTA0MWU2YzkxNGEyYTUxN2ViZTEyNTViODZkYzk4NzcyIgogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC8wMDAxLXN5c3RlbWQtdXNlLUVudmlyb25tZW50RmlsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC8wMDAxLXN5c3RlbWQtdXNlLUVudmlyb25tZW50RmlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTJmMmNmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kLzAwMDEtc3lzdGVtZC11c2UtRW52aXJvbm1lbnRGaWxlLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gZGE1MjhkNWQ2MDEzN2YxMzIwMjEwMmI1M2NmMTc4YWJhNDU4NDlhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN0ZWZhbiBBZ25lciA8c3RlZmFuLmFnbmVyQHRvcmFkZXguY29tPgorRGF0ZTogU3VuLCA2IE9jdCAyMDE5IDAwOjA1OjU0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIHN5c3RlbWQ6IHVzZSBFbnZpcm9ubWVudEZpbGUKKworVXNlIE9FIHNwZWNpZmljIGVudmlyb25tZW50IGZpbGUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gQWduZXIgPHN0ZWZhbi5hZ25lckB0b3JhZGV4LmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgIHwgMiArKworIHN5c3RlbWQvcnBjYmluZC5zZXJ2aWNlLmluIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDJkZDk0NzEuLjQ3YTQ2YzAgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTY5LDUgKzY5LDcgQEAgQUNfQ0hFQ0tfSEVBREVSUyhbbnNzLmggcnBjc3ZjL21vdW50LmhdKQorICMgMiAiZXZhbHMiIG5lZWRlZCB0byBleHBhbmQgdmFyaWFibGUgbmFtZXMKKyBBQ19TVUJTVChbX3NiaW5kaXJdKQorIEFDX0NPTkZJR19DT01NQU5EU19QUkUoW2V2YWwgZXZhbCBfc2JpbmRpcj0kc2JpbmRpcl0pCisrQUNfU1VCU1QoW19zeXNjb25mZGlyXSkKKytBQ19DT05GSUdfQ09NTUFORFNfUFJFKFtldmFsIGV2YWwgX3N5c2NvbmZkaXI9JHNiaW5kaXJdKQorIAorIEFDX09VVFBVVChbTWFrZWZpbGUgc3lzdGVtZC9ycGNiaW5kLnNlcnZpY2VdKQorZGlmZiAtLWdpdCBhL3N5c3RlbWQvcnBjYmluZC5zZXJ2aWNlLmluIGIvc3lzdGVtZC9ycGNiaW5kLnNlcnZpY2UuaW4KK2luZGV4IDdiMWM3NGIuLmY0NWVlMWUgMTAwNjQ0CistLS0gYS9zeXN0ZW1kL3JwY2JpbmQuc2VydmljZS5pbgorKysrIGIvc3lzdGVtZC9ycGNiaW5kLnNlcnZpY2UuaW4KK0BAIC0xMSw3ICsxMSw3IEBAIFdhbnRzPXJwY2JpbmQudGFyZ2V0CisgCisgW1NlcnZpY2VdCisgVHlwZT1ub3RpZnkKKy0jIGRpc3RybyBjYW4gcHJvdmlkZSBhIGRyb3AtaW4gYWRkaW5nIEVudmlyb25tZW50RmlsZT0tLz8/PyBpZiBuZWVkZWQuCisrRW52aXJvbm1lbnRGaWxlPS1AX3N5c2NvbmZkaXJAL3JwY2JpbmQuY29uZgorIEV4ZWNTdGFydD1AX3NiaW5kaXJAL3JwY2JpbmQgJFJQQ0JJTkRfT1BUSU9OUyAtdyAtZgorIAorIFtJbnN0YWxsXQorLS0gCisyLjIzLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2JpbmQuY29uZiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNiaW5kLmNvbmYKaW5kZXggMmE0ZGZiYy4uZjQyM2FjMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2JpbmQuY29uZgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcnBjYmluZC5jb25mCkBAIC0xLDMgKzEsMyBAQAogIyBPcHRpb25hbCBhcmd1bWVudHMgcGFzc2VkIHRvIHJwY2JpbmQuCiAjCi1SUENCSU5EX09QVFM9IiIKK1JQQ0JJTkRfT1BUSU9OUz0iIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2JpbmQuc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNiaW5kLnNlcnZpY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljZGFkZTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2JpbmQuc2VydmljZQorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLVtVbml0XQotRGVzY3JpcHRpb249UlBDIEJpbmQgU2VydmljZQotUmVxdWlyZXM9cnBjYmluZC5zb2NrZXQKLQotW1NlcnZpY2VdCi1UeXBlPWZvcmtpbmcKLUVudmlyb25tZW50RmlsZT0tQFNZU0NPTkZESVJAL3JwY2JpbmQuY29uZgotRXhlY1N0YXJ0PUBTQklORElSQC9ycGNiaW5kICRSUENCSU5EX09QVFMKLVN1Y2Nlc3NFeGl0U3RhdHVzPTIKLQotW0luc3RhbGxdCi1BbHNvPXJwY2JpbmQuc29ja2V0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcnBjYmluZC5zb2NrZXQgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcnBjYmluZC5zb2NrZXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2M2MxZDkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2JpbmQuc29ja2V0CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1bVW5pdF0KLURlc2NyaXB0aW9uPVJQQ2JpbmQgU2VydmVyIEFjdGl2YXRpb24gU29ja2V0Ci0KLVtTb2NrZXRdCi1MaXN0ZW5TdHJlYW09L3Zhci9ydW4vcnBjYmluZC5zb2NrCi0KLVtJbnN0YWxsXQotV2FudGVkQnk9c29ja2V0cy50YXJnZXQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZF8xLjIuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZF8xLjIuNS5iYgppbmRleCAxOWQ3NzhiLi5hZmYwMGU1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMS4yLjUuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kXzEuMi41LmJiCkBAIC0xMyw5ICsxMyw4IEBACiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9ycGNiaW5kL3JwY2JpbmQtJHtQVn0udGFyLmJ6MiBcCiAgICAgICAgICAgIGZpbGU6Ly9pbml0LmQgXAogICAgICAgICAgICBmaWxlOi8vcnBjYmluZC5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL3JwY2JpbmQuc29ja2V0IFwKLSAgICAgICAgICAgZmlsZTovL3JwY2JpbmQuc2VydmljZSBcCiAgICAgICAgICAgIGZpbGU6Ly9ycGNiaW5kX2FkZF9vcHRpb25fdG9fZml4X3BvcnRfbnVtYmVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3lzdGVtZC11c2UtRW52aXJvbm1lbnRGaWxlLnBhdGNoIFwKICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiZWQ0NmYwOWI5YzBmYTJkNDkwMTVmNjQzMWJjNWVhN2IiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmNlMzYwNjgzOTYzYjM1YzE5YzQzZjBlZTJjN2YxOGFhNWI4MWVmNDFjM2ZkYmQxNWZmY2IwMGI4YmZmZGE3YSIKQEAgLTI4LDcgKzI3LDcgQEAKIElOSVRTQ1JJUFRfTkFNRSA9ICJycGNiaW5kIgogSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMTIgMiAzIDQgNSAuIHN0b3AgNjAgMCAxIDYgLiIKIAotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJwY2JpbmQuc2VydmljZSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJycGNiaW5kLnNlcnZpY2UgcnBjYmluZC5zb2NrZXQiCiAKIGluaGVyaXQgdXNlcmFkZAogCkBAIC01MCwxMiArNDksNCBAQAogCQktZSAncywvc2Jpbi8sJHtzYmluZGlyfS8sZycgXAogCQkke1dPUktESVJ9L2luaXQuZCA+ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9ycGNiaW5kCiAJY2htb2QgMDc1NSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcnBjYmluZAotCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vcnBjYmluZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3JwY2JpbmQuc29ja2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcnBjYmluZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0Jc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAotCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ycGNiaW5kLnNlcnZpY2UKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC43LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2FhNWYxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC43LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIk11bHRpcGxleGluZyB0ZXJtaW5hbCBtYW5hZ2VyIgotREVTQ1JJUFRJT04gPSAiU2NyZWVuIGlzIGEgZnVsbC1zY3JlZW4gd2luZG93IG1hbmFnZXIgXAotdGhhdCBtdWx0aXBsZXhlcyBhIHBoeXNpY2FsIHRlcm1pbmFsIGJldHdlZW4gc2V2ZXJhbCBcCi1wcm9jZXNzZXMsIHR5cGljYWxseSBpbnRlcmFjdGl2ZSBzaGVsbHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3NjcmVlbi8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz9mdW5jPWFkZGl0ZW0mZ3JvdXA9c2NyZWVuIgotCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2NyZWVuLmg7ZW5kbGluZT0yNjttZDU9Mzk3MTE0Mjk4OTI4OWE4MTk4YTU0NDIyMDcwM2MyYmYiCi0KLURFUEVORFMgPSAibmN1cnNlcyB2aXJ0dWFsL2NyeXB0IFwKLSAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgotUkRFUEVORFNfJHtQTn0gPSAiYmFzZS1maWxlcyIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3NjcmVlbi9zY3JlZW4tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnZmlsZTovL3NjcmVlbi5wYW0nLCAnJywgZCl9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItY29tbS5oLW5vdy1kZXBlbmRzLW9uLXRlcm0uaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1mb3ItbXVsdGlqb2ItYnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtbW9yZS1jb21wYXRpYmlsaXR5LXN0dWZmLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiODk3MWViZDY4ZDA0NmYyODE0ZDEwNDBjYjhlNjY0MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYTc3NTMyOGZhNzgzYmQyYTc4N2Q3MjIwMTRkYmQ5OWM2MDkzZWZmYzExZjMzNzgyNzYwNGMyZWZjNWQyMGMxIgotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW3V0ZW1wdGVyXSA9ICJhY19jdl9oZWFkZXJfdXRlbXB0ZXJfaD15ZXMsYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9bm8sbGlidXRlbXB0ZXIsIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXB0eS1tb2RlPTA2MjAgLS13aXRoLXB0eS1ncm91cD01IC0td2l0aC1zeXMtc2NyZWVucmM9JHtzeXNjb25mZGlyfS9zY3JlZW5yYyBcCi0gICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLWVuYWJsZS1wYW0nLCAnLS1kaXNhYmxlLXBhbScsIGQpfSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWluc3RhbGwgLUQgLW0gNjQ0ICR7U30vZXRjL2V0Y3NjcmVlbnJjICR7RH0vJHtzeXNjb25mZGlyfS9zY3JlZW5yYwotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgotCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3NjcmVlbi5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3NjcmVlbgotCWZpCi19Ci0KLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0JZ3JlcCAtcSAiXiR7YmluZGlyfS9zY3JlZW4kIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzIHx8IGVjaG8gJHtiaW5kaXJ9L3NjcmVlbiA+PiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCi19Ci0KLXBrZ19wb3N0cm1fJHtQTn0gKCkgewotCXByaW50ZiAiJChncmVwIC12ICJeJHtiaW5kaXJ9L3NjcmVlbiQiICREJHtzeXNjb25mZGlyfS9zaGVsbHMpXG4iID4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscwotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjguMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC44LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc3MmViNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC44LjAuYmIKQEAgLTAsMCArMSw1MCBAQAorU1VNTUFSWSA9ICJNdWx0aXBsZXhpbmcgdGVybWluYWwgbWFuYWdlciIKK0RFU0NSSVBUSU9OID0gIlNjcmVlbiBpcyBhIGZ1bGwtc2NyZWVuIHdpbmRvdyBtYW5hZ2VyIFwKK3RoYXQgbXVsdGlwbGV4ZXMgYSBwaHlzaWNhbCB0ZXJtaW5hbCBiZXR3ZWVuIHNldmVyYWwgXAorcHJvY2Vzc2VzLCB0eXBpY2FsbHkgaW50ZXJhY3RpdmUgc2hlbGxzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9zY3JlZW4vIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/ZnVuYz1hZGRpdGVtJmdyb3VwPXNjcmVlbiIKKworU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NjcmVlbi5oO2VuZGxpbmU9MjY7bWQ1PWI4ZGM3MTdjOWEzZGJhODQyYWU2YzQ0Y2EwZjczZjUyIFwKKyAgICAgICAgICAgICAgICAgICAgIgorCitERVBFTkRTID0gIm5jdXJzZXMgdmlydHVhbC9jcnlwdCBcCisgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKK1JERVBFTkRTXyR7UE59ID0gImJhc2UtZmlsZXMiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9zY3JlZW4vc2NyZWVuLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2ZpbGU6Ly9zY3JlZW4ucGFtJywgJycsIGQpfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbW0uaC1ub3ctZGVwZW5kcy1vbi10ZXJtLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtZm9yLW11bHRpam9iLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLW1vcmUtY29tcGF0aWJpbGl0eS1zdHVmZi5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDI3NjIxM2QzYWNkMTAzMzljZDM3ODQ4YjhjNGFiMWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmUxMWIxM2Q4NDg5OTI1ZmRlMjVkZmIwOTM1YmY2ZWQ3MWY5ZWI0N2VmZjIzM2ExODFlMDc4ZmRlNTY1NWFhMSIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbworCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1t1dGVtcHRlcl0gPSAiYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9eWVzLGFjX2N2X2hlYWRlcl91dGVtcHRlcl9oPW5vLGxpYnV0ZW1wdGVyLCIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1wdHktbW9kZT0wNjIwIC0td2l0aC1wdHktZ3JvdXA9NSAtLXdpdGgtc3lzLXNjcmVlbnJjPSR7c3lzY29uZmRpcn0vc2NyZWVucmMgXAorICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS1lbmFibGUtcGFtJywgJy0tZGlzYWJsZS1wYW0nLCBkKX0iCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpbnN0YWxsIC1EIC1tIDY0NCAke1N9L2V0Yy9ldGNzY3JlZW5yYyAke0R9LyR7c3lzY29uZmRpcn0vc2NyZWVucmMKKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KKwkJaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS9zY3JlZW4ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zY3JlZW4KKwlmaQorfQorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworCWdyZXAgLXEgIl4ke2JpbmRpcn0vc2NyZWVuJCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscyB8fCBlY2hvICR7YmluZGlyfS9zY3JlZW4gPj4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscworfQorCitwa2dfcG9zdHJtXyR7UE59ICgpIHsKKwlwcmludGYgIiQoZ3JlcCAtdiAiXiR7YmluZGlyfS9zY3JlZW4kIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzKVxuIiA+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmExYTRiYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMi4yLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIGI5NTY1ZGMyZmUwYzRmN2RhYWVjOTFiN2U4M2JjNzMxM2RlZTJmNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAxMyBBcHIgMjAxNSAxNzowMjoxMyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBVbnNldCBuZWVkX2NoYXJzZXRfYWxpYXMgd2hlbiBidWlsZGluZyBmb3IgbXVzbAotCi1sb2NhbGNoYXJzZXQgdXNlcyBhY19jdl9nbnVfbGlicmFyeV8yXzEgZnJvbSBnbGliYzIxLm00Ci13aGljaCBhY3R1YWxseSBzaG91ZGwgYmUgZml4ZWQgaW4gZ251bGliIGFuZCB0aGVuIGFsbCBkb3duc3RyZWFtCi1wcm9qZWN0cyB3aWxsIGdldCBpdCBldmVudHVhbGx5LiBGb3Igbm93IHdlIGFwcGx5IHRoZSBmaXggdG8KLWNvcmV1dGlscwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYi9nbnVsaWIubWsgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvZ251bGliLm1rIGIvbGliL2dudWxpYi5tawotaW5kZXggZTFkNzRkYi4uYzBlOTJkZCAxMDA2NDQKLS0tLSBhL2xpYi9nbnVsaWIubWsKLSsrKyBiL2xpYi9nbnVsaWIubWsKLUBAIC0xODgyLDcgKzE4ODIsNyBAQCBpbnN0YWxsLWV4ZWMtbG9jYWxjaGFyc2V0OiBhbGwtbG9jYWwKLSAJICBjYXNlICckKGhvc3Rfb3MpJyBpbiBcCi0gCSAgICBkYXJ3aW5bNTZdKikgXAotIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9dHJ1ZSA7OyBcCi0tCSAgICBkYXJ3aW4qIHwgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKSBcCi0rCSAgICBkYXJ3aW4qIHwgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqIHwgbGludXgtbXVzbCopIFwKLSAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPWZhbHNlIDs7IFwKLSAJICAgICopIFwKLSAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPXRydWUgOzsgXAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMi4yL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvcnVuLXB0ZXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzBmNjI3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvcnVuLXB0ZXN0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jIS9iaW4vc2gKLQotbWFrZSAtQyB0ZXN0c3VpdGUgLWsgcnVudGVzdC1URVNUUwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZC00LjIuMi9zZWQtYWRkLXB0ZXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZC00LjIuMi9zZWQtYWRkLXB0ZXN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjkzOTAwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvc2VkLWFkZC1wdGVzdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLXNlZDogYWRkIHB0ZXN0Ci0KLXB0ZXN0IG5lZWRzIGJ1aWxkdGVzdC1URVNUUyBhbmQgcnVudGVzdC1URVNUUyB0YXJnZXRzLgotc2VyaWFsLXRlc3RzIGlzIHJlcXVpcmVkIHRvIGdlbmVyYXRlIHRob3NlIHRhcmdldHMuCi0KLUFuZCBmaXggZm9sbG93aW5nIGVycm9yIGFmdGVyIGFkZCBzZXJpYWwtdGVzdHMuCi0KLVtzbmlwXQotaGVscDJtYW46IGNhbid0IGdldCBgLS1oZWxwJyBpbmZvIGZyb20gLi4vc2VkL3NlZAotbWFrZVsyXTogKioqIFtzZWQuMV0gRXJyb3IgMgotW3NuaXBdCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotCi1TaWduZWQtb2ZmLWJ5OiBDaG9uZyBMdSA8Q2hvbmcuTHVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICB8ICAgIDIgKy0KLSBkb2MvTWFrZWZpbGUuYW0gICAgICAgfCAgICAyICstCi0gdGVzdHN1aXRlL01ha2VmaWxlLmFtIHwgICAgNiArKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOWQzM2VjOS4uNGYwYzUzMiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNCw3ICs0LDcgQEAgQUNfQ09ORklHX0FVWF9ESVIoYnVpbGQtYXV4KQotIEFDX0NPTkZJR19TUkNESVIoW3NlZC9zZWQuY10pCi0gQU1fQ09ORklHX0hFQURFUihjb25maWcuaDpjb25maWdfaC5pbikKLSBBQ19QUkVSRVEoMi42MCkKLS1BTV9JTklUX0FVVE9NQUtFCi0rQU1fSU5JVF9BVVRPTUFLRShbc2VyaWFsLXRlc3RzXSkKLSAKLSBTRURfRkVBVFVSRV9WRVJTSU9OPTQuMi4yCi0gQUNfREVGSU5FX1VOUVVPVEVEKFNFRF9GRUFUVVJFX1ZFUlNJT04sICIkU0VEX0ZFQVRVUkVfVkVSU0lPTiIsCi1kaWZmIC0tZ2l0IGEvZG9jL01ha2VmaWxlLmFtIGIvZG9jL01ha2VmaWxlLmFtCi1pbmRleCBhZjY5NzVjLi42ZmQ4YzlhIDEwMDY0NAotLS0tIGEvZG9jL01ha2VmaWxlLmFtCi0rKysgYi9kb2MvTWFrZWZpbGUuYW0KLUBAIC0yNSw3ICsyNSw3IEBAICQoc3JjZGlyKS9zLXRleGk6IHNlZC1pbi50ZXhpICQoc3JjZGlyKS9ncm91cGlmeS5zZWQKLSAJZmkKLSAJZWNobyBzdGFtcCA+ICQoc3JjZGlyKS9zLXRleGkKLSAKLS1zZWQuMTogJCh0b3Bfc3JjZGlyKS9zZWQvc2VkLmMgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMgJChzcmNkaXIpL3NlZC54Ci0rX3NlZC4xOiAkKHRvcF9zcmNkaXIpL3NlZC9zZWQuYyAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYyAkKHNyY2Rpcikvc2VkLngKLSAJJChIRUxQMk1BTikgLS1uYW1lICJzdHJlYW0gZWRpdG9yIGZvciBmaWx0ZXJpbmcgYW5kIHRyYW5zZm9ybWluZyB0ZXh0IiBcCi0gCSAgLXAgc2VkIC0taW5jbHVkZSAkKHNyY2Rpcikvc2VkLnggLW8gJChzcmNkaXIpL3NlZC4xICQoU0VEKSAKLSAKLWRpZmYgLS1naXQgYS90ZXN0c3VpdGUvTWFrZWZpbGUuYW0gYi90ZXN0c3VpdGUvTWFrZWZpbGUuYW0KLWluZGV4IGQ4MGU3MmMuLmIwNWYwMWUgMTAwNjQ0Ci0tLS0gYS90ZXN0c3VpdGUvTWFrZWZpbGUuYW0KLSsrKyBiL3Rlc3RzdWl0ZS9NYWtlZmlsZS5hbQotQEAgLTk5LDUgKzk5LDExIEBAIEVYVFJBX0RJU1QgPSBcCi0gIyBhdXRvbWFrZSBtYWtlcyBgY2hlY2snIGRlcGVuZCBvbiAkKFRFU1RTKS4gIERlY2xhcmUKLSAjIGR1bW15IHRhcmdldHMgZm9yICQoVEVTVFMpIHNvIHRoYXQgbWFrZSBkb2VzIG5vdCBjb21wbGFpbi4KLSAKLStpbnN0YWxsLXB0ZXN0OgotKwljZCAkKEJVSUxERElSKTsgdGFyIC1jIC0tZXhjbHVkZT0qLm8gJChURVNURElSKSB8ICggY2QgJChERVNURElSKSAmJiB0YXIgLXhmIC0gKQotKwlmb3IgaSBpbiAkKEVYVFJBX0RJU1QpIHRzdC1yZWdleDIuYzsgZG8gaW5zdGFsbCAkKHNyY2RpcikvJCRpICQoREVTVERJUikvJChURVNURElSKTsgZG9uZQotKwlzZWQgLWUgJ3MvXk1ha2VmaWxlOi9fTWFrZWZpbGU6LycgLWUgJ3MvXnNyY2RpciA9IFwoLipcKS9zcmNkaXIgPSAuLycgLWUgJ3MvYmFzaC9zaC8nIC1pICQoREVTVERJUikvJChURVNURElSKS9NYWtlZmlsZQotKwlmb3IgaSBpbiBgZ3JlcCAtcmwgIi4uL3NlZC9zZWQiICQoREVTVERJUikvJChURVNURElSKWA7IGRvIHNlZCAtZSAncy8uLlwvc2VkXC9zZWQvc2VkLycgLWkgJCRpOyBkb25lCi0rCi0gLlBIT05ZOiAkKFNFRFRFU1RTKQotICQoU0VEVEVTVFMpOgotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZC9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTkzZDdkNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsNSBAQAorIyEvYmluL3NoCisKK2Nob3duIG5vYm9keSB0ZXN0c3VpdGUKK2Nob3duIG5vYm9keSAuLi9wdGVzdAorc3Ugbm9ib2R5IC1jICJtYWtlIHRlc3Qtc3VpdGUubG9nIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZF80LjIuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlNDM2YmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZF80LjIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLVNVTU1BUlkgPSAiU3RyZWFtIEVEaXRvciAodGV4dCBmaWx0ZXJpbmcgdXRpbGl0eSkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvc2VkLyIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjI3ZGVmZTFlOTZjMmUxZWNkNGUwYzliZTg5Njc5NDkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2VkL3NlZC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTc7bWQ1PTc2N2FiM2EwNmQ3NTg0ZjZmZDA0NjlhYmFlYzQ0MTJmIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vc2VkL3NlZC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vc2VkLWFkZC1wdGVzdC5wYXRjaCBcCi0JICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQxMTFkZTRmYWEzYjk4NDhhMDY4NmIyZjI2MGM1MDU2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZlYTBhOTRkNGI2MDU4OTRmM2UyZDU1NzJlM2Y5NmU0NDEzYmNhZDNhMDg1YWFlNzM2N2MyY2YwNzkwOGIyZmYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcyBnZXR0ZXh0IHB0ZXN0Ci1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKLVJSRUNPTU1FTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBsb2NhbGUtYmFzZS1ydS1ydSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1hY2wgXAotICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnLS1lbmFibGUtcmVnZXgtdGVzdHMnLCAnJywgZCl9IgotCi1kb19pbnN0YWxsICgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9Ci0JaWYgWyAhICR7RH0ke2JpbmRpcn0gLWVmICR7RH0ke2Jhc2VfYmluZGlyfSBdOyB0aGVuCi0JICAgIG12ICR7RH0ke2JpbmRpcn0vc2VkICR7RH0ke2Jhc2VfYmluZGlyfS9zZWQKLQkgICAgcm1kaXIgJHtEfSR7YmluZGlyfS8KLQlmaQotfQotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJzZWQiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc2VkXSA9ICIke2Jhc2VfYmluZGlyfS9zZWQiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLVRFU1RESVIgPSAidGVzdHN1aXRlIgotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBidWlsZHRlc3QtVEVTVFMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gaW5zdGFsbC1wdGVzdCBCVUlMRERJUj0ke0J9IERFU1RESVI9JHtEfSR7UFRFU1RfUEFUSH0gVEVTVERJUj0ke1RFU1RESVJ9Ci0Jc2VkIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKLQkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAotCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAotCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKLQkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCi0JICAgIC1pICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKLX0KLQotUlBST1ZJREVTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3Vzcm1lcmdlJywgJy9iaW4vc2VkJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZF80LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzllM2E2MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC44LmJiCkBAIC0wLDAgKzEsNjUgQEAKK1NVTU1BUlkgPSAiU3RyZWFtIEVEaXRvciAodGV4dCBmaWx0ZXJpbmcgdXRpbGl0eSkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvc2VkLyIKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzY3ODk1N2IwYzhlOTY0YWE2YzcwZmQ3NzY0MWE3MWUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2VkL3NlZC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTU7bWQ1PWZiM2M3ZTZmYmNhNmY2Njk0Mzg1OTE1M2Q0YmU4ZWZlIFwKKyAgICAgICAgICAgICAgICAgICAgIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vc2VkL3NlZC0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjZkOTA2ZWRmZGIzMjAyMzA0MDU5MjMzZjUxZjlhNzFkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImY3OWIwY2ZlYTcxYjM3YThlZWVjODQ5MGRiNmM1ZjdhZTc3MTljMzU1ODdmMjFlZGIwNjE3ZjM3MGVlZmY2MzMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcyBnZXR0ZXh0IHB0ZXN0CisKK1BBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLS13aXRoLXNlbGludXgsLS13aXRob3V0LXNlbGludXgsbGlic2VsaW51eCIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgZ2F3ayBwZXJsIHBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgcGVybC1tb2R1bGUtZmlsZS1jb21wYXJlIHBlcmwtbW9kdWxlLWZpbGUtZmluZCBwZXJsLW1vZHVsZS1maWxlLXRlbXAgcGVybC1tb2R1bGUtZmlsZS1zdGF0IgorUlJFQ09NTUVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGxvY2FsZS1iYXNlLXJ1LXJ1IGxvY2FsZS1iYXNlLWVuLXVzIGxvY2FsZS1iYXNlLWVsLWdyLmlzby04ODU5LTciCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtYWNsIFwKKyAgICAgICAgICAgICAgICIKKworZG9faW5zdGFsbCAoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorCWlmIFsgISAke0R9JHtiaW5kaXJ9IC1lZiAke0R9JHtiYXNlX2JpbmRpcn0gXTsgdGhlbgorCSAgICBtdiAke0R9JHtiaW5kaXJ9L3NlZCAke0R9JHtiYXNlX2JpbmRpcn0vc2VkCisJICAgIHJtZGlyICR7RH0ke2JpbmRpcn0vCisJZmkKK30KKworQUxURVJOQVRJVkVfJHtQTn0gPSAic2VkIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3NlZF0gPSAiJHtiYXNlX2JpbmRpcn0vc2VkIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgdGVzdHN1aXRlL2dldC1tYi1jdXItbWF4IHRlc3RzdWl0ZS90ZXN0LW1icnRvd2MKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICAgICAgY3AgLXJmICR7U30vdGVzdHN1aXRlLyAke0R9JHtQVEVTVF9QQVRIfQorICAgICAgICBjcCAtcmYgJHtCfS90ZXN0c3VpdGUvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0c3VpdGUvCisgICAgICAgIGNwIC1yZiAke1N9L2J1aWxkLWF1eC8gJHtEfSR7UFRFU1RfUEFUSH0vCisgICAgICAgIGNwICR7Qn0vTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0KKyAgICAgICAgY3AgJHtTfS9pbml0LmNmZyAke0R9JHtQVEVTVF9QQVRIfQorCisgICAgICAgIHNlZCAtZSAncy9eTWFrZWZpbGU6L19NYWtlZmlsZTovJyAtZSAncy9ec3JjZGlyID0gXCguKlwpL3NyY2RpciA9IC4vJyAtZSAncy9iYXNoL3NoLycgLWkgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICAgICAgZm9yIGkgaW4gYGdyZXAgLXJsICJzZWQvc2VkIiAke0R9JHtQVEVTVF9QQVRIfWA7IGRvIHNlZCAtZSAncy8uLlwvc2VkXC9zZWQvc2VkLycgLWkgJGk7IGRvbmUKKworCXNlZCAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJICAgIC1lICdzOmFic190b3BfYnVpbGRkaXIgPS4qOmFic190b3BfYnVpbGRkaXIgPSAuLjpnJyBcCisJICAgIC1lICdzOmFic190b3Bfc3JjZGlyID0uKjphYnNfdG9wX3NyY2RpciA9IC4uOmcnIFwKKwkgICAgLWUgJ3M6YWJzX3NyY2RpciA9Lio6YWJzX3NyY2RpciA9IC4uOmcnIFwKKwkgICAgLWUgJ3M6dG9wX3NyY2RpciA9Lio6dG9wX3NyY2RpciA9IC4uOmcnIFwKKwkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCit9CisKK1JQUk9WSURFU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd1c3JtZXJnZScsICcvYmluL3NlZCcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS1EaXNhYmxlLXVzZS1vZi1zeXNsb2ctZm9yLXN5c3Jvb3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS1EaXNhYmxlLXVzZS1vZi1zeXNsb2ctZm9yLXN5c3Jvb3QucGF0Y2gKaW5kZXggYWFjMmQ0Mi4uYWIzMTdiOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtRGlzYWJsZS11c2Utb2Ytc3lzbG9nLWZvci1zeXNyb290LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLURpc2FibGUtdXNlLW9mLXN5c2xvZy1mb3Itc3lzcm9vdC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gOGNmMzQ1NGQ1NjdmNzcyMzMwMjNiZTQ5YTM5YTMzZTlmMDgzNmY4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZmEyZDk0NTM2NTY2NDEwMDI4MDJkODE2NWU4MGFkYjllNmE3MjlkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgogRGF0ZTogVGh1LCAxNCBBcHIgMjAxNiAxMjoyODo1NyArMDIwMAogU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIHVzZSBvZiBzeXNsb2cgZm9yIHN5c3Jvb3QKQEAgLTEyLDYgKzEyLDcgQEAKIFNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgogU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+CiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHNyYy9ncm91cGFkZC5jICB8IDMgKysrCiAgc3JjL2dyb3VwZGVsLmMgIHwgMyArKysKQEAgLTIzLDcgKzI0LDcgQEAKICA3IGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NyYy9ncm91cGFkZC5jIGIvc3JjL2dyb3VwYWRkLmMKLWluZGV4IDYzZTFjNDguLmE1OTZjNDkgMTAwNjQ0CitpbmRleCAyZGQ4ZWVjLi5lOWM0YmI3IDEwMDY0NAogLS0tIGEvc3JjL2dyb3VwYWRkLmMKICsrKyBiL3NyYy9ncm91cGFkZC5jCiBAQCAtMzQsNiArMzQsOSBAQApAQCAtMzcsNyArMzgsNyBAQAogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlIDxnZXRvcHQuaD4KIGRpZmYgLS1naXQgYS9zcmMvZ3JvdXBkZWwuYyBiL3NyYy9ncm91cGRlbC5jCi1pbmRleCA3MGJlZDAxLi5hYmFiZDgxIDEwMDY0NAoraW5kZXggZjk0MWE4NC4uNWE3MDA1NiAxMDA2NDQKIC0tLSBhL3NyYy9ncm91cGRlbC5jCiArKysgYi9zcmMvZ3JvdXBkZWwuYwogQEAgLTM0LDYgKzM0LDkgQEAKQEAgLTY1LDcgKzY2LDcgQEAKICAjaW5jbHVkZSA8Z2V0b3B0Lmg+CiAgI2luY2x1ZGUgPGdycC5oPgogZGlmZiAtLWdpdCBhL3NyYy9ncm91cG1vZC5jIGIvc3JjL2dyb3VwbW9kLmMKLWluZGV4IDcyZGFmMmMuLjg5NjVmOWQgMTAwNjQ0CitpbmRleCAxZGNhNWZjLi5iYzE0NDM4IDEwMDY0NAogLS0tIGEvc3JjL2dyb3VwbW9kLmMKICsrKyBiL3NyYy9ncm91cG1vZC5jCiBAQCAtMzQsNiArMzQsOSBAQApAQCAtNzksNyArODAsNyBAQAogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlIDxnZXRvcHQuaD4KIGRpZmYgLS1naXQgYS9zcmMvdXNlcmFkZC5jIGIvc3JjL3VzZXJhZGQuYwotaW5kZXggM2FhZjQ1Yy4uMWFiOTE3NCAxMDA2NDQKK2luZGV4IDRhZjBmN2MuLjFiN2JmMDYgMTAwNjQ0CiAtLS0gYS9zcmMvdXNlcmFkZC5jCiArKysgYi9zcmMvdXNlcmFkZC5jCiBAQCAtMzQsNiArMzQsOSBAQApAQCAtOTMsNyArOTQsNyBAQAogICNpbmNsdWRlIDxjdHlwZS5oPgogICNpbmNsdWRlIDxlcnJuby5oPgogZGlmZiAtLWdpdCBhL3NyYy91c2VyZGVsLmMgYi9zcmMvdXNlcmRlbC5jCi1pbmRleCBjOGRlMWQzLi4yNGQzZWE5IDEwMDY0NAoraW5kZXggY2M5NTFlNS4uMTUzZTBiZSAxMDA2NDQKIC0tLSBhL3NyYy91c2VyZGVsLmMKICsrKyBiL3NyYy91c2VyZGVsLmMKIEBAIC0zNCw2ICszNCw5IEBACkBAIC0xMDcsNyArMTA4LDcgQEAKICAjaW5jbHVkZSA8ZXJybm8uaD4KICAjaW5jbHVkZSA8ZmNudGwuaD4KIGRpZmYgLS1naXQgYS9zcmMvdXNlcm1vZC5jIGIvc3JjL3VzZXJtb2QuYwotaW5kZXggY2NmYmI5OS4uMjRmYjYwZCAxMDA2NDQKK2luZGV4IDA1Yjk4NzEuLjIxYzZkYTkgMTAwNjQ0CiAtLS0gYS9zcmMvdXNlcm1vZC5jCiArKysgYi9zcmMvdXNlcm1vZC5jCiBAQCAtMzQsNiArMzQsOSBAQApAQCAtMTIwLDYgKzEyMSwzIEBACiAgI2luY2x1ZGUgPGFzc2VydC5oPgogICNpbmNsdWRlIDxjdHlwZS5oPgogICNpbmNsdWRlIDxlcnJuby5oPgotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtTWFrZS10aGUtc3BfbHN0Y2hnLXNoYWRvdy1maWVsZC1yZXByb2R1Y2libGUtcmUuLTcxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtTWFrZS10aGUtc3BfbHN0Y2hnLXNoYWRvdy1maWVsZC1yZXByb2R1Y2libGUtcmUuLTcxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTBiYTNlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLU1ha2UtdGhlLXNwX2xzdGNoZy1zaGFkb3ctZmllbGQtcmVwcm9kdWNpYmxlLXJlLi03MS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLUZyb20gZmUzNGEyYTBlNDRiYzgwZmYyMTNiZmQxODUwNDZhNWYxMGM5NDk5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzIExhbWIgPGNocmlzQGNocmlzLWxhbWIuY28udWs+Ci1EYXRlOiBXZWQsIDIgSmFuIDIwMTkgMTg6MDY6MTYgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIE1ha2UgdGhlIHNwX2xzdGNoZyBzaGFkb3cgZmllbGQgcmVwcm9kdWNpYmxlIChyZS4gIzcxKQotCi1Gcm9tIDxodHRwczovL2dpdGh1Yi5jb20vc2hhZG93LW1haW50L3NoYWRvdy9wdWxsLzcxPjoKLQotYGBgCi1UaGUgdGhpcmQgZmllbGQgaW4gdGhlIC9ldGMvc2hhZG93IGZpbGUgKHNwX2xzdGNoZykgY29udGFpbnMgdGhlIGRhdGUgb2YKLXRoZSBsYXN0IHBhc3N3b3JkIGNoYW5nZSBleHByZXNzZWQgYXMgdGhlIG51bWJlciBvZiBkYXlzIHNpbmNlIEphbiAxLCAxOTcwLgotQXMgdGhpcyBpcyBhIHJlbGF0aXZlIHRpbWUsIGNyZWF0aW5nIGEgdXNlciB0b2RheSB3aWxsIHJlc3VsdCBpbjoKLQotdXNlcm5hbWU6MTcyMzg6MDo5OTk5OTo3Ojo6Ci13aGlsc3QgY3JlYXRpbmcgdGhlIHNhbWUgdXNlciB0b21vcnJvdyB3aWxsIHJlc3VsdCBpbjoKLQotdXNlcm5hbWU6MTcyMzk6MDo5OTk5OTo3Ojo6Ci1UaGlzIGhhcyBhbiBpbXBhY3QgZm9yIHRoZSBSZXByb2R1Y2libGUgQnVpbGRzWzBdIHByb2plY3Qgd2hlcmUgd2UgYWltIHRvCi1iZSBpbmRlcGVuZGVudCBvZiBhcyBtYW55IGVsZW1lbnRzIHRoZSBidWlsZCBlbnZpcm9ubWVudCBhcyBwb3NzaWJsZSwKLWluY2x1ZGluZyB0aGUgY3VycmVudCBkYXRlLgotCi1UaGlzIHBhdGNoIGNoYW5nZXMgdGhlIGJlaGF2aW91ciB0byB1c2UgdGhlIFNPVVJDRV9EQVRFX0VQT0NIWzFdCi1lbnZpcm9ubWVudCB2YXJpYWJsZSAoaW5zdGVhZCBvZiBKYW4gMSwgMTk3MCkgaWYgdmFsaWQuCi1gYGAKLQotVGhpcyB1cGRhdGVkIFBSIGFkZHMgc29tZSBtaXNzaW5nIGNhbGxzIHRvIGdldHRpbWUgKCkuIFRoaXMgd2FzIG9yaWdpbmFsbHkKLWZpbGVkIGJ5IEpvaGFubmVzIFNjaGF1ZXIgaW4gRGViaWFuIGFzICM5MTc3NzMgWzJdLgotCi1bMF0gaHR0cHM6Ly9yZXByb2R1Y2libGUtYnVpbGRzLm9yZy8KLVsxXSBodHRwczovL3JlcHJvZHVjaWJsZS1idWlsZHMub3JnL3NwZWNzL3NvdXJjZS1kYXRlLWVwb2NoLwotWzJdIGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzkxNzc3MwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBBbGV4IEtpZXJuYW4gPGFsZXgua2llcm5hbkBnbWFpbC5jb20+Ci0tLS0KLSBsaWJtaXNjL3B3ZDJzcHdkLmMgfCAzICstLQotIHNyYy9wd2NrLmMgICAgICAgICB8IDIgKy0KLSBzcmMvcHdjb252LmMgICAgICAgfCAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJtaXNjL3B3ZDJzcHdkLmMgYi9saWJtaXNjL3B3ZDJzcHdkLmMKLWluZGV4IGMxYjliMjlhYzg3My4uNjc5OWRkNTBkNDkwIDEwMDY0NAotLS0tIGEvbGlibWlzYy9wd2Qyc3B3ZC5jCi0rKysgYi9saWJtaXNjL3B3ZDJzcHdkLmMKLUBAIC00MCw3ICs0MCw2IEBACi0gI2luY2x1ZGUgInByb3RvdHlwZXMuaCIKLSAjaW5jbHVkZSAiZGVmaW5lcy5oIgotICNpbmNsdWRlIDxwd2QuaD4KLS1leHRlcm4gdGltZV90IHRpbWUgKHRpbWVfdCAqKTsKLSAKLSAvKgotICAqIHB3ZF90b19zcHdkIC0gY3JlYXRlIGVudHJpZXMgZm9yIG5ldyBzcHdkIHN0cnVjdHVyZQotQEAgLTY2LDcgKzY1LDcgQEAgc3RydWN0IHNwd2QgKnB3ZF90b19zcHdkIChjb25zdCBzdHJ1Y3QgcGFzc3dkICpwdykKLSAJCSAqLwotIAkJc3Auc3BfbWluID0gMDsKLSAJCXNwLnNwX21heCA9ICgxMDAwMEwgKiBEQVkpIC8gU0NBTEU7Ci0tCQlzcC5zcF9sc3RjaGcgPSAobG9uZykgdGltZSAoKHRpbWVfdCAqKSAwKSAvIFNDQUxFOwotKwkJc3Auc3BfbHN0Y2hnID0gKGxvbmcpIGdldHRpbWUgKCkgLyBTQ0FMRTsKLSAJCWlmICgwID09IHNwLnNwX2xzdGNoZykgewotIAkJCS8qIEJldHRlciBkaXNhYmxlIGFnaW5nIHRoYW4gcmVxdWlyaW5nIGEgcGFzc3dvcmQKLSAJCQkgKiBjaGFuZ2UgKi8KLWRpZmYgLS1naXQgYS9zcmMvcHdjay5jIGIvc3JjL3B3Y2suYwotaW5kZXggMGZmYjcxMWVmYjEzLi5mNzAwNzFiMTI1MDAgMTAwNjQ0Ci0tLS0gYS9zcmMvcHdjay5jCi0rKysgYi9zcmMvcHdjay5jCi1AQCAtNjA5LDcgKzYwOSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrX3B3X2ZpbGUgKGludCAqZXJyb3JzLCBib29sICpjaGFuZ2VkKQotIAkJCQkJc3Auc3BfaW5hY3QgID0gLTE7Ci0gCQkJCQlzcC5zcF9leHBpcmUgPSAtMTsKLSAJCQkJCXNwLnNwX2ZsYWcgICA9IFNIQURPV19TUF9GTEFHX1VOU0VUOwotLQkJCQkJc3Auc3BfbHN0Y2hnID0gKGxvbmcpIHRpbWUgKCh0aW1lX3QgKikgMCkgLyBTQ0FMRTsKLSsJCQkJCXNwLnNwX2xzdGNoZyA9IChsb25nKSBnZXR0aW1lICgpIC8gU0NBTEU7Ci0gCQkJCQlpZiAoMCA9PSBzcC5zcF9sc3RjaGcpIHsKLSAJCQkJCQkvKiBCZXR0ZXIgZGlzYWJsZSBhZ2luZyB0aGFuCi0gCQkJCQkJICogcmVxdWlyaW5nIGEgcGFzc3dvcmQgY2hhbmdlCi1kaWZmIC0tZ2l0IGEvc3JjL3B3Y29udi5jIGIvc3JjL3B3Y29udi5jCi1pbmRleCA5YzY5ZmExMzFkOGUuLmY5MzJmMjY2YzU5YyAxMDA2NDQKLS0tLSBhL3NyYy9wd2NvbnYuYwotKysrIGIvc3JjL3B3Y29udi5jCi1AQCAtMjY3LDcgKzI2Nyw3IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQkJc3BlbnQuc3BfZmxhZyAgID0gU0hBRE9XX1NQX0ZMQUdfVU5TRVQ7Ci0gCQl9Ci0gCQlzcGVudC5zcF9wd2RwID0gcHctPnB3X3Bhc3N3ZDsKLS0JCXNwZW50LnNwX2xzdGNoZyA9IChsb25nKSB0aW1lICgodGltZV90ICopIDApIC8gU0NBTEU7Ci0rCQlzcGVudC5zcF9sc3RjaGcgPSAobG9uZykgZ2V0dGltZSAoKSAvIFNDQUxFOwotIAkJaWYgKDAgPT0gc3BlbnQuc3BfbHN0Y2hnKSB7Ci0gCQkJLyogQmV0dGVyIGRpc2FibGUgYWdpbmcgdGhhbiByZXF1aXJpbmcgYSBwYXNzd29yZAotIAkJCSAqIGNoYW5nZSAqLwotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZXJyb3Itd2l0aC1kYXNoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZXJyb3Itd2l0aC1kYXNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzRjYmIwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtY29uZmlndXJlLWVycm9yLXdpdGgtZGFzaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gM2M1MmE4NGZmODc3NTU5MGU3ZTlkYTljMGQ0NDA4YzIzNDk0MzA1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMTcgSnVuIDIwMTkgMTU6MzY6MzQgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBmaXggY29uZmlndXJlIGVycm9yIHdpdGggZGFzaAotCi1BIGNvbmZpZ3VyZSBlcnJvciBvY2N1cnMgd2hlbiAvYmluL3NoIC0+IGRhc2g6Ci0gIGNoZWNraW5nIGZvciBpc19zZWxpbnV4X2VuYWJsZWQgaW4gLWxzZWxpbnV4Li4uIHllcwotICBjaGVja2luZyBmb3Igc2VtYW5hZ2VfY29ubmVjdCBpbiAtbHNlbWFuYWdlLi4uIHllcwotICBjb25maWd1cmU6IDE2MzIyOiB0ZXN0OiB5ZXN5ZXM6IHVuZXhwZWN0ZWQgb3BlcmF0b3IKLQotVXNlICI9IiBpbnN0ZWFkIG9mICI9PSIgc2luY2UgZGFzaCBkb2Vzbid0IHN1cHBvcnQgdGhpcyBvcGVyYXRvci4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0aHViLmNvbS9zaGFkb3ctbWFpbnQvc2hhZG93L2NvbW1pdC8zYzUyYTg0ZmY4Nzc1NTkwZTdlOWRhOWMwZDQ0MDhjMjM0OTQzMDVlXQotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDY3NjI1NTYuLjE5MDdhZmIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTUwMCw3ICs1MDAsNyBAQCBpZiB0ZXN0ICIkd2l0aF9zZWxpbnV4IiAhPSAibm8iOyB0aGVuCi0gCQkJQUNfTVNHX0VSUk9SKFtsaWJzZW1hbmFnZSBub3QgZm91bmRdKQotIAkJZmkKLSAKLS0JCWlmIHRlc3QgIiRzZWxpbnV4X2xpYiRzZW1hbmFnZV9saWIiID09ICJ5ZXN5ZXMiIDsgdGhlbgotKwkJaWYgdGVzdCAiJHNlbGludXhfbGliJHNlbWFuYWdlX2xpYiIgPSAieWVzeWVzIiA7IHRoZW4KLSAJCQlBQ19ERUZJTkUoV0lUSF9TRUxJTlVYLCAxLAotIAkJCSAgICAgICAgICBbQnVpbGQgc2hhZG93IHdpdGggU0VMaW51eCBzdXBwb3J0XSkKLSAJCQlMSUJTRUxJTlVYPSItbHNlbGludXgiCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLXVzZXJhZGQuYy1jcmVhdGUtcGFyZW50LWRpcmVjdG9yaWVzLXdoZW4tbmVjZXNzYXJ5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtdXNlcmFkZC5jLWNyZWF0ZS1wYXJlbnQtZGlyZWN0b3JpZXMtd2hlbi1uZWNlc3NhcnkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYTZmNjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtdXNlcmFkZC5jLWNyZWF0ZS1wYXJlbnQtZGlyZWN0b3JpZXMtd2hlbi1uZWNlc3NhcnkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotU3ViamVjdDogW1BBVENIXSB1c2VyYWRkLmM6IGNyZWF0ZSBwYXJlbnQgZGlyZWN0b3JpZXMgd2hlbiBuZWNlc3NhcnkKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL3VzZXJhZGQuYyB8IDgwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUzIGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3VzZXJhZGQuYyBiL3NyYy91c2VyYWRkLmMKLWluZGV4IDAwYTNjMzAuLjllY2JiNTggMTAwNjQ0Ci0tLS0gYS9zcmMvdXNlcmFkZC5jCi0rKysgYi9zcmMvdXNlcmFkZC5jCi1AQCAtMjAyMSw2ICsyMDIxLDM1IEBAIHN0YXRpYyB2b2lkIHVzcl91cGRhdGUgKHZvaWQpCi0gfQotIAotIC8qCi0rICogbWtkaXJfcCAtIGNyZWF0ZSBkaXJlY3RvcmllcywgaW5jbHVkaW5nIHBhcmVudCBkaXJlY3RvcmllcyB3aGVuIG5lZWRlZAotKyAqCi0rICogc2ltaWxhciB0byBgbWtkaXIgLXAnCi0rICovCi0rdm9pZCBta2Rpcl9wKGNvbnN0IGNoYXIgKnBhdGgpIHsKLSsJaW50IGxlbiA9IHN0cmxlbihwYXRoKTsKLSsJY2hhciBuZXdkaXJbbGVuICsgMV07Ci0rCW1vZGVfdCBtb2RlID0gMDc1NTsKLSsJaW50IGkgPSAwOwotKwotKwlpZiAocGF0aFtpXSA9PSAnXDAnKSB7Ci0rCQlyZXR1cm47Ci0rCX0KLSsKLSsJLyogc2tpcCB0aGUgbGVhZGluZyAnLycgKi8KLSsJaSsrOwotKwotKwl3aGlsZShwYXRoW2ldICE9ICdcMCcpIHsKLSsJCWlmIChwYXRoW2ldID09ICcvJykgewotKwkJCXN0cm5jcHkobmV3ZGlyLCBwYXRoLCBpKTsKLSsJCQluZXdkaXJbaV0gPSAnXDAnOwotKwkJCW1rZGlyKG5ld2RpciwgbW9kZSk7Ci0rCQl9Ci0rCQlpKys7Ci0rCX0KLSsJbWtkaXIocGF0aCwgbW9kZSk7Ci0rfQotKwotKy8qCi0gICogY3JlYXRlX2hvbWUgLSBjcmVhdGUgdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeQotICAqCi0gICoJY3JlYXRlX2hvbWUoKSBjcmVhdGVzIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkgaWYgaXQgZG9lcyBub3QKLUBAIC0yMDM4LDM5ICsyMDY3LDM2IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9ob21lICh2b2lkKQotIAkJCWZhaWxfZXhpdCAoRV9IT01FRElSKTsKLSAJCX0KLSAjZW5kaWYKLS0JCS8qIFhYWCAtIGNyZWF0ZSBtaXNzaW5nIHBhcmVudCBkaXJlY3Rvcmllcy4gIC0tbWFyZWttICovCi0tCQlpZiAobWtkaXIgKHByZWZpeF91c2VyX2hvbWUsIDApICE9IDApIHsKLS0JCQlmcHJpbnRmIChzdGRlcnIsCi0tCQkJICAgICAgICAgXygiJXM6IGNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5ICVzXG4iKSwKLS0JCQkgICAgICAgICBQcm9nLCBwcmVmaXhfdXNlcl9ob21lKTsKLSsJCW1rZGlyX3AodXNlcl9ob21lKTsKLSsJfQotKwlpZiAoYWNjZXNzIChwcmVmaXhfdXNlcl9ob21lLCBGX09LKSAhPSAwKSB7Ci0gI2lmZGVmIFdJVEhfQVVESVQKLS0JCQlhdWRpdF9sb2dnZXIgKEFVRElUX0FERF9VU0VSLCBQcm9nLAotLQkJCSAgICAgICAgICAgICAgImFkZGluZyBob21lIGRpcmVjdG9yeSIsCi0tCQkJICAgICAgICAgICAgICB1c2VyX25hbWUsICh1bnNpZ25lZCBpbnQpIHVzZXJfaWQsCi0tCQkJICAgICAgICAgICAgICBTSEFET1dfQVVESVRfRkFJTFVSRSk7Ci0rCQlhdWRpdF9sb2dnZXIgKEFVRElUX0FERF9VU0VSLCBQcm9nLAotKwkJCSAgICAgICJhZGRpbmcgaG9tZSBkaXJlY3RvcnkiLAotKwkJCSAgICAgIHVzZXJfbmFtZSwgKHVuc2lnbmVkIGludCkgdXNlcl9pZCwKLSsJCQkgICAgICBTSEFET1dfQVVESVRfRkFJTFVSRSk7Ci0gI2VuZGlmCi0tCQkJZmFpbF9leGl0IChFX0hPTUVESVIpOwotLQkJfQotLQkJKHZvaWQpIGNob3duIChwcmVmaXhfdXNlcl9ob21lLCB1c2VyX2lkLCB1c2VyX2dpZCk7Ci0tCQljaG1vZCAocHJlZml4X3VzZXJfaG9tZSwKLS0JCSAgICAgICAwNzc3ICYgfmdldGRlZl9udW0gKCJVTUFTSyIsIEdFVERFRl9ERUZBVUxUX1VNQVNLKSk7Ci0tCQlob21lX2FkZGVkID0gdHJ1ZTsKLSsJCWZhaWxfZXhpdCAoRV9IT01FRElSKTsKLSsJfQotKwkodm9pZCkgY2hvd24gKHByZWZpeF91c2VyX2hvbWUsIHVzZXJfaWQsIHVzZXJfZ2lkKTsKLSsJY2htb2QgKHByZWZpeF91c2VyX2hvbWUsCi0rCSAgICAgICAwNzc3ICYgfmdldGRlZl9udW0gKCJVTUFTSyIsIEdFVERFRl9ERUZBVUxUX1VNQVNLKSk7Ci0rCWhvbWVfYWRkZWQgPSB0cnVlOwotICNpZmRlZiBXSVRIX0FVRElUCi0tCQlhdWRpdF9sb2dnZXIgKEFVRElUX0FERF9VU0VSLCBQcm9nLAotLQkJICAgICAgICAgICAgICAiYWRkaW5nIGhvbWUgZGlyZWN0b3J5IiwKLS0JCSAgICAgICAgICAgICAgdXNlcl9uYW1lLCAodW5zaWduZWQgaW50KSB1c2VyX2lkLAotLQkJICAgICAgICAgICAgICBTSEFET1dfQVVESVRfU1VDQ0VTUyk7Ci0rCWF1ZGl0X2xvZ2dlciAoQVVESVRfQUREX1VTRVIsIFByb2csCi0rCQkgICAgICAiYWRkaW5nIGhvbWUgZGlyZWN0b3J5IiwKLSsJCSAgICAgIHVzZXJfbmFtZSwgKHVuc2lnbmVkIGludCkgdXNlcl9pZCwKLSsJCSAgICAgIFNIQURPV19BVURJVF9TVUNDRVNTKTsKLSAjZW5kaWYKLSAjaWZkZWYgV0lUSF9TRUxJTlVYCi0tCQkvKiBSZXNldCBTRUxpbnV4IHRvIGNyZWF0ZSBmaWxlcyB3aXRoIGRlZmF1bHQgY29udGV4dHMgKi8KLS0JCWlmIChyZXNldF9zZWxpbnV4X2ZpbGVfY29udGV4dCAoKSAhPSAwKSB7Ci0tCQkJZnByaW50ZiAoc3RkZXJyLAotLQkJCSAgICAgICAgIF8oIiVzOiBjYW5ub3QgcmVzZXQgU0VMaW51eCBmaWxlIGNyZWF0aW9uIGNvbnRleHRcbiIpLAotLQkJCSAgICAgICAgIFByb2cpOwotLQkJCWZhaWxfZXhpdCAoRV9IT01FRElSKTsKLS0JCX0KLS0jZW5kaWYKLSsJLyogUmVzZXQgU0VMaW51eCB0byBjcmVhdGUgZmlsZXMgd2l0aCBkZWZhdWx0IGNvbnRleHRzICovCi0rCWlmIChyZXNldF9zZWxpbnV4X2ZpbGVfY29udGV4dCAoKSAhPSAwKSB7Ci0rCQlmcHJpbnRmIChzdGRlcnIsCi0rCQkJIF8oIiVzOiBjYW5ub3QgcmVzZXQgU0VMaW51eCBmaWxlIGNyZWF0aW9uIGNvbnRleHRcbiIpLAotKwkJCSBQcm9nKTsKLSsJCWZhaWxfZXhpdCAoRV9IT01FRElSKTsKLSAJfQotKyNlbmRpZgotIH0KLSAKLSAvKgotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDItQWxsb3ctZm9yLXNldHRpbmctcGFzc3dvcmQtaW4tY2xlYXItdGV4dC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAyLUFsbG93LWZvci1zZXR0aW5nLXBhc3N3b3JkLWluLWNsZWFyLXRleHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYzMzJlNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAyLUFsbG93LWZvci1zZXR0aW5nLXBhc3N3b3JkLWluLWNsZWFyLXRleHQucGF0Y2gKQEAgLTAsMCArMSwzMDEgQEAKK0Zyb20gYTdkOTk1MjI4NDkxYWQ1MjU1YWQ4NmMxZjA0YmEwNzFmNjg4MDg5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFNhdCwgMTYgTm92IDIwMTMgMTU6Mjc6NDcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWxsb3cgZm9yIHNldHRpbmcgcGFzc3dvcmQgaW4gY2xlYXIgdGV4dAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKKy0tLQorIHNyYy9NYWtlZmlsZS5hbSB8ICA4ICsrKystLS0tCisgc3JjL2dyb3VwYWRkLmMgIHwgMjAgKysrKysrKysrKysrKysrLS0tLS0KKyBzcmMvZ3JvdXBtb2QuYyAgfCAyMCArKysrKysrKysrKysrKystLS0tLQorIHNyYy91c2VyYWRkLmMgICB8IDIxICsrKysrKysrKysrKysrKy0tLS0tLQorIHNyYy91c2VybW9kLmMgICB8IDIwICsrKysrKysrKysrKysrKy0tLS0tCisgNSBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggZjMxZmQ3YS4uNGEzMTdhMyAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtMTAzLDEwICsxMDMsMTAgQEAgY2hzaF9MREFERCAgICAgPSAkKExEQUREKSAkKExJQlBBTSkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkNSWVBUX05PUEFNKQorIGNocGFzc3dkX0xEQUREID0gJChMREFERCkgJChMSUJQQU0pICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJDUllQVCkgJChMSUJFQ09ORikKKyBleHBpcnlfTERBREQgPSAkKExEQUREKSAkKExJQkVDT05GKQorIGdwYXNzd2RfTERBREQgID0gJChMREFERCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkNSWVBUKSAkKExJQkVDT05GKQorLWdyb3VwYWRkX0xEQUREID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkVDT05GKQorK2dyb3VwYWRkX0xEQUREID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkVDT05GKSAkKExJQkNSWVBUKQorIGdyb3VwZGVsX0xEQUREID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkVDT05GKQorIGdyb3VwbWVtc19MREFERCA9ICQoTERBREQpICQoTElCUEFNKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCRUNPTkYpCistZ3JvdXBtb2RfTERBREQgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCRUNPTkYpCisrZ3JvdXBtb2RfTERBREQgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCRUNPTkYpICQoTElCQ1JZUFQpCisgZ3JwY2tfTERBREQgICAgPSAkKExEQUREKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCRUNPTkYpCisgZ3JwY29udl9MREFERCAgPSAkKExEQUREKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCRUNPTkYpCisgZ3JwdW5jb252X0xEQUREID0gJChMREFERCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkVDT05GKQorQEAgLTEyNyw5ICsxMjcsOSBAQCBzdV9TT1VSQ0VTICAgICA9IFwKKyAJc3VhdXRoLmMKKyBzdV9MREFERCAgICAgICA9ICQoTERBREQpICQoTElCUEFNKSAkKExJQkFVRElUKSAkKExJQkNSWVBUX05PUEFNKSAkKExJQlNLRVkpICQoTElCTUQpICQoTElCRUNPTkYpCisgc3Vsb2dpbl9MREFERCAgPSAkKExEQUREKSAkKExJQkNSWVBUKSAkKExJQkVDT05GKQorLXVzZXJhZGRfTERBREQgID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQlNFTUFOQUdFKSAkKExJQkFDTCkgJChMSUJBVFRSKSAkKExJQkVDT05GKQorK3VzZXJhZGRfTERBREQgID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQlNFTUFOQUdFKSAkKExJQkFDTCkgJChMSUJBVFRSKSAkKExJQkVDT05GKSAkKExJQkNSWVBUKQorIHVzZXJkZWxfTERBREQgID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQlNFTUFOQUdFKSAkKExJQkVDT05GKQorLXVzZXJtb2RfTERBREQgID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQlNFTUFOQUdFKSAkKExJQkFDTCkgJChMSUJBVFRSKSAkKExJQkVDT05GKQorK3VzZXJtb2RfTERBREQgID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQlNFTUFOQUdFKSAkKExJQkFDTCkgJChMSUJBVFRSKSAkKExJQkVDT05GKSAkKExJQkNSWVBUKQorIHZpcHdfTERBREQgICAgID0gJChMREFERCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkVDT05GKQorIAorIGluc3RhbGwtYW06IGFsbC1hbQorZGlmZiAtLWdpdCBhL3NyYy9ncm91cGFkZC5jIGIvc3JjL2dyb3VwYWRkLmMKK2luZGV4IGU5YzRiYjcuLmQ1NzJjMDAgMTAwNjQ0CistLS0gYS9zcmMvZ3JvdXBhZGQuYworKysrIGIvc3JjL2dyb3VwYWRkLmMKK0BAIC0xMjcsOSArMTI3LDEwIEBAIHN0YXRpYyAvKkBub3JldHVybkAqL3ZvaWQgdXNhZ2UgKGludCBzdGF0dXMpCisgCSh2b2lkKSBmcHV0cyAoXygiICAtbywgLS1ub24tdW5pcXVlICAgICAgICAgICAgICBhbGxvdyB0byBjcmVhdGUgZ3JvdXBzIHdpdGggZHVwbGljYXRlXG4iCisgCSAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9uLXVuaXF1ZSkgR0lEXG4iKSwgdXNhZ2VvdXQpOworIAkodm9pZCkgZnB1dHMgKF8oIiAgLXAsIC0tcGFzc3dvcmQgUEFTU1dPUkQgICAgICAgdXNlIHRoaXMgZW5jcnlwdGVkIHBhc3N3b3JkIGZvciB0aGUgbmV3IGdyb3VwXG4iKSwgdXNhZ2VvdXQpOworKwkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tY2xlYXItcGFzc3dvcmQgUEFTU1dPUkQgdXNlIHRoaXMgY2xlYXIgcGFzc3dvcmQgZm9yIHRoZSBuZXcgZ3JvdXBcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtciwgLS1zeXN0ZW0gICAgICAgICAgICAgICAgICBjcmVhdGUgYSBzeXN0ZW0gYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1SLCAtLXJvb3QgQ0hST09UX0RJUiAgICAgICAgIGRpcmVjdG9yeSB0byBjaHJvb3QgaW50b1xuIiksIHVzYWdlb3V0KTsKKy0JKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIGRpcmVjdG9yeSBwcmVmaXhcbiIpLCB1c2FnZW91dCk7CisrCSh2b2lkKSBmcHV0cyAoXygiICAtQSwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBkaXJlY3RvcnkgcHJlZml4XG4iKSwgdXNhZ2VvdXQpOworIAkodm9pZCkgZnB1dHMgKCJcbiIsIHVzYWdlb3V0KTsKKyAJZXhpdCAoc3RhdHVzKTsKKyB9CitAQCAtMzkxLDEzICszOTIsMTQgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJeyJrZXkiLCAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdLJ30sCisgCQl7Im5vbi11bmlxdWUiLCBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ28nfSwKKyAJCXsicGFzc3dvcmQiLCAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAorKwkJeyJjbGVhci1wYXNzd29yZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorIAkJeyJzeXN0ZW0iLCAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdyJ30sCisgCQl7InJvb3QiLCAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1InfSwKKy0JCXsicHJlZml4IiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorKwkJeyJwcmVmaXgiLCAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdBJ30sCisgCQl7TlVMTCwgMCwgTlVMTCwgJ1wwJ30KKyAJfTsKKyAKKy0Jd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsICJmZzpoSzpvcDpyUjpQOiIsCisrCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiZmc6aEs6b3A6UDpyUjpBOiIsCisgCQkgICAgICAgICAgICAgICAgIGxvbmdfb3B0aW9ucywgTlVMTCkpICE9IC0xKSB7CisgCQlzd2l0Y2ggKGMpIHsKKyAJCWNhc2UgJ2YnOgorQEAgLTQ0OSwxMiArNDUxLDIwIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCQlwZmxnID0gdHJ1ZTsKKyAJCQlncm91cF9wYXNzd2QgPSBvcHRhcmc7CisgCQkJYnJlYWs7CisrCQljYXNlICdQJzoKKysJCQlwZmxnID0gdHJ1ZTsKKysJCQlncm91cF9wYXNzd2QgPSBwd19lbmNyeXB0IChvcHRhcmcsIGNyeXB0X21ha2Vfc2FsdCAoTlVMTCwgTlVMTCkpOworKwkJCWJyZWFrOworIAkJY2FzZSAncic6CisgCQkJcmZsZyA9IHRydWU7CisgCQkJYnJlYWs7CisgCQljYXNlICdSJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19yb290X2ZsYWcgKCkgKi8KKyAJCQlicmVhazsKKy0JCWNhc2UgJ1AnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCisrCQljYXNlICdBJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLworKwkJCWZwcmludGYgKHN0ZGVyciwKKysJCQkJIF8oIiVzOiAtQSBpcyBkZWxpYmVyYXRlbHkgbm90IHN1cHBvcnRlZCBcbiIpLAorKwkJCQkgUHJvZyk7CisrCQkJZXhpdCAoRV9CQURfQVJHKTsKKyAJCQlicmVhazsKKyAJCWRlZmF1bHQ6CisgCQkJdXNhZ2UgKEVfVVNBR0UpOworQEAgLTU4OCw3ICs1OTgsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkodm9pZCkgdGV4dGRvbWFpbiAoUEFDS0FHRSk7CisgCisgCXByb2Nlc3Nfcm9vdF9mbGFnICgiLVIiLCBhcmdjLCBhcmd2KTsKKy0JcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZyAoIi1QIiwgYXJnYywgYXJndik7CisrCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItQSIsIGFyZ2MsIGFyZ3YpOworIAorIAlPUEVOTE9HICgiZ3JvdXBhZGQiKTsKKyAjaWZkZWYgV0lUSF9BVURJVAorZGlmZiAtLWdpdCBhL3NyYy9ncm91cG1vZC5jIGIvc3JjL2dyb3VwbW9kLmMKK2luZGV4IGJjMTQ0MzguLjI1Y2NiNDQgMTAwNjQ0CistLS0gYS9zcmMvZ3JvdXBtb2QuYworKysrIGIvc3JjL2dyb3VwbW9kLmMKK0BAIC0xMzgsOCArMTM4LDkgQEAgc3RhdGljIHZvaWQgdXNhZ2UgKGludCBzdGF0dXMpCisgCSh2b2lkKSBmcHV0cyAoXygiICAtbywgLS1ub24tdW5pcXVlICAgICAgICAgICAgICBhbGxvdyB0byB1c2UgYSBkdXBsaWNhdGUgKG5vbi11bmlxdWUpIEdJRFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1wLCAtLXBhc3N3b3JkIFBBU1NXT1JEICAgICAgIGNoYW5nZSB0aGUgcGFzc3dvcmQgdG8gdGhpcyAoZW5jcnlwdGVkKVxuIgorIAkgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFTU1dPUkRcbiIpLCB1c2FnZW91dCk7CisrCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1jbGVhci1wYXNzd29yZCBQQVNTV09SRCBjaGFuZ2UgdGhlIHBhc3N3b3JkIHRvIHRoaXMgY2xlYXIgUEFTU1dPUkRcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtUiwgLS1yb290IENIUk9PVF9ESVIgICAgICAgICBkaXJlY3RvcnkgdG8gY2hyb290IGludG9cbiIpLCB1c2FnZW91dCk7CistCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7CisrCSh2b2lkKSBmcHV0cyAoXygiICAtQSwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoIlxuIiwgdXNhZ2VvdXQpOworIAlleGl0IChzdGF0dXMpOworIH0KK0BAIC0zODcsMTEgKzM4OCwxMiBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQl7Im5ldy1uYW1lIiwgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ24nfSwKKyAJCXsibm9uLXVuaXF1ZSIsIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnbyd9LAorIAkJeyJwYXNzd29yZCIsICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdwJ30sCisrCQl7ImNsZWFyLXBhc3N3b3JkIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdQJ30sCisgCQl7InJvb3QiLCAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1InfSwKKy0JCXsicHJlZml4IiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorKwkJeyJwcmVmaXgiLCAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdBJ30sCisgCQl7TlVMTCwgMCwgTlVMTCwgJ1wwJ30KKyAJfTsKKy0Jd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsICJnOmhuOm9wOlI6UDoiLAorKwl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwgImc6aG46b3A6UDpSOkE6IiwKKyAJCSAgICAgICAgICAgICAgICAgbG9uZ19vcHRpb25zLCBOVUxMKSkgIT0gLTEpIHsKKyAJCXN3aXRjaCAoYykgeworIAkJY2FzZSAnZyc6CitAQCAtNDE4LDkgKzQyMCwxNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJZ3JvdXBfcGFzc3dkID0gb3B0YXJnOworIAkJCXBmbGcgPSB0cnVlOworIAkJCWJyZWFrOworKwkJY2FzZSAnUCc6CisrCQkJZ3JvdXBfcGFzc3dkID0gcHdfZW5jcnlwdCAob3B0YXJnLCBjcnlwdF9tYWtlX3NhbHQgKE5VTEwsIE5VTEwpKTsKKysJCQlwZmxnID0gdHJ1ZTsKKysJCQlicmVhazsKKyAJCWNhc2UgJ1InOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3Jvb3RfZmxhZyAoKSAqLworIAkJCWJyZWFrOworLQkJY2FzZSAnUCc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KKysJCWNhc2UgJ0EnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCisrCQkJZnByaW50ZiAoc3RkZXJyLAorKwkJCQkgXygiJXM6IC1BIGlzIGRlbGliZXJhdGVseSBub3Qgc3VwcG9ydGVkIFxuIiksCisrCQkJCSBQcm9nKTsKKysJCQlleGl0IChFX0JBRF9BUkcpOworIAkJCWJyZWFrOworIAkJZGVmYXVsdDoKKyAJCQl1c2FnZSAoRV9VU0FHRSk7CitAQCAtNzYxLDcgKzc3MSw3IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCSh2b2lkKSB0ZXh0ZG9tYWluIChQQUNLQUdFKTsKKyAKKyAJcHJvY2Vzc19yb290X2ZsYWcgKCItUiIsIGFyZ2MsIGFyZ3YpOworLQlwcmVmaXggPSBwcm9jZXNzX3ByZWZpeF9mbGFnICgiLVAiLCBhcmdjLCBhcmd2KTsKKysJcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZyAoIi1BIiwgYXJnYywgYXJndik7CisgCisgCU9QRU5MT0cgKCJncm91cG1vZCIpOworICNpZmRlZiBXSVRIX0FVRElUCitkaWZmIC0tZ2l0IGEvc3JjL3VzZXJhZGQuYyBiL3NyYy91c2VyYWRkLmMKK2luZGV4IDFiN2JmMDYuLjQ0ZjA5ZTIgMTAwNjQ0CistLS0gYS9zcmMvdXNlcmFkZC5jCisrKysgYi9zcmMvdXNlcmFkZC5jCitAQCAtODUzLDkgKzg1MywxMCBAQCBzdGF0aWMgdm9pZCB1c2FnZSAoaW50IHN0YXR1cykKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1vLCAtLW5vbi11bmlxdWUgICAgICAgICAgICAgIGFsbG93IHRvIGNyZWF0ZSB1c2VycyB3aXRoIGR1cGxpY2F0ZVxuIgorIAkgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbi11bmlxdWUpIFVJRFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1wLCAtLXBhc3N3b3JkIFBBU1NXT1JEICAgICAgIGVuY3J5cHRlZCBwYXNzd29yZCBvZiB0aGUgbmV3IGFjY291bnRcbiIpLCB1c2FnZW91dCk7CisrCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1jbGVhci1wYXNzd29yZCBQQVNTV09SRCBjbGVhciBwYXNzd29yZCBvZiB0aGUgbmV3IGFjY291bnRcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtciwgLS1zeXN0ZW0gICAgICAgICAgICAgICAgICBjcmVhdGUgYSBzeXN0ZW0gYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1SLCAtLXJvb3QgQ0hST09UX0RJUiAgICAgICAgIGRpcmVjdG9yeSB0byBjaHJvb3QgaW50b1xuIiksIHVzYWdlb3V0KTsKKy0JKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIHByZWZpeCBkaXJlY3Rvcnkgd2hlcmUgYXJlIGxvY2F0ZWQgdGhlIC9ldGMvKiBmaWxlc1xuIiksIHVzYWdlb3V0KTsKKysJKHZvaWQpIGZwdXRzIChfKCIgIC1BLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIHByZWZpeCBkaXJlY3Rvcnkgd2hlcmUgYXJlIGxvY2F0ZWQgdGhlIC9ldGMvKiBmaWxlc1xuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1zLCAtLXNoZWxsIFNIRUxMICAgICAgICAgICAgIGxvZ2luIHNoZWxsIG9mIHRoZSBuZXcgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC11LCAtLXVpZCBVSUQgICAgICAgICAgICAgICAgIHVzZXIgSUQgb2YgdGhlIG5ldyBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOworIAkodm9pZCkgZnB1dHMgKF8oIiAgLVUsIC0tdXNlci1ncm91cCAgICAgICAgICAgICAgY3JlYXRlIGEgZ3JvdXAgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSB1c2VyXG4iKSwgdXNhZ2VvdXQpOworQEAgLTExMzMsOSArMTEzNCwxMCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJeyJuby11c2VyLWdyb3VwIiwgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnTid9LAorIAkJCXsibm9uLXVuaXF1ZSIsICAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ28nfSwKKyAJCQl7InBhc3N3b3JkIiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdwJ30sCisrCQkJeyJjbGVhci1wYXNzd29yZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorIAkJCXsic3lzdGVtIiwgICAgICAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ3InfSwKKyAJCQl7InJvb3QiLCAgICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdSJ30sCistCQkJeyJwcmVmaXgiLCAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorKwkJCXsicHJlZml4IiwgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ0EnfSwKKyAJCQl7InNoZWxsIiwgICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdzJ30sCisgCQkJeyJ1aWQiLCAgICAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAndSd9LAorIAkJCXsidXNlci1ncm91cCIsICAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ1UnfSwKK0BAIC0xMTQ2LDkgKzExNDgsOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQl9OworIAkJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsCisgI2lmZGVmIFdJVEhfU0VMSU5VWAorLQkJICAgICAgICAgICAgICAgICAgICAgICAgICJiOmM6ZDpEZTpmOmc6RzpoazpLOmxtTU5vcDpyUjpQOnM6dTpVWjoiLAorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICJiOmM6ZDpEZTpmOmc6RzpoazpLOmxtTU5vcDpQOnJSOkE6czp1OlVaOiIsCisgI2Vsc2UJCQkJLyogIVdJVEhfU0VMSU5VWCAqLworLQkJICAgICAgICAgICAgICAgICAgICAgICAgICJiOmM6ZDpEZTpmOmc6RzpoazpLOmxtTU5vcDpyUjpQOnM6dTpVIiwKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAiYjpjOmQ6RGU6ZjpnOkc6aGs6SzpsbU1Ob3A6UDpyUjpBOnM6dTpVIiwKKyAjZW5kaWYJCQkJLyogIVdJVEhfU0VMSU5VWCAqLworIAkJICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdfb3B0aW9ucywgTlVMTCkpICE9IC0xKSB7CisgCQkJc3dpdGNoIChjKSB7CitAQCAtMTMyMCwxMiArMTMyMiwxOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJCX0KKyAJCQkJdXNlcl9wYXNzID0gb3B0YXJnOworIAkJCQlicmVhazsKKysJCQljYXNlICdQJzogLyogc2V0IGNsZWFyIHRleHQgcGFzc3dvcmQgKi8KKysJCQkJdXNlcl9wYXNzID0gcHdfZW5jcnlwdCAob3B0YXJnLCBjcnlwdF9tYWtlX3NhbHQgKE5VTEwsIE5VTEwpKTsKKysJCQkJYnJlYWs7CisgCQkJY2FzZSAncic6CisgCQkJCXJmbGcgPSB0cnVlOworIAkJCQlicmVhazsKKyAJCQljYXNlICdSJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19yb290X2ZsYWcgKCkgKi8KKyAJCQkJYnJlYWs7CistCQkJY2FzZSAnUCc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KKysJCQljYXNlICdBJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLworKwkJCQlmcHJpbnRmIChzdGRlcnIsCisrCQkJCQkgXygiJXM6IC1BIGlzIGRlbGliZXJhdGVseSBub3Qgc3VwcG9ydGVkIFxuIiksCisrCQkJCQkgUHJvZyk7CisrCQkJCWV4aXQgKEVfQkFEX0FSRyk7CisgCQkJCWJyZWFrOworIAkJCWNhc2UgJ3MnOgorIAkJCQlpZiAoICAgKCAhVkFMSUQgKG9wdGFyZykgKQorQEAgLTIyNTcsNyArMjI2Niw3IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCisgCXByb2Nlc3Nfcm9vdF9mbGFnICgiLVIiLCBhcmdjLCBhcmd2KTsKKyAKKy0JcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZygiLVAiLCBhcmdjLCBhcmd2KTsKKysJcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZygiLUEiLCBhcmdjLCBhcmd2KTsKKyAKKyAJT1BFTkxPRyAoInVzZXJhZGQiKTsKKyAjaWZkZWYgV0lUSF9BVURJVAorZGlmZiAtLWdpdCBhL3NyYy91c2VybW9kLmMgYi9zcmMvdXNlcm1vZC5jCitpbmRleCAyMWM2ZGE5Li5jZmZkYjNlIDEwMDY0NAorLS0tIGEvc3JjL3VzZXJtb2QuYworKysrIGIvc3JjL3VzZXJtb2QuYworQEAgLTQzMSw4ICs0MzEsOSBAQCBzdGF0aWMgLypAbm9yZXR1cm5AKi92b2lkIHVzYWdlIChpbnQgc3RhdHVzKQorIAkgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGxvY2F0aW9uICh1c2Ugb25seSB3aXRoIC1kKVxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1vLCAtLW5vbi11bmlxdWUgICAgICAgICAgICAgIGFsbG93IHVzaW5nIGR1cGxpY2F0ZSAobm9uLXVuaXF1ZSkgVUlEXG4iKSwgdXNhZ2VvdXQpOworIAkodm9pZCkgZnB1dHMgKF8oIiAgLXAsIC0tcGFzc3dvcmQgUEFTU1dPUkQgICAgICAgdXNlIGVuY3J5cHRlZCBwYXNzd29yZCBmb3IgdGhlIG5ldyBwYXNzd29yZFxuIiksIHVzYWdlb3V0KTsKKysJKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLWNsZWFyLXBhc3N3b3JkIFBBU1NXT1JEIHVzZSBjbGVhciBwYXNzd29yZCBmb3IgdGhlIG5ldyBwYXNzd29yZFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1SLCAtLXJvb3QgQ0hST09UX0RJUiAgICAgICAgIGRpcmVjdG9yeSB0byBjaHJvb3QgaW50b1xuIiksIHVzYWdlb3V0KTsKKy0JKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIHByZWZpeCBkaXJlY3Rvcnkgd2hlcmUgYXJlIGxvY2F0ZWQgdGhlIC9ldGMvKiBmaWxlc1xuIiksIHVzYWdlb3V0KTsKKysJKHZvaWQpIGZwdXRzIChfKCIgIC1BLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIHByZWZpeCBkaXJlY3Rvcnkgd2hlcmUgYXJlIGxvY2F0ZWQgdGhlIC9ldGMvKiBmaWxlc1xuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1zLCAtLXNoZWxsIFNIRUxMICAgICAgICAgICAgIG5ldyBsb2dpbiBzaGVsbCBmb3IgdGhlIHVzZXIgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC11LCAtLXVpZCBVSUQgICAgICAgICAgICAgICAgIG5ldyBVSUQgZm9yIHRoZSB1c2VyIGFjY291bnRcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtVSwgLS11bmxvY2sgICAgICAgICAgICAgICAgICB1bmxvY2sgdGhlIHVzZXIgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKK0BAIC0xMDEwLDggKzEwMTEsOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJeyJtb3ZlLWhvbWUiLCAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ20nfSwKKyAJCQl7Im5vbi11bmlxdWUiLCAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnbyd9LAorIAkJCXsicGFzc3dvcmQiLCAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdwJ30sCisrCQkJeyJjbGVhci1wYXNzd29yZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorIAkJCXsicm9vdCIsICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdSJ30sCistCQkJeyJwcmVmaXgiLCAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKKysJCQl7InByZWZpeCIsICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnQSd9LAorIAkJCXsic2hlbGwiLCAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdzJ30sCisgCQkJeyJ1aWQiLCAgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3UnfSwKKyAJCQl7InVubG9jayIsICAgICAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnVSd9LAorQEAgLTEwMjcsNyArMTAyOSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCQl7TlVMTCwgMCwgTlVMTCwgJ1wwJ30KKyAJCX07CisgCQl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwKKy0JCSAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjOmQ6ZTpmOmc6RzpobDpMbW9wOlI6czp1OlVQOiIKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjOmQ6ZTpmOmc6RzpobDpMbW9wOlA6UjpzOnU6VUE6IgorICNpZmRlZiBFTkFCTEVfU1VCSURTCisgCQkgICAgICAgICAgICAgICAgICAgICAgICAgInY6dzpWOlc6IgorICNlbmRpZgkJCQkvKiBFTkFCTEVfU1VCSURTICovCitAQCAtMTEzMCw5ICsxMTMyLDE3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCQkJdXNlcl9wYXNzID0gb3B0YXJnOworIAkJCQlwZmxnID0gdHJ1ZTsKKyAJCQkJYnJlYWs7CisrCQkJY2FzZSAnUCc6CisrCQkJCXVzZXJfcGFzcyA9IHB3X2VuY3J5cHQgKG9wdGFyZywgY3J5cHRfbWFrZV9zYWx0IChOVUxMLCBOVUxMKSk7CisrCQkJCXBmbGcgPSB0cnVlOworKwkJCQlicmVhazsKKyAJCQljYXNlICdSJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19yb290X2ZsYWcgKCkgKi8KKyAJCQkJYnJlYWs7CistCQkJY2FzZSAnUCc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KKysJCQljYXNlICdBJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLworKwkJCQlmcHJpbnRmIChzdGRlcnIsCisrCQkJCQkgXygiJXM6IC1BIGlzIGRlbGliZXJhdGVseSBub3Qgc3VwcG9ydGVkIFxuIiksCisrCQkJCQkgUHJvZyk7CisrCQkJCWV4aXQgKEVfQkFEX0FSRyk7CisgCQkJCWJyZWFrOworIAkJCWNhc2UgJ3MnOgorIAkJCQlpZiAoIVZBTElEIChvcHRhcmcpKSB7CitAQCAtMjEyNyw3ICsyMTM3LDcgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJKHZvaWQpIHRleHRkb21haW4gKFBBQ0tBR0UpOworIAorIAlwcm9jZXNzX3Jvb3RfZmxhZyAoIi1SIiwgYXJnYywgYXJndik7CistCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItUCIsIGFyZ2MsIGFyZ3YpOworKwlwcmVmaXggPSBwcm9jZXNzX3ByZWZpeF9mbGFnICgiLUEiLCBhcmdjLCBhcmd2KTsKKyAKKyAJT1BFTkxPRyAoInVzZXJtb2QiKTsKKyAjaWZkZWYgV0lUSF9BVURJVApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2FsbG93LWZvci1zZXR0aW5nLXBhc3N3b3JkLWluLWNsZWFyLXRleHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvYWxsb3ctZm9yLXNldHRpbmctcGFzc3dvcmQtaW4tY2xlYXItdGV4dC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE3ZWIwNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvYWxsb3ctZm9yLXNldHRpbmctcGFzc3dvcmQtaW4tY2xlYXItdGV4dC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwMCArMCwwIEBACi1TdWJqZWN0OiBbUEFUQ0hdIEFsbG93IGZvciBzZXR0aW5nIHBhc3N3b3JkIGluIGNsZWFyIHRleHQKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL01ha2VmaWxlLmFtIHwgIDggKysrKy0tLS0KLSBzcmMvZ3JvdXBhZGQuYyAgfCAyMCArKysrKysrKysrKysrKystLS0tLQotIHNyYy9ncm91cG1vZC5jICB8IDIwICsrKysrKysrKysrKysrKy0tLS0tCi0gc3JjL3VzZXJhZGQuYyAgIHwgMjEgKysrKysrKysrKysrKysrLS0tLS0tCi0gc3JjL3VzZXJtb2QuYyAgIHwgMjAgKysrKysrKysrKysrKysrLS0tLS0KLSA1IGZpbGVzIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCAzYzk4YThkLi5iODA5M2Q1IDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC05MywxMCArOTMsMTAgQEAgY2hncGFzc3dkX0xEQUREID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJTRUxJTlVYKSAkKExJQkNSWVBUKQotIGNoc2hfTERBREQgICAgID0gJChMREFERCkgJChMSUJQQU0pICQoTElCU0VMSU5VWCkgJChMSUJDUllQVF9OT1BBTSkgJChMSUJTS0VZKSAkKExJQk1EKQotIGNocGFzc3dkX0xEQUREID0gJChMREFERCkgJChMSUJQQU0pICQoTElCU0VMSU5VWCkgJChMSUJDUllQVCkKLSBncGFzc3dkX0xEQUREICA9ICQoTERBREQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJDUllQVCkKLS1ncm91cGFkZF9MREFERCA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkKLStncm91cGFkZF9MREFERCA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJDUllQVCkKLSBncm91cGRlbF9MREFERCA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkKLSBncm91cG1lbXNfTERBREQgPSAkKExEQUREKSAkKExJQlBBTSkgJChMSUJTRUxJTlVYKQotLWdyb3VwbW9kX0xEQUREID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKQotK2dyb3VwbW9kX0xEQUREID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkNSWVBUKQotIGdycGNrX0xEQUREICAgID0gJChMREFERCkgJChMSUJTRUxJTlVYKQotIGdycGNvbnZfTERBREQgID0gJChMREFERCkgJChMSUJTRUxJTlVYKQotIGdycHVuY29udl9MREFERCA9ICQoTERBREQpICQoTElCU0VMSU5VWCkKLUBAIC0xMTcsOSArMTE3LDkgQEAgc3VfU09VUkNFUyAgICAgPSBcCi0gCXN1YXV0aC5jCi0gc3VfTERBREQgICAgICAgPSAkKExEQUREKSAkKExJQlBBTSkgJChMSUJBVURJVCkgJChMSUJDUllQVF9OT1BBTSkgJChMSUJTS0VZKSAkKExJQk1EKQotIHN1bG9naW5fTERBREQgID0gJChMREFERCkgJChMSUJDUllQVCkKLS11c2VyYWRkX0xEQUREICA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJTRU1BTkFHRSkgJChMSUJBQ0wpICQoTElCQVRUUikKLSt1c2VyYWRkX0xEQUREICA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJTRU1BTkFHRSkgJChMSUJBQ0wpICQoTElCQVRUUikgJChMSUJDUllQVCkKLSB1c2VyZGVsX0xEQUREICA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJTRU1BTkFHRSkKLS11c2VybW9kX0xEQUREICA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJTRU1BTkFHRSkgJChMSUJBQ0wpICQoTElCQVRUUikKLSt1c2VybW9kX0xEQUREICA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJTRU1BTkFHRSkgJChMSUJBQ0wpICQoTElCQVRUUikgJChMSUJDUllQVCkKLSB2aXB3X0xEQUREICAgICA9ICQoTERBREQpICQoTElCU0VMSU5VWCkKLSAKLSBpbnN0YWxsLWFtOiBhbGwtYW0KLWRpZmYgLS1naXQgYS9zcmMvZ3JvdXBhZGQuYyBiL3NyYy9ncm91cGFkZC5jCi1pbmRleCBiNTcwMDZjLi42M2UxYzQ4IDEwMDY0NAotLS0tIGEvc3JjL2dyb3VwYWRkLmMKLSsrKyBiL3NyYy9ncm91cGFkZC5jCi1AQCAtMTIzLDkgKzEyMywxMCBAQCBzdGF0aWMgLypAbm9yZXR1cm5AKi92b2lkIHVzYWdlIChpbnQgc3RhdHVzKQotIAkodm9pZCkgZnB1dHMgKF8oIiAgLW8sIC0tbm9uLXVuaXF1ZSAgICAgICAgICAgICAgYWxsb3cgdG8gY3JlYXRlIGdyb3VwcyB3aXRoIGR1cGxpY2F0ZVxuIgotIAkgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbi11bmlxdWUpIEdJRFxuIiksIHVzYWdlb3V0KTsKLSAJKHZvaWQpIGZwdXRzIChfKCIgIC1wLCAtLXBhc3N3b3JkIFBBU1NXT1JEICAgICAgIHVzZSB0aGlzIGVuY3J5cHRlZCBwYXNzd29yZCBmb3IgdGhlIG5ldyBncm91cFxuIiksIHVzYWdlb3V0KTsKLSsJKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLWNsZWFyLXBhc3N3b3JkIFBBU1NXT1JEIHVzZSB0aGlzIGNsZWFyIHBhc3N3b3JkIGZvciB0aGUgbmV3IGdyb3VwXG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLXIsIC0tc3lzdGVtICAgICAgICAgICAgICAgICAgY3JlYXRlIGEgc3lzdGVtIGFjY291bnRcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtUiwgLS1yb290IENIUk9PVF9ESVIgICAgICAgICBkaXJlY3RvcnkgdG8gY2hyb290IGludG9cbiIpLCB1c2FnZW91dCk7Ci0tCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBkaXJlY3RvcnkgcHJlZml4XG4iKSwgdXNhZ2VvdXQpOwotKwkodm9pZCkgZnB1dHMgKF8oIiAgLUEsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgZGlyZWN0b3J5IHByZWZpeFxuIiksIHVzYWdlb3V0KTsKLSAJKHZvaWQpIGZwdXRzICgiXG4iLCB1c2FnZW91dCk7Ci0gCWV4aXQgKHN0YXR1cyk7Ci0gfQotQEAgLTM4NywxMyArMzg4LDE0IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCXsia2V5IiwgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnSyd9LAotIAkJeyJub24tdW5pcXVlIiwgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdvJ30sCi0gCQl7InBhc3N3b3JkIiwgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3AnfSwKLSsJCXsiY2xlYXItcGFzc3dvcmQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKLSAJCXsic3lzdGVtIiwgICAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAncid9LAotIAkJeyJyb290IiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdSJ30sCi0tCQl7InByZWZpeCIsICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKLSsJCXsicHJlZml4IiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnQSd9LAotIAkJe05VTEwsIDAsIE5VTEwsICdcMCd9Ci0gCX07Ci0gCi0tCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiZmc6aEs6b3A6clI6UDoiLAotKwl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwgImZnOmhLOm9wOlA6clI6QToiLAotIAkJICAgICAgICAgICAgICAgICBsb25nX29wdGlvbnMsIE5VTEwpKSAhPSAtMSkgewotIAkJc3dpdGNoIChjKSB7Ci0gCQljYXNlICdmJzoKLUBAIC00NDUsMTIgKzQ0NywyMCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQkJcGZsZyA9IHRydWU7Ci0gCQkJZ3JvdXBfcGFzc3dkID0gb3B0YXJnOwotIAkJCWJyZWFrOwotKwkJY2FzZSAnUCc6Ci0rCQkJcGZsZyA9IHRydWU7Ci0rCQkJZ3JvdXBfcGFzc3dkID0gcHdfZW5jcnlwdCAob3B0YXJnLCBjcnlwdF9tYWtlX3NhbHQgKE5VTEwsIE5VTEwpKTsKLSsJCQlicmVhazsKLSAJCWNhc2UgJ3InOgotIAkJCXJmbGcgPSB0cnVlOwotIAkJCWJyZWFrOwotIAkJY2FzZSAnUic6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3Nfcm9vdF9mbGFnICgpICovCi0gCQkJYnJlYWs7Ci0tCQljYXNlICdQJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLwotKwkJY2FzZSAnQSc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KLSsJCQlmcHJpbnRmIChzdGRlcnIsCi0rCQkJCSBfKCIlczogLUEgaXMgZGVsaWJlcmF0ZWx5IG5vdCBzdXBwb3J0ZWQgXG4iKSwKLSsJCQkJIFByb2cpOwotKwkJCWV4aXQgKEVfQkFEX0FSRyk7Ci0gCQkJYnJlYWs7Ci0gCQlkZWZhdWx0OgotIAkJCXVzYWdlIChFX1VTQUdFKTsKLUBAIC01ODQsNyArNTk0LDcgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJKHZvaWQpIHRleHRkb21haW4gKFBBQ0tBR0UpOwotIAotIAlwcm9jZXNzX3Jvb3RfZmxhZyAoIi1SIiwgYXJnYywgYXJndik7Ci0tCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItUCIsIGFyZ2MsIGFyZ3YpOwotKwlwcmVmaXggPSBwcm9jZXNzX3ByZWZpeF9mbGFnICgiLUEiLCBhcmdjLCBhcmd2KTsKLSAKLSAJT1BFTkxPRyAoImdyb3VwYWRkIik7Ci0gI2lmZGVmIFdJVEhfQVVESVQKLWRpZmYgLS1naXQgYS9zcmMvZ3JvdXBtb2QuYyBiL3NyYy9ncm91cG1vZC5jCi1pbmRleCBiMjkzYjk4Li43MmRhZjJjIDEwMDY0NAotLS0tIGEvc3JjL2dyb3VwbW9kLmMKLSsrKyBiL3NyYy9ncm91cG1vZC5jCi1AQCAtMTM0LDggKzEzNCw5IEBAIHN0YXRpYyB2b2lkIHVzYWdlIChpbnQgc3RhdHVzKQotIAkodm9pZCkgZnB1dHMgKF8oIiAgLW8sIC0tbm9uLXVuaXF1ZSAgICAgICAgICAgICAgYWxsb3cgdG8gdXNlIGEgZHVwbGljYXRlIChub24tdW5pcXVlKSBHSURcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtcCwgLS1wYXNzd29yZCBQQVNTV09SRCAgICAgICBjaGFuZ2UgdGhlIHBhc3N3b3JkIHRvIHRoaXMgKGVuY3J5cHRlZClcbiIKLSAJICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBU1NXT1JEXG4iKSwgdXNhZ2VvdXQpOwotKwkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tY2xlYXItcGFzc3dvcmQgUEFTU1dPUkQgY2hhbmdlIHRoZSBwYXNzd29yZCB0byB0aGlzIGNsZWFyIFBBU1NXT1JEXG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLVIsIC0tcm9vdCBDSFJPT1RfRElSICAgICAgICAgZGlyZWN0b3J5IHRvIGNocm9vdCBpbnRvXG4iKSwgdXNhZ2VvdXQpOwotLQkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgcHJlZml4IGRpcmVjdG9yeSB3aGVyZSBhcmUgbG9jYXRlZCB0aGUgL2V0Yy8qIGZpbGVzXG4iKSwgdXNhZ2VvdXQpOwotKwkodm9pZCkgZnB1dHMgKF8oIiAgLUEsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgcHJlZml4IGRpcmVjdG9yeSB3aGVyZSBhcmUgbG9jYXRlZCB0aGUgL2V0Yy8qIGZpbGVzXG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKCJcbiIsIHVzYWdlb3V0KTsKLSAJZXhpdCAoc3RhdHVzKTsKLSB9Ci1AQCAtMzgzLDExICszODQsMTIgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJeyJuZXctbmFtZSIsICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICduJ30sCi0gCQl7Im5vbi11bmlxdWUiLCBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ28nfSwKLSAJCXsicGFzc3dvcmQiLCAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAotKwkJeyJjbGVhci1wYXNzd29yZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAotIAkJeyJyb290IiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdSJ30sCi0tCQl7InByZWZpeCIsICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKLSsJCXsicHJlZml4IiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnQSd9LAotIAkJe05VTEwsIDAsIE5VTEwsICdcMCd9Ci0gCX07Ci0tCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiZzpobjpvcDpSOlA6IiwKLSsJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsICJnOmhuOm9wOlA6UjpBOiIsCi0gCQkgICAgICAgICAgICAgICAgIGxvbmdfb3B0aW9ucywgTlVMTCkpICE9IC0xKSB7Ci0gCQlzd2l0Y2ggKGMpIHsKLSAJCWNhc2UgJ2cnOgotQEAgLTQxNCw5ICs0MTYsMTcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCWdyb3VwX3Bhc3N3ZCA9IG9wdGFyZzsKLSAJCQlwZmxnID0gdHJ1ZTsKLSAJCQlicmVhazsKLSsJCWNhc2UgJ1AnOgotKwkJCWdyb3VwX3Bhc3N3ZCA9IHB3X2VuY3J5cHQgKG9wdGFyZywgY3J5cHRfbWFrZV9zYWx0IChOVUxMLCBOVUxMKSk7Ci0rCQkJcGZsZyA9IHRydWU7Ci0rCQkJYnJlYWs7Ci0gCQljYXNlICdSJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19yb290X2ZsYWcgKCkgKi8KLSAJCQlicmVhazsKLS0JCWNhc2UgJ1AnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCi0rCQljYXNlICdBJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLwotKwkJCWZwcmludGYgKHN0ZGVyciwKLSsJCQkJIF8oIiVzOiAtQSBpcyBkZWxpYmVyYXRlbHkgbm90IHN1cHBvcnRlZCBcbiIpLAotKwkJCQkgUHJvZyk7Ci0rCQkJZXhpdCAoRV9CQURfQVJHKTsKLSAJCQlicmVhazsKLSAJCWRlZmF1bHQ6Ci0gCQkJdXNhZ2UgKEVfVVNBR0UpOwotQEAgLTc1Nyw3ICs3NjcsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkodm9pZCkgdGV4dGRvbWFpbiAoUEFDS0FHRSk7Ci0gCi0gCXByb2Nlc3Nfcm9vdF9mbGFnICgiLVIiLCBhcmdjLCBhcmd2KTsKLS0JcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZyAoIi1QIiwgYXJnYywgYXJndik7Ci0rCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItQSIsIGFyZ2MsIGFyZ3YpOwotIAotIAlPUEVOTE9HICgiZ3JvdXBtb2QiKTsKLSAjaWZkZWYgV0lUSF9BVURJVAotZGlmZiAtLWdpdCBhL3NyYy91c2VyYWRkLmMgYi9zcmMvdXNlcmFkZC5jCi1pbmRleCBjNzRlNDkxLi43MjE0ZTcyIDEwMDY0NAotLS0tIGEvc3JjL3VzZXJhZGQuYwotKysrIGIvc3JjL3VzZXJhZGQuYwotQEAgLTgyOSw5ICs4MjksMTAgQEAgc3RhdGljIHZvaWQgdXNhZ2UgKGludCBzdGF0dXMpCi0gCSh2b2lkKSBmcHV0cyAoXygiICAtbywgLS1ub24tdW5pcXVlICAgICAgICAgICAgICBhbGxvdyB0byBjcmVhdGUgdXNlcnMgd2l0aCBkdXBsaWNhdGVcbiIKLSAJICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub24tdW5pcXVlKSBVSURcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtcCwgLS1wYXNzd29yZCBQQVNTV09SRCAgICAgICBlbmNyeXB0ZWQgcGFzc3dvcmQgb2YgdGhlIG5ldyBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOwotKwkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tY2xlYXItcGFzc3dvcmQgUEFTU1dPUkQgY2xlYXIgcGFzc3dvcmQgb2YgdGhlIG5ldyBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLXIsIC0tc3lzdGVtICAgICAgICAgICAgICAgICAgY3JlYXRlIGEgc3lzdGVtIGFjY291bnRcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtUiwgLS1yb290IENIUk9PVF9ESVIgICAgICAgICBkaXJlY3RvcnkgdG8gY2hyb290IGludG9cbiIpLCB1c2FnZW91dCk7Ci0tCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7Ci0rCSh2b2lkKSBmcHV0cyAoXygiICAtQSwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtcywgLS1zaGVsbCBTSEVMTCAgICAgICAgICAgICBsb2dpbiBzaGVsbCBvZiB0aGUgbmV3IGFjY291bnRcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtdSwgLS11aWQgVUlEICAgICAgICAgICAgICAgICB1c2VyIElEIG9mIHRoZSBuZXcgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKLSAJKHZvaWQpIGZwdXRzIChfKCIgIC1VLCAtLXVzZXItZ3JvdXAgICAgICAgICAgICAgIGNyZWF0ZSBhIGdyb3VwIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgdXNlclxuIiksIHVzYWdlb3V0KTsKLUBAIC0xMTA0LDkgKzExMDUsMTAgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCXsibm8tdXNlci1ncm91cCIsICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ04nfSwKLSAJCQl7Im5vbi11bmlxdWUiLCAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdvJ30sCi0gCQkJeyJwYXNzd29yZCIsICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAotKwkJCXsiY2xlYXItcGFzc3dvcmQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKLSAJCQl7InN5c3RlbSIsICAgICAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdyJ30sCi0gCQkJeyJyb290IiwgICAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUid9LAotLQkJCXsicHJlZml4IiwgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKLSsJCQl7InByZWZpeCIsICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdBJ30sCi0gCQkJeyJzaGVsbCIsICAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncyd9LAotIAkJCXsidWlkIiwgICAgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3UnfSwKLSAJCQl7InVzZXItZ3JvdXAiLCAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdVJ30sCi1AQCAtMTExNyw5ICsxMTE5LDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJfTsKLSAJCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LAotICNpZmRlZiBXSVRIX1NFTElOVVgKLS0JCSAgICAgICAgICAgICAgICAgICAgICAgICAiYjpjOmQ6RGU6ZjpnOkc6aGs6SzpsbU1Ob3A6clI6UDpzOnU6VVo6IiwKLSsJCSAgICAgICAgICAgICAgICAgICAgICAgICAiYjpjOmQ6RGU6ZjpnOkc6aGs6SzpsbU1Ob3A6UDpyUjpBOnM6dTpVWjoiLAotICNlbHNlCQkJCS8qICFXSVRIX1NFTElOVVggKi8KLS0JCSAgICAgICAgICAgICAgICAgICAgICAgICAiYjpjOmQ6RGU6ZjpnOkc6aGs6SzpsbU1Ob3A6clI6UDpzOnU6VSIsCi0rCQkgICAgICAgICAgICAgICAgICAgICAgICAgImI6YzpkOkRlOmY6ZzpHOmhrOks6bG1NTm9wOlA6clI6QTpzOnU6VSIsCi0gI2VuZGlmCQkJCS8qICFXSVRIX1NFTElOVVggKi8KLSAJCSAgICAgICAgICAgICAgICAgICAgICAgICBsb25nX29wdGlvbnMsIE5VTEwpKSAhPSAtMSkgewotIAkJCXN3aXRjaCAoYykgewotQEAgLTEyODUsMTIgKzEyODcsMTkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCQl9Ci0gCQkJCXVzZXJfcGFzcyA9IG9wdGFyZzsKLSAJCQkJYnJlYWs7Ci0rCQkJY2FzZSAnUCc6IC8qIHNldCBjbGVhciB0ZXh0IHBhc3N3b3JkICovCi0rCQkJCXVzZXJfcGFzcyA9IHB3X2VuY3J5cHQgKG9wdGFyZywgY3J5cHRfbWFrZV9zYWx0IChOVUxMLCBOVUxMKSk7Ci0rCQkJCWJyZWFrOwotIAkJCWNhc2UgJ3InOgotIAkJCQlyZmxnID0gdHJ1ZTsKLSAJCQkJYnJlYWs7Ci0gCQkJY2FzZSAnUic6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3Nfcm9vdF9mbGFnICgpICovCi0gCQkJCWJyZWFrOwotLQkJCWNhc2UgJ1AnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCi0rCQkJY2FzZSAnQSc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KLSsJCQkJZnByaW50ZiAoc3RkZXJyLAotKwkJCQkJIF8oIiVzOiAtQSBpcyBkZWxpYmVyYXRlbHkgbm90IHN1cHBvcnRlZCBcbiIpLAotKwkJCQkJIFByb2cpOwotKwkJCQlleGl0IChFX0JBRF9BUkcpOwotIAkJCQlicmVhazsKLSAJCQljYXNlICdzJzoKLSAJCQkJaWYgKCAgICggIVZBTElEIChvcHRhcmcpICkKLUBAIC0yMTQ4LDcgKzIxNTcsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAotIAlwcm9jZXNzX3Jvb3RfZmxhZyAoIi1SIiwgYXJnYywgYXJndik7Ci0gCi0tCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcoIi1QIiwgYXJnYywgYXJndik7Ci0rCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcoIi1BIiwgYXJnYywgYXJndik7Ci0gCi0gCU9QRU5MT0cgKCJ1c2VyYWRkIik7Ci0gI2lmZGVmIFdJVEhfQVVESVQKLWRpZmYgLS1naXQgYS9zcmMvdXNlcm1vZC5jIGIvc3JjL3VzZXJtb2QuYwotaW5kZXggZTU3MTQyNi4uY2NmYmI5OSAxMDA2NDQKLS0tLSBhL3NyYy91c2VybW9kLmMKLSsrKyBiL3NyYy91c2VybW9kLmMKLUBAIC00MjQsOCArNDI0LDkgQEAgc3RhdGljIC8qQG5vcmV0dXJuQCovdm9pZCB1c2FnZSAoaW50IHN0YXR1cykKLSAJICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBsb2NhdGlvbiAodXNlIG9ubHkgd2l0aCAtZClcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtbywgLS1ub24tdW5pcXVlICAgICAgICAgICAgICBhbGxvdyB1c2luZyBkdXBsaWNhdGUgKG5vbi11bmlxdWUpIFVJRFxuIiksIHVzYWdlb3V0KTsKLSAJKHZvaWQpIGZwdXRzIChfKCIgIC1wLCAtLXBhc3N3b3JkIFBBU1NXT1JEICAgICAgIHVzZSBlbmNyeXB0ZWQgcGFzc3dvcmQgZm9yIHRoZSBuZXcgcGFzc3dvcmRcbiIpLCB1c2FnZW91dCk7Ci0rCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1jbGVhci1wYXNzd29yZCBQQVNTV09SRCB1c2UgY2xlYXIgcGFzc3dvcmQgZm9yIHRoZSBuZXcgcGFzc3dvcmRcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtUiwgLS1yb290IENIUk9PVF9ESVIgICAgICAgICBkaXJlY3RvcnkgdG8gY2hyb290IGludG9cbiIpLCB1c2FnZW91dCk7Ci0tCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7Ci0rCSh2b2lkKSBmcHV0cyAoXygiICAtQSwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtcywgLS1zaGVsbCBTSEVMTCAgICAgICAgICAgICBuZXcgbG9naW4gc2hlbGwgZm9yIHRoZSB1c2VyIGFjY291bnRcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtdSwgLS11aWQgVUlEICAgICAgICAgICAgICAgICBuZXcgVUlEIGZvciB0aGUgdXNlciBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLVUsIC0tdW5sb2NrICAgICAgICAgICAgICAgICAgdW5sb2NrIHRoZSB1c2VyIGFjY291bnRcbiIpLCB1c2FnZW91dCk7Ci1AQCAtMTAwMiw4ICsxMDAzLDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCXsibW92ZS1ob21lIiwgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdtJ30sCi0gCQkJeyJub24tdW5pcXVlIiwgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ28nfSwKLSAJCQl7InBhc3N3b3JkIiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAotKwkJCXsiY2xlYXItcGFzc3dvcmQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKLSAJCQl7InJvb3QiLCAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUid9LAotLQkJCXsicHJlZml4IiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdQJ30sCi0rCQkJeyJwcmVmaXgiLCAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ0EnfSwKLSAJCQl7InNoZWxsIiwgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncyd9LAotIAkJCXsidWlkIiwgICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd1J30sCi0gCQkJeyJ1bmxvY2siLCAgICAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ1UnfSwKLUBAIC0xMDE5LDcgKzEwMjEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQkJe05VTEwsIDAsIE5VTEwsICdcMCd9Ci0gCQl9OwotIAkJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsCi0tCQkgICAgICAgICAgICAgICAgICAgICAgICAgImFjOmQ6ZTpmOmc6RzpobDpMbW9wOlI6czp1OlVQOiIKLSsJCSAgICAgICAgICAgICAgICAgICAgICAgICAiYWM6ZDplOmY6ZzpHOmhsOkxtb3A6UDpSOnM6dTpVQToiCi0gI2lmZGVmIEVOQUJMRV9TVUJJRFMKLSAJCSAgICAgICAgICAgICAgICAgICAgICAgICAidjp3OlY6VzoiCi0gI2VuZGlmCQkJCS8qIEVOQUJMRV9TVUJJRFMgKi8KLUBAIC0xMTE5LDkgKzExMjEsMTcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCQl1c2VyX3Bhc3MgPSBvcHRhcmc7Ci0gCQkJCXBmbGcgPSB0cnVlOwotIAkJCQlicmVhazsKLSsJCQljYXNlICdQJzoKLSsJCQkJdXNlcl9wYXNzID0gcHdfZW5jcnlwdCAob3B0YXJnLCBjcnlwdF9tYWtlX3NhbHQgKE5VTEwsIE5VTEwpKTsKLSsJCQkJcGZsZyA9IHRydWU7Ci0rCQkJCWJyZWFrOwotIAkJCWNhc2UgJ1InOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3Jvb3RfZmxhZyAoKSAqLwotIAkJCQlicmVhazsKLS0JCQljYXNlICdQJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLwotKwkJCWNhc2UgJ0EnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCi0rCQkJCWZwcmludGYgKHN0ZGVyciwKLSsJCQkJCSBfKCIlczogLUEgaXMgZGVsaWJlcmF0ZWx5IG5vdCBzdXBwb3J0ZWQgXG4iKSwKLSsJCQkJCSBQcm9nKTsKLSsJCQkJZXhpdCAoRV9CQURfQVJHKTsKLSAJCQkJYnJlYWs7Ci0gCQkJY2FzZSAncyc6Ci0gCQkJCWlmICghVkFMSUQgKG9wdGFyZykpIHsKLUBAIC0yMDk4LDcgKzIxMDgsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkodm9pZCkgdGV4dGRvbWFpbiAoUEFDS0FHRSk7Ci0gCi0gCXByb2Nlc3Nfcm9vdF9mbGFnICgiLVIiLCBhcmdjLCBhcmd2KTsKLS0JcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZyAoIi1QIiwgYXJnYywgYXJndik7Ci0rCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItQSIsIGFyZ2MsIGFyZ3YpOwotIAotIAlPUEVOTE9HICgidXNlcm1vZCIpOwotICNpZmRlZiBXSVRIX0FVRElUCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvY29tbW9uaW8uYy1maXgtdW5leHBlY3RlZC1vcGVuLWZhaWx1cmUtaW4tY2hyb290LWVudi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9jb21tb25pby5jLWZpeC11bmV4cGVjdGVkLW9wZW4tZmFpbHVyZS1pbi1jaHJvb3QtZW52LnBhdGNoCmluZGV4IDRmYTNkMTguLjk4MjUyMTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9jb21tb25pby5jLWZpeC11bmV4cGVjdGVkLW9wZW4tZmFpbHVyZS1pbi1jaHJvb3QtZW52LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9jb21tb25pby5jLWZpeC11bmV4cGVjdGVkLW9wZW4tZmFpbHVyZS1pbi1jaHJvb3QtZW52LnBhdGNoCkBAIC0xLDMgKzEsOCBAQAorRnJvbSA2NjUzM2M3YzZmMzQ3ZDI1NzAyMDY3NWExZWQ2ZTBjNTljYmJjM2YwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxNyBKdWwgMjAxNCAxNTo1MzozNCArMDgwMAorU3ViamVjdDogW1BBVENIXSBjb21tb25pby5jLWZpeC11bmV4cGVjdGVkLW9wZW4tZmFpbHVyZS1pbi1jaHJvb3QtZW52CisKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCiAKIGNvbW1vbmlvLmM6IGZpeCB1bmV4cGVjdGVkIG9wZW4gZmFpbHVyZSBpbiBjaHJvb3QgZW52aXJvbm1lbnQKQEAgLTEwLDE1ICsxNSwxNiBAQAogdGhlIGNvZGVzLgogCiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKIC0tLQotIGxpYi9jb21tb25pby5jIHwgICAxNiArKysrKysrKysrKystLS0tCisgbGliL2NvbW1vbmlvLmMgfCAxNiArKysrKysrKysrKystLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9saWIvY29tbW9uaW8uYyBiL2xpYi9jb21tb25pby5jCi1pbmRleCBjYzUzNmJmLi41MWNhZmQ5IDEwMDY0NAoraW5kZXggMTZmYTdlNy4uZDZiYzI5NyAxMDA2NDQKIC0tLSBhL2xpYi9jb21tb25pby5jCiArKysgYi9saWIvY29tbW9uaW8uYwotQEAgLTYxMywxMCArNjEzLDE4IEBAIGludCBjb21tb25pb19vcGVuIChzdHJ1Y3QgY29tbW9uaW9fZGIgKmRiLCBpbnQgbW9kZSkKK0BAIC02MzIsMTAgKzYzMiwxOCBAQCBpbnQgY29tbW9uaW9fb3BlbiAoc3RydWN0IGNvbW1vbmlvX2RiICpkYiwgaW50IG1vZGUpCiAgCWRiLT5jdXJzb3IgPSBOVUxMOwogIAlkYi0+Y2hhbmdlZCA9IGZhbHNlOwogIApAQCAtNDEsNiArNDcsMyBAQAogIAlkYi0+ZnAgPSBOVUxMOwogIAlpZiAoZmQgPj0gMCkgewogICNpZmRlZiBXSVRIX1RDQgotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9zaGFkb3ctcmVsYXhlZC11c2VybmFtZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvc2hhZG93LXJlbGF4ZWQtdXNlcm5hbWVzLnBhdGNoCmluZGV4IDFhZjA0ZDUuLmNjODMzMzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9zaGFkb3ctcmVsYXhlZC11c2VybmFtZXMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL3NoYWRvdy1yZWxheGVkLXVzZXJuYW1lcy5wYXRjaApAQCAtMSwyNiArMSwzNyBAQAorRnJvbSBjYTQ3MmQ2ODY2ZTU0NWFhYTcwYTcwMDIwZTMyMjZmMjM2YThhYWZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2hhbiBIYWkgPHNoYW4uaGFpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDEzIFNlcCAyMDE2IDEzOjQ1OjQ2ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHNoYWRvdzogdXNlIHJlbGF4ZWQgdXNlcm5hbWVzCiAKIFRoZSBncm91cGFkZCBmcm9tIHNoYWRvdyBkb2VzIG5vdCBhbGxvdyB1cHBlciBjYXNlIGdyb3VwIG5hbWVzLCB0aGUKIHNhbWUgaXMgdHJ1ZSBmb3IgdGhlIHVwc3RyZWFtIHNoYWRvdy4gQnV0IGRpc3RyaWJ1dGlvbnMgbGlrZQogRGViaWFuL1VidW50dS9DZW50T1MgaGFzIHRoZWlyIG93biB3YXkgdG8gY29wZSB3aXRoIHRoaXMgcHJvYmxlbSwKIHRoaXMgcGF0Y2ggaXMgcGlja2VkIHVwIGZyb20gQ2VudE9TIHJlbGVhc2UgNy4wIHRvIHJlbGF4IHRoZSB1c2VybmFtZXMKIHJlc3RyaWN0aW9ucyB0byBhbGxvdyB0aGUgdXBwZXIgY2FzZSBncm91cCBuYW1lcywgYW5kIHRoZSByZWxheGF0aW9uIGlzCi1QT1NJWCBjb21wbGlhbnQgYmVjYXVzZSBQT1NJWCBpbmRpY2F0ZSB0aGF0IHVzZXJuYW1lcyBhcmUgY29tcG9zZWQgb2YgCitQT1NJWCBjb21wbGlhbnQgYmVjYXVzZSBQT1NJWCBpbmRpY2F0ZSB0aGF0IHVzZXJuYW1lcyBhcmUgY29tcG9zZWQgb2YKIGNoYXJhY3RlcnMgZnJvbSB0aGUgcG9ydGFibGUgZmlsZW5hbWUgY2hhcmFjdGVyIHNldCBbQS1aYS16MC05Ll8tXS4KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLVNpZ25lZC1vZmYtYnk6IFNoYW4gSGFpIDxzaGFuLmhhaUB3aW5kcml2ZXIuY29tPiAKK1NpZ25lZC1vZmYtYnk6IFNoYW4gSGFpIDxzaGFuLmhhaUB3aW5kcml2ZXIuY29tPgogCi1kaWZmIC11cnBOIGEvbGlibWlzYy9jaGtuYW1lLmMgYi9saWJtaXNjL2Noa25hbWUuYwotaW5kZXggNTA4OTExMi4uZjQwYTBkYSAxMDA2NDQKKy0tLQorIGxpYm1pc2MvY2hrbmFtZS5jICB8IDMwICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQorIG1hbi9ncm91cGFkZC44LnhtbCB8ICA2IC0tLS0tLQorIG1hbi91c2VyYWRkLjgueG1sICB8ICA4ICstLS0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYm1pc2MvY2hrbmFtZS5jIGIvbGlibWlzYy9jaGtuYW1lLmMKK2luZGV4IDkwZjE4NWMuLjY1NzYyYjQgMTAwNjQ0CiAtLS0gYS9saWJtaXNjL2Noa25hbWUuYwogKysrIGIvbGlibWlzYy9jaGtuYW1lLmMKLUBAIC00OSwyMSArNDksMjggQEAKLSBzdGF0aWMgYm9vbCBpc192YWxpZF9uYW1lIChjb25zdCBjaGFyICpuYW1lKQotIHsKK0BAIC01NSwyMiArNTUsMjggQEAgc3RhdGljIGJvb2wgaXNfdmFsaWRfbmFtZSAoY29uc3QgY2hhciAqbmFtZSkKKyAJfQorIAogIAkvKgogLQkgKiBVc2VyL2dyb3VwIG5hbWVzIG11c3QgbWF0Y2ggW2Etel9dW2EtejAtOV8tXSpbJF0KIC0JICovCistCiAtCWlmICgoJ1wwJyA9PSAqbmFtZSkgfHwKIC0JICAgICEoKCgnYScgPD0gKm5hbWUpICYmICgneicgPj0gKm5hbWUpKSB8fCAoJ18nID09ICpuYW1lKSkpIHsKICsgICAgICAgICAqIFVzZXIvZ3JvdXAgbmFtZXMgbXVzdCBtYXRjaCBnbnUgZS1yZWdleDoKQEAgLTU1LDI4ICs2NiwyOCBAQAogIAkJCXJldHVybiBmYWxzZTsKICAJCX0KICAJfQotZGlmZiAtdXJwTiBhL21hbi9ncm91cGFkZC44LnhtbCBiL21hbi9ncm91cGFkZC44LnhtbAotaW5kZXggMjMwZmQwYy4uOTRmNzgwNyAxMDA2NDQKK2RpZmYgLS1naXQgYS9tYW4vZ3JvdXBhZGQuOC54bWwgYi9tYW4vZ3JvdXBhZGQuOC54bWwKK2luZGV4IDFlNThmMDkuLmQ4MDRiNjEgMTAwNjQ0CiAtLS0gYS9tYW4vZ3JvdXBhZGQuOC54bWwKICsrKyBiL21hbi9ncm91cGFkZC44LnhtbAotQEAgLTIyMiwxMiArMjIyLDYgQEAKK0BAIC0yNzIsMTIgKzI3Miw2IEBACisgCiAgICAgPHJlZnNlY3QxIGlkPSdjYXZlYXRzJz4KICAgICAgIDx0aXRsZT5DQVZFQVRTPC90aXRsZT4KLSAgICAgIDxwYXJhPgorLSAgICAgPHBhcmE+CiAtICAgICAgIEdyb3VwbmFtZXMgbXVzdCBzdGFydCB3aXRoIGEgbG93ZXIgY2FzZSBsZXR0ZXIgb3IgYW4gdW5kZXJzY29yZSwKIC0gICAgICAgZm9sbG93ZWQgYnkgbG93ZXIgY2FzZSBsZXR0ZXJzLCBkaWdpdHMsIHVuZGVyc2NvcmVzLCBvciBkYXNoZXMuCiAtICAgICAgIFRoZXkgY2FuIGVuZCB3aXRoIGEgZG9sbGFyIHNpZ24uCiAtICAgICAgIEluIHJlZ3VsYXIgZXhwcmVzc2lvbiB0ZXJtczogW2Etel9dW2EtejAtOV8tXSpbJF0/CiAtICAgICA8L3BhcmE+Ci0tICAgICA8cGFyYT4KKyAgICAgIDxwYXJhPgogICAgICAgICBHcm91cG5hbWVzIG1heSBvbmx5IGJlIHVwIHRvICZHUk9VUF9OQU1FX01BWF9MRU5HVEg7IGNoYXJhY3RlcnMgbG9uZy4KICAgICAgIDwvcGFyYT4KLSAgICAgIDxwYXJhPgotZGlmZiAtdXJwTiBhL21hbi91c2VyYWRkLjgueG1sIGIvbWFuL3VzZXJhZGQuOC54bWwKLWluZGV4IDVkZWM5ODkuLmZlNjIzYjkgMTAwNjQ0CitkaWZmIC0tZ2l0IGEvbWFuL3VzZXJhZGQuOC54bWwgYi9tYW4vdXNlcmFkZC44LnhtbAoraW5kZXggYTE2ZDczMC4uYzBiZDc3NyAxMDA2NDQKIC0tLSBhL21hbi91c2VyYWRkLjgueG1sCiArKysgYi9tYW4vdXNlcmFkZC44LnhtbAotQEAgLTMzNiw3ICszMzYsNyBAQAorQEAgLTM2Niw3ICszNjYsNyBAQAogIAk8L3Rlcm0+CiAgCTxsaXN0aXRlbT4KICAJICA8cGFyYT4KQEAgLTg1LDE2ICs5NiwxNiBAQAogIAkgICAgd2lkZSBzZXR0aW5nIGZyb20gPGZpbGVuYW1lPi9ldGMvbG9naW4uZGVmczwvZmlsZW5hbWU+CiAgCSAgICAoPG9wdGlvbj5DUkVBVEVfSE9NRTwvb3B0aW9uPikgaXMgc2V0IHRvCiAgCSAgICA8cmVwbGFjZWFibGU+eWVzPC9yZXBsYWNlYWJsZT4uCi1AQCAtNjA3LDEyICs2MDcsNiBAQAorQEAgLTY2MCwxMiArNjYwLDYgQEAKKyAgICAgICB0aGUgdXNlciBhY2NvdW50IGNyZWF0aW9uIHJlcXVlc3QuCiAgICAgIDwvcGFyYT4KICAKLSAgICAgPHBhcmE+CistICAgIDxwYXJhPgogLSAgICAgIFVzZXJuYW1lcyBtdXN0IHN0YXJ0IHdpdGggYSBsb3dlciBjYXNlIGxldHRlciBvciBhbiB1bmRlcnNjb3JlLAogLSAgICAgIGZvbGxvd2VkIGJ5IGxvd2VyIGNhc2UgbGV0dGVycywgZGlnaXRzLCB1bmRlcnNjb3Jlcywgb3IgZGFzaGVzLgogLSAgICAgIFRoZXkgY2FuIGVuZCB3aXRoIGEgZG9sbGFyIHNpZ24uCiAtICAgICAgSW4gcmVndWxhciBleHByZXNzaW9uIHRlcm1zOiBbYS16X11bYS16MC05Xy1dKlskXT8KIC0gICAgPC9wYXJhPgotLSAgICA8cGFyYT4KKyAgICAgPHBhcmE+CiAgICAgICAgVXNlcm5hbWVzIG1heSBvbmx5IGJlIHVwIHRvIDMyIGNoYXJhY3RlcnMgbG9uZy4KICAgICAgPC9wYXJhPgotICAgPC9yZWZzZWN0MT4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMKaW5kZXggNzcwYzIzOS4uZjg2ZTVlMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMKQEAgLTExLDggKzExLDYgQEAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2hhZG93LW1haW50L3NoYWRvdy9yZWxlYXNlcyIKIFNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3NoYWRvdy1tYWludC9zaGFkb3cvcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL3NoYWRvdy00LjEuMy1kb3RzLWluLXVzZXJuYW1lcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtdGhlLXNwX2xzdGNoZy1zaGFkb3ctZmllbGQtcmVwcm9kdWNpYmxlLXJlLi03MS5wYXRjaCAgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZml4LWNvbmZpZ3VyZS1lcnJvci13aXRoLWRhc2gucGF0Y2ggXAogICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKICAgICAgICAgICAgZmlsZTovL3NoYWRvdy1yZWxheGVkLXVzZXJuYW1lcy5wYXRjaCBcCiAgICAgICAgICAgICIKQEAgLTI0LDE2ICsyMiwxNSBAQAogCiBTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS11c2Utb2Ytc3lzbG9nLWZvci1zeXNyb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FsbG93LWZvci1zZXR0aW5nLXBhc3N3b3JkLWluLWNsZWFyLXRleHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1BbGxvdy1mb3Itc2V0dGluZy1wYXNzd29yZC1pbi1jbGVhci10ZXh0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2NvbW1vbmlvLmMtZml4LXVuZXhwZWN0ZWQtb3Blbi1mYWlsdXJlLWluLWNocm9vdC1lbnYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS11c2VyYWRkLmMtY3JlYXRlLXBhcmVudC1kaXJlY3Rvcmllcy13aGVuLW5lY2Vzc2FyeS5wYXRjaCBcCiAgICAgICAgICAgICIKIFNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLXVzZS1vZi1zeXNsb2ctZm9yLXN5c3Jvb3QucGF0Y2ggXAogICAgICAgICAgICAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIzNmZlYjE1NjY1MzM4YWUzZGU0MTRmMmE4OGU0MzRkYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NjY4Zjk5YmQwODczOTljNGE1ODYwODRkYzNiMDQ2Yjc1ZjU2MDcyMGQ4M2U5MmZkMjNiZjdhODlkZGE0ZDMxIgorU1JDX1VSSVttZDVzdW1dID0gIjNkOTdmMTFlNjZiZmIwYjE0NzAyYjExNWZhOGJlNDgwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNlZTMwODFmYmJjYmNmZWE1Yzg5MTY0MTllNDZiYzcyNDgwN2JhYjI3MTA3MjEwNGYyM2U3YTI5ZTk2NjhmM2EiCiAKICMgQWRkaXRpb25hbCBQb2xpY3kgZmlsZXMgZm9yIFBBTQogUEFNX1NSQ19VUkkgPSAiZmlsZTovL3BhbS5kL2NoZm4gXApAQCAtNTMsNiArNTAsNyBAQAogICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc2VsaW51eCBcCiAgICAgICAgICAgICAgICAgIC0td2l0aC1ncm91cC1uYW1lLW1heC1sZW5ndGg9MjQgXAogICAgICAgICAgICAgICAgICAtLWVuYWJsZS1zdWJvcmRpbmF0ZS1pZHM9eWVzIFwKKyAgICAgICAgICAgICAgICAgLS13aXRob3V0LXNzc2QgXAogICAgICAgICAgICAgICAgICAke05TQ0RPUFR9IgogCiBOU0NET1BUID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3dfNC42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvd180LjguMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvd180LjYuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3dfNC44LjEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0cmVzcy1uZy9zdHJlc3MtbmdfMC4xMC4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0cmVzcy1uZy9zdHJlc3MtbmdfMC4xMC4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdhOThmMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdHJlc3Mtbmcvc3RyZXNzLW5nXzAuMTAuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIlN5c3RlbSBsb2FkIHRlc3RpbmcgdXRpbGl0eSIKLURFU0NSSVBUSU9OID0gIkRlbGliZXJhdGVseSBzaW1wbGUgd29ya2xvYWQgZ2VuZXJhdG9yIGZvciBQT1NJWCBzeXN0ZW1zLiBJdCBcCi1pbXBvc2VzIGEgY29uZmlndXJhYmxlIGFtb3VudCBvZiBDUFUsIG1lbW9yeSwgSS9PLCBhbmQgZGlzayBzdHJlc3Mgb24gdGhlIHN5c3RlbS4iCi1IT01FUEFHRSA9ICJodHRwczovL2tlcm5lbC51YnVudHUuY29tL35ja2luZy9zdHJlc3MtbmcvIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1TUkNfVVJJID0gImh0dHBzOi8va2VybmVsLnVidW50dS5jb20vfmNraW5nL3RhcmJhbGxzLyR7QlBOfS8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtcHJlc2VydmUtb3duZXJzaGlwLXdoZW4taW5zdGFsbGluZy1leGFtcGxlLWpvLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImFkNGRlMzhkNmZmMWNjZjM2NDA1NzNlOTY3ZGZiMTM2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAzMWRlNWViYzQ0YjQ5OTkyYzExNjMzZjEwYWFlOTZkYTA1YTg1YjMyNmFlYmRmZmQ4OGJhOGM0NDVkMjNjZjQiCi0KLURFUEVORFMgPSAiY29yZXV0aWxzLW5hdGl2ZSIKLQotUFJPVklERVMgPSAic3RyZXNzIgotUlBST1ZJREVTXyR7UE59ID0gInN0cmVzcyIKLVJSRVBMQUNFU18ke1BOfSA9ICJzdHJlc3MiCi1SQ09ORkxJQ1RTXyR7UE59ID0gInN0cmVzcyIKLQotaW5oZXJpdCBiYXNoLWNvbXBsZXRpb24KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdHJlc3Mtbmcvc3RyZXNzLW5nXzAuMTEuMDEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdHJlc3Mtbmcvc3RyZXNzLW5nXzAuMTEuMDEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ4NmJlMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0cmVzcy1uZy9zdHJlc3MtbmdfMC4xMS4wMS5iYgpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIlN5c3RlbSBsb2FkIHRlc3RpbmcgdXRpbGl0eSIKK0RFU0NSSVBUSU9OID0gIkRlbGliZXJhdGVseSBzaW1wbGUgd29ya2xvYWQgZ2VuZXJhdG9yIGZvciBQT1NJWCBzeXN0ZW1zLiBJdCBcCitpbXBvc2VzIGEgY29uZmlndXJhYmxlIGFtb3VudCBvZiBDUFUsIG1lbW9yeSwgSS9PLCBhbmQgZGlzayBzdHJlc3Mgb24gdGhlIHN5c3RlbS4iCitIT01FUEFHRSA9ICJodHRwczovL2tlcm5lbC51YnVudHUuY29tL35ja2luZy9zdHJlc3MtbmcvIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNfVVJJID0gImh0dHBzOi8va2VybmVsLnVidW50dS5jb20vfmNraW5nL3RhcmJhbGxzLyR7QlBOfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtcHJlc2VydmUtb3duZXJzaGlwLXdoZW4taW5zdGFsbGluZy1leGFtcGxlLWpvLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImE1NThmYzdmYjlkMGE4NTFhZmU2ZGUwOTA4MGI1NDAxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlmZTE5NTQ4Yzg3YWExYTFiOWIyYmUzYjM1OWVjMjYyMWI4OGJjYjE2OTk4Yjc3NTI3NTQ5YTc3MzZmNjU0OTQiCisKK0RFUEVORFMgPSAiY29yZXV0aWxzLW5hdGl2ZSIKKworUFJPVklERVMgPSAic3RyZXNzIgorUlBST1ZJREVTXyR7UE59ID0gInN0cmVzcyIKK1JSRVBMQUNFU18ke1BOfSA9ICJzdHJlc3MiCitSQ09ORkxJQ1RTXyR7UE59ID0gInN0cmVzcyIKKworaW5oZXJpdCBiYXNoLWNvbXBsZXRpb24KKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvLmluYwppbmRleCAxNTA3NWJjLi41ZDI3ZDQ2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby5pbmMKQEAgLTQsMTggKzQsMTggQEAKIEJVR1RSQUNLRVIgPSAiaHR0cDovL3d3dy5zdWRvLndzL2J1Z3MvIgogU0VDVElPTiA9ICJhZG1pbiIKIExJQ0VOU0UgPSAiSVNDICYgQlNEICYgWmxpYiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9MSUNFTlNFO21kNT02Yzc2YjczNjAzYWM3NzYzYWIwNTE2ZWJmYmU2N2I0MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wbHVnaW5zL3N1ZG9lcnMvcmVkYmxhY2suYztiZWdpbmxpbmU9MTtlbmRsaW5lPTQ2O21kNT00YTE2MmZjMDRiODZiMDNmNTYzMjE4MGZlNjA3NmNkYSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9yZWFsbG9jYXJyYXkuYztiZWdpbmxpbmU9MztlbmRsaW5lPTE1O21kNT1iNDdmMWY4NWExMmYwNWEwNzQ0Y2Q4YjFiNmY0MWEwZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9mbm1hdGNoLmM7YmVnaW5saW5lPTM7ZW5kbGluZT0yNzttZDU9NjdmODNlZTliZDQ1NjU1NzM5NzA4MmY4ZjFiZTBlZmQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvZ2V0Y3dkLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0yNzttZDU9MDkwNjhhMTliNGY2YjZmMGEwOTU4NjU1YmZlOThiNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvZ2xvYi5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MzE7bWQ1PTFmMmY3NzFjMzVmYjA2NThkNTY3YTc4MjQwMDdlNTZkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL3NucHJpbnRmLmM7YmVnaW5saW5lPTM7ZW5kbGluZT0zMzttZDU9NjNlNDhlMWI5OTJiY2U3NDlhMTlkZDliMjI1NmU5YTAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9zdWRvX3F1ZXVlLmg7YmVnaW5saW5lPTI7ZW5kbGluZT0yNzttZDU9MDgyYjEzOGI3MmJhM2U1NjhhMTNhMjVjM2JmMjU0ZGMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvaW5ldF9wdG9uLmM7YmVnaW5saW5lPTM7ZW5kbGluZT0xNzttZDU9Mzk3MGFiMDUxOGFiNzljYmQwYmFmYjY5N2YxMGIzM2EgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvYXJjNHJhbmRvbS5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MjA7bWQ1PTE1YmRjODljMWIwMDNmYTRkNzM1M2U2Mjk2ZWJmZDY4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2FyYzRyYW5kb21fdW5pZm9ybS5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MTc7bWQ1PTMxZTYzMGFjODE0ZDY5MmZkMGFiN2E5NDI2NTliNDZmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2dldGVudHJvcHkuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE5O21kNT05ZjFhMjc1ZWNkNDRjYzI2NGEyYTRkNWUwNmE3NTI5MiBcCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvTElDRU5TRTttZDU9NGQxYjQ0YjE1NzZlZWEwMzZkNzhiOGNjOTYxYWE5M2QgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGx1Z2lucy9zdWRvZXJzL3JlZGJsYWNrLmM7YmVnaW5saW5lPTE7ZW5kbGluZT00NjttZDU9MDNlMzUzMTc2OTliYTAwYjQ5NjI1MWUwZGZlOWYxMDkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvcmVhbGxvY2FycmF5LmM7YmVnaW5saW5lPTM7ZW5kbGluZT0xNTttZDU9Mzk3ZGQ0NWM3NjgzZTkwYjlmOGJmMjQ2MzhjZjAzYmYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvZm5tYXRjaC5jO2JlZ2lubGluZT0zO2VuZGxpbmU9Mjc7bWQ1PTAwNGQ3ZDI4NjZiYTFmNWI0MTE3NDkwNjg0OWQyZTBmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2dldGN3ZC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9Mjc7bWQ1PTUwZjhkOTY2Nzc1MGUxOGRlYTRlODRhOTM1YzEyMDA5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2dsb2IuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTMxO21kNT0yODUyZjY4Njg3NTQ0ZTNlYjhhMGE2MTY2NTUwNmYwZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9zbnByaW50Zi5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MzM7bWQ1PWI3MGRmNjE3OTk2OWUzOGZjZjY4ZGE5MWI1M2I4MDI5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvc3Vkb19xdWV1ZS5oO2JlZ2lubGluZT0yO2VuZGxpbmU9Mjc7bWQ1PWFkNTc4ZTk2NjRkMTdhMDEwYjYzZTRiYzA1NzZlZThkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2luZXRfcHRvbi5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MTc7bWQ1PTI3Nzg1YzlmNTgzNTA5M2VkYTQyYWEwODE2YTJkMGI0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2FyYzRyYW5kb20uYztiZWdpbmxpbmU9MztlbmRsaW5lPTIwO21kNT1jZWQ4NjM2ZWNlZmEyYmE5MDdjZmUzOTBiYzNiZDk2NCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9hcmM0cmFuZG9tX3VuaWZvcm0uYztiZWdpbmxpbmU9MztlbmRsaW5lPTE3O21kNT1lMzBjMmI3NzdjZGMwMGNmY2FmN2M0NDVhMTBiMjYyZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9nZXRlbnRyb3B5LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xOTttZDU9YTBmNThiZTNkNjBiNmRjZDg5OGVjNWZlMDg2NmQzNmYgXAogICAgICAgICAgICAgICAgICAgICAiCiAKIGluaGVyaXQgYXV0b3Rvb2xzCkBAIC0yNiw3ICsyNiw3IEBACiAKIENPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3N1ZG9lcnMiCiAKLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtZWRpdG9yPS9iaW4vdmkgLS13aXRoLWVudi1lZGl0b3IiCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWVkaXRvcj0ke2Jhc2VfYmluZGlyfS92aSAtLXdpdGgtZW52LWVkaXRvciIKIAogRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1oYXJkZW5pbmcgIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8vQ1ZFLTIwMTktMTQyODctMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby9DVkUtMjAxOS0xNDI4Ny0xLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTExZTNmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby9DVkUtMjAxOS0xNDI4Ny0xLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLUZyb20gZjc1MmFlNWNlZTE2MzI1MzczMGZmN2NkZjI5M2UzNGE5MWFhNTUyMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJUb2RkIEMuIE1pbGxlciIgPFRvZGQuTWlsbGVyQHN1ZG8ud3M+Ci1EYXRlOiBUaHUsIDEwIE9jdCAyMDE5IDEwOjA0OjEzIC0wNjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFRyZWF0IGFuIElEIG9mIC0xIGFzIGludmFsaWQgc2luY2UgdGhhdCBtZWFucyAibm8gY2hhbmdlIi4KLSBGaXhlcyBDVkUtMjAxOS0xNDI4Ny4gRm91bmQgYnkgSm9lIFZlbm5peCBmcm9tIEFwcGxlIEluZm9ybWF0aW9uIFNlY3VyaXR5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vc3Vkby1wcm9qZWN0L3N1ZG8vY29tbWl0L2Y3NTJhZTVjZWUxNjMyNTM3MzBmZjdjZGYyOTNlMzRhOTFhYTU1MjBdCi1DVkU6IENWRS0yMDE5LTE0Mjg3Ci0KLVNpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0KLS0tLQotIGxpYi91dGlsL3N0cnRvaWQuYyB8IDEwMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgNDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvdXRpbC9zdHJ0b2lkLmMgYi9saWIvdXRpbC9zdHJ0b2lkLmMKLWluZGV4IDJkZmNlNzUuLjZiMzkxNmIgMTAwNjQ0Ci0tLS0gYS9saWIvdXRpbC9zdHJ0b2lkLmMKLSsrKyBiL2xpYi91dGlsL3N0cnRvaWQuYwotQEAgLTQ5LDYgKzQ5LDI3IEBACi0gI2luY2x1ZGUgInN1ZG9fdXRpbC5oIgotIAotIC8qCi0rICogTWFrZSBzdXJlIHRoYXQgdGhlIElEIGVuZHMgd2l0aCBhIHZhbGlkIHNlcGFyYXRvciBjaGFyLgotKyAqLwotK3N0YXRpYyBib29sCi0rdmFsaWRfc2VwYXJhdG9yKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGNoYXIgKmVwLCBjb25zdCBjaGFyICpzZXApCi0rewotKyAgICBib29sIHZhbGlkID0gZmFsc2U7Ci0rICAgIGRlYnVnX2RlY2wodmFsaWRfc2VwYXJhdG9yLCBTVURPX0RFQlVHX1VUSUwpCi0rCi0rICAgIGlmIChlcCAhPSBwKSB7Ci0rCS8qIGNoZWNrIGZvciB2YWxpZCBzZXBhcmF0b3IgKGluY2x1ZGluZyAnXDAnKSAqLwotKwlpZiAoc2VwID09IE5VTEwpCi0rCSAgICBzZXAgPSAiIjsKLSsJZG8gewotKwkgICAgaWYgKCplcCA9PSAqc2VwKQotKwkJdmFsaWQgPSB0cnVlOwotKwl9IHdoaWxlICgqc2VwKysgIT0gJ1wwJyk7Ci0rICAgIH0KLSsgICAgZGVidWdfcmV0dXJuX2Jvb2wodmFsaWQpOwotK30KLSsKLSsvKgotICAqIFBhcnNlIGEgdWlkL2dpZCBpbiBzdHJpbmcgZm9ybS4KLSAgKiBJZiBzZXAgaXMgbm9uLU5VTEwsIGl0IGNvbnRhaW5zIHZhbGlkIHNlcGFyYXRvciBjaGFyYWN0ZXJzIChlLmcuIGNvbW1hLCBzcGFjZSkKLSAgKiBJZiBlbmRwIGlzIG5vbi1OVUxMIGl0IGlzIHNldCB0byB0aGUgbmV4dCBjaGFyIGFmdGVyIHRoZSBJRC4KLUBAIC02MiwzNiArODMsMzMgQEAgc3Vkb19zdHJ0b2lkX3YxKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGNoYXIgKnNlcCwgY2hhciAqKmVuZHAsIGNvbnN0IGNoYXIgKiplcnJzdHIKLSAgICAgY2hhciAqZXA7Ci0gICAgIGlkX3QgcmV0ID0gMDsKLSAgICAgbG9uZyBsb25nIGxsdmFsOwotLSAgICBib29sIHZhbGlkID0gZmFsc2U7Ci0gICAgIGRlYnVnX2RlY2woc3Vkb19zdHJ0b2lkLCBTVURPX0RFQlVHX1VUSUwpCi0gCi0gICAgIC8qIHNraXAgbGVhZGluZyBzcGFjZSBzbyB3ZSBjYW4gcGljayB1cCB0aGUgc2lnbiwgaWYgYW55ICovCi0gICAgIHdoaWxlIChpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSpwKSkKLSAJcCsrOwotLSAgICBpZiAoc2VwID09IE5VTEwpCi0tCXNlcCA9ICIiOwotKwotKyAgICAvKiBXaGlsZSBpZF90IG1heSBiZSA2NC1iaXQgc2lnbmVkLCB1aWRfdCBhbmQgZ2lkX3QgYXJlIDMyLWJpdCB1bnNpZ25lZC4gKi8KLSAgICAgZXJybm8gPSAwOwotICAgICBsbHZhbCA9IHN0cnRvbGwocCwgJmVwLCAxMCk7Ci0tICAgIGlmIChlcCAhPSBwKSB7Ci0tCS8qIGNoZWNrIGZvciB2YWxpZCBzZXBhcmF0b3IgKGluY2x1ZGluZyAnXDAnKSAqLwotLQlkbyB7Ci0tCSAgICBpZiAoKmVwID09ICpzZXApCi0tCQl2YWxpZCA9IHRydWU7Ci0tCX0gd2hpbGUgKCpzZXArKyAhPSAnXDAnKTsKLSsgICAgaWYgKChlcnJubyA9PSBFUkFOR0UgJiYgbGx2YWwgPT0gTExPTkdfTUFYKSB8fCBsbHZhbCA+IChpZF90KVVJTlRfTUFYKSB7Ci0rCWVycm5vID0gRVJBTkdFOwotKwlpZiAoZXJyc3RyICE9IE5VTEwpCi0rCSAgICAqZXJyc3RyID0gTl8oInZhbHVlIHRvbyBsYXJnZSIpOwotKwlnb3RvIGRvbmU7Ci0gICAgIH0KLS0gICAgaWYgKCF2YWxpZCkgewotKyAgICBpZiAoKGVycm5vID09IEVSQU5HRSAmJiBsbHZhbCA9PSBMTE9OR19NSU4pIHx8IGxsdmFsIDwgSU5UX01JTikgewotKwllcnJubyA9IEVSQU5HRTsKLSAJaWYgKGVycnN0ciAhPSBOVUxMKQotLQkgICAgKmVycnN0ciA9IE5fKCJpbnZhbGlkIHZhbHVlIik7Ci0tCWVycm5vID0gRUlOVkFMOwotKwkgICAgKmVycnN0ciA9IE5fKCJ2YWx1ZSB0b28gc21hbGwiKTsKLSAJZ290byBkb25lOwotICAgICB9Ci0tICAgIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKLS0JaWYgKGVycnN0ciAhPSBOVUxMKSB7Ci0tCSAgICBpZiAobGx2YWwgPT0gTExPTkdfTUFYKQotLQkJKmVycnN0ciA9IE5fKCJ2YWx1ZSB0b28gbGFyZ2UiKTsKLS0JICAgIGVsc2UKLS0JCSplcnJzdHIgPSBOXygidmFsdWUgdG9vIHNtYWxsIik7Ci0tCX0KLSsKLSsgICAgLyogRGlzYWxsb3cgaWQgLTEsIHdoaWNoIG1lYW5zICJubyBjaGFuZ2UiLiAqLwotKyAgICBpZiAoIXZhbGlkX3NlcGFyYXRvcihwLCBlcCwgc2VwKSB8fCBsbHZhbCA9PSAtMSB8fCBsbHZhbCA9PSAoaWRfdClVSU5UX01BWCkgewotKwlpZiAoZXJyc3RyICE9IE5VTEwpCi0rCSAgICAqZXJyc3RyID0gTl8oImludmFsaWQgdmFsdWUiKTsKLSsJZXJybm8gPSBFSU5WQUw7Ci0gCWdvdG8gZG9uZTsKLSAgICAgfQotICAgICByZXQgPSAoaWRfdClsbHZhbDsKLUBAIC0xMDgsMzAgKzEyNiwxNSBAQCBzdWRvX3N0cnRvaWRfdjEoY29uc3QgY2hhciAqcCwgY29uc3QgY2hhciAqc2VwLCBjaGFyICoqZW5kcCwgY29uc3QgY2hhciAqKmVycnN0cgotIHsKLSAgICAgY2hhciAqZXA7Ci0gICAgIGlkX3QgcmV0ID0gMDsKLS0gICAgYm9vbCB2YWxpZCA9IGZhbHNlOwotICAgICBkZWJ1Z19kZWNsKHN1ZG9fc3RydG9pZCwgU1VET19ERUJVR19VVElMKQotIAotICAgICAvKiBza2lwIGxlYWRpbmcgc3BhY2Ugc28gd2UgY2FuIHBpY2sgdXAgdGhlIHNpZ24sIGlmIGFueSAqLwotICAgICB3aGlsZSAoaXNzcGFjZSgodW5zaWduZWQgY2hhcikqcCkpCi0gCXArKzsKLS0gICAgaWYgKHNlcCA9PSBOVUxMKQotLQlzZXAgPSAiIjsKLSsKLSAgICAgZXJybm8gPSAwOwotICAgICBpZiAoKnAgPT0gJy0nKSB7Ci0gCWxvbmcgbHZhbCA9IHN0cnRvbChwLCAmZXAsIDEwKTsKLS0JaWYgKGVwICE9IHApIHsKLS0JICAgIC8qIGNoZWNrIGZvciB2YWxpZCBzZXBhcmF0b3IgKGluY2x1ZGluZyAnXDAnKSAqLwotLQkgICAgZG8gewotLQkJaWYgKCplcCA9PSAqc2VwKQotLQkJICAgIHZhbGlkID0gdHJ1ZTsKLS0JICAgIH0gd2hpbGUgKCpzZXArKyAhPSAnXDAnKTsKLS0JfQotLQlpZiAoIXZhbGlkKSB7Ci0tCSAgICBpZiAoZXJyc3RyICE9IE5VTEwpCi0tCQkqZXJyc3RyID0gTl8oImludmFsaWQgdmFsdWUiKTsKLS0JICAgIGVycm5vID0gRUlOVkFMOwotLQkgICAgZ290byBkb25lOwotLQl9Ci0gCWlmICgoZXJybm8gPT0gRVJBTkdFICYmIGx2YWwgPT0gTE9OR19NQVgpIHx8IGx2YWwgPiBJTlRfTUFYKSB7Ci0gCSAgICBlcnJubyA9IEVSQU5HRTsKLSAJICAgIGlmIChlcnJzdHIgIT0gTlVMTCkKLUBAIC0xNDQsMjggKzE0NywzMSBAQCBzdWRvX3N0cnRvaWRfdjEoY29uc3QgY2hhciAqcCwgY29uc3QgY2hhciAqc2VwLCBjaGFyICoqZW5kcCwgY29uc3QgY2hhciAqKmVycnN0cgotIAkJKmVycnN0ciA9IE5fKCJ2YWx1ZSB0b28gc21hbGwiKTsKLSAJICAgIGdvdG8gZG9uZTsKLSAJfQotLQlyZXQgPSAoaWRfdClsdmFsOwotLSAgICB9IGVsc2UgewotLQl1bnNpZ25lZCBsb25nIHVsdmFsID0gc3RydG91bChwLCAmZXAsIDEwKTsKLS0JaWYgKGVwICE9IHApIHsKLS0JICAgIC8qIGNoZWNrIGZvciB2YWxpZCBzZXBhcmF0b3IgKGluY2x1ZGluZyAnXDAnKSAqLwotLQkgICAgZG8gewotLQkJaWYgKCplcCA9PSAqc2VwKQotLQkJICAgIHZhbGlkID0gdHJ1ZTsKLS0JICAgIH0gd2hpbGUgKCpzZXArKyAhPSAnXDAnKTsKLS0JfQotLQlpZiAoIXZhbGlkKSB7Ci0rCi0rCS8qIERpc2FsbG93IGlkIC0xLCB3aGljaCBtZWFucyAibm8gY2hhbmdlIi4gKi8KLSsJaWYgKCF2YWxpZF9zZXBhcmF0b3IocCwgZXAsIHNlcCkgfHwgbHZhbCA9PSAtMSkgewotIAkgICAgaWYgKGVycnN0ciAhPSBOVUxMKQotIAkJKmVycnN0ciA9IE5fKCJpbnZhbGlkIHZhbHVlIik7Ci0gCSAgICBlcnJubyA9IEVJTlZBTDsKLSAJICAgIGdvdG8gZG9uZTsKLSAJfQotKwlyZXQgPSAoaWRfdClsdmFsOwotKyAgICB9IGVsc2UgewotKwl1bnNpZ25lZCBsb25nIHVsdmFsID0gc3RydG91bChwLCAmZXAsIDEwKTsKLSAJaWYgKChlcnJubyA9PSBFUkFOR0UgJiYgdWx2YWwgPT0gVUxPTkdfTUFYKSB8fCB1bHZhbCA+IFVJTlRfTUFYKSB7Ci0gCSAgICBlcnJubyA9IEVSQU5HRTsKLSAJICAgIGlmIChlcnJzdHIgIT0gTlVMTCkKLSAJCSplcnJzdHIgPSBOXygidmFsdWUgdG9vIGxhcmdlIik7Ci0gCSAgICBnb3RvIGRvbmU7Ci0gCX0KLSsKLSsJLyogRGlzYWxsb3cgaWQgLTEsIHdoaWNoIG1lYW5zICJubyBjaGFuZ2UiLiAqLwotKwlpZiAoIXZhbGlkX3NlcGFyYXRvcihwLCBlcCwgc2VwKSB8fCB1bHZhbCA9PSBVSU5UX01BWCkgewotKwkgICAgaWYgKGVycnN0ciAhPSBOVUxMKQotKwkJKmVycnN0ciA9IE5fKCJpbnZhbGlkIHZhbHVlIik7Ci0rCSAgICBlcnJubyA9IEVJTlZBTDsKLSsJICAgIGdvdG8gZG9uZTsKLSsJfQotIAlyZXQgPSAoaWRfdCl1bHZhbDsKLSAgICAgfQotICAgICBpZiAoZXJyc3RyICE9IE5VTEwpCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby9DVkUtMjAxOS0xNDI4Ny0yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvL0NWRS0yMDE5LTE0Mjg3LTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1M2E4YjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvL0NWRS0yMDE5LTE0Mjg3LTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotRnJvbSAzOTZiYzU3ZmVmZjNlMzYwMDA3NjM0ZjYyNDQ4YjY0ZTA2MjYzOTBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIlRvZGQgQy4gTWlsbGVyIiA8VG9kZC5NaWxsZXJAc3Vkby53cz4KLURhdGU6IFRodSwgMTAgT2N0IDIwMTkgMTA6MDQ6MTMgLTA2MDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIHN1ZG9fc3RydG9pZCgpIHRlc3RzIGZvciAtMSBhbmQgcmFuZ2UgZXJyb3JzLiBBbHNvIGFkanVzdAotIHRlc3RzdWRvZXJzL3Rlc3Q1IHdoaWNoIHJlbGllZCB1cG9uIGdpZCAtMSBwYXJzaW5nLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vc3Vkby1wcm9qZWN0L3N1ZG8vY29tbWl0LzM5NmJjNTddCi1DVkU6IENWRS0yMDE5LTE0Mjg3Ci0KLVNpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0KLS0tLQotIGxpYi91dGlsL3JlZ3Jlc3MvYXRvZm9vL2F0b2Zvb190ZXN0LmMgICAgICAgICAgICB8IDM2ICsrKysrKysrKysrKysrKystLS0tLS0KLSBwbHVnaW5zL3N1ZG9lcnMvcmVncmVzcy90ZXN0c3Vkb2Vycy90ZXN0NS5vdXQub2sgfCAgMiArLQotIHBsdWdpbnMvc3Vkb2Vycy9yZWdyZXNzL3Rlc3RzdWRvZXJzL3Rlc3Q1LnNoICAgICB8ICAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYi91dGlsL3JlZ3Jlc3MvYXRvZm9vL2F0b2Zvb190ZXN0LmMgYi9saWIvdXRpbC9yZWdyZXNzL2F0b2Zvby9hdG9mb29fdGVzdC5jCi1pbmRleCAwMzFhN2VkLi5mYjQxYzFhIDEwMDY0NAotLS0tIGEvbGliL3V0aWwvcmVncmVzcy9hdG9mb28vYXRvZm9vX3Rlc3QuYwotKysrIGIvbGliL3V0aWwvcmVncmVzcy9hdG9mb28vYXRvZm9vX3Rlc3QuYwotQEAgLTI2LDYgKzI2LDcgQEAKLSAjZWxzZQotICMgaW5jbHVkZSAiY29tcGF0L3N0ZGJvb2wuaCIKLSAjZW5kaWYKLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSAKLSAjaW5jbHVkZSAic3Vkb19jb21wYXQuaCIKLSAjaW5jbHVkZSAic3Vkb191dGlsLmgiCi1AQCAtODAsMTUgKzgxLDIwIEBAIHN0YXRpYyBzdHJ1Y3Qgc3RydG9pZF9kYXRhIHsKLSAgICAgaWRfdCBpZDsKLSAgICAgY29uc3QgY2hhciAqc2VwOwotICAgICBjb25zdCBjaGFyICplcDsKLSsgICAgaW50IGVycm51bTsKLSB9IHN0cnRvaWRfZGF0YVtdID0gewotLSAgICB7ICIwLDEiLCAwLCAiLCIsICIsIiB9LAotLSAgICB7ICIxMCIsIDEwLCBOVUxMLCBOVUxMIH0sCi0tICAgIHsgIi0yIiwgLTIsIE5VTEwsIE5VTEwgfSwKLSsgICAgeyAiMCwxIiwgMCwgIiwiLCAiLCIsIDAgfSwKLSsgICAgeyAiMTAiLCAxMCwgTlVMTCwgTlVMTCwgMCB9LAotKyAgICB7ICItMSIsIDAsIE5VTEwsIE5VTEwsIEVJTlZBTCB9LAotKyAgICB7ICI0Mjk0OTY3Mjk1IiwgMCwgTlVMTCwgTlVMTCwgRUlOVkFMIH0sCi0rICAgIHsgIjQyOTQ5NjcyOTYiLCAwLCBOVUxMLCBOVUxMLCBFUkFOR0UgfSwKLSsgICAgeyAiLTIxNDc0ODM2NDkiLCAwLCBOVUxMLCBOVUxMLCBFUkFOR0UgfSwKLSsgICAgeyAiLTIiLCAtMiwgTlVMTCwgTlVMTCwgMCB9LAotICNpZiBTSVpFT0ZfSURfVCAhPSBTSVpFT0ZfTE9OR19MT05HCi0tICAgIHsgIi0yIiwgKGlkX3QpNDI5NDk2NzI5NFUsIE5VTEwsIE5VTEwgfSwKLSsgICAgeyAiLTIiLCAoaWRfdCk0Mjk0OTY3Mjk0VSwgTlVMTCwgTlVMTCwgMCB9LAotICNlbmRpZgotLSAgICB7ICI0Mjk0OTY3Mjk0IiwgKGlkX3QpNDI5NDk2NzI5NFUsIE5VTEwsIE5VTEwgfSwKLS0gICAgeyBOVUxMLCAwLCBOVUxMLCBOVUxMIH0KLSsgICAgeyAiNDI5NDk2NzI5NCIsIChpZF90KTQyOTQ5NjcyOTRVLCBOVUxMLCBOVUxMLCAwIH0sCi0rICAgIHsgTlVMTCwgMCwgTlVMTCwgTlVMTCwgMCB9Ci0gfTsKLSAKLSBzdGF0aWMgaW50Ci1AQCAtMTA0LDExICsxMTAsMjMgQEAgdGVzdF9zdHJ0b2lkKGludCAqbnRlc3RzKQotIAkoKm50ZXN0cykrKzsKLSAJZXJyc3RyID0gInNvbWUgZXJyb3IiOwotIAl2YWx1ZSA9IHN1ZG9fc3RydG9pZChkLT5pZHN0ciwgZC0+c2VwLCAmZXAsICZlcnJzdHIpOwotLQlpZiAoZXJyc3RyICE9IE5VTEwpIHsKLS0JICAgIGlmIChkLT5pZCAhPSAoaWRfdCktMSkgewotLQkJc3Vkb193YXJueF9ub2RlYnVnKCJGQUlMOiAlczogJXMiLCBkLT5pZHN0ciwgZXJyc3RyKTsKLSsJaWYgKGQtPmVycm51bSAhPSAwKSB7Ci0rCSAgICBpZiAoZXJyc3RyID09IE5VTEwpIHsKLSsJCXN1ZG9fd2Fybnhfbm9kZWJ1ZygiRkFJTDogJXM6IG1pc3NpbmcgZXJyc3RyIGZvciBlcnJubyAlZCIsCi0rCQkgICAgZC0+aWRzdHIsIGQtPmVycm51bSk7Ci0rCQllcnJvcnMrKzsKLSsJICAgIH0gZWxzZSBpZiAodmFsdWUgIT0gMCkgewotKwkJc3Vkb193YXJueF9ub2RlYnVnKCJGQUlMOiAlcyBzaG91bGQgcmV0dXJuIDAgb24gZXJyb3IiLAotKwkJICAgIGQtPmlkc3RyKTsKLSsJCWVycm9ycysrOwotKwkgICAgfSBlbHNlIGlmIChlcnJubyAhPSBkLT5lcnJudW0pIHsKLSsJCXN1ZG9fd2Fybnhfbm9kZWJ1ZygiRkFJTDogJXM6IGVycm5vIG1pc21hdGNoLCAlZCAhPSAlZCIsCi0rCQkgICAgZC0+aWRzdHIsIGVycm5vLCBkLT5lcnJudW0pOwotIAkJZXJyb3JzKys7Ci0gCSAgICB9Ci0rCX0gZWxzZSBpZiAoZXJyc3RyICE9IE5VTEwpIHsKLSsJICAgIHN1ZG9fd2Fybnhfbm9kZWJ1ZygiRkFJTDogJXM6ICVzIiwgZC0+aWRzdHIsIGVycnN0cik7Ci0rCSAgICBlcnJvcnMrKzsKLSAJfSBlbHNlIGlmICh2YWx1ZSAhPSBkLT5pZCkgewotIAkgICAgc3Vkb193YXJueF9ub2RlYnVnKCJGQUlMOiAlcyAhPSAldSIsIGQtPmlkc3RyLCAodW5zaWduZWQgaW50KWQtPmlkKTsKLSAJICAgIGVycm9ycysrOwotZGlmZiAtLWdpdCBhL3BsdWdpbnMvc3Vkb2Vycy9yZWdyZXNzL3Rlc3RzdWRvZXJzL3Rlc3Q1Lm91dC5vayBiL3BsdWdpbnMvc3Vkb2Vycy9yZWdyZXNzL3Rlc3RzdWRvZXJzL3Rlc3Q1Lm91dC5vawotaW5kZXggNWUzMTljOS4uY2VjZjcwMCAxMDA2NDQKLS0tLSBhL3BsdWdpbnMvc3Vkb2Vycy9yZWdyZXNzL3Rlc3RzdWRvZXJzL3Rlc3Q1Lm91dC5vawotKysrIGIvcGx1Z2lucy9zdWRvZXJzL3JlZ3Jlc3MvdGVzdHN1ZG9lcnMvdGVzdDUub3V0Lm9rCi1AQCAtNCw3ICs0LDcgQEAgUGFyc2UgZXJyb3IgaW4gc3Vkb2VycyBuZWFyIGxpbmUgMS4KLSBFbnRyaWVzIGZvciB1c2VyIHJvb3Q6Ci0gCi0gQ29tbWFuZCB1bm1hdGNoZWQKLS10ZXN0c3Vkb2VyczogdGVzdDUuaW5jIHNob3VsZCBiZSBvd25lZCBieSBnaWQgNDI5NDk2NzI5NQotK3Rlc3RzdWRvZXJzOiB0ZXN0NS5pbmMgc2hvdWxkIGJlIG93bmVkIGJ5IGdpZCA0Mjk0OTY3Mjk0Ci0gUGFyc2UgZXJyb3IgaW4gc3Vkb2VycyBuZWFyIGxpbmUgMS4KLSAKLSBFbnRyaWVzIGZvciB1c2VyIHJvb3Q6Ci1kaWZmIC0tZ2l0IGEvcGx1Z2lucy9zdWRvZXJzL3JlZ3Jlc3MvdGVzdHN1ZG9lcnMvdGVzdDUuc2ggYi9wbHVnaW5zL3N1ZG9lcnMvcmVncmVzcy90ZXN0c3Vkb2Vycy90ZXN0NS5zaAotaW5kZXggOWU2OTBhNi4uOTRkNTg1YyAxMDA3NTUKLS0tLSBhL3BsdWdpbnMvc3Vkb2Vycy9yZWdyZXNzL3Rlc3RzdWRvZXJzL3Rlc3Q1LnNoCi0rKysgYi9wbHVnaW5zL3N1ZG9lcnMvcmVncmVzcy90ZXN0c3Vkb2Vycy90ZXN0NS5zaAotQEAgLTI0LDcgKzI0LDcgQEAgRU9GCi0gCi0gIyBUZXN0IGdyb3VwIHdyaXRhYmxlCi0gY2htb2QgNjY0ICRURVNURklMRQotLS4vdGVzdHN1ZG9lcnMgLVUgJE1ZVUlEIC1HIC0xIHJvb3QgaWQgPDxFT0YKLSsuL3Rlc3RzdWRvZXJzIC1VICRNWVVJRCAtRyAtMiByb290IGlkIDw8RU9GCi0gI2luY2x1ZGUgJFRFU1RGSUxFCi0gRU9GCi0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTExYTFiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1yZXF1aXJlIHN1ZG8uaW5jCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93d3cuc3Vkby53cy9kaXN0L3N1ZG8tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItaWRfdC1kZWZpbml0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTE0Mjg3LTEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTktMTQyODctMi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUEFNX1NSQ19VUkkgPSAiZmlsZTovL3N1ZG8ucGFtIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjVjMTg0YjEzYjZiNWRlMzJhZjYzMGFmMmZkMDEzZmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2JlYjY4Yjk0NDcxZWY1NmQ4YTEwMzZkYmNkYzA5YTdiNThhOTQ5YTY4ZmZjZTQ4YjgzZjgzN2RkMzNlMmVjMCIKLQotREVQRU5EUyArPSAiIHZpcnR1YWwvY3J5cHQgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKLVJERVBFTkRTXyR7UE59ICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1saW1pdHMgcGFtLXBsdWdpbi1rZXlpbml0JywgJycsIGQpfSIKLQotRVhUUkFfT0VDT05GICs9ICIgXAotICAgICAgICAgICAgIGFjX2N2X3R5cGVfcnNpemVfdD1ubyBcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKLSAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS1lbmFibGUtdG1wZmlsZXMuZD0ke25vbmFyY2hfbGliZGlyfS90bXBmaWxlcy5kJywgJy0tZGlzYWJsZS10bXBmaWxlcy5kJywgZCl9IFwKLSAgICAgICAgICAgICAiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KLQkJaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS9zdWRvLnBhbSAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQvc3VkbwotCQlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwYW0td2hlZWwnLCAndHJ1ZScsICdmYWxzZScsIGQpfSA7IHRoZW4KLQkJCWVjaG8gJ2F1dGggICAgICAgcmVxdWlyZWQgICAgIHBhbV93aGVlbC5zbyB1c2VfdWlkJyA+PiR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL3N1ZG8KLQkJCXNlZCAtaSAncy8jIFwoJXdoZWVsIEFMTD0oQUxMKSBBTExcKS9cMS8nICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMKLQkJZmkKLQlmaQotCi0JY2htb2QgNDExMSAke0R9JHtiaW5kaXJ9L3N1ZG8KLQljaG1vZCAwNDQwICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMKLQotCSMgRXhwbGljaXRseSByZW1vdmUgdGhlIC9ydW4gZGlyZWN0b3J5IHRvIGF2b2lkIFFBIGVycm9yCi0Jcm1kaXIgLXAgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfS9ydW4vc3VkbwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtub25hcmNoX2xpYmRpcn0vdG1wZmlsZXMuZCIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyR7QlBOfS8qLmxhIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZXhlY2Rpcn0vKi5sYSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMzEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjMxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5ZDg4MTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjMxLmJiCkBAIC0wLDAgKzEsNDggQEAKK3JlcXVpcmUgc3Vkby5pbmMKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5zdWRvLndzL2Rpc3Qvc3Vkby0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1JbmNsdWRlLXN5cy10eXBlcy5oLWZvci1pZF90LWRlZmluaXRpb24ucGF0Y2ggXAorICAgICAgICAgICAiCisKK1BBTV9TUkNfVVJJID0gImZpbGU6Ly9zdWRvLnBhbSIKKworU1JDX1VSSVttZDVzdW1dID0gImNlMTdmZjZlNzJhNzBmOGQ1ZGFiYmE4YWJmM2NkMmRlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlYThkOTdhM2NlZTRjODQ0ZTA4ODdlYTdhMWJkODBlYjU0Y2M5OGZkNzc5NjY3NzZjYjFhODA2NTNhZDQ1NGYiCisKK0RFUEVORFMgKz0gIiB2aXJ0dWFsL2NyeXB0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCitSREVQRU5EU18ke1BOfSArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4tbGltaXRzIHBhbS1wbHVnaW4ta2V5aW5pdCcsICcnLCBkKX0iCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTID0gIiBcCisgICAgICAgIGFjX2N2X3R5cGVfcnNpemVfdD1ubyBcCisgICAgICAgIGFjX2N2X3BhdGhfTVZQUk9HPSR7YmFzZV9iaW5kaXJ9L212IFwKKyAgICAgICAgYWNfY3ZfcGF0aF9CU0hFTExQUk9HPSR7YmFzZV9iaW5kaXJ9L3NoIFwKKyAgICAgICAgYWNfY3ZfcGF0aF9TRU5ETUFJTFBST0c9JHtzYmluZGlyfS9zZW5kbWFpbCBcCisgICAgICAgIGFjX2N2X3BhdGhfVklQUk9HPSR7YmFzZV9iaW5kaXJ9L3ZpIFwKKyAgICAgICAgIgorCitFWFRSQV9PRUNPTkYgKz0gIiBcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKKyAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS1lbmFibGUtdG1wZmlsZXMuZD0ke25vbmFyY2hfbGliZGlyfS90bXBmaWxlcy5kJywgJy0tZGlzYWJsZS10bXBmaWxlcy5kJywgZCl9IFwKKyAgICAgICAgICAgICAtLXdpdGgtdmFyZGlyPS92YXIvbGliL3N1ZG8gXAorICAgICAgICAgICAgICIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3N1ZG8ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zdWRvCisJCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BhbS13aGVlbCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9IDsgdGhlbgorCQkJZWNobyAnYXV0aCAgICAgICByZXF1aXJlZCAgICAgcGFtX3doZWVsLnNvIHVzZV91aWQnID4+JHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvc3VkbworCQkJc2VkIC1pICdzLyMgXCgld2hlZWwgQUxMPShBTEwpIEFMTFwpL1wxLycgJHtEfSR7c3lzY29uZmRpcn0vc3Vkb2VycworCQlmaQorCWZpCisKKwljaG1vZCA0MTExICR7RH0ke2JpbmRpcn0vc3VkbworCWNobW9kIDA0NDAgJHtEfSR7c3lzY29uZmRpcn0vc3Vkb2VycworCisJIyBFeHBsaWNpdGx5IHJlbW92ZSB0aGUgL3J1biBkaXJlY3RvcnkgdG8gYXZvaWQgUUEgZXJyb3IKKwlybWRpciAtcCAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9L3J1bi9zdWRvCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke25vbmFyY2hfbGliZGlyfS90bXBmaWxlcy5kIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmV4ZWNkaXJ9LyR7QlBOfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZXhlY2Rpcn0vJHtCUE59LyoubGEgXAorICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2xpYioke1NPTElCU0RFVn0gJHtsaWJleGVjZGlyfS8qLmxhIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTY3OTQ2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi1Gcm9tIGYwYWY1YmNmZDc1MzY5MTY1MmVhYzM1ZWZiY2IyMDhjOTMzMjUzZjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAzMSBBdWcgMjAxNSAwNToxMTo1MyArMDAwMAotU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCBtdXNsCi0KLUV4cGxpY2l0bHkgaW5jbHVkZSBmY250bC5oIHNpbmNlIHdpdGggZ2xpYmMgaXMgY29tZXMgaW4gYXMgaW5kaXJlY3QKLWluY2x1ZGUgYnV0IG5vdCB3aXRoIG11c2wKLQotbGludXgvdGltZS5oIGluY2x1c2lvbiBpcyBub3QgcmVxdWlyZWQgb24gbXVzbCBzbyB1c2luZyAhX19HTElCQ19fIGlzCi1ub3QgcmlnaHQgZm9yIG11c2wgaGVyZQotCi13YWl0IHR5cGUgaXMgZ2xpYmMgc3BlY2lmaWMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBrbG9nZC5jICAgIHwgMTAgKy0tLS0tLS0tLQotIGtzeW1fbW9kLmMgfCAgNSArLS0tLQotIHBpZGZpbGUuYyAgfCAgMSArCi0gc3lzbG9nLmMgICB8ICAzICsrLQotIHN5c2xvZ2QuYyAgfCAgNCArLS0tCi0gNSBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEva2xvZ2QuYyBiL2tsb2dkLmMKLWluZGV4IDZjYzgwZWQuLjkyMTk2NzEgMTAwNjQ0Ci0tLS0gYS9rbG9nZC5jCi0rKysgYi9rbG9nZC5jCi1AQCAtMjYwLDExICsyNjAsOCBAQAotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPHN5cy9mY250bC5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotLSNpZiAhZGVmaW5lZChfX0dMSUJDX18pCi0tI2luY2x1ZGUgPGxpbnV4L3RpbWUuaD4KLS0jZW5kaWYgLyogX19HTElCQ19fICovCi0gI2luY2x1ZGUgPHN0ZGFyZy5oPgotICNpbmNsdWRlIDxwYXRocy5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLUBAIC0yNzcsMTMgKzI3NCw4IEBACi0gCi0gI2RlZmluZSBfX0xJQlJBUllfXwotICNpbmNsdWRlIDxsaW51eC91bmlzdGQuaD4KLS0jaWYgIWRlZmluZWQoX19HTElCQ19fKQotLSMgZGVmaW5lIF9fTlJfa3N5c2xvZyBfX05SX3N5c2xvZwotLV9zeXNjYWxsMyhpbnQsa3N5c2xvZyxpbnQsIHR5cGUsIGNoYXIgKiwgYnVmLCBpbnQsIGxlbik7Ci0tI2Vsc2UKLSAjaW5jbHVkZSA8c3lzL2tsb2cuaD4KLSAjZGVmaW5lIGtzeXNsb2cga2xvZ2N0bAotLSNlbmRpZgotIAotICNkZWZpbmUgTE9HX0JVRkZFUl9TSVpFIDQwOTYKLSAjZGVmaW5lIExPR19MSU5FX0xFTkdUSCAxMDAwCi1kaWZmIC0tZ2l0IGEva3N5bV9tb2QuYyBiL2tzeW1fbW9kLmMKLWluZGV4IDY4Y2Q2YjYuLjZlMjZkYTEgMTAwNjQ0Ci0tLS0gYS9rc3ltX21vZC5jCi0rKysgYi9rc3ltX21vZC5jCi1AQCAtMTEzLDEyICsxMTMsOSBAQAotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPHN5cy9mY250bC5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlICJtb2R1bGUuaCIKLS0jaWYgIWRlZmluZWQoX19HTElCQ19fKQotLSNpbmNsdWRlIDxsaW51eC90aW1lLmg+Ci0tI2VuZGlmIC8qIF9fR0xJQkNfXyAqLwotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5jbHVkZSA8cGF0aHMuaD4KLSAjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgotZGlmZiAtLWdpdCBhL3BpZGZpbGUuYyBiL3BpZGZpbGUuYwotaW5kZXggZTA5NTlhMC4uNmRhYTJlMCAxMDA2NDQKLS0tLSBhL3BpZGZpbGUuYwotKysrIGIvcGlkZmlsZS5jCi1AQCAtMzEsNiArMzEsNyBAQAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0rI2luY2x1ZGUgPGZjbnRsLmg+Ci0gCi0gLyogcmVhZF9waWQKLSAgKgotZGlmZiAtLWdpdCBhL3N5c2xvZy5jIGIvc3lzbG9nLmMKLWluZGV4IGJkYjNmZjIuLmVmN2IzNGUgMTAwNjQ0Ci0tLS0gYS9zeXNsb2cuYwotKysrIGIvc3lzbG9nLmMKLUBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIylzeXNsb2cuYwk1LjI4IChCZXJrZWxleSkgNi8yNy85MCI7Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0gI2luY2x1ZGUgPHN5cy9maWxlLmg+Ci0tI2luY2x1ZGUgPHN5cy9zaWduYWwuaD4KLSsvLyNpbmNsdWRlIDxzeXMvc2lnbmFsLmg+Ci0gI2luY2x1ZGUgPHN5cy9zeXNsb2cuaD4KLSAjaWYgMAotICNpbmNsdWRlICJzeXNsb2cuaCIKLUBAIC03Miw2ICs3Miw3IEBAIHN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIylzeXNsb2cuYwk1LjI4IChCZXJrZWxleSkgNi8yNy85MCI7Ci0gI2luY2x1ZGUgPHN0ZGFyZy5oPgotICNpbmNsdWRlIDxwYXRocy5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotIAotICNkZWZpbmUJX1BBVEhfTE9HTkFNRQkiL2Rldi9sb2ciCi0gCi1kaWZmIC0tZ2l0IGEvc3lzbG9nZC5jIGIvc3lzbG9nZC5jCi1pbmRleCBlYTczZWE1Li4xY2EwNTk1IDEwMDY0NAotLS0tIGEvc3lzbG9nZC5jCi0rKysgYi9zeXNsb2dkLmMKLUBAIC04MTgsOSArODE4LDcgQEAgdm9pZCBkb2V4aXQoaW50IHNpZyk7Ci0gdm9pZCBpbml0KCk7Ci0gdm9pZCBjZmxpbmUoY2hhciAqbGluZSwgcmVnaXN0ZXIgc3RydWN0IGZpbGVkICpmKTsKLSBpbnQgZGVjb2RlKGNoYXIgKm5hbWUsIHN0cnVjdCBjb2RlICpjb2RldGFiKTsKLS0jaWYgZGVmaW5lZChfX0dMSUJDX18pCi0gI2RlZmluZSBkcHJpbnRmIG15ZHByaW50ZgotLSNlbmRpZiAvKiBfX0dMSUJDX18gKi8KLSBzdGF0aWMgdm9pZCBkcHJpbnRmKGNoYXIgKiwgLi4uKTsKLSBzdGF0aWMgdm9pZCBhbGxvY2F0ZV9sb2codm9pZCk7Ci0gdm9pZCBzaWdodXBfaGFuZGxlcigpOwotQEAgLTIwOTQsNyArMjA5Miw3IEBAIHZvaWQgcmVhcGNoaWxkKCkKLSAJKHZvaWQpIHNpZ25hbChTSUdDSExELCByZWFwY2hpbGQpOwkvKiByZXNldCBzaWduYWwgaGFuZGxlciAtQVNQICovCi0gCXdhaXQgKChpbnQgKikwKTsKLSAjZWxzZQotLQl1bmlvbiB3YWl0IHN0YXR1czsKLSsJaW50IHN0YXR1czsKLSAKLSAJd2hpbGUgKHdhaXQzKCZzdGF0dXMsIFdOT0hBTkcsIChzdHJ1Y3QgcnVzYWdlICopIE5VTEwpID4gMCkKLSAJCTsKLS0tIAotMi41LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMS1maXgtb25lLXJhcmVseS1yZXByb2R1Y2VkLXBhcmFsbGVsLWJ1aWxkLXByb2JsZW0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy8wMDAxLWZpeC1vbmUtcmFyZWx5LXJlcHJvZHVjZWQtcGFyYWxsZWwtYnVpbGQtcHJvYmxlbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2JmNmFlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMS1maXgtb25lLXJhcmVseS1yZXByb2R1Y2VkLXBhcmFsbGVsLWJ1aWxkLXByb2JsZW0ucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSBkY2FhNzUzOTFmZjI2N2MzOGU3NzZkNDhjNTc5Y2RiNzM0YjkxYWYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMjMgTWFyIDIwMjAgMTU6NTI6MzIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IG9uZSByYXJlbHkgcmVwcm9kdWNlZCBwYXJhbGxlbCBidWlsZCBwcm9ibGVtCisKK2ZpeCBmb3IgdGhpcyBpc3N1ZToKK2h0dHBzOi8vZ2l0aHViLmNvbS90cm9nbG9iaXQvc3lza2xvZ2QvaXNzdWVzLzE3CisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0aHViLmNvbS90cm9nbG9iaXQvc3lza2xvZ2QvY29tbWl0L2I4OGUyMWQxNzcwYTI2MmYwZTVkMGY2Yjg0ZjBhYmQ0YTVkZTU1YjddCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvTWFrZWZpbGUuYW0gfCAxMCArKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggOTkzZGJmZC4uMDZiNzA2ZCAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtNTYsMyArNTYsMTMgQEAgbGlic3lzbG9nX2xhX1NPVVJDRVMgID0gc3lzbG9nLmMgc3lzbG9nLmggY29tcGF0LmgKKyBsaWJzeXNsb2dfbGFfQ1BQRkxBR1MgPSAkKEFNX0NQUEZMQUdTKSAtRF9YT1BFTl9TT1VSQ0U9NjAwCisgbGlic3lzbG9nX2xhX0xERkxBR1MgID0gJChBTV9MREZMQUdTKSAtdmVyc2lvbi1pbmZvIDA6MDowCisgbGlic3lzbG9nX2xhX0xJQkFERCAgID0gJChMVExJQk9CSlMpCisrCisrIyBCb3RoIGxpYnN5c2xvZ19sYSBhbmQgc3lzbG9nZC9sb2dnZXIgcmVxdWlyZXMgb2JqZWN0cyBsaWtlIGxpYi9waWRmaWxlLm8sIGZvcgorKyMgbGlic3lzbG9nX2xhLCB0aGUgb2JqZWN0cyBzaG91bGQgYmUgY29tcGlsZWQgd2l0aCAtZlBJQywgYnV0IGZvcgorKyMgc3lzbG9nZC9sb2dnZXIsIGl0IGRvZXNuJ3QgbmVlZCAtZlBJQywgc28gdGhlcmUgaXMgYSByYWNlIGlzc3VlIHdoZW4gdGhlIHR3bworKyMgZGlmZmVyZW50IGxpYi9waWRmaWxlLm8gYXJlIGNvbXBpbGVkIGF0IHRoZSBzYW1lIHRpbWUsIHdoaWNoIHdvdWxkIGNhdXNlIGVycm9ycyBsaWtlOgorKyMgbGQ6IHN5c2xvZ2Qtc3lzbG9nZC5vOiBpbiBmdW5jdGlvbiBgbWFpbic6CisrIyBzeXNsb2dkLmM6NDE3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3BpZGZpbGUnCisrIworKyMgTWFrZSBMSUJPQkpTIGRlcGVuZCBvbiBMVExJQk9CSlMgdG8gZml4IHRoZSBwcm9ibGVtLgorKyQoTElCT0JKUyk6ICQoTFRMSUJPQkpTKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy8wMDAxLWZpeC1wcm9ibGVtcy10aGF0LWNhdXNlcy1hLXNlZ21lbnRhdGlvbi1mYXVsdC11bmRlci0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy8wMDAxLWZpeC1wcm9ibGVtcy10aGF0LWNhdXNlcy1hLXNlZ21lbnRhdGlvbi1mYXVsdC11bmRlci0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2NDMxYWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMS1maXgtcHJvYmxlbXMtdGhhdC1jYXVzZXMtYS1zZWdtZW50YXRpb24tZmF1bHQtdW5kZXItLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSBjYjcyYjNlMTcyYzIzOGI0YjVhZTU5MzVkYzZiZTU0ZjUwMzRmY2YxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMzAgSnVuIDIwMTcgMTg6MjA6MDYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIGZpeCBwcm9ibGVtcyB0aGF0IGNhdXNlcyBhIHNlZ21lbnRhdGlvbiBmYXVsdCB1bmRlciBzb21lCi0gY29uZGl0aW9ucwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyBubyB1cHN0cmVhbSBdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBrc3ltX21vZC5jIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2tzeW1fbW9kLmMgYi9rc3ltX21vZC5jCi1pbmRleCA2ZTI2ZGExLi5hM2RhYTdkIDEwMDY0NAotLS0tIGEva3N5bV9tb2QuYwotKysrIGIva3N5bV9tb2QuYwotQEAgLTE4Niw3ICsxODYsNiBAQCBleHRlcm4gaW50IEluaXRNc3ltcygpCi0gCQllbHNlCi0gCQkJU3lzbG9nKExPR19FUlIsICJFcnJvciBsb2FkaW5nIGtlcm5lbCBzeW1ib2xzICIgXAotIAkJCSAgICAgICAiLSAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKLS0JCWZjbG9zZShrc3ltcyk7Ci0gCQlyZXR1cm4oMCk7Ci0gCX0KLSAKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzLzAwMDItTWFrZS13YXktZm9yLXJlc3BlY3RpbmctZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzLzAwMDItTWFrZS13YXktZm9yLXJlc3BlY3RpbmctZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJiZGVmMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy8wMDAyLU1ha2Utd2F5LWZvci1yZXNwZWN0aW5nLWZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIGIyMmYyNDQ3MzJjZDBmNDc1YWYyZjgyZmM3ZWVjZWM0OWY5MDYyM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAxIEp1bCAyMDE3IDAwOjAxOjUwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBNYWtlIHdheSBmb3IgcmVzcGVjdGluZyBmbGFncyBmcm9tIGVudmlyb25tZW50Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUgfCA0ICstLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCA1YWYxNjg5Li5hZjY5OWQyIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtMTcsMTQgKzE3LDEyIEBACi0gIyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gIyAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgotIAotLUNDPSBnY2MKLSAjU0tGTEFHUz0gLWcgLURTWVNWIC1XYWxsCi0gI0xERkxBR1M9IC1nCi0tU0tGTEFHUz0gJChSUE1fT1BUX0ZMQUdTKSAtTzMgLURTWVNWIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsIC1mbm8tc3RyZW5ndGgtcmVkdWNlCi0rU0tGTEFHUyA9ICQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAtRFNZU1YgLVdhbGwgLWZuby1zdHJlbmd0aC1yZWR1Y2UKLSAjIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURfTEFSR0VGSUxFX1NPVVJDRQotICMgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UKLSAjICQoc2hlbGwgZ2V0Y29uZiBMRlNfU0tGTEFHUykKLS1MREZMQUdTPSAtcwotIAotICMgTG9vayB3aGVyZSB5b3VyIGluc3RhbGwgcHJvZ3JhbSBpcy4KLSBJTlNUQUxMID0gL3Vzci9iaW4vaW5zdGFsbAotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMva2xvZ2Quc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL2tsb2dkLnNlcnZpY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjODg4YzQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMva2xvZ2Quc2VydmljZQorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVtVbml0XQotRGVzY3JpcHRpb249S2VybmVsIExvZ2dpbmcgU2VydmljZQotQWZ0ZXI9c3lzbG9nZC5zZXJ2aWNlCi0KLVtTZXJ2aWNlXQotVHlwZT1mb3JraW5nCi1FeGVjU3RhcnQ9L3NiaW4va2xvZ2QKLVBJREZpbGU9L3Zhci9ydW4va2xvZ2QucGlkCi1TdGFuZGFyZE91dHB1dD1udWxsCi1SZXN0YXJ0PW9uLWZhaWx1cmUKLQotW0luc3RhbGxdCi1XYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvbm8tc3RyaXAtaW5zdGFsbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL25vLXN0cmlwLWluc3RhbGwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0MjZjODMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvbm8tc3RyaXAtaW5zdGFsbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotSW5kZXg6IHN5c2tsb2dkLTEuNS4xL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3lza2xvZ2QtMS41LjEub3JpZy9NYWtlZmlsZQotKysrIHN5c2tsb2dkLTEuNS4xL01ha2VmaWxlCi1AQCAtMTI3LDggKzEyNyw4IEBAIGNsb2JiZXI6IGNsZWFuCi0gCXJtIC1mIHN5c2xvZ2Qga2xvZ2Qga3N5bSBzeXNsb2dfdHN0IG9vcHNfdGVzdCBUQUdTIHRzeXNsb2dkIHRrbG9nZAotIAotIGluc3RhbGxfZXhlYzogc3lzbG9nZCBrbG9nZAotLQkke0lOU1RBTEx9IC1tIDUwMCAtcyBzeXNsb2dkICR7QklORElSfS9zeXNsb2dkCi0tCSR7SU5TVEFMTH0gLW0gNTAwIC1zIGtsb2dkICR7QklORElSfS9rbG9nZAotKwkke0lOU1RBTEx9IC1tIDUwMCBzeXNsb2dkICR7QklORElSfS9zeXNsb2dkCi0rCSR7SU5TVEFMTH0gLW0gNTAwIGtsb2dkICR7QklORElSfS9rbG9nZAotIAotIGluc3RhbGxfbWFuOgotIAkke0lOU1RBTEx9IC1vICR7TUFOX1VTRVJ9IC1nICR7TUFOX0dST1VQfSAtbSAke01BTl9QRVJNU30gc3lza2xvZ2QuOCAke01BTkRJUn0vbWFuOC9zeXNrbG9nZC44CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9uby12ZWN0b3JpemF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvbm8tdmVjdG9yaXphdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFjYzA0Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9uby12ZWN0b3JpemF0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0KLVRoZSBjb21waWxlciBzaG91bGQgbm90IGJlIGdlbmVyYXRpbmcgdmVjdG9yaXplZCBpbnN0cnVjdGlvbnMgb24gdGhpcyB0YXJnZXQuCi1UaGlzIGlzIGEgd29yayBhcm91bmQgdW50aWwgSSBjYW4gZGV0ZXJtaW5lIHdoeSB0aGlzIGlzIG9jY3VyaW5nIG9uIHRoaXMKLXBhcnRpY3VsYXIgcmVjaXBlCi0KLUluZGV4OiBzeXNrbG9nZC0xLjUvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzeXNrbG9nZC0xLjUub3JpZy9NYWtlZmlsZQotKysrIHN5c2tsb2dkLTEuNS9NYWtlZmlsZQotQEAgLTIwLDcgKzIwLDggQEAKLSBDQz0gZ2NjCi0gI1NLRkxBR1M9IC1nIC1EU1lTViAtV2FsbAotICNMREZMQUdTPSAtZwotLVNLRkxBR1M9ICQoUlBNX09QVF9GTEFHUykgLU8zIC1EU1lTViAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbCAtZm5vLXN0cmVuZ3RoLXJlZHVjZQotK1NLRkxBR1M9ICQoUlBNX09QVF9GTEFHUykgLU8zIC1EU1lTViAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbCAtZm5vLXN0cmVuZ3RoLXJlZHVjZSBcCi0rCS1mbm8tdHJlZS12ZWN0b3JpemUKLSAjIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURfTEFSR0VGSUxFX1NPVVJDRQotICMgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UKLSAjICQoc2hlbGwgZ2V0Y29uZiBMRlNfU0tGTEFHUykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL3N5c2tsb2dkIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvc3lza2xvZ2QKaW5kZXggNzM0MjQ4NC4uMmEzNTZhNiAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvc3lza2xvZ2QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvc3lza2xvZ2QKQEAgLTE4LDkgKzE4LDcgQEAKIFBBVEg9L2JpbjovdXNyL2Jpbjovc2JpbjovdXNyL3NiaW4KIAogcGlkZmlsZV9zeXNsb2dkPS92YXIvcnVuL3N5c2xvZ2QucGlkCi1waWRmaWxlX2tsb2dkPS92YXIvcnVuL2tsb2dkLnBpZAotYmlucGF0aF9zeXNsb2dkPS9zYmluL3N5c2xvZ2QKLWJpbnBhdGhfa2xvZ2Q9L3NiaW4va2xvZ2QKK2JpbnBhdGhfc3lzbG9nZD0vdXNyL3NiaW4vc3lzbG9nZAogCiB0ZXN0IC14ICRiaW5wYXRoIHx8IGV4aXQgMAogCkBAIC0xMTIsMjggKzExMCwxNiBAQAogICAgIGNyZWF0ZV94Y29uc29sZQogICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1xdWlldCAtLXBpZGZpbGUgJHBpZGZpbGVfc3lzbG9nZCAtLW5hbWUgc3lzbG9nZCAtLXN0YXJ0YXMgJGJpbnBhdGhfc3lzbG9nZCAtLSAkU1lTTE9HRAogICAgIGxvZ19lbmRfbXNnICQ/Ci0gICAgbG9nX2JlZ2luX21zZyAiU3RhcnRpbmcga2VybmVsIGxvZyBkYWVtb24uLi4iCi0gICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tcGlkZmlsZSAkcGlkZmlsZV9rbG9nZCAtLW5hbWUga2xvZ2QgLS1zdGFydGFzICRiaW5wYXRoX2tsb2dkIC0tICRLTE9HRAotICAgIGxvZ19lbmRfbXNnICQ/CiAgICAgOzsKICAgc3RvcCkKICAgICBsb2dfYmVnaW5fbXNnICJTdG9wcGluZyBzeXN0ZW0gbG9nIGRhZW1vbi4uLiIKICAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLS1xdWlldCAtLXBpZGZpbGUgJHBpZGZpbGVfc3lzbG9nZCAtLW5hbWUgc3lzbG9nZAogICAgIGxvZ19lbmRfbXNnICQ/Ci0gICAgbG9nX2JlZ2luX21zZyAiU3RvcHBpbmcga2VybmVsIGxvZyBkYWVtb24uLi4iCi0gICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcXVpZXQgLS1yZXRyeSAzIC0tZXhlYyAkYmlucGF0aF9rbG9nZCAtLXBpZGZpbGUgJHBpZGZpbGVfa2xvZ2QKLSAgICBsb2dfZW5kX21zZyAkPwogICAgIDs7CiAgIHJlbG9hZHxmb3JjZS1yZWxvYWQpCiAgICAgbG9nX2JlZ2luX21zZyAiUmVsb2FkaW5nIHN5c3RlbSBsb2cgZGFlbW9uLi4uIgogICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tc2lnbmFsIDEgLS1waWRmaWxlICRwaWRmaWxlX3N5c2xvZ2QgLS1uYW1lIHN5c2xvZ2QKICAgICBsb2dfZW5kX21zZyAkPwotICAgIGxvZ19iZWdpbl9tc2cgIlJlbG9hZGluZyBrZXJuZWwgbG9nIGRhZW1vbi4uLiIKLSAgICBwaWQ9YGNhdCAkcGlkZmlsZV9rbG9nZCAyPiAvZGV2L251bGxgCi0gICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcXVpZXQgLS1yZXRyeSAzIC0tZXhlYyAkYmlucGF0aF9rbG9nZCAtLXBpZGZpbGUgJHBpZGZpbGVfa2xvZ2QKLSAgICB3YWl0cGlkICRwaWQKLSAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1waWRmaWxlICRwaWRmaWxlX2tsb2dkIC0tbmFtZSBrbG9nZCAtLXN0YXJ0YXMgJGJpbnBhdGhfa2xvZ2QgLS0gJEtMT0dECi0gICAgbG9nX2VuZF9tc2cgJD8KICAgICA7OwogICByZXN0YXJ0KQogICAgIGxvZ19iZWdpbl9tc2cgIlJlc3RhcnRpbmcgc3lzdGVtIGxvZyBkYWVtb24uLi4iCkBAIC0xNDIsMTIgKzEyOCw2IEBACiAgICAgd2FpdHBpZCAkcGlkCiAgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tcGlkZmlsZSAkcGlkZmlsZV9zeXNsb2dkIC0tbmFtZSBzeXNsb2dkIC0tc3RhcnRhcyAkYmlucGF0aF9zeXNsb2dkIC0tICRTWVNMT0dECiAgICAgbG9nX2VuZF9tc2cgJD8KLSAgICBsb2dfYmVnaW5fbXNnICJSZWxvYWRpbmcga2VybmVsIGxvZyBkYWVtb24uLi4iCi0gICAgcGlkPWBjYXQgJHBpZGZpbGVfa2xvZ2QgMj4gL2Rldi9udWxsYAotICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tcmV0cnkgMyAtLWV4ZWMgJGJpbnBhdGhfa2xvZ2QgLS1waWRmaWxlICRwaWRmaWxlX2tsb2dkCi0gICAgd2FpdHBpZCAkcGlkCi0gICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tcGlkZmlsZSAkcGlkZmlsZV9rbG9nZCAtLW5hbWUga2xvZ2QgLS1zdGFydGFzICRiaW5wYXRoX2tsb2dkIC0tICRLTE9HRAotICAgIGxvZ19lbmRfbXNnICQ/CiAgICAgOzsKICAgcmVsb2FkLW9yLXJlc3RhcnQpCiAgICAgaWYgcnVubmluZwpAQCAtMTYwLDggKzE0MCw2IEBACiAgIHN0YXR1cykKICAgICBzdGF0dXMgc3lzbG9nZAogICAgIFJFVFZBTD0kPwotICAgIHN0YXR1cyBrbG9nZAotICAgIHJ2YWw9JD8KICAgICBbICRSRVRWQUwgLWVxIDAgXSAmJiBleGl0ICRydmFsCiAgICAgZXhpdCAkUkVUVkFMCiAgICAgOzsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL3N5c2xvZy5jb25mIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvc3lzbG9nLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4NDlkZTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvc3lzbG9nLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0jICAvZXRjL3N5c2xvZy5jb25mCUNvbmZpZ3VyYXRpb24gZmlsZSBmb3Igc3lzbG9nZC4KLSMKLSMgIFBvcnRlZCBmcm9tIGRlYmlhbiBieSBZdSBLZSA8a2UueXVAaW50ZWwuY29tPgotIwotCi0jCi0jIEZpcnN0IHNvbWUgc3RhbmRhcmQgbG9nZmlsZXMuICBMb2cgYnkgZmFjaWxpdHkuCi0jCi0KLWF1dGgsYXV0aHByaXYuKgkJCS92YXIvbG9nL2F1dGgubG9nCi0qLio7YXV0aCxhdXRocHJpdi5ub25lCQktL3Zhci9sb2cvc3lzbG9nCi0jY3Jvbi4qCQkJCS92YXIvbG9nL2Nyb24ubG9nCi1kYWVtb24uKgkJCS0vdmFyL2xvZy9kYWVtb24ubG9nCi1rZXJuLioJCQkJLS92YXIvbG9nL2tlcm4ubG9nCi1scHIuKgkJCQktL3Zhci9sb2cvbHByLmxvZwotbWFpbC4qCQkJCS0vdmFyL2xvZy9tYWlsLmxvZwotdXNlci4qCQkJCS0vdmFyL2xvZy91c2VyLmxvZwotCi0jCi0jIExvZ2dpbmcgZm9yIHRoZSBtYWlsIHN5c3RlbS4gIFNwbGl0IGl0IHVwIHNvIHRoYXQKLSMgaXQgaXMgZWFzeSB0byB3cml0ZSBzY3JpcHRzIHRvIHBhcnNlIHRoZXNlIGZpbGVzLgotIwotbWFpbC5pbmZvCQkJLS92YXIvbG9nL21haWwuaW5mbwotbWFpbC53YXJuCQkJLS92YXIvbG9nL21haWwud2FybgotbWFpbC5lcnIJCQkvdmFyL2xvZy9tYWlsLmVycgotCi0jIExvZ2dpbmcgZm9yIElOTiBuZXdzIHN5c3RlbQotIwotbmV3cy5jcml0CQkJL3Zhci9sb2cvbmV3cy5jcml0Ci1uZXdzLmVycgkJCS92YXIvbG9nL25ld3MuZXJyCi1uZXdzLm5vdGljZQkJCS0vdmFyL2xvZy9uZXdzLm5vdGljZQotCi0jCi0jIFNvbWUgYGNhdGNoLWFsbCcgbG9nZmlsZXMuCi0jCi0qLj1kZWJ1ZztcCi1hdXRoLGF1dGhwcml2Lm5vbmU7XAotbmV3cy5ub25lO21haWwubm9uZQktL3Zhci9sb2cvZGVidWcKLQotKi49aW5mbzsqLj1ub3RpY2U7Ki49d2FybjtcCi1hdXRoLGF1dGhwcml2Lm5vbmU7XAotY3JvbixkYWVtb24ubm9uZTtcCi1tYWlsLG5ld3Mubm9uZQkJLS92YXIvbG9nL21lc3NhZ2VzCi0KLSMKLSMgRW1lcmdlbmNpZXMgYXJlIHNlbnQgdG8gZXZlcnlib2R5IGxvZ2dlZCBpbi4KLSMKLSouZW1lcmcJCQkJKgotCi0jCi0jIEkgbGlrZSB0byBoYXZlIG1lc3NhZ2VzIGRpc3BsYXllZCBvbiB0aGUgY29uc29sZSwgYnV0IG9ubHkgb24gYSB2aXJ0dWFsCi0jIGNvbnNvbGUgSSB1c3VhbGx5IGxlYXZlIGlkbGUuCi0jCi0jZGFlbW9uLG1haWwuKjtcCi0jbmV3cy49Y3JpdDtuZXdzLj1lcnI7bmV3cy49bm90aWNlO1wKLSMqLj1kZWJ1ZzsqLj1pbmZvO1wKLSMqLj1ub3RpY2U7Ki49d2FybgkvZGV2L3R0eTgKLQotIyBUaGUgbmFtZWQgcGlwZSAvZGV2L3hjb25zb2xlIGlzIGZvciB0aGUgYHhjb25zb2xlJyB1dGlsaXR5LiAgVG8gdXNlIGl0LAotIyB5b3UgbXVzdCBpbnZva2UgYHhjb25zb2xlJyB3aXRoIHRoZSBgLWZpbGUnIG9wdGlvbjoKLSMKLSMgICAgJCB4Y29uc29sZSAtZmlsZSAvZGV2L3hjb25zb2xlIFsuLi5dCi0jCi0jIE5PVEU6IGFkanVzdCB0aGUgbGlzdCBiZWxvdywgb3IgeW91J2xsIGdvIGNyYXp5IGlmIHlvdSBoYXZlIGEgcmVhc29uYWJseQotIyAgICAgIGJ1c3kgc2l0ZS4uCi0jCi1kYWVtb24uKjttYWlsLio7XAotbmV3cy5lcnI7XAotKi49ZGVidWc7Ki49aW5mbztcCi0qLj1ub3RpY2U7Ki49d2Fybgl8L2Rldi94Y29uc29sZQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9zeXNsb2dkLnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9zeXNsb2dkLnNlcnZpY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlYWZmM2QuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvc3lzbG9nZC5zZXJ2aWNlCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotW1VuaXRdCi1EZXNjcmlwdGlvbj1TeXN0ZW0gTG9nZ2luZyBTZXJ2aWNlCi1SZXF1aXJlcz1zeXNsb2cuc29ja2V0Ci0KLVtTZXJ2aWNlXQotVHlwZT1mb3JraW5nCi1FeGVjU3RhcnQ9L3NiaW4vc3lzbG9nZAotUElERmlsZT0vdmFyL3J1bi9zeXNsb2dkLnBpZAotU3RhbmRhcmRPdXRwdXQ9bnVsbAotUmVzdGFydD1vbi1mYWlsdXJlCi0KLVtJbnN0YWxsXQotV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKLUFsaWFzPXN5c2xvZy5zZXJ2aWNlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy90bXBmaWxlcy5zeXNrbG9nZC5jb25mIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvdG1wZmlsZXMuc3lza2xvZ2QuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjRhZWNkMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy90bXBmaWxlcy5zeXNrbG9nZC5jb25mCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotcCAvZGV2L3hjb25zb2xlIDA2NDAgcm9vdCBhZG0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkLmluYwppbmRleCA3NDkwMjZmLi44ODk5ZGFhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9zeXNrbG9nZC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2QuaW5jCkBAIC0xLDYyICsxLDM4IEBACiBTVU1NQVJZID0gIlN5c3RlbSBMb2cgRGFlbW9ucyIKLURFU0NSSVBUSU9OID0gIlRoZSBzeXNrbG9nZCBwYWNrYWdlIGltcGxlbWVudHMgdHdvIHN5c3RlbSBsb2cgZGFlbW9uczogc3lzbG9nZCwga2xvZ2QiCitERVNDUklQVElPTiA9ICJUaGUgc3lza2xvZ2QgcGFja2FnZSBpbXBsZW1lbnRzIHN5c3RlbSBsb2cgZGFlbW9uczogc3lzbG9nZCIKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cuaW5mb2Ryb20ub3JnL3Byb2plY3RzL3N5c2tsb2dkLyIKIFNFQ1RJT04gPSAiYmFzZSIKIAotTElDRU5TRSA9ICJHUEx2MisgJiBCU0QiCi1MSUNFTlNFX3N5c2xvZ2QgPSAiQlNEIgotTElDRU5TRV9rbG9nZCA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zeXNsb2dkLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9NzdmZmIyZmVjNDhjNDZkN2NhMGFiYjJkNTgxM2U3ZmQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8va2xvZ2QuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE5O21kNT03ZTg3ZWQwYWU2MTQyZGUwNzliY2U3MzhjMTBjODk5ZCBcCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTViNGJlNGIyNTQ5MzM4NTI2NzU4ZWY0NzljMDQwOTQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9zeXNsb2dkLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9YTg4MGZlY2JjMDQ1MDNmMDcxYzQ5NGE5YzBkZDRmOTcgXAogICAgICAgICAgICAgICAgICAgICIKIAotaW5oZXJpdCB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHN5c3RlbWQKK2luaGVyaXQgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBzeXN0ZW1kIGF1dG90b29scwogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdHJvZ2xvYml0L3N5c2tsb2dkLmdpdDtub2JyYW5jaD0xIFwKLSAgICAgICAgICAgZmlsZTovL25vLXN0cmlwLWluc3RhbGwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LXByb2JsZW1zLXRoYXQtY2F1c2VzLWEtc2VnbWVudGF0aW9uLWZhdWx0LXVuZGVyLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLU1ha2Utd2F5LWZvci1yZXNwZWN0aW5nLWZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vc3lza2xvZ2QgXAotICAgICAgICAgICBmaWxlOi8vc3lzbG9nLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vc3lzbG9nZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL2tsb2dkLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vdG1wZmlsZXMuc3lza2xvZ2QuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1vbmUtcmFyZWx5LXJlcHJvZHVjZWQtcGFyYWxsZWwtYnVpbGQtcHJvYmxlbS5wYXRjaCBcCiAgICAgICAgICAgICIKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLVNSQ19VUklfYXBwZW5kX2U1MDB2MiA9ICIgZmlsZTovL25vLXZlY3Rvcml6YXRpb24ucGF0Y2giCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXN5c3RlbWQ9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSAtLXdpdGhvdXQtbG9nZ2VyIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQorICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vc3lzbG9nLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzbG9nLmNvbmYKKyAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vc3lza2xvZ2QgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c2xvZworfQogCiBTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInN5c2xvZ2Quc2VydmljZSBrbG9nZC5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInN5c2xvZ2Quc2VydmljZSIKIFNZU1RFTURfQVVUT19FTkFCTEUgPSAiZW5hYmxlIgogCiBJTklUU0NSSVBUX05BTUUgPSAic3lzbG9nIgogQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vc3lzbG9nLmNvbmYiCiBSQ09ORkxJQ1RTXyR7UE59ID0gInJzeXNsb2cgYnVzeWJveC1zeXNsb2cgc3lzbG9nLW5nIgogCi1DRkxBR1MgKz0gIi1EU1lTViAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1EX0xBUkdFRklMRV9TT1VSQ0UiCi0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44IFwKLQkJCSR7RH0ke21hbmRpcn0vbWFuNSBcCi0JCQkke0R9JHtiYXNlX3NiaW5kaXJ9Ci0Jb2VfcnVubWFrZSAnQklORElSPSR7RH0ke2Jhc2Vfc2JpbmRpcn0nIFwKLQkJCSdNQU5ESVI9JHtEfSR7bWFuZGlyfScgaW5zdGFsbAotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KLQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3N5c2xvZy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2xvZy5jb25mCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L3N5c2tsb2dkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXNsb2cKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9zeXNsb2dkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2tsb2dkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQKLQkJaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS90bXBmaWxlcy5zeXNrbG9nZC5jb25mICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXNrbG9nZC5jb25mCi0JZmkKLX0KLQogRklMRVNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnJHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lza2xvZ2QuY29uZicsICcnLCBkKX0iCiAKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkXzEuNS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2RfMS41LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4YmNmZDkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2RfMS41LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLXJlcXVpcmUgc3lza2xvZ2QuaW5jCi0KLVNSQ1JFViA9ICI5MzBhMmIxYzBkMTViMTQzMDlhNDlmMTRlM2YzMGU5MDU0NTZhZjRkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2RfMi4xLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9zeXNrbG9nZF8yLjEuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjZiNGVmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2RfMi4xLjEuYmIKQEAgLTAsMCArMSwzIEBACityZXF1aXJlIHN5c2tsb2dkLmluYworCitTUkNSRVYgPSAiMjRkYWZlOWEyN2FjOTU5ZWJlYjg5YWNkM2ViZDNkNjJjY2E0Yjc1NSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQuaW5jCmluZGV4IDc3Y2M2ZjIuLjhmZDg3YjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LmluYwpAQCAtMjMsMTAgKzIzLDYgQEAKIAogRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtc3RyaXBwaW5nIgogCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInN5c3N0YXQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZW5hYmxlIgotCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKICAgICBleHBvcnQgc2FfbGliX2Rpcj0ke2xpYmV4ZWNkaXJ9L3NhCiB9CkBAIC0zNCw2ICszMCw5IEBACiBkb19pbnN0YWxsKCkgewogCWF1dG90b29sc19kb19pbnN0YWxsCiAKKwkjIERvbid0IHZlcnNpb24gdGhlIGRvY3VtZW50YXRpb24KKwltdiAke0R9JHtkb2NkaXJ9LyR7QlB9ICR7RH0ke2RvY2Rpcn0vJHtCUE59CisKIAkjIGRvbid0IGluc3RhbGwgL3Zhci9sb2cvc2Egd2hlbiBwb3B1bGF0aW5nIHJvb3Rmcy4gRG8gaXQgdGhyb3VnaCB2b2xhdGlsZQogCXJtIC1yZiAke0R9L3ZhcgogCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtRml4LTIzMi1NZW1vcnktY29ycnVwdGlvbi1idWctZHVlLXRvLUludGVnZXItT3ZlcmZsby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC8wMDAxLUZpeC0yMzItTWVtb3J5LWNvcnJ1cHRpb24tYnVnLWR1ZS10by1JbnRlZ2VyLU92ZXJmbG8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2YjExMTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtRml4LTIzMi1NZW1vcnktY29ycnVwdGlvbi1idWctZHVlLXRvLUludGVnZXItT3ZlcmZsby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gNjAzYWU0ZWQ4Y2Q2NWFiZjA3NzZlZjdmNjgzNTRhNWMyNGEzNDExYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFNlYmFzdGllbiBHT0RBUkQgPHN5c3N0YXRAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgotRGF0ZTogVHVlLCAxNSBPY3QgMjAxOSAxNDozOTozMyArMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggIzIzMjogTWVtb3J5IGNvcnJ1cHRpb24gYnVnIGR1ZSB0byBJbnRlZ2VyIE92ZXJmbG93IGluCi0gcmVtYXBfc3RydWN0KCkKLQotVHJ5IHRvIGF2b2lkIGludGVnZXIgb3ZlcmZsb3cgd2hlbiByZWFkaW5nIGEgY29ycnVwdGVkIGJpbmFyeSBkYXRhZmlsZQotd2l0aCBzYWRmLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vc3lzc3RhdC9zeXNzdGF0L2NvbW1pdC84M2ZhZDljODk1ZDFhYzEzZjc2YWY1ODgzYjc0NTFiMzMwMmJlZWY1XQotQ1ZFOiBDVkUtMjAxOS0xNjE2NwotCi1TaWduZWQtb2ZmLWJ5OiBTZWJhc3RpZW4gR09EQVJEIDxzeXNzdGF0QHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFdlbmxpbiBLYW5nIDx3ZW5saW4ua2FuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gc2FfY29tbW9uLmMgfCA3ICsrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc2FfY29tbW9uLmMgYi9zYV9jb21tb24uYwotaW5kZXggMzk1YzExYy4uY2ZhOTAwNyAxMDA2NDQKLS0tLSBhL3NhX2NvbW1vbi5jCi0rKysgYi9zYV9jb21tb24uYwotQEAgLTEzMzYsNyArMTMzNiw4IEBAIGludCByZW1hcF9zdHJ1Y3QodW5zaWduZWQgaW50IGd0eXBlc19ucltdLCB1bnNpZ25lZCBpbnQgZnR5cGVzX25yW10sCi0gCS8qIFJlbWFwIFt1bnNpZ25lZF0gaW50IGZpZWxkcyAqLwotIAlkID0gZ3R5cGVzX25yWzFdIC0gZnR5cGVzX25yWzFdOwotIAlpZiAoZCkgewotLQkJaWYgKGZ0eXBlc19uclsxXSAqIFVMX0FMSUdOTUVOVF9XSURUSCA8IGZ0eXBlc19uclsxXSkKLSsJCWlmIChndHlwZXNfbnJbMF0gKiBVTExfQUxJR05NRU5UX1dJRFRIICsKLSsJCSAgICBmdHlwZXNfbnJbMV0gKiBVTF9BTElHTk1FTlRfV0lEVEggPCBmdHlwZXNfbnJbMV0pCi0gCQkJLyogT3ZlcmZsb3cgKi8KLSAJCQlyZXR1cm4gLTE7Ci0gCi1AQCAtMTM2NSw3ICsxMzY2LDkgQEAgaW50IHJlbWFwX3N0cnVjdCh1bnNpZ25lZCBpbnQgZ3R5cGVzX25yW10sIHVuc2lnbmVkIGludCBmdHlwZXNfbnJbXSwKLSAJLyogUmVtYXAgcG9zc2libGUgZmllbGRzIChsaWtlIHN0cmluZ3Mgb2YgY2hhcnMpIGZvbGxvd2luZyBpbnQgZmllbGRzICovCi0gCWQgPSBndHlwZXNfbnJbMl0gLSBmdHlwZXNfbnJbMl07Ci0gCWlmIChkKSB7Ci0tCQlpZiAoZnR5cGVzX25yWzJdICogVV9BTElHTk1FTlRfV0lEVEggPCBmdHlwZXNfbnJbMl0pCi0rCQlpZiAoZ3R5cGVzX25yWzBdICogVUxMX0FMSUdOTUVOVF9XSURUSCArCi0rCQkgICAgZ3R5cGVzX25yWzFdICogVUxfQUxJR05NRU5UX1dJRFRIICsKLSsJCSAgICBmdHlwZXNfbnJbMl0gKiBVX0FMSUdOTUVOVF9XSURUSCA8IGZ0eXBlc19uclsyXSkKLSAJCQkvKiBPdmVyZmxvdyAqLwotIAkJCXJldHVybiAtMTsKLSAKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjYzMjk5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC8wMDAxLUluY2x1ZGUtbmVlZGVkLWhlYWRlcnMtZXhwbGljaXRseS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLUZyb20gNDIzMjVmYWE4OGQ2NGNjZTc5OTk3N2Q2MTFiMjc5MmJlYjE1NDY0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDE0IFNlcCAyMDE1IDA4OjM2OjU5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEluY2x1ZGUgbmVlZGVkIGhlYWRlcnMgZXhwbGljaXRseQotCi1vbiBnbGliYyB0aGVzZSBoZWFkZXJzIGdldCBwdWxsZWQgaW4gaW5kaXJlY3RseSB2aWEgb3RoZXIgLmggZmlsZXMKLWJ1dCByaWdodCBmaXggaXMgdG8gaW5jbHVkZSB0aGVtIGRpcmVjdGx5IHdoZW4gdXNlZAotCi1maXhlcwotCi1lcnJvcjogdXNlIG9mIHVuZGVjbGFyZWQgaWRlbnRpZmllciAnUEFUSF9NQVgnCi1lcnJvcjogY2FsbGVkIG9iamVjdCB0eXBlICd1bnNpZ25lZCBpbnQnIGlzIG5vdCBhIGZ1bmN0aW9uIG9yIGZ1bmN0aW9uIHBvaW50ZXIKLWRtX21ham9yID0gbWFqb3IoYXV4LnN0X3JkZXYpOwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIGNvbW1vbi5jICAgIHwgMSArCi0gaW9jb25mLmMgICAgfCAxICsKLSBzYV9jb21tb24uYyB8IDEgKwotIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLUluZGV4OiBzeXNzdGF0LTExLjcuMS9jb21tb24uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN5c3N0YXQtMTEuNy4xLm9yaWcvY29tbW9uLmMKLSsrKyBzeXNzdGF0LTExLjcuMS9jb21tb24uYwotQEAgLTIwLDYgKzIwLDcgQEAKLSAgKi8KLSAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci1JbmRleDogc3lzc3RhdC0xMS43LjEvaW9jb25mLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzeXNzdGF0LTExLjcuMS5vcmlnL2lvY29uZi5jCi0rKysgc3lzc3RhdC0xMS43LjEvaW9jb25mLmMKLUBAIC0yNyw2ICsyNyw3IEBACi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGRpcmVudC5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAKLSAjaW5jbHVkZSAiaW9jb25mLmgiCi0gI2luY2x1ZGUgImNvbW1vbi5oIgotSW5kZXg6IHN5c3N0YXQtMTEuNy4xL3NhX2NvbW1vbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3lzc3RhdC0xMS43LjEub3JpZy9zYV9jb21tb24uYwotKysrIHN5c3N0YXQtMTEuNy4xL3NhX2NvbW1vbi5jCi1AQCAtMjAsNiArMjAsNyBAQAotICAqLwotIAotICNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdGRpbnQuaD4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtY2hlY2stZm9yLWNoa2NvbmZpZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtY2hlY2stZm9yLWNoa2NvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDY3YmI5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtY29uZmlndXJlLmluLXJlbW92ZS1jaGVjay1mb3ItY2hrY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gMTU5MGNjNjE0YWFmMGZiODFjZDgwNDQxNGQ2YzlkNWE5MjI3MzUyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFdlbmxpbiBLYW5nIDx3ZW5saW4ua2FuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCA1IE5vdiAyMDE5IDE2OjE2OjQ0ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5pbjogcmVtb3ZlIGNoZWNrIGZvciBjaGtjb25maWcKKworY2hrY29uZmlnIGNhbid0IHdvcmsgb24gY3Jvc3MtcGxhdGZvcm0sIHNvIHNob3VsZCByZW1vdmUgY2hlY2sgZm9yIGl0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyBlbWJlZGRlZCBzcGVjaWZpYyBdCisKK1NpZ25lZC1vZmYtYnk6IFdlbmxpbiBLYW5nIDx3ZW5saW4ua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmluIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KK2luZGV4IDQ4YjlhMzEuLmNlZGViNDMgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgorQEAgLTQyLDcgKzQyLDggQEAgQUNfU1VCU1QoVkVSX0pTT04pCisgQUNfU1VCU1QoVkVSX1hNTCkKKyAKKyBBQ19QQVRIX1BST0coUEFUSF9DUCwgY3ApCistQUNfUEFUSF9QUk9HKFBBVEhfQ0hLQ09ORklHLCBjaGtjb25maWcpCisrI0FDX1BBVEhfUFJPRyhQQVRIX0NIS0NPTkZJRywgY2hrY29uZmlnKQorK0FDX1NVQlNUKFBBVEhfQ0hLQ09ORklHKQorIAorICMgQ2hlY2sgZm9yIHN5c3RlbWQKKyBBQ19DSEVDS19QUk9HKFBLR19DT05GSUcsIHBrZy1jb25maWcsIHBrZy1jb25maWcpCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMi4xLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTIuMS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjI4ODhkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMi4xLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1yZXF1aXJlIHN5c3N0YXQuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWEyM2E3NGIzZjRjYWY5NjE2MjMwNzg5ZDk0MjE3YWNiIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1JbmNsdWRlLW5lZWRlZC1oZWFkZXJzLWV4cGxpY2l0bHkucGF0Y2ggXAotCSAgICBmaWxlOi8vMDAwMS1GaXgtMjMyLU1lbW9yeS1jb3JydXB0aW9uLWJ1Zy1kdWUtdG8tSW50ZWdlci1PdmVyZmxvLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ4ZTNiYmI5Yzg3M2RkMzcwZjZkMzM2NjRlMzI2NTcwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY3NTJmM2M0MDYxNTNhNmZjNDQ2NDk2ZjExMDI4NzI1MDVhY2UzZjA5MzFkOTc1YzFkNjY0YzgxZWMwOWYxMjkiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTIuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzEyLjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTkwZjg5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzEyLjIuMS5iYgpAQCAtMCwwICsxLDggQEAKK3JlcXVpcmUgc3lzc3RhdC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTIzYTc0YjNmNGNhZjk2MTYyMzA3ODlkOTQyMTdhY2IiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtY2hlY2stZm9yLWNoa2NvbmZpZy5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjlkZmZmNWZhYzI0ZTM1YmQ5MmZiNzg5NmRlYmYyZmZiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhlZGIwZTE5YjUxNGFjNTYwYTA5OGEwMjkzM2E0NzM1Yjg4MTI5NmQ2MTAxNGRiODliZjgwZjA1ZGQ3YTQ3MzIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMzIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMzIuYmIKaW5kZXggMThmMDliNS4uZWJlNmNiMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhcl8xLjMyLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXJfMS4zMi5iYgpAQCAtMjIsNiArMjIsOCBAQAogCiBFWFRSQV9PRUNPTkYgKz0gIkRFRkFVTFRfUk1UX0RJUj0ke3NiaW5kaXJ9IgogCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAidGFyX2N2X3BhdGhfUlNIPW5vIgorCiAjIExldCBhY2xvY2FsIHVzZSB0aGUgcmVsYXRpdmUgcGF0aCBmb3IgdGhlIG00IGZpbGUgcmF0aGVyIHRoYW4gdGhlCiAjIGFic29sdXRlIHNpbmNlIHRhciBoYXMgYSBsb3Qgb2YgbTQgZmlsZXMsIG90aGVyd2lzZSB0aGVyZSBtaWdodAogIyBiZSBhbiAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiBpdCBpcyBidWlsdCBpbiBhIGxvbmcvZGVlcApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMDAwMS1SZW1vdmUtZmdldHMtZXh0ZXJuLWRlY2xhcmF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMDAwMS1SZW1vdmUtZmdldHMtZXh0ZXJuLWRlY2xhcmF0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4YzhkOWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8wMDAxLVJlbW92ZS1mZ2V0cy1leHRlcm4tZGVjbGFyYXRpb24ucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSAyNGQxMDkxOWI0YmM1ZTM3YTJkODBiMjc0ZDJjZDJlZTc3YjAzNTQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTMgSmFuIDIwMjAgMTQ6MjU6NDcgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIGZnZXRzKCkgZXh0ZXJuIGRlY2xhcmF0aW9uCisKK1RoZXNlIHNvdXJjZXMgYWxyZWFkeSBpbmNsdWRlIDxzdGRpby5oPiB3aGljaCBzaG91bGQgYnJpbmcgdGhlIGNvcnJlY3QKK2RlY2xhcmF0aW9uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGhvc3RzX2FjY2Vzcy5jIHwgMSAtCisgbWlzYy5jICAgICAgICAgfCAyIC0tCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaG9zdHNfYWNjZXNzLmMgYi9ob3N0c19hY2Nlc3MuYworaW5kZXggMzI5YjM1ZS4uMDEzM2U1ZSAxMDA2NDQKKy0tLSBhL2hvc3RzX2FjY2Vzcy5jCisrKysgYi9ob3N0c19hY2Nlc3MuYworQEAgLTQ0LDcgKzQ0LDYgQEAgc3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKSBob3N0c19hY2Nlc3MuYyAxLjIxIDk3LzAyLzEyIDAyOjEzOjIyIjsKKyAjaW5jbHVkZSA8bmV0ZGIuaD4KKyAjZW5kaWYKKyAKKy1leHRlcm4gY2hhciAqZmdldHMoKTsKKyBleHRlcm4gaW50IGVycm5vOworIAorICNpZm5kZWYJSU5BRERSX05PTkUKK2RpZmYgLS1naXQgYS9taXNjLmMgYi9taXNjLmMKK2luZGV4IDc0Y2EzMTkuLjlhNWU3M2EgMTAwNjQ0CistLS0gYS9taXNjLmMKKysrKyBiL21pc2MuYworQEAgLTE4LDggKzE4LDYgQEAgc3RhdGljIGNoYXIgc2Njc2ljW10gPSAiQCgjKSBtaXNjLmMgMS4yIDk2LzAyLzExIDE3OjAxOjI5IjsKKyAKKyAjaW5jbHVkZSAidGNwZC5oIgorIAorLWV4dGVybiBjaGFyICpmZ2V0cygpOworLQorICNpZm5kZWYJSU5BRERSX05PTkUKKyAjZGVmaW5lCUlOQUREUl9OT05FCSgtMSkJCS8qIFhYWCBzaG91bGQgYmUgMHhmZmZmZmZmZiAqLworICNlbmRpZgorLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVyc183LjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzXzcuNi5iYgppbmRleCBiZDBjODRjLi5lOTAzYjlkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzXzcuNi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzXzcuNi5iYgpAQCAtNDksNiArNDksNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXhfd2FybmluZ3MucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZml4X3dhcm5pbmdzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1mZ2V0cy1leHRlcm4tZGVjbGFyYXRpb24ucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJlNmZhMjVmNzEyMjZkMDkwZjM0ZGUzZjZiMTIyZmI1YSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGkyaHRtbC9maWxlcy8wMDAxLUFsbG93LWNvbXBpbGluZy1vdXQtb2Ytc291cmNlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aTJodG1sL2ZpbGVzLzAwMDEtQWxsb3ctY29tcGlsaW5nLW91dC1vZi1zb3VyY2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjZjAyNWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aTJodG1sL2ZpbGVzLzAwMDEtQWxsb3ctY29tcGlsaW5nLW91dC1vZi1zb3VyY2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tOiBPbGFmIE1hbmRlbCA8by5tYW5kZWxAbWVubG9zeXN0ZW1zLmNvbT4KLURhdGU6IEZyaSwgMjEgT2N0IDIwMTYgMTM6MDQ6NDQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWxsb3cgY29tcGlsaW5nIG91dC1vZi1zb3VyY2UKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBvZiBbc3ZuOi8vc3ZuLnN2LmdudS5vcmcvdGV4aW5mby90cnVuayByMzYwMl0KLS0tLQotIE1ha2VmaWxlLmFtIHwgMiArLQotIE1ha2VmaWxlLmluIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggMzQ0NzQ2My4uYzliNWI1YyAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTIwOCw3ICsyMDgsNyBAQCBpMThuL2VuLnRobCBpMThuLzogJChwb19kb2N1bWVudF9kaXIpL3BvX2RvY3VtZW50LyQoUEFDS0FHRSlfZG9jdW1lbnQucG90Ci0gCSAgZG9uZTsgXAotIAkgIG1zZ2V4ZWMgLWkgJDwgIiQoc3JjZGlyKS9nZXR0ZXh0X3RvX3NlcGFyYXRlZC5wbCIgfCAiJChzcmNkaXIpL3NlcGFyYXRlZF90b19oYXNoLnBsIiBlbiA+IGkxOG4vZW4udGhsOyBcCi0gCWVsc2UgXAotLQkgIGNwIC1wIGkxOG5fcmVmLyoudGhsIGkxOG47IFwKLSsJICBjcCAtcCAiJChzcmNkaXIpL2kxOG5fcmVmLyIqLnRobCBpMThuOyBcCi0gCWZpCi0gCi0gaTE4bl9yZWY6Ci1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggNDI2NGIzNy4uYTEzZjg0ZCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTExMjYsNyArMTEyNiw3IEBAIGkxOG4vZW4udGhsIGkxOG4vOiAkKHBvX2RvY3VtZW50X2RpcikvcG9fZG9jdW1lbnQvJChQQUNLQUdFKV9kb2N1bWVudC5wb3QKLSAJICBkb25lOyBcCi0gCSAgbXNnZXhlYyAtaSAkPCAiJChzcmNkaXIpL2dldHRleHRfdG9fc2VwYXJhdGVkLnBsIiB8ICIkKHNyY2Rpcikvc2VwYXJhdGVkX3RvX2hhc2gucGwiIGVuID4gaTE4bi9lbi50aGw7IFwKLSAJZWxzZSBcCi0tCSAgY3AgLXAgaTE4bl9yZWYvKi50aGwgaTE4bjsgXAotKwkgIGNwIC1wICIkKHNyY2RpcikvaTE4bl9yZWYvIioudGhsIGkxOG47IFwKLSAJZmkKLSAKLSBpMThuX3JlZjoKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aTJodG1sL3RleGkyaHRtbF81LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpMmh0bWwvdGV4aTJodG1sXzUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZkMTI1Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpMmh0bWwvdGV4aTJodG1sXzUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBzY3JpcHQgdGhhdCBjb252ZXJ0cyBUZXhpbmZvIHRvIEhUTUwiCi1IT01FUEFHRSAgICA9ICJodHRwOi8vd3d3Lm5vbmdudS5vcmcvdGV4aTJodG1sLyIKLVNFQ1RJT04gICAgID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFICAgICA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgotCi1QUiA9ICJyMiIKLQotU1JDX1VSSSAgICAgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS90ZXhpMmh0bWwvJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMDEtQWxsb3ctY29tcGlsaW5nLW91dC1vZi1zb3VyY2UucGF0Y2ggXAotICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjE1YWM4NzZmY2RjOGJlODY1YjE2NTM1ZjQ4MGFhNTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZThhOThiMGVlMjBjNDk1YTZhYjg5NDM5OGEwNjVlZjU4MDI3MmRiZDVhMTViMWIxOWU4YmQxYmM4OWQ5ZjlmYSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCSMgYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZSB1cGRhdGVzIHBvL01ha2VmaWxlLmluLmluLCB3ZSBhbHNvIG5lZWQKLQkjIHVwZGF0ZSBwb19kb2N1bWVudC4KLQljcCAtZiAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4gJHtTfS9wb19kb2N1bWVudC8KLQljcCAtZiAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4gJHtTfS9wb19tZXNzYWdlcy8KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCXNlZCAtaSAtZSAnMXMsIyEuKnBlcmwsIyEgJHtVU1JCSU5QQVRIfS9lbnYgcGVybCwnICR7RH0ke2JpbmRpcn0vdGV4aTJodG1sCi19Ci0KLUZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS90ZXhpbmZvIgotCi1SREVQRU5EU18ke1BOfSA9ICJwZXJsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby1kdW1teS1uYXRpdmUvdGV4aW5mby1kdW1teS1uYXRpdmUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvLWR1bW15LW5hdGl2ZS90ZXhpbmZvLWR1bW15LW5hdGl2ZS5iYgppbmRleCAxMjU0YmM4Li5lYzA0YmZlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvLWR1bW15LW5hdGl2ZS90ZXhpbmZvLWR1bW15LW5hdGl2ZS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvLWR1bW15LW5hdGl2ZS90ZXhpbmZvLWR1bW15LW5hdGl2ZS5iYgpAQCAtOSwxOSArOSwyMSBAQAogCiBTID0gIiR7V09SS0RJUn0iCiAKLU5BVElWRV9QQUNLQUdFX1BBVEhfU1VGRklYID0gIi8ke1BOfSIKLQogaW5oZXJpdCBuYXRpdmUKIAorIworIyBUbyBhdm9pZCB0ZXhpbmZvLWR1bW15LW5hdGl2ZSBhbmQgdGV4aW5mby1uYXRpdmUgY29uZmxpY3Rpbmcgd2UgaW5zdGFsbCB0byBiYXNlX2JpbmRpcgorIyB3aGljaCBpcyBsYXRlciBpbiBQQVRIIHRoYW4gYmluZGlyIHdoZXJlIHRleGluZm8tbmF0aXZlIGluc3RhbGxzCisjCiBkb19pbnN0YWxsX25hbWUoKSB7Ci0gICAgRklMRU5BTUU9IiR7RH0ke2JpbmRpcn0vJDEiCisgICAgRklMRU5BTUU9IiR7RH0ke2Jhc2VfYmluZGlyfS8kMSIKICAgICAjIFVzaW5nIGxuIGNhdXNlcyBwcm9ibGVtcyB3aXRoIHJtX3dvcmsKICAgICBjcCAtVCAiJHtTfS90ZW1wbGF0ZS5weSIgIiRGSUxFTkFNRSIKICAgICBjaG1vZCAreCAkRklMRU5BTUUKIH0KIAogZG9faW5zdGFsbCgpIHsKLSAgICBta2RpciAtcCAiJHtEfSR7YmluZGlyfSIKKyAgICBta2RpciAtcCAiJHtEfSR7YmFzZV9iaW5kaXJ9IgogICAgIGZvciBpIGluIG1ha2VpbmZvIHBvZDJ0ZXhpIHRleGkyZHZpIHBkZnRleGkyZHZpIHRleGluZGV4IHRleGkycGRmIFwKICAgICAgICAgICAgICB0eGl4bWwydGV4aSB0ZXhpMmFueSBpbnN0YWxsLWluZm8gZ2luc3RhbGwtaW5mbyBcCiAgICAgICAgICAgICAgdXBkYXRlLWluZm8tZGlyOyBkbwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzczMzhhYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gYjk1NjVkYzJmZTBjNGY3ZGFhZWM5MWI3ZTgzYmM3MzEzZGVlMmY0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDEzIEFwciAyMDE1IDE3OjAyOjEzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVuc2V0IG5lZWRfY2hhcnNldF9hbGlhcyB3aGVuIGJ1aWxkaW5nIGZvciBtdXNsCi0KLWxvY2FsY2hhcnNldCB1c2VzIGFjX2N2X2dudV9saWJyYXJ5XzJfMSBmcm9tIGdsaWJjMjEubTQKLXdoaWNoIGFjdHVhbGx5IHNob3VkbCBiZSBmaXhlZCBpbiBnbnVsaWIgYW5kIHRoZW4gYWxsIGRvd25zdHJlYW0KLXByb2plY3RzIHdpbGwgZ2V0IGl0IGV2ZW50dWFsbHkuIEZvciBub3cgd2UgYXBwbHkgdGhlIGZpeCB0bwotY29yZXV0aWxzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGliL2dudWxpYi5tayB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IHRleGluZm8tNS4yL2dudWxpYi9saWIvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0ZXhpbmZvLTUuMi5vcmlnL2dudWxpYi9saWIvTWFrZWZpbGUuYW0KLSsrKyB0ZXhpbmZvLTUuMi9nbnVsaWIvbGliL01ha2VmaWxlLmFtCi1AQCAtMzc4LDcgKzM3OCw3IEBAIGluc3RhbGwtZXhlYy1sb2NhbGNoYXJzZXQ6IGFsbC1sb2NhbAotIAkgIGNhc2UgJyQoaG9zdF9vcyknIGluIFwKLSAJICAgIGRhcndpbls1Nl0qKSBcCi0gCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKLS0JICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopIFwKLSsJICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyogfCBsaW51eC1tdXNsKikgXAotIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9ZmFsc2UgOzsgXAotIAkgICAgKikgXAotIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9dHJ1ZSA7OyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2gKaW5kZXggZjQxODQzOS4uMGQ2YmJhZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZTg5YjFjNTdkNzZmNWNmNWFjYmIwZDAxODczNzRmN2E3N2JjZTFlMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjNhODAzZWFkMzY1NjM1MzMyOWE4MDE4NDZhOWEzYmViNzIxMGM0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEVkd2luIFBsYXVjaHUgPGVkd2luLnBsYXVjaHUuY2FtYWNob0BpbnRlbC5jb20+CiBEYXRlOiBUdWUsIDI5IE5vdiAyMDE2IDEzOjQzOjI0IC0wNjAwCiBTdWJqZWN0OiBbUEFUQ0hdIGRvbnQtZGVwZW5kLW9uLWhlbHAybWFuCkBAIC03LDI5ICs3LDMwIEBACiAKIFNpZ25lZC1vZmYtYnk6IE1hcmtvIExpbmRxdmlzdCA8Y2F6Zmk3NEBnbWFpbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBFZHdpbiBQbGF1Y2h1IDxlZHdpbi5wbGF1Y2h1LmNhbWFjaG9AaW50ZWwuY29tPgorCiAtLS0KICBkb2MvTWFrZWZpbGUuYW0gfCAgMiArLQogIG1hbi9NYWtlZmlsZS5hbSB8IDEyICsrKysrKy0tLS0tLQogIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZG9jL01ha2VmaWxlLmFtIGIvZG9jL01ha2VmaWxlLmFtCi1pbmRleCAzOWRiODM0Li4xYmIyYTRmCitpbmRleCA3MzI4MzNlLi4wNDFjYjliIDEwMDY0NAogLS0tIGEvZG9jL01ha2VmaWxlLmFtCiArKysgYi9kb2MvTWFrZWZpbGUuYW0KLUBAIC0zOCw3ICszOCw3IEBAIHJlZmNhcmRfZmlsZXMgPSByZWZjYXJkL01ha2VmaWxlIHJlZmNhcmQvdHhpY21kY2hlY2sgXAorQEAgLTM3LDcgKzM3LDcgQEAgcmVmY2FyZF9maWxlcyA9IHJlZmNhcmQvTWFrZWZpbGUgcmVmY2FyZC90eGljbWRjaGVjayBcCiAgIyBJbmNsdWRlIG91ciB0ZXhpbmZvLnRleCwgbm90IEF1dG9tYWtlJ3MuCiAgRVhUUkFfRElTVCA9IGVwc2YudGV4IHRleGluZm8udGV4IFwKICAgICAgICAgICAgICAgZmRsLnRleGkgXAogLQkgICAgICQobWFuX01BTlMpICQoVFhJX1hMQVRFKSBcCiArCSAgICAgJChUWElfWExBVEUpIFwKLSAgICAgICAgICAgICAgJChyZWZjYXJkX2ZpbGVzKSB0ZXhpbmZvLXRleC10ZXN0LnRleGkgXAorICAgICAgICAgICAgICAkKHJlZmNhcmRfZmlsZXMpIFwKKyAJICAgICB0ZXhpbmZvLXRleC10ZXN0LnRleGkgdGV4aW5mby10ZXgtdGVzdC5XSURPV3MgXAogICAgICAgICAgICAgICB0ZXhpbmZvLWphLnRleCBzaG9ydC1zYW1wbGUtamEudGV4aQotIAogZGlmZiAtLWdpdCBhL21hbi9NYWtlZmlsZS5hbSBiL21hbi9NYWtlZmlsZS5hbQotaW5kZXggNmJmY2IzZC4uYTgyMGM5NgoraW5kZXggZDBjZDcyYy4uYTE5ZTUyYSAxMDA2NDQKIC0tLSBhL21hbi9NYWtlZmlsZS5hbQogKysrIGIvbWFuL01ha2VmaWxlLmFtCi1AQCAtMTMsMjQgKzEzLDI0IEBACitAQCAtMTEsMjcgKzExLDI3IEBACiAgIyBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KICAKICAjIFRoZXNlIGFyZSBnZW5lcmF0ZWQgdXNpbmcgaGVscDJtYW4uCkBAIC00NywxMCArNDgsMTMgQEAKIC1tYW5fTUFOUyArPSBpbmZvLjUgdGV4aW5mby41CiArI21hbl9NQU5TICs9IGluZm8uNSB0ZXhpbmZvLjUKICAKLSAjIFRoaXMgaXMgZ2VuZXJhdGVkIGJ5IHBvZDJtYW4sIGJ1dCBsZXQncyBqdXN0IHJ1biBpdCBieSBoYW5kLgogLW1hbl9NQU5TICs9IHBvZDJ0ZXhpLjEKICsjbWFuX01BTlMgKz0gcG9kMnRleGkuMQogIAorIHBvZDJ0ZXhpLjE6ICQodG9wX3NyY2RpcikvUG9kLVNpbXBsZS1UZXhpbmZvL3BvZDJ0ZXhpLnBsCisgCSQoUE9EMk1BTikgJCh0b3Bfc3JjZGlyKS9Qb2QtU2ltcGxlLVRleGluZm8vcG9kMnRleGkucGwgPiIkQCIKKyAKKyAKICAjIFRoZXNlIGFyZSBqdXN0IC5zbydzIHRvIHRoZSBjb21tb24gcHJvZ3JhbS4KIC1tYW5fTUFOUyArPSB0ZXhpMmFueS4xIHRleGkycGRmLjEgcGRmdGV4aTJkdmkuMQogKyNtYW5fTUFOUyArPSB0ZXhpMmFueS4xIHRleGkycGRmLjEgcGRmdGV4aTJkdmkuMQpAQCAtNjAsNiArNjQsMyBAQAogIAogICMgTWFpbnRhaW5lcnMgc2hvdWxkIGJlIGFibGUgdG8gcmVnZW5lcmF0ZS4KICBNQUlOVEFJTkVSQ0xFQU5GSUxFUyA9ICQobWFuX01BTlMpCi0tLSAKLTIuOS4zCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby9saW5rLXppcC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby9saW5rLXppcC5wYXRjaAppbmRleCAwYjZlOWZkLi4xNWMwMzBjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vbGluay16aXAucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvL2xpbmstemlwLnBhdGNoCkBAIC0xLDE2ICsxLDIzIEBACi1pbnN0YWxsLWluZm8gdXNlcyBzeW1ib2xzIGZyb20gemxpYiBzbyBtdXN0IGxpbmsgYWdhaW5zdCBpdC4KK0Zyb20gYzEwMDIxMzgwMzNmY2NjYjJkMWFiZmM0MWY1YzJlNDZjODM2ZjdhMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvc2h1YSBMb2NrIDxqb3NoQGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IE1vbiwgMjkgSnVsIDIwMTMgMTU6MDI6MzQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5zdGFsbC1pbmZvIHVzZXMgc3ltYm9scyBmcm9tIHpsaWIgc28gbXVzdCBsaW5rIGFnYWluc3QgaXQuCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBKb3NodWEgTG9jayA8am9zaEBsaW51eC5pbnRlbC5jb20+CiAKLUluZGV4OiB0ZXhpbmZvLTUuMS9pbnN0YWxsLWluZm8vTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0ZXhpbmZvLTUuMS5vcmlnL2luc3RhbGwtaW5mby9NYWtlZmlsZS5hbQotKysrIHRleGluZm8tNS4xL2luc3RhbGwtaW5mby9NYWtlZmlsZS5hbQotQEAgLTM0LDQgKzM0LDQgQEAgQU1fQ1BQRkxBR1MgPSAJCQkJCVwKKy0tLQorIGluc3RhbGwtaW5mby9NYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2luc3RhbGwtaW5mby9NYWtlZmlsZS5hbSBiL2luc3RhbGwtaW5mby9NYWtlZmlsZS5hbQoraW5kZXggOWJjZmY3MS4uNjgyNDdmOSAxMDA2NDQKKy0tLSBhL2luc3RhbGwtaW5mby9NYWtlZmlsZS5hbQorKysrIGIvaW5zdGFsbC1pbmZvL01ha2VmaWxlLmFtCitAQCAtMzMsNCArMzMsNCBAQCBBTV9DUFBGTEFHUyA9IAkJCQkJXAogICAgLUkkKHRvcF9zcmNkaXIpL2dudWxpYi9saWIJCQlcCiAgICAtSSQodG9wX2J1aWxkZGlyKS9nbnVsaWIvbGliCQkJXAogICAgLURMT0NBTEVESVI9XCIkKGxvY2FsZWRpcilcIgotLUxEQUREID0gJCh0b3BfYnVpbGRkaXIpL2dudWxpYi9saWIvbGliZ251LmEgJChMSUJJTlRMKQotK0xEQUREID0gJCh0b3BfYnVpbGRkaXIpL2dudWxpYi9saWIvbGliZ251LmEgJChMSUJJTlRMKSAtbHoKKy1MREFERCA9ICQodG9wX2J1aWxkZGlyKS9nbnVsaWIvbGliL2xpYmdudS5hICQoTElCSU5UTCkgJChMSUJUSFJFQUQpCisrTERBREQgPSAkKHRvcF9idWlsZGRpcikvZ251bGliL2xpYi9saWJnbnUuYSAkKExJQklOVEwpICQoTElCVEhSRUFEKSAtbHoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby90ZXhpbmZvLTQuMTItemxpYi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby90ZXhpbmZvLTQuMTItemxpYi5wYXRjaAppbmRleCBmMjUzNTJjLi5mNzIwOTdlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vdGV4aW5mby00LjEyLXpsaWIucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvL3RleGluZm8tNC4xMi16bGliLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBmZTRmMDA0NTk2MDFlZmUwY2ZhNzVkOTI3NDlhMzIyMzc4MDBhNTMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzZDNiNjZjZjM5ODg1M2M2NjZlNzI0YzNkYmNjMzdkNTNhMjI0MGQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogRWR3aW4gUGxhdWNodSA8ZWR3aW4ucGxhdWNodS5jYW1hY2hvQGludGVsLmNvbT4KIERhdGU6IFR1ZSwgMjkgTm92IDIwMTYgMTI6Mjc6MTcgLTA2MDAKIFN1YmplY3Q6IFtQQVRDSF0gdGV4aW5mby00LjEyLXpsaWIKQEAgLTcsMTYgKzcsMTcgQEAKIAogU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEVkd2luIFBsYXVjaHUgPGVkd2luLnBsYXVjaHUuY2FtYWNob0BpbnRlbC5jb20+CisKIC0tLQotIGluc3RhbGwtaW5mby9NYWtlZmlsZS5pbiAgICB8IDEyICsrLS0tLS0KLSBpbnN0YWxsLWluZm8vaW5zdGFsbC1pbmZvLmMgfCA3OSArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQorIGluc3RhbGwtaW5mby9NYWtlZmlsZS5pbiAgICB8ICAyICstCisgaW5zdGFsbC1pbmZvL2luc3RhbGwtaW5mby5jIHwgNzkgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9pbnN0YWxsLWluZm8vTWFrZWZpbGUuaW4gYi9pbnN0YWxsLWluZm8vTWFrZWZpbGUuaW4KLWluZGV4IDgzN2QwMjAuLmJhOTY1NzkgMTAwNjQ0CitpbmRleCBjOTI0NTA5Li43NDZkZjA1IDEwMDY0NAogLS0tIGEvaW5zdGFsbC1pbmZvL01ha2VmaWxlLmluCiArKysgYi9pbnN0YWxsLWluZm8vTWFrZWZpbGUuaW4KLUBAIC0yMTYsNyArMjA4LDcgQEAgYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKGJpbmRpcikiICIkKERFU1RESVIpJChiaW5kaXIpIgorQEAgLTIxOCw3ICsyMTgsNyBAQCBhbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQoYmluZGlyKSIgIiQoREVTVERJUikkKGJpbmRpcikiCiAgUFJPR1JBTVMgPSAkKGJpbl9QUk9HUkFNUykKICBhbV9naW5zdGFsbF9pbmZvX09CSkVDVFMgPSBpbnN0YWxsLWluZm8uJChPQkpFWFQpCiAgZ2luc3RhbGxfaW5mb19PQkpFQ1RTID0gJChhbV9naW5zdGFsbF9pbmZvX09CSkVDVFMpCkBAIC0yNCwxMiArMjUsMTIgQEAKICtnaW5zdGFsbF9pbmZvX0xEQUREID0gJChMREFERCkgLWx6CiAgYW1fX0RFUEVOREVOQ0lFU18xID0KICBnaW5zdGFsbF9pbmZvX0RFUEVOREVOQ0lFUyA9ICQodG9wX2J1aWxkZGlyKS9nbnVsaWIvbGliL2xpYmdudS5hIFwKLSAJJChhbV9fREVQRU5ERU5DSUVTXzEpCisgCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKIGRpZmYgLS1naXQgYS9pbnN0YWxsLWluZm8vaW5zdGFsbC1pbmZvLmMgYi9pbnN0YWxsLWluZm8vaW5zdGFsbC1pbmZvLmMKLWluZGV4IGU1ODE4OWMuLjg2MTc3ODcgMTAwNjQ0CitpbmRleCAyMWY0ZmUzLi5hN2FiYTgyIDEwMDY0NAogLS0tIGEvaW5zdGFsbC1pbmZvL2luc3RhbGwtaW5mby5jCiArKysgYi9pbnN0YWxsLWluZm8vaW5zdGFsbC1pbmZvLmMKLUBAIC0yMiw2ICsyMiw3IEBACitAQCAtMTksNiArMTksNyBAQAogICNpbmNsdWRlIDxnZXRvcHQuaD4KICAjaW5jbHVkZSA8cmVnZXguaD4KICAjaW5jbHVkZSA8YXJnei5oPgpAQCAtMzcsNyArMzgsNyBAQAogIAogICNkZWZpbmUgVEFCX1dJRFRIIDgKICAKLUBAIC02ODQsMTUgKzY4NSwxNSBAQCBUaGUgZmlyc3QgdGltZSB5b3UgaW52b2tlIEluZm8geW91IHN0YXJ0IG9mZiBsb29raW5nIGF0IHRoaXMgbm9kZS5cblwKK0BAIC02ODEsMTUgKzY4MiwxNSBAQCBUaGUgZmlyc3QgdGltZSB5b3UgaW52b2tlIEluZm8geW91IHN0YXJ0IG9mZiBsb29raW5nIGF0IHRoaXMgbm9kZS5cblwKICAgICAKICAgICBSZXR1cm4gZWl0aGVyIHN0ZGluIHJlYWRpbmcgdGhlIGZpbGUsIG9yIGEgbm9uLXN0ZGluIHBpcGUgcmVhZGluZwogICAgIHRoZSBvdXRwdXQgb2YgdGhlIGNvbXByZXNzaW9uIHByb2dyYW0uICAqLwpAQCAtNTYsNyArNTcsNyBAQAogIAogICAgLyogV2UgbGV0IHRoZW0gcGFzcyBOVUxMIGlmIHRoZXkgZG9uJ3Qgd2FudCB0aGlzIGluZm8sIGJ1dCBpdCdzIGVhc2llcgogICAgICAgdG8gYWx3YXlzIGRldGVybWluZSBpdC4gICovCi1AQCAtNzAwLDQ4ICs3MDEsNDggQEAgb3Blbl9wb3NzaWJseV9jb21wcmVzc2VkX2ZpbGUgKGNoYXIgKmZpbGVuYW1lLAorQEAgLTY5Nyw0OCArNjk4LDQ4IEBAIG9wZW5fcG9zc2libHlfY29tcHJlc3NlZF9maWxlIChjaGFyICpmaWxlbmFtZSwKICAgICAgb3BlbmVkX2ZpbGVuYW1lID0gJmxvY2FsX29wZW5lZF9maWxlbmFtZTsKICAKICAgICpvcGVuZWRfZmlsZW5hbWUgPSBmaWxlbmFtZTsKQEAgLTExMyw3ICsxMTQsNyBAQAogICAgICB9CiAgI2VuZGlmIC8qIF9fTVNET1NfXyAqLwogICAgaWYgKCFmKQotQEAgLTc1Nyw3ICs3NTgsNyBAQCBvcGVuX3Bvc3NpYmx5X2NvbXByZXNzZWRfZmlsZSAoY2hhciAqZmlsZW5hbWUsCitAQCAtNzU0LDcgKzc1NSw3IEBAIG9wZW5fcG9zc2libHlfY29tcHJlc3NlZF9maWxlIChjaGFyICpmaWxlbmFtZSwKICAgICAgICAgICAgKCpjcmVhdGVfY2FsbGJhY2spIChmaWxlbmFtZSk7CiAgCiAgICAgICAgICAgIC8qIEFuZCB0cnkgb3BlbmluZyBpdCBhZ2Fpbi4gICovCkBAIC0xMjIsNyArMTIzLDcgQEAKICAgICAgICAgICAgaWYgKCFmKQogICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgfQotQEAgLTc2NywyNiArNzY4LDI2IEBAIG9wZW5fcG9zc2libHlfY29tcHJlc3NlZF9maWxlIChjaGFyICpmaWxlbmFtZSwKK0BAIC03NjQsMjYgKzc2NSwyNiBAQCBvcGVuX3Bvc3NpYmx5X2NvbXByZXNzZWRfZmlsZSAoY2hhciAqZmlsZW5hbWUsCiAgCiAgICAvKiBSZWFkIGZpcnN0IGZldyBieXRlcyBvZiBmaWxlIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gdGhlIGZpbGVuYW1lLgogICAgICAgSWYgdGhlIGZpbGUgaXMgc2hvcnRlciB0aGFuIHRoaXMgaXQgY2FuJ3QgYmUgdXNhYmxlIGFueXdheS4gICovCkBAIC0xNTgsNyArMTU5LDcgQEAKICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICBnb3RvIGRldGVybWluZV9maWxlX3R5cGU7IC8qIHN1Y2Nlc3MgKi8KICAgICAgICAgICAgICB9Ci1AQCAtODU3LDM1ICs4NTgsNDAgQEAgZGV0ZXJtaW5lX2ZpbGVfdHlwZToKK0BAIC04NTQsMzUgKzg1NSw0MCBAQCBkZXRlcm1pbmVfZmlsZV90eXBlOgogICAgICAqY29tcHJlc3Npb25fcHJvZ3JhbSA9IE5VTEw7CiAgCiAgICAvKiBTZWVrIGJhY2sgb3ZlciB0aGUgbWFnaWMgYnl0ZXMuICAqLwpAQCAtMjA2LDcgKzIwNyw3IEBACiAgICAgIH0KICAKICAgIHJldHVybiBmOwotQEAgLTkwNCw3ICs5MTAsOCBAQCByZWFkZmlsZSAoY2hhciAqZmlsZW5hbWUsIGludCAqc2l6ZXAsCitAQCAtOTAxLDcgKzkwNyw4IEBAIHJlYWRmaWxlIChjaGFyICpmaWxlbmFtZSwgaW50ICpzaXplcCwKICAgICAgdm9pZCAoKmNyZWF0ZV9jYWxsYmFjaykgKGNoYXIgKiksIGNoYXIgKipvcGVuZWRfZmlsZW5hbWUsCiAgICAgIGNoYXIgKipjb21wcmVzc2lvbl9wcm9ncmFtKQogIHsKQEAgLTIxNiw3ICsyMTcsNyBAQAogICAgaW50IGZpbGxlZCA9IDA7CiAgICBpbnQgZGF0YV9zaXplID0gODE5MjsKICAgIGNoYXIgKmRhdGEgPSB4bWFsbG9jIChkYXRhX3NpemUpOwotQEAgLTkxMiwxNCArOTE5LDIwIEBAIHJlYWRmaWxlIChjaGFyICpmaWxlbmFtZSwgaW50ICpzaXplcCwKK0BAIC05MDksMTQgKzkxNiwyMCBAQCByZWFkZmlsZSAoY2hhciAqZmlsZW5hbWUsIGludCAqc2l6ZXAsCiAgICAvKiBJZiB0aGV5IHBhc3NlZCB0aGUgc3BhY2UgZm9yIHRoZSBmaWxlIG5hbWUgdG8gcmV0dXJuLCB1c2UgaXQuICAqLwogICAgZiA9IG9wZW5fcG9zc2libHlfY29tcHJlc3NlZF9maWxlIChmaWxlbmFtZSwgY3JlYXRlX2NhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuZWRfZmlsZW5hbWUsCkBAIC0yMzksNyArMjQwLDcgQEAKICAgICAgICBpZiAobnJlYWQgPCAwKQogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgaWYgKG5yZWFkID09IDApCi1AQCAtOTM4LDggKzk1MSwxMCBAQCByZWFkZmlsZSAoY2hhciAqZmlsZW5hbWUsIGludCAqc2l6ZXAsCitAQCAtOTM1LDggKzk0OCwxMCBAQCByZWFkZmlsZSAoY2hhciAqZmlsZW5hbWUsIGludCAqc2l6ZXAsCiAgICAvKiBXZSBuZWVkIHRvIGNsb3NlIHRoZSBzdHJlYW0sIHNpbmNlIG9uIHNvbWUgc3lzdGVtcyB0aGUgcGlwZSBjcmVhdGVkCiAgICAgICBieSBwb3BlbiBpcyBzaW11bGF0ZWQgYnkgYSB0ZW1wb3JhcnkgZmlsZSB3aGljaCBvbmx5IGdldHMgcmVtb3ZlZAogICAgICAgaW5zaWRlIHBjbG9zZS4gICovCkBAIC0yNTEsNiArMjUyLDMgQEAKICAKICAgICpzaXplcCA9IGZpbGxlZDsKICAgIHJldHVybiBkYXRhOwotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTBlYWU3Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotU1VNTUFSWSA9ICJEb2N1bWVudGF0aW9uIHN5c3RlbSBmb3Igb24tbGluZSBpbmZvcm1hdGlvbiBhbmQgcHJpbnRlZCBvdXRwdXQiCi1ERVNDUklQVElPTiA9ICJUZXhpbmZvIGlzIGEgZG9jdW1lbnRhdGlvbiBzeXN0ZW0gdGhhdCBjYW4gcHJvZHVjZSBib3RoIFwKLW9ubGluZSBpbmZvcm1hdGlvbiBhbmQgcHJpbnRlZCBvdXRwdXQgZnJvbSBhIHNpbmdsZSBzb3VyY2UgZmlsZS4gVGhlIFwKLUdOVSBQcm9qZWN0IHVzZXMgdGhlIFRleGluZm8gZmlsZSBmb3JtYXQgZm9yIG1vc3Qgb2YgaXRzIGRvY3VtZW50YXRpb24uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3RleGluZm8vIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotUFJPVklERVNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgdGV4aW5mby1yZXBsYWNlbWVudC1uYXRpdmUiCi0KLWRlZiBjb21wcmVzc19wa2coZCk6Ci0gICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY29tcHJlc3NfZG9jJywgZCk6Ci0gICAgICAgICBjb21wcmVzcyA9IGQuZ2V0VmFyKCJET0NfQ09NUFJFU1MiKQotICAgICAgICAgaWYgY29tcHJlc3MgPT0gImd6IjoKLSAgICAgICAgICAgICByZXR1cm4gImd6aXAiCi0gICAgICAgICBlbGlmIGNvbXByZXNzID09ICJiejIiOgotICAgICAgICAgICAgIHJldHVybiAiYnppcDIiCi0gICAgICAgICBlbGlmIGNvbXByZXNzID09ICJ4eiI6Ci0gICAgICAgICAgICAgcmV0dXJuICJ4eiIKLSAgICByZXR1cm4gIiIKLQotUkRFUEVORFNfaW5mbyArPSAiJHtAY29tcHJlc3NfcGtnKGQpfSIKLQotREVQRU5EUyA9ICJ6bGliIG5jdXJzZXMgdGV4aW5mby1yZXBsYWNlbWVudC1uYXRpdmUiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJ6bGliLW5hdGl2ZSBuY3Vyc2VzLW5hdGl2ZSIKLQotVEFSR0VUX1BBVENIID0gImZpbGU6Ly91c2VfaG9zdF9tYWtlZG9jLnBhdGNoIgotVEFSR0VUX1BBVENIX2NsYXNzLW5hdGl2ZSA9ICIiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS90ZXhpbmZvLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly90ZXhpbmZvLTQuMTItemxpYi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLW5hdGl2ZS10b29scy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saW5rLXppcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgJHtUQVJHRVRfUEFUQ0h9IFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5NGU4ZjcxNDk4NzY3OTMwMzBlNTUxOGRkOGQ2ZTk1NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMzQyNzJlNDA0MmM0NjE4NmRkY2Q2NmJkNWQ5ODBjMGNhMTRmZjczNDQ0NDY4NmNjZjgxMzFmNmVjOGIxNDI3IgotCi10ZXhfdGV4aW5mbyA9ICJ0ZXhtZi90ZXgvdGV4aW5mbyIKLQotaW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scyBtdWx0aWxpYl9zY3JpcHQKLQotTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfToke2JpbmRpcn0vdGV4aTJhbnkiCi0KLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vZ251bGliL200IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JIyBhdXRvdG9vbHNfZG9fY29uZmlndXJlIHVwZGF0ZXMgcG8vTWFrZWZpbGUuaW4uaW4sIHdlIGFsc28gbmVlZAotCSMgdXBkYXRlIHBvX2RvY3VtZW50LgotCWNwIC1mICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ2V0dGV4dC9wby9NYWtlZmlsZS5pbi5pbiAke1N9L3BvX2RvY3VtZW50LwotfQotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0JaWYgWyAtZCB0b29scyBdO3RoZW4KLQkJb2VfcnVubWFrZSAtQyB0b29scy9nbnVsaWIvbGliCi0JZmkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JbWtkaXIgLXAgJHtEfSR7ZGF0YWRpcn0vJHt0ZXhfdGV4aW5mb30KLQlpbnN0YWxsIC1wIC1tNjQ0ICR7U30vZG9jL3RleGluZm8udGV4ICR7U30vZG9jL3R4aS0/Py50ZXggJHtEfSR7ZGF0YWRpcn0vJHt0ZXhfdGV4aW5mb30KLQlzZWQgLWkgLWUgJzFzLCMhLipwZXJsLCMhICR7VVNSQklOUEFUSH0vZW52IHBlcmwsJyAke0R9JHtiaW5kaXJ9L3RleGkyYW55ICR7RH0ke2JpbmRpcn0vcG9kMnRleGkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWluc3RhbGwgLW0gNzU1IGluZm8vbWFrZWRvYyAke0R9JHtiaW5kaXJ9Ci19Ci0KLVBBQ0tBR0VTICs9ICJpbmZvIGluZm8tZG9jIgotCi1GSUxFU19pbmZvID0gIiR7YmluZGlyfS9pbmZvICR7YmluZGlyfS9pbmZva2V5ICR7YmluZGlyfS9pbnN0YWxsLWluZm8iCi1GSUxFU19pbmZvLWRvYyA9ICIke2luZm9kaXJ9L2luZm8uaW5mbyogJHtpbmZvZGlyfS9kaXIgJHtpbmZvZGlyfS9pbmZvLSouaW5mbyogXAotICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvaW5mby4xKiAke21hbmRpcn0vbWFuNS9pbmZvLjUqIFwKLSAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL2luZm9rZXkuMSogJHttYW5kaXJ9L21hbjEvaW5zdGFsbC1pbmZvLjEqIgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vbWFrZWluZm8gJHtiaW5kaXJ9L3RleGkqICR7YmluZGlyfS9wZGZ0ZXhpMmR2aSAke2JpbmRpcn0vcG9kMnRleGkgJHtkYXRhZGlyfS90ZXhpbmZvIgotUkRFUEVORFNfJHtQTn0gPSAicGVybCIKLUZJTEVTXyR7UE59LWRvYyA9ICIke2luZm9kaXJ9L3RleGluZm8qIFwKLSAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7dGV4X3RleGluZm99IFwKLSAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMSAke21hbmRpcn0vbWFuNSIKLQotIyBMaWUgYWJvdXQgcHJvdmlkaW5nIHRoZSBMb2NhbGU6OmdldHRleHRfeHMgbW9kdWxlLiBJdCBpcyBub3QgYWN0dWFsbHkgYnVpbHQsCi0jIGJ1dCB0aGUgY29kZSB3aWxsIHRlc3QgZm9yIGl0IGFuZCBpZiBub3QgZm91bmQgdXNlIExvY2FsZTo6Z2V0dGV4dF9wcCBpbnN0ZWFkLgotIyBIb3dldmVyLCB0aGlzIGNhdXNlcyBhIGZpbGUgZGVwZW5kZW5jeSBvbiBwZXJsKExvY2FsZTo6Z2V0dGV4dF94cykgdG8gYmUKLSMgZ2VuZXJhdGVkLCB3aGljaCBtdXN0IGJlIHNhdGlzZmllZC4KLVJQUk9WSURFU18ke1BOfSArPSAicGVybChMb2NhbGU6OmdldHRleHRfeHMpIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDIxYjc5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuNy5iYgpAQCAtMCwwICsxLDkxIEBACitTVU1NQVJZID0gIkRvY3VtZW50YXRpb24gc3lzdGVtIGZvciBvbi1saW5lIGluZm9ybWF0aW9uIGFuZCBwcmludGVkIG91dHB1dCIKK0RFU0NSSVBUSU9OID0gIlRleGluZm8gaXMgYSBkb2N1bWVudGF0aW9uIHN5c3RlbSB0aGF0IGNhbiBwcm9kdWNlIGJvdGggXAorb25saW5lIGluZm9ybWF0aW9uIGFuZCBwcmludGVkIG91dHB1dCBmcm9tIGEgc2luZ2xlIHNvdXJjZSBmaWxlLiBUaGUgXAorR05VIFByb2plY3QgdXNlcyB0aGUgVGV4aW5mbyBmaWxlIGZvcm1hdCBmb3IgbW9zdCBvZiBpdHMgZG9jdW1lbnRhdGlvbi4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvdGV4aW5mby8iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFlYmJkM2UzNDIzN2FmMjZkYTVkYzA4YTRlNDQwNDY0IgorCitQUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiB0ZXhpbmZvLXJlcGxhY2VtZW50LW5hdGl2ZSIKKworZGVmIGNvbXByZXNzX3BrZyhkKToKKyAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjb21wcmVzc19kb2MnLCBkKToKKyAgICAgICAgIGNvbXByZXNzID0gZC5nZXRWYXIoIkRPQ19DT01QUkVTUyIpCisgICAgICAgICBpZiBjb21wcmVzcyA9PSAiZ3oiOgorICAgICAgICAgICAgIHJldHVybiAiZ3ppcCIKKyAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gImJ6MiI6CisgICAgICAgICAgICAgcmV0dXJuICJiemlwMiIKKyAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gInh6IjoKKyAgICAgICAgICAgICByZXR1cm4gInh6IgorICAgIHJldHVybiAiIgorCitSREVQRU5EU19pbmZvICs9ICIke0Bjb21wcmVzc19wa2coZCl9IgorCitERVBFTkRTID0gInpsaWIgbmN1cnNlcyB0ZXhpbmZvLXJlcGxhY2VtZW50LW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gInpsaWItbmF0aXZlIG5jdXJzZXMtbmF0aXZlIgorCitUQVJHRVRfUEFUQ0ggPSAiZmlsZTovL3VzZV9ob3N0X21ha2Vkb2MucGF0Y2giCitUQVJHRVRfUEFUQ0hfY2xhc3MtbmF0aXZlID0gIiIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3RleGluZm8vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3RleGluZm8tNC4xMi16bGliLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtbmF0aXZlLXRvb2xzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpbmstemlwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIFwKKyAgICAgICAgICAgJHtUQVJHRVRfUEFUQ0h9IFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjBjMTc4MmY2OGVmNzM3MzhkNzRiZDFlOWUzMDc5M2EiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTUyZDA1MDc2YjkwMDMyY2IyNTIzNjczYzUwZTUzMTg1OTM4NzQ2NDgyY2YzY2EwMjEzZTliNGI1MGFjMmQzZSIKKwordGV4X3RleGluZm8gPSAidGV4bWYvdGV4L3RleGluZm8iCisKK2luaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMgbXVsdGlsaWJfc2NyaXB0CisKK01VTFRJTElCX1NDUklQVFMgPSAiJHtQTn06JHtiaW5kaXJ9L3RleGkyYW55IgorCitFWFRSQV9BVVRPUkVDT05GICs9ICItSSAke1N9L2dudWxpYi9tNCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCSMgYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZSB1cGRhdGVzIHBvL01ha2VmaWxlLmluLmluLCB3ZSBhbHNvIG5lZWQKKwkjIHVwZGF0ZSBwb19kb2N1bWVudC4KKwljcCAtZiAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4gJHtTfS9wb19kb2N1bWVudC8KK30KKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCWlmIFsgLWQgdG9vbHMgXTt0aGVuCisJCW9lX3J1bm1ha2UgLUMgdG9vbHMvZ251bGliL2xpYgorCWZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCW1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9LyR7dGV4X3RleGluZm99CisJaW5zdGFsbCAtcCAtbTY0NCAke1N9L2RvYy90ZXhpbmZvLnRleCAke1N9L2RvYy90eGktPz8udGV4ICR7RH0ke2RhdGFkaXJ9LyR7dGV4X3RleGluZm99CisJc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISAke1VTUkJJTlBBVEh9L2VudiBwZXJsLCcgJHtEfSR7YmluZGlyfS90ZXhpMmFueSAke0R9JHtiaW5kaXJ9L3BvZDJ0ZXhpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwlpbnN0YWxsIC1tIDc1NSBpbmZvL21ha2Vkb2MgJHtEfSR7YmluZGlyfQorfQorCitQQUNLQUdFUyArPSAiaW5mbyBpbmZvLWRvYyIKKworRklMRVNfaW5mbyA9ICIke2JpbmRpcn0vaW5mbyAke2JpbmRpcn0vaW5mb2tleSAke2JpbmRpcn0vaW5zdGFsbC1pbmZvIgorRklMRVNfaW5mby1kb2MgPSAiJHtpbmZvZGlyfS9pbmZvLmluZm8qICR7aW5mb2Rpcn0vZGlyICR7aW5mb2Rpcn0vaW5mby0qLmluZm8qIFwKKyAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL2luZm8uMSogJHttYW5kaXJ9L21hbjUvaW5mby41KiBcCisgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9pbmZva2V5LjEqICR7bWFuZGlyfS9tYW4xL2luc3RhbGwtaW5mby4xKiIKKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L21ha2VpbmZvICR7YmluZGlyfS90ZXhpKiAke2JpbmRpcn0vcGRmdGV4aTJkdmkgJHtiaW5kaXJ9L3BvZDJ0ZXhpICR7ZGF0YWRpcn0vdGV4aW5mbyIKK1JERVBFTkRTXyR7UE59ID0gInBlcmwiCitGSUxFU18ke1BOfS1kb2MgPSAiJHtpbmZvZGlyfS90ZXhpbmZvKiBcCisgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfSBcCisgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEgJHttYW5kaXJ9L21hbjUiCisKKyMgTGllIGFib3V0IHByb3ZpZGluZyB0aGUgTG9jYWxlOjpnZXR0ZXh0X3hzIG1vZHVsZS4gSXQgaXMgbm90IGFjdHVhbGx5IGJ1aWx0LAorIyBidXQgdGhlIGNvZGUgd2lsbCB0ZXN0IGZvciBpdCBhbmQgaWYgbm90IGZvdW5kIHVzZSBMb2NhbGU6OmdldHRleHRfcHAgaW5zdGVhZC4KKyMgSG93ZXZlciwgdGhpcyBjYXVzZXMgYSBmaWxlIGRlcGVuZGVuY3kgb24gcGVybChMb2NhbGU6OmdldHRleHRfeHMpIHRvIGJlCisjIGdlbmVyYXRlZCwgd2hpY2ggbXVzdCBiZSBzYXRpc2ZpZWQuCitSUFJPVklERVNfJHtQTn0gKz0gInBlcmwoTG9jYWxlOjpnZXR0ZXh0X3hzKSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZXpvbmUvdHpkYXRhLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZXpvbmUvdHpkYXRhLmJiCmluZGV4IDFlMmQ5YmQuLjFlMmI0NDAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWV6b25lL3R6ZGF0YS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90aW1lem9uZS90emRhdGEuYmIKQEAgLTYwLDEyICs2MCw4IEBACiAJaWYgWyAtZSAke3NyY30gXSA7IHRoZW4KIAkJdHo9JChzZWQgLWUgJ3M6Iy4qOjonIC1lICdzOltbOnNwYWNlOl1dKjo6ZycgLWUgJy9eJC9kJyAiJHtzcmN9IikKIAlmaQotCQotCWlmIFsgLXogIiR7dHp9IiBdIDsgdGhlbgotCQlleGl0IDAKLQlmaQotCQotCWlmIFsgISAtZSAiJEQke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IiBdIDsgdGhlbgorCisJaWYgWyAhIC16ICIke3R6fSIgLWEgISAtZSAiJEQke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IiBdIDsgdGhlbgogCQllY2hvICJZb3UgaGF2ZSBhbiBpbnZhbGlkIFRJTUVaT05FIHNldHRpbmcgaW4gJHtzcmN9IgogCQllY2hvICJZb3VyICR7ZXRjX2x0fSBoYXMgYmVlbiByZXNldCB0byBVbml2ZXJzYWw7IGVuam95ISIKIAkJdHo9IlVuaXZlcnNhbCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4zLmJiCmluZGV4IDc3ODhiNWYuLmQzNzFjNWMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMy5iYgpAQCAtMTcsNyArMTcsNyBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNTM2N2E5MDkzNDA5OGQ2YjA1YWYzYjc0NjQwNTAxNCIKIAotU1JDX1VSSSA9ICJodHRwOi8vcG9ydGxhbmQuZnJlZWRlc2t0b3Aub3JnL2Rvd25sb2FkLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorU1JDX1VSSSA9ICJodHRwczovL3BvcnRsYW5kLmZyZWVkZXNrdG9wLm9yZy9kb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtUmVpbnN0YXRlLXhkZy10ZXJtaW5hbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LWJ1aWxkLXRoZS1pbi1zY3JpcHQtbWFudWFsLnBhdGNoIFwKICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ei94el81LjIuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3h6L3h6XzUuMi40LmJiCmluZGV4IDc5MTc0NmUuLjFjNDQ1MGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3h6L3h6XzUuMi40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3h6L3h6XzUuMi40LmJiCkBAIC0xLDUgKzEsNSBAQAogU1VNTUFSWSA9ICJVdGlsaXRpZXMgZm9yIG1hbmFnaW5nIExaTUEgY29tcHJlc3NlZCBmaWxlcyIKLUhPTUVQQUdFID0gImh0dHA6Ly90dWthYW5pLm9yZy94ei8iCitIT01FUEFHRSA9ICJodHRwczovL3R1a2Fhbmkub3JnL3h6LyIKIFNFQ1RJT04gPSAiYmFzZSIKIAogIyBUaGUgc291cmNlIGluY2x1ZGVzIGJpdHMgb2YgUEQsIEdQTHYyLCBHUEx2MywgTEdQTHYyLjErLCBidXQgdGhlIG9ubHkgZmlsZQpAQCAtMjIsMTEgKzIyLDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvZ2V0b3B0LmM7ZW5kbGluZT0yMzttZDU9MjA2OWIwZWU3MTA1NzJjMDNiYjMxMTRlNDUzMmNkODQgXAogICAgICAgICAgICAgICAgICAgICAiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3R1a2Fhbmkub3JnL3h6L3h6LSR7UFZ9LnRhci5neiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly90dWthYW5pLm9yZy94ei94ei0ke1BWfS50YXIuZ3oiCiBTUkNfVVJJW21kNXN1bV0gPSAiNWFjZTMyNjRiZGQwMGM2NWVlZWMyODkxMzQ2ZjY1ZTYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjUxMmYzYjcyNmQzYjM3YjZkYzRjODU3MGUxMzdiOTMxMWU3NTUyZThjY2JhYjRkMzlkNDdjZTVmNDE3NzE0NSIKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInh6LSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgogCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiZ2xfY3ZfcG9zaXhfc2hlbGw9L2Jpbi9zaCIKKwogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dAogCiBQQUNLQUdFUyA9KyAibGlibHptYSIKQEAgLTM5LDUgKzQxLDMgQEAKICAgICAgICAgICAgICAgICAgICAgIGx6bWEgbHpjYXQgdW5sem1hIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLWV4cG9ydCBDT05GSUdfU0hFTEw9Ii9iaW4vc2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwLTMuMC96aXBub3RlLWNyYXNoZXMtd2l0aC1zZWdmYXVsdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3ppcC96aXAtMy4wL3ppcG5vdGUtY3Jhc2hlcy13aXRoLXNlZ2ZhdWx0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlNmNhZmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwLTMuMC96aXBub3RlLWNyYXNoZXMtd2l0aC1zZWdmYXVsdC5wYXRjaApAQCAtMCwwICsxLDIyIEBACitDbG9zZSB0aGUgY29ycmVjdCBmaWxlIGRlc2NyaXB0b3IKKworaHR0cHM6Ly9idWdzLmFyY2hsaW51eC5vcmcvdGFzay80NzcxMworCitTaWduZWQtb2ZmLWJ5OiBKYXRlIFN1amphdmFuaWNoIDxqYXRlZGV2QGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtubyB1cHN0cmVhbV0KKworZGlmZiAtLWdpdCBhL3ppcG5vdGUuYyBiL3ppcG5vdGUuYworaW5kZXggNWUwMmNiNi4uOTk2ZjAxMiAxMDA2NDQKKy0tLSBhL3ppcG5vdGUuYworKysrIGIvemlwbm90ZS5jCitAQCAtNjYxLDcgKzY2MSw3IEBAIGNoYXIgKiphcmd2OyAgICAgICAgICAgIC8qIGNvbW1hbmQgbGluZSB0b2tlbnMgKi8KKyAgICAgaWYgKChyID0gemlwY29weSh6KSkgIT0gWkVfT0spCisgICAgICAgemlwZXJyKHIsICJ3YXMgY29weWluZyBhbiBlbnRyeSIpOworICAgfQorLSAgZmNsb3NlKHgpOworKyAgZmNsb3NlKGluX2ZpbGUpOworIAorICAgLyogV3JpdGUgY2VudHJhbCBkaXJlY3RvcnkgYW5kIGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSB3aXRoIG5ldyBjb21tZW50cyAqLworICAgaWYgKChjID0gemZ0ZWxsbyh5KSkgPT0gKHpvZmZfdCktMSkgICAgLyogZ2V0IHN0YXJ0IG9mIGNlbnRyYWwgKi8KKyAgIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvemlwL3ppcF8zLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwXzMuMC5iYgppbmRleCBhMmNkNzcxLi5jMDBhOTMyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwXzMuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwXzMuMC5iYgpAQCAtMTIsNiArMTIsNyBAQAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vaW5mb3ppcC9aaXAlMjAzLnglMjAlMjhsYXRlc3QlMjkvMy4wL3ppcDMwLnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtc2VjdXJpdHktZm9ybWF0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzEwLXJlbW92ZS1idWlsZC1kYXRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3ppcG5vdGUtY3Jhc2hlcy13aXRoLXNlZ2ZhdWx0LnBhdGNoIFwKICAgICAgICAgICAgIgogVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMzQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMzQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ViZDU1ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjM0LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIldlYktpdCBiYXNlZCB3ZWIgYnJvd3NlciBmb3IgR05PTUUiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9lcGlwaGFueSIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLURFUEVORFMgPSAibGlic291cC0yLjQgd2Via2l0Z3RrIGd0ayszIGlzby1jb2RlcyBhdmFoaSBsaWJub3RpZnkgZ2NyIFwKLQkgICBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGxpYnhtbDItbmF0aXZlIFwKLQkgICBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUganNvbi1nbGliIGxpYmRhenpsZSIKLQotR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBmZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ2V0dGV4dAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSBvcGVuZ2wiCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7R05PTUVCTn0vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS8ke0dOT01FQk59LSR7UFZ9LnRhci4ke0dOT01FX0NPTVBSRVNTX1RZUEV9O25hbWU9YXJjaGl2ZSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWhlbHAtbWVzb24uYnVpbGQtZGlzYWJsZS10aGUtdXNlLW9mLXllbHAucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI1MGI1MGUxOGQ5OWIxOWY0NGNjOWNkNDE5YzZhNGJhOCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImEwN2JjOTk3YWQyY2JmMTRkNTg1NTdiYjBiNjNlOTJkOGMzMzY4MzY4MGM1ZTUwZWE2ZjliNTNiMzZiZWMxZDkiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMSAke2RhdGFkaXJ9L2dub21lLXNoZWxsL3NlYXJjaC1wcm92aWRlcnMgJHtkYXRhZGlyfS9tZXRhaW5mbyIKLVJERVBFTkRTXyR7UE59ID0gImlzby1jb2RlcyBhZHdhaXRhLWljb24tdGhlbWUgZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMzQuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMzQuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGI0YzI3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4zNC40LmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiV2ViS2l0IGJhc2VkIHdlYiBicm93c2VyIGZvciBHTk9NRSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2VwaXBoYW55IgorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworREVQRU5EUyA9ICJsaWJzb3VwLTIuNCB3ZWJraXRndGsgZ3RrKzMgaXNvLWNvZGVzIGF2YWhpIGxpYm5vdGlmeSBnY3IgXAorCSAgIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgbGlieG1sMi1uYXRpdmUgXAorCSAgIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBqc29uLWdsaWIgbGliZGF6emxlIgorCitHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgoraW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnZXR0ZXh0IG1pbWUteGRnCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIG9wZW5nbCIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtHTk9NRUJOfS8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9LyR7R05PTUVCTn0tJHtQVn0udGFyLiR7R05PTUVfQ09NUFJFU1NfVFlQRX07bmFtZT1hcmNoaXZlIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItaGVscC1tZXNvbi5idWlsZC1kaXNhYmxlLXRoZS11c2Utb2YteWVscC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImE1NTlmMTY0YmI3ZDZjYmVjZWIzNDg2NDgwNzY4MzBiIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNjBlMTkwZmMwN2VjN2UzMzQ3MmU2MGM3ZTYzM2UwNDAwNGY3ZTI3N2EwZmZjNWU5Y2Q0MTM3MDY4ODFlNTk4ZCIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xICR7ZGF0YWRpcn0vZ25vbWUtc2hlbGwvc2VhcmNoLXByb3ZpZGVycyAke2RhdGFkaXJ9L21ldGFpbmZvIgorUkRFUEVORFNfJHtQTn0gPSAiaXNvLWNvZGVzIGFkd2FpdGEtaWNvbi10aGVtZSBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2djcl8zLjM0LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMzQuMC5iYgppbmRleCBlM2U4OTk5Li45ODUzYjNmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMzQuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMzQuMC5iYgpAQCAtMTEsNyArMTEsNyBAQAogREVQRU5EUyA9ICJndGsrMyBwMTEta2l0IGdsaWItMi4wIGxpYmdjcnlwdCBcCiAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICdsaWJ4c2x0LW5hdGl2ZScsICcnLCBkKX0iCiAKLWluaGVyaXQgZ25vbWViYXNlIGd0ay1pY29uLWNhY2hlIGd0ay1kb2MgZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGdldHRleHQKK2luaGVyaXQgZ25vbWViYXNlIGd0ay1pY29uLWNhY2hlIGd0ay1kb2MgZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGdldHRleHQgbWltZSBtaW1lLXhkZwogIyBkZXBlbmRzIG9uIGd0ayszLCBidXQgYWxzbyB4MTEgdGhyb3VnaCBndGsrLXgxMQogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmL21pc3NpbmctdGVzdC1kYXRhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmL21pc3NpbmctdGVzdC1kYXRhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNzU4ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWYvbWlzc2luZy10ZXN0LWRhdGEucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSBkOGQyMzFjMDFlZjJlNTk4NTZkYThhNWMyNmFjZTk1NWU1ZjI5MzcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgMjUgTm92IDIwMTkgMTc6MDU6NDYgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdHM6IGluc3RhbGwgY2lyY3VsYXItdGFibGUuZ2lmCisKK1RoaXMgdGVzdCBkYXRhIHdhcyBhZGRlZCBmb3IgdGhlIHBpeGJ1Zi1naWYtY2lyY3VsYXItdGFibGUgdGVzdCAoYWRkZWQgT2N0b2JlcgorMjAxOCBpbiAwYjlkMDA0KSBidXQgYmVjYXVzZSB0aGUgZmlsZSB3YXMgbmV2ZXIgYWN0dWFsbHkgaW5zdGFsbGVkIHRoZSBpbnN0YWxsZWQKK3Rlc3Qgc3VpdGUgbmV2ZXIgcGFzc2VzLgorLS0tCisgdGVzdHMvbWVzb24uYnVpbGQgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVzb24uYnVpbGQKK2luZGV4IDUxMTZmYzJiOS4uODBlZDNlOGIyIDEwMDY0NAorLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrKyBiL3Rlc3RzL21lc29uLmJ1aWxkCitAQCAtOTcsNiArOTcsNyBAQCB0ZXN0X2RhdGEgPSBbCisgICAnYnVnNzc1NjkzLnBpeGRhdGEnLAorICAgJ2J1Zzc3NTIyOS5waXhkYXRhJywKKyAgICdhZXJvLmdpZicsCisrICAnY2lyY3VsYXItdGFibGUuZ2lmJworIF0KKyAKKyBpbnN0YWxsZWRfdGVzdF9iaW5kaXIgPSBqb2luX3BhdGhzKGdka19waXhidWZfbGliZXhlY2RpciwgJ2luc3RhbGxlZC10ZXN0cycsIG1lc29uLnByb2plY3RfbmFtZSgpKQorLS0gCisyLjIwLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzguMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjM4LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5OTUxMDYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzguMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBACi1TVU1NQVJZID0gIkltYWdlIGxvYWRpbmcgbGlicmFyeSBmb3IgR1RLKyIKLURFU0NSSVBUSU9OID0gIlRoZSBHREsgUGl4YnVmIGxpYnJhcnkgcHJvdmlkZXM6IEltYWdlIGxvYWRpbmcgYW5kIHNhdmluZyBcCi1mYWNpbGl0aWVzLCBmYXN0IHNjYWxpbmcgYW5kIGNvbXBvc2l0aW5nIG9mIHBpeGJ1ZnMgYW5kIFNpbXBsZSBhbmltYXRpb24gXAotbG9hZGluZyAoaWUuIGFuaW1hdGVkIEdJRnMpIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9HZGtQaXhidWYiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nZGstcGl4YnVmL2lzc3VlcyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi5oO2VuZGxpbmU9MjY7bWQ1PTcyYjM5ZGE3Y2JkZGUyZTY2NTMyOWZlZjYxOGUxZDZiIFwKLSAgICAgICAgICAgICAgICAgICAgIgotCi1TRUNUSU9OID0gImxpYnMiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2RrLXBpeGJ1Zi1uYXRpdmUgc2hhcmVkLW1pbWUtaW5mbyIKLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9mYXRhbC1sb2FkZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Xb3JrLWFyb3VuZC10aHVtYm5haWxlci1jcm9zcy1jb21waWxlLWZhaWx1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYS1jb3VwbGUtb2YtZGVjaXNpb25zLWFyb3VuZC1jcm9zcy1jb21waWxhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LURvLW5vdC1ydW4tdGVzdHMtd2hlbi1idWlsZGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LUJ1aWxkLXRodW1ibmFpbGVyLWFuZC10ZXN0cy1hbHNvLWluLWNyb3NzLWJ1aWxkcy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLXRhcmdldC1vbmx5LVdvcmstYXJvdW5kLXRodW1ibmFpbGVyLWNyb3NzLWNvbXBpbGUtZmEucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtdGFyZ2V0LW9ubHktV29yay1hcm91bmQtdGh1bWJuYWlsZXItY3Jvc3MtY29tcGlsZS1mYS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImNjMWQ3MTJhMTY0M2I5MmZmMDkwNGQ1ODk5NjM5NzFmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjczZmE2NTFlYzBkODlkNzNkZDMwNzBiMTI5Y2UyMjAzYTY2MTcxZGZjMGJkMmNhYTM1NzBhOWM5M2QyZDA3ODEiCi0KLWluaGVyaXQgbWVzb24gcGtnY29uZmlnIGdldHRleHQgcGl4YnVmY2FjaGUgcHRlc3QtZ25vbWUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIGxpYl9wYWNrYWdlCi0KLUdJUl9NRVNPTl9PUFRJT04gPSAnZ2lyJwotCi1FWFRSQV9PRU1FU09OX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICctRGluc3RhbGxlZF90ZXN0cz10cnVlJywgJy1EaW5zdGFsbGVkX3Rlc3RzPWZhbHNlJywgZCl9IgotCi1MSUJWID0gIjIuMTAuMCIKLQotR0RLX1BJWEJVRl9MT0FERVJTID89ICJwbmcganBlZyIKLQotUEFDS0FHRUNPTkZJRyA9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0gJHtHREtfUElYQlVGX0xPQURFUlN9IgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiJHtHREtfUElYQlVGX0xPQURFUlN9IgotCi1QQUNLQUdFQ09ORklHW3BuZ10gPSAiLURwbmc9dHJ1ZSwtRHBuZz1mYWxzZSxsaWJwbmciCi1QQUNLQUdFQ09ORklHW2pwZWddID0gIi1EanBlZz10cnVlLC1EanBlZz1mYWxzZSxqcGVnIgotUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItRHRpZmY9dHJ1ZSwtRHRpZmY9ZmFsc2UsdGlmZiIKLVBBQ0tBR0VDT05GSUdbanBlZzIwMDBdID0gIi1EamFzcGVyPXRydWUsLURqYXNwZXI9ZmFsc2UsamFzcGVyIgotCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLUR4MTE9dHJ1ZSwtRHgxMT1mYWxzZSx2aXJ0dWFsL2xpYngxMSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXhsaWIiCi0KLSMgRm9yIEdJTyBpbWFnZSB0eXBlIHNuaWZmaW5nCi1SREVQRU5EU18ke1BOfSA9ICJzaGFyZWQtbWltZS1pbmZvIgotCi1GSUxFU18ke1BOfS14bGliID0gIiR7bGliZGlyfS8qcGl4YnVmX3hsaWIqJHtTT0xJQlN9IgotQUxMT1dfRU1QVFlfJHtQTn0teGxpYiA9ICIxIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyIKLQotRklMRVNfJHtQTn0tYmluICs9ICIke2RhdGFkaXJ9L3RodW1ibmFpbGVycy9nZGstcGl4YnVmLXRodW1ibmFpbGVyLnRodW1ibmFpbGVyIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiBcCi0JJHtiaW5kaXJ9L2dkay1waXhidWYtY3NvdXJjZSBcCi0JJHtiaW5kaXJ9L2dkay1waXhidWYtcGl4ZGF0YSBcCi0gICAgICAgICR7YmluZGlyfS9nZGstcGl4YnVmLXByaW50LW1pbWUtdHlwZXMgXAotCSR7aW5jbHVkZWRpcn0vKiBcCi0JJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy8qLmxhIFwKLSIKLQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmdkay1waXhidWYtbG9hZGVyLS4qIgotUEFDS0FHRVNfRFlOQU1JQ19jbGFzcy1uYXRpdmUgPSAiIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgcG9zdGluc3RfcGl4YnVmbG9hZGVyID0gZC5nZXRWYXIoInBvc3RpbnN0X3BpeGJ1ZmxvYWRlciIpCi0KLSAgICBsb2FkZXJzX3Jvb3QgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycycpCi0KLSAgICBwYWNrYWdlcyA9ICcgJy5qb2luKGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxvYWRlcnNfcm9vdCwgcidebGlicGl4YnVmbG9hZGVyLSguKilcLnNvJCcsICdnZGstcGl4YnVmLWxvYWRlci0lcycsICdHREsgcGl4YnVmIGxvYWRlciBmb3IgJXMnKSkKLSAgICBkLnNldFZhcignUElYQlVGX1BBQ0tBR0VTJywgcGFja2FnZXMpCi0KLSAgICAjIFRoZSB0ZXN0IHN1aXRlIGV4ZXJjaXNlcyBhbGwgdGhlIGxvYWRlcnMsIHNvIGVuc3VyZSB0aGV5IGFyZSBhbGwKLSAgICAjIGRlcGVuZGVuY2llcyBvZiB0aGUgcHRlc3QgcGFja2FnZS4KLSAgICBkLmFwcGVuZFZhcigiUkRFUEVORFNfJXMtcHRlc3QiICUgZC5nZXRWYXIoJ1BOJyksICIgIiArIHBhY2thZ2VzKQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIENvcHkgZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIGludG8gbGliZGlyIHNvIGl0IGlzIGFsd2F5cyBhdmFpbGFibGUKLQkjIGluIG11bHRpbGliIGJ1aWxkcy4KLQljcCAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgJHtEfS8ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvCi0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWZpbmQgJHtEfSR7bGliZGlyfSAtbmFtZSAibGlicGl4YnVmbG9hZGVyLSoubGEiIC1leGVjIHJtIFx7XH0gXDsKLQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtY3NvdXJjZSBcCi0JCVhER19EQVRBX0RJUlM9JHtTVEFHSU5HX0RBVEFESVJ9IFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCi0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXBpeGRhdGEgXAotCQlYREdfREFUQV9ESVJTPSR7U1RBR0lOR19EQVRBRElSfSBcCi0JCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKLQkJWERHX0RBVEFfRElSUz0ke1NUQUdJTkdfREFUQURJUn0gXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKLQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyBcCi0JCVhER19EQVRBX0RJUlM9JHtTVEFHSU5HX0RBVEFESVJ9IFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycwotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIFwKLQkJWERHX0RBVEFfRElSUz0ke1NUQUdJTkdfREFUQURJUn0gXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUgXAotCQlHREtfUElYQlVGX01PRFVMRURJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzCi19Ci1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWZfMi40MC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuNDAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGRmNTAxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuNDAuMC5iYgpAQCAtMCwwICsxLDEzMiBAQAorU1VNTUFSWSA9ICJJbWFnZSBsb2FkaW5nIGxpYnJhcnkgZm9yIEdUSysiCitERVNDUklQVElPTiA9ICJUaGUgR0RLIFBpeGJ1ZiBsaWJyYXJ5IHByb3ZpZGVzOiBJbWFnZSBsb2FkaW5nIGFuZCBzYXZpbmcgXAorZmFjaWxpdGllcywgZmFzdCBzY2FsaW5nIGFuZCBjb21wb3NpdGluZyBvZiBwaXhidWZzIGFuZCBTaW1wbGUgYW5pbWF0aW9uIFwKK2xvYWRpbmcgKGllLiBhbmltYXRlZCBHSUZzKSIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvR2RrUGl4YnVmIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ2RrLXBpeGJ1Zi9pc3N1ZXMiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGstcGl4YnVmL2dkay1waXhidWYuaDtlbmRsaW5lPTI2O21kNT03MmIzOWRhN2NiZGRlMmU2NjUzMjlmZWY2MThlMWQ2YiBcCisgICAgICAgICAgICAgICAgICAgICIKKworU0VDVElPTiA9ICJsaWJzIgorCitERVBFTkRTID0gImdsaWItMi4wIGdkay1waXhidWYtbmF0aXZlIHNoYXJlZC1taW1lLWluZm8iCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vZmF0YWwtbG9hZGVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtV29yay1hcm91bmQtdGh1bWJuYWlsZXItY3Jvc3MtY29tcGlsZS1mYWlsdXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWEtY291cGxlLW9mLWRlY2lzaW9ucy1hcm91bmQtY3Jvc3MtY29tcGlsYXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1Eby1ub3QtcnVuLXRlc3RzLXdoZW4tYnVpbGRpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1CdWlsZC10aHVtYm5haWxlci1hbmQtdGVzdHMtYWxzby1pbi1jcm9zcy1idWlsZHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWlzc2luZy10ZXN0LWRhdGEucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMy10YXJnZXQtb25seS1Xb3JrLWFyb3VuZC10aHVtYm5haWxlci1jcm9zcy1jb21waWxlLWZhLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXRhcmdldC1vbmx5LVdvcmstYXJvdW5kLXRodW1ibmFpbGVyLWNyb3NzLWNvbXBpbGUtZmEucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNWViMWViYzI1OGJhOTA1ZjFjODY0NGVmNDlkZTA2NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxNTgyNTk1MDk5NTM3Y2E4ZmYzYjk5YzY4MDQzNTBiNGMwNThiYjhhZDY3NDExYmJhYWUwMjRlZTdjZWFkNGU2IgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBnZXR0ZXh0IHBpeGJ1ZmNhY2hlIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBsaWJfcGFja2FnZQorCitHSVJfTUVTT05fT1BUSU9OID0gJ2dpcicKKworRVhUUkFfT0VNRVNPTl9hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnLURpbnN0YWxsZWRfdGVzdHM9dHJ1ZScsICctRGluc3RhbGxlZF90ZXN0cz1mYWxzZScsIGQpfSIKKworTElCViA9ICIyLjEwLjAiCisKK0dES19QSVhCVUZfTE9BREVSUyA/PSAicG5nIGpwZWciCisKK1BBQ0tBR0VDT05GSUcgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9ICR7R0RLX1BJWEJVRl9MT0FERVJTfSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiR7R0RLX1BJWEJVRl9MT0FERVJTfSIKKworUEFDS0FHRUNPTkZJR1twbmddID0gIi1EcG5nPXRydWUsLURwbmc9ZmFsc2UsbGlicG5nIgorUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItRGpwZWc9dHJ1ZSwtRGpwZWc9ZmFsc2UsanBlZyIKK1BBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLUR0aWZmPXRydWUsLUR0aWZmPWZhbHNlLHRpZmYiCitQQUNLQUdFQ09ORklHW2pwZWcyMDAwXSA9ICItRGphc3Blcj10cnVlLC1EamFzcGVyPWZhbHNlLGphc3BlciIKKworUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EeDExPXRydWUsLUR4MTE9ZmFsc2UsdmlydHVhbC9saWJ4MTEiCisKK1BBQ0tBR0VTID0rICIke1BOfS14bGliIgorCisjIEZvciBHSU8gaW1hZ2UgdHlwZSBzbmlmZmluZworUkRFUEVORFNfJHtQTn0gPSAic2hhcmVkLW1pbWUtaW5mbyIKKworRklMRVNfJHtQTn0teGxpYiA9ICIke2xpYmRpcn0vKnBpeGJ1Zl94bGliKiR7U09MSUJTfSIKK0FMTE9XX0VNUFRZXyR7UE59LXhsaWIgPSAiMSIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMiCisKK0ZJTEVTXyR7UE59LWJpbiArPSAiJHtkYXRhZGlyfS90aHVtYm5haWxlcnMvZ2RrLXBpeGJ1Zi10aHVtYm5haWxlci50aHVtYm5haWxlciIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIgXAorCSR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAorCSR7YmluZGlyfS9nZGstcGl4YnVmLXBpeGRhdGEgXAorICAgICAgICAke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKKwkke2luY2x1ZGVkaXJ9LyogXAorCSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMvKi5sYSBcCisiCisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5nZGstcGl4YnVmLWxvYWRlci0uKiIKK1BBQ0tBR0VTX0RZTkFNSUNfY2xhc3MtbmF0aXZlID0gIiIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIHBvc3RpbnN0X3BpeGJ1ZmxvYWRlciA9IGQuZ2V0VmFyKCJwb3N0aW5zdF9waXhidWZsb2FkZXIiKQorCisgICAgbG9hZGVyc19yb290ID0gZC5leHBhbmQoJyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMnKQorCisgICAgcGFja2FnZXMgPSAnICcuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBsb2FkZXJzX3Jvb3QsIHInXmxpYnBpeGJ1ZmxvYWRlci0oLiopXC5zbyQnLCAnZ2RrLXBpeGJ1Zi1sb2FkZXItJXMnLCAnR0RLIHBpeGJ1ZiBsb2FkZXIgZm9yICVzJykpCisgICAgZC5zZXRWYXIoJ1BJWEJVRl9QQUNLQUdFUycsIHBhY2thZ2VzKQorCisgICAgIyBUaGUgdGVzdCBzdWl0ZSBleGVyY2lzZXMgYWxsIHRoZSBsb2FkZXJzLCBzbyBlbnN1cmUgdGhleSBhcmUgYWxsCisgICAgIyBkZXBlbmRlbmNpZXMgb2YgdGhlIHB0ZXN0IHBhY2thZ2UuCisgICAgZC5hcHBlbmRWYXIoIlJERVBFTkRTXyVzLXB0ZXN0IiAlIGQuZ2V0VmFyKCdQTicpLCAiICIgKyBwYWNrYWdlcykKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBDb3B5IGdkay1waXhidWYtcXVlcnktbG9hZGVycyBpbnRvIGxpYmRpciBzbyBpdCBpcyBhbHdheXMgYXZhaWxhYmxlCisJIyBpbiBtdWx0aWxpYiBidWlsZHMuCisJY3AgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzICR7RH0vJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLworCit9CisKKyMgUmVtb3ZlIGEgYmFkIGZ1enppbmcgYXR0ZW1wdCB0aGF0IHNwb3JhZGljYWxseSBmYWlscyB3aXRob3V0IGEgd2F5IHRvIHJlcHJvZHVjZQorZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlybSAke0R9LyR7ZGF0YWRpcn0vaW5zdGFsbGVkLXRlc3RzL2dkay1waXhidWYvcGl4YnVmLXJhbmRvbWx5LW1vZGlmaWVkLnRlc3QKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWZpbmQgJHtEfSR7bGliZGlyfSAtbmFtZSAibGlicGl4YnVmbG9hZGVyLSoubGEiIC1leGVjIHJtIFx7XH0gXDsKKworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtY3NvdXJjZSBcCisJCVhER19EQVRBX0RJUlM9JHtTVEFHSU5HX0RBVEFESVJ9IFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCisKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXBpeGRhdGEgXAorCQlYREdfREFUQV9ESVJTPSR7U1RBR0lOR19EQVRBRElSfSBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQorCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKKwkJWERHX0RBVEFfRElSUz0ke1NUQUdJTkdfREFUQURJUn0gXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKKworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyBcCisJCVhER19EQVRBX0RJUlM9JHtTVEFHSU5HX0RBVEFESVJ9IFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycworCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIFwKKwkJWERHX0RBVEFfRElSUz0ke1NUQUdJTkdfREFUQURJUn0gXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUgXAorCQlHREtfUElYQlVGX01PRFVMRURJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzCit9CitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2gKaW5kZXggYTA2MmFhNi4uMzcyZjE0NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lLzAwMDEtRG9uLXQtdXNlLUFDX0NBTk9OSUNBTF9IT1NULnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZS8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaApAQCAtMTksNyArMTksNyBAQAogKysrIGIvY29uZmlndXJlLmFjCiBAQCAtMyw3ICszLDYgQEAgQUNfUFJFUkVRKDIuNTMpCiAgCi0gQUNfSU5JVChbYWR3YWl0YS1pY29uLXRoZW1lXSwgWzMuMzQuMF0sCisgQUNfSU5JVChbYWR3YWl0YS1pY29uLXRoZW1lXSwgWzMuMzQuM10sCiAgICAgICAgICBbaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9YWR3YWl0YS1pY29uLXRoZW1lXSkKIC1BQ19DQU5PTklDQUxfSE9TVAogIEFDX0NPTkZJR19NQUNST19ESVIoW200XSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjM0LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4zNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjZiNjBmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjM0LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1TVU1NQVJZID0gIkdUSysgaWNvbiB0aGVtZSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9hZHdhaXRhLWljb24tdGhlbWUiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9hZHdhaXRhLWljb24tdGhlbWUvaXNzdWVzIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUiCi0KLUxJQ0VOU0UgPSAiTEdQTC0zLjAgfCBDQy1CWS1TQS0zLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jODRjYWM4OGU0NmZjMDc2NDdlYTA3ZTZjMjRlZWI3YyIKLQotaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBndGstaWNvbi1jYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJ1bi1pbnN0YWxsYXRpb24tY29tbWFuZHMtYXMtc2hlbGwtam9icy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQxYjg2MGMxN2VmZTA2NTg0OWIwY2JmNDZlODg4MTFhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwYjdlOTFmODI2MzU1MmI2NGQwZjliZWZmMzMxNTAyOTFiMDg2NjE4Y2U0OThjNzFiZjEwMDM1ZTQ4YzdjN2YiCi0KLURFUEVORFMgKz0gImxpYnJzdmctbmF0aXZlIgotCi1QQUNLQUdFUyA9ICIke1BOfS1jdXJzb3JzICR7UE59LXN5bWJvbGljLWhpcmVzICR7UE59LXN5bWJvbGljICR7UE59LWhpcmVzICR7UE59IgotCi1SUkVQTEFDRVNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKLVJDT05GTElDVFNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKLVJQUk9WSURFU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgotCi1GSUxFU18ke1BOfS1jdXJzb3JzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhL2N1cnNvcnMvIgotRklMRVNfJHtQTn0tc3ltYm9saWMtaGlyZXMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvOTZ4OTYvKi8qLnN5bWJvbGljLnBuZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS82NHg2NC8qLyouc3ltYm9saWMucG5nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzQ4eDQ4LyovKi5zeW1ib2xpYy5wbmcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMzJ4MzIvKi8qLnN5bWJvbGljLnBuZyIKLUZJTEVTXyR7UE59LXN5bWJvbGljID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzE2eDE2LyovKi5zeW1ib2xpYy5wbmcgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMjR4MjQvKi8qLnN5bWJvbGljLnBuZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9zY2FsYWJsZS8qLyotc3ltYm9saWMqLnN2ZyIKLUZJTEVTXyR7UE59LWhpcmVzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzI1NngyNTYvIFwKLSAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzUxMng1MTIvIgotRklMRVNfJHtQTn0gPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvIFwKLSAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9wa2djb25maWcvYWR3YWl0YS1pY29uLXRoZW1lLnBjIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4zNC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMzQuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTI3MjdiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMzQuMy5iYgpAQCAtMCwwICsxLDQxIEBACitTVU1NQVJZID0gIkdUSysgaWNvbiB0aGVtZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9hZHdhaXRhLWljb24tdGhlbWUiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9hZHdhaXRhLWljb24tdGhlbWUvaXNzdWVzIgorU0VDVElPTiA9ICJ4MTEvZ25vbWUiCisKK0xJQ0VOU0UgPSAiTEdQTC0zLjAgfCBDQy1CWS1TQS0zLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jODRjYWM4OGU0NmZjMDc2NDdlYTA3ZTZjMjRlZWI3YyIKKworaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBndGstaWNvbi1jYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJ1bi1pbnN0YWxsYXRpb24tY29tbWFuZHMtYXMtc2hlbGwtam9icy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjlhZWE0YWQ5YmMwMDJhYWNhZDE1NWVlMDc0OGIzNTdmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU3YzJkOGMyNTkxMjVkNWYzNWVjMDk1MjJiODhjOGZlN2VjZjYyNTIyNGFiMDgxMTIxM2VmMGE5NWQ5MGI5MDgiCisKK0RFUEVORFMgKz0gImxpYnJzdmctbmF0aXZlIgorCitQQUNLQUdFUyA9ICIke1BOfS1jdXJzb3JzICR7UE59LXN5bWJvbGljLWhpcmVzICR7UE59LXN5bWJvbGljICR7UE59LWhpcmVzICR7UE59IgorCitSUkVQTEFDRVNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKK1JDT05GTElDVFNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKK1JQUk9WSURFU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgorCitGSUxFU18ke1BOfS1jdXJzb3JzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhL2N1cnNvcnMvIgorRklMRVNfJHtQTn0tc3ltYm9saWMtaGlyZXMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvOTZ4OTYvKi8qLnN5bWJvbGljLnBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS82NHg2NC8qLyouc3ltYm9saWMucG5nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzQ4eDQ4LyovKi5zeW1ib2xpYy5wbmcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMzJ4MzIvKi8qLnN5bWJvbGljLnBuZyIKK0ZJTEVTXyR7UE59LXN5bWJvbGljID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzE2eDE2LyovKi5zeW1ib2xpYy5wbmcgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMjR4MjQvKi8qLnN5bWJvbGljLnBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9zY2FsYWJsZS8qLyotc3ltYm9saWMqLnN2ZyIKK0ZJTEVTXyR7UE59LWhpcmVzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzI1NngyNTYvIFwKKyAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzUxMng1MTIvIgorRklMRVNfJHtQTn0gPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvIFwKKyAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9wa2djb25maWcvYWR3YWl0YS1pY29uLXRoZW1lLnBjIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtUG9ydC1jcm9zcy1jb21waWxhdGlvbi1zdXBwb3J0LXRvLW1lc29uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLVBvcnQtY3Jvc3MtY29tcGlsYXRpb24tc3VwcG9ydC10by1tZXNvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM5ZjljOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtUG9ydC1jcm9zcy1jb21waWxhdGlvbi1zdXBwb3J0LXRvLW1lc29uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLUZyb20gMDQxN2ExYmIwODc0NWYyYmY1MzEwZDIwYjM0MmMyYjNiOWIyMTJkMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVGh1LCAxNSBOb3YgMjAxOCAxNToxMDowNSArMDEwMAotU3ViamVjdDogW1BBVENIXSBQb3J0IGNyb3NzLWNvbXBpbGF0aW9uIHN1cHBvcnQgdG8gbWVzb24KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLQotLS0tCi0gZ2lyL21lc29uLmJ1aWxkICAgfCA2MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQotIG1lc29uLmJ1aWxkICAgICAgIHwgIDQgKystCi0gbWVzb25fb3B0aW9ucy50eHQgfCAyMCArKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2lyL21lc29uLmJ1aWxkIGIvZ2lyL21lc29uLmJ1aWxkCi1pbmRleCBjMzEyMTAwLi5hMDI4MDMzIDEwMDY0NAotLS0tIGEvZ2lyL21lc29uLmJ1aWxkCi0rKysgYi9naXIvbWVzb24uYnVpbGQKLUBAIC00MSwxNiArNDEsMjkgQEAgZ2lyX2ZpbGVzID0gWwotIHR5cGVsaWJkaXIgPSBqb2luX3BhdGhzKGdldF9vcHRpb24oJ2xpYmRpcicpLCAnZ2lyZXBvc2l0b3J5LTEuMCcpCi0gaW5zdGFsbF9kYXRhKGdpcl9maWxlcywgaW5zdGFsbF9kaXI6IGdpcmRpcikKLSAKLS1zY2FubmVyX2NvbW1hbmQgPSBbCi0tICBweXRob24sCi0tICBnaXJzY2FubmVyLAotLSAgJy0tb3V0cHV0PUBPVVRQVVRAJywKLS0gICctLW5vLWxpYnRvb2wnLAotLSAgJy0tcXVpZXQnLAotLSAgJy0tcmVwYXJzZS12YWxpZGF0ZScsCi0tICAnLS1hZGQtaW5jbHVkZS1wYXRoJywgam9pbl9wYXRocyhtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpKSwKLS0gICctLWFkZC1pbmNsdWRlLXBhdGgnLCBqb2luX3BhdGhzKG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpKSwKLS1dCi0raWYgZ2V0X29wdGlvbignZW5hYmxlLWhvc3QtZ2knKQotKyAgICBzY2FubmVyX2NvbW1hbmQgPSBbCi0rICAgICAgJ2ctaXItc2Nhbm5lcicsCi0rICAgICAgJy0tb3V0cHV0PUBPVVRQVVRAJywKLSsgICAgICAnLS1uby1saWJ0b29sJywKLSsgICAgICAnLS1xdWlldCcsCi0rICAgICAgJy0tcmVwYXJzZS12YWxpZGF0ZScsCi0rICAgICAgJy0tYWRkLWluY2x1ZGUtcGF0aCcsIGpvaW5fcGF0aHMobWVzb24uY3VycmVudF9idWlsZF9kaXIoKSksCi0rICAgICAgJy0tYWRkLWluY2x1ZGUtcGF0aCcsIGpvaW5fcGF0aHMobWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCkpLAotKyAgICBdCi0rZWxzZQotKyAgICBzY2FubmVyX2NvbW1hbmQgPSBbCi0rICAgICAgcHl0aG9uLAotKyAgICAgIGdpcnNjYW5uZXIsCi0rICAgICAgJy0tb3V0cHV0PUBPVVRQVVRAJywKLSsgICAgICAnLS1uby1saWJ0b29sJywKLSsgICAgICAnLS1xdWlldCcsCi0rICAgICAgJy0tcmVwYXJzZS12YWxpZGF0ZScsCi0rICAgICAgJy0tYWRkLWluY2x1ZGUtcGF0aCcsIGpvaW5fcGF0aHMobWVzb24uY3VycmVudF9idWlsZF9kaXIoKSksCi0rICAgICAgJy0tYWRkLWluY2x1ZGUtcGF0aCcsIGpvaW5fcGF0aHMobWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCkpLAotKyAgICBdCi0rZW5kaWYKLSsKLSAKLSBkZXBfdHlwZSA9IGdsaWJfZGVwLnR5cGVfbmFtZSgpCi0gaWYgZGVwX3R5cGUgPT0gJ2ludGVybmFsJwotQEAgLTYzLDYgKzc2LDEyIEBAIGlmIGRlcF90eXBlID09ICdpbnRlcm5hbCcKLSAgICAgICAgICAgICAgICAgICAgICAgJy0tZXh0cmEtbGlicmFyeT1nbGliLTIuMCcsICctLWV4dHJhLWxpYnJhcnk9Z29iamVjdC0yLjAnXQotIGVuZGlmCi0gCi0raWYgZ2V0X29wdGlvbignZW5hYmxlLWdpLWNyb3NzLXdyYXBwZXInKSAhPSAnJwotKyAgc2Nhbm5lcl9jb21tYW5kICs9IFsnLS11c2UtYmluYXJ5LXdyYXBwZXI9JyArIGdldF9vcHRpb24oJ2VuYWJsZS1naS1jcm9zcy13cmFwcGVyJyldCi0rZW5kaWYKLStpZiBnZXRfb3B0aW9uKCdlbmFibGUtZ2ktbGRkLXdyYXBwZXInKSAhPSAnJwotKyAgc2Nhbm5lcl9jb21tYW5kICs9IFsnLS11c2UtbGRkLXdyYXBwZXI9JyArIGdldF9vcHRpb24oJ2VuYWJsZS1naS1sZGQtd3JhcHBlcicpXQotK2VuZGlmCi0gIyBUYWtlIGEgZ2xvYiBhbmQgcHJpbnQgdG8gbmV3bGluZXMKLSBnbG9iYmVyID0gJycnCi0gZnJvbSBnbG9iIGltcG9ydCBnbG9iCi1AQCAtODksOCArMTA4LDggQEAgZ2xpYl9jb21tYW5kID0gc2Nhbm5lcl9jb21tYW5kICsgWwotIAotIGlmIGRlcF90eXBlID09ICdwa2djb25maWcnCi0gICBnbGliX2NvbW1hbmQgKz0gWyctLWV4dGVybmFsLWxpYnJhcnknLCAnLS1wa2c9Z2xpYi0yLjAnXQotLSAgZ2xpYl9saWJkaXIgPSBnbGliX2RlcC5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdsaWJkaXInKQotLSAgZ2xpYl9pbmNkaXIgPSBqb2luX3BhdGhzKGdsaWJfZGVwLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2luY2x1ZGVkaXInKSwgJ2dsaWItMi4wJykKLSsgIGdsaWJfbGliZGlyID0gZ2V0X29wdGlvbigncGtnY29uZmlnLXN5c3Jvb3QtcGF0aCcpICsgZ2xpYl9kZXAuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnbGliZGlyJykKLSsgIGdsaWJfaW5jZGlyID0gZ2V0X29wdGlvbigncGtnY29uZmlnLXN5c3Jvb3QtcGF0aCcpICsgam9pbl9wYXRocyhnbGliX2RlcC5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdpbmNsdWRlZGlyJyksICdnbGliLTIuMCcpCi0gICBnbGliX2xpYmluY2RpciA9IGpvaW5fcGF0aHMoZ2xpYl9saWJkaXIsICdnbGliLTIuMCcsICdpbmNsdWRlJykKLSAgIGdsaWJfZmlsZXMgKz0gam9pbl9wYXRocyhnbGliX2luY2RpciwgJ2dvYmplY3QnLCAnZ2xpYi10eXBlcy5oJykKLSAgIGdsaWJfZmlsZXMgKz0gam9pbl9wYXRocyhnbGliX2xpYmluY2RpciwgJ2dsaWJjb25maWcuaCcpCi1AQCAtMzQ1LDcgKzM2NCw3IEBAIGlmIGdpb3VuaXhfZGVwLmZvdW5kKCkKLSAgIGRlcF90eXBlID0gZ2lvdW5peF9kZXAudHlwZV9uYW1lKCkKLSAgIGlmIGRlcF90eXBlID09ICdwa2djb25maWcnCi0gICAgIGdpb19jb21tYW5kICs9IFsnLS1wa2c9Z2lvLXVuaXgtMi4wJ10KLS0gICAgZ2lvdW5peF9pbmNsdWRlZGlyID0gam9pbl9wYXRocyhnaW91bml4X2RlcC5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdpbmNsdWRlZGlyJyksICdnaW8tdW5peC0yLjAnKQotKyAgICBnaW91bml4X2luY2x1ZGVkaXIgPSBnZXRfb3B0aW9uKCdwa2djb25maWctc3lzcm9vdC1wYXRoJykgKyBqb2luX3BhdGhzKGdpb3VuaXhfZGVwLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2luY2x1ZGVkaXInKSwgJ2dpby11bml4LTIuMCcpCi0gICAgICMgR2V0IHRoZSBpbnN0YWxsZWQgZ2lvLXVuaXggaGVhZGVyIGxpc3QKLSAgICAgcmV0ID0gcnVuX2NvbW1hbmQocHl0aG9uLCAnLWMnLCBnbG9iYmVyLmZvcm1hdChqb2luX3BhdGhzKGdpb3VuaXhfaW5jbHVkZWRpciwgJ2dpbycsICcqLmgnKSkpCi0gICAgIGlmIHJldC5yZXR1cm5jb2RlKCkgIT0gMAotQEAgLTQyOCwxNSArNDQ3LDI0IEBAIGdpcl9maWxlcyArPSBjdXN0b21fdGFyZ2V0KCdnaXItZ2lyZXBvc2l0b3J5JywKLSApCi0gCi0gdHlwZWxpYnMgPSBbXQotK2lmIGdldF9vcHRpb24oJ2VuYWJsZS1naS1jcm9zcy13cmFwcGVyJykgIT0gJycKLSsgICAgZ2lyY29tcGlsZXJfY29tbWFuZCA9IFtnZXRfb3B0aW9uKCdlbmFibGUtZ2ktY3Jvc3Mtd3JhcHBlcicpLCBnaXJjb21waWxlci5mdWxsX3BhdGgoKSwgJy1vJywgJ0BPVVRQVVRAJywgJ0BJTlBVVEAnLAotKyAgICAgICAgICAgICAgJy0taW5jbHVkZWRpcicsIG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCi0rICAgICAgICAgICAgICAnLS1pbmNsdWRlZGlyJywgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCi0rICAgIF0KLStlbHNlCi0rICAgIGdpcmNvbXBpbGVyX2NvbW1hbmQgPSBbZ2lyY29tcGlsZXIsICctbycsICdAT1VUUFVUQCcsICdASU5QVVRAJywKLSsgICAgICAgICAgICAgICctLWluY2x1ZGVkaXInLCBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAotKyAgICAgICAgICAgICAgJy0taW5jbHVkZWRpcicsIG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAotKyAgICBdCi0rZW5kaWYKLSsKLSBmb3JlYWNoIGdpciA6IGdpcl9maWxlcwotICAgdHlwZWxpYnMgKz0gY3VzdG9tX3RhcmdldCgnZ2VuZXJhdGUtdHlwZWxpYi1AMEAnLmZvcm1hdChnaXIpLnVuZGVyc2NvcmlmeSgpLAotICAgICBpbnB1dDogZ2lyLAotICAgICBvdXRwdXQ6ICdAQkFTRU5BTUVALnR5cGVsaWInLAotICAgICBkZXBlbmRzOiBbZ29iamVjdF9naXIsIF0sCi0tICAgIGNvbW1hbmQ6IFtnaXJjb21waWxlciwgJy1vJywgJ0BPVVRQVVRAJywgJ0BJTlBVVEAnLAotLSAgICAgICAgICAgICAgJy0taW5jbHVkZWRpcicsIG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCi0tICAgICAgICAgICAgICAnLS1pbmNsdWRlZGlyJywgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCi0tICAgIF0sCi0rICAgIGNvbW1hbmQ6IGdpcmNvbXBpbGVyX2NvbW1hbmQsCi0gICAgIGluc3RhbGw6IHRydWUsCi0gICAgIGluc3RhbGxfZGlyOiB0eXBlbGliZGlyLAotICAgKQotZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IGE1ZTgyNWYuLmEyODQ5MGEgMTAwNjQ0Ci0tLS0gYS9tZXNvbi5idWlsZAotKysrIGIvbWVzb24uYnVpbGQKLUBAIC0xNjgsNyArMTY4LDkgQEAgZW5kaWYKLSBzdWJkaXIoJ2dpcmVwb3NpdG9yeScpCi0gc3ViZGlyKCd0b29scycpCi0gc3ViZGlyKCdnaXNjYW5uZXInKQotLXN1YmRpcignZ2lyJykKLStpZiBnZXRfb3B0aW9uKCdlbmFibGUtaW50cm9zcGVjdGlvbi1kYXRhJykgPT0gdHJ1ZQotKyAgICBzdWJkaXIoJ2dpcicpCi0rZW5kaWYKLSBzdWJkaXIoJ2V4YW1wbGVzJykKLSBzdWJkaXIoJ2RvY3MnKQotIHN1YmRpcigndGVzdHMnKQotZGlmZiAtLWdpdCBhL21lc29uX29wdGlvbnMudHh0IGIvbWVzb25fb3B0aW9ucy50eHQKLWluZGV4IDQ0NWE2OGEuLmEzMjU1MTEgMTAwNjQ0Ci0tLS0gYS9tZXNvbl9vcHRpb25zLnR4dAotKysrIGIvbWVzb25fb3B0aW9ucy50eHQKLUBAIC0yNSwzICsyNSwyMyBAQCBvcHRpb24oJ3B5dGhvbicsIHR5cGU6ICdzdHJpbmcnLCB2YWx1ZTogJ3B5dGhvbjMnLAotIG9wdGlvbignZ2lyX2Rpcl9wcmVmaXgnLCB0eXBlOiAnc3RyaW5nJywKLSAgIGRlc2NyaXB0aW9uOiAnSW50ZXJtZWRpYXRlIHByZWZpeCBmb3IgZ2lyIGluc3RhbGxhdGlvbiB1bmRlciAke3ByZWZpeH0nCi0gKQotKwotK29wdGlvbignZW5hYmxlLWhvc3QtZ2knLCB0eXBlOiAnYm9vbGVhbicsIHZhbHVlIDogZmFsc2UsCi0rICBkZXNjcmlwdGlvbjogJ1VzZSBnb2JqZWN0IGludHJvc3BlY3Rpb24gdG9vbHMgaW5zdGFsbGVkIGluIHRoZSBob3N0IHN5c3RlbSAodXNlZnVsIHdoZW4gY3Jvc3MtY29tcGlsaW5nKScKLSspCi0rCi0rb3B0aW9uKCdlbmFibGUtZ2ktY3Jvc3Mtd3JhcHBlcicsIHR5cGU6ICdzdHJpbmcnLAotKyAgZGVzY3JpcHRpb246ICdVc2UgYSB3cmFwcGVyIHRvIHJ1biBnaWNvbXBpbGVyIGFuZCBiaW5hcmllcyBwcm9kdWNlZCBieSBnaXNjYW5uZXIgKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZyknCi0rKQotKwotK29wdGlvbignZW5hYmxlLWdpLWxkZC13cmFwcGVyJywgdHlwZTogJ3N0cmluZycsCi0rICBkZXNjcmlwdGlvbjogJ1VzZSBhIGxkZCB3cmFwcGVyIGluc3RlYWQgb2Ygc3lzdGVtIGxkZCBjb21tYW5kIGluIGdpc2Nhbm5lciAodXNlZnVsIHdoZW4gY3Jvc3MtY29tcGlsaW5nKScKLSspCi0rCi0rb3B0aW9uKCdlbmFibGUtaW50cm9zcGVjdGlvbi1kYXRhJywgdHlwZTogJ2Jvb2xlYW4nLCB2YWx1ZSA6IHRydWUsCi0rICBkZXNjcmlwdGlvbjogJ0J1aWxkIGludHJvc3BlY3Rpb24gZGF0YSAoLmdpciBhbmQgLnR5cGVsaWIgZmlsZXMpIGluIGFkZGl0aW9uIHRvIGxpYnJhcnkgYW5kIHRvb2xzJwotKykKLSsKLStvcHRpb24oJ3BrZ2NvbmZpZy1zeXNyb290LXBhdGgnLCB0eXBlOiAnc3RyaW5nJywKLSsgIGRlc2NyaXB0aW9uOiAnU3BlY2lmeSBhIHN5c3Jvb3QgcGF0aCB0byBwcmVwZW5kIHRvIHBrZ2NvbmZpZyBvdXRwdXQgKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZyknCi0rKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLVJlbG9jYXRlLXRoZS1yZXBvc2l0b3J5LWRpcmVjdG9yeS1mb3ItbmF0aXZlLWJ1aWxkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1SZWxvY2F0ZS10aGUtcmVwb3NpdG9yeS1kaXJlY3RvcnktZm9yLW5hdGl2ZS1idWlsZHMucGF0Y2gKaW5kZXggYTE1NDAxYS4uOWQ2ZjVkZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLVJlbG9jYXRlLXRoZS1yZXBvc2l0b3J5LWRpcmVjdG9yeS1mb3ItbmF0aXZlLWJ1aWxkcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtUmVsb2NhdGUtdGhlLXJlcG9zaXRvcnktZGlyZWN0b3J5LWZvci1uYXRpdmUtYnVpbGRzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA2NzM2MjM4NTFmYjcwYzBlNDNjZjc5Y2VmNjdiMzc1MTQzMmViZTcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4ZGZiNDQ0NTBjYTlmZmZjMTU5NzdlOTVlYWRjYjcwNTRhYjYwYTlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogU2FzY2hhIFNpbGJlIDx4LXlvMTdAc2Utc2lsYmUuZGU+CiBEYXRlOiBGcmksIDggSnVuIDIwMTggMTM6NTU6MTAgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gUmVsb2NhdGUgdGhlIHJlcG9zaXRvcnkgZGlyZWN0b3J5IGZvciBuYXRpdmUgYnVpbGRzCkBAIC0yMSw3ICsyMSw3IEBACiAgMiBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZ2lyZXBvc2l0b3J5L2dpcmVwb3NpdG9yeS5jIGIvZ2lyZXBvc2l0b3J5L2dpcmVwb3NpdG9yeS5jCi1pbmRleCBjYTVkYzJiLi43YTRkMTdmIDEwMDY0NAoraW5kZXggYjc5NDhkNi4uMzlhMjU4NiAxMDA2NDQKIC0tLSBhL2dpcmVwb3NpdG9yeS9naXJlcG9zaXRvcnkuYwogKysrIGIvZ2lyZXBvc2l0b3J5L2dpcmVwb3NpdG9yeS5jCiBAQCAtMjEsNiArMjEsOCBAQApAQCAtNDIsNyArNDIsNyBAQAogIC8qKgogICAqIFNFQ1RJT046Z2lyZXBvc2l0b3J5CiAgICogQHNob3J0X2Rlc2NyaXB0aW9uOiBHT2JqZWN0IEludHJvc3BlY3Rpb24gcmVwb3NpdG9yeSBtYW5hZ2VyCi1AQCAtMjEyLDkgKzIxNiwxNiBAQCBpbml0X2dsb2JhbHMgKHZvaWQpCitAQCAtMjE1LDkgKzIxOSwxNiBAQCBpbml0X2dsb2JhbHMgKHZvaWQpCiAgICAgICAgICAgIGdfZnJlZSAoY3VzdG9tX2RpcnMpOwogICAgICAgICAgfQogIApAQCAtNjIsNyArNjIsNyBAQAogICAgICAgIHR5cGVsaWJfc2VhcmNoX3BhdGggPSBnX3NsaXN0X3ByZXBlbmQgKHR5cGVsaWJfc2VhcmNoX3BhdGgsIHR5cGVsaWJfZGlyKTsKICAKIGRpZmYgLS1naXQgYS9naXJlcG9zaXRvcnkvbWVzb24uYnVpbGQgYi9naXJlcG9zaXRvcnkvbWVzb24uYnVpbGQKLWluZGV4IDFkN2FlZDYuLjU2MzdmYjUgMTAwNjQ0CitpbmRleCAyMDQ2NTlmLi4zZTYxZDMxIDEwMDY0NAogLS0tIGEvZ2lyZXBvc2l0b3J5L21lc29uLmJ1aWxkCiArKysgYi9naXJlcG9zaXRvcnkvbWVzb24uYnVpbGQKIEBAIC00NCw3ICs0NCw3IEBAIGdpcmVwb19pbnRlcm5hbHNfbGliID0gc3RhdGljX2xpYnJhcnkoJ2dpcmVwb3NpdG9yeS1pbnRlcm5hbHMnLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLWdpc2Nhbm5lci1hZGQtYS1saWItZGlycy1lbnZ2YXItb3B0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLWdpc2Nhbm5lci1hZGQtYS1saWItZGlycy1lbnZ2YXItb3B0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGQ5NTUzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1naXNjYW5uZXItYWRkLWEtbGliLWRpcnMtZW52dmFyLW9wdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gNjY1M2MyOGYwYjc2YWFkODZlMjZjNTEyYjAzZWZjZWM2ZDlkOWU5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogV2VkLCAzIEphbiAyMDE4IDE3OjAyOjAxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdpc2Nhbm5lcjogYWRkIGEgLS1saWItZGlycy1lbnZ2YXIgb3B0aW9uCi0KLUJ5IGRlZmF1bHQgTERfTElCUkFSWV9QQVRIIGlzIHNldCB0byB0aGUgbGlzdCBvZiB0YXJnZXQgbGlicmFyeSBwYXRoczsKLXRoaXMgYnJlYWtzIGRvd24gaW4gY3Jvc3MtY29tcGlsYXRpb24gZW52aXJvbm1lbnQsIGFzIHdlIG5lZWQgdG8gcnVuIGEKLW5hdGl2ZSBlbXVsYXRpb24gd3JhcHBlciByYXRoZXIgdGhhbiB0aGUgdGFyZ2V0IGJpbmFyeSBpdHNlbGYuIFRoaXMgcGF0Y2gKLWFsbG93cyBleHBvcnRpbmcgdGhvc2UgcGF0aHMgdG8gYSBkaWZmZXJlbnQgZW52aXJvbm1lbnQgdmFyaWFibGUKLXdoaWNoIGNhbiBiZSBwaWNrZWQgdXAgYW5kIHVzZWQgYnkgdGhlIHdyYXBwZXIuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIGdpc2Nhbm5lci9jY29tcGlsZXIucHkgICB8IDQgKystLQotIGdpc2Nhbm5lci9kdW1wZXIucHkgICAgICB8IDMgKystCi0gZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5IHwgMyArKysKLSAzIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dpc2Nhbm5lci9jY29tcGlsZXIucHkgYi9naXNjYW5uZXIvY2NvbXBpbGVyLnB5Ci1pbmRleCAzMmM5Mjk2Li4zZmIyNjJiIDEwMDY0NAotLS0tIGEvZ2lzY2FubmVyL2Njb21waWxlci5weQotKysrIGIvZ2lzY2FubmVyL2Njb21waWxlci5weQotQEAgLTE3NCw3ICsxNzQsNyBAQCBjbGFzcyBDQ29tcGlsZXIob2JqZWN0KToKLSAKLSAgICAgICAgICAgICBzZWxmLl9jZmxhZ3Nfbm9fZGVwcmVjYXRpb25fd2FybmluZ3MgPSAiLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAKLS0gICAgZGVmIGdldF9pbnRlcm5hbF9saW5rX2ZsYWdzKHNlbGYsIGFyZ3MsIGxpYnRvb2wsIGxpYnJhcmllcywgZXh0cmFfbGlicmFyaWVzLCBsaWJwYXRocyk6Ci0rICAgIGRlZiBnZXRfaW50ZXJuYWxfbGlua19mbGFncyhzZWxmLCBhcmdzLCBsaWJ0b29sLCBsaWJyYXJpZXMsIGV4dHJhX2xpYnJhcmllcywgbGlicGF0aHMsIGxpYl9kaXJzX2VudnZhcik6Ci0gICAgICAgICAjIEFuICJpbnRlcm5hbCIgbGluayBpcyB3aGVyZSB0aGUgbGlicmFyeSB0byBiZSBpbnRyb3NwZWN0ZWQKLSAgICAgICAgICMgaXMgYmVpbmcgYnVpbHQgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgotIAotQEAgLTE4NCw3ICsxODQsNyBAQCBjbGFzcyBDQ29tcGlsZXIob2JqZWN0KToKLSAgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKLSAgICAgICAgICAgICBydW50aW1lX3BhdGhfZW52dmFyID0gWydMSUInLCAnUEFUSCddCi0gICAgICAgICBlbHNlOgotLSAgICAgICAgICAgIHJ1bnRpbWVfcGF0aF9lbnZ2YXIgPSBbJ0xEX0xJQlJBUllfUEFUSCcsICdEWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSCddCi0rICAgICAgICAgICAgcnVudGltZV9wYXRoX2VudnZhciA9IFsnTERfTElCUkFSWV9QQVRIJywgJ0RZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRIJ10gaWYgbm90IGxpYl9kaXJzX2VudnZhciBlbHNlIFtsaWJfZGlyc19lbnZ2YXJdCi0gICAgICAgICAgICAgIyBTZWFyY2ggdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGZpcnN0Ci0gICAgICAgICAgICAgIyAoVGhpcyBmbGFnIGlzIG5vdCBzdXBwb3J0ZWQgbm9yIG5lZWRlZCBmb3IgVmlzdWFsIEMrKykKLSAgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLUwuJykKLWRpZmYgLS1naXQgYS9naXNjYW5uZXIvZHVtcGVyLnB5IGIvZ2lzY2FubmVyL2R1bXBlci5weQotaW5kZXggMmI4NTFhNS4uMTBhN2MzOSAxMDA2NDQKLS0tLSBhL2dpc2Nhbm5lci9kdW1wZXIucHkKLSsrKyBiL2dpc2Nhbm5lci9kdW1wZXIucHkKLUBAIC0yNDQsNyArMjQ0LDggQEAgY2xhc3MgRHVtcENvbXBpbGVyKG9iamVjdCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlidG9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmxpYnJhcmllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmV4dHJhX2xpYnJhcmllcywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmxpYnJhcnlfcGF0aHMpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5saWJyYXJ5X3BhdGhzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMubGliX2RpcnNfZW52dmFyKQotICAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKHBrZ19jb25maWdfbGlicykKLSAKLSAgICAgICAgIGVsc2U6Ci1kaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5IGIvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci1pbmRleCA5MDEzNTYyLi45YzlmZTEyIDEwMDY0NAotLS0tIGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci0rKysgYi9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkKLUBAIC0xMjYsNiArMTI2LDkgQEAgZGVmIF9nZXRfb3B0aW9uX3BhcnNlcigpOgotICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tdXNlLWxkZC13cmFwcGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImxkZF93cmFwcGVyIiwgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJ3cmFwcGVyIHRvIHVzZSBpbnN0ZWFkIG9mIGxkZCAodXNlZnVsIHdoZW4gY3Jvc3MtY29tcGlsaW5nKSIpCi0rICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1saWItZGlycy1lbnZ2YXIiLAotKyAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlIiwgZGVzdD0ibGliX2RpcnNfZW52dmFyIiwgZGVmYXVsdD1Ob25lLAotKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB3cml0ZSBhIGxpc3Qgb2YgbGlicmFyeSBkaXJlY3RvcmllcyB0byAoZm9yIHJ1bm5pbmcgdGhlIHRyYW5zaWVudCBiaW5hcnkpLCBpbnN0ZWFkIG9mIHN0YW5kYXJkIExEX0xJQlJBUllfUEFUSCIpCi0gICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1wcm9ncmFtLWFyZyIsCi0gICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0iYXBwZW5kIiwgZGVzdD0icHJvZ3JhbV9hcmdzIiwgZGVmYXVsdD1bXSwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iZXh0cmEgYXJndW1lbnRzIHRvIHByb2dyYW0iKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLW1lc29uLmJ1aWxkLWRpc2FibGUtdGVzdHMtd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtbWVzb24uYnVpbGQtZGlzYWJsZS10ZXN0cy13aGVuLWNyb3NzLWNvbXBpbGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ5NTFiMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtbWVzb24uYnVpbGQtZGlzYWJsZS10ZXN0cy13aGVuLWNyb3NzLWNvbXBpbGluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUZyb20gMmMzODQxODdjYzIyMTEzYzBjOWIxY2QyMzM5NDgxMThmN2MwODVlZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyNSBNYXIgMjAxOSAxMzoyODo0OCArMDEwMAotU3ViamVjdDogW1BBVENIXSBtZXNvbi5idWlsZDogZGlzYWJsZSB0ZXN0cyB3aGVuIGNyb3NzLWNvbXBpbGluZwotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dvYmplY3QtaW50cm9zcGVjdGlvbi9tZXJnZV9yZXF1ZXN0cy82NF0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gbWVzb24uYnVpbGQgfCA0ICsrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCAyNTQ0ZmYzLi40YzE2ZmU1IDEwMDY0NAotLS0tIGEvbWVzb24uYnVpbGQKLSsrKyBiL21lc29uLmJ1aWxkCi1AQCAtMTY4LDcgKzE2OCw5IEBAIGlmIGdldF9vcHRpb24oJ2VuYWJsZS1pbnRyb3NwZWN0aW9uLWRhdGEnKSA9PSB0cnVlCi0gZW5kaWYKLSBzdWJkaXIoJ2V4YW1wbGVzJykKLSBzdWJkaXIoJ2RvY3MnKQotLXN1YmRpcigndGVzdHMnKQotK2lmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpCi0rICAgIHN1YmRpcigndGVzdHMnKQotK2VuZGlmCi0gCi0gaW5zdGFsbF9kYXRhKCdNYWtlZmlsZS5pbnRyb3NwZWN0aW9uJywgaW5zdGFsbF9kaXI6IGpvaW5fcGF0aHMoZ2V0X29wdGlvbignZGF0YWRpcicpLCAnZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCcpKQotIGluc3RhbGxfZGF0YSgnbTQvaW50cm9zcGVjdGlvbi5tNCcsIGluc3RhbGxfZGlyOiBqb2luX3BhdGhzKGdldF9vcHRpb24oJ2RhdGFkaXInKSwgJ2FjbG9jYWwnKSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMy1naXNjYW5uZXItYWRkLXVzZS1iaW5hcnktd3JhcHBlci1vcHRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDMtZ2lzY2FubmVyLWFkZC11c2UtYmluYXJ5LXdyYXBwZXItb3B0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTU0ZGNlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMy1naXNjYW5uZXItYWRkLXVzZS1iaW5hcnktd3JhcHBlci1vcHRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1Gcm9tIDVmOTg1ZmQ4YTI0NzY0Y2NiMzhhZjYzMzVkNDU4NGQ3ZTMzZmMzYTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTkgT2N0IDIwMTUgMTg6MjY6NDAgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ2lzY2FubmVyOiBhZGQgLS11c2UtYmluYXJ5LXdyYXBwZXIgb3B0aW9uCi0KLVdpdGggdGhpcyBvcHRpb24sIGdpc2Nhbm5lciB3aWxsIHVzZSBhIHdyYXBwZXIgZXhlY3V0YWJsZSB0byBydW4KLWJpbmFyaWVzIGl0J3MgcHJvZHVjaW5nLCBpbnN0ZWFkIG9mIHJ1bm5pbmcgdGhlbSBkaXJlY3RseS4gVGhpcwotaXMgdXNlZnVsIHdoZW4gYmluYXJpZXMgYXJlIGNyb3NzLWNvbXBpbGVkIGFuZCBjYW5ub3QgYmUgcnVuIGRpcmVjdGx5LAotYnV0IHRoZXkgY2FuIGJlIHJ1biB1c2luZyBmb3IgZXhhbXBsZSBRRU1VIGVtdWxhdGlvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtyZXZpZXcgb24gb2UtY29yZSBsaXN0XQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIGdpc2Nhbm5lci9zY2FubmVybWFpbi5weSB8IDE0ICsrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weSBiL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQotaW5kZXggYzAwNGZiMS4uMGI2YTJkMiAxMDA2NDQKLS0tLSBhL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQotKysrIGIvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci1AQCAtMTIwLDYgKzEyMCw5IEBAIGRlZiBfZ2V0X29wdGlvbl9wYXJzZXIoKToKLSAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXByb2dyYW0iLAotICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlIiwgZGVzdD0icHJvZ3JhbSIsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0icHJvZ3JhbSB0byBleGVjdXRlIikKLSsgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXVzZS1iaW5hcnktd3JhcHBlciIsCi0rICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJ3cmFwcGVyIiwgZGVmYXVsdD1Ob25lLAotKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJ3cmFwcGVyIHRvIHVzZSBmb3IgcnVubmluZyBwcm9ncmFtcyAodXNlZnVsIHdoZW4gY3Jvc3MtY29tcGlsaW5nKSIpCi0gICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1wcm9ncmFtLWFyZyIsCi0gICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0iYXBwZW5kIiwgZGVzdD0icHJvZ3JhbV9hcmdzIiwgZGVmYXVsdD1bXSwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iZXh0cmEgYXJndW1lbnRzIHRvIHByb2dyYW0iKQotQEAgLTQxNyw2ICs0MjAsMTcgQEAgZGVmIGNyZWF0ZV9iaW5hcnkodHJhbnNmb3JtZXIsIG9wdGlvbnMsIGFyZ3MpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZHVtcF9wYXJzZXIuZ2V0X2Vycm9yX3F1YXJrX2Z1bmN0aW9ucygpKQotIAotICAgICBzaGxpYnMgPSByZXNvbHZlX3NobGlicyhvcHRpb25zLCBiaW5hcnksIG9wdGlvbnMubGlicmFyaWVzKQotKyAgICBpZiBvcHRpb25zLndyYXBwZXI6Ci0rICAgICAgICAjIFRoZSB3cmFwcGVyIG5lZWRzIHRoZSBiaW5hcnkgaXRzZWxmLCBub3QgdGhlIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQsCi0rICAgICAgICAjIHNvIHdlIGNoZWNrIGlmIGxpYnRvb2wgaGFzIHNuZWFrZWQgdGhlIGJpbmFyeSBpbnRvIC5saWJzIHN1YmRpcmVjdG9yeQotKyAgICAgICAgIyBhbmQgYWRqdXN0IHRoZSBwYXRoIGFjY29yZGluZ2x5Ci0rICAgICAgICBpbXBvcnQgb3MucGF0aAotKyAgICAgICAgZGlyX25hbWUsIGJpbmFyeV9uYW1lICA9IG9zLnBhdGguc3BsaXQoYmluYXJ5LmFyZ3NbMF0pCi0rICAgICAgICBsaWJ0b29sX2JpbmFyeSA9IG9zLnBhdGguam9pbihkaXJfbmFtZSwgJy5saWJzJywgYmluYXJ5X25hbWUpCi0rICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhsaWJ0b29sX2JpbmFyeSk6Ci0rICAgICAgICAgICAgYmluYXJ5LmFyZ3NbMF0gPSBsaWJ0b29sX2JpbmFyeQotKwkjIFRoZW4gcHJlcGVuZCB0aGUgd3JhcHBlciB0byB0aGUgY29tbWFuZCBsaW5lIHRvIGV4ZWN1dGUKLSsgICAgICAgIGJpbmFyeS5hcmdzID0gW29wdGlvbnMud3JhcHBlcl0gKyBiaW5hcnkuYXJncwotICAgICBnZHVtcF9wYXJzZXIuc2V0X2ludHJvc3BlY3Rpb25fYmluYXJ5KGJpbmFyeSkKLSAgICAgZ2R1bXBfcGFyc2VyLnBhcnNlKCkKLSAgICAgcmV0dXJuIHNobGlicwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTI2NGVkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwNC1naXNjYW5uZXItYWRkLWEtdXNlLWxkZC13cmFwcGVyLW9wdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gY2JhNzgwNzg4OGE0YTFmMWQ2MzBkMTZjNTFjODk4NTkyMDkzMzRiMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogRnJpLCAzMCBPY3QgMjAxNSAxNjoyODo0NiArMDIwMAotU3ViamVjdDogW1BBVENIXSBnaXNjYW5uZXI6IGFkZCBhIC0tdXNlLWxkZC13cmFwcGVyIG9wdGlvbgotCi1UaGlzIGlzIHVzZWZ1bCBpbiBjcm9zcy1jb21waWxlIGVudmlyb25tZW50cyB3aGVyZSBzeXN0ZW0ncyBsZGQKLWNvbW1hbmQgZG9lcyBub3Qgd29yayBvbiBiaW5hcmllcyBidWlsdCBmb3IgYSBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IGluIG9lLWNvcmVdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLQotLS0tCi0gZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5IHwgMyArKysKLSBnaXNjYW5uZXIvc2hsaWJzLnB5ICAgICAgfCA0ICsrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5IGIvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci1pbmRleCAwYjZhMmQyLi45MDEzNTYyIDEwMDY0NAotLS0tIGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci0rKysgYi9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkKLUBAIC0xMjMsNiArMTIzLDkgQEAgZGVmIF9nZXRfb3B0aW9uX3BhcnNlcigpOgotICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tdXNlLWJpbmFyeS13cmFwcGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9IndyYXBwZXIiLCBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IndyYXBwZXIgdG8gdXNlIGZvciBydW5uaW5nIHByb2dyYW1zICh1c2VmdWwgd2hlbiBjcm9zcy1jb21waWxpbmcpIikKLSsgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXVzZS1sZGQtd3JhcHBlciIsCi0rICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJsZGRfd3JhcHBlciIsIGRlZmF1bHQ9Tm9uZSwKLSsgICAgICAgICAgICAgICAgICAgICAgaGVscD0id3JhcHBlciB0byB1c2UgaW5zdGVhZCBvZiBsZGQgKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZykiKQotICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tcHJvZ3JhbS1hcmciLAotICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249ImFwcGVuZCIsIGRlc3Q9InByb2dyYW1fYXJncyIsIGRlZmF1bHQ9W10sCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImV4dHJhIGFyZ3VtZW50cyB0byBwcm9ncmFtIikKLWRpZmYgLS1naXQgYS9naXNjYW5uZXIvc2hsaWJzLnB5IGIvZ2lzY2FubmVyL3NobGlicy5weQotaW5kZXggMmM2MWYyZi4uZDY3ZGY5NSAxMDA2NDQKLS0tLSBhL2dpc2Nhbm5lci9zaGxpYnMucHkKLSsrKyBiL2dpc2Nhbm5lci9zaGxpYnMucHkKLUBAIC05Niw3ICs5Niw5IEBAIGRlZiBfcmVzb2x2ZV9ub25fbGlidG9vbChvcHRpb25zLCBiaW5hcnksIGxpYnJhcmllcyk6Ci0gICAgICAgICAgICAgYXJncy5leHRlbmQobGlidG9vbCkKLSAgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1tb2RlPWV4ZWN1dGUnKQotICAgICAgICAgcGxhdGZvcm1fc3lzdGVtID0gcGxhdGZvcm0uc3lzdGVtKCkKLS0gICAgICAgIGlmIHBsYXRmb3JtX3N5c3RlbSA9PSAnRGFyd2luJzoKLSsgICAgICAgIGlmIG9wdGlvbnMubGRkX3dyYXBwZXI6Ci0rICAgICAgICAgICAgYXJncy5leHRlbmQoW29wdGlvbnMubGRkX3dyYXBwZXIsIGJpbmFyeS5hcmdzWzBdXSkKLSsgICAgICAgIGVsaWYgcGxhdGZvcm1fc3lzdGVtID09ICdEYXJ3aW4nOgotICAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnb3Rvb2wnLCAnLUwnLCBiaW5hcnkuYXJnc1swXV0pCi0gICAgICAgICBlbHNlOgotICAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnbGRkJywgYmluYXJ5LmFyZ3NbMF1dKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDA1LVByZWZpeC1wa2ctY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTkZJR19TWVNST09UX0RJUi0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZmOGRhNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gNzQwZDkxMTUxZmZlNTc2ZTBjMDg1MTNhZjlkN2JjODEzM2ViOWRmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVGh1LCA4IE9jdCAyMDE1IDE4OjMwOjM1ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFByZWZpeCBwa2ctY29uZmlnIHBhdGhzIHdpdGggUEtHX0NPTkZJR19TWVNST09UX0RJUgotIGVudmlyb25tZW50IHZhcmlhYmxlCi0KLVRoaXMgZW52aXJvbm1lbnQgdmFyaWFibGUgc2V0cyB0aGUgbG9jYXRpb24gb2Ygc3lzcm9vdCBkaXJlY3RvcnkgaW4gY3Jvc3MtY29tcGlsYXRpb24KLWVudmlyb25tZW50czsgaWYgdGhlIHZhcmlhYmxlIGlzIG5vdCBzZXQsIHRoZSBwcmVmaXggd2lsbCBiZSBlbXB0eS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtyZXZpZXcgb24gb2UtY29yZSBsaXN0XQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIG00L2ludHJvc3BlY3Rpb24ubTQgfCA4ICsrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL200L2ludHJvc3BlY3Rpb24ubTQgYi9tNC9pbnRyb3NwZWN0aW9uLm00Ci1pbmRleCBkODljM2Q5Li5iNTYyMjY2IDEwMDY0NAotLS0tIGEvbTQvaW50cm9zcGVjdGlvbi5tNAotKysrIGIvbTQvaW50cm9zcGVjdGlvbi5tNAotQEAgLTU2LDE0ICs1NiwxNCBAQCBtNF9kZWZpbmUoW19HT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0tfSU5URVJOQUxdLAotICAgICBJTlRST1NQRUNUSU9OX0dJUkRJUj0KLSAgICAgSU5UUk9TUEVDVElPTl9UWVBFTElCRElSPQotICAgICBpZiB0ZXN0ICJ4JGZvdW5kX2ludHJvc3BlY3Rpb24iID0gInh5ZXMiOyB0aGVuCi0tICAgICAgIElOVFJPU1BFQ1RJT05fU0NBTk5FUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX3NjYW5uZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLS0gICAgICAgSU5UUk9TUEVDVElPTl9DT01QSUxFUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2NvbXBpbGVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgICAgIElOVFJPU1BFQ1RJT05fR0VORVJBVEU9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9nZW5lcmF0ZSBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotKyAgICAgICBJTlRST1NQRUNUSU9OX1NDQU5ORVI9JFBLR19DT05GSUdfU1lTUk9PVF9ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX3NjYW5uZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSsgICAgICAgSU5UUk9TUEVDVElPTl9DT01QSUxFUj0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfY29tcGlsZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSsgICAgICAgSU5UUk9TUEVDVElPTl9HRU5FUkFURT0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfZ2VuZXJhdGUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSAgICAgICAgSU5UUk9TUEVDVElPTl9HSVJESVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z2lyZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0gICAgICAgIElOVFJPU1BFQ1RJT05fVFlQRUxJQkRJUj0iJCgkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXR5cGVsaWJkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCkiCi0gICAgICAgIElOVFJPU1BFQ1RJT05fQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotICAgICAgICBJTlRST1NQRUNUSU9OX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgICAgICBJTlRST1NQRUNUSU9OX01BS0VGSUxFPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWRhdGFkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uCi0rICAgICAgIElOVFJPU1BFQ1RJT05fTUFLRUZJTEU9JFBLR19DT05GSUdfU1lTUk9PVF9ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1kYXRhZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvTWFrZWZpbGUuaW50cm9zcGVjdGlvbgotICAgICBmaQotICAgICBBQ19TVUJTVChJTlRST1NQRUNUSU9OX1NDQU5ORVIpCi0gICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS42Mi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTczOWNjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS42Mi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjA4ICswLDAgQEAKLVNVTU1BUlkgPSAiTWlkZGxld2FyZSBsYXllciBiZXR3ZWVuIEdPYmplY3QtdXNpbmcgQyBsaWJyYXJpZXMgYW5kIGxhbmd1YWdlIGJpbmRpbmdzIgotREVTQ1JJUFRJT04gPSAiR09iamVjdCBJbnRyb3NwZWN0aW9uIGlzIGEgcHJvamVjdCBmb3IgcHJvdmlkaW5nIG1hY2hpbmUgXAotcmVhZGFibGUgaW50cm9zcGVjdGlvbiBkYXRhIG9mIHRoZSBBUEkgb2YgQyBsaWJyYXJpZXMuIFRoaXMgaW50cm9zcGVjdGlvbiBcCi1kYXRhIGNhbiBiZSB1c2VkIGluIHNldmVyYWwgZGlmZmVyZW50IHVzZSBjYXNlcywgZm9yIGV4YW1wbGUgYXV0b21hdGljIGNvZGUgXAotZ2VuZXJhdGlvbiBmb3IgYmluZGluZ3MsIEFQSSB2ZXJpZmljYXRpb24gYW5kIGRvY3VtZW50YXRpb24gZ2VuZXJhdGlvbi4iCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL2FjdGlvbi9zaG93L1Byb2plY3RzL0dPYmplY3RJbnRyb3NwZWN0aW9uIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2lzc3VlcyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyKyAmIEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM0MzRlODEyOGE2OGJlZGQ1OWI4MGIyYWMxZWIxYzRhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rvb2xzL2NvbXBpbGVyLmM7ZW5kbGluZT0yMDttZDU9ZmM1MDA3ZmMyMDAyMjcyMGU2YzBiMGNkZGU0MWZhYmQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2lzY2FubmVyL3NvdXJjZXNjYW5uZXIuYztlbmRsaW5lPTIyO21kNT0xOTRkNmUwYzFkMDA2NjJmMzJkMDMwY2U0NGRlOGQzOSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naXJlcG9zaXRvcnkvZ2lyZWdpc3RlcmVkdHlwZWluZm8uYztlbmRsaW5lPTIxO21kNT02NjE4NDc2MTFhZTY5Nzk0NjU0MTVmMzFhNzU5YmEyNyBcCi0gICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0vJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWdpc2Nhbm5lci1hZGQtdXNlLWJpbmFyeS13cmFwcGVyLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdpc2Nhbm5lci1hZGQtYS1saWItZGlycy1lbnZ2YXItb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ2lzY2FubmVyLWlnbm9yZS1lcnJvci1yZXR1cm4tY29kZXMtZnJvbS1sZGQtd3JhcHBlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVBvcnQtY3Jvc3MtY29tcGlsYXRpb24tc3VwcG9ydC10by1tZXNvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lc29uLmJ1aWxkLWRpc2FibGUtdGVzdHMtd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzNzI3OGVhYjM3MDRlNDIyMzRiNjA4MGI4Y2YyNDFmMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMWVlN2VkMjU3ZmRiYzAwODcwMmJkZmYwZmYzZTc4YTY2MGU3ZTYwMmVmYThmMjExZGM4OWI5ZDFlN2Q5MGEyIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly8wMDAxLVJlbG9jYXRlLXRoZS1yZXBvc2l0b3J5LWRpcmVjdG9yeS1mb3ItbmF0aXZlLWJ1aWxkcy5wYXRjaCIKLQotaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZ3RrLWRvYyBweXRob24zbmF0aXZlIHFlbXUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIG11bHRpbGliX3NjcmlwdAotCi1HVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCi0KLU1VTFRJTElCX1NDUklQVFMgPSAiJHtQTn06JHtiaW5kaXJ9L2ctaXItYW5ub3RhdGlvbi10b29sICR7UE59OiR7YmluZGlyfS9nLWlyLXNjYW5uZXIiCi0KLURFUEVORFNfYXBwZW5kID0gIiBsaWJmZmkgemxpYiBnbGliLTIuMCBweXRob24zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSBhdXRvY29uZi1hcmNoaXZlIgotCi0jIHRhcmdldCBidWlsZCBuZWVkcyBxZW11IHRvIHJ1biB0ZW1wb3JhcnkgaW50cm9zcGVjdGlvbiBiaW5hcmllcyBjcmVhdGVkCi0jIG9uIHRoZSBmbHkgYnkgZy1pci1zY2FubmVyIGFuZCBhIG5hdGl2ZSB2ZXJzaW9uIG9mIGl0c2VsZiB0byBydW4KLSMgbmF0aXZlIHZlcnNpb25zIG9mIGl0cyBvd24gdG9vbHMgZHVyaW5nIGJ1aWxkLgotIyBBbHNvIHByZWxpbmstcnRsZCBpcyB1c2VkIHRvIGZpbmQgb3V0IGxpYnJhcnkgZGVwZW5kZW5jaWVzIG9mIGludHJvc3BlY3Rpb24gYmluYXJpZXMKLSMgKHN0YW5kYXJkIGxkZCBkb2Vzbid0IHdvcmsgd2hlbiBjcm9zcy1jb21waWxpbmcpLgotREVQRU5EU19jbGFzcy10YXJnZXRfYXBwZW5kID0gIiBnb2JqZWN0LWludHJvc3BlY3Rpb24tbmF0aXZlIHFlbXUtbmF0aXZlIHByZWxpbmstbmF0aXZlIgotCi0jIG5lZWRlZCBmb3Igd3JpdGluZyBvdXQgdGhlIHFlbXUgd3JhcHBlciBzY3JpcHQKLWV4cG9ydCBTVEFHSU5HX0RJUl9IT1NUCi1leHBvcnQgQgotCi1QQUNLQUdFQ09ORklHID89ICIiCi1QQUNLQUdFQ09ORklHW2RvY3Rvb2xdID0gIi1EZG9jdG9vbD10cnVlLC1EZG9jdG9vbD1mYWxzZSxweXRob24zLW1ha28sIgotCi0jIENvbmZpZ3VyZSB0YXJnZXQgYnVpbGQgdG8gdXNlIG5hdGl2ZSB0b29scyBvZiBpdHNlbGYgYW5kIHRvIHVzZSBhIHFlbXUgd3JhcHBlcgotIyBhbmQgb3B0aW9uYWxseSB0byBnZW5lcmF0ZSBpbnRyb3NwZWN0aW9uIGRhdGEKLUVYVFJBX09FTUVTT05fY2xhc3MtdGFyZ2V0ID0gIiBcCi0gICAgLURlbmFibGUtaG9zdC1naT10cnVlIFwKLSAgICAtRGVuYWJsZS1naS1jcm9zcy13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIFwKLSAgICAtRGVuYWJsZS1naS1sZGQtd3JhcHBlcj0ke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIFwKLSAgICAtRHBrZ2NvbmZpZy1zeXNyb290LXBhdGg9JHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy1EZW5hYmxlLWludHJvc3BlY3Rpb24tZGF0YT10cnVlJywgJy1EZW5hYmxlLWludHJvc3BlY3Rpb24tZGF0YT1mYWxzZScsIGQpfSBcCi0gICAgJHtAJy1EZ2lyX2Rpcl9wcmVmaXg9JHtsaWJkaXJ9JyBpZiBkLmdldFZhcignTVVMVElMSUJTJykgZWxzZSAnJ30gXAotIgotCi0jIE5lZWQgdG8gZW5zdXJlIGxkLnNvLmNvbmYgZXhpc3RzIHNvIHByZWxpbmstbmF0aXZlIHdvcmtzCi0jIGJvdGggYmVmb3JlIHdlIGJ1aWxkIGFuZCBpZiB3ZSBpbnN0YWxsIGZyb20gc3N0YXRlCi1kb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICJnb2JqZWN0X2ludHJvc3BlY3Rpb25fcHJlY29uZmlndXJlIgotcHl0aG9uIGdvYmplY3RfaW50cm9zcGVjdGlvbl9wcmVjb25maWd1cmUgKCkgewotICAgIG9lLnV0aWxzLndyaXRlX2xkX3NvX2NvbmYoZCkKLX0KLQotZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgICAgICAjIFR3ZWFrIHRoZSBuYXRpdmUgcHl0aG9uIHNjcmlwdHMgc28gdGhhdCB0aGV5IGRvbid0IHJlZmVyIHRvIHRoZQotICAgICAgICAjIGZ1bGwgcGF0aCBvZiBuYXRpdmUgcHl0aG9uIGJpbmFyeSAodGhlIHNvbHV0aW9uIGlzIHRha2VuIGZyb20gZ2xpYi0yLjAgcmVjaXBlKQotICAgICAgICAjIFRoaXMgcmVtb3ZlcyB0aGUgcmlzayBvZiBleGNlZWRpbmcgTGludXgga2VybmVsJ3Mgc2hlYmFuZyBsaW5lIGxpbWl0ICgxMjggYnl0ZXMpCi0gICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke1N9L3Rvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbgotfQotCi1kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgICAgICMgV3JpdGUgb3V0IGEgcWVtdSB3cmFwcGVyIHRoYXQgd2lsbCBiZSBnaXZlbiB0byBnaS1zY2FubmVyIHNvIHRoYXQgaXQKLSAgICAgICAgIyBjYW4gcnVuIHRhcmdldCBoZWxwZXIgYmluYXJpZXMgdGhyb3VnaCB0aGF0LgotICAgICAgICBxZW11X2JpbmFyeT0iJHtAcWVtdV93cmFwcGVyX2NtZGxpbmUoZCwgJyRTVEFHSU5HX0RJUl9IT1NUJywgWydcXCRHSVJfRVhUUkFfTElCU19QQVRIJywnLmxpYnMnLCckU1RBR0lOR19ESVJfSE9TVC8ke2xpYmRpcn0nLCckU1RBR0lOR19ESVJfSE9TVC8ke2Jhc2VfbGliZGlyfSddKX0iCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0jIFVzZSBhIG1vZHVsZXMgZGlyZWN0b3J5IHdoaWNoIGRvZXNuJ3QgZXhpc3Qgc28gd2UgZG9uJ3QgbG9hZCByYW5kb20gdGhpbmdzCi0jIHdoaWNoIG1heSB0aGVuIGdldCBkZWxldGVkIChvciB0aGVpciBkZXBlbmRlbmNpZXMpIGFuZCBwb3RlbnRpYWxseSBzZWdmYXVsdAotZXhwb3J0IEdJT19NT0RVTEVfRElSPSR7U1RBR0lOR19MSUJESVJ9L2dpby9tb2R1bGVzLWR1bW15Ci0KLSRxZW11X2JpbmFyeSAiXCRAIgotaWYgWyBcJD8gLW5lIDAgXTsgdGhlbgotICAgIGVjaG8gIklmIHRoZSBhYm92ZSBlcnJvciBtZXNzYWdlIGlzIGFib3V0IG1pc3NpbmcgLnNvIGxpYnJhcmllcywgdGhlbiBzZXR0aW5nIHVwIEdJUl9FWFRSQV9MSUJTX1BBVEggaW4gdGhlIHJlY2lwZSBzaG91bGQgaGVscC4iCi0gICAgZWNobyAiKHR5cGljYWxseSBsaWtlIHRoaXM6IEdJUl9FWFRSQV9MSUJTX1BBVEg9XCIkIiJ7Qn0vc29tZXRoaW5nLy5saWJzXCIgKSIKLSAgICBleGl0IDEKLWZpCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIKLQotICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgZm9yIGctaXItc2Nhbm5lciBpdHNlbGYsIHdoaWNoIHdpbGwgYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMKLSAgICAgICAgIyBmb3IgZ2xpYi1iYXNlZCBwYWNrYWdlcy4gVGhpcyB3cmFwcGVyIGNhbGxzIHRoZSBuYXRpdmUgdmVyc2lvbiBvZiB0aGUgc2Nhbm5lciwgYW5kIHRlbGxzIGl0IHRvIHVzZQotICAgICAgICAjIGEgcWVtdSB3cmFwcGVyIGZvciBydW5uaW5nIHRyYW5zaWVudCB0YXJnZXQgYmluYXJpZXMgcHJvZHVjZWQgYnkgdGhlIHNjYW5uZXIsIGFuZCBhbiBpbmNsdWRlIGRpcmVjdG9yeQotICAgICAgICAjIGZyb20gdGhlIHRhcmdldCBzeXNyb290LgotICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0jIFRoaXMgcHJldmVudHMgZy1pci1zY2FubmVyIGZyb20gd3JpdGluZyBjYWNoZSBkYXRhIHRvICRIT01FCi1leHBvcnQgR0lfU0NBTk5FUl9ESVNBQkxFX0NBQ0hFPTEKLQotZy1pci1zY2FubmVyIC0tbGliLWRpcnMtZW52dmFyPUdJUl9FWFRSQV9MSUJTX1BBVEggLS11c2UtYmluYXJ5LXdyYXBwZXI9JHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIC0tdXNlLWxkZC13cmFwcGVyPSR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIC0tYWRkLWluY2x1ZGUtcGF0aD0ke1NUQUdJTkdfREFUQURJUn0vZ2lyLTEuMCAtLWFkZC1pbmNsdWRlLXBhdGg9JHtTVEFHSU5HX0xJQkRJUn0vZ2lyLTEuMCAiXCRAIgotRU9GCi0gICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1zY2FubmVyLXdyYXBwZXIKLQotICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgZm9yIGctaXItY29tcGlsZXIsIHdoaWNoIHJ1bnMgdGhlIHRhcmdldCB2ZXJzaW9uIG9mIGl0IHRocm91Z2ggcWVtdS4KLSAgICAgICAgIyBnLWlyLWNvbXBpbGVyIHdyaXRlcyBvdXQgdGhlIHJhdyBjb250ZW50IG9mIGEgQyBzdHJ1Y3QgdG8gZGlzaywgYW5kIHRoZXJlZm9yZSBpcyBhcmNoaXRlY3R1cmUgZGVwZW5kZW50LgotICAgICAgICBjYXQgPiAke0J9L2ctaXItY29tcGlsZXItd3JhcHBlciA8PCBFT0YKLSMhL2Jpbi9zaAotJHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyICR7U1RBR0lOR19CSU5ESVJ9L2ctaXItY29tcGlsZXIgIlwkQCIKLUVPRgotICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItY29tcGlsZXItd3JhcHBlcgotCi0gICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciB0byB1c2UgaW5zdGVhZCBvZiBsZGQsIHdoaWNoIGRvZXMgbm90IHdvcmsgd2hlbiBhIGJpbmFyeSBpcyBidWlsdAotICAgICAgICAjIGZvciBhIGRpZmZlcmVudCBhcmNoaXRlY3R1cmUKLSAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciA8PCBFT0YKLSMhL2Jpbi9zaAotcHJlbGluay1ydGxkIC0tcm9vdD0kU1RBR0lOR19ESVJfSE9TVCAiXCRAIgotRU9GCi0gICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIKLQotICAgICAgICAjIEFsc28gdHdlYWsgdGhlIHRhcmdldCBweXRob24gc2NyaXB0cyBzbyB0aGF0IHRoZXkgZG9uJ3QgcmVmZXIgdG8gdGhlCi0gICAgICAgICMgbmF0aXZlIHZlcnNpb24gb2YgcHl0aG9uIGJpbmFyeSAodGhlIHNvbHV0aW9uIGlzIHRha2VuIGZyb20gZ2xpYi0yLjAgcmVjaXBlKQotICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCcgJHtTfS90b29scy9nLWlyLXRvb2wtdGVtcGxhdGUuaW4KLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICAgICAjIFRoaXMgcHJldmVudHMgZy1pci1zY2FubmVyIGZyb20gd3JpdGluZyBjYWNoZSBkYXRhIHRvICRIT01FCi0gICAgICAgIGV4cG9ydCBHSV9TQ0FOTkVSX0RJU0FCTEVfQ0FDSEU9MQotCi0gICAgICAgICMgTmVlZGVkIHRvIHJ1biBnLWlyIHVuaXQgdGVzdHMsIHdoaWNoIHdvbid0IGJlIGFibGUgdG8gZmluZCB0aGUgYnVpbHQgbGlicmFyaWVzIG90aGVyd2lzZQotICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0kQi8ubGlicwotfQotCi0jIE91ciB3cmFwcGVycyBuZWVkIHRvIGJlIGF2YWlsYWJsZSBzeXN0ZW0td2lkZSwgYmVjYXVzZSB0aGV5IHdpbGwgYmUgdXNlZAotIyB0byBidWlsZCBpbnRyb3NwZWN0aW9uIGZpbGVzIGZvciBhbGwgb3RoZXIgZ29iamVjdC1iYXNlZCBwYWNrYWdlcwotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyICR7RH0ke2JpbmRpcn0vCi19Ci0KLSMgd2UgbmVlZCB0YXJnZXQgdmVyc2lvbnMgb2YgaW50cm9zcGVjdGlvbiB0b29scyBpbiBzeXNyb290IHNvIHRoYXQgdGhleSBjYW4gYmUgcnVuIHZpYSBxZW11Ci0jIHdoZW4gYnVpbGRpbmcgaW50cm9zcGVjdGlvbiBmaWxlcyBpbiBvdGhlciBwYWNrYWdlcwotU1lTUk9PVF9ESVJTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7YmluZGlyfSIKLQotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGdpX2JpbmFyaWVzX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLWdpX2JpbmFyaWVzX3N5c3Jvb3RfcHJlcHJvY2VzcygpIHsKLSAgICAgICAgIyBUd2VhayB0aGUgYmluYXJ5IG5hbWVzIGluIHRoZSBpbnRyb3NwZWN0aW9uIHBrZ2NvbmZpZyBmaWxlLCBzbyB0aGF0IGl0Ci0gICAgICAgICMgcGlja3MgdXAgb3VyIHdyYXBwZXJzIHdoaWNoIGRvIHRoZSBjcm9zcy1jb21waWxlIGFuZCBxZW11IG1hZ2ljLgotICAgICAgICBzZWQgLWkgXAotICAgICAgICAgICAtZSAic3xnX2lyX3NjYW5uZXI9Lip8Z19pcl9zY2FubmVyPSR7YmluZGlyfS9nLWlyLXNjYW5uZXItd3JhcHBlcnwiIFwKLSAgICAgICAgICAgLWUgInN8Z19pcl9jb21waWxlcj0uKnxnX2lyX2NvbXBpbGVyPSR7YmluZGlyfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXJ8IiBcCi0gICAgICAgICAgICR7U1lTUk9PVF9ERVNURElSfSR7bGliZGlyfS9wa2djb25maWcvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC5wYwotfQotCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kID0gIiBnaV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MiCi1naV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MgKCkgewotCW1rZGlyIC1wICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfQotCWRlc3Q9JHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9L3Bvc3RpbnN0LWxkc29jb25mLSR7UE59Ci0JZWNobyAiIyEvYmluL3NoIiA+ICRkZXN0Ci0JZWNobyAibWtkaXIgLXAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfSIgPj4gJGRlc3QKLQllY2hvICJlY2hvICR7YmFzZV9saWJkaXJ9ID4+ICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZiIgPj4gJGRlc3QKLQllY2hvICJlY2hvICR7bGliZGlyfSA+PiAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYiID4+ICRkZXN0Ci0JY2htb2QgNzU1ICRkZXN0Ci19Ci0KLSMgUmVtb3ZlIHdyYXBwZXIgZmlsZXMgZnJvbSB0aGUgcGFja2FnZSwgb25seSB1c2VkIGZvciBjcm9zcy1jb21waWxpbmcKLVBBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAiZ2lfcGFja2FnZV9wcmVwcm9jZXNzIgotZ2lfcGFja2FnZV9wcmVwcm9jZXNzKCkgewotCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyCi0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItd3JhcHBlcgotCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1jb21waWxlci13cmFwcGVyCi0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlcgotfQotCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIGctaXItc2Nhbm5lci13cmFwcGVyIGctaXItY29tcGlsZXItd3JhcHBlciBnLWlyLXNjYW5uZXItbGRkd3JhcHBlciBHaW8tMi4wLmdpciBwb3N0aW5zdC1sZHNvY29uZi0ke1BOfSIKLQotIyAudHlwZWxpYiBmaWxlcyBhcmUgbmVlZGVkIGF0IHJ1bnRpbWUgYW5kIHNvIHRoZXkgZ28gdG8gdGhlIG1haW4gcGFja2FnZQotRklMRVNfJHtQTn1fYXBwZW5kID0gIiAke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LSovKi50eXBlbGliIgotCi0jIC5naXIgZmlsZXMgZ28gdG8gZGV2IHBhY2thZ2UsIGFzIHRoZXkncmUgbmVlZGVkIGZvciBkZXZlbG9waW5nIChidXQgbm90IGZvciBydW5uaW5nKQotIyB0aGluZ3MgdGhhdCBkZXBlbmRzIG9uIGludHJvc3BlY3Rpb24uCi1GSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dpci0qLyouZ2lyICR7bGliZGlyfS9naXItKi8qLmdpciIKLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ2lyLSovKi5ybmMiCi0KLSMgVGhlc2UgYXJlIHVzZWQgYnkgZ29iamVjdC1iYXNlZCBwYWNrYWdlcwotIyB0byBnZW5lcmF0ZSB0cmFuc2llbnQgaW50cm9zcGVjdGlvbiBiaW5hcmllcwotRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL2dkdW1wLmMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL01ha2VmaWxlLmludHJvc3BlY3Rpb24iCi0KLSMgVGhlc2UgYXJlIHVzZWQgYnkgZGVwZW5kZW50IHBhY2thZ2VzIChlLmcuIHB5Z29iamVjdCkgdG8gYnVpbGQgdGhlaXIKLSMgdGVzdHN1aXRlcy4KLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC90ZXN0cy8qLmMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL3Rlc3RzLyouaCIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dpc2Nhbm5lci8uZGVidWcvIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dpc2Nhbm5lci8qLmEiCi0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtcGlja2xlIHB5dGhvbjMteG1sIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS42NC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbl8xLjY0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRmYjU1ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS42NC4xLmJiCkBAIC0wLDAgKzEsMjAyIEBACitTVU1NQVJZID0gIk1pZGRsZXdhcmUgbGF5ZXIgYmV0d2VlbiBHT2JqZWN0LXVzaW5nIEMgbGlicmFyaWVzIGFuZCBsYW5ndWFnZSBiaW5kaW5ncyIKK0RFU0NSSVBUSU9OID0gIkdPYmplY3QgSW50cm9zcGVjdGlvbiBpcyBhIHByb2plY3QgZm9yIHByb3ZpZGluZyBtYWNoaW5lIFwKK3JlYWRhYmxlIGludHJvc3BlY3Rpb24gZGF0YSBvZiB0aGUgQVBJIG9mIEMgbGlicmFyaWVzLiBUaGlzIGludHJvc3BlY3Rpb24gXAorZGF0YSBjYW4gYmUgdXNlZCBpbiBzZXZlcmFsIGRpZmZlcmVudCB1c2UgY2FzZXMsIGZvciBleGFtcGxlIGF1dG9tYXRpYyBjb2RlIFwKK2dlbmVyYXRpb24gZm9yIGJpbmRpbmdzLCBBUEkgdmVyaWZpY2F0aW9uIGFuZCBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9hY3Rpb24vc2hvdy9Qcm9qZWN0cy9HT2JqZWN0SW50cm9zcGVjdGlvbiIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dvYmplY3QtaW50cm9zcGVjdGlvbi9pc3N1ZXMiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2MisgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNDM0ZTgxMjhhNjhiZWRkNTliODBiMmFjMWViMWM0YSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90b29scy9jb21waWxlci5jO2VuZGxpbmU9MjA7bWQ1PWZjNTAwN2ZjMjAwMjI3MjBlNmMwYjBjZGRlNDFmYWJkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dpc2Nhbm5lci9zb3VyY2VzY2FubmVyLmM7ZW5kbGluZT0yMjttZDU9MTk0ZDZlMGMxZDAwNjYyZjMyZDAzMGNlNDRkZThkMzkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2lyZXBvc2l0b3J5L2dpcmVnaXN0ZXJlZHR5cGVpbmZvLmM7ZW5kbGluZT0yMTttZDU9NjYxODQ3NjExYWU2OTc5NDY1NDE1ZjMxYTc1OWJhMjcgXAorICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1naXNjYW5uZXItaWdub3JlLWVycm9yLXJldHVybi1jb2Rlcy1mcm9tLWxkZC13cmFwcGVyLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzQxOWRmZDA4NmVmY2Y4Mzc2OGUwNTc5YWI2YWJkMmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODBiZWFlNjcyOGMxMzQ1MjE5MjZhZmZmZjliMmU5NzEyNTc0OWIzOGQzODc0NGRjOTAxZjQwMTBlZTNlN2ZhNyIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vMDAwMS1SZWxvY2F0ZS10aGUtcmVwb3NpdG9yeS1kaXJlY3RvcnktZm9yLW5hdGl2ZS1idWlsZHMucGF0Y2giCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIGd0ay1kb2MgcHl0aG9uM25hdGl2ZSBxZW11IGdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBtdWx0aWxpYl9zY3JpcHQKKworR1RLRE9DX01FU09OX09QVElPTiA9ICJndGtfZG9jIgorCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59OiR7YmluZGlyfS9nLWlyLWFubm90YXRpb24tdG9vbCAke1BOfToke2JpbmRpcn0vZy1pci1zY2FubmVyIgorCitERVBFTkRTX2FwcGVuZCA9ICIgbGliZmZpIHpsaWIgZ2xpYi0yLjAgcHl0aG9uMyBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgYXV0b2NvbmYtYXJjaGl2ZSIKKworIyB0YXJnZXQgYnVpbGQgbmVlZHMgcWVtdSB0byBydW4gdGVtcG9yYXJ5IGludHJvc3BlY3Rpb24gYmluYXJpZXMgY3JlYXRlZAorIyBvbiB0aGUgZmx5IGJ5IGctaXItc2Nhbm5lciBhbmQgYSBuYXRpdmUgdmVyc2lvbiBvZiBpdHNlbGYgdG8gcnVuCisjIG5hdGl2ZSB2ZXJzaW9ucyBvZiBpdHMgb3duIHRvb2xzIGR1cmluZyBidWlsZC4KKyMgQWxzbyBwcmVsaW5rLXJ0bGQgaXMgdXNlZCB0byBmaW5kIG91dCBsaWJyYXJ5IGRlcGVuZGVuY2llcyBvZiBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzCisjIChzdGFuZGFyZCBsZGQgZG9lc24ndCB3b3JrIHdoZW4gY3Jvc3MtY29tcGlsaW5nKS4KK0RFUEVORFNfY2xhc3MtdGFyZ2V0X2FwcGVuZCA9ICIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5hdGl2ZSBxZW11LW5hdGl2ZSBwcmVsaW5rLW5hdGl2ZSIKKworIyBuZWVkZWQgZm9yIHdyaXRpbmcgb3V0IHRoZSBxZW11IHdyYXBwZXIgc2NyaXB0CitleHBvcnQgU1RBR0lOR19ESVJfSE9TVAorZXhwb3J0IEIKKworUEFDS0FHRUNPTkZJRyA/PSAiIgorUEFDS0FHRUNPTkZJR1tkb2N0b29sXSA9ICItRGRvY3Rvb2w9ZW5hYmxlZCwtRGRvY3Rvb2w9ZGlzYWJsZWQscHl0aG9uMy1tYWtvLCIKKworIyBDb25maWd1cmUgdGFyZ2V0IGJ1aWxkIHRvIHVzZSBuYXRpdmUgdG9vbHMgb2YgaXRzZWxmIGFuZCB0byB1c2UgYSBxZW11IHdyYXBwZXIKKyMgYW5kIG9wdGlvbmFsbHkgdG8gZ2VuZXJhdGUgaW50cm9zcGVjdGlvbiBkYXRhCitFWFRSQV9PRU1FU09OX2NsYXNzLXRhcmdldCA9ICIgXAorICAgIC1EZ2lfY3Jvc3NfdXNlX2hvc3RfZ2k9dHJ1ZSBcCisgICAgLURnaV9jcm9zc19iaW5hcnlfd3JhcHBlcj0ke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciBcCisgICAgLURnaV9jcm9zc19sZGRfd3JhcHBlcj0ke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIFwKKyAgICAtRGdpX2Nyb3NzX3BrZ2NvbmZpZ19zeXNyb290X3BhdGg9JHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy1EYnVpbGRfaW50cm9zcGVjdGlvbl9kYXRhPXRydWUnLCAnLURidWlsZF9pbnRyb3NwZWN0aW9uX2RhdGE9ZmFsc2UnLCBkKX0gXAorICAgICR7QCctRGdpcl9kaXJfcHJlZml4PSR7bGliZGlyfScgaWYgZC5nZXRWYXIoJ01VTFRJTElCUycpIGVsc2UgJyd9IFwKKyIKKworIyBOZWVkIHRvIGVuc3VyZSBsZC5zby5jb25mIGV4aXN0cyBzbyBwcmVsaW5rLW5hdGl2ZSB3b3JrcworIyBib3RoIGJlZm9yZSB3ZSBidWlsZCBhbmQgaWYgd2UgaW5zdGFsbCBmcm9tIHNzdGF0ZQorZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiZ29iamVjdF9pbnRyb3NwZWN0aW9uX3ByZWNvbmZpZ3VyZSIKK3B5dGhvbiBnb2JqZWN0X2ludHJvc3BlY3Rpb25fcHJlY29uZmlndXJlICgpIHsKKyAgICBvZS51dGlscy53cml0ZV9sZF9zb19jb25mKGQpCit9CisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICAgICAgIyBUd2VhayB0aGUgbmF0aXZlIHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKKyAgICAgICAgIyBmdWxsIHBhdGggb2YgbmF0aXZlIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKKyAgICAgICAgIyBUaGlzIHJlbW92ZXMgdGhlIHJpc2sgb2YgZXhjZWVkaW5nIExpbnV4IGtlcm5lbCdzIHNoZWJhbmcgbGluZSBsaW1pdCAoMTI4IGJ5dGVzKQorICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCcgJHtTfS90b29scy9nLWlyLXRvb2wtdGVtcGxhdGUuaW4KK30KKworZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICAgICAjIFdyaXRlIG91dCBhIHFlbXUgd3JhcHBlciB0aGF0IHdpbGwgYmUgZ2l2ZW4gdG8gZ2ktc2Nhbm5lciBzbyB0aGF0IGl0CisgICAgICAgICMgY2FuIHJ1biB0YXJnZXQgaGVscGVyIGJpbmFyaWVzIHRocm91Z2ggdGhhdC4KKyAgICAgICAgcWVtdV9iaW5hcnk9IiR7QHFlbXVfd3JhcHBlcl9jbWRsaW5lKGQsICckU1RBR0lOR19ESVJfSE9TVCcsIFsnXFwkR0lSX0VYVFJBX0xJQlNfUEFUSCcsJy5saWJzJywnJFNUQUdJTkdfRElSX0hPU1QvJHtsaWJkaXJ9JywnJFNUQUdJTkdfRElSX0hPU1QvJHtiYXNlX2xpYmRpcn0nXSl9IgorICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciA8PCBFT0YKKyMhL2Jpbi9zaAorIyBVc2UgYSBtb2R1bGVzIGRpcmVjdG9yeSB3aGljaCBkb2Vzbid0IGV4aXN0IHNvIHdlIGRvbid0IGxvYWQgcmFuZG9tIHRoaW5ncworIyB3aGljaCBtYXkgdGhlbiBnZXQgZGVsZXRlZCAob3IgdGhlaXIgZGVwZW5kZW5jaWVzKSBhbmQgcG90ZW50aWFsbHkgc2VnZmF1bHQKK2V4cG9ydCBHSU9fTU9EVUxFX0RJUj0ke1NUQUdJTkdfTElCRElSfS9naW8vbW9kdWxlcy1kdW1teQorCiskcWVtdV9iaW5hcnkgIlwkQCIKK2lmIFsgXCQ/IC1uZSAwIF07IHRoZW4KKyAgICBlY2hvICJJZiB0aGUgYWJvdmUgZXJyb3IgbWVzc2FnZSBpcyBhYm91dCBtaXNzaW5nIC5zbyBsaWJyYXJpZXMsIHRoZW4gc2V0dGluZyB1cCBHSVJfRVhUUkFfTElCU19QQVRIIGluIHRoZSByZWNpcGUgc2hvdWxkIGhlbHAuIgorICAgIGVjaG8gIih0eXBpY2FsbHkgbGlrZSB0aGlzOiBHSVJfRVhUUkFfTElCU19QQVRIPVwiJCIie0J9L3NvbWV0aGluZy8ubGlic1wiICkiCisgICAgZXhpdCAxCitmaQorRU9GCisgICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyCisKKyAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLXNjYW5uZXIgaXRzZWxmLCB3aGljaCB3aWxsIGJlIHVzZWQgd2hlbiBidWlsZGluZyBpbnRyb3NwZWN0aW9uIGZpbGVzCisgICAgICAgICMgZm9yIGdsaWItYmFzZWQgcGFja2FnZXMuIFRoaXMgd3JhcHBlciBjYWxscyB0aGUgbmF0aXZlIHZlcnNpb24gb2YgdGhlIHNjYW5uZXIsIGFuZCB0ZWxscyBpdCB0byB1c2UKKyAgICAgICAgIyBhIHFlbXUgd3JhcHBlciBmb3IgcnVubmluZyB0cmFuc2llbnQgdGFyZ2V0IGJpbmFyaWVzIHByb2R1Y2VkIGJ5IHRoZSBzY2FubmVyLCBhbmQgYW4gaW5jbHVkZSBkaXJlY3RvcnkKKyAgICAgICAgIyBmcm9tIHRoZSB0YXJnZXQgc3lzcm9vdC4KKyAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciA8PCBFT0YKKyMhL2Jpbi9zaAorIyBUaGlzIHByZXZlbnRzIGctaXItc2Nhbm5lciBmcm9tIHdyaXRpbmcgY2FjaGUgZGF0YSB0byAkSE9NRQorZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCisKK2ctaXItc2Nhbm5lciAtLWxpYi1kaXJzLWVudnZhcj1HSVJfRVhUUkFfTElCU19QQVRIIC0tdXNlLWJpbmFyeS13cmFwcGVyPSR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAtLXVzZS1sZGQtd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAtLWFkZC1pbmNsdWRlLXBhdGg9JHtTVEFHSU5HX0RBVEFESVJ9L2dpci0xLjAgLS1hZGQtaW5jbHVkZS1wYXRoPSR7U1RBR0lOR19MSUJESVJ9L2dpci0xLjAgIlwkQCIKK0VPRgorICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyCisKKyAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLWNvbXBpbGVyLCB3aGljaCBydW5zIHRoZSB0YXJnZXQgdmVyc2lvbiBvZiBpdCB0aHJvdWdoIHFlbXUuCisgICAgICAgICMgZy1pci1jb21waWxlciB3cml0ZXMgb3V0IHRoZSByYXcgY29udGVudCBvZiBhIEMgc3RydWN0IHRvIGRpc2ssIGFuZCB0aGVyZWZvcmUgaXMgYXJjaGl0ZWN0dXJlIGRlcGVuZGVudC4KKyAgICAgICAgY2F0ID4gJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKKyR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAke1NUQUdJTkdfQklORElSfS9nLWlyLWNvbXBpbGVyICJcJEAiCitFT0YKKyAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIKKworICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgdG8gdXNlIGluc3RlYWQgb2YgbGRkLCB3aGljaCBkb2VzIG5vdCB3b3JrIHdoZW4gYSBiaW5hcnkgaXMgYnVpbHQKKyAgICAgICAgIyBmb3IgYSBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlCisgICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKK3ByZWxpbmstcnRsZCAtLXJvb3Q9JFNUQUdJTkdfRElSX0hPU1QgIlwkQCIKK0VPRgorICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyCisKKyAgICAgICAgIyBBbHNvIHR3ZWFrIHRoZSB0YXJnZXQgcHl0aG9uIHNjcmlwdHMgc28gdGhhdCB0aGV5IGRvbid0IHJlZmVyIHRvIHRoZQorICAgICAgICAjIG5hdGl2ZSB2ZXJzaW9uIG9mIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAgICAgIyBUaGlzIHByZXZlbnRzIGctaXItc2Nhbm5lciBmcm9tIHdyaXRpbmcgY2FjaGUgZGF0YSB0byAkSE9NRQorICAgICAgICBleHBvcnQgR0lfU0NBTk5FUl9ESVNBQkxFX0NBQ0hFPTEKKworICAgICAgICAjIE5lZWRlZCB0byBydW4gZy1pciB1bml0IHRlc3RzLCB3aGljaCB3b24ndCBiZSBhYmxlIHRvIGZpbmQgdGhlIGJ1aWx0IGxpYnJhcmllcyBvdGhlcndpc2UKKyAgICAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9JEIvLmxpYnMKK30KKworIyBPdXIgd3JhcHBlcnMgbmVlZCB0byBiZSBhdmFpbGFibGUgc3lzdGVtLXdpZGUsIGJlY2F1c2UgdGhleSB3aWxsIGJlIHVzZWQKKyMgdG8gYnVpbGQgaW50cm9zcGVjdGlvbiBmaWxlcyBmb3IgYWxsIG90aGVyIGdvYmplY3QtYmFzZWQgcGFja2FnZXMKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAke0R9JHtiaW5kaXJ9LworfQorCisjIHdlIG5lZWQgdGFyZ2V0IHZlcnNpb25zIG9mIGludHJvc3BlY3Rpb24gdG9vbHMgaW4gc3lzcm9vdCBzbyB0aGF0IHRoZXkgY2FuIGJlIHJ1biB2aWEgcWVtdQorIyB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMgaW4gb3RoZXIgcGFja2FnZXMKK1NZU1JPT1RfRElSU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke2JpbmRpcn0iCisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBnaV9iaW5hcmllc19zeXNyb290X3ByZXByb2Nlc3MiCitnaV9iaW5hcmllc19zeXNyb290X3ByZXByb2Nlc3MoKSB7CisgICAgICAgICMgVHdlYWsgdGhlIGJpbmFyeSBuYW1lcyBpbiB0aGUgaW50cm9zcGVjdGlvbiBwa2djb25maWcgZmlsZSwgc28gdGhhdCBpdAorICAgICAgICAjIHBpY2tzIHVwIG91ciB3cmFwcGVycyB3aGljaCBkbyB0aGUgY3Jvc3MtY29tcGlsZSBhbmQgcWVtdSBtYWdpYy4KKyAgICAgICAgc2VkIC1pIFwKKyAgICAgICAgICAgLWUgInN8Z19pcl9zY2FubmVyPS4qfGdfaXJfc2Nhbm5lcj0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXdyYXBwZXJ8IiBcCisgICAgICAgICAgIC1lICJzfGdfaXJfY29tcGlsZXI9Lip8Z19pcl9jb21waWxlcj0ke2JpbmRpcn0vZy1pci1jb21waWxlci13cmFwcGVyfCIgXAorICAgICAgICAgICAke1NZU1JPT1RfREVTVERJUn0ke2xpYmRpcn0vcGtnY29uZmlnL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAucGMKK30KKworU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2FwcGVuZCA9ICIgZ2lfbGRzb2NvbmZfc3lzcm9vdF9wcmVwcm9jZXNzIgorZ2lfbGRzb2NvbmZfc3lzcm9vdF9wcmVwcm9jZXNzICgpIHsKKwlta2RpciAtcCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0KKwlkZXN0PSR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfS9wb3N0aW5zdC1sZHNvY29uZi0ke1BOfQorCWVjaG8gIiMhL2Jpbi9zaCIgPiAkZGVzdAorCWVjaG8gIm1rZGlyIC1wICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0iID4+ICRkZXN0CisJZWNobyAiZWNobyAke2Jhc2VfbGliZGlyfSA+PiAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYiID4+ICRkZXN0CisJZWNobyAiZWNobyAke2xpYmRpcn0gPj4gJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfS9sZC5zby5jb25mIiA+PiAkZGVzdAorCWNobW9kIDc1NSAkZGVzdAorfQorCisjIFJlbW92ZSB3cmFwcGVyIGZpbGVzIGZyb20gdGhlIHBhY2thZ2UsIG9ubHkgdXNlZCBmb3IgY3Jvc3MtY29tcGlsaW5nCitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gImdpX3BhY2thZ2VfcHJlcHJvY2VzcyIKK2dpX3BhY2thZ2VfcHJlcHJvY2VzcygpIHsKKwlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlcgorCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXdyYXBwZXIKKwlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItY29tcGlsZXItd3JhcHBlcgorCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIKK30KKworU1NUQVRFX1NDQU5fRklMRVMgKz0gImctaXItc2Nhbm5lci1xZW11d3JhcHBlciBnLWlyLXNjYW5uZXItd3JhcHBlciBnLWlyLWNvbXBpbGVyLXdyYXBwZXIgZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgR2lvLTIuMC5naXIgcG9zdGluc3QtbGRzb2NvbmYtJHtQTn0iCisKKyMgLnR5cGVsaWIgZmlsZXMgYXJlIG5lZWRlZCBhdCBydW50aW1lIGFuZCBzbyB0aGV5IGdvIHRvIHRoZSBtYWluIHBhY2thZ2UKK0ZJTEVTXyR7UE59X2FwcGVuZCA9ICIgJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0qLyoudHlwZWxpYiIKKworIyAuZ2lyIGZpbGVzIGdvIHRvIGRldiBwYWNrYWdlLCBhcyB0aGV5J3JlIG5lZWRlZCBmb3IgZGV2ZWxvcGluZyAoYnV0IG5vdCBmb3IgcnVubmluZykKKyMgdGhpbmdzIHRoYXQgZGVwZW5kcyBvbiBpbnRyb3NwZWN0aW9uLgorRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9naXItKi8qLmdpciAke2xpYmRpcn0vZ2lyLSovKi5naXIiCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dpci0qLyoucm5jIgorCisjIFRoZXNlIGFyZSB1c2VkIGJ5IGdvYmplY3QtYmFzZWQgcGFja2FnZXMKKyMgdG8gZ2VuZXJhdGUgdHJhbnNpZW50IGludHJvc3BlY3Rpb24gYmluYXJpZXMKK0ZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9nZHVtcC5jIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uIgorCisjIFRoZXNlIGFyZSB1c2VkIGJ5IGRlcGVuZGVudCBwYWNrYWdlcyAoZS5nLiBweWdvYmplY3QpIHRvIGJ1aWxkIHRoZWlyCisjIHRlc3RzdWl0ZXMuCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvdGVzdHMvKi5jIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC90ZXN0cy8qLmgiCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi9naXNjYW5uZXIvLmRlYnVnLyIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi9naXNjYW5uZXIvKi5hIgorCitSREVQRU5EU18ke1BOfSA9ICJweXRob24zLXBpY2tsZSBweXRob24zLXhtbCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXNfMy4zNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMzQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWVhNTc4Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXNfMy4zNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJHTk9NRSBkZXNrdG9wLXdpZGUgR1NldHRpbmdzIHNjaGVtYXMiCi1ERVNDUklQVElPTiA9ICJHU2V0dGluZ3MgZGVza3RvcC13aWRlIHNjaGVtYXMgY29udGFpbnMgYSBjb2xsZWN0aW9uIG9mIFwKLUdTZXR0aW5ncyBzY2hlbWFzIGZvciBzZXR0aW5ncyBzaGFyZWQgYnkgdmFyaW91cyBjb21wb25lbnRzIG9mIGEgZGVza3RvcC4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvaXNzdWVzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAiCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi0KLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiOTc1OWVmNTNmYjJlNTNmYzhkMTkxOTBlNThmMmMzMzIiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIyODhiMDQyNjBmNzA0MGIwZTAwNGE4ZDU5Yzc3M2NmYjRlMzJkZjRmMWI0YTBmOWQ3MDVjNTFhZmNjYzk1ZWFkIgotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRG8tbm90LXNraXAtZ2lyLWluc3RhbGxhdGlvbi1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMzYuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjM2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY4MTc1ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjM2LjAuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJHTk9NRSBkZXNrdG9wLXdpZGUgR1NldHRpbmdzIHNjaGVtYXMiCitERVNDUklQVElPTiA9ICJHU2V0dGluZ3MgZGVza3RvcC13aWRlIHNjaGVtYXMgY29udGFpbnMgYSBjb2xsZWN0aW9uIG9mIFwKK0dTZXR0aW5ncyBzY2hlbWFzIGZvciBzZXR0aW5ncyBzaGFyZWQgYnkgdmFyaW91cyBjb21wb25lbnRzIG9mIGEgZGVza3RvcC4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvaXNzdWVzIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCisKK2luaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNjk3ZGI5ZTZiMmFlMDU4ZjhhMGQwYjAyM2UzMmNlYWMiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI3NjRhYjY4MzI4NjUzNjMyNDUzM2E1OGQ0ZTk1ZmM1N2Y4MWFkYWJhN2Q4ODBkZDBlYmJiY2VkNjNlOTYwZWE2IgorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRG8tbm90LXNraXAtZ2lyLWluc3RhbGxhdGlvbi1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLmluYwppbmRleCBlMWYxZTBkLi41ZDFmNTllIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLmluYwpAQCAtMzcsNyArMzcsNiBAQAogICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ2xpYnRlc3QgXAogICAgICAgICAgICAgICAgICAtLWRpc2FibGUteGluZXJhbWEgXAogICAgICAgICAgICAgICAgICAtLWVuYWJsZS1tb2R1bGVzIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWNvbG9yZCBcCiAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAieDExIiwgIiIsICItLWRpc2FibGUtZ3RrLWRvYyIsIGQpfSBcCiAgICAgICAgICAgICAgICAgICIKIApAQCAtNTQsNiArNTMsOCBAQAogUEFDS0FHRUNPTkZJR1tnbHhdID0gIi0tZW5hYmxlLWdseCwtLWRpc2FibGUtZ2x4LCxsaWJnbCIKIFBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZC1iYWNrZW5kLC0tZGlzYWJsZS13YXlsYW5kLWJhY2tlbmQsd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJ4a2Jjb21tb24gdmlydHVhbC9lZ2wgdmlydHVhbC9saWJnbGVzMiB3YXlsYW5kLW5hdGl2ZSIKIFBBQ0tBR0VDT05GSUdbY3Vwc10gPSAiLS1lbmFibGUtY3VwcywtLWRpc2FibGUtY3VwcyxjdXBzIgorUEFDS0FHRUNPTkZJR1tjbG91ZHByaW50XSA9ICItLWVuYWJsZS1jbG91ZHByaW50LC0tZGlzYWJsZS1jbG91ZHByaW50LHJlc3QganNvbi1nbGliIgorUEFDS0FHRUNPTkZJR1tjb2xvcmRdID0gIi0tZW5hYmxlLWNvbG9yZCwtLWRpc2FibGUtY29sb3JkLGNvbG9yZCIKIAogcHJlcGFyZV9ndGtfc2NyaXB0cygpIHsKICAgICBtdiAke0R9JHtiaW5kaXJ9L2d0ay11cGRhdGUtaWNvbi1jYWNoZSAke0R9JHtiaW5kaXJ9L2d0ay11cGRhdGUtaWNvbi1jYWNoZS0zLjAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMi1Eby1ub3QtdHJ5LXRvLWluaXRpYWxpemUtR0wtd2l0aG91dC1saWJHTC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMi1Eby1ub3QtdHJ5LXRvLWluaXRpYWxpemUtR0wtd2l0aG91dC1saWJHTC5wYXRjaAppbmRleCBjYzdlZGY3Li44MGRjMmQ3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDItRG8tbm90LXRyeS10by1pbml0aWFsaXplLUdMLXdpdGhvdXQtbGliR0wucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAyM2E1NjMxNTU0MDY5ODBkZmM4Y2Y2ZjdjMmRhNmNjZTBhYzMxMGYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2NTc1YWIwZjBlOGMxYmJhMDMzYWQxNjE2NTExZTM3YTJlYzk5NWZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIERhdGU6IEZyaSwgMTYgT2N0IDIwMTUgMTY6MzU6MTYgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzRdIERvIG5vdCB0cnkgdG8gaW5pdGlhbGl6ZSBHTCB3aXRob3V0IGxpYkdMCitTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCB0cnkgdG8gaW5pdGlhbGl6ZSBHTCB3aXRob3V0IGxpYkdMCiAKIF9nZGtfeDExX3NjcmVlbl91cGRhdGVfdmlzdWFsc19mb3JfZ2woKSB3aWxsIGVuZCB1cCBjYWxsaW5nIGVwb3h5cwogR0xYIGFwaSB3aGljaCB3aWxsIGV4aXQoKSBpZiBsaWJHTC5zby4xIGlzIG5vdCBwcmVzZW50LiBXZSBkbyBub3QKQEAgLTIyLDEwICsyMiwxMCBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA3NTdmZDdjLi4wYTQ4ODc1IDEwMDY0NAoraW5kZXggZTlmNTU4My4uYmQ2NTFiYiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzUxLDYgKzM1MSwxMiBAQCBBQ19BUkdfRU5BQkxFKGNsb3VkcHJvdmlkZXJzLAorQEAgLTM0Niw2ICszNDYsMTIgQEAgQUNfQVJHX0VOQUJMRShjbG91ZHByb3ZpZGVycywKICAgICAgICAgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtY2xvdWRwcm92aWRlcnNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGUgbGliY2xvdWRwcm92aWRlcnMgaW50ZWdyYXRpb25dKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nsb3VkcHJvdmlkZXJzX3NldD15ZXNdKQpAQCAtMzYsOCArMzYsOCBAQAogKyAgQUNfREVGSU5FKFtIQVZFX0dMWF0sIFtdLCBbR0xYIHdpbGwgYmUgYXZhaWxhYmxlIGF0IHJ1bnRpbWVdKQogK10pCiAgCi0gaWYgdGVzdCAteiAiJGJhY2tlbmRfc2V0IjsgdGhlbgotICAgaWYgdGVzdCAiJHBsYXRmb3JtX3dpbjMyIiA9IHllczsgdGhlbgorIEFDX0FSR19FTkFCTEUocHJvZmlsZXIsCisgICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXByb2ZpbGVyXSwKIGRpZmYgLS1naXQgYS9nZGsveDExL2dka3Zpc3VhbC14MTEuYyBiL2dkay94MTEvZ2RrdmlzdWFsLXgxMS5jCiBpbmRleCA4MTQ3OWQ4Li4zYzhjNWMwIDEwMDY0NAogLS0tIGEvZ2RrL3gxMS9nZGt2aXN1YWwteDExLmMKQEAgLTU1LDYgKzU1LDMgQEAKICB9CiAgCiAgZ2ludAotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoCmluZGV4IDg1MmRjOWQuLjM5OGM5YmMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMy1BZGQtZGlzYWJsZS1vcGVuZ2wtY29uZmlndXJlLW9wdGlvbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGQxMWI0MWE3ZmYwMjM0ZjM4MzJkNmFhYmRmNDk4ODA3ZDE0NjNjMTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGY4M2ZjZjE5OTFhZmFkNmQ5YzE1NTQ2YjJjY2Q3NzVkYWQ0ZTMxNGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogRGF0ZTogVHVlLCAyMSBKdW4gMjAxNiAxNToxMTozOSArMDMwMAogU3ViamVjdDogW1BBVENIXSBBZGQgLS1kaXNhYmxlLW9wZW5nbCBjb25maWd1cmUgb3B0aW9uCkBAIC0zNywyMCArMzcsMjAgQEAKICBnZGsveDExL2dka3gtYXV0b2NsZWFudXBzLmggICAgICAgICAgICAgICAgfCAgMiArCiAgZ2RrL3gxMS97Z2RreC5oID0+IGdka3gtd2l0aC1nbC1jb250ZXh0Lmh9IHwgIDEgLQogIGdkay94MTEvZ2RreC13aXRob3V0LWdsLWNvbnRleHQuaCAgICAgICAgICB8IDU4ICsrKysrKysrKysrKysrKysrKysrKysKLSBndGsvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMyArLQorIGd0ay9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiAgZ3RrL2d0a2dsYXJlYS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAgKysrKysrKy0KICBndGsvaW5zcGVjdG9yL2dlbmVyYWwuYyAgICAgICAgICAgICAgICAgICAgfCAgNiArKysKICB0ZXN0cy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKy0tCiAgdGVzdHN1aXRlL2d0ay9vYmplY3RzLWZpbmFsaXplLmMgICAgICAgICAgIHwgIDIgKwotIDIxIGZpbGVzIGNoYW5nZWQsIDIwOCBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKKyAyMSBmaWxlcyBjaGFuZ2VkLCAyMDggaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCiAgcmVuYW1lIGdkay94MTEve2dka3guaCA9PiBnZGt4LXdpdGgtZ2wtY29udGV4dC5ofSAoOTglKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGsveDExL2dka3gtd2l0aG91dC1nbC1jb250ZXh0LmgKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMmM0NzMzYi4uMThhZTY2YyAxMDA2NDQKK2luZGV4IGJkNjUxYmIuLmI0YzA2MWYgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM1Miw2ICszNTIsMTUgQEAgQUNfQVJHX0VOQUJMRShjbG91ZHByb3ZpZGVycywKK0BAIC0zNDYsNiArMzQ2LDE1IEBAIEFDX0FSR19FTkFCTEUoY2xvdWRwcm92aWRlcnMsCiAgICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWNsb3VkcHJvdmlkZXJzXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIGxpYmNsb3VkcHJvdmlkZXJzIGludGVncmF0aW9uXSldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbG91ZHByb3ZpZGVyc19zZXQ9eWVzXSkKQEAgLTY2LDIxICs2NiwyMSBAQAogIEFDX0FSR19FTkFCTEUoZ2x4LAogICAgICAgICAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1nbHhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtXaGVuIGVuYWJsZWQgR2RrIHdpbGwgdHJ5IHRvIGluaXRpYWxpemUgR0xYXSldKQotQEAgLTEzNzAsNyArMTM3OSw3IEBAIENGTEFHUz0iJHNhdmVkX2NmbGFncyIKK0BAIC0xMzQ1LDcgKzEzNTQsNyBAQCBDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCiAgTERGTEFHUz0iJHNhdmVkX2xkZmxhZ3MiCiAgCiAgR0RLX1BBQ0tBR0VTPSIkUEFOR09fUEFDS0FHRVMgZ2RrLXBpeGJ1Zi0yLjAgPj0gZ2RrX3BpeGJ1Zl9yZXF1aXJlZF92ZXJzaW9uIGNhaXJvID49IGNhaXJvX3JlcXVpcmVkX3ZlcnNpb24gY2Fpcm8tZ29iamVjdCA+PSBjYWlyb19yZXF1aXJlZF92ZXJzaW9uIgotLUdES19QUklWQVRFX1BBQ0tBR0VTPSIkR0RLX0dJT19QQUNLQUdFICRYX1BBQ0tBR0VTICRXQVlMQU5EX1BBQ0tBR0VTICRNSVJfUEFDS0FHRVMgJGNhaXJvX2JhY2tlbmRzIGVwb3h5ID49IGVwb3h5X3JlcXVpcmVkX3ZlcnNpb24gJENMT1VEUFJPVklERVJfUEFDS0FHRVMgZnJpYmlkaSA+PSBmcmliaWRpX3JlcXVpcmVkX3ZlcnNpb24iCi0rR0RLX1BSSVZBVEVfUEFDS0FHRVM9IiRHREtfR0lPX1BBQ0tBR0UgJFhfUEFDS0FHRVMgJFdBWUxBTkRfUEFDS0FHRVMgJE1JUl9QQUNLQUdFUyAkY2Fpcm9fYmFja2VuZHMgJEVQT1hZX1BBQ0tBR0VTICRDTE9VRFBST1ZJREVSX1BBQ0tBR0VTIGZyaWJpZGkgPj0gZnJpYmlkaV9yZXF1aXJlZF92ZXJzaW9uIgorLUdES19QUklWQVRFX1BBQ0tBR0VTPSIkR0RLX0dJT19QQUNLQUdFICRYX1BBQ0tBR0VTICRXQVlMQU5EX1BBQ0tBR0VTICRjYWlyb19iYWNrZW5kcyBlcG94eSA+PSBlcG94eV9yZXF1aXJlZF92ZXJzaW9uICRDTE9VRFBST1ZJREVSX1BBQ0tBR0VTICRQUk9GSUxFUl9QQUNLQUdFUyBmcmliaWRpID49IGZyaWJpZGlfcmVxdWlyZWRfdmVyc2lvbiIKKytHREtfUFJJVkFURV9QQUNLQUdFUz0iJEdES19HSU9fUEFDS0FHRSAkWF9QQUNLQUdFUyAkV0FZTEFORF9QQUNLQUdFUyAkY2Fpcm9fYmFja2VuZHMgJEVQT1hZX1BBQ0tBR0VTICRDTE9VRFBST1ZJREVSX1BBQ0tBR0VTICRQUk9GSUxFUl9QQUNLQUdFUyBmcmliaWRpID49IGZyaWJpZGlfcmVxdWlyZWRfdmVyc2lvbiIKICAKICBQS0dfQ0hFQ0tfTU9EVUxFUyhHREtfREVQLCAkR0RLX1BBQ0tBR0VTICRHREtfUFJJVkFURV9QQUNLQUdFUykKICBHREtfREVQX0xJQlM9IiRHREtfRVhUUkFfTElCUyAkR0RLX0RFUF9MSUJTICRNQVRIX0xJQiIKLUBAIC0xNDA0LDcgKzE0MTMsNyBAQCBmaQorQEAgLTEzNzksNyArMTM4OCw3IEBAIGZpCiAgUEtHX0NIRUNLX01PRFVMRVMoQVRLLCAkQVRLX1BBQ0tBR0VTKQogIAogIEdUS19QQUNLQUdFUz0iYXRrID49IGF0a19yZXF1aXJlZF92ZXJzaW9uIGNhaXJvID49IGNhaXJvX3JlcXVpcmVkX3ZlcnNpb24gY2Fpcm8tZ29iamVjdCA+PSBjYWlyb19yZXF1aXJlZF92ZXJzaW9uIGdkay1waXhidWYtMi4wID49IGdka19waXhidWZfcmVxdWlyZWRfdmVyc2lvbiBnaW8tMi4wID49IGdsaWJfcmVxdWlyZWRfdmVyc2lvbiIKLS1HVEtfUFJJVkFURV9QQUNLQUdFUz0iJEFUS19QQUNLQUdFUyAkV0FZTEFORF9QQUNLQUdFUyAkTUlSX1BBQ0tBR0VTIGVwb3h5ID49IGVwb3h5X3JlcXVpcmVkX3ZlcnNpb24gZnJpYmlkaSA+PSBmcmliaWRpX3JlcXVpcmVkX3ZlcnNpb24iCi0rR1RLX1BSSVZBVEVfUEFDS0FHRVM9IiRBVEtfUEFDS0FHRVMgJFdBWUxBTkRfUEFDS0FHRVMgJE1JUl9QQUNLQUdFUyAkRVBPWFlfUEFDS0FHRVMgZnJpYmlkaSA+PSBmcmliaWRpX3JlcXVpcmVkX3ZlcnNpb24iCistR1RLX1BSSVZBVEVfUEFDS0FHRVM9IiRBVEtfUEFDS0FHRVMgJFdBWUxBTkRfUEFDS0FHRVMgZXBveHkgPj0gZXBveHlfcmVxdWlyZWRfdmVyc2lvbiBmcmliaWRpID49IGZyaWJpZGlfcmVxdWlyZWRfdmVyc2lvbiIKKytHVEtfUFJJVkFURV9QQUNLQUdFUz0iJEFUS19QQUNLQUdFUyAkV0FZTEFORF9QQUNLQUdFUyAkRVBPWFlfUEFDS0FHRVMgZnJpYmlkaSA+PSBmcmliaWRpX3JlcXVpcmVkX3ZlcnNpb24iCiAgaWYgdGVzdCAieCRlbmFibGVfeDExX2JhY2tlbmQiID0geHllcyAtbyAieCRlbmFibGVfd2F5bGFuZF9iYWNrZW5kIiA9IHh5ZXM7IHRoZW4KICAgIEdUS19QUklWQVRFX1BBQ0tBR0VTPSIkR1RLX1BSSVZBVEVfUEFDS0FHRVMgcGFuZ29mdDIiCiAgZmkKQEAgLTE2OCw3ICsxNjgsNyBAQAogICAgcmV0dXJuIFRSVUU7CiAgfQogZGlmZiAtLWdpdCBhL2RvY3MvdG9vbHMvTWFrZWZpbGUuYW0gYi9kb2NzL3Rvb2xzL01ha2VmaWxlLmFtCi1pbmRleCA2YTZkNzBmLi41Y2RmMzEyIDEwMDY0NAoraW5kZXggYmVjNDNlMy4uMTg5ZThmYyAxMDA2NDQKIC0tLSBhL2RvY3MvdG9vbHMvTWFrZWZpbGUuYW0KICsrKyBiL2RvY3MvdG9vbHMvTWFrZWZpbGUuYW0KIEBAIC05LDEzICs5LDE4IEBAIEFNX0NQUEZMQUdTID0gXApAQCAtMjEwLDcgKzIxMCw3IEBACiAgCiAgICByZXR1cm4gaW5mbzsKIGRpZmYgLS1naXQgYS9nZGsvTWFrZWZpbGUuYW0gYi9nZGsvTWFrZWZpbGUuYW0KLWluZGV4IDY4OWVlNTIuLmQ2YjRlNzAgMTAwNjQ0CitpbmRleCA0NzlkNmExLi43ZWRiZWU4IDEwMDY0NAogLS0tIGEvZ2RrL01ha2VmaWxlLmFtCiArKysgYi9nZGsvTWFrZWZpbGUuYW0KIEBAIC0yNzQsNyArMjc0LDYgQEAgeDExX2ludHJvc3BlY3Rpb25fZmlsZXMgPSAJCVwKQEAgLTI0MywxMCArMjQzLDEwIEBACiAgR2RrWDExXzNfMF9naXJfU0NBTk5FUkZMQUdTID0gCQlcCiAgCS0taWRlbnRpZmllci1wcmVmaXg9R2RrCQlcCiBkaWZmIC0tZ2l0IGEvZ2RrL2dka2Rpc3BsYXkuYyBiL2dkay9nZGtkaXNwbGF5LmMKLWluZGV4IDA2ZDQxODcuLjgzMjcxMWMgMTAwNjQ0CitpbmRleCAyNDBjOTlmLi45ZWI0OWJmIDEwMDY0NAogLS0tIGEvZ2RrL2dka2Rpc3BsYXkuYwogKysrIGIvZ2RrL2dka2Rpc3BsYXkuYwotQEAgLTI0MTYsNyArMjQxNiw5IEBAIGdib29sZWFuCitAQCAtMjQxOSw3ICsyNDE5LDkgQEAgZ2Jvb2xlYW4KICBnZGtfZGlzcGxheV9tYWtlX2dsX2NvbnRleHRfY3VycmVudCAoR2RrRGlzcGxheSAgICpkaXNwbGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtHTENvbnRleHQgKmNvbnRleHQpCiAgewpAQCAtMzgwLDcgKzM4MCw3IEBACiAgCiAgLyoqCiBkaWZmIC0tZ2l0IGEvZ2RrL2dka3dpbmRvdy5jIGIvZ2RrL2dka3dpbmRvdy5jCi1pbmRleCAxNDE2NDA5Li5lM2I1NjMwIDEwMDY0NAoraW5kZXggNmFlMGY4Ni4uNGU0OGEyYSAxMDA2NDQKIC0tLSBhL2dkay9nZGt3aW5kb3cuYwogKysrIGIvZ2RrL2dka3dpbmRvdy5jCiBAQCAtNDUsNyArNDUsOSBAQApAQCAtMzkzLDcgKzM5Myw3IEBACiAgCiAgLyogZm9yIHRoZSB1c2Ugb2Ygcm91bmQoKSAqLwogICNpbmNsdWRlICJmYWxsYmFjay1jODkuYyIKLUBAIC0yODIyLDYgKzI4MjQsMTMgQEAgZ2RrX3dpbmRvd19nZXRfcGFpbnRfZ2xfY29udGV4dCAoR2RrV2luZG93ICAqd2luZG93LAorQEAgLTI4NDQsNiArMjg0NiwxMyBAQCBnZGtfd2luZG93X2dldF9wYWludF9nbF9jb250ZXh0IChHZGtXaW5kb3cgICp3aW5kb3csCiAgewogICAgR0Vycm9yICppbnRlcm5hbF9lcnJvciA9IE5VTEw7CiAgCkBAIC00MDcsNyArNDA3LDcgQEAKICAgIGlmIChfZ2RrX2dsX2ZsYWdzICYgR0RLX0dMX0RJU0FCTEUpCiAgICAgIHsKICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsIChlcnJvciwgR0RLX0dMX0VSUk9SLAotQEAgLTI5NTcsNiArMjk2Niw3IEBAIGdka193aW5kb3dfYmVnaW5fcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAgICAgICAgICAgICp3aW5kb3csCitAQCAtMjk3OSw2ICsyOTg4LDcgQEAgZ2RrX3dpbmRvd19iZWdpbl9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICAgICAgICAgICAgKndpbmRvdywKICAgICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICB7CkBAIC00MTUsNyArNDE1LDcgQEAKICAJICBnZGtfZ2xfY29udGV4dF9tYWtlX2N1cnJlbnQgKGNvbnRleHQpOwogICAgICAgICAgICAvKiBXaXRoIGdsIHdlIGFsd2F5cyBuZWVkIGEgc3VyZmFjZSB0byBjb21iaW5lIHRoZSBnbAogICAgICAgICAgICAgICBkcmF3aW5nIHdpdGggdGhlIG5hdGl2ZSBkcmF3aW5nLiAqLwotQEAgLTI5NzEsNiArMjk4MSw3IEBAIGdka193aW5kb3dfYmVnaW5fcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAgICAgICAgICAgICp3aW5kb3csCitAQCAtMjk5Myw2ICszMDAzLDcgQEAgZ2RrX3dpbmRvd19iZWdpbl9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICAgICAgICAgICAgKndpbmRvdywKICAgICAgICAgICAgZ2xCbGVuZEZ1bmMgKEdMX09ORSwgR0xfT05FX01JTlVTX1NSQ19BTFBIQSk7CiAgCiAgICAgICAgICAgIGdsVmlld3BvcnQgKDAsIDAsIHd3LCB3aCk7CkBAIC00MjMsNyArNDIzLDcgQEAKICAgICAgICAgIH0KICAgICAgfQogIAotQEAgLTMwMzQsNiArMzA0NSw3IEBAIGdka193aW5kb3dfZW5kX3BhaW50X2ludGVybmFsIChHZGtXaW5kb3cgKndpbmRvdykKK0BAIC0zMDU2LDYgKzMwNjcsNyBAQCBnZGtfd2luZG93X2VuZF9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICp3aW5kb3cpCiAgCiAgICAgICAgICAgIGdka19nbF9jb250ZXh0X21ha2VfY3VycmVudCAod2luZG93LT5nbF9wYWludF9jb250ZXh0KTsKICAKQEAgLTQzMSw3ICs0MzEsNyBAQAogICAgICAgICAgICBpZiAoIWNhaXJvX3JlZ2lvbl9pc19lbXB0eSAob3BhcXVlX3JlZ2lvbikpCiAgICAgICAgICAgICAgZ2RrX2dsX3RleHR1cmVfZnJvbV9zdXJmYWNlICh3aW5kb3ctPmN1cnJlbnRfcGFpbnQuc3VyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYXF1ZV9yZWdpb24pOwotQEAgLTMwNDQsNiArMzA1Niw3IEBAIGdka193aW5kb3dfZW5kX3BhaW50X2ludGVybmFsIChHZGtXaW5kb3cgKndpbmRvdykKK0BAIC0zMDY2LDYgKzMwNzgsNyBAQCBnZGtfd2luZG93X2VuZF9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICp3aW5kb3cpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy0+Y3VycmVudF9wYWludC5uZWVkX2JsZW5kX3JlZ2lvbik7CiAgICAgICAgICAgICAgICBnbERpc2FibGUoR0xfQkxFTkQpOwogICAgICAgICAgICAgIH0KQEAgLTQ0MCw3ICs0NDAsNyBAQAogICAgICAgICAgICBjYWlyb19yZWdpb25fZGVzdHJveSAob3BhcXVlX3JlZ2lvbik7CiAgCiBkaWZmIC0tZ2l0IGEvZ2RrL3gxMS9NYWtlZmlsZS5hbSBiL2dkay94MTEvTWFrZWZpbGUuYW0KLWluZGV4IDYyODlmM2EuLmNiYmFjNzkgMTAwNjQ0CitpbmRleCAzMmIxZjI0Li42MzUyMzEzIDEwMDY0NAogLS0tIGEvZ2RrL3gxMS9NYWtlZmlsZS5hbQogKysrIGIvZ2RrL3gxMS9NYWtlZmlsZS5hbQogQEAgLTQwLDggKzQwLDYgQEAgbGliZ2RrX3gxMV9sYV9TT1VSQ0VTID0gCVwKQEAgLTQ5NCw3ICs0OTQsNyBAQAogIAlnZGt4MTFrZXlzLmgJCVwKICAJZ2RreDExbW9uaXRvci5oCQlcCiAgCWdka3gxMXByb3BlcnR5LmgJXAotQEAgLTg3LDkgKzEwMiwxNiBAQCBsaWJnZGt4MTFpbmNsdWRlX0hFQURFUlMgPSAJXAorQEAgLTg3LDEwICsxMDIsMTcgQEAgbGliZ2RreDExaW5jbHVkZV9IRUFERVJTID0gCVwKICAJZ2RreDExdmlzdWFsLmgJCVwKICAJZ2RreDExd2luZG93LmgKICAKQEAgLTUwNiwxMyArNTA2LDE0IEBACiAgIyBkb24ndCBzZWVtIHRvIGJlIGNvcnJlY3RseSBleHBhbmRlZCBmb3IgdGhlIGRpc3QgZmlsZXMuCiAgRVhUUkFfRElTVCArPSAJCQlcCiArCWdka3guaAkJCVwKLSAJZ2Rrc2V0dGluZ3MuYworIAlnZGtzZXR0aW5ncy5jCVwKKyAJbWVzb24uYnVpbGQKICAKICtNQUlOVEFJTkVSQ0xFQU5GSUxFUyA9IGdka3guaAogKwogIC1pbmNsdWRlICQodG9wX3NyY2RpcikvZ2l0Lm1rCiBkaWZmIC0tZ2l0IGEvZ2RrL3gxMS9nZGtkaXNwbGF5LXgxMS5jIGIvZ2RrL3gxMS9nZGtkaXNwbGF5LXgxMS5jCi1pbmRleCA1Yjk1MTk2Li45YTJmMmEyIDEwMDY0NAoraW5kZXggODE3OTQ0ZS4uZTdhMjk0NyAxMDA2NDQKIC0tLSBhL2dkay94MTEvZ2RrZGlzcGxheS14MTEuYwogKysrIGIvZ2RrL3gxMS9nZGtkaXNwbGF5LXgxMS5jCiBAQCAtMzcsNyArMzcsOSBAQApAQCAtNTIzLDkgKzUyNCw5IEBACiAgI2luY2x1ZGUgImdka2dsY29udGV4dC14MTEuaCIKICsjZW5kaWYKICAjaW5jbHVkZSAiZ2RrLXByaXZhdGUuaCIKKyAjaW5jbHVkZSAiZ2RrcHJvZmlsZXJwcml2YXRlLmgiCiAgCi0gI2luY2x1ZGUgPGdsaWIuaD4KLUBAIC0zMTg0LDcgKzMxODYsOSBAQCBnZGtfeDExX2Rpc3BsYXlfY2xhc3NfaW5pdCAoR2RrWDExRGlzcGxheUNsYXNzICogY2xhc3MpCitAQCAtMzE4OCw3ICszMTkwLDkgQEAgZ2RrX3gxMV9kaXNwbGF5X2NsYXNzX2luaXQgKEdka1gxMURpc3BsYXlDbGFzcyAqIGNsYXNzKQogICAgZGlzcGxheV9jbGFzcy0+dGV4dF9wcm9wZXJ0eV90b191dGY4X2xpc3QgPSBfZ2RrX3gxMV9kaXNwbGF5X3RleHRfcHJvcGVydHlfdG9fdXRmOF9saXN0OwogICAgZGlzcGxheV9jbGFzcy0+dXRmOF90b19zdHJpbmdfdGFyZ2V0ID0gX2dka194MTFfZGlzcGxheV91dGY4X3RvX3N0cmluZ190YXJnZXQ7CiAgCkBAIC01MzcsMTAgKzUzOCwxMCBAQAogICAgZGlzcGxheV9jbGFzcy0+Z2V0X2RlZmF1bHRfc2VhdCA9IGdka194MTFfZGlzcGxheV9nZXRfZGVmYXVsdF9zZWF0OwogIAogZGlmZiAtLWdpdCBhL2dkay94MTEvZ2Rrc2NyZWVuLXgxMS5jIGIvZ2RrL3gxMS9nZGtzY3JlZW4teDExLmMKLWluZGV4IDI3MmNlY2QuLjJiYjM0YWMgMTAwNjQ0CitpbmRleCA4OTM5YWU5Li45MzFiZmY5IDEwMDY0NAogLS0tIGEvZ2RrL3gxMS9nZGtzY3JlZW4teDExLmMKICsrKyBiL2dkay94MTEvZ2Rrc2NyZWVuLXgxMS5jCi1AQCAtMTY3NSwzICsxNjc1LDggQEAgZ2RrX3gxMV9zY3JlZW5fZ2V0X2N1cnJlbnRfZGVza3RvcCAoR2RrU2NyZWVuICpzY3JlZW4pCitAQCAtMTcyMywzICsxNzIzLDggQEAgZ2RrX3gxMV9zY3JlZW5fZ2V0X2N1cnJlbnRfZGVza3RvcCAoR2RrU2NyZWVuICpzY3JlZW4pCiAgewogICAgcmV0dXJuIGdldF9uZXR3bV9jYXJkaW5hbF9wcm9wZXJ0eSAoc2NyZWVuLCAiX05FVF9DVVJSRU5UX0RFU0tUT1AiKTsKICB9CkBAIC01NTAsNyArNTUxLDcgQEAKICt2b2lkIF9nZGtfeDExX3NjcmVlbl91cGRhdGVfdmlzdWFsc19mb3JfZ2wgKEdka1NjcmVlbiAqc2NyZWVuKSB7fQogKyNlbmRpZgogZGlmZiAtLWdpdCBhL2dkay94MTEvZ2Rrd2luZG93LXgxMS5jIGIvZ2RrL3gxMS9nZGt3aW5kb3cteDExLmMKLWluZGV4IGY5MmExNDYuLjg5ZjkwMGEgMTAwNjQ0CitpbmRleCAxZmU3YjkwLi5kMjNhMzQ3IDEwMDY0NAogLS0tIGEvZ2RrL3gxMS9nZGt3aW5kb3cteDExLmMKICsrKyBiL2dkay94MTEvZ2Rrd2luZG93LXgxMS5jCiBAQCAtMzYsNyArMzYsOSBAQApAQCAtNTYzLDcgKzU2NCw3IEBACiAgI2luY2x1ZGUgImdka3ByaXZhdGUteDExLmgiCiAgI2luY2x1ZGUgImdkay1wcml2YXRlLmgiCiAgCi1AQCAtNTgzOSw3ICs1ODQxLDkgQEAgZ2RrX3dpbmRvd19pbXBsX3gxMV9jbGFzc19pbml0IChHZGtXaW5kb3dJbXBsWDExQ2xhc3MgKmtsYXNzKQorQEAgLTU4NjEsNyArNTg2Myw5IEBAIGdka193aW5kb3dfaW1wbF94MTFfY2xhc3NfaW5pdCAoR2RrV2luZG93SW1wbFgxMUNsYXNzICprbGFzcykKICAgIGltcGxfY2xhc3MtPnNldF9vcGFxdWVfcmVnaW9uID0gZ2RrX3gxMV93aW5kb3dfc2V0X29wYXF1ZV9yZWdpb247CiAgICBpbXBsX2NsYXNzLT5zZXRfc2hhZG93X3dpZHRoID0gZ2RrX3gxMV93aW5kb3dfc2V0X3NoYWRvd193aWR0aDsKICAgIGltcGxfY2xhc3MtPnNob3dfd2luZG93X21lbnUgPSBnZGtfeDExX3dpbmRvd19zaG93X3dpbmRvd19tZW51OwpAQCAtNjY3LDMxICs2NjgsMjMgQEAKICsKICsjZW5kaWYgLyogX19HREtfWF9IX18gKi8KIGRpZmYgLS1naXQgYS9ndGsvTWFrZWZpbGUuYW0gYi9ndGsvTWFrZWZpbGUuYW0KLWluZGV4IGU1NTZlOWQuLmNlOTEyZDcgMTAwNjQ0CitpbmRleCBlYWNhNDczLi45OTM1MmQxIDEwMDY0NAogLS0tIGEvZ3RrL01ha2VmaWxlLmFtCiArKysgYi9ndGsvTWFrZWZpbGUuYW0KLUBAIC0xNDQxLDcgKzE0NDEsNiBAQCBndGtwcml2YXRldHlwZWJ1aWx0aW5zLmM6ICQoZ3RrX3ByaXZhdGVfdHlwZV9oX3NvdXJjZXMpICBndGtwcml2YXRldHlwZWJ1aWx0aW5zLgotIAkmJiBjcCB4Z2VuLWdwdGJjIGd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuYyAgXAotIAkmJiBybSAtZiB4Z2VuLWdwdGJjCi0gCi0tCi0gZ3RrdHlwZWZ1bmNzLmM6IHN0YW1wLWd0a3R5cGVidWlsdGlucy5oIHN0YW1wLWd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuaCAkKHRvcF9zcmNkaXIpL2d0ay8qLmggJCh0b3Bfc3JjZGlyKS9ndGsvYTExeS8qLmggJCh0b3Bfc3JjZGlyKS9ndGsvZGVwcmVjYXRlZC8qLmggJCh0b3Bfc3JjZGlyKS9nZGsvKi5oIE1ha2VmaWxlCi0gCSQoQU1fVl9HRU4pIGV4cG9ydCBMQ19BTEw9QyA7IFwKLSAJICAoZWNobyAnI3VuZGVmIEdUS19DT01QSUxBVElPTicgJiYgZWNobyAnI2luY2x1ZGUgPGd0ay9ndGt4Lmg+JykgPiB4Z2VuLWd0ZnNyYy5jICYmIFwKLUBAIC0xNDQ5LDcgKzE0NDgsNyBAQCBndGt0eXBlZnVuY3MuYzogc3RhbXAtZ3RrdHlwZWJ1aWx0aW5zLmggc3RhbXAtZ3RrcHJpdmF0ZXR5cGVidWlsdGlucy5oICQodG9wX3NyYworQEAgLTE0NDksNyArMTQ0OSw3IEBAIGd0a3R5cGVmdW5jcy5pbmM6IHN0YW1wLWd0a3R5cGVidWlsdGlucy5oIHN0YW1wLWd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuaCAkKHRvcF9zCiAgCSAgJHtDUFB9ICQoREVGUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSB4Z2VuLWd0ZnNyYy5jIHwgXAogIAkgICQoR1JFUCkgLW8gJ1xiZ1t0ZF1rX1thLXpBLVowLTlfXSpfZ2V0X3R5cGVcYicgfCBcCiAgCSAgc29ydCB8IHVuaXEgfCBcCiAtCSAgJChTRUQpICd7IHMvXi8qdHArKyA9IC87IHMvJCQvKCk7Lzsgcy9eLipcKGdka194MTFcfGd0a19wbHVnX1x8Z3RrX3NvY2tldF9cKS4qJCQvI2lmZGVmIEdES19XSU5ET1dJTkdfWDExXG4mXG4jZW5kaWYvOyB9JyA+PiB4Z2VuLWd0ZiBcCiArCSAgJChTRUQpICd7IHMvXi8qdHArKyA9IC87IHMvJCQvKCk7Lzsgcy9eLipcKGdka194MTFcfGd0a19wbHVnX1x8Z3RrX3NvY2tldF9cKS4qJCQvI2lmZGVmIEdES19XSU5ET1dJTkdfWDExXG4mXG4jZW5kaWYvOyBzL14uKmdka194MTFfZ2wuKiQkLyNpZmRlZiBIQVZFX09QRU5HTFxuJlxuI2VuZGlmLzsgfScgPj4geGdlbi1ndGYgXAogIAkmJiBjcCB4Z2VuLWd0ZiAkQCAmJiBybSAtZiB4Z2VuLWd0ZgotICQoc3JjZGlyKS9ndGt0ZXN0dXRpbHMuYzogZ3RrdHlwZWZ1bmNzLmMKKyAkKHNyY2RpcikvZ3RrdGVzdHV0aWxzLmM6IGd0a3R5cGVmdW5jcy5pbmMKICAKIGRpZmYgLS1naXQgYS9ndGsvZ3RrZ2xhcmVhLmMgYi9ndGsvZ3RrZ2xhcmVhLmMKLWluZGV4IGVhMzgzYzAuLmJiNGViNjQgMTAwNjQ0CitpbmRleCA5YTU2NDQzLi43ZGUwZGIyIDEwMDY0NAogLS0tIGEvZ3RrL2d0a2dsYXJlYS5jCiArKysgYi9ndGsvZ3RrZ2xhcmVhLmMKLUBAIC0yOCw3ICsyOCw5IEBACitAQCAtMjksNyArMjksOSBAQAogICNpbmNsdWRlICJndGtwcml2YXRlLmgiCiAgI2luY2x1ZGUgImd0a3JlbmRlci5oIgogIApAQCAtNzAxLDcgKzY5NCw3IEBACiAgCiAgLyoqCiAgICogU0VDVElPTjpndGtnbGFyZWEKLUBAIC0zNjgsOSArMzcwLDEyIEBAIGd0a19nbF9hcmVhX3JlYWxfY3JlYXRlX2NvbnRleHQgKEd0a0dMQXJlYSAqYXJlYSkKK0BAIC0zNjksOSArMzcxLDEyIEBAIGd0a19nbF9hcmVhX3JlYWxfY3JlYXRlX2NvbnRleHQgKEd0a0dMQXJlYSAqYXJlYSkKICBzdGF0aWMgdm9pZAogIGd0a19nbF9hcmVhX3Jlc2l6ZSAoR3RrR0xBcmVhICphcmVhLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgewpAQCAtNzE0LDcgKzcwNyw3IEBACiAgLyoKICAgKiBDcmVhdGVzIGFsbCB0aGUgYnVmZmVyIG9iamVjdHMgbmVlZGVkIGZvciByZW5kZXJpbmcgdGhlIHNjZW5lCiAgICovCi1AQCAtNDgyLDYgKzQ4Nyw3IEBAIGd0a19nbF9hcmVhX2FsbG9jYXRlX2J1ZmZlcnMgKEd0a0dMQXJlYSAqYXJlYSkKK0BAIC00ODMsNiArNDg4LDcgQEAgZ3RrX2dsX2FyZWFfYWxsb2NhdGVfYnVmZmVycyAoR3RrR0xBcmVhICphcmVhKQogIAogICAgcHJpdi0+bmVlZHNfcmVuZGVyID0gVFJVRTsKICB9CkBAIC03MjIsNyArNzE1LDcgQEAKICAKICAvKioKICAgKiBndGtfZ2xfYXJlYV9hdHRhY2hfYnVmZmVyczoKLUBAIC01MDAsNiArNTA2LDcgQEAgZ3RrX2dsX2FyZWFfYWxsb2NhdGVfYnVmZmVycyAoR3RrR0xBcmVhICphcmVhKQorQEAgLTUwMSw2ICs1MDcsNyBAQCBndGtfZ2xfYXJlYV9hbGxvY2F0ZV9idWZmZXJzIChHdGtHTEFyZWEgKmFyZWEpCiAgdm9pZAogIGd0a19nbF9hcmVhX2F0dGFjaF9idWZmZXJzIChHdGtHTEFyZWEgKmFyZWEpCiAgewpAQCAtNzMwLDcgKzcyMyw3IEBACiAgICBHdGtHTEFyZWFQcml2YXRlICpwcml2ID0gZ3RrX2dsX2FyZWFfZ2V0X2luc3RhbmNlX3ByaXZhdGUgKGFyZWEpOwogIAogICAgZ19yZXR1cm5faWZfZmFpbCAoR1RLX0lTX0dMX0FSRUEgKGFyZWEpKTsKLUBAIC01MzIsMTEgKzUzOSwxMyBAQCBndGtfZ2xfYXJlYV9hdHRhY2hfYnVmZmVycyAoR3RrR0xBcmVhICphcmVhKQorQEAgLTUzMywxMSArNTQwLDEzIEBAIGd0a19nbF9hcmVhX2F0dGFjaF9idWZmZXJzIChHdGtHTEFyZWEgKmFyZWEpCiAgICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUIChHTF9GUkFNRUJVRkZFUl9FWFQsIEdMX1NURU5DSUxfQVRUQUNITUVOVF9FWFQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRU5ERVJCVUZGRVJfRVhULCBwcml2LT5kZXB0aF9zdGVuY2lsX2J1ZmZlcik7CiAgICAgIH0KQEAgLTc0NCw3ICs3MzcsNyBAQAogICAgR3RrR0xBcmVhUHJpdmF0ZSAqcHJpdiA9IGd0a19nbF9hcmVhX2dldF9pbnN0YW5jZV9wcml2YXRlIChhcmVhKTsKICAKICAgIGlmIChwcml2LT5jb250ZXh0ID09IE5VTEwpCi1AQCAtNTY4LDYgKzU3Nyw3IEBAIGd0a19nbF9hcmVhX2RlbGV0ZV9idWZmZXJzIChHdGtHTEFyZWEgKmFyZWEpCitAQCAtNTY5LDYgKzU3OCw3IEBAIGd0a19nbF9hcmVhX2RlbGV0ZV9idWZmZXJzIChHdGtHTEFyZWEgKmFyZWEpCiAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnNFWFQgKDEsICZwcml2LT5mcmFtZV9idWZmZXIpOwogICAgICAgIHByaXYtPmZyYW1lX2J1ZmZlciA9IDA7CiAgICAgIH0KQEAgLTc1Miw3ICs3NDUsNyBAQAogIH0KICAKICBzdGF0aWMgdm9pZAotQEAgLTY3OCw2ICs2ODgsNyBAQCBndGtfZ2xfYXJlYV9kcmF3IChHdGtXaWRnZXQgKndpZGdldCwKK0BAIC02NzksNiArNjg5LDcgQEAgZ3RrX2dsX2FyZWFfZHJhdyAoR3RrV2lkZ2V0ICp3aWRnZXQsCiAgICBHdGtHTEFyZWEgKmFyZWEgPSBHVEtfR0xfQVJFQSAod2lkZ2V0KTsKICAgIEd0a0dMQXJlYVByaXZhdGUgKnByaXYgPSBndGtfZ2xfYXJlYV9nZXRfaW5zdGFuY2VfcHJpdmF0ZSAoYXJlYSk7CiAgICBnYm9vbGVhbiB1bnVzZWQ7CkBAIC03NjAsNyArNzUzLDcgQEAKICAgIGludCB3LCBoLCBzY2FsZTsKICAgIEdMZW51bSBzdGF0dXM7CiAgCi1AQCAtNjg5LDcgKzcwMCw2IEBAIGd0a19nbF9hcmVhX2RyYXcgKEd0a1dpZGdldCAqd2lkZ2V0LAorQEAgLTY5MCw3ICs3MDEsNiBAQCBndGtfZ2xfYXJlYV9kcmF3IChHdGtXaWRnZXQgKndpZGdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGVkX2hlaWdodCAod2lkZ2V0KSk7CiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICB9CkBAIC03NjgsNyArNzYxLDcgQEAKICAgIGlmIChwcml2LT5jb250ZXh0ID09IE5VTEwpCiAgICAgIHJldHVybiBGQUxTRTsKICAKLUBAIC03MzUsNiArNzQ1LDE0IEBAIGd0a19nbF9hcmVhX2RyYXcgKEd0a1dpZGdldCAqd2lkZ2V0LAorQEAgLTczNiw2ICs3NDYsMTQgQEAgZ3RrX2dsX2FyZWFfZHJhdyAoR3RrV2lkZ2V0ICp3aWRnZXQsCiAgICAgIH0KICAKICAgIHJldHVybiBUUlVFOwpAQCAtODMxLDcgKzgyNCw3IEBACiAgICBpZiAoR0RLX0lTX1dBWUxBTkRfRElTUExBWSAoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQgKCkpKQogICAgICB7CiBkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggN2M1Y2E5OS4uZTRhNDU0NiAxMDA2NDQKK2luZGV4IGVlMWU4YjUuLmU2YzY1MDIgMTAwNjQ0CiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQogKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KIEBAIC04MCw4ICs4MCw2IEBAIG5vaW5zdF9QUk9HUkFNUyA9ICAkKFRFU1RfUFJPR1MpCVwKQEAgLTg2NCwxMCArODU3LDEwIEBACiAgbm9pbnN0X1BST0dSQU1TICs9IHRlc3Rmb3JlaWduCiAgZW5kaWYKIGRpZmYgLS1naXQgYS90ZXN0c3VpdGUvZ3RrL29iamVjdHMtZmluYWxpemUuYyBiL3Rlc3RzdWl0ZS9ndGsvb2JqZWN0cy1maW5hbGl6ZS5jCi1pbmRleCAwYjNhNTE5Li4wN2IwOTZmIDEwMDY0NAoraW5kZXggMjQ1NDBlMy4uZTBmODYzYSAxMDA2NDQKIC0tLSBhL3Rlc3RzdWl0ZS9ndGsvb2JqZWN0cy1maW5hbGl6ZS5jCiArKysgYi90ZXN0c3VpdGUvZ3RrL29iamVjdHMtZmluYWxpemUuYwotQEAgLTExNSw3ICsxMTUsOSBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitAQCAtMTE2LDcgKzExNiw5IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKICAJICBhbGxfdHlwZXNbaV0gIT0gR0RLX1RZUEVfWDExX0RFVklDRV9NQU5BR0VSX0NPUkUgJiYKICAJICBhbGxfdHlwZXNbaV0gIT0gR0RLX1RZUEVfWDExX0RFVklDRV9NQU5BR0VSX1hJMiAmJgogIAkgIGFsbF90eXBlc1tpXSAhPSBHREtfVFlQRV9YMTFfRElTUExBWV9NQU5BR0VSICYmCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszL3NvcnQtcmVzb3VyY2VzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy9zb3J0LXJlc291cmNlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Zjg3MzcyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy9zb3J0LXJlc291cmNlcy5wYXRjaApAQCAtMCwwICsxLDE5IEBACitJZiB0aGUgcmVzb3VyY2VzIGZpbGUgaXNuJ3Qgc29ydGVkIGluIHNvbWUgd2F5IHRoZW4gbGliZ2RrLnNvIHdpbGwgZGlmZmVyCitkZXBlbmRpbmcgb24gdGhlIGlub2RlIG9yZGVyIG9mIHRoZSByZXNvdXJjZSBmaWxlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvZ2RrL01ha2VmaWxlLmFtIGIvZ2RrL01ha2VmaWxlLmFtCitpbmRleCBlMjViNTdiYTUwLi4yNmYyZDU3YzZlIDEwMDY0NAorLS0tIGEvZ2RrL01ha2VmaWxlLmFtCisrKysgYi9nZGsvTWFrZWZpbGUuYW0KK0BAIC00NjUsNyArNDY1LDcgQEAgc3RhbXAtZ2MtaDogJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKKyAjIFJlc291cmNlcworICMKKyAKKy1nbHNsX3NvdXJjZXMgOj0gJCh3aWxkY2FyZCAkKHNyY2RpcikvcmVzb3VyY2VzL2dsc2wvKi5nbHNsKQorK2dsc2xfc291cmNlcyA6PSAkKHNvcnQgJCh3aWxkY2FyZCAkKHNyY2RpcikvcmVzb3VyY2VzL2dsc2wvKi5nbHNsKSkKKyAKKyBnZGsuZ3Jlc291cmNlLnhtbDogTWFrZWZpbGUuYW0KKyAJJChBTV9WX0dFTikgZWNobyAiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4iID4gJEA7IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yNC4xNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yNC4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjFmODdjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjI0LjE0LmJiCkBAIC0wLDAgKzEsMjAgQEAKK3JlcXVpcmUgZ3RrKzMuaW5jCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLyR7TUFKX1ZFUn0vZ3RrKy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1IYXJkY29kZWQtbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGlua19mcmliaWRpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NvcnQtcmVzb3VyY2VzLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNjJlMzkyMTJmYTBhODQwMTZhMzM5MmE5ZDI5MWZhZjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWM0ZDY5ZjkzYWI4ODRmZDgwYzZiOTUxMTViZmJjMTJkNTFlY2QwMjkxNzhiNmRhZDM2NzJmZGM1ZmY5MWU4OCIKKworUyA9ICIke1dPUktESVJ9L2d0aystJHtQVn0iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d0ay9ndGsuaDtlbmRsaW5lPTI1O21kNT0xZDhkYzBmY2NkYmZhMjYyODdhMjcxZGNlODhhZjczNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGsvZ2RrLmg7ZW5kbGluZT0yNTttZDU9YzkyMGNlMzlkYzg4YzZmMDZkM2U3YzUwZTA4MDg2ZjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvdGVzdGd0ay5jO2VuZGxpbmU9MjU7bWQ1PWNiNzMyZGFlZTFkODJhZjdhMmJmOTUzY2YzY2YyNmYxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjI0LjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjQuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc5YjE4Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjQuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgZ3RrKzMuaW5jCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLyR7TUFKX1ZFUn0vZ3RrKy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1IYXJkY29kZWQtbGlidG9vbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGlua19mcmliaWRpLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZWVlZGRlMDE4NTYyMzgxMTRkY2Y0ZGYzZWJjOTQyYTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjY2OTYyZGU5Yjk3NjhmZTljYTc4NWIwZTJmNDJjOGI5ZGIzODY4YTEyZmE5YjM1NmIxNjcyMzhkNzBhYzc5OSIKLQotUyA9ICIke1dPUktESVJ9L2d0aystJHtQVn0iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d0ay9ndGsuaDtlbmRsaW5lPTI1O21kNT0xZDhkYzBmY2NkYmZhMjYyODdhMjcxZGNlODhhZjczNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGsvZ2RrLmg7ZW5kbGluZT0yNTttZDU9YzkyMGNlMzlkYzg4YzZmMDZkM2U3YzUwZTA4MDg2ZjIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvdGVzdGd0ay5jO2VuZGxpbmU9MjU7bWQ1PWNiNzMyZGFlZTFkODJhZjdhMmJmOTUzY2YzY2YyNmYxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9ndGstZG9jXzEuMzIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4zMi5iYgppbmRleCA1MGQ0ZDk5Li5iNTA4ZTYyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4zMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4zMi5iYgpAQCAtMzYsNiArMzYsMTcgQEAKICAgICAgICAgc2VkIC1pIC1lICdzLF5KSF9DSEVDS19YTUxfQ0FUQUxPRy4qLCwnICR7U30vY29uZmlndXJlLmFjCiB9CiAKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICAjIGNvbmZpZ3VyZSB2YWx1ZXMgZm9yIHB5dGhvbjMgYW5kIHBrZy1jb25maWcgZW5jb2RlZCBpbiBzY3JpcHRzCisgICAgZm9yIGZuIGluICR7YmluZGlyfS9ndGtkb2MtZGVwc2NhbiBcCisgICAgICAgICR7YmluZGlyfS9ndGtkb2MtbWtodG1sMiBcCisgICAgICAgICR7ZGF0YWRpcn0vZ3RrLWRvYy9weXRob24vZ3RrZG9jL2NvbmZpZy5weTsgZG8gCisgICAgICAgIHNlZCAtZSAncywke1JFQ0lQRV9TWVNST09UX05BVElWRX0vdXNyL2Jpbi9wa2ctY29uZmlnLCR7YmluZGlyfS9wa2ctY29uZmlnLCcgXAorICAgICAgICAgICAgLWUgJ3MsJHtIT1NUVE9PTFNfRElSfS9weXRob24zLCR7YmluZGlyfS9weXRob24zLCcgXAorICAgICAgICAgICAgLWkgJHtEfSRmbgorICAgIGRvbmUKK30KKwogRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vc2dtbCIKIEZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgogRklMRVNfJHtQTn0tZG9jID0gIiIKQEAgLTQ4LDMgKzU5LDQgQEAKICAgICAgICAgICAgLWUgInN8R1RLRE9DX1JVTiA9Lip8R1RLRE9DX1JVTiA9IFwkKHRvcF9idWlsZGRpcikvZ3RrZG9jLXFlbXV3cmFwcGVyfCIgXAogICAgICAgICAgICAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2d0ay1kb2MvZGF0YS9ndGstZG9jKm1ha2UKIH0KKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvaGljb2xvci1pY29uLXRoZW1lL2hpY29sb3ItaWNvbi10aGVtZV8wLjE3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvaGljb2xvci1pY29uLXRoZW1lL2hpY29sb3ItaWNvbi10aGVtZV8wLjE3LmJiCmluZGV4IGFhZDdlZmYuLjc0ZTM0MzAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2hpY29sb3ItaWNvbi10aGVtZS9oaWNvbG9yLWljb24tdGhlbWVfMC4xNy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9oaWNvbG9yLWljb24tdGhlbWUvaGljb2xvci1pY29uLXRoZW1lXzAuMTcuYmIKQEAgLTcsNyArNyw3IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjA4YTQ0NjgwOTkxM2ZjOWIzYzcxOGYwZWFlYTA0MjYiCiAKLVNSQ19VUkkgPSAiaHR0cDovL2ljb24tdGhlbWUuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCitTUkNfVVJJID0gImh0dHBzOi8vaWNvbi10aGVtZS5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiIKIFNSQ19VUklbbWQ1c3VtXSA9ICI4NGVlYzhkNmY4MTAyNDBhMDY5YzczMWYxODcwYjQ3NCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMTc0ODQzNTIyNzFkMThjYmJjZmFjMzg2OGVhYjc5OGQ2N2ZmZjFiODQwMmU3NDBiYWE2ZmY0MWQ1ODhhOWQ4IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmcvMDAwMS1SZW1vdmUtbm9uLXJlcHJvZHVjaWJsZS1TUkNESVIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmcvMDAwMS1SZW1vdmUtbm9uLXJlcHJvZHVjaWJsZS1TUkNESVIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVmYzdmOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Zy8wMDAxLVJlbW92ZS1ub24tcmVwcm9kdWNpYmxlLVNSQ0RJUi5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIGJlYTUxNTZjZDdlNzEyMjcxNWIyNmM3NjljMzU5MjgxNDFhMWRhMmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+CitEYXRlOiBNb24sIDE4IE5vdiAyMDE5IDE0OjQ2OjM0IC0wNjAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBub24tcmVwcm9kdWNpYmxlIFNSQ0RJUgorCitSZW1vdmVzIFNSQ0RJUiBhcyB0aGUgcHJlZml4IGZvciBmaW5kaW5nIHRoZSB0ZXN0IGZvbnQuIFRoaXMgd291bGRuJ3QKK3dvcmsgYW55d2F5LCBzaW5jZSB0aGF0IHBhdGggaXMgbm90IHByZXNlbnQgb24gdGhlIHRhcmdldC4KKworVGhpcyBwYXRjaCBpcyBzcGVjaWZpYyB0byBPRSwgc2luY2UgaXQgYXBwZWFycyB0aGF0IHRoaXMgZW50aXJlIG1ldGhvZAorb2YgdGVzdGluZyB3YXMgcmVtb3ZlZCB3aGVuIHVwc3RyZWFtIHdhcyByZS13cml0dGVuIGluIHJ1c3QKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1zcGVjaWZpYywgbm8gbG9uZ2VyIHByZXNlbnQgdXBzdHJlYW1dCitTaWduZWQtb2ZmLWJ5OiBKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+CistLS0KKyByc3ZnLWNhaXJvLWRyYXcuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3JzdmctY2Fpcm8tZHJhdy5jIGIvcnN2Zy1jYWlyby1kcmF3LmMKK2luZGV4IGNhYTkxMDQuLmNmYjdlZDIgMTAwNjQ0CistLS0gYS9yc3ZnLWNhaXJvLWRyYXcuYworKysrIGIvcnN2Zy1jYWlyby1kcmF3LmMKK0BAIC0zOTgsNyArMzk4LDcgQEAgc2V0X2ZvbnRfb3B0aW9uc19mb3JfdGVzdGluZyAoUGFuZ29Db250ZXh0ICpjb250ZXh0KQorIHN0YXRpYyB2b2lkCisgY3JlYXRlX2ZvbnRfY29uZmlnX2Zvcl90ZXN0aW5nIChSc3ZnQ2Fpcm9SZW5kZXIgKnJlbmRlcikKKyB7CistICAgIGNvbnN0IGNoYXIgKmZvbnRfcGF0aCA9IFNSQ0RJUiAiL3Rlc3RzL3Jlc291cmNlcy9MaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiI7CisrICAgIGNvbnN0IGNoYXIgKmZvbnRfcGF0aCA9ICIvdGVzdHMvcmVzb3VyY2VzL0xpYmVyYXRpb25TYW5zLVJlZ3VsYXIudHRmIjsKKyAKKyAgICAgaWYgKHJlbmRlci0+Zm9udF9jb25maWdfZm9yX3Rlc3RpbmcgIT0gTlVMTCkKKyAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Z18yLjQwLjIwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMjAuYmIKaW5kZXggN2Y5ODEyNy4uNmRkMDUzMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMjAuYmIKQEAgLTIwLDYgKzIwLDcgQEAKIAogU1JDX1VSSSArPSAiZmlsZTovL2d0ay1vcHRpb24ucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovLzAwMDEtQXV0by1kZXRlY3QtQnN5bWJvbGljLWZpeGVzLWNvbmZpZ3VyZS1vbi1tYWNPUy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtbm9uLXJlcHJvZHVjaWJsZS1TUkNESVIucGF0Y2ggXAogIgogCiBTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI0OTQ5ZDMxM2IwYzVkOTE2MWE1YzI1OTEwNGFmNTU2OCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnNlY3JldC9saWJzZWNyZXRfMC4xOS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlic2VjcmV0L2xpYnNlY3JldF8wLjE5LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkYTJhNGEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlic2VjcmV0L2xpYnNlY3JldF8wLjE5LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gImxpYnNlY3JldCBpcyBhIGxpYnJhcnkgZm9yIHN0b3JpbmcgYW5kIHJldHJpZXZpbmcgcGFzc3dvcmRzIGFuZCBvdGhlciBzZWNyZXRzIgotREVTQ1JJUFRJT04gPSAiQSBHT2JqZWN0LWJhc2VkIGxpYnJhcnkgZm9yIGFjY2Vzc2luZyB0aGUgU2VjcmV0IFNlcnZpY2UgQVBJIG9mIFwKLXRoZSBmcmVlZGVza3RvcC5vcmcgcHJvamVjdCwgYSBjcm9zcy1kZXNrdG9wIGVmZm9ydCB0byBhY2Nlc3MgcGFzc3dvcmRzLCBcCi10b2tlbnMgYW5kIG90aGVyIHR5cGVzIG9mIHNlY3JldHMuIGxpYnNlY3JldCBwcm92aWRlcyBhIGNvbnZlbmllbnQgd3JhcHBlciBcCi1mb3IgdGhlc2UgbWV0aG9kcyBzbyBjb25zdW1lcnMgZG8gbm90IGhhdmUgdG8gY2FsbCB0aGUgbG93LWxldmVsIERCdXMgbWV0aG9kcy4iCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic2VjcmV0L2lzc3VlcyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTIzYzJhNWUwMTA2Yjk5ZDc1MjM4OTg2NTU5YmI1ZmM2IgotCi1pbmhlcml0IGdub21lYmFzZSBndGstZG9jIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uIG1hbnBhZ2VzCi0KLURFUEVORFMgKz0gImdsaWItMi4wIGxpYmdjcnlwdCBnZXR0ZXh0LW5hdGl2ZSIKLQotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFucGFnZXMsIC0tZGlzYWJsZS1tYW5wYWdlcywgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJlYTY3MzExOWMwMDU3MGQ2NDM0ZjhmZDM2MzZmMWViOCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjg1ODNlMTAxNzk0NTZhZTJjODMwNzVkOTU0NTVmMTU2ZGMwOGRiNjI3OGIzMmJmNGJkNjE4MTkzMzVhMzBlM2EiCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwMjI4LwotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjYgPSAiYXJtIgotCi0jIHZhcGlnZW4ubTQgYnVuZGxlZCB3aXRoIHRoZSB0YXJiYWxsIGRvZXMgbm90IHlldCBoYXZlIG91ciBjcm9zcy1jb21waWxhdGlvbiBmaXhlcwotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgcm0gLWYgJHtTfS9idWlsZC9tNC92YXBpZ2VuLm00Ci19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJzZWNyZXQvbGlic2VjcmV0XzAuMjAuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnNlY3JldC9saWJzZWNyZXRfMC4yMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyNTExYWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJzZWNyZXQvbGlic2VjcmV0XzAuMjAuMS5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gImxpYnNlY3JldCBpcyBhIGxpYnJhcnkgZm9yIHN0b3JpbmcgYW5kIHJldHJpZXZpbmcgcGFzc3dvcmRzIGFuZCBvdGhlciBzZWNyZXRzIgorREVTQ1JJUFRJT04gPSAiQSBHT2JqZWN0LWJhc2VkIGxpYnJhcnkgZm9yIGFjY2Vzc2luZyB0aGUgU2VjcmV0IFNlcnZpY2UgQVBJIG9mIFwKK3RoZSBmcmVlZGVza3RvcC5vcmcgcHJvamVjdCwgYSBjcm9zcy1kZXNrdG9wIGVmZm9ydCB0byBhY2Nlc3MgcGFzc3dvcmRzLCBcCit0b2tlbnMgYW5kIG90aGVyIHR5cGVzIG9mIHNlY3JldHMuIGxpYnNlY3JldCBwcm92aWRlcyBhIGNvbnZlbmllbnQgd3JhcHBlciBcCitmb3IgdGhlc2UgbWV0aG9kcyBzbyBjb25zdW1lcnMgZG8gbm90IGhhdmUgdG8gY2FsbCB0aGUgbG93LWxldmVsIERCdXMgbWV0aG9kcy4iCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic2VjcmV0L2lzc3VlcyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTIzYzJhNWUwMTA2Yjk5ZDc1MjM4OTg2NTU5YmI1ZmM2IgorCitpbmhlcml0IGdub21lYmFzZSBndGstZG9jIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uIG1hbnBhZ2VzCisKK0RFUEVORFMgKz0gImdsaWItMi4wIGxpYmdjcnlwdCBnZXR0ZXh0LW5hdGl2ZSIKKworUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFucGFnZXMsIC0tZGlzYWJsZS1tYW5wYWdlcywgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJkMmRkNjYwYThkNTAyMDk5MzE3YmM4YWY5ZjMwMzAyZSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjU3ZjczZTk0ZWM2MjYzYTE3YTA3N2ZiODA5Y2Y4Y2Y0MjQ2MzdhODk3YTdmMTViNGVlYzQyY2U0YWVmNTI0NDciCisKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwMjI4LworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjYgPSAiYXJtIgorCisjIHZhcGlnZW4ubTQgYnVuZGxlZCB3aXRoIHRoZSB0YXJiYWxsIGRvZXMgbm90IHlldCBoYXZlIG91ciBjcm9zcy1jb21waWxhdGlvbiBmaXhlcworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgcm0gLWYgJHtTfS9idWlsZC9tNC92YXBpZ2VuLm00Cit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE2LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE2LjAuYmIKaW5kZXggZTNkZTNmNi4uYjc3MmMyZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNi4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTYuMC5iYgpAQCAtNDAsNyArNDAsOCBAQAogCiBQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZGlyZWN0ZmInLCBkKX0gXAogICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMSB4Y2InLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSBvcGVuZ2wnLCAnb3BlbmdsJywgJycsIGQpfSIKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSBvcGVuZ2wnLCAnb3BlbmdsJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgdHJhY2UiCiAKIFBBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteD15ZXMgLWVuYWJsZS14bGliLC0td2l0aC14PW5vIC0tZGlzYWJsZS14bGliLCR7WDExREVQRU5EU30iCiBQQUNLQUdFQ09ORklHW3hjYl0gPSAiLS1lbmFibGUteGNiLC0tZGlzYWJsZS14Y2IsbGlieGNiIgpAQCAtNDksNiArNTAsNyBAQAogUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbD15ZXMsLS1kaXNhYmxlLWVnbCx2aXJ0dWFsL2VnbCIKIFBBQ0tBR0VDT05GSUdbZ2xlc3YyXSA9ICItLWVuYWJsZS1nbGVzdjIsLS1kaXNhYmxlLWdsZXN2Mix2aXJ0dWFsL2xpYmdsZXMyIgogUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi0tZW5hYmxlLWdsLC0tZGlzYWJsZS1nbCx2aXJ0dWFsL2xpYmdsIgorUEFDS0FHRUNPTkZJR1t0cmFjZV0gPSAiLS1lbmFibGUtdHJhY2UsLS1kaXNhYmxlLXRyYWNlIgogCiBFWFRSQV9PRUNPTkYgKz0gIiBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RBUkdFVF9GUFUnLCAnc29mdCcsICctLWRpc2FibGUtc29tZS1mbG9hdGluZy1wb2ludCcsICcnLCBkKX0gXApAQCAtNjYsNiArNjgsOCBAQAogCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvL2NhaXJvLXNwaGlueCoKIAlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby8uZGVidWcvY2Fpcm8tZmRyKgogCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvLy5kZWJ1Zy9jYWlyby1zcGhpbngqCisJcm1kaXIgLXAgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7YmluZGlyfQorCXJtZGlyIC1wIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2xpYmRpcn0vY2Fpcm8KIH0KIAogUEFDS0FHRVMgPSsgImNhaXJvLWdvYmplY3QgY2Fpcm8tc2NyaXB0LWludGVycHJldGVyIGNhaXJvLXBlcmYtdXRpbHMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci0xLjAuaW5jCmluZGV4IDVkYzQ1ZWIuLmUwYWM4MTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci0xLjAuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci0xLjAuaW5jCkBAIC0yNCwxMSArMjQsMTEgQEAKICMgRGlzYWJsZSBwcmV0dHkgbXVjaCBldmVyeXRoaW5nLCBvdmVycmlkZSBpbiBwbGF0Zm9ybSBzcGVjaWZpYyBzZXQgdXAKIEVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXF1YXJ0ei1iYWNrZW5kCVwKIAkgICAgIAkgLS1kaXNhYmxlLXdpbjMyLWJhY2tlbmQJXAotCSAgICAgCSAtLWRpc2FibGUtZ2RrLWJhY2tlbmQJCVwKIAkgICAgIAkgLS1kaXNhYmxlLWNleDEwMC1iYWNrZW5kCVwKIAkgICAgIAkgLS1kaXNhYmxlLXRzbGliLWlucHV0CQlcCiAJICAgIAkiCiAKK1BBQ0tBR0VDT05GSUdbZ2RrXSA9ICItLWVuYWJsZS1nZGstYmFja2VuZCwtLWRpc2FibGUtZ2RrLWJhY2tlbmQsZ3RrKzMiCiBQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLWJhY2tlbmQsLS1kaXNhYmxlLXgxMS1iYWNrZW5kLCR7RURFUEVORFNfWDExfSIKIFBBQ0tBR0VDT05GSUdbZ2x4XSA9ICIsLCR7RURFUEVORFNfWDExfSAke0VERVBFTkRTX0dMWH0iCiBQQUNLQUdFQ09ORklHW2VnbF0gPSAiLS1lbmFibGUtZWdsLWJhY2tlbmQsLS1kaXNhYmxlLWVnbC1iYWNrZW5kLCR7RURFUEVORFNfRUdMfSIKQEAgLTM3LDcgKzM3LDcgQEAKIFBBQ0tBR0VDT05GSUdbd2F5bGFuZC1jb21wb3NpdG9yXSA9ICItLWVuYWJsZS13YXlsYW5kLWNvbXBvc2l0b3IsLS1kaXNhYmxlLXdheWxhbmQtY29tcG9zaXRvcix3YXlsYW5kIgogCiAjIERlZmF1bHQgY29uZmlndXJhdGlvbiwgZGlzdHJvcyBtaWdodCB3YW50IHRvIG92ZXJyaWRlCi1QQUNLQUdFQ09ORklHID8/PSAiZWdsIFwKK1BBQ0tBR0VDT05GSUcgPz89ICJlZ2wgZ2RrIFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgZCl9IFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdnbHggeDExJywgJycsIGQpfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybS9tdXNsLWlvY3RsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybS9tdXNsLWlvY3RsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2Q2YzViLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vbXVzbC1pb2N0bC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDQ2YzBmZDZjODI3YThjYjRkMDRlMDY3YmYwNGZhYjU3OWFjNDcxMmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotRGF0ZTogTW9uLCAxOCBKdW4gMjAxOCAxNTowNzowMyArMDEwMAotU3ViamVjdDogW1BBVENIXSB0ZXN0cy9ub3V2ZWF1L3RocmVhZGVkOiBhZGFwdCBpb2N0bCBzaWduYXR1cmUKLQotUE9TSVggc2F5cyBpb2N0bCgpIGhhcyB0aGUgc2lnbmF0dXJlIChpbnQsIGludCwgLi4uKSBidXQgZ2xpYmMgaGFzIGRlY2lkZWQgdG8KLXVzZSAoaW50LCB1bnNpZ25lZCBsb25nIGludCwgLi4uKSBpbnN0ZWFkLgotCi1Vc2UgYSAjaWZkZWYgdG8gYWRhcHQgdGhlIHJlcGxhY2VtZW50IGZ1bmN0aW9uIGFzIGFwcHJvcHJpYXRlLgotLS0tCi0gdGVzdHMvbm91dmVhdS90aHJlYWRlZC5jIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvbm91dmVhdS90aHJlYWRlZC5jIGIvdGVzdHMvbm91dmVhdS90aHJlYWRlZC5jCi1pbmRleCAzNjY5YmNkMy4uZTFjMjdjMDEgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9ub3V2ZWF1L3RocmVhZGVkLmMKLSsrKyBiL3Rlc3RzL25vdXZlYXUvdGhyZWFkZWQuYwotQEAgLTM2LDcgKzM2LDExIEBAIHN0YXRpYyBpbnQgZmFpbGVkOwotIAotIHN0YXRpYyBpbnQgaW1wb3J0X2ZkOwotIAotKyNpZmRlZiBfX0dMSUJDX18KLSBpbnQgaW9jdGwoaW50IGZkLCB1bnNpZ25lZCBsb25nIHJlcXVlc3QsIC4uLikKLSsjZWxzZQotK2ludCBpb2N0bChpbnQgZmQsIGludCByZXF1ZXN0LCAuLi4pCi0rI2VuZGlmCi0gewotIAl2YV9saXN0IHZhOwotIAlpbnQgcmV0OwotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuMTAwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuMTAwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODU5NDI1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40LjEwMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLVNVTU1BUlkgPSAiVXNlcnNwYWNlIGludGVyZmFjZSB0byB0aGUga2VybmVsIERSTSBzZXJ2aWNlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBydW50aW1lIGxpYnJhcnkgZm9yIGFjY2Vzc2luZyB0aGUga2VybmVsIERSTSBzZXJ2aWNlcy4gIERSTSBcCi1zdGFuZHMgZm9yIFwiRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyXCIsIHdoaWNoIGlzIHRoZSBrZXJuZWwgcG9ydGlvbiBvZiB0aGUgXAotXCJEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlXCIgKERSSSkuICBEUkkgaXMgcmVxdWlyZWQgZm9yIG1hbnkgaGFyZHdhcmUgXAotYWNjZWxlcmF0ZWQgT3BlbkdMIGRyaXZlcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmciCi1TRUNUSU9OID0gIngxMS9iYXNlIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly94Zjg2ZHJtLmM7YmVnaW5saW5lPTk7ZW5kbGluZT0zMjttZDU9YzhhM2I5NjFhZjc2NjdjNTMwODE2NzYxZTk0OWRjNzEiCi1QUk9WSURFUyA9ICJkcm0iCi1ERVBFTkRTID0gImxpYnB0aHJlYWQtc3R1YnMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmcvbGliZHJtLyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vbXVzbC1pb2N0bC5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmNDdiYzg3ZTI4MTk4YmE1MjdlNmI0NGZmZGQ2MmY2NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNzdjYzgyODE4NmM5Y2VlYzNlNTZhZTIwMmI0M2VlOTllYjkzMmI0YTg3MjU1MDM4YTgwZThhMTA2MGQwYTVkIgotCi1pbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBtYW5wYWdlcwotCi1QQUNLQUdFQ09ORklHID8/PSAibGlia21zIGludGVsIHJhZGVvbiBhbWRncHUgbm91dmVhdSB2bXdnZnggb21hcCBmcmVlZHJlbm8gdmM0IGV0bmF2aXYgaW5zdGFsbC10ZXN0LXByb2dyYW1zIgotUEFDS0FHRUNPTkZJR1tsaWJrbXNdID0gIi1EbGlia21zPXRydWUsLURsaWJrbXM9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2ludGVsXSA9ICItRGludGVsPXRydWUsLURpbnRlbD1mYWxzZSxsaWJwY2lhY2Nlc3MiCi1QQUNLQUdFQ09ORklHW3JhZGVvbl0gPSAiLURyYWRlb249dHJ1ZSwtRHJhZGVvbj1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbYW1kZ3B1XSA9ICItRGFtZGdwdT10cnVlLC1EYW1kZ3B1PWZhbHNlIgotUEFDS0FHRUNPTkZJR1tub3V2ZWF1XSA9ICItRG5vdXZlYXU9dHJ1ZSwtRG5vdXZlYXU9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3Ztd2dmeF0gPSAiLUR2bXdnZng9dHJ1ZSwtRHZtd2dmeD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbb21hcF0gPSAiLURvbWFwPXRydWUsLURvbWFwPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tleHlub3NdID0gIi1EZXh5bm9zPXRydWUsLURleHlub3M9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2ZyZWVkcmVub10gPSAiLURmcmVlZHJlbm89dHJ1ZSwtRGZyZWVkcmVubz1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbdGVncmFdID0gIi1EdGVncmE9dHJ1ZSwtRHRlZ3JhPWZhbHNlIgotUEFDS0FHRUNPTkZJR1t2YzRdID0gIi1EdmM0PXRydWUsLUR2YzQ9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2V0bmF2aXZdID0gIi1EZXRuYXZpdj10cnVlLC1EZXRuYXZpdj1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbZnJlZWRyZW5vLWtnc2xdID0gIi1EZnJlZWRyZW5vLWtnc2w9dHJ1ZSwtRGZyZWVkcmVuby1rZ3NsPWZhbHNlIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLUR2YWxncmluZD10cnVlLC1EdmFsZ3JpbmQ9ZmFsc2UsdmFsZ3JpbmQiCi1QQUNLQUdFQ09ORklHW2luc3RhbGwtdGVzdC1wcm9ncmFtc10gPSAiLURpbnN0YWxsLXRlc3QtcHJvZ3JhbXM9dHJ1ZSwtRGluc3RhbGwtdGVzdC1wcm9ncmFtcz1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbY2Fpcm8tdGVzdHNdID0gIi1EY2Fpcm8tdGVzdHM9dHJ1ZSwtRGNhaXJvLXRlc3RzPWZhbHNlIgotUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItRHVkZXY9dHJ1ZSwtRHVkZXY9ZmFsc2UsdWRldiIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi1EbWFuLXBhZ2VzPXRydWUsLURtYW4tcGFnZXM9ZmFsc2UsbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgotCi1BTExPV19FTVBUWV8ke1BOfS1kcml2ZXJzID0gIjEiCi1QQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMgJHtQTn0tZHJpdmVycyAke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwIFwKLSAgICAgICAgICAgICAke1BOfS1pbnRlbCAke1BOfS1leHlub3MgJHtQTn0ta21zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUgXAotICAgICAgICAgICAgICR7UE59LWV0bmF2aXYiCi0KLVJSRUNPTU1FTkRTXyR7UE59LWRyaXZlcnMgPSAiJHtQTn0tcmFkZW9uICR7UE59LW5vdXZlYXUgJHtQTn0tb21hcCAke1BOfS1pbnRlbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWV4eW5vcyAke1BOfS1mcmVlZHJlbm8gJHtQTn0tYW1kZ3B1IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXRuYXZpdiIKLQotRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU18ke1BOfS1yYWRlb24gPSAiJHtsaWJkaXJ9L2xpYmRybV9yYWRlb24uc28uKiIKLUZJTEVTXyR7UE59LW5vdXZlYXUgPSAiJHtsaWJkaXJ9L2xpYmRybV9ub3V2ZWF1LnNvLioiCi1GSUxFU18ke1BOfS1vbWFwID0gIiR7bGliZGlyfS9saWJkcm1fb21hcC5zby4qIgotRklMRVNfJHtQTn0taW50ZWwgPSAiJHtsaWJkaXJ9L2xpYmRybV9pbnRlbC5zby4qIgotRklMRVNfJHtQTn0tZXh5bm9zID0gIiR7bGliZGlyfS9saWJkcm1fZXh5bm9zLnNvLioiCi1GSUxFU18ke1BOfS1rbXMgPSAiJHtsaWJkaXJ9L2xpYmttcyouc28uKiIKLUZJTEVTXyR7UE59LWZyZWVkcmVubyA9ICIke2xpYmRpcn0vbGliZHJtX2ZyZWVkcmVuby5zby4qIgotRklMRVNfJHtQTn0tYW1kZ3B1ID0gIiR7bGliZGlyfS9saWJkcm1fYW1kZ3B1LnNvLiogJHtkYXRhZGlyfS8ke1BOfS9hbWRncHUuaWRzIgotRklMRVNfJHtQTn0tZXRuYXZpdiA9ICIke2xpYmRpcn0vbGliZHJtX2V0bmF2aXYuc28uKiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuMTAxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuMTAxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlYzU2NmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC4xMDEuYmIKQEAgLTAsMCArMSw1OSBAQAorU1VNTUFSWSA9ICJVc2Vyc3BhY2UgaW50ZXJmYWNlIHRvIHRoZSBrZXJuZWwgRFJNIHNlcnZpY2VzIgorREVTQ1JJUFRJT04gPSAiVGhlIHJ1bnRpbWUgbGlicmFyeSBmb3IgYWNjZXNzaW5nIHRoZSBrZXJuZWwgRFJNIHNlcnZpY2VzLiAgRFJNIFwKK3N0YW5kcyBmb3IgXCJEaXJlY3QgUmVuZGVyaW5nIE1hbmFnZXJcIiwgd2hpY2ggaXMgdGhlIGtlcm5lbCBwb3J0aW9uIG9mIHRoZSBcCitcIkRpcmVjdCBSZW5kZXJpbmcgSW5mcmFzdHJ1Y3R1cmVcIiAoRFJJKS4gIERSSSBpcyByZXF1aXJlZCBmb3IgbWFueSBoYXJkd2FyZSBcCithY2NlbGVyYXRlZCBPcGVuR0wgZHJpdmVycy4iCitIT01FUEFHRSA9ICJodHRwOi8vZHJpLmZyZWVkZXNrdG9wLm9yZyIKK1NFQ1RJT04gPSAieDExL2Jhc2UiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3hmODZkcm0uYztiZWdpbmxpbmU9OTtlbmRsaW5lPTMyO21kNT1jOGEzYjk2MWFmNzY2N2M1MzA4MTY3NjFlOTQ5ZGM3MSIKK1BST1ZJREVTID0gImRybSIKK0RFUEVORFMgPSAibGlicHRocmVhZC1zdHVicyIKKworU1JDX1VSSSA9ICJodHRwOi8vZHJpLmZyZWVkZXNrdG9wLm9yZy9saWJkcm0vJHtCUH0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImU2YTZmMWI4ODk2MzIxMGIzZDYyYWNkNzMxMGExY2M3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRkZjMxYmFhOGU0OTQ3MzYyNDg2MGJkMTY2Y2U2NTRkYzM0OTg3M2Y3YTZjN2IzMzA1OTY0MjQ5MzE1Yzc4YTciCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIG1hbnBhZ2VzCisKK1BBQ0tBR0VDT05GSUcgPz89ICJsaWJrbXMgaW50ZWwgcmFkZW9uIGFtZGdwdSBub3V2ZWF1IHZtd2dmeCBvbWFwIGZyZWVkcmVubyB2YzQgZXRuYXZpdiBpbnN0YWxsLXRlc3QtcHJvZ3JhbXMiCitQQUNLQUdFQ09ORklHW2xpYmttc10gPSAiLURsaWJrbXM9dHJ1ZSwtRGxpYmttcz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbaW50ZWxdID0gIi1EaW50ZWw9dHJ1ZSwtRGludGVsPWZhbHNlLGxpYnBjaWFjY2VzcyIKK1BBQ0tBR0VDT05GSUdbcmFkZW9uXSA9ICItRHJhZGVvbj10cnVlLC1EcmFkZW9uPWZhbHNlIgorUEFDS0FHRUNPTkZJR1thbWRncHVdID0gIi1EYW1kZ3B1PXRydWUsLURhbWRncHU9ZmFsc2UiCitQQUNLQUdFQ09ORklHW25vdXZlYXVdID0gIi1Ebm91dmVhdT10cnVlLC1Ebm91dmVhdT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdm13Z2Z4XSA9ICItRHZtd2dmeD10cnVlLC1Edm13Z2Z4PWZhbHNlIgorUEFDS0FHRUNPTkZJR1tvbWFwXSA9ICItRG9tYXA9dHJ1ZSwtRG9tYXA9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2V4eW5vc10gPSAiLURleHlub3M9dHJ1ZSwtRGV4eW5vcz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbZnJlZWRyZW5vXSA9ICItRGZyZWVkcmVubz10cnVlLC1EZnJlZWRyZW5vPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t0ZWdyYV0gPSAiLUR0ZWdyYT10cnVlLC1EdGVncmE9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3ZjNF0gPSAiLUR2YzQ9dHJ1ZSwtRHZjND1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbZXRuYXZpdl0gPSAiLURldG5hdml2PXRydWUsLURldG5hdml2PWZhbHNlIgorUEFDS0FHRUNPTkZJR1tmcmVlZHJlbm8ta2dzbF0gPSAiLURmcmVlZHJlbm8ta2dzbD10cnVlLC1EZnJlZWRyZW5vLWtnc2w9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItRHZhbGdyaW5kPXRydWUsLUR2YWxncmluZD1mYWxzZSx2YWxncmluZCIKK1BBQ0tBR0VDT05GSUdbaW5zdGFsbC10ZXN0LXByb2dyYW1zXSA9ICItRGluc3RhbGwtdGVzdC1wcm9ncmFtcz10cnVlLC1EaW5zdGFsbC10ZXN0LXByb2dyYW1zPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tjYWlyby10ZXN0c10gPSAiLURjYWlyby10ZXN0cz10cnVlLC1EY2Fpcm8tdGVzdHM9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3VkZXZdID0gIi1EdWRldj10cnVlLC1EdWRldj1mYWxzZSx1ZGV2IgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLURtYW4tcGFnZXM9dHJ1ZSwtRG1hbi1wYWdlcz1mYWxzZSxsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUiCisKK0FMTE9XX0VNUFRZXyR7UE59LWRyaXZlcnMgPSAiMSIKK1BBQ0tBR0VTID0rICIke1BOfS10ZXN0cyAke1BOfS1kcml2ZXJzICR7UE59LXJhZGVvbiAke1BOfS1ub3V2ZWF1ICR7UE59LW9tYXAgXAorICAgICAgICAgICAgICR7UE59LWludGVsICR7UE59LWV4eW5vcyAke1BOfS1rbXMgJHtQTn0tZnJlZWRyZW5vICR7UE59LWFtZGdwdSBcCisgICAgICAgICAgICAgJHtQTn0tZXRuYXZpdiIKKworUlJFQ09NTUVORFNfJHtQTn0tZHJpdmVycyA9ICIke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwICR7UE59LWludGVsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh5bm9zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1ldG5hdml2IgorCitGSUxFU18ke1BOfS10ZXN0cyA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTXyR7UE59LXJhZGVvbiA9ICIke2xpYmRpcn0vbGliZHJtX3JhZGVvbi5zby4qIgorRklMRVNfJHtQTn0tbm91dmVhdSA9ICIke2xpYmRpcn0vbGliZHJtX25vdXZlYXUuc28uKiIKK0ZJTEVTXyR7UE59LW9tYXAgPSAiJHtsaWJkaXJ9L2xpYmRybV9vbWFwLnNvLioiCitGSUxFU18ke1BOfS1pbnRlbCA9ICIke2xpYmRpcn0vbGliZHJtX2ludGVsLnNvLioiCitGSUxFU18ke1BOfS1leHlub3MgPSAiJHtsaWJkaXJ9L2xpYmRybV9leHlub3Muc28uKiIKK0ZJTEVTXyR7UE59LWttcyA9ICIke2xpYmRpcn0vbGlia21zKi5zby4qIgorRklMRVNfJHtQTn0tZnJlZWRyZW5vID0gIiR7bGliZGlyfS9saWJkcm1fZnJlZWRyZW5vLnNvLioiCitGSUxFU18ke1BOfS1hbWRncHUgPSAiJHtsaWJkaXJ9L2xpYmRybV9hbWRncHUuc28uKiAke2RhdGFkaXJ9LyR7UE59L2FtZGdwdS5pZHMiCitGSUxFU18ke1BOfS1ldG5hdml2ID0gIiR7bGliZGlyfS9saWJkcm1fZXRuYXZpdi5zby4qIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjEwLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjEwLjEuYmIKaW5kZXggYjE3OWEwZS4uZDFjMDkzMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi4xMC4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuMTAuMS5iYgpAQCAtMjcsNyArMjcsNyBAQAogQ09ORklHVVJFX1NDUklQVCA9ICIke1N9L2NvbmZpZ3VyZSIKIEVYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hdXRvaGVhZGVyIC0tZXhjbHVkZT1hdXRvbWFrZSIKIAotUEFDS0FHRUNPTkZJRyA/Pz0gInpsaWIiCitQQUNLQUdFQ09ORklHID8/PSAiemxpYiBwaXhtYXAiCiAKIFBBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0td2l0aC1iemlwMiwtLXdpdGhvdXQtYnppcDIsYnppcDIiCiAjIGhhcmZidXp6IHJlc3VsdHMgaW4gYSBjaXJjdWxhciBkZXBlbmRlbmN5IHNvIGVuYWJsaW5nIGlzIG5vbi10cml2aWFsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXcvMDAwMS1GaXhlZC1jb21waWxhdGlvbi13aXRoLWN1cnJlbnQtbWVzYS12ZXJzaW9ucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xldy8wMDAxLUZpeGVkLWNvbXBpbGF0aW9uLXdpdGgtY3VycmVudC1tZXNhLXZlcnNpb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGYzZTJmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xldy8wMDAxLUZpeGVkLWNvbXBpbGF0aW9uLXdpdGgtY3VycmVudC1tZXNhLXZlcnNpb25zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotRnJvbSA3ZjY1YTM2ODY2ZjRlMjRkZDE0NDZmZTFjOWQyMTQyNGYyOGJjYWJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGV2ZSA8ZGV2ZWVlQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTQgTm92IDIwMTggMjE6MDc6MjkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4ZWQgY29tcGlsYXRpb24gd2l0aCBjdXJyZW50IG1lc2EgdmVyc2lvbnMuCi0KLUFzIHlvdSBjYW4gc2VlIGluCi1odHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL21lc2EvbWVzYS90cmVlL2luY2x1ZGUvR0wvZ2xleHQuaAotbm93IHRoZSBmaWxlIHVzZXMgX19nbF9nbGV4dF9oXyBpbnN0ZWFkIG9mIF9fZ2xleHRfaF8KLUl0J3MgcHJlY2lzZWx5IGNhdXNlZCBieSBjb21taXQgZjdkNDJlZTdkMzE5MjU2NjA4YWQ2MDc3OGY2Nzg3YzE0MGJhZGFkYQotCi1CYWNrb3BydCBub3RlczogCi0KLSogVGhlIG9yaWdpbmFsIHBhdGNoIGFkanVzdHMgYXV0by9zcmMvZ2xld19oZWFkLmggb25seQotKiBpbmNsdWRlL0dML2dsZXcuaCBpcyBub3QgcGFydCBvZiBnaXQgcmVwbyBhbmQgZ2V0cyBjcmVhdGVkIG9uIHRhcmJhbGwKLSAgY3JlYXRpb24KLQotPT4gcGF0Y2ggaW5jbHVkZS9HTC9nbGV3LmggZWl0aGVyIHRvIGNhdXNlIHRoZSBkZXNpcmVkIGZpeAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFsxXQotCi1bMV0gaHR0cHM6Ly9naXRodWIuY29tL25pZ2Vscy1jb20vZ2xldy9jb21taXQvN2Y2NWEzNjg2NmY0ZTI0ZGQxNDQ2ZmUxYzlkMjE0MjRmMjhiY2FiZAotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgotLS0tCi0gYXV0by9zcmMvZ2xld19oZWFkLmggfCAzICsrLQotIGluY2x1ZGUvR0wvZ2xldy5oICAgIHwgMyArKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2F1dG8vc3JjL2dsZXdfaGVhZC5oIGIvYXV0by9zcmMvZ2xld19oZWFkLmgKLWluZGV4IGMxOWNlZmIuLjhmMzEzZDkgMTAwNjQ0Ci0tLS0gYS9hdXRvL3NyYy9nbGV3X2hlYWQuaAotKysrIGIvYXV0by9zcmMvZ2xld19oZWFkLmgKLUBAIC0xNCw3ICsxNCw3IEBACi0gI2lmIGRlZmluZWQoX19SRUdBTF9IX18pCi0gI2Vycm9yIFJlZ2FsLmggaW5jbHVkZWQgYmVmb3JlIGdsZXcuaAotICNlbmRpZgotLSNpZiBkZWZpbmVkKF9fZ2xleHRfaF8pIHx8IGRlZmluZWQoX19HTEVYVF9IXykKLSsjaWYgZGVmaW5lZChfX2dsZXh0X2hfKSB8fCBkZWZpbmVkKF9fR0xFWFRfSF8pIHx8IGRlZmluZWQoX19nbF9nbGV4dF9oXykKLSAjZXJyb3IgZ2xleHQuaCBpbmNsdWRlZCBiZWZvcmUgZ2xldy5oCi0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19nbF9BVElfaF8pCi1AQCAtMzAsNiArMzAsNyBAQAotICNkZWZpbmUgX19YX0dMX0gKLSAjZGVmaW5lIF9fZ2xleHRfaF8KLSAjZGVmaW5lIF9fR0xFWFRfSF8KLSsjZGVmaW5lIF9fZ2xfZ2xleHRfaF8KLSAjZGVmaW5lIF9fZ2xfQVRJX2hfCi0gCi0gI2lmIGRlZmluZWQoX1dJTjMyKQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvR0wvZ2xldy5oIGIvaW5jbHVkZS9HTC9nbGV3LmgKLWluZGV4IGI1YjY5ODcuLmE5ZjllNGIgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL0dML2dsZXcuaAotKysrIGIvaW5jbHVkZS9HTC9nbGV3LmgKLUBAIC05Myw3ICs5Myw3IEBACi0gI2lmIGRlZmluZWQoX19SRUdBTF9IX18pCi0gI2Vycm9yIFJlZ2FsLmggaW5jbHVkZWQgYmVmb3JlIGdsZXcuaAotICNlbmRpZgotLSNpZiBkZWZpbmVkKF9fZ2xleHRfaF8pIHx8IGRlZmluZWQoX19HTEVYVF9IXykKLSsjaWYgZGVmaW5lZChfX2dsZXh0X2hfKSB8fCBkZWZpbmVkKF9fR0xFWFRfSF8pIHx8IGRlZmluZWQoX19nbF9nbGV4dF9oXykKLSAjZXJyb3IgZ2xleHQuaCBpbmNsdWRlZCBiZWZvcmUgZ2xldy5oCi0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19nbF9BVElfaF8pCi1AQCAtMTA5LDYgKzEwOSw3IEBACi0gI2RlZmluZSBfX1hfR0xfSAotICNkZWZpbmUgX19nbGV4dF9oXwotICNkZWZpbmUgX19HTEVYVF9IXwotKyNkZWZpbmUgX19nbF9nbGV4dF9oXwotICNkZWZpbmUgX19nbF9BVElfaF8KLSAKLSAjaWYgZGVmaW5lZChfV0lOMzIpCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXdfMi4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXdfMi4xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2ZjQzNDAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZ2xldy9nbGV3XzIuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuR0wgZXh0ZW5zaW9uIGxvYWRpbmcgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIlRoZSBPcGVuR0wgRXh0ZW5zaW9uIFdyYW5nbGVyIExpYnJhcnkgKEdMRVcpIGlzIGEgY3Jvc3MtcGxhdGZvcm0gb3Blbi1zb3VyY2UgQy9DKysgZXh0ZW5zaW9uIGxvYWRpbmcgbGlicmFyeS4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ2xldy5zb3VyY2Vmb3JnZS5uZXQvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2dyb3VwX2lkPTY3NTg2IgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MmFjMjUxNTU4ZGU2ODVjNmI5NDc4ZDg5YmUzMTQ5YzIiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvZ2xldy9nbGV3LyR7UFZ9L2dsZXctJHtQVn0udGd6IFwKLSAgICAgICAgICAgZmlsZTovL25vLXN0cmlwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4ZWQtY29tcGlsYXRpb24td2l0aC1jdXJyZW50LW1lc2EtdmVyc2lvbnMucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiMmFiMTIzMzEwMzNkZGZhYTUwZGMzOTM0NTM0Mzk4MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNGRlOTFlN2U2NzYzMDM5YmMxMTk0MDA5NWNkOWM3Zjg4MGJhYmE4MjE5NmE3NzY1ZjcyN2FjMDVhOTkzYzk1IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9nbGV3L2ZpbGVzL2dsZXciCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvZ2xldy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgotCi1pbmhlcml0IGxpYl9wYWNrYWdlIHBrZ2NvbmZpZyBmZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdvcGVuZ2wnLCAnZWdsLWdsZXMyJywgZCl9IgotCi0jIFRoZSBvcGVuZ2wgYW5kIGVnbC1YWFggb3B0aW9ucyBhcmUgZXhjbHVzaXZlLCBlbmFibGUgb25seSBvbmUuCi1QQUNLQUdFQ09ORklHW29wZW5nbF0gPSAiU1lTVEVNPSdsaW51eCcsLHZpcnR1YWwvbGlieDExIHZpcnR1YWwvbGliZ2wgbGliZ2x1IGxpYnhleHQgbGlieGkgbGlieG11IgotUEFDS0FHRUNPTkZJR1tlZ2wtZ2xlczJdID0gIlNZU1RFTT0nbGludXgtZWdsJyBHTEVXX05PX0dMVT0nLURHTEVXX05PX0dMVScgTERGTEFHUy5HTD0nLWxFR0wgLWxHTEVTdjInLCx2aXJ0dWFsL2VnbCB2aXJ0dWFsL2xpYmdsZXMyIgotCi1DRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCi0jIE92ZXJyaWRlIFNZU1RFTSAodmlhIFBBQ0tBR0VDT05GSUdfQ09ORkFSR1MpIHRvIGF2b2lkIGNhbGxpbmcgY29uZmlnLmd1ZXNzLAotIyB3ZSdyZSBjcm9zcy1jb21waWxpbmcuIFBhc3Mgb3VyIENGTEFHUyB2aWEgUE9QVCBhcyB0aGF0J3MgdGhlIG9wdGltaXNhdGlvbgotIyB2YXJpYWJsZSBhbmQgc2FmZWx5IG92ZXJ3cml0dGVuLgotRVhUUkFfT0VNQUtFID0gIiR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gXAotICAgICAgICAgICAgICAgIENDPScke0NDfScgTEQ9JyR7Q0N9JyBTVFJJUD0nJyBcCi0gICAgICAgICAgICAgICAgTERGTEFHUy5FWFRSQT0nJHtMREZMQUdTfScgXAotICAgICAgICAgICAgICAgIFBPUFQ9JyR7Q0ZMQUdTfScgXAotICAgICAgICAgICAgICAgIEdMRVdfUFJFRklYPScke3ByZWZpeH0nIEJJTkRJUj0nJHtiaW5kaXJ9JyBcCi0gICAgICAgICAgICAgICAgTElCRElSPScke2xpYmRpcn0nIElOQ0RJUj0nJHtpbmNsdWRlZGlyfS9HTCcgUEtHRElSPScke2xpYmRpcn0vcGtnY29uZmlnJyIKLQotZG9fY29tcGlsZSgpIHsKLQlvZV9ydW5tYWtlCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLmFsbAotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZ2xldy9nbGV3XzIuMi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZ2xldy9nbGV3XzIuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5NDg0NDQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXdfMi4yLjAuYmIKQEAgLTAsMCArMSw0NCBAQAorU1VNTUFSWSA9ICJPcGVuR0wgZXh0ZW5zaW9uIGxvYWRpbmcgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIlRoZSBPcGVuR0wgRXh0ZW5zaW9uIFdyYW5nbGVyIExpYnJhcnkgKEdMRVcpIGlzIGEgY3Jvc3MtcGxhdGZvcm0gb3Blbi1zb3VyY2UgQy9DKysgZXh0ZW5zaW9uIGxvYWRpbmcgbGlicmFyeS4iCitIT01FUEFHRSA9ICJodHRwOi8vZ2xldy5zb3VyY2Vmb3JnZS5uZXQvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2dyb3VwX2lkPTY3NTg2IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MmFjMjUxNTU4ZGU2ODVjNmI5NDc4ZDg5YmUzMTQ5YzIiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvZ2xldy9nbGV3LyR7UFZ9L2dsZXctJHtQVn0udGd6IFwKKyAgICAgICAgICAgZmlsZTovL25vLXN0cmlwLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzU3OTE2NGJjY2FlZjA5ZTM2YzBhZjdmNGZkNWM3YzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDRmYzgyODkzY2ZiMDAxMDk1NzhkMGExYTIzMzdmYjhjYTMzNWIzY2VjY2Y5N2I5N2U1Y2M3ZjA4ZTQzNTNlMSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZ2xldy9maWxlcy9nbGV3IgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2dsZXcvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKKworaW5oZXJpdCBsaWJfcGFja2FnZSBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnb3BlbmdsJywgJ2VnbC1nbGVzMicsIGQpfSIKKworIyBUaGUgb3BlbmdsIGFuZCBlZ2wtWFhYIG9wdGlvbnMgYXJlIGV4Y2x1c2l2ZSwgZW5hYmxlIG9ubHkgb25lLgorUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIlNZU1RFTT0nbGludXgnLCx2aXJ0dWFsL2xpYngxMSB2aXJ0dWFsL2xpYmdsIGxpYmdsdSBsaWJ4ZXh0IGxpYnhpIGxpYnhtdSwsLGVnbC1nbGVzMiIKK1BBQ0tBR0VDT05GSUdbZWdsLWdsZXMyXSA9ICJTWVNURU09J2xpbnV4LWVnbCcgR0xFV19OT19HTFU9Jy1ER0xFV19OT19HTFUnIExERkxBR1MuR0w9Jy1sRUdMIC1sR0xFU3YyJywsdmlydHVhbC9lZ2wgdmlydHVhbC9saWJnbGVzMiwsLG9wZW5nbCIKKworQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgorIyBPdmVycmlkZSBTWVNURU0gKHZpYSBQQUNLQUdFQ09ORklHX0NPTkZBUkdTKSB0byBhdm9pZCBjYWxsaW5nIGNvbmZpZy5ndWVzcywKKyMgd2UncmUgY3Jvc3MtY29tcGlsaW5nLiBQYXNzIG91ciBDRkxBR1MgdmlhIFBPUFQgYXMgdGhhdCdzIHRoZSBvcHRpbWlzYXRpb24KKyMgdmFyaWFibGUgYW5kIHNhZmVseSBvdmVyd3JpdHRlbi4KK0VYVFJBX09FTUFLRSA9ICIke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKKyAgICAgICAgICAgICAgICBDQz0nJHtDQ30nIExEPScke0NDfScgU1RSSVA9JycgXAorICAgICAgICAgICAgICAgIExERkxBR1MuRVhUUkE9JyR7TERGTEFHU30nIFwKKyAgICAgICAgICAgICAgICBQT1BUPScke0NGTEFHU30nIFwKKyAgICAgICAgICAgICAgICBHTEVXX1BSRUZJWD0nJHtwcmVmaXh9JyBCSU5ESVI9JyR7YmluZGlyfScgXAorICAgICAgICAgICAgICAgIExJQkRJUj0nJHtsaWJkaXJ9JyBJTkNESVI9JyR7aW5jbHVkZWRpcn0vR0wnIFBLR0RJUj0nJHtsaWJkaXJ9L3BrZ2NvbmZpZyciCisKK2RvX2NvbXBpbGUoKSB7CisJb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC5hbGwKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18yLjAuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18yLjAuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWNmODU0ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMi4wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1TVU1NQVJZID0gIkhhcmR3YXJlIGFjY2VsZXJhdGVkIEpQRUcgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAibGlianBlZy10dXJibyBpcyBhIGRlcml2YXRpdmUgb2YgbGlianBlZyB0aGF0IHVzZXMgU0lNRCBpbnN0cnVjdGlvbnMgKE1NWCwgU1NFMiwgTkVPTikgdG8gYWNjZWxlcmF0ZSBiYXNlbGluZSBKUEVHIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpYmpwZWctdHVyYm8ub3JnLyIKLQotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jZGpwZWcuaDtlbmRsaW5lPTEzO21kNT04MTg0YmNjN2M0YWM3YjllZGM2YTdiYzAwZjIzMWQwYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9qcGVnbGliLmg7ZW5kbGluZT0xNjttZDU9N2VhOTdkYzgzYjBmNTkwNTJlZTgzN2U2MWVmMGUwOGYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGpwZWcuYztlbmRsaW5lPTExO21kNT1jNTllMTk4MTFjMDA2Y2IzOGY4MmQ2NDc3MTM0ZDMxNCBcCi0iCi1ERVBFTkRTX2FwcGVuZF94ODYtNjRfY2xhc3MtdGFyZ2V0ID0gIiBuYXNtLW5hdGl2ZSIKLURFUEVORFNfYXBwZW5kX3g4Nl9jbGFzcy10YXJnZXQgICAgPSAiIG5hc20tbmF0aXZlIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmpwZWctdHVyYm8tZml4LXBhY2thZ2VfcWEtZXJyb3IucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiZDA3ZmRkZjI2ZjlkZWY3YmFiMDI3MzllYjY1NTExNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MjQ2ZGU1MDA1NDRkNGVlNDA4ZWU1NzA0OGFhNGFhZGM2ZjE2NWZjMTdmMTQxZGE4NzY2OWYyMGVkMzI0MWI3IgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlianBlZy10dXJiby9maWxlcy8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvbGlianBlZy10dXJiby9maWxlcy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgotCi1QRT0gIjEiCi0KLSMgRHJvcC1pbiByZXBsYWNlbWVudCBmb3IganBlZwotUFJPVklERVMgPSAianBlZyIKLVJQUk9WSURFU18ke1BOfSArPSAianBlZyIKLVJSRVBMQUNFU18ke1BOfSArPSAianBlZyIKLVJDT05GTElDVFNfJHtQTn0gKz0gImpwZWciCi0KLWluaGVyaXQgY21ha2UgcGtnY29uZmlnCi0KLSMgQWRkIG5hc20tbmF0aXZlIGRlcGVuZGVuY3kgY29uc2lzdGVudGx5IGZvciBhbGwgYnVpbGQgYXJjaGVzIGlzIGhhcmQKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLURXSVRIX1NJTUQ9RmFsc2UiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1EV0lUSF9TSU1EPUZhbHNlIgotCi0jIFdvcmsgYXJvdW5kIG1pc3NpbmcgeDMyIEFCSSBzdXBwb3J0Ci1FWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiLURXSVRIX1NJTUQ9RmFsc2UiLCAiIiwgZCl9IgotCi0jIFdvcmsgYXJvdW5kIG1pc3Npbmcgbm9uLWZsb2F0aW5nIHBvaW50IEFCSSBzdXBwb3J0IGluIE1JUFMKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIk1JUFNQS0dTRlhfRlBVIiwgIi1uZiIsICItRFdJVEhfU0lNRD1GYWxzZSIsICIiLCBkKX0iCi0KLSMgUHJvdmlkZSBhIHdvcmthcm91bmQgaWYgQWx0aXZlYyB1bml0IGlzIG5vdCBwcmVzZW50IGluIFBQQwotRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0X3Bvd2VycGMgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIiwgIi1EV0lUSF9TSU1EPUZhbHNlIiwgZCl9IgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0X3Bvd2VycGM2NCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIiLCAiLURXSVRIX1NJTUQ9RmFsc2UiLCBkKX0iCi0KLURFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfYXJtdjQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0NDQVJHUycsICctbXRodW1iJywgJy1mb21pdC1mcmFtZS1wb2ludGVyJywgJycsIGQpfSIKLURFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfYXJtdjUgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0NDQVJHUycsICctbXRodW1iJywgJy1mb21pdC1mcmFtZS1wb2ludGVyJywgJycsIGQpfSIKLQotUEFDS0FHRVMgPSsgImpwZWctdG9vbHMgbGlidHVyYm9qcGVnIgotCi1ERVNDUklQVElPTl9qcGVnLXRvb2xzID0gIlRoZSBqcGVnLXRvb2xzIHBhY2thZ2UgaW5jbHVkZXMgY2xpZW50IHByb2dyYW1zIHRvIGFjY2VzcyBsaWJqcGVnIGZ1bmN0aW9uYWxpdHkuICBUaGVzZSB0b29scyBhbGxvdyBmb3IgdGhlIGNvbXByZXNzaW9uLCBkZWNvbXByZXNzaW9uLCB0cmFuc2Zvcm1hdGlvbiBhbmQgZGlzcGxheSBvZiBKUEVHIGZpbGVzIGFuZCBiZW5jaG1hcmtpbmcgb2YgdGhlIGxpYmpwZWcgbGlicmFyeS4iCi1GSUxFU19qcGVnLXRvb2xzID0gIiR7YmluZGlyfS8qIgotCi1ERVNDUklQVElPTl9saWJ0dXJib2pwZWcgPSAiQSBTSU1ELWFjY2VsZXJhdGVkIEpQRUcgY29kZWMgd2hpY2ggcHJvdmlkZXMgb25seSBUdXJib0pQRUcgQVBJcyIKLUZJTEVTX2xpYnR1cmJvanBlZyA9ICIke2xpYmRpcn0vbGlidHVyYm9qcGVnLnNvLioiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18yLjAuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18yLjAuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjQ5ZmQzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzIuMC40LmJiCkBAIC0wLDAgKzEsNTkgQEAKK1NVTU1BUlkgPSAiSGFyZHdhcmUgYWNjZWxlcmF0ZWQgSlBFRyBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJsaWJqcGVnLXR1cmJvIGlzIGEgZGVyaXZhdGl2ZSBvZiBsaWJqcGVnIHRoYXQgdXNlcyBTSU1EIGluc3RydWN0aW9ucyAoTU1YLCBTU0UyLCBORU9OKSB0byBhY2NlbGVyYXRlIGJhc2VsaW5lIEpQRUcgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24iCitIT01FUEFHRSA9ICJodHRwOi8vbGlianBlZy10dXJiby5vcmcvIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2NkanBlZy5oO2VuZGxpbmU9MTM7bWQ1PTgxODRiY2M3YzRhYzdiOWVkYzZhN2JjMDBmMjMxZDBiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2pwZWdsaWIuaDtlbmRsaW5lPTE2O21kNT03ZWE5N2RjODNiMGY1OTA1MmVlODM3ZTYxZWYwZTA4ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kanBlZy5jO2VuZGxpbmU9MTE7bWQ1PWM1OWUxOTgxMWMwMDZjYjM4ZjgyZDY0NzcxMzRkMzE0IFwKKyIKK0RFUEVORFNfYXBwZW5kX3g4Ni02NF9jbGFzcy10YXJnZXQgPSAiIG5hc20tbmF0aXZlIgorREVQRU5EU19hcHBlbmRfeDg2X2NsYXNzLXRhcmdldCAgICA9ICIgbmFzbS1uYXRpdmUiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGlianBlZy10dXJiby1maXgtcGFja2FnZV9xYS1lcnJvci5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImQwMWQ5ZTBjMjhjMjdiYzBkZTlmNGUyZThmZjQ5ODU1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMzZGQ4NTQ3ZWZkNTU0MzYzOWU4OTBlZmJmMmVmNTJkNWEyMWRmODFmYWY0MWJiOTQwNjU3YWY5MTZhMjM0MDYiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJqcGVnLXR1cmJvL2ZpbGVzLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9saWJqcGVnLXR1cmJvL2ZpbGVzLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCisKK1BFPSAiMSIKKworIyBEcm9wLWluIHJlcGxhY2VtZW50IGZvciBqcGVnCitQUk9WSURFUyA9ICJqcGVnIgorUlBST1ZJREVTXyR7UE59ICs9ICJqcGVnIgorUlJFUExBQ0VTXyR7UE59ICs9ICJqcGVnIgorUkNPTkZMSUNUU18ke1BOfSArPSAianBlZyIKKworaW5oZXJpdCBjbWFrZSBwa2djb25maWcKKworZXhwb3J0IE5BU01FTlYgPSAiLS1kZWJ1Zy1wcmVmaXgtbWFwPSR7V09SS0RJUn09L3Vzci9zcmMvZGVidWcvJHtQTn0vJHtFWFRFTkRQRX0ke1BWfS0ke1BSfSIKKworIyBBZGQgbmFzbS1uYXRpdmUgZGVwZW5kZW5jeSBjb25zaXN0ZW50bHkgZm9yIGFsbCBidWlsZCBhcmNoZXMgaXMgaGFyZAorRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtRFdJVEhfU0lNRD1GYWxzZSIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgLURXSVRIX1NJTUQ9RmFsc2UiCisKKyMgV29yayBhcm91bmQgbWlzc2luZyB4MzIgQUJJIHN1cHBvcnQKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICItRFdJVEhfU0lNRD1GYWxzZSIsICIiLCBkKX0iCisKKyMgV29yayBhcm91bmQgbWlzc2luZyBub24tZmxvYXRpbmcgcG9pbnQgQUJJIHN1cHBvcnQgaW4gTUlQUworRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiTUlQU1BLR1NGWF9GUFUiLCAiLW5mIiwgIi1EV0lUSF9TSU1EPUZhbHNlIiwgIiIsIGQpfSIKKworIyBQcm92aWRlIGEgd29ya2Fyb3VuZCBpZiBBbHRpdmVjIHVuaXQgaXMgbm90IHByZXNlbnQgaW4gUFBDCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXRfcG93ZXJwYyA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIiLCAiLURXSVRIX1NJTUQ9RmFsc2UiLCBkKX0iCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXRfcG93ZXJwYzY0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJhbHRpdmVjIiwgIiIsICItRFdJVEhfU0lNRD1GYWxzZSIsIGQpfSIKKworREVCVUdfT1BUSU1JWkFUSU9OX2FwcGVuZF9hcm12NCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfQ0NBUkdTJywgJy1tdGh1bWInLCAnLWZvbWl0LWZyYW1lLXBvaW50ZXInLCAnJywgZCl9IgorREVCVUdfT1BUSU1JWkFUSU9OX2FwcGVuZF9hcm12NSA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfQ0NBUkdTJywgJy1tdGh1bWInLCAnLWZvbWl0LWZyYW1lLXBvaW50ZXInLCAnJywgZCl9IgorCitQQUNLQUdFUyA9KyAianBlZy10b29scyBsaWJ0dXJib2pwZWciCisKK0RFU0NSSVBUSU9OX2pwZWctdG9vbHMgPSAiVGhlIGpwZWctdG9vbHMgcGFja2FnZSBpbmNsdWRlcyBjbGllbnQgcHJvZ3JhbXMgdG8gYWNjZXNzIGxpYmpwZWcgZnVuY3Rpb25hbGl0eS4gIFRoZXNlIHRvb2xzIGFsbG93IGZvciB0aGUgY29tcHJlc3Npb24sIGRlY29tcHJlc3Npb24sIHRyYW5zZm9ybWF0aW9uIGFuZCBkaXNwbGF5IG9mIEpQRUcgZmlsZXMgYW5kIGJlbmNobWFya2luZyBvZiB0aGUgbGlianBlZyBsaWJyYXJ5LiIKK0ZJTEVTX2pwZWctdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCisKK0RFU0NSSVBUSU9OX2xpYnR1cmJvanBlZyA9ICJBIFNJTUQtYWNjZWxlcmF0ZWQgSlBFRyBjb2RlYyB3aGljaCBwcm92aWRlcyBvbmx5IFR1cmJvSlBFRyBBUElzIgorRklMRVNfbGlidHVyYm9qcGVnID0gIiR7bGliZGlyfS9saWJ0dXJib2pwZWcuc28uKiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZV9naXQuYmIKaW5kZXggODI3MjAwNC4uYTFhMjk1ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9rbXNjdWJlL2ttc2N1YmVfZ2l0LmJiCkBAIC02LDcgKzYsNyBAQAogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9rbXNjdWJlLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9OGIzMDlkNGVlNjdiNzMxNWZmNzM4MTI3MGRkNjMxZmIiCiAKLVNSQ1JFViA9ICJmNjMyYjIzYTUyOGVkNmI0ZTFmZGRkNzc0ZGIwMDVjMzBhYjY1NTY4IgorU1JDUkVWID0gIjc2YmI1N2Q1MzljYjQzZDI2N2U1NjEwMjRjMzRlMDMxYmYzNTFlMDQiCiBTUkNfVVJJID0gImdpdDovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvbWVzYS9rbXNjdWJlO2JyYW5jaD1tYXN0ZXI7cHJvdG9jb2w9aHR0cHMgXAogICAgIGZpbGU6Ly9kZXRlY3QtZ3N0X2JvX21hcC1fdW5tYXAtYW5kLXVzZS1pdC1vci1hdm9pZC1pdC5wYXRjaCIKIFVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2ZpbGVzLzAwMDEtZGlzcGF0Y2hfY29tbW9uLmgtZGVmaW5lLWFsc28tRUdMX05PX1gxMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2ZpbGVzLzAwMDEtZGlzcGF0Y2hfY29tbW9uLmgtZGVmaW5lLWFsc28tRUdMX05PX1gxMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjYyOTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvZmlsZXMvMDAwMS1kaXNwYXRjaF9jb21tb24uaC1kZWZpbmUtYWxzby1FR0xfTk9fWDExLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gNmYxNWNjMjhkMTdjZmRkODZmNTk3NGYwNmFkOTdiOGFmZWRkNTYyNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjUgT2N0IDIwMTkgMTE6MDk6MzQgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZGlzcGF0Y2hfY29tbW9uLmg6IGRlZmluZSBhbHNvIEVHTF9OT19YMTEKKworTUVTQV9FR0xfTk9fWDExX0hFQURFUlMgd2FzIHJlbmFtZWQgdG8gRUdMX05PX1gxMSBpbjoKK2h0dHBzOi8vZ2l0aHViLmNvbS9tZXNhM2QvbWVzYS9jb21taXQvNjIwMmExM2I3MWUxOGRjMzFiYTdlMmY0ZWE5MTViNjdlYWNjMWRkYgorCitTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIHNyYy9kaXNwYXRjaF9jb21tb24uaCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Rpc3BhdGNoX2NvbW1vbi5oIGIvc3JjL2Rpc3BhdGNoX2NvbW1vbi5oCitpbmRleCBkY2IzYTM1Li5jMjA2MjUzIDEwMDY0NAorLS0tIGEvc3JjL2Rpc3BhdGNoX2NvbW1vbi5oCisrKysgYi9zcmMvZGlzcGF0Y2hfY29tbW9uLmgKK0BAIC01Miw2ICs1Miw3IEBACisgICogc2hvdWxkIGRvIHRoZSBzYW1lCisgICovCisgIyAgZGVmaW5lIE1FU0FfRUdMX05PX1gxMV9IRUFERVJTIDEKKysjICBkZWZpbmUgRUdMX05PX1gxMSAxCisgIyBlbmRpZgorICNpbmNsdWRlICJlcG94eS9lZ2wuaCIKKyAjZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS41LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxYTJjOTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS41LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1TVU1NQVJZID0gIk9wZW5HTCBmdW5jdGlvbiBwb2ludGVyIG1hbmFnZW1lbnQgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkl0IGhpZGVzIHRoZSBjb21wbGV4aXR5IG9mIGRsb3BlbigpLCBkbHN5bSgpLCBcCi1nbFhHZXRQcm9jQWRkcmVzcygpLCBlZ2xHZXRQcm9jQWRkcmVzcygpLCBldGMuIGZyb20gdGhlIGFwcCBkZXZlbG9wZXIsIHdpdGggXAotdmVyeSBsaXR0bGUga25vd2xlZGdlIG5lZWRlZCBvbiB0aGVpciBwYXJ0LiBUaGV5IGdldCB0byByZWFkIEdMIHNwZWNzIGFuZCBcCi13cml0ZSBjb2RlIHVzaW5nIHVuZGVjb3JhdGVkIGZ1bmN0aW9uIG5hbWVzIGxpa2UgZ2xDb21waWxlU2hhZGVyKCkuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NThlZjRjODBkNDAxZTA3YmQ5ZWU4YjZiNThjZjQ2NGIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImUyODQ1ZGU4ZDI3ODJiMmQzMWMwMWFlOGQ3Y2Q0Y2JiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAwMjk1OGM1NTI4MzIxZWRkNTM0NDAyMzVkM2M0NGU3MWI1YjFlMDliOTE3N2U4ZGFmNjc3NDUwYjZjNDQzM2QiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS9yZWxlYXNlcyIKLQotaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFU19jbGFzcy1uYXRpdmUgPSAiIgotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi0KLVBBQ0tBR0VDT05GSUdbZWdsXSA9ICItRGVnbD15ZXMsIC1EZWdsPW5vLCB2aXJ0dWFsL2VnbCIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItRGdseD15ZXMsIC1EZ2x4PW5vIC1EeDExPWZhbHNlLCB2aXJ0dWFsL2xpYngxMSB2aXJ0dWFsL2xpYmdsIgotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSBlZ2wiCi0KLUVYVFJBX09FTUVTT04gKz0gIi1EdGVzdHM9ZmFsc2UiCi0KLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gImVnbCB4MTEiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICJlZ2wgeDExIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLSMgVGhpcyB3aWxsIGVuc3VyZSB0aGF0IGRsb3BlbiB3aWxsIGF0dGVtcHQgb25seSBHTCBsaWJyYXJpZXMgcHJvdmlkZWQgYnkgaG9zdAotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWNocnBhdGggLS1kZWxldGUgJHtEfSR7bGliZGlyfS8qLnNvCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQljaHJwYXRoIC0tZGVsZXRlICR7RH0ke2xpYmRpcn0vKi5zbwotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS41LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eV8xLjUuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjk4Njc0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS41LjQuYmIKQEAgLTAsMCArMSw0MyBAQAorU1VNTUFSWSA9ICJPcGVuR0wgZnVuY3Rpb24gcG9pbnRlciBtYW5hZ2VtZW50IGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJJdCBoaWRlcyB0aGUgY29tcGxleGl0eSBvZiBkbG9wZW4oKSwgZGxzeW0oKSwgXAorZ2xYR2V0UHJvY0FkZHJlc3MoKSwgZWdsR2V0UHJvY0FkZHJlc3MoKSwgZXRjLiBmcm9tIHRoZSBhcHAgZGV2ZWxvcGVyLCB3aXRoIFwKK3ZlcnkgbGl0dGxlIGtub3dsZWRnZSBuZWVkZWQgb24gdGhlaXIgcGFydC4gVGhleSBnZXQgdG8gcmVhZCBHTCBzcGVjcyBhbmQgXAord3JpdGUgY29kZSB1c2luZyB1bmRlY29yYXRlZCBmdW5jdGlvbiBuYW1lcyBsaWtlIGdsQ29tcGlsZVNoYWRlcigpLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU4ZWY0YzgwZDQwMWUwN2JkOWVlOGI2YjU4Y2Y0NjRiIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc3BhdGNoX2NvbW1vbi5oLWRlZmluZS1hbHNvLUVHTF9OT19YMTEucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMDBmNDdhZDQ0NzMyMWY5ZGM1OWY4NWJjMWM5ZDA0NjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGJkMmNjNjgxZGZlZmZkZWY3MzljYjI5OTEzZjhjM2NhYTQ3YTg4YTQ1MWZkMmJjNmU2MDZjMDI5OTcyODlkMiIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0L2xpYmVwb3h5L3JlbGVhc2VzIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBmZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTX2NsYXNzLW5hdGl2ZSA9ICIiCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVNfY2xhc3MtbmF0aXZlc2RrID0gIiIKKworUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi1EZWdsPXllcywgLURlZ2w9bm8sIHZpcnR1YWwvZWdsIgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EZ2x4PXllcywgLURnbHg9bm8gLUR4MTE9ZmFsc2UsIHZpcnR1YWwvbGlieDExIHZpcnR1YWwvbGliZ2wiCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IGVnbCIKKworRVhUUkFfT0VNRVNPTiArPSAiLUR0ZXN0cz1mYWxzZSIKKworUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiZWdsIHgxMSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gImVnbCB4MTEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworIyBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgZGxvcGVuIHdpbGwgYXR0ZW1wdCBvbmx5IEdMIGxpYnJhcmllcyBwcm92aWRlZCBieSBob3N0Citkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJY2hycGF0aCAtLWRlbGV0ZSAke0R9JHtsaWJkaXJ9Lyouc28KK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworCWNocnBhdGggLS1kZWxldGUgJHtEfSR7bGliZGlyfS8qLnNvCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvMDAwMS1GaXhlZC1idWctNDUzOC12YWxpZGF0ZS1pbWFnZS1zaXplLXdoZW4tbG9hZGluZy1CTVAtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyLzAwMDEtRml4ZWQtYnVnLTQ1MzgtdmFsaWRhdGUtaW1hZ2Utc2l6ZS13aGVuLWxvYWRpbmctQk1QLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc0ZGVjYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvMDAwMS1GaXhlZC1idWctNDUzOC12YWxpZGF0ZS1pbWFnZS1zaXplLXdoZW4tbG9hZGluZy1CTVAtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSA4NTEzOGMxZWM2NzNlMDUyNjNhZTY2NmJhZjYxZjc5Mzg0ZGFmN2UwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU2FtIExhbnRpbmdhIDxzbG91a2VuQGxpYnNkbC5vcmc+Ci1EYXRlOiBUdWUsIDMwIEp1bCAyMDE5IDExOjAwOjAwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeGVkIGJ1ZyA0NTM4IC0gdmFsaWRhdGUgaW1hZ2Ugc2l6ZSB3aGVuIGxvYWRpbmcgQk1QIGZpbGVzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2hnLmxpYnNkbC5vcmcvU0RML3Jldi9lN2JhNjUwYTY0M2FdCi0KLUNWRTogQ1ZFLTIwMTktMTM2MTYKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL3ZpZGVvL1NETF9ibXAuYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvdmlkZW8vU0RMX2JtcC5jIGIvc3JjL3ZpZGVvL1NETF9ibXAuYwotaW5kZXggMGI2ODkxOC4uYTA2YjBjOSAxMDA2NDQKLS0tLSBhL3NyYy92aWRlby9TRExfYm1wLmMKLSsrKyBiL3NyYy92aWRlby9TRExfYm1wLmMKLUBAIC0yMjYsNiArMjI2LDExIEBAIFNETF9Mb2FkQk1QX1JXKFNETF9SV29wcyAqIHNyYywgaW50IGZyZWVzcmMpCi0gICAgICAgICAgICAgU0RMX1JXc2VlayhzcmMsIChiaVNpemUgLSBoZWFkZXJTaXplKSwgUldfU0VFS19DVVIpOwotICAgICAgICAgfQotICAgICB9Ci0rICAgIGlmIChiaVdpZHRoIDw9IDAgfHwgYmlIZWlnaHQgPT0gMCkgewotKyAgICAgICAgU0RMX1NldEVycm9yKCJCTVAgZmlsZSB3aXRoIGJhZCBkaW1lbnNpb25zICglZHglZCkiLCBiaVdpZHRoLCBiaUhlaWdodCk7Ci0rICAgICAgICB3YXNfZXJyb3IgPSBTRExfVFJVRTsKLSsgICAgICAgIGdvdG8gZG9uZTsKLSsgICAgfQotICAgICBpZiAoYmlIZWlnaHQgPCAwKSB7Ci0gICAgICAgICB0b3BEb3duID0gU0RMX1RSVUU7Ci0gICAgICAgICBiaUhlaWdodCA9IC1iaUhlaWdodDsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyLzAwMDEtY29uZmlndXJlLWNoZWNrLWZvci1idWlsZC1kaXItd2hlbi1idWlsZGluZy12ZXJzaW9uLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAxLWNvbmZpZ3VyZS1jaGVjay1mb3ItYnVpbGQtZGlyLXdoZW4tYnVpbGRpbmctdmVyc2lvbi0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzODNiZDYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyLzAwMDEtY29uZmlndXJlLWNoZWNrLWZvci1idWlsZC1kaXItd2hlbi1idWlsZGluZy12ZXJzaW9uLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLSMgSEcgY2hhbmdlc2V0IHBhdGNoCi0jIFVzZXIgQW51aiBNaXR0YWwgPGFtLmRldmVsQGdtYWlsLmNvbT4KLSMgRGF0ZSAxNTczNjMxNDYyIC0xMDgwMAotIyBOb2RlIElEIDFmYjE4ODBkNWVkZmM3YzVhMzcwODQ2ZTEzZjkwYjI2MDI2MzYyN2MKLSMgUGFyZW50ICAwMDcwMDI1ODdkNWQzNGQ3ODFjMmI2MjhjMDVlOTkyZTBhYzVmNTJkCi1jb25maWd1cmU6IGNoZWNrIGZvciBidWlsZCBkaXIgd2hlbiBidWlsZGluZyB2ZXJzaW9uIHJlcyAoZml4IGJ1ZyAjNDg1OCkKLUZpeGVzIGEgcmFjZSB3aGVyZSB3ZSB0cnkgdG8gYnVpbGQgdmVyc2lvbiByZXMgZmlsZSBpbiBidWlsZCBkaXJlY3RvcnkKLWJlZm9yZSBpdCBoYXMgZXZlbiBiZWVuIGNyZWF0ZWQuIFByZXZlbnRzIGVycm9ycyBsaWtlOgotCi0vYmluL2Jhc2ggLi4vU0RMMi0yLjAuMTAvYnVpbGQtc2NyaXB0cy91cGRhdGVyZXYuc2gKLS9iaW4vYmFzaCAuLi9TREwyLTIuMC4xMC9idWlsZC1zY3JpcHRzL21raW5zdGFsbGRpcnMgYnVpbGQKLW1rZGlyIC1wIC0tIGJ1aWxkCi14ODZfNjQtcG9reXNkay1taW5ndzMyLXdpbmRyZXMgLS1pbmNsdWRlLWRpcj0vaG9tZS9wb2t5YnVpbGQveW9jdG8td29ya2VyL21ldGEtbWluZ3cvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LW5hdGl2ZXNkay1taW5ndzMyLXBva3lzZGstbWluZ3czMi9uYXRpdmVzZGstbGlic2RsMi8yLjAuMTAtcjAvcmVjaXBlLXN5c3Jvb3Qvb3B0L3Bva3kvMy4wL3N5c3Jvb3RzL3g4Nl82NC1wb2t5c2RrLW1pbmd3MzIvdXNyL2luY2x1ZGUgLi4vU0RMMi0yLjAuMTAvc3JjL21haW4vd2luZG93cy92ZXJzaW9uLnJjIGJ1aWxkL3ZlcnNpb24ubwoteDg2XzY0LXBva3lzZGstbWluZ3czMi13aW5kcmVzOiBidWlsZC92ZXJzaW9uLm86IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLU1ha2VmaWxlOjY5MjogcmVjaXBlIGZvciB0YXJnZXQgJ2J1aWxkL3ZlcnNpb24ubycgZmFpbGVkCi1tYWtlOiAqKiogW2J1aWxkL3ZlcnNpb24ub10gRXJyb3IgMQotbWFrZTogKioqIFdhaXRpbmcgZm9yIHVuZmluaXNoZWQgam9icy4uLi4KLXRvdWNoIGJ1aWxkLy5jcmVhdGVkCi1XQVJOSU5HOiBleGl0IGNvZGUgMSBmcm9tIGEgc2hlbGwgY29tbWFuZC4KLQotRXh0ZW5zaW9uIG9mIGZpeDoKLWh0dHBzOi8vaGcubGlic2RsLm9yZy9TREwvcmV2Lzk5ZDhiMThhY2Y4YQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW0uZGV2ZWxAZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC1yIDAwNzAwMjU4N2Q1ZCAtciAxZmIxODgwZDVlZGYgY29uZmlndXJlCi0tLS0gYS9jb25maWd1cmUJVHVlIE5vdiAxMiAxNzoyNDozNyAyMDE5IC0wNTAwCi0rKysgYi9jb25maWd1cmUJV2VkIE5vdiAxMyAxMDo1MTowMiAyMDE5ICswMzAwCi1AQCAtMjU0OTMsNyArMjU0OTMsNyBAQAotIFZFUlNJT05fREVQRU5EUz1gZWNobyAkVkVSU0lPTl9TT1VSQ0VTYAotIFZFUlNJT05fT0JKRUNUUz1gZWNobyAiJFZFUlNJT05fT0JKRUNUUyIgfCBzZWQgJ3MsW14gXSovXChbXiBdKlwpXC5yYywkKG9iamVjdHMpL1wxLm8sZydgCi0gVkVSU0lPTl9ERVBFTkRTPWBlY2hvICIkVkVSU0lPTl9ERVBFTkRTIiB8IHNlZCAicyxcXChbXiBdKlxcKS9cXChbXiBdKlxcKVxcLnJjLFxcXFwKLS1cXCQob2JqZWN0cykvXFwyLm86IFxcMS9cXDIucmNcXFxcCi0rXFwkKG9iamVjdHMpL1xcMi5vOiBcXDEvXFwyLnJjIFxcJChvYmplY3RzKS8uY3JlYXRlZFxcXFwKLSAJXFwkKFdJTkRSRVMpIFxcJDwgXFwkQCxnImAKLSAKLSBTRExNQUlOX09CSkVDVFM9YGVjaG8gJFNETE1BSU5fU09VUkNFU2AKLWRpZmYgLXIgMDA3MDAyNTg3ZDVkIC1yIDFmYjE4ODBkNWVkZiBjb25maWd1cmUuYWMKLS0tLSBhL2NvbmZpZ3VyZS5hYwlUdWUgTm92IDEyIDE3OjI0OjM3IDIwMTkgLTA1MDAKLSsrKyBiL2NvbmZpZ3VyZS5hYwlXZWQgTm92IDEzIDEwOjUxOjAyIDIwMTkgKzAzMDAKLUBAIC00MTc3LDcgKzQxNzcsNyBAQAotIFZFUlNJT05fREVQRU5EUz1gZWNobyAkVkVSU0lPTl9TT1VSQ0VTYAotIFZFUlNJT05fT0JKRUNUUz1gZWNobyAiJFZFUlNJT05fT0JKRUNUUyIgfCBzZWQgJ3MsW1teIF1dKi9cKFtbXiBdXSpcKVwucmMsJChvYmplY3RzKS9cMS5vLGcnYAotIFZFUlNJT05fREVQRU5EUz1gZWNobyAiJFZFUlNJT05fREVQRU5EUyIgfCBzZWQgInMsXFwoW1teIF1dKlxcKS9cXChbW14gXV0qXFwpXFwucmMsXFxcXAotLVxcJChvYmplY3RzKS9cXDIubzogXFwxL1xcMi5yY1xcXFwKLStcXCQob2JqZWN0cykvXFwyLm86IFxcMS9cXDIucmMgXFwkKG9iamVjdHMpLy5jcmVhdGVkXFxcXAotIAlcXCQoV0lORFJFUykgXFwkPCBcXCRALGciYAotIAotIFNETE1BSU5fT0JKRUNUUz1gZWNobyAkU0RMTUFJTl9TT1VSQ0VTYApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyLzAwMDItRml4ZWQtYnVnLTQ3OTctU0RMLWZhaWxzLXRvLWNvbXBpbGUtd2l0aC1NZXNhLU1hc3Rlci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAyLUZpeGVkLWJ1Zy00Nzk3LVNETC1mYWlscy10by1jb21waWxlLXdpdGgtTWVzYS1NYXN0ZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmNWI2YTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyLzAwMDItRml4ZWQtYnVnLTQ3OTctU0RMLWZhaWxzLXRvLWNvbXBpbGUtd2l0aC1NZXNhLU1hc3Rlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLSMgSEcgY2hhbmdlc2V0IHBhdGNoCi0jIFVzZXIgU3lsdmFpbiBCZWNrZXIgPHN5bHZhaW4uYmVja2VyQGdtYWlsLmNvbT4KLSMgRGF0ZSAxNTcwODk4ODc2IC03MjAwCi0jICAgICAgU2F0IE9jdCAxMiAxODo0Nzo1NiAyMDE5ICswMjAwCi0jIE5vZGUgSUQgMzY5YjAxMDA2ZWIyZjZmZDU2M2Y3YzMxNWQyOWFlM2ZlNTAzYzQzMgotIyBQYXJlbnQgIDRjYmFmZmQwMDgzYjhjZDE3MDcwZGJkOWQ0YWIxY2UwZmE5ZmNhMmQKLUZpeGVkIGJ1ZyA0Nzk3IC0gU0RMIGZhaWxzIHRvIGNvbXBpbGUgd2l0aCBNZXNhIE1hc3RlciAodGhhbmtzIE1pY2hhZWwgT2xicmljaCEpCi0KLWZpeCBidWlsZGluZyB3aXRoIE1lc2EgMTkuMgotCi1XaXRoIE1lc2EgMTkuMiBidWlsZGluZyBmYWlscyB3aXRoOgotCi0vaW5jbHVkZS9HTEVTL2dsLmg6NjM6MjU6IGVycm9yOiBjb25mbGljdGluZyB0eXBlcyBmb3IgJ0dMc2l6ZWlwdHInCi0KLVRoZSBzYW1lIHR5cGUgaXMgZGVmaW5lZCBpbiBpbmNsdWRlL1NETF9vcGVuZ2wuaCBmb3IgT3BlbkdMIGFuZCB0aGUgdHdvCi1oZWFkZXJzIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgYXQgdGhlIHNhbWUgdGltZS4KLVRoaXMgd2FzIGp1c3QgbmV2ZXIgbm90aWNlZCBiZWNhdXNlIHRoZSBzYW1lIGhlYWRlciBndWFyZCAnX19nbF9oXycgd2FzCi11c2VkLiBUaGlzIHdhcyBjaGFuZ2VkIGluIE1lc2EuIFRoZSByZXN1bHQgaXMgdGhpcyBlcnJvci4KLQotRml4IHRoaXMgdGhlIHNhbWUgd2F5IEdMRVMyIGFscmVhZHkgaGFuZGxlcyB0aGlzOiBEb24ndCBpbmNsdWRlIHRoZSBHTEVTCi1oZWFkZXIgd2hlbiB0aGUgT3BlbkdMIGhlYWRlciB3YXMgYWxyZWFkeSBpbmNsdWRlZC4KLShodHRwczovL2hnLmxpYnNkbC5vcmcvU0RML3Jldi9hNjBiM2MyOTJmMGYpCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vaGcubGlic2RsLm9yZy9TREwvcmV2LzM2OWIwMTAwNmViMl0KLVNpZ25lZC1vZmYtYnk6IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KLQotZGlmZiAtLWdpdCBhL3NyYy92aWRlby9TRExfdmlkZW8uYyBiL3NyYy92aWRlby9TRExfdmlkZW8uYwotLS0tIGEvc3JjL3ZpZGVvL1NETF92aWRlby5jCi0rKysgYi9zcmMvdmlkZW8vU0RMX3ZpZGVvLmMKLUBAIC0zNyw5ICszNyw5IEBACi0gI2luY2x1ZGUgIlNETF9vcGVuZ2wuaCIKLSAjZW5kaWYgLyogU0RMX1ZJREVPX09QRU5HTCAqLwotIAotLSNpZiBTRExfVklERU9fT1BFTkdMX0VTCi0rI2lmIFNETF9WSURFT19PUEVOR0xfRVMgJiYgIVNETF9WSURFT19PUEVOR0wKLSAjaW5jbHVkZSAiU0RMX29wZW5nbGVzLmgiCi0tI2VuZGlmIC8qIFNETF9WSURFT19PUEVOR0xfRVMgKi8KLSsjZW5kaWYgLyogU0RMX1ZJREVPX09QRU5HTF9FUyAmJiAhU0RMX1ZJREVPX09QRU5HTCAqLwotIAotIC8qIEdMIGFuZCBHTEVTMiBoZWFkZXJzIGNvbmZsaWN0IG9uIExpbnV4IDMyIGJpdHMgKi8KLSAjaWYgU0RMX1ZJREVPX09QRU5HTF9FUzIgJiYgIVNETF9WSURFT19PUEVOR0wKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDJfMi4wLjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzRhMzU2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi1TVU1NQVJZID0gIlNpbXBsZSBEaXJlY3RNZWRpYSBMYXllciIKLURFU0NSSVBUSU9OID0gIlNpbXBsZSBEaXJlY3RNZWRpYSBMYXllciBpcyBhIGNyb3NzLXBsYXRmb3JtIG11bHRpbWVkaWEgXAotbGlicmFyeSBkZXNpZ25lZCB0byBwcm92aWRlIGxvdyBsZXZlbCBhY2Nlc3MgdG8gYXVkaW8sIGtleWJvYXJkLCBtb3VzZSwgXAotam95c3RpY2ssIDNEIGhhcmR3YXJlIHZpYSBPcGVuR0wsIGFuZCAyRCB2aWRlbyBmcmFtZWJ1ZmZlci4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYnNkbC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5saWJzZGwub3JnLyIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIlpsaWIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9NTA0YTk0NTRjZWI4OWZkNzVhMjU4MzQ3M2IxMTQwOWUiCi0KLVBST1ZJREVTID0gInZpcnR1YWwvbGlic2RsMiIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmxpYnNkbC5vcmcvcmVsZWFzZS9TREwyLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9tb3JlLWdlbi1kZXBlbmRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4ZWQtYnVnLTQ1MzgtdmFsaWRhdGUtaW1hZ2Utc2l6ZS13aGVuLWxvYWRpbmctQk1QLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeGVkLWJ1Zy00Nzk3LVNETC1mYWlscy10by1jb21waWxlLXdpdGgtTWVzYS1NYXN0ZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWJ1aWxkLWRpci13aGVuLWJ1aWxkaW5nLXZlcnNpb24tLnBhdGNoIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L1NETDItJHtQVn0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1YTIxMTRmMmE2ZjM0OGJkYWI1YmY1MmI5OTQ4MTFkYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNDY1NmMxM2ExZjBkMDAyM2FlMmY0YTljZjA4ZWM5MmZmZmI0NjRlMGYyNDIzODMzNzc4NDE1OWI4YjkxZDU3IgotCi1pbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vc2RsMi1jb25maWciCi0KLUNWRV9QUk9EVUNUID0gInNpbXBsZV9kaXJlY3RtZWRpYV9sYXllciBzZGwiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtb3NzIC0tZGlzYWJsZS1lc2QgLS1kaXNhYmxlLWFydHMgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kaXNrYXVkaW8gLS1kaXNhYmxlLW5hcyAtLWRpc2FibGUtZXNkLXNoYXJlZCAtLWRpc2FibGUtZXNkdGVzdCBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXZpZGVvLWR1bW15IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1wdGhyZWFkcyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtc2RsLWRsb3BlbiBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtc25kaW8gXAotICAgICAgICAgICAgICAgICIKLQotIyBvcGVuZ2wgcGFja2FnZWNvbmZpZyBmYWN0b3JlZCBvdXQgdG8gbWFrZSBpdCBlYXN5IGZvciBkaXN0cm9zCi0jIGFuZCBCU1AgbGF5ZXJzIHRvIHBpY2sgZWl0aGVyIChkZXNrdG9wKSBvcGVuZ2wsIGdsZXMyLCBvciBubyBHTAotUEFDS0FHRUNPTkZJR19HTCA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgZCl9IgotCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJ4MTEiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICAke1BBQ0tBR0VDT05GSUdfR0x9IFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhbHNhIGRpcmVjdGZiIHB1bHNlYXVkaW8geDExJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCBnbGVzMicsICcnLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1thbHNhXSAgICAgICA9ICItLWVuYWJsZS1hbHNhIC0tZGlzYWJsZS1hbHNhdGVzdCwtLWRpc2FibGUtYWxzYSxhbHNhLWxpYiwiCi1QQUNLQUdFQ09ORklHW2RpcmVjdGZiXSAgID0gIi0tZW5hYmxlLXZpZGVvLWRpcmVjdGZiLC0tZGlzYWJsZS12aWRlby1kaXJlY3RmYixkaXJlY3RmYiIKLVBBQ0tBR0VDT05GSUdbZ2xlczJdICAgICAgPSAiLS1lbmFibGUtdmlkZW8tb3BlbmdsZXMsLS1kaXNhYmxlLXZpZGVvLW9wZW5nbGVzLHZpcnR1YWwvbGliZ2xlczIiCi1QQUNLQUdFQ09ORklHW2phY2tdICAgICAgID0gIi0tZW5hYmxlLWphY2ssLS1kaXNhYmxlLWphY2ssamFjayIKLVBBQ0tBR0VDT05GSUdba21zZHJtXSAgICAgPSAiLS1lbmFibGUtdmlkZW8ta21zZHJtLC0tZGlzYWJsZS12aWRlby1rbXNkcm0sbGliZHJtIHZpcnR1YWwvbGliZ2JtIgotUEFDS0FHRUNPTkZJR1tvcGVuZ2xdICAgICA9ICItLWVuYWJsZS12aWRlby1vcGVuZ2wsLS1kaXNhYmxlLXZpZGVvLW9wZW5nbCx2aXJ0dWFsL2xpYmdsIgotUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLWVuYWJsZS1wdWxzZWF1ZGlvLC0tZGlzYWJsZS1wdWxzZWF1ZGlvLHB1bHNlYXVkaW8iCi1QQUNLQUdFQ09ORklHW3RzbGliXSAgICAgID0gIi0tZW5hYmxlLWlucHV0LXRzbGliLC0tZGlzYWJsZS1pbnB1dC10c2xpYix0c2xpYiIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gICAgPSAiLS1lbmFibGUtdmlkZW8td2F5bGFuZCwtLWRpc2FibGUtdmlkZW8td2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYnhrYmNvbW1vbiIKLVBBQ0tBR0VDT05GSUdbeDExXSAgICAgICAgPSAiLS1lbmFibGUtdmlkZW8teDExLC0tZGlzYWJsZS12aWRlby14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4cmFuZHIgbGlieHJlbmRlciIKLQotRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1pbmNsdWRlPWFjaW5jbHVkZSAtLWV4Y2x1ZGU9YXV0b2hlYWRlciIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgICAgICMgUmVtb3ZlIG9sZCBsaWJ0b29sIG1hY3Jvcy4KLSAgICAgICAgTUFDUk9TPSJsaWJ0b29sLm00IGx0fm9ic29sZXRlLm00IGx0b3B0aW9ucy5tNCBsdHN1Z2FyLm00IGx0dmVyc2lvbi5tNCIKLSAgICAgICAgZm9yIGkgaW4gJHtNQUNST1N9OyBkbwotICAgICAgICAgICAgICAgcm0gLWYgJHtTfS9hY2luY2x1ZGUvJGkKLSAgICAgICAgZG9uZQotICAgICAgICBleHBvcnQgU1lTUk9PVD0kUEtHX0NPTkZJR19TWVNST09UX0RJUgotfQotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyXzIuMC4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFjOTQxZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuMTIuYmIKQEAgLTAsMCArMSw4MSBAQAorU1VNTUFSWSA9ICJTaW1wbGUgRGlyZWN0TWVkaWEgTGF5ZXIiCitERVNDUklQVElPTiA9ICJTaW1wbGUgRGlyZWN0TWVkaWEgTGF5ZXIgaXMgYSBjcm9zcy1wbGF0Zm9ybSBtdWx0aW1lZGlhIFwKK2xpYnJhcnkgZGVzaWduZWQgdG8gcHJvdmlkZSBsb3cgbGV2ZWwgYWNjZXNzIHRvIGF1ZGlvLCBrZXlib2FyZCwgbW91c2UsIFwKK2pveXN0aWNrLCAzRCBoYXJkd2FyZSB2aWEgT3BlbkdMLCBhbmQgMkQgdmlkZW8gZnJhbWVidWZmZXIuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJzZGwub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEubGlic2RsLm9yZy8iCisKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJabGliIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PTJkNGFmNmFkYjRkODlhYWQwY2RlZGJjYzE4YzlhMzJmIgorCisjIGFybS1uZW9uIGFkZHMgTUlUIGxpY2Vuc2UKK0xJQ0VOU0VfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdhcm0tbmVvbicsICcmIE1JVCcsICcnLCBkKX0iCitMSUNfRklMRVNfQ0hLU1VNX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYXJtLW5lb24nLCAnZmlsZTovL3NyYy92aWRlby9hcm0vcGl4bWFuLWFybS1uZW9uLWFzbS5oO21kNT05YTljYzFlNTFhYmJmMWRhNThmNGQ5NTI4ZWM5ZDQ5YjtiZWdpbmxpbmU9MTtlbmRsaW5lPTI0JywgJycsIGQpfSIKKworUFJPVklERVMgPSAidmlydHVhbC9saWJzZGwyIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubGlic2RsLm9yZy9yZWxlYXNlL1NETDItJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL21vcmUtZ2VuLWRlcGVuZHMucGF0Y2ggXAorIgorCitTID0gIiR7V09SS0RJUn0vU0RMMi0ke1BWfSIKKworU1JDX1VSSVttZDVzdW1dID0gIjc4M2I2ZjJkZjhmZjAyYjE5YmI1Y2U0OTJiOTljOGZmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM0OTI2OGY2OTVjMDJlZmJjOWI5MTQ4YTcwYjg1ZTU4Y2VmYmJmNzA0YWJkM2U5MWJlNjU0ZGI3ZjFlMmM4NjMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9zZGwyLWNvbmZpZyIKKworQ1ZFX1BST0RVQ1QgPSAic2ltcGxlX2RpcmVjdG1lZGlhX2xheWVyIHNkbCIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1vc3MgLS1kaXNhYmxlLWVzZCAtLWRpc2FibGUtYXJ0cyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRpc2thdWRpbyAtLWRpc2FibGUtbmFzIC0tZGlzYWJsZS1lc2Qtc2hhcmVkIC0tZGlzYWJsZS1lc2R0ZXN0IFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtdmlkZW8tZHVtbXkgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXB0aHJlYWRzIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1zZGwtZGxvcGVuIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtcnBhdGggXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zbmRpbyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWZjaXR4IC0tZGlzYWJsZS1pYnVzIFwKKyAgICAgICAgICAgICAgICAiCisKKyMgb3BlbmdsIHBhY2thZ2Vjb25maWcgZmFjdG9yZWQgb3V0IHRvIG1ha2UgaXQgZWFzeSBmb3IgZGlzdHJvcworIyBhbmQgQlNQIGxheWVycyB0byBwaWNrIGVpdGhlciAoZGVza3RvcCkgb3BlbmdsLCBnbGVzMiwgb3Igbm8gR0wKK1BBQ0tBR0VDT05GSUdfR0wgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsIGQpfSIKKworUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAieDExIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgorUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgJHtQQUNLQUdFQ09ORklHX0dMfSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYSBkaXJlY3RmYiBwdWxzZWF1ZGlvIHgxMScsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQgZ2xlczInLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJuZW9uIiwiYXJtLW5lb24iLCIiLGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2Fsc2FdICAgICAgID0gIi0tZW5hYmxlLWFsc2EgLS1kaXNhYmxlLWFsc2F0ZXN0LC0tZGlzYWJsZS1hbHNhLGFsc2EtbGliLCIKK1BBQ0tBR0VDT05GSUdbYXJtLW5lb25dICAgPSAiLS1lbmFibGUtYXJtLW5lb24sLS1kaXNhYmxlLWFybS1uZW9uIgorUEFDS0FHRUNPTkZJR1tkaXJlY3RmYl0gICA9ICItLWVuYWJsZS12aWRlby1kaXJlY3RmYiwtLWRpc2FibGUtdmlkZW8tZGlyZWN0ZmIsZGlyZWN0ZmIiCitQQUNLQUdFQ09ORklHW2dsZXMyXSAgICAgID0gIi0tZW5hYmxlLXZpZGVvLW9wZW5nbGVzLC0tZGlzYWJsZS12aWRlby1vcGVuZ2xlcyx2aXJ0dWFsL2xpYmdsZXMyIgorUEFDS0FHRUNPTkZJR1tqYWNrXSAgICAgICA9ICItLWVuYWJsZS1qYWNrLC0tZGlzYWJsZS1qYWNrLGphY2siCitQQUNLQUdFQ09ORklHW2ttc2RybV0gICAgID0gIi0tZW5hYmxlLXZpZGVvLWttc2RybSwtLWRpc2FibGUtdmlkZW8ta21zZHJtLGxpYmRybSB2aXJ0dWFsL2xpYmdibSIKK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSAgICAgPSAiLS1lbmFibGUtdmlkZW8tb3BlbmdsLC0tZGlzYWJsZS12aWRlby1vcGVuZ2wsdmlydHVhbC9saWJnbCIKK1BBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2VhdWRpbywtLWRpc2FibGUtcHVsc2VhdWRpbyxwdWxzZWF1ZGlvIgorUEFDS0FHRUNPTkZJR1t0c2xpYl0gICAgICA9ICItLWVuYWJsZS1pbnB1dC10c2xpYiwtLWRpc2FibGUtaW5wdXQtdHNsaWIsdHNsaWIiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdICAgID0gIi0tZW5hYmxlLXZpZGVvLXdheWxhbmQsLS1kaXNhYmxlLXZpZGVvLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJ4a2Jjb21tb24iCitQQUNLQUdFQ09ORklHW3gxMV0gICAgICAgID0gIi0tZW5hYmxlLXZpZGVvLXgxMSwtLWRpc2FibGUtdmlkZW8teDExLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHJhbmRyIGxpYnhyZW5kZXIiCisKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi0taW5jbHVkZT1hY2luY2x1ZGUgLS1leGNsdWRlPWF1dG9oZWFkZXIiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICAgICAjIFJlbW92ZSBvbGQgbGlidG9vbCBtYWNyb3MuCisgICAgICAgIE1BQ1JPUz0ibGlidG9vbC5tNCBsdH5vYnNvbGV0ZS5tNCBsdG9wdGlvbnMubTQgbHRzdWdhci5tNCBsdHZlcnNpb24ubTQiCisgICAgICAgIGZvciBpIGluICR7TUFDUk9TfTsgZG8KKyAgICAgICAgICAgICAgIHJtIC1mICR7U30vYWNpbmNsdWRlLyRpCisgICAgICAgIGRvbmUKKyAgICAgICAgZXhwb3J0IFNZU1JPT1Q9JFBLR19DT05GSUdfU1lTUk9PVF9ESVIKK30KKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzLzAwMDEtQnVpbGQtc2Zjc2FtcGxlLW9ubHktd2hlbi1YMTEtYmFja2VuZC1pcy1lbmFibGVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmEtdXRpbHMvMDAwMS1CdWlsZC1zZmNzYW1wbGUtb25seS13aGVuLVgxMS1iYWNrZW5kLWlzLWVuYWJsZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxZmI3MTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmEtdXRpbHMvMDAwMS1CdWlsZC1zZmNzYW1wbGUtb25seS13aGVuLVgxMS1iYWNrZW5kLWlzLWVuYWJsZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDhmYzE0ZTRiYzgxODg1YjgwYzMwNzJlNTQ5YzJlNmY1OTUzM2Q3ZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotRGF0ZTogRnJpLCA4IEZlYiAyMDE5IDExOjQ1OjU1ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEJ1aWxkIHNmY3NhbXBsZSBvbmx5IHdoZW4gWDExIGJhY2tlbmQgaXMgZW5hYmxlZAotCi1TZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS11dGlscy9wdWxsLzE0OSwgYW5kCi1odHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEtdXRpbHMvaXNzdWVzLzE1MAotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IGQyODE3NWEuLmUyOTRlMjUgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0yNCwxMCArMjQsMTEgQEAgQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQgJHtBQ0xPQ0FMX0ZMQUdTfQotIAotIEFVVE9NQUtFX09QVElPTlMgPSBmb3JlaWduCi0gCi0tU1VCRElSUyA9IGNvbW1vbiBkZWNvZGUgZW5jb2RlIHZhaW5mbyB2aWRlb3Byb2Nlc3MgdmVuZG9yL2ludGVsIHZlbmRvci9pbnRlbC9zZmNzYW1wbGUKLStTVUJESVJTID0gY29tbW9uIGRlY29kZSBlbmNvZGUgdmFpbmZvIHZpZGVvcHJvY2VzcyB2ZW5kb3IvaW50ZWwKLSAKLSBpZiBVU0VfWDExCi0gU1VCRElSUyArPSBwdXRzdXJmYWNlCi0rU1VCRElSUyArPSB2ZW5kb3IvaW50ZWwvc2Zjc2FtcGxlCi0gZWxzZQotIGlmIFVTRV9XQVlMQU5ECi0gU1VCRElSUyArPSBwdXRzdXJmYWNlCi0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18yLjUuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzIuNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjhkMGNmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzIuNS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJsaWJ2YS11dGlscyBpcyBhIGNvbGxlY3Rpb24gb2YgdXRpbGl0aWVzIGZyb20gbGlidmEgcHJvamVjdCIKLQotREVTQ1JJUFRJT04gPSAibGlidmEtdXRpbHMgaXMgYSBjb2xsZWN0aW9uIG9mIHV0aWxpdGllcyBcCi1hbmQgZXhhbXBsZXMgdG8gZXhlcmNpc2UgVkEtQVBJIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgbGlidmEgXAotcHJvamVjdC5WQS1BUEkgaXMgYW4gb3Blbi1zb3VyY2UgbGlicmFyeSBhbmQgQVBJIHNwZWNpZmljYXRpb24sIFwKLXdoaWNoIHByb3ZpZGVzIGFjY2VzcyB0byBncmFwaGljcyBoYXJkd2FyZSBhY2NlbGVyYXRpb24gY2FwYWJpbGl0aWVzIFwKLWZvciB2aWRlbyBwcm9jZXNzaW5nLiBJdCBjb25zaXN0cyBvZiBhIG1haW4gbGlicmFyeSBhbmQgZHJpdmVyLXNwZWNpZmljIFwKLWFjY2VsZXJhdGlvbiBiYWNrZW5kcyBmb3IgZWFjaCBzdXBwb3J0ZWQgaGFyZHdhcmUgdmVuZG9yIgotCi1IT01FUEFHRSA9ICJodHRwczovLzAxLm9yZy9saW51eG1lZGlhL3ZhYXBpIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEtdXRpbHMvaXNzdWVzIgotCi1TRUNUSU9OID0gIngxMSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjE0OGZjOGFkZjE5ZGM5YWVjMTdjZjljZDI5YTlhNWUiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQnVpbGQtc2Zjc2FtcGxlLW9ubHktd2hlbi1YMTEtYmFja2VuZC1pcy1lbmFibGVkLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzFmYWRhMjZjMjg2NjU0ODU5ZWZmMzNiMjU2MmNiNzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTIzOGM5ZDUxMTBkNjBmOTM1NjgzMzkwYjgzODNmZGFjMzUwNzM0NjM4NGNkNWYxMTdhMjNjNmRiMWQ3MmExNyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS11dGlscy9yZWxlYXNlcyIKLQotREVQRU5EUyA9ICJsaWJ2YSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCi0KLSMgZGVwZW5kcyBvbiBsaWJ2YSB3aGljaCByZXF1aXJlcyBvcGVuZ2wKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSx2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnhmaXhlcyIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmEtdXRpbHNfMi42LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18yLjYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2IzODAyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmEtdXRpbHNfMi42LjAuYmIKQEAgLTAsMCArMSwzMiBAQAorU1VNTUFSWSA9ICJsaWJ2YS11dGlscyBpcyBhIGNvbGxlY3Rpb24gb2YgdXRpbGl0aWVzIGZyb20gbGlidmEgcHJvamVjdCIKKworREVTQ1JJUFRJT04gPSAibGlidmEtdXRpbHMgaXMgYSBjb2xsZWN0aW9uIG9mIHV0aWxpdGllcyBcCithbmQgZXhhbXBsZXMgdG8gZXhlcmNpc2UgVkEtQVBJIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgbGlidmEgXAorcHJvamVjdC5WQS1BUEkgaXMgYW4gb3Blbi1zb3VyY2UgbGlicmFyeSBhbmQgQVBJIHNwZWNpZmljYXRpb24sIFwKK3doaWNoIHByb3ZpZGVzIGFjY2VzcyB0byBncmFwaGljcyBoYXJkd2FyZSBhY2NlbGVyYXRpb24gY2FwYWJpbGl0aWVzIFwKK2ZvciB2aWRlbyBwcm9jZXNzaW5nLiBJdCBjb25zaXN0cyBvZiBhIG1haW4gbGlicmFyeSBhbmQgZHJpdmVyLXNwZWNpZmljIFwKK2FjY2VsZXJhdGlvbiBiYWNrZW5kcyBmb3IgZWFjaCBzdXBwb3J0ZWQgaGFyZHdhcmUgdmVuZG9yIgorCitIT01FUEFHRSA9ICJodHRwczovLzAxLm9yZy9saW51eG1lZGlhL3ZhYXBpIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEtdXRpbHMvaXNzdWVzIgorCitTRUNUSU9OID0gIngxMSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjE0OGZjOGFkZjE5ZGM5YWVjMTdjZjljZDI5YTlhNWUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS11dGlscy5naXQ7YnJhbmNoPXYyLjYtYnJhbmNoIgorU1JDUkVWID0gIjhlYTFlYmE0MzNkY2JjZWIwZTVkY2I1NGI4ZTNmOTg0OTg3ZjdhMTciCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKKworREVQRU5EUyA9ICJsaWJ2YSIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKKworIyBkZXBlbmRzIG9uIGxpYnZhIHdoaWNoIHJlcXVpcmVzIG9wZW5nbAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EeDExPXRydWUsIC1EeDExPWZhbHNlLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieGZpeGVzIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItRHdheWxhbmQ9dHJ1ZSwgLUR3YXlsYW5kPWZhbHNlLHdheWxhbmQtbmF0aXZlIHdheWxhbmQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8yLjUuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhXzIuNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2UyZTAxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhXzIuNS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotU1VNTUFSWSA9ICJWaWRlbyBBY2NlbGVyYXRpb24gKFZBKSBBUEkgZm9yIExpbnV4IgotREVTQ1JJUFRJT04gPSAiVmlkZW8gQWNjZWxlcmF0aW9uIEFQSSAoVkEgQVBJKSBpcyBhIGxpYnJhcnkgKGxpYlZBKSBcCi1hbmQgQVBJIHNwZWNpZmljYXRpb24gd2hpY2ggZW5hYmxlcyBhbmQgcHJvdmlkZXMgYWNjZXNzIHRvIGdyYXBoaWNzIFwKLWhhcmR3YXJlIChHUFUpIGFjY2VsZXJhdGlvbiBmb3IgdmlkZW8gcHJvY2Vzc2luZyBvbiBMaW51eCBhbmQgVU5JWCBcCi1iYXNlZCBvcGVyYXRpbmcgc3lzdGVtcy4gQWNjZWxlcmF0ZWQgcHJvY2Vzc2luZyBpbmNsdWRlcyB2aWRlbyBcCi1kZWNvZGluZywgdmlkZW8gZW5jb2RpbmcsIHN1YnBpY3R1cmUgYmxlbmRpbmcgYW5kIHJlbmRlcmluZy4gVGhlIFwKLXNwZWNpZmljYXRpb24gd2FzIG9yaWdpbmFsbHkgZGVzaWduZWQgYnkgSW50ZWwgZm9yIGl0cyBHTUEgKEdyYXBoaWNzIFwKLU1lZGlhIEFjY2VsZXJhdG9yKSBzZXJpZXMgb2YgR1BVIGhhcmR3YXJlLCB0aGUgQVBJIGlzIGhvd2V2ZXIgbm90IFwKLWxpbWl0ZWQgdG8gR1BVcyBvciBJbnRlbCBzcGVjaWZpYyBoYXJkd2FyZSwgYXMgb3RoZXIgaGFyZHdhcmUgYW5kIFwKLW1hbnVmYWN0dXJlcnMgY2FuIGFsc28gZnJlZWx5IHVzZSB0aGlzIEFQSSBmb3IgaGFyZHdhcmUgYWNjZWxlcmF0ZWQgXAotdmlkZW8gZGVjb2RpbmcuIgotCi1IT01FUEFHRSA9ICJodHRwczovLzAxLm9yZy9saW51eG1lZGlhL3ZhYXBpIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEvaXNzdWVzIgotCi1TRUNUSU9OID0gIngxMSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmU0ODk0MGY5NGFjYjBhZjU4MmU1ZWYwMzUzNzgwMGYiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIuYnoyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzY4ODIxMmZiN2E4Nzk0NzA3MGYzNzI5ZTkxZmY3Y2YiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2FhODljZDM2OWE1MDZhYzRkYmU1ZGU3YzBlZjVkYTRmM2QyMjBiZjk4NjQwM2YwMmZhMWY2ZjcwMmFmNjg3OCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS9yZWxlYXNlcyIKLQotREVQRU5EUyA9ICJsaWJkcm0gdmlydHVhbC9tZXNhIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLQotRVhUUkFfT0VDT05GID0gImFjX2N2X3Byb2dfV0FZTEFORF9TQ0FOTkVSPXdheWxhbmQtc2Nhbm5lciIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieGZpeGVzIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQiCi0KLVBBQ0tBR0VTID0rICIke1BOfS14MTEgJHtQTn0tZ2x4ICR7UE59LXdheWxhbmQiCi0KLVJERVBFTkRTXyR7UE59LXgxMSA9KyAiJHtQTn0iCi1SREVQRU5EU18ke1BOfS1nbHggPSsgIiR7UE59LXgxMSIKLQotRklMRVNfJHtQTn0teDExID0rICIke2xpYmRpcn0vbGlidmEteDExKiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWdseCA9KyAiJHtsaWJkaXJ9L2xpYnZhLWdseCoke1NPTElCU30iCi1GSUxFU18ke1BOfS13YXlsYW5kID0rICIke2xpYmRpcn0vbGlidmEtd2F5bGFuZCoke1NPTElCU30iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8yLjYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhXzIuNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyY2VhODMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8yLjYuMS5iYgpAQCAtMCwwICsxLDQzIEBACitTVU1NQVJZID0gIlZpZGVvIEFjY2VsZXJhdGlvbiAoVkEpIEFQSSBmb3IgTGludXgiCitERVNDUklQVElPTiA9ICJWaWRlbyBBY2NlbGVyYXRpb24gQVBJIChWQSBBUEkpIGlzIGEgbGlicmFyeSAobGliVkEpIFwKK2FuZCBBUEkgc3BlY2lmaWNhdGlvbiB3aGljaCBlbmFibGVzIGFuZCBwcm92aWRlcyBhY2Nlc3MgdG8gZ3JhcGhpY3MgXAoraGFyZHdhcmUgKEdQVSkgYWNjZWxlcmF0aW9uIGZvciB2aWRlbyBwcm9jZXNzaW5nIG9uIExpbnV4IGFuZCBVTklYIFwKK2Jhc2VkIG9wZXJhdGluZyBzeXN0ZW1zLiBBY2NlbGVyYXRlZCBwcm9jZXNzaW5nIGluY2x1ZGVzIHZpZGVvIFwKK2RlY29kaW5nLCB2aWRlbyBlbmNvZGluZywgc3VicGljdHVyZSBibGVuZGluZyBhbmQgcmVuZGVyaW5nLiBUaGUgXAorc3BlY2lmaWNhdGlvbiB3YXMgb3JpZ2luYWxseSBkZXNpZ25lZCBieSBJbnRlbCBmb3IgaXRzIEdNQSAoR3JhcGhpY3MgXAorTWVkaWEgQWNjZWxlcmF0b3IpIHNlcmllcyBvZiBHUFUgaGFyZHdhcmUsIHRoZSBBUEkgaXMgaG93ZXZlciBub3QgXAorbGltaXRlZCB0byBHUFVzIG9yIEludGVsIHNwZWNpZmljIGhhcmR3YXJlLCBhcyBvdGhlciBoYXJkd2FyZSBhbmQgXAorbWFudWZhY3R1cmVycyBjYW4gYWxzbyBmcmVlbHkgdXNlIHRoaXMgQVBJIGZvciBoYXJkd2FyZSBhY2NlbGVyYXRlZCBcCit2aWRlbyBkZWNvZGluZy4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2xpbnV4bWVkaWEvdmFhcGkiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS9pc3N1ZXMiCisKK1NFQ1RJT04gPSAieDExIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZTQ4OTQwZjk0YWNiMGFmNTgyZTVlZjAzNTM3ODAwZiIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiYWVmMTNlYjQ4ZTAxYTQ3ZDE0MTZkOTc0NjJhMjJhMTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmM1N2ViNjQyZDgyOGFmMjQxMWFhMzhmNTVkYzEwMTExZThjOTg5NzZkYmFiOGZkNjJlNDg2Mjk0MDFlYWVhNSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS9yZWxlYXNlcyIKKworREVQRU5EUyA9ICJsaWJkcm0gdmlydHVhbC9tZXNhIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBmZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLUR3aXRoX3gxMT15ZXMsIC1Ed2l0aF94MTE9bm8sdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4Zml4ZXMiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1Ed2l0aF93YXlsYW5kPXllcywgLUR3aXRoX3dheWxhbmQ9bm8sd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCIKKworUEFDS0FHRVMgPSsgIiR7UE59LXgxMSAke1BOfS1nbHggJHtQTn0td2F5bGFuZCIKKworUkRFUEVORFNfJHtQTn0teDExID0rICIke1BOfSIKK1JERVBFTkRTXyR7UE59LWdseCA9KyAiJHtQTn0teDExIgorCitGSUxFU18ke1BOfS14MTEgPSsgIiR7bGliZGlyfS9saWJ2YS14MTEqJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tZ2x4ID0rICIke2xpYmRpcn0vbGlidmEtZ2x4KiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LXdheWxhbmQgPSsgIiR7bGliZGlyfS9saWJ2YS13YXlsYW5kKiR7U09MSUJTfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21hdGNoYm94LXdtL21hdGNoYm94LXdtXzEuMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWF0Y2hib3gtd20vbWF0Y2hib3gtd21fMS4yLjIuYmIKaW5kZXggYjk5NjFjMy4uNjc1ZWU0MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWF0Y2hib3gtd20vbWF0Y2hib3gtd21fMS4yLjIuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWF0Y2hib3gtd20vbWF0Y2hib3gtd21fMS4yLjIuYmIKQEAgLTIxLDYgKzIxLDggQEAKICMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAorQ0ZMQUdTICs9ICItZmNvbW1vbiIKKwogRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyogXAogICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9tYXRjaGJveCBcCiAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L21hdGNoYm94IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lbnUtY2FjaGUvbWVudS1jYWNoZV8xLjEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lbnUtY2FjaGUvbWVudS1jYWNoZV8xLjEuMC5iYgppbmRleCBkZGJiZDk0Li43YTExMjI4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZW51LWNhY2hlL21lbnUtY2FjaGVfMS4xLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVudS1jYWNoZS9tZW51LWNhY2hlXzEuMS4wLmJiCkBAIC0xNiwzICsxNiw1IEBACiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9seGRlL2ZpbGVzL21lbnUtY2FjaGUvMS4xLyIKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgZ3RrLWRvYworCitDRkxBR1MgKz0gIi1mY29tbW9uIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLW1lc29uLW1pc2RldGVjdHMtNjRiaXQtYXRvbWljcy1vbi1taXBzLWNsYW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLW1lc29uLW1pc2RldGVjdHMtNjRiaXQtYXRvbWljcy1vbi1taXBzLWNsYW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1NDg1ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtbWVzb24tbWlzZGV0ZWN0cy02NGJpdC1hdG9taWNzLW9uLW1pcHMtY2xhbmcucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBiYjJmMGJlYTU1M2Q1MWQ2NTlhOWJjNDZmN2FlMTg2ODg1NDA1MTUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTMgSmFuIDIwMjAgMTU6MjM6NDcgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWVzb24gbWlzZGV0ZWN0cyA2NGJpdCBhdG9taWNzIG9uIG1pcHMvY2xhbmcKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL3V0aWwvdV9hdG9taWMuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy91dGlsL3VfYXRvbWljLmMgYi9zcmMvdXRpbC91X2F0b21pYy5jCitpbmRleCBlNGJmZmE4Li41OGUxZGRkIDEwMDY0NAorLS0tIGEvc3JjL3V0aWwvdV9hdG9taWMuYworKysrIGIvc3JjL3V0aWwvdV9hdG9taWMuYworQEAgLTIxLDcgKzIxLDcgQEAKKyAgKiBJTiBUSEUgU09GVFdBUkUuCisgICovCisgCistI2lmIGRlZmluZWQoTUlTU0lOR182NEJJVF9BVE9NSUNTKSAmJiBkZWZpbmVkKEhBVkVfUFRIUkVBRCkKKysjaWYgIWRlZmluZWQoX19jbGFuZ19fKSAmJiBkZWZpbmVkKE1JU1NJTkdfNjRCSVRfQVRPTUlDUykgJiYgZGVmaW5lZChIQVZFX1BUSFJFQUQpCisgCisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxwdGhyZWFkLmg+CistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtbWVzb24uYnVpbGQtY2hlY2stZm9yLWFsbC1saW51eC1ob3N0X29zLWNvbWJpbmF0aW9ucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1tZXNvbi5idWlsZC1jaGVjay1mb3ItYWxsLWxpbnV4LWhvc3Rfb3MtY29tYmluYXRpb25zLnBhdGNoCmluZGV4IDE4NjllMTEuLjA4NTI1NDMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1tZXNvbi5idWlsZC1jaGVjay1mb3ItYWxsLWxpbnV4LWhvc3Rfb3MtY29tYmluYXRpb25zLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1tZXNvbi5idWlsZC1jaGVjay1mb3ItYWxsLWxpbnV4LWhvc3Rfb3MtY29tYmluYXRpb25zLnBhdGNoCkBAIC0xLDYgKzEsNiBAQAotRnJvbSBiNmQ5YmM5N2NiMGU4YzU0MGE0NWRiYTU0NDBiMDM2ZmI5NDBmZjk1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgotRGF0ZTogTW9uLCAxMSBOb3YgMjAxOSAwOTozODoxNSAtMDgwMAorRnJvbSAwZDllZDAwMmVmZjE3NmI5MDJkYTI2NmQ4OTgyOWE5YjBjYjEwOTQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXJAYWxpc3RhaXIyMy5tZT4KK0RhdGU6IFRodSwgMTQgTm92IDIwMTkgMTM6MDQ6NDkgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gbWVzb24uYnVpbGQ6IGNoZWNrIGZvciBhbGwgbGludXggaG9zdF9vcyBjb21iaW5hdGlvbnMKIAogTWFrZSBzdXJlIHRoYXQgd2UgYXJlIGFsc28gbG9va2luZyBmb3Igb3VyIGhvc3Rfb3MgY29tYmluYXRpb25zIGxpa2UKQEAgLTEzLDMwICsxMywzMCBAQAogU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEZhYmlvIEJlcnRvbiA8ZmFiaW8uYmVydG9uQG9zc3lzdGVtcy5jb20uYnI+CiBTaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgotU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXJAYWxpc3RhaXIyMy5tZT4KIAogLS0tCiAgbWVzb24uYnVpbGQgfCA0ICsrLS0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggZDU4NDE1Mi4uYTFmMDk4YyAxMDA2NDQKK2luZGV4IDg5OGQwMjUuLjA5ZTM3NTkgMTAwNjQ0CiAtLS0gYS9tZXNvbi5idWlsZAogKysrIGIvbWVzb24uYnVpbGQKLUBAIC0xMTcsNyArMTE3LDcgQEAgd2l0aF9hbnlfb3BlbmdsID0gd2l0aF9vcGVuZ2wgb3Igd2l0aF9nbGVzMSBvciB3aXRoX2dsZXMyCitAQCAtMTI0LDcgKzEyNCw3IEBAIHdpdGhfYW55X29wZW5nbCA9IHdpdGhfb3BlbmdsIG9yIHdpdGhfZ2xlczEgb3Igd2l0aF9nbGVzMgogICMgT25seSBidWlsZCBzaGFyZWRfZ2xhcGkgaWYgYXQgbGVhc3Qgb25lIE9wZW5HTCBBUEkgaXMgZW5hYmxlZAotIHdpdGhfc2hhcmVkX2dsYXBpID0gZ2V0X29wdGlvbignc2hhcmVkLWdsYXBpJykgYW5kIHdpdGhfYW55X29wZW5nbAorIHdpdGhfc2hhcmVkX2dsYXBpID0gd2l0aF9zaGFyZWRfZ2xhcGkgYW5kIHdpdGhfYW55X29wZW5nbAogIAogLXN5c3RlbV9oYXNfa21zX2RybSA9IFsnb3BlbmJzZCcsICduZXRic2QnLCAnZnJlZWJzZCcsICdnbnUva2ZyZWVic2QnLCAnZHJhZ29uZmx5JywgJ2xpbnV4JywgJ3N1bm9zJ10uY29udGFpbnMoaG9zdF9tYWNoaW5lLnN5c3RlbSgpKQogK3N5c3RlbV9oYXNfa21zX2RybSA9IFsnb3BlbmJzZCcsICduZXRic2QnLCAnZnJlZWJzZCcsICdkcmFnb25mbHknXS5jb250YWlucyhob3N0X21hY2hpbmUuc3lzdGVtKCkpIG9yIGhvc3RfbWFjaGluZS5zeXN0ZW0oKS5zdGFydHN3aXRoKCdsaW51eCcpCiAgCiAgZHJpX2RyaXZlcnMgPSBnZXRfb3B0aW9uKCdkcmktZHJpdmVycycpCiAgaWYgZHJpX2RyaXZlcnMuY29udGFpbnMoJ2F1dG8nKQotQEAgLTg1Niw3ICs4NTYsNyBAQCBpZiBjYy5jb21waWxlcygnX191aW50MTI4X3QgZm9vKHZvaWQpIHsgcmV0dXJuIDA7IH0nLAorQEAgLTg4NCw3ICs4ODQsNyBAQCBpZiBjYy5jb21waWxlcygnX191aW50MTI4X3QgZm9vKHZvaWQpIHsgcmV0dXJuIDA7IH0nLAogIGVuZGlmCiAgCiAgIyBUT0RPOiB0aGlzIGlzIHZlcnkgaW5jb21wbGV0ZQotLWlmIFsnbGludXgnLCAnY3lnd2luJywgJ2dudScsICdnbnUva2ZyZWVic2QnXS5jb250YWlucyhob3N0X21hY2hpbmUuc3lzdGVtKCkpCistaWYgWydsaW51eCcsICdjeWd3aW4nLCAnZ251JywgJ2ZyZWVic2QnLCAnZ251L2tmcmVlYnNkJ10uY29udGFpbnMoaG9zdF9tYWNoaW5lLnN5c3RlbSgpKQogK2lmIFsnY3lnd2luJywgJ2dudScsICdnbnUva2ZyZWVic2QnXS5jb250YWlucyhob3N0X21hY2hpbmUuc3lzdGVtKCkpIG9yIGhvc3RfbWFjaGluZS5zeXN0ZW0oKS5zdGFydHN3aXRoKCdsaW51eCcpCiAgICBwcmVfYXJncyArPSAnLURfR05VX1NPVVJDRScKICBlbGlmIGhvc3RfbWFjaGluZS5zeXN0ZW0oKSA9PSAnc3Vub3MnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDItbWVzb24uYnVpbGQtbWFrZS1UTFMtRUxGLW9wdGlvbmFsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAyLW1lc29uLmJ1aWxkLW1ha2UtVExTLUVMRi1vcHRpb25hbC5wYXRjaAppbmRleCAxOTllZDU3Li5jZDM1YTFmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDItbWVzb24uYnVpbGQtbWFrZS1UTFMtRUxGLW9wdGlvbmFsLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMi1tZXNvbi5idWlsZC1tYWtlLVRMUy1FTEYtb3B0aW9uYWwucGF0Y2gKQEAgLTEsMTMgKzEsMTMgQEAKLUZyb20gYWY2OTIzNTQ0ZGUwMmRlZDY0OGE3MzZlMDdiOWJkOGI3YzUyZGJhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KLURhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMDk6NDY6MjggLTA3MDAKK0Zyb20gZGY4MzUzODk2OTliMzJiYjY2MTBiMzk5NzI1MDJlMzIzZjhlMDllNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyQGFsaXN0YWlyMjMubWU+CitEYXRlOiBUaHUsIDE0IE5vdiAyMDE5IDEzOjA4OjMxIC0wODAwCiBTdWJqZWN0OiBbUEFUQ0hdIG1lc29uLmJ1aWxkOiBtYWtlIFRMUyBFTEYgb3B0aW9uYWwKIAogVVNFX0VMRl9UTFMgaGFzIHJlcGxhY2VkIEdMWF9VU0VfVExTIHNvIHRoaXMgcGF0Y2ggaXMgdGhlIG9yaWdpbmFsICJtYWtlCiBUTFMgR0xYIG9wdGlvbmFsIGFnYWluIiBwYXRjaCB1cGRhdGVkIHRvIHRoZSBsYXRlc3QgbWVzYS4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXJAYWxpc3RhaXIyMy5tZT4KIAogLS0tCiAgbWVzb24uYnVpbGQgICAgICAgfCAyICstCkBAIC0xNSwyMyArMTUsMjMgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggYTFmMDk4Yy4uMWUzMWViNCAxMDA2NDQKK2luZGV4IDA5ZTM3NTkuLmE5NTQxMTggMTAwNjQ0CiAtLS0gYS9tZXNvbi5idWlsZAogKysrIGIvbWVzb24uYnVpbGQKLUBAIC0zNzgsNyArMzc4LDcgQEAgaWYgd2l0aF9lZ2wgYW5kIG5vdCAod2l0aF9wbGF0Zm9ybV9kcm0gb3Igd2l0aF9wbGF0Zm9ybV9zdXJmYWNlbGVzcyBvciB3aXRoX3BsYXQKK0BAIC0zODcsNyArMzg3LDcgQEAgaWYgd2l0aF9lZ2wgYW5kIG5vdCAod2l0aF9wbGF0Zm9ybV9kcm0gb3Igd2l0aF9wbGF0Zm9ybV9zdXJmYWNlbGVzcyBvciB3aXRoX3BsYXQKICBlbmRpZgogIAogICMgQW5kcm9pZCB1c2VzIGVtdXRscyBmb3IgdmVyc2lvbnMgPD0gUC8yOC4gRm9yIFVTRV9FTEZfVExTIHdlIG5lZWQgRUxGIFRMUy4KLS1pZiBub3Qgd2l0aF9wbGF0Zm9ybV9hbmRyb2lkIG9yIGdldF9vcHRpb24oJ3BsYXRmb3JtLXNkay12ZXJzaW9uJykgPj0gMjkKKy1pZiBob3N0X21hY2hpbmUuc3lzdGVtKCkgIT0gJ3dpbmRvd3MnIGFuZCAobm90IHdpdGhfcGxhdGZvcm1fYW5kcm9pZCBvciBnZXRfb3B0aW9uKCdwbGF0Zm9ybS1zZGstdmVyc2lvbicpID49IDI5KQogK2lmIChub3Qgd2l0aF9wbGF0Zm9ybV9hbmRyb2lkIG9yIGdldF9vcHRpb24oJ3BsYXRmb3JtLXNkay12ZXJzaW9uJykgPj0gMjkpIGFuZCBnZXRfb3B0aW9uKCdlbGYtdGxzJykKICAgIHByZV9hcmdzICs9ICctRFVTRV9FTEZfVExTJwogIGVuZGlmCiAgCiBkaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dAotaW5kZXggYjc2OGMxNS4uNzZjZWYyNCAxMDA2NDQKK2luZGV4IDYyNmJhZjMuLjYzN2ZmMTQgMTAwNjQ0CiAtLS0gYS9tZXNvbl9vcHRpb25zLnR4dAogKysrIGIvbWVzb25fb3B0aW9ucy50eHQKLUBAIC0zMzMsNiArMzMzLDEyIEBAIG9wdGlvbigKK0BAIC0zNDEsNiArMzQxLDEyIEBAIG9wdGlvbigKICAgIHZhbHVlIDogdHJ1ZSwKICAgIGRlc2NyaXB0aW9uIDogJ0VuYWJsZSBkaXJlY3QgcmVuZGVyaW5nIGluIEdMWCBhbmQgRUdMIGZvciBEUkknLAogICkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMy1BbGxvdy1lbmFibGUtRFJJLXdpdGhvdXQtRFJJLWRyaXZlcnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDMtQWxsb3ctZW5hYmxlLURSSS13aXRob3V0LURSSS1kcml2ZXJzLnBhdGNoCmluZGV4IGMyMGExZjcuLmEwNTM2YzggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMy1BbGxvdy1lbmFibGUtRFJJLXdpdGhvdXQtRFJJLWRyaXZlcnMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAzLUFsbG93LWVuYWJsZS1EUkktd2l0aG91dC1EUkktZHJpdmVycy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNWFkNjUxNTIzOGJjMDQyY2NjZjk5NTlhYmFkNDRmZGVlOWFlYjA3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2VhYTIxYTc5Y2U2ZDZlOTJmNmJmOThjMjhiNjhlM2ZjYjRkNzg3NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEZhYmlvIEJlcnRvbiA8ZmFiaW8uYmVydG9uQG9zc3lzdGVtcy5jb20uYnI+CiBEYXRlOiBXZWQsIDEyIEp1biAyMDE5IDE0OjE4OjMxIC0wMzAwCiBTdWJqZWN0OiBbUEFUQ0hdIEFsbG93IGVuYWJsZSBEUkkgd2l0aG91dCBEUkkgZHJpdmVycwpAQCAtMTUsMTAgKzE1LDEwIEBACiAgMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IDFlMzFlYjQuLjUxMmVlYzYgMTAwNjQ0CitpbmRleCBhOTU0MTE4Li42Mjg2NGM2IDEwMDY0NAogLS0tIGEvbWVzb24uYnVpbGQKICsrKyBiL21lc29uLmJ1aWxkCi1AQCAtMTQ3LDcgKzE0Nyw3IEBAIHdpdGhfZHJpX3IyMDAgPSBkcmlfZHJpdmVycy5jb250YWlucygncjIwMCcpCitAQCAtMTU0LDcgKzE1NCw3IEBAIHdpdGhfZHJpX3IyMDAgPSBkcmlfZHJpdmVycy5jb250YWlucygncjIwMCcpCiAgd2l0aF9kcmlfbm91dmVhdSA9IGRyaV9kcml2ZXJzLmNvbnRhaW5zKCdub3V2ZWF1JykKICB3aXRoX2RyaV9zd3Jhc3QgPSBkcmlfZHJpdmVycy5jb250YWlucygnc3dyYXN0JykKICAKQEAgLTI4LDEwICsyOCwxMCBAQAogIGdhbGxpdW1fZHJpdmVycyA9IGdldF9vcHRpb24oJ2dhbGxpdW0tZHJpdmVycycpCiAgaWYgZ2FsbGl1bV9kcml2ZXJzLmNvbnRhaW5zKCdhdXRvJykKIGRpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0Ci1pbmRleCA3NmNlZjI0Li5hOGFiZDA0IDEwMDY0NAoraW5kZXggNjM3ZmYxNC4uNzAwYzM0YyAxMDA2NDQKIC0tLSBhL21lc29uX29wdGlvbnMudHh0CiArKysgYi9tZXNvbl9vcHRpb25zLnR4dAotQEAgLTM0LDYgKzM0LDEyIEBAIG9wdGlvbigKK0BAIC0zNSw2ICszNSwxMiBAQCBvcHRpb24oCiAgICBjaG9pY2VzIDogWydhdXRvJywgJ3RydWUnLCAnZmFsc2UnXSwKICAgIGRlc2NyaXB0aW9uIDogJ2VuYWJsZSBzdXBwb3J0IGZvciBkcmkzJwogICkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwNC1SZXZlcnQtbWVzYS1FbmFibGUtYXNtLXVuY29uZGl0aW9uYWxseS1ub3ctdGhhdC1nZW5fLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDA0LVJldmVydC1tZXNhLUVuYWJsZS1hc20tdW5jb25kaXRpb25hbGx5LW5vdy10aGF0LWdlbl8ucGF0Y2gKaW5kZXggYjU2NThkMC4uOGQ2MTRlNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDA0LVJldmVydC1tZXNhLUVuYWJsZS1hc20tdW5jb25kaXRpb25hbGx5LW5vdy10aGF0LWdlbl8ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDA0LVJldmVydC1tZXNhLUVuYWJsZS1hc20tdW5jb25kaXRpb25hbGx5LW5vdy10aGF0LWdlbl8ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDFiMWNiNmU1ZWEyNWVhYTk4NTczMzI4Yjk1NjU3MjhhMDgyNDU5OTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDQxY2Q4ODM2ZDc4NWM3OTM4MTc2NGU3ZGU1OTMxOWY4Nzk1OWE1Y2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpckBhbGlzdGFpcjIzLm1lPgogRGF0ZTogVGh1LCAxNCBOb3YgMjAxOSAwOTowNjowMiAtMDgwMAogU3ViamVjdDogW1BBVENIXSBSZXZlcnQgIm1lc2E6IEVuYWJsZSBhc20gdW5jb25kaXRpb25hbGx5LCBub3cgdGhhdApAQCAtMTUsNyArMTUsNyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCA1MTJlZWM2Li5hMmJjYzNhIDEwMDY0NAoraW5kZXggNjI4NjRjNi4uYjUzYmU4ZCAxMDA2NDQKIC0tLSBhL21lc29uLmJ1aWxkCiArKysgYi9tZXNvbi5idWlsZAogQEAgLTQ5LDYgKzQ5LDcgQEAgd2l0aF92dWxrYW5faWNkX2RpciA9IGdldF9vcHRpb24oJ3Z1bGthbi1pY2QtZGlyJykKQEAgLTI2LDcgKzI2LDcgQEAKICB3aXRoX2dseF9yZWFkX29ubHlfdGV4dCA9IGdldF9vcHRpb24oJ2dseC1yZWFkLW9ubHktdGV4dCcpCiAgd2l0aF9nbHhfZGlyZWN0ID0gZ2V0X29wdGlvbignZ2x4LWRpcmVjdCcpCiAgd2l0aF9vc21lc2EgPSBnZXRfb3B0aW9uKCdvc21lc2EnKQotQEAgLTk4NSw0MSArOTg2LDY4IEBAIGVuZGlmCitAQCAtMTA5Myw0MSArMTA5NCw2OCBAQCBkZXBfd3MyXzMyID0gY2MuZmluZF9saWJyYXJ5KCd3czJfMzInLCByZXF1aXJlZCA6IHdpdGhfcGxhdGZvcm1fd2luZG93cykKICAKICAjIFRPRE86IHNoYXJlZC9zdGF0aWM/IElzIHRoaXMgZXZlbiB3b3J0aCBkb2luZz8KICAKQEAgLTEyOSwxMCArMTI5LDEwIEBACiAgZW5kaWYKICAKIGRpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0Ci1pbmRleCBhOGFiZDA0Li4wZjRiZDgwIDEwMDY0NAoraW5kZXggNzAwYzM0Yy4uNjJlODQ3MiAxMDA2NDQKIC0tLSBhL21lc29uX29wdGlvbnMudHh0CiArKysgYi9tZXNvbl9vcHRpb25zLnR4dAotQEAgLTIzMyw2ICsyMzMsMTIgQEAgb3B0aW9uKAorQEAgLTI0MSw2ICsyNDEsMTIgQEAgb3B0aW9uKAogICAgdmFsdWUgOiBmYWxzZSwKICAgIGRlc2NyaXB0aW9uIDogJ0VuYWJsZSBHTFZORCBzdXBwb3J0LicKICApCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDUtdmM0LXVzZS1pbnRtYXhfdC1mb3ItZm9ybWF0dGVkLW91dHB1dC1vZi10aW1lc3BlYy1tZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwNS12YzQtdXNlLWludG1heF90LWZvci1mb3JtYXR0ZWQtb3V0cHV0LW9mLXRpbWVzcGVjLW1lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwMWZlY2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDUtdmM0LXVzZS1pbnRtYXhfdC1mb3ItZm9ybWF0dGVkLW91dHB1dC1vZi10aW1lc3BlYy1tZS5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIDM4YTMxMzQ3NGUxMjdkNjFlNzQ5ODY2NDIzZTcwOGZjODZlZDllYzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCA0IERlYyAyMDE5IDE0OjE1OjI4IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIHZjNDogdXNlIGludG1heF90IGZvciBmb3JtYXR0ZWQgb3V0cHV0IG9mIHRpbWVzcGVjIG1lbWJlcnMKKworMzJiaXQgYXJjaGl0ZWN0dXJlcyB3aGljaCBoYXZlIDY0Yml0IHRpbWVfdCBkb2VzIG5vdCBmaXQgdGhlIGFzc3VtcHRpb24KK29mIHRpbWVfdCBiZWluZyBzYW1lIGFzIHN5c3RlbSBsb25nIGludAorCitGaXhlcworZXJyb3I6IGZvcm1hdCBzcGVjaWZpZXMgdHlwZSAnbG9uZycgYnV0IHRoZSBhcmd1bWVudCBoYXMgdHlwZSAndGltZV90JyAoYWthICdsb25nIGxvbmcnKSBbLVdlcnJvciwtV2Zvcm1hdF0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUudHZfc2VjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvbWVzYS9tZXNhL21lcmdlX3JlcXVlc3RzLzI5NjZdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2dhbGxpdW0vZHJpdmVycy92M2QvdjNkX2J1Zm1nci5jIHwgNCArKy0tCisgc3JjL2dhbGxpdW0vZHJpdmVycy92YzQvdmM0X2J1Zm1nci5jIHwgNCArKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvZ2FsbGl1bS9kcml2ZXJzL3YzZC92M2RfYnVmbWdyLmMgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL3YzZC92M2RfYnVmbWdyLmMKK2luZGV4IGIzZTRkMDUzY2MwLi5jNTE0YmYwMGJmMCAxMDA2NDQKKy0tLSBhL3NyYy9nYWxsaXVtL2RyaXZlcnMvdjNkL3YzZF9idWZtZ3IuYworKysrIGIvc3JjL2dhbGxpdW0vZHJpdmVycy92M2QvdjNkX2J1Zm1nci5jCitAQCAtODAsOCArODAsOCBAQCB2M2RfYm9fZHVtcF9zdGF0cyhzdHJ1Y3QgdjNkX3NjcmVlbiAqc2NyZWVuKQorIAorICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdGltZTsKKyAgICAgICAgICAgICAgICAgY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZ0aW1lKTsKKy0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgIG5vdzogICAgICAgICAgICAgICAlbGRcbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgdGltZS50dl9zZWMpOworKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgbm93OiAgICAgICAgICAgICAgICVqZFxuIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAoaW50bWF4X3QpdGltZS50dl9zZWMpOworICAgICAgICAgfQorIH0KKyAKK2RpZmYgLS1naXQgYS9zcmMvZ2FsbGl1bS9kcml2ZXJzL3ZjNC92YzRfYnVmbWdyLmMgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL3ZjNC92YzRfYnVmbWdyLmMKK2luZGV4IDVlYzM2MDkzNGMwLi5iZjA1ZjZjYWRkNiAxMDA2NDQKKy0tLSBhL3NyYy9nYWxsaXVtL2RyaXZlcnMvdmM0L3ZjNF9idWZtZ3IuYworKysrIGIvc3JjL2dhbGxpdW0vZHJpdmVycy92YzQvdmM0X2J1Zm1nci5jCitAQCAtMTA3LDggKzEwNyw4IEBAIHZjNF9ib19kdW1wX3N0YXRzKHN0cnVjdCB2YzRfc2NyZWVuICpzY3JlZW4pCisgCisgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyB0aW1lOworICAgICAgICAgICAgICAgICBjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJnRpbWUpOworLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgbm93OiAgICAgICAgICAgICAgICVsZFxuIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lLnR2X3NlYyk7CisrICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICBub3c6ICAgICAgICAgICAgICAgJWpkXG4iLAorKyAgICAgICAgICAgICAgICAgICAgICAgIChpbnRtYXhfdCl0aW1lLnR2X3NlYyk7CisgICAgICAgICB9CisgfQorIAorLS0gCisyLjI0LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzE5LjIuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xOS4yLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0YjFjMWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzE5LjIuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgbWVzYV8ke1BWfS5iYgotCi1TVU1NQVJZICs9ICIgKE9wZW5HTCBvbmx5LCBubyBFR0wvR0xFUykiCi0KLVBST1ZJREVTID0gInZpcnR1YWwvbGliZ2wgdmlydHVhbC9tZXNhIgotCi1TID0gIiR7V09SS0RJUn0vbWVzYS0ke1BWfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIm9wZW5nbCBkcmkgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgotUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPSAib3BlbmdsIGRyaSAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZ2xfMjAuMC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzIwLjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzg5N2NkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzIwLjAuMi5iYgpAQCAtMCwwICsxLDE1IEBACityZXF1aXJlIG1lc2FfJHtQVn0uYmIKKworU1VNTUFSWSArPSAiIChPcGVuR0wgb25seSwgbm8gRUdML0dMRVMpIgorCitQUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmdsIHZpcnR1YWwvbWVzYSIKKworUyA9ICIke1dPUktESVJ9L21lc2EtJHtQVn0iCisKKyMgQXQgbGVhc3Qgb25lIERSSSByZW5kZXJpbmcgZW5naW5lIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIG1lc2EuCisjIFdoZW4gbm8gWDExIGlzIGF2YWlsYWJsZSwgdXNlIG9zbWVzYSBmb3IgdGhlIHJlbmRlcmluZyBlbmdpbmUuCitQQUNLQUdFQ09ORklHID8/PSAib3BlbmdsIGRyaSAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnb3NtZXNhJywgZCl9IgorUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPSAib3BlbmdsIGRyaSAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnb3NtZXNhJywgZCl9IgorCisjIFdoZW4gTk9UIHVzaW5nIFgxMSwgd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgaGF2ZSBzd3Jhc3QgYXZhaWxhYmxlLgorRFJJRFJJVkVSU19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnJywgJyxzd3Jhc3QnLCBkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLmluYwppbmRleCA1ODM4MjA3Li5iN2VmNDk2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMKQEAgLTEwLDcgKzEwLDcgQEAKIEJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZyIKIFNFQ1RJT04gPSAieDExIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2NzL2xpY2Vuc2UuaHRtbDttZDU9M2E0OTk5Y2FmODJjYzUwM2FjOGI5ZTM3YzIzNTc4MmUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2NzL2xpY2Vuc2UuaHRtbDttZDU9YzE4NDNkOTNjNDYwYmJmNzc4ZDYwMzdjZTMyNGY5ZjciCiAKIFBFID0gIjIiCiAKQEAgLTQ2LDYgKzQ2LDE5IEBACiAKIE1FU0FfTExWTV9SRUxFQVNFID89ICIke0xMVk1WRVJTSU9OfSIKIAorIyBzZXQgdGhlIE1FU0FfQlVJTERfVFlQRSB0byBlaXRoZXIgJ3JlbGVhc2UnIChkZWZhdWx0KSBvciAnZGVidWcnCisjIGJ5IGRlZmF1bHQgdGhlIHVwc3RyZWFtIG1lc2Egc291cmNlcyBidWlsZCBhIGRlYnVnIHJlbGVhc2UKKyMgaGVyZSB3ZSBhc3N1bWUgdGhlIHVzZXIgd2lsbCB3YW50IGEgcmVsZWFzZSBidWlsZCBieSBkZWZhdWx0CitNRVNBX0JVSUxEX1RZUEUgPz0gInJlbGVhc2UiCitkZWYgY2hlY2tfYnVpbGR0eXBlKGQpOgorICAgIF9idWlsZHR5cGUgPSBkLmdldFZhcignTUVTQV9CVUlMRF9UWVBFJykKKyAgICBpZiBfYnVpbGR0eXBlIG5vdCBpbiBbJ3JlbGVhc2UnLCAnZGVidWcnXToKKyAgICAgICAgYmIuZmF0YWwoInVua25vd24gYnVpbGQgdHlwZSAoJXMpLCBwbGVhc2Ugc2V0IE1FU0FfQlVJTERfVFlQRSB0byBlaXRoZXIgJ3JlbGVhc2UnIG9yICdkZWJ1ZyciICUgX2J1aWxkdHlwZSkKKyAgICBpZiBfYnVpbGR0eXBlID09ICdkZWJ1Zyc6CisgICAgICAgIHJldHVybiAnZGVidWdvcHRpbWl6ZWQnCisgICAgcmV0dXJuICdwbGFpbicKK01FU09OX0JVSUxEVFlQRSA9ICIke0BjaGVja19idWlsZHR5cGUoZCl9IgorCiBFWFRSQV9PRU1FU09OID0gIiBcCiAgICAgLURzaGFyZWQtZ2xhcGk9dHJ1ZSBcCiAgICAgLURnYWxsaXVtLW9wZW5jbD1kaXNhYmxlZCBcCkBAIC01NCw3ICs2Nyw3IEBACiAiCiAKIFBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB2dWxrYW4nLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ29wZW5nbCBlZ2wgZ2xlcyBnYm0gZHJpIGdhbGxpdW0nLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdvcGVuZ2wgZWdsIGdsZXMgZ2JtIGRyaSBnYWxsaXVtIHZpcmdsJywgJycsIGQpfSBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgb3BlbmdsJywgJ3gxMSBkcmkzJywgJycsIGQpfSBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgdnVsa2FuJywgJ2RyaTMnLCAnJywgZCl9IFwKICAgICAgICAgICAgICAgICAgICBlbGYtdGxzIFwKQEAgLTExOSwxMCArMTMyLDExIEBACiBHQUxMSVVNRFJJVkVSU19MTFZNID0gInIzMDAsc3ZnYSxub3V2ZWF1JHtAJywke0dBTExJVU1EUklWRVJTX0xMVk0zM30nIGlmICR7R0FMTElVTURSSVZFUlNfTExWTTMzX0VOQUJMRUR9IGVsc2UgJyd9IgogCiBQQUNLQUdFQ09ORklHW3I2MDBdID0gIiIKK1BBQ0tBR0VDT05GSUdbdmlyZ2xdID0gIiIKIAogR0FMTElVTURSSVZFUlNfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dhbGxpdW0tbGx2bScsICcsJHtHQUxMSVVNRFJJVkVSU19MTFZNfScsICcnLCBkKX0iCiBHQUxMSVVNRFJJVkVSU19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncjYwMCcsICcscjYwMCcsICcnLCBkKX0iCi1HQUxMSVVNRFJJVkVSU19hcHBlbmQgPSAiLHZpcmdsIgorR0FMTElVTURSSVZFUlNfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3ZpcmdsJywgJyx2aXJnbCcsICcnLCBkKX0iCiAKIFBBQ0tBR0VDT05GSUdbZ2FsbGl1bV0gPSAiLURnYWxsaXVtLWRyaXZlcnM9JHtHQUxMSVVNRFJJVkVSU30sIC1EZ2FsbGl1bS1kcml2ZXJzPScnIgogUEFDS0FHRUNPTkZJR1tnYWxsaXVtLWxsdm1dID0gIi1EbGx2bT10cnVlIC1Ec2hhcmVkLWxsdm09dHJ1ZSwgLURsbHZtPWZhbHNlLCBsbHZtJHtNRVNBX0xMVk1fUkVMRUFTRX0gbGx2bS1uYXRpdmUgXApAQCAtMTQ3LDYgKzE2MSw3IEBACiBGVUxMX09QVElNSVpBVElPTl9hcHBlbmQgPSAiIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIgogCiBDRkxBR1NfYXBwZW5kX2FybXY1ID0gIiAtRE1JU1NJTkdfNjRCSVRfQVRPTUlDUyIKK0NGTEFHU19hcHBlbmRfYXJtdjYgPSAiIC1ETUlTU0lOR182NEJJVF9BVE9NSUNTIgogCiAjIFJlbW92ZSB0aGUgbWVzYSBkZXBlbmRlbmN5IG9uIG1lc2EtZGV2LCBhcyBtZXNhIGlzIGVtcHR5CiBSREVQRU5EU18ke1BOfS1kZXYgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzE5LjIuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xOS4yLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0YjMzZGYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzE5LjIuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLXJlcXVpcmUgJHtCUE59LmluYwotCi1TUkNfVVJJID0gImh0dHBzOi8vbWVzYS5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZS9tZXNhLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lc29uLmJ1aWxkLWNoZWNrLWZvci1hbGwtbGludXgtaG9zdF9vcy1jb21iaW5hdGlvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1tZXNvbi5idWlsZC1tYWtlLVRMUy1FTEYtb3B0aW9uYWwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1BbGxvdy1lbmFibGUtRFJJLXdpdGhvdXQtRFJJLWRyaXZlcnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1SZXZlcnQtbWVzYS1FbmFibGUtYXNtLXVuY29uZGl0aW9uYWxseS1ub3ctdGhhdC1nZW5fLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWMwNDc3MzJiODE2NTFkZGIzNDE1OTc1MjhiNGIwOTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDkwMDBhMGY3ZGJiZDgyZTE5M2I4MWE4ZjFiZjBjMTE4ZWFiN2NhOTc1YzAzMjkxODE5Njg1OTZlNTQ4ZTMwZiIKLQotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAibWVzYS0oP1A8cHZlcj5cZCsoXC5cZCspKykiCi0KLSNiZWNhdXNlIHdlIGNhbm5vdCByZWx5IG9uIHRoZSBmYWN0IHRoYXQgYWxsIGFwcHMgd2lsbCB1c2UgcGtnY29uZmlnLAotI21ha2UgZWdscGxhdGZvcm0uaCBpbmRlcGVuZGVudCBvZiBNRVNBX0VHTF9OT19YMTFfSEVBREVSCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdlZ2wnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBzZWQgLWkgLWUgJ3MvXiNpZiBkZWZpbmVkKE1FU0FfRUdMX05PX1gxMV9IRUFERVJTKSQvI2lmIGRlZmluZWQoTUVTQV9FR0xfTk9fWDExX0hFQURFUlMpIHx8ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3gxMScsICcwJywgJzEnLCBkKX0vJyAke0R9JHtpbmNsdWRlZGlyfS9FR0wvZWdscGxhdGZvcm0uaAotICAgIGZpCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMjAuMC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzIwLjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmVlMjhjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzIwLjAuMi5iYgpAQCAtMCwwICsxLDI1IEBACityZXF1aXJlICR7QlBOfS5pbmMKKworU1JDX1VSSSA9ICJodHRwczovL21lc2EuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmUvbWVzYS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tZXNvbi5idWlsZC1jaGVjay1mb3ItYWxsLWxpbnV4LWhvc3Rfb3MtY29tYmluYXRpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbWVzb24uYnVpbGQtbWFrZS1UTFMtRUxGLW9wdGlvbmFsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtQWxsb3ctZW5hYmxlLURSSS13aXRob3V0LURSSS1kcml2ZXJzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtUmV2ZXJ0LW1lc2EtRW5hYmxlLWFzbS11bmNvbmRpdGlvbmFsbHktbm93LXRoYXQtZ2VuXy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LXZjNC11c2UtaW50bWF4X3QtZm9yLWZvcm1hdHRlZC1vdXRwdXQtb2YtdGltZXNwZWMtbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tZXNvbi1taXNkZXRlY3RzLTY0Yml0LWF0b21pY3Mtb24tbWlwcy1jbGFuZy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjMxY2E1OWNkOTJjMzhjYjhlMWE1OGI2MmIwMWMzZTA4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFhNTRmMWNiNjY5NTUwNjA2YWFiOGNlYjQ3NTEwNWQxNWFlYjgxNGZjYTVhNzc4Y2U3MGQwZmQxMGU5OGU4NmYiCisKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIm1lc2EtKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitDRkxBR1MgKz0gIi1mY29tbW9uIgorCisjYmVjYXVzZSB3ZSBjYW5ub3QgcmVseSBvbiB0aGUgZmFjdCB0aGF0IGFsbCBhcHBzIHdpbGwgdXNlIHBrZ2NvbmZpZywKKyNtYWtlIGVnbHBsYXRmb3JtLmggaW5kZXBlbmRlbnQgb2YgTUVTQV9FR0xfTk9fWDExX0hFQURFUgorZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZWdsJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgc2VkIC1pIC1lICdzL14jZWxpZiBkZWZpbmVkKF9fdW5peF9fKSAmJiBkZWZpbmVkKEVHTF9OT19YMTEpJC8jZWxpZiBkZWZpbmVkKF9fdW5peF9fKSBcJlwmIGRlZmluZWQoRUdMX05PX1gxMSkgfHwgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneDExJywgJzAnLCAnMScsIGQpfS8nICR7RH0ke2luY2x1ZGVkaXJ9L0VHTC9lZ2xwbGF0Zm9ybS5oCisgICAgZmkKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtRml4LWJ1aWxkLXJlcHJvZHVjaWJpbGl0eS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtRml4LWJ1aWxkLXJlcHJvZHVjaWJpbGl0eS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2FiZjg3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ28vMDAwMS1GaXgtYnVpbGQtcmVwcm9kdWNpYmlsaXR5LnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gZjhiMzI5MDE5ODFhMDZhOGRiNDE2OWI4MmE3MDRkY2Y3ZThiNjU2MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjAgTm92IDIwMTkgMTU6NDM6NTcgLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHJlcHJvZHVjaWJpbGl0eQorCitDaGFuZ2VzIHRoZSBjb21tZW50IGluIHBhbmdvLWVudW0tdHlwZXMuYyB0byByZWZlcmVuY2UgdGhlIGZpbGUgYmFzZW5hbWUKK2luc3RlYWQgb2YgdGhlIGZ1bGwgcGF0aC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGdlbmVyYXRlZCBmaWxlIGlzCityZXByb2R1Y2libGUgd2hlbiBpdCBpcyBpbmNsdWRlZCBpbiBzb3VyY2UgcGFja2FnZXMgbWVhbnQgZm9yIGRlYnVnZ2luZy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvcGFuZ28vbWVyZ2VfcmVxdWVzdHMvMTU5XQorU2lnbmVkLW9mZi1ieTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgorLS0tCisgcGFuZ28vcGFuZ28tZW51bS10eXBlcy5jLnRlbXBsYXRlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcGFuZ28vcGFuZ28tZW51bS10eXBlcy5jLnRlbXBsYXRlIGIvcGFuZ28vcGFuZ28tZW51bS10eXBlcy5jLnRlbXBsYXRlCitpbmRleCBkOTIyYzY5MS4uMGQ1NWVmNzQgMTAwNjQ0CistLS0gYS9wYW5nby9wYW5nby1lbnVtLXR5cGVzLmMudGVtcGxhdGUKKysrKyBiL3BhbmdvL3BhbmdvLWVudW0tdHlwZXMuYy50ZW1wbGF0ZQorQEAgLTYsNyArNiw3IEBACisgLyoqKiBFTkQgZmlsZS1oZWFkZXIgKioqLworIAorIC8qKiogQkVHSU4gZmlsZS1wcm9kdWN0aW9uICoqKi8KKy0vKiBlbnVtZXJhdGlvbnMgZnJvbSAiQGZpbGVuYW1lQCIgKi8KKysvKiBlbnVtZXJhdGlvbnMgZnJvbSAiQGJhc2VuYW1lQCIgKi8KKyAvKioqIEVORCBmaWxlLXByb2R1Y3Rpb24gKioqLworIAorIC8qKiogQkVHSU4gdmFsdWUtaGVhZGVyICoqKi8KKy0tIAorMi4yMy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtU2tpcC10aGFpLWJyZWFrLXRlc3RzLXdpdGhvdXQtbGlidGhhaS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtU2tpcC10aGFpLWJyZWFrLXRlc3RzLXdpdGhvdXQtbGlidGhhaS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Y5ZWJmZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nby8wMDAxLVNraXAtdGhhaS1icmVhay10ZXN0cy13aXRob3V0LWxpYnRoYWkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDEyYmViMzk5MjViNWE0NTc0YTdjZmQ4NjA3M2I1OWJjZWI0OWY3OTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0aGlhcyBDbGFzZW4gPG1jbGFzZW5AcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgNCBTZXAgMjAxOSAxNTo1MTowNiAtMDQwMAotU3ViamVjdDogW1BBVENIXSBTa2lwIHRoYWkgYnJlYWsgdGVzdHMgd2l0aG91dCBsaWJ0aGFpCi0KLUlmIHdlIGRvbid0IGhhdmUgbGlidGhhaSwgdGhlc2UgdGVzdHMgZmFpbC4KLQotQ2xvc2VzOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvcGFuZ28vaXNzdWVzLzQyMAotLS0tCi0gdGVzdHMvbWVzb24uYnVpbGQgfCA1ICsrKystCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAotaW5kZXggNGMyMmMxMmMuLmM2MTczMzFmIDEwMDY0NAotLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKLSsrKyBiL3Rlc3RzL21lc29uLmJ1aWxkCi1AQCAtODksOSArODksMTIgQEAgdGVzdF9icmVha3NfZGF0YSA9IFsKLSAgICdicmVha3Mvb25lJywKLSAgICdicmVha3MvdHdvJywKLSAgICdicmVha3MvdGhyZWUnLAotLSAgJ2JyZWFrcy9mb3VyJywKLSBdCi0gCi0raWYgdGhhaV9kZXAuZm91bmQoKQotKyAgdGVzdF9icmVha3NfZGF0YSArPSBbICdicmVha3MvZm91cicsIF0KLStlbmRpZgotKwotIHRlc3RfaXRlbXNfZGF0YSA9IFsKLSAgICdpdGVtaXplL29uZScsCi0gXQotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40NC42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40NC42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTM4ZWY3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDQuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLVNVTU1BUlkgPSAiRnJhbWV3b3JrIGZvciBsYXlvdXQgYW5kIHJlbmRlcmluZyBvZiBpbnRlcm5hdGlvbmFsaXplZCB0ZXh0IgotREVTQ1JJUFRJT04gPSAiUGFuZ28gaXMgYSBsaWJyYXJ5IGZvciBsYXlpbmcgb3V0IGFuZCByZW5kZXJpbmcgb2YgdGV4dCwgXAotd2l0aCBhbiBlbXBoYXNpcyBvbiBpbnRlcm5hdGlvbmFsaXphdGlvbi4gUGFuZ28gY2FuIGJlIHVzZWQgYW55d2hlcmUgXAotdGhhdCB0ZXh0IGxheW91dCBpcyBuZWVkZWQsIHRob3VnaCBtb3N0IG9mIHRoZSB3b3JrIG9uIFBhbmdvIHNvIGZhciBoYXMgXAotYmVlbiBkb25lIGluIHRoZSBjb250ZXh0IG9mIHRoZSBHVEsrIHdpZGdldCB0b29sa2l0LiBQYW5nbyBmb3JtcyB0aGUgXAotY29yZSBvZiB0ZXh0IGFuZCBmb250IGhhbmRsaW5nIGZvciBHVEsrLTIueC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnBhbmdvLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmciCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2Mi4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTciCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi0KLWluaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgcHRlc3QtZ25vbWUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TUkNfVVJJICs9ICJmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVNraXAtdGhhaS1icmVhay10ZXN0cy13aXRob3V0LWxpYnRoYWkucGF0Y2giCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJkYjBhMzI0M2JhMzNlMDJhYWE3NzU0MTJmOGU1ZjQxMiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjNlMWU0MWJhODM4NzM3ZTIwMDYxMWZmMDAxZTNiMzA0YzJjYTRjZGJiYTYzZDIwMGEyMGRiMGIwZGRjMGY4NmMiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGZvbnRjb25maWcgZnJlZXR5cGUgdmlydHVhbC9saWJpY29udiBjYWlybyBoYXJmYnV6eiBmcmliaWRpIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJ3Rlc3RzJywgJycsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1t4MTFdID0gIiwsdmlydHVhbC9saWJ4MTEgbGlieGZ0IgotUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLURpbnN0YWxsLXRlc3RzPXRydWUsIC1EaW5zdGFsbC10ZXN0cz1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbdGhhaV0gPSAiLCxsaWJ0aGFpIgotCi1HVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCi1HSVJfTUVTT05fT1BUSU9OID0gJ2ludHJvc3BlY3Rpb24nCi0KLUxFQURfU09OQU1FID0gImxpYnBhbmdvLTEuMCoiCi0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS8qICR7bGliZGlyfS9saWJwYW5nbyoke1NPTElCU30iCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJjYW50YXJlbGwtZm9udHMiCi1SREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgbG9jYWxlLWJhc2UtZW4tdXMiCi0KLVJQUk9WSURFU18ke1BOfSArPSAicGFuZ28tbW9kdWxlcyBwYW5nby1tb2R1bGUtaW5kaWMtbGFuZyBcCi0gICAgICAgICAgICAgICAgICAgIHBhbmdvLW1vZHVsZS1iYXNpYy1mYyBwYW5nby1tb2R1bGUtYXJhYmljLWxhbmciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDQuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDQuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWU4YWJjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40NC43LmJiCkBAIC0wLDAgKzEsNDkgQEAKK1NVTU1BUlkgPSAiRnJhbWV3b3JrIGZvciBsYXlvdXQgYW5kIHJlbmRlcmluZyBvZiBpbnRlcm5hdGlvbmFsaXplZCB0ZXh0IgorREVTQ1JJUFRJT04gPSAiUGFuZ28gaXMgYSBsaWJyYXJ5IGZvciBsYXlpbmcgb3V0IGFuZCByZW5kZXJpbmcgb2YgdGV4dCwgXAord2l0aCBhbiBlbXBoYXNpcyBvbiBpbnRlcm5hdGlvbmFsaXphdGlvbi4gUGFuZ28gY2FuIGJlIHVzZWQgYW55d2hlcmUgXAordGhhdCB0ZXh0IGxheW91dCBpcyBuZWVkZWQsIHRob3VnaCBtb3N0IG9mIHRoZSB3b3JrIG9uIFBhbmdvIHNvIGZhciBoYXMgXAorYmVlbiBkb25lIGluIHRoZSBjb250ZXh0IG9mIHRoZSBHVEsrIHdpZGdldCB0b29sa2l0LiBQYW5nbyBmb3JtcyB0aGUgXAorY29yZSBvZiB0ZXh0IGFuZCBmb250IGhhbmRsaW5nIGZvciBHVEsrLTIueC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnBhbmdvLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmciCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2Mi4wKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTciCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCisKK2luaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgcHRlc3QtZ25vbWUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitTUkNfVVJJICs9ICJmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1yZXByb2R1Y2liaWxpdHkucGF0Y2giCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJjNzVjYzViODMzZDkzNGQ5OGU4MzM0MzgzMmUyMGU1ZCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjY2YTViNmNjMTNkYjczZWZlZDY3YjhlOTMzNTg0NTA5ZjhkZGI3YjEwYThhNDBjMzg1MGNhNGE5ODVlYTFiMWYiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGZvbnRjb25maWcgZnJlZXR5cGUgdmlydHVhbC9saWJpY29udiBjYWlybyBoYXJmYnV6eiBmcmliaWRpIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJ3Rlc3RzJywgJycsIGQpfSIKKworUEFDS0FHRUNPTkZJR1t4MTFdID0gIiwsdmlydHVhbC9saWJ4MTEgbGlieGZ0IgorUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLURpbnN0YWxsLXRlc3RzPXRydWUsIC1EaW5zdGFsbC10ZXN0cz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdGhhaV0gPSAiLCxsaWJ0aGFpIgorCitHVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCitHSVJfTUVTT05fT1BUSU9OID0gJ2ludHJvc3BlY3Rpb24nCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX3Rvb2xjaGFpbi1jbGFuZygpIHsKKyAgICBzZWQgLWkgLWUgIi9XZXJyb3I9aW1wbGljaXQtZmFsbHRocm91Z2gvZCIgJHtTfS9tZXNvbi5idWlsZAorfQorCitMRUFEX1NPTkFNRSA9ICJsaWJwYW5nby0xLjAqIgorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiAke2xpYmRpcn0vbGlicGFuZ28qJHtTT0xJQlN9IgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiY2FudGFyZWxsLWZvbnRzIgorUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGxvY2FsZS1iYXNlLWVuLXVzIgorCitSUFJPVklERVNfJHtQTn0gKz0gInBhbmdvLW1vZHVsZXMgcGFuZ28tbW9kdWxlLWluZGljLWxhbmcgXAorICAgICAgICAgICAgICAgICAgICBwYW5nby1tb2R1bGUtYmFzaWMtZmMgcGFuZ28tbW9kdWxlLWFyYWJpYy1sYW5nIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0X2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXRfZ2l0LmJiCmluZGV4IDY5NmQ0MzguLjU4ZDEwZDYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXRfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXRfZ2l0LmJiCkBAIC0xMCw3ICsxMCw3IEBACiAgICAgICAgICAgICIKIFVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAotU1JDUkVWID0gIjBkMWE0N2E0YzEwZDRkZDcyMjViZDY1MTBmODE5MTY4NGIzMTIzNWUiCitTUkNSRVYgPSAiNjEyNmMyZDRlNDc2Yzc3NzBkMjE2ZmZhMTkzMmMxMGUyYTVhNzgxMyIKICMgKHdoZW4gUFYgZ29lcyBhYm92ZSAxLjAgcmVtb3ZlIHRoZSB0cmFpbGluZyByKQogUFYgPSAiMS4wK2dpdHIke1NSQ1BWfSIKIApAQCAtNDQsNiArNDQsNyBAQAogICAgZmkKIH0KIAorIyBGb3JjaWJseSBzdHJpcCBiZWNhdXNlIFBpZ2xpdCBpcyAqaHVnZSoKIE9FQ01BS0VfVEFSR0VUX0lOU1RBTEwgPSAiaW5zdGFsbC9zdHJpcCIKIAogUkRFUEVORFNfJHtQTn0gPSAid2FmZmxlIHdhZmZsZS1iaW4gcHl0aG9uMyBweXRob24zLW1ha28gcHl0aG9uMy1qc29uIFwKQEAgLTU1LDUgKzU2LDkgQEAKIAogSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyBhbHJlYWR5LXN0cmlwcGVkIgogCisjIEFzIG5vdGhpbmcgYnVpbGRzIGFnYWluc3QgUGlnbGl0IHdlIGRvbid0IG5lZWQgdG8gaGF2ZSBhbnl0aGluZyBpbiB0aGUKKyMgc3lzcm9vdCwgZXNwZWNpYWxseSB3aGVuIHRoaXMgaXMgfjJHQiBvZiB0ZXN0IHN1aXRlCitTWVNST09UX0RJUlNfcmVtb3ZlID0gIiR7bGliZGlyfSIKKwogIyBDYW4ndCBiZSBidWlsdCB3aXRoIGNjYWNoZQogQ0NBQ0hFX0RJU0FCTEUgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3ZpcmdscmVuZGVyZXIvdmlyZ2xyZW5kZXJlci8wMDAxLW1lc29uLmJ1aWxkLXVzZS1weXRob24zLWRpcmVjdGx5LWZvci1weXRob24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXIvMDAwMS1tZXNvbi5idWlsZC11c2UtcHl0aG9uMy1kaXJlY3RseS1mb3ItcHl0aG9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmZDFkNTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXIvMDAwMS1tZXNvbi5idWlsZC11c2UtcHl0aG9uMy1kaXJlY3RseS1mb3ItcHl0aG9uLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gNjM3ODhjNjNlZDM5YTNjZTk5OTRmNDMxNWQ4OTk3ZTFhOTMwMGQ0ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogTW9uLCA2IEphbiAyMDIwIDEyOjQ0OjQyICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lc29uLmJ1aWxkOiB1c2UgJ3B5dGhvbjMnIGRpcmVjdGx5IGZvciBweXRob24KKworVGhpcyBhdm9pZHMgYSBkZXBlbmRlbmN5IG9uIHRhcmdldCBweXRob24gKGR1ZSB0byBtZXNvbiBwcm9iaW5nCitpdHMgY29uZmlndXJhdGlvbikuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgbWVzb24uYnVpbGQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCA2ODJkN2M4Li4xOWQyZWFlIDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtNjAsNyArNjAsNyBAQCBmb3JlYWNoIHcgOiB3YXJuaW5ncworICAgIGVuZGlmCisgZW5kZm9yZWFjaAorIAorLXByb2dfcHl0aG9uID0gaW1wb3J0KCdweXRob24nKS5maW5kX2luc3RhbGxhdGlvbigncHl0aG9uMycpCisrcHJvZ19weXRob24gPSAncHl0aG9uMycKKyAKKyBsaWJkcm1fZGVwID0gZGVwZW5kZW5jeSgnbGliZHJtJywgdmVyc2lvbiA6ICc+PTIuNC41MCcpCisgdGhyZWFkX2RlcCA9IGRlcGVuZGVuY3koJ3RocmVhZHMnKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdmlyZ2xyZW5kZXJlci92aXJnbHJlbmRlcmVyXzAuOC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdmlyZ2xyZW5kZXJlci92aXJnbHJlbmRlcmVyXzAuOC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDIwZDg0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3ZpcmdscmVuZGVyZXIvdmlyZ2xyZW5kZXJlcl8wLjguMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiVmlyR0wgdmlydHVhbCBPcGVuR0wgcmVuZGVyZXIiCi1ERVNDUklQVElPTiA9ICJWaXJnaWwgaXMgYSByZXNlYXJjaCBwcm9qZWN0IHRvIGludmVzdGlnYXRlIHRoZSBwb3NzaWJpbGl0eSBvZiBcCi1jcmVhdGluZyBhIHZpcnR1YWwgM0QgR1BVIGZvciB1c2UgaW5zaWRlIHFlbXUgdmlydHVhbCBtYWNoaW5lcywgdGhhdCBhbGxvd3MgXAotdGhlIGd1ZXN0IG9wZXJhdGluZyBzeXN0ZW0gdG8gdXNlIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIGhvc3QgR1BVIHRvIFwKLWFjY2VsZXJhdGUgM0QgcmVuZGVyaW5nLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vdmlyZ2lsM2QuZ2l0aHViLmlvLyIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jODFjMDhlZWVmZDk0MThmY2E4Zjg4MzA5YTc2ZGIxMCIKLQotREVQRU5EUyA9ICJsaWJkcm0gbWVzYSBsaWJlcG94eSIKLVNSQ1JFViA9ICI0OGNjOTZjOWFlYmI5ZDAxNjQ4MzBhMTU3ZWZjODkxNmYwOGYwMGMwIgotU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy92aXJnbHJlbmRlcmVyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ2FsbGl1bS1FeHBhbmQtbGliYy1jaGVjay10by1iZS1wbGF0Zm9ybS1PUy1jaGVjay5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFU19jbGFzcy1uYXRpdmUgPSAiIgotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTX2NsYXNzLW5hdGl2ZXNkayA9ICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXJfMC44LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXJfMC44LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA0NmI4NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3ZpcmdscmVuZGVyZXIvdmlyZ2xyZW5kZXJlcl8wLjguMi5iYgpAQCAtMCwwICsxLDI2IEBACitTVU1NQVJZID0gIlZpckdMIHZpcnR1YWwgT3BlbkdMIHJlbmRlcmVyIgorREVTQ1JJUFRJT04gPSAiVmlyZ2lsIGlzIGEgcmVzZWFyY2ggcHJvamVjdCB0byBpbnZlc3RpZ2F0ZSB0aGUgcG9zc2liaWxpdHkgb2YgXAorY3JlYXRpbmcgYSB2aXJ0dWFsIDNEIEdQVSBmb3IgdXNlIGluc2lkZSBxZW11IHZpcnR1YWwgbWFjaGluZXMsIHRoYXQgYWxsb3dzIFwKK3RoZSBndWVzdCBvcGVyYXRpbmcgc3lzdGVtIHRvIHVzZSB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBob3N0IEdQVSB0byBcCithY2NlbGVyYXRlIDNEIHJlbmRlcmluZy4iCitIT01FUEFHRSA9ICJodHRwczovL3ZpcmdpbDNkLmdpdGh1Yi5pby8iCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzgxYzA4ZWVlZmQ5NDE4ZmNhOGY4ODMwOWE3NmRiMTAiCisKK0RFUEVORFMgPSAibGliZHJtIG1lc2EgbGliZXBveHkiCitTUkNSRVYgPSAiN2QyMDRmMzkyN2JlNjVmYjMzNjVkY2UwMWRiY2QwNGQ0NDdhNDk4NSIKK1NSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvdmlyZ2xyZW5kZXJlciBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdhbGxpdW0tRXhwYW5kLWxpYmMtY2hlY2stdG8tYmUtcGxhdGZvcm0tT1MtY2hlY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tZXNvbi5idWlsZC11c2UtcHl0aG9uMy1kaXJlY3RseS1mb3ItcHl0aG9uLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBmZWF0dXJlc19jaGVjaworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVNfY2xhc3MtbmF0aXZlID0gIiIKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFU19jbGFzcy1uYXRpdmVzZGsgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcC8wMDAxLVVzZS1BU1NJTVBfTElCX0lOU1RBTExfRElSLXRvLXNlYXJjaC1saWJyYXJ5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcC8wMDAxLVVzZS1BU1NJTVBfTElCX0lOU1RBTExfRElSLXRvLXNlYXJjaC1saWJyYXJ5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0YzViZmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wLzAwMDEtVXNlLUFTU0lNUF9MSUJfSU5TVEFMTF9ESVItdG8tc2VhcmNoLWxpYnJhcnkucGF0Y2gKQEAgLTAsMCArMSw2OCBAQAorRnJvbSA1OGY1NzZkNmYyNDBiMDg5NTdhNDAyOTYwY2RmMDZjNzQyMDFhYzdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxMiBEZWMgMjAxOSAyMjoxNjoxNSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBVc2UgQVNTSU1QX0xJQl9JTlNUQUxMX0RJUiB0byBzZWFyY2ggbGlicmFyeQorCitVc2UgQVNTSU1QX0xJQl9JTlNUQUxMX0RJUiByYXRoZXIgdGhhbiBoYXJkY29kZWQgL2xpYiB0byBzZWFyY2ggbGlicmFyeQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKKy0tLQorIGFzc2ltcFRhcmdldHMtcmVsZWFzZS5jbWFrZS5pbiB8IDE2ICsrKysrKysrLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYXNzaW1wVGFyZ2V0cy1yZWxlYXNlLmNtYWtlLmluIGIvYXNzaW1wVGFyZ2V0cy1yZWxlYXNlLmNtYWtlLmluCitpbmRleCBmM2RiOGYxLi5iOGEwNjZhIDEwMDY0NAorLS0tIGEvYXNzaW1wVGFyZ2V0cy1yZWxlYXNlLmNtYWtlLmluCisrKysgYi9hc3NpbXBUYXJnZXRzLXJlbGVhc2UuY21ha2UuaW4KK0BAIC00MiwxMSArNDIsMTEgQEAgaWYoTVNWQykKKyAgICAgIyBJbXBvcnQgdGFyZ2V0ICJhc3NpbXA6OmFzc2ltcCIgZm9yIGNvbmZpZ3VyYXRpb24gIlJlbGVhc2UiCisgICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgYXNzaW1wOjphc3NpbXAgQVBQRU5EIFBST1BFUlRZIElNUE9SVEVEX0NPTkZJR1VSQVRJT05TIFJFTEVBU0UpCisgICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhhc3NpbXA6OmFzc2ltcCBQUk9QRVJUSUVTCistICAgICAgSU1QT1JURURfSU1QTElCX1JFTEVBU0UgIiR7X0lNUE9SVF9QUkVGSVh9L2xpYi8ke2ltcG9ydExpYnJhcnlOYW1lfSIKKysgICAgICBJTVBPUlRFRF9JTVBMSUJfUkVMRUFTRSAiJHtfSU1QT1JUX1BSRUZJWH0vQEFTU0lNUF9MSUJfSU5TVEFMTF9ESVJALyR7aW1wb3J0TGlicmFyeU5hbWV9IgorICAgICAgIElNUE9SVEVEX0xPQ0FUSU9OX1JFTEVBU0UgIiR7X0lNUE9SVF9QUkVGSVh9L2Jpbi8ke3NoYXJlZExpYnJhcnlOYW1lfSIKKyAgICAgKQorICAgICBsaXN0KEFQUEVORCBfSU1QT1JUX0NIRUNLX1RBUkdFVFMgYXNzaW1wOjphc3NpbXAgKQorLSAgICBsaXN0KEFQUEVORCBfSU1QT1JUX0NIRUNLX0ZJTEVTX0ZPUl9hc3NpbXA6OmFzc2ltcCAiJHtfSU1QT1JUX1BSRUZJWH0vbGliLyR7aW1wb3J0TGlicmFyeU5hbWV9IikKKysgICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19GSUxFU19GT1JfYXNzaW1wOjphc3NpbXAgIiR7X0lNUE9SVF9QUkVGSVh9L0BBU1NJTVBfTElCX0lOU1RBTExfRElSQC8ke2ltcG9ydExpYnJhcnlOYW1lfSIpCisgICAgIGxpc3QoQVBQRU5EIF9JTVBPUlRfQ0hFQ0tfRklMRVNfRk9SX2Fzc2ltcDo6YXNzaW1wICIke19JTVBPUlRfUFJFRklYfS9iaW4vJHtzaGFyZWRMaWJyYXJ5TmFtZX0iICkKKyAgIGVsc2UoKQorICAgICBzZXQoc3RhdGljTGlicmFyeU5hbWUgImFzc2ltcCR7QVNTSU1QX0xJQlJBUllfU1VGRklYfUBDTUFLRV9TVEFUSUNfTElCUkFSWV9TVUZGSVhAIikKK0BAIC01NCwxMCArNTQsMTAgQEAgaWYoTVNWQykKKyAgICAgIyBJbXBvcnQgdGFyZ2V0ICJhc3NpbXA6OmFzc2ltcCIgZm9yIGNvbmZpZ3VyYXRpb24gIlJlbGVhc2UiCisgICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgYXNzaW1wOjphc3NpbXAgQVBQRU5EIFBST1BFUlRZIElNUE9SVEVEX0NPTkZJR1VSQVRJT05TIFJFTEVBU0UpCisgICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhhc3NpbXA6OmFzc2ltcCBQUk9QRVJUSUVTCistICAgICAgSU1QT1JURURfTE9DQVRJT05fUkVMRUFTRSAiJHtfSU1QT1JUX1BSRUZJWH0vbGliLyR7c3RhdGljTGlicmFyeU5hbWV9IgorKyAgICAgIElNUE9SVEVEX0xPQ0FUSU9OX1JFTEVBU0UgIiR7X0lNUE9SVF9QUkVGSVh9L0BBU1NJTVBfTElCX0lOU1RBTExfRElSQC8ke3N0YXRpY0xpYnJhcnlOYW1lfSIKKyAgICAgKQorICAgICBsaXN0KEFQUEVORCBfSU1QT1JUX0NIRUNLX1RBUkdFVFMgYXNzaW1wOjphc3NpbXAgKQorLSAgICBsaXN0KEFQUEVORCBfSU1QT1JUX0NIRUNLX0ZJTEVTX0ZPUl9hc3NpbXA6OmFzc2ltcCAiJHtfSU1QT1JUX1BSRUZJWH0vbGliLyR7c3RhdGljTGlicmFyeU5hbWV9IikKKysgICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19GSUxFU19GT1JfYXNzaW1wOjphc3NpbXAgIiR7X0lNUE9SVF9QUkVGSVh9L0BBU1NJTVBfTElCX0lOU1RBTExfRElSQC8ke3N0YXRpY0xpYnJhcnlOYW1lfSIpCisgICBlbmRpZigpCisgCisgZWxzZSgpCitAQCAtNzAsMTcgKzcwLDE3IEBAIGVsc2UoKQorICAgICBlbmRpZigpCisgICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhhc3NpbXA6OmFzc2ltcCBQUk9QRVJUSUVTCisgICAgICAgSU1QT1JURURfU09OQU1FX1JFTEVBU0UgIiR7c2hhcmVkTGlicmFyeU5hbWV9IgorLSAgICAgIElNUE9SVEVEX0xPQ0FUSU9OX1JFTEVBU0UgIiR7X0lNUE9SVF9QUkVGSVh9L2xpYi8ke3NoYXJlZExpYnJhcnlOYW1lfSIKKysgICAgICBJTVBPUlRFRF9MT0NBVElPTl9SRUxFQVNFICIke19JTVBPUlRfUFJFRklYfS9AQVNTSU1QX0xJQl9JTlNUQUxMX0RJUkAvJHtzaGFyZWRMaWJyYXJ5TmFtZX0iCisgICAgICkKKyAgICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19UQVJHRVRTIGFzc2ltcDo6YXNzaW1wICkKKy0gICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19GSUxFU19GT1JfYXNzaW1wOjphc3NpbXAgIiR7X0lNUE9SVF9QUkVGSVh9L2xpYi8ke3NoYXJlZExpYnJhcnlOYW1lfSIgKQorKyAgICBsaXN0KEFQUEVORCBfSU1QT1JUX0NIRUNLX0ZJTEVTX0ZPUl9hc3NpbXA6OmFzc2ltcCAiJHtfSU1QT1JUX1BSRUZJWH0vQEFTU0lNUF9MSUJfSU5TVEFMTF9ESVJALyR7c2hhcmVkTGlicmFyeU5hbWV9IiApCisgICBlbHNlKCkKKyAgICAgc2V0KHN0YXRpY0xpYnJhcnlOYW1lICJsaWJhc3NpbXAke0FTU0lNUF9MSUJSQVJZX1NVRkZJWH1AQ01BS0VfU1RBVElDX0xJQlJBUllfU1VGRklYQCIpCisgICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhhc3NpbXA6OmFzc2ltcCBQUk9QRVJUSUVTCistICAgICAgSU1QT1JURURfTE9DQVRJT05fUkVMRUFTRSAiJHtfSU1QT1JUX1BSRUZJWH0vbGliLyR7c3RhdGljTGlicmFyeU5hbWV9IgorKyAgICAgIElNUE9SVEVEX0xPQ0FUSU9OX1JFTEVBU0UgIiR7X0lNUE9SVF9QUkVGSVh9L0BBU1NJTVBfTElCX0lOU1RBTExfRElSQC8ke3N0YXRpY0xpYnJhcnlOYW1lfSIKKyAgICAgKQorICAgICBsaXN0KEFQUEVORCBfSU1QT1JUX0NIRUNLX1RBUkdFVFMgYXNzaW1wOjphc3NpbXAgKQorLSAgICBsaXN0KEFQUEVORCBfSU1QT1JUX0NIRUNLX0ZJTEVTX0ZPUl9hc3NpbXA6OmFzc2ltcCAiJHtfSU1QT1JUX1BSRUZJWH0vbGliLyR7c3RhdGljTGlicmFyeU5hbWV9IiApCisrICAgIGxpc3QoQVBQRU5EIF9JTVBPUlRfQ0hFQ0tfRklMRVNfRk9SX2Fzc2ltcDo6YXNzaW1wICIke19JTVBPUlRfUFJFRklYfS9AQVNTSU1QX0xJQl9JTlNUQUxMX0RJUkAvJHtzdGF0aWNMaWJyYXJ5TmFtZX0iICkKKyAgIGVuZGlmKCkKKyBlbmRpZigpCisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wLzAwMDEtY2xvc2VzLWh0dHBzLWdpdGh1Yi5jb20tYXNzaW1wLWFzc2ltcC1pc3N1ZXMtMjczMy11cC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi9hc3NpbXAvMDAwMS1jbG9zZXMtaHR0cHMtZ2l0aHViLmNvbS1hc3NpbXAtYXNzaW1wLWlzc3Vlcy0yNzMzLXVwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3YTE2NTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wLzAwMDEtY2xvc2VzLWh0dHBzLWdpdGh1Yi5jb20tYXNzaW1wLWFzc2ltcC1pc3N1ZXMtMjczMy11cC5wYXRjaApAQCAtMCwwICsxLDE2NjQgQEAKK0Zyb20gN2ZjMjIwYjIzNTBkNzg5NDJmYjM5MzVjYWQwYjE1NjQ0MThlYmU4ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtpbSBLdWxsaW5nIDxraW0ua3VsbGluZ0Bnb29nbGVtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTkgTm92IDIwMTkgMjA6MzA6NDAgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gY2xvc2VzIGh0dHBzOi8vZ2l0aHViLmNvbS9hc3NpbXAvYXNzaW1wL2lzc3Vlcy8yNzMzOiB1cGRhdGUKKyBvZiB6bGlwIHRvIGZpeCBnY2MgYnVpbGQgZm9yIHY5LjIuMCAzMiBiaXQKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2Fzc2ltcC9hc3NpbXAvY29tbWl0L2Y3ODQ0NmIxNGFmZjQ2ZGIyZWYyN2QwNjJhMjc1YjZhMDFmZDY4YjFdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGNvbnRyaWIvemlwLy5naXRpZ25vcmUgICAgICAgICAgfCAgIDIgKworIGNvbnRyaWIvemlwL0NNYWtlTGlzdHMudHh0ICAgICAgfCAgODMgKysrKystCisgY29udHJpYi96aXAvUkVBRE1FLm1kICAgICAgICAgICB8ICAxMiArLQorIGNvbnRyaWIvemlwL2FwcHZleW9yLnltbCAgICAgICAgfCAgIDIgKy0KKyBjb250cmliL3ppcC9zcmMvbWluaXouaCAgICAgICAgIHwgNDU3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCisgY29udHJpYi96aXAvc3JjL3ppcC5jICAgICAgICAgICB8ICA2MiArKystLQorIGNvbnRyaWIvemlwL3NyYy96aXAuaCAgICAgICAgICAgfCA0NTcgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KKyBjb250cmliL3ppcC90ZXN0L0NNYWtlTGlzdHMudHh0IHwgIDI3ICstCisgY29udHJpYi96aXAvdGVzdC90ZXN0LmMgICAgICAgICB8ICAzOCArKy0KKyBjb250cmliL3ppcC90ZXN0L3Rlc3RfbWluaXouYyAgIHwgIDI1ICstCisgMTAgZmlsZXMgY2hhbmdlZCwgODIxIGluc2VydGlvbnMoKyksIDM0NCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbnRyaWIvemlwLy5naXRpZ25vcmUgYi9jb250cmliL3ppcC8uZ2l0aWdub3JlCitpbmRleCBhNzkwNGExZS4uNDliMmNiMmYgMTAwNjQ0CistLS0gYS9jb250cmliL3ppcC8uZ2l0aWdub3JlCisrKysgYi9jb250cmliL3ppcC8uZ2l0aWdub3JlCitAQCAtMSw2ICsxLDcgQEAKKyAvYnVpbGQvCisgL3Rlc3QvYnVpbGQvCisgL3hjb2RlcHJvai8KKysudnNjb2RlLworIAorICMgT2JqZWN0IGZpbGVzCisgKi5vCitAQCAtNTQsMyArNTUsNCBAQCB6aXAuZGlyLworIHRlc3QvdGVzdC5leGUudmN4cHJvai5maWx0ZXJzCisgdGVzdC90ZXN0LmV4ZS52Y3hwcm9qCisgdGVzdC90ZXN0LmV4ZS5kaXIvCisrCitkaWZmIC0tZ2l0IGEvY29udHJpYi96aXAvQ01ha2VMaXN0cy50eHQgYi9jb250cmliL3ppcC9DTWFrZUxpc3RzLnR4dAoraW5kZXggYjQ2ZGJiMWQuLjc3OTE2ZDJlIDEwMDY0NAorLS0tIGEvY29udHJpYi96aXAvQ01ha2VMaXN0cy50eHQKKysrKyBiL2NvbnRyaWIvemlwL0NNYWtlTGlzdHMudHh0CitAQCAtMSwxMCArMSwxNCBAQAorLWNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAyLjgpCistcHJvamVjdCh6aXApCistZW5hYmxlX2xhbmd1YWdlKEMpCisrY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDMuMCkKKysKKytwcm9qZWN0KHppcAorKyAgTEFOR1VBR0VTIEMKKysgIFZFUlNJT04gIjAuMS4xNSIpCisgc2V0KENNQUtFX01PRFVMRV9QQVRIICIke1BST0pFQ1RfU09VUkNFX0RJUn0vY21ha2UiICR7Q01BS0VfTU9EVUxFX1BBVEh9KQorIAorK29wdGlvbihDTUFLRV9ESVNBQkxFX1RFU1RJTkcgIkRpc2FibGUgdGVzdCBjcmVhdGlvbiIgT0ZGKQorKworIGlmIChNU1ZDKQorLSAgIyBVc2Ugc2VjdXJlIGZ1bmN0aW9ucyBieSBkZWZhdWFsdCBhbmQgc3VwcHJlc3Mgd2FybmluZ3MgYWJvdXQgImRlcHJlY2F0ZWQiIGZ1bmN0aW9ucworKyAgIyBVc2Ugc2VjdXJlIGZ1bmN0aW9ucyBieSBkZWZhdWx0IGFuZCBzdXBwcmVzcyB3YXJuaW5ncyBhYm91dCAiZGVwcmVjYXRlZCIgZnVuY3Rpb25zCisgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvRCBfQ1JUX1NFQ1VSRV9DUFBfT1ZFUkxPQURfU1RBTkRBUkRfTkFNRVM9MSIpCisgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvRCBfQ1JUX1NFQ1VSRV9DUFBfT1ZFUkxPQURfU1RBTkRBUkRfTkFNRVNfQ09VTlQ9MSIpCisgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvRCBfQ1JUX05PTlNURENfTk9fV0FSTklOR1M9MSAvRCBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUz0xIikKK0BAIC0xMiwyOCArMTYsODAgQEAgZWxzZWlmICgiJHtDTUFLRV9DX0NPTVBJTEVSX0lEfSIgU1RSRVFVQUwgIkdOVSIgT1IKKyAgICAgICAgICIke0NNQUtFX0NfQ09NUElMRVJfSUR9IiBTVFJFUVVBTCAiQ2xhbmciIE9SCisgICAgICAgICAiJHtDTUFLRV9DX0NPTVBJTEVSX0lEfSIgU1RSRVFVQUwgIkFwcGxlQ2xhbmciKQorICAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLXN0ZD1jOTkgLVdhbGwgLVdleHRyYSAtV2Vycm9yIC1wZWRhbnRpYyIpCisrICBpZihFTkFCTEVfQ09WRVJBR0UpCisrICAgIHNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1nIC1PMCAtZnByb2ZpbGUtYXJjcyAtZnRlc3QtY292ZXJhZ2UiKQorKyAgICBzZXQoQ01BS0VfRVhFX0xJTktFUl9GTEFHUyAiJHtDTUFLRV9FWEVfTElOS0VSX0ZMQUdTfSAtLWNvdmVyYWdlIikKKysgIGVuZGlmKCkKKyBlbmRpZiAoTVNWQykKKyAKKyAjIHppcAorIHNldChTUkMgc3JjL21pbml6Lmggc3JjL3ppcC5oIHNyYy96aXAuYykKKyBhZGRfbGlicmFyeSgke1BST0pFQ1RfTkFNRX0gJHtTUkN9KQorLXRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKCR7UFJPSkVDVF9OQU1FfSBJTlRFUkZBQ0Ugc3JjKQorK3RhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKCR7UFJPSkVDVF9OQU1FfSBQVUJMSUMKKysgICQ8QlVJTERfSU5URVJGQUNFOiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9zcmM+CisrICAkPElOU1RBTExfSU5URVJGQUNFOmluY2x1ZGU+CisrKQorIAorICMgdGVzdAorIGlmIChOT1QgQ01BS0VfRElTQUJMRV9URVNUSU5HKQorICAgZW5hYmxlX3Rlc3RpbmcoKQorICAgYWRkX3N1YmRpcmVjdG9yeSh0ZXN0KQorICAgZmluZF9wYWNrYWdlKFNhbml0aXplcnMpCistICBhZGRfc2FuaXRpemVycygke1BST0pFQ1RfTkFNRX0gdGVzdC5leGUpCistICBhZGRfc2FuaXRpemVycygke1BST0pFQ1RfTkFNRX0gdGVzdF9taW5pei5leGUpCisrICBhZGRfc2FuaXRpemVycygke1BST0pFQ1RfTkFNRX0gJHt0ZXN0X291dH0gJHt0ZXN0X21pbml6X291dH0pCisgZW5kaWYoKQorIAorKyMjIyMKKysjIEluc3RhbGxhdGlvbiAoaHR0cHM6Ly9naXRodWIuY29tL2ZvcmV4YW1wbGUvcGFja2FnZS1leGFtcGxlKSB7CisrCisrc2V0KENPTkZJR19JTlNUQUxMX0RJUiAibGliL2NtYWtlLyR7UFJPSkVDVF9OQU1FfSIpCisrc2V0KElOQ0xVREVfSU5TVEFMTF9ESVIgImluY2x1ZGUiKQorKworK3NldChHRU5FUkFURURfRElSICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vZ2VuZXJhdGVkIikKKysKKysjIENvbmZpZ3VyYXRpb24KKytzZXQoVkVSU0lPTl9DT05GSUcgIiR7R0VORVJBVEVEX0RJUn0vJHtQUk9KRUNUX05BTUV9Q29uZmlnVmVyc2lvbi5jbWFrZSIpCisrc2V0KFBST0pFQ1RfQ09ORklHICIke0dFTkVSQVRFRF9ESVJ9LyR7UFJPSkVDVF9OQU1FfUNvbmZpZy5jbWFrZSIpCisrc2V0KFRBUkdFVFNfRVhQT1JUX05BTUUgIiR7UFJPSkVDVF9OQU1FfVRhcmdldHMiKQorK3NldChOQU1FU1BBQ0UgIiR7UFJPSkVDVF9OQU1FfTo6IikKKysKKysjIEluY2x1ZGUgbW9kdWxlIHdpdGggZnVjdGlvbiAnd3JpdGVfYmFzaWNfcGFja2FnZV92ZXJzaW9uX2ZpbGUnCisraW5jbHVkZShDTWFrZVBhY2thZ2VDb25maWdIZWxwZXJzKQorKworKyMgTm90ZTogUFJPSkVDVF9WRVJTSU9OIGlzIHVzZWQgYXMgYSBWRVJTSU9OCisrd3JpdGVfYmFzaWNfcGFja2FnZV92ZXJzaW9uX2ZpbGUoCisrICAgICIke1ZFUlNJT05fQ09ORklHfSIgQ09NUEFUSUJJTElUWSBTYW1lTWFqb3JWZXJzaW9uCisrKQorKworKyMgVXNlIHZhcmlhYmxlczoKKysjICAgKiBUQVJHRVRTX0VYUE9SVF9OQU1FCisrIyAgICogUFJPSkVDVF9OQU1FCisrY29uZmlndXJlX3BhY2thZ2VfY29uZmlnX2ZpbGUoCisrICAgICJjbWFrZS9Db25maWcuY21ha2UuaW4iCisrICAgICIke1BST0pFQ1RfQ09ORklHfSIKKysgICAgSU5TVEFMTF9ERVNUSU5BVElPTiAiJHtDT05GSUdfSU5TVEFMTF9ESVJ9IgorKykKKysKKytpbnN0YWxsKAorKyAgICBGSUxFUyAiJHtQUk9KRUNUX0NPTkZJR30iICIke1ZFUlNJT05fQ09ORklHfSIKKysgICAgREVTVElOQVRJT04gIiR7Q09ORklHX0lOU1RBTExfRElSfSIKKyspCisrCisraW5zdGFsbCgKKysgICAgRVhQT1JUICIke1RBUkdFVFNfRVhQT1JUX05BTUV9IgorKyAgICBOQU1FU1BBQ0UgIiR7TkFNRVNQQUNFfSIKKysgICAgREVTVElOQVRJT04gIiR7Q09ORklHX0lOU1RBTExfRElSfSIKKyspCisrCisrIyB9CisrCisgaW5zdGFsbChUQVJHRVRTICR7UFJPSkVDVF9OQU1FfQorKyAgICAgICAgRVhQT1JUICR7VEFSR0VUU19FWFBPUlRfTkFNRX0KKyAgICAgICAgIFJVTlRJTUUgREVTVElOQVRJT04gYmluCisgICAgICAgICBBUkNISVZFIERFU1RJTkFUSU9OIGxpYgorICAgICAgICAgTElCUkFSWSBERVNUSU5BVElPTiBsaWIKKy0gICAgICAgIENPTVBPTkVOVCBsaWJyYXJ5KQorLWluc3RhbGwoRklMRVMgJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L3NyYy96aXAuaCBERVNUSU5BVElPTiBpbmNsdWRlKQorKyAgICAgICAgSU5DTFVERVMgREVTVElOQVRJT04gJHtJTkNMVURFX0lOU1RBTExfRElSfQorKykKKytpbnN0YWxsKEZJTEVTICR7UFJPSkVDVF9TT1VSQ0VfRElSfS9zcmMvemlwLmggREVTVElOQVRJT04gJHtJTkNMVURFX0lOU1RBTExfRElSfS96aXApCisgCisgIyB1bmluc3RhbGwgdGFyZ2V0IChodHRwczovL2dpdGxhYi5raXR3YXJlLmNvbS9jbWFrZS9jb21tdW5pdHkvd2lraXMvRkFRI2Nhbi1pLWRvLW1ha2UtdW5pbnN0YWxsLXdpdGgtY21ha2UpCisgaWYoTk9UIFRBUkdFVCB1bmluc3RhbGwpCitAQCAtNDUsMyArMTAxLDEyIEBAIGlmKE5PVCBUQVJHRVQgdW5pbnN0YWxsKQorICAgICBhZGRfY3VzdG9tX3RhcmdldCh1bmluc3RhbGwKKyAgICAgICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtUCAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vY21ha2UvY21ha2VfdW5pbnN0YWxsLmNtYWtlKQorIGVuZGlmKCkKKysKKytmaW5kX3BhY2thZ2UoRG94eWdlbikKKytpZihET1hZR0VOX0ZPVU5EKQorKyAgICBjb25maWd1cmVfZmlsZSgke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vRG94eWZpbGUuaW4gJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L0RveHlmaWxlIEBPTkxZKQorKyAgICBhZGRfY3VzdG9tX3RhcmdldChkb2MKKysgICAgICAgICR7RE9YWUdFTl9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vRG94eWZpbGUKKysgICAgICAgIFdPUktJTkdfRElSRUNUT1JZICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfQorKyAgICAgICAgQ09NTUVOVCAiR2VuZXJhdGluZyBBUEkgZG9jdW1lbnRhdGlvbiB3aXRoIERveHlnZW4iIFZFUkJBVElNKQorK2VuZGlmKCkKK2RpZmYgLS1naXQgYS9jb250cmliL3ppcC9SRUFETUUubWQgYi9jb250cmliL3ppcC9SRUFETUUubWQKK2luZGV4IGQ1ZmI4Y2QyLi4xNGViOWEzNCAxMDA2NDQKKy0tLSBhL2NvbnRyaWIvemlwL1JFQURNRS5tZAorKysrIGIvY29udHJpYi96aXAvUkVBRE1FLm1kCitAQCAtNzEsNyArNzEsNyBAQCBpbnQgYXJnID0gMjsKKyB6aXBfZXh0cmFjdCgiZm9vLnppcCIsICIvdG1wIiwgb25fZXh0cmFjdF9lbnRyeSwgJmFyZyk7CisgYGBgCisgCistKiAgIEV4dHJhY3QgYSB6aXAgZW50cnkgaW50byBtZW1vcnkuCisrKiBFeHRyYWN0IGEgemlwIGVudHJ5IGludG8gbWVtb3J5LgorIGBgYGMKKyB2b2lkICpidWYgPSBOVUxMOworIHNpemVfdCBidWZzaXplOworQEAgLTg5LDcgKzg5LDcgQEAgemlwX2Nsb3NlKHppcCk7CisgZnJlZShidWYpOworIGBgYAorIAorLSogICBFeHRyYWN0IGEgemlwIGVudHJ5IGludG8gbWVtb3J5IChubyBpbnRlcm5hbCBhbGxvY2F0aW9uKS4KKysqIEV4dHJhY3QgYSB6aXAgZW50cnkgaW50byBtZW1vcnkgKG5vIGludGVybmFsIGFsbG9jYXRpb24pLgorIGBgYGMKKyB1bnNpZ25lZCBjaGFyICpidWY7Cisgc2l6ZV90IGJ1ZnNpemU7CitAQCAtMTEwLDcgKzExMCw3IEBAIHppcF9jbG9zZSh6aXApOworIGZyZWUoYnVmKTsKKyBgYGAKKyAKKy0qICAgRXh0cmFjdCBhIHppcCBlbnRyeSBpbnRvIG1lbW9yeSB1c2luZyBjYWxsYmFjay4KKysqIEV4dHJhY3QgYSB6aXAgZW50cnkgaW50byBtZW1vcnkgdXNpbmcgY2FsbGJhY2suCisgYGBgYworIHN0cnVjdCBidWZmZXJfdCB7CisgICAgIGNoYXIgKmRhdGE7CitAQCAtMTQ0LDcgKzE0NCw3IEBAIGZyZWUoYnVmLmRhdGEpOworIGBgYAorIAorIAorLSogICBFeHRyYWN0IGEgemlwIGVudHJ5IGludG8gYSBmaWxlLgorKyogRXh0cmFjdCBhIHppcCBlbnRyeSBpbnRvIGEgZmlsZS4KKyBgYGBjCisgc3RydWN0IHppcF90ICp6aXAgPSB6aXBfb3BlbigiZm9vLnppcCIsIDAsICdyJyk7CisgeworQEAgLTE1Nyw3ICsxNTcsNyBAQCBzdHJ1Y3QgemlwX3QgKnppcCA9IHppcF9vcGVuKCJmb28uemlwIiwgMCwgJ3InKTsKKyB6aXBfY2xvc2UoemlwKTsKKyBgYGAKKyAKKy0qICAgTGlzdCBvZiBhbGwgemlwIGVudHJpZXMKKysqIExpc3Qgb2YgYWxsIHppcCBlbnRyaWVzCisgYGBgYworIHN0cnVjdCB6aXBfdCAqemlwID0gemlwX29wZW4oImZvby56aXAiLCAwLCAncicpOworIGludCBpLCBuID0gemlwX3RvdGFsX2VudHJpZXMoemlwKTsKK0BAIC0xNzQsNyArMTc0LDcgQEAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgeworIHppcF9jbG9zZSh6aXApOworIGBgYAorIAorLSMjIEJpbmRpbmdzCisrIyBCaW5kaW5ncworIENvbXBpbGUgemlwIGxpYnJhcnkgYXMgYSBkeW5hbWljIGxpYnJhcnkuCisgYGBgc2hlbGwKKyAkIG1rZGlyIGJ1aWxkCitkaWZmIC0tZ2l0IGEvY29udHJpYi96aXAvYXBwdmV5b3IueW1sIGIvY29udHJpYi96aXAvYXBwdmV5b3IueW1sCitpbmRleCAwYmU2MzczYy4uZWExN2Y1ZGUgMTAwNjQ0CistLS0gYS9jb250cmliL3ppcC9hcHB2ZXlvci55bWwKKysrKyBiL2NvbnRyaWIvemlwL2FwcHZleW9yLnltbAorQEAgLTEsNCArMSw0IEBACistdmVyc2lvbjogemlwLTAuMS45LntidWlsZH0KKyt2ZXJzaW9uOiB6aXAtMC4xLjE1LntidWlsZH0KKyBidWlsZF9zY3JpcHQ6CisgLSBjbWQ6ID4tCisgICAgIGNkIGM6XHByb2plY3RzXHppcAorZGlmZiAtLWdpdCBhL2NvbnRyaWIvemlwL3NyYy9taW5pei5oIGIvY29udHJpYi96aXAvc3JjL21pbml6LmgKK2luZGV4IDJjMjdhOTRkLi5jNGZjZmI4MyAxMDA2NDQKKy0tLSBhL2NvbnRyaWIvemlwL3NyYy9taW5pei5oCisrKysgYi9jb250cmliL3ppcC9zcmMvbWluaXouaAorQEAgLTIyMSw2ICsyMjEsNyBAQAorICNpZm5kZWYgTUlOSVpfSEVBREVSX0lOQ0xVREVECisgI2RlZmluZSBNSU5JWl9IRUFERVJfSU5DTFVERUQKKyAKKysjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorIAorIC8vIERlZmluZXMgdG8gY29tcGxldGVseSBkaXNhYmxlIHNwZWNpZmljIHBvcnRpb25zIG9mIG1pbml6LmM6CitAQCAtMjg0LDcgKzI4NSw4IEBACisgLyogU2V0IE1JTklaX1VTRV9VTkFMSUdORURfTE9BRFNfQU5EX1NUT1JFUyBvbmx5IGlmIG5vdCBzZXQgKi8KKyAjaWYgIWRlZmluZWQoTUlOSVpfVVNFX1VOQUxJR05FRF9MT0FEU19BTkRfU1RPUkVTKQorICNpZiBNSU5JWl9YODZfT1JfWDY0X0NQVQorLS8qIFNldCBNSU5JWl9VU0VfVU5BTElHTkVEX0xPQURTX0FORF9TVE9SRVMgdG8gMSBvbiBDUFUncyB0aGF0IHBlcm1pdCBlZmZpY2llbnQgaW50ZWdlciBsb2FkcyBhbmQgc3RvcmVzIGZyb20gdW5hbGlnbmVkIGFkZHJlc3Nlcy4gKi8KKysvKiBTZXQgTUlOSVpfVVNFX1VOQUxJR05FRF9MT0FEU19BTkRfU1RPUkVTIHRvIDEgb24gQ1BVJ3MgdGhhdCBwZXJtaXQgZWZmaWNpZW50CisrICogaW50ZWdlciBsb2FkcyBhbmQgc3RvcmVzIGZyb20gdW5hbGlnbmVkIGFkZHJlc3Nlcy4gKi8KKyAjZGVmaW5lIE1JTklaX1VTRV9VTkFMSUdORURfTE9BRFNfQU5EX1NUT1JFUyAxCisgI2RlZmluZSBNSU5JWl9VTkFMSUdORURfVVNFX01FTUNQWQorICNlbHNlCitAQCAtMzU0LDYgKzM1Niw0NCBAQCBlbnVtIHsKKyAgIE1aX0ZJWEVEID0gNAorIH07CisgCisrLyogbWluaXogZXJyb3IgY29kZXMuIEJlIHN1cmUgdG8gdXBkYXRlIG16X3ppcF9nZXRfZXJyb3Jfc3RyaW5nKCkgaWYgeW91IGFkZCBvcgorKyAqIG1vZGlmeSB0aGlzIGVudW0uICovCisrdHlwZWRlZiBlbnVtIHsKKysgIE1aX1pJUF9OT19FUlJPUiA9IDAsCisrICBNWl9aSVBfVU5ERUZJTkVEX0VSUk9SLAorKyAgTVpfWklQX1RPT19NQU5ZX0ZJTEVTLAorKyAgTVpfWklQX0ZJTEVfVE9PX0xBUkdFLAorKyAgTVpfWklQX1VOU1VQUE9SVEVEX01FVEhPRCwKKysgIE1aX1pJUF9VTlNVUFBPUlRFRF9FTkNSWVBUSU9OLAorKyAgTVpfWklQX1VOU1VQUE9SVEVEX0ZFQVRVUkUsCisrICBNWl9aSVBfRkFJTEVEX0ZJTkRJTkdfQ0VOVFJBTF9ESVIsCisrICBNWl9aSVBfTk9UX0FOX0FSQ0hJVkUsCisrICBNWl9aSVBfSU5WQUxJRF9IRUFERVJfT1JfQ09SUlVQVEVELAorKyAgTVpfWklQX1VOU1VQUE9SVEVEX01VTFRJRElTSywKKysgIE1aX1pJUF9ERUNPTVBSRVNTSU9OX0ZBSUxFRCwKKysgIE1aX1pJUF9DT01QUkVTU0lPTl9GQUlMRUQsCisrICBNWl9aSVBfVU5FWFBFQ1RFRF9ERUNPTVBSRVNTRURfU0laRSwKKysgIE1aX1pJUF9DUkNfQ0hFQ0tfRkFJTEVELAorKyAgTVpfWklQX1VOU1VQUE9SVEVEX0NESVJfU0laRSwKKysgIE1aX1pJUF9BTExPQ19GQUlMRUQsCisrICBNWl9aSVBfRklMRV9PUEVOX0ZBSUxFRCwKKysgIE1aX1pJUF9GSUxFX0NSRUFURV9GQUlMRUQsCisrICBNWl9aSVBfRklMRV9XUklURV9GQUlMRUQsCisrICBNWl9aSVBfRklMRV9SRUFEX0ZBSUxFRCwKKysgIE1aX1pJUF9GSUxFX0NMT1NFX0ZBSUxFRCwKKysgIE1aX1pJUF9GSUxFX1NFRUtfRkFJTEVELAorKyAgTVpfWklQX0ZJTEVfU1RBVF9GQUlMRUQsCisrICBNWl9aSVBfSU5WQUxJRF9QQVJBTUVURVIsCisrICBNWl9aSVBfSU5WQUxJRF9GSUxFTkFNRSwKKysgIE1aX1pJUF9CVUZfVE9PX1NNQUxMLAorKyAgTVpfWklQX0lOVEVSTkFMX0VSUk9SLAorKyAgTVpfWklQX0ZJTEVfTk9UX0ZPVU5ELAorKyAgTVpfWklQX0FSQ0hJVkVfVE9PX0xBUkdFLAorKyAgTVpfWklQX1ZBTElEQVRJT05fRkFJTEVELAorKyAgTVpfWklQX1dSSVRFX0NBTExCQUNLX0ZBSUxFRCwKKysgIE1aX1pJUF9UT1RBTF9FUlJPUlMKKyt9IG16X3ppcF9lcnJvcjsKKysKKyAvLyBNZXRob2QKKyAjZGVmaW5lIE1aX0RFRkxBVEVEIDgKKyAKK0BAIC02OTYsNiArNzM2LDcgQEAgdHlwZWRlZiBzaXplX3QgKCptel9maWxlX3JlYWRfZnVuYykodm9pZCAqcE9wYXF1ZSwgbXpfdWludDY0IGZpbGVfb2ZzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnBCdWYsIHNpemVfdCBuKTsKKyB0eXBlZGVmIHNpemVfdCAoKm16X2ZpbGVfd3JpdGVfZnVuYykodm9pZCAqcE9wYXF1ZSwgbXpfdWludDY0IGZpbGVfb2ZzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwQnVmLCBzaXplX3Qgbik7CisrdHlwZWRlZiBtel9ib29sICgqbXpfZmlsZV9uZWVkc19rZWVwYWxpdmUpKHZvaWQgKnBPcGFxdWUpOworIAorIHN0cnVjdCBtel96aXBfaW50ZXJuYWxfc3RhdGVfdGFnOworIHR5cGVkZWYgc3RydWN0IG16X3ppcF9pbnRlcm5hbF9zdGF0ZV90YWcgbXpfemlwX2ludGVybmFsX3N0YXRlOworQEAgLTcwNywxMyArNzQ4LDI3IEBAIHR5cGVkZWYgZW51bSB7CisgICBNWl9aSVBfTU9ERV9XUklUSU5HX0hBU19CRUVOX0ZJTkFMSVpFRCA9IDMKKyB9IG16X3ppcF9tb2RlOworIAorLXR5cGVkZWYgc3RydWN0IG16X3ppcF9hcmNoaXZlX3RhZyB7CisrdHlwZWRlZiBlbnVtIHsKKysgIE1aX1pJUF9UWVBFX0lOVkFMSUQgPSAwLAorKyAgTVpfWklQX1RZUEVfVVNFUiwKKysgIE1aX1pJUF9UWVBFX01FTU9SWSwKKysgIE1aX1pJUF9UWVBFX0hFQVAsCisrICBNWl9aSVBfVFlQRV9GSUxFLAorKyAgTVpfWklQX1RZUEVfQ0ZJTEUsCisrICBNWl9aSVBfVE9UQUxfVFlQRVMKKyt9IG16X3ppcF90eXBlOworKworK3R5cGVkZWYgc3RydWN0IHsKKyAgIG16X3VpbnQ2NCBtX2FyY2hpdmVfc2l6ZTsKKyAgIG16X3VpbnQ2NCBtX2NlbnRyYWxfZGlyZWN0b3J5X2ZpbGVfb2ZzOworLSAgbXpfdWludCBtX3RvdGFsX2ZpbGVzOworKworKyAgLyogV2Ugb25seSBzdXBwb3J0IHVwIHRvIFVJTlQzMl9NQVggZmlsZXMgaW4gemlwNjQgbW9kZS4gKi8KKysgIG16X3VpbnQzMiBtX3RvdGFsX2ZpbGVzOworICAgbXpfemlwX21vZGUgbV96aXBfbW9kZTsKKysgIG16X3ppcF90eXBlIG1femlwX3R5cGU7CisrICBtel96aXBfZXJyb3IgbV9sYXN0X2Vycm9yOworIAorLSAgbXpfdWludCBtX2ZpbGVfb2Zmc2V0X2FsaWdubWVudDsKKysgIG16X3VpbnQ2NCBtX2ZpbGVfb2Zmc2V0X2FsaWdubWVudDsKKyAKKyAgIG16X2FsbG9jX2Z1bmMgbV9wQWxsb2M7CisgICBtel9mcmVlX2Z1bmMgbV9wRnJlZTsKK0BAIC03MjIsNiArNzc3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgbXpfemlwX2FyY2hpdmVfdGFnIHsKKyAKKyAgIG16X2ZpbGVfcmVhZF9mdW5jIG1fcFJlYWQ7CisgICBtel9maWxlX3dyaXRlX2Z1bmMgbV9wV3JpdGU7CisrICBtel9maWxlX25lZWRzX2tlZXBhbGl2ZSBtX3BOZWVkc19rZWVwYWxpdmU7CisgICB2b2lkICptX3BJT19vcGFxdWU7CisgCisgICBtel96aXBfaW50ZXJuYWxfc3RhdGUgKm1fcFN0YXRlOworQEAgLTEyNjMsNiArMTMxOSw5IEBAIG16X3VpbnQgdGRlZmxfY3JlYXRlX2NvbXBfZmxhZ3NfZnJvbV96aXBfcGFyYW1zKGludCBsZXZlbCwgaW50IHdpbmRvd19iaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdHJhdGVneSk7CisgI2VuZGlmIC8vICNpZm5kZWYgTUlOSVpfTk9fWkxJQl9BUElTCisgCisrI2RlZmluZSBNWl9VSU5UMTZfTUFYICgweEZGRkZVKQorKyNkZWZpbmUgTVpfVUlOVDMyX01BWCAoMHhGRkZGRkZGRlUpCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgfQorICNlbmRpZgorQEAgLTEzMTEsNiArMTM3MCwxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgbXpfdmFsaWRhdGVfdWludDY0W3NpemVvZihtel91aW50NjQpID09IDggPyAxIDogLTFdOworICAgICgobXpfdWludDMyKSgoKGNvbnN0IG16X3VpbnQ4ICopKHApKVszXSkgPDwgMjRVKSkKKyAjZW5kaWYKKyAKKysjZGVmaW5lIE1aX1JFQURfTEU2NChwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgKCgobXpfdWludDY0KU1aX1JFQURfTEUzMihwKSkgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgKCgobXpfdWludDY0KU1aX1JFQURfTEUzMigoY29uc3QgbXpfdWludDggKikocCkgKyBzaXplb2YobXpfdWludDMyKSkpICAgICAgIFwKKysgICAgPDwgMzJVKSkKKysKKyAjaWZkZWYgX01TQ19WRVIKKyAjZGVmaW5lIE1aX0ZPUkNFSU5MSU5FIF9fZm9yY2VpbmxpbmUKKyAjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQorQEAgLTQxNjAsNiArNDIyNCwxNyBAQCBlbnVtIHsKKyAgIE1aX1pJUF9MT0NBTF9ESVJfSEVBREVSX1NJWkUgPSAzMCwKKyAgIE1aX1pJUF9DRU5UUkFMX0RJUl9IRUFERVJfU0laRSA9IDQ2LAorICAgTVpfWklQX0VORF9PRl9DRU5UUkFMX0RJUl9IRUFERVJfU0laRSA9IDIyLAorKworKyAgLyogWklQNjQgYXJjaGl2ZSBpZGVudGlmaWVyIGFuZCByZWNvcmQgc2l6ZXMgKi8KKysgIE1aX1pJUDY0X0VORF9PRl9DRU5UUkFMX0RJUl9IRUFERVJfU0lHID0gMHgwNjA2NGI1MCwKKysgIE1aX1pJUDY0X0VORF9PRl9DRU5UUkFMX0RJUl9MT0NBVE9SX1NJRyA9IDB4MDcwNjRiNTAsCisrICBNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUgPSA1NiwKKysgIE1aX1pJUDY0X0VORF9PRl9DRU5UUkFMX0RJUl9MT0NBVE9SX1NJWkUgPSAyMCwKKysgIE1aX1pJUDY0X0VYVEVOREVEX0lORk9STUFUSU9OX0ZJRUxEX0hFQURFUl9JRCA9IDB4MDAwMSwKKysgIE1aX1pJUF9EQVRBX0RFU0NSSVBUT1JfSUQgPSAweDA4MDc0YjUwLAorKyAgTVpfWklQX0RBVEFfREVTQ1JJUFRFUl9TSVpFNjQgPSAyNCwKKysgIE1aX1pJUF9EQVRBX0RFU0NSSVBURVJfU0laRTMyID0gMTYsCisrCisgICAvLyBDZW50cmFsIGRpcmVjdG9yeSBoZWFkZXIgcmVjb3JkIG9mZnNldHMKKyAgIE1aX1pJUF9DREhfU0lHX09GUyA9IDAsCisgICBNWl9aSVBfQ0RIX1ZFUlNJT05fTUFERV9CWV9PRlMgPSA0LAorQEAgLTQxOTksNiArNDI3NCwzMSBAQCBlbnVtIHsKKyAgIE1aX1pJUF9FQ0RIX0NESVJfU0laRV9PRlMgPSAxMiwKKyAgIE1aX1pJUF9FQ0RIX0NESVJfT0ZTX09GUyA9IDE2LAorICAgTVpfWklQX0VDREhfQ09NTUVOVF9TSVpFX09GUyA9IDIwLAorKworKyAgLyogWklQNjQgRW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5IGxvY2F0b3Igb2Zmc2V0cyAqLworKyAgTVpfWklQNjRfRUNETF9TSUdfT0ZTID0gMCwgICAgICAgICAgICAgICAgICAgIC8qIDQgYnl0ZXMgKi8KKysgIE1aX1pJUDY0X0VDRExfTlVNX0RJU0tfQ0RJUl9PRlMgPSA0LCAgICAgICAgICAvKiA0IGJ5dGVzICovCisrICBNWl9aSVA2NF9FQ0RMX1JFTF9PRlNfVE9fWklQNjRfRUNEUl9PRlMgPSA4LCAgLyogOCBieXRlcyAqLworKyAgTVpfWklQNjRfRUNETF9UT1RBTF9OVU1CRVJfT0ZfRElTS1NfT0ZTID0gMTYsIC8qIDQgYnl0ZXMgKi8KKysKKysgIC8qIFpJUDY0IEVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSBoZWFkZXIgb2Zmc2V0cyAqLworKyAgTVpfWklQNjRfRUNESF9TSUdfT0ZTID0gMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIDQgYnl0ZXMgKi8KKysgIE1aX1pJUDY0X0VDREhfU0laRV9PRl9SRUNPUkRfT0ZTID0gNCwgICAgICAgICAgICAvKiA4IGJ5dGVzICovCisrICBNWl9aSVA2NF9FQ0RIX1ZFUlNJT05fTUFERV9CWV9PRlMgPSAxMiwgICAgICAgICAgLyogMiBieXRlcyAqLworKyAgTVpfWklQNjRfRUNESF9WRVJTSU9OX05FRURFRF9PRlMgPSAxNCwgICAgICAgICAgIC8qIDIgYnl0ZXMgKi8KKysgIE1aX1pJUDY0X0VDREhfTlVNX1RISVNfRElTS19PRlMgPSAxNiwgICAgICAgICAgICAvKiA0IGJ5dGVzICovCisrICBNWl9aSVA2NF9FQ0RIX05VTV9ESVNLX0NESVJfT0ZTID0gMjAsICAgICAgICAgICAgLyogNCBieXRlcyAqLworKyAgTVpfWklQNjRfRUNESF9DRElSX05VTV9FTlRSSUVTX09OX0RJU0tfT0ZTID0gMjQsIC8qIDggYnl0ZXMgKi8KKysgIE1aX1pJUDY0X0VDREhfQ0RJUl9UT1RBTF9FTlRSSUVTX09GUyA9IDMyLCAgICAgICAvKiA4IGJ5dGVzICovCisrICBNWl9aSVA2NF9FQ0RIX0NESVJfU0laRV9PRlMgPSA0MCwgICAgICAgICAgICAgICAgLyogOCBieXRlcyAqLworKyAgTVpfWklQNjRfRUNESF9DRElSX09GU19PRlMgPSA0OCwgICAgICAgICAgICAgICAgIC8qIDggYnl0ZXMgKi8KKysgIE1aX1pJUF9WRVJTSU9OX01BREVfQllfRE9TX0ZJTEVTWVNURU1fSUQgPSAwLAorKyAgTVpfWklQX0RPU19ESVJfQVRUUklCVVRFX0JJVEZMQUcgPSAweDEwLAorKyAgTVpfWklQX0dFTkVSQUxfUFVSUE9TRV9CSVRfRkxBR19JU19FTkNSWVBURUQgPSAxLAorKyAgTVpfWklQX0dFTkVSQUxfUFVSUE9TRV9CSVRfRkxBR19DT01QUkVTU0VEX1BBVENIX0ZMQUcgPSAzMiwKKysgIE1aX1pJUF9HRU5FUkFMX1BVUlBPU0VfQklUX0ZMQUdfVVNFU19TVFJPTkdfRU5DUllQVElPTiA9IDY0LAorKyAgTVpfWklQX0dFTkVSQUxfUFVSUE9TRV9CSVRfRkxBR19MT0NBTF9ESVJfSVNfTUFTS0VEID0gODE5MiwKKysgIE1aX1pJUF9HRU5FUkFMX1BVUlBPU0VfQklUX0ZMQUdfVVRGOCA9IDEgPDwgMTEKKyB9OworIAorIHR5cGVkZWYgc3RydWN0IHsKK0BAIC00MjExLDcgKzQzMTEsMjQgQEAgc3RydWN0IG16X3ppcF9pbnRlcm5hbF9zdGF0ZV90YWcgeworICAgbXpfemlwX2FycmF5IG1fY2VudHJhbF9kaXI7CisgICBtel96aXBfYXJyYXkgbV9jZW50cmFsX2Rpcl9vZmZzZXRzOworICAgbXpfemlwX2FycmF5IG1fc29ydGVkX2NlbnRyYWxfZGlyX29mZnNldHM7CisrCisrICAvKiBUaGUgZmxhZ3MgcGFzc2VkIGluIHdoZW4gdGhlIGFyY2hpdmUgaXMgaW5pdGlhbGx5IG9wZW5lZC4gKi8KKysgIHVpbnQzMl90IG1faW5pdF9mbGFnczsKKysKKysgIC8qIE1aX1RSVUUgaWYgdGhlIGFyY2hpdmUgaGFzIGEgemlwNjQgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5IGhlYWRlcnMsIGV0Yy4KKysgICAqLworKyAgbXpfYm9vbCBtX3ppcDY0OworKworKyAgLyogTVpfVFJVRSBpZiB3ZSBmb3VuZCB6aXA2NCBleHRlbmRlZCBpbmZvIGluIHRoZSBjZW50cmFsIGRpcmVjdG9yeSAobV96aXA2NAorKyAgICogd2lsbCBhbHNvIGJlIHNsYW1tZWQgdG8gdHJ1ZSB0b28sIGV2ZW4gaWYgd2UgZGlkbid0IGZpbmQgYSB6aXA2NCBlbmQgb2YKKysgICAqIGNlbnRyYWwgZGlyIGhlYWRlciwgZXRjLikgKi8KKysgIG16X2Jvb2wgbV96aXA2NF9oYXNfZXh0ZW5kZWRfaW5mb19maWVsZHM7CisrCisrICAvKiBUaGVzZSBmaWVsZHMgYXJlIHVzZWQgYnkgdGhlIGZpbGUsIEZJTEUsIG1lbW9yeSwgYW5kIG1lbW9yeS9oZWFwIHJlYWQvd3JpdGUKKysgICAqIGhlbHBlcnMuICovCisgICBNWl9GSUxFICptX3BGaWxlOworKyAgbXpfdWludDY0IG1fZmlsZV9hcmNoaXZlX3N0YXJ0X29mczsKKysKKyAgIHZvaWQgKm1fcE1lbTsKKyAgIHNpemVfdCBtX21lbV9zaXplOworICAgc2l6ZV90IG1fbWVtX2NhcGFjaXR5OworQEAgLTQzNjMsNiArNDQ4MCwxMyBAQCBzdGF0aWMgbXpfYm9vbCBtel96aXBfc2V0X2ZpbGVfdGltZXMoY29uc3QgY2hhciAqcEZpbGVuYW1lLCB0aW1lX3QgYWNjZXNzX3RpbWUsCisgI2VuZGlmIC8qICNpZm5kZWYgTUlOSVpfTk9fU1RESU8gKi8KKyAjZW5kaWYgLyogI2lmbmRlZiBNSU5JWl9OT19USU1FICovCisgCisrc3RhdGljIE1aX0ZPUkNFSU5MSU5FIG16X2Jvb2wgbXpfemlwX3NldF9lcnJvcihtel96aXBfYXJjaGl2ZSAqcFppcCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG16X3ppcF9lcnJvciBlcnJfbnVtKSB7CisrICBpZiAocFppcCkKKysgICAgcFppcC0+bV9sYXN0X2Vycm9yID0gZXJyX251bTsKKysgIHJldHVybiBNWl9GQUxTRTsKKyt9CisrCisgc3RhdGljIG16X2Jvb2wgbXpfemlwX3JlYWRlcl9pbml0X2ludGVybmFsKG16X3ppcF9hcmNoaXZlICpwWmlwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtel91aW50MzIgZmxhZ3MpIHsKKyAgICh2b2lkKWZsYWdzOworQEAgLTQ0ODAsMTI3ICs0NjA0LDM0NiBAQCBtel96aXBfcmVhZGVyX3NvcnRfY2VudHJhbF9kaXJfb2Zmc2V0c19ieV9maWxlbmFtZShtel96aXBfYXJjaGl2ZSAqcFppcCkgeworICAgfQorIH0KKyAKKy1zdGF0aWMgbXpfYm9vbCBtel96aXBfcmVhZGVyX3JlYWRfY2VudHJhbF9kaXIobXpfemlwX2FyY2hpdmUgKnBaaXAsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG16X3VpbnQzMiBmbGFncykgeworLSAgbXpfdWludCBjZGlyX3NpemUsIG51bV90aGlzX2Rpc2ssIGNkaXJfZGlza19pbmRleDsKKy0gIG16X3VpbnQ2NCBjZGlyX29mczsKKytzdGF0aWMgbXpfYm9vbCBtel96aXBfcmVhZGVyX2xvY2F0ZV9oZWFkZXJfc2lnKG16X3ppcF9hcmNoaXZlICpwWmlwLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXpfdWludDMyIHJlY29yZF9zaWcsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtel91aW50MzIgcmVjb3JkX3NpemUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtel9pbnQ2NCAqcE9mcykgeworICAgbXpfaW50NjQgY3VyX2ZpbGVfb2ZzOworLSAgY29uc3QgbXpfdWludDggKnA7CisgICBtel91aW50MzIgYnVmX3UzMls0MDk2IC8gc2l6ZW9mKG16X3VpbnQzMildOworICAgbXpfdWludDggKnBCdWYgPSAobXpfdWludDggKilidWZfdTMyOworLSAgbXpfYm9vbCBzb3J0X2NlbnRyYWxfZGlyID0KKy0gICAgICAoKGZsYWdzICYgTVpfWklQX0ZMQUdfRE9fTk9UX1NPUlRfQ0VOVFJBTF9ESVJFQ1RPUlkpID09IDApOworLSAgLy8gQmFzaWMgc2FuaXR5IGNoZWNrcyAtIHJlamVjdCBmaWxlcyB3aGljaCBhcmUgdG9vIHNtYWxsLCBhbmQgY2hlY2sgdGhlIGZpcnN0CistICAvLyA0IGJ5dGVzIG9mIHRoZSBmaWxlIHRvIG1ha2Ugc3VyZSBhIGxvY2FsIGhlYWRlciBpcyB0aGVyZS4KKy0gIGlmIChwWmlwLT5tX2FyY2hpdmVfc2l6ZSA8IE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpCisrCisrICAvKiBCYXNpYyBzYW5pdHkgY2hlY2tzIC0gcmVqZWN0IGZpbGVzIHdoaWNoIGFyZSB0b28gc21hbGwgKi8KKysgIGlmIChwWmlwLT5tX2FyY2hpdmVfc2l6ZSA8IHJlY29yZF9zaXplKQorICAgICByZXR1cm4gTVpfRkFMU0U7CistICAvLyBGaW5kIHRoZSBlbmQgb2YgY2VudHJhbCBkaXJlY3RvcnkgcmVjb3JkIGJ5IHNjYW5uaW5nIHRoZSBmaWxlIGZyb20gdGhlIGVuZAorLSAgLy8gdG93YXJkcyB0aGUgYmVnaW5uaW5nLgorKworKyAgLyogRmluZCB0aGUgcmVjb3JkIGJ5IHNjYW5uaW5nIHRoZSBmaWxlIGZyb20gdGhlIGVuZCB0b3dhcmRzIHRoZSBiZWdpbm5pbmcuICovCisgICBjdXJfZmlsZV9vZnMgPQorICAgICAgIE1aX01BWCgobXpfaW50NjQpcFppcC0+bV9hcmNoaXZlX3NpemUgLSAobXpfaW50NjQpc2l6ZW9mKGJ1Zl91MzIpLCAwKTsKKyAgIGZvciAoOzspIHsKKyAgICAgaW50IGksCisgICAgICAgICBuID0gKGludClNWl9NSU4oc2l6ZW9mKGJ1Zl91MzIpLCBwWmlwLT5tX2FyY2hpdmVfc2l6ZSAtIGN1cl9maWxlX29mcyk7CisrCisgICAgIGlmIChwWmlwLT5tX3BSZWFkKHBaaXAtPm1fcElPX29wYXF1ZSwgY3VyX2ZpbGVfb2ZzLCBwQnVmLCBuKSAhPSAobXpfdWludCluKQorICAgICAgIHJldHVybiBNWl9GQUxTRTsKKy0gICAgZm9yIChpID0gbiAtIDQ7IGkgPj0gMDsgLS1pKQorLSAgICAgIGlmIChNWl9SRUFEX0xFMzIocEJ1ZiArIGkpID09IE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJRykKKy0gICAgICAgIGJyZWFrOworKworKyAgICBmb3IgKGkgPSBuIC0gNDsgaSA+PSAwOyAtLWkpIHsKKysgICAgICBtel91aW50IHMgPSBNWl9SRUFEX0xFMzIocEJ1ZiArIGkpOworKyAgICAgIGlmIChzID09IHJlY29yZF9zaWcpIHsKKysgICAgICAgIGlmICgocFppcC0+bV9hcmNoaXZlX3NpemUgLSAoY3VyX2ZpbGVfb2ZzICsgaSkpID49IHJlY29yZF9zaXplKQorKyAgICAgICAgICBicmVhazsKKysgICAgICB9CisrICAgIH0KKysKKyAgICAgaWYgKGkgPj0gMCkgeworICAgICAgIGN1cl9maWxlX29mcyArPSBpOworICAgICAgIGJyZWFrOworICAgICB9CisrCisrICAgIC8qIEdpdmUgdXAgaWYgd2UndmUgc2VhcmNoZWQgdGhlIGVudGlyZSBmaWxlLCBvciB3ZSd2ZSBnb25lIGJhY2sgInRvbyBmYXIiCisrICAgICAqICh+NjRrYikgKi8KKyAgICAgaWYgKCghY3VyX2ZpbGVfb2ZzKSB8fCAoKHBaaXAtPm1fYXJjaGl2ZV9zaXplIC0gY3VyX2ZpbGVfb2ZzKSA+PQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHhGRkZGICsgTVpfWklQX0VORF9PRl9DRU5UUkFMX0RJUl9IRUFERVJfU0laRSkpKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTVpfVUlOVDE2X01BWCArIHJlY29yZF9zaXplKSkpCisgICAgICAgcmV0dXJuIE1aX0ZBTFNFOworKworICAgICBjdXJfZmlsZV9vZnMgPSBNWl9NQVgoY3VyX2ZpbGVfb2ZzIC0gKHNpemVvZihidWZfdTMyKSAtIDMpLCAwKTsKKyAgIH0KKy0gIC8vIFJlYWQgYW5kIHZlcmlmeSB0aGUgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5IHJlY29yZC4KKysKKysgICpwT2ZzID0gY3VyX2ZpbGVfb2ZzOworKyAgcmV0dXJuIE1aX1RSVUU7CisrfQorKworK3N0YXRpYyBtel9ib29sIG16X3ppcF9yZWFkZXJfcmVhZF9jZW50cmFsX2Rpcihtel96aXBfYXJjaGl2ZSAqcFppcCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXpfdWludCBmbGFncykgeworKyAgbXpfdWludCBjZGlyX3NpemUgPSAwLCBjZGlyX2VudHJpZXNfb25fdGhpc19kaXNrID0gMCwgbnVtX3RoaXNfZGlzayA9IDAsCisrICAgICAgICAgIGNkaXJfZGlza19pbmRleCA9IDA7CisrICBtel91aW50NjQgY2Rpcl9vZnMgPSAwOworKyAgbXpfaW50NjQgY3VyX2ZpbGVfb2ZzID0gMDsKKysgIGNvbnN0IG16X3VpbnQ4ICpwOworKworKyAgbXpfdWludDMyIGJ1Zl91MzJbNDA5NiAvIHNpemVvZihtel91aW50MzIpXTsKKysgIG16X3VpbnQ4ICpwQnVmID0gKG16X3VpbnQ4ICopYnVmX3UzMjsKKysgIG16X2Jvb2wgc29ydF9jZW50cmFsX2RpciA9CisrICAgICAgKChmbGFncyAmIE1aX1pJUF9GTEFHX0RPX05PVF9TT1JUX0NFTlRSQUxfRElSRUNUT1JZKSA9PSAwKTsKKysgIG16X3VpbnQzMiB6aXA2NF9lbmRfb2ZfY2VudHJhbF9kaXJfbG9jYXRvcl91MzIKKysgICAgICBbKE1aX1pJUDY0X0VORF9PRl9DRU5UUkFMX0RJUl9MT0NBVE9SX1NJWkUgKyBzaXplb2YobXpfdWludDMyKSAtIDEpIC8KKysgICAgICAgc2l6ZW9mKG16X3VpbnQzMildOworKyAgbXpfdWludDggKnBaaXA2NF9sb2NhdG9yID0gKG16X3VpbnQ4ICopemlwNjRfZW5kX29mX2NlbnRyYWxfZGlyX2xvY2F0b3JfdTMyOworKworKyAgbXpfdWludDMyIHppcDY0X2VuZF9vZl9jZW50cmFsX2Rpcl9oZWFkZXJfdTMyCisrICAgICAgWyhNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUgKyBzaXplb2YobXpfdWludDMyKSAtIDEpIC8KKysgICAgICAgc2l6ZW9mKG16X3VpbnQzMildOworKyAgbXpfdWludDggKnBaaXA2NF9lbmRfb2ZfY2VudHJhbF9kaXIgPQorKyAgICAgIChtel91aW50OCAqKXppcDY0X2VuZF9vZl9jZW50cmFsX2Rpcl9oZWFkZXJfdTMyOworKworKyAgbXpfdWludDY0IHppcDY0X2VuZF9vZl9jZW50cmFsX2Rpcl9vZnMgPSAwOworKworKyAgLyogQmFzaWMgc2FuaXR5IGNoZWNrcyAtIHJlamVjdCBmaWxlcyB3aGljaCBhcmUgdG9vIHNtYWxsLCBhbmQgY2hlY2sgdGhlIGZpcnN0CisrICAgKiA0IGJ5dGVzIG9mIHRoZSBmaWxlIHRvIG1ha2Ugc3VyZSBhIGxvY2FsIGhlYWRlciBpcyB0aGVyZS4gKi8KKysgIGlmIChwWmlwLT5tX2FyY2hpdmVfc2l6ZSA8IE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpCisrICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9OT1RfQU5fQVJDSElWRSk7CisrCisrICBpZiAoIW16X3ppcF9yZWFkZXJfbG9jYXRlX2hlYWRlcl9zaWcoCisrICAgICAgICAgIHBaaXAsIE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJRywKKysgICAgICAgICAgTVpfWklQX0VORF9PRl9DRU5UUkFMX0RJUl9IRUFERVJfU0laRSwgJmN1cl9maWxlX29mcykpCisrICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9GQUlMRURfRklORElOR19DRU5UUkFMX0RJUik7CisrCisrICAvKiBSZWFkIGFuZCB2ZXJpZnkgdGhlIGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSByZWNvcmQuICovCisgICBpZiAocFppcC0+bV9wUmVhZChwWmlwLT5tX3BJT19vcGFxdWUsIGN1cl9maWxlX29mcywgcEJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgIE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpICE9CisgICAgICAgTVpfWklQX0VORF9PRl9DRU5UUkFMX0RJUl9IRUFERVJfU0laRSkKKy0gICAgcmV0dXJuIE1aX0ZBTFNFOworLSAgaWYgKChNWl9SRUFEX0xFMzIocEJ1ZiArIE1aX1pJUF9FQ0RIX1NJR19PRlMpICE9CistICAgICAgIE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJRykgfHwKKy0gICAgICAoKHBaaXAtPm1fdG90YWxfZmlsZXMgPQorLSAgICAgICAgICAgIE1aX1JFQURfTEUxNihwQnVmICsgTVpfWklQX0VDREhfQ0RJUl9UT1RBTF9FTlRSSUVTX09GUykpICE9CistICAgICAgIE1aX1JFQURfTEUxNihwQnVmICsgTVpfWklQX0VDREhfQ0RJUl9OVU1fRU5UUklFU19PTl9ESVNLX09GUykpKQorLSAgICByZXR1cm4gTVpfRkFMU0U7CisrICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9GSUxFX1JFQURfRkFJTEVEKTsKKysKKysgIGlmIChNWl9SRUFEX0xFMzIocEJ1ZiArIE1aX1pJUF9FQ0RIX1NJR19PRlMpICE9CisrICAgICAgTVpfWklQX0VORF9PRl9DRU5UUkFMX0RJUl9IRUFERVJfU0lHKQorKyAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfTk9UX0FOX0FSQ0hJVkUpOworKworKyAgaWYgKGN1cl9maWxlX29mcyA+PSAoTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0xPQ0FUT1JfU0laRSArCisrICAgICAgICAgICAgICAgICAgICAgICBNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpKSB7CisrICAgIGlmIChwWmlwLT5tX3BSZWFkKHBaaXAtPm1fcElPX29wYXF1ZSwKKysgICAgICAgICAgICAgICAgICAgICAgY3VyX2ZpbGVfb2ZzIC0gTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0xPQ0FUT1JfU0laRSwKKysgICAgICAgICAgICAgICAgICAgICAgcFppcDY0X2xvY2F0b3IsCisrICAgICAgICAgICAgICAgICAgICAgIE1aX1pJUDY0X0VORF9PRl9DRU5UUkFMX0RJUl9MT0NBVE9SX1NJWkUpID09CisrICAgICAgICBNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfTE9DQVRPUl9TSVpFKSB7CisrICAgICAgaWYgKE1aX1JFQURfTEUzMihwWmlwNjRfbG9jYXRvciArIE1aX1pJUDY0X0VDRExfU0lHX09GUykgPT0KKysgICAgICAgICAgTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0xPQ0FUT1JfU0lHKSB7CisrICAgICAgICB6aXA2NF9lbmRfb2ZfY2VudHJhbF9kaXJfb2ZzID0gTVpfUkVBRF9MRTY0KAorKyAgICAgICAgICAgIHBaaXA2NF9sb2NhdG9yICsgTVpfWklQNjRfRUNETF9SRUxfT0ZTX1RPX1pJUDY0X0VDRFJfT0ZTKTsKKysgICAgICAgIGlmICh6aXA2NF9lbmRfb2ZfY2VudHJhbF9kaXJfb2ZzID4KKysgICAgICAgICAgICAocFppcC0+bV9hcmNoaXZlX3NpemUgLSBNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpKQorKyAgICAgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfTk9UX0FOX0FSQ0hJVkUpOworKworKyAgICAgICAgaWYgKHBaaXAtPm1fcFJlYWQocFppcC0+bV9wSU9fb3BhcXVlLCB6aXA2NF9lbmRfb2ZfY2VudHJhbF9kaXJfb2ZzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgcFppcDY0X2VuZF9vZl9jZW50cmFsX2RpciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIE1aX1pJUDY0X0VORF9PRl9DRU5UUkFMX0RJUl9IRUFERVJfU0laRSkgPT0KKysgICAgICAgICAgICBNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpIHsKKysgICAgICAgICAgaWYgKE1aX1JFQURfTEUzMihwWmlwNjRfZW5kX29mX2NlbnRyYWxfZGlyICsgTVpfWklQNjRfRUNESF9TSUdfT0ZTKSA9PQorKyAgICAgICAgICAgICAgTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSUcpIHsKKysgICAgICAgICAgICBwWmlwLT5tX3BTdGF0ZS0+bV96aXA2NCA9IE1aX1RSVUU7CisrICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgICB9CisrICAgIH0KKysgIH0KKyAKKysgIHBaaXAtPm1fdG90YWxfZmlsZXMgPSBNWl9SRUFEX0xFMTYocEJ1ZiArIE1aX1pJUF9FQ0RIX0NESVJfVE9UQUxfRU5UUklFU19PRlMpOworKyAgY2Rpcl9lbnRyaWVzX29uX3RoaXNfZGlzayA9CisrICAgICAgTVpfUkVBRF9MRTE2KHBCdWYgKyBNWl9aSVBfRUNESF9DRElSX05VTV9FTlRSSUVTX09OX0RJU0tfT0ZTKTsKKyAgIG51bV90aGlzX2Rpc2sgPSBNWl9SRUFEX0xFMTYocEJ1ZiArIE1aX1pJUF9FQ0RIX05VTV9USElTX0RJU0tfT0ZTKTsKKyAgIGNkaXJfZGlza19pbmRleCA9IE1aX1JFQURfTEUxNihwQnVmICsgTVpfWklQX0VDREhfTlVNX0RJU0tfQ0RJUl9PRlMpOworKyAgY2Rpcl9zaXplID0gTVpfUkVBRF9MRTMyKHBCdWYgKyBNWl9aSVBfRUNESF9DRElSX1NJWkVfT0ZTKTsKKysgIGNkaXJfb2ZzID0gTVpfUkVBRF9MRTMyKHBCdWYgKyBNWl9aSVBfRUNESF9DRElSX09GU19PRlMpOworKworKyAgaWYgKHBaaXAtPm1fcFN0YXRlLT5tX3ppcDY0KSB7CisrICAgIG16X3VpbnQzMiB6aXA2NF90b3RhbF9udW1fb2ZfZGlza3MgPQorKyAgICAgICAgTVpfUkVBRF9MRTMyKHBaaXA2NF9sb2NhdG9yICsgTVpfWklQNjRfRUNETF9UT1RBTF9OVU1CRVJfT0ZfRElTS1NfT0ZTKTsKKysgICAgbXpfdWludDY0IHppcDY0X2NkaXJfdG90YWxfZW50cmllcyA9IE1aX1JFQURfTEU2NCgKKysgICAgICAgIHBaaXA2NF9lbmRfb2ZfY2VudHJhbF9kaXIgKyBNWl9aSVA2NF9FQ0RIX0NESVJfVE9UQUxfRU5UUklFU19PRlMpOworKyAgICBtel91aW50NjQgemlwNjRfY2Rpcl90b3RhbF9lbnRyaWVzX29uX3RoaXNfZGlzayA9IE1aX1JFQURfTEU2NCgKKysgICAgICAgIHBaaXA2NF9lbmRfb2ZfY2VudHJhbF9kaXIgKyBNWl9aSVA2NF9FQ0RIX0NESVJfTlVNX0VOVFJJRVNfT05fRElTS19PRlMpOworKyAgICBtel91aW50NjQgemlwNjRfc2l6ZV9vZl9lbmRfb2ZfY2VudHJhbF9kaXJfcmVjb3JkID0gTVpfUkVBRF9MRTY0KAorKyAgICAgICAgcFppcDY0X2VuZF9vZl9jZW50cmFsX2RpciArIE1aX1pJUDY0X0VDREhfU0laRV9PRl9SRUNPUkRfT0ZTKTsKKysgICAgbXpfdWludDY0IHppcDY0X3NpemVfb2ZfY2VudHJhbF9kaXJlY3RvcnkgPQorKyAgICAgICAgTVpfUkVBRF9MRTY0KHBaaXA2NF9lbmRfb2ZfY2VudHJhbF9kaXIgKyBNWl9aSVA2NF9FQ0RIX0NESVJfU0laRV9PRlMpOworKworKyAgICBpZiAoemlwNjRfc2l6ZV9vZl9lbmRfb2ZfY2VudHJhbF9kaXJfcmVjb3JkIDwKKysgICAgICAgIChNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUgLSAxMikpCisrICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0lOVkFMSURfSEVBREVSX09SX0NPUlJVUFRFRCk7CisrCisrICAgIGlmICh6aXA2NF90b3RhbF9udW1fb2ZfZGlza3MgIT0gMVUpCisrICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX1VOU1VQUE9SVEVEX01VTFRJRElTSyk7CisrCisrICAgIC8qIENoZWNrIGZvciBtaW5peidzIHByYWN0aWNhbCBsaW1pdHMgKi8KKysgICAgaWYgKHppcDY0X2NkaXJfdG90YWxfZW50cmllcyA+IE1aX1VJTlQzMl9NQVgpCisrICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX1RPT19NQU5ZX0ZJTEVTKTsKKysKKysgICAgcFppcC0+bV90b3RhbF9maWxlcyA9IChtel91aW50MzIpemlwNjRfY2Rpcl90b3RhbF9lbnRyaWVzOworKworKyAgICBpZiAoemlwNjRfY2Rpcl90b3RhbF9lbnRyaWVzX29uX3RoaXNfZGlzayA+IE1aX1VJTlQzMl9NQVgpCisrICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX1RPT19NQU5ZX0ZJTEVTKTsKKysKKysgICAgY2Rpcl9lbnRyaWVzX29uX3RoaXNfZGlzayA9CisrICAgICAgICAobXpfdWludDMyKXppcDY0X2NkaXJfdG90YWxfZW50cmllc19vbl90aGlzX2Rpc2s7CisrCisrICAgIC8qIENoZWNrIGZvciBtaW5peidzIGN1cnJlbnQgcHJhY3RpY2FsIGxpbWl0cyAoc29ycnksIHRoaXMgc2hvdWxkIGJlIGVub3VnaAorKyAgICAgKiBmb3IgbWlsbGlvbnMgb2YgZmlsZXMpICovCisrICAgIGlmICh6aXA2NF9zaXplX29mX2NlbnRyYWxfZGlyZWN0b3J5ID4gTVpfVUlOVDMyX01BWCkKKysgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfVU5TVVBQT1JURURfQ0RJUl9TSVpFKTsKKysKKysgICAgY2Rpcl9zaXplID0gKG16X3VpbnQzMil6aXA2NF9zaXplX29mX2NlbnRyYWxfZGlyZWN0b3J5OworKworKyAgICBudW1fdGhpc19kaXNrID0gTVpfUkVBRF9MRTMyKHBaaXA2NF9lbmRfb2ZfY2VudHJhbF9kaXIgKworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1aX1pJUDY0X0VDREhfTlVNX1RISVNfRElTS19PRlMpOworKworKyAgICBjZGlyX2Rpc2tfaW5kZXggPSBNWl9SRUFEX0xFMzIocFppcDY0X2VuZF9vZl9jZW50cmFsX2RpciArCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNWl9aSVA2NF9FQ0RIX05VTV9ESVNLX0NESVJfT0ZTKTsKKysKKysgICAgY2Rpcl9vZnMgPQorKyAgICAgICAgTVpfUkVBRF9MRTY0KHBaaXA2NF9lbmRfb2ZfY2VudHJhbF9kaXIgKyBNWl9aSVA2NF9FQ0RIX0NESVJfT0ZTX09GUyk7CisrICB9CisrCisrICBpZiAocFppcC0+bV90b3RhbF9maWxlcyAhPSBjZGlyX2VudHJpZXNfb25fdGhpc19kaXNrKQorKyAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfVU5TVVBQT1JURURfTVVMVElESVNLKTsKKysKKyAgIGlmICgoKG51bV90aGlzX2Rpc2sgfCBjZGlyX2Rpc2tfaW5kZXgpICE9IDApICYmCisgICAgICAgKChudW1fdGhpc19kaXNrICE9IDEpIHx8IChjZGlyX2Rpc2tfaW5kZXggIT0gMSkpKQorLSAgICByZXR1cm4gTVpfRkFMU0U7CisrICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9VTlNVUFBPUlRFRF9NVUxUSURJU0spOworIAorLSAgaWYgKChjZGlyX3NpemUgPSBNWl9SRUFEX0xFMzIocEJ1ZiArIE1aX1pJUF9FQ0RIX0NESVJfU0laRV9PRlMpKSA8CistICAgICAgcFppcC0+bV90b3RhbF9maWxlcyAqIE1aX1pJUF9DRU5UUkFMX0RJUl9IRUFERVJfU0laRSkKKy0gICAgcmV0dXJuIE1aX0ZBTFNFOworKyAgaWYgKGNkaXJfc2l6ZSA8IHBaaXAtPm1fdG90YWxfZmlsZXMgKiBNWl9aSVBfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpCisrICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9JTlZBTElEX0hFQURFUl9PUl9DT1JSVVBURUQpOworIAorLSAgY2Rpcl9vZnMgPSBNWl9SRUFEX0xFMzIocEJ1ZiArIE1aX1pJUF9FQ0RIX0NESVJfT0ZTX09GUyk7CisgICBpZiAoKGNkaXJfb2ZzICsgKG16X3VpbnQ2NCljZGlyX3NpemUpID4gcFppcC0+bV9hcmNoaXZlX3NpemUpCistICAgIHJldHVybiBNWl9GQUxTRTsKKysgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0lOVkFMSURfSEVBREVSX09SX0NPUlJVUFRFRCk7CisgCisgICBwWmlwLT5tX2NlbnRyYWxfZGlyZWN0b3J5X2ZpbGVfb2ZzID0gY2Rpcl9vZnM7CisgCisgICBpZiAocFppcC0+bV90b3RhbF9maWxlcykgeworICAgICBtel91aW50IGksIG47CistCistICAgIC8vIFJlYWQgdGhlIGVudGlyZSBjZW50cmFsIGRpcmVjdG9yeSBpbnRvIGEgaGVhcCBibG9jaywgYW5kIGFsbG9jYXRlIGFub3RoZXIKKy0gICAgLy8gaGVhcCBibG9jayB0byBob2xkIHRoZSB1bnNvcnRlZCBjZW50cmFsIGRpciBmaWxlIHJlY29yZCBvZmZzZXRzLCBhbmQKKy0gICAgLy8gYW5vdGhlciB0byBob2xkIHRoZSBzb3J0ZWQgaW5kaWNlcy4KKysgICAgLyogUmVhZCB0aGUgZW50aXJlIGNlbnRyYWwgZGlyZWN0b3J5IGludG8gYSBoZWFwIGJsb2NrLCBhbmQgYWxsb2NhdGUgYW5vdGhlcgorKyAgICAgKiBoZWFwIGJsb2NrIHRvIGhvbGQgdGhlIHVuc29ydGVkIGNlbnRyYWwgZGlyIGZpbGUgcmVjb3JkIG9mZnNldHMsIGFuZAorKyAgICAgKiBwb3NzaWJseSBhbm90aGVyIHRvIGhvbGQgdGhlIHNvcnRlZCBpbmRpY2VzLiAqLworICAgICBpZiAoKCFtel96aXBfYXJyYXlfcmVzaXplKHBaaXAsICZwWmlwLT5tX3BTdGF0ZS0+bV9jZW50cmFsX2RpciwgY2Rpcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1aX0ZBTFNFKSkgfHwKKyAgICAgICAgICghbXpfemlwX2FycmF5X3Jlc2l6ZShwWmlwLCAmcFppcC0+bV9wU3RhdGUtPm1fY2VudHJhbF9kaXJfb2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwWmlwLT5tX3RvdGFsX2ZpbGVzLCBNWl9GQUxTRSkpKQorLSAgICAgIHJldHVybiBNWl9GQUxTRTsKKysgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfQUxMT0NfRkFJTEVEKTsKKyAKKyAgICAgaWYgKHNvcnRfY2VudHJhbF9kaXIpIHsKKyAgICAgICBpZiAoIW16X3ppcF9hcnJheV9yZXNpemUocFppcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBaaXAtPm1fcFN0YXRlLT5tX3NvcnRlZF9jZW50cmFsX2Rpcl9vZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwWmlwLT5tX3RvdGFsX2ZpbGVzLCBNWl9GQUxTRSkpCistICAgICAgICByZXR1cm4gTVpfRkFMU0U7CisrICAgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfQUxMT0NfRkFJTEVEKTsKKyAgICAgfQorIAorICAgICBpZiAocFppcC0+bV9wUmVhZChwWmlwLT5tX3BJT19vcGFxdWUsIGNkaXJfb2ZzLAorICAgICAgICAgICAgICAgICAgICAgICBwWmlwLT5tX3BTdGF0ZS0+bV9jZW50cmFsX2Rpci5tX3AsCisgICAgICAgICAgICAgICAgICAgICAgIGNkaXJfc2l6ZSkgIT0gY2Rpcl9zaXplKQorLSAgICAgIHJldHVybiBNWl9GQUxTRTsKKysgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfRklMRV9SRUFEX0ZBSUxFRCk7CisgCistICAgIC8vIE5vdyBjcmVhdGUgYW4gaW5kZXggaW50byB0aGUgY2VudHJhbCBkaXJlY3RvcnkgZmlsZSByZWNvcmRzLCBkbyBzb21lCistICAgIC8vIGJhc2ljIHNhbml0eSBjaGVja2luZyBvbiBlYWNoIHJlY29yZCwgYW5kIGNoZWNrIGZvciB6aXA2NCBlbnRyaWVzICh3aGljaAorLSAgICAvLyBhcmUgbm90IHlldCBzdXBwb3J0ZWQpLgorKyAgICAvKiBOb3cgY3JlYXRlIGFuIGluZGV4IGludG8gdGhlIGNlbnRyYWwgZGlyZWN0b3J5IGZpbGUgcmVjb3JkcywgZG8gc29tZQorKyAgICAgKiBiYXNpYyBzYW5pdHkgY2hlY2tpbmcgb24gZWFjaCByZWNvcmQgKi8KKyAgICAgcCA9IChjb25zdCBtel91aW50OCAqKXBaaXAtPm1fcFN0YXRlLT5tX2NlbnRyYWxfZGlyLm1fcDsKKyAgICAgZm9yIChuID0gY2Rpcl9zaXplLCBpID0gMDsgaSA8IHBaaXAtPm1fdG90YWxfZmlsZXM7ICsraSkgeworLSAgICAgIG16X3VpbnQgdG90YWxfaGVhZGVyX3NpemUsIGNvbXBfc2l6ZSwgZGVjb21wX3NpemUsIGRpc2tfaW5kZXg7CisrICAgICAgbXpfdWludCB0b3RhbF9oZWFkZXJfc2l6ZSwgZGlza19pbmRleCwgYml0X2ZsYWdzLCBmaWxlbmFtZV9zaXplLAorKyAgICAgICAgICBleHRfZGF0YV9zaXplOworKyAgICAgIG16X3VpbnQ2NCBjb21wX3NpemUsIGRlY29tcF9zaXplLCBsb2NhbF9oZWFkZXJfb2ZzOworKworICAgICAgIGlmICgobiA8IE1aX1pJUF9DRU5UUkFMX0RJUl9IRUFERVJfU0laRSkgfHwKKyAgICAgICAgICAgKE1aX1JFQURfTEUzMihwKSAhPSBNWl9aSVBfQ0VOVFJBTF9ESVJfSEVBREVSX1NJRykpCistICAgICAgICByZXR1cm4gTVpfRkFMU0U7CisrICAgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfSU5WQUxJRF9IRUFERVJfT1JfQ09SUlVQVEVEKTsKKysKKyAgICAgICBNWl9aSVBfQVJSQVlfRUxFTUVOVCgmcFppcC0+bV9wU3RhdGUtPm1fY2VudHJhbF9kaXJfb2Zmc2V0cywgbXpfdWludDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkpID0KKyAgICAgICAgICAgKG16X3VpbnQzMikocCAtIChjb25zdCBtel91aW50OCAqKXBaaXAtPm1fcFN0YXRlLT5tX2NlbnRyYWxfZGlyLm1fcCk7CisrCisgICAgICAgaWYgKHNvcnRfY2VudHJhbF9kaXIpCisgICAgICAgICBNWl9aSVBfQVJSQVlfRUxFTUVOVCgmcFppcC0+bV9wU3RhdGUtPm1fc29ydGVkX2NlbnRyYWxfZGlyX29mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtel91aW50MzIsIGkpID0gaTsKKysKKyAgICAgICBjb21wX3NpemUgPSBNWl9SRUFEX0xFMzIocCArIE1aX1pJUF9DREhfQ09NUFJFU1NFRF9TSVpFX09GUyk7CisgICAgICAgZGVjb21wX3NpemUgPSBNWl9SRUFEX0xFMzIocCArIE1aX1pJUF9DREhfREVDT01QUkVTU0VEX1NJWkVfT0ZTKTsKKy0gICAgICBpZiAoKCghTVpfUkVBRF9MRTMyKHAgKyBNWl9aSVBfQ0RIX01FVEhPRF9PRlMpKSAmJgorLSAgICAgICAgICAgKGRlY29tcF9zaXplICE9IGNvbXBfc2l6ZSkpIHx8CistICAgICAgICAgIChkZWNvbXBfc2l6ZSAmJiAhY29tcF9zaXplKSB8fCAoZGVjb21wX3NpemUgPT0gMHhGRkZGRkZGRikgfHwKKy0gICAgICAgICAgKGNvbXBfc2l6ZSA9PSAweEZGRkZGRkZGKSkKKy0gICAgICAgIHJldHVybiBNWl9GQUxTRTsKKysgICAgICBsb2NhbF9oZWFkZXJfb2ZzID0gTVpfUkVBRF9MRTMyKHAgKyBNWl9aSVBfQ0RIX0xPQ0FMX0hFQURFUl9PRlMpOworKyAgICAgIGZpbGVuYW1lX3NpemUgPSBNWl9SRUFEX0xFMTYocCArIE1aX1pJUF9DREhfRklMRU5BTUVfTEVOX09GUyk7CisrICAgICAgZXh0X2RhdGFfc2l6ZSA9IE1aX1JFQURfTEUxNihwICsgTVpfWklQX0NESF9FWFRSQV9MRU5fT0ZTKTsKKysKKysgICAgICBpZiAoKCFwWmlwLT5tX3BTdGF0ZS0+bV96aXA2NF9oYXNfZXh0ZW5kZWRfaW5mb19maWVsZHMpICYmCisrICAgICAgICAgIChleHRfZGF0YV9zaXplKSAmJgorKyAgICAgICAgICAoTVpfTUFYKE1aX01BWChjb21wX3NpemUsIGRlY29tcF9zaXplKSwgbG9jYWxfaGVhZGVyX29mcykgPT0KKysgICAgICAgICAgIE1aX1VJTlQzMl9NQVgpKSB7CisrICAgICAgICAvKiBBdHRlbXB0IHRvIGZpbmQgemlwNjQgZXh0ZW5kZWQgaW5mb3JtYXRpb24gZmllbGQgaW4gdGhlIGVudHJ5J3MgZXh0cmEKKysgICAgICAgICAqIGRhdGEgKi8KKysgICAgICAgIG16X3VpbnQzMiBleHRyYV9zaXplX3JlbWFpbmluZyA9IGV4dF9kYXRhX3NpemU7CisrCisrICAgICAgICBpZiAoZXh0cmFfc2l6ZV9yZW1haW5pbmcpIHsKKysgICAgICAgICAgY29uc3QgbXpfdWludDggKnBFeHRyYV9kYXRhOworKyAgICAgICAgICB2b2lkICpidWYgPSBOVUxMOworKworKyAgICAgICAgICBpZiAoTVpfWklQX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFICsgZmlsZW5hbWVfc2l6ZSArIGV4dF9kYXRhX3NpemUgPgorKyAgICAgICAgICAgICAgbikgeworKyAgICAgICAgICAgIGJ1ZiA9IE1aX01BTExPQyhleHRfZGF0YV9zaXplKTsKKysgICAgICAgICAgICBpZiAoYnVmID09IE5VTEwpCisrICAgICAgICAgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfQUxMT0NfRkFJTEVEKTsKKysKKysgICAgICAgICAgICBpZiAocFppcC0+bV9wUmVhZChwWmlwLT5tX3BJT19vcGFxdWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Rpcl9vZnMgKyBNWl9aSVBfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUgKworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZV9zaXplLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwgZXh0X2RhdGFfc2l6ZSkgIT0gZXh0X2RhdGFfc2l6ZSkgeworKyAgICAgICAgICAgICAgTVpfRlJFRShidWYpOworKyAgICAgICAgICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0ZJTEVfUkVBRF9GQUlMRUQpOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBwRXh0cmFfZGF0YSA9IChtel91aW50OCAqKWJ1ZjsKKysgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICBwRXh0cmFfZGF0YSA9IHAgKyBNWl9aSVBfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUgKyBmaWxlbmFtZV9zaXplOworKyAgICAgICAgICB9CisrCisrICAgICAgICAgIGRvIHsKKysgICAgICAgICAgICBtel91aW50MzIgZmllbGRfaWQ7CisrICAgICAgICAgICAgbXpfdWludDMyIGZpZWxkX2RhdGFfc2l6ZTsKKysKKysgICAgICAgICAgICBpZiAoZXh0cmFfc2l6ZV9yZW1haW5pbmcgPCAoc2l6ZW9mKG16X3VpbnQxNikgKiAyKSkgeworKyAgICAgICAgICAgICAgTVpfRlJFRShidWYpOworKyAgICAgICAgICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0lOVkFMSURfSEVBREVSX09SX0NPUlJVUFRFRCk7CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIGZpZWxkX2lkID0gTVpfUkVBRF9MRTE2KHBFeHRyYV9kYXRhKTsKKysgICAgICAgICAgICBmaWVsZF9kYXRhX3NpemUgPSBNWl9SRUFEX0xFMTYocEV4dHJhX2RhdGEgKyBzaXplb2YobXpfdWludDE2KSk7CisrCisrICAgICAgICAgICAgaWYgKChmaWVsZF9kYXRhX3NpemUgKyBzaXplb2YobXpfdWludDE2KSAqIDIpID4KKysgICAgICAgICAgICAgICAgZXh0cmFfc2l6ZV9yZW1haW5pbmcpIHsKKysgICAgICAgICAgICAgIE1aX0ZSRUUoYnVmKTsKKysgICAgICAgICAgICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9JTlZBTElEX0hFQURFUl9PUl9DT1JSVVBURUQpOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBpZiAoZmllbGRfaWQgPT0gTVpfWklQNjRfRVhURU5ERURfSU5GT1JNQVRJT05fRklFTERfSEVBREVSX0lEKSB7CisrICAgICAgICAgICAgICAvKiBPaywgdGhlIGFyY2hpdmUgZGlkbid0IGhhdmUgYW55IHppcDY0IGhlYWRlcnMgYnV0IGl0IHVzZXMgYQorKyAgICAgICAgICAgICAgICogemlwNjQgZXh0ZW5kZWQgaW5mb3JtYXRpb24gZmllbGQgc28gbWFyayBpdCBhcyB6aXA2NCBhbnl3YXkKKysgICAgICAgICAgICAgICAqICh0aGlzIGNhbiBvY2N1ciB3aXRoIGluZm96aXAncyB6aXAgdXRpbCB3aGVuIGl0IHJlYWRzCisrICAgICAgICAgICAgICAgKiBjb21wcmVzc2VzIGZpbGVzIGZyb20gc3RkaW4pLiAqLworKyAgICAgICAgICAgICAgcFppcC0+bV9wU3RhdGUtPm1femlwNjQgPSBNWl9UUlVFOworKyAgICAgICAgICAgICAgcFppcC0+bV9wU3RhdGUtPm1femlwNjRfaGFzX2V4dGVuZGVkX2luZm9fZmllbGRzID0gTVpfVFJVRTsKKysgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBwRXh0cmFfZGF0YSArPSBzaXplb2YobXpfdWludDE2KSAqIDIgKyBmaWVsZF9kYXRhX3NpemU7CisrICAgICAgICAgICAgZXh0cmFfc2l6ZV9yZW1haW5pbmcgPQorKyAgICAgICAgICAgICAgICBleHRyYV9zaXplX3JlbWFpbmluZyAtIHNpemVvZihtel91aW50MTYpICogMiAtIGZpZWxkX2RhdGFfc2l6ZTsKKysgICAgICAgICAgfSB3aGlsZSAoZXh0cmFfc2l6ZV9yZW1haW5pbmcpOworKworKyAgICAgICAgICBNWl9GUkVFKGJ1Zik7CisrICAgICAgICB9CisrICAgICAgfQorKworKyAgICAgIC8qIEkndmUgc2VlbiBhcmNoaXZlcyB0aGF0IGFyZW4ndCBtYXJrZWQgYXMgemlwNjQgdGhhdCB1c2VzIHppcDY0IGV4dAorKyAgICAgICAqIGRhdGEsIGFyZ2ggKi8KKysgICAgICBpZiAoKGNvbXBfc2l6ZSAhPSBNWl9VSU5UMzJfTUFYKSAmJiAoZGVjb21wX3NpemUgIT0gTVpfVUlOVDMyX01BWCkpIHsKKysgICAgICAgIGlmICgoKCFNWl9SRUFEX0xFMzIocCArIE1aX1pJUF9DREhfTUVUSE9EX09GUykpICYmCisrICAgICAgICAgICAgIChkZWNvbXBfc2l6ZSAhPSBjb21wX3NpemUpKSB8fAorKyAgICAgICAgICAgIChkZWNvbXBfc2l6ZSAmJiAhY29tcF9zaXplKSkKKysgICAgICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0lOVkFMSURfSEVBREVSX09SX0NPUlJVUFRFRCk7CisrICAgICAgfQorKworICAgICAgIGRpc2tfaW5kZXggPSBNWl9SRUFEX0xFMTYocCArIE1aX1pJUF9DREhfRElTS19TVEFSVF9PRlMpOworLSAgICAgIGlmICgoZGlza19pbmRleCAhPSBudW1fdGhpc19kaXNrKSAmJiAoZGlza19pbmRleCAhPSAxKSkKKy0gICAgICAgIHJldHVybiBNWl9GQUxTRTsKKy0gICAgICBpZiAoKChtel91aW50NjQpTVpfUkVBRF9MRTMyKHAgKyBNWl9aSVBfQ0RIX0xPQ0FMX0hFQURFUl9PRlMpICsKKy0gICAgICAgICAgIE1aX1pJUF9MT0NBTF9ESVJfSEVBREVSX1NJWkUgKyBjb21wX3NpemUpID4gcFppcC0+bV9hcmNoaXZlX3NpemUpCistICAgICAgICByZXR1cm4gTVpfRkFMU0U7CisrICAgICAgaWYgKChkaXNrX2luZGV4ID09IE1aX1VJTlQxNl9NQVgpIHx8CisrICAgICAgICAgICgoZGlza19pbmRleCAhPSBudW1fdGhpc19kaXNrKSAmJiAoZGlza19pbmRleCAhPSAxKSkpCisrICAgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfVU5TVVBQT1JURURfTVVMVElESVNLKTsKKysKKysgICAgICBpZiAoY29tcF9zaXplICE9IE1aX1VJTlQzMl9NQVgpIHsKKysgICAgICAgIGlmICgoKG16X3VpbnQ2NClNWl9SRUFEX0xFMzIocCArIE1aX1pJUF9DREhfTE9DQUxfSEVBREVSX09GUykgKworKyAgICAgICAgICAgICBNWl9aSVBfTE9DQUxfRElSX0hFQURFUl9TSVpFICsgY29tcF9zaXplKSA+IHBaaXAtPm1fYXJjaGl2ZV9zaXplKQorKyAgICAgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfSU5WQUxJRF9IRUFERVJfT1JfQ09SUlVQVEVEKTsKKysgICAgICB9CisrCisrICAgICAgYml0X2ZsYWdzID0gTVpfUkVBRF9MRTE2KHAgKyBNWl9aSVBfQ0RIX0JJVF9GTEFHX09GUyk7CisrICAgICAgaWYgKGJpdF9mbGFncyAmIE1aX1pJUF9HRU5FUkFMX1BVUlBPU0VfQklUX0ZMQUdfTE9DQUxfRElSX0lTX01BU0tFRCkKKysgICAgICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9VTlNVUFBPUlRFRF9FTkNSWVBUSU9OKTsKKysKKyAgICAgICBpZiAoKHRvdGFsX2hlYWRlcl9zaXplID0gTVpfWklQX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVpfUkVBRF9MRTE2KHAgKyBNWl9aSVBfQ0RIX0ZJTEVOQU1FX0xFTl9PRlMpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVpfUkVBRF9MRTE2KHAgKyBNWl9aSVBfQ0RIX0VYVFJBX0xFTl9PRlMpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVpfUkVBRF9MRTE2KHAgKyBNWl9aSVBfQ0RIX0NPTU1FTlRfTEVOX09GUykpID4KKyAgICAgICAgICAgbikKKy0gICAgICAgIHJldHVybiBNWl9GQUxTRTsKKysgICAgICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9JTlZBTElEX0hFQURFUl9PUl9DT1JSVVBURUQpOworKworICAgICAgIG4gLT0gdG90YWxfaGVhZGVyX3NpemU7CisgICAgICAgcCArPSB0b3RhbF9oZWFkZXJfc2l6ZTsKKyAgICAgfQorZGlmZiAtLWdpdCBhL2NvbnRyaWIvemlwL3NyYy96aXAuYyBiL2NvbnRyaWIvemlwL3NyYy96aXAuYworaW5kZXggZmYzYThmZTEuLjFhYmNmZDhmIDEwMDY0NAorLS0tIGEvY29udHJpYi96aXAvc3JjL3ppcC5jCisrKysgYi9jb250cmliL3ppcC9zcmMvemlwLmMKK0BAIC0yNCw3ICsyNCw2IEBACisgICAoKCgoUClbMF0gPj0gJ0EnICYmIChQKVswXSA8PSAnWicpIHx8ICgoUClbMF0gPj0gJ2EnICYmIChQKVswXSA8PSAneicpKSAmJiAgIFwKKyAgICAoUClbMV0gPT0gJzonKQorICNkZWZpbmUgRklMRVNZU1RFTV9QUkVGSVhfTEVOKFApIChIQVNfREVWSUNFKFApID8gMiA6IDApCistI2RlZmluZSBJU1NMQVNIKEMpICgoQykgPT0gJy8nIHx8IChDKSA9PSAnXFwnKQorIAorICNlbHNlCisgCitAQCAtNDgsNyArNDcsNyBAQCBpbnQgc3ltbGluayhjb25zdCBjaGFyICp0YXJnZXQsIGNvbnN0IGNoYXIgKmxpbmtwYXRoKTsgLy8gbmVlZGVkIG9uIExpbnV4CisgI2VuZGlmCisgCisgI2lmbmRlZiBJU1NMQVNICistI2RlZmluZSBJU1NMQVNIKEMpICgoQykgPT0gJy8nKQorKyNkZWZpbmUgSVNTTEFTSChDKSAoKEMpID09ICcvJyB8fCAoQykgPT0gJ1xcJykKKyAjZW5kaWYKKyAKKyAjZGVmaW5lIENMRUFOVVAocHRyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorQEAgLTc4LDI2ICs3NywzNCBAQCBzdGF0aWMgY29uc3QgY2hhciAqYmFzZV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpIHsKKyAgIHJldHVybiBiYXNlOworIH0KKyAKKy1zdGF0aWMgaW50IG1rcGF0aChjb25zdCBjaGFyICpwYXRoKSB7CistICBjaGFyIGNvbnN0ICpwOworK3N0YXRpYyBpbnQgbWtwYXRoKGNoYXIgKnBhdGgpIHsKKysgIGNoYXIgKnA7CisgICBjaGFyIG5wYXRoW01BWF9QQVRIICsgMV07CisgICBpbnQgbGVuID0gMDsKKyAgIGludCBoYXNfZGV2aWNlID0gSEFTX0RFVklDRShwYXRoKTsKKyAKKyAgIG1lbXNldChucGF0aCwgMCwgTUFYX1BBVEggKyAxKTsKKy0KKy0jaWZkZWYgX1dJTjMyCistICAvLyBvbmx5IG9uIHdpbmRvd3MgZml4IHRoZSBwYXRoCistICBucGF0aFswXSA9IHBhdGhbMF07CistICBucGF0aFsxXSA9IHBhdGhbMV07CistICBsZW4gPSAyOworLSNlbmRpZiAvLyBfV0lOMzIKKy0gICAgCisrICBpZiAoaGFzX2RldmljZSkgeworKyAgICAvLyBvbmx5IG9uIHdpbmRvd3MKKysgICAgbnBhdGhbMF0gPSBwYXRoWzBdOworKyAgICBucGF0aFsxXSA9IHBhdGhbMV07CisrICAgIGxlbiA9IDI7CisrICB9CisgICBmb3IgKHAgPSBwYXRoICsgbGVuOyAqcCAmJiBsZW4gPCBNQVhfUEFUSDsgcCsrKSB7CisgICAgIGlmIChJU1NMQVNIKCpwKSAmJiAoKCFoYXNfZGV2aWNlICYmIGxlbiA+IDApIHx8IChoYXNfZGV2aWNlICYmIGxlbiA+IDIpKSkgeworLSAgICAgIGlmIChNS0RJUihucGF0aCkgPT0gLTEpCistICAgICAgICBpZiAoZXJybm8gIT0gRUVYSVNUKQorKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1dJTjMyX18pIHx8IGRlZmluZWQoX01TQ19WRVIpIHx8ICAgICAgICAgICAgICBcCisrICAgIGRlZmluZWQoX19NSU5HVzMyX18pCisrI2Vsc2UKKysgICAgICBpZiAoJ1xcJyA9PSAqcCkgeworKyAgICAgICAgKnAgPSAnLyc7CisrICAgICAgfQorKyNlbmRpZgorKworKyAgICAgIGlmIChNS0RJUihucGF0aCkgPT0gLTEpIHsKKysgICAgICAgIGlmIChlcnJubyAhPSBFRVhJU1QpIHsKKyAgICAgICAgICAgcmV0dXJuIC0xOworKyAgICAgICAgfQorKyAgICAgIH0KKyAgICAgfQorICAgICBucGF0aFtsZW4rK10gPSAqcDsKKyAgIH0KK0BAIC0yNzksNyArMjg2LDE0IEBAIGludCB6aXBfZW50cnlfb3BlbihzdHJ1Y3QgemlwX3QgKnppcCwgY29uc3QgY2hhciAqZW50cnluYW1lKSB7CisgICB6aXAtPmVudHJ5LmhlYWRlcl9vZmZzZXQgPSB6aXAtPmFyY2hpdmUubV9hcmNoaXZlX3NpemU7CisgICBtZW1zZXQoemlwLT5lbnRyeS5oZWFkZXIsIDAsIE1aX1pJUF9MT0NBTF9ESVJfSEVBREVSX1NJWkUgKiBzaXplb2YobXpfdWludDgpKTsKKyAgIHppcC0+ZW50cnkubWV0aG9kID0gMDsKKysKKysgIC8vIFVOSVggb3IgQVBQTEUKKysjaWYgTVpfUExBVEZPUk0gPT0gMyB8fCBNWl9QTEFURk9STSA9PSAxOQorKyAgLy8gcmVndWxhciBmaWxlIHdpdGggcnctci0tci0tIHBlcnNtaXNzaW9ucworKyAgemlwLT5lbnRyeS5leHRlcm5hbF9hdHRyID0gKG16X3VpbnQzMikoMDEwMDY0NCkgPDwgMTY7CisrI2Vsc2UKKyAgIHppcC0+ZW50cnkuZXh0ZXJuYWxfYXR0ciA9IDA7CisrI2VuZGlmCisgCisgICBudW1fYWxpZ25tZW50X3BhZGRpbmdfYnl0ZXMgPQorICAgICAgIG16X3ppcF93cml0ZXJfY29tcHV0ZV9wYWRkaW5nX25lZWRlZF9mb3JfZmlsZV9hbGlnbm1lbnQocHppcCk7CitAQCAtNjYwLDcgKzY3NCw3IEBAIHNzaXplX3QgemlwX2VudHJ5X25vYWxsb2NyZWFkKHN0cnVjdCB6aXBfdCAqemlwLCB2b2lkICpidWYsIHNpemVfdCBidWZzaXplKSB7CisgICB9CisgCisgICBpZiAoIW16X3ppcF9yZWFkZXJfZXh0cmFjdF90b19tZW1fbm9fYWxsb2MocHppcCwgKG16X3VpbnQpemlwLT5lbnRyeS5pbmRleCwKKy0gIGJ1ZiwgYnVmc2l6ZSwgMCwgTlVMTCwgIDApKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCBidWZzaXplLCAwLCBOVUxMLCAwKSkgeworICAgICByZXR1cm4gLTE7CisgICB9CisgCitAQCAtNjcwLDEwICs2ODQsNyBAQCBzc2l6ZV90IHppcF9lbnRyeV9ub2FsbG9jcmVhZChzdHJ1Y3QgemlwX3QgKnppcCwgdm9pZCAqYnVmLCBzaXplX3QgYnVmc2l6ZSkgeworIGludCB6aXBfZW50cnlfZnJlYWQoc3RydWN0IHppcF90ICp6aXAsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKSB7CisgICBtel96aXBfYXJjaGl2ZSAqcHppcCA9IE5VTEw7CisgICBtel91aW50IGlkeDsKKy0jaWYgZGVmaW5lZChfTVNDX1ZFUikKKy0jZWxzZQorICAgbXpfdWludDMyIHhhdHRyID0gMDsKKy0jZW5kaWYKKyAgIG16X3ppcF9hcmNoaXZlX2ZpbGVfc3RhdCBpbmZvOworIAorICAgaWYgKCF6aXApIHsKK0BAIC04NzUsMTIgKzg4NiwxOSBAQCBpbnQgemlwX2V4dHJhY3QoY29uc3QgY2hhciAqemlwbmFtZSwgY29uc3QgY2hhciAqZGlyLAorICAgICAgIGdvdG8gb3V0OworICAgICB9CisgCistICAgIGlmICgoKChpbmZvLm1fdmVyc2lvbl9tYWRlX2J5ID4+IDgpID09IDMpIHx8ICgoaW5mby5tX3ZlcnNpb25fbWFkZV9ieSA+PiA4KSA9PSAxOSkpIC8vIGlmIHppcCBpcyBwcm9kdWNlZCBvbiBVbml4IG9yIG1hY09TICgzIGFuZCAxOSBmcm9tIHNlY3Rpb24gNC40LjIuMiBvZiB6aXAgc3RhbmRhcmQpCistICAgICAgICAmJiBpbmZvLm1fZXh0ZXJuYWxfYXR0ciAmICgweDIwIDw8IDI0KSkgeyAvLyBhbmQgaGFzIHN5bSBsaW5rIGF0dHJpYnV0ZSAoMHg4MCBpcyBmaWxlLCAweDQwIGlzIGRpcmVjdG9yeSkKKysgICAgaWYgKCgoKGluZm8ubV92ZXJzaW9uX21hZGVfYnkgPj4gOCkgPT0gMykgfHwKKysgICAgICAgICAoKGluZm8ubV92ZXJzaW9uX21hZGVfYnkgPj4gOCkgPT0KKysgICAgICAgICAgMTkpKSAvLyBpZiB6aXAgaXMgcHJvZHVjZWQgb24gVW5peCBvciBtYWNPUyAoMyBhbmQgMTkgZnJvbQorKyAgICAgICAgICAgICAgIC8vIHNlY3Rpb24gNC40LjIuMiBvZiB6aXAgc3RhbmRhcmQpCisrICAgICAgICAmJiBpbmZvLm1fZXh0ZXJuYWxfYXR0ciAmCisrICAgICAgICAgICAgICAgKDB4MjAgPDwgMjQpKSB7IC8vIGFuZCBoYXMgc3ltIGxpbmsgYXR0cmlidXRlICgweDgwIGlzIGZpbGUsIDB4NDAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgZGlyZWN0b3J5KQorICNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1dJTjMyX18pIHx8IGRlZmluZWQoX01TQ19WRVIpIHx8ICAgICAgICAgICAgICBcCisgICAgIGRlZmluZWQoX19NSU5HVzMyX18pCistI2Vsc2UgICAgICAKKy0gICAgICBpZiAoaW5mby5tX3VuY29tcF9zaXplID4gTUFYX1BBVEggfHwgIW16X3ppcF9yZWFkZXJfZXh0cmFjdF90b19tZW1fbm9fYWxsb2MoJnppcF9hcmNoaXZlLCBpLCBzeW1saW5rX3RvLCBNQVhfUEFUSCwgMCwgTlVMTCwgMCkpIHsKKysjZWxzZQorKyAgICAgIGlmIChpbmZvLm1fdW5jb21wX3NpemUgPiBNQVhfUEFUSCB8fAorKyAgICAgICAgICAhbXpfemlwX3JlYWRlcl9leHRyYWN0X3RvX21lbV9ub19hbGxvYygmemlwX2FyY2hpdmUsIGksIHN5bWxpbmtfdG8sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWF9QQVRILCAwLCBOVUxMLCAwKSkgeworICAgICAgICAgZ290byBvdXQ7CisgICAgICAgfQorICAgICAgIHN5bWxpbmtfdG9baW5mby5tX3VuY29tcF9zaXplXSA9ICdcMCc7CitkaWZmIC0tZ2l0IGEvY29udHJpYi96aXAvc3JjL3ppcC5oIGIvY29udHJpYi96aXAvc3JjL3ppcC5oCitpbmRleCA1ZjM5ZGY1MC4uYTQ4ZDY0ZDYgMTAwNjQ0CistLS0gYS9jb250cmliL3ppcC9zcmMvemlwLmgKKysrKyBiL2NvbnRyaWIvemlwL3NyYy96aXAuaAorQEAgLTIwLDI0MSArMjAsMjQwIEBAIGV4dGVybiAiQyIgeworICNlbmRpZgorIAorICNpZiAhZGVmaW5lZChfU1NJWkVfVF9ERUZJTkVEKSAmJiAhZGVmaW5lZChfU1NJWkVfVF9ERUZJTkVEXykgJiYgICAgICAgICAgICAgICBcCistICAgICFkZWZpbmVkKF9TU0laRV9UKSAmJiAhZGVmaW5lZChfU1NJWkVfVF8pICYmICFkZWZpbmVkKF9fc3NpemVfdF9kZWZpbmVkKQorLSNkZWZpbmUgX1NTSVpFX1QKKysgICAgIWRlZmluZWQoX19ERUZJTkVEX3NzaXplX3QpICYmICFkZWZpbmVkKF9fc3NpemVfdF9kZWZpbmVkKSAmJiAgICAgICAgICAgICAgXAorKyAgICAhZGVmaW5lZChfU1NJWkVfVCkgJiYgIWRlZmluZWQoX1NTSVpFX1RfKQorKworIC8vIDY0LWJpdCBXaW5kb3dzIGlzIHRoZSBvbmx5IG1haW5zdHJlYW0gcGxhdGZvcm0KKyAvLyB3aGVyZSBzaXplb2YobG9uZykgIT0gc2l6ZW9mKHZvaWQqKQorICNpZmRlZiBfV0lONjQKKy10eXBlZGVmIGxvbmcgbG9uZyAgc3NpemVfdDsgIC8qIGJ5dGUgY291bnQgb3IgZXJyb3IgKi8KKyt0eXBlZGVmIGxvbmcgbG9uZyBzc2l6ZV90OyAvKiBieXRlIGNvdW50IG9yIGVycm9yICovCisgI2Vsc2UKKy10eXBlZGVmIGxvbmcgIHNzaXplX3Q7ICAvKiBieXRlIGNvdW50IG9yIGVycm9yICovCisrdHlwZWRlZiBsb25nIHNzaXplX3Q7IC8qIGJ5dGUgY291bnQgb3IgZXJyb3IgKi8KKyAjZW5kaWYKKysKKysjZGVmaW5lIF9TU0laRV9UX0RFRklORUQKKysjZGVmaW5lIF9TU0laRV9UX0RFRklORURfCisrI2RlZmluZSBfX0RFRklORURfc3NpemVfdAorKyNkZWZpbmUgX19zc2l6ZV90X2RlZmluZWQKKysjZGVmaW5lIF9TU0laRV9UCisrI2RlZmluZSBfU1NJWkVfVF8KKysKKyAjZW5kaWYKKyAKKyAjaWZuZGVmIE1BWF9QQVRICisgI2RlZmluZSBNQVhfUEFUSCAzMjc2NyAvKiAjIGNoYXJzIGluIGEgcGF0aCBuYW1lIGluY2x1ZGluZyBOVUxMICovCisgI2VuZGlmCisgCisrLyoqCisrICogQG1haW5wYWdlCisrICoKKysgKiBEb2N1bWVuYXRpb24gZm9yIEByZWYgemlwLgorKyAqLworKworKy8qKgorKyAqIEBhZGR0b2dyb3VwIHppcAorKyAqIEB7CisrICovCisrCisrLyoqCisrICogRGVmYXVsdCB6aXAgY29tcHJlc3Npb24gbGV2ZWwuCisrICovCisrCisgI2RlZmluZSBaSVBfREVGQVVMVF9DT01QUkVTU0lPTl9MRVZFTCA2CisgCistLyoKKy0gIFRoaXMgZGF0YSBzdHJ1Y3R1cmUgaXMgdXNlZCB0aHJvdWdob3V0IHRoZSBsaWJyYXJ5IHRvIHJlcHJlc2VudCB6aXAgYXJjaGl2ZQorLSAgLSBmb3J3YXJkIGRlY2xhcmF0aW9uLgorLSovCisrLyoqCisrICogQHN0cnVjdCB6aXBfdAorKyAqCisrICogVGhpcyBkYXRhIHN0cnVjdHVyZSBpcyB1c2VkIHRocm91Z2hvdXQgdGhlIGxpYnJhcnkgdG8gcmVwcmVzZW50IHppcCBhcmNoaXZlIC0KKysgKiBmb3J3YXJkIGRlY2xhcmF0aW9uLgorKyAqLworIHN0cnVjdCB6aXBfdDsKKyAKKy0vKgorLSAgT3BlbnMgemlwIGFyY2hpdmUgd2l0aCBjb21wcmVzc2lvbiBsZXZlbCB1c2luZyB0aGUgZ2l2ZW4gbW9kZS4KKy0KKy0gIEFyZ3M6CistICAgIHppcG5hbWU6IHppcCBhcmNoaXZlIGZpbGUgbmFtZS4KKy0gICAgbGV2ZWw6IGNvbXByZXNzaW9uIGxldmVsICgwLTkgYXJlIHRoZSBzdGFuZGFyZCB6bGliLXN0eWxlIGxldmVscykuCistICAgIG1vZGU6IGZpbGUgYWNjZXNzIG1vZGUuCistICAgICAgICAncic6IG9wZW5zIGEgZmlsZSBmb3IgcmVhZGluZy9leHRyYWN0aW5nICh0aGUgZmlsZSBtdXN0IGV4aXN0cykuCistICAgICAgICAndyc6IGNyZWF0ZXMgYW4gZW1wdHkgZmlsZSBmb3Igd3JpdGluZy4KKy0gICAgICAgICdhJzogYXBwZW5kcyB0byBhbiBleGlzdGluZyBhcmNoaXZlLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHppcCBhcmNoaXZlIGhhbmRsZXIgb3IgTlVMTCBvbiBlcnJvcgorLSovCisrLyoqCisrICogT3BlbnMgemlwIGFyY2hpdmUgd2l0aCBjb21wcmVzc2lvbiBsZXZlbCB1c2luZyB0aGUgZ2l2ZW4gbW9kZS4KKysgKgorKyAqIEBwYXJhbSB6aXBuYW1lIHppcCBhcmNoaXZlIGZpbGUgbmFtZS4KKysgKiBAcGFyYW0gbGV2ZWwgY29tcHJlc3Npb24gbGV2ZWwgKDAtOSBhcmUgdGhlIHN0YW5kYXJkIHpsaWItc3R5bGUgbGV2ZWxzKS4KKysgKiBAcGFyYW0gbW9kZSBmaWxlIGFjY2VzcyBtb2RlLgorKyAqICAgICAgICAtICdyJzogb3BlbnMgYSBmaWxlIGZvciByZWFkaW5nL2V4dHJhY3RpbmcgKHRoZSBmaWxlIG11c3QgZXhpc3RzKS4KKysgKiAgICAgICAgLSAndyc6IGNyZWF0ZXMgYW4gZW1wdHkgZmlsZSBmb3Igd3JpdGluZy4KKysgKiAgICAgICAgLSAnYSc6IGFwcGVuZHMgdG8gYW4gZXhpc3RpbmcgYXJjaGl2ZS4KKysgKgorKyAqIEByZXR1cm4gdGhlIHppcCBhcmNoaXZlIGhhbmRsZXIgb3IgTlVMTCBvbiBlcnJvcgorKyAqLworIGV4dGVybiBzdHJ1Y3QgemlwX3QgKnppcF9vcGVuKGNvbnN0IGNoYXIgKnppcG5hbWUsIGludCBsZXZlbCwgY2hhciBtb2RlKTsKKyAKKy0vKgorLSAgQ2xvc2VzIHRoZSB6aXAgYXJjaGl2ZSwgcmVsZWFzZXMgcmVzb3VyY2VzIC0gYWx3YXlzIGZpbmFsaXplLgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLSovCisrLyoqCisrICogQ2xvc2VzIHRoZSB6aXAgYXJjaGl2ZSwgcmVsZWFzZXMgcmVzb3VyY2VzIC0gYWx3YXlzIGZpbmFsaXplLgorKyAqCisrICogQHBhcmFtIHppcCB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqLworIGV4dGVybiB2b2lkIHppcF9jbG9zZShzdHJ1Y3QgemlwX3QgKnppcCk7CisgCistLyoKKy0gIE9wZW5zIGFuIGVudHJ5IGJ5IG5hbWUgaW4gdGhlIHppcCBhcmNoaXZlLgorLSAgRm9yIHppcCBhcmNoaXZlIG9wZW5lZCBpbiAndycgb3IgJ2EnIG1vZGUgdGhlIGZ1bmN0aW9uIHdpbGwgYXBwZW5kCistICBhIG5ldyBlbnRyeS4gSW4gcmVhZG9ubHkgbW9kZSB0aGUgZnVuY3Rpb24gdHJpZXMgdG8gbG9jYXRlIHRoZSBlbnRyeQorLSAgaW4gZ2xvYmFsIGRpY3Rpb25hcnkuCistCistICBBcmdzOgorLSAgICB6aXA6IHppcCBhcmNoaXZlIGhhbmRsZXIuCistICAgIGVudHJ5bmFtZTogYW4gZW50cnkgbmFtZSBpbiBsb2NhbCBkaWN0aW9uYXJ5LgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBPcGVucyBhbiBlbnRyeSBieSBuYW1lIGluIHRoZSB6aXAgYXJjaGl2ZS4KKysgKgorKyAqIEZvciB6aXAgYXJjaGl2ZSBvcGVuZWQgaW4gJ3cnIG9yICdhJyBtb2RlIHRoZSBmdW5jdGlvbiB3aWxsIGFwcGVuZAorKyAqIGEgbmV3IGVudHJ5LiBJbiByZWFkb25seSBtb2RlIHRoZSBmdW5jdGlvbiB0cmllcyB0byBsb2NhdGUgdGhlIGVudHJ5CisrICogaW4gZ2xvYmFsIGRpY3Rpb25hcnkuCisrICoKKysgKiBAcGFyYW0gemlwIHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICogQHBhcmFtIGVudHJ5bmFtZSBhbiBlbnRyeSBuYW1lIGluIGxvY2FsIGRpY3Rpb25hcnkuCisrICoKKysgKiBAcmV0dXJuIHRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorKyAqLworIGV4dGVybiBpbnQgemlwX2VudHJ5X29wZW4oc3RydWN0IHppcF90ICp6aXAsIGNvbnN0IGNoYXIgKmVudHJ5bmFtZSk7CisgCistLyoKKy0gIE9wZW5zIGEgbmV3IGVudHJ5IGJ5IGluZGV4IGluIHRoZSB6aXAgYXJjaGl2ZS4KKy0gIFRoaXMgZnVuY3Rpb24gaXMgb25seSB2YWxpZCBpZiB6aXAgYXJjaGl2ZSB3YXMgb3BlbmVkIGluICdyJyAocmVhZG9ubHkpIG1vZGUuCistCistICBBcmdzOgorLSAgICB6aXA6IHppcCBhcmNoaXZlIGhhbmRsZXIuCistICAgIGluZGV4OiBpbmRleCBpbiBsb2NhbCBkaWN0aW9uYXJ5LgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBPcGVucyBhIG5ldyBlbnRyeSBieSBpbmRleCBpbiB0aGUgemlwIGFyY2hpdmUuCisrICoKKysgKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdmFsaWQgaWYgemlwIGFyY2hpdmUgd2FzIG9wZW5lZCBpbiAncicgKHJlYWRvbmx5KSBtb2RlLgorKyAqCisrICogQHBhcmFtIHppcCB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqIEBwYXJhbSBpbmRleCBpbmRleCBpbiBsb2NhbCBkaWN0aW9uYXJ5LgorKyAqCisrICogQHJldHVybiB0aGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKysgKi8KKyBleHRlcm4gaW50IHppcF9lbnRyeV9vcGVuYnlpbmRleChzdHJ1Y3QgemlwX3QgKnppcCwgaW50IGluZGV4KTsKKyAKKy0vKgorLSAgQ2xvc2VzIGEgemlwIGVudHJ5LCBmbHVzaGVzIGJ1ZmZlciBhbmQgcmVsZWFzZXMgcmVzb3VyY2VzLgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBDbG9zZXMgYSB6aXAgZW50cnksIGZsdXNoZXMgYnVmZmVyIGFuZCByZWxlYXNlcyByZXNvdXJjZXMuCisrICoKKysgKiBAcGFyYW0gemlwIHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICoKKysgKiBAcmV0dXJuIHRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorKyAqLworIGV4dGVybiBpbnQgemlwX2VudHJ5X2Nsb3NlKHN0cnVjdCB6aXBfdCAqemlwKTsKKyAKKy0vKgorLSAgUmV0dXJucyBhIGxvY2FsIG5hbWUgb2YgdGhlIGN1cnJlbnQgemlwIGVudHJ5LgorLSAgVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIHVzZXIncyBlbnRyeSBuYW1lIGFuZCBsb2NhbCBlbnRyeSBuYW1lCistICBpcyBvcHRpb25hbCByZWxhdGl2ZSBwYXRoLgorLSAgRm9sbG93aW5nIC5aSVAgRmlsZSBGb3JtYXQgU3BlY2lmaWNhdGlvbiAtIHRoZSBwYXRoIHN0b3JlZCBNVVNUIG5vdCBjb250YWluCistICBhIGRyaXZlIG9yIGRldmljZSBsZXR0ZXIsIG9yIGEgbGVhZGluZyBzbGFzaC4KKy0gIEFsbCBzbGFzaGVzIE1VU1QgYmUgZm9yd2FyZCBzbGFzaGVzICcvJyBhcyBvcHBvc2VkIHRvIGJhY2t3YXJkcyBzbGFzaGVzICdcJworLSAgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBBbWlnYSBhbmQgVU5JWCBmaWxlIHN5c3RlbXMgZXRjLgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgemlwIGVudHJ5IG5hbWUsIG9yIE5VTEwgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBSZXR1cm5zIGEgbG9jYWwgbmFtZSBvZiB0aGUgY3VycmVudCB6aXAgZW50cnkuCisrICoKKysgKiBUaGUgbWFpbiBkaWZmZXJlbmNlIGJldHdlZW4gdXNlcidzIGVudHJ5IG5hbWUgYW5kIGxvY2FsIGVudHJ5IG5hbWUKKysgKiBpcyBvcHRpb25hbCByZWxhdGl2ZSBwYXRoLgorKyAqIEZvbGxvd2luZyAuWklQIEZpbGUgRm9ybWF0IFNwZWNpZmljYXRpb24gLSB0aGUgcGF0aCBzdG9yZWQgTVVTVCBub3QgY29udGFpbgorKyAqIGEgZHJpdmUgb3IgZGV2aWNlIGxldHRlciwgb3IgYSBsZWFkaW5nIHNsYXNoLgorKyAqIEFsbCBzbGFzaGVzIE1VU1QgYmUgZm9yd2FyZCBzbGFzaGVzICcvJyBhcyBvcHBvc2VkIHRvIGJhY2t3YXJkcyBzbGFzaGVzICdcJworKyAqIGZvciBjb21wYXRpYmlsaXR5IHdpdGggQW1pZ2EgYW5kIFVOSVggZmlsZSBzeXN0ZW1zIGV0Yy4KKysgKgorKyAqIEBwYXJhbSB6aXA6IHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICoKKysgKiBAcmV0dXJuIHRoZSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IHppcCBlbnRyeSBuYW1lLCBvciBOVUxMIG9uIGVycm9yLgorKyAqLworIGV4dGVybiBjb25zdCBjaGFyICp6aXBfZW50cnlfbmFtZShzdHJ1Y3QgemlwX3QgKnppcCk7CisgCistLyoKKy0gIFJldHVybnMgYW4gaW5kZXggb2YgdGhlIGN1cnJlbnQgemlwIGVudHJ5LgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIGluZGV4IG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKy0qLworKy8qKgorKyAqIFJldHVybnMgYW4gaW5kZXggb2YgdGhlIGN1cnJlbnQgemlwIGVudHJ5LgorKyAqCisrICogQHBhcmFtIHppcCB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqCisrICogQHJldHVybiB0aGUgaW5kZXggb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorKyAqLworIGV4dGVybiBpbnQgemlwX2VudHJ5X2luZGV4KHN0cnVjdCB6aXBfdCAqemlwKTsKKyAKKy0vKgorLSAgRGV0ZXJtaW5lcyBpZiB0aGUgY3VycmVudCB6aXAgZW50cnkgaXMgYSBkaXJlY3RvcnkgZW50cnkuCistCistICBBcmdzOgorLSAgICB6aXA6IHppcCBhcmNoaXZlIGhhbmRsZXIuCistCistICBSZXR1cm5zOgorLSAgICBUaGUgcmV0dXJuIGNvZGUgLSAxICh0cnVlKSwgMCAoZmFsc2UpLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBEZXRlcm1pbmVzIGlmIHRoZSBjdXJyZW50IHppcCBlbnRyeSBpcyBhIGRpcmVjdG9yeSBlbnRyeS4KKysgKgorKyAqIEBwYXJhbSB6aXAgemlwIGFyY2hpdmUgaGFuZGxlci4KKysgKgorKyAqIEByZXR1cm4gdGhlIHJldHVybiBjb2RlIC0gMSAodHJ1ZSksIDAgKGZhbHNlKSwgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uCisrICogICAgICAgICBlcnJvci4KKysgKi8KKyBleHRlcm4gaW50IHppcF9lbnRyeV9pc2RpcihzdHJ1Y3QgemlwX3QgKnppcCk7CisgCistLyoKKy0gIFJldHVybnMgYW4gdW5jb21wcmVzc2VkIHNpemUgb2YgdGhlIGN1cnJlbnQgemlwIGVudHJ5LgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHVuY29tcHJlc3NlZCBzaXplIGluIGJ5dGVzLgorLSovCisrLyoqCisrICogUmV0dXJucyBhbiB1bmNvbXByZXNzZWQgc2l6ZSBvZiB0aGUgY3VycmVudCB6aXAgZW50cnkuCisrICoKKysgKiBAcGFyYW0gemlwIHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICoKKysgKiBAcmV0dXJuIHRoZSB1bmNvbXByZXNzZWQgc2l6ZSBpbiBieXRlcy4KKysgKi8KKyBleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIHppcF9lbnRyeV9zaXplKHN0cnVjdCB6aXBfdCAqemlwKTsKKyAKKy0vKgorLSAgUmV0dXJucyBDUkMtMzIgY2hlY2tzdW0gb2YgdGhlIGN1cnJlbnQgemlwIGVudHJ5LgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIENSQy0zMiBjaGVja3N1bS4KKy0qLworKy8qKgorKyAqIFJldHVybnMgQ1JDLTMyIGNoZWNrc3VtIG9mIHRoZSBjdXJyZW50IHppcCBlbnRyeS4KKysgKgorKyAqIEBwYXJhbSB6aXAgemlwIGFyY2hpdmUgaGFuZGxlci4KKysgKgorKyAqIEByZXR1cm4gdGhlIENSQy0zMiBjaGVja3N1bS4KKysgKi8KKyBleHRlcm4gdW5zaWduZWQgaW50IHppcF9lbnRyeV9jcmMzMihzdHJ1Y3QgemlwX3QgKnppcCk7CisgCistLyoKKy0gIENvbXByZXNzZXMgYW4gaW5wdXQgYnVmZmVyIGZvciB0aGUgY3VycmVudCB6aXAgZW50cnkuCistCistICBBcmdzOgorLSAgICB6aXA6IHppcCBhcmNoaXZlIGhhbmRsZXIuCistICAgIGJ1ZjogaW5wdXQgYnVmZmVyLgorLSAgICBidWZzaXplOiBpbnB1dCBidWZmZXIgc2l6ZSAoaW4gYnl0ZXMpLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBDb21wcmVzc2VzIGFuIGlucHV0IGJ1ZmZlciBmb3IgdGhlIGN1cnJlbnQgemlwIGVudHJ5LgorKyAqCisrICogQHBhcmFtIHppcCB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqIEBwYXJhbSBidWYgaW5wdXQgYnVmZmVyLgorKyAqIEBwYXJhbSBidWZzaXplIGlucHV0IGJ1ZmZlciBzaXplIChpbiBieXRlcykuCisrICoKKysgKiBAcmV0dXJuIHRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorKyAqLworIGV4dGVybiBpbnQgemlwX2VudHJ5X3dyaXRlKHN0cnVjdCB6aXBfdCAqemlwLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBidWZzaXplKTsKKyAKKy0vKgorLSAgQ29tcHJlc3NlcyBhIGZpbGUgZm9yIHRoZSBjdXJyZW50IHppcCBlbnRyeS4KKy0KKy0gIEFyZ3M6CistICAgIHppcDogemlwIGFyY2hpdmUgaGFuZGxlci4KKy0gICAgZmlsZW5hbWU6IGlucHV0IGZpbGUuCistCistICBSZXR1cm5zOgorLSAgICBUaGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKy0qLworKy8qKgorKyAqIENvbXByZXNzZXMgYSBmaWxlIGZvciB0aGUgY3VycmVudCB6aXAgZW50cnkuCisrICoKKysgKiBAcGFyYW0gemlwIHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICogQHBhcmFtIGZpbGVuYW1lIGlucHV0IGZpbGUuCisrICoKKysgKiBAcmV0dXJuIHRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorKyAqLworIGV4dGVybiBpbnQgemlwX2VudHJ5X2Z3cml0ZShzdHJ1Y3QgemlwX3QgKnppcCwgY29uc3QgY2hhciAqZmlsZW5hbWUpOworIAorLS8qCistICBFeHRyYWN0cyB0aGUgY3VycmVudCB6aXAgZW50cnkgaW50byBvdXRwdXQgYnVmZmVyLgorLSAgVGhlIGZ1bmN0aW9uIGFsbG9jYXRlcyBzdWZmaWNpZW50IG1lbW9yeSBmb3IgYSBvdXRwdXQgYnVmZmVyLgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLSAgICBidWY6IG91dHB1dCBidWZmZXIuCistICAgIGJ1ZnNpemU6IG91dHB1dCBidWZmZXIgc2l6ZSAoaW4gYnl0ZXMpLgorLQorLSAgTm90ZToKKy0gICAgLSByZW1lbWJlciB0byByZWxlYXNlIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIGEgb3V0cHV0IGJ1ZmZlci4KKy0gICAgLSBmb3IgbGFyZ2UgZW50cmllcywgcGxlYXNlIHRha2UgYSBsb29rIGF0IHppcF9lbnRyeV9leHRyYWN0IGZ1bmN0aW9uLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gdGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFkIG9uIHN1Y2Nlc3MuCistICAgIE90aGVyd2lzZSBhIC0xIG9uIGVycm9yLgorLSovCisrLyoqCisrICogRXh0cmFjdHMgdGhlIGN1cnJlbnQgemlwIGVudHJ5IGludG8gb3V0cHV0IGJ1ZmZlci4KKysgKgorKyAqIFRoZSBmdW5jdGlvbiBhbGxvY2F0ZXMgc3VmZmljaWVudCBtZW1vcnkgZm9yIGEgb3V0cHV0IGJ1ZmZlci4KKysgKgorKyAqIEBwYXJhbSB6aXAgemlwIGFyY2hpdmUgaGFuZGxlci4KKysgKiBAcGFyYW0gYnVmIG91dHB1dCBidWZmZXIuCisrICogQHBhcmFtIGJ1ZnNpemUgb3V0cHV0IGJ1ZmZlciBzaXplIChpbiBieXRlcykuCisrICoKKysgKiBAbm90ZSByZW1lbWJlciB0byByZWxlYXNlIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIGEgb3V0cHV0IGJ1ZmZlci4KKysgKiAgICAgICBmb3IgbGFyZ2UgZW50cmllcywgcGxlYXNlIHRha2UgYSBsb29rIGF0IHppcF9lbnRyeV9leHRyYWN0IGZ1bmN0aW9uLgorKyAqCisrICogQHJldHVybiB0aGUgcmV0dXJuIGNvZGUgLSB0aGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHJlYWQgb24gc3VjY2Vzcy4KKysgKiAgICAgICAgIE90aGVyd2lzZSBhIC0xIG9uIGVycm9yLgorKyAqLworIGV4dGVybiBzc2l6ZV90IHppcF9lbnRyeV9yZWFkKHN0cnVjdCB6aXBfdCAqemlwLCB2b2lkICoqYnVmLCBzaXplX3QgKmJ1ZnNpemUpOworIAorLS8qCistICBFeHRyYWN0cyB0aGUgY3VycmVudCB6aXAgZW50cnkgaW50byBhIG1lbW9yeSBidWZmZXIgdXNpbmcgbm8gbWVtb3J5CistICBhbGxvY2F0aW9uLgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLSAgICBidWY6IHByZWFsbG9jYXRlZCBvdXRwdXQgYnVmZmVyLgorLSAgICBidWZzaXplOiBvdXRwdXQgYnVmZmVyIHNpemUgKGluIGJ5dGVzKS4KKy0KKy0gIE5vdGU6CistICAgIC0gZW5zdXJlIHN1cHBsaWVkIG91dHB1dCBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoLgorLSAgICAtIHppcF9lbnRyeV9zaXplIGZ1bmN0aW9uIChyZXR1cm5zIHVuY29tcHJlc3NlZCBzaXplIGZvciB0aGUgY3VycmVudCBlbnRyeSkKKy0gICAgICBjYW4gYmUgaGFuZHkgdG8gZXN0aW1hdGUgaG93IGJpZyBidWZmZXIgaXMgbmVlZGVkLgorLSAgICAtIGZvciBsYXJnZSBlbnRyaWVzLCBwbGVhc2UgdGFrZSBhIGxvb2sgYXQgemlwX2VudHJ5X2V4dHJhY3QgZnVuY3Rpb24uCistCistICBSZXR1cm5zOgorLSAgICBUaGUgcmV0dXJuIGNvZGUgLSB0aGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHJlYWQgb24gc3VjY2Vzcy4KKy0gICAgT3RoZXJ3aXNlIGEgLTEgb24gZXJyb3IgKGUuZy4gYnVmc2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoKS4KKy0qLworLWV4dGVybiBzc2l6ZV90IHppcF9lbnRyeV9ub2FsbG9jcmVhZChzdHJ1Y3QgemlwX3QgKnppcCwgdm9pZCAqYnVmLCBzaXplX3QgYnVmc2l6ZSk7CistCistLyoKKy0gIEV4dHJhY3RzIHRoZSBjdXJyZW50IHppcCBlbnRyeSBpbnRvIG91dHB1dCBmaWxlLgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLSAgICBmaWxlbmFtZTogb3V0cHV0IGZpbGUuCistCistICBSZXR1cm5zOgorLSAgICBUaGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKy0qLworKy8qKgorKyAqIEV4dHJhY3RzIHRoZSBjdXJyZW50IHppcCBlbnRyeSBpbnRvIGEgbWVtb3J5IGJ1ZmZlciB1c2luZyBubyBtZW1vcnkKKysgKiBhbGxvY2F0aW9uLgorKyAqCisrICogQHBhcmFtIHppcCB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqIEBwYXJhbSBidWYgcHJlYWxsb2NhdGVkIG91dHB1dCBidWZmZXIuCisrICogQHBhcmFtIGJ1ZnNpemUgb3V0cHV0IGJ1ZmZlciBzaXplIChpbiBieXRlcykuCisrICoKKysgKiBAbm90ZSBlbnN1cmUgc3VwcGxpZWQgb3V0cHV0IGJ1ZmZlciBpcyBsYXJnZSBlbm91Z2guCisrICogICAgICAgemlwX2VudHJ5X3NpemUgZnVuY3Rpb24gKHJldHVybnMgdW5jb21wcmVzc2VkIHNpemUgZm9yIHRoZSBjdXJyZW50CisrICogICAgICAgZW50cnkpIGNhbiBiZSBoYW5keSB0byBlc3RpbWF0ZSBob3cgYmlnIGJ1ZmZlciBpcyBuZWVkZWQuIGZvciBsYXJnZQorKyAqIGVudHJpZXMsIHBsZWFzZSB0YWtlIGEgbG9vayBhdCB6aXBfZW50cnlfZXh0cmFjdCBmdW5jdGlvbi4KKysgKgorKyAqIEByZXR1cm4gdGhlIHJldHVybiBjb2RlIC0gdGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFkIG9uIHN1Y2Nlc3MuCisrICogICAgICAgICBPdGhlcndpc2UgYSAtMSBvbiBlcnJvciAoZS5nLiBidWZzaXplIGlzIG5vdCBsYXJnZSBlbm91Z2gpLgorKyAqLworK2V4dGVybiBzc2l6ZV90IHppcF9lbnRyeV9ub2FsbG9jcmVhZChzdHJ1Y3QgemlwX3QgKnppcCwgdm9pZCAqYnVmLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnVmc2l6ZSk7CisrCisrLyoqCisrICogRXh0cmFjdHMgdGhlIGN1cnJlbnQgemlwIGVudHJ5IGludG8gb3V0cHV0IGZpbGUuCisrICoKKysgKiBAcGFyYW0gemlwIHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICogQHBhcmFtIGZpbGVuYW1lIG91dHB1dCBmaWxlLgorKyAqCisrICogQHJldHVybiB0aGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKysgKi8KKyBleHRlcm4gaW50IHppcF9lbnRyeV9mcmVhZChzdHJ1Y3QgemlwX3QgKnppcCwgY29uc3QgY2hhciAqZmlsZW5hbWUpOworIAorLS8qCistICBFeHRyYWN0cyB0aGUgY3VycmVudCB6aXAgZW50cnkgdXNpbmcgYSBjYWxsYmFjayBmdW5jdGlvbiAob25fZXh0cmFjdCkuCistCistICBBcmdzOgorLSAgICB6aXA6IHppcCBhcmNoaXZlIGhhbmRsZXIuCistICAgIG9uX2V4dHJhY3Q6IGNhbGxiYWNrIGZ1bmN0aW9uLgorLSAgICBhcmc6IG9wYXF1ZSBwb2ludGVyIChvcHRpb25hbCBhcmd1bWVudCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggeW91IGNhbiBwYXNzIHRvIHRoZSBvbl9leHRyYWN0IGNhbGxiYWNrKQorLQorLSAgIFJldHVybnM6CistICAgIFRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorKy8qKgorKyAqIEV4dHJhY3RzIHRoZSBjdXJyZW50IHppcCBlbnRyeSB1c2luZyBhIGNhbGxiYWNrIGZ1bmN0aW9uIChvbl9leHRyYWN0KS4KKysgKgorKyAqIEBwYXJhbSB6aXAgemlwIGFyY2hpdmUgaGFuZGxlci4KKysgKiBAcGFyYW0gb25fZXh0cmFjdCBjYWxsYmFjayBmdW5jdGlvbi4KKysgKiBAcGFyYW0gYXJnIG9wYXF1ZSBwb2ludGVyIChvcHRpb25hbCBhcmd1bWVudCwgd2hpY2ggeW91IGNhbiBwYXNzIHRvIHRoZQorKyAqICAgICAgICBvbl9leHRyYWN0IGNhbGxiYWNrKQorKyAqCisrICogQHJldHVybiB0aGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKyAgKi8KKyBleHRlcm4gaW50CisgemlwX2VudHJ5X2V4dHJhY3Qoc3RydWN0IHppcF90ICp6aXAsCitAQCAtMjYyLDUzICsyNjEsNDkgQEAgemlwX2VudHJ5X2V4dHJhY3Qoc3RydWN0IHppcF90ICp6aXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpLAorICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZyk7CisgCistLyoKKy0gIFJldHVybnMgdGhlIG51bWJlciBvZiBhbGwgZW50cmllcyAoZmlsZXMgYW5kIGRpcmVjdG9yaWVzKSBpbiB0aGUgemlwIGFyY2hpdmUuCistCistICBBcmdzOgorLSAgICB6aXA6IHppcCBhcmNoaXZlIGhhbmRsZXIuCistCistICBSZXR1cm5zOgorLSAgICBUaGUgcmV0dXJuIGNvZGUgLSB0aGUgbnVtYmVyIG9mIGVudHJpZXMgb24gc3VjY2VzcywKKy0gICAgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorLSovCisrLyoqCisrICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGFsbCBlbnRyaWVzIChmaWxlcyBhbmQgZGlyZWN0b3JpZXMpIGluIHRoZSB6aXAgYXJjaGl2ZS4KKysgKgorKyAqIEBwYXJhbSB6aXAgemlwIGFyY2hpdmUgaGFuZGxlci4KKysgKgorKyAqIEByZXR1cm4gdGhlIHJldHVybiBjb2RlIC0gdGhlIG51bWJlciBvZiBlbnRyaWVzIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlcgorKyAqICAgICAgICAgKDwgMCkgb24gZXJyb3IuCisrICovCisgZXh0ZXJuIGludCB6aXBfdG90YWxfZW50cmllcyhzdHJ1Y3QgemlwX3QgKnppcCk7CisgCistLyoKKy0gIENyZWF0ZXMgYSBuZXcgYXJjaGl2ZSBhbmQgcHV0cyBmaWxlcyBpbnRvIGEgc2luZ2xlIHppcCBhcmNoaXZlLgorLQorLSAgQXJnczoKKy0gICAgemlwbmFtZTogemlwIGFyY2hpdmUgZmlsZS4KKy0gICAgZmlsZW5hbWVzOiBpbnB1dCBmaWxlcy4KKy0gICAgbGVuOiBudW1iZXIgb2YgaW5wdXQgZmlsZXMuCistCistICBSZXR1cm5zOgorLSAgICBUaGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKy0qLworKy8qKgorKyAqIENyZWF0ZXMgYSBuZXcgYXJjaGl2ZSBhbmQgcHV0cyBmaWxlcyBpbnRvIGEgc2luZ2xlIHppcCBhcmNoaXZlLgorKyAqCisrICogQHBhcmFtIHppcG5hbWUgemlwIGFyY2hpdmUgZmlsZS4KKysgKiBAcGFyYW0gZmlsZW5hbWVzIGlucHV0IGZpbGVzLgorKyAqIEBwYXJhbSBsZW46IG51bWJlciBvZiBpbnB1dCBmaWxlcy4KKysgKgorKyAqIEByZXR1cm4gdGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCisrICovCisgZXh0ZXJuIGludCB6aXBfY3JlYXRlKGNvbnN0IGNoYXIgKnppcG5hbWUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lc1tdLCBzaXplX3QgbGVuKTsKKyAKKy0vKgorLSAgRXh0cmFjdHMgYSB6aXAgYXJjaGl2ZSBmaWxlIGludG8gZGlyZWN0b3J5LgorLQorLSAgSWYgb25fZXh0cmFjdF9lbnRyeSBpcyBub3QgTlVMTCwgdGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGFmdGVyCistICBzdWNjZXNzZnVsbHkgZXh0cmFjdGVkIGVhY2ggemlwIGVudHJ5LgorLSAgUmV0dXJuaW5nIGEgbmVnYXRpdmUgdmFsdWUgZnJvbSB0aGUgY2FsbGJhY2sgd2lsbCBjYXVzZSBhYm9ydCBhbmQgcmV0dXJuIGFuCistICBlcnJvci4gVGhlIGxhc3QgYXJndW1lbnQgKHZvaWQgKmFyZykgaXMgb3B0aW9uYWwsIHdoaWNoIHlvdSBjYW4gdXNlIHRvIHBhc3MKKy0gIGRhdGEgdG8gdGhlIG9uX2V4dHJhY3RfZW50cnkgY2FsbGJhY2suCistCistICBBcmdzOgorLSAgICB6aXBuYW1lOiB6aXAgYXJjaGl2ZSBmaWxlLgorLSAgICBkaXI6IG91dHB1dCBkaXJlY3RvcnkuCistICAgIG9uX2V4dHJhY3RfZW50cnk6IG9uIGV4dHJhY3QgY2FsbGJhY2suCistICAgIGFyZzogb3BhcXVlIHBvaW50ZXIuCistCistICBSZXR1cm5zOgorLSAgICBUaGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKy0qLworKy8qKgorKyAqIEV4dHJhY3RzIGEgemlwIGFyY2hpdmUgZmlsZSBpbnRvIGRpcmVjdG9yeS4KKysgKgorKyAqIElmIG9uX2V4dHJhY3RfZW50cnkgaXMgbm90IE5VTEwsIHRoZSBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBhZnRlcgorKyAqIHN1Y2Nlc3NmdWxseSBleHRyYWN0ZWQgZWFjaCB6aXAgZW50cnkuCisrICogUmV0dXJuaW5nIGEgbmVnYXRpdmUgdmFsdWUgZnJvbSB0aGUgY2FsbGJhY2sgd2lsbCBjYXVzZSBhYm9ydCBhbmQgcmV0dXJuIGFuCisrICogZXJyb3IuIFRoZSBsYXN0IGFyZ3VtZW50ICh2b2lkICphcmcpIGlzIG9wdGlvbmFsLCB3aGljaCB5b3UgY2FuIHVzZSB0byBwYXNzCisrICogZGF0YSB0byB0aGUgb25fZXh0cmFjdF9lbnRyeSBjYWxsYmFjay4KKysgKgorKyAqIEBwYXJhbSB6aXBuYW1lIHppcCBhcmNoaXZlIGZpbGUuCisrICogQHBhcmFtIGRpciBvdXRwdXQgZGlyZWN0b3J5LgorKyAqIEBwYXJhbSBvbl9leHRyYWN0X2VudHJ5IG9uIGV4dHJhY3QgY2FsbGJhY2suCisrICogQHBhcmFtIGFyZyBvcGFxdWUgcG9pbnRlci4KKysgKgorKyAqIEByZXR1cm4gdGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCisrICovCisgZXh0ZXJuIGludCB6aXBfZXh0cmFjdChjb25zdCBjaGFyICp6aXBuYW1lLCBjb25zdCBjaGFyICpkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCpvbl9leHRyYWN0X2VudHJ5KShjb25zdCBjaGFyICpmaWxlbmFtZSwgdm9pZCAqYXJnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZyk7CisgCisrLyoqIEB9ICovCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgfQorICNlbmRpZgorZGlmZiAtLWdpdCBhL2NvbnRyaWIvemlwL3Rlc3QvQ01ha2VMaXN0cy50eHQgYi9jb250cmliL3ppcC90ZXN0L0NNYWtlTGlzdHMudHh0CitpbmRleCA5YjJhOGRiMS4uY2MwNjBiMDAgMTAwNjQ0CistLS0gYS9jb250cmliL3ppcC90ZXN0L0NNYWtlTGlzdHMudHh0CisrKysgYi9jb250cmliL3ppcC90ZXN0L0NNYWtlTGlzdHMudHh0CitAQCAtMSwxOSArMSwxNiBAQAorIGNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAyLjgpCisgCistaWYgKCIke0NNQUtFX0NfQ09NUElMRVJfSUR9IiBTVFJFUVVBTCAiR05VIiBPUiAiJHtDTUFLRV9DX0NPTVBJTEVSX0lEfSIgU1RSRVFVQUwgIkNsYW5nIiBPUiAiJHtDTUFLRV9DX0NPTVBJTEVSX0lEfSIgU1RSRVFVQUwgIkFwcGxlQ2xhbmciKQorLSAgaWYoRU5BQkxFX0NPVkVSQUdFKQorLSAgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtZyAiKQorLSAgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtTzAiKQorLSAgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtZnByb2ZpbGUtYXJjcyIpCistICAgIHNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1mdGVzdC1jb3ZlcmFnZSIpCistICAgIHNldChDTUFLRV9FWEVfTElOS0VSX0ZMQUdTICIke0NNQUtFX0VYRV9MSU5LRVJfRkxBR1N9IC0tY292ZXJhZ2UiKQorLSAgZW5kaWYoKQorLWVuZGlmICgpCistCisgIyB0ZXN0CistaW5jbHVkZV9kaXJlY3RvcmllcyguLi9zcmMpCistYWRkX2V4ZWN1dGFibGUodGVzdC5leGUgdGVzdC5jIC4uL3NyYy96aXAuYykKKy1hZGRfZXhlY3V0YWJsZSh0ZXN0X21pbml6LmV4ZSB0ZXN0X21pbml6LmMpCisrc2V0KHRlc3Rfb3V0IHRlc3Qub3V0KQorK3NldCh0ZXN0X21pbml6X291dCB0ZXN0X21pbml6Lm91dCkKKysKKythZGRfZXhlY3V0YWJsZSgke3Rlc3Rfb3V0fSB0ZXN0LmMpCisrdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7dGVzdF9vdXR9IHppcCkKKythZGRfZXhlY3V0YWJsZSgke3Rlc3RfbWluaXpfb3V0fSB0ZXN0X21pbml6LmMpCisrdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7dGVzdF9taW5pel9vdXR9IHppcCkKKysKKythZGRfdGVzdChOQU1FICR7dGVzdF9vdXR9IENPTU1BTkQgJHt0ZXN0X291dH0pCisrYWRkX3Rlc3QoTkFNRSAke3Rlc3RfbWluaXpfb3V0fSBDT01NQU5EICR7dGVzdF9taW5pel9vdXR9KQorIAorLWFkZF90ZXN0KE5BTUUgdGVzdCBDT01NQU5EIHRlc3QuZXhlKQorLWFkZF90ZXN0KE5BTUUgdGVzdF9taW5peiBDT01NQU5EIHRlc3RfbWluaXouZXhlKQorK3NldCh0ZXN0X291dCAke3Rlc3Rfb3V0fSBQQVJFTlRfU0NPUEUpCisrc2V0KHRlc3RfbWluaXpfb3V0ICR7dGVzdF9taW5pel9vdXR9IFBBUkVOVF9TQ09QRSkKK2RpZmYgLS1naXQgYS9jb250cmliL3ppcC90ZXN0L3Rlc3QuYyBiL2NvbnRyaWIvemlwL3Rlc3QvdGVzdC5jCitpbmRleCA0NTQ0MzA1My4uYTliMmRkYWIgMTAwNjQ0CistLS0gYS9jb250cmliL3ppcC90ZXN0L3Rlc3QuYworKysrIGIvY29udHJpYi96aXAvdGVzdC90ZXN0LmMKK0BAIC0yOSw2ICsyOSw4IEBACisgI2RlZmluZSBYRklMRSAiNy50eHRcMCIKKyAjZGVmaW5lIFhNT0RFIDAxMDA3NzcKKyAKKysjZGVmaW5lIFVOSVhNT0RFIDAxMDA2NDQKKysKKyAjZGVmaW5lIFVOVVNFRCh4KSAodm9pZCl4CisgCisgc3RhdGljIGludCB0b3RhbF9lbnRyaWVzID0gMDsKK0BAIC0xMDIsNyArMTA0LDggQEAgc3RhdGljIHZvaWQgdGVzdF9yZWFkKHZvaWQpIHsKKyAgIGFzc2VydCgwID09IHppcF9lbnRyeV9jbG9zZSh6aXApKTsKKyAgIGZyZWUoYnVmKTsKKyAgIGJ1ZiA9IE5VTEw7CistICAKKysgIGJ1ZnNpemUgPSAwOworKworICAgYXNzZXJ0KDAgPT0gemlwX2VudHJ5X29wZW4oemlwLCAidGVzdC90ZXN0LTIudHh0IikpOworICAgYXNzZXJ0KHN0cmxlbihURVNUREFUQTIpID09IHppcF9lbnRyeV9zaXplKHppcCkpOworICAgYXNzZXJ0KENSQzMyREFUQTIgPT0gemlwX2VudHJ5X2NyYzMyKHppcCkpOworQEAgLTEzMSw3ICsxMzQsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0X3JlYWQodm9pZCkgeworICAgYXNzZXJ0KDAgPT0gemlwX2VudHJ5X2Nsb3NlKHppcCkpOworICAgZnJlZShidWYpOworICAgYnVmID0gTlVMTDsKKy0gIAorKyAgYnVmc2l6ZSA9IDA7CisrCisgICBidWZ0bXAgPSBzdHJsZW4oVEVTVERBVEExKTsKKyAgIGJ1ZiA9IGNhbGxvYyhidWZ0bXAsIHNpemVvZihjaGFyKSk7CisgICBhc3NlcnQoMCA9PSB6aXBfZW50cnlfb3Blbih6aXAsICJ0ZXN0L3Rlc3QtMS50eHQiKSk7CitAQCAtNDMzLDYgKzQzNywzNSBAQCBzdGF0aWMgdm9pZCB0ZXN0X210aW1lKHZvaWQpIHsKKyAgIHJlbW92ZShaSVBOQU1FKTsKKyB9CisgCisrc3RhdGljIHZvaWQgdGVzdF91bml4X3Blcm1pc3Npb25zKHZvaWQpIHsKKysjaWYgZGVmaW5lZChfV0lONjQpIHx8IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fV0lOMzJfXykKKysjZWxzZQorKyAgLy8gVU5JWCBvciBBUFBMRQorKyAgc3RydWN0IE1aX0ZJTEVfU1RBVF9TVFJVQ1QgZmlsZV9zdGF0czsKKysKKysgIHJlbW92ZShaSVBOQU1FKTsKKysKKysgIHN0cnVjdCB6aXBfdCAqemlwID0gemlwX29wZW4oWklQTkFNRSwgWklQX0RFRkFVTFRfQ09NUFJFU1NJT05fTEVWRUwsICd3Jyk7CisrICBhc3NlcnQoemlwICE9IE5VTEwpOworKworKyAgYXNzZXJ0KDAgPT0gemlwX2VudHJ5X29wZW4oemlwLCBSRklMRSkpOworKyAgYXNzZXJ0KDAgPT0gemlwX2VudHJ5X3dyaXRlKHppcCwgVEVTVERBVEExLCBzdHJsZW4oVEVTVERBVEExKSkpOworKyAgYXNzZXJ0KDAgPT0gemlwX2VudHJ5X2Nsb3NlKHppcCkpOworKworKyAgemlwX2Nsb3NlKHppcCk7CisrCisrICByZW1vdmUoUkZJTEUpOworKworKyAgYXNzZXJ0KDAgPT0gemlwX2V4dHJhY3QoWklQTkFNRSwgIi4iLCBOVUxMLCBOVUxMKSk7CisrCisrICBhc3NlcnQoMCA9PSBNWl9GSUxFX1NUQVQoUkZJTEUsICZmaWxlX3N0YXRzKSk7CisrICBhc3NlcnQoVU5JWE1PREUgPT0gZmlsZV9zdGF0cy5zdF9tb2RlKTsKKysKKysgIHJlbW92ZShSRklMRSk7CisrICByZW1vdmUoWklQTkFNRSk7CisrI2VuZGlmCisrfQorKworIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAgIFVOVVNFRChhcmdjKTsKKyAgIFVOVVNFRChhcmd2KTsKK0BAIC00NTMsNiArNDg2LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworICAgdGVzdF93cml0ZV9wZXJtaXNzaW9ucygpOworICAgdGVzdF9leGVfcGVybWlzc2lvbnMoKTsKKyAgIHRlc3RfbXRpbWUoKTsKKysgIHRlc3RfdW5peF9wZXJtaXNzaW9ucygpOworIAorICAgcmVtb3ZlKFpJUE5BTUUpOworICAgcmV0dXJuIDA7CitkaWZmIC0tZ2l0IGEvY29udHJpYi96aXAvdGVzdC90ZXN0X21pbml6LmMgYi9jb250cmliL3ppcC90ZXN0L3Rlc3RfbWluaXouYworaW5kZXggZWJjMDU2NGQuLmJhYmNhZWNkIDEwMDY0NAorLS0tIGEvY29udHJpYi96aXAvdGVzdC90ZXN0X21pbml6LmMKKysrKyBiL2NvbnRyaWIvemlwL3Rlc3QvdGVzdF9taW5pei5jCitAQCAtMjMsMTYgKzIzLDM5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAgIHVpbnQgc3RlcCA9IDA7CisgICBpbnQgY21wX3N0YXR1czsKKyAgIHVMb25nIHNyY19sZW4gPSAodUxvbmcpc3RybGVuKHNfcFN0cik7CistICB1TG9uZyBjbXBfbGVuID0gY29tcHJlc3NCb3VuZChzcmNfbGVuKTsKKyAgIHVMb25nIHVuY29tcF9sZW4gPSBzcmNfbGVuOworKyAgdUxvbmcgY21wX2xlbjsKKyAgIHVpbnQ4ICpwQ21wLCAqcFVuY29tcDsKKysgIHNpemVfdCBzejsKKyAgIHVpbnQgdG90YWxfc3VjY2VlZGVkID0gMDsKKyAgICh2b2lkKWFyZ2MsICh2b2lkKWFyZ3Y7CisgCisgICBwcmludGYoIm1pbml6LmMgdmVyc2lvbjogJXNcbiIsIE1aX1ZFUlNJT04pOworIAorICAgZG8geworKyAgICBwQ21wID0gKHVpbnQ4ICopdGRlZmxfY29tcHJlc3NfbWVtX3RvX2hlYXAoc19wU3RyLCBzcmNfbGVuLCAmY21wX2xlbiwgMCk7CisrICAgIGlmICghcENtcCkgeworKyAgICAgIHByaW50ZigidGRlZmxfY29tcHJlc3NfbWVtX3RvX2hlYXAgZmFpbGVkXG4iKTsKKysgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworKyAgICB9CisrICAgIGlmIChzcmNfbGVuIDw9IGNtcF9sZW4pIHsKKysgICAgICBwcmludGYoInRkZWZsX2NvbXByZXNzX21lbV90b19oZWFwIGZhaWxlZDogZnJvbSAldSB0byAldSBieXRlc1xuIiwKKysgICAgICAgICAgICAgKG16X3VpbnQzMil1bmNvbXBfbGVuLCAobXpfdWludDMyKWNtcF9sZW4pOworKyAgICAgIGZyZWUocENtcCk7CisrICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKysgICAgfQorKworKyAgICBzeiA9IHRkZWZsX2NvbXByZXNzX21lbV90b19tZW0ocENtcCwgY21wX2xlbiwgc19wU3RyLCBzcmNfbGVuLCAwKTsKKysgICAgaWYgKHN6ICE9IGNtcF9sZW4pIHsKKysgICAgICBwcmludGYoInRkZWZsX2NvbXByZXNzX21lbV90b19tZW0gZmFpbGVkOiBleHBlY3RlZCAldSwgZ290ICV1XG4iLAorKyAgICAgICAgICAgICAobXpfdWludDMyKWNtcF9sZW4sIChtel91aW50MzIpc3opOworKyAgICAgIGZyZWUocENtcCk7CisrICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKysgICAgfQorKworICAgICAvLyBBbGxvY2F0ZSBidWZmZXJzIHRvIGhvbGQgY29tcHJlc3NlZCBhbmQgdW5jb21wcmVzc2VkIGRhdGEuCisrICAgIGZyZWUocENtcCk7CisrICAgIGNtcF9sZW4gPSBjb21wcmVzc0JvdW5kKHNyY19sZW4pOworICAgICBwQ21wID0gKG16X3VpbnQ4ICopbWFsbG9jKChzaXplX3QpY21wX2xlbik7CisgICAgIHBVbmNvbXAgPSAobXpfdWludDggKiltYWxsb2MoKHNpemVfdClzcmNfbGVuKTsKKyAgICAgaWYgKCghcENtcCkgfHwgKCFwVW5jb21wKSkgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF80LjEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi9hc3NpbXBfNC4xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NGNiZTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF80LjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLURFU0NSSVBUSU9OID0gIk9wZW4gQXNzZXQgSW1wb3J0IExpYnJhcnkgaXMgYSBwb3J0YWJsZSBPcGVuIFNvdXJjZSBsaWJyYXJ5IHRvIGltcG9ydCBcCi0gICAgICAgICAgICAgICB2YXJpb3VzIHdlbGwta25vd24gM0QgbW9kZWwgZm9ybWF0cyBpbiBhIHVuaWZvcm0gbWFubmVyLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYXNzaW1wLm9yZy8iCi1TRUNUSU9OID0gImRldmVsIgotCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIxMTllZGVmMDkxNmIwYmQ1MTFjYjNjNzMxMDc2MjcxIgotCi1ERVBFTkRTID0gInpsaWIiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9hc3NpbXAvYXNzaW1wLmdpdCIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKLQotU1JDUkVWID0gIjgwNzk5YmRiZjkwY2U2MjY0NzU2MzU4MTVlZTE4NTM3NzE4YTA1YjEiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UKLQotRVhUUkFfT0VDTUFLRSA9ICItREFTU0lNUF9CVUlMRF9BU1NJTVBfVE9PTFM9T0ZGIC1EQVNTSU1QX0JVSUxEX1RFU1RTPU9GRiAtREFTU0lNUF9MSUJfSU5TVEFMTF9ESVI9JHtiYXNlbGlifSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi9hc3NpbXBfNS4wLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wXzUuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhOGM2MmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wXzUuMC4xLmJiCkBAIC0wLDAgKzEsMjMgQEAKK0RFU0NSSVBUSU9OID0gIk9wZW4gQXNzZXQgSW1wb3J0IExpYnJhcnkgaXMgYSBwb3J0YWJsZSBPcGVuIFNvdXJjZSBsaWJyYXJ5IHRvIGltcG9ydCBcCisgICAgICAgICAgICAgICB2YXJpb3VzIHdlbGwta25vd24gM0QgbW9kZWwgZm9ybWF0cyBpbiBhIHVuaWZvcm0gbWFubmVyLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYXNzaW1wLm9yZy8iCitTRUNUSU9OID0gImRldmVsIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIxMTllZGVmMDkxNmIwYmQ1MTFjYjNjNzMxMDc2MjcxIgorCitERVBFTkRTID0gInpsaWIiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9hc3NpbXAvYXNzaW1wLmdpdDticmFuY2g9YXNzaW1wXzUuMF9yZWxlYXNlIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY2xvc2VzLWh0dHBzLWdpdGh1Yi5jb20tYXNzaW1wLWFzc2ltcC1pc3N1ZXMtMjczMy11cC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1BU1NJTVBfTElCX0lOU1RBTExfRElSLXRvLXNlYXJjaC1saWJyYXJ5LnBhdGNoIFwKKyAgICAgICAgICAgIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPihcZCsoXC5cZCspKykpIgorCitTUkNSRVYgPSAiOGYwYzZiMDRiMjI1N2E1MjBhYWFiMzg0MjFiMmUwOTAyMDRiNjlkZiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorCitFWFRSQV9PRUNNQUtFID0gIi1EQVNTSU1QX0JVSUxEX0FTU0lNUF9UT09MUz1PRkYgLURBU1NJTVBfQlVJTERfVEVTVFM9T0ZGIC1EQVNTSU1QX0xJQl9JTlNUQUxMX0RJUj0ke2Jhc2VsaWJ9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtRG9uLXQtYnVpbGQtZGVtb3Mtd2l0aC1xdWVzdGlvbmFibHktbGljZW5zZWQtZGF0YS5wYXRjaAppbmRleCA5M2JjZmJmLi43NjI0MDYxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtRG9uLXQtYnVpbGQtZGVtb3Mtd2l0aC1xdWVzdGlvbmFibHktbGljZW5zZWQtZGF0YS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtRG9uLXQtYnVpbGQtZGVtb3Mtd2l0aC1xdWVzdGlvbmFibHktbGljZW5zZWQtZGF0YS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMGEyNzE0NGQ0M2I3MDEyMWY1N2Y2MDM2NTE0ZDA2OWNhOWQyYjk3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMGNiZjljOTgzMWY3NzNlMGRhNjYyMDliZTlhNmZmMjhkNTdjMjMyMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206ICJNYXhpbiBCLiBKb2huIiA8bWF4aW4uam9obkBpbnRlbC5jb20+CiBEYXRlOiBNb24sIDMwIEp1bCAyMDE4IDE3OjIzOjI5ICswMzAwCiBTdWJqZWN0OiBbUEFUQ0hdIERvbid0IGJ1aWxkIGRlbW9zIHdpdGggcXVlc3Rpb25hYmx5IGxpY2Vuc2VkIGRhdGEKQEAgLTMzLDE2ICszMywxNyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CisKIC0tLQogIGV4YW1wbGVzL0NNYWtlTGlzdHMudHh0IHwgMTQgLS0tLS0tLS0tLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgMTQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9leGFtcGxlcy9DTWFrZUxpc3RzLnR4dCBiL2V4YW1wbGVzL0NNYWtlTGlzdHMudHh0Ci1pbmRleCA4ZWVlM2E0Li42OThkM2IzIDEwMDY0NAoraW5kZXggZTA3OTE4Yy4uMDhiNmUyMyAxMDA2NDQKIC0tLSBhL2V4YW1wbGVzL0NNYWtlTGlzdHMudHh0CiArKysgYi9leGFtcGxlcy9DTWFrZUxpc3RzLnR4dAotQEAgLTQ3LDE4ICs0NywxMiBAQCBzZXQoRVhBTVBMRVMKLSAJY29tcHV0ZXNoYWRlcgorQEAgLTU1LDE4ICs1NSwxMiBAQCBzZXQoRVhBTVBMRVMKKyAJY29uZGl0aW9uYWxyZW5kZXIKICAJY29uc2VydmF0aXZlcmFzdGVyCiAgCWRlYnVnbWFya2VyCiAtCWRlZmVycmVkCkBAIC01NywxMCArNTgsMTAgQEAKIC0JaGRyCiAtCWltZ3VpCiAtCWluZGlyZWN0ZHJhdworIAlpbmxpbmV1bmlmb3JtYmxvY2tzCiAgCWlucHV0YXR0YWNobWVudHMKICAJaW5zdGFuY2luZwotIAltZXNoCi1AQCAtNzAsOCArNjQsNiBAQCBzZXQoRVhBTVBMRVMKK0BAIC04MywyMyArNzcsMTYgQEAgc2V0KEVYQU1QTEVTCiAgCXBhcmFsbGF4bWFwcGluZwogIAlwYXJ0aWNsZWZpcmUKICAJcGJyYmFzaWMKQEAgLTY5LDkgKzcwLDggQEAKICAJcGlwZWxpbmVzCiAgCXBpcGVsaW5lc3RhdGlzdGljcwogIAlwdXNoY29uc3RhbnRzCi1AQCAtNzksMTUgKzcxLDEwIEBAIHNldChFWEFNUExFUworIAlwdXNoZGVzY3JpcHRvcnMKICAJcmFkaWFsYmx1cgotIAlyYXl0cmFjaW5nCiAgCXJlbmRlcmhlYWRsZXNzCiAtCXNjZW5lcmVuZGVyaW5nCiAgCXNjcmVlbnNob3QKQEAgLTg1LDcgKzg1LDcgQEAKICAJc3RlbmNpbGJ1ZmZlcgogIAlzdWJwYXNzZXMKICAJdGVycmFpbnRlc3NlbGxhdGlvbgotQEAgLTEwMSw3ICs4OCw2IEBAIHNldChFWEFNUExFUworQEAgLTExMyw3ICsxMDAsNiBAQCBzZXQoRVhBTVBMRVMKICAJdGV4dHVyZXNwYXJzZXJlc2lkZW5jeQogIAl0cmlhbmdsZQogIAl2aWV3cG9ydGFycmF5CkBAIC05Myw2ICs5MywzIEBACiAgKQogIAogIGJ1aWxkRXhhbXBsZXMoKQotLS0gCi0yLjQuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3NfZ2l0LmJiCmluZGV4IDc0ZGMyYWQuLmM5NGU3NjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3NfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3NfZ2l0LmJiCkBAIC01LDIzICs1LDIzIEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLm1kO21kNT1kY2Y0NzM3MjNmYWFiZjE3YmFhOWI1ZjIyMDc1OTlkMCBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9leGFtcGxlcy90cmlhbmdsZS90cmlhbmdsZS5jcHA7ZW5kbGluZT0xMjttZDU9YmNjZDFiZjljYWRkOWUxMDA4NmNmNzg3MjE1N2U0ZmEiCiAKLVNSQ1JFVl9nbG0gPSAiMDFmOWFiNWI2ZDIxZTUwNjJhYzBmNmUwZjIwNWM3ZmEyY2E5ZDc2OSIKLVNSQ1JFVl9nbGkgPSAiOGU0MzAzMGIzZTEyYmI1OGE0NjYzZDg1YWRjNWM3NTJmODkwOTljMCIKK1NSQ1JFVl9nbG0gPSAiMWFkNTVjNTAxNjMzOWI4M2I3ZWVjOThjMzEwMDdlMGFlZTU3ZDJiZiIKK1NSQ1JFVl9nbGkgPSAiN2RhNWY1MDkzMTIyNWU5ODE5YTI2ZDVjYjMyM2M1ZjQyZGE1MGJjZCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL1Nhc2NoYVdpbGxlbXMvVnVsa2FuLmdpdCBcCiAgICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vZy10cnVjL2dsbTtkZXN0c3VmZml4PWdpdC9leHRlcm5hbC9nbG07bmFtZT1nbG0gXAogICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2ctdHJ1Yy9nbGk7ZGVzdHN1ZmZpeD1naXQvZXh0ZXJuYWwvZ2xpO25hbWU9Z2xpIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtYnVpbGQtZGVtb3Mtd2l0aC1xdWVzdGlvbmFibHktbGljZW5zZWQtZGF0YS5wYXRjaCBcCi0iCisgICAgICAgICAgICIKIFVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKLVNSQ1JFViA9ICJhZTBiNTljNmUyZTg2MzBhMmFlMjZmNGEwYjdhNzJjYmU3NTQ3OTQ4IgorU1JDUkVWID0gIjZkNjNkYzMyYzMyMGE0OWJlMGE1NmMzNjUxNTFjOGYyZjE3NmJjNTkiCiBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJUaGVzZSBhcmUgbm90IHRoZSByZWxlYXNlcyB5b3UncmUgbG9va2luZyBmb3IiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAndnVsa2FuJwogCiBpbmhlcml0IGNtYWtlIGZlYXR1cmVzX2NoZWNrCi1ERVBFTkRTID0gInZ1bGthbi1sb2FkZXIgYXNzaW1wIgorREVQRU5EUyA9ICJ2dWxrYW4tbG9hZGVyIGFzc2ltcCB3YXlsYW5kLXByb3RvY29scyB3YXlsYW5kLW5hdGl2ZSIKIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogICAgICMgUmVtb3ZlIGFzc2V0cyB0aGF0IGhhdmUgdW5jZXJ0YWluIGxpY2Vuc2VzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWhlYWRlcnNfMS4xLjEwOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4taGVhZGVyc18xLjEuMTA4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODRjMTlkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4taGVhZGVyc18xLjEuMTA4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJWdWxrYW4gSGVhZGVyIGZpbGVzIGFuZCBBUEkgcmVnaXN0cnkiCi1IT01FUEFHRSA9ICJodHRwczovL3d3dy5raHJvbm9zLm9yZy92dWxrYW4vIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1IZWFkZXJzIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1IZWFkZXJzLmdpdDticmFuY2g9c2RrLSR7UFZ9IgotCi1TUkNSRVYgPSAiMDk3YTEwNDUwOTgyMTM5MTlmZDU2NDQyZjUyYzcxNmZjNzhlZWIyNyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBjbWFrZQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS92dWxrYW4iCi0KLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInNkay0oP1A8cHZlcj5cZCsoXC5cZCspKykiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWhlYWRlcnNfMS4xLjEyNi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1oZWFkZXJzXzEuMS4xMjYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmMyOWE3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1oZWFkZXJzXzEuMS4xMjYuMC5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIlZ1bGthbiBIZWFkZXIgZmlsZXMgYW5kIEFQSSByZWdpc3RyeSIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3Z1bGthbi8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUhlYWRlcnMiCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUhlYWRlcnMuZ2l0O2JyYW5jaD1zZGstMS4xLjEyNiIKKworU1JDUkVWID0gIjViYzQ1OWUyOTIxMzA0YzMyNTY4YjczZWRhYWM4ZDZkZjVmOThiODQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vdnVsa2FuIgorCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJzZGstKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1sb2FkZXJfMS4xLjEwOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tbG9hZGVyXzEuMS4xMDguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MzljNWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1sb2FkZXJfMS4xLjEwOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLVNVTU1BUlkgPSAiM0QgZ3JhcGhpY3MgYW5kIGNvbXB1dGUgQVBJIGNvbW1vbiBsb2FkZXIiCi1ERVNDUklQVElPTiA9ICJWdWxrYW4gaXMgYSBuZXcgZ2VuZXJhdGlvbiBncmFwaGljcyBhbmQgY29tcHV0ZSBBUEkgXAotdGhhdCBwcm92aWRlcyBlZmZpY2llbnQgYWNjZXNzIHRvIG1vZGVybiBHUFVzLiBUaGVzZSBwYWNrYWdlcyBcCi1wcm92aWRlIG9ubHkgdGhlIGNvbW1vbiB2ZW5kb3ItYWdub3N0aWMgbGlicmFyeSBsb2FkZXIsIGhlYWRlcnMgYW5kIFwKLXRoZSB2dWxrYW5pbmZvIHV0aWxpdHkuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvdnVsa2FuLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9N2RiZWZlZDIzMjQyNzYwYWEzNDc1ZWU0MjgwMWM1YWMiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1Mb2FkZXIuZ2l0O2JyYW5jaD1zZGstJHtQVn0iCi1TUkNSRVYgPSAiZWNiMGIxZTY5ZmIyZjRkM2NhZTI2MmU2ZGEyNGMxNzBjZTYyYWUxMyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInZ1bGthbiIKLQotaW5oZXJpdCBjbWFrZSBmZWF0dXJlc19jaGVjawotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgd2F5bGFuZCIKLQotREVQRU5EUyArPSAidnVsa2FuLWhlYWRlcnMiCi0KLUVYVFJBX09FQ01BS0UgPSAiXAotICAgICAgICAgICAgICAgICAtREJVSUxEX1RFU1RTPU9GRiBcCi0gICAgICAgICAgICAgICAgIC1EUFlUSE9OX0VYRUNVVEFCTEU9JHtIT1NUVE9PTFNfRElSfS9weXRob24zIFwKLSAgICAgICAgICAgICAgICAgIgotCi0jIG11c3QgY2hvb3NlIHgxMSBvciB3YXlsYW5kIG9yIGJvdGgKLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PTiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PTiwgLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9GRiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PRkYsIGxpYnhjYiBsaWJ4MTEgbGlieHJhbmRyIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T04sIC1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PRkYsIHdheWxhbmQiCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gIm1lc2EtdnVsa2FuLWRyaXZlcnMiCi0KLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInNkay0oP1A8cHZlcj5cZCsoXC5cZCspKykiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWxvYWRlcl8xLjEuMTI2LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWxvYWRlcl8xLjEuMTI2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA0Y2Y4NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tbG9hZGVyXzEuMS4xMjYuMC5iYgpAQCAtMCwwICsxLDM4IEBACitTVU1NQVJZID0gIjNEIGdyYXBoaWNzIGFuZCBjb21wdXRlIEFQSSBjb21tb24gbG9hZGVyIgorREVTQ1JJUFRJT04gPSAiVnVsa2FuIGlzIGEgbmV3IGdlbmVyYXRpb24gZ3JhcGhpY3MgYW5kIGNvbXB1dGUgQVBJIFwKK3RoYXQgcHJvdmlkZXMgZWZmaWNpZW50IGFjY2VzcyB0byBtb2Rlcm4gR1BVcy4gVGhlc2UgcGFja2FnZXMgXAorcHJvdmlkZSBvbmx5IHRoZSBjb21tb24gdmVuZG9yLWFnbm9zdGljIGxpYnJhcnkgbG9hZGVyLCBoZWFkZXJzIGFuZCBcCit0aGUgdnVsa2FuaW5mbyB1dGlsaXR5LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3Z1bGthbi8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUxvYWRlciIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTdkYmVmZWQyMzI0Mjc2MGFhMzQ3NWVlNDI4MDFjNWFjIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyLmdpdDticmFuY2g9c2RrLTEuMS4xMjYiCitTUkNSRVYgPSAiNGFkYWQ0ZmY3MDVmYTc2ZjllZGIyZDM3Y2I1N2U1OTNkZWNiNjBlZCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInZ1bGthbiIKKworaW5oZXJpdCBjbWFrZSBmZWF0dXJlc19jaGVjaworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgd2F5bGFuZCIKKworREVQRU5EUyArPSAidnVsa2FuLWhlYWRlcnMiCisKK0VYVFJBX09FQ01BS0UgPSAiXAorICAgICAgICAgICAgICAgICAtREJVSUxEX1RFU1RTPU9GRiBcCisgICAgICAgICAgICAgICAgIC1EUFlUSE9OX0VYRUNVVEFCTEU9JHtIT1NUVE9PTFNfRElSfS9weXRob24zIFwKKyAgICAgICAgICAgICAgICAgLURBU1NFTUJMRVJfV09SS1M9RkFMU0UgXAorICAgICAgICAgICAgICAgICAiCisKKyMgbXVzdCBjaG9vc2UgeDExIG9yIHdheWxhbmQgb3IgYm90aAorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgorCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9OIC1EQlVJTERfV1NJX1hDQl9TVVBQT1JUPU9OLCAtREJVSUxEX1dTSV9YTElCX1NVUFBPUlQ9T0ZGIC1EQlVJTERfV1NJX1hDQl9TVVBQT1JUPU9GRiwgbGlieGNiIGxpYngxMSBsaWJ4cmFuZHIiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PTiwgLURCVUlMRF9XU0lfV0FZTEFORF9TVVBQT1JUPU9GRiwgd2F5bGFuZCIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAibWVzYS12dWxrYW4tZHJpdmVycyIKKworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAic2RrLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tdG9vbHNfMS4xLjEwOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tdG9vbHNfMS4xLjEwOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFjMWJhZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLXRvb2xzXzEuMS4xMDguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIlZ1bGthbiBVdGlsaXRpZXMgYW5kIFRvb2xzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvdnVsa2FuLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tVG9vbHMiCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLVRvb2xzLmdpdDticmFuY2g9c2RrLSR7UFZ9IgotU1JDUkVWID0gIjNjY2Q3ZjZlYmFlM2UxOTE5YWRmODM3NzE4YzA0ZmViNmMyYWNjNjEiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UgZmVhdHVyZXNfY2hlY2sKLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAieDExIHdheWxhbmQiCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAidnVsa2FuIgotCi1ERVBFTkRTICs9ICJ2dWxrYW4taGVhZGVycyB2dWxrYW4tbG9hZGVyIgotCi1FWFRSQV9PRUNNQUtFID0gIlwKLSAgICAgICAgICAgICAgICAgLURCVUlMRF9URVNUUz1PRkYgXAotICAgICAgICAgICAgICAgICAtREJVSUxEX0NVQkU9T0ZGIFwKLSAgICAgICAgICAgICAgICAgLURQWVRIT05fRVhFQ1VUQUJMRT0ke0hPU1RUT09MU19ESVJ9L3B5dGhvbjMgXAotICAgICAgICAgICAgICAgICAiCi0KLSMgbXVzdCBjaG9vc2UgeDExIG9yIHdheWxhbmQgb3IgYm90aAotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgotCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9OIC1EQlVJTERfV1NJX1hDQl9TVVBQT1JUPU9OLCAtREJVSUxEX1dTSV9YTElCX1NVUFBPUlQ9T0ZGIC1EQlVJTERfV1NJX1hDQl9TVVBQT1JUPU9GRiwgbGlieGNiIGxpYngxMSBsaWJ4cmFuZHIiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PTiwgLURCVUlMRF9XU0lfV0FZTEFORF9TVVBQT1JUPU9GRiwgd2F5bGFuZCIKLQotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAic2RrLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tdG9vbHNfMS4xLjEyNi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi10b29sc18xLjEuMTI2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZkNjFjOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tdG9vbHNfMS4xLjEyNi4wLmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiVnVsa2FuIFV0aWxpdGllcyBhbmQgVG9vbHMiCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5raHJvbm9zLm9yZy92dWxrYW4vIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1Ub29scyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tVG9vbHMuZ2l0O2JyYW5jaD1zZGstMS4xLjEyNiIKK1NSQ1JFViA9ICIwOTY5NWRmYzVkYmU1NGY4NjlhZWFmZjhkYjkzYmI3YmI2YTIyMGUwIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlIGZlYXR1cmVzX2NoZWNrCitBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIngxMSB3YXlsYW5kIgorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInZ1bGthbiIKKworREVQRU5EUyArPSAidnVsa2FuLWhlYWRlcnMgdnVsa2FuLWxvYWRlciIKKworRVhUUkFfT0VDTUFLRSA9ICJcCisgICAgICAgICAgICAgICAgIC1EQlVJTERfVEVTVFM9T0ZGIFwKKyAgICAgICAgICAgICAgICAgLURCVUlMRF9DVUJFPU9GRiBcCisgICAgICAgICAgICAgICAgIC1EUFlUSE9OX0VYRUNVVEFCTEU9JHtIT1NUVE9PTFNfRElSfS9weXRob24zIFwKKyAgICAgICAgICAgICAgICAgIgorCisjIG11c3QgY2hvb3NlIHgxMSBvciB3YXlsYW5kIG9yIGJvdGgKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKKworUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PTiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PTiwgLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9GRiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PRkYsIGxpYnhjYiBsaWJ4MTEgbGlieHJhbmRyIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T04sIC1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PRkYsIHdheWxhbmQiCisKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInNkay0oP1A8cHZlcj5cZCsoXC5cZCspKykiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YWZmbGUvd2FmZmxlXzEuNi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2FmZmxlL3dhZmZsZV8xLjYuMC5iYgppbmRleCA1MmNiMWRmLi5hNjIwMjk1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YWZmbGUvd2FmZmxlXzEuNi4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dhZmZsZS93YWZmbGVfMS42LjAuYmIKQEAgLTExLDYgKzExLDggQEAKIAogaW5oZXJpdCBtZXNvbiBmZWF0dXJlc19jaGVjayBsaWJfcGFja2FnZSBiYXNoLWNvbXBsZXRpb24KIAorREVQRU5EU19hcHBlbmQgPSAiIHB5dGhvbjMiCisKICMgVGhpcyBzaG91bGQgYmUgb3ZlcnJpZGRlbiBwZXItbWFjaGluZSB0byByZWZsZWN0IHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIEdMCiAjIHN0YWNrLgogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2dseCB4MTEtZWdsJywgJycsIGQpfSBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0L2RldGVybWluaXNtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dC9kZXRlcm1pbmlzbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjU1NDAzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dC9kZXRlcm1pbmlzbS5wYXRjaApAQCAtMCwwICsxLDIxIEBACitUaGlzIGZpbmRzIG91ciBvdXRlciBnaXQgdHJlZSBhbmQgdGhhdCB2ZXJzaW9uIGluZm9ybWF0aW9uIGJyZWFrcworZGV0ZXJtaW5pc20gb2YgdGhpcyByZWNpcGUuIERpc2FibGUgaXQuCisKK1JQIDIwMjAvMi82CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKK0luZGV4OiBsaWJpbnB1dC0xLjE0LjMvbWVzb24uYnVpbGQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWJpbnB1dC0xLjE0LjMub3JpZy9tZXNvbi5idWlsZAorKysrIGxpYmlucHV0LTEuMTQuMy9tZXNvbi5idWlsZAorQEAgLTM4Nyw3ICszODcsNyBAQCBwa2djb25maWcuZ2VuZXJhdGUoCisgCWxpYnJhcmllcyA6IGxpYl9saWJpbnB1dAorICkKKyAKKy1naXRfdmVyc2lvbl9oID0gdmNzX3RhZyhjb21tYW5kIDogWydnaXQnLCAnZGVzY3JpYmUnXSwKKytnaXRfdmVyc2lvbl9oID0gdmNzX3RhZyhjb21tYW5kIDogWydmYWxzZSddLAorIAkJCWZhbGxiYWNrIDogJ3Vua25vd24nLAorIAkJCWlucHV0IDogJ3NyYy9saWJpbnB1dC1naXQtdmVyc2lvbi5oLmluJywKKyAJCQlvdXRwdXQgOidsaWJpbnB1dC1naXQtdmVyc2lvbi5oJykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS4xNC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjE0LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwNmE4ZDIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjE0LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgdG8gaGFuZGxlIGlucHV0IGRldmljZXMgaW4gV2F5bGFuZCBjb21wb3NpdG9ycyIKLURFU0NSSVBUSU9OID0gImxpYmlucHV0IGlzIGEgbGlicmFyeSB0byBoYW5kbGUgaW5wdXQgZGV2aWNlcyBpbiBXYXlsYW5kIFwKLWNvbXBvc2l0b3JzIGFuZCB0byBwcm92aWRlIGEgZ2VuZXJpYyBYLk9yZyBpbnB1dCBkcml2ZXIuIEl0IHByb3ZpZGVzIFwKLWRldmljZSBkZXRlY3Rpb24sIGRldmljZSBoYW5kbGluZywgaW5wdXQgZGV2aWNlIGV2ZW50IHByb2Nlc3NpbmcgYW5kIFwKLWFic3RyYWN0aW9uIHNvIG1pbmltaXplIHRoZSBhbW91bnQgb2YgY3VzdG9tIGlucHV0IGNvZGUgY29tcG9zaXRvcnMgbmVlZCB0byBcCi1wcm92aWRlIHRoZSBjb21tb24gc2V0IG9mIGZ1bmN0aW9uYWxpdHkgdGhhdCB1c2VycyBleHBlY3QuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9saWJpbnB1dC8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWYyZWE5ZWJmZjNhMmM2ZDQ1OGZhZjU4NDkyZWZiNjMiCi0KLURFUEVORFMgPSAibGliZXZkZXYgdWRldiBtdGRldiIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS8ke0JQTn0vJHtCUH0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImQwNTJmYWE2NGViNmQyZTY0OWU1ODJjYzBmY2Y2ZTMyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBmZWIzYTA1ODk3MDljYzEwMzI4OTNiZmFmNGM0OTE1MGQ1MzYwYmQ5NzgyYmVjODg4ZjllNGRkOTA0NGM1YjciCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxpYmlucHV0LSg/UDxwdmVyPlxkK1wuXGQrXC4oPyE5XGQrKVxkKykiCi0KLWluaGVyaXQgbWVzb24gcGtnY29uZmlnIGxpYl9wYWNrYWdlCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2xpYndhY29tXSA9ICItRGxpYndhY29tPXRydWUsLURsaWJ3YWNvbT1mYWxzZSxsaWJ3YWNvbSIKLVBBQ0tBR0VDT05GSUdbZ3VpXSA9ICItRGRlYnVnLWd1aT10cnVlLC1EZGVidWctZ3VpPWZhbHNlLGNhaXJvIGd0ayszIgotCi1VREVWRElSID0gImBwa2ctY29uZmlnIC0tdmFyaWFibGU9dWRldmRpciB1ZGV2YCIKLQotRVhUUkFfT0VNRVNPTiArPSAiLUR1ZGV2LWRpcj0ke1VERVZESVJ9IFwKLSAgICAgICAgICAgICAgICAgIC1EZG9jdW1lbnRhdGlvbj1mYWxzZSBcCi0gICAgICAgICAgICAgICAgICAtRHRlc3RzPWZhbHNlIFwKLSAgICAgICAgICAgICAgICAgIC1EenNoY29tcGxldGlvbmRpcj1ubyIKLQotIyBwYWNrYWdlIG5hbWUgY2hhbmdlZCBpbiAxLjguMSB1cGdyYWRlOiBtYWtlIHN1cmUgcGFja2FnZSB1cGdyYWRlcyB3b3JrCi1SUFJPVklERVNfJHtQTn0gPSAibGliaW5wdXQiCi1SUkVQTEFDRVNfJHtQTn0gPSAibGliaW5wdXQiCi1SQ09ORkxJQ1RTXyR7UE59ID0gImxpYmlucHV0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjE1LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0XzEuMTUuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTA1MzI3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjE1LjIuYmIKQEAgLTAsMCArMSw0MCBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IHRvIGhhbmRsZSBpbnB1dCBkZXZpY2VzIGluIFdheWxhbmQgY29tcG9zaXRvcnMiCitERVNDUklQVElPTiA9ICJsaWJpbnB1dCBpcyBhIGxpYnJhcnkgdG8gaGFuZGxlIGlucHV0IGRldmljZXMgaW4gV2F5bGFuZCBcCitjb21wb3NpdG9ycyBhbmQgdG8gcHJvdmlkZSBhIGdlbmVyaWMgWC5PcmcgaW5wdXQgZHJpdmVyLiBJdCBwcm92aWRlcyBcCitkZXZpY2UgZGV0ZWN0aW9uLCBkZXZpY2UgaGFuZGxpbmcsIGlucHV0IGRldmljZSBldmVudCBwcm9jZXNzaW5nIGFuZCBcCithYnN0cmFjdGlvbiBzbyBtaW5pbWl6ZSB0aGUgYW1vdW50IG9mIGN1c3RvbSBpbnB1dCBjb2RlIGNvbXBvc2l0b3JzIG5lZWQgdG8gXAorcHJvdmlkZSB0aGUgY29tbW9uIHNldCBvZiBmdW5jdGlvbmFsaXR5IHRoYXQgdXNlcnMgZXhwZWN0LiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGliaW5wdXQvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFmMmVhOWViZmYzYTJjNmQ0NThmYWY1ODQ5MmVmYjYzIgorCitERVBFTkRTID0gImxpYmV2ZGV2IHVkZXYgbXRkZXYiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvJHtCUE59LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9kZXRlcm1pbmlzbS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYjZiZDI5MDdhZDMzZDUzOTU0ZDcwZGZiODgxYTY0MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NzFjM2ZiZmI2MjRmOTVjOTExYWRlYjI4MDNjMzcyZTRlMzY0N2QxYjk4ZjI3OGY2NjAwNTFmODM0NTk3NzQ3IgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJsaWJpbnB1dC0oP1A8cHZlcj5cZCtcLlxkK1wuKD8hOVxkKylcZCspIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tsaWJ3YWNvbV0gPSAiLURsaWJ3YWNvbT10cnVlLC1EbGlid2Fjb209ZmFsc2UsbGlid2Fjb20iCitQQUNLQUdFQ09ORklHW2d1aV0gPSAiLURkZWJ1Zy1ndWk9dHJ1ZSwtRGRlYnVnLWd1aT1mYWxzZSxjYWlybyBndGsrMyIKKworVURFVkRJUiA9ICJgcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAiCisKK0VYVFJBX09FTUVTT04gKz0gIi1EdWRldi1kaXI9JHtVREVWRElSfSBcCisgICAgICAgICAgICAgICAgICAtRGRvY3VtZW50YXRpb249ZmFsc2UgXAorICAgICAgICAgICAgICAgICAgLUR0ZXN0cz1mYWxzZSBcCisgICAgICAgICAgICAgICAgICAtRHpzaGNvbXBsZXRpb25kaXI9bm8iCisKKyMgcGFja2FnZSBuYW1lIGNoYW5nZWQgaW4gMS44LjEgdXBncmFkZTogbWFrZSBzdXJlIHBhY2thZ2UgdXBncmFkZXMgd29yaworUlBST1ZJREVTXyR7UE59ID0gImxpYmlucHV0IgorUlJFUExBQ0VTXyR7UE59ID0gImxpYmlucHV0IgorUkNPTkZMSUNUU18ke1BOfSA9ICJsaWJpbnB1dCIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9tdGRldl8xLjEuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbXRkZXZfMS4xLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjZDBlYmIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9tdGRldl8xLjEuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiTXVsdGl0b3VjaCBQcm90b2NvbCBUcmFuc2xhdGlvbiBMaWJyYXJ5IgotCi1ERVNDUklQVElPTiA9ICJtdGRldiBpcyBhIGxpYnJhcnkgd2hpY2ggdHJhbnNmb3JtcyBhbGwgdmFyaWFudHMgb2Yga2VybmVsIFwKLW11bHRpdG91Y2ggZXZlbnRzIHRvIHRoZSBzbG90dGVkIHR5cGUgQiBwcm90b2NvbC4gVGhlIGV2ZW50cyBwdXQgaW50byBtdGRldiBtYXkgXAotYmUgZnJvbSBhbnkgTVQgZGV2aWNlLCBzcGVjaWZpY2FsbHkgdHlwZSBBIHdpdGhvdXQgY29udGFjdCB0cmFja2luZywgdHlwZSBBIHdpdGggXAotY29udGFjdCB0cmFja2luZywgb3IgdHlwZSBCIHdpdGggY29udGFjdCB0cmFja2luZyIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2JpdG1hdGgub3JnL2NvZGUvbXRkZXYvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVhNmJkMDI2OGJiMGZjZDZiMjc2OTg2MTZjZWVlNWQ2IgotCi1TUkNfVVJJID0gImh0dHA6Ly9iaXRtYXRoLm9yZy9jb2RlLyR7QlBOfS8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gIjUyYzk2MTBiNjAwMmY3MWQxNjQyZGMxYTFjY2E1ZWMxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2NzdkNTcwOGE3OTQ4ODQwZGU3MzRkOGI0Njc1ZDU5ODBkNDU2MTE3MWM1YThlODllNTRhZGY3YTEzZWJhN2YiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9tdGRldl8xLjEuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbXRkZXZfMS4xLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MxY2I1ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbXRkZXZfMS4xLjYuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJNdWx0aXRvdWNoIFByb3RvY29sIFRyYW5zbGF0aW9uIExpYnJhcnkiCisKK0RFU0NSSVBUSU9OID0gIm10ZGV2IGlzIGEgbGlicmFyeSB3aGljaCB0cmFuc2Zvcm1zIGFsbCB2YXJpYW50cyBvZiBrZXJuZWwgXAorbXVsdGl0b3VjaCBldmVudHMgdG8gdGhlIHNsb3R0ZWQgdHlwZSBCIHByb3RvY29sLiBUaGUgZXZlbnRzIHB1dCBpbnRvIG10ZGV2IG1heSBcCitiZSBmcm9tIGFueSBNVCBkZXZpY2UsIHNwZWNpZmljYWxseSB0eXBlIEEgd2l0aG91dCBjb250YWN0IHRyYWNraW5nLCB0eXBlIEEgd2l0aCBcCitjb250YWN0IHRyYWNraW5nLCBvciB0eXBlIEIgd2l0aCBjb250YWN0IHRyYWNraW5nIgorCitIT01FUEFHRSA9ICJodHRwOi8vYml0bWF0aC5vcmcvY29kZS9tdGRldi8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWE2YmQwMjY4YmIwZmNkNmIyNzY5ODYxNmNlZWU1ZDYiCisKK1NSQ19VUkkgPSAiaHR0cDovL2JpdG1hdGgub3JnL2NvZGUvJHtCUE59LyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiYmY4ZWYyNDgyZTg0YTAwYjVkYjhmYmQzY2UwMGUyNDkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTVkN2IyOGRhOGFjNzFkOGJjOGM5Mjg3YzIwNDVmZDE3NDI2N2JjNzQwYmVjMTBjZmRhMzMyZGMxMjA0ZTBlMCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMTguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMTguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4YmVjNjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjE4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJDb2xsZWN0aW9uIG9mIGFkZGl0aW9uYWwgV2F5bGFuZCBwcm90b2NvbHMiCi1ERVNDUklQVElPTiA9ICJXYXlsYW5kIHByb3RvY29scyB0aGF0IGFkZCBmdW5jdGlvbmFsaXR5IG5vdCBcCi1hdmFpbGFibGUgaW4gdGhlIFdheWxhbmQgY29yZSBwcm90b2NvbC4gU3VjaCBwcm90b2NvbHMgZWl0aGVyIGFkZCBcCi1jb21wbGV0ZWx5IG5ldyBmdW5jdGlvbmFsaXR5LCBvciBleHRlbmQgdGhlIGZ1bmN0aW9uYWxpdHkgb2Ygc29tZSBvdGhlciBcCi1wcm90b2NvbCBlaXRoZXIgaW4gV2F5bGFuZCBjb3JlLCBvciBzb21lIG90aGVyIHByb3RvY29sIGluIFwKLXdheWxhbmQtcHJvdG9jb2xzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzdiMTJiNjcwMmRhMzhjYTAyOGFjZTU0YWFlM2Q0ODQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3RhYmxlL3ByZXNlbnRhdGlvbi10aW1lL3ByZXNlbnRhdGlvbi10aW1lLnhtbDtlbmRsaW5lPTI2O21kNT00NjQ2Y2Q3ZDllZGM5ZmE1NWRiOTQxZjJkM2E3ZGM1MyIKLQotU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYWYzOGYyMmQ4ZTIzM2MyZjJlMDBkZGM4ZGNjOTQ2OTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2Q3M2I3ZTc2NjE3NjNkYzA5ZDdkOTEwNzY3ODQwMDEwMWVjZmYyYjViMWU1MzE2NzRhYmZhODFlMDQ4NzRiMyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMuaHRtbCIKLQotaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcKLQotUEFDS0FHRVMgPSAiJHtQTn0iCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wa2djb25maWcvd2F5bGFuZC1wcm90b2NvbHMucGMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZiNzhmNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4yMC5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIkNvbGxlY3Rpb24gb2YgYWRkaXRpb25hbCBXYXlsYW5kIHByb3RvY29scyIKK0RFU0NSSVBUSU9OID0gIldheWxhbmQgcHJvdG9jb2xzIHRoYXQgYWRkIGZ1bmN0aW9uYWxpdHkgbm90IFwKK2F2YWlsYWJsZSBpbiB0aGUgV2F5bGFuZCBjb3JlIHByb3RvY29sLiBTdWNoIHByb3RvY29scyBlaXRoZXIgYWRkIFwKK2NvbXBsZXRlbHkgbmV3IGZ1bmN0aW9uYWxpdHksIG9yIGV4dGVuZCB0aGUgZnVuY3Rpb25hbGl0eSBvZiBzb21lIG90aGVyIFwKK3Byb3RvY29sIGVpdGhlciBpbiBXYXlsYW5kIGNvcmUsIG9yIHNvbWUgb3RoZXIgcHJvdG9jb2wgaW4gXAord2F5bGFuZC1wcm90b2NvbHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jN2IxMmI2NzAyZGEzOGNhMDI4YWNlNTRhYWUzZDQ4NCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zdGFibGUvcHJlc2VudGF0aW9uLXRpbWUvcHJlc2VudGF0aW9uLXRpbWUueG1sO2VuZGxpbmU9MjY7bWQ1PTQ2NDZjZDdkOWVkYzlmYTU1ZGI5NDFmMmQzYTdkYzUzIgorCitTUkNfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMDgzNjUzM2EzZjJkYzY1ODViMWRhZTAwMzQxMTU3ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NzgyYjdhMWE4NjNkODJkN2M5MjQ3ODQ5N2QxM2M3NThmNTJlN2RhNGYxOTdhYTE2NDQzZjczZGU3N2U0ZGU3IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy5odG1sIgorCitpbmhlcml0IGFsbGFyY2ggYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitQQUNLQUdFUyA9ICIke1BOfSIKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZy93YXlsYW5kLXByb3RvY29scy5wYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAxLWJ1aWxkLUZpeC1zdHJuZHVwLWRldGVjdGlvbi1vbi1NaW5HVy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAxLWJ1aWxkLUZpeC1zdHJuZHVwLWRldGVjdGlvbi1vbi1NaW5HVy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDQ1ODM4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLzAwMDEtYnVpbGQtRml4LXN0cm5kdXAtZGV0ZWN0aW9uLW9uLU1pbkdXLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gZTY3ODNjOTlmMDUxYzZkODI1MmRiNWYzODhkODA1Y2VmMGUxNjM1NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjAgRmViIDIwMjAgMTU6MjA6NDUgLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gYnVpbGQ6IEZpeCBzdHJuZHVwIGRldGVjdGlvbiBvbiBNaW5HVworCitHQ0MgYW5kIG1lc29uIGNvbnNwaXJlIHRvZ2V0aGVyIHRvIGluY29ycmVjdGx5IGRldGVjdCB0aGF0IHN0cm5kdXAoKQorZXhpc3RzIG9uIE1pbkdXIGFzIF9fYnVpbHRpbl9zdHJuZHVwLCB3aGVuIG5vIHN1Y2ggZnVuY3Rpb24gZXhpc3RzLiBBcyBhCit3b3JrIGFyb3VuZCwgbWVzb24gd2lsbCBza2lwIGxvb2tpbmcgZm9yIF9fYnVpbHRpbiBmdW5jdGlvbnMgaWYgYW4KKycjaW5jbHVkZScgaXMgaW4gdGhlIHByZWZpeCwgc28gYWRkICcjaW5jbHVkZSA8c3RyaW5nLmg+JyB3aGVuIGxvb2tpbmcKK2ZvciBzdHJuZHVwKCkuCisKK1NlZTogaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb24vaXNzdWVzLzM2NzIKKworU2lnbmVkLW9mZi1ieTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy93YXlsYW5kL3dheWxhbmQvbWVyZ2VfcmVxdWVzdHMvNjNdCistLS0KKyBtZXNvbi5idWlsZCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IDI2YjA4NGYuLmMwNWQwMTkgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC0zNiwxMSArMzYsMTEgQEAgaGF2ZV9mdW5jcyA9IFsKKyAJJ3Bvc2l4X2ZhbGxvY2F0ZScsCisgCSdwcmN0bCcsCisgCSdtZW1mZF9jcmVhdGUnLAorLQknc3RybmR1cCcsCisgXQorIGZvcmVhY2ggZjogaGF2ZV9mdW5jcworIAljb25maWdfaC5zZXQoJ0hBVkVfJyArIGYudW5kZXJzY29yaWZ5KCkudG9fdXBwZXIoKSwgY2MuaGFzX2Z1bmN0aW9uKGYpKQorIGVuZGZvcmVhY2gKKytjb25maWdfaC5zZXQoJ0hBVkVfU1RSTkRVUCcsIGNjLmhhc19mdW5jdGlvbignc3RybmR1cCcsIHByZWZpeDonI2luY2x1ZGUgPHN0cmluZy5oPicpKQorIAorIGlmIGdldF9vcHRpb24oJ2xpYnJhcmllcycpCisgCWZmaV9kZXAgPSBkZXBlbmRlbmN5KCdsaWJmZmknKQorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLzAwMDEtbWVzb24tdGVzdHMtYWRkLW1pc3NpbmctZGVwZW5kZW5jaWVzLW9uLXByb3RvY29sLWhlYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAxLW1lc29uLXRlc3RzLWFkZC1taXNzaW5nLWRlcGVuZGVuY2llcy1vbi1wcm90b2NvbC1oZWEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFkZTBlMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAxLW1lc29uLXRlc3RzLWFkZC1taXNzaW5nLWRlcGVuZGVuY2llcy1vbi1wcm90b2NvbC1oZWEucGF0Y2gKQEAgLTAsMCArMSwxMTUgQEAKK0Zyb20gYjJjNzRmNmEzZGJlMGFlZTI0MTM4MDA4MzczMTQxMzY5NDdhNDk4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphbiBCZWljaCA8amJlaWNoQEZyZWVCU0Qub3JnPgorRGF0ZTogU2F0LCAxNSBGZWIgMjAyMCAwMjowMzo0NSArMDAwMAorU3ViamVjdDogW1BBVENIXSBtZXNvbi90ZXN0czogYWRkIG1pc3NpbmcgZGVwZW5kZW5jaWVzIG9uIHByb3RvY29sIGhlYWRlcnMKKworSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3Rlc3RzL2Nvbm5lY3Rpb24tdGVzdC5jOjQzOgorSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3Rlc3RzL3Rlc3QtY29tcG9zaXRvci5oOjMwOgorLi4vc3JjL3dheWxhbmQtY2xpZW50Lmg6NDA6MTA6IGZhdGFsIGVycm9yOiAnd2F5bGFuZC1jbGllbnQtcHJvdG9jb2wuaCcgZmlsZSBub3QgZm91bmQKKyAjaW5jbHVkZSAid2F5bGFuZC1jbGllbnQtcHJvdG9jb2wuaCIKKyAgICAgICAgICBefn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi90ZXN0cy9kaXNwbGF5LXRlc3QuYzo0NToKK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi9zcmMvd2F5bGFuZC1zZXJ2ZXIuaDoxMDQ6CitzcmMvd2F5bGFuZC1zZXJ2ZXItcHJvdG9jb2wuaDo0NDU0OjI6IGVycm9yOiB1bnRlcm1pbmF0ZWQgLyogY29tbWVudAorICAgICAgICAvKioKKyAgICAgICAgXgorSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3Rlc3RzL2NwcC1jb21waWxlLXRlc3QuY3BwOjI6CitJbiBmaWxlIGluY2x1ZGVkIGZyb20gc3JjL3dheWxhbmQtc2VydmVyLXByb3RvY29sLmg6ODoKK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi9zcmMvd2F5bGFuZC1zZXJ2ZXIuaDoxMDQ6CitzcmMvd2F5bGFuZC1zZXJ2ZXItcHJvdG9jb2wuaDozOjI6IGVycm9yOiB1bnRlcm1pbmF0ZWQgY29uZGl0aW9uYWwgZGlyZWN0aXZlCisgI2lmbmRlZiBXQVlMQU5EX1NFUlZFUl9QUk9UT0NPTF9ICisgIF4KKy4uL3Rlc3RzL2hlYWRlcnMtcHJvdG9jb2wtdGVzdC5jOjMzOjI6IGVycm9yOiBpbmNsdWRpbmcgd2F5bGFuZC1zZXJ2ZXItcHJvdG9jb2wuaCBkaWQgbm90IGluY2x1ZGUgd2F5bGFuZC1zZXJ2ZXIuaCEKKyAjZXJyb3IgaW5jbHVkaW5nIHdheWxhbmQtc2VydmVyLXByb3RvY29sLmggZGlkIG5vdCBpbmNsdWRlIHdheWxhbmQtc2VydmVyLmghCisgIF4KK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi90ZXN0cy9oZWFkZXJzLXByb3RvY29sLXRlc3QuYzoyNjoKK0luIGZpbGUgaW5jbHVkZWQgZnJvbSBzcmMvd2F5bGFuZC1jbGllbnQtcHJvdG9jb2wuaDo4OgorSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3NyYy93YXlsYW5kLWNsaWVudC5oOjQwOgorc3JjL3dheWxhbmQtY2xpZW50LXByb3RvY29sLmg6MTM1ODoyOiBlcnJvcjogdW50ZXJtaW5hdGVkIGNvbmRpdGlvbmFsIGRpcmVjdGl2ZQorICNpZm5kZWYgV0xfU0hNX0ZPUk1BVF9FTlVNCisgIF4KK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi90ZXN0cy9wcm90b2NvbC1sb2dnZXItdGVzdC5jOjM0OgorSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3NyYy93YXlsYW5kLWNsaWVudC5oOjQwOgorc3JjL3dheWxhbmQtY2xpZW50LXByb3RvY29sLmg6MjYxMzoxOiBlcnJvcjogdW50ZXJtaW5hdGVkIC8qIGNvbW1lbnQKKy8qKgorXgorLi4vdGVzdHMvcmVzb3VyY2VzLXRlc3QuYzo0OTozNjogZXJyb3I6IHVzZSBvZiB1bmRlY2xhcmVkIGlkZW50aWZpZXIgJ3dsX3NlYXRfaW50ZXJmYWNlJworICAgICAgICByZXMgPSB3bF9yZXNvdXJjZV9jcmVhdGUoY2xpZW50LCAmd2xfc2VhdF9pbnRlcmZhY2UsIDQsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyB0ZXN0cy9tZXNvbi5idWlsZCB8IDI2ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCitpbmRleCBjMjhhMmEzLi5mMWFmN2I0IDEwMDY0NAorLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrKyBiL3Rlc3RzL21lc29uLmJ1aWxkCitAQCAtNjksNyArNjksNyBAQCB0ZXN0KAorIAlleGVjdXRhYmxlKAorIAkJJ2NwcC1jb21waWxlLXRlc3QnLAorIAkJJ2NwcC1jb21waWxlLXRlc3QuY3BwJywKKy0JCXdheWxhbmRfc2VydmVyX3Byb3RvY29sX2NvcmVfaCwKKysJCXdheWxhbmRfc2VydmVyX3Byb3RvY29sX2gsCisgCQlpbmNsdWRlX2RpcmVjdG9yaWVzOiBzcmNfaW5jCisgCSkKKyApCitAQCAtOTEsMTcgKzkxLDI1IEBAIHRlc3RzID0geworIAknYXJyYXktdGVzdCc6IFtdLAorIAknY2xpZW50LXRlc3QnOiBbIHdheWxhbmRfc2VydmVyX3Byb3RvY29sX2ggXSwKKyAJJ2Rpc3BsYXktdGVzdCc6IFsKKysJCXdheWxhbmRfY2xpZW50X3Byb3RvY29sX2gsCisrCQl3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oLAorIAkJdGVzdHNfc2VydmVyX3Byb3RvY29sX2gsCisgCQl0ZXN0c19jbGllbnRfcHJvdG9jb2xfYywKKyAJCXRlc3RzX3Byb3RvY29sX2MsCisgCV0sCistCSdjb25uZWN0aW9uLXRlc3QnOiBbIHdheWxhbmRfc2VydmVyX3Byb3RvY29sX2ggXSwKKysJJ2Nvbm5lY3Rpb24tdGVzdCc6IFsKKysJCXdheWxhbmRfY2xpZW50X3Byb3RvY29sX2gsCisrCQl3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oLAorKwldLAorIAknZXZlbnQtbG9vcC10ZXN0JzogWyB3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oIF0sCisgCSdmaXhlZC10ZXN0JzogW10sCisgCSdpbnRlcmZhY2UtdGVzdCc6IFsgd2F5bGFuZF9jbGllbnRfcHJvdG9jb2xfaCBdLAorIAknbGlzdC10ZXN0JzogW10sCisgCSdtYXAtdGVzdCc6IFtdLAorLQknc2FuaXR5LXRlc3QnIDogWyB3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oIF0sCisrCSdzYW5pdHktdGVzdCcgOiBbCisrCQl3YXlsYW5kX2NsaWVudF9wcm90b2NvbF9oLAorKwkJd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfaCwKKysJXSwKKyAJJ3NvY2tldC10ZXN0JzogWworIAkJd2F5bGFuZF9jbGllbnRfcHJvdG9jb2xfaCwKKyAJCXdheWxhbmRfc2VydmVyX3Byb3RvY29sX2gsCitAQCAtMTE2LDcgKzEyNCw3IEBAIHRlc3RzID0geworIAkJZmlsZXMoJy4uL3NyYy93YXlsYW5kLXNlcnZlci5jJyksCisgCQl3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oLAorIAldLAorLQkncmVzb3VyY2VzLXRlc3QnOiBbIHdheWxhbmRfc2VydmVyX3Byb3RvY29sX2NvcmVfaCBdLAorKwkncmVzb3VyY2VzLXRlc3QnOiBbIHdheWxhbmRfc2VydmVyX3Byb3RvY29sX2ggXSwKKyAJJ21lc3NhZ2UtdGVzdCc6IFsKKyAJCXdheWxhbmRfY2xpZW50X3Byb3RvY29sX2gsCisgCQl3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oLAorQEAgLTEyNiwxNCArMTM0LDE2IEBAIHRlc3RzID0geworIAkJd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfaCwKKyAJXSwKKyAJJ3Byb3RvY29sLWxvZ2dlci10ZXN0JzogWworLQkJd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfY29yZV9oLAorLQkJd2F5bGFuZF9jbGllbnRfcHJvdG9jb2xfY29yZV9oLAorKwkJd2F5bGFuZF9jbGllbnRfcHJvdG9jb2xfaCwKKysJCXdheWxhbmRfc2VydmVyX3Byb3RvY29sX2gsCisgCV0sCisgCSdoZWFkZXJzLXRlc3QnOiBbCisrCQl3YXlsYW5kX2NsaWVudF9wcm90b2NvbF9oLAorKwkJd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfaCwKKyAJCSdoZWFkZXJzLXByb3RvY29sLXRlc3QuYycsCistCQknaGVhZGVycy1wcm90b2NvbC1jb3JlLXRlc3QuYycsCistCQl3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9jb3JlX2gsCisgCQl3YXlsYW5kX2NsaWVudF9wcm90b2NvbF9jb3JlX2gsCisrCQl3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9jb3JlX2gsCisrCQknaGVhZGVycy1wcm90b2NvbC1jb3JlLXRlc3QuYycsCisgCV0sCisgCSdvcy13cmFwcGVycy10ZXN0JzogW10sCisgfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLzAwMDEtc2Nhbm5lci1BZGQtY29uZmlndXJlLWNoZWNrLWZvci1zdHJuZHVwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLzAwMDEtc2Nhbm5lci1BZGQtY29uZmlndXJlLWNoZWNrLWZvci1zdHJuZHVwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDQzNTg3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAxLXNjYW5uZXItQWRkLWNvbmZpZ3VyZS1jaGVjay1mb3Itc3RybmR1cC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gM2M4YjQ0NjdhMWNhMjI5ZTcyZmI1MjIzNzg3ZWQ0MDBhMTljNjVjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjUgT2N0IDIwMTkgMjE6MDM6MjMgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gc2Nhbm5lcjogQWRkIGNvbmZpZ3VyZSBjaGVjayBmb3Igc3RybmR1cAotCi1Tb21lIHBsYXRmb3JtcyBtYXkgbm90IGhhdmUgc3RybmR1cCgpIChlLmcuIE1pbkdXKSwgc28gcHJvdmlkZSBhCi1lcXVpdmFsZW50IGltcGxlbWVudGF0aW9uIGlmIGl0J3Mgbm90IGZvdW5kLgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFs0YTFmMzQ4YzIwMTU3ZGI3YmQ3Yzc1OWZkZWIyM2ZiZTg3MjljNTcxXQotU2lnbmVkLW9mZi1ieTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICB8ICAyICstCi0gc3JjL3NjYW5uZXIuYyB8IDExICsrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDhkNTZmMmIuLjFjOTllMjEgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTYzLDcgKzYzLDcgQEAgZmkKLSBBQ19TVUJTVChHQ0NfQ0ZMQUdTKQotIAotIEFDX0NIRUNLX0hFQURFUlMoW3N5cy9wcmN0bC5oXSkKLS1BQ19DSEVDS19GVU5DUyhbYWNjZXB0NCBta29zdGVtcCBwb3NpeF9mYWxsb2NhdGUgcHJjdGxdKQotK0FDX0NIRUNLX0ZVTkNTKFthY2NlcHQ0IG1rb3N0ZW1wIHBvc2l4X2ZhbGxvY2F0ZSBwcmN0bCBzdHJuZHVwXSkKLSAKLSBBQ19BUkdfRU5BQkxFKFtsaWJyYXJpZXNdLAotIAkgICAgICBbQUNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1saWJyYXJpZXNdLAotZGlmZiAtLWdpdCBhL3NyYy9zY2FubmVyLmMgYi9zcmMvc2Nhbm5lci5jCi1pbmRleCBhOTRiZTVkLi4yNzAwNGJjIDEwMDY0NAotLS0tIGEvc3JjL3NjYW5uZXIuYwotKysrIGIvc3JjL3NjYW5uZXIuYwotQEAgLTkxNiw2ICs5MTYsMTcgQEAgdmVyaWZ5X2FyZ3VtZW50cyhzdHJ1Y3QgcGFyc2VfY29udGV4dCAqY3R4LAotIAotIH0KLSAKLSsjaWZuZGVmIEhBVkVfU1RSTkRVUAotK2NoYXIgKgotK3N0cm5kdXAoY29uc3QgY2hhciAqcywgc2l6ZV90IHNpemUpCi0rewotKwljaGFyICpyID0gbWFsbG9jKHNpemUgKyAxKTsKLSsJc3RybmNweShyLCBzLCBzaXplKTsKLSsJcltzaXplXSA9ICdcMCc7Ci0rCXJldHVybiByOwotK30KLSsjZW5kaWYKLSsKLSBzdGF0aWMgdm9pZAotIGVuZF9lbGVtZW50KHZvaWQgKmRhdGEsIGNvbnN0IFhNTF9DaGFyICpuYW1lKQotIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAyLURvLW5vdC1oYXJkY29kZS10aGUtcGF0aC10by13YXlsYW5kLXNjYW5uZXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMi1Eby1ub3QtaGFyZGNvZGUtdGhlLXBhdGgtdG8td2F5bGFuZC1zY2FubmVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxOTk1NDgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMi1Eby1ub3QtaGFyZGNvZGUtdGhlLXBhdGgtdG8td2F5bGFuZC1zY2FubmVyLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gY2JiMjg2MzVhMTA3OWQ2OGU2MmRiYWExZTIxNzkxYTIwZGJiYmFmNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogTW9uLCAxNyBGZWIgMjAyMCAyMTo0NjoxOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBEbyBub3QgaGFyZGNvZGUgdGhlIHBhdGggdG8gd2F5bGFuZC1zY2FubmVyCisKK1RoaXMgcmVzdWx0cyBpbiBob3N0IGNvbnRhbWluYXRpb24gZHVyaW5nIGJ1aWxkcy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBzcmMvbWVzb24uYnVpbGQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbWVzb24uYnVpbGQgYi9zcmMvbWVzb24uYnVpbGQKK2luZGV4IDI5NGFlZTAuLjdlNDEwZmEgMTAwNjQ0CistLS0gYS9zcmMvbWVzb24uYnVpbGQKKysrKyBiL3NyYy9tZXNvbi5idWlsZAorQEAgLTQ5LDcgKzQ5LDcgQEAgcGtnY29uZmlnLmdlbmVyYXRlKAorIAkJJ2RhdGFyb290ZGlyPScgKyBqb2luX3BhdGhzKCcke3ByZWZpeH0nLCBnZXRfb3B0aW9uKCdkYXRhZGlyJykpLAorIAkJJ3BrZ2RhdGFkaXI9JyArIGpvaW5fcGF0aHMoJyR7ZGF0YXJvb3RkaXJ9JywgbWVzb24ucHJvamVjdF9uYW1lKCkpLAorIAkJJ2JpbmRpcj0nICsgam9pbl9wYXRocygnJHtwcmVmaXh9JywgZ2V0X29wdGlvbignYmluZGlyJykpLAorLQkJJ3dheWxhbmRfc2Nhbm5lcj0ke2JpbmRpcn0vd2F5bGFuZC1zY2FubmVyJworKwkJJ3dheWxhbmRfc2Nhbm5lcj13YXlsYW5kLXNjYW5uZXInCisgCV0sCisgCWZpbGViYXNlOiAnd2F5bGFuZC1zY2FubmVyJworICkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAyLU1vdmUtd2xfcHJpdl9zaWduYWwtdG8td2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLzAwMDItTW92ZS13bF9wcml2X3NpZ25hbC10by13YXlsYW5kLXNlcnZlci1wcml2YXRlLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwNWI4NzUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLzAwMDItTW92ZS13bF9wcml2X3NpZ25hbC10by13YXlsYW5kLXNlcnZlci1wcml2YXRlLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAsMCBAQAotRnJvbSBlNzQ2ZjNiZjdjOGJiMmY1ZGNmOWU5M2VkZmZjMjNiNTZlZmYxMmQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgotRGF0ZTogVHVlLCA1IE5vdiAyMDE5IDA5OjA5OjUwIC0wNjAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1vdmUgd2xfcHJpdl9zaWduYWwgdG8gd2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oCi0KLUluY2x1ZGluZyB3YXlsYW5kLXNlcnZlci1jb3JlLmggaW4gd2F5bGFuZC1wcml2YXRlLmggaXMgcHJvYmxlbWF0aWMKLWJlY2F1c2Ugd2F5bGFuZC1wcml2YXRlLmggaXMgaW5jbHVkZWQgYnkgd2F5bGFuZC1zY2FubmVyIHdoaWNoIHNob3VsZCBiZQotYWJsZSB0byBidWlsZCBhZ2FpbnN0IG5vbi1QT1NJWCBwbGF0Zm9ybXMgKGUuZy4gTWluR1cpLiBUaGUgb25seSByZWFzb24KLXRoYXQgd2F5bGFuZC1zZXJ2ZXItY29yZS5oIHdhcyBpbmNsdWRlZCBpbiB3YXlsYW5kLXByaXZhdGUuaCB3YXMgZm9yIHRoZQotd2xfcHJpdmF0ZV9zaWduYWwgZGVmaW5pdGlvbnMsIHNvIG1vdmUgdGhvc2UgdG8gYQotd2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oIGZpbGUgdGhhdCBjYW4gYmUgaW5jbHVkZWQgYnkgYm90aAotd2F5bGFuZC1zZXJ2ZXIuYyBhbmQgdGhlIHRlc3RzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtlN2Q4OGYzNWViODljZjBjYzc3Y2JkZGQ4MzRjYWNjNjM2ODNhOWNjXQotU2lnbmVkLW9mZi1ieTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICB8ICAzICstCi0gc3JjL3dheWxhbmQtcHJpdmF0ZS5oICAgICAgICB8IDIyICstLS0tLS0tLS0tLS0tLQotIHNyYy93YXlsYW5kLXNlcnZlci1wcml2YXRlLmggfCA1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBzcmMvd2F5bGFuZC1zZXJ2ZXIuYyAgICAgICAgIHwgIDEgKwotIHRlc3RzL25ld3NpZ25hbC10ZXN0LmMgICAgICAgfCAgMiArLQotIDUgZmlsZXMgY2hhbmdlZCwgNTggaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy93YXlsYW5kLXNlcnZlci1wcml2YXRlLmgKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IGY0N2QwNTUuLjAyNmQ5ODEgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC01Niw3ICs1Niw4IEBAIGxpYndheWxhbmRfcHJpdmF0ZV9sYV9TT1VSQ0VTID0JCQlcCi0gCXNyYy9jb25uZWN0aW9uLmMJCQlcCi0gCXNyYy93YXlsYW5kLW9zLmMJCQlcCi0gCXNyYy93YXlsYW5kLW9zLmgJCQlcCi0tCXNyYy93YXlsYW5kLXByaXZhdGUuaAotKwlzcmMvd2F5bGFuZC1wcml2YXRlLmgJCQlcCi0rCXNyYy93YXlsYW5kLXNlcnZlci1wcml2YXRlLmgKLSAKLSBpbmNsdWRlX0hFQURFUlMgPQkJCQlcCi0gCXNyYy93YXlsYW5kLXV0aWwuaAkJCVwKLWRpZmYgLS1naXQgYS9zcmMvd2F5bGFuZC1wcml2YXRlLmggYi9zcmMvd2F5bGFuZC1wcml2YXRlLmgKLWluZGV4IDI5NTE2ZWMuLmRjN2QxMmYgMTAwNjQ0Ci0tLS0gYS9zcmMvd2F5bGFuZC1wcml2YXRlLmgKLSsrKyBiL3NyYy93YXlsYW5kLXByaXZhdGUuaAotQEAgLTMxLDExICszMSwxMSBAQAotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotKyNpbmNsdWRlIDxzdGRib29sLmg+Ci0gCi0gI2RlZmluZSBXTF9ISURFX0RFUFJFQ0FURUQgMQotIAotICNpbmNsdWRlICJ3YXlsYW5kLXV0aWwuaCIKLS0jaW5jbHVkZSAid2F5bGFuZC1zZXJ2ZXItY29yZS5oIgotIAotIC8qIEludmFsaWQgbWVtb3J5IGFkZHJlc3MgKi8KLSAjZGVmaW5lIFdMX0FSUkFZX1BPSVNPTl9QVFIgKHZvaWQgKikgNAotQEAgLTIzNiwyNiArMjM2LDYgQEAgemFsbG9jKHNpemVfdCBzKQotIAlyZXR1cm4gY2FsbG9jKDEsIHMpOwotIH0KLSAKLS1zdHJ1Y3Qgd2xfcHJpdl9zaWduYWwgewotLQlzdHJ1Y3Qgd2xfbGlzdCBsaXN0ZW5lcl9saXN0OwotLQlzdHJ1Y3Qgd2xfbGlzdCBlbWl0X2xpc3Q7Ci0tfTsKLS0KLS12b2lkCi0td2xfcHJpdl9zaWduYWxfaW5pdChzdHJ1Y3Qgd2xfcHJpdl9zaWduYWwgKnNpZ25hbCk7Ci0tCi0tdm9pZAotLXdsX3ByaXZfc2lnbmFsX2FkZChzdHJ1Y3Qgd2xfcHJpdl9zaWduYWwgKnNpZ25hbCwgc3RydWN0IHdsX2xpc3RlbmVyICpsaXN0ZW5lcik7Ci0tCi0tc3RydWN0IHdsX2xpc3RlbmVyICoKLS13bF9wcml2X3NpZ25hbF9nZXQoc3RydWN0IHdsX3ByaXZfc2lnbmFsICpzaWduYWwsIHdsX25vdGlmeV9mdW5jX3Qgbm90aWZ5KTsKLS0KLS12b2lkCi0td2xfcHJpdl9zaWduYWxfZW1pdChzdHJ1Y3Qgd2xfcHJpdl9zaWduYWwgKnNpZ25hbCwgdm9pZCAqZGF0YSk7Ci0tCi0tdm9pZAotLXdsX3ByaXZfc2lnbmFsX2ZpbmFsX2VtaXQoc3RydWN0IHdsX3ByaXZfc2lnbmFsICpzaWduYWwsIHZvaWQgKmRhdGEpOwotLQotIHZvaWQKLSB3bF9jb25uZWN0aW9uX2Nsb3NlX2Zkc19pbihzdHJ1Y3Qgd2xfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgaW50IG1heCk7Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL3dheWxhbmQtc2VydmVyLXByaXZhdGUuaCBiL3NyYy93YXlsYW5kLXNlcnZlci1wcml2YXRlLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yM2ZhNDU4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvd2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oCi1AQCAtMCwwICsxLDUzIEBACi0rLyoKLSsgKiBDb3B5cmlnaHQgwqkgMjAwOC0yMDExIEtyaXN0aWFuIEjDuGdzYmVyZwotKyAqIENvcHlyaWdodCDCqSAyMDExIEludGVsIENvcnBvcmF0aW9uCi0rICogQ29weXJpZ2h0IMKpIDIwMTMgSmFzb24gRWtzdHJhbmQKLSsgKgotKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotKyAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSsgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0rICogZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0rICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0rICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotKyAqCi0rICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUKLSsgKiBuZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbAotKyAqIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSsgKgotKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAotKyAqIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECi0rICogTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMKLSsgKiBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4KLSsgKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTgotKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKLSsgKiBTT0ZUV0FSRS4KLSsgKi8KLSsKLSsjaWZuZGVmIFdBWUxBTkRfU0VSVkVSX1BSSVZBVEVfSAotKyNkZWZpbmUgV0FZTEFORF9TRVJWRVJfUFJJVkFURV9ICi0rCi0rI2luY2x1ZGUgIndheWxhbmQtc2VydmVyLWNvcmUuaCIKLSsKLStzdHJ1Y3Qgd2xfcHJpdl9zaWduYWwgewotKwlzdHJ1Y3Qgd2xfbGlzdCBsaXN0ZW5lcl9saXN0OwotKwlzdHJ1Y3Qgd2xfbGlzdCBlbWl0X2xpc3Q7Ci0rfTsKLSsKLSt2b2lkCi0rd2xfcHJpdl9zaWduYWxfaW5pdChzdHJ1Y3Qgd2xfcHJpdl9zaWduYWwgKnNpZ25hbCk7Ci0rCi0rdm9pZAotK3dsX3ByaXZfc2lnbmFsX2FkZChzdHJ1Y3Qgd2xfcHJpdl9zaWduYWwgKnNpZ25hbCwgc3RydWN0IHdsX2xpc3RlbmVyICpsaXN0ZW5lcik7Ci0rCi0rc3RydWN0IHdsX2xpc3RlbmVyICoKLSt3bF9wcml2X3NpZ25hbF9nZXQoc3RydWN0IHdsX3ByaXZfc2lnbmFsICpzaWduYWwsIHdsX25vdGlmeV9mdW5jX3Qgbm90aWZ5KTsKLSsKLSt2b2lkCi0rd2xfcHJpdl9zaWduYWxfZW1pdChzdHJ1Y3Qgd2xfcHJpdl9zaWduYWwgKnNpZ25hbCwgdm9pZCAqZGF0YSk7Ci0rCi0rdm9pZAotK3dsX3ByaXZfc2lnbmFsX2ZpbmFsX2VtaXQoc3RydWN0IHdsX3ByaXZfc2lnbmFsICpzaWduYWwsIHZvaWQgKmRhdGEpOwotKwotKyNlbmRpZgotZGlmZiAtLWdpdCBhL3NyYy93YXlsYW5kLXNlcnZlci5jIGIvc3JjL3dheWxhbmQtc2VydmVyLmMKLWluZGV4IDE5ZjZhNzYuLmQ2ZjAyMDYgMTAwNjQ0Ci0tLS0gYS9zcmMvd2F5bGFuZC1zZXJ2ZXIuYwotKysrIGIvc3JjL3dheWxhbmQtc2VydmVyLmMKLUBAIC00NSw2ICs0NSw3IEBACi0gCi0gI2luY2x1ZGUgIndheWxhbmQtdXRpbC5oIgotICNpbmNsdWRlICJ3YXlsYW5kLXByaXZhdGUuaCIKLSsjaW5jbHVkZSAid2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oIgotICNpbmNsdWRlICJ3YXlsYW5kLXNlcnZlci5oIgotICNpbmNsdWRlICJ3YXlsYW5kLW9zLmgiCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvbmV3c2lnbmFsLXRlc3QuYyBiL3Rlc3RzL25ld3NpZ25hbC10ZXN0LmMKLWluZGV4IDQ3YzQyOWIuLmYzYTdiZDkgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9uZXdzaWduYWwtdGVzdC5jCi0rKysgYi90ZXN0cy9uZXdzaWduYWwtdGVzdC5jCi1AQCAtMjYsNyArMjYsNyBAQAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAKLSAjaW5jbHVkZSAidGVzdC1ydW5uZXIuaCIKLS0jaW5jbHVkZSAid2F5bGFuZC1wcml2YXRlLmgiCi0rI2luY2x1ZGUgIndheWxhbmQtc2VydmVyLXByaXZhdGUuaCIKLSAKLSBzdGF0aWMgdm9pZAotIHNpZ25hbF9ub3RpZnkoc3RydWN0IHdsX2xpc3RlbmVyICpsaXN0ZW5lciwgdm9pZCAqZGF0YSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAyLW1lc29uLmJ1aWxkLWZpbmQtdGhlLW5hdGl2ZS13YXlsYW5kLXNjYW5uZXItZGlyZWN0bHkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMi1tZXNvbi5idWlsZC1maW5kLXRoZS1uYXRpdmUtd2F5bGFuZC1zY2FubmVyLWRpcmVjdGx5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5ODAzN2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMi1tZXNvbi5idWlsZC1maW5kLXRoZS1uYXRpdmUtd2F5bGFuZC1zY2FubmVyLWRpcmVjdGx5LnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gMjU4MmQyNjUzYmE4MDkxN2Q3YmM0NzA4OGUxYTVmNDk1MzBmZGRhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxNiBGZWIgMjAyMCAxNjoyOTo1MyArMDEwMAorU3ViamVjdDogW1BBVENIXSBtZXNvbi5idWlsZDogZmluZCB0aGUgbmF0aXZlIHdheWxhbmQtc2Nhbm5lciBkaXJlY3RseSBpbiBQQVRICisKK090aGVyd2lzZSwgbWVzb24gYXR0ZW1wdHMgdG8gdXNlIHRoZSB0YXJnZXQgcGtnLWNvbmZpZyBhbmQgZmFpbHMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBzcmMvbWVzb24uYnVpbGQgfCAzICstLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9tZXNvbi5idWlsZCBiL3NyYy9tZXNvbi5idWlsZAoraW5kZXggM2U4YzliZi4uMjk0YWVlMCAxMDA2NDQKKy0tLSBhL3NyYy9tZXNvbi5idWlsZAorKysrIGIvc3JjL21lc29uLmJ1aWxkCitAQCAtNTUsOCArNTUsNyBAQCBwa2djb25maWcuZ2VuZXJhdGUoCisgKQorIAorIGlmIG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkKKy0Jc2Nhbm5lcl9kZXAgPSBkZXBlbmRlbmN5KCd3YXlsYW5kLXNjYW5uZXInLCBuYXRpdmU6IHRydWUsIHZlcnNpb246ICc+PTEuMTQuMCcpCistCXdheWxhbmRfc2Nhbm5lcl9mb3JfYnVpbGQgPSBmaW5kX3Byb2dyYW0oc2Nhbm5lcl9kZXAuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnd2F5bGFuZF9zY2FubmVyJykpCisrCXdheWxhbmRfc2Nhbm5lcl9mb3JfYnVpbGQgPSBmaW5kX3Byb2dyYW0oJ3dheWxhbmQtc2Nhbm5lcicpCisgZWxzZQorIAl3YXlsYW5kX3NjYW5uZXJfZm9yX2J1aWxkID0gd2F5bGFuZF9zY2FubmVyCisgZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC9maXhwYXRoaW5wY2ZpbGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kL2ZpeHBhdGhpbnBjZmlsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkMzUyNmQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kL2ZpeHBhdGhpbnBjZmlsZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1GaXggd2F5bGFuZC1jbGllbnQgYW5kIHdheWxhbmQtc2Nhbm5lciBwYyBmaWxlcwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogRmFiaWVuIExhaG91ZGVyZSA8ZmFiaWVuLmxhaG91ZGVyZUBjb2xsYWJvcmEuY28udWs+Ci0KLUluZGV4OiB3YXlsYW5kLTEuMTQuMC9zcmMvd2F5bGFuZC1jbGllbnQucGMuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB3YXlsYW5kLTEuMTQuMC5vcmlnL3NyYy93YXlsYW5kLWNsaWVudC5wYy5pbgotKysrIHdheWxhbmQtMS4xNC4wL3NyYy93YXlsYW5kLWNsaWVudC5wYy5pbgotQEAgLTEsNyArMSw3IEBACi0gcHJlZml4PUBwcmVmaXhACi0gZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAotIGRhdGFyb290ZGlyPUBkYXRhcm9vdGRpckAKLS1wa2dkYXRhZGlyPUBkYXRhZGlyQC9AUEFDS0FHRUAKLStwa2dkYXRhZGlyPSR7cGNfc3lzcm9vdGRpcn1AZGF0YWRpckAvQFBBQ0tBR0VACi0gbGliZGlyPUBsaWJkaXJACi0gaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKLSAKLUluZGV4OiB3YXlsYW5kLTEuMTQuMC9zcmMvd2F5bGFuZC1zY2FubmVyLnBjLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gd2F5bGFuZC0xLjE0LjAub3JpZy9zcmMvd2F5bGFuZC1zY2FubmVyLnBjLmluCi0rKysgd2F5bGFuZC0xLjE0LjAvc3JjL3dheWxhbmQtc2Nhbm5lci5wYy5pbgotQEAgLTIsNyArMiw3IEBAIHByZWZpeD1AcHJlZml4QAotIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKLSBkYXRhcm9vdGRpcj1AZGF0YXJvb3RkaXJACi0gcGtnZGF0YWRpcj1AZGF0YWRpckAvQFBBQ0tBR0VACi0td2F5bGFuZF9zY2FubmVyPUBiaW5kaXJAL3dheWxhbmQtc2Nhbm5lcgotK3dheWxhbmRfc2Nhbm5lcj13YXlsYW5kLXNjYW5uZXIKLSAKLSBOYW1lOiBXYXlsYW5kIFNjYW5uZXIKLSBEZXNjcmlwdGlvbjogV2F5bGFuZCBzY2FubmVyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZThkOWRlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kL3J1bi1wdGVzdApAQCAtMCwwICsxLDE3IEBACisjIS9iaW4vc2gKKworZXhwb3J0IFdBWUxBTkRfU0NBTk5FUj13YXlsYW5kLXNjYW5uZXIKK2V4cG9ydCBURVNUX0RBVEFfRElSPXRlc3RzL2RhdGEKK2V4cG9ydCBURVNUX09VVFBVVF9ESVI9dGVzdHMvb3V0cHV0CitleHBvcnQgU0VEPXNlZAorZXhwb3J0IFdBWUxBTkRfRUdMX0xJQj0vdXNyL2xpYi9saWJ3YXlsYW5kLWVnbC5zby4xCitleHBvcnQgTk09bm0KKworZm9yIGkgaW4gYGxzIHRlc3RzLyotdGVzdCB0ZXN0cy93YXlsYW5kLWVnbC1zeW1ib2xzLWNoZWNrIHRlc3RzL3NjYW5uZXItdGVzdC5zaGA7IGRvCisgICAgJGkKKyAgICBpZiBbICQ/IC1lcSAwIF07IHRoZW4KKyAgICAgICAgZWNobyAiUEFTUzogJGkiCisgICAgZWxzZQorICAgICAgICBlY2hvICJGQUlMOiAkaSIKKyAgICBmaQorZG9uZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kXzEuMTcuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjE3LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNWE4ZjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kXzEuMTcuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVNVTU1BUlkgPSAiV2F5bGFuZCwgYSBwcm90b2NvbCBiZXR3ZWVuIGEgY29tcG9zaXRvciBhbmQgY2xpZW50cyIKLURFU0NSSVBUSU9OID0gIldheWxhbmQgaXMgYSBwcm90b2NvbCBmb3IgYSBjb21wb3NpdG9yIHRvIHRhbGsgdG8gaXRzIGNsaWVudHMgXAotYXMgd2VsbCBhcyBhIEMgbGlicmFyeSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IHByb3RvY29sLiBUaGUgY29tcG9zaXRvciBjYW4gYmUgXAotYSBzdGFuZGFsb25lIGRpc3BsYXkgc2VydmVyIHJ1bm5pbmcgb24gTGludXgga2VybmVsIG1vZGVzZXR0aW5nIGFuZCBldmRldiBcCi1pbnB1dCBkZXZpY2VzLCBhbiBYIGFwcGxpY2F0aW9uLCBvciBhIHdheWxhbmQgY2xpZW50IGl0c2VsZi4gVGhlIGNsaWVudHMgY2FuIFwKLWJlIHRyYWRpdGlvbmFsIGFwcGxpY2F0aW9ucywgWCBzZXJ2ZXJzIChyb290bGVzcyBvciBmdWxsc2NyZWVuKSBvciBvdGhlciBcCi1kaXNwbGF5IHNlcnZlcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMzFkOGY1M2I2YWFmMmI0OTg1ZDdkZDc4MTBhNzBkMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvd2F5bGFuZC1zZXJ2ZXIuYztlbmRsaW5lPTI0O21kNT1iOGUwNDYxNjRhNzY2YmIxZWRlOGJhMzhlOWRjZDdjZSIKLQotREVQRU5EUyA9ICJleHBhdCBsaWJ4bWwyIGxpYmZmaSB3YXlsYW5kLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAotCSAgIGZpbGU6Ly9maXhwYXRoaW5wY2ZpbGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc2Nhbm5lci1BZGQtY29uZmlndXJlLWNoZWNrLWZvci1zdHJuZHVwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItTW92ZS13bF9wcml2X3NpZ25hbC10by13YXlsYW5kLXNlcnZlci1wcml2YXRlLmgucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZDkxZjk3MGFlYTExZmQ1NDllYWUwMjNkMDZmOTFhZjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzJhYTExYjhhYzZlMjJmNDc3NzMwMmM5MjUxZThmZWM3NjU1ZGMyMmY5ZDk0ZWU2NzZjNmIyNzZmOTVmOTFhNCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMuaHRtbCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLXdpdGgtaG9zdC1zY2FubmVyIgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLWRpc2FibGUtbGlicmFyaWVzIgotCi0jIFdheWxhbmQgaW5zdGFsbHMgYSBNNCBtYWNybyBmb3Igb3RoZXIgcHJvamVjdHMgdG8gdXNlLCB3aGljaCB1c2VzIHRoZSB0YXJnZXQKLSMgcGtnLWNvbmZpZyB0byBmaW5kIGZpbGVzLiAgUmVwbGFjZSBwa2ctY29uZmlnIHdpdGggcGtnLWNvbmZpZy1uYXRpdmUuCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gIHNlZCAtZSAncyxQS0dfQ0hFQ0tfTU9EVUxFUyguKiksLGcnIFwKLSAgICAgIC1lICdzLCRQS0dfQ09ORklHLHBrZy1jb25maWctbmF0aXZlLGcnIFwKLSAgICAgIC1pICR7RH0vJHtkYXRhZGlyfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNAotfQotCi1zeXNyb290X3N0YWdlX2FsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKLQlybSAke1NZU1JPT1RfREVTVERJUn0vJHtkYXRhZGlyfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNAotCWNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYWNsb2NhbC93YXlsYW5kLXNjYW5uZXIubTQgJHtTWVNST09UX0RFU1RESVJ9LyR7ZGF0YWRpcn0vYWNsb2NhbC8KLX0KLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9Lyoke1NPTElCU30iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfSAke2RhdGFkaXJ9L3dheWxhbmQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjE4LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xOC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwYmUzYWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xOC4wLmJiCkBAIC0wLDAgKzEsNjIgQEAKK1NVTU1BUlkgPSAiV2F5bGFuZCwgYSBwcm90b2NvbCBiZXR3ZWVuIGEgY29tcG9zaXRvciBhbmQgY2xpZW50cyIKK0RFU0NSSVBUSU9OID0gIldheWxhbmQgaXMgYSBwcm90b2NvbCBmb3IgYSBjb21wb3NpdG9yIHRvIHRhbGsgdG8gaXRzIGNsaWVudHMgXAorYXMgd2VsbCBhcyBhIEMgbGlicmFyeSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IHByb3RvY29sLiBUaGUgY29tcG9zaXRvciBjYW4gYmUgXAorYSBzdGFuZGFsb25lIGRpc3BsYXkgc2VydmVyIHJ1bm5pbmcgb24gTGludXgga2VybmVsIG1vZGVzZXR0aW5nIGFuZCBldmRldiBcCitpbnB1dCBkZXZpY2VzLCBhbiBYIGFwcGxpY2F0aW9uLCBvciBhIHdheWxhbmQgY2xpZW50IGl0c2VsZi4gVGhlIGNsaWVudHMgY2FuIFwKK2JlIHRyYWRpdGlvbmFsIGFwcGxpY2F0aW9ucywgWCBzZXJ2ZXJzIChyb290bGVzcyBvciBmdWxsc2NyZWVuKSBvciBvdGhlciBcCitkaXNwbGF5IHNlcnZlcnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMzFkOGY1M2I2YWFmMmI0OTg1ZDdkZDc4MTBhNzBkMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvd2F5bGFuZC1zZXJ2ZXIuYztlbmRsaW5lPTI0O21kNT1iOGUwNDYxNjRhNzY2YmIxZWRlOGJhMzhlOWRjZDdjZSIKKworREVQRU5EUyA9ICJleHBhdCBsaWJmZmkgd2F5bGFuZC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLW1lc29uLmJ1aWxkLWZpbmQtdGhlLW5hdGl2ZS13YXlsYW5kLXNjYW5uZXItZGlyZWN0bHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1Eby1ub3QtaGFyZGNvZGUtdGhlLXBhdGgtdG8td2F5bGFuZC1zY2FubmVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtRml4LXN0cm5kdXAtZGV0ZWN0aW9uLW9uLU1pbkdXLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVzb24tdGVzdHMtYWRkLW1pc3NpbmctZGVwZW5kZW5jaWVzLW9uLXByb3RvY29sLWhlYS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMzMxNzY5N2I2ZTNmZjJlMWFjOGM1YmEzZWQ1N2I2NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0Njc1YTc5ZjA5MTAyMDgxN2E5OGZkMDQ4NGU3MjA4Yzg3NjIyNDIyNjY5NjdmNTVhNjc3NzY5MzZjMmUyOTRkIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy5odG1sIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBwdGVzdAorCitQQUNLQUdFQ09ORklHID8/PSAiZHRkLXZhbGlkYXRpb24iCitQQUNLQUdFQ09ORklHW2R0ZC12YWxpZGF0aW9uXSA9ICItRGR0ZF92YWxpZGF0aW9uPXRydWUsLURkdGRfdmFsaWRhdGlvbj1mYWxzZSxsaWJ4bWwyLCwiCisKK0VYVFJBX09FTUVTT04gPSAiLURkb2N1bWVudGF0aW9uPWZhbHNlIgorRVhUUkFfT0VNRVNPTl9jbGFzcy1uYXRpdmUgPSAiLURkb2N1bWVudGF0aW9uPWZhbHNlIC1EbGlicmFyaWVzPWZhbHNlIgorCisjIFdheWxhbmQgaW5zdGFsbHMgYSBNNCBtYWNybyBmb3Igb3RoZXIgcHJvamVjdHMgdG8gdXNlLCB3aGljaCB1c2VzIHRoZSB0YXJnZXQKKyMgcGtnLWNvbmZpZyB0byBmaW5kIGZpbGVzLiAgUmVwbGFjZSBwa2ctY29uZmlnIHdpdGggcGtnLWNvbmZpZy1uYXRpdmUuCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgIHNlZCAtZSAncyxQS0dfQ0hFQ0tfTU9EVUxFUyguKiksLGcnIFwKKyAgICAgIC1lICdzLCRQS0dfQ09ORklHLHBrZy1jb25maWctbmF0aXZlLGcnIFwKKyAgICAgIC1pICR7RH0vJHtkYXRhZGlyfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNAorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIG1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2RhdGEKKyAgICBjcCAtcmYgJHtCfS90ZXN0cy8qLXRlc3QgJHtCfS90ZXN0cy8qLWNoZWNrZXIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBjcCAtcmYgJHtCfS90ZXN0cy8qLWNoZWNrZXIgJHtEfSR7UFRFU1RfUEFUSH0KKyAgICBjcCAtcmYgJHtTfS90ZXN0cy9zY2FubmVyLXRlc3Quc2ggJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBjcCAtcmYgJHtTfS90ZXN0cy9kYXRhLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvZGF0YS8KKyAgICBjcCAtcmYgJHtTfS9lZ2wvd2F5bGFuZC1lZ2wtc3ltYm9scy1jaGVjayAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KK30KKworc3lzcm9vdF9zdGFnZV9hbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7CisJcm0gJHtTWVNST09UX0RFU1RESVJ9LyR7ZGF0YWRpcn0vYWNsb2NhbC93YXlsYW5kLXNjYW5uZXIubTQKKwljcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00ICR7U1lTUk9PVF9ERVNURElSfS8ke2RhdGFkaXJ9L2FjbG9jYWwvCit9CisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8qJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0gJHtkYXRhZGlyfS93YXlsYW5kIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJiaW51dGlscyBzZWQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC5iYgppbmRleCBlM2U3MzllLi40MGFhNzYyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQuYmIKQEAgLTUsNiArNSw3IEBACiBQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgogCiBTUkNfVVJJID0gImZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgZmlsZTovL3dlc3Rvbi5lbnYgXAogICAgICAgICAgICBmaWxlOi8vd2VzdG9uLmluaSBcCiAgICAgICAgICAgIGZpbGU6Ly93ZXN0b25ALnNlcnZpY2UgXAogICAgICAgICAgICBmaWxlOi8vNzEtd2VzdG9uLWRybS5ydWxlcyBcCkBAIC0xNSw2ICsxNiw3IEBACiBkb19pbnN0YWxsKCkgewogCWluc3RhbGwgLURtNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL3dlc3RvbgogCWluc3RhbGwgLUQgLXAgLW0wNjQ0ICR7V09SS0RJUn0vd2VzdG9uLmluaSAke0R9JHtzeXNjb25mZGlyfS94ZGcvd2VzdG9uL3dlc3Rvbi5pbmkKKwlpbnN0YWxsIC1EbTY0NCAke1dPUktESVJ9L3dlc3Rvbi5lbnYgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC93ZXN0b24KIAogCSMgSW5zdGFsbCBXZXN0b24gc3lzdGVtZCBzZXJ2aWNlIGFuZCBhY2NvbXBhbnlpbmcgdWRldiBydWxlCiAJaW5zdGFsbCAtRCAtcCAtbTA2NDQgJHtXT1JLRElSfS93ZXN0b25ALnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vd2VzdG9uQC5zZXJ2aWNlCkBAIC0zMCw2ICszMiwxNCBAQAogCXNlZCAtaSAncyxATE9DQUxTVEFURURJUkAsJHtsb2NhbHN0YXRlZGlyfSxnJyAke0R9JHtiaW5kaXJ9L3dlc3Rvbi1zdGFydAogfQogCitkb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2xfcWVtdXg4NigpIHsKKyAgICAgICAgZWNobyAiV0VTVE9OX0RJU0FCTEVfQVRPTUlDPVkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvd2VzdG9uCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2xpYmMtbXVzbF9xZW11eDg2LTY0KCkgeworICAgICAgICBlY2hvICJXRVNUT05fRElTQUJMRV9BVE9NSUM9WSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC93ZXN0b24KK30KKwogaW5oZXJpdCB1cGRhdGUtcmMuZCBmZWF0dXJlc19jaGVjayBzeXN0ZW1kCiAKICMgcmRlcGVuZHMgb24gd2VzdG9uIHdoaWNoIGRlcGVuZHMgb24gdmlydHVhbC9lZ2wKQEAgLTQwLDkgKzUwLDkgQEAKIElOSVRTQ1JJUFRfTkFNRSA9ICJ3ZXN0b24iCiBJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA5IDUgMiAuIHN0b3AgMjAgMCAxIDYgLiIKIAotRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0veGRnL3dlc3Rvbi93ZXN0b24uaW5pICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vd2VzdG9uQC5zZXJ2aWNlIgorRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0veGRnL3dlc3Rvbi93ZXN0b24uaW5pICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vd2VzdG9uQC5zZXJ2aWNlICR7c3lzY29uZmRpcn0vZGVmYXVsdC93ZXN0b24iCiAKLUNPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS94ZGcvd2VzdG9uL3dlc3Rvbi5pbmkiCitDT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0veGRnL3dlc3Rvbi93ZXN0b24uaW5pICR7c3lzY29uZmRpcn0vZGVmYXVsdC93ZXN0b24iCiAKIFNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ3ZXN0b25AJWkuc2VydmljZSIKIFNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvcWVtdWFsbC93ZXN0b24uaW5pIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC9xZW11YWxsL3dlc3Rvbi5pbmkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdlYmQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvcWVtdWFsbC93ZXN0b24uaW5pCkBAIC0wLDAgKzEsMiBAQAorW2NvcmVdCitiYWNrZW5kPWZiZGV2LWJhY2tlbmQuc28KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvcWVtdXg4Ni02NC93ZXN0b24uaW5pIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC9xZW11eDg2LTY0L3dlc3Rvbi5pbmkKaW5kZXggMTdlYmQ3Zi4uZTY5ZGUyOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC9xZW11eDg2LTY0L3dlc3Rvbi5pbmkKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC9xZW11eDg2LTY0L3dlc3Rvbi5pbmkKQEAgLTEsMiArMCwwIEBACi1bY29yZV0KLWJhY2tlbmQ9ZmJkZXYtYmFja2VuZC5zbwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC9xZW11eDg2L3dlc3Rvbi5pbmkgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3FlbXV4ODYvd2VzdG9uLmluaQppbmRleCAxN2ViZDdmLi5lNjlkZTI5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3FlbXV4ODYvd2VzdG9uLmluaQorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3FlbXV4ODYvd2VzdG9uLmluaQpAQCAtMSwyICswLDAgQEAKLVtjb3JlXQotYmFja2VuZD1mYmRldi1iYWNrZW5kLnNvCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3Rvbi5lbnYgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3Rvbi5lbnYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvd2VzdG9uLmVudgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b24uaW5pIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b24uaW5pCmluZGV4IDFlZWNmNDguLjFlNmRmZjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvd2VzdG9uLmluaQorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3Rvbi5pbmkKQEAgLTEsOSArMSwxMCBAQAogIyBjb25maWd1cmF0aW9uIGZpbGUgZm9yIFdlc3RvbgogCi0jW2NvcmVdCitbY29yZV0KICNtb2R1bGVzPXh3YXlsYW5kLnNvLGNtcy1jb2xvcmQuc28KICNzaGVsbD1kZXNrdG9wLXNoZWxsLnNvCiAjZ2JtLWZvcm1hdD14cmdiMjEwMTAxMAorcmVxdWlyZS1pbnB1dD1mYWxzZQogCiAjW3NoZWxsXQogI2JhY2tncm91bmQtaW1hZ2U9L3Vzci9zaGFyZS9iYWNrZ3JvdW5kcy9nbm9tZS9BcXVhLmpwZwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b25ALnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3RvbkAuc2VydmljZQppbmRleCA5ZWNmMmFiLi4zOWUxOTMwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3RvbkAuc2VydmljZQorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3RvbkAuc2VydmljZQpAQCAtMSwzNyArMSwxNSBAQAogW1VuaXRdCi1EZXNjcmlwdGlvbj1XZXN0b24gV2F5bGFuZCBDb21wb3NpdG9yIChvbiB0dHk3KQorRGVzY3JpcHRpb249V2VzdG9uIFdheWxhbmQgQ29tcG9zaXRvcgogUmVxdWlyZXNNb3VudHNGb3I9L3J1bgotQ29uZmxpY3RzPWdldHR5QHR0eTcuc2VydmljZSBwbHltb3V0aC1xdWl0LnNlcnZpY2UKLUFmdGVyPXN5c3RlbWQtdXNlci1zZXNzaW9ucy5zZXJ2aWNlIGdldHR5QHR0eTcuc2VydmljZSBwbHltb3V0aC1xdWl0LXdhaXQuc2VydmljZQorQ29uZmxpY3RzPXBseW1vdXRoLXF1aXQuc2VydmljZQorQWZ0ZXI9c3lzdGVtZC11c2VyLXNlc3Npb25zLnNlcnZpY2UgcGx5bW91dGgtcXVpdC13YWl0LnNlcnZpY2UKIAogW1NlcnZpY2VdCiBVc2VyPSVpCi1QZXJtaXNzaW9uc1N0YXJ0T25seT10cnVlCi0KLSMgTG9nIHVzIGluIHZpYSBQQU0gc28gd2UgZ2V0IG91ciBYREcgJiBjby4gZW52aXJvbm1lbnQgYW5kCi0jIGFyZSB0cmVhdGVkIGFzIGxvZ2dlZCBpbiBzbyB3ZSBjYW4gdXNlIHRoZSB0dHk6CiBQQU1OYW1lPWxvZ2luCi0KLSMgR3JhYiB0dHk3Ci1VdG1wSWRlbnRpZmllcj10dHk3Ci1UVFlQYXRoPS9kZXYvdHR5NwotVFRZUmVzZXQ9eWVzCi1UVFlWSGFuZ3VwPXllcwotVFRZVlREaXNhbGxvY2F0ZT15ZXMKLQotIyBzdGRlcnIgdG8gam91cm5hbCBzbyBvdXIgbG9nZ2luZyBkb2Vzbid0IGdldCB0aHJvd24gaW50byAvZGV2L251bGwKLVN0YW5kYXJkT3V0cHV0PXR0eQotU3RhbmRhcmRJbnB1dD10dHkKLVN0YW5kYXJkRXJyb3I9am91cm5hbAotCiBFbnZpcm9ubWVudEZpbGU9LS9ldGMvZGVmYXVsdC93ZXN0b24KLQotIyBXZXN0b24gZG9lcyBub3Qgc3VjY2Vzc2Z1bGx5IGNoYW5nZSBWVCwgbm9yIGRvZXMgc3lzdGVtZCBwbGFjZSB1cyBvbgotIyB0aGUgVlQgaXQganVzdCBhY3RpdmF0ZWQgZm9yIHVzLiBTd2l0Y2ggbWFudWFsbHk6Ci1FeGVjU3RhcnRQcmU9L3Vzci9iaW4vY2h2dCA3Ci1FeGVjU3RhcnQ9L3Vzci9iaW4vd2VzdG9uIC0tbG9nPSR7WERHX1JVTlRJTUVfRElSfS93ZXN0b24ubG9nICRPUFRBUkdTCi0KK1N0YW5kYXJkRXJyb3I9am91cm5hbAorUGVybWlzc2lvbnNTdGFydE9ubHk9dHJ1ZQogSWdub3JlU0lHUElQRT1ubwogCi0jW0luc3RhbGxdCi0jQWxpYXM9bXVsdGktdXNlci50YXJnZXQud2FudHMvd2VzdG9uLnNlcnZpY2UKK0V4ZWNTdGFydD0vdXNyL2Jpbi93ZXN0b24tc3RhcnQgLXYgLWUgLS0gJE9QVEFSR1MKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaAppbmRleCBlNTA4NDViLi42MmI4NjRjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLXdlc3Rvbi1sYXVuY2gtUHJvdmlkZS1hLWRlZmF1bHQtdmVyc2lvbi10aGF0LWRvZXNuLXQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS13ZXN0b24tbGF1bmNoLVByb3ZpZGUtYS1kZWZhdWx0LXZlcnNpb24tdGhhdC1kb2Vzbi10LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA2ODJiN2Q3OWE3YjgxZWM4ZTM4NzYwMzgxMTA0YjI0YWQ1NDllOGMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1ZjJkNzE5OThlYjc3MDY4Y2JhZWUyZDQ2OGNiYjI5NmE0MmQ1NzM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogVG9tIEhvY2hzdGVpbiA8dG9tLmhvY2hzdGVpbkBueHAuY29tPgogRGF0ZTogV2VkLCAyMiBGZWIgMjAxNyAxNTo1MzozMCArMDIwMAogU3ViamVjdDogW1BBVENIXSB3ZXN0b24tbGF1bmNoOiBQcm92aWRlIGEgZGVmYXVsdCB2ZXJzaW9uIHRoYXQgZG9lc24ndCByZXF1aXJlCkBAIC0xNiw2ICsxNiw3IEBACiBTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogU2lnbmVkLW9mZi1ieTogRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4KIFNpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxtaW5nLmxpdUB0b3JhZGV4LmNvbT4KKwogLS0tCiAgbGlid2VzdG9uL21lc29uLmJ1aWxkICAgICB8IDE2ICsrKysrKysrKysrKy0tLS0KICBsaWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCkBAIC0yMywxMCArMjQsMTAgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9saWJ3ZXN0b24vbWVzb24uYnVpbGQgYi9saWJ3ZXN0b24vbWVzb24uYnVpbGQKLWluZGV4IGQ4ZDNmYzAuLjMyNjY4M2YgMTAwNjQ0CitpbmRleCAwOGQyM2VjLi5jYjlmZDNmIDEwMDY0NAogLS0tIGEvbGlid2VzdG9uL21lc29uLmJ1aWxkCiArKysgYi9saWJ3ZXN0b24vbWVzb24uYnVpbGQKLUBAIC0xOTksMTYgKzE5OSwyNCBAQCBkZXBfdmVydGV4X2NsaXBwaW5nID0gZGVjbGFyZV9kZXBlbmRlbmN5KAorQEAgLTIxNiwxNiArMjE2LDI0IEBAIGRlcF92ZXJ0ZXhfY2xpcHBpbmcgPSBkZWNsYXJlX2RlcGVuZGVuY3koCiAgKQogIAogIGlmIGdldF9vcHRpb24oJ3dlc3Rvbi1sYXVuY2gnKQpAQCAtNTIsMTEgKzUzLDExIEBACiAgCQknd2VzdG9uLWxhdW5jaC5jJywKIC0JCWRlcGVuZGVuY2llczogW2RlcF9wYW0sIHN5c3RlbWRfZGVwLCBkZXBfbGliZHJtXSwKICsJCWRlcGVuZGVuY2llczogZGVwc193ZXN0b25fbGF1bmNoLAotIAkJaW5jbHVkZV9kaXJlY3RvcmllczogaW5jbHVkZV9kaXJlY3RvcmllcygnLi4nKSwKKyAJCWluY2x1ZGVfZGlyZWN0b3JpZXM6IGNvbW1vbl9pbmMsCiAgCQlpbnN0YWxsOiB0cnVlCiAgCSkKIGRpZmYgLS1naXQgYS9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jIGIvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYwotaW5kZXggNDk2MmJkNi4uZmM1MzFjNSAxMDA2NDQKK2luZGV4IDhhNzExYjQuLjU0YzU2N2EgMTAwNjQ0CiAtLS0gYS9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jCiArKysgYi9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jCiBAQCAtNTEsNyArNTEsOSBAQApAQCAtMTEyLDcgKzExMyw3IEBACiAgCiAgCWlmIChpb2N0bCh3bC0+dHR5LCBLRFNLQk1VVEUsIDApICYmCiAgCSAgICBpb2N0bCh3bC0+dHR5LCBLRFNLQk1PREUsIHdsLT5rYl9tb2RlKSkKLUBAIC02NjAsNiArNjY4LDcgQEAgc2V0dXBfc2Vzc2lvbihzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wsIGNoYXIgKipjaGlsZF9hcmd2KQorQEAgLTY2Niw2ICs2NzQsNyBAQCBzZXR1cF9zZXNzaW9uKHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCwgY2hhciAqKmNoaWxkX2FyZ3YpCiAgCXNldGVudigiSE9NRSIsIHdsLT5wdy0+cHdfZGlyLCAxKTsKICAJc2V0ZW52KCJTSEVMTCIsIHdsLT5wdy0+cHdfc2hlbGwsIDEpOwogIApAQCAtMTIwLDcgKzEyMSw3IEBACiAgCWVudiA9IHBhbV9nZXRlbnZsaXN0KHdsLT5waCk7CiAgCWlmIChlbnYpIHsKICAJCWZvciAoaSA9IDA7IGVudltpXTsgKytpKSB7Ci1AQCAtNjY4LDYgKzY3Nyw3IEBAIHNldHVwX3Nlc3Npb24oc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsLCBjaGFyICoqY2hpbGRfYXJndikKK0BAIC02NzQsNiArNjgzLDcgQEAgc2V0dXBfc2Vzc2lvbihzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wsIGNoYXIgKipjaGlsZF9hcmd2KQogIAkJfQogIAkJZnJlZShlbnYpOwogIAl9CkBAIC0xMjgsNyArMTI5LDcgQEAKICAKICAJLyoKICAJICogV2Ugb3BlbiBhIG5ldyBzZXNzaW9uLCBzbyBpdCBtYWtlcyBzZW5zZQotQEAgLTczOSw4ICs3NDksMTAgQEAgc3RhdGljIHZvaWQKK0BAIC03NDUsOCArNzU1LDEwIEBAIHN0YXRpYyB2b2lkCiAgaGVscChjb25zdCBjaGFyICpuYW1lKQogIHsKICAJZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMgW2FyZ3MuLi5dIFstLSBbd2VzdG9uIGFyZ3MuLl1dXG4iLCBuYW1lKTsKQEAgLTEzOSw3ICsxNDAsNyBAQAogIAlmcHJpbnRmKHN0ZGVyciwgIiAgLXQsIC0tdHR5ICAgICAgIFN0YXJ0IHNlc3Npb24gb24gYWx0ZXJuYXRpdmUgdHR5LFxuIgogIAkJCSIgICAgICAgICAgICAgICAgICBlLmcuIC10IC9kZXYvdHR5NCwgcmVxdWlyZXMgLXUgb3B0aW9uLlxuIik7CiAgCWZwcmludGYoc3RkZXJyLCAiICAtdiwgLS12ZXJib3NlICAgQmUgdmVyYm9zZVxuIik7Ci1AQCAtNzU0LDcgKzc2Niw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK0BAIC03NjAsNyArNzcyLDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogIAlpbnQgaSwgYzsKICAJY2hhciAqdHR5ID0gTlVMTDsKICAJc3RydWN0IG9wdGlvbiBvcHRzW10gPSB7CkBAIC0xNDksNyArMTUwLDcgQEAKICAJCXsgInR0eSIsICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3QnIH0sCiAgCQl7ICJ2ZXJib3NlIiwgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICd2JyB9LAogIAkJeyAiaGVscCIsICAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnaCcgfSwKLUBAIC03NjYsMTEgKzc4MCwxNiBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCitAQCAtNzcyLDExICs3ODYsMTYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogIAl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAidTp0OnZoIiwgb3B0cywgJmkpKSAhPSAtMSkgewogIAkJc3dpdGNoIChjKSB7CiAgCQljYXNlICd1JzoKQEAgLTE2Niw3ICsxNjcsNyBAQAogIAkJCWJyZWFrOwogIAkJY2FzZSAndCc6CiAgCQkJdHR5ID0gb3B0YXJnOwotQEAgLTgyMiw4ICs4NDEsMTAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorQEAgLTgyOCw4ICs4NDcsMTAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogIAlpZiAoc2V0dXBfdHR5KCZ3bCwgdHR5KSA8IDApCiAgCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAgCkBAIC0xNzgsNyArMTc5LDcgQEAKICAJaWYgKHNldHVwX2xhdW5jaGVyX3NvY2tldCgmd2wpIDwgMCkKICAJCWV4aXQoRVhJVF9GQUlMVVJFKTsKIGRpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0Ci1pbmRleCBkNWJmMWQ1Li4yNTRlYjJiIDEwMDY0NAoraW5kZXggYzg2MmVjYy4uNzNlZjJjMyAxMDA2NDQKIC0tLSBhL21lc29uX29wdGlvbnMudHh0CiArKysgYi9tZXNvbl9vcHRpb25zLnR4dAogQEAgLTczLDYgKzczLDEzIEBAIG9wdGlvbigKQEAgLTE5NSw2ICsxOTYsMyBAQAogIAkneHdheWxhbmQnLAogIAl0eXBlOiAnYm9vbGVhbicsCiAgCXZhbHVlOiB0cnVlLAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl83LjAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzcuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjU0OGQzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzcuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLVNVTU1BUlkgPSAiV2VzdG9uLCBhIFdheWxhbmQgY29tcG9zaXRvciIKLURFU0NSSVBUSU9OID0gIldlc3RvbiBpcyB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9mIGEgV2F5bGFuZCBjb21wb3NpdG9yIgotSE9NRVBBR0UgPSAiaHR0cDovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzllZTllNjZiYjBmOTVkMzM4NmE3YWNhZTc4MGI3MCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJ3ZXN0b24vY29tcG9zaXRvci5jO2VuZGxpbmU9Mjc7bWQ1PTZjNTNiYmJkOTkyNzNmNGY3YzRhZmZhODU1YzMzYzBhIgotCi1TUkNfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly93ZXN0b24ucG5nIFwKLSAgICAgICAgICAgZmlsZTovL3dlc3Rvbi5kZXNrdG9wIFwKLSAgICAgICAgICAgZmlsZTovL3h3YXlsYW5kLndlc3Rvbi1zdGFydCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXdlc3Rvbi1sYXVuY2gtUHJvdmlkZS1hLWRlZmF1bHQtdmVyc2lvbi10aGF0LWRvZXNuLXQucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImNiZmRhNDgzYmMyNTAxZDA4MzFhZjNmMzNjNzA3ODUwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEwMGE2ZDIwN2I2YTQ1Zjk1ZjQ0MDFjNjA0NzcyYTMwN2MzNzY3ZTVlMmJlZWNmM2Q4NzkxMTBjNDM5MDlhNjQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLmh0bWwiCi0KLWluaGVyaXQgbWVzb24gcGtnY29uZmlnIHVzZXJhZGQgZmVhdHVyZXNfY2hlY2sKLSMgZGVwZW5kcyBvbiB2aXJ0dWFsL2VnbAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLQotREVQRU5EUyA9ICJsaWJ4a2Jjb21tb24gZ2RrLXBpeGJ1ZiBwaXhtYW4gY2Fpcm8gZ2xpYi0yLjAganBlZyIKLURFUEVORFMgKz0gIndheWxhbmQgd2F5bGFuZC1wcm90b2NvbHMgbGliaW5wdXQgdmlydHVhbC9lZ2wgcGFuZ28gd2F5bGFuZC1uYXRpdmUiCi0KLVdFU1RPTl9NQUpPUl9WRVJTSU9OID0gIiR7QCcuJy5qb2luKGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMDoxXSl9IgotCi1FWFRSQV9PRU1FU09OICs9ICItRGJhY2tlbmQtZGVmYXVsdD1hdXRvIC1EYmFja2VuZC1yZHA9ZmFsc2UgLURwaXBld2lyZT1mYWxzZSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICdrbXMgZmJkZXYgd2F5bGFuZCBlZ2wnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSB3YXlsYW5kJywgJ3h3YXlsYW5kJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtIHN5c3RlbWQgeDExJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWluc19hbnkoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsICcnLCAnaGVhZGxlc3MnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgIGNsaWVudHMgbGF1bmNoIgotIwotIyBDb21wb3NpdG9yIGNob2ljZXMKLSMKLSMgV2VzdG9uIG9uIEtNUwotUEFDS0FHRUNPTkZJR1trbXNdID0gIi1EYmFja2VuZC1kcm09dHJ1ZSwtRGJhY2tlbmQtZHJtPWZhbHNlLGRybSB1ZGV2IHZpcnR1YWwvZWdsIHZpcnR1YWwvbGliZ2xlczIgdmlydHVhbC9saWJnYm0gbXRkZXYiCi0jIFdlc3RvbiBvbiBXYXlsYW5kIChuZXN0ZWQgV2VzdG9uKQotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItRGJhY2tlbmQtd2F5bGFuZD10cnVlLC1EYmFja2VuZC13YXlsYW5kPWZhbHNlLHZpcnR1YWwvZWdsIHZpcnR1YWwvbGliZ2xlczIiCi0jIFdlc3RvbiBvbiBYMTEKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItRGJhY2tlbmQteDExPXRydWUsLURiYWNrZW5kLXgxMT1mYWxzZSx2aXJ0dWFsL2xpYngxMSBsaWJ4Y2IgbGlieGNiIGxpYnhjdXJzb3IgY2Fpcm8iCi0jIEhlYWRsZXNzIFdlc3RvbgotUEFDS0FHRUNPTkZJR1toZWFkbGVzc10gPSAiLURiYWNrZW5kLWhlYWRsZXNzPXRydWUsLURiYWNrZW5kLWhlYWRsZXNzPWZhbHNlIgotIyBXZXN0b24gb24gZnJhbWVidWZmZXIKLVBBQ0tBR0VDT05GSUdbZmJkZXZdID0gIi1EYmFja2VuZC1mYmRldj10cnVlLC1EYmFja2VuZC1mYmRldj1mYWxzZSx1ZGV2IG10ZGV2IgotIyB3ZXN0b24tbGF1bmNoCi1QQUNLQUdFQ09ORklHW2xhdW5jaF0gPSAiLUR3ZXN0b24tbGF1bmNoPXRydWUsLUR3ZXN0b24tbGF1bmNoPWZhbHNlLGRybSIKLSMgVkEtQVBJIGRlc2t0b3AgcmVjb3JkZXIKLVBBQ0tBR0VDT05GSUdbdmFhcGldID0gIi1EYmFja2VuZC1kcm0tc2NyZWVuY2FzdC12YWFwaT10cnVlLC1EYmFja2VuZC1kcm0tc2NyZWVuY2FzdC12YWFwaT1mYWxzZSxsaWJ2YSIKLSMgV2VzdG9uIHdpdGggRUdMIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbZWdsXSA9ICItRHJlbmRlcmVyLWdsPXRydWUsLURyZW5kZXJlci1nbD1mYWxzZSx2aXJ0dWFsL2VnbCIKLSMgV2VzdG9uIHdpdGggbGNtcyBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2xjbXNdID0gIi1EY29sb3ItbWFuYWdlbWVudC1sY21zPXRydWUsLURjb2xvci1tYW5hZ2VtZW50LWxjbXM9ZmFsc2UsbGNtcyIKLSMgV2VzdG9uIHdpdGggd2VicCBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW3dlYnBdID0gIi1EaW1hZ2Utd2VicD10cnVlLC1EaW1hZ2Utd2VicD1mYWxzZSxsaWJ3ZWJwIgotIyBXZXN0b24gd2l0aCBzeXN0ZW1kLWxvZ2luIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLURzeXN0ZW1kPXRydWUgLURsYXVuY2hlci1sb2dpbmQ9dHJ1ZSwtRHN5c3RlbWQ9ZmFsc2UgLURsYXVuY2hlci1sb2dpbmQ9ZmFsc2Usc3lzdGVtZCBkYnVzIgotIyBXZXN0b24gd2l0aCBYd2F5bGFuZCBzdXBwb3J0IChyZXF1aXJlcyBYMTEgYW5kIFdheWxhbmQpCi1QQUNLQUdFQ09ORklHW3h3YXlsYW5kXSA9ICItRHh3YXlsYW5kPXRydWUsLUR4d2F5bGFuZD1mYWxzZSIKLSMgY29sb3JkIENNUyBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2NvbG9yZF0gPSAiLURjb2xvci1tYW5hZ2VtZW50LWNvbG9yZD10cnVlLC1EY29sb3ItbWFuYWdlbWVudC1jb2xvcmQ9ZmFsc2UsY29sb3JkIgotIyBDbGllbnRzIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbY2xpZW50c10gPSAiLURzaW1wbGUtY2xpZW50cz1hbGwgLURkZW1vLWNsaWVudHM9dHJ1ZSwtRHNpbXBsZS1jbGllbnRzPSAtRGRlbW8tY2xpZW50cz1mYWxzZSIKLSMgVmlydHVhbCByZW1vdGUgb3V0cHV0IHdpdGggR1N0cmVhbWVyIG9uIERSTSBiYWNrZW5kCi1QQUNLQUdFQ09ORklHW3JlbW90aW5nXSA9ICItRHJlbW90aW5nPXRydWUsLURyZW1vdGluZz1mYWxzZSxnc3RyZWFtZXItMS4wIgotIyBXZXN0b24gd2l0aCBQQU0gc3VwcG9ydAotUEFDS0FHRUNPTkZJR1twYW1dID0gIi1EcGFtPXRydWUsLURwYW09ZmFsc2UsbGlicGFtIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIFdlc3RvbiBkb2Vzbid0IG5lZWQgdGhlIC5sYSBmaWxlcyB0byBsb2FkIG1vZHVsZXMsIHNvIHdpcGUgdGhlbQotCXJtIC1mICR7RH0vJHtsaWJkaXJ9L2xpYndlc3Rvbi0ke1dFU1RPTl9NQUpPUl9WRVJTSU9OfS8qLmxhCi0KLQkjIElmIFgxMSwgc2hpcCBhIGRlc2t0b3AgZmlsZSB0byBsYXVuY2ggaXQKLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iIF07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMKLQkJaW5zdGFsbCAke1dPUktESVJ9L3dlc3Rvbi5kZXNrdG9wICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucwotCi0JCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci80OHg0OC9hcHBzCi0JCWluc3RhbGwgJHtXT1JLRElSfS93ZXN0b24ucG5nICR7RH0ke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNDh4NDgvYXBwcwotCWZpCi0KLQlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4d2F5bGFuZCcsICd5ZXMnLCAnbm8nLCBkKX0iID0gInllcyIgXTsgdGhlbgotCQlpbnN0YWxsIC1EbSA2NDQgJHtXT1JLRElSfS94d2F5bGFuZC53ZXN0b24tc3RhcnQgJHtEfSR7ZGF0YWRpcn0vd2VzdG9uLXN0YXJ0L3h3YXlsYW5kCi0JZmkKLQotCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2xhdW5jaCcsICd5ZXMnLCAnbm8nLCBkKX0iID0gInllcyIgXTsgdGhlbgotCQljaG1vZCB1K3MgJHtEfSR7YmluZGlyfS93ZXN0b24tbGF1bmNoCi0JZmkKLX0KLQotUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3h3YXlsYW5kJywgJyR7UE59LXh3YXlsYW5kJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgbGlid2VzdG9uLSR7V0VTVE9OX01BSk9SX1ZFUlNJT059ICR7UE59LWV4YW1wbGVzIgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vd2VzdG9uICR7YmluZGlyfS93ZXN0b24tdGVybWluYWwgJHtiaW5kaXJ9L3dlc3Rvbi1pbmZvICR7YmluZGlyfS93ZXN0b24tbGF1bmNoICR7YmluZGlyfS93Y2FwLWRlY29kZSAke2xpYmV4ZWNkaXJ9ICR7bGliZGlyfS8ke0JQTn0vKi5zbyAke2RhdGFkaXJ9IgotCi1GSUxFU19saWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0gPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30gJHtsaWJkaXJ9L2xpYndlc3Rvbi0ke1dFU1RPTl9NQUpPUl9WRVJTSU9OfS8qLnNvIgotU1VNTUFSWV9saWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0gPSAiSGVscGVyIGxpYnJhcnkgZm9yIGltcGxlbWVudGluZyAnd2F5bGFuZCB3aW5kb3cgbWFuYWdlcnMnLiIKLQotRklMRVNfJHtQTn0tZXhhbXBsZXMgPSAiJHtiaW5kaXJ9LyoiCi0KLUZJTEVTXyR7UE59LXh3YXlsYW5kID0gIiR7bGliZGlyfS9saWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0veHdheWxhbmQuc28iCi1SREVQRU5EU18ke1BOfS14d2F5bGFuZCArPSAieHNlcnZlci14b3JnLXh3YXlsYW5kIgotCi1SREVQRU5EU18ke1BOfSArPSAieGtleWJvYXJkLWNvbmZpZyIKLVJSRUNPTU1FTkRTXyR7UE59ID0gIndlc3Rvbi1pbml0IGxpYmVyYXRpb24tZm9udHMiCi1SUkVDT01NRU5EU18ke1BOfS1kZXYgKz0gIndheWxhbmQtcHJvdG9jb2xzIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gd2VzdG9uLWxhdW5jaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzguMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fOC4wLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhlOWUxNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzguMC4wLmJiCkBAIC0wLDAgKzEsMTEyIEBACitTVU1NQVJZID0gIldlc3RvbiwgYSBXYXlsYW5kIGNvbXBvc2l0b3IiCitERVNDUklQVElPTiA9ICJXZXN0b24gaXMgdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiBhIFdheWxhbmQgY29tcG9zaXRvciIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDc5ZWU5ZTY2YmIwZjk1ZDMzODZhN2FjYWU3ODBiNzAgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlid2VzdG9uL2NvbXBvc2l0b3IuYztlbmRsaW5lPTI3O21kNT02YzUzYmJiZDk5MjczZjRmN2M0YWZmYTg1NWMzM2MwYSIKKworU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vd2VzdG9uLnBuZyBcCisgICAgICAgICAgIGZpbGU6Ly93ZXN0b24uZGVza3RvcCBcCisgICAgICAgICAgIGZpbGU6Ly94d2F5bGFuZC53ZXN0b24tc3RhcnQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS13ZXN0b24tbGF1bmNoLVByb3ZpZGUtYS1kZWZhdWx0LXZlcnNpb24tdGhhdC1kb2Vzbi10LnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1M2U0ODEwZDg1MmRmMDYwMWQwMWZkOTg2YTViMjJiMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NTE4YjQ5YjJlYWExYzMwOTFmMjQ2NzFiZGNjMTI0ZmQ0OWZjOGYxYWY1MTE2MTkyN2FmYTQzMjljMDI3ODQ4IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy5odG1sIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyB1c2VyYWRkIGZlYXR1cmVzX2NoZWNrCisjIGRlcGVuZHMgb24gdmlydHVhbC9lZ2wKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK0RFUEVORFMgPSAibGlieGtiY29tbW9uIGdkay1waXhidWYgcGl4bWFuIGNhaXJvIGdsaWItMi4wIGpwZWciCitERVBFTkRTICs9ICJ3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYmlucHV0IHZpcnR1YWwvZWdsIHBhbmdvIHdheWxhbmQtbmF0aXZlIgorCitXRVNUT05fTUFKT1JfVkVSU0lPTiA9ICIke0AnLicuam9pbihkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzA6MV0pfSIKKworRVhUUkFfT0VNRVNPTiArPSAiLURiYWNrZW5kLWRlZmF1bHQ9YXV0byAtRGJhY2tlbmQtcmRwPWZhbHNlIC1EcGlwZXdpcmU9ZmFsc2UiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAna21zIGZiZGV2IHdheWxhbmQgZWdsIGNsaWVudHMnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSB3YXlsYW5kJywgJ3h3YXlsYW5kJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtIHN5c3RlbWQgeDExJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWluc19hbnkoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsICcnLCAnaGVhZGxlc3MnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIGxhdW5jaCIKKyMKKyMgQ29tcG9zaXRvciBjaG9pY2VzCisjCisjIFdlc3RvbiBvbiBLTVMKK1BBQ0tBR0VDT05GSUdba21zXSA9ICItRGJhY2tlbmQtZHJtPXRydWUsLURiYWNrZW5kLWRybT1mYWxzZSxkcm0gdWRldiB2aXJ0dWFsL2VnbCB2aXJ0dWFsL2xpYmdsZXMyIHZpcnR1YWwvbGliZ2JtIG10ZGV2IgorIyBXZXN0b24gb24gV2F5bGFuZCAobmVzdGVkIFdlc3RvbikKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURiYWNrZW5kLXdheWxhbmQ9dHJ1ZSwtRGJhY2tlbmQtd2F5bGFuZD1mYWxzZSx2aXJ0dWFsL2VnbCB2aXJ0dWFsL2xpYmdsZXMyIgorIyBXZXN0b24gb24gWDExCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLURiYWNrZW5kLXgxMT10cnVlLC1EYmFja2VuZC14MTE9ZmFsc2UsdmlydHVhbC9saWJ4MTEgbGlieGNiIGxpYnhjYiBsaWJ4Y3Vyc29yIGNhaXJvIgorIyBIZWFkbGVzcyBXZXN0b24KK1BBQ0tBR0VDT05GSUdbaGVhZGxlc3NdID0gIi1EYmFja2VuZC1oZWFkbGVzcz10cnVlLC1EYmFja2VuZC1oZWFkbGVzcz1mYWxzZSIKKyMgV2VzdG9uIG9uIGZyYW1lYnVmZmVyCitQQUNLQUdFQ09ORklHW2ZiZGV2XSA9ICItRGJhY2tlbmQtZmJkZXY9dHJ1ZSwtRGJhY2tlbmQtZmJkZXY9ZmFsc2UsdWRldiBtdGRldiIKKyMgd2VzdG9uLWxhdW5jaAorUEFDS0FHRUNPTkZJR1tsYXVuY2hdID0gIi1Ed2VzdG9uLWxhdW5jaD10cnVlLC1Ed2VzdG9uLWxhdW5jaD1mYWxzZSxkcm0iCisjIFZBLUFQSSBkZXNrdG9wIHJlY29yZGVyCitQQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItRGJhY2tlbmQtZHJtLXNjcmVlbmNhc3QtdmFhcGk9dHJ1ZSwtRGJhY2tlbmQtZHJtLXNjcmVlbmNhc3QtdmFhcGk9ZmFsc2UsbGlidmEiCisjIFdlc3RvbiB3aXRoIEVHTCBzdXBwb3J0CitQQUNLQUdFQ09ORklHW2VnbF0gPSAiLURyZW5kZXJlci1nbD10cnVlLC1EcmVuZGVyZXItZ2w9ZmFsc2UsdmlydHVhbC9lZ2wiCisjIFdlc3RvbiB3aXRoIGxjbXMgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tsY21zXSA9ICItRGNvbG9yLW1hbmFnZW1lbnQtbGNtcz10cnVlLC1EY29sb3ItbWFuYWdlbWVudC1sY21zPWZhbHNlLGxjbXMiCisjIFdlc3RvbiB3aXRoIHdlYnAgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1t3ZWJwXSA9ICItRGltYWdlLXdlYnA9dHJ1ZSwtRGltYWdlLXdlYnA9ZmFsc2UsbGlid2VicCIKKyMgV2VzdG9uIHdpdGggc3lzdGVtZC1sb2dpbiBzdXBwb3J0CitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi1Ec3lzdGVtZD10cnVlIC1EbGF1bmNoZXItbG9naW5kPXRydWUsLURzeXN0ZW1kPWZhbHNlIC1EbGF1bmNoZXItbG9naW5kPWZhbHNlLHN5c3RlbWQgZGJ1cyIKKyMgV2VzdG9uIHdpdGggWHdheWxhbmQgc3VwcG9ydCAocmVxdWlyZXMgWDExIGFuZCBXYXlsYW5kKQorUEFDS0FHRUNPTkZJR1t4d2F5bGFuZF0gPSAiLUR4d2F5bGFuZD10cnVlLC1EeHdheWxhbmQ9ZmFsc2UiCisjIGNvbG9yZCBDTVMgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tjb2xvcmRdID0gIi1EY29sb3ItbWFuYWdlbWVudC1jb2xvcmQ9dHJ1ZSwtRGNvbG9yLW1hbmFnZW1lbnQtY29sb3JkPWZhbHNlLGNvbG9yZCIKKyMgQ2xpZW50cyBzdXBwb3J0CitQQUNLQUdFQ09ORklHW2NsaWVudHNdID0gIi1Ec2ltcGxlLWNsaWVudHM9YWxsIC1EZGVtby1jbGllbnRzPXRydWUsLURzaW1wbGUtY2xpZW50cz0gLURkZW1vLWNsaWVudHM9ZmFsc2UiCisjIFZpcnR1YWwgcmVtb3RlIG91dHB1dCB3aXRoIEdTdHJlYW1lciBvbiBEUk0gYmFja2VuZAorUEFDS0FHRUNPTkZJR1tyZW1vdGluZ10gPSAiLURyZW1vdGluZz10cnVlLC1EcmVtb3Rpbmc9ZmFsc2UsZ3N0cmVhbWVyLTEuMCIKKyMgV2VzdG9uIHdpdGggUEFNIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICItRHBhbT10cnVlLC1EcGFtPWZhbHNlLGxpYnBhbSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBXZXN0b24gZG9lc24ndCBuZWVkIHRoZSAubGEgZmlsZXMgdG8gbG9hZCBtb2R1bGVzLCBzbyB3aXBlIHRoZW0KKwlybSAtZiAke0R9LyR7bGliZGlyfS9saWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0vKi5sYQorCisJIyBJZiBYMTEsIHNoaXAgYSBkZXNrdG9wIGZpbGUgdG8gbGF1bmNoIGl0CisJaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IiBdOyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zCisJCWluc3RhbGwgJHtXT1JLRElSfS93ZXN0b24uZGVza3RvcCAke0R9JHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMKKworCQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNDh4NDgvYXBwcworCQlpbnN0YWxsICR7V09SS0RJUn0vd2VzdG9uLnBuZyAke0R9JHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMKKwlmaQorCisJaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneHdheWxhbmQnLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KKwkJaW5zdGFsbCAtRG0gNjQ0ICR7V09SS0RJUn0veHdheWxhbmQud2VzdG9uLXN0YXJ0ICR7RH0ke2RhdGFkaXJ9L3dlc3Rvbi1zdGFydC94d2F5bGFuZAorCWZpCisKKwlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdsYXVuY2gnLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KKwkJY2htb2QgdStzICR7RH0ke2JpbmRpcn0vd2VzdG9uLWxhdW5jaAorCWZpCit9CisKK1BBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4d2F5bGFuZCcsICcke1BOfS14d2F5bGFuZCcsICcnLCBkKX0gXAorICAgICAgICAgICAgIGxpYndlc3Rvbi0ke1dFU1RPTl9NQUpPUl9WRVJTSU9OfSAke1BOfS1leGFtcGxlcyIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vJHtCUE59L2xpYmV4ZWNfd2VzdG9uLnNvIgorRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L3dlc3RvbiAke2JpbmRpcn0vd2VzdG9uLXRlcm1pbmFsICR7YmluZGlyfS93ZXN0b24taW5mbyAke2JpbmRpcn0vd2VzdG9uLWxhdW5jaCAke2JpbmRpcn0vd2NhcC1kZWNvZGUgJHtsaWJleGVjZGlyfSAke2xpYmRpcn0vJHtCUE59Lyouc28qICR7ZGF0YWRpcn0iCisKK0ZJTEVTX2xpYndlc3Rvbi0ke1dFU1RPTl9NQUpPUl9WRVJTSU9OfSA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSAke2xpYmRpcn0vbGlid2VzdG9uLSR7V0VTVE9OX01BSk9SX1ZFUlNJT059Lyouc28iCitTVU1NQVJZX2xpYndlc3Rvbi0ke1dFU1RPTl9NQUpPUl9WRVJTSU9OfSA9ICJIZWxwZXIgbGlicmFyeSBmb3IgaW1wbGVtZW50aW5nICd3YXlsYW5kIHdpbmRvdyBtYW5hZ2VycycuIgorCitGSUxFU18ke1BOfS1leGFtcGxlcyA9ICIke2JpbmRpcn0vKiIKKworRklMRVNfJHtQTn0teHdheWxhbmQgPSAiJHtsaWJkaXJ9L2xpYndlc3Rvbi0ke1dFU1RPTl9NQUpPUl9WRVJTSU9OfS94d2F5bGFuZC5zbyIKK1JERVBFTkRTXyR7UE59LXh3YXlsYW5kICs9ICJ4c2VydmVyLXhvcmcteHdheWxhbmQiCisKK1JERVBFTkRTXyR7UE59ICs9ICJ4a2V5Ym9hcmQtY29uZmlnIgorUlJFQ09NTUVORFNfJHtQTn0gPSAid2VzdG9uLWluaXQgbGliZXJhdGlvbi1mb250cyIKK1JSRUNPTU1FTkRTXyR7UE59LWRldiArPSAid2F5bGFuZC1wcm90b2NvbHMiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSB3ZXN0b24tbGF1bmNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC9jYXBhYmlsaXR5LmNvbmYgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L2NhcGFiaWxpdHkuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWI3NDYwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC9jYXBhYmlsaXR5LmNvbmYKQEAgLTAsMCArMSwyIEBACitjYXBfc3lzX2FkbWluCUBVU0VSQAorbm9uZQkqCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L3hzZXJ2ZXItbm9kbSBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQveHNlcnZlci1ub2RtCmluZGV4IDZjNTQ4NTUuLjExNmJiMjcgMTAwNzU1Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQveHNlcnZlci1ub2RtCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQveHNlcnZlci1ub2RtCkBAIC0zOCw2ICszOCwxNCBAQAogICAgICAgICAgICBpZiBbIC1lIC9kZXYvaGlkcmF3MCBdOyB0aGVuCiAgICAgICAgICAgICAgICBjaG1vZCBvK3J3IC9kZXYvaGlkcmF3KgogICAgICAgICAgICBmaQorICAgICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHRoZSBYb3JnIGhhcyB0aGUgY2FwX3N5c19hZG1pbiBjYXBhYmlsaXR5IHdoaWNoIGlzCisgICAgICAgICAgICMgbmVlZGVkIGZvciBzZXR0aW5nIHRoZSBkcm0gbWFzdGVyCisgICAgICAgICAgIGlmICEgZ3JlcCAtcSAiXmF1dGguKnBhbV9jYXBcLnNvIiAvZXRjL3BhbS5kL3N1OyB0aGVuCisgICAgICAgICAgICAgICBlY2hvICJhdXRoCW9wdGlvbmFsCXBhbV9jYXAuc28iID4+L2V0Yy9wYW0uZC9zdQorICAgICAgICAgICBmaQorICAgICAgICAgICBpZiAhIC91c3Ivc2Jpbi9nZXRjYXAgJFhTRVJWRVIgfCAgZ3JlcCAtcSBjYXBfc3lzX2FkbWluOyB0aGVuCisgICAgICAgICAgICAgICAvdXNyL3NiaW4vc2V0Y2FwIGNhcF9zeXNfYWRtaW4rZWlwICRYU0VSVkVSCisgICAgICAgICAgIGZpCiAgICAgICAgZmkKIAogICAgICAgICMgVXNpbmcgc3UgcmF0aGVyIHRoYW4gc3VkbyBhcyBsYXRlc3QgMS44LjEgY2F1c2UgZmFpbHVyZSBbWU9DVE8gIzEyMTFdCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0XzMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXRfMy4wLmJiCmluZGV4IDM4NWZlYTUuLmMyOTk1ZjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXRfMy4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXRfMy4wLmJiCkBAIC0xMCw2ICsxMCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9ncGx2Mi1saWNlbnNlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3hzZXJ2ZXItbm9kbS5zZXJ2aWNlLmluIFwKICAgICAgICAgICAgZmlsZTovL3hzZXJ2ZXItbm9kbS5jb25mLmluIFwKKyAgICAgICAgICAgZmlsZTovL2NhcGFiaWxpdHkuY29uZiBcCiAiCiAKIFMgPSAiJHtXT1JLRElSfSIKQEAgLTE5LDcgKzIwLDcgQEAKIAogaW5oZXJpdCB1cGRhdGUtcmMuZCBzeXN0ZW1kIGZlYXR1cmVzX2NoZWNrCiAKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExICR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdST09UTEVTU19YJywgJzEnLCAncGFtJywgJycsIGQpfSIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gImJsYW5rIgogIyBkcG1zIGFuZCBzY3JlZW4gc2F2ZXIgd2lsbCBiZSBvbiBvbmx5IGlmICdibGFuaycgaXMgaW4gUEFDS0FHRUNPTkZJRwpAQCAtNDAsNiArNDEsOCBAQAogICAgIGlmIFsgIiR7Uk9PVExFU1NfWH0iID0gIjEiIF0gOyB0aGVuCiAgICAgICAgIFhVU0VSX0hPTUU9Ii9ob21lL3h1c2VyIgogICAgICAgICBYVVNFUj0ieHVzZXIiCisgICAgICAgIGluc3RhbGwgLUQgY2FwYWJpbGl0eS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3NlY3VyaXR5L2NhcGFiaWxpdHkuY29uZgorICAgICAgICBzZWQgLWkgInM6QFVTRVJAOiR7WFVTRVJ9OiIgJHtEfSR7c3lzY29uZmRpcn0vc2VjdXJpdHkvY2FwYWJpbGl0eS5jb25mCiAgICAgZWxzZQogICAgICAgICBYVVNFUl9IT01FPSR7Uk9PVF9IT01FfQogICAgICAgICBYVVNFUj0icm9vdCIKQEAgLTYwLDcgKzYzLDcgQEAKICAgICBmaQogfQogCi1SREVQRU5EU18ke1BOfSA9ICJ4aW5pdCAke0BvZS51dGlscy5jb25kaXRpb25hbCgnUk9PVExFU1NfWCcsICcxJywgJ3h1c2VyLWFjY291bnQnLCAnJywgZCl9IgorUkRFUEVORFNfJHtQTn0gPSAieGluaXQgJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ1JPT1RMRVNTX1gnLCAnMScsICd4dXNlci1hY2NvdW50IGxpYmNhcCBsaWJjYXAtYmluJywgJycsIGQpfSIKIAogSU5JVFNDUklQVF9OQU1FID0gInhzZXJ2ZXItbm9kbSIKIElOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDkgNSAuIHN0b3AgMjAgMCAxIDIgMyA2IC4iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9ta2ZvbnRkaXJfMS4wLjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9ta2ZvbnRkaXJfMS4wLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0NTNlMjQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvbWtmb250ZGlyXzEuMC43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotcmVxdWlyZSB4b3JnLWFwcC1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiQSBwcm9ncmFtIHRvIGNyZWF0ZSBhbiBpbmRleCBvZiBYIGZvbnQgZmlsZXMgaW4gYSBkaXJlY3RvcnkiCi0KLURFU0NSSVBUSU9OID0gIkZvciBlYWNoIGRpcmVjdG9yeSBhcmd1bWVudCwgbWtmb250ZGlyIHJlYWRzIGFsbCBvZiB0aGUgXAotZm9udCBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5LiBUaGUgZm9udCBuYW1lcyBhbmQgcmVsYXRlZCBkYXRhIGFyZSB3cml0dGVuIFwKLW91dCB0byB0aGUgZmlsZXMgXCJmb250cy5kaXJcIiwgXCJmb250cy5zY2FsZVwiLCBhbmQgXCJmb250cy5hbGlhc1wiLiAgXAotVGhlIFggc2VydmVyIGFuZCBmb250IHNlcnZlciB1c2UgdGhlc2UgZmlsZXMgdG8gZmluZCB0aGUgYXZhaWxhYmxlIGZvbnQgXAotZmlsZXMuIgotCi1QRSA9ICIxIgotUFIgPSAiJHtJTkNfUFJ9LjAiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJta2ZvbnRzY2FsZSIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSArPSAibWtmb250c2NhbGUtbmF0aXZlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjRmY2YyYjkwY2FkYmZjMTUwMDliOWUxMjRkYzNhM2YiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxOGM0MjkxNDhjOTZjMjA3OWVkZGE5MjJhMmI2NzYzMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1NmQ1MmE0ODJkZjEzMDQ4NGU1MWZkMDY2ZDFiNmVkYTdjMmMwMmRkYmM5MWZlNmUyYmUxYjljNGU3MzA2NTMwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvbWtmb250c2NhbGVfMS4xLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9ta2ZvbnRzY2FsZV8xLjEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmE2YmVjMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9ta2ZvbnRzY2FsZV8xLjEuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYwotCi1TVU1NQVJZID0gIkEgcHJvZ3JhbSB0byBjcmVhdGUgYW4gaW5kZXggb2Ygc2NhbGFibGUgZm9udCBmaWxlcyBmb3IgWCIKLQotREVTQ1JJUFRJT04gPSAiRm9yIGVhY2ggZGlyZWN0b3J5IGFyZ3VtZW50LCBta2ZvbnRzY2FsZSByZWFkcyBhbGwgb2YgdGhlIFwKLXNjYWxhYmxlIGZvbnQgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS4gRm9yIGV2ZXJ5IGZvbnQgZmlsZSBmb3VuZCwgYW4gWDExIFwKLWZvbnQgbmFtZSAoWExGRCkgaXMgZ2VuZXJhdGVkLCBhbmQgaXMgd3JpdHRlbiB0b2dldGhlciB3aXRoIHRoZSBmaWxlIFwKLW5hbWUgdG8gYSBmaWxlIGZvbnRzLnNjYWxlIGluIHRoZSBkaXJlY3RvcnkuICBUaGUgcmVzdWx0aW5nIGZvbnRzLnNjYWxlIFwKLWlzIHVzZWQgYnkgdGhlIG1rZm9udGRpciBwcm9ncmFtLiIKLQotREVQRU5EUyA9ICJ1dGlsLW1hY3Jvcy1uYXRpdmUgemxpYiBsaWJmb250ZW5jIGZyZWV0eXBlIHhvcmdwcm90byIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJlMGQxMjlkMDUzMDUxNzZkMWE3OTBlMGFjMWFjYjdmIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTg3YzQzOGU3OWY1ZGRiODRhOWM1NzI2YTE2MTA4MTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWU5OGRmNjllZTVmNDU0MmQ3MTFlMTQwZTFkOTNlMmMzZjI3NzU0MDdjY2JiNzg0OTExMGQ1MmI5MTc4MmE2YSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL21rZm9udHNjYWxlXzEuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvbWtmb250c2NhbGVfMS4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc2N2VlOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL21rZm9udHNjYWxlXzEuMi4xLmJiCkBAIC0wLDAgKzEsMjEgQEAKK3JlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYworCitTVU1NQVJZID0gIkEgcHJvZ3JhbSB0byBjcmVhdGUgYW4gaW5kZXggb2Ygc2NhbGFibGUgZm9udCBmaWxlcyBmb3IgWCIKKworREVTQ1JJUFRJT04gPSAiRm9yIGVhY2ggZGlyZWN0b3J5IGFyZ3VtZW50LCBta2ZvbnRzY2FsZSByZWFkcyBhbGwgb2YgdGhlIFwKK3NjYWxhYmxlIGZvbnQgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS4gRm9yIGV2ZXJ5IGZvbnQgZmlsZSBmb3VuZCwgYW4gWDExIFwKK2ZvbnQgbmFtZSAoWExGRCkgaXMgZ2VuZXJhdGVkLCBhbmQgaXMgd3JpdHRlbiB0b2dldGhlciB3aXRoIHRoZSBmaWxlIFwKK25hbWUgdG8gYSBmaWxlIGZvbnRzLnNjYWxlIGluIHRoZSBkaXJlY3RvcnkuICBUaGUgcmVzdWx0aW5nIGZvbnRzLnNjYWxlIFwKK2lzIHVzZWQgYnkgdGhlIG1rZm9udGRpciBwcm9ncmFtLiIKKworREVQRU5EUyA9ICJ1dGlsLW1hY3Jvcy1uYXRpdmUgemxpYiBsaWJmb250ZW5jIGZyZWV0eXBlIHhvcmdwcm90byIKKworUFJPVklERVMgKz0gIm1rZm9udGRpciIKK1JQUk9WSURFU18ke1BOfSArPSAibWtmb250ZGlyIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTliMWUxMjY5YWJhNTE3OTEzOWI5ZTQzODBmYzA5MzQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMTU5NDBkZTE1OGIxYTNkOGIzZjhiNDQyYzYwNmUyZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjYTA0OTVlYjk3NGExNzlkZDc0MmJmYTYxOTlkNTYxYmRhMWM4ZGE0YTBjNWE2NjdmMjFmZDgyYWFhYjZiYWM3IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveDExcGVyZl8xLjYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3gxMXBlcmZfMS42LjEuYmIKaW5kZXggMzNjMGM4YS4uYzRkNDQzYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveDExcGVyZl8xLjYuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94MTFwZXJmXzEuNi4xLmJiCkBAIC0xMyw2ICsxMywxMCBAQAogCiBQRSA9ICIxIgogCitpbmhlcml0IG11bHRpbGliX3NjcmlwdAorCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59OiR7YmluZGlyfS94MTFwZXJmY29tcCIKKwogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKICAgICBzZWQgLWkgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnICR7RH0ke2JpbmRpcn0veDExcGVyZmNvbXAKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hpbml0LzAwMDEtTWFrZS1tYW5wYWdlLW11bHRpbGliLWlkZW50aWNhbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hpbml0LzAwMDEtTWFrZS1tYW5wYWdlLW11bHRpbGliLWlkZW50aWNhbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDk5MDU1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGluaXQvMDAwMS1NYWtlLW1hbnBhZ2UtbXVsdGlsaWItaWRlbnRpY2FsLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gZDY0MmU2MGQ4OTYzZjFiOTA1NjljZDBhYjVjMjlhYzJjOWJmZTkzOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorRGF0ZTogRnJpLCA2IE1hciAyMDIwIDIyOjI4OjE0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2UgbWFucGFnZSBtdWx0aWxpYiBpZGVudGljYWwKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworU2lnbmVkLW9mZi1ieTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CistLS0KKyBtYW4vTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tYW4vTWFrZWZpbGUuYW0gYi9tYW4vTWFrZWZpbGUuYW0KK2luZGV4IDljNjU2OWYuLjYwOGU5MzMgMTAwNjQ0CistLS0gYS9tYW4vTWFrZWZpbGUuYW0KKysrKyBiL21hbi9NYWtlZmlsZS5hbQorQEAgLTEyLDcgKzEyLDcgQEAgTUFOX1NVQlNUUys9CS1lICdzfF9fWFNFUlZFUk5BTUVfX3wkKFhTRVJWRVJOQU1FKXxnJyBcCisgCQktZSAnc3xfX1hDT05GSUdGSUxFTUFOX198JChYQ09ORklHRklMRU1BTil8ZycgXAorIAkJLWUgJ3N8X194aW5pdGRpcl9ffCQoWElOSVRESVIpfGcnIFwKKyAJCS1lICdzfF9fYmluZGlyX198JChiaW5kaXIpfGcnIFwKKy0JCS1lICdzfF9fbGliZGlyX198JChsaWJkaXIpfGcnIFwKKysJCS1lICdzfF9fbGliZGlyX198JChwcmVmaXgpL2xpYip8ZycgXAorIAkJLWUgJ3N8X19jb25maWdkaXJfX3wkKFhJTklURElSKXxnJworIAorIAorLS0gCisyLjIzLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGluaXRfMS40LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94aW5pdF8xLjQuMS5iYgppbmRleCA1NjI2ZWJiLi5jOWUyOGQ5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94aW5pdF8xLjQuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94aW5pdF8xLjQuMS5iYgpAQCAtMTIsNiArMTIsOCBAQAogCiBQRSA9ICIxIgogCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1NYWtlLW1hbnBhZ2UtbXVsdGlsaWItaWRlbnRpY2FsLnBhdGNoIgorCiBTUkNfVVJJW21kNXN1bV0gPSAiNmQ1MDZhYjJlZmMxN2EwOGU4Nzc3ODY1NGUwOTlkMzciCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGU5YjhmNjE3YjY4YTcwZjZjYWY4N2RhMDFmY2YwZWJkMmI3NTY5MGNkY2JhOWM5MjFkMGVmNTRmYTU0YWJiOSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGtiY29tcF8xLjQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS40LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhZjhlYWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGtiY29tcF8xLjQuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYwotCi1TVU1NQVJZID0gIkEgcHJvZ3JhbSB0byBjb21waWxlIFhLQiBrZXlib2FyZCBkZXNjcmlwdGlvbiIKLQotREVTQ1JJUFRJT04gPSAiVGhlIHhrYmNvbXAga2V5bWFwIGNvbXBpbGVyIGNvbnZlcnRzIGEgZGVzY3JpcHRpb24gb2YgYW4gXAotWEtCIGtleW1hcCBpbnRvIG9uZSBvZiBzZXZlcmFsIG91dHB1dCBmb3JtYXRzLiBUaGUgbW9zdCBjb21tb24gdXNlIGZvciBcCi14a2Jjb21wIGlzIHRvIGNyZWF0ZSBhIGNvbXBpbGVkIGtleW1hcCBmaWxlICgueGttIGV4dGVuc2lvbikgd2hpY2ggY2FuIFwKLWJlIHJlYWQgZGlyZWN0bHkgYnkgWEtCLWNhcGFibGUgWCBzZXJ2ZXJzIG9yIHV0aWxpdGllcy4iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA4NDM2ZTRmNDQ3Njk2NGUyZTJkZDdlN2U0MWUwNzZhIgotCi1ERVBFTkRTICs9ICJsaWJ4a2JmaWxlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjEyNjEwZGYxOWRmMmFmMzc5N2YyYzEzMGVlMmJjZTk3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZkZDhiY2I5YmU3ZTg1YmQ3Mjk0YWJlMjYxYjhjN2IwNTM5ZDJmYzkzZTQxYjgwZmI4YmQwMTM3NjdjZTg0MjQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94a2Jjb21wXzEuNC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGtiY29tcF8xLjQuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmE3OWM4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGtiY29tcF8xLjQuMy5iYgpAQCAtMCwwICsxLDE5IEBACityZXF1aXJlIHhvcmctYXBwLWNvbW1vbi5pbmMKKworU1VNTUFSWSA9ICJBIHByb2dyYW0gdG8gY29tcGlsZSBYS0Iga2V5Ym9hcmQgZGVzY3JpcHRpb24iCisKK0RFU0NSSVBUSU9OID0gIlRoZSB4a2Jjb21wIGtleW1hcCBjb21waWxlciBjb252ZXJ0cyBhIGRlc2NyaXB0aW9uIG9mIGFuIFwKK1hLQiBrZXltYXAgaW50byBvbmUgb2Ygc2V2ZXJhbCBvdXRwdXQgZm9ybWF0cy4gVGhlIG1vc3QgY29tbW9uIHVzZSBmb3IgXAoreGtiY29tcCBpcyB0byBjcmVhdGUgYSBjb21waWxlZCBrZXltYXAgZmlsZSAoLnhrbSBleHRlbnNpb24pIHdoaWNoIGNhbiBcCitiZSByZWFkIGRpcmVjdGx5IGJ5IFhLQi1jYXBhYmxlIFggc2VydmVycyBvciB1dGlsaXRpZXMuIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wODQzNmU0ZjQ0NzY5NjRlMmUyZGQ3ZTdlNDFlMDc2YSIKKworREVQRU5EUyArPSAibGlieGtiZmlsZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXNlbGVjdGl2ZS13ZXJyb3IiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ZTQ3NTFkOTkzNzNmODVkNDU5YWI0ZGZmMjg4OTNmNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwNjI0MmMxNjlmYzExY2FmNjAxY2FjNDZkNzgxZDQ2Nzc0OGM2YTMzMGUxNWIzNmRjZTQ2NTIwYjhhYzhkNDM1IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1zeW5hcHRpY3MvNjRiaXRfdGltZV90X3N1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LXN5bmFwdGljcy82NGJpdF90aW1lX3Rfc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmI3ZmIzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1zeW5hcHRpY3MvNjRiaXRfdGltZV90X3N1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAorVGhpcyBwYXRjaCBhdm9pZHMgdXNpbmcgdGltZSBmaWVsZCBvZiBpbnB1dF9ldmVudCBzdHJ1Y3R1cmUgd2hpY2ggaXMgbm90IGF2YWlsYWJsZQorb24gMzJiaXQgYXJjaGVzIHN1cHBvcnRpbmcgNjRiaXQgdGltZV90IHN0cnVjdHMsIFBhdGNoIG1ha2VzIGl0IGNvbXBhdGlibGUgd2l0aCBuZXcKK2FuZCBrZWVwcyBvbGQgaW5wdXQuaCBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbmFsIGFzIHdlbGwuCisKK1NlZSBodHRwczovL3NvdXJjZXdhcmUub3JnL2dsaWJjL3dpa2kvWTIwMzhQcm9vZm5lc3NEZXNpZ24KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCistLS0gYS9zcmMvZXZlbnRjb21tLmMKKysrKyBiL3NyYy9ldmVudGNvbW0uYworQEAgLTU3NSwxMCArNTc1LDEyIEBAIFN5bmFwdGljc1JlYWRFdmVudChJbnB1dEluZm9QdHIgcEluZm8sIHMKKyAgICAgICAgIGV2LT50eXBlID0gRVZfU1lOOworICAgICAgICAgZXYtPmNvZGUgPSBTWU5fUkVQT1JUOworICAgICAgICAgZXYtPnZhbHVlID0gMDsKKy0gICAgICAgIGV2LT50aW1lID0gbGFzdF9ldmVudF90aW1lOworLSAgICB9IGVsc2UgaWYgKGV2LT50eXBlID09IEVWX1NZTikKKy0gICAgICAgIGxhc3RfZXZlbnRfdGltZSA9IGV2LT50aW1lOworLQorKwlldi0+aW5wdXRfZXZlbnRfc2VjID0gbGFzdF9ldmVudF90aW1lLnR2X3NlYzsKKysJZXYtPmlucHV0X2V2ZW50X3VzZWMgPSBsYXN0X2V2ZW50X3RpbWUudHZfdXNlYzsKKysgICAgfSBlbHNlIGlmIChldi0+dHlwZSA9PSBFVl9TWU4pIHsKKysgICAgICAgIGxhc3RfZXZlbnRfdGltZS50dl9zZWMgPSBldi0+aW5wdXRfZXZlbnRfc2VjOworKyAgICAgICAgbGFzdF9ldmVudF90aW1lLnR2X3VzZWMgPSBldi0+aW5wdXRfZXZlbnRfdXNlYzsKKysgICAgfQorICAgICByZXR1cm4gVFJVRTsKKyB9CisgCitAQCAtNzI1LDcgKzcyNyw3IEBAIEV2ZW50UmVhZEh3U3RhdGUoSW5wdXRJbmZvUHRyIHBJbmZvLAorICAgICAgICAgICAgIGNhc2UgU1lOX1JFUE9SVDoKKyAgICAgICAgICAgICAgICAgaHctPm51bUZpbmdlcnMgPSBjb3VudF9maW5nZXJzKHBJbmZvLCBjb21tKTsKKyAgICAgICAgICAgICAgICAgaWYgKHByb3RvX2RhdGEtPmhhdmVfbW9ub3RvbmljX2Nsb2NrKQorLSAgICAgICAgICAgICAgICAgICAgaHctPm1pbGxpcyA9IDEwMDAgKiBldi50aW1lLnR2X3NlYyArIGV2LnRpbWUudHZfdXNlYyAvIDEwMDA7CisrICAgICAgICAgICAgICAgICAgICBody0+bWlsbGlzID0gMTAwMCAqIGV2LmlucHV0X2V2ZW50X3NlYyArIGV2LmlucHV0X2V2ZW50X3VzZWMgLyAxMDAwOworICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICBody0+bWlsbGlzID0gR2V0VGltZUluTWlsbGlzKCk7CisgICAgICAgICAgICAgICAgIFN5bmFwdGljc0NvcHlId1N0YXRlKGh3UmV0LCBodyk7CistLS0gYS9zcmMvZXZlbnRjb21tLmgKKysrKyBiL3NyYy9ldmVudGNvbW0uaAorQEAgLTM0LDYgKzM0LDExIEBACisgI2luY2x1ZGUgPHhmODZYaW5wdXQuaD4KKyAjaW5jbHVkZSAic3lucHJvdG8uaCIKKyAKKysjaWZuZGVmIGlucHV0X2V2ZW50X3NlYworKyNkZWZpbmUgaW5wdXRfZXZlbnRfc2VjIHRpbWUudHZfc2VjCisrI2RlZmluZSBpbnB1dF9ldmVudF91c2VjIHRpbWUudHZfdXNlYworKyNlbmRpZgorKworIC8qIGZvciBhdXRvLWRldjogKi8KKyAjZGVmaW5lIERFVl9JTlBVVF9FVkVOVCAiL2Rldi9pbnB1dCIKKyAjZGVmaW5lIEVWRU5UX0RFVl9OQU1FICJldmVudCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtc3luYXB0aWNzXzEuOS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1zeW5hcHRpY3NfMS45LjEuYmIKaW5kZXggZGMzMTg5MC4uMzg4MzUwYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1zeW5hcHRpY3NfMS45LjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1zeW5hcHRpY3NfMS45LjEuYmIKQEAgLTEwLDYgKzEwLDggQEAKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTVhYWNkMzUzNWE3NDE4MjQ5NTVjNWViOGYwNjEzOTgiCiAKK1NSQ19VUkkgKz0gImZpbGU6Ly82NGJpdF90aW1lX3Rfc3VwcG9ydC5wYXRjaCIKKwogU1JDX1VSSVttZDVzdW1dID0gImNmYjc5ZDNjOTc1MTUxZjliYmYzMGI3MjdjMjYwY2I5IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdhZjgzNTI2ZWZmMWM3NmU4YjllMTU1M2IzNDI0NWMyMDNkMDI5MDI4ZDgwNDRkZDlkY2Y3MWVlZjEwMDE1NzYiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWwvMDAwMS1TeW5jLWk5MTVfcGNpaWRzLXVwdG8tODcxN2M2Yjc0MTRmLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC8wMDAxLVN5bmMtaTkxNV9wY2lpZHMtdXB0by04NzE3YzZiNzQxNGYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWYzYjFhZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWwvMDAwMS1TeW5jLWk5MTVfcGNpaWRzLXVwdG8tODcxN2M2Yjc0MTRmLnBhdGNoCkBAIC0wLDAgKzEsNTA1IEBACitGcm9tIDA1OTA5ZmVhOTNmMjliMmI2ZTFkNTU0ZGQ2NDIwMTU1MWJkN2EwMjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMaXdlaSBTb25nIDxsaXdlaS5zb25nQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDE3IEFwciAyMDIwIDE2OjExOjU5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIFN5bmMgaTkxNV9wY2lpZHMgdXB0byA4NzE3YzZiNzQxNGYKKworSW1wb3J0IHRoZSBrZXJuZWwncyBpOTE1X3BjaWlkcy5oLCB1cCB0bzoKKworY29tbWl0IDg3MTdjNmI3NDE0ZmZiODkwNjcyMjc2ZGNjYzI4NGMyMzA3OGFjMGUKK0F1dGhvcjogTGVlIFNoYXduIEMgPHNoYXduLmMubGVlQGludGVsLmNvbT4KK0RhdGU6ICAgVHVlIERlYyAxMCAyMzowNDoxNSAyMDE5ICswODAwCisKKyAgICBkcm0vaTkxNS9jbWw6IFNlcGFyYXRlIFUgc2VyaWVzIHBjaSBpZCBmcm9tIG9yaWdpYW5sIGxpc3QuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3BhdGNoLzExNDk0NjQ1L10KKworU2lnbmVkLW9mZi1ieTogTGl3ZWkgU29uZyA8bGl3ZWkuc29uZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2k5MTVfcGNpaWRzLmggIHwgMjY1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQorIHNyYy9pbnRlbF9tb2R1bGUuYyB8ICAgMiArLQorIHRlc3QvZHJpMy10ZXN0LmMgICB8ICAgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgMjA2IGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2k5MTVfcGNpaWRzLmggYi9zcmMvaTkxNV9wY2lpZHMuaAoraW5kZXggZmQ5NjVmZmJiOTJlLi4xZDJjMTIyMTlmNDQgMTAwNjQ0CistLS0gYS9zcmMvaTkxNV9wY2lpZHMuaAorKysrIGIvc3JjL2k5MTVfcGNpaWRzLmgKK0BAIC0xMDgsOCArMTA4LDEwIEBACisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgyZTQyLCBpbmZvKSwgLyogQjQzX0cgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MmU5MiwgaW5mbykJLyogQjQzX0cuMSAqLworIAorLSNkZWZpbmUgSU5URUxfUElORVZJRVdfSURTKGluZm8pCQkJXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4YTAwMSwgaW5mbyksCQkJXAorKyNkZWZpbmUgSU5URUxfUElORVZJRVdfR19JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4YTAwMSwgaW5mbykKKysKKysjZGVmaW5lIElOVEVMX1BJTkVWSUVXX01fSURTKGluZm8pIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweGEwMTEsIGluZm8pCisgCisgI2RlZmluZSBJTlRFTF9JUk9OTEFLRV9EX0lEUyhpbmZvKSBcCitAQCAtMTY2LDcgKzE2OCwxOCBAQAorICNkZWZpbmUgSU5URUxfSVZCX1FfSURTKGluZm8pIFwKKyAJSU5URUxfUVVBTlRBX1ZHQV9ERVZJQ0UoaW5mbykgLyogUXVhbnRhIHRyYW5zY29kZSAqLworIAorKyNkZWZpbmUgSU5URUxfSFNXX1VMVF9HVDFfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMDIsIGluZm8pLCAvKiBVTFQgR1QxIGRlc2t0b3AgKi8gXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MEEwQSwgaW5mbyksIC8qIFVMVCBHVDEgc2VydmVyICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMEIsIGluZm8pLCAvKiBVTFQgR1QxIHJlc2VydmVkICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMDYsIGluZm8pICAvKiBVTFQgR1QxIG1vYmlsZSAqLworKworKyNkZWZpbmUgSU5URUxfSFNXX1VMWF9HVDFfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMEUsIGluZm8pIC8qIFVMWCBHVDEgbW9iaWxlICovCisrCisgI2RlZmluZSBJTlRFTF9IU1dfR1QxX0lEUyhpbmZvKSBcCisrCUlOVEVMX0hTV19VTFRfR1QxX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9IU1dfVUxYX0dUMV9JRFMoaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDA0MDIsIGluZm8pLCAvKiBHVDEgZGVza3RvcCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwNDBhLCBpbmZvKSwgLyogR1QxIHNlcnZlciAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwNDBCLCBpbmZvKSwgLyogR1QxIHJlc2VydmVkICovIFwKK0BAIC0xNzUsMjAgKzE4OCwyNiBAQAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEMwQSwgaW5mbyksIC8qIFNEViBHVDEgc2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMEIsIGluZm8pLCAvKiBTRFYgR1QxIHJlc2VydmVkICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMEUsIGluZm8pLCAvKiBTRFYgR1QxIHJlc2VydmVkICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMDIsIGluZm8pLCAvKiBVTFQgR1QxIGRlc2t0b3AgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MEEwQSwgaW5mbyksIC8qIFVMVCBHVDEgc2VydmVyICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMEIsIGluZm8pLCAvKiBVTFQgR1QxIHJlc2VydmVkICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMDIsIGluZm8pLCAvKiBDUlcgR1QxIGRlc2t0b3AgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEQwQSwgaW5mbyksIC8qIENSVyBHVDEgc2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMEIsIGluZm8pLCAvKiBDUlcgR1QxIHJlc2VydmVkICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMEUsIGluZm8pLCAvKiBDUlcgR1QxIHJlc2VydmVkICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDA0MDYsIGluZm8pLCAvKiBHVDEgbW9iaWxlICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMDYsIGluZm8pLCAvKiBTRFYgR1QxIG1vYmlsZSAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTA2LCBpbmZvKSwgLyogVUxUIEdUMSBtb2JpbGUgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MEEwRSwgaW5mbyksIC8qIFVMWCBHVDEgbW9iaWxlICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMDYsIGluZm8pICAvKiBDUlcgR1QxIG1vYmlsZSAqLworIAorKyNkZWZpbmUgSU5URUxfSFNXX1VMVF9HVDJfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMTIsIGluZm8pLCAvKiBVTFQgR1QyIGRlc2t0b3AgKi8gXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MEExQSwgaW5mbyksIC8qIFVMVCBHVDIgc2VydmVyICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMUIsIGluZm8pLCAvKiBVTFQgR1QyIHJlc2VydmVkICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMTYsIGluZm8pICAvKiBVTFQgR1QyIG1vYmlsZSAqLworKworKyNkZWZpbmUgSU5URUxfSFNXX1VMWF9HVDJfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMUUsIGluZm8pIC8qIFVMWCBHVDIgbW9iaWxlICovIFwKKysKKyAjZGVmaW5lIElOVEVMX0hTV19HVDJfSURTKGluZm8pIFwKKysJSU5URUxfSFNXX1VMVF9HVDJfSURTKGluZm8pLCBcCisrCUlOVEVMX0hTV19VTFhfR1QyX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MDQxMiwgaW5mbyksIC8qIEdUMiBkZXNrdG9wICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDA0MWEsIGluZm8pLCAvKiBHVDIgc2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDA0MUIsIGluZm8pLCAvKiBHVDIgcmVzZXJ2ZWQgKi8gXAorQEAgLTE5Nyw5ICsyMTYsNiBAQAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEMxQSwgaW5mbyksIC8qIFNEViBHVDIgc2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMUIsIGluZm8pLCAvKiBTRFYgR1QyIHJlc2VydmVkICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMUUsIGluZm8pLCAvKiBTRFYgR1QyIHJlc2VydmVkICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMTIsIGluZm8pLCAvKiBVTFQgR1QyIGRlc2t0b3AgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MEExQSwgaW5mbyksIC8qIFVMVCBHVDIgc2VydmVyICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMUIsIGluZm8pLCAvKiBVTFQgR1QyIHJlc2VydmVkICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMTIsIGluZm8pLCAvKiBDUlcgR1QyIGRlc2t0b3AgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEQxQSwgaW5mbyksIC8qIENSVyBHVDIgc2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMUIsIGluZm8pLCAvKiBDUlcgR1QyIHJlc2VydmVkICovIFwKK0BAIC0yMDcsMTEgKzIyMywxNyBAQAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MDQxNiwgaW5mbyksIC8qIEdUMiBtb2JpbGUgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MDQyNiwgaW5mbyksIC8qIEdUMiBtb2JpbGUgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEMxNiwgaW5mbyksIC8qIFNEViBHVDIgbW9iaWxlICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMTYsIGluZm8pLCAvKiBVTFQgR1QyIG1vYmlsZSAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTFFLCBpbmZvKSwgLyogVUxYIEdUMiBtb2JpbGUgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEQxNiwgaW5mbykgIC8qIENSVyBHVDIgbW9iaWxlICovCisgCisrI2RlZmluZSBJTlRFTF9IU1dfVUxUX0dUM19JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MEEyMiwgaW5mbyksIC8qIFVMVCBHVDMgZGVza3RvcCAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTJBLCBpbmZvKSwgLyogVUxUIEdUMyBzZXJ2ZXIgKi8gXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MEEyQiwgaW5mbyksIC8qIFVMVCBHVDMgcmVzZXJ2ZWQgKi8gXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MEEyNiwgaW5mbyksIC8qIFVMVCBHVDMgbW9iaWxlICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMkUsIGluZm8pICAvKiBVTFQgR1QzIHJlc2VydmVkICovCisrCisgI2RlZmluZSBJTlRFTF9IU1dfR1QzX0lEUyhpbmZvKSBcCisrCUlOVEVMX0hTV19VTFRfR1QzX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MDQyMiwgaW5mbyksIC8qIEdUMyBkZXNrdG9wICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDA0MmEsIGluZm8pLCAvKiBHVDMgc2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDA0MkIsIGluZm8pLCAvKiBHVDMgcmVzZXJ2ZWQgKi8gXAorQEAgLTIyMCwxNiArMjQyLDExIEBACisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQzJBLCBpbmZvKSwgLyogU0RWIEdUMyBzZXJ2ZXIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEMyQiwgaW5mbyksIC8qIFNEViBHVDMgcmVzZXJ2ZWQgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEMyRSwgaW5mbyksIC8qIFNEViBHVDMgcmVzZXJ2ZWQgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MEEyMiwgaW5mbyksIC8qIFVMVCBHVDMgZGVza3RvcCAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTJBLCBpbmZvKSwgLyogVUxUIEdUMyBzZXJ2ZXIgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MEEyQiwgaW5mbyksIC8qIFVMVCBHVDMgcmVzZXJ2ZWQgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEQyMiwgaW5mbyksIC8qIENSVyBHVDMgZGVza3RvcCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwRDJBLCBpbmZvKSwgLyogQ1JXIEdUMyBzZXJ2ZXIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEQyQiwgaW5mbyksIC8qIENSVyBHVDMgcmVzZXJ2ZWQgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEQyRSwgaW5mbyksIC8qIENSVyBHVDMgcmVzZXJ2ZWQgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEMyNiwgaW5mbyksIC8qIFNEViBHVDMgbW9iaWxlICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMjYsIGluZm8pLCAvKiBVTFQgR1QzIG1vYmlsZSAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTJFLCBpbmZvKSwgLyogVUxUIEdUMyByZXNlcnZlZCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwRDI2LCBpbmZvKSAgLyogQ1JXIEdUMyBtb2JpbGUgKi8KKyAKKyAjZGVmaW5lIElOVEVMX0hTV19JRFMoaW5mbykgXAorQEAgLTI0NSwzNSArMjYyLDU5IEBACisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwMTU3LCBpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MDE1NSwgaW5mbykKKyAKKy0jZGVmaW5lIElOVEVMX0JEV19HVDFfSURTKGluZm8pICBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjAyLCBpbmZvKSwgLyogR1QxIFVMVCAqLyBcCisrI2RlZmluZSBJTlRFTF9CRFdfVUxUX0dUMV9JRFMoaW5mbykgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTYwNiwgaW5mbyksIC8qIEdUMSBVTFQgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTYwQiwgaW5mbyksIC8qIEdUMSBJcmlzICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2MEUsIGluZm8pLCAvKiBHVDEgVUxYICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE2MEIsIGluZm8pICAvKiBHVDEgSXJpcyAqLworKworKyNkZWZpbmUgSU5URUxfQkRXX1VMWF9HVDFfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE2MEUsIGluZm8pIC8qIEdUMSBVTFggKi8KKysKKysjZGVmaW5lIElOVEVMX0JEV19HVDFfSURTKGluZm8pIFwKKysJSU5URUxfQkRXX1VMVF9HVDFfSURTKGluZm8pLCBcCisrCUlOVEVMX0JEV19VTFhfR1QxX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTYwMiwgaW5mbyksIC8qIEdUMSBVTFQgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTYwQSwgaW5mbyksIC8qIEdUMSBTZXJ2ZXIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTYwRCwgaW5mbykgIC8qIEdUMSBXb3Jrc3RhdGlvbiAqLworIAorLSNkZWZpbmUgSU5URUxfQkRXX0dUMl9JRFMoaW5mbykgIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2MTIsIGluZm8pLCAvKiBHVDIgSGFsbyAqLwlcCisrI2RlZmluZSBJTlRFTF9CRFdfVUxUX0dUMl9JRFMoaW5mbykgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTYxNiwgaW5mbyksIC8qIEdUMiBVTFQgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTYxQiwgaW5mbyksIC8qIEdUMiBVTFQgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTYxRSwgaW5mbyksIC8qIEdUMiBVTFggKi8gXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTYxQiwgaW5mbykgIC8qIEdUMiBVTFQgKi8KKysKKysjZGVmaW5lIElOVEVMX0JEV19VTFhfR1QyX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjFFLCBpbmZvKSAvKiBHVDIgVUxYICovCisrCisrI2RlZmluZSBJTlRFTF9CRFdfR1QyX0lEUyhpbmZvKSBcCisrCUlOVEVMX0JEV19VTFRfR1QyX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9CRFdfVUxYX0dUMl9JRFMoaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE2MTIsIGluZm8pLCAvKiBHVDIgSGFsbyAqLwlcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjFBLCBpbmZvKSwgLyogR1QyIFNlcnZlciAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjFELCBpbmZvKSAgLyogR1QyIFdvcmtzdGF0aW9uICovCisgCisrI2RlZmluZSBJTlRFTF9CRFdfVUxUX0dUM19JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTYyNiwgaW5mbyksIC8qIFVMVCAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjJCLCBpbmZvKSAgLyogSXJpcyAqLyBcCisrCisrI2RlZmluZSBJTlRFTF9CRFdfVUxYX0dUM19JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTYyRSwgaW5mbykgIC8qIFVMWCAqLworKworICNkZWZpbmUgSU5URUxfQkRXX0dUM19JRFMoaW5mbykgXAorKwlJTlRFTF9CRFdfVUxUX0dUM19JRFMoaW5mbyksIFwKKysJSU5URUxfQkRXX1VMWF9HVDNfSURTKGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjIyLCBpbmZvKSwgLyogVUxUICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2MjYsIGluZm8pLCAvKiBVTFQgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTYyQiwgaW5mbyksIC8qIElyaXMgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTYyRSwgaW5mbyksICAvKiBVTFggKi9cCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjJBLCBpbmZvKSwgLyogU2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE2MkQsIGluZm8pICAvKiBXb3Jrc3RhdGlvbiAqLworIAorKyNkZWZpbmUgSU5URUxfQkRXX1VMVF9SU1ZEX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjM2LCBpbmZvKSwgLyogVUxUICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE2M0IsIGluZm8pICAvKiBJcmlzICovCisrCisrI2RlZmluZSBJTlRFTF9CRFdfVUxYX1JTVkRfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE2M0UsIGluZm8pIC8qIFVMWCAqLworKworICNkZWZpbmUgSU5URUxfQkRXX1JTVkRfSURTKGluZm8pIFwKKysJSU5URUxfQkRXX1VMVF9SU1ZEX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9CRFdfVUxYX1JTVkRfSURTKGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjMyLCBpbmZvKSwgLyogVUxUICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2MzYsIGluZm8pLCAvKiBVTFQgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTYzQiwgaW5mbyksIC8qIElyaXMgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTYzRSwgaW5mbyksIC8qIFVMWCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjNBLCBpbmZvKSwgLyogU2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE2M0QsIGluZm8pICAvKiBXb3Jrc3RhdGlvbiAqLworIAorQEAgLTI4OSwyNSArMzMwLDQwIEBACisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgyMmIyLCBpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MjJiMywgaW5mbykKKyAKKysjZGVmaW5lIElOVEVMX1NLTF9VTFRfR1QxX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTA2LCBpbmZvKSAvKiBVTFQgR1QxICovCisrCisrI2RlZmluZSBJTlRFTF9TS0xfVUxYX0dUMV9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTkwRSwgaW5mbykgLyogVUxYIEdUMSAqLworKworICNkZWZpbmUgSU5URUxfU0tMX0dUMV9JRFMoaW5mbykJXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTkwNiwgaW5mbyksIC8qIFVMVCBHVDEgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTkwRSwgaW5mbyksIC8qIFVMWCBHVDEgKi8gXAorKwlJTlRFTF9TS0xfVUxUX0dUMV9JRFMoaW5mbyksIFwKKysJSU5URUxfU0tMX1VMWF9HVDFfSURTKGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTAyLCBpbmZvKSwgLyogRFQgIEdUMSAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTBCLCBpbmZvKSwgLyogSGFsbyBHVDEgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTkwQSwgaW5mbykgLyogU1JWIEdUMSAqLworIAorLSNkZWZpbmUgSU5URUxfU0tMX0dUMl9JRFMoaW5mbykJXAorKyNkZWZpbmUgSU5URUxfU0tMX1VMVF9HVDJfSURTKGluZm8pIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE5MTYsIGluZm8pLCAvKiBVTFQgR1QyICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE5MjEsIGluZm8pLCAvKiBVTFQgR1QyRiAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTFFLCBpbmZvKSwgLyogVUxYIEdUMiAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTIxLCBpbmZvKSAgLyogVUxUIEdUMkYgKi8KKysKKysjZGVmaW5lIElOVEVMX1NLTF9VTFhfR1QyX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTFFLCBpbmZvKSAvKiBVTFggR1QyICovCisrCisrI2RlZmluZSBJTlRFTF9TS0xfR1QyX0lEUyhpbmZvKQlcCisrCUlOVEVMX1NLTF9VTFRfR1QyX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9TS0xfVUxYX0dUMl9JRFMoaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE5MTIsIGluZm8pLCAvKiBEVCAgR1QyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE5MUIsIGluZm8pLCAvKiBIYWxvIEdUMiAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTFBLCBpbmZvKSwgLyogU1JWIEdUMiAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTFELCBpbmZvKSAgLyogV0tTIEdUMiAqLworIAorKyNkZWZpbmUgSU5URUxfU0tMX1VMVF9HVDNfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE5MjYsIGluZm8pIC8qIFVMVCBHVDMgKi8KKysKKyAjZGVmaW5lIElOVEVMX1NLTF9HVDNfSURTKGluZm8pIFwKKysJSU5URUxfU0tMX1VMVF9HVDNfSURTKGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTIzLCBpbmZvKSwgLyogVUxUIEdUMyAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTI2LCBpbmZvKSwgLyogVUxUIEdUMyAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTI3LCBpbmZvKSwgLyogVUxUIEdUMyAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTJCLCBpbmZvKSwgLyogSGFsbyBHVDMgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTkyRCwgaW5mbykgIC8qIFNSViBHVDMgKi8KK0BAIC0zMzYsNDUgKzM5Miw5MSBAQAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MzE4NCwgaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDMxODUsIGluZm8pCisgCistI2RlZmluZSBJTlRFTF9LQkxfR1QxX0lEUyhpbmZvKQlcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTEzLCBpbmZvKSwgLyogVUxUIEdUMS41ICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDU5MTUsIGluZm8pLCAvKiBVTFggR1QxLjUgKi8gXAorKyNkZWZpbmUgSU5URUxfS0JMX1VMVF9HVDFfSURTKGluZm8pIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDU5MDYsIGluZm8pLCAvKiBVTFQgR1QxICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDU5MTMsIGluZm8pICAvKiBVTFQgR1QxLjUgKi8KKysKKysjZGVmaW5lIElOVEVMX0tCTF9VTFhfR1QxX0lEUyhpbmZvKSBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTBFLCBpbmZvKSwgLyogVUxYIEdUMSAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTE1LCBpbmZvKSAgLyogVUxYIEdUMS41ICovCisrCisrI2RlZmluZSBJTlRFTF9LQkxfR1QxX0lEUyhpbmZvKQlcCisrCUlOVEVMX0tCTF9VTFRfR1QxX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9LQkxfVUxYX0dUMV9JRFMoaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDU5MDIsIGluZm8pLCAvKiBEVCAgR1QxICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDU5MDgsIGluZm8pLCAvKiBIYWxvIEdUMSAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTBCLCBpbmZvKSwgLyogSGFsbyBHVDEgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkwQSwgaW5mbykgLyogU1JWIEdUMSAqLworIAorLSNkZWZpbmUgSU5URUxfS0JMX0dUMl9JRFMoaW5mbykJXAorKyNkZWZpbmUgSU5URUxfS0JMX1VMVF9HVDJfSURTKGluZm8pIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDU5MTYsIGluZm8pLCAvKiBVTFQgR1QyICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDU5MjEsIGluZm8pICAvKiBVTFQgR1QyRiAqLworKworKyNkZWZpbmUgSU5URUxfS0JMX1VMWF9HVDJfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDU5MUUsIGluZm8pICAvKiBVTFggR1QyICovCisrCisrI2RlZmluZSBJTlRFTF9LQkxfR1QyX0lEUyhpbmZvKQlcCisrCUlOVEVMX0tCTF9VTFRfR1QyX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9LQkxfVUxYX0dUMl9JRFMoaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDU5MTcsIGluZm8pLCAvKiBNb2JpbGUgR1QyICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDU5MjEsIGluZm8pLCAvKiBVTFQgR1QyRiAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTFFLCBpbmZvKSwgLyogVUxYIEdUMiAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTEyLCBpbmZvKSwgLyogRFQgIEdUMiAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTFCLCBpbmZvKSwgLyogSGFsbyBHVDIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkxQSwgaW5mbyksIC8qIFNSViBHVDIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkxRCwgaW5mbykgLyogV0tTIEdUMiAqLworIAorKyNkZWZpbmUgSU5URUxfS0JMX1VMVF9HVDNfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDU5MjYsIGluZm8pIC8qIFVMVCBHVDMgKi8KKysKKyAjZGVmaW5lIElOVEVMX0tCTF9HVDNfSURTKGluZm8pIFwKKysJSU5URUxfS0JMX1VMVF9HVDNfSURTKGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTIzLCBpbmZvKSwgLyogVUxUIEdUMyAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTI2LCBpbmZvKSwgLyogVUxUIEdUMyAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTI3LCBpbmZvKSAvKiBVTFQgR1QzICovCisgCisgI2RlZmluZSBJTlRFTF9LQkxfR1Q0X0lEUyhpbmZvKSBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTNCLCBpbmZvKSAvKiBIYWxvIEdUNCAqLworIAorIC8qIEFNTC9LQkwgWSBHVDIgKi8KKy0jZGVmaW5lIElOVEVMX0FNTF9HVDJfSURTKGluZm8pIFwKKysjZGVmaW5lIElOVEVMX0FNTF9LQkxfR1QyX0lEUyhpbmZvKSBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTFDLCBpbmZvKSwgIC8qIFVMWCBHVDIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4ODdDMCwgaW5mbykgLyogVUxYIEdUMiAqLworIAorKy8qIEFNTC9DRkwgWSBHVDIgKi8KKysjZGVmaW5lIElOVEVMX0FNTF9DRkxfR1QyX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4N0NBLCBpbmZvKQorKworKy8qIENNTCBHVDEgKi8KKysjZGVmaW5lIElOVEVMX0NNTF9HVDFfSURTKGluZm8pCVwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCQTUsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QkE4LCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUJBNCwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCQTIsIGluZm8pCisrCisrI2RlZmluZSBJTlRFTF9DTUxfVV9HVDFfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCMjEsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QkFBLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUJBQywgaW5mbykKKysKKysvKiBDTUwgR1QyICovCisrI2RlZmluZSBJTlRFTF9DTUxfR1QyX0lEUyhpbmZvKQlcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QkM1LCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUJDOCwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCQzQsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QkMyLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUJDNiwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCRTYsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QkY2LCBpbmZvKQorKworKyNkZWZpbmUgSU5URUxfQ01MX1VfR1QyX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QjQxLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUJDQSwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCQ0MsIGluZm8pCisrCisgI2RlZmluZSBJTlRFTF9LQkxfSURTKGluZm8pIFwKKyAJSU5URUxfS0JMX0dUMV9JRFMoaW5mbyksIFwKKyAJSU5URUxfS0JMX0dUMl9JRFMoaW5mbyksIFwKKyAJSU5URUxfS0JMX0dUM19JRFMoaW5mbyksIFwKKyAJSU5URUxfS0JMX0dUNF9JRFMoaW5mbyksIFwKKy0JSU5URUxfQU1MX0dUMl9JRFMoaW5mbykKKysJSU5URUxfQU1MX0tCTF9HVDJfSURTKGluZm8pCisgCisgLyogQ0ZMIFMgKi8KKyAjZGVmaW5lIElOVEVMX0NGTF9TX0dUMV9JRFMoaW5mbykgXAorQEAgLTM5MCw2ICs0OTIsOSBAQAorIAlJTlRFTF9WR0FfREVWSUNFKDB4M0U5QSwgaW5mbykgIC8qIFNSViBHVDIgKi8KKyAKKyAvKiBDRkwgSCAqLworKyNkZWZpbmUgSU5URUxfQ0ZMX0hfR1QxX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRTlDLCBpbmZvKQorKworICNkZWZpbmUgSU5URUxfQ0ZMX0hfR1QyX0lEUyhpbmZvKSBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRTlCLCBpbmZvKSwgLyogSGFsbyBHVDIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4M0U5NCwgaW5mbykgIC8qIEhhbG8gR1QyICovCitAQCAtNDA3LDMwICs1MTIsNDMgQEAKKyAKKyAvKiBXSEwvQ0ZMIFUgR1QxICovCisgI2RlZmluZSBJTlRFTF9XSExfVV9HVDFfSURTKGluZm8pIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDNFQTEsIGluZm8pCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRUExLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4M0VBNCwgaW5mbykKKyAKKyAvKiBXSEwvQ0ZMIFUgR1QyICovCisgI2RlZmluZSBJTlRFTF9XSExfVV9HVDJfSURTKGluZm8pIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDNFQTAsIGluZm8pCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRUEwLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4M0VBMywgaW5mbykKKyAKKyAvKiBXSEwvQ0ZMIFUgR1QzICovCisgI2RlZmluZSBJTlRFTF9XSExfVV9HVDNfSURTKGluZm8pIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDNFQTIsIGluZm8pLCBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRUEzLCBpbmZvKSwgXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4M0VBNCwgaW5mbykKKysJSU5URUxfVkdBX0RFVklDRSgweDNFQTIsIGluZm8pCisgCisgI2RlZmluZSBJTlRFTF9DRkxfSURTKGluZm8pCSAgIFwKKyAJSU5URUxfQ0ZMX1NfR1QxX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9DRkxfU19HVDJfSURTKGluZm8pLCBcCisrCUlOVEVMX0NGTF9IX0dUMV9JRFMoaW5mbyksIFwKKyAJSU5URUxfQ0ZMX0hfR1QyX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9DRkxfVV9HVDJfSURTKGluZm8pLCBcCisgCUlOVEVMX0NGTF9VX0dUM19JRFMoaW5mbyksIFwKKyAJSU5URUxfV0hMX1VfR1QxX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9XSExfVV9HVDJfSURTKGluZm8pLCBcCistCUlOVEVMX1dITF9VX0dUM19JRFMoaW5mbykKKysJSU5URUxfV0hMX1VfR1QzX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9BTUxfQ0ZMX0dUMl9JRFMoaW5mbyksIFwKKysJSU5URUxfQ01MX0dUMV9JRFMoaW5mbyksIFwKKysJSU5URUxfQ01MX0dUMl9JRFMoaW5mbyksIFwKKysJSU5URUxfQ01MX1VfR1QxX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9DTUxfVV9HVDJfSURTKGluZm8pCisgCisgLyogQ05MICovCisrI2RlZmluZSBJTlRFTF9DTkxfUE9SVF9GX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTU0LCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4NUE1QywgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDVBNDQsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTRDLCBpbmZvKQorKworICNkZWZpbmUgSU5URUxfQ05MX0lEUyhpbmZvKSBcCisrCUlOVEVMX0NOTF9QT1JUX0ZfSURTKGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTUxLCBpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NUE1OSwgaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDVBNDEsIGluZm8pLCBcCitAQCAtNDQwLDIyICs1NTgsNDcgQEAKKyAJSU5URUxfVkdBX0RFVklDRSgweDVBNDIsIGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTRBLCBpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NUE1MCwgaW5mbyksIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDVBNDAsIGluZm8pLCBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTU0LCBpbmZvKSwgXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4NUE1QywgaW5mbyksIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDVBNDQsIGluZm8pLCBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTRDLCBpbmZvKQorKwlJTlRFTF9WR0FfREVWSUNFKDB4NUE0MCwgaW5mbykKKyAKKyAvKiBJQ0wgKi8KKy0jZGVmaW5lIElOVEVMX0lDTF8xMV9JRFMoaW5mbykgXAorKyNkZWZpbmUgSU5URUxfSUNMX1BPUlRfRl9JRFMoaW5mbykgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4OEE1MCwgaW5mbyksIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDhBNTEsIGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTVDLCBpbmZvKSwgXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4OEE1RCwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDhBNTksIGluZm8pLAlcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTU4LCBpbmZvKSwJXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4OEE1MiwgaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDhBNUEsIGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTVCLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OEE1NywgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDhBNTYsIGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTcxLCBpbmZvKSwgXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4OEE3MCwgaW5mbykKKysJSU5URUxfVkdBX0RFVklDRSgweDhBNzAsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTUzLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OEE1NCwgaW5mbykKKysKKysjZGVmaW5lIElOVEVMX0lDTF8xMV9JRFMoaW5mbykgXAorKwlJTlRFTF9JQ0xfUE9SVF9GX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OEE1MSwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDhBNUQsIGluZm8pCisrCisrLyogRUhML0pTTCAqLworKyNkZWZpbmUgSU5URUxfRUhMX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg0NTAwLCBpbmZvKSwJXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4NDU3MSwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDQ1NTEsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg0NTQxLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4NEU3MSwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDRFNjEsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg0RTUxLCBpbmZvKQorKworKy8qIFRHTCAqLworKyNkZWZpbmUgSU5URUxfVEdMXzEyX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QTQ5LCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUE0MCwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlBNTksIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QTYwLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUE2OCwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlBNzAsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QTc4LCBpbmZvKQorIAorICNlbmRpZiAvKiBfSTkxNV9QQ0lJRFNfSCAqLworZGlmZiAtLWdpdCBhL3NyYy9pbnRlbF9tb2R1bGUuYyBiL3NyYy9pbnRlbF9tb2R1bGUuYworaW5kZXggYTcxYzJlNDBiNzc0Li5lMGI5NGMxOTAyNTQgMTAwNjQ0CistLS0gYS9zcmMvaW50ZWxfbW9kdWxlLmMKKysrKyBiL3NyYy9pbnRlbF9tb2R1bGUuYworQEAgLTM1Nyw3ICszNTcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9pZF9tYXRjaCBpbnRlbF9kZXZpY2VfbWF0Y2hbXSA9IHsKKyAJSU5URUxfSTk0NUdNX0lEUygmaW50ZWxfaTk0NV9pbmZvKSwKKyAKKyAJSU5URUxfRzMzX0lEUygmaW50ZWxfZzMzX2luZm8pLAorLQlJTlRFTF9QSU5FVklFV19JRFMoJmludGVsX2czM19pbmZvKSwKKysJSU5URUxfUElORVZJRVdfR19JRFMoJmludGVsX2czM19pbmZvKSwKKyAKKyAJSU5URUxfSTk2NUdfSURTKCZpbnRlbF9pOTY1X2luZm8pLAorIAlJTlRFTF9JOTY1R01fSURTKCZpbnRlbF9pOTY1X2luZm8pLAorZGlmZiAtLWdpdCBhL3Rlc3QvZHJpMy10ZXN0LmMgYi90ZXN0L2RyaTMtdGVzdC5jCitpbmRleCA3OGUxMDVhOGI2NGEuLjUyNjVhMzBjZWExYiAxMDA2NDQKKy0tLSBhL3Rlc3QvZHJpMy10ZXN0LmMKKysrKyBiL3Rlc3QvZHJpMy10ZXN0LmMKK0BAIC03Niw3ICs3Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2lkX21hdGNoIGlkc1tdID0geworIAlJTlRFTF9JOTQ1R01fSURTKDAzMSksCisgCisgCUlOVEVMX0czM19JRFMoMDMzKSwKKy0JSU5URUxfUElORVZJRVdfSURTKDAzMyksCisrCUlOVEVMX1BJTkVWSUVXX0dfSURTKDAzMyksCisgCisgCUlOVEVMX0k5NjVHX0lEUygwNDApLAorIAlJTlRFTF9JOTY1R01fSURTKDA0MCksCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsLzAxX0ZpeC1idWlsZC1vbi1pNjg2LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC8wMV9GaXgtYnVpbGQtb24taTY4Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTI5MTZmOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsLzAxX0ZpeC1idWlsZC1vbi1pNjg2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotRnJvbSBhNDE0ZDRlMjQ0NjFkYTFjYjRjZWY4ZWU5MTBiYzU3YmFiMzYwY2ViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWRhbSBKYWNrc29uIDxhamF4QHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDYgTWFyIDIwMTggMTI6MDc6NDYgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIG9uIGk2ODYKLQotUHJlc3VtYWJseSB0aGlzIG9ubHkgbWF0dGVycyBmb3IgaTY4NiBiZWNhdXNlIGFtZDY0IGltcGxpZXMgc3NlMiwgYnV0OgotCi1CVUlMRFNUREVSUjogSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGdlbjRfdmVydGV4LmM6MzQ6Ci1CVUlMRFNUREVSUjogZ2VuNF92ZXJ0ZXguYzogSW4gZnVuY3Rpb24gJ2VtaXRfdmVydGV4JzoKLUJVSUxEU1RERVJSOiBzbmFfcmVuZGVyX2lubGluZS5oOjQwOjI2OiBlcnJvcjogaW5saW5pbmcgZmFpbGVkIGluIGNhbGwgdG8gYWx3YXlzX2lubGluZSAndmVydGV4X2VtaXRfMnMnOiB0YXJnZXQgc3BlY2lmaWMgb3B0aW9uIG1pc21hdGNoCi1CVUlMRFNUREVSUjogIHN0YXRpYyBmb3JjZV9pbmxpbmUgdm9pZCB2ZXJ0ZXhfZW1pdF8ycyhzdHJ1Y3Qgc25hICpzbmEsIGludDE2X3QgeCwgaW50MTZfdCB5KQotQlVJTERTVERFUlI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+fn4KLUJVSUxEU1RERVJSOiBnZW40X3ZlcnRleC5jOjMwODoyNTogbm90ZTogY2FsbGVkIGZyb20gaGVyZQotQlVJTERTVERFUlI6ICAjZGVmaW5lIE9VVF9WRVJURVgoeCx5KSB2ZXJ0ZXhfZW1pdF8ycyhzbmEsIHgseSkgLyogWFhYIGFzc2VydCghdG9vX2xhcmdlKHgsIHkpKTsgKi8KLUJVSUxEU1RERVJSOiAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci1CVUlMRFNUREVSUjogZ2VuNF92ZXJ0ZXguYzozNjA6Mjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICdPVVRfVkVSVEVYJwotQlVJTERTVERFUlI6ICAgT1VUX1ZFUlRFWChkc3RYLCBkc3RZKTsKLUJVSUxEU1RERVJSOiAgIF5+fn5+fn5+fn4KLQotVGhlIGJ1ZyBoZXJlIGFwcGVhcnMgdG8gYmUgdGhhdCBlbWl0X3ZlcnRleCgpIGlzIGRlY2xhcmVkICdzc2UyJyBidXQKLXZlcnRleF9lbWl0XzJzIGlzIG1lcmVseSBhbHdheXNfaW5saW5lLiBnY2M4IGRlY2lkZXMgdGhhdCBzaW5jZSB5b3Ugc2FpZAotYWx3YXlzX2lubGluZSB5b3UgbmVlZCB0byBoYXZlIGV4cGxpY2l0bHkgY2xvbmVkIGl0IGZvciBldmVyeQotcGVybXV0YXRpb24gb2YgdGFyZ2V0cy4gTWVyZWx5IHNheWluZyBpbmxpbmUgc2VlbXMgdG8gZG8gdGhlIGpvYiBvZgotY2xvbmluZyB2ZXJ0ZXhfZW1pdF8ycyBhcyBtdWNoIGFzIG5lY2Vzc2FyeS4KLQotU28gdG8gcmVpdGVyYXRlOiBpZiB5b3Ugc2F5IGFsd2F5cy1pbmxpbmUsIGl0IHdvbid0LCBidXQgaWYgeW91IGp1c3Qgc2F5Ci1tYXliZSBpbmxpbmUsIGl0IHdpbGwuIFRoYW5rcyBnY2MsIHRoYXQncyBoZWxwZnVsLgotCi0tIGFqYXgKLQotUGF0Y2ggdGFrZW4gZnJvbSBGZWRvcmEuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLQotLS0tCi0gc3JjL3NuYS9jb21waWxlci5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3NuYS9jb21waWxlci5oIGIvc3JjL3NuYS9jb21waWxlci5oCi1pbmRleCAzYzE3NmExNi4uYmM0NDdjN2EgMTAwNjQ0Ci0tLS0gYS9zcmMvc25hL2NvbXBpbGVyLmgKLSsrKyBiL3NyYy9zbmEvY29tcGlsZXIuaAotQEAgLTMyLDcgKzMyLDcgQEAKLSAjZGVmaW5lIGxpa2VseShleHByKSAoX19idWlsdGluX2V4cGVjdCAoISEoZXhwciksIDEpKQotICNkZWZpbmUgdW5saWtlbHkoZXhwcikgKF9fYnVpbHRpbl9leHBlY3QgKCEhKGV4cHIpLCAwKSkKLSAjZGVmaW5lIG5vaW5saW5lIF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKLS0jZGVmaW5lIGZvcmNlX2lubGluZSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpCi0rI2RlZmluZSBmb3JjZV9pbmxpbmUgaW5saW5lCi0gI2RlZmluZSBmYXN0Y2FsbCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkKLSAjZGVmaW5lIG11c3RfY2hlY2sgX19hdHRyaWJ1dGVfXygod2Fybl91bnVzZWRfcmVzdWx0KSkKLSAjZGVmaW5lIGNvbnN0YW50IF9fYXR0cmlidXRlX18oKGNvbnN0KSkKLS0tIAotMi4xNi4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbF9naXQuYmIKaW5kZXggYmY5MDA5Yi4uN2FiMjIzNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbF9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbF9naXQuYmIKQEAgLTksMTQgKzksMTMgQEAKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ODczMGFkNThkMTFjN2JiYWQ5YTcwNjZkNjlmNzgwOGUiCiAKLVNSQ1JFViA9ICIzM2VlMGMzYjIxZWEyNzllMDhkMDg2M2ZjYjJlODc0ZjA5NzRiMDBlIgorU1JDUkVWID0gImY2NmQzOTU0NGJiODMzOTEzMGM5NmQyODJhODBmODdjYTE2MDZjYWYiCiBQViA9ICIyLjk5LjkxNytnaXQke1NSQ1BWfSIKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcveG9yZy9kcml2ZXIveGY4Ni12aWRlby1pbnRlbCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfcWVtdXg4NiA9ICJmaWxlOi8vMDFfRml4LWJ1aWxkLW9uLWk2ODYucGF0Y2giCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVN5bmMtaTkxNV9wY2lpZHMtdXB0by04NzE3YzZiNzQxNGYucGF0Y2ggXAorIgogCiBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWNvbW1vbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci1jb21tb24uaW5jCmluZGV4IDU0ZjA0YjEuLmUzMGYwNDQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWNvbW1vbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItY29tbW9uLmluYwpAQCAtMTMsNyArMTMsOSBAQAogCiBGSUxFU18ke1BOfSArPSAiICR7bGliZGlyfS94b3JnL21vZHVsZXMvZHJpdmVycy8qLnNvIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKK1hPUkdCVUlMRENMQVNTID8/PSAiYXV0b3Rvb2xzIgoraW5oZXJpdCAke1hPUkdCVUlMRENMQVNTfSBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKKwogIyBkZXBlbmRzIG9uIHZpcnR1YWwveHNlcnZlcgogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvZmlsZXMvbGlieDExLXdoaXRlc3BhY2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9maWxlcy9saWJ4MTEtd2hpdGVzcGFjZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjk3MTQzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvZmlsZXMvbGlieDExLXdoaXRlc3BhY2UucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy94b3JnL2xpYi9saWJ4MTEvbWVyZ2VfcmVxdWVzdHMvMzNdCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitGcm9tIGI0MTQ2OWM1ZjA4YjFmMzM2NTY2N2ZmM2M0MzBiMTA0YzliOGUyNWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogV2VkLCAyMiBKYW4gMjAyMCAxNzoxMToyMyArMDAwMAorU3ViamVjdDogW1BBVENIIGxpYlgxMV0gY3BwcnVsZXMuaW46IHNxdWFzaCB3aGl0ZXNwYWNlIGluIGdlbmVyYXRlZCBmaWxlcworCitDUFAgaXMgdXNlZCB0byBnZW5lcmF0ZSBmaWxlcywgYnV0IGFzIGNwcCByZWFkcyBmaWxlcyBmcm9tIHRoZSBidWlsZCBob3N0IHRoZQorb3V0cHV0IGhhcyBhIG51bWJlciBvZiBibGFuayBsaW5lcyBhdCB0aGUgYmVnaW5uaW5nIHdoaWNoIHZhcmllcyBkZXBlbmRpbmcgb24KK3doYXQgR0NDIGFuZCBmcmllbmRzIGlzIHVzZWQuCisKK1BhdGhhbG9naWNhbCBleGFtcGxlOgorCisgJCBjcHAgLXVuZGVmIC10cmFkaXRpb25hbCAvZGV2L251bGwKKyAjIDEgIi9kZXYvbnVsbCIKKyAjIDEgIjxidWlsdC1pbj4iCisgIyAxICI8Y29tbWFuZC1saW5lPiIKKyAjIDMxICI8Y29tbWFuZC1saW5lPiIKKyAjIDEgIi91c3IvaW5jbHVkZS9zdGRjLXByZWRlZi5oIiAxIDMgNAorCisgIyAxNyAiL3Vzci9pbmNsdWRlL3N0ZGMtcHJlZGVmLmgiIDMgNAorCisgWyA0MCBibGFuayBsaW5lIF0KKworICMgMzIgIjxjb21tYW5kLWxpbmU+IiAyCisgIyAxICIvZGV2L251bGwiCisKK1NvIGRlcGVuZGluZyBvbiB0aGUgY29udGVudCBvZiBzdGRjLXByZWRlZi5oIGFuZCB3aGF0IG90aGVyIGhlYWRlcnMgQ1BQIHdpbGwKK2xvYWQsIHRoZSBhbW91bnQgb2Ygd2hpdGVzcGFjZSBpbiB0aGUgZ2VuZXJhdGVzIGZpbGVzIHZhcmllcy4gVGhpcyBjYW4gcmVzdWx0IGluCitkaWZmZXJlbmNlcyBpbiByZXByb2R1Y2libGUgZW52aXJvbm1lbnRzLCBhbmQgZmlsZSBjb25mbGljdHMgaW4gbXVsdGlsaWIKK2Vudmlyb25tZW50cy4KKworQXMgd2hpdGVzcGFjZSBpcyBpcnJlbGV2YW50IHRvIHRoZXNlIG1hY2hpbmUtcmVhZGFibGUgZmlsZXMsIGV4dGVuZCB0aGUgc2VkIHRvCitqdXN0IGRlbGV0ZSBibGFuayBsaW5lcy4KKy0tLQorIGNwcHJ1bGVzLmluIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jcHBydWxlcy5pbiBiL2NwcHJ1bGVzLmluCitpbmRleCAwM2Q2NzAxZS4uY2U2YjNjOTggMTAwNjQ0CistLS0gYS9jcHBydWxlcy5pbgorKysrIGIvY3BwcnVsZXMuaW4KK0BAIC0yMyw3ICsyMyw4IEBAIENQUF9TRURfTUFHSUMgPSAkKFNFRCkgLWUgJy9eXCMgICpbMC05XVswLTldKiAgKi4qJCQvZCcgXAorICAgICAgICAgICAgICAgICAgICAgICAgLWUgJy9eWwkgXSpYQ09NTVteYS16QS1aMC05X10vcy9YQ09NTS9cIy8nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIC1lICcvXlsJIF0qWEhBU0gvcy9YSEFTSC9cIy8nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIC1lICdzLFgxMV9MT0NBTEVEQVRBRElSLCQoWDExX0xPQ0FMRURBVEFESVIpLGcnIFwKKy0gICAgICAgICAgICAgICAgICAgICAgIC1lICcvXEBcQCQkL3MvXEBcQCQkL1xcLycKKysgICAgICAgICAgICAgICAgICAgICAgIC1lICcvXEBcQCQkL3MvXEBcQCQkL1xcLycgXAorKyAgICAgICAgICAgICAgICAgICAgICAgLWUgJy9eJCQvZCcKKyAKKyAucHJlOgorIAlAJChNS0RJUl9QKSAkKEBEKQorLS0gCisyLjIwLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLWNvbXBvc2UtZGF0YV8xLjYuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS1jb21wb3NlLWRhdGFfMS42LjguYmIKaW5kZXggY2FiYjg0ZS4uM2Q5N2FkNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLWNvbXBvc2UtZGF0YV8xLjYuOC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEtY29tcG9zZS1kYXRhXzEuNi44LmJiCkBAIC0xNCw3ICsxNCw4IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiYzVmYTVhODZhMjBlMzU5MWJlZDZjMDQ2NDk4ZDRiOGYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjI4OWE4NDVjMTg5ZTI1MWUwZTg4NGNjMGY5MjY5YmJlOTdjMjM4ZGYzNzQxZTg1NGVjNGMxN2MyMWU0NzNkNSIKIAotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRHJvcC14MTEtZGVwZW5kZW5jaWVzLnBhdGNoIgorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRHJvcC14MTEtZGVwZW5kZW5jaWVzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9saWJ4MTEtd2hpdGVzcGFjZS5wYXRjaCIKIAogWE9SR19QTiA9ICJsaWJYMTEiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMV8xLjYuOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMV8xLjYuOS5iYgppbmRleCA4YzJhNTdjLi5mZjYwYTQyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTFfMS42LjkuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExXzEuNi45LmJiCkBAIC0xMSw3ICsxMSw4IEBACiBQRSA9ICIxIgogCiBTUkNfVVJJICs9ICJmaWxlOi8vRml4LWhhbmdpbmctaXNzdWUtaW4tX1hSZXBseS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV90ZXN0cy5wYXRjaCIKKyAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlX3Rlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9saWJ4MTEtd2hpdGVzcGFjZS5wYXRjaCIKIAogU1JDX1VSSVttZDVzdW1dID0gIjU1YWRiZmI2ZDQzNzBlY2FjNWU3MDU5OGM0ZTdlZWQyIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljYzdlOGQwMDBkNjE5M2ZhNWFmNTgwZDUwZDY4OTM4MGI4Mjg3MDUyMjcwZjViYjI2YTVmYjZiNThiMmJlZDEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC4xMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuMTAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNmQ5YzM2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuMTAuMC5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIkdlbmVyaWMgWEtCIGtleW1hcCBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAibGlieGtiY29tbW9uIGlzIGEga2V5bWFwIGNvbXBpbGVyIGFuZCBzdXBwb3J0IGxpYnJhcnkgd2hpY2ggXAorcHJvY2Vzc2VzIGEgcmVkdWNlZCBzdWJzZXQgb2Yga2V5bWFwcyBhcyBkZWZpbmVkIGJ5IHRoZSBYS0Igc3BlY2lmaWNhdGlvbi4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnhrYmNvbW1vbi5vcmciCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNTI1ZWQ5ODA5ZTFmOGEwN2NmNGJjZThiMDllOGI4NyIKK0xJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgorCitERVBFTkRTID0gInV0aWwtbWFjcm9zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8veGtiY29tbW9uLm9yZy9kb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmQ5YWQzYTQ2YjMxNzEzOGI1ZTcyYTkxY2YxMDU0NTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTdjMzYzMGNkYzM4ZmI0NzM0Y2Q1N2ZhMzQ5ZTkyMjQ0ZjVhZTM4NjI4MTNlNTMzY2VkYmQ4NjcyMWEwYjZmMiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly94a2Jjb21tb24ub3JnLyIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcKKworRVhUUkFfT0VNRVNPTiA9ICItRGVuYWJsZS1kb2NzPWZhbHNlIgorCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgd2F5bGFuZCcsIGQpfSIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItRGVuYWJsZS14MTE9dHJ1ZSwtRGVuYWJsZS14MTE9ZmFsc2UsbGlieGNiIHhrZXlib2FyZC1jb25maWcsIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItRGVuYWJsZS13YXlsYW5kPXRydWUsLURlbmFibGUtd2F5bGFuZD1mYWxzZSx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzLCIKKworIyBGaXggYSBmb2xsb3dpbmcgcnVudGltZSBlcnJvcjoKKyMgeGtiY29tbW9uOiBFUlJPUjogY291bGRuJ3QgZmluZCBhIENvbXBvc2UgZmlsZSBmb3IgbG9jYWxlICJDIgorUkRFUEVORFNfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnbGlieDExLWxvY2FsZScsICdsaWJ4MTEtY29tcG9zZS1kYXRhJywgZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuOC40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuOC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjA4ZmQ1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmNvbW1vbl8wLjguNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiR2VuZXJpYyBYS0Iga2V5bWFwIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJsaWJ4a2Jjb21tb24gaXMgYSBrZXltYXAgY29tcGlsZXIgYW5kIHN1cHBvcnQgbGlicmFyeSB3aGljaCBcCi1wcm9jZXNzZXMgYSByZWR1Y2VkIHN1YnNldCBvZiBrZXltYXBzIGFzIGRlZmluZWQgYnkgdGhlIFhLQiBzcGVjaWZpY2F0aW9uLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cueGtiY29tbW9uLm9yZyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU1MjVlZDk4MDllMWY4YTA3Y2Y0YmNlOGIwOWU4Yjg3IgotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCi0KLURFUEVORFMgPSAidXRpbC1tYWNyb3MgZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly94a2Jjb21tb24ub3JnL2Rvd25sb2FkLyR7QlBOfS0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzYzQ0MDkwNThkZmQyMDNmNjQxYTU2MzM1OGUwMTg3ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MGRkY2ZmOTMyYjdmZDM1Mjc1MmQ1MWE1YzRmMDRmM2QwNDAzMjMwYTU4NGRmOWEyZTBkNWVkODdjNDg2YzhiIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3hrYmNvbW1vbi5vcmcvIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kb2NzIgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsbGlieGNiIHhrZXlib2FyZC1jb25maWcsIgotCi0jIEZpeCBhIGZvbGxvd2luZyBydW50aW1lIGVycm9yOgotIyB4a2Jjb21tb246IEVSUk9SOiBjb3VsZG4ndCBmaW5kIGEgQ29tcG9zZSBmaWxlIGZvciBsb2NhbGUgIkMiCi1SREVQRU5EU18ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdsaWJ4MTEtbG9jYWxlJywgJ2xpYngxMS1jb21wb3NlLWRhdGEnLCBkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cG1fMy41LjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHBtXzMuNS4xMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRkODI5Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cG1fMy41LjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotcmVxdWlyZSB4b3JnLWxpYi1jb21tb24uaW5jCi0KLSMgbGlieHBtIHJlcXVpcmVzIHhnZXR0ZXh0IHRvIGJ1aWxkCi1pbmhlcml0IGdldHRleHQKLQotU1VNTUFSWSA9ICJYcG06IFggUGl4bWFwIGV4dGVuc2lvbiBsaWJyYXJ5IgotCi1ERVNDUklQVElPTiA9ICJsaWJYcG0gcHJvdmlkZXMgc3VwcG9ydCBhbmQgY29tbW9uIG9wZXJhdGlvbiBmb3IgdGhlIFhQTSBcCi1waXhtYXAgZm9ybWF0LCB3aGljaCBpcyBjb21tb25seSB1c2VkIGluIGxlZ2FjeSBYIGFwcGxpY2F0aW9ucy4gIFhQTSBpcyBcCi1hbiBleHRlbnNpb24gb2YgdGhlIG1vbm9jaHJvbWUgWEJNIGJpdG1hcCBzcGVjaWZpY2llZCBpbiB0aGUgWCBcCi1wcm90b2NvbC4iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTFmNDI3MGIwMTJlY2Q0YWIxYTE2NGY1ZjRlZDZjZjciCi1ERVBFTkRTICs9ICJsaWJ4ZXh0IGxpYnNtIGxpYnh0IGdldHRleHQtbmF0aXZlIgotUEUgPSAiMSIKLQotWE9SR19QTiA9ICJsaWJYcG0iCi0KLVBBQ0tBR0VTID0rICJzeHBtIGN4cG0iCi1GSUxFU19jeHBtID0gIiR7YmluZGlyfS9jeHBtIgotRklMRVNfc3hwbSA9ICIke2JpbmRpcn0vc3hwbSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjIwZjQ2Mjc2NzJlZGIyYmQwNmE3NDlmMTFhYTk3MzAyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZkNmE2ZGUzZGE0OGRlOGQxYmI3MzhhYjZiZTRhZDY3ZjdjYjA5ODZjMzliZDNmN2Q1MWRkMjRmNzg1NGJkZWMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHBtXzMuNS4xMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhwbV8zLjUuMTMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRhOGUzMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhwbV8zLjUuMTMuYmIKQEAgLTAsMCArMSwyNyBAQAorcmVxdWlyZSB4b3JnLWxpYi1jb21tb24uaW5jCisKKyMgbGlieHBtIHJlcXVpcmVzIHhnZXR0ZXh0IHRvIGJ1aWxkCitpbmhlcml0IGdldHRleHQKKworU1VNTUFSWSA9ICJYcG06IFggUGl4bWFwIGV4dGVuc2lvbiBsaWJyYXJ5IgorCitERVNDUklQVElPTiA9ICJsaWJYcG0gcHJvdmlkZXMgc3VwcG9ydCBhbmQgY29tbW9uIG9wZXJhdGlvbiBmb3IgdGhlIFhQTSBcCitwaXhtYXAgZm9ybWF0LCB3aGljaCBpcyBjb21tb25seSB1c2VkIGluIGxlZ2FjeSBYIGFwcGxpY2F0aW9ucy4gIFhQTSBpcyBcCithbiBleHRlbnNpb24gb2YgdGhlIG1vbm9jaHJvbWUgWEJNIGJpdG1hcCBzcGVjaWZpY2llZCBpbiB0aGUgWCBcCitwcm90b2NvbC4iCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTFmNDI3MGIwMTJlY2Q0YWIxYTE2NGY1ZjRlZDZjZjciCitERVBFTkRTICs9ICJsaWJ4ZXh0IGxpYnNtIGxpYnh0IGdldHRleHQtbmF0aXZlIgorUEUgPSAiMSIKKworWE9SR19QTiA9ICJsaWJYcG0iCisKK1BBQ0tBR0VTID0rICJzeHBtIGN4cG0iCitGSUxFU19jeHBtID0gIiR7YmluZGlyfS9jeHBtIgorRklMRVNfc3hwbSA9ICIke2JpbmRpcn0vc3hwbSIKKworU1JDX1VSSVttZDVzdW1dID0gIjZmMGVjZjhkMTAzZDUyOGNmYzgwM2FhNDc1MTM3YWZhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljZDFkYTU3NTg4YjZjYjcxNDUwZWZmMjI3M2VmNmI2NTc1MzdhOWFjNGQwMmQwMDE0MjI4ODQ1YjkzNWFjMjUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlXzEuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzaG1mZW5jZV8xLjMuYmIKaW5kZXggODVhNDhlNC4uY2M0NTY5NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlXzEuMy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2htZmVuY2VfMS4zLmJiCkBAIC0xMSw2ICsxMSw4IEBACiAKIERFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIgogCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1zaGFyZWQtbWVtb3J5LWRpcj0vZGV2L3NobSIKKwogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiNDJkZGE4MDE2OTQzZGMxMmFmZjJjMDNhMDM2ZTA5MzciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9waXhtYW4vMDAwMS10ZXN0LXV0aWxzLUNoZWNrLWZvci1GRV9JTlZBTElELWRlZmluaXRpb24tYmVmb3JlLXVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvcGl4bWFuLzAwMDEtdGVzdC11dGlscy1DaGVjay1mb3ItRkVfSU5WQUxJRC1kZWZpbml0aW9uLWJlZm9yZS11cy5wYXRjaAppbmRleCA3ODJjMWRiLi4yM2NiZjUzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9waXhtYW4vMDAwMS10ZXN0LXV0aWxzLUNoZWNrLWZvci1GRV9JTlZBTElELWRlZmluaXRpb24tYmVmb3JlLXVzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3BpeG1hbi8wMDAxLXRlc3QtdXRpbHMtQ2hlY2stZm9yLUZFX0lOVkFMSUQtZGVmaW5pdGlvbi1iZWZvcmUtdXMucGF0Y2gKQEAgLTcsNyArNyw3IEBACiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAtLS0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL3BpeG1hbi9waXhtYW4vbWVyZ2VfcmVxdWVzdHMvMjRdCiAKICB0ZXN0L3V0aWxzLmMgfCAyICsrCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvcGl4bWFuXzAuMzguNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3BpeG1hbl8wLjM4LjQuYmIKaW5kZXggODJjMmU3My4uMjJlMTliYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvcGl4bWFuXzAuMzguNC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9waXhtYW5fMC4zOC40LmJiCkBAIC0xLDQwICsxLDM2IEBACiBTVU1NQVJZID0gIlBpeG1hbjogUGl4ZWwgTWFuaXB1bGF0aW9uIGxpYnJhcnkiCi0KIERFU0NSSVBUSU9OID0gIlBpeG1hbiBwcm92aWRlcyBhIGxpYnJhcnkgZm9yIG1hbmlwdWxhdGluZyBwaXhlbCByZWdpb25zIFwKIC0tIGEgc2V0IG9mIFktWCBiYW5kZWQgcmVjdGFuZ2xlcywgaW1hZ2UgY29tcG9zaXRpbmcgdXNpbmcgdGhlIFwKIFBvcnRlci9EdWZmIG1vZGVsIGFuZCBpbXBsaWNpdCBtYXNrIGdlbmVyYXRpb24gZm9yIGdlb21ldHJpYyBwcmltaXRpdmVzIFwKIGluY2x1ZGluZyB0cmFwZXpvaWRzLCB0cmlhbmdsZXMsIGFuZCByZWN0YW5nbGVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucGl4bWFuLm9yZyIKK1NFQ1RJT04gPSAieDExL2xpYnMiCitERVBFTkRTID0gInpsaWIiCiAKLXJlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYworU1JDX1VSSSA9ICJodHRwczovL3d3dy5jYWlyb2dyYXBoaWNzLm9yZy9yZWxlYXNlcy8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BUk0tcWVtdS1yZWxhdGVkLXdvcmthcm91bmRzLWluLWNwdS1mZWF0dXJlcy1kZXRlY3RpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdC11dGlscy1DaGVjay1mb3ItRkVfSU5WQUxJRC1kZWZpbml0aW9uLWJlZm9yZS11cy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNjdhN2FmMjkwZjkzZjY0M2ExYmM3NDQ5MGQ5ZmRkMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkYTY2ZDZmZDZlNDBhZWU3MGY3YmQwMmU0ZjhmNzZmYzNmMDA2ZWM4NzlkMzQ2YmFlNmE3MjMwMjVjZmJkZGU3IgogCiAjIHNlZSBodHRwOi8vY2Fpcm9ncmFwaGljcy5vcmcvcmVsZWFzZXMvIC0gb25seSBldmVuIG1pbm9yIHZlcnNpb25zIGFyZSBzdGFibGUKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInBpeG1hbi0oP1A8cHZlcj5cZCtcLihcZCpbMDI0NjhdKSsoXC5cZCspKykiCiAKK1BFID0gIjEiCisKIExJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlICYgUEQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xNDA5NmM3NjlhZTBjYmI1ZmNiOTRlYzQ2OGJlMTFiMyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9waXhtYW4vcGl4bWFuLW1hdHJpeC5jO2VuZGxpbmU9MjE7bWQ1PTRhMDE4ZGZmM2U0ZTI1MzAyNzI0Yzg4ZmY5NWMyNDU2IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3BpeG1hbi9waXhtYW4tYXJtLW5lb24tYXNtLmg7ZW5kbGluZT0yNDttZDU9OWE5Y2MxZTUxYWJiZjFkYTU4ZjRkOTUyOGVjOWQ0OWIgXAogICAgICAgICAgICAgICAgICAgICIKLURFUEVORFMgKz0gInpsaWIgbGlicG5nIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZworCisjIFRoZXNlIGFyZSBmb3IgdGhlIHRlc3RzIGFuZCBkZW1vcywgd2hpY2ggd2UgZG9uJ3QgaW5zdGFsbAorRVhUUkFfT0VNRVNPTiA9ICItRGd0az1kaXNhYmxlZCAtRGxpYnBuZz1kaXNhYmxlZCIKKyMgbGQ6IHBpeG1hbi9saWJwaXhtYW4tbW14LmEocGl4bWFuLW1teC5jLm8pOgorIyBsaW5raW5nIG1pcHM6bG9vbmdzb25fMmYgbW9kdWxlIHdpdGggcHJldmlvdXMgbWlwczppc2E2NCBtb2R1bGVzIAorRVhUUkFfT0VNRVNPTiArPSAiLURsb29uZ3Nvbi1tbWk9ZGlzYWJsZWQiCisKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUEUgPSAiMSIKLQotSVdNTVhUID0gIi0tZGlzYWJsZS1hcm0taXdtbXh0IgotTE9PTkdTT05fTU1JID0gIi0tZGlzYWJsZS1sb29uZ3Nvbi1tbWkiCi0jIElmIHRhcmdldCBzdXBwb3J0cyBuZW9uIHRoZW4gZGlzYWJsZSB0aGUgJ3NpbWQnIChpZSBWRlB2MikgZmFsbGJhY2ssIG90aGVyd2lzZSBkaXNhYmxlIG5lb24uCi1ORU9OID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm5lb24iLCAiLS1kaXNhYmxlLWFybS1zaW1kIiwgIi0tZGlzYWJsZS1hcm0tbmVvbiIgLGQpfSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1ndGsgJHtJV01NWFR9ICR7TE9PTkdTT05fTU1JfSAke05FT059IgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLWRpc2FibGUtZ3RrIgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICItLWRpc2FibGUtZ3RrIgotCi1TUkNfVVJJICs9ICJcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1BUk0tcWVtdS1yZWxhdGVkLXdvcmthcm91bmRzLWluLWNwdS1mZWF0dXJlcy1kZXRlY3RpLnBhdGNoIFwKLQkgICAgZmlsZTovLzAwMDEtdGVzdC11dGlscy1DaGVjay1mb3ItRkVfSU5WQUxJRC1kZWZpbml0aW9uLWJlZm9yZS11cy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxNmEzNTBhOGE0MDExNmRkZjY3NjMyYTFkMjYyMzcxMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NGFiYjdmYTI1NDFhZjI0ZDljM2IzNGJmNzVkNmFjNjBjYzk0YWM0NDEwMDYxYmJiMjk1YjY2YTI5MjIxNTUwIgotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjI3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjE1NmFkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiS2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBXaW5kb3ciCi0KLURFU0NSSVBUSU9OID0gIlRoZSBub24tYXJjaCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGFiYXNlIGZvciBYIFwKLVdpbmRvdy4gIFRoZSBnb2FsIGlzIHRvIHByb3ZpZGUgdGhlIGNvbnNpc3RlbnQsIHdlbGwtc3RydWN0dXJlZCwgXAotZnJlcXVlbnRseSByZWxlYXNlZCBvcGVuIHNvdXJjZSBvZiBYIGtleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YSBmb3IgWCBcCi1XaW5kb3cgU3lzdGVtIGltcGxlbWVudGF0aW9ucy4gIFRoZSBwcm9qZWN0IGlzIHRhcmdldGVkIHRvIFhLQi1iYXNlZCBcCi1zeXN0ZW1zLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL1hLZXlib2FyZENvbmZpZyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9eGtleWJvYXJkLWNvbmZpZyIKLQotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wZTdmMjFjYTdkYjk3NWM2MzQ2N2QyZTc2MjRhMTJmOSIKLQotU1JDX1VSSSA9ICIke1hPUkdfTUlSUk9SfS9pbmRpdmlkdWFsL2RhdGEveGtleWJvYXJkLWNvbmZpZy8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIzMTY3NTNlMzVkMzkwNmQwNDJjNzQyMzA2MTJlYWI5ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2OTBkYWVjOGZlYTYzNTI2YzA3NjIwYzkwZTZmM2YxMGFhZTM0ZTk0YjZkYjZlMzA5MDYxNzM0ODA3MjE5MDFmIgotCi1TRUNUSU9OID0gIngxMS9saWJzIgotREVQRU5EUyA9ICJ1dGlsLW1hY3JvcyBsaWJ4c2x0LW5hdGl2ZSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC14a2ItcnVsZXMtc3ltbGluaz14b3JnIC0tZGlzYWJsZS1ydW50aW1lLWRlcHMiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L1gxMS94a2IiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L1gxMS94a2IvY29tcGlsZWQKLSAgICBjZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL3J1bGVzICYmIGxuIC1zZiBiYXNlIHhvcmcKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTNkNjk0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjI4LmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiS2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBXaW5kb3ciCisKK0RFU0NSSVBUSU9OID0gIlRoZSBub24tYXJjaCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGFiYXNlIGZvciBYIFwKK1dpbmRvdy4gIFRoZSBnb2FsIGlzIHRvIHByb3ZpZGUgdGhlIGNvbnNpc3RlbnQsIHdlbGwtc3RydWN0dXJlZCwgXAorZnJlcXVlbnRseSByZWxlYXNlZCBvcGVuIHNvdXJjZSBvZiBYIGtleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YSBmb3IgWCBcCitXaW5kb3cgU3lzdGVtIGltcGxlbWVudGF0aW9ucy4gIFRoZSBwcm9qZWN0IGlzIHRhcmdldGVkIHRvIFhLQi1iYXNlZCBcCitzeXN0ZW1zLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL1hLZXlib2FyZENvbmZpZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9eGtleWJvYXJkLWNvbmZpZyIKKworTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wZTdmMjFjYTdkYjk3NWM2MzQ2N2QyZTc2MjRhMTJmOSIKKworU1JDX1VSSSA9ICIke1hPUkdfTUlSUk9SfS9pbmRpdmlkdWFsL2RhdGEveGtleWJvYXJkLWNvbmZpZy8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1YTk2OGFiNzc4NDZmZjg1YTA0MjQyNDEwYjJhNjFkZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2OWFkYjI1YjBmYzY0ZTQwNzVmOGVjMGVhYjhkODY5ODkyNDE5ZjQ3NGY5MWZiNjlkYjE3MTNkZTIwNjJiZGNlIgorCitTRUNUSU9OID0gIngxMS9saWJzIgorREVQRU5EUyA9ICJ1dGlsLW1hY3JvcyBsaWJ4c2x0LW5hdGl2ZSIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC14a2ItcnVsZXMtc3ltbGluaz14b3JnIC0tZGlzYWJsZS1ydW50aW1lLWRlcHMiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L1gxMS94a2IiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L1gxMS94a2IvY29tcGlsZWQKKyAgICBjZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL3J1bGVzICYmIGxuIC1zZiBiYXNlIHhvcmcKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veG9yZy1wcm90by1jb21tb24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94b3JnLXByb3RvLWNvbW1vbi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhNDE3YzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94b3JnLXByb3RvLWNvbW1vbi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIlggcHJvdG9jb2wgaGVhZGVyczogJHtYT1JHX1BOfSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cueC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PXhvcmciCi0KLVNFQ1RJT04gPSAieDExL2xpYnMiCi1MSUNFTlNFID0gIk1JVC1YIgotCi1YT1JHX1BOID0gIiR7QlBOfSIKLQotU1JDX1VSSSA9ICIke1hPUkdfTUlSUk9SfS9pbmRpdmlkdWFsL3Byb3RvLyR7WE9SR19QTn0tJHtQVn0udGFyLmJ6MiIKLQotUyA9ICIke1dPUktESVJ9LyR7WE9SR19QTn0tJHtQVn0iCi0KLURFUEVORFMgPSAidXRpbC1tYWNyb3MiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1mb3AiCi0KLVVOS05PV05fQ09ORklHVVJFX1dISVRFTElTVCArPSAiLS13aXRob3V0LWZvcCAtLXdpdGhvdXQteG1sdG8gLS13aXRoLXhtbHRvIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1t4bWx0b10gPSAiLS13aXRoLXhtbHRvLCAtLXdpdGhvdXQteG1sdG8sIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCi0KLSMgJHtQTn0gaXMgZW1wdHkgc28gd2UgbmVlZCB0byB0d2VhayAtZGV2IGFuZCAtZGJnIHBhY2thZ2UgZGVwZW5kZW5jaWVzCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotUlJFQ09NTUVORFNfJHtQTn0tZGJnID0gIiR7UE59LWRldiAoPSAke0VYVEVORFBLR1Z9KSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veG9yZ3Byb3RvXzIwMTkuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veG9yZ3Byb3RvXzIwMTkuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFjYmU4OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hvcmdwcm90b18yMDE5LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1yZXF1aXJlIHhvcmctcHJvdG8tY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlggV2luZG93IFN5c3RlbSB1bmlmaWVkIHByb3RvY29sIGRlZmluaXRpb25zIgotCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIGhlYWRlcnMgYW5kIHNwZWNpZmljYXRpb24gZG9jdW1lbnRzIGRlZmluaW5nIFwKLXRoZSBjb3JlIHByb3RvY29sIGFuZCAobWFueSkgZXh0ZW5zaW9ucyBmb3IgdGhlIFggV2luZG93IFN5c3RlbSIKLQotTElDRU5TRSA9ICJNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLXgxMXByb3RvO21kNT1iOWUwNTExMDdkNTYyODk2NjczOWEwYjJlOWIzMjY3NiIKLQotU1JDX1VSSVttZDVzdW1dID0gImEwMmRjYWZmNDhiNDE0MWI5NDlhYzk5ZGZjMzQ0ZDg2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ2ZWNkMDE1NmM1NjFkNDFlOGFhODdjZTc5MzQwOTEwY2RmMzgzNzNiNzU5ZTczN2ZjYmJhNWRmNTA4ZTdiOGUiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veG9yZ3Byb3RvXzIwMjAuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veG9yZ3Byb3RvXzIwMjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzFiYzkwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94b3JncHJvdG9fMjAyMC4xLmJiCkBAIC0wLDAgKzEsMjcgQEAKKworU1VNTUFSWSA9ICJYIFdpbmRvdyBTeXN0ZW0gdW5pZmllZCBwcm90b2NvbCBkZWZpbml0aW9ucyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgaGVhZGVycyBhbmQgc3BlY2lmaWNhdGlvbiBkb2N1bWVudHMgZGVmaW5pbmcgXAordGhlIGNvcmUgcHJvdG9jb2wgYW5kIChtYW55KSBleHRlbnNpb25zIGZvciB0aGUgWCBXaW5kb3cgU3lzdGVtIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy54Lm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9eG9yZyIKKworU0VDVElPTiA9ICJ4MTEvbGlicyIKK0xJQ0VOU0UgPSAiTUlULXN0eWxlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy14MTFwcm90bzttZDU9YjllMDUxMTA3ZDU2Mjg5NjY3MzlhMGIyZTliMzI2NzYiCisKK1NSQ19VUkkgPSAiJHtYT1JHX01JUlJPUn0vaW5kaXZpZHVhbC9wcm90by8ke0JQfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gImMyOWY0ZmE3OGY1M2I1MmIzZWZkYzcxZWJkOTUwNmI2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU0YTE1M2YxMzkwMzVhMzc2YzA3NTg0NWRkMDU4MDQ5MTc3MjEyZGE5NGQ3YTk3MDdjZjk0NjgzNjdiNjk5ZDIiCisKK2luaGVyaXQgbWVzb24KKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbbGVnYWN5XSA9ICItRGxlZ2FjeT10cnVlLC1EbGVnYWN5PWZhbHNlIgorCisjIERhdGFkaXIgb25seSB1c2VkIHRvIGluc3RhbGwgcGMgZmlsZXMsICRkYXRhZGlyL3BrZ2NvbmZpZworZGF0YWRpcj0iJHtsaWJkaXJ9IgorIyAke1BOfSBpcyBlbXB0eSBzbyB3ZSBuZWVkIHRvIHR3ZWFrIC1kZXYgYW5kIC1kYmcgcGFja2FnZSBkZXBlbmRlbmNpZXMKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCitSUkVDT01NRU5EU18ke1BOfS1kYmcgPSAiJHtQTn0tZGV2ICg9ICR7RVhURU5EUEtHVn0pIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9xZW11bWlwcy94b3JnLmNvbmYgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9xZW11bWlwcy94b3JnLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkM2M2NGYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcWVtdW1pcHMveG9yZy5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotCi1TZWN0aW9uICJGaWxlcyIKLUVuZFNlY3Rpb24KLQotU2VjdGlvbiAiRGV2aWNlIgotICAgIElkZW50aWZpZXIgICAgIkdyYXBoaWNzIENvbnRyb2xsZXIiCi0gICAgRHJpdmVyICAgICAgICAiZmJkZXYiCi1FbmRTZWN0aW9uCi0KLVNlY3Rpb24gIk1vbml0b3IiCi0gICAgSWRlbnRpZmllciAgICAiR2VuZXJpYyBNb25pdG9yIgotICAgIE9wdGlvbiAgICAgICAgIkRQTVMiCi0gICAgIyAxMDI0eDYwMCA1OS44NSBIeiAoQ1ZUKSBoc3luYzogMzcuMzUga0h6OyBwY2xrOiA0OS4wMCBNSHoKLSAgICBNb2RlbGluZSAiMTAyNHg2MDBfNjAuMDAiICAgNDkuMDAgIDEwMjQgMTA3MiAxMTY4IDEzMTIgIDYwMCA2MDMgNjEzIDYyNCAtaHN5bmMgK3ZzeW5jCi0gICAgIyA2NDB4NDgwIEAgNjBIeiAoSW5kdXN0cnkgc3RhbmRhcmQpIGhzeW5jOiAzMS41a0h6Ci0gICAgTW9kZUxpbmUgIjY0MHg0ODAiICAgIDI1LjIgIDY0MCAgNjU2ICA3NTIgIDgwMCAgICA0ODAgIDQ5MCAgNDkyICA1MjUgLWhzeW5jIC12c3luYwotICAgICMgNjQweDQ4MCBAIDcySHogKFZFU0EpIGhzeW5jOiAzNy45a0h6Ci0gICAgTW9kZUxpbmUgIjY0MHg0ODAiICAgIDMxLjUgIDY0MCAgNjY0ICA3MDQgIDgzMiAgICA0ODAgIDQ4OSAgNDkxICA1MjAgLWhzeW5jIC12c3luYwotICAgICMgNjQweDQ4MCBAIDc1SHogKFZFU0EpIGhzeW5jOiAzNy41a0h6Ci0gICAgTW9kZUxpbmUgIjY0MHg0ODAiICAgIDMxLjUgIDY0MCAgNjU2ICA3MjAgIDg0MCAgICA0ODAgIDQ4MSAgNDg0ICA1MDAgLWhzeW5jIC12c3luYwotICAgICMgNjQweDQ4MCBAIDg1SHogKFZFU0EpIGhzeW5jOiA0My4za0h6Ci0gICAgTW9kZUxpbmUgIjY0MHg0ODAiICAgIDM2LjAgIDY0MCAgNjk2ICA3NTIgIDgzMiAgICA0ODAgIDQ4MSAgNDg0ICA1MDkgLWhzeW5jIC12c3luYwotRW5kU2VjdGlvbgotCi1TZWN0aW9uICJTY3JlZW4iCi0gICAgSWRlbnRpZmllciAgICAiRGVmYXVsdCBTY3JlZW4iCi0gICAgRGV2aWNlICAgICAgICAiR3JhcGhpY3MgQ29udHJvbGxlciIKLSAgICBNb25pdG9yICAgICAgICAiR2VuZXJpYyBNb25pdG9yIgotICAgIERlZmF1bHREZXB0aCAgMTYKLSAgICBTdWJTZWN0aW9uICJEaXNwbGF5IgotICAgICAgICBNb2RlcyAgICAgIjY0MHg0ODAiCi0gICAgRW5kU3ViU2VjdGlvbgotRW5kU2VjdGlvbgotCi1TZWN0aW9uICJTZXJ2ZXJMYXlvdXQiCi0gICAgSWRlbnRpZmllciAgICAiRGVmYXVsdCBMYXlvdXQiCi0gICAgU2NyZWVuICAgICAgICAiRGVmYXVsdCBTY3JlZW4iCi0gICAgT3B0aW9uICAgICAgICAgIkFsbG93RW1wdHlJbnB1dCIgIm5vIgotRW5kU2VjdGlvbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcWVtdW1pcHM2NC94b3JnLmNvbmYgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9xZW11bWlwczY0L3hvcmcuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDNiOTRkYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9xZW11bWlwczY0L3hvcmcuY29uZgorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLQotU2VjdGlvbiAiRmlsZXMiCi1FbmRTZWN0aW9uCi0KLVNlY3Rpb24gIkRldmljZSIKLSAgICBJZGVudGlmaWVyICAgICJHcmFwaGljcyBDb250cm9sbGVyIgotICAgIERyaXZlciAgICAgICAgImZiZGV2IgotRW5kU2VjdGlvbgotCi1TZWN0aW9uICJNb25pdG9yIgotICAgIElkZW50aWZpZXIgICAgIkdlbmVyaWMgTW9uaXRvciIKLSAgICBPcHRpb24gICAgICAgICJEUE1TIgotICAgICMgMTAyNHg2MDAgNTkuODUgSHogKENWVCkgaHN5bmM6IDM3LjM1IGtIejsgcGNsazogNDkuMDAgTUh6Ci0gICAgTW9kZWxpbmUgIjEwMjR4NjAwXzYwLjAwIiAgIDQ5LjAwICAxMDI0IDEwNzIgMTE2OCAxMzEyICA2MDAgNjAzIDYxMyA2MjQgLWhzeW5jICt2c3luYwotICAgICMgNjQweDQ4MCBAIDYwSHogKEluZHVzdHJ5IHN0YW5kYXJkKSBoc3luYzogMzEuNWtIegotICAgIE1vZGVMaW5lICI2NDB4NDgwIiAgICAyNS4yICA2NDAgIDY1NiAgNzUyICA4MDAgICAgNDgwICA0OTAgIDQ5MiAgNTI1IC1oc3luYyAtdnN5bmMKLSAgICAjIDY0MHg0ODAgQCA3Mkh6IChWRVNBKSBoc3luYzogMzcuOWtIegotICAgIE1vZGVMaW5lICI2NDB4NDgwIiAgICAzMS41ICA2NDAgIDY2NCAgNzA0ICA4MzIgICAgNDgwICA0ODkgIDQ5MSAgNTIwIC1oc3luYyAtdnN5bmMKLSAgICAjIDY0MHg0ODAgQCA3NUh6IChWRVNBKSBoc3luYzogMzcuNWtIegotICAgIE1vZGVMaW5lICI2NDB4NDgwIiAgICAzMS41ICA2NDAgIDY1NiAgNzIwICA4NDAgICAgNDgwICA0ODEgIDQ4NCAgNTAwIC1oc3luYyAtdnN5bmMKLSAgICAjIDY0MHg0ODAgQCA4NUh6IChWRVNBKSBoc3luYzogNDMuM2tIegotICAgIE1vZGVMaW5lICI2NDB4NDgwIiAgICAzNi4wICA2NDAgIDY5NiAgNzUyICA4MzIgICAgNDgwICA0ODEgIDQ4NCAgNTA5IC1oc3luYyAtdnN5bmMKLUVuZFNlY3Rpb24KLQotU2VjdGlvbiAiU2NyZWVuIgotICAgIElkZW50aWZpZXIgICAgIkRlZmF1bHQgU2NyZWVuIgotICAgIERldmljZSAgICAgICAgIkdyYXBoaWNzIENvbnRyb2xsZXIiCi0gICAgTW9uaXRvciAgICAgICAgIkdlbmVyaWMgTW9uaXRvciIKLSAgICBEZWZhdWx0RGVwdGggICAgMTYKLSAgICBTdWJTZWN0aW9uICJEaXNwbGF5IgotICAgICAgICBNb2RlcyAgICAgIjY0MHg0ODAiCi0gICAgRW5kU3ViU2VjdGlvbgotRW5kU2VjdGlvbgotCi1TZWN0aW9uICJTZXJ2ZXJMYXlvdXQiCi0gICAgSWRlbnRpZmllciAgICAiRGVmYXVsdCBMYXlvdXQiCi0gICAgU2NyZWVuICAgICAgICAiRGVmYXVsdCBTY3JlZW4iCi0gICAgT3B0aW9uICAgICAgICAgIkFsbG93RW1wdHlJbnB1dCIgIm5vIgotRW5kU2VjdGlvbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYwppbmRleCBhMGFlNjVjLi5iNGYwNzYwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYwpAQCAtMTE3LDYgKzExNyw3IEBACiAgICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0vZXRjL1gxMSBcCiAgICAgICAgICAgICAgICAgIC0tbG9jYWxzdGF0ZWRpcj0vdmFyIFwKICAgICAgICAgICAgICAgICAgLS13aXRoLXhrYi1vdXRwdXQ9L3Zhci9saWIveGtiIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLW9zLW5hbWU9TGludXggXAogIgogCiBPUEVOR0xfUEtHQ09ORklHUyA9ICJkcmkgZ2x4IGdsYW1vciBkcmkzIHhzaG1mZW5jZSIKQEAgLTE1MSw2ICsxNTIsNyBAQAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogCSMgSXRzIGFzc3VtZWQgYmFzZS1maWxlcyBjcmVhdGVzIHRoaXMgZm9yIHVzCiAJcm1kaXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbG9nLworICAgICAgICBzZWQgLWkgLWUgJ3MsJHtsaWJkaXJ9L3hvcmcvbW9kdWxlcywke3ByZWZpeH0vbGliKi94b3JnL21vZHVsZXMsJyAke0R9JHttYW5kaXJ9L21hbjUveG9yZy5jb25mLjUKIH0KIAogIyBBZGQgcnVudGltZSBwcm92aWRlcyBmb3IgdGhlIEFCSSB2ZXJzaW9ucyBvZiB0aGUgdmlkZW8gYW5kIGlucHV0IHN1YnN5c3RlbXMsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDEtY29tcGlsZXIuaC1Eby1ub3QtaW5jbHVkZS1zeXMtaW8uaC1vbi1BUk0td2l0aC1nbGliYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvMDAwMS1jb21waWxlci5oLURvLW5vdC1pbmNsdWRlLXN5cy1pby5oLW9uLUFSTS13aXRoLWdsaWJjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTlhNGYyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvMDAwMS1jb21waWxlci5oLURvLW5vdC1pbmNsdWRlLXN5cy1pby5oLW9uLUFSTS13aXRoLWdsaWJjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotRnJvbSAyYmE5NTEwNzIxYjdhNzZjYjdmZTUwNzQ0OWZhMGFjOTk3YTRjY2UzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogT2xpdmllciBGb3VyZGFuIDxvZm91cmRhbkByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAxIEp1bCAyMDE5IDEzOjIwOjM5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbXBpbGVyLmg6IERvIG5vdCBpbmNsdWRlIHN5cy9pby5oIG9uIEFSTSB3aXRoIGdsaWJjCi0KLTxzeXMvaW8uaD4gb24gQVJNIGhhc24ndCB3b3JrZWQgZm9yIGEgbG9uZywgbG9uZyB0aW1lLCBzbyBpdCB3YXMgcmVtb3ZlZAotaXQgZnJvbSBnbGliYyB1cHN0cmVhbS4KLQotUmVtb3ZlIHRoZSBpbmNsdWRlIHRvIGF2b2lkIGEgY29tcGlsYXRpb24gZmFpbHVyZSBvbiBBUk0gd2l0aCBnbGliYy4KLQotU2lnbmVkLW9mZi1ieTogT2xpdmllciBGb3VyZGFuIDxvZm91cmRhbkByZWRoYXQuY29tPgotQ2xvc2VzOiBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcveG9yZy94c2VydmVyL2lzc3Vlcy84NDAKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy94b3JnL3hzZXJ2ZXIvY29tbWl0L2ZlNGNkMGU3ZjVjNThmYTk0ZGIzNjMyNmFhZGMxYmQ0ZTZkNzNlYmFdCi0tLS0KLSBody94ZnJlZTg2L2NvbW1vbi9jb21waWxlci5oIHwgMzAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaHcveGZyZWU4Ni9jb21tb24vY29tcGlsZXIuaCBiL2h3L3hmcmVlODYvY29tbW9uL2NvbXBpbGVyLmgKLWluZGV4IDcxNDRjNmEuLjJiMjAwOGIgMTAwNjQ0Ci0tLS0gYS9ody94ZnJlZTg2L2NvbW1vbi9jb21waWxlci5oCi0rKysgYi9ody94ZnJlZTg2L2NvbW1vbi9jb21waWxlci5oCi1AQCAtNzU4LDM2ICs3NTgsNiBAQCBpbmwodW5zaWduZWQgc2hvcnQgcG9ydCkKLSAgICAgcmV0dXJuIHhmODZSZWFkTW1pbzMyTGUoKHZvaWQgKikgaW9CYXNlLCBwb3J0KTsKLSB9Ci0gCi0tI2VsaWYgZGVmaW5lZChfX2FybV9fKSAmJiBkZWZpbmVkKF9fbGludXhfXykKLS0KLS0vKiBmb3IgTGludXggb24gQVJNLCB3ZSB1c2UgdGhlIExJQkMgaW54L291dHggcm91dGluZXMgKi8KLS0vKiBub3RlIHRoYXQgdGhlIGFwcHJvcHJpYXRlIHNldHVwIHZpYSAiaW9wZXJtIiBuZWVkcyB0byBiZSBkb25lICovCi0tLyogICpiZWZvcmUqIGFueSBpbngvb3V0eCBpcyBkb25lLiAqLwotLQotLSNpbmNsdWRlIDxzeXMvaW8uaD4KLS0KLS1zdGF0aWMgX19pbmxpbmVfXyB2b2lkCi0teGZfb3V0Yih1bnNpZ25lZCBzaG9ydCBwb3J0LCB1bnNpZ25lZCBjaGFyIHZhbCkKLS17Ci0tICAgIG91dGIodmFsLCBwb3J0KTsKLS19Ci0tCi0tc3RhdGljIF9faW5saW5lX18gdm9pZAotLXhmX291dHcodW5zaWduZWQgc2hvcnQgcG9ydCwgdW5zaWduZWQgc2hvcnQgdmFsKQotLXsKLS0gICAgb3V0dyh2YWwsIHBvcnQpOwotLX0KLS0KLS1zdGF0aWMgX19pbmxpbmVfXyB2b2lkCi0teGZfb3V0bCh1bnNpZ25lZCBzaG9ydCBwb3J0LCB1bnNpZ25lZCBpbnQgdmFsKQotLXsKLS0gICAgb3V0bCh2YWwsIHBvcnQpOwotLX0KLS0KLS0jZGVmaW5lIG91dGIgeGZfb3V0YgotLSNkZWZpbmUgb3V0dyB4Zl9vdXR3Ci0tI2RlZmluZSBvdXRsIHhmX291dGwKLS0KLSAjZWxpZiBkZWZpbmVkKF9fbmRzMzJfXykKLSAKLSAvKgotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy8wMDAxLWRybW1vZGVfZGlzcGxheS5jLWFkZC1taXNzaW5nLW1pLmgtaW5jbHVkZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvMDAwMS1kcm1tb2RlX2Rpc3BsYXkuYy1hZGQtbWlzc2luZy1taS5oLWluY2x1ZGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGI4ZTQzZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvMDAwMS1kcm1tb2RlX2Rpc3BsYXkuYy1hZGQtbWlzc2luZy1taS5oLWluY2x1ZGUucGF0Y2gKQEAgLTAsMCArMSwyMyBAQAorRnJvbSA4NDMzODQ0NDE3OWNhYjdlZGUxMjUyYTExYjY2ZTNiOGY2NTdlNmE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDcgRmViIDIwMjAgMjA6MzY6NDUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gZHJtbW9kZV9kaXNwbGF5LmM6IGFkZCBtaXNzaW5nIG1pLmggaW5jbHVkZQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgaHcveGZyZWU4Ni9kcml2ZXJzL21vZGVzZXR0aW5nL2RybW1vZGVfZGlzcGxheS5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9ody94ZnJlZTg2L2RyaXZlcnMvbW9kZXNldHRpbmcvZHJtbW9kZV9kaXNwbGF5LmMgYi9ody94ZnJlZTg2L2RyaXZlcnMvbW9kZXNldHRpbmcvZHJtbW9kZV9kaXNwbGF5LmMKK2luZGV4IGUxOGNjMzcuLjM0NDVjY2UgMTAwNjQ0CistLS0gYS9ody94ZnJlZTg2L2RyaXZlcnMvbW9kZXNldHRpbmcvZHJtbW9kZV9kaXNwbGF5LmMKKysrKyBiL2h3L3hmcmVlODYvZHJpdmVycy9tb2Rlc2V0dGluZy9kcm1tb2RlX2Rpc3BsYXkuYworQEAgLTQ2LDYgKzQ2LDcgQEAKKyAjaW5jbHVkZSAieGY4NkNydGMuaCIKKyAjaW5jbHVkZSAiZHJtbW9kZV9kaXNwbGF5LmgiCisgI2luY2x1ZGUgInByZXNlbnQuaCIKKysjaW5jbHVkZSAibWkuaCIKKyAKKyAjaW5jbHVkZSA8Y3Vyc29yc3RyLmg+CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMjAuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4yMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGU2ZDIyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4yMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotcmVxdWlyZSB4c2VydmVyLXhvcmcuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXhmODZwY2lCdXMuYy11c2UtSW50ZWwtZGR4LW9ubHktZm9yLXByZS1nZW40LWhhcmR3YXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3BrZ2NvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0LXh0ZXN0LUluaXRpYWxpemUtYXJyYXktd2l0aC1icmFjZXMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtY29tcGlsZXIuaC1Eby1ub3QtaW5jbHVkZS1zeXMtaW8uaC1vbi1BUk0td2l0aC1nbGliYy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vc2Rrc3ltcy1uby1idWlsZC1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjOWZjN2UyMWUxMTI4NmRiZWRkMjJjMDBkZjY1MjEzMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhODFkODI0M2YzN2U3NWEwM2Q0ZjhjNTVmOTZkMGJjMjU4MDJiZTZlYzQ1YzNiZmE1Y2I2MTRjNmQwMWJhYzlkIgotCi0jIFRoZXNlIGV4dGVuc2lvbnMgYXJlIG5vdyBpbnRlZ3JhdGVkIGludG8gdGhlIHNlcnZlciwgc28gZGVjbGFyZSB0aGUgbWlncmF0aW9uCi0jIHBhdGggZm9yIGluLXBsYWNlIHVwZ3JhZGVzLgotCi1SUkVQTEFDRVNfJHtQTn0gPSAgIiR7UE59LWV4dGVuc2lvbi1kcmkgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCi0gICAgICAgICAgICAgICAgICAgIgotUlBST1ZJREVTXyR7UE59ID0gICIke1BOfS1leHRlbnNpb24tZHJpIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAotICAgICAgICAgICAgICAgICAgICIKLVJDT05GTElDVFNfJHtQTn0gPSAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKLSAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMjAuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4yMC44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmN2ZiZTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMjAuOC5iYgpAQCAtMCwwICsxLDM0IEBACityZXF1aXJlIHhzZXJ2ZXIteG9yZy5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEteGY4NnBjaUJ1cy5jLXVzZS1JbnRlbC1kZHgtb25seS1mb3ItcHJlLWdlbjQtaGFyZHdhci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0LXh0ZXN0LUluaXRpYWxpemUtYXJyYXktd2l0aC1icmFjZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2Rrc3ltcy1uby1idWlsZC1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZHJtbW9kZV9kaXNwbGF5LmMtYWRkLW1pc3NpbmctbWkuaC1pbmNsdWRlLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImE3NzBhZWM2MDAxMTY0NDRhOTUzZmY2MzJmNTFmODM5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQxN2I2NDZiZWU0YmEwZmI3ODUwYzFjYzU1YjE4ZTNlODUxM2VkNWMwMmJkZjM4ZGE3ZTEwN2Y4NGUyZDAxNDYiCisKK0NGTEFHUyArPSAiLWZjb21tb24iCisKKyMgVGhlc2UgZXh0ZW5zaW9ucyBhcmUgbm93IGludGVncmF0ZWQgaW50byB0aGUgc2VydmVyLCBzbyBkZWNsYXJlIHRoZSBtaWdyYXRpb24KKyMgcGF0aCBmb3IgaW4tcGxhY2UgdXBncmFkZXMuCisKK1JSRVBMQUNFU18ke1BOfSA9ICAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKKyAgICAgICAgICAgICAgICAgICAiCitSUFJPVklERVNfJHtQTn0gPSAgIiR7UE59LWV4dGVuc2lvbi1kcmkgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCisgICAgICAgICAgICAgICAgICAgIgorUkNPTkZMSUNUU18ke1BOfSA9ICIke1BOfS1leHRlbnNpb24tZHJpIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAorICAgICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZS9tYWtlLWJ0dC1zY3JpcHRzLXB5dGhvbjMtcmVhZHkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2UvbWFrZS1idHQtc2NyaXB0cy1weXRob24zLXJlYWR5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiMGMxYzYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2UvbWFrZS1idHQtc2NyaXB0cy1weXRob24zLXJlYWR5LnBhdGNoCkBAIC0wLDAgKzEsMTk3IEBACitGcm9tIDcwZDVjYTJkNWYzZDZiOTdjMTFjNjQxYjdlMGM1ODM2OTgzMjE5YTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFcmljIFNhbmRlZW4gPHNhbmRlZW5AcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgMjggTWFyIDIwMTggMTU6MjY6MzYgLTA1MDAKK1N1YmplY3Q6IFtvZS1jb3JlXVtQQVRDSCAxLzFdIG1ha2UgYnR0IHNjcmlwdHMgcHl0aG9uMy1yZWFkeQorCitNYW55IGRpc3RyaWJ1dGlvbnMgYXJlIG1vdmluZyB0byBweXRob24zIGJ5IGRlZmF1bHQuICBIZXJlJ3MKK2FuIGF0dGVtcHQgdG8gbWFrZSB0aGUgcHl0aG9uIHNjcmlwdHMgaW4gYmxrdHJhY2UgcHl0aG9uMy1yZWFkeS4KKworTW9zdCBvZiB0aGlzIHdhcyBkb25lIHdpdGggYXV0b21hdGVkIHRvb2xzLiAgSSBoYW5kIGZpeGVkIHNvbWUKK3NwYWNlLXZzIHRhYiBpc3N1ZXMsIGFuZCBjYXN0IGFuIGFycmF5IGluZGV4IHRvIGludGVnZXIuICBJdAorcGFzc2VzIHJ1ZGltZW50YXJ5IHRlc3Rpbmcgd2hlbiBydW4gdW5kZXIgcHl0aG9uMi43IGFzIHdlbGwKK2FzIHB5dGhvbjMuCisKK1RoaXMgZG9lc24ndCBkbyBhbnl0aGluZyB3aXRoIHRoZSBzaGViYW5ncywgaXQgbGVhdmVzIHRoZW0gYm90aAoraW52b2tpbmcgd2hhdGV2ZXIgImVudiBweXRob24iIGNvdWdocyB1cCBvbiB0aGUgc3lzdGVtLgorCitTaWduZWQtb2ZmLWJ5OiBFcmljIFNhbmRlZW4gPHNhbmRlZW5AcmVkaGF0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEplbnMgQXhib2UgPGF4Ym9lQGtlcm5lbC5kaz4KKworVW5jaGFuZ2VkIGV4Y2VwdCB0byBtb2RpZnkgc2hlYmFuZ3MgdG8gdXNlIHB5dGhvbjMgc2luY2UKK29lLWNvcmUgZG9lcyBub3Qgc3VwcG9ydCBweXRob24yIGFueW1vcmUuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdC5rZXJuZWwuZGsvYmxrdHJhY2UuZ2l0IGNvbW1pdCA3MGQ1Y2EyZDUuLi5dCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworLS0tCisgYnR0L2Jub19wbG90LnB5IHwgMjggKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQorIGJ0dC9idHRfcGxvdC5weSB8IDIyICsrKysrKysrKysrKystLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQorCistLS0gZ2l0Lm9yaWcvYnR0L2Jub19wbG90LnB5CisrKysgZ2l0L2J0dC9ibm9fcGxvdC5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhIC91c3IvYmluL2VudiBweXRob24zCisgIworICMgYnR0IGJsa25vIHBsb3R0aW5nIGludGVyZmFjZQorICMKK0BAIC0zOCw2ICszOCw4IEBAIGF1dG9tYXRpY2FsbHkgcHVzaCB0aGUga2V5cyB1bmRlciB0aGUgZ3IKKyBUbyBleGl0IHRoZSBwbG90dGVyLCBlbnRlciAncXVpdCcgb3IgXkQgYXQgdGhlICdnbnVwbG90PiAnIHByb21wdC4KKyAiIiIKKyAKKytmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KKyBpbXBvcnQgZ2V0b3B0LCBnbG9iLCBvcywgc3lzLCB0ZW1wZmlsZQorIAorIHZlcmJvc2UJPSAwCitAQCAtNjAsMTQgKzYyLDE0IEBAIGRlZiBwYXJzZV9hcmdzKGluX2FyZ3MpOgorIAorIAl0cnk6CisgCQkob3B0cywgYXJncykgPSBnZXRvcHQuZ2V0b3B0KGluX2FyZ3MsIHNfb3B0cywgbF9vcHRzKQorLQlleGNlcHQgZ2V0b3B0LmVycm9yLCBtc2c6CistCQlwcmludCA+PnN5cy5zdGRlcnIsIG1zZworLQkJcHJpbnQgPj5zeXMuc3RkZXJyLCBfX2RvY19fCisrCWV4Y2VwdCBnZXRvcHQuZXJyb3IgYXMgbXNnOgorKwkJcHJpbnQobXNnLCBmaWxlPXN5cy5zdGRlcnIpCisrCQlwcmludChfX2RvY19fLCBmaWxlPXN5cy5zdGRlcnIpCisgCQlzeXMuZXhpdCgxKQorIAorIAlmb3IgKG8sIGEpIGluIG9wdHM6CisgCQlpZiBvIGluICgnLWgnLCAnLS1oZWxwJyk6CistCQkJcHJpbnQgX19kb2NfXworKwkJCXByaW50KF9fZG9jX18pCisgCQkJc3lzLmV4aXQoMCkKKyAJCWVsaWYgbyBpbiAoJy12JywgJy0tdmVyYm9zZScpOgorIAkJCXZlcmJvc2UgKz0gMQorQEAgLTg0LDEwICs4NiwxMCBAQCBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorIAkoYm5vcywga2V5c19iZWxvdykgPSBwYXJzZV9hcmdzKHN5cy5hcmd2WzE6XSkKKyAKKyAJaWYgdmVyYm9zZToKKy0JCXByaW50ICdVc2luZyBmaWxlczonLAorLQkJZm9yIGJubyBpbiBibm9zOiBwcmludCBibm8sCistCQlpZiBrZXlzX2JlbG93OglwcmludCAnXG5LZXlzIGFyZSB0byBiZSBwbGFjZWQgYmVsb3cgZ3JhcGgnCistCQllbHNlOgkJcHJpbnQgJycKKysJCXByaW50KCdVc2luZyBmaWxlczonLCBlbmQ9JyAnKQorKwkJZm9yIGJubyBpbiBibm9zOiBwcmludChibm8sIGVuZD0nICcpCisrCQlpZiBrZXlzX2JlbG93OglwcmludCgnXG5LZXlzIGFyZSB0byBiZSBwbGFjZWQgYmVsb3cgZ3JhcGgnKQorKwkJZWxzZToJCXByaW50KCcnKQorIAorIAl0bXBkaXIgPSB0ZW1wZmlsZS5ta3RlbXAoKQorIAlvcy5ta2Rpcih0bXBkaXIpCitAQCAtOTksNyArMTAxLDcgQEAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAJCWZvID0gb3Blbih0LCAndycpCisgCQlmb3IgbGluZSBpbiBvcGVuKGYsICdyJyk6CisgCQkJZmxkID0gbGluZS5zcGxpdChOb25lKQorLQkJCXByaW50ID4+Zm8sIGZsZFswXSwgZmxkWzFdLCBpbnQoZmxkWzJdKS1pbnQoZmxkWzFdKQorKwkJCXByaW50KGZsZFswXSwgZmxkWzFdLCBpbnQoZmxkWzJdKS1pbnQoZmxkWzFdKSwgZmlsZT1mbykKKyAJCWZvLmNsb3NlKCkKKyAKKyAJCXQgPSB0W3QucmZpbmQoJy8nKSsxOl0KK0BAIC0xMDcsMTYgKzEwOSwxNiBAQCBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorIAkJZWxzZTogICAgICAgICAgICAgICAgcGxvdF9jbWQgPSAiJXMsJyVzJyIgJSAocGxvdF9jbWQsIHQpCisgCisgCWZvID0gb3BlbignJXMvcGxvdC5jbWRzJyAlIHRtcGRpciwgJ3cnKQorLQlwcmludCA+PmZvLCBjbWRzCistCWlmIGxlbihibm9zKSA+IDEwIG9yIGtleXNfYmVsb3c6IHByaW50ID4+Zm8sICdzZXQga2V5IGJlbG93JworLQlwcmludCA+PmZvLCBwbG90X2NtZAorKwlwcmludChjbWRzLCBmaWxlPWZvKQorKwlpZiBsZW4oYm5vcykgPiAxMCBvciBrZXlzX2JlbG93OiBwcmludCgnc2V0IGtleSBiZWxvdycsIGZpbGU9Zm8pCisrCXByaW50KHBsb3RfY21kLCBmaWxlPWZvKQorIAlmby5jbG9zZSgpCisgCisgCXBpZCA9IG9zLmZvcmsoKQorIAlpZiBwaWQgPT0gMDoKKyAJCWNtZCA9ICdnbnVwbG90ICVzL3Bsb3QuY21kcyAtJyAlIHRtcGRpcgorIAorLQkJaWYgdmVyYm9zZTogcHJpbnQgJ0V4ZWN1dGluZyAlcycgJSBjbWQKKysJCWlmIHZlcmJvc2U6IHByaW50KCdFeGVjdXRpbmcgJXMnICUgY21kKQorIAorIAkJb3MuY2hkaXIodG1wZGlyKQorIAkJb3Muc3lzdGVtKGNtZCkKKy0tLSBnaXQub3JpZy9idHQvYnR0X3Bsb3QucHkKKysrKyBnaXQvYnR0L2J0dF9wbG90LnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjCisgIyBidHRfcGxvdC5weTogR2VuZXJhdGUgbWF0cGxvdGxpYiBwbG90cyBmb3IgQlRUIGdlbmVyYXRlIGRhdGEgZmlsZXMKKyAjCitAQCAtNTUsNiArNTUsMTAgQEAgQXJndW1lbnRzOgorICAgYnV0IHRoZSAtbyAoLS1vdXRwdXQpIGFuZCAtVCAoLS10aXRsZSkgb3B0aW9ucyB3aWxsIGJlIGlnbm9yZWQuCisgIiIiCisgCisrZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKKytmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCisraW1wb3J0IHNpeAorK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCByYW5nZQorIF9fYXV0aG9yX18gPSAnQWxhbiBELiBCcnVuZWxsZSA8YWxhbi5icnVuZWxsZUBocC5jb20+JworIAorICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0BAIC04Miw3ICs4Niw3IEBAIGdldF9iYXNlIAk9IGxhbWJkYSBmaWxlOiBmaWxlW2ZpbGUuZmluZCgKKyBkZWYgZmF0YWwobXNnKToKKyAJIiIiR2VuZXJhdGUgZmF0YWwgZXJyb3IgbWVzc2FnZSBhbmQgZXhpdCIiIgorIAorLQlwcmludCA+PnN5cy5zdGRlcnIsICdGQVRBTDogJXMnICUgbXNnCisrCXByaW50KCdGQVRBTDogJXMnICUgbXNnLCBmaWxlPXN5cy5zdGRlcnIpCisgCXN5cy5leGl0KDEpCisgCisgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQEAgLTE2Myw3ICsxNjcsNyBAQCBkZWYgZ2V0X2RhdGEoZmlsZXMpOgorIAkJaWYgbm90IG9zLnBhdGguZXhpc3RzKGZpbGUpOgorIAkJCWZhdGFsKCclcyBub3QgZm91bmQnICUgZmlsZSkKKyAJCWVsaWYgdmVyYm9zZToKKy0JCQlwcmludCAnUHJvY2Vzc2luZyAlcycgJSBmaWxlCisrCQkJcHJpbnQoJ1Byb2Nlc3NpbmcgJXMnICUgZmlsZSkKKyAKKyAJCXhzID0gW10KKyAJCXlzID0gW10KK0BAIC0yMTQsOCArMjE4LDggQEAgZGVmIHBhcnNlX2FyZ3MoYXJncyk6CisgCisgCXRyeToKKyAJCShvcHRzLCBhcmdzKSA9IGdldG9wdC5nZXRvcHQoYXJnc1sxOl0sIHNfb3B0cywgbF9vcHRzKQorLQlleGNlcHQgZ2V0b3B0LmVycm9yLCBtc2c6CistCQlwcmludCA+PnN5cy5zdGRlcnIsIG1zZworKwlleGNlcHQgZ2V0b3B0LmVycm9yIGFzIG1zZzoKKysJCXByaW50KG1zZywgZmlsZT1zeXMuc3RkZXJyKQorIAkJZmF0YWwoX19kb2NfXykKKyAKKyAJZm9yIChvLCBhKSBpbiBvcHRzOgorQEAgLTI5MywxNSArMjk3LDE1IEBAIGRlZiBnZW5lcmF0ZV9vdXRwdXQodHlwZSwgZGIpOgorIAlkZWYgY29sb3IoaWR4LCBzdHlsZSk6CisgCQkiIiJSZXR1cm5zIGEgY29sb3Ivc3ltYm9sIHR5cGUgYmFzZWQgdXBvbiB0aGUgaW5kZXggcGFzc2VkLiIiIgorIAorLSAgICAgICAgICAgICAgICBjb2xvcnMgPSBbICdiJywgJ2cnLCAncicsICdjJywgJ20nLCAneScsICdrJyBdCisrCQljb2xvcnMgPSBbICdiJywgJ2cnLCAncicsICdjJywgJ20nLCAneScsICdrJyBdCisgCQlsX3N0eWxlcyA9IFsgJy0nLCAnOicsICctLScsICctLicgXQorIAkJbV9zdHlsZXMgPSBbICdvJywgJysnLCAnLicsICcsJywgJ3MnLCAndicsICd4JywgJzwnLCAnPicgXQorIAorIAkJY29sb3IgPSBjb2xvcnNbaWR4ICUgbGVuKGNvbG9ycyldCisgCQlpZiBzdHlsZSA9PSAnbGluZSc6CistCQkJc3R5bGUgPSBsX3N0eWxlc1soaWR4IC8gbGVuKGxfc3R5bGVzKSkgJSBsZW4obF9zdHlsZXMpXQorKwkJCXN0eWxlID0gbF9zdHlsZXNbaW50KChpZHggLyBsZW4obF9zdHlsZXMpKSAlIGxlbihsX3N0eWxlcykpXQorIAkJZWxpZiBzdHlsZSA9PSAnbWFya2VyJzoKKy0JCQlzdHlsZSA9IG1fc3R5bGVzWyhpZHggLyBsZW4obV9zdHlsZXMpKSAlIGxlbihtX3N0eWxlcyldCisrCQkJc3R5bGUgPSBtX3N0eWxlc1tpbnQoKGlkeCAvIGxlbihtX3N0eWxlcykpICUgbGVuKG1fc3R5bGVzKSldCisgCisgCQlyZXR1cm4gJyVzJXMnICUgKGNvbG9yLCBzdHlsZSkKKyAKK0BAIC0zMTQsNyArMzE4LDcgQEAgZGVmIGdlbmVyYXRlX291dHB1dCh0eXBlLCBkYik6CisgCQlvZmlsZSA9ICclcy5wbmcnICUgdHlwZQorIAorIAlpZiB2ZXJib3NlOgorLQkJcHJpbnQgJ0dlbmVyYXRpbmcgcGxvdCBpbnRvICVzJyAlIG9maWxlCisrCQlwcmludCgnR2VuZXJhdGluZyBwbG90IGludG8gJXMnICUgb2ZpbGUpCisgCisgCWZpZyA9IHBsdC5maWd1cmUoZmlnc2l6ZT1wbG90X3NpemUpCisgCWF4ID0gZmlnLmFkZF9zdWJwbG90KDExMSkKK0BAIC0zMjksNyArMzMzLDcgQEAgZGVmIGdlbmVyYXRlX291dHB1dCh0eXBlLCBkYik6CisgCQlsZWdlbmRzID0gTm9uZQorIAorIAlrZXlzID0gW10KKy0JZm9yIGZpbGUgaW4gZGIuaXRlcmtleXMoKToKKysJZm9yIGZpbGUgaW4gc2l4Lml0ZXJrZXlzKGRiKToKKyAJCWlmIG5vdCBmaWxlIGluIFsnbWluX3gnLCAnbWF4X3gnLCAnbWluX3knLCAnbWF4X3knXToKKyAJCQlrZXlzLmFwcGVuZChmaWxlKQorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZV9naXQuYmIKaW5kZXggMjYwNWZmOS4uNjkwMzA1MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2VfZ2l0LmJiCkBAIC0xMiw2ICsxMiw3IEBACiBTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwuZGsvYmxrdHJhY2UuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2xkZmxhZ3MucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTA2ODkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWFrZS1idHQtc2NyaXB0cy1weXRob24zLXJlYWR5LnBhdGNoIFwKICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYwppbmRleCA5ZDhiYTQ0Li5mOTlmOGJjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYuaW5jCkBAIC00LDkgKzQsOCBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9jcnlwdG9kZXYtbGludXgvY3J5cHRvZGV2LWxpbnV4IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LW1vZHVsZS1sb2FkaW5nLXdpdGgtTGludXgtdjUuMC1yYzUucGF0Y2ggXAogICAgICAgICAgICAiCi1TUkNSRVYgPSAiZmQ4YjE1ZWYxYzgzOThhNjlhMzc5MzJlZTQ4Yzc0YWI0MDMyOWEyOSIKK1NSQ1JFViA9ICJhODcwNTNiZWU1NjgwODc4YzI5NWI3ZDIzY2YwZDcwNjU1NzZhYzJiIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtRml4LW1vZHVsZS1sb2FkaW5nLXdpdGgtTGludXgtdjUuMC1yYzUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtRml4LW1vZHVsZS1sb2FkaW5nLXdpdGgtTGludXgtdjUuMC1yYzUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0ZWM4NzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLUZpeC1tb2R1bGUtbG9hZGluZy13aXRoLUxpbnV4LXY1LjAtcmM1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2NyeXB0b2Rldi1saW51eC9jcnlwdG9kZXYtbGludXgvY29tbWl0L2Y5NzFlMGNdCi0KLUJhY2twb3J0IHBhdGNoIGZyb20gdXBzdHJlYW0gdG8gZml4IG1vZHVsZSBjcnlwdG9kZXYgbG9hZGluZyBlcnJvci4KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLUZyb20gZjk3MWUwY2Q0YTBlYmU1OWZiMmU4ZTE3MjQwMzk5YmY2OTAxYjA5YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJEZXJhbGQgRC4gV29vZHMiIDx3b29kcy50ZWNobmljYWxAZ21haWwuY29tPgotRGF0ZTogU3VuLCAxMCBGZWIgMjAxOSAxMzoyMjoxOSAtMDYwMAotU3ViamVjdDogW1BBVENIXSBGaXggbW9kdWxlIGxvYWRpbmcgd2l0aCBMaW51eCB2NS4wLXJjNQotCi1UaGlzIGNvbW1pdCBmaXhlcyB0aGlzIG1vZHVsZSBsb2FkIGVycm9yOgotWy4uLl0KLVsgICAyOS4xMTIwOTFdIGNyeXB0b2RldjogbG9hZGluZyBvdXQtb2YtdHJlZSBtb2R1bGUgdGFpbnRzIGtlcm5lbC4KLVsgICAyOS4xMjg5MDZdIGNyeXB0b2RldjogVW5rbm93biBzeW1ib2wgY3J5cHRvX2dpdmNpcGhlcl90eXBlIChlcnIgLTIpCi1bICAgMjkuMTg4ODQyXSBjcnlwdG9kZXY6IFVua25vd24gc3ltYm9sIGNyeXB0b19naXZjaXBoZXJfdHlwZSAoZXJyIC0yKQotbW9kcHJvYmU6IGNhbid0IGxvYWQgbW9kdWxlIGNyeXB0b2RldiAoZXh0cmEvY3J5cHRvZGV2LmtvKTogdW5rbm93biBzeW1ib2wgaW4gbW9kdWxlLCBvciB1bmtub3duIHBhcmFtZXRlcgotWy4uLl0KLQotVXBzdHJlYW0gTGludXggc3VwcG9ydCBmb3IgdW51c2VkIEdJVkNJUEhFUiwgYW5kIG90aGVycywgd2FzIGRyb3BwZWQgaGVyZToKLQotYzc5YjQxMWVhYTcyIChjcnlwdG86IHNrY2lwaGVyIC0gcmVtb3ZlIHJlbW5hbnRzIG9mIGludGVybmFsIElWIGdlbmVyYXRvcnMpCi0KLVNpZ25lZC1vZmYtYnk6IERlcmFsZCBELiBXb29kcyA8d29vZHMudGVjaG5pY2FsQGdtYWlsLmNvbT4KLS0tLQotIGNyeXB0bGliLmMgfCA5ICsrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jcnlwdGxpYi5jIGIvY3J5cHRsaWIuYwotaW5kZXggNmU2NjY5OC4uNGE4NzAzNyAxMDA2NDQKLS0tLSBhL2NyeXB0bGliLmMKLSsrKyBiL2NyeXB0bGliLmMKLUBAIC0zOCw3ICszOCw5IEBACi0gI2luY2x1ZGUgImNyeXB0b2Rldl9pbnQuaCIKLSAjaW5jbHVkZSAiY2lwaGVyYXBpLmgiCi0gCi0rI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTig1LCAwLCAwKSkKLSBleHRlcm4gY29uc3Qgc3RydWN0IGNyeXB0b190eXBlIGNyeXB0b19naXZjaXBoZXJfdHlwZTsKLSsjZW5kaWYKLSAKLSBzdGF0aWMgdm9pZCBjcnlwdG9kZXZfY29tcGxldGUoc3RydWN0IGNyeXB0b19hc3luY19yZXF1ZXN0ICpyZXEsIGludCBlcnIpCi0gewotQEAgLTE1Nyw4ICsxNTksMTEgQEAgaW50IGNyeXB0b2Rldl9jaXBoZXJfaW5pdChzdHJ1Y3QgY2lwaGVyX2RhdGEgKm91dCwgY29uc3QgY2hhciAqYWxnX25hbWUsCi0gCi0gI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwgOCwgMCkpCi0gCQl0Zm0gPSBjcnlwdG9fc2tjaXBoZXJfdGZtKG91dC0+YXN5bmMucyk7Ci0tCQlpZiAoKHRmbS0+X19jcnRfYWxnLT5jcmFfdHlwZSA9PSAmY3J5cHRvX2FibGtjaXBoZXJfdHlwZSkgfHwKLS0JCSAgICAodGZtLT5fX2NydF9hbGctPmNyYV90eXBlID09ICZjcnlwdG9fZ2l2Y2lwaGVyX3R5cGUpKSB7Ci0rCQlpZiAoKHRmbS0+X19jcnRfYWxnLT5jcmFfdHlwZSA9PSAmY3J5cHRvX2FibGtjaXBoZXJfdHlwZSkKLSsjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDUsIDAsIDApKQotKwkJICAgIHx8ICh0Zm0tPl9fY3J0X2FsZy0+Y3JhX3R5cGUgPT0gJmNyeXB0b19naXZjaXBoZXJfdHlwZSkKLSsjZW5kaWYKLSsJCQkJCQkJKSB7Ci0gCQkJc3RydWN0IGFibGtjaXBoZXJfYWxnICphbGc7Ci0gCi0gCQkJYWxnID0gJnRmbS0+X19jcnRfYWxnLT5jcmFfYWJsa2NpcGhlcjsKLS0tIAotMi4yMC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYgppbmRleCA4Y2E3MTkzLi40ZjFhZjczIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2Vybi10b29scy9rZXJuLXRvb2xzLW5hdGl2ZV9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tlcm4tdG9vbHMva2Vybi10b29scy1uYXRpdmVfZ2l0LmJiCkBAIC0xLDI0ICsxLDI3IEBACiBTVU1NQVJZID0gIlRvb2xzIGZvciBtYW5hZ2luZyBZb2N0byBQcm9qZWN0IHN0eWxlIGJyYW5jaGVkIGtlcm5lbHMiCiBMSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZ2l0L3Rvb2xzL2tnaXQ7YmVnaW5saW5lPTU7ZW5kbGluZT05O21kNT05YzMwZTk3MWQ0MzVlMjQ5NjI0Mjc4YzNlMzQzZTUwMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3Rvb2xzL2tnaXQ7YmVnaW5saW5lPTU7ZW5kbGluZT05O21kNT05YzMwZTk3MWQ0MzVlMjQ5NjI0Mjc4YzNlMzQzZTUwMSIKIAogREVQRU5EUyA9ICJnaXQtbmF0aXZlIgogCi1TUkNSRVYgPSAiYmI2ZGYwZWYyMzY1Njg5Y2QzZGY2Zjc2YTg4MzhjZGRhZTBkOTM0MyIKK1NSQ1JFViA9ICJjNjY4MzNlMWNhYWMyNTI3OWE1MDUyZmNlYjEzMjEzZjVlNGY3OWY5IgogUFIgPSAicjEyIgogUFYgPSAiMC4yK2dpdCR7U1JDUFZ9IgogCiBpbmhlcml0IG5hdGl2ZQogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC10b29scy5naXQiCi1TID0gIiR7V09SS0RJUn0iCitTID0gIiR7V09SS0RJUn0vZ2l0IgogVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCitkb19jb25maWd1cmUoKSB7CisJOgorfQorCiBkb19jb21waWxlKCkgeyAKIAk6CiB9CiAKIGRvX2luc3RhbGwoKSB7Ci0JY2QgJHtTfS9naXQKLQltYWtlIERFU1RESVI9JHtEfSR7YmluZGlyfSBpbnN0YWxsCisJb2VfcnVubWFrZSBERVNURElSPSR7RH0ke2JpbmRpcn0gaW5zdGFsbAogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDcta2V4ZWMtdW4tYnJlYWstdGhlLWJ1aWxkLW9uLTMyLWJpdC14ODYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwNy1rZXhlYy11bi1icmVhay10aGUtYnVpbGQtb24tMzItYml0LXg4Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTE2MDhlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDcta2V4ZWMtdW4tYnJlYWstdGhlLWJ1aWxkLW9uLTMyLWJpdC14ODYucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSBkMjk0YzUwMzk3NTNhMzY1MDY5NDliYTVkYzc4MmE0YzBiMzA3Yjc0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIwIERlYyAyMDE5IDE3OjIxOjA4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGtleGVjOiB1bi1icmVhayB0aGUgYnVpbGQgb24gMzIgYml0IHg4NgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisga2V4ZWMvYXJjaC9pMzg2L01ha2VmaWxlICAgIHwgMSArCisga2V4ZWMvYXJjaC9pMzg2L2tleGVjLXg4Ni5oIHwgNCArKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvaTM4Ni9NYWtlZmlsZSBiL2tleGVjL2FyY2gvaTM4Ni9NYWtlZmlsZQoraW5kZXggMTA1Y2VmZC4uMjVkZjU3YSAxMDA2NDQKKy0tLSBhL2tleGVjL2FyY2gvaTM4Ni9NYWtlZmlsZQorKysrIGIva2V4ZWMvYXJjaC9pMzg2L01ha2VmaWxlCitAQCAtMTEsNiArMTEsNyBAQCBpMzg2X0tFWEVDX1NSQ1MgKz0ga2V4ZWMvYXJjaC9pMzg2L2tleGVjLWJlb2Jvb3QteDg2LmMKKyBpMzg2X0tFWEVDX1NSQ1MgKz0ga2V4ZWMvYXJjaC9pMzg2L2tleGVjLW5iaS5jCisgaTM4Nl9LRVhFQ19TUkNTICs9IGtleGVjL2FyY2gvaTM4Ni94ODYtbGludXgtc2V0dXAuYworIGkzODZfS0VYRUNfU1JDUyArPSBrZXhlYy9hcmNoL2kzODYvY3Jhc2hkdW1wLXg4Ni5jCisraTM4Nl9LRVhFQ19TUkNTICs9IGtleGVjL2FyY2gvaTM4Ni9rZXhlYy1tYjIteDg2LmMKKyAKKyBkaXN0ICs9IGtleGVjL2FyY2gvaTM4Ni9NYWtlZmlsZSAkKGkzODZfS0VYRUNfU1JDUykJCQlcCisgCWtleGVjL2FyY2gvaTM4Ni9jcmFzaGR1bXAteDg2LmgJCQkJCVwKK2RpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2kzODYva2V4ZWMteDg2LmggYi9rZXhlYy9hcmNoL2kzODYva2V4ZWMteDg2LmgKK2luZGV4IDFiNThjM2IuLmQ2YjEwYzAgMTAwNjQ0CistLS0gYS9rZXhlYy9hcmNoL2kzODYva2V4ZWMteDg2LmgKKysrKyBiL2tleGVjL2FyY2gvaTM4Ni9rZXhlYy14ODYuaAorQEAgLTU2LDkgKzU2LDEzIEBAIHN0cnVjdCBhcmNoX29wdGlvbnNfdCB7CisgfTsKKyAKKyBpbnQgbXVsdGlib290X3g4Nl9wcm9iZShjb25zdCBjaGFyICpidWYsIG9mZl90IGxlbik7CisraW50IG11bHRpYm9vdDJfeDg2X3Byb2JlKGNvbnN0IGNoYXIgKmJ1Ziwgb2ZmX3QgbGVuKTsKKyBpbnQgbXVsdGlib290X3g4Nl9sb2FkKGludCBhcmdjLCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqYnVmLCBvZmZfdCBsZW4sCisgCXN0cnVjdCBrZXhlY19pbmZvICppbmZvKTsKKytpbnQgbXVsdGlib290Ml94ODZfbG9hZChpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKmJ1Ziwgb2ZmX3QgbGVuLAorKwlzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbyk7Cisgdm9pZCBtdWx0aWJvb3RfeDg2X3VzYWdlKHZvaWQpOworK3ZvaWQgbXVsdGlib290Ml94ODZfdXNhZ2Uodm9pZCk7CisgCisgaW50IGVsZl94ODZfcHJvYmUoY29uc3QgY2hhciAqYnVmLCBvZmZfdCBsZW4pOworIGludCBlbGZfeDg2X2xvYWQoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpidWYsIG9mZl90IGxlbiwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMTkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2Y3NDM1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMTkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0KLVNVTU1BUlkgPSAiS2V4ZWMgZmFzdCByZWJvb3QgdG9vbHMiCi1ERVNDUklQVElPTiA9ICJLZXhlYyBpcyBhIGZhc3QgcmVib290IGZlYXR1cmUgdGhhdCBsZXRzIHlvdSByZWJvb3QgdG8gYSBuZXcgTGludXgga2VybmVsIgotQVVUSE9SID0gIkVyaWMgQmllZGVybWFuIgotSE9NRVBBR0UgPSAiaHR0cDovL2tlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL2tlcm5lbC9rZXhlYy8iCi1TRUNUSU9OID0gImtlcm5lbC91c2VybGFuZCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYTViZWQyZjYwZDM1NzYxOGNhMTYxYWQ1MzlmN2MwYSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9rZXhlYy9rZXhlYy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWFmMTBmNmFlNGE4NzE1OTY1ZTY0OGFhNjg3YWQzZTA5IgotREVQRU5EUyA9ICJ6bGliIHh6IgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMva2VybmVsL2tleGVjL2tleGVjLXRvb2xzLSR7UFZ9LnRhci5neiBcCi0gICAgZmlsZTovL2tkdW1wIFwKLSAgICBmaWxlOi8va2R1bXAuY29uZiBcCi0gICAgZmlsZTovL2tkdW1wLnNlcnZpY2UgXAotICAgIGZpbGU6Ly8wMDAxLXBvd2VycGMtY2hhbmdlLXRoZS1tZW1vcnktc2l6ZS1saW1pdC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItcHVyZ2F0b3J5LVBhc3Mtci1kaXJlY3RseS10by1saW5rZXIucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLWtleGVjLUFSTS1GaXgtYWRkX2J1ZmZlcl9waHlzX3ZpcnQtYWxpZ24taXNzdWUucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA0LXg4Nl82NC1BZGQtc3VwcG9ydC10by1idWlsZC1rZXhlYy10b29scy13aXRoLXgzMi1BQkkucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA1LURpc2FibGUtUElFLWR1cmluZy1saW5rLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNi1rZXhlYy1hcm0tdW5kZWZpbmUtX19OUl9rZXhlY19maWxlX2xvYWQtZm9yLWFybS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwNTI0NThmMGEzNWMyYTNiMGQyMzAyY2FhMzMxOGU5ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MTNjOGRlZTkxOGU1ODU1YTRiYTYwZDYwOTM3MTM5MDk3ODE0NGI0YzhkMTVkNjQ0NmNhMDA1N2I3YmM1ZTU4IgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kCi0KLWV4cG9ydCBMREZMQUdTID0gIi1MJHtTVEFHSU5HX0xJQkRJUn0iCi1FWFRSQV9PRUNPTkYgPSAiIC0td2l0aC16bGliPXllcyIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICMgUmVtb3ZlIHRoZSBwcmVwYWNrYWdlZCBjb25maWcuaCBmcm9tIHRoZSBzb3VyY2UgdHJlZSBhcyBpdCBvdmVycmlkZXMKLSAgICAjIHRoZSBzYW1lIGZpbGUgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZSBhbmQgcGxhY2VkIGluIHRoZSBidWlsZCB0cmVlCi0gICAgcm0gLWYgJHtTfS9pbmNsdWRlL2NvbmZpZy5oCi0KLSAgICAjIFJlbW92ZSB0aGUgJyouZCcgZmlsZSB0byBtYWtlIHN1cmUgdGhlIHJlY29tcGlsZSBpcyBPSwotICAgIGZvciBkZXAgaW4gYGZpbmQgJHtCfSAtdHlwZSBmIC1uYW1lICcqLmQnYDsgZG8KLSAgICAgICAgZGVwX25vX2Q9ImBlY2hvICRkZXAgfCBzZWQgJ3MjLmQkIyMnYCIKLSAgICAgICAgIyBSZW1vdmUgZmlsZS5kIHdoZW4gdGhlcmUgaXMgYSBmaWxlLm8KLSAgICAgICAgaWYgWyAtZiAiJGRlcF9ub19kLm8iIF07IHRoZW4KLSAgICAgICAgICAgIHJtIC1mICRkZXAKLSAgICAgICAgZmkKLSAgICBkb25lCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0va2R1bXAuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcKLQotICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS9rZHVtcCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQva2R1bXAKLSAgICAgICAgZmkKLQotICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L2tkdW1wICR7RH0ke2xpYmV4ZWNkaXJ9L2tkdW1wLWhlbHBlcgotICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1dPUktESVJ9L2tkdW1wLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZQotICAgICAgICAgICAgICAgIHNlZCAtaSAtZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9rZHVtcC5zZXJ2aWNlCi0gICAgICAgIGZpCi19Ci0KLVBBQ0tBR0VTID0rICJrZXhlYyBrZHVtcCB2bWNvcmUtZG1lc2ciCi0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJrZXhlYyBrZHVtcCB2bWNvcmUtZG1lc2ciCi0KLUZJTEVTX2tleGVjID0gIiR7c2JpbmRpcn0va2V4ZWMiCi1GSUxFU19rZHVtcCA9ICIke3NiaW5kaXJ9L2tkdW1wIFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2tkdW1wLmNvbmYgXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQva2R1bXAgXAotICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9rZHVtcC1oZWxwZXIgXAotICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9rZHVtcC5zZXJ2aWNlIFwKLSIKLQotRklMRVNfdm1jb3JlLWRtZXNnID0gIiR7c2JpbmRpcn0vdm1jb3JlLWRtZXNnIgotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gImtkdW1wIgotSU5JVFNDUklQVF9OQU1FX2tkdW1wID0gImtkdW1wIgotSU5JVFNDUklQVF9QQVJBTVNfa2R1bXAgPSAic3RhcnQgNTYgMiAzIDQgNSAuIHN0b3AgNTYgMCAxIDYgLiIKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICJrZHVtcCIKLVNZU1RFTURfU0VSVklDRV9rZHVtcCA9ICJrZHVtcC5zZXJ2aWNlIgotCi1TRUNVUklUWV9QSUVfQ0ZMQUdTX3JlbW92ZSA9ICItZlBJRSAtcGllIgotCi1DT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NC4qfGkuODYuKnxhcm0uKnxhYXJjaDY0Lip8cG93ZXJwYy4qfG1pcHMuKiktKGxpbnV4fGZyZWVic2QuKiknCi0KLUlOU0FORV9TS0lQXyR7UE59ID0gImFyY2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjIwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4yMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzFiMzY0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4yMC5iYgpAQCAtMCwwICsxLDg5IEBACisKK1NVTU1BUlkgPSAiS2V4ZWMgZmFzdCByZWJvb3QgdG9vbHMiCitERVNDUklQVElPTiA9ICJLZXhlYyBpcyBhIGZhc3QgcmVib290IGZlYXR1cmUgdGhhdCBsZXRzIHlvdSByZWJvb3QgdG8gYSBuZXcgTGludXgga2VybmVsIgorQVVUSE9SID0gIkVyaWMgQmllZGVybWFuIgorSE9NRVBBR0UgPSAiaHR0cDovL2tlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL2tlcm5lbC9rZXhlYy8iCitTRUNUSU9OID0gImtlcm5lbC91c2VybGFuZCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYTViZWQyZjYwZDM1NzYxOGNhMTYxYWQ1MzlmN2MwYSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9rZXhlYy9rZXhlYy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWFmMTBmNmFlNGE4NzE1OTY1ZTY0OGFhNjg3YWQzZTA5IgorREVQRU5EUyA9ICJ6bGliIHh6IgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMva2VybmVsL2tleGVjL2tleGVjLXRvb2xzLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9rZHVtcCBcCisgICAgICAgICAgIGZpbGU6Ly9rZHVtcC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2tkdW1wLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wb3dlcnBjLWNoYW5nZS10aGUtbWVtb3J5LXNpemUtbGltaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1wdXJnYXRvcnktUGFzcy1yLWRpcmVjdGx5LXRvLWxpbmtlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWtleGVjLUFSTS1GaXgtYWRkX2J1ZmZlcl9waHlzX3ZpcnQtYWxpZ24taXNzdWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC14ODZfNjQtQWRkLXN1cHBvcnQtdG8tYnVpbGQta2V4ZWMtdG9vbHMtd2l0aC14MzItQUJJLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtRGlzYWJsZS1QSUUtZHVyaW5nLWxpbmsucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1rZXhlYy1hcm0tdW5kZWZpbmUtX19OUl9rZXhlY19maWxlX2xvYWQtZm9yLWFybS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LWtleGVjLXVuLWJyZWFrLXRoZS1idWlsZC1vbi0zMi1iaXQteDg2LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDY3MjRiNjdmMzI1MDFjNWQzZTc3ODE2MTM0N2NhZDkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2IxNmQ3OTgxOGUwYzlkZTNiYjNlMzNlZGU1Njc3YzM0YTFkMjhjNjQ2Mzc5YzdhYjQ0ZTBmYWEzZWI1N2ExNiIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZAorCitleHBvcnQgTERGTEFHUyA9ICItTCR7U1RBR0lOR19MSUJESVJ9IgorRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtemxpYj15ZXMiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAjIFJlbW92ZSB0aGUgcHJlcGFja2FnZWQgY29uZmlnLmggZnJvbSB0aGUgc291cmNlIHRyZWUgYXMgaXQgb3ZlcnJpZGVzCisgICAgIyB0aGUgc2FtZSBmaWxlIGdlbmVyYXRlZCBieSBjb25maWd1cmUgYW5kIHBsYWNlZCBpbiB0aGUgYnVpbGQgdHJlZQorICAgIHJtIC1mICR7U30vaW5jbHVkZS9jb25maWcuaAorCisgICAgIyBSZW1vdmUgdGhlICcqLmQnIGZpbGUgdG8gbWFrZSBzdXJlIHRoZSByZWNvbXBpbGUgaXMgT0sKKyAgICBmb3IgZGVwIGluIGBmaW5kICR7Qn0gLXR5cGUgZiAtbmFtZSAnKi5kJ2A7IGRvCisgICAgICAgIGRlcF9ub19kPSJgZWNobyAkZGVwIHwgc2VkICdzIy5kJCMjJ2AiCisgICAgICAgICMgUmVtb3ZlIGZpbGUuZCB3aGVuIHRoZXJlIGlzIGEgZmlsZS5vCisgICAgICAgIGlmIFsgLWYgIiRkZXBfbm9fZC5vIiBdOyB0aGVuCisgICAgICAgICAgICBybSAtZiAkZGVwCisgICAgICAgIGZpCisgICAgZG9uZQorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2tkdW1wLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCisKKyAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0va2R1bXAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wCisgICAgICAgIGZpCisKKyAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS9rZHVtcCAke0R9JHtsaWJleGVjZGlyfS9rZHVtcC1oZWxwZXIKKyAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9rZHVtcC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UKKyAgICAgICAgICAgICAgICBzZWQgLWkgLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZQorICAgICAgICBmaQorfQorCitQQUNLQUdFUyA9KyAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorUlJFQ09NTUVORFNfJHtQTn0gPSAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgorCitGSUxFU19rZXhlYyA9ICIke3NiaW5kaXJ9L2tleGVjIgorRklMRVNfa2R1bXAgPSAiJHtzYmluZGlyfS9rZHVtcCBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9rZHVtcC5jb25mIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wIFwKKyAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0va2R1bXAtaGVscGVyIFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZSBcCisiCisKK0ZJTEVTX3ZtY29yZS1kbWVzZyA9ICIke3NiaW5kaXJ9L3ZtY29yZS1kbWVzZyIKKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJrZHVtcCIKK0lOSVRTQ1JJUFRfTkFNRV9rZHVtcCA9ICJrZHVtcCIKK0lOSVRTQ1JJUFRfUEFSQU1TX2tkdW1wID0gInN0YXJ0IDU2IDIgMyA0IDUgLiBzdG9wIDU2IDAgMSA2IC4iCisKK1NZU1RFTURfUEFDS0FHRVMgPSAia2R1bXAiCitTWVNURU1EX1NFUlZJQ0Vfa2R1bXAgPSAia2R1bXAuc2VydmljZSIKKworU0VDVVJJVFlfUElFX0NGTEFHU19yZW1vdmUgPSAiLWZQSUUgLXBpZSIKKworQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjQuKnxpLjg2Lip8YXJtLip8YWFyY2g2NC4qfHBvd2VycGMuKnxtaXBzLiopLShsaW51eHxmcmVlYnNkLiopJworCitJTlNBTkVfU0tJUF8ke1BOfSA9ICJhcmNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlXzIwMTkwODE1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlXzIwMTkwODE1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODMwMDBiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV8yMDE5MDgxNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDk0MyArMCwwIEBACi1TVU1NQVJZID0gIkZpcm13YXJlIGZpbGVzIGZvciB1c2Ugd2l0aCBMaW51eCBrZXJuZWwiCi1TRUNUSU9OID0gImtlcm5lbCIKLQotTElDRU5TRSA9ICJcCi0gICAgRmlybXdhcmUtQWJpbGlzIFwKLSAgICAmIEZpcm13YXJlLWFkc3Bfc3N0IFwKLSAgICAmIEZpcm13YXJlLWFnZXJlIFwKLSAgICAmIEZpcm13YXJlLWFtZGdwdSBcCi0gICAgJiBGaXJtd2FyZS1hbWQtdWNvZGUgXAotICAgICYgRmlybXdhcmUtYW1sb2dpY192ZGVjIFwKLSAgICAmIEZpcm13YXJlLWF0aGVyb3NfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtYXRtZWwgXAotICAgICYgRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCBcCi0gICAgJiBGaXJtd2FyZS1jYTAxMzIgXAotICAgICYgRmlybXdhcmUtY2F2aXVtIFwKLSAgICAmIEZpcm13YXJlLWNoZWxzaW9fZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtY3cxMjAwIFwKLSAgICAmIEZpcm13YXJlLWN5cHJlc3MgXAotICAgICYgRmlybXdhcmUtZGliMDcwMCBcCi0gICAgJiBGaXJtd2FyZS1lMTAwIFwKLSAgICAmIEZpcm13YXJlLWVuZV9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1md19zc3RfMGYyOCBcCi0gICAgJiBGaXJtd2FyZS1nbzcwMDcgXAotICAgICYgRmlybXdhcmUtR1BMdjIgXAotICAgICYgRmlybXdhcmUtaGZpMV9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1pMjQwMG0gXAotICAgICYgRmlybXdhcmUtaTkxNSBcCi0gICAgJiBGaXJtd2FyZS1pYnRfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtaXQ5MTN4IFwKLSAgICAmIEZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtSW50Y1NTVDIgXAotICAgICYgRmlybXdhcmUta2F3ZXRoIFwKLSAgICAmIEZpcm13YXJlLU1hcnZlbGwgXAotICAgICYgRmlybXdhcmUtbW94YSBcCi0gICAgJiBGaXJtd2FyZS1teXJpMTBnZV9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1uZXRyb25vbWUgXAotICAgICYgRmlybXdhcmUtbnZpZGlhIFwKLSAgICAmIEZpcm13YXJlLU9MUEMgXAotICAgICYgRmlybXdhcmUtYXRoOWstaHRjIFwKLSAgICAmIEZpcm13YXJlLXBoYW5mdyBcCi0gICAgJiBGaXJtd2FyZS1xYXQgXAotICAgICYgRmlybXdhcmUtcWNvbSBcCi0gICAgJiBGaXJtd2FyZS1xbGExMjgwIFwKLSAgICAmIEZpcm13YXJlLXFsYTJ4eHggXAotICAgICYgRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hcjNrIFwKLSAgICAmIEZpcm13YXJlLXF1YWxjb21tQXRob3NfYXRoMTBrIFwKLSAgICAmIEZpcm13YXJlLXI4YTc3OXhfdXNiMyBcCi0gICAgJiBGaXJtd2FyZS1yYWRlb24gXAotICAgICYgRmlybXdhcmUtcmFsaW5rX2FfbWVkaWF0ZWtfY29tcGFueV9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1yYWxpbmstZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1pbXgtc2RtYV9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1zaWFubyBcCi0gICAgJiBGaXJtd2FyZS10ZGE3NzA2LWZpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLXRpLWNvbm5lY3Rpdml0eSBcCi0gICAgJiBGaXJtd2FyZS10aS1rZXlzdG9uZSBcCi0gICAgJiBGaXJtd2FyZS11ZWFnbGUtYXRtNC1maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS12aWFfdnQ2NjU2IFwKLSAgICAmIEZpcm13YXJlLXdsMTI1MSBcCi0gICAgJiBGaXJtd2FyZS14YzQwMDAgXAotICAgICYgRmlybXdhcmUteGM1MDAwIFwKLSAgICAmIEZpcm13YXJlLXhjNTAwMGMgXAotICAgICYgV0hFTkNFIFwKLSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRS5BYmlsaXM7bWQ1PWI1ZWUzZjQxMDc4MGU1NjcxMWFkNDhlYWRjMjJiOGJjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuYWRzcF9zc3Q7bWQ1PTYxNWM0NWI5MWE1YTRhOWZlMDQ2ZDZhYjlhMmRmNzI4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuYWdlcmU7bWQ1PWFmMDEzM2RlNmI0YTliMjUyMmRlZmQ1ZjE4OGFmZDMxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuYW1kZ3B1O21kNT1hYjUxNWVmNjQ5NWFiNWM1YTNiMDhhYjJkYjYyZGYxMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLmFtZC11Y29kZTttZDU9M2M1Mzk5ZGM5MTQ4ZDdmMGUxZjQxZTM0YjY5Y2YxNGYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5hbWxvZ2ljX3ZkZWM7bWQ1PWRjNDRmNTliZjY0YTgxNjQzZTUwMGFkM2YzOWE0NjhhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuYXRoZXJvc19maXJtd2FyZTttZDU9MzBhMTRjNzgyM2JlZWRhYzlmYTM5YzY0ZmRkMDFhMTMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5hdG1lbDttZDU9YWE3NGFjMGM2MDU5NWRlZTRkNGUyMzkxMDdlYTc3YTMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5icm9hZGNvbV9iY200M3h4O21kNT0zMTYwYzE0ZGY3MjI4ODkxYjg2ODA2MGUxOTUxZGZiYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmNhMDEzMjttZDU9MjA5YjMzZTY2ZWU1YmUwNDYxZjEzZDMxZGEzOTIxOTggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5jYWRlbmNlO21kNT0wMDlmNDY4MTZmNjk1NmNmYjc1ZWRlMTNkM2UxY2VlMCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmNhdml1bTttZDU9YzM3YWFmZmIxZWJlNTkzOWIyNTgwZDA3M2E5NWRhZWEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5jaGVsc2lvX2Zpcm13YXJlO21kNT04MTlhYThjM2ZhNDUzZjFiMjU4ZWQ4ZDE2OGE5ZDkwMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmN3MTIwMDttZDU9ZjBmNzcwODY0ZTdhODQ0NGE1YzVhYTlkMTJhM2E3ZWQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5jeXByZXNzO21kNT00OGNkOTQzNmM3NjNiZjg3Mzk2MWY5ZWQ3YjVjMTQ3YiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLmRpYjA3MDA7bWQ1PWY3NDExODI1YzhhNTU1YTFhM2U1ZWFiOWNhNzczNDMxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuZTEwMDttZDU9ZWMwZjg0MTM2NzY2ZGYxNTlhM2FlNmQwMmFjZGY1YTggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5lbmVfZmlybXdhcmU7bWQ1PWVkNjdmMGY2MmY4Zjc5ODEzMGMyOTY3MjBiN2QzOTIxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuZndfc3N0XzBmMjg7bWQ1PTYzNTM5MzFjOTg4YWQ1MjgxOGFlNzMzYWM2MWNkMjkzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuZ283MDA3O21kNT1jMGJiOWY2YWFhYmE1NWIwNTI5ZWU5YjMwYWE2NmJlYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9HUEwtMjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5oZmkxX2Zpcm13YXJlO21kNT01ZTdiNmU1ODZjZTczMzlkMTI2ODllNDk5MzFhZDQ0NCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmkyNDAwbTttZDU9MTRiOTAxOTY5ZTIzYzQxODgxMzI3YzBkOWU0YjdkMzYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5pOTE1O21kNT0yYjBiMmUwZDIwOTg0YWZmZDQ0OTBiYTJjYmEwMjU3MCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmlidF9maXJtd2FyZTttZDU9ZmRiZWUxZGRmZTBmYjdhYjBiMmZjZDZiNDU0YTM2NmIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5JbnRjU1NUMjttZDU9OWU3ZDhiZWE3NzYxMmQ3Y2M3ZDllOWI1NGI2MjMwNjIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5pdDkxM3g7bWQ1PTFmYmY3MjdiZmI2YTk0OTgxMGM0ZGJmYTdlNmNlNGY4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuaXdsd2lmaV9maXJtd2FyZTttZDU9M2ZkODQyOTExZWE5M2MyOWNkMzI2NzlhYTIzZTFjODggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5rYXdldGg7bWQ1PWIxZDg3NmU1NjJmNGIzYjhkMzkxYWQ4Mzk1ZGZlMDNmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuTWFydmVsbDttZDU9MjhiNmVkOGJkMDRiYTEwNWFmNmU0ZGNkNmU5OTc3NzIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5tZWRpYXRlazttZDU9N2MxOTc2YjYzMjE3ZDc2Y2U0N2QwYTExZDhhNzljZjIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5tb3hhO21kNT0xMDg2NjE0NzY3ZDhjY2Y3NDRhOTIzMjg5ZDNkNDI2MSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLm15cmkxMGdlX2Zpcm13YXJlO21kNT00MmUzMmZiODlmNmI5NTljYTIyMmUyNWFjOGRmOGZlZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLk5ldHJvbm9tZTttZDU9NGFkZDA4ZjI1NzcwODZkNDQ0NDc5OTY1MDNjZGRmNWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5udmlkaWE7bWQ1PTQ0MjhhOTIyZWQzYmEyY2VlYzk1ZjA3NmE0ODhjZTA3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuT0xQQzttZDU9NWI5MTdmOWQ4YzA2MTk5MWJlNGY2ZjVmMTA4NzE5Y2QgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5vcGVuLWF0aDlrLWh0Yy1maXJtd2FyZTttZDU9MWIzM2M5ZjRkMTdiYzRkNDU3YmRiMjM3MjcwNDY4MzcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5waGFuZnc7bWQ1PTk1NGRjZWMwZTA1MWY5NDA5ODEyYjU2MWVhNzQzYmZhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucWF0X2Zpcm13YXJlO21kNT05ZTdkOGJlYTc3NjEyZDdjYzdkOWU5YjU0YjYyMzA2MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLnFjb207bWQ1PTE2NGUzMzYyYTUzOGViMTFkM2FjNTFlOGUxMzQyOTRiIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucWxhMTI4MDttZDU9ZDY4OTU3MzJlNjIyZDk1MDYwOTA5MzIyM2EyYzRmNWQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5xbGEyeHh4O21kNT01MDU4NTVlOTIxYjc1ZjFiZTRhNDM3YWQ5Yjc5ZGZmMCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hcjNrO21kNT1iNWZlMjQ0ZmIyYjUzMjMxMWRlMTQ3MmEzYmMwNmRhNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hdGgxMGs7bWQ1PWNiNDJiNjg2ZWU1ZjVjYjg5MDI3NWU0MzIxZGI2MGE4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucjhhNzc5eF91c2IzO21kNT00YzE2NzE2NTYxNTMwMjVkNzA3NjEwNWE1ZGE3ZTQ5OCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLnJhZGVvbjttZDU9NjhlYzI4YmFjYjM2MTMyMDBiY2E0NGY0MDRjNjliMTYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlO21kNT03MjhmMWE4NWZkNTNmZDY3ZmE4ZDdhZmIwODBiYzQzNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnJhbGluay1maXJtd2FyZS50eHQ7bWQ1PWFiMmMyNjkyNzdjNDU0NzZmYjQ0OTY3MzkxMWEyZGZkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucnRsd2lmaV9maXJtd2FyZS50eHQ7bWQ1PTAwZDA2Y2ZkM2VkZGQ1YTI2OTg5NDhlYWQyYWQ1NGE1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0Uuc2RtYV9maXJtd2FyZTttZDU9NTFlOGMxOWVjYzIyNzBmNGI4ZWEzMDM0MWFkNjNjZTkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5zaWFubzttZDU9NDU1NmMxYmY4MzAwNjdmMTJjYTE1MWFkOTUzZWMyYTUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS50ZGE3NzA2LWZpcm13YXJlLnR4dDttZDU9ODM1OTk3Y2Y1ZTNjMTMxZDBkZGRkNjk1YzdkOTEwM2UgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS50aS1jb25uZWN0aXZpdHk7bWQ1PWM1ZTAyYmU2MzNmMTQ5OWMxMDlkMTY1MjUxNGQ4NWVjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UudGkta2V5c3RvbmU7bWQ1PTNhODYzMzVkMzI4NjRiMGJlZjk5NmJlZTI2Y2MwZjJjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UudWVhZ2xlLWF0bTQtZmlybXdhcmU7bWQ1PTRlZDdlYTZiNTA3Y2NjNTgzYjlkNTk0NDE3NzE0MTE4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UudmlhX3Z0NjY1NjttZDU9ZTQxNTk2OTRjYmE0MmQ0Mzc3YTkxMmU3OGE2ZTg1MGYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS53bDEyNTE7bWQ1PWFkM2Y4MTkyMmJiOWUxOTcwMTRiYjE4NzI4OWQzYjViIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UueGM0MDAwO21kNT0wZmY1MWQyZGM0OWZjZTA0ODE0YzkxNTUwODEwOTJmMCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnhjNTAwMDttZDU9MWUxNzBjMTMxNzUzMjNjMzJjN2Y0ZDA5OThkNTNmNjYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS54YzUwMDBjO21kNT0xMmIwMmVmYTMwNDlkYjY1ZDUyNGFlYjQxOGRkODdjYSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9XSEVOQ0U7bWQ1PTM3YTAxZTM3OTIxOWQxZTA2ZGJjY2ZhOTBhOGZjMGFkIFwKLSAgICAgICAgICAgICAgICAgICAgIgotCi0jIFRoZXNlIGFyZSBub3QgY29tbW9uIGxpY2Vuc2VzLCBzZXQgTk9fR0VORVJJQ19MSUNFTlNFIGZvciB0aGVtCi0jIHNvIHRoYXQgdGhlIGxpY2Vuc2UgZmlsZXMgd2lsbCBiZSBjb3BpZWQgZnJvbSBmZXRjaGVkIHNvdXJjZQotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLUFiaWxpc10gPSAiTElDRU5DRS5BYmlsaXMiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYWRzcF9zc3RdID0gIkxJQ0VOQ0UuYWRzcF9zc3QiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYWdlcmVdID0gIkxJQ0VOQ0UuYWdlcmUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYW1kZ3B1XSA9ICJMSUNFTlNFLmFtZGdwdSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1hbWQtdWNvZGVdID0gIkxJQ0VOU0UuYW1kLXVjb2RlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWFtbG9naWNfdmRlY10gPSAiTElDRU5TRS5hbWxvZ2ljX3ZkZWMiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZV0gPSAiTElDRU5DRS5hdGhlcm9zX2Zpcm13YXJlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWF0bWVsXSA9ICJMSUNFTlNFLmF0bWVsIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWJyb2FkY29tX2JjbTQzeHhdID0gIkxJQ0VOQ0UuYnJvYWRjb21fYmNtNDN4eCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jYTAxMzJdID0gIkxJQ0VOQ0UuY2EwMTMyIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWNhZGVuY2VdID0gIkxJQ0VOQ0UuY2FkZW5jZSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jYXZpdW1dID0gIkxJQ0VOQ0UuY2F2aXVtIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWNoZWxzaW9fZmlybXdhcmVdID0gIkxJQ0VOQ0UuY2hlbHNpb19maXJtd2FyZSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jdzEyMDBdID0gIkxJQ0VOQ0UuY3cxMjAwIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWN5cHJlc3NdID0gIkxJQ0VOQ0UuY3lwcmVzcyIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1kaWIwNzAwXSA9ICJMSUNFTlNFLmRpYjA3MDAiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtZTEwMF0gPSAiTElDRU5DRS5lMTAwIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWVuZV9maXJtd2FyZV0gPSAiTElDRU5DRS5lbmVfZmlybXdhcmUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtZndfc3N0XzBmMjhdID0gIkxJQ0VOQ0UuZndfc3N0XzBmMjgiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtZ283MDA3XSA9ICJMSUNFTkNFLmdvNzAwNyIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1HUEx2Ml0gPSAiR1BMLTIiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtaGZpMV9maXJtd2FyZV0gPSAiTElDRU5TRS5oZmkxX2Zpcm13YXJlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWkyNDAwbV0gPSAiTElDRU5DRS5pMjQwMG0iCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtaTkxNV0gPSAiTElDRU5TRS5pOTE1IgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWlidF9maXJtd2FyZV0gPSAiTElDRU5DRS5pYnRfZmlybXdhcmUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtSW50Y1NTVDJdID0gIkxJQ0VOQ0UuSW50Y1NTVDIiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtaXQ5MTN4XSA9ICJMSUNFTkNFLml0OTEzeCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlXSA9ICJMSUNFTkNFLml3bHdpZmlfZmlybXdhcmUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUta2F3ZXRoXSA9ICJMSUNFTkNFLmthd2V0aCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1NYXJ2ZWxsXSA9ICJMSUNFTkNFLk1hcnZlbGwiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtbWVkaWF0ZWtdID0gIkxJQ0VOQ0UubWVkaWF0ZWsiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtbW94YV0gPSAiTElDRU5DRS5tb3hhIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW15cmkxMGdlX2Zpcm13YXJlXSA9ICJMSUNFTkNFLm15cmkxMGdlX2Zpcm13YXJlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW5ldHJvbm9tZV0gPSAiTElDRU5DRS5OZXRyb25vbWUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtbnZpZGlhXSA9ICJMSUNFTkNFLm52aWRpYSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1PTFBDXSA9ICJMSUNFTkNFLk9MUEMiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYXRoOWstaHRjXSA9ICJMSUNFTkNFLm9wZW4tYXRoOWstaHRjLWZpcm13YXJlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXBoYW5md10gPSAiTElDRU5DRS5waGFuZnciCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcWF0XSA9ICJMSUNFTkNFLnFhdF9maXJtd2FyZSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1xY29tXSA9ICJMSUNFTlNFLnFjb20iCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcWxhMTI4MF0gPSAiTElDRU5DRS5xbGExMjgwIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXFsYTJ4eHhdID0gIkxJQ0VOQ0UucWxhMnh4eCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2FyM2tdID0gIkxJQ0VOU0UuUXVhbGNvbW1BdGhlcm9zX2FyM2siCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hdGgxMGtdID0gIkxJQ0VOU0UuUXVhbGNvbW1BdGhlcm9zX2F0aDEwayIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1yOGE3Nzl4X3VzYjNdID0gIkxJQ0VOQ0UucjhhNzc5eF91c2IzIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXJhZGVvbl0gPSAiTElDRU5TRS5yYWRlb24iCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcmFsaW5rX2FfbWVkaWF0ZWtfY29tcGFueV9maXJtd2FyZV0gPSAiTElDRU5DRS5yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXJhbGluay1maXJtd2FyZV0gPSAiTElDRU5DRS5yYWxpbmstZmlybXdhcmUudHh0IgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmVdID0gIkxJQ0VOQ0UucnRsd2lmaV9maXJtd2FyZS50eHQiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtc2lhbm9dID0gIkxJQ0VOQ0Uuc2lhbm8iCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtaW14LXNkbWFfZmlybXdhcmVdID0gIkxJQ0VOU0Uuc2RtYV9maXJtd2FyZSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS10ZGE3NzA2LWZpcm13YXJlXSA9ICJMSUNFTkNFLnRkYTc3MDYtZmlybXdhcmUudHh0IgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXRpLWNvbm5lY3Rpdml0eV0gPSAiTElDRU5DRS50aS1jb25uZWN0aXZpdHkiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtdGkta2V5c3RvbmVdID0gIkxJQ0VOQ0UudGkta2V5c3RvbmUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtdWVhZ2xlLWF0bTQtZmlybXdhcmVdID0gIkxJQ0VOQ0UudWVhZ2xlLWF0bTQtZmlybXdhcmUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtdmlhX3Z0NjY1Nl0gPSAiTElDRU5DRS52aWFfdnQ2NjU2IgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXdsMTI1MV0gPSAiTElDRU5DRS53bDEyNTEiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUteGM0MDAwXSA9ICJMSUNFTkNFLnhjNDAwMCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS14YzUwMDBdID0gIkxJQ0VOQ0UueGM1MDAwIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXhjNTAwMGNdID0gIkxJQ0VOQ0UueGM1MDAwYyIKLU5PX0dFTkVSSUNfTElDRU5TRVtXSEVOQ0VdID0gIldIRU5DRSIKLQotUEUgPSAiMSIKLQotU1JDUkVWID0gIjA3YjkyNWI0NTBiZmI0Y2YzZTE0MWM2MTJlYzViMTA0NjU4Y2QwMjAiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2Zpcm13YXJlL2xpbnV4LWZpcm13YXJlLmdpdCIKLQotVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGFsbGFyY2gKLQotQ0xFQU5CUk9LRU4gPSAiMSIKLQotZG9fY29tcGlsZSgpIHsKLQk6Ci19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvCi0JY3AgLXIgKiAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS8KLQotCSMgQXZvaWQgTWFrZWZpbGUgdG8gYmUgZGVwbG95ZWQKLQlybSAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9NYWtlZmlsZQotCi0JIyBSZW1vdmUgdW5idWlsZCBmaXJtd2FyZSB3aGljaCBuZWVkcyBjbWFrZSBhbmQgYmFzaAotCXJtICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2Nhcmw5MTcwZncgLXJmCi0KLQkjIFJlbW92ZSBwb2ludGxlc3MgYmFzaCBzY3JpcHQKLQlybSAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9jb25maWd1cmUKLQotCSMgUmVtb3ZlIHB5dGhvbiBzY3JpcHQgdXNlZCB0byBjaGVjayB0aGUgV0hFTkNFIGZpbGUKLQlybSAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9jaGVja193aGVuY2UucHkKLQotCSMgTGliZXJ0YXMgc2Q4Njg2Ci0JbG4gLXNmIGxpYmVydGFzL3NkODY4Nl92OS5iaW4gJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvc2Q4Njg2LmJpbgotCWxuIC1zZiBsaWJlcnRhcy9zZDg2ODZfdjlfaGVscGVyLmJpbiAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9zZDg2ODZfaGVscGVyLmJpbgotCi0JIyBmaXh1cCB3bDEyeHggbG9jYXRpb24sIGFmdGVyIDIuNi4zNyB0aGUga2VybmVsIHNlYXJjaGVzIGEgZGlmZmVyZW50IGxvY2F0aW9uIGZvciBpdAotCSggY2QgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUgOyBsbiAtc2YgdGktY29ubmVjdGl2aXR5LyogLiApCi19Ci0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXJhbGluay1saWNlbnNlICR7UE59LXJhbGluayBcCi0gICAgICAgICAgICAgJHtQTn0tbXQ3NjAxdS1saWNlbnNlICR7UE59LW10NzYwMXUgXAotICAgICAgICAgICAgICR7UE59LXJhZGVvbi1saWNlbnNlICR7UE59LXJhZGVvbiBcCi0gICAgICAgICAgICAgJHtQTn0tbWFydmVsbC1saWNlbnNlICR7UE59LXBjaWU4ODk3ICR7UE59LXBjaWU4OTk3IFwKLSAgICAgICAgICAgICAke1BOfS1zZDg2ODYgJHtQTn0tc2Q4Njg4ICR7UE59LXNkODc4NyAke1BOfS1zZDg3OTcgJHtQTn0tc2Q4ODAxICR7UE59LXNkODg4NyAke1BOfS1zZDg4OTcgXAotICAgICAgICAgICAgICR7UE59LXVzYjg5OTcgXAotICAgICAgICAgICAgICR7UE59LXRpLWNvbm5lY3Rpdml0eS1saWNlbnNlICR7UE59LXdsY29tbW9uICR7UE59LXdsMTJ4eCAke1BOfS13bDE4eHggXAotICAgICAgICAgICAgICR7UE59LXZ0NjY1Ni1saWNlbnNlICR7UE59LXZ0NjY1NiBcCi0gICAgICAgICAgICAgJHtQTn0tcnRsLWxpY2Vuc2UgJHtQTn0tcnRsODE4OCAke1BOfS1ydGw4MTkyY3UgJHtQTn0tcnRsODE5MmNlICR7UE59LXJ0bDgxOTJzdSAke1BOfS1ydGw4NzIzICR7UE59LXJ0bDg4MjEgXAotICAgICAgICAgICAgICR7UE59LXJ0bDgxNjggXAotICAgICAgICAgICAgICR7UE59LWN5cHJlc3MtbGljZW5zZSBcCi0gICAgICAgICAgICAgJHtQTn0tYnJvYWRjb20tbGljZW5zZSBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtLTBiYjQtMDMwNiBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDMxNDMgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzMjM2YiBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDMyNDFiMCBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDMyNDFiNCBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDMyNDFiNSBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDMyNDJhIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzI5IFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzI5LWZ1bGxtYWMgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzMzAgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzMzQgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzMzQwIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzM1IFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzM2MiBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDMzOSBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDM0MzAgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzNDMwYTAgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzNDU1IFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzUwIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzUwYzIgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzNTQgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzNTYgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzNTYtcGNpZSBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDM1NjkgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzNTcwIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzU4IFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzYwMiBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDM2NmIgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzNjZjIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzcxIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzczIFwKLSAgICAgICAgICAgICAke1BOfS1iY200M3h4IFwKLSAgICAgICAgICAgICAke1BOfS1iY200M3h4LWhkciBcCi0gICAgICAgICAgICAgJHtQTn0tYXRoZXJvcy1saWNlbnNlICR7UE59LWFyOTE3MCAke1BOfS1hdGg2ayAke1BOfS1hdGg5ayBcCi0gICAgICAgICAgICAgJHtQTn0tZ3BsdjItbGljZW5zZSAke1BOfS1jYXJsOTE3MCBcCi0gICAgICAgICAgICAgJHtQTn0tYXIzay1saWNlbnNlICR7UE59LWFyM2sgJHtQTn0tYXRoMTBrLWxpY2Vuc2UgJHtQTn0tYXRoMTBrICR7UE59LXFjYSBcCi0gICAgICAgICAgICAgXAotICAgICAgICAgICAgICR7UE59LWlteC1zZG1hLWxpY2Vuc2UgJHtQTn0taW14LXNkbWEtaW14NnEgJHtQTn0taW14LXNkbWEtaW14N2QgXAotICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLWxpY2Vuc2UgJHtQTn0taXdsd2lmaSBcCi0gICAgICAgICAgICAgJHtQTn0taXdsd2lmaS0xMzUtNiBcCi0gICAgICAgICAgICAgJHtQTn0taXdsd2lmaS0zMTYwLTcgJHtQTn0taXdsd2lmaS0zMTYwLTggJHtQTn0taXdsd2lmaS0zMTYwLTkgXAotICAgICAgICAgICAgICR7UE59LWl3bHdpZmktMzE2MC0xMCAke1BOfS1pd2x3aWZpLTMxNjAtMTIgJHtQTn0taXdsd2lmaS0zMTYwLTEzIFwKLSAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTMxNjAtMTYgJHtQTn0taXdsd2lmaS0zMTYwLTE3IFwKLSAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTYwMDAtNCAke1BOfS1pd2x3aWZpLTYwMDBnMmEtNSAke1BOfS1pd2x3aWZpLTYwMDBnMmEtNiBcCi0gICAgICAgICAgICAgJHtQTn0taXdsd2lmaS02MDAwZzJiLTUgJHtQTn0taXdsd2lmaS02MDAwZzJiLTYgXAotICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNjA1MC00ICR7UE59LWl3bHdpZmktNjA1MC01IFwKLSAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTcyNjAgXAotICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNzI2NSBcCi0gICAgICAgICAgICAgJHtQTn0taXdsd2lmaS03MjY1ZCAke1BOfS1pd2x3aWZpLTgwMDBjICR7UE59LWl3bHdpZmktODI2NSBcCi0gICAgICAgICAgICAgJHtQTn0taXdsd2lmaS05MDAwIFwKLSAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLW1pc2MgXAotICAgICAgICAgICAgICR7UE59LWlidC1saWNlbnNlICR7UE59LWlidCAke1BOfS1pYnQtbWlzYyBcCi0gICAgICAgICAgICAgJHtQTn0taWJ0LTExLTUgJHtQTn0taWJ0LTEyLTE2ICR7UE59LWlidC1ody0zNy03ICR7UE59LWlidC1ody0zNy04IFwKLSAgICAgICAgICAgICAke1BOfS1pYnQtMTcgXAotICAgICAgICAgICAgICR7UE59LWk5MTUtbGljZW5zZSAke1BOfS1pOTE1IFwKLSAgICAgICAgICAgICAke1BOfS1hZHNwLXNzdC1saWNlbnNlICR7UE59LWFkc3Atc3N0IFwKLSAgICAgICAgICAgICAke1BOfS1ibngyLW1pcHMgXAotICAgICAgICAgICAgICR7UE59LWxpcXVpZGlvIFwKLSAgICAgICAgICAgICAke1BOfS1uZXRyb25vbWUtbGljZW5zZSAke1BOfS1uZXRyb25vbWUgXAotICAgICAgICAgICAgICR7UE59LXFhdCAke1BOfS1xYXQtbGljZW5zZSBcCi0gICAgICAgICAgICAgJHtQTn0tcWNvbS1saWNlbnNlIFwKLSAgICAgICAgICAgICAke1BOfS1xY29tLXZlbnVzLTEuOCAke1BOfS1xY29tLXZlbnVzLTQuMiBcCi0gICAgICAgICAgICAgJHtQTn0tcWNvbS1hZHJlbm8tYTN4eCAke1BOfS1xY29tLWFkcmVuby1hNTMwIFwKLSAgICAgICAgICAgICAke1BOfS13aGVuY2UtbGljZW5zZSBcCi0gICAgICAgICAgICAgJHtQTn0tbGljZW5zZSBcCi0gICAgICAgICAgICAgIgotCi0jIEZvciBhdGhlcm9zCi1MSUNFTlNFXyR7UE59LWFyOTE3MCA9ICJGaXJtd2FyZS1hdGhlcm9zX2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1hdGg2ayA9ICJGaXJtd2FyZS1hdGhlcm9zX2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1hdGg5ayA9ICJGaXJtd2FyZS1hdGhlcm9zX2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1hdGhlcm9zLWxpY2Vuc2UgPSAiRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZSIKLQotRklMRVNfJHtQTn0tYXRoZXJvcy1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5hdGhlcm9zX2Zpcm13YXJlIgotRklMRVNfJHtQTn0tYXI5MTcwID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXI5MTcwKi5mdyBcCi0iCi1GSUxFU18ke1BOfS1hdGg2ayA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2F0aDZrIFwKLSIKLUZJTEVTXyR7UE59LWF0aDlrID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXI5MjcxLmZ3IFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hcjcwMTAqLmZ3IFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9odGNfOTI3MS5mdyBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaHRjXzcwMTAuZncgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2F0aDlrX2h0Yy9odGNfNzAxMC0xLjQuMC5mdyBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXRoOWtfaHRjL2h0Y185MjcxLTEuNC4wLmZ3IFwKLSIKLQotUkRFUEVORFNfJHtQTn0tYXI5MTcwICs9ICIke1BOfS1hdGhlcm9zLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1hdGg2ayArPSAiJHtQTn0tYXRoZXJvcy1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tYXRoOWsgKz0gIiR7UE59LWF0aGVyb3MtbGljZW5zZSIKLQotIyBGb3IgY2FybDkxNzAKLUxJQ0VOU0VfJHtQTn0tY2FybDkxNzAgPSAiRmlybXdhcmUtR1BMdjIiCi1MSUNFTlNFXyR7UE59LWdwbHYyLWxpY2Vuc2UgPSAiRmlybXdhcmUtR1BMdjIiCi0KLUZJTEVTXyR7UE59LWdwbHYyLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9HUEwtMiIKLUZJTEVTXyR7UE59LWNhcmw5MTcwID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvY2FybDkxNzAqLmZ3IFwKLSIKLQotUkRFUEVORFNfJHtQTn0tY2FybDkxNzAgKz0gIiR7UE59LWdwbHYyLWxpY2Vuc2UiCi0KLSMgRm9yIFF1YWxDb21tQXRob3MKLUxJQ0VOU0VfJHtQTn0tYXIzayA9ICJGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2FyM2siCi1MSUNFTlNFXyR7UE59LWFyM2stbGljZW5zZSA9ICJGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2FyM2siCi1MSUNFTlNFXyR7UE59LWF0aDEwayA9ICJGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2F0aDEwayIKLUxJQ0VOU0VfJHtQTn0tYXRoMTBrLWxpY2Vuc2UgPSAiRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hdGgxMGsiCi1MSUNFTlNFXyR7UE59LXFjYSA9ICJGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2F0aDEwayIKLQotRklMRVNfJHtQTn0tYXIzay1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5TRS5RdWFsY29tbUF0aGVyb3NfYXIzayIKLUZJTEVTXyR7UE59LWFyM2sgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hcjNrIFwKLSIKLQotRklMRVNfJHtQTn0tYXRoMTBrLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hdGgxMGsiCi1GSUxFU18ke1BOfS1hdGgxMGsgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hdGgxMGsgXAotIgotCi1GSUxFU18ke1BOfS1xY2EgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY2EgXAotIgotCi1SREVQRU5EU18ke1BOfS1hcjNrICs9ICIke1BOfS1hcjNrLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1hdGgxMGsgKz0gIiR7UE59LWF0aDEway1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tcWNhICs9ICIke1BOfS1hdGgxMGstbGljZW5zZSIKLQotIyBGb3IgcmFsaW5rCi1MSUNFTlNFXyR7UE59LXJhbGluayA9ICJGaXJtd2FyZS1yYWxpbmstZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LXJhbGluay1saWNlbnNlID0gIkZpcm13YXJlLXJhbGluay1maXJtd2FyZSIKLQotRklMRVNfJHtQTn0tcmFsaW5rLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLnJhbGluay1maXJtd2FyZS50eHQiCi1GSUxFU18ke1BOfS1yYWxpbmsgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ydCouYmluIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tcmFsaW5rICs9ICIke1BOfS1yYWxpbmstbGljZW5zZSIKLQotIyBGb3IgbWVkaWF0ZWsgTVQ3NjAxVQotTElDRU5TRV8ke1BOfS1tdDc2MDF1ID0gIkZpcm13YXJlLXJhbGlua19hX21lZGlhdGVrX2NvbXBhbnlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LW10NzYwMXUtbGljZW5zZSA9ICJGaXJtd2FyZS1yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIgotCi1GSUxFU18ke1BOfS1tdDc2MDF1LWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLnJhbGlua19hX21lZGlhdGVrX2NvbXBhbnlfZmlybXdhcmUiCi1GSUxFU18ke1BOfS1tdDc2MDF1ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXQ3NjAxdS5iaW4gXAotIgotCi1SREVQRU5EU18ke1BOfS1tdDc2MDF1ICs9ICIke1BOfS1tdDc2MDF1LWxpY2Vuc2UiCi0KLSMgRm9yIHJhZGVvbgotTElDRU5TRV8ke1BOfS1yYWRlb24gPSAiRmlybXdhcmUtcmFkZW9uIgotTElDRU5TRV8ke1BOfS1yYWRlb24tbGljZW5zZSA9ICJGaXJtd2FyZS1yYWRlb24iCi0KLUZJTEVTXyR7UE59LXJhZGVvbi1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5TRS5yYWRlb24iCi1GSUxFU18ke1BOfS1yYWRlb24gPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9yYWRlb24gXAotIgotCi1SREVQRU5EU18ke1BOfS1yYWRlb24gKz0gIiR7UE59LXJhZGVvbi1saWNlbnNlIgotCi0jIEZvciBtYXJ2ZWxsCi1MSUNFTlNFXyR7UE59LXBjaWU4ODk3ID0gIkZpcm13YXJlLU1hcnZlbGwiCi1MSUNFTlNFXyR7UE59LXBjaWU4OTk3ID0gIkZpcm13YXJlLU1hcnZlbGwiCi1MSUNFTlNFXyR7UE59LXNkODY4NiA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgotTElDRU5TRV8ke1BOfS1zZDg2ODggPSAiRmlybXdhcmUtTWFydmVsbCIKLUxJQ0VOU0VfJHtQTn0tc2Q4Nzg3ID0gIkZpcm13YXJlLU1hcnZlbGwiCi1MSUNFTlNFXyR7UE59LXNkODc5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgotTElDRU5TRV8ke1BOfS1zZDg4MDEgPSAiRmlybXdhcmUtTWFydmVsbCIKLUxJQ0VOU0VfJHtQTn0tc2Q4ODg3ID0gIkZpcm13YXJlLU1hcnZlbGwiCi1MSUNFTlNFXyR7UE59LXNkODg5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgotTElDRU5TRV8ke1BOfS11c2I4OTk3ID0gIkZpcm13YXJlLU1hcnZlbGwiCi1MSUNFTlNFXyR7UE59LW1hcnZlbGwtbGljZW5zZSA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgotCi1GSUxFU18ke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLk1hcnZlbGwiCi1GSUxFU18ke1BOfS1wY2llODg5NyA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvcGNpZTg4OTdfdWFwc3RhLmJpbiBcCi0iCi1GSUxFU18ke1BOfS1wY2llODk5NyA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvcGNpZTg5OTdfd2xhbl92NC5iaW4gXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvcGNpZXVhcnQ4OTk3X2NvbWJvX3Y0LmJpbiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9wY2lldXNiODk5N19jb21ib192NC5iaW4gXAotIgotRklMRVNfJHtQTn0tc2Q4Njg2ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbGliZXJ0YXMvc2Q4Njg2X3Y5KiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvc2Q4Njg2KiBcCi0iCi1GSUxFU18ke1BOfS1zZDg2ODggPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9saWJlcnRhcy9zZDg2ODgqIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3NkODY4OCogXAotIgotRklMRVNfJHtQTn0tc2Q4Nzg3ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9zZDg3ODdfdWFwc3RhLmJpbiBcCi0iCi1GSUxFU18ke1BOfS1zZDg3OTcgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3NkODc5N191YXBzdGEuYmluIFwKLSIKLUZJTEVTXyR7UE59LXNkODgwMSA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvc2Q4ODAxX3VhcHN0YS5iaW4gXAotIgotRklMRVNfJHtQTn0tc2Q4ODg3ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9zZDg4ODdfdWFwc3RhLmJpbiBcCi0iCi1GSUxFU18ke1BOfS1zZDg4OTcgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3NkODg5N191YXBzdGEuYmluIFwKLSIKLUZJTEVTXyR7UE59LXVzYjg5OTcgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3VzYnVzYjg5OTdfY29tYm9fdjQuYmluIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tc2Q4Njg2ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1zZDg2ODggKz0gIiR7UE59LW1hcnZlbGwtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXNkODc4NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tc2Q4Nzk3ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1zZDg4MDEgKz0gIiR7UE59LW1hcnZlbGwtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXNkODg4NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tc2Q4ODk3ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS11c2I4OTk3ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCi0KLSMgRm9yIG5ldHJvbm9tZQotTElDRU5TRV8ke1BOfS1uZXRyb25vbWUgPSAiRmlybXdhcmUtbmV0cm9ub21lIgotCi1GSUxFU18ke1BOfS1uZXRyb25vbWUtbGljZW5zZSA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuTmV0cm9ub21lIFwKLSIKLUZJTEVTXyR7UE59LW5ldHJvbm9tZSA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL25ldHJvbm9tZS9uaWNfQU1EQTAwODEqLm5mZncgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL25ldHJvbm9tZS9uaWNfQU1EQTAwOTYqLm5mZncgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL25ldHJvbm9tZS9uaWNfQU1EQTAwOTcqLm5mZncgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL25ldHJvbm9tZS9uaWNfQU1EQTAwOTkqLm5mZncgXAotIgotCi1SREVQRU5EU18ke1BOfS1uZXRyb25vbWUgKz0gIiR7UE59LW5ldHJvbm9tZS1saWNlbnNlIgotCi0jIEZvciBydGwKLUxJQ0VOU0VfJHtQTn0tcnRsODE4OCA9ICJGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1ydGw4MTkyY3UgPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0tcnRsODE5MmNlID0gIkZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LXJ0bDgxOTJzdSA9ICJGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1ydGw4NzIzID0gIkZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LXJ0bDg4MjEgPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0tcnRsLWxpY2Vuc2UgPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0tcnRsODE2OCA9ICJXSEVOQ0UiCi0KLUZJTEVTXyR7UE59LXJ0bC1saWNlbnNlID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5ydGx3aWZpX2Zpcm13YXJlLnR4dCBcCi0iCi1GSUxFU18ke1BOfS1ydGw4MTg4ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcnRsd2lmaS9ydGw4MTg4Ki5iaW4gXAotIgotRklMRVNfJHtQTn0tcnRsODE5MmN1ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcnRsd2lmaS9ydGw4MTkyY3VmdyouYmluIFwKLSIKLUZJTEVTXyR7UE59LXJ0bDgxOTJjZSA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bHdpZmkvcnRsODE5MmNmdyouYmluIFwKLSIKLUZJTEVTXyR7UE59LXJ0bDgxOTJzdSA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bHdpZmkvcnRsODcxMnUuYmluIFwKLSIKLUZJTEVTXyR7UE59LXJ0bDg3MjMgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ydGx3aWZpL3J0bDg3MjMqLmJpbiBcCi0iCi1GSUxFU18ke1BOfS1ydGw4ODIxID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcnRsd2lmaS9ydGw4ODIxKi5iaW4gXAotIgotRklMRVNfJHtQTn0tcnRsODE2OCA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bF9uaWMvcnRsODE2OCouZncgXAotIgotCi1SREVQRU5EU18ke1BOfS1ydGw4MTg4ICs9ICIke1BOfS1ydGwtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXJ0bDgxOTJjZSArPSAiJHtQTn0tcnRsLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1ydGw4MTkyY3UgKz0gIiR7UE59LXJ0bC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tcnRsODE5MnN1ID0gIiR7UE59LXJ0bC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tcnRsODcyMyArPSAiJHtQTn0tcnRsLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1ydGw4ODIxICs9ICIke1BOfS1ydGwtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXJ0bDgxNjggKz0gIiR7UE59LXdoZW5jZS1saWNlbnNlIgotCi0jIEZvciB0aS1jb25uZWN0aXZpdHkKLUxJQ0VOU0VfJHtQTn0td2xjb21tb24gPSAiRmlybXdhcmUtdGktY29ubmVjdGl2aXR5IgotTElDRU5TRV8ke1BOfS13bDEyeHggPSAiRmlybXdhcmUtdGktY29ubmVjdGl2aXR5IgotTElDRU5TRV8ke1BOfS13bDE4eHggPSAiRmlybXdhcmUtdGktY29ubmVjdGl2aXR5IgotTElDRU5TRV8ke1BOfS10aS1jb25uZWN0aXZpdHktbGljZW5zZSA9ICJGaXJtd2FyZS10aS1jb25uZWN0aXZpdHkiCi0KLUZJTEVTXyR7UE59LXRpLWNvbm5lY3Rpdml0eS1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS50aS1jb25uZWN0aXZpdHkiCi1GSUxFU18ke1BOfS13bGNvbW1vbiA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL1RJKiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvdGktY29ubmVjdGl2aXR5L1RJKiBcCi0iCi1GSUxFU18ke1BOfS13bDEyeHggPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS93bDEyKiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvdGktY29ubmVjdGl2aXR5L3dsMTIqIFwKLSIKLUZJTEVTXyR7UE59LXdsMTh4eCA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3dsMTgqIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS90aS1jb25uZWN0aXZpdHkvd2wxOCogXAotIgotCi1SREVQRU5EU18ke1BOfS13bDEyeHggPSAiJHtQTn0tdGktY29ubmVjdGl2aXR5LWxpY2Vuc2UgJHtQTn0td2xjb21tb24iCi1SREVQRU5EU18ke1BOfS13bDE4eHggPSAiJHtQTn0tdGktY29ubmVjdGl2aXR5LWxpY2Vuc2UgJHtQTn0td2xjb21tb24iCi0KLSMgRm9yIHZ0NjY1NgotTElDRU5TRV8ke1BOfS12dDY2NTYgPSAiRmlybXdhcmUtdmlhX3Z0NjY1NiIKLUxJQ0VOU0VfJHtQTn0tdnQ2NjU2LWxpY2Vuc2UgPSAiRmlybXdhcmUtdmlhX3Z0NjY1NiIKLQotRklMRVNfJHtQTn0tdnQ2NjU2LWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLnZpYV92dDY2NTYiCi1GSUxFU18ke1BOfS12dDY2NTYgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS92bnR3dXNiLmZ3IFwKLSIKLQotUkRFUEVORFNfJHtQTn0tdnQ2NjU2ID0gIiR7UE59LXZ0NjY1Ni1saWNlbnNlIgotCi0jIEZvciBicm9hZGNvbQotCi0jIGZvciBpIGluIGBncmVwIGJyY20gV0hFTkNFICB8IGdyZXAgXkZpbGUgfCBzZWQgJ3MvRmlsZTogYnJjbS4vL2cnYDsgZG8gcGtnPWBlY2hvICRpIHwgc2VkICdzLy1bc3A0MF0uKi8vZzsgcy9cLmJpbi8vZzsgcy9icmNtZm1hYy9iY20vZzsgcy9faGRyLy1oZHIvZzsgcy9CQ00vYmNtLTBiYjQtMDMwNi9nJ2A7IGVjaG8gLWUgIiAgICAgICAgICAgICBcJHtQTn0tJHBrZyBcXCI7IGRvbmUgIHwgc29ydCAtdQotCi1MSUNFTlNFXyR7UE59LWJyb2FkY29tLWxpY2Vuc2UgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLUZJTEVTXyR7UE59LWJyb2FkY29tLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLmJyb2FkY29tX2JjbTQzeHgiCi0KLSMgZm9yIGkgaW4gYGdyZXAgYnJjbSBXSEVOQ0UgIHwgZ3JlcCBeRmlsZSB8IHNlZCAncy9GaWxlOiBicmNtLi8vZydgOyBkbyBwa2c9YGVjaG8gJGkgfCBzZWQgJ3MvLVtzcDQwXS4qLy9nOyBzL1wuYmluLy9nOyBzL2JyY21mbWFjL2JjbS9nOyBzL19oZHIvLWhkci9nOyBzL0JDTS9iY20tMGJiNC0wMzA2L2cnYDsgZWNobyAiJGkgLSAkcGtnIjsgZWNobyAtZSAiRklMRVNfXCR7UE59LSRwa2cgPSBcIlwke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vJGlcIiI7IGRvbmUgfCBncmVwIF5GSUxFUwotCi1GSUxFU18ke1BOfS1iY200M3h4ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9iY200M3h4LTAuZnciCi1GSUxFU18ke1BOfS1iY200M3h4LWhkciA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYmNtNDN4eF9oZHItMC5mdyIKLUZJTEVTXyR7UE59LWJjbTQzMjktZnVsbG1hYyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYmNtNDMyOS1mdWxsbWFjLTQuYmluIgotRklMRVNfJHtQTn0tYmNtNDMyMzZiID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMjM2Yi5iaW4iCi1GSUxFU18ke1BOfS1iY200MzI5ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMjktc2Rpby5iaW4iCi1GSUxFU18ke1BOfS1iY200MzMwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMzAtc2Rpby4qIgotRklMRVNfJHtQTn0tYmNtNDMzNCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzM0LXNkaW8uYmluIgotRklMRVNfJHtQTn0tYmNtNDMzNSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzM1LXNkaW8uYmluIgotRklMRVNfJHtQTn0tYmNtNDMzOSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzM5LXNkaW8uYmluIgotRklMRVNfJHtQTn0tYmNtNDMyNDFiMCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzI0MWIwLXNkaW8uYmluIgotRklMRVNfJHtQTn0tYmNtNDMyNDFiNCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzI0MWI0LXNkaW8uYmluIgotRklMRVNfJHtQTn0tYmNtNDMyNDFiNSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzI0MWI1LXNkaW8uYmluIgotRklMRVNfJHtQTn0tYmNtNDMyNDJhID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMjQyYS5iaW4iCi1GSUxFU18ke1BOfS1iY200MzE0MyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzE0My5iaW4gXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzE0My1zZGlvLmJpbiBcCi0iCi1GSUxFU18ke1BOfS1iY200MzQzMGEwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNDMwYTAtc2Rpby4qIgotRklMRVNfJHtQTn0tYmNtNDM0NTUgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM0NTUtc2Rpby4qIgotRklMRVNfJHtQTn0tYmNtNDM1MGMyID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTBjMi1wY2llLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzNTAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM1MC1wY2llLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzNTYgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM1Ni1zZGlvLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzNTY5ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTY5LmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzNTcwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTcwLXBjaWUuYmluIgotRklMRVNfJHtQTn0tYmNtNDM1OCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzU4LXBjaWUuYmluIgotRklMRVNfJHtQTn0tYmNtNDM2MDIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM2MDItcGNpZS5iaW4gXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzYwMi1wY2llLmFwLmJpbiBcCi0iCi1GSUxFU18ke1BOfS1iY200MzY2YiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzY2Yi1wY2llLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzNjZjID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNjZjLXBjaWUuYmluIgotRklMRVNfJHtQTn0tYmNtNDM3MSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzcxLXBjaWUuYmluIgotCi0jIGZvciBpIGluIGBncmVwIGJyY20gV0hFTkNFICB8IGdyZXAgXkZpbGUgfCBzZWQgJ3MvRmlsZTogYnJjbS4vL2cnYDsgZG8gcGtnPWBlY2hvICRpIHwgc2VkICdzLy1bc3A0MF0uKi8vZzsgcy9cLmJpbi8vZzsgcy9icmNtZm1hYy9iY20vZzsgcy9faGRyLy1oZHIvZzsgcy9CQ00vYmNtLTBiYjQtMDMwNi9nJ2A7IGVjaG8gLWUgIkxJQ0VOU0VfXCR7UE59LSRwa2cgPSBcIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHhcIlxuUkRFUEVORFNfXCR7UE59LSRwa2cgKz0gXCJcJHtQTn0tYnJvYWRjb20tbGljZW5zZVwiIjsgZG9uZQotIyBDdXJyZW50bHkgMXN0IG9uZSBhbmQgbGFzdCA2IGhhdmUgY3lwcmVzcyBMSUNFTlNFCi0KLUxJQ0VOU0VfJHtQTn0tYmNtNDN4eCA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDN4eCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDN4eC1oZHIgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzeHgtaGRyICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzI5LWZ1bGxtYWMgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMjktZnVsbG1hYyArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDMyMzZiID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzIzNmIgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMjkgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMjkgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMzAgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMzAgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMzQgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMzQgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMzUgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMzUgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMzkgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMzkgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMjQxYjAgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMjQxYjAgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMjQxYjQgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMjQxYjQgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMjQxYjUgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMjQxYjUgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMjQyYSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDMyNDJhICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzE0MyA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDMxNDMgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzNDMwYTAgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzNDMwYTAgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzNDU1ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzQ1NSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDM1MGMyID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzUwYzIgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzNTAgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzNTAgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzNTYgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzNTYgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzNTY5ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzU2OSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDM1NzAgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzNTcwICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzU4ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzU4ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzYwMiA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDM2MDIgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzNjZiID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzY2YiArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDM2NmMgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzNjZjICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzcxID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzcxICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotCi0jIEZvciBicm9hZGNvbSBjeXByZXNzCi0KLUxJQ0VOU0VfJHtQTn0tY3lwcmVzcy1saWNlbnNlID0gIkZpcm13YXJlLWN5cHJlc3MiCi1GSUxFU18ke1BOfS1jeXByZXNzLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLmN5cHJlc3MiCi0KLUZJTEVTXyR7UE59LWJjbS0wYmI0LTAzMDYgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL0JDTS0wYmI0LTAzMDYuaGNkIgotRklMRVNfJHtQTn0tYmNtNDMzNDAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMzNDAtc2Rpby4qIgotRklMRVNfJHtQTn0tYmNtNDMzNjIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMzNjItc2Rpby4qIgotRklMRVNfJHtQTn0tYmNtNDM0MzAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM0MzAtc2Rpby4qIgotRklMRVNfJHtQTn0tYmNtNDM1NCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzU0LXNkaW8uYmluIgotRklMRVNfJHtQTn0tYmNtNDM1Ni1wY2llID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTYtcGNpZS4qIgotRklMRVNfJHtQTn0tYmNtNDM3MyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzczLXNkaW8uYmluIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM3My5iaW4gXAotIgotCi1MSUNFTlNFXyR7UE59LWJjbS0wYmI0LTAzMDYgPSAiRmlybXdhcmUtY3lwcmVzcyIKLVJERVBFTkRTXyR7UE59LWJjbS0wYmI0LTAzMDYgKz0gIiR7UE59LWN5cHJlc3MtbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDMzNDAgPSAiRmlybXdhcmUtY3lwcmVzcyIKLVJERVBFTkRTXyR7UE59LWJjbTQzMzQwICs9ICIke1BOfS1jeXByZXNzLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMzYyID0gIkZpcm13YXJlLWN5cHJlc3MiCi1SREVQRU5EU18ke1BOfS1iY200MzM2MiArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzQzMCA9ICJGaXJtd2FyZS1jeXByZXNzIgotUkRFUEVORFNfJHtQTn0tYmNtNDM0MzAgKz0gIiR7UE59LWN5cHJlc3MtbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDM1NCA9ICJGaXJtd2FyZS1jeXByZXNzIgotUkRFUEVORFNfJHtQTn0tYmNtNDM1NCArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzU2LXBjaWUgPSAiRmlybXdhcmUtY3lwcmVzcyIKLVJERVBFTkRTXyR7UE59LWJjbTQzNTYtcGNpZSArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzczID0gIkZpcm13YXJlLWN5cHJlc3MiCi1SREVQRU5EU18ke1BOfS1iY200MzczICs9ICIke1BOfS1jeXByZXNzLWxpY2Vuc2UiCi0KLSMgRm9yIEJyb2FkY29tIGJueDItbWlwcwotIwotIyB3aGljaCBpcyBhIHNlcGFyYXRlIGNhc2UgdG8gdGhlIG90aGVyIEJyb2FkY29tIGZpcm13YXJlcyBzaW5jZSBpdHMKLSMgbGljZW5zZSBpcyBjb250YWluZWQgaW4gdGhlIHNoYXJlZCBXSEVOQ0UgZmlsZS4KLQotTElDRU5TRV8ke1BOfS1ibngyLW1pcHMgPSAiV0hFTkNFIgotTElDRU5TRV8ke1BOfS13aGVuY2UtbGljZW5zZSA9ICJXSEVOQ0UiCi0KLUZJTEVTXyR7UE59LWJueDItbWlwcyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JueDIvYm54Mi1taXBzLTA5LTYuMi4xYi5mdyIKLUZJTEVTXyR7UE59LXdoZW5jZS1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvV0hFTkNFIgotCi1SREVQRU5EU18ke1BOfS1ibngyLW1pcHMgKz0gIiR7UE59LXdoZW5jZS1saWNlbnNlIgotCi0jIEZvciBpbXgtc2RtYQotTElDRU5TRV8ke1BOfS1pbXgtc2RtYS1pbXg2cSAgICAgICA9ICJGaXJtd2FyZS1pbXgtc2RtYV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taW14LXNkbWEtaW14N2QgICAgICAgPSAiRmlybXdhcmUtaW14LXNkbWFfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWlteC1zZG1hLWxpY2Vuc2UgICAgICAgPSAiRmlybXdhcmUtaW14LXNkbWFfZmlybXdhcmUiCi0KLUZJTEVTXyR7UE59LWlteC1zZG1hLWlteDZxID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW14L3NkbWEvc2RtYS1pbXg2cS5iaW4iCi0KLVJQUk9WSURFU18ke1BOfS1pbXgtc2RtYS1pbXg2cSA9ICJmaXJtd2FyZS1pbXgtc2RtYS1pbXg2cSIKLVJSRVBMQUNFU18ke1BOfS1pbXgtc2RtYS1pbXg2cSA9ICJmaXJtd2FyZS1pbXgtc2RtYS1pbXg2cSIKLVJDT05GTElDVFNfJHtQTn0taW14LXNkbWEtaW14NnEgPSAiZmlybXdhcmUtaW14LXNkbWEtaW14NnEiCi0KLUZJTEVTXyR7UE59LWlteC1zZG1hLWlteDdkID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW14L3NkbWEvc2RtYS1pbXg3ZC5iaW4iCi0KLUZJTEVTXyR7UE59LWlteC1zZG1hLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTlNFLnNkbWFfZmlybXdhcmUiCi0KLVJERVBFTkRTXyR7UE59LWlteC1zZG1hLWlteDZxICs9ICIke1BOfS1pbXgtc2RtYS1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0taW14LXNkbWEtaW14N2QgKz0gIiR7UE59LWlteC1zZG1hLWxpY2Vuc2UiCi0KLSMgRm9yIGl3bHdpZmkKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaSAgICAgICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS0xMzUtNiAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTcgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTggICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTkgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTEwICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTEyICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTEzICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTE2ICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTE3ICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwLTQgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwZzJhLTUgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwZzJhLTYgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwZzJiLTUgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwZzJiLTYgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDUwLTQgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDUwLTUgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS03MjYwICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS03MjY1ICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS03MjY1ZCAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS04MDAwYyAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS04MjY1ICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS05MDAwICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS1taXNjICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS1saWNlbnNlICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLQotCi1GSUxFU18ke1BOfS1pd2x3aWZpLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLml3bHdpZmlfZmlybXdhcmUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTEzNS02ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0xMzUtNi51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC03ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0zMTYwLTcudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTMxNjAtOCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC04LnVjb2RlIgotRklMRVNfJHtQTn0taXdsd2lmaS0zMTYwLTkgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTMxNjAtOS51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC0xMCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC0xMC51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC0xMiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC0xMi51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC0xMyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC0xMy51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC0xNiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC0xNi51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC0xNyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC0xNy51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktNjAwMC00ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS02MDAwLTQudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTYwMDBnMmEtNSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNjAwMGcyYS01LnVjb2RlIgotRklMRVNfJHtQTn0taXdsd2lmaS02MDAwZzJhLTYgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTYwMDBnMmEtNi51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktNjAwMGcyYi01ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS02MDAwZzJiLTUudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTYwMDBnMmItNiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNjAwMGcyYi02LnVjb2RlIgotRklMRVNfJHtQTn0taXdsd2lmaS02MDUwLTQgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTYwNTAtNC51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktNjA1MC01ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS02MDUwLTUudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTcyNjAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNzI2MC0qLnVjb2RlIgotRklMRVNfJHtQTn0taXdsd2lmaS03MjY1ICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTcyNjUtKi51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktNzI2NWQgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNzI2NUQtKi51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktODAwMGMgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktODAwMEMtKi51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktODI2NSAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS04MjY1LSoudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTkwMDAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktOTAwMC0qLnVjb2RlIgotRklMRVNfJHtQTn0taXdsd2lmaS1taXNjICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLSoudWNvZGUiCi0KLVJERVBFTkRTXyR7UE59LWl3bHdpZmktMTM1LTYgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC03ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC04ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC05ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC0xMCAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC0xMiAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC0xMyAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC0xNiAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC0xNyAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMC00ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMGcyYS01ID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMGcyYS02ID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMGcyYi01ID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMGcyYi02ID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktNjA1MC00ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktNjA1MC01ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktNzI2MCAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktNzI2NSAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktNzI2NWQgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktODAwMGMgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktODI2NSAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktOTAwMCAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktbWlzYyAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLQotIyAtaXdsd2lmaS1taXNjIGlzIGEgImNhdGNoIGFsbCIgcGFja2FnZSB0aGF0IGluY2x1ZGVzIGFsbCB0aGUgaXdsd2lmaQotIyBmaXJtd2FyZXMgdGhhdCBhcmUgbm90IGFscmVhZHkgaW5jbHVkZWQgaW4gb3RoZXIgLWl3bHdpZmktIHBhY2thZ2VzLgotIyAtaXdsd2lmaSBpcyBhIHZpcnR1YWwgcGFja2FnZSB0aGF0IGRlcGVuZHMgdXBvbiBhbGwgaXdsd2lmaSBwYWNrYWdlcy4KLSMgVGhlc2UgYXJlIGRpc3RpbmN0IGluIG9yZGVyIHRvIGFsbG93IHRoZSAtbWlzYyBmaXJtd2FyZXMgdG8gYmUgaW5zdGFsbGVkCi0jIHdpdGhvdXQgcHVsbGluZyBpbiBldmVyeSBvdGhlciBpd2x3aWZpIHBhY2thZ2UuCi1BTExPV19FTVBUWV8ke1BOfS1pd2x3aWZpID0gIjEiCi1BTExPV19FTVBUWV8ke1BOfS1pd2x3aWZpLW1pc2MgPSAiMSIKLQotIyBIYW5kbGUgcGFja2FnZSB1cGRhdGluZyBmb3IgdGhlIG5ld2x5IG1lcmdlZCBpd2x3aWZpIGdyb3VwaW5ncwotUlBST1ZJREVTXyR7UE59LWl3bHdpZmktNzI2NSA9ICIke1BOfS1pd2x3aWZpLTcyNjUtOCAke1BOfS1pd2x3aWZpLTcyNjUtOSIKLVJSRVBMQUNFU18ke1BOfS1pd2x3aWZpLTcyNjUgPSAiJHtQTn0taXdsd2lmaS03MjY1LTggJHtQTn0taXdsd2lmaS03MjY1LTkiCi1SQ09ORkxJQ1RTXyR7UE59LWl3bHdpZmktNzI2NSA9ICIke1BOfS1pd2x3aWZpLTcyNjUtOCAke1BOfS1pd2x3aWZpLTcyNjUtOSIKLQotUlBST1ZJREVTXyR7UE59LWl3bHdpZmktNzI2MCA9ICIke1BOfS1pd2x3aWZpLTcyNjAtNyAke1BOfS1pd2x3aWZpLTcyNjAtOCAke1BOfS1pd2x3aWZpLTcyNjAtOSIKLVJSRVBMQUNFU18ke1BOfS1pd2x3aWZpLTcyNjAgPSAiJHtQTn0taXdsd2lmaS03MjYwLTcgJHtQTn0taXdsd2lmaS03MjYwLTggJHtQTn0taXdsd2lmaS03MjYwLTkiCi1SQ09ORkxJQ1RTXyR7UE59LWl3bHdpZmktNzI2MCA9ICIke1BOfS1pd2x3aWZpLTcyNjAtNyAke1BOfS1pd2x3aWZpLTcyNjAtOCAke1BOfS1pd2x3aWZpLTcyNjAtOSIKLQotIyBGb3IgaWJ0Ci1MSUNFTlNFXyR7UE59LWlidC1saWNlbnNlID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taWJ0LWh3LTM3LTcgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1pYnQtaHctMzctOCA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWlidC0xMS01ICAgID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taWJ0LTEyLTE2ICAgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1pYnQtMTcgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1pYnQtbWlzYyAgICA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCi0KLUZJTEVTXyR7UE59LWlidC1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5pYnRfZmlybXdhcmUiCi1GSUxFU18ke1BOfS1pYnQtaHctMzctNyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC1ody0zNy43Ki5ic2VxIgotRklMRVNfJHtQTn0taWJ0LWh3LTM3LTggPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtaHctMzcuOCouYnNlcSIKLUZJTEVTXyR7UE59LWlidC0xMS01ICAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTExLTUuc2ZpICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTExLTUuZGRjIgotRklMRVNfJHtQTn0taWJ0LTEyLTE2ICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTItMTYuc2ZpICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTEyLTE2LmRkYyIKLUZJTEVTXyR7UE59LWlidC0xNyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xNy0qLnNmaSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xNy0qLmRkYyIKLUZJTEVTXyR7UE59LWlidC1taXNjICAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaWJ0LSoiCi0KLVJERVBFTkRTXyR7UE59LWlidC1ody0zNy03ID0gIiR7UE59LWlidC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0taWJ0LWh3LTM3LjggPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pYnQtMTEtNSAgICA9ICIke1BOfS1pYnQtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWlidC0xMi0xNiAgID0gIiR7UE59LWlidC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0taWJ0LTE3ID0gIiR7UE59LWlidC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0taWJ0LW1pc2MgICAgPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCi0KLUFMTE9XX0VNUFRZXyR7UE59LWlidD0gIjEiCi1BTExPV19FTVBUWV8ke1BOfS1pYnQtbWlzYyA9ICIxIgotCi1MSUNFTlNFXyR7UE59LWk5MTUgICAgICAgPSAiRmlybXdhcmUtaTkxNSIKLUxJQ0VOU0VfJHtQTn0taTkxNS1saWNlbnNlID0gIkZpcm13YXJlLWk5MTUiCi1GSUxFU18ke1BOfS1pOTE1LWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTlNFLmk5MTUiCi1GSUxFU18ke1BOfS1pOTE1ICAgICAgICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pOTE1IgotUkRFUEVORFNfJHtQTn0taTkxNSAgICAgID0gIiR7UE59LWk5MTUtbGljZW5zZSIKLQotRklMRVNfJHtQTn0tYWRzcC1zc3QtbGljZW5zZSAgICAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5hZHNwX3NzdCIKLUxJQ0VOU0VfJHtQTn0tYWRzcC1zc3QgICAgICAgICAgICA9ICJGaXJtd2FyZS1hZHNwX3NzdCIKLUxJQ0VOU0VfJHtQTn0tYWRzcC1zc3QtbGljZW5zZSAgICA9ICJGaXJtd2FyZS1hZHNwX3NzdCIKLUZJTEVTXyR7UE59LWFkc3Atc3N0ICAgICAgICAgICAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2RzcF9mdyoiCi1SREVQRU5EU18ke1BOfS1hZHNwLXNzdCAgICAgICAgICAgPSAiJHtQTn0tYWRzcC1zc3QtbGljZW5zZSIKLQotIyBGb3IgUUFUCi1MSUNFTlNFXyR7UE59LXFhdCAgICAgICAgID0gIkZpcm13YXJlLXFhdCIKLUxJQ0VOU0VfJHtQTn0tcWF0LWxpY2Vuc2UgPSAiRmlybXdhcmUtcWF0IgotRklMRVNfJHtQTn0tcWF0LWxpY2Vuc2UgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UucWF0X2Zpcm13YXJlIgotRklMRVNfJHtQTn0tcWF0ICAgICAgICAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3FhdCouYmluIgotUkRFUEVORFNfJHtQTn0tcWF0ICAgICAgICA9ICIke1BOfS1xYXQtbGljZW5zZSIKLQotIyBGb3IgUUNPTSBWUFUvR1BVCi1MSUNFTlNFXyR7UE59LXFjb20tbGljZW5zZSA9ICJGaXJtd2FyZS1xY29tIgotRklMRVNfJHtQTn0tcWNvbS1saWNlbnNlICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTlNFLnFjb20gJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL05PVElDRS50eHQiCi1GSUxFU18ke1BOfS1xY29tLXZlbnVzLTEuOCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vdmVudXMtMS44LyoiCi1GSUxFU18ke1BOfS1xY29tLXZlbnVzLTQuMiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vdmVudXMtNC4yLyoiCi1GSUxFU18ke1BOfS1xY29tLWFkcmVuby1hM3h4ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9hMzAwXyouZncgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hMzAwXyouZnciCi1GSUxFU18ke1BOfS1xY29tLWFkcmVuby1hNTMwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9hNTMwKi4qIgotUkRFUEVORFNfJHtQTn0tcWNvbS12ZW51cy0xLjggPSAiJHtQTn0tcWNvbS1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tcWNvbS12ZW51cy00LjIgPSAiJHtQTn0tcWNvbS1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tcWNvbS1hZHJlbm8tYTN4eCA9ICIke1BOfS1xY29tLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1xY29tLWFkcmVuby1hNTMwID0gIiR7UE59LXFjb20tbGljZW5zZSIKLQotRklMRVNfJHtQTn0tbGlxdWlkaW8gPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9saXF1aWRpbyIKLQotIyBGb3Igb3RoZXIgZmlybXdhcmVzCi0jIE1heWJlIHNwbGl0IG91dCB0byBzZXBhcmF0ZSBwYWNrYWdlcyB3aGVuIG5lZWRlZC4KLUxJQ0VOU0VfJHtQTn0gPSAiXAotICAgIEZpcm13YXJlLUFiaWxpcyBcCi0gICAgJiBGaXJtd2FyZS1hZ2VyZSBcCi0gICAgJiBGaXJtd2FyZS1hbWRncHUgXAotICAgICYgRmlybXdhcmUtYW1kLXVjb2RlIFwKLSAgICAmIEZpcm13YXJlLWF0bWVsIFwKLSAgICAmIEZpcm13YXJlLWNhMDEzMiBcCi0gICAgJiBGaXJtd2FyZS1jYXZpdW0gXAotICAgICYgRmlybXdhcmUtY2hlbHNpb19maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1jdzEyMDAgXAotICAgICYgRmlybXdhcmUtZGliMDcwMCBcCi0gICAgJiBGaXJtd2FyZS1lMTAwIFwKLSAgICAmIEZpcm13YXJlLWVuZV9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1md19zc3RfMGYyOCBcCi0gICAgJiBGaXJtd2FyZS1nbzcwMDcgXAotICAgICYgRmlybXdhcmUtaGZpMV9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1pMjQwMG0gXAotICAgICYgRmlybXdhcmUtaWJ0X2Zpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLWl0OTEzeCBcCi0gICAgJiBGaXJtd2FyZS1JbnRjU1NUMiBcCi0gICAgJiBGaXJtd2FyZS1rYXdldGggXAotICAgICYgRmlybXdhcmUtbW94YSBcCi0gICAgJiBGaXJtd2FyZS1teXJpMTBnZV9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1udmlkaWEgXAotICAgICYgRmlybXdhcmUtT0xQQyBcCi0gICAgJiBGaXJtd2FyZS1hdGg5ay1odGMgXAotICAgICYgRmlybXdhcmUtcGhhbmZ3IFwKLSAgICAmIEZpcm13YXJlLXFhdCBcCi0gICAgJiBGaXJtd2FyZS1xY29tIFwKLSAgICAmIEZpcm13YXJlLXFsYTEyODAgXAotICAgICYgRmlybXdhcmUtcWxhMnh4eCBcCi0gICAgJiBGaXJtd2FyZS1yOGE3Nzl4X3VzYjMgXAotICAgICYgRmlybXdhcmUtcmFkZW9uIFwKLSAgICAmIEZpcm13YXJlLXJhbGlua19hX21lZGlhdGVrX2NvbXBhbnlfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtcmFsaW5rLWZpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLWlteC1zZG1hX2Zpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLXNpYW5vIFwKLSAgICAmIEZpcm13YXJlLXRkYTc3MDYtZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtdGktY29ubmVjdGl2aXR5IFwKLSAgICAmIEZpcm13YXJlLXRpLWtleXN0b25lIFwKLSAgICAmIEZpcm13YXJlLXVlYWdsZS1hdG00LWZpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLXdsMTI1MSBcCi0gICAgJiBGaXJtd2FyZS14YzQwMDAgXAotICAgICYgRmlybXdhcmUteGM1MDAwIFwKLSAgICAmIEZpcm13YXJlLXhjNTAwMGMgXAotICAgICYgV0hFTkNFIFwKLSIKLQotRklMRVNfJHtQTn0tbGljZW5zZSArPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTioiCi1GSUxFU18ke1BOfSArPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS8qIgotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0td2hlbmNlLWxpY2Vuc2UiCi0KLSMgTWFrZSBsaW51eC1maXJtd2FyZSBkZXBlbmQgb24gYWxsIG9mIHRoZSBzcGxpdC1vdXQgcGFja2FnZXMuCi0jIE1ha2UgbGludXgtZmlybXdhcmUtaXdsd2lmaSBkZXBlbmQgb24gYWxsIG9mIHRoZSBzcGxpdC1vdXQgaXdsd2lmaSBwYWNrYWdlcy4KLSMgTWFrZSBsaW51eC1maXJtd2FyZS1pYnQgZGVwZW5kIG9uIGFsbCBvZiB0aGUgc3BsaXQtb3V0IGlidCBwYWNrYWdlcy4KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBmaXJtd2FyZV9wa2dzID0gb2UudXRpbHMucGFja2FnZXNfZmlsdGVyX291dF9zeXN0ZW0oZCkKLSAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfbGludXgtZmlybXdhcmUnLCAnICcgKyAnICcuam9pbihmaXJtd2FyZV9wa2dzKSkKLQotICAgIGl3bHdpZmlfcGtncyA9IGZpbHRlcihsYW1iZGEgeDogeC5maW5kKCctaXdsd2lmaS0nKSAhPSAtMSwgZmlybXdhcmVfcGtncykKLSAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfbGludXgtZmlybXdhcmUtaXdsd2lmaScsICcgJyArICcgJy5qb2luKGl3bHdpZmlfcGtncykpCi0KLSAgICBpYnRfcGtncyA9IGZpbHRlcihsYW1iZGEgeDogeC5maW5kKCctaWJ0LScpICE9IC0xLCBmaXJtd2FyZV9wa2dzKQotICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU19saW51eC1maXJtd2FyZS1pYnQnLCAnICcgKyAnICcuam9pbihpYnRfcGtncykpCi19Ci0KLSMgRmlybXdhcmUgZmlsZXMgYXJlIGdlbmVyYWxseSBub3QgcmFuIG9uIHRoZSBDUFUsIHNvIHRoZXkgY2FuIGJlCi0jIGFsbGFyY2ggZGVzcGl0ZSBiZWluZyBhcmNoaXRlY3R1cmUgc3BlY2lmaWMKLUlOU0FORV9TS0lQID0gImFyY2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfMjAyMDAxMjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfMjAyMDAxMjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE3MzQwOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV8yMDIwMDEyMi5iYgpAQCAtMCwwICsxLDkzNiBAQAorU1VNTUFSWSA9ICJGaXJtd2FyZSBmaWxlcyBmb3IgdXNlIHdpdGggTGludXgga2VybmVsIgorU0VDVElPTiA9ICJrZXJuZWwiCisKK0xJQ0VOU0UgPSAiXAorICAgIEZpcm13YXJlLUFiaWxpcyBcCisgICAgJiBGaXJtd2FyZS1hZHNwX3NzdCBcCisgICAgJiBGaXJtd2FyZS1hZ2VyZSBcCisgICAgJiBGaXJtd2FyZS1hbWRncHUgXAorICAgICYgRmlybXdhcmUtYW1kLXVjb2RlIFwKKyAgICAmIEZpcm13YXJlLWFtbG9naWNfdmRlYyBcCisgICAgJiBGaXJtd2FyZS1hdGhlcm9zX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLWF0bWVsIFwKKyAgICAmIEZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHggXAorICAgICYgRmlybXdhcmUtY2EwMTMyIFwKKyAgICAmIEZpcm13YXJlLWNhdml1bSBcCisgICAgJiBGaXJtd2FyZS1jaGVsc2lvX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLWN3MTIwMCBcCisgICAgJiBGaXJtd2FyZS1jeXByZXNzIFwKKyAgICAmIEZpcm13YXJlLWRpYjA3MDAgXAorICAgICYgRmlybXdhcmUtZTEwMCBcCisgICAgJiBGaXJtd2FyZS1lbmVfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtZndfc3N0XzBmMjggXAorICAgICYgRmlybXdhcmUtZ283MDA3IFwKKyAgICAmIEZpcm13YXJlLUdQTHYyIFwKKyAgICAmIEZpcm13YXJlLWhmaTFfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtaTI0MDBtIFwKKyAgICAmIEZpcm13YXJlLWk5MTUgXAorICAgICYgRmlybXdhcmUtaWJ0X2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLWl0OTEzeCBcCisgICAgJiBGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLUludGNTU1QyIFwKKyAgICAmIEZpcm13YXJlLWthd2V0aCBcCisgICAgJiBGaXJtd2FyZS1NYXJ2ZWxsIFwKKyAgICAmIEZpcm13YXJlLW1veGEgXAorICAgICYgRmlybXdhcmUtbXlyaTEwZ2VfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtbmV0cm9ub21lIFwKKyAgICAmIEZpcm13YXJlLW52aWRpYSBcCisgICAgJiBGaXJtd2FyZS1PTFBDIFwKKyAgICAmIEZpcm13YXJlLWF0aDlrLWh0YyBcCisgICAgJiBGaXJtd2FyZS1waGFuZncgXAorICAgICYgRmlybXdhcmUtcWF0IFwKKyAgICAmIEZpcm13YXJlLXFjb20gXAorICAgICYgRmlybXdhcmUtcWxhMTI4MCBcCisgICAgJiBGaXJtd2FyZS1xbGEyeHh4IFwKKyAgICAmIEZpcm13YXJlLXF1YWxjb21tQXRob3NfYXIzayBcCisgICAgJiBGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2F0aDEwayBcCisgICAgJiBGaXJtd2FyZS1yOGE3Nzl4X3VzYjMgXAorICAgICYgRmlybXdhcmUtcmFkZW9uIFwKKyAgICAmIEZpcm13YXJlLXJhbGlua19hX21lZGlhdGVrX2NvbXBhbnlfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtcmFsaW5rLWZpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtaW14LXNkbWFfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtc2lhbm8gXAorICAgICYgRmlybXdhcmUtdGRhNzcwNi1maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS10aS1jb25uZWN0aXZpdHkgXAorICAgICYgRmlybXdhcmUtdGkta2V5c3RvbmUgXAorICAgICYgRmlybXdhcmUtdWVhZ2xlLWF0bTQtZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtdmlhX3Z0NjY1NiBcCisgICAgJiBGaXJtd2FyZS13bDEyNTEgXAorICAgICYgRmlybXdhcmUteGM0MDAwIFwKKyAgICAmIEZpcm13YXJlLXhjNTAwMCBcCisgICAgJiBGaXJtd2FyZS14YzUwMDBjIFwKKyAgICAmIFdIRU5DRSBcCisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0UuQWJpbGlzO21kNT1iNWVlM2Y0MTA3ODBlNTY3MTFhZDQ4ZWFkYzIyYjhiYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmFkc3Bfc3N0O21kNT02MTVjNDViOTFhNWE0YTlmZTA0NmQ2YWI5YTJkZjcyOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmFnZXJlO21kNT1hZjAxMzNkZTZiNGE5YjI1MjJkZWZkNWYxODhhZmQzMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLmFtZGdwdTttZDU9ZDM1NzUyNGY1MDk5ZTJhM2RiM2MxODM4OTIxYzU5M2YgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5hbWQtdWNvZGU7bWQ1PTNjNTM5OWRjOTE0OGQ3ZjBlMWY0MWUzNGI2OWNmMTRmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuYW1sb2dpY192ZGVjO21kNT1kYzQ0ZjU5YmY2NGE4MTY0M2U1MDBhZDNmMzlhNDY4YSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmF0aGVyb3NfZmlybXdhcmU7bWQ1PTMwYTE0Yzc4MjNiZWVkYWM5ZmEzOWM2NGZkZDAxYTEzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuYXRtZWw7bWQ1PWFhNzRhYzBjNjA1OTVkZWU0ZDRlMjM5MTA3ZWE3N2EzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuYnJvYWRjb21fYmNtNDN4eDttZDU9MzE2MGMxNGRmNzIyODg5MWI4NjgwNjBlMTk1MWRmYmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5jYTAxMzI7bWQ1PTIwOWIzM2U2NmVlNWJlMDQ2MWYxM2QzMWRhMzkyMTk4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuY2FkZW5jZTttZDU9MDA5ZjQ2ODE2ZjY5NTZjZmI3NWVkZTEzZDNlMWNlZTAgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5jYXZpdW07bWQ1PWMzN2FhZmZiMWViZTU5MzliMjU4MGQwNzNhOTVkYWVhIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuY2hlbHNpb19maXJtd2FyZTttZDU9ODE5YWE4YzNmYTQ1M2YxYjI1OGVkOGQxNjhhOWQ5MDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5jdzEyMDA7bWQ1PWYwZjc3MDg2NGU3YTg0NDRhNWM1YWE5ZDEyYTNhN2VkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuY3lwcmVzczttZDU9NDhjZDk0MzZjNzYzYmY4NzM5NjFmOWVkN2I1YzE0N2IgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5kaWIwNzAwO21kNT1mNzQxMTgyNWM4YTU1NWExYTNlNWVhYjljYTc3MzQzMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmUxMDA7bWQ1PWVjMGY4NDEzNjc2NmRmMTU5YTNhZTZkMDJhY2RmNWE4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuZW5lX2Zpcm13YXJlO21kNT1lZDY3ZjBmNjJmOGY3OTgxMzBjMjk2NzIwYjdkMzkyMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmZ3X3NzdF8wZjI4O21kNT02MzUzOTMxYzk4OGFkNTI4MThhZTczM2FjNjFjZDI5MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmdvNzAwNzttZDU9YzBiYjlmNmFhYWJhNTViMDUyOWVlOWIzMGFhNjZiZWIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vR1BMLTI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuaGZpMV9maXJtd2FyZTttZDU9NWU3YjZlNTg2Y2U3MzM5ZDEyNjg5ZTQ5OTMxYWQ0NDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5pMjQwMG07bWQ1PTE0YjkwMTk2OWUyM2M0MTg4MTMyN2MwZDllNGI3ZDM2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuaTkxNTttZDU9MmIwYjJlMGQyMDk4NGFmZmQ0NDkwYmEyY2JhMDI1NzAgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5pYnRfZmlybXdhcmU7bWQ1PWZkYmVlMWRkZmUwZmI3YWIwYjJmY2Q2YjQ1NGEzNjZiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuaWNlO21kNT03NDJhYjQ4NTBmMjY3MDc5Mjk0MGU2ZDE1Yzk3NGIyZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLkludGNTU1QyO21kNT05ZTdkOGJlYTc3NjEyZDdjYzdkOWU5YjU0YjYyMzA2MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLml0OTEzeDttZDU9MWZiZjcyN2JmYjZhOTQ5ODEwYzRkYmZhN2U2Y2U0ZjggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5pd2x3aWZpX2Zpcm13YXJlO21kNT0zZmQ4NDI5MTFlYTkzYzI5Y2QzMjY3OWFhMjNlMWM4OCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmthd2V0aDttZDU9YjFkODc2ZTU2MmY0YjNiOGQzOTFhZDgzOTVkZmUwM2YgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5NYXJ2ZWxsO21kNT0yOGI2ZWQ4YmQwNGJhMTA1YWY2ZTRkY2Q2ZTk5Nzc3MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLm1lZGlhdGVrO21kNT03YzE5NzZiNjMyMTdkNzZjZTQ3ZDBhMTFkOGE3OWNmMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLm1veGE7bWQ1PTEwODY2MTQ3NjdkOGNjZjc0NGE5MjMyODlkM2Q0MjYxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UubXlyaTEwZ2VfZmlybXdhcmU7bWQ1PTQyZTMyZmI4OWY2Yjk1OWNhMjIyZTI1YWM4ZGY4ZmVkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuTmV0cm9ub21lO21kNT00YWRkMDhmMjU3NzA4NmQ0NDQ0Nzk5NjUwM2NkZGY1ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLm52aWRpYTttZDU9NDQyOGE5MjJlZDNiYTJjZWVjOTVmMDc2YTQ4OGNlMDcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5OWFA7bWQ1PTU4YmI4YmE2MzJjZDcyOWI5YmE2MTgzYmM2YWVkMzZmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuT0xQQzttZDU9NWI5MTdmOWQ4YzA2MTk5MWJlNGY2ZjVmMTA4NzE5Y2QgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5vcGVuLWF0aDlrLWh0Yy1maXJtd2FyZTttZDU9MWIzM2M5ZjRkMTdiYzRkNDU3YmRiMjM3MjcwNDY4MzcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5waGFuZnc7bWQ1PTk1NGRjZWMwZTA1MWY5NDA5ODEyYjU2MWVhNzQzYmZhIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucWF0X2Zpcm13YXJlO21kNT05ZTdkOGJlYTc3NjEyZDdjYzdkOWU5YjU0YjYyMzA2MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLnFjb207bWQ1PTE2NGUzMzYyYTUzOGViMTFkM2FjNTFlOGUxMzQyOTRiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucWxhMTI4MDttZDU9ZDY4OTU3MzJlNjIyZDk1MDYwOTA5MzIyM2EyYzRmNWQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5xbGEyeHh4O21kNT01MDU4NTVlOTIxYjc1ZjFiZTRhNDM3YWQ5Yjc5ZGZmMCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hcjNrO21kNT1iNWZlMjQ0ZmIyYjUzMjMxMWRlMTQ3MmEzYmMwNmRhNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hdGgxMGs7bWQ1PWNiNDJiNjg2ZWU1ZjVjYjg5MDI3NWU0MzIxZGI2MGE4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucjhhNzc5eF91c2IzO21kNT00YzE2NzE2NTYxNTMwMjVkNzA3NjEwNWE1ZGE3ZTQ5OCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLnJhZGVvbjttZDU9NjhlYzI4YmFjYjM2MTMyMDBiY2E0NGY0MDRjNjliMTYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlO21kNT03MjhmMWE4NWZkNTNmZDY3ZmE4ZDdhZmIwODBiYzQzNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnJhbGluay1maXJtd2FyZS50eHQ7bWQ1PWFiMmMyNjkyNzdjNDU0NzZmYjQ0OTY3MzkxMWEyZGZkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucnRsd2lmaV9maXJtd2FyZS50eHQ7bWQ1PTAwZDA2Y2ZkM2VkZGQ1YTI2OTg5NDhlYWQyYWQ1NGE1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0Uuc2RtYV9maXJtd2FyZTttZDU9NTFlOGMxOWVjYzIyNzBmNGI4ZWEzMDM0MWFkNjNjZTkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5zaWFubzttZDU9NDU1NmMxYmY4MzAwNjdmMTJjYTE1MWFkOTUzZWMyYTUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS50ZGE3NzA2LWZpcm13YXJlLnR4dDttZDU9ODM1OTk3Y2Y1ZTNjMTMxZDBkZGRkNjk1YzdkOTEwM2UgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS50aS1jb25uZWN0aXZpdHk7bWQ1PWM1ZTAyYmU2MzNmMTQ5OWMxMDlkMTY1MjUxNGQ4NWVjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UudGkta2V5c3RvbmU7bWQ1PTNhODYzMzVkMzI4NjRiMGJlZjk5NmJlZTI2Y2MwZjJjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UudWVhZ2xlLWF0bTQtZmlybXdhcmU7bWQ1PTRlZDdlYTZiNTA3Y2NjNTgzYjlkNTk0NDE3NzE0MTE4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UudmlhX3Z0NjY1NjttZDU9ZTQxNTk2OTRjYmE0MmQ0Mzc3YTkxMmU3OGE2ZTg1MGYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS53bDEyNTE7bWQ1PWFkM2Y4MTkyMmJiOWUxOTcwMTRiYjE4NzI4OWQzYjViIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UueGM0MDAwO21kNT0wZmY1MWQyZGM0OWZjZTA0ODE0YzkxNTUwODEwOTJmMCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnhjNTAwMDttZDU9MWUxNzBjMTMxNzUzMjNjMzJjN2Y0ZDA5OThkNTNmNjYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS54YzUwMDBjO21kNT0xMmIwMmVmYTMwNDlkYjY1ZDUyNGFlYjQxOGRkODdjYSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9XSEVOQ0U7bWQ1PWMyN2QwYzA2Y2Q1ZDM3NmQ4YWI1NTg2MGU2NWJhNGU0IFwKKyAgICAgICAgICAgICAgICAgICAgIgorCisjIFRoZXNlIGFyZSBub3QgY29tbW9uIGxpY2Vuc2VzLCBzZXQgTk9fR0VORVJJQ19MSUNFTlNFIGZvciB0aGVtCisjIHNvIHRoYXQgdGhlIGxpY2Vuc2UgZmlsZXMgd2lsbCBiZSBjb3BpZWQgZnJvbSBmZXRjaGVkIHNvdXJjZQorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLUFiaWxpc10gPSAiTElDRU5DRS5BYmlsaXMiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYWRzcF9zc3RdID0gIkxJQ0VOQ0UuYWRzcF9zc3QiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYWdlcmVdID0gIkxJQ0VOQ0UuYWdlcmUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYW1kZ3B1XSA9ICJMSUNFTlNFLmFtZGdwdSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1hbWQtdWNvZGVdID0gIkxJQ0VOU0UuYW1kLXVjb2RlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWFtbG9naWNfdmRlY10gPSAiTElDRU5TRS5hbWxvZ2ljX3ZkZWMiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZV0gPSAiTElDRU5DRS5hdGhlcm9zX2Zpcm13YXJlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWF0bWVsXSA9ICJMSUNFTlNFLmF0bWVsIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWJyb2FkY29tX2JjbTQzeHhdID0gIkxJQ0VOQ0UuYnJvYWRjb21fYmNtNDN4eCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jYTAxMzJdID0gIkxJQ0VOQ0UuY2EwMTMyIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWNhZGVuY2VdID0gIkxJQ0VOQ0UuY2FkZW5jZSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jYXZpdW1dID0gIkxJQ0VOQ0UuY2F2aXVtIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWNoZWxzaW9fZmlybXdhcmVdID0gIkxJQ0VOQ0UuY2hlbHNpb19maXJtd2FyZSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jdzEyMDBdID0gIkxJQ0VOQ0UuY3cxMjAwIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWN5cHJlc3NdID0gIkxJQ0VOQ0UuY3lwcmVzcyIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1kaWIwNzAwXSA9ICJMSUNFTlNFLmRpYjA3MDAiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtZTEwMF0gPSAiTElDRU5DRS5lMTAwIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWVuZV9maXJtd2FyZV0gPSAiTElDRU5DRS5lbmVfZmlybXdhcmUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtZndfc3N0XzBmMjhdID0gIkxJQ0VOQ0UuZndfc3N0XzBmMjgiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtZ283MDA3XSA9ICJMSUNFTkNFLmdvNzAwNyIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1HUEx2Ml0gPSAiR1BMLTIiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtaGZpMV9maXJtd2FyZV0gPSAiTElDRU5TRS5oZmkxX2Zpcm13YXJlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWkyNDAwbV0gPSAiTElDRU5DRS5pMjQwMG0iCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtaTkxNV0gPSAiTElDRU5TRS5pOTE1IgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWlidF9maXJtd2FyZV0gPSAiTElDRU5DRS5pYnRfZmlybXdhcmUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtSW50Y1NTVDJdID0gIkxJQ0VOQ0UuSW50Y1NTVDIiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtaXQ5MTN4XSA9ICJMSUNFTkNFLml0OTEzeCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlXSA9ICJMSUNFTkNFLml3bHdpZmlfZmlybXdhcmUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUta2F3ZXRoXSA9ICJMSUNFTkNFLmthd2V0aCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1NYXJ2ZWxsXSA9ICJMSUNFTkNFLk1hcnZlbGwiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtbWVkaWF0ZWtdID0gIkxJQ0VOQ0UubWVkaWF0ZWsiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtbW94YV0gPSAiTElDRU5DRS5tb3hhIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW15cmkxMGdlX2Zpcm13YXJlXSA9ICJMSUNFTkNFLm15cmkxMGdlX2Zpcm13YXJlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW5ldHJvbm9tZV0gPSAiTElDRU5DRS5OZXRyb25vbWUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtbnZpZGlhXSA9ICJMSUNFTkNFLm52aWRpYSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1PTFBDXSA9ICJMSUNFTkNFLk9MUEMiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYXRoOWstaHRjXSA9ICJMSUNFTkNFLm9wZW4tYXRoOWstaHRjLWZpcm13YXJlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXBoYW5md10gPSAiTElDRU5DRS5waGFuZnciCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcWF0XSA9ICJMSUNFTkNFLnFhdF9maXJtd2FyZSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1xY29tXSA9ICJMSUNFTlNFLnFjb20iCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcWxhMTI4MF0gPSAiTElDRU5DRS5xbGExMjgwIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXFsYTJ4eHhdID0gIkxJQ0VOQ0UucWxhMnh4eCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2FyM2tdID0gIkxJQ0VOU0UuUXVhbGNvbW1BdGhlcm9zX2FyM2siCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hdGgxMGtdID0gIkxJQ0VOU0UuUXVhbGNvbW1BdGhlcm9zX2F0aDEwayIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1yOGE3Nzl4X3VzYjNdID0gIkxJQ0VOQ0UucjhhNzc5eF91c2IzIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXJhZGVvbl0gPSAiTElDRU5TRS5yYWRlb24iCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcmFsaW5rX2FfbWVkaWF0ZWtfY29tcGFueV9maXJtd2FyZV0gPSAiTElDRU5DRS5yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXJhbGluay1maXJtd2FyZV0gPSAiTElDRU5DRS5yYWxpbmstZmlybXdhcmUudHh0IgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmVdID0gIkxJQ0VOQ0UucnRsd2lmaV9maXJtd2FyZS50eHQiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtc2lhbm9dID0gIkxJQ0VOQ0Uuc2lhbm8iCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtaW14LXNkbWFfZmlybXdhcmVdID0gIkxJQ0VOU0Uuc2RtYV9maXJtd2FyZSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS10ZGE3NzA2LWZpcm13YXJlXSA9ICJMSUNFTkNFLnRkYTc3MDYtZmlybXdhcmUudHh0IgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXRpLWNvbm5lY3Rpdml0eV0gPSAiTElDRU5DRS50aS1jb25uZWN0aXZpdHkiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtdGkta2V5c3RvbmVdID0gIkxJQ0VOQ0UudGkta2V5c3RvbmUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtdWVhZ2xlLWF0bTQtZmlybXdhcmVdID0gIkxJQ0VOQ0UudWVhZ2xlLWF0bTQtZmlybXdhcmUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtdmlhX3Z0NjY1Nl0gPSAiTElDRU5DRS52aWFfdnQ2NjU2IgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXdsMTI1MV0gPSAiTElDRU5DRS53bDEyNTEiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUteGM0MDAwXSA9ICJMSUNFTkNFLnhjNDAwMCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS14YzUwMDBdID0gIkxJQ0VOQ0UueGM1MDAwIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXhjNTAwMGNdID0gIkxJQ0VOQ0UueGM1MDAwYyIKK05PX0dFTkVSSUNfTElDRU5TRVtXSEVOQ0VdID0gIldIRU5DRSIKKworUEUgPSAiMSIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2tlcm5lbC9maXJtd2FyZS8ke0JQTn0tJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYWMyOTFiMjFmMzY2YWUyYTM3MTkzZWM4ZjE0YzM5ZDIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTMwZTgxMWIzNzM2YTcyYjg3NGFjMjdlMTA2NjJmNWU1NDA5YjFjYWRmOGFhYjdiYTg4ZThmOGJjODA4Mzk4NiIKKworaW5oZXJpdCBhbGxhcmNoCisKK0NMRUFOQlJPS0VOID0gIjEiCisKK2RvX2NvbXBpbGUoKSB7CisJOgorfQorCitkb19pbnN0YWxsKCkgeworICAgICAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nICdGSVJNV0FSRURJUj0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlJyBpbnN0YWxsCisgICAgICAgIGNwIEdQTC0yIExJQ0VOW0NTXUUuKiBXSEVOQ0UgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvCit9CisKKworUEFDS0FHRVMgPSsgIiR7UE59LXJhbGluay1saWNlbnNlICR7UE59LXJhbGluayBcCisgICAgICAgICAgICAgJHtQTn0tbXQ3NjAxdS1saWNlbnNlICR7UE59LW10NzYwMXUgXAorICAgICAgICAgICAgICR7UE59LXJhZGVvbi1saWNlbnNlICR7UE59LXJhZGVvbiBcCisgICAgICAgICAgICAgJHtQTn0tbWFydmVsbC1saWNlbnNlICR7UE59LXBjaWU4ODk3ICR7UE59LXBjaWU4OTk3IFwKKyAgICAgICAgICAgICAke1BOfS1zZDg2ODYgJHtQTn0tc2Q4Njg4ICR7UE59LXNkODc4NyAke1BOfS1zZDg3OTcgJHtQTn0tc2Q4ODAxICR7UE59LXNkODg4NyAke1BOfS1zZDg4OTcgXAorICAgICAgICAgICAgICR7UE59LXVzYjg5OTcgXAorICAgICAgICAgICAgICR7UE59LXRpLWNvbm5lY3Rpdml0eS1saWNlbnNlICR7UE59LXdsY29tbW9uICR7UE59LXdsMTJ4eCAke1BOfS13bDE4eHggXAorICAgICAgICAgICAgICR7UE59LXZ0NjY1Ni1saWNlbnNlICR7UE59LXZ0NjY1NiBcCisgICAgICAgICAgICAgJHtQTn0tcnRsLWxpY2Vuc2UgJHtQTn0tcnRsODE4OCAke1BOfS1ydGw4MTkyY3UgJHtQTn0tcnRsODE5MmNlICR7UE59LXJ0bDgxOTJzdSAke1BOfS1ydGw4NzIzICR7UE59LXJ0bDg4MjEgXAorICAgICAgICAgICAgICR7UE59LXJ0bDgxNjggXAorICAgICAgICAgICAgICR7UE59LWN5cHJlc3MtbGljZW5zZSBcCisgICAgICAgICAgICAgJHtQTn0tYnJvYWRjb20tbGljZW5zZSBcCisgICAgICAgICAgICAgJHtQTn0tYmNtLTBiYjQtMDMwNiBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDMxNDMgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzMjM2YiBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDMyNDFiMCBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDMyNDFiNCBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDMyNDFiNSBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDMyNDJhIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzI5IFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzI5LWZ1bGxtYWMgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzMzAgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzMzQgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzMzQwIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzM1IFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzM2MiBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDMzOSBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDM0MzAgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzNDMwYTAgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzNDU1IFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzUwIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzUwYzIgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzNTQgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzNTYgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzNTYtcGNpZSBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDM1NjkgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzNTcwIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzU4IFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzYwMiBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDM2NmIgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzNjZjIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzcxIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzczIFwKKyAgICAgICAgICAgICAke1BOfS1iY200M3h4IFwKKyAgICAgICAgICAgICAke1BOfS1iY200M3h4LWhkciBcCisgICAgICAgICAgICAgJHtQTn0tYXRoZXJvcy1saWNlbnNlICR7UE59LWFyOTE3MCAke1BOfS1hdGg2ayAke1BOfS1hdGg5ayBcCisgICAgICAgICAgICAgJHtQTn0tZ3BsdjItbGljZW5zZSAke1BOfS1jYXJsOTE3MCBcCisgICAgICAgICAgICAgJHtQTn0tYXIzay1saWNlbnNlICR7UE59LWFyM2sgJHtQTn0tYXRoMTBrLWxpY2Vuc2UgJHtQTn0tYXRoMTBrICR7UE59LXFjYSBcCisgICAgICAgICAgICAgXAorICAgICAgICAgICAgICR7UE59LWlteC1zZG1hLWxpY2Vuc2UgJHtQTn0taW14LXNkbWEtaW14NnEgJHtQTn0taW14LXNkbWEtaW14N2QgXAorICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLWxpY2Vuc2UgJHtQTn0taXdsd2lmaSBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS0xMzUtNiBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS0zMTYwLTcgJHtQTn0taXdsd2lmaS0zMTYwLTggJHtQTn0taXdsd2lmaS0zMTYwLTkgXAorICAgICAgICAgICAgICR7UE59LWl3bHdpZmktMzE2MC0xMCAke1BOfS1pd2x3aWZpLTMxNjAtMTIgJHtQTn0taXdsd2lmaS0zMTYwLTEzIFwKKyAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTMxNjAtMTYgJHtQTn0taXdsd2lmaS0zMTYwLTE3IFwKKyAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTYwMDAtNCAke1BOfS1pd2x3aWZpLTYwMDBnMmEtNSAke1BOfS1pd2x3aWZpLTYwMDBnMmEtNiBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS02MDAwZzJiLTUgJHtQTn0taXdsd2lmaS02MDAwZzJiLTYgXAorICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNjA1MC00ICR7UE59LWl3bHdpZmktNjA1MC01IFwKKyAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTcyNjAgXAorICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNzI2NSBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS03MjY1ZCAke1BOfS1pd2x3aWZpLTgwMDBjICR7UE59LWl3bHdpZmktODI2NSBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS05MDAwIFwKKyAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLW1pc2MgXAorICAgICAgICAgICAgICR7UE59LWlidC1saWNlbnNlICR7UE59LWlidCAke1BOfS1pYnQtbWlzYyBcCisgICAgICAgICAgICAgJHtQTn0taWJ0LTExLTUgJHtQTn0taWJ0LTEyLTE2ICR7UE59LWlidC1ody0zNy03ICR7UE59LWlidC1ody0zNy04IFwKKyAgICAgICAgICAgICAke1BOfS1pYnQtMTcgXAorICAgICAgICAgICAgICR7UE59LWk5MTUtbGljZW5zZSAke1BOfS1pOTE1IFwKKyAgICAgICAgICAgICAke1BOfS1hZHNwLXNzdC1saWNlbnNlICR7UE59LWFkc3Atc3N0IFwKKyAgICAgICAgICAgICAke1BOfS1ibngyLW1pcHMgXAorICAgICAgICAgICAgICR7UE59LWxpcXVpZGlvIFwKKyAgICAgICAgICAgICAke1BOfS1uZXRyb25vbWUtbGljZW5zZSAke1BOfS1uZXRyb25vbWUgXAorICAgICAgICAgICAgICR7UE59LXFhdCAke1BOfS1xYXQtbGljZW5zZSBcCisgICAgICAgICAgICAgJHtQTn0tcWNvbS1saWNlbnNlIFwKKyAgICAgICAgICAgICAke1BOfS1xY29tLXZlbnVzLTEuOCAke1BOfS1xY29tLXZlbnVzLTQuMiBcCisgICAgICAgICAgICAgJHtQTn0tcWNvbS1hZHJlbm8tYTN4eCAke1BOfS1xY29tLWFkcmVuby1hNTMwIFwKKyAgICAgICAgICAgICAke1BOfS1xY29tLXNkbTg0NS1hdWRpbyAke1BOfS1xY29tLXNkbTg0NS1jb21wdXRlICR7UE59LXFjb20tc2RtODQ1LW1vZGVtIFwKKyAgICAgICAgICAgICAke1BOfS13aGVuY2UtbGljZW5zZSBcCisgICAgICAgICAgICAgJHtQTn0tbGljZW5zZSBcCisgICAgICAgICAgICAgIgorCisjIEZvciBhdGhlcm9zCitMSUNFTlNFXyR7UE59LWFyOTE3MCA9ICJGaXJtd2FyZS1hdGhlcm9zX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1hdGg2ayA9ICJGaXJtd2FyZS1hdGhlcm9zX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1hdGg5ayA9ICJGaXJtd2FyZS1hdGhlcm9zX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1hdGhlcm9zLWxpY2Vuc2UgPSAiRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZSIKKworRklMRVNfJHtQTn0tYXRoZXJvcy1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5hdGhlcm9zX2Zpcm13YXJlIgorRklMRVNfJHtQTn0tYXI5MTcwID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXI5MTcwKi5mdyBcCisiCitGSUxFU18ke1BOfS1hdGg2ayA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2F0aDZrIFwKKyIKK0ZJTEVTXyR7UE59LWF0aDlrID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXI5MjcxLmZ3IFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hcjcwMTAqLmZ3IFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9odGNfOTI3MS5mdyBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaHRjXzcwMTAuZncgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2F0aDlrX2h0Yy9odGNfNzAxMC0xLjQuMC5mdyBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXRoOWtfaHRjL2h0Y185MjcxLTEuNC4wLmZ3IFwKKyIKKworUkRFUEVORFNfJHtQTn0tYXI5MTcwICs9ICIke1BOfS1hdGhlcm9zLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1hdGg2ayArPSAiJHtQTn0tYXRoZXJvcy1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tYXRoOWsgKz0gIiR7UE59LWF0aGVyb3MtbGljZW5zZSIKKworIyBGb3IgY2FybDkxNzAKK0xJQ0VOU0VfJHtQTn0tY2FybDkxNzAgPSAiRmlybXdhcmUtR1BMdjIiCitMSUNFTlNFXyR7UE59LWdwbHYyLWxpY2Vuc2UgPSAiRmlybXdhcmUtR1BMdjIiCisKK0ZJTEVTXyR7UE59LWdwbHYyLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9HUEwtMiIKK0ZJTEVTXyR7UE59LWNhcmw5MTcwID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvY2FybDkxNzAqLmZ3IFwKKyIKKworUkRFUEVORFNfJHtQTn0tY2FybDkxNzAgKz0gIiR7UE59LWdwbHYyLWxpY2Vuc2UiCisKKyMgRm9yIFF1YWxDb21tQXRob3MKK0xJQ0VOU0VfJHtQTn0tYXIzayA9ICJGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2FyM2siCitMSUNFTlNFXyR7UE59LWFyM2stbGljZW5zZSA9ICJGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2FyM2siCitMSUNFTlNFXyR7UE59LWF0aDEwayA9ICJGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2F0aDEwayIKK0xJQ0VOU0VfJHtQTn0tYXRoMTBrLWxpY2Vuc2UgPSAiRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hdGgxMGsiCitMSUNFTlNFXyR7UE59LXFjYSA9ICJGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2F0aDEwayIKKworRklMRVNfJHtQTn0tYXIzay1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5TRS5RdWFsY29tbUF0aGVyb3NfYXIzayIKK0ZJTEVTXyR7UE59LWFyM2sgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hcjNrIFwKKyIKKworRklMRVNfJHtQTn0tYXRoMTBrLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hdGgxMGsiCitGSUxFU18ke1BOfS1hdGgxMGsgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hdGgxMGsgXAorIgorCitGSUxFU18ke1BOfS1xY2EgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY2EgXAorIgorCitSREVQRU5EU18ke1BOfS1hcjNrICs9ICIke1BOfS1hcjNrLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1hdGgxMGsgKz0gIiR7UE59LWF0aDEway1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcWNhICs9ICIke1BOfS1hdGgxMGstbGljZW5zZSIKKworIyBGb3IgcmFsaW5rCitMSUNFTlNFXyR7UE59LXJhbGluayA9ICJGaXJtd2FyZS1yYWxpbmstZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LXJhbGluay1saWNlbnNlID0gIkZpcm13YXJlLXJhbGluay1maXJtd2FyZSIKKworRklMRVNfJHtQTn0tcmFsaW5rLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLnJhbGluay1maXJtd2FyZS50eHQiCitGSUxFU18ke1BOfS1yYWxpbmsgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ydCouYmluIFwKKyIKKworUkRFUEVORFNfJHtQTn0tcmFsaW5rICs9ICIke1BOfS1yYWxpbmstbGljZW5zZSIKKworIyBGb3IgbWVkaWF0ZWsgTVQ3NjAxVQorTElDRU5TRV8ke1BOfS1tdDc2MDF1ID0gIkZpcm13YXJlLXJhbGlua19hX21lZGlhdGVrX2NvbXBhbnlfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LW10NzYwMXUtbGljZW5zZSA9ICJGaXJtd2FyZS1yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIgorCitGSUxFU18ke1BOfS1tdDc2MDF1LWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLnJhbGlua19hX21lZGlhdGVrX2NvbXBhbnlfZmlybXdhcmUiCitGSUxFU18ke1BOfS1tdDc2MDF1ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXQ3NjAxdS5iaW4gXAorIgorCitSREVQRU5EU18ke1BOfS1tdDc2MDF1ICs9ICIke1BOfS1tdDc2MDF1LWxpY2Vuc2UiCisKKyMgRm9yIHJhZGVvbgorTElDRU5TRV8ke1BOfS1yYWRlb24gPSAiRmlybXdhcmUtcmFkZW9uIgorTElDRU5TRV8ke1BOfS1yYWRlb24tbGljZW5zZSA9ICJGaXJtd2FyZS1yYWRlb24iCisKK0ZJTEVTXyR7UE59LXJhZGVvbi1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5TRS5yYWRlb24iCitGSUxFU18ke1BOfS1yYWRlb24gPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9yYWRlb24gXAorIgorCitSREVQRU5EU18ke1BOfS1yYWRlb24gKz0gIiR7UE59LXJhZGVvbi1saWNlbnNlIgorCisjIEZvciBtYXJ2ZWxsCitMSUNFTlNFXyR7UE59LXBjaWU4ODk3ID0gIkZpcm13YXJlLU1hcnZlbGwiCitMSUNFTlNFXyR7UE59LXBjaWU4OTk3ID0gIkZpcm13YXJlLU1hcnZlbGwiCitMSUNFTlNFXyR7UE59LXNkODY4NiA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgorTElDRU5TRV8ke1BOfS1zZDg2ODggPSAiRmlybXdhcmUtTWFydmVsbCIKK0xJQ0VOU0VfJHtQTn0tc2Q4Nzg3ID0gIkZpcm13YXJlLU1hcnZlbGwiCitMSUNFTlNFXyR7UE59LXNkODc5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgorTElDRU5TRV8ke1BOfS1zZDg4MDEgPSAiRmlybXdhcmUtTWFydmVsbCIKK0xJQ0VOU0VfJHtQTn0tc2Q4ODg3ID0gIkZpcm13YXJlLU1hcnZlbGwiCitMSUNFTlNFXyR7UE59LXNkODg5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgorTElDRU5TRV8ke1BOfS11c2I4OTk3ID0gIkZpcm13YXJlLU1hcnZlbGwiCitMSUNFTlNFXyR7UE59LW1hcnZlbGwtbGljZW5zZSA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgorCitGSUxFU18ke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLk1hcnZlbGwiCitGSUxFU18ke1BOfS1wY2llODg5NyA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvcGNpZTg4OTdfdWFwc3RhLmJpbiBcCisiCitGSUxFU18ke1BOfS1wY2llODk5NyA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvcGNpZTg5OTdfd2xhbl92NC5iaW4gXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvcGNpZXVhcnQ4OTk3X2NvbWJvX3Y0LmJpbiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9wY2lldXNiODk5N19jb21ib192NC5iaW4gXAorIgorRklMRVNfJHtQTn0tc2Q4Njg2ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbGliZXJ0YXMvc2Q4Njg2X3Y5KiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvc2Q4Njg2KiBcCisiCitGSUxFU18ke1BOfS1zZDg2ODggPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9saWJlcnRhcy9zZDg2ODgqIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3NkODY4OCogXAorIgorRklMRVNfJHtQTn0tc2Q4Nzg3ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9zZDg3ODdfdWFwc3RhLmJpbiBcCisiCitGSUxFU18ke1BOfS1zZDg3OTcgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3NkODc5N191YXBzdGEuYmluIFwKKyIKK0ZJTEVTXyR7UE59LXNkODgwMSA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvc2Q4ODAxX3VhcHN0YS5iaW4gXAorIgorRklMRVNfJHtQTn0tc2Q4ODg3ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9zZDg4ODdfdWFwc3RhLmJpbiBcCisiCitGSUxFU18ke1BOfS1zZDg4OTcgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3NkODg5N191YXBzdGEuYmluIFwKKyIKK0ZJTEVTXyR7UE59LXVzYjg5OTcgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3VzYnVzYjg5OTdfY29tYm9fdjQuYmluIFwKKyIKKworUkRFUEVORFNfJHtQTn0tc2Q4Njg2ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1zZDg2ODggKz0gIiR7UE59LW1hcnZlbGwtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXNkODc4NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tc2Q4Nzk3ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1zZDg4MDEgKz0gIiR7UE59LW1hcnZlbGwtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXNkODg4NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tc2Q4ODk3ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS11c2I4OTk3ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCisKKyMgRm9yIG5ldHJvbm9tZQorTElDRU5TRV8ke1BOfS1uZXRyb25vbWUgPSAiRmlybXdhcmUtbmV0cm9ub21lIgorCitGSUxFU18ke1BOfS1uZXRyb25vbWUtbGljZW5zZSA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuTmV0cm9ub21lIFwKKyIKK0ZJTEVTXyR7UE59LW5ldHJvbm9tZSA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL25ldHJvbm9tZS9uaWNfQU1EQTAwODEqLm5mZncgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL25ldHJvbm9tZS9uaWNfQU1EQTAwOTYqLm5mZncgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL25ldHJvbm9tZS9uaWNfQU1EQTAwOTcqLm5mZncgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL25ldHJvbm9tZS9uaWNfQU1EQTAwOTkqLm5mZncgXAorIgorCitSREVQRU5EU18ke1BOfS1uZXRyb25vbWUgKz0gIiR7UE59LW5ldHJvbm9tZS1saWNlbnNlIgorCisjIEZvciBydGwKK0xJQ0VOU0VfJHtQTn0tcnRsODE4OCA9ICJGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1ydGw4MTkyY3UgPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0tcnRsODE5MmNlID0gIkZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LXJ0bDgxOTJzdSA9ICJGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1ydGw4NzIzID0gIkZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LXJ0bDg4MjEgPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0tcnRsLWxpY2Vuc2UgPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0tcnRsODE2OCA9ICJXSEVOQ0UiCisKK0ZJTEVTXyR7UE59LXJ0bC1saWNlbnNlID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5ydGx3aWZpX2Zpcm13YXJlLnR4dCBcCisiCitGSUxFU18ke1BOfS1ydGw4MTg4ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcnRsd2lmaS9ydGw4MTg4Ki5iaW4gXAorIgorRklMRVNfJHtQTn0tcnRsODE5MmN1ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcnRsd2lmaS9ydGw4MTkyY3VmdyouYmluIFwKKyIKK0ZJTEVTXyR7UE59LXJ0bDgxOTJjZSA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bHdpZmkvcnRsODE5MmNmdyouYmluIFwKKyIKK0ZJTEVTXyR7UE59LXJ0bDgxOTJzdSA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bHdpZmkvcnRsODcxMnUuYmluIFwKKyIKK0ZJTEVTXyR7UE59LXJ0bDg3MjMgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ydGx3aWZpL3J0bDg3MjMqLmJpbiBcCisiCitGSUxFU18ke1BOfS1ydGw4ODIxID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcnRsd2lmaS9ydGw4ODIxKi5iaW4gXAorIgorRklMRVNfJHtQTn0tcnRsODE2OCA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bF9uaWMvcnRsODE2OCouZncgXAorIgorCitSREVQRU5EU18ke1BOfS1ydGw4MTg4ICs9ICIke1BOfS1ydGwtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXJ0bDgxOTJjZSArPSAiJHtQTn0tcnRsLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1ydGw4MTkyY3UgKz0gIiR7UE59LXJ0bC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcnRsODE5MnN1ID0gIiR7UE59LXJ0bC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcnRsODcyMyArPSAiJHtQTn0tcnRsLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1ydGw4ODIxICs9ICIke1BOfS1ydGwtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXJ0bDgxNjggKz0gIiR7UE59LXdoZW5jZS1saWNlbnNlIgorCisjIEZvciB0aS1jb25uZWN0aXZpdHkKK0xJQ0VOU0VfJHtQTn0td2xjb21tb24gPSAiRmlybXdhcmUtdGktY29ubmVjdGl2aXR5IgorTElDRU5TRV8ke1BOfS13bDEyeHggPSAiRmlybXdhcmUtdGktY29ubmVjdGl2aXR5IgorTElDRU5TRV8ke1BOfS13bDE4eHggPSAiRmlybXdhcmUtdGktY29ubmVjdGl2aXR5IgorTElDRU5TRV8ke1BOfS10aS1jb25uZWN0aXZpdHktbGljZW5zZSA9ICJGaXJtd2FyZS10aS1jb25uZWN0aXZpdHkiCisKK0ZJTEVTXyR7UE59LXRpLWNvbm5lY3Rpdml0eS1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS50aS1jb25uZWN0aXZpdHkiCisjIHdsMTh4eCBvcHRpb25hbGx5IG5lZWRzIHdsMTI3MS1udnMuYmluICh3aGljaCBpdHNlbGYgaXMgYSBzeW1saW5rIHRvCisjIHdsMTI3eC1udnMuYmluKSAtIHNlZSBsaW51eC9kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvc2Rpby5jCisjIGFuZCBkcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvc3BpLmMuCisjIFdoaWxlIHRoZXkncmUgb3B0aW9uYWwgYW5kIGFjdHVhbGx5IG9ubHkgdXNlZCB0byBvdmVycmlkZSB0aGUgTUFDCisjIGFkZHJlc3Mgb24gd2wxOHh4LCBkcml2ZXIgbG9hZGluZyB3aWxsIGRlbGF5IChieSB1ZGV2IHRpbW91dCAtIDYwcykKKyMgaWYgbm90IHRoZXJlLiBTbyBsZXQncyBtYWtlIGl0IGF2YWlsYWJsZSBhbHdheXMuIEJlY2F1c2UgaXQncyBhCisjIHN5bWxpbmssIGJvdGggbmVlZCB0byBnbyB0byB3bGNvbW1vbi4KK0ZJTEVTXyR7UE59LXdsY29tbW9uID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvdGktY29ubmVjdGl2aXR5L1RJKiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvdGktY29ubmVjdGl2aXR5L3dsMTI3eC1udnMuYmluIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS90aS1jb25uZWN0aXZpdHkvd2wxMjcxLW52cy5iaW4gXAorIgorRklMRVNfJHtQTn0td2wxMnh4ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvdGktY29ubmVjdGl2aXR5L3dsMTIqIFwKKyIKK0ZJTEVTXyR7UE59LXdsMTh4eCA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3RpLWNvbm5lY3Rpdml0eS93bDE4KiBcCisiCisKK1JERVBFTkRTXyR7UE59LXdsMTJ4eCA9ICIke1BOfS10aS1jb25uZWN0aXZpdHktbGljZW5zZSAke1BOfS13bGNvbW1vbiIKK1JERVBFTkRTXyR7UE59LXdsMTh4eCA9ICIke1BOfS10aS1jb25uZWN0aXZpdHktbGljZW5zZSAke1BOfS13bGNvbW1vbiIKKworIyBGb3IgdnQ2NjU2CitMSUNFTlNFXyR7UE59LXZ0NjY1NiA9ICJGaXJtd2FyZS12aWFfdnQ2NjU2IgorTElDRU5TRV8ke1BOfS12dDY2NTYtbGljZW5zZSA9ICJGaXJtd2FyZS12aWFfdnQ2NjU2IgorCitGSUxFU18ke1BOfS12dDY2NTYtbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UudmlhX3Z0NjY1NiIKK0ZJTEVTXyR7UE59LXZ0NjY1NiA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3ZudHd1c2IuZncgXAorIgorCitSREVQRU5EU18ke1BOfS12dDY2NTYgPSAiJHtQTn0tdnQ2NjU2LWxpY2Vuc2UiCisKKyMgRm9yIGJyb2FkY29tCisKKyMgZm9yIGkgaW4gYGdyZXAgYnJjbSBXSEVOQ0UgIHwgZ3JlcCBeRmlsZSB8IHNlZCAncy9GaWxlOiBicmNtLi8vZydgOyBkbyBwa2c9YGVjaG8gJGkgfCBzZWQgJ3MvLVtzcDQwXS4qLy9nOyBzL1wuYmluLy9nOyBzL2JyY21mbWFjL2JjbS9nOyBzL19oZHIvLWhkci9nOyBzL0JDTS9iY20tMGJiNC0wMzA2L2cnYDsgZWNobyAtZSAiICAgICAgICAgICAgIFwke1BOfS0kcGtnIFxcIjsgZG9uZSAgfCBzb3J0IC11CisKK0xJQ0VOU0VfJHtQTn0tYnJvYWRjb20tbGljZW5zZSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorRklMRVNfJHtQTn0tYnJvYWRjb20tbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuYnJvYWRjb21fYmNtNDN4eCIKKworIyBmb3IgaSBpbiBgZ3JlcCBicmNtIFdIRU5DRSAgfCBncmVwIF5GaWxlIHwgc2VkICdzL0ZpbGU6IGJyY20uLy9nJ2A7IGRvIHBrZz1gZWNobyAkaSB8IHNlZCAncy8tW3NwNDBdLiovL2c7IHMvXC5iaW4vL2c7IHMvYnJjbWZtYWMvYmNtL2c7IHMvX2hkci8taGRyL2c7IHMvQkNNL2JjbS0wYmI0LTAzMDYvZydgOyBlY2hvICIkaSAtICRwa2ciOyBlY2hvIC1lICJGSUxFU19cJHtQTn0tJHBrZyA9IFwiXCR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS8kaVwiIjsgZG9uZSB8IGdyZXAgXkZJTEVTCisKK0ZJTEVTXyR7UE59LWJjbTQzeHggPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JjbTQzeHgtMC5mdyIKK0ZJTEVTXyR7UE59LWJjbTQzeHgtaGRyID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9iY200M3h4X2hkci0wLmZ3IgorRklMRVNfJHtQTn0tYmNtNDMyOS1mdWxsbWFjID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9iY200MzI5LWZ1bGxtYWMtNC5iaW4iCitGSUxFU18ke1BOfS1iY200MzIzNmIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMyMzZiLmJpbiIKK0ZJTEVTXyR7UE59LWJjbTQzMjkgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMyOS1zZGlvLmJpbiIKK0ZJTEVTXyR7UE59LWJjbTQzMzAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMzMC1zZGlvLioiCitGSUxFU18ke1BOfS1iY200MzM0ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMzQtc2Rpby5iaW4iCitGSUxFU18ke1BOfS1iY200MzM1ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMzUtc2Rpby5iaW4iCitGSUxFU18ke1BOfS1iY200MzM5ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMzktc2Rpby5iaW4iCitGSUxFU18ke1BOfS1iY200MzI0MWIwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMjQxYjAtc2Rpby5iaW4iCitGSUxFU18ke1BOfS1iY200MzI0MWI0ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMjQxYjQtc2Rpby5iaW4iCitGSUxFU18ke1BOfS1iY200MzI0MWI1ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMjQxYjUtc2Rpby5iaW4iCitGSUxFU18ke1BOfS1iY200MzI0MmEgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMyNDJhLmJpbiIKK0ZJTEVTXyR7UE59LWJjbTQzMTQzID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMTQzLmJpbiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMTQzLXNkaW8uYmluIFwKKyIKK0ZJTEVTXyR7UE59LWJjbTQzNDMwYTAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM0MzBhMC1zZGlvLioiCitGSUxFU18ke1BOfS1iY200MzQ1NSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzQ1NS1zZGlvLioiCitGSUxFU18ke1BOfS1iY200MzUwYzIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM1MGMyLXBjaWUuYmluIgorRklMRVNfJHtQTn0tYmNtNDM1MCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzUwLXBjaWUuYmluIgorRklMRVNfJHtQTn0tYmNtNDM1NiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzU2LXNkaW8uYmluIgorRklMRVNfJHtQTn0tYmNtNDM1NjkgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM1NjkuYmluIgorRklMRVNfJHtQTn0tYmNtNDM1NzAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM1NzAtcGNpZS5iaW4iCitGSUxFU18ke1BOfS1iY200MzU4ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTgtcGNpZS5iaW4iCitGSUxFU18ke1BOfS1iY200MzYwMiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzYwMi1wY2llLmJpbiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNjAyLXBjaWUuYXAuYmluIFwKKyIKK0ZJTEVTXyR7UE59LWJjbTQzNjZiID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNjZiLXBjaWUuYmluIgorRklMRVNfJHtQTn0tYmNtNDM2NmMgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM2NmMtcGNpZS5iaW4iCitGSUxFU18ke1BOfS1iY200MzcxID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNzEtcGNpZS5iaW4iCisKKyMgZm9yIGkgaW4gYGdyZXAgYnJjbSBXSEVOQ0UgIHwgZ3JlcCBeRmlsZSB8IHNlZCAncy9GaWxlOiBicmNtLi8vZydgOyBkbyBwa2c9YGVjaG8gJGkgfCBzZWQgJ3MvLVtzcDQwXS4qLy9nOyBzL1wuYmluLy9nOyBzL2JyY21mbWFjL2JjbS9nOyBzL19oZHIvLWhkci9nOyBzL0JDTS9iY20tMGJiNC0wMzA2L2cnYDsgZWNobyAtZSAiTElDRU5TRV9cJHtQTn0tJHBrZyA9IFwiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eFwiXG5SREVQRU5EU19cJHtQTn0tJHBrZyArPSBcIlwke1BOfS1icm9hZGNvbS1saWNlbnNlXCIiOyBkb25lCisjIEN1cnJlbnRseSAxc3Qgb25lIGFuZCBsYXN0IDYgaGF2ZSBjeXByZXNzIExJQ0VOU0UKKworTElDRU5TRV8ke1BOfS1iY200M3h4ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200M3h4ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200M3h4LWhkciA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDN4eC1oZHIgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMjktZnVsbG1hYyA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMyOS1mdWxsbWFjICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzIzNmIgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzMjM2YiArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMyOSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMyOSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMzMCA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMzMCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMzNCA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMzNCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMzNSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMzNSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMzOSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMzOSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMyNDFiMCA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMyNDFiMCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMyNDFiNCA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMyNDFiNCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMyNDFiNSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMyNDFiNSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMyNDJhID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200MzI0MmEgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMTQzID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200MzE0MyArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDM0MzBhMCA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDM0MzBhMCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDM0NTUgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNDU1ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzUwYzIgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNTBjMiArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDM1MCA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDM1MCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDM1NiA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDM1NiArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDM1NjkgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNTY5ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzU3MCA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDM1NzAgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNTggPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNTggKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNjAyID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200MzYwMiArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDM2NmIgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNjZiICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzY2YyA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDM2NmMgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNzEgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNzEgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCisKKyMgRm9yIGJyb2FkY29tIGN5cHJlc3MKKworTElDRU5TRV8ke1BOfS1jeXByZXNzLWxpY2Vuc2UgPSAiRmlybXdhcmUtY3lwcmVzcyIKK0ZJTEVTXyR7UE59LWN5cHJlc3MtbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuY3lwcmVzcyIKKworRklMRVNfJHtQTn0tYmNtLTBiYjQtMDMwNiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vQkNNLTBiYjQtMDMwNi5oY2QiCitGSUxFU18ke1BOfS1iY200MzM0MCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzM0MC1zZGlvLioiCitGSUxFU18ke1BOfS1iY200MzM2MiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzM2Mi1zZGlvLioiCitGSUxFU18ke1BOfS1iY200MzQzMCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzQzMC1zZGlvLioiCitGSUxFU18ke1BOfS1iY200MzU0ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTQtc2Rpby5iaW4iCitGSUxFU18ke1BOfS1iY200MzU2LXBjaWUgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM1Ni1wY2llLioiCitGSUxFU18ke1BOfS1iY200MzczID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNzMtc2Rpby5iaW4gXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzczLmJpbiBcCisiCisKK0xJQ0VOU0VfJHtQTn0tYmNtLTBiYjQtMDMwNiA9ICJGaXJtd2FyZS1jeXByZXNzIgorUkRFUEVORFNfJHtQTn0tYmNtLTBiYjQtMDMwNiArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzM0MCA9ICJGaXJtd2FyZS1jeXByZXNzIgorUkRFUEVORFNfJHtQTn0tYmNtNDMzNDAgKz0gIiR7UE59LWN5cHJlc3MtbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMzNjIgPSAiRmlybXdhcmUtY3lwcmVzcyIKK1JERVBFTkRTXyR7UE59LWJjbTQzMzYyICs9ICIke1BOfS1jeXByZXNzLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNDMwID0gIkZpcm13YXJlLWN5cHJlc3MiCitSREVQRU5EU18ke1BOfS1iY200MzQzMCArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzU0ID0gIkZpcm13YXJlLWN5cHJlc3MiCitSREVQRU5EU18ke1BOfS1iY200MzU0ICs9ICIke1BOfS1jeXByZXNzLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNTYtcGNpZSA9ICJGaXJtd2FyZS1jeXByZXNzIgorUkRFUEVORFNfJHtQTn0tYmNtNDM1Ni1wY2llICs9ICIke1BOfS1jeXByZXNzLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNzMgPSAiRmlybXdhcmUtY3lwcmVzcyIKK1JERVBFTkRTXyR7UE59LWJjbTQzNzMgKz0gIiR7UE59LWN5cHJlc3MtbGljZW5zZSIKKworIyBGb3IgQnJvYWRjb20gYm54Mi1taXBzCisjCisjIHdoaWNoIGlzIGEgc2VwYXJhdGUgY2FzZSB0byB0aGUgb3RoZXIgQnJvYWRjb20gZmlybXdhcmVzIHNpbmNlIGl0cworIyBsaWNlbnNlIGlzIGNvbnRhaW5lZCBpbiB0aGUgc2hhcmVkIFdIRU5DRSBmaWxlLgorCitMSUNFTlNFXyR7UE59LWJueDItbWlwcyA9ICJXSEVOQ0UiCitMSUNFTlNFXyR7UE59LXdoZW5jZS1saWNlbnNlID0gIldIRU5DRSIKKworRklMRVNfJHtQTn0tYm54Mi1taXBzID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYm54Mi9ibngyLW1pcHMtMDktNi4yLjFiLmZ3IgorRklMRVNfJHtQTn0td2hlbmNlLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9XSEVOQ0UiCisKK1JERVBFTkRTXyR7UE59LWJueDItbWlwcyArPSAiJHtQTn0td2hlbmNlLWxpY2Vuc2UiCisKKyMgRm9yIGlteC1zZG1hCitMSUNFTlNFXyR7UE59LWlteC1zZG1hLWlteDZxICAgICAgID0gIkZpcm13YXJlLWlteC1zZG1hX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pbXgtc2RtYS1pbXg3ZCAgICAgICA9ICJGaXJtd2FyZS1pbXgtc2RtYV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taW14LXNkbWEtbGljZW5zZSAgICAgICA9ICJGaXJtd2FyZS1pbXgtc2RtYV9maXJtd2FyZSIKKworRklMRVNfJHtQTn0taW14LXNkbWEtaW14NnEgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbXgvc2RtYS9zZG1hLWlteDZxLmJpbiIKKworUlBST1ZJREVTXyR7UE59LWlteC1zZG1hLWlteDZxID0gImZpcm13YXJlLWlteC1zZG1hLWlteDZxIgorUlJFUExBQ0VTXyR7UE59LWlteC1zZG1hLWlteDZxID0gImZpcm13YXJlLWlteC1zZG1hLWlteDZxIgorUkNPTkZMSUNUU18ke1BOfS1pbXgtc2RtYS1pbXg2cSA9ICJmaXJtd2FyZS1pbXgtc2RtYS1pbXg2cSIKKworRklMRVNfJHtQTn0taW14LXNkbWEtaW14N2QgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbXgvc2RtYS9zZG1hLWlteDdkLmJpbiIKKworRklMRVNfJHtQTn0taW14LXNkbWEtbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOU0Uuc2RtYV9maXJtd2FyZSIKKworUkRFUEVORFNfJHtQTn0taW14LXNkbWEtaW14NnEgKz0gIiR7UE59LWlteC1zZG1hLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1pbXgtc2RtYS1pbXg3ZCArPSAiJHtQTn0taW14LXNkbWEtbGljZW5zZSIKKworIyBGb3IgaXdsd2lmaQorTElDRU5TRV8ke1BOfS1pd2x3aWZpICAgICAgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTEzNS02ICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTMxNjAtNyAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTMxNjAtOCAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTMxNjAtOSAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTMxNjAtMTAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTMxNjAtMTIgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTMxNjAtMTMgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTMxNjAtMTYgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTMxNjAtMTcgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTYwMDAtNCAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTYwMDBnMmEtNSA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTYwMDBnMmEtNiA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTYwMDBnMmItNSA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTYwMDBnMmItNiA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTYwNTAtNCAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTYwNTAtNSAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTcyNjAgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTcyNjUgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTcyNjVkICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTgwMDBjICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTgyNjUgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTkwMDAgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLW1pc2MgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLWxpY2Vuc2UgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorCisKK0ZJTEVTXyR7UE59LWl3bHdpZmktbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuaXdsd2lmaV9maXJtd2FyZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktMTM1LTYgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTEzNS02LnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS0zMTYwLTcgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTMxNjAtNy51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC04ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0zMTYwLTgudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTMxNjAtOSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC05LnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS0zMTYwLTEwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0zMTYwLTEwLnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS0zMTYwLTEyID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0zMTYwLTEyLnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS0zMTYwLTEzID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0zMTYwLTEzLnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS0zMTYwLTE2ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0zMTYwLTE2LnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS0zMTYwLTE3ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0zMTYwLTE3LnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS02MDAwLTQgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTYwMDAtNC51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktNjAwMGcyYS01ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS02MDAwZzJhLTUudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTYwMDBnMmEtNiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNjAwMGcyYS02LnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS02MDAwZzJiLTUgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTYwMDBnMmItNS51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktNjAwMGcyYi02ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS02MDAwZzJiLTYudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTYwNTAtNCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNjA1MC00LnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS02MDUwLTUgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTYwNTAtNS51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktNzI2MCAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS03MjYwLSoudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTcyNjUgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNzI2NS0qLnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS03MjY1ZCAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS03MjY1RC0qLnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS04MDAwYyAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS04MDAwQy0qLnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS04MjY1ICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTgyNjUtKi51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktOTAwMCAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS05MDAwLSoudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLW1pc2MgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktKi51Y29kZSIKKworUkRFUEVORFNfJHtQTn0taXdsd2lmaS0xMzUtNiAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS0zMTYwLTcgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS0zMTYwLTggICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS0zMTYwLTkgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS0zMTYwLTEwICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS0zMTYwLTEyICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS0zMTYwLTEzICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS0zMTYwLTE2ICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS0zMTYwLTE3ICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS02MDAwLTQgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS02MDAwZzJhLTUgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS02MDAwZzJhLTYgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS02MDAwZzJiLTUgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS02MDAwZzJiLTYgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS02MDUwLTQgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS02MDUwLTUgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS03MjYwICAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS03MjY1ICAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS03MjY1ZCAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS04MDAwYyAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS04MjY1ICAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS05MDAwICAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS1taXNjICAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorCisjIC1pd2x3aWZpLW1pc2MgaXMgYSAiY2F0Y2ggYWxsIiBwYWNrYWdlIHRoYXQgaW5jbHVkZXMgYWxsIHRoZSBpd2x3aWZpCisjIGZpcm13YXJlcyB0aGF0IGFyZSBub3QgYWxyZWFkeSBpbmNsdWRlZCBpbiBvdGhlciAtaXdsd2lmaS0gcGFja2FnZXMuCisjIC1pd2x3aWZpIGlzIGEgdmlydHVhbCBwYWNrYWdlIHRoYXQgZGVwZW5kcyB1cG9uIGFsbCBpd2x3aWZpIHBhY2thZ2VzLgorIyBUaGVzZSBhcmUgZGlzdGluY3QgaW4gb3JkZXIgdG8gYWxsb3cgdGhlIC1taXNjIGZpcm13YXJlcyB0byBiZSBpbnN0YWxsZWQKKyMgd2l0aG91dCBwdWxsaW5nIGluIGV2ZXJ5IG90aGVyIGl3bHdpZmkgcGFja2FnZS4KK0FMTE9XX0VNUFRZXyR7UE59LWl3bHdpZmkgPSAiMSIKK0FMTE9XX0VNUFRZXyR7UE59LWl3bHdpZmktbWlzYyA9ICIxIgorCisjIEhhbmRsZSBwYWNrYWdlIHVwZGF0aW5nIGZvciB0aGUgbmV3bHkgbWVyZ2VkIGl3bHdpZmkgZ3JvdXBpbmdzCitSUFJPVklERVNfJHtQTn0taXdsd2lmaS03MjY1ID0gIiR7UE59LWl3bHdpZmktNzI2NS04ICR7UE59LWl3bHdpZmktNzI2NS05IgorUlJFUExBQ0VTXyR7UE59LWl3bHdpZmktNzI2NSA9ICIke1BOfS1pd2x3aWZpLTcyNjUtOCAke1BOfS1pd2x3aWZpLTcyNjUtOSIKK1JDT05GTElDVFNfJHtQTn0taXdsd2lmaS03MjY1ID0gIiR7UE59LWl3bHdpZmktNzI2NS04ICR7UE59LWl3bHdpZmktNzI2NS05IgorCitSUFJPVklERVNfJHtQTn0taXdsd2lmaS03MjYwID0gIiR7UE59LWl3bHdpZmktNzI2MC03ICR7UE59LWl3bHdpZmktNzI2MC04ICR7UE59LWl3bHdpZmktNzI2MC05IgorUlJFUExBQ0VTXyR7UE59LWl3bHdpZmktNzI2MCA9ICIke1BOfS1pd2x3aWZpLTcyNjAtNyAke1BOfS1pd2x3aWZpLTcyNjAtOCAke1BOfS1pd2x3aWZpLTcyNjAtOSIKK1JDT05GTElDVFNfJHtQTn0taXdsd2lmaS03MjYwID0gIiR7UE59LWl3bHdpZmktNzI2MC03ICR7UE59LWl3bHdpZmktNzI2MC04ICR7UE59LWl3bHdpZmktNzI2MC05IgorCisjIEZvciBpYnQKK0xJQ0VOU0VfJHtQTn0taWJ0LWxpY2Vuc2UgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pYnQtaHctMzctNyA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LWlidC1ody0zNy04ID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taWJ0LTExLTUgICAgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pYnQtMTItMTYgICA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LWlidC0xNyA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LWlidC1taXNjICAgID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKKworRklMRVNfJHtQTn0taWJ0LWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLmlidF9maXJtd2FyZSIKK0ZJTEVTXyR7UE59LWlidC1ody0zNy03ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LWh3LTM3LjcqLmJzZXEiCitGSUxFU18ke1BOfS1pYnQtaHctMzctOCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC1ody0zNy44Ki5ic2VxIgorRklMRVNfJHtQTn0taWJ0LTExLTUgICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTEtNS5zZmkgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTEtNS5kZGMiCitGSUxFU18ke1BOfS1pYnQtMTItMTYgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xMi0xNi5zZmkgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTItMTYuZGRjIgorRklMRVNfJHtQTn0taWJ0LTE3ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTE3LSouc2ZpICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTE3LSouZGRjIgorRklMRVNfJHtQTn0taWJ0LW1pc2MgICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pYnQtKiIKKworUkRFUEVORFNfJHtQTn0taWJ0LWh3LTM3LTcgPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1pYnQtaHctMzcuOCA9ICIke1BOfS1pYnQtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWlidC0xMS01ICAgID0gIiR7UE59LWlidC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taWJ0LTEyLTE2ICAgPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1pYnQtMTcgPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1pYnQtbWlzYyAgICA9ICIke1BOfS1pYnQtbGljZW5zZSIKKworQUxMT1dfRU1QVFlfJHtQTn0taWJ0PSAiMSIKK0FMTE9XX0VNUFRZXyR7UE59LWlidC1taXNjID0gIjEiCisKK0xJQ0VOU0VfJHtQTn0taTkxNSAgICAgICA9ICJGaXJtd2FyZS1pOTE1IgorTElDRU5TRV8ke1BOfS1pOTE1LWxpY2Vuc2UgPSAiRmlybXdhcmUtaTkxNSIKK0ZJTEVTXyR7UE59LWk5MTUtbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOU0UuaTkxNSIKK0ZJTEVTXyR7UE59LWk5MTUgICAgICAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2k5MTUiCitSREVQRU5EU18ke1BOfS1pOTE1ICAgICAgPSAiJHtQTn0taTkxNS1saWNlbnNlIgorCitGSUxFU18ke1BOfS1hZHNwLXNzdC1saWNlbnNlICAgICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLmFkc3Bfc3N0IgorTElDRU5TRV8ke1BOfS1hZHNwLXNzdCAgICAgICAgICAgID0gIkZpcm13YXJlLWFkc3Bfc3N0IgorTElDRU5TRV8ke1BOfS1hZHNwLXNzdC1saWNlbnNlICAgID0gIkZpcm13YXJlLWFkc3Bfc3N0IgorRklMRVNfJHtQTn0tYWRzcC1zc3QgICAgICAgICAgICAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvZHNwX2Z3KiIKK1JERVBFTkRTXyR7UE59LWFkc3Atc3N0ICAgICAgICAgICA9ICIke1BOfS1hZHNwLXNzdC1saWNlbnNlIgorCisjIEZvciBRQVQKK0xJQ0VOU0VfJHtQTn0tcWF0ICAgICAgICAgPSAiRmlybXdhcmUtcWF0IgorTElDRU5TRV8ke1BOfS1xYXQtbGljZW5zZSA9ICJGaXJtd2FyZS1xYXQiCitGSUxFU18ke1BOfS1xYXQtbGljZW5zZSAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5xYXRfZmlybXdhcmUiCitGSUxFU18ke1BOfS1xYXQgICAgICAgICAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWF0Ki5iaW4iCitSREVQRU5EU18ke1BOfS1xYXQgICAgICAgID0gIiR7UE59LXFhdC1saWNlbnNlIgorCisjIEZvciBRQ09NIFZQVS9HUFUgYW5kIFNETTg0NQorTElDRU5TRV8ke1BOfS1xY29tLWxpY2Vuc2UgPSAiRmlybXdhcmUtcWNvbSIKK0ZJTEVTXyR7UE59LXFjb20tbGljZW5zZSAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5TRS5xY29tICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9OT1RJQ0UudHh0IgorRklMRVNfJHtQTn0tcWNvbS12ZW51cy0xLjggPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL3ZlbnVzLTEuOC8qIgorRklMRVNfJHtQTn0tcWNvbS12ZW51cy00LjIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL3ZlbnVzLTQuMi8qIgorRklMRVNfJHtQTn0tcWNvbS1hZHJlbm8tYTN4eCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vYTMwMF8qLmZ3ICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYTMwMF8qLmZ3IgorRklMRVNfJHtQTn0tcWNvbS1hZHJlbm8tYTUzMCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vYTUzMCouKiIKK0ZJTEVTXyR7UE59LXFjb20tc2RtODQ1LWF1ZGlvID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9zZG04NDUvYWRzcCouKiIKK0ZJTEVTXyR7UE59LXFjb20tc2RtODQ1LWNvbXB1dGUgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL3NkbTg0NS9jZHNwKi4qIgorRklMRVNfJHtQTn0tcWNvbS1zZG04NDUtbW9kZW0gPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL3NkbTg0NS9tYmEubWJuICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9zZG04NDUvbW9kZW0qLioiCitSREVQRU5EU18ke1BOfS1xY29tLXZlbnVzLTEuOCA9ICIke1BOfS1xY29tLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1xY29tLXZlbnVzLTQuMiA9ICIke1BOfS1xY29tLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1xY29tLWFkcmVuby1hM3h4ID0gIiR7UE59LXFjb20tbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXFjb20tYWRyZW5vLWE1MzAgPSAiJHtQTn0tcWNvbS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcWNvbS1zZG04NDUtYXVkaW8gPSAiJHtQTn0tcWNvbS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcWNvbS1zZG04NDUtY29tcHV0ZSA9ICIke1BOfS1xY29tLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1xY29tLXNkbTg0NS1tb2RlbSA9ICIke1BOfS1xY29tLWxpY2Vuc2UiCisKK0ZJTEVTXyR7UE59LWxpcXVpZGlvID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbGlxdWlkaW8iCisKKyMgRm9yIG90aGVyIGZpcm13YXJlcworIyBNYXliZSBzcGxpdCBvdXQgdG8gc2VwYXJhdGUgcGFja2FnZXMgd2hlbiBuZWVkZWQuCitMSUNFTlNFXyR7UE59ID0gIlwKKyAgICBGaXJtd2FyZS1BYmlsaXMgXAorICAgICYgRmlybXdhcmUtYWdlcmUgXAorICAgICYgRmlybXdhcmUtYW1kZ3B1IFwKKyAgICAmIEZpcm13YXJlLWFtZC11Y29kZSBcCisgICAgJiBGaXJtd2FyZS1hdG1lbCBcCisgICAgJiBGaXJtd2FyZS1jYTAxMzIgXAorICAgICYgRmlybXdhcmUtY2F2aXVtIFwKKyAgICAmIEZpcm13YXJlLWNoZWxzaW9fZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtY3cxMjAwIFwKKyAgICAmIEZpcm13YXJlLWRpYjA3MDAgXAorICAgICYgRmlybXdhcmUtZTEwMCBcCisgICAgJiBGaXJtd2FyZS1lbmVfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtZndfc3N0XzBmMjggXAorICAgICYgRmlybXdhcmUtZ283MDA3IFwKKyAgICAmIEZpcm13YXJlLWhmaTFfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtaTI0MDBtIFwKKyAgICAmIEZpcm13YXJlLWlidF9maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS1pdDkxM3ggXAorICAgICYgRmlybXdhcmUtSW50Y1NTVDIgXAorICAgICYgRmlybXdhcmUta2F3ZXRoIFwKKyAgICAmIEZpcm13YXJlLW1veGEgXAorICAgICYgRmlybXdhcmUtbXlyaTEwZ2VfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtbnZpZGlhIFwKKyAgICAmIEZpcm13YXJlLU9MUEMgXAorICAgICYgRmlybXdhcmUtYXRoOWstaHRjIFwKKyAgICAmIEZpcm13YXJlLXBoYW5mdyBcCisgICAgJiBGaXJtd2FyZS1xYXQgXAorICAgICYgRmlybXdhcmUtcWNvbSBcCisgICAgJiBGaXJtd2FyZS1xbGExMjgwIFwKKyAgICAmIEZpcm13YXJlLXFsYTJ4eHggXAorICAgICYgRmlybXdhcmUtcjhhNzc5eF91c2IzIFwKKyAgICAmIEZpcm13YXJlLXJhZGVvbiBcCisgICAgJiBGaXJtd2FyZS1yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLXJhbGluay1maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS1pbXgtc2RtYV9maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS1zaWFubyBcCisgICAgJiBGaXJtd2FyZS10ZGE3NzA2LWZpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLXRpLWNvbm5lY3Rpdml0eSBcCisgICAgJiBGaXJtd2FyZS10aS1rZXlzdG9uZSBcCisgICAgJiBGaXJtd2FyZS11ZWFnbGUtYXRtNC1maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS13bDEyNTEgXAorICAgICYgRmlybXdhcmUteGM0MDAwIFwKKyAgICAmIEZpcm13YXJlLXhjNTAwMCBcCisgICAgJiBGaXJtd2FyZS14YzUwMDBjIFwKKyAgICAmIFdIRU5DRSBcCisiCisKK0ZJTEVTXyR7UE59LWxpY2Vuc2UgKz0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU4qIgorRklMRVNfJHtQTn0gKz0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvKiIKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXdoZW5jZS1saWNlbnNlIgorCisjIE1ha2UgbGludXgtZmlybXdhcmUgZGVwZW5kIG9uIGFsbCBvZiB0aGUgc3BsaXQtb3V0IHBhY2thZ2VzLgorIyBNYWtlIGxpbnV4LWZpcm13YXJlLWl3bHdpZmkgZGVwZW5kIG9uIGFsbCBvZiB0aGUgc3BsaXQtb3V0IGl3bHdpZmkgcGFja2FnZXMuCisjIE1ha2UgbGludXgtZmlybXdhcmUtaWJ0IGRlcGVuZCBvbiBhbGwgb2YgdGhlIHNwbGl0LW91dCBpYnQgcGFja2FnZXMuCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgZmlybXdhcmVfcGtncyA9IG9lLnV0aWxzLnBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtKGQpCisgICAgZC5hcHBlbmRWYXIoJ1JSRUNPTU1FTkRTX2xpbnV4LWZpcm13YXJlJywgJyAnICsgJyAnLmpvaW4oZmlybXdhcmVfcGtncykpCisKKyAgICBpd2x3aWZpX3BrZ3MgPSBmaWx0ZXIobGFtYmRhIHg6IHguZmluZCgnLWl3bHdpZmktJykgIT0gLTEsIGZpcm13YXJlX3BrZ3MpCisgICAgZC5hcHBlbmRWYXIoJ1JSRUNPTU1FTkRTX2xpbnV4LWZpcm13YXJlLWl3bHdpZmknLCAnICcgKyAnICcuam9pbihpd2x3aWZpX3BrZ3MpKQorCisgICAgaWJ0X3BrZ3MgPSBmaWx0ZXIobGFtYmRhIHg6IHguZmluZCgnLWlidC0nKSAhPSAtMSwgZmlybXdhcmVfcGtncykKKyAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfbGludXgtZmlybXdhcmUtaWJ0JywgJyAnICsgJyAnLmpvaW4oaWJ0X3BrZ3MpKQorfQorCisjIEZpcm13YXJlIGZpbGVzIGFyZSBnZW5lcmFsbHkgbm90IHJhbiBvbiB0aGUgQ1BVLCBzbyB0aGV5IGNhbiBiZQorIyBhbGxhcmNoIGRlc3BpdGUgYmVpbmcgYXJjaGl0ZWN0dXJlIHNwZWNpZmljCitJTlNBTkVfU0tJUCA9ICJhcmNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMuaW5jCmluZGV4IDdmODM4ZjYuLjQ0ODFhYTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy5pbmMKQEAgLTkxLDQgKzkxLDQgQEAKIFJSRUNPTU1FTkRTXyR7UE59LWRiZyA9ICIke1BOfS1kZXYgKD0gJHtFWFRFTkRQS0dWfSkiCiAKIElOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCi1ERVBFTkRTICs9ICJ1bmlmZGVmLW5hdGl2ZSBiaXNvbi1uYXRpdmUiCitERVBFTkRTICs9ICJ1bmlmZGVmLW5hdGl2ZSBiaXNvbi1uYXRpdmUgcnN5bmMtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1pZl9ldGhlci1tb3ZlLW11c2xjLWV0aGhkci1wcm90ZWN0aW9uLXRvLXVhcGktZmlsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEtaWZfZXRoZXItbW92ZS1tdXNsYy1ldGhoZHItcHJvdGVjdGlvbi10by11YXBpLWZpbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4YjI0NDYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1pZl9ldGhlci1tb3ZlLW11c2xjLWV0aGhkci1wcm90ZWN0aW9uLXRvLXVhcGktZmlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gODk3NzM2MTY2ZmQ3MDk5MDZhNWZkZjE2ZWIyM2Y4ZmRkZmY3NzBiNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAxIE1hciAyMDE4IDE4OjMxOjAxIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGlmX2V0aGVyOiBtb3ZlIG11c2xjIGV0aGhkciBwcm90ZWN0aW9uIHRvIHVhcGkgZmlsZQotCi1TaWduZWQtb2ZmLWJ5OiBCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmggfCA2ICsrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmgKLWluZGV4IDE1M2M5YzIuLjdiNjliNzMgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaAotKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmgKLUBAIC0xNDksNiArMTQ5LDEyIEBACi0gICoJVGhpcyBpcyBhbiBFdGhlcm5ldCBmcmFtZSBoZWFkZXIuCi0gICovCi0gCi0rI2lmZGVmIF9ORVRJTkVUX0lGX0VUSEVSX0ggLyogbXVzbCAqLwotKyNkZWZpbmUgX19VQVBJX0RFRl9FVEhIRFIgMAotKyNlbHNlIC8qIGdsaWJjIHVzZXMgX19ORVRJTkVUX0lGX0VUSEVSX0gsIGFuZCBpbmNsdWRlcyB0aGUga2VybmVsIGhlYWRlci4gKi8KLSsjZGVmaW5lIF9fVUFQSV9ERUZfRVRISERSIDEKLSsjZW5kaWYKLSsKLSAvKiBhbGxvdyBsaWJjcyBsaWtlIG11c2wgdG8gZGVhY3RpdmF0ZSB0aGlzLCBnbGliYyBkb2VzIG5vdCBpbXBsZW1lbnQgdGhpcy4gKi8KLSAjaWZuZGVmIF9fVUFQSV9ERUZfRVRISERSCi0gI2RlZmluZSBfX1VBUElfREVGX0VUSEhEUgkJMQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWtidWlsZC1pbnN0YWxsX2hlYWRlcnMuc2gtU3RyaXAtX1VBUEktZnJvbS1pZi1kZWZpbmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWtidWlsZC1pbnN0YWxsX2hlYWRlcnMuc2gtU3RyaXAtX1VBUEktZnJvbS1pZi1kZWZpbmUucGF0Y2gKaW5kZXggNzhlYmQzMS4uNTQ1MjhiNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1rYnVpbGQtaW5zdGFsbF9oZWFkZXJzLnNoLVN0cmlwLV9VQVBJLWZyb20taWYtZGVmaW5lLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEta2J1aWxkLWluc3RhbGxfaGVhZGVycy5zaC1TdHJpcC1fVUFQSS1mcm9tLWlmLWRlZmluZS5wYXRjaApAQCAtMjQsMTggKzI0LDE1IEBACiAgc2NyaXB0cy9oZWFkZXJzX2luc3RhbGwuc2ggfCAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAotZGlmZiAtLWdpdCBhL3NjcmlwdHMvaGVhZGVyc19pbnN0YWxsLnNoIGIvc2NyaXB0cy9oZWFkZXJzX2luc3RhbGwuc2gKLWluZGV4IDU5M2Y4ODc5YzY0MS4uZmUxZDNmYzBkMzNhIDEwMDc1NQotLS0tIGEvc2NyaXB0cy9oZWFkZXJzX2luc3RhbGwuc2gKLSsrKyBiL3NjcmlwdHMvaGVhZGVyc19pbnN0YWxsLnNoCi1AQCAtMzgsNiArMzgsNyBAQCBkbwotIAkJLWUgJ3MvKF58W15hLXpBLVowLTldKV9fcGFja2VkKFteYS16QS1aMC05X118JCkvXDFfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKVwyL2cnIFwKLSAJCS1lICdzLyhefFtbOnNwYWNlOl0oXSkoaW5saW5lfGFzbXx2b2xhdGlsZSkoW1s6c3BhY2U6XShdfCQpL1wxX19cMl9fXDMvZycgXAotIAkJLWUgJ3NAIyhpZm5kZWZ8ZGVmaW5lfGVuZGlmW1s6c3BhY2U6XV0qL1sqXSlbWzpzcGFjZTpdXSpfVUFQSUAjXDEgQCcgXAotKwkJLWUgJzoxO3MvKCMoaWZ8ZWxpZikoLipbXkEtWmEtejAtOV9dKWRlZmluZWRcKFtbOnNwYWNlOl1dKilfVUFQSS9cMS87dDEnIFwKLSAJCSIkU1JDRElSLyRpIiA+ICIkT1VURElSLyRGSUxFLnNlZCIgfHwgZXhpdCAxCi0gCXNjcmlwdHMvdW5pZmRlZiAtVV9fS0VSTkVMX18gLURfX0VYUE9SVEVEX0hFQURFUlNfXyAiJE9VVERJUi8kRklMRS5zZWQiIFwKLSAJCT4gIiRPVVRESVIvJEZJTEUiCi0tLSAKLTIuNS4wCi0KK0luZGV4OiBsaW51eC01LjQvc2NyaXB0cy9oZWFkZXJzX2luc3RhbGwuc2gKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaW51eC01LjQub3JpZy9zY3JpcHRzL2hlYWRlcnNfaW5zdGFsbC5zaAorKysrIGxpbnV4LTUuNC9zY3JpcHRzL2hlYWRlcnNfaW5zdGFsbC5zaAorQEAgLTM2LDYgKzM2LDcgQEAKKyAJcy8oXnxbXmEtekEtWjAtOV0pX19wYWNrZWQoW15hLXpBLVowLTlfXXwkKS9cMV9fYXR0cmlidXRlX18oKHBhY2tlZCkpXDIvZworIAlzLyhefFtbOnNwYWNlOl0oXSkoaW5saW5lfGFzbXx2b2xhdGlsZSkoW1s6c3BhY2U6XShdfCQpL1wxX19cMl9fXDMvZworIAlzQCMoaWZuZGVmfGRlZmluZXxlbmRpZltbOnNwYWNlOl1dKi9bKl0pW1s6c3BhY2U6XV0qX1VBUElAI1wxIEAKKysgICAgICAgIDoxO3MvKCMoaWZ8ZWxpZikoLipbXkEtWmEtejAtOV9dKWRlZmluZWRcKFtbOnNwYWNlOl1dKilfVUFQSS9cMS87dDEKKyAnICRJTkZJTEUgPiAkVE1QRklMRSB8fCBleGl0IDEKKyAKKyBzY3JpcHRzL3VuaWZkZWYgLVVfX0tFUk5FTF9fIC1EX19FWFBPUlRFRF9IRUFERVJTX18gJFRNUEZJTEUgPiAkT1VURklMRQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAyLWxpYmMtY29tcGF0LmgtcHJldmVudC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LWV0aGhkci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI3ZTFkZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAyLWxpYmMtY29tcGF0LmgtcHJldmVudC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LWV0aGhkci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gNzViYTRhNTQ3MjgyZjkxZDY1Mzg3MmE0YmJhNWY1ZWFlMjM0ZWE2YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IHJvZmwwciA8cmV0bnlnQGdteC5uZXQ+Ci1EYXRlOiBXZWQsIDIyIEphbiAyMDE0IDAwOjU3OjQ4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8zXSBsaWJjLWNvbXBhdC5oOiBwcmV2ZW50IHJlZGVmaW5pdGlvbiBvZiBzdHJ1Y3QgZXRoaGRyCi0KLS0tLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLSBpbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaCAgICB8IDQgKysrLQotIGluY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oIHwgNiArKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogbGludXgtNC4xNS9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpbnV4LTQuMTUub3JpZy9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAkyMDE4LTAyLTA1IDE3OjQwOjQyLjMzODM3MDczMSAtMDUwMAotKysrIGxpbnV4LTQuMTUvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgJMjAxOC0wMi0wNSAxNzo0MDo0Mi4zMzQzNzA2MDMgLTA1MDAKLUBAIC01MSw2ICs1MSwxMiBAQAotIAotICNpZm5kZWYgX19LRVJORUxfXyAvKiB3ZSdyZSB1c2VkIGZyb20gdXNlcnNwYWNlICovCi0gCi0rI2lmZGVmIF9ORVRJTkVUX0lGX0VUSEVSX0ggLyogbXVzbCAqLwotKyNkZWZpbmUgX19VQVBJX0RFRl9FVEhIRFIgMAotKyNlbHNlIC8qIGdsaWJjIHVzZXMgX19ORVRJTkVUX0lGX0VUSEVSX0gsIGFuZCBpbmNsdWRlcyB0aGUga2VybmVsIGhlYWRlci4gKi8KLSsjZGVmaW5lIF9fVUFQSV9ERUZfRVRISERSIDEKLSsjZW5kaWYKLSsKLSAvKiBDb29yZGluYXRlIHdpdGggbGliYyBuZXQvaWYuaCBoZWFkZXIuICovCi0gI2lmIGRlZmluZWQoX05FVF9JRl9IKQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDE4ZGY3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzUuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLXJlcXVpcmUgbGludXgtbGliYy1oZWFkZXJzLmluYwotCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiXAotICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtZml4LXNvbWUtaXNzdWVzLWFyaXNpbmctZnJvbS1pbjYuaC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItbGliYy1jb21wYXQuaC1wcmV2ZW50LXJlZGVmaW5pdGlvbi1vZi1zdHJ1Y3QtZXRoaGRyLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1yZW1vdmUtaW5jbHVzaW9uLW9mLXN5c2luZm8uaC1pbi1rZXJuZWwuaC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1tdXNsLV9kb2VzXy1kZWZpbmUtSUZGX0xPV0VSX1VQLURPUk1BTi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtaWZfZXRoZXItbW92ZS1tdXNsYy1ldGhoZHItcHJvdGVjdGlvbi10by11YXBpLWZpbGUucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtbGludXgtc3RkZGVmLmgtaW4tc3dhYi5oLXVhcGktaGVhZGVyLnBhdGNoIFwKLSAgICIKLQotU1JDX1VSSV9hcHBlbmQgPSAiXAotICAgIGZpbGU6Ly8wMDAxLXNjcmlwdHMtVXNlLWZpeGVkLWlucHV0LWFuZC1vdXRwdXQtZmlsZXMtaW5zdGVhZC1vZi0ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWtidWlsZC1pbnN0YWxsX2hlYWRlcnMuc2gtU3RyaXAtX1VBUEktZnJvbS1pZi1kZWZpbmUucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZGRmOTk0ZGUwMGQ3YjE4Mzk1ODg2ZGQ5YjMwYjkyNjIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTRhZDY2ZjY3MmUxYTgzMWI1NzRmNWU3MDRlOGEwNWYxZTYxODBhODI0NWQ0YmRkODExMjA4YTZjYjBhYzFlNyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzUuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzUuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTEyMTAzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNS40LmJiCkBAIC0wLDAgKzEsMTYgQEAKK3JlcXVpcmUgbGludXgtbGliYy1oZWFkZXJzLmluYworCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiXAorICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtZml4LXNvbWUtaXNzdWVzLWFyaXNpbmctZnJvbS1pbjYuaC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtcmVtb3ZlLWluY2x1c2lvbi1vZi1zeXNpbmZvLmgtaW4ta2VybmVsLmgucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtbXVzbC1fZG9lc18tZGVmaW5lLUlGRl9MT1dFUl9VUC1ET1JNQU4ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtbGludXgtc3RkZGVmLmgtaW4tc3dhYi5oLXVhcGktaGVhZGVyLnBhdGNoIFwKKyAgICIKKworU1JDX1VSSV9hcHBlbmQgPSAiXAorICAgIGZpbGU6Ly8wMDAxLXNjcmlwdHMtVXNlLWZpeGVkLWlucHV0LWFuZC1vdXRwdXQtZmlsZXMtaW5zdGVhZC1vZi0ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWtidWlsZC1pbnN0YWxsX2hlYWRlcnMuc2gtU3RyaXAtX1VBUEktZnJvbS1pZi1kZWZpbmUucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiY2U5YjJkOTc0ZDI3NDA4YTYxYzUzYTMwZDNmOThmYjkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmYzMzg5ODBiMTY3MGJjYTI4N2Y5OTk0Yjc0NDFjMjM2MTkwNzYzNTg3OTE2OWM2NGFlNzgzNjRlZmM1ZjQ5MSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtZGV2c3JjLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIKaW5kZXggYjY4ZDk0NS4uNTk0MGNjOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIKQEAgLTc4LDcgKzc4LDcgQEAKIAkgICAgY3AgTW9kdWxlLm1hcmtlcnMgJGtlcm5lbGRpci9idWlsZAogCWZpCiAKLQljcCAuY29uZmlnICRrZXJuZWxkaXIvYnVpbGQKKwljcCAtYSAuY29uZmlnICRrZXJuZWxkaXIvYnVpbGQKIAogCSMgVGhpcyBzY3JpcHRzIGNvcHkgYmxvdyB1cCBRQSwgc28gZm9yIG5vdywgd2UgcmVxdWlyZSBhIG1vcmUKIAkjIGNvbXBsZXggJ21ha2Ugc2NyaXB0cycgdG8gcmVzdG9yZSB0aGVzZSwgdmVyc3VzIGNvcHlpbmcgdGhlbQpAQCAtMTI4LDExICsxMjgsMTIgQEAKIAogCSAgICAjIGV4dHJhIGZpbGVzLCBqdXN0IGluIGNhc2UKIAkgICAgY3AgLWEgLS1wYXJlbnRzIHRvb2xzL29ianRvb2wvKiAka2VybmVsZGlyL2J1aWxkLwotCSAgICBjcCAtYSAtLXBhcmVudHMgdG9vbHMvbGliL3N0cl9lcnJvcl9yLmMgJGtlcm5lbGRpci9idWlsZC8KLQkgICAgY3AgLWEgLS1wYXJlbnRzIHRvb2xzL2xpYi9zdHJpbmcuYyAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgdG9vbHMvbGliLyogJGtlcm5lbGRpci9idWlsZC8KIAkgICAgY3AgLWEgLS1wYXJlbnRzIHRvb2xzL2xpYi9zdWJjbWQvKiAka2VybmVsZGlyL2J1aWxkLwogCiAJICAgIGNwIC1hIC0tcGFyZW50cyB0b29scy9pbmNsdWRlLyogJGtlcm5lbGRpci9idWlsZC8KKworCSAgICBjcCAtYSAtLXBhcmVudHMgJChmaW5kIHRvb2xzL2FyY2gvJHtBUkNIfS8gLXR5cGUgZikgJGtlcm5lbGRpci9idWlsZC8KIAlmaQogCiAJaWYgWyAiJHtBUkNIfSIgPSAiYXJtNjQiIF07IHRoZW4KQEAgLTE0Niw3ICsxNDcsNyBAQAogICAgICAgICAgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gvYXJtNjQva2VybmVsL3Zkc28vbm90ZS5TICRrZXJuZWxkaXIvYnVpbGQvCiAgICAgICAgICAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC9hcm02NC9rZXJuZWwvdmRzby9nZW5fdmRzb19vZmZzZXRzLnNoICRrZXJuZWxkaXIvYnVpbGQvCiAKLSAgICAgICAgICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL2FybTY0L2tlcm5lbC9tb2R1bGUubGRzICRrZXJuZWxkaXIvYnVpbGQvCisgICAgICAgICAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC9hcm02NC9rZXJuZWwvbW9kdWxlLmxkcyAka2VybmVsZGlyL2J1aWxkLyAyPi9kZXYvbnVsbCB8fCA6CiAJZmkKIAogCWlmIFsgIiR7QVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KQEAgLTE4NSwxOSArMTg2LDIxIEBACiAJY3AgLWEgLS1wYXJlbnRzIHRvb2xzL2luY2x1ZGUvdG9vbHMvYmVfYnl0ZXNoaWZ0LmggJGtlcm5lbGRpci9idWlsZC8KIAogCSMgcmVxdWlyZWQgZm9yIGdlbmVyYXRlIG1pc3Npbmcgc3lzY2FsbHMgcHJlcGFyZSBwaGFzZQotCWNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibCAka2VybmVsZGlyL2J1aWxkCisJY3AgLWEgLS1wYXJlbnRzICQoZmluZCBhcmNoL3g4NiAtdHlwZSBmIC1uYW1lICJzeXNjYWxsXzMyLnRibCIpICRrZXJuZWxkaXIvYnVpbGQKKwljcCAtYSAtLXBhcmVudHMgJChmaW5kIGFyY2gvYXJtIC10eXBlIGYgLW5hbWUgIioudGJsIikgJGtlcm5lbGRpci9idWlsZCAyPi9kZXYvbnVsbCB8fCA6CiAKIAlpZiBbICIke0FSQ0h9IiA9ICJ4ODYiIF07IHRoZW4KIAkgICAgIyBmaWxlcyBmb3IgJ21ha2UgcHJlcGFyZScgdG8gc3VjY2VlZCB3aXRoIGtlcm5lbC1kZXZlbAotCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwgJGtlcm5lbGRpci9idWlsZC8KLQkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGx0Ymwuc2ggJGtlcm5lbGRpci9idWlsZC8KLQkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxoZHIuc2ggJGtlcm5lbGRpci9idWlsZC8KLQkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsICRrZXJuZWxkaXIvYnVpbGQvCisJICAgIGNwIC1hIC0tcGFyZW50cyAkKGZpbmQgYXJjaC94ODYgLXR5cGUgZiAtbmFtZSAic3lzY2FsbF8zMi50YmwiKSAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgJChmaW5kIGFyY2gveDg2IC10eXBlIGYgLW5hbWUgInN5c2NhbGx0Ymwuc2giKSAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgJChmaW5kIGFyY2gveDg2IC10eXBlIGYgLW5hbWUgInN5c2NhbGxoZHIuc2giKSAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgJChmaW5kIGFyY2gveDg2IC10eXBlIGYgLW5hbWUgInN5c2NhbGxfNjQudGJsIikgJGtlcm5lbGRpci9idWlsZC8KIAkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L3Rvb2xzL3JlbG9jc18zMi5jICRrZXJuZWxkaXIvYnVpbGQvCiAJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni90b29scy9yZWxvY3NfNjQuYyAka2VybmVsZGlyL2J1aWxkLwogCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvdG9vbHMvcmVsb2NzLmMgJGtlcm5lbGRpci9idWlsZC8KIAkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L3Rvb2xzL3JlbG9jc19jb21tb24uYyAka2VybmVsZGlyL2J1aWxkLwogCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvdG9vbHMvcmVsb2NzLmggJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L3Rvb2xzL2dlbi1pbnNuLWF0dHIteDg2LmF3ayAka2VybmVsZGlyL2J1aWxkLyAyPi9kZXYvbnVsbCB8fCA6CiAJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9wdXJnYXRvcnkvcHVyZ2F0b3J5LmMgJGtlcm5lbGRpci9idWlsZC8KIAogCSAgICAjIDQuMTggKyBoYXZlIHVuaWZpZWQgdGhlIHB1cmdhdG9yeSBmaWxlcywgc28gd2UgaWdub3JlIGFueSBlcnJvcnMgaWYKQEAgLTIxMyw2ICsyMTYsMTAgQEAKIAkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L2Jvb3Qvc3RyaW5nLmMgJGtlcm5lbGRpci9idWlsZC8KIAkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9zdHJpbmcuYyAka2VybmVsZGlyL2J1aWxkLyAyPi9kZXYvbnVsbCB8fCA6CiAJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9ib290L2N0eXBlLmggJGtlcm5lbGRpci9idWlsZC8KKworCSAgICAjIG9ianRvb2wgcmVxdWlyZXMgdGhlc2UgZmlsZXMKKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L2xpYi9pbmF0LmMgJGtlcm5lbGRpci9idWlsZC8gMj4vZGV2L251bGwgfHwgOgorCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvbGliL2luc24uYyAka2VybmVsZGlyL2J1aWxkLyAyPi9kZXYvbnVsbCB8fCA6CiAJZmkKIAogCWlmIFsgIiR7QVJDSH0iID0gIm1pcHMiIF07IHRoZW4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiCmluZGV4IDE2M2YyODAuLjA2YTkxMDggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYgpAQCAtMzAsMTEgKzMwLDExIEBACiBTUkNSRVZfbWFjaGluZSA/PSAnJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIsICJsaW51eC15b2N0by1kZXYiLCAiJHtBVVRPUkVWfSIsICIyOTU5NDQwNGQ3ZmU3M2NkODBlYWE0ZWU4YzQzZGNjNTM5NzBjNjBlIiwgZCl9JwogU1JDUkVWX21ldGEgPz0gJyR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiLCAibGludXgteW9jdG8tZGV2IiwgIiR7QVVUT1JFVn0iLCAiMjk1OTQ0MDRkN2ZlNzNjZDgwZWFhNGVlOGM0M2RjYzUzOTcwYzYwZSIsIGQpfScKIAotTElOVVhfVkVSU0lPTiA/PSAiNS4zLXJjKyIKK0xJTlVYX1ZFUlNJT04gPz0gIjUuNi1yYysiCiBMSU5VWF9WRVJTSU9OX0VYVEVOU0lPTiA/PSAiLXlvY3RvZGV2LSR7TElOVVhfS0VSTkVMX1RZUEV9IgogUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKIAotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmJlYTgxNWVlMjc5NWIyZjQyMzA4MjZjMGM2Yjg4MTQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02YmM1MzhlZDViZDlhN2ZjOTM5ODA4NmFlZGNkN2U0NiIKIAogREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCiBERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKQEAgLTQ4LDcgKzQ4LDcgQEAKIEtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIGZlYXR1cmVzL2RybS1ib2Nocy9kcm0tYm9jaHMuc2NjIgogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgogCiBLRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJlZGI2MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUtCUkFOQ0ggPz0gInY0LjE5L3N0YW5kYXJkL3ByZWVtcHQtcnQvYmFzZSIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotIyBTa2lwIHByb2Nlc3Npbmcgb2YgdGhpcyByZWNpcGUgaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHRoZQotIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBlcnJvcnMgd2hlbiB0cnlpbmcKLSMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLCBlLmcuIGFzIGRlcGVuZGVuY3kgb2YKLSMgY29yZS1pbWFnZS1ydC1zZGssIGNvcmUtaW1hZ2UtcnQuCi1weXRob24gKCkgewotICAgIGlmIGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikgPT0gImtlcm5lbCIgYW5kIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCi19Ci0KLVNSQ1JFVl9tYWNoaW5lID89ICIwZTRhNzllNjA4ZTkyODMwNjkzZTUxMWEzZGQyODJjZTdjM2IzZjQxIgotU1JDUkVWX21ldGEgPz0gImFkNmY4YjM1NzcyMGNhODE2N2EwOTA3MTNiNzc0NjIzMGNmNGIzMTQiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xOTtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1MSU5VWF9WRVJTSU9OID89ICI0LjE5Ljc4IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKLQotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCi1ERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11YXJtdjV8cWVtdWFybTY0fHFlbXVwcGN8cWVtdW1pcHMpIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtdjUgPSAidmVyc2F0aWxlLXBiLmR0YiIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIGZlYXR1cmVzL3Rhc2tzdGF0cy90YXNrc3RhdHMuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MgZmVhdHVyZXMvZHJtLWJvY2hzL2RybS1ib2Nocy5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwdGVzdCIsICIgZmVhdHVyZXMvc2NzaS9zY3NpLWRlYnVnLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDIzMzMxZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotS0JSQU5DSCA/PSAidjUuMi9zdGFuZGFyZC9wcmVlbXB0LXJ0L2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgU2tpcCBwcm9jZXNzaW5nIG9mIHRoaXMgcmVjaXBlIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBhcyB0aGUKLSMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgZXJyb3JzIHdoZW4gdHJ5aW5nCi0jIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCi0jIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgotcHl0aG9uICgpIHsKLSAgICBpZiBkLmdldFZhcigiS0VSTkVMX1BBQ0tBR0VfTkFNRSIpID09ICJrZXJuZWwiIGFuZCBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQotfQotCi1TUkNSRVZfbWFjaGluZSA/PSAiNTVlM2VlMzg3YjA3M2Q4ZDYwOWU4ODk5ODU5NTYxMzQwZDhiNjkxMSIKLVNSQ1JFVl9tZXRhID89ICJiZDA3NjJjZDEzOGYxNjI0YjVhNWY4NjY5Y2ZhM2FjMmI3MWNiODdiIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTUuMjtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1MSU5VWF9WRVJTSU9OID89ICI1LjIuMjAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJiZWE4MTVlZTI3OTViMmY0MjMwODI2YzBjNmI4ODE0IgotCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKLURFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1MSU5VWF9LRVJORUxfVFlQRSA9ICJwcmVlbXB0LXJ0IgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXV4ODZ8cWVtdXg4Ni02NHxxZW11YXJtfHFlbXVhcm12NXxxZW11YXJtNjR8cWVtdXBwY3xxZW11bWlwcykiCi0KLUtFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm12NSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MgZmVhdHVyZXMvdGFza3N0YXRzL3Rhc2tzdGF0cy5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyBmZWF0dXJlcy9kcm0tYm9jaHMvZHJtLWJvY2hzLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInB0ZXN0IiwgIiBmZWF0dXJlcy9zY3NpL3Njc2ktZGVidWcuc2NjIiwgIiIgLGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF81LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNzRlYzEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNS40LmJiCkBAIC0wLDAgKzEsNDQgQEAKK0tCUkFOQ0ggPz0gInY1LjQvc3RhbmRhcmQvcHJlZW1wdC1ydC9iYXNlIgorCityZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworCisjIFNraXAgcHJvY2Vzc2luZyBvZiB0aGlzIHJlY2lwZSBpZiBpdCBpcyBub3QgZXhwbGljaXRseSBzcGVjaWZpZWQgYXMgdGhlCisjIFBSRUZFUlJFRF9QUk9WSURFUiBmb3IgdmlydHVhbC9rZXJuZWwuIFRoaXMgYXZvaWRzIGVycm9ycyB3aGVuIHRyeWluZworIyB0byBidWlsZCBtdWx0aXBsZSB2aXJ0dWFsL2tlcm5lbCBwcm92aWRlcnMsIGUuZy4gYXMgZGVwZW5kZW5jeSBvZgorIyBjb3JlLWltYWdlLXJ0LXNkaywgY29yZS1pbWFnZS1ydC4KK3B5dGhvbiAoKSB7CisgICAgaWYgZC5nZXRWYXIoIktFUk5FTF9QQUNLQUdFX05BTUUiKSA9PSAia2VybmVsIiBhbmQgZC5nZXRWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIpICE9ICJsaW51eC15b2N0by1ydCI6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKK30KKworU1JDUkVWX21hY2hpbmUgPz0gIjc5MDM3YWU1OGU2YjBkZmQwYzYzZDRhMGUxMzFmMWJkNWVmZTdlNTMiCitTUkNSRVZfbWV0YSA/PSAiYmVlNTU0ZTU5NWU0OWM5NjM5MDBkMWM3OGMwMWFiMmQwNDEzODJlNyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by01LjQ7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKworTElOVVhfVkVSU0lPTiA/PSAiNS40LjI3IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKKworREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCitERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKKworUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKKworQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11YXJtdjV8cWVtdWFybTY0fHFlbXVwcGN8cWVtdW1pcHMpIgorCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtdjUgPSAidmVyc2F0aWxlLXBiLmR0YiIKKworIyBGdW5jdGlvbmFsaXR5IGZsYWdzCitLRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIGZlYXR1cmVzL3Rhc2tzdGF0cy90YXNrc3RhdHMuc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MgZmVhdHVyZXMvZHJtLWJvY2hzL2RybS1ib2Nocy5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwdGVzdCIsICIgZmVhdHVyZXMvc2NzaS9zY3NpLWRlYnVnLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjE5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY4MmFlZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotS0JSQU5DSCA/PSAidjQuMTkvc3RhbmRhcmQvdGlueS9iYXNlIgotS0JSQU5DSF9xZW11YXJtICA/PSAidjQuMTkvc3RhbmRhcmQvdGlueS9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKLQotTElOVVhfS0VSTkVMX1RZUEUgPSAidGlueSIKLUtDT05GSUdfTU9ERSA9ICItLWFsbG5vY29uZmlnIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi1MSU5VWF9WRVJTSU9OID89ICI0LjE5Ljc4IgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmJlYTgxNWVlMjc5NWIyZjQyMzA4MjZjMGM2Yjg4MTQiCi0KLURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgotREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCi0KLUtNRVRBID0gImtlcm5lbC1tZXRhIgotS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCi0KLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gImJlNTAwMDE4MDhmMDBlZmVlNTM4YzJhM2U3YzBhNWEyYTJkZjY1ZGEiCi1TUkNSRVZfbWFjaGluZSA/PSAiYTkxNWZiZWFlOGVkOTg3NDAyZjY5NjY2ZDkwYmVmMTVhMDFjNTgyMyIKLVNSQ1JFVl9tZXRhID89ICJhZDZmOGIzNTc3MjBjYTgxNjdhMDkwNzEzYjc3NDYyMzBjZjRiMzE0IgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTk7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXV4ODZ8cWVtdXg4Ni02NHxxZW11YXJtfHFlbXVhcm12NSIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRkVBVFVSRVMgPSAiIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtdjUgPSAidmVyc2F0aWxlLXBiLmR0YiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzUuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjcyMzlkMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV81LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1LQlJBTkNIID89ICJ2NS4yL3N0YW5kYXJkL3RpbnkvYmFzZSIKLUtCUkFOQ0hfcWVtdWFybSAgPz0gInY1LjIvc3RhbmRhcmQvdGlueS9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKLQotTElOVVhfS0VSTkVMX1RZUEUgPSAidGlueSIKLUtDT05GSUdfTU9ERSA9ICItLWFsbG5vY29uZmlnIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi1MSU5VWF9WRVJTSU9OID89ICI1LjIuMjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKLQotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCi1ERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiNTAxZDY4MDUzNTkwM2FjYzAwODA4YzM2ZjJjYzA3ZjJkYzcyNWFkYyIKLVNSQ1JFVl9tYWNoaW5lID89ICJkZDI1YTA0ZmM1ZTJlNDU0OWZjOWI4NjE1N2EwMWUwYzcyYjUzYjAzIgotU1JDUkVWX21ldGEgPz0gImJkMDc2MmNkMTM4ZjE2MjRiNWE1Zjg2NjljZmEzYWMyYjcxY2I4N2IiCi0KLVBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNS4yO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11YXJtdjUiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0ZFQVRVUkVTID0gIiIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybXY1ID0gInZlcnNhdGlsZS1wYi5kdGIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV81LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV81LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE1ZTY2OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzUuNC5iYgpAQCAtMCwwICsxLDMyIEBACitLQlJBTkNIID89ICJ2NS40L3N0YW5kYXJkL3RpbnkvYmFzZSIKK0tCUkFOQ0hfcWVtdWFybSAgPz0gInY1LjQvc3RhbmRhcmQvdGlueS9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKKworTElOVVhfS0VSTkVMX1RZUEUgPSAidGlueSIKK0tDT05GSUdfTU9ERSA9ICItLWFsbG5vY29uZmlnIgorCityZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworCitMSU5VWF9WRVJTSU9OID89ICI1LjQuMjciCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKKworREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCitERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiNWMyZDM1ZWViNGJlMGU4YmFlNGNmNWVlMDczM2U0MWZmMTI2MmZmMyIKK1NSQ1JFVl9tYWNoaW5lID89ICIwMzE0MmFjYmEwNmU4YjMzODg4NDEwYTUxODM1OGE2MjZkY2ViNzIwIgorU1JDUkVWX21ldGEgPz0gImJlZTU1NGU1OTVlNDljOTYzOTAwZDFjNzhjMDFhYjJkMDQxMzgyZTciCisKK1BWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNS40O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCisKK0NPTVBBVElCTEVfTUFDSElORSA9ICJxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11YXJtdjUiCisKKyMgRnVuY3Rpb25hbGl0eSBmbGFncworS0VSTkVMX0ZFQVRVUkVTID0gIiIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybXY1ID0gInZlcnNhdGlsZS1wYi5kdGIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwppbmRleCBmMTkxOTQ2Li45MWRmOWMxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKQEAgLTM5LDIyICszOSw2IEBACiAjIGFuZCBpdCBjYW4gYmUgc3BlY2lmaWMgdG8gdGhlIG1hY2hpbmUgb3Igc2hhcmVkCiAjIEtNQUNISU5FID0gIlVOREVGSU5FRCIKIAotIyBUaGUgZGlzdHJvIG9yIGxvY2FsLmNvbmYgc2hvdWxkIHNldCB0aGlzLCBidXQgaWYgbm9ib2R5IGNhcmVzLi4uCi1MSU5VWF9LRVJORUxfVFlQRSA/Pz0gInN0YW5kYXJkIgotCi0jIEtNRVRBID89ICIiCi1LQlJBTkNIID89ICJtYXN0ZXIiCi1LTUFDSElORSA/PSAiJHtNQUNISU5FfSIKLVNSQ1JFVl9GT1JNQVQgPz0gIm1ldGFfbWFjaGluZSIgCi0KLSMgTEVWRUxTOgotIyAgIDA6IG5vIHJlcG9ydGluZwotIyAgIDE6IHJlcG9ydCBvcHRpb25zIHRoYXQgYXJlIHNwZWNpZmllZCwgYnV0IG5vdCBpbiB0aGUgZmluYWwgY29uZmlnCi0jICAgMjogcmVwb3J0IG9wdGlvbnMgdGhhdCBhcmUgbm90IGhhcmR3YXJlIHJlbGF0ZWQsIGJ1dCBzZXQgYnkgYSBCU1AKLUtDT05GX0FVRElUX0xFVkVMID89ICIxIgotS0NPTkZfQlNQX0FVRElUX0xFVkVMID89ICIwIgotS01FVEFfQVVESVQgPz0gInllcyIKLQogTElOVVhfVkVSU0lPTl9FWFRFTlNJT04gPz89ICIteW9jdG8tJHtMSU5VWF9LRVJORUxfVFlQRX0iCiAKICMgUGljayB1cCBzaGFyZWQgZnVuY3Rpb25zCkBAIC02OSwxMCArNTMsNSBAQAogCWZpCiB9CiAKLSMgZXh0cmEgdGFza3MKLWFkZHRhc2sga2VybmVsX3ZlcnNpb25fc2FuaXR5X2NoZWNrIGFmdGVyIGRvX2tlcm5lbF9tZXRhZGF0YSBkb19rZXJuZWxfY2hlY2tvdXQgYmVmb3JlIGRvX2NvbXBpbGUKLWFkZHRhc2sgdmFsaWRhdGVfYnJhbmNoZXMgYmVmb3JlIGRvX3BhdGNoIGFmdGVyIGRvX2tlcm5lbF9jaGVja291dAotYWRkdGFzayBrZXJuZWxfY29uZmlnY2hlY2sgYWZ0ZXIgZG9fY29uZmlndXJlIGJlZm9yZSBkb19jb21waWxlCi0KICMgZW5hYmxlIGtlcm5lbC1zYW1wbGUgZm9yIG9lcWEvcnVudGltZS9jYXNlcydzIGtzYW1wbGUucHkgdGVzdAogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgZmVhdHVyZXMva2VybmVsLXNhbXBsZS9rZXJuZWwtc2FtcGxlLnNjYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4Y2IyMGYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1LQlJBTkNIID89ICJ2NC4xOS9zdGFuZGFyZC9iYXNlIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi0jIGJvYXJkIHNwZWNpZmljIGJyYW5jaGVzCi1LQlJBTkNIX3FlbXVhcm0gID89ICJ2NC4xOS9zdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKLUtCUkFOQ0hfcWVtdWFybTY0ID89ICJ2NC4xOS9zdGFuZGFyZC9xZW11YXJtNjQiCi1LQlJBTkNIX3FlbXVtaXBzID89ICJ2NC4xOS9zdGFuZGFyZC9tdGktbWFsdGEzMiIKLUtCUkFOQ0hfcWVtdXBwYyAgPz0gInY0LjE5L3N0YW5kYXJkL3FlbXVwcGMiCi1LQlJBTkNIX3FlbXV4ODYgID89ICJ2NC4xOS9zdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9xZW11eDg2LTY0ID89ICJ2NC4xOS9zdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9xZW11bWlwczY0ID89ICJ2NC4xOS9zdGFuZGFyZC9tdGktbWFsdGE2NCIKLQotU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiN2ZkZTUxYWJjYWYzODkxOTNjZTVkODdlYmZiOGU4ZmI2NmE5MjcxYSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiYTkxNWZiZWFlOGVkOTg3NDAyZjY5NjY2ZDkwYmVmMTVhMDFjNTgyMyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICI4YWM2OGQ0MmJlYjI0YjI3NWFjMGQyYTU0YTBhMjI5MTk3MGU1ZGRlIgotU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiYTkxNWZiZWFlOGVkOTg3NDAyZjY5NjY2ZDkwYmVmMTVhMDFjNTgyMyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYgPz0gImE5MTVmYmVhZThlZDk4NzQwMmY2OTY2NmQ5MGJlZjE1YTAxYzU4MjMiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2LTY0ID89ICJhOTE1ZmJlYWU4ZWQ5ODc0MDJmNjk2NjZkOTBiZWYxNWEwMWM1ODIzIgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHM2NCA/PSAiZWEyY2I4NzMxMzA2ZjczNGJmMDIyNzU3NWUwNGNhZmFjN2RmYWRlMCIKLVNSQ1JFVl9tYWNoaW5lID89ICJhOTE1ZmJlYWU4ZWQ5ODc0MDJmNjk2NjZkOTBiZWYxNWEwMWM1ODIzIgotU1JDUkVWX21ldGEgPz0gImFkNmY4YjM1NzcyMGNhODE2N2EwOTA3MTNiNzc0NjIzMGNmNGIzMTQiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTk7ZGVzdHN1ZmZpeD0ke0tNRVRBfSBcCi0gICAgICAgICAgIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKLUxJTlVYX1ZFUlNJT04gPz0gIjQuMTkuNzgiCi0KLURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgotREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCi0KLVBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCi0KLUtNRVRBID0gImtlcm5lbC1tZXRhIgotS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCi0KLUtFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm12NSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdWFybXxxZW11YXJtdjV8cWVtdWFybTY0fHFlbXV4ODZ8cWVtdXBwY3xxZW11bWlwc3xxZW11bWlwczY0fHFlbXV4ODYtNjQiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIGZlYXR1cmVzL2RybS1ib2Nocy9kcm0tYm9jaHMuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIiBjZmcveDMyLnNjYyIsICIiICxkKX0iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInB0ZXN0IiwgIiBmZWF0dXJlcy9zY3NpL3Njc2ktZGVidWcuc2NjIiwgIiIgLGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Zjc1ZjY3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1LQlJBTkNIID89ICJ2NS4yL3N0YW5kYXJkL2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgYm9hcmQgc3BlY2lmaWMgYnJhbmNoZXMKLUtCUkFOQ0hfcWVtdWFybSAgPz0gInY1LjIvc3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiCi1LQlJBTkNIX3FlbXVhcm02NCA/PSAidjUuMi9zdGFuZGFyZC9xZW11YXJtNjQiCi1LQlJBTkNIX3FlbXVtaXBzID89ICJ2NS4yL3N0YW5kYXJkL210aS1tYWx0YTMyIgotS0JSQU5DSF9xZW11cHBjICA/PSAidjUuMi9zdGFuZGFyZC9xZW11cHBjIgotS0JSQU5DSF9xZW11cmlzY3Y2NCAgPz0gInY1LjIvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdXg4NiAgPz0gInY1LjIvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdXg4Ni02NCA/PSAidjUuMi9zdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9xZW11bWlwczY0ID89ICJ2NS4yL3N0YW5kYXJkL210aS1tYWx0YTY0IgotCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICJmY2JlNTFkZmEwYTc2M2EwN2U0Y2Q2NjIwNGQ2YzBiYTA1NDY2M2NlIgotU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICJkZDI1YTA0ZmM1ZTJlNDU0OWZjOWI4NjE1N2EwMWUwYzcyYjUzYjAzIgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gIjljYWQ3YmI4YmNkMzY4NmY1ODBhMzM2Mzg0N2VlOWM5ZTg2OTI4YjEiCi1TUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICJkZDI1YTA0ZmM1ZTJlNDU0OWZjOWI4NjE1N2EwMWUwYzcyYjUzYjAzIgotU1JDUkVWX21hY2hpbmVfcWVtdXJpc2N2NjQgPz0gImRkMjVhMDRmYzVlMmU0NTQ5ZmM5Yjg2MTU3YTAxZTBjNzJiNTNiMDMiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICJkZDI1YTA0ZmM1ZTJlNDU0OWZjOWI4NjE1N2EwMWUwYzcyYjUzYjAzIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiZGQyNWEwNGZjNWUyZTQ1NDlmYzliODYxNTdhMDFlMGM3MmI1M2IwMyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gImRjMmJlMWE1NDZlOTM3Mzc0NTkwY2UzODU4YjcxNzQ4OWRlZDJjMjEiCi1TUkNSRVZfbWFjaGluZSA/PSAiZGQyNWEwNGZjNWUyZTQ1NDlmYzliODYxNTdhMDFlMGM3MmI1M2IwMyIKLVNSQ1JFVl9tZXRhID89ICJiZDA3NjJjZDEzOGYxNjI0YjVhNWY4NjY5Y2ZhM2FjMmI3MWNiODdiIgotCi0jIHJlbWFwIHFlbXVhcm0gdG8gcWVtdWFybWExNSBmb3IgdGhlIDUuMiBrZXJuZWwKLSMgS01BQ0hJTkVfcWVtdWFybSA/PSAicWVtdWFybWExNSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7bmFtZT1tYWNoaW5lO2JyYW5jaD0ke0tCUkFOQ0h9OyBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNS4yO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJiZWE4MTVlZTI3OTViMmY0MjMwODI2YzBjNmI4ODE0IgotTElOVVhfVkVSU0lPTiA/PSAiNS4yLjIwIgotCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKLURFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtdjUgPSAidmVyc2F0aWxlLXBiLmR0YiIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXVhcm18cWVtdWFybXY1fHFlbXVhcm02NHxxZW11eDg2fHFlbXVwcGN8cWVtdW1pcHN8cWVtdW1pcHM2NHxxZW11eDg2LTY0fHFlbXVyaXNjdjY0IgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyBmZWF0dXJlcy9kcm0tYm9jaHMvZHJtLWJvY2hzLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwdGVzdCIsICIgZmVhdHVyZXMvc2NzaS9zY3NpLWRlYnVnLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWU5MzNkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuNC5iYgpAQCAtMCwwICsxLDU0IEBACitLQlJBTkNIID89ICJ2NS40L3N0YW5kYXJkL2Jhc2UiCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKKyMgYm9hcmQgc3BlY2lmaWMgYnJhbmNoZXMKK0tCUkFOQ0hfcWVtdWFybSAgPz0gInY1LjQvc3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiCitLQlJBTkNIX3FlbXVhcm02NCA/PSAidjUuNC9zdGFuZGFyZC9xZW11YXJtNjQiCitLQlJBTkNIX3FlbXVtaXBzID89ICJ2NS40L3N0YW5kYXJkL210aS1tYWx0YTMyIgorS0JSQU5DSF9xZW11cHBjICA/PSAidjUuNC9zdGFuZGFyZC9xZW11cHBjIgorS0JSQU5DSF9xZW11cmlzY3Y2NCAgPz0gInY1LjQvc3RhbmRhcmQvYmFzZSIKK0tCUkFOQ0hfcWVtdXg4NiAgPz0gInY1LjQvc3RhbmRhcmQvYmFzZSIKK0tCUkFOQ0hfcWVtdXg4Ni02NCA/PSAidjUuNC9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9xZW11bWlwczY0ID89ICJ2NS40L3N0YW5kYXJkL210aS1tYWx0YTY0IgorCitTUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICJhYjg0OTI0OGI0NTQwM2M3ZDZmMWZiOGU4ZjU3ODQwY2MyODgwNjE4IgorU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICIwMzE0MmFjYmEwNmU4YjMzODg4NDEwYTUxODM1OGE2MjZkY2ViNzIwIgorU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gIjk2N2ExNzA4Y2JiZmUxYjUyNGRjMjhmMDRmYTVlMGQ3OWEyNzBiZjUiCitTUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICIwMzE0MmFjYmEwNmU4YjMzODg4NDEwYTUxODM1OGE2MjZkY2ViNzIwIgorU1JDUkVWX21hY2hpbmVfcWVtdXJpc2N2NjQgPz0gIjAzMTQyYWNiYTA2ZThiMzM4ODg0MTBhNTE4MzU4YTYyNmRjZWI3MjAiCitTUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICIwMzE0MmFjYmEwNmU4YjMzODg4NDEwYTUxODM1OGE2MjZkY2ViNzIwIgorU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiMDMxNDJhY2JhMDZlOGIzMzg4ODQxMGE1MTgzNThhNjI2ZGNlYjcyMCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gImQzZTg1MGRhODMwMjQxYzQyNGQ1NTdhNmEwNzI1MjdlMDllNzg0YWIiCitTUkNSRVZfbWFjaGluZSA/PSAiMDMxNDJhY2JhMDZlOGIzMzg4ODQxMGE1MTgzNThhNjI2ZGNlYjcyMCIKK1NSQ1JFVl9tZXRhID89ICJiZWU1NTRlNTk1ZTQ5Yzk2MzkwMGQxYzc4YzAxYWIyZDA0MTM4MmU3IgorCisjIHJlbWFwIHFlbXVhcm0gdG8gcWVtdWFybWExNSBmb3IgdGhlIDUuNCBrZXJuZWwKKyMgS01BQ0hJTkVfcWVtdWFybSA/PSAicWVtdWFybWExNSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7bmFtZT1tYWNoaW5lO2JyYW5jaD0ke0tCUkFOQ0h9OyBcCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNS40O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJiZWE4MTVlZTI3OTViMmY0MjMwODI2YzBjNmI4ODE0IgorTElOVVhfVkVSU0lPTiA/PSAiNS40LjI3IgorCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKK0RFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgorCitQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgorCitLTUVUQSA9ICJrZXJuZWwtbWV0YSIKK0tDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgorCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtdjUgPSAidmVyc2F0aWxlLXBiLmR0YiIKKworQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXVhcm18cWVtdWFybXY1fHFlbXVhcm02NHxxZW11eDg2fHFlbXVwcGN8cWVtdW1pcHN8cWVtdW1pcHM2NHxxZW11eDg2LTY0fHFlbXVyaXNjdjY0IgorCisjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKK0tFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyBmZWF0dXJlcy9kcm0tYm9jaHMvZHJtLWJvY2hzLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwdGVzdCIsICIgZmVhdHVyZXMvc2NzaS9zY3NpLWRlYnVnLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZS9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZS9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjRiN2NlMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlL3J1bi1wdGVzdApAQCAtMCwwICsxLDkgQEAKKyMhL2Jpbi9zaAorIyB1c2UgdGFyZ2V0PXJlY2hlY2sgaWYgeW91IHdhbnQgdG8gcmVjaGVjayBmYWlsaW5nIHRlc3RzCitbICIkdGFyZ2V0IiA9ICIiIF0gJiYgdGFyZ2V0PWNoZWNrCisKKyMgV2l0aG91dCAtLWlnbm9yZS1leGl0LCB0aGUgdGFwIGhhcm5lc3MgY2F1c2VzIGFueSBGQUlMcyB3aXRoaW4gYQorIyB0ZXN0IHBsYW4gdG8gcmFpc2UgRVJST1JzOyB0aGlzIGlzIGp1c3Qgbm9pc2UuCittYWtlYXJncz0iTE9HX0RSSVZFUl9GTEFHUz0tLWlnbm9yZS1leGl0IHRvcF9zcmNkaXI9JFBXRCB0b3BfYnVpbGRkaXI9JFBXRCIKKworZXhlYyBtYWtlIC1DIHRlc3RzIC1rIC1zICRtYWtlYXJncyAkdGFyZ2V0IDI+L2Rldi9udWxsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTIvMDAwMS1NYWtlLW1hbnBhZ2VzLW11bHRpbGliLWlkZW50aWNhbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlMi8wMDAxLU1ha2UtbWFucGFnZXMtbXVsdGlsaWItaWRlbnRpY2FsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MDFiMTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTIvMDAwMS1NYWtlLW1hbnBhZ2VzLW11bHRpbGliLWlkZW50aWNhbC5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDU2OTg2MTkwZTRiMGMxMDk0NWNlNmFhYTdjYTEwZDZiZDhhMjZhMzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZXJlbXkgUHVobG1hbiA8anB1aGxtYW5AbXZpc3RhLmNvbT4KK0RhdGU6IE1vbiwgOSBNYXIgMjAyMCAyMToxMDozNSArMDAwMAorU3ViamVjdDogW1BBVENIXSBNYWtlIG1hbnBhZ2VzIG11bHRpbGliIGlkZW50aWNhbAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorLS0tCisgZG9jL21hbi9hc2NpaWRvYy1hdHRycy5jb25mLmluIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RvYy9tYW4vYXNjaWlkb2MtYXR0cnMuY29uZi5pbiBiL2RvYy9tYW4vYXNjaWlkb2MtYXR0cnMuY29uZi5pbgoraW5kZXggYWQxMTgzZjEuLmUxMWM3MDMxIDEwMDY0NAorLS0tIGEvZG9jL21hbi9hc2NpaWRvYy1hdHRycy5jb25mLmluCisrKysgYi9kb2MvbWFuL2FzY2lpZG9jLWF0dHJzLmNvbmYuaW4KK0BAIC0xLDcgKzEsNyBAQAorIFthdHRyaWJ1dGVzXQorICMgZGVmYXVsdCB2YWx1ZXMKKy1zeXN0ZW1fcGx1Z2luX3BhdGg9IkBMSUJESVJAL2JhYmVsdHJhY2UyL3BsdWdpbnMiCistc3lzdGVtX3BsdWdpbl9wcm92aWRlcl9wYXRoPSJATElCRElSQC9iYWJlbHRyYWNlMi9wbHVnaW4tcHJvdmlkZXJzIgorK3N5c3RlbV9wbHVnaW5fcGF0aD0iQHByZWZpeEAvbGliKi9iYWJlbHRyYWNlMi9wbHVnaW5zIgorK3N5c3RlbV9wbHVnaW5fcHJvdmlkZXJfcGF0aD0iQHByZWZpeEAvbGliKi9iYWJlbHRyYWNlMi9wbHVnaW4tcHJvdmlkZXJzIgorIGJhYmVsdHJhY2VfdmVyc2lvbj0iQFBBQ0tBR0VfVkVSU0lPTkAiCisgZW5hYmxlX2RlYnVnX2luZm89IkBFTkFCTEVfREVCVUdfSU5GT19WQUxAIgorIGRlZnJkcG9ydD01MzQ0CistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTIvMDAwMS1mcy5jLWluaXRpYWxpemUtb3RoZXJfZW50cnkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTIvMDAwMS1mcy5jLWluaXRpYWxpemUtb3RoZXJfZW50cnkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU2YjNiZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlMi8wMDAxLWZzLmMtaW5pdGlhbGl6ZS1vdGhlcl9lbnRyeS5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDQyZGFlNjkyYjkwNTdkMDNjZTlhMDY1MWYwNjE0NzJlOWRkOTAxMzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaW5nbGkgWXUgPG1pbmdsaS55dUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxMSBNYXIgMjAyMCAwODo0NDo0MiArMDAwMAorU3ViamVjdDogW1BBVENIXSBmcy5jOiBpbml0aWFsaXplIHRoZSBvdGhlcl9lbnRyeSB2YXJpYWJsZQorCitJbml0aWFsaXplIHRoZSBwb2ludGVyIG90aGVyX2VudHJ5IHRvIGZpeCB0aGUgYmVsb3cgZXJyb3I6Cit8IC4uLy4uLy4uLy4uLy4uL2dpdC9zcmMvcGx1Z2lucy9jdGYvZnMtc3JjL2ZzLmM6IEluIGZ1bmN0aW9uICdkc19pbmRleF9pbnNlcnRfZHNfaW5kZXhfZW50cnlfc29ydGVkJzoKK3wgLi4vLi4vLi4vLi4vLi4vZ2l0L3NyYy9wbHVnaW5zL2N0Zi9mcy1zcmMvZnMuYzo3MDI6NTogZXJyb3I6ICdvdGhlcl9lbnRyeScgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCit8ICAgNzAyIHwgICAgIWRzX2luZGV4X2VudHJpZXNfZXF1YWwoZW50cnksIG90aGVyX2VudHJ5KSkgeworCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy5sdHRuZy5vcmcvcGlwZXJtYWlsL2x0dG5nLWRldi8yMDIwLU1hcmNoLzAyOTU0OS5odG1sXQorCitTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPG1pbmdsaS55dUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3BsdWdpbnMvY3RmL2ZzLXNyYy9mcy5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvY3RmL2ZzLXNyYy9mcy5jIGIvc3JjL3BsdWdpbnMvY3RmL2ZzLXNyYy9mcy5jCitpbmRleCBlODc1MjNhMy4uYTZiNTMxNWYgMTAwNjQ0CistLS0gYS9zcmMvcGx1Z2lucy9jdGYvZnMtc3JjL2ZzLmMKKysrKyBiL3NyYy9wbHVnaW5zL2N0Zi9mcy1zcmMvZnMuYworQEAgLTY4MCw3ICs2ODAsNyBAQCB2b2lkIGRzX2luZGV4X2luc2VydF9kc19pbmRleF9lbnRyeV9zb3J0ZWQoCisgCXN0cnVjdCBjdGZfZnNfZHNfaW5kZXhfZW50cnkgKmVudHJ5KQorIHsKKyAJZ3VpbnQgaTsKKy0Jc3RydWN0IGN0Zl9mc19kc19pbmRleF9lbnRyeSAqb3RoZXJfZW50cnk7CisrCXN0cnVjdCBjdGZfZnNfZHNfaW5kZXhfZW50cnkgKm90aGVyX2VudHJ5ID0gTlVMTDsKKyAKKyAJLyogRmluZCB0aGUgc3BvdCB3aGVyZSB0byBpbnNlcnQgdGhpcyBpbmRleCBlbnRyeS4gKi8KKyAJZm9yIChpID0gMDsgaSA8IGluZGV4LT5lbnRyaWVzLT5sZW47IGkrKykgeworLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyLzAwMDEtdGVzdHMtZG8tbm90LXJ1bi10ZXN0LWFwcGxpY2F0aW9ucy1mcm9tLS5saWJzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyLzAwMDEtdGVzdHMtZG8tbm90LXJ1bi10ZXN0LWFwcGxpY2F0aW9ucy1mcm9tLS5saWJzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNWRkZTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTIvMDAwMS10ZXN0cy1kby1ub3QtcnVuLXRlc3QtYXBwbGljYXRpb25zLWZyb20tLmxpYnMucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA1ODI3MTNjYzlhMDEzNDgxZWVlZjI1MzE5NWQ2NDQwMjBmNjM3ZWM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorTWVzc2FnZS1JZDogPDU4MjcxM2NjOWEwMTM0ODFlZWVmMjUzMTk1ZDY0NDAyMGY2MzdlYzQuMTU4MzQwMzYyMi5naXQud2FsbGludXhAZ21haWwuY29tPgorRnJvbTogQW5kZXJzIFdhbGxpbiA8d2FsbGludXhAZ21haWwuY29tPgorRGF0ZTogVGh1LCA1IE1hciAyMDIwIDExOjIwOjA0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3RzOiBkbyBub3QgcnVuIHRlc3QgYXBwbGljYXRpb25zIGZyb20gLmxpYnMKKworQ3Jvc3MgY29tcGlsZSBzcGVjaWZpYyBjaGFuZ2UKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbmRlcnMgV2FsbGluIDx3YWxsaW51eEBnbWFpbC5jb20+CistLS0KKyB0ZXN0cy9saWIvdGVzdF9wbHVnaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9saWIvdGVzdF9wbHVnaW4gYi90ZXN0cy9saWIvdGVzdF9wbHVnaW4KK2luZGV4IDY1MmM5MGNjLi4xZjgxN2M1MCAxMDA3NTUKKy0tLSBhL3Rlc3RzL2xpYi90ZXN0X3BsdWdpbgorKysrIGIvdGVzdHMvbGliL3Rlc3RfcGx1Z2luCitAQCAtMjYsNCArMjYsNCBAQCBmaQorICMgc2hlbGxjaGVjayBzb3VyY2U9Li4vdXRpbHMvdXRpbHMuc2gKKyBzb3VyY2UgIiRVVElMU1NIIgorIAorLSIke0JUX1RFU1RTX0JVSUxERElSfS9saWIvcGx1Z2luIiAiJHtCVF9URVNUU19CVUlMRERJUn0vbGliL3Rlc3QtcGx1Z2luLXBsdWdpbnMvLmxpYnMiCisrIiR7QlRfVEVTVFNfQlVJTERESVJ9L2xpYi9wbHVnaW4iICIke0JUX1RFU1RTX0JVSUxERElSfS9saWIvdGVzdC1wbHVnaW4tcGx1Z2lucyIKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlMi9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTIvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjcyZmUyMjMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTIvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsOSBAQAorIyEvYmluL3NoCisjIHVzZSB0YXJnZXQ9cmVjaGVjayBpZiB5b3Ugd2FudCB0byByZWNoZWNrIGZhaWxpbmcgdGVzdHMKK1sgIiR0YXJnZXQiID0gIiIgXSAmJiB0YXJnZXQ9Y2hlY2sKKworIyBXaXRob3V0IC0taWdub3JlLWV4aXQsIHRoZSB0YXAgaGFybmVzcyBjYXVzZXMgYW55IEZBSUxzIHdpdGhpbiBhCisjIHRlc3QgcGxhbiB0byByYWlzZSBFUlJPUnM7IHRoaXMgaXMganVzdCBub2lzZS4KK21ha2VhcmdzPSJMT0dfRFJJVkVSX0ZMQUdTPS0taWdub3JlLWV4aXQgYWJzX3RvcF9zcmNkaXI9JFBXRCBhYnNfdG9wX2J1aWxkZGlyPSRQV0QgR1JFUD1ncmVwIFNFRD1zZWQgUFlUSE9OPXB5dGhvbjMiCisKK2V4ZWMgbWFrZSAtQyB0ZXN0cyAtayAtcyAkbWFrZWFyZ3MgJHRhcmdldCAyPi9kZXYvbnVsbApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyXzIuMC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyXzIuMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3OTFjNjUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTJfMi4wLjIuYmIKQEAgLTAsMCArMSw5NCBAQAorU1VNTUFSWSA9ICJCYWJlbHRyYWNlMiAtIFRyYWNlIEZvcm1hdCBCYWJlbCBUb3dlciIKK0RFU0NSSVBUSU9OID0gIkJhYmVsdHJhY2UgcHJvdmlkZXMgdHJhY2UgcmVhZCBhbmQgd3JpdGUgbGlicmFyaWVzIGluIGhvc3Qgc2lkZSwgYXMgd2VsbCBhcyBhIHRyYWNlIGNvbnZlcnRlciwgd2hpY2ggdXNlZCB0byBjb252ZXJ0IExUVG5nIDIuMCB0cmFjZXMgaW50byBodW1hbi1yZWFkYWJsZSBsb2cuIgorSE9NRVBBR0UgPSAiaHR0cDovL2JhYmVsdHJhY2Uub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmx0dG5nLm9yZy9wcm9qZWN0cy9iYWJlbHRyYWNlIgorTElDRU5TRSA9ICJNSVQgJiBHUEx2MiAmIExHUEx2Mi4xICYgQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTZhNDU4YzEzZjE4Mzg1YjdiYzUwNjlhNmQ3YjE3NmUiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgdXRpbC1saW51eCBwb3B0IGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQubGludXhmb3VuZGF0aW9uLm9yZy9kaWFtb24vYmFiZWx0cmFjZS5naXQ7YnJhbmNoPXN0YWJsZS0yLjAgXAorCSAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorCSAgIGZpbGU6Ly8wMDAxLXRlc3RzLWRvLW5vdC1ydW4tdGVzdC1hcHBsaWNhdGlvbnMtZnJvbS0ubGlicy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtbWFucGFnZXMtbXVsdGlsaWItaWRlbnRpY2FsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZnMuYy1pbml0aWFsaXplLW90aGVyX2VudHJ5LnBhdGNoIFwKKwkgICIKK1NSQ1JFViA9ICIzMzAwM2MzNTJlZDU2YWE0OWUwYjNkZjI3MmJiYWI2ZmFjMzZjYWU4IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPjIoXC5cZCspKykkIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHRlc3QKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZWJ1Zy1pbmZvIgorCitQQUNLQUdFQ09ORklHID8/PSAibWFucGFnZXMiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICIsIC0tZGlzYWJsZS1tYW4tcGFnZXMsIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUiCisKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2JhYmVsdHJhY2UyL3BsdWdpbnMvKi5hIgorRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9iYWJlbHRyYWNlMi9wbHVnaW5zLyouc28iCisKK0FTTkVFREVEID0gIiIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2ggZ2F3ayBweXRob24zIgorCitkb19jb21waWxlX3B0ZXN0ICgpIHsKKyAgICBtYWtlIC1DIHRlc3RzIGFsbAorfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKyAgICBpbnN0YWxsIC1kICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cyIKKworICAgICMgQ29weSByZXF1aXJlZCBmaWxlcyBmcm9tIHNvdXJjZSBkaXJlY3RvcnkKKyAgICBmb3IgZCBpbiAkKGZpbmQgIiR7U30vdGVzdHMiIC10eXBlIGQgLXByaW50ZiAnJVAgJykgOyBkbworCWluc3RhbGwgLWQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIgorCWZpbmQgIiR7U30vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC1leGVjdXRhYmxlIC10eXBlIGYgXAorCSAgICAgLWV4ZWMgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiIHt9ICsKKwlmaW5kICIke1N9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtbmFtZSAqLnNoIFwKKwkgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSBcOworCWZpbmQgIiR7U30vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC1uYW1lICoucHkgXAorCSAgICAgLWV4ZWMgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiIHt9IFw7CisJZmluZCAiJHtTfS90ZXN0cy8kZCIgLW1heGRlcHRoIDEgLW5hbWUgKi5leHBlY3QgXAorCSAgICAgLWV4ZWMgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiIHt9IFw7CisgICAgZG9uZQorICAgIGluc3RhbGwgLWQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2RhdGEvY3RmLXRyYWNlcy8iCisgICAgY3AgLWEgJHtTfS90ZXN0cy9kYXRhL2N0Zi10cmFjZXMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9kYXRhL2N0Zi10cmFjZXMvCisKKyAgICAjIENvcHkgdGhlIHRlc3RzIGRpcmVjdG9yeSB0cmVlIGFuZCB0aGUgZXhlY3V0YWJsZXMgYW5kCisgICAgIyBNYWtlZmlsZXMgZm91bmQgd2l0aGluLgorICAgIGluc3RhbGwgLUQgIiR7Qn0vdGVzdHMvTWFrZWZpbGUiICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8iCisgICAgZm9yIGQgaW4gJChmaW5kICIke0J9L3Rlc3RzIiAtdHlwZSBkIC1ub3QgLW5hbWUgLmxpYnMgLXByaW50ZiAnJVAgJykgOyBkbworCWluc3RhbGwgLWQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIgorCWZpbmQgIiR7Qn0vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC1leGVjdXRhYmxlIC10eXBlIGYgXAorCSAgICAgLWV4ZWMgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiIHt9ICsKKwl0ZXN0IC1yICIke0J9L3Rlc3RzLyRkL01ha2VmaWxlIiAmJiBcCisJICAgIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiAiJHtCfS90ZXN0cy8kZC9NYWtlZmlsZSIKKwlmaW5kICIke0J9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtbmFtZSAqLnNoIFwKKwkgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSBcOworICAgIGRvbmUKKworICAgIGZvciBkIGluICQoZmluZCAiJHtCfS90ZXN0cyIgLXR5cGUgZCAtbmFtZSAubGlicyAtcHJpbnRmICclUCAnKSA7IGRvCisJZm9yIGYgaW4gJChmaW5kICIke0J9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtZXhlY3V0YWJsZSAtdHlwZSBmIC1wcmludGYgJyVQICcpIDsgZG8KKwkgICAgY3AgJHtCfS90ZXN0cy8kZC8kZiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9gZGlybmFtZSAkZGAvJGYKKwlkb25lCisgICAgZG9uZQorCisgICAgIyBQcmV2ZW50IGF0dGVtcHRzIHRvIHVwZGF0ZSBNYWtlZmlsZXMgZHVyaW5nIHRlc3QgcnVucywgYW5kCisgICAgIyBzaWxlbmNlICJNYWtpbmcgY2hlY2sgaW4gJFNVQkRJUiIgbWVzc2FnZXMuCisgICAgZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC1uYW1lIE1ha2VmaWxlIC10eXBlIGYgLWV4ZWMgXAorCSBzZWQgLWkgXAorCSAtZSAnL01ha2VmaWxlOi8sL14kL2QnIFwKKwkgLWUgJy8lOiAlLmluLywvXiQvZCcgXAorCSAtZSAnL2VjaG8gIk1ha2luZyAkJHRhcmdldCBpbiAkJHN1YmRpciI7IFxcL2QnIFwKKwkgLWUgJ3MvXnNyY2RpciA9IFwoLipcKS9zcmNkaXIgPSAuLycgXAorCSAtZSAncy9eYnVpbGRkaXIgPSBcKC4qXCkvYnVpbGRkaXIgPSAuLycgXAorCSAtZSAncy9eYWxsLWFtOi4qL2FsbC1hbTovJyBcCisJIHt9ICsKKworICAgICMgU3Vic3RpdHV0ZSBsaW5rcyB0byBpbnN0YWxsZWQgYmluYXJpZXMuCisgICAgaW5zdGFsbCAtZCAiJHtEfSR7UFRFU1RfUEFUSH0vc3JjL2NsaS8iCisgICAgbG4gLXMgIiR7YmluZGlyfS9iYWJlbHRyYWNlMiIgJHtEfSR7UFRFU1RfUEFUSH0vc3JjL2NsaS8KKworICAgICMgUmVtb3ZlIGFyY2hpdGVjaHR1cmUgc3BlY2lmaWMgdGVzdGZpbGVzCisgICAgcm0gLXJmICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2RhdGEvcGx1Z2lucy9mbHQubHR0bmctdXRpbHMuZGVidWctaW5mby8qCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWVmNmQwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJCYWJlbHRyYWNlIC0gVHJhY2UgRm9ybWF0IEJhYmVsIFRvd2VyIgotREVTQ1JJUFRJT04gPSAiQmFiZWx0cmFjZSBwcm92aWRlcyB0cmFjZSByZWFkIGFuZCB3cml0ZSBsaWJyYXJpZXMgaW4gaG9zdCBzaWRlLCBhcyB3ZWxsIGFzIGEgdHJhY2UgY29udmVydGVyLCB3aGljaCB1c2VkIHRvIGNvbnZlcnQgTFRUbmcgMi4wIHRyYWNlcyBpbnRvIGh1bWFuLXJlYWRhYmxlIGxvZy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmVmZmljaW9zLmNvbS9iYWJlbHRyYWNlLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmx0dG5nLm9yZy9wcm9qZWN0cy9iYWJlbHRyYWNlIgotTElDRU5TRSA9ICJNSVQgJiBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc2YmExNWRkNzZhMjQ4ZTFkZDUyNmJjYTBlMjEyNWZhIgotCi1ERVBFTkRTID0gImdsaWItMi4wIHV0aWwtbGludXggcG9wdCBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmxpbnV4Zm91bmRhdGlvbi5vcmcvZGlhbW9uL2JhYmVsdHJhY2UuZ2l0O2JyYW5jaD1zdGFibGUtMS41IgotU1JDUkVWID0gImQ0MDE0YWVlZjRiODlhNGFhYWIxYWY0MmQ3YjBkMTQzZDYyZGEwZmYiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+XGQrKFwuXGQrKSspJCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZGVidWctaW5mbyIKLQotQVNORUVERUQgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDI0OTJhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjguYmIKQEAgLTAsMCArMSw5OCBAQAorU1VNTUFSWSA9ICJCYWJlbHRyYWNlIC0gVHJhY2UgRm9ybWF0IEJhYmVsIFRvd2VyIgorREVTQ1JJUFRJT04gPSAiQmFiZWx0cmFjZSBwcm92aWRlcyB0cmFjZSByZWFkIGFuZCB3cml0ZSBsaWJyYXJpZXMgaW4gaG9zdCBzaWRlLCBhcyB3ZWxsIGFzIGEgdHJhY2UgY29udmVydGVyLCB3aGljaCB1c2VkIHRvIGNvbnZlcnQgTFRUbmcgMi4wIHRyYWNlcyBpbnRvIGh1bWFuLXJlYWRhYmxlIGxvZy4iCitIT01FUEFHRSA9ICJodHRwOi8vYmFiZWx0cmFjZS5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MubHR0bmcub3JnL3Byb2plY3RzL2JhYmVsdHJhY2UiCitMSUNFTlNFID0gIk1JVCAmIEdQTHYyICYgTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03NmJhMTVkZDc2YTI0OGUxZGQ1MjZiY2EwZTIxMjVmYSIKKworREVQRU5EUyA9ICJnbGliLTIuMCB1dGlsLWxpbnV4IHBvcHQgYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIgorCitTUkNfVVJJID0gImdpdDovL2dpdC5saW51eGZvdW5kYXRpb24ub3JnL2RpYW1vbi9iYWJlbHRyYWNlLmdpdDticmFuY2g9c3RhYmxlLTEuNSBcCisJICAgZmlsZTovL3J1bi1wdGVzdCBcCisJICAiCitTUkNSRVYgPSAiMDU0YTU0YWUxMGIwMWEyNzFhZmM0ZjE5NDk2YzA0MWIxMGZiNDE0YyIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj4xKFwuXGQrKSspJCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHB0ZXN0CisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZGVidWctaW5mbyIKKworQVNORUVERUQgPSAiIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCBnYXdrIgorCithZGR0YXNrIGRvX3BhdGNoX3B0ZXN0X3BhdGggYWZ0ZXIgZG9fcGF0Y2ggYmVmb3JlIGRvX2NvbmZpZ3VyZQorZG9fcGF0Y2hfcHRlc3RfcGF0aCAoKSB7CisgICAgZm9yIGYgaW4gJChncmVwIC1sIC1yIGFic190b3Bfc3JjZGlyICR7U30vdGVzdHMpOyBkbworCXNlZCAtaSAnczpcQGFic190b3Bfc3JjZGlyXEA6JHtQVEVTVF9QQVRIfTonICR7Zn0KKyAgICBkb25lCisKKyAgICBmb3IgZiBpbiAkKGdyZXAgLWwgLXIgYWJzX3RvcF9idWlsZGRpciAke1N9L3Rlc3RzKTsgZG8KKwlzZWQgLWkgJ3M6XEBhYnNfdG9wX2J1aWxkZGlyXEA6JHtQVEVTVF9QQVRIfTonICR7Zn0KKyAgICBkb25lCisgICAgZm9yIGYgaW4gJChncmVwIC1sIC1yIEdSRVAgJHtTfS90ZXN0cyk7IGRvCisJc2VkIC1pICdzOlxAR1JFUFxAOmdyZXA6JyAke2Z9CisgICAgZG9uZQorCisgICAgZm9yIGYgaW4gJChncmVwIC1sIC1yIFNFRCAke1N9L3Rlc3RzKTsgZG8KKwlzZWQgLWkgJ3M6XEBTRURcQDpzZWQ6JyAke2Z9CisgICAgZG9uZQorfQorCitkb19jb21waWxlX3B0ZXN0ICgpIHsKKyAgICBtYWtlIC1DIHRlc3RzIGFsbAorfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKyAgICAjIENvcHkgcmVxdWlyZWQgZmlsZXMgZnJvbSBzb3VyY2UgZGlyZWN0b3J5CisgICAgZm9yIGYgaW4gY29uZmlnL3RhcC1kcml2ZXIuc2ggY29uZmlnL3Rlc3QtZHJpdmVyOyBkbworCWluc3RhbGwgLUQgIiR7U30vJGYiICIke0R9JHtQVEVTVF9QQVRIfS8kZiIKKyAgICBkb25lCisgICAgaW5zdGFsbCAtZCAiJGYiICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9jdGYtdHJhY2VzLyIKKyAgICBjcCAtYSAke1N9L3Rlc3RzL2N0Zi10cmFjZXMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9jdGYtdHJhY2VzLworCisgICAgIyBDb3B5IHRoZSB0ZXN0cyBkaXJlY3RvcnkgdHJlZSBhbmQgdGhlIGV4ZWN1dGFibGVzIGFuZAorICAgICMgTWFrZWZpbGVzIGZvdW5kIHdpdGhpbi4KKyAgICBpbnN0YWxsIC1EICIke0J9L3Rlc3RzL01ha2VmaWxlIiAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvIgorICAgIGZvciBkIGluICQoZmluZCAiJHtCfS90ZXN0cyIgLXR5cGUgZCAtbm90IC1uYW1lIC5saWJzIC1wcmludGYgJyVQICcpIDsgZG8KKwlpbnN0YWxsIC1kICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIKKwlmaW5kICIke0J9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtZXhlY3V0YWJsZSAtdHlwZSBmIFwKKwkgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSArCisJdGVzdCAtciAiJHtCfS90ZXN0cy8kZC9NYWtlZmlsZSIgJiYgXAorCSAgICBpbnN0YWxsIC10ICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIgIiR7Qn0vdGVzdHMvJGQvTWFrZWZpbGUiCisJZmluZCAiJHtCfS90ZXN0cy8kZCIgLW1heGRlcHRoIDEgLW5hbWUgKi5zaCBcCisJICAgICAtZXhlYyBpbnN0YWxsIC10ICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIge30gXDsKKyAgICBkb25lCisKKyAgICBmb3IgZCBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMiIC10eXBlIGQgLW5hbWUgLmxpYnMgLXByaW50ZiAnJVAgJykgOyBkbworCWZvciBmIGluICQoZmluZCAiJHtCfS90ZXN0cy8kZCIgLW1heGRlcHRoIDEgLWV4ZWN1dGFibGUgLXR5cGUgZiAtcHJpbnRmICclUCAnKSA7IGRvCisJICAgIGNwICR7Qn0vdGVzdHMvJGQvJGYgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvYGRpcm5hbWUgJGRgLyRmCisJZG9uZQorICAgIGRvbmUKKworICAgIGluc3RhbGwgLUQgJHtCfS9mb3JtYXRzL2N0Zi9tZXRhZGF0YS8ubGlicy9jdGYtcGFyc2VyLXRlc3QgXAorCSAgICAke0R9JHtQVEVTVF9QQVRIfS9mb3JtYXRzL2N0Zi9tZXRhZGF0YS9jdGYtcGFyc2VyLXRlc3QKKworICAgICMgUHJldmVudCBhdHRlbXB0cyB0byB1cGRhdGUgTWFrZWZpbGVzIGR1cmluZyB0ZXN0IHJ1bnMsIGFuZAorICAgICMgc2lsZW5jZSAiTWFraW5nIGNoZWNrIGluICRTVUJESVIiIG1lc3NhZ2VzLgorICAgIGZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtbmFtZSBNYWtlZmlsZSAtdHlwZSBmIC1leGVjIFwKKwkgc2VkIC1pIFwKKwkgLWUgJy9NYWtlZmlsZTovLC9eJC9kJyBcCisJIC1lICcvJChjaGVja19TQ1JJUFRTKS9zL14vIy8nIFwKKwkgLWUgJy8lOiAlLmluLywvXiQvZCcgXAorCSAtZSAnL2VjaG8gIk1ha2luZyAkJHRhcmdldCBpbiAkJHN1YmRpciI7IFxcL2QnIFwKKwkgLWUgJ3MvXnNyY2RpciA9IFwoLipcKS9zcmNkaXIgPSAuLycgXAorCSAtZSAncy9eYnVpbGRkaXIgPSBcKC4qXCkvYnVpbGRkaXIgPSAuLycgXAorCSAtZSAncy9eYWxsLWFtOi4qL2FsbC1hbTovJyBcCisJIHt9ICsKKworICAgICMgUmVtb3ZlIHBhdGggdG8gYmFiZWx0cmFjZS4KKyAgICBmb3IgZiBpbiAkKGdyZXAgLWwgLXIgIl5CQUJFTFRSQUNFX0JJTiIgJHtEfSR7UFRFU1RfUEFUSH0pOyBkbworCXNlZCAtaSAnczpeQkFCRUxUUkFDRV9CSU4uKjpCQUJFTFRSQUNFX0JJTj0vdXNyL2Jpbi9iYWJlbHRyYWNlOicgJHtmfQorICAgIGRvbmUKKyAgICBmb3IgZiBpbiAkKGdyZXAgLWwgLXIgIl5CVEJJTiIgJHtEfSR7UFRFU1RfUEFUSH0pOyBkbworCXNlZCAtaSAnczpeQlRCSU4uKjpCVEJJTj0vdXNyL2Jpbi9iYWJlbHRyYWNlOicgJHtmfQorICAgIGRvbmUKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzXzIuMTAuMTEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjEwLjExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODlhM2JlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzXzIuMTAuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1TRUNUSU9OID0gImRldmVsIgotU1VNTUFSWSA9ICJMaW51eCBUcmFjZSBUb29sa2l0IEtFUk5FTCBNT0RVTEUiCi1ERVNDUklQVElPTiA9ICJUaGUgbHR0bmctbW9kdWxlcyAyLjAgcGFja2FnZSBjb250YWlucyB0aGUga2VybmVsIHRyYWNlciBtb2R1bGVzIgotTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyICYgTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzQ2MTNkMWY4YTk1ODdiZDdiMzY2MTkxODMwMzY0YjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3BsLTIuMC50eHQ7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xncGwtMi4xLnR4dDttZDU9MjQzYjcyNWQ3MWJiNWRmNGExZTU5MjBiMzQ0Yjg2YWQgXAotICAgICAgICAgICAgICAgICAgICAiCi0KLWluaGVyaXQgbW9kdWxlCi0KLUNPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0fGkuODZ8cG93ZXJwY3xhYXJjaDY0fG1pcHN8bmlvczJ8YXJtfHJpc2N2KS4qLWxpbnV4JwotCi1TUkNfVVJJID0gImh0dHBzOi8vbHR0bmcub3JnL2ZpbGVzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1Eby1ub3QtZmFpbC1pZi1DT05GSUdfVFJBQ0VQT0lOVFMtaXMtbm90LWVuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0JVSUxEX1JVTlRJTUVfQlVHX09OLXZzLWdjYzcucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjNjE4ZmI2NDY1MTRkZmMxYmY5MTBjZmQ3Y2RhNDI1NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZjkxZTM5YjJlOGU0NmQ4YmJiYTJiNGM4YzE2MTRmMWZiMzgwNjExY2QxYTFmY2NjMWQxODU5YmUyNjExMmYxIgotCi1leHBvcnQgSU5TVEFMTF9NT0RfRElSPSJrZXJuZWwvbHR0bmctbW9kdWxlcyIKLQotRVhUUkFfT0VNQUtFICs9ICJLRVJORUxESVI9JyR7U1RBR0lOR19LRVJORUxfRElSfSciCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgRGVsZXRlIGVtcHR5IGRpcmVjdG9yaWVzIHRvIGF2b2lkIFFBIGZhaWx1cmVzIGlmIG5vIG1vZHVsZXMgd2VyZSBidWlsdAotCWZpbmQgJHtEfS8ke25vbmFyY2hfYmFzZV9saWJkaXJ9IC1kZXB0aCAtdHlwZSBkIC1lbXB0eSAtZXhlYyBybWRpciB7fSBcOwotfQotCi1weXRob24gZG9fcGFja2FnZV9wcmVwZW5kKCkgewotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ0QnKSwgZC5nZXRWYXIoJ25vbmFyY2hfYmFzZV9saWJkaXInKVsxOl0sICdtb2R1bGVzJykpOgotICAgICAgICBiYi53YXJuKCIlczogbm8gbW9kdWxlcyB3ZXJlIGNyZWF0ZWQ7IHRoaXMgbWF5IGJlIGR1ZSB0byBDT05GSUdfVFJBQ0VQT0lOVFMgbm90IGJlaW5nIGVuYWJsZWQgaW4geW91ciBrZXJuZWwuIiAlIGQuZ2V0VmFyKCdQTicpKQotfQotCi1CQkNMQVNTRVhURU5EID0gImRldnVwc3RyZWFtOnRhcmdldCIKLUxJQ19GSUxFU19DSEtTVU1fY2xhc3MtZGV2dXBzdHJlYW0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM0NjEzZDFmOGE5NTg3YmQ3YjM2NjE5MTgzMDM2NGIzIgotREVGQVVMVF9QUkVGRVJFTkNFX2NsYXNzLWRldnVwc3RyZWFtID0gIi0xIgotU1JDX1VSSV9jbGFzcy1kZXZ1cHN0cmVhbSA9ICJnaXQ6Ly9naXQubHR0bmcub3JnL2x0dG5nLW1vZHVsZXM7YnJhbmNoPXN0YWJsZS0yLjEwIFwKLSAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLURvLW5vdC1mYWlsLWlmLUNPTkZJR19UUkFDRVBPSU5UUy1pcy1ub3QtZW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQlVJTERfUlVOVElNRV9CVUdfT04tdnMtZ2NjNy5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ1JFVl9jbGFzcy1kZXZ1cHN0cmVhbSA9ICI2MjRhY2E1ZDc1MDdmYmQxMWVhNGExYTQ3NGMzYWExMDMxYmQ5YTMxIgotUFZfY2xhc3MtZGV2dXBzdHJlYW0gPSAiMi4xMC4xMCtnaXQke1NSQ1BWfSIKLVNfY2xhc3MtZGV2dXBzdHJlYW0gPSAiJHtXT1JLRElSfS9naXQiCi1TUkNSRVZfRk9STUFUID89ICJsdHRuZ19naXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjExLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjExLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZmZjA5NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzXzIuMTEuMi5iYgpAQCAtMCwwICsxLDQzIEBACitTRUNUSU9OID0gImRldmVsIgorU1VNTUFSWSA9ICJMaW51eCBUcmFjZSBUb29sa2l0IEtFUk5FTCBNT0RVTEUiCitERVNDUklQVElPTiA9ICJUaGUgbHR0bmctbW9kdWxlcyAyLjAgcGFja2FnZSBjb250YWlucyB0aGUga2VybmVsIHRyYWNlciBtb2R1bGVzIgorTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyICYgTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9M2Y4ODJkNDMxZGMwZjMyZjFmNDRjMDcwN2FhNDExMjgiCisKK2luaGVyaXQgbW9kdWxlCisKK0NPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0fGkuODZ8cG93ZXJwY3xhYXJjaDY0fG1pcHN8bmlvczJ8YXJtfHJpc2N2KS4qLWxpbnV4JworCitTUkNfVVJJID0gImh0dHBzOi8vbHR0bmcub3JnL2ZpbGVzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1Eby1ub3QtZmFpbC1pZi1DT05GSUdfVFJBQ0VQT0lOVFMtaXMtbm90LWVuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0JVSUxEX1JVTlRJTUVfQlVHX09OLXZzLWdjYzcucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZTNiYzhjZmIyNjRmYTEzZjM3NDYxOGI0NmYxNzBlNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4YTQyMjQwODEzYjhmZDFkMDAxODM1Y2Q2ZjVlYzY4N2Y3ZDdmM2IyNjA3MGQ0ZTIxNjA0YzM1YTUxYTY0NDFkIgorCitleHBvcnQgSU5TVEFMTF9NT0RfRElSPSJrZXJuZWwvbHR0bmctbW9kdWxlcyIKKworRVhUUkFfT0VNQUtFICs9ICJLRVJORUxESVI9JyR7U1RBR0lOR19LRVJORUxfRElSfSciCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgRGVsZXRlIGVtcHR5IGRpcmVjdG9yaWVzIHRvIGF2b2lkIFFBIGZhaWx1cmVzIGlmIG5vIG1vZHVsZXMgd2VyZSBidWlsdAorCWZpbmQgJHtEfS8ke25vbmFyY2hfYmFzZV9saWJkaXJ9IC1kZXB0aCAtdHlwZSBkIC1lbXB0eSAtZXhlYyBybWRpciB7fSBcOworfQorCitweXRob24gZG9fcGFja2FnZV9wcmVwZW5kKCkgeworICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ0QnKSwgZC5nZXRWYXIoJ25vbmFyY2hfYmFzZV9saWJkaXInKVsxOl0sICdtb2R1bGVzJykpOgorICAgICAgICBiYi53YXJuKCIlczogbm8gbW9kdWxlcyB3ZXJlIGNyZWF0ZWQ7IHRoaXMgbWF5IGJlIGR1ZSB0byBDT05GSUdfVFJBQ0VQT0lOVFMgbm90IGJlaW5nIGVuYWJsZWQgaW4geW91ciBrZXJuZWwuIiAlIGQuZ2V0VmFyKCdQTicpKQorfQorCitCQkNMQVNTRVhURU5EID0gImRldnVwc3RyZWFtOnRhcmdldCIKK0xJQ19GSUxFU19DSEtTVU1fY2xhc3MtZGV2dXBzdHJlYW0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTNmODgyZDQzMWRjMGYzMmYxZjQ0YzA3MDdhYTQxMTI4IgorREVGQVVMVF9QUkVGRVJFTkNFX2NsYXNzLWRldnVwc3RyZWFtID0gIi0xIgorU1JDX1VSSV9jbGFzcy1kZXZ1cHN0cmVhbSA9ICJnaXQ6Ly9naXQubHR0bmcub3JnL2x0dG5nLW1vZHVsZXM7YnJhbmNoPXN0YWJsZS0yLjExIFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLURvLW5vdC1mYWlsLWlmLUNPTkZJR19UUkFDRVBPSU5UUy1pcy1ub3QtZW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQlVJTERfUlVOVElNRV9CVUdfT04tdnMtZ2NjNy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ1JFVl9jbGFzcy1kZXZ1cHN0cmVhbSA9ICIxN2M0MTM5NTM2MDNmMDYzZjJhOWQ2YzM3ODhiZWM5MTRjZTZmOTU1IgorUFZfY2xhc3MtZGV2dXBzdHJlYW0gPSAiMi4xMS4yK2dpdCR7U1JDUFZ9IgorU19jbGFzcy1kZXZ1cHN0cmVhbSA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFVl9GT1JNQVQgPz0gImx0dG5nX2dpdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLVNraXAtd2hlbi10ZXN0YXBwLWlzLW5vdC1wcmVzZW50LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDEtU2tpcC13aGVuLXRlc3RhcHAtaXMtbm90LXByZXNlbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjOWY3ZTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDEtU2tpcC13aGVuLXRlc3RhcHAtaXMtbm90LXByZXNlbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MTAgKzAsMCBAQAotRnJvbSA5NWMyN2U2YWNjZWFlZGE1NWM3MjliOWU5MmU1OTQzMjJhZGVmMTNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSm9uYXRoYW4gUmFqb3R0ZSA8am9uYXRoYW4ucmFqb3R0ZS1qdWxpZW5AZWZmaWNpb3MuY29tPgotRGF0ZTogV2VkLCAzIEFwciAyMDE5IDE2OjMxOjE4IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggbHR0bmctdG9vbHNdIFNraXAgd2hlbiB0ZXN0YXBwIGlzIG5vdCBwcmVzZW50Ci0KLVdlIGV4cGVjdCBsdHRuZy11c3QgZG8gYmUgcHJlc2VudCwgdGhpcyBpcyBhIHdyb25nIGFzc3VtcHRpb25zLgotCi1UaGlzIGlzIGEgcXVpY2sgZml4LiBUaGUgcmVhbCBmaXggaXMgdG8gZWl0aGVyIGRldGVjdCBhdCBydW50aW1lCi1sdHRuZy11c3Qgc3VwcG9ydCBvciBhdCBidWlsZCB0aW1lIChIQVZFX0xJQkxUVE5HX1VTVF9DVEwpLgotCi1UaGlzIHByZXZlbnQgaGFuZyBmb3IgbWFrZSBjaGVjayBkb25lIG9uIGEgYnVpbGQgY29uZmlndXJlZCB3aXRoCi0tLXdpdGhvdXQtbHR0bmctdXN0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW290aGVyXSAKLVJlYXNvbjogVGhpcyBwYXRjaCBpcyBpbmFwcHJvcHJpYXRlIGZvciB1cHN0cmVhbSBmb3IgMi4xMCBzdGFibGUgcmVsZWFzZSAKLXNpbmNlIHdlIGRvIG5vdCBiYWNrcG9ydCAic3VwZXJmaWNpYWwiIGZpeCB0byB0aGUgdGVzdCBzdWl0ZS4gV2UgZG8gCi1iYWNrcG9ydCB3aGVuIGEgdGVzdCBpcyBicm9rZW4uIFRoZSBmYWN0IHRoYXQgb24gLS13aXRob3V0LWx0dG5nLXVzdCAKLWhhbmcgaXMgbm90IGEgImJyb2tlbiIgdGVzdCBwZXItc2VlLiBTdGlsbCwgYSB2YXJpYXRpb24gb2YgdGhpcyBmaXggd2lsbCAKLWJlIHVwc3RyZWFtZWQgaW4gb3VyIG1hc3RlciBicmFuY2ggYW5kIHBvc3NpYmx5IDIuMTEuIFRoZSB1cHN0cmVhbWVkIAotdmVyc2lvbiB3aWxsIHNwbGl0IHRoZSB0ZXN0IGluIGtlcm5lbC91c3QgdGVzdCBhbmQgc2tpcCB0aGVtIGF0IHRoZSAKLWJ1aWxkIHN5c3RlbSBsZXZlbC4gVGhpcyBwYXRjaCBpcyBtb3JlIHN1Y2NpbmN0LgotCi1TaWduZWQtb2ZmLWJ5OiBKb25hdGhhbiBSYWpvdHRlIDxqb25hdGhhbi5yYWpvdHRlLWp1bGllbkBlZmZpY2lvcy5jb20+Ci0tLS0KLSB0ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2NyYXNoL3Rlc3RfY3Jhc2ggICAgICAgfCAgNCArKwotIC4uLi9yZWdyZXNzaW9uL3Rvb2xzL2V4Y2x1c2lvbi90ZXN0X2V4Y2x1c2lvbiB8ICA0ICsrCi0gLi4uL3Rvb2xzL2ZpbHRlcmluZy90ZXN0X3ZhbGlkX2ZpbHRlciAgICAgICAgIHwgMjEgKysrKy0tCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9oZWFsdGgvdGVzdF90aHJlYWRfb2sgIHwgMjkgKysrKystLS0KLSB0ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvTWFrZWZpbGUuYW0gICAgICAgfCAgMiAtCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL3Rlc3RfbHR0bmdfdXN0ICAgIHwgIDQgKysKLSB0ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvdGVzdF91c3QgICAgICAgICAgfCAgNCArKwotIC4uLi90b29scy9saXZlL3Rlc3RfdXN0X3RyYWNlZmlsZV9jb3VudCAgICAgICB8ICA0ICsrCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9taS90ZXN0X21pICAgICAgICAgICAgIHwgIDQgKysKLSAuLi4vbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX211bHRpX2FwcCAgfCAxOCArKystLQotIC4uLi90b29scy9ub3RpZmljYXRpb24vdGVzdF9ub3RpZmljYXRpb25fdXN0ICB8ICA0ICsrCi0gLi4uL3JlZ3Jlc3Npb24vdG9vbHMvcmVnZW4tbWV0YWRhdGEvdGVzdF91c3QgIHwgIDIgKy0KLSAuLi4vcmVncmVzc2lvbi90b29scy9yZWdlbi1zdGF0ZWR1bXAvdGVzdF91c3QgfCAgMiArLQotIC4uLi9yZWdyZXNzaW9uL3Rvb2xzL3NhdmUtbG9hZC90ZXN0X2F1dG9sb2FkICB8ICA3ICsrCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9sb2FkICAgIHwgIDggKysrCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9zYXZlICAgIHwgIDcgKysKLSAuLi4vcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdGVzdF91c3RfZmFzdCAgfCAgMiArLQotIC4uLi9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9sb25nICB8ICAyICstCi0gLi4uL3Rvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9zdHJlYW1pbmcgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy91c3RfdGVzdCAgICAgfCAgMiArLQotIC4uLi9zdHJlYW1pbmcvdGVzdF9oaWdoX3Rocm91Z2hwdXRfbGltaXRzICAgICB8ICAyICstCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9zdHJlYW1pbmcvdGVzdF91c3QgICAgIHwgIDIgKy0KLSAuLi4vdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9jb3VudCAgICAgfCAgMiArLQotIC4uLi90cmFjZWZpbGUtbGltaXRzL3Rlc3RfdHJhY2VmaWxlX3NpemUgICAgICB8ICAyICstCi0gLi4uL3Rvb2xzL3dpbGRjYXJkL3Rlc3RfZXZlbnRfd2lsZGNhcmQgICAgICAgIHwgNjcgKysrKysrKysrKy0tLS0tLS0tLQotIDI1IGZpbGVzIGNoYW5nZWQsIDE0NyBpbnNlcnRpb25zKCspLCA2MCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvY3Jhc2gvdGVzdF9jcmFzaCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvY3Jhc2gvdGVzdF9jcmFzaAotaW5kZXggOGM2MmM1MTNkLi4zY2JlOTc2ODggMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2NyYXNoL3Rlc3RfY3Jhc2gKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvY3Jhc2gvdGVzdF9jcmFzaAotQEAgLTM1LDYgKzM1LDEwIEBAIE5VTV9URVNUUz03NwotIAotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotK2lmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0rCXBsYW5fc2tpcF9hbGwgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLStmaQotKwotICMgR2xvYmFsIGRlY2xhcmF0aW9uIGZvciBzaW1wbGlmaWNhdGlvbgotIExUVE5HX0NSQVNIPSRURVNURElSLy4uL3NyYy9iaW4vbHR0bmctY3Jhc2gvJENSQVNIX0JJTgotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvZXhjbHVzaW9uL3Rlc3RfZXhjbHVzaW9uIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9leGNsdXNpb24vdGVzdF9leGNsdXNpb24KLWluZGV4IDk0OWNkNDFkZi4uNDJlNGQ3MmZiIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9leGNsdXNpb24vdGVzdF9leGNsdXNpb24KLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvZXhjbHVzaW9uL3Rlc3RfZXhjbHVzaW9uCi1AQCAtMzAsNiArMzAsMTAgQEAgTlVNX1RFU1RTPTE0OQotIAotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotK2lmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0rCXBsYW5fc2tpcF9hbGwgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLStmaQotKwotIGZ1bmN0aW9uIGVuYWJsZV91c3RfbHR0bmdfYWxsX2V2ZW50X2V4Y2x1c2lvbigpCi0gewotIAlzZXNzX25hbWU9IiQxIgotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvZmlsdGVyaW5nL3Rlc3RfdmFsaWRfZmlsdGVyIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9maWx0ZXJpbmcvdGVzdF92YWxpZF9maWx0ZXIKLWluZGV4IDE2M2IzMjE4Mi4uMWU4ZGE2MzBiIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9maWx0ZXJpbmcvdGVzdF92YWxpZF9maWx0ZXIKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvZmlsdGVyaW5nL3Rlc3RfdmFsaWRfZmlsdGVyCi1AQCAtNDE4LDEyICs0MTgsMTggQEAgaXNzdWVfMzU2X2ZpbHRlcis9ImludGZpZWxkID4gNCAmJiBpbnRmaWVsZCA+IDUgJiYgIgotIGlzc3VlXzM1Nl9maWx0ZXIrPSJpbnRmaWVsZCA+IDYgJiYgaW50ZmllbGQgPiA3ICYmICIKLSBpc3N1ZV8zNTZfZmlsdGVyKz0iaW50ZmllbGQgPiA4IHx8IGludGZpZWxkID4gMCIKLSAKLStCSU5fTkFNRT0iZ2VuLXVzdC1ldmVudHMiCi0rCi0rc2tpcF91c3Q9MQotK2lmIFsgISAteCAiJENVUkRJUi8kQklOX05BTUUiIF07IHRoZW4KLSsJc2tpcF91c3Q9MAotKwlza2lwIDAgIk5vIFVTVCBuZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iICROVU1fVVNUX1RFU1RTCi0rZmkKLSsKLSBzdGFydF9sdHRuZ19zZXNzaW9uZAotIAotICMjIyBVU1QgVEVTVFMKLSAKLS1CSU5fTkFNRT0iZ2VuLXVzdC1ldmVudHMiCi0tCi0gS0lSS19LUkFVU1NfVEVTVFM9KAotIAkjIHRoZSB0ZXN0cyBiZWxvdyB3ZXJlIHdyaXR0ZW4gYnkgS2lyayBLcmF1c3MgaW4gdGhpcyBhcnRpY2xlOgotIAkjIGh0dHA6Ly93d3cuZHJkb2Jicy5jb20vYXJjaGl0ZWN0dXJlLWFuZC1kZXNpZ24vbWF0Y2hpbmctd2lsZGNhcmRzLWFuLWVtcGlyaWNhbC13YXktdG8tdC8yNDAxNjkxMjMKLUBAIC04OTcsOSArOTAzLDYgQEAgVVNUX1NUUl9GSUxURVJTPSgKLSAJRU5ECi0gKQotIAotLWlmIFsgISAteCAiJENVUkRJUi8kQklOX05BTUUiIF07IHRoZW4KLS0JQkFJTF9PVVQgIk5vIFVTVCBuZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0tZmkKLSAKLSBJRlM9IiRPTERJRlMiCi0gCi1AQCAtOTEwLDYgKzkxMywxMCBAQCBpPTAKLSB3aGlsZSB0cnVlOyBkbwotIAl2YWxpZGF0b3I9IiR7VVNUX0ZJTFRFUlNbJGldfSIKLSAKLSsJaWYgWyAkc2tpcF91c3QgLWVxIDAgXTsgdGhlbgotKwkJYnJlYWsKLSsJZmkKLSsKLSAJaWYgWyAiJHZhbGlkYXRvciIgPSBFTkQgXTsgdGhlbgotIAkJYnJlYWsKLSAJZmkKLUBAIC05MjksNiArOTM2LDEwIEBAIGk9MAotIHdoaWxlIHRydWU7IGRvCi0gCXZhbGlkYXRvcj0iJHtVU1RfU1RSX0ZJTFRFUlNbJGldfSIKLSAKLSsJaWYgWyAkc2tpcF91c3QgLWVxIDAgXTsgdGhlbgotKwkJYnJlYWsKLSsJZmkKLSsKLSAJaWYgWyAiJHZhbGlkYXRvciIgPSBFTkQgXTsgdGhlbgotIAkJYnJlYWsKLSAJZmkKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2hlYWx0aC90ZXN0X3RocmVhZF9vayBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvaGVhbHRoL3Rlc3RfdGhyZWFkX29rCi1pbmRleCBlODFkNmVkMjQuLjg0OWI3ZTcxZiAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvaGVhbHRoL3Rlc3RfdGhyZWFkX29rCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2hlYWx0aC90ZXN0X3RocmVhZF9vawotQEAgLTI3LDYgKzI3LDkgQEAgQ0hBTk5FTF9OQU1FPSJ0ZXN0Y2hhbiIKLSBIRUFMVEhfQ0hFQ0tfQklOPSJoZWFsdGhfY2hlY2siCi0gTlVNX1RFU1RTPTE3Ci0gU0xFRVBfVElNRT0zMAotK1RFU1RBUFBfUEFUSD0iJFRFU1RESVIvdXRpbHMvdGVzdGFwcCIKLStURVNUQVBQX05BTUU9Imdlbi11c3QtZXZlbnRzIgotK1RFU1RBUFBfQklOPSIkVEVTVEFQUF9QQVRILyRURVNUQVBQX05BTUUvJFRFU1RBUFBfTkFNRSIKLSAKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLUBAIC03NiwxNSArNzksMTkgQEAgZnVuY3Rpb24gdGVzdF90aHJlYWRfb2sKLSAJJENVUkRJUi8kSEVBTFRIX0NIRUNLX0JJTiA+ICR7U1RET1VUX1BBVEh9IDI+ICR7U1RERVJSX1BBVEh9Ci0gCXJlcG9ydF9lcnJvcnMKLSAKLS0JZGlhZyAiV2l0aCBVU1QgY29uc3VtZXIgZGFlbW9ucyIKLS0JY3JlYXRlX2x0dG5nX3Nlc3Npb25fbm9fb3V0cHV0ICRTRVNTSU9OX05BTUUKLS0JZW5hYmxlX3VzdF9sdHRuZ19ldmVudF9vayAkU0VTU0lPTl9OQU1FICRVU1RfRVZFTlRfTkFNRSAkQ0hBTk5FTF9OQU1FCi0tCXN0YXJ0X2x0dG5nX3RyYWNpbmdfb2sgJFNFU1NJT05fTkFNRQotLQlkZXN0cm95X2x0dG5nX3Nlc3Npb25fb2sgJFNFU1NJT05fTkFNRQotKwlza2lwICRza2lwX3VzdCAiVXN0IGRvZXMgbm90IHNlZW1zIHRvIGJlIHN1cHBvcnRlZCIgIjUiIHx8Ci0rCXsKLSsJCWRpYWcgIldpdGggVVNUIGNvbnN1bWVyIGRhZW1vbnMiCi0rCQljcmVhdGVfbHR0bmdfc2Vzc2lvbl9ub19vdXRwdXQgJFNFU1NJT05fTkFNRQotKwkJZW5hYmxlX3VzdF9sdHRuZ19ldmVudF9vayAkU0VTU0lPTl9OQU1FICRVU1RfRVZFTlRfTkFNRSAkQ0hBTk5FTF9OQU1FCi0rCQlzdGFydF9sdHRuZ190cmFjaW5nX29rICRTRVNTSU9OX05BTUUKLSsJCWRlc3Ryb3lfbHR0bmdfc2Vzc2lvbl9vayAkU0VTU0lPTl9OQU1FCi0gCi0tCSMgQ2hlY2sgaGVhbHRoIHN0YXR1cwotLQkkQ1VSRElSLyRIRUFMVEhfQ0hFQ0tfQklOID4gJHtTVERPVVRfUEFUSH0gMj4gJHtTVERFUlJfUEFUSH0KLS0JcmVwb3J0X2Vycm9ycwotKwotKwkJIyBDaGVjayBoZWFsdGggc3RhdHVzCi0rCQkkQ1VSRElSLyRIRUFMVEhfQ0hFQ0tfQklOID4gJHtTVERPVVRfUEFUSH0gMj4gJHtTVERFUlJfUEFUSH0KLSsJCXJlcG9ydF9lcnJvcnMKLSsJfQotIAotIAlza2lwICRpc3Jvb3QgIlJvb3QgYWNjZXNzIGlzIG5lZWRlZC4gU2tpcHBpbmcga2VybmVsIGNvbnN1bWVyIGhlYWx0aCBjaGVjayB0ZXN0LiIgIjUiIHx8Ci0gCXsKLUBAIC0xNDEsNiArMTQ4LDEyIEBAIGVsc2UKLSAJaXNyb290PTAKLSBmaQotIAotK2lmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0rCXNraXBfdXN0PTAKLStlbHNlCi0rCXNraXBfdXN0PTEKLStmaQotKwotIHRlc3RfdGhyZWFkX29rCi0gCi0gcm0gLXJmICR7SEVBTFRIX1BBVEh9Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL01ha2VmaWxlLmFtIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL01ha2VmaWxlLmFtCi1pbmRleCA0NjE4NmQzODMuLmRiNzRkZThkNSAxMDA2NDQKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS9NYWtlZmlsZS5hbQotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL01ha2VmaWxlLmFtCi1AQCAtMTYsOSArMTYsNyBAQCBMSVZFPSQodG9wX2J1aWxkZGlyKS9zcmMvYmluL2x0dG5nLXNlc3Npb25kL3Nlc3Npb24uJChPQkpFWFQpIFwKLSBub2luc3RfUFJPR1JBTVMgPSBsaXZlX3Rlc3QKLSBFWFRSQV9ESVNUID0gdGVzdF9rZXJuZWwgdGVzdF9sdHRuZ19rZXJuZWwKLSAKLS1pZiBIQVZFX0xJQkxUVE5HX1VTVF9DVEwKLSBFWFRSQV9ESVNUICs9IHRlc3RfdXN0IHRlc3RfdXN0X3RyYWNlZmlsZV9jb3VudCB0ZXN0X2x0dG5nX3VzdAotLWVuZGlmCi0gCi0gbGl2ZV90ZXN0X1NPVVJDRVMgPSBsaXZlX3Rlc3QuYwotIGxpdmVfdGVzdF9MREFERCA9ICQoTElCVEFQKSAkKExJQkNPTU1PTikgJChMSUJSRUxBWUQpICQoTElCU0VTU0lPTkRfQ09NTSkgXAotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS90ZXN0X2x0dG5nX3VzdCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS90ZXN0X2x0dG5nX3VzdAotaW5kZXggMDYwMTdkMDFkLi5iZTliM2Q3ZjcgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvdGVzdF9sdHRuZ191c3QKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS90ZXN0X2x0dG5nX3VzdAotQEAgLTM4LDYgKzM4LDEwIEBAIE5VTV9URVNUUz0xMgotIAotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotK2lmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0rCXBsYW5fc2tpcF9hbGwgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLStmaQotKwotICMgTVVTVCBzZXQgVEVTVERJUiBiZWZvcmUgY2FsbGluZyB0aG9zZSBmdW5jdGlvbnMKLSBwbGFuX3Rlc3RzICROVU1fVEVTVFMKLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvdGVzdF91c3QgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvdGVzdF91c3QKLWluZGV4IDAzODRhNzA2Zi4uYWRkNTIxYmZjIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL3Rlc3RfdXN0Ci0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvdGVzdF91c3QKLUBAIC0zNiw2ICszNiwxMCBAQCBESVI9JChyZWFkbGluayAtZiAkVEVTVERJUikKLSAKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLStpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rZmkKLSsKLSBlY2hvICIkVEVTVF9ERVNDIgotIAotIGZ1bmN0aW9uIHNldHVwX2xpdmVfdHJhY2luZygpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL3Rlc3RfdXN0X3RyYWNlZmlsZV9jb3VudCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS90ZXN0X3VzdF90cmFjZWZpbGVfY291bnQKLWluZGV4IDZkYTM2OGZjNi4uMTA1MDRmOGM2IDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL3Rlc3RfdXN0X3RyYWNlZmlsZV9jb3VudAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL3Rlc3RfdXN0X3RyYWNlZmlsZV9jb3VudAotQEAgLTM2LDYgKzM2LDEwIEBAIERJUj0kKHJlYWRsaW5rIC1mICRURVNURElSKQotIAotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotK2lmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0rCXBsYW5fc2tpcF9hbGwgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLStmaQotKwotIGVjaG8gIiRURVNUX0RFU0MiCi0gCi0gZnVuY3Rpb24gc2V0dXBfbGl2ZV90cmFjaW5nKCkKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL21pL3Rlc3RfbWkgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL21pL3Rlc3RfbWkKLWluZGV4IDQ4ZGRhN2RhNi4uMmNjMzBiMjlhIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9taS90ZXN0X21pCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL21pL3Rlc3RfbWkKLUBAIC02MSw2ICs2MSwxMCBAQCBOVU1fVEVTVFM9MjI4Ci0gCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0raWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotK2ZpCi0rCi0gI092ZXJ3cml0ZSB0aGUgbHR0bmdfYmluIHRvIGdldCBtaSBvdXRwdXQKLSBMVFROR19CSU49Imx0dG5nIC0tbWkgeG1sIgotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX211bHRpX2FwcCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX211bHRpX2FwcAotaW5kZXggMGEwNWVhNmEwLi4yOWIwZjYyZmEgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL25vdGlmaWNhdGlvbi90ZXN0X25vdGlmaWNhdGlvbl9tdWx0aV9hcHAKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX211bHRpX2FwcAotQEAgLTUyLDYgKzUyLDExIEBAIHBsYW5fdGVzdHMgJE5VTV9URVNUUwotIAotIHByaW50X3Rlc3RfYmFubmVyICIkVEVTVF9ERVNDIgotIAotK3NraXBfdXN0PTEKLStpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotKwlza2lwX3VzdD0wCi0rZmkKLSsKLSBhcHBfcGlkcz0oKQotIAotIGZ1bmN0aW9uIGtlcm5lbF9ldmVudF9nZW5lcmF0b3JfdG9vZ2xlX3N0YXRlCi1AQCAtNDY4LDEwICs0NzMsMTUgQEAgZnVuY3Rpb24gdGVzdF9vbl9yZWdpc3Rlcl9ldmFsdWF0aW9uICgpCi0gfQotIAotIAotLVRFU1RTPSgKLS0JdGVzdF9tdWx0aV9hcHBfdXN0Ci0tCXRlc3Rfb25fcmVnaXN0ZXJfZXZhbHVhdGlvbl91c3QKLS0pCi0rVEVTVFM9KCkKLStpZiBbICRza2lwX3VzdCAtZXEgIjEiIF07IHRoZW4KLSsJVEVTVFMrPSgKLSsJCXRlc3RfbXVsdGlfYXBwX3VzdAotKwkJdGVzdF9vbl9yZWdpc3Rlcl9ldmFsdWF0aW9uX3VzdAotKwkpCi0rZWxzZQotKwlza2lwIDAgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIgJE5VTV9URVNUX1VTVAotK2ZpCi0gCi0gaWYgWyAiJChpZCAtdSkiID09ICIwIiBdOyB0aGVuCi0gCVRFU1RTKz0oCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9ub3RpZmljYXRpb24vdGVzdF9ub3RpZmljYXRpb25fdXN0IGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9ub3RpZmljYXRpb24vdGVzdF9ub3RpZmljYXRpb25fdXN0Ci1pbmRleCA4OTQxZTQ3NmQuLmViMmUxNWNhZCAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX3VzdAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9ub3RpZmljYXRpb24vdGVzdF9ub3RpZmljYXRpb25fdXN0Ci1AQCAtNDYsNiArNDYsMTAgQEAgRElSPSQocmVhZGxpbmsgLWYgJFRFU1RESVIpCi0gCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0raWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotK2ZpCi0rCi0gZnVuY3Rpb24gdXN0X2V2ZW50X2dlbmVyYXRvcl90b29nbGVfc3RhdGUKLSB7Ci0gCXVzdF9ldmVudF9nZW5lcmF0b3Jfc3VzcGVuZGVkPSQoKHVzdF9ldmVudF9nZW5lcmF0b3Jfc3VzcGVuZGVkPT0wKSkKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3JlZ2VuLW1ldGFkYXRhL3Rlc3RfdXN0IGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9yZWdlbi1tZXRhZGF0YS90ZXN0X3VzdAotaW5kZXggYjdmMWFmMWQ4Li4zMTJjOGE0MGQgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3JlZ2VuLW1ldGFkYXRhL3Rlc3RfdXN0Ci0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3JlZ2VuLW1ldGFkYXRhL3Rlc3RfdXN0Ci1AQCAtMzQsNyArMzQsNyBAQCBOVU1fVEVTVFM9MzMKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLSBpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotLQlCQUlMX09VVCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0gZmkKLSAKLSBmdW5jdGlvbiBsdHRuZ19jcmVhdGVfc2Vzc2lvbl91cmkKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3JlZ2VuLXN0YXRlZHVtcC90ZXN0X3VzdCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvcmVnZW4tc3RhdGVkdW1wL3Rlc3RfdXN0Ci1pbmRleCA0ODZiOWE1NjAuLjhkNDU1YjI2YSAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvcmVnZW4tc3RhdGVkdW1wL3Rlc3RfdXN0Ci0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3JlZ2VuLXN0YXRlZHVtcC90ZXN0X3VzdAotQEAgLTM0LDcgKzM0LDcgQEAgTlVNX1RFU1RTPTExCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0gaWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLS0JQkFJTF9PVVQgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotIGZpCi0gCi0gZnVuY3Rpb24gdGVzdF91c3RfbG9jYWwgKCkKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NhdmUtbG9hZC90ZXN0X2F1dG9sb2FkIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9hdXRvbG9hZAotaW5kZXggN2VlNWU5OTA2Li5lYzM3NmNmYjMgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NhdmUtbG9hZC90ZXN0X2F1dG9sb2FkCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NhdmUtbG9hZC90ZXN0X2F1dG9sb2FkCi1AQCAtMjEsNiArMjEsOSBAQCBDVVJESVI9JChkaXJuYW1lICQwKS8KLSBDT05GSUdfRElSPSIke0NVUkRJUn0vY29uZmlndXJhdGlvbiIKLSBURVNURElSPSRDVVJESVIvLi4vLi4vLi4vCi0gZXhwb3J0IExUVE5HX1NFU1NJT05fQ09ORklHX1hTRF9QQVRIPSQocmVhZGxpbmsgLW0gJHtURVNURElSfS4uL3NyYy9jb21tb24vY29uZmlnLykKLStURVNUQVBQX1BBVEg9IiRURVNURElSL3V0aWxzL3Rlc3RhcHAiCi0rVEVTVEFQUF9OQU1FPSJnZW4tdXN0LWV2ZW50cyIKLStURVNUQVBQX0JJTj0iJFRFU1RBUFBfUEFUSC8kVEVTVEFQUF9OQU1FLyRURVNUQVBQX05BTUUiCi0gCi0gRElSPSQocmVhZGxpbmsgLWYgJFRFU1RESVIpCi0gCi1AQCAtMjgsNiArMzEsMTAgQEAgTlVNX1RFU1RTPTkKLSAKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLStpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rZmkKLSsKLSAjIE1VU1Qgc2V0IFRFU1RESVIgYmVmb3JlIGNhbGxpbmcgdGhvc2UgZnVuY3Rpb25zCi0gcGxhbl90ZXN0cyAkTlVNX1RFU1RTCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9sb2FkIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9sb2FkCi1pbmRleCA1ZTM4YjQ2YjYuLmI2ZmRkODE5MiAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3RfbG9hZAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9sb2FkCi1AQCAtMjAsNiArMjAsMTAgQEAgVEVTVF9ERVNDPSJMb2FkIHNlc3Npb24ocykiCi0gQ1VSRElSPSQoZGlybmFtZSAkMCkvCi0gQ09ORklHX0RJUj0iJHtDVVJESVJ9L2NvbmZpZ3VyYXRpb24iCi0gVEVTVERJUj0kQ1VSRElSLy4uLy4uLy4uLwotK1RFU1RBUFBfUEFUSD0iJFRFU1RESVIvdXRpbHMvdGVzdGFwcCIKLStURVNUQVBQX05BTUU9Imdlbi11c3QtZXZlbnRzIgotK1RFU1RBUFBfQklOPSIkVEVTVEFQUF9QQVRILyRURVNUQVBQX05BTUUvJFRFU1RBUFBfTkFNRSIKLSsKLSBleHBvcnQgTFRUTkdfU0VTU0lPTl9DT05GSUdfWFNEX1BBVEg9JChyZWFkbGluayAtbSAke1RFU1RESVJ9Li4vc3JjL2NvbW1vbi9jb25maWcvKQotIAotIFNFU1NJT05fTkFNRT0ibG9hZC00MiIKLUBAIC0zMSw2ICszNSwxMCBAQCBOVU1fVEVTVFM9NjcKLSAKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLStpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rZmkKLSsKLSAjIE1VU1Qgc2V0IFRFU1RESVIgYmVmb3JlIGNhbGxpbmcgdGhvc2UgZnVuY3Rpb25zCi0gcGxhbl90ZXN0cyAkTlVNX1RFU1RTCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9zYXZlIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9zYXZlCi1pbmRleCBjNWY2YjEzNDEuLmNmYWY2N2I3YSAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3Rfc2F2ZQotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9zYXZlCi1AQCAtMjMsNiArMjMsOSBAQCBURVNURElSPSRDVVJESVIvLi4vLi4vLi4vCi0gU0VTU0lPTl9OQU1FPSJzYXZlLTQyIgotIENIQU5ORUxfTkFNRT0iY2hhbi1zYXZlIgotIEVWRU5UX05BTUU9InRwOnRwdGVzdCIKLStURVNUQVBQX1BBVEg9IiRURVNURElSL3V0aWxzL3Rlc3RhcHAiCi0rVEVTVEFQUF9OQU1FPSJnZW4tdXN0LWV2ZW50cyIKLStURVNUQVBQX0JJTj0iJFRFU1RBUFBfUEFUSC8kVEVTVEFQUF9OQU1FLyRURVNUQVBQX05BTUUiCi0gCi0gRElSPSQocmVhZGxpbmsgLWYgJFRFU1RESVIpCi0gCi1AQCAtMzAsNiArMzMsMTAgQEAgTlVNX1RFU1RTPTQxCi0gCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0raWYgWyAhIC14ICJURVNUQVBQX0JJTiIgXTsgdGhlbgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rZmkKLSsKLSAjIE1VU1Qgc2V0IFRFU1RESVIgYmVmb3JlIGNhbGxpbmcgdGhvc2UgZnVuY3Rpb25zCi0gcGxhbl90ZXN0cyAkTlVNX1RFU1RTCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdGVzdF91c3RfZmFzdCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3Rlc3RfdXN0X2Zhc3QKLWluZGV4IGVkYjQzNWM1Mi4uNWE2OGVjNTZkIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdGVzdF91c3RfZmFzdAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdGVzdF91c3RfZmFzdAotQEAgLTIzLDcgKzIzLDcgQEAgVEVTVF9CSU49InVzdF90ZXN0IgotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotIGlmIFsgISAteCAiJENVUkRJUi8kVEVTVF9CSU4iIF07IHRoZW4KLS0JQkFJTF9PVVQgIk5vIFVTVCB0ZXN0IGZvdW5kOiAkVEVTVF9CSU4iCi0rCXBsYW5fc2tpcF9hbGwgIk5vIFVTVCB0ZXN0IGZvdW5kOiAkVEVTVF9CSU4iCi0gZmkKLSAKLSAuLyRDVVJESVIvJFRFU1RfQklOICROUl9TTkFQU0hPVAotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3Rlc3RfdXN0X2xvbmcgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9sb25nCi1pbmRleCA5ZTFhMGMyNjIuLmFmYTAxOWY2YSAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3Rlc3RfdXN0X2xvbmcKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3Rlc3RfdXN0X2xvbmcKLUBAIC0yMyw3ICsyMyw3IEBAIFRFU1RfQklOPSJ1c3RfdGVzdCIKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLSBpZiBbICEgLXggIiRDVVJESVIvJFRFU1RfQklOIiBdOyB0aGVuCi0tCUJBSUxfT1VUICJObyBVU1QgdGVzdCBmb3VuZDogJFRFU1RfQklOIgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgdGVzdCBmb3VuZDogJFRFU1RfQklOIgotIGZpCi0gCi0gLi8kQ1VSRElSLyRURVNUX0JJTiAkTlJfU05BUFNIT1QKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9zdHJlYW1pbmcgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9zdHJlYW1pbmcKLWluZGV4IDkzYjA5NTdmMy4uNjkyOTFhYjRkIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdGVzdF91c3Rfc3RyZWFtaW5nCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9zdHJlYW1pbmcKLUBAIC0zNyw3ICszNyw3IEBAIE5VTV9URVNUUz03NQotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotIGlmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0tCUJBSUxfT1VUICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rCXBsYW5fc2tpcF9hbGwgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLSBmaQotIAotIGZ1bmN0aW9uIHNuYXBzaG90X2FkZF9vdXRwdXQgKCkKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy91c3RfdGVzdCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3VzdF90ZXN0Ci1pbmRleCA3NTVjZWY5ZTAuLjkyZjlmNmNmZiAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3VzdF90ZXN0Ci0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy91c3RfdGVzdAotQEAgLTM0LDcgKzM0LDcgQEAgVFJBQ0VfUEFUSD0kKG1rdGVtcCAtZCkKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLSBpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotLQlCQUlMX09VVCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0gZmkKLSAKLSAjIE5lZWQgdGhlIG51bWJlciBvZiBzbmFwc2hvdCB0byBkby4KLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3N0cmVhbWluZy90ZXN0X2hpZ2hfdGhyb3VnaHB1dF9saW1pdHMgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3N0cmVhbWluZy90ZXN0X2hpZ2hfdGhyb3VnaHB1dF9saW1pdHMKLWluZGV4IDMyYzNmMWYyYi4uZjU0MTc4OTIzIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zdHJlYW1pbmcvdGVzdF9oaWdoX3Rocm91Z2hwdXRfbGltaXRzCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3N0cmVhbWluZy90ZXN0X2hpZ2hfdGhyb3VnaHB1dF9saW1pdHMKLUBAIC0zOCw3ICszOCw3IEBAIE5VTV9URVNUUz0xMDQKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLSBpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotLQlCQUlMX09VVCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0gZmkKLSAKLSBmdW5jdGlvbiBzZXRfYndfbGltaXQKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3N0cmVhbWluZy90ZXN0X3VzdCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc3RyZWFtaW5nL3Rlc3RfdXN0Ci1pbmRleCBhNWQ1YjVlOTIuLmUxZGQ5OGVlNyAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc3RyZWFtaW5nL3Rlc3RfdXN0Ci0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3N0cmVhbWluZy90ZXN0X3VzdAotQEAgLTM0LDcgKzM0LDcgQEAgTlVNX1RFU1RTPTE2Ci0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0gaWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLS0JQkFJTF9PVVQgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotIGZpCi0gCi0gZnVuY3Rpb24gbHR0bmdfY3JlYXRlX3Nlc3Npb25fdXJpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy90cmFjZWZpbGUtbGltaXRzL3Rlc3RfdHJhY2VmaWxlX2NvdW50IGIvdGVzdHMvcmVncmVzc2lvbi90b29scy90cmFjZWZpbGUtbGltaXRzL3Rlc3RfdHJhY2VmaWxlX2NvdW50Ci1pbmRleCA2YWRhODU4MGYuLjc1NTNjN2QxZiAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9jb3VudAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy90cmFjZWZpbGUtbGltaXRzL3Rlc3RfdHJhY2VmaWxlX2NvdW50Ci1AQCAtMzMsNyArMzMsNyBAQCBQQUdFX1NJWkU9JChnZXRjb25mIFBBR0VfU0laRSkKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLSBpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotLQlCQUlMX09VVCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0gZmkKLSAKLSBmdW5jdGlvbiBlbmFibGVfbHR0bmdfY2hhbm5lbF9jb3VudF9saW1pdCAoKQotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9zaXplIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy90cmFjZWZpbGUtbGltaXRzL3Rlc3RfdHJhY2VmaWxlX3NpemUKLWluZGV4IDNkZGRiZTYxMy4uMTA4OTQ4N2ZmIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy90cmFjZWZpbGUtbGltaXRzL3Rlc3RfdHJhY2VmaWxlX3NpemUKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9zaXplCi1AQCAtMzMsNyArMzMsNyBAQCBOVU1fVEVTVFM9NjYKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLSBpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotLQlCQUlMX09VVCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0gZmkKLSAKLSBmdW5jdGlvbiBlbmFibGVfbHR0bmdfY2hhbm5lbF9zaXplX2xpbWl0ICgpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy93aWxkY2FyZC90ZXN0X2V2ZW50X3dpbGRjYXJkIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy93aWxkY2FyZC90ZXN0X2V2ZW50X3dpbGRjYXJkCi1pbmRleCA2MWVhNjdhNzIuLjkyMWEyMzAxZCAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvd2lsZGNhcmQvdGVzdF9ldmVudF93aWxkY2FyZAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy93aWxkY2FyZC90ZXN0X2V2ZW50X3dpbGRjYXJkCi1AQCAtOTcsNDIgKzk3LDQ3IEBAIHByaW50X3Rlc3RfYmFubmVyICIkVEVTVF9ERVNDIgotIAotIHN0YXJ0X2x0dG5nX3Nlc3Npb25kCi0gCi0tZGlhZyAiVGVzdCBVU1Qgd2lsZGNhcmQiCi0tCi0gaWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLS0JQkFJTF9PVVQgIk5vIFVTVCBuZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rCXNraXBfdXN0PTAKLStlbHNlCi0rCXNraXBfdXN0PTEKLSBmaQotIAotLUVWRU5UX05BTUU9InRwOnRwdGVzdCIKLStza2lwICRza2lwX3VzdCAiTm8gVVNUIG5ldmVudHMgYmluYXJ5IGRldGVjdGVkLiIgJE5VTV9VU1RfVEVTVFMgfHwKLSt7Ci0rCWRpYWcgIlRlc3QgVVNUIHdpbGRjYXJkIgotIAotLSMgbm9uLW1hdGNoaW5nCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMCAndHA6YWJjKicKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICcqYWJjJwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJyp6KicKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICcqXCoqJwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJypcKicKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICdcKionCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMCAnKjoqdHB0ZSpzJwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJ3RwKip0cFRlc3QnCi0rCUVWRU5UX05BTUU9InRwOnRwdGVzdCIKLSAKLS0jIG1hdGNoaW5nCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAndHA6dHAqJwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyonCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAndHA6dHB0ZXN0KicKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqKicKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqKionCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKnRwdGVzdCcKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqKnRwdGVzdCcKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqdHB0ZSonCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKnRwKicKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqdHAqKicKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqOip0cHRlc3QnCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKjoqdHB0ZSp0JwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJ3QqcCo6KnQqZSpzKnQnCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKnQqcCo6KnQqZSpzKnQqJwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJ3RwKnRwdGVzdCcKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICd0cCoqdHB0ZXN0JwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJ3RwKnRlc3QnCi0rCSMgbm9uLW1hdGNoaW5nCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJ3RwOmFiYyonCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJyphYmMnCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJyp6KicKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMCAnKlwqKicKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMCAnKlwqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICdcKionCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJyo6KnRwdGUqcycKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMCAndHAqKnRwVGVzdCcKLSsKLSsJIyBtYXRjaGluZwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICd0cDp0cConCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyonCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJ3RwOnRwdGVzdConCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyoqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqKionCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyp0cHRlc3QnCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyoqdHB0ZXN0JwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqdHB0ZSonCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyp0cConCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyp0cCoqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqOip0cHRlc3QnCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyo6KnRwdGUqdCcKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAndCpwKjoqdCplKnMqdCcKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKnQqcCo6KnQqZSpzKnQqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICd0cCp0cHRlc3QnCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJ3RwKip0cHRlc3QnCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJ3RwKnRlc3QnCi0rfQotIAotIGlmIFsgIiQoaWQgLXUpIiA9PSAiMCIgXTsgdGhlbgotIAlpc3Jvb3Q9MQotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDEtY2hlY2stZm9yLWdldHRpZC1BUEktZHVyaW5nLWNvbmZpZ3VyZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLWNoZWNrLWZvci1nZXR0aWQtQVBJLWR1cmluZy1jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0OTRjZWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDEtY2hlY2stZm9yLWdldHRpZC1BUEktZHVyaW5nLWNvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLUZyb20gNjljNjJmNWYzY2M0MjRiN2RkMGM4ZTQwOTc3NDNiMzlhOWM0ODMwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDI3IEp1bCAyMDE5IDA4OjQ4OjEzIC0wNzAwCi1TdWJqZWN0OiBbbHR0bmctdG9vbHNdW1BBVENIXSBjaGVjayBmb3IgZ2V0dGlkIEFQSSBkdXJpbmcgY29uZmlndXJlCi0KLUFkZCBzdXBwb3J0IGZvciBnZXR0aWQoKSBwcm92aWRlZCBieSBnbGliYyAyLjMwKwotCi1TaW5jZSB2ZXJzaW9uIDIuMzAgZ2xpYmMgcHJvdmlkZXMgZ2V0dGlkIGFuZCBpdCBjYXVzZXMgY29uZmxpY3RzIHdpdGgKLWxvY2FsbHkgZGVmaW5lZCBnZXR0aWQoKS4gVXNlIHRoZSBsb2NhbCBkZWZpbml0aW9uIG9mCi1nZXR0aWQgb25seSBpZiBzeXN0ZW0gZ2V0dGlkIGlzIG5vdCBhdmFpbGFibGUuCi0KLWh0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0Lz9wPWdsaWJjLmdpdDthPWJsb2JfcGxhaW47Zj1ORVdTO2hiPUhFQUQ8UGFzdGU+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgIHwgMiArLQotIHNyYy9jb21tb24vY29tcGF0L3RpZC5oIHwgMyArKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggN2I5OWY1Yy4uZTRiZDgyYyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTkwLDcgKzE5MCw3IEBAIEFDX0NIRUNLX0hFQURFUlMoWyBcCi0gIyBCYXNpYyBmdW5jdGlvbnMgY2hlY2sKLSBBQ19DSEVDS19GVU5DUyhbIFwKLSAJYXRleGl0IGJ6ZXJvIGNsb2NrX2dldHRpbWUgZHVwMiBmZGF0YXN5bmMgZmxzIGZ0cnVuY2F0ZSBcCi0tCWdldGhvc3RieW5hbWUgZ2V0aG9zdG5hbWUgZ2V0cGFnZXNpemUgbG9jYWx0aW1lX3IgbWVtY2hyIG1lbXNldCBcCi0rCWdldGhvc3RieW5hbWUgZ2V0aG9zdG5hbWUgZ2V0cGFnZXNpemUgZ2V0dGlkIGxvY2FsdGltZV9yIG1lbWNociBtZW1zZXQgXAotIAlta2RpciBtdW5tYXAgcHV0ZW52IHJlYWxwYXRoIHJtZGlyIHNvY2tldCBzdHJjaHIgc3RyY3NwbiBzdHJkdXAgXAotIAlzdHJuY2FzZWNtcCBzdHJuZHVwIHN0cm5sZW4gc3RycGJyayBzdHJyY2hyIHN0cnN0ciBzdHJ0b2wgc3RydG91bCBcCi0gCXN0cnRvdWxsIGRpcmZkIGdldGhvc3RieW5hbWUyIGdldGlwbm9kZWJ5bmFtZSBlcG9sbF9jcmVhdGUxIFwKLWRpZmYgLS1naXQgYS9zcmMvY29tbW9uL2NvbXBhdC90aWQuaCBiL3NyYy9jb21tb24vY29tcGF0L3RpZC5oCi1pbmRleCA0MGY1NjJmLi5hYTA3YTg1IDEwMDY0NAotLS0tIGEvc3JjL2NvbW1vbi9jb21wYXQvdGlkLmgKLSsrKyBiL3NyYy9jb21tb24vY29tcGF0L3RpZC5oCi1AQCAtMjUsNiArMjUsNyBAQAotICNpZm5kZWYgTFRUTkdfVElEX0gKLSAjZGVmaW5lIExUVE5HX1RJRF9ICi0gCi0rI2lmICFIQVZFX0dFVFRJRAotICNpZmRlZiBfX2xpbnV4X18KLSAjaW5jbHVkZSA8c3lzY2FsbC5oPgotICNlbmRpZgotQEAgLTQ3LDUgKzQ4LDUgQEAgc3RhdGljIGlubGluZSBwaWRfdCBnZXR0aWQodm9pZCkKLSAJcmV0dXJuIGdldHBpZCgpOwotIH0KLSAjZW5kaWYKLS0KLSsjZW5kaWYgLyogSEFWRV9HRVRUSUQgKi8KLSAjZW5kaWYgLyogTFRUTkdfVElEX0ggKi8KLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLXRlc3RzLWRvLW5vdC1zdHJpcC1hLWhlbHBlci1saWJyYXJ5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDEtdGVzdHMtZG8tbm90LXN0cmlwLWEtaGVscGVyLWxpYnJhcnkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQwOGIwOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLXRlc3RzLWRvLW5vdC1zdHJpcC1hLWhlbHBlci1saWJyYXJ5LnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gYWIyMzhjMjEzZmFjMTkwOTcyZjU1ZTczY2YzZTBiYjFjNzg0NmViOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxMiBEZWMgMjAxOSAxNjo1MjowNyArMDEwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0czogZG8gbm90IHN0cmlwIGEgaGVscGVyIGxpYnJhcnkKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyB0ZXN0cy91dGlscy90ZXN0YXBwL3VzZXJzcGFjZS1wcm9iZS1lbGYtYmluYXJ5L01ha2VmaWxlLmFtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvdXRpbHMvdGVzdGFwcC91c2Vyc3BhY2UtcHJvYmUtZWxmLWJpbmFyeS9NYWtlZmlsZS5hbSBiL3Rlc3RzL3V0aWxzL3Rlc3RhcHAvdXNlcnNwYWNlLXByb2JlLWVsZi1iaW5hcnkvTWFrZWZpbGUuYW0KK2luZGV4IDAzZjVkNWEuLmQxMmMzNDMgMTAwNjQ0CistLS0gYS90ZXN0cy91dGlscy90ZXN0YXBwL3VzZXJzcGFjZS1wcm9iZS1lbGYtYmluYXJ5L01ha2VmaWxlLmFtCisrKysgYi90ZXN0cy91dGlscy90ZXN0YXBwL3VzZXJzcGFjZS1wcm9iZS1lbGYtYmluYXJ5L01ha2VmaWxlLmFtCitAQCAtMTIsNyArMTIsNyBAQCB1c2Vyc3BhY2VfcHJvYmVfZWxmX2JpbmFyeV9MREFERCA9IGxpYmZvby5sYQorIGxpYmZvby5zdHJpcDogbGliZm9vLmxhCisgCSQoT0JKQ09QWSkgLS1zdHJpcC1hbGwgLmxpYnMvbGliZm9vLnNvCisgCistYWxsLWxvY2FsOiBsaWJmb28uc3RyaXAKKythbGwtbG9jYWw6CisgCUBpZiBbIHgiJChzcmNkaXIpIiAhPSB4IiQoYnVpbGRkaXIpIiBdOyB0aGVuIFwKKyAJCWZvciBzY3JpcHQgaW4gJChFWFRSQV9ESVNUKTsgZG8gXAorIAkJCWNwIC1mICQoc3JjZGlyKS8kJHNjcmlwdCAkKGJ1aWxkZGlyKTsgXAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDEtdGVzdHMtcmVncmVzc2lvbi1kaXNhYmxlLXRoZS10b29scy1saXZlLXRlc3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDEtdGVzdHMtcmVncmVzc2lvbi1kaXNhYmxlLXRoZS10b29scy1saXZlLXRlc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyYzE0ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHMvMDAwMS10ZXN0cy1yZWdyZXNzaW9uLWRpc2FibGUtdGhlLXRvb2xzLWxpdmUtdGVzdHMucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSBjNjliNjhlNWMwM2YxZDI2MDAyNWZiMWRkOWFiNzM0NWUzMWUxNWVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI0IEphbiAyMDIwIDE4OjAzOjI1ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3RzL3JlZ3Jlc3Npb246IGRpc2FibGUgdGhlIHRvb2xzL2xpdmUgdGVzdHMKKworVGhleSBoYXZlIGJlZW4gZm91bmQgdG8gc3BvcmFkaWNhbGx5IGZhaWw7IHRoZSBpc3N1ZSBoYXMgYmVlbgorcmVwb3J0ZWQgdXBzdHJlYW0gYW5kIHRoZXkgd2lsbCB3b3JrIHRvIGludmVzdGlnYXRlIGFuZCBmaXg6CitodHRwczovL2J1Z3MubHR0bmcub3JnL2lzc3Vlcy8xMjE3CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdXBzdHJlYW0gaXMgd29ya2luZyBvbiBhIHJlYWwgZml4XQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyB0ZXN0cy9yZWdyZXNzaW9uL01ha2VmaWxlLmFtIHwgNCAtLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL01ha2VmaWxlLmFtIGIvdGVzdHMvcmVncmVzc2lvbi9NYWtlZmlsZS5hbQoraW5kZXggNzNlYjlmNy4uYjkyYmRiZCAxMDA2NDQKKy0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vTWFrZWZpbGUuYW0KKysrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vTWFrZWZpbGUuYW0KK0BAIC05LDE0ICs5LDEwIEBAIFRFU1RTID0gdG9vbHMvZmlsdGVyaW5nL3Rlc3RfaW52YWxpZF9maWx0ZXIgXAorIAl0b29scy9maWx0ZXJpbmcvdGVzdF92YWxpZF9maWx0ZXIgXAorIAl0b29scy9zdHJlYW1pbmcvdGVzdF91c3QgXAorIAl0b29scy9oZWFsdGgvdGVzdF90aHJlYWRfb2sgXAorLQl0b29scy9saXZlL3Rlc3RfdXN0IFwKKy0JdG9vbHMvbGl2ZS90ZXN0X3VzdF90cmFjZWZpbGVfY291bnQgXAorLQl0b29scy9saXZlL3Rlc3RfbHR0bmdfdXN0IFwKKyAJdG9vbHMvdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9jb3VudCBcCisgCXRvb2xzL3RyYWNlZmlsZS1saW1pdHMvdGVzdF90cmFjZWZpbGVfc2l6ZSBcCisgCXRvb2xzL2V4Y2x1c2lvbi90ZXN0X2V4Y2x1c2lvbiBcCisgCXRvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9mYXN0IFwKKy0JdG9vbHMvc25hcHNob3RzL3Rlc3RfdXN0X3N0cmVhbWluZyBcCisgCXRvb2xzL3NhdmUtbG9hZC90ZXN0X3NhdmUgXAorIAl0b29scy9zYXZlLWxvYWQvdGVzdF9sb2FkIFwKKyAJdG9vbHMvc2F2ZS1sb2FkL3Rlc3RfYXV0b2xvYWQgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDItRml4LWNoZWNrLWZvci1sdHRuZy1tb2R1bGVzLXByZXNlbmNlLWJlZm9yZS10ZXN0aW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDItRml4LWNoZWNrLWZvci1sdHRuZy1tb2R1bGVzLXByZXNlbmNlLWJlZm9yZS10ZXN0aW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODRhMDc5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAyLUZpeC1jaGVjay1mb3ItbHR0bmctbW9kdWxlcy1wcmVzZW5jZS1iZWZvcmUtdGVzdGluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUZyb20gNThlNGRjY2U0OGI0OGI2OGI2NWJmZmMwY2Q1MWQ5ZTI2YjQ0Yzc1ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEpvbmF0aGFuIFJham90dGUgPGpvbmF0aGFuLnJham90dGUtanVsaWVuQGVmZmljaW9zLmNvbT4KLURhdGU6IFdlZCwgMjIgTWF5IDIwMTkgMTY6NDQ6NTQgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4OiBjaGVjayBmb3IgbHR0bmcgbW9kdWxlcyBwcmVzZW5jZSBiZWZvcmUgdGVzdGluZwotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy5sdHRuZy5vcmcvcGlwZXJtYWlsL2x0dG5nLWRldi8yMDE5LU1heS8wMjg5ODcuaHRtbF0KLQotU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gUmFqb3R0ZSA8am9uYXRoYW4ucmFqb3R0ZS1qdWxpZW5AZWZmaWNpb3MuY29tPgotLS0tCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9ub3RpZmljYXRpb24vdGVzdF9ub3RpZmljYXRpb25fbXVsdGlfYXBwIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL25vdGlmaWNhdGlvbi90ZXN0X25vdGlmaWNhdGlvbl9tdWx0aV9hcHAgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL25vdGlmaWNhdGlvbi90ZXN0X25vdGlmaWNhdGlvbl9tdWx0aV9hcHAKLWluZGV4IDI5YjBmNjIuLmE2YmFmNjUgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL25vdGlmaWNhdGlvbi90ZXN0X25vdGlmaWNhdGlvbl9tdWx0aV9hcHAKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX211bHRpX2FwcAotQEAgLTQ4NCw2ICs0ODQsNyBAQCBlbHNlCi0gZmkKLSAKLSBpZiBbICIkKGlkIC11KSIgPT0gIjAiIF07IHRoZW4KLSsJdmFsaWRhdGVfbHR0bmdfbW9kdWxlc19wcmVzZW50Ci0gCVRFU1RTKz0oCi0gCXRlc3RfbXVsdGlfYXBwX2tlcm5lbAotIAl0ZXN0X29uX3JlZ2lzdGVyX2V2YWx1YXRpb25fa2VybmVsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi4xMC43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzXzIuMTAuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE2ZDE5ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi4xMC43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLVNFQ1RJT04gPSAiZGV2ZWwiCi1TVU1NQVJZID0gIkxpbnV4IFRyYWNlIFRvb2xraXQgQ29udHJvbCIKLURFU0NSSVBUSU9OID0gIlRoZSBMaW51eCB0cmFjZSB0b29sa2l0IGlzIGEgc3VpdGUgb2YgdG9vbHMgZGVzaWduZWQgXAotdG8gZXh0cmFjdCBwcm9ncmFtIGV4ZWN1dGlvbiBkZXRhaWxzIGZyb20gdGhlIExpbnV4IG9wZXJhdGluZyBzeXN0ZW0gXAotYW5kIGludGVycHJldCB0aGVtLiIKLQotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MDFkN2ZjNDQ5NmFhY2YzN2Q5MGRmOTBiOTBiMGNhYzEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3BsLTIuMC50eHQ7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xncGwtMi4xLnR4dDttZDU9MGYwZDcxNTAwZTZhNTdmZDI0ZDgyNWYzMzI0MmI5Y2EiCi0KLURFUEVORFMgPSAibGlidXJjdSBwb3B0IGxpYnhtbDIgdXRpbC1saW51eCIKLVJERVBFTkRTXyR7UE59ID0gImxpYmdjYyIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIHBlcmwgYmFzaCBnYXdrIGJhYmVsdHJhY2UgcHJvY3BzIHBlcmwtbW9kdWxlLW92ZXJsb2FkaW5nIGNvcmV1dGlscyB1dGlsLWxpbnV4IGttb2QgbHR0bmctbW9kdWxlcyBzZWQiCi1SREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtdXRpbHMiCi1SREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1tdXNsID0gIiBtdXNsLXV0aWxzIgotIyBiYWJlbHN0YXRzLnBsIHdhbnRzIGdldG9wdC1sb25nCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybC1tb2R1bGUtZ2V0b3B0LWxvbmciCi0KLVBZVEhPTl9PUFRJT04gPSAiYW1fY3ZfcHl0aG9uX3B5ZXhlY2Rpcj0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKLSAgICAgICAgICAgICAgICAgYW1fY3ZfcHl0aG9uX3B5dGhvbmRpcj0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKLSAgICAgICAgICAgICAgICAgUFlUSE9OX0lOQ0xVREU9Jy1JJHtTVEFHSU5HX0lOQ0RJUn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059JHtQWVRIT05fQUJJfScgXAotIgotUEFDS0FHRUNPTkZJRyA/Pz0gImx0dG5nLXVzdCIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLWVuYWJsZS1weXRob24tYmluZGluZ3MgJHtQWVRIT05fT1BUSU9OfSwscHl0aG9uMyBzd2lnLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbbHR0bmctdXN0XSA9ICItLXdpdGgtbHR0bmctdXN0LCAtLXdpdGhvdXQtbHR0bmctdXN0LCBsdHRuZy11c3QiCi1QQUNLQUdFQ09ORklHW2ttb2RdID0gIi0td2l0aC1rbW9kLCAtLXdpdGhvdXQta21vZCwga21vZCIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbi1wYWdlcywgLS1kaXNhYmxlLW1hbi1wYWdlcywgYXNjaWlkb2MtbmF0aXZlIHhtbHRvLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2FyYyA9ICJsdHRuZy11c3QiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9sdHRuZy5vcmcvZmlsZXMvbHR0bmctdG9vbHMvbHR0bmctdG9vbHMtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly94MzIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2x0dG5nLXNlc3Npb25kLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Ta2lwLXdoZW4tdGVzdGFwcC1pcy1ub3QtcHJlc2VudC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeC1jaGVjay1mb3ItbHR0bmctbW9kdWxlcy1wcmVzZW5jZS1iZWZvcmUtdGVzdGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNoZWNrLWZvci1nZXR0aWQtQVBJLWR1cmluZy1jb25maWd1cmUucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlNzgwNGQxMGU0Y2FkZTM4MWUyNDE2MDFmNjA0NzM3MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlZDcxZWJlMDBjNWQ5ODVjNzRmMzBlOTdiNjE0ZTkwOTU3M2NiZDkyNzZjODVlMDVkOTU1N2EwYjgxN2ExMzEyIgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdCBwa2djb25maWcgdXNlcmFkZCBweXRob24zLWRpciBtYW5wYWdlcyBzeXN0ZW1kCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJsdHRuZy1zZXNzaW9uZC5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAidHJhY2luZyIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9sdHRuZy9saWJleGVjLyogJHtkYXRhZGlyfS94bWwvbHR0bmcgXAotICAgICAgICAgICAgICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyouYSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5sYSIKLQotIyBTaW5jZSBmaWxlcyBhcmUgaW5zdGFsbGVkIGludG8gJHtsaWJkaXJ9L2x0dG5nL2xpYmV4ZWMgd2UgbWF0Y2ggCi0jIHRoZSBsaWJleGVjIGluc2FuZSB0ZXN0IHNvIHNraXAgaXQuCi0jIFB5dGhvbiBtb2R1bGUgbmVlZHMgdG8ga2VlcCBfbHR0bmcuc28KLUlOU0FORV9TS0lQXyR7UE59ID0gImxpYmV4ZWMgZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tZGJnID0gImxpYmV4ZWMiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICAjIGluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGUKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbHR0bmctc2Vzc2lvbmQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLSAgICBmb3IgZiBpbiBNYWtlZmlsZSB0ZXN0cy9NYWtlZmlsZSB0ZXN0cy91dGlscy91dGlscy5zaCB0ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NhdmUtbG9hZC9sb2FkLTQyKi5sdHRuZyB0ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NhdmUtbG9hZC9jb25maWd1cmF0aW9uL2xvYWQtNDIqLmx0dG5nIDsgZG8KLSAgICAgICAgaW5zdGFsbCAtRCAiJHtCfS8kZiIgIiR7RH0ke1BURVNUX1BBVEh9LyRmIgotICAgIGRvbmUKLQotICAgIGZvciBmIGluIGNvbmZpZy90YXAtZHJpdmVyLnNoIGNvbmZpZy90ZXN0LWRyaXZlciBzcmMvY29tbW9uL2NvbmZpZy9zZXNzaW9uLnhzZCBzcmMvY29tbW9uL21pLWx0dG5nLTMuMC54c2Q7IGRvCi0gICAgICAgIGluc3RhbGwgLUQgIiR7U30vJGYiICIke0R9JHtQVEVTVF9QQVRIfS8kZiIKLSAgICBkb25lCi0KLSAgICAjIFByZXZlbnQgJ21ha2UgY2hlY2snIGZyb20gcmVjdXJzaW5nIGludG8gbm9uLXRlc3Qgc3ViZGlyZWN0b3JpZXMuCi0gICAgc2VkIC1pIC1lICdzIV5TVUJESVJTID0gLiohU1VCRElSUyA9IHRlc3RzIScgIiR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlIgotCi0gICAgIyBXZSBkb24ndCBuZWVkIHRoZXNlCi0gICAgc2VkIC1pIC1lICcvZGlzdF9ub2luc3RfU0NSSVBUUyA9IC8sL14kL2QnICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZSIKLQotICAgICMgV2Ugc2hvdWxkbid0IG5lZWQgdG8gYnVpbGQgYW55dGhpbmcgaW4gdGVzdHMvdXRpbHMKLSAgICBzZWQgLWkgLWUgJ3MhYW1fX2FwcGVuZF8xID0gLiB1dGlscyFhbV9fYXBwZW5kXzEgPSAuICEnIFwKLSAgICAgICAgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlIgotCi0gICAgIyBDb3B5IHRoZSB0ZXN0cyBkaXJlY3RvcnkgdHJlZSBhbmQgdGhlIGV4ZWN1dGFibGVzIGFuZAotICAgICMgTWFrZWZpbGVzIGZvdW5kIHdpdGhpbi4KLSAgICBmb3IgZCBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMiIC10eXBlIGQgLW5vdCAtbmFtZSAubGlicyAtcHJpbnRmICclUCAnKSA7IGRvCi0gICAgICAgIGluc3RhbGwgLWQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIgotICAgICAgICBmaW5kICIke0J9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtZXhlY3V0YWJsZSAtdHlwZSBmIFwKLSAgICAgICAgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSArCi0gICAgICAgICMgVGFrZSBhbGwgLnB5IHNjcmlwdHMgZm9yIHRlc3RzIHVzaW5nIHRoZSBweXRob24gYmluZGluZ3MuCi0gICAgICAgIGZpbmQgIiR7Qn0vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC10eXBlIGYgLW5hbWUgIioucHkiIFwKLSAgICAgICAgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSArCi0gICAgICAgIHRlc3QgLXIgIiR7Qn0vdGVzdHMvJGQvTWFrZWZpbGUiICYmIFwKLSAgICAgICAgICAgIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiAiJHtCfS90ZXN0cy8kZC9NYWtlZmlsZSIKLSAgICBkb25lCi0KLSAgICBmb3IgZCBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMiIC10eXBlIGQgLW5hbWUgLmxpYnMgLXByaW50ZiAnJVAgJykgOyBkbwotICAgICAgICBmb3IgZiBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC1leGVjdXRhYmxlIC10eXBlIGYgLXByaW50ZiAnJVAgJykgOyBkbwotICAgICAgICAgICAgY3AgJHtCfS90ZXN0cy8kZC8kZiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9gZGlybmFtZSAkZGAvJGYKLSAgICAgICAgICAgIGNhc2UgJGYgaW4KLSAgICAgICAgICAgICAgICAqLnNvKQotICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkLwotICAgICAgICAgICAgICAgICAgICBsbiAtcyAgLi4vJGYgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQvJGYKLSAgICAgICAgICAgICAgICAgICAgIyBSZW1vdmUgYW55IHJwYXRoL3J1bnBhdGggdG8gcGFzcyBRQSBjaGVjay4KLSAgICAgICAgICAgICAgICAgICAgY2hycGF0aCAtLWRlbGV0ZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZC8kZgotICAgICAgICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgZXNhYwotICAgICAgICBkb25lCi0gICAgZG9uZQotCi0gICAgIwotICAgICMgVXNlIHRoZSB2ZXJzaW9uZWQgbGlicyBvZiBsaWJsdHRuZy11c3QtZGwuCi0gICAgIwotICAgIHVzdGRsPSIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9yZWdyZXNzaW9uL3VzdC91c3QtZGwvdGVzdF91c3QtZGwucHkiCi0gICAgaWYgWyAtZSAkdXN0ZGwgXTsgdGhlbgotICAgICAgICBzZWQgLWkgLWUgJ3MhOmxpYmx0dG5nLXVzdC1kbC5zbyE6bGlibHR0bmctdXN0LWRsLnNvLjAhJyAkdXN0ZGwKLSAgICBmaQotCi0gICAgaW5zdGFsbCAke0J9L3Rlc3RzL3VuaXQvaW5pX2NvbmZpZy9zYW1wbGUuaW5pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3VuaXQvaW5pX2NvbmZpZy8KLQotICAgICMgV2Ugc2hvdWxkbid0IG5lZWQgdG8gYnVpbGQgYW55dGhpbmcgaW4gdGVzdHMvcmVncmVzc2lvbi90b29scwotICAgIHNlZCAtaSAtZSAncyFeU1VCRElSUyA9IHRvb2xzICFTVUJESVJTID0gIScgXAotICAgICAgICAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvcmVncmVzc2lvbi9NYWtlZmlsZSIKLQotICAgICMgUHJldmVudCBhdHRlbXB0cyB0byB1cGRhdGUgTWFrZWZpbGVzIGR1cmluZyB0ZXN0IHJ1bnMsIGFuZAotICAgICMgc2lsZW5jZSAiTWFraW5nIGNoZWNrIGluICRTVUJESVIiIG1lc3NhZ2VzLgotICAgIGZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtbmFtZSBNYWtlZmlsZSAtdHlwZSBmIC1leGVjIFwKLSAgICAgICAgc2VkIC1pIC1lICcvTWFrZWZpbGU6LywvXiQvZCcgLWUgJy8lOiAlLmluLywvXiQvZCcgXAotICAgICAgICAtZSAnL2VjaG8gIk1ha2luZyAkJHRhcmdldCBpbiAkJHN1YmRpciI7IFxcL2QnIFwKLSAgICAgICAgLWUgJ3MvXnNyY2RpciA9IFwoLipcKS9zcmNkaXIgPSAuLycgXAotICAgICAgICAtZSAncy9eYnVpbGRkaXIgPSBcKC4qXCkvYnVpbGRkaXIgPSAuLycgXAotICAgICAgICAtZSAncy9eYWxsLWFtOi4qL2FsbC1hbTovJyBcCi0gICAgICAgIHt9ICsKLQotICAgIGZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtbmFtZSBNYWtlZmlsZSAtdHlwZSBmIC1leGVjIFwKLSAgICAgICAgdG91Y2ggLXIgIiR7Qn0vTWFrZWZpbGUiIHt9ICsKLQotICAgICMKLSAgICAjIE5lZWQgdG8gc3RvcCBnZW5lcmF0ZWQgYmluYXJpZXMgZnJvbSByZWJ1aWxkaW5nIGJ5IHJlbW92aW5nIHRoZWlyIHNvdXJjZSBkZXBlbmRlbmNpZXMKLSAgICAjCi0gICAgc2VkIC1lICdzI1woXnRlc3QuKk9CSkVDVFMuPVwpI2Rpc2FibGVcMSNnJyBcCi0gICAgICAgIC1lICdzI1woXnRlc3QuKkRFUEVOREVOQ0lFUy49XCkjZGlzYWJsZVwxI2cnIFwKLSAgICAgICAgLWUgJ3MjXChedGVzdC4qU09VUkNFUy49XCkjZGlzYWJsZVwxI2cnIFwKLSAgICAgICAgLWUgJ3MjXChedGVzdC4qTERBREQuPVwpI2Rpc2FibGVcMSNnJyBcCi0gICAgICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3VuaXQvTWFrZWZpbGUKLQotICAgICMgU3Vic3RpdHV0ZSBsaW5rcyB0byBpbnN0YWxsZWQgYmluYXJpZXMuCi0gICAgZm9yIHByb2cgaW4gbHR0bmcgbHR0bmctcmVsYXlkIGx0dG5nLXNlc3Npb25kIGx0dG5nLWNvbnN1bWVyZCBsdHRuZy1jcmFzaDsgZG8KLSAgICAgICAgZXhlZGlyPSIke0R9JHtQVEVTVF9QQVRIfS9zcmMvYmluLyR7cHJvZ30iCi0gICAgICAgIGluc3RhbGwgLWQgIiRleGVkaXIiCi0gICAgICAgIGNhc2UgIiRwcm9nIiBpbgotICAgICAgICAgICAgbHR0bmctY29uc3VtZXJkKQotICAgICAgICAgICAgICAgIGxuIC1zICIke2xpYmRpcn0vbHR0bmcvbGliZXhlYy8kcHJvZyIgIiRleGVkaXIiCi0gICAgICAgICAgICAgICAgOzsKLSAgICAgICAgICAgICopCi0gICAgICAgICAgICAgICAgbG4gLXMgIiR7YmluZGlyfS8kcHJvZyIgIiRleGVkaXIiCi0gICAgICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgIGRvbmUKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29sc18yLjExLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi4xMS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2YTE5ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi4xMS4yLmJiCkBAIC0wLDAgKzEsMTY2IEBACitTRUNUSU9OID0gImRldmVsIgorU1VNTUFSWSA9ICJMaW51eCBUcmFjZSBUb29sa2l0IENvbnRyb2wiCitERVNDUklQVElPTiA9ICJUaGUgTGludXggdHJhY2UgdG9vbGtpdCBpcyBhIHN1aXRlIG9mIHRvb2xzIGRlc2lnbmVkIFwKK3RvIGV4dHJhY3QgcHJvZ3JhbSBleGVjdXRpb24gZGV0YWlscyBmcm9tIHRoZSBMaW51eCBvcGVyYXRpbmcgc3lzdGVtIFwKK2FuZCBpbnRlcnByZXQgdGhlbS4iCisKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTAxZDdmYzQ0OTZhYWNmMzdkOTBkZjkwYjkwYjBjYWMxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dwbC0yLjAudHh0O21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sZ3BsLTIuMS50eHQ7bWQ1PTBmMGQ3MTUwMGU2YTU3ZmQyNGQ4MjVmMzMyNDJiOWNhIgorCitERVBFTkRTID0gImxpYnVyY3UgcG9wdCBsaWJ4bWwyIHV0aWwtbGludXgiCitSREVQRU5EU18ke1BOfSA9ICJsaWJnY2MiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBwZXJsIGJhc2ggZ2F3ayBiYWJlbHRyYWNlIHByb2NwcyBwZXJsLW1vZHVsZS1vdmVybG9hZGluZyBjb3JldXRpbHMgdXRpbC1saW51eCBrbW9kIGx0dG5nLW1vZHVsZXMgc2VkIHB5dGhvbjMtY29yZSIKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy11dGlscyIKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLW11c2wgPSAiIG11c2wtdXRpbHMiCisjIGJhYmVsc3RhdHMucGwgd2FudHMgZ2V0b3B0LWxvbmcKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyIKKworUFlUSE9OX09QVElPTiA9ICJhbV9jdl9weXRob25fcHlleGVjZGlyPScke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfScgXAorICAgICAgICAgICAgICAgICBhbV9jdl9weXRob25fcHl0aG9uZGlyPScke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfScgXAorICAgICAgICAgICAgICAgICBQWVRIT05fSU5DTFVERT0nLUkke1NUQUdJTkdfSU5DRElSfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0ke1BZVEhPTl9BQkl9JyBcCisiCitQQUNLQUdFQ09ORklHID8/PSAibHR0bmctdXN0IgorUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0tZW5hYmxlLXB5dGhvbi1iaW5kaW5ncyAke1BZVEhPTl9PUFRJT059LCxweXRob24zIHN3aWctbmF0aXZlIgorUEFDS0FHRUNPTkZJR1tsdHRuZy11c3RdID0gIi0td2l0aC1sdHRuZy11c3QsIC0td2l0aG91dC1sdHRuZy11c3QsIGx0dG5nLXVzdCIKK1BBQ0tBR0VDT05GSUdba21vZF0gPSAiLS13aXRoLWttb2QsIC0td2l0aG91dC1rbW9kLCBrbW9kIgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFuLXBhZ2VzLCAtLWRpc2FibGUtbWFuLXBhZ2VzLCBhc2NpaWRvYy1uYXRpdmUgeG1sdG8tbmF0aXZlIGxpYnhzbHQtbmF0aXZlIgorUEFDS0FHRUNPTkZJR19yZW1vdmVfYXJjID0gImx0dG5nLXVzdCIKKworU1JDX1VSSSA9ICJodHRwczovL2x0dG5nLm9yZy9maWxlcy9sdHRuZy10b29scy9sdHRuZy10b29scy0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3gzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLWRvLW5vdC1zdHJpcC1hLWhlbHBlci1saWJyYXJ5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9sdHRuZy1zZXNzaW9uZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtcmVncmVzc2lvbi1kaXNhYmxlLXRoZS10b29scy1saXZlLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNjhlZDc4ZjdmYTQyMzU0NzdlYTU3N2U0OGIzY2QyNDUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTM2NDc3MzA1YjI1ZjY1YzVkZDIyZGI5MTYxMjg3ZDMwYTMwOWNlODY4YjYxODA4NTdiMWZkMWZiNWU2YTU2YiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgcGtnY29uZmlnIHVzZXJhZGQgcHl0aG9uMy1kaXIgbWFucGFnZXMgc3lzdGVtZAorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibHR0bmctc2Vzc2lvbmQuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gInRyYWNpbmciCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbHR0bmcvbGliZXhlYy8qICR7ZGF0YWRpcn0veG1sL2x0dG5nIFwKKyAgICAgICAgICAgICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmEiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoubGEiCisKKyMgU2luY2UgZmlsZXMgYXJlIGluc3RhbGxlZCBpbnRvICR7bGliZGlyfS9sdHRuZy9saWJleGVjIHdlIG1hdGNoIAorIyB0aGUgbGliZXhlYyBpbnNhbmUgdGVzdCBzbyBza2lwIGl0LgorIyBQeXRob24gbW9kdWxlIG5lZWRzIHRvIGtlZXAgX2x0dG5nLnNvCitJTlNBTkVfU0tJUF8ke1BOfSA9ICJsaWJleGVjIGRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LWRiZyA9ICJsaWJleGVjIgorCitQUklWQVRFX0xJQlNfJHtQTn0tcHRlc3QgPSAibGliZm9vLnNvIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgIyBpbnN0YWxsIHN5c3RlbWQgdW5pdCBmaWxlCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2x0dG5nLXNlc3Npb25kLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICAgZm9yIGYgaW4gTWFrZWZpbGUgdGVzdHMvTWFrZWZpbGUgdGVzdHMvdXRpbHMvdXRpbHMuc2ggdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvbG9hZC00MioubHR0bmcgdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvY29uZmlndXJhdGlvbi9sb2FkLTQyKi5sdHRuZyB0ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2hlYWx0aC90ZXN0X2hlYWx0aC5zaCB0ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL21ldGFkYXRhL3V0aWxzLnNoIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvcm90YXRpb24vcm90YXRlX3V0aWxzLnNoOyBkbworICAgICAgICBpbnN0YWxsIC1EICIke0J9LyRmIiAiJHtEfSR7UFRFU1RfUEFUSH0vJGYiCisgICAgZG9uZQorCisgICAgZm9yIGYgaW4gY29uZmlnL3RhcC1kcml2ZXIuc2ggY29uZmlnL3Rlc3QtZHJpdmVyIHNyYy9jb21tb24vY29uZmlnL3Nlc3Npb24ueHNkIHNyYy9jb21tb24vbWktbHR0bmctMy4wLnhzZDsgZG8KKyAgICAgICAgaW5zdGFsbCAtRCAiJHtTfS8kZiIgIiR7RH0ke1BURVNUX1BBVEh9LyRmIgorICAgIGRvbmUKKworICAgICMgUHJldmVudCAnbWFrZSBjaGVjaycgZnJvbSByZWN1cnNpbmcgaW50byBub24tdGVzdCBzdWJkaXJlY3Rvcmllcy4KKyAgICBzZWQgLWkgLWUgJ3MhXlNVQkRJUlMgPSAuKiFTVUJESVJTID0gdGVzdHMhJyAiJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUiCisKKyAgICAjIFdlIGRvbid0IG5lZWQgdGhlc2UKKyAgICBzZWQgLWkgLWUgJy9kaXN0X25vaW5zdF9TQ1JJUFRTID0gLywvXiQvZCcgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlIgorCisgICAgIyBXZSBzaG91bGRuJ3QgbmVlZCB0byBidWlsZCBhbnl0aGluZyBpbiB0ZXN0cy91dGlscworICAgIHNlZCAtaSAtZSAncyFhbV9fYXBwZW5kXzEgPSAuIHV0aWxzIWFtX19hcHBlbmRfMSA9IC4gIScgXAorICAgICAgICAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUiCisKKyAgICAjIENvcHkgdGhlIHRlc3RzIGRpcmVjdG9yeSB0cmVlIGFuZCB0aGUgZXhlY3V0YWJsZXMgYW5kCisgICAgIyBNYWtlZmlsZXMgZm91bmQgd2l0aGluLgorICAgIGZvciBkIGluICQoZmluZCAiJHtCfS90ZXN0cyIgLXR5cGUgZCAtbm90IC1uYW1lIC5saWJzIC1wcmludGYgJyVQICcpIDsgZG8KKyAgICAgICAgaW5zdGFsbCAtZCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiCisgICAgICAgIGZpbmQgIiR7Qn0vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC1leGVjdXRhYmxlIC10eXBlIGYgXAorICAgICAgICAgICAgLWV4ZWMgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiIHt9ICsKKyAgICAgICAgIyBUYWtlIGFsbCAucHkgc2NyaXB0cyBmb3IgdGVzdHMgdXNpbmcgdGhlIHB5dGhvbiBiaW5kaW5ncy4KKyAgICAgICAgZmluZCAiJHtCfS90ZXN0cy8kZCIgLW1heGRlcHRoIDEgLXR5cGUgZiAtbmFtZSAiKi5weSIgXAorICAgICAgICAgICAgLWV4ZWMgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiIHt9ICsKKyAgICAgICAgdGVzdCAtciAiJHtCfS90ZXN0cy8kZC9NYWtlZmlsZSIgJiYgXAorICAgICAgICAgICAgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiICIke0J9L3Rlc3RzLyRkL01ha2VmaWxlIgorICAgIGRvbmUKKworICAgIGZvciBkIGluICQoZmluZCAiJHtCfS90ZXN0cyIgLXR5cGUgZCAtbmFtZSAubGlicyAtcHJpbnRmICclUCAnKSA7IGRvCisgICAgICAgIGZvciBmIGluICQoZmluZCAiJHtCfS90ZXN0cy8kZCIgLW1heGRlcHRoIDEgLWV4ZWN1dGFibGUgLXR5cGUgZiAtcHJpbnRmICclUCAnKSA7IGRvCisgICAgICAgICAgICBjcCAke0J9L3Rlc3RzLyRkLyRmICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2BkaXJuYW1lICRkYC8kZgorICAgICAgICAgICAgY2FzZSAkZiBpbgorICAgICAgICAgICAgICAgICouc28pCisgICAgICAgICAgICAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQvCisgICAgICAgICAgICAgICAgICAgIGxuIC1zICAuLi8kZiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZC8kZgorICAgICAgICAgICAgICAgICAgICAjIFJlbW92ZSBhbnkgcnBhdGgvcnVucGF0aCB0byBwYXNzIFFBIGNoZWNrLgorICAgICAgICAgICAgICAgICAgICBjaHJwYXRoIC0tZGVsZXRlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkLyRmCisgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICBlc2FjCisgICAgICAgIGRvbmUKKyAgICBkb25lCisKKyAgICBjaHJwYXRoIC0tZGVsZXRlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3V0aWxzL3Rlc3RhcHAvdXNlcnNwYWNlLXByb2JlLWVsZi1iaW5hcnkvdXNlcnNwYWNlLXByb2JlLWVsZi1iaW5hcnkKKworICAgICMKKyAgICAjIFVzZSB0aGUgdmVyc2lvbmVkIGxpYnMgb2YgbGlibHR0bmctdXN0LWRsLgorICAgICMKKyAgICB1c3RkbD0iJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvcmVncmVzc2lvbi91c3QvdXN0LWRsL3Rlc3RfdXN0LWRsLnB5IgorICAgIGlmIFsgLWUgJHVzdGRsIF07IHRoZW4KKyAgICAgICAgc2VkIC1pIC1lICdzITpsaWJsdHRuZy11c3QtZGwuc28hOmxpYmx0dG5nLXVzdC1kbC5zby4wIScgJHVzdGRsCisgICAgZmkKKworICAgIGluc3RhbGwgJHtCfS90ZXN0cy91bml0L2luaV9jb25maWcvc2FtcGxlLmluaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy91bml0L2luaV9jb25maWcvCisKKyAgICAjIFdlIHNob3VsZG4ndCBuZWVkIHRvIGJ1aWxkIGFueXRoaW5nIGluIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMKKyAgICBzZWQgLWkgLWUgJ3MhXlNVQkRJUlMgPSB0b29scyAhU1VCRElSUyA9ICEnIFwKKyAgICAgICAgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3JlZ3Jlc3Npb24vTWFrZWZpbGUiCisKKyAgICAjIFByZXZlbnQgYXR0ZW1wdHMgdG8gdXBkYXRlIE1ha2VmaWxlcyBkdXJpbmcgdGVzdCBydW5zLCBhbmQKKyAgICAjIHNpbGVuY2UgIk1ha2luZyBjaGVjayBpbiAkU1VCRElSIiBtZXNzYWdlcy4KKyAgICBmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCisgICAgICAgIHNlZCAtaSAtZSAnL01ha2VmaWxlOi8sL14kL2QnIC1lICcvJTogJS5pbi8sL14kL2QnIFwKKyAgICAgICAgLWUgJy9lY2hvICJNYWtpbmcgJCR0YXJnZXQgaW4gJCRzdWJkaXIiOyBcXC9kJyBcCisgICAgICAgIC1lICdzL15zcmNkaXIgPSBcKC4qXCkvc3JjZGlyID0gLi8nIFwKKyAgICAgICAgLWUgJ3MvXmJ1aWxkZGlyID0gXCguKlwpL2J1aWxkZGlyID0gLi8nIFwKKyAgICAgICAgLWUgJ3MvXmFsbC1hbTouKi9hbGwtYW06LycgXAorICAgICAgICB7fSArCisKKyAgICBmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCisgICAgICAgIHRvdWNoIC1yICIke0J9L01ha2VmaWxlIiB7fSArCisKKyAgICAjCisgICAgIyBOZWVkIHRvIHN0b3AgZ2VuZXJhdGVkIGJpbmFyaWVzIGZyb20gcmVidWlsZGluZyBieSByZW1vdmluZyB0aGVpciBzb3VyY2UgZGVwZW5kZW5jaWVzCisgICAgIworICAgIHNlZCAtZSAncyNcKF50ZXN0LipPQkpFQ1RTLj1cKSNkaXNhYmxlXDEjZycgXAorICAgICAgICAtZSAncyNcKF50ZXN0LipERVBFTkRFTkNJRVMuPVwpI2Rpc2FibGVcMSNnJyBcCisgICAgICAgIC1lICdzI1woXnRlc3QuKlNPVVJDRVMuPVwpI2Rpc2FibGVcMSNnJyBcCisgICAgICAgIC1lICdzI1woXnRlc3QuKkxEQURELj1cKSNkaXNhYmxlXDEjZycgXAorICAgICAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy91bml0L01ha2VmaWxlCisKKyAgICAjIFN1YnN0aXR1dGUgbGlua3MgdG8gaW5zdGFsbGVkIGJpbmFyaWVzLgorICAgIGZvciBwcm9nIGluIGx0dG5nIGx0dG5nLXJlbGF5ZCBsdHRuZy1zZXNzaW9uZCBsdHRuZy1jb25zdW1lcmQgbHR0bmctY3Jhc2g7IGRvCisgICAgICAgIGV4ZWRpcj0iJHtEfSR7UFRFU1RfUEFUSH0vc3JjL2Jpbi8ke3Byb2d9IgorICAgICAgICBpbnN0YWxsIC1kICIkZXhlZGlyIgorICAgICAgICBjYXNlICIkcHJvZyIgaW4KKyAgICAgICAgICAgIGx0dG5nLWNvbnN1bWVyZCkKKyAgICAgICAgICAgICAgICBsbiAtcyAiJHtsaWJkaXJ9L2x0dG5nL2xpYmV4ZWMvJHByb2ciICIkZXhlZGlyIgorICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgIGxuIC1zICIke2JpbmRpcn0vJHByb2ciICIkZXhlZGlyIgorICAgICAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICBkb25lCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0L2x0dG5nLXVzdC1kb2MtZXhhbXBsZXMtZGlzYWJsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3QvbHR0bmctdXN0LWRvYy1leGFtcGxlcy1kaXNhYmxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmY4NTI3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3QvbHR0bmctdXN0LWRvYy1leGFtcGxlcy1kaXNhYmxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotRG9uJ3QgYnVpbGQgdGhlIGRvYyBleGFtcGxlcyAtIHdlIGRvbid0IG5lZWQgdGhlbSBhbmQgaW4gZmFjdCB0aGV5Ci1uZXZlciBzdWNjZXNzZnVsbHkgYnVpbHQgaW4gcHJldmlvdXMgaXRlcmF0aW9ucyBvZiB0aGUgbHR0bmctdXN0Ci1yZWNpcGUgYW55d2F5LgotCi1TaWduZWQtb2ZmLWJ5OiBUb20gWmFudXNzaSA8dG9tLnphbnVzc2lAaW50ZWwuY29tPgotCi1JbmRleDogbHR0bmctdXN0LTIuOS4xL2RvYy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGx0dG5nLXVzdC0yLjkuMS5vcmlnL2RvYy9NYWtlZmlsZS5hbQotKysrIGx0dG5nLXVzdC0yLjkuMS9kb2MvTWFrZWZpbGUuYW0KLUBAIC0xLDMgKzEsMyBAQAotLVNVQkRJUlMgPSAuIG1hbiBleGFtcGxlcwotK1NVQkRJUlMgPSAuIG1hbgotIAotIGRpc3RfZG9jX0RBVEEgPSBqYXZhLWFnZW50LnR4dApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdF8yLjEwLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0XzIuMTAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZhYWQzMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0XzIuMTAuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVNVTU1BUlkgPSAiTGludXggVHJhY2UgVG9vbGtpdCBVc2Vyc3BhY2UgVHJhY2VyIDIueCIKLURFU0NSSVBUSU9OID0gIlRoZSBMVFRuZyBVU1QgMi54IHBhY2thZ2UgY29udGFpbnMgdGhlIHVzZXJzcGFjZSB0cmFjZXIgbGlicmFyeSB0byB0cmFjZSB1c2Vyc3BhY2UgY29kZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2x0dG5nLm9yZy91c3QiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5sdHRuZy5vcmcvcHJvamVjdHMvbHR0bmctdXN0IgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyAmIE1JVCAmIEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzk2M2ViMzY2Yjc4MTI1MmIwYmYwZmRmMTYyNGQ5ZTkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc25wcmludGYvc25wcmludGYuYztlbmRsaW5lPTMyO21kNT1kM2Q1NDQ5NTlkOGEzNzgyYjJlMDc0NTFiZTBhOTAzYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zbnByaW50Zi92YXJpb3VzLmg7ZW5kbGluZT0zMTttZDU9ODlmMjUwOWI2YjQ2ODJjNGZjOTUyNTVlZWM0YWJlNDQiCi0KLVBZVEhPTl9PUFRJT04gPSAiYW1fY3ZfcHl0aG9uX3B5ZXhlY2Rpcj0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKLSAgICAgICAgICAgICAgICAgYW1fY3ZfcHl0aG9uX3B5dGhvbmRpcj0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKLSAgICAgICAgICAgICAgICAgUFlUSE9OX0lOQ0xVREU9Jy1JJHtTVEFHSU5HX0lOQ0RJUn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059JHtQWVRIT05fQUJJfScgXAotIgotCi1pbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBtYW5wYWdlcyBweXRob24zbmF0aXZlCi0KLURFUEVORFMgPSAibGlidXJjdSB1dGlsLWxpbnV4IgotUkRFUEVORFNfJHtQTn0tYmluID0gInB5dGhvbjMtY29yZSIKLQotIyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgYWZ0ZXIgcmVuYW1lCi1SUFJPVklERVNfJHtQTn0gPSAibHR0bmcyLXVzdCIKLVJSRVBMQUNFU18ke1BOfSA9ICJsdHRuZzItdXN0IgotUkNPTkZMSUNUU18ke1BOfSA9ICJsdHRuZzItdXN0IgotCi1QRSA9ICIyIgotCi1TUkNfVVJJID0gImh0dHBzOi8vbHR0bmcub3JnL2ZpbGVzL2x0dG5nLXVzdC9sdHRuZy11c3QtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9sdHRuZy11c3QtZG9jLWV4YW1wbGVzLWRpc2FibGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1weXRob24tbHR0bmd1c3QtTWFrZWZpbGUuYW0tQWRkLWluc3RhbGwtbGliLXRvLXNldHVwLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmMGM4NmE5ZmE3ZGNmZDAyMDVmYjQyNTg0YTMxMGIxYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNmY5ZWQ5YjIxOTg4NTViMWM3ZmNiZjE1ZmU1NzI5N2VlMjU5NDA5ZmZhMWIzYmFkODczMjE0MTJkOThiYzM1IgotCi1DVkVfUFJPRFVDVCA9ICJ1c3QiCi0KLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbi1wYWdlcywgLS1kaXNhYmxlLW1hbi1wYWdlcywgYXNjaWlkb2MtbmF0aXZlIHhtbHRvLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uMy1hZ2VudF0gPSAiLS1lbmFibGUtcHl0aG9uLWFnZW50ICR7UFlUSE9OX09QVElPTn0sIC0tZGlzYWJsZS1weXRob24tYWdlbnQsIHB5dGhvbjMsIHB5dGhvbjMiCi0KLUZJTEVTXyR7UE59ICs9ICIgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyouYSIKLUZJTEVTXyR7UE59LWRldiArPSAiICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoubGEiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICAgICAjIFBhdGNoIHB5dGhvbiB0b29scyB0byB1c2UgUHl0aG9uIDM7IHRoZXkgc2hvdWxkIGJlIHNvdXJjZSBjb21wYXRpYmxlLCBidXQKLSAgICAgICAgIyBzdGlsbCByZWZlciB0byBQeXRob24gMiBpbiB0aGUgc2hlYmFuZwotICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLipweXRob24uKiwjISR7YmluZGlyfS9weXRob24zLCcgJHtEfSR7YmluZGlyfS9sdHRuZy1nZW4tdHAKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3RfMi4xMS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdF8yLjExLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JkMGRmYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3RfMi4xMS4xLmJiCkBAIC0wLDAgKzEsNTEgQEAKK1NVTU1BUlkgPSAiTGludXggVHJhY2UgVG9vbGtpdCBVc2Vyc3BhY2UgVHJhY2VyIDIueCIKK0RFU0NSSVBUSU9OID0gIlRoZSBMVFRuZyBVU1QgMi54IHBhY2thZ2UgY29udGFpbnMgdGhlIHVzZXJzcGFjZSB0cmFjZXIgbGlicmFyeSB0byB0cmFjZSB1c2Vyc3BhY2UgY29kZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2x0dG5nLm9yZy91c3QiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5sdHRuZy5vcmcvcHJvamVjdHMvbHR0bmctdXN0IgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyAmIE1JVCAmIEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzk2M2ViMzY2Yjc4MTI1MmIwYmYwZmRmMTYyNGQ5ZTkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc25wcmludGYvc25wcmludGYuYztlbmRsaW5lPTMyO21kNT1kM2Q1NDQ5NTlkOGEzNzgyYjJlMDc0NTFiZTBhOTAzYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zbnByaW50Zi92YXJpb3VzLmg7ZW5kbGluZT0zMTttZDU9ODlmMjUwOWI2YjQ2ODJjNGZjOTUyNTVlZWM0YWJlNDQiCisKK1BZVEhPTl9PUFRJT04gPSAiYW1fY3ZfcHl0aG9uX3B5ZXhlY2Rpcj0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKKyAgICAgICAgICAgICAgICAgYW1fY3ZfcHl0aG9uX3B5dGhvbmRpcj0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKKyAgICAgICAgICAgICAgICAgUFlUSE9OX0lOQ0xVREU9Jy1JJHtTVEFHSU5HX0lOQ0RJUn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059JHtQWVRIT05fQUJJfScgXAorIgorCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBtYW5wYWdlcyBweXRob24zbmF0aXZlCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbnVtYSIKKworREVQRU5EUyA9ICJsaWJ1cmN1IHV0aWwtbGludXgiCitSREVQRU5EU18ke1BOfS1iaW4gPSAicHl0aG9uMy1jb3JlIgorCisjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBhZnRlciByZW5hbWUKK1JQUk9WSURFU18ke1BOfSA9ICJsdHRuZzItdXN0IgorUlJFUExBQ0VTXyR7UE59ID0gImx0dG5nMi11c3QiCitSQ09ORkxJQ1RTXyR7UE59ID0gImx0dG5nMi11c3QiCisKK1BFID0gIjIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9sdHRuZy5vcmcvZmlsZXMvbHR0bmctdXN0L2x0dG5nLXVzdC0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcHl0aG9uLWx0dG5ndXN0LU1ha2VmaWxlLmFtLUFkZC1pbnN0YWxsLWxpYi10by1zZXR1cC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjdkZTA0YThmZjFmMGE0ZWZmYTA5YTQyNjIwZWM0MDgxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdmYmFiOTYzZDYwNzQxZmZkNGQ4ZGQwYTI0NmY2Y2YxNjhjZGZlM2IyMzg1Nzk4YmQ5MDU1MGY1ZjBiYmE4NjkiCisKK0NWRV9QUk9EVUNUID0gInVzdCIKKworUEFDS0FHRUNPTkZJR1tleGFtcGxlc10gPSAiLS1lbmFibGUtZXhhbXBsZXMsIC0tZGlzYWJsZS1leGFtcGxlcywiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW4tcGFnZXMsIC0tZGlzYWJsZS1tYW4tcGFnZXMsIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUgbGlieHNsdC1uYXRpdmUiCitQQUNLQUdFQ09ORklHW3B5dGhvbjMtYWdlbnRdID0gIi0tZW5hYmxlLXB5dGhvbi1hZ2VudCAke1BZVEhPTl9PUFRJT059LCAtLWRpc2FibGUtcHl0aG9uLWFnZW50LCBweXRob24zLCBweXRob24zIgorCitGSUxFU18ke1BOfSArPSAiICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmEiCitGSUxFU18ke1BOfS1kZXYgKz0gIiAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmxhIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAgICAgIyBQYXRjaCBweXRob24gdG9vbHMgdG8gdXNlIFB5dGhvbiAzOyB0aGV5IHNob3VsZCBiZSBzb3VyY2UgY29tcGF0aWJsZSwgYnV0CisgICAgICAgICMgc3RpbGwgcmVmZXIgdG8gUHl0aG9uIDIgaW4gdGhlIHNoZWJhbmcKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLiosIyEke2JpbmRpcn0vcHl0aG9uMywnICR7RH0ke2JpbmRpcn0vbHR0bmctZ2VuLXRwCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYgppbmRleCAwNzBkNWVjLi5kMzMxZDFiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIKQEAgLTUyLDcgKzUyLDcgQEAKICNrZXJuZWwgMy4xKyBzdXBwb3J0cyBXRVJST1IgdG8gZGlzYWJsZSB3YXJuaW5ncyBhcyBlcnJvcnMKIGV4cG9ydCBXRVJST1IgPSAiMCIKIAotZG9fcG9wdWxhdGVfbGljW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19wYXRjaCIKK2RvX3BvcHVsYXRlX2xpY1tkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fc2hhcmVkX3dvcmtkaXIiCiAKICMgbmVlZGVkIGZvciBidWlsZGluZyB0aGUgdG9vbHMvcGVyZiBQZXJsIGJpbmRpbmcKIGluY2x1ZGUgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2NyaXB0aW5nJywgJ3BlcmYtcGVybC5pbmMnLCAnJywgZCl9CkBAIC03Myw2ICs3Myw4IEBACiAgICAgQ1JPU1NfQ09NUElMRT0ke1RBUkdFVF9QUkVGSVh9IFwKICAgICBBUkNIPSR7QVJDSH0gXAogICAgIENDPSIke0NDfSIgXAorICAgIENDTEQ9IiR7Q0N9IiBcCisgICAgTERTSEFSRUQ9IiR7Q0N9IC1zaGFyZWQiIFwKICAgICBBUj0iJHtBUn0iIFwKICAgICBMRD0iJHtMRH0iIFwKICAgICBFWFRSQV9DRkxBR1M9Ii1sZHciIFwKQEAgLTE0NSw2ICsxNDcsNyBAQAogICAgIHNyY19kaXIgPSBkLmdldFZhcigiU1RBR0lOR19LRVJORUxfRElSIikKICAgICBkZXN0X2RpciA9IGQuZ2V0VmFyKCJTIikKICAgICBiYi51dGlscy5ta2RpcmhpZXIoZGVzdF9kaXIpCisgICAgYmIudXRpbHMucHJ1bmVkaXIoZGVzdF9kaXIpCiAgICAgZm9yIHMgaW4gc291cmNlczoKICAgICAgICAgc3JjID0gb2UucGF0aC5qb2luKHNyY19kaXIsIHMpCiAgICAgICAgIGRlc3QgPSBvZS5wYXRoLmpvaW4oZGVzdF9kaXIsIHMpCkBAIC0xNjEsNyArMTY0LDcgQEAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKICAgICAjIElmIGJ1aWxkaW5nIGEgbXVsdGxpYiBiYXNlZCBwZXJmLCB0aGUgaW5jb3JyZWN0IGxpYnJhcnkgcGF0aCB3aWxsIGJlCiAgICAgIyBkZXRlY3RlZCBieSBwZXJmLCBzaW5jZSBpdCB0cmlnZ2VycyB2aWE6IGlmZXEgKCQoQVJDSCkseDg2XzY0KS4gSW4gYSAzMiBiaXQKLSAgICAjIGJ1aWxkLCB3aXRoIGEgNjQgYml0IG11bHRpbGliLCB0aGUgYXJjaCB3b24ndCBtYXRjaCBhbmQgdGhlIGRldGVjdGlvbiBvZiBhIAorICAgICMgYnVpbGQsIHdpdGggYSA2NCBiaXQgbXVsdGlsaWIsIHRoZSBhcmNoIHdvbid0IG1hdGNoIGFuZCB0aGUgZGV0ZWN0aW9uIG9mIGEKICAgICAjIDY0IGJpdCBidWlsZCAoYW5kIGxpYnJhcnkpIGFyZSBub3QgZXhlY3RlZC4gVG8gZW5zdXJlIHRoYXQgbGlicmFyaWVzIGFyZQogICAgICMgaW5zdGFsbGVkIHRvIHRoZSBjb3JyZWN0IGxvY2F0aW9uLCB3ZSBjYW4gdXNlIHRoZSB3ZWFrIGFzc2lnbm1lbnQgaW4gdGhlCiAgICAgIyBjb25maWcvTWFrZWZpbGUuCkBAIC0yMzcsMTEgKzI0MCw4IEBACiAgICAgZmkKIAogICAgICMgdXNlIC91c3IvYmluL2VudiBpbnN0ZWFkIG9mIHZlcnNpb24gc3BlY2lmaWMgcHl0aG9uCi0gICAgZm9yIHMgaW4gYGZpbmQgJHtTfS90b29scy9wZXJmLyAtbmFtZSAnKi5weSdgIHNjcmlwdHMvYnBmX2hlbHBlcnNfZG9jLnB5OyBkbwotICAgICAgICBzZWQgLWkgJ3MsL3Vzci9iaW4vcHl0aG9uMiwvdXNyL2Jpbi9lbnYgcHl0aG9uMywnICIke3N9IgotICAgICAgICBzZWQgLWkgJ3MsL3Vzci9iaW4vZW52IHB5dGhvbjIsL3Vzci9iaW4vZW52IHB5dGhvbjMsJyAiJHtzfSIKLSAgICAgICAgc2VkIC1pICdzLC91c3IvYmluL3B5dGhvbjMsL3Vzci9iaW4vZW52IHB5dGhvbjMsJyAiJHtzfSIKLSAgICAgICAgc2VkIC1pICdzLC91c3IvYmluL3B5dGhvbiwvdXNyL2Jpbi9lbnYgcHl0aG9uMywnICIke3N9IgorICAgIGZvciBzIGluIGBmaW5kICR7U30vdG9vbHMvcGVyZi8gLW5hbWUgJyoucHknYCBgZmluZCAke1N9L3NjcmlwdHMvIC1uYW1lICdicGZfaGVscGVyc19kb2MucHknYDsgZG8KKyAgICAgICAgc2VkIC1pIC1lICJzLCMhLipweXRob24uKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsIiAke3N9CiAgICAgZG9uZQogCiAgICAgIyB1bmlzdGQuaCBjYW4gYmUgb3V0IG9mIHN5bmMgYmV0d2VlbiBsaWJjLWhlYWRlcnMgYW5kIHRoZSBjYXB0dXJlZCB2ZXJzaW9uIGluIHRoZSBwZXJmIHNvdXJjZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3Bvd2VydG9wL3Bvd2VydG9wXzIuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi4xMC5iYgppbmRleCA1YmU4ZDIzLi43YjdiMzkyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi4xMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi4xMC5iYgpAQCAtMSwxMiArMSwxMiBAQAogU1VNTUFSWSA9ICJQb3dlciB1c2FnZSB0b29sIgogREVTQ1JJUFRJT04gPSAiTGludXggdG9vbCB0byBkaWFnbm9zZSBpc3N1ZXMgd2l0aCBwb3dlciBjb25zdW1wdGlvbiBhbmQgcG93ZXIgbWFuYWdlbWVudC4iCi1IT01FUEFHRSA9ICJodHRwOi8vMDEub3JnL3Bvd2VydG9wLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmxlc3N3YXR0cy5vcmcvIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly8wMS5vcmcvcG93ZXJ0b3AvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2FwcC5kZXZ6aW5nLmNvbS9wb3dlcnRvcGJ1Z3MvYnVnemlsbGEiCiBERVBFTkRTID0gIm5jdXJzZXMgbGlibmwgcGNpdXRpbHMiCiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTJmODg0ZDJhZTFmZjg3YzA5ZTViN2NjYzJjNGNhN2UiCiAKLVNSQ19VUkkgPSAiaHR0cDovLzAxLm9yZy9zaXRlcy9kZWZhdWx0L2ZpbGVzL2Rvd25sb2Fkcy9wb3dlcnRvcC12JHtQVn0udGFyLmd6IFwKK1NSQ19VUkkgPSAiaHR0cHM6Ly8wMS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9kb3dubG9hZHMvcG93ZXJ0b3AtdiR7UFZ9LnRhci5neiBcCiAgICAgZmlsZTovLzAwMDEtd2FrZXVwX3h4eC5oLWluY2x1ZGUtbGltaXRzLmgucGF0Y2ggXAogIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLURvLW5vdC1idWlsZC1hbnl0aGluZy1pbi1oZWxwLWFzLWl0LXJlcXVpcmVzLWl0c3Rvb2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLURvLW5vdC1idWlsZC1hbnl0aGluZy1pbi1oZWxwLWFzLWl0LXJlcXVpcmVzLWl0c3Rvb2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkZTUxY2YuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1Eby1ub3QtYnVpbGQtYW55dGhpbmctaW4taGVscC1hcy1pdC1yZXF1aXJlcy1pdHN0b29sLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotRnJvbSBkMzMyYjQ4MDI1N2FhOThiNjNkMzljM2M5NDg5NmExMTE1MzZmOTM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIzIEF1ZyAyMDE3IDE4OjM4OjI2ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBEbyBub3QgYnVpbGQgYW55dGhpbmcgaW4gaGVscC8gYXMgaXQgcmVxdWlyZXMgaXRzdG9vbC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIG1lc29uLmJ1aWxkIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IDM5ODYyNzMuLmFlMmY2NWUgMTAwNjQ0Ci0tLS0gYS9tZXNvbi5idWlsZAotKysrIGIvbWVzb24uYnVpbGQKLUBAIC0xNjQsNyArMTY0LDYgQEAgc3ViZGlyKCd0b29scycpCi0gc3ViZGlyKCd0ZXN0cycpCi0gCi0gc3ViZGlyKCdkYXRhJykKLS1zdWJkaXIoJ2hlbHAnKQotIHN1YmRpcigncG8nKQotIAotIG1lc29uLmFkZF9pbnN0YWxsX3NjcmlwdCgnYnVpbGQtYXV4L21lc29uL3Bvc3RfaW5zdGFsbC5zaCcpCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzL2RlZmluZS1OVF9HTlVfQlVJTERfSUQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy9kZWZpbmUtTlRfR05VX0JVSUxEX0lELnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzVkZGFkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzL2RlZmluZS1OVF9HTlVfQlVJTERfSUQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1PbiB1Y2xpYmMgZWxmLmggZG9lcyBub3QgaGF2ZSBHTlUgZXh0ZW50aW9ucyBidXQgd2UgbmVlZCB0aGlzIGRlZmluZQotc28gd2UgZGVmaW5lIGl0IGxvY2FsbHkgaWYgaXRzIG5vdCBnZXR0aW5nIGl0IGZyb20gZWxmLmgKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiBnaXQvZWxmcGFyc2VyLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9saWIvdXRpbC9lbGZwYXJzZXIuaAkyMDExLTA3LTE2IDE4OjU3OjQxLjAwMDAwMDAwMCAtMDcwMAotKysrIGdpdC9saWIvdXRpbC9lbGZwYXJzZXIuaAkyMDExLTA3LTE2IDIwOjI4OjU0LjczMzgyOTg5NSAtMDcwMAotQEAgLTE3LDYgKzE3LDEwIEBACi0gICovCi0gI2luY2x1ZGUgPGdsaWIuaD4KLSAKLSsjaWZuZGVmIE5UX0dOVV9CVUlMRF9JRAotKyNkZWZpbmUgTlRfR05VX0JVSUxEX0lEIDMKLSsjZW5kaWYKLSsKLSB0eXBlZGVmIHN0cnVjdCBFbGZTeW0gRWxmU3ltOwotIHR5cGVkZWYgc3RydWN0IEVsZlBhcnNlciBFbGZQYXJzZXI7Ci0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMzIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4zMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTI5MzM4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4zMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXN0ZW0td2lkZSBQZXJmb3JtYW5jZSBQcm9maWxlciBmb3IgTGludXgiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnN5c3Byb2YuY29tIgotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc3AtYXBwbGljYXRpb24uYztlbmRsaW5lPTE3O21kNT00MGU1NTU3N2VmMTIyYzg4ZmUyMDA1MmFjZGE2NDg3NSIKLQotR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKLWluaGVyaXQgZ25vbWViYXNlIGdldHRleHQgc3lzdGVtZCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ3NldHRpbmdzCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgbGlieG1sMi1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJkMWZhOWFkMjE2NDE5ZDcyMjc3MGNhMzY3MTNhZDNhZiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImZjMjJhNjllNDY4NzAxYzVlYzkwMzZlOTYwYzYyNzNhZmExZWQ2YTg5ZGYxZjg4OWZlZDQ5NDE3YWRkNTU1NGQiCi1TUkNfVVJJICs9ICIgXAotICAgICAgICAgICBmaWxlOi8vZGVmaW5lLU5UX0dOVV9CVUlMRF9JRC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1idWlsZC1hbnl0aGluZy1pbi1oZWxwLWFzLWl0LXJlcXVpcmVzLWl0c3Rvb2wucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnRElTVFJPX0ZFQVRVUkVTJywgJyR7R1RLM0RJU1RST0ZFQVRVUkVTfScsICdndGsnLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR1tndGtdID0gIi1EZW5hYmxlX2d0az10cnVlLC1EZW5hYmxlX2d0az1mYWxzZSxndGsrMyIKLVBBQ0tBR0VDT05GSUdbc3lzcHJvZmRdID0gIi1Ed2l0aF9zeXNwcm9mZD1idW5kbGVkLC1Ed2l0aF9zeXNwcm9mZD1ub25lLHBvbGtpdCIKLQotU09MSUJTID0gIi5zbyIKLUZJTEVTX1NPTElCU0RFViA9ICIiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzeXNwcm9mZCcsICdzeXNwcm9mMi5zZXJ2aWNlJywgJycsIGQpfSIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9tZXRhaW5mbyBcCi0gICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYwppbmRleCBhYmIyYjM3Li4xMTZlODNmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5pbmMKQEAgLTEsNyArMSw3IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi1TUkNSRVYgPSAiNTdjOWFjYTlmMWZmMzJhNmFkZDEwZTAyZWNkMzNiNzMxNGZhZDQ5OSIKLVBWID0gIjQuMStnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICIwNDRhMDY0MDk4NWVmMDA3YzBiMmZiNmVhZjY2MGQ5ZDUxODAwY2RhIgorUFYgPSAiNC4yIgogCiBTUkNfVVJJID0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9zeXN0ZW10YXAuZ2l0IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWxldC1jb25maWd1cmUtd3JpdGUtYS1weXRob24tbG9jYXRpb24taW50by10aC5wYXRjaCBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMS1GaXgtYWxzYS1zb3VuZC0uaC1mb3ItZXh0ZXJuYWwtcHJvZ3JhbXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMS1GaXgtYWxzYS1zb3VuZC0uaC1mb3ItZXh0ZXJuYWwtcHJvZ3JhbXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkwNjUwYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLUZpeC1hbHNhLXNvdW5kLS5oLWZvci1leHRlcm5hbC1wcm9ncmFtcy5wYXRjaApAQCAtMCwwICsxLDcxMDQgQEAKK0Zyb20gYWU1NjQ2NjVlYzI2MWNmMTA0ZGU0OTliMWNkZGEzNTY0MDcwZmM2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRha2FzaGkgSXdhaSA8dGl3YWlAc3VzZS5kZT4KK0RhdGU6IEZyaSwgMjAgRGVjIDIwMTkgMTU6NDY6NDggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGFsc2Evc291bmQvKi5oIGZvciBleHRlcm5hbCBwcm9ncmFtcworCitUaGUgcmVjZW50IHVwZGF0ZSBvZiBzb3VuZC8qLmggdG8gc3luYyB3aXRoIHRoZSBsYXRlc3QgTGludXMgdWFwaQorZmlsZXMgYnJva2UgdGhlIGJ1aWxkIG9mIGFsc2EtdG9vbHMgcHJvZ3JhbXMuICBUaGVzZSBmaWxlcyB1c2VkIHRvIGJlCithIG1vZGlmaWVkIHZlcnNpb24gb2YgTGludXggc291bmQvKiBoZWFkZXIgZmlsZXMsIHNvIHRoYXQgdGhleSBjb3VsZAorYmUgYnVpbHQgd2l0aG91dCBMaW51eCBoZWFkZXJzLiAgVGhlIHNwZWNpYWwgcHJlZml4IGxpa2UgX191c2VyIGFuZAorb3RoZXIgdGhpbmdzIHdlcmUgd29ya2VkIGFyb3VuZCB0aGVyZS4KKworV2UgbWF5IGRvIHRoYXQgYWdhaW4sIGJ1dCBhIGJldHRlciBhcHByb2FjaCBpcyB0byBmaXggdGhvc2UgdGhpbmdzIGluCitMaW51eCBrZXJuZWwgdWFwaSBzaWRlLCB3aGlsZSB3ZSBrZWVwIHRoZSBtaW5pbWFsIHdvcmthcm91bmQgaW4KK2Fsc2EtbGliIHN1Y2ggYXMgdGhlIF9fdTE2IGFuZCBjbyB0eXBlIGRlZmluaXRpb25zLgorCitUaGlzIHBhdGNoIGlzIHN1Y2ggYW4gYXR0ZW1wdCwgbmFtZWx5OgorLSBLZWVwIHRoZSBvcmlnaW5hbCAkTElOVVgvdWFwaS9zb3VuZC8qLmggaW4gaW5jbHVkZS9zb3VuZC91YXBpCisgIGRpcmVjdG9yeQorLSBUaGUgImZpeGVzIiBhcmUgYXBwbGllZCB0byBzb21lIHVhcGkgaGVhZGVycywgc28gdGhhdCB0aGV5IGRvbid0CisgIGNvbnRhaW4gTGludXgtc3BlY2lmaWMgcHJlZml4IGFuZCB1c2Ugb2Ygb3BhcXVlIHN0cnVjdCBsaWtlCisgIHNuZF9jdGxfZWxlbV9pZAorLSBUaGUgdWFwaSBoZWFkZXJzIGFyZSBpbmNsdWRlZCBpbmRpcmVjdGx5IGZyb20gaW5jbHVkZS9zb3VuZC8qLmgKKy0gU29tZSBoZWFkZXJzIGhhdmUgaW5jbHVzaW9uIG9mIHR5cGVfY29tcGF0LmggZm9yIHRoZSBMaW51eCB2YXJpYWJsZQorICB0eXBlcyBhbmQgcHJlZml4ZXMKKy0gdHlwZV9jb21wYXQuaCB0cmllcyB0byB1c2UgPGxpbnV4L3R5cGVzLmg+IHdoZW4gX19saW51eF9fIGlzCisgIGRlZmluZWQsIGluc3RlYWQgb2YgdGhlIG93biBjb25mbGljdGluZyBkZWZpbml0aW9ucworCitUaGUgbGFzdCB0eXBlIG1pZ2h0IG5lZWQgYSBiaXQgbW9yZSBhZGp1c3RtZW50IGRlcGVuZGluZyBvbiB0aGUKK2NvbXBpbGVyLCBidXQgaXQgY2FuIGJlIGZpeGVkIGxvY2FsbHkgd2l0aG91dCBkaXN0dXJiaW5nIGVsc2UuCisKK1NpZ25lZC1vZmYtYnk6IFRha2FzaGkgSXdhaSA8dGl3YWlAc3VzZS5kZT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+CisKKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KKyBpbmNsdWRlL3NvdW5kL01ha2VmaWxlLmFtICAgICAgICAgfCAgICA2ICstCisgaW5jbHVkZS9zb3VuZC9hc2VxdWVuY2VyLmggICAgICAgIHwgIDYxMyArLS0tLS0tLS0tLS0tLS0tLQorIGluY2x1ZGUvc291bmQvYXNvYy5oICAgICAgICAgICAgICB8ICA2MzQgKy0tLS0tLS0tLS0tLS0tLS0tCisgaW5jbHVkZS9zb3VuZC9hc291bmQuaCAgICAgICAgICAgIHwgMTAzOSArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGluY2x1ZGUvc291bmQvYXNvdW5kX2ZtLmggICAgICAgICB8ICAxMzYgKy0tLQorIGluY2x1ZGUvc291bmQvZW11MTBrMS5oICAgICAgICAgICB8ICAzODMgKy0tLS0tLS0tLS0KKyBpbmNsdWRlL3NvdW5kL2hkc3AuaCAgICAgICAgICAgICAgfCAgMTEzICstLS0KKyBpbmNsdWRlL3NvdW5kL2hkc3BtLmggICAgICAgICAgICAgfCAgMjM0ICstLS0tLS0KKyBpbmNsdWRlL3NvdW5kL3NiMTZfY3NwLmggICAgICAgICAgfCAgMTI0ICstLS0KKyBpbmNsdWRlL3NvdW5kL3NzY2FwZV9pb2N0bC5oICAgICAgfCAgIDIyICstCisgaW5jbHVkZS9zb3VuZC90bHYuaCAgICAgICAgICAgICAgIHwgIDExOCArLS0tCisgaW5jbHVkZS9zb3VuZC90eXBlX2NvbXBhdC5oICAgICAgIHwgICAxMyArCisgaW5jbHVkZS9zb3VuZC91YXBpL01ha2VmaWxlLmFtICAgIHwgICAgNiArCisgaW5jbHVkZS9zb3VuZC91YXBpL2FzZXF1ZW5jZXIuaCAgIHwgIDYxMiArKysrKysrKysrKysrKysrKworIGluY2x1ZGUvc291bmQvdWFwaS9hc29jLmggICAgICAgICB8ICA2MzMgKysrKysrKysrKysrKysrKysrCisgaW5jbHVkZS9zb3VuZC91YXBpL2Fzb3VuZC5oICAgICAgIHwgMTAzOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgaW5jbHVkZS9zb3VuZC91YXBpL2Fzb3VuZF9mbS5oICAgIHwgIDEzNSArKysrCisgaW5jbHVkZS9zb3VuZC91YXBpL2VtdTEwazEuaCAgICAgIHwgIDM5NSArKysrKysrKysrKworIGluY2x1ZGUvc291bmQvdWFwaS9oZHNwLmggICAgICAgICB8ICAxMDkgKysrCisgaW5jbHVkZS9zb3VuZC91YXBpL2hkc3BtLmggICAgICAgIHwgIDIzMCArKysrKysrCisgaW5jbHVkZS9zb3VuZC91YXBpL3NiMTZfY3NwLmggICAgIHwgIDEyMyArKysrCisgaW5jbHVkZS9zb3VuZC91YXBpL3NzY2FwZV9pb2N0bC5oIHwgICAyMSArCisgaW5jbHVkZS9zb3VuZC91YXBpL3Rsdi5oICAgICAgICAgIHwgIDExNyArKysrCisgc3JjL3RvcG9sb2d5L3RwbGdfbG9jYWwuaCAgICAgICAgIHwgICAgMyArLQorIDI1IGZpbGVzIGNoYW5nZWQsIDM0NTIgaW5zZXJ0aW9ucygrKSwgMzQwOCBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zb3VuZC91YXBpL01ha2VmaWxlLmFtCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc291bmQvdWFwaS9hc2VxdWVuY2VyLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zb3VuZC91YXBpL2Fzb2MuaAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3NvdW5kL3VhcGkvYXNvdW5kLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zb3VuZC91YXBpL2Fzb3VuZF9mbS5oCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc291bmQvdWFwaS9lbXUxMGsxLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zb3VuZC91YXBpL2hkc3AuaAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3NvdW5kL3VhcGkvaGRzcG0uaAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3NvdW5kL3VhcGkvc2IxNl9jc3AuaAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3NvdW5kL3VhcGkvc3NjYXBlX2lvY3RsLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zb3VuZC91YXBpL3Rsdi5oCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDExOWVmNjAwLi44ODZmODdiYyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNzA3LDcgKzcwNyw4IEBAIGlmIHRlc3QgISAtTCAiJHNyY2RpciIvaW5jbHVkZS9hbHNhIDsgdGhlbgorIGZpCisgCisgQUNfT1VUUFVUKE1ha2VmaWxlIGRvYy9NYWtlZmlsZSBkb2MvcGljdHVyZXMvTWFrZWZpbGUgZG9jL2RveHlnZW4uY2ZnIFwKKy0JICBpbmNsdWRlL01ha2VmaWxlIGluY2x1ZGUvc291bmQvTWFrZWZpbGUgc3JjL1ZlcnNpb25zIHNyYy9NYWtlZmlsZSBcCisrCSAgaW5jbHVkZS9NYWtlZmlsZSBpbmNsdWRlL3NvdW5kL01ha2VmaWxlIGluY2x1ZGUvc291bmQvdWFwaS9NYWtlZmlsZSBcCisrCSAgc3JjL1ZlcnNpb25zIHNyYy9NYWtlZmlsZSBcCisgICAgICAgICAgIHNyYy9jb250cm9sL01ha2VmaWxlIHNyYy9taXhlci9NYWtlZmlsZSBcCisgCSAgc3JjL3BjbS9NYWtlZmlsZSBzcmMvcGNtL3Njb3Blcy9NYWtlZmlsZSBcCisgCSAgc3JjL3Jhd21pZGkvTWFrZWZpbGUgc3JjL3RpbWVyL01ha2VmaWxlIFwKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL01ha2VmaWxlLmFtIGIvaW5jbHVkZS9zb3VuZC9NYWtlZmlsZS5hbQoraW5kZXggOTljNDIyMTEuLmNjYzdkMjczIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC9NYWtlZmlsZS5hbQorKysrIGIvaW5jbHVkZS9zb3VuZC9NYWtlZmlsZS5hbQorQEAgLTEsNyArMSw5IEBACisrU1VCRElSUyA9IHVhcGkKKysKKyBhbHNhc291bmRpbmNsdWRlZGlyID0gJHtpbmNsdWRlZGlyfS9hbHNhL3NvdW5kCisgCisgYWxzYXNvdW5kaW5jbHVkZV9IRUFERVJTID0gYXNvdW5kX2ZtLmggaGRzcC5oIGhkc3BtLmggc2IxNl9jc3AuaCBcCistCQkJICAgc3NjYXBlX2lvY3RsLmggZW11MTBrMS5oIHR5cGVfY29tcGF0LmggXAorLQkJCSAgIGFzb2MuaCB0bHYuaAorKwkJCSAgIHNzY2FwZV9pb2N0bC5oIGVtdTEwazEuaCAgYXNvYy5oIHRsdi5oIFwKKysJCQkgICB0eXBlX2NvbXBhdC5oCisgCisgbm9pbnN0X0hFQURFUlMgPSBhc291bmQuaCBhc2VxdWVuY2VyLmgKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL2FzZXF1ZW5jZXIuaCBiL2luY2x1ZGUvc291bmQvYXNlcXVlbmNlci5oCitpbmRleCBhNzVlMTRlZC4uZTUzOWE3N2UgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL2FzZXF1ZW5jZXIuaAorKysrIGIvaW5jbHVkZS9zb3VuZC9hc2VxdWVuY2VyLmgKK0BAIC0xLDYxMiArMSBAQAorLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKyBXSVRIIExpbnV4LXN5c2NhbGwtbm90ZSAqLworLS8qCistICogIE1haW4gaGVhZGVyIGZpbGUgZm9yIHRoZSBBTFNBIHNlcXVlbmNlcgorLSAqICBDb3B5cmlnaHQgKGMpIDE5OTgtMTk5OSBieSBGcmFuayB2YW4gZGUgUG9sIDxmdmRwb2xAY29pbC5kZW1vbi5ubD4KKy0gKiAgICAgICAgICAgIChjKSAxOTk4LTE5OTkgYnkgSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4KKy0gKgorLSAqCistICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAqICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gKiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCistICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLSAqCistICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICogICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLSAqCistICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAqICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0gKiAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3IFVTQQorLSAqCistICovCistI2lmbmRlZiBfVUFQSV9fU09VTkRfQVNFUVVFTkNFUl9ICistI2RlZmluZSBfVUFQSV9fU09VTkRfQVNFUVVFTkNFUl9ICistCistI2luY2x1ZGUgPHNvdW5kL2Fzb3VuZC5oPgorLQorLS8qKiB2ZXJzaW9uIG9mIHRoZSBzZXF1ZW5jZXIgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9WRVJTSU9OIFNORFJWX1BST1RPQ09MX1ZFUlNJT04oMSwgMCwgMikKKy0KKy0vKioKKy0gKiBkZWZpbml0aW9uIG9mIHNlcXVlbmNlciBldmVudCB0eXBlcworLSAqLworLQorLS8qKiBzeXN0ZW0gbWVzc2FnZXMKKy0gKiBldmVudCBkYXRhIHR5cGUgPSAjc25kX3NlcV9yZXN1bHQKKy0gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9TWVNURU0JCTAKKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9SRVNVTFQJCTEKKy0KKy0vKiogbm90ZSBtZXNzYWdlcyAoY2hhbm5lbCBzcGVjaWZpYykKKy0gKiBldmVudCBkYXRhIHR5cGUgPSAjc25kX3NlcV9ldl9ub3RlCistICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTk9URQkJNQorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX05PVEVPTgkJNgorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX05PVEVPRkYJCTcKKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9LRVlQUkVTUwk4CistCQorLS8qKiBjb250cm9sIG1lc3NhZ2VzIChjaGFubmVsIHNwZWNpZmljKQorLSAqIGV2ZW50IGRhdGEgdHlwZSA9ICNzbmRfc2VxX2V2X2N0cmwKKy0gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9DT05UUk9MTEVSCTEwCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUEdNQ0hBTkdFCTExCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ0hBTlBSRVNTCTEyCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUElUQ0hCRU5ECTEzCS8qKjwgZnJvbSAtODE5MiB0byA4MTkxICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ09OVFJPTDE0CTE0CS8qKjwgMTQgYml0IGNvbnRyb2xsZXIgdmFsdWUgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9OT05SRUdQQVJBTQkxNQkvKio8IDE0IGJpdCBOUlBOIGFkZHJlc3MgKyAxNCBiaXQgdW5zaWduZWQgdmFsdWUgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9SRUdQQVJBTQkxNgkvKio8IDE0IGJpdCBSUE4gYWRkcmVzcyArIDE0IGJpdCB1bnNpZ25lZCB2YWx1ZSAqLworLQorLS8qKiBzeW5jaHJvbmlzYXRpb24gbWVzc2FnZXMKKy0gKiBldmVudCBkYXRhIHR5cGUgPSAjc25kX3NlcV9ldl9jdHJsCistICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfU09OR1BPUwkJMjAJLyogU29uZyBQb3NpdGlvbiBQb2ludGVyIHdpdGggTFNCIGFuZCBNU0IgdmFsdWVzICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfU09OR1NFTAkJMjEJLyogU29uZyBTZWxlY3Qgd2l0aCBzb25nIElEIG51bWJlciAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1FGUkFNRQkJMjIJLyogbWlkaSB0aW1lIGNvZGUgcXVhcnRlciBmcmFtZSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1RJTUVTSUdOCTIzCS8qIFNNRiBUaW1lIFNpZ25hdHVyZSBldmVudCAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0tFWVNJR04JCTI0CS8qIFNNRiBLZXkgU2lnbmF0dXJlIGV2ZW50ICovCistCSAgICAgICAgCistLyoqIHRpbWVyIG1lc3NhZ2VzCistICogZXZlbnQgZGF0YSB0eXBlID0gc25kX3NlcV9ldl9xdWV1ZV9jb250cm9sCistICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfU1RBUlQJCTMwCS8qIG1pZGkgUmVhbCBUaW1lIFN0YXJ0IG1lc3NhZ2UgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9DT05USU5VRQkzMQkvKiBtaWRpIFJlYWwgVGltZSBDb250aW51ZSBtZXNzYWdlICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfU1RPUAkJMzIJLyogbWlkaSBSZWFsIFRpbWUgU3RvcCBtZXNzYWdlICovCQorLSNkZWZpbmUJU05EUlZfU0VRX0VWRU5UX1NFVFBPU19USUNLCTMzCS8qIHNldCB0aWNrIHF1ZXVlIHBvc2l0aW9uICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfU0VUUE9TX1RJTUUJMzQJLyogc2V0IHJlYWx0aW1lIHF1ZXVlIHBvc2l0aW9uICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVEVNUE8JCTM1CS8qIChTTUYpIFRlbXBvIGV2ZW50ICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ0xPQ0sJCTM2CS8qIG1pZGkgUmVhbCBUaW1lIENsb2NrIG1lc3NhZ2UgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9USUNLCQkzNwkvKiBtaWRpIFJlYWwgVGltZSBUaWNrIG1lc3NhZ2UgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9RVUVVRV9TS0VXCTM4CS8qIHNrZXcgcXVldWUgdGVtcG8gKi8KKy0KKy0vKiogb3RoZXJzCistICogZXZlbnQgZGF0YSB0eXBlID0gbm9uZQorLSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1RVTkVfUkVRVUVTVAk0MAkvKiB0dW5lIHJlcXVlc3QgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9SRVNFVAkJNDEJLyogcmVzZXQgdG8gcG93ZXItb24gc3RhdGUgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9TRU5TSU5HCQk0MgkvKiAiYWN0aXZlIHNlbnNpbmciIGV2ZW50ICovCistCistLyoqIGVjaG8gYmFjaywga2VybmVsIHByaXZhdGUgbWVzc2FnZXMKKy0gKiBldmVudCBkYXRhIHR5cGUgPSBhbnkgdHlwZQorLSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0VDSE8JCTUwCS8qIGVjaG8gZXZlbnQgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9PU1MJCTUxCS8qIE9TUyByYXcgZXZlbnQgKi8KKy0KKy0vKiogc3lzdGVtIHN0YXR1cyBtZXNzYWdlcyAoYnJvYWRjYXN0IGZvciBzdWJzY3JpYmVycykKKy0gKiBldmVudCBkYXRhIHR5cGUgPSBzbmRfc2VxX2FkZHIKKy0gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9DTElFTlRfU1RBUlQJNjAJLyogbmV3IGNsaWVudCBoYXMgY29ubmVjdGVkICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ0xJRU5UX0VYSVQJNjEJLyogY2xpZW50IGhhcyBsZWZ0IHRoZSBzeXN0ZW0gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9DTElFTlRfQ0hBTkdFCTYyCS8qIGNsaWVudCBzdGF0dXMvaW5mbyBoYXMgY2hhbmdlZCAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1BPUlRfU1RBUlQJNjMJLyogbmV3IHBvcnQgd2FzIGNyZWF0ZWQgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9QT1JUX0VYSVQJNjQJLyogcG9ydCB3YXMgZGVsZXRlZCBmcm9tIHN5c3RlbSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1BPUlRfQ0hBTkdFCTY1CS8qIHBvcnQgc3RhdHVzL2luZm8gaGFzIGNoYW5nZWQgKi8KKy0KKy0vKiogcG9ydCBjb25uZWN0aW9uIGNoYW5nZXMKKy0gKiBldmVudCBkYXRhIHR5cGUgPSBzbmRfc2VxX2Nvbm5lY3QKKy0gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9QT1JUX1NVQlNDUklCRUQJNjYJLyogcG9ydHMgY29ubmVjdGVkICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUE9SVF9VTlNVQlNDUklCRUQgNjcJLyogcG9ydHMgZGlzY29ubmVjdGVkICovCistCistLyogNzAtODk6ICBzeW50aGVzaXplciBldmVudHMgLSBvYnNvbGV0ZWQgKi8KKy0KKy0vKiogdXNlci1kZWZpbmVkIGV2ZW50cyB3aXRoIGZpeGVkIGxlbmd0aAorLSAqIGV2ZW50IGRhdGEgdHlwZSA9IGFueQorLSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjAJCTkwCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSMQkJOTEKKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1IyCQk5MgorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjMJCTkzCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSNAkJOTQKKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1I1CQk5NQorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjYJCTk2CistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSNwkJOTcKKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1I4CQk5OAorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjkJCTk5CistCistLyogMTAwLTExODogaW5zdHJ1bWVudCBsYXllciAtIG9ic29sZXRlZCAqLworLS8qIDExOS0xMjk6IHJlc2VydmVkICovCistCistLyogMTMwLTEzOTogdmFyaWFibGUgbGVuZ3RoIGV2ZW50cworLSAqIGV2ZW50IGRhdGEgdHlwZSA9IHNuZF9zZXFfZXZfZXh0CistICogKFNORFJWX1NFUV9FVkVOVF9MRU5HVEhfVkFSSUFCTEUgbXVzdCBiZSBzZXQpCistICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfU1lTRVgJCTEzMAkvKiBzeXN0ZW0gZXhjbHVzaXZlIGRhdGEgKHZhcmlhYmxlIGxlbmd0aCkgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9CT1VOQ0UJCTEzMQkvKiBlcnJvciBldmVudCAqLworLS8qIDEzMi0xMzQ6IHJlc2VydmVkICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSX1ZBUjAJMTM1CistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSX1ZBUjEJMTM2CistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSX1ZBUjIJMTM3CistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSX1ZBUjMJMTM4CistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSX1ZBUjQJMTM5CistCistLyogMTUwLTE1MToga2VybmVsIGV2ZW50cyB3aXRoIHF1b3RlIC0gRE8gTk9UIHVzZSBpbiB1c2VyIGNsaWVudHMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9LRVJORUxfRVJST1IJMTUwCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfS0VSTkVMX1FVT1RFCTE1MQkvKiBvYnNvbGV0ZSAqLworLQorLS8qIDE1Mi0xOTE6IHJlc2VydmVkICovCistCistLyogMTkyLTI1NDogaGFyZHdhcmUgc3BlY2lmaWMgZXZlbnRzICovCistCistLyogMjU1OiBzcGVjaWFsIGV2ZW50ICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTk9ORQkJMjU1CistCistCistdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHNuZF9zZXFfZXZlbnRfdHlwZV90OworLQorLS8qKiBldmVudCBhZGRyZXNzICovCistc3RydWN0IHNuZF9zZXFfYWRkciB7CistCXVuc2lnbmVkIGNoYXIgY2xpZW50OwkvKio8IENsaWVudCBudW1iZXI6ICAgICAgICAgMC4uMjU1LCAyNTUgPSBicm9hZGNhc3QgdG8gYWxsIGNsaWVudHMgKi8KKy0JdW5zaWduZWQgY2hhciBwb3J0OwkvKio8IFBvcnQgd2l0aGluIGNsaWVudDogICAgMC4uMjU1LCAyNTUgPSBicm9hZGNhc3QgdG8gYWxsIHBvcnRzICovCistfTsKKy0KKy0vKiogcG9ydCBjb25uZWN0aW9uICovCistc3RydWN0IHNuZF9zZXFfY29ubmVjdCB7CistCXN0cnVjdCBzbmRfc2VxX2FkZHIgc2VuZGVyOworLQlzdHJ1Y3Qgc25kX3NlcV9hZGRyIGRlc3Q7CistfTsKKy0KKy0KKy0jZGVmaW5lIFNORFJWX1NFUV9BRERSRVNTX1VOS05PV04JMjUzCS8qIHVua25vd24gc291cmNlICovCistI2RlZmluZSBTTkRSVl9TRVFfQUREUkVTU19TVUJTQ1JJQkVSUwkyNTQJLyogc2VuZCBldmVudCB0byBhbGwgc3Vic2NyaWJlZCBwb3J0cyAqLworLSNkZWZpbmUgU05EUlZfU0VRX0FERFJFU1NfQlJPQURDQVNUCTI1NQkvKiBzZW5kIGV2ZW50IHRvIGFsbCBxdWV1ZXMvY2xpZW50cy9wb3J0cy9jaGFubmVscyAqLworLSNkZWZpbmUgU05EUlZfU0VRX1FVRVVFX0RJUkVDVAkJMjUzCS8qIGRpcmVjdCBkaXNwYXRjaCAqLworLQorLQkvKiBldmVudCBtb2RlIGZsYWcgLSBOT1RFOiBvbmx5IDggYml0cyBhdmFpbGFibGUhICovCistI2RlZmluZSBTTkRSVl9TRVFfVElNRV9TVEFNUF9USUNLCSgwPDwwKSAvKiB0aW1lc3RhbXAgaW4gY2xvY2sgdGlja3MgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9USU1FX1NUQU1QX1JFQUwJKDE8PDApIC8qIHRpbWVzdGFtcCBpbiByZWFsIHRpbWUgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9USU1FX1NUQU1QX01BU0sJKDE8PDApCistCistI2RlZmluZSBTTkRSVl9TRVFfVElNRV9NT0RFX0FCUwkJKDA8PDEpCS8qIGFic29sdXRlIHRpbWVzdGFtcCAqLworLSNkZWZpbmUgU05EUlZfU0VRX1RJTUVfTU9ERV9SRUwJCSgxPDwxKQkvKiByZWxhdGl2ZSB0byBjdXJyZW50IHRpbWUgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9USU1FX01PREVfTUFTSwkoMTw8MSkKKy0KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9MRU5HVEhfRklYRUQJKDA8PDIpCS8qIGZpeGVkIGV2ZW50IHNpemUgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9MRU5HVEhfVkFSSUFCTEUJKDE8PDIpCS8qIHZhcmlhYmxlIGV2ZW50IHNpemUgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9MRU5HVEhfVkFSVVNSCSgyPDwyKQkvKiB2YXJpYWJsZSBldmVudCBzaXplIC0gdXNlciBtZW1vcnkgc3BhY2UgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9MRU5HVEhfTUFTSwkoMzw8MikKKy0KKy0jZGVmaW5lIFNORFJWX1NFUV9QUklPUklUWV9OT1JNQUwJKDA8PDQpCS8qIG5vcm1hbCBwcmlvcml0eSAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BSSU9SSVRZX0hJR0gJCSgxPDw0KQkvKiBldmVudCBzaG91bGQgYmUgcHJvY2Vzc2VkIGJlZm9yZSBvdGhlcnMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QUklPUklUWV9NQVNLCQkoMTw8NCkKKy0KKy0KKy0JLyogbm90ZSBldmVudCAqLworLXN0cnVjdCBzbmRfc2VxX2V2X25vdGUgeworLQl1bnNpZ25lZCBjaGFyIGNoYW5uZWw7CistCXVuc2lnbmVkIGNoYXIgbm90ZTsKKy0JdW5zaWduZWQgY2hhciB2ZWxvY2l0eTsKKy0JdW5zaWduZWQgY2hhciBvZmZfdmVsb2NpdHk7CS8qIG9ubHkgZm9yIFNORFJWX1NFUV9FVkVOVF9OT1RFICovCistCXVuc2lnbmVkIGludCBkdXJhdGlvbjsJCS8qIG9ubHkgZm9yIFNORFJWX1NFUV9FVkVOVF9OT1RFICovCistfTsKKy0KKy0JLyogY29udHJvbGxlciBldmVudCAqLworLXN0cnVjdCBzbmRfc2VxX2V2X2N0cmwgeworLQl1bnNpZ25lZCBjaGFyIGNoYW5uZWw7CistCXVuc2lnbmVkIGNoYXIgdW51c2VkMSwgdW51c2VkMiwgdW51c2VkMzsJLyogcGFkICovCistCXVuc2lnbmVkIGludCBwYXJhbTsKKy0Jc2lnbmVkIGludCB2YWx1ZTsKKy19OworLQorLQkvKiBnZW5lcmljIHNldCBvZiBieXRlcyAoMTJ4OCBiaXQpICovCistc3RydWN0IHNuZF9zZXFfZXZfcmF3OCB7CistCXVuc2lnbmVkIGNoYXIgZFsxMl07CS8qIDggYml0IHZhbHVlICovCistfTsKKy0KKy0JLyogZ2VuZXJpYyBzZXQgb2YgaW50ZWdlcnMgKDN4MzIgYml0KSAqLworLXN0cnVjdCBzbmRfc2VxX2V2X3JhdzMyIHsKKy0JdW5zaWduZWQgaW50IGRbM107CS8qIDMyIGJpdCB2YWx1ZSAqLworLX07CistCistCS8qIGV4dGVybmFsIHN0b3JlZCBkYXRhICovCistc3RydWN0IHNuZF9zZXFfZXZfZXh0IHsKKy0JdW5zaWduZWQgaW50IGxlbjsJLyogbGVuZ3RoIG9mIGRhdGEgKi8KKy0Jdm9pZCAqcHRyOwkJLyogcG9pbnRlciB0byBkYXRhIChub3RlOiBtYXliZSA2NC1iaXQpICovCistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy1zdHJ1Y3Qgc25kX3NlcV9yZXN1bHQgeworLQlpbnQgZXZlbnQ7CQkvKiBwcm9jZXNzZWQgZXZlbnQgdHlwZSAqLworLQlpbnQgcmVzdWx0OworLX07CistCistCistc3RydWN0IHNuZF9zZXFfcmVhbF90aW1lIHsKKy0JdW5zaWduZWQgaW50IHR2X3NlYzsJLyogc2Vjb25kcyAqLworLQl1bnNpZ25lZCBpbnQgdHZfbnNlYzsJLyogbmFub3NlY29uZHMgKi8KKy19OworLQorLXR5cGVkZWYgdW5zaWduZWQgaW50IHNuZF9zZXFfdGlja190aW1lX3Q7CS8qIG1pZGkgdGlja3MgKi8KKy0KKy11bmlvbiBzbmRfc2VxX3RpbWVzdGFtcCB7CistCXNuZF9zZXFfdGlja190aW1lX3QgdGljazsKKy0Jc3RydWN0IHNuZF9zZXFfcmVhbF90aW1lIHRpbWU7CistfTsKKy0KKy1zdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9za2V3IHsKKy0JdW5zaWduZWQgaW50IHZhbHVlOworLQl1bnNpZ25lZCBpbnQgYmFzZTsKKy19OworLQorLQkvKiBxdWV1ZSB0aW1lciBjb250cm9sICovCistc3RydWN0IHNuZF9zZXFfZXZfcXVldWVfY29udHJvbCB7CistCXVuc2lnbmVkIGNoYXIgcXVldWU7CQkJLyogYWZmZWN0ZWQgcXVldWUgKi8KKy0JdW5zaWduZWQgY2hhciBwYWRbM107CQkJLyogcmVzZXJ2ZWQgKi8KKy0JdW5pb24geworLQkJc2lnbmVkIGludCB2YWx1ZTsJCS8qIGFmZmVjdGVkIHZhbHVlIChlLmcuIHRlbXBvKSAqLworLQkJdW5pb24gc25kX3NlcV90aW1lc3RhbXAgdGltZTsJLyogdGltZSAqLworLQkJdW5zaWduZWQgaW50IHBvc2l0aW9uOwkJLyogc3luYyBwb3NpdGlvbiAqLworLQkJc3RydWN0IHNuZF9zZXFfcXVldWVfc2tldyBza2V3OworLQkJdW5zaWduZWQgaW50IGQzMlsyXTsKKy0JCXVuc2lnbmVkIGNoYXIgZDhbOF07CistCX0gcGFyYW07CistfTsKKy0KKy0JLyogcXVvdGVkIGV2ZW50IC0gaW5zaWRlIHRoZSBrZXJuZWwgb25seSAqLworLXN0cnVjdCBzbmRfc2VxX2V2X3F1b3RlIHsKKy0Jc3RydWN0IHNuZF9zZXFfYWRkciBvcmlnaW47CQkvKiBvcmlnaW5hbCBzZW5kZXIgKi8KKy0JdW5zaWduZWQgc2hvcnQgdmFsdWU7CQkvKiBvcHRpb25hbCBkYXRhICovCistCXN0cnVjdCBzbmRfc2VxX2V2ZW50ICpldmVudDsJCS8qIHF1b3RlZCBldmVudCAqLworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistCistCS8qIHNlcXVlbmNlciBldmVudCAqLworLXN0cnVjdCBzbmRfc2VxX2V2ZW50IHsKKy0Jc25kX3NlcV9ldmVudF90eXBlX3QgdHlwZTsJLyogZXZlbnQgdHlwZSAqLworLQl1bnNpZ25lZCBjaGFyIGZsYWdzOwkJLyogZXZlbnQgZmxhZ3MgKi8KKy0JY2hhciB0YWc7CistCQorLQl1bnNpZ25lZCBjaGFyIHF1ZXVlOwkJLyogc2NoZWR1bGUgcXVldWUgKi8KKy0JdW5pb24gc25kX3NlcV90aW1lc3RhbXAgdGltZTsJLyogc2NoZWR1bGUgdGltZSAqLworLQorLQorLQlzdHJ1Y3Qgc25kX3NlcV9hZGRyIHNvdXJjZTsJLyogc291cmNlIGFkZHJlc3MgKi8KKy0Jc3RydWN0IHNuZF9zZXFfYWRkciBkZXN0OwkvKiBkZXN0aW5hdGlvbiBhZGRyZXNzICovCistCistCXVuaW9uIHsJCQkJLyogZXZlbnQgZGF0YS4uLiAqLworLQkJc3RydWN0IHNuZF9zZXFfZXZfbm90ZSBub3RlOworLQkJc3RydWN0IHNuZF9zZXFfZXZfY3RybCBjb250cm9sOworLQkJc3RydWN0IHNuZF9zZXFfZXZfcmF3OCByYXc4OworLQkJc3RydWN0IHNuZF9zZXFfZXZfcmF3MzIgcmF3MzI7CistCQlzdHJ1Y3Qgc25kX3NlcV9ldl9leHQgZXh0OworLQkJc3RydWN0IHNuZF9zZXFfZXZfcXVldWVfY29udHJvbCBxdWV1ZTsKKy0JCXVuaW9uIHNuZF9zZXFfdGltZXN0YW1wIHRpbWU7CistCQlzdHJ1Y3Qgc25kX3NlcV9hZGRyIGFkZHI7CistCQlzdHJ1Y3Qgc25kX3NlcV9jb25uZWN0IGNvbm5lY3Q7CistCQlzdHJ1Y3Qgc25kX3NlcV9yZXN1bHQgcmVzdWx0OworLQkJc3RydWN0IHNuZF9zZXFfZXZfcXVvdGUgcXVvdGU7CistCX0gZGF0YTsKKy19OworLQorLQorLS8qCistICogYm91bmNlIGV2ZW50IC0gc3RvcmVkIGFzIHZhcmlhYmxlIHNpemUgZGF0YQorLSAqLworLXN0cnVjdCBzbmRfc2VxX2V2ZW50X2JvdW5jZSB7CistCWludCBlcnI7CistCXN0cnVjdCBzbmRfc2VxX2V2ZW50IGV2ZW50OworLQkvKiBleHRlcm5hbCBkYXRhIGZvbGxvd3MgaGVyZS4gKi8KKy19OworLQorLQorLQkvKiBzeXN0ZW0gaW5mb3JtYXRpb24gKi8KKy1zdHJ1Y3Qgc25kX3NlcV9zeXN0ZW1faW5mbyB7CistCWludCBxdWV1ZXM7CQkJLyogbWF4aW11bSBxdWV1ZXMgY291bnQgKi8KKy0JaW50IGNsaWVudHM7CQkJLyogbWF4aW11bSBjbGllbnRzIGNvdW50ICovCistCWludCBwb3J0czsJCQkvKiBtYXhpbXVtIHBvcnRzIHBlciBjbGllbnQgKi8KKy0JaW50IGNoYW5uZWxzOwkJCS8qIG1heGltdW0gY2hhbm5lbHMgcGVyIHBvcnQgKi8KKy0JaW50IGN1cl9jbGllbnRzOwkJLyogY3VycmVudCBjbGllbnRzICovCistCWludCBjdXJfcXVldWVzOwkJCS8qIGN1cnJlbnQgcXVldWVzICovCistCWNoYXIgcmVzZXJ2ZWRbMjRdOworLX07CistCistCistCS8qIHN5c3RlbSBydW5uaW5nIGluZm9ybWF0aW9uICovCistc3RydWN0IHNuZF9zZXFfcnVubmluZ19pbmZvIHsKKy0JdW5zaWduZWQgY2hhciBjbGllbnQ7CQkvKiBjbGllbnQgaWQgKi8KKy0JdW5zaWduZWQgY2hhciBiaWdfZW5kaWFuOwkvKiAxID0gYmlnLWVuZGlhbiAqLworLQl1bnNpZ25lZCBjaGFyIGNwdV9tb2RlOwkJLyogNCA9IDMyYml0LCA4ID0gNjRiaXQgKi8KKy0JdW5zaWduZWQgY2hhciBwYWQ7CQkvKiByZXNlcnZlZCAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzEyXTsKKy19OworLQorLQorLQkvKiBrbm93biBjbGllbnQgbnVtYmVycyAqLworLSNkZWZpbmUgU05EUlZfU0VRX0NMSUVOVF9TWVNURU0JCTAKKy0JLyogaW50ZXJuYWwgY2xpZW50IG51bWJlcnMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9DTElFTlRfRFVNTVkJCTE0CS8qIG1pZGkgdGhyb3VnaCAqLworLSNkZWZpbmUgU05EUlZfU0VRX0NMSUVOVF9PU1MJCTE1CS8qIG9zcyBzZXF1ZW5jZXIgZW11bGF0b3IgKi8KKy0KKy0KKy0JLyogY2xpZW50IHR5cGVzICovCistdHlwZWRlZiBpbnQgX19iaXR3aXNlIHNuZF9zZXFfY2xpZW50X3R5cGVfdDsKKy0jZGVmaW5lCU5PX0NMSUVOVAkoKF9fZm9yY2Ugc25kX3NlcV9jbGllbnRfdHlwZV90KSAwKQorLSNkZWZpbmUJVVNFUl9DTElFTlQJKChfX2ZvcmNlIHNuZF9zZXFfY2xpZW50X3R5cGVfdCkgMSkKKy0jZGVmaW5lCUtFUk5FTF9DTElFTlQJKChfX2ZvcmNlIHNuZF9zZXFfY2xpZW50X3R5cGVfdCkgMikKKy0gICAgICAgICAgICAgICAgICAgICAgICAKKy0JLyogZXZlbnQgZmlsdGVyIGZsYWdzICovCistI2RlZmluZSBTTkRSVl9TRVFfRklMVEVSX0JST0FEQ0FTVAkoMTw8MCkJLyogYWNjZXB0IGJyb2FkY2FzdCBtZXNzYWdlcyAqLworLSNkZWZpbmUgU05EUlZfU0VRX0ZJTFRFUl9NVUxUSUNBU1QJKDE8PDEpCS8qIGFjY2VwdCBtdWx0aWNhc3QgbWVzc2FnZXMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9GSUxURVJfQk9VTkNFCQkoMTw8MikJLyogYWNjZXB0IGJvdW5jZSBldmVudCBpbiBlcnJvciAqLworLSNkZWZpbmUgU05EUlZfU0VRX0ZJTFRFUl9VU0VfRVZFTlQJKDE8PDMxKQkvKiB1c2UgZXZlbnQgZmlsdGVyICovCistCistc3RydWN0IHNuZF9zZXFfY2xpZW50X2luZm8geworLQlpbnQgY2xpZW50OwkJCS8qIGNsaWVudCBudW1iZXIgdG8gaW5xdWlyZSAqLworLQlzbmRfc2VxX2NsaWVudF90eXBlX3QgdHlwZTsJLyogY2xpZW50IHR5cGUgKi8KKy0JY2hhciBuYW1lWzY0XTsJCQkvKiBjbGllbnQgbmFtZSAqLworLQl1bnNpZ25lZCBpbnQgZmlsdGVyOwkJLyogZmlsdGVyIGZsYWdzICovCistCXVuc2lnbmVkIGNoYXIgbXVsdGljYXN0X2ZpbHRlcls4XTsgLyogbXVsdGljYXN0IGZpbHRlciBiaXRtYXAgKi8KKy0JdW5zaWduZWQgY2hhciBldmVudF9maWx0ZXJbMzJdOwkvKiBldmVudCBmaWx0ZXIgYml0bWFwICovCistCWludCBudW1fcG9ydHM7CQkJLyogUk86IG51bWJlciBvZiBwb3J0cyAqLworLQlpbnQgZXZlbnRfbG9zdDsJCQkvKiBudW1iZXIgb2YgbG9zdCBldmVudHMgKi8KKy0JaW50IGNhcmQ7CQkJLyogUk86IGNhcmQgbnVtYmVyW2tlcm5lbF0gKi8KKy0JaW50IHBpZDsJCQkvKiBSTzogcGlkW3VzZXJdICovCistCWNoYXIgcmVzZXJ2ZWRbNTZdOwkJLyogZm9yIGZ1dHVyZSB1c2UgKi8KKy19OworLQorLQorLS8qIGNsaWVudCBwb29sIHNpemUgKi8KKy1zdHJ1Y3Qgc25kX3NlcV9jbGllbnRfcG9vbCB7CistCWludCBjbGllbnQ7CQkJLyogY2xpZW50IG51bWJlciB0byBpbnF1aXJlICovCistCWludCBvdXRwdXRfcG9vbDsJCS8qIG91dGdvaW5nICh3cml0ZSkgcG9vbCBzaXplICovCistCWludCBpbnB1dF9wb29sOwkJCS8qIGluY29taW5nIChyZWFkKSBwb29sIHNpemUgKi8KKy0JaW50IG91dHB1dF9yb29tOwkJLyogbWluaW11bSBmcmVlIHBvb2wgc2l6ZSBmb3Igc2VsZWN0L2Jsb2NraW5nIG1vZGUgKi8KKy0JaW50IG91dHB1dF9mcmVlOwkJLyogdW51c2VkIHNpemUgKi8KKy0JaW50IGlucHV0X2ZyZWU7CQkJLyogdW51c2VkIHNpemUgKi8KKy0JY2hhciByZXNlcnZlZFs2NF07CistfTsKKy0KKy0KKy0vKiBSZW1vdmUgZXZlbnRzIGJ5IHNwZWNpZmllZCBjcml0ZXJpYSAqLworLQorLSNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9JTlBVVAkJKDE8PDApCS8qIEZsdXNoIGlucHV0IHF1ZXVlcyAqLworLSNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9PVVRQVVQJCSgxPDwxKQkvKiBGbHVzaCBvdXRwdXQgcXVldWVzICovCistI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX0RFU1QJCSgxPDwyKQkvKiBSZXN0cmljdCBieSBkZXN0aW5hdGlvbiBxOmNsaWVudDpwb3J0ICovCistI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX0RFU1RfQ0hBTk5FTAkoMTw8MykJLyogUmVzdHJpY3QgYnkgY2hhbm5lbCAqLworLSNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9USU1FX0JFRk9SRQkoMTw8NCkJLyogUmVzdHJpY3QgdG8gYmVmb3JlIHRpbWUgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfVElNRV9BRlRFUgkoMTw8NSkJLyogUmVzdHJpY3QgdG8gdGltZSBvciBhZnRlciAqLworLSNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9USU1FX1RJQ0sJKDE8PDYpCS8qIFRpbWUgaXMgaW4gdGlja3MgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfRVZFTlRfVFlQRQkoMTw8NykJLyogUmVzdHJpY3QgdG8gZXZlbnQgdHlwZSAqLworLSNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9JR05PUkVfT0ZGIAkoMTw8OCkJLyogRG8gbm90IGZsdXNoIG9mZiBldmVudHMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfVEFHX01BVENIIAkoMTw8OSkJLyogUmVzdHJpY3QgdG8gZXZlbnRzIHdpdGggZ2l2ZW4gdGFnICovCistCistc3RydWN0IHNuZF9zZXFfcmVtb3ZlX2V2ZW50cyB7CistCXVuc2lnbmVkIGludCAgcmVtb3ZlX21vZGU7CS8qIEZsYWdzIHRoYXQgZGV0ZXJtaW5lIHdoYXQgZ2V0cyByZW1vdmVkICovCistCistCXVuaW9uIHNuZF9zZXFfdGltZXN0YW1wIHRpbWU7CistCistCXVuc2lnbmVkIGNoYXIgcXVldWU7CS8qIFF1ZXVlIGZvciBSRU1PVkVfREVTVCAqLworLQlzdHJ1Y3Qgc25kX3NlcV9hZGRyIGRlc3Q7CS8qIEFkZHJlc3MgZm9yIFJFTU9WRV9ERVNUICovCistCXVuc2lnbmVkIGNoYXIgY2hhbm5lbDsJLyogQ2hhbm5lbCBmb3IgUkVNT1ZFX0RFU1QgKi8KKy0KKy0JaW50ICB0eXBlOwkvKiBGb3IgUkVNT1ZFX0VWRU5UX1RZUEUgKi8KKy0JY2hhciAgdGFnOwkvKiBUYWcgZm9yIFJFTU9WRV9UQUcgKi8KKy0KKy0JaW50ICByZXNlcnZlZFsxMF07CS8qIFRvIGFsbG93IGZvciBmdXR1cmUgYmluYXJ5IGNvbXBhdGliaWxpdHkgKi8KKy0KKy19OworLQorLQorLQkvKiBrbm93biBwb3J0IG51bWJlcnMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX1NZU1RFTV9USU1FUgkwCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9TWVNURU1fQU5OT1VOQ0UJMQorLQorLQkvKiBwb3J0IGNhcGFiaWxpdGllcyAoMzIgYml0cykgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX0NBUF9SRUFECQkoMTw8MCkJLyogcmVhZGFibGUgZnJvbSB0aGlzIHBvcnQgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX0NBUF9XUklURQkoMTw8MSkJLyogd3JpdGFibGUgdG8gdGhpcyBwb3J0ICovCistCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfU1lOQ19SRUFECSgxPDwyKQorLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfQ0FQX1NZTkNfV1JJVEUJKDE8PDMpCistCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfRFVQTEVYCSgxPDw0KQorLQorLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfQ0FQX1NVQlNfUkVBRAkoMTw8NSkJLyogYWxsb3cgcmVhZCBzdWJzY3JpcHRpb24gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX0NBUF9TVUJTX1dSSVRFCSgxPDw2KQkvKiBhbGxvdyB3cml0ZSBzdWJzY3JpcHRpb24gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX0NBUF9OT19FWFBPUlQJKDE8PDcpCS8qIHJvdXRpbmcgbm90IGFsbG93ZWQgKi8KKy0KKy0JLyogcG9ydCB0eXBlICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX1NQRUNJRklDCSgxPDwwKQkvKiBoYXJkd2FyZSBzcGVjaWZpYyAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX0dFTkVSSUMgKDE8PDEpCS8qIGdlbmVyaWMgTUlESSBkZXZpY2UgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9HTQkoMTw8MikJLyogR2VuZXJhbCBNSURJIGNvbXBhdGlibGUgZGV2aWNlICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR1MJKDE8PDMpCS8qIEdTIGNvbXBhdGlibGUgZGV2aWNlICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfWEcJKDE8PDQpCS8qIFhHIGNvbXBhdGlibGUgZGV2aWNlICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfTVQzMgkoMTw8NSkJLyogTVQtMzIgY29tcGF0aWJsZSBkZXZpY2UgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9HTTIJKDE8PDYpCS8qIEdlbmVyYWwgTUlESSAyIGNvbXBhdGlibGUgZGV2aWNlICovCistCistLyogb3RoZXIgc3RhbmRhcmRzLi4uKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfU1lOVEgJKDE8PDEwKQkvKiBTeW50aCBkZXZpY2UgKG5vIE1JREkgY29tcGF0aWJsZSAtIGRpcmVjdCB3YXZldGFibGUpICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX0RJUkVDVF9TQU1QTEUgKDE8PDExKQkvKiBTYW1wbGluZyBkZXZpY2UgKHN1cHBvcnQgc2FtcGxlIGRvd25sb2FkKSAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9TQU1QTEUJKDE8PDEyKQkvKiBTYW1wbGluZyBkZXZpY2UgKHNhbXBsZSBjYW4gYmUgZG93bmxvYWRlZCBhdCBhbnkgdGltZSkgKi8KKy0vKi4uLiovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX0hBUkRXQVJFCSgxPDwxNikJLyogZHJpdmVyIGZvciBhIGhhcmR3YXJlIGRldmljZSAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9TT0ZUV0FSRQkoMTw8MTcpCS8qIGltcGxlbWVudGVkIGluIHNvZnR3YXJlICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX1NZTlRIRVNJWkVSCSgxPDwxOCkJLyogZ2VuZXJhdGVzIHNvdW5kICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX1BPUlQJKDE8PDE5KQkvKiBjb25uZWN0cyB0byBvdGhlciBkZXZpY2UocykgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfQVBQTElDQVRJT04JKDE8PDIwKQkvKiBhcHBsaWNhdGlvbiAoc2VxdWVuY2VyL2VkaXRvcikgKi8KKy0KKy0vKiBtaXNjLiBjb25kaXRpb25pbmcgZmxhZ3MgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX0ZMR19HSVZFTl9QT1JUCSgxPDwwKQorLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfRkxHX1RJTUVTVEFNUAkoMTw8MSkKKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX0ZMR19USU1FX1JFQUwJKDE8PDIpCistCistc3RydWN0IHNuZF9zZXFfcG9ydF9pbmZvIHsKKy0Jc3RydWN0IHNuZF9zZXFfYWRkciBhZGRyOwkvKiBjbGllbnQvcG9ydCBudW1iZXJzICovCistCWNoYXIgbmFtZVs2NF07CQkJLyogcG9ydCBuYW1lICovCistCistCXVuc2lnbmVkIGludCBjYXBhYmlsaXR5OwkvKiBwb3J0IGNhcGFiaWxpdHkgYml0cyAqLworLQl1bnNpZ25lZCBpbnQgdHlwZTsJCS8qIHBvcnQgdHlwZSBiaXRzICovCistCWludCBtaWRpX2NoYW5uZWxzOwkJLyogY2hhbm5lbHMgcGVyIE1JREkgcG9ydCAqLworLQlpbnQgbWlkaV92b2ljZXM7CQkvKiB2b2ljZXMgcGVyIE1JREkgcG9ydCAqLworLQlpbnQgc3ludGhfdm9pY2VzOwkJLyogdm9pY2VzIHBlciBTWU5USCBwb3J0ICovCistCistCWludCByZWFkX3VzZTsJCQkvKiBSL086IHN1YnNjcmliZXJzIGZvciBvdXRwdXQgKGZyb20gdGhpcyBwb3J0KSAqLworLQlpbnQgd3JpdGVfdXNlOwkJCS8qIFIvTzogc3Vic2NyaWJlcnMgZm9yIGlucHV0ICh0byB0aGlzIHBvcnQpICovCistCistCXZvaWQgKmtlcm5lbDsJCQkvKiByZXNlcnZlZCBmb3Iga2VybmVsIHVzZSAobXVzdCBiZSBOVUxMKSAqLworLQl1bnNpZ25lZCBpbnQgZmxhZ3M7CQkvKiBtaXNjLiBjb25kaXRpb25pbmcgKi8KKy0JdW5zaWduZWQgY2hhciB0aW1lX3F1ZXVlOwkvKiBxdWV1ZSAjIGZvciB0aW1lc3RhbXBpbmcgKi8KKy0JY2hhciByZXNlcnZlZFs1OV07CQkvKiBmb3IgZnV0dXJlIHVzZSAqLworLX07CistCistCistLyogcXVldWUgZmxhZ3MgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9RVUVVRV9GTEdfU1lOQwkoMTw8MCkJLyogc3luYyBlbmFibGVkICovCistCistLyogcXVldWUgaW5mb3JtYXRpb24gKi8KKy1zdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9pbmZvIHsKKy0JaW50IHF1ZXVlOwkJLyogcXVldWUgaWQgKi8KKy0KKy0JLyoKKy0JICogIHNlY3VyaXR5IHNldHRpbmdzLCBvbmx5IG93bmVyIG9mIHRoaXMgcXVldWUgY2FuIHN0YXJ0L3N0b3AgdGltZXIKKy0JICogIGV0Yy4gaWYgdGhlIHF1ZXVlIGlzIGxvY2tlZCBmb3Igb3RoZXIgY2xpZW50cworLQkgKi8KKy0JaW50IG93bmVyOwkJLyogY2xpZW50IGlkIGZvciBvd25lciBvZiB0aGUgcXVldWUgKi8KKy0JdW5zaWduZWQgbG9ja2VkOjE7CS8qIHRpbWluZyBxdWV1ZSBsb2NrZWQgZm9yIG90aGVyIHF1ZXVlcyAqLworLQljaGFyIG5hbWVbNjRdOwkJLyogbmFtZSBvZiB0aGlzIHF1ZXVlICovCistCXVuc2lnbmVkIGludCBmbGFnczsJLyogZmxhZ3MgKi8KKy0JY2hhciByZXNlcnZlZFs2MF07CS8qIGZvciBmdXR1cmUgdXNlICovCistCistfTsKKy0KKy0vKiBxdWV1ZSBpbmZvL3N0YXR1cyAqLworLXN0cnVjdCBzbmRfc2VxX3F1ZXVlX3N0YXR1cyB7CistCWludCBxdWV1ZTsJCQkvKiBxdWV1ZSBpZCAqLworLQlpbnQgZXZlbnRzOwkJCS8qIHJlYWQtb25seSAtIHF1ZXVlIHNpemUgKi8KKy0Jc25kX3NlcV90aWNrX3RpbWVfdCB0aWNrOwkvKiBjdXJyZW50IHRpY2sgKi8KKy0Jc3RydWN0IHNuZF9zZXFfcmVhbF90aW1lIHRpbWU7CS8qIGN1cnJlbnQgdGltZSAqLworLQlpbnQgcnVubmluZzsJCQkvKiBydW5uaW5nIHN0YXRlIG9mIHF1ZXVlICovCistCWludCBmbGFnczsJCQkvKiB2YXJpb3VzIGZsYWdzICovCistCWNoYXIgcmVzZXJ2ZWRbNjRdOwkJLyogZm9yIHRoZSBmdXR1cmUgKi8KKy19OworLQorLQorLS8qIHF1ZXVlIHRlbXBvICovCistc3RydWN0IHNuZF9zZXFfcXVldWVfdGVtcG8geworLQlpbnQgcXVldWU7CQkJLyogc2VxdWVuY2VyIHF1ZXVlICovCistCXVuc2lnbmVkIGludCB0ZW1wbzsJCS8qIGN1cnJlbnQgdGVtcG8sIHVzL3RpY2sgKi8KKy0JaW50IHBwcTsJCQkvKiB0aW1lIHJlc29sdXRpb24sIHRpY2tzL3F1YXJ0ZXIgKi8KKy0JdW5zaWduZWQgaW50IHNrZXdfdmFsdWU7CS8qIHF1ZXVlIHNrZXcgKi8KKy0JdW5zaWduZWQgaW50IHNrZXdfYmFzZTsJCS8qIHF1ZXVlIHNrZXcgYmFzZSAqLworLQljaGFyIHJlc2VydmVkWzI0XTsJCS8qIGZvciB0aGUgZnV0dXJlICovCistfTsKKy0KKy0KKy0vKiBzZXF1ZW5jZXIgdGltZXIgc291cmNlcyAqLworLSNkZWZpbmUgU05EUlZfU0VRX1RJTUVSX0FMU0EJCTAJLyogQUxTQSB0aW1lciAqLworLSNkZWZpbmUgU05EUlZfU0VRX1RJTUVSX01JRElfQ0xPQ0sJMQkvKiBNaWRpIENsb2NrIChDTE9DSyBldmVudCkgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9USU1FUl9NSURJX1RJQ0sJMgkvKiBNaWRpIFRpbWVyIFRpY2sgKFRJQ0sgZXZlbnQpICovCistCistLyogcXVldWUgdGltZXIgaW5mbyAqLworLXN0cnVjdCBzbmRfc2VxX3F1ZXVlX3RpbWVyIHsKKy0JaW50IHF1ZXVlOwkJCS8qIHNlcXVlbmNlciBxdWV1ZSAqLworLQlpbnQgdHlwZTsJCQkvKiBzb3VyY2UgdGltZXIgdHlwZSAqLworLQl1bmlvbiB7CistCQlzdHJ1Y3QgeworLQkJCXN0cnVjdCBzbmRfdGltZXJfaWQgaWQ7CS8qIEFMU0EncyB0aW1lciBJRCAqLworLQkJCXVuc2lnbmVkIGludCByZXNvbHV0aW9uOwkvKiByZXNvbHV0aW9uIGluIEh6ICovCistCQl9IGFsc2E7CistCX0gdTsKKy0JY2hhciByZXNlcnZlZFs2NF07CQkvKiBmb3IgdGhlIGZ1dHVyZSB1c2UgKi8KKy19OworLQorLQorLXN0cnVjdCBzbmRfc2VxX3F1ZXVlX2NsaWVudCB7CistCWludCBxdWV1ZTsJCS8qIHNlcXVlbmNlciBxdWV1ZSAqLworLQlpbnQgY2xpZW50OwkJLyogc2VxdWVuY2VyIGNsaWVudCAqLworLQlpbnQgdXNlZDsJCS8qIHF1ZXVlIGlzIHVzZWQgd2l0aCB0aGlzIGNsaWVudAorLQkJCQkgICAobXVzdCBiZSBzZXQgZm9yIGFjY2VwdGluZyBldmVudHMpICovCistCS8qIHBlciBjbGllbnQgd2F0ZXJtYXJrcyAqLworLQljaGFyIHJlc2VydmVkWzY0XTsJLyogZm9yIGZ1dHVyZSB1c2UgKi8KKy19OworLQorLQorLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfU1VCU19FWENMVVNJVkUJKDE8PDApCS8qIGV4Y2x1c2l2ZSBjb25uZWN0aW9uICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9TVUJTX1RJTUVTVEFNUAkoMTw8MSkKKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX1NVQlNfVElNRV9SRUFMCSgxPDwyKQorLQorLXN0cnVjdCBzbmRfc2VxX3BvcnRfc3Vic2NyaWJlIHsKKy0Jc3RydWN0IHNuZF9zZXFfYWRkciBzZW5kZXI7CS8qIHNlbmRlciBhZGRyZXNzICovCistCXN0cnVjdCBzbmRfc2VxX2FkZHIgZGVzdDsJLyogZGVzdGluYXRpb24gYWRkcmVzcyAqLworLQl1bnNpZ25lZCBpbnQgdm9pY2VzOwkJLyogbnVtYmVyIG9mIHZvaWNlcyB0byBiZSBhbGxvY2F0ZWQgKDAgPSBkb24ndCBjYXJlKSAqLworLQl1bnNpZ25lZCBpbnQgZmxhZ3M7CQkvKiBtb2RlcyAqLworLQl1bnNpZ25lZCBjaGFyIHF1ZXVlOwkJLyogaW5wdXQgdGltZS1zdGFtcCBxdWV1ZSAob3B0aW9uYWwpICovCistCXVuc2lnbmVkIGNoYXIgcGFkWzNdOwkJLyogcmVzZXJ2ZWQgKi8KKy0JY2hhciByZXNlcnZlZFs2NF07CistfTsKKy0KKy0vKiB0eXBlIG9mIHF1ZXJ5IHN1YnNjcmlwdGlvbiAqLworLSNkZWZpbmUgU05EUlZfU0VRX1FVRVJZX1NVQlNfUkVBRAkwCistI2RlZmluZSBTTkRSVl9TRVFfUVVFUllfU1VCU19XUklURQkxCistCistc3RydWN0IHNuZF9zZXFfcXVlcnlfc3VicyB7CistCXN0cnVjdCBzbmRfc2VxX2FkZHIgcm9vdDsJLyogY2xpZW50L3BvcnQgaWQgdG8gYmUgc2VhcmNoZWQgKi8KKy0JaW50IHR5cGU7CQkvKiBSRUFEIG9yIFdSSVRFICovCistCWludCBpbmRleDsJCS8qIDAuLk4tMSAqLworLQlpbnQgbnVtX3N1YnM7CQkvKiBSL086IG51bWJlciBvZiBzdWJzY3JpcHRpb25zIG9uIHRoaXMgcG9ydCAqLworLQlzdHJ1Y3Qgc25kX3NlcV9hZGRyIGFkZHI7CS8qIFIvTzogcmVzdWx0ICovCistCXVuc2lnbmVkIGNoYXIgcXVldWU7CS8qIFIvTzogcmVzdWx0ICovCistCXVuc2lnbmVkIGludCBmbGFnczsJLyogUi9POiByZXN1bHQgKi8KKy0JY2hhciByZXNlcnZlZFs2NF07CS8qIGZvciBmdXR1cmUgdXNlICovCistfTsKKy0KKy0KKy0vKgorLSAqICBJT0NUTCBjb21tYW5kcworLSAqLworLQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1BWRVJTSU9OCV9JT1IgKCdTJywgMHgwMCwgaW50KQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0NMSUVOVF9JRAlfSU9SICgnUycsIDB4MDEsIGludCkKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TWVNURU1fSU5GTwlfSU9XUignUycsIDB4MDIsIHN0cnVjdCBzbmRfc2VxX3N5c3RlbV9pbmZvKQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1JVTk5JTkdfTU9ERQlfSU9XUignUycsIDB4MDMsIHN0cnVjdCBzbmRfc2VxX3J1bm5pbmdfaW5mbykKKy0KKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfQ0xJRU5UX0lORk8JX0lPV1IoJ1MnLCAweDEwLCBzdHJ1Y3Qgc25kX3NlcV9jbGllbnRfaW5mbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TRVRfQ0xJRU5UX0lORk8JX0lPVyAoJ1MnLCAweDExLCBzdHJ1Y3Qgc25kX3NlcV9jbGllbnRfaW5mbykKKy0KKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9DUkVBVEVfUE9SVAlfSU9XUignUycsIDB4MjAsIHN0cnVjdCBzbmRfc2VxX3BvcnRfaW5mbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9ERUxFVEVfUE9SVAlfSU9XICgnUycsIDB4MjEsIHN0cnVjdCBzbmRfc2VxX3BvcnRfaW5mbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfUE9SVF9JTkZPCV9JT1dSKCdTJywgMHgyMiwgc3RydWN0IHNuZF9zZXFfcG9ydF9pbmZvKQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NFVF9QT1JUX0lORk8JX0lPVyAoJ1MnLCAweDIzLCBzdHJ1Y3Qgc25kX3NlcV9wb3J0X2luZm8pCistCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU1VCU0NSSUJFX1BPUlQJX0lPVyAoJ1MnLCAweDMwLCBzdHJ1Y3Qgc25kX3NlcV9wb3J0X3N1YnNjcmliZSkKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9VTlNVQlNDUklCRV9QT1JUIF9JT1cgKCdTJywgMHgzMSwgc3RydWN0IHNuZF9zZXFfcG9ydF9zdWJzY3JpYmUpCistCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfQ1JFQVRFX1FVRVVFCV9JT1dSKCdTJywgMHgzMiwgc3RydWN0IHNuZF9zZXFfcXVldWVfaW5mbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9ERUxFVEVfUVVFVUUJX0lPVyAoJ1MnLCAweDMzLCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9pbmZvKQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9RVUVVRV9JTkZPCV9JT1dSKCdTJywgMHgzNCwgc3RydWN0IHNuZF9zZXFfcXVldWVfaW5mbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TRVRfUVVFVUVfSU5GTwlfSU9XUignUycsIDB4MzUsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX2luZm8pCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX05BTUVEX1FVRVVFCV9JT1dSKCdTJywgMHgzNiwgc3RydWN0IHNuZF9zZXFfcXVldWVfaW5mbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfUVVFVUVfU1RBVFVTIF9JT1dSKCdTJywgMHg0MCwgc3RydWN0IHNuZF9zZXFfcXVldWVfc3RhdHVzKQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9RVUVVRV9URU1QTwlfSU9XUignUycsIDB4NDEsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX3RlbXBvKQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NFVF9RVUVVRV9URU1QTwlfSU9XICgnUycsIDB4NDIsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX3RlbXBvKQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9RVUVVRV9USU1FUglfSU9XUignUycsIDB4NDUsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX3RpbWVyKQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NFVF9RVUVVRV9USU1FUglfSU9XICgnUycsIDB4NDYsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX3RpbWVyKQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9RVUVVRV9DTElFTlQJX0lPV1IoJ1MnLCAweDQ5LCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9jbGllbnQpCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU0VUX1FVRVVFX0NMSUVOVAlfSU9XICgnUycsIDB4NGEsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX2NsaWVudCkKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfQ0xJRU5UX1BPT0wJX0lPV1IoJ1MnLCAweDRiLCBzdHJ1Y3Qgc25kX3NlcV9jbGllbnRfcG9vbCkKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TRVRfQ0xJRU5UX1BPT0wJX0lPVyAoJ1MnLCAweDRjLCBzdHJ1Y3Qgc25kX3NlcV9jbGllbnRfcG9vbCkKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9SRU1PVkVfRVZFTlRTCV9JT1cgKCdTJywgMHg0ZSwgc3RydWN0IHNuZF9zZXFfcmVtb3ZlX2V2ZW50cykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9RVUVSWV9TVUJTCV9JT1dSKCdTJywgMHg0Ziwgc3RydWN0IHNuZF9zZXFfcXVlcnlfc3VicykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfU1VCU0NSSVBUSU9OCV9JT1dSKCdTJywgMHg1MCwgc3RydWN0IHNuZF9zZXFfcG9ydF9zdWJzY3JpYmUpCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfUVVFUllfTkVYVF9DTElFTlQJX0lPV1IoJ1MnLCAweDUxLCBzdHJ1Y3Qgc25kX3NlcV9jbGllbnRfaW5mbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9RVUVSWV9ORVhUX1BPUlQJX0lPV1IoJ1MnLCAweDUyLCBzdHJ1Y3Qgc25kX3NlcV9wb3J0X2luZm8pCistCistI2VuZGlmIC8qIF9VQVBJX19TT1VORF9BU0VRVUVOQ0VSX0ggKi8KKysjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL2FzZXF1ZW5jZXIuaD4KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL2Fzb2MuaCBiL2luY2x1ZGUvc291bmQvYXNvYy5oCitpbmRleCBhNzRjYTIzMi4uMTg1YmJhODEgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL2Fzb2MuaAorKysrIGIvaW5jbHVkZS9zb3VuZC9hc29jLmgKK0BAIC0xLDYzMyArMSBAQAorLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCistLyoKKy0gKiB1YXBpL3NvdW5kL2Fzb2MuaCAtLSBBTFNBIFNvQyBGaXJtd2FyZSBDb250cm9scyBhbmQgREFQTQorLSAqCistICogQ29weXJpZ2h0IChDKSAyMDEyIFRleGFzIEluc3RydW1lbnRzIEluYy4KKy0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24uCistICoKKy0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCistICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCistICoKKy0gKiBTaW1wbGUgZmlsZSBBUEkgdG8gbG9hZCBGVyB0aGF0IGluY2x1ZGVzIG1peGVycywgY29lZmZpY2llbnRzLCBEQVBNIGdyYXBocywKKy0gKiBhbGdvcml0aG1zLCBlcXVhbGlzZXJzLCBEQUlzLCB3aWRnZXRzIGV0Yy4KKy0qLworLQorLSNpZm5kZWYgX19MSU5VWF9VQVBJX1NORF9BU09DX0gKKy0jZGVmaW5lIF9fTElOVVhfVUFQSV9TTkRfQVNPQ19ICistCistI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CistI2luY2x1ZGUgPHNvdW5kL2Fzb3VuZC5oPgorLQorLS8qCistICogTWF4aW11bSBudW1iZXIgb2YgY2hhbm5lbHMgdG9wb2xvZ3kga2NvbnRyb2wgY2FuIHJlcHJlc2VudC4KKy0gKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19NQVhfQ0hBTgkJOAorLQorLS8qCistICogTWF4aW11bSBudW1iZXIgb2YgUENNIGZvcm1hdHMgY2FwYWJpbGl0eQorLSAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX01BWF9GT1JNQVRTCTE2CistCistLyoKKy0gKiBNYXhpbXVtIG51bWJlciBvZiBQQ00gc3RyZWFtIGNvbmZpZ3MKKy0gKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19TVFJFQU1fQ09ORklHX01BWCAgOAorLQorLS8qCistICogTWF4aW11bSBudW1iZXIgb2YgcGh5c2ljYWwgbGluaydzIGhhcmR3YXJlIGNvbmZpZ3MKKy0gKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19IV19DT05GSUdfTUFYCTgKKy0KKy0vKiBpbmRpdmlkdWFsIGtjb250cm9sIGluZm8gdHlwZXMgLSBjYW4gYmUgbWl4ZWQgd2l0aCBvdGhlciB0eXBlcyAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9WT0xTVwkJMQorLSNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9WT0xTV19TWAkyCistI2RlZmluZSBTTkRfU09DX1RQTEdfQ1RMX1ZPTFNXX1hSX1NYCTMKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19DVExfRU5VTQkJNAorLSNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9CWVRFUwkJNQorLSNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9FTlVNX1ZBTFVFCTYKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19DVExfUkFOR0UJCTcKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19DVExfU1RST0JFCQk4CistCistCistLyogaW5kaXZpZHVhbCB3aWRnZXQga2NvbnRyb2wgaW5mbyB0eXBlcyAtIGNhbiBiZSBtaXhlZCB3aXRoIG90aGVyIHR5cGVzICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9DVExfVk9MU1cJCTY0CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9DVExfRU5VTV9ET1VCTEUJNjUKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0NUTF9FTlVNX1ZJUlQJCTY2CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9DVExfRU5VTV9WQUxVRQk2NworLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQ1RMX1BJTgkJNjgKKy0KKy0vKiBEQVBNIHdpZGdldCB0eXBlcyAtIGFkZCBuZXcgaXRlbXMgdG8gdGhlIGVuZCAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fSU5QVVQJCTAKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX09VVFBVVAkxCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9NVVgJCTIKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX01JWEVSCQkzCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9QR0EJCTQKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX09VVF9EUlYJNQorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQURDCQk2CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9EQUMJCTcKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX1NXSVRDSAk4CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9QUkUJCTkKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX1BPU1QJCTEwCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9BSUZfSU4JMTEKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0FJRl9PVVQJMTIKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0RBSV9JTgkxMworLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fREFJX09VVAkxNAorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fREFJX0xJTksJMTUKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0JVRkZFUgkxNgorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fU0NIRURVTEVSCTE3CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9FRkZFQ1QJMTgKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX1NJR0dFTgkxOQorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fU1JDCQkyMAorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQVNSQwkJMjEKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0VOQ09ERVIJMjIKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0RFQ09ERVIJMjMKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0xBU1QJCVNORF9TT0NfVFBMR19EQVBNX0RFQ09ERVIKKy0KKy0vKiBIZWFkZXIgbWFnaWMgbnVtYmVyIGFuZCBzdHJpbmcgc2l6ZXMgKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19NQUdJQwkJMHg0MTUzNkY0MyAvKiBBU29DICovCistCistLyogc3RyaW5nIHNpemVzICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfTlVNX1RFWFRTCQkxNgorLQorLS8qIEFCSSB2ZXJzaW9uICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfQUJJX1ZFUlNJT04JMHg1CS8qIGN1cnJlbnQgdmVyc2lvbiAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX0FCSV9WRVJTSU9OX01JTgkweDQJLyogb2xkZXN0IHZlcnNpb24gc3VwcG9ydGVkICovCistCistLyogTWF4IHNpemUgb2YgVExWIGRhdGEgKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UTFZfU0laRQkJMzIKKy0KKy0vKgorLSAqIEZpbGUgYW5kIEJsb2NrIGhlYWRlciBkYXRhIHR5cGVzLgorLSAqIEFkZCBuZXcgZ2VuZXJpYyBhbmQgdmVuZG9yIHR5cGVzIHRvIGVuZCBvZiBsaXN0LgorLSAqIEdlbmVyaWMgdHlwZXMgYXJlIGhhbmRsZWQgYnkgdGhlIGNvcmUgd2hpbHN0IHZlbmRvcnMgdHlwZXMgYXJlIHBhc3NlZAorLSAqIHRvIHRoZSBjb21wb25lbnQgZHJpdmVycyBmb3IgaGFuZGxpbmcuCistICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9NSVhFUgkJMQorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfQllURVMJCTIKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0VOVU0JCTMKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0RBUE1fR1JBUEgJNAorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfREFQTV9XSURHRVQJNQorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfREFJX0xJTksJNgorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfUENNCQk3CistI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9NQU5JRkVTVAk4CistI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9DT0RFQ19MSU5LCTkKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0JBQ0tFTkRfTElOSwkxMAorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfUERBVEEJCTExCistI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9EQUkJCTEyCistI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9NQVgJCVNORF9TT0NfVFBMR19UWVBFX0RBSQorLQorLS8qIHZlbmRvciBibG9jayBJRHMgLSBwbGVhc2UgYWRkIG5ldyB2ZW5kb3IgdHlwZXMgdG8gZW5kICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9WRU5ET1JfRlcJMTAwMAorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfVkVORE9SX0NPTkZJRwkxMDAxCistI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9WRU5ET1JfQ09FRkYJMTAwMgorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVWRU5ET1JfQ09ERUMJMTAwMworLQorLSNkZWZpbmUgU05EX1NPQ19UUExHX1NUUkVBTV9QTEFZQkFDSwkwCistI2RlZmluZSBTTkRfU09DX1RQTEdfU1RSRUFNX0NBUFRVUkUJMQorLQorLS8qIHZlbmRvciB0dXBsZSB0eXBlcyAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX1RVUExFX1RZUEVfVVVJRAkwCistI2RlZmluZSBTTkRfU09DX1RQTEdfVFVQTEVfVFlQRV9TVFJJTkcJMQorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RVUExFX1RZUEVfQk9PTAkyCistI2RlZmluZSBTTkRfU09DX1RQTEdfVFVQTEVfVFlQRV9CWVRFCTMKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UVVBMRV9UWVBFX1dPUkQJNAorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RVUExFX1RZUEVfU0hPUlQJNQorLQorLS8qIERBSSBmbGFncyAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBSV9GTEdCSVRfU1lNTUVUUklDX1JBVEVTICAgICAgICAgKDEgPDwgMCkKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQUlfRkxHQklUX1NZTU1FVFJJQ19DSEFOTkVMUyAgICAgICgxIDw8IDEpCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFJX0ZMR0JJVF9TWU1NRVRSSUNfU0FNUExFQklUUyAgICAoMSA8PCAyKQorLQorLS8qIERBSSBjbG9jayBnYXRpbmcgKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQUlfQ0xLX0dBVEVfVU5ERUZJTkVECTAKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQUlfQ0xLX0dBVEVfR0FURUQJMQorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBSV9DTEtfR0FURV9DT05UCQkyCistCistLyogREFJIG1jbGtfZGlyZWN0aW9uICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfTUNMS19DTyAgICAgICAgICAgIDAgLyogZm9yIGNvZGVjLCBtY2xrIGlzIG91dHB1dCAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX01DTEtfQ0kgICAgICAgICAgICAxIC8qIGZvciBjb2RlYywgbWNsayBpcyBpbnB1dCAqLworLQorLS8qIERBSSBwaHlzaWNhbCBQQ00gZGF0YSBmb3JtYXRzLgorLSAqIEFkZCBuZXcgZm9ybWF0cyB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LgorLSAqLworLSNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX0kyUyAgICAgICAgICAxIC8qIEkyUyBtb2RlICovCistI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfUklHSFRfSiAgICAgIDIgLyogUmlnaHQgSnVzdGlmaWVkIG1vZGUgKi8KKy0jZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9MRUZUX0ogICAgICAgMyAvKiBMZWZ0IEp1c3RpZmllZCBtb2RlICovCistI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfRFNQX0EgICAgICAgIDQgLyogTCBkYXRhIE1TQiBhZnRlciBGUk0gTFJDICovCistI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfRFNQX0IgICAgICAgIDUgLyogTCBkYXRhIE1TQiBkdXJpbmcgRlJNIExSQyAqLworLSNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX0FDOTcgICAgICAgICA2IC8qIEFDOTcgKi8KKy0jZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9QRE0gICAgICAgICAgNyAvKiBQdWxzZSBkZW5zaXR5IG1vZHVsYXRpb24gKi8KKy0KKy0vKiBsZWZ0IGFuZCByaWdodCBqdXN0aWZpZWQgYWxzbyBrbm93biBhcyBNU0IgYW5kIExTQiByZXNwZWN0aXZlbHkgKi8KKy0jZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9NU0IgICAgICAgICAgU05EX1NPQ19EQUlfRk9STUFUX0xFRlRfSgorLSNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX0xTQiAgICAgICAgICBTTkRfU09DX0RBSV9GT1JNQVRfUklHSFRfSgorLQorLS8qIERBSSBsaW5rIGZsYWdzICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfTE5LX0ZMR0JJVF9TWU1NRVRSSUNfUkFURVMgICAgICAgICAoMSA8PCAwKQorLSNkZWZpbmUgU05EX1NPQ19UUExHX0xOS19GTEdCSVRfU1lNTUVUUklDX0NIQU5ORUxTICAgICAgKDEgPDwgMSkKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19MTktfRkxHQklUX1NZTU1FVFJJQ19TQU1QTEVCSVRTICAgICgxIDw8IDIpCistI2RlZmluZSBTTkRfU09DX1RQTEdfTE5LX0ZMR0JJVF9WT0lDRV9XQUtFVVAgICAgICAgICAgICAoMSA8PCAzKQorLQorLS8qIERBSSB0b3BvbG9neSBCQ0xLIHBhcmFtZXRlcgorLSAqIEZvciB0aGUgYmFja3dhcmRzIGNhcGFiaWxpdHksIGJ5IGRlZmF1bHQgY29kZWMgaXMgYmNsayBtYXN0ZXIKKy0gKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19CQ0xLX0NNICAgICAgICAgMCAvKiBjb2RlYyBpcyBiY2xrIG1hc3RlciAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX0JDTEtfQ1MgICAgICAgICAxIC8qIGNvZGVjIGlzIGJjbGsgc2xhdmUgKi8KKy0KKy0vKiBEQUkgdG9wb2xvZ3kgRlNZTkMgcGFyYW1ldGVyCistICogRm9yIHRoZSBiYWNrd2FyZHMgY2FwYWJpbGl0eSwgYnkgZGVmYXVsdCBjb2RlYyBpcyBmc3luYyBtYXN0ZXIKKy0gKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19GU1lOQ19DTSAgICAgICAgIDAgLyogY29kZWMgaXMgZnN5bmMgbWFzdGVyICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfRlNZTkNfQ1MgICAgICAgICAxIC8qIGNvZGVjIGlzIGZzeW5jIHNsYXZlICovCistCistLyoKKy0gKiBCbG9jayBIZWFkZXIuCistICogVGhpcyBoZWFkZXIgcHJlY2VkZXMgYWxsIG9iamVjdCBhbmQgb2JqZWN0IGFycmF5cyBiZWxvdy4KKy0gKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX2hkciB7CistCV9fbGUzMiBtYWdpYzsJCS8qIG1hZ2ljIG51bWJlciAqLworLQlfX2xlMzIgYWJpOwkJLyogQUJJIHZlcnNpb24gKi8KKy0JX19sZTMyIHZlcnNpb247CQkvKiBvcHRpb25hbCB2ZW5kb3Igc3BlY2lmaWMgdmVyc2lvbiBkZXRhaWxzICovCistCV9fbGUzMiB0eXBlOwkJLyogU05EX1NPQ19UUExHX1RZUEVfICovCistCV9fbGUzMiBzaXplOwkJLyogc2l6ZSBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQlfX2xlMzIgdmVuZG9yX3R5cGU7CS8qIG9wdGlvbmFsIHZlbmRvciBzcGVjaWZpYyB0eXBlIGluZm8gKi8KKy0JX19sZTMyIHBheWxvYWRfc2l6ZTsJLyogZGF0YSBieXRlcywgZXhjbHVkaW5nIHRoaXMgaGVhZGVyICovCistCV9fbGUzMiBpbmRleDsJCS8qIGlkZW50aWZpZXIgZm9yIGJsb2NrICovCistCV9fbGUzMiBjb3VudDsJCS8qIG51bWJlciBvZiBlbGVtZW50cyBpbiBibG9jayAqLworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyogdmVuZG9yIHR1cGxlIGZvciB1dWlkICovCistc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3JfdXVpZF9lbGVtIHsKKy0JX19sZTMyIHRva2VuOworLQljaGFyIHV1aWRbMTZdOworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyogdmVuZG9yIHR1cGxlIGZvciBhIGJvb2wvYnl0ZS9zaG9ydC93b3JkIHZhbHVlICovCistc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3JfdmFsdWVfZWxlbSB7CistCV9fbGUzMiB0b2tlbjsKKy0JX19sZTMyIHZhbHVlOworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyogdmVuZG9yIHR1cGxlIGZvciBzdHJpbmcgKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX3ZlbmRvcl9zdHJpbmdfZWxlbSB7CistCV9fbGUzMiB0b2tlbjsKKy0JY2hhciBzdHJpbmdbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3JfYXJyYXkgeworLQlfX2xlMzIgc2l6ZTsJLyogc2l6ZSBpbiBieXRlcyBvZiB0aGUgYXJyYXksIGluY2x1ZGluZyBhbGwgZWxlbWVudHMgKi8KKy0JX19sZTMyIHR5cGU7CS8qIFNORF9TT0NfVFBMR19UVVBMRV9UWVBFXyAqLworLQlfX2xlMzIgbnVtX2VsZW1zOwkvKiBudW1iZXIgb2YgZWxlbWVudHMgaW4gYXJyYXkgKi8KKy0JdW5pb24geworLQkJc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3JfdXVpZF9lbGVtIHV1aWRbMF07CistCQlzdHJ1Y3Qgc25kX3NvY190cGxnX3ZlbmRvcl92YWx1ZV9lbGVtIHZhbHVlWzBdOworLQkJc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3Jfc3RyaW5nX2VsZW0gc3RyaW5nWzBdOworLQl9OworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBQcml2YXRlIGRhdGEuCistICogQWxsIHRvcG9sb2d5IG9iamVjdHMgbWF5IGhhdmUgcHJpdmF0ZSBkYXRhIHRoYXQgY2FuIGJlIHVzZWQgYnkgdGhlIGRyaXZlciBvcgorLSAqIGZpcm13YXJlLiBDb3JlIHdpbGwgaWdub3JlIHRoaXMgZGF0YS4KKy0gKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgeworLQlfX2xlMzIgc2l6ZTsJLyogaW4gYnl0ZXMgb2YgcHJpdmF0ZSBkYXRhICovCistCXVuaW9uIHsKKy0JCWNoYXIgZGF0YVswXTsKKy0JCXN0cnVjdCBzbmRfc29jX3RwbGdfdmVuZG9yX2FycmF5IGFycmF5WzBdOworLQl9OworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBLY29udHJvbCBUTFYgZGF0YS4KKy0gKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX3Rsdl9kYnNjYWxlIHsKKy0JX19sZTMyIG1pbjsKKy0JX19sZTMyIHN0ZXA7CistCV9fbGUzMiBtdXRlOworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistc3RydWN0IHNuZF9zb2NfdHBsZ19jdGxfdGx2IHsKKy0JX19sZTMyIHNpemU7CS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCV9fbGUzMiB0eXBlOwkvKiBTTkRSVl9DVExfVExWVF8qLCB0eXBlIG9mIFRMViAqLworLQl1bmlvbiB7CistCQlfX2xlMzIgZGF0YVtTTkRfU09DX1RQTEdfVExWX1NJWkVdOworLQkJc3RydWN0IHNuZF9zb2NfdHBsZ190bHZfZGJzY2FsZSBzY2FsZTsKKy0JfTsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qCistICogS2NvbnRyb2wgY2hhbm5lbCBkYXRhCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19jaGFubmVsIHsKKy0JX19sZTMyIHNpemU7CS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCV9fbGUzMiByZWc7CistCV9fbGUzMiBzaGlmdDsKKy0JX19sZTMyIGlkOwkvKiBJRCBtYXBzIHRvIExlZnQsIFJpZ2h0LCBMRkUgZXRjICovCistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0vKgorLSAqIEdlbmVyaWNsIE9wZXJhdGlvbnMgSURzLCBmb3IgYmluZGluZyBLY29udHJvbCBvciBCeXRlcyBleHQgb3BzCistICogS2NvbnRyb2wgb3BzIG5lZWQgZ2V0L3B1dC9pbmZvLgorLSAqIEJ5dGVzIGV4dCBvcHMgbmVlZCBnZXQvcHV0LgorLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfaW9fb3BzIHsKKy0JX19sZTMyIGdldDsKKy0JX19sZTMyIHB1dDsKKy0JX19sZTMyIGluZm87CistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0vKgorLSAqIGtjb250cm9sIGhlYWRlcgorLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfY3RsX2hkciB7CistCV9fbGUzMiBzaXplOwkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQlfX2xlMzIgdHlwZTsKKy0JY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0JX19sZTMyIGFjY2VzczsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19pb19vcHMgb3BzOworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX2N0bF90bHYgdGx2OworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBTdHJlYW0gQ2FwYWJpbGl0aWVzCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW1fY2FwcyB7CistCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0JX19sZTY0IGZvcm1hdHM7CS8qIHN1cHBvcnRlZCBmb3JtYXRzIFNORFJWX1BDTV9GTVRCSVRfKiAqLworLQlfX2xlMzIgcmF0ZXM7CQkvKiBzdXBwb3J0ZWQgcmF0ZXMgU05EUlZfUENNX1JBVEVfKiAqLworLQlfX2xlMzIgcmF0ZV9taW47CS8qIG1pbiByYXRlICovCistCV9fbGUzMiByYXRlX21heDsJLyogbWF4IHJhdGUgKi8KKy0JX19sZTMyIGNoYW5uZWxzX21pbjsJLyogbWluIGNoYW5uZWxzICovCistCV9fbGUzMiBjaGFubmVsc19tYXg7CS8qIG1heCBjaGFubmVscyAqLworLQlfX2xlMzIgcGVyaW9kc19taW47CS8qIG1pbiBudW1iZXIgb2YgcGVyaW9kcyAqLworLQlfX2xlMzIgcGVyaW9kc19tYXg7CS8qIG1heCBudW1iZXIgb2YgcGVyaW9kcyAqLworLQlfX2xlMzIgcGVyaW9kX3NpemVfbWluOwkvKiBtaW4gcGVyaW9kIHNpemUgYnl0ZXMgKi8KKy0JX19sZTMyIHBlcmlvZF9zaXplX21heDsJLyogbWF4IHBlcmlvZCBzaXplIGJ5dGVzICovCistCV9fbGUzMiBidWZmZXJfc2l6ZV9taW47CS8qIG1pbiBidWZmZXIgc2l6ZSBieXRlcyAqLworLQlfX2xlMzIgYnVmZmVyX3NpemVfbWF4OwkvKiBtYXggYnVmZmVyIHNpemUgYnl0ZXMgKi8KKy0JX19sZTMyIHNpZ19iaXRzOyAgICAgICAgLyogbnVtYmVyIG9mIGJpdHMgb2YgY29udGVudCAqLworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBGRSBvciBCRSBTdHJlYW0gY29uZmlndXJhdGlvbiBzdXBwb3J0ZWQgYnkgU1cvRlcKKy0gKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbSB7CistCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsgLyogTmFtZSBvZiB0aGUgc3RyZWFtICovCistCV9fbGU2NCBmb3JtYXQ7CQkvKiBTTkRSVl9QQ01fRk1UQklUXyogKi8KKy0JX19sZTMyIHJhdGU7CQkvKiBTTkRSVl9QQ01fUkFURV8qICovCistCV9fbGUzMiBwZXJpb2RfYnl0ZXM7CS8qIHNpemUgb2YgcGVyaW9kIGluIGJ5dGVzICovCistCV9fbGUzMiBidWZmZXJfYnl0ZXM7CS8qIHNpemUgb2YgYnVmZmVyIGluIGJ5dGVzICovCistCV9fbGUzMiBjaGFubmVsczsJLyogY2hhbm5lbHMgKi8KKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLQorLS8qCistICogRGVzY3JpYmVzIGEgcGh5c2ljYWwgbGluaydzIHJ1bnRpbWUgc3VwcG9ydGVkIGhhcmR3YXJlIGNvbmZpZywKKy0gKiBpLmUuIGhhcmR3YXJlIGF1ZGlvIGZvcm1hdHMuCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19od19jb25maWcgeworLQlfX2xlMzIgc2l6ZTsgICAgICAgICAgICAvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQlfX2xlMzIgaWQ7CQkvKiB1bmlxdWUgSUQgLSAtIHVzZWQgdG8gbWF0Y2ggKi8KKy0JX19sZTMyIGZtdDsJCS8qIFNORF9TT0NfREFJX0ZPUk1BVF8gZm9ybWF0IHZhbHVlICovCistCV9fdTggY2xvY2tfZ2F0ZWQ7CS8qIFNORF9TT0NfVFBMR19EQUlfQ0xLX0dBVEVfIHZhbHVlICovCistCV9fdTggaW52ZXJ0X2JjbGs7CS8qIDEgZm9yIGludmVydGVkIEJDTEssIDAgZm9yIG5vcm1hbCAqLworLQlfX3U4IGludmVydF9mc3luYzsJLyogMSBmb3IgaW52ZXJ0ZWQgZnJhbWUgY2xvY2ssIDAgZm9yIG5vcm1hbCAqLworLQlfX3U4IGJjbGtfbWFzdGVyOwkvKiBTTkRfU09DX1RQTEdfQkNMS18gdmFsdWUgKi8KKy0JX191OCBmc3luY19tYXN0ZXI7CS8qIFNORF9TT0NfVFBMR19GU1lOQ18gdmFsdWUgKi8KKy0JX191OCBtY2xrX2RpcmVjdGlvbjsgICAgLyogU05EX1NPQ19UUExHX01DTEtfIHZhbHVlICovCistCV9fbGUxNiByZXNlcnZlZDsJLyogZm9yIDMyYml0IGFsaWdubWVudCAqLworLQlfX2xlMzIgbWNsa19yYXRlOwkvKiBNQ0xLIG9yIFNZU0NMSyBmcmVxZW5jeSBpbiBIeiAqLworLQlfX2xlMzIgYmNsa19yYXRlOwkvKiBCQ0xLIGZyZXFlbmN5IGluIEh6ICovCistCV9fbGUzMiBmc3luY19yYXRlOwkvKiBmcmFtZSBjbG9jayBpbiBIeiAqLworLQlfX2xlMzIgdGRtX3Nsb3RzOwkvKiBudW1iZXIgb2YgVERNIHNsb3RzIGluIHVzZSAqLworLQlfX2xlMzIgdGRtX3Nsb3Rfd2lkdGg7CS8qIHdpZHRoIGluIGJpdHMgZm9yIGVhY2ggc2xvdCAqLworLQlfX2xlMzIgdHhfc2xvdHM7CS8qIGJpdCBtYXNrIGZvciBhY3RpdmUgVHggc2xvdHMgKi8KKy0JX19sZTMyIHJ4X3Nsb3RzOwkvKiBiaXQgbWFzayBmb3IgYWN0aXZlIFJ4IHNsb3RzICovCistCV9fbGUzMiB0eF9jaGFubmVsczsJLyogbnVtYmVyIG9mIFR4IGNoYW5uZWxzICovCistCV9fbGUzMiB0eF9jaGFubWFwW1NORF9TT0NfVFBMR19NQVhfQ0hBTl07IC8qIGFycmF5IG9mIHNsb3QgbnVtYmVyICovCistCV9fbGUzMiByeF9jaGFubmVsczsJLyogbnVtYmVyIG9mIFJ4IGNoYW5uZWxzICovCistCV9fbGUzMiByeF9jaGFubWFwW1NORF9TT0NfVFBMR19NQVhfQ0hBTl07IC8qIGFycmF5IG9mIHNsb3QgbnVtYmVyICovCistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0vKgorLSAqIE1hbmlmZXN0LiBMaXN0IHRvdGFscyBmb3IgZWFjaCBwYXlsb2FkIHR5cGUuIE5vdCB1c2VkIGluIHBhcnNpbmcsIGJ1dCB3aWxsCistICogYmUgcGFzc2VkIHRvIHRoZSBjb21wb25lbnQgZHJpdmVyIGJlZm9yZSBhbnkgb3RoZXIgb2JqZWN0cyBpbiBvcmRlciBmb3IgYW55CistICogZ2xvYmFsIGNvbXBvbmVudCByZXNvdXJjZSBhbGxvY2F0aW9ucy4KKy0gKgorLSAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIG1hbmlmZXN0IDotCistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgfCAgMSB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX21hbmlmZXN0ICAgICAgfCAgMSB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19tYW5pZmVzdCB7CistCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JX19sZTMyIGNvbnRyb2xfZWxlbXM7CS8qIG51bWJlciBvZiBjb250cm9sIGVsZW1lbnRzICovCistCV9fbGUzMiB3aWRnZXRfZWxlbXM7CS8qIG51bWJlciBvZiB3aWRnZXQgZWxlbWVudHMgKi8KKy0JX19sZTMyIGdyYXBoX2VsZW1zOwkvKiBudW1iZXIgb2YgZ3JhcGggZWxlbWVudHMgKi8KKy0JX19sZTMyIHBjbV9lbGVtczsJLyogbnVtYmVyIG9mIFBDTSBlbGVtZW50cyAqLworLQlfX2xlMzIgZGFpX2xpbmtfZWxlbXM7CS8qIG51bWJlciBvZiBEQUkgbGluayBlbGVtZW50cyAqLworLQlfX2xlMzIgZGFpX2VsZW1zOwkvKiBudW1iZXIgb2YgcGh5c2ljYWwgREFJIGVsZW1lbnRzICovCistCV9fbGUzMiByZXNlcnZlZFsyMF07CS8qIHJlc2VydmVkIGZvciBuZXcgQUJJIGVsZW1lbnQgdHlwZXMgKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0vKgorLSAqIE1peGVyIGtjb250cm9sLgorLSAqCistICogRmlsZSBibG9jayByZXByZXNlbnRhdGlvbiBmb3IgbWl4ZXIga2NvbnRyb2wgOi0KKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxIHwKKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfbWl4ZXJfY29udHJvbCB8ICBOIHwKKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKy0gKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX21peGVyX2NvbnRyb2wgeworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX2N0bF9oZHIgaGRyOworLQlfX2xlMzIgc2l6ZTsJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JX19sZTMyIG1pbjsKKy0JX19sZTMyIG1heDsKKy0JX19sZTMyIHBsYXRmb3JtX21heDsKKy0JX19sZTMyIGludmVydDsKKy0JX19sZTMyIG51bV9jaGFubmVsczsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19jaGFubmVsIGNoYW5uZWxbU05EX1NPQ19UUExHX01BWF9DSEFOXTsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0vKgorLSAqIEVudW1lcmF0ZWQga2NvbnRyb2wKKy0gKgorLSAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIGVudW0ga2NvbnRyb2wgOi0KKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxIHwKKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfZW51bV9jb250cm9sICB8ICBOIHwKKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKy0gKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX2VudW1fY29udHJvbCB7CistCXN0cnVjdCBzbmRfc29jX3RwbGdfY3RsX2hkciBoZHI7CistCV9fbGUzMiBzaXplOwkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQlfX2xlMzIgbnVtX2NoYW5uZWxzOworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX2NoYW5uZWwgY2hhbm5lbFtTTkRfU09DX1RQTEdfTUFYX0NIQU5dOworLQlfX2xlMzIgaXRlbXM7CistCV9fbGUzMiBtYXNrOworLQlfX2xlMzIgY291bnQ7CistCWNoYXIgdGV4dHNbU05EX1NPQ19UUExHX05VTV9URVhUU11bU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworLQlfX2xlMzIgdmFsdWVzW1NORF9TT0NfVFBMR19OVU1fVEVYVFMgKiBTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTiAvIDRdOworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qCistICogQnl0ZXMga2NvbnRyb2wKKy0gKgorLSAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIGJ5dGVzIGtjb250cm9sIDotCistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgfCAgMSB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2J5dGVzX2NvbnRyb2wgfCAgTiB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19ieXRlc19jb250cm9sIHsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19jdGxfaGRyIGhkcjsKKy0JX19sZTMyIHNpemU7CS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCV9fbGUzMiBtYXg7CistCV9fbGUzMiBtYXNrOworLQlfX2xlMzIgYmFzZTsKKy0JX19sZTMyIG51bV9yZWdzOworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX2lvX29wcyBleHRfb3BzOworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qCistICogREFQTSBHcmFwaCBFbGVtZW50CistICoKKy0gKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBEQVBNIGdyYXBoIGVsZW1lbnRzIDotCistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICAgIHwgIDEgfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2RhcG1fZ3JhcGhfZWxlbSB8ICBOIHwKKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfZGFwbV9ncmFwaF9lbGVtIHsKKy0JY2hhciBzaW5rW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0JY2hhciBjb250cm9sW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0JY2hhciBzb3VyY2VbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBEQVBNIFdpZGdldC4KKy0gKgorLSAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIERBUE0gd2lkZ2V0IDotCistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgICB8ICAxICB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2RhcG1fd2lkZ2V0ICAgICB8ICBOICB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCistICogfCAgIHN0cnVjdCBzbmRfc29jX3RwbGdfZW51bV9jb250cm9sICB8IDB8MSB8CistICogfCAgIHN0cnVjdCBzbmRfc29jX3RwbGdfbWl4ZXJfY29udHJvbCB8IDB8TiB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCistICoKKy0gKiBPcHRpb25hbCBlbnVtIG9yIG1peGVyIGNvbnRyb2wgY2FuIGJlIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgZWFjaCB3aWRnZXQKKy0gKiBpbiB0aGUgYmxvY2suCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19kYXBtX3dpZGdldCB7CistCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JX19sZTMyIGlkOwkJLyogU05EX1NPQ19EQVBNX0NUTCAqLworLQljaGFyIG5hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworLQljaGFyIHNuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0KKy0JX19sZTMyIHJlZzsJCS8qIG5lZ2F0aXZlIHJlZyA9IG5vIGRpcmVjdCBkYXBtICovCistCV9fbGUzMiBzaGlmdDsJCS8qIGJpdHMgdG8gc2hpZnQgKi8KKy0JX19sZTMyIG1hc2s7CQkvKiBub24tc2hpZnRlZCBtYXNrICovCistCV9fbGUzMiBzdWJzZXE7CQkvKiBzb3J0IHdpdGhpbiB3aWRnZXQgdHlwZSAqLworLQlfX2xlMzIgaW52ZXJ0OwkJLyogaW52ZXJ0IHRoZSBwb3dlciBiaXQgKi8KKy0JX19sZTMyIGlnbm9yZV9zdXNwZW5kOwkvKiBrZXB0IGVuYWJsZWQgb3ZlciBzdXNwZW5kICovCistCV9fbGUxNiBldmVudF9mbGFnczsKKy0JX19sZTE2IGV2ZW50X3R5cGU7CistCV9fbGUzMiBudW1fa2NvbnRyb2xzOworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKy0JLyoKKy0JICoga2NvbnRyb2xzIHRoYXQgcmVsYXRlIHRvIHRoaXMgd2lkZ2V0CistCSAqIGZvbGxvdyBoZXJlIGFmdGVyIHdpZGdldCBwcml2YXRlIGRhdGEKKy0JICovCistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0KKy0vKgorLSAqIERlc2NyaWJlcyBTVy9GVyBzcGVjaWZpYyBmZWF0dXJlcyBvZiBQQ00gKEZFIERBSSAmIERBSSBsaW5rKS4KKy0gKgorLSAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIFBDTSA6LQorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxICB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworLSAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19wY20gICAgICAgICAgIHwgIE4gIHwKKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19wY20geworLQlfX2xlMzIgc2l6ZTsJCS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCWNoYXIgcGNtX25hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworLQljaGFyIGRhaV9uYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0JX19sZTMyIHBjbV9pZDsJCS8qIHVuaXF1ZSBJRCAtIHVzZWQgdG8gbWF0Y2ggd2l0aCBEQUkgbGluayAqLworLQlfX2xlMzIgZGFpX2lkOwkJLyogdW5pcXVlIElEIC0gdXNlZCB0byBtYXRjaCAqLworLQlfX2xlMzIgcGxheWJhY2s7CS8qIHN1cHBvcnRzIHBsYXliYWNrIG1vZGUgKi8KKy0JX19sZTMyIGNhcHR1cmU7CQkvKiBzdXBwb3J0cyBjYXB0dXJlIG1vZGUgKi8KKy0JX19sZTMyIGNvbXByZXNzOwkvKiAxID0gY29tcHJlc3NlZDsgMCA9IFBDTSAqLworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbSBzdHJlYW1bU05EX1NPQ19UUExHX1NUUkVBTV9DT05GSUdfTUFYXTsgLyogZm9yIERBSSBsaW5rICovCistCV9fbGUzMiBudW1fc3RyZWFtczsJLyogbnVtYmVyIG9mIHN0cmVhbXMgKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW1fY2FwcyBjYXBzWzJdOyAvKiBwbGF5YmFjayBhbmQgY2FwdHVyZSBmb3IgREFJICovCistCV9fbGUzMiBmbGFnX21hc2s7ICAgICAgIC8qIGJpdG1hc2sgb2YgZmxhZ3MgdG8gY29uZmlndXJlICovCistCV9fbGUzMiBmbGFnczsgICAgICAgICAgIC8qIFNORF9TT0NfVFBMR19MTktfRkxHQklUXyogZmxhZyB2YWx1ZSAqLworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLQorLS8qCistICogRGVzY3JpYmVzIHRoZSBwaHlzaWNhbCBsaW5rIHJ1bnRpbWUgc3VwcG9ydGVkIGNvbmZpZ3Mgb3IgcGFyYW1zCistICoKKy0gKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBwaHlzaWNhbCBsaW5rIGNvbmZpZyA6LQorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxICB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworLSAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19saW5rX2NvbmZpZyAgIHwgIE4gIHwKKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19saW5rX2NvbmZpZyB7CistCV9fbGUzMiBzaXplOyAgICAgICAgICAgIC8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCV9fbGUzMiBpZDsgICAgICAgICAgICAgIC8qIHVuaXF1ZSBJRCAtIHVzZWQgdG8gbWF0Y2ggKi8KKy0JY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsgLyogbmFtZSAtIHVzZWQgdG8gbWF0Y2ggKi8KKy0JY2hhciBzdHJlYW1fbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07IC8qIHN0cmVhbSBuYW1lIC0gdXNlZCB0byBtYXRjaCAqLworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbSBzdHJlYW1bU05EX1NPQ19UUExHX1NUUkVBTV9DT05GSUdfTUFYXTsgLyogc3VwcG9ydGVkIGNvbmZpZ3MgcGxheWJhY2sgYW5kIGNhcHRydXJlICovCistCV9fbGUzMiBudW1fc3RyZWFtczsgICAgIC8qIG51bWJlciBvZiBzdHJlYW1zICovCistCXN0cnVjdCBzbmRfc29jX3RwbGdfaHdfY29uZmlnIGh3X2NvbmZpZ1tTTkRfU09DX1RQTEdfSFdfQ09ORklHX01BWF07IC8qIGh3IGNvbmZpZ3MgKi8KKy0JX19sZTMyIG51bV9od19jb25maWdzOyAgICAgICAgIC8qIG51bWJlciBvZiBodyBjb25maWdzICovCistCV9fbGUzMiBkZWZhdWx0X2h3X2NvbmZpZ19pZDsgICAvKiBkZWZhdWx0IGh3IGNvbmZpZyBJRCBmb3IgaW5pdCAqLworLQlfX2xlMzIgZmxhZ19tYXNrOyAgICAgICAvKiBiaXRtYXNrIG9mIGZsYWdzIHRvIGNvbmZpZ3VyZSAqLworLQlfX2xlMzIgZmxhZ3M7ICAgICAgICAgICAvKiBTTkRfU09DX1RQTEdfTE5LX0ZMR0JJVF8qIGZsYWcgdmFsdWUgKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0vKgorLSAqIERlc2NyaWJlcyBTVy9GVyBzcGVjaWZpYyBmZWF0dXJlcyBvZiBwaHlzaWNhbCBEQUkuCistICogSXQgY2FuIGJlIHVzZWQgdG8gY29uZmlndXJlIGJhY2tlbmQgREFJcyBmb3IgRFBDTS4KKy0gKgorLSAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIHBoeXNpY2FsIERBSSA6LQorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxICB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworLSAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19kYWkgICAgICAgICAgIHwgIE4gIHwKKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19kYWkgeworLQlfX2xlMzIgc2l6ZTsgICAgICAgICAgICAvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQljaGFyIGRhaV9uYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsgLyogbmFtZSAtIHVzZWQgdG8gbWF0Y2ggKi8KKy0JX19sZTMyIGRhaV9pZDsgICAgICAgICAgLyogdW5pcXVlIElEIC0gdXNlZCB0byBtYXRjaCAqLworLQlfX2xlMzIgcGxheWJhY2s7ICAgICAgICAvKiBzdXBwb3J0cyBwbGF5YmFjayBtb2RlICovCistCV9fbGUzMiBjYXB0dXJlOyAgICAgICAgIC8qIHN1cHBvcnRzIGNhcHR1cmUgbW9kZSAqLworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbV9jYXBzIGNhcHNbMl07IC8qIHBsYXliYWNrIGFuZCBjYXB0dXJlIGZvciBEQUkgKi8KKy0JX19sZTMyIGZsYWdfbWFzazsgICAgICAgLyogYml0bWFzayBvZiBmbGFncyB0byBjb25maWd1cmUgKi8KKy0JX19sZTMyIGZsYWdzOyAgICAgICAgICAgLyogU05EX1NPQ19UUExHX0RBSV9GTEdCSVRfKiAqLworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qCistICogT2xkIHZlcnNpb24gb2YgQUJJIHN0cnVjdHMsIHN1cHBvcnRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKy0gKi8KKy0KKy0vKiBNYW5pZmVzdCB2NCAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfbWFuaWZlc3RfdjQgeworLQlfX2xlMzIgc2l6ZTsJCS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCV9fbGUzMiBjb250cm9sX2VsZW1zOwkvKiBudW1iZXIgb2YgY29udHJvbCBlbGVtZW50cyAqLworLQlfX2xlMzIgd2lkZ2V0X2VsZW1zOwkvKiBudW1iZXIgb2Ygd2lkZ2V0IGVsZW1lbnRzICovCistCV9fbGUzMiBncmFwaF9lbGVtczsJLyogbnVtYmVyIG9mIGdyYXBoIGVsZW1lbnRzICovCistCV9fbGUzMiBwY21fZWxlbXM7CS8qIG51bWJlciBvZiBQQ00gZWxlbWVudHMgKi8KKy0JX19sZTMyIGRhaV9saW5rX2VsZW1zOwkvKiBudW1iZXIgb2YgREFJIGxpbmsgZWxlbWVudHMgKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CistfSBfX3BhY2tlZDsKKy0KKy0vKiBTdHJlYW0gQ2FwYWJpbGl0aWVzIHY0ICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW1fY2Fwc192NCB7CistCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0JX19sZTY0IGZvcm1hdHM7CS8qIHN1cHBvcnRlZCBmb3JtYXRzIFNORFJWX1BDTV9GTVRCSVRfKiAqLworLQlfX2xlMzIgcmF0ZXM7CQkvKiBzdXBwb3J0ZWQgcmF0ZXMgU05EUlZfUENNX1JBVEVfKiAqLworLQlfX2xlMzIgcmF0ZV9taW47CS8qIG1pbiByYXRlICovCistCV9fbGUzMiByYXRlX21heDsJLyogbWF4IHJhdGUgKi8KKy0JX19sZTMyIGNoYW5uZWxzX21pbjsJLyogbWluIGNoYW5uZWxzICovCistCV9fbGUzMiBjaGFubmVsc19tYXg7CS8qIG1heCBjaGFubmVscyAqLworLQlfX2xlMzIgcGVyaW9kc19taW47CS8qIG1pbiBudW1iZXIgb2YgcGVyaW9kcyAqLworLQlfX2xlMzIgcGVyaW9kc19tYXg7CS8qIG1heCBudW1iZXIgb2YgcGVyaW9kcyAqLworLQlfX2xlMzIgcGVyaW9kX3NpemVfbWluOwkvKiBtaW4gcGVyaW9kIHNpemUgYnl0ZXMgKi8KKy0JX19sZTMyIHBlcmlvZF9zaXplX21heDsJLyogbWF4IHBlcmlvZCBzaXplIGJ5dGVzICovCistCV9fbGUzMiBidWZmZXJfc2l6ZV9taW47CS8qIG1pbiBidWZmZXIgc2l6ZSBieXRlcyAqLworLQlfX2xlMzIgYnVmZmVyX3NpemVfbWF4OwkvKiBtYXggYnVmZmVyIHNpemUgYnl0ZXMgKi8KKy19IF9fcGFja2VkOworLQorLS8qIFBDTSB2NCAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfcGNtX3Y0IHsKKy0JX19sZTMyIHNpemU7CQkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQljaGFyIHBjbV9uYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0JY2hhciBkYWlfbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CistCV9fbGUzMiBwY21faWQ7CQkvKiB1bmlxdWUgSUQgLSB1c2VkIHRvIG1hdGNoIHdpdGggREFJIGxpbmsgKi8KKy0JX19sZTMyIGRhaV9pZDsJCS8qIHVuaXF1ZSBJRCAtIHVzZWQgdG8gbWF0Y2ggKi8KKy0JX19sZTMyIHBsYXliYWNrOwkvKiBzdXBwb3J0cyBwbGF5YmFjayBtb2RlICovCistCV9fbGUzMiBjYXB0dXJlOwkJLyogc3VwcG9ydHMgY2FwdHVyZSBtb2RlICovCistCV9fbGUzMiBjb21wcmVzczsJLyogMSA9IGNvbXByZXNzZWQ7IDAgPSBQQ00gKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW0gc3RyZWFtW1NORF9TT0NfVFBMR19TVFJFQU1fQ09ORklHX01BWF07IC8qIGZvciBEQUkgbGluayAqLworLQlfX2xlMzIgbnVtX3N0cmVhbXM7CS8qIG51bWJlciBvZiBzdHJlYW1zICovCistCXN0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtX2NhcHNfdjQgY2Fwc1syXTsgLyogcGxheWJhY2sgYW5kIGNhcHR1cmUgZm9yIERBSSAqLworLX0gX19wYWNrZWQ7CistCistLyogUGh5c2ljYWwgbGluayBjb25maWcgdjQgKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX2xpbmtfY29uZmlnX3Y0IHsKKy0JX19sZTMyIHNpemU7ICAgICAgICAgICAgLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JX19sZTMyIGlkOyAgICAgICAgICAgICAgLyogdW5pcXVlIElEIC0gdXNlZCB0byBtYXRjaCAqLworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbSBzdHJlYW1bU05EX1NPQ19UUExHX1NUUkVBTV9DT05GSUdfTUFYXTsgLyogc3VwcG9ydGVkIGNvbmZpZ3MgcGxheWJhY2sgYW5kIGNhcHRydXJlICovCistCV9fbGUzMiBudW1fc3RyZWFtczsgICAgIC8qIG51bWJlciBvZiBzdHJlYW1zICovCistfSBfX3BhY2tlZDsKKy0KKy0jZW5kaWYKKysjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL2Fzb2MuaD4KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL2Fzb3VuZC5oIGIvaW5jbHVkZS9zb3VuZC9hc291bmQuaAoraW5kZXggZGYxMTUzY2UuLjNiZTRkODUwIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC9hc291bmQuaAorKysrIGIvaW5jbHVkZS9zb3VuZC9hc291bmQuaAorQEAgLTEsMTAzOCArMSBAQAorLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKyBXSVRIIExpbnV4LXN5c2NhbGwtbm90ZSAqLworLS8qCistICogIEFkdmFuY2VkIExpbnV4IFNvdW5kIEFyY2hpdGVjdHVyZSAtIEFMU0EgLSBEcml2ZXIKKy0gKiAgQ29weXJpZ2h0IChjKSAxOTk0LTIwMDMgYnkgSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4sCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFicmFtbyBCYWduYXJhIDxhYnJhbW9AYWxzYS1wcm9qZWN0Lm9yZz4KKy0gKgorLSAqCistICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAqICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gKiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCistICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLSAqCistICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICogICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLSAqCistICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAqICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0gKiAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3IFVTQQorLSAqCistICovCistCistI2lmbmRlZiBfVUFQSV9fU09VTkRfQVNPVU5EX0gKKy0jZGVmaW5lIF9VQVBJX19TT1VORF9BU09VTkRfSAorLQorLSNpZiBkZWZpbmVkKF9fS0VSTkVMX18pIHx8IGRlZmluZWQoX19saW51eF9fKQorLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorLSNlbHNlCistI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorLSNlbmRpZgorLQorLSNpZm5kZWYgX19LRVJORUxfXworLSNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSA8dGltZS5oPgorLSNlbmRpZgorLQorLS8qCistICogIHByb3RvY29sIHZlcnNpb24KKy0gKi8KKy0KKy0jZGVmaW5lIFNORFJWX1BST1RPQ09MX1ZFUlNJT04obWFqb3IsIG1pbm9yLCBzdWJtaW5vcikgKCgobWFqb3IpPDwxNil8KChtaW5vcik8PDgpfChzdWJtaW5vcikpCistI2RlZmluZSBTTkRSVl9QUk9UT0NPTF9NQUpPUih2ZXJzaW9uKSAoKCh2ZXJzaW9uKT4+MTYpJjB4ZmZmZikKKy0jZGVmaW5lIFNORFJWX1BST1RPQ09MX01JTk9SKHZlcnNpb24pICgoKHZlcnNpb24pPj44KSYweGZmKQorLSNkZWZpbmUgU05EUlZfUFJPVE9DT0xfTUlDUk8odmVyc2lvbikgKCh2ZXJzaW9uKSYweGZmKQorLSNkZWZpbmUgU05EUlZfUFJPVE9DT0xfSU5DT01QQVRJQkxFKGt2ZXJzaW9uLCB1dmVyc2lvbikgXAorLQkoU05EUlZfUFJPVE9DT0xfTUFKT1Ioa3ZlcnNpb24pICE9IFNORFJWX1BST1RPQ09MX01BSk9SKHV2ZXJzaW9uKSB8fCBcCistCSAoU05EUlZfUFJPVE9DT0xfTUFKT1Ioa3ZlcnNpb24pID09IFNORFJWX1BST1RPQ09MX01BSk9SKHV2ZXJzaW9uKSAmJiBcCistCSAgIFNORFJWX1BST1RPQ09MX01JTk9SKGt2ZXJzaW9uKSAhPSBTTkRSVl9QUk9UT0NPTF9NSU5PUih1dmVyc2lvbikpKQorLQorLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAgRGlnaXRhbCBhdWRpbyBpbnRlcmZhY2UJCQkJCSAgICAqCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy1zdHJ1Y3Qgc25kX2Flc19pZWM5NTggeworLQl1bnNpZ25lZCBjaGFyIHN0YXR1c1syNF07CS8qIEFFUy9JRUM5NTggY2hhbm5lbCBzdGF0dXMgYml0cyAqLworLQl1bnNpZ25lZCBjaGFyIHN1YmNvZGVbMTQ3XTsJLyogQUVTL0lFQzk1OCBzdWJjb2RlIGJpdHMgKi8KKy0JdW5zaWduZWQgY2hhciBwYWQ7CQkvKiBub3RoaW5nICovCistCXVuc2lnbmVkIGNoYXIgZGlnX3N1YmZyYW1lWzRdOwkvKiBBRVMvSUVDOTU4IHN1YmZyYW1lIGJpdHMgKi8KKy19OworLQorLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAgQ0VBLTg2MSBBdWRpbyBJbmZvRnJhbWUuIFVzZWQgaW4gSERNSSBhbmQgRGlzcGxheVBvcnQJCSAgICAqCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy1zdHJ1Y3Qgc25kX2NlYV84NjFfYXVkX2lmIHsKKy0JdW5zaWduZWQgY2hhciBkYjFfY3RfY2M7IC8qIGNvZGluZyB0eXBlIGFuZCBjaGFubmVsIGNvdW50ICovCistCXVuc2lnbmVkIGNoYXIgZGIyX3NmX3NzOyAvKiBzYW1wbGUgZnJlcXVlbmN5IGFuZCBzaXplICovCistCXVuc2lnbmVkIGNoYXIgZGIzOyAvKiBub3QgdXNlZCwgYWxsIHplcm9zICovCistCXVuc2lnbmVkIGNoYXIgZGI0X2NhOyAvKiBjaGFubmVsIGFsbG9jYXRpb24gY29kZSAqLworLQl1bnNpZ25lZCBjaGFyIGRiNV9kbWluaF9sc3Y7IC8qIGRvd25taXggaW5oaWJpdCAmIGxldmVsLXNoaXQgdmFsdWVzICovCistfTsKKy0KKy0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICogICAgICBTZWN0aW9uIGZvciBkcml2ZXIgaGFyZHdhcmUgZGVwZW5kZW50IGludGVyZmFjZSAtIC9kZXYvc25kL2h3PyAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLQorLSNkZWZpbmUgU05EUlZfSFdERVBfVkVSU0lPTgkJU05EUlZfUFJPVE9DT0xfVkVSU0lPTigxLCAwLCAxKQorLQorLWVudW0geworLQlTTkRSVl9IV0RFUF9JRkFDRV9PUEwyID0gMCwKKy0JU05EUlZfSFdERVBfSUZBQ0VfT1BMMywKKy0JU05EUlZfSFdERVBfSUZBQ0VfT1BMNCwKKy0JU05EUlZfSFdERVBfSUZBQ0VfU0IxNkNTUCwJLyogQ3JlYXRpdmUgU2lnbmFsIFByb2Nlc3NvciAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9FTVUxMEsxLAkvKiBGWDgwMTAgcHJvY2Vzc29yIGluIEVNVTEwSzEgY2hpcCAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9ZU1MyMjUsCS8qIFlhbWFoYSBGWCBwcm9jZXNzb3IgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfSUNTMjExNSwJLyogV2F2ZXRhYmxlIHN5bnRoICovCistCVNORFJWX0hXREVQX0lGQUNFX1NTQ0FQRSwJLyogRW5zb25pcSBTb3VuZFNjYXBlIElTQSBjYXJkIChNQzY4RUMwMDApICovCistCVNORFJWX0hXREVQX0lGQUNFX1ZYLAkJLyogRGlnaWdyYW0gVlggY2FyZHMgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfTUlYQVJULAkvKiBEaWdpZ3JhbSBtaVhhcnQgY2FyZHMgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfVVNYMlksCS8qIFRhc2NhbSBVUzEyMiwgVVMyMjQgJiBVUzQyOCB1c2IgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfRU1VWF9XQVZFVEFCTEUsIC8qIEVtdVggd2F2ZXRhYmxlICovCistCVNORFJWX0hXREVQX0lGQUNFX0JMVUVUT09USCwJLyogQmx1ZXRvb3RoIGF1ZGlvICovCistCVNORFJWX0hXREVQX0lGQUNFX1VTWDJZX1BDTSwJLyogVGFzY2FtIFVTMTIyLCBVUzIyNCAmIFVTNDI4IHJhd3VzYiBwY20gKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfUENYSFIsCS8qIERpZ2lncmFtIFBDWEhSICovCistCVNORFJWX0hXREVQX0lGQUNFX1NCX1JDLAkvKiBTQiBFeHRpZ3kvQXVkaWd5Mk5YIHJlbW90ZSBjb250cm9sICovCistCVNORFJWX0hXREVQX0lGQUNFX0hEQSwJCS8qIEhELWF1ZGlvICovCistCVNORFJWX0hXREVQX0lGQUNFX1VTQl9TVFJFQU0sCS8qIGRpcmVjdCBhY2Nlc3MgdG8gdXNiIHN0cmVhbSAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9GV19ESUNFLAkvKiBUQyBESUNFIEZpcmVXaXJlIGRldmljZSAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9GV19GSVJFV09SS1MsCS8qIEVjaG8gQXVkaW8gRmlyZXdvcmtzIGJhc2VkIGRldmljZSAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9GV19CRUJPQiwJLyogQnJpZGdlQ28gQmVCb0IgYmFzZWQgZGV2aWNlICovCistCVNORFJWX0hXREVQX0lGQUNFX0ZXX09YRlcsCS8qIE94Zm9yZCBPWEZXOTcwLzk3MSBiYXNlZCBkZXZpY2UgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfRldfRElHSTAwWCwJLyogRGlnaWRlc2lnbiBEaWdpIDAwMi8wMDMgZmFtaWx5ICovCistCVNORFJWX0hXREVQX0lGQUNFX0ZXX1RBU0NBTSwJLyogVEFTQ0FNIEZpcmVXaXJlIHNlcmllcyAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9MSU5FNiwJLyogTGluZTYgVVNCIHByb2Nlc3NvcnMgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfRldfTU9UVSwJLyogTU9UVSBGaXJlV2lyZSBzZXJpZXMgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfRldfRklSRUZBQ0UsCS8qIFJNRSBGaXJlZmFjZSBzZXJpZXMgKi8KKy0KKy0JLyogRG9uJ3QgZm9yZ2V0IHRvIGNoYW5nZSB0aGUgZm9sbG93aW5nOiAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9MQVNUID0gU05EUlZfSFdERVBfSUZBQ0VfRldfRklSRUZBQ0UKKy19OworLQorLXN0cnVjdCBzbmRfaHdkZXBfaW5mbyB7CistCXVuc2lnbmVkIGludCBkZXZpY2U7CQkvKiBXUjogZGV2aWNlIG51bWJlciAqLworLQlpbnQgY2FyZDsJCQkvKiBSOiBjYXJkIG51bWJlciAqLworLQl1bnNpZ25lZCBjaGFyIGlkWzY0XTsJCS8qIElEICh1c2VyIHNlbGVjdGFibGUpICovCistCXVuc2lnbmVkIGNoYXIgbmFtZVs4MF07CQkvKiBod2RlcCBuYW1lICovCistCWludCBpZmFjZTsJCQkvKiBod2RlcCBpbnRlcmZhY2UgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgKi8KKy19OworLQorLS8qIGdlbmVyaWMgRFNQIGxvYWRlciAqLworLXN0cnVjdCBzbmRfaHdkZXBfZHNwX3N0YXR1cyB7CistCXVuc2lnbmVkIGludCB2ZXJzaW9uOwkJLyogUjogZHJpdmVyLXNwZWNpZmljIHZlcnNpb24gKi8KKy0JdW5zaWduZWQgY2hhciBpZFszMl07CQkvKiBSOiBkcml2ZXItc3BlY2lmaWMgSUQgc3RyaW5nICovCistCXVuc2lnbmVkIGludCBudW1fZHNwczsJCS8qIFI6IG51bWJlciBvZiBEU1AgaW1hZ2VzIHRvIHRyYW5zZmVyICovCistCXVuc2lnbmVkIGludCBkc3BfbG9hZGVkOwkvKiBSOiBiaXQgZmxhZ3MgaW5kaWNhdGluZyB0aGUgbG9hZGVkIERTUHMgKi8KKy0JdW5zaWduZWQgaW50IGNoaXBfcmVhZHk7CS8qIFI6IDEgPSBpbml0aWFsaXphdGlvbiBmaW5pc2hlZCAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzE2XTsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KKy19OworLQorLXN0cnVjdCBzbmRfaHdkZXBfZHNwX2ltYWdlIHsKKy0JdW5zaWduZWQgaW50IGluZGV4OwkJLyogVzogRFNQIGluZGV4ICovCistCXVuc2lnbmVkIGNoYXIgbmFtZVs2NF07CQkvKiBXOiBJRCAoZS5nLiBmaWxlIG5hbWUpICovCistCXVuc2lnbmVkIGNoYXIgX191c2VyICppbWFnZTsJLyogVzogYmluYXJ5IGltYWdlICovCistCXNpemVfdCBsZW5ndGg7CQkJLyogVzogc2l6ZSBvZiBpbWFnZSBpbiBieXRlcyAqLworLQl1bnNpZ25lZCBsb25nIGRyaXZlcl9kYXRhOwkvKiBXOiBkcml2ZXItc3BlY2lmaWMgZGF0YSAqLworLX07CistCistI2RlZmluZSBTTkRSVl9IV0RFUF9JT0NUTF9QVkVSU0lPTglfSU9SICgnSCcsIDB4MDAsIGludCkKKy0jZGVmaW5lIFNORFJWX0hXREVQX0lPQ1RMX0lORk8JCV9JT1IgKCdIJywgMHgwMSwgc3RydWN0IHNuZF9od2RlcF9pbmZvKQorLSNkZWZpbmUgU05EUlZfSFdERVBfSU9DVExfRFNQX1NUQVRVUwlfSU9SKCdIJywgMHgwMiwgc3RydWN0IHNuZF9od2RlcF9kc3Bfc3RhdHVzKQorLSNkZWZpbmUgU05EUlZfSFdERVBfSU9DVExfRFNQX0xPQUQJX0lPVygnSCcsIDB4MDMsIHN0cnVjdCBzbmRfaHdkZXBfZHNwX2ltYWdlKQorLQorLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgICAgICAgICAgIERpZ2l0YWwgQXVkaW8gKFBDTSkgaW50ZXJmYWNlIC0gL2Rldi9zbmQvcGNtPz8gICAgICAgICAgICAgICAgKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy0jZGVmaW5lIFNORFJWX1BDTV9WRVJTSU9OCQlTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDIsIDAsIDE0KQorLQorLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBzbmRfcGNtX3VmcmFtZXNfdDsKKy10eXBlZGVmIHNpZ25lZCBsb25nIHNuZF9wY21fc2ZyYW1lc190OworLQorLWVudW0geworLQlTTkRSVl9QQ01fQ0xBU1NfR0VORVJJQyA9IDAsCS8qIHN0YW5kYXJkIG1vbm8gb3Igc3RlcmVvIGRldmljZSAqLworLQlTTkRSVl9QQ01fQ0xBU1NfTVVMVEksCQkvKiBtdWx0aWNoYW5uZWwgZGV2aWNlICovCistCVNORFJWX1BDTV9DTEFTU19NT0RFTSwJCS8qIHNvZnR3YXJlIG1vZGVtIGNsYXNzICovCistCVNORFJWX1BDTV9DTEFTU19ESUdJVElaRVIsCS8qIGRpZ2l0aXplciBjbGFzcyAqLworLQkvKiBEb24ndCBmb3JnZXQgdG8gY2hhbmdlIHRoZSBmb2xsb3dpbmc6ICovCistCVNORFJWX1BDTV9DTEFTU19MQVNUID0gU05EUlZfUENNX0NMQVNTX0RJR0lUSVpFUiwKKy19OworLQorLWVudW0geworLQlTTkRSVl9QQ01fU1VCQ0xBU1NfR0VORVJJQ19NSVggPSAwLCAvKiBtb25vIG9yIHN0ZXJlbyBzdWJkZXZpY2VzIGFyZSBtaXhlZCB0b2dldGhlciAqLworLQlTTkRSVl9QQ01fU1VCQ0xBU1NfTVVMVElfTUlYLAkvKiBtdWx0aWNoYW5uZWwgc3ViZGV2aWNlcyBhcmUgbWl4ZWQgdG9nZXRoZXIgKi8KKy0JLyogRG9uJ3QgZm9yZ2V0IHRvIGNoYW5nZSB0aGUgZm9sbG93aW5nOiAqLworLQlTTkRSVl9QQ01fU1VCQ0xBU1NfTEFTVCA9IFNORFJWX1BDTV9TVUJDTEFTU19NVUxUSV9NSVgsCistfTsKKy0KKy1lbnVtIHsKKy0JU05EUlZfUENNX1NUUkVBTV9QTEFZQkFDSyA9IDAsCistCVNORFJWX1BDTV9TVFJFQU1fQ0FQVFVSRSwKKy0JU05EUlZfUENNX1NUUkVBTV9MQVNUID0gU05EUlZfUENNX1NUUkVBTV9DQVBUVVJFLAorLX07CistCistdHlwZWRlZiBpbnQgX19iaXR3aXNlIHNuZF9wY21fYWNjZXNzX3Q7CistI2RlZmluZQlTTkRSVl9QQ01fQUNDRVNTX01NQVBfSU5URVJMRUFWRUQJKChfX2ZvcmNlIHNuZF9wY21fYWNjZXNzX3QpIDApIC8qIGludGVybGVhdmVkIG1tYXAgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9BQ0NFU1NfTU1BUF9OT05JTlRFUkxFQVZFRAkoKF9fZm9yY2Ugc25kX3BjbV9hY2Nlc3NfdCkgMSkgLyogbm9uaW50ZXJsZWF2ZWQgbW1hcCAqLworLSNkZWZpbmUJU05EUlZfUENNX0FDQ0VTU19NTUFQX0NPTVBMRVgJCSgoX19mb3JjZSBzbmRfcGNtX2FjY2Vzc190KSAyKSAvKiBjb21wbGV4IG1tYXAgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9BQ0NFU1NfUldfSU5URVJMRUFWRUQJCSgoX19mb3JjZSBzbmRfcGNtX2FjY2Vzc190KSAzKSAvKiByZWFkaS93cml0ZWkgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9BQ0NFU1NfUldfTk9OSU5URVJMRUFWRUQJKChfX2ZvcmNlIHNuZF9wY21fYWNjZXNzX3QpIDQpIC8qIHJlYWRuL3dyaXRlbiAqLworLSNkZWZpbmUJU05EUlZfUENNX0FDQ0VTU19MQVNUCQlTTkRSVl9QQ01fQUNDRVNTX1JXX05PTklOVEVSTEVBVkVECistCistdHlwZWRlZiBpbnQgX19iaXR3aXNlIHNuZF9wY21fZm9ybWF0X3Q7CistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1M4CSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAwKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VOAkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMSkKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzE2X0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMTZfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDMpCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UxNl9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNCkKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTE2X0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA1KQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjRfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDYpIC8qIGxvdyB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjRfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDcpIC8qIGxvdyB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjRfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDgpIC8qIGxvdyB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjRfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDkpIC8qIGxvdyB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMzJfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDEwKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMzJfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDExKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMzJfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDEyKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMzJfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDEzKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9GTE9BVF9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTQpIC8qIDQtYnl0ZSBmbG9hdCwgSUVFRS03NTQgMzItYml0LCByYW5nZSAtMS4wIHRvIDEuMCAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9GTE9BVF9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTUpIC8qIDQtYnl0ZSBmbG9hdCwgSUVFRS03NTQgMzItYml0LCByYW5nZSAtMS4wIHRvIDEuMCAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9GTE9BVDY0X0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxNikgLyogOC1ieXRlIGZsb2F0LCBJRUVFLTc1NCA2NC1iaXQsIHJhbmdlIC0xLjAgdG8gMS4wICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUNjRfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDE3KSAvKiA4LWJ5dGUgZmxvYXQsIElFRUUtNzU0IDY0LWJpdCwgcmFuZ2UgLTEuMCB0byAxLjAgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0xFICgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxOCkgLyogSUVDLTk1OCBzdWJmcmFtZSwgTGl0dGxlIEVuZGlhbiAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9JRUM5NThfU1VCRlJBTUVfQkUgKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDE5KSAvKiBJRUMtOTU4IHN1YmZyYW1lLCBCaWcgRW5kaWFuICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX01VX0xBVwkJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDIwKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9BX0xBVwkJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDIxKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9JTUFfQURQQ00JKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDIyKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9NUEVHCQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMjMpCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0dTTQkJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDI0KQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjBfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDI1KSAvKiBpbiBmb3VyIGJ5dGVzLCBMU0IganVzdGlmaWVkICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyMF9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMjYpIC8qIGluIGZvdXIgYnl0ZXMsIExTQiBqdXN0aWZpZWQgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTIwX0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyNykgLyogaW4gZm91ciBieXRlcywgTFNCIGp1c3RpZmllZCAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjBfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDI4KSAvKiBpbiBmb3VyIGJ5dGVzLCBMU0IganVzdGlmaWVkICovCistLyogZ2FwIGluIHRoZSBudW1iZXJpbmcgZm9yIGEgZnV0dXJlIHN0YW5kYXJkIGxpbmVhciBmb3JtYXQgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfU1BFQ0lBTAkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzEpCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyNF8zTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDMyKQkvKiBpbiB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjRfM0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzMykJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTI0XzNMRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzQpCS8qIGluIHRocmVlIGJ5dGVzICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyNF8zQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDM1KQkvKiBpbiB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjBfM0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzNikJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzIwXzNCRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzcpCS8qIGluIHRocmVlIGJ5dGVzICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyMF8zTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDM4KQkvKiBpbiB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjBfM0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzOSkJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzE4XzNMRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDApCS8qIGluIHRocmVlIGJ5dGVzICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MxOF8zQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQxKQkvKiBpbiB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMThfM0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0MikJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTE4XzNCRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDMpCS8qIGluIHRocmVlIGJ5dGVzICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0c3MjNfMjQJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQ0KSAvKiA4IHNhbXBsZXMgaW4gMyBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9HNzIzXzI0XzFCCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0NSkgLyogMSBzYW1wbGUgaW4gMSBieXRlICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0c3MjNfNDAJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQ2KSAvKiA4IFNhbXBsZXMgaW4gNSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9HNzIzXzQwXzFCCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0NykgLyogMSBzYW1wbGUgaW4gMSBieXRlICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0RTRF9VOAkJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQ4KSAvKiBEU0QsIDEtYnl0ZSBzYW1wbGVzIERTRCAoeDgpICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0RTRF9VMTZfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQ5KSAvKiBEU0QsIDItYnl0ZSBzYW1wbGVzIERTRCAoeDE2KSwgbGl0dGxlIGVuZGlhbiAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9EU0RfVTMyX0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA1MCkgLyogRFNELCA0LWJ5dGUgc2FtcGxlcyBEU0QgKHgzMiksIGxpdHRsZSBlbmRpYW4gKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRFNEX1UxNl9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNTEpIC8qIERTRCwgMi1ieXRlIHNhbXBsZXMgRFNEICh4MTYpLCBiaWcgZW5kaWFuICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0RTRF9VMzJfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDUyKSAvKiBEU0QsIDQtYnl0ZSBzYW1wbGVzIERTRCAoeDMyKSwgYmlnIGVuZGlhbiAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9MQVNUCQlTTkRSVl9QQ01fRk9STUFUX0RTRF9VMzJfQkUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRklSU1QJCVNORFJWX1BDTV9GT1JNQVRfUzgKKy0KKy0jaWZkZWYgU05EUlZfTElUVExFX0VORElBTgorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMTYJCVNORFJWX1BDTV9GT1JNQVRfUzE2X0xFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UxNgkJU05EUlZfUENNX0ZPUk1BVF9VMTZfTEUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzI0CQlTTkRSVl9QQ01fRk9STUFUX1MyNF9MRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjQJCVNORFJWX1BDTV9GT1JNQVRfVTI0X0xFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MzMgkJU05EUlZfUENNX0ZPUk1BVF9TMzJfTEUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTMyCQlTTkRSVl9QQ01fRk9STUFUX1UzMl9MRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9GTE9BVAkJU05EUlZfUENNX0ZPUk1BVF9GTE9BVF9MRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9GTE9BVDY0CVNORFJWX1BDTV9GT1JNQVRfRkxPQVQ2NF9MRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9JRUM5NThfU1VCRlJBTUUgU05EUlZfUENNX0ZPUk1BVF9JRUM5NThfU1VCRlJBTUVfTEUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzIwCQlTTkRSVl9QQ01fRk9STUFUX1MyMF9MRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjAJCVNORFJWX1BDTV9GT1JNQVRfVTIwX0xFCistI2VuZGlmCistI2lmZGVmIFNORFJWX0JJR19FTkRJQU4KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzE2CQlTTkRSVl9QQ01fRk9STUFUX1MxNl9CRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMTYJCVNORFJWX1BDTV9GT1JNQVRfVTE2X0JFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyNAkJU05EUlZfUENNX0ZPUk1BVF9TMjRfQkUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTI0CQlTTkRSVl9QQ01fRk9STUFUX1UyNF9CRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMzIJCVNORFJWX1BDTV9GT1JNQVRfUzMyX0JFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UzMgkJU05EUlZfUENNX0ZPUk1BVF9VMzJfQkUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVQJCVNORFJWX1BDTV9GT1JNQVRfRkxPQVRfQkUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVQ2NAlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUNjRfQkUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FIFNORFJWX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0JFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyMAkJU05EUlZfUENNX0ZPUk1BVF9TMjBfQkUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTIwCQlTTkRSVl9QQ01fRk9STUFUX1UyMF9CRQorLSNlbmRpZgorLQorLXR5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfcGNtX3N1YmZvcm1hdF90OworLSNkZWZpbmUJU05EUlZfUENNX1NVQkZPUk1BVF9TVEQJCSgoX19mb3JjZSBzbmRfcGNtX3N1YmZvcm1hdF90KSAwKQorLSNkZWZpbmUJU05EUlZfUENNX1NVQkZPUk1BVF9MQVNUCVNORFJWX1BDTV9TVUJGT1JNQVRfU1RECistCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19NTUFQCQkweDAwMDAwMDAxCS8qIGhhcmR3YXJlIHN1cHBvcnRzIG1tYXAgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX01NQVBfVkFMSUQJMHgwMDAwMDAwMgkvKiBwZXJpb2QgZGF0YSBhcmUgdmFsaWQgZHVyaW5nIHRyYW5zZmVyICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19ET1VCTEUJCTB4MDAwMDAwMDQJLyogRG91YmxlIGJ1ZmZlcmluZyBuZWVkZWQgZm9yIFBDTSBzdGFydC9zdG9wICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19CQVRDSAkJMHgwMDAwMDAxMAkvKiBkb3VibGUgYnVmZmVyaW5nICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19TWU5DX0FQUExQVFIJMHgwMDAwMDAyMAkvKiBuZWVkIHRoZSBleHBsaWNpdCBzeW5jIG9mIGFwcGxfcHRyIHVwZGF0ZSAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fSU5URVJMRUFWRUQJMHgwMDAwMDEwMAkvKiBjaGFubmVscyBhcmUgaW50ZXJsZWF2ZWQgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX05PTklOVEVSTEVBVkVECTB4MDAwMDAyMDAJLyogY2hhbm5lbHMgYXJlIG5vdCBpbnRlcmxlYXZlZCAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fQ09NUExFWAkJMHgwMDAwMDQwMAkvKiBjb21wbGV4IGZyYW1lIG9yZ2FuaXphdGlvbiAobW1hcCBvbmx5KSAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fQkxPQ0tfVFJBTlNGRVIJMHgwMDAxMDAwMAkvKiBoYXJkd2FyZSB0cmFuc2ZlciBibG9jayBvZiBzYW1wbGVzICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19PVkVSUkFOR0UJMHgwMDAyMDAwMAkvKiBoYXJkd2FyZSBzdXBwb3J0cyBBREMgKGNhcHR1cmUpIG92ZXJyYW5nZSBkZXRlY3Rpb24gKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX1JFU1VNRQkJMHgwMDA0MDAwMAkvKiBoYXJkd2FyZSBzdXBwb3J0cyBzdHJlYW0gcmVzdW1lIGFmdGVyIHN1c3BlbmQgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX1BBVVNFCQkweDAwMDgwMDAwCS8qIHBhdXNlIGlvY3RsIGlzIHN1cHBvcnRlZCAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fSEFMRl9EVVBMRVgJMHgwMDEwMDAwMAkvKiBvbmx5IGhhbGYgZHVwbGV4ICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19KT0lOVF9EVVBMRVgJMHgwMDIwMDAwMAkvKiBwbGF5YmFjayBhbmQgY2FwdHVyZSBzdHJlYW0gYXJlIHNvbWV3aGF0IGNvcnJlbGF0ZWQgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX1NZTkNfU1RBUlQJMHgwMDQwMDAwMAkvKiBwY20gc3VwcG9ydCBzb21lIGtpbmQgb2Ygc3luYyBnbyAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fTk9fUEVSSU9EX1dBS0VVUAkweDAwODAwMDAwCS8qIHBlcmlvZCB3YWtldXAgY2FuIGJlIGRpc2FibGVkICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19IQVNfV0FMTF9DTE9DSyAgIDB4MDEwMDAwMDAgICAgICAvKiAoRGVwcmVjYXRlZCloYXMgYXVkaW8gd2FsbCBjbG9jayBmb3IgYXVkaW8vc3lzdGVtIHRpbWUgc3luYyAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fSEFTX0xJTktfQVRJTUUgICAgICAgICAgICAgIDB4MDEwMDAwMDAgIC8qIHJlcG9ydCBoYXJkd2FyZSBsaW5rIGF1ZGlvIHRpbWUsIHJlc2V0IG9uIHN0YXJ0dXAgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX0hBU19MSU5LX0FCU09MVVRFX0FUSU1FICAgICAweDAyMDAwMDAwICAvKiByZXBvcnQgYWJzb2x1dGUgaGFyZHdhcmUgbGluayBhdWRpbyB0aW1lLCBub3QgcmVzZXQgb24gc3RhcnR1cCAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fSEFTX0xJTktfRVNUSU1BVEVEX0FUSU1FICAgIDB4MDQwMDAwMDAgIC8qIHJlcG9ydCBlc3RpbWF0ZWQgbGluayBhdWRpbyB0aW1lICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19IQVNfTElOS19TWU5DSFJPTklaRURfQVRJTUUgMHgwODAwMDAwMCAgLyogcmVwb3J0IHN5bmNocm9uaXplZCBhdWRpby9zeXN0ZW0gdGltZSAqLworLQorLSNkZWZpbmUgU05EUlZfUENNX0lORk9fRFJBSU5fVFJJR0dFUgkweDQwMDAwMDAwCQkvKiBpbnRlcm5hbCBrZXJuZWwgZmxhZyAtIHRyaWdnZXIgaW4gZHJhaW4gKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX0ZJRk9fSU5fRlJBTUVTCTB4ODAwMDAwMDAJLyogaW50ZXJuYWwga2VybmVsIGZsYWcgLSBGSUZPIHNpemUgaXMgaW4gZnJhbWVzICovCistCistCistCistdHlwZWRlZiBpbnQgX19iaXR3aXNlIHNuZF9wY21fc3RhdGVfdDsKKy0jZGVmaW5lCVNORFJWX1BDTV9TVEFURV9PUEVOCQkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSAwKSAvKiBzdHJlYW0gaXMgb3BlbiAqLworLSNkZWZpbmUJU05EUlZfUENNX1NUQVRFX1NFVFVQCQkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSAxKSAvKiBzdHJlYW0gaGFzIGEgc2V0dXAgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9TVEFURV9QUkVQQVJFRAkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSAyKSAvKiBzdHJlYW0gaXMgcmVhZHkgdG8gc3RhcnQgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9TVEFURV9SVU5OSU5HCQkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSAzKSAvKiBzdHJlYW0gaXMgcnVubmluZyAqLworLSNkZWZpbmUJU05EUlZfUENNX1NUQVRFX1hSVU4JCSgoX19mb3JjZSBzbmRfcGNtX3N0YXRlX3QpIDQpIC8qIHN0cmVhbSByZWFjaGVkIGFuIHhydW4gKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9TVEFURV9EUkFJTklORwkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSA1KSAvKiBzdHJlYW0gaXMgZHJhaW5pbmcgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9TVEFURV9QQVVTRUQJCSgoX19mb3JjZSBzbmRfcGNtX3N0YXRlX3QpIDYpIC8qIHN0cmVhbSBpcyBwYXVzZWQgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9TVEFURV9TVVNQRU5ERUQJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgNykgLyogaGFyZHdhcmUgaXMgc3VzcGVuZGVkICovCistI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfRElTQ09OTkVDVEVECSgoX19mb3JjZSBzbmRfcGNtX3N0YXRlX3QpIDgpIC8qIGhhcmR3YXJlIGlzIGRpc2Nvbm5lY3RlZCAqLworLSNkZWZpbmUJU05EUlZfUENNX1NUQVRFX0xBU1QJCVNORFJWX1BDTV9TVEFURV9ESVNDT05ORUNURUQKKy0KKy1lbnVtIHsKKy0JU05EUlZfUENNX01NQVBfT0ZGU0VUX0RBVEEgPSAweDAwMDAwMDAwLAorLQlTTkRSVl9QQ01fTU1BUF9PRkZTRVRfU1RBVFVTID0gMHg4MDAwMDAwMCwKKy0JU05EUlZfUENNX01NQVBfT0ZGU0VUX0NPTlRST0wgPSAweDgxMDAwMDAwLAorLX07CistCistdW5pb24gc25kX3BjbV9zeW5jX2lkIHsKKy0JdW5zaWduZWQgY2hhciBpZFsxNl07CistCXVuc2lnbmVkIHNob3J0IGlkMTZbOF07CistCXVuc2lnbmVkIGludCBpZDMyWzRdOworLX07CistCistc3RydWN0IHNuZF9wY21faW5mbyB7CistCXVuc2lnbmVkIGludCBkZXZpY2U7CQkvKiBSTy9XUiAoY29udHJvbCk6IGRldmljZSBudW1iZXIgKi8KKy0JdW5zaWduZWQgaW50IHN1YmRldmljZTsJCS8qIFJPL1dSIChjb250cm9sKTogc3ViZGV2aWNlIG51bWJlciAqLworLQlpbnQgc3RyZWFtOwkJCS8qIFJPL1dSIChjb250cm9sKTogc3RyZWFtIGRpcmVjdGlvbiAqLworLQlpbnQgY2FyZDsJCQkvKiBSOiBjYXJkIG51bWJlciAqLworLQl1bnNpZ25lZCBjaGFyIGlkWzY0XTsJCS8qIElEICh1c2VyIHNlbGVjdGFibGUpICovCistCXVuc2lnbmVkIGNoYXIgbmFtZVs4MF07CQkvKiBuYW1lIG9mIHRoaXMgZGV2aWNlICovCistCXVuc2lnbmVkIGNoYXIgc3VibmFtZVszMl07CS8qIHN1YmRldmljZSBuYW1lICovCistCWludCBkZXZfY2xhc3M7CQkJLyogU05EUlZfUENNX0NMQVNTXyogKi8KKy0JaW50IGRldl9zdWJjbGFzczsJCS8qIFNORFJWX1BDTV9TVUJDTEFTU18qICovCistCXVuc2lnbmVkIGludCBzdWJkZXZpY2VzX2NvdW50OworLQl1bnNpZ25lZCBpbnQgc3ViZGV2aWNlc19hdmFpbDsKKy0JdW5pb24gc25kX3BjbV9zeW5jX2lkIHN5bmM7CS8qIGhhcmR3YXJlIHN5bmNocm9uaXphdGlvbiBJRCAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0XTsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZS4uLiAqLworLX07CistCistdHlwZWRlZiBpbnQgc25kX3BjbV9od19wYXJhbV90OworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0FDQ0VTUwkwCS8qIEFjY2VzcyB0eXBlICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fRk9STUFUCTEJLyogRm9ybWF0ICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fU1VCRk9STUFUCTIJLyogU3ViZm9ybWF0ICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fRklSU1RfTUFTSwlTTkRSVl9QQ01fSFdfUEFSQU1fQUNDRVNTCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fTEFTVF9NQVNLCVNORFJWX1BDTV9IV19QQVJBTV9TVUJGT1JNQVQKKy0KKy0jZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9TQU1QTEVfQklUUwk4CS8qIEJpdHMgcGVyIHNhbXBsZSAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0ZSQU1FX0JJVFMJOQkvKiBCaXRzIHBlciBmcmFtZSAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0NIQU5ORUxTCTEwCS8qIENoYW5uZWxzICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fUkFURQkJMTEJLyogQXBwcm94IHJhdGUgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9QRVJJT0RfVElNRQkxMgkvKiBBcHByb3ggZGlzdGFuY2UgYmV0d2VlbgorLQkJCQkJCSAqIGludGVycnVwdHMgaW4gdXMKKy0JCQkJCQkgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9QRVJJT0RfU0laRQkxMwkvKiBBcHByb3ggZnJhbWVzIGJldHdlZW4KKy0JCQkJCQkgKiBpbnRlcnJ1cHRzCistCQkJCQkJICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fUEVSSU9EX0JZVEVTCTE0CS8qIEFwcHJveCBieXRlcyBiZXR3ZWVuCistCQkJCQkJICogaW50ZXJydXB0cworLQkJCQkJCSAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1BFUklPRFMJMTUJLyogQXBwcm94IGludGVycnVwdHMgcGVyCistCQkJCQkJICogYnVmZmVyCistCQkJCQkJICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fQlVGRkVSX1RJTUUJMTYJLyogQXBwcm94IGR1cmF0aW9uIG9mIGJ1ZmZlcgorLQkJCQkJCSAqIGluIHVzCistCQkJCQkJICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fQlVGRkVSX1NJWkUJMTcJLyogU2l6ZSBvZiBidWZmZXIgaW4gZnJhbWVzICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fQlVGRkVSX0JZVEVTCTE4CS8qIFNpemUgb2YgYnVmZmVyIGluIGJ5dGVzICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fVElDS19USU1FCTE5CS8qIEFwcHJveCB0aWNrIGR1cmF0aW9uIGluIHVzICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fRklSU1RfSU5URVJWQUwJU05EUlZfUENNX0hXX1BBUkFNX1NBTVBMRV9CSVRTCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fTEFTVF9JTlRFUlZBTAlTTkRSVl9QQ01fSFdfUEFSQU1fVElDS19USU1FCistCistI2RlZmluZSBTTkRSVl9QQ01fSFdfUEFSQU1TX05PUkVTQU1QTEUJKDE8PDApCS8qIGF2b2lkIHJhdGUgcmVzYW1wbGluZyAqLworLSNkZWZpbmUgU05EUlZfUENNX0hXX1BBUkFNU19FWFBPUlRfQlVGRkVSCSgxPDwxKQkvKiBleHBvcnQgYnVmZmVyICovCistI2RlZmluZSBTTkRSVl9QQ01fSFdfUEFSQU1TX05PX1BFUklPRF9XQUtFVVAJKDE8PDIpCS8qIGRpc2FibGUgcGVyaW9kIHdha2V1cHMgKi8KKy0KKy1zdHJ1Y3Qgc25kX2ludGVydmFsIHsKKy0JdW5zaWduZWQgaW50IG1pbiwgbWF4OworLQl1bnNpZ25lZCBpbnQgb3Blbm1pbjoxLAorLQkJICAgICBvcGVubWF4OjEsCistCQkgICAgIGludGVnZXI6MSwKKy0JCSAgICAgZW1wdHk6MTsKKy19OworLQorLSNkZWZpbmUgU05EUlZfTUFTS19NQVgJMjU2CistCistc3RydWN0IHNuZF9tYXNrIHsKKy0JX191MzIgYml0c1soU05EUlZfTUFTS19NQVgrMzEpLzMyXTsKKy19OworLQorLXN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyB7CistCXVuc2lnbmVkIGludCBmbGFnczsKKy0Jc3RydWN0IHNuZF9tYXNrIG1hc2tzW1NORFJWX1BDTV9IV19QQVJBTV9MQVNUX01BU0sgLQorLQkJCSAgICAgICBTTkRSVl9QQ01fSFdfUEFSQU1fRklSU1RfTUFTSyArIDFdOworLQlzdHJ1Y3Qgc25kX21hc2sgbXJlc1s1XTsJLyogcmVzZXJ2ZWQgbWFza3MgKi8KKy0Jc3RydWN0IHNuZF9pbnRlcnZhbCBpbnRlcnZhbHNbU05EUlZfUENNX0hXX1BBUkFNX0xBU1RfSU5URVJWQUwgLQorLQkJCQkgICAgICAgIFNORFJWX1BDTV9IV19QQVJBTV9GSVJTVF9JTlRFUlZBTCArIDFdOworLQlzdHJ1Y3Qgc25kX2ludGVydmFsIGlyZXNbOV07CS8qIHJlc2VydmVkIGludGVydmFscyAqLworLQl1bnNpZ25lZCBpbnQgcm1hc2s7CQkvKiBXOiByZXF1ZXN0ZWQgbWFza3MgKi8KKy0JdW5zaWduZWQgaW50IGNtYXNrOwkJLyogUjogY2hhbmdlZCBtYXNrcyAqLworLQl1bnNpZ25lZCBpbnQgaW5mbzsJCS8qIFI6IEluZm8gZmxhZ3MgZm9yIHJldHVybmVkIHNldHVwICovCistCXVuc2lnbmVkIGludCBtc2JpdHM7CQkvKiBSOiB1c2VkIG1vc3Qgc2lnbmlmaWNhbnQgYml0cyAqLworLQl1bnNpZ25lZCBpbnQgcmF0ZV9udW07CQkvKiBSOiByYXRlIG51bWVyYXRvciAqLworLQl1bnNpZ25lZCBpbnQgcmF0ZV9kZW47CQkvKiBSOiByYXRlIGRlbm9taW5hdG9yICovCistCXNuZF9wY21fdWZyYW1lc190IGZpZm9fc2l6ZTsJLyogUjogY2hpcCBGSUZPIHNpemUgaW4gZnJhbWVzICovCistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlICovCistfTsKKy0KKy1lbnVtIHsKKy0JU05EUlZfUENNX1RTVEFNUF9OT05FID0gMCwKKy0JU05EUlZfUENNX1RTVEFNUF9FTkFCTEUsCistCVNORFJWX1BDTV9UU1RBTVBfTEFTVCA9IFNORFJWX1BDTV9UU1RBTVBfRU5BQkxFLAorLX07CistCistc3RydWN0IHNuZF9wY21fc3dfcGFyYW1zIHsKKy0JaW50IHRzdGFtcF9tb2RlOwkJCS8qIHRpbWVzdGFtcCBtb2RlICovCistCXVuc2lnbmVkIGludCBwZXJpb2Rfc3RlcDsKKy0JdW5zaWduZWQgaW50IHNsZWVwX21pbjsJCQkvKiBtaW4gdGlja3MgdG8gc2xlZXAgKi8KKy0Jc25kX3BjbV91ZnJhbWVzX3QgYXZhaWxfbWluOwkJLyogbWluIGF2YWlsIGZyYW1lcyBmb3Igd2FrZXVwICovCistCXNuZF9wY21fdWZyYW1lc190IHhmZXJfYWxpZ247CQkvKiBvYnNvbGV0ZTogeGZlciBzaXplIG5lZWQgdG8gYmUgYSBtdWx0aXBsZSAqLworLQlzbmRfcGNtX3VmcmFtZXNfdCBzdGFydF90aHJlc2hvbGQ7CS8qIG1pbiBod19hdmFpbCBmcmFtZXMgZm9yIGF1dG9tYXRpYyBzdGFydCAqLworLQlzbmRfcGNtX3VmcmFtZXNfdCBzdG9wX3RocmVzaG9sZDsJLyogbWluIGF2YWlsIGZyYW1lcyBmb3IgYXV0b21hdGljIHN0b3AgKi8KKy0Jc25kX3BjbV91ZnJhbWVzX3Qgc2lsZW5jZV90aHJlc2hvbGQ7CS8qIG1pbiBkaXN0YW5jZSBmcm9tIG5vaXNlIGZvciBzaWxlbmNlIGZpbGxpbmcgKi8KKy0Jc25kX3BjbV91ZnJhbWVzX3Qgc2lsZW5jZV9zaXplOwkJLyogc2lsZW5jZSBibG9jayBzaXplICovCistCXNuZF9wY21fdWZyYW1lc190IGJvdW5kYXJ5OwkJLyogcG9pbnRlcnMgd3JhcCBwb2ludCAqLworLQl1bnNpZ25lZCBpbnQgcHJvdG87CQkJLyogcHJvdG9jb2wgdmVyc2lvbiAqLworLQl1bnNpZ25lZCBpbnQgdHN0YW1wX3R5cGU7CQkvKiB0aW1lc3RhbXAgdHlwZSAocmVxLiBwcm90byA+PSAyLjAuMTIpICovCistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNTZdOwkJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSAqLworLX07CistCistc3RydWN0IHNuZF9wY21fY2hhbm5lbF9pbmZvIHsKKy0JdW5zaWduZWQgaW50IGNoYW5uZWw7CistCV9fa2VybmVsX29mZl90IG9mZnNldDsJCS8qIG1tYXAgb2Zmc2V0ICovCistCXVuc2lnbmVkIGludCBmaXJzdDsJCS8qIG9mZnNldCB0byBmaXJzdCBzYW1wbGUgaW4gYml0cyAqLworLQl1bnNpZ25lZCBpbnQgc3RlcDsJCS8qIHNhbXBsZXMgZGlzdGFuY2UgaW4gYml0cyAqLworLX07CistCistZW51bSB7CistCS8qCistCSAqICBmaXJzdCBkZWZpbml0aW9uIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBvbmx5LAorLQkgKiAgbWFwcyB0byB3YWxsY2xvY2svbGluayB0aW1lIGZvciBIREF1ZGlvIHBsYXliYWNrIGFuZCBERUZBVUxUL0RNQSB0aW1lIGZvciBldmVyeXRoaW5nIGVsc2UKKy0JICovCistCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9DT01QQVQgPSAwLAorLQorLQkvKiB0aW1lc3RhbXAgZGVmaW5pdGlvbnMgKi8KKy0JU05EUlZfUENNX0FVRElPX1RTVEFNUF9UWVBFX0RFRkFVTFQgPSAxLCAgICAgICAgICAgLyogRE1BIHRpbWUsIHJlcG9ydGVkIGFzIHBlciBod19wdHIgKi8KKy0JU05EUlZfUENNX0FVRElPX1RTVEFNUF9UWVBFX0xJTksgPSAyLAkgICAgICAgICAgIC8qIGxpbmsgdGltZSByZXBvcnRlZCBieSBzYW1wbGUgb3Igd2FsbGNsb2NrIGNvdW50ZXIsIHJlc2V0IG9uIHN0YXJ0dXAgKi8KKy0JU05EUlZfUENNX0FVRElPX1RTVEFNUF9UWVBFX0xJTktfQUJTT0xVVEUgPSAzLAkgICAvKiBsaW5rIHRpbWUgcmVwb3J0ZWQgYnkgc2FtcGxlIG9yIHdhbGxjbG9jayBjb3VudGVyLCBub3QgcmVzZXQgb24gc3RhcnR1cCAqLworLQlTTkRSVl9QQ01fQVVESU9fVFNUQU1QX1RZUEVfTElOS19FU1RJTUFURUQgPSA0LCAgICAvKiBsaW5rIHRpbWUgZXN0aW1hdGVkIGluZGlyZWN0bHkgKi8KKy0JU05EUlZfUENNX0FVRElPX1RTVEFNUF9UWVBFX0xJTktfU1lOQ0hST05JWkVEID0gNSwgLyogbGluayB0aW1lIHN5bmNocm9uaXplZCB3aXRoIHN5c3RlbSB0aW1lICovCistCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9MQVNUID0gU05EUlZfUENNX0FVRElPX1RTVEFNUF9UWVBFX0xJTktfU1lOQ0hST05JWkVECistfTsKKy0KKy1zdHJ1Y3Qgc25kX3BjbV9zdGF0dXMgeworLQlzbmRfcGNtX3N0YXRlX3Qgc3RhdGU7CQkvKiBzdHJlYW0gc3RhdGUgKi8KKy0Jc3RydWN0IHRpbWVzcGVjIHRyaWdnZXJfdHN0YW1wOwkvKiB0aW1lIHdoZW4gc3RyZWFtIHdhcyBzdGFydGVkL3N0b3BwZWQvcGF1c2VkICovCistCXN0cnVjdCB0aW1lc3BlYyB0c3RhbXA7CQkvKiByZWZlcmVuY2UgdGltZXN0YW1wICovCistCXNuZF9wY21fdWZyYW1lc190IGFwcGxfcHRyOwkvKiBhcHBsIHB0ciAqLworLQlzbmRfcGNtX3VmcmFtZXNfdCBod19wdHI7CS8qIGh3IHB0ciAqLworLQlzbmRfcGNtX3NmcmFtZXNfdCBkZWxheTsJLyogY3VycmVudCBkZWxheSBpbiBmcmFtZXMgKi8KKy0Jc25kX3BjbV91ZnJhbWVzX3QgYXZhaWw7CS8qIG51bWJlciBvZiBmcmFtZXMgYXZhaWxhYmxlICovCistCXNuZF9wY21fdWZyYW1lc190IGF2YWlsX21heDsJLyogbWF4IGZyYW1lcyBhdmFpbGFibGUgb24gaHcgc2luY2UgbGFzdCBzdGF0dXMgKi8KKy0Jc25kX3BjbV91ZnJhbWVzX3Qgb3ZlcnJhbmdlOwkvKiBjb3VudCBvZiBBREMgKGNhcHR1cmUpIG92ZXJyYW5nZSBkZXRlY3Rpb25zIGZyb20gbGFzdCBzdGF0dXMgKi8KKy0Jc25kX3BjbV9zdGF0ZV90IHN1c3BlbmRlZF9zdGF0ZTsgLyogc3VzcGVuZGVkIHN0cmVhbSBzdGF0ZSAqLworLQlfX3UzMiBhdWRpb190c3RhbXBfZGF0YTsJIC8qIG5lZWRlZCBmb3IgNjQtYml0IGFsaWdubWVudCwgdXNlZCBmb3IgY29uZmlncy9yZXBvcnQgdG8vZnJvbSB1c2Vyc3BhY2UgKi8KKy0Jc3RydWN0IHRpbWVzcGVjIGF1ZGlvX3RzdGFtcDsJLyogc2FtcGxlIGNvdW50ZXIsIHdhbGwgY2xvY2ssIFBIQyBvciBvbi1kZW1hbmQgc3luYydlZCAqLworLQlzdHJ1Y3QgdGltZXNwZWMgZHJpdmVyX3RzdGFtcDsJLyogdXNlZnVsIGluIGNhc2UgcmVmZXJlbmNlIHN5c3RlbSB0c3RhbXAgaXMgcmVwb3J0ZWQgd2l0aCBkZWxheSAqLworLQlfX3UzMiBhdWRpb190c3RhbXBfYWNjdXJhY3k7CS8qIGluIG5zIHVuaXRzLCBvbmx5IHZhbGlkIGlmIGluZGljYXRlZCBpbiBhdWRpb190c3RhbXBfZGF0YSAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzUyLTIqc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYyldOyAvKiBtdXN0IGJlIGZpbGxlZCB3aXRoIHplcm8gKi8KKy19OworLQorLXN0cnVjdCBzbmRfcGNtX21tYXBfc3RhdHVzIHsKKy0Jc25kX3BjbV9zdGF0ZV90IHN0YXRlOwkJLyogUk86IHN0YXRlIC0gU05EUlZfUENNX1NUQVRFX1hYWFggKi8KKy0JaW50IHBhZDE7CQkJLyogTmVlZGVkIGZvciA2NCBiaXQgYWxpZ25tZW50ICovCistCXNuZF9wY21fdWZyYW1lc190IGh3X3B0cjsJLyogUk86IGh3IHB0ciAoMC4uLmJvdW5kYXJ5LTEpICovCistCXN0cnVjdCB0aW1lc3BlYyB0c3RhbXA7CQkvKiBUaW1lc3RhbXAgKi8KKy0Jc25kX3BjbV9zdGF0ZV90IHN1c3BlbmRlZF9zdGF0ZTsgLyogUk86IHN1c3BlbmRlZCBzdHJlYW0gc3RhdGUgKi8KKy0Jc3RydWN0IHRpbWVzcGVjIGF1ZGlvX3RzdGFtcDsJLyogZnJvbSBzYW1wbGUgY291bnRlciBvciB3YWxsIGNsb2NrICovCistfTsKKy0KKy1zdHJ1Y3Qgc25kX3BjbV9tbWFwX2NvbnRyb2wgeworLQlzbmRfcGNtX3VmcmFtZXNfdCBhcHBsX3B0cjsJLyogUlc6IGFwcGwgcHRyICgwLi4uYm91bmRhcnktMSkgKi8KKy0Jc25kX3BjbV91ZnJhbWVzX3QgYXZhaWxfbWluOwkvKiBSVzogbWluIGF2YWlsYWJsZSBmcmFtZXMgZm9yIHdha2V1cCAqLworLX07CistCistI2RlZmluZSBTTkRSVl9QQ01fU1lOQ19QVFJfSFdTWU5DCSgxPDwwKQkvKiBleGVjdXRlIGh3c3luYyAqLworLSNkZWZpbmUgU05EUlZfUENNX1NZTkNfUFRSX0FQUEwJCSgxPDwxKQkvKiBnZXQgYXBwbF9wdHIgZnJvbSBkcml2ZXIgKHIvdyBvcCkgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9TWU5DX1BUUl9BVkFJTF9NSU4JKDE8PDIpCS8qIGdldCBhdmFpbF9taW4gZnJvbSBkcml2ZXIgKi8KKy0KKy1zdHJ1Y3Qgc25kX3BjbV9zeW5jX3B0ciB7CistCXVuc2lnbmVkIGludCBmbGFnczsKKy0JdW5pb24geworLQkJc3RydWN0IHNuZF9wY21fbW1hcF9zdGF0dXMgc3RhdHVzOworLQkJdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CistCX0gczsKKy0JdW5pb24geworLQkJc3RydWN0IHNuZF9wY21fbW1hcF9jb250cm9sIGNvbnRyb2w7CistCQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0XTsKKy0JfSBjOworLX07CistCistc3RydWN0IHNuZF94ZmVyaSB7CistCXNuZF9wY21fc2ZyYW1lc190IHJlc3VsdDsKKy0Jdm9pZCBfX3VzZXIgKmJ1ZjsKKy0Jc25kX3BjbV91ZnJhbWVzX3QgZnJhbWVzOworLX07CistCistc3RydWN0IHNuZF94ZmVybiB7CistCXNuZF9wY21fc2ZyYW1lc190IHJlc3VsdDsKKy0Jdm9pZCBfX3VzZXIgKiBfX3VzZXIgKmJ1ZnM7CistCXNuZF9wY21fdWZyYW1lc190IGZyYW1lczsKKy19OworLQorLWVudW0geworLQlTTkRSVl9QQ01fVFNUQU1QX1RZUEVfR0VUVElNRU9GREFZID0gMCwJLyogZ2V0dGltZW9mZGF5IGVxdWl2YWxlbnQgKi8KKy0JU05EUlZfUENNX1RTVEFNUF9UWVBFX01PTk9UT05JQywJLyogcG9zaXhfY2xvY2tfbW9ub3RvbmljIGVxdWl2YWxlbnQgKi8KKy0JU05EUlZfUENNX1RTVEFNUF9UWVBFX01PTk9UT05JQ19SQVcsICAgIC8qIG1vbm90b25pY19yYXcgKG5vIE5UUCkgKi8KKy0JU05EUlZfUENNX1RTVEFNUF9UWVBFX0xBU1QgPSBTTkRSVl9QQ01fVFNUQU1QX1RZUEVfTU9OT1RPTklDX1JBVywKKy19OworLQorLS8qIGNoYW5uZWwgcG9zaXRpb25zICovCistZW51bSB7CistCVNORFJWX0NITUFQX1VOS05PV04gPSAwLAorLQlTTkRSVl9DSE1BUF9OQSwJCS8qIE4vQSwgc2lsZW50ICovCistCVNORFJWX0NITUFQX01PTk8sCS8qIG1vbm8gc3RyZWFtICovCistCS8qIHRoaXMgZm9sbG93cyB0aGUgYWxzYS1saWIgbWl4ZXIgY2hhbm5lbCB2YWx1ZSArIDMgKi8KKy0JU05EUlZfQ0hNQVBfRkwsCQkvKiBmcm9udCBsZWZ0ICovCistCVNORFJWX0NITUFQX0ZSLAkJLyogZnJvbnQgcmlnaHQgKi8KKy0JU05EUlZfQ0hNQVBfUkwsCQkvKiByZWFyIGxlZnQgKi8KKy0JU05EUlZfQ0hNQVBfUlIsCQkvKiByZWFyIHJpZ2h0ICovCistCVNORFJWX0NITUFQX0ZDLAkJLyogZnJvbnQgY2VudGVyICovCistCVNORFJWX0NITUFQX0xGRSwJLyogTEZFICovCistCVNORFJWX0NITUFQX1NMLAkJLyogc2lkZSBsZWZ0ICovCistCVNORFJWX0NITUFQX1NSLAkJLyogc2lkZSByaWdodCAqLworLQlTTkRSVl9DSE1BUF9SQywJCS8qIHJlYXIgY2VudGVyICovCistCS8qIG5ldyBkZWZpbml0aW9ucyAqLworLQlTTkRSVl9DSE1BUF9GTEMsCS8qIGZyb250IGxlZnQgY2VudGVyICovCistCVNORFJWX0NITUFQX0ZSQywJLyogZnJvbnQgcmlnaHQgY2VudGVyICovCistCVNORFJWX0NITUFQX1JMQywJLyogcmVhciBsZWZ0IGNlbnRlciAqLworLQlTTkRSVl9DSE1BUF9SUkMsCS8qIHJlYXIgcmlnaHQgY2VudGVyICovCistCVNORFJWX0NITUFQX0ZMVywJLyogZnJvbnQgbGVmdCB3aWRlICovCistCVNORFJWX0NITUFQX0ZSVywJLyogZnJvbnQgcmlnaHQgd2lkZSAqLworLQlTTkRSVl9DSE1BUF9GTEgsCS8qIGZyb250IGxlZnQgaGlnaCAqLworLQlTTkRSVl9DSE1BUF9GQ0gsCS8qIGZyb250IGNlbnRlciBoaWdoICovCistCVNORFJWX0NITUFQX0ZSSCwJLyogZnJvbnQgcmlnaHQgaGlnaCAqLworLQlTTkRSVl9DSE1BUF9UQywJCS8qIHRvcCBjZW50ZXIgKi8KKy0JU05EUlZfQ0hNQVBfVEZMLAkvKiB0b3AgZnJvbnQgbGVmdCAqLworLQlTTkRSVl9DSE1BUF9URlIsCS8qIHRvcCBmcm9udCByaWdodCAqLworLQlTTkRSVl9DSE1BUF9URkMsCS8qIHRvcCBmcm9udCBjZW50ZXIgKi8KKy0JU05EUlZfQ0hNQVBfVFJMLAkvKiB0b3AgcmVhciBsZWZ0ICovCistCVNORFJWX0NITUFQX1RSUiwJLyogdG9wIHJlYXIgcmlnaHQgKi8KKy0JU05EUlZfQ0hNQVBfVFJDLAkvKiB0b3AgcmVhciBjZW50ZXIgKi8KKy0JLyogbmV3IGRlZmluaXRpb25zIGZvciBVQUMyICovCistCVNORFJWX0NITUFQX1RGTEMsCS8qIHRvcCBmcm9udCBsZWZ0IGNlbnRlciAqLworLQlTTkRSVl9DSE1BUF9URlJDLAkvKiB0b3AgZnJvbnQgcmlnaHQgY2VudGVyICovCistCVNORFJWX0NITUFQX1RTTCwJLyogdG9wIHNpZGUgbGVmdCAqLworLQlTTkRSVl9DSE1BUF9UU1IsCS8qIHRvcCBzaWRlIHJpZ2h0ICovCistCVNORFJWX0NITUFQX0xMRkUsCS8qIGxlZnQgTEZFICovCistCVNORFJWX0NITUFQX1JMRkUsCS8qIHJpZ2h0IExGRSAqLworLQlTTkRSVl9DSE1BUF9CQywJCS8qIGJvdHRvbSBjZW50ZXIgKi8KKy0JU05EUlZfQ0hNQVBfQkxDLAkvKiBib3R0b20gbGVmdCBjZW50ZXIgKi8KKy0JU05EUlZfQ0hNQVBfQlJDLAkvKiBib3R0b20gcmlnaHQgY2VudGVyICovCistCVNORFJWX0NITUFQX0xBU1QgPSBTTkRSVl9DSE1BUF9CUkMsCistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0NITUFQX1BPU0lUSU9OX01BU0sJMHhmZmZmCistI2RlZmluZSBTTkRSVl9DSE1BUF9QSEFTRV9JTlZFUlNFCSgweDAxIDw8IDE2KQorLSNkZWZpbmUgU05EUlZfQ0hNQVBfRFJJVkVSX1NQRUMJCSgweDAyIDw8IDE2KQorLQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1BWRVJTSU9OCV9JT1IoJ0EnLCAweDAwLCBpbnQpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfSU5GTwkJX0lPUignQScsIDB4MDEsIHN0cnVjdCBzbmRfcGNtX2luZm8pCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfVFNUQU1QCQlfSU9XKCdBJywgMHgwMiwgaW50KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1RUU1RBTVAJCV9JT1coJ0EnLCAweDAzLCBpbnQpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfVVNFUl9QVkVSU0lPTglfSU9XKCdBJywgMHgwNCwgaW50KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0hXX1JFRklORQlfSU9XUignQScsIDB4MTAsIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcykKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9IV19QQVJBTVMJX0lPV1IoJ0EnLCAweDExLCBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfSFdfRlJFRQkJX0lPKCdBJywgMHgxMikKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9TV19QQVJBTVMJX0lPV1IoJ0EnLCAweDEzLCBzdHJ1Y3Qgc25kX3BjbV9zd19wYXJhbXMpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfU1RBVFVTCQlfSU9SKCdBJywgMHgyMCwgc3RydWN0IHNuZF9wY21fc3RhdHVzKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0RFTEFZCQlfSU9SKCdBJywgMHgyMSwgc25kX3BjbV9zZnJhbWVzX3QpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfSFdTWU5DCQlfSU8oJ0EnLCAweDIyKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1NZTkNfUFRSCV9JT1dSKCdBJywgMHgyMywgc3RydWN0IHNuZF9wY21fc3luY19wdHIpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfU1RBVFVTX0VYVAlfSU9XUignQScsIDB4MjQsIHN0cnVjdCBzbmRfcGNtX3N0YXR1cykKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9DSEFOTkVMX0lORk8JX0lPUignQScsIDB4MzIsIHN0cnVjdCBzbmRfcGNtX2NoYW5uZWxfaW5mbykKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9QUkVQQVJFCQlfSU8oJ0EnLCAweDQwKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1JFU0VUCQlfSU8oJ0EnLCAweDQxKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1NUQVJUCQlfSU8oJ0EnLCAweDQyKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0RST1AJCV9JTygnQScsIDB4NDMpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfRFJBSU4JCV9JTygnQScsIDB4NDQpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfUEFVU0UJCV9JT1coJ0EnLCAweDQ1LCBpbnQpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfUkVXSU5ECQlfSU9XKCdBJywgMHg0Niwgc25kX3BjbV91ZnJhbWVzX3QpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfUkVTVU1FCQlfSU8oJ0EnLCAweDQ3KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1hSVU4JCV9JTygnQScsIDB4NDgpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfRk9SV0FSRAkJX0lPVygnQScsIDB4NDksIHNuZF9wY21fdWZyYW1lc190KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1dSSVRFSV9GUkFNRVMJX0lPVygnQScsIDB4NTAsIHN0cnVjdCBzbmRfeGZlcmkpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfUkVBRElfRlJBTUVTCV9JT1IoJ0EnLCAweDUxLCBzdHJ1Y3Qgc25kX3hmZXJpKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1dSSVRFTl9GUkFNRVMJX0lPVygnQScsIDB4NTIsIHN0cnVjdCBzbmRfeGZlcm4pCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfUkVBRE5fRlJBTUVTCV9JT1IoJ0EnLCAweDUzLCBzdHJ1Y3Qgc25kX3hmZXJuKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0xJTksJCV9JT1coJ0EnLCAweDYwLCBpbnQpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfVU5MSU5LCQlfSU8oJ0EnLCAweDYxKQorLQorLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JREkgdjEuMCBpbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy0vKgorLSAqICBSYXcgTUlESSBzZWN0aW9uIC0gL2Rldi9zbmQvbWlkaT8/CistICovCistCistI2RlZmluZSBTTkRSVl9SQVdNSURJX1ZFUlNJT04JCVNORFJWX1BST1RPQ09MX1ZFUlNJT04oMiwgMCwgMCkKKy0KKy1lbnVtIHsKKy0JU05EUlZfUkFXTUlESV9TVFJFQU1fT1VUUFVUID0gMCwKKy0JU05EUlZfUkFXTUlESV9TVFJFQU1fSU5QVVQsCistCVNORFJWX1JBV01JRElfU1RSRUFNX0xBU1QgPSBTTkRSVl9SQVdNSURJX1NUUkVBTV9JTlBVVCwKKy19OworLQorLSNkZWZpbmUgU05EUlZfUkFXTUlESV9JTkZPX09VVFBVVAkJMHgwMDAwMDAwMQorLSNkZWZpbmUgU05EUlZfUkFXTUlESV9JTkZPX0lOUFVUCQkweDAwMDAwMDAyCistI2RlZmluZSBTTkRSVl9SQVdNSURJX0lORk9fRFVQTEVYCQkweDAwMDAwMDA0CistCistc3RydWN0IHNuZF9yYXdtaWRpX2luZm8geworLQl1bnNpZ25lZCBpbnQgZGV2aWNlOwkJLyogUk8vV1IgKGNvbnRyb2wpOiBkZXZpY2UgbnVtYmVyICovCistCXVuc2lnbmVkIGludCBzdWJkZXZpY2U7CQkvKiBSTy9XUiAoY29udHJvbCk6IHN1YmRldmljZSBudW1iZXIgKi8KKy0JaW50IHN0cmVhbTsJCQkvKiBXUjogc3RyZWFtICovCistCWludCBjYXJkOwkJCS8qIFI6IGNhcmQgbnVtYmVyICovCistCXVuc2lnbmVkIGludCBmbGFnczsJCS8qIFNORFJWX1JBV01JRElfSU5GT19YWFhYICovCistCXVuc2lnbmVkIGNoYXIgaWRbNjRdOwkJLyogSUQgKHVzZXIgc2VsZWN0YWJsZSkgKi8KKy0JdW5zaWduZWQgY2hhciBuYW1lWzgwXTsJCS8qIG5hbWUgb2YgZGV2aWNlICovCistCXVuc2lnbmVkIGNoYXIgc3VibmFtZVszMl07CS8qIG5hbWUgb2YgYWN0aXZlIG9yIHNlbGVjdGVkIHN1YmRldmljZSAqLworLQl1bnNpZ25lZCBpbnQgc3ViZGV2aWNlc19jb3VudDsKKy0JdW5zaWduZWQgaW50IHN1YmRldmljZXNfYXZhaWw7CistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAqLworLX07CistCistc3RydWN0IHNuZF9yYXdtaWRpX3BhcmFtcyB7CistCWludCBzdHJlYW07CistCXNpemVfdCBidWZmZXJfc2l6ZTsJCS8qIHF1ZXVlIHNpemUgaW4gYnl0ZXMgKi8KKy0Jc2l6ZV90IGF2YWlsX21pbjsJCS8qIG1pbmltdW0gYXZhaWwgYnl0ZXMgZm9yIHdha2V1cCAqLworLQl1bnNpZ25lZCBpbnQgbm9fYWN0aXZlX3NlbnNpbmc6IDE7IC8qIGRvIG5vdCBzZW5kIGFjdGl2ZSBzZW5zaW5nIGJ5dGUgaW4gY2xvc2UoKSAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzE2XTsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KKy19OworLQorLXN0cnVjdCBzbmRfcmF3bWlkaV9zdGF0dXMgeworLQlpbnQgc3RyZWFtOworLQlzdHJ1Y3QgdGltZXNwZWMgdHN0YW1wOwkJLyogVGltZXN0YW1wICovCistCXNpemVfdCBhdmFpbDsJCQkvKiBhdmFpbGFibGUgYnl0ZXMgKi8KKy0Jc2l6ZV90IHhydW5zOwkJCS8qIGNvdW50IG9mIG92ZXJydW5zIHNpbmNlIGxhc3Qgc3RhdHVzIChpbiBieXRlcykgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFsxNl07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCistfTsKKy0KKy0jZGVmaW5lIFNORFJWX1JBV01JRElfSU9DVExfUFZFUlNJT04JX0lPUignVycsIDB4MDAsIGludCkKKy0jZGVmaW5lIFNORFJWX1JBV01JRElfSU9DVExfSU5GTwlfSU9SKCdXJywgMHgwMSwgc3RydWN0IHNuZF9yYXdtaWRpX2luZm8pCistI2RlZmluZSBTTkRSVl9SQVdNSURJX0lPQ1RMX1BBUkFNUwlfSU9XUignVycsIDB4MTAsIHN0cnVjdCBzbmRfcmF3bWlkaV9wYXJhbXMpCistI2RlZmluZSBTTkRSVl9SQVdNSURJX0lPQ1RMX1NUQVRVUwlfSU9XUignVycsIDB4MjAsIHN0cnVjdCBzbmRfcmF3bWlkaV9zdGF0dXMpCistI2RlZmluZSBTTkRSVl9SQVdNSURJX0lPQ1RMX0RST1AJX0lPVygnVycsIDB4MzAsIGludCkKKy0jZGVmaW5lIFNORFJWX1JBV01JRElfSU9DVExfRFJBSU4JX0lPVygnVycsIDB4MzEsIGludCkKKy0KKy0vKgorLSAqICBUaW1lciBzZWN0aW9uIC0gL2Rldi9zbmQvdGltZXIKKy0gKi8KKy0KKy0jZGVmaW5lIFNORFJWX1RJTUVSX1ZFUlNJT04JCVNORFJWX1BST1RPQ09MX1ZFUlNJT04oMiwgMCwgNikKKy0KKy1lbnVtIHsKKy0JU05EUlZfVElNRVJfQ0xBU1NfTk9ORSA9IC0xLAorLQlTTkRSVl9USU1FUl9DTEFTU19TTEFWRSA9IDAsCistCVNORFJWX1RJTUVSX0NMQVNTX0dMT0JBTCwKKy0JU05EUlZfVElNRVJfQ0xBU1NfQ0FSRCwKKy0JU05EUlZfVElNRVJfQ0xBU1NfUENNLAorLQlTTkRSVl9USU1FUl9DTEFTU19MQVNUID0gU05EUlZfVElNRVJfQ0xBU1NfUENNLAorLX07CistCistLyogc2xhdmUgdGltZXIgY2xhc3NlcyAqLworLWVudW0geworLQlTTkRSVl9USU1FUl9TQ0xBU1NfTk9ORSA9IDAsCistCVNORFJWX1RJTUVSX1NDTEFTU19BUFBMSUNBVElPTiwKKy0JU05EUlZfVElNRVJfU0NMQVNTX1NFUVVFTkNFUiwJCS8qIGFsaWFzICovCistCVNORFJWX1RJTUVSX1NDTEFTU19PU1NfU0VRVUVOQ0VSLAkvKiBhbGlhcyAqLworLQlTTkRSVl9USU1FUl9TQ0xBU1NfTEFTVCA9IFNORFJWX1RJTUVSX1NDTEFTU19PU1NfU0VRVUVOQ0VSLAorLX07CistCistLyogZ2xvYmFsIHRpbWVycyAoZGV2aWNlIG1lbWJlcikgKi8KKy0jZGVmaW5lIFNORFJWX1RJTUVSX0dMT0JBTF9TWVNURU0JMAorLSNkZWZpbmUgU05EUlZfVElNRVJfR0xPQkFMX1JUQwkJMQkvKiB1bnVzZWQgKi8KKy0jZGVmaW5lIFNORFJWX1RJTUVSX0dMT0JBTF9IUEVUCQkyCistI2RlZmluZSBTTkRSVl9USU1FUl9HTE9CQUxfSFJUSU1FUgkzCistCistLyogaW5mbyBmbGFncyAqLworLSNkZWZpbmUgU05EUlZfVElNRVJfRkxHX1NMQVZFCQkoMTw8MCkJLyogY2Fubm90IGJlIGNvbnRyb2xsZWQgKi8KKy0KKy1zdHJ1Y3Qgc25kX3RpbWVyX2lkIHsKKy0JaW50IGRldl9jbGFzczsKKy0JaW50IGRldl9zY2xhc3M7CistCWludCBjYXJkOworLQlpbnQgZGV2aWNlOworLQlpbnQgc3ViZGV2aWNlOworLX07CistCistc3RydWN0IHNuZF90aW1lcl9naW5mbyB7CistCXN0cnVjdCBzbmRfdGltZXJfaWQgdGlkOwkvKiByZXF1ZXN0ZWQgdGltZXIgSUQgKi8KKy0JdW5zaWduZWQgaW50IGZsYWdzOwkJLyogdGltZXIgZmxhZ3MgLSBTTkRSVl9USU1FUl9GTEdfKiAqLworLQlpbnQgY2FyZDsJCQkvKiBjYXJkIG51bWJlciAqLworLQl1bnNpZ25lZCBjaGFyIGlkWzY0XTsJCS8qIHRpbWVyIGlkZW50aWZpY2F0aW9uICovCistCXVuc2lnbmVkIGNoYXIgbmFtZVs4MF07CQkvKiB0aW1lciBuYW1lICovCistCXVuc2lnbmVkIGxvbmcgcmVzZXJ2ZWQwOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAqLworLQl1bnNpZ25lZCBsb25nIHJlc29sdXRpb247CS8qIGF2ZXJhZ2UgcGVyaW9kIHJlc29sdXRpb24gaW4gbnMgKi8KKy0JdW5zaWduZWQgbG9uZyByZXNvbHV0aW9uX21pbjsJLyogbWluaW1hbCBwZXJpb2QgcmVzb2x1dGlvbiBpbiBucyAqLworLQl1bnNpZ25lZCBsb25nIHJlc29sdXRpb25fbWF4OwkvKiBtYXhpbWFsIHBlcmlvZCByZXNvbHV0aW9uIGluIG5zICovCistCXVuc2lnbmVkIGludCBjbGllbnRzOwkJLyogYWN0aXZlIHRpbWVyIGNsaWVudHMgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFszMl07CistfTsKKy0KKy1zdHJ1Y3Qgc25kX3RpbWVyX2dwYXJhbXMgeworLQlzdHJ1Y3Qgc25kX3RpbWVyX2lkIHRpZDsJLyogcmVxdWVzdGVkIHRpbWVyIElEICovCistCXVuc2lnbmVkIGxvbmcgcGVyaW9kX251bTsJLyogcmVxdWVzdGVkIHByZWNpc2UgcGVyaW9kIGR1cmF0aW9uIChpbiBzZWNvbmRzKSAtIG51bWVyYXRvciAqLworLQl1bnNpZ25lZCBsb25nIHBlcmlvZF9kZW47CS8qIHJlcXVlc3RlZCBwcmVjaXNlIHBlcmlvZCBkdXJhdGlvbiAoaW4gc2Vjb25kcykgLSBkZW5vbWluYXRvciAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzMyXTsKKy19OworLQorLXN0cnVjdCBzbmRfdGltZXJfZ3N0YXR1cyB7CistCXN0cnVjdCBzbmRfdGltZXJfaWQgdGlkOwkvKiByZXF1ZXN0ZWQgdGltZXIgSUQgKi8KKy0JdW5zaWduZWQgbG9uZyByZXNvbHV0aW9uOwkvKiBjdXJyZW50IHBlcmlvZCByZXNvbHV0aW9uIGluIG5zICovCistCXVuc2lnbmVkIGxvbmcgcmVzb2x1dGlvbl9udW07CS8qIHByZWNpc2UgY3VycmVudCBwZXJpb2QgcmVzb2x1dGlvbiAoaW4gc2Vjb25kcykgLSBudW1lcmF0b3IgKi8KKy0JdW5zaWduZWQgbG9uZyByZXNvbHV0aW9uX2RlbjsJLyogcHJlY2lzZSBjdXJyZW50IHBlcmlvZCByZXNvbHV0aW9uIChpbiBzZWNvbmRzKSAtIGRlbm9taW5hdG9yICovCistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMzJdOworLX07CistCistc3RydWN0IHNuZF90aW1lcl9zZWxlY3QgeworLQlzdHJ1Y3Qgc25kX3RpbWVyX2lkIGlkOwkvKiBiaW5kIHRvIHRpbWVyIElEICovCistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMzJdOwkvKiByZXNlcnZlZCAqLworLX07CistCistc3RydWN0IHNuZF90aW1lcl9pbmZvIHsKKy0JdW5zaWduZWQgaW50IGZsYWdzOwkJLyogdGltZXIgZmxhZ3MgLSBTTkRSVl9USU1FUl9GTEdfKiAqLworLQlpbnQgY2FyZDsJCQkvKiBjYXJkIG51bWJlciAqLworLQl1bnNpZ25lZCBjaGFyIGlkWzY0XTsJCS8qIHRpbWVyIGlkZW50aWZpY2F0b3IgKi8KKy0JdW5zaWduZWQgY2hhciBuYW1lWzgwXTsJCS8qIHRpbWVyIG5hbWUgKi8KKy0JdW5zaWduZWQgbG9uZyByZXNlcnZlZDA7CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCistCXVuc2lnbmVkIGxvbmcgcmVzb2x1dGlvbjsJLyogYXZlcmFnZSBwZXJpb2QgcmVzb2x1dGlvbiBpbiBucyAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0XTsJLyogcmVzZXJ2ZWQgKi8KKy19OworLQorLSNkZWZpbmUgU05EUlZfVElNRVJfUFNGTEdfQVVUTwkJKDE8PDApCS8qIGF1dG8gc3RhcnQsIG90aGVyd2lzZSBvbmUtc2hvdCAqLworLSNkZWZpbmUgU05EUlZfVElNRVJfUFNGTEdfRVhDTFVTSVZFCSgxPDwxKQkvKiBleGNsdXNpdmUgdXNlLCBwcmVjaXNlIHN0YXJ0L3N0b3AvcGF1c2UvY29udGludWUgKi8KKy0jZGVmaW5lIFNORFJWX1RJTUVSX1BTRkxHX0VBUkxZX0VWRU5UCSgxPDwyKQkvKiB3cml0ZSBlYXJseSBldmVudCB0byB0aGUgcG9sbCBxdWV1ZSAqLworLQorLXN0cnVjdCBzbmRfdGltZXJfcGFyYW1zIHsKKy0JdW5zaWduZWQgaW50IGZsYWdzOwkJLyogZmxhZ3MgLSBTTkRSVl9USU1FUl9QU0ZMR18qICovCistCXVuc2lnbmVkIGludCB0aWNrczsJCS8qIHJlcXVlc3RlZCByZXNvbHV0aW9uIGluIHRpY2tzICovCistCXVuc2lnbmVkIGludCBxdWV1ZV9zaXplOwkvKiB0b3RhbCBzaXplIG9mIHF1ZXVlICgzMi0xMDI0KSAqLworLQl1bnNpZ25lZCBpbnQgcmVzZXJ2ZWQwOwkJLyogcmVzZXJ2ZWQsIHdhczogZmFpbHVyZSBsb2NhdGlvbnMgKi8KKy0JdW5zaWduZWQgaW50IGZpbHRlcjsJCS8qIGV2ZW50IGZpbHRlciAoYml0bWFzayBvZiBTTkRSVl9USU1FUl9FVkVOVF8qKSAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzYwXTsJLyogcmVzZXJ2ZWQgKi8KKy19OworLQorLXN0cnVjdCBzbmRfdGltZXJfc3RhdHVzIHsKKy0Jc3RydWN0IHRpbWVzcGVjIHRzdGFtcDsJCS8qIFRpbWVzdGFtcCAtIGxhc3QgdXBkYXRlICovCistCXVuc2lnbmVkIGludCByZXNvbHV0aW9uOwkvKiBjdXJyZW50IHBlcmlvZCByZXNvbHV0aW9uIGluIG5zICovCistCXVuc2lnbmVkIGludCBsb3N0OwkJLyogY291bnRlciBvZiBtYXN0ZXIgdGljayBsb3N0ICovCistCXVuc2lnbmVkIGludCBvdmVycnVuOwkJLyogY291bnQgb2YgcmVhZCBxdWV1ZSBvdmVycnVucyAqLworLQl1bnNpZ25lZCBpbnQgcXVldWU7CQkvKiB1c2VkIHF1ZXVlIHNpemUgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CS8qIHJlc2VydmVkICovCistfTsKKy0KKy0jZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1BWRVJTSU9OCV9JT1IoJ1QnLCAweDAwLCBpbnQpCistI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9ORVhUX0RFVklDRQlfSU9XUignVCcsIDB4MDEsIHN0cnVjdCBzbmRfdGltZXJfaWQpCistI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9UUkVBRAkJX0lPVygnVCcsIDB4MDIsIGludCkKKy0jZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX0dJTkZPCQlfSU9XUignVCcsIDB4MDMsIHN0cnVjdCBzbmRfdGltZXJfZ2luZm8pCistI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9HUEFSQU1TCV9JT1coJ1QnLCAweDA0LCBzdHJ1Y3Qgc25kX3RpbWVyX2dwYXJhbXMpCistI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9HU1RBVFVTCV9JT1dSKCdUJywgMHgwNSwgc3RydWN0IHNuZF90aW1lcl9nc3RhdHVzKQorLSNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfU0VMRUNUCV9JT1coJ1QnLCAweDEwLCBzdHJ1Y3Qgc25kX3RpbWVyX3NlbGVjdCkKKy0jZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX0lORk8JCV9JT1IoJ1QnLCAweDExLCBzdHJ1Y3Qgc25kX3RpbWVyX2luZm8pCistI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9QQVJBTVMJX0lPVygnVCcsIDB4MTIsIHN0cnVjdCBzbmRfdGltZXJfcGFyYW1zKQorLSNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfU1RBVFVTCV9JT1IoJ1QnLCAweDE0LCBzdHJ1Y3Qgc25kX3RpbWVyX3N0YXR1cykKKy0vKiBUaGUgZm9sbG93aW5nIGZvdXIgaW9jdGxzIGFyZSBjaGFuZ2VkIHNpbmNlIDEuMC45IGR1ZSB0byBjb25mbGljdGlvbiAqLworLSNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfU1RBUlQJCV9JTygnVCcsIDB4YTApCistI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9TVE9QCQlfSU8oJ1QnLCAweGExKQorLSNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfQ09OVElOVUUJX0lPKCdUJywgMHhhMikKKy0jZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1BBVVNFCQlfSU8oJ1QnLCAweGEzKQorLQorLXN0cnVjdCBzbmRfdGltZXJfcmVhZCB7CistCXVuc2lnbmVkIGludCByZXNvbHV0aW9uOworLQl1bnNpZ25lZCBpbnQgdGlja3M7CistfTsKKy0KKy1lbnVtIHsKKy0JU05EUlZfVElNRVJfRVZFTlRfUkVTT0xVVElPTiA9IDAsCS8qIHZhbCA9IHJlc29sdXRpb24gaW4gbnMgKi8KKy0JU05EUlZfVElNRVJfRVZFTlRfVElDSywJCQkvKiB2YWwgPSB0aWNrcyAqLworLQlTTkRSVl9USU1FUl9FVkVOVF9TVEFSVCwJCS8qIHZhbCA9IHJlc29sdXRpb24gaW4gbnMgKi8KKy0JU05EUlZfVElNRVJfRVZFTlRfU1RPUCwJCQkvKiB2YWwgPSAwICovCistCVNORFJWX1RJTUVSX0VWRU5UX0NPTlRJTlVFLAkJLyogdmFsID0gcmVzb2x1dGlvbiBpbiBucyAqLworLQlTTkRSVl9USU1FUl9FVkVOVF9QQVVTRSwJCS8qIHZhbCA9IDAgKi8KKy0JU05EUlZfVElNRVJfRVZFTlRfRUFSTFksCQkvKiB2YWwgPSAwLCBlYXJseSBldmVudCAqLworLQlTTkRSVl9USU1FUl9FVkVOVF9TVVNQRU5ELAkJLyogdmFsID0gMCAqLworLQlTTkRSVl9USU1FUl9FVkVOVF9SRVNVTUUsCQkvKiB2YWwgPSByZXNvbHV0aW9uIGluIG5zICovCistCS8qIG1hc3RlciB0aW1lciBldmVudHMgZm9yIHNsYXZlIHRpbWVyIGluc3RhbmNlcyAqLworLQlTTkRSVl9USU1FUl9FVkVOVF9NU1RBUlQgPSBTTkRSVl9USU1FUl9FVkVOVF9TVEFSVCArIDEwLAorLQlTTkRSVl9USU1FUl9FVkVOVF9NU1RPUCA9IFNORFJWX1RJTUVSX0VWRU5UX1NUT1AgKyAxMCwKKy0JU05EUlZfVElNRVJfRVZFTlRfTUNPTlRJTlVFID0gU05EUlZfVElNRVJfRVZFTlRfQ09OVElOVUUgKyAxMCwKKy0JU05EUlZfVElNRVJfRVZFTlRfTVBBVVNFID0gU05EUlZfVElNRVJfRVZFTlRfUEFVU0UgKyAxMCwKKy0JU05EUlZfVElNRVJfRVZFTlRfTVNVU1BFTkQgPSBTTkRSVl9USU1FUl9FVkVOVF9TVVNQRU5EICsgMTAsCistCVNORFJWX1RJTUVSX0VWRU5UX01SRVNVTUUgPSBTTkRSVl9USU1FUl9FVkVOVF9SRVNVTUUgKyAxMCwKKy19OworLQorLXN0cnVjdCBzbmRfdGltZXJfdHJlYWQgeworLQlpbnQgZXZlbnQ7CistCXN0cnVjdCB0aW1lc3BlYyB0c3RhbXA7CistCXVuc2lnbmVkIGludCB2YWw7CistfTsKKy0KKy0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICogICAgICAgIFNlY3Rpb24gZm9yIGRyaXZlciBjb250cm9sIGludGVyZmFjZSAtIC9kZXYvc25kL2NvbnRyb2w/ICAgICAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLQorLSNkZWZpbmUgU05EUlZfQ1RMX1ZFUlNJT04JCVNORFJWX1BST1RPQ09MX1ZFUlNJT04oMiwgMCwgNykKKy0KKy1zdHJ1Y3Qgc25kX2N0bF9jYXJkX2luZm8geworLQlpbnQgY2FyZDsJCQkvKiBjYXJkIG51bWJlciAqLworLQlpbnQgcGFkOwkJCS8qIHJlc2VydmVkIGZvciBmdXR1cmUgKHdhcyB0eXBlKSAqLworLQl1bnNpZ25lZCBjaGFyIGlkWzE2XTsJCS8qIElEIG9mIGNhcmQgKHVzZXIgc2VsZWN0YWJsZSkgKi8KKy0JdW5zaWduZWQgY2hhciBkcml2ZXJbMTZdOwkvKiBEcml2ZXIgbmFtZSAqLworLQl1bnNpZ25lZCBjaGFyIG5hbWVbMzJdOwkJLyogU2hvcnQgbmFtZSBvZiBzb3VuZGNhcmQgKi8KKy0JdW5zaWduZWQgY2hhciBsb25nbmFtZVs4MF07CS8qIG5hbWUgKyBpbmZvIHRleHQgYWJvdXQgc291bmRjYXJkICovCistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRfWzE2XTsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSAod2FzIElEIG9mIG1peGVyKSAqLworLQl1bnNpZ25lZCBjaGFyIG1peGVybmFtZVs4MF07CS8qIHZpc3VhbCBtaXhlciBpZGVudGlmaWNhdGlvbiAqLworLQl1bnNpZ25lZCBjaGFyIGNvbXBvbmVudHNbMTI4XTsJLyogY2FyZCBjb21wb25lbnRzIC8gZmluZSBpZGVudGlmaWNhdGlvbiwgZGVsaW1pdGVkIHdpdGggb25lIHNwYWNlIChBQzk3IGV0Yy4uKSAqLworLX07CistCistdHlwZWRlZiBpbnQgX19iaXR3aXNlIHNuZF9jdGxfZWxlbV90eXBlX3Q7CistI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX05PTkUJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV90eXBlX3QpIDApIC8qIGludmFsaWQgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX1RZUEVfQk9PTEVBTgkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX3R5cGVfdCkgMSkgLyogYm9vbGVhbiB0eXBlICovCistI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0lOVEVHRVIJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV90eXBlX3QpIDIpIC8qIGludGVnZXIgdHlwZSAqLworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9FTlVNRVJBVEVECSgoX19mb3JjZSBzbmRfY3RsX2VsZW1fdHlwZV90KSAzKSAvKiBlbnVtZXJhdGVkIHR5cGUgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX1RZUEVfQllURVMJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV90eXBlX3QpIDQpIC8qIGJ5dGUgYXJyYXkgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX1RZUEVfSUVDOTU4CSgoX19mb3JjZSBzbmRfY3RsX2VsZW1fdHlwZV90KSA1KSAvKiBJRUM5NTggKFMvUERJRikgc2V0dXAgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX1RZUEVfSU5URUdFUjY0CSgoX19mb3JjZSBzbmRfY3RsX2VsZW1fdHlwZV90KSA2KSAvKiA2NC1iaXQgaW50ZWdlciB0eXBlICovCistI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0xBU1QJU05EUlZfQ1RMX0VMRU1fVFlQRV9JTlRFR0VSNjQKKy0KKy10eXBlZGVmIGludCBfX2JpdHdpc2Ugc25kX2N0bF9lbGVtX2lmYWNlX3Q7CistI2RlZmluZQlTTkRSVl9DVExfRUxFTV9JRkFDRV9DQVJECSgoX19mb3JjZSBzbmRfY3RsX2VsZW1faWZhY2VfdCkgMCkgLyogZ2xvYmFsIGNvbnRyb2wgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX0hXREVQCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1faWZhY2VfdCkgMSkgLyogaGFyZHdhcmUgZGVwZW5kZW50IGRldmljZSAqLworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfTUlYRVIJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV9pZmFjZV90KSAyKSAvKiB2aXJ0dWFsIG1peGVyIGRldmljZSAqLworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfUENNCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1faWZhY2VfdCkgMykgLyogUENNIGRldmljZSAqLworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfUkFXTUlESQkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDQpIC8qIFJhd01pZGkgZGV2aWNlICovCistI2RlZmluZQlTTkRSVl9DVExfRUxFTV9JRkFDRV9USU1FUgkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDUpIC8qIHRpbWVyIGRldmljZSAqLworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfU0VRVUVOQ0VSCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1faWZhY2VfdCkgNikgLyogc2VxdWVuY2VyIGNsaWVudCAqLworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfTEFTVAlTTkRSVl9DVExfRUxFTV9JRkFDRV9TRVFVRU5DRVIKKy0KKy0jZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19SRUFECQkoMTw8MCkKKy0jZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19XUklURQkJKDE8PDEpCistI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfUkVBRFdSSVRFCQkoU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1JFQUR8U05EUlZfQ1RMX0VMRU1fQUNDRVNTX1dSSVRFKQorLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1ZPTEFUSUxFCQkoMTw8MikJLyogY29udHJvbCB2YWx1ZSBtYXkgYmUgY2hhbmdlZCB3aXRob3V0IGEgbm90aWZpY2F0aW9uICovCistI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVElNRVNUQU1QCQkoMTw8MykJLyogd2hlbiB3YXMgY29udHJvbCBjaGFuZ2VkICovCistI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVExWX1JFQUQJCSgxPDw0KQkvKiBUTFYgcmVhZCBpcyBwb3NzaWJsZSAqLworLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RMVl9XUklURQkJKDE8PDUpCS8qIFRMViB3cml0ZSBpcyBwb3NzaWJsZSAqLworLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RMVl9SRUFEV1JJVEUJKFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfUkVBRHxTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVExWX1dSSVRFKQorLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RMVl9DT01NQU5ECSgxPDw2KQkvKiBUTFYgY29tbWFuZCBpcyBwb3NzaWJsZSAqLworLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX0lOQUNUSVZFCQkoMTw8OCkJLyogY29udHJvbCBkb2VzIGFjdHVhbGx5IG5vdGhpbmcsIGJ1dCBtYXkgYmUgdXBkYXRlZCAqLworLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX0xPQ0sJCSgxPDw5KQkvKiB3cml0ZSBsb2NrICovCistI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfT1dORVIJCSgxPDwxMCkJLyogd3JpdGUgbG9jayBvd25lciAqLworLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RMVl9DQUxMQkFDSwkoMTw8MjgpCS8qIGtlcm5lbCB1c2UgYSBUTFYgY2FsbGJhY2sgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19VU0VSCQkoMTw8MjkpIC8qIHVzZXIgc3BhY2UgZWxlbWVudCAqLworLS8qIGJpdHMgMzAgYW5kIDMxIGFyZSBvYnNvbGV0ZWQgKGZvciBpbmRpcmVjdCBhY2Nlc3MpICovCistCistLyogZm9yIGZ1cnRoZXIgZGV0YWlscyBzZWUgdGhlIEFDUEkgYW5kIFBDSSBwb3dlciBtYW5hZ2VtZW50IHNwZWNpZmljYXRpb24gKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9QT1dFUl9EMAkJMHgwMDAwCS8qIGZ1bGwgT24gKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9QT1dFUl9EMQkJMHgwMTAwCS8qIHBhcnRpYWwgT24gKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9QT1dFUl9EMgkJMHgwMjAwCS8qIHBhcnRpYWwgT24gKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9QT1dFUl9EMwkJMHgwMzAwCS8qIE9mZiAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1BPV0VSX0QzaG90CQkoU05EUlZfQ1RMX1BPV0VSX0QzfDB4MDAwMCkJLyogT2ZmLCB3aXRoIHBvd2VyICovCistI2RlZmluZSBTTkRSVl9DVExfUE9XRVJfRDNjb2xkCQkoU05EUlZfQ1RMX1BPV0VSX0QzfDB4MDAwMSkJLyogT2ZmLCB3aXRob3V0IHBvd2VyICovCistCistI2RlZmluZSBTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTgk0NAorLQorLXN0cnVjdCBzbmRfY3RsX2VsZW1faWQgeworLQl1bnNpZ25lZCBpbnQgbnVtaWQ7CQkvKiBudW1lcmljIGlkZW50aWZpZXIsIHplcm8gPSBpbnZhbGlkICovCistCXNuZF9jdGxfZWxlbV9pZmFjZV90IGlmYWNlOwkvKiBpbnRlcmZhY2UgaWRlbnRpZmllciAqLworLQl1bnNpZ25lZCBpbnQgZGV2aWNlOwkJLyogZGV2aWNlL2NsaWVudCBudW1iZXIgKi8KKy0JdW5zaWduZWQgaW50IHN1YmRldmljZTsJCS8qIHN1YmRldmljZSAoc3Vic3RyZWFtKSBudW1iZXIgKi8KKy0JdW5zaWduZWQgY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsJCS8qIEFTQ0lJIG5hbWUgb2YgaXRlbSAqLworLQl1bnNpZ25lZCBpbnQgaW5kZXg7CQkvKiBpbmRleCBvZiBpdGVtICovCistfTsKKy0KKy1zdHJ1Y3Qgc25kX2N0bF9lbGVtX2xpc3QgeworLQl1bnNpZ25lZCBpbnQgb2Zmc2V0OwkJLyogVzogZmlyc3QgZWxlbWVudCBJRCB0byBnZXQgKi8KKy0JdW5zaWduZWQgaW50IHNwYWNlOwkJLyogVzogY291bnQgb2YgZWxlbWVudCBJRHMgdG8gZ2V0ICovCistCXVuc2lnbmVkIGludCB1c2VkOwkJLyogUjogY291bnQgb2YgZWxlbWVudCBJRHMgc2V0ICovCistCXVuc2lnbmVkIGludCBjb3VudDsJCS8qIFI6IGNvdW50IG9mIGFsbCBlbGVtZW50cyAqLworLQlzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkIF9fdXNlciAqcGlkczsgLyogUjogSURzICovCistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNTBdOworLX07CistCistc3RydWN0IHNuZF9jdGxfZWxlbV9pbmZvIHsKKy0Jc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBpZDsJLyogVzogZWxlbWVudCBJRCAqLworLQlzbmRfY3RsX2VsZW1fdHlwZV90IHR5cGU7CS8qIFI6IHZhbHVlIHR5cGUgLSBTTkRSVl9DVExfRUxFTV9UWVBFXyogKi8KKy0JdW5zaWduZWQgaW50IGFjY2VzczsJCS8qIFI6IHZhbHVlIGFjY2VzcyAoYml0bWFzaykgLSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfKiAqLworLQl1bnNpZ25lZCBpbnQgY291bnQ7CQkvKiBjb3VudCBvZiB2YWx1ZXMgKi8KKy0JX19rZXJuZWxfcGlkX3Qgb3duZXI7CQkvKiBvd25lcidzIFBJRCBvZiB0aGlzIGNvbnRyb2wgKi8KKy0JdW5pb24geworLQkJc3RydWN0IHsKKy0JCQlsb25nIG1pbjsJCS8qIFI6IG1pbmltdW0gdmFsdWUgKi8KKy0JCQlsb25nIG1heDsJCS8qIFI6IG1heGltdW0gdmFsdWUgKi8KKy0JCQlsb25nIHN0ZXA7CQkvKiBSOiBzdGVwICgwIHZhcmlhYmxlKSAqLworLQkJfSBpbnRlZ2VyOworLQkJc3RydWN0IHsKKy0JCQlsb25nIGxvbmcgbWluOwkJLyogUjogbWluaW11bSB2YWx1ZSAqLworLQkJCWxvbmcgbG9uZyBtYXg7CQkvKiBSOiBtYXhpbXVtIHZhbHVlICovCistCQkJbG9uZyBsb25nIHN0ZXA7CQkvKiBSOiBzdGVwICgwIHZhcmlhYmxlKSAqLworLQkJfSBpbnRlZ2VyNjQ7CistCQlzdHJ1Y3QgeworLQkJCXVuc2lnbmVkIGludCBpdGVtczsJLyogUjogbnVtYmVyIG9mIGl0ZW1zICovCistCQkJdW5zaWduZWQgaW50IGl0ZW07CS8qIFc6IGl0ZW0gbnVtYmVyICovCistCQkJY2hhciBuYW1lWzY0XTsJCS8qIFI6IHZhbHVlIG5hbWUgKi8KKy0JCQlfX3U2NCBuYW1lc19wdHI7CS8qIFc6IG5hbWVzIGxpc3QgKEVMRU1fQUREIG9ubHkpICovCistCQkJdW5zaWduZWQgaW50IG5hbWVzX2xlbmd0aDsKKy0JCX0gZW51bWVyYXRlZDsKKy0JCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMTI4XTsKKy0JfSB2YWx1ZTsKKy0JdW5pb24geworLQkJdW5zaWduZWQgc2hvcnQgZFs0XTsJCS8qIGRpbWVuc2lvbnMgKi8KKy0JCXVuc2lnbmVkIHNob3J0ICpkX3B0cjsJCS8qIGluZGlyZWN0IC0gb2Jzb2xldGVkICovCistCX0gZGltZW47CistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjQtNCpzaXplb2YodW5zaWduZWQgc2hvcnQpXTsKKy19OworLQorLXN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgeworLQlzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkIGlkOwkvKiBXOiBlbGVtZW50IElEICovCistCXVuc2lnbmVkIGludCBpbmRpcmVjdDogMTsJLyogVzogaW5kaXJlY3QgYWNjZXNzIC0gb2Jzb2xldGVkICovCistCXVuaW9uIHsKKy0JCXVuaW9uIHsKKy0JCQlsb25nIHZhbHVlWzEyOF07CistCQkJbG9uZyAqdmFsdWVfcHRyOwkvKiBvYnNvbGV0ZWQgKi8KKy0JCX0gaW50ZWdlcjsKKy0JCXVuaW9uIHsKKy0JCQlsb25nIGxvbmcgdmFsdWVbNjRdOworLQkJCWxvbmcgbG9uZyAqdmFsdWVfcHRyOwkvKiBvYnNvbGV0ZWQgKi8KKy0JCX0gaW50ZWdlcjY0OworLQkJdW5pb24geworLQkJCXVuc2lnbmVkIGludCBpdGVtWzEyOF07CistCQkJdW5zaWduZWQgaW50ICppdGVtX3B0cjsJLyogb2Jzb2xldGVkICovCistCQl9IGVudW1lcmF0ZWQ7CistCQl1bmlvbiB7CistCQkJdW5zaWduZWQgY2hhciBkYXRhWzUxMl07CistCQkJdW5zaWduZWQgY2hhciAqZGF0YV9wdHI7CS8qIG9ic29sZXRlZCAqLworLQkJfSBieXRlczsKKy0JCXN0cnVjdCBzbmRfYWVzX2llYzk1OCBpZWM5NTg7CistCX0gdmFsdWU7CQkvKiBSTyAqLworLQlzdHJ1Y3QgdGltZXNwZWMgdHN0YW1wOworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzEyOC1zaXplb2Yoc3RydWN0IHRpbWVzcGVjKV07CistfTsKKy0KKy1zdHJ1Y3Qgc25kX2N0bF90bHYgeworLQl1bnNpZ25lZCBpbnQgbnVtaWQ7CS8qIGNvbnRyb2wgZWxlbWVudCBudW1lcmljIGlkZW50aWZpY2F0aW9uICovCistCXVuc2lnbmVkIGludCBsZW5ndGg7CS8qIGluIGJ5dGVzIGFsaWduZWQgdG8gNCAqLworLQl1bnNpZ25lZCBpbnQgdGx2WzBdOwkvKiBmaXJzdCBUTFYgKi8KKy19OworLQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1BWRVJTSU9OCV9JT1IoJ1UnLCAweDAwLCBpbnQpCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfQ0FSRF9JTkZPCV9JT1IoJ1UnLCAweDAxLCBzdHJ1Y3Qgc25kX2N0bF9jYXJkX2luZm8pCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9MSVNUCV9JT1dSKCdVJywgMHgxMCwgc3RydWN0IHNuZF9jdGxfZWxlbV9saXN0KQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0VMRU1fSU5GTwlfSU9XUignVScsIDB4MTEsIHN0cnVjdCBzbmRfY3RsX2VsZW1faW5mbykKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX1JFQUQJX0lPV1IoJ1UnLCAweDEyLCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlKQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0VMRU1fV1JJVEUJX0lPV1IoJ1UnLCAweDEzLCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlKQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0VMRU1fTE9DSwlfSU9XKCdVJywgMHgxNCwgc3RydWN0IHNuZF9jdGxfZWxlbV9pZCkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX1VOTE9DSwlfSU9XKCdVJywgMHgxNSwgc3RydWN0IHNuZF9jdGxfZWxlbV9pZCkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9TVUJTQ1JJQkVfRVZFTlRTIF9JT1dSKCdVJywgMHgxNiwgaW50KQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0VMRU1fQURECV9JT1dSKCdVJywgMHgxNywgc3RydWN0IHNuZF9jdGxfZWxlbV9pbmZvKQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0VMRU1fUkVQTEFDRQlfSU9XUignVScsIDB4MTgsIHN0cnVjdCBzbmRfY3RsX2VsZW1faW5mbykKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX1JFTU9WRQlfSU9XUignVScsIDB4MTksIHN0cnVjdCBzbmRfY3RsX2VsZW1faWQpCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfVExWX1JFQUQJX0lPV1IoJ1UnLCAweDFhLCBzdHJ1Y3Qgc25kX2N0bF90bHYpCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfVExWX1dSSVRFCV9JT1dSKCdVJywgMHgxYiwgc3RydWN0IHNuZF9jdGxfdGx2KQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1RMVl9DT01NQU5ECV9JT1dSKCdVJywgMHgxYywgc3RydWN0IHNuZF9jdGxfdGx2KQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0hXREVQX05FWFRfREVWSUNFIF9JT1dSKCdVJywgMHgyMCwgaW50KQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0hXREVQX0lORk8JX0lPUignVScsIDB4MjEsIHN0cnVjdCBzbmRfaHdkZXBfaW5mbykKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9QQ01fTkVYVF9ERVZJQ0UJX0lPUignVScsIDB4MzAsIGludCkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9QQ01fSU5GTwlfSU9XUignVScsIDB4MzEsIHN0cnVjdCBzbmRfcGNtX2luZm8pCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUENNX1BSRUZFUl9TVUJERVZJQ0UgX0lPVygnVScsIDB4MzIsIGludCkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9SQVdNSURJX05FWFRfREVWSUNFIF9JT1dSKCdVJywgMHg0MCwgaW50KQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1JBV01JRElfSU5GTwlfSU9XUignVScsIDB4NDEsIHN0cnVjdCBzbmRfcmF3bWlkaV9pbmZvKQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1JBV01JRElfUFJFRkVSX1NVQkRFVklDRSBfSU9XKCdVJywgMHg0MiwgaW50KQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1BPV0VSCQlfSU9XUignVScsIDB4ZDAsIGludCkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9QT1dFUl9TVEFURQlfSU9SKCdVJywgMHhkMSwgaW50KQorLQorLS8qCistICogIFJlYWQgaW50ZXJmYWNlLgorLSAqLworLQorLWVudW0gc25kcnZfY3RsX2V2ZW50X3R5cGUgeworLQlTTkRSVl9DVExfRVZFTlRfRUxFTSA9IDAsCistCVNORFJWX0NUTF9FVkVOVF9MQVNUID0gU05EUlZfQ1RMX0VWRU5UX0VMRU0sCistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0NUTF9FVkVOVF9NQVNLX1ZBTFVFCSgxPDwwKQkvKiBlbGVtZW50IHZhbHVlIHdhcyBjaGFuZ2VkICovCistI2RlZmluZSBTTkRSVl9DVExfRVZFTlRfTUFTS19JTkZPCSgxPDwxKQkvKiBlbGVtZW50IGluZm8gd2FzIGNoYW5nZWQgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9FVkVOVF9NQVNLX0FERAkoMTw8MikJLyogZWxlbWVudCB3YXMgYWRkZWQgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9FVkVOVF9NQVNLX1RMVgkoMTw8MykJLyogZWxlbWVudCBUTFYgdHJlZSB3YXMgY2hhbmdlZCAqLworLSNkZWZpbmUgU05EUlZfQ1RMX0VWRU5UX01BU0tfUkVNT1ZFCSh+MFUpCS8qIGVsZW1lbnQgd2FzIHJlbW92ZWQgKi8KKy0KKy1zdHJ1Y3Qgc25kX2N0bF9ldmVudCB7CistCWludCB0eXBlOwkvKiBldmVudCB0eXBlIC0gU05EUlZfQ1RMX0VWRU5UXyogKi8KKy0JdW5pb24geworLQkJc3RydWN0IHsKKy0JCQl1bnNpZ25lZCBpbnQgbWFzazsKKy0JCQlzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkIGlkOworLQkJfSBlbGVtOworLQkJdW5zaWduZWQgY2hhciBkYXRhOFs2MF07CistCX0gZGF0YTsKKy19OworLQorLS8qCistICogIENvbnRyb2wgbmFtZXMKKy0gKi8KKy0KKy0jZGVmaW5lIFNORFJWX0NUTF9OQU1FX05PTkUJCQkJIiIKKy0jZGVmaW5lIFNORFJWX0NUTF9OQU1FX1BMQVlCQUNLCQkJCSJQbGF5YmFjayAiCistI2RlZmluZSBTTkRSVl9DVExfTkFNRV9DQVBUVVJFCQkJCSJDYXB0dXJlICIKKy0KKy0jZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OF9OT05FCQkJIiIKKy0jZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OF9TV0lUQ0gJCQkiU3dpdGNoIgorLSNkZWZpbmUgU05EUlZfQ1RMX05BTUVfSUVDOTU4X1ZPTFVNRQkJCSJWb2x1bWUiCistI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfREVGQVVMVAkJCSJEZWZhdWx0IgorLSNkZWZpbmUgU05EUlZfQ1RMX05BTUVfSUVDOTU4X01BU0sJCQkiTWFzayIKKy0jZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OF9DT05fTUFTSwkJCSJDb24gTWFzayIKKy0jZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OF9QUk9fTUFTSwkJCSJQcm8gTWFzayIKKy0jZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OF9QQ01fU1RSRUFNCQkiUENNIFN0cmVhbSIKKy0jZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OChleHBsLGRpcmVjdGlvbix3aGF0KQkiSUVDOTU4ICIgZXhwbCBTTkRSVl9DVExfTkFNRV8jI2RpcmVjdGlvbiBTTkRSVl9DVExfTkFNRV9JRUM5NThfIyN3aGF0CistCistI2VuZGlmIC8qIF9VQVBJX19TT1VORF9BU09VTkRfSCAqLworKyNpbmNsdWRlIDxhbHNhL3NvdW5kL3VhcGkvYXNvdW5kLmg+CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9hc291bmRfZm0uaCBiL2luY2x1ZGUvc291bmQvYXNvdW5kX2ZtLmgKK2luZGV4IDg0NzFmNDA0Li4zZTVkYTRkMCAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvYXNvdW5kX2ZtLmgKKysrKyBiL2luY2x1ZGUvc291bmQvYXNvdW5kX2ZtLmgKK0BAIC0xLDEzNSArMSBAQAorLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKyBXSVRIIExpbnV4LXN5c2NhbGwtbm90ZSAqLworLSNpZm5kZWYgX19TT1VORF9BU09VTkRfRk1fSAorLSNkZWZpbmUgX19TT1VORF9BU09VTkRfRk1fSAorLQorLS8qCistICogIEFkdmFuY2VkIExpbnV4IFNvdW5kIEFyY2hpdGVjdHVyZSAtIEFMU0EKKy0gKgorLSAqICBJbnRlcmZhY2UgZmlsZSBiZXR3ZWVuIEFMU0EgZHJpdmVyICYgdXNlciBzcGFjZQorLSAqICBDb3B5cmlnaHQgKGMpIDE5OTQtOTggYnkgSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4sCistICogICAgICAgICAgICAgICAgICAgICAgICAgICA0RnJvbnQgVGVjaG5vbG9naWVzCistICoKKy0gKiAgRGlyZWN0IEZNIGNvbnRyb2wKKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorLSAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0gKgorLSAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gKiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistICogICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyBVU0EKKy0gKgorLSAqLworLQorLSNkZWZpbmUgU05EUlZfRE1fRk1fTU9ERV9PUEwyCTB4MDAKKy0jZGVmaW5lIFNORFJWX0RNX0ZNX01PREVfT1BMMwkweDAxCistCistc3RydWN0IHNuZF9kbV9mbV9pbmZvIHsKKy0JdW5zaWduZWQgY2hhciBmbV9tb2RlOwkJLyogT1BMIG1vZGUsIHNlZSBTTkRSVl9ETV9GTV9NT0RFX1hYWCAqLworLQl1bnNpZ25lZCBjaGFyIHJoeXRobTsJCS8qIHBlcmN1c3Npb24gbW9kZSBmbGFnICovCistfTsKKy0KKy0vKgorLSAqICBEYXRhIHN0cnVjdHVyZSBjb21wb3NpbmcgYW4gRk0gIm5vdGUiIG9yIHNvdW5kIGV2ZW50LgorLSAqLworLQorLXN0cnVjdCBzbmRfZG1fZm1fdm9pY2UgeworLQl1bnNpZ25lZCBjaGFyIG9wOwkJLyogb3BlcmF0b3IgY2VsbCAoMCBvciAxKSAqLworLQl1bnNpZ25lZCBjaGFyIHZvaWNlOwkJLyogRk0gdm9pY2UgKDAgdG8gMTcpICovCistCistCXVuc2lnbmVkIGNoYXIgYW07CQkvKiBhbXBsaXR1ZGUgbW9kdWxhdGlvbiAqLworLQl1bnNpZ25lZCBjaGFyIHZpYnJhdG87CQkvKiB2aWJyYXRvIGVmZmVjdCAqLworLQl1bnNpZ25lZCBjaGFyIGRvX3N1c3RhaW47CS8qIHN1c3RhaW4gcGhhc2UgKi8KKy0JdW5zaWduZWQgY2hhciBrYmRfc2NhbGU7CS8qIGtleWJvYXJkIHNjYWxpbmcgKi8KKy0JdW5zaWduZWQgY2hhciBoYXJtb25pYzsJCS8qIDQgYml0czogaGFybW9uaWMgYW5kIG11bHRpcGxpZXIgKi8KKy0JdW5zaWduZWQgY2hhciBzY2FsZV9sZXZlbDsJLyogMiBiaXRzOiBkZWNyZWFzZSBvdXRwdXQgZnJlcSByaXNlcyAqLworLQl1bnNpZ25lZCBjaGFyIHZvbHVtZTsJCS8qIDYgYml0czogdm9sdW1lICovCistCistCXVuc2lnbmVkIGNoYXIgYXR0YWNrOwkJLyogNCBiaXRzOiBhdHRhY2sgcmF0ZSAqLworLQl1bnNpZ25lZCBjaGFyIGRlY2F5OwkJLyogNCBiaXRzOiBkZWNheSByYXRlICovCistCXVuc2lnbmVkIGNoYXIgc3VzdGFpbjsJCS8qIDQgYml0czogc3VzdGFpbiBsZXZlbCAqLworLQl1bnNpZ25lZCBjaGFyIHJlbGVhc2U7CQkvKiA0IGJpdHM6IHJlbGVhc2UgcmF0ZSAqLworLQorLQl1bnNpZ25lZCBjaGFyIGZlZWRiYWNrOwkJLyogMyBiaXRzOiBmZWVkYmFjayBmb3Igb3AwICovCistCXVuc2lnbmVkIGNoYXIgY29ubmVjdGlvbjsJLyogMCBmb3Igc2VyaWFsLCAxIGZvciBwYXJhbGxlbCAqLworLQl1bnNpZ25lZCBjaGFyIGxlZnQ7CQkvKiBzdGVyZW8gbGVmdCAqLworLQl1bnNpZ25lZCBjaGFyIHJpZ2h0OwkJLyogc3RlcmVvIHJpZ2h0ICovCistCXVuc2lnbmVkIGNoYXIgd2F2ZWZvcm07CQkvKiAzIGJpdHM6IHdhdmVmb3JtIHNoYXBlICovCistfTsKKy0KKy0vKgorLSAqICBUaGlzIGRlc2NyaWJlcyBhbiBGTSBub3RlIGJ5IGl0cyB2b2ljZSwgb2N0YXZlLCBmcmVxdWVuY3kgbnVtYmVyICgxMGJpdCkKKy0gKiAgYW5kIGtleSBvbi9vZmYuCistICovCistCistc3RydWN0IHNuZF9kbV9mbV9ub3RlIHsKKy0JdW5zaWduZWQgY2hhciB2b2ljZTsJLyogMC0xNyB2b2ljZSBjaGFubmVsICovCistCXVuc2lnbmVkIGNoYXIgb2N0YXZlOwkvKiAzIGJpdHM6IHdoYXQgb2N0YXZlIHRvIHBsYXkgKi8KKy0JdW5zaWduZWQgaW50IGZudW07CS8qIDEwIGJpdHM6IGZyZXF1ZW5jeSBudW1iZXIgKi8KKy0JdW5zaWduZWQgY2hhciBrZXlfb247CS8qIHNldCBmb3IgYWN0aXZlLCBjbGVhciBmb3Igc2lsZW50ICovCistfTsKKy0KKy0vKgorLSAqICBGTSBwYXJhbWV0ZXJzIHRoYXQgYXBwbHkgZ2xvYmFsbHkgdG8gYWxsIHZvaWNlcywgYW5kIHRodXMgYXJlIG5vdCAibm90ZXMiCistICovCistCistc3RydWN0IHNuZF9kbV9mbV9wYXJhbXMgeworLQl1bnNpZ25lZCBjaGFyIGFtX2RlcHRoOwkJLyogYW1wbGl0dWRlIG1vZHVsYXRpb24gZGVwdGggKDE9aGkpICovCistCXVuc2lnbmVkIGNoYXIgdmliX2RlcHRoOwkvKiB2aWJyYXRvIGRlcHRoICgxPWhpKSAqLworLQl1bnNpZ25lZCBjaGFyIGtiZF9zcGxpdDsJLyoga2V5Ym9hcmQgc3BsaXQgKi8KKy0JdW5zaWduZWQgY2hhciByaHl0aG07CQkvKiBwZXJjdXNzaW9uIG1vZGUgc2VsZWN0ICovCistCistCS8qIFRoaXMgYmxvY2sgaXMgdGhlIHBlcmN1c3Npb24gaW5zdHJ1bWVudCBkYXRhICovCistCXVuc2lnbmVkIGNoYXIgYmFzczsKKy0JdW5zaWduZWQgY2hhciBzbmFyZTsKKy0JdW5zaWduZWQgY2hhciB0b210b207CistCXVuc2lnbmVkIGNoYXIgY3ltYmFsOworLQl1bnNpZ25lZCBjaGFyIGhpaGF0OworLX07CistCistLyoKKy0gKiAgRk0gbW9kZSBpb2N0bCBzZXR0aW5ncworLSAqLworLQorLSNkZWZpbmUgU05EUlZfRE1fRk1fSU9DVExfSU5GTwkJX0lPUignSCcsIDB4MjAsIHN0cnVjdCBzbmRfZG1fZm1faW5mbykKKy0jZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX1JFU0VUCQlfSU8gKCdIJywgMHgyMSkKKy0jZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX1BMQVlfTk9URQlfSU9XKCdIJywgMHgyMiwgc3RydWN0IHNuZF9kbV9mbV9ub3RlKQorLSNkZWZpbmUgU05EUlZfRE1fRk1fSU9DVExfU0VUX1ZPSUNFCV9JT1coJ0gnLCAweDIzLCBzdHJ1Y3Qgc25kX2RtX2ZtX3ZvaWNlKQorLSNkZWZpbmUgU05EUlZfRE1fRk1fSU9DVExfU0VUX1BBUkFNUwlfSU9XKCdIJywgMHgyNCwgc3RydWN0IHNuZF9kbV9mbV9wYXJhbXMpCistI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9TRVRfTU9ERQlfSU9XKCdIJywgMHgyNSwgaW50KQorLS8qIGZvciBPUEwzIG9ubHkgKi8KKy0jZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX1NFVF9DT05ORUNUSU9OCV9JT1coJ0gnLCAweDI2LCBpbnQpCistLyogU0JJIHBhdGNoIG1hbmFnZW1lbnQgKi8KKy0jZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX0NMRUFSX1BBVENIRVMJX0lPICgnSCcsIDB4NDApCistCistI2RlZmluZSBTTkRSVl9ETV9GTV9PU1NfSU9DVExfUkVTRVQJCTB4MjAKKy0jZGVmaW5lIFNORFJWX0RNX0ZNX09TU19JT0NUTF9QTEFZX05PVEUJCTB4MjEKKy0jZGVmaW5lIFNORFJWX0RNX0ZNX09TU19JT0NUTF9TRVRfVk9JQ0UJCTB4MjIKKy0jZGVmaW5lIFNORFJWX0RNX0ZNX09TU19JT0NUTF9TRVRfUEFSQU1TCTB4MjMKKy0jZGVmaW5lIFNORFJWX0RNX0ZNX09TU19JT0NUTF9TRVRfTU9ERQkJMHgyNAorLSNkZWZpbmUgU05EUlZfRE1fRk1fT1NTX0lPQ1RMX1NFVF9PUEwJCTB4MjUKKy0KKy0vKgorLSAqIFBhdGNoIFJlY29yZCAtIGZpeGVkIHNpemUgZm9yIHdyaXRlCistICovCistCistI2RlZmluZSBGTV9LRVlfU0JJCSJTQklcMDMyIgorLSNkZWZpbmUgRk1fS0VZXzJPUAkiMk9QXDAzMiIKKy0jZGVmaW5lIEZNX0tFWV80T1AJIjRPUFwwMzIiCistCistc3RydWN0IHNiaV9wYXRjaCB7CistCXVuc2lnbmVkIGNoYXIgcHJvZzsKKy0JdW5zaWduZWQgY2hhciBiYW5rOworLQljaGFyIGtleVs0XTsKKy0JY2hhciBuYW1lWzI1XTsKKy0JY2hhciBleHRlbnNpb25bN107CistCXVuc2lnbmVkIGNoYXIgZGF0YVszMl07CistfTsKKy0KKy0jZW5kaWYgLyogX19TT1VORF9BU09VTkRfRk1fSCAqLworKyNpbmNsdWRlIDxhbHNhL3NvdW5kL3VhcGkvYXNvdW5kX2ZtLmg+CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9lbXUxMGsxLmggYi9pbmNsdWRlL3NvdW5kL2VtdTEwazEuaAoraW5kZXggMDQyYzVhNmYuLmYwNmVjZWU1IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC9lbXUxMGsxLmgKKysrKyBiL2luY2x1ZGUvc291bmQvZW11MTBrMS5oCitAQCAtMSwzODEgKzEsMiBAQAorLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKyBXSVRIIExpbnV4LXN5c2NhbGwtbm90ZSAqLworLS8qCistICogIENvcHlyaWdodCAoYykgYnkgSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4sCistICoJCSAgICAgQ3JlYXRpdmUgTGFicywgSW5jLgorLSAqICBEZWZpbml0aW9ucyBmb3IgRU1VMTBLMSAoU0IgTGl2ZSEpIGNoaXBzCistICoKKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorLSAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0gKgorLSAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gKiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistICogICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyBVU0EKKy0gKgorLSAqLworLSNpZm5kZWYgX1VBUElfX1NPVU5EX0VNVTEwSzFfSAorLSNkZWZpbmUgX1VBUElfX1NPVU5EX0VNVTEwSzFfSAorLQorLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorLSNpbmNsdWRlIDxzb3VuZC9hc291bmQuaD4KKy0KKy0vKgorLSAqIC0tLS0gRlg4MDEwIC0tLS0KKy0gKi8KKy0KKy0jZGVmaW5lIEVNVTEwSzFfQ0FSRF9DUkVBVElWRQkJCTB4MDAwMDAwMDAKKy0jZGVmaW5lIEVNVTEwSzFfQ0FSRF9FTVVBUFMJCQkweDAwMDAwMDAxCistCistI2RlZmluZSBFTVUxMEsxX0ZYODAxMF9QQ01fQ09VTlQJCTgKKy0KKy0vKgorLSAqIEZvbGxvd2luZyBkZWZpbml0aW9uIGlzIGNvcGllZCBmcm9tIGxpbnV4L3R5cGVzLmggdG8gc3VwcG9ydCBjb21waWxpbmcKKy0gKiB0aGlzIGhlYWRlciBmaWxlIGluIHVzZXJzcGFjZSBzaW5jZSB0aGV5IGFyZSBub3QgZ2VuZXJhbGx5IGF2YWlsYWJsZSBmb3IKKy0gKiB1YXBpIGhlYWRlcnMuCistICovCistI2RlZmluZSBfX0VNVTEwSzFfREVDTEFSRV9CSVRNQVAobmFtZSxiaXRzKSBcCistCXVuc2lnbmVkIGxvbmcgbmFtZVsoYml0cykgLyAoc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogOCldCistCistLyogaW5zdHJ1Y3Rpb24gc2V0ICovCistI2RlZmluZSBpTUFDMAkgMHgwMAkvKiBSID0gQSArIChYICogWSA+PiAzMSkgICA7IHNhdHVyYXRpb24gKi8KKy0jZGVmaW5lIGlNQUMxCSAweDAxCS8qIFIgPSBBICsgKC1YICogWSA+PiAzMSkgIDsgc2F0dXJhdGlvbiAqLworLSNkZWZpbmUgaU1BQzIJIDB4MDIJLyogUiA9IEEgKyAoWCAqIFkgPj4gMzEpICAgOyB3cmFwYXJvdW5kICovCistI2RlZmluZSBpTUFDMwkgMHgwMwkvKiBSID0gQSArICgtWCAqIFkgPj4gMzEpICA7IHdyYXBhcm91bmQgKi8KKy0jZGVmaW5lIGlNQUNJTlQwIDB4MDQJLyogUiA9IEEgKyBYICogWQkgICA7IHNhdHVyYXRpb24gKi8KKy0jZGVmaW5lIGlNQUNJTlQxIDB4MDUJLyogUiA9IEEgKyBYICogWQkgICA7IHdyYXBhcm91bmQgKDMxLWJpdCkgKi8KKy0jZGVmaW5lIGlBQ0MzCSAweDA2CS8qIFIgPSBBICsgWCArIFkJICAgOyBzYXR1cmF0aW9uICovCistI2RlZmluZSBpTUFDTVYgICAweDA3CS8qIFIgPSBBLCBhY2MgKz0gWCAqIFkgPj4gMzEgKi8KKy0jZGVmaW5lIGlBTkRYT1IgIDB4MDgJLyogUiA9IChBICYgWCkgXiBZICovCistI2RlZmluZSBpVFNUTkVHICAweDA5CS8qIFIgPSAoQSA+PSBZKSA/IFggOiB+WCAqLworLSNkZWZpbmUgaUxJTUlUR0UgMHgwYQkvKiBSID0gKEEgPj0gWSkgPyBYIDogWSAqLworLSNkZWZpbmUgaUxJTUlUTFQgMHgwYgkvKiBSID0gKEEgPCBZKSA/IFggOiBZICovCistI2RlZmluZSBpTE9HCSAweDBjCS8qIFIgPSBsaW5lYXJfZGF0YSwgQSAobG9nX2RhdGEpLCBYIChtYXhfZXhwKSwgWSAoZm9ybWF0X3dvcmQpICovCistI2RlZmluZSBpRVhQCSAweDBkCS8qIFIgPSBsb2dfZGF0YSwgQSAobGluZWFyX2RhdGEpLCBYIChtYXhfZXhwKSwgWSAoZm9ybWF0X3dvcmQpICovCistI2RlZmluZSBpSU5URVJQICAweDBlCS8qIFIgPSBBICsgKFggKiAoWSAtIEEpID4+IDMxKSAgOyBzYXR1cmF0aW9uICovCistI2RlZmluZSBpU0tJUCAgICAweDBmCS8qIFIgPSBBIChjY19yZWcpLCBYIChjb3VudCksIFkgKGNjX3Rlc3QpICovCistCistLyogR1BScyAqLworLSNkZWZpbmUgRlhCVVMoeCkJKDB4MDAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiAqLworLSNkZWZpbmUgRVhUSU4oeCkJKDB4MTAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiAqLworLSNkZWZpbmUgRVhUT1VUKHgpCSgweDIwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgcGh5c2ljYWwgb3V0cyAtPiBGWFdDIGxvdyAxNiBiaXRzICovCistI2RlZmluZSBGWEJVUzIoeCkJKDB4MzAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiBjb3BpZXMgb2YgZnggYnVzZXMgZm9yIGNhcHR1cmUgLT4gRlhXQyBoaWdoIDE2IGJpdHMgKi8KKy0JCQkJCS8qIE5COiAweDMxIGFuZCAweDMyIGFyZSBzaGFyZWQgd2l0aCBDZW50ZXIvTEZFIG9uIFNCIGxpdmUgNS4xICovCistCistI2RlZmluZSBDXzAwMDAwMDAwCTB4NDAKKy0jZGVmaW5lIENfMDAwMDAwMDEJMHg0MQorLSNkZWZpbmUgQ18wMDAwMDAwMgkweDQyCistI2RlZmluZSBDXzAwMDAwMDAzCTB4NDMKKy0jZGVmaW5lIENfMDAwMDAwMDQJMHg0NAorLSNkZWZpbmUgQ18wMDAwMDAwOAkweDQ1CistI2RlZmluZSBDXzAwMDAwMDEwCTB4NDYKKy0jZGVmaW5lIENfMDAwMDAwMjAJMHg0NworLSNkZWZpbmUgQ18wMDAwMDEwMAkweDQ4CistI2RlZmluZSBDXzAwMDEwMDAwCTB4NDkKKy0jZGVmaW5lIENfMDAwODAwMDAJMHg0YQorLSNkZWZpbmUgQ18xMDAwMDAwMAkweDRiCistI2RlZmluZSBDXzIwMDAwMDAwCTB4NGMKKy0jZGVmaW5lIENfNDAwMDAwMDAJMHg0ZAorLSNkZWZpbmUgQ184MDAwMDAwMAkweDRlCistI2RlZmluZSBDXzdmZmZmZmZmCTB4NGYKKy0jZGVmaW5lIENfZmZmZmZmZmYJMHg1MAorLSNkZWZpbmUgQ19mZmZmZmZmZQkweDUxCistI2RlZmluZSBDX2MwMDAwMDAwCTB4NTIKKy0jZGVmaW5lIENfNGYxYmJjZGMJMHg1MworLSNkZWZpbmUgQ181YTdlZjlkYgkweDU0CistI2RlZmluZSBDXzAwMTAwMDAwCTB4NTUJCS8qID8/ICovCistI2RlZmluZSBHUFJfQUNDVQkweDU2CQkvKiBBQ0NVTSwgYWNjdW11bGF0b3IgKi8KKy0jZGVmaW5lIEdQUl9DT05ECTB4NTcJCS8qIENDUiwgY29uZGl0aW9uIHJlZ2lzdGVyICovCistI2RlZmluZSBHUFJfTk9JU0UwCTB4NTgJCS8qIG5vaXNlIHNvdXJjZSAqLworLSNkZWZpbmUgR1BSX05PSVNFMQkweDU5CQkvKiBub2lzZSBzb3VyY2UgKi8KKy0jZGVmaW5lIEdQUl9JUlEJCTB4NWEJCS8qIElSUSByZWdpc3RlciAqLworLSNkZWZpbmUgR1BSX0RCQUMJMHg1YgkJLyogVFJBTSBEZWxheSBCYXNlIEFkZHJlc3MgQ291bnRlciAqLworLSNkZWZpbmUgR1BSKHgpCQkoRlhHUFJFR0JBU0UgKyAoeCkpIC8qIGZyZWUgR1BSczogeCA9IDB4MDAgLSAweGZmICovCistI2RlZmluZSBJVFJBTV9EQVRBKHgpCShUQU5LTUVNREFUQVJFR0JBU0UgKyAweDAwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4N2YgKi8KKy0jZGVmaW5lIEVUUkFNX0RBVEEoeCkJKFRBTktNRU1EQVRBUkVHQkFTRSArIDB4ODAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHgxZiAqLworLSNkZWZpbmUgSVRSQU1fQUREUih4KQkoVEFOS01FTUFERFJSRUdCQVNFICsgMHgwMCArICh4KSkgLyogeCA9IDB4MDAgLSAweDdmICovCistI2RlZmluZSBFVFJBTV9BRERSKHgpCShUQU5LTUVNQUREUlJFR0JBU0UgKyAweDgwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4MWYgKi8KKy0KKy0jZGVmaW5lIEFfSVRSQU1fREFUQSh4KQkoVEFOS01FTURBVEFSRUdCQVNFICsgMHgwMCArICh4KSkgLyogeCA9IDB4MDAgLSAweGJmICovCistI2RlZmluZSBBX0VUUkFNX0RBVEEoeCkJKFRBTktNRU1EQVRBUkVHQkFTRSArIDB4YzAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHgzZiAqLworLSNkZWZpbmUgQV9JVFJBTV9BRERSKHgpCShUQU5LTUVNQUREUlJFR0JBU0UgKyAweDAwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4YmYgKi8KKy0jZGVmaW5lIEFfRVRSQU1fQUREUih4KQkoVEFOS01FTUFERFJSRUdCQVNFICsgMHhjMCArICh4KSkgLyogeCA9IDB4MDAgLSAweDNmICovCistI2RlZmluZSBBX0lUUkFNX0NUTCh4KQkoQV9UQU5LTUVNQ1RMUkVHQkFTRSArIDB4MDAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHhiZiAqLworLSNkZWZpbmUgQV9FVFJBTV9DVEwoeCkJKEFfVEFOS01FTUNUTFJFR0JBU0UgKyAweGMwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4M2YgKi8KKy0KKy0jZGVmaW5lIEFfRlhCVVMoeCkJKDB4MDAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgzZiBGWCBidXNlcyAqLworLSNkZWZpbmUgQV9FWFRJTih4KQkoMHg0MCArICh4KSkJLyogeCA9IDB4MDAgLSAweDBmIHBoeXNpY2FsIGlucyAqLworLSNkZWZpbmUgQV9QMTZWSU4oeCkJKDB4NTAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiBwMTZ2IGlucyAoQTIgb25seSkgIkVNVTMyIGlucHV0cyIgKi8KKy0jZGVmaW5lIEFfRVhUT1VUKHgpCSgweDYwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MWYgcGh5c2ljYWwgb3V0cyAtPiBBX0ZYV0MxIDB4NzktN2YgdW5rbm93biAgICovCistI2RlZmluZSBBX0ZYQlVTMih4KQkoMHg4MCArICh4KSkJLyogeCA9IDB4MDAgLSAweDFmIGV4dHJhIG91dHMgdXNlZCBmb3IgRUZYIGNhcHR1cmUgLT4gQV9GWFdDMiAqLworLSNkZWZpbmUgQV9FTVUzMk9VVEgoeCkJKDB4YTAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiAiRU1VMzJfT1VUXzEwIC0gXzFGIiAtID8/PyAqLworLSNkZWZpbmUgQV9FTVUzMk9VVEwoeCkJKDB4YjAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiAiRU1VMzJfT1VUXzEgLSBfRiIgLSA/Pz8gKi8KKy0jZGVmaW5lIEEzX0VNVTMySU4oeCkJKDB4MTYwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4M2YgIkVNVTMyX0lOXzAwIC0gXzNGIiAtIE9ubHkgd2hlbiAuZGV2aWNlID0gMHgwMDA4ICovCistI2RlZmluZSBBM19FTVUzMk9VVCh4KQkoMHgxRTAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiAiRU1VMzJfT1VUXzAwIC0gXzNGIiAtIE9ubHkgd2hlbiAuZGV2aWNlID0gMHgwMDA4ICovCistI2RlZmluZSBBX0dQUih4KQkoQV9GWEdQUkVHQkFTRSArICh4KSkKKy0KKy0vKiBjY19yZWcgY29uc3RhbnRzICovCistI2RlZmluZSBDQ19SRUdfTk9STUFMSVpFRCBDXzAwMDAwMDAxCistI2RlZmluZSBDQ19SRUdfQk9SUk9XCUNfMDAwMDAwMDIKKy0jZGVmaW5lIENDX1JFR19NSU5VUwlDXzAwMDAwMDA0CistI2RlZmluZSBDQ19SRUdfWkVSTwlDXzAwMDAwMDA4CistI2RlZmluZSBDQ19SRUdfU0FUVVJBVEUJQ18wMDAwMDAxMAorLSNkZWZpbmUgQ0NfUkVHX05PTlpFUk8JQ18wMDAwMDEwMAorLQorLS8qIEZYIGJ1c2VzICovCistI2RlZmluZSBGWEJVU19QQ01fTEVGVAkJMHgwMAorLSNkZWZpbmUgRlhCVVNfUENNX1JJR0hUCQkweDAxCistI2RlZmluZSBGWEJVU19QQ01fTEVGVF9SRUFSCTB4MDIKKy0jZGVmaW5lIEZYQlVTX1BDTV9SSUdIVF9SRUFSCTB4MDMKKy0jZGVmaW5lIEZYQlVTX01JRElfTEVGVAkJMHgwNAorLSNkZWZpbmUgRlhCVVNfTUlESV9SSUdIVAkweDA1CistI2RlZmluZSBGWEJVU19QQ01fQ0VOVEVSCTB4MDYKKy0jZGVmaW5lIEZYQlVTX1BDTV9MRkUJCTB4MDcKKy0jZGVmaW5lIEZYQlVTX1BDTV9MRUZUX0ZST05UCTB4MDgKKy0jZGVmaW5lIEZYQlVTX1BDTV9SSUdIVF9GUk9OVAkweDA5CistI2RlZmluZSBGWEJVU19NSURJX1JFVkVSQgkweDBjCistI2RlZmluZSBGWEJVU19NSURJX0NIT1JVUwkweDBkCistI2RlZmluZSBGWEJVU19QQ01fTEVGVF9TSURFCTB4MGUKKy0jZGVmaW5lIEZYQlVTX1BDTV9SSUdIVF9TSURFCTB4MGYKKy0jZGVmaW5lIEZYQlVTX1BUX0xFRlQJCTB4MTQKKy0jZGVmaW5lIEZYQlVTX1BUX1JJR0hUCQkweDE1CistCistLyogSW5wdXRzICovCistI2RlZmluZSBFWFRJTl9BQzk3X0wJICAgMHgwMAkvKiBBQyc5NyBjYXB0dXJlIGNoYW5uZWwgLSBsZWZ0ICovCistI2RlZmluZSBFWFRJTl9BQzk3X1IJICAgMHgwMQkvKiBBQyc5NyBjYXB0dXJlIGNoYW5uZWwgLSByaWdodCAqLworLSNkZWZpbmUgRVhUSU5fU1BESUZfQ0RfTCAgIDB4MDIJLyogaW50ZXJuYWwgUy9QRElGIENEIC0gb25ib2FyZCAtIGxlZnQgKi8KKy0jZGVmaW5lIEVYVElOX1NQRElGX0NEX1IgICAweDAzCS8qIGludGVybmFsIFMvUERJRiBDRCAtIG9uYm9hcmQgLSByaWdodCAqLworLSNkZWZpbmUgRVhUSU5fWk9PTV9MCSAgIDB4MDQJLyogWm9vbSBWaWRlbyBJMlMgLSBsZWZ0ICovCistI2RlZmluZSBFWFRJTl9aT09NX1IJICAgMHgwNQkvKiBab29tIFZpZGVvIEkyUyAtIHJpZ2h0ICovCistI2RlZmluZSBFWFRJTl9UT1NMSU5LX0wJICAgMHgwNgkvKiBMaXZlRHJpdmUgLSBUT1NMaW5rIE9wdGljYWwgLSBsZWZ0ICovCistI2RlZmluZSBFWFRJTl9UT1NMSU5LX1IgICAgMHgwNwkvKiBMaXZlRHJpdmUgLSBUT1NMaW5rIE9wdGljYWwgLSByaWdodCAqLworLSNkZWZpbmUgRVhUSU5fTElORTFfTAkgICAweDA4CS8qIExpdmVEcml2ZSAtIExpbmUvTWljIDEgLSBsZWZ0ICovCistI2RlZmluZSBFWFRJTl9MSU5FMV9SCSAgIDB4MDkJLyogTGl2ZURyaXZlIC0gTGluZS9NaWMgMSAtIHJpZ2h0ICovCistI2RlZmluZSBFWFRJTl9DT0FYX1NQRElGX0wgMHgwYQkvKiBMaXZlRHJpdmUgLSBDb2F4aWFsIFMvUERJRiAtIGxlZnQgKi8KKy0jZGVmaW5lIEVYVElOX0NPQVhfU1BESUZfUiAweDBiIC8qIExpdmVEcml2ZSAtIENvYXhpYWwgUy9QRElGIC0gcmlnaHQgKi8KKy0jZGVmaW5lIEVYVElOX0xJTkUyX0wJICAgMHgwYwkvKiBMaXZlRHJpdmUgLSBMaW5lL01pYyAyIC0gbGVmdCAqLworLSNkZWZpbmUgRVhUSU5fTElORTJfUgkgICAweDBkCS8qIExpdmVEcml2ZSAtIExpbmUvTWljIDIgLSByaWdodCAqLworLQorLS8qIE91dHB1dHMgKi8KKy0jZGVmaW5lIEVYVE9VVF9BQzk3X0wJICAgMHgwMAkvKiBBQyc5NyBwbGF5YmFjayBjaGFubmVsIC0gbGVmdCAqLworLSNkZWZpbmUgRVhUT1VUX0FDOTdfUgkgICAweDAxCS8qIEFDJzk3IHBsYXliYWNrIGNoYW5uZWwgLSByaWdodCAqLworLSNkZWZpbmUgRVhUT1VUX1RPU0xJTktfTCAgIDB4MDIJLyogTGl2ZURyaXZlIC0gVE9TTGluayBPcHRpY2FsIC0gbGVmdCAqLworLSNkZWZpbmUgRVhUT1VUX1RPU0xJTktfUiAgIDB4MDMJLyogTGl2ZURyaXZlIC0gVE9TTGluayBPcHRpY2FsIC0gcmlnaHQgKi8KKy0jZGVmaW5lIEVYVE9VVF9BQzk3X0NFTlRFUiAweDA0CS8qIFNCIExpdmUgNS4xIC0gY2VudGVyICovCistI2RlZmluZSBFWFRPVVRfQUM5N19MRkUJICAgMHgwNSAvKiBTQiBMaXZlIDUuMSAtIExGRSAqLworLSNkZWZpbmUgRVhUT1VUX0hFQURQSE9ORV9MIDB4MDYJLyogTGl2ZURyaXZlIC0gSGVhZHBob25lIC0gbGVmdCAqLworLSNkZWZpbmUgRVhUT1VUX0hFQURQSE9ORV9SIDB4MDcJLyogTGl2ZURyaXZlIC0gSGVhZHBob25lIC0gcmlnaHQgKi8KKy0jZGVmaW5lIEVYVE9VVF9SRUFSX0wJICAgMHgwOAkvKiBSZWFyIGNoYW5uZWwgLSBsZWZ0ICovCistI2RlZmluZSBFWFRPVVRfUkVBUl9SCSAgIDB4MDkJLyogUmVhciBjaGFubmVsIC0gcmlnaHQgKi8KKy0jZGVmaW5lIEVYVE9VVF9BRENfQ0FQX0wgICAweDBhCS8qIEFEQyBDYXB0dXJlIGJ1ZmZlciAtIGxlZnQgKi8KKy0jZGVmaW5lIEVYVE9VVF9BRENfQ0FQX1IgICAweDBiCS8qIEFEQyBDYXB0dXJlIGJ1ZmZlciAtIHJpZ2h0ICovCistI2RlZmluZSBFWFRPVVRfTUlDX0NBUAkgICAweDBjCS8qIE1JQyBDYXB0dXJlIGJ1ZmZlciAqLworLSNkZWZpbmUgRVhUT1VUX0FDOTdfUkVBUl9MIDB4MGQJLyogU0IgTGl2ZSA1LjEgKGMpIDIwMDMgLSBSZWFyIExlZnQgKi8KKy0jZGVmaW5lIEVYVE9VVF9BQzk3X1JFQVJfUiAweDBlCS8qIFNCIExpdmUgNS4xIChjKSAyMDAzIC0gUmVhciBSaWdodCAqLworLSNkZWZpbmUgRVhUT1VUX0FDRU5URVIJICAgMHgxMSAvKiBBbmFsb2cgQ2VudGVyICovCistI2RlZmluZSBFWFRPVVRfQUxGRQkgICAweDEyIC8qIEFuYWxvZyBMRkUgKi8KKy0KKy0vKiBBdWRpZ3kgSW5wdXRzICovCistI2RlZmluZSBBX0VYVElOX0FDOTdfTAkJMHgwMAkvKiBBQyc5NyBjYXB0dXJlIGNoYW5uZWwgLSBsZWZ0ICovCistI2RlZmluZSBBX0VYVElOX0FDOTdfUgkJMHgwMQkvKiBBQyc5NyBjYXB0dXJlIGNoYW5uZWwgLSByaWdodCAqLworLSNkZWZpbmUgQV9FWFRJTl9TUERJRl9DRF9MCTB4MDIJLyogZGlnaXRhbCBDRCBsZWZ0ICovCistI2RlZmluZSBBX0VYVElOX1NQRElGX0NEX1IJMHgwMwkvKiBkaWdpdGFsIENEIGxlZnQgKi8KKy0jZGVmaW5lIEFfRVhUSU5fT1BUX1NQRElGX0wgICAgIDB4MDQgICAgLyogYXVkaWd5IGRyaXZlIE9wdGljYWwgU1BESUYgLSBsZWZ0ICovCistI2RlZmluZSBBX0VYVElOX09QVF9TUERJRl9SICAgICAweDA1ICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgKi8gCistI2RlZmluZSBBX0VYVElOX0xJTkUyX0wJCTB4MDgJLyogYXVkaWd5IGRyaXZlIGxpbmUyL21pYzIgLSBsZWZ0ICovCistI2RlZmluZSBBX0VYVElOX0xJTkUyX1IJCTB4MDkJLyogICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodCAqLworLSNkZWZpbmUgQV9FWFRJTl9BRENfTAkJMHgwYSAgICAvKiBQaGlsaXBzIEFEQyAtIGxlZnQgKi8KKy0jZGVmaW5lIEFfRVhUSU5fQURDX1IJCTB4MGIgICAgLyogICAgICAgICAgICAgICByaWdodCAqLworLSNkZWZpbmUgQV9FWFRJTl9BVVgyX0wJCTB4MGMJLyogYXVkaWd5IGRyaXZlIGF1eDIgLSBsZWZ0ICovCistI2RlZmluZSBBX0VYVElOX0FVWDJfUgkJMHgwZAkvKiAgICAgICAgICAgICAgICAgICAtIHJpZ2h0ICovCistCistLyogQXVkaWdpeSBPdXRwdXRzICovCistI2RlZmluZSBBX0VYVE9VVF9GUk9OVF9MCTB4MDAJLyogZGlnaXRhbCBmcm9udCBsZWZ0ICovCistI2RlZmluZSBBX0VYVE9VVF9GUk9OVF9SCTB4MDEJLyogICAgICAgICAgICAgICByaWdodCAqLworLSNkZWZpbmUgQV9FWFRPVVRfQ0VOVEVSCQkweDAyCS8qIGRpZ2l0YWwgZnJvbnQgY2VudGVyICovCistI2RlZmluZSBBX0VYVE9VVF9MRkUJCTB4MDMJLyogZGlnaXRhbCBmcm9udCBsZmUgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0hFQURQSE9ORV9MCTB4MDQJLyogaGVhZHBob25lIGF1ZGlneSBkcml2ZSBsZWZ0ICovCistI2RlZmluZSBBX0VYVE9VVF9IRUFEUEhPTkVfUgkweDA1CS8qICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX1JFQVJfTAkJMHgwNgkvKiBkaWdpdGFsIHJlYXIgbGVmdCAqLworLSNkZWZpbmUgQV9FWFRPVVRfUkVBUl9SCQkweDA3CS8qICAgICAgICAgICAgICByaWdodCAqLworLSNkZWZpbmUgQV9FWFRPVVRfQUZST05UX0wJMHgwOAkvKiBhbmFsb2cgZnJvbnQgbGVmdCAqLworLSNkZWZpbmUgQV9FWFRPVVRfQUZST05UX1IJMHgwOQkvKiAgICAgICAgICAgICAgcmlnaHQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0FDRU5URVIJMHgwYQkvKiBhbmFsb2cgY2VudGVyICovCistI2RlZmluZSBBX0VYVE9VVF9BTEZFCQkweDBiCS8qIGFuYWxvZyBMRkUgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0FTSURFX0wJMHgwYwkvKiBhbmFsb2cgc2lkZSBsZWZ0ICAtIEF1ZGlneSAyIFpTICovCistI2RlZmluZSBBX0VYVE9VVF9BU0lERV9SCTB4MGQJLyogICAgICAgICAgICAgcmlnaHQgLSBBdWRpZ3kgMiBaUyAqLworLSNkZWZpbmUgQV9FWFRPVVRfQVJFQVJfTAkweDBlCS8qIGFuYWxvZyByZWFyIGxlZnQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0FSRUFSX1IJMHgwZgkvKiAgICAgICAgICAgICByaWdodCAqLworLSNkZWZpbmUgQV9FWFRPVVRfQUM5N19MCQkweDEwCS8qIEFDOTcgbGVmdCAoZnJvbnQpICovCistI2RlZmluZSBBX0VYVE9VVF9BQzk3X1IJCTB4MTEJLyogICAgICByaWdodCAqLworLSNkZWZpbmUgQV9FWFRPVVRfQURDX0NBUF9MCTB4MTYJLyogQURDIGNhcHR1cmUgYnVmZmVyIGxlZnQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0FEQ19DQVBfUgkweDE3CS8qICAgICAgICAgICAgICAgICAgICByaWdodCAqLworLSNkZWZpbmUgQV9FWFRPVVRfTUlDX0NBUAkweDE4CS8qIE1pYyBjYXB0dXJlIGJ1ZmZlciAqLworLQorLS8qIEF1ZGlneSBjb25zdGFudHMgKi8KKy0jZGVmaW5lIEFfQ18wMDAwMDAwMAkweGMwCistI2RlZmluZSBBX0NfMDAwMDAwMDEJMHhjMQorLSNkZWZpbmUgQV9DXzAwMDAwMDAyCTB4YzIKKy0jZGVmaW5lIEFfQ18wMDAwMDAwMwkweGMzCistI2RlZmluZSBBX0NfMDAwMDAwMDQJMHhjNAorLSNkZWZpbmUgQV9DXzAwMDAwMDA4CTB4YzUKKy0jZGVmaW5lIEFfQ18wMDAwMDAxMAkweGM2CistI2RlZmluZSBBX0NfMDAwMDAwMjAJMHhjNworLSNkZWZpbmUgQV9DXzAwMDAwMTAwCTB4YzgKKy0jZGVmaW5lIEFfQ18wMDAxMDAwMAkweGM5CistI2RlZmluZSBBX0NfMDAwMDA4MDAJMHhjYQorLSNkZWZpbmUgQV9DXzEwMDAwMDAwCTB4Y2IKKy0jZGVmaW5lIEFfQ18yMDAwMDAwMAkweGNjCistI2RlZmluZSBBX0NfNDAwMDAwMDAJMHhjZAorLSNkZWZpbmUgQV9DXzgwMDAwMDAwCTB4Y2UKKy0jZGVmaW5lIEFfQ183ZmZmZmZmZgkweGNmCistI2RlZmluZSBBX0NfZmZmZmZmZmYJMHhkMAorLSNkZWZpbmUgQV9DX2ZmZmZmZmZlCTB4ZDEKKy0jZGVmaW5lIEFfQ19jMDAwMDAwMAkweGQyCistI2RlZmluZSBBX0NfNGYxYmJjZGMJMHhkMworLSNkZWZpbmUgQV9DXzVhN2VmOWRiCTB4ZDQKKy0jZGVmaW5lIEFfQ18wMDEwMDAwMAkweGQ1CistI2RlZmluZSBBX0dQUl9BQ0NVCTB4ZDYJCS8qIEFDQ1VNLCBhY2N1bXVsYXRvciAqLworLSNkZWZpbmUgQV9HUFJfQ09ORAkweGQ3CQkvKiBDQ1IsIGNvbmRpdGlvbiByZWdpc3RlciAqLworLSNkZWZpbmUgQV9HUFJfTk9JU0UwCTB4ZDgJCS8qIG5vaXNlIHNvdXJjZSAqLworLSNkZWZpbmUgQV9HUFJfTk9JU0UxCTB4ZDkJCS8qIG5vaXNlIHNvdXJjZSAqLworLSNkZWZpbmUgQV9HUFJfSVJRCTB4ZGEJCS8qIElSUSByZWdpc3RlciAqLworLSNkZWZpbmUgQV9HUFJfREJBQwkweGRiCQkvKiBUUkFNIERlbGF5IEJhc2UgQWRkcmVzcyBDb3VudGVyIC0gaW50ZXJuYWwgKi8KKy0jZGVmaW5lIEFfR1BSX0RCQUNFCTB4ZGUJCS8qIFRSQU0gRGVsYXkgQmFzZSBBZGRyZXNzIENvdW50ZXIgLSBleHRlcm5hbCAqLworLQorLS8qIGRlZmluaXRpb25zIGZvciBkZWJ1ZyByZWdpc3RlciAqLworLSNkZWZpbmUgRU1VMTBLMV9EQkdfWkMJCQkweDgwMDAwMDAwCS8qIHplcm8gdHJhbSBjb3VudGVyICovCistI2RlZmluZSBFTVUxMEsxX0RCR19TQVRVUkFUSU9OX09DQ1VSRUQJMHgwMjAwMDAwMAkvKiBzYXR1cmF0aW9uIGNvbnRyb2wgKi8KKy0jZGVmaW5lIEVNVTEwSzFfREJHX1NBVFVSQVRJT05fQUREUgkweDAxZmYwMDAwCS8qIHNhdHVyYXRpb24gYWRkcmVzcyAqLworLSNkZWZpbmUgRU1VMTBLMV9EQkdfU0lOR0xFX1NURVAJCTB4MDAwMDgwMDAJLyogc2luZ2xlIHN0ZXAgbW9kZSAqLworLSNkZWZpbmUgRU1VMTBLMV9EQkdfU1RFUAkJMHgwMDAwNDAwMAkvKiBzdGFydCBzaW5nbGUgc3RlcCAqLworLSNkZWZpbmUgRU1VMTBLMV9EQkdfQ09ORElUSU9OX0NPREUJMHgwMDAwM2UwMAkvKiBjb25kaXRpb24gY29kZSAqLworLSNkZWZpbmUgRU1VMTBLMV9EQkdfU0lOR0xFX1NURVBfQUREUgkweDAwMDAwMWZmCS8qIHNpbmdsZSBzdGVwIGFkZHJlc3MgKi8KKy0KKy0vKiB0YW5rIG1lbW9yeSBhZGRyZXNzIGxpbmUgKi8KKy0jaWZuZGVmIF9fS0VSTkVMX18KKy0jZGVmaW5lIFRBTktNRU1BRERSUkVHX0FERFJfTUFTSyAweDAwMGZmZmZmCS8qIDIwIGJpdCB0YW5rIGFkZHJlc3MgZmllbGQJCQkqLworLSNkZWZpbmUgVEFOS01FTUFERFJSRUdfQ0xFQVIJIDB4MDA4MDAwMDAJLyogQ2xlYXIgdGFuayBtZW1vcnkJCQkJKi8KKy0jZGVmaW5lIFRBTktNRU1BRERSUkVHX0FMSUdOCSAweDAwNDAwMDAwCS8qIEFsaWduIHJlYWQgb3Igd3JpdGUgcmVsYXRpdmUgdG8gdGFuayBhY2Nlc3MJKi8KKy0jZGVmaW5lIFRBTktNRU1BRERSUkVHX1dSSVRFCSAweDAwMjAwMDAwCS8qIFdyaXRlIHRvIHRhbmsgbWVtb3J5CQkJCSovCistI2RlZmluZSBUQU5LTUVNQUREUlJFR19SRUFECSAweDAwMTAwMDAwCS8qIFJlYWQgZnJvbSB0YW5rIG1lbW9yeQkJCSovCistI2VuZGlmCistCistc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9pbmZvIHsKKy0JdW5zaWduZWQgaW50IGludGVybmFsX3RyYW1fc2l6ZTsJLyogaW4gc2FtcGxlcyAqLworLQl1bnNpZ25lZCBpbnQgZXh0ZXJuYWxfdHJhbV9zaXplOwkvKiBpbiBzYW1wbGVzICovCistCWNoYXIgZnhidXNfbmFtZXNbMTZdWzMyXTsJCS8qIG5hbWVzIG9mIEZYQlVTZXMgKi8KKy0JY2hhciBleHRpbl9uYW1lc1sxNl1bMzJdOwkJLyogbmFtZXMgb2YgZXh0ZXJuYWwgaW5wdXRzICovCistCWNoYXIgZXh0b3V0X25hbWVzWzMyXVszMl07CQkvKiBuYW1lcyBvZiBleHRlcm5hbCBvdXRwdXRzICovCistCXVuc2lnbmVkIGludCBncHJfY29udHJvbHM7CQkvKiBjb3VudCBvZiBHUFIgY29udHJvbHMgKi8KKy19OworLQorLSNkZWZpbmUgRU1VMTBLMV9HUFJfVFJBTlNMQVRJT05fTk9ORQkJMAorLSNkZWZpbmUgRU1VMTBLMV9HUFJfVFJBTlNMQVRJT05fVEFCTEUxMDAJMQorLSNkZWZpbmUgRU1VMTBLMV9HUFJfVFJBTlNMQVRJT05fQkFTUwkJMgorLSNkZWZpbmUgRU1VMTBLMV9HUFJfVFJBTlNMQVRJT05fVFJFQkxFCQkzCistI2RlZmluZSBFTVUxMEsxX0dQUl9UUkFOU0xBVElPTl9PTk9GRgkJNAorLQorLXN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHIgeworLQlzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkIGlkOwkJLyogZnVsbCBjb250cm9sIElEIGRlZmluaXRpb24gKi8KKy0JdW5zaWduZWQgaW50IHZjb3VudDsJCS8qIHZpc2libGUgY291bnQgKi8KKy0JdW5zaWduZWQgaW50IGNvdW50OwkJLyogY291bnQgb2YgR1BSICgxLi4xNikgKi8KKy0JdW5zaWduZWQgc2hvcnQgZ3ByWzMyXTsJCS8qIEdQUiBudW1iZXIocykgKi8KKy0JdW5zaWduZWQgaW50IHZhbHVlWzMyXTsJCS8qIGluaXRpYWwgdmFsdWVzICovCistCXVuc2lnbmVkIGludCBtaW47CQkvKiBtaW5pbXVtIHJhbmdlICovCistCXVuc2lnbmVkIGludCBtYXg7CQkvKiBtYXhpbXVtIHJhbmdlICovCistCXVuc2lnbmVkIGludCB0cmFuc2xhdGlvbjsJLyogdHJhbnNsYXRpb24gdHlwZSAoRU1VMTBLMV9HUFJfVFJBTlNMQVRJT04qKSAqLworLQljb25zdCB1bnNpZ25lZCBpbnQgKnRsdjsKKy19OworLQorLS8qIG9sZCBBQkkgd2l0aG91dCBUTFYgc3VwcG9ydCAqLworLXN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29udHJvbF9vbGRfZ3ByIHsKKy0Jc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBpZDsKKy0JdW5zaWduZWQgaW50IHZjb3VudDsKKy0JdW5zaWduZWQgaW50IGNvdW50OworLQl1bnNpZ25lZCBzaG9ydCBncHJbMzJdOworLQl1bnNpZ25lZCBpbnQgdmFsdWVbMzJdOworLQl1bnNpZ25lZCBpbnQgbWluOworLQl1bnNpZ25lZCBpbnQgbWF4OworLQl1bnNpZ25lZCBpbnQgdHJhbnNsYXRpb247CistfTsKKy0KKy1zdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvZGUgeworLQljaGFyIG5hbWVbMTI4XTsKKy0KKy0JX19FTVUxMEsxX0RFQ0xBUkVfQklUTUFQKGdwcl92YWxpZCwgMHgyMDApOyAvKiBiaXRtYXNrIG9mIHZhbGlkIGluaXRpYWxpemVycyAqLworLQlfX3UzMiBfX3VzZXIgKmdwcl9tYXA7CQkvKiBpbml0aWFsaXplcnMgKi8KKy0KKy0JdW5zaWduZWQgaW50IGdwcl9hZGRfY29udHJvbF9jb3VudDsgLyogY291bnQgb2YgR1BSIGNvbnRyb2xzIHRvIGFkZC9yZXBsYWNlICovCistCXN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHIgX191c2VyICpncHJfYWRkX2NvbnRyb2xzOyAvKiBHUFIgY29udHJvbHMgdG8gYWRkL3JlcGxhY2UgKi8KKy0KKy0JdW5zaWduZWQgaW50IGdwcl9kZWxfY29udHJvbF9jb3VudDsgLyogY291bnQgb2YgR1BSIGNvbnRyb2xzIHRvIHJlbW92ZSAqLworLQlzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkIF9fdXNlciAqZ3ByX2RlbF9jb250cm9sczsgLyogSURzIG9mIEdQUiBjb250cm9scyB0byByZW1vdmUgKi8KKy0KKy0JdW5zaWduZWQgaW50IGdwcl9saXN0X2NvbnRyb2xfY291bnQ7IC8qIGNvdW50IG9mIEdQUiBjb250cm9scyB0byBsaXN0ICovCistCXVuc2lnbmVkIGludCBncHJfbGlzdF9jb250cm9sX3RvdGFsOyAvKiB0b3RhbCBjb3VudCBvZiBHUFIgY29udHJvbHMgKi8KKy0Jc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb250cm9sX2dwciBfX3VzZXIgKmdwcl9saXN0X2NvbnRyb2xzOyAvKiBsaXN0ZWQgR1BSIGNvbnRyb2xzICovCistCistCV9fRU1VMTBLMV9ERUNMQVJFX0JJVE1BUCh0cmFtX3ZhbGlkLCAweDEwMCk7IC8qIGJpdG1hc2sgb2YgdmFsaWQgaW5pdGlhbGl6ZXJzICovCistCV9fdTMyIF9fdXNlciAqdHJhbV9kYXRhX21hcDsJICAvKiBkYXRhIGluaXRpYWxpemVycyAqLworLQlfX3UzMiBfX3VzZXIgKnRyYW1fYWRkcl9tYXA7CSAgLyogbWFwIGluaXRpYWxpemVycyAqLworLQorLQlfX0VNVTEwSzFfREVDTEFSRV9CSVRNQVAoY29kZV92YWxpZCwgMTAyNCk7IC8qIGJpdG1hc2sgb2YgdmFsaWQgaW5zdHJ1Y3Rpb25zICovCistCV9fdTMyIF9fdXNlciAqY29kZTsJCSAgLyogb25lIGluc3RydWN0aW9uIC0gNjQgYml0cyAqLworLX07CistCistc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF90cmFtIHsKKy0JdW5zaWduZWQgaW50IGFkZHJlc3M7CQkvKiAzMS5iaXQgPT0gMSAtPiBleHRlcm5hbCBUUkFNICovCistCXVuc2lnbmVkIGludCBzaXplOwkJLyogc2l6ZSBpbiBzYW1wbGVzICg0IGJ5dGVzKSAqLworLQl1bnNpZ25lZCBpbnQgKnNhbXBsZXM7CQkvKiBwb2ludGVyIHRvIHNhbXBsZXMgKDIwLWJpdCkgKi8KKy0JCQkJCS8qIE5VTEwtPmNsZWFyIG1lbW9yeSAqLworLX07CistCistc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9wY21fcmVjIHsKKy0JdW5zaWduZWQgaW50IHN1YnN0cmVhbTsJCS8qIHN1YnN0cmVhbSBudW1iZXIgKi8KKy0JdW5zaWduZWQgaW50IHJlczE7CQkvKiByZXNlcnZlZCAqLworLQl1bnNpZ25lZCBpbnQgY2hhbm5lbHM7CQkvKiAxNi1iaXQgY2hhbm5lbHMgY291bnQsIHplcm8gPSByZW1vdmUgdGhpcyBzdWJzdHJlYW0gKi8KKy0JdW5zaWduZWQgaW50IHRyYW1fc3RhcnQ7CS8qIHJpbmcgYnVmZmVyIHBvc2l0aW9uIGluIFRSQU0gKGluIHNhbXBsZXMpICovCistCXVuc2lnbmVkIGludCBidWZmZXJfc2l6ZTsJLyogY291bnQgb2YgYnVmZmVyZWQgc2FtcGxlcyAqLworLQl1bnNpZ25lZCBzaG9ydCBncHJfc2l6ZTsJCS8qIEdQUiBjb250YWluaW5nIHNpemUgb2YgcmluZ2J1ZmZlciBpbiBzYW1wbGVzIChob3N0KSAqLworLQl1bnNpZ25lZCBzaG9ydCBncHJfcHRyOwkJLyogR1BSIGNvbnRhaW5pbmcgY3VycmVudCBwb2ludGVyIGluIHRoZSByaW5nIGJ1ZmZlciAoaG9zdCA9IHJlc2V0LCBGWDgwMTApICovCistCXVuc2lnbmVkIHNob3J0IGdwcl9jb3VudDsJLyogR1BSIGNvbnRhaW5pbmcgY291bnQgb2Ygc2FtcGxlcyBiZXR3ZWVuIHR3byBpbnRlcnJ1cHRzIChob3N0KSAqLworLQl1bnNpZ25lZCBzaG9ydCBncHJfdG1wY291bnQ7CS8qIEdQUiBjb250YWluaW5nIGN1cnJlbnQgY291bnQgb2Ygc2FtcGxlcyB0byBpbnRlcnJ1cHQgKGhvc3QgPSBzZXQsIEZYODAxMCkgKi8KKy0JdW5zaWduZWQgc2hvcnQgZ3ByX3RyaWdnZXI7CS8qIEdQUiBjb250YWluaW5nIHRyaWdnZXIgKGFjdGl2YXRlKSBpbmZvcm1hdGlvbiAoaG9zdCkgKi8KKy0JdW5zaWduZWQgc2hvcnQgZ3ByX3J1bm5pbmc7CS8qIEdQUiBjb250YWluaW5nIGluZm8gaWYgUENNIGlzIHJ1bm5pbmcgKEZYODAxMCkgKi8KKy0JdW5zaWduZWQgY2hhciBwYWQ7CQkvKiByZXNlcnZlZCAqLworLQl1bnNpZ25lZCBjaGFyIGV0cmFtWzMyXTsJLyogZXh0ZXJuYWwgVFJBTSBhZGRyZXNzICYgZGF0YSAob25lIHBlciBjaGFubmVsKSAqLworLQl1bnNpZ25lZCBpbnQgcmVzMjsJCS8qIHJlc2VydmVkICovCistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfVkVSU0lPTgkJU05EUlZfUFJPVE9DT0xfVkVSU0lPTigxLCAwLCAxKQorLQorLSNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9JTkZPCV9JT1IgKCdIJywgMHgxMCwgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9pbmZvKQorLSNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9DT0RFX1BPS0UJX0lPVyAoJ0gnLCAweDExLCBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvZGUpCistI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX0NPREVfUEVFSwlfSU9XUignSCcsIDB4MTIsIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29kZSkKKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfVFJBTV9TRVRVUAlfSU9XICgnSCcsIDB4MjAsIGludCkKKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfVFJBTV9QT0tFCV9JT1cgKCdIJywgMHgyMSwgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF90cmFtKQorLSNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9UUkFNX1BFRUsJX0lPV1IoJ0gnLCAweDIyLCBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3RyYW0pCistI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1BDTV9QT0tFCV9JT1cgKCdIJywgMHgzMCwgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9wY21fcmVjKQorLSNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9QQ01fUEVFSwlfSU9XUignSCcsIDB4MzEsIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfcGNtX3JlYykKKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfUFZFUlNJT04JX0lPUiAoJ0gnLCAweDQwLCBpbnQpCistI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1NUT1AJX0lPICAoJ0gnLCAweDgwKQorLSNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9DT05USU5VRQlfSU8gICgnSCcsIDB4ODEpCistI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1pFUk9fVFJBTV9DT1VOVEVSIF9JTyAoJ0gnLCAweDgyKQorLSNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9TSU5HTEVfU1RFUAlfSU9XICgnSCcsIDB4ODMsIGludCkKKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfREJHX1JFQUQJX0lPUiAoJ0gnLCAweDg0LCBpbnQpCistCistLyogdHlwZWRlZnMgZm9yIGNvbXBhdGliaWxpdHkgdG8gdXNlci1zcGFjZSAqLworLXR5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9pbmZvIGVtdTEwazFfZng4MDEwX2luZm9fdDsKKy10eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHIgZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHJfdDsKKy10eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29kZSBlbXUxMGsxX2Z4ODAxMF9jb2RlX3Q7CistdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3RyYW0gZW11MTBrMV9meDgwMTBfdHJhbV90OworLXR5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9wY21fcmVjIGVtdTEwazFfZng4MDEwX3BjbV90OworLQorLSNlbmRpZiAvKiBfVUFQSV9fU09VTkRfRU1VMTBLMV9IICovCisrI2luY2x1ZGUgPGFsc2Evc291bmQvdHlwZV9jb21wYXQuaD4KKysjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL2VtdTEwazEuaD4KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL2hkc3AuaCBiL2luY2x1ZGUvc291bmQvaGRzcC5oCitpbmRleCA1ZGMwYzNkYi4uNzhmYjc0NWIgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL2hkc3AuaAorKysrIGIvaW5jbHVkZS9zb3VuZC9oZHNwLmgKK0BAIC0xLDExMSArMSwyIEBACistLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCistI2lmbmRlZiBfX1NPVU5EX0hEU1BfSAorLSNkZWZpbmUgX19TT1VORF9IRFNQX0gKKy0KKy0vKgorLSAqICAgQ29weXJpZ2h0IChDKSAyMDAzIFRob21hcyBDaGFyYm9ubmVsICh0aG9tYXNAdW5kYXRhLm9yZykKKy0gKiAgICAKKy0gKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKy0gKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCistICoKKy0gKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistICoKKy0gKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSAqICAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCistICovCistCistI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CistCistI2RlZmluZSBIRFNQX01BVFJJWF9NSVhFUl9TSVpFIDIwNDgKKy0KKy1lbnVtIEhEU1BfSU9fVHlwZSB7CistCURpZ2lmYWNlLAorLQlNdWx0aWZhY2UsCistCUg5NjUyLAorLQlIOTYzMiwKKy0JUlBNLAorLQlVbmRlZmluZWQsCistfTsKKy0KKy1zdHJ1Y3QgaGRzcF9wZWFrX3JtcyB7CistCV9fdTMyIGlucHV0X3BlYWtzWzI2XTsKKy0JX191MzIgcGxheWJhY2tfcGVha3NbMjZdOworLQlfX3UzMiBvdXRwdXRfcGVha3NbMjhdOworLQlfX3U2NCBpbnB1dF9ybXNbMjZdOworLQlfX3U2NCBwbGF5YmFja19ybXNbMjZdOworLQkvKiBUaGVzZSBhcmUgb25seSB1c2VkIGZvciBIOTZ4eCBjYXJkcyAqLworLQlfX3U2NCBvdXRwdXRfcm1zWzI2XTsKKy19OworLQorLSNkZWZpbmUgU05EUlZfSERTUF9JT0NUTF9HRVRfUEVBS19STVMgX0lPUignSCcsIDB4NDAsIHN0cnVjdCBoZHNwX3BlYWtfcm1zKQorLQorLXN0cnVjdCBoZHNwX2NvbmZpZ19pbmZvIHsKKy0JdW5zaWduZWQgY2hhciBwcmVmX3N5bmNfcmVmOworLQl1bnNpZ25lZCBjaGFyIHdvcmRjbG9ja19zeW5jX2NoZWNrOworLQl1bnNpZ25lZCBjaGFyIHNwZGlmX3N5bmNfY2hlY2s7CistCXVuc2lnbmVkIGNoYXIgYWRhdHN5bmNfc3luY19jaGVjazsKKy0JdW5zaWduZWQgY2hhciBhZGF0X3N5bmNfY2hlY2tbM107CistCXVuc2lnbmVkIGNoYXIgc3BkaWZfaW47CistCXVuc2lnbmVkIGNoYXIgc3BkaWZfb3V0OworLQl1bnNpZ25lZCBjaGFyIHNwZGlmX3Byb2Zlc3Npb25hbDsKKy0JdW5zaWduZWQgY2hhciBzcGRpZl9lbXBoYXNpczsKKy0JdW5zaWduZWQgY2hhciBzcGRpZl9ub25hdWRpbzsKKy0JdW5zaWduZWQgaW50IHNwZGlmX3NhbXBsZV9yYXRlOworLQl1bnNpZ25lZCBpbnQgc3lzdGVtX3NhbXBsZV9yYXRlOworLQl1bnNpZ25lZCBpbnQgYXV0b3N5bmNfc2FtcGxlX3JhdGU7CistCXVuc2lnbmVkIGNoYXIgc3lzdGVtX2Nsb2NrX21vZGU7CistCXVuc2lnbmVkIGNoYXIgY2xvY2tfc291cmNlOworLQl1bnNpZ25lZCBjaGFyIGF1dG9zeW5jX3JlZjsKKy0JdW5zaWduZWQgY2hhciBsaW5lX291dDsKKy0JdW5zaWduZWQgY2hhciBwYXNzdGhydTsgCistCXVuc2lnbmVkIGNoYXIgZGFfZ2FpbjsKKy0JdW5zaWduZWQgY2hhciBhZF9nYWluOworLQl1bnNpZ25lZCBjaGFyIHBob25lX2dhaW47CistCXVuc2lnbmVkIGNoYXIgeGxyX2JyZWFrb3V0X2NhYmxlOworLQl1bnNpZ25lZCBjaGFyIGFuYWxvZ19leHRlbnNpb25fYm9hcmQ7CistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0hEU1BfSU9DVExfR0VUX0NPTkZJR19JTkZPIF9JT1IoJ0gnLCAweDQxLCBzdHJ1Y3QgaGRzcF9jb25maWdfaW5mbykKKy0KKy1zdHJ1Y3QgaGRzcF9maXJtd2FyZSB7CistCXZvaWQgX191c2VyICpmaXJtd2FyZV9kYXRhOwkvKiAyNDQxMyB4IDQgYnl0ZXMgKi8KKy19OworLQorLSNkZWZpbmUgU05EUlZfSERTUF9JT0NUTF9VUExPQURfRklSTVdBUkUgX0lPVygnSCcsIDB4NDIsIHN0cnVjdCBoZHNwX2Zpcm13YXJlKQorLQorLXN0cnVjdCBoZHNwX3ZlcnNpb24geworLQllbnVtIEhEU1BfSU9fVHlwZSBpb190eXBlOworLQl1bnNpZ25lZCBzaG9ydCBmaXJtd2FyZV9yZXY7CistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0hEU1BfSU9DVExfR0VUX1ZFUlNJT04gX0lPUignSCcsIDB4NDMsIHN0cnVjdCBoZHNwX3ZlcnNpb24pCistCistc3RydWN0IGhkc3BfbWl4ZXIgeworLQl1bnNpZ25lZCBzaG9ydCBtYXRyaXhbSERTUF9NQVRSSVhfTUlYRVJfU0laRV07CistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0hEU1BfSU9DVExfR0VUX01JWEVSIF9JT1IoJ0gnLCAweDQ0LCBzdHJ1Y3QgaGRzcF9taXhlcikKKy0KKy1zdHJ1Y3QgaGRzcF85NjMyX2FlYiB7CistCWludCBhZWJpOworLQlpbnQgYWVibzsKKy19OworLQorLSNkZWZpbmUgU05EUlZfSERTUF9JT0NUTF9HRVRfOTYzMl9BRUIgX0lPUignSCcsIDB4NDUsIHN0cnVjdCBoZHNwXzk2MzJfYWViKQorLQorLS8qIHR5cGVkZWZzIGZvciBjb21wYXRpYmlsaXR5IHRvIHVzZXItc3BhY2UgKi8KKy10eXBlZGVmIGVudW0gSERTUF9JT19UeXBlIEhEU1BfSU9fVHlwZTsKKy10eXBlZGVmIHN0cnVjdCBoZHNwX3BlYWtfcm1zIGhkc3BfcGVha19ybXNfdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwX2NvbmZpZ19pbmZvIGhkc3BfY29uZmlnX2luZm9fdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwX2Zpcm13YXJlIGhkc3BfZmlybXdhcmVfdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwX3ZlcnNpb24gaGRzcF92ZXJzaW9uX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcF9taXhlciBoZHNwX21peGVyX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcF85NjMyX2FlYiBoZHNwXzk2MzJfYWViX3Q7CistCistI2VuZGlmIC8qIF9fU09VTkRfSERTUF9IICovCisrI2luY2x1ZGUgPGFsc2Evc291bmQvdHlwZV9jb21wYXQuaD4KKysjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL2hkc3AuaD4KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL2hkc3BtLmggYi9pbmNsdWRlL3NvdW5kL2hkc3BtLmgKK2luZGV4IGEzOGYzZjc5Li5hZjZkMTllZCAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvaGRzcG0uaAorKysrIGIvaW5jbHVkZS9zb3VuZC9oZHNwbS5oCitAQCAtMSwyMzIgKzEsMiBAQAorLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKyBXSVRIIExpbnV4LXN5c2NhbGwtbm90ZSAqLworLSNpZm5kZWYgX19TT1VORF9IRFNQTV9ICistI2RlZmluZSBfX1NPVU5EX0hEU1BNX0gKKy0vKgorLSAqICAgQ29weXJpZ2h0IChDKSAyMDAzIFdpbmZyaWVkIFJpdHNjaCAoSUVNKQorLSAqICAgYmFzZWQgb24gaGRzcC5oIGZyb20gVGhvbWFzIENoYXJib25uZWwgKHRob21hc0B1bmRhdGEub3JnKQorLSAqCistICoKKy0gKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKy0gKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCistICoKKy0gKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistICoKKy0gKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSAqICAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCistICovCistCistI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CistCistLyogTWF4aW11bSBjaGFubmVscyBpcyA2NCBldmVuIG9uIDU2TW9kZSB5b3UgaGF2ZSA2NHBsYXliYWNrcyB0byBtYXRyaXggKi8KKy0jZGVmaW5lIEhEU1BNX01BWF9DSEFOTkVMUyAgICAgIDY0CistCistZW51bSBoZHNwbV9pb190eXBlIHsKKy0JTUFESSwKKy0JTUFESWZhY2UsCistCUFJTywKKy0JQUVTMzIsCistCVJheURBVAorLX07CistCistZW51bSBoZHNwbV9zcGVlZCB7CistCXNzLAorLQlkcywKKy0JcXMKKy19OworLQorLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tIElPQ1RMIFBlYWsvUk1TIE1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLQorLXN0cnVjdCBoZHNwbV9wZWFrX3JtcyB7CistCV9fdTMyIGlucHV0X3BlYWtzWzY0XTsKKy0JX191MzIgcGxheWJhY2tfcGVha3NbNjRdOworLQlfX3UzMiBvdXRwdXRfcGVha3NbNjRdOworLQorLQlfX3U2NCBpbnB1dF9ybXNbNjRdOworLQlfX3U2NCBwbGF5YmFja19ybXNbNjRdOworLQlfX3U2NCBvdXRwdXRfcm1zWzY0XTsKKy0KKy0JX191OCBzcGVlZDsgLyogZW51bSB7c3MsIGRzLCBxc30gKi8KKy0JaW50IHN0YXR1czI7CistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0hEU1BNX0lPQ1RMX0dFVF9QRUFLX1JNUyBcCistCV9JT1IoJ0gnLCAweDQyLCBzdHJ1Y3QgaGRzcG1fcGVha19ybXMpCistCistLyogLS0tLS0tLS0tLS0tIENPTkZJRyBibG9jayBJT0NUTCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCistCistc3RydWN0IGhkc3BtX2NvbmZpZyB7CistCXVuc2lnbmVkIGNoYXIgcHJlZl9zeW5jX3JlZjsKKy0JdW5zaWduZWQgY2hhciB3b3JkY2xvY2tfc3luY19jaGVjazsKKy0JdW5zaWduZWQgY2hhciBtYWRpX3N5bmNfY2hlY2s7CistCXVuc2lnbmVkIGludCBzeXN0ZW1fc2FtcGxlX3JhdGU7CistCXVuc2lnbmVkIGludCBhdXRvc3luY19zYW1wbGVfcmF0ZTsKKy0JdW5zaWduZWQgY2hhciBzeXN0ZW1fY2xvY2tfbW9kZTsKKy0JdW5zaWduZWQgY2hhciBjbG9ja19zb3VyY2U7CistCXVuc2lnbmVkIGNoYXIgYXV0b3N5bmNfcmVmOworLQl1bnNpZ25lZCBjaGFyIGxpbmVfb3V0OworLQl1bnNpZ25lZCBpbnQgcGFzc3RocnU7CistCXVuc2lnbmVkIGludCBhbmFsb2dfb3V0OworLX07CistCistI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfQ09ORklHIFwKKy0JX0lPUignSCcsIDB4NDEsIHN0cnVjdCBoZHNwbV9jb25maWcpCistCistLyoKKy0gKiBJZiB0aGVyZSdzIGEgVENPIChUaW1lQ29kZSBPcHRpb24pIGJvYXJkIGluc3RhbGxlZCwKKy0gKiB0aGVyZSBhcmUgZnVydGhlciBvcHRpb25zIGFuZCBzdGF0dXMgZGF0YSBhdmFpbGFibGUuCistICogVGhlIGhkc3BtX2x0YyBzdHJ1Y3R1cmUgY29udGFpbnMgdGhlIGN1cnJlbnQgU01QVEUKKy0gKiB0aW1lY29kZSBhbmQgc29tZSBzdGF0dXMgaW5mb3JtYXRpb24gYW5kIGNhbiBiZQorLSAqIG9idGFpbmVkIHZpYSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfTFRDIG9yIGluIHRoZQorLSAqIGhkc3BtX3N0YXR1cyBzdHJ1Y3QuCistICovCistCistZW51bSBoZHNwbV9sdGNfZm9ybWF0IHsKKy0JZm9ybWF0X2ludmFsaWQsCistCWZwc18yNCwKKy0JZnBzXzI1LAorLQlmcHNfMjk5NywKKy0JZnBzXzMwCistfTsKKy0KKy1lbnVtIGhkc3BtX2x0Y19mcmFtZSB7CistCWZyYW1lX2ludmFsaWQsCistCWRyb3BfZnJhbWUsCistCWZ1bGxfZnJhbWUKKy19OworLQorLWVudW0gaGRzcG1fbHRjX2lucHV0X2Zvcm1hdCB7CistCW50c2MsCistCXBhbCwKKy0Jbm9fdmlkZW8KKy19OworLQorLXN0cnVjdCBoZHNwbV9sdGMgeworLQl1bnNpZ25lZCBpbnQgbHRjOworLQorLQllbnVtIGhkc3BtX2x0Y19mb3JtYXQgZm9ybWF0OworLQllbnVtIGhkc3BtX2x0Y19mcmFtZSBmcmFtZTsKKy0JZW51bSBoZHNwbV9sdGNfaW5wdXRfZm9ybWF0IGlucHV0X2Zvcm1hdDsKKy19OworLQorLSNkZWZpbmUgU05EUlZfSERTUE1fSU9DVExfR0VUX0xUQyBfSU9SKCdIJywgMHg0Niwgc3RydWN0IGhkc3BtX2x0YykKKy0KKy0vKgorLSAqIFRoZSBzdGF0dXMgZGF0YSByZWZsZWN0cyB0aGUgZGV2aWNlJ3MgY3VycmVudCBzdGF0ZQorLSAqIGFzIGRldGVybWluZWQgYnkgdGhlIGNhcmQncyBjb25maWd1cmF0aW9uIGFuZAorLSAqIGNvbm5lY3Rpb24gc3RhdHVzLgorLSAqLworLQorLWVudW0gaGRzcG1fc3luYyB7CistCWhkc3BtX3N5bmNfbm9fbG9jayA9IDAsCistCWhkc3BtX3N5bmNfbG9jayA9IDEsCistCWhkc3BtX3N5bmNfc3luYyA9IDIKKy19OworLQorLWVudW0gaGRzcG1fbWFkaV9pbnB1dCB7CistCWhkc3BtX2lucHV0X29wdGljYWwgPSAwLAorLQloZHNwbV9pbnB1dF9jb2F4ID0gMQorLX07CistCistZW51bSBoZHNwbV9tYWRpX2NoYW5uZWxfZm9ybWF0IHsKKy0JaGRzcG1fZm9ybWF0X2NoXzY0ID0gMCwKKy0JaGRzcG1fZm9ybWF0X2NoXzU2ID0gMQorLX07CistCistZW51bSBoZHNwbV9tYWRpX2ZyYW1lX2Zvcm1hdCB7CistCWhkc3BtX2ZyYW1lXzQ4ID0gMCwKKy0JaGRzcG1fZnJhbWVfOTYgPSAxCistfTsKKy0KKy1lbnVtIGhkc3BtX3N5bmNzb3VyY2UgeworLQlzeW5jc291cmNlX3djID0gMCwKKy0Jc3luY3NvdXJjZV9tYWRpID0gMSwKKy0Jc3luY3NvdXJjZV90Y28gPSAyLAorLQlzeW5jc291cmNlX3N5bmMgPSAzLAorLQlzeW5jc291cmNlX25vbmUgPSA0CistfTsKKy0KKy1zdHJ1Y3QgaGRzcG1fc3RhdHVzIHsKKy0JX191OCBjYXJkX3R5cGU7IC8qIGVudW0gaGRzcG1faW9fdHlwZSAqLworLQllbnVtIGhkc3BtX3N5bmNzb3VyY2UgYXV0b3N5bmNfc291cmNlOworLQorLQlfX3U2NCBjYXJkX2Nsb2NrOworLQlfX3UzMiBtYXN0ZXJfcGVyaW9kOworLQorLQl1bmlvbiB7CistCQlzdHJ1Y3QgeworLQkJCV9fdTggc3luY193YzsgLyogZW51bSBoZHNwbV9zeW5jICovCistCQkJX191OCBzeW5jX21hZGk7IC8qIGVudW0gaGRzcG1fc3luYyAqLworLQkJCV9fdTggc3luY190Y287IC8qIGVudW0gaGRzcG1fc3luYyAqLworLQkJCV9fdTggc3luY19pbjsgLyogZW51bSBoZHNwbV9zeW5jICovCistCQkJX191OCBtYWRpX2lucHV0OyAvKiBlbnVtIGhkc3BtX21hZGlfaW5wdXQgKi8KKy0JCQlfX3U4IGNoYW5uZWxfZm9ybWF0OyAvKiBlbnVtIGhkc3BtX21hZGlfY2hhbm5lbF9mb3JtYXQgKi8KKy0JCQlfX3U4IGZyYW1lX2Zvcm1hdDsgLyogZW51bSBoZHNwbV9tYWRpX2ZyYW1lX2Zvcm1hdCAqLworLQkJfSBtYWRpOworLQl9IGNhcmRfc3BlY2lmaWM7CistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0hEU1BNX0lPQ1RMX0dFVF9TVEFUVVMgXAorLQlfSU9SKCdIJywgMHg0Nywgc3RydWN0IGhkc3BtX3N0YXR1cykKKy0KKy0vKgorLSAqIEdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2FyZCBhbmQgaXRzIGFkZC1vbnMuCistICovCistCistI2RlZmluZSBIRFNQTV9BRERPTl9UQ08gMQorLQorLXN0cnVjdCBoZHNwbV92ZXJzaW9uIHsKKy0JX191OCBjYXJkX3R5cGU7IC8qIGVudW0gaGRzcG1faW9fdHlwZSAqLworLQljaGFyIGNhcmRuYW1lWzIwXTsKKy0JdW5zaWduZWQgaW50IHNlcmlhbDsKKy0JdW5zaWduZWQgc2hvcnQgZmlybXdhcmVfcmV2OworLQlpbnQgYWRkb25zOworLX07CistCistI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfVkVSU0lPTiBfSU9SKCdIJywgMHg0OCwgc3RydWN0IGhkc3BtX3ZlcnNpb24pCistCistLyogLS0tLS0tLS0tLS0tLSBnZXQgTWF0cml4IE1peGVyIElPQ1RMIC0tLS0tLS0tLS0tLS0tLSAqLworLQorLS8qIE1BREkgbWl4ZXI6IDY0aW5wdXRzKzY0cGxheWJhY2sgaW4gNjRvdXRwdXRzID0gODE5MiA9PiAqNEJ5dGUgPQorLSAqIDMyNzY4IEJ5dGVzCistICovCistCistLyogb3JnYW5pc2F0aW9uIGlzIDY0IGNoYW5uZWxmYWRlciBpbiBhIGNvbnRpbnVvdXMgbWVtb3J5IGJsb2NrICovCistLyogZXF1aXZhbGVudCB0byBoYXJkd2FyZSBkZWZpbml0aW9uLCBtYXliZSBmb3IgZnV0dXJlIGZlYXR1cmUgb2YgbW1hcCBvZgorLSAqIHRoZW0KKy0gKi8KKy0vKiBlYWNoIG9mIDY0IG91dHB1dHMgaGFzIDY0IGluZmFkZXIgYW5kIDY0IG91dGZhZGVyOgorLSAgIElucyB0byBPdXRzIG1peGVyW291dF0uaW5baW5dLCBPdXRzdHJlYW1zIHRvIE91dHMgbWl4ZXJbb3V0XS5wYltwYl0gKi8KKy0KKy0jZGVmaW5lIEhEU1BNX01JWEVSX0NIQU5ORUxTIEhEU1BNX01BWF9DSEFOTkVMUworLQorLXN0cnVjdCBoZHNwbV9jaGFubmVsZmFkZXIgeworLQl1bnNpZ25lZCBpbnQgaW5bSERTUE1fTUlYRVJfQ0hBTk5FTFNdOworLQl1bnNpZ25lZCBpbnQgcGJbSERTUE1fTUlYRVJfQ0hBTk5FTFNdOworLX07CistCistc3RydWN0IGhkc3BtX21peGVyIHsKKy0Jc3RydWN0IGhkc3BtX2NoYW5uZWxmYWRlciBjaFtIRFNQTV9NSVhFUl9DSEFOTkVMU107CistfTsKKy0KKy1zdHJ1Y3QgaGRzcG1fbWl4ZXJfaW9jdGwgeworLQlzdHJ1Y3QgaGRzcG1fbWl4ZXIgKm1peGVyOworLX07CistCistLyogdXNlIGluZGlyZWN0IGFjY2VzcyBkdWUgdG8gdGhlIGxpbWl0IG9mIGlvY3RsIGJpdCBzaXplICovCistI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfTUlYRVIgX0lPUignSCcsIDB4NDQsIHN0cnVjdCBoZHNwbV9taXhlcl9pb2N0bCkKKy0KKy0vKiB0eXBlZGVmcyBmb3IgY29tcGF0aWJpbGl0eSB0byB1c2VyLXNwYWNlICovCistdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fcGVha19ybXMgaGRzcG1fcGVha19ybXNfdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwbV9jb25maWdfaW5mbyBoZHNwbV9jb25maWdfaW5mb190OworLXR5cGVkZWYgc3RydWN0IGhkc3BtX3ZlcnNpb24gaGRzcG1fdmVyc2lvbl90OworLXR5cGVkZWYgc3RydWN0IGhkc3BtX2NoYW5uZWxmYWRlciBzbmRfaGRzcG1fY2hhbm5lbGZhZGVyX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fbWl4ZXIgaGRzcG1fbWl4ZXJfdDsKKy0KKy0KKy0jZW5kaWYKKysjaW5jbHVkZSA8YWxzYS9zb3VuZC90eXBlX2NvbXBhdC5oPgorKyNpbmNsdWRlIDxhbHNhL3NvdW5kL3VhcGkvaGRzcG0uaD4KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3NiMTZfY3NwLmggYi9pbmNsdWRlL3NvdW5kL3NiMTZfY3NwLmgKK2luZGV4IGU2NDg1MTQ4Li4yNDEyMWZjYiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvc2IxNl9jc3AuaAorKysrIGIvaW5jbHVkZS9zb3VuZC9zYjE2X2NzcC5oCitAQCAtMSwxMjMgKzEgQEAKKy0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKy0vKgorLSAqICBDb3B5cmlnaHQgKGMpIDE5OTkgYnkgVXJvcyBCaXpqYWsgPHVyb3NAa3NzLWxva2Euc2k+CistICogICAgICAgICAgICAgICAgICAgICAgICBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+CistICoKKy0gKiAgU0IxNkFTUC9BV0UzMiBDU1AgY29udHJvbAorLSAqCistICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAKKy0gKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorLSAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0gKgorLSAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gKiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistICogICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyBVU0EKKy0gKgorLSAqLworLSNpZm5kZWYgX1VBUElfX1NPVU5EX1NCMTZfQ1NQX0gKKy0jZGVmaW5lIF9VQVBJX19TT1VORF9TQjE2X0NTUF9ICistCistCistLyogQ1NQIG1vZGVzICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfTU9ERV9OT05FCQkweDAwCistI2RlZmluZSBTTkRSVl9TQl9DU1BfTU9ERV9EU1BfUkVBRAkweDAxCS8qIFJlY29yZCBmcm9tIERTUCAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX01PREVfRFNQX1dSSVRFCTB4MDIJLyogUGxheSB0byBEU1AgKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9NT0RFX1FTT1VORAkJMHgwNAkvKiBRU291bmQgKi8KKy0KKy0vKiBDU1AgbG9hZCBmbGFncyAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX0xPQURfRlJPTVVTRVIJMHgwMQorLSNkZWZpbmUgU05EUlZfU0JfQ1NQX0xPQURfSU5JVEJMT0NLCTB4MDIKKy0KKy0vKiBDU1Agc2FtcGxlIHdpZHRoICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfU0FNUExFXzhCSVQJCTB4MDEKKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9TQU1QTEVfMTZCSVQJCTB4MDIKKy0KKy0vKiBDU1AgY2hhbm5lbHMgKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9NT05PCQkJMHgwMQorLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1NURVJFTwkJMHgwMgorLQorLS8qIENTUCByYXRlcyAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1JBVEVfODAwMAkJMHgwMQorLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1JBVEVfMTEwMjUJCTB4MDIKKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9SQVRFXzIyMDUwCQkweDA0CistI2RlZmluZSBTTkRSVl9TQl9DU1BfUkFURV80NDEwMAkJMHgwOAorLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1JBVEVfQUxMCQkweDBmCistCistLyogQ1NQIHJ1bm5pbmcgc3RhdGUgKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9TVF9JRExFCQkweDAwCistI2RlZmluZSBTTkRSVl9TQl9DU1BfU1RfTE9BREVECQkweDAxCistI2RlZmluZSBTTkRSVl9TQl9DU1BfU1RfUlVOTklORwkJMHgwMgorLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1NUX1BBVVNFRAkJMHgwNAorLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1NUX0FVVE8JCTB4MDgKKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9TVF9RU09VTkQJCTB4MTAKKy0KKy0vKiBtYXhpbXVtIFFTb3VuZCB2YWx1ZSAoMTgwIGRlZ3JlZXMgcmlnaHQpICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfUVNPVU5EX01BWF9SSUdIVAkweDIwCistCistLyogbWF4aW11bSBtaWNyb2NvZGUgUklGRiBmaWxlIHNpemUgKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9NQVhfTUlDUk9DT0RFX0ZJTEVfU0laRQkweDMwMDAKKy0KKy0vKiBtaWNyb2NvZGUgaGVhZGVyICovCistc3RydWN0IHNuZF9zYl9jc3BfbWNfaGVhZGVyIHsKKy0JY2hhciBjb2RlY19uYW1lWzE2XTsJCS8qIGlkIG5hbWUgb2YgY29kZWMgKi8KKy0JdW5zaWduZWQgc2hvcnQgZnVuY19yZXE7CS8qIHJlcXVlc3RlZCBmdW5jdGlvbiAqLworLX07CistCistLyogbWljcm9jb2RlIHRvIGJlIGxvYWRlZCAqLworLXN0cnVjdCBzbmRfc2JfY3NwX21pY3JvY29kZSB7CistCXN0cnVjdCBzbmRfc2JfY3NwX21jX2hlYWRlciBpbmZvOworLQl1bnNpZ25lZCBjaGFyIGRhdGFbU05EUlZfU0JfQ1NQX01BWF9NSUNST0NPREVfRklMRV9TSVpFXTsKKy19OworLQorLS8qIHN0YXJ0IENTUCB3aXRoIHNhbXBsZV93aWR0aCBpbiBtb25vL3N0ZXJlbyAqLworLXN0cnVjdCBzbmRfc2JfY3NwX3N0YXJ0IHsKKy0JaW50IHNhbXBsZV93aWR0aDsJLyogc2FtcGxlIHdpZHRoLCBsb29rIGFib3ZlICovCistCWludCBjaGFubmVsczsJCS8qIGNoYW5uZWxzLCBsb29rIGFib3ZlICovCistfTsKKy0KKy0vKiBDU1AgaW5mb3JtYXRpb24gKi8KKy1zdHJ1Y3Qgc25kX3NiX2NzcF9pbmZvIHsKKy0JY2hhciBjb2RlY19uYW1lWzE2XTsJCS8qIGlkIG5hbWUgb2YgY29kZWMgKi8KKy0JdW5zaWduZWQgc2hvcnQgZnVuY19ucjsJCS8qIGZ1bmN0aW9uIG51bWJlciAqLworLQl1bnNpZ25lZCBpbnQgYWNjX2Zvcm1hdDsJLyogYWNjZXB0ZWQgUENNIGZvcm1hdHMgKi8KKy0JdW5zaWduZWQgc2hvcnQgYWNjX2NoYW5uZWxzOwkvKiBhY2NlcHRlZCBjaGFubmVscyAqLworLQl1bnNpZ25lZCBzaG9ydCBhY2Nfd2lkdGg7CS8qIGFjY2VwdGVkIHNhbXBsZSB3aWR0aCAqLworLQl1bnNpZ25lZCBzaG9ydCBhY2NfcmF0ZXM7CS8qIGFjY2VwdGVkIHNhbXBsZSByYXRlcyAqLworLQl1bnNpZ25lZCBzaG9ydCBjc3BfbW9kZTsJLyogQ1NQIG1vZGUsIHNlZSBhYm92ZSAqLworLQl1bnNpZ25lZCBzaG9ydCBydW5fY2hhbm5lbHM7CS8qIGN1cnJlbnQgY2hhbm5lbHMgICovCistCXVuc2lnbmVkIHNob3J0IHJ1bl93aWR0aDsJLyogY3VycmVudCBzYW1wbGUgd2lkdGggKi8KKy0JdW5zaWduZWQgc2hvcnQgdmVyc2lvbjsJCS8qIHZlcnNpb24gaWQ6IDB4MTAgLSAweDFmICovCistCXVuc2lnbmVkIHNob3J0IHN0YXRlOwkJLyogc3RhdGUgYml0cyAqLworLX07CistCistLyogSFdERVAgY29udHJvbHMgKi8KKy0vKiBnZXQgQ1NQIGluZm9ybWF0aW9uICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfSU9DVExfSU5GTwkJX0lPUignSCcsIDB4MTAsIHN0cnVjdCBzbmRfc2JfY3NwX2luZm8pCistLyogbG9hZCBtaWNyb2NvZGUgdG8gQ1NQICovCistLyogTk9URTogc3RydWN0IHNuZF9zYl9jc3BfbWljcm9jb2RlIG92ZXJmbG93cyB0aGUgbWF4IHNpemUgKDEzIGJpdHMpCistICogZGVmaW5lZCBmb3Igc29tZSBhcmNoaXRlY3R1cmVzIGxpa2UgTUlQUywgYW5kIGl0IGxlYWRzIHRvIGJ1aWxkIGVycm9ycy4KKy0gKiAoeDg2IGFuZCBjbyBoYXZlIDE0LWJpdCBzaXplLCB0aHVzIGl0J3MgdmFsaWQsIHRob3VnaC4pCistICogQXMgYSB3b3JrYXJvdW5kIGZvciBza2lwcGluZyB0aGUgc2l6ZS1saW1pdCBjaGVjaywgaGVyZSB3ZSBkb24ndCB1c2UgdGhlCistICogbm9ybWFsIF9JT1coKSBtYWNybyBidXQgX0lPQygpIHdpdGggdGhlIG1hbnVhbCBhcmd1bWVudC4KKy0gKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9JT0NUTF9MT0FEX0NPREUJXAorLQlfSU9DKF9JT0NfV1JJVEUsICdIJywgMHgxMSwgc2l6ZW9mKHN0cnVjdCBzbmRfc2JfY3NwX21pY3JvY29kZSkpCistLyogdW5sb2FkIG1pY3JvY29kZSBmcm9tIENTUCAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX0lPQ1RMX1VOTE9BRF9DT0RFCV9JTygnSCcsIDB4MTIpCistLyogc3RhcnQgQ1NQICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfSU9DVExfU1RBUlQJCV9JT1coJ0gnLCAweDEzLCBzdHJ1Y3Qgc25kX3NiX2NzcF9zdGFydCkKKy0vKiBzdG9wIENTUCAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX0lPQ1RMX1NUT1AJCV9JTygnSCcsIDB4MTQpCistLyogcGF1c2UgQ1NQIGFuZCBETUEgdHJhbnNmZXIgKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9JT0NUTF9QQVVTRQkJX0lPKCdIJywgMHgxNSkKKy0vKiByZXN0YXJ0IENTUCBhbmQgRE1BIHRyYW5zZmVyICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfSU9DVExfUkVTVEFSVAlfSU8oJ0gnLCAweDE2KQorLQorLQorLSNlbmRpZiAvKiBfVUFQSV9fU09VTkRfU0IxNl9DU1BfSCAqLworKyNpbmNsdWRlIDxhbHNhL3NvdW5kL3VhcGkvc2IxNl9jc3AuaD4KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3NzY2FwZV9pb2N0bC5oIGIvaW5jbHVkZS9zb3VuZC9zc2NhcGVfaW9jdGwuaAoraW5kZXggYzY2NTNlYmYuLjIzYjQ4ZDMzIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC9zc2NhcGVfaW9jdGwuaAorKysrIGIvaW5jbHVkZS9zb3VuZC9zc2NhcGVfaW9jdGwuaAorQEAgLTEsMjEgKzEgQEAKKy0jaWZuZGVmIFNTQ0FQRV9JT0NUTF9ICistI2RlZmluZSBTU0NBUEVfSU9DVExfSAorLQorLQorLXN0cnVjdCBzc2NhcGVfYm9vdGJsb2NrCisteworLSAgdW5zaWduZWQgY2hhciBjb2RlWzI1Nl07CistICB1bnNpZ25lZCB2ZXJzaW9uOworLX07CistCistI2RlZmluZSBTU0NBUEVfTUlDUk9DT0RFX1NJWkUgIDY1NTM2CistCistc3RydWN0IHNzY2FwZV9taWNyb2NvZGUKKy17CistICB1bnNpZ25lZCBjaGFyICpjb2RlOworLX07CistCistI2RlZmluZSBTTkRfU1NDQVBFX0xPQURfQk9PVEIgIF9JT1dSKCdQJywgMTAwLCBzdHJ1Y3Qgc3NjYXBlX2Jvb3RibG9jaykKKy0jZGVmaW5lIFNORF9TU0NBUEVfTE9BRF9NQ09ERSAgX0lPVyAoJ1AnLCAxMDEsIHN0cnVjdCBzc2NhcGVfbWljcm9jb2RlKQorLQorLSNlbmRpZgorKyNpbmNsdWRlIDxhbHNhL3NvdW5kL3VhcGkvc3NjYXBlX2lvY3RsLmg+CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC90bHYuaCBiL2luY2x1ZGUvc291bmQvdGx2LmgKK2luZGV4IDdkNmQ2NWY2Li5lNDM1YTVmYyAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvdGx2LmgKKysrKyBiL2luY2x1ZGUvc291bmQvdGx2LmgKK0BAIC0xLDExNyArMSBAQAorLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKyBXSVRIIExpbnV4LXN5c2NhbGwtbm90ZSAqLworLS8qCistICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAqICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gKiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCistICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLSAqCistICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICogICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLSAqLworLQorLSNpZm5kZWYgX19VQVBJX1NPVU5EX1RMVl9ICistI2RlZmluZSBfX1VBUElfU09VTkRfVExWX0gKKy0KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZUX0NPTlRBSU5FUiAwCS8qIG9uZSBsZXZlbCBkb3duIC0gZ3JvdXAgb2YgVExWcyAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVlRfREJfU0NBTEUJMSAgICAgICAvKiBkQiBzY2FsZSAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVlRfREJfTElORUFSIDIJLyogbGluZWFyIHZvbHVtZSAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVlRfREJfUkFOR0UgMwkvKiBkQiByYW5nZSBjb250YWluZXIgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZUX0RCX01JTk1BWCA0CS8qIGRCIHNjYWxlIHdpdGggbWluL21heCAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVlRfREJfTUlOTUFYX01VVEUgNQkvKiBkQiBzY2FsZSB3aXRoIG1pbi9tYXggd2l0aCBtdXRlICovCistCistLyoKKy0gKiBjaGFubmVsLW1hcHBpbmcgVExWIGl0ZW1zCistICogIFRMViBsZW5ndGggbXVzdCBtYXRjaCB3aXRoIG51bV9jaGFubmVscworLSAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVlRfQ0hNQVBfRklYRUQJMHgxMDEJLyogZml4ZWQgY2hhbm5lbCBwb3NpdGlvbiAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVlRfQ0hNQVBfVkFSCTB4MTAyCS8qIGNoYW5uZWxzIGZyZWVseSBzd2FwcGFibGUgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZUX0NITUFQX1BBSVJFRAkweDEwMwkvKiBwYWlyLXdpc2Ugc3dhcHBhYmxlICovCistCistLyoKKy0gKiBUTFYgc3RydWN0dXJlIGlzIHJpZ2h0IGJlaGluZCB0aGUgc3RydWN0IHNuZF9jdGxfdGx2OgorLSAqICAgdW5zaWduZWQgaW50IHR5cGUgIAktIHNlZSBTTkRSVl9DVExfVExWVF8qCistICogICB1bnNpZ25lZCBpbnQgbGVuZ3RoCistICogICAuLi4uIGRhdGEgYWxpZ25lZCB0byBzaXplb2YodW5zaWduZWQgaW50KSwgdXNlCistICogICAgICAgIGJsb2NrX2xlbmd0aCA9IChsZW5ndGggKyAoc2l6ZW9mKHVuc2lnbmVkIGludCkgLSAxKSkgJgorLSAqICAgICAgICAgICAgICAgICAgICAgICB+KHNpemVvZih1bnNpZ25lZCBpbnQpIC0gMSkpIC4uLi4KKy0gKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZEX0lURU0odHlwZSwgLi4uKSBcCistCSh0eXBlKSwgU05EUlZfQ1RMX1RMVkRfTEVOR1RIKF9fVkFfQVJHU19fKSwgX19WQV9BUkdTX18KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZEX0xFTkdUSCguLi4pIFwKKy0JKCh1bnNpZ25lZCBpbnQpc2l6ZW9mKChjb25zdCB1bnNpZ25lZCBpbnRbXSkgeyBfX1ZBX0FSR1NfXyB9KSkKKy0KKy0vKiBBY2Nlc3NvciBvZmZzZXRzIGZvciBUTFYgZGF0YSBpdGVtcyAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVk9fVFlQRQkJMAorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVk9fTEVOCQkxCistCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9DT05UQUlORVJfSVRFTSguLi4pIFwKKy0JU05EUlZfQ1RMX1RMVkRfSVRFTShTTkRSVl9DVExfVExWVF9DT05UQUlORVIsIF9fVkFfQVJHU19fKQorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREVDTEFSRV9DT05UQUlORVIobmFtZSwgLi4uKSBcCistCXVuc2lnbmVkIGludCBuYW1lW10gPSB7IFwKKy0JCVNORFJWX0NUTF9UTFZEX0NPTlRBSU5FUl9JVEVNKF9fVkFfQVJHU19fKSBcCistCX0KKy0KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RCX1NDQUxFX01BU0sJMHhmZmZmCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9NVVRFCTB4MTAwMDAKKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RCX1NDQUxFX0lURU0obWluLCBzdGVwLCBtdXRlKSBcCistCVNORFJWX0NUTF9UTFZEX0lURU0oU05EUlZfQ1RMX1RMVlRfREJfU0NBTEUsIFwKKy0JCQkgICAgKG1pbiksIFwKKy0JCQkgICAgKChzdGVwKSAmIFNORFJWX0NUTF9UTFZEX0RCX1NDQUxFX01BU0spIHwgXAorLQkJCSAgICAgKChtdXRlKSA/IFNORFJWX0NUTF9UTFZEX0RCX1NDQUxFX01VVEUgOiAwKSkKKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RFQ0xBUkVfREJfU0NBTEUobmFtZSwgbWluLCBzdGVwLCBtdXRlKSBcCistCXVuc2lnbmVkIGludCBuYW1lW10gPSB7IFwKKy0JCVNORFJWX0NUTF9UTFZEX0RCX1NDQUxFX0lURU0obWluLCBzdGVwLCBtdXRlKSBcCistCX0KKy0KKy0vKiBBY2Nlc3NvciBvZmZzZXRzIGZvciBtaW4sIG11dGUgYW5kIHN0ZXAgaXRlbXMgaW4gZEIgc2NhbGUgdHlwZSBUTFYgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZPX0RCX1NDQUxFX01JTgkJMgorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVk9fREJfU0NBTEVfTVVURV9BTkRfU1RFUAkzCistCistLyogZEIgc2NhbGUgc3BlY2lmaWVkIHdpdGggbWluL21heCB2YWx1ZXMgaW5zdGVhZCBvZiBzdGVwICovCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9NSU5NQVhfSVRFTShtaW5fZEIsIG1heF9kQikgXAorLQlTTkRSVl9DVExfVExWRF9JVEVNKFNORFJWX0NUTF9UTFZUX0RCX01JTk1BWCwgKG1pbl9kQiksIChtYXhfZEIpKQorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfTUlOTUFYX01VVEVfSVRFTShtaW5fZEIsIG1heF9kQikgXAorLQlTTkRSVl9DVExfVExWRF9JVEVNKFNORFJWX0NUTF9UTFZUX0RCX01JTk1BWF9NVVRFLCAobWluX2RCKSwgKG1heF9kQikpCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9ERUNMQVJFX0RCX01JTk1BWChuYW1lLCBtaW5fZEIsIG1heF9kQikgXAorLQl1bnNpZ25lZCBpbnQgbmFtZVtdID0geyBcCistCQlTTkRSVl9DVExfVExWRF9EQl9NSU5NQVhfSVRFTShtaW5fZEIsIG1heF9kQikgXAorLQl9CistI2RlZmluZSBTTkRSVl9DVExfVExWRF9ERUNMQVJFX0RCX01JTk1BWF9NVVRFKG5hbWUsIG1pbl9kQiwgbWF4X2RCKSBcCistCXVuc2lnbmVkIGludCBuYW1lW10gPSB7IFwKKy0JCVNORFJWX0NUTF9UTFZEX0RCX01JTk1BWF9NVVRFX0lURU0obWluX2RCLCBtYXhfZEIpIFwKKy0JfQorLQorLS8qIEFjY2Vzc29yIG9mZnNldHMgZm9yIG1pbiwgbWF4IGl0ZW1zIGluIGRiLW1pbm1heCB0eXBlcyBvZiBUTFYuICovCistI2RlZmluZSBTTkRSVl9DVExfVExWT19EQl9NSU5NQVhfTUlOCTIKKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZPX0RCX01JTk1BWF9NQVgJMworLQorLS8qIGxpbmVhciB2b2x1bWUgYmV0d2VlbiBtaW5fZEIgYW5kIG1heF9kQiAoLjAxZEIgdW5pdCkgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RCX0xJTkVBUl9JVEVNKG1pbl9kQiwgbWF4X2RCKSBcCistCVNORFJWX0NUTF9UTFZEX0lURU0oU05EUlZfQ1RMX1RMVlRfREJfTElORUFSLCAobWluX2RCKSwgKG1heF9kQikpCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9ERUNMQVJFX0RCX0xJTkVBUihuYW1lLCBtaW5fZEIsIG1heF9kQikgXAorLQl1bnNpZ25lZCBpbnQgbmFtZVtdID0geyBcCistCQlTTkRSVl9DVExfVExWRF9EQl9MSU5FQVJfSVRFTShtaW5fZEIsIG1heF9kQikgXAorLQl9CistCistLyogQWNjZXNzb3Igb2Zmc2V0cyBmb3IgbWluLCBtYXggaXRlbXMgaW4gZGItbGluZWFyIHR5cGUgb2YgVExWLiAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVk9fREJfTElORUFSX01JTgkyCistI2RlZmluZSBTTkRSVl9DVExfVExWT19EQl9MSU5FQVJfTUFYCTMKKy0KKy0vKiBkQiByYW5nZSBjb250YWluZXI6CistICogSXRlbXMgaW4gZEIgcmFuZ2UgY29udGFpbmVyIG11c3QgYmUgb3JkZXJlZCBieSB0aGVpciB2YWx1ZXMgYW5kIGJ5IHRoZWlyCistICogZEIgdmFsdWVzLiBUaGlzIGltcGxpZXMgdGhhdCBsYXJnZXIgdmFsdWVzIG11c3QgY29ycmVzcG9uZCB3aXRoIGxhcmdlcgorLSAqIGRCIHZhbHVlcyAod2hpY2ggaXMgYWxzbyByZXF1aXJlZCBmb3IgYWxsIG90aGVyIG1peGVyIGNvbnRyb2xzKS4KKy0gKi8KKy0vKiBFYWNoIGl0ZW0gaXM6IDxtaW4+IDxtYXg+IDxUTFY+ICovCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9SQU5HRV9JVEVNKC4uLikgXAorLQlTTkRSVl9DVExfVExWRF9JVEVNKFNORFJWX0NUTF9UTFZUX0RCX1JBTkdFLCBfX1ZBX0FSR1NfXykKKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RFQ0xBUkVfREJfUkFOR0UobmFtZSwgLi4uKSBcCistCXVuc2lnbmVkIGludCBuYW1lW10gPSB7IFwKKy0JCVNORFJWX0NUTF9UTFZEX0RCX1JBTkdFX0lURU0oX19WQV9BUkdTX18pIFwKKy0JfQorLQorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfR0FJTl9NVVRFCS05OTk5OTk5CistCistI2VuZGlmCisrI2luY2x1ZGUgPGFsc2Evc291bmQvdWFwaS90bHYuaD4KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3R5cGVfY29tcGF0LmggYi9pbmNsdWRlL3NvdW5kL3R5cGVfY29tcGF0LmgKK2luZGV4IGU5NzNmZjMxLi5kNDc5MGMxZiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvdHlwZV9jb21wYXQuaAorKysrIGIvaW5jbHVkZS9zb3VuZC90eXBlX2NvbXBhdC5oCitAQCAtMyw2ICszLDkgQEAKKyAKKyAjaWZuZGVmIERPQ19ISURERU4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisrI2lmZGVmIF9fbGludXhfXworKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorKyNlbHNlCisgdHlwZWRlZiB1aW50OF90IF9fdTg7CisgdHlwZWRlZiB1aW50MTZfdCBfX3UxNjsKKyB0eXBlZGVmIHVpbnQzMl90IF9fdTMyOworQEAgLTM3LDYgKzQwLDE2IEBAIHR5cGVkZWYgaW50MzJfdCBfX3MzMjsKKyAjZGVmaW5lIF9fYmUzMiBfX3UzMgorICNkZWZpbmUgX19iZTE2IF9fdTE2CisgI2RlZmluZSBfX2JlOCAgX191OAorKyNlbmRpZgorKworKyNpZm5kZWYgX191c2VyCisrI2RlZmluZSBfX3VzZXIKKysjZW5kaWYKKysKKysjaWZuZGVmIF9fcGFja2VkCisrI2RlZmluZSBfX3BhY2tlZCBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSkKKysjZW5kaWYKKysKKyAjZW5kaWYgLyogRE9DX0hJRERFTiAqLworIAorICNlbmRpZiAvKiBfX1RZUEVfQ09NUEFUX0ggKi8KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvTWFrZWZpbGUuYW0gYi9pbmNsdWRlL3NvdW5kL3VhcGkvTWFrZWZpbGUuYW0KK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uOTkxOTcxMDgKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9NYWtlZmlsZS5hbQorQEAgLTAsMCArMSw2IEBACisrYWxzYXNvdW5kdWFwaWluY2x1ZGVkaXIgPSAke2luY2x1ZGVkaXJ9L2Fsc2Evc291bmQvdWFwaQorKworK2Fsc2Fzb3VuZHVhcGlpbmNsdWRlX0hFQURFUlMgPSBhc291bmRfZm0uaCBoZHNwLmggaGRzcG0uaCBzYjE2X2NzcC5oIFwKKysJCQkgICBzc2NhcGVfaW9jdGwuaCBlbXUxMGsxLmggYXNvYy5oIHRsdi5oCisrCisrbm9pbnN0X0hFQURFUlMgPSBhc291bmQuaCBhc2VxdWVuY2VyLmgKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvYXNlcXVlbmNlci5oIGIvaW5jbHVkZS9zb3VuZC91YXBpL2FzZXF1ZW5jZXIuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi5hNzVlMTRlZAorLS0tIC9kZXYvbnVsbAorKysrIGIvaW5jbHVkZS9zb3VuZC91YXBpL2FzZXF1ZW5jZXIuaAorQEAgLTAsMCArMSw2MTIgQEAKKysvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKysvKgorKyAqICBNYWluIGhlYWRlciBmaWxlIGZvciB0aGUgQUxTQSBzZXF1ZW5jZXIKKysgKiAgQ29weXJpZ2h0IChjKSAxOTk4LTE5OTkgYnkgRnJhbmsgdmFuIGRlIFBvbCA8ZnZkcG9sQGNvaWwuZGVtb24ubmw+CisrICogICAgICAgICAgICAoYykgMTk5OC0xOTk5IGJ5IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+CisrICoKKysgKgorKyAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgKiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICogICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyBVU0EKKysgKgorKyAqLworKyNpZm5kZWYgX1VBUElfX1NPVU5EX0FTRVFVRU5DRVJfSAorKyNkZWZpbmUgX1VBUElfX1NPVU5EX0FTRVFVRU5DRVJfSAorKworKyNpbmNsdWRlIDxzb3VuZC9hc291bmQuaD4KKysKKysvKiogdmVyc2lvbiBvZiB0aGUgc2VxdWVuY2VyICovCisrI2RlZmluZSBTTkRSVl9TRVFfVkVSU0lPTiBTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDEsIDAsIDIpCisrCisrLyoqCisrICogZGVmaW5pdGlvbiBvZiBzZXF1ZW5jZXIgZXZlbnQgdHlwZXMKKysgKi8KKysKKysvKiogc3lzdGVtIG1lc3NhZ2VzCisrICogZXZlbnQgZGF0YSB0eXBlID0gI3NuZF9zZXFfcmVzdWx0CisrICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfU1lTVEVNCQkwCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUkVTVUxUCQkxCisrCisrLyoqIG5vdGUgbWVzc2FnZXMgKGNoYW5uZWwgc3BlY2lmaWMpCisrICogZXZlbnQgZGF0YSB0eXBlID0gI3NuZF9zZXFfZXZfbm90ZQorKyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX05PVEUJCTUKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9OT1RFT04JCTYKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9OT1RFT0ZGCQk3CisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfS0VZUFJFU1MJOAorKwkKKysvKiogY29udHJvbCBtZXNzYWdlcyAoY2hhbm5lbCBzcGVjaWZpYykKKysgKiBldmVudCBkYXRhIHR5cGUgPSAjc25kX3NlcV9ldl9jdHJsCisrICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ09OVFJPTExFUgkxMAorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1BHTUNIQU5HRQkxMQorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NIQU5QUkVTUwkxMgorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1BJVENIQkVORAkxMwkvKio8IGZyb20gLTgxOTIgdG8gODE5MSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NPTlRST0wxNAkxNAkvKio8IDE0IGJpdCBjb250cm9sbGVyIHZhbHVlICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTk9OUkVHUEFSQU0JMTUJLyoqPCAxNCBiaXQgTlJQTiBhZGRyZXNzICsgMTQgYml0IHVuc2lnbmVkIHZhbHVlICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUkVHUEFSQU0JMTYJLyoqPCAxNCBiaXQgUlBOIGFkZHJlc3MgKyAxNCBiaXQgdW5zaWduZWQgdmFsdWUgKi8KKysKKysvKiogc3luY2hyb25pc2F0aW9uIG1lc3NhZ2VzCisrICogZXZlbnQgZGF0YSB0eXBlID0gI3NuZF9zZXFfZXZfY3RybAorKyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NPTkdQT1MJCTIwCS8qIFNvbmcgUG9zaXRpb24gUG9pbnRlciB3aXRoIExTQiBhbmQgTVNCIHZhbHVlcyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NPTkdTRUwJCTIxCS8qIFNvbmcgU2VsZWN0IHdpdGggc29uZyBJRCBudW1iZXIgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9RRlJBTUUJCTIyCS8qIG1pZGkgdGltZSBjb2RlIHF1YXJ0ZXIgZnJhbWUgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9USU1FU0lHTgkyMwkvKiBTTUYgVGltZSBTaWduYXR1cmUgZXZlbnQgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9LRVlTSUdOCQkyNAkvKiBTTUYgS2V5IFNpZ25hdHVyZSBldmVudCAqLworKwkgICAgICAgIAorKy8qKiB0aW1lciBtZXNzYWdlcworKyAqIGV2ZW50IGRhdGEgdHlwZSA9IHNuZF9zZXFfZXZfcXVldWVfY29udHJvbAorKyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NUQVJUCQkzMAkvKiBtaWRpIFJlYWwgVGltZSBTdGFydCBtZXNzYWdlICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ09OVElOVUUJMzEJLyogbWlkaSBSZWFsIFRpbWUgQ29udGludWUgbWVzc2FnZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NUT1AJCTMyCS8qIG1pZGkgUmVhbCBUaW1lIFN0b3AgbWVzc2FnZSAqLwkKKysjZGVmaW5lCVNORFJWX1NFUV9FVkVOVF9TRVRQT1NfVElDSwkzMwkvKiBzZXQgdGljayBxdWV1ZSBwb3NpdGlvbiAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NFVFBPU19USU1FCTM0CS8qIHNldCByZWFsdGltZSBxdWV1ZSBwb3NpdGlvbiAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1RFTVBPCQkzNQkvKiAoU01GKSBUZW1wbyBldmVudCAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NMT0NLCQkzNgkvKiBtaWRpIFJlYWwgVGltZSBDbG9jayBtZXNzYWdlICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVElDSwkJMzcJLyogbWlkaSBSZWFsIFRpbWUgVGljayBtZXNzYWdlICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUVVFVUVfU0tFVwkzOAkvKiBza2V3IHF1ZXVlIHRlbXBvICovCisrCisrLyoqIG90aGVycworKyAqIGV2ZW50IGRhdGEgdHlwZSA9IG5vbmUKKysgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9UVU5FX1JFUVVFU1QJNDAJLyogdHVuZSByZXF1ZXN0ICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUkVTRVQJCTQxCS8qIHJlc2V0IHRvIHBvd2VyLW9uIHN0YXRlICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfU0VOU0lORwkJNDIJLyogImFjdGl2ZSBzZW5zaW5nIiBldmVudCAqLworKworKy8qKiBlY2hvIGJhY2ssIGtlcm5lbCBwcml2YXRlIG1lc3NhZ2VzCisrICogZXZlbnQgZGF0YSB0eXBlID0gYW55IHR5cGUKKysgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9FQ0hPCQk1MAkvKiBlY2hvIGV2ZW50ICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfT1NTCQk1MQkvKiBPU1MgcmF3IGV2ZW50ICovCisrCisrLyoqIHN5c3RlbSBzdGF0dXMgbWVzc2FnZXMgKGJyb2FkY2FzdCBmb3Igc3Vic2NyaWJlcnMpCisrICogZXZlbnQgZGF0YSB0eXBlID0gc25kX3NlcV9hZGRyCisrICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ0xJRU5UX1NUQVJUCTYwCS8qIG5ldyBjbGllbnQgaGFzIGNvbm5lY3RlZCAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NMSUVOVF9FWElUCTYxCS8qIGNsaWVudCBoYXMgbGVmdCB0aGUgc3lzdGVtICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ0xJRU5UX0NIQU5HRQk2MgkvKiBjbGllbnQgc3RhdHVzL2luZm8gaGFzIGNoYW5nZWQgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9QT1JUX1NUQVJUCTYzCS8qIG5ldyBwb3J0IHdhcyBjcmVhdGVkICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUE9SVF9FWElUCTY0CS8qIHBvcnQgd2FzIGRlbGV0ZWQgZnJvbSBzeXN0ZW0gKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9QT1JUX0NIQU5HRQk2NQkvKiBwb3J0IHN0YXR1cy9pbmZvIGhhcyBjaGFuZ2VkICovCisrCisrLyoqIHBvcnQgY29ubmVjdGlvbiBjaGFuZ2VzCisrICogZXZlbnQgZGF0YSB0eXBlID0gc25kX3NlcV9jb25uZWN0CisrICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUE9SVF9TVUJTQ1JJQkVECTY2CS8qIHBvcnRzIGNvbm5lY3RlZCAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1BPUlRfVU5TVUJTQ1JJQkVEIDY3CS8qIHBvcnRzIGRpc2Nvbm5lY3RlZCAqLworKworKy8qIDcwLTg5OiAgc3ludGhlc2l6ZXIgZXZlbnRzIC0gb2Jzb2xldGVkICovCisrCisrLyoqIHVzZXItZGVmaW5lZCBldmVudHMgd2l0aCBmaXhlZCBsZW5ndGgKKysgKiBldmVudCBkYXRhIHR5cGUgPSBhbnkKKysgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1IwCQk5MAorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjEJCTkxCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSMgkJOTIKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1IzCQk5MworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjQJCTk0CisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSNQkJOTUKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1I2CQk5NgorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjcJCTk3CisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSOAkJOTgKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1I5CQk5OQorKworKy8qIDEwMC0xMTg6IGluc3RydW1lbnQgbGF5ZXIgLSBvYnNvbGV0ZWQgKi8KKysvKiAxMTktMTI5OiByZXNlcnZlZCAqLworKworKy8qIDEzMC0xMzk6IHZhcmlhYmxlIGxlbmd0aCBldmVudHMKKysgKiBldmVudCBkYXRhIHR5cGUgPSBzbmRfc2VxX2V2X2V4dAorKyAqIChTTkRSVl9TRVFfRVZFTlRfTEVOR1RIX1ZBUklBQkxFIG11c3QgYmUgc2V0KQorKyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NZU0VYCQkxMzAJLyogc3lzdGVtIGV4Y2x1c2l2ZSBkYXRhICh2YXJpYWJsZSBsZW5ndGgpICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQk9VTkNFCQkxMzEJLyogZXJyb3IgZXZlbnQgKi8KKysvKiAxMzItMTM0OiByZXNlcnZlZCAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUl9WQVIwCTEzNQorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUl9WQVIxCTEzNgorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUl9WQVIyCTEzNworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUl9WQVIzCTEzOAorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUl9WQVI0CTEzOQorKworKy8qIDE1MC0xNTE6IGtlcm5lbCBldmVudHMgd2l0aCBxdW90ZSAtIERPIE5PVCB1c2UgaW4gdXNlciBjbGllbnRzICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfS0VSTkVMX0VSUk9SCTE1MAorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0tFUk5FTF9RVU9URQkxNTEJLyogb2Jzb2xldGUgKi8KKysKKysvKiAxNTItMTkxOiByZXNlcnZlZCAqLworKworKy8qIDE5Mi0yNTQ6IGhhcmR3YXJlIHNwZWNpZmljIGV2ZW50cyAqLworKworKy8qIDI1NTogc3BlY2lhbCBldmVudCAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX05PTkUJCTI1NQorKworKworK3R5cGVkZWYgdW5zaWduZWQgY2hhciBzbmRfc2VxX2V2ZW50X3R5cGVfdDsKKysKKysvKiogZXZlbnQgYWRkcmVzcyAqLworK3N0cnVjdCBzbmRfc2VxX2FkZHIgeworKwl1bnNpZ25lZCBjaGFyIGNsaWVudDsJLyoqPCBDbGllbnQgbnVtYmVyOiAgICAgICAgIDAuLjI1NSwgMjU1ID0gYnJvYWRjYXN0IHRvIGFsbCBjbGllbnRzICovCisrCXVuc2lnbmVkIGNoYXIgcG9ydDsJLyoqPCBQb3J0IHdpdGhpbiBjbGllbnQ6ICAgIDAuLjI1NSwgMjU1ID0gYnJvYWRjYXN0IHRvIGFsbCBwb3J0cyAqLworK307CisrCisrLyoqIHBvcnQgY29ubmVjdGlvbiAqLworK3N0cnVjdCBzbmRfc2VxX2Nvbm5lY3QgeworKwlzdHJ1Y3Qgc25kX3NlcV9hZGRyIHNlbmRlcjsKKysJc3RydWN0IHNuZF9zZXFfYWRkciBkZXN0OworK307CisrCisrCisrI2RlZmluZSBTTkRSVl9TRVFfQUREUkVTU19VTktOT1dOCTI1MwkvKiB1bmtub3duIHNvdXJjZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0FERFJFU1NfU1VCU0NSSUJFUlMJMjU0CS8qIHNlbmQgZXZlbnQgdG8gYWxsIHN1YnNjcmliZWQgcG9ydHMgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9BRERSRVNTX0JST0FEQ0FTVAkyNTUJLyogc2VuZCBldmVudCB0byBhbGwgcXVldWVzL2NsaWVudHMvcG9ydHMvY2hhbm5lbHMgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9RVUVVRV9ESVJFQ1QJCTI1MwkvKiBkaXJlY3QgZGlzcGF0Y2ggKi8KKysKKysJLyogZXZlbnQgbW9kZSBmbGFnIC0gTk9URTogb25seSA4IGJpdHMgYXZhaWxhYmxlISAqLworKyNkZWZpbmUgU05EUlZfU0VRX1RJTUVfU1RBTVBfVElDSwkoMDw8MCkgLyogdGltZXN0YW1wIGluIGNsb2NrIHRpY2tzICovCisrI2RlZmluZSBTTkRSVl9TRVFfVElNRV9TVEFNUF9SRUFMCSgxPDwwKSAvKiB0aW1lc3RhbXAgaW4gcmVhbCB0aW1lICovCisrI2RlZmluZSBTTkRSVl9TRVFfVElNRV9TVEFNUF9NQVNLCSgxPDwwKQorKworKyNkZWZpbmUgU05EUlZfU0VRX1RJTUVfTU9ERV9BQlMJCSgwPDwxKQkvKiBhYnNvbHV0ZSB0aW1lc3RhbXAgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9USU1FX01PREVfUkVMCQkoMTw8MSkJLyogcmVsYXRpdmUgdG8gY3VycmVudCB0aW1lICovCisrI2RlZmluZSBTTkRSVl9TRVFfVElNRV9NT0RFX01BU0sJKDE8PDEpCisrCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTEVOR1RIX0ZJWEVECSgwPDwyKQkvKiBmaXhlZCBldmVudCBzaXplICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTEVOR1RIX1ZBUklBQkxFCSgxPDwyKQkvKiB2YXJpYWJsZSBldmVudCBzaXplICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTEVOR1RIX1ZBUlVTUgkoMjw8MikJLyogdmFyaWFibGUgZXZlbnQgc2l6ZSAtIHVzZXIgbWVtb3J5IHNwYWNlICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTEVOR1RIX01BU0sJKDM8PDIpCisrCisrI2RlZmluZSBTTkRSVl9TRVFfUFJJT1JJVFlfTk9STUFMCSgwPDw0KQkvKiBub3JtYWwgcHJpb3JpdHkgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QUklPUklUWV9ISUdICQkoMTw8NCkJLyogZXZlbnQgc2hvdWxkIGJlIHByb2Nlc3NlZCBiZWZvcmUgb3RoZXJzICovCisrI2RlZmluZSBTTkRSVl9TRVFfUFJJT1JJVFlfTUFTSwkJKDE8PDQpCisrCisrCisrCS8qIG5vdGUgZXZlbnQgKi8KKytzdHJ1Y3Qgc25kX3NlcV9ldl9ub3RlIHsKKysJdW5zaWduZWQgY2hhciBjaGFubmVsOworKwl1bnNpZ25lZCBjaGFyIG5vdGU7CisrCXVuc2lnbmVkIGNoYXIgdmVsb2NpdHk7CisrCXVuc2lnbmVkIGNoYXIgb2ZmX3ZlbG9jaXR5OwkvKiBvbmx5IGZvciBTTkRSVl9TRVFfRVZFTlRfTk9URSAqLworKwl1bnNpZ25lZCBpbnQgZHVyYXRpb247CQkvKiBvbmx5IGZvciBTTkRSVl9TRVFfRVZFTlRfTk9URSAqLworK307CisrCisrCS8qIGNvbnRyb2xsZXIgZXZlbnQgKi8KKytzdHJ1Y3Qgc25kX3NlcV9ldl9jdHJsIHsKKysJdW5zaWduZWQgY2hhciBjaGFubmVsOworKwl1bnNpZ25lZCBjaGFyIHVudXNlZDEsIHVudXNlZDIsIHVudXNlZDM7CS8qIHBhZCAqLworKwl1bnNpZ25lZCBpbnQgcGFyYW07CisrCXNpZ25lZCBpbnQgdmFsdWU7CisrfTsKKysKKysJLyogZ2VuZXJpYyBzZXQgb2YgYnl0ZXMgKDEyeDggYml0KSAqLworK3N0cnVjdCBzbmRfc2VxX2V2X3JhdzggeworKwl1bnNpZ25lZCBjaGFyIGRbMTJdOwkvKiA4IGJpdCB2YWx1ZSAqLworK307CisrCisrCS8qIGdlbmVyaWMgc2V0IG9mIGludGVnZXJzICgzeDMyIGJpdCkgKi8KKytzdHJ1Y3Qgc25kX3NlcV9ldl9yYXczMiB7CisrCXVuc2lnbmVkIGludCBkWzNdOwkvKiAzMiBiaXQgdmFsdWUgKi8KKyt9OworKworKwkvKiBleHRlcm5hbCBzdG9yZWQgZGF0YSAqLworK3N0cnVjdCBzbmRfc2VxX2V2X2V4dCB7CisrCXVuc2lnbmVkIGludCBsZW47CS8qIGxlbmd0aCBvZiBkYXRhICovCisrCXZvaWQgKnB0cjsJCS8qIHBvaW50ZXIgdG8gZGF0YSAobm90ZTogbWF5YmUgNjQtYml0KSAqLworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrc3RydWN0IHNuZF9zZXFfcmVzdWx0IHsKKysJaW50IGV2ZW50OwkJLyogcHJvY2Vzc2VkIGV2ZW50IHR5cGUgKi8KKysJaW50IHJlc3VsdDsKKyt9OworKworKworK3N0cnVjdCBzbmRfc2VxX3JlYWxfdGltZSB7CisrCXVuc2lnbmVkIGludCB0dl9zZWM7CS8qIHNlY29uZHMgKi8KKysJdW5zaWduZWQgaW50IHR2X25zZWM7CS8qIG5hbm9zZWNvbmRzICovCisrfTsKKysKKyt0eXBlZGVmIHVuc2lnbmVkIGludCBzbmRfc2VxX3RpY2tfdGltZV90OwkvKiBtaWRpIHRpY2tzICovCisrCisrdW5pb24gc25kX3NlcV90aW1lc3RhbXAgeworKwlzbmRfc2VxX3RpY2tfdGltZV90IHRpY2s7CisrCXN0cnVjdCBzbmRfc2VxX3JlYWxfdGltZSB0aW1lOworK307CisrCisrc3RydWN0IHNuZF9zZXFfcXVldWVfc2tldyB7CisrCXVuc2lnbmVkIGludCB2YWx1ZTsKKysJdW5zaWduZWQgaW50IGJhc2U7CisrfTsKKysKKysJLyogcXVldWUgdGltZXIgY29udHJvbCAqLworK3N0cnVjdCBzbmRfc2VxX2V2X3F1ZXVlX2NvbnRyb2wgeworKwl1bnNpZ25lZCBjaGFyIHF1ZXVlOwkJCS8qIGFmZmVjdGVkIHF1ZXVlICovCisrCXVuc2lnbmVkIGNoYXIgcGFkWzNdOwkJCS8qIHJlc2VydmVkICovCisrCXVuaW9uIHsKKysJCXNpZ25lZCBpbnQgdmFsdWU7CQkvKiBhZmZlY3RlZCB2YWx1ZSAoZS5nLiB0ZW1wbykgKi8KKysJCXVuaW9uIHNuZF9zZXFfdGltZXN0YW1wIHRpbWU7CS8qIHRpbWUgKi8KKysJCXVuc2lnbmVkIGludCBwb3NpdGlvbjsJCS8qIHN5bmMgcG9zaXRpb24gKi8KKysJCXN0cnVjdCBzbmRfc2VxX3F1ZXVlX3NrZXcgc2tldzsKKysJCXVuc2lnbmVkIGludCBkMzJbMl07CisrCQl1bnNpZ25lZCBjaGFyIGQ4WzhdOworKwl9IHBhcmFtOworK307CisrCisrCS8qIHF1b3RlZCBldmVudCAtIGluc2lkZSB0aGUga2VybmVsIG9ubHkgKi8KKytzdHJ1Y3Qgc25kX3NlcV9ldl9xdW90ZSB7CisrCXN0cnVjdCBzbmRfc2VxX2FkZHIgb3JpZ2luOwkJLyogb3JpZ2luYWwgc2VuZGVyICovCisrCXVuc2lnbmVkIHNob3J0IHZhbHVlOwkJLyogb3B0aW9uYWwgZGF0YSAqLworKwlzdHJ1Y3Qgc25kX3NlcV9ldmVudCAqZXZlbnQ7CQkvKiBxdW90ZWQgZXZlbnQgKi8KKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKworKwkvKiBzZXF1ZW5jZXIgZXZlbnQgKi8KKytzdHJ1Y3Qgc25kX3NlcV9ldmVudCB7CisrCXNuZF9zZXFfZXZlbnRfdHlwZV90IHR5cGU7CS8qIGV2ZW50IHR5cGUgKi8KKysJdW5zaWduZWQgY2hhciBmbGFnczsJCS8qIGV2ZW50IGZsYWdzICovCisrCWNoYXIgdGFnOworKwkKKysJdW5zaWduZWQgY2hhciBxdWV1ZTsJCS8qIHNjaGVkdWxlIHF1ZXVlICovCisrCXVuaW9uIHNuZF9zZXFfdGltZXN0YW1wIHRpbWU7CS8qIHNjaGVkdWxlIHRpbWUgKi8KKysKKysKKysJc3RydWN0IHNuZF9zZXFfYWRkciBzb3VyY2U7CS8qIHNvdXJjZSBhZGRyZXNzICovCisrCXN0cnVjdCBzbmRfc2VxX2FkZHIgZGVzdDsJLyogZGVzdGluYXRpb24gYWRkcmVzcyAqLworKworKwl1bmlvbiB7CQkJCS8qIGV2ZW50IGRhdGEuLi4gKi8KKysJCXN0cnVjdCBzbmRfc2VxX2V2X25vdGUgbm90ZTsKKysJCXN0cnVjdCBzbmRfc2VxX2V2X2N0cmwgY29udHJvbDsKKysJCXN0cnVjdCBzbmRfc2VxX2V2X3JhdzggcmF3ODsKKysJCXN0cnVjdCBzbmRfc2VxX2V2X3JhdzMyIHJhdzMyOworKwkJc3RydWN0IHNuZF9zZXFfZXZfZXh0IGV4dDsKKysJCXN0cnVjdCBzbmRfc2VxX2V2X3F1ZXVlX2NvbnRyb2wgcXVldWU7CisrCQl1bmlvbiBzbmRfc2VxX3RpbWVzdGFtcCB0aW1lOworKwkJc3RydWN0IHNuZF9zZXFfYWRkciBhZGRyOworKwkJc3RydWN0IHNuZF9zZXFfY29ubmVjdCBjb25uZWN0OworKwkJc3RydWN0IHNuZF9zZXFfcmVzdWx0IHJlc3VsdDsKKysJCXN0cnVjdCBzbmRfc2VxX2V2X3F1b3RlIHF1b3RlOworKwl9IGRhdGE7CisrfTsKKysKKysKKysvKgorKyAqIGJvdW5jZSBldmVudCAtIHN0b3JlZCBhcyB2YXJpYWJsZSBzaXplIGRhdGEKKysgKi8KKytzdHJ1Y3Qgc25kX3NlcV9ldmVudF9ib3VuY2UgeworKwlpbnQgZXJyOworKwlzdHJ1Y3Qgc25kX3NlcV9ldmVudCBldmVudDsKKysJLyogZXh0ZXJuYWwgZGF0YSBmb2xsb3dzIGhlcmUuICovCisrfTsKKysKKysKKysJLyogc3lzdGVtIGluZm9ybWF0aW9uICovCisrc3RydWN0IHNuZF9zZXFfc3lzdGVtX2luZm8geworKwlpbnQgcXVldWVzOwkJCS8qIG1heGltdW0gcXVldWVzIGNvdW50ICovCisrCWludCBjbGllbnRzOwkJCS8qIG1heGltdW0gY2xpZW50cyBjb3VudCAqLworKwlpbnQgcG9ydHM7CQkJLyogbWF4aW11bSBwb3J0cyBwZXIgY2xpZW50ICovCisrCWludCBjaGFubmVsczsJCQkvKiBtYXhpbXVtIGNoYW5uZWxzIHBlciBwb3J0ICovCisrCWludCBjdXJfY2xpZW50czsJCS8qIGN1cnJlbnQgY2xpZW50cyAqLworKwlpbnQgY3VyX3F1ZXVlczsJCQkvKiBjdXJyZW50IHF1ZXVlcyAqLworKwljaGFyIHJlc2VydmVkWzI0XTsKKyt9OworKworKworKwkvKiBzeXN0ZW0gcnVubmluZyBpbmZvcm1hdGlvbiAqLworK3N0cnVjdCBzbmRfc2VxX3J1bm5pbmdfaW5mbyB7CisrCXVuc2lnbmVkIGNoYXIgY2xpZW50OwkJLyogY2xpZW50IGlkICovCisrCXVuc2lnbmVkIGNoYXIgYmlnX2VuZGlhbjsJLyogMSA9IGJpZy1lbmRpYW4gKi8KKysJdW5zaWduZWQgY2hhciBjcHVfbW9kZTsJCS8qIDQgPSAzMmJpdCwgOCA9IDY0Yml0ICovCisrCXVuc2lnbmVkIGNoYXIgcGFkOwkJLyogcmVzZXJ2ZWQgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFsxMl07CisrfTsKKysKKysKKysJLyoga25vd24gY2xpZW50IG51bWJlcnMgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9DTElFTlRfU1lTVEVNCQkwCisrCS8qIGludGVybmFsIGNsaWVudCBudW1iZXJzICovCisrI2RlZmluZSBTTkRSVl9TRVFfQ0xJRU5UX0RVTU1ZCQkxNAkvKiBtaWRpIHRocm91Z2ggKi8KKysjZGVmaW5lIFNORFJWX1NFUV9DTElFTlRfT1NTCQkxNQkvKiBvc3Mgc2VxdWVuY2VyIGVtdWxhdG9yICovCisrCisrCisrCS8qIGNsaWVudCB0eXBlcyAqLworK3R5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfc2VxX2NsaWVudF90eXBlX3Q7CisrI2RlZmluZQlOT19DTElFTlQJKChfX2ZvcmNlIHNuZF9zZXFfY2xpZW50X3R5cGVfdCkgMCkKKysjZGVmaW5lCVVTRVJfQ0xJRU5UCSgoX19mb3JjZSBzbmRfc2VxX2NsaWVudF90eXBlX3QpIDEpCisrI2RlZmluZQlLRVJORUxfQ0xJRU5UCSgoX19mb3JjZSBzbmRfc2VxX2NsaWVudF90eXBlX3QpIDIpCisrICAgICAgICAgICAgICAgICAgICAgICAgCisrCS8qIGV2ZW50IGZpbHRlciBmbGFncyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0ZJTFRFUl9CUk9BRENBU1QJKDE8PDApCS8qIGFjY2VwdCBicm9hZGNhc3QgbWVzc2FnZXMgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9GSUxURVJfTVVMVElDQVNUCSgxPDwxKQkvKiBhY2NlcHQgbXVsdGljYXN0IG1lc3NhZ2VzICovCisrI2RlZmluZSBTTkRSVl9TRVFfRklMVEVSX0JPVU5DRQkJKDE8PDIpCS8qIGFjY2VwdCBib3VuY2UgZXZlbnQgaW4gZXJyb3IgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9GSUxURVJfVVNFX0VWRU5UCSgxPDwzMSkJLyogdXNlIGV2ZW50IGZpbHRlciAqLworKworK3N0cnVjdCBzbmRfc2VxX2NsaWVudF9pbmZvIHsKKysJaW50IGNsaWVudDsJCQkvKiBjbGllbnQgbnVtYmVyIHRvIGlucXVpcmUgKi8KKysJc25kX3NlcV9jbGllbnRfdHlwZV90IHR5cGU7CS8qIGNsaWVudCB0eXBlICovCisrCWNoYXIgbmFtZVs2NF07CQkJLyogY2xpZW50IG5hbWUgKi8KKysJdW5zaWduZWQgaW50IGZpbHRlcjsJCS8qIGZpbHRlciBmbGFncyAqLworKwl1bnNpZ25lZCBjaGFyIG11bHRpY2FzdF9maWx0ZXJbOF07IC8qIG11bHRpY2FzdCBmaWx0ZXIgYml0bWFwICovCisrCXVuc2lnbmVkIGNoYXIgZXZlbnRfZmlsdGVyWzMyXTsJLyogZXZlbnQgZmlsdGVyIGJpdG1hcCAqLworKwlpbnQgbnVtX3BvcnRzOwkJCS8qIFJPOiBudW1iZXIgb2YgcG9ydHMgKi8KKysJaW50IGV2ZW50X2xvc3Q7CQkJLyogbnVtYmVyIG9mIGxvc3QgZXZlbnRzICovCisrCWludCBjYXJkOwkJCS8qIFJPOiBjYXJkIG51bWJlcltrZXJuZWxdICovCisrCWludCBwaWQ7CQkJLyogUk86IHBpZFt1c2VyXSAqLworKwljaGFyIHJlc2VydmVkWzU2XTsJCS8qIGZvciBmdXR1cmUgdXNlICovCisrfTsKKysKKysKKysvKiBjbGllbnQgcG9vbCBzaXplICovCisrc3RydWN0IHNuZF9zZXFfY2xpZW50X3Bvb2wgeworKwlpbnQgY2xpZW50OwkJCS8qIGNsaWVudCBudW1iZXIgdG8gaW5xdWlyZSAqLworKwlpbnQgb3V0cHV0X3Bvb2w7CQkvKiBvdXRnb2luZyAod3JpdGUpIHBvb2wgc2l6ZSAqLworKwlpbnQgaW5wdXRfcG9vbDsJCQkvKiBpbmNvbWluZyAocmVhZCkgcG9vbCBzaXplICovCisrCWludCBvdXRwdXRfcm9vbTsJCS8qIG1pbmltdW0gZnJlZSBwb29sIHNpemUgZm9yIHNlbGVjdC9ibG9ja2luZyBtb2RlICovCisrCWludCBvdXRwdXRfZnJlZTsJCS8qIHVudXNlZCBzaXplICovCisrCWludCBpbnB1dF9mcmVlOwkJCS8qIHVudXNlZCBzaXplICovCisrCWNoYXIgcmVzZXJ2ZWRbNjRdOworK307CisrCisrCisrLyogUmVtb3ZlIGV2ZW50cyBieSBzcGVjaWZpZWQgY3JpdGVyaWEgKi8KKysKKysjZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfSU5QVVQJCSgxPDwwKQkvKiBGbHVzaCBpbnB1dCBxdWV1ZXMgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfT1VUUFVUCQkoMTw8MSkJLyogRmx1c2ggb3V0cHV0IHF1ZXVlcyAqLworKyNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9ERVNUCQkoMTw8MikJLyogUmVzdHJpY3QgYnkgZGVzdGluYXRpb24gcTpjbGllbnQ6cG9ydCAqLworKyNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9ERVNUX0NIQU5ORUwJKDE8PDMpCS8qIFJlc3RyaWN0IGJ5IGNoYW5uZWwgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfVElNRV9CRUZPUkUJKDE8PDQpCS8qIFJlc3RyaWN0IHRvIGJlZm9yZSB0aW1lICovCisrI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX1RJTUVfQUZURVIJKDE8PDUpCS8qIFJlc3RyaWN0IHRvIHRpbWUgb3IgYWZ0ZXIgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfVElNRV9USUNLCSgxPDw2KQkvKiBUaW1lIGlzIGluIHRpY2tzICovCisrI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX0VWRU5UX1RZUEUJKDE8PDcpCS8qIFJlc3RyaWN0IHRvIGV2ZW50IHR5cGUgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfSUdOT1JFX09GRiAJKDE8PDgpCS8qIERvIG5vdCBmbHVzaCBvZmYgZXZlbnRzICovCisrI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX1RBR19NQVRDSCAJKDE8PDkpCS8qIFJlc3RyaWN0IHRvIGV2ZW50cyB3aXRoIGdpdmVuIHRhZyAqLworKworK3N0cnVjdCBzbmRfc2VxX3JlbW92ZV9ldmVudHMgeworKwl1bnNpZ25lZCBpbnQgIHJlbW92ZV9tb2RlOwkvKiBGbGFncyB0aGF0IGRldGVybWluZSB3aGF0IGdldHMgcmVtb3ZlZCAqLworKworKwl1bmlvbiBzbmRfc2VxX3RpbWVzdGFtcCB0aW1lOworKworKwl1bnNpZ25lZCBjaGFyIHF1ZXVlOwkvKiBRdWV1ZSBmb3IgUkVNT1ZFX0RFU1QgKi8KKysJc3RydWN0IHNuZF9zZXFfYWRkciBkZXN0OwkvKiBBZGRyZXNzIGZvciBSRU1PVkVfREVTVCAqLworKwl1bnNpZ25lZCBjaGFyIGNoYW5uZWw7CS8qIENoYW5uZWwgZm9yIFJFTU9WRV9ERVNUICovCisrCisrCWludCAgdHlwZTsJLyogRm9yIFJFTU9WRV9FVkVOVF9UWVBFICovCisrCWNoYXIgIHRhZzsJLyogVGFnIGZvciBSRU1PVkVfVEFHICovCisrCisrCWludCAgcmVzZXJ2ZWRbMTBdOwkvKiBUbyBhbGxvdyBmb3IgZnV0dXJlIGJpbmFyeSBjb21wYXRpYmlsaXR5ICovCisrCisrfTsKKysKKysKKysJLyoga25vd24gcG9ydCBudW1iZXJzICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9TWVNURU1fVElNRVIJMAorKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfU1lTVEVNX0FOTk9VTkNFCTEKKysKKysJLyogcG9ydCBjYXBhYmlsaXRpZXMgKDMyIGJpdHMpICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfUkVBRAkJKDE8PDApCS8qIHJlYWRhYmxlIGZyb20gdGhpcyBwb3J0ICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfV1JJVEUJKDE8PDEpCS8qIHdyaXRhYmxlIHRvIHRoaXMgcG9ydCAqLworKworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfQ0FQX1NZTkNfUkVBRAkoMTw8MikKKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX0NBUF9TWU5DX1dSSVRFCSgxPDwzKQorKworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfQ0FQX0RVUExFWAkoMTw8NCkKKysKKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX0NBUF9TVUJTX1JFQUQJKDE8PDUpCS8qIGFsbG93IHJlYWQgc3Vic2NyaXB0aW9uICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfU1VCU19XUklURQkoMTw8NikJLyogYWxsb3cgd3JpdGUgc3Vic2NyaXB0aW9uICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfTk9fRVhQT1JUCSgxPDw3KQkvKiByb3V0aW5nIG5vdCBhbGxvd2VkICovCisrCisrCS8qIHBvcnQgdHlwZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9TUEVDSUZJQwkoMTw8MCkJLyogaGFyZHdhcmUgc3BlY2lmaWMgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9HRU5FUklDICgxPDwxKQkvKiBnZW5lcmljIE1JREkgZGV2aWNlICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR00JKDE8PDIpCS8qIEdlbmVyYWwgTUlESSBjb21wYXRpYmxlIGRldmljZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX0dTCSgxPDwzKQkvKiBHUyBjb21wYXRpYmxlIGRldmljZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX1hHCSgxPDw0KQkvKiBYRyBjb21wYXRpYmxlIGRldmljZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX01UMzIJKDE8PDUpCS8qIE1ULTMyIGNvbXBhdGlibGUgZGV2aWNlICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR00yCSgxPDw2KQkvKiBHZW5lcmFsIE1JREkgMiBjb21wYXRpYmxlIGRldmljZSAqLworKworKy8qIG90aGVyIHN0YW5kYXJkcy4uLiovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX1NZTlRICSgxPDwxMCkJLyogU3ludGggZGV2aWNlIChubyBNSURJIGNvbXBhdGlibGUgLSBkaXJlY3Qgd2F2ZXRhYmxlKSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9ESVJFQ1RfU0FNUExFICgxPDwxMSkJLyogU2FtcGxpbmcgZGV2aWNlIChzdXBwb3J0IHNhbXBsZSBkb3dubG9hZCkgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfU0FNUExFCSgxPDwxMikJLyogU2FtcGxpbmcgZGV2aWNlIChzYW1wbGUgY2FuIGJlIGRvd25sb2FkZWQgYXQgYW55IHRpbWUpICovCisrLyouLi4qLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9IQVJEV0FSRQkoMTw8MTYpCS8qIGRyaXZlciBmb3IgYSBoYXJkd2FyZSBkZXZpY2UgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfU09GVFdBUkUJKDE8PDE3KQkvKiBpbXBsZW1lbnRlZCBpbiBzb2Z0d2FyZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9TWU5USEVTSVpFUgkoMTw8MTgpCS8qIGdlbmVyYXRlcyBzb3VuZCAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9QT1JUCSgxPDwxOSkJLyogY29ubmVjdHMgdG8gb3RoZXIgZGV2aWNlKHMpICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX0FQUExJQ0FUSU9OCSgxPDwyMCkJLyogYXBwbGljYXRpb24gKHNlcXVlbmNlci9lZGl0b3IpICovCisrCisrLyogbWlzYy4gY29uZGl0aW9uaW5nIGZsYWdzICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9GTEdfR0lWRU5fUE9SVAkoMTw8MCkKKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX0ZMR19USU1FU1RBTVAJKDE8PDEpCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9GTEdfVElNRV9SRUFMCSgxPDwyKQorKworK3N0cnVjdCBzbmRfc2VxX3BvcnRfaW5mbyB7CisrCXN0cnVjdCBzbmRfc2VxX2FkZHIgYWRkcjsJLyogY2xpZW50L3BvcnQgbnVtYmVycyAqLworKwljaGFyIG5hbWVbNjRdOwkJCS8qIHBvcnQgbmFtZSAqLworKworKwl1bnNpZ25lZCBpbnQgY2FwYWJpbGl0eTsJLyogcG9ydCBjYXBhYmlsaXR5IGJpdHMgKi8KKysJdW5zaWduZWQgaW50IHR5cGU7CQkvKiBwb3J0IHR5cGUgYml0cyAqLworKwlpbnQgbWlkaV9jaGFubmVsczsJCS8qIGNoYW5uZWxzIHBlciBNSURJIHBvcnQgKi8KKysJaW50IG1pZGlfdm9pY2VzOwkJLyogdm9pY2VzIHBlciBNSURJIHBvcnQgKi8KKysJaW50IHN5bnRoX3ZvaWNlczsJCS8qIHZvaWNlcyBwZXIgU1lOVEggcG9ydCAqLworKworKwlpbnQgcmVhZF91c2U7CQkJLyogUi9POiBzdWJzY3JpYmVycyBmb3Igb3V0cHV0IChmcm9tIHRoaXMgcG9ydCkgKi8KKysJaW50IHdyaXRlX3VzZTsJCQkvKiBSL086IHN1YnNjcmliZXJzIGZvciBpbnB1dCAodG8gdGhpcyBwb3J0KSAqLworKworKwl2b2lkICprZXJuZWw7CQkJLyogcmVzZXJ2ZWQgZm9yIGtlcm5lbCB1c2UgKG11c3QgYmUgTlVMTCkgKi8KKysJdW5zaWduZWQgaW50IGZsYWdzOwkJLyogbWlzYy4gY29uZGl0aW9uaW5nICovCisrCXVuc2lnbmVkIGNoYXIgdGltZV9xdWV1ZTsJLyogcXVldWUgIyBmb3IgdGltZXN0YW1waW5nICovCisrCWNoYXIgcmVzZXJ2ZWRbNTldOwkJLyogZm9yIGZ1dHVyZSB1c2UgKi8KKyt9OworKworKworKy8qIHF1ZXVlIGZsYWdzICovCisrI2RlZmluZSBTTkRSVl9TRVFfUVVFVUVfRkxHX1NZTkMJKDE8PDApCS8qIHN5bmMgZW5hYmxlZCAqLworKworKy8qIHF1ZXVlIGluZm9ybWF0aW9uICovCisrc3RydWN0IHNuZF9zZXFfcXVldWVfaW5mbyB7CisrCWludCBxdWV1ZTsJCS8qIHF1ZXVlIGlkICovCisrCisrCS8qCisrCSAqICBzZWN1cml0eSBzZXR0aW5ncywgb25seSBvd25lciBvZiB0aGlzIHF1ZXVlIGNhbiBzdGFydC9zdG9wIHRpbWVyCisrCSAqICBldGMuIGlmIHRoZSBxdWV1ZSBpcyBsb2NrZWQgZm9yIG90aGVyIGNsaWVudHMKKysJICovCisrCWludCBvd25lcjsJCS8qIGNsaWVudCBpZCBmb3Igb3duZXIgb2YgdGhlIHF1ZXVlICovCisrCXVuc2lnbmVkIGxvY2tlZDoxOwkvKiB0aW1pbmcgcXVldWUgbG9ja2VkIGZvciBvdGhlciBxdWV1ZXMgKi8KKysJY2hhciBuYW1lWzY0XTsJCS8qIG5hbWUgb2YgdGhpcyBxdWV1ZSAqLworKwl1bnNpZ25lZCBpbnQgZmxhZ3M7CS8qIGZsYWdzICovCisrCWNoYXIgcmVzZXJ2ZWRbNjBdOwkvKiBmb3IgZnV0dXJlIHVzZSAqLworKworK307CisrCisrLyogcXVldWUgaW5mby9zdGF0dXMgKi8KKytzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9zdGF0dXMgeworKwlpbnQgcXVldWU7CQkJLyogcXVldWUgaWQgKi8KKysJaW50IGV2ZW50czsJCQkvKiByZWFkLW9ubHkgLSBxdWV1ZSBzaXplICovCisrCXNuZF9zZXFfdGlja190aW1lX3QgdGljazsJLyogY3VycmVudCB0aWNrICovCisrCXN0cnVjdCBzbmRfc2VxX3JlYWxfdGltZSB0aW1lOwkvKiBjdXJyZW50IHRpbWUgKi8KKysJaW50IHJ1bm5pbmc7CQkJLyogcnVubmluZyBzdGF0ZSBvZiBxdWV1ZSAqLworKwlpbnQgZmxhZ3M7CQkJLyogdmFyaW91cyBmbGFncyAqLworKwljaGFyIHJlc2VydmVkWzY0XTsJCS8qIGZvciB0aGUgZnV0dXJlICovCisrfTsKKysKKysKKysvKiBxdWV1ZSB0ZW1wbyAqLworK3N0cnVjdCBzbmRfc2VxX3F1ZXVlX3RlbXBvIHsKKysJaW50IHF1ZXVlOwkJCS8qIHNlcXVlbmNlciBxdWV1ZSAqLworKwl1bnNpZ25lZCBpbnQgdGVtcG87CQkvKiBjdXJyZW50IHRlbXBvLCB1cy90aWNrICovCisrCWludCBwcHE7CQkJLyogdGltZSByZXNvbHV0aW9uLCB0aWNrcy9xdWFydGVyICovCisrCXVuc2lnbmVkIGludCBza2V3X3ZhbHVlOwkvKiBxdWV1ZSBza2V3ICovCisrCXVuc2lnbmVkIGludCBza2V3X2Jhc2U7CQkvKiBxdWV1ZSBza2V3IGJhc2UgKi8KKysJY2hhciByZXNlcnZlZFsyNF07CQkvKiBmb3IgdGhlIGZ1dHVyZSAqLworK307CisrCisrCisrLyogc2VxdWVuY2VyIHRpbWVyIHNvdXJjZXMgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9USU1FUl9BTFNBCQkwCS8qIEFMU0EgdGltZXIgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9USU1FUl9NSURJX0NMT0NLCTEJLyogTWlkaSBDbG9jayAoQ0xPQ0sgZXZlbnQpICovCisrI2RlZmluZSBTTkRSVl9TRVFfVElNRVJfTUlESV9USUNLCTIJLyogTWlkaSBUaW1lciBUaWNrIChUSUNLIGV2ZW50KSAqLworKworKy8qIHF1ZXVlIHRpbWVyIGluZm8gKi8KKytzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90aW1lciB7CisrCWludCBxdWV1ZTsJCQkvKiBzZXF1ZW5jZXIgcXVldWUgKi8KKysJaW50IHR5cGU7CQkJLyogc291cmNlIHRpbWVyIHR5cGUgKi8KKysJdW5pb24geworKwkJc3RydWN0IHsKKysJCQlzdHJ1Y3Qgc25kX3RpbWVyX2lkIGlkOwkvKiBBTFNBJ3MgdGltZXIgSUQgKi8KKysJCQl1bnNpZ25lZCBpbnQgcmVzb2x1dGlvbjsJLyogcmVzb2x1dGlvbiBpbiBIeiAqLworKwkJfSBhbHNhOworKwl9IHU7CisrCWNoYXIgcmVzZXJ2ZWRbNjRdOwkJLyogZm9yIHRoZSBmdXR1cmUgdXNlICovCisrfTsKKysKKysKKytzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9jbGllbnQgeworKwlpbnQgcXVldWU7CQkvKiBzZXF1ZW5jZXIgcXVldWUgKi8KKysJaW50IGNsaWVudDsJCS8qIHNlcXVlbmNlciBjbGllbnQgKi8KKysJaW50IHVzZWQ7CQkvKiBxdWV1ZSBpcyB1c2VkIHdpdGggdGhpcyBjbGllbnQKKysJCQkJICAgKG11c3QgYmUgc2V0IGZvciBhY2NlcHRpbmcgZXZlbnRzKSAqLworKwkvKiBwZXIgY2xpZW50IHdhdGVybWFya3MgKi8KKysJY2hhciByZXNlcnZlZFs2NF07CS8qIGZvciBmdXR1cmUgdXNlICovCisrfTsKKysKKysKKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1NVQlNfRVhDTFVTSVZFCSgxPDwwKQkvKiBleGNsdXNpdmUgY29ubmVjdGlvbiAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfU1VCU19USU1FU1RBTVAJKDE8PDEpCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9TVUJTX1RJTUVfUkVBTAkoMTw8MikKKysKKytzdHJ1Y3Qgc25kX3NlcV9wb3J0X3N1YnNjcmliZSB7CisrCXN0cnVjdCBzbmRfc2VxX2FkZHIgc2VuZGVyOwkvKiBzZW5kZXIgYWRkcmVzcyAqLworKwlzdHJ1Y3Qgc25kX3NlcV9hZGRyIGRlc3Q7CS8qIGRlc3RpbmF0aW9uIGFkZHJlc3MgKi8KKysJdW5zaWduZWQgaW50IHZvaWNlczsJCS8qIG51bWJlciBvZiB2b2ljZXMgdG8gYmUgYWxsb2NhdGVkICgwID0gZG9uJ3QgY2FyZSkgKi8KKysJdW5zaWduZWQgaW50IGZsYWdzOwkJLyogbW9kZXMgKi8KKysJdW5zaWduZWQgY2hhciBxdWV1ZTsJCS8qIGlucHV0IHRpbWUtc3RhbXAgcXVldWUgKG9wdGlvbmFsKSAqLworKwl1bnNpZ25lZCBjaGFyIHBhZFszXTsJCS8qIHJlc2VydmVkICovCisrCWNoYXIgcmVzZXJ2ZWRbNjRdOworK307CisrCisrLyogdHlwZSBvZiBxdWVyeSBzdWJzY3JpcHRpb24gKi8KKysjZGVmaW5lIFNORFJWX1NFUV9RVUVSWV9TVUJTX1JFQUQJMAorKyNkZWZpbmUgU05EUlZfU0VRX1FVRVJZX1NVQlNfV1JJVEUJMQorKworK3N0cnVjdCBzbmRfc2VxX3F1ZXJ5X3N1YnMgeworKwlzdHJ1Y3Qgc25kX3NlcV9hZGRyIHJvb3Q7CS8qIGNsaWVudC9wb3J0IGlkIHRvIGJlIHNlYXJjaGVkICovCisrCWludCB0eXBlOwkJLyogUkVBRCBvciBXUklURSAqLworKwlpbnQgaW5kZXg7CQkvKiAwLi5OLTEgKi8KKysJaW50IG51bV9zdWJzOwkJLyogUi9POiBudW1iZXIgb2Ygc3Vic2NyaXB0aW9ucyBvbiB0aGlzIHBvcnQgKi8KKysJc3RydWN0IHNuZF9zZXFfYWRkciBhZGRyOwkvKiBSL086IHJlc3VsdCAqLworKwl1bnNpZ25lZCBjaGFyIHF1ZXVlOwkvKiBSL086IHJlc3VsdCAqLworKwl1bnNpZ25lZCBpbnQgZmxhZ3M7CS8qIFIvTzogcmVzdWx0ICovCisrCWNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiBmb3IgZnV0dXJlIHVzZSAqLworK307CisrCisrCisrLyoKKysgKiAgSU9DVEwgY29tbWFuZHMKKysgKi8KKysKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9QVkVSU0lPTglfSU9SICgnUycsIDB4MDAsIGludCkKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9DTElFTlRfSUQJX0lPUiAoJ1MnLCAweDAxLCBpbnQpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU1lTVEVNX0lORk8JX0lPV1IoJ1MnLCAweDAyLCBzdHJ1Y3Qgc25kX3NlcV9zeXN0ZW1faW5mbykKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9SVU5OSU5HX01PREUJX0lPV1IoJ1MnLCAweDAzLCBzdHJ1Y3Qgc25kX3NlcV9ydW5uaW5nX2luZm8pCisrCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX0NMSUVOVF9JTkZPCV9JT1dSKCdTJywgMHgxMCwgc3RydWN0IHNuZF9zZXFfY2xpZW50X2luZm8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU0VUX0NMSUVOVF9JTkZPCV9JT1cgKCdTJywgMHgxMSwgc3RydWN0IHNuZF9zZXFfY2xpZW50X2luZm8pCisrCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfQ1JFQVRFX1BPUlQJX0lPV1IoJ1MnLCAweDIwLCBzdHJ1Y3Qgc25kX3NlcV9wb3J0X2luZm8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfREVMRVRFX1BPUlQJX0lPVyAoJ1MnLCAweDIxLCBzdHJ1Y3Qgc25kX3NlcV9wb3J0X2luZm8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX1BPUlRfSU5GTwlfSU9XUignUycsIDB4MjIsIHN0cnVjdCBzbmRfc2VxX3BvcnRfaW5mbykKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TRVRfUE9SVF9JTkZPCV9JT1cgKCdTJywgMHgyMywgc3RydWN0IHNuZF9zZXFfcG9ydF9pbmZvKQorKworKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NVQlNDUklCRV9QT1JUCV9JT1cgKCdTJywgMHgzMCwgc3RydWN0IHNuZF9zZXFfcG9ydF9zdWJzY3JpYmUpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfVU5TVUJTQ1JJQkVfUE9SVCBfSU9XICgnUycsIDB4MzEsIHN0cnVjdCBzbmRfc2VxX3BvcnRfc3Vic2NyaWJlKQorKworKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0NSRUFURV9RVUVVRQlfSU9XUignUycsIDB4MzIsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX2luZm8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfREVMRVRFX1FVRVVFCV9JT1cgKCdTJywgMHgzMywgc3RydWN0IHNuZF9zZXFfcXVldWVfaW5mbykKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfUVVFVUVfSU5GTwlfSU9XUignUycsIDB4MzQsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX2luZm8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU0VUX1FVRVVFX0lORk8JX0lPV1IoJ1MnLCAweDM1LCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9pbmZvKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9OQU1FRF9RVUVVRQlfSU9XUignUycsIDB4MzYsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX2luZm8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX1FVRVVFX1NUQVRVUyBfSU9XUignUycsIDB4NDAsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX3N0YXR1cykKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfUVVFVUVfVEVNUE8JX0lPV1IoJ1MnLCAweDQxLCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90ZW1wbykKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TRVRfUVVFVUVfVEVNUE8JX0lPVyAoJ1MnLCAweDQyLCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90ZW1wbykKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfUVVFVUVfVElNRVIJX0lPV1IoJ1MnLCAweDQ1LCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90aW1lcikKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TRVRfUVVFVUVfVElNRVIJX0lPVyAoJ1MnLCAweDQ2LCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90aW1lcikKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfUVVFVUVfQ0xJRU5UCV9JT1dSKCdTJywgMHg0OSwgc3RydWN0IHNuZF9zZXFfcXVldWVfY2xpZW50KQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NFVF9RVUVVRV9DTElFTlQJX0lPVyAoJ1MnLCAweDRhLCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9jbGllbnQpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX0NMSUVOVF9QT09MCV9JT1dSKCdTJywgMHg0Yiwgc3RydWN0IHNuZF9zZXFfY2xpZW50X3Bvb2wpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU0VUX0NMSUVOVF9QT09MCV9JT1cgKCdTJywgMHg0Yywgc3RydWN0IHNuZF9zZXFfY2xpZW50X3Bvb2wpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfUkVNT1ZFX0VWRU5UUwlfSU9XICgnUycsIDB4NGUsIHN0cnVjdCBzbmRfc2VxX3JlbW92ZV9ldmVudHMpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfUVVFUllfU1VCUwlfSU9XUignUycsIDB4NGYsIHN0cnVjdCBzbmRfc2VxX3F1ZXJ5X3N1YnMpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX1NVQlNDUklQVElPTglfSU9XUignUycsIDB4NTAsIHN0cnVjdCBzbmRfc2VxX3BvcnRfc3Vic2NyaWJlKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1FVRVJZX05FWFRfQ0xJRU5UCV9JT1dSKCdTJywgMHg1MSwgc3RydWN0IHNuZF9zZXFfY2xpZW50X2luZm8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfUVVFUllfTkVYVF9QT1JUCV9JT1dSKCdTJywgMHg1Miwgc3RydWN0IHNuZF9zZXFfcG9ydF9pbmZvKQorKworKyNlbmRpZiAvKiBfVUFQSV9fU09VTkRfQVNFUVVFTkNFUl9IICovCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC91YXBpL2Fzb2MuaCBiL2luY2x1ZGUvc291bmQvdWFwaS9hc29jLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uYTc0Y2EyMzIKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9hc29jLmgKK0BAIC0wLDAgKzEsNjMzIEBACisrLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKysvKgorKyAqIHVhcGkvc291bmQvYXNvYy5oIC0tIEFMU0EgU29DIEZpcm13YXJlIENvbnRyb2xzIGFuZCBEQVBNCisrICoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTIgVGV4YXMgSW5zdHJ1bWVudHMgSW5jLgorKyAqIENvcHlyaWdodCAoQykgMjAxNSBJbnRlbCBDb3Jwb3JhdGlvbi4KKysgKgorKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKysgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKysgKgorKyAqIFNpbXBsZSBmaWxlIEFQSSB0byBsb2FkIEZXIHRoYXQgaW5jbHVkZXMgbWl4ZXJzLCBjb2VmZmljaWVudHMsIERBUE0gZ3JhcGhzLAorKyAqIGFsZ29yaXRobXMsIGVxdWFsaXNlcnMsIERBSXMsIHdpZGdldHMgZXRjLgorKyovCisrCisrI2lmbmRlZiBfX0xJTlVYX1VBUElfU05EX0FTT0NfSAorKyNkZWZpbmUgX19MSU5VWF9VQVBJX1NORF9BU09DX0gKKysKKysjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKysjaW5jbHVkZSA8c291bmQvYXNvdW5kLmg+CisrCisrLyoKKysgKiBNYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyB0b3BvbG9neSBrY29udHJvbCBjYW4gcmVwcmVzZW50LgorKyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX01BWF9DSEFOCQk4CisrCisrLyoKKysgKiBNYXhpbXVtIG51bWJlciBvZiBQQ00gZm9ybWF0cyBjYXBhYmlsaXR5CisrICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfTUFYX0ZPUk1BVFMJMTYKKysKKysvKgorKyAqIE1heGltdW0gbnVtYmVyIG9mIFBDTSBzdHJlYW0gY29uZmlncworKyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX1NUUkVBTV9DT05GSUdfTUFYICA4CisrCisrLyoKKysgKiBNYXhpbXVtIG51bWJlciBvZiBwaHlzaWNhbCBsaW5rJ3MgaGFyZHdhcmUgY29uZmlncworKyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX0hXX0NPTkZJR19NQVgJOAorKworKy8qIGluZGl2aWR1YWwga2NvbnRyb2wgaW5mbyB0eXBlcyAtIGNhbiBiZSBtaXhlZCB3aXRoIG90aGVyIHR5cGVzICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfQ1RMX1ZPTFNXCQkxCisrI2RlZmluZSBTTkRfU09DX1RQTEdfQ1RMX1ZPTFNXX1NYCTIKKysjZGVmaW5lIFNORF9TT0NfVFBMR19DVExfVk9MU1dfWFJfU1gJMworKyNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9FTlVNCQk0CisrI2RlZmluZSBTTkRfU09DX1RQTEdfQ1RMX0JZVEVTCQk1CisrI2RlZmluZSBTTkRfU09DX1RQTEdfQ1RMX0VOVU1fVkFMVUUJNgorKyNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9SQU5HRQkJNworKyNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9TVFJPQkUJCTgKKysKKysKKysvKiBpbmRpdmlkdWFsIHdpZGdldCBrY29udHJvbCBpbmZvIHR5cGVzIC0gY2FuIGJlIG1peGVkIHdpdGggb3RoZXIgdHlwZXMgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0NUTF9WT0xTVwkJNjQKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0NUTF9FTlVNX0RPVUJMRQk2NQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQ1RMX0VOVU1fVklSVAkJNjYKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0NUTF9FTlVNX1ZBTFVFCTY3CisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9DVExfUElOCQk2OAorKworKy8qIERBUE0gd2lkZ2V0IHR5cGVzIC0gYWRkIG5ldyBpdGVtcyB0byB0aGUgZW5kICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9JTlBVVAkJMAorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fT1VUUFVUCTEKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX01VWAkJMgorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fTUlYRVIJCTMKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX1BHQQkJNAorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fT1VUX0RSVgk1CisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9BREMJCTYKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0RBQwkJNworKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fU1dJVENICTgKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX1BSRQkJOQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fUE9TVAkJMTAKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0FJRl9JTgkxMQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQUlGX09VVAkxMgorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fREFJX0lOCTEzCisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9EQUlfT1VUCTE0CisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9EQUlfTElOSwkxNQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQlVGRkVSCTE2CisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9TQ0hFRFVMRVIJMTcKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0VGRkVDVAkxOAorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fU0lHR0VOCTE5CisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9TUkMJCTIwCisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9BU1JDCQkyMQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fRU5DT0RFUgkyMgorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fREVDT0RFUgkyMworKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fTEFTVAkJU05EX1NPQ19UUExHX0RBUE1fREVDT0RFUgorKworKy8qIEhlYWRlciBtYWdpYyBudW1iZXIgYW5kIHN0cmluZyBzaXplcyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX01BR0lDCQkweDQxNTM2RjQzIC8qIEFTb0MgKi8KKysKKysvKiBzdHJpbmcgc2l6ZXMgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19OVU1fVEVYVFMJCTE2CisrCisrLyogQUJJIHZlcnNpb24gKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19BQklfVkVSU0lPTgkweDUJLyogY3VycmVudCB2ZXJzaW9uICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfQUJJX1ZFUlNJT05fTUlOCTB4NAkvKiBvbGRlc3QgdmVyc2lvbiBzdXBwb3J0ZWQgKi8KKysKKysvKiBNYXggc2l6ZSBvZiBUTFYgZGF0YSAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX1RMVl9TSVpFCQkzMgorKworKy8qCisrICogRmlsZSBhbmQgQmxvY2sgaGVhZGVyIGRhdGEgdHlwZXMuCisrICogQWRkIG5ldyBnZW5lcmljIGFuZCB2ZW5kb3IgdHlwZXMgdG8gZW5kIG9mIGxpc3QuCisrICogR2VuZXJpYyB0eXBlcyBhcmUgaGFuZGxlZCBieSB0aGUgY29yZSB3aGlsc3QgdmVuZG9ycyB0eXBlcyBhcmUgcGFzc2VkCisrICogdG8gdGhlIGNvbXBvbmVudCBkcml2ZXJzIGZvciBoYW5kbGluZy4KKysgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX01JWEVSCQkxCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9CWVRFUwkJMgorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfRU5VTQkJMworKyNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfREFQTV9HUkFQSAk0CisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9EQVBNX1dJREdFVAk1CisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9EQUlfTElOSwk2CisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9QQ00JCTcKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX01BTklGRVNUCTgKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0NPREVDX0xJTksJOQorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfQkFDS0VORF9MSU5LCTEwCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9QREFUQQkJMTEKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0RBSQkJMTIKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX01BWAkJU05EX1NPQ19UUExHX1RZUEVfREFJCisrCisrLyogdmVuZG9yIGJsb2NrIElEcyAtIHBsZWFzZSBhZGQgbmV3IHZlbmRvciB0eXBlcyB0byBlbmQgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX1ZFTkRPUl9GVwkxMDAwCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9WRU5ET1JfQ09ORklHCTEwMDEKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX1ZFTkRPUl9DT0VGRgkxMDAyCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRVZFTkRPUl9DT0RFQwkxMDAzCisrCisrI2RlZmluZSBTTkRfU09DX1RQTEdfU1RSRUFNX1BMQVlCQUNLCTAKKysjZGVmaW5lIFNORF9TT0NfVFBMR19TVFJFQU1fQ0FQVFVSRQkxCisrCisrLyogdmVuZG9yIHR1cGxlIHR5cGVzICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFVQTEVfVFlQRV9VVUlECTAKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UVVBMRV9UWVBFX1NUUklORwkxCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFVQTEVfVFlQRV9CT09MCTIKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UVVBMRV9UWVBFX0JZVEUJMworKyNkZWZpbmUgU05EX1NPQ19UUExHX1RVUExFX1RZUEVfV09SRAk0CisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFVQTEVfVFlQRV9TSE9SVAk1CisrCisrLyogREFJIGZsYWdzICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFJX0ZMR0JJVF9TWU1NRVRSSUNfUkFURVMgICAgICAgICAoMSA8PCAwKQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBSV9GTEdCSVRfU1lNTUVUUklDX0NIQU5ORUxTICAgICAgKDEgPDwgMSkKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQUlfRkxHQklUX1NZTU1FVFJJQ19TQU1QTEVCSVRTICAgICgxIDw8IDIpCisrCisrLyogREFJIGNsb2NrIGdhdGluZyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBSV9DTEtfR0FURV9VTkRFRklORUQJMAorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBSV9DTEtfR0FURV9HQVRFRAkxCisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFJX0NMS19HQVRFX0NPTlQJCTIKKysKKysvKiBEQUkgbWNsa19kaXJlY3Rpb24gKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19NQ0xLX0NPICAgICAgICAgICAgMCAvKiBmb3IgY29kZWMsIG1jbGsgaXMgb3V0cHV0ICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfTUNMS19DSSAgICAgICAgICAgIDEgLyogZm9yIGNvZGVjLCBtY2xrIGlzIGlucHV0ICovCisrCisrLyogREFJIHBoeXNpY2FsIFBDTSBkYXRhIGZvcm1hdHMuCisrICogQWRkIG5ldyBmb3JtYXRzIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuCisrICovCisrI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfSTJTICAgICAgICAgIDEgLyogSTJTIG1vZGUgKi8KKysjZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9SSUdIVF9KICAgICAgMiAvKiBSaWdodCBKdXN0aWZpZWQgbW9kZSAqLworKyNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX0xFRlRfSiAgICAgICAzIC8qIExlZnQgSnVzdGlmaWVkIG1vZGUgKi8KKysjZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9EU1BfQSAgICAgICAgNCAvKiBMIGRhdGEgTVNCIGFmdGVyIEZSTSBMUkMgKi8KKysjZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9EU1BfQiAgICAgICAgNSAvKiBMIGRhdGEgTVNCIGR1cmluZyBGUk0gTFJDICovCisrI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfQUM5NyAgICAgICAgIDYgLyogQUM5NyAqLworKyNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX1BETSAgICAgICAgICA3IC8qIFB1bHNlIGRlbnNpdHkgbW9kdWxhdGlvbiAqLworKworKy8qIGxlZnQgYW5kIHJpZ2h0IGp1c3RpZmllZCBhbHNvIGtub3duIGFzIE1TQiBhbmQgTFNCIHJlc3BlY3RpdmVseSAqLworKyNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX01TQiAgICAgICAgICBTTkRfU09DX0RBSV9GT1JNQVRfTEVGVF9KCisrI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfTFNCICAgICAgICAgIFNORF9TT0NfREFJX0ZPUk1BVF9SSUdIVF9KCisrCisrLyogREFJIGxpbmsgZmxhZ3MgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19MTktfRkxHQklUX1NZTU1FVFJJQ19SQVRFUyAgICAgICAgICgxIDw8IDApCisrI2RlZmluZSBTTkRfU09DX1RQTEdfTE5LX0ZMR0JJVF9TWU1NRVRSSUNfQ0hBTk5FTFMgICAgICAoMSA8PCAxKQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0xOS19GTEdCSVRfU1lNTUVUUklDX1NBTVBMRUJJVFMgICAgKDEgPDwgMikKKysjZGVmaW5lIFNORF9TT0NfVFBMR19MTktfRkxHQklUX1ZPSUNFX1dBS0VVUCAgICAgICAgICAgICgxIDw8IDMpCisrCisrLyogREFJIHRvcG9sb2d5IEJDTEsgcGFyYW1ldGVyCisrICogRm9yIHRoZSBiYWNrd2FyZHMgY2FwYWJpbGl0eSwgYnkgZGVmYXVsdCBjb2RlYyBpcyBiY2xrIG1hc3RlcgorKyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX0JDTEtfQ00gICAgICAgICAwIC8qIGNvZGVjIGlzIGJjbGsgbWFzdGVyICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfQkNMS19DUyAgICAgICAgIDEgLyogY29kZWMgaXMgYmNsayBzbGF2ZSAqLworKworKy8qIERBSSB0b3BvbG9neSBGU1lOQyBwYXJhbWV0ZXIKKysgKiBGb3IgdGhlIGJhY2t3YXJkcyBjYXBhYmlsaXR5LCBieSBkZWZhdWx0IGNvZGVjIGlzIGZzeW5jIG1hc3RlcgorKyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX0ZTWU5DX0NNICAgICAgICAgMCAvKiBjb2RlYyBpcyBmc3luYyBtYXN0ZXIgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19GU1lOQ19DUyAgICAgICAgIDEgLyogY29kZWMgaXMgZnN5bmMgc2xhdmUgKi8KKysKKysvKgorKyAqIEJsb2NrIEhlYWRlci4KKysgKiBUaGlzIGhlYWRlciBwcmVjZWRlcyBhbGwgb2JqZWN0IGFuZCBvYmplY3QgYXJyYXlzIGJlbG93LgorKyAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfaGRyIHsKKysJX19sZTMyIG1hZ2ljOwkJLyogbWFnaWMgbnVtYmVyICovCisrCV9fbGUzMiBhYmk7CQkvKiBBQkkgdmVyc2lvbiAqLworKwlfX2xlMzIgdmVyc2lvbjsJCS8qIG9wdGlvbmFsIHZlbmRvciBzcGVjaWZpYyB2ZXJzaW9uIGRldGFpbHMgKi8KKysJX19sZTMyIHR5cGU7CQkvKiBTTkRfU09DX1RQTEdfVFlQRV8gKi8KKysJX19sZTMyIHNpemU7CQkvKiBzaXplIG9mIHRoaXMgc3RydWN0dXJlICovCisrCV9fbGUzMiB2ZW5kb3JfdHlwZTsJLyogb3B0aW9uYWwgdmVuZG9yIHNwZWNpZmljIHR5cGUgaW5mbyAqLworKwlfX2xlMzIgcGF5bG9hZF9zaXplOwkvKiBkYXRhIGJ5dGVzLCBleGNsdWRpbmcgdGhpcyBoZWFkZXIgKi8KKysJX19sZTMyIGluZGV4OwkJLyogaWRlbnRpZmllciBmb3IgYmxvY2sgKi8KKysJX19sZTMyIGNvdW50OwkJLyogbnVtYmVyIG9mIGVsZW1lbnRzIGluIGJsb2NrICovCisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKiB2ZW5kb3IgdHVwbGUgZm9yIHV1aWQgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX3ZlbmRvcl91dWlkX2VsZW0geworKwlfX2xlMzIgdG9rZW47CisrCWNoYXIgdXVpZFsxNl07CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKiB2ZW5kb3IgdHVwbGUgZm9yIGEgYm9vbC9ieXRlL3Nob3J0L3dvcmQgdmFsdWUgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX3ZlbmRvcl92YWx1ZV9lbGVtIHsKKysJX19sZTMyIHRva2VuOworKwlfX2xlMzIgdmFsdWU7CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKiB2ZW5kb3IgdHVwbGUgZm9yIHN0cmluZyAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfdmVuZG9yX3N0cmluZ19lbGVtIHsKKysJX19sZTMyIHRva2VuOworKwljaGFyIHN0cmluZ1tTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKytzdHJ1Y3Qgc25kX3NvY190cGxnX3ZlbmRvcl9hcnJheSB7CisrCV9fbGUzMiBzaXplOwkvKiBzaXplIGluIGJ5dGVzIG9mIHRoZSBhcnJheSwgaW5jbHVkaW5nIGFsbCBlbGVtZW50cyAqLworKwlfX2xlMzIgdHlwZTsJLyogU05EX1NPQ19UUExHX1RVUExFX1RZUEVfICovCisrCV9fbGUzMiBudW1fZWxlbXM7CS8qIG51bWJlciBvZiBlbGVtZW50cyBpbiBhcnJheSAqLworKwl1bmlvbiB7CisrCQlzdHJ1Y3Qgc25kX3NvY190cGxnX3ZlbmRvcl91dWlkX2VsZW0gdXVpZFswXTsKKysJCXN0cnVjdCBzbmRfc29jX3RwbGdfdmVuZG9yX3ZhbHVlX2VsZW0gdmFsdWVbMF07CisrCQlzdHJ1Y3Qgc25kX3NvY190cGxnX3ZlbmRvcl9zdHJpbmdfZWxlbSBzdHJpbmdbMF07CisrCX07CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIFByaXZhdGUgZGF0YS4KKysgKiBBbGwgdG9wb2xvZ3kgb2JqZWN0cyBtYXkgaGF2ZSBwcml2YXRlIGRhdGEgdGhhdCBjYW4gYmUgdXNlZCBieSB0aGUgZHJpdmVyIG9yCisrICogZmlybXdhcmUuIENvcmUgd2lsbCBpZ25vcmUgdGhpcyBkYXRhLgorKyAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfcHJpdmF0ZSB7CisrCV9fbGUzMiBzaXplOwkvKiBpbiBieXRlcyBvZiBwcml2YXRlIGRhdGEgKi8KKysJdW5pb24geworKwkJY2hhciBkYXRhWzBdOworKwkJc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3JfYXJyYXkgYXJyYXlbMF07CisrCX07CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIEtjb250cm9sIFRMViBkYXRhLgorKyAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfdGx2X2Ric2NhbGUgeworKwlfX2xlMzIgbWluOworKwlfX2xlMzIgc3RlcDsKKysJX19sZTMyIG11dGU7CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKytzdHJ1Y3Qgc25kX3NvY190cGxnX2N0bF90bHYgeworKwlfX2xlMzIgc2l6ZTsJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJX19sZTMyIHR5cGU7CS8qIFNORFJWX0NUTF9UTFZUXyosIHR5cGUgb2YgVExWICovCisrCXVuaW9uIHsKKysJCV9fbGUzMiBkYXRhW1NORF9TT0NfVFBMR19UTFZfU0laRV07CisrCQlzdHJ1Y3Qgc25kX3NvY190cGxnX3Rsdl9kYnNjYWxlIHNjYWxlOworKwl9OworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyoKKysgKiBLY29udHJvbCBjaGFubmVsIGRhdGEKKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX2NoYW5uZWwgeworKwlfX2xlMzIgc2l6ZTsJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJX19sZTMyIHJlZzsKKysJX19sZTMyIHNoaWZ0OworKwlfX2xlMzIgaWQ7CS8qIElEIG1hcHMgdG8gTGVmdCwgUmlnaHQsIExGRSBldGMgKi8KKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKy8qCisrICogR2VuZXJpY2wgT3BlcmF0aW9ucyBJRHMsIGZvciBiaW5kaW5nIEtjb250cm9sIG9yIEJ5dGVzIGV4dCBvcHMKKysgKiBLY29udHJvbCBvcHMgbmVlZCBnZXQvcHV0L2luZm8uCisrICogQnl0ZXMgZXh0IG9wcyBuZWVkIGdldC9wdXQuCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19pb19vcHMgeworKwlfX2xlMzIgZ2V0OworKwlfX2xlMzIgcHV0OworKwlfX2xlMzIgaW5mbzsKKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKy8qCisrICoga2NvbnRyb2wgaGVhZGVyCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19jdGxfaGRyIHsKKysJX19sZTMyIHNpemU7CS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCV9fbGUzMiB0eXBlOworKwljaGFyIG5hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKwlfX2xlMzIgYWNjZXNzOworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX2lvX29wcyBvcHM7CisrCXN0cnVjdCBzbmRfc29jX3RwbGdfY3RsX3RsdiB0bHY7CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIFN0cmVhbSBDYXBhYmlsaXRpZXMKKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbV9jYXBzIHsKKysJX19sZTMyIHNpemU7CQkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwljaGFyIG5hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKwlfX2xlNjQgZm9ybWF0czsJLyogc3VwcG9ydGVkIGZvcm1hdHMgU05EUlZfUENNX0ZNVEJJVF8qICovCisrCV9fbGUzMiByYXRlczsJCS8qIHN1cHBvcnRlZCByYXRlcyBTTkRSVl9QQ01fUkFURV8qICovCisrCV9fbGUzMiByYXRlX21pbjsJLyogbWluIHJhdGUgKi8KKysJX19sZTMyIHJhdGVfbWF4OwkvKiBtYXggcmF0ZSAqLworKwlfX2xlMzIgY2hhbm5lbHNfbWluOwkvKiBtaW4gY2hhbm5lbHMgKi8KKysJX19sZTMyIGNoYW5uZWxzX21heDsJLyogbWF4IGNoYW5uZWxzICovCisrCV9fbGUzMiBwZXJpb2RzX21pbjsJLyogbWluIG51bWJlciBvZiBwZXJpb2RzICovCisrCV9fbGUzMiBwZXJpb2RzX21heDsJLyogbWF4IG51bWJlciBvZiBwZXJpb2RzICovCisrCV9fbGUzMiBwZXJpb2Rfc2l6ZV9taW47CS8qIG1pbiBwZXJpb2Qgc2l6ZSBieXRlcyAqLworKwlfX2xlMzIgcGVyaW9kX3NpemVfbWF4OwkvKiBtYXggcGVyaW9kIHNpemUgYnl0ZXMgKi8KKysJX19sZTMyIGJ1ZmZlcl9zaXplX21pbjsJLyogbWluIGJ1ZmZlciBzaXplIGJ5dGVzICovCisrCV9fbGUzMiBidWZmZXJfc2l6ZV9tYXg7CS8qIG1heCBidWZmZXIgc2l6ZSBieXRlcyAqLworKwlfX2xlMzIgc2lnX2JpdHM7ICAgICAgICAvKiBudW1iZXIgb2YgYml0cyBvZiBjb250ZW50ICovCisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIEZFIG9yIEJFIFN0cmVhbSBjb25maWd1cmF0aW9uIHN1cHBvcnRlZCBieSBTVy9GVworKyAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtIHsKKysJX19sZTMyIHNpemU7CQkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwljaGFyIG5hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOyAvKiBOYW1lIG9mIHRoZSBzdHJlYW0gKi8KKysJX19sZTY0IGZvcm1hdDsJCS8qIFNORFJWX1BDTV9GTVRCSVRfKiAqLworKwlfX2xlMzIgcmF0ZTsJCS8qIFNORFJWX1BDTV9SQVRFXyogKi8KKysJX19sZTMyIHBlcmlvZF9ieXRlczsJLyogc2l6ZSBvZiBwZXJpb2QgaW4gYnl0ZXMgKi8KKysJX19sZTMyIGJ1ZmZlcl9ieXRlczsJLyogc2l6ZSBvZiBidWZmZXIgaW4gYnl0ZXMgKi8KKysJX19sZTMyIGNoYW5uZWxzOwkvKiBjaGFubmVscyAqLworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrCisrLyoKKysgKiBEZXNjcmliZXMgYSBwaHlzaWNhbCBsaW5rJ3MgcnVudGltZSBzdXBwb3J0ZWQgaGFyZHdhcmUgY29uZmlnLAorKyAqIGkuZS4gaGFyZHdhcmUgYXVkaW8gZm9ybWF0cy4KKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX2h3X2NvbmZpZyB7CisrCV9fbGUzMiBzaXplOyAgICAgICAgICAgIC8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCV9fbGUzMiBpZDsJCS8qIHVuaXF1ZSBJRCAtIC0gdXNlZCB0byBtYXRjaCAqLworKwlfX2xlMzIgZm10OwkJLyogU05EX1NPQ19EQUlfRk9STUFUXyBmb3JtYXQgdmFsdWUgKi8KKysJX191OCBjbG9ja19nYXRlZDsJLyogU05EX1NPQ19UUExHX0RBSV9DTEtfR0FURV8gdmFsdWUgKi8KKysJX191OCBpbnZlcnRfYmNsazsJLyogMSBmb3IgaW52ZXJ0ZWQgQkNMSywgMCBmb3Igbm9ybWFsICovCisrCV9fdTggaW52ZXJ0X2ZzeW5jOwkvKiAxIGZvciBpbnZlcnRlZCBmcmFtZSBjbG9jaywgMCBmb3Igbm9ybWFsICovCisrCV9fdTggYmNsa19tYXN0ZXI7CS8qIFNORF9TT0NfVFBMR19CQ0xLXyB2YWx1ZSAqLworKwlfX3U4IGZzeW5jX21hc3RlcjsJLyogU05EX1NPQ19UUExHX0ZTWU5DXyB2YWx1ZSAqLworKwlfX3U4IG1jbGtfZGlyZWN0aW9uOyAgICAvKiBTTkRfU09DX1RQTEdfTUNMS18gdmFsdWUgKi8KKysJX19sZTE2IHJlc2VydmVkOwkvKiBmb3IgMzJiaXQgYWxpZ25tZW50ICovCisrCV9fbGUzMiBtY2xrX3JhdGU7CS8qIE1DTEsgb3IgU1lTQ0xLIGZyZXFlbmN5IGluIEh6ICovCisrCV9fbGUzMiBiY2xrX3JhdGU7CS8qIEJDTEsgZnJlcWVuY3kgaW4gSHogKi8KKysJX19sZTMyIGZzeW5jX3JhdGU7CS8qIGZyYW1lIGNsb2NrIGluIEh6ICovCisrCV9fbGUzMiB0ZG1fc2xvdHM7CS8qIG51bWJlciBvZiBURE0gc2xvdHMgaW4gdXNlICovCisrCV9fbGUzMiB0ZG1fc2xvdF93aWR0aDsJLyogd2lkdGggaW4gYml0cyBmb3IgZWFjaCBzbG90ICovCisrCV9fbGUzMiB0eF9zbG90czsJLyogYml0IG1hc2sgZm9yIGFjdGl2ZSBUeCBzbG90cyAqLworKwlfX2xlMzIgcnhfc2xvdHM7CS8qIGJpdCBtYXNrIGZvciBhY3RpdmUgUnggc2xvdHMgKi8KKysJX19sZTMyIHR4X2NoYW5uZWxzOwkvKiBudW1iZXIgb2YgVHggY2hhbm5lbHMgKi8KKysJX19sZTMyIHR4X2NoYW5tYXBbU05EX1NPQ19UUExHX01BWF9DSEFOXTsgLyogYXJyYXkgb2Ygc2xvdCBudW1iZXIgKi8KKysJX19sZTMyIHJ4X2NoYW5uZWxzOwkvKiBudW1iZXIgb2YgUnggY2hhbm5lbHMgKi8KKysJX19sZTMyIHJ4X2NoYW5tYXBbU05EX1NPQ19UUExHX01BWF9DSEFOXTsgLyogYXJyYXkgb2Ygc2xvdCBudW1iZXIgKi8KKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKy8qCisrICogTWFuaWZlc3QuIExpc3QgdG90YWxzIGZvciBlYWNoIHBheWxvYWQgdHlwZS4gTm90IHVzZWQgaW4gcGFyc2luZywgYnV0IHdpbGwKKysgKiBiZSBwYXNzZWQgdG8gdGhlIGNvbXBvbmVudCBkcml2ZXIgYmVmb3JlIGFueSBvdGhlciBvYmplY3RzIGluIG9yZGVyIGZvciBhbnkKKysgKiBnbG9iYWwgY29tcG9uZW50IHJlc291cmNlIGFsbG9jYXRpb25zLgorKyAqCisrICogRmlsZSBibG9jayByZXByZXNlbnRhdGlvbiBmb3IgbWFuaWZlc3QgOi0KKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfbWFuaWZlc3QgICAgICB8ICAxIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX21hbmlmZXN0IHsKKysJX19sZTMyIHNpemU7CQkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwlfX2xlMzIgY29udHJvbF9lbGVtczsJLyogbnVtYmVyIG9mIGNvbnRyb2wgZWxlbWVudHMgKi8KKysJX19sZTMyIHdpZGdldF9lbGVtczsJLyogbnVtYmVyIG9mIHdpZGdldCBlbGVtZW50cyAqLworKwlfX2xlMzIgZ3JhcGhfZWxlbXM7CS8qIG51bWJlciBvZiBncmFwaCBlbGVtZW50cyAqLworKwlfX2xlMzIgcGNtX2VsZW1zOwkvKiBudW1iZXIgb2YgUENNIGVsZW1lbnRzICovCisrCV9fbGUzMiBkYWlfbGlua19lbGVtczsJLyogbnVtYmVyIG9mIERBSSBsaW5rIGVsZW1lbnRzICovCisrCV9fbGUzMiBkYWlfZWxlbXM7CS8qIG51bWJlciBvZiBwaHlzaWNhbCBEQUkgZWxlbWVudHMgKi8KKysJX19sZTMyIHJlc2VydmVkWzIwXTsJLyogcmVzZXJ2ZWQgZm9yIG5ldyBBQkkgZWxlbWVudCB0eXBlcyAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKy8qCisrICogTWl4ZXIga2NvbnRyb2wuCisrICoKKysgKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBtaXhlciBrY29udHJvbCA6LQorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19oZHIgICAgICAgICAgIHwgIDEgfAorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19taXhlcl9jb250cm9sIHwgIE4gfAorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworKyAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfbWl4ZXJfY29udHJvbCB7CisrCXN0cnVjdCBzbmRfc29jX3RwbGdfY3RsX2hkciBoZHI7CisrCV9fbGUzMiBzaXplOwkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwlfX2xlMzIgbWluOworKwlfX2xlMzIgbWF4OworKwlfX2xlMzIgcGxhdGZvcm1fbWF4OworKwlfX2xlMzIgaW52ZXJ0OworKwlfX2xlMzIgbnVtX2NoYW5uZWxzOworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX2NoYW5uZWwgY2hhbm5lbFtTTkRfU09DX1RQTEdfTUFYX0NIQU5dOworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKy8qCisrICogRW51bWVyYXRlZCBrY29udHJvbAorKyAqCisrICogRmlsZSBibG9jayByZXByZXNlbnRhdGlvbiBmb3IgZW51bSBrY29udHJvbCA6LQorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19oZHIgICAgICAgICAgIHwgIDEgfAorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19lbnVtX2NvbnRyb2wgIHwgIE4gfAorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworKyAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfZW51bV9jb250cm9sIHsKKysJc3RydWN0IHNuZF9zb2NfdHBsZ19jdGxfaGRyIGhkcjsKKysJX19sZTMyIHNpemU7CS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCV9fbGUzMiBudW1fY2hhbm5lbHM7CisrCXN0cnVjdCBzbmRfc29jX3RwbGdfY2hhbm5lbCBjaGFubmVsW1NORF9TT0NfVFBMR19NQVhfQ0hBTl07CisrCV9fbGUzMiBpdGVtczsKKysJX19sZTMyIG1hc2s7CisrCV9fbGUzMiBjb3VudDsKKysJY2hhciB0ZXh0c1tTTkRfU09DX1RQTEdfTlVNX1RFWFRTXVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CisrCV9fbGUzMiB2YWx1ZXNbU05EX1NPQ19UUExHX05VTV9URVhUUyAqIFNORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOIC8gNF07CisrCXN0cnVjdCBzbmRfc29jX3RwbGdfcHJpdmF0ZSBwcml2OworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyoKKysgKiBCeXRlcyBrY29udHJvbAorKyAqCisrICogRmlsZSBibG9jayByZXByZXNlbnRhdGlvbiBmb3IgYnl0ZXMga2NvbnRyb2wgOi0KKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfYnl0ZXNfY29udHJvbCB8ICBOIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX2J5dGVzX2NvbnRyb2wgeworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX2N0bF9oZHIgaGRyOworKwlfX2xlMzIgc2l6ZTsJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJX19sZTMyIG1heDsKKysJX19sZTMyIG1hc2s7CisrCV9fbGUzMiBiYXNlOworKwlfX2xlMzIgbnVtX3JlZ3M7CisrCXN0cnVjdCBzbmRfc29jX3RwbGdfaW9fb3BzIGV4dF9vcHM7CisrCXN0cnVjdCBzbmRfc29jX3RwbGdfcHJpdmF0ZSBwcml2OworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyoKKysgKiBEQVBNIEdyYXBoIEVsZW1lbnQKKysgKgorKyAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIERBUE0gZ3JhcGggZWxlbWVudHMgOi0KKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19oZHIgICAgICAgICAgICAgfCAgMSB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfZGFwbV9ncmFwaF9lbGVtIHwgIE4gfAorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19kYXBtX2dyYXBoX2VsZW0geworKwljaGFyIHNpbmtbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKwljaGFyIGNvbnRyb2xbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKwljaGFyIHNvdXJjZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIERBUE0gV2lkZ2V0LgorKyAqCisrICogRmlsZSBibG9jayByZXByZXNlbnRhdGlvbiBmb3IgREFQTSB3aWRnZXQgOi0KKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICAgIHwgIDEgIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfZGFwbV93aWRnZXQgICAgIHwgIE4gIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKysgKiB8ICAgc3RydWN0IHNuZF9zb2NfdHBsZ19lbnVtX2NvbnRyb2wgIHwgMHwxIHwKKysgKiB8ICAgc3RydWN0IHNuZF9zb2NfdHBsZ19taXhlcl9jb250cm9sIHwgMHxOIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKysgKgorKyAqIE9wdGlvbmFsIGVudW0gb3IgbWl4ZXIgY29udHJvbCBjYW4gYmUgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiBlYWNoIHdpZGdldAorKyAqIGluIHRoZSBibG9jay4KKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX2RhcG1fd2lkZ2V0IHsKKysJX19sZTMyIHNpemU7CQkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwlfX2xlMzIgaWQ7CQkvKiBTTkRfU09DX0RBUE1fQ1RMICovCisrCWNoYXIgbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CisrCWNoYXIgc25hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKworKwlfX2xlMzIgcmVnOwkJLyogbmVnYXRpdmUgcmVnID0gbm8gZGlyZWN0IGRhcG0gKi8KKysJX19sZTMyIHNoaWZ0OwkJLyogYml0cyB0byBzaGlmdCAqLworKwlfX2xlMzIgbWFzazsJCS8qIG5vbi1zaGlmdGVkIG1hc2sgKi8KKysJX19sZTMyIHN1YnNlcTsJCS8qIHNvcnQgd2l0aGluIHdpZGdldCB0eXBlICovCisrCV9fbGUzMiBpbnZlcnQ7CQkvKiBpbnZlcnQgdGhlIHBvd2VyIGJpdCAqLworKwlfX2xlMzIgaWdub3JlX3N1c3BlbmQ7CS8qIGtlcHQgZW5hYmxlZCBvdmVyIHN1c3BlbmQgKi8KKysJX19sZTE2IGV2ZW50X2ZsYWdzOworKwlfX2xlMTYgZXZlbnRfdHlwZTsKKysJX19sZTMyIG51bV9rY29udHJvbHM7CisrCXN0cnVjdCBzbmRfc29jX3RwbGdfcHJpdmF0ZSBwcml2OworKwkvKgorKwkgKiBrY29udHJvbHMgdGhhdCByZWxhdGUgdG8gdGhpcyB3aWRnZXQKKysJICogZm9sbG93IGhlcmUgYWZ0ZXIgd2lkZ2V0IHByaXZhdGUgZGF0YQorKwkgKi8KKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKworKy8qCisrICogRGVzY3JpYmVzIFNXL0ZXIHNwZWNpZmljIGZlYXR1cmVzIG9mIFBDTSAoRkUgREFJICYgREFJIGxpbmspLgorKyAqCisrICogRmlsZSBibG9jayByZXByZXNlbnRhdGlvbiBmb3IgUENNIDotCisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19oZHIgICAgICAgICAgIHwgIDEgIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisrICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX3BjbSAgICAgICAgICAgfCAgTiAgfAorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX3BjbSB7CisrCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJY2hhciBwY21fbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CisrCWNoYXIgZGFpX25hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKwlfX2xlMzIgcGNtX2lkOwkJLyogdW5pcXVlIElEIC0gdXNlZCB0byBtYXRjaCB3aXRoIERBSSBsaW5rICovCisrCV9fbGUzMiBkYWlfaWQ7CQkvKiB1bmlxdWUgSUQgLSB1c2VkIHRvIG1hdGNoICovCisrCV9fbGUzMiBwbGF5YmFjazsJLyogc3VwcG9ydHMgcGxheWJhY2sgbW9kZSAqLworKwlfX2xlMzIgY2FwdHVyZTsJCS8qIHN1cHBvcnRzIGNhcHR1cmUgbW9kZSAqLworKwlfX2xlMzIgY29tcHJlc3M7CS8qIDEgPSBjb21wcmVzc2VkOyAwID0gUENNICovCisrCXN0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtIHN0cmVhbVtTTkRfU09DX1RQTEdfU1RSRUFNX0NPTkZJR19NQVhdOyAvKiBmb3IgREFJIGxpbmsgKi8KKysJX19sZTMyIG51bV9zdHJlYW1zOwkvKiBudW1iZXIgb2Ygc3RyZWFtcyAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbV9jYXBzIGNhcHNbMl07IC8qIHBsYXliYWNrIGFuZCBjYXB0dXJlIGZvciBEQUkgKi8KKysJX19sZTMyIGZsYWdfbWFzazsgICAgICAgLyogYml0bWFzayBvZiBmbGFncyB0byBjb25maWd1cmUgKi8KKysJX19sZTMyIGZsYWdzOyAgICAgICAgICAgLyogU05EX1NPQ19UUExHX0xOS19GTEdCSVRfKiBmbGFnIHZhbHVlICovCisrCXN0cnVjdCBzbmRfc29jX3RwbGdfcHJpdmF0ZSBwcml2OworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrCisrLyoKKysgKiBEZXNjcmliZXMgdGhlIHBoeXNpY2FsIGxpbmsgcnVudGltZSBzdXBwb3J0ZWQgY29uZmlncyBvciBwYXJhbXMKKysgKgorKyAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIHBoeXNpY2FsIGxpbmsgY29uZmlnIDotCisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19oZHIgICAgICAgICAgIHwgIDEgIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisrICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2xpbmtfY29uZmlnICAgfCAgTiAgfAorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX2xpbmtfY29uZmlnIHsKKysJX19sZTMyIHNpemU7ICAgICAgICAgICAgLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJX19sZTMyIGlkOyAgICAgICAgICAgICAgLyogdW5pcXVlIElEIC0gdXNlZCB0byBtYXRjaCAqLworKwljaGFyIG5hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOyAvKiBuYW1lIC0gdXNlZCB0byBtYXRjaCAqLworKwljaGFyIHN0cmVhbV9uYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsgLyogc3RyZWFtIG5hbWUgLSB1c2VkIHRvIG1hdGNoICovCisrCXN0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtIHN0cmVhbVtTTkRfU09DX1RQTEdfU1RSRUFNX0NPTkZJR19NQVhdOyAvKiBzdXBwb3J0ZWQgY29uZmlncyBwbGF5YmFjayBhbmQgY2FwdHJ1cmUgKi8KKysJX19sZTMyIG51bV9zdHJlYW1zOyAgICAgLyogbnVtYmVyIG9mIHN0cmVhbXMgKi8KKysJc3RydWN0IHNuZF9zb2NfdHBsZ19od19jb25maWcgaHdfY29uZmlnW1NORF9TT0NfVFBMR19IV19DT05GSUdfTUFYXTsgLyogaHcgY29uZmlncyAqLworKwlfX2xlMzIgbnVtX2h3X2NvbmZpZ3M7ICAgICAgICAgLyogbnVtYmVyIG9mIGh3IGNvbmZpZ3MgKi8KKysJX19sZTMyIGRlZmF1bHRfaHdfY29uZmlnX2lkOyAgIC8qIGRlZmF1bHQgaHcgY29uZmlnIElEIGZvciBpbml0ICovCisrCV9fbGUzMiBmbGFnX21hc2s7ICAgICAgIC8qIGJpdG1hc2sgb2YgZmxhZ3MgdG8gY29uZmlndXJlICovCisrCV9fbGUzMiBmbGFnczsgICAgICAgICAgIC8qIFNORF9TT0NfVFBMR19MTktfRkxHQklUXyogZmxhZyB2YWx1ZSAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKy8qCisrICogRGVzY3JpYmVzIFNXL0ZXIHNwZWNpZmljIGZlYXR1cmVzIG9mIHBoeXNpY2FsIERBSS4KKysgKiBJdCBjYW4gYmUgdXNlZCB0byBjb25maWd1cmUgYmFja2VuZCBEQUlzIGZvciBEUENNLgorKyAqCisrICogRmlsZSBibG9jayByZXByZXNlbnRhdGlvbiBmb3IgcGh5c2ljYWwgREFJIDotCisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19oZHIgICAgICAgICAgIHwgIDEgIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisrICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2RhaSAgICAgICAgICAgfCAgTiAgfAorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX2RhaSB7CisrCV9fbGUzMiBzaXplOyAgICAgICAgICAgIC8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCWNoYXIgZGFpX25hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOyAvKiBuYW1lIC0gdXNlZCB0byBtYXRjaCAqLworKwlfX2xlMzIgZGFpX2lkOyAgICAgICAgICAvKiB1bmlxdWUgSUQgLSB1c2VkIHRvIG1hdGNoICovCisrCV9fbGUzMiBwbGF5YmFjazsgICAgICAgIC8qIHN1cHBvcnRzIHBsYXliYWNrIG1vZGUgKi8KKysJX19sZTMyIGNhcHR1cmU7ICAgICAgICAgLyogc3VwcG9ydHMgY2FwdHVyZSBtb2RlICovCisrCXN0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtX2NhcHMgY2Fwc1syXTsgLyogcGxheWJhY2sgYW5kIGNhcHR1cmUgZm9yIERBSSAqLworKwlfX2xlMzIgZmxhZ19tYXNrOyAgICAgICAvKiBiaXRtYXNrIG9mIGZsYWdzIHRvIGNvbmZpZ3VyZSAqLworKwlfX2xlMzIgZmxhZ3M7ICAgICAgICAgICAvKiBTTkRfU09DX1RQTEdfREFJX0ZMR0JJVF8qICovCisrCXN0cnVjdCBzbmRfc29jX3RwbGdfcHJpdmF0ZSBwcml2OworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyoKKysgKiBPbGQgdmVyc2lvbiBvZiBBQkkgc3RydWN0cywgc3VwcG9ydGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgorKyAqLworKworKy8qIE1hbmlmZXN0IHY0ICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19tYW5pZmVzdF92NCB7CisrCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJX19sZTMyIGNvbnRyb2xfZWxlbXM7CS8qIG51bWJlciBvZiBjb250cm9sIGVsZW1lbnRzICovCisrCV9fbGUzMiB3aWRnZXRfZWxlbXM7CS8qIG51bWJlciBvZiB3aWRnZXQgZWxlbWVudHMgKi8KKysJX19sZTMyIGdyYXBoX2VsZW1zOwkvKiBudW1iZXIgb2YgZ3JhcGggZWxlbWVudHMgKi8KKysJX19sZTMyIHBjbV9lbGVtczsJLyogbnVtYmVyIG9mIFBDTSBlbGVtZW50cyAqLworKwlfX2xlMzIgZGFpX2xpbmtfZWxlbXM7CS8qIG51bWJlciBvZiBEQUkgbGluayBlbGVtZW50cyAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKyt9IF9fcGFja2VkOworKworKy8qIFN0cmVhbSBDYXBhYmlsaXRpZXMgdjQgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbV9jYXBzX3Y0IHsKKysJX19sZTMyIHNpemU7CQkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwljaGFyIG5hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKwlfX2xlNjQgZm9ybWF0czsJLyogc3VwcG9ydGVkIGZvcm1hdHMgU05EUlZfUENNX0ZNVEJJVF8qICovCisrCV9fbGUzMiByYXRlczsJCS8qIHN1cHBvcnRlZCByYXRlcyBTTkRSVl9QQ01fUkFURV8qICovCisrCV9fbGUzMiByYXRlX21pbjsJLyogbWluIHJhdGUgKi8KKysJX19sZTMyIHJhdGVfbWF4OwkvKiBtYXggcmF0ZSAqLworKwlfX2xlMzIgY2hhbm5lbHNfbWluOwkvKiBtaW4gY2hhbm5lbHMgKi8KKysJX19sZTMyIGNoYW5uZWxzX21heDsJLyogbWF4IGNoYW5uZWxzICovCisrCV9fbGUzMiBwZXJpb2RzX21pbjsJLyogbWluIG51bWJlciBvZiBwZXJpb2RzICovCisrCV9fbGUzMiBwZXJpb2RzX21heDsJLyogbWF4IG51bWJlciBvZiBwZXJpb2RzICovCisrCV9fbGUzMiBwZXJpb2Rfc2l6ZV9taW47CS8qIG1pbiBwZXJpb2Qgc2l6ZSBieXRlcyAqLworKwlfX2xlMzIgcGVyaW9kX3NpemVfbWF4OwkvKiBtYXggcGVyaW9kIHNpemUgYnl0ZXMgKi8KKysJX19sZTMyIGJ1ZmZlcl9zaXplX21pbjsJLyogbWluIGJ1ZmZlciBzaXplIGJ5dGVzICovCisrCV9fbGUzMiBidWZmZXJfc2l6ZV9tYXg7CS8qIG1heCBidWZmZXIgc2l6ZSBieXRlcyAqLworK30gX19wYWNrZWQ7CisrCisrLyogUENNIHY0ICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19wY21fdjQgeworKwlfX2xlMzIgc2l6ZTsJCS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCWNoYXIgcGNtX25hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKwljaGFyIGRhaV9uYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKysJX19sZTMyIHBjbV9pZDsJCS8qIHVuaXF1ZSBJRCAtIHVzZWQgdG8gbWF0Y2ggd2l0aCBEQUkgbGluayAqLworKwlfX2xlMzIgZGFpX2lkOwkJLyogdW5pcXVlIElEIC0gdXNlZCB0byBtYXRjaCAqLworKwlfX2xlMzIgcGxheWJhY2s7CS8qIHN1cHBvcnRzIHBsYXliYWNrIG1vZGUgKi8KKysJX19sZTMyIGNhcHR1cmU7CQkvKiBzdXBwb3J0cyBjYXB0dXJlIG1vZGUgKi8KKysJX19sZTMyIGNvbXByZXNzOwkvKiAxID0gY29tcHJlc3NlZDsgMCA9IFBDTSAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbSBzdHJlYW1bU05EX1NPQ19UUExHX1NUUkVBTV9DT05GSUdfTUFYXTsgLyogZm9yIERBSSBsaW5rICovCisrCV9fbGUzMiBudW1fc3RyZWFtczsJLyogbnVtYmVyIG9mIHN0cmVhbXMgKi8KKysJc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW1fY2Fwc192NCBjYXBzWzJdOyAvKiBwbGF5YmFjayBhbmQgY2FwdHVyZSBmb3IgREFJICovCisrfSBfX3BhY2tlZDsKKysKKysvKiBQaHlzaWNhbCBsaW5rIGNvbmZpZyB2NCAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfbGlua19jb25maWdfdjQgeworKwlfX2xlMzIgc2l6ZTsgICAgICAgICAgICAvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwlfX2xlMzIgaWQ7ICAgICAgICAgICAgICAvKiB1bmlxdWUgSUQgLSB1c2VkIHRvIG1hdGNoICovCisrCXN0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtIHN0cmVhbVtTTkRfU09DX1RQTEdfU1RSRUFNX0NPTkZJR19NQVhdOyAvKiBzdXBwb3J0ZWQgY29uZmlncyBwbGF5YmFjayBhbmQgY2FwdHJ1cmUgKi8KKysJX19sZTMyIG51bV9zdHJlYW1zOyAgICAgLyogbnVtYmVyIG9mIHN0cmVhbXMgKi8KKyt9IF9fcGFja2VkOworKworKyNlbmRpZgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvdWFwaS9hc291bmQuaCBiL2luY2x1ZGUvc291bmQvdWFwaS9hc291bmQuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi5kZjExNTNjZQorLS0tIC9kZXYvbnVsbAorKysrIGIvaW5jbHVkZS9zb3VuZC91YXBpL2Fzb3VuZC5oCitAQCAtMCwwICsxLDEwMzggQEAKKysvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKysvKgorKyAqICBBZHZhbmNlZCBMaW51eCBTb3VuZCBBcmNoaXRlY3R1cmUgLSBBTFNBIC0gRHJpdmVyCisrICogIENvcHlyaWdodCAoYykgMTk5NC0yMDAzIGJ5IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+LAorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBYnJhbW8gQmFnbmFyYSA8YWJyYW1vQGFsc2EtcHJvamVjdC5vcmc+CisrICoKKysgKgorKyAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgKiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICogICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyBVU0EKKysgKgorKyAqLworKworKyNpZm5kZWYgX1VBUElfX1NPVU5EX0FTT1VORF9ICisrI2RlZmluZSBfVUFQSV9fU09VTkRfQVNPVU5EX0gKKysKKysjaWYgZGVmaW5lZChfX0tFUk5FTF9fKSB8fCBkZWZpbmVkKF9fbGludXhfXykKKysjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKysjZWxzZQorKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKysjZW5kaWYKKysKKysjaWZuZGVmIF9fS0VSTkVMX18KKysjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgPHRpbWUuaD4KKysjZW5kaWYKKysKKysvKgorKyAqICBwcm90b2NvbCB2ZXJzaW9uCisrICovCisrCisrI2RlZmluZSBTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKG1ham9yLCBtaW5vciwgc3VibWlub3IpICgoKG1ham9yKTw8MTYpfCgobWlub3IpPDw4KXwoc3VibWlub3IpKQorKyNkZWZpbmUgU05EUlZfUFJPVE9DT0xfTUFKT1IodmVyc2lvbikgKCgodmVyc2lvbik+PjE2KSYweGZmZmYpCisrI2RlZmluZSBTTkRSVl9QUk9UT0NPTF9NSU5PUih2ZXJzaW9uKSAoKCh2ZXJzaW9uKT4+OCkmMHhmZikKKysjZGVmaW5lIFNORFJWX1BST1RPQ09MX01JQ1JPKHZlcnNpb24pICgodmVyc2lvbikmMHhmZikKKysjZGVmaW5lIFNORFJWX1BST1RPQ09MX0lOQ09NUEFUSUJMRShrdmVyc2lvbiwgdXZlcnNpb24pIFwKKysJKFNORFJWX1BST1RPQ09MX01BSk9SKGt2ZXJzaW9uKSAhPSBTTkRSVl9QUk9UT0NPTF9NQUpPUih1dmVyc2lvbikgfHwgXAorKwkgKFNORFJWX1BST1RPQ09MX01BSk9SKGt2ZXJzaW9uKSA9PSBTTkRSVl9QUk9UT0NPTF9NQUpPUih1dmVyc2lvbikgJiYgXAorKwkgICBTTkRSVl9QUk9UT0NPTF9NSU5PUihrdmVyc2lvbikgIT0gU05EUlZfUFJPVE9DT0xfTUlOT1IodXZlcnNpb24pKSkKKysKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICAgICAgIERpZ2l0YWwgYXVkaW8gaW50ZXJmYWNlCQkJCQkgICAgKgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrc3RydWN0IHNuZF9hZXNfaWVjOTU4IHsKKysJdW5zaWduZWQgY2hhciBzdGF0dXNbMjRdOwkvKiBBRVMvSUVDOTU4IGNoYW5uZWwgc3RhdHVzIGJpdHMgKi8KKysJdW5zaWduZWQgY2hhciBzdWJjb2RlWzE0N107CS8qIEFFUy9JRUM5NTggc3ViY29kZSBiaXRzICovCisrCXVuc2lnbmVkIGNoYXIgcGFkOwkJLyogbm90aGluZyAqLworKwl1bnNpZ25lZCBjaGFyIGRpZ19zdWJmcmFtZVs0XTsJLyogQUVTL0lFQzk1OCBzdWJmcmFtZSBiaXRzICovCisrfTsKKysKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICAgICAgIENFQS04NjEgQXVkaW8gSW5mb0ZyYW1lLiBVc2VkIGluIEhETUkgYW5kIERpc3BsYXlQb3J0CQkgICAgKgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrc3RydWN0IHNuZF9jZWFfODYxX2F1ZF9pZiB7CisrCXVuc2lnbmVkIGNoYXIgZGIxX2N0X2NjOyAvKiBjb2RpbmcgdHlwZSBhbmQgY2hhbm5lbCBjb3VudCAqLworKwl1bnNpZ25lZCBjaGFyIGRiMl9zZl9zczsgLyogc2FtcGxlIGZyZXF1ZW5jeSBhbmQgc2l6ZSAqLworKwl1bnNpZ25lZCBjaGFyIGRiMzsgLyogbm90IHVzZWQsIGFsbCB6ZXJvcyAqLworKwl1bnNpZ25lZCBjaGFyIGRiNF9jYTsgLyogY2hhbm5lbCBhbGxvY2F0aW9uIGNvZGUgKi8KKysJdW5zaWduZWQgY2hhciBkYjVfZG1pbmhfbHN2OyAvKiBkb3dubWl4IGluaGliaXQgJiBsZXZlbC1zaGl0IHZhbHVlcyAqLworK307CisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgICAgU2VjdGlvbiBmb3IgZHJpdmVyIGhhcmR3YXJlIGRlcGVuZGVudCBpbnRlcmZhY2UgLSAvZGV2L3NuZC9odz8gICAgICAqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysjZGVmaW5lIFNORFJWX0hXREVQX1ZFUlNJT04JCVNORFJWX1BST1RPQ09MX1ZFUlNJT04oMSwgMCwgMSkKKysKKytlbnVtIHsKKysJU05EUlZfSFdERVBfSUZBQ0VfT1BMMiA9IDAsCisrCVNORFJWX0hXREVQX0lGQUNFX09QTDMsCisrCVNORFJWX0hXREVQX0lGQUNFX09QTDQsCisrCVNORFJWX0hXREVQX0lGQUNFX1NCMTZDU1AsCS8qIENyZWF0aXZlIFNpZ25hbCBQcm9jZXNzb3IgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfRU1VMTBLMSwJLyogRlg4MDEwIHByb2Nlc3NvciBpbiBFTVUxMEsxIGNoaXAgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfWVNTMjI1LAkvKiBZYW1haGEgRlggcHJvY2Vzc29yICovCisrCVNORFJWX0hXREVQX0lGQUNFX0lDUzIxMTUsCS8qIFdhdmV0YWJsZSBzeW50aCAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9TU0NBUEUsCS8qIEVuc29uaXEgU291bmRTY2FwZSBJU0EgY2FyZCAoTUM2OEVDMDAwKSAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9WWCwJCS8qIERpZ2lncmFtIFZYIGNhcmRzICovCisrCVNORFJWX0hXREVQX0lGQUNFX01JWEFSVCwJLyogRGlnaWdyYW0gbWlYYXJ0IGNhcmRzICovCisrCVNORFJWX0hXREVQX0lGQUNFX1VTWDJZLAkvKiBUYXNjYW0gVVMxMjIsIFVTMjI0ICYgVVM0MjggdXNiICovCisrCVNORFJWX0hXREVQX0lGQUNFX0VNVVhfV0FWRVRBQkxFLCAvKiBFbXVYIHdhdmV0YWJsZSAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9CTFVFVE9PVEgsCS8qIEJsdWV0b290aCBhdWRpbyAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9VU1gyWV9QQ00sCS8qIFRhc2NhbSBVUzEyMiwgVVMyMjQgJiBVUzQyOCByYXd1c2IgcGNtICovCisrCVNORFJWX0hXREVQX0lGQUNFX1BDWEhSLAkvKiBEaWdpZ3JhbSBQQ1hIUiAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9TQl9SQywJLyogU0IgRXh0aWd5L0F1ZGlneTJOWCByZW1vdGUgY29udHJvbCAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9IREEsCQkvKiBIRC1hdWRpbyAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9VU0JfU1RSRUFNLAkvKiBkaXJlY3QgYWNjZXNzIHRvIHVzYiBzdHJlYW0gKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfRldfRElDRSwJLyogVEMgRElDRSBGaXJlV2lyZSBkZXZpY2UgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfRldfRklSRVdPUktTLAkvKiBFY2hvIEF1ZGlvIEZpcmV3b3JrcyBiYXNlZCBkZXZpY2UgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfRldfQkVCT0IsCS8qIEJyaWRnZUNvIEJlQm9CIGJhc2VkIGRldmljZSAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9GV19PWEZXLAkvKiBPeGZvcmQgT1hGVzk3MC85NzEgYmFzZWQgZGV2aWNlICovCisrCVNORFJWX0hXREVQX0lGQUNFX0ZXX0RJR0kwMFgsCS8qIERpZ2lkZXNpZ24gRGlnaSAwMDIvMDAzIGZhbWlseSAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9GV19UQVNDQU0sCS8qIFRBU0NBTSBGaXJlV2lyZSBzZXJpZXMgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfTElORTYsCS8qIExpbmU2IFVTQiBwcm9jZXNzb3JzICovCisrCVNORFJWX0hXREVQX0lGQUNFX0ZXX01PVFUsCS8qIE1PVFUgRmlyZVdpcmUgc2VyaWVzICovCisrCVNORFJWX0hXREVQX0lGQUNFX0ZXX0ZJUkVGQUNFLAkvKiBSTUUgRmlyZWZhY2Ugc2VyaWVzICovCisrCisrCS8qIERvbid0IGZvcmdldCB0byBjaGFuZ2UgdGhlIGZvbGxvd2luZzogKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfTEFTVCA9IFNORFJWX0hXREVQX0lGQUNFX0ZXX0ZJUkVGQUNFCisrfTsKKysKKytzdHJ1Y3Qgc25kX2h3ZGVwX2luZm8geworKwl1bnNpZ25lZCBpbnQgZGV2aWNlOwkJLyogV1I6IGRldmljZSBudW1iZXIgKi8KKysJaW50IGNhcmQ7CQkJLyogUjogY2FyZCBudW1iZXIgKi8KKysJdW5zaWduZWQgY2hhciBpZFs2NF07CQkvKiBJRCAodXNlciBzZWxlY3RhYmxlKSAqLworKwl1bnNpZ25lZCBjaGFyIG5hbWVbODBdOwkJLyogaHdkZXAgbmFtZSAqLworKwlpbnQgaWZhY2U7CQkJLyogaHdkZXAgaW50ZXJmYWNlICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlICovCisrfTsKKysKKysvKiBnZW5lcmljIERTUCBsb2FkZXIgKi8KKytzdHJ1Y3Qgc25kX2h3ZGVwX2RzcF9zdGF0dXMgeworKwl1bnNpZ25lZCBpbnQgdmVyc2lvbjsJCS8qIFI6IGRyaXZlci1zcGVjaWZpYyB2ZXJzaW9uICovCisrCXVuc2lnbmVkIGNoYXIgaWRbMzJdOwkJLyogUjogZHJpdmVyLXNwZWNpZmljIElEIHN0cmluZyAqLworKwl1bnNpZ25lZCBpbnQgbnVtX2RzcHM7CQkvKiBSOiBudW1iZXIgb2YgRFNQIGltYWdlcyB0byB0cmFuc2ZlciAqLworKwl1bnNpZ25lZCBpbnQgZHNwX2xvYWRlZDsJLyogUjogYml0IGZsYWdzIGluZGljYXRpbmcgdGhlIGxvYWRlZCBEU1BzICovCisrCXVuc2lnbmVkIGludCBjaGlwX3JlYWR5OwkvKiBSOiAxID0gaW5pdGlhbGl6YXRpb24gZmluaXNoZWQgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFsxNl07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCisrfTsKKysKKytzdHJ1Y3Qgc25kX2h3ZGVwX2RzcF9pbWFnZSB7CisrCXVuc2lnbmVkIGludCBpbmRleDsJCS8qIFc6IERTUCBpbmRleCAqLworKwl1bnNpZ25lZCBjaGFyIG5hbWVbNjRdOwkJLyogVzogSUQgKGUuZy4gZmlsZSBuYW1lKSAqLworKwl1bnNpZ25lZCBjaGFyIF9fdXNlciAqaW1hZ2U7CS8qIFc6IGJpbmFyeSBpbWFnZSAqLworKwlzaXplX3QgbGVuZ3RoOwkJCS8qIFc6IHNpemUgb2YgaW1hZ2UgaW4gYnl0ZXMgKi8KKysJdW5zaWduZWQgbG9uZyBkcml2ZXJfZGF0YTsJLyogVzogZHJpdmVyLXNwZWNpZmljIGRhdGEgKi8KKyt9OworKworKyNkZWZpbmUgU05EUlZfSFdERVBfSU9DVExfUFZFUlNJT04JX0lPUiAoJ0gnLCAweDAwLCBpbnQpCisrI2RlZmluZSBTTkRSVl9IV0RFUF9JT0NUTF9JTkZPCQlfSU9SICgnSCcsIDB4MDEsIHN0cnVjdCBzbmRfaHdkZXBfaW5mbykKKysjZGVmaW5lIFNORFJWX0hXREVQX0lPQ1RMX0RTUF9TVEFUVVMJX0lPUignSCcsIDB4MDIsIHN0cnVjdCBzbmRfaHdkZXBfZHNwX3N0YXR1cykKKysjZGVmaW5lIFNORFJWX0hXREVQX0lPQ1RMX0RTUF9MT0FECV9JT1coJ0gnLCAweDAzLCBzdHJ1Y3Qgc25kX2h3ZGVwX2RzcF9pbWFnZSkKKysKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgICAgICAgICAgICBEaWdpdGFsIEF1ZGlvIChQQ00pIGludGVyZmFjZSAtIC9kZXYvc25kL3BjbT8/ICAgICAgICAgICAgICAgICoKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2RlZmluZSBTTkRSVl9QQ01fVkVSU0lPTgkJU05EUlZfUFJPVE9DT0xfVkVSU0lPTigyLCAwLCAxNCkKKysKKyt0eXBlZGVmIHVuc2lnbmVkIGxvbmcgc25kX3BjbV91ZnJhbWVzX3Q7CisrdHlwZWRlZiBzaWduZWQgbG9uZyBzbmRfcGNtX3NmcmFtZXNfdDsKKysKKytlbnVtIHsKKysJU05EUlZfUENNX0NMQVNTX0dFTkVSSUMgPSAwLAkvKiBzdGFuZGFyZCBtb25vIG9yIHN0ZXJlbyBkZXZpY2UgKi8KKysJU05EUlZfUENNX0NMQVNTX01VTFRJLAkJLyogbXVsdGljaGFubmVsIGRldmljZSAqLworKwlTTkRSVl9QQ01fQ0xBU1NfTU9ERU0sCQkvKiBzb2Z0d2FyZSBtb2RlbSBjbGFzcyAqLworKwlTTkRSVl9QQ01fQ0xBU1NfRElHSVRJWkVSLAkvKiBkaWdpdGl6ZXIgY2xhc3MgKi8KKysJLyogRG9uJ3QgZm9yZ2V0IHRvIGNoYW5nZSB0aGUgZm9sbG93aW5nOiAqLworKwlTTkRSVl9QQ01fQ0xBU1NfTEFTVCA9IFNORFJWX1BDTV9DTEFTU19ESUdJVElaRVIsCisrfTsKKysKKytlbnVtIHsKKysJU05EUlZfUENNX1NVQkNMQVNTX0dFTkVSSUNfTUlYID0gMCwgLyogbW9ubyBvciBzdGVyZW8gc3ViZGV2aWNlcyBhcmUgbWl4ZWQgdG9nZXRoZXIgKi8KKysJU05EUlZfUENNX1NVQkNMQVNTX01VTFRJX01JWCwJLyogbXVsdGljaGFubmVsIHN1YmRldmljZXMgYXJlIG1peGVkIHRvZ2V0aGVyICovCisrCS8qIERvbid0IGZvcmdldCB0byBjaGFuZ2UgdGhlIGZvbGxvd2luZzogKi8KKysJU05EUlZfUENNX1NVQkNMQVNTX0xBU1QgPSBTTkRSVl9QQ01fU1VCQ0xBU1NfTVVMVElfTUlYLAorK307CisrCisrZW51bSB7CisrCVNORFJWX1BDTV9TVFJFQU1fUExBWUJBQ0sgPSAwLAorKwlTTkRSVl9QQ01fU1RSRUFNX0NBUFRVUkUsCisrCVNORFJWX1BDTV9TVFJFQU1fTEFTVCA9IFNORFJWX1BDTV9TVFJFQU1fQ0FQVFVSRSwKKyt9OworKworK3R5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfcGNtX2FjY2Vzc190OworKyNkZWZpbmUJU05EUlZfUENNX0FDQ0VTU19NTUFQX0lOVEVSTEVBVkVECSgoX19mb3JjZSBzbmRfcGNtX2FjY2Vzc190KSAwKSAvKiBpbnRlcmxlYXZlZCBtbWFwICovCisrI2RlZmluZQlTTkRSVl9QQ01fQUNDRVNTX01NQVBfTk9OSU5URVJMRUFWRUQJKChfX2ZvcmNlIHNuZF9wY21fYWNjZXNzX3QpIDEpIC8qIG5vbmludGVybGVhdmVkIG1tYXAgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9BQ0NFU1NfTU1BUF9DT01QTEVYCQkoKF9fZm9yY2Ugc25kX3BjbV9hY2Nlc3NfdCkgMikgLyogY29tcGxleCBtbWFwICovCisrI2RlZmluZQlTTkRSVl9QQ01fQUNDRVNTX1JXX0lOVEVSTEVBVkVECQkoKF9fZm9yY2Ugc25kX3BjbV9hY2Nlc3NfdCkgMykgLyogcmVhZGkvd3JpdGVpICovCisrI2RlZmluZQlTTkRSVl9QQ01fQUNDRVNTX1JXX05PTklOVEVSTEVBVkVECSgoX19mb3JjZSBzbmRfcGNtX2FjY2Vzc190KSA0KSAvKiByZWFkbi93cml0ZW4gKi8KKysjZGVmaW5lCVNORFJWX1BDTV9BQ0NFU1NfTEFTVAkJU05EUlZfUENNX0FDQ0VTU19SV19OT05JTlRFUkxFQVZFRAorKworK3R5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfcGNtX2Zvcm1hdF90OworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TOAkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMCkKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTgJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDEpCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MxNl9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMikKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzE2X0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzKQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMTZfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQpCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UxNl9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNSkKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzI0X0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA2KSAvKiBsb3cgdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzI0X0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA3KSAvKiBsb3cgdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTI0X0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA4KSAvKiBsb3cgdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTI0X0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA5KSAvKiBsb3cgdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzMyX0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxMCkKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzMyX0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxMSkKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTMyX0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxMikKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTMyX0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxMykKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVRfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDE0KSAvKiA0LWJ5dGUgZmxvYXQsIElFRUUtNzU0IDMyLWJpdCwgcmFuZ2UgLTEuMCB0byAxLjAgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVRfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDE1KSAvKiA0LWJ5dGUgZmxvYXQsIElFRUUtNzU0IDMyLWJpdCwgcmFuZ2UgLTEuMCB0byAxLjAgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVQ2NF9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTYpIC8qIDgtYnl0ZSBmbG9hdCwgSUVFRS03NTQgNjQtYml0LCByYW5nZSAtMS4wIHRvIDEuMCAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9GTE9BVDY0X0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxNykgLyogOC1ieXRlIGZsb2F0LCBJRUVFLTc1NCA2NC1iaXQsIHJhbmdlIC0xLjAgdG8gMS4wICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRV9MRSAoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTgpIC8qIElFQy05NTggc3ViZnJhbWUsIExpdHRsZSBFbmRpYW4gKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0JFICgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxOSkgLyogSUVDLTk1OCBzdWJmcmFtZSwgQmlnIEVuZGlhbiAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9NVV9MQVcJCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyMCkKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfQV9MQVcJCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyMSkKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfSU1BX0FEUENNCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyMikKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfTVBFRwkJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDIzKQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9HU00JCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyNCkKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzIwX0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyNSkgLyogaW4gZm91ciBieXRlcywgTFNCIGp1c3RpZmllZCAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjBfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDI2KSAvKiBpbiBmb3VyIGJ5dGVzLCBMU0IganVzdGlmaWVkICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyMF9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMjcpIC8qIGluIGZvdXIgYnl0ZXMsIExTQiBqdXN0aWZpZWQgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTIwX0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyOCkgLyogaW4gZm91ciBieXRlcywgTFNCIGp1c3RpZmllZCAqLworKy8qIGdhcCBpbiB0aGUgbnVtYmVyaW5nIGZvciBhIGZ1dHVyZSBzdGFuZGFyZCBsaW5lYXIgZm9ybWF0ICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1NQRUNJQUwJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDMxKQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjRfM0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzMikJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzI0XzNCRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzMpCS8qIGluIHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyNF8zTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDM0KQkvKiBpbiB0aHJlZSBieXRlcyAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjRfM0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzNSkJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzIwXzNMRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzYpCS8qIGluIHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyMF8zQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDM3KQkvKiBpbiB0aHJlZSBieXRlcyAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjBfM0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzOCkJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTIwXzNCRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzkpCS8qIGluIHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MxOF8zTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQwKQkvKiBpbiB0aHJlZSBieXRlcyAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMThfM0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0MSkJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTE4XzNMRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDIpCS8qIGluIHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UxOF8zQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQzKQkvKiBpbiB0aHJlZSBieXRlcyAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9HNzIzXzI0CSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0NCkgLyogOCBzYW1wbGVzIGluIDMgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRzcyM18yNF8xQgkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDUpIC8qIDEgc2FtcGxlIGluIDEgYnl0ZSAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9HNzIzXzQwCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0NikgLyogOCBTYW1wbGVzIGluIDUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRzcyM180MF8xQgkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDcpIC8qIDEgc2FtcGxlIGluIDEgYnl0ZSAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9EU0RfVTgJCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0OCkgLyogRFNELCAxLWJ5dGUgc2FtcGxlcyBEU0QgKHg4KSAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9EU0RfVTE2X0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0OSkgLyogRFNELCAyLWJ5dGUgc2FtcGxlcyBEU0QgKHgxNiksIGxpdHRsZSBlbmRpYW4gKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRFNEX1UzMl9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNTApIC8qIERTRCwgNC1ieXRlIHNhbXBsZXMgRFNEICh4MzIpLCBsaXR0bGUgZW5kaWFuICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0RTRF9VMTZfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDUxKSAvKiBEU0QsIDItYnl0ZSBzYW1wbGVzIERTRCAoeDE2KSwgYmlnIGVuZGlhbiAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9EU0RfVTMyX0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA1MikgLyogRFNELCA0LWJ5dGUgc2FtcGxlcyBEU0QgKHgzMiksIGJpZyBlbmRpYW4gKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfTEFTVAkJU05EUlZfUENNX0ZPUk1BVF9EU0RfVTMyX0JFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZJUlNUCQlTTkRSVl9QQ01fRk9STUFUX1M4CisrCisrI2lmZGVmIFNORFJWX0xJVFRMRV9FTkRJQU4KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzE2CQlTTkRSVl9QQ01fRk9STUFUX1MxNl9MRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMTYJCVNORFJWX1BDTV9GT1JNQVRfVTE2X0xFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyNAkJU05EUlZfUENNX0ZPUk1BVF9TMjRfTEUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTI0CQlTTkRSVl9QQ01fRk9STUFUX1UyNF9MRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMzIJCVNORFJWX1BDTV9GT1JNQVRfUzMyX0xFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UzMgkJU05EUlZfUENNX0ZPUk1BVF9VMzJfTEUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVQJCVNORFJWX1BDTV9GT1JNQVRfRkxPQVRfTEUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVQ2NAlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUNjRfTEUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FIFNORFJWX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0xFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyMAkJU05EUlZfUENNX0ZPUk1BVF9TMjBfTEUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTIwCQlTTkRSVl9QQ01fRk9STUFUX1UyMF9MRQorKyNlbmRpZgorKyNpZmRlZiBTTkRSVl9CSUdfRU5ESUFOCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MxNgkJU05EUlZfUENNX0ZPUk1BVF9TMTZfQkUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTE2CQlTTkRSVl9QQ01fRk9STUFUX1UxNl9CRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjQJCVNORFJWX1BDTV9GT1JNQVRfUzI0X0JFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyNAkJU05EUlZfUENNX0ZPUk1BVF9VMjRfQkUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzMyCQlTTkRSVl9QQ01fRk9STUFUX1MzMl9CRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMzIJCVNORFJWX1BDTV9GT1JNQVRfVTMyX0JFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUCQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUX0JFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUNjQJU05EUlZfUENNX0ZPUk1BVF9GTE9BVDY0X0JFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRSBTTkRSVl9QQ01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRV9CRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjAJCVNORFJWX1BDTV9GT1JNQVRfUzIwX0JFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyMAkJU05EUlZfUENNX0ZPUk1BVF9VMjBfQkUKKysjZW5kaWYKKysKKyt0eXBlZGVmIGludCBfX2JpdHdpc2Ugc25kX3BjbV9zdWJmb3JtYXRfdDsKKysjZGVmaW5lCVNORFJWX1BDTV9TVUJGT1JNQVRfU1RECQkoKF9fZm9yY2Ugc25kX3BjbV9zdWJmb3JtYXRfdCkgMCkKKysjZGVmaW5lCVNORFJWX1BDTV9TVUJGT1JNQVRfTEFTVAlTTkRSVl9QQ01fU1VCRk9STUFUX1NURAorKworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fTU1BUAkJMHgwMDAwMDAwMQkvKiBoYXJkd2FyZSBzdXBwb3J0cyBtbWFwICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19NTUFQX1ZBTElECTB4MDAwMDAwMDIJLyogcGVyaW9kIGRhdGEgYXJlIHZhbGlkIGR1cmluZyB0cmFuc2ZlciAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fRE9VQkxFCQkweDAwMDAwMDA0CS8qIERvdWJsZSBidWZmZXJpbmcgbmVlZGVkIGZvciBQQ00gc3RhcnQvc3RvcCAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fQkFUQ0gJCTB4MDAwMDAwMTAJLyogZG91YmxlIGJ1ZmZlcmluZyAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fU1lOQ19BUFBMUFRSCTB4MDAwMDAwMjAJLyogbmVlZCB0aGUgZXhwbGljaXQgc3luYyBvZiBhcHBsX3B0ciB1cGRhdGUgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0lOVEVSTEVBVkVECTB4MDAwMDAxMDAJLyogY2hhbm5lbHMgYXJlIGludGVybGVhdmVkICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19OT05JTlRFUkxFQVZFRAkweDAwMDAwMjAwCS8qIGNoYW5uZWxzIGFyZSBub3QgaW50ZXJsZWF2ZWQgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0NPTVBMRVgJCTB4MDAwMDA0MDAJLyogY29tcGxleCBmcmFtZSBvcmdhbml6YXRpb24gKG1tYXAgb25seSkgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0JMT0NLX1RSQU5TRkVSCTB4MDAwMTAwMDAJLyogaGFyZHdhcmUgdHJhbnNmZXIgYmxvY2sgb2Ygc2FtcGxlcyAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fT1ZFUlJBTkdFCTB4MDAwMjAwMDAJLyogaGFyZHdhcmUgc3VwcG9ydHMgQURDIChjYXB0dXJlKSBvdmVycmFuZ2UgZGV0ZWN0aW9uICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19SRVNVTUUJCTB4MDAwNDAwMDAJLyogaGFyZHdhcmUgc3VwcG9ydHMgc3RyZWFtIHJlc3VtZSBhZnRlciBzdXNwZW5kICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19QQVVTRQkJMHgwMDA4MDAwMAkvKiBwYXVzZSBpb2N0bCBpcyBzdXBwb3J0ZWQgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0hBTEZfRFVQTEVYCTB4MDAxMDAwMDAJLyogb25seSBoYWxmIGR1cGxleCAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fSk9JTlRfRFVQTEVYCTB4MDAyMDAwMDAJLyogcGxheWJhY2sgYW5kIGNhcHR1cmUgc3RyZWFtIGFyZSBzb21ld2hhdCBjb3JyZWxhdGVkICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19TWU5DX1NUQVJUCTB4MDA0MDAwMDAJLyogcGNtIHN1cHBvcnQgc29tZSBraW5kIG9mIHN5bmMgZ28gKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX05PX1BFUklPRF9XQUtFVVAJMHgwMDgwMDAwMAkvKiBwZXJpb2Qgd2FrZXVwIGNhbiBiZSBkaXNhYmxlZCAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fSEFTX1dBTExfQ0xPQ0sgICAweDAxMDAwMDAwICAgICAgLyogKERlcHJlY2F0ZWQpaGFzIGF1ZGlvIHdhbGwgY2xvY2sgZm9yIGF1ZGlvL3N5c3RlbSB0aW1lIHN5bmMgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0hBU19MSU5LX0FUSU1FICAgICAgICAgICAgICAweDAxMDAwMDAwICAvKiByZXBvcnQgaGFyZHdhcmUgbGluayBhdWRpbyB0aW1lLCByZXNldCBvbiBzdGFydHVwICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19IQVNfTElOS19BQlNPTFVURV9BVElNRSAgICAgMHgwMjAwMDAwMCAgLyogcmVwb3J0IGFic29sdXRlIGhhcmR3YXJlIGxpbmsgYXVkaW8gdGltZSwgbm90IHJlc2V0IG9uIHN0YXJ0dXAgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0hBU19MSU5LX0VTVElNQVRFRF9BVElNRSAgICAweDA0MDAwMDAwICAvKiByZXBvcnQgZXN0aW1hdGVkIGxpbmsgYXVkaW8gdGltZSAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fSEFTX0xJTktfU1lOQ0hST05JWkVEX0FUSU1FIDB4MDgwMDAwMDAgIC8qIHJlcG9ydCBzeW5jaHJvbml6ZWQgYXVkaW8vc3lzdGVtIHRpbWUgKi8KKysKKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0RSQUlOX1RSSUdHRVIJMHg0MDAwMDAwMAkJLyogaW50ZXJuYWwga2VybmVsIGZsYWcgLSB0cmlnZ2VyIGluIGRyYWluICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19GSUZPX0lOX0ZSQU1FUwkweDgwMDAwMDAwCS8qIGludGVybmFsIGtlcm5lbCBmbGFnIC0gRklGTyBzaXplIGlzIGluIGZyYW1lcyAqLworKworKworKworK3R5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfcGNtX3N0YXRlX3Q7CisrI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfT1BFTgkJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgMCkgLyogc3RyZWFtIGlzIG9wZW4gKi8KKysjZGVmaW5lCVNORFJWX1BDTV9TVEFURV9TRVRVUAkJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgMSkgLyogc3RyZWFtIGhhcyBhIHNldHVwICovCisrI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfUFJFUEFSRUQJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgMikgLyogc3RyZWFtIGlzIHJlYWR5IHRvIHN0YXJ0ICovCisrI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfUlVOTklORwkJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgMykgLyogc3RyZWFtIGlzIHJ1bm5pbmcgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9TVEFURV9YUlVOCQkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSA0KSAvKiBzdHJlYW0gcmVhY2hlZCBhbiB4cnVuICovCisrI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfRFJBSU5JTkcJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgNSkgLyogc3RyZWFtIGlzIGRyYWluaW5nICovCisrI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfUEFVU0VECQkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSA2KSAvKiBzdHJlYW0gaXMgcGF1c2VkICovCisrI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfU1VTUEVOREVECSgoX19mb3JjZSBzbmRfcGNtX3N0YXRlX3QpIDcpIC8qIGhhcmR3YXJlIGlzIHN1c3BlbmRlZCAqLworKyNkZWZpbmUJU05EUlZfUENNX1NUQVRFX0RJU0NPTk5FQ1RFRAkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSA4KSAvKiBoYXJkd2FyZSBpcyBkaXNjb25uZWN0ZWQgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9TVEFURV9MQVNUCQlTTkRSVl9QQ01fU1RBVEVfRElTQ09OTkVDVEVECisrCisrZW51bSB7CisrCVNORFJWX1BDTV9NTUFQX09GRlNFVF9EQVRBID0gMHgwMDAwMDAwMCwKKysJU05EUlZfUENNX01NQVBfT0ZGU0VUX1NUQVRVUyA9IDB4ODAwMDAwMDAsCisrCVNORFJWX1BDTV9NTUFQX09GRlNFVF9DT05UUk9MID0gMHg4MTAwMDAwMCwKKyt9OworKworK3VuaW9uIHNuZF9wY21fc3luY19pZCB7CisrCXVuc2lnbmVkIGNoYXIgaWRbMTZdOworKwl1bnNpZ25lZCBzaG9ydCBpZDE2WzhdOworKwl1bnNpZ25lZCBpbnQgaWQzMls0XTsKKyt9OworKworK3N0cnVjdCBzbmRfcGNtX2luZm8geworKwl1bnNpZ25lZCBpbnQgZGV2aWNlOwkJLyogUk8vV1IgKGNvbnRyb2wpOiBkZXZpY2UgbnVtYmVyICovCisrCXVuc2lnbmVkIGludCBzdWJkZXZpY2U7CQkvKiBSTy9XUiAoY29udHJvbCk6IHN1YmRldmljZSBudW1iZXIgKi8KKysJaW50IHN0cmVhbTsJCQkvKiBSTy9XUiAoY29udHJvbCk6IHN0cmVhbSBkaXJlY3Rpb24gKi8KKysJaW50IGNhcmQ7CQkJLyogUjogY2FyZCBudW1iZXIgKi8KKysJdW5zaWduZWQgY2hhciBpZFs2NF07CQkvKiBJRCAodXNlciBzZWxlY3RhYmxlKSAqLworKwl1bnNpZ25lZCBjaGFyIG5hbWVbODBdOwkJLyogbmFtZSBvZiB0aGlzIGRldmljZSAqLworKwl1bnNpZ25lZCBjaGFyIHN1Ym5hbWVbMzJdOwkvKiBzdWJkZXZpY2UgbmFtZSAqLworKwlpbnQgZGV2X2NsYXNzOwkJCS8qIFNORFJWX1BDTV9DTEFTU18qICovCisrCWludCBkZXZfc3ViY2xhc3M7CQkvKiBTTkRSVl9QQ01fU1VCQ0xBU1NfKiAqLworKwl1bnNpZ25lZCBpbnQgc3ViZGV2aWNlc19jb3VudDsKKysJdW5zaWduZWQgaW50IHN1YmRldmljZXNfYXZhaWw7CisrCXVuaW9uIHNuZF9wY21fc3luY19pZCBzeW5jOwkvKiBoYXJkd2FyZSBzeW5jaHJvbml6YXRpb24gSUQgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUuLi4gKi8KKyt9OworKworK3R5cGVkZWYgaW50IHNuZF9wY21faHdfcGFyYW1fdDsKKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9BQ0NFU1MJMAkvKiBBY2Nlc3MgdHlwZSAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0ZPUk1BVAkxCS8qIEZvcm1hdCAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1NVQkZPUk1BVAkyCS8qIFN1YmZvcm1hdCAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0ZJUlNUX01BU0sJU05EUlZfUENNX0hXX1BBUkFNX0FDQ0VTUworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0xBU1RfTUFTSwlTTkRSVl9QQ01fSFdfUEFSQU1fU1VCRk9STUFUCisrCisrI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fU0FNUExFX0JJVFMJOAkvKiBCaXRzIHBlciBzYW1wbGUgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9GUkFNRV9CSVRTCTkJLyogQml0cyBwZXIgZnJhbWUgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9DSEFOTkVMUwkxMAkvKiBDaGFubmVscyAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1JBVEUJCTExCS8qIEFwcHJveCByYXRlICovCisrI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fUEVSSU9EX1RJTUUJMTIJLyogQXBwcm94IGRpc3RhbmNlIGJldHdlZW4KKysJCQkJCQkgKiBpbnRlcnJ1cHRzIGluIHVzCisrCQkJCQkJICovCisrI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fUEVSSU9EX1NJWkUJMTMJLyogQXBwcm94IGZyYW1lcyBiZXR3ZWVuCisrCQkJCQkJICogaW50ZXJydXB0cworKwkJCQkJCSAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1BFUklPRF9CWVRFUwkxNAkvKiBBcHByb3ggYnl0ZXMgYmV0d2VlbgorKwkJCQkJCSAqIGludGVycnVwdHMKKysJCQkJCQkgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9QRVJJT0RTCTE1CS8qIEFwcHJveCBpbnRlcnJ1cHRzIHBlcgorKwkJCQkJCSAqIGJ1ZmZlcgorKwkJCQkJCSAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0JVRkZFUl9USU1FCTE2CS8qIEFwcHJveCBkdXJhdGlvbiBvZiBidWZmZXIKKysJCQkJCQkgKiBpbiB1cworKwkJCQkJCSAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0JVRkZFUl9TSVpFCTE3CS8qIFNpemUgb2YgYnVmZmVyIGluIGZyYW1lcyAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0JVRkZFUl9CWVRFUwkxOAkvKiBTaXplIG9mIGJ1ZmZlciBpbiBieXRlcyAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1RJQ0tfVElNRQkxOQkvKiBBcHByb3ggdGljayBkdXJhdGlvbiBpbiB1cyAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0ZJUlNUX0lOVEVSVkFMCVNORFJWX1BDTV9IV19QQVJBTV9TQU1QTEVfQklUUworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0xBU1RfSU5URVJWQUwJU05EUlZfUENNX0hXX1BBUkFNX1RJQ0tfVElNRQorKworKyNkZWZpbmUgU05EUlZfUENNX0hXX1BBUkFNU19OT1JFU0FNUExFCSgxPDwwKQkvKiBhdm9pZCByYXRlIHJlc2FtcGxpbmcgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9IV19QQVJBTVNfRVhQT1JUX0JVRkZFUgkoMTw8MSkJLyogZXhwb3J0IGJ1ZmZlciAqLworKyNkZWZpbmUgU05EUlZfUENNX0hXX1BBUkFNU19OT19QRVJJT0RfV0FLRVVQCSgxPDwyKQkvKiBkaXNhYmxlIHBlcmlvZCB3YWtldXBzICovCisrCisrc3RydWN0IHNuZF9pbnRlcnZhbCB7CisrCXVuc2lnbmVkIGludCBtaW4sIG1heDsKKysJdW5zaWduZWQgaW50IG9wZW5taW46MSwKKysJCSAgICAgb3Blbm1heDoxLAorKwkJICAgICBpbnRlZ2VyOjEsCisrCQkgICAgIGVtcHR5OjE7CisrfTsKKysKKysjZGVmaW5lIFNORFJWX01BU0tfTUFYCTI1NgorKworK3N0cnVjdCBzbmRfbWFzayB7CisrCV9fdTMyIGJpdHNbKFNORFJWX01BU0tfTUFYKzMxKS8zMl07CisrfTsKKysKKytzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgeworKwl1bnNpZ25lZCBpbnQgZmxhZ3M7CisrCXN0cnVjdCBzbmRfbWFzayBtYXNrc1tTTkRSVl9QQ01fSFdfUEFSQU1fTEFTVF9NQVNLIC0KKysJCQkgICAgICAgU05EUlZfUENNX0hXX1BBUkFNX0ZJUlNUX01BU0sgKyAxXTsKKysJc3RydWN0IHNuZF9tYXNrIG1yZXNbNV07CS8qIHJlc2VydmVkIG1hc2tzICovCisrCXN0cnVjdCBzbmRfaW50ZXJ2YWwgaW50ZXJ2YWxzW1NORFJWX1BDTV9IV19QQVJBTV9MQVNUX0lOVEVSVkFMIC0KKysJCQkJICAgICAgICBTTkRSVl9QQ01fSFdfUEFSQU1fRklSU1RfSU5URVJWQUwgKyAxXTsKKysJc3RydWN0IHNuZF9pbnRlcnZhbCBpcmVzWzldOwkvKiByZXNlcnZlZCBpbnRlcnZhbHMgKi8KKysJdW5zaWduZWQgaW50IHJtYXNrOwkJLyogVzogcmVxdWVzdGVkIG1hc2tzICovCisrCXVuc2lnbmVkIGludCBjbWFzazsJCS8qIFI6IGNoYW5nZWQgbWFza3MgKi8KKysJdW5zaWduZWQgaW50IGluZm87CQkvKiBSOiBJbmZvIGZsYWdzIGZvciByZXR1cm5lZCBzZXR1cCAqLworKwl1bnNpZ25lZCBpbnQgbXNiaXRzOwkJLyogUjogdXNlZCBtb3N0IHNpZ25pZmljYW50IGJpdHMgKi8KKysJdW5zaWduZWQgaW50IHJhdGVfbnVtOwkJLyogUjogcmF0ZSBudW1lcmF0b3IgKi8KKysJdW5zaWduZWQgaW50IHJhdGVfZGVuOwkJLyogUjogcmF0ZSBkZW5vbWluYXRvciAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBmaWZvX3NpemU7CS8qIFI6IGNoaXAgRklGTyBzaXplIGluIGZyYW1lcyAqLworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0XTsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSAqLworK307CisrCisrZW51bSB7CisrCVNORFJWX1BDTV9UU1RBTVBfTk9ORSA9IDAsCisrCVNORFJWX1BDTV9UU1RBTVBfRU5BQkxFLAorKwlTTkRSVl9QQ01fVFNUQU1QX0xBU1QgPSBTTkRSVl9QQ01fVFNUQU1QX0VOQUJMRSwKKyt9OworKworK3N0cnVjdCBzbmRfcGNtX3N3X3BhcmFtcyB7CisrCWludCB0c3RhbXBfbW9kZTsJCQkvKiB0aW1lc3RhbXAgbW9kZSAqLworKwl1bnNpZ25lZCBpbnQgcGVyaW9kX3N0ZXA7CisrCXVuc2lnbmVkIGludCBzbGVlcF9taW47CQkJLyogbWluIHRpY2tzIHRvIHNsZWVwICovCisrCXNuZF9wY21fdWZyYW1lc190IGF2YWlsX21pbjsJCS8qIG1pbiBhdmFpbCBmcmFtZXMgZm9yIHdha2V1cCAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCB4ZmVyX2FsaWduOwkJLyogb2Jzb2xldGU6IHhmZXIgc2l6ZSBuZWVkIHRvIGJlIGEgbXVsdGlwbGUgKi8KKysJc25kX3BjbV91ZnJhbWVzX3Qgc3RhcnRfdGhyZXNob2xkOwkvKiBtaW4gaHdfYXZhaWwgZnJhbWVzIGZvciBhdXRvbWF0aWMgc3RhcnQgKi8KKysJc25kX3BjbV91ZnJhbWVzX3Qgc3RvcF90aHJlc2hvbGQ7CS8qIG1pbiBhdmFpbCBmcmFtZXMgZm9yIGF1dG9tYXRpYyBzdG9wICovCisrCXNuZF9wY21fdWZyYW1lc190IHNpbGVuY2VfdGhyZXNob2xkOwkvKiBtaW4gZGlzdGFuY2UgZnJvbSBub2lzZSBmb3Igc2lsZW5jZSBmaWxsaW5nICovCisrCXNuZF9wY21fdWZyYW1lc190IHNpbGVuY2Vfc2l6ZTsJCS8qIHNpbGVuY2UgYmxvY2sgc2l6ZSAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBib3VuZGFyeTsJCS8qIHBvaW50ZXJzIHdyYXAgcG9pbnQgKi8KKysJdW5zaWduZWQgaW50IHByb3RvOwkJCS8qIHByb3RvY29sIHZlcnNpb24gKi8KKysJdW5zaWduZWQgaW50IHRzdGFtcF90eXBlOwkJLyogdGltZXN0YW1wIHR5cGUgKHJlcS4gcHJvdG8gPj0gMi4wLjEyKSAqLworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzU2XTsJCS8qIHJlc2VydmVkIGZvciBmdXR1cmUgKi8KKyt9OworKworK3N0cnVjdCBzbmRfcGNtX2NoYW5uZWxfaW5mbyB7CisrCXVuc2lnbmVkIGludCBjaGFubmVsOworKwlfX2tlcm5lbF9vZmZfdCBvZmZzZXQ7CQkvKiBtbWFwIG9mZnNldCAqLworKwl1bnNpZ25lZCBpbnQgZmlyc3Q7CQkvKiBvZmZzZXQgdG8gZmlyc3Qgc2FtcGxlIGluIGJpdHMgKi8KKysJdW5zaWduZWQgaW50IHN0ZXA7CQkvKiBzYW1wbGVzIGRpc3RhbmNlIGluIGJpdHMgKi8KKyt9OworKworK2VudW0geworKwkvKgorKwkgKiAgZmlyc3QgZGVmaW5pdGlvbiBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgb25seSwKKysJICogIG1hcHMgdG8gd2FsbGNsb2NrL2xpbmsgdGltZSBmb3IgSERBdWRpbyBwbGF5YmFjayBhbmQgREVGQVVMVC9ETUEgdGltZSBmb3IgZXZlcnl0aGluZyBlbHNlCisrCSAqLworKwlTTkRSVl9QQ01fQVVESU9fVFNUQU1QX1RZUEVfQ09NUEFUID0gMCwKKysKKysJLyogdGltZXN0YW1wIGRlZmluaXRpb25zICovCisrCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9ERUZBVUxUID0gMSwgICAgICAgICAgIC8qIERNQSB0aW1lLCByZXBvcnRlZCBhcyBwZXIgaHdfcHRyICovCisrCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9MSU5LID0gMiwJICAgICAgICAgICAvKiBsaW5rIHRpbWUgcmVwb3J0ZWQgYnkgc2FtcGxlIG9yIHdhbGxjbG9jayBjb3VudGVyLCByZXNldCBvbiBzdGFydHVwICovCisrCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9MSU5LX0FCU09MVVRFID0gMywJICAgLyogbGluayB0aW1lIHJlcG9ydGVkIGJ5IHNhbXBsZSBvciB3YWxsY2xvY2sgY291bnRlciwgbm90IHJlc2V0IG9uIHN0YXJ0dXAgKi8KKysJU05EUlZfUENNX0FVRElPX1RTVEFNUF9UWVBFX0xJTktfRVNUSU1BVEVEID0gNCwgICAgLyogbGluayB0aW1lIGVzdGltYXRlZCBpbmRpcmVjdGx5ICovCisrCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9MSU5LX1NZTkNIUk9OSVpFRCA9IDUsIC8qIGxpbmsgdGltZSBzeW5jaHJvbml6ZWQgd2l0aCBzeXN0ZW0gdGltZSAqLworKwlTTkRSVl9QQ01fQVVESU9fVFNUQU1QX1RZUEVfTEFTVCA9IFNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9MSU5LX1NZTkNIUk9OSVpFRAorK307CisrCisrc3RydWN0IHNuZF9wY21fc3RhdHVzIHsKKysJc25kX3BjbV9zdGF0ZV90IHN0YXRlOwkJLyogc3RyZWFtIHN0YXRlICovCisrCXN0cnVjdCB0aW1lc3BlYyB0cmlnZ2VyX3RzdGFtcDsJLyogdGltZSB3aGVuIHN0cmVhbSB3YXMgc3RhcnRlZC9zdG9wcGVkL3BhdXNlZCAqLworKwlzdHJ1Y3QgdGltZXNwZWMgdHN0YW1wOwkJLyogcmVmZXJlbmNlIHRpbWVzdGFtcCAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBhcHBsX3B0cjsJLyogYXBwbCBwdHIgKi8KKysJc25kX3BjbV91ZnJhbWVzX3QgaHdfcHRyOwkvKiBodyBwdHIgKi8KKysJc25kX3BjbV9zZnJhbWVzX3QgZGVsYXk7CS8qIGN1cnJlbnQgZGVsYXkgaW4gZnJhbWVzICovCisrCXNuZF9wY21fdWZyYW1lc190IGF2YWlsOwkvKiBudW1iZXIgb2YgZnJhbWVzIGF2YWlsYWJsZSAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBhdmFpbF9tYXg7CS8qIG1heCBmcmFtZXMgYXZhaWxhYmxlIG9uIGh3IHNpbmNlIGxhc3Qgc3RhdHVzICovCisrCXNuZF9wY21fdWZyYW1lc190IG92ZXJyYW5nZTsJLyogY291bnQgb2YgQURDIChjYXB0dXJlKSBvdmVycmFuZ2UgZGV0ZWN0aW9ucyBmcm9tIGxhc3Qgc3RhdHVzICovCisrCXNuZF9wY21fc3RhdGVfdCBzdXNwZW5kZWRfc3RhdGU7IC8qIHN1c3BlbmRlZCBzdHJlYW0gc3RhdGUgKi8KKysJX191MzIgYXVkaW9fdHN0YW1wX2RhdGE7CSAvKiBuZWVkZWQgZm9yIDY0LWJpdCBhbGlnbm1lbnQsIHVzZWQgZm9yIGNvbmZpZ3MvcmVwb3J0IHRvL2Zyb20gdXNlcnNwYWNlICovCisrCXN0cnVjdCB0aW1lc3BlYyBhdWRpb190c3RhbXA7CS8qIHNhbXBsZSBjb3VudGVyLCB3YWxsIGNsb2NrLCBQSEMgb3Igb24tZGVtYW5kIHN5bmMnZWQgKi8KKysJc3RydWN0IHRpbWVzcGVjIGRyaXZlcl90c3RhbXA7CS8qIHVzZWZ1bCBpbiBjYXNlIHJlZmVyZW5jZSBzeXN0ZW0gdHN0YW1wIGlzIHJlcG9ydGVkIHdpdGggZGVsYXkgKi8KKysJX191MzIgYXVkaW9fdHN0YW1wX2FjY3VyYWN5OwkvKiBpbiBucyB1bml0cywgb25seSB2YWxpZCBpZiBpbmRpY2F0ZWQgaW4gYXVkaW9fdHN0YW1wX2RhdGEgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFs1Mi0yKnNpemVvZihzdHJ1Y3QgdGltZXNwZWMpXTsgLyogbXVzdCBiZSBmaWxsZWQgd2l0aCB6ZXJvICovCisrfTsKKysKKytzdHJ1Y3Qgc25kX3BjbV9tbWFwX3N0YXR1cyB7CisrCXNuZF9wY21fc3RhdGVfdCBzdGF0ZTsJCS8qIFJPOiBzdGF0ZSAtIFNORFJWX1BDTV9TVEFURV9YWFhYICovCisrCWludCBwYWQxOwkJCS8qIE5lZWRlZCBmb3IgNjQgYml0IGFsaWdubWVudCAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBod19wdHI7CS8qIFJPOiBodyBwdHIgKDAuLi5ib3VuZGFyeS0xKSAqLworKwlzdHJ1Y3QgdGltZXNwZWMgdHN0YW1wOwkJLyogVGltZXN0YW1wICovCisrCXNuZF9wY21fc3RhdGVfdCBzdXNwZW5kZWRfc3RhdGU7IC8qIFJPOiBzdXNwZW5kZWQgc3RyZWFtIHN0YXRlICovCisrCXN0cnVjdCB0aW1lc3BlYyBhdWRpb190c3RhbXA7CS8qIGZyb20gc2FtcGxlIGNvdW50ZXIgb3Igd2FsbCBjbG9jayAqLworK307CisrCisrc3RydWN0IHNuZF9wY21fbW1hcF9jb250cm9sIHsKKysJc25kX3BjbV91ZnJhbWVzX3QgYXBwbF9wdHI7CS8qIFJXOiBhcHBsIHB0ciAoMC4uLmJvdW5kYXJ5LTEpICovCisrCXNuZF9wY21fdWZyYW1lc190IGF2YWlsX21pbjsJLyogUlc6IG1pbiBhdmFpbGFibGUgZnJhbWVzIGZvciB3YWtldXAgKi8KKyt9OworKworKyNkZWZpbmUgU05EUlZfUENNX1NZTkNfUFRSX0hXU1lOQwkoMTw8MCkJLyogZXhlY3V0ZSBod3N5bmMgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9TWU5DX1BUUl9BUFBMCQkoMTw8MSkJLyogZ2V0IGFwcGxfcHRyIGZyb20gZHJpdmVyIChyL3cgb3ApICovCisrI2RlZmluZSBTTkRSVl9QQ01fU1lOQ19QVFJfQVZBSUxfTUlOCSgxPDwyKQkvKiBnZXQgYXZhaWxfbWluIGZyb20gZHJpdmVyICovCisrCisrc3RydWN0IHNuZF9wY21fc3luY19wdHIgeworKwl1bnNpZ25lZCBpbnQgZmxhZ3M7CisrCXVuaW9uIHsKKysJCXN0cnVjdCBzbmRfcGNtX21tYXBfc3RhdHVzIHN0YXR1czsKKysJCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOworKwl9IHM7CisrCXVuaW9uIHsKKysJCXN0cnVjdCBzbmRfcGNtX21tYXBfY29udHJvbCBjb250cm9sOworKwkJdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CisrCX0gYzsKKyt9OworKworK3N0cnVjdCBzbmRfeGZlcmkgeworKwlzbmRfcGNtX3NmcmFtZXNfdCByZXN1bHQ7CisrCXZvaWQgX191c2VyICpidWY7CisrCXNuZF9wY21fdWZyYW1lc190IGZyYW1lczsKKyt9OworKworK3N0cnVjdCBzbmRfeGZlcm4geworKwlzbmRfcGNtX3NmcmFtZXNfdCByZXN1bHQ7CisrCXZvaWQgX191c2VyICogX191c2VyICpidWZzOworKwlzbmRfcGNtX3VmcmFtZXNfdCBmcmFtZXM7CisrfTsKKysKKytlbnVtIHsKKysJU05EUlZfUENNX1RTVEFNUF9UWVBFX0dFVFRJTUVPRkRBWSA9IDAsCS8qIGdldHRpbWVvZmRheSBlcXVpdmFsZW50ICovCisrCVNORFJWX1BDTV9UU1RBTVBfVFlQRV9NT05PVE9OSUMsCS8qIHBvc2l4X2Nsb2NrX21vbm90b25pYyBlcXVpdmFsZW50ICovCisrCVNORFJWX1BDTV9UU1RBTVBfVFlQRV9NT05PVE9OSUNfUkFXLCAgICAvKiBtb25vdG9uaWNfcmF3IChubyBOVFApICovCisrCVNORFJWX1BDTV9UU1RBTVBfVFlQRV9MQVNUID0gU05EUlZfUENNX1RTVEFNUF9UWVBFX01PTk9UT05JQ19SQVcsCisrfTsKKysKKysvKiBjaGFubmVsIHBvc2l0aW9ucyAqLworK2VudW0geworKwlTTkRSVl9DSE1BUF9VTktOT1dOID0gMCwKKysJU05EUlZfQ0hNQVBfTkEsCQkvKiBOL0EsIHNpbGVudCAqLworKwlTTkRSVl9DSE1BUF9NT05PLAkvKiBtb25vIHN0cmVhbSAqLworKwkvKiB0aGlzIGZvbGxvd3MgdGhlIGFsc2EtbGliIG1peGVyIGNoYW5uZWwgdmFsdWUgKyAzICovCisrCVNORFJWX0NITUFQX0ZMLAkJLyogZnJvbnQgbGVmdCAqLworKwlTTkRSVl9DSE1BUF9GUiwJCS8qIGZyb250IHJpZ2h0ICovCisrCVNORFJWX0NITUFQX1JMLAkJLyogcmVhciBsZWZ0ICovCisrCVNORFJWX0NITUFQX1JSLAkJLyogcmVhciByaWdodCAqLworKwlTTkRSVl9DSE1BUF9GQywJCS8qIGZyb250IGNlbnRlciAqLworKwlTTkRSVl9DSE1BUF9MRkUsCS8qIExGRSAqLworKwlTTkRSVl9DSE1BUF9TTCwJCS8qIHNpZGUgbGVmdCAqLworKwlTTkRSVl9DSE1BUF9TUiwJCS8qIHNpZGUgcmlnaHQgKi8KKysJU05EUlZfQ0hNQVBfUkMsCQkvKiByZWFyIGNlbnRlciAqLworKwkvKiBuZXcgZGVmaW5pdGlvbnMgKi8KKysJU05EUlZfQ0hNQVBfRkxDLAkvKiBmcm9udCBsZWZ0IGNlbnRlciAqLworKwlTTkRSVl9DSE1BUF9GUkMsCS8qIGZyb250IHJpZ2h0IGNlbnRlciAqLworKwlTTkRSVl9DSE1BUF9STEMsCS8qIHJlYXIgbGVmdCBjZW50ZXIgKi8KKysJU05EUlZfQ0hNQVBfUlJDLAkvKiByZWFyIHJpZ2h0IGNlbnRlciAqLworKwlTTkRSVl9DSE1BUF9GTFcsCS8qIGZyb250IGxlZnQgd2lkZSAqLworKwlTTkRSVl9DSE1BUF9GUlcsCS8qIGZyb250IHJpZ2h0IHdpZGUgKi8KKysJU05EUlZfQ0hNQVBfRkxILAkvKiBmcm9udCBsZWZ0IGhpZ2ggKi8KKysJU05EUlZfQ0hNQVBfRkNILAkvKiBmcm9udCBjZW50ZXIgaGlnaCAqLworKwlTTkRSVl9DSE1BUF9GUkgsCS8qIGZyb250IHJpZ2h0IGhpZ2ggKi8KKysJU05EUlZfQ0hNQVBfVEMsCQkvKiB0b3AgY2VudGVyICovCisrCVNORFJWX0NITUFQX1RGTCwJLyogdG9wIGZyb250IGxlZnQgKi8KKysJU05EUlZfQ0hNQVBfVEZSLAkvKiB0b3AgZnJvbnQgcmlnaHQgKi8KKysJU05EUlZfQ0hNQVBfVEZDLAkvKiB0b3AgZnJvbnQgY2VudGVyICovCisrCVNORFJWX0NITUFQX1RSTCwJLyogdG9wIHJlYXIgbGVmdCAqLworKwlTTkRSVl9DSE1BUF9UUlIsCS8qIHRvcCByZWFyIHJpZ2h0ICovCisrCVNORFJWX0NITUFQX1RSQywJLyogdG9wIHJlYXIgY2VudGVyICovCisrCS8qIG5ldyBkZWZpbml0aW9ucyBmb3IgVUFDMiAqLworKwlTTkRSVl9DSE1BUF9URkxDLAkvKiB0b3AgZnJvbnQgbGVmdCBjZW50ZXIgKi8KKysJU05EUlZfQ0hNQVBfVEZSQywJLyogdG9wIGZyb250IHJpZ2h0IGNlbnRlciAqLworKwlTTkRSVl9DSE1BUF9UU0wsCS8qIHRvcCBzaWRlIGxlZnQgKi8KKysJU05EUlZfQ0hNQVBfVFNSLAkvKiB0b3Agc2lkZSByaWdodCAqLworKwlTTkRSVl9DSE1BUF9MTEZFLAkvKiBsZWZ0IExGRSAqLworKwlTTkRSVl9DSE1BUF9STEZFLAkvKiByaWdodCBMRkUgKi8KKysJU05EUlZfQ0hNQVBfQkMsCQkvKiBib3R0b20gY2VudGVyICovCisrCVNORFJWX0NITUFQX0JMQywJLyogYm90dG9tIGxlZnQgY2VudGVyICovCisrCVNORFJWX0NITUFQX0JSQywJLyogYm90dG9tIHJpZ2h0IGNlbnRlciAqLworKwlTTkRSVl9DSE1BUF9MQVNUID0gU05EUlZfQ0hNQVBfQlJDLAorK307CisrCisrI2RlZmluZSBTTkRSVl9DSE1BUF9QT1NJVElPTl9NQVNLCTB4ZmZmZgorKyNkZWZpbmUgU05EUlZfQ0hNQVBfUEhBU0VfSU5WRVJTRQkoMHgwMSA8PCAxNikKKysjZGVmaW5lIFNORFJWX0NITUFQX0RSSVZFUl9TUEVDCQkoMHgwMiA8PCAxNikKKysKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9QVkVSU0lPTglfSU9SKCdBJywgMHgwMCwgaW50KQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0lORk8JCV9JT1IoJ0EnLCAweDAxLCBzdHJ1Y3Qgc25kX3BjbV9pbmZvKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1RTVEFNUAkJX0lPVygnQScsIDB4MDIsIGludCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9UVFNUQU1QCQlfSU9XKCdBJywgMHgwMywgaW50KQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1VTRVJfUFZFUlNJT04JX0lPVygnQScsIDB4MDQsIGludCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9IV19SRUZJTkUJX0lPV1IoJ0EnLCAweDEwLCBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfSFdfUEFSQU1TCV9JT1dSKCdBJywgMHgxMSwgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0hXX0ZSRUUJCV9JTygnQScsIDB4MTIpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfU1dfUEFSQU1TCV9JT1dSKCdBJywgMHgxMywgc3RydWN0IHNuZF9wY21fc3dfcGFyYW1zKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1NUQVRVUwkJX0lPUignQScsIDB4MjAsIHN0cnVjdCBzbmRfcGNtX3N0YXR1cykKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9ERUxBWQkJX0lPUignQScsIDB4MjEsIHNuZF9wY21fc2ZyYW1lc190KQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0hXU1lOQwkJX0lPKCdBJywgMHgyMikKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9TWU5DX1BUUglfSU9XUignQScsIDB4MjMsIHN0cnVjdCBzbmRfcGNtX3N5bmNfcHRyKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1NUQVRVU19FWFQJX0lPV1IoJ0EnLCAweDI0LCBzdHJ1Y3Qgc25kX3BjbV9zdGF0dXMpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfQ0hBTk5FTF9JTkZPCV9JT1IoJ0EnLCAweDMyLCBzdHJ1Y3Qgc25kX3BjbV9jaGFubmVsX2luZm8pCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfUFJFUEFSRQkJX0lPKCdBJywgMHg0MCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9SRVNFVAkJX0lPKCdBJywgMHg0MSkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9TVEFSVAkJX0lPKCdBJywgMHg0MikKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9EUk9QCQlfSU8oJ0EnLCAweDQzKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0RSQUlOCQlfSU8oJ0EnLCAweDQ0KQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1BBVVNFCQlfSU9XKCdBJywgMHg0NSwgaW50KQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1JFV0lORAkJX0lPVygnQScsIDB4NDYsIHNuZF9wY21fdWZyYW1lc190KQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1JFU1VNRQkJX0lPKCdBJywgMHg0NykKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9YUlVOCQlfSU8oJ0EnLCAweDQ4KQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0ZPUldBUkQJCV9JT1coJ0EnLCAweDQ5LCBzbmRfcGNtX3VmcmFtZXNfdCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9XUklURUlfRlJBTUVTCV9JT1coJ0EnLCAweDUwLCBzdHJ1Y3Qgc25kX3hmZXJpKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1JFQURJX0ZSQU1FUwlfSU9SKCdBJywgMHg1MSwgc3RydWN0IHNuZF94ZmVyaSkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9XUklURU5fRlJBTUVTCV9JT1coJ0EnLCAweDUyLCBzdHJ1Y3Qgc25kX3hmZXJuKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1JFQUROX0ZSQU1FUwlfSU9SKCdBJywgMHg1Mywgc3RydWN0IHNuZF94ZmVybikKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9MSU5LCQlfSU9XKCdBJywgMHg2MCwgaW50KQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1VOTElOSwkJX0lPKCdBJywgMHg2MSkKKysKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSURJIHYxLjAgaW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrLyoKKysgKiAgUmF3IE1JREkgc2VjdGlvbiAtIC9kZXYvc25kL21pZGk/PworKyAqLworKworKyNkZWZpbmUgU05EUlZfUkFXTUlESV9WRVJTSU9OCQlTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDIsIDAsIDApCisrCisrZW51bSB7CisrCVNORFJWX1JBV01JRElfU1RSRUFNX09VVFBVVCA9IDAsCisrCVNORFJWX1JBV01JRElfU1RSRUFNX0lOUFVULAorKwlTTkRSVl9SQVdNSURJX1NUUkVBTV9MQVNUID0gU05EUlZfUkFXTUlESV9TVFJFQU1fSU5QVVQsCisrfTsKKysKKysjZGVmaW5lIFNORFJWX1JBV01JRElfSU5GT19PVVRQVVQJCTB4MDAwMDAwMDEKKysjZGVmaW5lIFNORFJWX1JBV01JRElfSU5GT19JTlBVVAkJMHgwMDAwMDAwMgorKyNkZWZpbmUgU05EUlZfUkFXTUlESV9JTkZPX0RVUExFWAkJMHgwMDAwMDAwNAorKworK3N0cnVjdCBzbmRfcmF3bWlkaV9pbmZvIHsKKysJdW5zaWduZWQgaW50IGRldmljZTsJCS8qIFJPL1dSIChjb250cm9sKTogZGV2aWNlIG51bWJlciAqLworKwl1bnNpZ25lZCBpbnQgc3ViZGV2aWNlOwkJLyogUk8vV1IgKGNvbnRyb2wpOiBzdWJkZXZpY2UgbnVtYmVyICovCisrCWludCBzdHJlYW07CQkJLyogV1I6IHN0cmVhbSAqLworKwlpbnQgY2FyZDsJCQkvKiBSOiBjYXJkIG51bWJlciAqLworKwl1bnNpZ25lZCBpbnQgZmxhZ3M7CQkvKiBTTkRSVl9SQVdNSURJX0lORk9fWFhYWCAqLworKwl1bnNpZ25lZCBjaGFyIGlkWzY0XTsJCS8qIElEICh1c2VyIHNlbGVjdGFibGUpICovCisrCXVuc2lnbmVkIGNoYXIgbmFtZVs4MF07CQkvKiBuYW1lIG9mIGRldmljZSAqLworKwl1bnNpZ25lZCBjaGFyIHN1Ym5hbWVbMzJdOwkvKiBuYW1lIG9mIGFjdGl2ZSBvciBzZWxlY3RlZCBzdWJkZXZpY2UgKi8KKysJdW5zaWduZWQgaW50IHN1YmRldmljZXNfY291bnQ7CisrCXVuc2lnbmVkIGludCBzdWJkZXZpY2VzX2F2YWlsOworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0XTsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KKyt9OworKworK3N0cnVjdCBzbmRfcmF3bWlkaV9wYXJhbXMgeworKwlpbnQgc3RyZWFtOworKwlzaXplX3QgYnVmZmVyX3NpemU7CQkvKiBxdWV1ZSBzaXplIGluIGJ5dGVzICovCisrCXNpemVfdCBhdmFpbF9taW47CQkvKiBtaW5pbXVtIGF2YWlsIGJ5dGVzIGZvciB3YWtldXAgKi8KKysJdW5zaWduZWQgaW50IG5vX2FjdGl2ZV9zZW5zaW5nOiAxOyAvKiBkbyBub3Qgc2VuZCBhY3RpdmUgc2Vuc2luZyBieXRlIGluIGNsb3NlKCkgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFsxNl07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCisrfTsKKysKKytzdHJ1Y3Qgc25kX3Jhd21pZGlfc3RhdHVzIHsKKysJaW50IHN0cmVhbTsKKysJc3RydWN0IHRpbWVzcGVjIHRzdGFtcDsJCS8qIFRpbWVzdGFtcCAqLworKwlzaXplX3QgYXZhaWw7CQkJLyogYXZhaWxhYmxlIGJ5dGVzICovCisrCXNpemVfdCB4cnVuczsJCQkvKiBjb3VudCBvZiBvdmVycnVucyBzaW5jZSBsYXN0IHN0YXR1cyAoaW4gYnl0ZXMpICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMTZdOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAqLworK307CisrCisrI2RlZmluZSBTTkRSVl9SQVdNSURJX0lPQ1RMX1BWRVJTSU9OCV9JT1IoJ1cnLCAweDAwLCBpbnQpCisrI2RlZmluZSBTTkRSVl9SQVdNSURJX0lPQ1RMX0lORk8JX0lPUignVycsIDB4MDEsIHN0cnVjdCBzbmRfcmF3bWlkaV9pbmZvKQorKyNkZWZpbmUgU05EUlZfUkFXTUlESV9JT0NUTF9QQVJBTVMJX0lPV1IoJ1cnLCAweDEwLCBzdHJ1Y3Qgc25kX3Jhd21pZGlfcGFyYW1zKQorKyNkZWZpbmUgU05EUlZfUkFXTUlESV9JT0NUTF9TVEFUVVMJX0lPV1IoJ1cnLCAweDIwLCBzdHJ1Y3Qgc25kX3Jhd21pZGlfc3RhdHVzKQorKyNkZWZpbmUgU05EUlZfUkFXTUlESV9JT0NUTF9EUk9QCV9JT1coJ1cnLCAweDMwLCBpbnQpCisrI2RlZmluZSBTTkRSVl9SQVdNSURJX0lPQ1RMX0RSQUlOCV9JT1coJ1cnLCAweDMxLCBpbnQpCisrCisrLyoKKysgKiAgVGltZXIgc2VjdGlvbiAtIC9kZXYvc25kL3RpbWVyCisrICovCisrCisrI2RlZmluZSBTTkRSVl9USU1FUl9WRVJTSU9OCQlTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDIsIDAsIDYpCisrCisrZW51bSB7CisrCVNORFJWX1RJTUVSX0NMQVNTX05PTkUgPSAtMSwKKysJU05EUlZfVElNRVJfQ0xBU1NfU0xBVkUgPSAwLAorKwlTTkRSVl9USU1FUl9DTEFTU19HTE9CQUwsCisrCVNORFJWX1RJTUVSX0NMQVNTX0NBUkQsCisrCVNORFJWX1RJTUVSX0NMQVNTX1BDTSwKKysJU05EUlZfVElNRVJfQ0xBU1NfTEFTVCA9IFNORFJWX1RJTUVSX0NMQVNTX1BDTSwKKyt9OworKworKy8qIHNsYXZlIHRpbWVyIGNsYXNzZXMgKi8KKytlbnVtIHsKKysJU05EUlZfVElNRVJfU0NMQVNTX05PTkUgPSAwLAorKwlTTkRSVl9USU1FUl9TQ0xBU1NfQVBQTElDQVRJT04sCisrCVNORFJWX1RJTUVSX1NDTEFTU19TRVFVRU5DRVIsCQkvKiBhbGlhcyAqLworKwlTTkRSVl9USU1FUl9TQ0xBU1NfT1NTX1NFUVVFTkNFUiwJLyogYWxpYXMgKi8KKysJU05EUlZfVElNRVJfU0NMQVNTX0xBU1QgPSBTTkRSVl9USU1FUl9TQ0xBU1NfT1NTX1NFUVVFTkNFUiwKKyt9OworKworKy8qIGdsb2JhbCB0aW1lcnMgKGRldmljZSBtZW1iZXIpICovCisrI2RlZmluZSBTTkRSVl9USU1FUl9HTE9CQUxfU1lTVEVNCTAKKysjZGVmaW5lIFNORFJWX1RJTUVSX0dMT0JBTF9SVEMJCTEJLyogdW51c2VkICovCisrI2RlZmluZSBTTkRSVl9USU1FUl9HTE9CQUxfSFBFVAkJMgorKyNkZWZpbmUgU05EUlZfVElNRVJfR0xPQkFMX0hSVElNRVIJMworKworKy8qIGluZm8gZmxhZ3MgKi8KKysjZGVmaW5lIFNORFJWX1RJTUVSX0ZMR19TTEFWRQkJKDE8PDApCS8qIGNhbm5vdCBiZSBjb250cm9sbGVkICovCisrCisrc3RydWN0IHNuZF90aW1lcl9pZCB7CisrCWludCBkZXZfY2xhc3M7CisrCWludCBkZXZfc2NsYXNzOworKwlpbnQgY2FyZDsKKysJaW50IGRldmljZTsKKysJaW50IHN1YmRldmljZTsKKyt9OworKworK3N0cnVjdCBzbmRfdGltZXJfZ2luZm8geworKwlzdHJ1Y3Qgc25kX3RpbWVyX2lkIHRpZDsJLyogcmVxdWVzdGVkIHRpbWVyIElEICovCisrCXVuc2lnbmVkIGludCBmbGFnczsJCS8qIHRpbWVyIGZsYWdzIC0gU05EUlZfVElNRVJfRkxHXyogKi8KKysJaW50IGNhcmQ7CQkJLyogY2FyZCBudW1iZXIgKi8KKysJdW5zaWduZWQgY2hhciBpZFs2NF07CQkvKiB0aW1lciBpZGVudGlmaWNhdGlvbiAqLworKwl1bnNpZ25lZCBjaGFyIG5hbWVbODBdOwkJLyogdGltZXIgbmFtZSAqLworKwl1bnNpZ25lZCBsb25nIHJlc2VydmVkMDsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KKysJdW5zaWduZWQgbG9uZyByZXNvbHV0aW9uOwkvKiBhdmVyYWdlIHBlcmlvZCByZXNvbHV0aW9uIGluIG5zICovCisrCXVuc2lnbmVkIGxvbmcgcmVzb2x1dGlvbl9taW47CS8qIG1pbmltYWwgcGVyaW9kIHJlc29sdXRpb24gaW4gbnMgKi8KKysJdW5zaWduZWQgbG9uZyByZXNvbHV0aW9uX21heDsJLyogbWF4aW1hbCBwZXJpb2QgcmVzb2x1dGlvbiBpbiBucyAqLworKwl1bnNpZ25lZCBpbnQgY2xpZW50czsJCS8qIGFjdGl2ZSB0aW1lciBjbGllbnRzICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMzJdOworK307CisrCisrc3RydWN0IHNuZF90aW1lcl9ncGFyYW1zIHsKKysJc3RydWN0IHNuZF90aW1lcl9pZCB0aWQ7CS8qIHJlcXVlc3RlZCB0aW1lciBJRCAqLworKwl1bnNpZ25lZCBsb25nIHBlcmlvZF9udW07CS8qIHJlcXVlc3RlZCBwcmVjaXNlIHBlcmlvZCBkdXJhdGlvbiAoaW4gc2Vjb25kcykgLSBudW1lcmF0b3IgKi8KKysJdW5zaWduZWQgbG9uZyBwZXJpb2RfZGVuOwkvKiByZXF1ZXN0ZWQgcHJlY2lzZSBwZXJpb2QgZHVyYXRpb24gKGluIHNlY29uZHMpIC0gZGVub21pbmF0b3IgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFszMl07CisrfTsKKysKKytzdHJ1Y3Qgc25kX3RpbWVyX2dzdGF0dXMgeworKwlzdHJ1Y3Qgc25kX3RpbWVyX2lkIHRpZDsJLyogcmVxdWVzdGVkIHRpbWVyIElEICovCisrCXVuc2lnbmVkIGxvbmcgcmVzb2x1dGlvbjsJLyogY3VycmVudCBwZXJpb2QgcmVzb2x1dGlvbiBpbiBucyAqLworKwl1bnNpZ25lZCBsb25nIHJlc29sdXRpb25fbnVtOwkvKiBwcmVjaXNlIGN1cnJlbnQgcGVyaW9kIHJlc29sdXRpb24gKGluIHNlY29uZHMpIC0gbnVtZXJhdG9yICovCisrCXVuc2lnbmVkIGxvbmcgcmVzb2x1dGlvbl9kZW47CS8qIHByZWNpc2UgY3VycmVudCBwZXJpb2QgcmVzb2x1dGlvbiAoaW4gc2Vjb25kcykgLSBkZW5vbWluYXRvciAqLworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzMyXTsKKyt9OworKworK3N0cnVjdCBzbmRfdGltZXJfc2VsZWN0IHsKKysJc3RydWN0IHNuZF90aW1lcl9pZCBpZDsJLyogYmluZCB0byB0aW1lciBJRCAqLworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzMyXTsJLyogcmVzZXJ2ZWQgKi8KKyt9OworKworK3N0cnVjdCBzbmRfdGltZXJfaW5mbyB7CisrCXVuc2lnbmVkIGludCBmbGFnczsJCS8qIHRpbWVyIGZsYWdzIC0gU05EUlZfVElNRVJfRkxHXyogKi8KKysJaW50IGNhcmQ7CQkJLyogY2FyZCBudW1iZXIgKi8KKysJdW5zaWduZWQgY2hhciBpZFs2NF07CQkvKiB0aW1lciBpZGVudGlmaWNhdG9yICovCisrCXVuc2lnbmVkIGNoYXIgbmFtZVs4MF07CQkvKiB0aW1lciBuYW1lICovCisrCXVuc2lnbmVkIGxvbmcgcmVzZXJ2ZWQwOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAqLworKwl1bnNpZ25lZCBsb25nIHJlc29sdXRpb247CS8qIGF2ZXJhZ2UgcGVyaW9kIHJlc29sdXRpb24gaW4gbnMgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CS8qIHJlc2VydmVkICovCisrfTsKKysKKysjZGVmaW5lIFNORFJWX1RJTUVSX1BTRkxHX0FVVE8JCSgxPDwwKQkvKiBhdXRvIHN0YXJ0LCBvdGhlcndpc2Ugb25lLXNob3QgKi8KKysjZGVmaW5lIFNORFJWX1RJTUVSX1BTRkxHX0VYQ0xVU0lWRQkoMTw8MSkJLyogZXhjbHVzaXZlIHVzZSwgcHJlY2lzZSBzdGFydC9zdG9wL3BhdXNlL2NvbnRpbnVlICovCisrI2RlZmluZSBTTkRSVl9USU1FUl9QU0ZMR19FQVJMWV9FVkVOVAkoMTw8MikJLyogd3JpdGUgZWFybHkgZXZlbnQgdG8gdGhlIHBvbGwgcXVldWUgKi8KKysKKytzdHJ1Y3Qgc25kX3RpbWVyX3BhcmFtcyB7CisrCXVuc2lnbmVkIGludCBmbGFnczsJCS8qIGZsYWdzIC0gU05EUlZfVElNRVJfUFNGTEdfKiAqLworKwl1bnNpZ25lZCBpbnQgdGlja3M7CQkvKiByZXF1ZXN0ZWQgcmVzb2x1dGlvbiBpbiB0aWNrcyAqLworKwl1bnNpZ25lZCBpbnQgcXVldWVfc2l6ZTsJLyogdG90YWwgc2l6ZSBvZiBxdWV1ZSAoMzItMTAyNCkgKi8KKysJdW5zaWduZWQgaW50IHJlc2VydmVkMDsJCS8qIHJlc2VydmVkLCB3YXM6IGZhaWx1cmUgbG9jYXRpb25zICovCisrCXVuc2lnbmVkIGludCBmaWx0ZXI7CQkvKiBldmVudCBmaWx0ZXIgKGJpdG1hc2sgb2YgU05EUlZfVElNRVJfRVZFTlRfKikgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFs2MF07CS8qIHJlc2VydmVkICovCisrfTsKKysKKytzdHJ1Y3Qgc25kX3RpbWVyX3N0YXR1cyB7CisrCXN0cnVjdCB0aW1lc3BlYyB0c3RhbXA7CQkvKiBUaW1lc3RhbXAgLSBsYXN0IHVwZGF0ZSAqLworKwl1bnNpZ25lZCBpbnQgcmVzb2x1dGlvbjsJLyogY3VycmVudCBwZXJpb2QgcmVzb2x1dGlvbiBpbiBucyAqLworKwl1bnNpZ25lZCBpbnQgbG9zdDsJCS8qIGNvdW50ZXIgb2YgbWFzdGVyIHRpY2sgbG9zdCAqLworKwl1bnNpZ25lZCBpbnQgb3ZlcnJ1bjsJCS8qIGNvdW50IG9mIHJlYWQgcXVldWUgb3ZlcnJ1bnMgKi8KKysJdW5zaWduZWQgaW50IHF1ZXVlOwkJLyogdXNlZCBxdWV1ZSBzaXplICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiByZXNlcnZlZCAqLworK307CisrCisrI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9QVkVSU0lPTglfSU9SKCdUJywgMHgwMCwgaW50KQorKyNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfTkVYVF9ERVZJQ0UJX0lPV1IoJ1QnLCAweDAxLCBzdHJ1Y3Qgc25kX3RpbWVyX2lkKQorKyNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfVFJFQUQJCV9JT1coJ1QnLCAweDAyLCBpbnQpCisrI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9HSU5GTwkJX0lPV1IoJ1QnLCAweDAzLCBzdHJ1Y3Qgc25kX3RpbWVyX2dpbmZvKQorKyNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfR1BBUkFNUwlfSU9XKCdUJywgMHgwNCwgc3RydWN0IHNuZF90aW1lcl9ncGFyYW1zKQorKyNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfR1NUQVRVUwlfSU9XUignVCcsIDB4MDUsIHN0cnVjdCBzbmRfdGltZXJfZ3N0YXR1cykKKysjZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1NFTEVDVAlfSU9XKCdUJywgMHgxMCwgc3RydWN0IHNuZF90aW1lcl9zZWxlY3QpCisrI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9JTkZPCQlfSU9SKCdUJywgMHgxMSwgc3RydWN0IHNuZF90aW1lcl9pbmZvKQorKyNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfUEFSQU1TCV9JT1coJ1QnLCAweDEyLCBzdHJ1Y3Qgc25kX3RpbWVyX3BhcmFtcykKKysjZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1NUQVRVUwlfSU9SKCdUJywgMHgxNCwgc3RydWN0IHNuZF90aW1lcl9zdGF0dXMpCisrLyogVGhlIGZvbGxvd2luZyBmb3VyIGlvY3RscyBhcmUgY2hhbmdlZCBzaW5jZSAxLjAuOSBkdWUgdG8gY29uZmxpY3Rpb24gKi8KKysjZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1NUQVJUCQlfSU8oJ1QnLCAweGEwKQorKyNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfU1RPUAkJX0lPKCdUJywgMHhhMSkKKysjZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX0NPTlRJTlVFCV9JTygnVCcsIDB4YTIpCisrI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9QQVVTRQkJX0lPKCdUJywgMHhhMykKKysKKytzdHJ1Y3Qgc25kX3RpbWVyX3JlYWQgeworKwl1bnNpZ25lZCBpbnQgcmVzb2x1dGlvbjsKKysJdW5zaWduZWQgaW50IHRpY2tzOworK307CisrCisrZW51bSB7CisrCVNORFJWX1RJTUVSX0VWRU5UX1JFU09MVVRJT04gPSAwLAkvKiB2YWwgPSByZXNvbHV0aW9uIGluIG5zICovCisrCVNORFJWX1RJTUVSX0VWRU5UX1RJQ0ssCQkJLyogdmFsID0gdGlja3MgKi8KKysJU05EUlZfVElNRVJfRVZFTlRfU1RBUlQsCQkvKiB2YWwgPSByZXNvbHV0aW9uIGluIG5zICovCisrCVNORFJWX1RJTUVSX0VWRU5UX1NUT1AsCQkJLyogdmFsID0gMCAqLworKwlTTkRSVl9USU1FUl9FVkVOVF9DT05USU5VRSwJCS8qIHZhbCA9IHJlc29sdXRpb24gaW4gbnMgKi8KKysJU05EUlZfVElNRVJfRVZFTlRfUEFVU0UsCQkvKiB2YWwgPSAwICovCisrCVNORFJWX1RJTUVSX0VWRU5UX0VBUkxZLAkJLyogdmFsID0gMCwgZWFybHkgZXZlbnQgKi8KKysJU05EUlZfVElNRVJfRVZFTlRfU1VTUEVORCwJCS8qIHZhbCA9IDAgKi8KKysJU05EUlZfVElNRVJfRVZFTlRfUkVTVU1FLAkJLyogdmFsID0gcmVzb2x1dGlvbiBpbiBucyAqLworKwkvKiBtYXN0ZXIgdGltZXIgZXZlbnRzIGZvciBzbGF2ZSB0aW1lciBpbnN0YW5jZXMgKi8KKysJU05EUlZfVElNRVJfRVZFTlRfTVNUQVJUID0gU05EUlZfVElNRVJfRVZFTlRfU1RBUlQgKyAxMCwKKysJU05EUlZfVElNRVJfRVZFTlRfTVNUT1AgPSBTTkRSVl9USU1FUl9FVkVOVF9TVE9QICsgMTAsCisrCVNORFJWX1RJTUVSX0VWRU5UX01DT05USU5VRSA9IFNORFJWX1RJTUVSX0VWRU5UX0NPTlRJTlVFICsgMTAsCisrCVNORFJWX1RJTUVSX0VWRU5UX01QQVVTRSA9IFNORFJWX1RJTUVSX0VWRU5UX1BBVVNFICsgMTAsCisrCVNORFJWX1RJTUVSX0VWRU5UX01TVVNQRU5EID0gU05EUlZfVElNRVJfRVZFTlRfU1VTUEVORCArIDEwLAorKwlTTkRSVl9USU1FUl9FVkVOVF9NUkVTVU1FID0gU05EUlZfVElNRVJfRVZFTlRfUkVTVU1FICsgMTAsCisrfTsKKysKKytzdHJ1Y3Qgc25kX3RpbWVyX3RyZWFkIHsKKysJaW50IGV2ZW50OworKwlzdHJ1Y3QgdGltZXNwZWMgdHN0YW1wOworKwl1bnNpZ25lZCBpbnQgdmFsOworK307CisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgICAgICBTZWN0aW9uIGZvciBkcml2ZXIgY29udHJvbCBpbnRlcmZhY2UgLSAvZGV2L3NuZC9jb250cm9sPyAgICAgICAgICAqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysjZGVmaW5lIFNORFJWX0NUTF9WRVJTSU9OCQlTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDIsIDAsIDcpCisrCisrc3RydWN0IHNuZF9jdGxfY2FyZF9pbmZvIHsKKysJaW50IGNhcmQ7CQkJLyogY2FyZCBudW1iZXIgKi8KKysJaW50IHBhZDsJCQkvKiByZXNlcnZlZCBmb3IgZnV0dXJlICh3YXMgdHlwZSkgKi8KKysJdW5zaWduZWQgY2hhciBpZFsxNl07CQkvKiBJRCBvZiBjYXJkICh1c2VyIHNlbGVjdGFibGUpICovCisrCXVuc2lnbmVkIGNoYXIgZHJpdmVyWzE2XTsJLyogRHJpdmVyIG5hbWUgKi8KKysJdW5zaWduZWQgY2hhciBuYW1lWzMyXTsJCS8qIFNob3J0IG5hbWUgb2Ygc291bmRjYXJkICovCisrCXVuc2lnbmVkIGNoYXIgbG9uZ25hbWVbODBdOwkvKiBuYW1lICsgaW5mbyB0ZXh0IGFib3V0IHNvdW5kY2FyZCAqLworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkX1sxNl07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgKHdhcyBJRCBvZiBtaXhlcikgKi8KKysJdW5zaWduZWQgY2hhciBtaXhlcm5hbWVbODBdOwkvKiB2aXN1YWwgbWl4ZXIgaWRlbnRpZmljYXRpb24gKi8KKysJdW5zaWduZWQgY2hhciBjb21wb25lbnRzWzEyOF07CS8qIGNhcmQgY29tcG9uZW50cyAvIGZpbmUgaWRlbnRpZmljYXRpb24sIGRlbGltaXRlZCB3aXRoIG9uZSBzcGFjZSAoQUM5NyBldGMuLikgKi8KKyt9OworKworK3R5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfY3RsX2VsZW1fdHlwZV90OworKyNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9OT05FCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1fdHlwZV90KSAwKSAvKiBpbnZhbGlkICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0JPT0xFQU4JKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV90eXBlX3QpIDEpIC8qIGJvb2xlYW4gdHlwZSAqLworKyNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9JTlRFR0VSCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1fdHlwZV90KSAyKSAvKiBpbnRlZ2VyIHR5cGUgKi8KKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX1RZUEVfRU5VTUVSQVRFRAkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX3R5cGVfdCkgMykgLyogZW51bWVyYXRlZCB0eXBlICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0JZVEVTCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1fdHlwZV90KSA0KSAvKiBieXRlIGFycmF5ICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0lFQzk1OAkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX3R5cGVfdCkgNSkgLyogSUVDOTU4IChTL1BESUYpIHNldHVwICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0lOVEVHRVI2NAkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX3R5cGVfdCkgNikgLyogNjQtYml0IGludGVnZXIgdHlwZSAqLworKyNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9MQVNUCVNORFJWX0NUTF9FTEVNX1RZUEVfSU5URUdFUjY0CisrCisrdHlwZWRlZiBpbnQgX19iaXR3aXNlIHNuZF9jdGxfZWxlbV9pZmFjZV90OworKyNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfQ0FSRAkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDApIC8qIGdsb2JhbCBjb250cm9sICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9JRkFDRV9IV0RFUAkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDEpIC8qIGhhcmR3YXJlIGRlcGVuZGVudCBkZXZpY2UgKi8KKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX01JWEVSCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1faWZhY2VfdCkgMikgLyogdmlydHVhbCBtaXhlciBkZXZpY2UgKi8KKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX1BDTQkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDMpIC8qIFBDTSBkZXZpY2UgKi8KKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX1JBV01JREkJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV9pZmFjZV90KSA0KSAvKiBSYXdNaWRpIGRldmljZSAqLworKyNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfVElNRVIJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV9pZmFjZV90KSA1KSAvKiB0aW1lciBkZXZpY2UgKi8KKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX1NFUVVFTkNFUgkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDYpIC8qIHNlcXVlbmNlciBjbGllbnQgKi8KKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX0xBU1QJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfU0VRVUVOQ0VSCisrCisrI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfUkVBRAkJKDE8PDApCisrI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfV1JJVEUJCSgxPDwxKQorKyNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1JFQURXUklURQkJKFNORFJWX0NUTF9FTEVNX0FDQ0VTU19SRUFEfFNORFJWX0NUTF9FTEVNX0FDQ0VTU19XUklURSkKKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19WT0xBVElMRQkJKDE8PDIpCS8qIGNvbnRyb2wgdmFsdWUgbWF5IGJlIGNoYW5nZWQgd2l0aG91dCBhIG5vdGlmaWNhdGlvbiAqLworKyNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RJTUVTVEFNUAkJKDE8PDMpCS8qIHdoZW4gd2FzIGNvbnRyb2wgY2hhbmdlZCAqLworKyNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RMVl9SRUFECQkoMTw8NCkJLyogVExWIHJlYWQgaXMgcG9zc2libGUgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfV1JJVEUJCSgxPDw1KQkvKiBUTFYgd3JpdGUgaXMgcG9zc2libGUgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfUkVBRFdSSVRFCShTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVExWX1JFQUR8U05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RMVl9XUklURSkKKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfQ09NTUFORAkoMTw8NikJLyogVExWIGNvbW1hbmQgaXMgcG9zc2libGUgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19JTkFDVElWRQkJKDE8PDgpCS8qIGNvbnRyb2wgZG9lcyBhY3R1YWxseSBub3RoaW5nLCBidXQgbWF5IGJlIHVwZGF0ZWQgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19MT0NLCQkoMTw8OSkJLyogd3JpdGUgbG9jayAqLworKyNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX09XTkVSCQkoMTw8MTApCS8qIHdyaXRlIGxvY2sgb3duZXIgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfQ0FMTEJBQ0sJKDE8PDI4KQkvKiBrZXJuZWwgdXNlIGEgVExWIGNhbGxiYWNrICovCisrI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVVNFUgkJKDE8PDI5KSAvKiB1c2VyIHNwYWNlIGVsZW1lbnQgKi8KKysvKiBiaXRzIDMwIGFuZCAzMSBhcmUgb2Jzb2xldGVkIChmb3IgaW5kaXJlY3QgYWNjZXNzKSAqLworKworKy8qIGZvciBmdXJ0aGVyIGRldGFpbHMgc2VlIHRoZSBBQ1BJIGFuZCBQQ0kgcG93ZXIgbWFuYWdlbWVudCBzcGVjaWZpY2F0aW9uICovCisrI2RlZmluZSBTTkRSVl9DVExfUE9XRVJfRDAJCTB4MDAwMAkvKiBmdWxsIE9uICovCisrI2RlZmluZSBTTkRSVl9DVExfUE9XRVJfRDEJCTB4MDEwMAkvKiBwYXJ0aWFsIE9uICovCisrI2RlZmluZSBTTkRSVl9DVExfUE9XRVJfRDIJCTB4MDIwMAkvKiBwYXJ0aWFsIE9uICovCisrI2RlZmluZSBTTkRSVl9DVExfUE9XRVJfRDMJCTB4MDMwMAkvKiBPZmYgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9QT1dFUl9EM2hvdAkJKFNORFJWX0NUTF9QT1dFUl9EM3wweDAwMDApCS8qIE9mZiwgd2l0aCBwb3dlciAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1BPV0VSX0QzY29sZAkJKFNORFJWX0NUTF9QT1dFUl9EM3wweDAwMDEpCS8qIE9mZiwgd2l0aG91dCBwb3dlciAqLworKworKyNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU4JNDQKKysKKytzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkIHsKKysJdW5zaWduZWQgaW50IG51bWlkOwkJLyogbnVtZXJpYyBpZGVudGlmaWVyLCB6ZXJvID0gaW52YWxpZCAqLworKwlzbmRfY3RsX2VsZW1faWZhY2VfdCBpZmFjZTsJLyogaW50ZXJmYWNlIGlkZW50aWZpZXIgKi8KKysJdW5zaWduZWQgaW50IGRldmljZTsJCS8qIGRldmljZS9jbGllbnQgbnVtYmVyICovCisrCXVuc2lnbmVkIGludCBzdWJkZXZpY2U7CQkvKiBzdWJkZXZpY2UgKHN1YnN0cmVhbSkgbnVtYmVyICovCisrCXVuc2lnbmVkIGNoYXIgbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CQkvKiBBU0NJSSBuYW1lIG9mIGl0ZW0gKi8KKysJdW5zaWduZWQgaW50IGluZGV4OwkJLyogaW5kZXggb2YgaXRlbSAqLworK307CisrCisrc3RydWN0IHNuZF9jdGxfZWxlbV9saXN0IHsKKysJdW5zaWduZWQgaW50IG9mZnNldDsJCS8qIFc6IGZpcnN0IGVsZW1lbnQgSUQgdG8gZ2V0ICovCisrCXVuc2lnbmVkIGludCBzcGFjZTsJCS8qIFc6IGNvdW50IG9mIGVsZW1lbnQgSURzIHRvIGdldCAqLworKwl1bnNpZ25lZCBpbnQgdXNlZDsJCS8qIFI6IGNvdW50IG9mIGVsZW1lbnQgSURzIHNldCAqLworKwl1bnNpZ25lZCBpbnQgY291bnQ7CQkvKiBSOiBjb3VudCBvZiBhbGwgZWxlbWVudHMgKi8KKysJc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBfX3VzZXIgKnBpZHM7IC8qIFI6IElEcyAqLworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzUwXTsKKyt9OworKworK3N0cnVjdCBzbmRfY3RsX2VsZW1faW5mbyB7CisrCXN0cnVjdCBzbmRfY3RsX2VsZW1faWQgaWQ7CS8qIFc6IGVsZW1lbnQgSUQgKi8KKysJc25kX2N0bF9lbGVtX3R5cGVfdCB0eXBlOwkvKiBSOiB2YWx1ZSB0eXBlIC0gU05EUlZfQ1RMX0VMRU1fVFlQRV8qICovCisrCXVuc2lnbmVkIGludCBhY2Nlc3M7CQkvKiBSOiB2YWx1ZSBhY2Nlc3MgKGJpdG1hc2spIC0gU05EUlZfQ1RMX0VMRU1fQUNDRVNTXyogKi8KKysJdW5zaWduZWQgaW50IGNvdW50OwkJLyogY291bnQgb2YgdmFsdWVzICovCisrCV9fa2VybmVsX3BpZF90IG93bmVyOwkJLyogb3duZXIncyBQSUQgb2YgdGhpcyBjb250cm9sICovCisrCXVuaW9uIHsKKysJCXN0cnVjdCB7CisrCQkJbG9uZyBtaW47CQkvKiBSOiBtaW5pbXVtIHZhbHVlICovCisrCQkJbG9uZyBtYXg7CQkvKiBSOiBtYXhpbXVtIHZhbHVlICovCisrCQkJbG9uZyBzdGVwOwkJLyogUjogc3RlcCAoMCB2YXJpYWJsZSkgKi8KKysJCX0gaW50ZWdlcjsKKysJCXN0cnVjdCB7CisrCQkJbG9uZyBsb25nIG1pbjsJCS8qIFI6IG1pbmltdW0gdmFsdWUgKi8KKysJCQlsb25nIGxvbmcgbWF4OwkJLyogUjogbWF4aW11bSB2YWx1ZSAqLworKwkJCWxvbmcgbG9uZyBzdGVwOwkJLyogUjogc3RlcCAoMCB2YXJpYWJsZSkgKi8KKysJCX0gaW50ZWdlcjY0OworKwkJc3RydWN0IHsKKysJCQl1bnNpZ25lZCBpbnQgaXRlbXM7CS8qIFI6IG51bWJlciBvZiBpdGVtcyAqLworKwkJCXVuc2lnbmVkIGludCBpdGVtOwkvKiBXOiBpdGVtIG51bWJlciAqLworKwkJCWNoYXIgbmFtZVs2NF07CQkvKiBSOiB2YWx1ZSBuYW1lICovCisrCQkJX191NjQgbmFtZXNfcHRyOwkvKiBXOiBuYW1lcyBsaXN0IChFTEVNX0FERCBvbmx5KSAqLworKwkJCXVuc2lnbmVkIGludCBuYW1lc19sZW5ndGg7CisrCQl9IGVudW1lcmF0ZWQ7CisrCQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzEyOF07CisrCX0gdmFsdWU7CisrCXVuaW9uIHsKKysJCXVuc2lnbmVkIHNob3J0IGRbNF07CQkvKiBkaW1lbnNpb25zICovCisrCQl1bnNpZ25lZCBzaG9ydCAqZF9wdHI7CQkvKiBpbmRpcmVjdCAtIG9ic29sZXRlZCAqLworKwl9IGRpbWVuOworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0LTQqc2l6ZW9mKHVuc2lnbmVkIHNob3J0KV07CisrfTsKKysKKytzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlIHsKKysJc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBpZDsJLyogVzogZWxlbWVudCBJRCAqLworKwl1bnNpZ25lZCBpbnQgaW5kaXJlY3Q6IDE7CS8qIFc6IGluZGlyZWN0IGFjY2VzcyAtIG9ic29sZXRlZCAqLworKwl1bmlvbiB7CisrCQl1bmlvbiB7CisrCQkJbG9uZyB2YWx1ZVsxMjhdOworKwkJCWxvbmcgKnZhbHVlX3B0cjsJLyogb2Jzb2xldGVkICovCisrCQl9IGludGVnZXI7CisrCQl1bmlvbiB7CisrCQkJbG9uZyBsb25nIHZhbHVlWzY0XTsKKysJCQlsb25nIGxvbmcgKnZhbHVlX3B0cjsJLyogb2Jzb2xldGVkICovCisrCQl9IGludGVnZXI2NDsKKysJCXVuaW9uIHsKKysJCQl1bnNpZ25lZCBpbnQgaXRlbVsxMjhdOworKwkJCXVuc2lnbmVkIGludCAqaXRlbV9wdHI7CS8qIG9ic29sZXRlZCAqLworKwkJfSBlbnVtZXJhdGVkOworKwkJdW5pb24geworKwkJCXVuc2lnbmVkIGNoYXIgZGF0YVs1MTJdOworKwkJCXVuc2lnbmVkIGNoYXIgKmRhdGFfcHRyOwkvKiBvYnNvbGV0ZWQgKi8KKysJCX0gYnl0ZXM7CisrCQlzdHJ1Y3Qgc25kX2Flc19pZWM5NTggaWVjOTU4OworKwl9IHZhbHVlOwkJLyogUk8gKi8KKysJc3RydWN0IHRpbWVzcGVjIHRzdGFtcDsKKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFsxMjgtc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYyldOworK307CisrCisrc3RydWN0IHNuZF9jdGxfdGx2IHsKKysJdW5zaWduZWQgaW50IG51bWlkOwkvKiBjb250cm9sIGVsZW1lbnQgbnVtZXJpYyBpZGVudGlmaWNhdGlvbiAqLworKwl1bnNpZ25lZCBpbnQgbGVuZ3RoOwkvKiBpbiBieXRlcyBhbGlnbmVkIHRvIDQgKi8KKysJdW5zaWduZWQgaW50IHRsdlswXTsJLyogZmlyc3QgVExWICovCisrfTsKKysKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9QVkVSU0lPTglfSU9SKCdVJywgMHgwMCwgaW50KQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0NBUkRfSU5GTwlfSU9SKCdVJywgMHgwMSwgc3RydWN0IHNuZF9jdGxfY2FyZF9pbmZvKQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0VMRU1fTElTVAlfSU9XUignVScsIDB4MTAsIHN0cnVjdCBzbmRfY3RsX2VsZW1fbGlzdCkKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX0lORk8JX0lPV1IoJ1UnLCAweDExLCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2luZm8pCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9SRUFECV9JT1dSKCdVJywgMHgxMiwgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSkKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX1dSSVRFCV9JT1dSKCdVJywgMHgxMywgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSkKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX0xPQ0sJX0lPVygnVScsIDB4MTQsIHN0cnVjdCBzbmRfY3RsX2VsZW1faWQpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9VTkxPQ0sJX0lPVygnVScsIDB4MTUsIHN0cnVjdCBzbmRfY3RsX2VsZW1faWQpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfU1VCU0NSSUJFX0VWRU5UUyBfSU9XUignVScsIDB4MTYsIGludCkKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX0FERAlfSU9XUignVScsIDB4MTcsIHN0cnVjdCBzbmRfY3RsX2VsZW1faW5mbykKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX1JFUExBQ0UJX0lPV1IoJ1UnLCAweDE4LCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2luZm8pCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9SRU1PVkUJX0lPV1IoJ1UnLCAweDE5LCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkKQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1RMVl9SRUFECV9JT1dSKCdVJywgMHgxYSwgc3RydWN0IHNuZF9jdGxfdGx2KQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1RMVl9XUklURQlfSU9XUignVScsIDB4MWIsIHN0cnVjdCBzbmRfY3RsX3RsdikKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9UTFZfQ09NTUFORAlfSU9XUignVScsIDB4MWMsIHN0cnVjdCBzbmRfY3RsX3RsdikKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9IV0RFUF9ORVhUX0RFVklDRSBfSU9XUignVScsIDB4MjAsIGludCkKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9IV0RFUF9JTkZPCV9JT1IoJ1UnLCAweDIxLCBzdHJ1Y3Qgc25kX2h3ZGVwX2luZm8pCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUENNX05FWFRfREVWSUNFCV9JT1IoJ1UnLCAweDMwLCBpbnQpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUENNX0lORk8JX0lPV1IoJ1UnLCAweDMxLCBzdHJ1Y3Qgc25kX3BjbV9pbmZvKQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1BDTV9QUkVGRVJfU1VCREVWSUNFIF9JT1coJ1UnLCAweDMyLCBpbnQpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUkFXTUlESV9ORVhUX0RFVklDRSBfSU9XUignVScsIDB4NDAsIGludCkKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9SQVdNSURJX0lORk8JX0lPV1IoJ1UnLCAweDQxLCBzdHJ1Y3Qgc25kX3Jhd21pZGlfaW5mbykKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9SQVdNSURJX1BSRUZFUl9TVUJERVZJQ0UgX0lPVygnVScsIDB4NDIsIGludCkKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9QT1dFUgkJX0lPV1IoJ1UnLCAweGQwLCBpbnQpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUE9XRVJfU1RBVEUJX0lPUignVScsIDB4ZDEsIGludCkKKysKKysvKgorKyAqICBSZWFkIGludGVyZmFjZS4KKysgKi8KKysKKytlbnVtIHNuZHJ2X2N0bF9ldmVudF90eXBlIHsKKysJU05EUlZfQ1RMX0VWRU5UX0VMRU0gPSAwLAorKwlTTkRSVl9DVExfRVZFTlRfTEFTVCA9IFNORFJWX0NUTF9FVkVOVF9FTEVNLAorK307CisrCisrI2RlZmluZSBTTkRSVl9DVExfRVZFTlRfTUFTS19WQUxVRQkoMTw8MCkJLyogZWxlbWVudCB2YWx1ZSB3YXMgY2hhbmdlZCAqLworKyNkZWZpbmUgU05EUlZfQ1RMX0VWRU5UX01BU0tfSU5GTwkoMTw8MSkJLyogZWxlbWVudCBpbmZvIHdhcyBjaGFuZ2VkICovCisrI2RlZmluZSBTTkRSVl9DVExfRVZFTlRfTUFTS19BREQJKDE8PDIpCS8qIGVsZW1lbnQgd2FzIGFkZGVkICovCisrI2RlZmluZSBTTkRSVl9DVExfRVZFTlRfTUFTS19UTFYJKDE8PDMpCS8qIGVsZW1lbnQgVExWIHRyZWUgd2FzIGNoYW5nZWQgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9FVkVOVF9NQVNLX1JFTU9WRQkofjBVKQkvKiBlbGVtZW50IHdhcyByZW1vdmVkICovCisrCisrc3RydWN0IHNuZF9jdGxfZXZlbnQgeworKwlpbnQgdHlwZTsJLyogZXZlbnQgdHlwZSAtIFNORFJWX0NUTF9FVkVOVF8qICovCisrCXVuaW9uIHsKKysJCXN0cnVjdCB7CisrCQkJdW5zaWduZWQgaW50IG1hc2s7CisrCQkJc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBpZDsKKysJCX0gZWxlbTsKKysJCXVuc2lnbmVkIGNoYXIgZGF0YThbNjBdOworKwl9IGRhdGE7CisrfTsKKysKKysvKgorKyAqICBDb250cm9sIG5hbWVzCisrICovCisrCisrI2RlZmluZSBTTkRSVl9DVExfTkFNRV9OT05FCQkJCSIiCisrI2RlZmluZSBTTkRSVl9DVExfTkFNRV9QTEFZQkFDSwkJCQkiUGxheWJhY2sgIgorKyNkZWZpbmUgU05EUlZfQ1RMX05BTUVfQ0FQVFVSRQkJCQkiQ2FwdHVyZSAiCisrCisrI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfTk9ORQkJCSIiCisrI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfU1dJVENICQkJIlN3aXRjaCIKKysjZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OF9WT0xVTUUJCQkiVm9sdW1lIgorKyNkZWZpbmUgU05EUlZfQ1RMX05BTUVfSUVDOTU4X0RFRkFVTFQJCQkiRGVmYXVsdCIKKysjZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OF9NQVNLCQkJIk1hc2siCisrI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfQ09OX01BU0sJCQkiQ29uIE1hc2siCisrI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfUFJPX01BU0sJCQkiUHJvIE1hc2siCisrI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfUENNX1NUUkVBTQkJIlBDTSBTdHJlYW0iCisrI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NTgoZXhwbCxkaXJlY3Rpb24sd2hhdCkJIklFQzk1OCAiIGV4cGwgU05EUlZfQ1RMX05BTUVfIyNkaXJlY3Rpb24gU05EUlZfQ1RMX05BTUVfSUVDOTU4XyMjd2hhdAorKworKyNlbmRpZiAvKiBfVUFQSV9fU09VTkRfQVNPVU5EX0ggKi8KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvYXNvdW5kX2ZtLmggYi9pbmNsdWRlL3NvdW5kL3VhcGkvYXNvdW5kX2ZtLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uODQ3MWY0MDQKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9hc291bmRfZm0uaAorQEAgLTAsMCArMSwxMzUgQEAKKysvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKysjaWZuZGVmIF9fU09VTkRfQVNPVU5EX0ZNX0gKKysjZGVmaW5lIF9fU09VTkRfQVNPVU5EX0ZNX0gKKysKKysvKgorKyAqICBBZHZhbmNlZCBMaW51eCBTb3VuZCBBcmNoaXRlY3R1cmUgLSBBTFNBCisrICoKKysgKiAgSW50ZXJmYWNlIGZpbGUgYmV0d2VlbiBBTFNBIGRyaXZlciAmIHVzZXIgc3BhY2UKKysgKiAgQ29weXJpZ2h0IChjKSAxOTk0LTk4IGJ5IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+LAorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgNEZyb250IFRlY2hub2xvZ2llcworKyAqCisrICogIERpcmVjdCBGTSBjb250cm9sCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgVVNBCisrICoKKysgKi8KKysKKysjZGVmaW5lIFNORFJWX0RNX0ZNX01PREVfT1BMMgkweDAwCisrI2RlZmluZSBTTkRSVl9ETV9GTV9NT0RFX09QTDMJMHgwMQorKworK3N0cnVjdCBzbmRfZG1fZm1faW5mbyB7CisrCXVuc2lnbmVkIGNoYXIgZm1fbW9kZTsJCS8qIE9QTCBtb2RlLCBzZWUgU05EUlZfRE1fRk1fTU9ERV9YWFggKi8KKysJdW5zaWduZWQgY2hhciByaHl0aG07CQkvKiBwZXJjdXNzaW9uIG1vZGUgZmxhZyAqLworK307CisrCisrLyoKKysgKiAgRGF0YSBzdHJ1Y3R1cmUgY29tcG9zaW5nIGFuIEZNICJub3RlIiBvciBzb3VuZCBldmVudC4KKysgKi8KKysKKytzdHJ1Y3Qgc25kX2RtX2ZtX3ZvaWNlIHsKKysJdW5zaWduZWQgY2hhciBvcDsJCS8qIG9wZXJhdG9yIGNlbGwgKDAgb3IgMSkgKi8KKysJdW5zaWduZWQgY2hhciB2b2ljZTsJCS8qIEZNIHZvaWNlICgwIHRvIDE3KSAqLworKworKwl1bnNpZ25lZCBjaGFyIGFtOwkJLyogYW1wbGl0dWRlIG1vZHVsYXRpb24gKi8KKysJdW5zaWduZWQgY2hhciB2aWJyYXRvOwkJLyogdmlicmF0byBlZmZlY3QgKi8KKysJdW5zaWduZWQgY2hhciBkb19zdXN0YWluOwkvKiBzdXN0YWluIHBoYXNlICovCisrCXVuc2lnbmVkIGNoYXIga2JkX3NjYWxlOwkvKiBrZXlib2FyZCBzY2FsaW5nICovCisrCXVuc2lnbmVkIGNoYXIgaGFybW9uaWM7CQkvKiA0IGJpdHM6IGhhcm1vbmljIGFuZCBtdWx0aXBsaWVyICovCisrCXVuc2lnbmVkIGNoYXIgc2NhbGVfbGV2ZWw7CS8qIDIgYml0czogZGVjcmVhc2Ugb3V0cHV0IGZyZXEgcmlzZXMgKi8KKysJdW5zaWduZWQgY2hhciB2b2x1bWU7CQkvKiA2IGJpdHM6IHZvbHVtZSAqLworKworKwl1bnNpZ25lZCBjaGFyIGF0dGFjazsJCS8qIDQgYml0czogYXR0YWNrIHJhdGUgKi8KKysJdW5zaWduZWQgY2hhciBkZWNheTsJCS8qIDQgYml0czogZGVjYXkgcmF0ZSAqLworKwl1bnNpZ25lZCBjaGFyIHN1c3RhaW47CQkvKiA0IGJpdHM6IHN1c3RhaW4gbGV2ZWwgKi8KKysJdW5zaWduZWQgY2hhciByZWxlYXNlOwkJLyogNCBiaXRzOiByZWxlYXNlIHJhdGUgKi8KKysKKysJdW5zaWduZWQgY2hhciBmZWVkYmFjazsJCS8qIDMgYml0czogZmVlZGJhY2sgZm9yIG9wMCAqLworKwl1bnNpZ25lZCBjaGFyIGNvbm5lY3Rpb247CS8qIDAgZm9yIHNlcmlhbCwgMSBmb3IgcGFyYWxsZWwgKi8KKysJdW5zaWduZWQgY2hhciBsZWZ0OwkJLyogc3RlcmVvIGxlZnQgKi8KKysJdW5zaWduZWQgY2hhciByaWdodDsJCS8qIHN0ZXJlbyByaWdodCAqLworKwl1bnNpZ25lZCBjaGFyIHdhdmVmb3JtOwkJLyogMyBiaXRzOiB3YXZlZm9ybSBzaGFwZSAqLworK307CisrCisrLyoKKysgKiAgVGhpcyBkZXNjcmliZXMgYW4gRk0gbm90ZSBieSBpdHMgdm9pY2UsIG9jdGF2ZSwgZnJlcXVlbmN5IG51bWJlciAoMTBiaXQpCisrICogIGFuZCBrZXkgb24vb2ZmLgorKyAqLworKworK3N0cnVjdCBzbmRfZG1fZm1fbm90ZSB7CisrCXVuc2lnbmVkIGNoYXIgdm9pY2U7CS8qIDAtMTcgdm9pY2UgY2hhbm5lbCAqLworKwl1bnNpZ25lZCBjaGFyIG9jdGF2ZTsJLyogMyBiaXRzOiB3aGF0IG9jdGF2ZSB0byBwbGF5ICovCisrCXVuc2lnbmVkIGludCBmbnVtOwkvKiAxMCBiaXRzOiBmcmVxdWVuY3kgbnVtYmVyICovCisrCXVuc2lnbmVkIGNoYXIga2V5X29uOwkvKiBzZXQgZm9yIGFjdGl2ZSwgY2xlYXIgZm9yIHNpbGVudCAqLworK307CisrCisrLyoKKysgKiAgRk0gcGFyYW1ldGVycyB0aGF0IGFwcGx5IGdsb2JhbGx5IHRvIGFsbCB2b2ljZXMsIGFuZCB0aHVzIGFyZSBub3QgIm5vdGVzIgorKyAqLworKworK3N0cnVjdCBzbmRfZG1fZm1fcGFyYW1zIHsKKysJdW5zaWduZWQgY2hhciBhbV9kZXB0aDsJCS8qIGFtcGxpdHVkZSBtb2R1bGF0aW9uIGRlcHRoICgxPWhpKSAqLworKwl1bnNpZ25lZCBjaGFyIHZpYl9kZXB0aDsJLyogdmlicmF0byBkZXB0aCAoMT1oaSkgKi8KKysJdW5zaWduZWQgY2hhciBrYmRfc3BsaXQ7CS8qIGtleWJvYXJkIHNwbGl0ICovCisrCXVuc2lnbmVkIGNoYXIgcmh5dGhtOwkJLyogcGVyY3Vzc2lvbiBtb2RlIHNlbGVjdCAqLworKworKwkvKiBUaGlzIGJsb2NrIGlzIHRoZSBwZXJjdXNzaW9uIGluc3RydW1lbnQgZGF0YSAqLworKwl1bnNpZ25lZCBjaGFyIGJhc3M7CisrCXVuc2lnbmVkIGNoYXIgc25hcmU7CisrCXVuc2lnbmVkIGNoYXIgdG9tdG9tOworKwl1bnNpZ25lZCBjaGFyIGN5bWJhbDsKKysJdW5zaWduZWQgY2hhciBoaWhhdDsKKyt9OworKworKy8qCisrICogIEZNIG1vZGUgaW9jdGwgc2V0dGluZ3MKKysgKi8KKysKKysjZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX0lORk8JCV9JT1IoJ0gnLCAweDIwLCBzdHJ1Y3Qgc25kX2RtX2ZtX2luZm8pCisrI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9SRVNFVAkJX0lPICgnSCcsIDB4MjEpCisrI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9QTEFZX05PVEUJX0lPVygnSCcsIDB4MjIsIHN0cnVjdCBzbmRfZG1fZm1fbm90ZSkKKysjZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX1NFVF9WT0lDRQlfSU9XKCdIJywgMHgyMywgc3RydWN0IHNuZF9kbV9mbV92b2ljZSkKKysjZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX1NFVF9QQVJBTVMJX0lPVygnSCcsIDB4MjQsIHN0cnVjdCBzbmRfZG1fZm1fcGFyYW1zKQorKyNkZWZpbmUgU05EUlZfRE1fRk1fSU9DVExfU0VUX01PREUJX0lPVygnSCcsIDB4MjUsIGludCkKKysvKiBmb3IgT1BMMyBvbmx5ICovCisrI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9TRVRfQ09OTkVDVElPTglfSU9XKCdIJywgMHgyNiwgaW50KQorKy8qIFNCSSBwYXRjaCBtYW5hZ2VtZW50ICovCisrI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9DTEVBUl9QQVRDSEVTCV9JTyAoJ0gnLCAweDQwKQorKworKyNkZWZpbmUgU05EUlZfRE1fRk1fT1NTX0lPQ1RMX1JFU0VUCQkweDIwCisrI2RlZmluZSBTTkRSVl9ETV9GTV9PU1NfSU9DVExfUExBWV9OT1RFCQkweDIxCisrI2RlZmluZSBTTkRSVl9ETV9GTV9PU1NfSU9DVExfU0VUX1ZPSUNFCQkweDIyCisrI2RlZmluZSBTTkRSVl9ETV9GTV9PU1NfSU9DVExfU0VUX1BBUkFNUwkweDIzCisrI2RlZmluZSBTTkRSVl9ETV9GTV9PU1NfSU9DVExfU0VUX01PREUJCTB4MjQKKysjZGVmaW5lIFNORFJWX0RNX0ZNX09TU19JT0NUTF9TRVRfT1BMCQkweDI1CisrCisrLyoKKysgKiBQYXRjaCBSZWNvcmQgLSBmaXhlZCBzaXplIGZvciB3cml0ZQorKyAqLworKworKyNkZWZpbmUgRk1fS0VZX1NCSQkiU0JJXDAzMiIKKysjZGVmaW5lIEZNX0tFWV8yT1AJIjJPUFwwMzIiCisrI2RlZmluZSBGTV9LRVlfNE9QCSI0T1BcMDMyIgorKworK3N0cnVjdCBzYmlfcGF0Y2ggeworKwl1bnNpZ25lZCBjaGFyIHByb2c7CisrCXVuc2lnbmVkIGNoYXIgYmFuazsKKysJY2hhciBrZXlbNF07CisrCWNoYXIgbmFtZVsyNV07CisrCWNoYXIgZXh0ZW5zaW9uWzddOworKwl1bnNpZ25lZCBjaGFyIGRhdGFbMzJdOworK307CisrCisrI2VuZGlmIC8qIF9fU09VTkRfQVNPVU5EX0ZNX0ggKi8KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvZW11MTBrMS5oIGIvaW5jbHVkZS9zb3VuZC91YXBpL2VtdTEwazEuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi5jMTE1MGU0ZAorLS0tIC9kZXYvbnVsbAorKysrIGIvaW5jbHVkZS9zb3VuZC91YXBpL2VtdTEwazEuaAorQEAgLTAsMCArMSwzOTUgQEAKKysvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKysvKgorKyAqICBDb3B5cmlnaHQgKGMpIGJ5IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+LAorKyAqCQkgICAgIENyZWF0aXZlIExhYnMsIEluYy4KKysgKiAgRGVmaW5pdGlvbnMgZm9yIEVNVTEwSzEgKFNCIExpdmUhKSBjaGlwcworKyAqCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgVVNBCisrICoKKysgKi8KKysjaWZuZGVmIF9VQVBJX19TT1VORF9FTVUxMEsxX0gKKysjZGVmaW5lIF9VQVBJX19TT1VORF9FTVUxMEsxX0gKKysKKysvKgorKyAqIC0tLS0gRlg4MDEwIC0tLS0KKysgKi8KKysKKysjZGVmaW5lIEVNVTEwSzFfQ0FSRF9DUkVBVElWRQkJCTB4MDAwMDAwMDAKKysjZGVmaW5lIEVNVTEwSzFfQ0FSRF9FTVVBUFMJCQkweDAwMDAwMDAxCisrCisrI2RlZmluZSBFTVUxMEsxX0ZYODAxMF9QQ01fQ09VTlQJCTgKKysKKysvKgorKyAqIEZvbGxvd2luZyBkZWZpbml0aW9uIGlzIGNvcGllZCBmcm9tIGxpbnV4L3R5cGVzLmggdG8gc3VwcG9ydCBjb21waWxpbmcKKysgKiB0aGlzIGhlYWRlciBmaWxlIGluIHVzZXJzcGFjZSBzaW5jZSB0aGV5IGFyZSBub3QgZ2VuZXJhbGx5IGF2YWlsYWJsZSBmb3IKKysgKiB1YXBpIGhlYWRlcnMuCisrICovCisrI2RlZmluZSBfX0VNVTEwSzFfREVDTEFSRV9CSVRNQVAobmFtZSxiaXRzKSBcCisrCXVuc2lnbmVkIGxvbmcgbmFtZVsoYml0cykgLyAoc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogOCldCisrCisrLyogaW5zdHJ1Y3Rpb24gc2V0ICovCisrI2RlZmluZSBpTUFDMAkgMHgwMAkvKiBSID0gQSArIChYICogWSA+PiAzMSkgICA7IHNhdHVyYXRpb24gKi8KKysjZGVmaW5lIGlNQUMxCSAweDAxCS8qIFIgPSBBICsgKC1YICogWSA+PiAzMSkgIDsgc2F0dXJhdGlvbiAqLworKyNkZWZpbmUgaU1BQzIJIDB4MDIJLyogUiA9IEEgKyAoWCAqIFkgPj4gMzEpICAgOyB3cmFwYXJvdW5kICovCisrI2RlZmluZSBpTUFDMwkgMHgwMwkvKiBSID0gQSArICgtWCAqIFkgPj4gMzEpICA7IHdyYXBhcm91bmQgKi8KKysjZGVmaW5lIGlNQUNJTlQwIDB4MDQJLyogUiA9IEEgKyBYICogWQkgICA7IHNhdHVyYXRpb24gKi8KKysjZGVmaW5lIGlNQUNJTlQxIDB4MDUJLyogUiA9IEEgKyBYICogWQkgICA7IHdyYXBhcm91bmQgKDMxLWJpdCkgKi8KKysjZGVmaW5lIGlBQ0MzCSAweDA2CS8qIFIgPSBBICsgWCArIFkJICAgOyBzYXR1cmF0aW9uICovCisrI2RlZmluZSBpTUFDTVYgICAweDA3CS8qIFIgPSBBLCBhY2MgKz0gWCAqIFkgPj4gMzEgKi8KKysjZGVmaW5lIGlBTkRYT1IgIDB4MDgJLyogUiA9IChBICYgWCkgXiBZICovCisrI2RlZmluZSBpVFNUTkVHICAweDA5CS8qIFIgPSAoQSA+PSBZKSA/IFggOiB+WCAqLworKyNkZWZpbmUgaUxJTUlUR0UgMHgwYQkvKiBSID0gKEEgPj0gWSkgPyBYIDogWSAqLworKyNkZWZpbmUgaUxJTUlUTFQgMHgwYgkvKiBSID0gKEEgPCBZKSA/IFggOiBZICovCisrI2RlZmluZSBpTE9HCSAweDBjCS8qIFIgPSBsaW5lYXJfZGF0YSwgQSAobG9nX2RhdGEpLCBYIChtYXhfZXhwKSwgWSAoZm9ybWF0X3dvcmQpICovCisrI2RlZmluZSBpRVhQCSAweDBkCS8qIFIgPSBsb2dfZGF0YSwgQSAobGluZWFyX2RhdGEpLCBYIChtYXhfZXhwKSwgWSAoZm9ybWF0X3dvcmQpICovCisrI2RlZmluZSBpSU5URVJQICAweDBlCS8qIFIgPSBBICsgKFggKiAoWSAtIEEpID4+IDMxKSAgOyBzYXR1cmF0aW9uICovCisrI2RlZmluZSBpU0tJUCAgICAweDBmCS8qIFIgPSBBIChjY19yZWcpLCBYIChjb3VudCksIFkgKGNjX3Rlc3QpICovCisrCisrLyogR1BScyAqLworKyNkZWZpbmUgRlhCVVMoeCkJKDB4MDAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiAqLworKyNkZWZpbmUgRVhUSU4oeCkJKDB4MTAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiAqLworKyNkZWZpbmUgRVhUT1VUKHgpCSgweDIwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgcGh5c2ljYWwgb3V0cyAtPiBGWFdDIGxvdyAxNiBiaXRzICovCisrI2RlZmluZSBGWEJVUzIoeCkJKDB4MzAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiBjb3BpZXMgb2YgZnggYnVzZXMgZm9yIGNhcHR1cmUgLT4gRlhXQyBoaWdoIDE2IGJpdHMgKi8KKysJCQkJCS8qIE5COiAweDMxIGFuZCAweDMyIGFyZSBzaGFyZWQgd2l0aCBDZW50ZXIvTEZFIG9uIFNCIGxpdmUgNS4xICovCisrCisrI2RlZmluZSBDXzAwMDAwMDAwCTB4NDAKKysjZGVmaW5lIENfMDAwMDAwMDEJMHg0MQorKyNkZWZpbmUgQ18wMDAwMDAwMgkweDQyCisrI2RlZmluZSBDXzAwMDAwMDAzCTB4NDMKKysjZGVmaW5lIENfMDAwMDAwMDQJMHg0NAorKyNkZWZpbmUgQ18wMDAwMDAwOAkweDQ1CisrI2RlZmluZSBDXzAwMDAwMDEwCTB4NDYKKysjZGVmaW5lIENfMDAwMDAwMjAJMHg0NworKyNkZWZpbmUgQ18wMDAwMDEwMAkweDQ4CisrI2RlZmluZSBDXzAwMDEwMDAwCTB4NDkKKysjZGVmaW5lIENfMDAwODAwMDAJMHg0YQorKyNkZWZpbmUgQ18xMDAwMDAwMAkweDRiCisrI2RlZmluZSBDXzIwMDAwMDAwCTB4NGMKKysjZGVmaW5lIENfNDAwMDAwMDAJMHg0ZAorKyNkZWZpbmUgQ184MDAwMDAwMAkweDRlCisrI2RlZmluZSBDXzdmZmZmZmZmCTB4NGYKKysjZGVmaW5lIENfZmZmZmZmZmYJMHg1MAorKyNkZWZpbmUgQ19mZmZmZmZmZQkweDUxCisrI2RlZmluZSBDX2MwMDAwMDAwCTB4NTIKKysjZGVmaW5lIENfNGYxYmJjZGMJMHg1MworKyNkZWZpbmUgQ181YTdlZjlkYgkweDU0CisrI2RlZmluZSBDXzAwMTAwMDAwCTB4NTUJCS8qID8/ICovCisrI2RlZmluZSBHUFJfQUNDVQkweDU2CQkvKiBBQ0NVTSwgYWNjdW11bGF0b3IgKi8KKysjZGVmaW5lIEdQUl9DT05ECTB4NTcJCS8qIENDUiwgY29uZGl0aW9uIHJlZ2lzdGVyICovCisrI2RlZmluZSBHUFJfTk9JU0UwCTB4NTgJCS8qIG5vaXNlIHNvdXJjZSAqLworKyNkZWZpbmUgR1BSX05PSVNFMQkweDU5CQkvKiBub2lzZSBzb3VyY2UgKi8KKysjZGVmaW5lIEdQUl9JUlEJCTB4NWEJCS8qIElSUSByZWdpc3RlciAqLworKyNkZWZpbmUgR1BSX0RCQUMJMHg1YgkJLyogVFJBTSBEZWxheSBCYXNlIEFkZHJlc3MgQ291bnRlciAqLworKyNkZWZpbmUgR1BSKHgpCQkoRlhHUFJFR0JBU0UgKyAoeCkpIC8qIGZyZWUgR1BSczogeCA9IDB4MDAgLSAweGZmICovCisrI2RlZmluZSBJVFJBTV9EQVRBKHgpCShUQU5LTUVNREFUQVJFR0JBU0UgKyAweDAwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4N2YgKi8KKysjZGVmaW5lIEVUUkFNX0RBVEEoeCkJKFRBTktNRU1EQVRBUkVHQkFTRSArIDB4ODAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHgxZiAqLworKyNkZWZpbmUgSVRSQU1fQUREUih4KQkoVEFOS01FTUFERFJSRUdCQVNFICsgMHgwMCArICh4KSkgLyogeCA9IDB4MDAgLSAweDdmICovCisrI2RlZmluZSBFVFJBTV9BRERSKHgpCShUQU5LTUVNQUREUlJFR0JBU0UgKyAweDgwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4MWYgKi8KKysKKysjZGVmaW5lIEFfSVRSQU1fREFUQSh4KQkoVEFOS01FTURBVEFSRUdCQVNFICsgMHgwMCArICh4KSkgLyogeCA9IDB4MDAgLSAweGJmICovCisrI2RlZmluZSBBX0VUUkFNX0RBVEEoeCkJKFRBTktNRU1EQVRBUkVHQkFTRSArIDB4YzAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHgzZiAqLworKyNkZWZpbmUgQV9JVFJBTV9BRERSKHgpCShUQU5LTUVNQUREUlJFR0JBU0UgKyAweDAwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4YmYgKi8KKysjZGVmaW5lIEFfRVRSQU1fQUREUih4KQkoVEFOS01FTUFERFJSRUdCQVNFICsgMHhjMCArICh4KSkgLyogeCA9IDB4MDAgLSAweDNmICovCisrI2RlZmluZSBBX0lUUkFNX0NUTCh4KQkoQV9UQU5LTUVNQ1RMUkVHQkFTRSArIDB4MDAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHhiZiAqLworKyNkZWZpbmUgQV9FVFJBTV9DVEwoeCkJKEFfVEFOS01FTUNUTFJFR0JBU0UgKyAweGMwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4M2YgKi8KKysKKysjZGVmaW5lIEFfRlhCVVMoeCkJKDB4MDAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgzZiBGWCBidXNlcyAqLworKyNkZWZpbmUgQV9FWFRJTih4KQkoMHg0MCArICh4KSkJLyogeCA9IDB4MDAgLSAweDBmIHBoeXNpY2FsIGlucyAqLworKyNkZWZpbmUgQV9QMTZWSU4oeCkJKDB4NTAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiBwMTZ2IGlucyAoQTIgb25seSkgIkVNVTMyIGlucHV0cyIgKi8KKysjZGVmaW5lIEFfRVhUT1VUKHgpCSgweDYwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MWYgcGh5c2ljYWwgb3V0cyAtPiBBX0ZYV0MxIDB4NzktN2YgdW5rbm93biAgICovCisrI2RlZmluZSBBX0ZYQlVTMih4KQkoMHg4MCArICh4KSkJLyogeCA9IDB4MDAgLSAweDFmIGV4dHJhIG91dHMgdXNlZCBmb3IgRUZYIGNhcHR1cmUgLT4gQV9GWFdDMiAqLworKyNkZWZpbmUgQV9FTVUzMk9VVEgoeCkJKDB4YTAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiAiRU1VMzJfT1VUXzEwIC0gXzFGIiAtID8/PyAqLworKyNkZWZpbmUgQV9FTVUzMk9VVEwoeCkJKDB4YjAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiAiRU1VMzJfT1VUXzEgLSBfRiIgLSA/Pz8gKi8KKysjZGVmaW5lIEEzX0VNVTMySU4oeCkJKDB4MTYwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4M2YgIkVNVTMyX0lOXzAwIC0gXzNGIiAtIE9ubHkgd2hlbiAuZGV2aWNlID0gMHgwMDA4ICovCisrI2RlZmluZSBBM19FTVUzMk9VVCh4KQkoMHgxRTAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiAiRU1VMzJfT1VUXzAwIC0gXzNGIiAtIE9ubHkgd2hlbiAuZGV2aWNlID0gMHgwMDA4ICovCisrI2RlZmluZSBBX0dQUih4KQkoQV9GWEdQUkVHQkFTRSArICh4KSkKKysKKysvKiBjY19yZWcgY29uc3RhbnRzICovCisrI2RlZmluZSBDQ19SRUdfTk9STUFMSVpFRCBDXzAwMDAwMDAxCisrI2RlZmluZSBDQ19SRUdfQk9SUk9XCUNfMDAwMDAwMDIKKysjZGVmaW5lIENDX1JFR19NSU5VUwlDXzAwMDAwMDA0CisrI2RlZmluZSBDQ19SRUdfWkVSTwlDXzAwMDAwMDA4CisrI2RlZmluZSBDQ19SRUdfU0FUVVJBVEUJQ18wMDAwMDAxMAorKyNkZWZpbmUgQ0NfUkVHX05PTlpFUk8JQ18wMDAwMDEwMAorKworKy8qIEZYIGJ1c2VzICovCisrI2RlZmluZSBGWEJVU19QQ01fTEVGVAkJMHgwMAorKyNkZWZpbmUgRlhCVVNfUENNX1JJR0hUCQkweDAxCisrI2RlZmluZSBGWEJVU19QQ01fTEVGVF9SRUFSCTB4MDIKKysjZGVmaW5lIEZYQlVTX1BDTV9SSUdIVF9SRUFSCTB4MDMKKysjZGVmaW5lIEZYQlVTX01JRElfTEVGVAkJMHgwNAorKyNkZWZpbmUgRlhCVVNfTUlESV9SSUdIVAkweDA1CisrI2RlZmluZSBGWEJVU19QQ01fQ0VOVEVSCTB4MDYKKysjZGVmaW5lIEZYQlVTX1BDTV9MRkUJCTB4MDcKKysjZGVmaW5lIEZYQlVTX1BDTV9MRUZUX0ZST05UCTB4MDgKKysjZGVmaW5lIEZYQlVTX1BDTV9SSUdIVF9GUk9OVAkweDA5CisrI2RlZmluZSBGWEJVU19NSURJX1JFVkVSQgkweDBjCisrI2RlZmluZSBGWEJVU19NSURJX0NIT1JVUwkweDBkCisrI2RlZmluZSBGWEJVU19QQ01fTEVGVF9TSURFCTB4MGUKKysjZGVmaW5lIEZYQlVTX1BDTV9SSUdIVF9TSURFCTB4MGYKKysjZGVmaW5lIEZYQlVTX1BUX0xFRlQJCTB4MTQKKysjZGVmaW5lIEZYQlVTX1BUX1JJR0hUCQkweDE1CisrCisrLyogSW5wdXRzICovCisrI2RlZmluZSBFWFRJTl9BQzk3X0wJICAgMHgwMAkvKiBBQyc5NyBjYXB0dXJlIGNoYW5uZWwgLSBsZWZ0ICovCisrI2RlZmluZSBFWFRJTl9BQzk3X1IJICAgMHgwMQkvKiBBQyc5NyBjYXB0dXJlIGNoYW5uZWwgLSByaWdodCAqLworKyNkZWZpbmUgRVhUSU5fU1BESUZfQ0RfTCAgIDB4MDIJLyogaW50ZXJuYWwgUy9QRElGIENEIC0gb25ib2FyZCAtIGxlZnQgKi8KKysjZGVmaW5lIEVYVElOX1NQRElGX0NEX1IgICAweDAzCS8qIGludGVybmFsIFMvUERJRiBDRCAtIG9uYm9hcmQgLSByaWdodCAqLworKyNkZWZpbmUgRVhUSU5fWk9PTV9MCSAgIDB4MDQJLyogWm9vbSBWaWRlbyBJMlMgLSBsZWZ0ICovCisrI2RlZmluZSBFWFRJTl9aT09NX1IJICAgMHgwNQkvKiBab29tIFZpZGVvIEkyUyAtIHJpZ2h0ICovCisrI2RlZmluZSBFWFRJTl9UT1NMSU5LX0wJICAgMHgwNgkvKiBMaXZlRHJpdmUgLSBUT1NMaW5rIE9wdGljYWwgLSBsZWZ0ICovCisrI2RlZmluZSBFWFRJTl9UT1NMSU5LX1IgICAgMHgwNwkvKiBMaXZlRHJpdmUgLSBUT1NMaW5rIE9wdGljYWwgLSByaWdodCAqLworKyNkZWZpbmUgRVhUSU5fTElORTFfTAkgICAweDA4CS8qIExpdmVEcml2ZSAtIExpbmUvTWljIDEgLSBsZWZ0ICovCisrI2RlZmluZSBFWFRJTl9MSU5FMV9SCSAgIDB4MDkJLyogTGl2ZURyaXZlIC0gTGluZS9NaWMgMSAtIHJpZ2h0ICovCisrI2RlZmluZSBFWFRJTl9DT0FYX1NQRElGX0wgMHgwYQkvKiBMaXZlRHJpdmUgLSBDb2F4aWFsIFMvUERJRiAtIGxlZnQgKi8KKysjZGVmaW5lIEVYVElOX0NPQVhfU1BESUZfUiAweDBiIC8qIExpdmVEcml2ZSAtIENvYXhpYWwgUy9QRElGIC0gcmlnaHQgKi8KKysjZGVmaW5lIEVYVElOX0xJTkUyX0wJICAgMHgwYwkvKiBMaXZlRHJpdmUgLSBMaW5lL01pYyAyIC0gbGVmdCAqLworKyNkZWZpbmUgRVhUSU5fTElORTJfUgkgICAweDBkCS8qIExpdmVEcml2ZSAtIExpbmUvTWljIDIgLSByaWdodCAqLworKworKy8qIE91dHB1dHMgKi8KKysjZGVmaW5lIEVYVE9VVF9BQzk3X0wJICAgMHgwMAkvKiBBQyc5NyBwbGF5YmFjayBjaGFubmVsIC0gbGVmdCAqLworKyNkZWZpbmUgRVhUT1VUX0FDOTdfUgkgICAweDAxCS8qIEFDJzk3IHBsYXliYWNrIGNoYW5uZWwgLSByaWdodCAqLworKyNkZWZpbmUgRVhUT1VUX1RPU0xJTktfTCAgIDB4MDIJLyogTGl2ZURyaXZlIC0gVE9TTGluayBPcHRpY2FsIC0gbGVmdCAqLworKyNkZWZpbmUgRVhUT1VUX1RPU0xJTktfUiAgIDB4MDMJLyogTGl2ZURyaXZlIC0gVE9TTGluayBPcHRpY2FsIC0gcmlnaHQgKi8KKysjZGVmaW5lIEVYVE9VVF9BQzk3X0NFTlRFUiAweDA0CS8qIFNCIExpdmUgNS4xIC0gY2VudGVyICovCisrI2RlZmluZSBFWFRPVVRfQUM5N19MRkUJICAgMHgwNSAvKiBTQiBMaXZlIDUuMSAtIExGRSAqLworKyNkZWZpbmUgRVhUT1VUX0hFQURQSE9ORV9MIDB4MDYJLyogTGl2ZURyaXZlIC0gSGVhZHBob25lIC0gbGVmdCAqLworKyNkZWZpbmUgRVhUT1VUX0hFQURQSE9ORV9SIDB4MDcJLyogTGl2ZURyaXZlIC0gSGVhZHBob25lIC0gcmlnaHQgKi8KKysjZGVmaW5lIEVYVE9VVF9SRUFSX0wJICAgMHgwOAkvKiBSZWFyIGNoYW5uZWwgLSBsZWZ0ICovCisrI2RlZmluZSBFWFRPVVRfUkVBUl9SCSAgIDB4MDkJLyogUmVhciBjaGFubmVsIC0gcmlnaHQgKi8KKysjZGVmaW5lIEVYVE9VVF9BRENfQ0FQX0wgICAweDBhCS8qIEFEQyBDYXB0dXJlIGJ1ZmZlciAtIGxlZnQgKi8KKysjZGVmaW5lIEVYVE9VVF9BRENfQ0FQX1IgICAweDBiCS8qIEFEQyBDYXB0dXJlIGJ1ZmZlciAtIHJpZ2h0ICovCisrI2RlZmluZSBFWFRPVVRfTUlDX0NBUAkgICAweDBjCS8qIE1JQyBDYXB0dXJlIGJ1ZmZlciAqLworKyNkZWZpbmUgRVhUT1VUX0FDOTdfUkVBUl9MIDB4MGQJLyogU0IgTGl2ZSA1LjEgKGMpIDIwMDMgLSBSZWFyIExlZnQgKi8KKysjZGVmaW5lIEVYVE9VVF9BQzk3X1JFQVJfUiAweDBlCS8qIFNCIExpdmUgNS4xIChjKSAyMDAzIC0gUmVhciBSaWdodCAqLworKyNkZWZpbmUgRVhUT1VUX0FDRU5URVIJICAgMHgxMSAvKiBBbmFsb2cgQ2VudGVyICovCisrI2RlZmluZSBFWFRPVVRfQUxGRQkgICAweDEyIC8qIEFuYWxvZyBMRkUgKi8KKysKKysvKiBBdWRpZ3kgSW5wdXRzICovCisrI2RlZmluZSBBX0VYVElOX0FDOTdfTAkJMHgwMAkvKiBBQyc5NyBjYXB0dXJlIGNoYW5uZWwgLSBsZWZ0ICovCisrI2RlZmluZSBBX0VYVElOX0FDOTdfUgkJMHgwMQkvKiBBQyc5NyBjYXB0dXJlIGNoYW5uZWwgLSByaWdodCAqLworKyNkZWZpbmUgQV9FWFRJTl9TUERJRl9DRF9MCTB4MDIJLyogZGlnaXRhbCBDRCBsZWZ0ICovCisrI2RlZmluZSBBX0VYVElOX1NQRElGX0NEX1IJMHgwMwkvKiBkaWdpdGFsIENEIGxlZnQgKi8KKysjZGVmaW5lIEFfRVhUSU5fT1BUX1NQRElGX0wgICAgIDB4MDQgICAgLyogYXVkaWd5IGRyaXZlIE9wdGljYWwgU1BESUYgLSBsZWZ0ICovCisrI2RlZmluZSBBX0VYVElOX09QVF9TUERJRl9SICAgICAweDA1ICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgKi8gCisrI2RlZmluZSBBX0VYVElOX0xJTkUyX0wJCTB4MDgJLyogYXVkaWd5IGRyaXZlIGxpbmUyL21pYzIgLSBsZWZ0ICovCisrI2RlZmluZSBBX0VYVElOX0xJTkUyX1IJCTB4MDkJLyogICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodCAqLworKyNkZWZpbmUgQV9FWFRJTl9BRENfTAkJMHgwYSAgICAvKiBQaGlsaXBzIEFEQyAtIGxlZnQgKi8KKysjZGVmaW5lIEFfRVhUSU5fQURDX1IJCTB4MGIgICAgLyogICAgICAgICAgICAgICByaWdodCAqLworKyNkZWZpbmUgQV9FWFRJTl9BVVgyX0wJCTB4MGMJLyogYXVkaWd5IGRyaXZlIGF1eDIgLSBsZWZ0ICovCisrI2RlZmluZSBBX0VYVElOX0FVWDJfUgkJMHgwZAkvKiAgICAgICAgICAgICAgICAgICAtIHJpZ2h0ICovCisrCisrLyogQXVkaWdpeSBPdXRwdXRzICovCisrI2RlZmluZSBBX0VYVE9VVF9GUk9OVF9MCTB4MDAJLyogZGlnaXRhbCBmcm9udCBsZWZ0ICovCisrI2RlZmluZSBBX0VYVE9VVF9GUk9OVF9SCTB4MDEJLyogICAgICAgICAgICAgICByaWdodCAqLworKyNkZWZpbmUgQV9FWFRPVVRfQ0VOVEVSCQkweDAyCS8qIGRpZ2l0YWwgZnJvbnQgY2VudGVyICovCisrI2RlZmluZSBBX0VYVE9VVF9MRkUJCTB4MDMJLyogZGlnaXRhbCBmcm9udCBsZmUgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0hFQURQSE9ORV9MCTB4MDQJLyogaGVhZHBob25lIGF1ZGlneSBkcml2ZSBsZWZ0ICovCisrI2RlZmluZSBBX0VYVE9VVF9IRUFEUEhPTkVfUgkweDA1CS8qICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX1JFQVJfTAkJMHgwNgkvKiBkaWdpdGFsIHJlYXIgbGVmdCAqLworKyNkZWZpbmUgQV9FWFRPVVRfUkVBUl9SCQkweDA3CS8qICAgICAgICAgICAgICByaWdodCAqLworKyNkZWZpbmUgQV9FWFRPVVRfQUZST05UX0wJMHgwOAkvKiBhbmFsb2cgZnJvbnQgbGVmdCAqLworKyNkZWZpbmUgQV9FWFRPVVRfQUZST05UX1IJMHgwOQkvKiAgICAgICAgICAgICAgcmlnaHQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0FDRU5URVIJMHgwYQkvKiBhbmFsb2cgY2VudGVyICovCisrI2RlZmluZSBBX0VYVE9VVF9BTEZFCQkweDBiCS8qIGFuYWxvZyBMRkUgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0FTSURFX0wJMHgwYwkvKiBhbmFsb2cgc2lkZSBsZWZ0ICAtIEF1ZGlneSAyIFpTICovCisrI2RlZmluZSBBX0VYVE9VVF9BU0lERV9SCTB4MGQJLyogICAgICAgICAgICAgcmlnaHQgLSBBdWRpZ3kgMiBaUyAqLworKyNkZWZpbmUgQV9FWFRPVVRfQVJFQVJfTAkweDBlCS8qIGFuYWxvZyByZWFyIGxlZnQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0FSRUFSX1IJMHgwZgkvKiAgICAgICAgICAgICByaWdodCAqLworKyNkZWZpbmUgQV9FWFRPVVRfQUM5N19MCQkweDEwCS8qIEFDOTcgbGVmdCAoZnJvbnQpICovCisrI2RlZmluZSBBX0VYVE9VVF9BQzk3X1IJCTB4MTEJLyogICAgICByaWdodCAqLworKyNkZWZpbmUgQV9FWFRPVVRfQURDX0NBUF9MCTB4MTYJLyogQURDIGNhcHR1cmUgYnVmZmVyIGxlZnQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0FEQ19DQVBfUgkweDE3CS8qICAgICAgICAgICAgICAgICAgICByaWdodCAqLworKyNkZWZpbmUgQV9FWFRPVVRfTUlDX0NBUAkweDE4CS8qIE1pYyBjYXB0dXJlIGJ1ZmZlciAqLworKworKy8qIEF1ZGlneSBjb25zdGFudHMgKi8KKysjZGVmaW5lIEFfQ18wMDAwMDAwMAkweGMwCisrI2RlZmluZSBBX0NfMDAwMDAwMDEJMHhjMQorKyNkZWZpbmUgQV9DXzAwMDAwMDAyCTB4YzIKKysjZGVmaW5lIEFfQ18wMDAwMDAwMwkweGMzCisrI2RlZmluZSBBX0NfMDAwMDAwMDQJMHhjNAorKyNkZWZpbmUgQV9DXzAwMDAwMDA4CTB4YzUKKysjZGVmaW5lIEFfQ18wMDAwMDAxMAkweGM2CisrI2RlZmluZSBBX0NfMDAwMDAwMjAJMHhjNworKyNkZWZpbmUgQV9DXzAwMDAwMTAwCTB4YzgKKysjZGVmaW5lIEFfQ18wMDAxMDAwMAkweGM5CisrI2RlZmluZSBBX0NfMDAwMDA4MDAJMHhjYQorKyNkZWZpbmUgQV9DXzEwMDAwMDAwCTB4Y2IKKysjZGVmaW5lIEFfQ18yMDAwMDAwMAkweGNjCisrI2RlZmluZSBBX0NfNDAwMDAwMDAJMHhjZAorKyNkZWZpbmUgQV9DXzgwMDAwMDAwCTB4Y2UKKysjZGVmaW5lIEFfQ183ZmZmZmZmZgkweGNmCisrI2RlZmluZSBBX0NfZmZmZmZmZmYJMHhkMAorKyNkZWZpbmUgQV9DX2ZmZmZmZmZlCTB4ZDEKKysjZGVmaW5lIEFfQ19jMDAwMDAwMAkweGQyCisrI2RlZmluZSBBX0NfNGYxYmJjZGMJMHhkMworKyNkZWZpbmUgQV9DXzVhN2VmOWRiCTB4ZDQKKysjZGVmaW5lIEFfQ18wMDEwMDAwMAkweGQ1CisrI2RlZmluZSBBX0dQUl9BQ0NVCTB4ZDYJCS8qIEFDQ1VNLCBhY2N1bXVsYXRvciAqLworKyNkZWZpbmUgQV9HUFJfQ09ORAkweGQ3CQkvKiBDQ1IsIGNvbmRpdGlvbiByZWdpc3RlciAqLworKyNkZWZpbmUgQV9HUFJfTk9JU0UwCTB4ZDgJCS8qIG5vaXNlIHNvdXJjZSAqLworKyNkZWZpbmUgQV9HUFJfTk9JU0UxCTB4ZDkJCS8qIG5vaXNlIHNvdXJjZSAqLworKyNkZWZpbmUgQV9HUFJfSVJRCTB4ZGEJCS8qIElSUSByZWdpc3RlciAqLworKyNkZWZpbmUgQV9HUFJfREJBQwkweGRiCQkvKiBUUkFNIERlbGF5IEJhc2UgQWRkcmVzcyBDb3VudGVyIC0gaW50ZXJuYWwgKi8KKysjZGVmaW5lIEFfR1BSX0RCQUNFCTB4ZGUJCS8qIFRSQU0gRGVsYXkgQmFzZSBBZGRyZXNzIENvdW50ZXIgLSBleHRlcm5hbCAqLworKworKy8qIGRlZmluaXRpb25zIGZvciBkZWJ1ZyByZWdpc3RlciAqLworKyNkZWZpbmUgRU1VMTBLMV9EQkdfWkMJCQkweDgwMDAwMDAwCS8qIHplcm8gdHJhbSBjb3VudGVyICovCisrI2RlZmluZSBFTVUxMEsxX0RCR19TQVRVUkFUSU9OX09DQ1VSRUQJMHgwMjAwMDAwMAkvKiBzYXR1cmF0aW9uIGNvbnRyb2wgKi8KKysjZGVmaW5lIEVNVTEwSzFfREJHX1NBVFVSQVRJT05fQUREUgkweDAxZmYwMDAwCS8qIHNhdHVyYXRpb24gYWRkcmVzcyAqLworKyNkZWZpbmUgRU1VMTBLMV9EQkdfU0lOR0xFX1NURVAJCTB4MDAwMDgwMDAJLyogc2luZ2xlIHN0ZXAgbW9kZSAqLworKyNkZWZpbmUgRU1VMTBLMV9EQkdfU1RFUAkJMHgwMDAwNDAwMAkvKiBzdGFydCBzaW5nbGUgc3RlcCAqLworKyNkZWZpbmUgRU1VMTBLMV9EQkdfQ09ORElUSU9OX0NPREUJMHgwMDAwM2UwMAkvKiBjb25kaXRpb24gY29kZSAqLworKyNkZWZpbmUgRU1VMTBLMV9EQkdfU0lOR0xFX1NURVBfQUREUgkweDAwMDAwMWZmCS8qIHNpbmdsZSBzdGVwIGFkZHJlc3MgKi8KKysKKysvKiB0YW5rIG1lbW9yeSBhZGRyZXNzIGxpbmUgKi8KKysjaWZuZGVmIF9fS0VSTkVMX18KKysjZGVmaW5lIFRBTktNRU1BRERSUkVHX0FERFJfTUFTSyAweDAwMGZmZmZmCS8qIDIwIGJpdCB0YW5rIGFkZHJlc3MgZmllbGQJCQkqLworKyNkZWZpbmUgVEFOS01FTUFERFJSRUdfQ0xFQVIJIDB4MDA4MDAwMDAJLyogQ2xlYXIgdGFuayBtZW1vcnkJCQkJKi8KKysjZGVmaW5lIFRBTktNRU1BRERSUkVHX0FMSUdOCSAweDAwNDAwMDAwCS8qIEFsaWduIHJlYWQgb3Igd3JpdGUgcmVsYXRpdmUgdG8gdGFuayBhY2Nlc3MJKi8KKysjZGVmaW5lIFRBTktNRU1BRERSUkVHX1dSSVRFCSAweDAwMjAwMDAwCS8qIFdyaXRlIHRvIHRhbmsgbWVtb3J5CQkJCSovCisrI2RlZmluZSBUQU5LTUVNQUREUlJFR19SRUFECSAweDAwMTAwMDAwCS8qIFJlYWQgZnJvbSB0YW5rIG1lbW9yeQkJCSovCisrI2VuZGlmCisrCisrc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9pbmZvIHsKKysJdW5zaWduZWQgaW50IGludGVybmFsX3RyYW1fc2l6ZTsJLyogaW4gc2FtcGxlcyAqLworKwl1bnNpZ25lZCBpbnQgZXh0ZXJuYWxfdHJhbV9zaXplOwkvKiBpbiBzYW1wbGVzICovCisrCWNoYXIgZnhidXNfbmFtZXNbMTZdWzMyXTsJCS8qIG5hbWVzIG9mIEZYQlVTZXMgKi8KKysJY2hhciBleHRpbl9uYW1lc1sxNl1bMzJdOwkJLyogbmFtZXMgb2YgZXh0ZXJuYWwgaW5wdXRzICovCisrCWNoYXIgZXh0b3V0X25hbWVzWzMyXVszMl07CQkvKiBuYW1lcyBvZiBleHRlcm5hbCBvdXRwdXRzICovCisrCXVuc2lnbmVkIGludCBncHJfY29udHJvbHM7CQkvKiBjb3VudCBvZiBHUFIgY29udHJvbHMgKi8KKyt9OworKworKyNkZWZpbmUgRU1VMTBLMV9HUFJfVFJBTlNMQVRJT05fTk9ORQkJMAorKyNkZWZpbmUgRU1VMTBLMV9HUFJfVFJBTlNMQVRJT05fVEFCTEUxMDAJMQorKyNkZWZpbmUgRU1VMTBLMV9HUFJfVFJBTlNMQVRJT05fQkFTUwkJMgorKyNkZWZpbmUgRU1VMTBLMV9HUFJfVFJBTlNMQVRJT05fVFJFQkxFCQkzCisrI2RlZmluZSBFTVUxMEsxX0dQUl9UUkFOU0xBVElPTl9PTk9GRgkJNAorKworK2VudW0gZW11MTBrMV9jdGxfZWxlbV9pZmFjZSB7CisrCUVNVTEwSzFfQ1RMX0VMRU1fSUZBQ0VfTUlYRVIgPSAyLAkvKiB2aXJ0dWFsIG1peGVyIGRldmljZSAqLworKwlFTVUxMEsxX0NUTF9FTEVNX0lGQUNFX1BDTSA9IDMsCQkvKiBQQ00gZGV2aWNlICovCisrfTsKKysKKytzdHJ1Y3QgZW11MTBrMV9jdGxfZWxlbV9pZCB7CisrCXVuc2lnbmVkIGludCBwYWQ7CQkvKiBkb24ndCB1c2UgKi8KKysJaW50IGlmYWNlOwkJCS8qIGludGVyZmFjZSBpZGVudGlmaWVyICovCisrCXVuc2lnbmVkIGludCBkZXZpY2U7CQkvKiBkZXZpY2UvY2xpZW50IG51bWJlciAqLworKwl1bnNpZ25lZCBpbnQgc3ViZGV2aWNlOwkJLyogc3ViZGV2aWNlIChzdWJzdHJlYW0pIG51bWJlciAqLworKwl1bnNpZ25lZCBjaGFyIG5hbWVbNDRdOwkJLyogQVNDSUkgbmFtZSBvZiBpdGVtICovCisrCXVuc2lnbmVkIGludCBpbmRleDsJCS8qIGluZGV4IG9mIGl0ZW0gKi8KKyt9OworKworK3N0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHIgeworKwlzdHJ1Y3QgZW11MTBrMV9jdGxfZWxlbV9pZCBpZDsJLyogZnVsbCBjb250cm9sIElEIGRlZmluaXRpb24gKi8KKysJdW5zaWduZWQgaW50IHZjb3VudDsJCS8qIHZpc2libGUgY291bnQgKi8KKysJdW5zaWduZWQgaW50IGNvdW50OwkJLyogY291bnQgb2YgR1BSICgxLi4xNikgKi8KKysJdW5zaWduZWQgc2hvcnQgZ3ByWzMyXTsJCS8qIEdQUiBudW1iZXIocykgKi8KKysJdW5zaWduZWQgaW50IHZhbHVlWzMyXTsJCS8qIGluaXRpYWwgdmFsdWVzICovCisrCXVuc2lnbmVkIGludCBtaW47CQkvKiBtaW5pbXVtIHJhbmdlICovCisrCXVuc2lnbmVkIGludCBtYXg7CQkvKiBtYXhpbXVtIHJhbmdlICovCisrCXVuc2lnbmVkIGludCB0cmFuc2xhdGlvbjsJLyogdHJhbnNsYXRpb24gdHlwZSAoRU1VMTBLMV9HUFJfVFJBTlNMQVRJT04qKSAqLworKwljb25zdCB1bnNpZ25lZCBpbnQgKnRsdjsKKyt9OworKworKy8qIG9sZCBBQkkgd2l0aG91dCBUTFYgc3VwcG9ydCAqLworK3N0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29udHJvbF9vbGRfZ3ByIHsKKysJc3RydWN0IGVtdTEwazFfY3RsX2VsZW1faWQgaWQ7CisrCXVuc2lnbmVkIGludCB2Y291bnQ7CisrCXVuc2lnbmVkIGludCBjb3VudDsKKysJdW5zaWduZWQgc2hvcnQgZ3ByWzMyXTsKKysJdW5zaWduZWQgaW50IHZhbHVlWzMyXTsKKysJdW5zaWduZWQgaW50IG1pbjsKKysJdW5zaWduZWQgaW50IG1heDsKKysJdW5zaWduZWQgaW50IHRyYW5zbGF0aW9uOworK307CisrCisrc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb2RlIHsKKysJY2hhciBuYW1lWzEyOF07CisrCisrCV9fRU1VMTBLMV9ERUNMQVJFX0JJVE1BUChncHJfdmFsaWQsIDB4MjAwKTsgLyogYml0bWFzayBvZiB2YWxpZCBpbml0aWFsaXplcnMgKi8KKysJX191MzIgKmdwcl9tYXA7CQkJLyogaW5pdGlhbGl6ZXJzICovCisrCisrCXVuc2lnbmVkIGludCBncHJfYWRkX2NvbnRyb2xfY291bnQ7IC8qIGNvdW50IG9mIEdQUiBjb250cm9scyB0byBhZGQvcmVwbGFjZSAqLworKwlzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvbnRyb2xfZ3ByICpncHJfYWRkX2NvbnRyb2xzOyAvKiBHUFIgY29udHJvbHMgdG8gYWRkL3JlcGxhY2UgKi8KKysKKysJdW5zaWduZWQgaW50IGdwcl9kZWxfY29udHJvbF9jb3VudDsgLyogY291bnQgb2YgR1BSIGNvbnRyb2xzIHRvIHJlbW92ZSAqLworKwlzdHJ1Y3QgZW11MTBrMV9jdGxfZWxlbV9pZCAqZ3ByX2RlbF9jb250cm9sczsgLyogSURzIG9mIEdQUiBjb250cm9scyB0byByZW1vdmUgKi8KKysKKysJdW5zaWduZWQgaW50IGdwcl9saXN0X2NvbnRyb2xfY291bnQ7IC8qIGNvdW50IG9mIEdQUiBjb250cm9scyB0byBsaXN0ICovCisrCXVuc2lnbmVkIGludCBncHJfbGlzdF9jb250cm9sX3RvdGFsOyAvKiB0b3RhbCBjb3VudCBvZiBHUFIgY29udHJvbHMgKi8KKysJc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb250cm9sX2dwciAqZ3ByX2xpc3RfY29udHJvbHM7IC8qIGxpc3RlZCBHUFIgY29udHJvbHMgKi8KKysKKysJX19FTVUxMEsxX0RFQ0xBUkVfQklUTUFQKHRyYW1fdmFsaWQsIDB4MTAwKTsgLyogYml0bWFzayBvZiB2YWxpZCBpbml0aWFsaXplcnMgKi8KKysJX191MzIgKnRyYW1fZGF0YV9tYXA7CQkgIC8qIGRhdGEgaW5pdGlhbGl6ZXJzICovCisrCV9fdTMyICp0cmFtX2FkZHJfbWFwOwkJICAvKiBtYXAgaW5pdGlhbGl6ZXJzICovCisrCisrCV9fRU1VMTBLMV9ERUNMQVJFX0JJVE1BUChjb2RlX3ZhbGlkLCAxMDI0KTsgLyogYml0bWFzayBvZiB2YWxpZCBpbnN0cnVjdGlvbnMgKi8KKysJX191MzIgKmNvZGU7CQkJICAvKiBvbmUgaW5zdHJ1Y3Rpb24gLSA2NCBiaXRzICovCisrfTsKKysKKytzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3RyYW0geworKwl1bnNpZ25lZCBpbnQgYWRkcmVzczsJCS8qIDMxLmJpdCA9PSAxIC0+IGV4dGVybmFsIFRSQU0gKi8KKysJdW5zaWduZWQgaW50IHNpemU7CQkvKiBzaXplIGluIHNhbXBsZXMgKDQgYnl0ZXMpICovCisrCXVuc2lnbmVkIGludCAqc2FtcGxlczsJCS8qIHBvaW50ZXIgdG8gc2FtcGxlcyAoMjAtYml0KSAqLworKwkJCQkJLyogTlVMTC0+Y2xlYXIgbWVtb3J5ICovCisrfTsKKysKKytzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3BjbV9yZWMgeworKwl1bnNpZ25lZCBpbnQgc3Vic3RyZWFtOwkJLyogc3Vic3RyZWFtIG51bWJlciAqLworKwl1bnNpZ25lZCBpbnQgcmVzMTsJCS8qIHJlc2VydmVkICovCisrCXVuc2lnbmVkIGludCBjaGFubmVsczsJCS8qIDE2LWJpdCBjaGFubmVscyBjb3VudCwgemVybyA9IHJlbW92ZSB0aGlzIHN1YnN0cmVhbSAqLworKwl1bnNpZ25lZCBpbnQgdHJhbV9zdGFydDsJLyogcmluZyBidWZmZXIgcG9zaXRpb24gaW4gVFJBTSAoaW4gc2FtcGxlcykgKi8KKysJdW5zaWduZWQgaW50IGJ1ZmZlcl9zaXplOwkvKiBjb3VudCBvZiBidWZmZXJlZCBzYW1wbGVzICovCisrCXVuc2lnbmVkIHNob3J0IGdwcl9zaXplOwkJLyogR1BSIGNvbnRhaW5pbmcgc2l6ZSBvZiByaW5nYnVmZmVyIGluIHNhbXBsZXMgKGhvc3QpICovCisrCXVuc2lnbmVkIHNob3J0IGdwcl9wdHI7CQkvKiBHUFIgY29udGFpbmluZyBjdXJyZW50IHBvaW50ZXIgaW4gdGhlIHJpbmcgYnVmZmVyIChob3N0ID0gcmVzZXQsIEZYODAxMCkgKi8KKysJdW5zaWduZWQgc2hvcnQgZ3ByX2NvdW50OwkvKiBHUFIgY29udGFpbmluZyBjb3VudCBvZiBzYW1wbGVzIGJldHdlZW4gdHdvIGludGVycnVwdHMgKGhvc3QpICovCisrCXVuc2lnbmVkIHNob3J0IGdwcl90bXBjb3VudDsJLyogR1BSIGNvbnRhaW5pbmcgY3VycmVudCBjb3VudCBvZiBzYW1wbGVzIHRvIGludGVycnVwdCAoaG9zdCA9IHNldCwgRlg4MDEwKSAqLworKwl1bnNpZ25lZCBzaG9ydCBncHJfdHJpZ2dlcjsJLyogR1BSIGNvbnRhaW5pbmcgdHJpZ2dlciAoYWN0aXZhdGUpIGluZm9ybWF0aW9uIChob3N0KSAqLworKwl1bnNpZ25lZCBzaG9ydCBncHJfcnVubmluZzsJLyogR1BSIGNvbnRhaW5pbmcgaW5mbyBpZiBQQ00gaXMgcnVubmluZyAoRlg4MDEwKSAqLworKwl1bnNpZ25lZCBjaGFyIHBhZDsJCS8qIHJlc2VydmVkICovCisrCXVuc2lnbmVkIGNoYXIgZXRyYW1bMzJdOwkvKiBleHRlcm5hbCBUUkFNIGFkZHJlc3MgJiBkYXRhIChvbmUgcGVyIGNoYW5uZWwpICovCisrCXVuc2lnbmVkIGludCByZXMyOwkJLyogcmVzZXJ2ZWQgKi8KKyt9OworKworKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9WRVJTSU9OCQlTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDEsIDAsIDEpCisrCisrI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX0lORk8JX0lPUiAoJ0gnLCAweDEwLCBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2luZm8pCisrI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX0NPREVfUE9LRQlfSU9XICgnSCcsIDB4MTEsIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29kZSkKKysjZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfQ09ERV9QRUVLCV9JT1dSKCdIJywgMHgxMiwgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb2RlKQorKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9UUkFNX1NFVFVQCV9JT1cgKCdIJywgMHgyMCwgaW50KQorKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9UUkFNX1BPS0UJX0lPVyAoJ0gnLCAweDIxLCBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3RyYW0pCisrI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1RSQU1fUEVFSwlfSU9XUignSCcsIDB4MjIsIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfdHJhbSkKKysjZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfUENNX1BPS0UJX0lPVyAoJ0gnLCAweDMwLCBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3BjbV9yZWMpCisrI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1BDTV9QRUVLCV9JT1dSKCdIJywgMHgzMSwgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9wY21fcmVjKQorKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9QVkVSU0lPTglfSU9SICgnSCcsIDB4NDAsIGludCkKKysjZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfU1RPUAlfSU8gICgnSCcsIDB4ODApCisrI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX0NPTlRJTlVFCV9JTyAgKCdIJywgMHg4MSkKKysjZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfWkVST19UUkFNX0NPVU5URVIgX0lPICgnSCcsIDB4ODIpCisrI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1NJTkdMRV9TVEVQCV9JT1cgKCdIJywgMHg4MywgaW50KQorKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9EQkdfUkVBRAlfSU9SICgnSCcsIDB4ODQsIGludCkKKysKKysjaWZuZGVmIF9fS0VSTkVMX18KKysvKiB0eXBlZGVmcyBmb3IgY29tcGF0aWJpbGl0eSB0byB1c2VyLXNwYWNlICovCisrdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2luZm8gZW11MTBrMV9meDgwMTBfaW5mb190OworK3R5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb250cm9sX2dwciBlbXUxMGsxX2Z4ODAxMF9jb250cm9sX2dwcl90OworK3R5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb2RlIGVtdTEwazFfZng4MDEwX2NvZGVfdDsKKyt0eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfdHJhbSBlbXUxMGsxX2Z4ODAxMF90cmFtX3Q7CisrdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3BjbV9yZWMgZW11MTBrMV9meDgwMTBfcGNtX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgZW11MTBrMV9jdGxfZWxlbV9pZCBlbXUxMGsxX2N0bF9lbGVtX2lkX3Q7CisrI2VuZGlmCisrCisrI2VuZGlmIC8qIF9VQVBJX19TT1VORF9FTVUxMEsxX0ggKi8KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvaGRzcC5oIGIvaW5jbHVkZS9zb3VuZC91YXBpL2hkc3AuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi44OGM5MmEzZgorLS0tIC9kZXYvbnVsbAorKysrIGIvaW5jbHVkZS9zb3VuZC91YXBpL2hkc3AuaAorQEAgLTAsMCArMSwxMDkgQEAKKysvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKysjaWZuZGVmIF9fU09VTkRfSERTUF9ICisrI2RlZmluZSBfX1NPVU5EX0hEU1BfSAorKworKy8qCisrICogICBDb3B5cmlnaHQgKEMpIDIwMDMgVGhvbWFzIENoYXJib25uZWwgKHRob21hc0B1bmRhdGEub3JnKQorKyAqICAgIAorKyAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgKiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICogICBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKysgKi8KKysKKysjZGVmaW5lIEhEU1BfTUFUUklYX01JWEVSX1NJWkUgMjA0OAorKworK2VudW0gSERTUF9JT19UeXBlIHsKKysJRGlnaWZhY2UsCisrCU11bHRpZmFjZSwKKysJSDk2NTIsCisrCUg5NjMyLAorKwlSUE0sCisrCVVuZGVmaW5lZCwKKyt9OworKworK3N0cnVjdCBoZHNwX3BlYWtfcm1zIHsKKysJX191MzIgaW5wdXRfcGVha3NbMjZdOworKwlfX3UzMiBwbGF5YmFja19wZWFrc1syNl07CisrCV9fdTMyIG91dHB1dF9wZWFrc1syOF07CisrCV9fdTY0IGlucHV0X3Jtc1syNl07CisrCV9fdTY0IHBsYXliYWNrX3Jtc1syNl07CisrCS8qIFRoZXNlIGFyZSBvbmx5IHVzZWQgZm9yIEg5Nnh4IGNhcmRzICovCisrCV9fdTY0IG91dHB1dF9ybXNbMjZdOworK307CisrCisrI2RlZmluZSBTTkRSVl9IRFNQX0lPQ1RMX0dFVF9QRUFLX1JNUyBfSU9SKCdIJywgMHg0MCwgc3RydWN0IGhkc3BfcGVha19ybXMpCisrCisrc3RydWN0IGhkc3BfY29uZmlnX2luZm8geworKwl1bnNpZ25lZCBjaGFyIHByZWZfc3luY19yZWY7CisrCXVuc2lnbmVkIGNoYXIgd29yZGNsb2NrX3N5bmNfY2hlY2s7CisrCXVuc2lnbmVkIGNoYXIgc3BkaWZfc3luY19jaGVjazsKKysJdW5zaWduZWQgY2hhciBhZGF0c3luY19zeW5jX2NoZWNrOworKwl1bnNpZ25lZCBjaGFyIGFkYXRfc3luY19jaGVja1szXTsKKysJdW5zaWduZWQgY2hhciBzcGRpZl9pbjsKKysJdW5zaWduZWQgY2hhciBzcGRpZl9vdXQ7CisrCXVuc2lnbmVkIGNoYXIgc3BkaWZfcHJvZmVzc2lvbmFsOworKwl1bnNpZ25lZCBjaGFyIHNwZGlmX2VtcGhhc2lzOworKwl1bnNpZ25lZCBjaGFyIHNwZGlmX25vbmF1ZGlvOworKwl1bnNpZ25lZCBpbnQgc3BkaWZfc2FtcGxlX3JhdGU7CisrCXVuc2lnbmVkIGludCBzeXN0ZW1fc2FtcGxlX3JhdGU7CisrCXVuc2lnbmVkIGludCBhdXRvc3luY19zYW1wbGVfcmF0ZTsKKysJdW5zaWduZWQgY2hhciBzeXN0ZW1fY2xvY2tfbW9kZTsKKysJdW5zaWduZWQgY2hhciBjbG9ja19zb3VyY2U7CisrCXVuc2lnbmVkIGNoYXIgYXV0b3N5bmNfcmVmOworKwl1bnNpZ25lZCBjaGFyIGxpbmVfb3V0OworKwl1bnNpZ25lZCBjaGFyIHBhc3N0aHJ1OyAKKysJdW5zaWduZWQgY2hhciBkYV9nYWluOworKwl1bnNpZ25lZCBjaGFyIGFkX2dhaW47CisrCXVuc2lnbmVkIGNoYXIgcGhvbmVfZ2FpbjsKKysJdW5zaWduZWQgY2hhciB4bHJfYnJlYWtvdXRfY2FibGU7CisrCXVuc2lnbmVkIGNoYXIgYW5hbG9nX2V4dGVuc2lvbl9ib2FyZDsKKyt9OworKworKyNkZWZpbmUgU05EUlZfSERTUF9JT0NUTF9HRVRfQ09ORklHX0lORk8gX0lPUignSCcsIDB4NDEsIHN0cnVjdCBoZHNwX2NvbmZpZ19pbmZvKQorKworK3N0cnVjdCBoZHNwX2Zpcm13YXJlIHsKKysJdm9pZCAqZmlybXdhcmVfZGF0YTsJLyogMjQ0MTMgeCA0IGJ5dGVzICovCisrfTsKKysKKysjZGVmaW5lIFNORFJWX0hEU1BfSU9DVExfVVBMT0FEX0ZJUk1XQVJFIF9JT1coJ0gnLCAweDQyLCBzdHJ1Y3QgaGRzcF9maXJtd2FyZSkKKysKKytzdHJ1Y3QgaGRzcF92ZXJzaW9uIHsKKysJZW51bSBIRFNQX0lPX1R5cGUgaW9fdHlwZTsKKysJdW5zaWduZWQgc2hvcnQgZmlybXdhcmVfcmV2OworK307CisrCisrI2RlZmluZSBTTkRSVl9IRFNQX0lPQ1RMX0dFVF9WRVJTSU9OIF9JT1IoJ0gnLCAweDQzLCBzdHJ1Y3QgaGRzcF92ZXJzaW9uKQorKworK3N0cnVjdCBoZHNwX21peGVyIHsKKysJdW5zaWduZWQgc2hvcnQgbWF0cml4W0hEU1BfTUFUUklYX01JWEVSX1NJWkVdOworK307CisrCisrI2RlZmluZSBTTkRSVl9IRFNQX0lPQ1RMX0dFVF9NSVhFUiBfSU9SKCdIJywgMHg0NCwgc3RydWN0IGhkc3BfbWl4ZXIpCisrCisrc3RydWN0IGhkc3BfOTYzMl9hZWIgeworKwlpbnQgYWViaTsKKysJaW50IGFlYm87CisrfTsKKysKKysjZGVmaW5lIFNORFJWX0hEU1BfSU9DVExfR0VUXzk2MzJfQUVCIF9JT1IoJ0gnLCAweDQ1LCBzdHJ1Y3QgaGRzcF85NjMyX2FlYikKKysKKysvKiB0eXBlZGVmcyBmb3IgY29tcGF0aWJpbGl0eSB0byB1c2VyLXNwYWNlICovCisrdHlwZWRlZiBlbnVtIEhEU1BfSU9fVHlwZSBIRFNQX0lPX1R5cGU7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcF9wZWFrX3JtcyBoZHNwX3BlYWtfcm1zX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcF9jb25maWdfaW5mbyBoZHNwX2NvbmZpZ19pbmZvX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcF9maXJtd2FyZSBoZHNwX2Zpcm13YXJlX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcF92ZXJzaW9uIGhkc3BfdmVyc2lvbl90OworK3R5cGVkZWYgc3RydWN0IGhkc3BfbWl4ZXIgaGRzcF9taXhlcl90OworK3R5cGVkZWYgc3RydWN0IGhkc3BfOTYzMl9hZWIgaGRzcF85NjMyX2FlYl90OworKworKyNlbmRpZiAvKiBfX1NPVU5EX0hEU1BfSCAqLworZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwbS5oIGIvaW5jbHVkZS9zb3VuZC91YXBpL2hkc3BtLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uMmQ5MWY5MGUKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwbS5oCitAQCAtMCwwICsxLDIzMCBAQAorKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKyBXSVRIIExpbnV4LXN5c2NhbGwtbm90ZSAqLworKyNpZm5kZWYgX19TT1VORF9IRFNQTV9ICisrI2RlZmluZSBfX1NPVU5EX0hEU1BNX0gKKysvKgorKyAqICAgQ29weXJpZ2h0IChDKSAyMDAzIFdpbmZyaWVkIFJpdHNjaCAoSUVNKQorKyAqICAgYmFzZWQgb24gaGRzcC5oIGZyb20gVGhvbWFzIENoYXJib25uZWwgKHRob21hc0B1bmRhdGEub3JnKQorKyAqCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqICAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisrICovCisrCisrLyogTWF4aW11bSBjaGFubmVscyBpcyA2NCBldmVuIG9uIDU2TW9kZSB5b3UgaGF2ZSA2NHBsYXliYWNrcyB0byBtYXRyaXggKi8KKysjZGVmaW5lIEhEU1BNX01BWF9DSEFOTkVMUyAgICAgIDY0CisrCisrZW51bSBoZHNwbV9pb190eXBlIHsKKysJTUFESSwKKysJTUFESWZhY2UsCisrCUFJTywKKysJQUVTMzIsCisrCVJheURBVAorK307CisrCisrZW51bSBoZHNwbV9zcGVlZCB7CisrCXNzLAorKwlkcywKKysJcXMKKyt9OworKworKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tIElPQ1RMIFBlYWsvUk1TIE1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworKworK3N0cnVjdCBoZHNwbV9wZWFrX3JtcyB7CisrCV9fdTMyIGlucHV0X3BlYWtzWzY0XTsKKysJX191MzIgcGxheWJhY2tfcGVha3NbNjRdOworKwlfX3UzMiBvdXRwdXRfcGVha3NbNjRdOworKworKwlfX3U2NCBpbnB1dF9ybXNbNjRdOworKwlfX3U2NCBwbGF5YmFja19ybXNbNjRdOworKwlfX3U2NCBvdXRwdXRfcm1zWzY0XTsKKysKKysJX191OCBzcGVlZDsgLyogZW51bSB7c3MsIGRzLCBxc30gKi8KKysJaW50IHN0YXR1czI7CisrfTsKKysKKysjZGVmaW5lIFNORFJWX0hEU1BNX0lPQ1RMX0dFVF9QRUFLX1JNUyBcCisrCV9JT1IoJ0gnLCAweDQyLCBzdHJ1Y3QgaGRzcG1fcGVha19ybXMpCisrCisrLyogLS0tLS0tLS0tLS0tIENPTkZJRyBibG9jayBJT0NUTCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisrCisrc3RydWN0IGhkc3BtX2NvbmZpZyB7CisrCXVuc2lnbmVkIGNoYXIgcHJlZl9zeW5jX3JlZjsKKysJdW5zaWduZWQgY2hhciB3b3JkY2xvY2tfc3luY19jaGVjazsKKysJdW5zaWduZWQgY2hhciBtYWRpX3N5bmNfY2hlY2s7CisrCXVuc2lnbmVkIGludCBzeXN0ZW1fc2FtcGxlX3JhdGU7CisrCXVuc2lnbmVkIGludCBhdXRvc3luY19zYW1wbGVfcmF0ZTsKKysJdW5zaWduZWQgY2hhciBzeXN0ZW1fY2xvY2tfbW9kZTsKKysJdW5zaWduZWQgY2hhciBjbG9ja19zb3VyY2U7CisrCXVuc2lnbmVkIGNoYXIgYXV0b3N5bmNfcmVmOworKwl1bnNpZ25lZCBjaGFyIGxpbmVfb3V0OworKwl1bnNpZ25lZCBpbnQgcGFzc3RocnU7CisrCXVuc2lnbmVkIGludCBhbmFsb2dfb3V0OworK307CisrCisrI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfQ09ORklHIFwKKysJX0lPUignSCcsIDB4NDEsIHN0cnVjdCBoZHNwbV9jb25maWcpCisrCisrLyoKKysgKiBJZiB0aGVyZSdzIGEgVENPIChUaW1lQ29kZSBPcHRpb24pIGJvYXJkIGluc3RhbGxlZCwKKysgKiB0aGVyZSBhcmUgZnVydGhlciBvcHRpb25zIGFuZCBzdGF0dXMgZGF0YSBhdmFpbGFibGUuCisrICogVGhlIGhkc3BtX2x0YyBzdHJ1Y3R1cmUgY29udGFpbnMgdGhlIGN1cnJlbnQgU01QVEUKKysgKiB0aW1lY29kZSBhbmQgc29tZSBzdGF0dXMgaW5mb3JtYXRpb24gYW5kIGNhbiBiZQorKyAqIG9idGFpbmVkIHZpYSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfTFRDIG9yIGluIHRoZQorKyAqIGhkc3BtX3N0YXR1cyBzdHJ1Y3QuCisrICovCisrCisrZW51bSBoZHNwbV9sdGNfZm9ybWF0IHsKKysJZm9ybWF0X2ludmFsaWQsCisrCWZwc18yNCwKKysJZnBzXzI1LAorKwlmcHNfMjk5NywKKysJZnBzXzMwCisrfTsKKysKKytlbnVtIGhkc3BtX2x0Y19mcmFtZSB7CisrCWZyYW1lX2ludmFsaWQsCisrCWRyb3BfZnJhbWUsCisrCWZ1bGxfZnJhbWUKKyt9OworKworK2VudW0gaGRzcG1fbHRjX2lucHV0X2Zvcm1hdCB7CisrCW50c2MsCisrCXBhbCwKKysJbm9fdmlkZW8KKyt9OworKworK3N0cnVjdCBoZHNwbV9sdGMgeworKwl1bnNpZ25lZCBpbnQgbHRjOworKworKwllbnVtIGhkc3BtX2x0Y19mb3JtYXQgZm9ybWF0OworKwllbnVtIGhkc3BtX2x0Y19mcmFtZSBmcmFtZTsKKysJZW51bSBoZHNwbV9sdGNfaW5wdXRfZm9ybWF0IGlucHV0X2Zvcm1hdDsKKyt9OworKworKyNkZWZpbmUgU05EUlZfSERTUE1fSU9DVExfR0VUX0xUQyBfSU9SKCdIJywgMHg0Niwgc3RydWN0IGhkc3BtX2x0YykKKysKKysvKgorKyAqIFRoZSBzdGF0dXMgZGF0YSByZWZsZWN0cyB0aGUgZGV2aWNlJ3MgY3VycmVudCBzdGF0ZQorKyAqIGFzIGRldGVybWluZWQgYnkgdGhlIGNhcmQncyBjb25maWd1cmF0aW9uIGFuZAorKyAqIGNvbm5lY3Rpb24gc3RhdHVzLgorKyAqLworKworK2VudW0gaGRzcG1fc3luYyB7CisrCWhkc3BtX3N5bmNfbm9fbG9jayA9IDAsCisrCWhkc3BtX3N5bmNfbG9jayA9IDEsCisrCWhkc3BtX3N5bmNfc3luYyA9IDIKKyt9OworKworK2VudW0gaGRzcG1fbWFkaV9pbnB1dCB7CisrCWhkc3BtX2lucHV0X29wdGljYWwgPSAwLAorKwloZHNwbV9pbnB1dF9jb2F4ID0gMQorK307CisrCisrZW51bSBoZHNwbV9tYWRpX2NoYW5uZWxfZm9ybWF0IHsKKysJaGRzcG1fZm9ybWF0X2NoXzY0ID0gMCwKKysJaGRzcG1fZm9ybWF0X2NoXzU2ID0gMQorK307CisrCisrZW51bSBoZHNwbV9tYWRpX2ZyYW1lX2Zvcm1hdCB7CisrCWhkc3BtX2ZyYW1lXzQ4ID0gMCwKKysJaGRzcG1fZnJhbWVfOTYgPSAxCisrfTsKKysKKytlbnVtIGhkc3BtX3N5bmNzb3VyY2UgeworKwlzeW5jc291cmNlX3djID0gMCwKKysJc3luY3NvdXJjZV9tYWRpID0gMSwKKysJc3luY3NvdXJjZV90Y28gPSAyLAorKwlzeW5jc291cmNlX3N5bmMgPSAzLAorKwlzeW5jc291cmNlX25vbmUgPSA0CisrfTsKKysKKytzdHJ1Y3QgaGRzcG1fc3RhdHVzIHsKKysJX191OCBjYXJkX3R5cGU7IC8qIGVudW0gaGRzcG1faW9fdHlwZSAqLworKwllbnVtIGhkc3BtX3N5bmNzb3VyY2UgYXV0b3N5bmNfc291cmNlOworKworKwlfX3U2NCBjYXJkX2Nsb2NrOworKwlfX3UzMiBtYXN0ZXJfcGVyaW9kOworKworKwl1bmlvbiB7CisrCQlzdHJ1Y3QgeworKwkJCV9fdTggc3luY193YzsgLyogZW51bSBoZHNwbV9zeW5jICovCisrCQkJX191OCBzeW5jX21hZGk7IC8qIGVudW0gaGRzcG1fc3luYyAqLworKwkJCV9fdTggc3luY190Y287IC8qIGVudW0gaGRzcG1fc3luYyAqLworKwkJCV9fdTggc3luY19pbjsgLyogZW51bSBoZHNwbV9zeW5jICovCisrCQkJX191OCBtYWRpX2lucHV0OyAvKiBlbnVtIGhkc3BtX21hZGlfaW5wdXQgKi8KKysJCQlfX3U4IGNoYW5uZWxfZm9ybWF0OyAvKiBlbnVtIGhkc3BtX21hZGlfY2hhbm5lbF9mb3JtYXQgKi8KKysJCQlfX3U4IGZyYW1lX2Zvcm1hdDsgLyogZW51bSBoZHNwbV9tYWRpX2ZyYW1lX2Zvcm1hdCAqLworKwkJfSBtYWRpOworKwl9IGNhcmRfc3BlY2lmaWM7CisrfTsKKysKKysjZGVmaW5lIFNORFJWX0hEU1BNX0lPQ1RMX0dFVF9TVEFUVVMgXAorKwlfSU9SKCdIJywgMHg0Nywgc3RydWN0IGhkc3BtX3N0YXR1cykKKysKKysvKgorKyAqIEdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2FyZCBhbmQgaXRzIGFkZC1vbnMuCisrICovCisrCisrI2RlZmluZSBIRFNQTV9BRERPTl9UQ08gMQorKworK3N0cnVjdCBoZHNwbV92ZXJzaW9uIHsKKysJX191OCBjYXJkX3R5cGU7IC8qIGVudW0gaGRzcG1faW9fdHlwZSAqLworKwljaGFyIGNhcmRuYW1lWzIwXTsKKysJdW5zaWduZWQgaW50IHNlcmlhbDsKKysJdW5zaWduZWQgc2hvcnQgZmlybXdhcmVfcmV2OworKwlpbnQgYWRkb25zOworK307CisrCisrI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfVkVSU0lPTiBfSU9SKCdIJywgMHg0OCwgc3RydWN0IGhkc3BtX3ZlcnNpb24pCisrCisrLyogLS0tLS0tLS0tLS0tLSBnZXQgTWF0cml4IE1peGVyIElPQ1RMIC0tLS0tLS0tLS0tLS0tLSAqLworKworKy8qIE1BREkgbWl4ZXI6IDY0aW5wdXRzKzY0cGxheWJhY2sgaW4gNjRvdXRwdXRzID0gODE5MiA9PiAqNEJ5dGUgPQorKyAqIDMyNzY4IEJ5dGVzCisrICovCisrCisrLyogb3JnYW5pc2F0aW9uIGlzIDY0IGNoYW5uZWxmYWRlciBpbiBhIGNvbnRpbnVvdXMgbWVtb3J5IGJsb2NrICovCisrLyogZXF1aXZhbGVudCB0byBoYXJkd2FyZSBkZWZpbml0aW9uLCBtYXliZSBmb3IgZnV0dXJlIGZlYXR1cmUgb2YgbW1hcCBvZgorKyAqIHRoZW0KKysgKi8KKysvKiBlYWNoIG9mIDY0IG91dHB1dHMgaGFzIDY0IGluZmFkZXIgYW5kIDY0IG91dGZhZGVyOgorKyAgIElucyB0byBPdXRzIG1peGVyW291dF0uaW5baW5dLCBPdXRzdHJlYW1zIHRvIE91dHMgbWl4ZXJbb3V0XS5wYltwYl0gKi8KKysKKysjZGVmaW5lIEhEU1BNX01JWEVSX0NIQU5ORUxTIEhEU1BNX01BWF9DSEFOTkVMUworKworK3N0cnVjdCBoZHNwbV9jaGFubmVsZmFkZXIgeworKwl1bnNpZ25lZCBpbnQgaW5bSERTUE1fTUlYRVJfQ0hBTk5FTFNdOworKwl1bnNpZ25lZCBpbnQgcGJbSERTUE1fTUlYRVJfQ0hBTk5FTFNdOworK307CisrCisrc3RydWN0IGhkc3BtX21peGVyIHsKKysJc3RydWN0IGhkc3BtX2NoYW5uZWxmYWRlciBjaFtIRFNQTV9NSVhFUl9DSEFOTkVMU107CisrfTsKKysKKytzdHJ1Y3QgaGRzcG1fbWl4ZXJfaW9jdGwgeworKwlzdHJ1Y3QgaGRzcG1fbWl4ZXIgKm1peGVyOworK307CisrCisrLyogdXNlIGluZGlyZWN0IGFjY2VzcyBkdWUgdG8gdGhlIGxpbWl0IG9mIGlvY3RsIGJpdCBzaXplICovCisrI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfTUlYRVIgX0lPUignSCcsIDB4NDQsIHN0cnVjdCBoZHNwbV9taXhlcl9pb2N0bCkKKysKKysvKiB0eXBlZGVmcyBmb3IgY29tcGF0aWJpbGl0eSB0byB1c2VyLXNwYWNlICovCisrdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fcGVha19ybXMgaGRzcG1fcGVha19ybXNfdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwbV9jb25maWdfaW5mbyBoZHNwbV9jb25maWdfaW5mb190OworK3R5cGVkZWYgc3RydWN0IGhkc3BtX3ZlcnNpb24gaGRzcG1fdmVyc2lvbl90OworK3R5cGVkZWYgc3RydWN0IGhkc3BtX2NoYW5uZWxmYWRlciBzbmRfaGRzcG1fY2hhbm5lbGZhZGVyX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fbWl4ZXIgaGRzcG1fbWl4ZXJfdDsKKysKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvc2IxNl9jc3AuaCBiL2luY2x1ZGUvc291bmQvdWFwaS9zYjE2X2NzcC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLmU2NDg1MTQ4CistLS0gL2Rldi9udWxsCisrKysgYi9pbmNsdWRlL3NvdW5kL3VhcGkvc2IxNl9jc3AuaAorQEAgLTAsMCArMSwxMjMgQEAKKysvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKysvKgorKyAqICBDb3B5cmlnaHQgKGMpIDE5OTkgYnkgVXJvcyBCaXpqYWsgPHVyb3NAa3NzLWxva2Euc2k+CisrICogICAgICAgICAgICAgICAgICAgICAgICBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+CisrICoKKysgKiAgU0IxNkFTUC9BV0UzMiBDU1AgY29udHJvbAorKyAqCisrICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAKKysgKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgKiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICogICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyBVU0EKKysgKgorKyAqLworKyNpZm5kZWYgX1VBUElfX1NPVU5EX1NCMTZfQ1NQX0gKKysjZGVmaW5lIF9VQVBJX19TT1VORF9TQjE2X0NTUF9ICisrCisrCisrLyogQ1NQIG1vZGVzICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfTU9ERV9OT05FCQkweDAwCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfTU9ERV9EU1BfUkVBRAkweDAxCS8qIFJlY29yZCBmcm9tIERTUCAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX01PREVfRFNQX1dSSVRFCTB4MDIJLyogUGxheSB0byBEU1AgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9NT0RFX1FTT1VORAkJMHgwNAkvKiBRU291bmQgKi8KKysKKysvKiBDU1AgbG9hZCBmbGFncyAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX0xPQURfRlJPTVVTRVIJMHgwMQorKyNkZWZpbmUgU05EUlZfU0JfQ1NQX0xPQURfSU5JVEJMT0NLCTB4MDIKKysKKysvKiBDU1Agc2FtcGxlIHdpZHRoICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfU0FNUExFXzhCSVQJCTB4MDEKKysjZGVmaW5lIFNORFJWX1NCX0NTUF9TQU1QTEVfMTZCSVQJCTB4MDIKKysKKysvKiBDU1AgY2hhbm5lbHMgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9NT05PCQkJMHgwMQorKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1NURVJFTwkJMHgwMgorKworKy8qIENTUCByYXRlcyAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1JBVEVfODAwMAkJMHgwMQorKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1JBVEVfMTEwMjUJCTB4MDIKKysjZGVmaW5lIFNORFJWX1NCX0NTUF9SQVRFXzIyMDUwCQkweDA0CisrI2RlZmluZSBTTkRSVl9TQl9DU1BfUkFURV80NDEwMAkJMHgwOAorKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1JBVEVfQUxMCQkweDBmCisrCisrLyogQ1NQIHJ1bm5pbmcgc3RhdGUgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9TVF9JRExFCQkweDAwCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfU1RfTE9BREVECQkweDAxCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfU1RfUlVOTklORwkJMHgwMgorKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1NUX1BBVVNFRAkJMHgwNAorKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1NUX0FVVE8JCTB4MDgKKysjZGVmaW5lIFNORFJWX1NCX0NTUF9TVF9RU09VTkQJCTB4MTAKKysKKysvKiBtYXhpbXVtIFFTb3VuZCB2YWx1ZSAoMTgwIGRlZ3JlZXMgcmlnaHQpICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfUVNPVU5EX01BWF9SSUdIVAkweDIwCisrCisrLyogbWF4aW11bSBtaWNyb2NvZGUgUklGRiBmaWxlIHNpemUgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9NQVhfTUlDUk9DT0RFX0ZJTEVfU0laRQkweDMwMDAKKysKKysvKiBtaWNyb2NvZGUgaGVhZGVyICovCisrc3RydWN0IHNuZF9zYl9jc3BfbWNfaGVhZGVyIHsKKysJY2hhciBjb2RlY19uYW1lWzE2XTsJCS8qIGlkIG5hbWUgb2YgY29kZWMgKi8KKysJdW5zaWduZWQgc2hvcnQgZnVuY19yZXE7CS8qIHJlcXVlc3RlZCBmdW5jdGlvbiAqLworK307CisrCisrLyogbWljcm9jb2RlIHRvIGJlIGxvYWRlZCAqLworK3N0cnVjdCBzbmRfc2JfY3NwX21pY3JvY29kZSB7CisrCXN0cnVjdCBzbmRfc2JfY3NwX21jX2hlYWRlciBpbmZvOworKwl1bnNpZ25lZCBjaGFyIGRhdGFbU05EUlZfU0JfQ1NQX01BWF9NSUNST0NPREVfRklMRV9TSVpFXTsKKyt9OworKworKy8qIHN0YXJ0IENTUCB3aXRoIHNhbXBsZV93aWR0aCBpbiBtb25vL3N0ZXJlbyAqLworK3N0cnVjdCBzbmRfc2JfY3NwX3N0YXJ0IHsKKysJaW50IHNhbXBsZV93aWR0aDsJLyogc2FtcGxlIHdpZHRoLCBsb29rIGFib3ZlICovCisrCWludCBjaGFubmVsczsJCS8qIGNoYW5uZWxzLCBsb29rIGFib3ZlICovCisrfTsKKysKKysvKiBDU1AgaW5mb3JtYXRpb24gKi8KKytzdHJ1Y3Qgc25kX3NiX2NzcF9pbmZvIHsKKysJY2hhciBjb2RlY19uYW1lWzE2XTsJCS8qIGlkIG5hbWUgb2YgY29kZWMgKi8KKysJdW5zaWduZWQgc2hvcnQgZnVuY19ucjsJCS8qIGZ1bmN0aW9uIG51bWJlciAqLworKwl1bnNpZ25lZCBpbnQgYWNjX2Zvcm1hdDsJLyogYWNjZXB0ZWQgUENNIGZvcm1hdHMgKi8KKysJdW5zaWduZWQgc2hvcnQgYWNjX2NoYW5uZWxzOwkvKiBhY2NlcHRlZCBjaGFubmVscyAqLworKwl1bnNpZ25lZCBzaG9ydCBhY2Nfd2lkdGg7CS8qIGFjY2VwdGVkIHNhbXBsZSB3aWR0aCAqLworKwl1bnNpZ25lZCBzaG9ydCBhY2NfcmF0ZXM7CS8qIGFjY2VwdGVkIHNhbXBsZSByYXRlcyAqLworKwl1bnNpZ25lZCBzaG9ydCBjc3BfbW9kZTsJLyogQ1NQIG1vZGUsIHNlZSBhYm92ZSAqLworKwl1bnNpZ25lZCBzaG9ydCBydW5fY2hhbm5lbHM7CS8qIGN1cnJlbnQgY2hhbm5lbHMgICovCisrCXVuc2lnbmVkIHNob3J0IHJ1bl93aWR0aDsJLyogY3VycmVudCBzYW1wbGUgd2lkdGggKi8KKysJdW5zaWduZWQgc2hvcnQgdmVyc2lvbjsJCS8qIHZlcnNpb24gaWQ6IDB4MTAgLSAweDFmICovCisrCXVuc2lnbmVkIHNob3J0IHN0YXRlOwkJLyogc3RhdGUgYml0cyAqLworK307CisrCisrLyogSFdERVAgY29udHJvbHMgKi8KKysvKiBnZXQgQ1NQIGluZm9ybWF0aW9uICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfSU9DVExfSU5GTwkJX0lPUignSCcsIDB4MTAsIHN0cnVjdCBzbmRfc2JfY3NwX2luZm8pCisrLyogbG9hZCBtaWNyb2NvZGUgdG8gQ1NQICovCisrLyogTk9URTogc3RydWN0IHNuZF9zYl9jc3BfbWljcm9jb2RlIG92ZXJmbG93cyB0aGUgbWF4IHNpemUgKDEzIGJpdHMpCisrICogZGVmaW5lZCBmb3Igc29tZSBhcmNoaXRlY3R1cmVzIGxpa2UgTUlQUywgYW5kIGl0IGxlYWRzIHRvIGJ1aWxkIGVycm9ycy4KKysgKiAoeDg2IGFuZCBjbyBoYXZlIDE0LWJpdCBzaXplLCB0aHVzIGl0J3MgdmFsaWQsIHRob3VnaC4pCisrICogQXMgYSB3b3JrYXJvdW5kIGZvciBza2lwcGluZyB0aGUgc2l6ZS1saW1pdCBjaGVjaywgaGVyZSB3ZSBkb24ndCB1c2UgdGhlCisrICogbm9ybWFsIF9JT1coKSBtYWNybyBidXQgX0lPQygpIHdpdGggdGhlIG1hbnVhbCBhcmd1bWVudC4KKysgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9JT0NUTF9MT0FEX0NPREUJXAorKwlfSU9DKF9JT0NfV1JJVEUsICdIJywgMHgxMSwgc2l6ZW9mKHN0cnVjdCBzbmRfc2JfY3NwX21pY3JvY29kZSkpCisrLyogdW5sb2FkIG1pY3JvY29kZSBmcm9tIENTUCAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX0lPQ1RMX1VOTE9BRF9DT0RFCV9JTygnSCcsIDB4MTIpCisrLyogc3RhcnQgQ1NQICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfSU9DVExfU1RBUlQJCV9JT1coJ0gnLCAweDEzLCBzdHJ1Y3Qgc25kX3NiX2NzcF9zdGFydCkKKysvKiBzdG9wIENTUCAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX0lPQ1RMX1NUT1AJCV9JTygnSCcsIDB4MTQpCisrLyogcGF1c2UgQ1NQIGFuZCBETUEgdHJhbnNmZXIgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9JT0NUTF9QQVVTRQkJX0lPKCdIJywgMHgxNSkKKysvKiByZXN0YXJ0IENTUCBhbmQgRE1BIHRyYW5zZmVyICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfSU9DVExfUkVTVEFSVAlfSU8oJ0gnLCAweDE2KQorKworKworKyNlbmRpZiAvKiBfVUFQSV9fU09VTkRfU0IxNl9DU1BfSCAqLworZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvdWFwaS9zc2NhcGVfaW9jdGwuaCBiL2luY2x1ZGUvc291bmQvdWFwaS9zc2NhcGVfaW9jdGwuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi5jNjY1M2ViZgorLS0tIC9kZXYvbnVsbAorKysrIGIvaW5jbHVkZS9zb3VuZC91YXBpL3NzY2FwZV9pb2N0bC5oCitAQCAtMCwwICsxLDIxIEBACisrI2lmbmRlZiBTU0NBUEVfSU9DVExfSAorKyNkZWZpbmUgU1NDQVBFX0lPQ1RMX0gKKysKKysKKytzdHJ1Y3Qgc3NjYXBlX2Jvb3RibG9jaworK3sKKysgIHVuc2lnbmVkIGNoYXIgY29kZVsyNTZdOworKyAgdW5zaWduZWQgdmVyc2lvbjsKKyt9OworKworKyNkZWZpbmUgU1NDQVBFX01JQ1JPQ09ERV9TSVpFICA2NTUzNgorKworK3N0cnVjdCBzc2NhcGVfbWljcm9jb2RlCisreworKyAgdW5zaWduZWQgY2hhciAqY29kZTsKKyt9OworKworKyNkZWZpbmUgU05EX1NTQ0FQRV9MT0FEX0JPT1RCICBfSU9XUignUCcsIDEwMCwgc3RydWN0IHNzY2FwZV9ib290YmxvY2spCisrI2RlZmluZSBTTkRfU1NDQVBFX0xPQURfTUNPREUgIF9JT1cgKCdQJywgMTAxLCBzdHJ1Y3Qgc3NjYXBlX21pY3JvY29kZSkKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvdGx2LmggYi9pbmNsdWRlL3NvdW5kL3VhcGkvdGx2LmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uN2Q2ZDY1ZjYKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS90bHYuaAorQEAgLTAsMCArMSwxMTcgQEAKKysvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKysvKgorKyAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKi8KKysKKysjaWZuZGVmIF9fVUFQSV9TT1VORF9UTFZfSAorKyNkZWZpbmUgX19VQVBJX1NPVU5EX1RMVl9ICisrCisrI2RlZmluZSBTTkRSVl9DVExfVExWVF9DT05UQUlORVIgMAkvKiBvbmUgbGV2ZWwgZG93biAtIGdyb3VwIG9mIFRMVnMgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZUX0RCX1NDQUxFCTEgICAgICAgLyogZEIgc2NhbGUgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZUX0RCX0xJTkVBUiAyCS8qIGxpbmVhciB2b2x1bWUgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZUX0RCX1JBTkdFIDMJLyogZEIgcmFuZ2UgY29udGFpbmVyICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWVF9EQl9NSU5NQVggNAkvKiBkQiBzY2FsZSB3aXRoIG1pbi9tYXggKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZUX0RCX01JTk1BWF9NVVRFIDUJLyogZEIgc2NhbGUgd2l0aCBtaW4vbWF4IHdpdGggbXV0ZSAqLworKworKy8qCisrICogY2hhbm5lbC1tYXBwaW5nIFRMViBpdGVtcworKyAqICBUTFYgbGVuZ3RoIG11c3QgbWF0Y2ggd2l0aCBudW1fY2hhbm5lbHMKKysgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZUX0NITUFQX0ZJWEVECTB4MTAxCS8qIGZpeGVkIGNoYW5uZWwgcG9zaXRpb24gKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZUX0NITUFQX1ZBUgkweDEwMgkvKiBjaGFubmVscyBmcmVlbHkgc3dhcHBhYmxlICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWVF9DSE1BUF9QQUlSRUQJMHgxMDMJLyogcGFpci13aXNlIHN3YXBwYWJsZSAqLworKworKy8qCisrICogVExWIHN0cnVjdHVyZSBpcyByaWdodCBiZWhpbmQgdGhlIHN0cnVjdCBzbmRfY3RsX3RsdjoKKysgKiAgIHVuc2lnbmVkIGludCB0eXBlICAJLSBzZWUgU05EUlZfQ1RMX1RMVlRfKgorKyAqICAgdW5zaWduZWQgaW50IGxlbmd0aAorKyAqICAgLi4uLiBkYXRhIGFsaWduZWQgdG8gc2l6ZW9mKHVuc2lnbmVkIGludCksIHVzZQorKyAqICAgICAgICBibG9ja19sZW5ndGggPSAobGVuZ3RoICsgKHNpemVvZih1bnNpZ25lZCBpbnQpIC0gMSkpICYKKysgKiAgICAgICAgICAgICAgICAgICAgICAgfihzaXplb2YodW5zaWduZWQgaW50KSAtIDEpKSAuLi4uCisrICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWRF9JVEVNKHR5cGUsIC4uLikgXAorKwkodHlwZSksIFNORFJWX0NUTF9UTFZEX0xFTkdUSChfX1ZBX0FSR1NfXyksIF9fVkFfQVJHU19fCisrI2RlZmluZSBTTkRSVl9DVExfVExWRF9MRU5HVEgoLi4uKSBcCisrCSgodW5zaWduZWQgaW50KXNpemVvZigoY29uc3QgdW5zaWduZWQgaW50W10pIHsgX19WQV9BUkdTX18gfSkpCisrCisrLyogQWNjZXNzb3Igb2Zmc2V0cyBmb3IgVExWIGRhdGEgaXRlbXMgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZPX1RZUEUJCTAKKysjZGVmaW5lIFNORFJWX0NUTF9UTFZPX0xFTgkJMQorKworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfQ09OVEFJTkVSX0lURU0oLi4uKSBcCisrCVNORFJWX0NUTF9UTFZEX0lURU0oU05EUlZfQ1RMX1RMVlRfQ09OVEFJTkVSLCBfX1ZBX0FSR1NfXykKKysjZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RFQ0xBUkVfQ09OVEFJTkVSKG5hbWUsIC4uLikgXAorKwl1bnNpZ25lZCBpbnQgbmFtZVtdID0geyBcCisrCQlTTkRSVl9DVExfVExWRF9DT05UQUlORVJfSVRFTShfX1ZBX0FSR1NfXykgXAorKwl9CisrCisrI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9NQVNLCTB4ZmZmZgorKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfU0NBTEVfTVVURQkweDEwMDAwCisrI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9JVEVNKG1pbiwgc3RlcCwgbXV0ZSkgXAorKwlTTkRSVl9DVExfVExWRF9JVEVNKFNORFJWX0NUTF9UTFZUX0RCX1NDQUxFLCBcCisrCQkJICAgIChtaW4pLCBcCisrCQkJICAgICgoc3RlcCkgJiBTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9NQVNLKSB8IFwKKysJCQkgICAgICgobXV0ZSkgPyBTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9NVVRFIDogMCkpCisrI2RlZmluZSBTTkRSVl9DVExfVExWRF9ERUNMQVJFX0RCX1NDQUxFKG5hbWUsIG1pbiwgc3RlcCwgbXV0ZSkgXAorKwl1bnNpZ25lZCBpbnQgbmFtZVtdID0geyBcCisrCQlTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9JVEVNKG1pbiwgc3RlcCwgbXV0ZSkgXAorKwl9CisrCisrLyogQWNjZXNzb3Igb2Zmc2V0cyBmb3IgbWluLCBtdXRlIGFuZCBzdGVwIGl0ZW1zIGluIGRCIHNjYWxlIHR5cGUgVExWICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWT19EQl9TQ0FMRV9NSU4JCTIKKysjZGVmaW5lIFNORFJWX0NUTF9UTFZPX0RCX1NDQUxFX01VVEVfQU5EX1NURVAJMworKworKy8qIGRCIHNjYWxlIHNwZWNpZmllZCB3aXRoIG1pbi9tYXggdmFsdWVzIGluc3RlYWQgb2Ygc3RlcCAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfTUlOTUFYX0lURU0obWluX2RCLCBtYXhfZEIpIFwKKysJU05EUlZfQ1RMX1RMVkRfSVRFTShTTkRSVl9DVExfVExWVF9EQl9NSU5NQVgsIChtaW5fZEIpLCAobWF4X2RCKSkKKysjZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RCX01JTk1BWF9NVVRFX0lURU0obWluX2RCLCBtYXhfZEIpIFwKKysJU05EUlZfQ1RMX1RMVkRfSVRFTShTTkRSVl9DVExfVExWVF9EQl9NSU5NQVhfTVVURSwgKG1pbl9kQiksIChtYXhfZEIpKQorKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREVDTEFSRV9EQl9NSU5NQVgobmFtZSwgbWluX2RCLCBtYXhfZEIpIFwKKysJdW5zaWduZWQgaW50IG5hbWVbXSA9IHsgXAorKwkJU05EUlZfQ1RMX1RMVkRfREJfTUlOTUFYX0lURU0obWluX2RCLCBtYXhfZEIpIFwKKysJfQorKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREVDTEFSRV9EQl9NSU5NQVhfTVVURShuYW1lLCBtaW5fZEIsIG1heF9kQikgXAorKwl1bnNpZ25lZCBpbnQgbmFtZVtdID0geyBcCisrCQlTTkRSVl9DVExfVExWRF9EQl9NSU5NQVhfTVVURV9JVEVNKG1pbl9kQiwgbWF4X2RCKSBcCisrCX0KKysKKysvKiBBY2Nlc3NvciBvZmZzZXRzIGZvciBtaW4sIG1heCBpdGVtcyBpbiBkYi1taW5tYXggdHlwZXMgb2YgVExWLiAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVk9fREJfTUlOTUFYX01JTgkyCisrI2RlZmluZSBTTkRSVl9DVExfVExWT19EQl9NSU5NQVhfTUFYCTMKKysKKysvKiBsaW5lYXIgdm9sdW1lIGJldHdlZW4gbWluX2RCIGFuZCBtYXhfZEIgKC4wMWRCIHVuaXQpICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9MSU5FQVJfSVRFTShtaW5fZEIsIG1heF9kQikgXAorKwlTTkRSVl9DVExfVExWRF9JVEVNKFNORFJWX0NUTF9UTFZUX0RCX0xJTkVBUiwgKG1pbl9kQiksIChtYXhfZEIpKQorKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREVDTEFSRV9EQl9MSU5FQVIobmFtZSwgbWluX2RCLCBtYXhfZEIpIFwKKysJdW5zaWduZWQgaW50IG5hbWVbXSA9IHsgXAorKwkJU05EUlZfQ1RMX1RMVkRfREJfTElORUFSX0lURU0obWluX2RCLCBtYXhfZEIpIFwKKysJfQorKworKy8qIEFjY2Vzc29yIG9mZnNldHMgZm9yIG1pbiwgbWF4IGl0ZW1zIGluIGRiLWxpbmVhciB0eXBlIG9mIFRMVi4gKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZPX0RCX0xJTkVBUl9NSU4JMgorKyNkZWZpbmUgU05EUlZfQ1RMX1RMVk9fREJfTElORUFSX01BWAkzCisrCisrLyogZEIgcmFuZ2UgY29udGFpbmVyOgorKyAqIEl0ZW1zIGluIGRCIHJhbmdlIGNvbnRhaW5lciBtdXN0IGJlIG9yZGVyZWQgYnkgdGhlaXIgdmFsdWVzIGFuZCBieSB0aGVpcgorKyAqIGRCIHZhbHVlcy4gVGhpcyBpbXBsaWVzIHRoYXQgbGFyZ2VyIHZhbHVlcyBtdXN0IGNvcnJlc3BvbmQgd2l0aCBsYXJnZXIKKysgKiBkQiB2YWx1ZXMgKHdoaWNoIGlzIGFsc28gcmVxdWlyZWQgZm9yIGFsbCBvdGhlciBtaXhlciBjb250cm9scykuCisrICovCisrLyogRWFjaCBpdGVtIGlzOiA8bWluPiA8bWF4PiA8VExWPiAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfUkFOR0VfSVRFTSguLi4pIFwKKysJU05EUlZfQ1RMX1RMVkRfSVRFTShTTkRSVl9DVExfVExWVF9EQl9SQU5HRSwgX19WQV9BUkdTX18pCisrI2RlZmluZSBTTkRSVl9DVExfVExWRF9ERUNMQVJFX0RCX1JBTkdFKG5hbWUsIC4uLikgXAorKwl1bnNpZ25lZCBpbnQgbmFtZVtdID0geyBcCisrCQlTTkRSVl9DVExfVExWRF9EQl9SQU5HRV9JVEVNKF9fVkFfQVJHU19fKSBcCisrCX0KKysKKysjZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RCX0dBSU5fTVVURQktOTk5OTk5OQorKworKyNlbmRpZgorZGlmZiAtLWdpdCBhL3NyYy90b3BvbG9neS90cGxnX2xvY2FsLmggYi9zcmMvdG9wb2xvZ3kvdHBsZ19sb2NhbC5oCitpbmRleCAxMWVmY2U2ZC4uMTAxNDkxYTQgMTAwNjQ0CistLS0gYS9zcmMvdG9wb2xvZ3kvdHBsZ19sb2NhbC5oCisrKysgYi9zcmMvdG9wb2xvZ3kvdHBsZ19sb2NhbC5oCitAQCAtMTgsOCArMTgsNyBAQAorICNpbmNsdWRlICJsaXN0LmgiCisgI2luY2x1ZGUgInRvcG9sb2d5LmgiCisgCistI2RlZmluZSBfX3BhY2tlZCBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSkKKy0KKysjaW5jbHVkZSA8c291bmQvdHlwZV9jb21wYXQuaD4KKyAjaW5jbHVkZSA8c291bmQvYXNvdW5kLmg+CisgI2luY2x1ZGUgPHNvdW5kL2Fzb2MuaD4KKyAjaW5jbHVkZSA8c291bmQvdGx2Lmg+CistLSAKKzIuMjAuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMS1jb25maWd1cmUuYWMtcmVtb3ZlLWFuLXVubmVjZXNzYXJ5LWxpYnRvb2wtZml4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDEtY29uZmlndXJlLmFjLXJlbW92ZS1hbi11bm5lY2Vzc2FyeS1saWJ0b29sLWZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGI0OTM0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDEtY29uZmlndXJlLmFjLXJlbW92ZS1hbi11bm5lY2Vzc2FyeS1saWJ0b29sLWZpeC5wYXRjaApAQCAtMCwwICsxLDUwIEBACitGcm9tIDAxY2Q4Y2I2ZDU5NGQ3YTEyYzY3ZDIxZDY4OWViZTBlMzQ3NDY5YzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+CitEYXRlOiBGcmksIDIwIERlYyAyMDE5IDA5OjI2OjEyICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogcmVtb3ZlIGFuIHVubmVjZXNzYXJ5IGxpYnRvb2wgZml4CisKK1RoaXMgY29kZSB3YXMgYWRkZWQgaW4gY29tbWl0IDc1ZDM5M2E1NjNlZmI1NzhjNzkzNjRhMjc3MDg3YzYzMjYyNjdmNTIKK3dpdGhvdXQgZXhwbGFpbmluZyB3aHkuIEkgYXNzdW1lIGl0IHdhcyBhIG1pc3Rha2UsIHNpbmNlIGl0IGxvb2tzIGxpa2UKK3RoZSBsaWJ0b29sIHByb2JsZW0gc2hvdWxkIGhhdmUgZ29uZSBhd2F5IGEgbG9uZyB0aW1lIGFnby4gVGhlIHJlZmVyZW5jZWQKK3dpa2kgcGFnZSBodHRwczovL3dpa2kuZGViaWFuLm9yZy9ScGF0aElzc3VlIHNheXM6CisKKyAgICBTaW5jZSBsaWJ0b29sIDEuNS4yIChyZWxlYXNlZCAyMDA0LTAxLTI1KSwgb24gTGludXggbGlidG9vbCBubworICAgIGxvbmdlciBzZXRzIFJQQVRIIGZvciBhbnkgZGlyZWN0b3JpZXMgaW4gdGhlIGR5bmFtaWMgbGlua2VyIHNlYXJjaAorICAgIHBhdGgsIHNvIHRoaXMgc2hvdWxkIG5vIGxvbmdlciBiZSBhbiBpc3N1ZSB1bmxlc3MgdXBzdHJlYW0gdXNlZCBhCisgICAgcmVhbGx5IG9sZCB2ZXJzaW9uIG9mIGxpYnRvb2wgd2hlbiBjcmVhdGluZyB0aGVpciBkaXN0cmlidXRpb24KKyAgICB0YXJiYWxsLgorCitUaGlzIGNvZGUgY2F1c2VkIHByb2JsZW1zIGluIE9wZW5FbWJlZGRlZCwgd2hlcmUgdGhlIGxpYnRvb2wgc2NyaXB0IGlzCituYW1lZCAieDg2XzY0LW9lLWxpbnV4LWxpYnRvb2wiIG9yIHNpbWlsYXIgcmF0aGVyIHRoYW4ganVzdCAibGlidG9vbCIsCitzbyB0aGUgc2VkIGNvbW1hbmQgZmFpbGVkIHdpdGggYSBmaWxlIG5vdCBmb3VuZCBlcnJvci4gUmF0aGVyIHRoYW4KK2FkYXB0aW5nIHRoZSBjb2RlIHRvIE9wZW5FbWJlZGRlZCdzIHBlY3VsaWFyaXRpZXMsIGl0IHNlZW1zIGJlc3QgdG8ganVzdAorcmVtb3ZlIHRoZSB1bm5lY2Vzc2FyeSBjb2RlIGFsdG9nZXRoZXIuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vYWxzYS1wcm9qZWN0L2Fsc2EtbGliL3B1bGwvMTldCitTaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+CistLS0KKyBjb25maWd1cmUuYWMgfCAxMSAtLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMTE5ZWY2MDAuLjIyYTRhODg1IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC03NjQsMTQgKzc2NCwzIEBAIHRlc3QgIiRidWlsZF9zZXEiID0gInllcyIgJiYgZWNobyAiI2luY2x1ZGUgPGFsc2Evc2VxLmg+IiA+PiBpbmNsdWRlL2Fzb3VuZGxpYi5oCisgdGVzdCAiJGJ1aWxkX3NlcSIgPSAieWVzIiAmJiBlY2hvICIjaW5jbHVkZSA8YWxzYS9zZXFtaWQuaD4iID4+IGluY2x1ZGUvYXNvdW5kbGliLmgKKyB0ZXN0ICIkYnVpbGRfc2VxIiA9ICJ5ZXMiICYmIGVjaG8gIiNpbmNsdWRlIDxhbHNhL3NlcV9taWRpX2V2ZW50Lmg+IiA+PiBpbmNsdWRlL2Fzb3VuZGxpYi5oCisgY2F0ICIkc3JjZGlyIi9pbmNsdWRlL2Fzb3VuZGxpYi10YWlsLmggPj4gaW5jbHVkZS9hc291bmRsaWIuaAorLQorLWRubCBUYWtlbiBmcm9tIGh0dHBzOi8vd2lraS5kZWJpYW4ub3JnL1JwYXRoSXNzdWUKKy1jYXNlICRob3N0IGluCistICAgKi0qLWxpbnV4LWdudSkKKy0gICBBQ19NU0dfUkVTVUxUKFtGaXhpbmcgbGlidG9vbCBmb3IgLXJwYXRoIHByb2JsZW1zLl0pCistICAgc2VkIDwgbGlidG9vbCA+IGxpYnRvb2wtMiBcCistICAgICAncy9eaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYy4qJCcvJ2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9IiAtRF9fTElCVE9PTF9JU19BX0ZPT0xfXyAiLycKKy0gICBtdiBsaWJ0b29sLTIgbGlidG9vbAorLSAgIGNobW9kIDc1NSBsaWJ0b29sCistIDs7CistZXNhYworLS0gCisyLjIwLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDEtdWFwaS1Nb3ZlLXR5cGVkZWZzLWZyb20tdWFwaS10by1zb3VuZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLXVhcGktTW92ZS10eXBlZGVmcy1mcm9tLXVhcGktdG8tc291bmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM1YTJjOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLXVhcGktTW92ZS10eXBlZGVmcy1mcm9tLXVhcGktdG8tc291bmQucGF0Y2gKQEAgLTAsMCArMSwxMzcgQEAKK0Zyb20gNTk3OTJmNDY3YjM4ZDZhNGM0ZGZmZGIzMDUyOGY3ZmIwM2QyM2Q5NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRha2FzaGkgSXdhaSA8dGl3YWlAc3VzZS5kZT4KK0RhdGU6IEZyaSwgMjAgRGVjIDIwMTkgMTc6MTI6MzcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gdWFwaTogTW92ZSB0eXBlZGVmcyBmcm9tIHVhcGkgdG8gc291bmQvKgorCitGb3Iga2VlcGluZyB1YXBpLyouaCBjbGVhbmVyLgorCitTaWduZWQtb2ZmLWJ5OiBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorLS0tCisgaW5jbHVkZS9zb3VuZC9lbXUxMGsxLmggICAgICB8ICA5ICsrKysrKysrKworIGluY2x1ZGUvc291bmQvaGRzcC5oICAgICAgICAgfCAxMCArKysrKysrKysrCisgaW5jbHVkZS9zb3VuZC9oZHNwbS5oICAgICAgICB8ICA4ICsrKysrKysrCisgaW5jbHVkZS9zb3VuZC9zYjE2X2NzcC5oICAgICB8ICA0ICsrKysKKyBpbmNsdWRlL3NvdW5kL3VhcGkvZW11MTBrMS5oIHwgMTAgLS0tLS0tLS0tLQorIGluY2x1ZGUvc291bmQvdWFwaS9oZHNwLmggICAgfCAgOSAtLS0tLS0tLS0KKyBpbmNsdWRlL3NvdW5kL3VhcGkvaGRzcG0uaCAgIHwgIDggLS0tLS0tLS0KKyA3IGZpbGVzIGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9lbXUxMGsxLmggYi9pbmNsdWRlL3NvdW5kL2VtdTEwazEuaAoraW5kZXggZjA2ZWNlZTUuLjA4MzJmOTViIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC9lbXUxMGsxLmgKKysrKyBiL2luY2x1ZGUvc291bmQvZW11MTBrMS5oCitAQCAtMSwyICsxLDExIEBACisgI2luY2x1ZGUgPGFsc2Evc291bmQvdHlwZV9jb21wYXQuaD4KKyAjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL2VtdTEwazEuaD4KKysjaWZuZGVmIF9fZW11MTBrMV90eXBlX2RlZmluZWQKKysjZGVmaW5lIF9fZW11MTBrMV90eXBlX2RlZmluZWQKKyt0eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfaW5mbyBlbXUxMGsxX2Z4ODAxMF9pbmZvX3Q7CisrdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvbnRyb2xfZ3ByIGVtdTEwazFfZng4MDEwX2NvbnRyb2xfZ3ByX3Q7CisrdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvZGUgZW11MTBrMV9meDgwMTBfY29kZV90OworK3R5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF90cmFtIGVtdTEwazFfZng4MDEwX3RyYW1fdDsKKyt0eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfcGNtX3JlYyBlbXUxMGsxX2Z4ODAxMF9wY21fdDsKKyt0eXBlZGVmIHN0cnVjdCBlbXUxMGsxX2N0bF9lbGVtX2lkIGVtdTEwazFfY3RsX2VsZW1faWRfdDsKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL2hkc3AuaCBiL2luY2x1ZGUvc291bmQvaGRzcC5oCitpbmRleCA3OGZiNzQ1Yi4uZThmOTMxNTYgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL2hkc3AuaAorKysrIGIvaW5jbHVkZS9zb3VuZC9oZHNwLmgKK0BAIC0xLDIgKzEsMTIgQEAKKyAjaW5jbHVkZSA8YWxzYS9zb3VuZC90eXBlX2NvbXBhdC5oPgorICNpbmNsdWRlIDxhbHNhL3NvdW5kL3VhcGkvaGRzcC5oPgorKyNpZm5kZWYgX19oZHNwX3R5cGVfZGVmaW5lZAorKyNkZWZpbmUgX19oZHNwX3R5cGVfZGVmaW5lZAorK3R5cGVkZWYgZW51bSBIRFNQX0lPX1R5cGUgSERTUF9JT19UeXBlOworK3R5cGVkZWYgc3RydWN0IGhkc3BfcGVha19ybXMgaGRzcF9wZWFrX3Jtc190OworK3R5cGVkZWYgc3RydWN0IGhkc3BfY29uZmlnX2luZm8gaGRzcF9jb25maWdfaW5mb190OworK3R5cGVkZWYgc3RydWN0IGhkc3BfZmlybXdhcmUgaGRzcF9maXJtd2FyZV90OworK3R5cGVkZWYgc3RydWN0IGhkc3BfdmVyc2lvbiBoZHNwX3ZlcnNpb25fdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwX21peGVyIGhkc3BfbWl4ZXJfdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwXzk2MzJfYWViIGhkc3BfOTYzMl9hZWJfdDsKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL2hkc3BtLmggYi9pbmNsdWRlL3NvdW5kL2hkc3BtLmgKK2luZGV4IGFmNmQxOWVkLi5kOTA5NWQ5ZiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvaGRzcG0uaAorKysrIGIvaW5jbHVkZS9zb3VuZC9oZHNwbS5oCitAQCAtMSwyICsxLDEwIEBACisgI2luY2x1ZGUgPGFsc2Evc291bmQvdHlwZV9jb21wYXQuaD4KKyAjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL2hkc3BtLmg+CisrI2lmbmRlZiBfX2hkc3BtX3R5cGVfZGVmaW5lZAorKyNkZWZpbmUgX19oZHNwbV90eXBlX2RlZmluZWQKKyt0eXBlZGVmIHN0cnVjdCBoZHNwbV9wZWFrX3JtcyBoZHNwbV9wZWFrX3Jtc190OworK3R5cGVkZWYgc3RydWN0IGhkc3BtX2NvbmZpZ19pbmZvIGhkc3BtX2NvbmZpZ19pbmZvX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fdmVyc2lvbiBoZHNwbV92ZXJzaW9uX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fY2hhbm5lbGZhZGVyIHNuZF9oZHNwbV9jaGFubmVsZmFkZXJfdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwbV9taXhlciBoZHNwbV9taXhlcl90OworKyNlbmRpZgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvc2IxNl9jc3AuaCBiL2luY2x1ZGUvc291bmQvc2IxNl9jc3AuaAoraW5kZXggMjQxMjFmY2IuLmZkMDJiYzU2IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC9zYjE2X2NzcC5oCisrKysgYi9pbmNsdWRlL3NvdW5kL3NiMTZfY3NwLmgKK0BAIC0xICsxLDUgQEAKKyAjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL3NiMTZfY3NwLmg+CisrI2lmbmRlZiBfX3NiMTZfY3NwX3R5cGVfZGVmaW5lZAorKyNkZWZpbmUgX19zYjE2X2NzcF90eXBlX2RlZmluZWQKKyt0eXBlZGVmIHN0cnVjdCBzbmRfc2JfY3NwX21pY3JvY29kZSBzbmRfc2JfY3NwX21pY3JvY29kZV90OworKyNlbmRpZgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvdWFwaS9lbXUxMGsxLmggYi9pbmNsdWRlL3NvdW5kL3VhcGkvZW11MTBrMS5oCitpbmRleCBjMTE1MGU0ZC4uNmJjZDc2ZjYgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL3VhcGkvZW11MTBrMS5oCisrKysgYi9pbmNsdWRlL3NvdW5kL3VhcGkvZW11MTBrMS5oCitAQCAtMzgyLDE0ICszODIsNCBAQCBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3BjbV9yZWMgeworICNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9TSU5HTEVfU1RFUAlfSU9XICgnSCcsIDB4ODMsIGludCkKKyAjZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfREJHX1JFQUQJX0lPUiAoJ0gnLCAweDg0LCBpbnQpCisgCistI2lmbmRlZiBfX0tFUk5FTF9fCistLyogdHlwZWRlZnMgZm9yIGNvbXBhdGliaWxpdHkgdG8gdXNlci1zcGFjZSAqLworLXR5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9pbmZvIGVtdTEwazFfZng4MDEwX2luZm9fdDsKKy10eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHIgZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHJfdDsKKy10eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29kZSBlbXUxMGsxX2Z4ODAxMF9jb2RlX3Q7CistdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3RyYW0gZW11MTBrMV9meDgwMTBfdHJhbV90OworLXR5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9wY21fcmVjIGVtdTEwazFfZng4MDEwX3BjbV90OworLXR5cGVkZWYgc3RydWN0IGVtdTEwazFfY3RsX2VsZW1faWQgZW11MTBrMV9jdGxfZWxlbV9pZF90OworLSNlbmRpZgorLQorICNlbmRpZiAvKiBfVUFQSV9fU09VTkRfRU1VMTBLMV9IICovCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC91YXBpL2hkc3AuaCBiL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwLmgKK2luZGV4IDg4YzkyYTNmLi43YWMyZDNmMiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwLmgKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwLmgKK0BAIC05NywxMyArOTcsNCBAQCBzdHJ1Y3QgaGRzcF85NjMyX2FlYiB7CisgCisgI2RlZmluZSBTTkRSVl9IRFNQX0lPQ1RMX0dFVF85NjMyX0FFQiBfSU9SKCdIJywgMHg0NSwgc3RydWN0IGhkc3BfOTYzMl9hZWIpCisgCistLyogdHlwZWRlZnMgZm9yIGNvbXBhdGliaWxpdHkgdG8gdXNlci1zcGFjZSAqLworLXR5cGVkZWYgZW51bSBIRFNQX0lPX1R5cGUgSERTUF9JT19UeXBlOworLXR5cGVkZWYgc3RydWN0IGhkc3BfcGVha19ybXMgaGRzcF9wZWFrX3Jtc190OworLXR5cGVkZWYgc3RydWN0IGhkc3BfY29uZmlnX2luZm8gaGRzcF9jb25maWdfaW5mb190OworLXR5cGVkZWYgc3RydWN0IGhkc3BfZmlybXdhcmUgaGRzcF9maXJtd2FyZV90OworLXR5cGVkZWYgc3RydWN0IGhkc3BfdmVyc2lvbiBoZHNwX3ZlcnNpb25fdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwX21peGVyIGhkc3BfbWl4ZXJfdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwXzk2MzJfYWViIGhkc3BfOTYzMl9hZWJfdDsKKy0KKyAjZW5kaWYgLyogX19TT1VORF9IRFNQX0ggKi8KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvaGRzcG0uaCBiL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwbS5oCitpbmRleCAyZDkxZjkwZS4uM2ZiZmQ5ZGMgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL3VhcGkvaGRzcG0uaAorKysrIGIvaW5jbHVkZS9zb3VuZC91YXBpL2hkc3BtLmgKK0BAIC0yMTksMTIgKzIxOSw0IEBAIHN0cnVjdCBoZHNwbV9taXhlcl9pb2N0bCB7CisgLyogdXNlIGluZGlyZWN0IGFjY2VzcyBkdWUgdG8gdGhlIGxpbWl0IG9mIGlvY3RsIGJpdCBzaXplICovCisgI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfTUlYRVIgX0lPUignSCcsIDB4NDQsIHN0cnVjdCBoZHNwbV9taXhlcl9pb2N0bCkKKyAKKy0vKiB0eXBlZGVmcyBmb3IgY29tcGF0aWJpbGl0eSB0byB1c2VyLXNwYWNlICovCistdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fcGVha19ybXMgaGRzcG1fcGVha19ybXNfdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwbV9jb25maWdfaW5mbyBoZHNwbV9jb25maWdfaW5mb190OworLXR5cGVkZWYgc3RydWN0IGhkc3BtX3ZlcnNpb24gaGRzcG1fdmVyc2lvbl90OworLXR5cGVkZWYgc3RydWN0IGhkc3BtX2NoYW5uZWxmYWRlciBzbmRfaGRzcG1fY2hhbm5lbGZhZGVyX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fbWl4ZXIgaGRzcG1fbWl4ZXJfdDsKKy0KKy0KKyAjZW5kaWYKKy0tIAorMi4yMC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLXVjbS1Vc2Utc3RybmNtcC10by1hdm9pZC1hY2Nlc3Mtb3V0LW9mLWJvdW5kYXJ5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDEtdWNtLVVzZS1zdHJuY21wLXRvLWF2b2lkLWFjY2Vzcy1vdXQtb2YtYm91bmRhcnkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZkY2Q4YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLXVjbS1Vc2Utc3RybmNtcC10by1hdm9pZC1hY2Nlc3Mtb3V0LW9mLWJvdW5kYXJ5LnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gNGI2ZmUzNzJjNjhkMWZmNTBlN2MxNjFjZmZhZGViMjk4NzM0ZjQ5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IHBhdWxoc2lhIDxwYXVsaHNpYUBjaHJvbWl1bS5vcmc+CitEYXRlOiBTYXQsIDMwIE5vdiAyMDE5IDAzOjM1OjMwICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMS81XSB1Y206IFVzZSBzdHJuY21wIHRvIGF2b2lkIGFjY2Vzcy1vdXQtb2YtYm91bmRhcnkKKworSWYgdGhlIGxlbmd0aCBvZiB0aGUgaWRlbnRpZmllciBpcyBsZXNzIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGUgcHJlZml4LAorYWNjZXNzLW91dC1vZi1ib3VuZGFyeSB3aWxsIG9jY3VyIGluIG1lbWNtcCgpLgorCitTaWduZWQtb2ZmLWJ5OiBwYXVsaHNpYSA8cGF1bGhzaWFAY2hyb21pdW0ub3JnPgorU2lnbmVkLW9mZi1ieTogSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorLS0tCisgc3JjL3VjbS9tYWluLmMgfCA4ICsrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy91Y20vbWFpbi5jIGIvc3JjL3VjbS9tYWluLmMKK2luZGV4IGIwYjZmZmIzLi4yNTJlNTBkOSAxMDA2NDQKKy0tLSBhL3NyYy91Y20vbWFpbi5jCisrKysgYi9zcmMvdWNtL21haW4uYworQEAgLTYxLDExICs2MSwxMyBAQCBzdGF0aWMgaW50IGNoZWNrX2lkZW50aWZpZXIoY29uc3QgY2hhciAqaWRlbnRpZmllciwgY29uc3QgY2hhciAqcHJlZml4KQorIHsKKyAJaW50IGxlbjsKKyAKKy0JaWYgKHN0cmNtcChpZGVudGlmaWVyLCBwcmVmaXgpID09IDApCistCQlyZXR1cm4gMTsKKyAJbGVuID0gc3RybGVuKHByZWZpeCk7CistCWlmIChtZW1jbXAoaWRlbnRpZmllciwgcHJlZml4LCBsZW4pID09IDAgJiYgaWRlbnRpZmllcltsZW5dID09ICcvJykKKysJaWYgKHN0cm5jbXAoaWRlbnRpZmllciwgcHJlZml4LCBsZW4pICE9IDApCisrCQlyZXR1cm4gMDsKKysKKysJaWYgKGlkZW50aWZpZXJbbGVuXSA9PSAwIHx8IGlkZW50aWZpZXJbbGVuXSA9PSAnLycpCisgCQlyZXR1cm4gMTsKKysKKyAJcmV0dXJuIDA7CisgfQorIAorLS0gCisyLjIwLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDItdWNtLXJldHVybi1hbHdheXMtYXQtbGVhc3QtTlVMTC1pZi1uby1saXN0LWlzLWF2YWlsYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAyLXVjbS1yZXR1cm4tYWx3YXlzLWF0LWxlYXN0LU5VTEwtaWYtbm8tbGlzdC1pcy1hdmFpbGEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI5NzNmYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAyLXVjbS1yZXR1cm4tYWx3YXlzLWF0LWxlYXN0LU5VTEwtaWYtbm8tbGlzdC1pcy1hdmFpbGEucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSA1OGY5ZGM5YmQxMmE1MWVmYTEyZGJjNjdlMjAwZjRkODVjZDNkYTA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4KK0RhdGU6IEZyaSwgMjkgTm92IDIwMTkgMjI6Mjg6MjYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzVdIHVjbTogcmV0dXJuIGFsd2F5cyBhdCBsZWFzdCBOVUxMIGlmIG5vIGxpc3QgaXMgYXZhaWxhYmxlCisgaW4gc25kX3VzZV9jYXNlX2dldF9saXN0KCkKKworU2lnbmVkLW9mZi1ieTogSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorLS0tCisgc3JjL3VjbS9tYWluLmMgfCA4ICsrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy91Y20vbWFpbi5jIGIvc3JjL3VjbS9tYWluLmMKK2luZGV4IDI1MmU1MGQ5Li5iODBkYjY1ZiAxMDA2NDQKKy0tLSBhL3NyYy91Y20vbWFpbi5jCisrKysgYi9zcmMvdWNtL21haW4uYworQEAgLTExNjAsOCArMTE2MCwxMCBAQCBzdGF0aWMgaW50IGdldF9zdXBjb25fZGV2aWNlX2xpc3Qoc25kX3VzZV9jYXNlX21ncl90ICp1Y19tZ3IsCisgCisgCW1vZGlmaWVyID0gZmluZF9tb2RpZmllcih1Y19tZ3IsIHZlcmIsIG5hbWUsIDApOworIAlpZiAobW9kaWZpZXIpIHsKKy0JCWlmIChtb2RpZmllci0+ZGV2X2xpc3QudHlwZSAhPSB0eXBlKQorKwkJaWYgKG1vZGlmaWVyLT5kZXZfbGlzdC50eXBlICE9IHR5cGUpIHsKKysJCQkqbGlzdCA9IE5VTEw7CisgCQkJcmV0dXJuIDA7CisrCQl9CisgCQlyZXR1cm4gZ2V0X2xpc3QoJm1vZGlmaWVyLT5kZXZfbGlzdC5saXN0LCBsaXN0LAorIAkJCQlzdHJ1Y3QgZGV2X2xpc3Rfbm9kZSwgbGlzdCwKKyAJCQkJbmFtZSk7CitAQCAtMTE2OSw4ICsxMTcxLDEwIEBAIHN0YXRpYyBpbnQgZ2V0X3N1cGNvbl9kZXZpY2VfbGlzdChzbmRfdXNlX2Nhc2VfbWdyX3QgKnVjX21nciwKKyAKKyAJZGV2aWNlID0gZmluZF9kZXZpY2UodWNfbWdyLCB2ZXJiLCBuYW1lLCAwKTsKKyAJaWYgKGRldmljZSkgeworLQkJaWYgKGRldmljZS0+ZGV2X2xpc3QudHlwZSAhPSB0eXBlKQorKwkJaWYgKGRldmljZS0+ZGV2X2xpc3QudHlwZSAhPSB0eXBlKSB7CisrCQkJKmxpc3QgPSBOVUxMOworIAkJCXJldHVybiAwOworKwkJfQorIAkJcmV0dXJuIGdldF9saXN0KCZkZXZpY2UtPmRldl9saXN0Lmxpc3QsIGxpc3QsCisgCQkJCXN0cnVjdCBkZXZfbGlzdF9ub2RlLCBsaXN0LAorIAkJCQluYW1lKTsKKy0tIAorMi4yMC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAzLW5hbWVoaW50LWNvcnJlY3QtdGhlLWFyZ3MtY2hlY2sucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMy1uYW1laGludC1jb3JyZWN0LXRoZS1hcmdzLWNoZWNrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyZjhiMmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMy1uYW1laGludC1jb3JyZWN0LXRoZS1hcmdzLWNoZWNrLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gMTBmMzQwMWNlMzU2YTY3NWUyNDQwOTkzNDU3ZWU3YzhjN2U5ZmNmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+CitEYXRlOiBTdW4sIDEgRGVjIDIwMTkgMTQ6MjY6NDAgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzVdIG5hbWVoaW50OiBjb3JyZWN0IHRoZSBAYXJncyBjaGVjaworCitCdWdMaW5rOiBodHRwczovL2dpdGh1Yi5jb20vYWxzYS1wcm9qZWN0L2Fsc2EtcGx1Z2lucy9pc3N1ZXMvMworU2lnbmVkLW9mZi1ieTogSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorLS0tCisgc3JjL2NvbnRyb2wvbmFtZWhpbnQuYyB8IDYgKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NvbnRyb2wvbmFtZWhpbnQuYyBiL3NyYy9jb250cm9sL25hbWVoaW50LmMKK2luZGV4IDgwOGRmNmI1Li40OTI3ZWY5NyAxMDA2NDQKKy0tLSBhL3NyYy9jb250cm9sL25hbWVoaW50LmMKKysrKyBiL3NyYy9jb250cm9sL25hbWVoaW50LmMKK0BAIC0zNDgsNiArMzQ4LDEyIEBAIHN0YXRpYyBpbnQgdHJ5X2NvbmZpZyhzbmRfY29uZmlnX3QgKmNvbmZpZywKKyAJCWdvdG8gX19jbGVhbnVwOworIAlpZiAoc25kX2NvbmZpZ19zZWFyY2gocmVzLCAiQGFyZ3MiLCAmY2ZnKSA+PSAwKSB7CisgCQlzbmRfY29uZmlnX2Zvcl9lYWNoKGksIG5leHQsIGNmZykgeworKwkJCS8qIHNraXAgdGhlIGFyZ3VtZW50IGxpc3QgKi8KKysJCQlzbmRfY29uZmlnX2dldF9pZChzbmRfY29uZmlnX2l0ZXJhdG9yX2VudHJ5KGkpLCAmc3RyKTsKKysJCQl3aGlsZSAoKnN0ciAmJiAqc3RyID49ICcwJyAmJiAqc3RyIDw9ICc5Jykgc3RyKys7CisrCQkJaWYgKCpzdHIgPT0gJ1wwJykKKysJCQkJY29udGludWU7CisrCQkJLyogdGhlIGFyZ3VtZW50IGRlZmluaXRpb24gbXVzdCBoYXZlIHRoZSBkZWZhdWx0ICovCisgCQkJaWYgKHNuZF9jb25maWdfc2VhcmNoKHNuZF9jb25maWdfaXRlcmF0b3JfZW50cnkoaSksCisgCQkJCQkgICAgICAiZGVmYXVsdCIsIE5VTEwpIDwgMCkgeworIAkJCQllcnIgPSAtRUlOVkFMOworLS0gCisyLjIwLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDQtbmFtZWhpbnQtaW1wcm92ZS10aGUtcHJldmlvdXMtcGF0Y2gtY2hlY2stdGhlLXJldHVybi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDA0LW5hbWVoaW50LWltcHJvdmUtdGhlLXByZXZpb3VzLXBhdGNoLWNoZWNrLXRoZS1yZXR1cm4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgxOTJmNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDA0LW5hbWVoaW50LWltcHJvdmUtdGhlLXByZXZpb3VzLXBhdGNoLWNoZWNrLXRoZS1yZXR1cm4ucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSAxZmE2NjY0ZDVmMGNjN2QyMWVkY2ViYTY2OTVhNGMyODU0M2MyY2FiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4KK0RhdGU6IFN1biwgMSBEZWMgMjAxOSAxNDozMDo1NCArMDEwMAorU3ViamVjdDogW1BBVENIIDQvNV0gbmFtZWhpbnQ6IGltcHJvdmUgdGhlIHByZXZpb3VzIHBhdGNoIChjaGVjayB0aGUgcmV0dXJuZWQKKyB2YWx1ZSkKKworU2lnbmVkLW9mZi1ieTogSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorLS0tCisgc3JjL2NvbnRyb2wvbmFtZWhpbnQuYyB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NvbnRyb2wvbmFtZWhpbnQuYyBiL3NyYy9jb250cm9sL25hbWVoaW50LmMKK2luZGV4IDQ5MjdlZjk3Li42MGM0OGFlMyAxMDA2NDQKKy0tLSBhL3NyYy9jb250cm9sL25hbWVoaW50LmMKKysrKyBiL3NyYy9jb250cm9sL25hbWVoaW50LmMKK0BAIC0zNDksNyArMzQ5LDggQEAgc3RhdGljIGludCB0cnlfY29uZmlnKHNuZF9jb25maWdfdCAqY29uZmlnLAorIAlpZiAoc25kX2NvbmZpZ19zZWFyY2gocmVzLCAiQGFyZ3MiLCAmY2ZnKSA+PSAwKSB7CisgCQlzbmRfY29uZmlnX2Zvcl9lYWNoKGksIG5leHQsIGNmZykgeworIAkJCS8qIHNraXAgdGhlIGFyZ3VtZW50IGxpc3QgKi8KKy0JCQlzbmRfY29uZmlnX2dldF9pZChzbmRfY29uZmlnX2l0ZXJhdG9yX2VudHJ5KGkpLCAmc3RyKTsKKysJCQlpZiAoc25kX2NvbmZpZ19nZXRfaWQoc25kX2NvbmZpZ19pdGVyYXRvcl9lbnRyeShpKSwgJnN0cikgPCAwKQorKwkJCQljb250aW51ZTsKKyAJCQl3aGlsZSAoKnN0ciAmJiAqc3RyID49ICcwJyAmJiAqc3RyIDw9ICc5Jykgc3RyKys7CisgCQkJaWYgKCpzdHIgPT0gJ1wwJykKKyAJCQkJY29udGludWU7CistLSAKKzIuMjAuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwNS11Y20tRG8tbm90LWZhaWwtdG8tcGFyc2UtY29uZmlncy1vbi1jYXJkcy13aXRoLWFuLWVtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDUtdWNtLURvLW5vdC1mYWlsLXRvLXBhcnNlLWNvbmZpZ3Mtb24tY2FyZHMtd2l0aC1hbi1lbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmMwYTRjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDUtdWNtLURvLW5vdC1mYWlsLXRvLXBhcnNlLWNvbmZpZ3Mtb24tY2FyZHMtd2l0aC1hbi1lbS5wYXRjaApAQCAtMCwwICsxLDg2IEBACitGcm9tIDk3NmY4ZjYyMjM4ZjBkODM3NTg0YWRjN2MzMTAzNWJkYjI5YjZkNmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAzIERlYyAyMDE5IDE4OjI3OjM5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggNS81XSB1Y206IERvIG5vdCBmYWlsIHRvIHBhcnNlIGNvbmZpZ3Mgb24gY2FyZHMgd2l0aCBhbiBlbXB0eQorIENhcmRDb21wb25lbnRzIGxpc3RzCisKK1NpbmNlIHRoZSBVQ00gcHJvZmlsZXMgZm9yIGFsbCBCYXktIGFuZCBDaGVycnktVHJhaWwgU1NUIGNhcmRzIGhhdmUgYmVlbgorbW92ZWQgb3ZlciB0byBVQ00yLCBwYXJzaW5nIHRoZW0gZmFpbHMgd2l0aDoKKworQUxTQSBsaWIgdWNtX3N1YnMuYzoyMjA6KHVjX21ncl9nZXRfc3Vic3RpdHV0ZWRfdmFsdWUpIHZhcmlhYmxlICcke0NhcmRDb21wb25lbnRzfScgaXMgbm90IGRlZmluZWQgaW4gdGhpcyBjb250ZXh0IQorCitUaGlzIGNvbXBsZXRlbHkgYnJlYWtzIGF1ZGlvIHN1cHBvcnQgb24gYWxsIEJheS0gYW5kIENoZXJyeS1UcmFpbCBkZXZpY2VzLgorCitUaGlzIGlzIGNhdXNlZCBieSB0aGVzZSBub24tU09GIEFTb0MgdXNpbmcgY2FyZHMgaGF2aW5nIGFuIGVtcHR5CitDYXJkQ29tcG9uZW50cyBsaXN0LiBXaGljaCBpbiBpdHNlbGYgaXMgZmluZSwgYnV0IGlzIHJlamVjdGVkIGJ5Cit0aGUgdWNtX3N1YnMuYyBjb2RlLiBUaGlzIGNvbW1pdCBjaGFuZ2VzIHRoZSB1Y21fc3VicyBjb2RlIHRvIGFjY2VwdAorYW4gZW1wdHkgc3RyaW5nIGFzIGEgdmFsaWQgdmFsdWUgZm9yIENhcmRDb21wb25lbnRzIHJlc3RvcmluZyBhdWRpbworZnVuY3Rpb25hbGl0eSBvbiB0aGVzZSBib2FyZHMuCisKK1NpZ25lZC1vZmYtYnk6IEhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBKYXJvc2xhdiBLeXNlbGEgPHBlcmV4QHBlcmV4LmN6PgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+CistLS0KKyBzcmMvdWNtL3VjbV9zdWJzLmMgfCAyMCArKysrKysrKysrKystLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3VjbS91Y21fc3Vicy5jIGIvc3JjL3VjbS91Y21fc3Vicy5jCitpbmRleCAwMGFmYTllMy4uOTBlMzk1ZjAgMTAwNjQ0CistLS0gYS9zcmMvdWNtL3VjbV9zdWJzLmMKKysrKyBiL3NyYy91Y20vdWNtX3N1YnMuYworQEAgLTI1LDYgKzI1LDcgQEAKKyAgKi8KKyAKKyAjaW5jbHVkZSAidWNtX2xvY2FsLmgiCisrI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8bGltaXRzLmg+CisgCitAQCAtMTQ1LDEwICsxNDYsMTEgQEAgc3RhdGljIGNoYXIgKnJ2YWxfc3lzZnMoc25kX3VzZV9jYXNlX21ncl90ICp1Y19tZ3IgQVRUUklCVVRFX1VOVVNFRCwgY29uc3QgY2hhcgorIAlyZXR1cm4gc3RyZHVwKHBhdGgpOworIH0KKyAKKy0jZGVmaW5lIE1BVENIX1ZBUklBQkxFKG5hbWUsIGlkLCBmY24pCQkJCQlcCisrI2RlZmluZSBNQVRDSF9WQVJJQUJMRShuYW1lLCBpZCwgZmNuLCBlbXB0eV9vaykJCQkJXAorIAlpZiAoc3RybmNtcCgobmFtZSksIChpZCksIHNpemVvZihpZCkgLSAxKSA9PSAwKSB7IAkJXAorIAkJcnZhbCA9IGZjbih1Y19tZ3IpOwkJCQkJXAorIAkJaWRzaXplID0gc2l6ZW9mKGlkKSAtIDE7CQkJCVwKKysJCWFsbG93X2VtcHR5ID0gKGVtcHR5X29rKTsJCQkJXAorIAkJZ290byBfX3J2YWw7CQkJCQkJXAorIAl9CisgCitAQCAtMTg5LDEyICsxOTEsMTQgQEAgaW50IHVjX21ncl9nZXRfc3Vic3RpdHV0ZWRfdmFsdWUoc25kX3VzZV9jYXNlX21ncl90ICp1Y19tZ3IsCisgCisgCXdoaWxlICgqdmFsdWUpIHsKKyAJCWlmICgqdmFsdWUgPT0gJyQnICYmICoodmFsdWUrMSkgPT0gJ3snKSB7CistCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NvbmZOYW1lfSIsIHJ2YWxfY29uZl9uYW1lKTsKKy0JCQlNQVRDSF9WQVJJQUJMRSh2YWx1ZSwgIiR7Q2FyZElkfSIsIHJ2YWxfY2FyZF9pZCk7CistCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NhcmREcml2ZXJ9IiwgcnZhbF9jYXJkX2RyaXZlcik7CistCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NhcmROYW1lfSIsIHJ2YWxfY2FyZF9uYW1lKTsKKy0JCQlNQVRDSF9WQVJJQUJMRSh2YWx1ZSwgIiR7Q2FyZExvbmdOYW1lfSIsIHJ2YWxfY2FyZF9sb25nbmFtZSk7CistCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NhcmRDb21wb25lbnRzfSIsIHJ2YWxfY2FyZF9jb21wb25lbnRzKTsKKysJCQlib29sIGFsbG93X2VtcHR5ID0gZmFsc2U7CisrCisrCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NvbmZOYW1lfSIsIHJ2YWxfY29uZl9uYW1lLCBmYWxzZSk7CisrCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NhcmRJZH0iLCBydmFsX2NhcmRfaWQsIGZhbHNlKTsKKysJCQlNQVRDSF9WQVJJQUJMRSh2YWx1ZSwgIiR7Q2FyZERyaXZlcn0iLCBydmFsX2NhcmRfZHJpdmVyLCBmYWxzZSk7CisrCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NhcmROYW1lfSIsIHJ2YWxfY2FyZF9uYW1lLCBmYWxzZSk7CisrCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NhcmRMb25nTmFtZX0iLCBydmFsX2NhcmRfbG9uZ25hbWUsIGZhbHNlKTsKKysJCQlNQVRDSF9WQVJJQUJMRSh2YWx1ZSwgIiR7Q2FyZENvbXBvbmVudHN9IiwgcnZhbF9jYXJkX2NvbXBvbmVudHMsIHRydWUpOworIAkJCU1BVENIX1ZBUklBQkxFMih2YWx1ZSwgIiR7ZW52OiIsIHJ2YWxfZW52KTsKKyAJCQlNQVRDSF9WQVJJQUJMRTIodmFsdWUsICIke3N5czoiLCBydmFsX3N5c2ZzKTsKKyAJCQllcnIgPSAtRUlOVkFMOworQEAgLTIwOCw3ICsyMTIsNyBAQCBpbnQgdWNfbWdyX2dldF9zdWJzdGl0dXRlZF92YWx1ZShzbmRfdXNlX2Nhc2VfbWdyX3QgKnVjX21nciwKKyAJCQl9CisgCQkJZ290byBfX2Vycm9yOworIF9fcnZhbDoKKy0JCQlpZiAocnZhbCA9PSBOVUxMIHx8IHJ2YWxbMF0gPT0gJ1wwJykgeworKwkJCWlmIChydmFsID09IE5VTEwgfHwgKCFhbGxvd19lbXB0eSAmJiBydmFsWzBdID09ICdcMCcpKSB7CisgCQkJCWZyZWUocnZhbCk7CisgCQkJCXN0cm5jcHkociwgdmFsdWUsIGlkc2l6ZSk7CisgCQkJCXJbaWRzaXplXSA9ICdcMCc7CistLSAKKzIuMjAuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjNjNlZTcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotU1VNTUFSWSA9ICJBTFNBIHNvdW5kIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKLVNFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgotTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9zb2NrZXQuYzttZDU9ZGQxYmM3ZjQ0ODcyNjkwMjI0ZDg5YzFhOTgwNmU0OTU7YmVnaW5saW5lPTE7ZW5kbGluZT0yNiBcCi0gICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5hbHNhLXByb2plY3Qub3JnL2ZpbGVzL3B1Yi9saWIvJHtCUH0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlNmQ0MjlkYmRjZmFhMGYwMzRkOTA3ZmE2ZGMzNzM1ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0ODgzNzNhZWY1Mzk2NjgyZjNhNDExYTZkMDY0YWUwYWQxOTZiOWM5NjI2OWQwYmI5MTJmYmRlZWM5NGI5OTRiIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GICs9ICIgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUQVJHRVRfRlBVJywgJ3NvZnQnLCAnLS13aXRoLXNvZnRmbG9hdCcsICcnLCBkKX0gXAotICAgIC0tZGlzYWJsZS1weXRob24gXAotIgotCi1QQUNLQUdFUyA9KyAiYWxzYS1zZXJ2ZXIgYWxzYS1jb25mIGFsc2EtZG9jIgotCi1GSUxFU19hbHNhLXNlcnZlciA9ICIke2JpbmRpcn0vKiIKLUZJTEVTX2Fsc2EtY29uZiA9ICIke2RhdGFkaXJ9L2Fsc2EvIgotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiYWxzYS1jb25mIgotCi0jIHVwZ3JhZGUgcGF0aAotUlBST1ZJREVTXyR7UE59ID0gImxpYmFzb3VuZCIKLVJSRVBMQUNFU18ke1BOfSA9ICJsaWJhc291bmQiCi1SQ09ORkxJQ1RTXyR7UE59ID0gImxpYmFzb3VuZCIKLQotUlBST1ZJREVTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKLVJSRVBMQUNFU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCi1SQ09ORkxJQ1RTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKLQotUlBST1ZJREVTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKLVJSRVBMQUNFU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCi1SQ09ORkxJQ1RTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMi4xLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4yLjEuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmJjNjFmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMi4xLjIuYmIKQEAgLTAsMCArMSw1MiBAQAorU1VNTUFSWSA9ICJBTFNBIHNvdW5kIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCitCVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKK1NFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgorTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9zb2NrZXQuYzttZDU9Mjg1Njc1YjQ1ZTgzZjU3MWM2YTk1N2ZlNGFiNzljOTM7YmVnaW5saW5lPTk7ZW5kbGluZT0yNCBcCisgICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5hbHNhLXByb2plY3Qub3JnL2ZpbGVzL3B1Yi9saWIvJHtCUH0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1yZW1vdmUtYW4tdW5uZWNlc3NhcnktbGlidG9vbC1maXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS11Y20tVXNlLXN0cm5jbXAtdG8tYXZvaWQtYWNjZXNzLW91dC1vZi1ib3VuZGFyeS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXVjbS1yZXR1cm4tYWx3YXlzLWF0LWxlYXN0LU5VTEwtaWYtbm8tbGlzdC1pcy1hdmFpbGEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1uYW1laGludC1jb3JyZWN0LXRoZS1hcmdzLWNoZWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtbmFtZWhpbnQtaW1wcm92ZS10aGUtcHJldmlvdXMtcGF0Y2gtY2hlY2stdGhlLXJldHVybi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LXVjbS1Eby1ub3QtZmFpbC10by1wYXJzZS1jb25maWdzLW9uLWNhcmRzLXdpdGgtYW4tZW0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYWxzYS1zb3VuZC0uaC1mb3ItZXh0ZXJuYWwtcHJvZ3JhbXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS11YXBpLU1vdmUtdHlwZWRlZnMtZnJvbS11YXBpLXRvLXNvdW5kLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjgyZGRkMzY5ODQ2OWJlZWMxNDdlNGY0YTY3MTM0ZWEwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk1OGUyNjBlMzY3M2YxZjZmZjZiMmQyYzBkZjNmYzJlNDY5YmVhNWIyOTU3MTYzY2U5NmNlMTdmMjNlODc5NDMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgKz0gIiBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RBUkdFVF9GUFUnLCAnc29mdCcsICctLXdpdGgtc29mdGZsb2F0JywgJycsIGQpfSBcCisgICAgLS1kaXNhYmxlLXB5dGhvbiBcCisiCisKK1BBQ0tBR0VTID0rICJhbHNhLXNlcnZlciBhbHNhLWNvbmYgbGliYXRvcG9sb2d5IgorCitGSUxFU19hbHNhLXNlcnZlciA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTX2Fsc2EtY29uZiA9ICIke2RhdGFkaXJ9L2Fsc2EvIgorRklMRVNfbGliYXRvcG9sb2d5ID0gIiR7bGliZGlyfS9saWJhdG9wb2xvZ3kuc28uKiIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gImFsc2EtY29uZiBhbHNhLXVjbS1jb25mIgorUkRFUEVORFNfbGliYXRvcG9sb2d5X2NsYXNzLXRhcmdldCA9ICJhbHNhLXRvcG9sb2d5LWNvbmYiCisKKyMgdXBncmFkZSBwYXRoCitSUFJPVklERVNfJHtQTn0gPSAibGliYXNvdW5kIgorUlJFUExBQ0VTXyR7UE59ID0gImxpYmFzb3VuZCIKK1JDT05GTElDVFNfJHtQTn0gPSAibGliYXNvdW5kIgorCitSUFJPVklERVNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgorUlJFUExBQ0VTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKK1JDT05GTElDVFNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgorCitSUFJPVklERVNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgorUlJFUExBQ0VTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKK1JDT05GTElDVFNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjk0ZmM1Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTczICswLDAgQEAKLVNVTU1BUlkgPSAiQUxTQSBQbHVnaW5zIgotSE9NRVBBR0UgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLQotIyBUaGUgcHJpbWFyeSBsaWNlbnNlIG9mIGFsc2EtcGx1Z2lucyBpcyBMR1BMdjIuMS4KLSMKLSMgbTQvYXR0cmlidXRlcy5tNCBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MisuIG00L2F0dHJpYnV0ZXMubTQgaXMgcGFydCBvZiB0aGUKLSMgYnVpbGQgc3lzdGVtLCBhbmQgZG9lc24ndCBhZmZlY3QgdGhlIGxpY2Vuc2luZyBvZiB0aGUgYnVpbGQgcmVzdWx0LgotIwotIyBUaGUgc2FtcGxlcmF0ZSBwbHVnaW4gc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIrIHRvIGJlIGNvbnNpc3RlbnQKLSMgd2l0aCB0aGUgbGlic2FtcGxlcmF0ZSBsaWNlbnNlLiBIb3dldmVyLCBpZiB0aGUgbGljZW5zZWUgaGFzIGEgY29tbWVyY2lhbAotIyBsaWNlbnNlIGZvciBsaWJzYW1wbGVyYXRlLCB0aGUgc2FtcGxlcmF0ZSBwbHVnaW4gbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zCi0jIG9mIExHUEx2Mi4xIGxpa2UgdGhlIHJlc3Qgb2YgdGhlIHBsdWdpbnMuCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJcCi0gICAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyBcCi0gICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotICAgICAgICBmaWxlOi8vbTQvYXR0cmlidXRlcy5tNDtlbmRsaW5lPTMzO21kNT1iMjU5NThkYTQ0YzAyMjMxZTM2NDFmMWJjY2VmNTNlYiBcCi0gICAgICAgIGZpbGU6Ly9yYXRlL3JhdGVfc2FtcGxlcmF0ZS5jO2VuZGxpbmU9MzU7bWQ1PWZkNzdiY2U4NWY0YTMzOGMwZThhYjE4NDMwYjY5ZmFlIFwKLSIKLQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5hbHNhLXByb2plY3Qub3JnL2ZpbGVzL3B1Yi9wbHVnaW5zLyR7QlB9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiZTBjYWZmYmQ4NDljNTFlZDgxNzUxMzc4ZjU2Y2I1NjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTYxNzcyMzAzZGE1MjFhYmJiZjFkOTFmNjNiNDcwYzQ3OTEzOTJkNTcyOGYyMTkyYTQyZDcxMjkyMDc4ZjkwNyIKLQotREVQRU5EUyArPSAiYWxzYS1saWIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAiXAotICAgICAgICBzYW1wbGVyYXRlIFwKLSAgICAgICAgc3BlZXhkc3AgXAotICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbYWFmXSA9ICItLWVuYWJsZS1hYWYsLS1kaXNhYmxlLWFhZixhdnRwIgotUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItLWVuYWJsZS1qYWNrLC0tZGlzYWJsZS1qYWNrLGphY2siCi1QQUNLQUdFQ09ORklHW2xpYmF2XSA9ICItLWVuYWJsZS1saWJhdiwtLWRpc2FibGUtbGliYXYsbGliYXYiCi1QQUNLQUdFQ09ORklHW21hZW1vLXBsdWdpbl0gPSAiLS1lbmFibGUtbWFlbW8tcGx1Z2luLC0tZGlzYWJsZS1tYWVtby1wbHVnaW4iCi1QQUNLQUdFQ09ORklHW21hZW1vLXJlc291cmNlLW1hbmFnZXJdID0gIi0tZW5hYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsLS1kaXNhYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsZGJ1cyIKLVBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2VhdWRpbywtLWRpc2FibGUtcHVsc2VhdWRpbyxwdWxzZWF1ZGlvIgotUEFDS0FHRUNPTkZJR1tzYW1wbGVyYXRlXSA9ICItLWVuYWJsZS1zYW1wbGVyYXRlLC0tZGlzYWJsZS1zYW1wbGVyYXRlLGxpYnNhbXBsZXJhdGUwIgotUEFDS0FHRUNPTkZJR1tzcGVleGRzcF0gPSAiLS13aXRoLXNwZWV4PWxpYiwtLXdpdGgtc3BlZXg9bm8sc3BlZXhkc3AiCi0KLVBBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ2Fsc2EtcGx1Z2lucy1wdWxzZWF1ZGlvLWNvbmYnLCAnJywgZCl9IgotCi1QQUNLQUdFU19EWU5BTUlDID0gIl5saWJhc291bmQtbW9kdWxlLS4qIgotCi0jIFRoZSBhbHNhLXBsdWdpbnMgcGFja2FnZSBkb2Vzbid0IGl0c2VsZiBjb250YWluIGFueXRoaW5nLCBpdCBqdXN0IGRlcGVuZHMgb24KLSMgYWxsIGJ1aWx0IHBsdWdpbnMuCi1GSUxFU18ke1BOfSA9ICIiCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlybSAke0R9JHtsaWJkaXJ9L2Fsc2EtbGliLyoubGEKLQotCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KLQkJIyBXZSB1c2UgdGhlIGV4YW1wbGUgYXMgaXMuIFVwc3RyZWFtIGluc3RhbGxzIHRoZSBmaWxlIHVuZGVyCi0JCSMgL2V0YywgYnV0IHdlIG1vdmUgaXQgdW5kZXIgL3Vzci9zaGFyZSBhbmQgYWRkIGEgc3ltbGluayB1bmRlcgotCQkjIC9ldGMgdG8gYmUgY29uc2lzdGVudCB3aXRoIG90aGVyIGluc3RhbGxlZCBjb25maWd1cmF0aW9uCi0JCSMgZmlsZXMuCi0JCW12ICR7RH0ke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mLmV4YW1wbGUgJHtEfSR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZgotCQlsbiAtcyAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYKLQlmaQotfQotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKLSAgICBwbHVnaW5kaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2Fsc2EtbGliLycpCi0gICAgcGFja2FnZXMgPSAiICIuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBwbHVnaW5kaXIsIHInXmxpYmFzb3VuZF9tb2R1bGVfKC4qKVwuc28kJywgJ2xpYmFzb3VuZC1tb2R1bGUtJXMnLCAnQWxzYSBwbHVnaW4gZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJykpCi0gICAgZC5zZXRWYXIoIlJERVBFTkRTX2Fsc2EtcGx1Z2lucyIsIHBhY2thZ2VzKQotfQotCi0jIE1hbnkgcGx1Z2lucyBoYXZlIGEgY29uZmlndXJhdGlvbiBmaWxlIChwbHVzIGEgc3ltbGluayBpbiAvZXRjKSBhc3NvY2lhdGVkCi0jIHdpdGggdGhlbS4gV2UgcHV0IHRoZSBwbHVnaW4gYW5kIGl0J3MgY29uZmlndXJhdGlvbiB1c3VhbGx5IGluIHRoZSBzYW1lCi0jIHBhY2thZ2UsIGJ1dCB0aGF0J3MgcHJvYmxlbWF0aWMgd2hlbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGlzIHJlbGF0ZWQgdG8KLSMgbXVsdGlwbGUgcGx1Z2lucywgYXMgaXMgdGhlIGNhc2Ugd2l0aCB0aGUgcHVsc2UsIG9zcyBhbmQgbWFlbW8gcGx1Z2lucy4gSW4KLSMgY2FzZSBvZiB0aGUgcHVsc2UgcGx1Z2lucywgd2UgaGF2ZSBhIHNlcGFyYXRlIGFsc2EtcGx1Z2lucy1wdWxzZWF1ZGlvLWNvbmYKLSMgcGFja2FnZSB0aGF0IGRlcGVuZHMgb24gYWxsIHRoZSBwdWxzZSBwbHVnaW5zLCB3aGljaCBlbnN1cmVzIHRoYXQgYWxsIHBsdWdpbnMKLSMgdGhhdCB0aGUgY29uZmlndXJhdGlvbiByZWZlcmVuY2VzIGFyZSBpbnN0YWxsZWQuIFRoZSBvc3MgYW5kIG1hZW1vCi0jIGNvbmZpZ3VyYXRpb24gZmlsZXMsIG9uIHRoZSBvdGhlciBoYW5kLCBhcmUgaW4gdGhlIHJlc3BlY3RpdmUgcGNtIHBsdWdpbgotIyBwYWNrYWdlcy4gVGhlcmVmb3JlIGl0J3MgcG9zc2libGUgdG8gaW5zdGFsbCB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHdpdGhvdXQKLSMgdGhlIGN0bCBwbHVnaW4gdGhhdCB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHJlZmVyZW5jZXMuIFRoaXMgaXMgdW5saWtlbHkgdG8KLSMgY2F1c2UgYmlnIHByb2JsZW1zLCBidXQgc29tZSBraW5kIG9mIGltcHJvdmVtZW50IHRvIHRoZSBwYWNrYWdpbmcgY291bGQKLSMgcHJvYmFibHkgYmUgZG9uZSBoZXJlIChhdCBsZWFzdCBpdCB3b3VsZCBiZSBnb29kIHRvIGhhbmRsZSB0aGUgZGlmZmVyZW50Ci0jIHBsdWdpbnMgaW4gYSBjb25zaXN0ZW50IHdheSkuCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtY3RsLWFyY2FtLWF2ICs9ICJcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1hcmNhbS1hdi1jdGwuY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNTAtYXJjYW0tYXYtY3RsLmNvbmYgXAotIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS1hNTIgKz0gIlwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzYwLWE1Mi1lbmNvZGVyLmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzYwLWE1Mi1lbmNvZGVyLmNvbmYgXAotIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS1hbHNhLWRzcCArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTgtbWFlbW8uY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvOTgtbWFlbW8uY29uZiBcCi0iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcGNtLWphY2sgKz0gIlwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzUwLWphY2suY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNTAtamFjay5jb25mIFwKLSIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1wY20tb3NzICs9ICJcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1vc3MuY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNTAtb3NzLmNvbmYgXAotIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS1zcGVleCArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNjAtc3BlZXguY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNjAtc3BlZXguY29uZiBcCi0iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcGNtLXVwbWl4ICs9ICJcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC82MC11cG1peC5jb25mIFwKLSAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC82MC11cG1peC5jb25mIFwKLSIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1wY20tdXNiLXN0cmVhbSArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTgtdXNiLXN0cmVhbS5jb25mIFwKLSAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC85OC11c2Itc3RyZWFtLmNvbmYgXAotIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS12ZG93bm1peCArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNjAtdmRvd25taXguY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNjAtdmRvd25taXguY29uZiBcCi0iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZyYXRlICs9ICJcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC8xMC1yYXRlLWxhdi5jb25mIFwKLSAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC8xMC1yYXRlLWxhdi5jb25mIFwKLSIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNhbXBsZXJhdGUgKz0gIlwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzEwLXNhbXBsZXJhdGUuY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvMTAtc2FtcGxlcmF0ZS5jb25mIFwKLSIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvMTAtc3BlZXhyYXRlLmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzEwLXNwZWV4cmF0ZS5jb25mIFwKLSIKLQotIyBUaGUgcmF0ZSBwbHVnaW5zIGNyZWF0ZSBzb21lIHN5bWxpbmtzLiBGb3IgZXhhbXBsZSwgdGhlIHNhbXBsZXJhdGUgcGx1Z2luCi0jIGNyZWF0ZXMgdGhlc2UgbGlua3MgdG8gdGhlIG1haW4gcGx1Z2luIGZpbGU6Ci0jCi0jICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfYmVzdC5zbwotIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX2xpbmVhci5zbwotIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX21lZGl1bS5zbwotIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX29yZGVyLnNvCi0jCi0jIFRoZSBvdGhlciByYXRlIHBsdWdpbnMgY3JlYXRlIHNpbWlsYXIgbGlua3MuIFdlIGhhdmUgdG8gYWRkIHRoZSBsaW5rcyB0bwotIyBGSUxFUyBtYW51YWxseSwgYmVjYXVzZSBkb19zcGxpdF9wYWNrYWdlcygpIHNraXBzIHRoZSBsaW5rcyAod2hpY2ggaXMgZ29vZCwKLSMgYmVjYXVzZSB3ZSB3b3VsZG4ndCB3YW50IGRvX3NwbGl0X3BhY2thZ2VzKCkgdG8gY3JlYXRlIHNlcGFyYXRlIHBhY2thZ2VzIGZvcgotIyB0aGUgc3ltbGlua3MpLgotIwotIyBUaGUgc3ltbGlua3MgY2F1c2UgUUEgZXJyb3JzLCBiZWNhdXNlIHVzdWFsbHkgaXQncyBhIGJ1ZyBpZiBhIG5vbgotIyAtZGV2Ly1kYmcvLW5hdGl2ZXNkayBwYWNrYWdlIGNvbnRhaW5zIGxpbmtzIHRvIC5zbyBmaWxlcywgYnV0IGluIHRoaXMgY2FzZQotIyB0aGUgZXJyb3JzIGFyZSBmYWxzZSBwb3NpdGl2ZXMsIHNvIHdlIGRpc2FibGUgdGhlIFFBIGNoZWNrcy4KLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLWxhdnJhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9sYXZyYXRlXyouc28iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc2FtcGxlcmF0ZV8qLnNvIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc3BlZXhyYXRlXyouc28iCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZyYXRlID0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNhbXBsZXJhdGUgPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlID0gImRldi1zbyIKLQotIyA1MC1wdWxzZWF1ZGlvLmNvbmYgZGVmaW5lcyBhIGRldmljZSBuYW1lZCAicHVsc2UiIHRoYXQgYXBwbGljYXRpb25zIGNhbiB1c2UKLSMgaWYgdGhleSBleHBsaWNpdGx5IHdhbnQgdG8gdXNlIHRoZSBQdWxzZUF1ZGlvIHBsdWdpbi4KLSMgOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgY29uZmlndXJlcyB0aGUgImRlZmF1bHQiIGRldmljZSB0byB1c2UgdGhlCi0jIFB1bHNlQXVkaW8gcGx1Z2luLgotRklMRVNfJHtQTn0tcHVsc2VhdWRpby1jb25mICs9ICJcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1wdWxzZWF1ZGlvLmNvbmYgXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzUwLXB1bHNlYXVkaW8uY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgXAotIgotCi1SREVQRU5EU18ke1BOfS1wdWxzZWF1ZGlvLWNvbmYgKz0gIlwKLSAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1jb25mLXB1bHNlIFwKLSAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1jdGwtcHVsc2UgXAotICAgICAgICBsaWJhc291bmQtbW9kdWxlLXBjbS1wdWxzZSBcCi0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODgyZTEyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjIuMS5iYgpAQCAtMCwwICsxLDE3MyBAQAorU1VNTUFSWSA9ICJBTFNBIFBsdWdpbnMiCitIT01FUEFHRSA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorCisjIFRoZSBwcmltYXJ5IGxpY2Vuc2Ugb2YgYWxzYS1wbHVnaW5zIGlzIExHUEx2Mi4xLgorIworIyBtNC9hdHRyaWJ1dGVzLm00IGlzIGxpY2Vuc2VkIHVuZGVyIEdQTHYyKy4gbTQvYXR0cmlidXRlcy5tNCBpcyBwYXJ0IG9mIHRoZQorIyBidWlsZCBzeXN0ZW0sIGFuZCBkb2Vzbid0IGFmZmVjdCB0aGUgbGljZW5zaW5nIG9mIHRoZSBidWlsZCByZXN1bHQuCisjCisjIFRoZSBzYW1wbGVyYXRlIHBsdWdpbiBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MisgdG8gYmUgY29uc2lzdGVudAorIyB3aXRoIHRoZSBsaWJzYW1wbGVyYXRlIGxpY2Vuc2UuIEhvd2V2ZXIsIGlmIHRoZSBsaWNlbnNlZSBoYXMgYSBjb21tZXJjaWFsCisjIGxpY2Vuc2UgZm9yIGxpYnNhbXBsZXJhdGUsIHRoZSBzYW1wbGVyYXRlIHBsdWdpbiBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMKKyMgb2YgTEdQTHYyLjEgbGlrZSB0aGUgcmVzdCBvZiB0aGUgcGx1Z2lucy4KK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gIlwKKyAgICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IFwKKyAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisgICAgICAgIGZpbGU6Ly9tNC9hdHRyaWJ1dGVzLm00O2VuZGxpbmU9MzM7bWQ1PWIyNTk1OGRhNDRjMDIyMzFlMzY0MWYxYmNjZWY1M2ViIFwKKyAgICAgICAgZmlsZTovL3JhdGUvcmF0ZV9zYW1wbGVyYXRlLmM7ZW5kbGluZT0zNTttZDU9ZmQ3N2JjZTg1ZjRhMzM4YzBlOGFiMTg0MzBiNjlmYWUgXAorIgorCitTUkNfVVJJID0gImh0dHBzOi8vd3d3LmFsc2EtcHJvamVjdC5vcmcvZmlsZXMvcHViL3BsdWdpbnMvJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1YjExY2QzZWM5MmU1ZjkxOTBlYzM3ODU2NWI1MjllOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZDk0ZGU3YWQ0MTczNGI4NjA0YTY1MjUyMTIwMGJiNjU1NGZjZjBjMmMwMGZkYmQzMDJiMTcxMGQ3NjU0OGRhIgorCitERVBFTkRTICs9ICJhbHNhLWxpYiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICJcCisgICAgICAgIHNhbXBsZXJhdGUgXAorICAgICAgICBzcGVleGRzcCBcCisgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8nLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1thYWZdID0gIi0tZW5hYmxlLWFhZiwtLWRpc2FibGUtYWFmLGF2dHAiCitQQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWphY2ssLS1kaXNhYmxlLWphY2ssamFjayIKK1BBQ0tBR0VDT05GSUdbbGliYXZdID0gIi0tZW5hYmxlLWxpYmF2LC0tZGlzYWJsZS1saWJhdixsaWJhdiIKK1BBQ0tBR0VDT05GSUdbbWFlbW8tcGx1Z2luXSA9ICItLWVuYWJsZS1tYWVtby1wbHVnaW4sLS1kaXNhYmxlLW1hZW1vLXBsdWdpbiIKK1BBQ0tBR0VDT05GSUdbbWFlbW8tcmVzb3VyY2UtbWFuYWdlcl0gPSAiLS1lbmFibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlciwtLWRpc2FibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlcixkYnVzIgorUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLWVuYWJsZS1wdWxzZWF1ZGlvLC0tZGlzYWJsZS1wdWxzZWF1ZGlvLHB1bHNlYXVkaW8iCitQQUNLQUdFQ09ORklHW3NhbXBsZXJhdGVdID0gIi0tZW5hYmxlLXNhbXBsZXJhdGUsLS1kaXNhYmxlLXNhbXBsZXJhdGUsbGlic2FtcGxlcmF0ZTAiCitQQUNLQUdFQ09ORklHW3NwZWV4ZHNwXSA9ICItLXdpdGgtc3BlZXg9bGliLC0td2l0aC1zcGVleD1ubyxzcGVleGRzcCIKKworUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAnYWxzYS1wbHVnaW5zLXB1bHNlYXVkaW8tY29uZicsICcnLCBkKX0iCisKK1BBQ0tBR0VTX0RZTkFNSUMgPSAiXmxpYmFzb3VuZC1tb2R1bGUtLioiCisKKyMgVGhlIGFsc2EtcGx1Z2lucyBwYWNrYWdlIGRvZXNuJ3QgaXRzZWxmIGNvbnRhaW4gYW55dGhpbmcsIGl0IGp1c3QgZGVwZW5kcyBvbgorIyBhbGwgYnVpbHQgcGx1Z2lucy4KK0ZJTEVTXyR7UE59ID0gIiIKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCXJtICR7RH0ke2xpYmRpcn0vYWxzYS1saWIvKi5sYQorCisJaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHVsc2VhdWRpbycsICd5ZXMnLCAnbm8nLCBkKX0iID0gInllcyIgXTsgdGhlbgorCQkjIFdlIHVzZSB0aGUgZXhhbXBsZSBhcyBpcy4gVXBzdHJlYW0gaW5zdGFsbHMgdGhlIGZpbGUgdW5kZXIKKwkJIyAvZXRjLCBidXQgd2UgbW92ZSBpdCB1bmRlciAvdXNyL3NoYXJlIGFuZCBhZGQgYSBzeW1saW5rIHVuZGVyCisJCSMgL2V0YyB0byBiZSBjb25zaXN0ZW50IHdpdGggb3RoZXIgaW5zdGFsbGVkIGNvbmZpZ3VyYXRpb24KKwkJIyBmaWxlcy4KKwkJbXYgJHtEfSR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYuZXhhbXBsZSAke0R9JHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mCisJCWxuIC1zICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiAke0R9JHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZgorCWZpCit9CisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kKCkgeworICAgIHBsdWdpbmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vYWxzYS1saWIvJykKKyAgICBwYWNrYWdlcyA9ICIgIi5qb2luKGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBsdWdpbmRpciwgcidebGliYXNvdW5kX21vZHVsZV8oLiopXC5zbyQnLCAnbGliYXNvdW5kLW1vZHVsZS0lcycsICdBbHNhIHBsdWdpbiBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnKSkKKyAgICBkLnNldFZhcigiUkRFUEVORFNfYWxzYS1wbHVnaW5zIiwgcGFja2FnZXMpCit9CisKKyMgTWFueSBwbHVnaW5zIGhhdmUgYSBjb25maWd1cmF0aW9uIGZpbGUgKHBsdXMgYSBzeW1saW5rIGluIC9ldGMpIGFzc29jaWF0ZWQKKyMgd2l0aCB0aGVtLiBXZSBwdXQgdGhlIHBsdWdpbiBhbmQgaXQncyBjb25maWd1cmF0aW9uIHVzdWFsbHkgaW4gdGhlIHNhbWUKKyMgcGFja2FnZSwgYnV0IHRoYXQncyBwcm9ibGVtYXRpYyB3aGVuIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgaXMgcmVsYXRlZCB0bworIyBtdWx0aXBsZSBwbHVnaW5zLCBhcyBpcyB0aGUgY2FzZSB3aXRoIHRoZSBwdWxzZSwgb3NzIGFuZCBtYWVtbyBwbHVnaW5zLiBJbgorIyBjYXNlIG9mIHRoZSBwdWxzZSBwbHVnaW5zLCB3ZSBoYXZlIGEgc2VwYXJhdGUgYWxzYS1wbHVnaW5zLXB1bHNlYXVkaW8tY29uZgorIyBwYWNrYWdlIHRoYXQgZGVwZW5kcyBvbiBhbGwgdGhlIHB1bHNlIHBsdWdpbnMsIHdoaWNoIGVuc3VyZXMgdGhhdCBhbGwgcGx1Z2lucworIyB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHJlZmVyZW5jZXMgYXJlIGluc3RhbGxlZC4gVGhlIG9zcyBhbmQgbWFlbW8KKyMgY29uZmlndXJhdGlvbiBmaWxlcywgb24gdGhlIG90aGVyIGhhbmQsIGFyZSBpbiB0aGUgcmVzcGVjdGl2ZSBwY20gcGx1Z2luCisjIHBhY2thZ2VzLiBUaGVyZWZvcmUgaXQncyBwb3NzaWJsZSB0byBpbnN0YWxsIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgd2l0aG91dAorIyB0aGUgY3RsIHBsdWdpbiB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGZpbGUgcmVmZXJlbmNlcy4gVGhpcyBpcyB1bmxpa2VseSB0bworIyBjYXVzZSBiaWcgcHJvYmxlbXMsIGJ1dCBzb21lIGtpbmQgb2YgaW1wcm92ZW1lbnQgdG8gdGhlIHBhY2thZ2luZyBjb3VsZAorIyBwcm9iYWJseSBiZSBkb25lIGhlcmUgKGF0IGxlYXN0IGl0IHdvdWxkIGJlIGdvb2QgdG8gaGFuZGxlIHRoZSBkaWZmZXJlbnQKKyMgcGx1Z2lucyBpbiBhIGNvbnNpc3RlbnQgd2F5KS4KK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1jdGwtYXJjYW0tYXYgKz0gIlwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzUwLWFyY2FtLWF2LWN0bC5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC81MC1hcmNhbS1hdi1jdGwuY29uZiBcCisiCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcGNtLWE1MiArPSAiXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNjAtYTUyLWVuY29kZXIuY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNjAtYTUyLWVuY29kZXIuY29uZiBcCisiCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcGNtLWFsc2EtZHNwICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OC1tYWVtby5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC85OC1tYWVtby5jb25mIFwKKyIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1wY20tamFjayArPSAiXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNTAtamFjay5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC81MC1qYWNrLmNvbmYgXAorIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS1vc3MgKz0gIlwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzUwLW9zcy5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC81MC1vc3MuY29uZiBcCisiCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcGNtLXNwZWV4ICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC82MC1zcGVleC5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC82MC1zcGVleC5jb25mIFwKKyIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1wY20tdXBtaXggKz0gIlwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzYwLXVwbWl4LmNvbmYgXAorICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzYwLXVwbWl4LmNvbmYgXAorIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS11c2Itc3RyZWFtICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OC11c2Itc3RyZWFtLmNvbmYgXAorICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzk4LXVzYi1zdHJlYW0uY29uZiBcCisiCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcGNtLXZkb3dubWl4ICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC82MC12ZG93bm1peC5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC82MC12ZG93bm1peC5jb25mIFwKKyIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLWxhdnJhdGUgKz0gIlwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzEwLXJhdGUtbGF2LmNvbmYgXAorICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzEwLXJhdGUtbGF2LmNvbmYgXAorIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc2FtcGxlcmF0ZSArPSAiXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvMTAtc2FtcGxlcmF0ZS5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC8xMC1zYW1wbGVyYXRlLmNvbmYgXAorIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC8xMC1zcGVleHJhdGUuY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvMTAtc3BlZXhyYXRlLmNvbmYgXAorIgorCisjIFRoZSByYXRlIHBsdWdpbnMgY3JlYXRlIHNvbWUgc3ltbGlua3MuIEZvciBleGFtcGxlLCB0aGUgc2FtcGxlcmF0ZSBwbHVnaW4KKyMgY3JlYXRlcyB0aGVzZSBsaW5rcyB0byB0aGUgbWFpbiBwbHVnaW4gZmlsZToKKyMKKyMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9iZXN0LnNvCisjICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfbGluZWFyLnNvCisjICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfbWVkaXVtLnNvCisjICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfb3JkZXIuc28KKyMKKyMgVGhlIG90aGVyIHJhdGUgcGx1Z2lucyBjcmVhdGUgc2ltaWxhciBsaW5rcy4gV2UgaGF2ZSB0byBhZGQgdGhlIGxpbmtzIHRvCisjIEZJTEVTIG1hbnVhbGx5LCBiZWNhdXNlIGRvX3NwbGl0X3BhY2thZ2VzKCkgc2tpcHMgdGhlIGxpbmtzICh3aGljaCBpcyBnb29kLAorIyBiZWNhdXNlIHdlIHdvdWxkbid0IHdhbnQgZG9fc3BsaXRfcGFja2FnZXMoKSB0byBjcmVhdGUgc2VwYXJhdGUgcGFja2FnZXMgZm9yCisjIHRoZSBzeW1saW5rcykuCisjCisjIFRoZSBzeW1saW5rcyBjYXVzZSBRQSBlcnJvcnMsIGJlY2F1c2UgdXN1YWxseSBpdCdzIGEgYnVnIGlmIGEgbm9uCisjIC1kZXYvLWRiZy8tbmF0aXZlc2RrIHBhY2thZ2UgY29udGFpbnMgbGlua3MgdG8gLnNvIGZpbGVzLCBidXQgaW4gdGhpcyBjYXNlCisjIHRoZSBlcnJvcnMgYXJlIGZhbHNlIHBvc2l0aXZlcywgc28gd2UgZGlzYWJsZSB0aGUgUUEgY2hlY2tzLgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtbGF2cmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX2xhdnJhdGVfKi5zbyIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNhbXBsZXJhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9zYW1wbGVyYXRlXyouc28iCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zcGVleHJhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9zcGVleHJhdGVfKi5zbyIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLWxhdnJhdGUgPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc2FtcGxlcmF0ZSA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zcGVleHJhdGUgPSAiZGV2LXNvIgorCisjIDUwLXB1bHNlYXVkaW8uY29uZiBkZWZpbmVzIGEgZGV2aWNlIG5hbWVkICJwdWxzZSIgdGhhdCBhcHBsaWNhdGlvbnMgY2FuIHVzZQorIyBpZiB0aGV5IGV4cGxpY2l0bHkgd2FudCB0byB1c2UgdGhlIFB1bHNlQXVkaW8gcGx1Z2luLgorIyA5OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiBjb25maWd1cmVzIHRoZSAiZGVmYXVsdCIgZGV2aWNlIHRvIHVzZSB0aGUKKyMgUHVsc2VBdWRpbyBwbHVnaW4uCitGSUxFU18ke1BOfS1wdWxzZWF1ZGlvLWNvbmYgKz0gIlwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzUwLXB1bHNlYXVkaW8uY29uZiBcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNTAtcHVsc2VhdWRpby5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiBcCisiCisKK1JERVBFTkRTXyR7UE59LXB1bHNlYXVkaW8tY29uZiArPSAiXAorICAgICAgICBsaWJhc291bmQtbW9kdWxlLWNvbmYtcHVsc2UgXAorICAgICAgICBsaWJhc291bmQtbW9kdWxlLWN0bC1wdWxzZSBcCisgICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtcGNtLXB1bHNlIFwKKyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvcG9sb2d5LWNvbmZfMS4yLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b3BvbG9neS1jb25mXzEuMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZDFmMzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b3BvbG9neS1jb25mXzEuMi4xLmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiQUxTQSB0b3BvbG9neSBjb25maWd1cmF0aW9uIGZpbGVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9hbHNhLXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2Fsc2EtcHJvamVjdC5vcmcvd2lraS9CdWdfVHJhY2tpbmciCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIwZDc0ZDc0ZGI5NzQxNjk3OTAzMzcyYWQwMDFkM2I0IgorCisjIFRoZSB0YXJiYWxsIGRvZXNuJ3QgaGF2ZSBhbnkgdG9wbGV2ZWwgZGlyZWN0b3J5LiBUaGUgc3ViZGlyIG9wdGlvbiB0ZWxscworIyBCaXRiYWtlIHRvIHVucGFjayB0aGUgYXJjaGl2ZSB0byB0aGUgY29ycmVjdCBwbGFjZS4KK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZy9maWxlcy9wdWIvbGliLyR7QlB9LnRhci5iejI7c3ViZGlyPSR7QlB9IgorU1JDX1VSSVttZDVzdW1dID0gIjdmZGY1ZmZmM2YxZTA2MDM0NTZlNzE5ZjYwMzNlOTIyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM1NGE0M2Y0MDMxYzk4YmVmMTM0OWFjNzIyZDgzYjI2MDNlZjQzOWY4MWExYWIxZWJhODgxNGMyODI0M2E5YjIiCisKK2luaGVyaXQgYWxsYXJjaAorCitkb19pbnN0YWxsKCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0vdXNyL3NoYXJlL2Fsc2EKKyAgICAgICAgY3AgLXIgJHtTfS90b3BvbG9neSAke0R9L3Vzci9zaGFyZS9hbHNhCit9CisKK1BBQ0tBR0VTID0gIiR7UE59IgorCitGSUxFU18ke1BOfSA9ICIqIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdWNtLWNvbmZfMS4yLjEuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXVjbS1jb25mXzEuMi4xLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY5ZDFmNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXVjbS1jb25mXzEuMi4xLjIuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJBTFNBIFVzZSBDYXNlIE1hbmFnZXIgY29uZmlndXJhdGlvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vYWxzYS1wcm9qZWN0Lm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9hbHNhLXByb2plY3Qub3JnL3dpa2kvQnVnX1RyYWNraW5nIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yMGQ3NGQ3NGRiOTc0MTY5NzkwMzM3MmFkMDAxZDNiNCIKKworIyBUaGUgdGFyYmFsbCBkb2Vzbid0IGhhdmUgYW55IHRvcGxldmVsIGRpcmVjdG9yeS4gVGhlIHN1YmRpciBvcHRpb24gdGVsbHMKKyMgQml0YmFrZSB0byB1bnBhY2sgdGhlIGFyY2hpdmUgdG8gdGhlIGNvcnJlY3QgcGxhY2UuCitTUkNfVVJJID0gImh0dHBzOi8vd3d3LmFsc2EtcHJvamVjdC5vcmcvZmlsZXMvcHViL2xpYi8ke0JQfS50YXIuYnoyO3N1YmRpcj0ke0JQfSIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiN2ZhNDNjZmQ3OWRmOTc4MTg0YTYzMzM3NjZkMmE1MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlYThhODY4NzVmNGNmNDMwZDQ5YTY2MmEwNGE2ZDZjNjA2YzVjOWQ2N2U1NGNiOTQ0YzRkNzdiMjQ1NTQwNjJmIgorCitpbmhlcml0IGFsbGFyY2gKKworZG9faW5zdGFsbCgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9L3Vzci9zaGFyZS9hbHNhCisgICAgICAgIGNwIC1yICR7U30vdWNtICR7RH0vdXNyL3NoYXJlL2Fsc2EKKyAgICAgICAgY3AgLXIgJHtTfS91Y20yICR7RH0vdXNyL3NoYXJlL2Fsc2EKK30KKworUEFDS0FHRVMgPSAiJHtQTn0iCisKK0ZJTEVTXyR7UE59ID0gIioiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlscy1zY3JpcHRzXzEuMS45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjIuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjEuOS5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjIuMS5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDNiNWM4ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi1TVU1NQVJZID0gIkFMU0Egc291bmQgdXRpbGl0aWVzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2Fsc2FjdGwvdXRpbHMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT0yY2U3ZjdiNjczOTQ4N2ZiNzJjNjg5ZDQ2NTIxZjk1OCIKLURFUEVORFMgPSAiYWxzYS1saWIgbmN1cnNlcyBsaWJzYW1wbGVyYXRlMCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInVkZXYiCi0KLSMgYWxzYWJhdCBjYW4gYmUgYnVpbHQgYWxzbyB3aXRob3V0IGZmdHcgc3VwcG9ydCAod2l0aCByZWR1Y2VkIGZ1bmN0aW9uYWxpdHkpLgotIyBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gYWx3YXlzIGVuYWJsZSBhbHNhYmF0LCBidXQgcHJvdmlkZSBhbiBvcHRpb24gZm9yCi0jIGVuYWJsaW5nL2Rpc2FibGluZyBmZnR3LiBUaGUgY29uZmlndXJlIHNjcmlwdCBkb2Vzbid0IHN1cHBvcnQgdGhhdCwgaG93ZXZlcgotIyAoYXQgbGVhc3QgaW4gYW55IG9idmlvdXMgd2F5KSwgc28gZm9yIG5vdyB3ZSBvbmx5IHN1cHBvcnQgYWxzYWJhdCB3aXRoIGZmdHcKLSMgb3Igbm8gYWxzYWJhdCBhdCBhbGwuCi1QQUNLQUdFQ09ORklHW2JhdF0gPSAiLS1lbmFibGUtYmF0LC0tZGlzYWJsZS1iYXQsZmZ0d2YiCi0KLVBBQ0tBR0VDT05GSUdbdWRldl0gPSAiLS13aXRoLXVkZXYtcnVsZXMtZGlyPWBwa2ctY29uZmlnIC0tdmFyaWFibGU9dWRldmRpciB1ZGV2YC9ydWxlcy5kLC0td2l0aC11ZGV2LXJ1bGVzLWRpcj0vdW53YW50ZWQvcnVsZXMuZCx1ZGV2IgotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUteG1sdG8sIC0tZGlzYWJsZS14bWx0bywgeG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKLQotIyBhbHNhLXV0aWxzIHNwZWNpZmllZCBpbiBTUkNfVVJJIGR1ZSB0byBhbHNhLXV0aWxzLXNjcmlwdHMgcmVjaXBlCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3LmFsc2EtcHJvamVjdC5vcmcvZmlsZXMvcHViL3V0aWxzL2Fsc2EtdXRpbHMtJHtQVn0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1ZWQyMWMzZTI5NmMwNjA0NmNjOTg2ZTczMmY2MjVmNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZGRmMmNiZGRiNGJkMWE0YTJhNjQ5MmEwOWMyNTg5OGIwOGMzYWQ2NDg5M2MzNjU1YmUxNDE5NGNmMGEyMTNhIgotCi0jIE9uIGJ1aWxkIG1hY2hpbmVzIHdpdGggcHl0aG9uLWRvY3V0aWxzIChub3QgcHl0aG9uMy1kb2N1dGlscyAhISkgaW5zdGFsbGVkCi0jIHJzdDJtYW4gKG5vdCByc3QybWFuLnB5KSBpcyBkZXRlY3RlZCBhbmQgY29tcGlsZSBmYWlscyB3aXRoCi0jIHwgbWFrZVsxXTogKioqIE5vIHJ1bGUgdG8gbWFrZSB0YXJnZXQgJ2Fsc2F1Y20uMScsIG5lZWRlZCBieSAnYWxsLWFtJy4gIFN0b3AuCi0jIEF2b2lkIHRoaXMgYnkgZGlzYWJsaW5nIGV4cGljaXRseQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1yc3QybWFuIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBtYW5wYWdlcwotCi0jIFRoaXMgYXJlIGFsbCBwYWNrYWdlcyB0aGF0IHdlIG5lZWQgdG8gbWFrZS4gQWxzbywgdGhlIG5vdyBlbXB0eSBhbHNhLXV0aWxzCi0jIGlwayBkZXBlbmRzIG9uIHRoZW0uCi0KLUFMU0FfVVRJTFNfUEtHUyA9ICJcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmF0JywgJ2Fsc2EtdXRpbHMtYWxzYWJhdCcsICcnLCBkKX0gXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYW1peGVyIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2F0cGxnIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLW1pZGkgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXBsYXkgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYW1peGVyIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFjb25uZWN0IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWllY3NldCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1zcGVha2VydGVzdCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hc2VxbmV0IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFzZXFkdW1wIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2FjdGwgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYWxvb3AgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYXVjbSBcCi0gICAgICAgICAgICAiCi0KLVBBQ0tBR0VTICs9ICIke0FMU0FfVVRJTFNfUEtHU30iCi1SREVQRU5EU18ke1BOfSArPSAiJHtBTFNBX1VUSUxTX1BLR1N9IgotCi1GSUxFU18ke1BOfSA9ICIiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2FiYXQgICAgID0gIiR7YmluZGlyfS9hbHNhYmF0IgotRklMRVNfYWxzYS11dGlscy1hbHNhdHBsZyAgICA9ICIke2JpbmRpcn0vYWxzYXRwbGciCi1GSUxFU19hbHNhLXV0aWxzLWFwbGF5ICAgICAgID0gIiR7YmluZGlyfS9hcGxheSAke2JpbmRpcn0vYXJlY29yZCAke2JpbmRpcn0vYXhmZXIiCi1GSUxFU19hbHNhLXV0aWxzLWFtaXhlciAgICAgID0gIiR7YmluZGlyfS9hbWl4ZXIiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2FtaXhlciAgID0gIiR7YmluZGlyfS9hbHNhbWl4ZXIiCi1GSUxFU19hbHNhLXV0aWxzLXNwZWFrZXJ0ZXN0ID0gIiR7YmluZGlyfS9zcGVha2VyLXRlc3QgJHtkYXRhZGlyfS9zb3VuZHMvYWxzYS8gJHtkYXRhZGlyfS9hbHNhL3NwZWFrZXItdGVzdC8iCi1GSUxFU19hbHNhLXV0aWxzLW1pZGkgICAgICAgID0gIiR7YmluZGlyfS9hcGxheW1pZGkgJHtiaW5kaXJ9L2FyZWNvcmRtaWRpICR7YmluZGlyfS9hbWlkaSIKLUZJTEVTX2Fsc2EtdXRpbHMtYWNvbm5lY3QgICAgPSAiJHtiaW5kaXJ9L2Fjb25uZWN0IgotRklMRVNfYWxzYS11dGlscy1hc2VxbmV0ICAgICA9ICIke2JpbmRpcn0vYXNlcW5ldCIKLUZJTEVTX2Fsc2EtdXRpbHMtaWVjc2V0ICAgICAgPSAiJHtiaW5kaXJ9L2llY3NldCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYWN0bCAgICAgPSAiJHtzYmluZGlyfS9hbHNhY3RsICovdWRldi9ydWxlcy5kLzkwLWFsc2EtcmVzdG9yZS5ydWxlcyAqLyovdWRldi9ydWxlcy5kLzkwLWFsc2EtcmVzdG9yZS5ydWxlcyAke3N5c3RlbWRfdW5pdGRpcn0gJHtsb2NhbHN0YXRlZGlyfS9saWIvYWxzYSAke2RhdGFkaXJ9L2Fsc2EvaW5pdC8iCi1GSUxFU19hbHNhLXV0aWxzLWFzZXFkdW1wICAgID0gIiR7YmluZGlyfS9hc2VxZHVtcCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgPSAiJHtiaW5kaXJ9L2Fsc2Fsb29wIgotRklMRVNfYWxzYS11dGlscy1hbHNhdWNtICAgICA9ICIke2JpbmRpcn0vYWxzYXVjbSAqL3VkZXYvcnVsZXMuZC84OS1hbHNhLXVjbS5ydWxlcyAqLyovdWRldi9ydWxlcy5kLzg5LWFsc2EtdWNtLnJ1bGVzIgotCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWJhdCAgICAgID0gIkNvbW1hbmQtbGluZSBzb3VuZCB0ZXN0ZXIgZm9yIEFMU0Egc291bmQgY2FyZCBkcml2ZXIiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXRwbGcgICAgID0gIkNvbnZlcnRzIHRvcG9sb2d5IHRleHQgZmlsZXMgaW50byBiaW5hcnkgZm9ybWF0IGZvciBrZXJuZWwiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYXBsYXkgICAgICAgID0gIlBsYXkgKGFuZCByZWNvcmQpIHNvdW5kIGZpbGVzIHVzaW5nIEFMU0EiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYW1peGVyICAgICAgID0gIkNvbW1hbmQtbGluZSBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKLVNVTU1BUllfYWxzYS11dGlscy1hbHNhbWl4ZXIgICAgPSAibmN1cnNlcy1iYXNlZCBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKLVNVTU1BUllfYWxzYS11dGlscy1zcGVha2VydGVzdCAgPSAiQUxTQSBzdXJyb3VuZCBzcGVha2VyIHRlc3QgdXRpbGl0eSIKLVNVTU1BUllfYWxzYS11dGlscy1taWRpICAgICAgICAgPSAiTWlzY2VsbGFuZW91cyBNSURJIHV0aWxpdGllcyBmb3IgQUxTQSIKLVNVTU1BUllfYWxzYS11dGlscy1hY29ubmVjdCAgICAgPSAiQUxTQSBzZXF1ZW5jZXIgY29ubmVjdGlvbiBtYW5hZ2VyIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFuZXQgICAgICA9ICJOZXR3b3JrIGNsaWVudC9zZXJ2ZXIgZm9yIEFMU0Egc2VxdWVuY2VyIgotU1VNTUFSWV9hbHNhLXV0aWxzLWllY3NldCAgICAgICA9ICJBTFNBIHV0aWxpdHkgZm9yIHNldHRpbmcvc2hvd2luZyBJRUM5NTggKFMvUERJRikgc3RhdHVzIGJpdHMiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWN0bCAgICAgID0gIlNhdmVzL3Jlc3RvcmVzIEFMU0Etc2V0dGluZ3MgaW4gL2V0Yy9hc291bmQuc3RhdGUiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYXNlcWR1bXAgICAgID0gIlNob3dzIHRoZSBldmVudHMgcmVjZWl2ZWQgYXQgYW4gQUxTQSBzZXF1ZW5jZXIgcG9ydCIKLVNVTU1BUllfYWxzYS11dGlscy1hbHNhbG9vcCAgICAgPSAiQUxTQSBQQ00gbG9vcGJhY2sgdXRpbGl0eSIKLVNVTU1BUllfYWxzYS11dGlscy1hbHNhdWNtICAgICAgPSAiQUxTQSBVc2UgQ2FzZSBNYW5hZ2VyIgotCi1SUkVDT01NRU5EU19hbHNhLXV0aWxzLWFsc2FjdGwgPSAiYWxzYS1zdGF0ZXMiCi0KLUFMTE9XX0VNUFRZX2Fsc2EtdXRpbHMgPSAiMSIKLQotZG9faW5zdGFsbCgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCi0JIyBXZSBkb24ndCBzaGlwIHRoaXMgaGVyZSBiZWNhdXNlIGl0IHJlcXVpcmVzIGEgZGVwZW5kZW5jeSBvbiBiYXNoLgotCSMgU2VlIGFsc2EtdXRpbHMtc2NyaXB0c18ke1BWfS5iYgotCXJtICR7RH0ke3NiaW5kaXJ9L2Fsc2Fjb25mCi0Jcm0gJHtEfSR7c2JpbmRpcn0vYWxzYS1pbmZvLnNoCi0Jcm0gLWYgJHtEfSR7c2JpbmRpcn0vYWxzYWJhdC10ZXN0LnNoCi0KLQkjIElmIHVkZXYgaXMgZGlzYWJsZWQsIHdlIHRvbGQgY29uZmlndXJlIHRvIGluc3RhbGwgdGhlIHJ1bGVzCi0JIyBpbiAvdW53YW50ZWQsIHNvIHdlIGNhbiByZW1vdmUgdGhlbSBub3cuIElmIHVkZXYgaXMgZW5hYmxlZCwKLQkjIHRoZW4gL3Vud2FudGVkIHdvbid0IGV4aXN0IGFuZCB0aGlzIHdpbGwgaGF2ZSBubyBlZmZlY3QuCi0Jcm0gLXJmICR7RH0vdW53YW50ZWQKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE0NGFmNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMi4xLmJiCkBAIC0wLDAgKzEsMTA1IEBACitTVU1NQVJZID0gIkFMU0Egc291bmQgdXRpbGl0aWVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2Fsc2FjdGwvdXRpbHMuYztiZWdpbmxpbmU9MztlbmRsaW5lPTE4O21kNT05NmNjMDZhNGNlYmU1ZWI3OTc1Njg4ZmZiMGU2NTY0MiIKK0RFUEVORFMgPSAiYWxzYS1saWIgbmN1cnNlcyBsaWJzYW1wbGVyYXRlMCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInVkZXYiCisKKyMgYWxzYWJhdCBjYW4gYmUgYnVpbHQgYWxzbyB3aXRob3V0IGZmdHcgc3VwcG9ydCAod2l0aCByZWR1Y2VkIGZ1bmN0aW9uYWxpdHkpLgorIyBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gYWx3YXlzIGVuYWJsZSBhbHNhYmF0LCBidXQgcHJvdmlkZSBhbiBvcHRpb24gZm9yCisjIGVuYWJsaW5nL2Rpc2FibGluZyBmZnR3LiBUaGUgY29uZmlndXJlIHNjcmlwdCBkb2Vzbid0IHN1cHBvcnQgdGhhdCwgaG93ZXZlcgorIyAoYXQgbGVhc3QgaW4gYW55IG9idmlvdXMgd2F5KSwgc28gZm9yIG5vdyB3ZSBvbmx5IHN1cHBvcnQgYWxzYWJhdCB3aXRoIGZmdHcKKyMgb3Igbm8gYWxzYWJhdCBhdCBhbGwuCitQQUNLQUdFQ09ORklHW2JhdF0gPSAiLS1lbmFibGUtYmF0LC0tZGlzYWJsZS1iYXQsZmZ0d2YiCisKK1BBQ0tBR0VDT05GSUdbdWRldl0gPSAiLS13aXRoLXVkZXYtcnVsZXMtZGlyPWBwa2ctY29uZmlnIC0tdmFyaWFibGU9dWRldmRpciB1ZGV2YC9ydWxlcy5kLC0td2l0aC11ZGV2LXJ1bGVzLWRpcj0vdW53YW50ZWQvcnVsZXMuZCx1ZGV2IgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUteG1sdG8sIC0tZGlzYWJsZS14bWx0bywgeG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKKworIyBhbHNhLXV0aWxzIHNwZWNpZmllZCBpbiBTUkNfVVJJIGR1ZSB0byBhbHNhLXV0aWxzLXNjcmlwdHMgcmVjaXBlCitTUkNfVVJJID0gImh0dHBzOi8vd3d3LmFsc2EtcHJvamVjdC5vcmcvZmlsZXMvcHViL3V0aWxzL2Fsc2EtdXRpbHMtJHtQVn0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjNDYyOGJhZTc2MzI5MzdlYWMyZGU0Y2YyYTNkZTgyZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwYjExMGJhNzFlZjQxZDMwMDlkYjFiYzRkY2FlMGNmNzllZmI5OWNiNTQyNmZhMTlkMDMxMjQ3MDU2MGEyYzBkIgorCisjIE9uIGJ1aWxkIG1hY2hpbmVzIHdpdGggcHl0aG9uLWRvY3V0aWxzIChub3QgcHl0aG9uMy1kb2N1dGlscyAhISkgaW5zdGFsbGVkCisjIHJzdDJtYW4gKG5vdCByc3QybWFuLnB5KSBpcyBkZXRlY3RlZCBhbmQgY29tcGlsZSBmYWlscyB3aXRoCisjIHwgbWFrZVsxXTogKioqIE5vIHJ1bGUgdG8gbWFrZSB0YXJnZXQgJ2Fsc2F1Y20uMScsIG5lZWRlZCBieSAnYWxsLWFtJy4gIFN0b3AuCisjIEF2b2lkIHRoaXMgYnkgZGlzYWJsaW5nIGV4cGljaXRseQorRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1yc3QybWFuIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBtYW5wYWdlcworCisjIFRoaXMgYXJlIGFsbCBwYWNrYWdlcyB0aGF0IHdlIG5lZWQgdG8gbWFrZS4gQWxzbywgdGhlIG5vdyBlbXB0eSBhbHNhLXV0aWxzCisjIGlwayBkZXBlbmRzIG9uIHRoZW0uCisKK0FMU0FfVVRJTFNfUEtHUyA9ICJcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmF0JywgJ2Fsc2EtdXRpbHMtYWxzYWJhdCcsICcnLCBkKX0gXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYW1peGVyIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2F0cGxnIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLW1pZGkgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXBsYXkgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYW1peGVyIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFjb25uZWN0IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWllY3NldCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1zcGVha2VydGVzdCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hc2VxbmV0IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFzZXFkdW1wIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2FjdGwgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYWxvb3AgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYXVjbSBcCisgICAgICAgICAgICAiCisKK1BBQ0tBR0VTICs9ICIke0FMU0FfVVRJTFNfUEtHU30iCitSREVQRU5EU18ke1BOfSArPSAiJHtBTFNBX1VUSUxTX1BLR1N9IgorCitGSUxFU18ke1BOfSA9ICIiCitBTExPV19FTVBUWV9hbHNhLXV0aWxzID0gIjEiCitGSUxFU19hbHNhLXV0aWxzLWFsc2FiYXQgICAgID0gIiR7YmluZGlyfS9hbHNhYmF0IgorRklMRVNfYWxzYS11dGlscy1hbHNhdHBsZyAgICA9ICIke2JpbmRpcn0vYWxzYXRwbGciCitGSUxFU19hbHNhLXV0aWxzLWFwbGF5ICAgICAgID0gIiR7YmluZGlyfS9hcGxheSAke2JpbmRpcn0vYXJlY29yZCAke2JpbmRpcn0vYXhmZXIiCitGSUxFU19hbHNhLXV0aWxzLWFtaXhlciAgICAgID0gIiR7YmluZGlyfS9hbWl4ZXIiCitGSUxFU19hbHNhLXV0aWxzLWFsc2FtaXhlciAgID0gIiR7YmluZGlyfS9hbHNhbWl4ZXIiCitGSUxFU19hbHNhLXV0aWxzLXNwZWFrZXJ0ZXN0ID0gIiR7YmluZGlyfS9zcGVha2VyLXRlc3QgJHtkYXRhZGlyfS9zb3VuZHMvYWxzYS8gJHtkYXRhZGlyfS9hbHNhL3NwZWFrZXItdGVzdC8iCitGSUxFU19hbHNhLXV0aWxzLW1pZGkgICAgICAgID0gIiR7YmluZGlyfS9hcGxheW1pZGkgJHtiaW5kaXJ9L2FyZWNvcmRtaWRpICR7YmluZGlyfS9hbWlkaSIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWNvbm5lY3QgICAgPSAiJHtiaW5kaXJ9L2Fjb25uZWN0IgorRklMRVNfYWxzYS11dGlscy1hc2VxbmV0ICAgICA9ICIke2JpbmRpcn0vYXNlcW5ldCIKK0ZJTEVTX2Fsc2EtdXRpbHMtaWVjc2V0ICAgICAgPSAiJHtiaW5kaXJ9L2llY3NldCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYWN0bCAgICAgPSAiJHtzYmluZGlyfS9hbHNhY3RsICovdWRldi9ydWxlcy5kLzkwLWFsc2EtcmVzdG9yZS5ydWxlcyAqLyovdWRldi9ydWxlcy5kLzkwLWFsc2EtcmVzdG9yZS5ydWxlcyAke3N5c3RlbWRfdW5pdGRpcn0gJHtsb2NhbHN0YXRlZGlyfS9saWIvYWxzYSAke2RhdGFkaXJ9L2Fsc2EvaW5pdC8iCitGSUxFU19hbHNhLXV0aWxzLWFzZXFkdW1wICAgID0gIiR7YmluZGlyfS9hc2VxZHVtcCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgPSAiJHtiaW5kaXJ9L2Fsc2Fsb29wIgorRklMRVNfYWxzYS11dGlscy1hbHNhdWNtICAgICA9ICIke2JpbmRpcn0vYWxzYXVjbSAqL3VkZXYvcnVsZXMuZC84OS1hbHNhLXVjbS5ydWxlcyAqLyovdWRldi9ydWxlcy5kLzg5LWFsc2EtdWNtLnJ1bGVzIgorCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWJhdCAgICAgID0gIkNvbW1hbmQtbGluZSBzb3VuZCB0ZXN0ZXIgZm9yIEFMU0Egc291bmQgY2FyZCBkcml2ZXIiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXRwbGcgICAgID0gIkNvbnZlcnRzIHRvcG9sb2d5IHRleHQgZmlsZXMgaW50byBiaW5hcnkgZm9ybWF0IGZvciBrZXJuZWwiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYXBsYXkgICAgICAgID0gIlBsYXkgKGFuZCByZWNvcmQpIHNvdW5kIGZpbGVzIHVzaW5nIEFMU0EiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYW1peGVyICAgICAgID0gIkNvbW1hbmQtbGluZSBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhbWl4ZXIgICAgPSAibmN1cnNlcy1iYXNlZCBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKK1NVTU1BUllfYWxzYS11dGlscy1zcGVha2VydGVzdCAgPSAiQUxTQSBzdXJyb3VuZCBzcGVha2VyIHRlc3QgdXRpbGl0eSIKK1NVTU1BUllfYWxzYS11dGlscy1taWRpICAgICAgICAgPSAiTWlzY2VsbGFuZW91cyBNSURJIHV0aWxpdGllcyBmb3IgQUxTQSIKK1NVTU1BUllfYWxzYS11dGlscy1hY29ubmVjdCAgICAgPSAiQUxTQSBzZXF1ZW5jZXIgY29ubmVjdGlvbiBtYW5hZ2VyIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFuZXQgICAgICA9ICJOZXR3b3JrIGNsaWVudC9zZXJ2ZXIgZm9yIEFMU0Egc2VxdWVuY2VyIgorU1VNTUFSWV9hbHNhLXV0aWxzLWllY3NldCAgICAgICA9ICJBTFNBIHV0aWxpdHkgZm9yIHNldHRpbmcvc2hvd2luZyBJRUM5NTggKFMvUERJRikgc3RhdHVzIGJpdHMiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWN0bCAgICAgID0gIlNhdmVzL3Jlc3RvcmVzIEFMU0Etc2V0dGluZ3MgaW4gL2V0Yy9hc291bmQuc3RhdGUiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYXNlcWR1bXAgICAgID0gIlNob3dzIHRoZSBldmVudHMgcmVjZWl2ZWQgYXQgYW4gQUxTQSBzZXF1ZW5jZXIgcG9ydCIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhbG9vcCAgICAgPSAiQUxTQSBQQ00gbG9vcGJhY2sgdXRpbGl0eSIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhdWNtICAgICAgPSAiQUxTQSBVc2UgQ2FzZSBNYW5hZ2VyIgorCitSUkVDT01NRU5EU19hbHNhLXV0aWxzLWFsc2FjdGwgPSAiYWxzYS1zdGF0ZXMiCisKK2RvX2luc3RhbGwoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCSMgV2UgZG9uJ3Qgc2hpcCB0aGlzIGhlcmUgYmVjYXVzZSBpdCByZXF1aXJlcyBhIGRlcGVuZGVuY3kgb24gYmFzaC4KKwkjIFNlZSBhbHNhLXV0aWxzLXNjcmlwdHNfJHtQVn0uYmIKKwlybSAke0R9JHtzYmluZGlyfS9hbHNhY29uZgorCXJtICR7RH0ke3NiaW5kaXJ9L2Fsc2EtaW5mby5zaAorCXJtIC1mICR7RH0ke3NiaW5kaXJ9L2Fsc2FiYXQtdGVzdC5zaAorCisJIyBJZiB1ZGV2IGlzIGRpc2FibGVkLCB3ZSB0b2xkIGNvbmZpZ3VyZSB0byBpbnN0YWxsIHRoZSBydWxlcworCSMgaW4gL3Vud2FudGVkLCBzbyB3ZSBjYW4gcmVtb3ZlIHRoZW0gbm93LiBJZiB1ZGV2IGlzIGVuYWJsZWQsCisJIyB0aGVuIC91bndhbnRlZCB3b24ndCBleGlzdCBhbmQgdGhpcyB3aWxsIGhhdmUgbm8gZWZmZWN0LgorCXJtIC1yZiAke0R9L3Vud2FudGVkCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfNC4yLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfNC4yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhYzE4YmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzQuMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTU4ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBjb21wbGV0ZSwgY3Jvc3MtcGxhdGZvcm0gc29sdXRpb24gdG8gcmVjb3JkLCBjb252ZXJ0IGFuZCBzdHJlYW0gYXVkaW8gYW5kIHZpZGVvLiIKLURFU0NSSVBUSU9OID0gIkZGbXBlZyBpcyB0aGUgbGVhZGluZyBtdWx0aW1lZGlhIGZyYW1ld29yaywgYWJsZSB0byBkZWNvZGUsIGVuY29kZSwgdHJhbnNjb2RlLCBcCi0gICAgICAgICAgICAgICBtdXgsIGRlbXV4LCBzdHJlYW0sIGZpbHRlciBhbmQgcGxheSBwcmV0dHkgbXVjaCBhbnl0aGluZyB0aGF0IGh1bWFucyBhbmQgbWFjaGluZXMgXAotICAgICAgICAgICAgICAgaGF2ZSBjcmVhdGVkLiBJdCBzdXBwb3J0cyB0aGUgbW9zdCBvYnNjdXJlIGFuY2llbnQgZm9ybWF0cyB1cCB0byB0aGUgY3V0dGluZyBlZGdlLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkJTRCAmIEdQTHYyKyAmIExHUEx2Mi4xKyAmIE1JVCIKLUxJQ0VOU0VfJHtQTn0gPSAiR1BMdjIrIgotTElDRU5TRV9saWJhdmNvZGVjID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdmRldmljZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZmaWx0ZXIgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYmF2Zm9ybWF0ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdnJlc2FtcGxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdnV0aWwgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYnBvc3Rwcm9jID0gIkdQTHYyKyIKLUxJQ0VOU0VfbGlic3dyZXNhbXBsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGlic3dzY2FsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5HUEx2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEx2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMdjIuMTttZDU9YmQ3YTQ0MzMyMGFmOGM4MTJlNGMxOGQxYjc5ZGYwMDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgotCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvcmVsZWFzZXMvJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL21pcHM2NF9jcHVfZGV0ZWN0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjY3ZGE5MDRjZjlmZGRlZWIxMGExMzA4ZmMwZGMzOWRlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNlYzdjODdlOWI2MGQxNzQ1MDllMjYzYWM0MDExYjUyMjM4NWZkMDc3NTI5MmUxNjcwZWNjMTE4MGM5YmI2ZDQiCi0KLSMgQnVpbGQgZmFpbHMgd2hlbiB0aHVtYiBpcyBlbmFibGVkOiBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTcKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKLQotIyBTaG91bGQgYmUgQVBJIGNvbXBhdGlibGUgd2l0aCBsaWJhdiAod2hpY2ggd2FzIGEgZm9yayBvZiBmZm1wZWcpCi0jIGxpYnBvc3Rwcm9jIHdhcyBwcmV2aW91c2x5IHBhY2thZ2VkIGZyb20gYSBzZXBhcmF0ZSByZWNpcGUKLVBST1ZJREVTID0gImxpYmF2IGxpYnBvc3Rwcm9jIgotCi1ERVBFTkRTID0gIm5hc20tbmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImF2ZGV2aWNlIGF2ZmlsdGVyIGF2Y29kZWMgYXZmb3JtYXQgc3dyZXNhbXBsZSBzd3NjYWxlIHBvc3Rwcm9jIGF2cmVzYW1wbGUgXAotICAgICAgICAgICAgICAgICAgIGFsc2EgYnpsaWIgZ3BsIGx6bWEgdGhlb3JhIHgyNjQgemxpYiBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneHYgeGNiJywgJycsIGQpfSIKLQotIyBsaWJyYXJpZXMgdG8gYnVpbGQgaW4gYWRkaXRpb24gdG8gYXZ1dGlsCi1QQUNLQUdFQ09ORklHW2F2ZGV2aWNlXSA9ICItLWVuYWJsZS1hdmRldmljZSwtLWRpc2FibGUtYXZkZXZpY2UiCi1QQUNLQUdFQ09ORklHW2F2ZmlsdGVyXSA9ICItLWVuYWJsZS1hdmZpbHRlciwtLWRpc2FibGUtYXZmaWx0ZXIiCi1QQUNLQUdFQ09ORklHW2F2Y29kZWNdID0gIi0tZW5hYmxlLWF2Y29kZWMsLS1kaXNhYmxlLWF2Y29kZWMiCi1QQUNLQUdFQ09ORklHW2F2Zm9ybWF0XSA9ICItLWVuYWJsZS1hdmZvcm1hdCwtLWRpc2FibGUtYXZmb3JtYXQiCi1QQUNLQUdFQ09ORklHW3N3cmVzYW1wbGVdID0gIi0tZW5hYmxlLXN3cmVzYW1wbGUsLS1kaXNhYmxlLXN3cmVzYW1wbGUiCi1QQUNLQUdFQ09ORklHW3N3c2NhbGVdID0gIi0tZW5hYmxlLXN3c2NhbGUsLS1kaXNhYmxlLXN3c2NhbGUiCi1QQUNLQUdFQ09ORklHW3Bvc3Rwcm9jXSA9ICItLWVuYWJsZS1wb3N0cHJvYywtLWRpc2FibGUtcG9zdHByb2MiCi1QQUNLQUdFQ09ORklHW2F2cmVzYW1wbGVdID0gIi0tZW5hYmxlLWF2cmVzYW1wbGUsLS1kaXNhYmxlLWF2cmVzYW1wbGUiCi0KLSMgZmVhdHVyZXMgdG8gc3VwcG9ydAotUEFDS0FHRUNPTkZJR1thbHNhXSA9ICItLWVuYWJsZS1hbHNhLC0tZGlzYWJsZS1hbHNhLGFsc2EtbGliIgotUEFDS0FHRUNPTkZJR1tiemxpYl0gPSAiLS1lbmFibGUtYnpsaWIsLS1kaXNhYmxlLWJ6bGliLGJ6aXAyIgotUEFDS0FHRUNPTkZJR1tncGxdID0gIi0tZW5hYmxlLWdwbCwtLWRpc2FibGUtZ3BsIgotUEFDS0FHRUNPTkZJR1tnc21dID0gIi0tZW5hYmxlLWxpYmdzbSwtLWRpc2FibGUtbGliZ3NtLGxpYmdzbSIKLVBBQ0tBR0VDT05GSUdbamFja10gPSAiLS1lbmFibGUtaW5kZXY9amFjaywtLWRpc2FibGUtaW5kZXY9amFjayxqYWNrIgotUEFDS0FHRUNPTkZJR1tsaWJ2b3JiaXNdID0gIi0tZW5hYmxlLWxpYnZvcmJpcywtLWRpc2FibGUtbGlidm9yYmlzLGxpYnZvcmJpcyIKLVBBQ0tBR0VDT05GSUdbbHptYV0gPSAiLS1lbmFibGUtbHptYSwtLWRpc2FibGUtbHptYSx4eiIKLVBBQ0tBR0VDT05GSUdbbWZ4XSA9ICItLWVuYWJsZS1saWJtZngsLS1kaXNhYmxlLWxpYm1meCxpbnRlbC1tZWRpYXNkayIKLVBBQ0tBR0VDT05GSUdbbXAzbGFtZV0gPSAiLS1lbmFibGUtbGlibXAzbGFtZSwtLWRpc2FibGUtbGlibXAzbGFtZSxsYW1lIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3NkbDJdID0gIi0tZW5hYmxlLXNkbDIsLS1kaXNhYmxlLXNkbDIsdmlydHVhbC9saWJzZGwyIgotUEFDS0FHRUNPTkZJR1tzcGVleF0gPSAiLS1lbmFibGUtbGlic3BlZXgsLS1kaXNhYmxlLWxpYnNwZWV4LHNwZWV4IgotUEFDS0FHRUNPTkZJR1t0aGVvcmFdID0gIi0tZW5hYmxlLWxpYnRoZW9yYSwtLWRpc2FibGUtbGlidGhlb3JhLGxpYnRoZW9yYSBsaWJvZ2ciCi1QQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItLWVuYWJsZS12YWFwaSwtLWRpc2FibGUtdmFhcGksbGlidmEiCi1QQUNLQUdFQ09ORklHW3ZkcGF1XSA9ICItLWVuYWJsZS12ZHBhdSwtLWRpc2FibGUtdmRwYXUsbGlidmRwYXUiCi1QQUNLQUdFQ09ORklHW3ZweF0gPSAiLS1lbmFibGUtbGlidnB4LC0tZGlzYWJsZS1saWJ2cHgsbGlidnB4IgotUEFDS0FHRUNPTkZJR1t4MjY0XSA9ICItLWVuYWJsZS1saWJ4MjY0LC0tZGlzYWJsZS1saWJ4MjY0LHgyNjQiCi1QQUNLQUdFQ09ORklHW3hjYl0gPSAiLS1lbmFibGUtbGlieGNiLC0tZGlzYWJsZS1saWJ4Y2IsbGlieGNiIgotUEFDS0FHRUNPTkZJR1t4dl0gPSAiLS1lbmFibGUtb3V0ZGV2PXh2LC0tZGlzYWJsZS1vdXRkZXY9eHYsbGlieHYiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0tZW5hYmxlLXpsaWIsLS1kaXNhYmxlLXpsaWIsemxpYiIKLQotIyBDaGVjayBjb2RlY3MgdGhhdCByZXF1aXJlIC0tZW5hYmxlLW5vbmZyZWUKLVVTRV9OT05GUkVFID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnUEFDS0FHRUNPTkZJRycsIFsgJ29wZW5zc2wnIF0sICd5ZXMnLCAnJywgZCl9IgotCi1kZWYgY3B1KGQpOgotICAgIGZvciBhcmcgaW4gKGQuZ2V0VmFyKCdUVU5FX0NDQVJHUycpIG9yICcnKS5zcGxpdCgpOgotICAgICAgICBpZiBhcmcuc3RhcnRzd2l0aCgnLW1jcHU9Jyk6Ci0gICAgICAgICAgICByZXR1cm4gYXJnWzY6XQotICAgIHJldHVybiAnZ2VuZXJpYycKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1kaXNhYmxlLXN0cmlwcGluZyBcCi0gICAgLS1lbmFibGUtcGljIFwKLSAgICAtLWVuYWJsZS1zaGFyZWQgXAotICAgIC0tZW5hYmxlLXB0aHJlYWRzIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnVVNFX05PTkZSRUUnLCAneWVzJywgJy0tZW5hYmxlLW5vbmZyZWUnLCAnJywgZCl9IFwKLSAgICBcCi0gICAgLS1jcm9zcy1wcmVmaXg9JHtUQVJHRVRfUFJFRklYfSBcCi0gICAgXAotICAgIC0tbGQ9IiR7Q0NMRH0iIFwKLSAgICAtLWNjPSIke0NDfSIgXAotICAgIC0tY3h4PSIke0NYWH0iIFwKLSAgICAtLWFyY2g9JHtUQVJHRVRfQVJDSH0gXAotICAgIC0tdGFyZ2V0LW9zPSJsaW51eCIgXAotICAgIC0tZW5hYmxlLWNyb3NzLWNvbXBpbGUgXAotICAgIC0tZXh0cmEtY2ZsYWdzPSIke0NGTEFHU30gJHtIT1NUX0NDX0FSQ0h9JHtUT09MQ0hBSU5fT1BUSU9OU30iIFwKLSAgICAtLWV4dHJhLWxkZmxhZ3M9IiR7TERGTEFHU30iIFwKLSAgICAtLXN5c3Jvb3Q9IiR7U1RBR0lOR19ESVJfVEFSR0VUfSIgXAotICAgICR7RVhUUkFfRkZDT05GfSBcCi0gICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKLSAgICAtLXNobGliZGlyPSR7bGliZGlyfSBcCi0gICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0vZmZtcGVnIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnQVZBSUxUVU5FUycsICdtaXBzMzJyMicsICcnLCAnLS1kaXNhYmxlLW1pcHNkc3AgLS1kaXNhYmxlLW1pcHNkc3ByMicsIGQpfSBcCi0gICAgLS1jcHU9JHtAY3B1KGQpfSBcCi0gICAgLS1wa2ctY29uZmlnPXBrZy1jb25maWcgXAotIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgLS1kaXNhYmxlLWFzbSIKLSMgZ29sZCBjcmFzaGVzIG9uIHg4NiwgYW5vdGhlciBzb2x1dGlvbiBpcyB0byAtLWRpc2FibGUtYXNtIGJ1dCB0aGF0cyBtb3JlIGhhY2t5Ci0jIGxkLmdvbGQ6IGludGVybmFsIGVycm9yIGluIHJlbG9jYXRlX3NlY3Rpb24sIGF0IC4uLy4uL2dvbGQvaTM4Ni5jYzozNjg0Ci0KLUxERkxBR1NfYXBwZW5kX3g4NiA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAnIC1mdXNlLWxkPWJmZCAnLCAnJywgZCl9IgotCi1FWFRSQV9PRU1BS0UgPSAiVj0xIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgJHtTfS9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Ci19Ci0KLVBBQ0tBR0VTID0rICJsaWJhdmNvZGVjIFwKLSAgICAgICAgICAgICBsaWJhdmRldmljZSBcCi0gICAgICAgICAgICAgbGliYXZmaWx0ZXIgXAotICAgICAgICAgICAgIGxpYmF2Zm9ybWF0IFwKLSAgICAgICAgICAgICBsaWJhdnJlc2FtcGxlIFwKLSAgICAgICAgICAgICBsaWJhdnV0aWwgXAotICAgICAgICAgICAgIGxpYnBvc3Rwcm9jIFwKLSAgICAgICAgICAgICBsaWJzd3Jlc2FtcGxlIFwKLSAgICAgICAgICAgICBsaWJzd3NjYWxlIgotCi1GSUxFU19saWJhdmNvZGVjID0gIiR7bGliZGlyfS9saWJhdmNvZGVjJHtTT0xJQlN9IgotRklMRVNfbGliYXZkZXZpY2UgPSAiJHtsaWJkaXJ9L2xpYmF2ZGV2aWNlJHtTT0xJQlN9IgotRklMRVNfbGliYXZmaWx0ZXIgPSAiJHtsaWJkaXJ9L2xpYmF2ZmlsdGVyJHtTT0xJQlN9IgotRklMRVNfbGliYXZmb3JtYXQgPSAiJHtsaWJkaXJ9L2xpYmF2Zm9ybWF0JHtTT0xJQlN9IgotRklMRVNfbGliYXZyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGliYXZyZXNhbXBsZSR7U09MSUJTfSIKLUZJTEVTX2xpYmF2dXRpbCA9ICIke2xpYmRpcn0vbGliYXZ1dGlsJHtTT0xJQlN9IgotRklMRVNfbGlicG9zdHByb2MgPSAiJHtsaWJkaXJ9L2xpYnBvc3Rwcm9jJHtTT0xJQlN9IgotRklMRVNfbGlic3dyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGlic3dyZXNhbXBsZSR7U09MSUJTfSIKLUZJTEVTX2xpYnN3c2NhbGUgPSAiJHtsaWJkaXJ9L2xpYnN3c2NhbGUke1NPTElCU30iCi0KLSMgZmZtcGVnIGRpc2FibGVzIFBJQyBvbiBzb21lIHBsYXRmb3JtcyAoZS5nLiB4ODYtMzIpCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Y29kZWMgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZkZXZpY2UgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmaWx0ZXIgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmb3JtYXQgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZ1dGlsID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2cmVzYW1wbGUgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dzY2FsZSA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJzd3Jlc2FtcGxlID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnBvc3Rwcm9jID0gInRleHRyZWwiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfNC4yLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfNC4yLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdiMDY0MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ180LjIuMi5iYgpAQCAtMCwwICsxLDE2MCBAQAorU1VNTUFSWSA9ICJBIGNvbXBsZXRlLCBjcm9zcy1wbGF0Zm9ybSBzb2x1dGlvbiB0byByZWNvcmQsIGNvbnZlcnQgYW5kIHN0cmVhbSBhdWRpbyBhbmQgdmlkZW8uIgorREVTQ1JJUFRJT04gPSAiRkZtcGVnIGlzIHRoZSBsZWFkaW5nIG11bHRpbWVkaWEgZnJhbWV3b3JrLCBhYmxlIHRvIGRlY29kZSwgZW5jb2RlLCB0cmFuc2NvZGUsIFwKKyAgICAgICAgICAgICAgIG11eCwgZGVtdXgsIHN0cmVhbSwgZmlsdGVyIGFuZCBwbGF5IHByZXR0eSBtdWNoIGFueXRoaW5nIHRoYXQgaHVtYW5zIGFuZCBtYWNoaW5lcyBcCisgICAgICAgICAgICAgICBoYXZlIGNyZWF0ZWQuIEl0IHN1cHBvcnRzIHRoZSBtb3N0IG9ic2N1cmUgYW5jaWVudCBmb3JtYXRzIHVwIHRvIHRoZSBjdXR0aW5nIGVkZ2UuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZmZtcGVnLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQlNEICYgR1BMdjIrICYgTEdQTHYyLjErICYgTUlUIgorTElDRU5TRV8ke1BOfSA9ICJHUEx2MisiCitMSUNFTlNFX2xpYmF2Y29kZWMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2ZGV2aWNlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJhdmZpbHRlciA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGliYXZmb3JtYXQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2cmVzYW1wbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2dXRpbCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGlicG9zdHByb2MgPSAiR1BMdjIrIgorTElDRU5TRV9saWJzd3Jlc2FtcGxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJzd3NjYWxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkdQTHYyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEx2Mi4xO21kNT1iZDdhNDQzMzIwYWY4YzgxMmU0YzE4ZDFiNzlkZjAwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEx2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cuZmZtcGVnLm9yZy9yZWxlYXNlcy8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMzQ4OTU2ZmMyZmFhNTdhMmY3OWJiYjg0ZGVkOWZiYzMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2I3NTQyNTVhYjBlZTJlYTVmNjZmODg1MGUxYmQ2YWQ1Y2FjMWNkODU1ZDBhMmY0OTkwZmI4YzY2OGIwZDI5YyIKKworIyBCdWlsZCBmYWlscyB3aGVuIHRodW1iIGlzIGVuYWJsZWQ6IGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxNworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjYgPSAiYXJtIgorCisjIFNob3VsZCBiZSBBUEkgY29tcGF0aWJsZSB3aXRoIGxpYmF2ICh3aGljaCB3YXMgYSBmb3JrIG9mIGZmbXBlZykKKyMgbGlicG9zdHByb2Mgd2FzIHByZXZpb3VzbHkgcGFja2FnZWQgZnJvbSBhIHNlcGFyYXRlIHJlY2lwZQorUFJPVklERVMgPSAibGliYXYgbGlicG9zdHByb2MiCisKK0RFUEVORFMgPSAibmFzbS1uYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAiYXZkZXZpY2UgYXZmaWx0ZXIgYXZjb2RlYyBhdmZvcm1hdCBzd3Jlc2FtcGxlIHN3c2NhbGUgcG9zdHByb2MgYXZyZXNhbXBsZSBcCisgICAgICAgICAgICAgICAgICAgYWxzYSBiemxpYiBncGwgbHptYSB0aGVvcmEgeDI2NCB6bGliIFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4diB4Y2InLCAnJywgZCl9IgorCisjIGxpYnJhcmllcyB0byBidWlsZCBpbiBhZGRpdGlvbiB0byBhdnV0aWwKK1BBQ0tBR0VDT05GSUdbYXZkZXZpY2VdID0gIi0tZW5hYmxlLWF2ZGV2aWNlLC0tZGlzYWJsZS1hdmRldmljZSIKK1BBQ0tBR0VDT05GSUdbYXZmaWx0ZXJdID0gIi0tZW5hYmxlLWF2ZmlsdGVyLC0tZGlzYWJsZS1hdmZpbHRlciIKK1BBQ0tBR0VDT05GSUdbYXZjb2RlY10gPSAiLS1lbmFibGUtYXZjb2RlYywtLWRpc2FibGUtYXZjb2RlYyIKK1BBQ0tBR0VDT05GSUdbYXZmb3JtYXRdID0gIi0tZW5hYmxlLWF2Zm9ybWF0LC0tZGlzYWJsZS1hdmZvcm1hdCIKK1BBQ0tBR0VDT05GSUdbc3dyZXNhbXBsZV0gPSAiLS1lbmFibGUtc3dyZXNhbXBsZSwtLWRpc2FibGUtc3dyZXNhbXBsZSIKK1BBQ0tBR0VDT05GSUdbc3dzY2FsZV0gPSAiLS1lbmFibGUtc3dzY2FsZSwtLWRpc2FibGUtc3dzY2FsZSIKK1BBQ0tBR0VDT05GSUdbcG9zdHByb2NdID0gIi0tZW5hYmxlLXBvc3Rwcm9jLC0tZGlzYWJsZS1wb3N0cHJvYyIKK1BBQ0tBR0VDT05GSUdbYXZyZXNhbXBsZV0gPSAiLS1lbmFibGUtYXZyZXNhbXBsZSwtLWRpc2FibGUtYXZyZXNhbXBsZSIKKworIyBmZWF0dXJlcyB0byBzdXBwb3J0CitQQUNLQUdFQ09ORklHW2Fsc2FdID0gIi0tZW5hYmxlLWFsc2EsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIiCitQQUNLQUdFQ09ORklHW2J6bGliXSA9ICItLWVuYWJsZS1iemxpYiwtLWRpc2FibGUtYnpsaWIsYnppcDIiCitQQUNLQUdFQ09ORklHW2Zkay1hYWNdID0gIi0tZW5hYmxlLWxpYmZkay1hYWMgLS1lbmFibGUtbm9uZnJlZSwtLWRpc2FibGUtbGliZmRrLWFhYyxmZGstYWFjIgorUEFDS0FHRUNPTkZJR1tncGxdID0gIi0tZW5hYmxlLWdwbCwtLWRpc2FibGUtZ3BsIgorUEFDS0FHRUNPTkZJR1tnc21dID0gIi0tZW5hYmxlLWxpYmdzbSwtLWRpc2FibGUtbGliZ3NtLGxpYmdzbSIKK1BBQ0tBR0VDT05GSUdbamFja10gPSAiLS1lbmFibGUtaW5kZXY9amFjaywtLWRpc2FibGUtaW5kZXY9amFjayxqYWNrIgorUEFDS0FHRUNPTkZJR1tsaWJ2b3JiaXNdID0gIi0tZW5hYmxlLWxpYnZvcmJpcywtLWRpc2FibGUtbGlidm9yYmlzLGxpYnZvcmJpcyIKK1BBQ0tBR0VDT05GSUdbbHptYV0gPSAiLS1lbmFibGUtbHptYSwtLWRpc2FibGUtbHptYSx4eiIKK1BBQ0tBR0VDT05GSUdbbWZ4XSA9ICItLWVuYWJsZS1saWJtZngsLS1kaXNhYmxlLWxpYm1meCxpbnRlbC1tZWRpYXNkayIKK1BBQ0tBR0VDT05GSUdbbXAzbGFtZV0gPSAiLS1lbmFibGUtbGlibXAzbGFtZSwtLWRpc2FibGUtbGlibXAzbGFtZSxsYW1lIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3NkbDJdID0gIi0tZW5hYmxlLXNkbDIsLS1kaXNhYmxlLXNkbDIsdmlydHVhbC9saWJzZGwyIgorUEFDS0FHRUNPTkZJR1tzcGVleF0gPSAiLS1lbmFibGUtbGlic3BlZXgsLS1kaXNhYmxlLWxpYnNwZWV4LHNwZWV4IgorUEFDS0FHRUNPTkZJR1t0aGVvcmFdID0gIi0tZW5hYmxlLWxpYnRoZW9yYSwtLWRpc2FibGUtbGlidGhlb3JhLGxpYnRoZW9yYSBsaWJvZ2ciCitQQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItLWVuYWJsZS12YWFwaSwtLWRpc2FibGUtdmFhcGksbGlidmEiCitQQUNLQUdFQ09ORklHW3ZkcGF1XSA9ICItLWVuYWJsZS12ZHBhdSwtLWRpc2FibGUtdmRwYXUsbGlidmRwYXUiCitQQUNLQUdFQ09ORklHW3ZweF0gPSAiLS1lbmFibGUtbGlidnB4LC0tZGlzYWJsZS1saWJ2cHgsbGlidnB4IgorUEFDS0FHRUNPTkZJR1t4MjY0XSA9ICItLWVuYWJsZS1saWJ4MjY0LC0tZGlzYWJsZS1saWJ4MjY0LHgyNjQiCitQQUNLQUdFQ09ORklHW3gyNjVdID0gIi0tZW5hYmxlLWxpYngyNjUsLS1kaXNhYmxlLWxpYngyNjUseDI2NSIKK1BBQ0tBR0VDT05GSUdbeGNiXSA9ICItLWVuYWJsZS1saWJ4Y2IsLS1kaXNhYmxlLWxpYnhjYixsaWJ4Y2IiCitQQUNLQUdFQ09ORklHW3h2XSA9ICItLWVuYWJsZS1vdXRkZXY9eHYsLS1kaXNhYmxlLW91dGRldj14dixsaWJ4diIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS1lbmFibGUtemxpYiwtLWRpc2FibGUtemxpYix6bGliIgorCisjIENoZWNrIGNvZGVjcyB0aGF0IHJlcXVpcmUgLS1lbmFibGUtbm9uZnJlZQorVVNFX05PTkZSRUUgPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdQQUNLQUdFQ09ORklHJywgWyAnb3BlbnNzbCcgXSwgJ3llcycsICcnLCBkKX0iCisKK2RlZiBjcHUoZCk6CisgICAgZm9yIGFyZyBpbiAoZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTJykgb3IgJycpLnNwbGl0KCk6CisgICAgICAgIGlmIGFyZy5zdGFydHN3aXRoKCctbWNwdT0nKToKKyAgICAgICAgICAgIHJldHVybiBhcmdbNjpdCisgICAgcmV0dXJuICdnZW5lcmljJworCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWRpc2FibGUtc3RyaXBwaW5nIFwKKyAgICAtLWVuYWJsZS1waWMgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS1lbmFibGUtcHRocmVhZHMgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdVU0VfTk9ORlJFRScsICd5ZXMnLCAnLS1lbmFibGUtbm9uZnJlZScsICcnLCBkKX0gXAorICAgIFwKKyAgICAtLWNyb3NzLXByZWZpeD0ke1RBUkdFVF9QUkVGSVh9IFwKKyAgICBcCisgICAgLS1sZD0iJHtDQ0xEfSIgXAorICAgIC0tY2M9IiR7Q0N9IiBcCisgICAgLS1jeHg9IiR7Q1hYfSIgXAorICAgIC0tYXJjaD0ke1RBUkdFVF9BUkNIfSBcCisgICAgLS10YXJnZXQtb3M9ImxpbnV4IiBcCisgICAgLS1lbmFibGUtY3Jvc3MtY29tcGlsZSBcCisgICAgLS1leHRyYS1jZmxhZ3M9IiR7Q0ZMQUdTfSAke0hPU1RfQ0NfQVJDSH0ke1RPT0xDSEFJTl9PUFRJT05TfSIgXAorICAgIC0tZXh0cmEtbGRmbGFncz0iJHtMREZMQUdTfSIgXAorICAgIC0tc3lzcm9vdD0iJHtTVEFHSU5HX0RJUl9UQVJHRVR9IiBcCisgICAgJHtFWFRSQV9GRkNPTkZ9IFwKKyAgICAtLWxpYmRpcj0ke2xpYmRpcn0gXAorICAgIC0tc2hsaWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAtLWRhdGFkaXI9JHtkYXRhZGlyfS9mZm1wZWcgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBVkFJTFRVTkVTJywgJ21pcHMzMnIyJywgJycsICctLWRpc2FibGUtbWlwc2RzcCAtLWRpc2FibGUtbWlwc2RzcHIyJywgZCl9IFwKKyAgICAtLWNwdT0ke0BjcHUoZCl9IFwKKyAgICAtLXBrZy1jb25maWc9cGtnLWNvbmZpZyBcCisiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGludXgtZ251eDMyID0gIiAtLWRpc2FibGUtYXNtIgorIyBnb2xkIGNyYXNoZXMgb24geDg2LCBhbm90aGVyIHNvbHV0aW9uIGlzIHRvIC0tZGlzYWJsZS1hc20gYnV0IHRoYXRzIG1vcmUgaGFja3kKKyMgbGQuZ29sZDogaW50ZXJuYWwgZXJyb3IgaW4gcmVsb2NhdGVfc2VjdGlvbiwgYXQgLi4vLi4vZ29sZC9pMzg2LmNjOjM2ODQKKworTERGTEFHU19hcHBlbmRfeDg2ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICcgLWZ1c2UtbGQ9YmZkICcsICcnLCBkKX0iCisKK0VYVFJBX09FTUFLRSA9ICJWPTEiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICAke1N9L2NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0KK30KKworUEFDS0FHRVMgPSsgImxpYmF2Y29kZWMgXAorICAgICAgICAgICAgIGxpYmF2ZGV2aWNlIFwKKyAgICAgICAgICAgICBsaWJhdmZpbHRlciBcCisgICAgICAgICAgICAgbGliYXZmb3JtYXQgXAorICAgICAgICAgICAgIGxpYmF2cmVzYW1wbGUgXAorICAgICAgICAgICAgIGxpYmF2dXRpbCBcCisgICAgICAgICAgICAgbGlicG9zdHByb2MgXAorICAgICAgICAgICAgIGxpYnN3cmVzYW1wbGUgXAorICAgICAgICAgICAgIGxpYnN3c2NhbGUiCisKK0ZJTEVTX2xpYmF2Y29kZWMgPSAiJHtsaWJkaXJ9L2xpYmF2Y29kZWMke1NPTElCU30iCitGSUxFU19saWJhdmRldmljZSA9ICIke2xpYmRpcn0vbGliYXZkZXZpY2Uke1NPTElCU30iCitGSUxFU19saWJhdmZpbHRlciA9ICIke2xpYmRpcn0vbGliYXZmaWx0ZXIke1NPTElCU30iCitGSUxFU19saWJhdmZvcm1hdCA9ICIke2xpYmRpcn0vbGliYXZmb3JtYXQke1NPTElCU30iCitGSUxFU19saWJhdnJlc2FtcGxlID0gIiR7bGliZGlyfS9saWJhdnJlc2FtcGxlJHtTT0xJQlN9IgorRklMRVNfbGliYXZ1dGlsID0gIiR7bGliZGlyfS9saWJhdnV0aWwke1NPTElCU30iCitGSUxFU19saWJwb3N0cHJvYyA9ICIke2xpYmRpcn0vbGlicG9zdHByb2Mke1NPTElCU30iCitGSUxFU19saWJzd3Jlc2FtcGxlID0gIiR7bGliZGlyfS9saWJzd3Jlc2FtcGxlJHtTT0xJQlN9IgorRklMRVNfbGlic3dzY2FsZSA9ICIke2xpYmRpcn0vbGlic3dzY2FsZSR7U09MSUJTfSIKKworIyBmZm1wZWcgZGlzYWJsZXMgUElDIG9uIHNvbWUgcGxhdGZvcm1zIChlLmcuIHg4Ni0zMikKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZjb2RlYyA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmRldmljZSA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmZpbHRlciA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmZvcm1hdCA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdnV0aWwgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZyZXNhbXBsZSA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJzd3NjYWxlID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnN3cmVzYW1wbGUgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlicG9zdHByb2MgPSAidGV4dHJlbCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmxhYy9mbGFjXzEuMy4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mbGFjL2ZsYWNfMS4zLjMuYmIKaW5kZXggZmVhMmJlMS4uY2I2NjkyYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mbGFjL2ZsYWNfMS4zLjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mbGFjL2ZsYWNfMS4zLjMuYmIKQEAgLTMzLDYgKzMzLDcgQEAKICAgICAgICAgICAgICAgICAiCiAKIEVYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIgLS1lbmFibGUtYWx0aXZlYyIsICIgLS1kaXNhYmxlLWFsdGl2ZWMiLCBkKX0iCitFWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgInZzeCIsICIgLS1lbmFibGUtdnN4IiwgIiAtLWRpc2FibGUtdnN4IiwgZCl9IgogRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJjb3JlMiIsICIgLS1lbmFibGUtc3NlIiwgIiIsIGQpfSIKIEVYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiY29yZWk3IiwgIiAtLWVuYWJsZS1zc2UiLCAiIiwgZCl9IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiN2YxMTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSAyYjA0MzZmOWEwNzc3M2ZhZThjNzRkZjkwMmQ3MDI0ZThiZmMzNTEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI0IE5vdiAyMDE1IDE2OjQ2OjI3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGludHJvc3BlY3Rpb24ubTQ6IHByZWZpeCBwa2djb25maWcgcGF0aHMgd2l0aAotIFBLR19DT05GSUdfU1lTUk9PVF9ESVIKLQotV2UgY2FuJ3QgdXNlIG91ciB0d2Vha2VkIGludHJvc3BlY3Rpb24ubTQgZnJvbSBnb2JqZWN0LWludHJvc3BlY3Rpb24gdGFyYmFsbAotYmVjYXVzZSBnc3RyZWFtZXIgYWxzbyBkZWZpbmVzIElOVFJPU1BFQ1RJT05fSU5JVCBpbiBpdHMgaW50cm9zcGVjdGlvbi5tNCwgd2hpY2gKLWlzIGxhdGVyIHN1cHBsaWVkIHRvIGctaXItc2Nhbm5lci4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtyZXZpZXcgb24gb2UtY29yZSBsaXN0XQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIGNvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IHwgOCArKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBiL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00Ci1pbmRleCAxNjJiZTU3Li45MzNmOTc5IDEwMDY0NAotLS0tIGEvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQKLSsrKyBiL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00Ci1AQCAtNTQsMTQgKzU0LDE0IEBAIG00X2RlZmluZShbX0dPQkpFQ1RfSU5UUk9TUEVDVElPTl9DSEVDS19JTlRFUk5BTF0sCi0gICAgIElOVFJPU1BFQ1RJT05fR0lSRElSPQotICAgICBJTlRST1NQRUNUSU9OX1RZUEVMSUJESVI9Ci0gICAgIGlmIHRlc3QgIngkZm91bmRfaW50cm9zcGVjdGlvbiIgPSAieHllcyI7IHRoZW4KLS0gICAgICAgSU5UUk9TUEVDVElPTl9TQ0FOTkVSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfc2Nhbm5lciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgICAgICBJTlRST1NQRUNUSU9OX0NPTVBJTEVSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfY29tcGlsZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLS0gICAgICAgSU5UUk9TUEVDVElPTl9HRU5FUkFURT1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2dlbmVyYXRlIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0rICAgICAgIElOVFJPU1BFQ1RJT05fU0NBTk5FUj0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfc2Nhbm5lciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotKyAgICAgICBJTlRST1NQRUNUSU9OX0NPTVBJTEVSPSRQS0dfQ09ORklHX1NZU1JPT1RfRElSYCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9jb21waWxlciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotKyAgICAgICBJTlRST1NQRUNUSU9OX0dFTkVSQVRFPSRQS0dfQ09ORklHX1NZU1JPT1RfRElSYCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9nZW5lcmF0ZSBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotICAgICAgICBJTlRST1NQRUNUSU9OX0dJUkRJUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1naXJkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSAgICAgICAgSU5UUk9TUEVDVElPTl9UWVBFTElCRElSPSIkKCRQS0dfQ09ORklHIC0tdmFyaWFibGU9dHlwZWxpYmRpciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wKSIKLSAgICAgICAgSU5UUk9TUEVDVElPTl9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0gICAgICAgIElOVFJPU1BFQ1RJT05fTElCUz1gJFBLR19DT05GSUcgLS1saWJzIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgICAgIElOVFJPU1BFQ1RJT05fTUFLRUZJTEU9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9ZGF0YWRpciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYC9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL01ha2VmaWxlLmludHJvc3BlY3Rpb24KLSsgICAgICAgSU5UUk9TUEVDVElPTl9NQUtFRklMRT0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWRhdGFkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uCi0gICAgICAgIElOVFJPU1BFQ1RJT05fSU5JVD0iZXh0ZXJuIHZvaWQgZ3N0X2luaXQoZ2ludCosZ2NoYXIqKik7IGdzdF9pbml0KE5VTEwsTlVMTCk7IgotICAgICBmaQotICAgICBBQ19TVUJTVChJTlRST1NQRUNUSU9OX1NDQU5ORVIpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9hZGQtYS10YXJnZXQtdG8tY29tcGlsZS10ZXN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL2FkZC1hLXRhcmdldC10by1jb21waWxlLXRlc3RzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDJkODY5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL2FkZC1hLXRhcmdldC10by1jb21waWxlLXRlc3RzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotRnJvbSBkNjE0MTRiYzE3Y2YyZGYwMTk1MTBjMjkwODA0OGM0Y2FiZjVjZjA5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMjcgRmViIDIwMTggMDk6Mjc6MDEgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gYWRkIHRhcmdldHMgZm9yIHRlc3QgaW5zdGFsbGF0aW9uCi0KLVRhcmdldHMgdG8gbWFrZSBzdXJlIHRlc3RzIGNhbiBiZSBpbnN0YWxsZWQgYW5kIHRoZW4gcnVuIG9uCi10aGUgdGFyZ2V0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3NwZWNpZmljIHRvIG9lIHNldHVwXQotCi1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotCi0tLS0KLSB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbSB8IDI3ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svTWFrZWZpbGUuYW0gYi90ZXN0cy9jaGVjay9NYWtlZmlsZS5hbQotaW5kZXggMTNiOTE2ZC4uYTY2Nzg2ZCAxMDA2NDQKLS0tLSBhL3Rlc3RzL2NoZWNrL01ha2VmaWxlLmFtCi0rKysgYi90ZXN0cy9jaGVjay9NYWtlZmlsZS5hbQotQEAgLTgsMTEgKzgsNyBAQCBSRUdJU1RSWV9FTlZJUk9OTUVOVCA9IFwKLSAJR1NUX1JFR0lTVFJZPSQoQ0hFQ0tfUkVHSVNUUlkpCi0gCi0gQU1fVEVTVFNfRU5WSVJPTk1FTlQgKz0gXAotLSAgICAgICAgR1NUX1NUQVRFX0lHTk9SRV9FTEVNRU5UUz0iJChTVEFURV9JR05PUkVfRUxFTUVOVFMpIglcCi0tICAgICAgICAkKFJFR0lTVFJZX0VOVklST05NRU5UKQkJCQkJXAotLSAgICAgICAgR1NUX1BMVUdJTl9TQ0FOTkVSXzFfMD0kKHRvcF9idWlsZGRpcikvbGlicy9nc3QvaGVscGVycy9nc3QtcGx1Z2luLXNjYW5uZXIgXAotLSAgICAgICAgR1NUX1BMVUdJTl9TWVNURU1fUEFUSF8xXzA9CQkJCQlcCi0tICAgICAgICBHU1RfUExVR0lOX1BBVEhfMV8wPSQodG9wX2J1aWxkZGlyKS9wbHVnaW5zCi0rICAgICAgICBHU1RfU1RBVEVfSUdOT1JFX0VMRU1FTlRTPSIkKFNUQVRFX0lHTk9SRV9FTEVNRU5UUykiCi0gCi0gcGx1Z2luZGlyID0gJChsaWJkaXIpL2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQAotIAotQEAgLTE3OCw2ICsxNzQsMjMgQEAgbm9pbnN0X1BST0dSQU1TID0KLSAKLSBURVNUUyA9ICQoY2hlY2tfUFJPR1JBTVMpCi0gCi0raW5zdGFsbC1wdGVzdDogJChURVNUUykKLSsJQCQoSU5TVEFMTCkgLWQgJChERVNURElSKQotKwlAZm9yIGRpciBpbiBgZmluZCAtbWF4ZGVwdGggMSAtdHlwZSBkYDsgZG8gXAotKwkJaWYgWyAteCAkJGRpci8ubGlicyBdOyB0aGVuIFwKLSsJCQkkKElOU1RBTEwpIC1kICQoREVTVERJUikvJCRkaXI7IFwKLSsJCQkkKElOU1RBTExfUFJPR1JBTSkgJCRkaXIvLmxpYnMvKiAkKERFU1RESVIpLyQkZGlyLzsgXAotKwkJZmkgXAotKwlkb25lCi0rCi0rcnVudGVzdHM6Ci0rCUBmb3IgYiBpbiAkKFRFU1RTKTsgZG8gXAotKwkJaWYgWyAteCAkJGIgXTsgdGhlbiBcCi0rCQkJJChBTV9URVNUU19FTlZJUk9OTUVOVCkgJChTSEVMTCkgdGVzdC1kcml2ZXIgLS10ZXN0LW5hbWUgIiQkYiIgXAotKwkJCS0tbG9nLWZpbGUgJCRiLmxvZyAtLXRycy1maWxlICQkYi50cnMgJCRiOyBcCi0rCQlmaSBcCi0rCWRvbmUKLSsKLSBub2luc3RfSEVBREVSUyA9IFwKLSAJZ3N0L2NhcHNsaXN0LmggXAotIAlnc3Qvc3RydWN0X2FybS5oIFwKLUBAIC0yMjEsOSArMjM0LDkgQEAgZ3N0X2dzdHByaW50Zl9MREFERCA9IFwKLSAJJChMREFERCkKLSAKLSBlbGVtZW50c19mZHNyY19DRkxBR1M9JChHU1RfT0JKX0NGTEFHUykgJChBTV9DRkxBR1MpIFwKLS0JLURURVNURklMRT1cIiQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjXCIKLSsJLURURVNURklMRT1cIk1ha2VmaWxlXCIKLSBlbGVtZW50c19maWxlc3JjX0NGTEFHUz0kKEdTVF9PQkpfQ0ZMQUdTKSAkKEFNX0NGTEFHUykgXAotLQktRFRFU1RGSUxFPVwiJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWNcIgotKwktRFRFU1RGSUxFPVwiTWFrZWZpbGVcIgotIAotIGxpYnNfY29udHJvbGxlcl9MREFERCA9IFwKLSAJJCh0b3BfYnVpbGRkaXIpL2xpYnMvZ3N0L2NvbnRyb2xsZXIvbGliZ3N0Y29udHJvbGxlci1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9ndGstZG9jLXR3ZWFrcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL2d0ay1kb2MtdHdlYWtzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODZjNzhkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL2d0ay1kb2MtdHdlYWtzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSA3MDE4Y2ExYzRiZjI2YzgzMTdlN2ZjZDJlN2U0ZTY0ODE5NWY0MmNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLURhdGU6IFdlZCwgMjAgRGVjIDIwMTcgMTM6MDM6MDMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ3N0cmVhbWVyOiB1c2UgYSBwYXRjaCBpbnN0ZWFkIG9mIHNlZCB0byBmaXggZ3RrLWRvYwotCi1QYXRjaCB0aGUgZ3RrLWRvYyBtYWtlZmlsZXMgc28gdGhhdCB0aGUgcWVtdSB3cmFwcGVyIGlzIHVzZWQgdG8gcnVuIHRyYW5zaWVudAotYmluYXJpZXMgaW5zdGVhZCBvZiBsaWJ0b29sIHdyYXBwZXIgb3IgcnVubmluZyB0aGVtIGRpcmVjdGx5LgotCi1BbHNvIHN1YnN0aXR1dGUgYSBib2d1cyBwbHVnaW4gc2Nhbm5lciwgYXMgdHJ5aW5nIHRvIHJ1biB0aGUgcmVhbCBvbmUgaXMgY2F1c2luZwotaXNzdWVzIGR1cmluZyBidWlsZCBvbiB4ODZfNjQuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotLS0tCi0gY29tbW9uL2d0ay1kb2MubWFrIHwgNSArKystLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb21tb24vZ3RrLWRvYy5tYWsgYi9jb21tb24vZ3RrLWRvYy5tYWsKLWluZGV4IDNmODM0OTEuLmU1Y2IwZDEgMTAwNjQ0Ci0tLS0gYS9jb21tb24vZ3RrLWRvYy5tYWsKLSsrKyBiL2NvbW1vbi9ndGstZG9jLm1hawotQEAgLTYsMTEgKzYsMTEgQEAKLSBpZiBHVEtfRE9DX1VTRV9MSUJUT09MCi0gR1RLRE9DX0NDID0gJChMSUJUT09MKSAtLXRhZz1DQyAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKElOQ0xVREVTKSAkKEdUS0RPQ19ERVBTX0NGTEFHUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKQotIEdUS0RPQ19MRCA9ICQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWxpbmsgJChDQykgJChHVEtET0NfREVQU19MSUJTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpICQoQU1fTERGTEFHUykgJChMREZMQUdTKQotLUdUS0RPQ19SVU4gPSAkKExJQlRPT0wpIC0tbW9kZT1leGVjdXRlCi0rR1RLRE9DX1JVTiA9ICQodG9wX2J1aWxkZGlyKS9ndGtkb2MtcWVtdXdyYXBwZXIKLSBlbHNlCi0gR1RLRE9DX0NDID0gJChDQykgJChJTkNMVURFUykgJChHVEtET0NfREVQU19DRkxBR1MpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykKLSBHVEtET0NfTEQgPSAkKENDKSAkKEdUS0RPQ19ERVBTX0xJQlMpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgJChBTV9MREZMQUdTKSAkKExERkxBR1MpCi0tR1RLRE9DX1JVTiA9Ci0rR1RLRE9DX1JVTiA9ICQodG9wX2J1aWxkZGlyKS9ndGtkb2MtcWVtdXdyYXBwZXIKLSBlbmRpZgotIAotICMgV2Ugc2V0IEdQQVRIIGhlcmU7IHRoaXMgZ2l2ZXMgdXMgc2VtYW50aWNzIGZvciBHTlUgbWFrZQotQEAgLTEwMSw2ICsxMDEsNyBAQCBzY2FuLWJ1aWxkLnN0YW1wOiAkKEhGSUxFX0dMT0IpICQoQ0ZJTEVfR0xPQikKLSAJICAgIEdTVF9QTFVHSU5fUEFUSF8xXzA9CQkJCQlcCi0gCSAgICBHU1RfUkVHSVNUUllfMV8wPWRvYy1yZWdpc3RyeS54bWwJCQkJXAotIAkgICAgJChHVEtET0NfRVhUUkFfRU5WSVJPTk1FTlQpCQkJCQlcCi0rCSAgICBHU1RfUExVR0lOX1NDQU5ORVJfMV8wPSIkKHRvcF9idWlsZGRpcikvbGlicy9nc3QvaGVscGVycy9nc3QtcGx1Z2luLXNjYW5uZXItZHVtbXkiIFwKLSAJICAgIENDPSIkKEdUS0RPQ19DQykiIExEPSIkKEdUS0RPQ19MRCkiIFJVTj0iJChHVEtET0NfUlVOKSIJXAotIAkgICAgQ0ZMQUdTPSIkKEdUS0RPQ19DRkxBR1MpICQoQ0ZMQUdTKSIJCQkJXAotIAkgICAgTERGTEFHUz0iJChHVEtET0NfTElCUykgJChMREZMQUdTKSIJCQkJXAotLS0gCi0yLjE1LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvcnVuLXB0ZXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzNkMGI2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL3J1bi1wdGVzdAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyEvYmluL3NoCi0KLW1ha2UgLWsgcnVudGVzdHMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLXBhY2thZ2UuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtcGFja2FnZS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3ODFlOTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtcGFja2FnZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1QQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gIiBzcGxpdF9nc3RyZWFtZXIxMF9wYWNrYWdlcyAiCi1QQUNLQUdFU1BMSVRGVU5DU19hcHBlbmQgPSAiIHNldF9tZXRhcGtnX3JkZXBlbmRzICIKLQotcHl0aG9uIHNwbGl0X2dzdHJlYW1lcjEwX3BhY2thZ2VzICgpIHsKLSAgICBnc3RfbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9nc3RyZWFtZXItJHtMSUJWfScpCi0gICAgcG9zdGluc3QgPSBkLmdldFZhcigncGx1Z2luX3Bvc3RpbnN0JykKLSAgICBnbGliZGlyID0gZC5nZXRWYXIoJ2xpYmRpcicpCi0KLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBnbGliZGlyLCByJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdnc3RyZWFtZXIgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZ3N0X2xpYmRpciwgcidsaWJnc3QoLiopXC5zbyQnLCBkLmV4cGFuZCgnJHtQTn0tJXMnKSwgJ0dTdHJlYW1lciBwbHVnaW4gZm9yICVzJywgcG9zdGluc3Q9cG9zdGluc3QsIGV4dHJhX2RlcGVuZHM9JycpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZ2xpYmRpcisnL2dpcmVwb3NpdG9yeS0xLjAnLCByJ0dzdCguKiktMS4wXC50eXBlbGliJCcsIGQuZXhwYW5kKCcke1BOfS0lcy10eXBlbGliJyksICdHU3RyZWFtZXIgdHlwZWxpYiBmaWxlIGZvciAlcycsIHBvc3RpbnN0PXBvc3RpbnN0LCBleHRyYV9kZXBlbmRzPScnKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGdzdF9saWJkaXIsIHInbGliZ3N0KC4qKVwubGEkJywgZC5leHBhbmQoJyR7UE59LSVzLWRldicpLCAnR1N0cmVhbWVyIHBsdWdpbiBmb3IgJXMgKGRldmVsb3BtZW50IGZpbGVzKScsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWRldicpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZ3N0X2xpYmRpciwgcidsaWJnc3QoLiopXC5hJCcsIGQuZXhwYW5kKCcke1BOfS0lcy1zdGF0aWNkZXYnKSwgJ0dTdHJlYW1lciBwbHVnaW4gZm9yICVzIChzdGF0aWMgZGV2ZWxvcG1lbnQgZmlsZXMpJywgZXh0cmFfZGVwZW5kcz0nJHtQTn0tc3RhdGljZGV2JykKLX0KLQotcHl0aG9uIHNldF9tZXRhcGtnX3JkZXBlbmRzICgpIHsKLSAgICBpbXBvcnQgb3MKLSAgICBpbXBvcnQgb2UudXRpbHMKLQotICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKLSAgICBtZXRhcGtnID0gIHBuICsgJy1tZXRhJwotICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8nICsgbWV0YXBrZywgIjEiKQotICAgIGQuc2V0VmFyKCdGSUxFU18nICsgbWV0YXBrZywgIiIpCi0gICAgYmxhY2tsaXN0ID0gWyBwbiwgcG4gKyAnLW1ldGEnIF0KLSAgICBtZXRhcGtnX3JkZXBlbmRzID0gW10KLSAgICBwa2dkZXN0ID0gZC5nZXRWYXIoJ1BLR0RFU1QnKQotICAgIGZvciBwa2cgaW4gb2UudXRpbHMucGFja2FnZXNfZmlsdGVyX291dF9zeXN0ZW0oZCk6Ci0gICAgICAgIGlmIHBrZyBub3QgaW4gYmxhY2tsaXN0IGFuZCBwa2cgbm90IGluIG1ldGFwa2dfcmRlcGVuZHM6Ci0gICAgICAgICAgICAjIFNlZSBpZiB0aGUgcGFja2FnZSBpcyBlbXB0eSBieSBsb29raW5nIGF0IHRoZSBjb250ZW50cyBvZiBpdHMgUEtHREVTVCBzdWJkaXJlY3RvcnkuIAotICAgICAgICAgICAgIyBJZiB0aGlzIHN1YmRpcmVjdG9yeSBpcyBlbXB0eSwgdGhlbiB0aGUgcGFja2FnZSBpcy4KLSAgICAgICAgICAgICMgRW1wdHkgcGFja2FnZXMgZG8gbm90IGdldCBhZGRlZCB0byB0aGUgbWV0YSBwYWNrYWdlJ3MgUkRFUEVORFMKLSAgICAgICAgICAgIHBrZ2RpciA9IG9zLnBhdGguam9pbihwa2dkZXN0LCBwa2cpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwa2dkaXIpOgotICAgICAgICAgICAgICAgIGRpcl9jb250ZW50cyA9IG9zLmxpc3RkaXIocGtnZGlyKSBvciBbXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkaXJfY29udGVudHMgPSBbXQotICAgICAgICAgICAgaXNfZW1wdHkgPSBsZW4oZGlyX2NvbnRlbnRzKSA9PSAwCi0gICAgICAgICAgICBpZiBub3QgaXNfZW1wdHk6Ci0gICAgICAgICAgICAgICAgbWV0YXBrZ19yZGVwZW5kcy5hcHBlbmQocGtnKQotICAgIGQuc2V0VmFyKCdSREVQRU5EU18nICsgbWV0YXBrZywgJyAnLmpvaW4obWV0YXBrZ19yZGVwZW5kcykpCi0gICAgZC5zZXRWYXIoJ0RFU0NSSVBUSU9OXycgKyBtZXRhcGtnLCBwbiArICcgbWV0YSBwYWNrYWdlJykKLX0KLQotIyBlYWNoIHBsdWdpbi1kZXYgZGVwZW5kcyBvbiBQTi1kZXYsIHBsdWdpbi1zdGF0aWNkZXYgb24gUE4tc3RhdGljZGV2Ci0jIHNvIHdlIG5lZWQgdGhlbSBldmVuIHdoZW4gZW1wdHkgKGxpa2UgaW4gZ3N0LXBsdWdpbnMtZ29vZCBjYXNlKQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLUFMTE9XX0VNUFRZXyR7UE59LWRldiA9ICIxIgotQUxMT1dfRU1QVFlfJHtQTn0tc3RhdGljZGV2ID0gIjEiCi0KLVBBQ0tBR0VTICs9ICIke1BOfS1hcHBzICR7UE59LW1ldGEgJHtQTn0tZ2xpYiIKLQotRklMRVNfJHtQTn0gPSAiIgotRklMRVNfJHtQTn0tYXBwcyA9ICIke2JpbmRpcn0iCi1GSUxFU18ke1BOfS1nbGliID0gIiR7ZGF0YWRpcn0vZ2xpYi0yLjAiCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICIke1BOfS1tZXRhIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1jb25uZWN0LWhhcy1hLWRpZmZlcmVudC1zaWduYXR1cmUtb24tbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC12YWxpZGF0ZS8wMDAxLWNvbm5lY3QtaGFzLWEtZGlmZmVyZW50LXNpZ25hdHVyZS1vbi1tdXNsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy8wMDAxLWNvbm5lY3QtaGFzLWEtZGlmZmVyZW50LXNpZ25hdHVyZS1vbi1tdXNsLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtdmFsaWRhdGUvMDAwMS1jb25uZWN0LWhhcy1hLWRpZmZlcmVudC1zaWduYXR1cmUtb24tbXVzbC5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXZhbGlkYXRlXzEuMTYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC12YWxpZGF0ZV8xLjE2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkNjAyZWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXZhbGlkYXRlXzEuMTYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiR3N0cmVhbWVyIHZhbGlkYXRpb24gdG9vbCIKLURFU0NSSVBUSU9OID0gIkEgVG9vbCB0byB0ZXN0IEdTdHJlYW1lciBjb21wb25lbnRzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2dzdC12YWxpZGF0ZS8xLjEyLjMuaHRtbCIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtCUE59LyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbm5lY3QtaGFzLWEtZGlmZmVyZW50LXNpZ25hdHVyZS1vbi1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjc5M2U3NWY0NzE3ZjcxOGFkMjA0YzU1NGQ1NzdiMTYwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdmMDc5YjliMmExMjc2MDRiOThlMjk3MDM3ZGM4ODQ3ZWY1MGY0Y2UyYjUwOGFhMmRmMGNhYzViNzc1NjI4OTkiCi0KLURFUEVORFMgPSAianNvbi1nbGliIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImdpdCIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC8qICR7bGliZGlyfS9nc3QtdmFsaWRhdGUtbGF1bmNoZXIvKiAke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qIgotCi1pbmhlcml0IHBrZ2NvbmZpZyBnZXR0ZXh0IGF1dG90b29scyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotIyBXaXRoIGd0ay1kb2MgZW5hYmxlZCB0aGlzIHJlY2lwZSBmYWlscyB0byBidWlsZCwgc28gZm9yY2libHkgZGlzYWJsZSBpdDoKLSMgV09SS0RJUi9idWlsZC9kb2NzL3ZhbGlkYXRlL2dzdC12YWxpZGF0ZS1zY2FuOiBsaW5lIDExNzoKLSMgV09SS0RJUi9idWlsZC9kb2NzL3ZhbGlkYXRlLy5saWJzL2x0LWdzdC12YWxpZGF0ZS1zY2FuOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci1HVEtET0NfRU5BQkxFRCA9ICJGYWxzZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC12YWxpZGF0ZV8xLjE2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtdmFsaWRhdGVfMS4xNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NDkyZmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtdmFsaWRhdGVfMS4xNi4yLmJiCkBAIC0wLDAgKzEsMjUgQEAKK1NVTU1BUlkgPSAiR3N0cmVhbWVyIHZhbGlkYXRpb24gdG9vbCIKK0RFU0NSSVBUSU9OID0gIkEgVG9vbCB0byB0ZXN0IEdTdHJlYW1lciBjb21wb25lbnRzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2dzdC12YWxpZGF0ZS8xLjEyLjMuaHRtbCIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKKworTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtCUE59LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbm5lY3QtaGFzLWEtZGlmZmVyZW50LXNpZ25hdHVyZS1vbi1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjY4OGY0MmM1MmQ2MmU4YzVlNTA2ZGY5MTE1NTNmYjJjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ4NjFjY2I5MzI2MjAwZTc0ZDk4MDA3ZTMxNmIzODdkNDhkZDQ5ZjA3MmUwYjc4Y2I5ZDMzMDNmZGVjZmVlY2EiCisKK0RFUEVORFMgPSAianNvbi1nbGliIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImdpdCIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC8qICR7bGliZGlyfS9nc3QtdmFsaWRhdGUtbGF1bmNoZXIvKiAke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qIgorCitpbmhlcml0IHBrZ2NvbmZpZyBnZXR0ZXh0IGF1dG90b29scyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworIyBXaXRoIGd0ay1kb2MgZW5hYmxlZCB0aGlzIHJlY2lwZSBmYWlscyB0byBidWlsZCwgc28gZm9yY2libHkgZGlzYWJsZSBpdDoKKyMgV09SS0RJUi9idWlsZC9kb2NzL3ZhbGlkYXRlL2dzdC12YWxpZGF0ZS1zY2FuOiBsaW5lIDExNzoKKyMgV09SS0RJUi9idWlsZC9kb2NzL3ZhbGlkYXRlLy5saWJzL2x0LWdzdC12YWxpZGF0ZS1zY2FuOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CitHVEtET0NfRU5BQkxFRCA9ICJGYWxzZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLURpc2FibGUteWFzbS1mb3ItbGliYXYtd2hlbi1kaXNhYmxlLXlhc20ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1EaXNhYmxlLXlhc20tZm9yLWxpYmF2LXdoZW4tZGlzYWJsZS15YXNtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTU3MWFlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLURpc2FibGUteWFzbS1mb3ItbGliYXYtd2hlbi1kaXNhYmxlLXlhc20ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDU0YmJhMjI4ZWE1MmQwMWZkODQ5NDFkOTdiZTIzYzAzZjk4NjJiNjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxkdkBwc2V1ZG90ZXJtaW5hbC5vcmc+Ci1EYXRlOiBTYXQsIDYgQXByIDIwMTMgMDE6MjI6MjIgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRGlzYWJsZSB5YXNtIGZvciBsaWJhdiB3aGVuIC0tZGlzYWJsZS15YXNtCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogU2hhbmUgV2FuZyA8c2hhbmUud2FuZ0BpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxkdkBwc2V1ZG90ZXJtaW5hbC5vcmc+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDIyZWRlODguLmVmM2MwNTAgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM1NSw2ICszNTUsMTIgQEAgZWxzZQotICAgICBlbWJsaWJhdl9jb25maWd1cmVfYXJncz0iJGVtYmxpYmF2X2NvbmZpZ3VyZV9hcmdzIC0tZW5hYmxlLWdwbCIKLSAgIGZpCi0KLSsgIEFDX0FSR19FTkFCTEUoeWFzbSwKLSsgICAgICAgICAgICAgIFtBQ19IRUxQX1NUUklORyhbLS1kaXNhYmxlLXlhc21dLCBbZGlzYWJsZSB1c2Ugb2YgeWFzbSBhc3NlbWJsZXJdKV0pCi0rICBpZiB0ZXN0ICJ4JGVuYWJsZV95YXNtIiA9ICJ4bm8iOyB0aGVuCi0rICAgIGVtYmxpYmF2X2NvbmZpZ3VyZV9hcmdzPSIkZW1ibGliYXZfY29uZmlndXJlX2FyZ3MgLS1kaXNhYmxlLXlhc20iCi0rICBmaQotKwotICAgIyBpZiB3ZSBhcmUgY3Jvc3MtY29tcGlsaW5nLCB0ZWxsIGxpYmF2IHNvCi0gICBjYXNlICRob3N0IGluCi0gICAgICAgKmFuZHJvaWQqKQotLS0gCi0xLjguMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWFybXY3dmUtdmFyaWFudC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLWNvbmZpZ3VyZS1jaGVjay1mb3ItYXJtdjd2ZS12YXJpYW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTgyNzE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLWNvbmZpZ3VyZS1jaGVjay1mb3ItYXJtdjd2ZS12YXJpYW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSBhYWM1OTAyZDNjOWNiMzVjNzcxZTc2MGQwZTQ4NzYyMmFhMmUxMTZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMjAgQXByIDIwMTcgMTA6Mzg6MTggLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBjaGVjayBmb3IgYXJtdjd2ZSB2YXJpYW50Ci0KLU9FIHBhc3NlcyAtbWNwdSBhbmQgLW1hcmNoIHZpYSBjbWRsaW5lIGFuZCBpZgotcGFja2FnZSB0cmllcyB0byBkZXRlY3Qgb25lIG9mIGl0IG93biB0aGVuIGl0Ci1zaG91bGQgYmUgY29tcGF0aWJsZSBvdGhlcndpc2UsIG5ld2VyIGdjYzcrIHdpbGwKLWVycm9yIG91dAotCi1DaGVjayBmb3IgcmVsZXZhbnQgcHJlcHJvY2Vzc29yIG1hY3JvIHRvIGRldGVybWluZQotYXJtdjd2ZSBhcmNoaXRlY3R1cmUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnc3QtbGlicy9leHQvbGliYXYvY29uZmlndXJlIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9nc3QtbGlicy9leHQvbGliYXYvY29uZmlndXJlIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2NvbmZpZ3VyZQotaW5kZXggNGE1ZTQ3Ny4uNzI3ODE4ZSAxMDA3NTUKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9jb25maWd1cmUKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9jb25maWd1cmUKLUBAIC00NzQ1LDYgKzQ3NDUsNyBAQCBlbGlmIGVuYWJsZWQgYXJtOyB0aGVuCi0gICAgICAgICBlbGlmIGNoZWNrX2FybV9hcmNoIDZLWjsgICAgICB0aGVuIGVjaG8gYXJtdjZ6awotICAgICAgICAgZWxpZiBjaGVja19hcm1fYXJjaCA2Wks7ICAgICAgdGhlbiBlY2hvIGFybXY2emsKLSAgICAgICAgIGVsaWYgY2hlY2tfYXJtX2FyY2ggNlQyOyAgICAgIHRoZW4gZWNobyBhcm12NnQyCi0rICAgICAgICBlbGlmIGNoZWNrX2FybV9hcmNoIEVYVF9JRElWOyB0aGVuIGVjaG8gYXJtdjd2ZQotICAgICAgICAgZWxpZiBjaGVja19hcm1fYXJjaCA3OyAgICAgICAgdGhlbiBlY2hvIGFybXY3Ci0gICAgICAgICBlbGlmIGNoZWNrX2FybV9hcmNoIDdBICA3X0E7ICB0aGVuIGVjaG8gYXJtdjctYQotICAgICAgICAgZWxpZiBjaGVja19hcm1fYXJjaCA3UzsgICAgICAgdGhlbiBlY2hvIGFybXY3LWEKLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLWZpeC1ob3N0LWNvbnRhbWluYXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1maXgtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjBjMDc5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLWZpeC1ob3N0LWNvbnRhbWluYXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIGMxNzAwZjg2N2Y4NzZlZTMzYzEzMGE4ZTI4YjY4OGUyYjFkODk2NjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotRGF0ZTogV2VkLCAxMSBBcHIgMjAxOCAxNzoxNDo1NSArMDgwMAotU3ViamVjdDogW1BBVENIXSBQcmV2ZW50IGhvc3QgY29udGFtaW5hdGlvbgotCi1SZW1vdmUgcmVmZXJlbmNlIHRvIGhvc3QgJChsaWJkaXIpIGZyb20gLmxhIGZpbGVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Nyb3NzLWNvbXBpbGUgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0tLS0KLSBnc3QtbGlicy9leHQvTWFrZWZpbGUuYW0gfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZXh0L01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZXh0L01ha2VmaWxlLmFtCi1pbmRleCA2Y2RjMDQ4Li5hMTlkMjU1IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9leHQvTWFrZWZpbGUuYW0KLUBAIC00OSw3ICs0OSw3IEBAIGVjaG8gIiAgR0VOICAgICAgJDEubGEiICYmIFwKLSAgZWNobyAibGlicmFyeV9uYW1lcz0nJyIgJiYgXAotICBlY2hvICJvbGRfbGlicmFyeT0nJDEuYSciICYmIFwKLSAgZWNobyAiaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0nJyIgJiYgXAotLSBlY2hvICJkZXBlbmRlbmN5X2xpYnM9JyAtTCQobGliZGlyKSAkKGlmICQyLCQoZm9yZWFjaCBkZXAsJDIsJChhYnNfYnVpbGRkaXIpLyQoZGVwKS5sYSkpICQoY2FsbCBmaW5kX2xpYnJhcnlfbGEsJDMgJChMSUJNKSwkKExERkxBR1MpKSAnIiAmJiBcCi0rIGVjaG8gImRlcGVuZGVuY3lfbGlicz0nIC1MICQoaWYgJDIsJChmb3JlYWNoIGRlcCwkMiwkKGFic19idWlsZGRpcikvJChkZXApLmxhKSkgJChjYWxsIGZpbmRfbGlicmFyeV9sYSwkMyAkKExJQk0pLCQoTERGTEFHUykpICciICYmIFwKLSAgZWNobyAid2Vha19saWJyYXJ5X25hbWVzPScnIiAmJiAgXAotICBlY2hvICJjdXJyZW50PSIgJiYgXAotICBlY2hvICJhZ2U9IiAmJiBcCi1AQCAtNTgsNyArNTgsNyBAQCBlY2hvICIgIEdFTiAgICAgICQxLmxhIiAmJiBcCi0gIGVjaG8gInNob3VsZG5vdGxpbms9bm8iICYmIFwKLSAgZWNobyAiZGxvcGVuPScnIiAmJiBcCi0gIGVjaG8gImRscHJlb3Blbj0nJyIgJiYgXAotLSBlY2hvICJsaWJkaXI9JyQobGliZGlyKSciKSA+ICQxLmxhCi0rIGVjaG8gImxpYmRpcj0nJyIpID4gJDEubGEKLSBlbmRlZgotIAotIGxpYmF2dXRpbC5sYToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBkMDQyYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1JdCB3aWxsIGFkZCAtbWlwczY0cjYgYW5kIC1taXBzNjRyMiB0byBjbWRsaW5lIHdoaWNoIHdpbGwKLWNhdXNlIGNvbmZsaWN0cwotCi1pbiBPRSB3ZSB1c2VyIG1pcHMzMnIyIGFuZCBtaXBzNjRyMiBmb3IgbWlwcyBhcmNoIHZlcnNpb25zCi1zbyB0aGVyZSBpcyBubyBiZW5lZml0IG9mIGRldGVjdGluZyBpdCBhdXRvbWF0aWNhbGx5IGJ5Ci1wb2tpbmcgYXQgdG9vbHMgZXNwZWNpYWxseSBpbiBjcm9zcyBlbnYKLQotRml4ZXMgZXJyb3JzIGxpa2UKLQotbGlua2luZyAtbW5hbj0yMDA4IG1vZHVsZSB3aXRoIHByZXZpb3VzIC1tbmFuPWxlZ2FjeSBtb2R1bGVzCi1mYWlsZWQgdG8gbWVyZ2UgdGFyZ2V0IHNwZWNpZmljIGRhdGEgb2YgZmlsZQotCi0tS2hlbQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KLQotSW5kZXg6IGdzdC1saWJhdi0xLjEwLjEvZ3N0LWxpYnMvZXh0L2xpYmF2L2NvbmZpZ3VyZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdzdC1saWJhdi0xLjEwLjEub3JpZy9nc3QtbGlicy9leHQvbGliYXYvY29uZmlndXJlCi0rKysgZ3N0LWxpYmF2LTEuMTAuMS9nc3QtbGlicy9leHQvbGliYXYvY29uZmlndXJlCi1AQCAtNTY1MCwxMiArNTY1MCw5IEBAIGVsaWYgZW5hYmxlZCBtaXBzOyB0aGVuCi0gCi0gICAgICMgRW5hYmxlIG1pbmltdW0gSVNBIGJhc2VkIG9uIHNlbGVjdGVkIG9wdGlvbnMKLSAgICAgaWYgZW5hYmxlZCBtaXBzNjQ7IHRoZW4KLS0gICAgICAgIGVuYWJsZWQgbWlwczY0cjYgJiYgY2hlY2tfaW5saW5lX2FzbV9mbGFncyBtaXBzNjRyNiAnImRsc2EgJDAsICQwLCAkMCwgMSInICctbWlwczY0cjYnCi0gICAgICAgICBlbmFibGVkIG1pcHM2NHIyICYmIGNoZWNrX2lubGluZV9hc21fZmxhZ3MgbWlwczY0cjIgJyJkZXh0ICQwLCAkMCwgMCwgMSInICctbWlwczY0cjInCi0gICAgICAgICBkaXNhYmxlZCBtaXBzNjRyNiAmJiBkaXNhYmxlZCBtaXBzNjRyMiAmJiBjaGVja19pbmxpbmVfYXNtX2ZsYWdzIG1pcHM2NHIxICciZGFkZGkgJDAsICQwLCAwIicgJy1taXBzNjQnCi0gICAgIGVsc2UKLS0gICAgICAgIGVuYWJsZWQgbWlwczMycjYgJiYgY2hlY2tfaW5saW5lX2FzbV9mbGFncyBtaXBzMzJyNiAnImF1aSAkMCwgJDAsIDAiJyAnLW1pcHMzMnI2JwotLSAgICAgICAgZW5hYmxlZCBtaXBzMzJyNSAmJiBjaGVja19pbmxpbmVfYXNtX2ZsYWdzIG1pcHMzMnI1ICciZXJldG5jIicgJy1taXBzMzJyNScKLSAgICAgICAgIGVuYWJsZWQgbWlwczMycjIgJiYgY2hlY2tfaW5saW5lX2FzbV9mbGFncyBtaXBzMzJyMiAnImV4dCAkMCwgJDAsIDAsIDEiJyAnLW1pcHMzMnIyJwotICAgICAgICAgZGlzYWJsZWQgbWlwczMycjYgJiYgZGlzYWJsZWQgbWlwczMycjUgJiYgZGlzYWJsZWQgbWlwczMycjIgJiYgY2hlY2tfaW5saW5lX2FzbV9mbGFncyBtaXBzMzJyMSAnImFkZGkgJDAsICQwLCAwIicgJy1taXBzMzInCi0gICAgIGZpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvd29ya2Fyb3VuZC10by1idWlsZC1nc3QtbGliYXYtZm9yLWk1ODYtd2l0aC1nY2MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvd29ya2Fyb3VuZC10by1idWlsZC1nc3QtbGliYXYtZm9yLWk1ODYtd2l0aC1nY2MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiODUzNTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2L3dvcmthcm91bmQtdG8tYnVpbGQtZ3N0LWxpYmF2LWZvci1pNTg2LXdpdGgtZ2NjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotRGVzY3JpcHRpb246IFdvcmthcm91bmQgdG8gYnVpbGQgbGliYXYgZm9yIGk1ODYgd2l0aCBnY2MgNC45LjIgYnkgYXZvaWRpbmcgbWVtc2V0Ci1BdXRob3I6IEJlcm5oYXJkINxiZWxhY2tlciA8YmVybmhhcmR1QHZyLXdlYi5kZT4KLQotLS0tCi1CdWctRGViaWFuOiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy83ODMwODIKLUxhc3QtVXBkYXRlOiAyMDE1LTA0LTI4Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2RlYmlhbl0KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0KLS0tLSBnc3QtbGliYXYtMS40LjUub3JpZy9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9oMjY0X2NhYmFjLmMKLSsrKyBnc3QtbGliYXYtMS40LjUvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvaDI2NF9jYWJhYy5jCi1AQCAtMjA1Nyw3ICsyMDU3LDExIEBAIGRlY29kZV9pbnRyYV9tYjoKLSAgICAgICAgIC8vIEluIGRlYmxvY2tpbmcsIHRoZSBxdWFudGl6ZXIgaXMgMAotICAgICAgICAgaC0+Y3VyX3BpYy5xc2NhbGVfdGFibGVbbWJfeHldID0gMDsKLSAgICAgICAgIC8vIEFsbCBjb2VmZnMgYXJlIHByZXNlbnQKLS0gICAgICAgIG1lbXNldChoLT5ub25femVyb19jb3VudFttYl94eV0sIDE2LCA0OCk7Ci0rICAgICAgICAvKm1lbXNldChoLT5ub25femVyb19jb3VudFttYl94eV0sIDE2LCA0OCk7Ki8KLSsgICAgICAgICAgICAvKiBhdm9pZGluZyB0aGlzIG1lbXNldCBiZWNhdXNlIGl0IGxlYWRzIGF0IGxlYXN0IHdpdGggZ2NjNC45LjIgdG8gZXJyb3I6ICdhc20nIG9wZXJhbmQgaGFzIGltcG9zc2libGUgY29uc3RyYWludHMgKi8KLSsgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNDg7IGkrKykgewotKyAgICAgICAgICAgICggKHVuc2lnbmVkIGNoYXIqKShoLT5ub25femVyb19jb3VudFttYl94eV0pICkgW2ldID0gMTY7Ci0rICAgICAgICB9Ci0gICAgICAgICBoLT5jdXJfcGljLm1iX3R5cGVbbWJfeHldID0gbWJfdHlwZTsKLSAgICAgICAgIHNsLT5sYXN0X3FzY2FsZV9kaWZmID0gMDsKLSAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjE2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwOTU1ZmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLVNVTU1BUlkgPSAiTGliYXYtYmFzZWQgR1N0cmVhbWVyIDEueCBwbHVnaW4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy8iCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyAmICggKEdQTHYyKyAmIExHUEx2Mi4xKykgfCAoR1BMdjMrICYgTEdQTHYzKykgKSIKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9leHQvbGliYXYvZ3N0YXYuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTE4O21kNT1hNzUyYzM1MjY3ZDgyNzZmZDljYTNkYjY5OTRmY2E5YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5HUEx2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkxHUEx2Mi4xO21kNT1iZDdhNDQzMzIwYWY4YzgxMmU0YzE4ZDFiNzlkZjAwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LWxpYmF2L2dzdC1saWJhdi0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLXlhc20tZm9yLWxpYmF2LXdoZW4tZGlzYWJsZS15YXNtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3dvcmthcm91bmQtdG8tYnVpbGQtZ3N0LWxpYmF2LWZvci1pNTg2LXdpdGgtZ2NjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21pcHM2NF9jcHVfZGV0ZWN0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLWNoZWNrLWZvci1hcm12N3ZlLXZhcmlhbnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjU4MDIzZjRjNzFiYmQ3MTEwNjFlMzUwZmNkNzZjMDlkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4YTU3NDhhZTlhNGE3YmU5Njk2NTEyMTgyZWE5ZmZhNmVmZTBiZTliNzk3NjkxNjU0OGU5ZDQzODFjYTYxYzQiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtbGliYXYtJHtQVn0iCi0KLURFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgemxpYiBiemlwMiB4eiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBndGstZG9jCi0KLSMgQ0FVVElPTjogVXNpbmcgdGhlIHN5c3RlbSBsaWJhdiBpcyBub3QgcmVjb21tZW5kZWQuIFNpbmNlIHRoZSBsaWJhdiBBUEkgaXMgY2hhbmdpbmcgYWxsIHRoZSB0aW1lLAotIyBjb21waWxhdGlvbiBlcnJvcnMgKGFuZCBvdGhlciwgbW9yZSBzdWJ0bGUgYnVncykgY2FuIGhhcHBlbi4gSXQgaXMgdXN1YWxseSBiZXR0ZXIgdG8gcmVseSBvbiB0aGUKLSMgbGliYXYgY29weSBpbmNsdWRlZCBpbiB0aGUgZ3N0LWxpYmF2IHBhY2thZ2UuCi1QQUNLQUdFQ09ORklHID8/PSAib3JjIHlhc20iCi0KLVBBQ0tBR0VDT05GSUdbZ3BsXSA9ICItLWVuYWJsZS1ncGwsLS1kaXNhYmxlLWdwbCwiCi1QQUNLQUdFQ09ORklHW2xpYmF2XSA9ICItLXdpdGgtc3lzdGVtLWxpYmF2LCxsaWJhdiIKLVBBQ0tBR0VDT05GSUdbb3JjXSA9ICItLWVuYWJsZS1vcmMsLS1kaXNhYmxlLW9yYyxvcmMiCi1QQUNLQUdFQ09ORklHW3lhc21dID0gIi0tZW5hYmxlLXlhc20sLS1kaXNhYmxlLXlhc20sbmFzbS1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLWVuYWJsZS12YWxncmluZCwtLWRpc2FibGUtdmFsZ3JpbmQsdmFsZ3JpbmQiCi0KLUdTVFJFQU1FUl8xXzBfREVCVUcgPz0gIi0tZGlzYWJsZS1kZWJ1ZyIKLQotTElCQVZfRVhUUkFfQ09ORklHVVJFID0gIi0td2l0aC1saWJhdi1leHRyYS1jb25maWd1cmUiCi0KLUxJQkFWX0VYVFJBX0NPTkZJR1VSRV9DT01NT05fQVJHID0gIi0tdGFyZ2V0LW9zPWxpbnV4IFwKLSAgLS1jYz0nJHtDQ30nIC0tYXM9JyR7Q0N9JyAtLWxkPScke0NDfScgLS1ubT0nJHtOTX0nIC0tYXI9JyR7QVJ9JyBcCi0gIC0tcmFubGliPScke1JBTkxJQn0nIFwKLSAgJHtHU1RSRUFNRVJfMV8wX0RFQlVHfSBcCi0gIC0tY3Jvc3MtcHJlZml4PScke0hPU1RfUFJFRklYfSciCi0KLSMgRGlzYWJsZSBhc3NlbWJseSBvcHRpbWl6YXRpb25zIGZvciBYMzIsIGFzIHRoaXMgbGliYXYgbGFja3MgdGhlIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpbnV4LWdudXgzMiA9ICJ5YXNtIgotTElCQVZfRVhUUkFfQ09ORklHVVJFX0NPTU1PTl9BUkdfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgLS1kaXNhYmxlLWFzbSIKLQotTElCQVZfRVhUUkFfQ09ORklHVVJFX0NPTU1PTiA9IFwKLScke0xJQkFWX0VYVFJBX0NPTkZJR1VSRX09IiR7TElCQVZfRVhUUkFfQ09ORklHVVJFX0NPTU1PTl9BUkd9IicKLQotRVhUUkFfT0VDT05GID0gIiR7TElCQVZfRVhUUkFfQ09ORklHVVJFX0NPTU1PTn0iCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLnNvIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmEiCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwNDkzLwotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKLQotIyBmZm1wZWcvbGliYXYgZGlzYWJsZXMgUElDIG9uIHNvbWUgcGxhdGZvcm1zIChlLmcuIHg4Ni0zMikKLUlOU0FORV9TS0lQXyR7UE59ID0gInRleHRyZWwiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xNi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmRlZmM5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTYuMi5iYgpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIkxpYmF2LWJhc2VkIEdTdHJlYW1lciAxLnggcGx1Z2luIgorSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisgJiAoIChHUEx2MisgJiBMR1BMdjIuMSspIHwgKEdQTHYzKyAmIExHUEx2MyspICkiCitMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXh0L2xpYmF2L2dzdGF2Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xODttZDU9YTc1MmMzNTI2N2Q4Mjc2ZmQ5Y2EzZGI2OTk0ZmNhOWMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtbGliYXYvZ3N0LWxpYmF2LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYWNlYmQwMTM2ZWRlM2E5YmQzNjcyZWViMzM4ODA2YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNzI0ZjYxMjcwMGMxNWE5MzNjNzM1NmZiZWFiYjBiYjk1NzFmYjU1MzhmOGIxYjU0ZDRkMmQ5NDE4OGRlZWYyIgorCitTID0gIiR7V09SS0RJUn0vZ3N0LWxpYmF2LSR7UFZ9IgorCitERVBFTkRTID0gImdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGZmbXBlZyIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLnNvIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmEiCisKK2RlbGV0ZV91bnVzZWRfbGliYXZfY29weSgpIHsKKyAgICAgICAgIyBXaGVuIGJ1aWxkaW5nIHdpdGggbWVzb24sIHRoZSBpbnRlcm5hbCBsaWJhdiBjb3B5IGlzIG5vdCB1c2VkLgorICAgICAgICAjIEl0IGlzIG9ubHkgcHJlc2VudCBmb3IgbGVnYWN5IGF1dG90b29scyBiYXNlZCBidWlsZHMuIEluIGZ1dHVyZQorICAgICAgICAjIEdTdHJlYW1lciB2ZXJzaW9ucywgdGhlIGF1dG90b29scyBzY3JpcHRzIHdpbGwgYmUgZ29uZSwgYW5kIHNvCisgICAgICAgICMgd2lsbCB0aGlzIGludGVybmFsIGNvcHkuIFVudGlsIHRoZW4sIGl0IHdpbGwgYmUgcHJlc2VudC4gSW4gb3JkZXIKKyAgICAgICAgIyB0byBtYWtlIHN1cmUgdGhpcyBjb3B5IGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgLXNyYyBwYWNrYWdlLCBqdXN0CisgICAgICAgICMgbWFudWFsbHkgZGVsZXRlIHRoZSBjb3B5LgorICAgICAgICBybSAtcmYgIiR7U30vZ3N0LWxpYnMvZXh0L2xpYmF2LyIKK30KKworZG9fdW5wYWNrW3Bvc3RmdW5jc10gKz0gIiBkZWxldGVfdW51c2VkX2xpYmF2X2NvcHkiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjJmNzA0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuTUFYIElMIHBsdWdpbnMgZm9yIEdTdHJlYW1lciIKLUhPTUVQQUdFID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnLyIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL29teC9nc3RvbXguaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT01YzhlMWZjYTMyNzA0NDg4ZTc2ZDJiYTlkZGZhOTM1ZiIKLQotU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1vbXgvZ3N0LW9teC0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4OTc3MmU3YTI3N2ZkMGFiZmMyNTBlYWY4ZTRlOWNlOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjYmY1NDEyMWEyY2JhNTc1ZDQ2MDgzM2U4MTMyMjY1NzgxMjUyY2UzMmNmNWI4ZjlmYTg3NTNlNDJhYjI0YmIyIgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LW9teC0ke1BWfSIKLQotREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IGd0ay1kb2MgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLWFjcGF0aHMgPSAiLUkgJHtTfS9jb21tb24vbTQgLUkgJHtTfS9tNCIKLQotR1NUUkVBTUVSXzFfMF9PTVhfVEFSR0VUID89ICJiZWxsYWdpbyIKLUdTVFJFQU1FUl8xXzBfT01YX0NPUkVfTkFNRSA/PSAiJHtsaWJkaXJ9L2xpYm9teGlsLWJlbGxhZ2lvLnNvLjAiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXZhbGdyaW5kIC0td2l0aC1vbXgtdGFyZ2V0PSR7R1NUUkVBTUVSXzFfMF9PTVhfVEFSR0VUfSIKLQotcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKLSAgICBvbXhfdGFyZ2V0ID0gZC5nZXRWYXIoIkdTVFJFQU1FUl8xXzBfT01YX1RBUkdFVCIpCi0gICAgaWYgb214X3RhcmdldCBpbiBbJ2dlbmVyaWMnLCAnYmVsbGFnaW8nXToKLSAgICAgICAgIyBCZWxsYWdpbyBoZWFkZXJzIGFyZSBpbmNvbXBsZXRlICh0aGV5IGFyZSBtaXNzaW5nIHRoZSBPTVhfVkVSU0lPTl9NQUpPUiwjCi0gICAgICAgICMgT01YX1ZFUlNJT05fTUlOT1IsIE9NWF9WRVJTSU9OX1JFVklTSU9OLCBhbmQgT01YX1ZFUlNJT05fU1RFUCBtYWNyb3MpOwotICAgICAgICAjIGFwcGVuZGluZyBhIGRpcmVjdG9yeSBwYXRoIHRvIGdzdC1vbXgnIGludGVybmFsIE9wZW5NQVggSUwgaGVhZGVycyBmaXhlcyB0aGlzCi0gICAgICAgIGQuYXBwZW5kVmFyKCJDRkxBR1MiLCAiIC1JJHtTfS9vbXgvb3Blbm1heCIpCi0gICAgZWxpZiBvbXhfdGFyZ2V0ID09ICJycGkiOgotICAgICAgICAjIERlZGljYXRlZCBSYXNwYmVycnkgUGkgT3Blbk1BWCBJTCBzdXBwb3J0IG1ha2VzIHRoaXMgcGFja2FnZSBtYWNoaW5lIHNwZWNpZmljCi0gICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFX0FSQ0giLCBkLmdldFZhcigiTUFDSElORV9BUkNIIikpCi19Ci0KLWRlbGV0ZV9wa2dfbTRfZmlsZSgpIHsKLSAgICAjIERlbGV0ZSBtNCBmaWxlcyB3aGljaCB3ZSBwcm92aWRlIHBhdGNoZWQgdmVyc2lvbnMgb2YgYnV0IHdpbGwgYmUgaWdub3JlZAotICAgICMgaWYgdGhlc2UgZXhpc3QKLQlybSAtZiAiJHtTfS9jb21tb24vbTQvcGtnLm00IgotCXJtIC1mICIke1N9L2NvbW1vbi9tNC9ndGstZG9jLm00IgotfQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiZGVsZXRlX3BrZ19tNF9maWxlIgotCi1zZXRfb214X2NvcmVfbmFtZSgpIHsKLQlzZWQgLWkgLWUgInM7XmNvcmUtbmFtZT0uKjtjb3JlLW5hbWU9JHtHU1RSRUFNRVJfMV8wX09NWF9DT1JFX05BTUV9OyIgIiR7RH0ke3N5c2NvbmZkaXJ9L3hkZy9nc3RvbXguY29uZiIKLX0KLWRvX2luc3RhbGxbcG9zdGZ1bmNzXSArPSAiIHNldF9vbXhfY29yZV9uYW1lICIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyouc28iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyouYSIKLQotUkRFUEVORFNfJHtQTn0gPSAibGlib214aWwiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxYmRiZDIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTYuMi5iYgpAQCAtMCwwICsxLDQ3IEBACitTVU1NQVJZID0gIk9wZW5NQVggSUwgcGx1Z2lucyBmb3IgR1N0cmVhbWVyIgorSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vb214L2dzdG9teC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PTVjOGUxZmNhMzI3MDQ0ODhlNzZkMmJhOWRkZmE5MzVmIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LW9teC9nc3Qtb214LSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gIjYzNjI3ODZkMmI2Y2NlMzRkZTA4Yzg2Yjc4NDdmNzgyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjExZWQ0MTFhMmViYTc1NjEwZDcyMzMxZWViMTRmZjA1ZTJkZjI4ZjRmZDA1Y2I2OTIyNWE4OGJlYzZkMjc0MzkiCisKK1MgPSAiJHtXT1JLRElSfS9nc3Qtb214LSR7UFZ9IgorCitERVBFTkRTID0gImdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCB2aXJ0dWFsL2xpYm9teGlsIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworR1NUUkVBTUVSXzFfMF9PTVhfVEFSR0VUID89ICJiZWxsYWdpbyIKK0dTVFJFQU1FUl8xXzBfT01YX0NPUkVfTkFNRSA/PSAiJHtsaWJkaXJ9L2xpYm9teGlsLWJlbGxhZ2lvLnNvLjAiCisKK0VYVFJBX09FTUVTT04gKz0gIi1EdGFyZ2V0PSR7R1NUUkVBTUVSXzFfMF9PTVhfVEFSR0VUfSIKKworcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKKyAgICBvbXhfdGFyZ2V0ID0gZC5nZXRWYXIoIkdTVFJFQU1FUl8xXzBfT01YX1RBUkdFVCIpCisgICAgaWYgb214X3RhcmdldCBpbiBbJ2dlbmVyaWMnLCAnYmVsbGFnaW8nXToKKyAgICAgICAgIyBCZWxsYWdpbyBoZWFkZXJzIGFyZSBpbmNvbXBsZXRlICh0aGV5IGFyZSBtaXNzaW5nIHRoZSBPTVhfVkVSU0lPTl9NQUpPUiwjCisgICAgICAgICMgT01YX1ZFUlNJT05fTUlOT1IsIE9NWF9WRVJTSU9OX1JFVklTSU9OLCBhbmQgT01YX1ZFUlNJT05fU1RFUCBtYWNyb3MpOworICAgICAgICAjIGFwcGVuZGluZyBhIGRpcmVjdG9yeSBwYXRoIHRvIGdzdC1vbXgnIGludGVybmFsIE9wZW5NQVggSUwgaGVhZGVycyBmaXhlcyB0aGlzCisgICAgICAgIGQuYXBwZW5kVmFyKCJDRkxBR1MiLCAiIC1JJHtTfS9vbXgvb3Blbm1heCIpCisgICAgZWxpZiBvbXhfdGFyZ2V0ID09ICJycGkiOgorICAgICAgICAjIERlZGljYXRlZCBSYXNwYmVycnkgUGkgT3Blbk1BWCBJTCBzdXBwb3J0IG1ha2VzIHRoaXMgcGFja2FnZSBtYWNoaW5lIHNwZWNpZmljCisgICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFX0FSQ0giLCBkLmdldFZhcigiTUFDSElORV9BUkNIIikpCit9CisKK3NldF9vbXhfY29yZV9uYW1lKCkgeworCXNlZCAtaSAtZSAiczteY29yZS1uYW1lPS4qO2NvcmUtbmFtZT0ke0dTVFJFQU1FUl8xXzBfT01YX0NPUkVfTkFNRX07IiAiJHtEfSR7c3lzY29uZmRpcn0veGRnL2dzdG9teC5jb25mIgorfQorZG9faW5zdGFsbFtwb3N0ZnVuY3NdICs9ICIgc2V0X29teF9jb3JlX25hbWUgIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5zbyIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5hIgorCitWSVJUVUFMLVJVTlRJTUVfbGlib214aWwgPz0gImxpYm9teGlsIgorUkRFUEVORFNfJHtQTn0gPSAiJHtWSVJUVUFMLVJVTlRJTUVfbGlib214aWx9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMyMTg1MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSA5N2E0ZDBjZDdkZThjZmJmOTgzYWNjN2UzN2JhMmY4ZmI3M2MzZTE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP1RpbS1QaGlsaXBwPTIwTT1DMz1CQ2xsZXI/PSA8dGltQGNlbnRyaWN1bGFyLmNvbT4KK0RhdGU6IEZyaSwgMTggT2N0IDIwMTkgMDA6Mzk6MTIgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIG1lc29uOiBidWlsZCBnaXIgZXZlbiB3aGVuIGNyb3NzLWNvbXBpbGluZyBpZgorIGludHJvc3BlY3Rpb24gd2FzIGVuYWJsZWQgZXhwbGljaXRseQorCitUaGlzIGNhbiBiZSBtYWRlIHRvIHdvcmsgaW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzIHdoZW4KK2Nyb3NzLWNvbXBpbGluZywgc28gZGVmYXVsdCB0byBub3QgYnVpbGRpbmcgZy1pIHN0dWZmCit3aGVuIGNyb3NzLWNvbXBpbGluZywgYnV0IGFsbG93IGl0IGlmIGludHJvc3BlY3Rpb24gd2FzCitlbmFibGVkIGV4cGxpY2l0bHkgdmlhIC1EaW50cm9zcGVjdGlvbj1lbmFibGVkLgorCitTZWUgZ3N0cmVhbWVyL2dzdHJlYW1lciM0NTQgYW5kIGdzdHJlYW1lci9nc3RyZWFtZXIjMzgxLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFs5N2E0ZDBjZDdkZThjZmJmOTgzYWNjN2UzN2JhMmY4ZmI3M2MzZTE5XQorCitTaWduZWQtb2ZmLWJ5OiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxjcmc3NDc1QG1haWxib3gub3JnPgorLS0tCisgbWVzb24uYnVpbGQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCA2N2FlZWI0ZDAuLjdiMzMxNGJkOSAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTQxMSw3ICs0MTEsNyBAQCBweXRob24zID0gaW1wb3J0KCdweXRob24nKS5maW5kX2luc3RhbGxhdGlvbigpCisgCisgZ2lyID0gZmluZF9wcm9ncmFtKCdnLWlyLXNjYW5uZXInLCByZXF1aXJlZCA6IGdldF9vcHRpb24oJ2ludHJvc3BlY3Rpb24nKSkKKyBnbm9tZSA9IGltcG9ydCgnZ25vbWUnKQorLWJ1aWxkX2dpciA9IGdpci5mb3VuZCgpIGFuZCBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKQorK2J1aWxkX2dpciA9IGdpci5mb3VuZCgpIGFuZCAobm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgZ2V0X29wdGlvbignaW50cm9zcGVjdGlvbicpLmVuYWJsZWQoKSkKKyBnaXJfaW5pdF9zZWN0aW9uID0gWyAnLS1hZGQtaW5pdC1zZWN0aW9uPWV4dGVybiB2b2lkIGdzdF9pbml0KGdpbnQqLGdjaGFyKiopOycgKyBcCisgICAgICdnX3NldGVudigiR1NUX1JFR0lTVFJZXzEuMCIsICJAMEAiLCBUUlVFKTsnLmZvcm1hdChtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpICsgJy9naXJfZW1wdHlfcmVnaXN0cnkucmVnJykgKyBcCisgICAgICdnX3NldGVudigiR1NUX1BMVUdJTl9QQVRIXzFfMCIsICIiLCBUUlVFKTsnICsgXAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnNzaDIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtbGlic3NoMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU4NjFiNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtbGlic3NoMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLUZyb20gZjU5YzUyNjlmOTJkNTlhNTI5NmNiZmVlYjY4MmQ0MjA5NWNkODhhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAxOCBTZXAgMjAxNCAwMjoyNDowNyAtMDQwMAotU3ViamVjdDogW1BBVENIXSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQ6IGFsbG93IHRvIGRpc2FibGUgbGlic3NoMgotCi1saWJzc2gyIGlzIGF1dG9tYXRpY2FsbHkgbGlua2VkIHRvIGlmIHByZXNlbnQsIHRoaXMgdW5kZXRlcm1pbmVkCi1kZXBlbmRlbmN5IG1heSBjYXVzZSBidWlsZCBlcnJvcnMgbGlrZToKLQotICAuLi4veDg2XzY0LXBva3ktbGludXgvNC45LjAvbGQ6IGNhbm5vdCBmaW5kIC1sc3NoMgotCi1saWJzc2gyIGlzbid0IGFuIG9lLWNvcmUgcmVjaXBlLCBzbyBhbGxvdyB0byBkaXNhYmxlIGl0IGZyb20KLWNvbmZpZ3VyZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgICAyMyArKysrKysrKysrKysrKysrKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ3N0LXBsdWdpbnMtYmFkLTEuMTIuMy9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnc3QtcGx1Z2lucy1iYWQtMS4xMi4zLm9yaWcvY29uZmlndXJlLmFjCi0rKysgZ3N0LXBsdWdpbnMtYmFkLTEuMTIuMy9jb25maWd1cmUuYWMKLUBAIC0xMjAyLDYgKzEyMDIsMTUgQEAgQUdfR1NUX0NIRUNLX0ZFQVRVUkUoQ0hST01BUFJJTlQsIFtjaHJvbQotIF0pCi0gCi0gZG5sICoqKiBDdXJsICoqKgotK0FDX0FSR19FTkFCTEUoW2xpYnNzaDJdLAotKyAgICAgWyAgLS1lbmFibGUtbGlic3NoMgkJZW5hYmxlIExJQlNTSDIgc3VwcG9ydCBAPDpAZGVmYXVsdD1hdXRvQDo+QF0sCi0rICAgICBbY2FzZSAiJHtlbmFibGV2YWx9IiBpbgotKyAgICAgICB5ZXMpICBORUVEX1NTSDI9eWVzIDs7Ci0rICAgICAgIG5vKSAgIE5FRURfU1NIMj1ubyA7OwotKyAgICAgICBhdXRvKSBORUVEX1NTSDI9YXV0byA7OwotKyAgICAgICAqKSBBQ19NU0dfRVJST1IoW2JhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIC0tZW5hYmxlLWxpYnNzaDJdKSA7OwotKyAgICAgZXNhY10sW05FRURfU1NIMj1hdXRvXSkKLSsKLSB0cmFuc2xpdChkbm0sIG0sIGwpIEFNX0NPTkRJVElPTkFMKFVTRV9DVVJMLCB0cnVlKQotIEFHX0dTVF9DSEVDS19GRUFUVVJFKENVUkwsIFtDdXJsIHBsdWdpbl0sIGN1cmwsIFsKLSAgIFBLR19DSEVDS19NT0RVTEVTKENVUkwsIGxpYmN1cmwgPj0gNy4zNS4wLCBbCi1AQCAtMTIyNCwxMiArMTIzMywxNCBAQCBBR19HU1RfQ0hFQ0tfRkVBVFVSRShDVVJMLCBbQ3VybCBwbHVnaW5dCi0gICBdKQotICAgQUNfU1VCU1QoQ1VSTF9DRkxBR1MpCi0gICBBQ19TVUJTVChDVVJMX0xJQlMpCi0tICBQS0dfQ0hFQ0tfTU9EVUxFUyhTU0gyLCBsaWJzc2gyID49IDEuNC4zLCBbCi0tICAgIEhBVkVfU1NIMj0ieWVzIgotLSAgICBBQ19ERUZJTkUoSEFWRV9TU0gyLCAxLCBbRGVmaW5lIGlmIGxpYnNzaDIgaXMgYXZhaWxhYmxlXSkKLS0gIF0sIFsKLS0gICAgSEFWRV9TU0gyPSJubyIKLS0gIF0pCi0rICBpZiB0ZXN0ICJ4JE5FRURfU1NIMiIgIT0gInhubyI7IHRoZW4KLSsgICAgUEtHX0NIRUNLX01PRFVMRVMoU1NIMiwgbGlic3NoMiA+PSAxLjQuMywgWwotKyAgICAgIEhBVkVfU1NIMj0ieWVzIgotKyAgICAgIEFDX0RFRklORShIQVZFX1NTSDIsIDEsIFtEZWZpbmUgaWYgbGlic3NoMiBpcyBhdmFpbGFibGVdKQotKyAgICBdLCBbCi0rICAgICAgSEFWRV9TU0gyPSJubyIKLSsgICAgXSkKLSsgIGZpCi0gICBBTV9DT05ESVRJT05BTChVU0VfU1NIMiwgdGVzdCAieCRIQVZFX1NTSDIiID0gInh5ZXMiKQotICAgQUNfU1VCU1QoU1NIMl9DRkxBR1MpCi0gICBBQ19TVUJTVChTU0gyX0xJQlMpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvb3BlbmN2LXJlc29sdmUtbWlzc2luZy1vcGVuY3YtZGF0YS1kaXItaW4teW9jdG8tYnVpbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC9vcGVuY3YtcmVzb2x2ZS1taXNzaW5nLW9wZW5jdi1kYXRhLWRpci1pbi15b2N0by1idWlsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiNjU5MWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvb3BlbmN2LXJlc29sdmUtbWlzc2luZy1vcGVuY3YtZGF0YS1kaXItaW4teW9jdG8tYnVpbC5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIGY0MWNhYWUxNGI2MThhYjgxNWVkZTNjNDA4ZTc0ODJiMDAzMTZlM2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZXkgWmhpemhpa2luIDxhbmRyZXkuekBnbWFpbC5jb20+CitEYXRlOiBNb24sIDI3IEphbiAyMDIwIDEwOjIyOjM1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIG9wZW5jdjogcmVzb2x2ZSBtaXNzaW5nIG9wZW5jdiBkYXRhIGRpciBpbiB5b2N0byBidWlsZAorCitXaGVuIFlvY3RvIGJ1aWxkIGlzIHBlcmZvcm1lZCwgb3BlbmN2IHNlYXJjaGVzIGZvciBkYXRhIGRpciB1c2luZyBzaW1wbGUKKyd0ZXN0JyBjb21tYW5kLCB0aGlzIGZhaWxzIGJlY2F1c2UgcGtnLWNvbmZpZyBwcm92aWRlcyBhbiBhYnNvbHV0ZQorcGF0aCBvbiB0aGUgdGFyZ2V0IHdoaWNoIG5lZWRzIHRvIGJlIHByZXBlbmRlZCBieSBQS0dfQ09ORklHX1NZU1JPT1RfRElSCitpbiBvcmRlciBmb3IgdGhlICd0ZXN0JyB1dGlsaXR5IHRvIHBpY2sgdXAgdGhlIGFic29sdXRlIHBhdGguCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Utc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJleSBaaGl6aGlraW4gPGFuZHJleS56QGdtYWlsLmNvbT4KKy0tLQorIGV4dC9vcGVuY3YvbWVzb24uYnVpbGQgfCA3ICsrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9tZXNvbi5idWlsZCBiL2V4dC9vcGVuY3YvbWVzb24uYnVpbGQKK2luZGV4IGYzOGI1NWRmZS4uYTI2NDAzNDgyIDEwMDY0NAorLS0tIGEvZXh0L29wZW5jdi9tZXNvbi5idWlsZAorKysrIGIvZXh0L29wZW5jdi9tZXNvbi5idWlsZAorQEAgLTc4LDIwICs3OCwyMSBAQCBlbHNlCisgZW5kaWYKKyAKKyBpZiBvcGVuY3ZfZm91bmQKKysgIHBrZ2NvbmZfc3lzcm9vdCA9IHJ1bl9jb21tYW5kKHB5dGhvbjMsICctYycsICdpbXBvcnQgb3M7IHByaW50KG9zLmVudmlyb24uZ2V0KCJQS0dfQ09ORklHX1NZU1JPT1RfRElSIikpJykuc3Rkb3V0KCkuc3RyaXAoKQorICAgb3BlbmN2X3ByZWZpeCA9IG9wZW5jdl9kZXAuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgncHJlZml4JykKKyAgIGdzdG9wZW5jdl9jYXJncyArPSBbJy1ET1BFTkNWX1BSRUZJWD0iJyArIG9wZW5jdl9wcmVmaXggKyAnIiddCisgCisgICAjIENoZWNrIHRoZSBkYXRhIGRpciB1c2VkIGJ5IG9wZW5jdiBmb3IgaXRzIHhtbCBkYXRhIGZpbGVzCisgICAjIFVzZSBwcmVmaXggZnJvbSBwa2ctY29uZmlnIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBjcm9zcy1jb21waWxhdGlvbgorLSAgciA9IHJ1bl9jb21tYW5kKCd0ZXN0JywgJy1kJywgb3BlbmN2X3ByZWZpeCArICcvc2hhcmUvb3BlbmN2JykKKysgIHIgPSBydW5fY29tbWFuZCgndGVzdCcsICctZCcsIHBrZ2NvbmZfc3lzcm9vdCArIG9wZW5jdl9wcmVmaXggKyAnL3NoYXJlL29wZW5jdicpCisgICBpZiByLnJldHVybmNvZGUoKSA9PSAwCisgICAgIGdzdG9wZW5jdl9jYXJncyArPSAnLURPUEVOQ1ZfUEFUSF9OQU1FPSJvcGVuY3YiJworICAgZWxzZQorLSAgICByID0gcnVuX2NvbW1hbmQoJ3Rlc3QnLCAnLWQnLCBvcGVuY3ZfcHJlZml4ICsgJy9zaGFyZS9PcGVuQ1YnKQorKyAgICByID0gcnVuX2NvbW1hbmQoJ3Rlc3QnLCAnLWQnLCBwa2djb25mX3N5c3Jvb3QgKyBvcGVuY3ZfcHJlZml4ICsgJy9zaGFyZS9PcGVuQ1YnKQorICAgICBpZiByLnJldHVybmNvZGUoKSA9PSAwCisgICAgICAgZ3N0b3BlbmN2X2NhcmdzICs9ICctRE9QRU5DVl9QQVRIX05BTUU9Ik9wZW5DViInCisgICAgIGVsc2UKKy0gICAgICByID0gcnVuX2NvbW1hbmQoJ3Rlc3QnLCAnLWQnLCBvcGVuY3ZfcHJlZml4ICsgJy9zaGFyZS9vcGVuY3Y0JykKKysgICAgICByID0gcnVuX2NvbW1hbmQoJ3Rlc3QnLCAnLWQnLCBwa2djb25mX3N5c3Jvb3QgKyBvcGVuY3ZfcHJlZml4ICsgJy9zaGFyZS9vcGVuY3Y0JykKKyAgICAgICBpZiByLnJldHVybmNvZGUoKSA9PSAwCisgICAgICAgICBnc3RvcGVuY3ZfY2FyZ3MgKz0gJy1ET1BFTkNWX1BBVEhfTkFNRT0ib3BlbmN2NCInCisgICAgICAgZWxzZQorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuMTYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjE2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3MzFiZTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuMTYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLmluYwotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYWQvZ3N0LXBsdWdpbnMtYmFkLSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnNzaDIucGF0Y2ggXAotICAgIGZpbGU6Ly9maXgtbWF5YmUtdW5pbml0aWFsaXplZC13YXJuaW5ncy13aGVuLWNvbXBpbGluZy13aXRoLU9zLnBhdGNoIFwKLSAgICBmaWxlOi8vYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2ggXAotICAgIGZpbGU6Ly9lbnN1cmUtdmFsaWQtc2VudGluZWxzLWZvci1nc3Rfc3RydWN0dXJlX2dldC1ldGMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjI0ZDRkMzBlY2M2N2Q1Y2JjNzdjMDQ3NWJjZWExMjEwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU2NDgxYzk1MzM5Yjg5ODVhZjEzYmFjMTliMThiYzhkYTcxMThjMmE3ZDk0NDBlZDcwZTdkY2Q3OTljMmFkYjUiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1iYWQtJHtQVn0iCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyAmIExHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTczYTU4NTVhODExOWRlYjAxN2Y1ZjEzY2YzMjcwOTVkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yMTY4MmU0ZThmZWE1MjQxM2ZkMjZjNjBhY2I5MDdlNSAiCi0KLURFUEVORFMgKz0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCi0KLWluaGVyaXQgZ2V0dGV4dCBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgJHtHU1RSRUFNRVJfT1JDfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnYmx1ZXonLCAnJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdkaXJlY3RmYiB2dWxrYW4nLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd3YXlsYW5kJywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnZ2wnLCAnJywgZCl9IFwKLSAgICBiejIgY3VybCBkYXNoIGR0bHMgaGxzIHJzdmcgc2JjIHNtb290aHN0cmVhbWluZyBzbmRmaWxlIHR0bWwgdXZjaDI2NCB3ZWJwIFwKLSIKLQotIyB0aGUgZ2wgcGFja2FnZWNvbmZpZyBlbmFibGVzIE9wZW5HTCBlbGVtZW50cyB0aGF0IGhhdmVuJ3QgYmVlbiBwb3J0ZWQKLSMgdG8gLWJhc2UgeWV0LiBUaGV5IGRlcGVuZCBvbiB0aGUgZ3N0Z2wgbGlicmFyeSBpbiAtYmFzZSwgc28gd2UgZG8KLSMgbm90IGFkZCBHTCBkZXBlbmRlbmNpZXMgaGVyZSwgc2luY2UgdGhlc2UgYXJlIHRha2VuIGNhcmUgb2YgaW4gLWJhc2UuCi0KLVBBQ0tBR0VDT05GSUdbYXNzcmVuZGVyXSAgICAgICA9ICItLWVuYWJsZS1hc3NyZW5kZXIsLS1kaXNhYmxlLWFzc3JlbmRlcixsaWJhc3MiCi1QQUNLQUdFQ09ORklHW2JsdWV6XSAgICAgICAgICAgPSAiLS1lbmFibGUtYmx1ZXosLS1kaXNhYmxlLWJsdWV6LGJsdWV6NSIKLVBBQ0tBR0VDT05GSUdbYnoyXSAgICAgICAgICAgICA9ICItLWVuYWJsZS1iejIsLS1kaXNhYmxlLWJ6MixiemlwMiIKLVBBQ0tBR0VDT05GSUdbY3VybF0gICAgICAgICAgICA9ICItLWVuYWJsZS1jdXJsLC0tZGlzYWJsZS1jdXJsLGN1cmwiCi1QQUNLQUdFQ09ORklHW2Rhc2hdICAgICAgICAgICAgPSAiLS1lbmFibGUtZGFzaCwtLWRpc2FibGUtZGFzaCxsaWJ4bWwyIgotUEFDS0FHRUNPTkZJR1tkYzEzOTRdICAgICAgICAgID0gIi0tZW5hYmxlLWRjMTM5NCwtLWRpc2FibGUtZGMxMzk0LGxpYmRjMTM5NCIKLVBBQ0tBR0VDT05GSUdbZGlyZWN0ZmJdICAgICAgICA9ICItLWVuYWJsZS1kaXJlY3RmYiwtLWRpc2FibGUtZGlyZWN0ZmIsZGlyZWN0ZmIiCi1QQUNLQUdFQ09ORklHW2R0bHNdICAgICAgICAgICAgPSAiLS1lbmFibGUtZHRscywtLWRpc2FibGUtZHRscyxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tmYWFjXSAgICAgICAgICAgID0gIi0tZW5hYmxlLWZhYWMsLS1kaXNhYmxlLWZhYWMsZmFhYyIKLVBBQ0tBR0VDT05GSUdbZmFhZF0gICAgICAgICAgICA9ICItLWVuYWJsZS1mYWFkLC0tZGlzYWJsZS1mYWFkLGZhYWQyIgotUEFDS0FHRUNPTkZJR1tmbGl0ZV0gICAgICAgICAgID0gIi0tZW5hYmxlLWZsaXRlLC0tZGlzYWJsZS1mbGl0ZSxmbGl0ZS1hbHNhIgotUEFDS0FHRUNPTkZJR1tmbHVpZHN5bnRoXSAgICAgID0gIi0tZW5hYmxlLWZsdWlkc3ludGgsLS1kaXNhYmxlLWZsdWlkc3ludGgsZmx1aWRzeW50aCIKLVBBQ0tBR0VDT05GSUdbaGxzXSAgICAgICAgICAgICA9ICItLWVuYWJsZS1obHMgLS13aXRoLWhscy1jcnlwdG89bmV0dGxlLC0tZGlzYWJsZS1obHMsbmV0dGxlIgotUEFDS0FHRUNPTkZJR1tnbF0gICAgICAgICAgICAgID0gIi0tZW5hYmxlLWdsLC0tZGlzYWJsZS1nbCwiCi1QQUNLQUdFQ09ORklHW2ttc10gICAgICAgICAgICAgPSAiLS1lbmFibGUta21zLC0tZGlzYWJsZS1rbXMsbGliZHJtIgotUEFDS0FHRUNPTkZJR1tsaWJkZTI2NV0gICAgICAgID0gIi0tZW5hYmxlLWxpYmRlMjY1LC0tZGlzYWJsZS1saWJkZTI2NSxsaWJkZTI2NSIKLVBBQ0tBR0VDT05GSUdbbGlibW1zXSAgICAgICAgICA9ICItLWVuYWJsZS1saWJtbXMsLS1kaXNhYmxlLWxpYm1tcyxsaWJtbXMiCi1QQUNLQUdFQ09ORklHW2xpYnNzaDJdICAgICAgICAgPSAiLS1lbmFibGUtbGlic3NoMiwtLWRpc2FibGUtbGlic3NoMixsaWJzc2gyIgotUEFDS0FHRUNPTkZJR1tsY21zMl0gICAgICAgICAgID0gIi0tZW5hYmxlLWxjbXMyLC0tZGlzYWJsZS1sY21zMixsY21zIgotUEFDS0FHRUNPTkZJR1ttb2RwbHVnXSAgICAgICAgID0gIi0tZW5hYmxlLW1vZHBsdWcsLS1kaXNhYmxlLW1vZHBsdWcsbGlibW9kcGx1ZyIKLVBBQ0tBR0VDT05GSUdbbXNka10gICAgICAgICAgICA9ICItLWVuYWJsZS1tc2RrLC0tZGlzYWJsZS1tc2RrLGludGVsLW1lZGlhc2RrIgotUEFDS0FHRUNPTkZJR1tuZW9uXSAgICAgICAgICAgID0gIi0tZW5hYmxlLW5lb24sLS1kaXNhYmxlLW5lb24sbmVvbiIKLVBBQ0tBR0VDT05GSUdbb3BlbmFsXSAgICAgICAgICA9ICItLWVuYWJsZS1vcGVuYWwsLS1kaXNhYmxlLW9wZW5hbCxvcGVuYWwtc29mdCIKLVBBQ0tBR0VDT05GSUdbb3BlbmN2XSAgICAgICAgICA9ICItLWVuYWJsZS1vcGVuY3YsLS1kaXNhYmxlLW9wZW5jdixvcGVuY3YiCi1QQUNLQUdFQ09ORklHW29wZW5oMjY0XSAgICAgICAgPSAiLS1lbmFibGUtb3BlbmgyNjQsLS1kaXNhYmxlLW9wZW5oMjY0LG9wZW5oMjY0IgotUEFDS0FHRUNPTkZJR1tvcGVuanBlZ10gICAgICAgID0gIi0tZW5hYmxlLW9wZW5qcGVnLC0tZGlzYWJsZS1vcGVuanBlZyxvcGVuanBlZyIKLVBBQ0tBR0VDT05GSUdbb3Blbm1wdF0gICAgICAgICA9ICItLWVuYWJsZS1vcGVubXB0LC0tZGlzYWJsZS1vcGVubXB0LGxpYm9wZW5tcHQiCi0jIHRoZSBvcHVzIGVuY29kZXIvZGVjb2RlciBlbGVtZW50cyBhcmUgbm93IGluIHRoZSAtYmFzZSBwYWNrYWdlLAotIyBidXQgdGhlIG9wdXMgcGFyc2VyIHJlbWFpbnMgaW4gLWJhZAotUEFDS0FHRUNPTkZJR1tvcHVzcGFyc2VdICAgICAgID0gIi0tZW5hYmxlLW9wdXMsLS1kaXNhYmxlLW9wdXMsbGlib3B1cyIKLVBBQ0tBR0VDT05GSUdbcmVzaW5kdmRdICAgICAgICA9ICItLWVuYWJsZS1yZXNpbmR2ZCwtLWRpc2FibGUtcmVzaW5kdmQsbGliZHZkcmVhZCBsaWJkdmRuYXYiCi1QQUNLQUdFQ09ORklHW3JzdmddICAgICAgICAgICAgPSAiLS1lbmFibGUtcnN2ZywtLWRpc2FibGUtcnN2ZyxsaWJyc3ZnIgotUEFDS0FHRUNPTkZJR1tydG1wXSAgICAgICAgICAgID0gIi0tZW5hYmxlLXJ0bXAsLS1kaXNhYmxlLXJ0bXAscnRtcGR1bXAiCi1QQUNLQUdFQ09ORklHW3NiY10gICAgICAgICAgICAgPSAiLS1lbmFibGUtc2JjLC0tZGlzYWJsZS1zYmMsc2JjIgotUEFDS0FHRUNPTkZJR1tzY3RwXSAgICAgICAgICAgID0gIi0tZW5hYmxlLXNjdHAsLS1kaXNhYmxlLXNjdHAsdXNyc2N0cCIKLVBBQ0tBR0VDT05GSUdbc21vb3Roc3RyZWFtaW5nXSA9ICItLWVuYWJsZS1zbW9vdGhzdHJlYW1pbmcsLS1kaXNhYmxlLXNtb290aHN0cmVhbWluZyxsaWJ4bWwyIgotUEFDS0FHRUNPTkZJR1tzbmRmaWxlXSAgICAgICAgID0gIi0tZW5hYmxlLXNuZGZpbGUsLS1kaXNhYmxlLXNuZGZpbGUsbGlic25kZmlsZTEiCi1QQUNLQUdFQ09ORklHW3NydHBdICAgICAgICAgICAgPSAiLS1lbmFibGUtc3J0cCwtLWRpc2FibGUtc3J0cCxsaWJzcnRwIgotUEFDS0FHRUNPTkZJR1t0aW55YWxzYV0gICAgICAgID0gIi0tZW5hYmxlLXRpbnlhbHNhLC0tZGlzYWJsZS10aW55YWxzYSx0aW55YWxzYSIKLVBBQ0tBR0VDT05GSUdbdHRtbF0gICAgICAgICAgICA9ICItLWVuYWJsZS10dG1sLC0tZGlzYWJsZS10dG1sLGxpYnhtbDIgcGFuZ28gY2Fpcm8iCi1QQUNLQUdFQ09ORklHW3V2Y2gyNjRdICAgICAgICAgPSAiLS1lbmFibGUtdXZjaDI2NCwtLWRpc2FibGUtdXZjaDI2NCxsaWJ1c2IxIGxpYmd1ZGV2IgotUEFDS0FHRUNPTkZJR1t2b2FhY2VuY10gICAgICAgID0gIi0tZW5hYmxlLXZvYWFjZW5jLC0tZGlzYWJsZS12b2FhY2VuYyx2by1hYWNlbmMiCi1QQUNLQUdFQ09ORklHW3ZvYW1yd2JlbmNdICAgICAgPSAiLS1lbmFibGUtdm9hbXJ3YmVuYywtLWRpc2FibGUtdm9hbXJ3YmVuYyx2by1hbXJ3YmVuYyIKLVBBQ0tBR0VDT05GSUdbdnVsa2FuXSAgICAgICAgICA9ICItLWVuYWJsZS12dWxrYW4sLS1kaXNhYmxlLXZ1bGthbix2dWxrYW4tbG9hZGVyIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSAgICAgICAgID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJkcm0iCi1QQUNLQUdFQ09ORklHW3dlYnBdICAgICAgICAgICAgPSAiLS1lbmFibGUtd2VicCwtLWRpc2FibGUtd2VicCxsaWJ3ZWJwIgotUEFDS0FHRUNPTkZJR1t3ZWJydGNdICAgICAgICAgID0gIi0tZW5hYmxlLXdlYnJ0YywtLWRpc2FibGUtd2VicnRjLGxpYm5pY2UiCi1QQUNLQUdFQ09ORklHW3dlYnJ0Y2RzcF0gICAgICAgPSAiLS1lbmFibGUtd2VicnRjZHNwLC0tZGlzYWJsZS13ZWJydGNkc3Asd2VicnRjLWF1ZGlvLXByb2Nlc3NpbmciCi0KLSMgdGhlc2UgcGx1Z2lucyBoYXZlIG5vIGNvcnJlc3BvbmRpbmcgbGlicmFyeSBpbiBPRS1jb3JlIG9yIG1ldGEtb3BlbmVtYmVkZGVkOgotIyAgIG9wZW5uaTIgd2lua3MgZGlyZWN0M2QgZGlyZWN0c291bmQgd2luc2NyZWVuY2FwIGFwcGxlX21lZGlhIGlxYQotIyAgIGFuZHJvaWRfbWVkaWEgYXZjIGJzMmIgY2hyb21hcHJpbnQgZHRzIGZka2FhYyBnbWUgZ3NtIGthdGUgbGFkc3BhCi0jICAgbHYyIG1wZWcyZW5jIG1wbGV4IG11c2VwYWNrIG52ZW5jIG9mYSBvcGVuc2xlcyBzb3VuZHRvdWNoCi0jICAgc3BhbmRzcCB0ZWxldGV4dGRlYyB2ZHBhdSB3YXNhcGkgd3BlIHgyNjUgemJhcgotCi1FWFRSQV9PRUNPTkYgKz0gIiBcCi0gICAgLS1lbmFibGUtZGVja2xpbmsgXAotICAgIC0tZW5hYmxlLWR2YiBcCi0gICAgLS1lbmFibGUtZmJkZXYgXAotICAgIC0tZW5hYmxlLWlwY3BpcGVsaW5lIFwKLSAgICAtLWVuYWJsZS1uZXRzaW0gXAotICAgIC0tZW5hYmxlLXNobSBcCi0gICAgLS1kaXNhYmxlLWFuZHJvaWRfbWVkaWEgXAotICAgIC0tZGlzYWJsZS1hb20gXAotICAgIC0tZGlzYWJsZS1hcHBsZV9tZWRpYSBcCi0gICAgLS1kaXNhYmxlLWF2YyBcCi0gICAgLS1kaXNhYmxlLWJzMmIgXAotICAgIC0tZGlzYWJsZS1jaHJvbWFwcmludCBcCi0gICAgLS1kaXNhYmxlLWRpcmVjdDNkIFwKLSAgICAtLWRpc2FibGUtZGlyZWN0c291bmQgXAotICAgIC0tZGlzYWJsZS1kdHMgXAotICAgIC0tZGlzYWJsZS1mZGtfYWFjIFwKLSAgICAtLWRpc2FibGUtZ21lIFwKLSAgICAtLWRpc2FibGUtZ3NtIFwKLSAgICAtLWRpc2FibGUtaXFhIFwKLSAgICAtLWRpc2FibGUta2F0ZSBcCi0gICAgLS1kaXNhYmxlLWxhZHNwYSBcCi0gICAgLS1kaXNhYmxlLWx2MiBcCi0gICAgLS1kaXNhYmxlLW1wZWcyZW5jIFwKLSAgICAtLWRpc2FibGUtbXBsZXggXAotICAgIC0tZGlzYWJsZS1tdXNlcGFjayBcCi0gICAgLS1kaXNhYmxlLW52ZW5jIFwKLSAgICAtLWRpc2FibGUtb2ZhIFwKLSAgICAtLWRpc2FibGUtb3BlbmV4ciBcCi0gICAgLS1kaXNhYmxlLW9wZW5uaTIgXAotICAgIC0tZGlzYWJsZS1vcGVuc2xlcyBcCi0gICAgLS1kaXNhYmxlLXNvdW5kdG91Y2ggXAotICAgIC0tZGlzYWJsZS1zcGFuZHNwIFwKLSAgICAtLWRpc2FibGUtc3J0IFwKLSAgICAtLWRpc2FibGUtdGVsZXRleHRkZWMgXAotICAgIC0tZGlzYWJsZS12ZHBhdSBcCi0gICAgLS1kaXNhYmxlLXdhc2FwaSBcCi0gICAgLS1kaXNhYmxlLXdpbGRtaWRpIFwKLSAgICAtLWRpc2FibGUtd2lua3MgXAotICAgIC0tZGlzYWJsZS13aW5zY3JlZW5jYXAgXAotICAgIC0tZGlzYWJsZS13cGUgXAotICAgIC0tZGlzYWJsZS14MjY1IFwKLSAgICAtLWRpc2FibGUtemJhciBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICItLWRpc2FibGUteWFkaWYiLCAiIiwgZCl9IFwKLSIKLQotZXhwb3J0IE9QRU5DVl9QUkVGSVggPSAiJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtwcmVmaXh9IgotCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotCi1GSUxFU18ke1BOfS1mcmVldmVyYiArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItJHtMSUJWfS9wcmVzZXRzL0dzdEZyZWV2ZXJiLnBycyIKLUZJTEVTXyR7UE59LW9wZW5jdiArPSAiJHtkYXRhZGlyfS9nc3QtcGx1Z2lucy1iYWQvJHtMSUJWfS9vcGVuY3YqIgotRklMRVNfJHtQTn0tdm9hbXJ3YmVuYyArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItJHtMSUJWfS9wcmVzZXRzL0dzdFZvQW1yd2JFbmMucHJzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuMTYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjE2LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EyMjdmZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjE2LjIuYmIKQEAgLTAsMCArMSwxNDcgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtY29tbW9uLmluYworCitTUkNfVVJJID0gIiBcCisgICAgaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYWQvZ3N0LXBsdWdpbnMtYmFkLSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovLzAwMDEtbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaCBcCisgICAgZmlsZTovL2ZpeC1tYXliZS11bmluaXRpYWxpemVkLXdhcm5pbmdzLXdoZW4tY29tcGlsaW5nLXdpdGgtT3MucGF0Y2ggXAorICAgIGZpbGU6Ly9hdm9pZC1pbmNsdWRpbmctc3lzLXBvbGwuaC1kaXJlY3RseS5wYXRjaCBcCisgICAgZmlsZTovL2Vuc3VyZS12YWxpZC1zZW50aW5lbHMtZm9yLWdzdF9zdHJ1Y3R1cmVfZ2V0LWV0Yy5wYXRjaCBcCisgICAgZmlsZTovL29wZW5jdi1yZXNvbHZlLW1pc3Npbmctb3BlbmN2LWRhdGEtZGlyLWluLXlvY3RvLWJ1aWwucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImNjYzc0MDQyMzBhZmRkZWM3MjNiYmRiNjNjODlmZWVjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImYxY2I3YWEyMzg5NTY5YTUzNDM2NjFhYWU0NzNmMGE5NDBhOTBiODcyMDAxODI0YmM0N2ZhODA3MmEwNDFlNzQiCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1iYWQtJHtQVn0iCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyAmIExHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTczYTU4NTVhODExOWRlYjAxN2Y1ZjEzY2YzMjcwOTVkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yMTY4MmU0ZThmZWE1MjQxM2ZkMjZjNjBhY2I5MDdlNSAiCisKK0RFUEVORFMgKz0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCisKK2luaGVyaXQgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgICR7R1NUUkVBTUVSX09SQ30gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZGlyZWN0ZmIgdnVsa2FuJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCcsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ2dsJywgJycsIGQpfSBcCisgICAgYnoyIGNsb3NlZGNhcHRpb24gY3VybCBkYXNoIGR0bHMgaGxzIHJzdmcgc2JjIHNtb290aHN0cmVhbWluZyBzbmRmaWxlIFwKKyAgICB0dG1sIHV2Y2gyNjQgd2VicCBcCisiCisKK1BBQ0tBR0VDT05GSUdbYXNzcmVuZGVyXSAgICAgICA9ICItRGFzc3JlbmRlcj1lbmFibGVkLC1EYXNzcmVuZGVyPWRpc2FibGVkLGxpYmFzcyIKK1BBQ0tBR0VDT05GSUdbYmx1ZXpdICAgICAgICAgICA9ICItRGJsdWV6PWVuYWJsZWQsLURibHVlej1kaXNhYmxlZCxibHVlejUiCitQQUNLQUdFQ09ORklHW2J6Ml0gICAgICAgICAgICAgPSAiLURiejI9ZW5hYmxlZCwtRGJ6Mj1kaXNhYmxlZCxiemlwMiIKK1BBQ0tBR0VDT05GSUdbY2xvc2VkY2FwdGlvbl0gICA9ICItRGNsb3NlZGNhcHRpb249ZW5hYmxlZCwtRGNsb3NlZGNhcHRpb249ZGlzYWJsZWQscGFuZ28gY2Fpcm8iCitQQUNLQUdFQ09ORklHW2N1cmxdICAgICAgICAgICAgPSAiLURjdXJsPWVuYWJsZWQsLURjdXJsPWRpc2FibGVkLGN1cmwiCitQQUNLQUdFQ09ORklHW2Rhc2hdICAgICAgICAgICAgPSAiLURkYXNoPWVuYWJsZWQsLURkYXNoPWRpc2FibGVkLGxpYnhtbDIiCitQQUNLQUdFQ09ORklHW2RjMTM5NF0gICAgICAgICAgPSAiLURkYzEzOTQ9ZW5hYmxlZCwtRGRjMTM5ND1kaXNhYmxlZCxsaWJkYzEzOTQiCitQQUNLQUdFQ09ORklHW2RpcmVjdGZiXSAgICAgICAgPSAiLURkaXJlY3RmYj1lbmFibGVkLC1EZGlyZWN0ZmI9ZGlzYWJsZWQsZGlyZWN0ZmIiCitQQUNLQUdFQ09ORklHW2R0bHNdICAgICAgICAgICAgPSAiLURkdGxzPWVuYWJsZWQsLURkdGxzPWRpc2FibGVkLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW2ZhYWNdICAgICAgICAgICAgPSAiLURmYWFjPWVuYWJsZWQsLURmYWFjPWRpc2FibGVkLGZhYWMiCitQQUNLQUdFQ09ORklHW2ZhYWRdICAgICAgICAgICAgPSAiLURmYWFkPWVuYWJsZWQsLURmYWFkPWRpc2FibGVkLGZhYWQyIgorUEFDS0FHRUNPTkZJR1tmbHVpZHN5bnRoXSAgICAgID0gIi1EZmx1aWRzeW50aD1lbmFibGVkLC1EZmx1aWRzeW50aD1kaXNhYmxlZCxmbHVpZHN5bnRoIgorUEFDS0FHRUNPTkZJR1tobHNdICAgICAgICAgICAgID0gIi1EaGxzPWVuYWJsZWQgLURobHMtY3J5cHRvPW5ldHRsZSwtRGhscz1kaXNhYmxlZCxuZXR0bGUiCisjIHRoZSBnbCBwYWNrYWdlY29uZmlnIGVuYWJsZXMgT3BlbkdMIGVsZW1lbnRzIHRoYXQgaGF2ZW4ndCBiZWVuIHBvcnRlZAorIyB0byAtYmFzZSB5ZXQuIFRoZXkgZGVwZW5kIG9uIHRoZSBnc3RnbCBsaWJyYXJ5IGluIC1iYXNlLCBzbyB3ZSBkbworIyBub3QgYWRkIEdMIGRlcGVuZGVuY2llcyBoZXJlLCBzaW5jZSB0aGVzZSBhcmUgdGFrZW4gY2FyZSBvZiBpbiAtYmFzZS4KK1BBQ0tBR0VDT05GSUdbZ2xdICAgICAgICAgICAgICA9ICItRGdsPWVuYWJsZWQsLURnbD1kaXNhYmxlZCwiCitQQUNLQUdFQ09ORklHW2ttc10gICAgICAgICAgICAgPSAiLURrbXM9ZW5hYmxlZCwtRGttcz1kaXNhYmxlZCxsaWJkcm0iCitQQUNLQUdFQ09ORklHW2xpYmRlMjY1XSAgICAgICAgPSAiLURsaWJkZTI2NT1lbmFibGVkLC1EbGliZGUyNjU9ZGlzYWJsZWQsbGliZGUyNjUiCitQQUNLQUdFQ09ORklHW2xpYm1tc10gICAgICAgICAgPSAiLURsaWJtbXM9ZW5hYmxlZCwtRGxpYm1tcz1kaXNhYmxlZCxsaWJtbXMiCitQQUNLQUdFQ09ORklHW2xpYnNzaDJdICAgICAgICAgPSAiLURjdXJsLXNzaDI9ZW5hYmxlZCwtRGN1cmwtc3NoMj1kaXNhYmxlZCxsaWJzc2gyIgorUEFDS0FHRUNPTkZJR1tsY21zMl0gICAgICAgICAgID0gIi1EY29sb3JtYW5hZ2VtZW50PWVuYWJsZWQsLURjb2xvcm1hbmFnZW1lbnQ9ZGlzYWJsZWQsbGNtcyIKK1BBQ0tBR0VDT05GSUdbbW9kcGx1Z10gICAgICAgICA9ICItRG1vZHBsdWc9ZW5hYmxlZCwtRG1vZHBsdWc9ZGlzYWJsZWQsbGlibW9kcGx1ZyIKK1BBQ0tBR0VDT05GSUdbbXNka10gICAgICAgICAgICA9ICItRG1zZGs9ZW5hYmxlZCwtRG1zZGs9ZGlzYWJsZWQsaW50ZWwtbWVkaWFzZGsiCitQQUNLQUdFQ09ORklHW25lb25dICAgICAgICAgICAgPSAiLURuZW9uPWVuYWJsZWQsLURuZW9uPWRpc2FibGVkLG5lb24iCitQQUNLQUdFQ09ORklHW29wZW5hbF0gICAgICAgICAgPSAiLURvcGVuYWw9ZW5hYmxlZCwtRG9wZW5hbD1kaXNhYmxlZCxvcGVuYWwtc29mdCIKK1BBQ0tBR0VDT05GSUdbb3BlbmN2XSAgICAgICAgICA9ICItRG9wZW5jdj1lbmFibGVkLC1Eb3BlbmN2PWRpc2FibGVkLG9wZW5jdiIKK1BBQ0tBR0VDT05GSUdbb3BlbmgyNjRdICAgICAgICA9ICItRG9wZW5oMjY0PWVuYWJsZWQsLURvcGVuaDI2ND1kaXNhYmxlZCxvcGVuaDI2NCIKK1BBQ0tBR0VDT05GSUdbb3BlbmpwZWddICAgICAgICA9ICItRG9wZW5qcGVnPWVuYWJsZWQsLURvcGVuanBlZz1kaXNhYmxlZCxvcGVuanBlZyIKK1BBQ0tBR0VDT05GSUdbb3Blbm1wdF0gICAgICAgICA9ICItRG9wZW5tcHQ9ZW5hYmxlZCwtRG9wZW5tcHQ9ZGlzYWJsZWQsbGlib3Blbm1wdCIKKyMgdGhlIG9wdXMgZW5jb2Rlci9kZWNvZGVyIGVsZW1lbnRzIGFyZSBub3cgaW4gdGhlIC1iYXNlIHBhY2thZ2UsCisjIGJ1dCB0aGUgb3B1cyBwYXJzZXIgcmVtYWlucyBpbiAtYmFkCitQQUNLQUdFQ09ORklHW29wdXNwYXJzZV0gICAgICAgPSAiLURvcHVzPWVuYWJsZWQsLURvcHVzPWRpc2FibGVkLGxpYm9wdXMiCitQQUNLQUdFQ09ORklHW3Jlc2luZHZkXSAgICAgICAgPSAiLURyZXNpbmR2ZD1lbmFibGVkLC1EcmVzaW5kdmQ9ZGlzYWJsZWQsbGliZHZkcmVhZCBsaWJkdmRuYXYiCitQQUNLQUdFQ09ORklHW3JzdmddICAgICAgICAgICAgPSAiLURyc3ZnPWVuYWJsZWQsLURyc3ZnPWRpc2FibGVkLGxpYnJzdmciCitQQUNLQUdFQ09ORklHW3J0bXBdICAgICAgICAgICAgPSAiLURydG1wPWVuYWJsZWQsLURydG1wPWRpc2FibGVkLHJ0bXBkdW1wIgorUEFDS0FHRUNPTkZJR1tzYmNdICAgICAgICAgICAgID0gIi1Ec2JjPWVuYWJsZWQsLURzYmM9ZGlzYWJsZWQsc2JjIgorUEFDS0FHRUNPTkZJR1tzY3RwXSAgICAgICAgICAgID0gIi1Ec2N0cD1lbmFibGVkLC1Ec2N0cD1kaXNhYmxlZCx1c3JzY3RwIgorUEFDS0FHRUNPTkZJR1tzbW9vdGhzdHJlYW1pbmddID0gIi1Ec21vb3Roc3RyZWFtaW5nPWVuYWJsZWQsLURzbW9vdGhzdHJlYW1pbmc9ZGlzYWJsZWQsbGlieG1sMiIKK1BBQ0tBR0VDT05GSUdbc25kZmlsZV0gICAgICAgICA9ICItRHNuZGZpbGU9ZW5hYmxlZCwtRHNuZGZpbGU9ZGlzYWJsZWQsbGlic25kZmlsZTEiCitQQUNLQUdFQ09ORklHW3NydHBdICAgICAgICAgICAgPSAiLURzcnRwPWVuYWJsZWQsLURzcnRwPWRpc2FibGVkLGxpYnNydHAiCitQQUNLQUdFQ09ORklHW3RpbnlhbHNhXSAgICAgICAgPSAiLUR0aW55YWxzYT1lbmFibGVkLC1EdGlueWFsc2E9ZGlzYWJsZWQsdGlueWFsc2EiCitQQUNLQUdFQ09ORklHW3R0bWxdICAgICAgICAgICAgPSAiLUR0dG1sPWVuYWJsZWQsLUR0dG1sPWRpc2FibGVkLGxpYnhtbDIgcGFuZ28gY2Fpcm8iCitQQUNLQUdFQ09ORklHW3V2Y2gyNjRdICAgICAgICAgPSAiLUR1dmNoMjY0PWVuYWJsZWQsLUR1dmNoMjY0PWRpc2FibGVkLGxpYnVzYjEgbGliZ3VkZXYiCitQQUNLQUdFQ09ORklHW3ZvYWFjZW5jXSAgICAgICAgPSAiLUR2b2FhY2VuYz1lbmFibGVkLC1Edm9hYWNlbmM9ZGlzYWJsZWQsdm8tYWFjZW5jIgorUEFDS0FHRUNPTkZJR1t2b2FtcndiZW5jXSAgICAgID0gIi1Edm9hbXJ3YmVuYz1lbmFibGVkLC1Edm9hbXJ3YmVuYz1kaXNhYmxlZCx2by1hbXJ3YmVuYyIKK1BBQ0tBR0VDT05GSUdbdnVsa2FuXSAgICAgICAgICA9ICItRHZ1bGthbj1lbmFibGVkLC1EdnVsa2FuPWRpc2FibGVkLHZ1bGthbi1sb2FkZXIiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdICAgICAgICAgPSAiLUR3YXlsYW5kPWVuYWJsZWQsLUR3YXlsYW5kPWRpc2FibGVkLHdheWxhbmQtbmF0aXZlIHdheWxhbmQgd2F5bGFuZC1wcm90b2NvbHMgbGliZHJtIgorUEFDS0FHRUNPTkZJR1t3ZWJwXSAgICAgICAgICAgID0gIi1Ed2VicD1lbmFibGVkLC1Ed2VicD1kaXNhYmxlZCxsaWJ3ZWJwIgorUEFDS0FHRUNPTkZJR1t3ZWJydGNdICAgICAgICAgID0gIi1Ed2VicnRjPWVuYWJsZWQsLUR3ZWJydGM9ZGlzYWJsZWQsbGlibmljZSIKK1BBQ0tBR0VDT05GSUdbd2VicnRjZHNwXSAgICAgICA9ICItRHdlYnJ0Y2RzcD1lbmFibGVkLC1Ed2VicnRjZHNwPWRpc2FibGVkLHdlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nIgorUEFDS0FHRUNPTkZJR1t6YmFyXSAgICAgICAgICAgID0gIi1EemJhcj1lbmFibGVkLC1EemJhcj1kaXNhYmxlZCx6YmFyIgorCisjIHRoZXNlIHBsdWdpbnMgY3VycmVudGx5IGhhdmUgbm8gY29ycmVzcG9uZGluZyBsaWJyYXJ5IGluIE9FLWNvcmUgb3IgbWV0YS1vcGVuZW1iZWRkZWQ6CisjICAgYW9tIGFuZHJvaWRtZWRpYSBhcHBsZW1lZGlhIGJzMmIgY2hyb21hcHJpbnQgZDNkdmlkZW9zaW5rCisjICAgZGlyZWN0c291bmQgZHRzIGZka2FhYyBnbWUgZ3NtIGlxIGthdGUgbGFkc3BhIGx2MiBtcGVnMmVuYworIyAgIG1wbGV4IG11c2VwYWNrIG52ZGVjIG52ZW5jIG9mYSBvcGVuZXhyIG9wZW5uaTIgb3BlbnNsZXMKKyMgICBzb3VuZHRvdWNoIHNwYW5kc3Agc3J0IHRlbGV0ZXh0IHZkcGF1IHdhc2FwaSB3aWxkbWlkaSB3aW5rcworIyAgIHdpbnNjcmVlbmNhcCB3cGUgeDI2NQorCitFWFRSQV9PRU1FU09OICs9ICIgXAorICAgIC1EZGVja2xpbms9ZW5hYmxlZCBcCisgICAgLURkdmI9ZW5hYmxlZCBcCisgICAgLURmYmRldj1lbmFibGVkIFwKKyAgICAtRGlwY3BpcGVsaW5lPWVuYWJsZWQgXAorICAgIC1EbmV0c2ltPWVuYWJsZWQgXAorICAgIC1Ec2htPWVuYWJsZWQgXAorICAgIC1EYW9tPWRpc2FibGVkIFwKKyAgICAtRGFuZHJvaWRtZWRpYT1kaXNhYmxlZCBcCisgICAgLURhcHBsZW1lZGlhPWRpc2FibGVkIFwKKyAgICAtRGJzMmI9ZGlzYWJsZWQgXAorICAgIC1EY2hyb21hcHJpbnQ9ZGlzYWJsZWQgXAorICAgIC1EZDNkdmlkZW9zaW5rPWRpc2FibGVkIFwKKyAgICAtRGRpcmVjdHNvdW5kPWRpc2FibGVkIFwKKyAgICAtRGR0cz1kaXNhYmxlZCBcCisgICAgLURmZGthYWM9ZGlzYWJsZWQgXAorICAgIC1EZmxpdGU9ZGlzYWJsZWQgXAorICAgIC1EZ21lPWRpc2FibGVkIFwKKyAgICAtRGdzbT1kaXNhYmxlZCBcCisgICAgLURpcWE9ZGlzYWJsZWQgXAorICAgIC1Ea2F0ZT1kaXNhYmxlZCBcCisgICAgLURsYWRzcGE9ZGlzYWJsZWQgXAorICAgIC1EbHYyPWRpc2FibGVkIFwKKyAgICAtRG1wZWcyZW5jPWRpc2FibGVkIFwKKyAgICAtRG1wbGV4PWRpc2FibGVkIFwKKyAgICAtRG11c2VwYWNrPWRpc2FibGVkIFwKKyAgICAtRG52ZGVjPWRpc2FibGVkIFwKKyAgICAtRG52ZW5jPWRpc2FibGVkIFwKKyAgICAtRG9mYT1kaXNhYmxlZCBcCisgICAgLURvcGVuZXhyPWRpc2FibGVkIFwKKyAgICAtRG9wZW5uaTI9ZGlzYWJsZWQgXAorICAgIC1Eb3BlbnNsZXM9ZGlzYWJsZWQgXAorICAgIC1Ec291bmR0b3VjaD1kaXNhYmxlZCBcCisgICAgLURzcGFuZHNwPWRpc2FibGVkIFwKKyAgICAtRHNydD1kaXNhYmxlZCBcCisgICAgLUR0ZWxldGV4dD1kaXNhYmxlZCBcCisgICAgLUR2ZHBhdT1kaXNhYmxlZCBcCisgICAgLUR3YXNhcGk9ZGlzYWJsZWQgXAorICAgIC1Ed2lsZG1pZGk9ZGlzYWJsZWQgXAorICAgIC1Ed2lua3M9ZGlzYWJsZWQgXAorICAgIC1Ed2luc2NyZWVuY2FwPWRpc2FibGVkIFwKKyAgICAtRHdwZT1kaXNhYmxlZCBcCisgICAgLUR4MjY1PWRpc2FibGVkIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIi1EeWFkaWY9ZGlzYWJsZWQiLCAiIiwgZCl9IFwKKyIKKworZXhwb3J0IE9QRU5DVl9QUkVGSVggPSAiJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtwcmVmaXh9IgorCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorCitGSUxFU18ke1BOfS1mcmVldmVyYiArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wL3ByZXNldHMvR3N0RnJlZXZlcmIucHJzIgorRklMRVNfJHtQTn0tb3BlbmN2ICs9ICIke2RhdGFkaXJ9L2dzdC1wbHVnaW5zLWJhZC8xLjAvb3BlbmN2KiIKK0ZJTEVTXyR7UE59LXZvYW1yd2JlbmMgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9wcmVzZXRzL0dzdFZvQW1yd2JFbmMucHJzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAxLWdzdHJlYW1lci1nbC5wYy5pbi1kb24tdC1hcHBlbmQtR0xfQ0ZMQUdTLXRvLUNGTEFHUy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1MWRjMTcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAxLWdzdHJlYW1lci1nbC5wYy5pbi1kb24tdC1hcHBlbmQtR0xfQ0ZMQUdTLXRvLUNGTEFHUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gNjFhNjcyZTc5YzhjYjFhZWVlZGE0Yzk2ODk5N2M1NzdhYzczYThmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogRnJpLCAxMiBNYXkgMjAxNyAxNjo0NzoxMiArMDMwMAotU3ViamVjdDogW1BBVENIXSBnc3RyZWFtZXItZ2wucGMuaW46IGRvbid0IGFwcGVuZCBHTF9DRkxBR1MgdG8gQ0ZMQUdTCi0KLURlcGVuZGVuY2llcycgaW5jbHVkZSBkaXJlY3RvcmllcyBzaG91bGQgbm90IGJlIGFkZGVkIGluIHRoaXMgd2F5OwotaXQgY2F1c2VzIHByb2JsZW1zIHdoZW4gY3Jvc3MtY29tcGlsaW5nIGluIHN5c3Jvb3QgZW52aXJvbm1lbnRzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLS0tLQotIHBrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9wa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluIGIvcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbgotaW5kZXggZGM2NzJhOS4uOGMyOTBiYSAxMDA2NDQKLS0tLSBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4KLSsrKyBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4KLUBAIC0xMyw0ICsxMyw0IEBAIFZlcnNpb246IEBWRVJTSU9OQAotIFJlcXVpcmVzOiBnc3RyZWFtZXItdmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05ACi0gCi0gTGliczogLUwke2xpYmRpcn0gLWxnc3RnbC1AR1NUX0FQSV9WRVJTSU9OQAotLUNmbGFnczogLUkke2luY2x1ZGVkaXJ9IC1JJHtsaWJkaXJ9L2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC9pbmNsdWRlIEBHTF9DRkxBR1NACi0rQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gLUkke2xpYmRpcn0vZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AL2luY2x1ZGUKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAxLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDEtbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OWFiNDcxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAxLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSAzMDY3MmJhN2QxMzQ1NTNlNTk5MzVkZGM4NzUxMDRhZGJhMjZmMjVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP1RpbS1QaGlsaXBwPTIwTT1DMz1CQ2xsZXI/PSA8dGltQGNlbnRyaWN1bGFyLmNvbT4KK0RhdGU6IFRodSwgMTcgT2N0IDIwMTkgMjA6MDY6MjQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gbWVzb246IGJ1aWxkIGdpciBldmVuIHdoZW4gY3Jvc3MtY29tcGlsaW5nIGlmIGludHJvc3BlY3Rpb24KKyB3YXMgZW5hYmxlZCBleHBsaWNpdGx5CisKK1RoaXMgY2FuIGJlIG1hZGUgdG8gd29yayBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgd2hlbgorY3Jvc3MtY29tcGlsaW5nLCBzbyBkZWZhdWx0IHRvIG5vdCBidWlsZGluZyBnLWkgc3R1ZmYKK3doZW4gY3Jvc3MtY29tcGlsaW5nLCBidXQgYWxsb3cgaXQgaWYgaW50cm9zcGVjdGlvbiB3YXMKK2VuYWJsZWQgZXhwbGljaXRseSB2aWEgLURpbnRyb3NwZWN0aW9uPWVuYWJsZWQuCisKK1NlZSBnc3RyZWFtZXIvZ3N0cmVhbWVyIzQ1NCBhbmQgZ3N0cmVhbWVyL2dzdHJlYW1lciMzODEuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzMwNjcyYmE3ZDEzNDU1M2U1OTkzNWRkYzg3NTEwNGFkYmEyNmYyNWNdCisKK1NpZ25lZC1vZmYtYnk6IENhcmxvcyBSYWZhZWwgR2lhbmkgPGNyZzc0NzVAbWFpbGJveC5vcmc+CistLS0KKyBtZXNvbi5idWlsZCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IDI2NGQ4NGM5ZS4uYzgxNDdjMjI0IDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtMzcyLDcgKzM3Miw3IEBAIGVuZGlmCisgCisgZ2lyID0gZmluZF9wcm9ncmFtKCdnLWlyLXNjYW5uZXInLCByZXF1aXJlZCA6IGdldF9vcHRpb24oJ2ludHJvc3BlY3Rpb24nKSkKKyBnbm9tZSA9IGltcG9ydCgnZ25vbWUnKQorLWJ1aWxkX2dpciA9IGdpci5mb3VuZCgpIGFuZCBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKQorK2J1aWxkX2dpciA9IGdpci5mb3VuZCgpIGFuZCAobm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgZ2V0X29wdGlvbignaW50cm9zcGVjdGlvbicpLmVuYWJsZWQoKSkKKyBnaXJfaW5pdF9zZWN0aW9uID0gWyAnLS1hZGQtaW5pdC1zZWN0aW9uPWV4dGVybiB2b2lkIGdzdF9pbml0KGdpbnQqLGdjaGFyKiopOycgKyBcCisgICAgICdnX3NldGVudigiR1NUX1JFR0lTVFJZX0RJU0FCTEUiLCAieWVzIiwgVFJVRSk7JyArIFwKKyAgICAgJ2dfc2V0ZW52KCJHU1RfUkVHSVNUUllfMS4wIiwgIkAwQCIsIFRSVUUpOycuZm9ybWF0KG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCkgKyAnL2dpcl9lbXB0eV9yZWdpc3RyeS5yZWcnKSArIFwKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMi1NYWtlZmlsZS5hbS1wcmVmaXgtY2FsbHMtdG8tcGtnLWNvbmZpZy13aXRoLVBLR19DT05GLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAyLU1ha2VmaWxlLmFtLXByZWZpeC1jYWxscy10by1wa2ctY29uZmlnLXdpdGgtUEtHX0NPTkYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4Y2JmYjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAyLU1ha2VmaWxlLmFtLXByZWZpeC1jYWxscy10by1wa2ctY29uZmlnLXdpdGgtUEtHX0NPTkYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOTUgKzAsMCBAQAotRnJvbSA5NjAxZmMwY2Q2NzUxYTFhZmZkYzg3MTcyMTdiOTU5MzFkYjMxZDdmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDUgQXByIDIwMTggMTA6MjY6MjUgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGUuYW06IHByZWZpeCBjYWxscyB0byBwa2ctY29uZmlnIHdpdGgKLSBQS0dfQ09ORklHX1NZU1JPT1RfRElSCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbWFpbGxpc3RdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0KLS0tLQotIGdzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtIHwgIDQgKystLQotIGdzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0gICAgICAgIHwgIDQgKystLQotIGdzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbSAgICAgIHwgMTIgKysrKysrLS0tLS0tCi0gZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtICAgICAgICAgfCAgOCArKysrLS0tLQotIGdzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtICAgIHwgMTIgKysrKysrLS0tLS0tCi0gZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0gICAgICAgfCAgOCArKysrLS0tLQotIGdzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0gICAgICAgIHwgIDggKysrKy0tLS0KLSBnc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbSAgICAgICB8ICA0ICsrLS0KLSBnc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtICAgICAgICB8ICA0ICsrLS0KLSBnc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtICAgICAgICB8ICA4ICsrKystLS0tCi0gZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtICAgICAgfCAgOCArKysrLS0tLQotIDExIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDQwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbQotaW5kZXggMWVjYzk1MC4uZDY0MTdhYyAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbQotQEAgLTM5LDcgKzM5LDcgQEAgR3N0QWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhbGxvY2F0b3JzLUAKLSAJCS0tYy1pbmNsdWRlICJnc3QvYWxsb2NhdG9ycy9hbGxvY2F0b3JzLmgiIFwKLSAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCi0gCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCS0tbGlicmFyeT1saWJnc3RhbGxvY2F0b3JzLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKLSAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAotIAkJLS1saWJ0b29sPSIke0xJQlRPT0x9IiBcCi1AQCAtNjMsNyArNjMsNyBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCi0gCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpIFwKLSAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAotIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKLS0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCi0gCi0gQ0xFQU5GSUxFUyA9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvYXBwL01ha2VmaWxlLmFtCi1pbmRleCA1YmZkNjA2Li42NDQxNjc0IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQotQEAgLTUxLDggKzUxLDggQEAgR3N0QXBwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGFwcC1AR1NUX0FQSV9WRVJTSU8KLSAJCS0tYy1pbmNsdWRlICJnc3QvYXBwL2FwcC5oIiBcCi0gCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAotIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQktLWxpYnJhcnk9bGliZ3N0YXBwLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKLSAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAotIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQotaW5kZXggN2ZiNjVmMi4uNTM3OWY3OSAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtCi1AQCAtMTc2LDEyICsxNzYsMTIgQEAgR3N0QXVkaW8tQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0YXVkaW8tQEdTVF9BUElfVkUKLSAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCi0gCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCi0gCQktLWMtaW5jbHVkZSAiZ3N0L2F1ZGlvL2F1ZGlvLmgiIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1hZGQtaW5jbHVkZS1wYXRoPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3RhZy8iIFwKLSAJCS0tbGlicmFyeT1saWJnc3RhdWRpby1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCi0tCQktLWxpYnJhcnktcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9bGliZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1saWJyYXJ5LXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWxpYmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1saWJyYXJ5LXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1saWJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWxpYnJhcnktcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWxpYmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5LXBhdGg9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdGFnLyIgXAotIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCi1AQCAtMjEwLDggKzIxMCw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKLSAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAotIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKLSAJCS0taW5jbHVkZWRpcj0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQotIAotIENMRUFORklMRVMgKz0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCi1pbmRleCAzMjc2ZDdmLi4wY2RmZTI2IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0KLUBAIC0yMDksOSArMjA5LDkgQEAgR3N0R0wtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0Z2wtQEdTVF9BUElfVkVSU0lPTkAKLSAJCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKLSAJCSQoR0xfQ0ZMQUdTKSBcCi0gCQktLWFkZC1pbmNsdWRlLXBhdGg9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmlkZW8vIiBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92aWRlby8iIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5PWxpYmdzdGdsLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKLSAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAotIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTI0MSw4ICsyNDEsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCi0gCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKLSAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCi0gCQktLWluY2x1ZGVkaXI9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmlkZW8vIiBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQotIAotIENMRUFORklMRVMgKz0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQotaW5kZXggMzVhNmU0NC4uNDlkNjg5NCAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQotQEAgLTg4LDE0ICs4OCwxNCBAQCBHc3RQYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHBidXRpbHMtQEdTVF9BUAotIAkJLS1jLWluY2x1ZGUgImdzdC9wYnV0aWxzL3BidXRpbHMuaCIgXAotIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKLSAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1hZGQtaW5jbHVkZS1wYXRoPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3RhZy8iIFwKLSAJCS0tYWRkLWluY2x1ZGUtcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92aWRlby8iIFwKLSAJCS0tYWRkLWluY2x1ZGUtcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9hdWRpby8iIFwKLSAJCS0tbGlicmFyeT1saWJnc3RwYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKLS0JCS0tbGlicmFyeS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1saWJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWxpYnJhcnktcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9bGliZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWxpYnJhcnktcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWxpYmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tbGlicmFyeS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9bGliZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCi0gCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92aWRlby8iIFwKLSAJCS0tbGlicmFyeS1wYXRoPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2F1ZGlvLyIgXAotQEAgLTEyOCw4ICsxMjgsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCi0gCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpIFwKLSAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAotIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKLS0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1pbmNsdWRlZGlyPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3RhZy8iIFwKLSAJCS0taW5jbHVkZWRpcj0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92aWRlby8iIFwKLSAJCS0taW5jbHVkZWRpcj0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9hdWRpby8iIFwKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCi1pbmRleCBlNjZlZjRmLi5jOGM1ODhhIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCi1AQCAtNDMsOCArNDMsOCBAQCBsaWJnc3RyaWZmX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MgPSAkKEdTVF9MSUJfTERGTEFHUykgJChHU1RfQUxMX0xERkxBR1MpCi0gIwkJLS1jLWluY2x1ZGUgImdzdC9yaWZmL3JpZmYuaCIgXAotICMJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKGJ1aWxkZGlyKS8uLi90YWcgXAotICMJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKGJ1aWxkZGlyKS8uLi9hdWRpbyBcCi0tIwkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tIwkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsjCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rIwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gIwkJLS1saWJyYXJ5PWxpYmdzdHJpZmYtQEdTVF9BUElfVkVSU0lPTkAubGEgXAotICMJCS0taW5jbHVkZT1Hc3RBdWRpby1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gIwkJLS1pbmNsdWRlPUdzdFRhZy1AR1NUX0FQSV9WRVJTSU9OQCBcCi1AQCAtNzUsOCArNzUsOCBAQCBsaWJnc3RyaWZmX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MgPSAkKEdTVF9MSUJfTERGTEFHUykgJChHU1RfQUxMX0xERkxBR1MpCi0gIwkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKLSAjCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikvLi4vdGFnIFwKLSAjCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikvLi4vYXVkaW8gXAotLSMJCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLSMJCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rIwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKyMJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotICMJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQotICMKLSAjQ0xFQU5GSUxFUyA9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcnRwL01ha2VmaWxlLmFtCi1pbmRleCA3N2ViZWViLi45YWVlNzg4IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQotQEAgLTY2LDggKzY2LDggQEAgR3N0UnRwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHJ0cC1AR1NUX0FQSV9WRVJTSU8KLSAJCS0tYy1pbmNsdWRlICJnc3QvcnRwL3J0cC5oIiBcCi0gCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCi0gCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQktLWxpYnJhcnk9bGliZ3N0cnRwLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKLSAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAotIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTk0LDggKzk0LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQotIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCi0gCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKLSAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQotIAotIENMRUFORklMRVMgKz0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQotaW5kZXggZGI5ZDBmZC4uNzkwMjdjYiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQotQEAgLTcxLDggKzcxLDggQEAgR3N0UnRzcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RydHNwLUBHU1RfQVBJX1ZFUlMKLSAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKLSAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCi0gCQktLWFkZC1pbmNsdWRlLXBhdGg9JChidWlsZGRpcikvLi4vc2RwIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5PWxpYmdzdHJ0c3AtQEdTVF9BUElfVkVSU0lPTkAubGEgXAotIAkJLS1pbmNsdWRlPUdpby0yLjAgXAotIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0KLWluZGV4IDZlMDVjYzcuLmM3Y2Y1MTQgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtCi1AQCAtMzEsNyArMzEsNyBAQCBHc3RTZHAtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0c2RwLUBHU1RfQVBJX1ZFUlNJTwotIAkJLS13YXJuLWFsbCBcCi0gCQktLWMtaW5jbHVkZSAiZ3N0L3NkcC9zZHAuaCIgXAotIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5PWxpYmdzdHNkcC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCi0gCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0tbGlidG9vbD0iJHtMSUJUT09MfSIgXAotQEAgLTU1LDcgKzU1LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQotIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCi0gCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKLSAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQotIAotIENMRUFORklMRVMgPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbQotaW5kZXggYzg2NTE1Yi4uMzYzZTZkMiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0KLUBAIC02MSw4ICs2MSw4IEBAIEdzdFRhZy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3R0YWctQEdTVF9BUElfVkVSU0lPCi0gCQktLWMtaW5jbHVkZSAiZ3N0L3RhZy90YWcuaCIgXAotIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKLSAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5PWxpYmdzdHRhZy1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCi0gCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLUBAIC04OSw4ICs4OSw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAotIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCi0gCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXAotLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKLSAKLSBDTEVBTkZJTEVTICs9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQotaW5kZXggMGY4NDU1Zi4uOGM5OTU1YyAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtCi1AQCAtMTI0LDggKzEyNCw4IEBAIEdzdFZpZGVvLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHZpZGVvLUBHU1RfQVBJX1ZFCi0gCQktLWMtaW5jbHVkZSAiZ3N0L3ZpZGVvL3ZpZGVvLmgiIFwKLSAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCi0gCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCS0tbGlicmFyeT1saWJnc3R2aWRlby1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCi0gCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLUBAIC0xNTIsOCArMTUyLDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQotIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCi0gCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKLSAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQotIAotIENMRUFORklMRVMgKz0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDItbWVzb24tQWRkLXZhcmlhYmxlcy1mb3ItZ2lyLWZpbGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAyLW1lc29uLUFkZC12YXJpYWJsZXMtZm9yLWdpci1maWxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTg1NzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAyLW1lc29uLUFkZC12YXJpYWJsZXMtZm9yLWdpci1maWxlcy5wYXRjaApAQCAtMCwwICsxLDIzNSBAQAorRnJvbSA2ODU3MzFlOTg5ZGMwNzRhNGIwZDQ4YjZjODA2MmUyNzM4ZjA5NzE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGhpYmF1bHQgU2F1bmllciA8dHNhdW5pZXJAaWdhbGlhLmNvbT4KK0RhdGU6IE1vbiwgMjIgT2N0IDIwMTggMTE6NDQ6MzcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gbWVzb246IEFkZCB2YXJpYWJsZXMgZm9yIGdpciBmaWxlcworCitBbmQgZmxhdHRlbiBsaXN0IG9mIHNvdXJjZXMgZm9yIGRlcGVuZGVuY2llcworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFs2ODU3MzFlOTg5ZGMwNzRhNGIwZDQ4YjZjODA2MmUyNzM4ZjA5NzE5XQorCitTaWduZWQtb2ZmLWJ5OiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxjcmc3NDc1QG1haWxib3gub3JnPgorLS0tCisgZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvbWVzb24uYnVpbGQgfCA1ICsrKy0tCisgZ3N0LWxpYnMvZ3N0L2FwcC9tZXNvbi5idWlsZCAgICAgICAgfCA2ICsrKystLQorIGdzdC1saWJzL2dzdC9hdWRpby9tZXNvbi5idWlsZCAgICAgIHwgNSArKystLQorIGdzdC1saWJzL2dzdC9wYnV0aWxzL21lc29uLmJ1aWxkICAgIHwgNSArKystLQorIGdzdC1saWJzL2dzdC9ydHAvbWVzb24uYnVpbGQgICAgICAgIHwgNiArKysrLS0KKyBnc3QtbGlicy9nc3QvcnRzcC9tZXNvbi5idWlsZCAgICAgICB8IDUgKysrLS0KKyBnc3QtbGlicy9nc3Qvc2RwL21lc29uLmJ1aWxkICAgICAgICB8IDYgKysrKy0tCisgZ3N0LWxpYnMvZ3N0L3RhZy9tZXNvbi5idWlsZCAgICAgICAgfCA1ICsrKy0tCisgZ3N0LWxpYnMvZ3N0L3ZpZGVvL21lc29uLmJ1aWxkICAgICAgfCA1ICsrKy0tCisgOSBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL21lc29uLmJ1aWxkIGIvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvbWVzb24uYnVpbGQKK2luZGV4IDM2NGJhZWViZi4uNTZmMTU2ZGMzIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvbWVzb24uYnVpbGQKKysrKyBiL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL21lc29uLmJ1aWxkCitAQCAtMjIsNyArMjIsNyBAQCBnc3RhbGxvY2F0b3JzID0gbGlicmFyeSgnZ3N0YWxsb2NhdG9ycy1AMEAnLmZvcm1hdChhcGlfdmVyc2lvbiksCisgYWxsb2NhdG9yc19nZW5fc291cmNlcyAgPSBbXQorIGlmIGJ1aWxkX2dpcgorICAgZ3N0X2dpcl9leHRyYV9hcmdzID0gZ2lyX2luaXRfc2VjdGlvbiArIFsgJy0tYy1pbmNsdWRlPWdzdC9hbGxvY2F0b3JzL2FsbG9jYXRvcnMuaCcgXQorLSAgYWxsb2NhdG9yc19nZW5fc291cmNlcyArPSBbZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdGFsbG9jYXRvcnMsCisrICBhbGxvY2F0b3JzX2dpciA9IGdub21lLmdlbmVyYXRlX2dpcihnc3RhbGxvY2F0b3JzLAorICAgICBzb3VyY2VzIDogZ3N0X2FsbG9jYXRvcnNfc291cmNlcyArIGdzdF9hbGxvY2F0b3JzX2hlYWRlcnMsCisgICAgIG5hbWVzcGFjZSA6ICdHc3RBbGxvY2F0b3JzJywKKyAgICAgbnN2ZXJzaW9uIDogYXBpX3ZlcnNpb24sCitAQCAtMzMsNyArMzMsOCBAQCBpZiBidWlsZF9naXIKKyAgICAgaW5zdGFsbCA6IHRydWUsCisgICAgIGV4dHJhX2FyZ3MgOiBnc3RfZ2lyX2V4dHJhX2FyZ3MsCisgICAgIGRlcGVuZGVuY2llcyA6IFtnc3RfZGVwXQorLSAgKV0KKysgICkKKysgIGFsbG9jYXRvcnNfZ2VuX3NvdXJjZXMgKz0gYWxsb2NhdG9yc19naXIKKyBlbmRpZgorIAorIGFsbG9jYXRvcnNfZGVwID0gZGVjbGFyZV9kZXBlbmRlbmN5KGxpbmtfd2l0aDogZ3N0YWxsb2NhdG9ycywKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYXBwL21lc29uLmJ1aWxkIGIvZ3N0LWxpYnMvZ3N0L2FwcC9tZXNvbi5idWlsZAoraW5kZXggODFkZDBmNDJjLi43YTkwZjVlMTAgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvYXBwL21lc29uLmJ1aWxkCisrKysgYi9nc3QtbGlicy9nc3QvYXBwL21lc29uLmJ1aWxkCitAQCAtMzIsNyArMzIsNyBAQCBnc3RhcHAgPSBsaWJyYXJ5KCdnc3RhcHAtQDBAJy5mb3JtYXQoYXBpX3ZlcnNpb24pLAorIAorIGlmIGJ1aWxkX2dpcgorICAgZ3N0X2dpcl9leHRyYV9hcmdzID0gZ2lyX2luaXRfc2VjdGlvbiArIFsgJy0tYy1pbmNsdWRlPWdzdC9hcHAvYXBwLmgnIF0KKy0gIGFwcF9nZW5fc291cmNlcyArPSBbZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdGFwcCwKKysgIGFwcF9naXIgPSBnbm9tZS5nZW5lcmF0ZV9naXIoZ3N0YXBwLAorICAgICBzb3VyY2VzIDogYXBwX3NvdXJjZXMgKyBhcHBfaGVhZGVycyArIFtnc3RhcHBfY10gKyBbZ3N0YXBwX2hdLAorICAgICBuYW1lc3BhY2UgOiAnR3N0QXBwJywKKyAgICAgbnN2ZXJzaW9uIDogYXBpX3ZlcnNpb24sCitAQCAtNDMsNyArNDMsOSBAQCBpZiBidWlsZF9naXIKKyAgICAgaW5zdGFsbCA6IHRydWUsCisgICAgIGV4dHJhX2FyZ3MgOiBnc3RfZ2lyX2V4dHJhX2FyZ3MsCisgICAgIGRlcGVuZGVuY2llcyA6IFtnc3RfZGVwLCBnc3RfYmFzZV9kZXBdCistICApXQorKyAgKQorKworKyAgYXBwX2dlbl9zb3VyY2VzICs9IGFwcF9naXIKKyBlbmRpZgorIAorIGFwcF9kZXAgPSBkZWNsYXJlX2RlcGVuZGVuY3kobGlua193aXRoOiBnc3RhcHAsCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2F1ZGlvL21lc29uLmJ1aWxkIGIvZ3N0LWxpYnMvZ3N0L2F1ZGlvL21lc29uLmJ1aWxkCitpbmRleCAwZTRlZmFiMmUuLjJhNDQ5ZDRiZiAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC9hdWRpby9tZXNvbi5idWlsZAorKysrIGIvZ3N0LWxpYnMvZ3N0L2F1ZGlvL21lc29uLmJ1aWxkCitAQCAtMTUzLDcgKzE1Myw3IEBAIGdzdGF1ZGlvID0gbGlicmFyeSgnZ3N0YXVkaW8tQDBAJy5mb3JtYXQoYXBpX3ZlcnNpb24pLAorIAorIGlmIGJ1aWxkX2dpcgorICAgZ3N0X2dpcl9leHRyYV9hcmdzID0gZ2lyX2luaXRfc2VjdGlvbiArIFsgJy0tYy1pbmNsdWRlPWdzdC9hdWRpby9hdWRpby5oJyBdCistICBhdWRpb19nZW5fc291cmNlcyArPSBbZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdGF1ZGlvLAorKyAgYXVkaW9fZ2lyID0gZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdGF1ZGlvLAorICAgICBzb3VyY2VzIDogYXVkaW9fc3JjICsgYXVkaW9faGVhZGVycyArIFtnc3RhdWRpb19jXSArIFtnc3RhdWRpb19oXSwKKyAgICAgbmFtZXNwYWNlIDogJ0dzdEF1ZGlvJywKKyAgICAgbnN2ZXJzaW9uIDogYXBpX3ZlcnNpb24sCitAQCAtMTY0LDcgKzE2NCw4IEBAIGlmIGJ1aWxkX2dpcgorICAgICBpbnN0YWxsIDogdHJ1ZSwKKyAgICAgZXh0cmFfYXJncyA6IGdzdF9naXJfZXh0cmFfYXJncywKKyAgICAgZGVwZW5kZW5jaWVzIDogZ3N0YXVkaW9fZGVwcworLSAgKV0KKysgICkKKysgIGF1ZGlvX2dlbl9zb3VyY2VzICs9IFthdWRpb19naXJdCisgZW5kaWYKKyAKKyBhdWRpb19kZXAgPSBkZWNsYXJlX2RlcGVuZGVuY3kobGlua193aXRoIDogZ3N0YXVkaW8sCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvbWVzb24uYnVpbGQgYi9nc3QtbGlicy9nc3QvcGJ1dGlscy9tZXNvbi5idWlsZAoraW5kZXggMmZhZjYyNjIyLi4wZTk2NzIyZmQgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvcGJ1dGlscy9tZXNvbi5idWlsZAorKysrIGIvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvbWVzb24uYnVpbGQKK0BAIC02Myw3ICs2Myw3IEBAIHBidXRpbHMgPSBsaWJyYXJ5KCdnc3RwYnV0aWxzLUAwQCcuZm9ybWF0KGFwaV92ZXJzaW9uKSwKKyBwYnV0aWxzX2dlbl9zb3VyY2VzID0gW2dzdHBidXRpbHNfaCwgZ3N0X3BidXRpbHNfdmVyc2lvbl9oXQorIGlmIGJ1aWxkX2dpcgorICAgZ3N0X2dpcl9leHRyYV9hcmdzID0gZ2lyX2luaXRfc2VjdGlvbiArIFsgJy0tYy1pbmNsdWRlPWdzdC9wYnV0aWxzL3BidXRpbHMuaCcgXQorLSAgcGJ1dGlsc19nZW5fc291cmNlcyArPSBbZ25vbWUuZ2VuZXJhdGVfZ2lyKHBidXRpbHMsCisrICBwYnV0aWxzX2dpciA9IGdub21lLmdlbmVyYXRlX2dpcihwYnV0aWxzLAorICAgICBzb3VyY2VzIDogcGJ1dGlsc19zb3VyY2VzICsgcGJ1dGlsc19oZWFkZXJzICsgW2dzdHBidXRpbHNfaCwgZ3N0X3BidXRpbHNfdmVyc2lvbl9oXSwKKyAgICAgbmFtZXNwYWNlIDogJ0dzdFBidXRpbHMnLAorICAgICBuc3ZlcnNpb24gOiBhcGlfdmVyc2lvbiwKK0BAIC03NCw3ICs3NCw4IEBAIGlmIGJ1aWxkX2dpcgorICAgICBpbnN0YWxsIDogdHJ1ZSwKKyAgICAgZXh0cmFfYXJncyA6IGdzdF9naXJfZXh0cmFfYXJncywKKyAgICAgZGVwZW5kZW5jaWVzIDogZ3N0cGJ1dGlsc19kZXBzCistICApXQorKyAgKQorKyAgcGJ1dGlsc19nZW5fc291cmNlcyArPSBbcGJ1dGlsc19naXJdCisgZW5kaWYKKyAKKyBwYnV0aWxzX2RlcCA9IGRlY2xhcmVfZGVwZW5kZW5jeShsaW5rX3dpdGggOiBwYnV0aWxzLAorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9ydHAvbWVzb24uYnVpbGQgYi9nc3QtbGlicy9nc3QvcnRwL21lc29uLmJ1aWxkCitpbmRleCBmNDdlYzY1OTIuLjdlYTY2NThkNSAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC9ydHAvbWVzb24uYnVpbGQKKysrKyBiL2dzdC1saWJzL2dzdC9ydHAvbWVzb24uYnVpbGQKK0BAIC00OSw3ICs0OSw3IEBAIGdzdF9ydHAgPSBsaWJyYXJ5KCdnc3RydHAtQDBAJy5mb3JtYXQoYXBpX3ZlcnNpb24pLAorIHJ0cF9nZW5fc291cmNlcyA9IFtnc3RydHBfZW51bV9oXQorIGlmIGJ1aWxkX2dpcgorICAgZ3N0X2dpcl9leHRyYV9hcmdzID0gZ2lyX2luaXRfc2VjdGlvbiArIFsgJy0tYy1pbmNsdWRlPWdzdC9ydHAvcnRwLmgnIF0KKy0gIHJ0cF9nZW5fc291cmNlcyArPSBbZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdF9ydHAsCisrICBydHBfZ2lyID0gZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdF9ydHAsCisgICAgIHNvdXJjZXMgOiBydHBfc291cmNlcyArIHJ0cF9oZWFkZXJzICsgW2dzdHJ0cF9lbnVtX2NdICsgW2dzdHJ0cF9lbnVtX2hdLAorICAgICBuYW1lc3BhY2UgOiAnR3N0UnRwJywKKyAgICAgbnN2ZXJzaW9uIDogYXBpX3ZlcnNpb24sCitAQCAtNjAsNyArNjAsOSBAQCBpZiBidWlsZF9naXIKKyAgICAgaW5zdGFsbCA6IHRydWUsCisgICAgIGV4dHJhX2FyZ3MgOiBnc3RfZ2lyX2V4dHJhX2FyZ3MsCisgICAgIGRlcGVuZGVuY2llcyA6IGdzdHJ0cF9kZXBzCistICApXQorKyAgKQorKworKyAgcnRwX2dlbl9zb3VyY2VzICs9IFtydHBfZ2lyXQorIGVuZGlmCisgCisgCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3J0c3AvbWVzb24uYnVpbGQgYi9nc3QtbGlicy9nc3QvcnRzcC9tZXNvbi5idWlsZAoraW5kZXggMjdlMzA5ZDVhLi4zNjMyYWRjZWIgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvcnRzcC9tZXNvbi5idWlsZAorKysrIGIvZ3N0LWxpYnMvZ3N0L3J0c3AvbWVzb24uYnVpbGQKK0BAIC01NCw3ICs1NCw3IEBAIGdzdF9ydHNwID0gbGlicmFyeSgnZ3N0cnRzcC1AMEAnLmZvcm1hdChhcGlfdmVyc2lvbiksCisgcnRzcF9nZW5fc291cmNlcyA9IFtnc3RydHNwX2hdCisgaWYgYnVpbGRfZ2lyCisgICBnc3RfZ2lyX2V4dHJhX2FyZ3MgPSBnaXJfaW5pdF9zZWN0aW9uICsgWyAnLS1jLWluY2x1ZGU9Z3N0L3J0c3AvcnRzcC5oJyBdCistICBydHNwX2dlbl9zb3VyY2VzICs9IFtnbm9tZS5nZW5lcmF0ZV9naXIoZ3N0X3J0c3AsCisrICBydHNwX2dpciA9IGdub21lLmdlbmVyYXRlX2dpcihnc3RfcnRzcCwKKyAgICAgc291cmNlcyA6IHJ0c3Bfc291cmNlcyArIHJ0c3BfaGVhZGVycyArIFtnc3RydHNwX2NdICsgW2dzdHJ0c3BfaF0sCisgICAgIG5hbWVzcGFjZSA6ICdHc3RSdHNwJywKKyAgICAgbnN2ZXJzaW9uIDogYXBpX3ZlcnNpb24sCitAQCAtNjUsNyArNjUsOCBAQCBpZiBidWlsZF9naXIKKyAgICAgaW5zdGFsbCA6IHRydWUsCisgICAgIGV4dHJhX2FyZ3MgOiBnc3RfZ2lyX2V4dHJhX2FyZ3MsCisgICAgIGRlcGVuZGVuY2llcyA6IGdzdHJ0c3BfZGVwcyArIFtzZHBfZGVwXQorLSAgKV0KKysgICkKKysgIHJ0c3BfZ2VuX3NvdXJjZXMgKz0gW3J0c3BfZ2lyXQorIGVuZGlmCisgCisgcnRzcF9kZXAgPSBkZWNsYXJlX2RlcGVuZGVuY3kobGlua193aXRoIDogZ3N0X3J0c3AsCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3NkcC9tZXNvbi5idWlsZCBiL2dzdC1saWJzL2dzdC9zZHAvbWVzb24uYnVpbGQKK2luZGV4IDYyYzE4YjczMi4uMjRjZGI1MjkzIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L3NkcC9tZXNvbi5idWlsZAorKysrIGIvZ3N0LWxpYnMvZ3N0L3NkcC9tZXNvbi5idWlsZAorQEAgLTIzLDcgKzIzLDcgQEAgZ3N0c2RwID0gbGlicmFyeSgnZ3N0c2RwLUAwQCcuZm9ybWF0KGFwaV92ZXJzaW9uKSwKKyBzZHBfZ2VuX3NvdXJjZXMgID0gW10KKyBpZiBidWlsZF9naXIKKyAgIGdzdF9naXJfZXh0cmFfYXJncyA9IGdpcl9pbml0X3NlY3Rpb24gKyBbICctLWMtaW5jbHVkZT1nc3Qvc2RwL3NkcC5oJyBdCistICBzZHBfZ2VuX3NvdXJjZXMgKz0gW2dub21lLmdlbmVyYXRlX2dpcihnc3RzZHAsCisrICBzZHBfZ2lyID0gZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdHNkcCwKKyAgICAgc291cmNlcyA6IGdzdF9zZHBfc291cmNlcyArIGdzdF9zZHBfaGVhZGVycywKKyAgICAgbmFtZXNwYWNlIDogJ0dzdFNkcCcsCisgICAgIG5zdmVyc2lvbiA6IGFwaV92ZXJzaW9uLAorQEAgLTM0LDcgKzM0LDkgQEAgaWYgYnVpbGRfZ2lyCisgICAgIGluc3RhbGwgOiB0cnVlLAorICAgICBleHRyYV9hcmdzIDogZ3N0X2dpcl9leHRyYV9hcmdzLAorICAgICBkZXBlbmRlbmNpZXMgOiBydHNwX2RlcHMKKy0gICldCisrICApCisrCisrICBzZHBfZ2VuX3NvdXJjZXMgKz0gW3NkcF9naXJdCisgZW5kaWYKKyAKKyBzZHBfZGVwID0gZGVjbGFyZV9kZXBlbmRlbmN5KGxpbmtfd2l0aDogZ3N0c2RwLAorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC90YWcvbWVzb24uYnVpbGQgYi9nc3QtbGlicy9nc3QvdGFnL21lc29uLmJ1aWxkCitpbmRleCAyN2U2NmZkNjMuLjVlYzM3MzkyYSAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC90YWcvbWVzb24uYnVpbGQKKysrKyBiL2dzdC1saWJzL2dzdC90YWcvbWVzb24uYnVpbGQKK0BAIC05Myw3ICs5Myw3IEBAIGdzdHRhZyA9IGxpYnJhcnkoJ2dzdHRhZy1AMEAnLmZvcm1hdChhcGlfdmVyc2lvbiksCisgCisgaWYgYnVpbGRfZ2lyCisgICBnc3RfZ2lyX2V4dHJhX2FyZ3MgPSBnaXJfaW5pdF9zZWN0aW9uICsgWyAnLS1jLWluY2x1ZGU9Z3N0L3RhZy90YWcuaCcgXQorLSAgdGFnX2dlbl9zb3VyY2VzICs9IFtnbm9tZS5nZW5lcmF0ZV9naXIoZ3N0dGFnLAorKyAgdGFnX2dpciA9IGdub21lLmdlbmVyYXRlX2dpcihnc3R0YWcsCisgICAgIHNvdXJjZXMgOiB0YWdfc291cmNlcyArIHRhZ19oZWFkZXJzICsgW2dzdHRhZ19oXSArIFtnc3R0YWdfY10sCisgICAgIG5hbWVzcGFjZSA6ICdHc3RUYWcnLAorICAgICBuc3ZlcnNpb24gOiBhcGlfdmVyc2lvbiwKK0BAIC0xMDQsNyArMTA0LDggQEAgaWYgYnVpbGRfZ2lyCisgICAgIGluc3RhbGwgOiB0cnVlLAorICAgICBleHRyYV9hcmdzIDogZ3N0X2dpcl9leHRyYV9hcmdzLAorICAgICBkZXBlbmRlbmNpZXMgOiB0YWdfZGVwcworLSAgKV0KKysgICkKKysgIHRhZ19nZW5fc291cmNlcyArPSBbdGFnX2dpcl0KKyBlbmRpZgorIAorIHRhZ19kZXAgPSBkZWNsYXJlX2RlcGVuZGVuY3kobGlua193aXRoOiBnc3R0YWcsCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL21lc29uLmJ1aWxkIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL21lc29uLmJ1aWxkCitpbmRleCA1YjM1ZTE5NDMuLmJmNzdhYTE1NyAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC92aWRlby9tZXNvbi5idWlsZAorKysrIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL21lc29uLmJ1aWxkCitAQCAtMTM4LDcgKzEzOCw3IEBAIGdzdHZpZGVvID0gbGlicmFyeSgnZ3N0dmlkZW8tQDBAJy5mb3JtYXQoYXBpX3ZlcnNpb24pLAorIAorIGlmIGJ1aWxkX2dpcgorICAgZ3N0X2dpcl9leHRyYV9hcmdzID0gZ2lyX2luaXRfc2VjdGlvbiArIFsgJy0tYy1pbmNsdWRlPWdzdC92aWRlby92aWRlby5oJyBdCistICB2aWRlb19nZW5fc291cmNlcyArPSBbZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdHZpZGVvLAorKyAgdmlkZW9fZ2lyID0gZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdHZpZGVvLAorICAgICBzb3VyY2VzIDogdmlkZW9fc291cmNlcyArIHZpZGVvX2hlYWRlcnMgKyBbZ3N0dmlkZW9fY10gKyBbZ3N0dmlkZW9faF0sCisgICAgIG5hbWVzcGFjZSA6ICdHc3RWaWRlbycsCisgICAgIG5zdmVyc2lvbiA6IGFwaV92ZXJzaW9uLAorQEAgLTE0OSw3ICsxNDksOCBAQCBpZiBidWlsZF9naXIKKyAgICAgaW5zdGFsbCA6IHRydWUsCisgICAgIGV4dHJhX2FyZ3MgOiBnc3RfZ2lyX2V4dHJhX2FyZ3MsCisgICAgIGRlcGVuZGVuY2llcyA6IGdzdHZpZGVvX2RlcHMKKy0gICldCisrICApCisrICB2aWRlb19nZW5fc291cmNlcyArPSBbdmlkZW9fZ2lyXQorIGVuZGlmCisgCisgdmlkZW9fZGVwID0gZGVjbGFyZV9kZXBlbmRlbmN5KGxpbmtfd2l0aCA6IGdzdHZpZGVvLAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAzLXJpZmYtYWRkLW1pc3NpbmctaW5jbHVkZS1kaXJlY3Rvcmllcy13aGVuLWNhbGxpbmctaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDMtcmlmZi1hZGQtbWlzc2luZy1pbmNsdWRlLWRpcmVjdG9yaWVzLXdoZW4tY2FsbGluZy1pbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThmZmRiMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDMtcmlmZi1hZGQtbWlzc2luZy1pbmNsdWRlLWRpcmVjdG9yaWVzLXdoZW4tY2FsbGluZy1pbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUZyb20gYjk3NjVlZmIxNjk2ZTNlMmU3OWYyOTU1Zjc1OWJlMTk5ZmUzNDg4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyNiBPY3QgMjAxNSAxNzoyOTozNyArMDIwMAotU3ViamVjdDogW1BBVENIXSByaWZmOiBhZGQgbWlzc2luZyBpbmNsdWRlIGRpcmVjdG9yaWVzIHdoZW4gY2FsbGluZwotIGludHJvc3BlY3Rpb24gc2Nhbm5lcgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW3JldmlldyBvbiBvZS1jb3JlIG1haWxsaXN0XQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIGdzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0KLWluZGV4IGM4YzU4OGEuLmMwOTY0NTMgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0KLUBAIC00MSw2ICs0MSw4IEBAIGxpYmdzdHJpZmZfQEdTVF9BUElfVkVSU0lPTkBfbGFfTERGTEFHUyA9ICQoR1NUX0xJQl9MREZMQUdTKSAkKEdTVF9BTExfTERGTEFHUykKLSAjCQktLXN0cmlwLXByZWZpeD1Hc3QgXAotICMJCS0td2Fybi1hbGwgXAotICMJCS0tYy1pbmNsdWRlICJnc3QvcmlmZi9yaWZmLmgiIFwKLSsjICAgICAgICAgICAgICAgLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKLSsjICAgICAgICAgICAgICAgLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAotICMJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKGJ1aWxkZGlyKS8uLi90YWcgXAotICMJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKGJ1aWxkZGlyKS8uLi9hdWRpbyBcCi0gIwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDA0LXJ0c3AtZHJvcC1pbmNvcnJlY3QtcmVmZXJlbmNlLXRvLWdzdHJlYW1lci1zZHAtaW4tTWEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDQtcnRzcC1kcm9wLWluY29ycmVjdC1yZWZlcmVuY2UtdG8tZ3N0cmVhbWVyLXNkcC1pbi1NYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdhMGQ2OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDQtcnRzcC1kcm9wLWluY29ycmVjdC1yZWZlcmVuY2UtdG8tZ3N0cmVhbWVyLXNkcC1pbi1NYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUZyb20gNTNiNTg2ODQ5MWNmOTllZTc5NzE5MjM5NWRiZmViNjlkZjIzZWRkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyNiBPY3QgMjAxNSAxNzozMDoxNCArMDIwMAotU3ViamVjdDogW1BBVENIXSBydHNwOiBkcm9wIGluY29ycmVjdCByZWZlcmVuY2UgdG8gZ3N0cmVhbWVyLXNkcCBpbgotIE1ha2VmaWxlLmFtCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbWFpbGxpc3RdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLQotLS0tCi0gZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0gfCAxIC0KLSAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQotaW5kZXggNzkwMjdjYi4uMjk4N2UyMyAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQotQEAgLTgyLDcgKzgyLDYgQEAgR3N0UnRzcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RydHNwLUBHU1RfQVBJX1ZFUlMKLSAJCS0tcGtnIGdpby0yLjAgXAotIAkJLS1wa2cgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0tcGtnIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLS0JCS0tcGtnIGdzdHJlYW1lci1zZHAtQEdTVF9BUElfVkVSU0lPTkAgXAotIAkJLS1wa2ctZXhwb3J0IGdzdHJlYW1lci1ydHNwLUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0tYWRkLWluaXQtc2VjdGlvbj0iJChJTlRST1NQRUNUSU9OX0lOSVQpIiBcCi0gCQktLW91dHB1dCAkQCBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL2xpbmstd2l0aC1saWJ2Y2hvc3RpZi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvbGluay13aXRoLWxpYnZjaG9zdGlmLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNGY3YzIyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvbGluay13aXRoLWxpYnZjaG9zdGlmLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSA5ODY2ZjUxZTVlMDkxM2YxZTQ1M2ViNTc0NjE4YmY3NDMyZjM4Y2I2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTEgQXByIDIwMTggMTA6NDY6MzMgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIC1sdmNob3N0aWYgdG8gbGluayB3aGVuIHVzaW5nIC1sRUdMIG9uIHJwaQotCi1UaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2UgbGliRUdMIGZyb20gdXNlcmxhbmQgdXNlcyBzeWJvbHMKLWZyb20gdGhpcyBsaWJyYXJ5LgotCi1saWIvbGliRUdMLnNvLjEuMC4wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIxOiAwMDAwMDAwMCAgICAgMCBGVU5DICAgIEdMT0JBTCBERUZBVUxUICBVTkQgdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQKLSAgMTU1MjogMDAwMDAwMDAgICAgIDAgRlVOQyAgICBHTE9CQUwgREVGQVVMVCAgVU5EIHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkCi0KLVRoZXNlIHN5bWJvbHMgYXJlIHByb3ZpZGVkIGJ5IGxpYnZjaG9zdGlmIGFzIHNlZW4gYmVsb3cKLQotbGliL2xpYnZjaG9zdGlmLnNvCi0gICAyNTI6IDAwMDBiMTYxICAgMTkyIEZVTkMgICAgR0xPQkFMIERFRkFVTFQgICAgOSB2Y19kaXNwbWFueF9lbGVtZW50X2FkZAotICAgODA5OiAwMDAwYjE2MSAgIDE5MiBGVU5DICAgIEdMT0JBTCBERUZBVUxUICAgIDkgdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQKLQotV2l0aCB0aGlzIGV4cGxpY2l0IGxpbmssIHBsdWdpbnMgZmFpbCBkdXJpbmcgcnVudGltZQotCi0oZ3N0LXBsdWdpbi1zY2FubmVyOjU3MSk6IEdTdHJlYW1lci1XQVJOSU5HICoqOiBGYWlsZWQgdG8gbG9hZCBwbHVnaW4gJy91c3IvbGliL2dzdHJlYW1lci0xLjAvbGliZ3N0b214LnNvJzogRXJyb3IgcmVsb2NhdGluZyAvdXNyL2xpYi9saWJnc3RnbC0xLjAuc28uMDogdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQ6IHN5bWJvbCBub3QgZm91bmQKLShnc3QtcGx1Z2luLXNjYW5uZXI6NTcxKTogR1N0cmVhbWVyLVdBUk5JTkcgKio6IEZhaWxlZCB0byBsb2FkIHBsdWdpbiAnL3Vzci9saWIvZ3N0cmVhbWVyLTEuMC9saWJnc3RvcGVuZ2wuc28nOiBFcnJvciByZWxvY2F0aW5nIC91c3IvbGliL2xpYmdzdGdsLTEuMC5zby4wOiB2Y19kaXNwbWFueF9lbGVtZW50X2FkZDogc3ltYm9sIG5vdCBmb3VuZAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotLS0tCi0gbTQvZ3N0LWdsLm00IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbTQvZ3N0LWdsLm00IGIvbTQvZ3N0LWdsLm00Ci1pbmRleCAxZTk3MjQwLi5hYjc3NzRjIDEwMDY0NAotLS0tIGEvbTQvZ3N0LWdsLm00Ci0rKysgYi9tNC9nc3QtZ2wubTQKLUBAIC0yNzUsNyArMjc1LDcgQEAgY2FzZSAkaG9zdCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVZFX0VHTD15ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFWRV9HTEVTMj15ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFWRV9FR0xfUlBJPXllcwotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfTElCUz0iLWxiY21faG9zdCAtbHZjb3MgLWx2Y2hpcV9hcm0iCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9MSUJTPSItbGJjbV9ob3N0IC1sdmNob3N0aWYgLWx2Y29zIC1sdmNoaXFfYXJtIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfQ0ZMQUdTPSIiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFDX0RFRklORShVU0VfRUdMX1JQSSwgWzFdLCBbVXNlIFJQaSBwbGF0Zm9ybV0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBdKQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL21ha2UtZ2lvX3VuaXhfMl8wLWRlcGVuZGVuY3ktY29uZmlndXJhYmxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9tYWtlLWdpb191bml4XzJfMC1kZXBlbmRlbmN5LWNvbmZpZ3VyYWJsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM5NTBiNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL21ha2UtZ2lvX3VuaXhfMl8wLWRlcGVuZGVuY3ktY29uZmlndXJhYmxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSA3ZmZhNmUzZDAwZTFkOGEwNjBmM2Y0YzJiYjlhNzI2OTFhZjA1ZDc5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjAgSmFuIDIwMTYgMTM6MDA6MDAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbWFrZSBnaW9fdW5peF8yXzAgZGVwZW5kZW5jeSBjb25maWd1cmFibGUKLQotUHJpb3IgdG8gMS43LjEsIGdzdC1wbHVnaW5zLWJhc2UgYWNjZXB0ZWQgYSBjb25maWd1cmUgb3B0aW9uIHRvCi1kaXNhYmxlIGdpb191bml4XzJfMCwgaG93ZXZlciBpdCB3YXMgaW1wbGVtZW50ZWQgaW5jb3JyZWN0bHkgdXNpbmcKLUFHX0dTVF9DSEVDS19GRUFUVVJFLiBUaGF0IHdhcyBmaXhlZCBpbiAxLjcuMSBieSBtYWtpbmcgdGhlCi1kZXBlbmRlbmN5IHVuY29uZGl0aW9uYWwuCi0KLSAgaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtcGx1Z2lucy1iYXNlL2NvbW1pdC8/aWQ9YWFkZWZlZmJhODhhZmU0YWNiZTY0NDU0NjUwZjI0ZTdjZTdjOGQ3MAotCi1UbyBtYWtlIGJ1aWxkcyBkZXRlcm1pbmlzdGljLCByZS1pbnN0YXRlIHN1cHBvcnQgZm9yCi0tLWRpc2FibGUtZ2lvX3VuaXhfMl8wLCBidXQgaW1wbGVtZW50IGl0IHVzaW5nIHRoZSBBQ19BUkdfRU5BQkxFCi1pbnN0ZWFkIG9mIEFHX0dTVF9DSEVDS19GRUFUVVJFLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLQotLS0tCi0gY29uZmlndXJlLmFjIHwgNyArKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAxMjgwN2JjLi4zNWEwYmYzIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC04MDYsOSArODA2LDE2IEBAIEFNX0NPTkRJVElPTkFMKEhBVkVfUE5HLCB0ZXN0ICJ4JEhBVkVfUE5HIiA9ICJ4eWVzIikKLSBBTV9DT05ESVRJT05BTChIQVZFX0pQRUcsIHRlc3QgIngkSEFWRV9KUEVHIiA9ICJ4eWVzIikKLSAKLSBkbmwgKioqIGdpby11bml4LTIuMCBmb3IgdGVzdHMvY2hlY2svcGlwZWxpbmVzL3RjcC5jICoqKgotK0FDX0FSR19FTkFCTEUoW2dpb191bml4XzJfMF0sCi0rICBbQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1naW9fdW5peF8yXzBdLFtkaXNhYmxlIHVzZSBvZiBnaW9fdW5peF8yXzBdKV0sCi0rICBbXSwKLSsgIFtlbmFibGVfZ2lvX3VuaXhfMl8wPXllc10pCi0rCi0raWYgdGVzdCAieCR7ZW5hYmxlX2dpb191bml4XzJfMH0iICE9ICJ4bm8iOyB0aGVuCi0gUEtHX0NIRUNLX01PRFVMRVMoR0lPX1VOSVhfMl8wLCBnaW8tdW5peC0yLjAgPj0gMi4yNCwKLSAgICAgSEFWRV9HSU9fVU5JWF8yXzA9InllcyIsCi0gICAgIEhBVkVfR0lPX1VOSVhfMl8wPSJubyIpCi0rZmkKLSBBTV9DT05ESVRJT05BTChVU0VfR0lPX1VOSVhfMl8wLCB0ZXN0ICJ4JEhBVkVfR0lPX1VOSVhfMl8wIiA9ICJ4eWVzIikKLSAKLSBkbmwgKioqIGZpbmFsaXplIENGTEFHUywgTERGTEFHUywgTElCUwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I5OWZiYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NvbW1vbi9jb3ZlcmFnZS9jb3ZlcmFnZS1yZXBvcnQucGw7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9YTRlMTgzMGZjZTA3ODAyOGM4ZjA5NzQxNjEyNzI2MDciCi0KLVNSQ19VUkkgPSAiIFwKLSAgICAgICAgICAgIGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFzZS9nc3QtcGx1Z2lucy1iYXNlLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgICBmaWxlOi8vZ2V0LWNhcHMtZnJvbS1zcmMtcGFkLXdoZW4tcXVlcnktY2Fwcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMy1zc2FwYXJzZS1lbmhhbmNlLVNTQS10ZXh0LWxpbmVzLXBhcnNpbmcucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL21ha2UtZ2lvX3VuaXhfMl8wLWRlcGVuZGVuY3ktY29uZmlndXJhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDItTWFrZWZpbGUuYW0tcHJlZml4LWNhbGxzLXRvLXBrZy1jb25maWctd2l0aC1QS0dfQ09ORi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMy1yaWZmLWFkZC1taXNzaW5nLWluY2x1ZGUtZGlyZWN0b3JpZXMtd2hlbi1jYWxsaW5nLWluLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA0LXJ0c3AtZHJvcC1pbmNvcnJlY3QtcmVmZXJlbmNlLXRvLWdzdHJlYW1lci1zZHAtaW4tTWEucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDUtdml2LWZiLU1ha2Utc3VyZS1jb25maWcuaC1pcy1pbmNsdWRlZC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwOS1nbGltYWdlc2luay1Eb3ducmFuay10by1tYXJnaW5hbC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2xpbmstd2l0aC1saWJ2Y2hvc3RpZi5wYXRjaCBcCi0gICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYjVlYjA2NTFiYWI3MGJmMTcxNGYxMDNiZGQ2NmNlNDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWMzY2M0ODk5MzNkMDU5NzA4N2M5YmM2YmEyNTFjOTM2OTNkNjQ1NTRiY2M1NjM1MzlhMDg0ZmEyZDVmY2IyYiIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWJhc2UtJHtQVn0iCi0KLURFUEVORFMgKz0gImlzby1jb2RlcyB1dGlsLWxpbnV4IgotCi1pbmhlcml0IGdldHRleHQgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVBBQ0tBR0VTX0RZTkFNSUMgPSsgIl5saWJnc3QuKiIKLQotIyBvcGVuZ2wgcGFja2FnZWNvbmZpZyBmYWN0b3JlZCBvdXQgdG8gbWFrZSBpdCBlYXN5IGZvciBkaXN0cm9zCi0jIGFuZCBCU1AgbGF5ZXJzIHRvIHBpY2sgZWl0aGVyIChkZXNrdG9wKSBvcGVuZ2wsIGdsZXMyLCBvciBubyBHTAotUEFDS0FHRUNPTkZJR19HTCA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnZ2xlczIgZWdsJywgJycsIGQpfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgJHtHU1RSRUFNRVJfT1JDfSBcCi0gICAgJHtQQUNLQUdFQ09ORklHX0dMfSBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYSB4MTEnLCBkKX0gXAotICAgIGdpby11bml4LTIuMCBqcGVnIG9nZyBwYW5nbyBwbmcgdGhlb3JhIHZvcmJpcyB6bGliIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCBlZ2wnLCAnJywgZCl9IFwKLSIKLQotWDExREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSBsaWJzbSBsaWJ4cmVuZGVyIGxpYnh2IgotWDExRU5BQkxFT1BUUyA9ICItLWVuYWJsZS14IC0tZW5hYmxlLXh2aWRlbyAtLWVuYWJsZS14c2htIgotWDExRElTQUJMRU9QVFMgPSAiLS1kaXNhYmxlLXggLS1kaXNhYmxlLXh2aWRlbyAtLWRpc2FibGUteHNobSIKLQotUEFDS0FHRUNPTkZJR1thbHNhXSAgICAgICAgID0gIi0tZW5hYmxlLWFsc2EsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIiCi1QQUNLQUdFQ09ORklHW2NkcGFyYW5vaWFdICAgPSAiLS1lbmFibGUtY2RwYXJhbm9pYSwtLWRpc2FibGUtY2RwYXJhbm9pYSxjZHBhcmFub2lhIgotUEFDS0FHRUNPTkZJR1tlZ2xdICAgICAgICAgID0gIi0tZW5hYmxlLWVnbCwtLWRpc2FibGUtZWdsLHZpcnR1YWwvZWdsIgotUEFDS0FHRUNPTkZJR1tnYm1dICAgICAgICAgID0gIi0tZW5hYmxlLWdibSwtLWRpc2FibGUtZ2JtLHZpcnR1YWwvbGliZ2JtIGxpYmd1ZGV2IGxpYmRybSIKLVBBQ0tBR0VDT05GSUdbZ2lvLXVuaXgtMi4wXSA9ICItLWVuYWJsZS1naW9fdW5peF8yXzAsLS1kaXNhYmxlLWdpb191bml4XzJfMCxnbGliLTIuMCIKLVBBQ0tBR0VDT05GSUdbZ2xlczJdICAgICAgICA9ICItLWVuYWJsZS1nbGVzMiwtLWRpc2FibGUtZ2xlczIsdmlydHVhbC9saWJnbGVzMiIKLVBBQ0tBR0VDT05GSUdbaXZvcmJpc10gICAgICA9ICItLWVuYWJsZS1pdm9yYmlzLC0tZGlzYWJsZS1pdm9yYmlzLHRyZW1vciIKLVBBQ0tBR0VDT05GSUdbanBlZ10gICAgICAgICA9ICItLWVuYWJsZS1qcGVnLC0tZGlzYWJsZS1qcGVnLGpwZWciCi1QQUNLQUdFQ09ORklHW29nZ10gICAgICAgICAgPSAiLS1lbmFibGUtb2dnLC0tZGlzYWJsZS1vZ2csbGlib2dnIgotUEFDS0FHRUNPTkZJR1tvcGVuZ2xdICAgICAgID0gIi0tZW5hYmxlLW9wZW5nbCwtLWRpc2FibGUtb3BlbmdsLHZpcnR1YWwvbGliZ2wgbGliZ2x1IgotUEFDS0FHRUNPTkZJR1tvcHVzXSAgICAgICAgID0gIi0tZW5hYmxlLW9wdXMsLS1kaXNhYmxlLW9wdXMsbGlib3B1cyIKLVBBQ0tBR0VDT05GSUdbcGFuZ29dICAgICAgICA9ICItLWVuYWJsZS1wYW5nbywtLWRpc2FibGUtcGFuZ28scGFuZ28iCi1QQUNLQUdFQ09ORklHW3BuZ10gICAgICAgICAgPSAiLS1lbmFibGUtcG5nLC0tZGlzYWJsZS1wbmcsbGlicG5nIgotUEFDS0FHRUNPTkZJR1t0aGVvcmFdICAgICAgID0gIi0tZW5hYmxlLXRoZW9yYSwtLWRpc2FibGUtdGhlb3JhLGxpYnRoZW9yYSIKLVBBQ0tBR0VDT05GSUdbdmlzdWFsXSAgICAgICA9ICItLWVuYWJsZS1saWJ2aXN1YWwsLS1kaXNhYmxlLWxpYnZpc3VhbCxsaWJ2aXN1YWwiCi1QQUNLQUdFQ09ORklHW3ZvcmJpc10gICAgICAgPSAiLS1lbmFibGUtdm9yYmlzLC0tZGlzYWJsZS12b3JiaXMsbGlidm9yYmlzIgotUEFDS0FHRUNPTkZJR1t4MTFdICAgICAgICAgID0gIiR7WDExRU5BQkxFT1BUU30sJHtYMTFESVNBQkxFT1BUU30sJHtYMTFERVBFTkRTfSIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gICAgICA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQgd2F5bGFuZC1wcm90b2NvbHMgbGliZHJtIgotUEFDS0FHRUNPTkZJR1t6bGliXSAgICAgICAgID0gIi0tZW5hYmxlLXpsaWIsLS1kaXNhYmxlLXpsaWIsemxpYiIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLSR7TElCVn0vaW5jbHVkZS9nc3QvZ2wvZ3N0Z2xjb25maWcuaCIKLUZJTEVTXyR7TUxQUkVGSVh9bGliZ3N0dGFnLTEuMCArPSAiJHtkYXRhZGlyfS9nc3QtcGx1Z2lucy1iYXNlLzEuMC9saWNlbnNlLXRyYW5zbGF0aW9ucy5kaWN0IgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2dzdC1saWJzL2dzdC90YWcvLmxpYnM6JHtCfS9nc3QtbGlicy9nc3QvdmlkZW8vLmxpYnM6JHtCfS9nc3QtbGlicy9nc3QvYXVkaW8vLmxpYnM6JHtCfS9nc3QtbGlicy9nc3QvcnRwLy5saWJzOiR7Qn0vZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvLmxpYnMiCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1NjNiNmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTYuMi5iYgpAQCAtMCwwICsxLDk5IEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWNvbW1vbi5pbmMKKworTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyIKKworU1JDX1VSSSA9ICIgXAorICAgICAgICAgICAgaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYXNlL2dzdC1wbHVnaW5zLWJhc2UtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgIGZpbGU6Ly9nZXQtY2Fwcy1mcm9tLXNyYy1wYWQtd2hlbi1xdWVyeS1jYXBzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDItbWVzb24tQWRkLXZhcmlhYmxlcy1mb3ItZ2lyLWZpbGVzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAzLXNzYXBhcnNlLWVuaGFuY2UtU1NBLXRleHQtbGluZXMtcGFyc2luZy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwNS12aXYtZmItTWFrZS1zdXJlLWNvbmZpZy5oLWlzLWluY2x1ZGVkLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA5LWdsaW1hZ2VzaW5rLURvd25yYW5rLXRvLW1hcmdpbmFsLnBhdGNoIFwKKyAgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzZmRiMzI4MjM1MzU3OTlhNzQ4YzFmYzE0Zjk3OGUyYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMTNlNzNlMmZlNzRhNDE2NjU1MmY5NTc3YzNkY2IyNGJlZDA3NzAyMWI5YzdmYTYwMGQ5MTBlYzY5ODc4MTZhIgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtYmFzZS0ke1BWfSIKKworREVQRU5EUyArPSAiaXNvLWNvZGVzIHV0aWwtbGludXggemxpYiIKKworaW5oZXJpdCBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYworCitQQUNLQUdFU19EWU5BTUlDID0rICJebGliZ3N0LioiCisKKyMgb3BlbmdsIHBhY2thZ2Vjb25maWcgZmFjdG9yZWQgb3V0IHRvIG1ha2UgaXQgZWFzeSBmb3IgZGlzdHJvcworIyBhbmQgQlNQIGxheWVycyB0byBjaG9vc2UgT3BlbkdMIEFQSXMvcGxhdGZvcm1zL3dpbmRvdyBzeXN0ZW1zCitQQUNLQUdFQ09ORklHX0dMID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdnbGVzMiBlZ2wnLCAnJywgZCl9IgorCitQQUNLQUdFQ09ORklHID8/PSAiIFwKKyAgICAke0dTVFJFQU1FUl9PUkN9IFwKKyAgICAke1BBQ0tBR0VDT05GSUdfR0x9IFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhbHNhIHgxMScsIGQpfSBcCisgICAganBlZyBvZ2cgcGFuZ28gcG5nIHRoZW9yYSB2b3JiaXMgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd3YXlsYW5kIGVnbCcsICcnLCBkKX0gXAorIgorCitPUEVOR0xfQVBJUyA9ICdvcGVuZ2wgZ2xlczInCitPUEVOR0xfUExBVEZPUk1TID0gJ2VnbCcKKworWDExREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSBsaWJzbSBsaWJ4cmVuZGVyIGxpYnh2IgorWDExRU5BQkxFT1BUUyA9ICItRHgxMT1lbmFibGVkIC1EeHZpZGVvPWVuYWJsZWQgLUR4c2htPWVuYWJsZWQiCitYMTFESVNBQkxFT1BUUyA9ICItRHgxMT1kaXNhYmxlZCAtRHh2aWRlbz1kaXNhYmxlZCAtRHhzaG09ZGlzYWJsZWQiCisKK1BBQ0tBR0VDT05GSUdbYWxzYV0gICAgICAgICA9ICItRGFsc2E9ZW5hYmxlZCwtRGFsc2E9ZGlzYWJsZWQsYWxzYS1saWIiCitQQUNLQUdFQ09ORklHW2NkcGFyYW5vaWFdICAgPSAiLURjZHBhcmFub2lhPWVuYWJsZWQsLURjZHBhcmFub2lhPWRpc2FibGVkLGNkcGFyYW5vaWEiCitQQUNLQUdFQ09ORklHW2pwZWddICAgICAgICAgPSAiLURnbC1qcGVnPWVuYWJsZWQsLURnbC1qcGVnPWRpc2FibGVkLGpwZWciCitQQUNLQUdFQ09ORklHW29nZ10gICAgICAgICAgPSAiLURvZ2c9ZW5hYmxlZCwtRG9nZz1kaXNhYmxlZCxsaWJvZ2ciCitQQUNLQUdFQ09ORklHW29wdXNdICAgICAgICAgPSAiLURvcHVzPWVuYWJsZWQsLURvcHVzPWRpc2FibGVkLGxpYm9wdXMiCitQQUNLQUdFQ09ORklHW3BhbmdvXSAgICAgICAgPSAiLURwYW5nbz1lbmFibGVkLC1EcGFuZ289ZGlzYWJsZWQscGFuZ28iCitQQUNLQUdFQ09ORklHW3BuZ10gICAgICAgICAgPSAiLURnbC1wbmc9ZW5hYmxlZCwtRGdsLXBuZz1kaXNhYmxlZCxsaWJwbmciCitQQUNLQUdFQ09ORklHW3RoZW9yYV0gICAgICAgPSAiLUR0aGVvcmE9ZW5hYmxlZCwtRHRoZW9yYT1kaXNhYmxlZCxsaWJ0aGVvcmEiCitQQUNLQUdFQ09ORklHW3RyZW1vcl0gICAgICAgPSAiLUR0cmVtb3I9ZW5hYmxlZCwtRHRyZW1vcj1kaXNhYmxlZCx0cmVtb3IiCitQQUNLQUdFQ09ORklHW3Zpc3VhbF0gICAgICAgPSAiLURsaWJ2aXN1YWw9ZW5hYmxlZCwtRGxpYnZpc3VhbD1kaXNhYmxlZCxsaWJ2aXN1YWwiCitQQUNLQUdFQ09ORklHW3ZvcmJpc10gICAgICAgPSAiLUR2b3JiaXM9ZW5hYmxlZCwtRHZvcmJpcz1kaXNhYmxlZCxsaWJ2b3JiaXMiCitQQUNLQUdFQ09ORklHW3gxMV0gICAgICAgICAgPSAiJHtYMTFFTkFCTEVPUFRTfSwke1gxMURJU0FCTEVPUFRTfSwke1gxMURFUEVORFN9IgorCisjIE9wZW5HTCBBUEkgcGFja2FnZWNvbmZpZ3MKK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSAgICAgICA9ICIsLHZpcnR1YWwvbGliZ2wgbGliZ2x1IgorUEFDS0FHRUNPTkZJR1tnbGVzMl0gICAgICAgID0gIiwsdmlydHVhbC9saWJnbGVzMiIKKworIyBPcGVuR0wgcGxhdGZvcm0gcGFja2FnZWNvbmZpZ3MKK1BBQ0tBR0VDT05GSUdbZWdsXSAgICAgICAgICA9ICIsLHZpcnR1YWwvZWdsIgorCisjIE9wZW5HTCB3aW5kb3cgc3lzdGVtcyAoZXhjZXB0IGZvciBYMTEpCitQQUNLQUdFQ09ORklHW2dibV0gICAgICAgICAgPSAiLCx2aXJ0dWFsL2xpYmdibSBsaWJndWRldiBsaWJkcm0iCitQQUNLQUdFQ09ORklHW3dheWxhbmRdICAgICAgPSAiLCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYmRybSIKK1BBQ0tBR0VDT05GSUdbZGlzcG1hbnhdICAgICA9ICIsLHZpcnR1YWwvbGlib214aWwiCisKK09QRU5HTF9XSU5TWVNfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3gxMScsICcgeDExJywgJycsIGQpfSIKK09QRU5HTF9XSU5TWVNfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dibScsICcgZ2JtJywgJycsIGQpfSIKK09QRU5HTF9XSU5TWVNfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3dheWxhbmQnLCAnIHdheWxhbmQnLCAnJywgZCl9IgorT1BFTkdMX1dJTlNZU19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZGlzcG1hbngnLCAnIGRpc3BtYW54JywgJycsIGQpfSIKKworRVhUUkFfT0VNRVNPTiArPSAiIFwKKyAgICAtRGdsLWdyYXBoZW5lPWRpc2FibGVkIFwKKyAgICAke0BnZXRfb3BlbmdsX2NtZGxpbmVfbGlzdCgnZ2xfYXBpJywgZC5nZXRWYXIoJ09QRU5HTF9BUElTJyksIGQpfSBcCisgICAgJHtAZ2V0X29wZW5nbF9jbWRsaW5lX2xpc3QoJ2dsX3BsYXRmb3JtJywgZC5nZXRWYXIoJ09QRU5HTF9QTEFURk9STVMnKSwgZCl9IFwKKyAgICAke0BnZXRfb3BlbmdsX2NtZGxpbmVfbGlzdCgnZ2xfd2luc3lzJywgZC5nZXRWYXIoJ09QRU5HTF9XSU5TWVMnKSwgZCl9IFwKKyIKKworR1RLRE9DX01FU09OX09QVElPTiA9ICJndGtfZG9jIgorR1RLRE9DX01FU09OX0VOQUJMRV9GTEFHID0gImVuYWJsZWQiCitHVEtET0NfTUVTT05fRElTQUJMRV9GTEFHID0gImRpc2FibGVkIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wL2luY2x1ZGUvZ3N0L2dsL2dzdGdsY29uZmlnLmgiCitGSUxFU18ke01MUFJFRklYfWxpYmdzdHRhZy0xLjAgKz0gIiR7ZGF0YWRpcn0vZ3N0LXBsdWdpbnMtYmFzZS8xLjAvbGljZW5zZS10cmFuc2xhdGlvbnMuZGljdCIKKworZGVmIGdldF9vcGVuZ2xfY21kbGluZV9saXN0KHN3aXRjaF9uYW1lLCBvcHRpb25zLCBkKToKKyAgICBzZWxlY3RlZF9vcHRpb25zID0gW10KKyAgICBpZiBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsIFRydWUsIEZhbHNlLCBkKToKKyAgICAgICAgZm9yIG9wdGlvbiBpbiBvcHRpb25zLnNwbGl0KCk6CisgICAgICAgICAgICBpZiBiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsIG9wdGlvbiwgVHJ1ZSwgRmFsc2UsIGQpOgorICAgICAgICAgICAgICAgIHNlbGVjdGVkX29wdGlvbnMgKz0gW29wdGlvbl0KKyAgICBpZiBzZWxlY3RlZF9vcHRpb25zOgorICAgICAgICByZXR1cm4gJy1EJyArIHN3aXRjaF9uYW1lICsgJz0nICsgJywnLmpvaW4oc2VsZWN0ZWRfb3B0aW9ucykKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gJycKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWNvbW1vbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1jb21tb24uaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiYTk2ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1jb21tb24uaW5jCkBAIC0wLDAgKzEsNTAgQEAKKyMgVGhpcyAuaW5jIGZpbGUgY29udGFpbnMgdGhlIGNvbW1vbiBzZXR1cCBmb3IgdGhlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLSoKKyMgcGx1Z2luIHNldCByZWNpcGVzLgorCisjIFNVTU1BUlkgaXMgc2V0IGluIHRoZSBhY3R1YWwgLmJiIHJlY2lwZXMKK0hPTUVQQUdFID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1Hc3RyZWFtZXIiCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKK0RFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdsaWItMi4wLW5hdGl2ZSIKKworaW5oZXJpdCBnZXR0ZXh0IG1lc29uIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1wYWNrYWdpbmcuaW5jCisKKyMgT3JjIGVuYWJsZXMgcnVudGltZSBKSVQgY29tcGlsYXRpb24gb2YgZGF0YSBwcm9jZXNzaW5nIHJvdXRpbmVzIGZyb20gT3JjCisjIGJ5dGVjb2RlIHRvIFNJTUQgaW5zdHJ1Y3Rpb25zIGZvciB2YXJpb3VzIGFyY2hpdGVjdHVyZXMgKGN1cnJlbnRseSBTU0UsIE1NWCwKKyMgTUlQUywgQWx0aXZlYyBhbmQgTkVPTiBhcmUgc3VwcG9ydGVkKS4KKyMgVGhpcyB2YWx1ZSBpcyB1c2VkIGluIHRoZSBQQUNLQUdFQ09ORklHIHZhbHVlcyBmb3IgZWFjaCBwbHVnaW4gc2V0IHJlY2lwZS4KKyMgQnkgbW9kaWZ5aW5nIGl0LCBPcmMgY2FuIGJlIGVuYWJsZWQvZGlzYWJsZWQgaW4gYWxsIG9mIHRoZXNlIHJlY2lwZXMgYXQgb25jZS4KK0dTVFJFQU1FUl9PUkMgPz0gIm9yYyIKKyMgd29ya2Fyb3VuZCB0byBkaXNhYmxlIG9yYyBvbiBtaXBzIHRvIGZpeCB0aGUgYnVpbGQgZmFpbHVyZQorIyB7c3RhbmRhcmQgaW5wdXR9OiBBc3NlbWJsZXIgbWVzc2FnZXM6CisjIHtzdGFuZGFyZCBpbnB1dH06NDY1ODc6IEVycm9yOiBicmFuY2ggb3V0IG9mIHJhbmdlCitHU1RSRUFNRVJfT1JDX21pcHMgPSAiIgorUEFDS0FHRUNPTkZJR1tvcmNdID0gIi1Eb3JjPWVuYWJsZWQsLURvcmM9ZGlzYWJsZWQsb3JjIG9yYy1uYXRpdmUiCisKKyMgVE9ETzogcHV0IHRoaXMgaW4gYSBnZXR0ZXh0LmJiY2xhc3MgcGF0Y2ggKHdpdGggdmFyaWFibGVzIHRvIGFsbG93IGZvcgorIyBjb25maWd1cmluZyB0aGUgb3B0aW9uIG5hbWUgYW5kIHRoZSBlbmFibGVkL2Rpc2FibGVkIHZhbHVlcykuCitkZWYgZ2V0dGV4dF9vZW1lc29uKGQpOgorICAgIGlmIGQuZ2V0VmFyKCdVU0VfTkxTJykgPT0gJ25vJzoKKyAgICAgICAgcmV0dXJuICctRG5scz1kaXNhYmxlZCcKKyAgICAjIFJlbW92ZSB0aGUgTkxTIGJpdHMgaWYgVVNFX05MUyBpcyBubyBvciBJTkhJQklUX0RFRkFVTFRfREVQUyBpcyBzZXQKKyAgICBpZiBkLmdldFZhcignSU5ISUJJVF9ERUZBVUxUX0RFUFMnKSBhbmQgbm90IG9lLnV0aWxzLmluaGVyaXRzKGQsICdjcm9zcy1jYW5hZGlhbicpOgorICAgICAgICByZXR1cm4gJy1EbmxzPWRpc2FibGVkJworICAgIHJldHVybiAnLURubHM9ZW5hYmxlZCcKKworIyBOb3QgYWxsIHBsdWdpbiBzZXRzIGNvbnRhaW4gZXhhbXBsZXMsIHNvIHRoZSAtRGV4YW1wbGVzCisjIG9wdGlvbiBuZWVkcyB0byBiZSBhZGRlZCBjb25kaXRpb25hbGx5LgorR1NUX1BMVUdJTl9TRVRfSEFTX0VYQU1QTEVTID89ICIxIgorCitFWFRSQV9PRU1FU09OICs9ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHU1RfUExVR0lOX1NFVF9IQVNfRVhBTVBMRVMnLCAnMScsICctRGV4YW1wbGVzPWRpc2FibGVkJywgJycsIGQpfSBcCisgICAgJHtAZ2V0dGV4dF9vZW1lc29uKGQpfSBcCisiCisKK0dJUl9NRVNPTl9FTkFCTEVfRkxBRyA9ICJlbmFibGVkIgorR0lSX01FU09OX0RJU0FCTEVfRkxBRyA9ICJkaXNhYmxlZCIKKworIyBEeW5hbWljYWxseSBnZW5lcmF0ZSBwYWNrYWdlcyBmb3IgYWxsIGVuYWJsZWQgcGx1Z2lucworUEFDS0FHRVNfRFlOQU1JQyA9ICJeJHtQTn0tLioiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzAwMDEtcW1sZ2wtZW5zdXJlLVF0LWRlZmluZXMtR0xzeW5jLXRvLWZpeC1jb21waWxlLW9uLXNvbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMDAwMS1xbWxnbC1lbnN1cmUtUXQtZGVmaW5lcy1HTHN5bmMtdG8tZml4LWNvbXBpbGUtb24tc29tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNjg0ODcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzAwMDEtcW1sZ2wtZW5zdXJlLVF0LWRlZmluZXMtR0xzeW5jLXRvLWZpeC1jb21waWxlLW9uLXNvbS5wYXRjaApAQCAtMCwwICsxLDcwIEBACitGcm9tIDNlMGQ1NTc3NDQ0YjMyNTc5YmRmNWI2OWQ3MjBhMzIyMzIyZmY3YmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaWxpYW4gV29sZmYgPG1pbGlhbi53b2xmZkBrZGFiLmNvbT4KK0RhdGU6IFR1ZSwgMjYgTm92IDIwMTkgMTU6MDg6MjAgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gcW1sZ2w6IGVuc3VyZSBRdCBkZWZpbmVzIEdMc3luYyB0byBmaXggY29tcGlsZSBvbiBzb21lIHBsYXRmb3JtcworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitCeSBleHBsaWN0bHkgaW5jbHVkaW5nIFF0R3VpL3FvcGVuZ2wuaCB3ZSBmb3JjZSB0aGUgY29kZSBwYXRoIHRoYXQKK2RlZmluZXMgR0xzeW5jIGluIHRoZSBRdC1zcGVjaWZpYyB3YXkuIFdpdGhvdXQgdGhhdCwgc29tZSBwbGF0Zm9ybXMKK2ZhaWxlZCB0byBjb21waWxlIHRoZSBxbWxnbCBwbHVnaW4sIHNpbmNlIG5laXRoZXIgUXQgbm9yIGdzdHJlYW1lcgorZGVmaW5lZCBHTHN5bmMgdGhlbiwgbGVhZGluZyB0byBlLmcuOgorCitgYGAKK21ha2VbNF06IEVudGVyaW5nIGRpcmVjdG9yeSAnLy4uLi9nc3QtcGx1Z2lucy1nb29kLTEuMTYuMS9leHQvcXQnCisgIENYWCAgICAgIGxpYmdzdHFtbGdsX2xhLXF0aXRlbS5sbworSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGdzdHF0Z2wuaDozMiwKKyAgICAgICAgICAgICAgICAgZnJvbSBxdGl0ZW0uaDoyNywKKyAgICAgICAgICAgICAgICAgZnJvbSBxdGl0ZW0uY2M6Mjg6CisvLi4uL3Vzci9pbmNsdWRlL2dzdHJlYW1lci0xLjAvCitnc3QvZ2wvZ3N0Z2xmdW5jcy5oOjkzOjE3OiBlcnJvcjogZXhwZWN0ZWQgaWRlbnRpZmllciBiZWZvcmUg4oCYKuKAmSB0b2tlbgorICAgcmV0IChHU1RHTEFQSSAqbmFtZSkgYXJnczsKKyAgICAgICAgICAgICAgICAgXgorLy4uLi91c3IvaW5jbHVkZS9nc3RyZWFtZXItMS4wLworZ3N0L2dsL2dscHJvdG90eXBlcy9zeW5jLmg6Mjc6MTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvCivigJhHU1RfR0xfRVhUX0ZVTkNUSU9O4oCZCisgR1NUX0dMX0VYVF9GVU5DVElPTiAoR0xzeW5jLCBGZW5jZVN5bmMsCisgXn5+fn5+fn5+fn5+fn5+fn5+fgorYGBgCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtcGx1Z2lucy1nb29kL2NvbW1pdC8zZTBkNTU3NzQ0NGIzMjU3OWJkZjViNjlkNzIwYTMyMjMyMmZmN2JjXQorLS0tCisgZXh0L3F0L2dzdHF0Z2wuaCB8IDE4ICsrKysrKysrKysrLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCistLS0gYS9leHQvcXQvZ3N0cXRnbC5oCisrKysgYi9leHQvcXQvZ3N0cXRnbC5oCitAQCAtMjIsMTQgKzIyLDcgQEAKKyAjaW5jbHVkZSA8UXRHdWkvcXRndWktY29uZmlnLmg+CisgI2VuZGlmCisgCistLyogcXQgdXNlcyB0aGUgc2FtZSB0cmljayBhcyB1cyB0byB0eXBlZGVmIEdMc3luYyBvbiBHTEVTMiBidXQgdG8gYSBkaWZmZXJlbnQKKy0gKiB0eXBlIHdoaWNoIGNvbmZ1c2VzIHRoZSBwcmVwcm9jZXNzb3IuIEluc3RlYWQgb2YgdHJ5aW5nIHRvIHJlY29uY2lsZSB0aGUKKy0gKiB0d28sIHdlIGluc3RlYWQgdXNlIHRoZSBHTHN5bmMgZGVmaW5pdGlvbiBmcm9tIFF0IGZyb20gYWJvdmUsIGFuZCBlbnN1cmUKKy0gKiB0aGF0IHdlIGRvbid0IHR5cGVkZWYgR0xzeW5jIGluIGdzdGdsZnVuY3MuaCAqLworICNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xjb25maWcuaD4KKy0jdW5kZWYgR1NUX0dMX0hBVkVfR0xTWU5DCistI2RlZmluZSBHU1RfR0xfSEFWRV9HTFNZTkMgMQorLSNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xmdW5jcy5oPgorIAorIC8qIFRoZSBnbGV4dC5oIGd1YXJkIHdhcyByZW5hbWVkIGluIDIwMTgsIGJ1dCBzb21lIHNvZnR3YXJlIHdoaWNoCisgICogaW5jbHVkZXMgdGhlaXIgb3duIGNvcHkgb2YgdGhlIEdMIGhlYWRlcnMgKHN1Y2ggYXMgcXQpIG1pZ2h0IGhhdmUKK0BAIC00Niw2ICszOSwxNyBAQAorICNlbmRpZgorICNlbmRpZgorIAorKy8qIHB1bGxzIGluIEdMc3luYywgc2VlIGJlbG93ICovCisrI2luY2x1ZGUgPFF0R3VpL3FvcGVuZ2wuaD4KKysKKysvKiBxdCB1c2VzIHRoZSBzYW1lIHRyaWNrIGFzIHVzIHRvIHR5cGVkZWYgR0xzeW5jIG9uIEdMRVMyIGJ1dCB0byBhIGRpZmZlcmVudAorKyAqIHR5cGUgd2hpY2ggY29uZnVzZXMgdGhlIHByZXByb2Nlc3Nvci4gSW5zdGVhZCBvZiB0cnlpbmcgdG8gcmVjb25jaWxlIHRoZQorKyAqIHR3bywgd2UgaW5zdGVhZCB1c2UgdGhlIEdMc3luYyBkZWZpbml0aW9uIGZyb20gUXQgZnJvbSBhYm92ZSwgYW5kIGVuc3VyZQorKyAqIHRoYXQgd2UgZG9uJ3QgdHlwZWRlZiBHTHN5bmMgaW4gZ3N0Z2xmdW5jcy5oICovCisrI3VuZGVmIEdTVF9HTF9IQVZFX0dMU1lOQworKyNkZWZpbmUgR1NUX0dMX0hBVkVfR0xTWU5DIDEKKysjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsZnVuY3MuaD4KKysKKyAjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyAjaW5jbHVkZSA8UXRHdWkvUU9wZW5HTENvbnRleHQ+CisgI2luY2x1ZGUgPFF0R3VpL1FPcGVuR0xGdW5jdGlvbnM+CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzAwMDEtcXQtaW5jbHVkZS1leHQtcXQtZ3N0cXRnbC5oLWluc3RlYWQtb2YtZ3N0LWdsLWdzdGdsZi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMDAwMS1xdC1pbmNsdWRlLWV4dC1xdC1nc3RxdGdsLmgtaW5zdGVhZC1vZi1nc3QtZ2wtZ3N0Z2xmLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkNDIzMTUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzAwMDEtcXQtaW5jbHVkZS1leHQtcXQtZ3N0cXRnbC5oLWluc3RlYWQtb2YtZ3N0LWdsLWdzdGdsZi5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIGQwODIzNGE2NTliZWMxZmQ1Yzk4NGZlZGVmYmViODE5MmFmMDc4MzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAzMSBNYXIgMjAyMCAyMToyMzoyOCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBxdDogaW5jbHVkZSBleHQvcXQvZ3N0cXRnbC5oIGluc3RlYWQgb2YgZ3N0L2dsL2dzdGdsZnVuY3MuaAorCitnc3QvZ2wvZ3N0Z2xmdW5jcy5oIGlzIGluY2x1ZGVkIHZpYSBleHQvcXQvZ3N0cXRnbC5oIHdoaWNoIGhhcyBsb2dpYyB0bworcHJlZmVyIHF0IGhlYWRlcnMgZGVmaW5pdGlvbnMgZm9yIEdMc3luYworCitUaGlzIGhlbHBzIGluIGZpeGluZyBidWlsZCBlcnJvcnMgbGlrZSBiZWxvdworCisvbW50L2IveW9lL2J1aWxkL3RtcC93b3JrL2NvcnRleGE3dDJoZi1uZW9uLXZmcHY0LXlvZS1saW51eC1nbnVlYWJpL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMS4xNi4yLXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL1F0R3VpL3FvcGVuZ2xlczJleHQuaDoyNDoyNjogZXJyb3I6IGNvbmZsaWN0aW5nIGRlY2xhcmF0aW9uICd0eXBlZGVmIHN0cnVjdCBfX0dMc3luYyogR0xzeW5jJworICAgMjQgfCB0eXBlZGVmIHN0cnVjdCBfX0dMc3luYyAqR0xzeW5jOworICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+CitJbiBmaWxlIGluY2x1ZGVkIGZyb20gL21udC9iL3lvZS9idWlsZC90bXAvd29yay9jb3J0ZXhhN3QyaGYtbmVvbi12ZnB2NC15b2UtbGludXgtZ251ZWFiaS9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzEuMTYuMi1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9nc3RyZWFtZXItMS4wL2dzdC9nbC9nc3RnbGZ1bmNzLmg6ODQsCisgICAgICAgICAgICAgICAgIGZyb20gLi4vZ3N0LXBsdWdpbnMtZ29vZC0xLjE2LjIvZXh0L3F0L2dzdHFzZ3RleHR1cmUuY2M6MzA6CisvbW50L2IveW9lL2J1aWxkL3RtcC93b3JrL2NvcnRleGE3dDJoZi1uZW9uLXZmcHY0LXlvZS1saW51eC1nbnVlYWJpL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMS4xNi4yLXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL2dzdHJlYW1lci0xLjAvZ3N0L2dsL2dscHJvdG90eXBlcy9nc3RnbF9jb21wYXQuaDo0MDoxODogbm90ZTogcHJldmlvdXMgZGVjbGFyYXRpb24gYXMgJ3R5cGVkZWYgdm9pZCogR0xzeW5jCisnCisgICA0MCB8IHR5cGVkZWYgZ3BvaW50ZXIgR0xzeW5jOworICAgICAgfCAgICAgICAgICAgICAgICAgIF5+fn5+fgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBleHQvcXQvZ3N0cXNndGV4dHVyZS5jYyB8IDIgKy0KKyBleHQvcXQvcXR3aW5kb3cuY2MgICAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2V4dC9xdC9nc3Rxc2d0ZXh0dXJlLmNjIGIvZXh0L3F0L2dzdHFzZ3RleHR1cmUuY2MKK2luZGV4IDJiMzE0ZTAuLjEyYjE1ZGQgMTAwNjQ0CistLS0gYS9leHQvcXQvZ3N0cXNndGV4dHVyZS5jYworKysrIGIvZXh0L3F0L2dzdHFzZ3RleHR1cmUuY2MKK0BAIC0yNyw3ICsyNyw3IEBACisgCisgI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgorICNpbmNsdWRlIDxnc3QvZ2wvZ2wuaD4KKy0jaW5jbHVkZSA8Z3N0L2dsL2dzdGdsZnVuY3MuaD4KKysjaW5jbHVkZSA8ZXh0L3F0L2dzdHF0Z2wuaD4KKyAjaW5jbHVkZSAiZ3N0cXNndGV4dHVyZS5oIgorIAorICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9xc2dfdGV4dHVyZV9kZWJ1ZworZGlmZiAtLWdpdCBhL2V4dC9xdC9xdHdpbmRvdy5jYyBiL2V4dC9xdC9xdHdpbmRvdy5jYworaW5kZXggNjJkMjZiNi4uYmY2OGViYiAxMDA2NDQKKy0tLSBhL2V4dC9xdC9xdHdpbmRvdy5jYworKysrIGIvZXh0L3F0L3F0d2luZG93LmNjCitAQCAtMjUsNyArMjUsNyBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorIAorICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KKy0jaW5jbHVkZSA8Z3N0L2dsL2dzdGdsZnVuY3MuaD4KKysjaW5jbHVkZSA8ZXh0L3F0L2dzdHF0Z2wuaD4KKyAjaW5jbHVkZSAicXR3aW5kb3cuaCIKKyAjaW5jbHVkZSAiZ3N0cXNndGV4dHVyZS5oIgorICNpbmNsdWRlICJnc3RxdGdsdXRpbGl0eS5oIgorLS0gCisyLjI2LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZhN2I4Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jCi0KLVNSQ19VUkkgPSAiIFwKLSAgICAgICAgICAgIGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtZ29vZC9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKLSAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjUxNTk4N2VlNzYzMjU2ODQwYTExYmQ4ZWEwOThmMmJmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlmYmFiZTY5MDE4ZmNlYzcwN2RmMGI3MTE1MDE2ODc3NjA0MGNkZTZjMWEyNmJiNWE4MmExMzY3NTVmYThmMWYiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9IgotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NvbW1vbi9jb3ZlcmFnZS9jb3ZlcmFnZS1yZXBvcnQucGw7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9YTRlMTgzMGZjZTA3ODAyOGM4ZjA5NzQxNjEyNzI2MDcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0L3JlcGxheWdhaW4vcmdhbmFseXNpcy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjM7bWQ1PWI2MGViZWZkNWIyZjVhOGUwY2FiNmJmZWUzOTFhNWZlIgotCi1ERVBFTkRTICs9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGxpYmNhcCIKLVJQUk9WSURFU18ke1BOfS1wdWxzZWF1ZGlvICs9ICIke1BOfS1wdWxzZSIKLVJQUk9WSURFU18ke1BOfS1zb3VwICs9ICIke1BOfS1zb3VwaHR0cHNyYyIKLQotaW5oZXJpdCBnZXR0ZXh0Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICIgXAotICAgICR7R1NUUkVBTUVSX09SQ30gXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8geDExJywgZCl9IFwKLSAgICBiejIgY2Fpcm8gZmxhYyBnZGstcGl4YnVmIGd1ZGV2IGpwZWcgbGFtZSBsaWJwbmcgbXBnMTIzIHNvdXAgc3BlZXggdGFnbGliIHY0bDIgemxpYiBcCi0iCi0KLVgxMURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlic20gbGlieHJlbmRlciBsaWJ4Zml4ZXMgbGlieGRhbWFnZSIKLQotUEFDS0FHRUNPTkZJR1tiejJdICAgICAgICA9ICItLWVuYWJsZS1iejIsLS1kaXNhYmxlLWJ6MixiemlwMiIKLVBBQ0tBR0VDT05GSUdbY2Fpcm9dICAgICAgPSAiLS1lbmFibGUtY2Fpcm8sLS1kaXNhYmxlLWNhaXJvLGNhaXJvIgotUEFDS0FHRUNPTkZJR1tkdjEzOTRdICAgICA9ICItLWVuYWJsZS1kdjEzOTQsLS1kaXNhYmxlLWR2MTM5NCxsaWJpZWM2MTg4MyBsaWJhdmMxMzk0IGxpYnJhdzEzOTQiCi1QQUNLQUdFQ09ORklHW2ZsYWNdICAgICAgID0gIi0tZW5hYmxlLWZsYWMsLS1kaXNhYmxlLWZsYWMsZmxhYyIKLVBBQ0tBR0VDT05GSUdbZ2RrLXBpeGJ1Zl0gPSAiLS1lbmFibGUtZ2RrX3BpeGJ1ZiwtLWRpc2FibGUtZ2RrX3BpeGJ1ZixnZGstcGl4YnVmIgotUEFDS0FHRUNPTkZJR1tndGtdICAgICAgICA9ICItLWVuYWJsZS1ndGszLC0tZGlzYWJsZS1ndGszLGd0ayszIgotUEFDS0FHRUNPTkZJR1tndWRldl0gICAgICA9ICItLXdpdGgtZ3VkZXYsLS13aXRob3V0LWd1ZGV2LGxpYmd1ZGV2IgotUEFDS0FHRUNPTkZJR1tqYWNrXSAgICAgICA9ICItLWVuYWJsZS1qYWNrLC0tZGlzYWJsZS1qYWNrLGphY2siCi1QQUNLQUdFQ09ORklHW2pwZWddICAgICAgID0gIi0tZW5hYmxlLWpwZWcsLS1kaXNhYmxlLWpwZWcsanBlZyIKLVBBQ0tBR0VDT05GSUdbbGFtZV0gICAgICAgPSAiLS1lbmFibGUtbGFtZSwtLWRpc2FibGUtbGFtZSxsYW1lIgotUEFDS0FHRUNPTkZJR1tsaWJwbmddICAgICA9ICItLWVuYWJsZS1saWJwbmcsLS1kaXNhYmxlLWxpYnBuZyxsaWJwbmciCi1QQUNLQUdFQ09ORklHW2xpYnY0bDJdICAgID0gIi0td2l0aC1saWJ2NGwyLC0td2l0aG91dC1saWJ2NGwyLHY0bC11dGlscyIKLVBBQ0tBR0VDT05GSUdbbXBnMTIzXSAgICAgPSAiLS1lbmFibGUtbXBnMTIzLC0tZGlzYWJsZS1tcGcxMjMsbXBnMTIzIgotUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLWVuYWJsZS1wdWxzZSwtLWRpc2FibGUtcHVsc2UscHVsc2VhdWRpbyIKLVBBQ0tBR0VDT05GSUdbc291cF0gICAgICAgPSAiLS1lbmFibGUtc291cCwtLWRpc2FibGUtc291cCxsaWJzb3VwLTIuNCIKLVBBQ0tBR0VDT05GSUdbc3BlZXhdICAgICAgPSAiLS1lbmFibGUtc3BlZXgsLS1kaXNhYmxlLXNwZWV4LHNwZWV4IgotUEFDS0FHRUNPTkZJR1t0YWdsaWJdICAgICA9ICItLWVuYWJsZS10YWdsaWIsLS1kaXNhYmxlLXRhZ2xpYix0YWdsaWIiCi1QQUNLQUdFQ09ORklHW3Y0bDJdICAgICAgID0gIi0tZW5hYmxlLWdzdF92NGwyIC0tZW5hYmxlLXY0bDItcHJvYmUsLS1kaXNhYmxlLWdzdF92NGwyIgotUEFDS0FHRUNPTkZJR1t2cHhdICAgICAgICA9ICItLWVuYWJsZS12cHgsLS1kaXNhYmxlLXZweCxsaWJ2cHgiCi1QQUNLQUdFQ09ORklHW3dhdnBhY2tdICAgID0gIi0tZW5hYmxlLXdhdnBhY2ssLS1kaXNhYmxlLXdhdnBhY2ssd2F2cGFjayIKLVBBQ0tBR0VDT05GSUdbeDExXSAgICAgICAgPSAiLS1lbmFibGUteCwtLWRpc2FibGUteCwke1gxMURFUEVORFN9IgotUEFDS0FHRUNPTkZJR1t6bGliXSAgICAgICA9ICItLWVuYWJsZS16bGliLC0tZGlzYWJsZS16bGliLHpsaWIiCi0KLSMgcXQ1IHN1cHBvcnQgaXMgZGlzYWJsZWQsIGJlY2F1c2UgaXQgaXMgbm90IHByZXNlbnQgaW4gT0UgY29yZSwgYW5kIHJlcXVpcmVzIG1vcmUgd29yayB0aGFuCi0jIGp1c3QgYWRkaW5nIGEgcGFja2FnZWNvbmZpZyAoaXQgcmVxdWlyZXMgYWNjZXNzIHRvIG1vYywgdWljLCByY2MsIGFuZCBxbWFrZSBwYXRocykuCi0jIFRoaXMgaXMgYmV0dGVyIGRvbmUgaW4gYSBzZXBhcmF0ZSBxdDUgbGF5ZXIgKHdoaWNoIHRoZW4gc2hvdWxkIGFkZCBhICJxdDUiIHBhY2thZ2Vjb25maWcKLSMgaW4gYSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kIGJiYXBwZW5kKS4KLQotRVhUUkFfT0VDT05GICs9ICIgXAotICAgIC0tZW5hYmxlLW9zcyBcCi0gICAgLS1kaXNhYmxlLWFhbGliIFwKLSAgICAtLWRpc2FibGUtYWFsaWJ0ZXN0IFwKLSAgICAtLWRpc2FibGUtZGlyZWN0c291bmQgXAotICAgIC0tZGlzYWJsZS1saWJjYWNhIFwKLSAgICAtLWRpc2FibGUtbGliZHYgXAotICAgIC0tZGlzYWJsZS1vc3M0IFwKLSAgICAtLWRpc2FibGUtb3N4X2F1ZGlvIFwKLSAgICAtLWRpc2FibGUtb3N4X3ZpZGVvIFwKLSAgICAtLWRpc2FibGUtcXQgXAotICAgIC0tZGlzYWJsZS1zaG91dDIgXAotICAgIC0tZGlzYWJsZS10d29sYW1lIFwKLSAgICAtLWRpc2FibGUtd2F2ZWZvcm0gXAotIgotCi1GSUxFU18ke1BOfS1lcXVhbGl6ZXIgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9wcmVzZXRzLyoucHJzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjE2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2M5NDIxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjE2LjIuYmIKQEAgLTAsMCArMSw3MCBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1jb21tb24uaW5jCisKK1NSQ19VUkkgPSAiIFwKKyAgICAgICAgICAgIGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtZ29vZC9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1xbWxnbC1lbnN1cmUtUXQtZGVmaW5lcy1HTHN5bmMtdG8tZml4LWNvbXBpbGUtb24tc29tLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXF0LWluY2x1ZGUtZXh0LXF0LWdzdHF0Z2wuaC1pbnN0ZWFkLW9mLWdzdC1nbC1nc3RnbGYucGF0Y2ggXAorICAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmQwMjVmOGYxNDk3NGY5NGI3NWFjNjlhOWQxYjljOTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDBiYjNiYWZkYTI1YzBiNzM5YzhmYzM2ZTQ4MzgwZmNjZjYxYzRkM2Y4Mzc0N2U5N2FjM2Y5YjAxNzFiMTMxOSIKKworUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWdvb2QtJHtQVn0iCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvcmVwbGF5Z2Fpbi9yZ2FuYWx5c2lzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9YjYwZWJlZmQ1YjJmNWE4ZTBjYWI2YmZlZTM5MWE1ZmUiCisKK0RFUEVORFMgKz0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgbGliY2FwIHpsaWIiCitSUFJPVklERVNfJHtQTn0tcHVsc2VhdWRpbyArPSAiJHtQTn0tcHVsc2UiCitSUFJPVklERVNfJHtQTn0tc291cCArPSAiJHtQTn0tc291cGh0dHBzcmMiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgICR7R1NUUkVBTUVSX09SQ30gXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8geDExJywgZCl9IFwKKyAgICBiejIgY2Fpcm8gZmxhYyBnZGstcGl4YnVmIGd1ZGV2IGpwZWcgbGFtZSBsaWJwbmcgbXBnMTIzIHNvdXAgc3BlZXggdGFnbGliIHY0bDIgXAorIgorCitYMTFERVBFTkRTID0gInZpcnR1YWwvbGlieDExIGxpYnNtIGxpYnhyZW5kZXIgbGlieGZpeGVzIGxpYnhkYW1hZ2UiCitYMTFFTkFCTEVPUFRTID0gIi1EeGltYWdlc3JjPWVuYWJsZWQgLUR4aW1hZ2VzcmMteHNobT1lbmFibGVkIC1EeGltYWdlc3JjLXhmaXhlcz1lbmFibGVkIC1EeGltYWdlc3JjLXhkYW1hZ2U9ZW5hYmxlZCIKK1gxMURJU0FCTEVPUFRTID0gIi1EeGltYWdlc3JjPWRpc2FibGVkIC1EeGltYWdlc3JjLXhzaG09ZGlzYWJsZWQgLUR4aW1hZ2VzcmMteGZpeGVzPWRpc2FibGVkIC1EeGltYWdlc3JjLXhkYW1hZ2U9ZGlzYWJsZWQiCisKK1BBQ0tBR0VDT05GSUdbYnoyXSAgICAgICAgPSAiLURiejI9ZW5hYmxlZCwtRGJ6Mj1kaXNhYmxlZCxiemlwMiIKK1BBQ0tBR0VDT05GSUdbY2Fpcm9dICAgICAgPSAiLURjYWlybz1lbmFibGVkLC1EY2Fpcm89ZGlzYWJsZWQsY2Fpcm8iCitQQUNLQUdFQ09ORklHW2R2MTM5NF0gICAgID0gIi1EZHYxMzk0PWVuYWJsZWQsLURkdjEzOTQ9ZGlzYWJsZWQsbGliaWVjNjE4ODMgbGliYXZjMTM5NCBsaWJyYXcxMzk0IgorUEFDS0FHRUNPTkZJR1tmbGFjXSAgICAgICA9ICItRGZsYWM9ZW5hYmxlZCwtRGZsYWM9ZGlzYWJsZWQsZmxhYyIKK1BBQ0tBR0VDT05GSUdbZ2RrLXBpeGJ1Zl0gPSAiLURnZGstcGl4YnVmPWVuYWJsZWQsLURnZGstcGl4YnVmPWRpc2FibGVkLGdkay1waXhidWYiCitQQUNLQUdFQ09ORklHW2d0a10gICAgICAgID0gIi1EZ3RrMz1lbmFibGVkLC1EZ3RrMz1kaXNhYmxlZCxndGsrMyIKK1BBQ0tBR0VDT05GSUdbZ3VkZXZdICAgICAgPSAiLUR2NGwyLWd1ZGV2PWVuYWJsZWQsLUR2NGwyLWd1ZGV2PWRpc2FibGVkLGxpYmd1ZGV2IgorUEFDS0FHRUNPTkZJR1tqYWNrXSAgICAgICA9ICItRGphY2s9ZW5hYmxlZCwtRGphY2s9ZGlzYWJsZWQsamFjayIKK1BBQ0tBR0VDT05GSUdbanBlZ10gICAgICAgPSAiLURqcGVnPWVuYWJsZWQsLURqcGVnPWRpc2FibGVkLGpwZWciCitQQUNLQUdFQ09ORklHW2xhbWVdICAgICAgID0gIi1EbGFtZT1lbmFibGVkLC1EbGFtZT1kaXNhYmxlZCxsYW1lIgorUEFDS0FHRUNPTkZJR1tsaWJwbmddICAgICA9ICItRHBuZz1lbmFibGVkLC1EcG5nPWRpc2FibGVkLGxpYnBuZyIKK1BBQ0tBR0VDT05GSUdbbGlidjRsMl0gICAgPSAiLUR2NGwyLWxpYnY0bDI9ZW5hYmxlZCwtRHY0bDItbGlidjRsMj1kaXNhYmxlZCx2NGwtdXRpbHMiCitQQUNLQUdFQ09ORklHW21wZzEyM10gICAgID0gIi1EbXBnMTIzPWVuYWJsZWQsLURtcGcxMjM9ZGlzYWJsZWQsbXBnMTIzIgorUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItRHB1bHNlPWVuYWJsZWQsLURwdWxzZT1kaXNhYmxlZCxwdWxzZWF1ZGlvIgorUEFDS0FHRUNPTkZJR1txdDVdICAgICAgICA9ICItRHF0NT1lbmFibGVkLC1EcXQ1PWRpc2FibGVkLHF0YmFzZSBxdGRlY2xhcmF0aXZlIHF0YmFzZS1uYXRpdmUiCitQQUNLQUdFQ09ORklHW3NvdXBdICAgICAgID0gIi1Ec291cD1lbmFibGVkLC1Ec291cD1kaXNhYmxlZCxsaWJzb3VwLTIuNCIKK1BBQ0tBR0VDT05GSUdbc3BlZXhdICAgICAgPSAiLURzcGVleD1lbmFibGVkLC1Ec3BlZXg9ZGlzYWJsZWQsc3BlZXgiCitQQUNLQUdFQ09ORklHW3RhZ2xpYl0gICAgID0gIi1EdGFnbGliPWVuYWJsZWQsLUR0YWdsaWI9ZGlzYWJsZWQsdGFnbGliIgorUEFDS0FHRUNPTkZJR1t2NGwyXSAgICAgICA9ICItRHY0bDI9ZW5hYmxlZCAtRHY0bDItcHJvYmU9dHJ1ZSwtRHY0bDI9ZGlzYWJsZWQgLUR2NGwyLXByb2JlPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t2cHhdICAgICAgICA9ICItRHZweD1lbmFibGVkLC1EdnB4PWRpc2FibGVkLGxpYnZweCIKK1BBQ0tBR0VDT05GSUdbd2F2cGFja10gICAgPSAiLUR3YXZwYWNrPWVuYWJsZWQsLUR3YXZwYWNrPWRpc2FibGVkLHdhdnBhY2siCitQQUNLQUdFQ09ORklHW3gxMV0gICAgICAgID0gIiR7WDExRU5BQkxFT1BUU30sJHtYMTFESVNBQkxFT1BUU30sJHtYMTFERVBFTkRTfSIKKworRVhUUkFfT0VNRVNPTiArPSAiIFwKKyAgICAtRGFhbGliPWRpc2FibGVkIFwKKyAgICAtRGRpcmVjdHNvdW5kPWRpc2FibGVkIFwKKyAgICAtRGR2PWRpc2FibGVkIFwKKyAgICAtRGxpYmNhY2E9ZGlzYWJsZWQgXAorICAgIC1Eb3NzPWVuYWJsZWQgXAorICAgIC1Eb3NzND1kaXNhYmxlZCBcCisgICAgLURvc3hhdWRpbz1kaXNhYmxlZCBcCisgICAgLURvc3h2aWRlbz1kaXNhYmxlZCBcCisgICAgLURzaG91dDI9ZGlzYWJsZWQgXAorICAgIC1EdHdvbGFtZT1kaXNhYmxlZCBcCisgICAgLUR3YXZlZm9ybT1kaXNhYmxlZCBcCisiCisKK0ZJTEVTXyR7UE59LWVxdWFsaXplciArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wL3ByZXNldHMvKi5wcnMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1wYWNrYWdpbmcuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtcGFja2FnaW5nLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTdhMWI2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtcGFja2FnaW5nLmluYwpAQCAtMCwwICsxLDcwIEBACisjIFRoaXMgLmluYyBmaWxlIGNvbnRhaW5zIGZ1bmN0aW9uYWxpdHkgZm9yIGF1dG9tYXRpY2FsbHkgc3BsaXR0aW5nCisjIGJ1aWx0IHBsdWdpbnMgaW50byBpbmRpdmlkdWFsIHBhY2thZ2VzIGZvciBlYWNoIHBsdWdpbi4gQSAtbWV0YQorIyBwYWNrYWdlIGlzIGFsc28gc2V0IHVwIHRoYXQgaGFzIG5vIGZpbGVzIG9mIGl0cyBvd24sIGJ1dCBjb250YWlucworIyB0aGUgbmFtZXMgb2YgYWxsIHBsdWdpbiBwYWNrYWdlcyBpbiBpdHMgUkRFUEVORFMgbGlzdC4KKyMKKyMgVGhpcyBpcyBtYWlubHkgdXNlZCBieSB0aGUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtKiBwbHVnaW4gc2V0IHJlY2lwZXMsCisjIGJ1dCBjYW4gYmUgdXNlZCBpbiBhbnkgcmVjaXBlIHRoYXQgcHJvZHVjZXMgR1N0cmVhbWVyIHBsdWdpbnMuCisKK1BBQ0tBR0VTUExJVEZVTkNTX3ByZXBlbmQgPSAiIHNwbGl0X2dzdHJlYW1lcjEwX3BhY2thZ2VzICIKK1BBQ0tBR0VTUExJVEZVTkNTX2FwcGVuZCA9ICIgc2V0X2dzdHJlYW1lcjEwX21ldGFwa2dfcmRlcGVuZHMgIgorCitweXRob24gc3BsaXRfZ3N0cmVhbWVyMTBfcGFja2FnZXMgKCkgeworICAgIGdzdF9saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAnKQorICAgIHBvc3RpbnN0ID0gZC5nZXRWYXIoJ3BsdWdpbl9wb3N0aW5zdCcpCisgICAgZ2xpYmRpciA9IGQuZ2V0VmFyKCdsaWJkaXInKQorCisgICAgIyBHU3RyZWFtZXIgbGlicmFyaWVzCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZ2xpYmRpciwgcidebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnR1N0cmVhbWVyIDEuMCAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKKyAgICAjIEdTdHJlYW1lciBwbHVnaW4gc2hhcmVkIG9iamVjdHMKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBnc3RfbGliZGlyLCByJ2xpYmdzdCguKilcLnNvJCcsIGQuZXhwYW5kKCcke1BOfS0lcycpLCAnR1N0cmVhbWVyIDEuMCBwbHVnaW4gZm9yICVzJywgcG9zdGluc3Q9cG9zdGluc3QsIGV4dHJhX2RlcGVuZHM9JycpCisgICAgIyBHT2JqZWN0IGludHJvc3BlY3Rpb24gZmlsZXMgZm9yIEdTdHJlYW1lciBwbHVnaW5zCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZ2xpYmRpcisnL2dpcmVwb3NpdG9yeS0xLjAnLCByJ0dzdCguKiktMS4wXC50eXBlbGliJCcsIGQuZXhwYW5kKCcke1BOfS0lcy10eXBlbGliJyksICdHU3RyZWFtZXIgMS4wIHR5cGVsaWIgZmlsZSBmb3IgJXMnLCBwb3N0aW5zdD1wb3N0aW5zdCwgZXh0cmFfZGVwZW5kcz0nJykKKyAgICAjIFN0YXRpYyBHU3RyZWFtZXIgbGlicmFyaWVzIGZvciBkZXZlbG9wbWVudAorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGdzdF9saWJkaXIsIHInbGliZ3N0KC4qKVwuYSQnLCBkLmV4cGFuZCgnJHtQTn0tJXMtc3RhdGljZGV2JyksICdHU3RyZWFtZXIgMS4wIHBsdWdpbiBmb3IgJXMgKHN0YXRpYyBkZXZlbG9wbWVudCBmaWxlcyknLCBleHRyYV9kZXBlbmRzPScke1BOfS1zdGF0aWNkZXYnKQorfQorCitweXRob24gc2V0X2dzdHJlYW1lcjEwX21ldGFwa2dfcmRlcGVuZHMgKCkgeworICAgIGltcG9ydCBvcworICAgIGltcG9ydCBvZS51dGlscworCisgICAgIyBHbyB0aHJvdWdoIGFsbCBnZW5lcmF0ZWQgcGFja2FnZXMgKGV4Y2x1ZGluZyB0aGUgbWFpbiBwYWNrYWdlIGFuZAorICAgICMgdGhlIC1tZXRhIHBhY2thZ2UgaXRzZWxmKSBhbmQgYWRkIHRoZW0gdG8gdGhlIC1tZXRhIHBhY2thZ2UgYXMgUkRFUEVORFMuCisKKyAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCisgICAgbWV0YXBrZyA9ICBwbiArICctbWV0YScKKyAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJyArIG1ldGFwa2csICIxIikKKyAgICBkLnNldFZhcignRklMRVNfJyArIG1ldGFwa2csICIiKQorICAgIGJsYWNrbGlzdCA9IFsgcG4sIHBuICsgJy1tZXRhJyBdCisgICAgbWV0YXBrZ19yZGVwZW5kcyA9IFtdCisgICAgcGtnZGVzdCA9IGQuZ2V0VmFyKCdQS0dERVNUJykKKyAgICBmb3IgcGtnIGluIG9lLnV0aWxzLnBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtKGQpOgorICAgICAgICBpZiBwa2cgbm90IGluIGJsYWNrbGlzdCBhbmQgcGtnIG5vdCBpbiBtZXRhcGtnX3JkZXBlbmRzOgorICAgICAgICAgICAgIyBTZWUgaWYgdGhlIHBhY2thZ2UgaXMgZW1wdHkgYnkgbG9va2luZyBhdCB0aGUgY29udGVudHMgb2YgaXRzIFBLR0RFU1Qgc3ViZGlyZWN0b3J5LgorICAgICAgICAgICAgIyBJZiB0aGlzIHN1YmRpcmVjdG9yeSBpcyBlbXB0eSwgdGhlbiB0aGUgcGFja2FnZSBpcy4KKyAgICAgICAgICAgICMgRW1wdHkgcGFja2FnZXMgZG8gbm90IGdldCBhZGRlZCB0byB0aGUgbWV0YSBwYWNrYWdlJ3MgUkRFUEVORFMKKyAgICAgICAgICAgIHBrZ2RpciA9IG9zLnBhdGguam9pbihwa2dkZXN0LCBwa2cpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwa2dkaXIpOgorICAgICAgICAgICAgICAgIGRpcl9jb250ZW50cyA9IG9zLmxpc3RkaXIocGtnZGlyKSBvciBbXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkaXJfY29udGVudHMgPSBbXQorICAgICAgICAgICAgaXNfZW1wdHkgPSBsZW4oZGlyX2NvbnRlbnRzKSA9PSAwCisgICAgICAgICAgICBpZiBub3QgaXNfZW1wdHk6CisgICAgICAgICAgICAgICAgbWV0YXBrZ19yZGVwZW5kcy5hcHBlbmQocGtnKQorICAgIGQuc2V0VmFyKCdSREVQRU5EU18nICsgbWV0YXBrZywgJyAnLmpvaW4obWV0YXBrZ19yZGVwZW5kcykpCisgICAgZC5zZXRWYXIoJ0RFU0NSSVBUSU9OXycgKyBtZXRhcGtnLCBwbiArICcgbWV0YSBwYWNrYWdlJykKK30KKworIyBlYWNoIHBsdWdpbi1kZXYgZGVwZW5kcyBvbiBQTi1kZXYsIHBsdWdpbi1zdGF0aWNkZXYgb24gUE4tc3RhdGljZGV2CisjIHNvIHdlIG5lZWQgdGhlbSBldmVuIHdoZW4gZW1wdHkgKGxpa2UgaW4gZ3N0LXBsdWdpbnMtZ29vZCBjYXNlKQorQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKK0FMTE9XX0VNUFRZXyR7UE59LWRldiA9ICIxIgorQUxMT1dfRU1QVFlfJHtQTn0tc3RhdGljZGV2ID0gIjEiCisKK1BBQ0tBR0VTICs9ICIke1BOfS1hcHBzICR7UE59LW1ldGEgJHtQTn0tZ2xpYiIKKworRklMRVNfJHtQTn0gPSAiIgorRklMRVNfJHtQTn0tYXBwcyA9ICIke2JpbmRpcn0iCitGSUxFU18ke1BOfS1nbGliID0gIiR7ZGF0YWRpcn0vZ2xpYi0yLjAiCisKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICIke1BOfS1tZXRhIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNhYjMxOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3hpbmdtdXguYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT00Yzc3MWI4YWYxODg3MjQ4NTVjYjk5Y2FkZDM5MDA2OCIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsgJiBMR1BMdjIrIgotTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgotCi1TUkNfVVJJID0gIiBcCi0gICAgICAgICAgICBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLXVnbHkvZ3N0LXBsdWdpbnMtdWdseS0ke1BWfS50YXIueHogXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0gICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNjY4Nzk1OTAzY2I0OTcxZmJhOWFhODlhYmRlYTgzNjkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGJmOTEzYjJjYTUxOTVhYzNiNTNiNWUzYWRlMmRjN2M0NWQyMjU4NTA3NTUyZGRjODUwYzVmYTQyNTk2OGExZCIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0iCi0KLURFUEVORFMgKz0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCi0KLWluaGVyaXQgZ2V0dGV4dAotCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICAke0dTVFJFQU1FUl9PUkN9IFwKLSAgICBhNTJkZWMgbXBlZzJkZWMgXAotIgotCi1QQUNLQUdFQ09ORklHW2E1MmRlY10gICA9ICItLWVuYWJsZS1hNTJkZWMsLS1kaXNhYmxlLWE1MmRlYyxsaWJhNTIiCi1QQUNLQUdFQ09ORklHW2Ftcm5iXSAgICA9ICItLWVuYWJsZS1hbXJuYiwtLWRpc2FibGUtYW1ybmIsb3BlbmNvcmUtYW1yIgotUEFDS0FHRUNPTkZJR1thbXJ3Yl0gICAgPSAiLS1lbmFibGUtYW1yd2IsLS1kaXNhYmxlLWFtcndiLG9wZW5jb3JlLWFtciIKLVBBQ0tBR0VDT05GSUdbY2Rpb10gICAgID0gIi0tZW5hYmxlLWNkaW8sLS1kaXNhYmxlLWNkaW8sbGliY2RpbyIKLVBBQ0tBR0VDT05GSUdbZHZkcmVhZF0gID0gIi0tZW5hYmxlLWR2ZHJlYWQsLS1kaXNhYmxlLWR2ZHJlYWQsbGliZHZkcmVhZCIKLVBBQ0tBR0VDT05GSUdbbXBlZzJkZWNdID0gIi0tZW5hYmxlLW1wZWcyZGVjLC0tZGlzYWJsZS1tcGVnMmRlYyxtcGVnMmRlYyIKLVBBQ0tBR0VDT05GSUdbeDI2NF0gICAgID0gIi0tZW5hYmxlLXgyNjQsLS1kaXNhYmxlLXgyNjQseDI2NCIKLQotRVhUUkFfT0VDT05GICs9ICIgXAotICAgIC0tZGlzYWJsZS1zaWRwbGF5IFwKLSIKLQotRklMRVNfJHtQTn0tYW1ybmIgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9wcmVzZXRzL0dzdEFtcm5iRW5jLnBycyIKLUZJTEVTXyR7UE59LXgyNjQgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9wcmVzZXRzL0dzdFgyNjRFbmMucHJzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjE2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTEwODAwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjE2LjIuYmIKQEAgLTAsMCArMSwzOSBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1jb21tb24uaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3hpbmdtdXguYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT00Yzc3MWI4YWYxODg3MjQ4NTVjYjk5Y2FkZDM5MDA2OCIKKworTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsgJiBMR1BMdjIrIgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCitTUkNfVVJJID0gIiBcCisgICAgICAgICAgICBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLXVnbHkvZ3N0LXBsdWdpbnMtdWdseS0ke1BWfS50YXIueHogXAorICAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjEwMjgzZmY1ZWYxZTM0ZDQ2MmRkZTc3MDQyZTMyOWJkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU1MDA0MTViODY1ZThiNjI3NzVkNDc0MmNiYjlmMzcxNDZhNTBjYWVjZmMwZTdhNmZjMDE2MGQzYzU2MGZiY2EiCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy11Z2x5LSR7UFZ9IgorCitERVBFTkRTICs9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgorCitHU1RfUExVR0lOX1NFVF9IQVNfRVhBTVBMRVMgPSAiMCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgJHtHU1RSRUFNRVJfT1JDfSBcCisgICAgYTUyZGVjIG1wZWcyZGVjIFwKKyIKKworUEFDS0FHRUNPTkZJR1thNTJkZWNdICAgPSAiLURhNTJkZWM9ZW5hYmxlZCwtRGE1MmRlYz1kaXNhYmxlZCxsaWJhNTIiCitQQUNLQUdFQ09ORklHW2Ftcm5iXSAgICA9ICItRGFtcm5iPWVuYWJsZWQsLURhbXJuYj1kaXNhYmxlZCxvcGVuY29yZS1hbXIiCitQQUNLQUdFQ09ORklHW2FtcndiXSAgICA9ICItRGFtcndiZGVjPWVuYWJsZWQsLURhbXJ3YmRlYz1kaXNhYmxlZCxvcGVuY29yZS1hbXIiCitQQUNLQUdFQ09ORklHW2NkaW9dICAgICA9ICItRGNkaW89ZW5hYmxlZCwtRGNkaW89ZGlzYWJsZWQsbGliY2RpbyIKK1BBQ0tBR0VDT05GSUdbZHZkcmVhZF0gID0gIi1EZHZkcmVhZD1lbmFibGVkLC1EZHZkcmVhZD1kaXNhYmxlZCxsaWJkdmRyZWFkIgorUEFDS0FHRUNPTkZJR1ttcGVnMmRlY10gPSAiLURtcGVnMmRlYz1lbmFibGVkLC1EbXBlZzJkZWM9ZGlzYWJsZWQsbXBlZzJkZWMiCitQQUNLQUdFQ09ORklHW3gyNjRdICAgICA9ICItRHgyNjQ9ZW5hYmxlZCwtRHgyNjQ9ZGlzYWJsZWQseDI2NCIKKworRVhUUkFfT0VNRVNPTiArPSAiIFwKKyAgICAtRHNpZHBsYXk9ZGlzYWJsZWQgXAorIgorCitGSUxFU18ke1BOfS1hbXJuYiArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wL3ByZXNldHMvR3N0QW1ybmJFbmMucHJzIgorRklMRVNfJHtQTn0teDI2NCArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wL3ByZXNldHMvR3N0WDI2NEVuYy5wcnMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjMjRiMDUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotU1VNTUFSWSA9ICJQbHVnaW5zIGZvciB0aGUgR1N0cmVhbWVyIG11bHRpbWVkaWEgZnJhbWV3b3JrIDEueCIKLUhPTUVQQUdFID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PUdzdHJlYW1lciIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLQotREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgZ2xpYi0yLjAtbmF0aXZlIgotCi1TUkNfVVJJX2FwcGVuZCA9ICIgZmlsZTovL2d0ay1kb2MtdHdlYWtzLnBhdGNoIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGd0ay1kb2MKLQotYWNwYXRocyA9ICItSSAke1N9L2NvbW1vbi9tNCAtSSAke1N9L200IgotCi1MSUJWID0gIjEuMCIKLXJlcXVpcmUgZ3N0LXBsdWdpbnMtcGFja2FnZS5pbmMKLQotIyBPcmMgZW5hYmxlcyBydW50aW1lIEpJVCBjb21waWxhdGlvbiBvZiBkYXRhIHByb2Nlc3Npbmcgcm91dGluZXMgZnJvbSBPcmMKLSMgYnl0ZWNvZGUgdG8gU0lNRCBpbnN0cnVjdGlvbnMgZm9yIHZhcmlvdXMgYXJjaGl0ZWN0dXJlcyAoY3VycmVudGx5IFNTRSwgTU1YLAotIyBNSVBTLCBBbHRpdmVjIGFuZCBORU9OIGFyZSBzdXBwb3J0ZWQpLgotCi1HU1RSRUFNRVJfT1JDID89ICJvcmMiCi0KLVBBQ0tBR0VDT05GSUdbZGVidWddID0gIi0tZW5hYmxlLWRlYnVnLC0tZGlzYWJsZS1kZWJ1ZyIKLVBBQ0tBR0VDT05GSUdbb3JjXSA9ICItLWVuYWJsZS1vcmMsLS1kaXNhYmxlLW9yYyxvcmMgb3JjLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0tZW5hYmxlLXZhbGdyaW5kLC0tZGlzYWJsZS12YWxncmluZCx2YWxncmluZCIKLQotZXhwb3J0IE9SQ0MgPSAiJHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtiaW5kaXJ9L29yY2MiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1leGFtcGxlcyBcCi0iCi0KLWRlbGV0ZV9wa2dfbTRfZmlsZSgpIHsKLQkjIFRoaXMgbTQgZmlsZSBpcyBvdXQgb2YgZGF0ZSBhbmQgaXMgbWlzc2luZyBQS0dfQ09ORklHX1NZU1JPT1RfUEFUSCB0d2Vha3Mgd2hpY2ggd2UgbmVlZCBmb3IgaW50cm9zcGVjdGlvbgotCXJtICIke1N9L2NvbW1vbi9tNC9wa2cubTQiIHx8IHRydWUKLQlybSAtZiAiJHtTfS9jb21tb24vbTQvZ3RrLWRvYy5tNCIKLX0KLQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiIGRlbGV0ZV9wa2dfbTRfZmlsZSIKLQotUEFDS0FHRVNfRFlOQU1JQyA9ICJeJHtQTn0tLioiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHRlc3QuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB0ZXN0LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjk4MDY3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB0ZXN0LmluYwpAQCAtMCwwICsxLDIzIEBACitpbmhlcml0IHB0ZXN0LWdub21lCisKK1RFU1RfRklMRVNfUEFUSCA9ICIke2RhdGFkaXJ9L2luc3RhbGxlZC10ZXN0cy9nc3RyZWFtZXItMS4wL3Rlc3QtZmlsZXMiCitSVU5fUFRFU1RfRklMRSA9ICIke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QiCisKK0VYVFJBX09FTUVTT04gKz0gIi1EdGVzdC1maWxlcy1wYXRoPSR7VEVTVF9GSUxFU19QQVRIfSIKKworR1NUX1RFU1RfU1VJVEVfTkFNRSA/PSAiZ3N0cmVhbWVyLTEuMCIKKworIyBVc2luZyBkb19pbnN0YWxsX3B0ZXN0X2Jhc2UgaW5zdGVhZCBvZiBkb19pbnN0YWxsX3B0ZXN0LCBzaW5jZQorIyB0aGUgZGVmYXVsdCBkb19pbnN0YWxsX3B0ZXN0X2Jhc2UgaXMgaGFyZGNvZGVkIHRvIGV4cGVjdCBNYWtlZmlsZXMuCitkb19pbnN0YWxsX3B0ZXN0X2Jhc2UoKSB7CisgICAgIyBHZW5lcmF0ZSBydW4tcHRlc3QgZmlsZQorICAgIGVjaG8gIiMhL3Vzci9iaW4vZW52IHNoIiA+ICIke1JVTl9QVEVTVF9GSUxFfSIKKyAgICBlY2hvICJnbm9tZS1kZXNrdG9wLXRlc3RpbmctcnVubmVyICR7R1NUX1RFU1RfU1VJVEVfTkFNRX0iID4+ICIke1JVTl9QVEVTVF9GSUxFfSIKKyAgICBjaG1vZCAwNzU1ICIke1JVTl9QVEVTVF9GSUxFfSIKKworICAgICMgSW5zdGFsbCBhZGRpdGlvbmFsIGZpbGVzIHJlcXVpcmVkIGJ5IHRlc3RzCisgICAgaWYgWyAtZCAiJHtTfS90ZXN0cy9maWxlcyIgXSA7IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAiJHtEfS8ke1RFU1RfRklMRVNfUEFUSH0iCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAiJHtTfS90ZXN0cy9maWxlcyIvKiAiJHtEfS8ke1RFU1RfRklMRVNfUEFUSH0iCisgICAgZmkKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob24vMDAwMS1tZXNvbi5idWlsZC1maXgtYnVpbGRzLXdpdGgtcHl0aG9uLTMuOC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob24vMDAwMS1tZXNvbi5idWlsZC1maXgtYnVpbGRzLXdpdGgtcHl0aG9uLTMuOC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTMxMDhhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbi8wMDAxLW1lc29uLmJ1aWxkLWZpeC1idWlsZHMtd2l0aC1weXRob24tMy44LnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK0Zyb20gNjFjZmQxYjQ5ZGM4MmJhZjE0YmIzNmQ4OGI2YzViZTdiOGMzZDIzYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyIERlYyAyMDE5IDE4OjE2OjQxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lc29uLmJ1aWxkOiBmaXggYnVpbGRzIHdpdGggcHl0aG9uIDMuOAorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtcHl0aG9uL21lcmdlX3JlcXVlc3RzLzE0XQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBtZXNvbi5idWlsZCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IDFkYTgxZDUuLjNlMGRiMzggMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC0yNCw3ICsyNCw3IEBAIHB5Z29iamVjdF9kZXAgPSBkZXBlbmRlbmN5KCdweWdvYmplY3QtMy4wJywgZmFsbGJhY2s6IFsncHlnb2JqZWN0JywgJ3B5Z29iamVjdF9kCisgCisgcHltb2QgPSBpbXBvcnQoJ3B5dGhvbicpCisgcHl0aG9uID0gcHltb2QuZmluZF9pbnN0YWxsYXRpb24oZ2V0X29wdGlvbigncHl0aG9uJykpCistcHl0aG9uX2RlcCA9IHB5dGhvbi5kZXBlbmRlbmN5KHJlcXVpcmVkIDogdHJ1ZSkKKytweXRob25fZGVwID0gZGVwZW5kZW5jeSgncHl0aG9uMy1lbWJlZCcsIHJlcXVpcmVkIDogdHJ1ZSkKKyAKKyBweXRob25fYWJpX2ZsYWdzID0gcHl0aG9uLmdldF92YXJpYWJsZSgnQUJJRkxBR1MnLCAnJykKKyBweWxpYl9sb2MgPSBnZXRfb3B0aW9uKCdsaWJweXRob24tZGlyJykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbl8xLjE2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3MjJmMDIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbl8xLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgR1N0cmVhbWVyIDEuMCIKLUhPTUVQQUdFID0gImh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXB5dGhvbi8iCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMzRkZWFlNGUzOTVjYTA3ZTcyNWFiMDA3NmE1Zjc0MCIKLQotU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7UE5SRUFMfS8ke1BOUkVBTH0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gIjQ5OTY0NWZiZDE3OTBjNTg0NWMwMmEzOTk4ZGNjYzFiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI0NjljODk1NTEyNmY0MWI4Y2UwYmY2ODliNzAyOWYxODJjZDMwNWY0MjJiM2E4ZGYzNWI3ODBiZDgzNDc0ODkiCi0KLURFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIHB5dGhvbjMtcHlnb2JqZWN0IgotUkRFUEVORFNfJHtQTn0gKz0gImdzdHJlYW1lcjEuMCBweXRob24zLXB5Z29iamVjdCIKLQotUE5SRUFMID0gImdzdC1weXRob24iCi0KLVMgPSAiJHtXT1JLRElSfS8ke1BOUkVBTH0tJHtQVn0iCi0KLSMgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGlzIG1hbmRhdG9yeSBhbmQgY2Fubm90IGJlIGNvbmZpZ3VyZWQKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YSIKLVVOS05PV05fQ09ORklHVVJFX1dISVRFTElTVF9hcHBlbmQgPSAiIC0tZW5hYmxlLWludHJvc3BlY3Rpb24gLS1kaXNhYmxlLWludHJvc3BlY3Rpb24iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0dXRpbHMzLWJhc2UgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBmZWF0dXJlc19jaGVjawotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1saWJweXRob24tZGlyPSR7bGliZGlyfSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0KLSAgICAjIE5vdGUgdGhhdCB0aGlzIHBhcnRpY3VsYXIgZmluZCBsaW5lIGlzIHRha2VuIGZyb20gdGhlIERlYmlhbiBwYWNrYWdpbmcgZm9yCi0gICAgIyBnc3QtcHl0aG9uMS4wLgotICAgIGZpbmQgIiR7RH0iIFwKLSAgICAgICAgLW5hbWUgJyoucHljJyAtbyBcCi0gICAgICAgIC1uYW1lICcqLnB5bycgLW8gXAotICAgICAgICAtbmFtZSAnKi5sYScgLW8gXAotICAgICAgICAtbmFtZSAnbGliZ3N0cHl0aG9ucGx1Z2luKicgXAotICAgICAgICAtZGVsZXRlCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMDI0ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTYuMi5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgR1N0cmVhbWVyIDEuMCIKK0hPTUVQQUdFID0gImh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXB5dGhvbi8iCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMzRkZWFlNGUzOTVjYTA3ZTcyNWFiMDA3NmE1Zjc0MCIKKworU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7UE5SRUFMfS8ke1BOUkVBTH0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVzb24uYnVpbGQtZml4LWJ1aWxkcy13aXRoLXB5dGhvbi0zLjgucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNmFjNzA5NzY3MzM0ZDhkMGE3MWNiNGUwMTZmNmFiZWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjA4ZGYzMTQ4ZDczZDlmNDE2ZDAxNjU2NDczNzU4NWQ4ZWE3NjNkOTEyMDE3MzJkNDRiNWZlNjg4YzYyODhhOCIKKworREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgcHl0aG9uMy1weWdvYmplY3QiCitSREVQRU5EU18ke1BOfSArPSAiZ3N0cmVhbWVyMS4wIHB5dGhvbjMtcHlnb2JqZWN0IgorCitQTlJFQUwgPSAiZ3N0LXB5dGhvbiIKKworUyA9ICIke1dPUktESVJ9LyR7UE5SRUFMfS0ke1BWfSIKKworIyBnb2JqZWN0LWludHJvc3BlY3Rpb24gaXMgbWFuZGF0b3J5IGFuZCBjYW5ub3QgYmUgY29uZmlndXJlZAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gImdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIgorVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUX2FwcGVuZCA9ICIgaW50cm9zcGVjdGlvbiIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZGlzdHV0aWxzMy1iYXNlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZmVhdHVyZXNfY2hlY2sKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisKKyAgICAjIE5vdGUgdGhhdCB0aGlzIHBhcnRpY3VsYXIgZmluZCBsaW5lIGlzIHRha2VuIGZyb20gdGhlIERlYmlhbiBwYWNrYWdpbmcgZm9yCisgICAgIyBnc3QtcHl0aG9uMS4wLgorICAgIGZpbmQgIiR7RH0iIFwKKyAgICAgICAgLW5hbWUgJyoucHljJyAtbyBcCisgICAgICAgIC1uYW1lICcqLnB5bycgLW8gXAorICAgICAgICAtbmFtZSAnKi5sYScgLW8gXAorICAgICAgICAtbmFtZSAnbGliZ3N0cHl0aG9ucGx1Z2luKicgXAorICAgICAgICAtZGVsZXRlCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIvMDAwMS1tZXNvbi1idWlsZC1naXItZXZlbi13aGVuLWNyb3NzLWNvbXBpbGluZy1pZi1pbnRyb3NwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLzAwMDEtbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTYyYTUwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLzAwMDEtbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDk1Y2U5NTNlMzRjZDBlOWY1ZDQyY2U3OTAwYTk1NzJlN2JjOGNhNDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/VGltLVBoaWxpcHA9MjBNPUMzPUJDbGxlcj89IDx0aW1AY2VudHJpY3VsYXIuY29tPgorRGF0ZTogRnJpLCAxOCBPY3QgMjAxOSAwMDo0MjoxMiArMDEwMAorU3ViamVjdDogW1BBVENIXSBtZXNvbjogYnVpbGQgZ2lyIGV2ZW4gd2hlbiBjcm9zcy1jb21waWxpbmcgaWYgaW50cm9zcGVjdGlvbgorIHdhcyBlbmFibGVkIGV4cGxpY2l0bHkKKworVGhpcyBjYW4gYmUgbWFkZSB0byB3b3JrIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyB3aGVuCitjcm9zcy1jb21waWxpbmcsIHNvIGRlZmF1bHQgdG8gbm90IGJ1aWxkaW5nIGctaSBzdHVmZgord2hlbiBjcm9zcy1jb21waWxpbmcsIGJ1dCBhbGxvdyBpdCBpZiBpbnRyb3NwZWN0aW9uIHdhcworZW5hYmxlZCBleHBsaWNpdGx5IHZpYSAtRGludHJvc3BlY3Rpb249ZW5hYmxlZC4KKworU2VlIGdzdHJlYW1lci9nc3RyZWFtZXIjNDU0IGFuZCBnc3RyZWFtZXIvZ3N0cmVhbWVyIzM4MS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbOTVjZTk1M2UzNGNkMGU5ZjVkNDJjZTc5MDBhOTU3MmU3YmM4Y2E0N10KKworU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8Y3JnNzQ3NUBtYWlsYm94Lm9yZz4KKy0tLQorIG1lc29uLmJ1aWxkIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggZTFlM2IxZC4uM2Y0NWYwZSAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTE3Myw3ICsxNzMsNyBAQCBlbmRpZgorIAorIGdpciA9IGZpbmRfcHJvZ3JhbSgnZy1pci1zY2FubmVyJywgcmVxdWlyZWQgOiBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykpCisgZ25vbWUgPSBpbXBvcnQoJ2dub21lJykKKy1idWlsZF9naXIgPSBnaXIuZm91bmQoKSBhbmQgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkKKytidWlsZF9naXIgPSBnaXIuZm91bmQoKSBhbmQgKG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIGdldF9vcHRpb24oJ2ludHJvc3BlY3Rpb24nKS5lbmFibGVkKCkpCisgZ2lyX2luaXRfc2VjdGlvbiA9IFsgJy0tYWRkLWluaXQtc2VjdGlvbj1leHRlcm4gdm9pZCBnc3RfaW5pdChnaW50KixnY2hhcioqKTsnICsgXAorICAgICAnZ19zZXRlbnYoIkdTVF9SRUdJU1RSWV8xLjAiLCAiQDBAIiwgVFJVRSk7Jy5mb3JtYXQobWVzb24uY3VycmVudF9idWlsZF9kaXIoKSArICcvZ2lyX2VtcHR5X3JlZ2lzdHJ5LnJlZycpICsgXAorICAgICAnZ19zZXRlbnYoIkdTVF9QTFVHSU5fUEFUSF8xXzAiLCAiIiwgVFJVRSk7JyArIFwKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTMwMmVmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIkEgbGlicmFyeSBvbiB0b3Agb2YgR1N0cmVhbWVyIGZvciBidWlsZGluZyBhbiBSVFNQIHNlcnZlciIKLUhPTUVQQUdFID0gImh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXJ0c3Atc2VydmVyLyIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQiCi0KLURFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCi0KLVBOUkVBTCA9ICJnc3QtcnRzcC1zZXJ2ZXIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1BOUkVBTH0vJHtQTlJFQUx9LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3RrLWRvYy10d2Vha3MucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzODBkNmE0MmU4NTZjMzJmY2VmYTUwOGFkNTcxMjllMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMGFiYWNhZDJmODZmNjBkNjM3ODFkMmIyNDQ0M2M1NjY4NzMzZThiMDg2NjRiYmVmOTQxMjQ5MDZkNzAwMTQ0IgotCi1TID0gIiR7V09SS0RJUn0vJHtQTlJFQUx9LSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZXhhbXBsZXMgLS1kaXNhYmxlLXRlc3RzIgotCi0jIFN0YXJ0aW5nIHdpdGggMS44LjAgZ3N0LXJ0c3Atc2VydmVyIGluY2x1ZGVzIGRlcGVuZGVuY3ktbGVzcyBwbHVnaW5zIGFzIHdlbGwKLUxJQlYgPSAiMS4wIgotcmVxdWlyZSBnc3QtcGx1Z2lucy1wYWNrYWdlLmluYwotCi1kZWxldGVfcGtnX200X2ZpbGUoKSB7Ci0gICAgICAgICMgVGhpcyBtNCBmaWxlIGlzIG91dCBvZiBkYXRlIGFuZCBpcyBtaXNzaW5nIFBLR19DT05GSUdfU1lTUk9PVF9QQVRIIHR3ZWFrcyB3aGljaCB3ZSBuZWVkIGZvciBpbnRyb3NwZWN0aW9uCi0gICAgICAgIHJtICIke1N9L2NvbW1vbi9tNC9wa2cubTQiIHx8IHRydWUKLX0KLQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiIGRlbGV0ZV9wa2dfbTRfZmlsZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjE2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyYzNjODMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xNi4yLmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiQSBsaWJyYXJ5IG9uIHRvcCBvZiBHU3RyZWFtZXIgZm9yIGJ1aWxkaW5nIGFuIFJUU1Agc2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtcnRzcC1zZXJ2ZXIvIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCIKKworREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKKworUE5SRUFMID0gImdzdC1ydHNwLXNlcnZlciIKKworU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7UE5SRUFMfS8ke1BOUkVBTH0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjhhOTk4NzI1ODIwYzc3MWJhNDViZTZlMThiZmRmNzNhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlMDdhMjgzN2IzYjA0ODIwY2U2ODI2NGE0OTA5ZjcwYzIyMWI4NWRiZmYwY2VkZTc5MjZlOWNkYmIxZGMyNmUiCisKK1MgPSAiJHtXT1JLRElSfS8ke1BOUkVBTH0tJHtQVn0iCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworRVhUUkFfT0VNRVNPTiArPSAiIFwKKyAgICAtRGV4YW1wbGVzPWRpc2FibGVkIFwKKyAgICAtRHRlc3RzPWRpc2FibGVkIFwKKyIKKworR0lSX01FU09OX0VOQUJMRV9GTEFHID0gImVuYWJsZWQiCitHSVJfTUVTT05fRElTQUJMRV9GTEFHID0gImRpc2FibGVkIgorCisjIFN0YXJ0aW5nIHdpdGggMS44LjAgZ3N0LXJ0c3Atc2VydmVyIGluY2x1ZGVzIGRlcGVuZGVuY3ktbGVzcyBwbHVnaW5zIGFzIHdlbGwKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtcGFja2FnaW5nLmluYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpLzAwMDEtZ3N0LXZhYXBpLU1ha2VmaWxlLmFtLUFkZC1FR0xfQ0ZMQUdTLXRvLWxpYmdzdHZhYXBpLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaS8wMDAxLWdzdC12YWFwaS1NYWtlZmlsZS5hbS1BZGQtRUdMX0NGTEFHUy10by1saWJnc3R2YWFwaS0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3Yjg5ODQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpLzAwMDEtZ3N0LXZhYXBpLU1ha2VmaWxlLmFtLUFkZC1FR0xfQ0ZMQUdTLXRvLWxpYmdzdHZhYXBpLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gNTQwM2E4OWU2YTdhYzcyYTIzZTAyMjEwNzVjMGMxOWI1Zjg1YTAyMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZhYmlvIEJlcnRvbiA8ZmFiaW8uYmVydG9uQG9zc3lzdGVtcy5jb20uYnI+Ci1EYXRlOiBXZWQsIDEzIEp1biAyMDE4IDA5OjA5OjI1IC0wMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdzdC92YWFwaS9NYWtlZmlsZS5hbTogQWRkIEVHTF9DRkxBR1MgdG8gbGliZ3N0dmFhcGkgQ0ZMQUdTCi1Pcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgotCi1XZSBuZWVkIHRoaXMgdG8gcGFzcyBjb3JyZWN0bHkgRUdMIENGTEFHUyB3aGVuIGJ1aWxkaW5nIHdpdGggRUdMIHN1cHBvcnQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBGYWJpbyBCZXJ0b24gPGZhYmlvLmJlcnRvbkBvc3N5c3RlbXMuY29tLmJyPgotLS0tCi0gZ3N0L3ZhYXBpL01ha2VmaWxlLmFtIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ3N0L3ZhYXBpL01ha2VmaWxlLmFtIGIvZ3N0L3ZhYXBpL01ha2VmaWxlLmFtCi1pbmRleCBiMjk5YWM5OC4uZDZjYWI3MWYgMTAwNjQ0Ci0tLS0gYS9nc3QvdmFhcGkvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC92YWFwaS9NYWtlZmlsZS5hbQotQEAgLTI0LDYgKzI0LDEwIEBAIGxpYmdzdHZhYXBpX0xJQlMgKz0gJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92YWFwaS9saWJnc3R2YWFwaS1nbHgubGEKLSBlbmRpZgotIAotIGlmIFVTRV9FR0wKLStsaWJnc3R2YWFwaV9DRkxBR1MgKz0gXAotKwkkKEVHTF9DRkxBR1MpCVwKLSsJJChOVUxMKQotKwotIGxpYmdzdHZhYXBpX0xJQlMgKz0gJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92YWFwaS9saWJnc3R2YWFwaS1lZ2wubGEKLSBlbmRpZgotIAotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaV8xLjE2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4YzIxMjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVNVTU1BUlkgPSAiVkEtQVBJIHN1cHBvcnQgdG8gR1N0cmVhbWVyIgotREVTQ1JJUFRJT04gPSAiZ3N0cmVhbWVyLXZhYXBpIGNvbnNpc3RzIG9mIGEgY29sbGVjdGlvbiBvZiBWQS1BUEkgXAotYmFzZWQgcGx1Z2lucyBmb3IgR1N0cmVhbWVyIGFuZCBoZWxwZXIgbGlicmFyaWVzOiBgdmFhcGlkZWNvZGUnLCBcCi1gdmFhcGljb252ZXJ0JywgYW5kIGB2YWFwaXNpbmsnLiIKLQotUkVBTFBOID0gImdzdHJlYW1lci12YWFwaSIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1JFQUxQTn0vJHtSRUFMUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdzdC12YWFwaS1NYWtlZmlsZS5hbS1BZGQtRUdMX0NGTEFHUy10by1saWJnc3R2YWFwaS0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS12YWFwc2luay1kb3duZ3JhZGUtdG8tbWFyZ2luYWwucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxNWIwOGY3Njc3NzM1OWQ4N2IwYjRhNTYxZGIwNWYxZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjYjU3MGY2ZjFlNzhjYjM2NGZiZTNjNGZiODc1MTgyNGVlOWRiMGM5NDJiYTYxYjYyMzgwYjliNWFiYjc2MDNhIgotCi1TID0gIiR7V09SS0RJUn0vJHtSRUFMUE59LSR7UFZ9IgotREVQRU5EUyA9ICJsaWJ2YSBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPz0gIm9wZW5nbCIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgotCi0jIE9wZW5HTCBwYWNrYWdlY29uZmlnIGZhY3RvcmVkIG91dCB0byBtYWtlIGl0IGVhc3kgZm9yIGRpc3Ryb3MKLSMgYW5kIEJTUCBsYXllcnMgdG8gcGljayBlaXRoZXIgZ2x4LCBlZ2wsIG9yIG5vIEdMLiBCeSBkZWZhdWx0LAotIyB0cnkgZGV0ZWN0aW5nIFgxMSBmaXJzdCwgYW5kIGlmIGZvdW5kICh3aXRoIE9wZW5HTCksIHVzZSBHTFgsCi0jIG90aGVyd2lzZSB0cnkgdG8gY2hlY2sgaWYgRUdMIGNhbiBiZSB1c2VkLgotUEFDS0FHRUNPTkZJR19HTCA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgb3BlbmdsJywgJ2dseCcsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAgICAgJ29wZW5nbCcsICdlZ2wnLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLCBkKSwgZCl9IgotCi1QQUNLQUdFQ09ORklHID8/PSAiZHJtIFwKLSAgICAgICAgICAgICAgICAgICAke1BBQ0tBR0VDT05GSUdfR0x9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1tkcm1dID0gIi0tZW5hYmxlLWRybSwtLWRpc2FibGUtZHJtLHVkZXYgbGliZHJtIgotUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbCwtLWRpc2FibGUtZWdsLHZpcnR1YWwvZWdsIgotUEFDS0FHRUNPTkZJR1tnbHhdID0gIi0tZW5hYmxlLWdseCwtLWRpc2FibGUtZ2x4LHZpcnR1YWwvbGliZ2wiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSx2aXJ0dWFsL2xpYngxMSBsaWJ4cmFuZHIgbGlieHJlbmRlciIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItKi8qLnNvIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLSovLmRlYnVnIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLSovKi5sYSAke2xpYmRpcn0vZ3N0cmVhbWVyLSovKi5hIgotRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtiaW5kaXJ9LyoiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGlfMS4xNi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmVkZjI1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTYuMi5iYgpAQCAtMCwwICsxLDU3IEBACitTVU1NQVJZID0gIlZBLUFQSSBzdXBwb3J0IHRvIEdTdHJlYW1lciIKK0RFU0NSSVBUSU9OID0gImdzdHJlYW1lci12YWFwaSBjb25zaXN0cyBvZiBhIGNvbGxlY3Rpb24gb2YgVkEtQVBJIFwKK2Jhc2VkIHBsdWdpbnMgZm9yIEdTdHJlYW1lciBhbmQgaGVscGVyIGxpYnJhcmllczogYHZhYXBpZGVjb2RlJywgXAorYHZhYXBpY29udmVydCcsIGFuZCBgdmFhcGlzaW5rJy4iCisKK1JFQUxQTiA9ICJnc3RyZWFtZXItdmFhcGkiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtSRUFMUE59LyR7UkVBTFBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS12YWFwc2luay1kb3duZ3JhZGUtdG8tbWFyZ2luYWwucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxM2Y3Y2I2YTY0YmRlMjRlNjdmNTYzMzc3NDg3ZGNjZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxOTFkZTdiMGFiNjRhODVkZDA4NzVjOTkwNzIxZTdiZTk1NTE4ZjYwZTJhOTEwNmJlY2ExNjIwMDRlZDdjNjAxIgorCitTID0gIiR7V09SS0RJUn0vJHtSRUFMUE59LSR7UFZ9IgorREVQRU5EUyA9ICJsaWJ2YSBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQiCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIGd0ay1kb2MgZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA/PSAib3BlbmdsIgorCitFWFRSQV9PRU1FU09OICs9ICIgXAorICAgIC1EZXhhbXBsZXM9ZGlzYWJsZWQgXAorIgorCitHVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCitHVEtET0NfTUVTT05fRU5BQkxFX0ZMQUcgPSAiZW5hYmxlZCIKK0dUS0RPQ19NRVNPTl9ESVNBQkxFX0ZMQUcgPSAiZGlzYWJsZWQiCisKK1BBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKKworIyBPcGVuR0wgcGFja2FnZWNvbmZpZyBmYWN0b3JlZCBvdXQgdG8gbWFrZSBpdCBlYXN5IGZvciBkaXN0cm9zCisjIGFuZCBCU1AgbGF5ZXJzIHRvIHBpY2sgZWl0aGVyIGdseCwgZWdsLCBvciBubyBHTC4gQnkgZGVmYXVsdCwKKyMgdHJ5IGRldGVjdGluZyBYMTEgZmlyc3QsIGFuZCBpZiBmb3VuZCAod2l0aCBPcGVuR0wpLCB1c2UgR0xYLAorIyBvdGhlcndpc2UgdHJ5IHRvIGNoZWNrIGlmIEVHTCBjYW4gYmUgdXNlZC4KK1BBQ0tBR0VDT05GSUdfR0wgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIG9wZW5nbCcsICdnbHgnLCBcCisgICAgICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgICAgICdvcGVuZ2wnLCAnZWdsJywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywgZCksIGQpfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImRybSBlbmNvZGVycyBcCisgICAgICAgICAgICAgICAgICAgJHtQQUNLQUdFQ09ORklHX0dMfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbZHJtXSA9ICItRHdpdGhfZHJtPXllcywtRHdpdGhfZHJtPW5vLHVkZXYgbGliZHJtIgorUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi1Ed2l0aF9lZ2w9eWVzLC1Ed2l0aF9lZ2w9bm8sdmlydHVhbC9lZ2wiCitQQUNLQUdFQ09ORklHW2VuY29kZXJzXSA9ICItRHdpdGhfZW5jb2RlcnM9eWVzLC1Ed2l0aF9lbmNvZGVycz1ubyIKK1BBQ0tBR0VDT05GSUdbZ2x4XSA9ICItRHdpdGhfZ2x4PXllcywtRHdpdGhfZ2x4PW5vLHZpcnR1YWwvbGliZ2wiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1Ed2l0aF93YXlsYW5kPXllcywtRHdpdGhfd2F5bGFuZD1ubyx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1Ed2l0aF94MTE9eWVzLC1Ed2l0aF94MTE9bm8sdmlydHVhbC9saWJ4MTEgbGlieHJhbmRyIGxpYnhyZW5kZXIiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLSovKi5zbyIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0qLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0qLyouYSIKK0ZJTEVTXyR7UE59LXRlc3RzID0gIiR7YmluZGlyfS8qIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1nc3QtZ3N0cGx1Z2lubG9hZGVyLmMtd2hlbi1lbnYtdmFyLWlzLXNldC1kby1ub3QtZmFsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDEtZ3N0LWdzdHBsdWdpbmxvYWRlci5jLXdoZW4tZW52LXZhci1pcy1zZXQtZG8tbm90LWZhbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1nc3QtZ3N0cGx1Z2lubG9hZGVyLmMtd2hlbi1lbnYtdmFyLWlzLXNldC1kby1ub3QtZmFsLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMS1nc3QtZ3N0cGx1Z2lubG9hZGVyLmMtd2hlbi1lbnYtdmFyLWlzLXNldC1kby1ub3QtZmFsLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMi1tZXNvbi1idWlsZC1naXItZXZlbi13aGVuLWNyb3NzLWNvbXBpbGluZy1pZi1pbnRyb3NwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDItbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWQ3MTk4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDItbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDM1ZGI0YTI0MzNmYmRmODYxMmNmOThiNWFhYjViMTRhZWI1MzcyZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/VGltLVBoaWxpcHA9MjBNPUMzPUJDbGxlcj89IDx0aW1AY2VudHJpY3VsYXIuY29tPgorRGF0ZTogVGh1LCAxNyBPY3QgMjAxOSAxMjoxMzozNSArMDEwMAorU3ViamVjdDogW1BBVENIXSBtZXNvbjogYnVpbGQgZ2lyIGV2ZW4gd2hlbiBjcm9zcy1jb21waWxpbmcgaWYgaW50cm9zcGVjdGlvbgorIHdhcyBlbmFibGVkIGV4cGxpY2l0bHkKKworVGhpcyBjYW4gYmUgbWFkZSB0byB3b3JrIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyB3aGVuCitjcm9zcy1jb21waWxpbmcsIHNvIGRlZmF1bHQgdG8gbm90IGJ1aWxkaW5nIGctaSBzdHVmZgord2hlbiBjcm9zcy1jb21waWxpbmcsIGJ1dCBhbGxvdyBpdCBpZiBpbnRyb3NwZWN0aW9uIHdhcworZW5hYmxlZCBleHBsaWNpdGx5IHZpYSAtRGludHJvc3BlY3Rpb249ZW5hYmxlZC4KKworRml4ZXMgIzQ1NCBhbmQgIzM4MS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbMzVkYjRhMjQzM2ZiZGY4NjEyY2Y5OGI1YWFiNWIxNGFlYjUzNzJmOF0KKworU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8Y3JnNzQ3NUBtYWlsYm94Lm9yZz4KKy0tLQorIG1lc29uLmJ1aWxkIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggOTBkOThkOGViLi5hNDdlN2YzNGUgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC00NjYsNyArNDY2LDcgQEAgcnRfbGliID0gY2MuZmluZF9saWJyYXJ5KCdydCcsIHJlcXVpcmVkIDogZmFsc2UpCisgZ2lyID0gZmluZF9wcm9ncmFtKCdnLWlyLXNjYW5uZXInLCByZXF1aXJlZCA6IGdldF9vcHRpb24oJ2ludHJvc3BlY3Rpb24nKSkKKyBnbm9tZSA9IGltcG9ydCgnZ25vbWUnKQorIAorLWJ1aWxkX2dpciA9IGdpci5mb3VuZCgpIGFuZCBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKQorK2J1aWxkX2dpciA9IGdpci5mb3VuZCgpIGFuZCAobm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgZ2V0X29wdGlvbignaW50cm9zcGVjdGlvbicpLmVuYWJsZWQoKSkKKyAKKyBnaXJfaW5pdF9zZWN0aW9uID0gWyAnLS1hZGQtaW5pdC1zZWN0aW9uPWV4dGVybiB2b2lkIGdzdF9pbml0KGdpbnQqLGdjaGFyKiopOycgKyBcCisgICAgICdnX3NldGVudigiR1NUX1JFR0lTVFJZX0RJU0FCTEUiLCAieWVzIiwgVFJVRSk7JyArIFwKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDAzLW1lc29uLUFkZC12YWxncmluZC1mZWF0dXJlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDMtbWVzb24tQWRkLXZhbGdyaW5kLWZlYXR1cmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU1MzM0MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDAzLW1lc29uLUFkZC12YWxncmluZC1mZWF0dXJlLnBhdGNoCkBAIC0wLDAgKzEsNzQgQEAKK0Zyb20gZjZjNzk3M2MwM2Q5YmE3ZGFiNjBjNDk2ZTc2OGM1ZTZjNGVlODI0YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENhcmxvcyBSYWZhZWwgR2lhbmkgPGNyZzc0NzVAbWFpbGJveC5vcmc+CitEYXRlOiBTdW4sIDIwIE9jdCAyMDE5IDEwOjM2OjQ0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lc29uOiBBZGQgdmFsZ3JpbmQgZmVhdHVyZQorCitUaGlzIGFsbG93cyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIFZhbGdyaW5kIHN1cHBvcnQuIFNpbmNlIFZhbGdyaW5kIGlzCithbiBleHRlcm5hbCBkZXBlbmRlbmN5LCBzdWNoIGEgZmVhdHVyZSBpcyBuZWVkZWQgYnkgYnVpbGQgZW52aXJvbmVtbnRzCitzdWNoIGFzIFlvY3RvIHRvIG1ha2Ugc3VyZSBidWlsZHMgYXJlIGRldGVybWluaXN0aWMuIFRoZXNlIGNoYW5nZXMgYWxzbworYWRkIG1vcmUgVmFsZ3JpbmQgc3BlY2lmaWMgY29uZmlndXJlIGxvZyBvdXRwdXQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxjcmc3NDc1QG1haWxib3gub3JnPgorLS0tCisgbWVzb24uYnVpbGQgICAgICAgfCAyMyArKysrKysrKysrKysrKysrKysrKysrLQorIG1lc29uX29wdGlvbnMudHh0IHwgIDEgKworIDIgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggYjU1ZWNjNS4uNDc1MTc2MSAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTE5OSw3ICsxOTksNiBAQCBjaGVja19oZWFkZXJzID0gWworICAgJ3N5cy93YWl0LmgnLAorICAgJ3Vjb250ZXh0LmgnLAorICAgJ3VuaXN0ZC5oJywKKy0gICd2YWxncmluZC92YWxncmluZC5oJywKKyAgICdzeXMvcmVzb3VyY2UuaCcsCisgXQorIAorQEAgLTIxNCw2ICsyMTMsMjggQEAgZm9yZWFjaCBoIDogY2hlY2tfaGVhZGVycworICAgZW5kaWYKKyBlbmRmb3JlYWNoCisgCisrdmFsZ3JpbmRfb3B0aW9uID0gZ2V0X29wdGlvbigndmFsZ3JpbmQnKQorK2lmIHZhbGdyaW5kX29wdGlvbi5kaXNhYmxlZCgpCisrICBtZXNzYWdlKCdWYWxncmluZCBzdXBwb3J0IG5vdCByZXF1ZXN0ZWQ7IGRpc2FibGVkLicpCisrZWxzZQorKyAgdmFsZ3JpbmRfaGVhZGVyID0gJ3ZhbGdyaW5kL3ZhbGdyaW5kLmgnCisrICBoYXNfdmFsZ3JpbmRfaGVhZGVyID0gY2MuaGFzX2hlYWRlcih2YWxncmluZF9oZWFkZXIpCisrICBpZiBoYXNfdmFsZ3JpbmRfaGVhZGVyCisrICAgIG1lc3NhZ2UoJ1ZhbGdyaW5kIHN1cHBvcnQgcmVxdWVzdGVkLCBhbmQgaGVhZGVyICcgKyB2YWxncmluZF9oZWFkZXIgKyBcCisrICAgICAgICAnIGZvdW5kLiBFbmFibGVkIFZhbGdyaW5kIHN1cHBvcnQuJykKKysgICAgZGVmaW5lID0gJ0hBVkVfJyArIHZhbGdyaW5kX2hlYWRlci51bmRlcnNjb3JpZnkoKS50b191cHBlcigpCisrICAgIGNkYXRhLnNldChkZWZpbmUsIDEpCisrICBlbHNlCisrICAgIGlmIHZhbGdyaW5kX29wdGlvbi5lbmFibGVkKCkKKysgICAgICBlcnJvcignVmFsZ3JpbmQgc3VwcG9ydCByZXF1ZXN0ZWQgYW5kIHNldCBhcyByZXF1aXJlZCwgYnV0IGhlYWRlciAnICsgXAorKyAgICAgICAgdmFsZ3JpbmRfaGVhZGVyICsgJyBub3QgZm91bmQuJykKKysgICAgZWxzZQorKyAgICAgIG1lc3NhZ2UoJ1ZhbGdyaW5kIHN1cHBvcnQgcmVxdWVzdGVkLCBidXQgaGVhZGVyICcgKyB2YWxncmluZF9oZWFkZXIgKyBcCisrICAgICAgICAnIG5vdCBmb3VuZC4gRGlzYWJsaW5nIFZhbGdyaW5kIHN1cHBvcnQuJykKKysgICAgZW5kaWYKKysgIGVuZGlmCisrZW5kaWYKKysKKyBpZiBjYy5oYXNfbWVtYmVyKCdzdHJ1Y3QgdG0nLCAndG1fZ210b2ZmJywgcHJlZml4IDogJyNpbmNsdWRlIDx0aW1lLmg+JykKKyAgIGNkYXRhLnNldCgnSEFWRV9UTV9HTVRPRkYnLCAxKQorIGVuZGlmCitkaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dAoraW5kZXggZTdmZjdiYS4uOGFmZGUzOSAxMDA2NDQKKy0tLSBhL21lc29uX29wdGlvbnMudHh0CisrKysgYi9tZXNvbl9vcHRpb25zLnR4dAorQEAgLTE5LDYgKzE5LDcgQEAgb3B0aW9uKCdtZW1vcnktYWxpZ25tZW50JywgdHlwZTogJ2NvbWJvJywKKyAKKyAjIEZlYXR1cmUgb3B0aW9ucworIG9wdGlvbignY2hlY2snLCB0eXBlIDogJ2ZlYXR1cmUnLCB2YWx1ZSA6ICdhdXRvJywgZGVzY3JpcHRpb24gOiAnQnVpbGQgdW5pdCB0ZXN0IGxpYnJhcmllcycpCisrb3B0aW9uKCd2YWxncmluZCcsIHR5cGUgOiAnZmVhdHVyZScsIHZhbHVlIDogJ2F1dG8nLCBkZXNjcmlwdGlvbiA6ICdFbmFibGUgVmFsZ3JpbmQgc3VwcG9ydCcpCisgb3B0aW9uKCdsaWJ1bndpbmQnLCB0eXBlIDogJ2ZlYXR1cmUnLCB2YWx1ZSA6ICdhdXRvJywgZGVzY3JpcHRpb24gOiAnVXNlIGxpYnVud2luZCB0byBnZW5lcmF0ZSBiYWNrdHJhY2VzJykKKyBvcHRpb24oJ2xpYmR3JywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIGRlc2NyaXB0aW9uIDogJ1VzZSBsaWJkdyB0byBnZW5lcmF0ZSBiZXR0ZXIgYmFja3RyYWNlcyBmcm9tIGxpYnVud2luZCcpCisgb3B0aW9uKCdkYmdoZWxwJywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIGRlc2NyaXB0aW9uIDogJ1VzZSBkYmdoZWxwIHRvIGdlbmVyYXRlIGJhY2t0cmFjZXMnKQorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDQtbWVzb24tQWRkLW9wdGlvbi1mb3ItaW5zdGFsbGVkLXRlc3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDQtbWVzb24tQWRkLW9wdGlvbi1mb3ItaW5zdGFsbGVkLXRlc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNmM0NGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwNC1tZXNvbi1BZGQtb3B0aW9uLWZvci1pbnN0YWxsZWQtdGVzdHMucGF0Y2gKQEAgLTAsMCArMSwyNTcgQEAKK0Zyb20gYjg0MzQwMDI4NDc1MTk2ODg2Mjc1MWRmZTkzODUzZjE1MTU1MWM2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENhcmxvcyBSYWZhZWwgR2lhbmkgPGNyZzc0NzVAbWFpbGJveC5vcmc+CitEYXRlOiBGcmksIDI1IE9jdCAyMDE5IDAwOjA2OjI2ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lc29uOiBBZGQgb3B0aW9uIGZvciBpbnN0YWxsZWQgdGVzdHMKKworVGhpcyBhZGRzIGFuIG9wdGlvbiBmb3IgcHJvZHVjaW5nIGluc3RhbGxlZCB2ZXJzaW9ucyBvZiB0aGUgdW5pdCB0ZXN0cy4KK1RoZXNlIHZlcnNpb25zIGRvbid0IG5lZWQgbWVzb24gdG8gcnVuIChvbmx5IGEgc21hbGwgc2hlbGwgc2NyaXB0KS4gVGhpcworbWFrZXMgaXQgZWFzaWVyIHRvIHJ1biBjcm9zcyBjb21waWxlZCB0ZXN0cyBvbiBhIHRhcmdldCBtYWNoaW5lLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8Y3JnNzQ3NUBtYWlsYm94Lm9yZz4KKy0tLQorIGJ1aWxkLWF1eC9nZW4taW5zdGFsbGVkLXRlc3QtZGVzYy5weSAgICAgfCAxOCArKysrKysKKyBidWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LXNoc2NyaXB0LnB5IHwgMjUgKysrKysrKysKKyBtZXNvbl9vcHRpb25zLnR4dCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKworIHRlc3RzL2NoZWNrL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgfCA0NiArKysrKysrKysrKysrLQorIHRlc3RzL2ZpbGVzL3Rlc3RmaWxlICAgICAgICAgICAgICAgICAgICAgfCA4MCArKysrKysrKysrKysrKysrKysrKysrKysKKyA1IGZpbGVzIGNoYW5nZWQsIDE3MCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGJ1aWxkLWF1eC9nZW4taW5zdGFsbGVkLXRlc3QtZGVzYy5weQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBidWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LXNoc2NyaXB0LnB5CisgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2ZpbGVzL3Rlc3RmaWxlCisKK2RpZmYgLS1naXQgYS9idWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LWRlc2MucHkgYi9idWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LWRlc2MucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi42OWU4YTBmCistLS0gL2Rldi9udWxsCisrKysgYi9idWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LWRlc2MucHkKK0BAIC0wLDAgKzEsMTggQEAKKytpbXBvcnQgc3lzCisraW1wb3J0IG9zCisraW1wb3J0IGFyZ3BhcnNlCisrCisrZGVmIHdyaXRlX3RlbXBsYXRlKGZpbGVuYW1lLCBkYXRhKToKKysgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAndycpIGFzIGY6CisrICAgICAgICBmLndyaXRlKGRhdGEpCisrCisrZGVmIGJ1aWxkX3RlbXBsYXRlKHRlc3RkaXIsIHRlc3RuYW1lKToKKysgICAgcmV0dXJuICJbVGVzdF1cblR5cGU9c2Vzc2lvblxuRXhlYz17fVxuIi5mb3JtYXQob3MucGF0aC5qb2luKHRlc3RkaXIsIHRlc3RuYW1lKSkKKysKKythcmdwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nR2VuZXJhdGUgaW5zdGFsbGVkLXRlc3QgZGF0YS4nKQorK2FyZ3BhcnNlci5hZGRfYXJndW1lbnQoJy0tdGVzdC1leGVjZGlyJywgbWV0YXZhcj0nZGlyJywgcmVxdWlyZWQ9VHJ1ZSwgaGVscD0nSW5zdGFsbGVkIHRlc3QgZGlyZWN0b3J5JykKKythcmdwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXRlc3RuYW1lJywgbWV0YXZhcj0nbmFtZScsIHJlcXVpcmVkPVRydWUsIGhlbHA9J0luc3RhbGxlZCB0ZXN0IG5hbWUnKQorK2FyZ3BhcnNlci5hZGRfYXJndW1lbnQoJy0tb3V0cHV0JywgbWV0YXZhcj0nZmlsZScsIHJlcXVpcmVkPVRydWUsIGhlbHA9J091dHB1dCBmaWxlJykKKythcmdzID0gYXJncGFyc2VyLnBhcnNlX2FyZ3MoKQorKworK3dyaXRlX3RlbXBsYXRlKGFyZ3Mub3V0cHV0LCBidWlsZF90ZW1wbGF0ZShhcmdzLnRlc3RfZXhlY2RpciwgYXJncy50ZXN0bmFtZSkpCitkaWZmIC0tZ2l0IGEvYnVpbGQtYXV4L2dlbi1pbnN0YWxsZWQtdGVzdC1zaHNjcmlwdC5weSBiL2J1aWxkLWF1eC9nZW4taW5zdGFsbGVkLXRlc3Qtc2hzY3JpcHQucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi41ZGE4NmZiCistLS0gL2Rldi9udWxsCisrKysgYi9idWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LXNoc2NyaXB0LnB5CitAQCAtMCwwICsxLDI1IEBACisraW1wb3J0IHN5cworK2ltcG9ydCBvcworK2ltcG9ydCBhcmdwYXJzZQorKworK2RlZiB3cml0ZV90ZW1wbGF0ZShmaWxlbmFtZSwgZGF0YSk6CisrICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3cnKSBhcyBmOgorKyAgICAgICAgZi53cml0ZShkYXRhKQorKworK2RlZiBidWlsZF90ZW1wbGF0ZSh0ZXN0ZGlyLCB0ZXN0bmFtZSk6CisrICAgIHJldHVybiAnJy5qb2luKFsKKysgICAgICAgICIjIS91c3IvYmluL2VudiBzaFxuIiwKKysgICAgICAgICJleHBvcnQgR1NUX1NUQVRFX0lHTk9SRV9FTEVNRU5UUz0nJ1xuIiwKKysgICAgICAgICJleHBvcnQgQ0tfREVGQVVMVF9USU1FT1VUPTIwXG4iLAorKyAgICAgICAgImV4cG9ydCBHU1RfUExVR0lOX0xPQURJTkdfV0hJVEVMSVNUPSdnc3RyZWFtZXInXG4iLAorKyAgICAgICAgInt9XG4iLmZvcm1hdChvcy5wYXRoLmpvaW4odGVzdGRpciwgdGVzdG5hbWUpKSwKKysgICAgXSkKKysKKythcmdwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nR2VuZXJhdGUgaW5zdGFsbGVkLXRlc3QgZGF0YS4nKQorK2FyZ3BhcnNlci5hZGRfYXJndW1lbnQoJy0tdGVzdC1leGVjZGlyJywgbWV0YXZhcj0nZGlyJywgcmVxdWlyZWQ9VHJ1ZSwgaGVscD0nSW5zdGFsbGVkIHRlc3QgZGlyZWN0b3J5JykKKythcmdwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXRlc3RuYW1lJywgbWV0YXZhcj0nbmFtZScsIHJlcXVpcmVkPVRydWUsIGhlbHA9J0luc3RhbGxlZCB0ZXN0IG5hbWUnKQorK2FyZ3BhcnNlci5hZGRfYXJndW1lbnQoJy0tb3V0cHV0JywgbWV0YXZhcj0nZmlsZScsIHJlcXVpcmVkPVRydWUsIGhlbHA9J091dHB1dCBmaWxlJykKKythcmdzID0gYXJncGFyc2VyLnBhcnNlX2FyZ3MoKQorKworK3dyaXRlX3RlbXBsYXRlKGFyZ3Mub3V0cHV0LCBidWlsZF90ZW1wbGF0ZShhcmdzLnRlc3RfZXhlY2RpciwgYXJncy50ZXN0bmFtZSkpCisrb3MuY2htb2QoYXJncy5vdXRwdXQsIDBvNzU1KQorZGlmZiAtLWdpdCBhL21lc29uX29wdGlvbnMudHh0IGIvbWVzb25fb3B0aW9ucy50eHQKK2luZGV4IDhhZmRlMzkuLjg4ODRkY2MgMTAwNjQ0CistLS0gYS9tZXNvbl9vcHRpb25zLnR4dAorKysrIGIvbWVzb25fb3B0aW9ucy50eHQKK0BAIC0xNiw2ICsxNiw4IEBAIG9wdGlvbigncG9pc29uaW5nJywgdHlwZSA6ICdib29sZWFuJywgdmFsdWUgOiBmYWxzZSwgZGVzY3JpcHRpb24gOiAnRW5hYmxlIHBvaXNvCisgb3B0aW9uKCdtZW1vcnktYWxpZ25tZW50JywgdHlwZTogJ2NvbWJvJywKKyAgICAgICAgY2hvaWNlcyA6IFsnMScsICcyJywgJzQnLCAnOCcsICcxNicsICczMicsICc2NCcsICcxMjgnLCAnMjU2JywgJzUxMicsICcxMDI0JywgJzIwNDgnLCAnNDA5NicsICc4MTkyJywgJ21hbGxvYycsICdwYWdlc2l6ZSddLAorICAgICAgICB2YWx1ZTogJ21hbGxvYycpCisrb3B0aW9uKCdpbnN0YWxsZWQtdGVzdHMnLCB0eXBlIDogJ2Jvb2xlYW4nLCB2YWx1ZSA6IGZhbHNlLCBkZXNjcmlwdGlvbiA6ICdlbmFibGUgaW5zdGFsbGVkIHRlc3RzJykKKytvcHRpb24oJ3Rlc3QtZmlsZXMtcGF0aCcsIHR5cGUgOiAnc3RyaW5nJywgZGVzY3JpcHRpb24gOiAnUGF0aCB3aGVyZSB0byBmaW5kIHRlc3QgZmlsZXMnKQorIAorICMgRmVhdHVyZSBvcHRpb25zCisgb3B0aW9uKCdjaGVjaycsIHR5cGUgOiAnZmVhdHVyZScsIHZhbHVlIDogJ2F1dG8nLCBkZXNjcmlwdGlvbiA6ICdCdWlsZCB1bml0IHRlc3QgbGlicmFyaWVzJykKK2RpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9tZXNvbi5idWlsZCBiL3Rlc3RzL2NoZWNrL21lc29uLmJ1aWxkCitpbmRleCAwNGRhODNmLi4yZGI3Zjc2IDEwMDY0NAorLS0tIGEvdGVzdHMvY2hlY2svbWVzb24uYnVpbGQKKysrKyBiL3Rlc3RzL2NoZWNrL21lc29uLmJ1aWxkCitAQCAtMTE4LDExICsxMTgsMTcgQEAgaWYgYWRkX2xhbmd1YWdlcygnY3BwJywgcmVxdWlyZWQgOiBmYWxzZSkKKyAgIF0KKyBlbmRpZgorIAorK3Rlc3RfZmlsZXNfcGF0aCA9IGdldF9vcHRpb24oJ3Rlc3QtZmlsZXMtcGF0aCcpCisraWYgdGVzdF9maWxlc19wYXRoID09ICcnCisrICB0ZXN0X2ZpbGVzX3BhdGggPSBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSArICcvLi4vZmlsZXMnCisrZW5kaWYKKyttZXNzYWdlKCdVc2luZyBwYXRoICJAMEAiIGFzIHRoZSBwYXRoIHRvIHJlYWQgdGVzdCBmaWxlcyBmcm9tJy5mb3JtYXQodGVzdF9maWxlc19wYXRoKSkKKysKKyB0ZXN0X2RlZmluZXMgPSBbCisgICAnLVVHX0RJU0FCTEVfQVNTRVJUJywKKyAgICctVUdfRElTQUJMRV9DQVNUX0NIRUNLUycsCisgICAnLURHU1RfQ0hFQ0tfVEVTVF9FTlZJUk9OTUVOVF9CRUFDT049IkdTVF9TVEFURV9JR05PUkVfRUxFTUVOVFMiJywKKy0gICctRFRFU1RGSUxFPSInICsgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCkgKyAnL21lc29uLmJ1aWxkIicsCisrICAnLURURVNURklMRT0iQDBAIicuZm9ybWF0KHRlc3RfZmlsZXNfcGF0aCArICcvdGVzdGZpbGUnKSwKKyAgICctREdTVF9VU0VfVU5TVEFCTEVfQVBJJywKKyAgICctREdTVF9ESVNBQkxFX0RFUFJFQ0FURUQnLAorIF0KK0BAIC0xMzcsNiArMTQzLDE0IEBAIGVuZGlmCisgZ2xpYl9kZXBzID0gW2dpb19kZXAsIGdvYmplY3RfZGVwLCBnbW9kdWxlX2RlcCwgZ2xpYl9kZXBdCisgZ3N0X2RlcHMgPSBbZ3N0X2RlcCwgZ3N0X2Jhc2VfZGVwLCBnc3RfY2hlY2tfZGVwLCBnc3RfbmV0X2RlcCwgZ3N0X2NvbnRyb2xsZXJfZGVwXQorIAorK2luc3RhbGxlZF90ZXN0c19kYXRhZGlyID0gam9pbl9wYXRocyhwcmVmaXgsIGdldF9vcHRpb24oJ2RhdGFkaXInKSwgJ2luc3RhbGxlZC10ZXN0cycsICdnc3RyZWFtZXItMS4wJykKKytpbnN0YWxsZWRfdGVzdHNfZXhlY2RpciA9IGpvaW5fcGF0aHMocHJlZml4LCBsaWJleGVjZGlyLCAnaW5zdGFsbGVkLXRlc3RzJywgJ2dzdHJlYW1lci0xLjAnKQorK2luc3RhbGxlZF90ZXN0c19lbmFibGVkID0gZ2V0X29wdGlvbignaW5zdGFsbGVkLXRlc3RzJykKKysKKytweXRob24gPSBpbXBvcnQoJ3B5dGhvbicpLmZpbmRfaW5zdGFsbGF0aW9uKCkKKytnZW5faW5zdGFsbGVkX3Rlc3RfZGVzYyA9IGZpbGVzKCcuLi8uLi9idWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LWRlc2MucHknKQorK2dlbl9pbnN0YWxsZWRfdGVzdF9zaHNjcmlwdCA9IGZpbGVzKCcuLi8uLi9idWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LXNoc2NyaXB0LnB5JykKKysKKyBmb3JlYWNoIHQgOiBjb3JlX3Rlc3RzCisgICBmbmFtZSA9IHRbMF0KKyAgIHRlc3RfbmFtZSA9IGZuYW1lLnNwbGl0KCcuJylbMF0udW5kZXJzY29yaWZ5KCkKK0BAIC0xNTAsOCArMTY0LDM4IEBAIGZvcmVhY2ggdCA6IGNvcmVfdGVzdHMKKyAgICAgICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMgOiBbY29uZmlnaW5jXSwKKyAgICAgICAgIGxpbmtfd2l0aCA6IGxpbmtfd2l0aF9saWJzLAorICAgICAgICAgZGVwZW5kZW5jaWVzIDogdGVzdF9kZXBzICsgZ2xpYl9kZXBzICsgZ3N0X2RlcHMsCisrICAgICAgICBpbnN0YWxsX2RpcjogaW5zdGFsbGVkX3Rlc3RzX2V4ZWNkaXIsCisrICAgICAgICBpbnN0YWxsOiBpbnN0YWxsZWRfdGVzdHNfZW5hYmxlZAorICAgICApCisgCisrICAgIGlmIGluc3RhbGxlZF90ZXN0c19lbmFibGVkCisrICAgICAgaW5zdGFsbGVkX3Rlc3Rfc2hzY3JpcHQgPSB0ZXN0X25hbWUgKyAnLnNoJworKyAgICAgIHNoc2NyaXB0ID0gY3VzdG9tX3RhcmdldCAodGVzdF9uYW1lICsgJ19zaHNjcmlwdCcsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQ6IGluc3RhbGxlZF90ZXN0X3Noc2NyaXB0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZDogWworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRob24sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9pbnN0YWxsZWRfdGVzdF9zaHNjcmlwdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tdGVzdC1leGVjZGlyPUAwQCcuZm9ybWF0KGluc3RhbGxlZF90ZXN0c19leGVjZGlyKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tdGVzdG5hbWU9QDBAJy5mb3JtYXQodGVzdF9uYW1lKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tb3V0cHV0PUAwQCcuZm9ybWF0KGpvaW5fcGF0aHMoJ0BPVVRESVJAJywgaW5zdGFsbGVkX3Rlc3Rfc2hzY3JpcHQpKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsOiB0cnVlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbF9kaXI6IGluc3RhbGxlZF90ZXN0c19leGVjZGlyKQorKworKyAgICAgIGluc3RhbGxlZF90ZXN0X2Rlc2MgPSB0ZXN0X25hbWUgKyAnLnRlc3QnCisrICAgICAgZGF0YSA9IGN1c3RvbV90YXJnZXQodGVzdF9uYW1lICsgJ19kZXNjJywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQ6IGluc3RhbGxlZF90ZXN0X2Rlc2MsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZDogWworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX2luc3RhbGxlZF90ZXN0X2Rlc2MsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS10ZXN0LWV4ZWNkaXI9QDBAJy5mb3JtYXQoaW5zdGFsbGVkX3Rlc3RzX2V4ZWNkaXIpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tdGVzdG5hbWU9QDBAJy5mb3JtYXQoaW5zdGFsbGVkX3Rlc3Rfc2hzY3JpcHQpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tb3V0cHV0PUAwQCcuZm9ybWF0KGpvaW5fcGF0aHMoJ0BPVVRESVJAJywgaW5zdGFsbGVkX3Rlc3RfZGVzYykpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbDogdHJ1ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsX2RpcjogaW5zdGFsbGVkX3Rlc3RzX2RhdGFkaXIpCisrICAgIGVuZGlmCisrCisgICAgIGVudiA9IGVudmlyb25tZW50KCkKKyAgICAgZW52LnNldCgnR1NUX1BMVUdJTl9QQVRIXzFfMCcsIG1lc29uLmJ1aWxkX3Jvb3QoKSkKKyAgICAgZW52LnNldCgnR1NUX1BMVUdJTl9TWVNURU1fUEFUSF8xXzAnLCAnJykKK2RpZmYgLS1naXQgYS90ZXN0cy9maWxlcy90ZXN0ZmlsZSBiL3Rlc3RzL2ZpbGVzL3Rlc3RmaWxlCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uODk5NTRlMAorLS0tIC9kZXYvbnVsbAorKysrIGIvdGVzdHMvZmlsZXMvdGVzdGZpbGUKK0BAIC0wLDAgKzEsODAgQEAKKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvY2FwZml4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wL2NhcGZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2EzZDVhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wL2NhcGZpeC5wYXRjaApAQCAtMCwwICsxLDM3IEBACitDdXJyZW50bHkgZ3N0cmVhbWVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kcyBvbiB3aGV0aGVyIHNldGNhcCBpcyBmb3VuZCBvbiB0aGUgaG9zdAorc3lzdGVtLiBUdXJuIHRoaXMgaW50byBhIGNvbmZpZ3VyZSBvcHRpb24gdG8gbWFrZSBidWlsZHMgZGV0ZXJpbmlzdGljLgorCitSUCAyMDIwLzIvMTkKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0luZGV4OiBnc3RyZWFtZXItMS4xNi4xL2xpYnMvZ3N0L2hlbHBlcnMvbWVzb24uYnVpbGQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3RyZWFtZXItMS4xNi4xLm9yaWcvbGlicy9nc3QvaGVscGVycy9tZXNvbi5idWlsZAorKysrIGdzdHJlYW1lci0xLjE2LjEvbGlicy9nc3QvaGVscGVycy9tZXNvbi5idWlsZAorQEAgLTczLDcgKzczLDEyIEBAIGlmIGhhdmVfcHRwCisgICAgIGVuZGlmCisgICBlbmRpZgorIAorLSAgc2V0Y2FwID0gZmluZF9wcm9ncmFtKCdzZXRjYXAnLCAnL3Vzci9zYmluL3NldGNhcCcsICcvc2Jpbi9zZXRjYXAnLCByZXF1aXJlZCA6IGZhbHNlKQorKyAgc2V0Y2FwX2ZlYXR1cmUgPSBnZXRfb3B0aW9uKCdzZXRjYXAnKQorKyAgaWYgc2V0Y2FwX2ZlYXR1cmUuZGlzYWJsZWQoKQorKyAgICBzZXRjYXAgPSBmaW5kX3Byb2dyYW0oJ2RvbnRleGlzdCcsIHJlcXVpcmVkIDogZmFsc2UpCisrICBlbHNlCisrICAgIHNldGNhcCA9IGZpbmRfcHJvZ3JhbSgnc2V0Y2FwJywgJy91c3Ivc2Jpbi9zZXRjYXAnLCAnL3NiaW4vc2V0Y2FwJywgcmVxdWlyZWQgOiBmYWxzZSkKKysgIGVuZGlmCisgCisgICAjIHVzZXIvZ3JvdXAgdG8gY2hhbmdlIHRvIGluIGdzdC1wdHAtaGVscGVyCisgICBwdHBfaGVscGVyX3NldHVpZF91c2VyID0gZ2V0X29wdGlvbigncHRwLWhlbHBlci1zZXR1aWQtdXNlcicpCitJbmRleDogZ3N0cmVhbWVyLTEuMTYuMS9tZXNvbl9vcHRpb25zLnR4dAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdHJlYW1lci0xLjE2LjEub3JpZy9tZXNvbl9vcHRpb25zLnR4dAorKysrIGdzdHJlYW1lci0xLjE2LjEvbWVzb25fb3B0aW9ucy50eHQKK0BAIC0yNiw2ICsyNiw3IEBAIG9wdGlvbignbGlidW53aW5kJywgdHlwZSA6ICdmZWF0dXJlJywgdmEKKyBvcHRpb24oJ2xpYmR3JywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIGRlc2NyaXB0aW9uIDogJ1VzZSBsaWJkdyB0byBnZW5lcmF0ZSBiZXR0ZXIgYmFja3RyYWNlcyBmcm9tIGxpYnVud2luZCcpCisgb3B0aW9uKCdkYmdoZWxwJywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIGRlc2NyaXB0aW9uIDogJ1VzZSBkYmdoZWxwIHRvIGdlbmVyYXRlIGJhY2t0cmFjZXMnKQorIG9wdGlvbignYmFzaC1jb21wbGV0aW9uJywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIGRlc2NyaXB0aW9uIDogJ0luc3RhbGwgYmFzaCBjb21wbGV0aW9uIGZpbGVzJykKKytvcHRpb24oJ3NldGNhcCcsIHR5cGUgOiAnZmVhdHVyZScsIHZhbHVlIDogJ2F1dG8nLCBkZXNjcmlwdGlvbiA6ICdVc2Ugc2V0Y2FwJykKKyAKKyAjIENvbW1vbiBmZWF0dXJlIG9wdGlvbnMKKyBvcHRpb24oJ2V4YW1wbGVzJywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIHlpZWxkIDogdHJ1ZSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjkyZjYzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi1TVU1NQVJZID0gIkdTdHJlYW1lciAxLjAgbXVsdGltZWRpYSBmcmFtZXdvcmsiCi1ERVNDUklQVElPTiA9ICJHU3RyZWFtZXIgaXMgYSBtdWx0aW1lZGlhIGZyYW1ld29yayBmb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHZpZGVvIGFuZCBzb3VuZC4gXAotSXQgc3VwcG9ydHMgYSB3aWRlIHJhbmdlIG9mIGZvcm1hdHMgaW5jbHVkaW5nIG1wMywgb2dnLCBhdmksIG1wZWcgYW5kIHF1aWNrdGltZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1Hc3RyZWFtZXIiCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi1MSUNFTlNFID0gIkxHUEx2MisiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYmNhcCBsaWJ4bWwyIGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIHB0ZXN0Ci0KLSMgVGhpcyB3YXkgY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgd2lsbCBjb21lIGZpcnN0Ci0jIChpdCBoYXMgYSBjdXN0b20gSU5UUk9TUEVDVElPTl9JTklUIG1hY3JvLCBhbmQgc28gbXVzdCBiZSB1c2VkIGluc3RlYWQgb2Ygb3VyIGNvbW1vbiBpbnRyb3NwZWN0aW9uLm00IGZpbGUpCi1hY3BhdGhzID0gIi1JICR7U30vY29tbW9uL200IC1JICR7U30vbTQiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC9nc3QuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT1lMDU5MTM4NDgxMjA1ZWUyYzZmYzFjMDc5YzAxNmQwZCIKLQotUyA9ICIke1dPUktESVJ9L2dzdHJlYW1lci0ke1BWfSIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0cmVhbWVyL2dzdHJlYW1lci0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAotICAgIGZpbGU6Ly9ndGstZG9jLXR3ZWFrcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtZ3N0LWdzdHBsdWdpbmxvYWRlci5jLXdoZW4tZW52LXZhci1pcy1zZXQtZG8tbm90LWZhbC5wYXRjaCBcCi0gICAgZmlsZTovL2FkZC1hLXRhcmdldC10by1jb21waWxlLXRlc3RzLnBhdGNoIFwKLSAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjNTA1ZmI4MThiMzY5ODhkYWFhODQ2ZTllNjNlYWJlOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMjIxMWMzNDQ3YzRkYWE1NTkxOWM1YzBmNDNhODJhNmZiYjUxNzQwZDU3ZmMzYWYwNjM5ZDQ2ZjFjZjQzNzdkIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICd0ZXN0cycsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICIKLQotUEFDS0FHRUNPTkZJR1tkZWJ1Z10gPSAiLS1lbmFibGUtZGVidWcsLS1kaXNhYmxlLWRlYnVnIgotUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLS1lbmFibGUtdGVzdHMsLS1kaXNhYmxlLXRlc3RzIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS1lbmFibGUtdmFsZ3JpbmQsLS1kaXNhYmxlLXZhbGdyaW5kLHZhbGdyaW5kLCIKLVBBQ0tBR0VDT05GSUdbZ3N0LXRyYWNlci1ob29rc10gPSAiLS1lbmFibGUtZ3N0LXRyYWNlci1ob29rcywtLWRpc2FibGUtZ3N0LXRyYWNlci1ob29rcywiCi1QQUNLQUdFQ09ORklHW3Vud2luZF0gPSAiLS13aXRoLXVud2luZCwtLXdpdGhvdXQtdW53aW5kLGxpYnVud2luZCIKLVBBQ0tBR0VDT05GSUdbZHddID0gIi0td2l0aC1kdywtLXdpdGhvdXQtZHcsZWxmdXRpbHMiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1leGFtcGxlcyBcCi0iCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfdmFsZ3JpbmRfdmFsZ3JpbmRfaD1ubyIKLQotIyBtdXNsIGxpYmMgZ2VuZXJhdGVzIHdhcm5pbmdzIGlmIDxzeXMvcG9sbC5oPiBpcyBpbmNsdWRlZCBkaXJlY3RseQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9zeXNfcG9sbF9oPW5vIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tYmFzaC1jb21wbGV0aW9uIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5zbyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5sYSAke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmEgJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvaW5jbHVkZSIKLUZJTEVTXyR7UE59LWJhc2gtY29tcGxldGlvbiArPSAiJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24vY29tcGxldGlvbnMvICR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uL2hlbHBlcnMvZ3N0KiIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtkYXRhZGlyfS9nZGIgJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wL2dkYiIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCi0KLWRlbGV0ZV9wa2dfbTRfZmlsZSgpIHsKLSAgICAgICAgIyBUaGlzIG00IGZpbGUgaXMgb3V0IG9mIGRhdGUgYW5kIGlzIG1pc3NpbmcgUEtHX0NPTkZJR19TWVNST09UX1BBVEggdHdlYWtzIHdoaWNoIHdlIG5lZWQgZm9yIGludHJvc3BlY3Rpb24KLSAgICAgICAgcm0gIiR7U30vY29tbW9uL200L3BrZy5tNCIgfHwgdHJ1ZQotICAgICAgICBybSAtZiAiJHtTfS9jb21tb24vbTQvZ3RrLWRvYy5tNCIKLX0KLQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiZGVsZXRlX3BrZ19tNF9maWxlIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2dzdC8ubGliczoke0J9L2xpYnMvZ3N0L2Jhc2UvLmxpYnMiCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgICAgIG9lX3J1bm1ha2UgYnVpbGQtY2hlY2tzCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0gICAgICAgIG9lX3J1bm1ha2UgLUMgdGVzdHMvY2hlY2sgREVTVERJUj0ke0R9JHtQVEVTVF9QQVRIfSBpbnN0YWxsLXB0ZXN0Ci0gICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7Qn0vdGVzdHMvY2hlY2svTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0KLSAgICAgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfQotICAgICAgICBzZWQgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAotICAgICAgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAotICAgICAgICAgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKLSAgICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAotICAgICAgICAgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcLWUgJ3MvXk1ha2VmaWxlOi9fTWFrZWZpbGU6LycgXAotICAgICAgICAgICAgLWUgJ3MvXnNyY2RpciA9IFwoLipcKS9zcmNkaXIgPSAuLycgLWUgJ3MvXnRvcF9zcmNkaXIgPSBcKC4qXCkvdG9wX3NyY2RpciA9IC4vJyBcCi0gICAgICAgICAgICAtZSAncy9eYnVpbGRkaXIgPSBcKC4qXCkvYnVpbGRkaXIgPSAuLycgLWUgJ3MvXnRvcF9idWlsZGRpciA9IFwoLipcKS90b3BfYnVpbGRkaXIgPSAuLycgXAotICAgICAgICAgICAgLWkgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKLX0KLQotQ1ZFX1BST0RVQ1QgPSAiZ3N0cmVhbWVyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjE2LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBhODcyZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjE2LjIuYmIKQEAgLTAsMCArMSw3NyBAQAorU1VNTUFSWSA9ICJHU3RyZWFtZXIgMS4wIG11bHRpbWVkaWEgZnJhbWV3b3JrIgorREVTQ1JJUFRJT04gPSAiR1N0cmVhbWVyIGlzIGEgbXVsdGltZWRpYSBmcmFtZXdvcmsgZm9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyB2aWRlbyBhbmQgc291bmQuIFwKK0l0IHN1cHBvcnRzIGEgd2lkZSByYW5nZSBvZiBmb3JtYXRzIGluY2x1ZGluZyBtcDMsIG9nZywgYXZpLCBtcGVnIGFuZCBxdWlja3RpbWUuIgorSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9R3N0cmVhbWVyIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorTElDRU5TRSA9ICJMR1BMdjIrIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJjYXAgbGlieG1sMiBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC9nc3QuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT1lMDU5MTM4NDgxMjA1ZWUyYzZmYzFjMDc5YzAxNmQwZCIKKworUyA9ICIke1dPUktESVJ9L2dzdHJlYW1lci0ke1BWfSIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0cmVhbWVyL2dzdHJlYW1lci0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLWdzdC1nc3RwbHVnaW5sb2FkZXIuYy13aGVuLWVudi12YXItaXMtc2V0LWRvLW5vdC1mYWwucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLW1lc29uLUFkZC12YWxncmluZC1mZWF0dXJlLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNC1tZXNvbi1BZGQtb3B0aW9uLWZvci1pbnN0YWxsZWQtdGVzdHMucGF0Y2ggXAorICAgIGZpbGU6Ly9jYXBmaXgucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjBlNjYxZWQ1YmRmMWQ4OTk2ZTQzMDIyOGQwMjI2MjhlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImUzZjA0NDI0Njc4M2ZkNjg1NDM5NjQ3MzczZmExM2JhMTRmN2FiMGIzNDZlYWRkMDY0MzcwOTJmODQxOWU5NGUiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJ3Rlc3RzJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgY2hlY2sgXAorICAgICAgICAgICAgICAgICAgIGRlYnVnIFwKKyAgICAgICAgICAgICAgICAgICB0b29scyIKKworUEFDS0FHRUNPTkZJR1tkZWJ1Z10gPSAiLURnc3RfZGVidWc9dHJ1ZSwtRGdzdF9kZWJ1Zz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdHJhY2VyLWhvb2tzXSA9ICItRHRyYWNlcl9ob29rcz10cnVlLC1EdHJhY2VyX2hvb2tzPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tjaGVja10gPSAiLURjaGVjaz1lbmFibGVkLC1EY2hlY2s9ZGlzYWJsZWQiCitQQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItRHRlc3RzPWVuYWJsZWQgLURpbnN0YWxsZWQtdGVzdHM9dHJ1ZSwtRHRlc3RzPWRpc2FibGVkIC1EaW5zdGFsbGVkLXRlc3RzPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLUR2YWxncmluZD1lbmFibGVkLC1EdmFsZ3JpbmQ9ZGlzYWJsZWQsdmFsZ3JpbmQsIgorUEFDS0FHRUNPTkZJR1t1bndpbmRdID0gIi1EbGlidW53aW5kPWVuYWJsZWQsLURsaWJ1bndpbmQ9ZGlzYWJsZWQsbGlidW53aW5kIgorUEFDS0FHRUNPTkZJR1tkd10gPSAiLURsaWJkdz1lbmFibGVkLC1EbGliZHc9ZGlzYWJsZWQsZWxmdXRpbHMiCitQQUNLQUdFQ09ORklHW2Jhc2gtY29tcGxldGlvbl0gPSAiLURiYXNoLWNvbXBsZXRpb249ZW5hYmxlZCwtRGJhc2gtY29tcGxldGlvbj1kaXNhYmxlZCxiYXNoLWNvbXBsZXRpb24iCitQQUNLQUdFQ09ORklHW3Rvb2xzXSA9ICItRHRvb2xzPWVuYWJsZWQsLUR0b29scz1kaXNhYmxlZCIKK1BBQ0tBR0VDT05GSUdbc2V0Y2FwXSA9ICItRHNldGNhcD1lbmFibGVkLC1Ec2V0Y2FwPWRpc2FibGVkLGxpYmNhcCBsaWJjYXAtbmF0aXZlIgorCisjIFRPRE86IHB1dCB0aGlzIGluIGEgZ2V0dGV4dC5iYmNsYXNzIHBhdGNoCitkZWYgZ2V0dGV4dF9vZW1lc29uKGQpOgorICAgIGlmIGQuZ2V0VmFyKCdVU0VfTkxTJykgPT0gJ25vJzoKKyAgICAgICAgcmV0dXJuICctRG5scz1kaXNhYmxlZCcKKyAgICAjIFJlbW92ZSB0aGUgTkxTIGJpdHMgaWYgVVNFX05MUyBpcyBubyBvciBJTkhJQklUX0RFRkFVTFRfREVQUyBpcyBzZXQKKyAgICBpZiBkLmdldFZhcignSU5ISUJJVF9ERUZBVUxUX0RFUFMnKSBhbmQgbm90IG9lLnV0aWxzLmluaGVyaXRzKGQsICdjcm9zcy1jYW5hZGlhbicpOgorICAgICAgICByZXR1cm4gJy1EbmxzPWRpc2FibGVkJworICAgIHJldHVybiAnLURubHM9ZW5hYmxlZCcKKworRVhUUkFfT0VNRVNPTiArPSAiIFwKKyAgICAtRGV4YW1wbGVzPWRpc2FibGVkIFwKKyAgICAtRGRiZ2hlbHA9ZGlzYWJsZWQgXAorICAgICR7QGdldHRleHRfb2VtZXNvbihkKX0gXAorIgorCitHVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCitHVEtET0NfTUVTT05fRU5BQkxFX0ZMQUcgPSAiZW5hYmxlZCIKK0dUS0RPQ19NRVNPTl9ESVNBQkxFX0ZMQUcgPSAiZGlzYWJsZWQiCisKK0dJUl9NRVNPTl9FTkFCTEVfRkxBRyA9ICJlbmFibGVkIgorR0lSX01FU09OX0RJU0FCTEVfRkxBRyA9ICJkaXNhYmxlZCIKKworUEFDS0FHRVMgKz0gIiR7UE59LWJhc2gtY29tcGxldGlvbiIKKworIyBBZGQgdGhlIGNvcmUgZWxlbWVudCBwbHVnaW5zIHRvIHRoZSBtYWluIHBhY2thZ2UKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLnNvIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmEgJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvaW5jbHVkZSIKK0ZJTEVTXyR7UE59LWJhc2gtY29tcGxldGlvbiArPSAiJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24vY29tcGxldGlvbnMvICR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uL2hlbHBlcnMvZ3N0KiIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtkYXRhZGlyfS9nZGIgJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wL2dkYiIKKworQ1ZFX1BST0RVQ1QgPSAiZ3N0cmVhbWVyIgorCityZXF1aXJlIGdzdHJlYW1lcjEuMC1wdGVzdC5pbmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib214aWwvbGlib214aWxfMC45LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm9teGlsL2xpYm9teGlsXzAuOS4zLmJiCmluZGV4IGQ4M2ViNDUuLjI3MWMyYTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib214aWwvbGlib214aWxfMC45LjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJvbXhpbC9saWJvbXhpbF8wLjkuMy5iYgpAQCAtMjQsNiArMjQsOCBAQAogCiBFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1kb2MgLS1kaXNhYmxlLVdlcnJvciIKIAorUFJPVklERVMgKz0gInZpcnR1YWwvbGlib214aWwiCisKICMKICMgVGhlIC5zbyBmaWxlcyB1bmRlciAke2xpYmRpcn0vYmVsbGFnaW8gYXJlIG5vdCBpbnRlbmRlZCB0byBiZSB2ZXJzaW9uZWQgYW5kIHN5bWxpbmtlZC4KICMgTWFrZSBzdXJlIHRoZXkgZ2V0IHBhY2thZ2VkIGluIHRoZSBtYWluIHBhY2thZ2UuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjM3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJwbmcvbGlicG5nXzEuNi4zNy5iYgppbmRleCAyZWQ4N2E4Li44YzUzZDExIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjM3LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzcuYmIKQEAgLTIsMTggKzIsMTYgQEAKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cubGlicG5nLm9yZy8iCiBTRUNUSU9OID0gImxpYnMiCiBMSUNFTlNFID0gIkxpYnBuZyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIwMDg1MDUxYmYyNjViYWMyYmZjMzhiYzg5ZjUwMDAwXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcG5nLmg7ZW5kbGluZT0xNDQ7bWQ1PThhY2QyM2Q1NDQ2MjM4MTZiMDk3ZTA3YmUwMTM5NTA5XAotICAgICAgICAgICAgICAgICAgICAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMDA4NTA1MWJmMjY1YmFjMmJmYzM4YmM4OWY1MDAwMCIKIERFUEVORFMgPSAiemxpYiIKIAogTElCViA9ICIxNiIKIAotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59JHtMSUJWfS8ke1BWfS8ke0JQfS50YXIueHoiCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59JHtMSUJWfS8ke0JQfS50YXIueHoiCiBTUkNfVVJJW21kNXN1bV0gPSAiMDE1ZThlMTVkYjFlZWNkZTVmMmViOWViNWI2ZTU5ZTkiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTA1ZTcwODM0ZDM1MzgzNTM3YjY0OTFlN2FlODY0MWYxYTRiZWQxODc2ZGJmZTM2MTIwMWZjODA4NjhkODhjYSIKIAotTUlSUk9SUyArPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfSR7TElCVn0vJHtQVn0vICR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0ke0xJQlZ9L29sZGVyLXJlbGVhc2VzLyR7UFZ9LyIKK01JUlJPUlMgKz0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59JHtMSUJWfS8gJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0ke0xJQlZ9L29sZGVyLXJlbGVhc2VzLyIKIAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9saWJwbmcub3JnL3B1Yi9wbmcvbGlicG5nLmh0bWwiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic25kZmlsZS9saWJzbmRmaWxlMV8xLjAuMjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNuZGZpbGUvbGlic25kZmlsZTFfMS4wLjI4LmJiCmluZGV4IDc4NTUwMDguLmIxMDAxMDggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic25kZmlsZS9saWJzbmRmaWxlMV8xLjAuMjguYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzbmRmaWxlL2xpYnNuZGZpbGUxXzEuMC4yOC5iYgpAQCAtMzIsNyArMzIsMTEgQEAKIFBBQ0tBR0VDT05GSUdbYWxzYV0gPSAiLS1lbmFibGUtYWxzYSwtLWRpc2FibGUtYWxzYSxhbHNhLWxpYiIKIFBBQ0tBR0VDT05GSUdbcmVndGVzdF0gPSAiLS1lbmFibGUtc3FsaXRlLC0tZGlzYWJsZS1zcWxpdGUsc3FsaXRlMyIKIAotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgcGtnY29uZmlnCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBwa2djb25maWcgbXVsdGlsaWJfaGVhZGVyCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIG9lX211bHRpbGliX2hlYWRlciBzbmRmaWxlLmgKK30KIAogIyBUaGlzIGNhbid0IGJlIHJlcGxpY2F0ZWQgYW5kIGlzIGp1c3QgYSBtZW1vcnkgbGVhay4KICMgaHR0cHM6Ly9naXRodWIuY29tL2VyaWtkL2xpYnNuZGZpbGUvaXNzdWVzLzM5OApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8uaW5jCmluZGV4IGVjNTFkOGIuLmM3ZjNlNjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby5pbmMKQEAgLTU2LDEzICs1NiwyMSBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3B1bHNlY29yZS9maWx0ZXIvYmlxdWFkLmg7YmVnaW5saW5lPTE7ZW5kbGluZT00O21kNT02ZDQ2ZDEzNjUyMDY1MjhhMjAxMzczNTU5MjQyMzNjMSBcCiAiCiAKLURFUEVORFMgPSAibGliYXRvbWljLW9wcyBsaWJzbmRmaWxlMSBsaWJ0b29sIGludGx0b29sLW5hdGl2ZSIKK0RFUEVORFMgPSAibGliYXRvbWljLW9wcyBsaWJzbmRmaWxlMSBsaWJ0b29sIgogIyBvcHRpb25hbAogREVQRU5EUyArPSAidWRldiBhbHNhLWxpYiBnbGliLTIuMCIKIERFUEVORFMgKz0gInNwZWV4ZHNwIGxpYnhtbC1wYXJzZXItcGVybC1uYXRpdmUgbGliY2FwIgogCiBpbmhlcml0IGF1dG90b29scyBiYXNoLWNvbXBsZXRpb24gcGtnY29uZmlnIHVzZXJhZGQgZ2V0dGV4dCBwZXJsbmF0aXZlIHN5c3RlbWQgbWFucGFnZXMgZ3NldHRpbmdzCiAKKyMgV2hlbiBjb21waWxpbmcgZm9yIFRodW1iIG9yIFRodW1iMiwgZnJhbWUgcG9pbnRlcnMgX211c3RfIGJlIGRpc2FibGVkIHNpbmNlIHRoZQorIyBUaHVtYiBmcmFtZSBwb2ludGVyIGluIHI3IGNsYXNoZXMgd2l0aCBwdWxzZWF1ZGlvJ3MgdXNlIG9mIGlubGluZSBhc20gdG8gbWFrZSBzeXNjYWxscworIyAod2hlcmUgcjcgaXMgdXNlZCBmb3IgdGhlIHN5c2NhbGwgTlIpLiBJbiBtb3N0IGNhc2VzLCBmcmFtZSBwb2ludGVycyB3aWxsIGJlCisjIGRpc2FibGVkIGF1dG9tYXRpY2FsbHkgZHVlIHRvIHRoZSBvcHRpbWlzYXRpb24gbGV2ZWwsIGJ1dCBhcHBlbmQgYW4gZXhwbGljaXQKKyMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIG9wdGltaXNhdGlvbiBpcyBzZXQgdG8gLU8wIG9yIGZyYW1lCisjIHBvaW50ZXJzIGhhdmUgYmVlbiBlbmFibGVkIGJ5IC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIGVhcmxpZXIgaW4gQ0ZMQUdTLCBldGMuCitDRkxBR1NfYXBwZW5kX2FybSA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfQ0NBUkdTJywgJy1tdGh1bWInLCAnLWZvbWl0LWZyYW1lLXBvaW50ZXInLCAnJywgZCl9IgorCiAjICouZGVza3RvcCBydWxlcyB3b250IGJlIGdlbmVyYXRlZCBkdXJpbmcgY29uZmlndXJlIGFuZCBidWlsZCB3aWxsIGZhaWwKICMgaWYgdXNpbmcgLS1kaXNhYmxlLW5scwogVVNFX05MUyA9ICJ5ZXMiCkBAIC0xNTgsMTIgKzE2NiwyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1uby1jcmVhdGUtaG9tZSAtLXNoZWxsIC9iaW4vZmFsc2UgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1ncm91cHMgYXVkaW8scHVsc2UgLS1naWQgcHVsc2UgcHVsc2UiCiAKK1BBQ0tBR0VTID0rICJcCisgICAgICAgICAgICAgbGlicHVsc2UgXAorICAgICAgICAgICAgIGxpYnB1bHNlLW1haW5sb29wLWdsaWIgXAorICAgICAgICAgICAgIGxpYnB1bHNlLXNpbXBsZSBcCisgICAgICAgICAgICAgbGlicHVsc2Vjb21tb24gXAorICAgICAgICAgICAgIGxpYnB1bHNlY29yZSBcCisgICAgICAgICAgICAgJHtQTn0tcGEtaW5mbyBcCisgICAgICAgICAgICAgJHtQTn0tc2VydmVyIFwKKyAgICAgICAgICAgICAke1BOfS1taXNjIFwKKyAgICAgICAgICAgICAiCisKICMgVGhlIGNvbnNvbGUta2l0IG1vZHVsZSBpcyBpbmNsdWRlZCBoZXJlIGV4cGxpY2l0bHkgc28gYml0YmFrZSBjYW4gbWFwIHRvIHRoZQogIyBSREVQRU5EUyB3ZSBkZWZpbmUgZm9yIGl0IGluIHRoaXMgcmVjaXBlLCBhbmQgdGhlcmVieSBlbnN1cmUgdGhhdCB3aGVuCiAjIGFkZGluZyB0aGUgY29uc29sZS1raXQgbW9kdWxlIHRvIGFuIGltYWdlLCB3ZSBhbHNvIGdldCB0aGUgbmVjZXNzYXJ5CiAjIGNvbnNvbGVraXQgcGFja2FnZSBwcm9kdWNlZC4KLVBBQ0tBR0VTID0rICJsaWJwdWxzZWNvcmUgbGlicHVsc2Vjb21tb24gbGlicHVsc2UgbGlicHVsc2Utc2ltcGxlIGxpYnB1bHNlLW1haW5sb29wLWdsaWIgXAotICAgICAgICAgICAgIHB1bHNlYXVkaW8tc2VydmVyIHB1bHNlYXVkaW8tbWlzYyAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkYnVzJywgJ3B1bHNlYXVkaW8tbW9kdWxlLWNvbnNvbGUta2l0JywgJycsIGQpfSIKK1BBQ0tBR0VTID0rICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkYnVzJywgJ3B1bHNlYXVkaW8tbW9kdWxlLWNvbnNvbGUta2l0JywgJycsIGQpfSIKIAogI3VwZ3JhZGUgcGF0aDoKIFJSRVBMQUNFU19wdWxzZWF1ZGlvLXNlcnZlciA9ICJsaWJwdWxzZS1iaW4gbGlicHVsc2UtY29uZiIKQEAgLTE4Myw2ICsyMDEsNyBAQAogRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcHVsc2UtJHtQVn0vbW9kdWxlcy8qLmxhICR7ZGF0YWRpcn0vdmFsYSAke2xpYmRpcn0vY21ha2UiICAgCiBGSUxFU18ke1BOfS1jb25mID0gIiR7c3lzY29uZmRpcn0iCiBGSUxFU18ke1BOfS1iaW4gKz0gIiR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvdm9sYXRpbGVzLjA0X3B1bHNlIgorRklMRVNfJHtQTn0tcGEtaW5mbyA9ICIke2JpbmRpcn0vcGEtaW5mbyIKIEZJTEVTXyR7UE59LXNlcnZlciA9ICIke2JpbmRpcn0vcHVsc2VhdWRpbyAke2JpbmRpcn0vc3RhcnQtKiAke3N5c2NvbmZkaXJ9ICR7YmluZGlyfS9wYWN0bCAqL3VkZXYvcnVsZXMuZC8qLnJ1bGVzICovKi91ZGV2L3J1bGVzLmQvKi5ydWxlcyAke3N5c3RlbWRfdXNlcl91bml0ZGlyfS8qIgogCiAjU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1zZXJ2ZXIiCkBAIC0yMTQsNiArMjMzLDE2IEBACiAgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcGx1Z2luZGlyLCByJ15saWIoLiopXC5zbyQnLCAnJHtQTn0tbGliLSVzJywgJ1B1bHNlQXVkaW8gbGlicmFyeSBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnLCBwcmVwZW5kPVRydWUpCiB9CiAKKyMgcGEtaW5mbyBpcyBhIGJhc2ggc2NyaXB0IHRoYXQgY29sbGVjdHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGF1ZGlvIHNldHVwLgorIyBJdCdzIHByaW1hcmlseSB1c2VmdWwgZm9yIGF0dGFjaGluZyBhbiBpbmZvcm1hdGlvbiBkdW1wIHdoZW4gcmVwb3J0aW5nIGJ1Z3MuCitSREVQRU5EU18ke1BOfS1wYS1pbmZvID0gIlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWxzYS11dGlscy1hbWl4ZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBhbHNhLXV0aWxzLWFwbGF5IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWxzYS11dGlscy1zY3JpcHRzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LXNlcnZlciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICIKKwogUkRFUEVORFNfcHVsc2VhdWRpby1zZXJ2ZXIgPSAiIFwKICAgICBwdWxzZWF1ZGlvLW1vZHVsZS1maWx0ZXItYXBwbHkgXAogICAgIHB1bHNlYXVkaW8tbW9kdWxlLWZpbHRlci1oZXVyaXN0aWNzIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtYWxzYS1GaXgtaW5jbHVzaW9uLW9mLXVzZS1jYXNlLmgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLWFsc2EtRml4LWluY2x1c2lvbi1vZi11c2UtY2FzZS5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTAyNmEyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtYWxzYS1GaXgtaW5jbHVzaW9uLW9mLXVzZS1jYXNlLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIGI4OWQzM2JiMTgyYzQyZGI1YWQzOTg3YjBlOTFiN2JmNjJmNDIxZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+Ci1EYXRlOiBTdW4sIDIxIEFwciAyMDE5IDExOjU5OjMwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFsc2E6IEZpeCBpbmNsdXNpb24gb2YgdXNlLWNhc2UuaAotCi1UaGUgcmVjZW50IGNoYW5nZSBpbiBBTFNBIHVwc3RyZWFtIHN0cmlwcGVkIC1JJGluY2x1ZGUvYWxzYSBwYXRoIGZyb20KLXBrZ2NvbmZpZy4gIFdlIGFscmVhZHkgZml4ZWQgZm9yIHRoaXMgY2hhbmdlIGluIHNvbWUgcGxhY2VzIGJ1dCBzdGlsbAotdGhlIGNvZGUgZm9yIFVDTSB3YXMgb3Zlcmxvb2tlZCwgYW5kIHRoaXMgcmVzdWx0ZWQgaW4gdGhlIHVucmVzb2x2ZWQKLXN5bWJvbHMgaW4gYWxzYSBjYXJkIG1vZHVsZS4gRml4IHRoZW0gYXMgd2VsbC4KLQotU2lnbmVkLW9mZi1ieTogVGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRlPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgIHwgMiArLQotIHNyYy9tb2R1bGVzL2Fsc2EvYWxzYS11Y20uaCB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYzAwNGJkNzBkLi5iNDRlZDE1OTUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTgyNiw3ICs4MjYsNyBAQCBBU19JRihbdGVzdCAieCRlbmFibGVfYWxzYSIgPSAieHllcyIgJiYgdGVzdCAieCRIQVZFX0FMU0EiID0gIngwIl0sCi0gQVNfSUYoW3Rlc3QgIngkSEFWRV9BTFNBIiA9ICJ4MSJdLAotICAgICBbCi0gICAgICAgICBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiOyBDUFBGTEFHUz0iJENQUEZMQUdTICRBU09VTkRMSUJfQ0ZMQUdTIgotLSAgICAgICAgQUNfQ0hFQ0tfSEVBREVSUyhbdXNlLWNhc2UuaF0sIEhBVkVfQUxTQV9VQ009MSwgSEFWRV9BTFNBX1VDTT0wKQotKyAgICAgICAgQUNfQ0hFQ0tfSEVBREVSUyhbYWxzYS91c2UtY2FzZS5oXSwgSEFWRV9BTFNBX1VDTT0xLCBIQVZFX0FMU0FfVUNNPTApCi0gICAgICAgICBDUFBGTEFHUz0iJHNhdmVfQ1BQRkxBR1MiCi0gICAgIF0sCi0gICAgIEhBVkVfQUxTQV9VQ009MCkKLWRpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9hbHNhL2Fsc2EtdWNtLmggYi9zcmMvbW9kdWxlcy9hbHNhL2Fsc2EtdWNtLmgKLWluZGV4IDUzYWJmM2Y5MC4uYzkyNmYzY2MzIDEwMDY0NAotLS0tIGEvc3JjL21vZHVsZXMvYWxzYS9hbHNhLXVjbS5oCi0rKysgYi9zcmMvbW9kdWxlcy9hbHNhL2Fsc2EtdWNtLmgKLUBAIC0yMyw3ICsyMyw3IEBACi0gKioqLwotIAotICNpZmRlZiBIQVZFX0FMU0FfVUNNCi0tI2luY2x1ZGUgPHVzZS1jYXNlLmg+Ci0rI2luY2x1ZGUgPGFsc2EvdXNlLWNhc2UuaD4KLSAjZWxzZQotIHR5cGVkZWYgdm9pZCBzbmRfdXNlX2Nhc2VfbWdyX3Q7Ci0gI2VuZGlmCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLWludHJvZHVjZS1hLXNwZWNpYWwtYnVpbGQtZmxhZy10by1leHBsaWNpdGx5LWRpc2FibGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLWludHJvZHVjZS1hLXNwZWNpYWwtYnVpbGQtZmxhZy10by1leHBsaWNpdGx5LWRpc2FibGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3ZTljZDguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1pbnRyb2R1Y2UtYS1zcGVjaWFsLWJ1aWxkLWZsYWctdG8tZXhwbGljaXRseS1kaXNhYmxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYxICswLDAgQEAKLUZyb20gMzZmZWI5OGU1NjgyMjFlMjQyODY2MTU3MzA4ODhkNWY2ZmYzMjNmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgNyBEZWMgMjAxOCAxNToxMjozOCArMDgwMAotU3ViamVjdDogW1BBVENIXSBpbnRyb2R1Y2UgYSBzcGVjaWFsIGJ1aWxkIGZsYWcgdG8gZXhwbGljaXRseSBkaXNhYmxlcyBydW5uaW5nCi0gZnJvbSBidWlsZCB0cmVlCi0KLUl0IGlzIGhlbHBmdWwgdG8gaW1wcm92ZSByZXByb2R1Y2liaWxpdHkgYnVpbGQgWzFdIHNpbmNlCi1QQV9TUkNESVIvUEFfQlVJTERESVIgY29udGFpbnMgYnVpbGQgcGF0aCwgZGlzYWJsZSBydW5uaW5nCi1mcm9tIGJ1aWxkIHRyZWUgY291bGQgZHJvcCB0aGVzZSBtYWNyb3MgYXQgcHJlY29tcGlsYXRpb24uCi0KLVsxXSBodHRwczovL3JlcHJvZHVjaWJsZS1idWlsZHMub3JnLwotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbcHVsc2VhdWRpby1kaXNjdXNzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZ10KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLUFja2VkLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKysrKysrKwotIHNyYy9kYWVtb24vZGFlbW9uLWNvbmYuYyAgICAgICAgICAgICAgICAgfCAgNCArKystCi0gc3JjL2RhZW1vbi9tYWluLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICA2ICsrKysrKwotIHNyYy9tb2R1bGVzL2Fsc2EvYWxzYS1taXhlci5jICAgICAgICAgICAgfCAgNCArKysrCi0gc3JjL21vZHVsZXMvZ2NvbmYvbW9kdWxlLWdjb25mLmMgICAgICAgICB8ICAyICstCi0gc3JjL21vZHVsZXMvZ3NldHRpbmdzL21vZHVsZS1nc2V0dGluZ3MuYyB8ICAyICstCi0gc3JjL3B1bHNlY29yZS9jb3JlLXV0aWwuYyAgICAgICAgICAgICAgICB8ICA0ICsrKy0KLSA3IGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGM5YzQxNGYuLjhiMzQ1ZWYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTk5OCw2ICs5OTgsMTYgQEAgQVNfSUYoW3Rlc3QgIngkZW5hYmxlX2FzeW5jbnMiID0gInh5ZXMiICYmIHRlc3QgIngkSEFWRV9MSUJBU1lOQ05TIiA9ICJ4MCJdLAotIEFNX0NPTkRJVElPTkFMKFtIQVZFX0xJQkFTWU5DTlNdLCBbdGVzdCAieCRIQVZFX0xJQkFTWU5DTlMiID0geDFdKQotIEFTX0lGKFt0ZXN0ICJ4JEhBVkVfTElCQVNZTkNOUyIgPSAieDEiXSwgQUNfREVGSU5FKFtIQVZFX0xJQkFTWU5DTlNdLCAxLCBbSGF2ZSBsaWJhc3luY25zP10pKQotIAotKyMjIyMgUnVubmluZyBmcm9tIGJ1aWxkIHRyZWUgKG9wdGlvbmFsKSAjIyMjCi0rCi0rQUNfQVJHX0VOQUJMRShbcnVubmluZy1mcm9tLWJ1aWxkLXRyZWVdLAotKyAgICBBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLXJ1bm5pbmctZnJvbS1idWlsZC10cmVlXSxbRGlzYWJsZSBydW5uaW5nIGZyb20gYnVpbGQgdHJlZV0pKQotKwotK0FTX0lGKFt0ZXN0ICJ4JGVuYWJsZV9ydW5uaW5nX2Zyb21fYnVpbGRfdHJlZSIgIT0gInhubyJdLAotKyAgICAgIEFDX0RFRklORShbSEFWRV9SVU5OSU5HX0ZST01fQlVJTERfVFJFRV0sIDEsIFtIYXZlIHJ1bm5pbmcgZnJvbSBidWlsZCB0cmVlXSkpCi0rCi0rQUNfU1VCU1QoSEFWRV9SVU5OSU5HX0ZST01fQlVJTERfVFJFRSkKLSsKLSAjIyMjIFRDUCB3cmFwcGVycyAob3B0aW9uYWwpICMjIyMKLSAKLSBBQ19BUkdfRU5BQkxFKFt0Y3B3cmFwXSwKLWRpZmYgLS1naXQgYS9zcmMvZGFlbW9uL2RhZW1vbi1jb25mLmMgYi9zcmMvZGFlbW9uL2RhZW1vbi1jb25mLmMKLWluZGV4IDk4ODMxMjYuLmYwMWVmZjQgMTAwNjQ0Ci0tLS0gYS9zcmMvZGFlbW9uL2RhZW1vbi1jb25mLmMKLSsrKyBiL3NyYy9kYWVtb24vZGFlbW9uLWNvbmYuYwotQEAgLTE1NSwxMiArMTU1LDE0IEBAIHBhX2RhZW1vbl9jb25mICpwYV9kYWVtb25fY29uZl9uZXcodm9pZCkgewotICAgICBjLT5kbF9zZWFyY2hfcGF0aCA9IHBhX3NwcmludGZfbWFsbG9jKCIlcyIgUEFfUEFUSF9TRVAgImxpYiIgUEFfUEFUSF9TRVAgInB1bHNlLSVkLiVkIiBQQV9QQVRIX1NFUCAibW9kdWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFfd2luMzJfZ2V0X3RvcGxldmVsKE5VTEwpLCBQQV9NQUpPUiwgUEFfTUlOT1IpOwotICNlbHNlCi0rI2lmZGVmIEhBVkVfUlVOTklOR19GUk9NX0JVSUxEX1RSRUUKLSAgICAgaWYgKHBhX3J1bl9mcm9tX2J1aWxkX3RyZWUoKSkgewotICAgICAgICAgcGFfbG9nX25vdGljZSgiRGV0ZWN0ZWQgdGhhdCB3ZSBhcmUgcnVuIGZyb20gdGhlIGJ1aWxkIHRyZWUsIGZpeGluZyBzZWFyY2ggcGF0aC4iKTsKLSAgICAgICAgIGMtPmRsX3NlYXJjaF9wYXRoID0gcGFfeHN0cmR1cChQQV9CVUlMRERJUik7Ci0gICAgIH0gZWxzZQotLSAgICAgICAgYy0+ZGxfc2VhcmNoX3BhdGggPSBwYV94c3RyZHVwKFBBX0RMU0VBUkNIUEFUSCk7Ci0gI2VuZGlmCi0rICAgICAgICBjLT5kbF9zZWFyY2hfcGF0aCA9IHBhX3hzdHJkdXAoUEFfRExTRUFSQ0hQQVRIKTsKLSsjZW5kaWYgLy9FbmRvZiAjaWZkZWYgT1NfSVNfV0lOMzIKLSAKLSAgICAgcmV0dXJuIGM7Ci0gfQotZGlmZiAtLWdpdCBhL3NyYy9kYWVtb24vbWFpbi5jIGIvc3JjL2RhZW1vbi9tYWluLmMKLWluZGV4IGM4MGZhOTQuLjFlMDAzODggMTAwNjQ0Ci0tLS0gYS9zcmMvZGFlbW9uL21haW4uYwotKysrIGIvc3JjL2RhZW1vbi9tYWluLmMKLUBAIC05MzIsNiArOTMyLDEyIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKLSAKLSAgICAgcGFfbG9nX2RlYnVnKCJSdW5uaW5nIGluIFZNOiAlcyIsIHBhX3llc19ubyhwYV9ydW5uaW5nX2luX3ZtKCkpKTsKLSAKLSsjaWZkZWYgSEFWRV9SVU5OSU5HX0ZST01fQlVJTERfVFJFRQotKyAgICBwYV9sb2dfZGVidWcoIlJ1bm5pbmcgZnJvbSBidWlsZCB0cmVlOiAlcyIsIHBhX3llc19ubyhwYV9ydW5fZnJvbV9idWlsZF90cmVlKCkpKTsKLSsjZWxzZQotKyAgICBwYV9sb2dfZGVidWcoIlJ1bm5pbmcgZnJvbSBidWlsZCB0cmVlOiBubyIpOwotKyNlbmRpZgotKwotICNpZmRlZiBfX09QVElNSVpFX18KLSAgICAgcGFfbG9nX2RlYnVnKCJPcHRpbWl6ZWQgYnVpbGQ6IHllcyIpOwotICNlbHNlCi1kaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvYWxzYS9hbHNhLW1peGVyLmMgYi9zcmMvbW9kdWxlcy9hbHNhL2Fsc2EtbWl4ZXIuYwotaW5kZXggYTUyNGQ2ZC4uNjcwZjY0NiAxMDA2NDQKLS0tLSBhL3NyYy9tb2R1bGVzL2Fsc2EvYWxzYS1taXhlci5jCi0rKysgYi9zcmMvbW9kdWxlcy9hbHNhL2Fsc2EtbWl4ZXIuYwotQEAgLTI1NzEsOSArMjU3MSwxMSBAQCBzdGF0aWMgaW50IHBhdGhfdmVyaWZ5KHBhX2Fsc2FfcGF0aCAqcCkgewotIH0KLSAKLSBzdGF0aWMgY29uc3QgY2hhciAqZ2V0X2RlZmF1bHRfcGF0aHNfZGlyKHZvaWQpIHsKLSsjaWZkZWYgSEFWRV9SVU5OSU5HX0ZST01fQlVJTERfVFJFRQotICAgICBpZiAocGFfcnVuX2Zyb21fYnVpbGRfdHJlZSgpKQotICAgICAgICAgcmV0dXJuIFBBX1NSQ0RJUiAiL21vZHVsZXMvYWxzYS9taXhlci9wYXRocy8iOwotICAgICBlbHNlCi0rI2VuZGlmCi0gICAgICAgICByZXR1cm4gUEFfQUxTQV9QQVRIU19ESVI7Ci0gfQotIAotQEAgLTQ0NTUsNyArNDQ1Nyw5IEBAIHBhX2Fsc2FfcHJvZmlsZV9zZXQqIHBhX2Fsc2FfcHJvZmlsZV9zZXRfbmV3KGNvbnN0IGNoYXIgKmZuYW1lLCBjb25zdCBwYV9jaGFubmVsCi0gICAgICAgICBmbmFtZSA9ICJkZWZhdWx0LmNvbmYiOwotIAotICAgICBmbiA9IHBhX21heWJlX3ByZWZpeF9wYXRoKGZuYW1lLAotKyNpZmRlZiBIQVZFX1JVTk5JTkdfRlJPTV9CVUlMRF9UUkVFCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFfcnVuX2Zyb21fYnVpbGRfdHJlZSgpID8gUEFfU1JDRElSICIvbW9kdWxlcy9hbHNhL21peGVyL3Byb2ZpbGUtc2V0cy8iIDoKLSsjZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQV9BTFNBX1BST0ZJTEVfU0VUU19ESVIpOwotIAotICAgICByID0gcGFfY29uZmlnX3BhcnNlKGZuLCBOVUxMLCBpdGVtcywgTlVMTCwgZmFsc2UsIHBzKTsKLWRpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9nY29uZi9tb2R1bGUtZ2NvbmYuYyBiL3NyYy9tb2R1bGVzL2djb25mL21vZHVsZS1nY29uZi5jCi1pbmRleCBjMGY0ZGRlLi43NmExZjE5IDEwMDY0NAotLS0tIGEvc3JjL21vZHVsZXMvZ2NvbmYvbW9kdWxlLWdjb25mLmMKLSsrKyBiL3NyYy9tb2R1bGVzL2djb25mL21vZHVsZS1nY29uZi5jCi1AQCAtNTEsNyArNTEsNyBAQCBpbnQgcGFfX2luaXQocGFfbW9kdWxlKm0pIHsKLSAgICAgdS0+YnVmX2ZpbGwgPSAwOwotIAotICAgICBpZiAoKHUtPmZkID0gcGFfc3RhcnRfY2hpbGRfZm9yX3JlYWQoCi0tI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiAhZGVmaW5lZChfX09QVElNSVpFX18pCi0rI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiBkZWZpbmVkKEhBVkVfUlVOTklOR19GUk9NX0JVSUxEX1RSRUUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFfcnVuX2Zyb21fYnVpbGRfdHJlZSgpID8gUEFfQlVJTERESVIgIi9nY29uZi1oZWxwZXIiIDoKLSAjZW5kaWYKLSAgICAgICAgICAgICAgICAgIFBBX0dDT05GX0hFTFBFUiwgTlVMTCwgJnUtPnBpZCkpIDwgMCkKLWRpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9nc2V0dGluZ3MvbW9kdWxlLWdzZXR0aW5ncy5jIGIvc3JjL21vZHVsZXMvZ3NldHRpbmdzL21vZHVsZS1nc2V0dGluZ3MuYwotaW5kZXggMzMwZWNhMS4uMjA5Yzg1NyAxMDA2NDQKLS0tLSBhL3NyYy9tb2R1bGVzL2dzZXR0aW5ncy9tb2R1bGUtZ3NldHRpbmdzLmMKLSsrKyBiL3NyYy9tb2R1bGVzL2dzZXR0aW5ncy9tb2R1bGUtZ3NldHRpbmdzLmMKLUBAIC01MSw3ICs1MSw3IEBAIGludCBwYV9faW5pdChwYV9tb2R1bGUqbSkgewotICAgICB1LT5idWZfZmlsbCA9IDA7Ci0gCi0gICAgIGlmICgodS0+ZmQgPSBwYV9zdGFydF9jaGlsZF9mb3JfcmVhZCgKLS0jaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fT1BUSU1JWkVfXykKLSsjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIGRlZmluZWQoSEFWRV9SVU5OSU5HX0ZST01fQlVJTERfVFJFRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYV9ydW5fZnJvbV9idWlsZF90cmVlKCkgPyBQQV9CVUlMRERJUiAiL2dzZXR0aW5ncy1oZWxwZXIiIDoKLSAjZW5kaWYKLSAgICAgICAgICAgICAgICAgIFBBX0dTRVRUSU5HU19IRUxQRVIsIE5VTEwsICZ1LT5waWQpKSA8IDApCi1kaWZmIC0tZ2l0IGEvc3JjL3B1bHNlY29yZS9jb3JlLXV0aWwuYyBiL3NyYy9wdWxzZWNvcmUvY29yZS11dGlsLmMKLWluZGV4IDY0ZTlmMjEuLmY4NWRkMjAgMTAwNjQ0Ci0tLS0gYS9zcmMvcHVsc2Vjb3JlL2NvcmUtdXRpbC5jCi0rKysgYi9zcmMvcHVsc2Vjb3JlL2NvcmUtdXRpbC5jCi1AQCAtMzQzNiwxNSArMzQzNiwxNyBAQCB2b2lkIHBhX3Jlc2V0X3BlcnNvbmFsaXR5KHZvaWQpIHsKLSB9Ci0gCi0gYm9vbCBwYV9ydW5fZnJvbV9idWlsZF90cmVlKHZvaWQpIHsKLS0gICAgY2hhciAqcnA7Ci0gICAgIHN0YXRpYyBib29sIGIgPSBmYWxzZTsKLSAKLSsjaWZkZWYgSEFWRV9SVU5OSU5HX0ZST01fQlVJTERfVFJFRQotKyAgICBjaGFyICpycDsKLSAgICAgUEFfT05DRV9CRUdJTiB7Ci0gICAgICAgICBpZiAoKHJwID0gcGFfcmVhZGxpbmsoIi9wcm9jL3NlbGYvZXhlIikpKSB7Ci0gICAgICAgICAgICAgYiA9IHBhX3N0YXJ0c3dpdGgocnAsIFBBX0JVSUxERElSKTsKLSAgICAgICAgICAgICBwYV94ZnJlZShycCk7Ci0gICAgICAgICB9Ci0gICAgIH0gUEFfT05DRV9FTkQ7Ci0rI2VuZGlmCi0gCi0gICAgIHJldHVybiBiOwotIH0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1yZW1hcC1hcm0tQWRqdXN0LWlubGluZS1hc20tY29uc3RyYWludHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLXJlbWFwLWFybS1BZGp1c3QtaW5saW5lLWFzbS1jb25zdHJhaW50cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTEzM2ZkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1yZW1hcC1hcm0tQWRqdXN0LWlubGluZS1hc20tY29uc3RyYWludHMucGF0Y2gKQEAgLTAsMCArMSwxMTQgQEAKK0Zyb20gMzQ1MGQxZmNmZThhOGY4NDU1M2FiMjk5Y2Q5NmFlMDcwNWRkZmZiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDUgTWFyIDIwMjAgMTE6NDg6MjggLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVtYXAvYXJtOiBBZGp1c3QgaW5saW5lIGFzbSBjb25zdHJhaW50cworCitnY2MxMCBjYW4gZWZmZWN0aXZlbHkgZW1pdCBzaW5nbGUgcHJlY2lzaW9uIHJlZ2lzdGVycyBpZiByaWdodAorb3BlcmFuZCBtb2RpZmllciBjb25zdHJhaW50IGlzIG5vdCBpbiB1c2UKKworVGhpcyByZXN1bHRzIGluIGFzc2VtYmxlciByZWplY3RpbmcgdGhlIGNvZGUKKworL3RtcC9jY0VHNFFwSS5zOjY0NjogRXJyb3I6IFZGUC9OZW9uIGRvdWJsZSBwcmVjaXNpb24gcmVnaXN0ZXIgZXhwZWN0ZWQgLS0gYHZ0YmwuOCBkMyx7ZDAsZDF9LHM4JworL3RtcC9jY0VHNFFwSS5zOjY3ODogRXJyb3I6IGludmFsaWQgaW5zdHJ1Y3Rpb24gc2hhcGUgLS0gYHZtdWwuZjMyIGQwLGQwLHM4JworCitUaGVyZWZvcmUgYWRkICVQIHF1YWxpZmllciB0byByZXF1ZXN0IGRvdWJsZSByZWdpc3RlcnMgc2luZWNlICd3JyBjb3VsZAorbWVhbiB2YXJpYWJsZSBjb3VsZCBiZSBzdG9yZWQgaW4gczAuLnMxNCBhbmQgR0NDIGRlZmF1bHRzIHRvIHByaW50aW5nIG91dCBzMC4uczE0LgorTm90ZSB0aG9zZSByZWdpc3RlcnMgbWFwIHRvIGQwLi5kNyBhbHNvLgorCitPdXRwdXQgZ2VuZXJhdGVkIGlzIGV4YWN0bHkgc2FtZSB3aXRoIGdjYzksIGFuZCBpdCBhbHNvIG5vdyBjb21waWxlcword2l0aCBnY2MxMAorCitJdHMgbm90IGRvY3VtZW50ZWQgd2VsbCBpbiBnY2MgZG9jcyBhbmQgdGhlcmUgaXMgYSB0aWNrZXQgZm9yIHRoYXQKK2h0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTg0MzQzCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLy0vbWVyZ2VfcmVxdWVzdHMvMjYxXQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9wdWxzZWNvcmUvcmVtYXBfbmVvbi5jIHwgMjIgKysrKysrKysrKystLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9wdWxzZWNvcmUvcmVtYXBfbmVvbi5jIGIvc3JjL3B1bHNlY29yZS9yZW1hcF9uZW9uLmMKK2luZGV4IDQxMjA4OTg2ZC4uY2EzYjk1YjQ4IDEwMDY0NAorLS0tIGEvc3JjL3B1bHNlY29yZS9yZW1hcF9uZW9uLmMKKysrKyBiL3NyYy9wdWxzZWNvcmUvcmVtYXBfbmVvbi5jCitAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyB2b2lkIHJlbWFwX2NoNF90b19tb25vX2Zsb2F0MzJuZV9uZW9uKHBhX3JlbWFwX3QgKm0sIGZsb2F0ICpkc3QsIGNvbnN0IGZsCisgICAgICAgICAgICAgInZhZGQuZjMyICAgZDAsIGQwLCBkMSAgICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAidmFkZC5mMzIgICBkMiwgZDIsIGQzICAgICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICJ2YWRkLmYzMiAgIGQwLCBkMCwgZDIgICAgICAgICAgICAgIFxuXHQiCistICAgICAgICAgICAgInZtdWwuZjMyICAgZDAsIGQwLCAlW3F1YXJ0XSAgICAgICAgXG5cdCIKKysgICAgICAgICAgICAidm11bC5mMzIgICBkMCwgZDAsICVQW3F1YXJ0XSAgICAgICBcblx0IgorICAgICAgICAgICAgICJ2c3QxLjMyICAgIHtkMH0sIFslW2RzdF1dISAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgOiBbZHN0XSAiK3IiIChkc3QpLCBbc3JjXSAiK3IiIChzcmMpIC8qIG91dHB1dCBvcGVyYW5kcyAqLworICAgICAgICAgICAgIDogW3F1YXJ0XSAidyIgKHF1YXJ0KSAvKiBpbnB1dCBvcGVyYW5kcyAqLworQEAgLTI3Niw3ICsyNzYsNyBAQCBzdGF0aWMgdm9pZCByZW1hcF9hcnJhbmdlX3N0ZXJlb19zMTZuZV9uZW9uKHBhX3JlbWFwX3QgKm0sIGludDE2X3QgKmRzdCwgY29uc3QgaQorICAgICBmb3IgKDsgbiA+PSAyOyBuIC09IDIpIHsKKyAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgKKyAgICAgICAgICAgICAidmxkMS5zMTYgICBkMCwgWyVbc3JjXV0hICAgICAgICAgICBcblx0IgorLSAgICAgICAgICAgICJ2dGJsLjggICAgIGQwLCB7ZDB9LCAlW3RdICAgICAgICAgIFxuXHQiCisrICAgICAgICAgICAgInZ0YmwuOCAgICAgZDAsIHtkMH0sICVQW3RdICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAidnN0MS5zMTYgICBkMCwgWyVbZHN0XV0hICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgIDogW2RzdF0gIityIiAoZHN0KSwgW3NyY10gIityIiAoc3JjKSAvKiBvdXRwdXQgb3BlcmFuZHMgKi8KKyAgICAgICAgICAgICA6IFt0XSAidyIgKHQpIC8qIGlucHV0IG9wZXJhbmRzICovCitAQCAtMjg3LDcgKzI4Nyw3IEBAIHN0YXRpYyB2b2lkIHJlbWFwX2FycmFuZ2Vfc3RlcmVvX3MxNm5lX25lb24ocGFfcmVtYXBfdCAqbSwgaW50MTZfdCAqZHN0LCBjb25zdCBpCisgICAgIGlmIChuID4gMCkgeworICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAorICAgICAgICAgICAgICJ2bGQxLjMyICAgZDBbMF0sIFslW3NyY11dISAgICAgICAgIFxuXHQiCistICAgICAgICAgICAgInZ0YmwuOCAgICBkMCwge2QwfSwgJVt0XSAgICAgICAgICAgXG5cdCIKKysgICAgICAgICAgICAidnRibC44ICAgIGQwLCB7ZDB9LCAlUFt0XSAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICJ2c3QxLjMyICAgZDBbMF0sIFslW2RzdF1dISAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgOiBbZHN0XSAiK3IiIChkc3QpLCBbc3JjXSAiK3IiIChzcmMpIC8qIG91dHB1dCBvcGVyYW5kcyAqLworICAgICAgICAgICAgIDogW3RdICJ3IiAodCkgLyogaW5wdXQgb3BlcmFuZHMgKi8KK0BAIC0zMDIsOCArMzAyLDggQEAgc3RhdGljIHZvaWQgcmVtYXBfYXJyYW5nZV9jaDJfY2g0X3MxNm5lX25lb24ocGFfcmVtYXBfdCAqbSwgaW50MTZfdCAqZHN0LCBjb25zdAorICAgICBmb3IgKDsgbiA+IDA7IG4tLSkgeworICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAorICAgICAgICAgICAgICJ2bGQxLjMyICAgIGQwWzBdLCBbJVtzcmNdXSEgICAgICAgICAgIFxuXHQiCistICAgICAgICAgICAgInZ0YmwuOCAgICAgZDAsIHtkMH0sICVbdF0gICAgICAgICAgXG5cdCIKKy0gICAgICAgICAgICAidnN0MS5zMTYgICBkMCwgWyVbZHN0XV0hICAgICAgICAgICBcblx0IgorKyAgICAgICAgICAgICJ2dGJsLjggICAgIGQwLCB7ZDB9LCAlUFt0XSAgICAgICAgICAgIFxuXHQiCisrICAgICAgICAgICAgInZzdDEuczE2ICAgZDAsIFslW2RzdF1dISAgICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICA6IFtkc3RdICIrciIgKGRzdCksIFtzcmNdICIrciIgKHNyYykgLyogb3V0cHV0IG9wZXJhbmRzICovCisgICAgICAgICAgICAgOiBbdF0gInciICh0KSAvKiBpbnB1dCBvcGVyYW5kcyAqLworICAgICAgICAgICAgIDogIm1lbW9yeSIsICJkMCIgLyogY2xvYmJlciBsaXN0ICovCitAQCAtMzE3LDcgKzMxNyw3IEBAIHN0YXRpYyB2b2lkIHJlbWFwX2FycmFuZ2VfY2g0X3MxNm5lX25lb24ocGFfcmVtYXBfdCAqbSwgaW50MTZfdCAqZHN0LCBjb25zdCBpbnQxCisgICAgIGZvciAoOyBuID4gMDsgbi0tKSB7CisgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCisgICAgICAgICAgICAgInZsZDEuczE2ICAgZDAsIFslW3NyY11dISAgICAgICAgICAgXG5cdCIKKy0gICAgICAgICAgICAidnRibC44ICAgICBkMCwge2QwfSwgJVt0XSAgICAgICAgICBcblx0IgorKyAgICAgICAgICAgICJ2dGJsLjggICAgIGQwLCB7ZDB9LCAlUFt0XSAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgInZzdDEuczE2ICAgZDAsIFslW2RzdF1dISAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICA6IFtkc3RdICIrciIgKGRzdCksIFtzcmNdICIrciIgKHNyYykgLyogb3V0cHV0IG9wZXJhbmRzICovCisgICAgICAgICAgICAgOiBbdF0gInciICh0KSAvKiBpbnB1dCBvcGVyYW5kcyAqLworQEAgLTMzMiw3ICszMzIsNyBAQCBzdGF0aWMgdm9pZCByZW1hcF9hcnJhbmdlX3N0ZXJlb19mbG9hdDMybmVfbmVvbihwYV9yZW1hcF90ICptLCBmbG9hdCAqZHN0LCBjb25zdAorICAgICBmb3IgKDsgbiA+IDA7IG4tLSkgeworICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAorICAgICAgICAgICAgICJ2bGQxLmYzMiAgIGQwLCBbJVtzcmNdXSEgICAgICAgICAgIFxuXHQiCistICAgICAgICAgICAgInZ0YmwuOCAgICAgZDAsIHtkMH0sICVbdF0gICAgICAgICAgXG5cdCIKKysgICAgICAgICAgICAidnRibC44ICAgICBkMCwge2QwfSwgJVBbdF0gICAgICAgICBcblx0IgorICAgICAgICAgICAgICJ2c3QxLnMxNiAgIHtkMH0sIFslW2RzdF1dISAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgOiBbZHN0XSAiK3IiIChkc3QpLCBbc3JjXSAiK3IiIChzcmMpIC8qIG91dHB1dCBvcGVyYW5kcyAqLworICAgICAgICAgICAgIDogW3RdICJ3IiAodCkgLyogaW5wdXQgb3BlcmFuZHMgKi8KK0BAIC0zNDksOCArMzQ5LDggQEAgc3RhdGljIHZvaWQgcmVtYXBfYXJyYW5nZV9jaDJfY2g0X2FueTMybmVfbmVvbihwYV9yZW1hcF90ICptLCBmbG9hdCAqZHN0LCBjb25zdAorICAgICBmb3IgKDsgbiA+IDA7IG4tLSkgeworICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAorICAgICAgICAgICAgICJ2bGQxLmYzMiAgIGQwLCBbJVtzcmNdXSEgICAgICAgICAgIFxuXHQiCistICAgICAgICAgICAgInZ0YmwuOCAgICAgZDEsIHtkMH0sICVbdDBdICAgICAgICAgXG5cdCIKKy0gICAgICAgICAgICAidnRibC44ICAgICBkMiwge2QwfSwgJVt0MV0gICAgICAgICBcblx0IgorKyAgICAgICAgICAgICJ2dGJsLjggICAgIGQxLCB7ZDB9LCAlUFt0MF0gICAgICAgIFxuXHQiCisrICAgICAgICAgICAgInZ0YmwuOCAgICAgZDIsIHtkMH0sICVQW3QxXSAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAidnN0MS5zMTYgICB7ZDEsZDJ9LCBbJVtkc3RdXSEgICAgICBcblx0IgorICAgICAgICAgICAgIDogW2RzdF0gIityIiAoZHN0KSwgW3NyY10gIityIiAoc3JjKSAvKiBvdXRwdXQgb3BlcmFuZHMgKi8KKyAgICAgICAgICAgICA6IFt0MF0gInciICh0MCksIFt0MV0gInciICh0MSkgLyogaW5wdXQgb3BlcmFuZHMgKi8KK0BAIC0zNjYsOCArMzY2LDggQEAgc3RhdGljIHZvaWQgcmVtYXBfYXJyYW5nZV9jaDRfZmxvYXQzMm5lX25lb24ocGFfcmVtYXBfdCAqbSwgZmxvYXQgKmRzdCwgY29uc3QgZmwKKyAgICAgZm9yICg7IG4gPiAwOyBuLS0pIHsKKyAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgKKyAgICAgICAgICAgICAidmxkMS5mMzIgICB7ZDAsZDF9LCBbJVtzcmNdXSEgICAgICBcblx0IgorLSAgICAgICAgICAgICJ2dGJsLjggICAgIGQyLCB7ZDAsZDF9LCAlW3QwXSAgICAgIFxuXHQiCistICAgICAgICAgICAgInZ0YmwuOCAgICAgZDMsIHtkMCxkMX0sICVbdDFdICAgICAgXG5cdCIKKysgICAgICAgICAgICAidnRibC44ICAgICBkMiwge2QwLGQxfSwgJVBbdDBdICAgICBcblx0IgorKyAgICAgICAgICAgICJ2dGJsLjggICAgIGQzLCB7ZDAsZDF9LCAlUFt0MV0gICAgIFxuXHQiCisgICAgICAgICAgICAgInZzdDEuczE2ICAge2QyLGQzfSwgWyVbZHN0XV0hICAgICAgXG5cdCIKKyAgICAgICAgICAgICA6IFtkc3RdICIrciIgKGRzdCksIFtzcmNdICIrciIgKHNyYykgLyogb3V0cHV0IG9wZXJhbmRzICovCisgICAgICAgICAgICAgOiBbdDBdICJ3IiAodDApLCBbdDFdICJ3IiAodDEpIC8qIGlucHV0IG9wZXJhbmRzICovCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhiNDk3NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotcmVxdWlyZSBwdWxzZWF1ZGlvLmluYwotCi1TUkNfVVJJID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jbGllbnQtY29uZi1BZGQtYWxsb3ctYXV0b3NwYXduLWZvci1yb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaW50cm9kdWNlLWEtc3BlY2lhbC1idWlsZC1mbGFnLXRvLWV4cGxpY2l0bHktZGlzYWJsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWFsc2EtRml4LWluY2x1c2lvbi1vZi11c2UtY2FzZS5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZG8tbm90LWRpc3BsYXktQ0xGQUdTLXRvLWltcHJvdmUtcmVwcm9kdWNpYmlsaXR5LWJ1aS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuMDRfcHVsc2UgXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYzQyZjFmMTQ2NWU4ZGY5ODU5ZDAyM2RjMTg0NzM0YmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODA5NjY4ZmZjMjk2MDQzNzc5Yzk4NGY1MzQ2MWMyYjM5ODdhNDViN2EyNWViMmYwYTFkMTFkOWYyM2JhNDA1NSIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIG1rZGlyIC1wICR7U30vbGlibHRkbAotICAgIGNwICR7U1RBR0lOR19MSUJESVJ9L2xpYmx0ZGwqICR7U30vbGlibHRkbAotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvXzEzLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjAxNDk5YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvXzEzLjAuYmIKQEAgLTAsMCArMSwxNSBAQAorcmVxdWlyZSBwdWxzZWF1ZGlvLmluYworCitTUkNfVVJJID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jbGllbnQtY29uZi1BZGQtYWxsb3ctYXV0b3NwYXduLWZvci1yb290LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItZG8tbm90LWRpc3BsYXktQ0xGQUdTLXRvLWltcHJvdmUtcmVwcm9kdWNpYmlsaXR5LWJ1aS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlbWFwLWFybS1BZGp1c3QtaW5saW5lLWFzbS1jb25zdHJhaW50cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuMDRfcHVsc2UgXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZTQxZDYwNmY5MDI1NGVkNDVjOTA1MjBmYWY4M2Q5NWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTYxYjIzY2ExYWNmZDI4ZjJiYzg3NDE0YzI3YmI0MGUxMjQzNmVmY2YyMTU4ZDI5NzIxYjFlODlmM2YyODA1NyIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIG1rZGlyIC1wICR7U30vbGlibHRkbAorICAgIGNwICR7U1RBR0lOR19MSUJESVJ9L2xpYmx0ZGwqICR7U30vbGlibHRkbAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleGRzcC8wMDAxLURvbi10LXJlbHktb24tSEFWRV9TVERJTlRfSC1ldC1hbC4tYmVpbmctZGVmaW5lZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc3BlZXgvc3BlZXhkc3AvMDAwMS1Eb24tdC1yZWx5LW9uLUhBVkVfU1RESU5UX0gtZXQtYWwuLWJlaW5nLWRlZmluZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3MDY3ZGEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleGRzcC8wMDAxLURvbi10LXJlbHktb24tSEFWRV9TVERJTlRfSC1ldC1hbC4tYmVpbmctZGVmaW5lZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLUZyb20gYzczMzcwY2VhZmQxMzhiZWNlZThjYTNjNjg4YmE3NTc1NjgzMGJmZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRhbnUgS2Fza2luZW4gPHRhbnUua2Fza2luZW5AbGludXguaW50ZWwuY29tPgotRGF0ZTogU3VuLCA1IEp1bCAyMDE1IDE3OjQ4OjE2ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvbid0IHJlbHkgb24gSEFWRV9TVERJTlRfSCBldCBhbC4gYmVpbmcgZGVmaW5lZAotCi1Ob3QgZXZlcnlvbmUgd2hvIGluY2x1ZGVzIHNwZWV4ZHNwX2NvbmZpZ190eXBlcy5oIHdpbGwgaGF2ZSBhIHRlc3QKLXdoaWNoIGRlZmluZXMgdGhvc2UsIGFuZCBpZiB3ZSd2ZSBjaG9zZW4gdG8gdXNlIHRoZSBzdGRpbnQgdHlwZXMgYXQKLWNvbmZpZ3VyZSB0aW1lIHRoZW4gd2Uga25vdyBleGFjdGx5IHdoaWNoIGhlYWRlcihzKSBhcmUgYXZhaWxhYmxlLCBzbwotanVzdCBjaG9vc2UgdGhlIGJlc3Qgb25lIHRoZW4gYW5kIGdlbmVyYXRlIHRoZSBoZWFkZXIgdG8gdXNlIGl0LgotCi1UaGlzIHBhdGNoLCBpbmNsdWRpbmcgdGhlIGFib3ZlIHRleHQsIGlzIGNvcGllZCBmcm9tIGEgY29tbWl0IGluIHRoZQotc3BlZXggcmVwb3NpdG9yeVsxXS4gVGhlIG9yaWdpbmFsIGNvbW1pdCBmb3Igc3BlZXggd2FzIG1hZGUgYnkgUm9uCi08cm9uQGRlYmlhbi5vcmc+LgotCi1bMV0gaHR0cHM6Ly9naXQueGlwaC5vcmcvP3A9c3BlZXguZ2l0O2E9Y29tbWl0ZGlmZjtoPTc3NGM4N2Q2Y2I3ZGQ4ZGFiZGQxNzY3N2ZjNmRhNzUzZWNmNGFhODcKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51Lmthc2tpbmVuQGxpbnV4LmludGVsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2ICsrKysrKwotIGluY2x1ZGUvc3BlZXgvc3BlZXhkc3BfY29uZmlnX3R5cGVzLmguaW4gfCA4ICstLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDJjZDJkMWUuLjFkZTBjMjMgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTMzNCw2ICszMzQsMTIgQEAgQUNfU1VCU1QoW1VTSVpFMTZdKQotIEFDX1NVQlNUKFtTSVpFMzJdKQotIEFDX1NVQlNUKFtVU0laRTMyXSkKLSAKLStBU19JRihbdGVzdCAiJGFjX2N2X2hlYWRlcl9zdGRpbnRfaCIgPSAieWVzIl0sICAgIFtJTkNMVURFX1NURElOVD0iI2luY2x1ZGUgPHN0ZGludC5oPiJdLAotKyAgICAgIFt0ZXN0ICIkYWNfY3ZfaGVhZGVyX2ludHR5cGVzX2giID0gInllcyJdLCAgW0lOQ0xVREVfU1RESU5UPSIjaW5jbHVkZSA8aW50dHlwZXMuaD4iXSwKLSsgICAgICBbdGVzdCAiJGFjX2N2X2hlYWRlcl9zeXNfdHlwZXNfaCIgPSAieWVzIl0sIFtJTkNMVURFX1NURElOVD0iI2luY2x1ZGUgPHN5cy90eXBlcy5oPiJdKQotKwotK0FDX1NVQlNUKFtJTkNMVURFX1NURElOVF0pCi0rCi0gQUNfQ09ORklHX0ZJTEVTKFsKLSAgICAgICAgICAgIE1ha2VmaWxlIGxpYnNwZWV4ZHNwL01ha2VmaWxlIGRvYy9NYWtlZmlsZSBTcGVleERTUC5zcGVjCi0gICAgICAgICAgICBpbmNsdWRlL01ha2VmaWxlIGluY2x1ZGUvc3BlZXgvTWFrZWZpbGUgc3BlZXhkc3AucGMKLWRpZmYgLS1naXQgYS9pbmNsdWRlL3NwZWV4L3NwZWV4ZHNwX2NvbmZpZ190eXBlcy5oLmluIGIvaW5jbHVkZS9zcGVleC9zcGVleGRzcF9jb25maWdfdHlwZXMuaC5pbgotaW5kZXggMDJiODJmZC4uNWVhN2I1NSAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvc3BlZXgvc3BlZXhkc3BfY29uZmlnX3R5cGVzLmguaW4KLSsrKyBiL2luY2x1ZGUvc3BlZXgvc3BlZXhkc3BfY29uZmlnX3R5cGVzLmguaW4KLUBAIC0xLDEzICsxLDcgQEAKLSAjaWZuZGVmIF9fU1BFRVhfVFlQRVNfSF9fCi0gI2RlZmluZSBfX1NQRUVYX1RZUEVTX0hfXwotIAotLSNpZiBkZWZpbmVkIEhBVkVfU1RESU5UX0gKLS0jICBpbmNsdWRlIDxzdGRpbnQuaD4KLS0jZWxpZiBkZWZpbmVkIEhBVkVfSU5UVFlQRVNfSAotLSMgIGluY2x1ZGUgPGludHR5cGVzLmg+Ci0tI2VsaWYgZGVmaW5lZCBIQVZFX1NZU19UWVBFU19ICi0tIyAgaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tI2VuZGlmCi0rQElOQ0xVREVfU1RESU5UQAotIAotIHR5cGVkZWYgQFNJWkUxNkAgc3B4X2ludDE2X3Q7Ci0gdHlwZWRlZiBAVVNJWkUxNkAgc3B4X3VpbnQxNl90OwotLS0gCi0xLjkuMwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3NwZWV4L3NwZWV4ZHNwXzEuMi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleGRzcF8xLjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzY5NjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleGRzcF8xLjIuMC5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIkEgcGF0ZW50LWZyZWUgRFNQIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJTcGVleERTUCBpcyBhIHBhdGVudC1mcmVlLCBPcGVuIFNvdXJjZS9GcmVlIFNvZnR3YXJlIERTUCBsaWJyYXJ5LiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuc3BlZXgub3JnIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMTQ2NDlkOGJhOWRkNzA0NWRmYjY2ODNmMjk4ZDBhOCIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnhpcGgub3JnL3JlbGVhc2VzL3NwZWV4L3NwZWV4ZHNwLSR7UFZ9LnRhci5neiIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAic3BlZXhkc3AtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiNzIyZGYzNDE1NzZkYzE4NWQ4OTcxMzEzMjEwMDhmYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2ODIwNDJmYzZmOWJlZTYyOTRlYzQ1M2Y0NzBkYWRjMjZjNmZmMjliOWM5ZTlhZDJmZmMxZjQzMTJmZDY0NzcxIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAgICAgLS1kaXNhYmxlLWV4YW1wbGVzIFwKKyAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RBUkdFVF9GUFUnLCAnc29mdCcsICctLWVuYWJsZS1maXhlZC1wb2ludCAtLWRpc2FibGUtZmxvYXQtYXBpJywgJycsIGQpfSBcCisiCisKKyMgc3BlZXhkc3Agd2FzIHNwbGl0IG9mZiBmcm9tIHNwZWV4IGluIDEuMnJjMi4gT2xkZXIgdmVyc2lvbnMgb2Ygc3BlZXggY2FuJ3QKKyMgYmUgaW5zdGFsbGVkIHRvZ2V0aGVyIHdpdGggc3BlZXhkc3AsIHNpbmNlIHRoZXkgY29udGFpbiBvdmVybGFwcGluZyBmaWxlcy4KK1JDT05GTElDVFNfJHtQTn0gPSAic3BlZXggKDwgMS4ycmMyKSIKK1JDT05GTElDVFNfJHtQTn0tZGJnID0gInNwZWV4LWRiZyAoPCAxLjJyYzIpIgorUkNPTkZMSUNUU18ke1BOfS1kZXYgPSAic3BlZXgtZGV2ICg8IDEuMnJjMikiCitSQ09ORkxJQ1RTXyR7UE59LXN0YXRpY2RldiA9ICJzcGVleC1zdGF0aWNkZXYgKDwgMS4ycmMyKSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc3BlZXgvc3BlZXhkc3BfMS4ycmMzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleGRzcF8xLjJyYzMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYzk0OWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleGRzcF8xLjJyYzMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1TVU1NQVJZID0gIkEgcGF0ZW50LWZyZWUgRFNQIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJTcGVleERTUCBpcyBhIHBhdGVudC1mcmVlLCBPcGVuIFNvdXJjZS9GcmVlIFNvZnR3YXJlIERTUCBsaWJyYXJ5LiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuc3BlZXgub3JnIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMTQ2NDlkOGJhOWRkNzA0NWRmYjY2ODNmMjk4ZDBhOCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnhpcGgub3JnL3JlbGVhc2VzL3NwZWV4L3NwZWV4ZHNwLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXJlbHktb24tSEFWRV9TVERJTlRfSC1ldC1hbC4tYmVpbmctZGVmaW5lZC5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjcwZDlkMzExODRmN2ViNzYxMTkyZmQxZWYwYjczMzMzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRhZTY4ODYwMDAzOWY1ZDIyNGJkZjJlMjIyZDJmYmRlNjU2MDg0NDdlNGMyZjY4MTU4NWU0ZGNhNmRmNjkyZjEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgICAgICAtLWRpc2FibGUtZXhhbXBsZXMgXAotICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnVEFSR0VUX0ZQVScsICdzb2Z0JywgJy0tZW5hYmxlLWZpeGVkLXBvaW50IC0tZGlzYWJsZS1mbG9hdC1hcGknLCAnJywgZCl9IFwKLSIKLQotIyBXb3JrYXJvdW5kIGZvciBhIGJ1aWxkIGZhaWx1cmUgd2hlbiBidWlsZGluZyB3aXRoIE1BQ0hJTkU9cWVtdWFybTY0LiBJIHRoaW5rCi0jIGFhcmNoNjQgaXMgc3VwcG9zZWQgdG8gc3VwcG9ydCBORU9OIGp1c3QgZmluZSwgYnV0IGJ1aWxkaW5nIGZvciBxZW11YXJtNjQKLSMgZmFpbHMgaW4gTkVPTiBjb2RlOgotIwotIyAuLi4vc3BlZXhkc3AtMS4ycmMzL2xpYnNwZWV4ZHNwL3Jlc2FtcGxlX25lb24uaDoxNDg6NTogZXJyb3I6IGltcG9zc2libGUgY29uc3RyYWludCBpbiAnYXNtJwotIyAgICAgIGFzbSB2b2xhdGlsZSAoIiAgY21wICVbbGVuXSwgIzBcbiIKLSMgICAgICBeCi0jCi0jIEkgc2VudCBhbiBlbWFpbCBhYm91dCB0aGUgaXNzdWUgdG8gc3BlZXgtZGV2LiBBdCB0aGUgdGltZSBvZiB3cml0aW5nIHRoZXJlCi0jIGFyZSBubyByZXNwb25zZXMgeWV0OgotIyBodHRwOi8vdGhyZWFkLmdtYW5lLm9yZy9nbWFuZS5jb21wLmF1ZGlvLmNvbXByZXNzaW9uLnNwZWV4LmRldmVsLzczNjAKLUVYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYWFyY2g2NCcsICctLWRpc2FibGUtbmVvbicsICcnLCBkKX0iCi0KLSMgc3BlZXhkc3Agd2FzIHNwbGl0IG9mZiBmcm9tIHNwZWV4IGluIDEuMnJjMi4gT2xkZXIgdmVyc2lvbnMgb2Ygc3BlZXggY2FuJ3QKLSMgYmUgaW5zdGFsbGVkIHRvZ2V0aGVyIHdpdGggc3BlZXhkc3AsIHNpbmNlIHRoZXkgY29udGFpbiBvdmVybGFwcGluZyBmaWxlcy4KLVJDT05GTElDVFNfJHtQTn0gPSAic3BlZXggKDwgMS4ycmMyKSIKLVJDT05GTElDVFNfJHtQTn0tZGJnID0gInNwZWV4LWRiZyAoPCAxLjJyYzIpIgotUkNPTkZMSUNUU18ke1BOfS1kZXYgPSAic3BlZXgtZGV2ICg8IDEuMnJjMikiCi1SQ09ORkxJQ1RTXyR7UE59LXN0YXRpY2RldiA9ICJzcGVleC1zdGF0aWNkZXYgKDwgMS4ycmMyKSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicC9saWJ3ZWJwXzEuMC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMS4wLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwODJiZjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMS4wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1TVU1NQVJZID0gIldlYlAgaXMgYW4gaW1hZ2UgZm9ybWF0IGRlc2lnbmVkIGZvciB0aGUgV2ViIgotREVTQ1JJUFRJT04gPSAiV2ViUCBpcyBhIG1ldGhvZCBvZiBsb3NzeSBhbmQgbG9zc2xlc3MgY29tcHJlc3Npb24gdGhhdCBjYW4gYmUgXAotICAgICAgICAgICAgICAgdXNlZCBvbiBhIGxhcmdlIHZhcmlldHkgb2YgcGhvdG9ncmFwaGljLCB0cmFuc2x1Y2VudCBhbmQgXAotICAgICAgICAgICAgICAgZ3JhcGhpY2FsIGltYWdlcyBmb3VuZCBvbiB0aGUgd2ViLiBUaGUgZGVncmVlIG9mIGxvc3N5IFwKLSAgICAgICAgICAgICAgIGNvbXByZXNzaW9uIGlzIGFkanVzdGFibGUgc28gYSB1c2VyIGNhbiBjaG9vc2UgdGhlIHRyYWRlLW9mZiBcCi0gICAgICAgICAgICAgICBiZXR3ZWVuIGZpbGUgc2l6ZSBhbmQgaW1hZ2UgcXVhbGl0eS4gV2ViUCB0eXBpY2FsbHkgYWNoaWV2ZXMgXAotICAgICAgICAgICAgICAgYW4gYXZlcmFnZSBvZiAzMCUgbW9yZSBjb21wcmVzc2lvbiB0aGFuIEpQRUcgYW5kIEpQRUcgMjAwMCwgXAotICAgICAgICAgICAgICAgd2l0aG91dCBsb3NzIG9mIGltYWdlIHF1YWxpdHkuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vc3BlZWQvd2VicC8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmU4ZGVlOTMyYzI2ZjJkYWI1MDNhYmY3MGM5NmQ4YmIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUEFURU5UUzttZDU9YzY5MjZkMGNiMDdkMjk2Zjg4NmFiNmUwY2M1YTg1YjciCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy53ZWJtcHJvamVjdC5vcmcvcmVsZWFzZXMvd2VicC8ke0JQfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiOTA2YWQ4NWRhYWFhMmVhYzk3YzhhYTJkZWM5ZThiNzciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTIwYTA3ODY1Yzg2OTdiYmEwMGFlYmNjYzZmNTQ5MTJkNmJjMzMzYmI0ZDYwNGU2YjA3NDkxYzFhMjI2YjM0ZiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMud2VibXByb2plY3Qub3JnL3JlbGVhc2VzL3dlYnAvaW5kZXguaHRtbCIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1kaXNhYmxlLXdpYyBcCi0gICAgLS1lbmFibGUtbGlid2VicG11eCBcCi0gICAgLS1lbmFibGUtbGlid2VicGRlbXV4IFwKLSAgICAtLWVuYWJsZS10aHJlYWRpbmcgXAotIgotCi0jIERvIG5vdCB0cnVzdCBjb25maWd1cmUgdG8gZGV0ZXJtaW5lIGlmIG5lb24gaXMgYXZhaWxhYmxlLgotIwotRVhUUkFfT0VDT05GX0FSTSA9ICIgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwibmVvbiIsIi0tZW5hYmxlLW5lb24iLCItLWRpc2FibGUtbmVvbiIsZCl9IFwKLSIKLUVYVFJBX09FQ09ORl9hcHBlbmRfYXJtID0gIiAke0VYVFJBX09FQ09ORl9BUk19IgotRVhUUkFfT0VDT05GX2FwcGVuZF9hcm1lYiA9ICIgJHtFWFRSQV9PRUNPTkZfQVJNfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLQotIyBsaWJ3ZWJwZGVjb2RlciBpcyBhIHN1YnNldCBvZiBsaWJ3ZWJwLCBkb24ndCBidWlsZCBpdCB1bmxlc3MgcmVxdWVzdGVkCi1QQUNLQUdFQ09ORklHW2RlY29kZXJdID0gIi0tZW5hYmxlLWxpYndlYnBkZWNvZGVyLC0tZGlzYWJsZS1saWJ3ZWJwZGVjb2RlciIKLQotIyBBcHBseSBmb3IgZXhhbXBsZXMgcHJvZ3JhbXM6IGN3ZWJwIGFuZCBkd2VicAotUEFDS0FHRUNPTkZJR1tnaWZdID0gIi0tZW5hYmxlLWdpZiwtLWRpc2FibGUtZ2lmLGdpZmxpYiIKLVBBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnIgotUEFDS0FHRUNPTkZJR1twbmddID0gIi0tZW5hYmxlLXBuZywtLWRpc2FibGUtcG5nLCxsaWJwbmciCi1QQUNLQUdFQ09ORklHW3RpZmZdID0gIi0tZW5hYmxlLXRpZmYsLS1kaXNhYmxlLXRpZmYsdGlmZiIKLQotIyBBcHBseSBvbmx5IGZvciBleGFtcGxlIHByb2dyYW0gdndlYnAKLVBBQ0tBR0VDT05GSUdbZ2xdID0gIi0tZW5hYmxlLWdsLC0tZGlzYWJsZS1nbCxtZXNhLWdsdXQiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1naWYyd2VicCIKLQotREVTQ1JJUFRJT05fJHtQTn0tZ2lmMndlYnAgPSAiU2ltcGxlIHRvb2wgdG8gY29udmVydCBhbmltYXRlZCBHSUZzIHRvIFdlYlAiCi1GSUxFU18ke1BOfS1naWYyd2VicCA9ICIke2JpbmRpcn0vZ2lmMndlYnAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8xLjEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicC9saWJ3ZWJwXzEuMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ZTVhZTIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8xLjEuMC5iYgpAQCAtMCwwICsxLDU2IEBACitTVU1NQVJZID0gIldlYlAgaXMgYW4gaW1hZ2UgZm9ybWF0IGRlc2lnbmVkIGZvciB0aGUgV2ViIgorREVTQ1JJUFRJT04gPSAiV2ViUCBpcyBhIG1ldGhvZCBvZiBsb3NzeSBhbmQgbG9zc2xlc3MgY29tcHJlc3Npb24gdGhhdCBjYW4gYmUgXAorICAgICAgICAgICAgICAgdXNlZCBvbiBhIGxhcmdlIHZhcmlldHkgb2YgcGhvdG9ncmFwaGljLCB0cmFuc2x1Y2VudCBhbmQgXAorICAgICAgICAgICAgICAgZ3JhcGhpY2FsIGltYWdlcyBmb3VuZCBvbiB0aGUgd2ViLiBUaGUgZGVncmVlIG9mIGxvc3N5IFwKKyAgICAgICAgICAgICAgIGNvbXByZXNzaW9uIGlzIGFkanVzdGFibGUgc28gYSB1c2VyIGNhbiBjaG9vc2UgdGhlIHRyYWRlLW9mZiBcCisgICAgICAgICAgICAgICBiZXR3ZWVuIGZpbGUgc2l6ZSBhbmQgaW1hZ2UgcXVhbGl0eS4gV2ViUCB0eXBpY2FsbHkgYWNoaWV2ZXMgXAorICAgICAgICAgICAgICAgYW4gYXZlcmFnZSBvZiAzMCUgbW9yZSBjb21wcmVzc2lvbiB0aGFuIEpQRUcgYW5kIEpQRUcgMjAwMCwgXAorICAgICAgICAgICAgICAgd2l0aG91dCBsb3NzIG9mIGltYWdlIHF1YWxpdHkuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vc3BlZWQvd2VicC8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmU4ZGVlOTMyYzI2ZjJkYWI1MDNhYmY3MGM5NmQ4YmIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUEFURU5UUzttZDU9YzY5MjZkMGNiMDdkMjk2Zjg4NmFiNmUwY2M1YTg1YjciCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy53ZWJtcHJvamVjdC5vcmcvcmVsZWFzZXMvd2VicC8ke0JQfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiN2UwNDdmMmNiYWY1ODRkZmY3YThhN2UwZjg1NzJmMTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOThhMDUyMjY4Y2M0ZDVlY2UyN2Y3NjU3MmE3ZjUwMjkzZjQzOWMxN2E5OGU2N2M0ZWEwYzdlZDZmNTBlZjA0MyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMud2VibXByb2plY3Qub3JnL3JlbGVhc2VzL3dlYnAvaW5kZXguaHRtbCIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1kaXNhYmxlLXdpYyBcCisgICAgLS1lbmFibGUtbGlid2VicG11eCBcCisgICAgLS1lbmFibGUtbGlid2VicGRlbXV4IFwKKyAgICAtLWVuYWJsZS10aHJlYWRpbmcgXAorIgorCisjIERvIG5vdCB0cnVzdCBjb25maWd1cmUgdG8gZGV0ZXJtaW5lIGlmIG5lb24gaXMgYXZhaWxhYmxlLgorIworRVhUUkFfT0VDT05GX0FSTSA9ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwibmVvbiIsIi0tZW5hYmxlLW5lb24iLCItLWRpc2FibGUtbmVvbiIsZCl9IFwKKyIKK0VYVFJBX09FQ09ORl9hcHBlbmRfYXJtID0gIiAke0VYVFJBX09FQ09ORl9BUk19IgorRVhUUkFfT0VDT05GX2FwcGVuZF9hcm1lYiA9ICIgJHtFWFRSQV9PRUNPTkZfQVJNfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKKworIyBsaWJ3ZWJwZGVjb2RlciBpcyBhIHN1YnNldCBvZiBsaWJ3ZWJwLCBkb24ndCBidWlsZCBpdCB1bmxlc3MgcmVxdWVzdGVkCitQQUNLQUdFQ09ORklHW2RlY29kZXJdID0gIi0tZW5hYmxlLWxpYndlYnBkZWNvZGVyLC0tZGlzYWJsZS1saWJ3ZWJwZGVjb2RlciIKKworIyBBcHBseSBmb3IgZXhhbXBsZXMgcHJvZ3JhbXM6IGN3ZWJwIGFuZCBkd2VicAorUEFDS0FHRUNPTkZJR1tnaWZdID0gIi0tZW5hYmxlLWdpZiwtLWRpc2FibGUtZ2lmLGdpZmxpYiIKK1BBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnIgorUEFDS0FHRUNPTkZJR1twbmddID0gIi0tZW5hYmxlLXBuZywtLWRpc2FibGUtcG5nLCxsaWJwbmciCitQQUNLQUdFQ09ORklHW3RpZmZdID0gIi0tZW5hYmxlLXRpZmYsLS1kaXNhYmxlLXRpZmYsdGlmZiIKKworIyBBcHBseSBvbmx5IGZvciBleGFtcGxlIHByb2dyYW0gdndlYnAKK1BBQ0tBR0VDT05GSUdbZ2xdID0gIi0tZW5hYmxlLWdsLC0tZGlzYWJsZS1nbCxtZXNhLWdsdXQiCisKK1BBQ0tBR0VTID0rICIke1BOfS1naWYyd2VicCIKKworREVTQ1JJUFRJT05fJHtQTn0tZ2lmMndlYnAgPSAiU2ltcGxlIHRvb2wgdG8gY29udmVydCBhbmltYXRlZCBHSUZzIHRvIFdlYlAiCitGSUxFU18ke1BOfS1naWYyd2VicCA9ICIke2JpbmRpcn0vZ2lmMndlYnAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NC9GaXgtWDMyLWJ1aWxkLWJ5LWRpc2FibGluZy1hc20ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NC9GaXgtWDMyLWJ1aWxkLWJ5LWRpc2FibGluZy1hc20ucGF0Y2gKaW5kZXggMDg3YTQ0OC4uY2I3NzFmYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjQvRml4LVgzMi1idWlsZC1ieS1kaXNhYmxpbmctYXNtLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0L0ZpeC1YMzItYnVpbGQtYnktZGlzYWJsaW5nLWFzbS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNjZiMTIwMDc5ZmIyMWVkMzhjYWIwOTAwYzYzMzYwYjBhNzg1M2VhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2JjMjVmNGQxYWFhNTE4NmQyZWZmM2UyMzI2YzcyNDVmY2Q3ZTdmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CiBEYXRlOiBUdWUsIDEzIERlYyAyMDE2IDE0OjIyOjMyIC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIEZpeCBYMzIgYnVpbGQgYnkgZGlzYWJsaW5nIGFzbQpAQCAtMTIsMTUgKzEyLDE2IEBACiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KKwogLS0tCiAgY29uZmlndXJlIHwgMTQgKysrKysrKysrKysrLS0KICAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggMzEwOWVjNC4uODQ0YWVhZSAxMDA3NTUKK2luZGV4IDUxYjEyOGQuLjZlYTk0NjkgMTAwNzU1CiAtLS0gYS9jb25maWd1cmUKICsrKyBiL2NvbmZpZ3VyZQotQEAgLTcwMyw3ICs3MDMsMTMgQEAgY2FzZSAkaG9zdF9jcHUgaW4KK0BAIC03NTQsNyArNzU0LDEzIEBAIGNhc2UgJGhvc3RfY3B1IGluCiAgICAgICAgICBBU19FWFQ9Ii5hc20iCiAgICAgICAgICBBU0ZMQUdTPSIkQVNGTEFHUyAtREFSQ0hfWDg2XzY0PTEgLUlcJChTUkNQQVRIKS9jb21tb24veDg2LyIKICAgICAgICAgIHN0YWNrX2FsaWdubWVudD0xNgpAQCAtMzMsOSArMzQsOSBAQAogKyAgICAgICAgICAgIGZpCiArICAgICAgICBmaQogICAgICAgICAgaWYgWyAiJFNZUyIgPSBNQUNPU1ggXTsgdGhlbgotICAgICAgICAgICAgIEFTRkxBR1M9IiRBU0ZMQUdTIC1mIG1hY2hvNjQgLURQSUMgLURQUkVGSVgiCisgICAgICAgICAgICAgQVNGTEFHUz0iJEFTRkxBR1MgLWYgbWFjaG82NCAtRFBSRUZJWCIKICAgICAgICAgICAgICBpZiBjY19jaGVjayAnJyAiLWFyY2ggeDg2XzY0IjsgdGhlbgotQEAgLTcyMiw3ICs3MjgsMTEgQEAgY2FzZSAkaG9zdF9jcHUgaW4KK0BAIC03NzMsNyArNzc5LDExIEBAIGNhc2UgJGhvc3RfY3B1IGluCiAgICAgICAgICAgICAgICAgIFJDRkxBR1M9Ii0tdGFyZ2V0PXBlLXg4Ni02NCAkUkNGTEFHUyIKICAgICAgICAgICAgICBmaQogICAgICAgICAgZWxzZQpAQCAtNDgsNiArNDksMyBAQAogICAgICAgICAgZmkKICAgICAgICAgIDs7CiAgICAgIHBvd2VycGMqKQotLS0gCi0yLjguMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NF9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NF9naXQuYmIKaW5kZXggZjIyOTMwYS4uMzk0MjlhOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjRfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYgpAQCAtMTQsOSArMTQsOSBAQAogICAgICAgICAgICAiCiBVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKLVNSQ1JFViA9ICI3MmRiNDM3NzcwZmQxY2UzOTYxZjYyNGRkNTdhOGU3NWZmNjVhZTBiIgorU1JDUkVWID0gIjE3NzFiNTU2ZWU0NTIwN2Y4NzExNzQ0Y2NiZDVkNDJhMzk0OWIxNGMiCiAKLVBWID0gInIyOTE3K2dpdCR7U1JDUFZ9IgorUFYgPSAicjI5OTErZ2l0JHtTUkNQVn0iCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL2ZpbGVzL3J0X2JtYXJrLnB5IGIvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvZmlsZXMvcnRfYm1hcmsucHkKaW5kZXggNTdiMzliNS4uM2I4NDQ0NyAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvZmlsZXMvcnRfYm1hcmsucHkKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvZmlsZXMvcnRfYm1hcmsucHkKQEAgLTE2NiwxMiArMTY2LDEyIEBACiAgICAgICAgIGxvZygiICBDb21tYW5kOiAnIiwgc3RyZXNzX2NtZF9zdHIsICInIikKICAgICAgICAgbG9nKCkKIAotICAgICAgICAjIHByZWV4ZWNfZm49b3Muc2V0c2lkIGNhdXNlcyBzdHJlc3MgdG8gYmUgZXhlY3V0ZWQgaW4gYSBzZXBhcmF0ZQorICAgICAgICAjIHN0YXJ0X25ld19zZXNzaW9uIGNhdXNlcyBzdHJlc3MgdG8gYmUgZXhlY3V0ZWQgaW4gYSBzZXBhcmF0ZQogICAgICAgICAjIHNlc3Npb24sID0+IGl0IGdldHMgYSBuZXcgcHJvY2VzcyBncm91cCAoaW5jbC4gY2hpbGRyZW4pLiBJdAogICAgICAgICAjIGNhbiB0aGVuIGJlIHRlcm1pbmF0ZWQgdXNpbmcgb3Mua2lsbHBnIGluIGVuZF9zdHJlc3Mgd2l0aG91dAogICAgICAgICAjIHRlcm1pbmF0aW5nIHRoaXMgc2NyaXB0LgogCi0gICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKHN0cmVzc19jbWQsIHByZWV4ZWNfZm49b3Muc2V0c2lkKQorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihzdHJlc3NfY21kLCBzdGFydF9uZXdfc2Vzc2lvbj1UcnVlKQogCiAgICAgICAgIHJldHVybiBwCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzLTEuMS8wMDAxLWd6aXAtd2l0aC1uLWZvci1idWlsZC1yZXByb2R1Y2liaWx0eS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzLTEuMS8wMDAxLWd6aXAtd2l0aC1uLWZvci1idWlsZC1yZXByb2R1Y2liaWx0eS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmFmYmJlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHMtMS4xLzAwMDEtZ3ppcC13aXRoLW4tZm9yLWJ1aWxkLXJlcHJvZHVjaWJpbHR5LnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKK0Zyb20gYWFiZjUxOGUyZTYxYTg4MmI5MjVmOWQyYWM1M2RhZmE3YTA0MWEwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorRGF0ZTogVHVlLCAyNSBGZWIgMjAyMCAyMjo1ODo1OSArMDAwMAorU3ViamVjdDogW1BBVENIXSBnemlwIHdpdGggLW4gZm9yIGJ1aWxkIHJlcHJvZHVjaWJpbHR5CisKK1RoZSBkYXRlIGNhbiBnZXQgZW5jb2RlZCBpbiB0aGUgaGVhZGVyIG9mIHRoZSBneiBmaWxlLCB3aGljaAorY2F1c2VzIHRoZSBiaW5hcnkgZmlsZXMgYmV0d2VlbiB0d28gZGlmZmVyZW50IGJ1aWxkcyBvZiB0aGUKK3NhbWUgZGF0YSB0byBiZSBkaWZmZXJlbnQuIEFkZCAtbiBmb3IgcmVwcm9kdWNpYmlsdHkKKworU2lnbmVkLW9mZi1ieTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFttYWlsaW5nbGlzdF0KKworLS0tCisgTWFrZWZpbGUgfCAyNCArKysrKysrKysrKystLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCBhNTRkODJiLi5lOWYwZDVhIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMTY4LDE3ICsxNjgsMTcgQEAgaW5zdGFsbDogYWxsIGluc3RhbGxfaHdsYXRkZXRlY3QKKyAJY3AgJChUQVJHRVRTKSAiJChERVNURElSKSQoYmluZGlyKSIKKyAJaW5zdGFsbCAtRCAtbSA2NDQgc3JjL2JhY2tmaXJlL2JhY2tmaXJlLmMgIiQoREVTVERJUikkKHNyY2RpcikvYmFja2ZpcmUvYmFja2ZpcmUuYyIKKyAJaW5zdGFsbCAtbSA2NDQgc3JjL2JhY2tmaXJlL01ha2VmaWxlICIkKERFU1RESVIpJChzcmNkaXIpL2JhY2tmaXJlL01ha2VmaWxlIgorLQlnemlwIC1jIHNyYy9iYWNrZmlyZS9iYWNrZmlyZS40ID4iJChERVNURElSKSQobWFuZGlyKS9tYW40L2JhY2tmaXJlLjQuZ3oiCistCWd6aXAgLWMgc3JjL2N5Y2xpY3Rlc3QvY3ljbGljdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L2N5Y2xpY3Rlc3QuOC5neiIKKy0JZ3ppcCAtYyBzcmMvcGlfdGVzdHMvcGlfc3RyZXNzLjggPiIkKERFU1RESVIpJChtYW5kaXIpL21hbjgvcGlfc3RyZXNzLjguZ3oiCistCWd6aXAgLWMgc3JjL3B0c2VtYXRlc3QvcHRzZW1hdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3B0c2VtYXRlc3QuOC5neiIKKy0JZ3ppcCAtYyBzcmMvcnQtbWlncmF0ZS10ZXN0L3J0LW1pZ3JhdGUtdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3J0LW1pZ3JhdGUtdGVzdC44Lmd6IgorLQlnemlwIC1jIHNyYy9zaWd3YWl0dGVzdC9zaWd3YWl0dGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3NpZ3dhaXR0ZXN0LjguZ3oiCistCWd6aXAgLWMgc3JjL3N2c2VtYXRlc3Qvc3ZzZW1hdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3N2c2VtYXRlc3QuOC5neiIKKy0JZ3ppcCAtYyBzcmMvcG1xdGVzdC9wbXF0ZXN0LjggPiIkKERFU1RESVIpJChtYW5kaXIpL21hbjgvcG1xdGVzdC44Lmd6IgorLQlnemlwIC1jIHNyYy9iYWNrZmlyZS9zZW5kbWUuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9zZW5kbWUuOC5neiIKKy0JZ3ppcCAtYyBzcmMvaGFja2JlbmNoL2hhY2tiZW5jaC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L2hhY2tiZW5jaC44Lmd6IgorLQlnemlwIC1jIHNyYy9zaWduYWx0ZXN0L3NpZ25hbHRlc3QuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9zaWduYWx0ZXN0LjguZ3oiCisrCWd6aXAgLW5jIHNyYy9iYWNrZmlyZS9iYWNrZmlyZS40ID4iJChERVNURElSKSQobWFuZGlyKS9tYW40L2JhY2tmaXJlLjQuZ3oiCisrCWd6aXAgLW5jIHNyYy9jeWNsaWN0ZXN0L2N5Y2xpY3Rlc3QuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9jeWNsaWN0ZXN0LjguZ3oiCisrCWd6aXAgLW5jIHNyYy9waV90ZXN0cy9waV9zdHJlc3MuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9waV9zdHJlc3MuOC5neiIKKysJZ3ppcCAtbmMgc3JjL3B0c2VtYXRlc3QvcHRzZW1hdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3B0c2VtYXRlc3QuOC5neiIKKysJZ3ppcCAtbmMgc3JjL3J0LW1pZ3JhdGUtdGVzdC9ydC1taWdyYXRlLXRlc3QuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9ydC1taWdyYXRlLXRlc3QuOC5neiIKKysJZ3ppcCAtbmMgc3JjL3NpZ3dhaXR0ZXN0L3NpZ3dhaXR0ZXN0LjggPiIkKERFU1RESVIpJChtYW5kaXIpL21hbjgvc2lnd2FpdHRlc3QuOC5neiIKKysJZ3ppcCAtbmMgc3JjL3N2c2VtYXRlc3Qvc3ZzZW1hdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3N2c2VtYXRlc3QuOC5neiIKKysJZ3ppcCAtbmMgc3JjL3BtcXRlc3QvcG1xdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3BtcXRlc3QuOC5neiIKKysJZ3ppcCAtbmMgc3JjL2JhY2tmaXJlL3NlbmRtZS44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3NlbmRtZS44Lmd6IgorKwlnemlwIC1uYyBzcmMvaGFja2JlbmNoL2hhY2tiZW5jaC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L2hhY2tiZW5jaC44Lmd6IgorKwlnemlwIC1uYyBzcmMvc2lnbmFsdGVzdC9zaWduYWx0ZXN0LjggPiIkKERFU1RESVIpJChtYW5kaXIpL21hbjgvc2lnbmFsdGVzdC44Lmd6IgorIAorIC5QSE9OWTogaW5zdGFsbF9od2xhdGRldGVjdAorIGluc3RhbGxfaHdsYXRkZXRlY3Q6IGh3bGF0ZGV0ZWN0CitAQCAtMTg3LDcgKzE4Nyw3IEBAIGluc3RhbGxfaHdsYXRkZXRlY3Q6IGh3bGF0ZGV0ZWN0CisgCQlpbnN0YWxsIC1EIC1tIDc1NSBzcmMvaHdsYXRkZXRlY3QvaHdsYXRkZXRlY3QucHkgJChERVNURElSKSQoUFlMSUIpL2h3bGF0ZGV0ZWN0LnB5IDsgXAorIAkJcm0gLWYgIiQoREVTVERJUikkKGJpbmRpcikvaHdsYXRkZXRlY3QiIDsgXAorIAkJbG4gLXMgJChQWUxJQikvaHdsYXRkZXRlY3QucHkgIiQoREVTVERJUikkKGJpbmRpcikvaHdsYXRkZXRlY3QiIDsgXAorLQkJZ3ppcCAtYyBzcmMvaHdsYXRkZXRlY3QvaHdsYXRkZXRlY3QuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9od2xhdGRldGVjdC44Lmd6IiA7IFwKKysJCWd6aXAgLW5jIHNyYy9od2xhdGRldGVjdC9od2xhdGRldGVjdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L2h3bGF0ZGV0ZWN0LjguZ3oiIDsgXAorIAlmaQorIAorIC5QSE9OWTogdGFyYmFsbAorLS0gCisyLjIzLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHMuaW5jCmluZGV4IDIyN2ViOTkuLjNhYzM5ZDkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0cy5pbmMKQEAgLTQsNyArNCw3IEBACiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS91dGlscy9ydC10ZXN0cy9ydC10ZXN0cy5naXQiCiAjIDEuMiB0byAxLjUgc2VlbSB0byBiZSBkZXZlbG9wbWVudCB2ZXJzaW9ucwotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPig/ITFcLlsyLTVdKShcZCsoXC5cZCspKykpIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPig/ITFcLlsyLTZdKShcZCsoXC5cZCspKykpIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0c18xLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0c18xLjEuYmIKaW5kZXggNWFhMGFhMS4uZGFkMjUyYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHNfMS4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzXzEuMS5iYgpAQCAtMTMsNiArMTMsNyBAQAogU1JDX1VSSSArPSAiIFwKICAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAogICAgICAgICAgICAgZmlsZTovL3J0X2JtYXJrLnB5IFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWd6aXAtd2l0aC1uLWZvci1idWlsZC1yZXByb2R1Y2liaWx0eS5wYXRjaCBcCiAgICAgICAgICAgICIKIAogIyBydC10ZXN0cyBuZWVkcyBQSSBtdXRleCBzdXBwb3J0IGluIGxpYmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzL2NvcmUtaW1hZ2Utc2F0by1wdGVzdC1mYXN0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLXB0ZXN0LWZhc3QuYmIKaW5kZXggYjc5NGE3ZC4uMzY0MTIxNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLXB0ZXN0LWZhc3QuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLXB0ZXN0LWZhc3QuYmIKQEAgLTE0LDMgKzE0LDYgQEAKIAogIyBwdGVzdHMgbmVlZCBtb3JlIG1lbW9yeSB0aGFuIHN0YW5kYXJkIHRvIGF2b2lkIHRoZSBPT00ga2lsbGVyCiBRQl9NRU0gPSAiLW0gMTAyNCIKKworIyBTYWRseSBhdCB0aGUgbW9tZW50IHRoZSBmYXN0IHNldCBvZiBwdGVzdHMgaXMgbm90IHJvYnVzdCBlbm91Z2ggYW5kIHNwb3JhZGljYWxseSBmYWlscyBpbiBhIGNvdXBsZSBvZiBwbGFjZXMKK1BURVNUX0VYUEVDVF9GQUlMVVJFID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8tc2RrLXB0ZXN0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLXNkay1wdGVzdC5iYgppbmRleCBmZjI5N2ZlLi5iZjc0OWFjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8tc2RrLXB0ZXN0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzL2NvcmUtaW1hZ2Utc2F0by1zZGstcHRlc3QuYmIKQEAgLTMsOCArMyw2IEBACiAKIERFU0NSSVBUSU9OICs9ICJBbHNvIGluY2x1ZGVzIHB0ZXN0IHBhY2thZ2VzLiIKIAotSU1BR0VfRkVBVFVSRVMgKz0gInB0ZXN0LXBrZ3MiCi0KIFBST1ZJREVTICs9ICJjb3JlLWltYWdlLXNhdG8tcHRlc3QiCiAKICMgQWxzbyBpbmNsdWRlIHB0ZXN0cyB3aGljaCBtYXkgbm90IG90aGVyd2lzZSBiZSBpbmNsdWRlZCBpbiBhIHNhdG8gaW1hZ2UKQEAgLTE4LDQgKzE2LDggQEAKIElNQUdFX1JPT1RGU19FWFRSQV9TUEFDRSA9ICIxMTI0Mjg4IgogCiAjIHB0ZXN0cyBuZWVkIG1vcmUgbWVtb3J5IHRoYW4gc3RhbmRhcmQgdG8gYXZvaWQgdGhlIE9PTSBraWxsZXIKLVFCX01FTSA9ICItbSAxMDI0IgorIyBhbHNvIGx0dG5nLXRvb2xzIG5lZWRzIC90bXAgdGhhdCBoYXMgYXQgbGVhc3QgMUcKK1FCX01FTSA9ICItbSAyMDQ4IgorCisjIFNhZGx5IGF0IHRoZSBtb21lbnQgdGhlIGZ1bGwgc2V0IG9mIHB0ZXN0cyBpcyBub3Qgcm9idXN0IGVub3VnaCBhbmQgc3BvcmFkaWNhbGx5IGZhaWxzIGluIHJhbmRvbSBwbGFjZXMKK1BURVNUX0VYUEVDVF9GQUlMVVJFID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2wzYWZwYWQvbDNhZnBhZF9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2wzYWZwYWQvbDNhZnBhZF9naXQuYmIKaW5kZXggODkwNmM3NC4uNmZkY2MzZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9sM2FmcGFkL2wzYWZwYWRfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vbDNhZnBhZC9sM2FmcGFkX2dpdC5iYgpAQCAtMTcsNyArMTcsNyBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBmZWF0dXJlc19jaGVjayBtaW1lLXhkZwogCiBBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wY21hbmZtL3BjbWFuZm1fMS4zLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjMuMS5iYgppbmRleCBjODhlMWVkLi43ODg1ZTBhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjMuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjMuMS5iYgpAQCAtMjEsNyArMjEsNyBAQAogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9wY21hbmZtL2ZpbGVzL1BDTWFuRk0lMjAlMkIlMjBMaWJmbSUyMCUyOHRhcmJhbGwlMjByZWxlYXNlJTI5L1BDTWFuRk0vIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBmZWF0dXJlc19jaGVjayBtaW1lLXhkZwogCiAjIFRoZSBzdGFydHVwLW5vdGlmaWNhdGlvbiByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtVXNlLWxhYnMtaW5zdGVhZC1vZi1hYnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1Vc2UtbGFicy1pbnN0ZWFkLW9mLWFicy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQzZDFkZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1Vc2UtbGFicy1pbnN0ZWFkLW9mLWFicy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gOTgwOGRjMDllMDg5MzdjOWJmZmQ4NThkM2RlZDQyODIyNWE0MzEyYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgU2VwIDIwMTUgMDk6MDI6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNlIGxhYnMgaW5zdGVhZCBvZiBhYnMKLQotY2x1ZXZhbHMgaXMgYXJyYXkgb2YgbG9uZ3Mgc28gd2UgaGF2ZSB0byB1c2UgbGFicygpIGluc3RlYWQgb2YgYWJzKCkKLXNpbmNlIGFicygpIHJldHVybnMgaW50Ci0KLUZpeGVzCi0KLWtlZW4uYzoxNDU4OjE3OiBlcnJvcjogYWJzb2x1dGUgdmFsdWUgZnVuY3Rpb24gJ2FicycgZ2l2ZW4gYW4gYXJndW1lbnQKLW9mIHR5cGUgJ2xvbmcnIGJ1dCBoYXMgcGFyYW1ldGVyIG9mIHR5cGUgJ2ludCcgd2hpY2ggbWF5IGNhdXNlCi10cnVuY2F0aW9uIG9mIHZhbHVlCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0ga2Vlbi5jIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2tlZW4uYyBiL2tlZW4uYwotaW5kZXggYTZhNzIzOC4uMTYzMTk5MiAxMDA2NDQKLS0tLSBhL2tlZW4uYwotKysrIGIva2Vlbi5jCi1AQCAtMTA0Myw3ICsxMDQzLDcgQEAgZG9uZQotIAkJICAgIGNsdWV2YWxzW2pdICo9IGdyaWRbaV07Ci0gCQkgICAgYnJlYWs7Ci0gCQkgIGNhc2UgQ19TVUI6Ci0tCQkgICAgY2x1ZXZhbHNbal0gPSBhYnMoY2x1ZXZhbHNbal0gLSBncmlkW2ldKTsKLSsJCSAgICBjbHVldmFsc1tqXSA9IGxhYnMoY2x1ZXZhbHNbal0gLSBncmlkW2ldKTsKLSAJCSAgICBicmVhazsKLSAJCSAgY2FzZSBDX0RJVjoKLSAJCSAgICB7Ci1AQCAtMTQ1NSw3ICsxNDU1LDcgQEAgc3RhdGljIGludCBjaGVja19lcnJvcnMoY29uc3QgZ2FtZV9zdGF0ZSAqc3RhdGUsIGxvbmcgKmVycm9ycykKLSAJCWNsdWV2YWxzW2pdICo9IHN0YXRlLT5ncmlkW2ldOwotIAkJYnJlYWs7Ci0gCSAgICAgIGNhc2UgQ19TVUI6Ci0tCQljbHVldmFsc1tqXSA9IGFicyhjbHVldmFsc1tqXSAtIHN0YXRlLT5ncmlkW2ldKTsKLSsJCWNsdWV2YWxzW2pdID0gbGFicyhjbHVldmFsc1tqXSAtIHN0YXRlLT5ncmlkW2ldKTsKLSAJCWJyZWFrOwotIAkgICAgICBjYXNlIENfRElWOgotIAkJewotLS0gCi0yLjUuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1wYWxpc2FkZS1GaXgtd2FybmluZ3Mtd2l0aC1jbGFuZy1vbi1hcm0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1wYWxpc2FkZS1GaXgtd2FybmluZ3Mtd2l0aC1jbGFuZy1vbi1hcm0ucGF0Y2gKaW5kZXggNTM1MWY4ZS4uMTQzZTg5OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtcGFsaXNhZGUtRml4LXdhcm5pbmdzLXdpdGgtY2xhbmctb24tYXJtLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy8wMDAxLXBhbGlzYWRlLUZpeC13YXJuaW5ncy13aXRoLWNsYW5nLW9uLWFybS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNmQ4MzI2Mjc1ODAyYTJlNmU2MWQzZTk5NDYwYWY2ODkxYWU4MzYyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDUzNTg3ZDcxNDQ3M2I4MDY0NzNiMzA5NzI3Zjg2NWI2NzNjYmMwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDEzIEphbiAyMDE2IDIzOjEwOjE5IC0wODAwCi1TdWJqZWN0OiBbcHV6emxlc11bUEFUQ0hdIHBhbGlzYWRlOiBGaXggd2FybmluZ3Mgd2l0aCBjbGFuZyBvbiBhcm0KK1N1YmplY3Q6IFtQQVRDSF0gcGFsaXNhZGU6IEZpeCB3YXJuaW5ncyB3aXRoIGNsYW5nIG9uIGFybQogCiBBUk0gdHJlYXRzICdjaGFyJyBhcyB1bnNpZ25lZCBjaGFyIHdoZW4gJ2NoYXInIGlzIG5vdCBxdWFsaWZpZWQgd2l0aAogJ3NpZ25lZCcgb3IgJ3Vuc2lnbmVkJyBleHBsaWNpdGx5LgpAQCAtMTYsMTcgKzE2LDE2IEBACiBUaGVyZWZvcmUsIHR5cGNhc3QgdGhlIGNvbnRhbnQgdG8gY2hhciBpbiBzdWNoIHBsYWNlcyB0byBiZSBleHBsaWNpdAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCistLS0KICBwYWxpc2FkZS5jIHwgMTAgKysrKystLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9wYWxpc2FkZS5jIGIvcGFsaXNhZGUuYwotaW5kZXggOTg0ZTYxNi4uMmI5YzI1YyAxMDA2NDQKK2luZGV4IDZmZmJmMmQuLjhiNTRkNDIgMTAwNjQ0CiAtLS0gYS9wYWxpc2FkZS5jCiArKysgYi9wYWxpc2FkZS5jCi1AQCAtMjk1LDExICsyOTUsMTEgQEAgc3RhdGljIHZvaWQgc29sdmVyX2Nvbm5lY3RlZF9jbHVlc192ZXJzdXNfcmVnaW9uX3NpemUoc29sdmVyX2N0eCAqY3R4KQorQEAgLTMwNCwxMSArMzA0LDExIEBAIHN0YXRpYyB2b2lkIHNvbHZlcl9jb25uZWN0ZWRfY2x1ZXNfdmVyc3VzX3JlZ2lvbl9zaXplKHNvbHZlcl9jdHggKmN0eCkKICAgICAgICogSWYgcCA9IHEgPSAzIHRoZW4gdGhlIHJlZ2lvbiBoYXMgc2l6ZSBleGFjdGx5IDIuICovCiAgCiAgICAgIGZvciAoaSA9IDA7IGkgPCB3aDsgKytpKSB7CkBAIC00MCw4ICszOSw4IEBACiAgICAgICAgICAgICAgaWYgKCg4IC0gY3R4LT5jbHVlc1tpXSAtIGN0eC0+Y2x1ZXNbal0gPiBjdHgtPnBhcmFtcy0+aykgfHwKICAgICAgICAgICAgICAgICAgKGN0eC0+Y2x1ZXNbaV0gPT0gMyAmJiBjdHgtPmNsdWVzW2pdID09IDMgJiYKICAgICAgICAgICAgICAgICAgIGN0eC0+cGFyYW1zLT5rICE9IDIpKQotQEAgLTMxNyw3ICszMTcsNyBAQCBzdGF0aWMgaW50IHNvbHZlcl9udW1iZXJfZXhoYXVzdGVkKHNvbHZlcl9jdHggKmN0eCkKLSAgICAgaW50IGNoYW5nZWQgPSBGQUxTRTsKK0BAIC0zMjYsNyArMzI2LDcgQEAgc3RhdGljIGJvb2wgc29sdmVyX251bWJlcl9leGhhdXN0ZWQoc29sdmVyX2N0eCAqY3R4KQorICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKICAKICAgICAgZm9yIChpID0gMDsgaSA8IHdoOyArK2kpIHsKIC0gICAgICAgIGlmIChjdHgtPmNsdWVzW2ldID09IEVNUFRZKSBjb250aW51ZTsKQEAgLTQ5LDE2ICs0OCwxNiBAQAogIAogICAgICAgICAgaWYgKGJpdGNvdW50WyhjdHgtPmJvcmRlcnNbaV0gJiBCT1JERVJfTUFTSyldID09IGN0eC0+Y2x1ZXNbaV0pIHsKICAgICAgICAgICAgICBmb3IgKGRpciA9IDA7IGRpciA8IDQ7ICsrZGlyKSB7Ci1AQCAtNTI4LDcgKzUyOCw3IEBAIHN0YXRpYyBpbnQgaXNfc29sdmVkKGNvbnN0IGdhbWVfcGFyYW1zICpwYXJhbXMsIGNsdWUgKmNsdWVzLAorQEAgLTUzOCw3ICs1MzgsNyBAQCBzdGF0aWMgYm9vbCBpc19zb2x2ZWQoY29uc3QgZ2FtZV9wYXJhbXMgKnBhcmFtcywgY2x1ZSAqY2x1ZXMsCiAgICAgIGZvciAoaSA9IDA7IGkgPCB3aDsgKytpKSB7Ci0gICAgICAgICBpZiAoZHNmW2ldID09IFVOVklTSVRFRCkgZGZzX2RzZihpLCBwYXJhbXMtPncsIGJvcmRlciwgZHNmLCBUUlVFKTsKKyAgICAgICAgIGlmIChkc2ZbaV0gPT0gVU5WSVNJVEVEKSBkZnNfZHNmKGksIHBhcmFtcy0+dywgYm9yZGVyLCBkc2YsIHRydWUpOwogICAgICAgICAgaWYgKGRzZl9zaXplKGRzZiwgaSkgIT0gaykgZ290byBlcnJvcjsKIC0gICAgICAgIGlmIChjbHVlc1tpXSA9PSBFTVBUWSkgY29udGludWU7CiArICAgICAgICBpZiAoY2x1ZXNbaV0gPT0gKGNoYXIpRU1QVFkpIGNvbnRpbnVlOwogICAgICAgICAgaWYgKGNsdWVzW2ldICE9IGJpdGNvdW50W2JvcmRlcltpXSAmIEJPUkRFUl9NQVNLXSkgZ290byBlcnJvcjsKICAgICAgfQogIAotQEAgLTY3NCw3ICs2NzQsNyBAQCBzdGF0aWMgY2hhciAqbmV3X2dhbWVfZGVzYyhjb25zdCBnYW1lX3BhcmFtcyAqcGFyYW1zLCByYW5kb21fc3RhdGUgKnJzLAorQEAgLTY4NSw3ICs2ODUsNyBAQCBzdGF0aWMgY2hhciAqbmV3X2dhbWVfZGVzYyhjb25zdCBnYW1lX3BhcmFtcyAqcGFyYW1zLCByYW5kb21fc3RhdGUgKnJzLAogICAgICBwID0gbnVtYmVyczsKICAgICAgciA9IDA7CiAgICAgIGZvciAoaSA9IDA7IGkgPCB3aDsgKytpKSB7CkBAIC02Nyw2ICs2NiwzIEBACiAgICAgICAgICAgICAgd2hpbGUgKHIpIHsKICAgICAgICAgICAgICAgICAgd2hpbGUgKHIgPiAyNikgewogICAgICAgICAgICAgICAgICAgICAgKnArKyA9ICd6JzsKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtcGF0dGVybi5jLUNoYW5nZS1zdHJpbmctbGVuZ2h0LXBhcmFtZXRlci10by1iZS1zaXplXy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy8wMDAxLXBhdHRlcm4uYy1DaGFuZ2Utc3RyaW5nLWxlbmdodC1wYXJhbWV0ZXItdG8tYmUtc2l6ZV8ucGF0Y2gKaW5kZXggOWFjNjIwMS4uN2NhNTgyZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtcGF0dGVybi5jLUNoYW5nZS1zdHJpbmctbGVuZ2h0LXBhcmFtZXRlci10by1iZS1zaXplXy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1wYXR0ZXJuLmMtQ2hhbmdlLXN0cmluZy1sZW5naHQtcGFyYW1ldGVyLXRvLWJlLXNpemVfLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAwMzU0NjdhYTBhYmZiYzBkZTdlNWQyNDU0M2Q0YWFiMzczMDE1OTNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzYWY1YTFlNTc5ZTMzMjRhMTNiYTFmODkyYzdiZWZiM2FiMzJkODk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgNyBNYXIgMjAxOSAyMTo1Njo1NyAtMDgwMAogU3ViamVjdDogW1BBVENIXSBwYXR0ZXJuLmM6IENoYW5nZSBzdHJpbmcgbGVuZ2h0IHBhcmFtZXRlciB0byBiZSBzaXplX3QgaW4KQEAgLTExLDIzICsxMSwyNCBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIHBhdHRlcm4uYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3BhdHRlcm4uYyBiL3BhdHRlcm4uYwotaW5kZXggNDViMWIwYy4uZjczYTRjMiAxMDA2NDQKK2luZGV4IGZmYWRkM2YuLjRlNWYxODcgMTAwNjQ0CiAtLS0gYS9wYXR0ZXJuLmMKICsrKyBiL3BhdHRlcm4uYwotQEAgLTQyOCw3ICs0MjgsNyBAQCBzdGF0aWMgaW50IGRvX3Jvdyh1bnNpZ25lZCBjaGFyICprbm93biwgdW5zaWduZWQgY2hhciAqZGVkdWNlZCwKLSAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpyb3csCi0gICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqbWlucG9zX2RvbmUsIHVuc2lnbmVkIGNoYXIgKm1heHBvc19kb25lLAotIAkJICB1bnNpZ25lZCBjaGFyICptaW5wb3Nfb2ssIHVuc2lnbmVkIGNoYXIgKm1heHBvc19vaywKLS0gICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzdGFydCwgaW50IGxlbiwgaW50IHN0ZXAsIGludCAqZGF0YSwKLSsgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzdGFydCwgc2l6ZV90IGxlbiwgaW50IHN0ZXAsIGludCAqZGF0YSwKLSAJCSAgdW5zaWduZWQgaW50ICpjaGFuZ2VkCitAQCAtNDI4LDcgKzQyOCw3IEBAIHN0YXRpYyBib29sIGRvX3Jvdyh1bnNpZ25lZCBjaGFyICprbm93biwgdW5zaWduZWQgY2hhciAqZGVkdWNlZCwKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcm93LAorICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICptaW5wb3NfZG9uZSwgdW5zaWduZWQgY2hhciAqbWF4cG9zX2RvbmUsCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm1pbnBvc19vaywgdW5zaWduZWQgY2hhciAqbWF4cG9zX29rLAorLSAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzdGFydCwgaW50IGxlbiwgaW50IHN0ZXAsIGludCAqZGF0YSwKKysgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqc3RhcnQsIHNpemVfdCBsZW4sIGludCBzdGVwLCBpbnQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqY2hhbmdlZAogICNpZmRlZiBTVEFOREFMT05FX1NPTFZFUgotIAkJICAsIGNvbnN0IGNoYXIgKnJvd2NvbCwgaW50IGluZGV4LCBpbnQgY2x1ZXdpZAorICAgICAgICAgICAgICAgICAgICAsIGNvbnN0IGNoYXIgKnJvd2NvbCwgaW50IGluZGV4LCBpbnQgY2x1ZXdpZAogLS0gCi0yLjIxLjAKKzIuMTcuMQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvZml4LWNvbXBpbGluZy1mYWlsdXJlLXdpdGgtb3B0aW9uLWctTy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy9maXgtY29tcGlsaW5nLWZhaWx1cmUtd2l0aC1vcHRpb24tZy1PLnBhdGNoCmluZGV4IGMxMzRhY2QuLjI4MDQwNTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy9maXgtY29tcGlsaW5nLWZhaWx1cmUtd2l0aC1vcHRpb24tZy1PLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy9maXgtY29tcGlsaW5nLWZhaWx1cmUtd2l0aC1vcHRpb24tZy1PLnBhdGNoCkBAIC0xLDQgKzEsNyBAQAotZ3RrLmM6IGZpeCBjb21waWxpbmcgZmFpbHVyZSB3aXRoIG9wdGlvbiAtZyAtTworRnJvbSA4NzZjNmZmMWUyMGY1MWIwOTIxYWNkYTk5ODYxZjQ3NmI2NDIzZjI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAxMSBBdWcgMjAxNCAxMjozOTo1MyArMDgwMAorU3ViamVjdDogW1BBVENIXSBndGsuYzogZml4IGNvbXBpbGluZyBmYWlsdXJlIHdpdGggb3B0aW9uIC1nIC1PCiAKIFRoZXJlIHdlcmUgY29tcGlsaW5nIGZhaWx1cmUgd2l0aCBvcHRpb24gLWcgLU8KIC4uLgpAQCAtMjEsMjMgKzI0LDIxIEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCiAtLS0KLSBndGsuYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgZ3RrLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9ndGsuYyBiL2d0ay5jCi1pbmRleCBhMmViYTJjLi5jNTRiZjYzIDEwMDY0NAoraW5kZXggNDU2NTgzNi4uNWU4M2I0OCAxMDA2NDQKIC0tLSBhL2d0ay5jCiArKysgYi9ndGsuYwotQEAgLTI0ODEsNyArMjQ4MSw3IEBAIGNoYXIgKmZnZXRsaW5lKEZJTEUgKmZwKQorQEAgLTI5NDQsNyArMjk0NCw3IEBAIHN0YXRpYyB2b2lkIGxpc3RfcHJlc2V0c19mcm9tX21lbnUoc3RydWN0IHByZXNldF9tZW51ICptZW51KQogIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICB7CiAgICAgIGNoYXIgKnBuYW1lID0gYXJndlswXTsKIC0gICAgY2hhciAqZXJyb3I7CiArICAgIGNoYXIgKmVycm9yID0gTlVMTDsKLSAgICAgaW50IG5nZW5lcmF0ZSA9IDAsIHByaW50ID0gRkFMU0UsIHB4ID0gMSwgcHkgPSAxOwotICAgICBpbnQgdGltZV9nZW5lcmF0aW9uID0gRkFMU0UsIHRlc3Rfc29sdmUgPSBGQUxTRSwgbGlzdF9wcmVzZXRzID0gRkFMU0U7Ci0gICAgIGludCBzb2xuID0gRkFMU0UsIGNvbG91ciA9IEZBTFNFOwotLS0gCi0xLjkuMQotCisgICAgIGludCBuZ2VuZXJhdGUgPSAwLCBweCA9IDEsIHB5ID0gMTsKKyAgICAgYm9vbCBwcmludCA9IGZhbHNlOworICAgICBib29sIHRpbWVfZ2VuZXJhdGlvbiA9IGZhbHNlLCB0ZXN0X3NvbHZlID0gZmFsc2UsIGxpc3RfcHJlc2V0cyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiCmluZGV4IDVlZTkxNjQuLjQxYjc4ZDYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9wdXp6bGVzX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvcHV6emxlc19naXQuYmIKQEAgLTEsNyArMSw3IEBACiBTVU1NQVJZID0gIlNpbW9uIFRhdGhhbSdzIFBvcnRhYmxlIFB1enpsZSBDb2xsZWN0aW9uIgogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5jaGlhcmsuZ3JlZW5lbmQub3JnLnVrL35zZ3RhdGhhbS9wdXp6bGVzLyIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9ZGE2MTEwZDRlZDEyMjVhMjg3ZWFiMmJmMGFjMDE5M2IiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT02MDk5ZjQ5ODFmOTQ2MWQ3ZjQxMTA5MWU2OWE3ZjA3YSIKIAogREVQRU5EUyA9ICJsaWJ4dCIKIApAQCAtMTAsNyArMTAsNiBAQAogCiBTUkNfVVJJID0gImdpdDovL2dpdC50YXJ0YXJ1cy5vcmcvc2ltb24vcHV6emxlcy5naXQgXAogICAgICAgICAgICBmaWxlOi8vZml4LWNvbXBpbGluZy1mYWlsdXJlLXdpdGgtb3B0aW9uLWctTy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1sYWJzLWluc3RlYWQtb2YtYWJzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtcGFsaXNhZGUtRml4LXdhcm5pbmdzLXdpdGgtY2xhbmctb24tYXJtLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLVduby1lcnJvci1mb3JtYXQtb3ZlcmZsb3ctaWYtdGhlLWNvbXBpbGVyLXN1cHBvci5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBhdHRlcm4uYy1DaGFuZ2Utc3RyaW5nLWxlbmdodC1wYXJhbWV0ZXItdG8tYmUtc2l6ZV8ucGF0Y2ggXApAQCAtMTgsNyArMTcsNyBAQAogICAgICAgICAgICAiCiAKIFVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKLVNSQ1JFViA9ICJjNmUwMTYxZGQ0NzU0MTUzMTZlZDY2ZGM4Mjc5NGQ2OGU1MmYwMDI1IgorU1JDUkVWID0gIjc5YTUzNzhiNWFkYzQ2ZWUzM2JhMzRkNTU3MzhmOTE2ZmI4YWRmYzkiCiBQRSA9ICIyIgogUFYgPSAiMC4wK2dpdCR7U1JDUFZ9IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC9saWJ3cGVfMS40LjAuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L2xpYndwZV8xLjQuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNDk5ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC9saWJ3cGVfMS40LjAuMS5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIkdlbmVyYWwtcHVycG9zZSBsaWJyYXJ5IHNwZWNpZmljYWxseSBkZXZlbG9wZWQgZm9yIHRoZSBXUEUtZmxhdm9yZWQgcG9ydCBvZiBXZWJLaXQuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL1dlYlBsYXRmb3JtRm9yRW1iZWRkZWQvbGlid3BlIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vV2ViUGxhdGZvcm1Gb3JFbWJlZGRlZC9saWJ3cGUvaXNzdWVzIgorCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM3MWE2MTZlYjQ5MDNjNmNiNzllOTg5M2E1ZjYxNWNjIgorREVQRU5EUyA9ICJ2aXJ0dWFsL2VnbCBsaWJ4a2Jjb21tb24iCisKKyMgV29ya2Fyb3VuZCBidWlsZCBpc3N1ZSB3aXRoIFJQaSB1c2VybGFuZCBFR0wgbGlicmFyaWVzLgorQ0ZMQUdTX2FwcGVuZF9ycGkgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3ZjNGdyYXBoaWNzJywgJycsICctRF9HTlVfU09VUkNFJywgZCl9IgorCitpbmhlcml0IGNtYWtlIGZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93cGV3ZWJraXQub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDk4NDlkZmIzNDg3NzM1NGYzNGYzMThlMTM4OTcxY2YyMmU2NzdiMjE3OWUxZjBhOGVhMDBhYjBiN2JkOGU5YiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLUVuYWJsZS1USFJFQURTX1BSRUZFUl9QVEhSRUFEX0ZMQUcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1FbmFibGUtVEhSRUFEU19QUkVGRVJfUFRIUkVBRF9GTEFHLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ODExOGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1FbmFibGUtVEhSRUFEU19QUkVGRVJfUFRIUkVBRF9GTEFHLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gOGVlNzgwNmFkMmQ1NjA2OTY3ZjdhMTUyOWExMTNmYjlkMWEzODZkZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDMgRmViIDIwMjAgMTc6MDY6MjcgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRW5hYmxlIFRIUkVBRFNfUFJFRkVSX1BUSFJFQURfRkxBRworCitGaXhlcyBidWlsZCBmYWlsdXJlcyBvbiByaXN2NjQKKworVGFrZW4gZnJvbSBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjMxODQzL3dlYmtpdAorCisgRW5hYmxlIFRIUkVBRFNfUFJFRkVSX1BUSFJFQURfRkxBRy4gVGhpcyB1c2VzIC1wdGhyZWFkIGluc3RlYWQgb2YKKy1scHRocmVhZCwgZml4aW5nIHRoZSA2NC1iaXQgUklTQy1WIGJ1aWxkIG9mIHRoZSBHVEsrIHBvcnQgZHVlIHRvCittaXNzaW5nIGF0b21pYyBwcmltaXRpdmVzLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIzMTg0My93ZWJraXRdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgICAgIHwgMiArKworIFNvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZSB8IDEgKworIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCitpbmRleCBkM2JlZWYxOS4uNmE5Mjg1NmYgMTAwNjQ0CistLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKK0BAIC0xNyw2ICsxNyw4IEBAIHNldChXRUJLSVRHVEtfSEVBREVSX0lOU1RBTExfRElSICIke0NNQUtFX0lOU1RBTExfSU5DTFVERURJUn0vd2Via2l0Z3RrLSR7V0VCS0lUCisgc2V0KElOVFJPU1BFQ1RJT05fSU5TVEFMTF9HSVJESVIgIiR7Q01BS0VfSU5TVEFMTF9GVUxMX0RBVEFESVJ9L2dpci0xLjAiKQorIHNldChJTlRST1NQRUNUSU9OX0lOU1RBTExfVFlQRUxJQkRJUiAiJHtMSUJfSU5TVEFMTF9ESVJ9L2dpcmVwb3NpdG9yeS0xLjAiKQorIAorK3NldChUSFJFQURTX1BSRUZFUl9QVEhSRUFEX0ZMQUcgT04pCisrCisgZmluZF9wYWNrYWdlKENhaXJvIDEuMTQuMCBSRVFVSVJFRCkKKyBmaW5kX3BhY2thZ2UoRm9udGNvbmZpZyAyLjguMCBSRVFVSVJFRCkKKyBmaW5kX3BhY2thZ2UoRnJlZXR5cGUgMi40LjIgUkVRVUlSRUQpCitkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlCitpbmRleCBiMmU4NzQxOC4uMzI2YWRlMjMgMTAwNjQ0CistLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKKysrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQorQEAgLTEsMyArMSw0IEBACisrc2V0KFRIUkVBRFNfUFJFRkVSX1BUSFJFQURfRkxBRyBPTikKKyBmaW5kX3BhY2thZ2UoVGhyZWFkcyBSRVFVSVJFRCkKKyAKKyBpZiAoTVNWQykKKy0tIAorMi4yNS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjI2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4yNi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTM5ZjAxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjI2LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJXZWJLaXQgd2ViIHJlbmRlcmluZyBlbmdpbmUgZm9yIHRoZSBHVEsrIHBsYXRmb3JtIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy53ZWJraXRndGsub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy8iCi0KLUxJQ0VOU0UgPSAiQlNEICYgTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DT1BZSU5HLkxJQjttZDU9ZDBjNmQ2Mzk3YTVkODQyODZkZGE3NThkYTU3YmQ2OTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vU291cmNlL1dlYkNvcmUvTElDRU5TRS1BUFBMRTttZDU9NDY0NmY5MDA4MmM0MGJjZjI5OGMyODVmOGJhYjBiMTIgXAotCQkgICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtTEdQTC0yO21kNT0zNjM1N2ZmZGUyYjY0YWUxNzdiMjQ5NDQ0NWI3OWQyMSBcCi0JCSAgICBmaWxlOi8vU291cmNlL1dlYkNvcmUvTElDRU5TRS1MR1BMLTIuMTttZDU9YTc3OGEzM2VmMzM4YWJiYWY4YjhhN2MzNmI2ZWVjODAgXAotCQkgICAiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy53ZWJraXRndGsub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaW5kR09iamVjdEludHJvc3BlY3Rpb24uY21ha2UtcHJlZml4LXZhcmlhYmxlcy1vYnRhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtV2hlbi1idWlsZGluZy1pbnRyb3NwZWN0aW9uLWZpbGVzLWFkZC1DTUFLRV9DX0ZMQUdTLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU9wdGlvbnNHVEsuY21ha2UtZHJvcC10aGUtaGFyZGNvZGVkLWludHJvc3BlY3Rpb24tZ3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtcmFjeS1wYXJhbGxlbC1idWlsZC1vZi1XZWJLaXQyLTQuMC5naXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Ud2Vhay1ndGtkb2Mtc2V0dGluZ3Mtc28tdGhhdC1ndGtkb2MtZ2VuZXJhdGlvbi13b3JrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3gzMl9zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Nyb3NzLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2luY2x1ZGVfYXJyYXkucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2NWUwNmZlNzNlZTE2NjQ0Nzg5NGFhZWE5NTAzOGUzYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2YjgwZjA2MzdhODA4MTg1NTlhYzhmZDUwZGIzYjM5NGY0MWNiNjE5MDRmYjliM2VkNjVmYTUxNjM1ODA2NTEyIgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBnb2JqZWN0LWludHJvc3BlY3Rpb24gcGVybG5hdGl2ZSBmZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ3RrLWRvYwotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIG9wZW5nbCIKLQotQ1ZFX1BST0RVQ1QgPSAid2Via2l0Z3RrIHdlYmtpdGd0a1wrIgotCi1ERVBFTkRTID0gInpsaWIgbGlic291cC0yLjQgY3VybCBsaWJ4bWwyIGNhaXJvIGxpYnhzbHQgbGlieHQgbGliaWRuIGxpYmdjcnlwdCBcCi0gICAgICAgICAgIGd0ayszIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGZsZXgtbmF0aXZlIGdwZXJmLW5hdGl2ZSBzcWxpdGUzIFwKLQkgICBwYW5nbyBpY3UgYmlzb24tbmF0aXZlIGdhd2sgaW50bHRvb2wtbmF0aXZlIGxpYndlYnAgXAotCSAgIGF0ayB1ZGV2IGhhcmZidXp6IGpwZWcgbGlicG5nIHB1bHNlYXVkaW8gbGlicnN2ZyBsaWJ0aGVvcmEgbGlidm9yYmlzIGxpYnhjb21wb3NpdGUgbGlieHRzdCBcCi0JICAgcnVieS1uYXRpdmUgbGlibm90aWZ5IGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCBcCi0JICAgZ2V0dGV4dC1uYXRpdmUgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYnRhc24xIFwKLSAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnd2F5bGFuZCcgLGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnd2ViZ2wgb3BlbmdsJywgJycgLGQpfSBcCi0gICAgICAgICAgICAgICAgICAgZW5jaGFudCBcCi0gICAgICAgICAgICAgICAgICAgbGlic2VjcmV0IFwKLSAgICAgICAgICAgICAgICAgICIKLQotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PTiwtREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PRkYsd2F5bGFuZCIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItREVOQUJMRV9YMTFfVEFSR0VUPU9OLC1ERU5BQkxFX1gxMV9UQVJHRVQ9T0ZGLHZpcnR1YWwvbGlieDExIgotUEFDS0FHRUNPTkZJR1tnZW9jbHVlXSA9ICItREVOQUJMRV9HRU9MT0NBVElPTj1PTiwtREVOQUJMRV9HRU9MT0NBVElPTj1PRkYsZ2VvY2x1ZSIKLVBBQ0tBR0VDT05GSUdbZW5jaGFudF0gPSAiLURFTkFCTEVfU1BFTExDSEVDSz1PTiwtREVOQUJMRV9TUEVMTENIRUNLPU9GRixlbmNoYW50IgotUEFDS0FHRUNPTkZJR1tndGsyXSA9ICItREVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyPU9OLC1ERU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzI9T0ZGLGd0aysiCi1QQUNLQUdFQ09ORklHW2dsZXMyXSA9ICItREVOQUJMRV9HTEVTMj1PTiwtREVOQUJMRV9HTEVTMj1PRkYsdmlydHVhbC9saWJnbGVzMiIKLVBBQ0tBR0VDT05GSUdbd2ViZ2xdID0gIi1ERU5BQkxFX1dFQkdMPU9OLC1ERU5BQkxFX1dFQkdMPU9GRix2aXJ0dWFsL2xpYmdsIgotUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi1ERU5BQkxFX09QRU5HTD1PTiwtREVOQUJMRV9PUEVOR0w9T0ZGLHZpcnR1YWwvbGliZ2wiCi1QQUNLQUdFQ09ORklHW2xpYnNlY3JldF0gPSAiLURVU0VfTElCU0VDUkVUPU9OLC1EVVNFX0xJQlNFQ1JFVD1PRkYsbGlic2VjcmV0IgotUEFDS0FHRUNPTkZJR1tsaWJoeXBoZW5dID0gIi1EVVNFX0xJQkhZUEhFTj1PTiwtRFVTRV9MSUJIWVBIRU49T0ZGLGxpYmh5cGhlbiIKLSMgU291cmNlIGlzIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvd29mZjIKLVBBQ0tBR0VDT05GSUdbd29mZjJdID0gIi1EVVNFX1dPRkYyPU9OLC1EVVNFX1dPRkYyPU9GRix3b2ZmMiIKLVBBQ0tBR0VDT05GSUdbb3BlbmpwZWddID0gIi1EVVNFX09QRU5KUEVHPU9OLC1EVVNFX09QRU5KUEVHPU9GRixvcGVuanBlZyIKLQotRVhUUkFfT0VDTUFLRSA9ICIgXAotCQktRFBPUlQ9R1RLIFwKLQkJLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgXAotCQkke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLURFTkFCTEVfSU5UUk9TUEVDVElPTj1PTicsICctREVOQUJMRV9JTlRST1NQRUNUSU9OPU9GRicsIGQpfSBcCi0JCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHVEtET0NfRU5BQkxFRCcsICdUcnVlJywgJy1ERU5BQkxFX0dUS0RPQz1PTicsICctREVOQUJMRV9HVEtET0M9T0ZGJywgZCl9IFwKLQkJLURFTkFCTEVfTUlOSUJST1dTRVI9T04gXAotICAgICAgICAgICAgICAgIC1EUFlUSE9OX0VYRUNVVEFCTEU9YHdoaWNoIHB5dGhvbjNgIFwKLSAgICAgICAgICAgICAgICAtREVOQUJMRV9CVUJCTEVXUkFQX1NBTkRCT1g9T0ZGIFwKLQkJIgotCi0jIEphdmFzY3JpcHQgSklUIGlzIG5vdCBzdXBwb3J0ZWQgb24gQVJDCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9hcmMgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotIyBCeSBkZWZhdWx0IDI1LWJpdCAibWVkaXVtIiBjYWxscyBhcmUgdXNlZCBvbiBBUkMKLSMgd2hpY2ggaXMgbm90IGVub3VnaCBmb3IgYmluYXJpZXMgbGFyZ2VyIHRoYW4gMzIgTWlCCi1DRkxBR1NfYXBwZW5kX2FyYyA9ICIgLW1sb25nLWNhbGxzIgotQ1hYRkxBR1NfYXBwZW5kX2FyYyA9ICIgLW1sb25nLWNhbGxzIgotCi0jIEphdmFzY3JpcHQgSklUIGlzIG5vdCBzdXBwb3J0ZWQgb24gcG93ZXJwYwotRVhUUkFfT0VDTUFLRV9hcHBlbmRfcG93ZXJwYyA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjNjQgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotCi0jIEFSTSBKSVQgY29kZSBkb2VzIG5vdCBidWlsZCBvbiBBUk12NC81LzYgYW55bW9yZQotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjUgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjYgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjQgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9taXBzYXJjaG4zMiA9ICIgLURVU0VfTERfR09MRD1PRkYgIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfcG93ZXJwYyA9ICIgLURVU0VfTERfR09MRD1PRkYgIgotCi0jIEpJVCBub3Qgc3VwcG9ydGVkIG9uIE1JUFMgZWl0aGVyCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9taXBzYXJjaCA9ICIgLURFTkFCTEVfSklUPU9GRiAtREVOQUJMRV9DX0xPT1A9T04gIgotCi0jIEpJVCBub3Qgc3VwcG9ydGVkIG9uIFgzMgotIyBBbiBhdHRlbXB0IHdhcyBtYWRlIHRvIHVwc3RyZWFtIEpJVCBzdXBwb3J0IGZvciB4MzIgaW4KLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQ1MCwgYnV0IHRoaXMgd2FzIGNsb3NlZCBhcwotIyB1bnJlc29sdmVkIGR1ZSB0byBsaW1pdGVkIFgzMiBhZG9wdGlvbi4KLUVYVFJBX09FQ01BS0VfYXBwZW5kX3g4Ni14MzIgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotCi1TRUNVUklUWV9DRkxBR1NfcmVtb3ZlX2FhcmNoNjQgPSAiLWZwaWUiCi1TRUNVUklUWV9DRkxBR1NfYXBwZW5kX2FhcmNoNjQgPSAiIC1mUElFIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3dlYmtpdDJndGstNC4wL2luamVjdGVkLWJ1bmRsZS9saWJ3ZWJraXQyZ3RraW5qZWN0ZWRidW5kbGUuc28iCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJjYS1jZXJ0aWZpY2F0ZXMgc2hhcmVkLW1pbWUtaW5mbyIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjAzNzAvCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCi0KLSMgaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD05NDc0Ci0jIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk4ODAKLSMgSlNDIEpJVCBjYW4gYnVpbGQgb24gQVJNdjcgd2l0aCAtbWFybSwgYnV0IGRvZXNuJ3Qgd29yayBvbiBydW50aW1lLgotIyBVcHN0cmVhbSBvbmx5IHRlc3RzIHJlZ3VsYXJseSB0aGUgSlNDIEpJVCBvbiBBUk12NyB3aXRoIFRodW1iMiAoLW10aHVtYikuCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY3YSA9ICJ0aHVtYiIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjdyID0gInRodW1iIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12N3ZlID0gInRodW1iIgotCi0jIHFlbXU6IHVuY2F1Z2h0IHRhcmdldCBzaWduYWwgMTEgKFNlZ21lbnRhdGlvbiBmYXVsdCkgLSBjb3JlIGR1bXBlZAotIyBTZWdtZW50YXRpb24gZmF1bHQKLUdJX0RBVEFfRU5BQkxFRF9hcm12N2EgPSAiRmFsc2UiCi1HSV9EQVRBX0VOQUJMRURfYXJtdjd2ZSA9ICJGYWxzZSIKLQotIyBDYW4ndCBiZSBidWlsdCB3aXRoIGNjYWNoZQotQ0NBQ0hFX0RJU0FCTEUgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjI2LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4yNi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0MTk3ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4yNi40LmJiCkBAIC0wLDAgKzEsMTMzIEBACitTVU1NQVJZID0gIldlYktpdCB3ZWIgcmVuZGVyaW5nIGVuZ2luZSBmb3IgdGhlIEdUSysgcGxhdGZvcm0iCitIT01FUEFHRSA9ICJodHRwczovL3d3dy53ZWJraXRndGsub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvIgorCitMSUNFTlNFID0gIkJTRCAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ09QWUlORy5MSUI7bWQ1PWQwYzZkNjM5N2E1ZDg0Mjg2ZGRhNzU4ZGE1N2JkNjkxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtQVBQTEU7bWQ1PTQ2NDZmOTAwODJjNDBiY2YyOThjMjg1ZjhiYWIwYjEyIFwKKwkJICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUxHUEwtMjttZDU9MzYzNTdmZmRlMmI2NGFlMTc3YjI0OTQ0NDViNzlkMjEgXAorCQkgICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtTEdQTC0yLjE7bWQ1PWE3NzhhMzNlZjMzOGFiYmFmOGI4YTdjMzZiNmVlYzgwIFwKKwkJICAgIgorCitTUkNfVVJJID0gImh0dHBzOi8vd3d3LndlYmtpdGd0ay5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpbmRHT2JqZWN0SW50cm9zcGVjdGlvbi5jbWFrZS1wcmVmaXgtdmFyaWFibGVzLW9idGEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1XaGVuLWJ1aWxkaW5nLWludHJvc3BlY3Rpb24tZmlsZXMtYWRkLUNNQUtFX0NfRkxBR1MtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtT3B0aW9uc0dUSy5jbWFrZS1kcm9wLXRoZS1oYXJkY29kZWQtaW50cm9zcGVjdGlvbi1ndC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1yYWN5LXBhcmFsbGVsLWJ1aWxkLW9mLVdlYktpdDItNC4wLmdpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVR3ZWFrLWd0a2RvYy1zZXR0aW5ncy1zby10aGF0LWd0a2RvYy1nZW5lcmF0aW9uLXdvcmsucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1FbmFibGUtVEhSRUFEU19QUkVGRVJfUFRIUkVBRF9GTEFHLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3gzMl9zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Nyb3NzLWNvbXBpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2luY2x1ZGVfYXJyYXkucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNjBmODgxNzI5ZjNiNzEyNDRiN2Y2ZTU4NzkwMDczZTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDM4NjkwMDcxM2RmYWRmOTc0MTE3NzIxMGIzMjYyM2NhYjIyNTYyYTc5ZmZkMGQ0NDZiNjY1Njk5MzRiMTEzZiIKKworaW5oZXJpdCBjbWFrZSBwa2djb25maWcgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHBlcmxuYXRpdmUgZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGd0ay1kb2MKKworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ29wZW5nbCcsICcnLCBkKX0iCisKK0NWRV9QUk9EVUNUID0gIndlYmtpdGd0ayB3ZWJraXRndGtcKyIKKworREVQRU5EUyA9ICJ6bGliIGxpYnNvdXAtMi40IGN1cmwgbGlieG1sMiBjYWlybyBsaWJ4c2x0IGxpYmdjcnlwdCBcCisgICAgICAgICAgIGd0ayszIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGZsZXgtbmF0aXZlIGdwZXJmLW5hdGl2ZSBzcWxpdGUzIFwKKwkgICBwYW5nbyBpY3UgYmlzb24tbmF0aXZlIGdhd2sgaW50bHRvb2wtbmF0aXZlIGxpYndlYnAgXAorCSAgIGF0ayB1ZGV2IGhhcmZidXp6IGpwZWcgbGlicG5nIGxpYnJzdmcgbGlidGhlb3JhIGxpYnZvcmJpcyBcCisJICAgcnVieS1uYXRpdmUgbGlibm90aWZ5IGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCBcCisJICAgZ2V0dGV4dC1uYXRpdmUgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYnRhc24xIFwKKyAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgb3BlbmdsJywgJ3dlYmdsIG9wZW5nbCcsICcnICxkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJycsICd3ZWJnbCBnbGVzMicgLGQpfSBcCisgICAgICAgICAgICAgICAgICAgZW5jaGFudCBcCisgICAgICAgICAgICAgICAgICAgbGlic2VjcmV0IFwKKyAgICAgICAgICAgICAgICAgICIKKworUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PTiwtREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PRkYsd2F5bGFuZCBsaWJ3cGUgd3BlYmFja2VuZC1mZG8gd2F5bGFuZC1uYXRpdmUiCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLURFTkFCTEVfWDExX1RBUkdFVD1PTiwtREVOQUJMRV9YMTFfVEFSR0VUPU9GRix2aXJ0dWFsL2xpYngxMSBsaWJ4Y29tcG9zaXRlIGxpYnhkYW1hZ2UgbGlieHJlbmRlciBsaWJ4dCIKK1BBQ0tBR0VDT05GSUdbZ2VvY2x1ZV0gPSAiLURFTkFCTEVfR0VPTE9DQVRJT049T04sLURFTkFCTEVfR0VPTE9DQVRJT049T0ZGLGdlb2NsdWUiCitQQUNLQUdFQ09ORklHW2VuY2hhbnRdID0gIi1ERU5BQkxFX1NQRUxMQ0hFQ0s9T04sLURFTkFCTEVfU1BFTExDSEVDSz1PRkYsZW5jaGFudDIiCitQQUNLQUdFQ09ORklHW2dsZXMyXSA9ICItREVOQUJMRV9HTEVTMj1PTiwtREVOQUJMRV9HTEVTMj1PRkYsdmlydHVhbC9saWJnbGVzMiIKK1BBQ0tBR0VDT05GSUdbd2ViZ2xdID0gIi1ERU5BQkxFX1dFQkdMPU9OLC1ERU5BQkxFX1dFQkdMPU9GRix2aXJ0dWFsL2xpYmdsIgorUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi1ERU5BQkxFX09QRU5HTD1PTiwtREVOQUJMRV9PUEVOR0w9T0ZGLHZpcnR1YWwvbGliZ2wiCitQQUNLQUdFQ09ORklHW2xpYnNlY3JldF0gPSAiLURVU0VfTElCU0VDUkVUPU9OLC1EVVNFX0xJQlNFQ1JFVD1PRkYsbGlic2VjcmV0IgorUEFDS0FHRUNPTkZJR1tsaWJoeXBoZW5dID0gIi1EVVNFX0xJQkhZUEhFTj1PTiwtRFVTRV9MSUJIWVBIRU49T0ZGLGxpYmh5cGhlbiIKK1BBQ0tBR0VDT05GSUdbd29mZjJdID0gIi1EVVNFX1dPRkYyPU9OLC1EVVNFX1dPRkYyPU9GRix3b2ZmMiIKK1BBQ0tBR0VDT05GSUdbb3BlbmpwZWddID0gIi1EVVNFX09QRU5KUEVHPU9OLC1EVVNFX09QRU5KUEVHPU9GRixvcGVuanBlZyIKKworIyB3ZWJraXRndGsgaXMgZnVsbCBvZiAvdXNyL2Jpbi9lbnYgcHl0aG9uLCBwYXJ0aWN1bGFyIGZvciBnZW5lcmF0aW5nIGRvY3MKK2RvX2NvbmZpZ3VyZVtwb3N0ZnVuY3NdICs9ICJzZXR1cF9weXRob25fbGluayIKK3NldHVwX3B5dGhvbl9saW5rKCkgeworCWlmIFsgISAtZSAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uIF07IHRoZW4KKwkJbG4gLXMgYHdoaWNoIHB5dGhvbjNgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24KKwlmaQorfQorCitFWFRSQV9PRUNNQUtFID0gIiBcCisJCS1EUE9SVD1HVEsgXAorCQktRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSBcCisJCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICctREVOQUJMRV9JTlRST1NQRUNUSU9OPU9OJywgJy1ERU5BQkxFX0lOVFJPU1BFQ1RJT049T0ZGJywgZCl9IFwKKwkJJHtAYmIudXRpbHMuY29udGFpbnMoJ0dUS0RPQ19FTkFCTEVEJywgJ1RydWUnLCAnLURFTkFCTEVfR1RLRE9DPU9OJywgJy1ERU5BQkxFX0dUS0RPQz1PRkYnLCBkKX0gXAorCQktREVOQUJMRV9NSU5JQlJPV1NFUj1PTiBcCisgICAgICAgICAgICAgICAgLURQWVRIT05fRVhFQ1VUQUJMRT1gd2hpY2ggcHl0aG9uM2AgXAorICAgICAgICAgICAgICAgIC1ERU5BQkxFX0JVQkJMRVdSQVBfU0FOREJPWD1PRkYgXAorCQkiCisKKyMgSmF2YXNjcmlwdCBKSVQgaXMgbm90IHN1cHBvcnRlZCBvbiBBUkMKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2FyYyA9ICIgLURFTkFCTEVfSklUPU9GRiAiCisjIEJ5IGRlZmF1bHQgMjUtYml0ICJtZWRpdW0iIGNhbGxzIGFyZSB1c2VkIG9uIEFSQworIyB3aGljaCBpcyBub3QgZW5vdWdoIGZvciBiaW5hcmllcyBsYXJnZXIgdGhhbiAzMiBNaUIKK0NGTEFHU19hcHBlbmRfYXJjID0gIiAtbWxvbmctY2FsbHMiCitDWFhGTEFHU19hcHBlbmRfYXJjID0gIiAtbWxvbmctY2FsbHMiCisKKyMgSmF2YXNjcmlwdCBKSVQgaXMgbm90IHN1cHBvcnRlZCBvbiBwb3dlcnBjCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjID0gIiAtREVOQUJMRV9KSVQ9T0ZGICIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX3Bvd2VycGM2NCA9ICIgLURFTkFCTEVfSklUPU9GRiAiCisKKyMgQVJNIEpJVCBjb2RlIGRvZXMgbm90IGJ1aWxkIG9uIEFSTXY0LzUvNiBhbnltb3JlCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NSA9ICIgLURFTkFCTEVfSklUPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NiA9ICIgLURFTkFCTEVfSklUPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NCA9ICIgLURFTkFCTEVfSklUPU9GRiAiCisKK0VYVFJBX09FQ01BS0VfYXBwZW5kX21pcHNhcmNoID0gIiAtRFVTRV9MRF9HT0xEPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjID0gIiAtRFVTRV9MRF9HT0xEPU9GRiAiCisKKyMgSklUIG5vdCBzdXBwb3J0ZWQgb24gTUlQUyBlaXRoZXIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX21pcHNhcmNoID0gIiAtREVOQUJMRV9KSVQ9T0ZGIC1ERU5BQkxFX0NfTE9PUD1PTiAiCisKKyMgSklUIG5vdCBzdXBwb3J0ZWQgb24gWDMyCisjIEFuIGF0dGVtcHQgd2FzIG1hZGUgdG8gdXBzdHJlYW0gSklUIHN1cHBvcnQgZm9yIHgzMiBpbgorIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDUwLCBidXQgdGhpcyB3YXMgY2xvc2VkIGFzCisjIHVucmVzb2x2ZWQgZHVlIHRvIGxpbWl0ZWQgWDMyIGFkb3B0aW9uLgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2LXgzMiA9ICIgLURFTkFCTEVfSklUPU9GRiAiCisKK1NFQ1VSSVRZX0NGTEFHU19yZW1vdmVfYWFyY2g2NCA9ICItZnBpZSIKK1NFQ1VSSVRZX0NGTEFHU19hcHBlbmRfYWFyY2g2NCA9ICIgLWZQSUUiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vd2Via2l0Mmd0ay00LjAvaW5qZWN0ZWQtYnVuZGxlL2xpYndlYmtpdDJndGtpbmplY3RlZGJ1bmRsZS5zbyIKKworUlJFQ09NTUVORFNfJHtQTn0gKz0gImNhLWNlcnRpZmljYXRlcyBzaGFyZWQtbWltZS1pbmZvIgorCisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDM3MC8KK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKKworIyBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0NzQKKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTg4MAorIyBKU0MgSklUIGNhbiBidWlsZCBvbiBBUk12NyB3aXRoIC1tYXJtLCBidXQgZG9lc24ndCB3b3JrIG9uIHJ1bnRpbWUuCisjIFVwc3RyZWFtIG9ubHkgdGVzdHMgcmVndWxhcmx5IHRoZSBKU0MgSklUIG9uIEFSTXY3IHdpdGggVGh1bWIyICgtbXRodW1iKS4KK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjdhID0gInRodW1iIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12N3IgPSAidGh1bWIiCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY3dmUgPSAidGh1bWIiCisKKyMgaW50cm9zcGVjdGlvbiBpbnNpZGUgcWVtdS1hcm0gaGFuZ3MgZm9yZXZlciBvbiBtdXNsL2FybSBidWlsZHMKKyMgdGhlcmVmb3JlIGRpc2FibGUgR0lfREFUQQorR0lfREFUQV9FTkFCTEVEX2xpYmMtbXVzbF9hcm12N2EgPSAiRmFsc2UiCitHSV9EQVRBX0VOQUJMRURfbGliYy1tdXNsX2FybXY3dmUgPSAiRmFsc2UiCisKKyMgQ2FuJ3QgYmUgYnVpbHQgd2l0aCBjY2FjaGUKK0NDQUNIRV9ESVNBQkxFID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93cGViYWNrZW5kLWZkb18xLjQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dwZWJhY2tlbmQtZmRvXzEuNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkMmY3ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93cGViYWNrZW5kLWZkb18xLjQuMS5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIldQRSdzIGJhY2tlbmQgYmFzZWQgb24gYSBmcmVlZGVza3RvcC5vcmcgc3RhY2suIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL0lnYWxpYS9XUEVCYWNrZW5kLWZkbyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0lnYWxpYS9XUEVCYWNrZW5kLWZkby9pc3N1ZXMiCisKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWY2MmNlZjJlMzY0NWUzZTc0ZWIwNWZkMzg5ZDdhNjYiCitERVBFTkRTID0gImdsaWItMi4wIGxpYnhrYmNvbW1vbiB3YXlsYW5kIHZpcnR1YWwvZWdsIGxpYndwZSIKKworREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiB3YXlsYW5kLW5hdGl2ZSIKKworaW5oZXJpdCBjbWFrZSBmZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorCitTUkNfVVJJID0gImh0dHBzOi8vd3Bld2Via2l0Lm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYyNDlhMGI3Y2JmYTY2MjIwNmE4ZDJmYTI0ZTJjNTc0ZTc1YzY4MWFkMGU5MzQ2ODA5MWYxZGM2OGRkYjI5OWQiCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci11dGlsXzEuNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS42LjEuYmIKaW5kZXggMWY5ZmVhMi4uMzg5NmM5MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS42LjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS42LjEuYmIKQEAgLTI4LDcgKzI4LDkgQEAKIAkJLS13aXRoLWV4cGF0PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0iCiAKIAotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgYmluY29uZmlnCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBiaW5jb25maWcgbXVsdGlsaWJfc2NyaXB0CisKK01VTFRJTElCX1NDUklQVFMgPSAiJHtQTn0tZGV2OiR7YmluZGlyfS9hcHUtMS1jb25maWciCiAKIE9FX0JJTkNPTkZJR19FWFRSQV9NQU5HTEUgPSAiIC1lICdzOmxvY2F0aW9uPXNvdXJjZTpsb2NhdGlvbj1pbnN0YWxsZWQ6JyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDEtQWRkLW9wdGlvbi10by1kaXNhYmxlLXRpbWVkLWRlcGVuZGFudC10ZXN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAxLUFkZC1vcHRpb24tdG8tZGlzYWJsZS10aW1lZC1kZXBlbmRhbnQtdGVzdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJmZjRlOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAxLUFkZC1vcHRpb24tdG8tZGlzYWJsZS10aW1lZC1kZXBlbmRhbnQtdGVzdHMucGF0Y2gKQEAgLTAsMCArMSw2OSBAQAorRnJvbSAyYmJlMjBiNGY2OWU4NGU3YTE4YmM3OWQzODI0ODY5NTNmNDc5MzI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CitEYXRlOiBUaHUsIDI2IE1hciAyMDIwIDE4OjMwOjM2ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBvcHRpb24gdG8gZGlzYWJsZSB0aW1lZCBkZXBlbmRhbnQgdGVzdHMKKworVGhlIGRpc2FibGVkIHRlc3RzIHJlbHkgb24gdGltaW5nIHRvIHBhc3MgY29ycmVjdGx5LiBPbiBhIHZpcnR1YWxpemVkIAorc3lzdGVtIHVuZGVyIGhlYXZ5IGxvYWQsIHRoZXNlIHRlc3RzIHJhbmRvbWx5IGZhaWwgYmVjYXVzZSB0aGV5IG1pc3MKK2EgdGltZXIgb3Igb3RoZXIgdGltaW5nIHJlbGF0ZWQgaXNzdWVzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorLS0tCisgY29uZmlndXJlLmluICAgICB8IDYgKysrKysrCisgaW5jbHVkZS9hcHIuaC5pbiB8IDEgKworIHRlc3QvdGVzdGxvY2suYyAgfCA0ICsrLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggZDlmMzJkNi4uZjBjNTY2MSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtMjg4Niw2ICsyODg2LDEyIEBAIEFDX0FSR19FTkFCTEUodGltZWRsb2NrcywKKyApCisgQUNfU1VCU1QoYXByX2hhc190aW1lZGxvY2tzKQorIAorK0FDX0FSR19FTkFCTEUodGltZWQtdGVzdHMsCisrICBbICAtLWRpc2FibGUtdGltZWQtdGVzdHMJICBEaXNhYmxlIHRpbWVkIHRlc3RzIF0sCisrICBbYXByX2hhc190aW1lZHRlc3RzPSIwIl0sIFthcHJfaGFzX3RpbWVkdGVzdHM9IjEiXQorKykKKytBQ19TVUJTVChhcHJfaGFzX3RpbWVkdGVzdHMpCisrCisgIyBoc3RyZXJyb3IgaXMgb25seSBuZWVkZWQgaWYgSVB2NiBpcyBub3QgZW5hYmxlZCwKKyAjIHNvIGdldGFkZHJpbmZvL2dhaV9zdHJlcnJvciBhcmUgbm90IHVzZWQuCisgaWYgdGVzdCAkaGF2ZV9pcHY2ID0gMDsgdGhlbgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXByLmguaW4gYi9pbmNsdWRlL2Fwci5oLmluCitpbmRleCBlZTk5ZGVmLi5jNDZhNWY0IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9hcHIuaC5pbgorKysrIGIvaW5jbHVkZS9hcHIuaC5pbgorQEAgLTI5OCw2ICsyOTgsNyBAQCBleHRlcm4gIkMiIHsKKyAjZGVmaW5lIEFQUl9IQVNfWFRIUkVBRF9GSUxFUyAgICAgQGFwcl9oYXNfeHRocmVhZF9maWxlc0AKKyAjZGVmaW5lIEFQUl9IQVNfT1NfVVVJRCAgICAgICAgICAgQG9zdXVpZEAKKyAjZGVmaW5lIEFQUl9IQVNfVElNRURMT0NLUyAgICAgICAgQGFwcl9oYXNfdGltZWRsb2Nrc0AKKysjZGVmaW5lIEFQUl9IQVZFX1RJTUVfREVQRU5EQU5UX1RFU1RTICAgICAgICBAYXByX2hhc190aW1lZHRlc3RzQAorIAorICNkZWZpbmUgQVBSX1BST0NBVFRSX1VTRVJfU0VUX1JFUVVJUkVTX1BBU1NXT1JEIEBhcHJfcHJvY2F0dHJfdXNlcl9zZXRfcmVxdWlyZXNfcGFzc3dvcmRACisgCitkaWZmIC0tZ2l0IGEvdGVzdC90ZXN0bG9jay5jIGIvdGVzdC90ZXN0bG9jay5jCitpbmRleCBhNDNmNDc3Li42MjMzZDBiIDEwMDY0NAorLS0tIGEvdGVzdC90ZXN0bG9jay5jCisrKysgYi90ZXN0L3Rlc3Rsb2NrLmMKK0BAIC0zOTYsMTMgKzM5NiwxMyBAQCBhYnRzX3N1aXRlICp0ZXN0bG9jayhhYnRzX3N1aXRlICpzdWl0ZSkKKyAgICAgYWJ0c19ydW5fdGVzdChzdWl0ZSwgdGhyZWFkc19ub3RfaW1wbCwgTlVMTCk7CisgI2Vsc2UKKyAgICAgYWJ0c19ydW5fdGVzdChzdWl0ZSwgdGVzdF90aHJlYWRfbXV0ZXgsIE5VTEwpOworLSNpZiBBUFJfSEFTX1RJTUVETE9DS1MKKysjaWYgQVBSX0hBU19USU1FRExPQ0tTICYmIEFQUl9IQVZFX1RJTUVfREVQRU5EQU5UX1RFU1RTCisgICAgIGFidHNfcnVuX3Rlc3Qoc3VpdGUsIHRlc3RfdGhyZWFkX3RpbWVkbXV0ZXgsIE5VTEwpOworICNlbmRpZgorICAgICBhYnRzX3J1bl90ZXN0KHN1aXRlLCB0ZXN0X3RocmVhZF9yd2xvY2ssIE5VTEwpOworICAgICBhYnRzX3J1bl90ZXN0KHN1aXRlLCB0ZXN0X2NvbmQsIE5VTEwpOworICAgICBhYnRzX3J1bl90ZXN0KHN1aXRlLCB0ZXN0X3RpbWVvdXRjb25kLCBOVUxMKTsKKy0jaWYgQVBSX0hBU19USU1FRExPQ0tTCisrI2lmIEFQUl9IQVNfVElNRURMT0NLUyAmJiBBUFJfSEFWRV9USU1FX0RFUEVOREFOVF9URVNUUworICAgICBhYnRzX3J1bl90ZXN0KHN1aXRlLCB0ZXN0X3RpbWVvdXRtdXRleCwgTlVMTCk7CisgI2VuZGlmCisgI2VuZGlmCistLSAKKzIuMjMuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS43LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS43LjAuYmIKaW5kZXggZWNhOWNkZS4uNzA3M2FmOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNy4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwcl8xLjcuMC5iYgpAQCAtMTgsMTIgKzE4LDEzIEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDA2LWFwci1maXgtb2ZmX3Qtc2l6ZS1kb2Vzbi10LW1hdGNoLWluLWdsaWJjLXdoZW4tY3Jvc3MucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwNy1leHBsaWNpdGx5LWxpbmstbGliYXByLWFnYWluc3QtcGh0cmVhZC10by1tYWtlLWdvbGQtLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2xpYnRvb2xpemVfY2hlY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtb3B0aW9uLXRvLWRpc2FibGUtdGltZWQtZGVwZW5kYW50LXRlc3RzLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiN2ExNGE4M2Q2NjRlODc1OTllYTI1ZmY0NDMyZTQ4YTciCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTJlMTQ4ZjBiMmU5OWI4ZTVjNmNhYTA5ZjZkNGZiNGRkM2U4M2Y3NDRhYTcyYTk1MmY5NGY1YTE0NDM2ZjdlYSIKIAotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGxpYl9wYWNrYWdlIGJpbmNvbmZpZyBtdWx0aWxpYl9oZWFkZXIgcHRlc3QKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBsaWJfcGFja2FnZSBiaW5jb25maWcgbXVsdGlsaWJfaGVhZGVyIHB0ZXN0IG11bHRpbGliX3NjcmlwdAogCiBPRV9CSU5DT05GSUdfRVhUUkFfTUFOR0xFID0gIiAtZSAnczpsb2NhdGlvbj1zb3VyY2U6bG9jYXRpb249aW5zdGFsbGVkOiciCiAKQEAgLTM5LDYgKzQwLDcgQEAKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCiBQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorUEFDS0FHRUNPTkZJR1t0aW1lZC10ZXN0c10gPSAiLS1lbmFibGUtdGltZWQtdGVzdHMsLS1kaXNhYmxlLXRpbWVkLXRlc3RzLCIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CiAJIyBBdm9pZCBhYnNvbHV0ZSBwYXRocyBmb3IgZ3JlcCBzaW5jZSBpdCBjYXVzZXMgZmFpbHVyZXMKQEAgLTUxLDYgKzUzLDkgQEAKIAkuL2J1aWxkY29uZiAyCiB9CiAKK01VTFRJTElCX1NDUklQVFMgPSAiJHtQTn0tZGV2OiR7YmluZGlyfS9hcHItMS1jb25maWcgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1kZXY6JHtkYXRhZGlyfS9idWlsZC0xL2Fwcl9ydWxlcy5tayIKKwogRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vYXByLmV4cCAke2RhdGFkaXJ9L2J1aWxkLTEvKiIKIFJERVBFTkRTXyR7UE59LWRldiArPSAiYmFzaCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4zMi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4zMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2E5ZGUxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMzIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiQVQtU1BJIDIgVG9vbGtpdCBCcmlkZ2UiCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kubGludXhmb3VuZGF0aW9uLm9yZy9hY2Nlc3NpYmlsaXR5L2QtYnVzIgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lOWYyODhiYTk4MmQ2MDUxOGYzNzViNTg5ODI4Mzg4NiIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNmE0YjI3YmFjZTNiOTM1MjcyMWVkNDYyYjk1ZjYyOTEiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIwYjUxZTZkMzM5ZmEyYmNjYTNhM2UzMTU5Y2NlYTU3NGM2N2IxMDdmMWFjOGIwMDA0N2ZhNjBlMzRjZTdhNDVjIgotCi1ERVBFTkRTID0gImRidXMgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGF0ayBhdC1zcGkyLWNvcmUgbGlieG1sMiIKLQotR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKLWluaGVyaXQgZ25vbWViYXNlIGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZ25vbWUgJHtQTn0tZ3RrMiIKLQotRklMRVNfJHtQTn0tZ25vbWUgPSAiJHtsaWJkaXJ9L2dub21lLXNldHRpbmdzLWRhZW1vbi0zLjAvZ3RrLW1vZHVsZXMiCi1GSUxFU18ke1BOfS1ndGsyID0gIiR7bGliZGlyfS9ndGstMi4wL21vZHVsZXMvbGliYXRrLWJyaWRnZS4qIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjM0LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjM0LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI2MmFlOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMzQuMi5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIkFULVNQSSAyIFRvb2xraXQgQnJpZGdlIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKK0xJQ0VOU0UgPSAiTEdQTC0yLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjU4Y2QyNzg1NzRlMTAxMzYzYjE4ZDlhOGI3MDUzZDY3IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiOTAxMzIzY2VlMGVlZjA1YzAxZWM0ZGVlMDZjNzAxYWVlY2E4MWEzMTRhN2Q2MDIxNmZhMzYzMDA1ZTI3ZjRmMCIKKworREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBhdGsgYXQtc3BpMi1jb3JlIGxpYnhtbDIiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGdub21lYmFzZSBmZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworUEFDS0FHRVMgPSsgIiR7UE59LWdub21lICR7UE59LWd0azIiCisKK0ZJTEVTXyR7UE59LWdub21lID0gIiR7bGliZGlyfS9nbm9tZS1zZXR0aW5ncy1kYWVtb24tMy4wL2d0ay1tb2R1bGVzIgorRklMRVNfJHtQTn0tZ3RrMiA9ICIke2xpYmRpcn0vZ3RrLTIuMC9tb2R1bGVzL2xpYmF0ay1icmlkZ2UuKiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitDRkxBR1MgKz0gIi1mY29tbW9uIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlLzAwMDEtRml4LXNvdXJjZS1yZXByb2R1Y2liaWxpdHkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmUvMDAwMS1GaXgtc291cmNlLXJlcHJvZHVjaWJpbGl0eS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjMxOTY5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlLzAwMDEtRml4LXNvdXJjZS1yZXByb2R1Y2liaWxpdHkucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSBiN2ZhMGFhMDBiMDdlMDNlMzM4ZGQwMmFmNTY0NDMxYmYyZjJiMTg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9zaHVhIFdhdHQgPEpvc2h1YS5XYXR0QGdhcm1pbi5jb20+CitEYXRlOiBXZWQsIDIwIE5vdiAyMDE5IDE1OjI0OjAyIC0wNjAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBzb3VyY2UgcmVwcm9kdWNpYmlsaXR5CisKK1RoZSBnZW5lcmF0ZWQgZW51bSB0eXBlIGZpbGVzIGNhbiBiZSBpbmNsdWRlZCBpbiBzb3VyY2UgcGFja2FnZXMgbWVhbnQKK2ZvciBkZWJ1Z2dpbmcsIGFuZCB0aHVzIG5lZWQgdG8gYmUgcmVwcm9kdWNpYmxlLiBSZXBsYWNlIHRoZSBhYnNvbHV0ZQoraW5jbHVkZSBvZiB0aGUgaGVhZGVyIHdpdGggdGhlIGJhc2VuYW1lLiBUaGlzIGlzIHN1ZmZpY2llbnQgYmVjYXVzZSB0aGUKK3RhcmdldCBpbmNsdWRlIGZpbGVzIGFyZSBhbHdheXMgaW4gdGhlIGluY2x1ZGUgcGF0aCBhbnl3YXkuCisKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9hdC1zcGkyLWNvcmUvbWVyZ2VfcmVxdWVzdHMvMjVdCitTaWduZWQtb2ZmLWJ5OiBKb3NodWEgV2F0dCA8Sm9zaHVhLldhdHRAZ2FybWluLmNvbT4KKy0tLQorIGF0c3BpL2F0c3BpLWVudW0tdHlwZXMuYy50ZW1wbGF0ZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2F0c3BpL2F0c3BpLWVudW0tdHlwZXMuYy50ZW1wbGF0ZSBiL2F0c3BpL2F0c3BpLWVudW0tdHlwZXMuYy50ZW1wbGF0ZQoraW5kZXggMzg1ZDBlZS4uOTJlNDkzNyAxMDA2NDQKKy0tLSBhL2F0c3BpL2F0c3BpLWVudW0tdHlwZXMuYy50ZW1wbGF0ZQorKysrIGIvYXRzcGkvYXRzcGktZW51bS10eXBlcy5jLnRlbXBsYXRlCitAQCAtNSw3ICs1LDcgQEAKKyAKKyAvKioqIEJFR0lOIGZpbGUtcHJvZHVjdGlvbiAqKiovCisgLyogZW51bWVyYXRpb25zIGZyb20gIkBiYXNlbmFtZUAiICovCistI2luY2x1ZGUgIkBmaWxlbmFtZUAiCisrI2luY2x1ZGUgIkBiYXNlbmFtZUAiCisgCisgLyoqKiBFTkQgZmlsZS1wcm9kdWN0aW9uICoqKi8KKyAKKy0tIAorMi4yMy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjMyLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4zMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTA1MmE4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjMyLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1TVU1NQVJZID0gIkFzc2lzdGl2ZSBUZWNobm9sb2d5IFNlcnZpY2UgUHJvdmlkZXIgSW50ZXJmYWNlIChkYnVzIGNvcmUpIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYiCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk5OGZkOWQ4NThmOGZhMjJjNGM4YzE1NTY3YmY2MjU0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNjMmFhOTM3ZWJmYWNhMmM4NjU2OWJjZTliMTZhMzRmYmUyMGQ2OWVmMGM1ODg0NjMxM2IxYzQyZjUzYjBkNTMiCi0KLVgxMURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlieGkgbGlieHRzdCIKLQotREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIgotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnJHtYMTFERVBFTkRTfScsICcnLCBkKX0iCi0KLWluaGVyaXQgbWVzb24gZ3RrLWRvYyBnZXR0ZXh0IHN5c3RlbWQgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotRVhUUkFfT0VNRVNPTiA9ICIgLURzeXN0ZW1kX3VzZXJfZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKLSAgICAgICAgICAgICAgICAgIC1EZGJ1c19kYWVtb249JHtiaW5kaXJ9L2RidXMtZGFlbW9uIFwKLSAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJy1EeDExPXllcycsICctRHgxMT1ubycsIGQpfSBcCi0iCi0KLUdUS0RPQ19NRVNPTl9PUFRJT04gPSAiZG9jcyIKLQotR0lSX01FU09OX09QVElPTiA9ICdpbnRyb3NwZWN0aW9uJwotR0lSX01FU09OX0VOQUJMRV9GTEFHID0gJ3llcycKLUdJUl9NRVNPTl9ESVNBQkxFX0ZMQUcgPSAnbm8nCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8qLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL2FjY2Vzc2liaWxpdHktc2VydmljZXMvKi5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RlZmF1bHRzL2F0LXNwaTIgXAotICAgICAgICAgICAgICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9L2F0LXNwaS1kYnVzLWJ1cy5zZXJ2aWNlwqBcCi0gICAgICAgICAgICAgICAgIgotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMzQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjM0LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRlMDVlNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjM0LjAuYmIKQEAgLTAsMCArMSwzNyBAQAorU1VNTUFSWSA9ICJBc3Npc3RpdmUgVGVjaG5vbG9neSBTZXJ2aWNlIFByb3ZpZGVyIEludGVyZmFjZSAoZGJ1cyBjb3JlKSIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5saW51eGZvdW5kYXRpb24ub3JnL2FjY2Vzc2liaWxpdHkvZC1idXMiCitMSUNFTlNFID0gIkxHUEwtMi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtc291cmNlLXJlcHJvZHVjaWJpbGl0eS5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjUzYzIxNTY1NTA3MTA1ZmI2ODAzMWNkOWMyMWE1NTliIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2MjljZGJkNjc0ZTUzOWY4OTEyMDI4NTEyYWY1ODM5OTA5MzhjN2I0OWUyNTE4NGMxMjZiMDAxMjFlZjExYzYiCisKK1gxMURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlieGkgbGlieHRzdCIKKworREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIgorREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnJHtYMTFERVBFTkRTfScsICcnLCBkKX0iCisKK2luaGVyaXQgbWVzb24gZ3RrLWRvYyBnZXR0ZXh0IHN5c3RlbWQgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworRVhUUkFfT0VNRVNPTiA9ICIgLURzeXN0ZW1kX3VzZXJfZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKKyAgICAgICAgICAgICAgICAgIC1EZGJ1c19kYWVtb249JHtiaW5kaXJ9L2RidXMtZGFlbW9uIFwKKyAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJy1EeDExPXllcycsICctRHgxMT1ubycsIGQpfSBcCisiCisKK0dUS0RPQ19NRVNPTl9PUFRJT04gPSAiZG9jcyIKKworR0lSX01FU09OX09QVElPTiA9ICdpbnRyb3NwZWN0aW9uJworR0lSX01FU09OX0VOQUJMRV9GTEFHID0gJ3llcycKK0dJUl9NRVNPTl9ESVNBQkxFX0ZMQUcgPSAnbm8nCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8qLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL2FjY2Vzc2liaWxpdHktc2VydmljZXMvKi5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RlZmF1bHRzL2F0LXNwaTIgXAorICAgICAgICAgICAgICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9L2F0LXNwaS1kYnVzLWJ1cy5zZXJ2aWNlwqBcCisgICAgICAgICAgICAgICAgIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrLzAwMDEtbWVzb24uYnVpbGQtZW5hYmxlLWludHJvc3BlY3Rpb24tZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGsvMDAwMS1tZXNvbi5idWlsZC1lbmFibGUtaW50cm9zcGVjdGlvbi1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFiMDhiYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGsvMDAwMS1tZXNvbi5idWlsZC1lbmFibGUtaW50cm9zcGVjdGlvbi1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gNDRkNDZiYWE1ZTE1MTljNmMzZGY3ZTRkMzRmYjMzM2UyNDdiNWJjOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci1EYXRlOiBGcmksIDYgQXByIDIwMTggMTI6MDQ6MDAgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbWVzb24uYnVpbGQ6IGVuYWJsZSBpbnRyb3NwZWN0aW9uIGZvciBjcm9zcy1jb21waWxlCi0KLUl0IHdvcmtzIGZpbmUgaW4gT0UtY29yZSBhbmQgZG9lc24ndCBuZWVkIHRvIGJlIGRpc2FibGVkLiBMZXQgdGhlIHVzZXIgZGVjaWRlCi1pZiBpdCBzaG91bGQgYmUgZGlzYWJsZWQgb3Igbm90LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLQotLS0tCi0gYXRrL21lc29uLmJ1aWxkIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYXRrL21lc29uLmJ1aWxkIGIvYXRrL21lc29uLmJ1aWxkCi1pbmRleCAwYWQ2N2U1Li4xZDJhNDljIDEwMDY0NAotLS0tIGEvYXRrL21lc29uLmJ1aWxkCi0rKysgYi9hdGsvbWVzb24uYnVpbGQKLUBAIC0xMzcsNyArMTM3LDcgQEAgbGliYXRrX2RlcCA9IGRlY2xhcmVfZGVwZW5kZW5jeShsaW5rX3dpdGg6IGxpYmF0aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llczogZ2xpYl9kZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VzOiBhdGtfZW51bV9oKQotIAotLWlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIGFuZCBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykKLStpZiBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykKLSAgIGdub21lLmdlbmVyYXRlX2dpcihsaWJhdGssCi0gICAgICAgICAgICAgICAgICAgICAgc291cmNlczogYXRrX3NvdXJjZXMgKyBhdGtfaGVhZGVycyArIFsgYXRrX2VudW1faCBdICsgWyBhdGtfdmVyc2lvbl9oIF0sCi0gICAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlOiAnQXRrJywKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjMyLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4zMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzIyMzcyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjMyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIkFjY2Vzc2liaWxpdHkgdG9vbGtpdCBmb3IgR05PTUUiCi1IT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvR0FQLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJ4MTEvbGlicyIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXRrL2F0a3V0aWwuYztlbmRsaW5lPTE4O21kNT02ZmQzMWNkMmZkYzliMzBmNjE5Y2E4ZDgxOWJjMTJkMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdGsvYXRrLmg7ZW5kbGluZT0xODttZDU9ZmNkNzcxMDE4N2UwZWFlNDg1ZTM1NmMzMGQxYjBjM2IiCi0KLSMgTmVlZCBnZXR0ZXh0LW5hdGl2ZSBhcyBNZXNvbiBjYW4ndCB0dXJuIG9mZiBpMThuCi1ERVBFTkRTID0gImdldHRleHQtbmF0aXZlIGdsaWItMi4wIgotCi1HTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgotaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotU1JDX1VSSSArPSAiIGZpbGU6Ly8wMDAxLW1lc29uLmJ1aWxkLWVuYWJsZS1pbnRyb3NwZWN0aW9uLWZvci1jcm9zcy1jb21waWxlLnBhdGNoIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYzEwYjBiMmFmM2MxOTllNDJjYWE2Mjc1Yjg0NWM0OWQiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJjYjQxZmVkYTdmZTRlZjBkYWEwMjQ0NzE0MzhlYTAyMTk1OTJiYWY3YzI5MTM0N2U1YTg1OGJiNjRlNDA5MWNjIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjM0LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4zNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NzM5N2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4zNC4xLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiQWNjZXNzaWJpbGl0eSB0b29sa2l0IGZvciBHTk9NRSIKK0hPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9HQVAvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCitTRUNUSU9OID0gIngxMS9saWJzIgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdGsvYXRrdXRpbC5jO2VuZGxpbmU9MTg7bWQ1PTZmZDMxY2QyZmRjOWIzMGY2MTljYThkODE5YmMxMmQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F0ay9hdGsuaDtlbmRsaW5lPTE4O21kNT1mY2Q3NzEwMTg3ZTBlYWU0ODVlMzU2YzMwZDFiMGMzYiIKKworIyBOZWVkIGdldHRleHQtbmF0aXZlIGFzIE1lc29uIGNhbid0IHR1cm4gb2ZmIGkxOG4KK0RFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUgZ2xpYi0yLjAiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGdub21lYmFzZSBndGstZG9jIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJmNjBiYmFmOGJkZDA4YjkzZDk4NzM2YjU0YjJmYzhlOSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImQ0ZjBlM2IzZDIxMjY1ZmNmMmJjMzcxZTExN2RhNTFjNDJlZGUxYTcxZjZkYjFjODM0ZTY5NzZiYjIwOTk3Y2IiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC8wMDAxLXRlc3QtcGF0Y2gtb3V0LWZhaWxpbmctYml0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvMDAwMS10ZXN0LXBhdGNoLW91dC1mYWlsaW5nLWJpdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEyZmZlZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvMDAwMS10ZXN0LXBhdGNoLW91dC1mYWlsaW5nLWJpdHMucGF0Y2gKQEAgLTAsMCArMSw2MyBAQAorRnJvbSA5ZTA4MjE5ZTBlOTllZTI1ODljZjM1ZmE4ZDUyY2VmMzUxNWFjY2NlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDEyIERlYyAyMDE5IDE1OjQ3OjQ5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3Q6IHBhdGNoIG91dCBmYWlsaW5nIGJpdHMKKworSSBoYXZlIGNvbmZpcm1lZCBvbiB0aGUgaG9zdCBkaXN0cm8gKFVidW50dSAxOC4wNCkgdGhhdCB0aGV5CitmYWlsIGFzIHdlbGw7IHVwc3RyZWFtIHByb2JhYmx5IGhhdmVuJ3Qgbm90aWNlZCBiZWNhdXNlIHRoZQordGVzdCBpcyBvbmx5IGV4ZWN1dGVkIHVuZGVyIHN1ZG8uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzYWJsaW5nIHRlc3RzIGluc3RlYWQgb2YgZml4aW5nIHRoZW0gcHJvcGVybHldCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHRlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0IHwgMTMgLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0IGIvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKK2luZGV4IDhmOGY4MjUuLjIxZThhOTUgMTAwNjQ0CistLS0gYS90ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdAorKysrIGIvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKK0BAIC01MCwxMCArNTAsNiBAQCBVc2VyIGRhZW1vbiBpcyBhIG1lbWJlciBpbiB0aGUgb3duaW5nIGdyb3VwLCB3aGljaCBoYXMgb25seSByZWFkIGFjY2Vzcy4KKyBWZXJpZnkgdGhpcy4KKyAKKyAJJCBzdSBkYWVtb24KKy0JJCBjYXQgZgorLQk+IHJvb3QKKy0JPiBiaW4KKy0KKyAJJCBlY2hvIGRhZW1vbiA+PiBmCisgCT5+IC4qZjogUGVybWlzc2lvbiBkZW5pZWQkCisgCitAQCAtMTQ2LDggKzE0Miw2IEBAIHRoZSBvd25pbmcgZ3JvdXAsIGhlIHNob3VsZCBzdGlsbCBoYXZlIG5vIHdyaXRlIGFjY2Vzcy4KKyAJJCBzZXRmYWNsIC14IGc6ZGFlbW9uIGYKKyAKKyAJJCBzdSBkYWVtb24KKy0JJCBlY2hvIGRhZW1vbjQgPj4gZgorLQk+fiAuKmY6IFBlcm1pc3Npb24gZGVuaWVkJAorIAorIAorIENoYW5nZSB0aGUgb3duaW5nIGdyb3VwLiBUaGUgb3RoZXIgcGVybWlzc2lvbnMgc2hvdWxkIG5vdyBncmFudCB1c2VyCitAQCAtMTU4LDEyICsxNTIsNiBAQCBkYWVtb24gd3JpdGUgYWNjZXNzLgorIAorIAkkIHN1IGRhZW1vbgorIAkkIGVjaG8gZGFlbW9uNSA+PiBmCistCSQgY2F0IGYKKy0JPiByb290CistCT4gYmluCistCT4gZGFlbW9uCistCT4gZGFlbW9uMgorLQk+IGRhZW1vbjUKKyAKKyAKKyBWZXJpZnkgdGhhdCBwZXJtaXNzaW9ucyBpbiBzZXBhcmF0ZSBtYXRjaGluZyBBQ0wgZW50cmllcyBkbyBub3QKK0BAIC0xNzMsNyArMTYxLDYgQEAgYWNjdW11bGF0ZS4KKyAJJCBzZXRmYWNsIC1tIGc6YmluOnIsZzpkYWVtb246dyBmCisgCisgCSQgc3UgZGFlbW9uCistCSQgOiA8IGYKKyAJJCA6ID4gZgorIAkkIDogPD4gZgorIAk+fiAuKmY6IFBlcm1pc3Npb24gZGVuaWVkJAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC8wMDAxLXRlc3RzLWRvLW5vdC1oYXJkY29kZS10aGUtYnVpbGQtcGF0aC1pbnRvLWEtaGVscGVyLWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsLzAwMDEtdGVzdHMtZG8tbm90LWhhcmRjb2RlLXRoZS1idWlsZC1wYXRoLWludG8tYS1oZWxwZXItbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2VmMGJiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC8wMDAxLXRlc3RzLWRvLW5vdC1oYXJkY29kZS10aGUtYnVpbGQtcGF0aC1pbnRvLWEtaGVscGVyLWwucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorRnJvbSAzOWQzMzJhODgwMWRlNWQ5ZWYwOWRhY2IzZGJhODVjMjA4YjdiMmFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDEyIERlYyAyMDE5IDEzOjQ1OjUyICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3RzOiBkbyBub3QgaGFyZGNvZGUgdGhlIGJ1aWxkIHBhdGggaW50byBhIGhlbHBlciBsaWJyYXJ5CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgdGVzdC9NYWtlbW9kdWxlLmFtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVzdC9NYWtlbW9kdWxlLmFtIGIvdGVzdC9NYWtlbW9kdWxlLmFtCitpbmRleCAxN2Q0OTI3Li4wMTVkZTdmIDEwMDY0NAorLS0tIGEvdGVzdC9NYWtlbW9kdWxlLmFtCisrKysgYi90ZXN0L01ha2Vtb2R1bGUuYW0KK0BAIC0zMCw3ICszMCw3IEBAIEVYVFJBX0RJU1QgKz0gXAorIGNoZWNrX0xUTElCUkFSSUVTID0gbGlidGVzdGxvb2t1cC5sYQorIAorIGxpYnRlc3Rsb29rdXBfbGFfU09VUkNFUyA9IHRlc3QvdGVzdF9wYXNzd2QuYyB0ZXN0L3Rlc3RfZ3JvdXAuYworLWxpYnRlc3Rsb29rdXBfbGFfQ0ZMQUdTID0gLURCQVNFRElSPVwiJChhYnNfc3JjZGlyKVwiCisrbGlidGVzdGxvb2t1cF9sYV9DRkxBR1MgPSAtREJBU0VESVI9XCIvdG1wL2FjbC1wdGVzdFwiCisgbGlidGVzdGxvb2t1cF9sYV9MREZMQUdTID0gLXJwYXRoICQoYWJzX2J1aWxkZGlyKQorIAorIEFNX1RFU1RTX0VOVklST05NRU5UID0gUEFUSD0iJChhYnNfdG9wX2J1aWxkZGlyKTokJFBBVEgiOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC9NYWtlZmlsZS1saWJhY2wtc2hvdWxkLWRlcGVuZC1vbi1pbmNsdWRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC9NYWtlZmlsZS1saWJhY2wtc2hvdWxkLWRlcGVuZC1vbi1pbmNsdWRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzdjYmEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvTWFrZWZpbGUtbGliYWNsLXNob3VsZC1kZXBlbmQtb24taW5jbHVkZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gZDgyNDU3Y2U1Y2E3NDU1ZTMzNmRhNWUyNDRkOTVmOTBlNTJhYWVmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAxOCBBcHIgMjAxNyAwMToxNzoyNiAtMDcwMAotU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogbGliYWNsIHNob3VsZCBkZXBlbmQgb24gaW5jbHVkZQotCi1GaXhlZCByYWNlIGlzc3VlOgotIEluIGZpbGUgaW5jbHVkZWQgZnJvbSBhY2xfY29weV9lbnRyeS5jOjIyOjA6Ci0gbGliYWNsLmg6MTk6MjE6IGZhdGFsIGVycm9yOiBzeXMvYWNsLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLSAgI2luY2x1ZGUgPHN5cy9hY2wuaD4KLQotW3NuaXBdCi0KLSBjb21waWxhdGlvbiB0ZXJtaW5hdGVkLgotIGFjbF9nZXRfZmlsZS5jOjI3OjI0OiBmYXRhbCBlcnJvcjogYWNsL2xpYmFjbC5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0gICNpbmNsdWRlIDxhY2wvbGliYWNsLmg+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgXgotCi1UaGUgYWNsLmggaXMgaW4gImluY2x1ZGUiIGRpcmVjdG9yeSwgYW5kIGluY2x1ZGUvTWFrZWZpbGUgY3JlYXRlcwotc3ltbGluayAic3lzIiBhbmQgImFjbCIgcG9pbnN0IHRvIGN1cnJlbnQgZGlyY3Rvcnk6Ci0kIGxzIGluY2x1ZGUvIC1sCi1hY2wgLT4gLgotc3lzIC0+IC4KLQotU28gaWYgImxpYmFjbCIgdGFyZ2V0IHJ1bnMgYmVmb3JlICJpbmNsdWRlIiwgdGhlIGVycm9yIHdvdWxkIGhhcHBlbgotc2luY2Ugbm8gImFjbCIgb3IgInN5cyIgZGlyZWN0b3J5LgotCi1MZXQgbGliYWNsIGRlcGVuZCBvbiBpbmNsdWRlIGNhbiBmaXggdGhlIHByb2JsZW0uCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIE1ha2VmaWxlIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggZGNlMzJkMy4uOGE3OTM3OSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTQ4LDcgKzQ4LDcgQEAgZWxzZQotIGVuZGlmCi0gCi0gIyB0b29sL2xpYiBkZXBlbmRlbmNpZXMKLS1saWJhY2w6IGxpYm1pc2MKLStsaWJhY2w6IGluY2x1ZGUgbGlibWlzYwotIGdldGZhY2wgc2V0ZmFjbCBjaGFjbDogbGliYWNsCi0gCi0gaWZlcSAoJChIQVZFX0JVSUxEREVGUyksIHllcykKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvYWNsLWZpeC10aGUtb3JkZXItb2YtZXhwZWN0ZWQtb3V0cHV0LW9mLWdldGZhY2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL2FjbC1maXgtdGhlLW9yZGVyLW9mLWV4cGVjdGVkLW91dHB1dC1vZi1nZXRmYWNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjc2NWZkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvYWNsLWZpeC10aGUtb3JkZXItb2YtZXhwZWN0ZWQtb3V0cHV0LW9mLWdldGZhY2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOTggKzAsMCBAQAotYWNsOiBmaXggdGhlIG9yZGVyIG9mIGV4cGVjdGVkIG91dHB1dCBvZiBnZXRmYWNsCi0KLVRoZSByZXN1bHQgb2YgZ2V0ZmFjbCBpcyBzb3J0ZWQgYnkgdXNlciBpZC4KLUluIENlbnRvcyBvciBSSEVMLCBiaW4gdXNlciBpZCBpcyAxIGFuZCBkYWVtb24gdXNlciBpZCBpcyAyLgotQnV0IGluIG91ciBpbWFnZSwgYmluIHVzZXIgaWQgaXMgMiBhbmQgZGFlbW9uIHVzZXIgaWQgaXMgMS4KLVRoZSBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlIHRvIG1ha2UgcHRlc3QgcGFzcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQ2hvbmcgTHUgPENob25nLkx1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0L21pc2MudGVzdCB8ICAgMzggKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0L21pc2MudGVzdCBiL3Rlc3QvbWlzYy50ZXN0Ci1pbmRleCA2ZTk4MDUzLi41M2FlNWIwIDEwMDY0NAotLS0tIGEvdGVzdC9taXNjLnRlc3QKLSsrKyBiL3Rlc3QvbWlzYy50ZXN0Ci1AQCAtNzksOCArNzksOCBAQCBNdWx0aXBsZSB1c2VycwotIAotIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBmCi0gCT4gdXNlcjo6cnctCi0tCT4gdXNlcjpiaW46cnctCi0gCT4gdXNlcjpkYWVtb246ci0tCi0rCT4gdXNlcjpiaW46cnctCi0gCT4gZ3JvdXA6OnItLQotIAk+IG1hc2s6OnJ3LQotIAk+IG90aGVyOjpyLS0KLUBAIC05NCw4ICs5NCw4IEBAIE11bHRpcGxlIGdyb3VwcwotIAotIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBmCi0gCT4gdXNlcjo6cnctCi0tCT4gdXNlcjpiaW46cnctCi0gCT4gdXNlcjpkYWVtb246ci0tCi0rCT4gdXNlcjpiaW46cnctCi0gCT4gZ3JvdXA6OnItLQotIAk+IGdyb3VwOmRhZW1vbjpyLS0KLSAJPiBncm91cDp1c2Vyczpydy0KLUBAIC0xMTEsOCArMTExLDggQEAgUmVtb3ZlIG9uZSBncm91cAotIAotIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBmCi0gCT4gdXNlcjo6cnctCi0tCT4gdXNlcjpiaW46cnctCi0gCT4gdXNlcjpkYWVtb246ci0tCi0rCT4gdXNlcjpiaW46cnctCi0gCT4gZ3JvdXA6OnItLQotIAk+IGdyb3VwOmRhZW1vbjpyLS0KLSAJPiBtYXNrOjpydy0KLUBAIC0xNDYsOCArMTQ2LDggQEAgRGVmYXVsdCBBQ0wKLSAKLSAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZAotIAk+IHVzZXI6OnJ3eAotLQk+IHVzZXI6YmluOnJ3eAotIAk+IHVzZXI6ZGFlbW9uOnJ3LQotKwk+IHVzZXI6YmluOnJ3eAotIAk+IGdyb3VwOjpyLXgKLSAJPiBtYXNrOjpyd3gKLSAJPiBvdGhlcjo6LS0tCi1AQCAtMjM2LDE2ICsyMzYsMTYgQEAgQWRkIHNvbWUgdXNlcnMgYW5kIGdyb3VwcwotIAotIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBkL2QKLSAJPiB1c2VyOjpyd3gKLS0JPiB1c2VyOmJpbjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiB1c2VyOmRhZW1vbjpyLXgKLSsJPiB1c2VyOmJpbjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiBncm91cDo6ci14Ci0gCT4gZ3JvdXA6ZGFlbW9uOnJ3eAkjZWZmZWN0aXZlOnIteAotIAk+IGdyb3VwOnVzZXJzOnIteAotIAk+IG1hc2s6OnIteAotIAk+IG90aGVyOjotLS0KLSAJPiBkZWZhdWx0OnVzZXI6OnJ3eAotLQk+IGRlZmF1bHQ6dXNlcjpiaW46cnd4CSNlZmZlY3RpdmU6ci14Ci0gCT4gZGVmYXVsdDp1c2VyOmRhZW1vbjpyLXgKLSsJPiBkZWZhdWx0OnVzZXI6YmluOnJ3eAkjZWZmZWN0aXZlOnIteAotIAk+IGRlZmF1bHQ6Z3JvdXA6OnIteAotIAk+IGRlZmF1bHQ6bWFzazo6ci14Ci0gCT4gZGVmYXVsdDpvdGhlcjo6LS0tCi1AQCAtMjYyLDE2ICsyNjIsMTYgQEAgU3ltbGluayBpbiBkaXJlY3Rvcnkgd2l0aCBkZWZhdWx0IEFDTD8KLSAKLSAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZC9sCi0gCT4gdXNlcjo6cnd4Ci0tCT4gdXNlcjpiaW46cnd4CSNlZmZlY3RpdmU6ci14Ci0gCT4gdXNlcjpkYWVtb246ci14Ci0rCT4gdXNlcjpiaW46cnd4CSNlZmZlY3RpdmU6ci14Ci0gCT4gZ3JvdXA6OnIteAotIAk+IGdyb3VwOmRhZW1vbjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiBncm91cDp1c2VyczpyLXgKLSAJPiBtYXNrOjpyLXgKLSAJPiBvdGhlcjo6LS0tCi0gCT4gZGVmYXVsdDp1c2VyOjpyd3gKLS0JPiBkZWZhdWx0OnVzZXI6YmluOnJ3eAkjZWZmZWN0aXZlOnIteAotIAk+IGRlZmF1bHQ6dXNlcjpkYWVtb246ci14Ci0rCT4gZGVmYXVsdDp1c2VyOmJpbjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiBkZWZhdWx0Omdyb3VwOjpyLXgKLSAJPiBkZWZhdWx0Om1hc2s6OnIteAotIAk+IGRlZmF1bHQ6b3RoZXI6Oi0tLQotQEAgLTI4NywxNiArMjg3LDE2IEBAIERvZXMgbWFzayBtYW5pcHVsYXRpb24gd29yaz8KLSAKLSAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZC9kCi0gCT4gdXNlcjo6cnd4Ci0tCT4gdXNlcjpiaW46ci14Ci0gCT4gdXNlcjpkYWVtb246ci14Ci0rCT4gdXNlcjpiaW46ci14Ci0gCT4gZ3JvdXA6OnIteAotIAk+IGdyb3VwOmRhZW1vbjpyLXgKLSAJPiBncm91cDp1c2VyczpyLXgKLSAJPiBtYXNrOjpyLXgKLSAJPiBvdGhlcjo6LS0tCi0gCT4gZGVmYXVsdDp1c2VyOjpyd3gKLS0JPiBkZWZhdWx0OnVzZXI6YmluOnJ3eAkjZWZmZWN0aXZlOnIteAotIAk+IGRlZmF1bHQ6dXNlcjpkYWVtb246ci14Ci0rCT4gZGVmYXVsdDp1c2VyOmJpbjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiBkZWZhdWx0Omdyb3VwOjpyLXgKLSAJPiBkZWZhdWx0Om1hc2s6OnIteAotIAk+IGRlZmF1bHQ6b3RoZXI6Oi0tLQotQEAgLTMwOCwxNiArMzA4LDE2IEBAIERvZXMgbWFzayBtYW5pcHVsYXRpb24gd29yaz8KLSAKLSAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZC9kCi0gCT4gdXNlcjo6cnd4Ci0tCT4gdXNlcjpiaW46ci14Ci0gCT4gdXNlcjpkYWVtb246ci14Ci0rCT4gdXNlcjpiaW46ci14Ci0gCT4gZ3JvdXA6OnIteAotIAk+IGdyb3VwOmRhZW1vbjpyLXgKLSAJPiBncm91cDp1c2VyczpyLXgKLSAJPiBtYXNrOjpyLXgKLSAJPiBvdGhlcjo6LS0tCi0gCT4gZGVmYXVsdDp1c2VyOjpyd3gKLS0JPiBkZWZhdWx0OnVzZXI6YmluOnJ3eAotIAk+IGRlZmF1bHQ6dXNlcjpkYWVtb246ci14Ci0rCT4gZGVmYXVsdDp1c2VyOmJpbjpyd3gKLSAJPiBkZWZhdWx0Omdyb3VwOjpyLXgKLSAJPiBkZWZhdWx0Om1hc2s6OnJ3eAotIAk+IGRlZmF1bHQ6b3RoZXI6Oi0tLQotQEAgLTMzMyw4ICszMzMsOCBAQCBSZW1vdmUgdGhlIGRlZmF1bHQgQUNMCi0gCi0gCSQgZ2V0ZmFjbCAtLW9taXQtaGVhZGVyIGQKLSAJPiB1c2VyOjpyd3gKLS0JPiB1c2VyOmJpbjpyd3gKLSAJPiB1c2VyOmRhZW1vbjpydy0KLSsJPiB1c2VyOmJpbjpyd3gKLSAJPiBncm91cDo6ci14Ci0gCT4gbWFzazo6cnd4Ci0gCT4gb3RoZXI6Oi0tLQotQEAgLTM3MywxNCArMzczLDE0IEBAIE5vdywgY2htb2Qgc2hvdWxkIGNoYW5nZSB0aGUgZ3JvdXBfb2JqIGVudHJ5Ci0gCi0gCSQgZ2V0ZmFjbCAtLW9taXQtaGVhZGVyIGQKLSAJPiB1c2VyOjpyd3gKLS0JPiB1c2VyOmJpbjpyLXgKLSAJPiB1c2VyOmRhZW1vbjpyd3gKLSsJPiB1c2VyOmJpbjpyLXgKLSAJPiBncm91cDo6cnd4Ci0gCT4gbWFzazo6cnd4Ci0gCT4gb3RoZXI6OnIteAotIAk+IGRlZmF1bHQ6dXNlcjo6cnd4Ci0tCT4gZGVmYXVsdDp1c2VyOmJpbjpyLXgKLSAJPiBkZWZhdWx0OnVzZXI6ZGFlbW9uOnJ3eAotKwk+IGRlZmF1bHQ6dXNlcjpiaW46ci14Ci0gCT4gZGVmYXVsdDpncm91cDo6cnd4Ci0gCT4gZGVmYXVsdDptYXNrOjpyd3gKLSAJPiBkZWZhdWx0Om90aGVyOjpyLXgKLUBAIC0zOTIsMTQgKzM5MiwxNCBAQCBOb3csIGNobW9kIHNob3VsZCBjaGFuZ2UgdGhlIGdyb3VwX29iaiBlbnRyeQotIAotIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBkCi0gCT4gdXNlcjo6cnd4Ci0tCT4gdXNlcjpiaW46ci14Ci0gCT4gdXNlcjpkYWVtb246cnd4CSNlZmZlY3RpdmU6ci14Ci0rCT4gdXNlcjpiaW46ci14Ci0gCT4gZ3JvdXA6OnJ3eAkjZWZmZWN0aXZlOnIteAotIAk+IG1hc2s6OnIteAotIAk+IG90aGVyOjotLS0KLSAJPiBkZWZhdWx0OnVzZXI6OnJ3eAotLQk+IGRlZmF1bHQ6dXNlcjpiaW46ci14Ci0gCT4gZGVmYXVsdDp1c2VyOmRhZW1vbjpyd3gKLSsJPiBkZWZhdWx0OnVzZXI6YmluOnIteAotIAk+IGRlZmF1bHQ6Z3JvdXA6OnJ3eAotIAk+IGRlZmF1bHQ6bWFzazo6cnd4Ci0gCT4gZGVmYXVsdDpvdGhlcjo6ci14Ci1AQCAtNDExLDE0ICs0MTEsMTQgQEAgTm93LCBjaG1vZCBzaG91bGQgY2hhbmdlIHRoZSBncm91cF9vYmogZW50cnkKLSAKLSAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZAotIAk+IHVzZXI6OnJ3eAotLQk+IHVzZXI6YmluOnIteAotIAk+IHVzZXI6ZGFlbW9uOnJ3eAkjZWZmZWN0aXZlOnIteAotKwk+IHVzZXI6YmluOnIteAotIAk+IGdyb3VwOjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiBtYXNrOjpyLXgKLSAJPiBvdGhlcjo6LS0tCi0gCT4gZGVmYXVsdDp1c2VyOjpyd3gKLS0JPiBkZWZhdWx0OnVzZXI6YmluOnIteAotIAk+IGRlZmF1bHQ6dXNlcjpkYWVtb246cnd4Ci0rCT4gZGVmYXVsdDp1c2VyOmJpbjpyLXgKLSAJPiBkZWZhdWx0Omdyb3VwOjpyd3gKLSAJPiBkZWZhdWx0Om1hc2s6OnJ3eAotIAk+IGRlZmF1bHQ6b3RoZXI6OnIteAotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvY29uZmlndXJlLmFjIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC9jb25maWd1cmUuYWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZjJlOGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC9jb25maWd1cmUuYWMKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAwOSAgQW5kcmVhcyBHcnVlbmJhY2hlciA8YWdydWVuQHN1c2UuZGU+Ci0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0jIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotIwotQUNfSU5JVChpbmNsdWRlL2FjbC5oKQotQUNfQ09ORklHX0FVWF9ESVIoWy5dKQotQUNfQ09ORklHX01BQ1JPX0RJUihbbTRdKQotQUNfQ09ORklHX0hFQURFUihpbmNsdWRlL2NvbmZpZy5oKQotQUNfUFJFRklYX0RFRkFVTFQoL3VzcikKLQotQUNfUFJPR19MSUJUT09MCi0KLUFDX0FSR19FTkFCTEUoc2hhcmVkLAotWyAtLWVuYWJsZS1zaGFyZWQ9W3llcy9ub10gRW5hYmxlIHVzZSBvZiBzaGFyZWQgbGlicmFyaWVzIFtkZWZhdWx0PXllc11dLCwKLQllbmFibGVfc2hhcmVkPXllcykKLUFDX1NVQlNUKGVuYWJsZV9zaGFyZWQpCi0KLUFDX0FSR19FTkFCTEUoZ2V0dGV4dCwKLVsgLS1lbmFibGUtZ2V0dGV4dD1beWVzL25vXSBFbmFibGUgYWx0ZXJuYXRlIGxhbmd1YWdlIHN1cHBvcnQgW2RlZmF1bHQ9eWVzXV0sLAotCWVuYWJsZV9nZXR0ZXh0PXllcykKLUFDX1NVQlNUKGVuYWJsZV9nZXR0ZXh0KQotCi1BQ19BUkdfRU5BQkxFKGxpYjY0LAotWyAtLWVuYWJsZS1saWI2ND1beWVzL25vXSBFbmFibGUgbGliNjQgc3VwcG9ydCBbZGVmYXVsdD1ub11dLCwKLQllbmFibGVfbGliNjQ9bm8pCi1BQ19TVUJTVChlbmFibGVfbGliNjQpCi0KLUFDX1BBQ0tBR0VfR0xPQkFMUyhhY2wpCi1BQ19QQUNLQUdFX1VUSUxJVElFUyhhY2wpCi1BQ19QQUNLQUdFX05FRURfQVRUUl9YQVRUUl9ICi1BQ19QQUNLQUdFX05FRURfQVRUUl9FUlJPUl9ICi1BQ19NVUxUSUxJQigkZW5hYmxlX2xpYjY0KQotQUNfUEFDS0FHRV9ORUVEX0dFVFhBVFRSX0xJQkFUVFIKLUFDX01BTlVBTF9GT1JNQVQKLQotQUNfRlVOQ19HQ0NfVklTSUJJTElUWQotCi1BQ19PVVRQVVQoaW5jbHVkZS9idWlsZGRlZnMpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvcnVuLXB0ZXN0CmluZGV4IGE1Njk0NmQuLjQzMTI4MjMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvcnVuLXB0ZXN0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvcnVuLXB0ZXN0CkBAIC00LDYxICs0LDcgQEAKIAogI3VtYXNrIDA3NwogCi1FWFQzX0lNQUdFPWV4dDMuaW1nCi1FWFQzX01PVU5UX1BPSU5UPS9tbnQvZXh0MworbWtkaXIgLXAgL3RtcC9hY2wtcHRlc3QvdGVzdAorY3AgdGVzdC90ZXN0LiogL3RtcC9hY2wtcHRlc3QvdGVzdAogCi10cmFwICdybSAtZiAke0VYVDNfSU1BR0V9JyBFWElUCi0KLWRkIGlmPS9kZXYvemVybyBvZj0ke0VYVDNfSU1BR0V9IGJzPTFNIGNvdW50PTEKLWlmIFsgIiQ/IiAtZXEgMCBdOyB0aGVuCi0JZWNobyAiUEFTUzogZHVtcCBleHQzLmltZyIKLWVsc2UKLQllY2hvICJGQUlMOiBkdW1wIGV4dDMuaW1nIgotCWV4aXQgMQotZmkKLQotbWtmcy5leHQzIC1GICR7RVhUM19JTUFHRX0KLWlmIFsgIiQ/IiAtZXEgMCBdOyB0aGVuCi0JZWNobyAiUEFTUzogbWtmcy5leHQzIC1GIGV4dDMuaW1nIgotZWxzZQotCWVjaG8gIkZBSUw6IG1rZnMuZXh0MyAtRiBleHQzLmltZyIKLQlleGl0IDEKLWZpCi0KLWlmIFsgLWQgJEVYVDNfTU9VTlRfUE9JTlQgXTsgdGhlbgotCWVjaG8gIm1vdW50IHBvaW50IGV4aXN0IgotZWxzZQotCW1rZGlyIC1wICRFWFQzX01PVU5UX1BPSU5UCi1maQotCi0KLW1vdW50IC1vIGxvb3AscncsYWNsICAke0VYVDNfSU1BR0V9ICRFWFQzX01PVU5UX1BPSU5UCi1pZiBbICIkPyIgLWVxIDAgXTsgdGhlbgotCWVjaG8gIlBBU1M6IG1vdW50IGV4dDMuaW1nIgotZWxzZQotCWVjaG8gIkZBSUw6IG1vdW50IGV4dDMuaW1nIgotCWV4aXQgMQotZmkKLQotY3AgLXJmIC4vdGVzdC8gJEVYVDNfTU9VTlRfUE9JTlQKLQotY2QgJEVYVDNfTU9VTlRfUE9JTlQvdGVzdC8KLQotaWYJc2VkIC1lICdzIV5iaW46eDoyOiQhYmluOng6MjpkYWVtb24hJyA8IC9ldGMvZ3JvdXAgPiBndG1wCi10aGVuCWlmCWNwIC9ldGMvZ3JvdXAgZ3JvdXAub3JpZzsKLQl0aGVuCWNwIGd0bXAgL2V0Yy9ncm91cAotCQltYWtlICAtayB0ZXN0cyByb290LXRlc3RzIHwgc2VkIFwKLQkJCS1lICdzfF5cWy4qXF0gXCguKlwpIC0tIG9rJHxQQVNTOiBcMXwnIFwKLQkgIAkJLWUgJ3N8XlxbLipcXSBcKC4qXCkgLS0gZmFpbGVkfEZBSUw6IFwxfCcKLQkJY3AgZ3JvdXAub3JpZyAvZXRjL2dyb3VwCi0JZWxzZQllY2hvICJGQUlMOiBjb3VsZG4ndCBzYXZlIG9yaWdpbmFsIGdyb3VwIGZpbGUuIgotCQlleGl0IDEKLQlmaQotZWxzZQllY2hvICJGQUlMOiBjb3VsZG4ndCBjcmVhdGUgbW9kaWZpZWQgZ3JvdXAgZmlsZS4iCi0JZXhpdCAxCi1maQotCi1jZCAtCi11bW91bnQgJEVYVDNfTU9VTlRfUE9JTlQKLXJtIC1yZiAkRVhUM19NT1VOVF9QT0lOVAotcm0gJEVYVDNfSU1BR0UKK21ha2UgdGVzdC1zdWl0ZS5sb2cKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvdGVzdC1maXgtZGlyZWN0b3J5LXBlcm1pc3Npb25zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1kaXJlY3RvcnktcGVybWlzc2lvbnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2NDk5MGEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1kaXJlY3RvcnktcGVybWlzc2lvbnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDMxMTU4OWZlZGYxOTYxNjgzODJkOGYwZGIzMDNhYjMyOGJjZjlkODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQZXRlciBTZWViYWNoIDxwZXRlci5zZWViYWNoQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDExIE1heSAyMDE2IDE1OjE2OjA2IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFjbC5pbmMsIHJ1bi1wdGVzdDogaW1wcm92ZSBwdGVzdCBmdW5jdGlvbmFsaXR5IG9uIGxpbWl0ZWQKLQotY29tbWl0IGM0NWJhZTg0ODE3YTcwZmVmNmMyYjY2MWEwN2E0OTJhMGQyM2FlODUKLQotICAgIEZpeCBwZXJtaXNzaW9ucyBvbiB0ZW1wb3JhcnkgZGlyZWN0b3J5Ci0KLSAgICBUaGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSdzIHBlcm1pc3Npb25zIGhhdmUgdG8gYWxsb3cgb3RoZXIgdXNlcnMgdG8KLSAgICB2aWV3IHRoZSBkaXJlY3RvcnkuIEEgZGVmYXVsdCB1bWFzayBvZiAwMjIgaXMgY29tbW9uLCBidXQgbm90IG1hbmRhdG9yeSwKLSAgICBhbmQgc2VjdXJlIHN5c3RlbXMgbWF5IGhhdmUgbW9yZSByZXN0cmljdGl2ZSBkZWZhdWx0cy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFNlZWJhY2ggPHBldGVyLnNlZWJhY2hAd2luZHJpdmVyLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2FjbC5naXQvY29tbWl0Lz9pZD1jNjc3MmE5NTg4MDBkZTA2NDQ4MjYzNGY3N2MyMGEwZmFhZmM1YWY2IF0KLQotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0IHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS90ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdCBiL3Rlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0Ci1pbmRleCA0MjYxNWY1Li4wOThiNTJhIDEwMDY0NAotLS0tIGEvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKLSsrKyBiL3Rlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0Ci1AQCAtMTYsNiArMTYsNyBAQCBDcnkgaW1tZWRpYXRlbHkgaWYgd2UgYXJlIG5vdCBydW5uaW5nIGFzIHJvb3QuCi0gRmlyc3QsIHNldCB1cCBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgYW5kIGNyZWF0ZSBhIHJlZ3VsYXIgZmlsZSB3aXRoCi0gZGVmaW5lZCBwZXJtaXNzaW9ucy4KLSAKLSsJJCB1bWFzayAwMjIKLSAJJCBta2RpciBkCi0gCSQgY2QgZAotIAkkIHVtYXNrIDAyNwotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3Rlc3QtZml4LWluc3VmZmljaWVudC1xdW90aW5nLW9mLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1pbnN1ZmZpY2llbnQtcXVvdGluZy1vZi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM5MjQ2NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3Rlc3QtZml4LWluc3VmZmljaWVudC1xdW90aW5nLW9mLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLUZyb20gZTk4Y2U4YWNmODRkMTJlYTY3YTNhYzc2YmY2M2M2ZDg3ZDlhZjg2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEthbWlsIER1ZGthIDxrZHVka2FAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMjAgTWF5IDIwMTMgMTY6Mzg6MDYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gdGVzdDogZml4IGluc3VmZmljaWVudCBxdW90aW5nIG9mICdcJwotCi1UaGlzIGlzIGEgZm9sbG93LXVwIHRvIDdmMmM5MWI4MzY5MjQyYThkYmMyYjMwNGE1YjcxYjJhODVmNWI4NTUsIHdoaWNoCi1jYXVzZWQgc2JpdHMtcmVzdG9yZS50ZXN0IHRvIGZhaWwgaW4gdGhlIGZvbGxvd2luZyB3YXkgaW4gY2FzZSBTRUxpbnV4Ci13YXMgZGlzYWJsZWQ6Ci0KLSoqKiBzYml0cy1yZXN0b3JlLnRlc3QgKioqCi1bM10gJCB1bWFzayAwMjIgLS0gb2sKLVs0XSAkIG1rZGlyIGQgLS0gb2sKLVs1XSAkIHRvdWNoIGQvZyAtLSBvawotWzZdICQgdG91Y2ggZC91IC0tIG9rCi1bN10gJCBjaG1vZCB1K3MgZC91IC0tIG9rCi1bOF0gJCBjaG1vZCBnK3MgZC9nIC0tIG9rCi1bOV0gJCBjaG1vZCArdCBkIC0tIG9rCi1bMTBdICQgZ2V0ZmFjbCAtUiBkID4gZC5hY2wgLS0gb2sKLVsxMV0gJCBybSAtUiBkIC0tIG9rCi1bMTJdICQgbWtkaXIgZCAtLSBvawotWzEzXSAkIHRvdWNoIGQvZyAtLSBvawotWzE0XSAkIHRvdWNoIGQvdSAtLSBvawotWzE1XSAkIHNldGZhY2wgLS1yZXN0b3JlIGQuYWNsIC0tIG9rCi1bMTZdICQgbHMgLWRsIGQgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzLy4kLy9nJyAtLSBmYWlsZWQKLWRyd3hyLXhyLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gZHJ3eHIteHItdAotWzE4XSAkIGxzIC1kbCBkL3UgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzLy4kLy9nJyAtLSBmYWlsZWQKLS1yd1NyLS1yLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gLXJ3U3ItLXItLQotWzIwXSAkIGxzIC1kbCBkL2cgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzLy4kLy9nJyAtLSBmYWlsZWQKLS1ydy1yLVNyLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gLXJ3LXItU3ItLQotWzIyXSAkIHJtIC1SZiBkIC0tIG9rCi0xNyBjb21tYW5kcyAoMTQgcGFzc2VkLCAzIGZhaWxlZCkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvYWNsLmdpdC9jb21taXQvP2lkPWU5OGNlOGFjZjg0ZDEyZWE2N2EzYWM3NmJmNjNjNmQ4N2Q5YWY4NmQKLQotU2lnbmVkLW9mZi1ieTogS2FtaWwgRHVka2EgPGtkdWRrYUByZWRoYXQuY29tPgotU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLQotSW5kZXg6IGFjbC0yLjIuNTIvdGVzdC9jcC50ZXN0Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYWNsLTIuMi41Mi5vcmlnL3Rlc3QvY3AudGVzdAotKysrIGFjbC0yLjIuNTIvdGVzdC9jcC50ZXN0Ci1AQCAtOSw3ICs5LDcgQEAgVGhlIGNwIHV0aWxpdHkgc2hvdWxkIG9ubHkgY29weSBBQ0xzIGlmCi0gCT4gLXJ3LXJ3LXItLSsKLSAJCi0gCSQgY3AgZiBnCi0tCSQgbHMgLWwgZyB8IGF3ayAtLSAneyBwcmludCAkMSB9JyB8IHNlZCAncy9cLiQvL2cnCi0rCSQgbHMgLWwgZyB8IGF3ayAtLSAneyBwcmludCAkMSB9JyB8IHNlZCAncy9cXC4kLy9nJwotIAk+IC1ydy1yLS1yLS0KLSAJCi0gCSQgcm0gZwotSW5kZXg6IGFjbC0yLjIuNTIvdGVzdC9taXNjLnRlc3QKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhY2wtMi4yLjUyLm9yaWcvdGVzdC9taXNjLnRlc3QKLSsrKyBhY2wtMi4yLjUyL3Rlc3QvbWlzYy50ZXN0Ci1AQCAtMjU0LDcgKzI1NCw3IEBAIEFkZCBzb21lIHVzZXJzIGFuZCBncm91cHMKLSBTeW1saW5rIGluIGRpcmVjdG9yeSB3aXRoIGRlZmF1bHQgQUNMPwotIAkgCi0gCSQgbG4gLXMgZCBkL2wKLS0JJCBscyAtZGwgZC9sIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cLiQvL2cnCi0rCSQgbHMgLWRsIGQvbCB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXFwuJC8vZycKLSAJPiBscnd4cnd4cnd4Ci0gCi0gCSQgbHMgLWRsIC1MIGQvbCB8IGF3ayAne3ByaW50ICQxfScKLUBAIC0zNDMsNyArMzQzLDcgQEAgUmVtb3ZlIHRoZSBkZWZhdWx0IEFDTAotIFJlc2V0IHRvIGJhc2UgZW50cmllcwotIAkgCi0gCSQgc2V0ZmFjbCAtYiBkCi0tCSQgbHMgLWRsIGQgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1wuJC8vZycKLSsJJCBscyAtZGwgZCB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXFwuJC8vZycKLSAJPiBkcnd4ci14LS0tCi0gCi0gCSQgZ2V0ZmFjbCAtLW9taXQtaGVhZGVyIGQKLUBAIC0zNTUsNyArMzU1LDcgQEAgUmVzZXQgdG8gYmFzZSBlbnRyaWVzCi0gTm93LCBjaG1vZCBzaG91bGQgY2hhbmdlIHRoZSBncm91cF9vYmogZW50cnkKLSAJIAotIAkkIGNobW9kIDc3NSBkCi0tCSQgbHMgLWRsIGQgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1wuJC8vZycKLSsJJCBscyAtZGwgZCB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXFwuJC8vZycKLSAJPiBkcnd4cnd4ci14Ci0gCQotIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBkCi1JbmRleDogYWNsLTIuMi41Mi90ZXN0L3NiaXRzLXJlc3RvcmUudGVzdAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGFjbC0yLjIuNTIub3JpZy90ZXN0L3NiaXRzLXJlc3RvcmUudGVzdAotKysrIGFjbC0yLjIuNTIvdGVzdC9zYml0cy1yZXN0b3JlLnRlc3QKLUBAIC0xMywxMCArMTMsMTAgQEAgRW5zdXJlIHNldHRpbmcgb2YgU1VJRC9TR0lEL3N0aWNreSB2aWEgLQotIAkkIHRvdWNoIGQvZwotIAkkIHRvdWNoIGQvdQotIAkkIHNldGZhY2wgLS1yZXN0b3JlIGQuYWNsCi0tCSQgbHMgLWRsIGQgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1wuJC8vZycKLSsJJCBscyAtZGwgZCB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXFwuJC8vZycKLSAJPiBkcnd4ci14ci10Ci0tCSQgbHMgLWRsIGQvdSB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXC4kLy9nJwotKwkkIGxzIC1kbCBkL3UgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1xcLiQvL2cnCi0gCT4gLXJ3U3ItLXItLQotLQkkIGxzIC1kbCBkL2cgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1wuJC8vZycKLSsJJCBscyAtZGwgZC9nIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cXC4kLy9nJwotIAk+IC1ydy1yLVNyLS0KLSAJJCBybSAtUmYgZApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeHVwcy1vbi1TRUxpbnV4LW1hY2hpbmVzLWZvci1yb290LXRlc3RjYXNlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvdGVzdC1maXh1cHMtb24tU0VMaW51eC1tYWNoaW5lcy1mb3Itcm9vdC10ZXN0Y2FzZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjYzExYTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeHVwcy1vbi1TRUxpbnV4LW1hY2hpbmVzLWZvci1yb290LXRlc3RjYXNlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLUZyb20gZDJmNDllZTZmZTQ4NTBiOGRkYTViMDg2NzZiMzYyMDFkM2M0MzcxMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDIgTWFyIDIwMTYgMTU6NDY6NTcgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gdGVzdDogZml4dXBzIG9uIFNFTGludXggbWFjaGluZXMgZm9yIHJvb3QgdGVzdGNhc2VzCi0KLWxzIGFkZHMgYSAnLicgYXQgdGhlIGVuZCBvZiB0aGUgcGVybWlzc2lvbiBmaWVsZCBsaXN0IG9uIFNFTGludXgKLW1hY2hpbmVzLCBmaWx0ZXIgdGhpcyBvdXQgc28gcm9vdCB0ZXN0cyB3b3JrIG9uIFNFTGludXggbWFjaGluZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKLWh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2FjbC5naXQvY29tbWl0Lz9pZD0yNmE4N2QzNmY4MGQ1ZTk4YmNjYjU4Nzg4MzRkOWU2OWRhZGZlM2U5Ci0KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdCB8IDggKysrKy0tLS0KLSB0ZXN0L3Jvb3QvcmVzdG9yZS50ZXN0ICAgICB8IDIgKy0KLSB0ZXN0L3Jvb3Qvc2V0ZmFjbC50ZXN0ICAgICB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0IGIvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKLWluZGV4IDliOWUzZGUuLjY2NTMzOWEgMTAwNjQ0Ci0tLS0gYS90ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdAotKysrIGIvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKLUBAIC0xOSw3ICsxOSw3IEBAIGRlZmluZWQgcGVybWlzc2lvbnMuCi0gCSQgY2QgZAotIAkkIHVtYXNrIDAyNwotIAkkIHRvdWNoIGYKLS0JJCBscyAtbCBmIHwgYXdrIC0tICd7IHByaW50ICQxLCAkMywgJDQgfScKLSsJJCBscyAtbCBmIHwgYXdrIC0tICd7IHByaW50ICQxLCAkMywgJDQgfScgfCBzZWQgJ3MvXFwuLy9nJwotIAk+IC1ydy1yLS0tLS0gcm9vdCByb290Ci0KLQotQEAgLTM5LDcgKzM5LDcgQEAgTm93LCBjaGFuZ2UgdGhlIG93bmVyc2hpcCBvZiB0aGUgZmlsZSB0byBiaW46YmluIGFuZCB2ZXJpZnkgdGhhdCB0aGlzCi0gZ2l2ZXMgdXNlciBiaW4gd3JpdGUgYWNjZXNzLgotCi0gCSQgY2hvd24gYmluOmJpbiBmCi0tCSQgbHMgLWwgZiB8IGF3ayAtLSAneyBwcmludCAkMSwgJDMsICQ0IH0nCi0rCSQgbHMgLWwgZiB8IGF3ayAtLSAneyBwcmludCAkMSwgJDMsICQ0IH0nIHwgc2VkICdzL1xcLi8vZycKLSAJPiAtcnctci0tLS0tIGJpbiBiaW4KLSAJJCBzdSBiaW4KLSAJJCBlY2hvIGJpbiA+PiBmCi1AQCAtMjU2LDEyICsyNTYsMTIgQEAgZGlyZWN0b3JpZXMgaWYgdGhlIGZpbGUgaGFzIGFuIEFDTCBhbmQgb25seSBDQVBfRk9XTkVSIHdvdWxkIGdyYW50IHRoZW0uCi0gCSQgbWtkaXIgLW0gNjAwIHgKLSAJJCBjaG93biBkYWVtb246ZGFlbW9uIHgKLSAJJCBlY2hvIGogPiB4L2oKLS0JJCBscyAtbCB4L2ogfCBhd2sgLS0gJ3sgcHJpbnQgJDEsICQzLCAkNCB9JwotKwkkIGxzIC1sIHgvaiB8IGF3ayAtLSAneyBwcmludCAkMSwgJDMsICQ0IH0nIHwgc2VkICdzL1xcLi8vZycKLSAJPiAtcnctci0tLS0tIHJvb3Qgcm9vdAotCi0gCSQgc2V0ZmFjbCAtbSB1OmRhZW1vbjpyIHgKLQotLQkkIGxzIC1sIHgvaiB8IGF3ayAtLSAneyBwcmludCAkMSwgJDMsICQ0IH0nCi0rCSQgbHMgLWwgeC9qIHwgYXdrIC0tICd7IHByaW50ICQxLCAkMywgJDQgfScgfCBzZWQgJ3MvXFwuLy9nJwotIAk+IC1ydy1yLS0tLS0gcm9vdCByb290Ci0gCShXaXRoIHRoZSBidWcgdGhpcyBnaXZlczogYGxzOiB4L2o6IFBlcm1pc3Npb24gZGVuaWVkJy4pCi0KLWRpZmYgLS1naXQgYS90ZXN0L3Jvb3QvcmVzdG9yZS50ZXN0IGIvdGVzdC9yb290L3Jlc3RvcmUudGVzdAotaW5kZXggNjNhOWQwMS4uYzg1MDk3YyAxMDA2NDQKLS0tLSBhL3Rlc3Qvcm9vdC9yZXN0b3JlLnRlc3QKLSsrKyBiL3Rlc3Qvcm9vdC9yZXN0b3JlLnRlc3QKLUBAIC0yMSw3ICsyMSw3IEBAIENyeSBpbW1lZGlhdGVseSBpZiB3ZSBhcmUgbm90IHJ1bm5pbmcgYXMgcm9vdC4KLSAJJCBjaG93biBiaW4gcGFzc3dkCi0gCSQgY2htb2QgdStzIHBhc3N3ZAotIAkkIHNldGZhY2wgLS1yZXN0b3JlIHBhc3N3ZC5hY2wKLS0JJCBscyAtZGwgcGFzc3dkIHwgYXdrICd7cHJpbnQgJDEgIiAiICQzICIgIiAkNH0nCi0rCSQgbHMgLWRsIHBhc3N3ZCB8IGF3ayAne3ByaW50ICQxICIgIiAkMyAiICIgJDR9JyB8IHNlZCAncy9cXC4vL2cnCi0gCT4gLXJ3c3IteHIteCByb290IHJvb3QKLQotIAkkIHJtIHBhc3N3ZCBwYXNzd2QuYWNsCi1kaWZmIC0tZ2l0IGEvdGVzdC9yb290L3NldGZhY2wudGVzdCBiL3Rlc3Qvcm9vdC9zZXRmYWNsLnRlc3QKLWluZGV4IGE0NmE5ZjQuLjdlZmJhZDcgMTAwNjQ0Ci0tLS0gYS90ZXN0L3Jvb3Qvc2V0ZmFjbC50ZXN0Ci0rKysgYi90ZXN0L3Jvb3Qvc2V0ZmFjbC50ZXN0Ci1AQCAtMTIsNyArMTIsNyBAQCBDcnkgaW1tZWRpYXRlbHkgaWYgd2UgYXJlIG5vdCBydW5uaW5nIGFzIHJvb3QuCi0gCSQgc2cgYmluCi0gCSQgdW1hc2sgMDI3Ci0gCSQgdG91Y2ggZwotLQkkIGxzIC1kbCBnIHwgYXdrICd7cHJpbnQgJDF9JwotKwkkIGxzIC1kbCBnIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cXC4vL2cnCi0gCT4gLXJ3LXItLS0tLQotCi0gCSQgc2V0ZmFjbCAtbSBtOi0gZwotLS0KLTEuOS4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2xfMi4yLjUyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbF8yLjIuNTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiYzc3ZDguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbF8yLjIuNTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1TVU1NQVJZID0gIlV0aWxpdGllcyBmb3IgbWFuYWdpbmcgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHMiCi1IT01FUEFHRSA9ICJodHRwOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9wcm9qZWN0cy9hY2wvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyAmIEdQTHYyKyIKLUxJQ0VOU0VfJHtQTn0gPSAiR1BMdjIrIgotTElDRU5TRV9saWIke0JQTn0gPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jL0NPUFlJTkc7bWQ1PWM3ODFkNzBlZDJiNGQ0ODk5NWI3OTA0MDMyMTdhMjQ5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9DT1BZSU5HLkxHUEw7bWQ1PTllOWEyMDY5MTdmOGFmMTEyZGE2MzRjZTNhYjQxNzY0IgotCi1ERVBFTkRTID0gImF0dHIiCi0KLVNSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS9hY2wvJHtCUH0uc3JjLnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUuYWM7c3ViZGlyPSR7QlB9IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9hY2wtZml4LXRoZS1vcmRlci1vZi1leHBlY3RlZC1vdXRwdXQtb2YtZ2V0ZmFjbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90ZXN0LWZpeC1pbnN1ZmZpY2llbnQtcXVvdGluZy1vZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90ZXN0LWZpeHVwcy1vbi1TRUxpbnV4LW1hY2hpbmVzLWZvci1yb290LXRlc3RjYXNlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90ZXN0LWZpeC1kaXJlY3RvcnktcGVybWlzc2lvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUtbGliYWNsLXNob3VsZC1kZXBlbmQtb24taW5jbHVkZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhNjE0MTUzMTI0MjZlOWMyMjEyYmQ3ZGM3OTI5YWJkYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxNzkwNzRiYjA1ODBjMDZjNGI0MTM3YmU0YzVhOTJhNzAxNTgzMjc3OTY3YWNkYjU1NDYwNDNjNzg3NGUwZDIzIgotCi1yZXF1aXJlIGVhLWFjbC5pbmMKLQotIyBhdm9pZCBSUEFUSCBoYXJkY29kZSB0byBzdGFnaW5nIGRpcgotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlzZWQgLWkgJHtTfS9jb25maWcuc3RhdHVzIC1lIHMsXlxcXChoYXJkY29kZV9pbnRvX2xpYnM9XFxcKS4qJCxcXDFcJ25vXCcsCi0JJHtTfS9jb25maWcuc3RhdHVzCi19Ci0KLSMgbGliZGlyIHNob3VsZCBwb2ludCB0byAubGEKLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCXNlZCAtaSAke0R9JHtsaWJkaXJ9L2xpYmFjbC5sYSAtZSBcCi0JICAgIHMsXmxpYmRpcj1cJyR7YmFzZV9saWJkaXJ9XCckLGxpYmRpcj1cJyR7bGliZGlyfVwnLAotfQotCi1pbmhlcml0IHB0ZXN0Ci0KLVBURVNUX0JVSUxEX0hPU1RfRklMRVMgPSAiYnVpbGRkZWZzIgotUFRFU1RfQlVJTERfSE9TVF9QQVRURVJOID0gIl5SUE0iCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCXRhciAtYyAtLWV4Y2x1ZGU9bmZzIHRlc3QvIHwgKCBjZCAke0R9JHtQVEVTVF9QQVRIfSAmJiB0YXIgLXhmIC0gKQotCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vaW5jbHVkZQotCWluc3RhbGwgLW0gNjQ0ICR7U30vaW5jbHVkZS9idWlsZGRlZnMgJHtTfS9pbmNsdWRlL2J1aWxkbWFjcm9zICR7U30vaW5jbHVkZS9idWlsZHJ1bGVzICR7RH0ke1BURVNUX1BBVEh9L2luY2x1ZGUvCi19Ci0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ID0gImFjbCBiYXNoIGNvcmV1dGlscyBwZXJsIHBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgcGVybC1tb2R1bGUtZ2V0b3B0LXN0ZCBwZXJsLW1vZHVsZS1wb3NpeCBzaGFkb3ciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2xfMi4yLjUzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbF8yLjIuNTMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJiNTBmNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2xfMi4yLjUzLmJiCkBAIC0wLDAgKzEsNzQgQEAKK1NVTU1BUlkgPSAiVXRpbGl0aWVzIGZvciBtYW5hZ2luZyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0cyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zYXZhbm5haC5ub25nbnUub3JnL3Byb2plY3RzL2FjbC8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjErICYgR1BMdjIrIgorTElDRU5TRV8ke1BOfSA9ICJHUEx2MisiCitMSUNFTlNFX2xpYiR7QlBOfSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvQ09QWUlORzttZDU9Yzc4MWQ3MGVkMmI0ZDQ4OTk1Yjc5MDQwMzIxN2EyNDkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL0NPUFlJTkcuTEdQTDttZDU9OWU5YTIwNjkxN2Y4YWYxMTJkYTYzNGNlM2FiNDE3NjQiCisKK0RFUEVORFMgPSAiYXR0ciIKKworU1JDX1VSSSA9ICIke1NBVkFOTkFIX0dOVV9NSVJST1J9L2FjbC8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtZG8tbm90LWhhcmRjb2RlLXRoZS1idWlsZC1wYXRoLWludG8tYS1oZWxwZXItbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3QtcGF0Y2gtb3V0LWZhaWxpbmctYml0cy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjAwN2FhYmYxZGJiNTUwYmNkZGRlNTJhMjQ0Y2QxMDcwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA2YmU5ODY1YzZmNDE4ZDg1MWZmNDQ5NGUxMjQwNjU2ODM1M2I4OTFmZmUxZjU5NmIzNDY5M2MzODdhZjI2YzciCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHRlc3QKKworUEFDS0FHRVMgPSsgImxpYiR7QlBOfSIKKworRklMRVNfbGliJHtCUE59ID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9IgorCitQVEVTVF9CVUlMRF9IT1NUX0ZJTEVTID0gImJ1aWxkZGVmcyIKK1BURVNUX0JVSUxEX0hPU1RfUEFUVEVSTiA9ICJeUlBNIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgICAgICBvZV9ydW5tYWtlIGxpYnRlc3Rsb29rdXAubGEKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAtcmYgJHtTfS90ZXN0LyAke0R9JHtQVEVTVF9QQVRIfQorCWNwIC1yZiAke1N9L2J1aWxkLWF1eC8gJHtEfSR7UFRFU1RfUEFUSH0KKyAgICAgICAgbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vLmxpYnMKKwljcCAtcmYgJHtCfS8ubGlicy9saWJ0ZXN0bG9va3VwKiAke0R9JHtQVEVTVF9QQVRIfS8ubGlicworICAgICAgICBjcCAke0J9L01ha2VmaWxlICR7RH0ke1BURVNUX1BBVEh9CisKKyAgICAgICAgc2VkIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKyAgICAgICAgICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKyAgICAgICAgICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisgICAgICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKyAgICAgICAgICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorICAgICAgICAgICAgLWkgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKworICAgICAgICBzZWQgLWkgInN8XnNyY2RpciA9Lip8c3JjZGlyID0gXC58ZyIgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICAgICAgc2VkIC1pICJzfF5hYnNfc3JjZGlyID0uKnxhYnNfc3JjZGlyID0gXC58ZyIgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICAgICAgc2VkIC1pICJzfF5hYnNfdG9wX3NyY2RpciA9Lip8YWJzX3RvcF9zcmNkaXIgPSBcLlwufGciICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisgICAgICAgIHNlZCAtaSAic3xeTWFrZWZpbGU6Lip8TWFrZWZpbGU6fGciICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisKKyAgICAgICAgcm0gJHtEfSR7UFRFU1RfUEFUSH0vLmxpYnMvbGlidGVzdGxvb2t1cC5sYWkKK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYWNsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgY29yZXV0aWxzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZWhhbmRsZSBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1nZXRvcHQtc3RkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXBvc2l4IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvdyBcCisgICAgICAgICAgICAgICAgICAgICAgICBtYWtlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdhd2sgXAorICAgICAgICAgICAgICAgICAgICAgICAgZTJmc3Byb2dzLW1rZTJmcyBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jd2QgXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci5pbmMKaW5kZXggMzUwM2Q2Ni4uZjEzYTgzYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLmluYwpAQCAtOCwyMiArOCwxOCBAQAogTElDRU5TRV8ke1BOfSA9ICJHUEx2MisiCiBMSUNFTlNFX2xpYiR7QlBOfSA9ICJMR1BMdjIuMSsiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvQ09QWUlORzttZDU9MmQwYWExNGIzZmNlNDY5NGU0ZjYxNWUzMDE4NjMzNWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXR0ci9hdHRyLmM7ZW5kbGluZT0xNzttZDU9YmUwNDAzMjYxZjA4NDdlNWY0M2VkNWIwOGQxOTU5M2MgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdG9vbHMvYXR0ci5jO2VuZGxpbmU9MTc7bWQ1PWJlMDQwMzI2MWYwODQ3ZTVmNDNlZDViMDhkMTk1OTNjIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmF0dHIvbGliYXR0ci5jO2VuZGxpbmU9MTc7bWQ1PTc5NzBmNzcwNDlmOGZhMTE5OWZmZjYyYTdhYjcyNGZiIgogCi1TUkNfVVJJID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vYXR0ci8ke0JQfS5zcmMudGFyLmd6IFwKK1NSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS9hdHRyLyR7QlB9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAogIgogCi1yZXF1aXJlIGVhLWFjbC5pbmMKK2luaGVyaXQgcHRlc3QgdXBkYXRlLWFsdGVybmF0aXZlcyBhdXRvdG9vbHMgZ2V0dGV4dAogCi0jIGxpYmRpciBzaG91bGQgcG9pbnQgdG8gLmxhCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlzZWQgLWkgJHtEfSR7bGliZGlyfS9saWJhdHRyLmxhIC1lIFwKLQkgICAgcyxebGliZGlyPVwnJHtiYXNlX2xpYmRpcn1cJyQsbGliZGlyPVwnJHtsaWJkaXJ9XCcsCi19CitQQUNLQUdFUyA9KyAibGliJHtCUE59IgogCi1pbmhlcml0IHB0ZXN0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKK0ZJTEVTX2xpYiR7QlBOfSA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSIKIAogQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgogQUxURVJOQVRJVkVfJHtQTn0gPSAic2V0ZmF0dHIiCkBAIC0zMywxNCArMjksMzQgQEAKIFBURVNUX0JVSUxEX0hPU1RfUEFUVEVSTiA9ICJeUlBNIgogCiBkb19pbnN0YWxsX3B0ZXN0KCkgewotCXRhciAtYyAtLWV4Y2x1ZGU9ZXh0IHRlc3QvIHwgKCBjZCAke0R9JHtQVEVTVF9QQVRIfSAmJiB0YXIgLXhmIC0gKQotCW1rZGlyICR7RH0ke1BURVNUX1BBVEh9L2luY2x1ZGUKLQlmb3IgaSBpbiBidWlsZGRlZnMgYnVpbGRtYWNyb3MgYnVpbGRydWxlczsgXAotCSAgZG8gY3AgJHtTfS9pbmNsdWRlLyRpICR7RH0ke1BURVNUX1BBVEh9L2luY2x1ZGUvOyBcCi0JZG9uZQotCXNlZCAtZSAnc3w7IEBlY2hvfDsgZWNob3wnIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvTWFrZWZpbGUKKyAgICAgICAgY3AgJHtCfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfQorICAgICAgICBzZWQgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorICAgICAgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorICAgICAgICAgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKyAgICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorICAgICAgICAgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisgICAgICAgICAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorCisgICAgICAgIHNlZCAtaSAic3xec3JjZGlyID0uKnxzcmNkaXIgPSBcLnxnIiAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorICAgICAgICBzZWQgLWkgInN8XmFic19zcmNkaXIgPS4qfGFic19zcmNkaXIgPSBcLnxnIiAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorICAgICAgICBzZWQgLWkgInN8XmFic190b3Bfc3JjZGlyID0uKnxhYnNfdG9wX3NyY2RpciA9IFwuXC58ZyIgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICAgICAgc2VkIC1pICJzfF5NYWtlZmlsZTouKnxNYWtlZmlsZTp8ZyIgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKwljcCAtcmYgJHtTfS9idWlsZC1hdXgvICR7RH0ke1BURVNUX1BBVEh9CisJY3AgLXJmICR7U30vdGVzdC8gJHtEfSR7UFRFU1RfUEFUSH0KIH0KIAotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYXR0ciBjb3JldXRpbHMgcGVybC1tb2R1bGUtZmlsZWhhbmRsZSBwZXJsLW1vZHVsZS1nZXRvcHQtc3RkIHBlcmwtbW9kdWxlLXBvc2l4IG1ha2UgcGVybCIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gImF0dHIgXAorICAgICAgICAgICAgICAgICAgICAgICAgY29yZXV0aWxzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZ2V0b3B0LXN0ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1wb3NpeCBcCisgICAgICAgICAgICAgICAgICAgICAgICBtYWtlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgZ2F3ayBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jd2QgXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvMDAwMS1Vc2Utc3RkaW50LXR5cGVzLWNvbnNpc3RlbnRseS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLzAwMDEtVXNlLXN0ZGludC10eXBlcy1jb25zaXN0ZW50bHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjZDY1MDcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvMDAwMS1Vc2Utc3RkaW50LXR5cGVzLWNvbnNpc3RlbnRseS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLUZyb20gMzdhMjdiNmZkMDllY2IzNzA5N2I4NWU1ZGI3NGU0Zjc3YjgwZmUwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZlbGl4IEphbmRhIDxmZWxpeC5qYW5kYUBwb3N0ZW8uZGU+Ci1EYXRlOiBUdWUsIDEyIEphbiAyMDE2IDIyOjIwOjMzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSBzdGRpbnQgdHlwZXMgY29uc2lzdGVudGx5Ci0KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIGluY2x1ZGUvYXR0cmlidXRlcy5oIHwgNiArKysrLS0KLSBtYW4vbWFuMy9hdHRyX2xpc3QuMyB8IDggKysrKy0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGF0dHItMi40LjQ3L2luY2x1ZGUvYXR0cmlidXRlcy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYXR0ci0yLjQuNDcub3JpZy9pbmNsdWRlL2F0dHJpYnV0ZXMuaAotKysrIGF0dHItMi40LjQ3L2luY2x1ZGUvYXR0cmlidXRlcy5oCi1AQCAtMjIsNiArMjIsNyBAQAotIGV4dGVybiAiQyIgewotICNlbmRpZgotIAotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSAvKgotICAqCUFuIGFsbW9zdC1JUklYLWNvbXBhdGlibGUgZXh0ZW5kZWQgYXR0cmlidXRlcyBBUEkKLSAgKgkodGhlIElSSVggYXR0cmlidXRlICJsaXN0IiBvcGVyYXRpb24gaXMgbWlzc2luZywgYWRkZWQgQVRUUl9TRUNVUkUpLgotQEAgLTY5LDcgKzcwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgYXR0cmxpc3QgewotICAqIGFsX29mZnNldFtpXSBlbnRyeSBwb2ludHMgdG8uCi0gICovCi0gdHlwZWRlZiBzdHJ1Y3QgYXR0cmxpc3RfZW50IHsJLyogZGF0YSBmcm9tIGF0dHJfbGlzdCgpICovCi0tCXVfaW50MzJfdAlhX3ZhbHVlbGVuOwkvKiBudW1iZXIgYnl0ZXMgaW4gdmFsdWUgb2YgYXR0ciAqLwotKwl1aW50MzJfdAlhX3ZhbHVlbGVuOwkvKiBudW1iZXIgYnl0ZXMgaW4gdmFsdWUgb2YgYXR0ciAqLwotIAljaGFyCQlhX25hbWVbMV07CS8qIGF0dHIgbmFtZSAoTlVMTCB0ZXJtaW5hdGVkKSAqLwotIH0gYXR0cmxpc3RfZW50X3Q7Ci0gCi1AQCAtOTAsNyArOTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBhdHRybGlzdF9lbnQgewkvKiBkYXRhIGZyCi0gICogb3BlcmF0aW9uIG9uIGEgY3Vyc29yIGlzIHRvIGJ6ZXJvKCkgaXQuCi0gICovCi0gdHlwZWRlZiBzdHJ1Y3QgYXR0cmxpc3RfY3Vyc29yIHsKLS0JdV9pbnQzMl90CW9wYXF1ZVs0XTsJLyogYW4gb3BhcXVlIGNvb2tpZSAqLwotKwl1aW50MzJfdAlvcGFxdWVbNF07CS8qIGFuIG9wYXF1ZSBjb29raWUgKi8KLSB9IGF0dHJsaXN0X2N1cnNvcl90OwotIAotIC8qCi1JbmRleDogYXR0ci0yLjQuNDcvbWFuL21hbjMvYXR0cl9saXN0LjMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhdHRyLTIuNC40Ny5vcmlnL21hbi9tYW4zL2F0dHJfbGlzdC4zCi0rKysgYXR0ci0yLjQuNDcvbWFuL21hbjMvYXR0cl9saXN0LjMKLUBAIC03Miw5ICs3Miw5IEBAIFRoZSBjb250ZW50cyBvZiBhbiBcZjRhdHRybGlzdF90XGZQIHN0cnUKLSAubmYKLSAuZnQgNAotIC50YSA5biAyMm4KLS1fX2ludDMyX3QgYWxfY291bnQ7IC9cKCoqIG51bWJlciBvZiBlbnRyaWVzIGluIGF0dHJsaXN0IFwoKiovCi0tX19pbnQzMl90IGFsX21vcmU7IC9cKCoqIFQvRjogbW9yZSBhdHRycyAoZG8gc3lzY2FsbCBhZ2FpbikgXCgqKi8KLS1fX2ludDMyX3QgYWxfb2Zmc2V0WzFdOyAvXCgqKiBieXRlIG9mZnNldHMgb2YgYXR0cnMgW3Zhci1zaXplZF0gXCgqKi8KLStpbnQzMl90IGFsX2NvdW50OyAvXCgqKiBudW1iZXIgb2YgZW50cmllcyBpbiBhdHRybGlzdCBcKCoqLwotK2ludDMyX3QgYWxfbW9yZTsgL1woKiogVC9GOiBtb3JlIGF0dHJzIChkbyBzeXNjYWxsIGFnYWluKSBcKCoqLwotK2ludDMyX3QgYWxfb2Zmc2V0WzFdOyAvXCgqKiBieXRlIG9mZnNldHMgb2YgYXR0cnMgW3Zhci1zaXplZF0gXCgqKi8KLSAuZnQgMQotIC5maQotIC5SRQotQEAgLTExMyw3ICsxMTMsNyBAQCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgbWVtYmVyczoKLSAubmYKLSAuZnQgNAotIC50YSA5biAyMm4KLS11X2ludDMyX3QgYV92YWx1ZWxlbjsgL1woKiogbnVtYmVyIGJ5dGVzIGluIHZhbHVlIG9mIGF0dHIgXCgqKi8KLSt1aW50MzJfdCBhX3ZhbHVlbGVuOyAvXCgqKiBudW1iZXIgYnl0ZXMgaW4gdmFsdWUgb2YgYXR0ciBcKCoqLwotIGNoYXIgYV9uYW1lW107IC9cKCoqIGF0dHIgbmFtZSAoTlVMTCB0ZXJtaW5hdGVkKSBcKCoqLwotIC5mdCAxCi0gLmZpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci9hdHRyLU1pc3NpbmctY29uZmlndXJlLmFjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvYXR0ci1NaXNzaW5nLWNvbmZpZ3VyZS5hYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjBmY2MzYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci9hdHRyLU1pc3NpbmctY29uZmlndXJlLmFjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotU3ViamVjdDogW1BBVENIXSBhdHRyOiBNaXNzaW5nIGNvbmZpZ3VyZS5hYwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtVcHN0cmVhbSByZWxlYXNlZCB0YXJiYWxsIG1pc3NpbmcgdGhpcyBmaWxlXQotU2lnbmVkLW9mZi1ieTogTmF0aGFuIFJvc3NpIDxuYXRoYW4ucm9zc2lAeGlsaW54LmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8ICAgNDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgY29uZmlndXJlLmFjCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iOTY2ZDBlCi0tLS0gL2Rldi9udWxsCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0wLDAgKzEsNDggQEAKLSsjIENvcHlyaWdodCAoQykgMjAwOSAgQW5kcmVhcyBHcnVlbmJhY2hlciA8YWdydWVuQHN1c2UuZGU+Ci0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsjCi0rQUNfSU5JVChpbmNsdWRlL2F0dHJpYnV0ZXMuaCkKLStBQ19DT05GSUdfQVVYX0RJUihbLl0pCi0rQUNfQ09ORklHX01BQ1JPX0RJUihbbTRdKQotK0FDX0NPTkZJR19IRUFERVIoaW5jbHVkZS9jb25maWcuaCkKLStBQ19QUkVGSVhfREVGQVVMVCgvdXNyKQotKwotK0FDX1BST0dfTElCVE9PTAotKwotK0FDX0FSR19FTkFCTEUoc2hhcmVkLAotK1sgLS1lbmFibGUtc2hhcmVkPVt5ZXMvbm9dIEVuYWJsZSB1c2Ugb2Ygc2hhcmVkIGxpYnJhcmllcyBbZGVmYXVsdD15ZXNdXSwsCi0rCWVuYWJsZV9zaGFyZWQ9eWVzKQotK0FDX1NVQlNUKGVuYWJsZV9zaGFyZWQpCi0rCi0rQUNfQVJHX0VOQUJMRShnZXR0ZXh0LAotK1sgLS1lbmFibGUtZ2V0dGV4dD1beWVzL25vXSBFbmFibGUgYWx0ZXJuYXRlIGxhbmd1YWdlIHN1cHBvcnQgW2RlZmF1bHQ9eWVzXV0sLAotKwllbmFibGVfZ2V0dGV4dD15ZXMpCi0rQUNfU1VCU1QoZW5hYmxlX2dldHRleHQpCi0rCi0rQUNfQVJHX0VOQUJMRShsaWI2NCwKLStbIC0tZW5hYmxlLWxpYjY0PVt5ZXMvbm9dIEVuYWJsZSBsaWI2NCBzdXBwb3J0IFtkZWZhdWx0PW5vXV0sLAotKwllbmFibGVfbGliNjQ9bm8pCi0rQUNfU1VCU1QoZW5hYmxlX2xpYjY0KQotKwotK0FDX1BBQ0tBR0VfR0xPQkFMUyhhdHRyKQotK0FDX1BBQ0tBR0VfVVRJTElUSUVTKGF0dHIpCi0rQUNfTUFOVUFMX0ZPUk1BVAotK0FDX01VTFRJTElCKCRlbmFibGVfbGliNjQpCi0rCi0rQUNfQ19DT05TVAotK0FDX1RZUEVfTU9ERV9UCi0rQUNfRlVOQ19BTExPQ0EKLSsKLStBQ19PVVRQVVQoaW5jbHVkZS9idWlsZGRlZnMpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci9kb250LXVzZS1kZWNsLW1hY3Jvcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyL2RvbnQtdXNlLWRlY2wtbWFjcm9zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDRiODkyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyL2RvbnQtdXNlLWRlY2wtbWFjcm9zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotVXNlIGV4dGVybiAiQyIgaW5zdGVhZCBvZiBfX0JFR0lOX0RFQ0wvX19FTkRfREVDTCBtYWNyb3MKLXRoZXNlIG1hY3JvcyBhcmUgZGVmaW5lZCBpbiBzeXMvY2RlZnMuaCBmb3IgZ2xpYmMgYW5kIHRoaXMgaGVhZGVyIGlzIG5vdCBhdmFpbGFibGUgb24gYWxsIGxpYmMKLQotYW55d2F5IHRoZXkgZGVmaW5lZCBsaWtlIGJlbG93Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotIyBkZWZpbmUgX19CRUdJTl9ERUNMUyBleHRlcm4gIkMiIHsKLSMgZGVmaW5lIF9fRU5EX0RFQ0xTIH0KLSNlbHNlCi0jIGRlZmluZSBfX0JFR0lOX0RFQ0xTIC8qIGVtcHR5ICovCi0jIGRlZmluZSBfX0VORF9ERUNMUyAvKiBlbXB0eSAqLwotI2VuZGlmCi0KLV9fVEhST1cgbWFjcm8gaXMgYWxzbyBub3QgYXZhaWxhYmxlIG9uIG11c2wsIGRlZmluZWQgdGh1c2x5Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1JbmRleDogYXR0ci0yLjQuNDcvaW5jbHVkZS94YXR0ci5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYXR0ci0yLjQuNDcub3JpZy9pbmNsdWRlL3hhdHRyLmgJMjAxNC0wNC0wMiAwMDowMTozMC4yNTIwOTEyODAgLTA3MDAKLSsrKyBhdHRyLTIuNC40Ny9pbmNsdWRlL3hhdHRyLmgJMjAxNC0wNC0wMiAwMDoxMjo1Ny45ODU0MjgwOTkgLTA3MDAKLUBAIC0zMCw4ICszMCwyMCBAQAotICNkZWZpbmUgWEFUVFJfQ1JFQVRFICAweDEgICAgICAgLyogc2V0IHZhbHVlLCBmYWlsIGlmIGF0dHIgYWxyZWFkeSBleGlzdHMgKi8KLSAjZGVmaW5lIFhBVFRSX1JFUExBQ0UgMHgyICAgICAgIC8qIHNldCB2YWx1ZSwgZmFpbCBpZiBhdHRyIGRvZXMgbm90IGV4aXN0ICovCi0gCi0tCi0tX19CRUdJTl9ERUNMUwotKyNpZm5kZWYgX19USFJPVwotKyMgaWZuZGVmIF9fR05VQ19QUkVSRVEKLSsjICBkZWZpbmUgX19HTlVDX1BSRVJFUShtYWosIG1pbikgKDApCi0rIyBlbmRpZgotKyMgaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBfX0dOVUNfUFJFUkVRICgyLDgpCi0rIyAgZGVmaW5lIF9fVEhST1cgICAgICAgdGhyb3cgKCkKLSsjIGVsc2UKLSsjICBkZWZpbmUgX19USFJPVwotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSAKLSBleHRlcm4gaW50IHNldHhhdHRyIChjb25zdCBjaGFyICpfX3BhdGgsIGNvbnN0IGNoYXIgKl9fbmFtZSwKLSAJCSAgICAgIGNvbnN0IHZvaWQgKl9fdmFsdWUsIHNpemVfdCBfX3NpemUsIGludCBfX2ZsYWdzKSBfX1RIUk9XOwotQEAgLTU4LDYgKzcwLDggQEAKLSBleHRlcm4gaW50IGxyZW1vdmV4YXR0ciAoY29uc3QgY2hhciAqX19wYXRoLCBjb25zdCBjaGFyICpfX25hbWUpIF9fVEhST1c7Ci0gZXh0ZXJuIGludCBmcmVtb3ZleGF0dHIgKGludCBfX2ZpbGVkZXMsICAgY29uc3QgY2hhciAqX19uYW1lKSBfX1RIUk9XOwotIAotLV9fRU5EX0RFQ0xTCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotIAotICNlbmRpZgkvKiBfX1hBVFRSX0hfXyAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NDI0NGYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworbWFrZSB0ZXN0LXN1aXRlLmxvZwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHJfMi40LjQ3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHJfMi40LjQ3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzg4YmVmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40Ny5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLXJlcXVpcmUgYXR0ci5pbmMKLQotIyBjb25maWd1cmUuYWMgd2FzIG1pc3NpbmcgZnJvbSB0aGUgcmVsZWFzZSB0YXJiYWxsLiBUaGlzIHNob3VsZCBiZSBmaXhlZCBpbgotIyBmdXR1cmUgcmVsZWFzZXMgb2YgYXR0ciwgcmVtb3ZlIHRoaXMgd2hlbiB1cGRhdGluZyB0aGUgcmVjaXBlLgotU1JDX1VSSSArPSAiZmlsZTovL2F0dHItTWlzc2luZy1jb25maWd1cmUuYWMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RvbnQtdXNlLWRlY2wtbWFjcm9zLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9SZW1vdmUtdGhlLXNlY3Rpb24tMi1tYW4tcGFnZXMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL1JlbW92ZS10aGUtYXR0ci41LW1hbi1wYWdlLW1vdmVkLXRvLW1hbi1wYWdlcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2Utc3RkaW50LXR5cGVzLWNvbnNpc3RlbnRseS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg0ZjU4ZGVjMDBiNjBmMmRjOGZkMWM5NzA5MjkxY2M3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI1NzcyZjY1M2FjNWIyZTNjZWViODlkZjUwZTQ2ODg4OTFlMjFmNzIzYzQ2MDYzNjU0ODk3MTY1MmFmMGE4NTkiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40OC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40OC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzBkNGU0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHJfMi40LjQ4LmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBhdHRyLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiYmMxZTVjYjVjOTZkOTliMjQ4ODZmMWY1MjdkM2JiM2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWVhZDcyYjM1OGVjNzA5ZWQwMGJiZjdhOWVhZWYxNjU0YmFhZDkzN2MwMDFjMDQ0ZmU4Yjc0YzU3ZjUzMjRlNyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2VhLWFjbC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZWEtYWNsLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTMzNmZmYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZWEtYWNsLmluYworKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLSMgdGhpcyBidWlsZCBzeXN0ZW0gaXMgbW9zdGx5IHNoYXJlZCBieSBhdHRyIGFuZCBhY2wKLQotU1JDX1VSSSArPSAiZmlsZTovL3JlbGF0aXZlLWxpYmRpci5wYXRjaDtzdHJpcGxldmVsPTAgXAotICAgICAgICAgICAiCi0jIFRoaXMgcGF0Y2ggc2hvdWxkIGJlIGFwcGxpZWQgYWZ0ZXIgJyhhdHRyXHxhY2wpLU1pc3NpbmctY29uZmlndXJlLmFjLnBhdGNoJyAKLVNSQ19VUklfYXBwZW5kID0gIiBmaWxlOi8vMDAwMS1BZGRlZC1jb25maWd1cmUtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLXN0YXRpYy1saWJyLnBhdGNoIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZ2V0dGV4dAotCi0jIFdoZW4gdXBzdHJlYW0gaXMgdXNpbmcgYXV0b21ha2UgcHJvcGVybHksIHRoaXMgY2FuIGJlIHJlbW92ZWQKLUNMRUFOQlJPS0VOID0gIjEiCi0KLSMgdGhlIHBhY2thZ2UgY29tZXMgd2l0aCBhIGN1c3RvbSBjb25maWcuaC5pbiwgaXQgY2Fubm90IGJlCi0jIG92ZXJ3cml0dGVuIGJ5IGF1dG9oZWFkZXIKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hdXRvaGVhZGVyIgotRVhUUkFfT0VDT05GID0gIklOU1RBTExfVVNFUj1yb290IElOU1RBTExfR1JPVVA9cm9vdCIKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLWVuYWJsZS1nZXR0ZXh0PW5vIgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiJHtAWycnLCAnIC0tZGlzYWJsZS1nZXR0ZXh0ICddWyhkLmdldFZhcignVVNFX05MUycpID09ICdubycpXX0iCi0KLUVYVFJBX09FTUFLRSA9ICJQS0dfTElCX0RJUj0ke2Jhc2VfbGliZGlyfSBQS0dfREVWTElCX0RJUj0ke2xpYmRpcn0iCi0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgaW5zdGFsbCBpbnN0YWxsLWxpYiBpbnN0YWxsLWRldiBESVNUX1JPT1Q9IiR7RH0iIFpJUD0iZ3ppcCAtbiIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLQlpZiB0ZXN0ICIke2xpYmRpcn0iID0gIiR7YmFzZV9saWJkaXJ9IiA7IHRoZW4KLQkJcmV0dXJuCi0JZmkKLQlsaWJyZWxwYXRoPSR7QG9zLnBhdGgucmVscGF0aChkLmdldFZhcignbGliZGlyJyksIGQuZ2V0VmFyKCdiYXNlX2xpYmRpcicpKX0KLQliYXNlbGlicmVscGF0aD0ke0Bvcy5wYXRoLnJlbHBhdGgoZC5nZXRWYXIoJ2Jhc2VfbGliZGlyJyksIGQuZ2V0VmFyKCdsaWJkaXInKSl9Ci0KLQkjIFJlbW92ZSBiYWQgc3ltbGlua3MgJiBjcmVhdGUgdGhlIGNvcnJlY3Qgc3ltbGlua3MKLQlpZiB0ZXN0IC1MICR7RH0ke2xpYmRpcn0vbGliJHtCUE59LnNvIDsgdGhlbgotCQlybSAtcmYgJHtEfSR7bGliZGlyfS9saWIke0JQTn0uc28KLQkJbG4gLXNmICRiYXNlbGlicmVscGF0aC9saWIke0JQTn0uc28gJHtEfSR7bGliZGlyfS9saWIke0JQTn0uc28KLQlmaQotCWlmIHRlc3QgLUwgJHtEfSR7YmFzZV9saWJkaXJ9L2xpYiR7QlBOfS5hIDsgdGhlbgotCQlybSAtcmYgJHtEfSR7YmFzZV9saWJkaXJ9L2xpYiR7QlBOfS5hCi0JCWxuIC1zZiAkbGlicmVscGF0aC9saWIke0JQTn0uYSAke0R9JHtiYXNlX2xpYmRpcn0vbGliJHtCUE59LmEKLQlmaQotCWlmIHRlc3QgLUwgICR7RH0ke2Jhc2VfbGliZGlyfS9saWIke0JQTn0ubGEgOyB0aGVuCi0JCXJtIC1yZiAke0R9JHtiYXNlX2xpYmRpcn0vbGliJHtCUE59LmxhCi0JCWxuIC1zZiAkbGlicmVscGF0aC9saWIke0JQTn0ubGEgJHtEfSR7YmFzZV9saWJkaXJ9L2xpYiR7QlBOfS5sYQotCWZpCi19Ci0KLVBBQ0tBR0VTID0rICJsaWIke0JQTn0iCi0KLUZJTEVTX2xpYiR7QlBOfSA9ICIke2Jhc2VfbGliZGlyfS9saWIqJHtTT0xJQlN9IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy8wMDAxLUFkZGVkLWNvbmZpZ3VyZS1vcHRpb24tdG8tZW5hYmxlLWRpc2FibGUtc3RhdGljLWxpYnIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZmlsZXMvMDAwMS1BZGRlZC1jb25maWd1cmUtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLXN0YXRpYy1saWJyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzExNTlmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy8wMDAxLUFkZGVkLWNvbmZpZ3VyZS1vcHRpb24tdG8tZW5hYmxlLWRpc2FibGUtc3RhdGljLWxpYnIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIDAxMjU2YzYxYmExMjY0NDljNDZkZDRhYjVkNWUxNDU0ODhiOTgxZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbWFybmF0aCBWYWxsdXJpIDxhbWFybmF0aC52YWxsdXJpQGludGVsLmNvbT4KLURhdGU6IE1vbiwgMjMgSmFuIDIwMTcgMTM6MjU6MTMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkZWQgY29uZmlndXJlIG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBzdGF0aWMgbGlicmFyeQotCi1DcmVhdGUgc3RhdGljIGxpYnJhcnkgYXJjaGl2ZSBvbmx5IGluIGNhc2Ugb2YgLS1lbmFibGUtc3RhdGljLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW1hcm5hdGggVmFsbHVyaSA8YW1hcm5hdGgudmFsbHVyaUBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICB8IDYgKysrKysrCi0gaW5jbHVkZS9idWlsZGRlZnMuaW4gfCAxICsKLSBpbmNsdWRlL2J1aWxkbWFjcm9zICB8IDMgKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGI5NjZkMGUuLmU0ODI2OGIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTI2LDYgKzI2LDEyIEBAIEFDX0FSR19FTkFCTEUoc2hhcmVkLAotIAllbmFibGVfc2hhcmVkPXllcykKLSBBQ19TVUJTVChlbmFibGVfc2hhcmVkKQotIAotK0FDX0FSR19FTkFCTEUoc3RhdGljLAotK1sgLS1lbmFibGUtc3RhdGljPVt5ZXMvbm9dIEVuYWJsZSB1c2Ugb2Ygc3RhdGljIGxpYnJhcmllcyBbZGVmYXVsdD15ZXNdXSwsCi0rCWVuYWJsZV9zdGF0aWM9eWVzKQotK0FDX1NVQlNUKGVuYWJsZV9zdGF0aWMpCi0rCi0rCi0gQUNfQVJHX0VOQUJMRShnZXR0ZXh0LAotIFsgLS1lbmFibGUtZ2V0dGV4dD1beWVzL25vXSBFbmFibGUgYWx0ZXJuYXRlIGxhbmd1YWdlIHN1cHBvcnQgW2RlZmF1bHQ9eWVzXV0sLAotIAllbmFibGVfZ2V0dGV4dD15ZXMpCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9idWlsZGRlZnMuaW4gYi9pbmNsdWRlL2J1aWxkZGVmcy5pbgotaW5kZXggZDk5MzFkYi4uM2IzZGJkMiAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvYnVpbGRkZWZzLmluCi0rKysgYi9pbmNsdWRlL2J1aWxkZGVmcy5pbgotQEAgLTcxLDYgKzcxLDcgQEAgUlBNQlVJTEQJPSBAcnBtYnVpbGRACi0gUlBNX1ZFUlNJT04JPSBAcnBtX3ZlcnNpb25ACi0gCi0gRU5BQkxFX1NIQVJFRAk9IEBlbmFibGVfc2hhcmVkQAotK0VOQUJMRV9TVEFUSUMgCT0gQGVuYWJsZV9zdGF0aWNACi0gRU5BQkxFX0dFVFRFWFQJPSBAZW5hYmxlX2dldHRleHRACi0gCi0gSEFWRV9aSVBQRURfTUFOUEFHRVMgPSBAaGF2ZV96aXBwZWRfbWFucGFnZXNACi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9idWlsZG1hY3JvcyBiL2luY2x1ZGUvYnVpbGRtYWNyb3MKLWluZGV4IDM5ZmE3ZTIuLmIwZjI1YzUgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2J1aWxkbWFjcm9zCi0rKysgYi9pbmNsdWRlL2J1aWxkbWFjcm9zCi1AQCAtODAsNiArODAsNyBAQCBlbmRpZgotICMgL3Vzci9saWIuCi0gaWZlcSAoJChFTkFCTEVfU0hBUkVEKSx5ZXMpCi0gSU5TVEFMTF9MVExJQl9ERVYgPSBcCi0rCXNldCAteDsgXAotIAljZCAkKFRPUERJUikvJChMSUJOQU1FKS8ubGliczsgXAotIAkuLi8kKElOU1RBTEwpIC1tIDc1NSAtZCAkKFBLR19ERVZMSUJfRElSKTsgXAotIAkuLi8kKElOU1RBTEwpIC1tIDY0NCAtVCBvbGRfbGliICQoTElCTkFNRSkubGFpICQoUEtHX0RFVkxJQl9ESVIpOyBcCi1AQCAtODgsNyArODksOSBAQCBJTlNUQUxMX0xUTElCX0RFViA9IFwKLSAJLi4vJChJTlNUQUxMKSAtVCBzb19iYXNlICQoTElCTkFNRSkubGFpICQoUEtHX0xJQl9ESVIpOyBcCi0gCWlmIHRlc3QgIngkKFBLR19ERVZMSUJfRElSKSIgIT0gIngkKFBLR19MSUJfRElSKSIgOyB0aGVuIFwKLSAJcmVsX2xpYl9wcmVmaXg9JCQoZWNobyAkKFBLR19MSUJfRElSKSB8IHNlZCAncyxcKF4vXHxcKVteL11bXi9dKiwuLixnJyk7IFwKLSsJaWYgdGVzdCAiJChFTkFCTEVfU1RBVElDKSIgPSAieWVzIiA7IHRoZW4gXAotIAkuLi8kKElOU1RBTEwpIC1TICQkcmVsX2xpYl9wcmVmaXgkKFBLR19ERVZMSUJfRElSKS8kKExJQk5BTUUpLmEgJChQS0dfTElCX0RJUikvJChMSUJOQU1FKS5hOyBcCi0rCWZpIDtcCi0gCS4uLyQoSU5TVEFMTCkgLVMgJCRyZWxfbGliX3ByZWZpeCQoUEtHX0RFVkxJQl9ESVIpLyQoTElCTkFNRSkubGEgJChQS0dfTElCX0RJUikvJChMSUJOQU1FKS5sYTsgXAotIAlyZWxfZGV2bGliX3ByZWZpeD0kJChlY2hvICQoUEtHX0RFVkxJQl9ESVIpIHwgc2VkICdzLFwoXi9cfFwpW14vXVteL10qLC4uLGcnKTsgXAotIAkuLi8kKElOU1RBTEwpIC1TICQkcmVsX2RldmxpYl9wcmVmaXgkKFBLR19MSUJfRElSKS8kKExJQk5BTUUpLnNvICQoUEtHX0RFVkxJQl9ESVIpLyQoTElCTkFNRSkuc287IFwKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL1JlbW92ZS10aGUtYXR0ci41LW1hbi1wYWdlLW1vdmVkLXRvLW1hbi1wYWdlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy9SZW1vdmUtdGhlLWF0dHIuNS1tYW4tcGFnZS1tb3ZlZC10by1tYW4tcGFnZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1YWI4M2QuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL1JlbW92ZS10aGUtYXR0ci41LW1hbi1wYWdlLW1vdmVkLXRvLW1hbi1wYWdlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0MCArMCwwIEBACi1Gcm9tIDYwNDdjODUyMmI5MTIzNWFkMWU4MzVmNDRmNWUzNjQ3MmQ5ZDQ5YjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZWFzIEdydWVuYmFjaGVyIDxhbmRyZWFzLmdydWVuYmFjaGVyQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjIgQXByIDIwMTUgMTE6NDY6NTkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIFJlbW92ZSB0aGUgYXR0ci41IG1hbiBwYWdlIChtb3ZlZCB0byBtYW4tcGFnZXMpCi0KLUNvbW1pdCBkY2U5YjQ0NDhjN2YyYjIyYmQyMDZjZDA2OGZiMDVjYjJmMzI1NWI5IGZyb20KLWh0dHBzOi8vZ2l0LnNhdmFubmFoLm5vbmdudS5vcmcvZ2l0L2F0dHIuZ2l0Ci0KLVRoZSBhdHRyLjUgcGFnZSBpcyBwYXJ0IG9mIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgc3lzdGVtIGNhbGwgZG9jdW1lbnRhdGlvbiwKLXdoaWNoIGhhcyBiZWVuIG1vdmVkIGludG8gdGhlIG1hbi1wYWdlcyBwYWNrYWdlLiBNb3ZlIHRoZSBhdHRyLjUgcGFnZSB0aGVyZQotYXMgd2VsbC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1bTUE6IHVwZGF0ZWQgdG8gYXBwbHkgZGlyZWN0bHkgdG8gdjIuNC40N10KLVNpZ25lZC1vZmYtYnk6IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBtYW4vTWFrZWZpbGUgICAgICB8ICAgMiArLQotIG1hbi9tYW41L01ha2VmaWxlIHwgIDM1IC0tLS0tLS0tLS0tLS0KLSBtYW4vbWFuNS9hdHRyLjUgICB8IDE1MyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxODkgZGVsZXRpb25zKC0pCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IG1hbi9tYW41L01ha2VmaWxlCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IG1hbi9tYW41L2F0dHIuNQotCi1kaWZmIC0tZ2l0IGEvbWFuL01ha2VmaWxlIGIvbWFuL01ha2VmaWxlCi1pbmRleCA3NTVkYWVkLi45MzAxZjA5IDEwMDY0NAotLS0tIGEvbWFuL01ha2VmaWxlCi0rKysgYi9tYW4vTWFrZWZpbGUKLUBAIC0xOSw3ICsxOSw3IEBACi0gVE9QRElSID0gLi4KLSBpbmNsdWRlICQoVE9QRElSKS9pbmNsdWRlL2J1aWxkZGVmcwotIAotLVNVQkRJUlMgPSBtYW4xIG1hbjMgbWFuNQotK1NVQkRJUlMgPSBtYW4xIG1hbjMKLSAKLSBkZWZhdWx0IDogJChTVUJESVJTKQotIAotZGlmZiAtLWdpdCBhL21hbi9tYW41L01ha2VmaWxlIGIvbWFuL21hbjUvTWFrZWZpbGUKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggNmI3MGQzZC4uMDAwMDAwMAotLS0tIGEvbWFuL21hbjUvTWFrZWZpbGUKLSsrKyAvZGV2L251bGwKLUBAIC0xLDM1ICswLDAgQEAKLS0jCi0tIyBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDIgU2lsaWNvbiBHcmFwaGljcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLS0jIENvcHlyaWdodCAoQykgMjAwOSAgQW5kcmVhcyBHcnVlbmJhY2hlciA8YWdydWVuQHN1c2UuZGU+Ci0tIwotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLS0jIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotLSMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0jCi0tIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLSMKLS0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLS0jCi0tCi0tVE9QRElSID0gLi4vLi4KLS1pbmNsdWRlICQoVE9QRElSKS9pbmNsdWRlL2J1aWxkZGVmcwotLQotLU1BTl9TRUNUSU9OCT0gNQotLQotLU1BTl9QQUdFUwk9ICQoc2hlbGwgZWNobyAqLiQoTUFOX1NFQ1RJT04pKQotLU1BTl9ERVNUCT0gJChQS0dfTUFOX0RJUikvbWFuJChNQU5fU0VDVElPTikKLS1MU1JDRklMRVMJPSAkKE1BTl9QQUdFUykKLS0KLS1kZWZhdWx0IDogJChNQU5fUEFHRVMpCi0tCi0taW5jbHVkZSAkKEJVSUxEUlVMRVMpCi0tCi0taW5zdGFsbCA6IGRlZmF1bHQKLS0JJChJTlNUQUxMKSAtbSA3NTUgLWQgJChNQU5fREVTVCkKLS0JJChJTlNUQUxMX01BTikKLS1pbnN0YWxsLWRldiBpbnN0YWxsLWxpYjoKLWRpZmYgLS1naXQgYS9tYW4vbWFuNS9hdHRyLjUgYi9tYW4vbWFuNS9hdHRyLjUKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggYTAyNzU3ZC4uMDAwMDAwMAotLS0tIGEvbWFuL21hbjUvYXR0ci41Ci0rKysgL2Rldi9udWxsCi1AQCAtMSwxNTMgKzAsMCBAQAotLS5cIiBFeHRlbmRlZCBhdHRyaWJ1dGVzIG1hbnVhbCBwYWdlCi0tLlwiCi0tLlwiIENvcHlyaWdodCAoQykgMjAwMCwgMjAwMiwgMjAwNyAgQW5kcmVhcyBHcnVlbmJhY2hlciA8YWdydWVuQHN1c2UuZGU+Ci0tLlwiIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwNCwgMjAwNyBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCi0tLlwiIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0tLlwiCi0tLlwiIFRoaXMgaXMgZnJlZSBkb2N1bWVudGF0aW9uOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLS0uXCIgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLS0uXCIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLS0uXCIgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0tLlwiCi0tLlwiIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSdzIHJlZmVyZW5jZXMgdG8gIm9iamVjdCBjb2RlIgotLS5cIiBhbmQgImV4ZWN1dGFibGVzIiBhcmUgdG8gYmUgaW50ZXJwcmV0ZWQgYXMgdGhlIG91dHB1dCBvZiBhbnkKLS0uXCIgZG9jdW1lbnQgZm9ybWF0dGluZyBvciB0eXBlc2V0dGluZyBzeXN0ZW0sIGluY2x1ZGluZwotLS5cIiBpbnRlcm1lZGlhdGUgYW5kIHByaW50ZWQgb3V0cHV0LgotLS5cIgotLS5cIiBUaGlzIG1hbnVhbCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLS5cIiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLS5cIiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tLlwiIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tLlwiCi0tLlwiIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotLS5cIiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBtYW51YWwuICBJZiBub3QsIHNlZQotLS5cIiA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0tLlwiCi0tLlRIIEFUVFIgNQotLS5TSCBOQU1FCi0tYXR0ciAtIEV4dGVuZGVkIGF0dHJpYnV0ZXMKLS0uU0ggREVTQ1JJUFRJT04KLS1FeHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSBuYW1lOnZhbHVlIHBhaXJzIGFzc29jaWF0ZWQgcGVybWFuZW50bHkgd2l0aAotLWZpbGVzIGFuZCBkaXJlY3Rvcmllcywgc2ltaWxhciB0byB0aGUgZW52aXJvbm1lbnQgc3RyaW5ncyBhc3NvY2lhdGVkCi0td2l0aCBhIHByb2Nlc3MuCi0tQW4gYXR0cmlidXRlIG1heSBiZSBkZWZpbmVkIG9yIHVuZGVmaW5lZC4KLS1JZiBpdCBpcyBkZWZpbmVkLCBpdHMgdmFsdWUgbWF5IGJlIGVtcHR5IG9yIG5vbi1lbXB0eS4KLS0uUFAKLS1FeHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSBleHRlbnNpb25zIHRvIHRoZSBub3JtYWwgYXR0cmlidXRlcyB3aGljaCBhcmUKLS1hc3NvY2lhdGVkIHdpdGggYWxsIGlub2RlcyBpbiB0aGUgc3lzdGVtIChpLmUuIHRoZQotLS5CUiBzdGF0ICgyKQotLWRhdGEpLgotLVRoZXkgYXJlIG9mdGVuIHVzZWQgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkKLS10byBhIGZpbGVzeXN0ZW0gXC0gZm9yIGV4YW1wbGUsIGFkZGl0aW9uYWwgc2VjdXJpdHkgZmVhdHVyZXMgc3VjaCBhcwotLUFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBtYXkgYmUgaW1wbGVtZW50ZWQgdXNpbmcgZXh0ZW5kZWQgYXR0cmlidXRlcy4KLS0uUFAKLS1Vc2VycyB3aXRoIHNlYXJjaCBhY2Nlc3MgdG8gYSBmaWxlIG9yIGRpcmVjdG9yeSBtYXkgcmV0cmlldmUgYSBsaXN0IG9mCi0tYXR0cmlidXRlIG5hbWVzIGRlZmluZWQgZm9yIHRoYXQgZmlsZSBvciBkaXJlY3RvcnkuCi0tLlBQCi0tRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgYWNjZXNzZWQgYXMgYXRvbWljIG9iamVjdHMuCi0tUmVhZGluZyByZXRyaWV2ZXMgdGhlIHdob2xlIHZhbHVlIG9mIGFuIGF0dHJpYnV0ZSBhbmQgc3RvcmVzIGl0IGluIGEgYnVmZmVyLgotLVdyaXRpbmcgcmVwbGFjZXMgYW55IHByZXZpb3VzIHZhbHVlIHdpdGggdGhlIG5ldyB2YWx1ZS4KLS0uUFAKLS1TcGFjZSBjb25zdW1lZCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlcyBpcyBjb3VudGVkIHRvd2FyZHMgdGhlIGRpc2sgcXVvdGFzCi0tb2YgdGhlIGZpbGUgb3duZXIgYW5kIGZpbGUgZ3JvdXAuCi0tLlBQCi0tQ3VycmVudGx5LCBzdXBwb3J0IGZvciBleHRlbmRlZCBhdHRyaWJ1dGVzIGlzIGltcGxlbWVudGVkIG9uIExpbnV4IGJ5IHRoZQotLWV4dDIsIGV4dDMsIGV4dDQsIFhGUywgSkZTIGFuZCByZWlzZXJmcyBmaWxlc3lzdGVtcy4KLS0uU0ggRVhURU5ERUQgQVRUUklCVVRFIE5BTUVTUEFDRVMKLS1BdHRyaWJ1dGUgbmFtZXMgYXJlIHplcm8tdGVybWluYXRlZCBzdHJpbmdzLgotLVRoZSBhdHRyaWJ1dGUgbmFtZSBpcyBhbHdheXMgc3BlY2lmaWVkIGluIHRoZSBmdWxseSBxdWFsaWZpZWQKLS0uSVIgbmFtZXNwYWNlLmF0dHJpYnV0ZQotLWZvcm0sIGVnLgotLS5JUiB1c2VyLm1pbWVfdHlwZSAsCi0tLklSIHRydXN0ZWQubWQ1c3VtICwKLS0uSVIgc3lzdGVtLnBvc2l4X2FjbF9hY2Nlc3MgLAotLW9yCi0tLklSIHNlY3VyaXR5LnNlbGludXggLgotLS5QUAotLVRoZSBuYW1lc3BhY2UgbWVjaGFuaXNtIGlzIHVzZWQgdG8gZGVmaW5lIGRpZmZlcmVudCBjbGFzc2VzIG9mIGV4dGVuZGVkCi0tYXR0cmlidXRlcy4KLS1UaGVzZSBkaWZmZXJlbnQgY2xhc3NlcyBleGlzdCBmb3Igc2V2ZXJhbCByZWFzb25zLCBlLmcuIHRoZSBwZXJtaXNzaW9ucwotLWFuZCBjYXBhYmlsaXRpZXMgcmVxdWlyZWQgZm9yIG1hbmlwdWxhdGluZyBleHRlbmRlZCBhdHRyaWJ1dGVzIG9mIG9uZQotLW5hbWVzcGFjZSBtYXkgZGlmZmVyIHRvIGFub3RoZXIuCi0tLlBQCi0tQ3VycmVudGx5IHRoZQotLS5JUiBzZWN1cml0eSAsCi0tLklSIHN5c3RlbSAsCi0tLklSIHRydXN0ZWQgLAotLWFuZAotLS5JUiB1c2VyCi0tZXh0ZW5kZWQgYXR0cmlidXRlIGNsYXNzZXMgYXJlIGRlZmluZWQgYXMgZGVzY3JpYmVkIGJlbG93LiBBZGRpdGlvbmFsCi0tY2xhc3NlcyBtYXkgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4KLS0uU1MgRXh0ZW5kZWQgc2VjdXJpdHkgYXR0cmlidXRlcwotLVRoZSBzZWN1cml0eSBhdHRyaWJ1dGUgbmFtZXNwYWNlIGlzIHVzZWQgYnkga2VybmVsIHNlY3VyaXR5IG1vZHVsZXMsCi0tc3VjaCBhcyBTZWN1cml0eSBFbmhhbmNlZCBMaW51eC4gIAotLVJlYWQgYW5kIHdyaXRlIGFjY2VzcyBwZXJtaXNzaW9ucyB0byBzZWN1cml0eSBhdHRyaWJ1dGVzIGRlcGVuZCBvbiB0aGUKLS1wb2xpY3kgaW1wbGVtZW50ZWQgZm9yIGVhY2ggc2VjdXJpdHkgYXR0cmlidXRlIGJ5IHRoZSBzZWN1cml0eSBtb2R1bGUuCi0tV2hlbiBubyBzZWN1cml0eSBtb2R1bGUgaXMgbG9hZGVkLCBhbGwgcHJvY2Vzc2VzIGhhdmUgcmVhZCBhY2Nlc3MgdG8KLS1leHRlbmRlZCBzZWN1cml0eSBhdHRyaWJ1dGVzLCBhbmQgd3JpdGUgYWNjZXNzIGlzIGxpbWl0ZWQgdG8gcHJvY2Vzc2VzCi0tdGhhdCBoYXZlIHRoZSBDQVBfU1lTX0FETUlOIGNhcGFiaWxpdHkuCi0tLlNTIEV4dGVuZGVkIHN5c3RlbSBhdHRyaWJ1dGVzCi0tRXh0ZW5kZWQgc3lzdGVtIGF0dHJpYnV0ZXMgYXJlIHVzZWQgYnkgdGhlIGtlcm5lbCB0byBzdG9yZSBzeXN0ZW0KLS1vYmplY3RzIHN1Y2ggYXMgQWNjZXNzIENvbnRyb2wgTGlzdHMgYW5kIENhcGFiaWxpdGllcy4gIFJlYWQgYW5kIHdyaXRlCi0tYWNjZXNzIHBlcm1pc3Npb25zIHRvIHN5c3RlbSBhdHRyaWJ1dGVzIGRlcGVuZCBvbiB0aGUgcG9saWN5IGltcGxlbWVudGVkCi0tZm9yIGVhY2ggc3lzdGVtIGF0dHJpYnV0ZSBpbXBsZW1lbnRlZCBieSBmaWxlc3lzdGVtcyBpbiB0aGUga2VybmVsLgotLS5TUyBUcnVzdGVkIGV4dGVuZGVkIGF0dHJpYnV0ZXMKLS1UcnVzdGVkIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIHZpc2libGUgYW5kIGFjY2Vzc2libGUgb25seSB0byBwcm9jZXNzZXMgdGhhdAotLWhhdmUgdGhlIENBUF9TWVNfQURNSU4gY2FwYWJpbGl0eSAodGhlIHN1cGVyIHVzZXIgdXN1YWxseSBoYXMgdGhpcwotLWNhcGFiaWxpdHkpLgotLUF0dHJpYnV0ZXMgaW4gdGhpcyBjbGFzcyBhcmUgdXNlZCB0byBpbXBsZW1lbnQgbWVjaGFuaXNtcyBpbiB1c2VyCi0tc3BhY2UgKGkuZS4sIG91dHNpZGUgdGhlIGtlcm5lbCkgd2hpY2gga2VlcCBpbmZvcm1hdGlvbiBpbiBleHRlbmRlZCBhdHRyaWJ1dGVzCi0tdG8gd2hpY2ggb3JkaW5hcnkgcHJvY2Vzc2VzIHNob3VsZCBub3QgaGF2ZSBhY2Nlc3MuCi0tLlNTIEV4dGVuZGVkIHVzZXIgYXR0cmlidXRlcwotLUV4dGVuZGVkIHVzZXIgYXR0cmlidXRlcyBtYXkgYmUgYXNzaWduZWQgdG8gZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGZvcgotLXN0b3JpbmcgYXJiaXRyYXJ5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gc3VjaCBhcyB0aGUgbWltZSB0eXBlLAotLWNoYXJhY3RlciBzZXQgb3IgZW5jb2Rpbmcgb2YgYSBmaWxlLiBUaGUgYWNjZXNzIHBlcm1pc3Npb25zIGZvciB1c2VyCi0tYXR0cmlidXRlcyBhcmUgZGVmaW5lZCBieSB0aGUgZmlsZSBwZXJtaXNzaW9uIGJpdHMuCi0tLlBQCi0tVGhlIGZpbGUgcGVybWlzc2lvbiBiaXRzIG9mIHJlZ3VsYXIgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGFyZQotLWludGVycHJldGVkIGRpZmZlcmVudGx5IGZyb20gdGhlIGZpbGUgcGVybWlzc2lvbiBiaXRzIG9mIHNwZWNpYWwgZmlsZXMKLS1hbmQgc3ltYm9saWMgbGlua3MuIEZvciByZWd1bGFyIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0aGUgZmlsZQotLXBlcm1pc3Npb24gYml0cyBkZWZpbmUgYWNjZXNzIHRvIHRoZSBmaWxlJ3MgY29udGVudHMsIHdoaWxlIGZvciBkZXZpY2Ugc3BlY2lhbAotLWZpbGVzIHRoZXkgZGVmaW5lIGFjY2VzcyB0byB0aGUgZGV2aWNlIGRlc2NyaWJlZCBieSB0aGUgc3BlY2lhbCBmaWxlLgotLVRoZSBmaWxlIHBlcm1pc3Npb25zIG9mIHN5bWJvbGljIGxpbmtzIGFyZSBub3QgdXNlZCBpbiBhY2Nlc3MKLS1jaGVja3MuIFRoZXNlIGRpZmZlcmVuY2VzIHdvdWxkIGFsbG93IHVzZXJzIHRvIGNvbnN1bWUgZmlsZXN5c3RlbSByZXNvdXJjZXMgaW4KLS1hIHdheSBub3QgY29udHJvbGxhYmxlIGJ5IGRpc2sgcXVvdGFzIGZvciBncm91cCBvciB3b3JsZCB3cml0YWJsZSBzcGVjaWFsIGZpbGVzIGFuZCBkaXJlY3Rvcmllcy4KLS0uUFAKLS1Gb3IgdGhpcyByZWFzb24sIGV4dGVuZGVkIHVzZXIgYXR0cmlidXRlcyBhcmUgb25seSBhbGxvd2VkIGZvciByZWd1bGFyIGZpbGVzIGFuZCBkaXJlY3RvcmllcywgYW5kIGFjY2VzcyB0byBleHRlbmRlZCB1c2VyIGF0dHJpYnV0ZXMgaXMgcmVzdHJpY3RlZCB0byB0aGUKLS1vd25lciBhbmQgdG8gdXNlcnMgd2l0aCBhcHByb3ByaWF0ZSBjYXBhYmlsaXRpZXMgZm9yIGRpcmVjdG9yaWVzIHdpdGggdGhlCi0tc3RpY2t5IGJpdCBzZXQgKHNlZSB0aGUKLS0uQlIgY2htb2QgKDEpCi0tbWFudWFsIHBhZ2UgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIFN0aWNreSBEaXJlY3RvcmllcykuCi0tLlNIIEZJTEVTWVNURU0gRElGRkVSRU5DRVMKLS1UaGUga2VybmVsIGFuZCB0aGUgZmlsZXN5c3RlbSBtYXkgcGxhY2UgbGltaXRzIG9uIHRoZSBtYXhpbXVtIG51bWJlcgotLWFuZCBzaXplIG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdGhhdCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGEgZmlsZS4KLS1Tb21lIGZpbGUgc3lzdGVtcywgc3VjaCBhcyBleHQyLzMgYW5kIHJlaXNlcmZzLCByZXF1aXJlIHRoZSBmaWxlc3lzdGVtCi0tdG8gYmUgbW91bnRlZCB3aXRoIHRoZQotLS5CIHVzZXJfeGF0dHIKLS1tb3VudCBvcHRpb24gaW4gb3JkZXIgZm9yIGV4dGVuZGVkIHVzZXIgYXR0cmlidXRlcyB0byBiZSB1c2VkLgotLS5QUAotLUluIHRoZSBjdXJyZW50IGV4dDIsIGV4dDMgYW5kIGV4dDQgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbnMsIGVhY2gKLS1leHRlbmRlZCBhdHRyaWJ1dGUgbXVzdCBmaXQgb24gYSBzaW5nbGUgZmlsZXN5c3RlbSBibG9jayAoMTAyNCwgMjA0OAotLW9yIDQwOTYgYnl0ZXMsIGRlcGVuZGluZyBvbiB0aGUgYmxvY2sgc2l6ZSBzcGVjaWZpZWQgd2hlbiB0aGUKLS1maWxlc3lzdGVtIHdhcyBjcmVhdGVkKS4KLS0uUFAKLS1JbiB0aGUgWEZTIGFuZCByZWlzZXJmcyBmaWxlc3lzdGVtIGltcGxlbWVudGF0aW9ucywgdGhlcmUgaXMgbm8KLS1wcmFjdGljYWwgbGltaXQgb24gdGhlIG51bWJlciBvciBzaXplIG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMKLS1hc3NvY2lhdGVkIHdpdGggYSBmaWxlLCBhbmQgdGhlIGFsZ29yaXRobXMgdXNlZCB0byBzdG9yZSBleHRlbmRlZAotLWF0dHJpYnV0ZSBpbmZvcm1hdGlvbiBvbiBkaXNrIGFyZSBzY2FsYWJsZS4KLS0uUFAKLS1JbiB0aGUgSkZTIGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb24sIG5hbWVzIGNhbiBiZSB1cCB0byAyNTUgYnl0ZXMgYW5kCi0tdmFsdWVzIHVwIHRvIDY1LDUzNSBieXRlcy4KLS0uU0ggQURESVRJT05BTCBOT1RFUwotLVNpbmNlIHRoZSBmaWxlc3lzdGVtcyBvbiB3aGljaCBleHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSBzdG9yZWQgbWlnaHQgYWxzbwotLWJlIHVzZWQgb24gYXJjaGl0ZWN0dXJlcyB3aXRoIGEgZGlmZmVyZW50IGJ5dGUgb3JkZXIgYW5kIG1hY2hpbmUgd29yZAotLXNpemUsIGNhcmUgc2hvdWxkIGJlIHRha2VuIHRvIHN0b3JlIGF0dHJpYnV0ZSB2YWx1ZXMgaW4gYW4gYXJjaGl0ZWN0dXJlCi0taW5kZXBlbmRlbnQgZm9ybWF0LgotLS5TSCBBVVRIT1JTCi0tQW5kcmVhcyBHcnVlbmJhY2hlciwKLS0uUkkgPCBhLmdydWVuYmFjaGVyQGJlc3RiaXRzLmF0ID4KLS1hbmQgdGhlIFNHSSBYRlMgZGV2ZWxvcG1lbnQgdGVhbSwKLS0uUkkgPCBsaW51eC14ZnNAb3NzLnNnaS5jb20gPi4KLS0uU0ggU0VFIEFMU08KLS1nZXRmYXR0cigxKSwKLS1zZXRmYXR0cigxKS4KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL1JlbW92ZS10aGUtc2VjdGlvbi0yLW1hbi1wYWdlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy9SZW1vdmUtdGhlLXNlY3Rpb24tMi1tYW4tcGFnZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0NGM1YTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL1JlbW92ZS10aGUtc2VjdGlvbi0yLW1hbi1wYWdlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY2NiArMCwwIEBACi1Gcm9tIGI5NzI2MDBhMjZmM2E5MzBlNTNlMmZjZTI2MjUyNjZhNWQyOTgxM2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZWFzIEdydWVuYmFjaGVyIDxhbmRyZWFzLmdydWVuYmFjaGVyQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMTQgQXByIDIwMTUgMjM6NTM6MTEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIFJlbW92ZSB0aGUgc2VjdGlvbiAyIG1hbiBwYWdlcwotCi1Db21taXQgOGQxMjYzYmNhOTU3MjJkNjZhNmY4ZTgzNDUwZjQ5ZDA5NTZlYTUzNCBmcm9tIHVwc3RyZWFtCi1odHRwczovL2dpdC5zYXZhbm5haC5ub25nbnUub3JnL2dpdC9hdHRyLmdpdC8KLQotVGhlIHNlY3Rpb24gMiBtYW4gcGFnZXMgaGF2ZSBsb25nIHNpbmNlIGJlZW4gYWRkZWQgdG8gdGhlIG1hbi1wYWdlcyBwYWNrYWdlCi13aGljaCBkb2N1bWVudHMgYWxsIHN5c3RlbSBjYWxsczsgdGhleSB3ZXJlIGRpc2FibGVkIGluIGF0dHIgYnkgZGVmYXVsdCBzaW5jZQotSmFudWFyeSAyMDE0LiAgR2V0IHJpZCBvZiB0aGVtIGhlcmUuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotW01BOiBtb2RpZmllZCB0byBhcHBseSBkaXJlY3RseSB0byB2Mi40LjQ3XQotU2lnbmVkLW9mZi1ieTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KLS0tLQotIG1hbi9NYWtlZmlsZSAgICAgICAgICAgfCAgIDIgKy0KLSBtYW4vbWFuMi9NYWtlZmlsZSAgICAgIHwgIDM1IC0tLS0tLS0tLS0tCi0gbWFuL21hbjIvZ2V0eGF0dHIuMiAgICB8IDE0MyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIG1hbi9tYW4yL2xpc3R4YXR0ci4yICAgfCAxNTggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIG1hbi9tYW4yL3JlbW92ZXhhdHRyLjIgfCAxMTEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIG1hbi9tYW4yL3NldHhhdHRyLjIgICAgfCAxNDMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSA2IGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA1OTEgZGVsZXRpb25zKC0pCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IG1hbi9tYW4yL01ha2VmaWxlCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IG1hbi9tYW4yL2dldHhhdHRyLjIKLSBkZWxldGUgbW9kZSAxMDA2NDQgbWFuL21hbjIvbGlzdHhhdHRyLjIKLSBkZWxldGUgbW9kZSAxMDA2NDQgbWFuL21hbjIvcmVtb3ZleGF0dHIuMgotIGRlbGV0ZSBtb2RlIDEwMDY0NCBtYW4vbWFuMi9zZXR4YXR0ci4yCi0KLWRpZmYgLS1naXQgYS9tYW4vTWFrZWZpbGUgYi9tYW4vTWFrZWZpbGUKLWluZGV4IDk1MzU0MjYuLjc1NWRhZWQgMTAwNjQ0Ci0tLS0gYS9tYW4vTWFrZWZpbGUKLSsrKyBiL21hbi9NYWtlZmlsZQotQEAgLTE5LDcgKzE5LDcgQEAKLSBUT1BESVIgPSAuLgotIGluY2x1ZGUgJChUT1BESVIpL2luY2x1ZGUvYnVpbGRkZWZzCi0gCi0tU1VCRElSUyA9IG1hbjEgbWFuMiBtYW4zIG1hbjUKLStTVUJESVJTID0gbWFuMSBtYW4zIG1hbjUKLSAKLSBkZWZhdWx0IDogJChTVUJESVJTKQotIAotZGlmZiAtLWdpdCBhL21hbi9tYW4yL01ha2VmaWxlIGIvbWFuL21hbjIvTWFrZWZpbGUKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggZDc3MzA5ZC4uMDAwMDAwMAotLS0tIGEvbWFuL21hbjIvTWFrZWZpbGUKLSsrKyAvZGV2L251bGwKLUBAIC0xLDM1ICswLDAgQEAKLS0jCi0tIyBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwMiBTaWxpY29uIEdyYXBoaWNzLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgotLSMgQ29weXJpZ2h0IChDKSAyMDA5ICBBbmRyZWFzIEdydWVuYmFjaGVyIDxhZ3J1ZW5Ac3VzZS5kZT4KLS0jCi0tIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotLSMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0tIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLSMKLS0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tIwotLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotLSMKLS0KLS1UT1BESVIgPSAuLi8uLgotLWluY2x1ZGUgJChUT1BESVIpL2luY2x1ZGUvYnVpbGRkZWZzCi0tCi0tTUFOX1NFQ1RJT04JPSAyCi0tCi0tTUFOX1BBR0VTCT0gJChzaGVsbCBlY2hvICouJChNQU5fU0VDVElPTikpCi0tTUFOX0RFU1QJPSAkKFBLR19NQU5fRElSKS9tYW4kKE1BTl9TRUNUSU9OKQotLUxTUkNGSUxFUwk9ICQoTUFOX1BBR0VTKQotLQotLWRlZmF1bHQgaW5zdGFsbCA6ICQoTUFOX1BBR0VTKQotLQotLWluY2x1ZGUgJChCVUlMRFJVTEVTKQotLQotLWluc3RhbGwtZGV2IDogZGVmYXVsdAotLQkkKElOU1RBTEwpIC1tIDc1NSAtZCAkKE1BTl9ERVNUKQotLQkkKElOU1RBTExfTUFOKQotLWluc3RhbGwtbGliOgotZGlmZiAtLWdpdCBhL21hbi9tYW4yL2dldHhhdHRyLjIgYi9tYW4vbWFuMi9nZXR4YXR0ci4yCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDQwNWFkODkuLjAwMDAwMDAKLS0tLSBhL21hbi9tYW4yL2dldHhhdHRyLjIKLSsrKyAvZGV2L251bGwKLUBAIC0xLDE0MyArMCwwIEBACi0tLlwiCi0tLlwiIEV4dGVuZGVkIGF0dHJpYnV0ZXMgc3lzdGVtIGNhbGxzIG1hbnVhbCBwYWdlcwotLS5cIgotLS5cIiAoQykgQW5kcmVhcyBHcnVlbmJhY2hlciwgRmVicnVhcnkgMjAwMQotLS5cIiAoQykgU2lsaWNvbiBHcmFwaGljcyBJbmMsIFNlcHRlbWJlciAyMDAxCi0tLlwiCi0tLlwiIFRoaXMgaXMgZnJlZSBkb2N1bWVudGF0aW9uOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLS0uXCIgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLS0uXCIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLS0uXCIgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0tLlwiCi0tLlwiIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSdzIHJlZmVyZW5jZXMgdG8gIm9iamVjdCBjb2RlIgotLS5cIiBhbmQgImV4ZWN1dGFibGVzIiBhcmUgdG8gYmUgaW50ZXJwcmV0ZWQgYXMgdGhlIG91dHB1dCBvZiBhbnkKLS0uXCIgZG9jdW1lbnQgZm9ybWF0dGluZyBvciB0eXBlc2V0dGluZyBzeXN0ZW0sIGluY2x1ZGluZwotLS5cIiBpbnRlcm1lZGlhdGUgYW5kIHByaW50ZWQgb3V0cHV0LgotLS5cIgotLS5cIiBUaGlzIG1hbnVhbCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLS5cIiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLS5cIiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tLlwiIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tLlwiCi0tLlwiIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotLS5cIiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBtYW51YWwuICBJZiBub3QsIHNlZQotLS5cIiA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0tLlwiCi0tLlRIIEdFVFhBVFRSIDIgIkV4dGVuZGVkIEF0dHJpYnV0ZXMiICJEZWMgMjAwMSIgIlN5c3RlbSBjYWxscyIKLS0uU0ggTkFNRQotLWdldHhhdHRyLCBsZ2V0eGF0dHIsIGZnZXR4YXR0ciBcLSByZXRyaWV2ZSBhbiBleHRlbmRlZCBhdHRyaWJ1dGUgdmFsdWUKLS0uU0ggU1lOT1BTSVMKLS0uZmFtIEMKLS0ubmYKLS0uQiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tLkIgI2luY2x1ZGUgPGF0dHIveGF0dHIuaD4KLS0uc3AKLS0uQkkgInNzaXplX3QgZ2V0eGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwgY29uc3QgY2hhclwgKiIgbmFtZSAiLAotLS5CSSAiXHRcdFx0XHQgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSApOwotLS5CSSAic3NpemVfdCBsZ2V0eGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwgY29uc3QgY2hhclwgKiIgbmFtZSAiLAotLS5CSSAiXHRcdFx0XHQgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSApOwotLS5CSSAic3NpemVfdCBmZ2V0eGF0dHIgKGludCAiIGZpbGVkZXMgIiwgY29uc3QgY2hhclwgKiIgbmFtZSAiLAotLS5CSSAiXHRcdFx0XHQgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSApOwotLS5maQotLS5mYW0gVAotLS5TSCBERVNDUklQVElPTgotLUV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlCi0tLklSIG5hbWUgOlxjCi0tLkkgdmFsdWUKLS1wYWlycyBhc3NvY2lhdGVkIHdpdGggaW5vZGVzIChmaWxlcywgZGlyZWN0b3JpZXMsIHN5bWxpbmtzLCBldGMpLgotLVRoZXkgYXJlIGV4dGVuc2lvbnMgdG8gdGhlIG5vcm1hbCBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBhc3NvY2lhdGVkCi0td2l0aCBhbGwgaW5vZGVzIGluIHRoZSBzeXN0ZW0gKGkuZS4gdGhlCi0tLkJSIHN0YXQgKDIpCi0tZGF0YSkuCi0tQSBjb21wbGV0ZSBvdmVydmlldyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGNvbmNlcHRzIGNhbiBiZSBmb3VuZCBpbgotLS5CUiBhdHRyICg1KS4KLS0uUFAKLS0uQiBnZXR4YXR0cgotLXJldHJpZXZlcyB0aGUKLS0uSSB2YWx1ZQotLW9mIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgaWRlbnRpZmllZCBieQotLS5JIG5hbWUKLS1hbmQgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbgotLS5JIHBhdGgKLS1pbiB0aGUgZmlsZXN5c3RlbS4KLS1UaGUgbGVuZ3RoIG9mIHRoZSBhdHRyaWJ1dGUKLS0uSSB2YWx1ZQotLWlzIHJldHVybmVkLgotLS5QUAotLS5CIGxnZXR4YXR0cgotLWlzIGlkZW50aWNhbCB0byAKLS0uQlIgZ2V0eGF0dHIgLAotLWV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhIHN5bWJvbGljIGxpbmssIHdoZXJlIHRoZSBsaW5rIGl0c2VsZiBpcwotLWludGVycm9nYXRlZCwgbm90IHRoZSBmaWxlIHRoYXQgaXQgcmVmZXJzIHRvLgotLS5QUAotLS5CIGZnZXR4YXR0cgotLWlzIGlkZW50aWNhbCB0bwotLS5CUiBnZXR4YXR0ciAsCi0tb25seSB0aGUgb3BlbiBmaWxlIHBvaW50ZWQgdG8gYnkKLS0uSSBmaWxlZGVzCi0tKGFzIHJldHVybmVkIGJ5Ci0tLkJSIG9wZW4gKDIpKQotLWlzIGludGVycm9nYXRlZCBpbiBwbGFjZSBvZgotLS5JUiBwYXRoIC4KLS0uUFAKLS1BbiBleHRlbmRlZCBhdHRyaWJ1dGUKLS0uSSBuYW1lCi0taXMgYSBzaW1wbGUgTlVMTC10ZXJtaW5hdGVkIHN0cmluZy4KLS1UaGUgbmFtZSBpbmNsdWRlcyBhIG5hbWVzcGFjZSBwcmVmaXggXC0gdGhlcmUgbWF5IGJlIHNldmVyYWwsIGRpc2pvaW50Ci0tbmFtZXNwYWNlcyBhc3NvY2lhdGVkIHdpdGggYW4gaW5kaXZpZHVhbCBpbm9kZS4KLS1UaGUgdmFsdWUgb2YgYW4gZXh0ZW5kZWQgYXR0cmlidXRlIGlzIGEgY2h1bmsgb2YgYXJiaXRyYXJ5IHRleHR1YWwgb3IKLS1iaW5hcnkgZGF0YSBvZiBzcGVjaWZpZWQgbGVuZ3RoLgotLS5QUAotLUFuIGVtcHR5IGJ1ZmZlciBvZgotLS5JIHNpemUKLS16ZXJvIGNhbiBiZSBwYXNzZWQgaW50byB0aGVzZSBjYWxscyB0byByZXR1cm4gdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUKLS1uYW1lZCBleHRlbmRlZCBhdHRyaWJ1dGUsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGVzdGltYXRlIHRoZSBzaXplIG9mIGEKLS1idWZmZXIgd2hpY2ggaXMgc3VmZmljaWVudGx5IGxhcmdlIHRvIGhvbGQgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aAotLXRoZSBleHRlbmRlZCBhdHRyaWJ1dGUuCi0tLlBQCi0tVGhlIGludGVyZmFjZSBpcyBkZXNpZ25lZCB0byBhbGxvdyBndWVzc2luZyBvZiBpbml0aWFsIGJ1ZmZlcgotLXNpemVzLCBhbmQgdG8gZW5sYXJnZSBidWZmZXJzIHdoZW4gdGhlIHJldHVybiB2YWx1ZSBpbmRpY2F0ZXMKLS10aGF0IHRoZSBidWZmZXIgcHJvdmlkZWQgd2FzIHRvbyBzbWFsbC4KLS0uU0ggUkVUVVJOIFZBTFVFCi0tT24gc3VjY2VzcywgYSBwb3NpdGl2ZSBudW1iZXIgaXMgcmV0dXJuZWQgaW5kaWNhdGluZyB0aGUgc2l6ZSBvZiB0aGUKLS1leHRlbmRlZCBhdHRyaWJ1dGUgdmFsdWUuCi0tT24gZmFpbHVyZSwgXC0xIGlzIHJldHVybmVkIGFuZAotLS5JIGVycm5vCi0taXMgc2V0IGFwcHJvcHJpYXRlbHkuCi0tLlBQCi0tSWYgdGhlIG5hbWVkIGF0dHJpYnV0ZSBkb2VzIG5vdCBleGlzdCwgb3IgdGhlIHByb2Nlc3MgaGFzIG5vIGFjY2VzcyB0bwotLXRoaXMgYXR0cmlidXRlLAotLS5JIGVycm5vCi0taXMgc2V0IHRvIEVOT0FUVFIuCi0tLlBQCi0tSWYgdGhlCi0tLkkgc2l6ZQotLW9mIHRoZQotLS5JIHZhbHVlCi0tYnVmZmVyIGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZSByZXN1bHQsCi0tLkkgZXJybm8KLS1pcyBzZXQgdG8gRVJBTkdFLgotLS5QUAotLUlmIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGZpbGVzeXN0ZW0sIG9yIGFyZSBkaXNhYmxlZCwKLS0uSSBlcnJubwotLWlzIHNldCB0byBFTk9UU1VQLgotLS5QUAotLVRoZSBlcnJvcnMgZG9jdW1lbnRlZCBmb3IgdGhlCi0tLkJSIHN0YXQgKDIpCi0tc3lzdGVtIGNhbGwgYXJlIGFsc28gYXBwbGljYWJsZSBoZXJlLgotLS5TSCBBVVRIT1JTCi0tQW5kcmVhcyBHcnVlbmJhY2hlciwKLS0uUkkgPCBhLmdydWVuYmFjaGVyQGJlc3RiaXRzLmF0ID4KLS1hbmQgdGhlIFNHSSBYRlMgZGV2ZWxvcG1lbnQgdGVhbSwKLS0uUkkgPCBsaW51eC14ZnNAb3NzLnNnaS5jb20gPi4KLS1QbGVhc2Ugc2VuZCBhbnkgYnVnIHJlcG9ydHMgb3IgY29tbWVudHMgdG8gdGhlc2UgYWRkcmVzc2VzLgotLS5TSCBTRUUgQUxTTwotLS5CUiBnZXRmYXR0ciAoMSksCi0tLkJSIHNldGZhdHRyICgxKSwKLS0uQlIgb3BlbiAoMiksCi0tLkJSIHN0YXQgKDIpLAotLS5CUiBzZXR4YXR0ciAoMiksCi0tLkJSIGxpc3R4YXR0ciAoMiksCi0tLkJSIHJlbW92ZXhhdHRyICgyKSwKLS1hbmQKLS0uQlIgYXR0ciAoNSkuCi1kaWZmIC0tZ2l0IGEvbWFuL21hbjIvbGlzdHhhdHRyLjIgYi9tYW4vbWFuMi9saXN0eGF0dHIuMgotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA4YjQzNzFjLi4wMDAwMDAwCi0tLS0gYS9tYW4vbWFuMi9saXN0eGF0dHIuMgotKysrIC9kZXYvbnVsbAotQEAgLTEsMTU4ICswLDAgQEAKLS0uXCIKLS0uXCIgRXh0ZW5kZWQgYXR0cmlidXRlcyBzeXN0ZW0gY2FsbHMgbWFudWFsIHBhZ2VzCi0tLlwiCi0tLlwiIChDKSBBbmRyZWFzIEdydWVuYmFjaGVyLCBGZWJydWFyeSAyMDAxCi0tLlwiIChDKSBTaWxpY29uIEdyYXBoaWNzIEluYywgU2VwdGVtYmVyIDIwMDEKLS0uXCIKLS0uXCIgVGhpcyBpcyBmcmVlIGRvY3VtZW50YXRpb247IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotLS5cIiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotLS5cIiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgotLS5cIiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0uXCIKLS0uXCIgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlJ3MgcmVmZXJlbmNlcyB0byAib2JqZWN0IGNvZGUiCi0tLlwiIGFuZCAiZXhlY3V0YWJsZXMiIGFyZSB0byBiZSBpbnRlcnByZXRlZCBhcyB0aGUgb3V0cHV0IG9mIGFueQotLS5cIiBkb2N1bWVudCBmb3JtYXR0aW5nIG9yIHR5cGVzZXR0aW5nIHN5c3RlbSwgaW5jbHVkaW5nCi0tLlwiIGludGVybWVkaWF0ZSBhbmQgcHJpbnRlZCBvdXRwdXQuCi0tLlwiCi0tLlwiIFRoaXMgbWFudWFsIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tLlwiIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tLlwiIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0uXCIgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0uXCIKLS0uXCIgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0tLlwiIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIG1hbnVhbC4gIElmIG5vdCwgc2VlCi0tLlwiIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLS0uXCIKLS0uVEggTElTVFhBVFRSIDIgIkV4dGVuZGVkIEF0dHJpYnV0ZXMiICJEZWMgMjAwMSIgIlN5c3RlbSBjYWxscyIKLS0uU0ggTkFNRQotLWxpc3R4YXR0ciwgbGxpc3R4YXR0ciwgZmxpc3R4YXR0ciBcLSBsaXN0IGV4dGVuZGVkIGF0dHJpYnV0ZSBuYW1lcwotLS5TSCBTWU5PUFNJUwotLS5mYW0gQwotLS5uZgotLS5CICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0uQiAjaW5jbHVkZSA8YXR0ci94YXR0ci5oPgotLS5zcAotLS5CSSAic3NpemVfdCBsaXN0eGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwKLS0uQkkgIlx0XHRcdFx0IGNoYXJcICoiIGxpc3QgIiwgc2l6ZV90ICIgc2l6ZSApOwotLS5CSSAic3NpemVfdCBsbGlzdHhhdHRyIChjb25zdCBjaGFyXCAqIiBwYXRoICIsCi0tLkJJICJcdFx0XHRcdCBjaGFyXCAqIiBsaXN0ICIsIHNpemVfdCAiIHNpemUgKTsKLS0uQkkgInNzaXplX3QgZmxpc3R4YXR0ciAoaW50ICIgZmlsZWRlcyAiLAotLS5CSSAiXHRcdFx0XHQgY2hhclwgKiIgbGlzdCAiLCBzaXplX3QgIiBzaXplICk7Ci0tLmZpCi0tLmZhbSBUCi0tLlNIIERFU0NSSVBUSU9OCi0tRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgbmFtZTp2YWx1ZQotLXBhaXJzIGFzc29jaWF0ZWQgd2l0aCBpbm9kZXMgKGZpbGVzLCBkaXJlY3Rvcmllcywgc3ltbGlua3MsIGV0YykuCi0tVGhleSBhcmUgZXh0ZW5zaW9ucyB0byB0aGUgbm9ybWFsIGF0dHJpYnV0ZXMgd2hpY2ggYXJlIGFzc29jaWF0ZWQKLS13aXRoIGFsbCBpbm9kZXMgaW4gdGhlIHN5c3RlbSAoaS5lLiB0aGUKLS0uQlIgc3RhdCAoMikKLS1kYXRhKS4KLS1BIGNvbXBsZXRlIG92ZXJ2aWV3IG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMgY29uY2VwdHMgY2FuIGJlIGZvdW5kIGluCi0tLkJSIGF0dHIgKDUpLgotLS5QUAotLS5CIGxpc3R4YXR0cgotLXJldHJpZXZlcyB0aGUKLS0uSSBsaXN0Ci0tb2YgZXh0ZW5kZWQgYXR0cmlidXRlIG5hbWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4KLS0uSSBwYXRoCi0taW4gdGhlIGZpbGVzeXN0ZW0uCi0tVGhlIGxpc3QgaXMgdGhlIHNldCBvZiAoTlVMTC10ZXJtaW5hdGVkKSBuYW1lcywgb25lIGFmdGVyIHRoZSBvdGhlci4KLS1OYW1lcyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIHRvIHdoaWNoIHRoZSBjYWxsaW5nIHByb2Nlc3MgZG9lcyBub3QKLS1oYXZlIGFjY2VzcyBtYXkgYmUgb21pdHRlZCBmcm9tIHRoZSBsaXN0LgotLVRoZSBsZW5ndGggb2YgdGhlIGF0dHJpYnV0ZSBuYW1lCi0tLkkgbGlzdAotLWlzIHJldHVybmVkLgotLS5QUAotLS5CIGxsaXN0eGF0dHIKLS1pcyBpZGVudGljYWwgdG8KLS0uQlIgbGlzdHhhdHRyICwKLS1leGNlcHQgaW4gdGhlIGNhc2Ugb2YgYSBzeW1ib2xpYyBsaW5rLCB3aGVyZSB0aGUgbGlzdCBvZiBuYW1lcyBvZgotLWV4dGVuZGVkIGF0dHJpYnV0ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaW5rIGl0c2VsZiBpcyByZXRyaWV2ZWQsCi0tbm90IHRoZSBmaWxlIHRoYXQgaXQgcmVmZXJzIHRvLgotLS5JIGxpc3QKLS1pcyBhIGNhbGxlci1hbGxvY2F0ZWQgYnVmZmVyIG9mIHNpemUKLS0uSVIgc2l6ZSAuCi0tLlBQCi0tLkIgZmxpc3R4YXR0cgotLWlzIGlkZW50aWNhbCB0bwotLS5CUiBsaXN0eGF0dHIgLAotLW9ubHkgdGhlIG9wZW4gZmlsZSBwb2ludGVkIHRvIGJ5Ci0tLkkgZmlsZWRlcwotLShhcyByZXR1cm5lZCBieQotLS5CUiBvcGVuICgyKSkKLS1pcyBpbnRlcnJvZ2F0ZWQgaW4gcGxhY2Ugb2YKLS0uSVIgcGF0aCAuCi0tLlBQCi0tQSBzaW5nbGUgZXh0ZW5kZWQgYXR0cmlidXRlCi0tLkkgbmFtZQotLWlzIGEgc2ltcGxlIE5VTEwtdGVybWluYXRlZCBzdHJpbmcuCi0tVGhlIG5hbWUgaW5jbHVkZXMgYSBuYW1lc3BhY2UgcHJlZml4IFwtIHRoZXJlIG1heSBiZSBzZXZlcmFsLCBkaXNqb2ludAotLW5hbWVzcGFjZXMgYXNzb2NpYXRlZCB3aXRoIGFuIGluZGl2aWR1YWwgaW5vZGUuCi0tLlBQCi0tQW4gZW1wdHkgYnVmZmVyIG9mCi0tLkkgc2l6ZQotLXplcm8gY2FuIGJlIHBhc3NlZCBpbnRvIHRoZXNlIGNhbGxzIHRvIHJldHVybiB0aGUgY3VycmVudCBzaXplIG9mIHRoZQotLWxpc3Qgb2YgZXh0ZW5kZWQgYXR0cmlidXRlIG5hbWVzLCB3aGljaCBjYW4gYmUgdXNlZCB0byBlc3RpbWF0ZSB0aGUKLS1zaXplIG9mIGEgYnVmZmVyIHdoaWNoIGlzIHN1ZmZpY2llbnRseSBsYXJnZSB0byBob2xkIHRoZSBsaXN0IG9mIG5hbWVzLgotLS5TSCBFWEFNUExFUwotLVRoZQotLS5JIGxpc3QKLS1vZiBuYW1lcyBpcyByZXR1cm5lZCBhcyBhbiB1bm9yZGVyZWQgYXJyYXkgb2YgTlVMTC10ZXJtaW5hdGVkIGNoYXJhY3RlcgotLXN0cmluZ3MgKGF0dHJpYnV0ZSBuYW1lcyBhcmUgc2VwYXJhdGVkIGJ5IE5VTEwgY2hhcmFjdGVycyksIGxpa2UgdGhpczoKLS0uZmFtIEMKLS0uUlMKLS0ubmYKLS11c2VyLm5hbWUxXFwwc3lzdGVtLm5hbWUxXFwwdXNlci5uYW1lMlxcMAotLS5maQotLS5SRQotLS5mYW0gVAotLS5QCi0tRmlsZXN5c3RlbXMgbGlrZSBleHQyLCBleHQzIGFuZCBYRlMgd2hpY2ggaW1wbGVtZW50IFBPU0lYIEFDTHMgdXNpbmcKLS1leHRlbmRlZCBhdHRyaWJ1dGVzLCBtaWdodCByZXR1cm4gYQotLS5JIGxpc3QKLS1saWtlIHRoaXM6Ci0tLmZhbSBDCi0tLlJTCi0tLm5mCi0tc3lzdGVtLnBvc2l4X2FjbF9hY2Nlc3NcXDBzeXN0ZW0ucG9zaXhfYWNsX2RlZmF1bHRcXDAKLS0uZmkKLS0uUkUKLS0uZmFtIFQKLS0uU0ggUkVUVVJOIFZBTFVFCi0tT24gc3VjY2VzcywgYSBwb3NpdGl2ZSBudW1iZXIgaXMgcmV0dXJuZWQgaW5kaWNhdGluZyB0aGUgc2l6ZSBvZiB0aGUKLS1leHRlbmRlZCBhdHRyaWJ1dGUgbmFtZSBsaXN0LgotLU9uIGZhaWx1cmUsIFwtMSBpcyByZXR1cm5lZCBhbmQKLS0uSSBlcnJubwotLWlzIHNldCBhcHByb3ByaWF0ZWx5LgotLS5QUAotLUlmIHRoZQotLS5JIHNpemUKLS1vZiB0aGUKLS0uSSBsaXN0Ci0tYnVmZmVyIGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZSByZXN1bHQsCi0tLkkgZXJybm8KLS1pcyBzZXQgdG8gRVJBTkdFLgotLS5QUAotLUlmIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGZpbGVzeXN0ZW0sIG9yIGFyZSBkaXNhYmxlZCwKLS0uSSBlcnJubwotLWlzIHNldCB0byBFTk9UU1VQLgotLS5QUAotLVRoZSBlcnJvcnMgZG9jdW1lbnRlZCBmb3IgdGhlCi0tLkJSIHN0YXQgKDIpCi0tc3lzdGVtIGNhbGwgYXJlIGFsc28gYXBwbGljYWJsZSBoZXJlLgotLS5TSCBBVVRIT1JTCi0tQW5kcmVhcyBHcnVlbmJhY2hlciwKLS0uUkkgPCBhLmdydWVuYmFjaGVyQGJlc3RiaXRzLmF0ID4KLS1hbmQgdGhlIFNHSSBYRlMgZGV2ZWxvcG1lbnQgdGVhbSwKLS0uUkkgPCBsaW51eC14ZnNAb3NzLnNnaS5jb20gPi4KLS1QbGVhc2Ugc2VuZCBhbnkgYnVnIHJlcG9ydHMgb3IgY29tbWVudHMgdG8gdGhlc2UgYWRkcmVzc2VzLgotLS5TSCBTRUUgQUxTTwotLS5CUiBnZXRmYXR0ciAoMSksCi0tLkJSIHNldGZhdHRyICgxKSwKLS0uQlIgb3BlbiAoMiksCi0tLkJSIHN0YXQgKDIpLAotLS5CUiBnZXR4YXR0ciAoMiksCi0tLkJSIHNldHhhdHRyICgyKSwKLS0uQlIgcmVtb3ZleGF0dHIgKDIpLAotLWFuZAotLS5CUiBhdHRyICg1KS4KLWRpZmYgLS1naXQgYS9tYW4vbWFuMi9yZW1vdmV4YXR0ci4yIGIvbWFuL21hbjIvcmVtb3ZleGF0dHIuMgotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAyYzdkOTM0Li4wMDAwMDAwCi0tLS0gYS9tYW4vbWFuMi9yZW1vdmV4YXR0ci4yCi0rKysgL2Rldi9udWxsCi1AQCAtMSwxMTEgKzAsMCBAQAotLS5cIgotLS5cIiBFeHRlbmRlZCBhdHRyaWJ1dGVzIHN5c3RlbSBjYWxscyBtYW51YWwgcGFnZXMKLS0uXCIKLS0uXCIgKEMpIEFuZHJlYXMgR3J1ZW5iYWNoZXIsIEZlYnJ1YXJ5IDIwMDEKLS0uXCIgKEMpIFNpbGljb24gR3JhcGhpY3MgSW5jLCBTZXB0ZW1iZXIgMjAwMQotLS5cIgotLS5cIiBUaGlzIGlzIGZyZWUgZG9jdW1lbnRhdGlvbjsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0tLlwiIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0tLlwiIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0tLlwiIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLS5cIgotLS5cIiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UncyByZWZlcmVuY2VzIHRvICJvYmplY3QgY29kZSIKLS0uXCIgYW5kICJleGVjdXRhYmxlcyIgYXJlIHRvIGJlIGludGVycHJldGVkIGFzIHRoZSBvdXRwdXQgb2YgYW55Ci0tLlwiIGRvY3VtZW50IGZvcm1hdHRpbmcgb3IgdHlwZXNldHRpbmcgc3lzdGVtLCBpbmNsdWRpbmcKLS0uXCIgaW50ZXJtZWRpYXRlIGFuZCBwcmludGVkIG91dHB1dC4KLS0uXCIKLS0uXCIgVGhpcyBtYW51YWwgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0uXCIgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0uXCIgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLS5cIiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLS5cIgotLS5cIiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKLS0uXCIgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbWFudWFsLiAgSWYgbm90LCBzZWUKLS0uXCIgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotLS5cIgotLS5USCBSRU1PVkVYQVRUUiAyICJFeHRlbmRlZCBBdHRyaWJ1dGVzIiAiRGVjIDIwMDEiICJTeXN0ZW0gY2FsbHMiCi0tLlNIIE5BTUUKLS1yZW1vdmV4YXR0ciwgbHJlbW92ZXhhdHRyLCBmcmVtb3ZleGF0dHIgXC0gcmVtb3ZlIGFuIGV4dGVuZGVkIGF0dHJpYnV0ZQotLS5TSCBTWU5PUFNJUwotLS5mYW0gQwotLS5uZgotLS5CICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0uQiAjaW5jbHVkZSA8YXR0ci94YXR0ci5oPgotLS5zcAotLS5CSSAiaW50IHJlbW92ZXhhdHRyIChjb25zdCBjaGFyXCAqIiBwYXRoICIsIGNvbnN0IGNoYXJcICoiIG5hbWUgKTsKLS0uQkkgImludCBscmVtb3ZleGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwgY29uc3QgY2hhclwgKiIgbmFtZSApOwotLS5CSSAiaW50IGZyZW1vdmV4YXR0ciAoaW50ICIgZmlsZWRlcyAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICk7Ci0tLmZpCi0tLmZhbSBUCi0tLlNIIERFU0NSSVBUSU9OCi0tRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUKLS0uSVIgbmFtZSA6XGMKLS12YWx1ZSBwYWlycyBhc3NvY2lhdGVkIHdpdGggaW5vZGVzIChmaWxlcywgZGlyZWN0b3JpZXMsIHN5bWxpbmtzLCBldGMpLgotLVRoZXkgYXJlIGV4dGVuc2lvbnMgdG8gdGhlIG5vcm1hbCBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBhc3NvY2lhdGVkCi0td2l0aCBhbGwgaW5vZGVzIGluIHRoZSBzeXN0ZW0gKGkuZS4gdGhlCi0tLkJSIHN0YXQgKDIpCi0tZGF0YSkuCi0tQSBjb21wbGV0ZSBvdmVydmlldyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGNvbmNlcHRzIGNhbiBiZSBmb3VuZCBpbgotLS5CUiBhdHRyICg1KS4KLS0uUFAKLS0uQiByZW1vdmV4YXR0cgotLXJlbW92ZXMgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBpZGVudGlmaWVkIGJ5Ci0tLkkgbmFtZQotLWFuZCBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuCi0tLkkgcGF0aAotLWluIHRoZSBmaWxlc3lzdGVtLgotLS5QUAotLS5CIGxyZW1vdmV4YXR0cgotLWlzIGlkZW50aWNhbCB0byAKLS0uQlIgcmVtb3ZleGF0dHIgLAotLWV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhIHN5bWJvbGljIGxpbmssIHdoZXJlIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgaXMKLS1yZW1vdmVkIGZyb20gdGhlIGxpbmsgaXRzZWxmLCBub3QgdGhlIGZpbGUgdGhhdCBpdCByZWZlcnMgdG8uCi0tLlBQCi0tLkIgZnJlbW92ZXhhdHRyCi0taXMgaWRlbnRpY2FsIHRvCi0tLkJSIHJlbW92ZXhhdHRyICwKLS1vbmx5IHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgcmVtb3ZlZCBmcm9tIHRoZSBvcGVuIGZpbGUgcG9pbnRlZCB0byBieQotLS5JIGZpbGVkZXMKLS0oYXMgcmV0dXJuZWQgYnkKLS0uQlIgb3BlbiAoMikpCi0taW4gcGxhY2Ugb2YKLS0uSVIgcGF0aCAuCi0tLlBQCi0tQW4gZXh0ZW5kZWQgYXR0cmlidXRlIG5hbWUgaXMgYSBzaW1wbGUgTlVMTC10ZXJtaW5hdGVkIHN0cmluZy4KLS1UaGUKLS0uSSBuYW1lCi0taW5jbHVkZXMgYSBuYW1lc3BhY2UgcHJlZml4IFwtIHRoZXJlIG1heSBiZSBzZXZlcmFsLCBkaXNqb2ludAotLW5hbWVzcGFjZXMgYXNzb2NpYXRlZCB3aXRoIGFuIGluZGl2aWR1YWwgaW5vZGUuCi0tLlNIIFJFVFVSTiBWQUxVRQotLU9uIHN1Y2Nlc3MsIHplcm8gaXMgcmV0dXJuZWQuCi0tT24gZmFpbHVyZSwgXC0xIGlzIHJldHVybmVkIGFuZAotLS5JIGVycm5vCi0taXMgc2V0IGFwcHJvcHJpYXRlbHkuCi0tLlBQCi0tSWYgdGhlIG5hbWVkIGF0dHJpYnV0ZSBkb2VzIG5vdCBleGlzdCwKLS0uSSBlcnJubwotLWlzIHNldCB0byBFTk9BVFRSLgotLS5QUAotLUlmIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGZpbGVzeXN0ZW0sIG9yIGFyZSBkaXNhYmxlZCwKLS0uSSBlcnJubwotLWlzIHNldCB0byBFTk9UU1VQLgotLS5QUAotLVRoZSBlcnJvcnMgZG9jdW1lbnRlZCBmb3IgdGhlCi0tLkJSIHN0YXQgKDIpCi0tc3lzdGVtIGNhbGwgYXJlIGFsc28gYXBwbGljYWJsZSBoZXJlLgotLS5TSCBBVVRIT1JTCi0tQW5kcmVhcyBHcnVlbmJhY2hlciwKLS0uUkkgPCBhLmdydWVuYmFjaGVyQGJlc3RiaXRzLmF0ID4KLS1hbmQgdGhlIFNHSSBYRlMgZGV2ZWxvcG1lbnQgdGVhbSwKLS0uUkkgPCBsaW51eC14ZnNAb3NzLnNnaS5jb20gPi4KLS1QbGVhc2Ugc2VuZCBhbnkgYnVnIHJlcG9ydHMgb3IgY29tbWVudHMgdG8gdGhlc2UgYWRkcmVzc2VzLgotLS5TSCBTRUUgQUxTTwotLS5CUiBnZXRmYXR0ciAoMSksCi0tLkJSIHNldGZhdHRyICgxKSwKLS0uQlIgb3BlbiAoMiksCi0tLkJSIHN0YXQgKDIpLAotLS5CUiBzZXR4YXR0ciAoMiksCi0tLkJSIGdldHhhdHRyICgyKSwKLS0uQlIgbGlzdHhhdHRyICgyKSwKLS1hbmQKLS0uQlIgYXR0ciAoNSkuCi1kaWZmIC0tZ2l0IGEvbWFuL21hbjIvc2V0eGF0dHIuMiBiL21hbi9tYW4yL3NldHhhdHRyLjIKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggYjIwZGM5Zi4uMDAwMDAwMAotLS0tIGEvbWFuL21hbjIvc2V0eGF0dHIuMgotKysrIC9kZXYvbnVsbAotQEAgLTEsMTQzICswLDAgQEAKLS0uXCIKLS0uXCIgRXh0ZW5kZWQgYXR0cmlidXRlcyBzeXN0ZW0gY2FsbHMgbWFudWFsIHBhZ2VzCi0tLlwiCi0tLlwiIChDKSBBbmRyZWFzIEdydWVuYmFjaGVyLCBGZWJydWFyeSAyMDAxCi0tLlwiIChDKSBTaWxpY29uIEdyYXBoaWNzIEluYywgU2VwdGVtYmVyIDIwMDEKLS0uXCIKLS0uXCIgVGhpcyBpcyBmcmVlIGRvY3VtZW50YXRpb247IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotLS5cIiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotLS5cIiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgotLS5cIiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0uXCIKLS0uXCIgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlJ3MgcmVmZXJlbmNlcyB0byAib2JqZWN0IGNvZGUiCi0tLlwiIGFuZCAiZXhlY3V0YWJsZXMiIGFyZSB0byBiZSBpbnRlcnByZXRlZCBhcyB0aGUgb3V0cHV0IG9mIGFueQotLS5cIiBkb2N1bWVudCBmb3JtYXR0aW5nIG9yIHR5cGVzZXR0aW5nIHN5c3RlbSwgaW5jbHVkaW5nCi0tLlwiIGludGVybWVkaWF0ZSBhbmQgcHJpbnRlZCBvdXRwdXQuCi0tLlwiCi0tLlwiIFRoaXMgbWFudWFsIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tLlwiIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tLlwiIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0uXCIgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0uXCIKLS0uXCIgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0tLlwiIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIG1hbnVhbC4gIElmIG5vdCwgc2VlCi0tLlwiIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLS0uXCIKLS0uVEggU0VUWEFUVFIgMiAiRXh0ZW5kZWQgQXR0cmlidXRlcyIgIkRlYyAyMDAxIiAiU3lzdGVtIGNhbGxzIgotLS5TSCBOQU1FCi0tc2V0eGF0dHIsIGxzZXR4YXR0ciwgZnNldHhhdHRyIFwtIHNldCBhbiBleHRlbmRlZCBhdHRyaWJ1dGUgdmFsdWUKLS0uU0ggU1lOT1BTSVMKLS0uZmFtIEMKLS0ubmYKLS0uQiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tLkIgI2luY2x1ZGUgPGF0dHIveGF0dHIuaD4KLS0uc3AKLS0uQkkgImludCBzZXR4YXR0ciAoY29uc3QgY2hhclwgKiIgcGF0aCAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICIsCi0tLkJJICJcdFx0XHQgY29uc3Qgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSAiLCBpbnQgIiBmbGFncyApOwotLS5CSSAiaW50IGxzZXR4YXR0ciAoY29uc3QgY2hhclwgKiIgcGF0aCAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICIsCi0tLkJJICJcdFx0XHQgY29uc3Qgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSAiLCBpbnQgIiBmbGFncyApOwotLS5CSSAiaW50IGZzZXR4YXR0ciAoaW50ICIgZmlsZWRlcyAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICIsCi0tLkJJICJcdFx0XHQgY29uc3Qgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSAiLCBpbnQgIiBmbGFncyApOwotLS5maQotLS5mYW0gVAotLS5TSCBERVNDUklQVElPTgotLUV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlCi0tLklSIG5hbWUgOlxjCi0tLkkgdmFsdWUKLS1wYWlycyBhc3NvY2lhdGVkIHdpdGggaW5vZGVzIChmaWxlcywgZGlyZWN0b3JpZXMsIHN5bWxpbmtzLCBldGMpLgotLVRoZXkgYXJlIGV4dGVuc2lvbnMgdG8gdGhlIG5vcm1hbCBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBhc3NvY2lhdGVkCi0td2l0aCBhbGwgaW5vZGVzIGluIHRoZSBzeXN0ZW0gKGkuZS4gdGhlCi0tLkJSIHN0YXQgKDIpCi0tZGF0YSkuCi0tQSBjb21wbGV0ZSBvdmVydmlldyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGNvbmNlcHRzIGNhbiBiZSBmb3VuZCBpbgotLS5CUiBhdHRyICg1KS4KLS0uUFAKLS0uQiBzZXR4YXR0cgotLXNldHMgdGhlCi0tLkkgdmFsdWUKLS1vZiB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIGlkZW50aWZpZWQgYnkKLS0uSSBuYW1lCi0tYW5kIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4KLS0uSSBwYXRoCi0taW4gdGhlIGZpbGVzeXN0ZW0uCi0tVGhlCi0tLkkgc2l6ZQotLW9mIHRoZQotLS5JIHZhbHVlCi0tbXVzdCBiZSBzcGVjaWZpZWQuCi0tLlBQCi0tLkIgbHNldHhhdHRyCi0taXMgaWRlbnRpY2FsIHRvIAotLS5CUiBzZXR4YXR0ciAsCi0tZXhjZXB0IGluIHRoZSBjYXNlIG9mIGEgc3ltYm9saWMgbGluaywgd2hlcmUgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcwotLXNldCBvbiB0aGUgbGluayBpdHNlbGYsIG5vdCB0aGUgZmlsZSB0aGF0IGl0IHJlZmVycyB0by4KLS0uUFAKLS0uQiBmc2V0eGF0dHIKLS1pcyBpZGVudGljYWwgdG8KLS0uQlIgc2V0eGF0dHIgLAotLW9ubHkgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBzZXQgb24gdGhlIG9wZW4gZmlsZSBwb2ludGVkIHRvIGJ5Ci0tLkkgZmlsZWRlcwotLShhcyByZXR1cm5lZCBieQotLS5CUiBvcGVuICgyKSkKLS1pbiBwbGFjZSBvZgotLS5JUiBwYXRoIC4KLS0uUFAKLS1BbiBleHRlbmRlZCBhdHRyaWJ1dGUgbmFtZSBpcyBhIHNpbXBsZSBOVUxMLXRlcm1pbmF0ZWQgc3RyaW5nLgotLVRoZQotLS5JIG5hbWUKLS1pbmNsdWRlcyBhIG5hbWVzcGFjZSBwcmVmaXggXC0gdGhlcmUgbWF5IGJlIHNldmVyYWwsIGRpc2pvaW50Ci0tbmFtZXNwYWNlcyBhc3NvY2lhdGVkIHdpdGggYW4gaW5kaXZpZHVhbCBpbm9kZS4KLS1UaGUKLS0uSSB2YWx1ZQotLW9mIGFuIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBhIGNodW5rIG9mIGFyYml0cmFyeSB0ZXh0dWFsIG9yCi0tYmluYXJ5IGRhdGEgb2Ygc3BlY2lmaWVkIGxlbmd0aC4KLS0uUFAKLS1UaGUKLS0uSSBmbGFncwotLXBhcmFtZXRlciBjYW4gYmUgdXNlZCB0byByZWZpbmUgdGhlIHNlbWFudGljcyBvZiB0aGUgb3BlcmF0aW9uLgotLVhBVFRSX0NSRUFURSBzcGVjaWZpZXMgYSBwdXJlIGNyZWF0ZSwgd2hpY2ggZmFpbHMgaWYgdGhlIG5hbWVkCi0tYXR0cmlidXRlIGV4aXN0cyBhbHJlYWR5LgotLVhBVFRSX1JFUExBQ0Ugc3BlY2lmaWVzIGEgcHVyZSByZXBsYWNlIG9wZXJhdGlvbiwgd2hpY2ggZmFpbHMgaWYgdGhlCi0tbmFtZWQgYXR0cmlidXRlIGRvZXMgbm90IGFscmVhZHkgZXhpc3QuCi0tQnkgZGVmYXVsdCAobm8gZmxhZ3MpLCB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIHdpbGwgYmUgY3JlYXRlZCBpZgotLW5lZWQgYmUsIG9yIHdpbGwgc2ltcGx5IHJlcGxhY2UgdGhlIHZhbHVlIGlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzLgotLS5TSCBSRVRVUk4gVkFMVUUKLS1PbiBzdWNjZXNzLCB6ZXJvIGlzIHJldHVybmVkLgotLU9uIGZhaWx1cmUsIFwtMSBpcyByZXR1cm5lZCBhbmQKLS0uSSBlcnJubwotLWlzIHNldCBhcHByb3ByaWF0ZWx5LgotLS5QUAotLUlmIFhBVFRSX0NSRUFURSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgYXR0cmlidXRlIGV4aXN0cyBhbHJlYWR5LAotLS5JIGVycm5vCi0taXMgc2V0IHRvIEVFWElTVC4KLS1JZiBYQVRUUl9SRVBMQUNFIGlzIHNwZWNpZmllZCwgYW5kIHRoZSBhdHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QsCi0tLkkgZXJybm8KLS1pcyBzZXQgdG8gRU5PQVRUUi4KLS0uUFAKLS1JZiB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgc3BhY2UgcmVtYWluaW5nIHRvIHN0b3JlIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUsCi0tLkkgZXJybm8KLS1pcyBzZXQgdG8gZWl0aGVyIEVOT1NQQywgb3IgRURRVU9UIGlmIHF1b3RhIGVuZm9yY2VtZW50IHdhcyB0aGUgY2F1c2UuCi0tLlBQCi0tSWYgZXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgZmlsZXN5c3RlbSwgb3IgYXJlIGRpc2FibGVkLAotLS5JIGVycm5vCi0taXMgc2V0IHRvIEVOT1RTVVAuCi0tLlBQCi0tVGhlIGVycm9ycyBkb2N1bWVudGVkIGZvciB0aGUKLS0uQlIgc3RhdCAoMikKLS1zeXN0ZW0gY2FsbCBhcmUgYWxzbyBhcHBsaWNhYmxlIGhlcmUuCi0tLlNIIEFVVEhPUlMKLS1BbmRyZWFzIEdydWVuYmFjaGVyLAotLS5SSSA8IGEuZ3J1ZW5iYWNoZXJAYmVzdGJpdHMuYXQgPgotLWFuZCB0aGUgU0dJIFhGUyBkZXZlbG9wbWVudCB0ZWFtLAotLS5SSSA8IGxpbnV4LXhmc0Bvc3Muc2dpLmNvbSA+LgotLVBsZWFzZSBzZW5kIGFueSBidWcgcmVwb3J0cyBvciBjb21tZW50cyB0byB0aGVzZSBhZGRyZXNzZXMuCi0tLlNIIFNFRSBBTFNPCi0tLkJSIGdldGZhdHRyICgxKSwKLS0uQlIgc2V0ZmF0dHIgKDEpLAotLS5CUiBvcGVuICgyKSwKLS0uQlIgc3RhdCAoMiksCi0tLkJSIGdldHhhdHRyICgyKSwKLS0uQlIgbGlzdHhhdHRyICgyKSwKLS0uQlIgcmVtb3ZleGF0dHIgKDIpLAotLWFuZAotLS5CUiBhdHRyICg1KS4KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL3JlbGF0aXZlLWxpYmRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy9yZWxhdGl2ZS1saWJkaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3MmJmMTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL3JlbGF0aXZlLWxpYmRpci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi11c2UgcmVsYXRpdmUgcGF0aCBpbiBzeW1ib2xpYyBsaW5rcywgb3IgaXQgZmFpbHMgaW4gc3RhZ2luZwotc2VkIGV4cHJlc3Npb24gZnJvbSB1ZGV2Ci0KLTcvMjkvMjAxMCAtIGNyZWF0ZWQgYnkgUWluZyBIZSA8cWluZy5oZUBpbnRlbC5jb20+Ci0KLWRpZmYgLXUgaW5jbHVkZS5vcmlnL2J1aWxkbWFjcm9zIGluY2x1ZGUvYnVpbGRtYWNyb3MKLS0tLSBpbmNsdWRlLm9yaWcvYnVpbGRtYWNyb3MJMjAxMC0wNy0yOSAxNzozOTo0OC4wMDAwMDAwMDAgKzA4MDAKLSsrKyBpbmNsdWRlL2J1aWxkbWFjcm9zCTIwMTAtMDctMjkgMTg6MjA6MzQuMDAwMDAwMDAwICswODAwCi1AQCAtODgsOSArODgsMTEgQEAKLSAJLi4vJChJTlNUQUxMKSAtbSA3NTUgLWQgJChQS0dfTElCX0RJUik7IFwKLSAJLi4vJChJTlNUQUxMKSAtVCBzb19iYXNlICQoTElCTkFNRSkubGFpICQoUEtHX0xJQl9ESVIpOyBcCi0gCWlmIHRlc3QgIngkKFBLR19ERVZMSUJfRElSKSIgIT0gIngkKFBLR19MSUJfRElSKSIgOyB0aGVuIFwKLS0JLi4vJChJTlNUQUxMKSAtUyAkKFBLR19ERVZMSUJfRElSKS8kKExJQk5BTUUpLmEgJChQS0dfTElCX0RJUikvJChMSUJOQU1FKS5hOyBcCi0tCS4uLyQoSU5TVEFMTCkgLVMgJChQS0dfREVWTElCX0RJUikvJChMSUJOQU1FKS5sYSAkKFBLR19MSUJfRElSKS8kKExJQk5BTUUpLmxhOyBcCi0tCS4uLyQoSU5TVEFMTCkgLVMgJChQS0dfTElCX0RJUikvJChMSUJOQU1FKS5zbyAkKFBLR19ERVZMSUJfRElSKS8kKExJQk5BTUUpLnNvOyBcCi0rCXJlbF9saWJfcHJlZml4PSQkKGVjaG8gJChQS0dfTElCX0RJUikgfCBzZWQgJ3MsXCheL1x8XClbXi9dW14vXSosLi4sZycpOyBcCi0rCS4uLyQoSU5TVEFMTCkgLVMgJCRyZWxfbGliX3ByZWZpeCQoUEtHX0RFVkxJQl9ESVIpLyQoTElCTkFNRSkuYSAkKFBLR19MSUJfRElSKS8kKExJQk5BTUUpLmE7IFwKLSsJLi4vJChJTlNUQUxMKSAtUyAkJHJlbF9saWJfcHJlZml4JChQS0dfREVWTElCX0RJUikvJChMSUJOQU1FKS5sYSAkKFBLR19MSUJfRElSKS8kKExJQk5BTUUpLmxhOyBcCi0rCXJlbF9kZXZsaWJfcHJlZml4PSQkKGVjaG8gJChQS0dfREVWTElCX0RJUikgfCBzZWQgJ3MsXCheL1x8XClbXi9dW14vXSosLi4sZycpOyBcCi0rCS4uLyQoSU5TVEFMTCkgLVMgJCRyZWxfZGV2bGliX3ByZWZpeCQoUEtHX0xJQl9ESVIpLyQoTElCTkFNRSkuc28gJChQS0dfREVWTElCX0RJUikvJChMSUJOQU1FKS5zbzsgXAotIAlmaQotIGVsc2UKLSBJTlNUQUxMX0xUTElCX0RFViA9ICQoSU5TVEFMTF9MVExJQl9TVEFUSUMpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZmlsZXMvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL3J1bi1wdGVzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZjNjg2Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZmlsZXMvcnVuLXB0ZXN0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0jIS9iaW4vc2gKLQotbWFrZSAtQyB0ZXN0IC1rIHRlc3RzIHJvb3QtdGVzdHMgfHNlZCBcCi0gLWUgJ3N8XlxbLipcXSBcKC4qXCkgLS0gb2skfFBBU1M6IFwxfCcgXAotIC1lICdzfF5cWy4qXF0gXCguKlwpIC0tIGZhaWxlZHxGQUlMOiBcMXwnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmFzaC1jb21wbGV0aW9uL2Jhc2gtY29tcGxldGlvbl8yLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0MWFmNzQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi4xMC5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIlByb2dyYW1tYWJsZSBDb21wbGV0aW9uIGZvciBCYXNoIDQiCitIT01FUEFHRSA9ICJodHRwOi8vYmFzaC1jb21wbGV0aW9uLmFsaW90aC5kZWJpYW4ub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9hbGlvdGguZGViaWFuLm9yZy9wcm9qZWN0cy9iYXNoLWNvbXBsZXRpb24vIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2NvcC9iYXNoLWNvbXBsZXRpb24vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gImYzNzZhZTMyNjZjYzcwMDE3YWE4MzNjMzliNzZmOTg0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEyM2MxNzk5OGUzNGI5MzdjZTU3YmIxYjExMWNkODE3YmMzNjkzMDllOWE4MDQ3YzBiY2YwNmVhZDRhM2VjOTIiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJiYXNoLWNvbXBsZXRpb24tKD9QPHB2ZXI+KD8hMjAwOCkuKylcLnRhciIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2NvcC9iYXNoLWNvbXBsZXRpb24vcmVsZWFzZXMiCisKK1BBUkFMTEVMX01BS0UgPSAiIgorCitpbmhlcml0IGF1dG90b29scworCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIGNvbXBhdGRpcgorCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYmFzaF9jb21wbGV0aW9uLmQvCisJZWNobyAnLiAke2RhdGFkaXJ9LyR7QlBOfS9iYXNoX2NvbXBsZXRpb24nID4ke0R9JHtzeXNjb25mZGlyfS9iYXNoX2NvbXBsZXRpb24KKworfQorCitSREVQRU5EU18ke1BOfSA9ICJiYXNoIgorCisjIFNvbWUgcmVjaXBlcyBhcmUgcHJvdmlkaW5nICR7UE59LWJhc2gtY29tcGxldGlvbiBwYWNrYWdlcworUEFDS0FHRVMgPSsgIiR7UE59LWV4dHJhIgorRklMRVNfJHtQTn0tZXh0cmEgPSAiJHtkYXRhZGlyfS8ke0JQTn0vY29tcGxldGlvbnMvIFwKKyAgICAke2RhdGFkaXJ9LyR7QlBOfS9oZWxwZXJzLyIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmFzaC1jb21wbGV0aW9uL2Jhc2gtY29tcGxldGlvbl8yLjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDJjNGNiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmFzaC1jb21wbGV0aW9uL2Jhc2gtY29tcGxldGlvbl8yLjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIlByb2dyYW1tYWJsZSBDb21wbGV0aW9uIGZvciBCYXNoIDQiCi1IT01FUEFHRSA9ICJodHRwOi8vYmFzaC1jb21wbGV0aW9uLmFsaW90aC5kZWJpYW4ub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9hbGlvdGguZGViaWFuLm9yZy9wcm9qZWN0cy9iYXNoLWNvbXBsZXRpb24vIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2NvcC9iYXNoLWNvbXBsZXRpb24vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjYwMTM5MzMzYjI1YzRkNTRhZDQwMzIzYjcwMWJlMTMwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ0OGZlMzc4ZTczMTA2MmY0NzljNWY4ODAyZmZhOWQzYzQwYTI3NWExOWU2ZTBmNmY2Y2M0YjkwZmExMmIyZjUiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJiYXNoLWNvbXBsZXRpb24tKD9QPHB2ZXI+KD8hMjAwOCkuKylcLnRhciIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2NvcC9iYXNoLWNvbXBsZXRpb24vcmVsZWFzZXMiCi0KLVBBUkFMTEVMX01BS0UgPSAiIgotCi1pbmhlcml0IGF1dG90b29scwotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIGNvbXBhdGRpcgotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYmFzaF9jb21wbGV0aW9uLmQvCi0JZWNobyAnLiAke2RhdGFkaXJ9LyR7QlBOfS9iYXNoX2NvbXBsZXRpb24nID4ke0R9JHtzeXNjb25mZGlyfS9iYXNoX2NvbXBsZXRpb24KLQotfQotCi1SREVQRU5EU18ke1BOfSA9ICJiYXNoIgotCi0jIFNvbWUgcmVjaXBlcyBhcmUgcHJvdmlkaW5nICR7UE59LWJhc2gtY29tcGxldGlvbiBwYWNrYWdlcwotUEFDS0FHRVMgPSsgIiR7UE59LWV4dHJhIgotRklMRVNfJHtQTn0tZXh0cmEgPSAiJHtkYXRhZGlyfS8ke0JQTn0vY29tcGxldGlvbnMvIFwKLSAgICAke2RhdGFkaXJ9LyR7QlBOfS9oZWxwZXJzLyIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYmphbS1uYXRpdmVfMS43MS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjcyLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYmphbS1uYXRpdmVfMS43MS4wLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNzIuMC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjcxLjAuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjcxLjAuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTY0ZDBmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS43MS4wLmluYworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLSMgVGhlIEJvb3N0IHdlYiBzaXRlIHByb3ZpZGVzIGZyZWUgcGVlci1yZXZpZXdlZCBwb3J0YWJsZQotIyBDKysgc291cmNlIGxpYnJhcmllcy4gVGhlIGVtcGhhc2lzIGlzIG9uIGxpYnJhcmllcyB3aGljaAotIyB3b3JrIHdlbGwgd2l0aCB0aGUgQysrIFN0YW5kYXJkIExpYnJhcnkuIFRoZSBsaWJyYXJpZXMgYXJlCi0jIGludGVuZGVkIHRvIGJlIHdpZGVseSB1c2VmdWwsIGFuZCBhcmUgaW4gcmVndWxhciB1c2UgYnkKLSMgdGhvdXNhbmRzIG9mIHByb2dyYW1tZXJzIGFjcm9zcyBhIGJyb2FkIHNwZWN0cnVtIG9mIGFwcGxpY2F0aW9ucy4KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYm9vc3Qub3JnLyIKLUxJQ0VOU0UgPSAiQlNMLTEuMCAmIE1JVCAmIFB5dGhvbi0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFXzFfMC50eHQ7bWQ1PWU0MjI0Y2NhZWNiMTRkOTQyYzcxZDMxYmVmMjBkNzhjIgotCi1CT09TVF9WRVIgPSAiJHtAIl8iLmpvaW4oZC5nZXRWYXIoIlBWIikuc3BsaXQoIi4iKSl9IgotQk9PU1RfTUFKID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIilbMDoyXSl9IgotQk9PU1RfUCA9ICJib29zdF8ke0JPT1NUX1ZFUn0iCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9kbC5iaW50cmF5LmNvbS9ib29zdG9yZy9yZWxlYXNlLyR7UFZ9L3NvdXJjZS8ke0JPT1NUX1B9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiNGNkZjliNWMyZGMwMWZiMmI3YjczM2Q1YWYzMGU1NTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDczYThkYTAxZThiZjhjN2VkYTQwYjRjODQ5MTUwNzFhOGM4YTBkZjRhNjczNDUzN2RkZGU0YTg1ODA1MjRlZSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuYm9vc3Qub3JnL3VzZXJzL2Rvd25sb2FkLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImJvb3N0b3JnL3JlbGVhc2UvKD9QPHB2ZXI+LiopL3NvdXJjZS8iCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JPT1NUX1B9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjcyLjAuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjcyLjAuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YTA5NWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNzIuMC5pbmMKQEAgLTAsMCArMSwyMSBAQAorIyBUaGUgQm9vc3Qgd2ViIHNpdGUgcHJvdmlkZXMgZnJlZSBwZWVyLXJldmlld2VkIHBvcnRhYmxlCisjIEMrKyBzb3VyY2UgbGlicmFyaWVzLiBUaGUgZW1waGFzaXMgaXMgb24gbGlicmFyaWVzIHdoaWNoCisjIHdvcmsgd2VsbCB3aXRoIHRoZSBDKysgU3RhbmRhcmQgTGlicmFyeS4gVGhlIGxpYnJhcmllcyBhcmUKKyMgaW50ZW5kZWQgdG8gYmUgd2lkZWx5IHVzZWZ1bCwgYW5kIGFyZSBpbiByZWd1bGFyIHVzZSBieQorIyB0aG91c2FuZHMgb2YgcHJvZ3JhbW1lcnMgYWNyb3NzIGEgYnJvYWQgc3BlY3RydW0gb2YgYXBwbGljYXRpb25zLgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ib29zdC5vcmcvIgorTElDRU5TRSA9ICJCU0wtMS4wICYgTUlUICYgUHl0aG9uLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0VfMV8wLnR4dDttZDU9ZTQyMjRjY2FlY2IxNGQ5NDJjNzFkMzFiZWYyMGQ3OGMiCisKK0JPT1NUX1ZFUiA9ICIke0AiXyIuam9pbihkLmdldFZhcigiUFYiKS5zcGxpdCgiLiIpKX0iCitCT09TVF9NQUogPSAiJHtAIl8iLmpvaW4oZC5nZXRWYXIoIlBWIikuc3BsaXQoIi4iKVswOjJdKX0iCitCT09TVF9QID0gImJvb3N0XyR7Qk9PU1RfVkVSfSIKKworU1JDX1VSSSA9ICJodHRwczovL2RsLmJpbnRyYXkuY29tL2Jvb3N0b3JnL3JlbGVhc2UvJHtQVn0vc291cmNlLyR7Qk9PU1RfUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjYjQwOTQzZDJhMmNiOGNlMDhkNDJiYzQ4YjBmODRmMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1OWM5YjI3NGJjNDUxY2Y5MWE5YmExZGQyYzdmZGNhZjVkNjBiMWIzYWE4M2YyYzlmYTE0MzQxN2NjNjYwNzIyIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5ib29zdC5vcmcvdXNlcnMvZG93bmxvYWQvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiYm9vc3RvcmcvcmVsZWFzZS8oP1A8cHZlcj4uKikvc291cmNlLyIKKworUyA9ICIke1dPUktESVJ9LyR7Qk9PU1RfUH0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jCmluZGV4IGUxNWRjZTQuLjhlYjk0OTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jCkBAIC0yMDIsNiArMjAyLDExIEBACiAJCWZpCiAJZG9uZQogCisgICAgICAgICMgQ21ha2UgZmlsZXMgcmVmZXJlbmNlIGZ1bGwgcGF0aHMgdG8gaW1hZ2UKKyAgICAgICAgZmluZCAke0R9JHtsaWJkaXJ9L2NtYWtlIC10eXBlIGYgfCBcCisgICAgICAgICAgICAgZ3JlcCAnY21ha2UkJyB8IFwKKyAgICAgICAgICAgICB4YXJncyAtbiAxIHNlZCAtZSAncywke0R9JHtsaWJkaXJ9L2NtYWtlLCR7bGliZGlyfS9jbWFrZSwnIC1pCisKIH0KIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjcxLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNzEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU5ZTBkOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNzEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgYm9vc3QtJHtQVn0uaW5jCi1yZXF1aXJlIGJvb3N0LmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vYXJtLWludHJpbnNpY3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYm9vc3QtQ1ZFLTIwMTItMjY3Ny5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ib29zdC1tYXRoLWRpc2FibGUtcGNoLWZvci1nY2MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BcHBseS1ib29zdC0xLjYyLjAtbm8tZm9yY2VkLWZsYWdzLnBhdGNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtc2V0LXVwLWFyY2gtaW5zdHJ1Y3Rpb24tc2V0LWZsYWdzLXdlLWRvLXRoYXQtby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWRvbnQtc2V0dXAtY29tcGlsZXItZmxhZ3MtbTMyLW02NC5wYXRjaCBcCi0gICAgICAgICAgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS43Mi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjcyLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI3YmFkYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS43Mi4wLmJiCkBAIC0wLDAgKzEsMTEgQEAKK3JlcXVpcmUgYm9vc3QtJHtQVn0uaW5jCityZXF1aXJlIGJvb3N0LmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vYXJtLWludHJpbnNpY3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYm9vc3QtQ1ZFLTIwMTItMjY3Ny5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ib29zdC1tYXRoLWRpc2FibGUtcGNoLWZvci1nY2MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BcHBseS1ib29zdC0xLjYyLjAtbm8tZm9yY2VkLWZsYWdzLnBhdGNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtc2V0LXVwLWFyY2gtaW5zdHJ1Y3Rpb24tc2V0LWZsYWdzLXdlLWRvLXRoYXQtby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRvbnQtc2V0dXAtY29tcGlsZXItZmxhZ3MtbTMyLW02NC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJldmVydC1jZWFzZS1kZXBlbmRlbmNlLW9uLXJhbmdlLnBhdGNoIFwKKyAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLXJldmVydC1jZWFzZS1kZXBlbmRlbmNlLW9uLXJhbmdlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLXJldmVydC1jZWFzZS1kZXBlbmRlbmNlLW9uLXJhbmdlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZDA5YTIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2ZpbGVzLzAwMDEtcmV2ZXJ0LWNlYXNlLWRlcGVuZGVuY2Utb24tcmFuZ2UucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSA0MzZlMWRiZTZmY2QzMTUyM2QyNjFkMThhZDAxMTM5MmYxZDZmYmJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT2xpdmVyIEtvd2Fsa2UgPG9saXZlci5rb3dhbGtlQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMSBEZWMgMjAxOSAyMDo0MDoyOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBSZXZlcnQgIkNlYXNlIGRlcGVuZGVuY2Ugb24gUmFuZ2UiCisKK1RoaXMgcmV2ZXJ0cyBjb21taXQgMGM1NTZiYjU5MjQxZTY4MmJiY2QzZjU3MjgxNTE0OWM1YTliMTdkYi4KKworc2VlICM0NCAoT25lIHRlc3QgZmFpbHMgdG8gY29tcGlsZSBhZnRlciBib29zdG9yZy9jb3JvdXRpbmUgc3VibW9kdWxlIHVwZGF0ZWQpCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ib29zdG9yZy9jb3JvdXRpbmUvY29tbWl0LzljNzNiMmY3YzE3NTlhOTUwOGJhODc4MGIzOGRjMTVmMDdmMWE0NDddCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJldyBHZWlzc2xlciA8Z2Vpc3NvbmF0b3JAZ21haWwuY29tPgorLS0tCisgYm9vc3QvY29yb3V0aW5lL2FzeW1tZXRyaWNfY29yb3V0aW5lLmhwcCB8IDEyICsrKy0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ib29zdC9jb3JvdXRpbmUvYXN5bW1ldHJpY19jb3JvdXRpbmUuaHBwIGIvYm9vc3QvY29yb3V0aW5lL2FzeW1tZXRyaWNfY29yb3V0aW5lLmhwcAoraW5kZXggZWE5Njk4MS4uNjQwODk2ZiAxMDA2NDQKKy0tLSBhL2Jvb3N0L2Nvcm91dGluZS9hc3ltbWV0cmljX2Nvcm91dGluZS5ocHAKKysrKyBiL2Jvb3N0L2Nvcm91dGluZS9hc3ltbWV0cmljX2Nvcm91dGluZS5ocHAKK0BAIC0xNCw2ICsxNCw3IEBACisgI2luY2x1ZGUgPGJvb3N0L2Fzc2VydC5ocHA+CisgI2luY2x1ZGUgPGJvb3N0L2NvbmZpZy5ocHA+CisgI2luY2x1ZGUgPGJvb3N0L21vdmUvbW92ZS5ocHA+CisrI2luY2x1ZGUgPGJvb3N0L3JhbmdlLmhwcD4KKyAjaW5jbHVkZSA8Ym9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KKyAjaW5jbHVkZSA8Ym9vc3QvdXRpbGl0eS9leHBsaWNpdF9vcGVyYXRvcl9ib29sLmhwcD4KKworQEAgLTIzNTQsMTkgKzIzNTUsMTIgQEAgZW5kKCBwdXNoX2Nvcm91dGluZTwgUiA+ICYgYykKKworIH0KKworLS8vIGZvcndhcmQgZGVjbGFyYXRpb24gb2YgQm9vc3QuUmFuZ2UgdHJhaXRzIHRvIGJyZWFrIGRlcGVuZGVuY3kgb24gaXQKKy10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBFbmFibGVyPgorLXN0cnVjdCByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yOworLQorLXRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIEVuYWJsZXI+Cistc3RydWN0IHJhbmdlX2NvbnN0X2l0ZXJhdG9yOworLQorIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmcgPgorLXN0cnVjdCByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yPCBjb3JvdXRpbmVzOjpwdXNoX2Nvcm91dGluZTwgQXJnID4sIHZvaWQgPgorK3N0cnVjdCByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yPCBjb3JvdXRpbmVzOjpwdXNoX2Nvcm91dGluZTwgQXJnID4gPgorIHsgdHlwZWRlZiB0eXBlbmFtZSBjb3JvdXRpbmVzOjpwdXNoX2Nvcm91dGluZTwgQXJnID46Oml0ZXJhdG9yIHR5cGU7IH07CisKKyB0ZW1wbGF0ZTwgdHlwZW5hbWUgUiA+Cistc3RydWN0IHJhbmdlX211dGFibGVfaXRlcmF0b3I8IGNvcm91dGluZXM6OnB1bGxfY29yb3V0aW5lPCBSID4sIHZvaWQgPgorK3N0cnVjdCByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yPCBjb3JvdXRpbmVzOjpwdWxsX2Nvcm91dGluZTwgUiA+ID4KKyB7IHR5cGVkZWYgdHlwZW5hbWUgY29yb3V0aW5lczo6cHVsbF9jb3JvdXRpbmU8IFIgPjo6aXRlcmF0b3IgdHlwZTsgfTsKKworIH0KKy0tCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy42Ny4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy42Ny4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDhlMDhlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNjcuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLVNVTU1BUlkgPSAiQ29tbWFuZCBsaW5lIHRvb2wgYW5kIGxpYnJhcnkgZm9yIGNsaWVudC1zaWRlIFVSTCB0cmFuc2ZlcnMiCi1IT01FUEFHRSA9ICJodHRwOi8vY3VybC5oYXh4LnNlLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpc3QuY2dpP2xpc3Q9Y3VybC10cmFja2VyIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJlNWQ5ZTE0MTljNDM2M2Y0YjMyMDM3YTJkM2I3ZmZhIgotCi1TUkNfVVJJID0gImh0dHA6Ly9jdXJsLmhheHguc2UvZG93bmxvYWQvY3VybC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcmVwbGFjZS1rcmI1LWNvbmZpZy13aXRoLXBrZy1jb25maWcucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2JlMjg4ZjZmZDViN2I1ZTQwMmVmM2IzNmE0NjFhMjQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGQ1ZjY5NTY4MjFhNTQ4YmY0YjQ0ZjA2N2E1MzBjZTk0NDVjYzgwOTRmZDNlN2UzZmM3ODU0ODE1ODU4NTg2YyIKLQotQ1ZFX1BST0RVQ1QgPSAiY3VybCBsaWJjdXJsIgotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZyBtdWx0aWxpYl9oZWFkZXIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gZ251dGxzIGxpYmlkbiBwcm94eSB0aHJlYWRlZC1yZXNvbHZlciB2ZXJib3NlIHpsaWIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJpcHY2IHByb3h5IHNzbCB0aHJlYWRlZC1yZXNvbHZlciB2ZXJib3NlIHpsaWIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICJpcHY2IHByb3h5IHNzbCB0aHJlYWRlZC1yZXNvbHZlciB2ZXJib3NlIHpsaWIiCi0KLSMgJ2FyZXMnIGFuZCAndGhyZWFkZWQtcmVzb2x2ZXInIGFyZSBtdXR1YWxseSBleGNsdXNpdmUKLVBBQ0tBR0VDT05GSUdbYXJlc10gPSAiLS1lbmFibGUtYXJlcywtLWRpc2FibGUtYXJlcyxjLWFyZXMiCi1QQUNLQUdFQ09ORklHW2Jyb3RsaV0gPSAiLS13aXRoLWJyb3RsaSwtLXdpdGhvdXQtYnJvdGxpLGJyb3RsaSIKLVBBQ0tBR0VDT05GSUdbYnVpbHRpbm1hbnVhbF0gPSAiLS1lbmFibGUtbWFudWFsLC0tZGlzYWJsZS1tYW51YWwiCi1QQUNLQUdFQ09ORklHW2RpY3RdID0gIi0tZW5hYmxlLWRpY3QsLS1kaXNhYmxlLWRpY3QsIgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCi1QQUNLQUdFQ09ORklHW2dvcGhlcl0gPSAiLS1lbmFibGUtZ29waGVyLC0tZGlzYWJsZS1nb3BoZXIsIgotUEFDS0FHRUNPTkZJR1tpbWFwXSA9ICItLWVuYWJsZS1pbWFwLC0tZGlzYWJsZS1pbWFwLCIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi1QQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgotUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLWVuYWJsZS1sZGFwLC0tZGlzYWJsZS1sZGFwLCIKLVBBQ0tBR0VDT05GSUdbbGRhcHNdID0gIi0tZW5hYmxlLWxkYXBzLC0tZGlzYWJsZS1sZGFwcywiCi1QQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS13aXRoLWxpYmlkbjIsLS13aXRob3V0LWxpYmlkbjIsbGliaWRuMiIKLVBBQ0tBR0VDT05GSUdbbGlic3NoMl0gPSAiLS13aXRoLWxpYnNzaDIsLS13aXRob3V0LWxpYnNzaDIsbGlic3NoMiIKLVBBQ0tBR0VDT05GSUdbbWJlZHRsc10gPSAiLS13aXRoLW1iZWR0bHM9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LC0td2l0aG91dC1tYmVkdGxzLG1iZWR0bHMiCi1QQUNLQUdFQ09ORklHW25naHR0cDJdID0gIi0td2l0aC1uZ2h0dHAyLC0td2l0aG91dC1uZ2h0dHAyLG5naHR0cDIiCi1QQUNLQUdFQ09ORklHW3BvcDNdID0gIi0tZW5hYmxlLXBvcDMsLS1kaXNhYmxlLXBvcDMsIgotUEFDS0FHRUNPTkZJR1twcm94eV0gPSAiLS1lbmFibGUtcHJveHksLS1kaXNhYmxlLXByb3h5LCIKLVBBQ0tBR0VDT05GSUdbcnRtcGR1bXBdID0gIi0td2l0aC1saWJydG1wLC0td2l0aG91dC1saWJydG1wLHJ0bXBkdW1wIgotUEFDS0FHRUNPTkZJR1tydHNwXSA9ICItLWVuYWJsZS1ydHNwLC0tZGlzYWJsZS1ydHNwLCIKLVBBQ0tBR0VDT05GSUdbc21iXSA9ICItLWVuYWJsZS1zbWIsLS1kaXNhYmxlLXNtYiwiCi1QQUNLQUdFQ09ORklHW3NtdHBdID0gIi0tZW5hYmxlLXNtdHAsLS1kaXNhYmxlLXNtdHAsIgotUEFDS0FHRUNPTkZJR1tzc2xdID0gIi0td2l0aC1zc2wgLS13aXRoLXJhbmRvbT0vZGV2L3VyYW5kb20sLS13aXRob3V0LXNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tuc3NdID0gIi0td2l0aC1uc3MsLS13aXRob3V0LW5zcyxuc3MiCi1QQUNLQUdFQ09ORklHW3RlbG5ldF0gPSAiLS1lbmFibGUtdGVsbmV0LC0tZGlzYWJsZS10ZWxuZXQsIgotUEFDS0FHRUNPTkZJR1t0ZnRwXSA9ICItLWVuYWJsZS10ZnRwLC0tZGlzYWJsZS10ZnRwLCIKLVBBQ0tBR0VDT05GSUdbdGhyZWFkZWQtcmVzb2x2ZXJdID0gIi0tZW5hYmxlLXRocmVhZGVkLXJlc29sdmVyLC0tZGlzYWJsZS10aHJlYWRlZC1yZXNvbHZlciIKLVBBQ0tBR0VDT05GSUdbdmVyYm9zZV0gPSAiLS1lbmFibGUtdmVyYm9zZSwtLWRpc2FibGUtdmVyYm9zZSIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWI9JHtTVEFHSU5HX0xJQkRJUn0vLi4vLC0td2l0aG91dC16bGliLHpsaWIiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1saWJjdXJsLW9wdGlvbiBcCi0gICAgLS1kaXNhYmxlLW50bG0td2IgXAotICAgIC0tZW5hYmxlLWNyeXB0by1hdXRoIFwKLSAgICAtLXdpdGgtY2EtYnVuZGxlPSR7c3lzY29uZmRpcn0vc3NsL2NlcnRzL2NhLWNlcnRpZmljYXRlcy5jcnQgXAotICAgIC0td2l0aG91dC1saWJtZXRhbGluayBcCi0gICAgLS13aXRob3V0LWxpYnBzbCBcCi0iCi0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQkjIGNsZWFudXAgYnVpbGRwYXRocyBmcm9tIGN1cmwtY29uZmlnCi0Jc2VkIC1pIFwKLQkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAotCSAgICAtZSAncywtLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAotCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCi0JICAgICR7RH0ke2JpbmRpcn0vY3VybC1jb25maWcKLX0KLQotUEFDS0FHRVMgPSsgImxpYiR7QlBOfSIKLQotRklMRVNfbGliJHtCUE59ID0gIiR7bGliZGlyfS9saWIqLnNvLioiCi1SUkVDT01NRU5EU19saWIke0JQTn0gKz0gImNhLWNlcnRpZmljYXRlcyIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0venNoIgotCi1pbmhlcml0IG11bHRpbGliX3NjcmlwdAotTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfS1kZXY6JHtiaW5kaXJ9L2N1cmwtY29uZmlnIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjY5LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjY5LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg1NGU4ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNjkuMS5iYgpAQCAtMCwwICsxLDgwIEBACitTVU1NQVJZID0gIkNvbW1hbmQgbGluZSB0b29sIGFuZCBsaWJyYXJ5IGZvciBjbGllbnQtc2lkZSBVUkwgdHJhbnNmZXJzIgorSE9NRVBBR0UgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saXN0LmNnaT9saXN0PWN1cmwtdHJhY2tlciIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZTlmYjM1ODY3MzE0ZmUzMWM2YTQ5NzdlZjdkZDUzMSIKKworU1JDX1VSSSA9ICJodHRwOi8vY3VybC5oYXh4LnNlL2Rvd25sb2FkL2N1cmwtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlcGxhY2Uta3JiNS1jb25maWctd2l0aC1wa2ctY29uZmlnLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImVjNWZjMjYzZjg5OGEzZGZlZjA4ZTgwNWYxZWNjYTQyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJmZjVlNWJkNTA3YWRmNmFhODhmZjRiYmFmZDRjN2FmNDY0ODY3ZmZiNjg4YmU5M2I5OTMwNzE3YTU2YzRkZTgiCisKK0NWRV9QUk9EVUNUID0gImN1cmwgbGliY3VybCIKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWcgbXVsdGlsaWJfaGVhZGVyCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IGdudXRscyBsaWJpZG4gcHJveHkgdGhyZWFkZWQtcmVzb2x2ZXIgdmVyYm9zZSB6bGliIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgdmVyYm9zZSB6bGliIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgdmVyYm9zZSB6bGliIgorCisjICdhcmVzJyBhbmQgJ3RocmVhZGVkLXJlc29sdmVyJyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlCitQQUNLQUdFQ09ORklHW2FyZXNdID0gIi0tZW5hYmxlLWFyZXMsLS1kaXNhYmxlLWFyZXMsYy1hcmVzLCwsdGhyZWFkZWQtcmVzb2x2ZXIiCitQQUNLQUdFQ09ORklHW2Jyb3RsaV0gPSAiLS13aXRoLWJyb3RsaSwtLXdpdGhvdXQtYnJvdGxpLGJyb3RsaSIKK1BBQ0tBR0VDT05GSUdbYnVpbHRpbm1hbnVhbF0gPSAiLS1lbmFibGUtbWFudWFsLC0tZGlzYWJsZS1tYW51YWwiCitQQUNLQUdFQ09ORklHW2RpY3RdID0gIi0tZW5hYmxlLWRpY3QsLS1kaXNhYmxlLWRpY3QsIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCitQQUNLQUdFQ09ORklHW2dvcGhlcl0gPSAiLS1lbmFibGUtZ29waGVyLC0tZGlzYWJsZS1nb3BoZXIsIgorUEFDS0FHRUNPTkZJR1tpbWFwXSA9ICItLWVuYWJsZS1pbWFwLC0tZGlzYWJsZS1pbWFwLCIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCitQQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLWVuYWJsZS1sZGFwLC0tZGlzYWJsZS1sZGFwLCIKK1BBQ0tBR0VDT05GSUdbbGRhcHNdID0gIi0tZW5hYmxlLWxkYXBzLC0tZGlzYWJsZS1sZGFwcywiCitQQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS13aXRoLWxpYmlkbjIsLS13aXRob3V0LWxpYmlkbjIsbGliaWRuMiIKK1BBQ0tBR0VDT05GSUdbbGlic3NoMl0gPSAiLS13aXRoLWxpYnNzaDIsLS13aXRob3V0LWxpYnNzaDIsbGlic3NoMiIKK1BBQ0tBR0VDT05GSUdbbWJlZHRsc10gPSAiLS13aXRoLW1iZWR0bHM9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LC0td2l0aG91dC1tYmVkdGxzLG1iZWR0bHMiCitQQUNLQUdFQ09ORklHW25naHR0cDJdID0gIi0td2l0aC1uZ2h0dHAyLC0td2l0aG91dC1uZ2h0dHAyLG5naHR0cDIiCitQQUNLQUdFQ09ORklHW3BvcDNdID0gIi0tZW5hYmxlLXBvcDMsLS1kaXNhYmxlLXBvcDMsIgorUEFDS0FHRUNPTkZJR1twcm94eV0gPSAiLS1lbmFibGUtcHJveHksLS1kaXNhYmxlLXByb3h5LCIKK1BBQ0tBR0VDT05GSUdbcnRtcGR1bXBdID0gIi0td2l0aC1saWJydG1wLC0td2l0aG91dC1saWJydG1wLHJ0bXBkdW1wIgorUEFDS0FHRUNPTkZJR1tydHNwXSA9ICItLWVuYWJsZS1ydHNwLC0tZGlzYWJsZS1ydHNwLCIKK1BBQ0tBR0VDT05GSUdbc21iXSA9ICItLWVuYWJsZS1zbWIsLS1kaXNhYmxlLXNtYiwiCitQQUNLQUdFQ09ORklHW3NtdHBdID0gIi0tZW5hYmxlLXNtdHAsLS1kaXNhYmxlLXNtdHAsIgorUEFDS0FHRUNPTkZJR1tzc2xdID0gIi0td2l0aC1zc2wgLS13aXRoLXJhbmRvbT0vZGV2L3VyYW5kb20sLS13aXRob3V0LXNzbCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tuc3NdID0gIi0td2l0aC1uc3MsLS13aXRob3V0LW5zcyxuc3MiCitQQUNLQUdFQ09ORklHW3RlbG5ldF0gPSAiLS1lbmFibGUtdGVsbmV0LC0tZGlzYWJsZS10ZWxuZXQsIgorUEFDS0FHRUNPTkZJR1t0ZnRwXSA9ICItLWVuYWJsZS10ZnRwLC0tZGlzYWJsZS10ZnRwLCIKK1BBQ0tBR0VDT05GSUdbdGhyZWFkZWQtcmVzb2x2ZXJdID0gIi0tZW5hYmxlLXRocmVhZGVkLXJlc29sdmVyLC0tZGlzYWJsZS10aHJlYWRlZC1yZXNvbHZlciwsLCxhcmVzIgorUEFDS0FHRUNPTkZJR1t2ZXJib3NlXSA9ICItLWVuYWJsZS12ZXJib3NlLC0tZGlzYWJsZS12ZXJib3NlIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLi8sLS13aXRob3V0LXpsaWIsemxpYiIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1kaXNhYmxlLWxpYmN1cmwtb3B0aW9uIFwKKyAgICAtLWRpc2FibGUtbnRsbS13YiBcCisgICAgLS1lbmFibGUtY3J5cHRvLWF1dGggXAorICAgIC0td2l0aC1jYS1idW5kbGU9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCBcCisgICAgLS13aXRob3V0LWxpYm1ldGFsaW5rIFwKKyAgICAtLXdpdGhvdXQtbGlicHNsIFwKKyIKKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCSMgY2xlYW51cCBidWlsZHBhdGhzIGZyb20gY3VybC1jb25maWcKKwlzZWQgLWkgXAorCSAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzLC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgJHtEfSR7YmluZGlyfS9jdXJsLWNvbmZpZworfQorCitQQUNLQUdFUyA9KyAibGliJHtCUE59IgorCitGSUxFU19saWIke0JQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKK1JSRUNPTU1FTkRTX2xpYiR7QlBOfSArPSAiY2EtY2VydGlmaWNhdGVzIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS96c2giCisKK2luaGVyaXQgbXVsdGlsaWJfc2NyaXB0CitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWRldjoke2JpbmRpcn0vY3VybC1jb25maWciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvMDAwMS1jbG9jay1Eby1ub3QtZGVmaW5lLW93bi10aW1lc3BlYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvMDAwMS1jbG9jay1Eby1ub3QtZGVmaW5lLW93bi10aW1lc3BlYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDUxYTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYi8wMDAxLWNsb2NrLURvLW5vdC1kZWZpbmUtb3duLXRpbWVzcGVjLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gOTZiMzAzY2FmNzBhNzYzNTk1M2MzNmU1YmZiOWFkNmU3NWNiNzYzNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE0IEZlYiAyMDIwIDE0OjEyOjU5IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGNsb2NrOiBEbyBub3QgZGVmaW5lIG93biB0aW1lc3BlYworCit0aW1lc3BlYyBpcyBwcm92aWRlZCBieSBsaWJjIGFuZCBpdHMgYmVzdCBsZWZ0IHRvIGxpYmMKK29zX2dldHRpbWUgdGFrZXMgYSBkYl90aW1lc3BlYyBhbmQgcGFzc2VkIGl0cyBhZGRyZXNzIHRvIGNsb2NrX2dldHRpbWUKK3doaWNoIGFzc3VtZXMgdGhhdCBkYl90aW1lc3BlYyBhbmQgdGltZXNwZWMgYXJlIHNhbWUgYnV0IGFjdHVhbGx5CitpdHMgMTItYnl0ZXMgaGVyZSBhbmQgbGliYyBoYXMgMTYtYnl0ZXMKKworVGhpcyBjYW4gY2F1c2UgcHJvYmxlbXMgZXNwZWNpYWxseSB3aXRoIDY0Yml0IHRpbWVfdAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvZGJpbmMvY2xvY2suaCB8IDE3ICstLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxNiBkZWxldGlvbnMoLSkKKworLS0tIGEvc3JjL2RiaW5jL2Nsb2NrLmgKKysrKyBiL3NyYy9kYmluYy9jbG9jay5oCitAQCAtNDQsMjIgKzQ0LDggQEAKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKKyAKKy0vKgorLSAqIFRoaXMgZGVjbGFyYXRpb24gaXMgUE9TSVgtY29tcGF0aWJsZS4gIEJlY2F1c2UgdGhlcmUgYXJlIGxvdHMgb2YgZGlmZmVyZW50CistICogdGltZS5oIGluY2x1ZGUgZmlsZSBwYXR0ZXJucyBvdXQgdGhlcmUsIGl0J3MgZWFzaWVyIHRvIGRlY2xhcmUgb3VyIG93biBuYW1lCistICogaW4gYWxsIGNhc2VzIHRoYW4gdG8gdHJ5IGFuZCBkaXNjb3ZlciBpZiBhIHN5c3RlbSBoYXMgYSBzdHJ1Y3QgdGltZXNwZWMuCistICogRm9yIHRoZSBzYW1lIHJlYXNvbiwgYW5kIGJlY2F1c2Ugd2UnZCBoYXZlIHRvICNpbmNsdWRlIDxzeXMvdGltZS5oPiBpbiBkYi5oLAorLSAqIHdlIGRvbid0IGV4cG9ydCBhbnkgdGltZXNwZWMgc3RydWN0dXJlcyBpbiB0aGUgREIgQVBJLCBldmVuIGluIHBsYWNlcyB3aGVyZQorLSAqIGl0IHdvdWxkIG1ha2Ugc2Vuc2UsIGxpa2UgdGhlIHJlcGxpY2F0aW9uIHN0YXRpc3RpY3MgaW5mb3JtYXRpb24uCistICovCistdHlwZWRlZiBzdHJ1Y3QgeworLQl0aW1lX3QJdHZfc2VjOwkJCQkvKiBzZWNvbmRzICovCistI2lmZGVmIEhBVkVfTUlYRURfU0laRV9BRERSRVNTSU5HCistCWludDMyX3QgdHZfbnNlYzsKKy0jZWxzZQorLQlsb25nCXR2X25zZWM7CQkJLyogbmFub3NlY29uZHMgKi8KKy0jZW5kaWYKKy19IGRiX3RpbWVzcGVjOworKyNpbmNsdWRlIDx0aW1lLmg+CisrI2RlZmluZSBkYl90aW1lc3BlYyBzdHJ1Y3QgdGltZXNwZWMKKyAKKyAvKiBPcGVyYXRpb25zIG9uIHRpbWVzcGVjcyAqLworICN1bmRlZgl0aW1lc3BlY2NsZWFyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzUuMy4yOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiCmluZGV4IDc2MWQ4MGMuLjNhMDkyM2EgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiCkBAIC0xMCw3ICsxMCw3IEBACiAjIHNhbWUgc3lzdGVtIGF0IHRoZSBzYW1lIHRpbWUgaWYgcmVhbGx5IG5lY2Vzc2FyeS4KIFNFQ1RJT04gPSAibGlicyIKIFNVTU1BUlkgPSAiQmVya2VsZXkgRGF0YWJhc2UgdjUiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9yYWNsZS5jb20vdGVjaG5ldHdvcmsvZGF0YWJhc2UvZGF0YWJhc2UtdGVjaG5vbG9naWVzL2JlcmtlbGV5ZGIvb3ZlcnZpZXcvaW5kZXguaHRtbCIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3Lm9yYWNsZS5jb20vZGF0YWJhc2UvdGVjaG5vbG9naWVzL3JlbGF0ZWQvYmVya2VsZXlkYi5odG1sIgogTElDRU5TRSA9ICJTbGVlcHljYXQiCiBSQ09ORkxJQ1RTXyR7UE59ID0gImRiMyIKIApAQCAtMjAsMTIgKzIwLDEzIEBACiBQUiA9ICJyMSIKIFBFID0gIjEiCiAKLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLm9yYWNsZS5jb20vYmVya2VsZXktZGIvZGItJHtQVn0udGFyLmd6IgorU1JDX1VSSSA9ICJodHRwczovL2Rvd25sb2FkLm9yYWNsZS5jb20vYmVya2VsZXktZGIvZGItJHtQVn0udGFyLmd6IgogU1JDX1VSSSArPSAiZmlsZTovL2ZpeC1wYXJhbGxlbC1idWlsZC5wYXRjaCBcCiAgICAgICAgICAgICBmaWxlOi8vMDAwMS1hdG9taWMtUmVuYW1lLWxvY2FsLV9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2UtdG8tYXZvLnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BZGQtZXhwbGljaXQtdGFnLW9wdGlvbnMtdG8tbGlidG9vbC1pbnZvY2EucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovL3NlcXVlbmNlLXR5cGUucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWxpYmMtY29tcGF0aWJpbGl0eS1ieS1yZW5hbWluZy1hdG9taWNfaW5pdC1BUEkucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtY2xvY2stRG8tbm90LWRlZmluZS1vd24tdGltZXNwZWMucGF0Y2ggXAogICAgICAgICAgICAiCiAjIFdlIGFyZSBub3QgaW50ZXJlc3RlZCBpbiBvZmZpY2lhbCBsYXRlc3QgNi54IHZlcnNpb25zOwogIyBsZXQncyB0cmFjayB3aGF0IGRlYmlhbiBpcyB1c2luZy4KQEAgLTYwLDcgKzYxLDkgQEAKIAogRVhUUkFfT0VDT05GID0gIiR7REI1X0NPTkZJR30gLS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLWN4eCAtLXdpdGgtc3lzcm9vdCBTVFJJUD10cnVlIgogCitQQUNLQUdFQ09ORklHID8/PSAiIgogUEFDS0FHRUNPTkZJR1t2ZXJpZnldID0gIi0tZW5hYmxlLXZlcmlmeSwgLS1kaXNhYmxlLXZlcmlmeSIKK1BBQ0tBR0VDT05GSUdbZGJtXSA9ICItLWVuYWJsZS1kYm0sLS1kaXNhYmxlLWRibSwiCiAKIEVYVFJBX09FTUFLRSArPSAiTElCVE9PTD0nLi8ke0hPU1RfU1lTfS1saWJ0b29sJyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjguNi4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjguNi4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjlkMDFlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjYuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLVNVTU1BUlkgPSAiTWlzY2VsbGFuZW91cyB1dGlsaXRpZXMgc3BlY2lmaWMgdG8gRGViaWFuIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MiAmIFNNQUlMX0dQTCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWYwMWE1MjAzZDUwNTEyZmM0ODMwYjQzMzJiNjk2YTlmIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTkwNzE3VDIxMzQ0NFovcG9vbC9tYWluL2QvJHtCUE59LyR7QlBOfV8ke1BWfS50YXIueHoiCi0jIHRoZSBwYWNrYWdlIGlzIHRha2VuIGZyb20gc25hcHNob3RzLmRlYmlhbi5vcmc7IHRoYXQgc291cmNlIGlzIHN0YXRpYyBhbmQgZ29lcyBzdGFsZQotIyBzbyB3ZSBjaGVjayB0aGUgbGF0ZXN0IHVwc3RyZWFtIGZyb20gYSBkaXJlY3RvcnkgdGhhdCBkb2VzIGdldCB1cGRhdGVkCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2QvJHtCUE59LyIKLQotU1JDX1VSSVttZDVzdW1dID0gImNhNTdjYzY2MjEyNzUzNDZkN2Q1MTZhYjBiNWZhMWY1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJjYzdkZTNhZmM2ZGYxY2Y2ZDAwYWY5OTM4ZWZhYzdlZThmNzM5MjI4ZTU0OGU1MTJkZGMxODZiNmE3YmUyMjEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lICdzOnRlbXBmaWxlLjEgd2hpY2guMTp3aGljaC4xOmcnICR7U30vTWFrZWZpbGUuYW0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF07IHRoZW4KLSAgICAgICAgIyBEZWJpYW4gcGxhY2VzIHNvbWUgdXRpbHMgaW50byAke2Jhc2VfYmluZGlyfSBhcyBkb2VzIGJ1c3lib3gKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLSAgICAgICAgZm9yIGFwcCBpbiBydW4tcGFydHMgdGVtcGZpbGU7IGRvCi0gICAgICAgICAgICBtdiAke0R9JHtiaW5kaXJ9LyRhcHAgJHtEfSR7YmFzZV9iaW5kaXJ9LyRhcHAKLSAgICAgICAgZG9uZQotICAgIGZpCi19Ci0KLSMgTm90ZSB0aGF0IHdlIHBhY2thZ2UgdGhlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgbmFtZS4KLSMKLVBBQ0tBR0VTID0rICIke1BOfS1ydW4tcGFydHMiCi1GSUxFU18ke1BOfS1ydW4tcGFydHMgPSAiJHtiYXNlX2JpbmRpcn0vcnVuLXBhcnRzLmRlYmlhbnV0aWxzIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0tcnVuLXBhcnRzIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQUxURVJOQVRJVkVfUFJJT1JJVFk9IjMwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAiYWRkLXNoZWxsIGluc3RhbGxrZXJuZWwgcmVtb3ZlLXNoZWxsIHNhdmVsb2cgdGVtcGZpbGUgd2hpY2giCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZXyR7UE59LXJ1bi1wYXJ0cyA9ICI2MCIKLUFMVEVSTkFUSVZFXyR7UE59LXJ1bi1wYXJ0cyA9ICJydW4tcGFydHMiCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJ3aGljaC4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3doaWNoLjFdID0gIiR7bWFuZGlyfS9tYW4xL3doaWNoLjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVthZGQtc2hlbGxdPSIke3NiaW5kaXJ9L2FkZC1zaGVsbCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtpbnN0YWxsa2VybmVsXT0iJHtzYmluZGlyfS9pbnN0YWxsa2VybmVsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3JlbW92ZS1zaGVsbF09IiR7c2JpbmRpcn0vcmVtb3ZlLXNoZWxsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3J1bi1wYXJ0c109IiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzYXZlbG9nXT0iJHtiaW5kaXJ9L3NhdmVsb2ciCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbdGVtcGZpbGVdPSIke2Jhc2VfYmluZGlyfS90ZW1wZmlsZSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt3aGljaF09IiR7YmluZGlyfS93aGljaCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuOS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjkuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDRjNTI3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjkuMS5iYgpAQCAtMCwwICsxLDU1IEBACitTVU1NQVJZID0gIk1pc2NlbGxhbmVvdXMgdXRpbGl0aWVzIHNwZWNpZmljIHRvIERlYmlhbiIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBTTUFJTF9HUEwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT1mMDFhNTIwM2Q1MDUxMmZjNDgzMGI0MzMyYjY5NmE5ZiIKKworU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE5MTIxMlQxNDU2MTJaL3Bvb2wvbWFpbi9kLyR7QlBOfS8ke0JQTn1fJHtQVn0udGFyLnh6IgorIyB0aGUgcGFja2FnZSBpcyB0YWtlbiBmcm9tIHNuYXBzaG90cy5kZWJpYW4ub3JnOyB0aGF0IHNvdXJjZSBpcyBzdGF0aWMgYW5kIGdvZXMgc3RhbGUKKyMgc28gd2UgY2hlY2sgdGhlIGxhdGVzdCB1cHN0cmVhbSBmcm9tIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBnZXQgdXBkYXRlZAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9kLyR7QlBOfS8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5NTYzMzQxNjY4MGJmZDI0OWI3Y2IwN2Q5NDEzNzA0OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZjgyNjY4NWQ5YzU2YWJmYTg3M2U4NGNkMzkyNTM5Y2QzNjNjYjBiYTA0YTA5ZDIxMTg3Mzc3ZTFiNzY0MDkxIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIHNlZCAtaSAtZSAnczp0ZW1wZmlsZS4xIHdoaWNoLjE6d2hpY2guMTpnJyAke1N9L01ha2VmaWxlLmFtCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCisgICAgICAgICMgRGViaWFuIHBsYWNlcyBzb21lIHV0aWxzIGludG8gJHtiYXNlX2JpbmRpcn0gYXMgZG9lcyBidXN5Ym94CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisgICAgICAgIGZvciBhcHAgaW4gcnVuLXBhcnRzIHRlbXBmaWxlOyBkbworICAgICAgICAgICAgbXYgJHtEfSR7YmluZGlyfS8kYXBwICR7RH0ke2Jhc2VfYmluZGlyfS8kYXBwCisgICAgICAgIGRvbmUKKyAgICBmaQorfQorCisjIE5vdGUgdGhhdCB3ZSBwYWNrYWdlIHRoZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIG5hbWUuCisjCitQQUNLQUdFUyA9KyAiJHtQTn0tcnVuLXBhcnRzIgorRklMRVNfJHtQTn0tcnVuLXBhcnRzID0gIiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cy5kZWJpYW51dGlscyIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXJ1bi1wYXJ0cyIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZPSIzMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gImFkZC1zaGVsbCBpbnN0YWxsa2VybmVsIHJlbW92ZS1zaGVsbCBzYXZlbG9nIHRlbXBmaWxlIHdoaWNoIgorCitBTFRFUk5BVElWRV9QUklPUklUWV8ke1BOfS1ydW4tcGFydHMgPSAiNjAiCitBTFRFUk5BVElWRV8ke1BOfS1ydW4tcGFydHMgPSAicnVuLXBhcnRzIgorCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAid2hpY2guMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt3aGljaC4xXSA9ICIke21hbmRpcn0vbWFuMS93aGljaC4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbYWRkLXNoZWxsXT0iJHtzYmluZGlyfS9hZGQtc2hlbGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaW5zdGFsbGtlcm5lbF09IiR7c2JpbmRpcn0vaW5zdGFsbGtlcm5lbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtyZW1vdmUtc2hlbGxdPSIke3NiaW5kaXJ9L3JlbW92ZS1zaGVsbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtydW4tcGFydHNdPSIke2Jhc2VfYmluZGlyfS9ydW4tcGFydHMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc2F2ZWxvZ109IiR7YmluZGlyfS9zYXZlbG9nIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3RlbXBmaWxlXT0iJHtiYXNlX2JpbmRpcn0vdGVtcGZpbGUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbd2hpY2hdPSIke2JpbmRpcn0vd2hpY2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kaWZmb3Njb3BlL2RpZmZvc2NvcGVfMTM2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kaWZmb3Njb3BlL2RpZmZvc2NvcGVfMTM2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlM2UxZGYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RpZmZvc2NvcGUvZGlmZm9zY29wZV8xMzYuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJpbi1kZXB0aCBjb21wYXJpc29uIG9mIGZpbGVzLCBhcmNoaXZlcywgYW5kIGRpcmVjdG9yaWVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9kaWZmb3Njb3BlLm9yZy8iCitMSUNFTlNFID0gIkdQTC0zLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1BZUElfUEFDS0FHRSA9ICJkaWZmb3Njb3BlIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSVttZDVzdW1dID0gImM4NGQ4ZDMwOGE0MDE3NmJhMmY1ZGM0YWJkYmY2ZjczIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBkNjQ4NmQ2ZWI2ZTA0NDViYTIxZmVlMmU4YmRkM2EzNjZjZTc4NmJmYWM5OGUwMGU1YTk1MDM4Yjc4MTVmMTUiCisKK1JERVBFTkRTXyR7UE59ICs9ICJiaW51dGlscyB2aW0gc3F1YXNoZnMtdG9vbHMgcHl0aG9uMy1saWJhcmNoaXZlLWMgcHl0aG9uMy1tYWdpYyIKKworIyBEZXBlbmRlbmNpZXMgZG9uJ3QgYnVpbGQgZm9yIG11c2wKK0NPTVBBVElCTEVfSE9TVF9saWJjLW11c2wgPSAnbnVsbCcKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kb3MydW5peC9kb3MydW5peF83LjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE3MTI3MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJDb252ZXJ0IHRleHQgZmlsZSBsaW5lIGVuZGluZ3MgYmV0d2VlbiBDUkxGIGFuZCBMRiIKLURFU0NSSVBUSU9OID0gIlRoZSBEb3MydW5peCBwYWNrYWdlIGluY2x1ZGVzIHV0aWxpdGllcyBkb3MydW5peCBhbmQgXAotdW5peDJkb3MgdG8gY29udmVydCBwbGFpbiB0ZXh0IGZpbGVzIGluIERPUyBvciBNYWMgZm9ybWF0IHRvIFVuaXggXAotZm9ybWF0IGFuZCB2aWNlIHZlcnNhLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93YXRlcmxhbi5ob21lLnhzNGFsbC5ubC9kb3MydW5peC5odG1sIgotU0VDVElPTiA9ICJzdXBwb3J0IgotCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT0xYjc4ZmNhNzg0ZGIyNGY0YTQwZTMwYjMwMDc4N2YzZiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQuY29kZS5zZi5uZXQvcC9kb3MydW5peC9kb3MydW5peCIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gImRvczJ1bml4LSg/UDxwdmVyPihcZCsoXC5cZCspKykpIgotCi0jIFJlbGVhc2UgNy40LjAKLVNSQ1JFViA9ICIxMTgyNTMzYmRlM2MxZmU2NWJlMmVhZDQ2NWU4NzY3MWZhYTJjMDI3IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0L2RvczJ1bml4IgotCi1pbmhlcml0IGdldHRleHQgcGVybG5hdGl2ZQotCi0jIFRoZSBkb3MydW5peCBOTFMgcmVsaWVzIG9uIHBvNGEtbmF0aXZlLCB3aGlsZSBwbzRhIHJlY2lwZSBpcwotIyBwcm92aWRlZCBieSBtZXRhLXBlcmwgbGF5ZXIsIHNvIG1ha2UgaXQgb3B0aW9uYWwgaGVyZSwgeW91Ci0jIG5lZWQgaGF2ZSBtZXRhLXBlcmwgaW4gYmJsYXllcnMuY29uZiBiZWZvcmUgZW5hYmxpbmcgbmxzIGluCi0jIFBBQ0tBR0VDT05GSUcuCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tubHNdID0gIkVOQUJMRV9OTFM9MSxFTkFCTEVfTkxTPSxwbzRhLW5hdGl2ZSIKLQotRVhUUkFfT0VNQUtFID0gIiR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gTERGTEFHU19VU0VSPScke0xERkxBR1N9JyIKLUVYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmUgPSAiRU5BQkxFX05MUz0iCi0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgREVTVERJUj0iJHtEfSR7YmFzZV9wcmVmaXh9IiBpbnN0YWxsCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZG9zMnVuaXgvZG9zMnVuaXhfNy40LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MjMyODUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuNC4xLmJiCkBAIC0wLDAgKzEsMzQgQEAKK1NVTU1BUlkgPSAiQ29udmVydCB0ZXh0IGZpbGUgbGluZSBlbmRpbmdzIGJldHdlZW4gQ1JMRiBhbmQgTEYiCitERVNDUklQVElPTiA9ICJUaGUgRG9zMnVuaXggcGFja2FnZSBpbmNsdWRlcyB1dGlsaXRpZXMgZG9zMnVuaXggYW5kIFwKK3VuaXgyZG9zIHRvIGNvbnZlcnQgcGxhaW4gdGV4dCBmaWxlcyBpbiBET1Mgb3IgTWFjIGZvcm1hdCB0byBVbml4IFwKK2Zvcm1hdCBhbmQgdmljZSB2ZXJzYS4iCitIT01FUEFHRSA9ICJodHRwOi8vd2F0ZXJsYW4uaG9tZS54czRhbGwubmwvZG9zMnVuaXguaHRtbCIKK1NFQ1RJT04gPSAic3VwcG9ydCIKKworTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9MGM5NzdiMThmMGEzODRkMDM1OTdhNTE3ZDdkMDNlMzIiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmNvZGUuc2YubmV0L3AvZG9zMnVuaXgvZG9zMnVuaXgiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJkb3MydW5peC0oP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKKworU1JDUkVWID0gIjA0OTBmMDcyM2IxYTA4NTFiMTczNDNmNjE2NDkxNWYzNDc0YjUxOTciCisKK1MgPSAiJHtXT1JLRElSfS9naXQvZG9zMnVuaXgiCisKK2luaGVyaXQgZ2V0dGV4dCBwZXJsbmF0aXZlCisKKyMgVGhlIGRvczJ1bml4IE5MUyByZWxpZXMgb24gcG80YS1uYXRpdmUsIHdoaWxlIHBvNGEgcmVjaXBlIGlzCisjIHByb3ZpZGVkIGJ5IG1ldGEtcGVybCBsYXllciwgc28gbWFrZSBpdCBvcHRpb25hbCBoZXJlLCB5b3UKKyMgbmVlZCBoYXZlIG1ldGEtcGVybCBpbiBiYmxheWVycy5jb25mIGJlZm9yZSBlbmFibGluZyBubHMgaW4KKyMgUEFDS0FHRUNPTkZJRy4KK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW25sc10gPSAiRU5BQkxFX05MUz0xLEVOQUJMRV9OTFM9LHBvNGEtbmF0aXZlIgorCitFWFRSQV9PRU1BS0UgPSAiJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBMREZMQUdTX1VTRVI9JyR7TERGTEFHU30nIgorRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICJFTkFCTEVfTkxTPSIKKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSBERVNURElSPSIke0R9JHtiYXNlX3ByZWZpeH0iIGluc3RhbGwKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9lbmNoYW50L2VuY2hhbnQyXzIuMi44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9lbmNoYW50L2VuY2hhbnQyXzIuMi44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkZGJlNTUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2VuY2hhbnQvZW5jaGFudDJfMi4yLjguYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJFbmNoYW50IFNwZWxsIGNoZWNrZXIgQVBJIExpYnJhcnkiCitTRUNUSU9OID0gImxpYnMiCitIT01FUEFHRSA9ICJodHRwczovL2FiaXdvcmQuZ2l0aHViLmlvL2VuY2hhbnQvIgorTElDRU5TRSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9BYmlXb3JkL2VuY2hhbnQvcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9L2VuY2hhbnQtJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImM3YjlkNmEzOTJlY2I4NzU4ZTQ5OWY3ODNlOGRjODgzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM3YjVlMjg1M2YwZGQwYjFhYWZlYTJmOWUwNzE5NDFhZmZlZWMzYTc2ZGY4ZTNmNmQ2N2E3MThjODkyOTM1NTUiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vQWJpV29yZC9lbmNoYW50L3JlbGVhc2VzIgorCitTID0gIiR7V09SS0RJUn0vZW5jaGFudC0ke1BWfSIKKworRVhUUkFfT0VNQUtFID0gInBrZ2RhdGFkaXI9JHtkYXRhZGlyfS9lbmNoYW50LTIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJhc3BlbGwiCitQQUNLQUdFQ09ORklHW2FzcGVsbF0gID0gIi0td2l0aC1hc3BlbGwsLS13aXRob3V0LWFzcGVsbCxhc3BlbGwsYXNwZWxsIgorUEFDS0FHRUNPTkZJR1todW5zcGVsbF0gID0gIi0td2l0aC1odW5zcGVsbCwtLXdpdGhvdXQtaHVuc3BlbGwsaHVuc3BlbGwsaHVuc3BlbGwiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vZW5jaGFudC0yIFwKKyAgICAke2xpYmRpcn0vZW5jaGFudC0yIFwKKyIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2VuY2hhbnQtMi8qLmEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2VuY2hhbnQvZW5jaGFudF8xLjYuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZW5jaGFudC9lbmNoYW50XzEuNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGViMmUzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZW5jaGFudC9lbmNoYW50XzEuNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotU1VNTUFSWSA9ICJFbmNoYW50IFNwZWxsIGNoZWNrZXIgQVBJIExpYnJhcnkiCi1TRUNUSU9OID0gImxpYnMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFiaXNvdXJjZS5jb20vcHJvamVjdHMvZW5jaGFudC8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5hYmlzb3VyY2UuY29tL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1FbmNoYW50IgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT1kZmNiYWJmOTEzMWRjOWE5NWZlYmVmNjc1M2EyOTU4YiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZW5jaGFudC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9Mjk7bWQ1PThkODgxY2FhMWQzNzUyMzU2N2UxZDhmNzI2Njc1YTE4IgotCi1ERVBFTkRTID0gImdsaWItMi4wIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUFIgPSAicjMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5hYmlzb3VyY2UuY29tL2Rvd25sb2Fkcy9lbmNoYW50LyR7UFZ9L2VuY2hhbnQtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZGUxMTAxMWFmZjgwMWRjNjEwNDI4MjgwNDFmYjU5YzciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmZhYzllN2JlN2U5NDI0YjJjNTU3MGQ4YWZmZTU2OGRiMzlmNzU3MmMxMGVkNDhkNGUxM2NkZGYwM2Y3MDk3ZiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImFzcGVsbCIKLVBBQ0tBR0VDT05GSUdbYXNwZWxsXSAgPSAiIC0td2l0aC1hc3BlbGwtcHJlZml4PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gIC0tZW5hYmxlLWFzcGVsbCwgIC0tZGlzYWJsZS1hc3BlbGwsICBhc3BlbGwsICBhc3BlbGwiCi1QQUNLQUdFQ09ORklHW2lzcGVsbF0gID0gIiAtLXdpdGgtaXNwZWxsLXByZWZpeD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9ICAtLWVuYWJsZS1pc3BlbGwsICAtLWRpc2FibGUtaXNwZWxsLCAgaXNwZWxsLCAgaXNwZWxsIgotUEFDS0FHRUNPTkZJR1t1c3BlbGxdICA9ICIgLS13aXRoLXVzcGVsbC1wcmVmaXg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSAgLS1lbmFibGUtdXNwZWxsLCAgLS1kaXNhYmxlLXVzcGVsbCwgIHVzcGVsbCwgIHVzcGVsbCIKLVBBQ0tBR0VDT05GSUdbaHNwZWxsXSAgPSAiIC0td2l0aC1oc3BlbGwtcHJlZml4PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gIC0tZW5hYmxlLWhzcGVsbCwgIC0tZGlzYWJsZS1oc3BlbGwsICBoc3BlbGwsICBoc3BlbGwiCi1QQUNLQUdFQ09ORklHW215c3BlbGxdID0gIi0td2l0aC1teXNwZWxsLXByZWZpeD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IC0tZW5hYmxlLW15c3BlbGwsIC0tZGlzYWJsZS1teXNwZWxsLCBteXNwZWxsLCBteXNwZWxsIgotCi1FWFRSQV9PRUNPTkYgPSAiYnJfY3ZfYmlucmVsb2M9bm8iCi0KLWV4cG9ydCBDWFhGTEFHUyArPSAiIC1MJHtTVEFHSU5HX0xJQkRJUn0gLWxzdGRjKysgIgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0gJHtsaWJkaXJ9Lyoke1NPTElCU30gJHtkYXRhZGlyfS8ke0JQTn0gJHtsaWJkaXJ9LyR7QlBOfS8qLnNvIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vJHtCUE59Lyp7U09MSUJTREVWfSAke2xpYmRpcn0vJHtCUE59LyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS8ke0JQTn0vKi5hIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9mcmliaWRpL2ZyaWJpZGlfMS4wLjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ZyaWJpZGkvZnJpYmlkaV8xLjAuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjczODg4NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ZyaWJpZGkvZnJpYmlkaV8xLjAuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiRnJlZSBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgVW5pY29kZSBCaWRpcmVjdGlvbmFsIEFsZ29yaXRobSIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNGMwMjBiMGY1MTM2ZGQwMTJlZTAwZjFlMTEyMmY2YWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWFiNWYyMWU5ZjJmYzU3YjRiNDBmOGVhOGYxNGRiYTc4YTVjYzQ2ZDljZjk0YmM1ZTAwYTU4ZTY4ODZhOTM1ZCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzIgotCi1pbmhlcml0IG1lc29uIGxpYl9wYWNrYWdlIHBrZ2NvbmZpZwotCi1DVkVfUFJPRFVDVCA9ICJnbnVfZnJpYmlkaSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9mcmliaWRpL2ZyaWJpZGlfMS4wLjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ZyaWJpZGkvZnJpYmlkaV8xLjAuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTIxN2FiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9mcmliaWRpL2ZyaWJpZGlfMS4wLjkuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJGcmVlIEltcGxlbWVudGF0aW9uIG9mIHRoZSBVbmljb2RlIEJpZGlyZWN0aW9uYWwgQWxnb3JpdGhtIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjFiNzY3YzI1OWMzY2Q4ZTBjODQ5Njk3MGY2M2MyMmRjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM1ZTQ3ZWE5MDI2ZmI2MGRhMTk0NGRhOTg4OGI0ZTBhMTg4NTRhMGUyNDEwYmJmZTdhZDkwYTA1NGQzNmUwYzciCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcyIKKworaW5oZXJpdCBtZXNvbiBsaWJfcGFja2FnZSBwa2djb25maWcKKworQ1ZFX1BST0RVQ1QgPSAiZ251X2ZyaWJpZGkiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTguMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTguMS5iYgppbmRleCAxNmVjYzUwLi41Y2I3YzU1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjE4LjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xOC4xLmJiCkBAIC0xNiwxMyArMTYsMTUgQEAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBsaWJfcGFja2FnZSBwdGVzdAogCiAjIE5lZWRlZCBmb3IgZGJtIHB5dGhvbiBtb2R1bGUKLUVYVFJBX09FQ09ORiA9ICItZW5hYmxlLWxpYmdkYm0tY29tcGF0IgorRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWxpYmdkYm0tY29tcGF0IC0td2l0aG91dC1yZWFkbGluZSIKIAogIyBTdG9wIHByZXNlbmNlIG9mIGRibS9uYmRtIG9uIHRoZSBob3N0IGNvbnRhbWluYXRpbmcgYnVpbGRzCiBDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfbGliX25kYm1fbWFpbj1ubyBhY19jdl9saWJfZGJtX21haW49bm8iCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAorQ0ZMQUdTICs9ICItZmNvbW1vbiIKKwogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogICAgICMgQ3JlYXRlIGEgc3ltbGluayB0byBuZGJtLmggYW5kIGdkYm0uaCBpbiBpbmNsdWRlL2dkYm0gdG8gbGV0IG90aGVyIHBhY2thZ2VzIHRvIGZpbmQKICAgICAjIHRoZXNlIGhlYWRlcnMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi8wMDAxLWNvbmZpdXJlLmFjLUJlbGlldmUtdGhlLWNmbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yLzAwMDEtY29uZml1cmUuYWMtQmVsaWV2ZS10aGUtY2ZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlNDc5MjQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yLzAwMDEtY29uZml1cmUuYWMtQmVsaWV2ZS10aGUtY2ZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1Gcm9tIGFlMWE0YzM3NDE3YTNiYmJmOGVhMWNhYjE5ODk4MmIwY2FkNDdlMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAxMiBBdWcgMjAxNiAxNzowODoxMyArMDAwMAotU3ViamVjdDogW1BBVENIXSBjb25maXVyZS5hYzogQmVsaWV2ZSB0aGUgY2ZsYWdzIGZyb20gZW52aXJvbm1lbnQKLQotSW4gc29tZSB0b29sY2hhaW5zIGUuZy4gT3BlbkVtYmVkZGVkIC1tYXJjaCBvcHRpb25zCi1hcmUgcGFzc2VkIG9uIGNvbXBpbGVyIGNtZGxpbmUsIGl0IGRvZXMgbm90IHVzZQotdGhlIGV4cGVjdGVkIHRhcmdldCB0cmlwbGV0cyB0byBtYWtlIHRoZXNlIGRlY2lzaW9uCi1kdXJpbmcgY29uZmlndXJlLgotCi1TZWNvbmRseSwgZG9udCBzZXQgYXJtdjQgZm9yIG1hcmNoIHdoZW4gbm8gc2VsZWN0aW9uCi1pcyBtYWRlLCBzaW5jZSBpdCBpcyBwYXNzZWQgZnJvbSBjbWRsaW5lCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtPRS1TcGVjaWZpY10KLQotIGNvbmZpZ3VyZS5hYyB8IDExIC0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDExIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ21wLTYuMS4yL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdtcC02LjEuMi5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGdtcC02LjEuMi9jb25maWd1cmUuYWMKLUBAIC02MDQsMTUgKzYwNCw2IEBAIGNhc2UgJGhvc3QgaW4KLSAgICAgYW55XzMyX3Rlc3RsaXN0PSJzaXplb2YtbG9uZy00IgotICAgICBhbnlfNjRfdGVzdGxpc3Q9InNpemVvZi1sb25nLTgiCi0gCi0tICAgICMgVGhpcyBpcyBuZWVkZWQgZm9yIGNsYW5nLCB3aGljaCBpcyBub3QgY29udGVudCB3aXRoIGZsYWdzIGxpa2UgLW1mcHU9bmVvbgotLSAgICAjIGFsb25lLgotLSAgICBjYXNlICRob3N0IGluCi0tICAgICAgKi0qLSplYWJpKQotLSAgICAgICAgZ2NjX2NmbGFnc19mcG1vZGU9Ii1tZmxvYXQtYWJpPXNvZnRmcCIgOzsKLS0gICAgICAqLSotKmVhYmloZikKLS0gICAgICAgIGdjY19jZmxhZ3NfZnBtb2RlPSItbWZsb2F0LWFiaT1oYXJkIiA7OwotLSAgICBlc2FjCi0tCi0gICAgICMgRklYTUU6IFdlIG1ha2UgbWFuZGF0b3J5IGNvbXBpbGVyIG9wdGlvbnMgb3B0aW9uYWwgaGVyZS4gIFdlIHNob3VsZAotICAgICAjIGVpdGhlciBlbmZvcmNlIHRoZW0sIG9yIG9yZ2FuaXNlIHRvIHN0cmlwIHBhdGhzIGFzIHRoZSBjb3JyZXNwb25kaW5nCi0gICAgICMgb3B0aW9ucyBmYWlsLgotQEAgLTc0Niw4ICs3MzcsNiBAQCBjYXNlICRob3N0IGluCi0gCTs7Ci0gICAgICAgKikKLSAJcGF0aD0iYXJtIgotLQlnY2NfY2ZsYWdzX2FyY2g9Ii1tYXJjaD1hcm12NCIKLS0JR01QX0RFRklORV9SQVcoWyJkZWZpbmUoPE5PVEhVTUI+LDEpIl0pCi0gCTs7Ci0gICAgIGVzYWMKLSAgICAgOzsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi9hbWQ2NC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi9hbWQ2NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkzNTU4OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvYW1kNjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IGdtcC02LjEuMi9sb25nbG9uZy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ21wLTYuMS4yLm9yaWcvbG9uZ2xvbmcuaAotKysrIGdtcC02LjEuMi9sb25nbG9uZy5oCi1AQCAtMTAzNiw4ICsxMDM2LDEwIEBAIGV4dGVybiBVV3R5cGUgX19NUE4odWRpdl9xcm5uZCkgKFVXdHlwZQotICAgIGNvdW50IGlzIG9ubHkgYW4gaW50LiAqLwotICNkZWZpbmUgY291bnRfdHJhaWxpbmdfemVyb3MoY291bnQsIHgpCQkJCQlcCi0gICBkbyB7CQkJCQkJCQkJXAotKyAgICBVREl0eXBlIF9fY2J0bXA7CQkJCQkJCVwKLSAgICAgQVNTRVJUICgoeCkgIT0gMCk7CQkJCQkJCVwKLS0gICAgX19hc21fXyAoImJzZnEgJTEsJXEwIiA6ICI9ciIgKGNvdW50KSA6ICJybSIgKChVREl0eXBlKSh4KSkpOwlcCi0rICAgIF9fYXNtX18gKCJic2ZxICUxLCUwIiA6ICI9ciIgKF9fY2J0bXApIDogInJtIiAoKFVESXR5cGUpKHgpKSk7CVwKLSsgICAgKGNvdW50KSA9IF9fY2J0bXA7CQkJCQkJCVwKLSAgIH0gd2hpbGUgKDApCi0gI2VuZGlmIC8qIF9fYW1kNjRfXyAqLwotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yL3VzZS1pbmNsdWRlZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yL3VzZS1pbmNsdWRlZGlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjA4OWNmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi91c2UtaW5jbHVkZWRpci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JbmRleDogZ21wLTYuMS4yL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ21wLTYuMS4yLm9yaWcvTWFrZWZpbGUuYW0KLSsrKyBnbXAtNi4xLjIvTWFrZWZpbGUuYW0KLUBAIC0xMzAsNyArMTMwLDcgQEAgRVhUUkFfRElTVCArPSBnbXB4eC5oCi0gIyBidXQgYW55b25lIGtub3dsZWRnZWFibGUgZW5vdWdoIHRvIGJlIHBsYXlpbmcgd2l0aCBleGVjX3ByZWZpeCB3aWxsIGJlIGFibGUKLSAjIHRvIGFkZHJlc3MgdGhhdC4KLSAjCi0taW5jbHVkZWV4ZWNkaXIgPSAkKGV4ZWNfcHJlZml4KS9pbmNsdWRlCi0raW5jbHVkZWV4ZWNkaXIgPSAkKGluY2x1ZGVkaXIpCi0gaW5jbHVkZV9IRUFERVJTID0gJChHTVBYWF9IRUFERVJTX09QVElPTikKLSBub2Rpc3RfaW5jbHVkZWV4ZWNfSEVBREVSUyA9IGdtcC5oCi0gbGliX0xUTElCUkFSSUVTID0gbGliZ21wLmxhICQoR01QWFhfTFRMSUJSQVJJRVNfT1BUSU9OKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yLzAwMDEtQXBwZW5kLXRoZS11c2VyLXByb3ZpZGVkLWZsYWdzLXRvLXRoZS1hdXRvLWRldGVjdGVkLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC8wMDAxLUFwcGVuZC10aGUtdXNlci1wcm92aWRlZC1mbGFncy10by10aGUtYXV0by1kZXRlY3RlZC0ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi8wMDAxLUFwcGVuZC10aGUtdXNlci1wcm92aWRlZC1mbGFncy10by10aGUtYXV0by1kZXRlY3RlZC0ucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC8wMDAxLUFwcGVuZC10aGUtdXNlci1wcm92aWRlZC1mbGFncy10by10aGUtYXV0by1kZXRlY3RlZC0ucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC8wMDAxLWNvbmZpdXJlLmFjLUJlbGlldmUtdGhlLWNmbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLzAwMDEtY29uZml1cmUuYWMtQmVsaWV2ZS10aGUtY2ZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY1NjRkYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC8wMDAxLWNvbmZpdXJlLmFjLUJlbGlldmUtdGhlLWNmbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gYWUxYTRjMzc0MTdhM2JiYmY4ZWExY2FiMTk4OTgyYjBjYWQ0N2UyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDEyIEF1ZyAyMDE2IDE3OjA4OjEzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpdXJlLmFjOiBCZWxpZXZlIHRoZSBjZmxhZ3MgZnJvbSBlbnZpcm9ubWVudAorCitJbiBzb21lIHRvb2xjaGFpbnMgZS5nLiBPcGVuRW1iZWRkZWQgLW1hcmNoIG9wdGlvbnMKK2FyZSBwYXNzZWQgb24gY29tcGlsZXIgY21kbGluZSwgaXQgZG9lcyBub3QgdXNlCit0aGUgZXhwZWN0ZWQgdGFyZ2V0IHRyaXBsZXRzIHRvIG1ha2UgdGhlc2UgZGVjaXNpb24KK2R1cmluZyBjb25maWd1cmUuCisKK1NlY29uZGx5LCBkb250IHNldCBhcm12NCBmb3IgbWFyY2ggd2hlbiBubyBzZWxlY3Rpb24KK2lzIG1hZGUsIHNpbmNlIGl0IGlzIHBhc3NlZCBmcm9tIGNtZGxpbmUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW09FLVNwZWNpZmljXQorCisgY29uZmlndXJlLmFjIHwgMTEgLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTEgZGVsZXRpb25zKC0pCisKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNjI1LDE3ICs2MjUsNiBAQCBjYXNlICRob3N0IGluCisgICAgIGFueV8zMl90ZXN0bGlzdD0ic2l6ZW9mLXZvaWQqLTQiCisgICAgIGFueV82NF90ZXN0bGlzdD0ic2l6ZW9mLXZvaWQqLTgiCisgCistICAgICMgVGhpcyBpcyBuZWVkZWQgZm9yIGNsYW5nLCB3aGljaCBpcyBub3QgY29udGVudCB3aXRoIGZsYWdzIGxpa2UgLW1mcHU9bmVvbgorLSAgICAjIGFsb25lLgorLSAgICBjYXNlICRob3N0IGluCistICAgICAgKi0qLSplYWJpKQorLSAgICAgICAgZ2NjX2NmbGFnc19mcG1vZGU9Ii1tZmxvYXQtYWJpPXNvZnRmcCIgOzsKKy0gICAgICAqLSotKmVhYmloZikKKy0gICAgICAgIGdjY19jZmxhZ3NfZnBtb2RlPSItbWZsb2F0LWFiaT1oYXJkIiA7OworLSAgICAgICotKi1taW5ndyopCistICAgICAgICBsaW1iXzY0PWxvbmdsb25nIDs7CistICAgIGVzYWMKKy0KKyAgICAgIyBGSVhNRTogV2UgbWFrZSBtYW5kYXRvcnkgY29tcGlsZXIgb3B0aW9ucyBvcHRpb25hbCBoZXJlLiAgV2Ugc2hvdWxkCisgICAgICMgZWl0aGVyIGVuZm9yY2UgdGhlbSwgb3Igb3JnYW5pc2UgdG8gc3RyaXAgcGF0aHMgYXMgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgIyBvcHRpb25zIGZhaWwuCitAQCAtNzgwLDggKzc2OSw2IEBAIGNhc2UgJGhvc3QgaW4KKyAJOzsKKyAgICAgICAqKQorIAlwYXRoPSJhcm0iCistCWdjY19jZmxhZ3NfYXJjaD0iLW1hcmNoPWFybXY0IgorLQlHTVBfREVGSU5FX1JBVyhbImRlZmluZSg8Tk9USFVNQj4sMSkiXSkKKyAJOzsKKyAgICAgZXNhYworICAgICA7OwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wL3VzZS1pbmNsdWRlZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wL3VzZS1pbmNsdWRlZGlyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNzMxN2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAvdXNlLWluY2x1ZGVkaXIucGF0Y2gKQEAgLTAsMCArMSwxOCBAQAorZXhlYyBpbmNsdWRlZGlyIHNob3VsZCBiZSBwb2ludGluZyB0byBnZW5lcmFsIHlvY3RvIGluY2x1ZGRpcgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiBnbXAtNi4xLjIvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnbXAtNi4xLjIub3JpZy9NYWtlZmlsZS5hbQorKysrIGdtcC02LjEuMi9NYWtlZmlsZS5hbQorQEAgLTEzMCw3ICsxMzAsNyBAQCBFWFRSQV9ESVNUICs9IGdtcHh4LmgKKyAjIGJ1dCBhbnlvbmUga25vd2xlZGdlYWJsZSBlbm91Z2ggdG8gYmUgcGxheWluZyB3aXRoIGV4ZWNfcHJlZml4IHdpbGwgYmUgYWJsZQorICMgdG8gYWRkcmVzcyB0aGF0LgorICMKKy1pbmNsdWRlZXhlY2RpciA9ICQoZXhlY19wcmVmaXgpL2luY2x1ZGUKKytpbmNsdWRlZXhlY2RpciA9ICQoaW5jbHVkZWRpcikKKyBpbmNsdWRlX0hFQURFUlMgPSAkKEdNUFhYX0hFQURFUlNfT1BUSU9OKQorIG5vZGlzdF9pbmNsdWRlZXhlY19IRUFERVJTID0gZ21wLmgKKyBsaWJfTFRMSUJSQVJJRVMgPSBsaWJnbXAubGEgJChHTVBYWF9MVExJQlJBUklFU19PUFRJT04pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXBfNi4xLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXBfNi4xLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3NDVkYmIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wXzYuMS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotcmVxdWlyZSBnbXAuaW5jCi0KLUxJQ0VOU0UgPSAiR1BMdjIrIHwgTEdQTHYzKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUnYzO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCi0gICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkd2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotIgotCi1SRVZJU0lPTiA9ICIiCi1TUkNfVVJJID0gImh0dHBzOi8vZ21wbGliLm9yZy9kb3dubG9hZC8ke0JQTn0vJHtCUH0ke1JFVklTSU9OfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2FtZDY0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VzZS1pbmNsdWRlZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQXBwZW5kLXRoZS11c2VyLXByb3ZpZGVkLWZsYWdzLXRvLXRoZS1hdXRvLWRldGVjdGVkLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpdXJlLmFjLUJlbGlldmUtdGhlLWNmbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjhkZGJiMjZkYzNiZDRlMjMwMjk4NGRlYmJhMTQwNmE1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUyNzViYjA0ZjQ4NjNhMTM1MTZiMmYzOTM5MmFjNWUyNzJmNWUxYmI4MDU3YjE4YWVjMWM5Yjc5ZDczZDhmYjIiCi0KLWFjcGF0aHMgPSAiIgotCi1FWFRSQV9PRUNPTkYgKz0gIiAtLWVuYWJsZS1jeHg9ZGV0ZWN0IgotRVhUUkFfT0VDT05GX21pcHNhcmNocjZfYXBwZW5kID0gIiAtLWRpc2FibGUtYXNzZW1ibHkiCi0KLVBBQ0tBR0VTID0rICJsaWJnbXB4eCIKLUZJTEVTX2xpYmdtcHh4ID0gIiR7bGliZGlyfS9saWJnbXB4eCR7U09MSUJTfSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jb2VfbXVsdGlsaWJfaGVhZGVyIGdtcC5oCi19Ci0KLWRvX2luc3RhbGxfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgICAgIHNlZCAtaSBcCi0gICAgICAgIC1lICJzfC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9fHxnIiBcCi0gICAgICAgIC1lICJzfCR7REVCVUdfUFJFRklYX01BUH18fGciIFwKLSAgICAgICAgICR7Qn0vZ21wLmgKLX0KLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gImdtcC5oIgotCi0jIERvZXNuJ3QgY29tcGlsZSBpbiBNSVBTMTZlIG1vZGUgZHVlIHRvIHVzZSBvZiBoYW5kLXdyaXR0ZW4KLSMgYXNzZW1ibHkKLU1JUFNfSU5TVFJVQ1RJT05fU0VUID0gIm1pcHMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcF82LjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcF82LjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTljNzRmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wXzYuMi4wLmJiCkBAIC0wLDAgKzEsNDQgQEAKK3JlcXVpcmUgZ21wLmluYworCitMSUNFTlNFID0gIkdQTHYyKyB8IExHUEx2MysiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MzttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAorICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyIKKworUkVWSVNJT04gPSAiIgorU1JDX1VSSSA9ICJodHRwczovL2dtcGxpYi5vcmcvZG93bmxvYWQvJHtCUE59LyR7QlB9JHtSRVZJU0lPTn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly91c2UtaW5jbHVkZWRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFwcGVuZC10aGUtdXNlci1wcm92aWRlZC1mbGFncy10by10aGUtYXV0by1kZXRlY3RlZC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maXVyZS5hYy1CZWxpZXZlLXRoZS1jZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjMjQxNjFlMGRkNDRjYWU3OGNkNWY2NzE5MzQ5MmEyMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNTFjOTljYjExNGRlYjIxYTYwMDc1ZmZiNDk0YzFhMjEwZWI5ZDdjYjcyOWVkMDQyZGRiN2RlOTUzNDQ1MWVhIgorCithY3BhdGhzID0gIiIKKworRVhUUkFfT0VDT05GICs9ICIgLS1lbmFibGUtY3h4PWRldGVjdCIKK0VYVFJBX09FQ09ORl9taXBzYXJjaHI2X2FwcGVuZCA9ICIgLS1kaXNhYmxlLWFzc2VtYmx5IgorCitQQUNLQUdFUyA9KyAibGliZ21weHgiCitGSUxFU19saWJnbXB4eCA9ICIke2xpYmRpcn0vbGliZ21weHgke1NPTElCU30iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCW9lX211bHRpbGliX2hlYWRlciBnbXAuaAorfQorCitkb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICAgICBzZWQgLWkgXAorICAgICAgICAtZSAic3wtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfXx8ZyIgXAorICAgICAgICAtZSAic3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnIiBcCisgICAgICAgICAke0J9L2dtcC5oCit9CisKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICJnbXAuaCIKKworIyBEb2Vzbid0IGNvbXBpbGUgaW4gTUlQUzE2ZSBtb2RlIGR1ZSB0byB1c2Ugb2YgaGFuZC13cml0dGVuCisjIGFzc2VtYmx5CitNSVBTX0lOU1RSVUNUSU9OX1NFVCA9ICJtaXBzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi4xNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjE3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjg4ODVmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjE3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotU1VNTUFSWSA9ICJHTlUgUHJpdmFjeSBHdWFyZCAtIGVuY3J5cHRpb24gYW5kIHNpZ25pbmcgdG9vbHMgKDIueCkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy8iCi1MSUNFTlNFID0gIkdQTHYzICYgTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTg5YWY4YWZjYTZkNjA3NWJhNmM5ZTBhYTgwNzc2MjYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMMzttZDU9YTJiNmJmMmNiMzhlZTUyNjE5ZTYwZjMwYTFmYzcyNTciCi0KLURFUEVORFMgPSAibnB0aCBsaWJhc3N1YW4gbGlia3NiYSB6bGliIGJ6aXAyIHJlYWRsaW5lIGxpYmdjcnlwdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHBrZ2NvbmZpZwotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKLVNSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLXRvLWZpbmQtcHRoLWluc3RlYWQtb2YtcHRoLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXVzZS1wa2djb25maWctaW5zdGVhZC1vZi1ucHRoLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWRpcm1uZ3ItdXNlcy1saWJncGctZXJyb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1hdXRvZ2VuLnNoLWZpeC1maW5kLXZlcnNpb24tZm9yLWJldGEtY2hlY2tpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Xb3ZlcnJpZGUtaW5pdC1pcy1ub3QtbmVlZGVkLXdpdGgtZ2NjLTkucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy11c2UtYS1jdXN0b20tdmFsdWUtZm9yLXRoZS1sb2NhdGlvbi1vZi0ucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcmVsb2NhdGUucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxYmEyZDliNzBjMzc3ZjhlOTY3NzQyMDY0YzI3YTE5YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZmEyNjI4NjhlMzliNjUxYTJkYjRjMDcxZmJhOTA0MTUxNTQyNDNlODNhODMwY2EwMDUxNmY5YTgwN2ZkNTE0IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWxkYXAgXAotCQktLWRpc2FibGUtY2NpZC1kcml2ZXIgXAotCQktLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0JCS0td2l0aC1iemlwMj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0JCS0td2l0aC1yZWFkbGluZT0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0JCS0tZW5hYmxlLWdwZy1pcy1ncGcyIFwKLSAgICAgICAgICAgICAgICIKLQotIyBBIG1pbmltYWwgcGFja2FnZSBjb250YWluaW5nIGp1c3QgZW5vdWdoIHRvIHJ1biBncGcrZ3BnYWdlbnQgKEUuZy4gdXNlIGdwZ21lIGluIG9wa2cpCi1QQUNLQUdFUyA9KyAiJHtQTn0tZ3BnIgotRklMRVNfJHtQTn0tZ3BnID0gIiBcCi0JJHtiaW5kaXJ9L2dwZyBcCi0JJHtiaW5kaXJ9L2dwZzIgXAotCSR7YmluZGlyfS9ncGctYWdlbnQgXAotIgotCi0jIE5vcm1hbCBwYWNrYWdlIChnbnVwZykgc2hvdWxkIGRlcGVuZCBvbiBtaW5pbWFsIHBhY2thZ2UgKGdudXBnLWdwZykKLSMgdG8gZW5zdXJlIGFsbCB0b29scyBhcmUgaW5jbHVkZWQuIFRoaXMgaXMgZG9uZSBvbmx5IGluIG5vbi1uYXRpdmUKLSMgYnVpbGRzLiBOYXRpdmUgYnVpbGRzIGRvbid0IGhhdmUgc3ViLXBhY2thZ2VzLCBzbyBhcHBlbmRpbmcgUkRFUEVORFMKLSMgaW4gdGhpcyBjYXNlIGJyZWFrcyByZWNpcGUgcGFyc2luZy4KLVJERVBFTkRTXyR7UE59ICs9ICIke0AgIiIgaWYgKCJuYXRpdmUiIGluIGQuZ2V0VmFyKCJQTiIpKSBlbHNlIChkLmdldFZhcigiUE4iKSArICItZ3BnIil9IgotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJwaW5lbnRyeSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcm5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKLQlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAotCXJtIC1mICR7U30vbTQvbGliYXNzdWFuLm00Ci0Jcm0gLWYgJHtTfS9tNC9rc2JhLm00Ci0Jcm0gLWYgJHtTfS9tNC9saWJnY3J5cHQubTQKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JbG4gLXNmIGdwZzIgJHtEfSR7YmluZGlyfS9ncGcKLQlsbiAtc2YgZ3BndjIgJHtEfSR7YmluZGlyfS9ncGd2Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L2dwZzIgR05VUEdfQklORElSPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfQotCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vZ3BnY29uZiBHTlVQR19CSU5ESVI9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9Ci0JY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9ncGctYWdlbnQgR05VUEdfQklORElSPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfQotCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vZ3BnLWNvbm5lY3QtYWdlbnQgR05VUEdfQklORElSPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfQotfQotCi1QQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0tZW5hYmxlLWdudXRscywgLS1kaXNhYmxlLWdudXRscywgZ251dGxzIgotUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLWVuYWJsZS1zcWxpdGUsIC0tZGlzYWJsZS1zcWxpdGUsIHNxbGl0ZTMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjIwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuMjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc1NDU3MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjIwLmJiCkBAIC0wLDAgKzEsODEgQEAKK1NVTU1BUlkgPSAiR05VIFByaXZhY3kgR3VhcmQgLSBlbmNyeXB0aW9uIGFuZCBzaWduaW5nIHRvb2xzICgyLngpIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvIgorTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE4OWFmOGFmY2E2ZDYwNzViYTZjOWUwYWE4MDc3NjI2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTDM7bWQ1PWEyYjZiZjJjYjM4ZWU1MjYxOWU2MGYzMGExZmM3MjU3IgorCitERVBFTkRTID0gIm5wdGggbGliYXNzdWFuIGxpYmtzYmEgemxpYiBiemlwMiByZWFkbGluZSBsaWJnY3J5cHQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtcGtnLWNvbmZpZy10by1maW5kLXB0aC1pbnN0ZWFkLW9mLXB0aC1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi11c2UtcGtnY29uZmlnLWluc3RlYWQtb2YtbnB0aC1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1kaXJtbmdyLXVzZXMtbGliZ3BnLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtYXV0b2dlbi5zaC1maXgtZmluZC12ZXJzaW9uLWZvci1iZXRhLWNoZWNraW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtV292ZXJyaWRlLWluaXQtaXMtbm90LW5lZWRlZC13aXRoLWdjYy05LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtdXNlLWEtY3VzdG9tLXZhbHVlLWZvci10aGUtbG9jYXRpb24tb2YtLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3JlbG9jYXRlLnBhdGNoIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBmaWxlOi8vcmVsb2NhdGUucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZmY4ODkyMGNmNTJiMzVkYjBkZWRhZWU4N2JkYmJiMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwNGE3YzlkNDhiNzRjMzk5MTY4ZWU4MjcwZTU0ODU4OGRkYmU1MjIxOGMzMzc3MDNkN2YwNjM3M2QzMjZjYTMwIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWxkYXAgXAorCQktLWRpc2FibGUtY2NpZC1kcml2ZXIgXAorCQktLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisJCS0td2l0aC1iemlwMj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisJCS0td2l0aC1yZWFkbGluZT0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisJCS0tZW5hYmxlLWdwZy1pcy1ncGcyIFwKKyAgICAgICAgICAgICAgICIKKworIyBBIG1pbmltYWwgcGFja2FnZSBjb250YWluaW5nIGp1c3QgZW5vdWdoIHRvIHJ1biBncGcrZ3BnYWdlbnQgKEUuZy4gdXNlIGdwZ21lIGluIG9wa2cpCitQQUNLQUdFUyA9KyAiJHtQTn0tZ3BnIgorRklMRVNfJHtQTn0tZ3BnID0gIiBcCisJJHtiaW5kaXJ9L2dwZyBcCisJJHtiaW5kaXJ9L2dwZzIgXAorCSR7YmluZGlyfS9ncGctYWdlbnQgXAorIgorCisjIE5vcm1hbCBwYWNrYWdlIChnbnVwZykgc2hvdWxkIGRlcGVuZCBvbiBtaW5pbWFsIHBhY2thZ2UgKGdudXBnLWdwZykKKyMgdG8gZW5zdXJlIGFsbCB0b29scyBhcmUgaW5jbHVkZWQuIFRoaXMgaXMgZG9uZSBvbmx5IGluIG5vbi1uYXRpdmUKKyMgYnVpbGRzLiBOYXRpdmUgYnVpbGRzIGRvbid0IGhhdmUgc3ViLXBhY2thZ2VzLCBzbyBhcHBlbmRpbmcgUkRFUEVORFMKKyMgaW4gdGhpcyBjYXNlIGJyZWFrcyByZWNpcGUgcGFyc2luZy4KK1JERVBFTkRTXyR7UE59ICs9ICIke0AgIiIgaWYgKCJuYXRpdmUiIGluIGQuZ2V0VmFyKCJQTiIpKSBlbHNlIChkLmdldFZhcigiUE4iKSArICItZ3BnIil9IgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJwaW5lbnRyeSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcm5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKKwlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAorCXJtIC1mICR7U30vbTQvbGliYXNzdWFuLm00CisJcm0gLWYgJHtTfS9tNC9rc2JhLm00CisJcm0gLWYgJHtTfS9tNC9saWJnY3J5cHQubTQKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJbG4gLXNmIGdwZzIgJHtEfSR7YmluZGlyfS9ncGcKKwlsbiAtc2YgZ3BndjIgJHtEfSR7YmluZGlyfS9ncGd2Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwljcmVhdGVfd3JhcHBlcnMgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwljcmVhdGVfd3JhcHBlcnMgJHtTREtQQVRITkFUSVZFfSR7YmluZGlyX25hdGl2ZXNka30KK30KKworY3JlYXRlX3dyYXBwZXJzKCkgeworCWZvciBpIGluIGdwZzIgZ3BnY29uZiBncGctYWdlbnQgZ3BnLWNvbm5lY3QtYWdlbnQ7IGRvCisJCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vJGkgR05VUEdfQklORElSPSQxCisJZG9uZQorfQorCitQQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0tZW5hYmxlLWdudXRscywgLS1kaXNhYmxlLWdudXRscywgZ251dGxzIgorUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLWVuYWJsZS1zcWxpdGUsIC0tZGlzYWJsZS1zcWxpdGUsIHNxbGl0ZTMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy9wb3NpeC1zaGVsbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy9wb3NpeC1zaGVsbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM4ZTJkMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvcG9zaXgtc2hlbGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Eb24ndCBlbWJlZCB0aGUgcGF0aCB0byB0aGUgYnVpbGQtdGltZSBQT1NJWCBzaGVsbCBhcyB0aGlzIHdpbGwgYmUKLSRUTVBESVIvaG9zdHRvb2xzL2Jhc2gsIHdoaWNoIGlzIG5vIGdvb2Qgb24gdGhlIHRhcmdldC4KLQotSW5zdGVhZCBkZWZhdWx0IHRvIC9iaW4vc2ggYnV0IGFsbG93IGl0IHRvIGJlIHNldCBpbiB0aGUgZW52aXJvbm1lbnQuCi0KLVRoaXMgaXNuJ3QgcmVhbGx5IHVwc3RyZWFtYWJsZSBidXQgSSBmaWxlZCBhIGJ1ZyBhdAotaHR0cHM6Ly9naXRsYWIuY29tL2dudXRscy9nbnV0bHMvaXNzdWVzLzgwNyBhbmQgaG9wZSBhIHByb3BlciBmaXggd2lsbCBiZQotaW50ZWdyYXRlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYm9wdHMvbTQvbGlib3B0cy5tNCBiL3NyYy9saWJvcHRzL200L2xpYm9wdHMubTQKLWluZGV4IGM2YWQ3MzguLmE2MmZhY2EgMTAwNjQ0Ci0tLS0gYS9zcmMvbGlib3B0cy9tNC9saWJvcHRzLm00Ci0rKysgYi9zcmMvbGlib3B0cy9tNC9saWJvcHRzLm00Ci1AQCAtMTEyLDIxICsxMTIsNyBAQCBBQ19ERUZVTihbSU5WT0tFX0xJQk9QVFNfTUFDUk9TX0ZJUlNUXSxbCi0gICBBQ19DSEVDS19GVU5DUyhbbW1hcCBjYW5vbmljYWxpemVfZmlsZV9uYW1lIHNucHJpbnRmIHN0cmR1cCBzdHJjaHIgXAotICAgICAgICAgICAgICAgICAgc3RycmNociBzdHJzaWduYWwgZmNobW9kIGZzdGF0IGNobW9kXSkKLSAgIEFDX1BST0dfU0VECi0tICBbd2hpbGUgOgotLSAgZG8KLS0gICAgICBQT1NJWF9TSEVMTD1gd2hpY2ggYmFzaGAKLS0gICAgICB0ZXN0IC14ICIkUE9TSVhfU0hFTEwiICYmIGJyZWFrCi0tICAgICAgUE9TSVhfU0hFTEw9YHdoaWNoIGRhc2hgCi0tICAgICAgdGVzdCAteCAiJFBPU0lYX1NIRUxMIiAmJiBicmVhawotLSAgICAgIFBPU0lYX1NIRUxMPS91c3IveHBnNC9iaW4vc2gKLS0gICAgICB0ZXN0IC14ICIkUE9TSVhfU0hFTEwiICYmIGJyZWFrCi0tICAgICAgUE9TSVhfU0hFTEw9YC9iaW4vc2ggLWMgJwotLSAgICAgICAgICBleGVjIDI+L2Rldi9udWxsCi0tICAgICAgICAgIGlmICEgdHJ1ZSA7IHRoZW4gZXhpdCAxIDsgZmkKLS0gICAgICAgICAgZWNobyAvYmluL3NoJ2AKLS0gICAgICB0ZXN0IC14ICIkUE9TSVhfU0hFTEwiICYmIGJyZWFrCi0tICAgICAgXUFDX01TR19FUlJPUihbY2Fubm90IGxvY2F0ZSBhIHdvcmtpbmcgUE9TSVggc2hlbGxdKVsKLS0gIGRvbmVdCi0rICBQT1NJWF9TSEVMTD0iJHtQT1NJWF9TSEVMTDotL2Jpbi9zaH0iCi0gICBBQ19ERUZJTkVfVU5RVU9URUQoW1BPU0lYX1NIRUxMXSwgWyIke1BPU0lYX1NIRUxMfSJdLAotICAgICAgICAgICAgW2RlZmluZSB0byBhIHdvcmtpbmcgUE9TSVggY29tcGxpYW50IHNoZWxsXSkKLSAgIEFDX1NVQlNUKFtQT1NJWF9TSEVMTF0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy42LjEzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNi4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTZkNDJhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNi4xMy5iYgpAQCAtMCwwICsxLDY3IEBACitTVU1NQVJZID0gIkdOVSBUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHkgTGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nbnV0bHMvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL3NhdmFubmFoLmdudS5vcmcvc3VwcG9ydC8/Z3JvdXA9Z251dGxzIgorCitMSUNFTlNFID0gIkdQTHYzKyAmIExHUEx2Mi4xKyIKK0xJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgorTElDRU5TRV8ke1BOfS14eCA9ICJMR1BMdjIuMSsiCitMSUNFTlNFXyR7UE59LWJpbiA9ICJHUEx2MysiCitMSUNFTlNFXyR7UE59LW9wZW5zc2wgPSAiR1BMdjMrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03MTM5MWM4ZTBjMWNmZTY4MDc3ZTdmY2UzYjU4NjI4MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvQ09QWUlORzttZDU9YzY3ODk1N2IwYzhlOTY0YWE2YzcwZmQ3NzY0MWE3MWUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL0NPUFlJTkcuTEVTU0VSO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKKworREVQRU5EUyA9ICJuZXR0bGUgZ21wIHZpcnR1YWwvbGliaWNvbnYgbGlidW5pc3RyaW5nIgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBhcmdwLXN0YW5kYWxvbmUiCisKK1NIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgorCitTUkNfVVJJID0gImh0dHBzOi8vd3d3LmdudXBnLm9yZy9mdHAvZ2NyeXB0L2dudXRscy92JHtTSFJUX1ZFUn0vZ251dGxzLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9hcm1fZWFiaS5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiYjFmZTY5NmExMTU0MzQzMzc4NWI0ZmM3MGNhMjI1ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzMjA0MWRmNDQ3ZDlmNDY0NDU3MGNmNTczYzlmNjAzNThlODY1NjM3ZDY5YjdlNTlkMTE1OWI3MjQwYjUyZjM4IgorCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIHBrZ2NvbmZpZyBnZXR0ZXh0IGxpYl9wYWNrYWdlIGd0ay1kb2MKKworUEFDS0FHRUNPTkZJRyA/Pz0gImxpYmlkbiIKKworIyBZb3UgbXVzdCBhbHNvIGhhdmUgQ09ORklHX1NFQ0NPTVAgZW5hYmxlZCBpbiB0aGUga2VybmVsIGZvcgorIyBzZWNjb21wIHRvIHdvcmsuCitQQUNLQUdFQ09ORklHW3NlY2NvbXBdID0gImFjX2N2X2xpYnNlY2NvbXA9eWVzLGFjX2N2X2xpYnNlY2NvbXA9bm8sbGlic2VjY29tcCIKK1BBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICItLXdpdGgtaWRuLC0td2l0aG91dC1pZG4sbGliaWRuMiIKK1BBQ0tBR0VDT05GSUdbbGlidGFzbjFdID0gIi0td2l0aC1pbmNsdWRlZC1saWJ0YXNuMT1ubywtLXdpdGgtaW5jbHVkZWQtbGlidGFzbjEsbGlidGFzbjEiCitQQUNLQUdFQ09ORklHW3AxMS1raXRdID0gIi0td2l0aC1wMTEta2l0LC0td2l0aG91dC1wMTEta2l0LHAxMS1raXQiCitQQUNLQUdFQ09ORklHW3RwbV0gPSAiLS13aXRoLXRwbSwtLXdpdGhvdXQtdHBtLHRyb3VzZXJzIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWVuYWJsZS1kb2MgXAorICAgIC0tZGlzYWJsZS1saWJkYW5lIFwKKyAgICAtLWRpc2FibGUtZ3VpbGUgXAorICAgIC0tZGlzYWJsZS1ycGF0aCBcCisgICAgLS1lbmFibGUtbG9jYWwtbGlib3B0cyBcCisgICAgLS1lbmFibGUtb3BlbnNzbC1jb21wYXRpYmlsaXR5IFwKKyAgICAtLXdpdGgtbGlicHRocmVhZC1wcmVmaXg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCisgICAgLS13aXRoLWRlZmF1bHQtdHJ1c3Qtc3RvcmUtZmlsZT0ke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0IFwKKyIKKworIyBPdGhlcndpc2UgdGhlIHRvb2xzIHRyeSBhbmQgdXNlIEhPU1RUT09MU19ESVIvYmFzaCBhcyBhIHNoZWxsLgorZXhwb3J0IFBPU0lYX1NIRUxMPSIke2Jhc2VfYmluZGlyfS9zaCIKKworTERGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbGFyZ3AiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCWZvciBkaXIgaW4gLiBsaWI7IGRvCisJCXJtIC1mICR7ZGlyfS9hY2xvY2FsLm00ICR7ZGlyfS9tNC9saWJ0b29sLm00ICR7ZGlyfS9tNC9sdCoubTQKKwlkb25lCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1vcGVuc3NsICR7UE59LXh4IgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9nbnV0bHMtY2xpLWRlYnVnIgorRklMRVNfJHtQTn0tb3BlbnNzbCA9ICIke2xpYmRpcn0vbGliZ251dGxzLW9wZW5zc2wuc28uKiIKK0ZJTEVTXyR7UE59LXh4ID0gIiR7bGliZGlyfS9saWJnbnV0bHN4eC5zby4qIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy42LjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy42LjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5MjcwNjMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNi44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotU1VNTUFSWSA9ICJHTlUgVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IExpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ251dGxzLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9zYXZhbm5haC5nbnUub3JnL3N1cHBvcnQvP2dyb3VwPWdudXRscyIKLQotTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMdjIuMSsiCi1MSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKLUxJQ0VOU0VfJHtQTn0teHggPSAiTEdQTHYyLjErIgotTElDRU5TRV8ke1BOfS1iaW4gPSAiR1BMdjMrIgotTElDRU5TRV8ke1BOfS1vcGVuc3NsID0gIkdQTHYzKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzEzOTFjOGUwYzFjZmU2ODA3N2U3ZmNlM2I1ODYyODMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL0NPUFlJTkc7bWQ1PWM2Nzg5NTdiMGM4ZTk2NGFhNmM3MGZkNzc2NDFhNzFlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9DT1BZSU5HLkxFU1NFUjttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMiCi0KLURFUEVORFMgPSAibmV0dGxlIGdtcCB2aXJ0dWFsL2xpYmljb252IGxpYnVuaXN0cmluZyIKLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIgotCi1TSFJUX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfS4ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKLQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5nbnVwZy5vcmcvZnRwL2djcnlwdC9nbnV0bHMvdiR7U0hSVF9WRVJ9L2dudXRscy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vYXJtX2VhYmkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcG9zaXgtc2hlbGwucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWRjZjBhYTQ1ZDFhNDJlMWIzY2E1ZDM5ZWM3YzYxYTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWE4MTk0NGU1NjM1ZGU5ODExNzE3NzI4NTdlNzJiZTIzMWE3ZTBmNTU5YWUwMjkyZDI3MzdkZTQ3NTM4M2U4MyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBwa2djb25maWcgZ2V0dGV4dCBsaWJfcGFja2FnZSBndGstZG9jCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJsaWJpZG4iCi0KLSMgWW91IG11c3QgYWxzbyBoYXZlIENPTkZJR19TRUNDT01QIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBmb3IKLSMgc2VjY29tcCB0byB3b3JrLgotUEFDS0FHRUNPTkZJR1tzZWNjb21wXSA9ICJhY19jdl9saWJzZWNjb21wPXllcyxhY19jdl9saWJzZWNjb21wPW5vLGxpYnNlY2NvbXAiCi1QQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS13aXRoLWlkbiwtLXdpdGhvdXQtaWRuLGxpYmlkbjIiCi1QQUNLQUdFQ09ORklHW2xpYnRhc24xXSA9ICItLXdpdGgtaW5jbHVkZWQtbGlidGFzbjE9bm8sLS13aXRoLWluY2x1ZGVkLWxpYnRhc24xLGxpYnRhc24xIgotUEFDS0FHRUNPTkZJR1twMTEta2l0XSA9ICItLXdpdGgtcDExLWtpdCwtLXdpdGhvdXQtcDExLWtpdCxwMTEta2l0IgotUEFDS0FHRUNPTkZJR1t0cG1dID0gIi0td2l0aC10cG0sLS13aXRob3V0LXRwbSx0cm91c2VycyIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1lbmFibGUtZG9jIFwKLSAgICAtLWRpc2FibGUtbGliZGFuZSBcCi0gICAgLS1kaXNhYmxlLWd1aWxlIFwKLSAgICAtLWRpc2FibGUtcnBhdGggXAotICAgIC0tZW5hYmxlLWxvY2FsLWxpYm9wdHMgXAotICAgIC0tZW5hYmxlLW9wZW5zc2wtY29tcGF0aWJpbGl0eSBcCi0gICAgLS13aXRoLWxpYnB0aHJlYWQtcHJlZml4PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gXAotICAgIC0td2l0aC1kZWZhdWx0LXRydXN0LXN0b3JlLWZpbGU9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCBcCi0iCi0KLSMgT3RoZXJ3aXNlIHRoZSB0b29scyB0cnkgYW5kIHVzZSBIT1NUVE9PTFNfRElSL2Jhc2ggYXMgYSBzaGVsbC4KLWV4cG9ydCBQT1NJWF9TSEVMTD0iJHtiYXNlX2JpbmRpcn0vc2giCi0KLUxERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWxhcmdwIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQlmb3IgZGlyIGluIC4gbGliOyBkbwotCQlybSAtZiAke2Rpcn0vYWNsb2NhbC5tNCAke2Rpcn0vbTQvbGlidG9vbC5tNCAke2Rpcn0vbTQvbHQqLm00Ci0JZG9uZQotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tb3BlbnNzbCAke1BOfS14eCIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vZ251dGxzLWNsaS1kZWJ1ZyIKLUZJTEVTXyR7UE59LW9wZW5zc2wgPSAiJHtsaWJkaXJ9L2xpYmdudXRscy1vcGVuc3NsLnNvLioiCi1GSUxFU18ke1BOfS14eCA9ICIke2xpYmRpcn0vbGliZ251dGxzeHguc28uKiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjEvZml4LWd0a2RvYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xL2ZpeC1ndGtkb2MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmYzliOWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjEvZml4LWd0a2RvYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmNvbS9nbnV0bHMvbGlidGFzbjEvbWVyZ2VfcmVxdWVzdHMvNDldCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIGViZDRmODcxYjUyNDE4MDlmNmE1YjQ2MTQ0NGE2ZDMzMWUxNWM5NDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotRGF0ZTogTW9uLCA5IFNlcCAyMDE5IDEzOjExOjM5ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGRvYy9yZWZlcmVuY2U6IGRvbid0IGFkZCBlbXB0eSBvYmplY3QgaGllcmFyY2h5IGNoYXB0ZXIKLQotVGhlIG9iamVjdCBoaWVyYXJjaHkgc2VjdGlvbiBpcyBlbXB0eSBiZWNhdXNlIHRoZXJlIGFyZSBubyBHT2JqZWN0cyBpbiB0aGUKLWxpYnRhc24xIEFQSS4gIFdpdGggZ3RrLWRvYyAxLjMwIG9ud2FyZHMgaWYgdGhlcmUgYXJlIG5vIG9iamVjdHMgdGhlbiB0aGUgb2JqZWN0Ci1oaWVyYXJjaHkgZmlsZSB3b24ndCBleGlzdCwgcmVzdWx0aW5nIGluIGEgZmFpbHVyZSB3aGVuIGJ1aWxkaW5nIHRoZQotZG9jdW1lbnRhdGlvbjoKLQotfCAuLi9saWJ0YXNuMS1kb2NzLnhtbDozOTogZWxlbWVudCBpbmNsdWRlOiBYSW5jbHVkZSBlcnJvciA6IGNvdWxkIG5vdCBsb2FkIC4uL3htbC90cmVlX2luZGV4LnNnbWwsIGFuZCBubyBmYWxsYmFjayB3YXMgZm91bmQKLQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLS0tLQotIGRvYy9yZWZlcmVuY2UvbGlidGFzbjEtZG9jcy54bWwgfCA0IC0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2RvYy9yZWZlcmVuY2UvbGlidGFzbjEtZG9jcy54bWwgYi9kb2MvcmVmZXJlbmNlL2xpYnRhc24xLWRvY3MueG1sCi1pbmRleCBhY2NkYjg1Li5mODhiODg4IDEwMDY0NAotLS0tIGEvZG9jL3JlZmVyZW5jZS9saWJ0YXNuMS1kb2NzLnhtbAotKysrIGIvZG9jL3JlZmVyZW5jZS9saWJ0YXNuMS1kb2NzLnhtbAotQEAgLTM0LDEwICszNCw2IEBACi0gICAgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvbGlidGFzbjEueG1sIi8+Ci0gCi0gICA8L2NoYXB0ZXI+Ci0tICA8Y2hhcHRlciBpZD0ib2JqZWN0LXRyZWUiPgotLSAgICA8dGl0bGU+T2JqZWN0IEhpZXJhcmNoeTwvdGl0bGU+Ci0tICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC90cmVlX2luZGV4LnNnbWwiLz4KLS0gIDwvY2hhcHRlcj4KLSAgIDxpbmRleCBpZD0iYXBpLWluZGV4LWZ1bGwiPgotICAgICA8dGl0bGU+QVBJIEluZGV4PC90aXRsZT4KLSAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2FwaS1pbmRleC1mdWxsLnhtbCI+PHhpOmZhbGxiYWNrIC8+PC94aTppbmNsdWRlPgotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjEvZml4LWxkZmxhZ3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMS9maXgtbGRmbGFncy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE4ZjNjNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMS9maXgtbGRmbGFncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gYTZmOTNiN2FjZTM0N2JjNGZlMjllYjRhOGZlNDM4M2Q3ODZjYzhkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9UaW09MjBSPUMzPUJDaHNlbj89IDx0aW0ucnVlaHNlbkBnbXguZGU+Ci1EYXRlOiBUdWUsIDIzIEp1bCAyMDE5IDIwOjQ0OjAxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBMREZMQUdTIHRvIEFNX0xERkxBR1MgaW4gc3JjL01ha2VmaWxlLmFtCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVNpZ25lZC1vZmYtYnk6IFRpbSBSw7xoc2VuIDx0aW0ucnVlaHNlbkBnbXguZGU+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotLS0tCi0gc3JjL01ha2VmaWxlLmFtIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCA1YmYzNjIyLi40NDU5NzY3IDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC0yMSw3ICsyMSw3IEBAIEFNX0NQUEZMQUdTID0gLUkkKHRvcF9idWlsZGRpcikvbGliL2luY2x1ZGVzIC1JJCh0b3Bfc3JjZGlyKS9saWIvaW5jbHVkZXMgXAotICAtSSQodG9wX2J1aWxkZGlyKS9saWIvZ2wgLUkkKHRvcF9zcmNkaXIpL2xpYi9nbCAkKENPREVfQ09WRVJBR0VfQ1BQRkxBR1MpCi0gCi0gTERBREQgPSAuLi9saWIvbGlidGFzbjEubGEKLS1MREZMQUdTID0gJChDT0RFX0NPVkVSQUdFX0xERkxBR1MpCi0rQU1fTERGTEFHUyA9ICQoQ09ERV9DT1ZFUkFHRV9MREZMQUdTKQotIAotIGJpbl9QUk9HUkFNUyA9IGFzbjFQYXJzZXIgYXNuMUNvZGluZyBhc24xRGVjb2RpbmcKLSAKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjJjMTk1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIEFTTi4xIGFuZCBERVIgbWFuaXB1bGF0aW9uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnRhc24xLyIKLQotTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMdjIuMSsiCi1MSUNFTlNFXyR7UE59LWJpbiA9ICJHUEx2MysiCi1MSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvQ09QWUlORy5MRVNTRVI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTc1YWMxMDBlYzkyM2Y5NTk4OTgxODIzMDc5NzBjMzYwIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGlidGFzbjEvbGlidGFzbjEtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1sZGZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1ndGtkb2MucGF0Y2ggXAotICAgICAgICAgICAiCi0KLURFUEVORFMgPSAiYmlzb24tbmF0aXZlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTk5MTgyMDBlZDRhNzc4ZTJiM2NiZTM0YzFiZTQyMDUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWU2MDRiYTVjNWM4ZWE0MDM0ODc2OTVjMmU0MDc0MDU4MjBkOTg1NDBkOWRlODg0ZDZlODQ0ZjlhOWM1YmEwOCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBsaWJfcGFja2FnZSBndGstZG9jCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTYuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzM3YjcwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjFfNC4xNi4wLmJiCkBAIC0wLDAgKzEsMjQgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgQVNOLjEgYW5kIERFUiBtYW5pcHVsYXRpb24iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlidGFzbjEvIgorCitMSUNFTlNFID0gIkdQTHYzKyAmIExHUEx2Mi4xKyIKK0xJQ0VOU0VfJHtQTn0tYmluID0gIkdQTHYzKyIKK0xJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9DT1BZSU5HLkxFU1NFUjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRTttZDU9NzVhYzEwMGVjOTIzZjk1OTg5ODE4MjMwNzk3MGMzNjAiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9saWJ0YXNuMS9saWJ0YXNuMS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAorICAgICAgICAgICAiCisKK0RFUEVORFMgPSAiYmlzb24tbmF0aXZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTMxMjA4ZGUzNzI5ZDQyZTJhZjBhMzI4OTBmMDg3MzYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGUwZmIwOTAzODM5MTE3Y2I2ZTNiNTZlNjgyMjI3NzFiZWJmMjJhZDdmYzIyOTVhMGVkN2Q1NzZlOGQ0MzI5ZCIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBsaWJfcGFja2FnZSBndGstZG9jCisKK0NGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtc3RkPWdudTk5IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvMDAwMS1GaXgtYmlnLWVuZGlhbi1idWlsZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLUZpeC1iaWctZW5kaWFuLWJ1aWxkLnBhdGNoCmluZGV4IGVmYjI3YWUuLjkxZDY4ODQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLUZpeC1iaWctZW5kaWFuLWJ1aWxkLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLUZpeC1iaWctZW5kaWFuLWJ1aWxkLnBhdGNoCkBAIC02LDIzICs2LDIzIEBACiBCdWctcmVwb3J0OiBodHRwczovL3VuaWNvZGUtb3JnLmF0bGFzc2lhbi5uZXQvYnJvd3NlL0lDVS0yMDUzMwogUGF0Y2ggdGFrZW4gZnJvbTogaHR0cHM6Ly9idWdzLmdlbnRvby5vcmcvNjgyMTcwCiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworaXQgaXMgYXBwbGllZCB1cHN0cmVhbSBhbmQgd2lsbCBiZSBpbiB2ZXJzaW9uIDY3KworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC80YTNhNDU3YjM4Y2Q4MjhiN2IzZmE0ZmRiYzZlMjUwNGE1NzI3NWU5XQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAtLS0KICBkYXRhL01ha2VmaWxlLmluIHwgMyArKy0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9zb3VyY2UvZGF0YS9NYWtlZmlsZS5pbiBiL3NvdXJjZS9kYXRhL01ha2VmaWxlLmluCi1pbmRleCA3NzhiNmM3Li42NzIwM2U3IDEwMDY0NAogLS0tIGEvZGF0YS9NYWtlZmlsZS5pbgogKysrIGIvZGF0YS9NYWtlZmlsZS5pbgotQEAgLTE0OCw3ICsxNDgsOCBAQCBJQ1VEQVRBX0FSQ0hJVkUgPSAkKGZpcnN0d29yZCAkKHdpbGRjYXJkICQoc3JjZGlyKS9pbi8kKElDVURBVEFfQkFTRU5BTUVfVkVSU0lPTgotICMgYW5kIGNvbnZlcnQgaXQgdG8gdGhlIGN1cnJlbnQgdHlwZS4KLSBpZm5lcSAoJChJQ1VEQVRBX0FSQ0hJVkUpLCkKLSBJQ1VEQVRBX1NPVVJDRV9BUkNISVZFID0gJChPVVRESVIpLyQoSUNVREFUQV9QTEFURk9STV9OQU1FKS5kYXQKLS0kKElDVURBVEFfU09VUkNFX0FSQ0hJVkUpOiAkKElDVURBVEFfQVJDSElWRSkgJChPVVRESVIpCi0rJChJQ1VEQVRBX1NPVVJDRV9BUkNISVZFKTogJChJQ1VEQVRBX0FSQ0hJVkUpCi0rCSQoTUtJTlNUQUxMRElSUykgJChPVVRESVIpCi0gCSQoSU5WT0tFKSAkKFRPT0xCSU5ESVIpL2ljdXBrZyAtdCQoSUNVREFUQV9DSEFSKSAkKElDVURBVEFfQVJDSElWRSkgJChJQ1VEQVRBX1NPVVJDRV9BUkNISVZFKQotIGVuZGlmCi0gZWxzZQorQEAgLTE0OCw3ICsxNDgsOCBAQCBJQ1VEQVRBX0FSQ0hJVkUgPSAkKGZpcnN0d29yZCAkKHdpbGRjYXJkCisgIyBhbmQgY29udmVydCBpdCB0byB0aGUgY3VycmVudCB0eXBlLg0KKyBpZm5lcSAoJChJQ1VEQVRBX0FSQ0hJVkUpLCkNCisgSUNVREFUQV9TT1VSQ0VfQVJDSElWRSA9ICQoT1VURElSKS8kKElDVURBVEFfUExBVEZPUk1fTkFNRSkuZGF0DQorLSQoSUNVREFUQV9TT1VSQ0VfQVJDSElWRSk6ICQoSUNVREFUQV9BUkNISVZFKSAkKE9VVERJUikNCisrJChJQ1VEQVRBX1NPVVJDRV9BUkNISVZFKTogJChJQ1VEQVRBX0FSQ0hJVkUpDQorKwkkKE1LSU5TVEFMTERJUlMpICQoT1VURElSKQ0KKyAJJChJTlZPS0UpICQoVE9PTEJJTkRJUikvaWN1cGtnIC10JChJQ1VEQVRBX0NIQVIpICQoSUNVREFUQV9BUkNISVZFKSAkKElDVURBVEFfU09VUkNFX0FSQ0hJVkUpDQorIGVuZGlmDQorIGVsc2UNCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvZmlsdGVyLmpzb24gYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvZmlsdGVyLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM2M2MwOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS9maWx0ZXIuanNvbgpAQCAtMCwwICsxLDIgQEAKK3sKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV82NC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzY0LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwYmFjN2EuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzY0LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1yZXF1aXJlIGljdS5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vTElDRU5TRTttZDU9OGJjNWQzMjA1MmE5NmYyMTRjYmRkMWU1M2RmYzkzNWQiCi0KLWRlZiBpY3VfZG93bmxvYWRfdmVyc2lvbihkKToKLSAgICBwdnNwbGl0ID0gZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKQotICAgIHJldHVybiBwdnNwbGl0WzBdICsgIl8iICsgcHZzcGxpdFsxXQotCi1JQ1VfUFYgPSAiJHtAaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCl9IgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDQ4Ni8KLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi0KLUJBU0VfU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuaWN1LXByb2plY3Qub3JnL2ZpbGVzL2ljdTRjLyR7UFZ9L2ljdTRjLSR7SUNVX1BWfS1zcmMudGd6IgotU1JDX1VSSSA9ICIke0JBU0VfU1JDX1VSSX0gXAotICAgICAgICAgICBmaWxlOi8vaWN1LXBrZ2RhdGEtbGFyZ2UtY21kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1pbnN0YWxsLW1hbngucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYmlnLWVuZGlhbi1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWljdS1BZGRlZC1hcm1lYi1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLUxERkxBR1NJQ1VEVC1mb3ItTGludXgucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhM2QxODIxM2JlZWM0NTRlM2NkZWM5YTMxMTZkNmIwNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MjdkNWQ4NDc4ZTZkOTZmYzhjOTBmZWQ0ODUxMjM5MDc5YTU2MWE2YThiOWU0OGIwODkyZjI0ZTgyZDMxZDZjIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykvIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5pY3UtcHJvamVjdC5vcmcvZmlsZXMvaWN1NGMvIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzY2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNjYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmJiMzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzY2LjEuYmIKQEAgLTAsMCArMSw2NiBAQAorcmVxdWlyZSBpY3UuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0xJQ0VOU0U7bWQ1PWEzODA4YTViNzAwNzFiMDdmODdmZjIyMDVlNGQ3NWEwIgorCitkZWYgaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCk6CisgICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKKyAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KKworZGVmIGljdV9kb3dubG9hZF9mb2xkZXIoZCk6CisgICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKKyAgICByZXR1cm4gcHZzcGxpdFswXSArICItIiArIHB2c3BsaXRbMV0KKworSUNVX1BWID0gIiR7QGljdV9kb3dubG9hZF92ZXJzaW9uKGQpfSIKK0lDVV9GT0xERVIgPSAiJHtAaWN1X2Rvd25sb2FkX2ZvbGRlcihkKX0iCisKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwNDg2LworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKKworQkFTRV9TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvcmVsZWFzZXMvZG93bmxvYWQvcmVsZWFzZS0ke0lDVV9GT0xERVJ9L2ljdTRjLSR7SUNVX1BWfS1zcmMudGd6IgorREFUQV9TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvcmVsZWFzZXMvZG93bmxvYWQvcmVsZWFzZS0ke0lDVV9GT0xERVJ9L2ljdTRjLSR7SUNVX1BWfS1kYXRhLnppcCIKK1NSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9O25hbWU9Y29kZSBcCisgICAgICAgICAgICR7REFUQV9TUkNfVVJJfTtuYW1lPWRhdGEgXAorICAgICAgICAgICBmaWxlOi8vZmlsdGVyLmpzb24gXAorICAgICAgICAgICBmaWxlOi8vaWN1LXBrZ2RhdGEtbGFyZ2UtY21kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1pbnN0YWxsLW1hbngucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYmlnLWVuZGlhbi1idWlsZC5wYXRjaDthcHBseT1ubyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWljdS1BZGRlZC1hcm1lYi1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLUxERkxBR1NJQ1VEVC1mb3ItTGludXgucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbY29kZS5zaGEyNTZzdW1dID0gIjUyYTNmMjIwOWFiOTU1NTljMWNmMGExNGYyNDMzODAwMWYzODk2MTViZjAwZTI1ODVlZjNkYmM0M2VjZjBhMmUiCitTUkNfVVJJW2RhdGEuc2hhMjU2c3VtXSA9ICI4YmU2NDdmNzM4ODkxZDJiZWI3OWQ0OGY5OTA3N2IzNDk5OTQ4NDMwZWFlNmYxYmUxMTI1NTNiMTVhYjAyNDNlIgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJpY3U0Yy0oP1A8cHZlcj5cZCsoX1xkKykrKS1zcmMiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9yZWxlYXNlcyIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIGFjX2N2X2Z1bmNfc3RydG9kX2w9bm8iCisKK2RvX21ha2VfaWN1ZGF0YV9jbGFzcy10YXJnZXQgKCkgeworICAgIGNkICR7U30KKyAgICBybSAtcmYgZGF0YQorICAgIGNwIC1hICR7V09SS0RJUn0vZGF0YSAuCisgICAgcGF0Y2ggLXAxIDwgJHtXT1JLRElSfS8wMDAxLUZpeC1iaWctZW5kaWFuLWJ1aWxkLnBhdGNoCisgICAgQVI9JyR7QlVJTERfQVJ9JyBcCisgICAgQ0M9JyR7QlVJTERfQ0N9JyBcCisgICAgQ1BQPScke0JVSUxEX0NQUH0nIFwKKyAgICBDWFg9JyR7QlVJTERfQ1hYfScgXAorICAgIFJBTkxJQj0nJHtCVUlMRF9SQU5MSUJ9JyBcCisgICAgQ0ZMQUdTPScke0JVSUxEX0NGTEFHU30nIFwKKyAgICBDUFBGTEFHUz0nJHtCVUlMRF9DUFBGTEFHU30nIFwKKyAgICBDWFhGTEFHUz0nJHtCVUlMRF9DWFhGTEFHU30nIFwKKyAgICBMREZMQUdTPScke0JVSUxEX0xERkxBR1N9JyBcCisgICAgSUNVX0RBVEFfRklMVEVSX0ZJTEU9JHtXT1JLRElSfS9maWx0ZXIuanNvbiBcCisgICAgLi9ydW5Db25maWd1cmVJQ1UgTGludXggLS13aXRoLWRhdGEtcGFja2FnaW5nPWFyY2hpdmUKKyAgICBvZV9ydW5tYWtlICR7UEFSQUxMRUxfTUFLRX0KKyAgICBpbnN0YWxsIC1EbTY0NCAke1N9L2RhdGEvb3V0L2ljdWR0JHtJQ1VfTUFKT1JfVkVSfWwuZGF0ICR7U30vZGF0YS9pbi9pY3VkdCR7SUNVX01BSk9SX1ZFUn1sLmRhdAorfQorCitkb19tYWtlX2ljdWRhdGEoKSB7CisgICAgOgorfQorCithZGR0YXNrIG1ha2VfaWN1ZGF0YSBiZWZvcmUgZG9fY29uZmlndXJlIGFmdGVyIGRvX3BhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pdHN0b29sL2l0c3Rvb2wvMDAwMS1OYXRpdmUtRG9uLXQtdXNlLWJ1aWxkLXRpbWUtaGFyZGNvZGVkLXB5dGhvbi1iaW5hcnktLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pdHN0b29sL2l0c3Rvb2wvMDAwMS1OYXRpdmUtRG9uLXQtdXNlLWJ1aWxkLXRpbWUtaGFyZGNvZGVkLXB5dGhvbi1iaW5hcnktLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pdHN0b29sL2l0c3Rvb2wvMDAwMS1OYXRpdmUtRG9uLXQtdXNlLWJ1aWxkLXRpbWUtaGFyZGNvZGVkLXB5dGhvbi1iaW5hcnktLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2l0c3Rvb2wvaXRzdG9vbC8wMDAxLU5hdGl2ZS1Eb24tdC11c2UtYnVpbGQtdGltZS1oYXJkY29kZWQtcHl0aG9uLWJpbmFyeS0ucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2l0c3Rvb2wvaXRzdG9vbC8wMDAyLURvbi10LXVzZS1idWlsZC10aW1lLWhhcmRjb2RlZC1weXRob24tYmluYXJ5LXBhdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2l0c3Rvb2wvaXRzdG9vbC8wMDAyLURvbi10LXVzZS1idWlsZC10aW1lLWhhcmRjb2RlZC1weXRob24tYmluYXJ5LXBhdGgucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2l0c3Rvb2wvaXRzdG9vbC8wMDAyLURvbi10LXVzZS1idWlsZC10aW1lLWhhcmRjb2RlZC1weXRob24tYmluYXJ5LXBhdGgucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaXRzdG9vbC9pdHN0b29sLzAwMDItRG9uLXQtdXNlLWJ1aWxkLXRpbWUtaGFyZGNvZGVkLXB5dGhvbi1iaW5hcnktcGF0aC5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pdHN0b29sL2l0c3Rvb2xfMi4wLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2l0c3Rvb2wvaXRzdG9vbF8yLjAuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjM1OGY0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pdHN0b29sL2l0c3Rvb2xfMi4wLjYuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJJVFMgVG9vbCBhbGxvd3MgeW91IHRvIHRyYW5zbGF0ZSB5b3VyIFhNTCBkb2N1bWVudHMgd2l0aCBQTyBmaWxlcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9pdHN0b29sLm9yZy8iCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTljNTdiOTVmZDdkMGU5ZTIzOGViYmM3YWQ0N2M1YTUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB5dGhvbjNuYXRpdmUKKworREVQRU5EUyA9ICJsaWJ4bWwyLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vZmlsZXMuaXRzdG9vbC5vcmcvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vMDAwMS1OYXRpdmUtRG9uLXQtdXNlLWJ1aWxkLXRpbWUtaGFyZGNvZGVkLXB5dGhvbi1iaW5hcnktLnBhdGNoIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBmaWxlOi8vMDAwMS1OYXRpdmUtRG9uLXQtdXNlLWJ1aWxkLXRpbWUtaGFyZGNvZGVkLXB5dGhvbi1iaW5hcnktLnBhdGNoIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vMDAwMi1Eb24tdC11c2UtYnVpbGQtdGltZS1oYXJkY29kZWQtcHl0aG9uLWJpbmFyeS1wYXRoLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDMwNmVlYmE0ZjRhZWU2YjM5M2QxNGY5YzNjNTdjYTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjIzM2NjMjI3MjZhOWE1YTgzNjY0YmY2N2QxYWY3OTU0OWEyOThjMjMxODVkOTI2YzM2NzdhZmE5MTdiOTJhOSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitSREVQRU5EU18ke1BOfSArPSAibGlieG1sMi1weXRob24iCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuXzIuNS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuXzIuNS4zLmJiCmluZGV4IDZmYjNkMmYuLjUyYjRjMGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXNzdWFuL2xpYmFzc3Vhbl8yLjUuMy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW5fMi41LjMuYmIKQEAgLTIyLDExICsyMiwxNSBAQAogCiBCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2xpYmFzc3Vhbi1jb25maWciCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnIG11bHRpbGliX2hlYWRlcgogCiBkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CiAJIyBFbHNlIHRoZXNlIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKIAlybSAtZiAke1N9L200LyoubTQKIH0KIAorZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIG9lX211bHRpbGliX2hlYWRlciBhc3N1YW4uaAorfQorCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC4xMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuMTAuMC5iYgppbmRleCBlYWYyNDRhLi4zYjlhYzVhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC4xMC4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjEwLjAuYmIKQEAgLTcsNyArNyw3IEBACiAgICAgICAgICAgICAgICBwcm9qZWN0cyB3aXRoIHN0cm9uZyBCU0Qgb3JpZ2lucywgd2l0aG91dCBuZWVkaW5nIHRvIGVtYmVkIHRoZSBzYW1lIFwKICAgICAgICAgICAgICAgIGNvZGUgb3ZlciBhbmQgb3ZlciBhZ2FpbiBvbiBlYWNoIHByb2plY3QuIgogCi1IT01FUEFHRSA9ICJodHRwOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy93aWtpLyIKK0hPTUVQQUdFID0gImh0dHBzOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy93aWtpLyIKICMgVGhlcmUgc2VlbXMgdG8gYmUgbW9yZSBsaWNlbnNlcyB1c2VkIGluIHRoZSBjb2RlLCBJIGRvbid0IHRoaW5rIHdlIHdhbnQgdG8gbGlzdCB0aGVtIGFsbCBoZXJlLCBjb21wbGV0ZSBsaXN0OgogIyBPRSBAIH4vcHJvamVjdHMvbGliYnNkICQgZ3JlcCBeTGljZW5zZTogQ09QWUlORyAgfCBzb3J0IC11CiAjIExpY2Vuc2U6IEJTRC0yLWNsYXVzZQpAQCAtMzEsNyArMzEsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjEyMGJlMDE3MzQ2OWEwNmVkMTg1YjY4OGUwZTFhZTAiCiBTRUNUSU9OID0gImxpYnMiCiAKLVNSQ19VUkkgPSAiaHR0cDovL2xpYmJzZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJlYWQ5NmQyNDBkMDJmYWE1YjkyMWMwYWE1MGM4MTJiNSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIzNGI4YWRjNzI2ODgzZDBlODViMzExOGZhMTM2MDVlMTc5YTYyYjMxYmE1MWY2NzYxMzZlY2IyZDBiYzFhODg3IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZy5pbmMKaW5kZXggYWVjODM4OS4uMDAyOTE1YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC1uZy9saWJjYXAtbmcuaW5jCkBAIC05LDYgKzksOCBAQAogCiBTUkNfVVJJID0gImh0dHA6Ly9wZW9wbGUucmVkaGF0LmNvbS9zZ3J1YmIvbGliY2FwLW5nL2xpYmNhcC1uZy0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vcHl0aG9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWFkZC1saWJyYXJ5LWlmLWhlYWRlci1mb3VuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLVdyYXAtcHRocmVhZF9hdGZvcmstdXNhZ2UtaW4tSEFWRV9QVEhSRUFEX0gucGF0Y2ggXAogIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiNTdkYzI2N2UyOTQ5Y2RlY2I2NTFhOTI5ZjkyMDY1NzIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC1uZy9saWJjYXAtbmcvMDAwMS1jb25maWd1cmUuYWMtYWRkLWxpYnJhcnktaWYtaGVhZGVyLWZvdW5kLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nLzAwMDEtY29uZmlndXJlLmFjLWFkZC1saWJyYXJ5LWlmLWhlYWRlci1mb3VuZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjE1NWNjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nLzAwMDEtY29uZmlndXJlLmFjLWFkZC1saWJyYXJ5LWlmLWhlYWRlci1mb3VuZC5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDAyMzBlMmUzNzRiYjcxYWVkMDE4MWNjZDllYmQxM2MwYzUxMjVhNWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUcmV2b3IgV29lcm5lciA8dHdvZXJuZXJAZ21haWwuY29tPgorRGF0ZTogRnJpLCAyNSBPY3QgMjAxOSAxNzowMToyMCAtMDQwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IGFkZCBsaWJyYXJ5IGlmIGhlYWRlciBmb3VuZAorCitJZiB0aGUgcHRocmVhZC5oIGhlYWRlciBpcyBmb3VuZCwgbWFrZSBzdXJlIGxpYnJhcnkgY29udGFpbmluZworInB0aHJlYWRfYXRmb3JrIiBpcyBhZGRlZCB0byB0aGUgbGlzdCBvZiBsaWJyYXJpZXMgYWdhaW5zdCB3aGljaCB0byBsaW5rLgorT24gc29tZSBob3N0cyAoZS5nLiBvcGVuU1VTRSAxNS4xKSAiLWxwdGhyZWFkIiBuZWVkcyB0byBiZSBleHBsaWNpdGx5IGFkZGVkCitpbiBvcmRlciBmb3IgdGhlIGNvZGUgdG8gY29tcGlsZSBjb3JyZWN0bHkuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vc3RldmVncnViYi9saWJjYXAtbmcvcHVsbC8xMF0KK1NpZ25lZC1vZmYtYnk6IFRyZXZvciBXb2VybmVyIDx0d29lcm5lckBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA0ICsrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDYzMDg4ZjQuLjYzOWI0NjQgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTU2LDcgKzU2LDkgQEAgQUNfQ0hFQ0tfSEVBREVSUyhzeXMveGF0dHIuaCwgW10sIFsKKyAJQUNfQ0hFQ0tfSEVBREVSUyhhdHRyL3hhdHRyLmgsIFtdLCBbQUNfTVNHX1dBUk4oYXR0ci94YXR0ci5oIG5vdCBmb3VuZCwgZGlzYWJsaW5nIGZpbGUgc3lzdGVtIGNhcGFiaWxpdGllcy4pXSkKKyAJXSkKKyBBQ19DSEVDS19IRUFERVJTKGxpbnV4L3NlY3VyZWJpdHMuaCwgW10sIFtdKQorLUFDX0NIRUNLX0hFQURFUlMocHRocmVhZC5oLCBbXSwgW0FDX01TR19XQVJOKHB0aHJlYWQuaCBub3QgZm91bmQsIGRpc2FibGluZyBwdGhyZWFkX2F0Zm9yay4pXSkKKytBQ19DSEVDS19IRUFERVJTKHB0aHJlYWQuaCwKKysJW0FDX1NFQVJDSF9MSUJTKHB0aHJlYWRfYXRmb3JrLCBwdGhyZWFkKV0sCisrCVtBQ19NU0dfV0FSTihwdGhyZWFkLmggbm90IGZvdW5kLCBkaXNhYmxpbmcgcHRocmVhZF9hdGZvcmsuKV0pCisgCisgQUNfQ19DT05TVAorIEFDX0NfSU5MSU5FCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC1uZy9saWJjYXAtbmcvMDAwMi1XcmFwLXB0aHJlYWRfYXRmb3JrLXVzYWdlLWluLUhBVkVfUFRIUkVBRF9ILnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nLzAwMDItV3JhcC1wdGhyZWFkX2F0Zm9yay11c2FnZS1pbi1IQVZFX1BUSFJFQURfSC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjgyNTRmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nLzAwMDItV3JhcC1wdGhyZWFkX2F0Zm9yay11c2FnZS1pbi1IQVZFX1BUSFJFQURfSC5wYXRjaApAQCAtMCwwICsxLDI1IEBACitGcm9tIGQ5NWM0MDE4YWQ1N2MzN2Y2MjcyZGJlZGZhNTIxNzc3NjU2N2MzMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgorRGF0ZTogVHVlLCAyNiBOb3YgMjAxOSAyMjozNDozNCArMDUwMAorU3ViamVjdDogW1BBVENIXSBXcmFwIHB0aHJlYWRfYXRmb3JrIHVzYWdlIGluIEhBVkVfUFRIUkVBRF9ICisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KKy0tLQorIHNyYy9jYXAtbmcuYyB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvY2FwLW5nLmMgYi9zcmMvY2FwLW5nLmMKK2luZGV4IDM1ZmNkN2EuLjk3YTNkYmQgMTAwNjQ0CistLS0gYS9zcmMvY2FwLW5nLmMKKysrKyBiL3NyYy9jYXAtbmcuYworQEAgLTE2Niw3ICsxNjYsOSBAQCBzdGF0aWMgdm9pZCBkZWluaXQodm9pZCkKKyBzdGF0aWMgdm9pZCBpbml0X2xpYih2b2lkKSBfX2F0dHJpYnV0ZV9fICgoY29uc3RydWN0b3IpKTsKKyBzdGF0aWMgdm9pZCBpbml0X2xpYih2b2lkKQorIHsKKysjaWZkZWYgSEFWRV9QVEhSRUFEX0gKKyAJcHRocmVhZF9hdGZvcmsoTlVMTCwgTlVMTCwgZGVpbml0KTsKKysjZW5kaWYKKyB9CisgCisgc3RhdGljIHZvaWQgaW5pdCh2b2lkKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nXzAuNy4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZ18wLjcuMTAuYmIKaW5kZXggYTlhMDQ2NS4uNmU2ZGU0NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nXzAuNy4xMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC1uZy9saWJjYXAtbmdfMC43LjEwLmJiCkBAIC0zLDcgKzMsNiBAQAogaW5oZXJpdCBsaWJfcGFja2FnZSBhdXRvdG9vbHMKIAogRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtcHl0aG9uIC0td2l0aG91dC1weXRob24zIgotTERGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtcHRocmVhZCIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9maWxlcy8wMDAxLXRlc3RzLWRvLW5vdC1zdGF0aWNhbGx5LWxpbmstYS10ZXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAvZmlsZXMvMDAwMS10ZXN0cy1kby1ub3Qtc3RhdGljYWxseS1saW5rLWEtdGVzdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTY4Y2M0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAvZmlsZXMvMDAwMS10ZXN0cy1kby1ub3Qtc3RhdGljYWxseS1saW5rLWEtdGVzdC5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDExNzliNDIzY2NlOGQxMTliNDJjZWJmYjNkYWE3N2M1NDBmZGNhNDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTUgSmFuIDIwMjAgMTc6MTY6MjggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdHM6IGRvIG5vdCBzdGF0aWNhbGx5IGxpbmsgYSB0ZXN0CisKK1RoaXMgZmFpbHMgb24gZS5nLiBjZW50b3MgNworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHRlc3RzL01ha2VmaWxlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUgYi90ZXN0cy9NYWtlZmlsZQoraW5kZXggNzE2MmNmMC4uNmFmNDdhZiAxMDA2NDQKKy0tLSBhL3Rlc3RzL01ha2VmaWxlCisrKysgYi90ZXN0cy9NYWtlZmlsZQorQEAgLTI5LDcgKzI5LDcgQEAgcHN4X3Rlc3Rfd3JhcDogcHN4X3Rlc3QuYyAkKERFUFMpCisgcnVuX2xpYmNhcF9wc3hfdGVzdDogbGliY2FwX3BzeF90ZXN0CisgCisgbGliY2FwX3BzeF90ZXN0OiBsaWJjYXBfcHN4X3Rlc3QuYyAkKERFUFMpCistCSQoQ0MpICQoQ0ZMQUdTKSAkKElQQVRIKSAkPCAtbyAkQCAkKExJQkNBUExJQikgJChMSUJQU1hMSUIpIC1XbCwtd3JhcCxwdGhyZWFkX2NyZWF0ZSAtLXN0YXRpYworKwkkKENDKSAkKENGTEFHUykgJChJUEFUSCkgJDwgLW8gJEAgJChMSUJDQVBMSUIpICQoTElCUFNYTElCKSAtV2wsLXdyYXAscHRocmVhZF9jcmVhdGUKKyAKKyBjbGVhbjoKKyAJcm0gLWYgcHN4X3Rlc3QgcHN4X3Rlc3Rfd3JhcCBsaWJjYXBfcHN4X3Rlc3QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2ZpbGVzLzAwMDItdGVzdHMtZG8tbm90LXJ1bi10YXJnZXQtZXhlY3V0YWJsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9maWxlcy8wMDAyLXRlc3RzLWRvLW5vdC1ydW4tdGFyZ2V0LWV4ZWN1dGFibGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ZDEwOGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9maWxlcy8wMDAyLXRlc3RzLWRvLW5vdC1ydW4tdGFyZ2V0LWV4ZWN1dGFibGVzLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gNjMwOTU1NDIyNWUwNWU3NjE2N2VkYTRlMGRmMzgzZmIzZDFhNjJjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBEZWMgMjAxOSAxNjo1NDowNSArMDEwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0czogZG8gbm90IHJ1biB0YXJnZXQgZXhlY3V0YWJsZXMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKKy0tLQorIHRlc3RzL01ha2VmaWxlIHwgMyAtLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlIGIvdGVzdHMvTWFrZWZpbGUKK2luZGV4IDk1ZTRjYTYuLjcxNjJjZjAgMTAwNjQ0CistLS0gYS90ZXN0cy9NYWtlZmlsZQorKysrIGIvdGVzdHMvTWFrZWZpbGUKK0BAIC0xOSw4ICsxOSw2IEBAIHN1ZG90ZXN0OiB0ZXN0CisgaW5zdGFsbDogYWxsCisgCisgcnVuX3BzeF90ZXN0OiBwc3hfdGVzdCBwc3hfdGVzdF93cmFwCistCS4vcHN4X3Rlc3QKKy0JLi9wc3hfdGVzdF93cmFwCisgCisgcHN4X3Rlc3Q6IHBzeF90ZXN0LmMgJChERVBTKQorIAkkKENDKSAkKENGTEFHUykgJChJUEFUSCkgLUROT1dSQVAgJDwgLW8gJEAgJChMSUJQU1hMSUIpCitAQCAtMjksNyArMjcsNiBAQCBwc3hfdGVzdF93cmFwOiBwc3hfdGVzdC5jICQoREVQUykKKyAJJChDQykgJChDRkxBR1MpICQoSVBBVEgpICQ8IC1vICRAICQoTElCUFNYTElCKSAtV2wsLXdyYXAscHRocmVhZF9jcmVhdGUKKyAKKyBydW5fbGliY2FwX3BzeF90ZXN0OiBsaWJjYXBfcHN4X3Rlc3QKKy0JLi9saWJjYXBfcHN4X3Rlc3QKKyAKKyBsaWJjYXBfcHN4X3Rlc3Q6IGxpYmNhcF9wc3hfdGVzdC5jICQoREVQUykKKyAJJChDQykgJChDRkxBR1MpICQoSVBBVEgpICQ8IC1vICRAICQoTElCQ0FQTElCKSAkKExJQlBTWExJQikgLVdsLC13cmFwLHB0aHJlYWRfY3JlYXRlIC0tc3RhdGljCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9saWJjYXBfMi4yNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2xpYmNhcF8yLjI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjY0ZmY3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2xpYmNhcF8yLjI3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBnZXR0aW5nL3NldHRpbmcgUE9TSVguMWUgY2FwYWJpbGl0aWVzIgotSE9NRVBBR0UgPSAiaHR0cDovL3NpdGVzLmdvb2dsZS5jb20vc2l0ZS9mdWxseWNhcGFibGUvIgotCi0jIG5vIHNwZWNpZmljIEdQTCB2ZXJzaW9uIHJlcXVpcmVkCi1MSUNFTlNFID0gIkJTRCB8IEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTGljZW5zZTttZDU9M2Y4NGZkNmYyOWQ0NTNhNTY1MTRjYjdlNGVhZDI1ZjEiCi0KLURFUEVORFMgPSAiaG9zdHBlcmwtcnVudGltZS1uYXRpdmUgZ3BlcmYtbmF0aXZlIgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbGlicy9zZWN1cml0eS9saW51eC1wcml2cy8ke0JQTn0yLyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1lbnN1cmUtdGhlLVhBVFRSX05BTUVfQ0FQUy1pcy1kZWZpbmVkLXdoZW4taXQtaXMtdXNlLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjJlOGY5ZmFiMzJlYjVjY2IzNzk2OWZlMzE3ZmQxN2FhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRhYzE3OTJkMDExOGJlZTZhYWU2YmE3ZmI5M2ZmMTYwMmM2YTliZGE4MTJmZDYzOTE2ZWVlMTQzNWI5YzQ4NmEiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC9saWJzL3NlY3VyaXR5L2xpbnV4LXByaXZzLyR7QlBOfTIvIgotCi1pbmhlcml0IGxpYl9wYWNrYWdlCi0KLSMgZG8gTk9UIHBhc3MgdGFyZ2V0IGNmbGFncyB0byBob3N0IGNvbXBpbGF0aW9ucwotIwotZG9fY29uZmlndXJlKCkgewotCSMgbGliY2FwIHVzZXMgOj0gZm9yIGNvbXBpbGVycywgZm9ydHVuYXRlbHksIGl0IGdpdmVzIHVzIGEgaGludAotCSMgb24gd2hhdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCA/PQotCXNlZCAtZSAncyw6PSw/PSxnJyAtaSBNYWtlLlJ1bGVzCi0Jc2VkIC1lICdzLF5CVUlMRF9DRkxBR1MgPz0gJCguKkNGTEFHUyksQlVJTERfQ0ZMQUdTIDo9ICQoQlVJTERfQ0ZMQUdTKSwnIC1pIE1ha2UuUnVsZXMKLX0KLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID8/PSAiIgotCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiUEFNX0NBUD15ZXMsUEFNX0NBUD1ubyxsaWJwYW0iCi0KLUVYVFJBX09FTUFLRSA9ICIgXAotICBJTkRFTlQ9ICBcCi0gIGxpYj0nJHtiYXNlbGlifScgXAotICBSQUlTRV9TRVRGQ0FQPW5vIFwKLSAgRFlOQU1JQz15ZXMgXAotICBCVUlMRF9HUEVSRj15ZXMgXAotIgotCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgU1lTVEVNX0hFQURFUlM9JHtTVEFHSU5HX0lOQ0RJUn0iCi0KLSMgdGhlc2UgYXJlIHByZXNlbnQgaW4gdGhlIGxpYmNhcCBkZWZhdWx0cywgc28gaW5jbHVkZSBpbiBvdXIgQ0ZMQUdTIHRvbwotQ0ZMQUdTICs9ICItRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCIKLQotZG9fY29tcGlsZSgpIHsKLQlvZV9ydW5tYWtlICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30KLX0KLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGwgXAotCQkke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKLQkJREVTVERJUj0iJHtEfSIgXAotCQlwcmVmaXg9IiR7cHJlZml4fSIgXAotCQlTQklORElSPSIke3NiaW5kaXJ9IgotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIE1vdmUgdGhlIGxpYnJhcnkgdG8gYmFzZV9saWJkaXIKLQlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfbGliZGlyfQotCWlmIFsgISAke0R9JHtsaWJkaXJ9IC1lZiAke0R9JHtiYXNlX2xpYmRpcn0gXTsgdGhlbgotCQltdiAke0R9JHtsaWJkaXJ9L2xpYmNhcCogJHtEfSR7YmFzZV9saWJkaXJ9Ci0gICAgICAgICAgICAgICAgaWYgWyAtZCAke0R9JHtsaWJkaXJ9L3NlY3VyaXR5IF07IHRoZW4KLQkJCW12ICR7RH0ke2xpYmRpcn0vc2VjdXJpdHkgJHtEfSR7YmFzZV9saWJkaXJ9Ci0JCWZpCi0JZmkKLX0KLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2Jhc2VfbGliZGlyfS8qLnNvIgotCi0jIHBhbSBmaWxlcwotRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Lyouc28iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2xpYmNhcF8yLjMyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAvbGliY2FwXzIuMzIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc4YTU4ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2xpYmNhcF8yLjMyLmJiCkBAIC0wLDAgKzEsNzcgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgZ2V0dGluZy9zZXR0aW5nIFBPU0lYLjFlIGNhcGFiaWxpdGllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zaXRlcy5nb29nbGUuY29tL3NpdGUvZnVsbHljYXBhYmxlLyIKKworIyBubyBzcGVjaWZpYyBHUEwgdmVyc2lvbiByZXF1aXJlZAorTElDRU5TRSA9ICJCU0QgfCBHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xpY2Vuc2U7bWQ1PTNmODRmZDZmMjlkNDUzYTU2NTE0Y2I3ZTRlYWQyNWYxIgorCitERVBFTkRTID0gImhvc3RwZXJsLXJ1bnRpbWUtbmF0aXZlIGdwZXJmLW5hdGl2ZSIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2xpYnMvc2VjdXJpdHkvbGludXgtcHJpdnMvJHtCUE59Mi8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZW5zdXJlLXRoZS1YQVRUUl9OQU1FX0NBUFMtaXMtZGVmaW5lZC13aGVuLWl0LWlzLXVzZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXRlc3RzLWRvLW5vdC1ydW4tdGFyZ2V0LWV4ZWN1dGFibGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtZG8tbm90LXN0YXRpY2FsbHktbGluay1hLXRlc3QucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNzQxNjExOWM5ZmRjZmQwZThkZDE5MGE0MzJjNjY4ZTkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTAwNWUzZDIyN2YyMzQwYWQxZTMzNjBlZjhiNjlkMTVlM2M3MmEyOWMwOWY0ODk0ZDdhYWMwMzhiZDI2ZTJiZSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L2xpYnMvc2VjdXJpdHkvbGludXgtcHJpdnMvJHtCUE59Mi8iCisKK2luaGVyaXQgbGliX3BhY2thZ2UKKworIyBkbyBOT1QgcGFzcyB0YXJnZXQgY2ZsYWdzIHRvIGhvc3QgY29tcGlsYXRpb25zCisjCitkb19jb25maWd1cmUoKSB7CisJIyBsaWJjYXAgdXNlcyA6PSBmb3IgY29tcGlsZXJzLCBmb3J0dW5hdGVseSwgaXQgZ2l2ZXMgdXMgYSBoaW50CisJIyBvbiB3aGF0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoID89CisJc2VkIC1lICdzLDo9LD89LGcnIC1pIE1ha2UuUnVsZXMKKwlzZWQgLWUgJ3MsXkJVSUxEX0NGTEFHUyA/PSAkKC4qQ0ZMQUdTKSxCVUlMRF9DRkxBR1MgOj0gJChCVUlMRF9DRkxBR1MpLCcgLWkgTWFrZS5SdWxlcworfQorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPz89ICIiCisKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICJQQU1fQ0FQPXllcyxQQU1fQ0FQPW5vLGxpYnBhbSIKKworRVhUUkFfT0VNQUtFID0gIiBcCisgIElOREVOVD0gIFwKKyAgbGliPScke2Jhc2VsaWJ9JyBcCisgIFJBSVNFX1NFVEZDQVA9bm8gXAorICBEWU5BTUlDPXllcyBcCisgIEJVSUxEX0dQRVJGPXllcyBcCisiCisKK0VYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBTWVNURU1fSEVBREVSUz0ke1NUQUdJTkdfSU5DRElSfSIKKworIyB0aGVzZSBhcmUgcHJlc2VudCBpbiB0aGUgbGliY2FwIGRlZmF1bHRzLCBzbyBpbmNsdWRlIGluIG91ciBDRkxBR1MgdG9vCitDRkxBR1MgKz0gIi1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IgorCitkb19jb21waWxlKCkgeworCW9lX3J1bm1ha2UgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfQorfQorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgaW5zdGFsbCBcCisJCSR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gXAorCQlERVNURElSPSIke0R9IiBcCisJCXByZWZpeD0iJHtwcmVmaXh9IiBcCisJCVNCSU5ESVI9IiR7c2JpbmRpcn0iCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgTW92ZSB0aGUgbGlicmFyeSB0byBiYXNlX2xpYmRpcgorCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9saWJkaXJ9CisJaWYgWyAhICR7RH0ke2xpYmRpcn0gLWVmICR7RH0ke2Jhc2VfbGliZGlyfSBdOyB0aGVuCisJCW12ICR7RH0ke2xpYmRpcn0vbGliY2FwKiAke0R9JHtiYXNlX2xpYmRpcn0KKyAgICAgICAgICAgICAgICBpZiBbIC1kICR7RH0ke2xpYmRpcn0vc2VjdXJpdHkgXTsgdGhlbgorCQkJbXYgJHtEfSR7bGliZGlyfS9zZWN1cml0eSAke0R9JHtiYXNlX2xpYmRpcn0KKwkJZmkKKwlmaQorfQorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmFzZV9saWJkaXJ9Lyouc28iCisKKyMgcGFtIGZpbGVzCitGSUxFU18ke1BOfSArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKi5zbyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjaGVjay9saWJjaGVja18wLjEzLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjI2NDE3Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVNVTU1BUlkgID0gIkNoZWNrIC0gdW5pdCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBjb2RlIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9saWJjaGVjay5naXRodWIuaW8vY2hlY2svIgotU0VDVElPTiA9ICJkZXZlbCIKLQotTElDRU5TRSAgPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vY2hlY2svcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vY2hlY2stJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL25vdC1lY2hvLWNvbXBpbGVyLWluZm8tdG8tY2hlY2tfc3RkaW50LmgucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiMmM3MzBjNDBiMDg0ODJlYWViMTAxMzI1MTc5NzA1OTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzQzMzZiMzE0NDdhY2M3ZTMyNjY4NTRmNzNlYzE4OGNkYjE1NTU0ZDBlZGQ0NDczOTYzMWRhMTc0YTU2OTkwOSIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliY2hlY2svY2hlY2svcmVsZWFzZXMvIgotCi1TID0gIiR7V09SS0RJUn0vY2hlY2stJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB0ZXhpbmZvCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX0FXS19QQVRIPSR7YmluZGlyfS9nYXdrIgotCi1SUkVQTEFDRVNfJHtQTn0gPSAiY2hlY2sgKDw9IDAuOS41KSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1QQUNLQUdFUyA9KyAiY2hlY2ttayIKLQotRklMRVNfY2hlY2ttayA9ICIke2JpbmRpcn0vY2hlY2ttayIKLQotUkRFUEVORFNfY2hlY2ttayA9ICJnYXdrIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2hlY2svbGliY2hlY2tfMC4xNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4OGYwMDkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTQuMC5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZICA9ICJDaGVjayAtIHVuaXQgdGVzdGluZyBmcmFtZXdvcmsgZm9yIEMgY29kZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vbGliY2hlY2suZ2l0aHViLmlvL2NoZWNrLyIKK1NFQ1RJT04gPSAiZGV2ZWwiCisKK0xJQ0VOU0UgID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59L2NoZWNrL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9L2NoZWNrLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9ub3QtZWNoby1jb21waWxlci1pbmZvLXRvLWNoZWNrX3N0ZGludC5oLnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gIjI3MGU4MmE0NDViZTYwMjYwNDAyNjdhNWUxMWNjOTRiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJkMGYwY2ExYmU2NWI3MDIzOGIzMmY4ZTlmZTVkMzZkYzJmYmY3YTc1OWI3ZWRmMjhlNzUzMjNhN2Q3NGYzMGIiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmNoZWNrL2NoZWNrL3JlbGVhc2VzLyIKKworUyA9ICIke1dPUktESVJ9L2NoZWNrLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdGV4aW5mbworCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9BV0tfUEFUSD0ke2JpbmRpcn0vZ2F3ayIKKworUlJFUExBQ0VTXyR7UE59ID0gImNoZWNrICg8PSAwLjkuNSkiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworUEFDS0FHRVMgPSsgImNoZWNrbWsiCisKK0ZJTEVTX2NoZWNrbWsgPSAiJHtiaW5kaXJ9L2NoZWNrbWsiCisKK1JERVBFTkRTX2NoZWNrbWsgPSAiZ2F3ayIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldi9kZXRlcm1pbmlzbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXYvZGV0ZXJtaW5pc20ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNhNjA3NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXYvZGV0ZXJtaW5pc20ucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorVGhlIG9yZGVyIG9mIGRpY3QgdmFsdWVzIGlzIG5vdCBkZXRlcm1pbmlzdGljIGxlYWRpbmcgdG8gZGlmZmVyaW5nIGhlYWRlciBmaWxlIGdlbmVyYXRpb24uCitTb3J0IHRvIHJlbW92ZSB0aGlzIGluY29uc2lzdGVuY3kuCisKK1JQIDIwMjAvMi83CisKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0luZGV4OiBhL2xpYmV2ZGV2L21ha2UtZXZlbnQtbmFtZXMucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhL2xpYmV2ZGV2L21ha2UtZXZlbnQtbmFtZXMucHkKKysrKyBiL2xpYmV2ZGV2L21ha2UtZXZlbnQtbmFtZXMucHkKK0BAIC02NywxMCArNjcsMTAgQEAgZGVmIHByaW50X2JpdHMoYml0cywgcHJlZml4KToKKyAJaWYgIG5vdCBoYXNhdHRyKGJpdHMsIHByZWZpeCk6CisgCQlyZXR1cm4KKyAJcHJpbnQoInN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgJXNfbWFwWyVzX01BWCArIDFdID0geyIgJSAocHJlZml4LCBwcmVmaXgudXBwZXIoKSkpCistCWZvciB2YWwsIG5hbWUgaW4gbGlzdChnZXRhdHRyKGJpdHMsIHByZWZpeCkuaXRlbXMoKSk6CisrCWZvciB2YWwsIG5hbWUgaW4gc29ydGVkKGxpc3QoZ2V0YXR0cihiaXRzLCBwcmVmaXgpLml0ZW1zKCkpKToKKyAJCXByaW50KCIJWyVzXSA9IFwiJXNcIiwiICUgKG5hbWUsIG5hbWUpKQorIAlpZiBwcmVmaXggPT0gImtleSI6CistCQlmb3IgdmFsLCBuYW1lIGluIGxpc3QoZ2V0YXR0cihiaXRzLCAiYnRuIikuaXRlbXMoKSk6CisrCQlmb3IgdmFsLCBuYW1lIGluIHNvcnRlZChsaXN0KGdldGF0dHIoYml0cywgImJ0biIpLml0ZW1zKCkpKToKKyAJCQlwcmludCgiCVslc10gPSBcIiVzXCIsIiAlIChuYW1lLCBuYW1lKSkKKyAJcHJpbnQoIn07IikKKyAJcHJpbnQoIiIpCitAQCAtMTExLDcgKzExMSw3IEBAIGRlZiBwcmludF9sb29rdXAoYml0cywgcHJlZml4KToKKyAJaWYgbm90IGhhc2F0dHIoYml0cywgcHJlZml4KToKKyAJCXJldHVybgorIAorLQluYW1lcyA9IGxpc3QoZ2V0YXR0cihiaXRzLCBwcmVmaXgpLml0ZW1zKCkpCisrCW5hbWVzID0gc29ydGVkKGxpc3QoZ2V0YXR0cihiaXRzLCBwcmVmaXgpLml0ZW1zKCkpKQorIAlpZiBwcmVmaXggPT0gImJ0biI6CisgCQluYW1lcyA9IG5hbWVzICsgYnRuX2FkZGl0aW9uYWw7CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuOC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjguMC5iYgppbmRleCA4NDI3NDk4Li4zNTIzZGMwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuOC4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS44LjAuYmIKQEAgLTYsOCArNiwxMSBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzVhYWUwZDM4ZmVlYTZmZGE5N2NhMzgxY2I5MTMyZWIgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZXZkZXYvbGliZXZkZXYuaDtlbmRsaW5lPTIxO21kNT03ZmY0ZjBiNTExMzI1MmMyZjFhODI4ZTBiYmFkOThkMSIKIAotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9saWJldmRldi8ke0JQfS50YXIueHoiCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2xpYmV2ZGV2LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9kZXRlcm1pbmlzbS5wYXRjaCIKIFNSQ19VUklbbWQ1c3VtXSA9ICI4Nzk2MzEwODBiZTE4NTI2NzM3ZTMzYjYzZDg0ODAzOSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMGQzY2FlNGVmZDI3N2Y0ODVhYmRmOGYyYTdjNDY1ODhlNTM5OTk4YjVhMDhjMmM0ZDM2ODIxODM3OWQ0MjExIgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibGliZXZkZXYtKD9QPHB2ZXI+KFxkK1wuKSsoPyE5MFxkKylcZCspIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudC8wMDAxLXRlc3QtcmVncmVzc19kbnMuYy1wYXRjaC1vdXQtdGVzdHMtdGhhdC1yZXF1aXJlLWEtd28ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50LzAwMDEtdGVzdC1yZWdyZXNzX2Rucy5jLXBhdGNoLW91dC10ZXN0cy10aGF0LXJlcXVpcmUtYS13by5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDUxNTNkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudC8wMDAxLXRlc3QtcmVncmVzc19kbnMuYy1wYXRjaC1vdXQtdGVzdHMtdGhhdC1yZXF1aXJlLWEtd28ucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSA3YzE3OTY3YjhmZDJkMThiNzRhODkzNGZkOWJiODIxMmViZDZhMjcxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDkgSmFuIDIwMjAgMTM6MjI6NDYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdC9yZWdyZXNzX2Rucy5jOiBwYXRjaCBvdXQgdGVzdHMgdGhhdCByZXF1aXJlIGEgd29ya2luZworIEROUworCitUaGlzIGlzIG5vdCBndWFyYW50ZWVkIGZvciBwdGVzdHMgdW5kZXIgcWVtdSwgYW5kIGluIHRoZSBhYnNlbmNlCitvZiBhIEROUyB0aGF0IGNhbiByZWFjaCB0byB0aGUgaW50ZXJuZXQsIHRoZXNlIHRlc3RzIGZhaWwuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgdGVzdC9yZWdyZXNzX2Rucy5jIHwgNCAtLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0L3JlZ3Jlc3NfZG5zLmMgYi90ZXN0L3JlZ3Jlc3NfZG5zLmMKK2luZGV4IGQyMDg0YjcuLmExYThmM2IgMTAwNjQ0CistLS0gYS90ZXN0L3JlZ3Jlc3NfZG5zLmMKKysrKyBiL3Rlc3QvcmVncmVzc19kbnMuYworQEAgLTIzOTQsOCArMjM5NCw2IEBAIHN0cnVjdCB0ZXN0Y2FzZV90IGRuc190ZXN0Y2FzZXNbXSA9IHsKKyAJeyAicmVpc3N1ZV9kaXNhYmxlX3doZW5faW5hY3RpdmUiLCBkbnNfcmVpc3N1ZV9kaXNhYmxlX3doZW5faW5hY3RpdmVfdGVzdCwKKyAJICBUVF9GT1JLfFRUX05FRURfQkFTRXxUVF9OT19MT0dTLCAmYmFzaWNfc2V0dXAsIE5VTEwgfSwKKyAJeyAiaW5mbGlnaHQiLCBkbnNfaW5mbGlnaHRfdGVzdCwgVFRfRk9SS3xUVF9ORUVEX0JBU0UsICZiYXNpY19zZXR1cCwgTlVMTCB9LAorLQl7ICJidWZmZXJldmVudF9jb25uZWN0X2hvc3RuYW1lIiwgdGVzdF9idWZmZXJldmVudF9jb25uZWN0X2hvc3RuYW1lLAorLQkgIFRUX0ZPUkt8VFRfTkVFRF9CQVNFLCAmYmFzaWNfc2V0dXAsIE5VTEwgfSwKKyAjaWZkZWYgRVZFTlRfX0hBVkVfU0VUUkxJTUlUCisgCXsgImJ1ZmZlcmV2ZW50X2Nvbm5lY3RfaG9zdG5hbWVfZW1maWxlIiwgdGVzdF9idWZmZXJldmVudF9jb25uZWN0X2hvc3RuYW1lLAorIAkgIFRUX0ZPUkt8VFRfTkVFRF9CQVNFLCAmYmFzaWNfc2V0dXAsIChjaGFyKikiZW1maWxlIiB9LAorQEAgLTI0MDUsOCArMjQwMyw2IEBAIHN0cnVjdCB0ZXN0Y2FzZV90IGRuc190ZXN0Y2FzZXNbXSA9IHsKKyAJeyAiZGlzYWJsZV93aGVuX2luYWN0aXZlX25vX25zIiwgZG5zX2Rpc2FibGVfd2hlbl9pbmFjdGl2ZV9ub19uc190ZXN0LAorIAkgIFRUX0ZPUkt8VFRfTkVFRF9CQVNFfFRUX05PX0xPR1MsICZiYXNpY19zZXR1cCwgTlVMTCB9LAorIAorLQl7ICJpbml0aWFsaXplX25hbWVzZXJ2ZXJzIiwgZG5zX2luaXRpYWxpemVfbmFtZXNlcnZlcnNfdGVzdCwKKy0JICBUVF9GT1JLfFRUX05FRURfQkFTRSwgJmJhc2ljX3NldHVwLCBOVUxMIH0sCisgI2lmbmRlZiBfV0lOMzIKKyAJeyAibmFtZXNlcnZlcnNfbm9fZGVmYXVsdCIsIGRuc19uYW1lc2VydmVyc19ub19kZWZhdWx0X3Rlc3QsCisgCSAgVFRfRk9SS3xUVF9ORUVEX0JBU0UsICZiYXNpY19zZXR1cCwgTlVMTCB9LApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudF8yLjEuMTEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS4xMS5iYgppbmRleCA4YzdjNDllLi5mYjE4NmViIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS4xMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS4xMS5iYgpAQCAtNiwxMSArNiwxMSBAQAogTElDRU5TRSA9ICJCU0QgJiBNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xN2YyMDU3NGMwYjE1NGQxMjIzNmQ1ZmJlOTY0ZjU0OSIKIAotU1JDX1VSSSA9ICIgXAotICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9saWJldmVudC9saWJldmVudC9yZWxlYXNlcy9kb3dubG9hZC9yZWxlYXNlLSR7UFZ9LXN0YWJsZS8ke0JQfS1zdGFibGUudGFyLmd6IFwKLSAgICBmaWxlOi8vTWFrZWZpbGUtbWlzc2luZy10ZXN0LWRpci5wYXRjaCBcCi0gICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJldmVudC9saWJldmVudC9yZWxlYXNlcy9kb3dubG9hZC9yZWxlYXNlLSR7UFZ9LXN0YWJsZS8ke0JQfS1zdGFibGUudGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLW1pc3NpbmctdGVzdC1kaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdC1yZWdyZXNzX2Rucy5jLXBhdGNoLW91dC10ZXN0cy10aGF0LXJlcXVpcmUtYS13by5wYXRjaCBcCisgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjdmMzVjZmU2OWI4MmQ4NzkxMTFlYzBkN2I3YjFjNTMxIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImE2NWJhYzYyMDJlYThjNTYwOWZkNWM3ZTQ4MGU2ZDI1ZGU0NjdlYTE5MTdjMDgyOTBjNTIxNzUyZjE0NzI4M2QiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1BZGRyZXNzLXBsYXRmb3Jtcy13aXRoLW5vLV9faW50MTI4LXBhcnQyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtQWRkcmVzcy1wbGF0Zm9ybXMtd2l0aC1uby1fX2ludDEyOC1wYXJ0Mi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjViN2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtQWRkcmVzcy1wbGF0Zm9ybXMtd2l0aC1uby1fX2ludDEyOC1wYXJ0Mi5wYXRjaApAQCAtMCwwICsxLDM0IEBACitBZGRyZXNzIHBsYXRmb3JtcyB3aXRoIG5vIF9faW50MTI4LgorCitGaXhlcyByZW1haW5pbmcgcGllY2VzIGZyb20KK2h0dHBzOi8vZ2l0aHViLmNvbS9saWJmZmkvbGliZmZpL2NvbW1pdC82NjYzMDQ3ZjU2YzI5MzJhNmIxMGE3OTBmNGFjNjY2NmRkMTgxMzI2CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworLS0tIGEvc3JjL3Bvd2VycGMvZmZpX2xpbnV4NjQuYy5vcmcJMjAxOS0xMi0wNSAxNDo0ODozMy4xNDA1Nzk0MzEgLTA4MDAKKysrKyBhL3NyYy9wb3dlcnBjL2ZmaV9saW51eDY0LmMJMjAxOS0xMi0wNSAxNDo1Mzo1OC44MjcyNDQ0OTUgLTA4MDAKK0BAIC02ODAsOSArNjgwLDkgQEAgZmZpX3ByZXBfYXJnczY0IChleHRlbmRlZF9jaWYgKmVjaWYsIHVucworICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVjYXJnX2NvdW50IDwgTlVNX1ZFQ19BUkdfUkVHSVNURVJTNjQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGkgPCBuZml4ZWRhcmdzKQorLSAgICAgICAgICAgICAgICAgICAgICAgICp2ZWNfYmFzZS5mMTI4KysgPSAqYXJnLmYxMjgrKzsKKysJCSAgICAgICAgbWVtY3B5ICh2ZWNfYmFzZS5mMTI4KyssIGFyZy5mMTI4LCBzaXplb2YgKGZsb2F0MTI4KSk7CisgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgICAgICAgICAqbmV4dF9hcmcuZjEyOCA9ICphcmcuZjEyOCsrOworKwkJICAgICAgICBtZW1jcHkgKG5leHRfYXJnLmYxMjgsIGFyZy5mMTI4KyssIHNpemVvZiAoZmxvYXQxMjgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKCsrbmV4dF9hcmcuZjEyOCA9PSBncHJfZW5kLmYxMjgpCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9hcmcuZjEyOCA9IHJlc3QuZjEyODsKKyAgICAgICAgICAgICAgICAgICAgICAgdmVjYXJnX2NvdW50Kys7CitAQCAtOTg2LDkgKzk4Niw5IEBAIGZmaV9jbG9zdXJlX2hlbHBlcl9MSU5VWDY0IChmZmlfY2lmICpjaWYKKyAgICAgICAgICAgICAgICAgICBkbworICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICBpZiAocHZlYyA8IGVuZF9wdmVjICYmIGkgPCBuZml4ZWRhcmdzKQorLSAgICAgICAgICAgICAgICAgICAgICAgICp0by5mMTI4ID0gKnB2ZWMrKzsKKysJCSAgICAgICAgbWVtY3B5ICh0by5mMTI4LCBwdmVjKyssIHNpemVvZiAoZmxvYXQxMjgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICAgICAgICAgICp0by5mMTI4ID0gKmZyb20uZjEyODsKKysJCSAgICAgICAgbWVtY3B5ICh0by5mMTI4LCBmcm9tLmYxMjgsIHNpemVvZiAoZmxvYXQxMjgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgdG8uZjEyOCsrOworICAgICAgICAgICAgICAgICAgICAgICBmcm9tLmYxMjgrKzsKKyAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS8wMDAxLUFkZHJlc3MtcGxhdGZvcm1zLXdpdGgtbm8tX19pbnQxMjgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1BZGRyZXNzLXBsYXRmb3Jtcy13aXRoLW5vLV9faW50MTI4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlMzJhNTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1BZGRyZXNzLXBsYXRmb3Jtcy13aXRoLW5vLV9faW50MTI4LnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gNjhmNDViOTA0OWRmZmI1NGY1YTI5YTNhNDk1YWIzZGZjZjAxMDYzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFudGhvbnkgR3JlZW4gPGdyZWVuQG1veGllbG9naWMuY29tPgorRGF0ZTogRnJpLCAyOSBOb3YgMjAxOSAwNzowMDozNSAtMDUwMAorU3ViamVjdDogW1BBVENIXSBBZGRyZXNzIHBsYXRmb3JtcyB3aXRoIG5vIF9faW50MTI4LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGliZmZpL2xpYmZmaS9jb21taXQvNjY2MzA0N2Y1NmMyOTMyYTZiMTBhNzkwZjRhYzY2NjZkZDE4MTMyNl0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgc3JjL3Bvd2VycGMvZmZpX2xpbnV4NjQuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcG93ZXJwYy9mZmlfbGludXg2NC5jIGIvc3JjL3Bvd2VycGMvZmZpX2xpbnV4NjQuYworaW5kZXggZGUwZDAzMy4uNzM2NDc3MCAxMDA2NDQKKy0tLSBhL3NyYy9wb3dlcnBjL2ZmaV9saW51eDY0LmMKKysrKyBiL3NyYy9wb3dlcnBjL2ZmaV9saW51eDY0LmMKK0BAIC01NDcsOSArNTQ3LDkgQEAgZmZpX3ByZXBfYXJnczY0IChleHRlbmRlZF9jaWYgKmVjaWYsIHVuc2lnbmVkIGxvbmcgKmNvbnN0IHN0YWNrKQorICAgICAgICAgICAgICAgaWYgKG5leHRfYXJnLnVsID09IGdwcl9lbmQudWwpCisgICAgICAgICAgICAgICAgIG5leHRfYXJnLnVsID0gcmVzdC51bDsKKyAgICAgICAgICAgICAgIGlmICh2ZWNhcmdfY291bnQgPCBOVU1fVkVDX0FSR19SRUdJU1RFUlM2NCAmJiBpIDwgbmZpeGVkYXJncykKKy0gICAgICAgICAgICAgICAgKnZlY19iYXNlLmYxMjgrKyA9ICoqcF9hcmd2LmYxMjg7CisrCQltZW1jcHkgKHZlY19iYXNlLmYxMjgrKywgKnBfYXJndi5mMTI4LCBzaXplb2YgKGZsb2F0MTI4KSk7CisgICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICpuZXh0X2FyZy5mMTI4ID0gKipwX2FyZ3YuZjEyODsKKysJCW1lbWNweSAobmV4dF9hcmcuZjEyOCwgKnBfYXJndi5mMTI4LCBzaXplb2YgKGZsb2F0MTI4KSk7CisgICAgICAgICAgICAgICBpZiAoKytuZXh0X2FyZy5mMTI4ID09IGdwcl9lbmQuZjEyOCkKKyAgICAgICAgICAgICAgICAgbmV4dF9hcmcuZjEyOCA9IHJlc3QuZjEyODsKKyAgICAgICAgICAgICAgIHZlY2FyZ19jb3VudCsrOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtRml4ZWQtbWlzc2VkLWlmbmRlZi1mb3ItX19taXBzX3NvZnRfZmxvYXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1GaXhlZC1taXNzZWQtaWZuZGVmLWZvci1fX21pcHNfc29mdF9mbG9hdC5wYXRjaAppbmRleCAwMGEzMGEzLi4zOTcxOTRiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1GaXhlZC1taXNzZWQtaWZuZGVmLWZvci1fX21pcHNfc29mdF9mbG9hdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1GaXhlZC1taXNzZWQtaWZuZGVmLWZvci1fX21pcHNfc29mdF9mbG9hdC5wYXRjaApAQCAtMSwxMiArMSwxMSBAQAotRnJvbSA0MTQ5YTc2MjdhOTk4NzMxY2MyNDZkM2Y1OGEzNjgwODc0NWQwNGM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxNGUyZTc0NjgyZGIzYmZjZjA1NzY4OGY3MzhmZGQ4NDJhMDJmZjJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2FybCBIdXJkIDxjYXJsQENhcmxzLU1hY0Jvb2stUHJvLmxvY2FsPgogRGF0ZTogV2VkLCAxOCBKdWwgMjAxOCAwOTowNDozMiAtMDQwMAogU3ViamVjdDogW1BBVENIXSBGaXhlZCBtaXNzZWQgI2lmbmRlZiBmb3IgX19taXBzX3NvZnRfZmxvYXQKIAogU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+Ci0tLS0KIFVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbGliZmZpL2xpYmZmaS9wdWxsLzQ0Ml0KLQorLS0tCiAgc3JjL21pcHMvbzMyLlMgfCAyICsrCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQogCkBAIC0yNiw2ICsyNSwzIEBACiAgMToKICAJIyBwcmVwYXJlIGFyZ3VtZW50cyBmb3IgZmZpX2Nsb3N1cmVfbWlwc19pbm5lcl9PMzIKICAJUkVHX0wJYTAsIDQoJDE1KQkgIyBjaWYgCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1mZmlfcG93ZXJwYy5oLWZpeC1idWlsZC1mYWlsdXJlLXdpdGgtcG93ZXJwYzcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1mZmlfcG93ZXJwYy5oLWZpeC1idWlsZC1mYWlsdXJlLXdpdGgtcG93ZXJwYzcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJlNmU0NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS8wMDAxLWZmaV9wb3dlcnBjLmgtZml4LWJ1aWxkLWZhaWx1cmUtd2l0aC1wb3dlcnBjNy5wYXRjaApAQCAtMCwwICsxLDYyIEBACitGcm9tIGRlOTNhZGZiNmY0ODEwMDk0NmJiYTJjM2FiYWQyYTc3YTBjZmRlMGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGYWJyaWNlIEZvbnRhaW5lIDxmb250YWluZS5mYWJyaWNlQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjQgTm92IDIwMTkgMDk6NTI6MDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gZmZpX3Bvd2VycGMuaDogZml4IGJ1aWxkIGZhaWx1cmUgd2l0aCBwb3dlcnBjNworCitUaGlzIGlzIGEgcGF0Y2ggcHVsbGVkIGRvd24gZnJvbSB0aGUgZm9sbG93aW5nOgoraHR0cHM6Ly9naXRodWIuY29tL2J1aWxkcm9vdC9idWlsZHJvb3QvYmxvYi83ODkyNmY2MTBiMTQxMWIwMzQ2NDE1MjQ3MmZkNDMwMDEyZGViOWFjL3BhY2thZ2UvbGliZmZpLzAwMDQtZmZpX3Bvd2VycGMuaC1maXgtYnVpbGQtZmFpbHVyZS13aXRoLXBvd2VycGM3LnBhdGNoCisKK1RoaXMgaXNzdWUgaXMgYmVpbmcgaGl0IG9uIE9wZW5CTUMgY29kZSB3aGVuIHB1bGxpbmcgdGhlIGxhdGVzdAorbGliZmZpIHRhZyBhbmQgYnVpbGRpbmcgb24gYSBQOCBwcGM2NGxlIG1hY2hpbmUuIEkgdmVyaWZpZWQgdGhpcworcGF0Y2ggZml4ZXMgdGhlIGlzc3VlIHdlIGFyZSBzZWVpbmcuCisKK0JlbG93IGlzIHRoZSBvcmlnaW5hbCBjb21taXQgbWVzc2FnZToKKworU2ljbmUgY29tbWl0IDczZGQ0M2FmYzhhNDQ3YmE5OGVhMDJlOWFhZDRjNjg5OGRjNzdmYjAsIGJ1aWxkIG9uIHBvd2VycGM3CitmYWlscyBvbjoKKworSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3NyYy9wb3dlcnBjL2ZmaS5jOjMzOjA6CisuLi9zcmMvcG93ZXJwYy9mZmlfcG93ZXJwYy5oOjYxOjk6IGVycm9yOiAnX0Zsb2F0MTI4JyBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdGFyZ2V0CisgdHlwZWRlZiBfRmxvYXQxMjggZmxvYXQxMjg7CisgICAgICAgICBefn5+fn5+fn4KKworRml4IHRoaXMgYnVpbGQgZmFpbHVyZSBieSBjaGVja2luZyBmb3IgX19IQVZFX0ZMT0FUMTI4IGJlZm9yZSB1c2luZworX0Zsb2F0MTI4LCBhcyBfRmxvYXQxMjggaXMgZW5hYmxlZCBvbmx5IG9uIHNwZWNpZmljIGNvbmRpdGlvbnMsIHNlZQorb3V0cHV0L2hvc3QvcG93ZXJwYzY0LWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2Zsb2F0bi5oOgorCisgLyogRGVmaW5lZCB0byAxIGlmIHRoZSBjdXJyZW50IGNvbXBpbGVyIGludm9jYXRpb24gcHJvdmlkZXMgYQorICAgIGZsb2F0aW5nLXBvaW50IHR5cGUgd2l0aCB0aGUgSUVFRSA3NTQgYmluYXJ5MTI4IGZvcm1hdCwgYW5kIHRoaXMgZ2xpYmMKKyAgICBpbmNsdWRlcyBjb3JyZXNwb25kaW5nICpmMTI4IGludGVyZmFjZXMgZm9yIGl0LiAgKi8KKyAjaWYgZGVmaW5lZCBfQVJDSF9QV1I4ICYmIGRlZmluZWQgX19MSVRUTEVfRU5ESUFOX18gJiYgKF9DQUxMX0VMRiA9PSAyKSBcCisgICAgICYmIGRlZmluZWQgX19GTE9BVDEyOF9fICYmICFkZWZpbmVkIF9fTk9fTE9OR19ET1VCTEVfTUFUSAorICMgZGVmaW5lIF9fSEFWRV9GTE9BVDEyOCAxCisgI2Vsc2UKKyAjIGRlZmluZSBfX0hBVkVfRkxPQVQxMjggMAorICNlbmRpZgorCitGaXhlczoKKyAtIGh0dHA6Ly9hdXRvYnVpbGQuYnVpbGRyb290Lm9yZy9yZXN1bHRzLzVjOWRkOGZiM2I2YTEyODg4MmI2MjUwZjE5N2M4MDIzMmQ4YTNiNTMKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJmZmkvbGliZmZpL3B1bGwvNTYxXQorU2lnbmVkLW9mZi1ieTogRmFicmljZSBGb250YWluZSA8Zm9udGFpbmUuZmFicmljZUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgR2Vpc3NsZXIgPGdlaXNzb25hdG9yQHlhaG9vLmNvbT4KKy0tLQorIHNyYy9wb3dlcnBjL2ZmaV9wb3dlcnBjLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcG93ZXJwYy9mZmlfcG93ZXJwYy5oIGIvc3JjL3Bvd2VycGMvZmZpX3Bvd2VycGMuaAoraW5kZXggOGUyZjJmMC4uOTYwYTVjNCAxMDA2NDQKKy0tLSBhL3NyYy9wb3dlcnBjL2ZmaV9wb3dlcnBjLmgKKysrKyBiL3NyYy9wb3dlcnBjL2ZmaV9wb3dlcnBjLmgKK0BAIC01Nyw3ICs1Nyw3IEBAIHR5cGVkZWYgdW5pb24KKyAgIGRvdWJsZSBkOworIH0gZmZpX2RibGZsOworCistI2lmIGRlZmluZWQoX19GTE9BVDEyOF9UWVBFX18pCisrI2lmIGRlZmluZWQoX19GTE9BVDEyOF9UWVBFX18pICYmIGRlZmluZWQoX19IQVZFX0ZMT0FUMTI4KQorIHR5cGVkZWYgX0Zsb2F0MTI4IGZsb2F0MTI4OworICNlbGlmIGRlZmluZWQoX19GTE9BVDEyOF9fKQorIHR5cGVkZWYgX19mbG9hdDEyOCBmbG9hdDEyODsKKy0tCisyLjIxLjAgKEFwcGxlIEdpdC0xMjIpCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS8wMDAxLXBvd2VycGMtZml4LWJ1aWxkLWZhaWx1cmUtb24tcG93ZXI3LWFuZC1vbGRlci01MzIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1wb3dlcnBjLWZpeC1idWlsZC1mYWlsdXJlLW9uLXBvd2VyNy1hbmQtb2xkZXItNTMyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhN2FlYTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1wb3dlcnBjLWZpeC1idWlsZC1mYWlsdXJlLW9uLXBvd2VyNy1hbmQtb2xkZXItNTMyLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gNGRjNmNjOTYxMzAwYjlkZWZmYjY0OGIxMjM3MzkwYTViZWExYzZkNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNlcmdlaSBUcm9maW1vdmljaCA8c2x5Zm94QGdlbnRvby5vcmc+CitEYXRlOiBUaHUsIDI4IE5vdiAyMDE5IDEyOjQyOjQxICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHBvd2VycGM6IGZpeCBidWlsZCBmYWlsdXJlIG9uIHBvd2VyNyBhbmQgb2xkZXIgKCM1MzIpCisKK0J1aWxkIGZhaWx1cmUgbG9va3MgYXM6CitgYGAKK2xpYnRvb2w6IGNvbXBpbGU6ICBwb3dlcnBjLXVua25vd24tbGludXgtZ251LWdjYyBcCisgICAgLU8yIC1tY3B1PXBvd2VycGMgLW10dW5lPXBvd2VycGMgLXBpcGUgLi4uIC1jIHNyYy9wb3dlcnBjL2ZmaS5jIC4uLgorSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHNyYy9wb3dlcnBjL2ZmaS5jOjMzOgorc3JjL3Bvd2VycGMvZmZpX3Bvd2VycGMuaDo2NTo5OiBlcnJvcjogJ19faW50MTI4JyBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdGFyZ2V0CisgICA2NSB8IHR5cGVkZWYgX19pbnQxMjggZmxvYXQxMjg7CisgICAgICB8ICAgICAgICAgXn5+fn5+fn4KK2BgYAorCitUaGUgZml4IGF2b2lkcyB1c2luZyBfX2ludDEyOCBpbiBmYXZvdXIgb2YgYWxpZ25lZCBjaGFyWzE2XS4KKworQ2xvc2VzOiBodHRwczovL2dpdGh1Yi5jb20vbGliZmZpL2xpYmZmaS9pc3N1ZXMvNTMxCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGliZmZpL2xpYmZmaS9jb21taXQvMDFhNzVlZDc2ZWE3ZTU3ZjFiN2E1YzE4M2UyYjFlODkwZTZhYTBmZF0KK1NpZ25lZC1vZmYtYnk6IFNlcmdlaSBUcm9maW1vdmljaCA8c2x5Zm94QGdlbnRvby5vcmc+CitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9wb3dlcnBjL2ZmaV9wb3dlcnBjLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcG93ZXJwYy9mZmlfcG93ZXJwYy5oIGIvc3JjL3Bvd2VycGMvZmZpX3Bvd2VycGMuaAoraW5kZXggNWVlMmE3MC4uOGUyZjJmMCAxMDA2NDQKKy0tLSBhL3NyYy9wb3dlcnBjL2ZmaV9wb3dlcnBjLmgKKysrKyBiL3NyYy9wb3dlcnBjL2ZmaV9wb3dlcnBjLmgKK0BAIC02Miw3ICs2Miw3IEBAIHR5cGVkZWYgX0Zsb2F0MTI4IGZsb2F0MTI4OworICNlbGlmIGRlZmluZWQoX19GTE9BVDEyOF9fKQorIHR5cGVkZWYgX19mbG9hdDEyOCBmbG9hdDEyODsKKyAjZWxzZQorLXR5cGVkZWYgX19pbnQxMjggZmxvYXQxMjg7CisrdHlwZWRlZiBjaGFyIGZsb2F0MTI4WzE2XSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDE2KSkpOworICNlbmRpZgorIAorIHZvaWQgRkZJX0hJRERFTiBmZmlfY2xvc3VyZV9TWVNWICh2b2lkKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS9ub3Qtd2luMzIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvbm90LXdpbjMyLnBhdGNoCmluZGV4IDg2YTdmYzkuLjYyZGFhZjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS9ub3Qtd2luMzIucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpL25vdC13aW4zMi5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gMzA2NzE5MzY5YTBkMzYwOGI0ZmYyNzM3ZGU3NGFlMjg0Nzg4YTE0YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBUaHUsIDQgRmViIDIwMTYgMTY6MjI6NTAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gbGliZmZpOiBlbnN1cmUgc3lzcm9vdCBwYXRocyBhcmUgbm90IGluIGxpYmZmaS5wYworCiBsaWJmZmkncyBjb25maWd1cmUgYXNzdW1lcyB0aGF0IGNyb3NzLWNvbXBpbGVkIGJ1aWxkcyBhcmUgY29tcGxpY2F0ZWQgYW5kCiBpbnRyb2R1Y2VzIGNvbnZvbHV0ZWQgcGF0aCBtYW5pcHVsYXRpb24gaW52b2x2aW5nIGdjYyBzZWFyY2ggcGF0aHMgdG8gdGhlCiBpbnN0YWxsIHBhdGhzLCByZXN1bHRpbmcgaW4gcGF0aHMgbGlrZSAtTC91c3IvbGliLy4uL2xpYi8gYXBwZWFyaW5nIGluCkBAIC0xMSw5ICsxNiwxNSBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiBTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogCistLS0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGI3NjQzNjguLmQ1MWNlOTEgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM1MCw3ICszNTAsNyBAQCBBQ19BUkdfRU5BQkxFKG11bHRpLW9zLWRpcmVjdG9yeSwKK0BAIC0zNTQsNyArMzU0LDcgQEAgQUNfQVJHX0VOQUJMRShtdWx0aS1vcy1kaXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAjIFRoZXNlIHZhcmlhYmxlcyBhcmUgb25seSBldmVyIHVzZWQgd2hlbiB3ZSBjcm9zcy1idWlsZCB0byBYODZfV0lOMzIuCiAgIyBBbmQgd2Ugb25seSBzdXBwb3J0IHRoaXMgd2l0aCBHQ0MsIHNvLi4uCkBAIC0yMSw0ICszMiw0IEBACiAraWYgZmFsc2U7IHRoZW4KICAgIGlmIHRlc3QgLW4gIiR3aXRoX2Nyb3NzX2hvc3QiICYmCiAgICAgICB0ZXN0IHgiJHdpdGhfY3Jvc3NfaG9zdCIgIT0geCJubyI7IHRoZW4KLSAgICAgdG9vbGV4ZWNkaXI9IiR7ZXhlY19wcmVmaXh9Ii8nJCh0YXJnZXRfYWxpYXMpJworICAgICB0b29sZXhlY2Rpcj0nJHtleGVjX3ByZWZpeH0nLyckKHRhcmdldF9hbGlhcyknCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmlfMy4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpXzMuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWJlYjk4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpXzMuMy5iYgpAQCAtMCwwICsxLDQxIEBACitTVU1NQVJZID0gIkEgcG9ydGFibGUgZm9yZWlnbiBmdW5jdGlvbiBpbnRlcmZhY2UgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9saWJmZmkvIgorREVTQ1JJUFRJT04gPSAiVGhlIGBsaWJmZmknIGxpYnJhcnkgcHJvdmlkZXMgYSBwb3J0YWJsZSwgaGlnaCBsZXZlbCBwcm9ncmFtbWluZyBpbnRlcmZhY2UgdG8gdmFyaW91cyBjYWxsaW5nIFwKK2NvbnZlbnRpb25zLiAgVGhpcyBhbGxvd3MgYSBwcm9ncmFtbWVyIHRvIGNhbGwgYW55IGZ1bmN0aW9uIHNwZWNpZmllZCBieSBhIGNhbGwgaW50ZXJmYWNlIGRlc2NyaXB0aW9uIGF0IHJ1biBcCit0aW1lLiBGRkkgc3RhbmRzIGZvciBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZS4gIEEgZm9yZWlnbiBmdW5jdGlvbiBpbnRlcmZhY2UgaXMgdGhlIHBvcHVsYXIgbmFtZSBmb3IgdGhlIFwKK2ludGVyZmFjZSB0aGF0IGFsbG93cyBjb2RlIHdyaXR0ZW4gaW4gb25lIGxhbmd1YWdlIHRvIGNhbGwgY29kZSB3cml0dGVuIGluIGFub3RoZXIgbGFuZ3VhZ2UuICBUaGUgYGxpYmZmaScgXAorbGlicmFyeSByZWFsbHkgb25seSBwcm92aWRlcyB0aGUgbG93ZXN0LCBtYWNoaW5lIGRlcGVuZGVudCBsYXllciBvZiBhIGZ1bGx5IGZlYXR1cmVkIGZvcmVpZ24gZnVuY3Rpb24gaW50ZXJmYWNlLiAgXAorQSBsYXllciBtdXN0IGV4aXN0IGFib3ZlIGBsaWJmZmknIHRoYXQgaGFuZGxlcyB0eXBlIGNvbnZlcnNpb25zIGZvciB2YWx1ZXMgcGFzc2VkIGJldHdlZW4gdGhlIHR3byBsYW5ndWFnZXMuIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTQ5MjM4NWZlMjIxOTU5NTJmNWI5YjE5Nzg2OGJhMjY4IgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJmZmkvbGliZmZpL3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL25vdC13aW4zMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeGVkLW1pc3NlZC1pZm5kZWYtZm9yLV9fbWlwc19zb2Z0X2Zsb2F0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcG93ZXJwYy1maXgtYnVpbGQtZmFpbHVyZS1vbi1wb3dlcjctYW5kLW9sZGVyLTUzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZHJlc3MtcGxhdGZvcm1zLXdpdGgtbm8tX19pbnQxMjgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGRyZXNzLXBsYXRmb3Jtcy13aXRoLW5vLV9faW50MTI4LXBhcnQyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZmZpX3Bvd2VycGMuaC1maXgtYnVpbGQtZmFpbHVyZS13aXRoLXBvd2VycGM3LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjYzMTMyODllMzJmMWQzOGE5ZGY0NzcwYjAxNGEyY2E3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcyZmJhNzkyMjcwM2RkZmE3YTAyOGQ1MTNhYzE1YTg1YzhkNTRjOGQ2N2Y1NWZhNWE0ODAyODg1ZGM2NTIwNTYiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZmaS9saWJmZmkvcmVsZWFzZXMvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibGliZmZpLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1idWlsZGRpciIKK0VYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiTElCVE9PTEZMQUdTPSctLXRhZz1DQyciCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIG11bHRpbGliX2hlYWRlcgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlvZV9tdWx0aWxpYl9oZWFkZXIgZmZpLmgKK30KKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbGliZmZpLSR7UFZ9IgorCisjIERvZXNuJ3QgY29tcGlsZSBpbiBNSVBTMTZlIG1vZGUgZHVlIHRvIHVzZSBvZiBoYW5kLXdyaXR0ZW4KKyMgYXNzZW1ibHkKK01JUFNfSU5TVFJVQ1RJT05fU0VUID0gIm1pcHMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpXzMuM35yYzAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmlfMy4zfnJjMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFjYjY5OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmlfMy4zfnJjMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLVNVTU1BUlkgPSAiQSBwb3J0YWJsZSBmb3JlaWduIGZ1bmN0aW9uIGludGVyZmFjZSBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZXdhcmUub3JnL2xpYmZmaS8iCi1ERVNDUklQVElPTiA9ICJUaGUgYGxpYmZmaScgbGlicmFyeSBwcm92aWRlcyBhIHBvcnRhYmxlLCBoaWdoIGxldmVsIHByb2dyYW1taW5nIGludGVyZmFjZSB0byB2YXJpb3VzIGNhbGxpbmcgXAotY29udmVudGlvbnMuICBUaGlzIGFsbG93cyBhIHByb2dyYW1tZXIgdG8gY2FsbCBhbnkgZnVuY3Rpb24gc3BlY2lmaWVkIGJ5IGEgY2FsbCBpbnRlcmZhY2UgZGVzY3JpcHRpb24gYXQgcnVuIFwKLXRpbWUuIEZGSSBzdGFuZHMgZm9yIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlLiAgQSBmb3JlaWduIGZ1bmN0aW9uIGludGVyZmFjZSBpcyB0aGUgcG9wdWxhciBuYW1lIGZvciB0aGUgXAotaW50ZXJmYWNlIHRoYXQgYWxsb3dzIGNvZGUgd3JpdHRlbiBpbiBvbmUgbGFuZ3VhZ2UgdG8gY2FsbCBjb2RlIHdyaXR0ZW4gaW4gYW5vdGhlciBsYW5ndWFnZS4gIFRoZSBgbGliZmZpJyBcCi1saWJyYXJ5IHJlYWxseSBvbmx5IHByb3ZpZGVzIHRoZSBsb3dlc3QsIG1hY2hpbmUgZGVwZW5kZW50IGxheWVyIG9mIGEgZnVsbHkgZmVhdHVyZWQgZm9yZWlnbiBmdW5jdGlvbiBpbnRlcmZhY2UuICBcCi1BIGxheWVyIG11c3QgZXhpc3QgYWJvdmUgYGxpYmZmaScgdGhhdCBoYW5kbGVzIHR5cGUgY29udmVyc2lvbnMgZm9yIHZhbHVlcyBwYXNzZWQgYmV0d2VlbiB0aGUgdHdvIGxhbmd1YWdlcy4iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzYxMGJiMTc2ODNhMDA4OWVkNjQwNTU0MTZiMmFlMWIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZmaS9saWJmZmkvcmVsZWFzZXMvZG93bmxvYWQvdjMuMy1yYzAvbGliZmZpLTMuMy1yYzAudGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL25vdC13aW4zMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeGVkLW1pc3NlZC1pZm5kZWYtZm9yLV9fbWlwc19zb2Z0X2Zsb2F0LnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjhkMmE4MmE3OGZhZjEwYTVlNTNjMjdkOTg2ZThmMDRlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwM2Q2N2FhYmYxYzA1MTU3ODU1ZWEyYjFkOTk1MDI2M2ZiNjMxNjUzNmM4YzMzM2Y1YjlhYjFlYjJmMjBlY2YiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZmaS9saWJmZmkvcmVsZWFzZXMvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibGliZmZpLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgotVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWJ1aWxkZGlyIgotRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJMSUJUT09MRkxBR1M9Jy0tdGFnPUNDJyIKLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gbXVsdGlsaWJfaGVhZGVyCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0tMy4zLXJjMCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jb2VfbXVsdGlsaWJfaGVhZGVyIGZmaS5oCi19Ci0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYmZmaS0ke1BWfSIKLQotIyBEb2Vzbid0IGNvbXBpbGUgaW4gTUlQUzE2ZSBtb2RlIGR1ZSB0byB1c2Ugb2YgaGFuZC13cml0dGVuCi0jIGFzc2VtYmx5Ci1NSVBTX0lOU1RSVUNUSU9OX1NFVCA9ICJtaXBzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm1fMS4zLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMy4xLmJiCmluZGV4IDkxOGZlM2UuLjYzYWU3ODcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm1fMS4zLjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbV8xLjMuMS5iYgpAQCAtMTksNyArMTksNyBAQAogU1JDX1VSSVttZDVzdW1dID0gImMxNWVjZDJjOTMxN2UyYzM4NWNkM2YwNDZkMGI2MWJhIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk2YjEyNDRiZGU0MWNhMGVlZjAzMzJjZmI1YzY3YmIxNjcyNWRmZDEwMjEyOGYzZTZmNzRmYWRjMTNhMWNmZTQiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdldHRleHQgZmVhdHVyZXNfY2hlY2sKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdldHRleHQgZmVhdHVyZXNfY2hlY2sgbWltZSBtaW1lLXhkZwogQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCiAKIEVYVFJBX09FQ09ORiA9ICItLXdpdGgtZ3RrPTMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9kZXRlcm1pbmlzbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzL2RldGVybWluaXNtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkMGI4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9kZXRlcm1pbmlzbS5wYXRjaApAQCAtMCwwICsxLDMyIEBACitnbnV0bHMgZGV0ZWN0cyBvdXIgb3V0ZXIgZ2l0IHRyZWVzIGFuZCBpbmplY3RzIHRoYXQgcmV2aXNpb24gaW50byBpdHMgb2JqZWN0cy4KK1RoYXQgaXNuJ3QgZGV0ZXJtaW5pc3RpYyBzbyBzdG9wIGl0LiBBbHNvIGVuc3VyZSB3ZSdyZSBub3QgbWFya2VkIGFzIGEgZGV2ZWxvcG1lbnQKK2J1aWxkIGFzIGl0cyBnaXQgZGV0ZWN0aW9uIGlzIGZhdWx0eS4KKworUlAgMjAyMC8yLzYKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KKworCitJbmRleDogbGliZ2NyeXB0LTEuOC41L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYmdjcnlwdC0xLjguNS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGxpYmdjcnlwdC0xLjguNS9jb25maWd1cmUuYWMKK0BAIC00NSw3ICs0NSw3IEBAIG00X2RlZmluZShbbXltNF9yZXZpc2lvbl9kZWNdLAorIG00X2RlZmluZShbbXltNF9iZXRhc3RyaW5nXSwKKyAgICAgICAgICAgbTRfZXN5c2NtZF9zKFtnaXQgZGVzY3JpYmUgLS1tYXRjaCAnbGliZ2NyeXB0LVswLTldLipbMC05XScgLS1sb25nfFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhd2sgLUYtICckMyE9MHtwcmludCItYmV0YSIkM30nXSkpCistbTRfZGVmaW5lKFtteW00X2lzZ2l0XSxtNF9pZihteW00X2JldGFzdHJpbmcsW10sW25vXSxbeWVzXSkpCisrbTRfZGVmaW5lKFtteW00X2lzZ2l0XSxbbm9dKQorIG00X2RlZmluZShbbXltNF9mdWxsX3ZlcnNpb25dLFtteW00X3ZlcnNpb25bXW15bTRfYmV0YXN0cmluZ10pCisgCisgQUNfSU5JVChbbGliZ2NyeXB0XSxbbXltNF9mdWxsX3ZlcnNpb25dLFtodHRwOi8vYnVncy5nbnVwZy5vcmddKQorQEAgLTI1NzUsNyArMjU3NSw3IEBAIEFNX0NPTkRJVElPTkFMKFtCVUlMRF9ET0NdLCBbdGVzdCAieCRidWkKKyAjCisgIyBQcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidWlsZC4KKyAjCistQlVJTERfUkVWSVNJT049Im15bTRfcmV2aXNpb24iCisrQlVJTERfUkVWSVNJT049Ik5vbmUiCisgQUNfU1VCU1QoQlVJTERfUkVWSVNJT04pCisgQUNfREVGSU5FX1VOUVVPVEVEKEJVSUxEX1JFVklTSU9OLCAiJEJVSUxEX1JFVklTSU9OIiwKKyAgICAgICAgICAgICAgICAgICAgW0dJVCBjb21taXQgaWQgcmV2aXNpb24gdXNlZCB0byBidWlsZCB0aGlzIHBhY2thZ2VdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuOC41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuOC41LmJiCmluZGV4IDA0Nzg1NTcuLjRlMGViMGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjguNS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjUuYmIKQEAgLTI0LDYgKzI0LDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtUHJlZmV0Y2gtR0NNLWxvb2stdXAtdGFibGVzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItQUVTLW1vdmUtbG9vay11cC10YWJsZXMtdG8tLmRhdGEtc2VjdGlvbi1hbmQtdW5zaGFyZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAzLUdDTS1tb3ZlLWxvb2stdXAtdGFibGUtdG8tLmRhdGEtc2VjdGlvbi1hbmQtdW5zaGFyZS0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGV0ZXJtaW5pc20ucGF0Y2ggXAogIgogU1JDX1VSSVttZDVzdW1dID0gIjM0OGNjNDYwMWNhMzQzMDdmYzZjZDZjOTQ1NDY3NzQzIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNiNGEyYTk0Y2I2MzdlZmY1YmRlYmJjYWY0NmY0ZDk1YzRmMjUyMDZmNDU5ODA5MzM5Y2RhZGEwZWI1NzdhYzMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvMDAwMS1Eby1ub3QtZmFpbC13aGVuLXRlc3RpbmctY29uZmlnLXNjcmlwdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvMDAwMS1Eby1ub3QtZmFpbC13aGVuLXRlc3RpbmctY29uZmlnLXNjcmlwdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTBhYjRmMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci8wMDAxLURvLW5vdC1mYWlsLXdoZW4tdGVzdGluZy1jb25maWctc2NyaXB0cy5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDEzNzgwNTg5MDk1MWI2YjU4NWMxZDIzMDk3ZTBhNTFlOGM3YThhNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjggRmViIDIwMjAgMDk6MTk6NTYgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGZhaWwgd2hlbiB0ZXN0aW5nIGNvbmZpZyBzY3JpcHRzCisKK0luIHByZXZpb3VzIHZlcnNpb25zIHRoaXMgd2FzIG5vdCBhIGhhcmQgYSBmYWlsdXJlLCBhbmQgc28gd2VudAordW5ub3RpY2VkLiBUaGUgdGVzdCBpcyB1bnN1aXRhYmxlIGZvciBidWlsZGluZyB3aXRoIHN5c3Jvb3RzIGFueXdheSBhcyB0aGUKK2ZhaWx1cmUgaXMgZHVlIHRvIHRoYXQuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgc3JjL01ha2VmaWxlLmFtIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggOTMwMzk1NC4uNzYzMDU0MCAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtMzQ0LDcgKzM0NCw2IEBAIGdwZy1lcnJvci1jb25maWc6IGdwZ3J0LWNvbmZpZyBncGctZXJyb3ItY29uZmlnLW9sZAorIAllbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIAkgIGVjaG8gIm5vIjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIAkgIGVjaG8gIioqKiAgUGxlYXNlIHJlcG9ydCB0byA8aHR0cHM6Ly9idWdzLmdudXBnLm9yZz4gd2l0aCBncGctZXJyb3ItY29uZmlnLXRlc3QubG9nIjsgXAorLQkgIGV4aXQgMTsgXAorIAlmaQorIAljcCBncGctZXJyb3ItY29uZmlnLW9sZCAkQAorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci0xLjM2LWdhd2s1LXN1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLTEuMzYtZ2F3azUtc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkzNmQxMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLTEuMzYtZ2F3azUtc3VwcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0NCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2Rldi5nbnVwZy5vcmcvVDQ0NTldCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1Gcm9tIDc4NjUwNDFjNzdmNGY3MDA1MjgyZjEwZjliNjY2NmIxOTA3MmZiZGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOSUlCRSBZdXRha2EgPGduaWliZUBmc2lqLm9yZz4KLURhdGU6IE1vbiwgMTUgQXByIDIwMTkgMTU6MTA6NDQgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gYXdrOiBQcmVwYXJlIGZvciBHYXdrIDUuMC4KLQotKiBzcmMvTWFrZWZpbGUuYW06IFVzZSBwa2dfbmFtZXNwYWNlIChpbnN0ZWFkIG9mIG5hbWVzcGFjZSkuCi0qIHNyYy9ta2Vycm5vcy5hd2s6IExpa2V3aXNlLgotKiBsYW5nL2NsL21rZXJyY29kZXMuYXdrOiBEb24ndCBlc2NhcGUgIyBpbiByZWdleHAuCi0qIHNyYy9ta2VycmNvZGVzLmF3aywgc3JjL21rZXJyY29kZXMxLmF3aywgc3JjL21rZXJyY29kZXMyLmF3azogRGl0dG8uCi0KLS0tCi0KLUluIEdhd2sgNS4wLCByZWdleHAgcm91dGluZXMgYXJlIHJlcGxhY2VkIGJ5IEdudWxpYiBpbXBsZW1lbnRhdGlvbiwKLXdoaWNoIG9ubHkgYWxsb3dzIGVzY2FwaW5nIHNwZWNpZmljIGNoYXJhY3RlcnMuCi0KLUdudVBHLWJ1Zy1pZDogNDQ1OQotUmVwb3J0ZWQtYnk6IE1hcml1cyBTY2hhbXNjaHVsYQotU2lnbmVkLW9mZi1ieTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+Ci0tLS0KLSBsYW5nL2NsL21rZXJyY29kZXMuYXdrIHwgIDIgKy0KLSBzcmMvTWFrZWZpbGUuYW0gICAgICAgIHwgIDIgKy0KLSBzcmMvbWtlcnJjb2Rlcy5hd2sgICAgIHwgIDIgKy0KLSBzcmMvbWtlcnJjb2RlczEuYXdrICAgIHwgIDIgKy0KLSBzcmMvbWtlcnJjb2RlczIuYXdrICAgIHwgIDIgKy0KLSBzcmMvbWtlcnJub3MuYXdrICAgICAgIHwgIDIgKy0KLSBzcmMvbWtzdHJ0YWJsZS5hd2sgICAgIHwgMTAgKysrKystLS0tLQotIDcgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLS0tLSBhL2xhbmcvY2wvbWtlcnJjb2Rlcy5hd2sKLSsrKyBiL2xhbmcvY2wvbWtlcnJjb2Rlcy5hd2sKLUBAIC0xMjIsNyArMTIyLDcgQEAgaGVhZGVyIHsKLSB9Ci0gCi0gIWhlYWRlciB7Ci0tICBzdWIgKC9cIy4rLywgIiIpOwotKyAgc3ViICgvIy4rLywgIiIpOwotICAgc3ViICgvWyAJXSskLywgIiIpOyAjIFN0cmlwIHRyYWlsaW5nIHNwYWNlIGFuZCB0YWIgY2hhcmFjdGVycy4KLSAKLSAgIGlmICgvXiQvKQotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC0yOTMsNyArMjkzLDcgQEAgY29kZS1mcm9tLWVycm5vLmg6IG1rZXJyY29kZXMkKEVYRUVYVF9GTwotIAotIGVycm5vcy1zeW0uaDogTWFrZWZpbGUgbWtzdHJ0YWJsZS5hd2sgZXJybm9zLmluCi0gCSQoQVdLKSAtZiAkKHNyY2RpcikvbWtzdHJ0YWJsZS5hd2sgLXYgdGV4dGlkeD0yIC12IG5vZ2V0dGV4dD0xIFwKLS0JCS12IHByZWZpeD1HUEdfRVJSXyAtdiBuYW1lc3BhY2U9ZXJybm9zXyBcCi0rCQktdiBwcmVmaXg9R1BHX0VSUl8gLXYgcGtnX25hbWVzcGFjZT1lcnJub3NfIFwKLSAJCSQoc3JjZGlyKS9lcnJub3MuaW4gPiRACi0gCi0gCi0tLS0gYS9zcmMvbWtlcnJjb2Rlcy5hd2sKLSsrKyBiL3NyYy9ta2VycmNvZGVzLmF3awotQEAgLTg1LDcgKzg1LDcgQEAgaGVhZGVyIHsKLSB9Ci0gCi0gIWhlYWRlciB7Ci0tICBzdWIgKC9cIy4rLywgIiIpOwotKyAgc3ViICgvIy4rLywgIiIpOwotICAgc3ViICgvWyAJXSskLywgIiIpOyAjIFN0cmlwIHRyYWlsaW5nIHNwYWNlIGFuZCB0YWIgY2hhcmFjdGVycy4KLSAKLSAgIGlmICgvXiQvKQotLS0tIGEvc3JjL21rZXJyY29kZXMxLmF3awotKysrIGIvc3JjL21rZXJyY29kZXMxLmF3awotQEAgLTgxLDcgKzgxLDcgQEAgaGVhZGVyIHsKLSB9Ci0gCi0gIWhlYWRlciB7Ci0tICBzdWIgKC9cIy4rLywgIiIpOwotKyAgc3ViICgvIy4rLywgIiIpOwotICAgc3ViICgvWyAJXSskLywgIiIpOyAjIFN0cmlwIHRyYWlsaW5nIHNwYWNlIGFuZCB0YWIgY2hhcmFjdGVycy4KLSAKLSAgIGlmICgvXiQvKQotLS0tIGEvc3JjL21rZXJyY29kZXMyLmF3awotKysrIGIvc3JjL21rZXJyY29kZXMyLmF3awotQEAgLTkxLDcgKzkxLDcgQEAgaGVhZGVyIHsKLSB9Ci0gCi0gIWhlYWRlciB7Ci0tICBzdWIgKC9cIy4rLywgIiIpOwotKyAgc3ViICgvIy4rLywgIiIpOwotICAgc3ViICgvWyAJXSskLywgIiIpOyAjIFN0cmlwIHRyYWlsaW5nIHNwYWNlIGFuZCB0YWIgY2hhcmFjdGVycy4KLSAKLSAgIGlmICgvXiQvKQotLS0tIGEvc3JjL21rZXJybm9zLmF3awotKysrIGIvc3JjL21rZXJybm9zLmF3awotQEAgLTgzLDcgKzgzLDcgQEAgaGVhZGVyIHsKLSB9Ci0gCi0gIWhlYWRlciB7Ci0tICBzdWIgKC9cIy4rLywgIiIpOwotKyAgc3ViICgvIy4rLywgIiIpOwotICAgc3ViICgvWyAJXSskLywgIiIpOyAjIFN0cmlwIHRyYWlsaW5nIHNwYWNlIGFuZCB0YWIgY2hhcmFjdGVycy4KLSAKLSAgIGlmICgvXiQvKQotLS0tIGEvc3JjL21rc3RydGFibGUuYXdrCi0rKysgYi9zcmMvbWtzdHJ0YWJsZS5hd2sKLUBAIC03Nyw3ICs3Nyw3IEBACi0gIwotICMgVGhlIHZhcmlhYmxlIHByZWZpeCBjYW4gYmUgdXNlZCB0byBwcmVwZW5kIGEgc3RyaW5nIHRvIGVhY2ggbWVzc2FnZS4KLSAjCi0tIyBUaGUgdmFyaWFibGUgbmFtZXNwYWNlIGNhbiBiZSB1c2VkIHRvIHByZXBlbmQgYSBzdHJpbmcgdG8gZWFjaAotKyMgVGhlIHZhcmlhYmxlIHBrZ19uYW1lc3BhY2UgY2FuIGJlIHVzZWQgdG8gcHJlcGVuZCBhIHN0cmluZyB0byBlYWNoCi0gIyB2YXJpYWJsZSBhbmQgbWFjcm8gbmFtZS4KLSAKLSBCRUdJTiB7Ci1AQCAtMTAyLDcgKzEwMiw3IEBAIGhlYWRlciB7Ci0gICAgICAgcHJpbnQgIi8qIFRoZSBwdXJwb3NlIG9mIHRoaXMgY29tcGxleCBzdHJpbmcgdGFibGUgaXMgdG8gcHJvZHVjZSI7Ci0gICAgICAgcHJpbnQgIiAgIG9wdGltYWwgY29kZSB3aXRoIGEgbWluaW11bSBvZiByZWxvY2F0aW9ucy4gICovIjsKLSAgICAgICBwcmludCAiIjsKLS0gICAgICBwcmludCAic3RhdGljIGNvbnN0IGNoYXIgIiBuYW1lc3BhY2UgIm1zZ3N0cltdID0gIjsKLSsgICAgICBwcmludCAic3RhdGljIGNvbnN0IGNoYXIgIiBwa2dfbmFtZXNwYWNlICJtc2dzdHJbXSA9ICI7Ci0gICAgICAgaGVhZGVyID0gMDsKLSAgICAgfQotICAgZWxzZQotQEAgLTExMCw3ICsxMTAsNyBAQCBoZWFkZXIgewotIH0KLSAKLSAhaGVhZGVyIHsKLS0gIHN1YiAoL1wjLisvLCAiIik7Ci0rICBzdWIgKC8jLisvLCAiIik7Ci0gICBzdWIgKC9bIAldKyQvLCAiIik7ICMgU3RyaXAgdHJhaWxpbmcgc3BhY2UgYW5kIHRhYiBjaGFyYWN0ZXJzLgotIAotICAgaWYgKC9eJC8pCi1AQCAtMTUwLDcgKzE1MCw3IEBAIEVORCB7Ci0gICBlbHNlCi0gICAgIHByaW50ICIgIGdldHRleHRfbm9vcCAoXCIiIGxhc3RfbXNnc3RyICJcIik7IjsKLSAgIHByaW50ICIiOwotLSAgcHJpbnQgInN0YXRpYyBjb25zdCBpbnQgIiBuYW1lc3BhY2UgIm1zZ2lkeFtdID0iOwotKyAgcHJpbnQgInN0YXRpYyBjb25zdCBpbnQgIiBwa2dfbmFtZXNwYWNlICJtc2dpZHhbXSA9IjsKLSAgIHByaW50ICIgIHsiOwotICAgZm9yIChpID0gMDsgaSA8IGNvZGVkX21zZ3M7IGkrKykKLSAgICAgcHJpbnQgIiAgICAiIHBvc1tpXSAiLCI7Ci1AQCAtMTU4LDcgKzE1OCw3IEBAIEVORCB7Ci0gICBwcmludCAiICB9OyI7Ci0gICBwcmludCAiIjsKLSAgIHByaW50ICJzdGF0aWMgR1BHX0VSUl9JTkxJTkUgaW50IjsKLS0gIHByaW50IG5hbWVzcGFjZSAibXNnaWR4b2YgKGludCBjb2RlKSI7Ci0rICBwcmludCBwa2dfbmFtZXNwYWNlICJtc2dpZHhvZiAoaW50IGNvZGUpIjsKLSAgIHByaW50ICJ7IjsKLSAgIHByaW50ICIgIHJldHVybiAoMCA/IDAiOwotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMzYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4zNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjExYWIwNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4zNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLVNVTU1BUlkgPSAiU21hbGwgbGlicmFyeSB0aGF0IGRlZmluZXMgY29tbW9uIGVycm9yIHZhbHVlcyBmb3IgYWxsIEdudVBHIGNvbXBvbmVudHMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9yZWxhdGVkX3NvZnR3YXJlL2xpYmdwZy1lcnJvci8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2dwZy1lcnJvci5oLmluO2JlZ2lubGluZT0yO2VuZGxpbmU9MTg7bWQ1PWNkOTFlM2FkMTI2NWEwYzI2OGVmYWQ1NDFhMzkzNDVlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9pbml0LmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9ZjAxY2RmY2Y3NDdhZjUzODA1OTBjZmQ5YmJmZWFhZjciCi0KLQotU0VDVElPTiA9ICJsaWJzIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKLVNSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3ItJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGliZ3BnLWVycm9yLTEuMzYtZ2F3azUtc3VwcG9ydC5wYXRjaCBcCi0JICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlZmY0MzdmMzk3ZTg1OGE5MTI3Yjc2YzBkODdmYTVlZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiYWJkOTg0MzcyMDhjMTYzMTc1YzI5NDUzZjg2ODEwOTRiY2FmOTI5NjhhMTVjYWZiMWEyNzYwNzZiMzNjOTdjIgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2dwZy1lcnJvci1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcgZ2V0dGV4dCBtdWx0aWxpYl9oZWFkZXIgbXVsdGlsaWJfc2NyaXB0Ci0KLU1VTFRJTElCX1NDUklQVFMgPSAiJHtQTn0tZGV2OiR7YmluZGlyfS9ncGdydC1jb25maWciCi0KLUNQUEZMQUdTICs9ICItUCIKLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQlUQVJHRVRfRklMRT1saW51eC1nbnUKLQlpZiBbICR7VEFSR0VUX09TfSA9ICJtaW5ndzMyIiBdOyB0aGVuCi0JCSMgVGhlcmUgYXJlIG5vIGFyY2ggc3BlY2lmaWMgc3lzY2ZnIGZpbGVzIGZvciBtaW5ndzMyCi0JCVRBUkdFVF9GSUxFPQotCWVsaWYgWyAke1RBUkdFVF9BUkNIfSA9ICJhcmMiIF07IHRoZW4KLQkJIyBBUkMgc3lzY2ZnIGZpbGUgaXMgYXV0b21hdGljYWxseSBhbGlhc2VkIHRvIGk2ODYtcGMtbGludXgtZ251Ci0JCVRBUkdFVF9GSUxFPQotCWVsaWYgWyAke1RBUkdFVF9PU30gIT0gImxpbnV4IiBdOyB0aGVuCi0JCVRBUkdFVF9GSUxFPSR7VEFSR0VUX09TfQotCWZpCi0KLQljYXNlICR7VEFSR0VUX0FSQ0h9IGluCi0JICBhYXJjaDY0X2JlKSBUVVBMRT1hYXJjaDY0LXVua25vd24tbGludXgtZ251IDs7Ci0JICBhcm0pCSAgICAgIFRVUExFPWFybS11bmtub3duLWxpbnV4LWdudWVhYmkgOzsKLQkgIGFybWViKSAgICAgIFRVUExFPWFybS11bmtub3duLWxpbnV4LWdudWVhYmkgOzsKLQkgIGk1ODZ8aTY4NikgIFRVUExFPWk2ODYtdW5rbm93bi1saW51eC1nbnU7OwotCSAgbWlwczY0KikgICAgVFVQTEU9bWlwczY0ZWwtdW5rbm93bi1saW51eC1nbnVhYmk2NCA7OwotCSAgbWlwcyplbCkgICAgVFVQTEU9bWlwc2VsLXVua25vd24tbGludXgtZ251IDs7Ci0JICBtaXBzKikgICAgICBUVVBMRT1taXBzLXVua25vd24tbGludXgtZ251IDs7Ci0JICB4ODZfNjQpICAgICBUVVBMRT14ODZfNjQtdW5rbm93bi1saW51eC1nbnUgOzsKLQkgIHBwYykgICAgICAgIFRVUExFPXBvd2VycGMtdW5rbm93bi1saW51eC1nbnUgOzsKLQkgIHBwYzY0KSAgICAgIFRVUExFPXBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudSA7OwotCSAgcHBjNjRsZSkgICAgVFVQTEU9cG93ZXJwYzY0bGUtdW5rbm93bi1saW51eC1nbnUgOzsKLQkgICopICAgICAgICAgIFRVUExFPSR7VEFSR0VUX0FSQ0h9LXVua25vd24tbGludXgtZ251IDs7Ci0JZXNhYwotCi0JaWYgWyAtbiAiJFRBUkdFVF9GSUxFIiBdOyB0aGVuCi0JCWNwICR7U30vc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuJFRVUExFLmggXAotCQkJJHtTfS9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi4kVEFSR0VUX0ZJTEUuaAotCWZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgd2UgZG9uJ3QgaGF2ZSBjb21tb24gbGlzcCBpbiBPRQotCXJtIC1yZiAiJHtEfSR7ZGF0YWRpcn0vY29tbW9uLWxpc3AvIgotCW9lX211bHRpbGliX2hlYWRlciBncGctZXJyb3IuaCBncGdydC5oCi19Ci0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2dwZy1lcnJvciIKLUZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9saWJncGctZXJyb3IvZXJyb3JyZWYudHh0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4zNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjM3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5YTJiMDEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4zNy5iYgpAQCAtMCwwICsxLDcyIEBACitTVU1NQVJZID0gIlNtYWxsIGxpYnJhcnkgdGhhdCBkZWZpbmVzIGNvbW1vbiBlcnJvciB2YWx1ZXMgZm9yIGFsbCBHbnVQRyBjb21wb25lbnRzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvcmVsYXRlZF9zb2Z0d2FyZS9saWJncGctZXJyb3IvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9ncGctZXJyb3IuaC5pbjtiZWdpbmxpbmU9MjtlbmRsaW5lPTE4O21kNT1jZDkxZTNhZDEyNjVhMGMyNjhlZmFkNTQxYTM5MzQ1ZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaW5pdC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWYwMWNkZmNmNzQ3YWY1MzgwNTkwY2ZkOWJiZmVhYWY3IgorCisKK1NFQ1RJT04gPSAibGlicyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWZhaWwtd2hlbi10ZXN0aW5nLWNvbmZpZy1zY3JpcHRzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzI5ZjIyZDkxNzQ5NGZkYzRiNTRmY2U1YWE2NTQ3YzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjMyZDZmZjcyYTczY2Y3OTc5N2Y3ZjJkMDM5ZTk1ZTljNmY5MmYwYzE0NTAyMTU0MTA4NDBhYjYyYWVhOTc2MyIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9ncGctZXJyb3ItY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnIGdldHRleHQgbXVsdGlsaWJfaGVhZGVyIG11bHRpbGliX3NjcmlwdAorCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWRldjoke2JpbmRpcn0vZ3BncnQtY29uZmlnIgorCitDUFBGTEFHUyArPSAiLVAiCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJVEFSR0VUX0ZJTEU9bGludXgtZ251CisJaWYgWyAke1RBUkdFVF9PU30gPSAibWluZ3czMiIgXTsgdGhlbgorCQkjIFRoZXJlIGFyZSBubyBhcmNoIHNwZWNpZmljIHN5c2NmZyBmaWxlcyBmb3IgbWluZ3czMgorCQlUQVJHRVRfRklMRT0KKwllbGlmIFsgJHtUQVJHRVRfQVJDSH0gPSAiYXJjIiBdOyB0aGVuCisJCSMgQVJDIHN5c2NmZyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgYWxpYXNlZCB0byBpNjg2LXBjLWxpbnV4LWdudQorCQlUQVJHRVRfRklMRT0KKwllbGlmIFsgJHtUQVJHRVRfT1N9ICE9ICJsaW51eCIgXTsgdGhlbgorCQlUQVJHRVRfRklMRT0ke1RBUkdFVF9PU30KKwlmaQorCisJY2FzZSAke1RBUkdFVF9BUkNIfSBpbgorCSAgYWFyY2g2NF9iZSkgVFVQTEU9YWFyY2g2NC11bmtub3duLWxpbnV4LWdudSA7OworCSAgYXJtKQkgICAgICBUVVBMRT1hcm0tdW5rbm93bi1saW51eC1nbnVlYWJpIDs7CisJICBhcm1lYikgICAgICBUVVBMRT1hcm0tdW5rbm93bi1saW51eC1nbnVlYWJpIDs7CisJICBpNTg2fGk2ODYpICBUVVBMRT1pNjg2LXVua25vd24tbGludXgtZ251OzsKKwkgIG1pcHM2NCopICAgIFRVUExFPW1pcHM2NGVsLXVua25vd24tbGludXgtZ251YWJpNjQgOzsKKwkgIG1pcHMqZWwpICAgIFRVUExFPW1pcHNlbC11bmtub3duLWxpbnV4LWdudSA7OworCSAgbWlwcyopICAgICAgVFVQTEU9bWlwcy11bmtub3duLWxpbnV4LWdudSA7OworCSAgeDg2XzY0KSAgICAgVFVQTEU9eDg2XzY0LXVua25vd24tbGludXgtZ251IDs7CisJICBwcGMpICAgICAgICBUVVBMRT1wb3dlcnBjLXVua25vd24tbGludXgtZ251IDs7CisJICBwcGM2NCkgICAgICBUVVBMRT1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUgOzsKKwkgIHBwYzY0bGUpICAgIFRVUExFPXBvd2VycGM2NGxlLXVua25vd24tbGludXgtZ251IDs7CisJICAqKSAgICAgICAgICBUVVBMRT0ke1RBUkdFVF9BUkNIfS11bmtub3duLWxpbnV4LWdudSA7OworCWVzYWMKKworCWlmIFsgLW4gIiRUQVJHRVRfRklMRSIgXTsgdGhlbgorCQljcCAke1N9L3NyYy9zeXNjZmcvbG9jay1vYmotcHViLiRUVVBMRS5oIFwKKwkJCSR7U30vc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuJFRBUkdFVF9GSUxFLmgKKwlmaQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIHdlIGRvbid0IGhhdmUgY29tbW9uIGxpc3AgaW4gT0UKKwlybSAtcmYgIiR7RH0ke2RhdGFkaXJ9L2NvbW1vbi1saXNwLyIKKwlvZV9tdWx0aWxpYl9oZWFkZXIgZ3BnLWVycm9yLmggZ3BncnQuaAorfQorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9ncGctZXJyb3IiCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vbGliZ3BnLWVycm9yL2Vycm9ycmVmLnR4dCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWxfMy4wLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbF8zLjAuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjliZTg5OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbF8zLjAuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLVNVTU1BUlkgPSAiaUNhbCBhbmQgc2NoZWR1bGluZyAoUkZDIDI0NDUsIDI0NDYsIDI0NDcpIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsL2lzc3VlcyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEgfCBNUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTkxMGEyYTc2ZGRmNmE5YmEzNjkxODI0OTQxNzBkODcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5MR1BMMjEudHh0O21kNT05MzNhZGI1NjFmMTU5ZTdjM2RhMDc5NTM2ZjBlZDg3MSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLk1QTDIudHh0O21kNT05NzQxYzM0NmVlZjU2MTMxMTYzZTEzYjlkYjEyNDFiMyIKLVNFQ1RJT04gPSAibGlicyIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQfS50YXIuZ3ogXAotICAgIGZpbGU6Ly8wMDAxLVVzZS1vdXItaGFuZC1idWlsZC1uYXRpdmUtc3JjLWdlbmVyYXRvci5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNDYzYTU5MjQ0YzY3NjdiOGU2N2IyOTM3OTQwNWUyOTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWM4YTIxYzJiNzMyZWNlNGEzM2U1Yzg2Mjk3MGI0ZjM1YTg1NDhiYmNkYTUwZGU1Njk1ZjZmYzIxMWFjNGQ5NyIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsL3JlbGVhc2VzIgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0JIyBBcyBsb25nIGFzIGh0dHBzOi8vZ2l0aHViLmNvbS9saWJpY2FsL2xpYmljYWwvaXNzdWVzLzM5NCBpcyBvcGVuIGJ1aWxkIG5hdGl2ZSBzcmMtZ2VuZXJhdG9yIG1hbnVhbGx5Ci0JTkFUSVZFX0NGTEFHUz0iJHtCVUlMRF9DRkxBR1N9IGBwa2ctY29uZmlnLW5hdGl2ZSAtLWNmbGFncyBnbGliLTIuMGAgYHBrZy1jb25maWctbmF0aXZlIC0tY2ZsYWdzIGxpYnhtbC0yLjBgIgotCU5BVElWRV9MREZMQUdTPSIke0JVSUxEX0xERkxBR1N9IGBwa2ctY29uZmlnLW5hdGl2ZSAtLWxpYnMgZ2xpYi0yLjBgIGBwa2ctY29uZmlnLW5hdGl2ZSAtLWxpYnMgbGlieG1sLTIuMGAiCi0JJHtCVUlMRF9DQ30gJE5BVElWRV9DRkxBR1MgJHtTfS9zcmMvbGliaWNhbC1nbGliL3Rvb2xzL2dlbmVyYXRvci5jICR7U30vc3JjL2xpYmljYWwtZ2xpYi90b29scy94bWwtcGFyc2VyLmMgLW8gJHtCfS9zcmMtZ2VuZXJhdG9yICROQVRJVkVfTERGTEFHUwotfQotCi1QQUNLQUdFQ09ORklHID8/PSAiaWN1IGdsaWIiCi1QQUNLQUdFQ09ORklHW2JkYl0gPSAiLC1EQ01BS0VfRElTQUJMRV9GSU5EX1BBQ0tBR0VfQkRCPVRydWUsZGIiCi1QQUNLQUdFQ09ORklHW2dsaWJdID0gIi1ESUNBTF9HTElCPVRydWUsLURJQ0FMX0dMSUI9RmFsc2UsZ2xpYi0yLjAtbmF0aXZlIGxpYnhtbDItbmF0aXZlIGdsaWItMi4wIGxpYnhtbDIiCi0jIElDVSBpcyB1c2VkIGZvciBSU0NBTEUgKFJGQzc1MjkpIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbaWN1XSA9ICIsLURDTUFLRV9ESVNBQkxFX0ZJTkRfUEFDS0FHRV9JQ1U9VHJ1ZSxpY3UiCi0KLSMgTm8gbmVlZCB0byB1c2UgcGVybC1uYXRpdmUsIHRoZSBob3N0IHBlcmwgaXMgc3VmZmljaWVudC4KLUVYVFJBX09FQ01BS0UgKz0gIi1EUEVSTF9FWEVDVVRBQkxFPSR7SE9TVFRPT0xTX0RJUn0vcGVybCIKLSMgZG9jIGJ1aWxkIGZhaWxzIHdpdGggbGlua2VyIGVycm9yICg/PykgZm9yIGxpYmljYWwtZ2xpYiBzbyBkaXNhYmxlIGl0Ci1FWFRSQV9PRUNNQUtFICs9ICItRElDQUxfQlVJTERfRE9DUz1mYWxzZSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgICMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcwotICAgIHNlZCAtaSBcCi0gICAgICAgLWUgJ3MsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LGcnIFwKLSAgICAgICAke0R9JHtsaWJkaXJ9L2NtYWtlL0xpYkljYWwvTGliSWNhbCouY21ha2UKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNhbC9saWJpY2FsXzMuMC43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWxfMy4wLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUwNDczZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNhbC9saWJpY2FsXzMuMC43LmJiCkBAIC0wLDAgKzEsNDUgQEAKK1NVTU1BUlkgPSAiaUNhbCBhbmQgc2NoZWR1bGluZyAoUkZDIDI0NDUsIDI0NDYsIDI0NDcpIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsL2lzc3VlcyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgfCBNUEwtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTkxMGEyYTc2ZGRmNmE5YmEzNjkxODI0OTQxNzBkODcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5MR1BMMjEudHh0O21kNT05MzNhZGI1NjFmMTU5ZTdjM2RhMDc5NTM2ZjBlZDg3MSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLk1QTDIudHh0O21kNT1mNzVkMjkyN2QzYzFlZDI0MTRlZjcyMDQ4ZjVhZDY0MCBcCisgICAgICAgICAgICAgICAgICAgICIKK1NFQ1RJT04gPSAibGlicyIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQfS50YXIuZ3ogXAorICAgIGZpbGU6Ly8wMDAxLVVzZS1vdXItaGFuZC1idWlsZC1uYXRpdmUtc3JjLWdlbmVyYXRvci5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiOGE1ZDA3YTdmYmE5ZTczYTg1ZTY3Zjc2MjU4YmYwNDIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGFiZTY2ZGYxZWE4MjZlNTdkYjdmMjgxYzcwNGVkZTgzNGM4NDEzOTAxMmU2YzY4NmVhN2FkYWZkNGU3NjNmYyIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsL3JlbGVhc2VzIgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZworCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJIyBBcyBsb25nIGFzIGh0dHBzOi8vZ2l0aHViLmNvbS9saWJpY2FsL2xpYmljYWwvaXNzdWVzLzM5NCBpcyBvcGVuIGJ1aWxkIG5hdGl2ZSBzcmMtZ2VuZXJhdG9yIG1hbnVhbGx5CisJTkFUSVZFX0NGTEFHUz0iJHtCVUlMRF9DRkxBR1N9IGBwa2ctY29uZmlnLW5hdGl2ZSAtLWNmbGFncyBnbGliLTIuMGAgYHBrZy1jb25maWctbmF0aXZlIC0tY2ZsYWdzIGxpYnhtbC0yLjBgIgorCU5BVElWRV9MREZMQUdTPSIke0JVSUxEX0xERkxBR1N9IGBwa2ctY29uZmlnLW5hdGl2ZSAtLWxpYnMgZ2xpYi0yLjBgIGBwa2ctY29uZmlnLW5hdGl2ZSAtLWxpYnMgbGlieG1sLTIuMGAiCisJJHtCVUlMRF9DQ30gJE5BVElWRV9DRkxBR1MgJHtTfS9zcmMvbGliaWNhbC1nbGliL3Rvb2xzL2dlbmVyYXRvci5jICR7U30vc3JjL2xpYmljYWwtZ2xpYi90b29scy94bWwtcGFyc2VyLmMgLW8gJHtCfS9zcmMtZ2VuZXJhdG9yICROQVRJVkVfTERGTEFHUworfQorCitQQUNLQUdFQ09ORklHID8/PSAiaWN1IGdsaWIiCitQQUNLQUdFQ09ORklHW2JkYl0gPSAiLC1EQ01BS0VfRElTQUJMRV9GSU5EX1BBQ0tBR0VfQkRCPVRydWUsZGIiCitQQUNLQUdFQ09ORklHW2dsaWJdID0gIi1ESUNBTF9HTElCPVRydWUsLURJQ0FMX0dMSUI9RmFsc2UsZ2xpYi0yLjAtbmF0aXZlIGxpYnhtbDItbmF0aXZlIGdsaWItMi4wIGxpYnhtbDIiCisjIElDVSBpcyB1c2VkIGZvciBSU0NBTEUgKFJGQzc1MjkpIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbaWN1XSA9ICIsLURDTUFLRV9ESVNBQkxFX0ZJTkRfUEFDS0FHRV9JQ1U9VHJ1ZSxpY3UiCisKKyMgTm8gbmVlZCB0byB1c2UgcGVybC1uYXRpdmUsIHRoZSBob3N0IHBlcmwgaXMgc3VmZmljaWVudC4KK0VYVFJBX09FQ01BS0UgKz0gIi1EUEVSTF9FWEVDVVRBQkxFPSR7SE9TVFRPT0xTX0RJUn0vcGVybCIKKyMgZG9jIGJ1aWxkIGZhaWxzIHdpdGggbGlua2VyIGVycm9yICg/PykgZm9yIGxpYmljYWwtZ2xpYiBzbyBkaXNhYmxlIGl0CitFWFRSQV9PRUNNQUtFICs9ICItRElDQUxfQlVJTERfRE9DUz1mYWxzZSIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcworICAgIHNlZCAtaSBcCisgICAgICAgLWUgJ3MsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LGcnIFwKKyAgICAgICAtZSAncywke1NUQUdJTkdfSU5DRElSfSwke2luY2x1ZGVkaXJ9LGcnIFwKKyAgICAgICAke0R9JHtsaWJkaXJ9L2NtYWtlL0xpYkljYWwvTGliSWNhbCouY21ha2UKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaml0dGVyZW50cm9weS9maWxlcy8wMDAxLU1ha2UtbWFuLXBhZ2VzLXJlcHJvZHVjaWJsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaml0dGVyZW50cm9weS9maWxlcy8wMDAxLU1ha2UtbWFuLXBhZ2VzLXJlcHJvZHVjaWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODZmZDI2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2ZpbGVzLzAwMDEtTWFrZS1tYW4tcGFnZXMtcmVwcm9kdWNpYmxlLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gY2UwOTE3MTg3MTY0MDAxMTlkNmJlNmJkNjM3YzBlM2Y0ZjZjYTMxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjEgTm92IDIwMTkgMDg6MDc6NDEgLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZSBtYW4gcGFnZXMgcmVwcm9kdWNpYmxlCisKK0luc3RydWN0cyB0aGUgbWFuIHBhZ2UgdG8gYmUgZ3ppcCdlZCB3aXRob3V0IHRoZSBmaWxlIG5hbWUgb3IgdGltZXN0YW1wCitzbyB0aGF0IGl0IGJ1aWxkcyByZXByb2R1Y2libHkuCisKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zbXVlbGxlckREL2ppdHRlcmVudHJvcHktbGlicmFyeS9wdWxsLzE0XQorU2lnbmVkLW9mZi1ieTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCAyZTc4NjA3Li44NjBiNzIwIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtNjAsNyArNjAsNyBAQCBjcHBjaGVjazoKKyBpbnN0YWxsOgorIAlpbnN0YWxsIC1kIC1tIDA3NTUgJChERVNURElSKSQoUFJFRklYKS9zaGFyZS9tYW4vbWFuMworIAlpbnN0YWxsIC1tIDY0NCBkb2MvJChOQU1FKS4zICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjMvCistCWd6aXAgLWYgLTkgJChERVNURElSKSQoUFJFRklYKS9zaGFyZS9tYW4vbWFuMy8kKE5BTUUpLjMKKysJZ3ppcCAtbiAtZiAtOSAkKERFU1RESVIpJChQUkVGSVgpL3NoYXJlL21hbi9tYW4zLyQoTkFNRSkuMworIAlpbnN0YWxsIC1kIC1tIDA3NTUgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikKKyAJJChJTlNUQUxMX1NUUklQKSAtbSAwNzU1IGxpYiQoTkFNRSkuc28uJChMSUJWRVJTSU9OKSAkKERFU1RESVIpJChQUkVGSVgpLyQoTElCRElSKS8KKyAJaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikkKFBSRUZJWCkvJChJTkNESVIpCistLSAKKzIuMjMuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmppdHRlcmVudHJvcHkvZmlsZXMvMDAwMS1NYWtlZmlsZS1jbGVhbnVwLWluc3RhbGwtZm9yLXJlYnVpbGRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2ZpbGVzLzAwMDEtTWFrZWZpbGUtY2xlYW51cC1pbnN0YWxsLWZvci1yZWJ1aWxkcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTliMjUyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2ZpbGVzLzAwMDEtTWFrZWZpbGUtY2xlYW51cC1pbnN0YWxsLWZvci1yZWJ1aWxkcy5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIDA2MGI5YjQxNDdmNmU1ZmYzODZhOGIwMTc3OTYxMThkNzgzZTU5ZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IFdlYmVyIDxtYXR0aGV3LndlYmVyQHJvY2t3ZWxsY29sbGlucy5jb20+CitEYXRlOiBUdWUsIDIyIE9jdCAyMDE5IDEyOjQ0OjMwIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBjbGVhbnVwIGluc3RhbGwgZm9yIHJlYnVpbGRzCisKK1N1cHBvcnQgdGhlIGFiaWxpdHkgdG8gcmVidWlsZCBhbmQgcmVkZXBsb3kgd2l0aG91dCBhIGNsZWFuLiBUaGlzCityZXF1aXJlZCBzb21lIGZvcmNlIGxpbmtpbmcgYW5kIG1hbiBhcmNoaXZlIGNyZWF0aW9uLgorCitQcm92aWRlIHRoZSBhYmlsaXR5IHRvIG92ZXJyaWRlIHRoZSBzdHJpcHBpbmcgb2YgdGhlIHNoYXJlZCBsaWIgZm9yCitjYXNlcyB3aGVyZSBhIGVtYmVkZGVkIHRhcmdldCBidWlsZCBtYXkgd2FudCB0byBjb250cm9sIHN0cmlwcGluZworb3IgcHJvdmlkZSBjcm9zcyBhcmNoIHRvb2xzLgorCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFswNjBiOWI0MTQ3ZjZlNWZmMzg2YThiMDE3Nzk2MTE4ZDc4M2U1OWZhXQorU2lnbmVkLW9mZi1ieTogTWF0dGhldyBXZWJlciA8bWF0dGhldy53ZWJlckByb2Nrd2VsbGNvbGxpbnMuY29tPgorU2lnbmVkLW9mZi1ieTogU3RlcGhhbiBNdWVsbGVyIDxzbXVlbGxlckBjaHJvbm94LmRlPgorU2lnbmVkLW9mZi1ieTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUgfCAxMCArKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDRmZjA2OWIuLjJlNzg2MDcgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0xNCw2ICsxNCw4IEBAIExJQkRJUiA6PSBsaWIKKyAjIGluY2x1ZGUgdGFyZ2V0IGRpcmVjdG9yeQorIElOQ0RJUiA6PSBpbmNsdWRlCisgCisrSU5TVEFMTF9TVFJJUCA/PSBpbnN0YWxsIC1zCisrCisgTkFNRSA6PSBqaXR0ZXJlbnRyb3B5CisgTElCTUFKT1I9JChzaGVsbCBjYXQgaml0dGVyZW50cm9weS1iYXNlLmMgfCBncmVwIGRlZmluZSB8IGdyZXAgTUFKVkVSU0lPTiB8IGF3ayAne3ByaW50ICQkM30nKQorIExJQk1JTk9SPSQoc2hlbGwgY2F0IGppdHRlcmVudHJvcHktYmFzZS5jIHwgZ3JlcCBkZWZpbmUgfCBncmVwIE1JTlZFUlNJT04gfCBhd2sgJ3twcmludCAkJDN9JykKK0BAIC01OCwxNSArNjAsMTUgQEAgY3BwY2hlY2s6CisgaW5zdGFsbDoKKyAJaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjMKKyAJaW5zdGFsbCAtbSA2NDQgZG9jLyQoTkFNRSkuMyAkKERFU1RESVIpJChQUkVGSVgpL3NoYXJlL21hbi9tYW4zLworLQlnemlwIC05ICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjMvJChOQU1FKS4zCisrCWd6aXAgLWYgLTkgJChERVNURElSKSQoUFJFRklYKS9zaGFyZS9tYW4vbWFuMy8kKE5BTUUpLjMKKyAJaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpCistCWluc3RhbGwgLW0gMDc1NSAtcyBsaWIkKE5BTUUpLnNvLiQoTElCVkVSU0lPTikgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikvCisrCSQoSU5TVEFMTF9TVFJJUCkgLW0gMDc1NSBsaWIkKE5BTUUpLnNvLiQoTElCVkVSU0lPTikgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikvCisgCWluc3RhbGwgLWQgLW0gMDc1NSAkKERFU1RESVIpJChQUkVGSVgpLyQoSU5DRElSKQorIAlpbnN0YWxsIC1tIDA2NDQgaml0dGVyZW50cm9weS5oICQoREVTVERJUikkKFBSRUZJWCkvJChJTkNESVIpLworIAlpbnN0YWxsIC1tIDA2NDQgaml0dGVyZW50cm9weS1iYXNlLXVzZXIuaCAkKERFU1RESVIpJChQUkVGSVgpLyQoSU5DRElSKS8KKyAJJChSTSkgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikvbGliJChOQU1FKS5zby4kKExJQk1BSk9SKQorLQlsbiAtcyBsaWIkKE5BTUUpLnNvLiQoTElCVkVSU0lPTikgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikvbGliJChOQU1FKS5zby4kKExJQk1BSk9SKQorLQlsbiAtcyBsaWIkKE5BTUUpLnNvLiQoTElCTUFKT1IpICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpL2xpYiQoTkFNRSkuc28KKysJbG4gLXNmIGxpYiQoTkFNRSkuc28uJChMSUJWRVJTSU9OKSAkKERFU1RESVIpJChQUkVGSVgpLyQoTElCRElSKS9saWIkKE5BTUUpLnNvLiQoTElCTUFKT1IpCisrCWxuIC1zZiBsaWIkKE5BTUUpLnNvLiQoTElCTUFKT1IpICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpL2xpYiQoTkFNRSkuc28KKyAKKyBjbGVhbjoKKyAJQC0gJChSTSkgJChOQU1FKQorLS0gCisyLjIzLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2ZpbGVzLzAwMDEtZml4LWRvX2luc3RhbGwtZmFpbHVyZS1vbi1vZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaml0dGVyZW50cm9weS9maWxlcy8wMDAxLWZpeC1kb19pbnN0YWxsLWZhaWx1cmUtb24tb2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwZmY0ZmUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2ZpbGVzLzAwMDEtZml4LWRvX2luc3RhbGwtZmFpbHVyZS1vbi1vZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gMDBjZWZjYTBlZWZlY2VjNjU3OTY5YjUwY2Q0ZTFlZDViMDU3YTg1NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMjUgT2N0IDIwMTggMTY6MzA6MDYgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gZml4IGRvX2luc3RhbGwgZmFpbHVyZSBvbiBvZQotCi0tIERvIG5vdCBzdHJpcCBhdCBkb19pbnN0YWxsCi0KLS0gQ3JlYXRlIGluY2x1ZGVkaXIKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIE1ha2VmaWxlIHwgMyArKy0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCA1ZTMxMjc2Li43NmZjYmZhIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtNTEsNyArNTEsOCBAQCBpbnN0YWxsOgotIAlpbnN0YWxsIC1tIDY0NCBkb2MvJChOQU1FKS4zICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjMvCi0gCWd6aXAgLTkgJChERVNURElSKSQoUFJFRklYKS9zaGFyZS9tYW4vbWFuMy8kKE5BTUUpLjMKLSAJaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpCi0tCWluc3RhbGwgLW0gMDc1NSAtcyBsaWIkKE5BTUUpLnNvLiQoTElCVkVSU0lPTikgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikvCi0rCWluc3RhbGwgLW0gMDc1NSBsaWIkKE5BTUUpLnNvLiQoTElCVkVSU0lPTikgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikvCi0rCWluc3RhbGwgLWQgLW0gMDc1NSAkKERFU1RESVIpJChQUkVGSVgpLyQoSU5DRElSKS8KLSAJaW5zdGFsbCAtbSAwNjQ0IGppdHRlcmVudHJvcHkuaCAkKERFU1RESVIpJChQUkVGSVgpLyQoSU5DRElSKS8KLSAJaW5zdGFsbCAtbSAwNjQ0IGppdHRlcmVudHJvcHktYmFzZS11c2VyLmggJChERVNURElSKSQoUFJFRklYKS8kKElOQ0RJUikvCi0gCSQoUk0pICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpL2xpYiQoTkFNRSkuc28uJChMSUJNQUpPUikKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2xpYmppdHRlcmVudHJvcHlfMi4xLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmppdHRlcmVudHJvcHkvbGliaml0dGVyZW50cm9weV8yLjEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I1YjRlNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmppdHRlcmVudHJvcHkvbGliaml0dGVyZW50cm9weV8yLjEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVNVTU1BUlkgPSAiSGFyZHdhcmUgUk5HIGJhc2VkIG9uIENQVSB0aW1pbmcgaml0dGVyIgotREVTQ1JJUFRJT04gPSAiVGhlIEppdHRlciBSTkcgcHJvdmlkZXMgYSBub2lzZSBzb3VyY2UgdXNpbmcgdGhlIENQVSBleGVjdXRpb24gdGltaW5nIGppdHRlci4gXAotSXQgZG9lcyBub3QgZGVwZW5kIG9uIGFueSBzeXN0ZW0gcmVzb3VyY2Ugb3RoZXIgdGhhbiBhIGhpZ2gtcmVzb2x1dGlvbiB0aW1lIFwKLXN0YW1wLiBJdCBpcyBhIHNtYWxsLXNjYWxlLCB5ZXQgZmFzdCBlbnRyb3B5IHNvdXJjZSB0aGF0IGlzIHZpYWJsZSBpbiBhbG1vc3QgXAotYWxsIGVudmlyb25tZW50cyBhbmQgb24gYSBsb3Qgb2YgQ1BVIGFyY2hpdGVjdHVyZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5jaHJvbm94LmRlL2plbnQuaHRtbCIKLUxJQ0VOU0UgPSAiR1BMdjIrIHwgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTUyMzY1NzUyYjM2Y2ZjZDdmOTYwMWQ4MGRlN2Q4YzYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5ncGx2MjttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5ic2Q7bWQ1PTY2YTVjZWRhZjYyYzRiMjYzNzAyNWYwNDlmOWI4MjZmIFwKLSAgICAgICAgICAgICAgICAgICAiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc211ZWxsZXJERC9qaXR0ZXJlbnRyb3B5LWxpYnJhcnkuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWRvX2luc3RhbGwtZmFpbHVyZS1vbi1vZS5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDUkVWID0gImY1YTgwYzZmM2ZjYzZkZWViZDBlYWJmNzUzMjRmNDhhZWQxYWZiY2UiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgotCi1MREZMQUdTICs9ICItV2wsLU8wIgotCi1kb19pbnN0YWxsICgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgSU5DRElSPSIvaW5jbHVkZSIgXAotICAgICAgICAgICAgICAgICAgICAgICBERVNURElSPSIke0R9IiBcCi0gICAgICAgICAgICAgICAgICAgICAgIFBSRUZJWD0iJHtleGVjX3ByZWZpeH0iIFwKLSAgICAgICAgICAgICAgICAgICAgICAgTElCRElSPSIke2Jhc2VsaWJ9IgotfQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmppdHRlcmVudHJvcHkvbGliaml0dGVyZW50cm9weV8yLjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaml0dGVyZW50cm9weS9saWJqaXR0ZXJlbnRyb3B5XzIuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMGVmMDEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmppdHRlcmVudHJvcHkvbGliaml0dGVyZW50cm9weV8yLjIuMC5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZID0gIkhhcmR3YXJlIFJORyBiYXNlZCBvbiBDUFUgdGltaW5nIGppdHRlciIKK0RFU0NSSVBUSU9OID0gIlRoZSBKaXR0ZXIgUk5HIHByb3ZpZGVzIGEgbm9pc2Ugc291cmNlIHVzaW5nIHRoZSBDUFUgZXhlY3V0aW9uIHRpbWluZyBqaXR0ZXIuIFwKK0l0IGRvZXMgbm90IGRlcGVuZCBvbiBhbnkgc3lzdGVtIHJlc291cmNlIG90aGVyIHRoYW4gYSBoaWdoLXJlc29sdXRpb24gdGltZSBcCitzdGFtcC4gSXQgaXMgYSBzbWFsbC1zY2FsZSwgeWV0IGZhc3QgZW50cm9weSBzb3VyY2UgdGhhdCBpcyB2aWFibGUgaW4gYWxtb3N0IFwKK2FsbCBlbnZpcm9ubWVudHMgYW5kIG9uIGEgbG90IG9mIENQVSBhcmNoaXRlY3R1cmVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuY2hyb25veC5kZS9qZW50Lmh0bWwiCitMSUNFTlNFID0gIkdQTHYyKyB8IEJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE5NWFhZGJkZmFlN2VkODEyYmIyYjdiODZlYjU5ODFjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuZ3BsdjI7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuYnNkO21kNT02NmE1Y2VkYWY2MmM0YjI2MzcwMjVmMDQ5ZjliODI2ZiBcCisgICAgICAgICAgICAgICAgICAgICIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zbXVlbGxlckREL2ppdHRlcmVudHJvcHktbGlicmFyeS5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS1jbGVhbnVwLWluc3RhbGwtZm9yLXJlYnVpbGRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS1tYW4tcGFnZXMtcmVwcm9kdWNpYmxlLnBhdGNoIgorU1JDUkVWID0gIjkzM2E0NGYzM2VkM2Q2NjEyZjdjZmFhN2FkMTIwN2M4ZGE0ODg2YmEiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorCitMREZMQUdTICs9ICItV2wsLU8wIgorCitkb19pbnN0YWxsICgpIHsKKyAgICBvZV9ydW5tYWtlIGluc3RhbGwgSU5DRElSPSIvaW5jbHVkZSIgXAorICAgICAgICAgICAgICAgICAgICAgICBERVNURElSPSIke0R9IiBcCisgICAgICAgICAgICAgICAgICAgICAgIFBSRUZJWD0iJHtleGVjX3ByZWZpeH0iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgTElCRElSPSIke2Jhc2VsaWJ9IiBcCisgICAgICAgICAgICAgICAgICAgICAgIElOU1RBTExfU1RSSVA9Imluc3RhbGwiCit9CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlL291dC1vZi10cmVlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUvb3V0LW9mLXRyZWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1Njc4OTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUvb3V0LW9mLXRyZWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1JbiBvdXQtb2YtdHJlZSBidWlsZHMgdGhlICNpbmNsdWRlIGZhaWxzIGJlY2F1c2UgJHNyY2RpciBpc24ndCBpbiB0aGUgaW5jbHVkZSBwYXRoLiAgU2V0IENQUEZMQUdTIHNvIHRoYXQgaXQgaXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW3IxNzUwXQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotSW5kZXg6IGNvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvY29uZmlndXJlLmFjCShyZXZpc2lvbiAxNzQ5KQotKysrIGIvY29uZmlndXJlLmFjCSh3b3JraW5nIGNvcHkpCi1AQCAtMTU5LDYgKzE1OSw4IEBACi0gCi0gaWYgdGVzdCAiJGVuYWJsZV9qaXQiID0gImF1dG8iOyB0aGVuCi0gICBBQ19MQU5HKEMpCi0rICBTQVZFX0NQUEZMQUdTPSRDUFBGTEFHUwotKyAgQ1BQRkxBR1M9LUkkc3JjZGlyCi0gICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKLSAgICNkZWZpbmUgU0xKSVRfQ09ORklHX0FVVE8gMQotICAgI2luY2x1ZGUgInNsaml0L3Nsaml0Q29uZmlnSW50ZXJuYWwuaCIKLUBAIC0xNjUsNiArMTY3LDcgQEAKLSAgICNpZiAoZGVmaW5lZCBTTEpJVF9DT05GSUdfVU5TVVBQT1JURUQgJiYgU0xKSVRfQ09ORklHX1VOU1VQUE9SVEVEKQotICAgI2Vycm9yIHVuc3VwcG9ydGVkCi0gICAjZW5kaWZdXSldLCBlbmFibGVfaml0PXllcywgZW5hYmxlX2ppdD1ubykKLSsgIENQUEZMQUdTPSRTQVZFX0NQUEZMQUdTCi0gZmkKLSAKLSAjIEhhbmRsZSAtLWRpc2FibGUtcGNyZWdyZXAtaml0IChlbmFibGVkIGJ5IGRlZmF1bHQpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMzMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMzMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3ZGEzMTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjMzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlcmUgYXJlIHR3byBtYWpvciB2ZXJzaW9ucyBvZiB0aGUgUENSRSBsaWJyYXJ5LiBUaGUgXAotbmV3ZXN0IHZlcnNpb24gaXMgUENSRTIsIHdoaWNoIGlzIGEgcmUtd29ya2luZyBvZiB0aGUgb3JpZ2luYWwgUENSRSBcCi1saWJyYXJ5IHRvIHByb3ZpZGUgYW4gZW50aXJlbHkgbmV3IEFQSS4gVGhlIG9yaWdpbmFsLCB2ZXJ5IHdpZGVseSBcCi1kZXBsb3llZCBQQ1JFIGxpYnJhcnkncyBBUEkgYW5kIGZlYXR1cmUgYXJlIHN0YWJsZSwgZnV0dXJlIHJlbGVhc2VzIFwKLSB3aWxsIGJlIGZvciBidWdmaXhlcyBvbmx5LiBBbGwgbmV3IGZ1dHVyZSBmZWF0dXJlcyB3aWxsIGJlIHRvIFBDUkUyLCBcCi1ub3QgdGhlIG9yaWdpbmFsIFBDUkUgOC54IHNlcmllcy4iCi1TVU1NQVJZID0gIlBlcmwgQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zIHZlcnNpb24gMiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucGNyZS5vcmciCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT1iMTU4OGQzYmI0Y2IwZTFmNWE1OTdkOTA4ZjhjNWIzNyIKLQotU1JDX1VSSSA9ICJodHRwczovL2Z0cC5wY3JlLm9yZy9wdWIvcGNyZS9wY3JlMi0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3BjcmUtY3Jvc3MucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODBiMzU1ZjJkY2U5MDlhMmUyNDI0ZjVjNzllZGRiNDQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzU1MTRkZmYwY2NkZjAyYjU1YmQyZTlmYTU4NmExYjlkMDFmNjIzMzJjMzM1NmUzNzllYWJiNzVmNzg5ZDhhYSIKLQotQ1ZFX1BST0RVQ1QgPSAicGNyZTIiCi0KLVMgPSAiJHtXT1JLRElSfS9wY3JlMi0ke1BWfSIKLQotUFJPVklERVMgKz0gInBjcmUyIgotREVQRU5EUyArPSAiYnppcDIgemxpYiIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9wY3JlMi1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZAotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgIC0tZW5hYmxlLW5ld2xpbmUtaXMtbGYgXAotICAgIC0tZW5hYmxlLXJlYnVpbGQtY2hhcnRhYmxlcyBcCi0gICAgLS13aXRoLWxpbmstc2l6ZT0yIFwKLSAgICAtLXdpdGgtbWF0Y2gtbGltaXQ9MTAwMDAwMDAgXAotICAgIC0tZW5hYmxlLXBjcmUyLTE2IFwKLSAgICAtLWVuYWJsZS1wY3JlMi0zMiBcCi0iCi0jIFNldCBMSU5LX1NJWkUgaW4gQlVJTERfQ0ZMQUdTIGdpdmVuIHRoYXQgdGhlIGF1dG90b29scyBiYmNsYXNzIHVzZSBpdCB0bwotIyBzZXQgQ0ZMQUdTX0ZPUl9CVUlMRCwgcmVxdWlyZWQgZm9yIHRoZSBsaWJwY3JlIGJ1aWxkLgotQlVJTERfQ0ZMQUdTID0rICItRExJTktfU0laRT0yIC1JJHtCfS9zcmMiCi1DRkxBR1MgKz0gIi1EX1JFRU5UUkFOVCIKLUNYWEZMQUdTX2FwcGVuZF9wb3dlcnBjID0gIiAtbHN0ZGMrKyIKLQotZXhwb3J0IENDTERfRk9SX0JVSUxEID0iJHtCVUlMRF9DQ0xEfSIKLQotUEFDS0FHRVMgPSsgImxpYnBjcmUyLTE2IGxpYnBjcmUyLTMyIHBjcmUyZ3JlcCBwY3JlMmdyZXAtZG9jIHBjcmUydGVzdCBwY3JlMnRlc3QtZG9jIgotCi1TVU1NQVJZX3BjcmUyZ3JlcCA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMiCi1TVU1NQVJZX3BjcmUyZ3JlcC1kb2MgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIC0gZG9jcyIKLVNVTU1BUllfcGNyZTJ0ZXN0ID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyIKLVNVTU1BUllfcGNyZTJ0ZXN0LWRvYyA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgLSBkb2NzIgotCi1GSUxFU19saWJwY3JlMi0xNiA9ICIke2xpYmRpcn0vbGlicGNyZTItMTYuc28uKiIKLUZJTEVTX2xpYnBjcmUyLTMyID0gIiR7bGliZGlyfS9saWJwY3JlMi0zMi5zby4qIgotRklMRVNfcGNyZTJncmVwID0gIiR7YmluZGlyfS9wY3JlMmdyZXAiCi1GSUxFU19wY3JlMmdyZXAtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmUyZ3JlcC4xIgotRklMRVNfcGNyZTJ0ZXN0ID0gIiR7YmluZGlyfS9wY3JlMnRlc3QiCi1GSUxFU19wY3JlMnRlc3QtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmUydGVzdC4xIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMzQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMzQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE4NjU1ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMl8xMC4zNC5iYgpAQCAtMCwwICsxLDYxIEBACitERVNDUklQVElPTiA9ICJUaGVyZSBhcmUgdHdvIG1ham9yIHZlcnNpb25zIG9mIHRoZSBQQ1JFIGxpYnJhcnkuIFRoZSBcCituZXdlc3QgdmVyc2lvbiBpcyBQQ1JFMiwgd2hpY2ggaXMgYSByZS13b3JraW5nIG9mIHRoZSBvcmlnaW5hbCBQQ1JFIFwKK2xpYnJhcnkgdG8gcHJvdmlkZSBhbiBlbnRpcmVseSBuZXcgQVBJLiBUaGUgb3JpZ2luYWwsIHZlcnkgd2lkZWx5IFwKK2RlcGxveWVkIFBDUkUgbGlicmFyeSdzIEFQSSBhbmQgZmVhdHVyZSBhcmUgc3RhYmxlLCBmdXR1cmUgcmVsZWFzZXMgXAorIHdpbGwgYmUgZm9yIGJ1Z2ZpeGVzIG9ubHkuIEFsbCBuZXcgZnV0dXJlIGZlYXR1cmVzIHdpbGwgYmUgdG8gUENSRTIsIFwKK25vdCB0aGUgb3JpZ2luYWwgUENSRSA4Lnggc2VyaWVzLiIKK1NVTU1BUlkgPSAiUGVybCBDb21wYXRpYmxlIFJlZ3VsYXIgRXhwcmVzc2lvbnMgdmVyc2lvbiAyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wY3JlLm9yZyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWIxNTg4ZDNiYjRjYjBlMWY1YTU5N2Q5MDhmOGM1YjM3IgorCitTUkNfVVJJID0gImh0dHBzOi8vZnRwLnBjcmUub3JnL3B1Yi9wY3JlL3BjcmUyLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGNyZS1jcm9zcy5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMjgwYjYyZGVkMTNmOWNjZjJmYWMxNmVlNTI4NjM2NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NGM0NzNmZmFiYTllMTNkYjY5NTFmZDE0NmUwMTQzZmU5ODg3ODUyY2U3MzQwNmEwMzI3N2FmMWQ5Yjc5OGNhIgorCitDVkVfUFJPRFVDVCA9ICJwY3JlMiIKKworUyA9ICIke1dPUktESVJ9L3BjcmUyLSR7UFZ9IgorCitQUk9WSURFUyArPSAicGNyZTIiCitERVBFTkRTICs9ICJiemlwMiB6bGliIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3BjcmUyLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkCisKK0VYVFJBX09FQ09ORiA9ICJcCisgICAgLS1lbmFibGUtbmV3bGluZS1pcy1sZiBcCisgICAgLS1lbmFibGUtcmVidWlsZC1jaGFydGFibGVzIFwKKyAgICAtLXdpdGgtbGluay1zaXplPTIgXAorICAgIC0td2l0aC1tYXRjaC1saW1pdD0xMDAwMDAwMCBcCisgICAgLS1lbmFibGUtcGNyZTItMTYgXAorICAgIC0tZW5hYmxlLXBjcmUyLTMyIFwKKyIKKyMgU2V0IExJTktfU0laRSBpbiBCVUlMRF9DRkxBR1MgZ2l2ZW4gdGhhdCB0aGUgYXV0b3Rvb2xzIGJiY2xhc3MgdXNlIGl0IHRvCisjIHNldCBDRkxBR1NfRk9SX0JVSUxELCByZXF1aXJlZCBmb3IgdGhlIGxpYnBjcmUgYnVpbGQuCitCVUlMRF9DRkxBR1MgPSsgIi1ETElOS19TSVpFPTIgLUkke0J9L3NyYyIKK0NGTEFHUyArPSAiLURfUkVFTlRSQU5UIgorQ1hYRkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sc3RkYysrIgorCitleHBvcnQgQ0NMRF9GT1JfQlVJTEQgPSIke0JVSUxEX0NDTER9IgorCitQQUNLQUdFUyA9KyAibGlicGNyZTItMTYgbGlicGNyZTItMzIgcGNyZTJncmVwIHBjcmUyZ3JlcC1kb2MgcGNyZTJ0ZXN0IHBjcmUydGVzdC1kb2MiCisKK1NVTU1BUllfcGNyZTJncmVwID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyIKK1NVTU1BUllfcGNyZTJncmVwLWRvYyA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMgLSBkb2NzIgorU1VNTUFSWV9wY3JlMnRlc3QgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgorU1VNTUFSWV9wY3JlMnRlc3QtZG9jID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyAtIGRvY3MiCisKK0ZJTEVTX2xpYnBjcmUyLTE2ID0gIiR7bGliZGlyfS9saWJwY3JlMi0xNi5zby4qIgorRklMRVNfbGlicGNyZTItMzIgPSAiJHtsaWJkaXJ9L2xpYnBjcmUyLTMyLnNvLioiCitGSUxFU19wY3JlMmdyZXAgPSAiJHtiaW5kaXJ9L3BjcmUyZ3JlcCIKK0ZJTEVTX3BjcmUyZ3JlcC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZTJncmVwLjEiCitGSUxFU19wY3JlMnRlc3QgPSAiJHtiaW5kaXJ9L3BjcmUydGVzdCIKK0ZJTEVTX3BjcmUydGVzdC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZTJ0ZXN0LjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWEyMmZlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGUgUENSRSBsaWJyYXJ5IGlzIGEgc2V0IG9mIGZ1bmN0aW9ucyB0aGF0IGltcGxlbWVudCByZWd1bGFyIFwKLWV4cHJlc3Npb24gcGF0dGVybiBtYXRjaGluZyB1c2luZyB0aGUgc2FtZSBzeW50YXggYW5kIHNlbWFudGljcyBhcyBQZXJsIDUuIFBDUkUgXAotaGFzIGl0cyBvd24gbmF0aXZlIEFQSSwgYXMgd2VsbCBhcyBhIHNldCBvZiB3cmFwcGVyIGZ1bmN0aW9ucyB0aGF0IGNvcnJlc3BvbmQgXAotdG8gdGhlIFBPU0lYIHJlZ3VsYXIgZXhwcmVzc2lvbiBBUEkuIgotU1VNTUFSWSA9ICJQZXJsIENvbXBhdGlibGUgUmVndWxhciBFeHByZXNzaW9ucyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucGNyZS5vcmciCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT05MWJlZTU5ZDFiMzI3ZWIxNTk5YjRjNjczZTJmYjNkMSIKLVNSQ19VUkkgPSAiaHR0cHM6Ly9mdHAucGNyZS5vcmcvcHViL3BjcmUvcGNyZS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1wY3JlLW5hbWUtY29sbGlzaW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL291dC1vZi10cmVlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZSBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2MzYyMjJlNzllMzkyYzNkOTVkY2M1NDVmMjRmOThjNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MWU3NjI1MjAwMDMwMTM4MzRhYzFhZGI0YTkzOGQ1M2IyMmEyMTYzNDFjMDYxYjBjZjA1NjAzYjI5MGZhZjZiIgotCi1DVkVfUFJPRFVDVCA9ICJwY3JlIgotCi1TID0gIiR7V09SS0RJUn0vcGNyZS0ke1BWfSIKLQotUFJPVklERVMgKz0gInBjcmUiCi1ERVBFTkRTICs9ICJiemlwMiB6bGliIgotCi1QQUNLQUdFQ09ORklHID8/PSAicGNyZTggdW5pY29kZS1wcm9wZXJ0aWVzIGppdCIKLQotUEFDS0FHRUNPTkZJR1twY3JlOF0gPSAiLS1lbmFibGUtcGNyZTgsLS1kaXNhYmxlLXBjcmU4IgotUEFDS0FHRUNPTkZJR1twY3JlMTZdID0gIi0tZW5hYmxlLXBjcmUxNiwtLWRpc2FibGUtcGNyZTE2IgotUEFDS0FHRUNPTkZJR1twY3JlMzJdID0gIi0tZW5hYmxlLXBjcmUzMiwtLWRpc2FibGUtcGNyZTMyIgotUEFDS0FHRUNPTkZJR1twY3JldGVzdC1yZWFkbGluZV0gPSAiLS1lbmFibGUtcGNyZXRlc3QtbGlicmVhZGxpbmUsLS1kaXNhYmxlLXBjcmV0ZXN0LWxpYnJlYWRsaW5lLHJlYWRsaW5lLCIKLVBBQ0tBR0VDT05GSUdbdW5pY29kZS1wcm9wZXJ0aWVzXSA9ICItLWVuYWJsZS11bmljb2RlLXByb3BlcnRpZXMsLS1kaXNhYmxlLXVuaWNvZGUtcHJvcGVydGllcyIKLVBBQ0tBR0VDT05GSUdbaml0XSA9ICItLWVuYWJsZS1qaXQ9YXV0bywtLWRpc2FibGUtaml0IgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3BjcmUtY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcHRlc3QKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXV0ZiIKLQotUEFDS0FHRVMgPSsgImxpYnBjcmVjcHAgbGlicGNyZXBvc2l4IHBjcmVncmVwIHBjcmVncmVwLWRvYyBwY3JldGVzdCBwY3JldGVzdC1kb2MiCi0KLVNVTU1BUllfbGlicGNyZWNwcCA9ICIke1NVTU1BUll9IC0gQysrIHdyYXBwZXIgZnVuY3Rpb25zIgotU1VNTUFSWV9saWJwY3JlcG9zaXggPSAiJHtTVU1NQVJZfSAtIEMgd3JhcHBlciBmdW5jdGlvbnMgYmFzZWQgb24gdGhlIFBPU0lYIHJlZ2V4IEFQSSIKLVNVTU1BUllfcGNyZWdyZXAgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIgotU1VNTUFSWV9wY3JlZ3JlcC1kb2MgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIC0gZG9jcyIKLVNVTU1BUllfcGNyZXRlc3QgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgotU1VNTUFSWV9wY3JldGVzdC1kb2MgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIC0gZG9jcyIKLQotRklMRVNfbGlicGNyZWNwcCA9ICIke2xpYmRpcn0vbGlicGNyZWNwcC5zby4qIgotRklMRVNfbGlicGNyZXBvc2l4ID0gIiR7bGliZGlyfS9saWJwY3JlcG9zaXguc28uKiIKLUZJTEVTX3BjcmVncmVwID0gIiR7YmluZGlyfS9wY3JlZ3JlcCIKLUZJTEVTX3BjcmVncmVwLWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JlZ3JlcC4xIgotRklMRVNfcGNyZXRlc3QgPSAiJHtiaW5kaXJ9L3BjcmV0ZXN0IgotRklMRVNfcGNyZXRlc3QtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmV0ZXN0LjEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQl0PSR7RH0ke1BURVNUX1BBVEh9Ci0JY3AgJHtXT1JLRElSfS9NYWtlZmlsZSAkdAotCWNwIC1yICR7U30vdGVzdGRhdGEgJHQKLQlmb3IgaSBpbiBwY3JlX3N0cmluZ3BpZWNlX3VuaXR0ZXN0IHBjcmVncmVwIHBjcmV0ZXN0OyBcCi0JICBkbyBjcCAke0J9Ly5saWJzLyRpICR0OyBcCi0JZG9uZQotCWZvciBpIGluIFJ1blRlc3QgUnVuR3JlcFRlc3QgdGVzdC1kcml2ZXI7IFwKLQkgIGRvIGNwICR7U30vJGkgJHQ7IFwKLQlkb25lCi0JIyBTa2lwIHRoZSBmcl9GUiBsb2NhbGUgdGVzdC4gSWYgdGhlIGxvY2FsZSBmcl9GUiBpcyBmb3VuZCwgaXQgaXMgdGVzdGVkLgotCSMgSWYgbm90IGZvdW5kLCB0aGUgdGVzdCBpcyBza2lwcGVkLiBUaGUgdGVzdCBwcm9ncmFtIGFzc3VtZXMgZnJfRlIgaXMgbm9uLVVURi04Ci0JIyBsb2NhbGUgc28gdGhlIHRlc3QgZmFpbHMgaWYgZnJfRlIgaXMgVVRGLTggbG9jYWxlLgotCXNlZCAtaSAtZSAnczpkbzM9eWVzOmRvMz1ubzpnJyAke0R9JHtQVEVTVF9QQVRIfS9SdW5UZXN0IAotfQotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQ0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NDcxZTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQ0LmJiCkBAIC0wLDAgKzEsNzUgQEAKK0RFU0NSSVBUSU9OID0gIlRoZSBQQ1JFIGxpYnJhcnkgaXMgYSBzZXQgb2YgZnVuY3Rpb25zIHRoYXQgaW1wbGVtZW50IHJlZ3VsYXIgXAorZXhwcmVzc2lvbiBwYXR0ZXJuIG1hdGNoaW5nIHVzaW5nIHRoZSBzYW1lIHN5bnRheCBhbmQgc2VtYW50aWNzIGFzIFBlcmwgNS4gUENSRSBcCitoYXMgaXRzIG93biBuYXRpdmUgQVBJLCBhcyB3ZWxsIGFzIGEgc2V0IG9mIHdyYXBwZXIgZnVuY3Rpb25zIHRoYXQgY29ycmVzcG9uZCBcCit0byB0aGUgUE9TSVggcmVndWxhciBleHByZXNzaW9uIEFQSS4iCitTVU1NQVJZID0gIlBlcmwgQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wY3JlLm9yZyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTNiYjM4MWE2NmE1Mzg1YjI0NmQ0ODc3OTIyZTc1MTFlIgorU1JDX1VSSSA9ICJodHRwczovL2Z0cC5wY3JlLm9yZy9wdWIvcGNyZS9wY3JlLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vZml4LXBjcmUtbmFtZS1jb2xsaXNpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiY2Y3MzI2MjA0Y2M0NmM3NTViNWIyNjA4MDMzZDlkMjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTkxMDg2NThiMjNiM2VjNTA1OGVkYzlmNjZhYzU0NWVhMTlmOTUzNzIzNGJlMWVjNjJiNzE0Yzg0Mzk5MzY2ZCIKKworQ1ZFX1BST0RVQ1QgPSAicGNyZSIKKworUyA9ICIke1dPUktESVJ9L3BjcmUtJHtQVn0iCisKK1BST1ZJREVTICs9ICJwY3JlIgorREVQRU5EUyArPSAiYnppcDIgemxpYiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInBjcmU4IHVuaWNvZGUtcHJvcGVydGllcyBqaXQiCisKK1BBQ0tBR0VDT05GSUdbcGNyZThdID0gIi0tZW5hYmxlLXBjcmU4LC0tZGlzYWJsZS1wY3JlOCIKK1BBQ0tBR0VDT05GSUdbcGNyZTE2XSA9ICItLWVuYWJsZS1wY3JlMTYsLS1kaXNhYmxlLXBjcmUxNiIKK1BBQ0tBR0VDT05GSUdbcGNyZTMyXSA9ICItLWVuYWJsZS1wY3JlMzIsLS1kaXNhYmxlLXBjcmUzMiIKK1BBQ0tBR0VDT05GSUdbcGNyZXRlc3QtcmVhZGxpbmVdID0gIi0tZW5hYmxlLXBjcmV0ZXN0LWxpYnJlYWRsaW5lLC0tZGlzYWJsZS1wY3JldGVzdC1saWJyZWFkbGluZSxyZWFkbGluZSwiCitQQUNLQUdFQ09ORklHW3VuaWNvZGUtcHJvcGVydGllc10gPSAiLS1lbmFibGUtdW5pY29kZS1wcm9wZXJ0aWVzLC0tZGlzYWJsZS11bmljb2RlLXByb3BlcnRpZXMiCitQQUNLQUdFQ09ORklHW2ppdF0gPSAiLS1lbmFibGUtaml0PWF1dG8sLS1kaXNhYmxlLWppdCIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9wY3JlLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIHB0ZXN0CisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS11dGYiCisKK1BBQ0tBR0VTID0rICJsaWJwY3JlY3BwIGxpYnBjcmVwb3NpeCBwY3JlZ3JlcCBwY3JlZ3JlcC1kb2MgcGNyZXRlc3QgcGNyZXRlc3QtZG9jIgorCitTVU1NQVJZX2xpYnBjcmVjcHAgPSAiJHtTVU1NQVJZfSAtIEMrKyB3cmFwcGVyIGZ1bmN0aW9ucyIKK1NVTU1BUllfbGlicGNyZXBvc2l4ID0gIiR7U1VNTUFSWX0gLSBDIHdyYXBwZXIgZnVuY3Rpb25zIGJhc2VkIG9uIHRoZSBQT1NJWCByZWdleCBBUEkiCitTVU1NQVJZX3BjcmVncmVwID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyIKK1NVTU1BUllfcGNyZWdyZXAtZG9jID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyAtIGRvY3MiCitTVU1NQVJZX3BjcmV0ZXN0ID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyIKK1NVTU1BUllfcGNyZXRlc3QtZG9jID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyAtIGRvY3MiCisKK0ZJTEVTX2xpYnBjcmVjcHAgPSAiJHtsaWJkaXJ9L2xpYnBjcmVjcHAuc28uKiIKK0ZJTEVTX2xpYnBjcmVwb3NpeCA9ICIke2xpYmRpcn0vbGlicGNyZXBvc2l4LnNvLioiCitGSUxFU19wY3JlZ3JlcCA9ICIke2JpbmRpcn0vcGNyZWdyZXAiCitGSUxFU19wY3JlZ3JlcC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZWdyZXAuMSIKK0ZJTEVTX3BjcmV0ZXN0ID0gIiR7YmluZGlyfS9wY3JldGVzdCIKK0ZJTEVTX3BjcmV0ZXN0LWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JldGVzdC4xIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJdD0ke0R9JHtQVEVTVF9QQVRIfQorCWNwICR7V09SS0RJUn0vTWFrZWZpbGUgJHQKKwljcCAtciAke1N9L3Rlc3RkYXRhICR0CisJZm9yIGkgaW4gcGNyZV9zdHJpbmdwaWVjZV91bml0dGVzdCBwY3JlZ3JlcCBwY3JldGVzdDsgXAorCSAgZG8gY3AgJHtCfS8ubGlicy8kaSAkdDsgXAorCWRvbmUKKwlmb3IgaSBpbiBSdW5UZXN0IFJ1bkdyZXBUZXN0IHRlc3QtZHJpdmVyOyBcCisJICBkbyBjcCAke1N9LyRpICR0OyBcCisJZG9uZQorCSMgU2tpcCB0aGUgZnJfRlIgbG9jYWxlIHRlc3QuIElmIHRoZSBsb2NhbGUgZnJfRlIgaXMgZm91bmQsIGl0IGlzIHRlc3RlZC4KKwkjIElmIG5vdCBmb3VuZCwgdGhlIHRlc3QgaXMgc2tpcHBlZC4gVGhlIHRlc3QgcHJvZ3JhbSBhc3N1bWVzIGZyX0ZSIGlzIG5vbi1VVEYtOAorCSMgbG9jYWxlIHNvIHRoZSB0ZXN0IGZhaWxzIGlmIGZyX0ZSIGlzIFVURi04IGxvY2FsZS4KKwlzZWQgLWkgLWUgJ3M6ZG8zPXllczpkbzM9bm86ZycgJHtEfSR7UFRFU1RfUEFUSH0vUnVuVGVzdCAKK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjQvMDAwMS1Eby1ub3QtZW5mb3JjZS1uby1pbnRyb3NwZWN0aW9uLXdoZW4tY3Jvc3MtYnVpbGRpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjQvMDAwMS1Eby1ub3QtZW5mb3JjZS1uby1pbnRyb3NwZWN0aW9uLXdoZW4tY3Jvc3MtYnVpbGRpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1MzQ0NTcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40LzAwMDEtRG8tbm90LWVuZm9yY2Utbm8taW50cm9zcGVjdGlvbi13aGVuLWNyb3NzLWJ1aWxkaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSA4NWY3Yjc0ZmM2MDIyMTQyOTc5MjhhZmUwOTM0N2MzMWQ2OTYxNzNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDE1IEZlYiAyMDE5IDE0OjIxOjA2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBlbmZvcmNlIG5vLWludHJvc3BlY3Rpb24gd2hlbiBjcm9zcy1idWlsZGluZwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic291cC9jb21taXQvN2VmNWVjNjBjMzNlMjU0YmNkOTE1OTM2YmVhM2YwNGJhMGZlMjI3M10KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXJAYWxpc3RhaXIyMy5tZT4KLS0tLQotIG1lc29uLmJ1aWxkIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggMjU4ODdmOS4uNjI2MWE3YyAxMDA2NDQKLS0tLSBhL21lc29uLmJ1aWxkCi0rKysgYi9tZXNvbi5idWlsZAotQEAgLTI4MSw3ICsyODEsNyBAQCBlbmFibGVfZ25vbWUgPSBnZXRfb3B0aW9uKCdnbm9tZScpIGFuZCBob3N0X21hY2hpbmUuc3lzdGVtKCkgIT0gJ3dpbmRvd3MnCi0gIyBGSVhNRTogb25jZSB3ZSBzdGFydCB0byByZXF1aXJlIG1lc29uIDAuNDkuMCsgYW5kIGdub21lLWludHJvc3BlY3Rpb24gMS41OC4xKwotICMgdGhlIHdlIGNhbiBlbmFibGUgdGhlIGludHJvc3BlY3Rpb24gZXZlbiBmb3IgdGhlIHN0YXRpYyBidWlsZC4gU2VlCi0gIyBodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9wdWxsLzQ0NzguCi0tZW5hYmxlX2ludHJvc3BlY3Rpb24gPSBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykgYW5kIGZpbmRfcHJvZ3JhbSgnZy1pci1zY2FubmVyJywgcmVxdWlyZWQ6IGZhbHNlKS5mb3VuZCgpIGFuZCBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBhbmQgbm90IGlzX3N0YXRpY19saWJyYXJ5Ci0rZW5hYmxlX2ludHJvc3BlY3Rpb24gPSBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykgYW5kIGZpbmRfcHJvZ3JhbSgnZy1pci1zY2FubmVyJywgcmVxdWlyZWQ6IGZhbHNlKS5mb3VuZCgpIGFuZCBub3QgaXNfc3RhdGljX2xpYnJhcnkKLSAKLSAjIyMjIyMjIyMjIyMKLSAjIFZhbGEgQVBJICMKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjY2LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42Ni40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjVmOTEwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjY2LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1TVU1NQVJZID0gIkFuIEhUVFAgbGlicmFyeSBpbXBsZW1lbnRhdGlvbiBpbiBDIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9saWJzb3VwIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi1TRUNUSU9OID0gIngxMS9nbm9tZS9saWJzIgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgbGlieG1sMiBzcWxpdGUzIGludGx0b29sLW5hdGl2ZSBsaWJwc2wiCi0KLVNIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9saWJzb3VwLyR7U0hSVF9WRVJ9L2xpYnNvdXAtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWVuZm9yY2Utbm8taW50cm9zcGVjdGlvbi13aGVuLWNyb3NzLWJ1aWxkaW5nLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjQyMDE2ZDgwZWNhZTRjZjhlYjQxNjYzMTA0OWEyNzNhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgzMDg5ODRmMWVlZTFjNGY4YzExM2E5YzE3NjNiMmIyMmQ5ODFiZDgxMWIwY2M4MmE5ZjNmMWFhNjMyMjg3NzkiCi0KLUNWRV9QUk9EVUNUID0gImxpYnNvdXAiCi0KLVMgPSAiJHtXT1JLRElSfS9saWJzb3VwLSR7UFZ9IgotCi1pbmhlcml0IG1lc29uIGdldHRleHQgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYwotCi0jIGxpYnNvdXAtZ25vbWUgaXMgZW50aXJlbHkgZGVwcmVjYXRlZCBhbmQganVzdCBzdHVicyBpbiAyLjQyIG9ud2FyZHMuIERpc2FibGUgYnkgZGVmYXVsdC4KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2dub21lXSA9ICItRGdub21lPXRydWUsLURnbm9tZT1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbZ3NzYXBpXSA9ICItRGdzc2FwaT10cnVlLC1EZ3NzYXBpPWZhbHNlLGtyYjUiCi0KLUVYVFJBX09FTUVTT05fYXBwZW5kID0gIiAtRHZhcGk9ZmFsc2UiCi0KLUdUS0RPQ19NRVNPTl9PUFRJT04gPSAiZ3RrX2RvYyIKLQotIyBXaGVuIGJ1aWx0IHdpdGhvdXQgZ25vbWUgc3VwcG9ydCwgbGlic291cC0yLjQgd2lsbCBjb250YWluIG9ubHkgb25lIHNoYXJlZCBsaWIKLSMgYW5kIHdpbGwgdGhlcmVmb3JlIGJlY29tZSBzdWJqZWN0IHRvIHJlbmFtaW5nIGJ5IGRlYmlhbi5iYmNsYXNzLiBQcmV2ZW50Ci0jIHJlbmFtaW5nIGluIG9yZGVyIHRvIGtlZXAgdGhlIHBhY2thZ2UgbmFtZSBjb25zaXN0ZW50IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlcgotIyBnbm9tZSBzdXBwb3J0IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCi1ERUJJQU5fTk9BVVRPTkFNRV8ke1BOfSA9ICIxIgotCi0jIGdsaWItbmV0d29ya2luZyBpcyBuZWVkZWQgZm9yIFNTTCwgcHJveGllcywgZXRjLgotUlJFQ09NTUVORFNfJHtQTn0gPSAiZ2xpYi1uZXR3b3JraW5nIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjY4LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42OC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MzFiMzMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42OC40LmJiCkBAIC0wLDAgKzEsNDMgQEAKK1NVTU1BUlkgPSAiQW4gSFRUUCBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIGluIEMiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL1Byb2plY3RzL2xpYnNvdXAiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAieDExL2dub21lL2xpYnMiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJ4bWwyIHNxbGl0ZTMgaW50bHRvb2wtbmF0aXZlIGxpYnBzbCIKKworU0hSVF9WRVIgPSAiJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswXX0uJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVsxXX0iCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L2xpYnNvdXAvJHtTSFJUX1ZFUn0vbGlic291cC0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiNjAzZjNhOTQ1Y2Q2ZWNjMWZkYTY0NGQ3ODUzYjNiODEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmQ1MGIxMjkyMmNjNTE2YWI2YTdjMzU4NDRkNDJmOWM4YTMzMTY2OGJiZGYxMzkyMzI3NDNkODI1ODJiMzI5NCIKKworQ1ZFX1BST0RVQ1QgPSAibGlic291cCIKKworUyA9ICIke1dPUktESVJ9L2xpYnNvdXAtJHtQVn0iCisKK2luaGVyaXQgbWVzb24gZ2V0dGV4dCBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jCisKK0dJUl9NRVNPTl9FTkFCTEVfRkxBRyA9ICdlbmFibGVkJworR0lSX01FU09OX0RJU0FCTEVfRkxBRyA9ICdkaXNhYmxlZCcKKworIyBsaWJzb3VwLWdub21lIGlzIGVudGlyZWx5IGRlcHJlY2F0ZWQgYW5kIGp1c3Qgc3R1YnMgaW4gMi40MiBvbndhcmRzLiBEaXNhYmxlIGJ5IGRlZmF1bHQuCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tnbm9tZV0gPSAiLURnbm9tZT10cnVlLC1EZ25vbWU9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2dzc2FwaV0gPSAiLURnc3NhcGk9ZW5hYmxlZCwtRGdzc2FwaT1kaXNhYmxlZCxrcmI1IgorCitFWFRSQV9PRU1FU09OX2FwcGVuZCA9ICIgLUR2YXBpPWRpc2FibGVkIC1EdGxzX2NoZWNrPWZhbHNlIgorCitHVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCisKKyMgV2hlbiBidWlsdCB3aXRob3V0IGdub21lIHN1cHBvcnQsIGxpYnNvdXAtMi40IHdpbGwgY29udGFpbiBvbmx5IG9uZSBzaGFyZWQgbGliCisjIGFuZCB3aWxsIHRoZXJlZm9yZSBiZWNvbWUgc3ViamVjdCB0byByZW5hbWluZyBieSBkZWJpYW4uYmJjbGFzcy4gUHJldmVudAorIyByZW5hbWluZyBpbiBvcmRlciB0byBrZWVwIHRoZSBwYWNrYWdlIG5hbWUgY29uc2lzdGVudCByZWdhcmRsZXNzIG9mIHdoZXRoZXIKKyMgZ25vbWUgc3VwcG9ydCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgorREVCSUFOX05PQVVUT05BTUVfJHtQTn0gPSAiMSIKKworIyBnbGliLW5ldHdvcmtpbmcgaXMgbmVlZGVkIGZvciBTU0wsIHByb3hpZXMsIGV0Yy4KK1JSRUNPTU1FTkRTXyR7UE59ID0gImdsaWItbmV0d29ya2luZyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjExLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjExLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhNTE3ZTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJVc2Vyc3BhY2UgUkNVIChyZWFkLWNvcHktdXBkYXRlKSBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL2x0dG5nLm9yZy91cmN1IgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vbHR0bmcub3JnL3Byb2plY3QvaXNzdWVzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyAmIE1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU1NDhkMjg3MzcyODlkNzVhOGYxZTAxYmEyZmQ3ODI1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdXJjdS91cmN1Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0zMjttZDU9NGRlMGQ2OGQzYTk5NzY0MzcxNTAzNmQyMjA5YWUxZDkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS91cmN1L3VhdG9taWMveDg2Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0yMTttZDU9NThlNTBiYmQ4YTJmMDczYmI1NTAwZTY1NTRhZjBkMGIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2x0dG5nLm9yZy9maWxlcy91cmN1L3VzZXJzcGFjZS1yY3UtJHtQVn0udGFyLmJ6MiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjkxYzc1ZDU5MDIxMjdmOTRhYjU1NmNlMDM5YjM2OWNhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkyYjk5NzFiZjNmMWM0NDNlZGQ2YzA5ZTdiZjVmZjNiNDM1MzFlNzc4ODQxZjE2Mzc3YTgxMmM4ZmVlYjMzNTAiCi0KLVMgPSAiJHtXT1JLRElSfS91c2Vyc3BhY2UtcmN1LSR7UFZ9IgotaW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfaGVhZGVyCi0KLUNQUEZMQUdTX2FwcGVuZF9yaXNjdjY0ICA9ICIgLXB0aHJlYWQgLURfUkVFTlRSQU5UIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBvZV9tdWx0aWxpYl9oZWFkZXIgdXJjdS9jb25maWcuaAotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjMjBhYmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjEyLjAuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJVc2Vyc3BhY2UgUkNVIChyZWFkLWNvcHktdXBkYXRlKSBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL2x0dG5nLm9yZy91cmN1IgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vbHR0bmcub3JnL3Byb2plY3QvaXNzdWVzIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyAmIE1JVC1zdHlsZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU1NDhkMjg3MzcyODlkNzVhOGYxZTAxYmEyZmQ3ODI1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdXJjdS91cmN1Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0zMjttZDU9NGRlMGQ2OGQzYTk5NzY0MzcxNTAzNmQyMjA5YWUxZDkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS91cmN1L3VhdG9taWMveDg2Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0yMTttZDU9NThlNTBiYmQ4YTJmMDczYmI1NTAwZTY1NTRhZjBkMGIiCisKK1NSQ19VUkkgPSAiaHR0cDovL2x0dG5nLm9yZy9maWxlcy91cmN1L3VzZXJzcGFjZS1yY3UtJHtQVn0udGFyLmJ6MiIKKworU1JDX1VSSVttZDVzdW1dID0gImQ5MjNhNDJjZTM4ZTMzZTg4MzMxMzAwM2M4YWZkNTU5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwOWIxYmU1MDY5ODllMWQyNjU0MzE5NGRmMWE3OTIxMmJlOTkwZmU1ZDRmZDg0ZjM0ZjAxOWVmZWQ5ODlmOTciCisKK1MgPSAiJHtXT1JLRElSfS91c2Vyc3BhY2UtcmN1LSR7UFZ9IgoraW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfaGVhZGVyCisKK0NQUEZMQUdTX2FwcGVuZF9yaXNjdjY0ICA9ICIgLXB0aHJlYWQgLURfUkVFTlRSQU5UIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBvZV9tdWx0aWxpYl9oZWFkZXIgdXJjdS9jb25maWcuaAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiMS9uby1kbGwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxL25vLWRsbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmU2YmI4My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxL25vLWRsbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLUFzIGFsbCBpbnZva2VzIGFsbC1yZWN1cnNpdmUgd2hpY2ggdXNlcyBzdWItbWFrZXMgdG8gaW52b2tlIGFsbC1hbSwgdGhlCi1yZXN1bHRpbmcgbWFrZWZpbGUgd2FudHMgdG8gYnVpbGQgbGlidXNiLTEuMC5sYSB0d2ljZS4gSW4gbm9uLXBhcmFsbGVsIGJ1aWxkcwotdGhlIHNlY29uZCBhdHRlbXB0IGlzIHNraXBwZWQgYXMgdGhlIHRhcmdldCBhbHJlYWR5IGV4aXN0cywgYnV0IGluIGhpZ2hseQotcGFyYWxsZWwgYnVpbGRzIGl0J3MgbGlrZWx5IHRoYXQgdHdvIG1ha2VzIHdpbGwgYmUgYnVpbGRpbmcgbGlidXNiLTEuMC5sYSBhdCB0aGUKLXNhbWUgdGltZS4KLQotU29sdmUgdGhpcyBieSByZW1vdmluZyB0aGUgZXhwbGljaXQgYWxsIHRhcmdldCwgd2hpY2ggYXMgbGlidXNiLTEuMC5kbGwgaXNuJ3QKLWJ1aWx0IHVuZGVyIExpbnV4IGlzIHJlZHVuZGFudCBhbnl3YXkuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2xpYnVzYi9NYWtlZmlsZS5hbSBiL2xpYnVzYi9NYWtlZmlsZS5hbQotaW5kZXggMGNhYjBhMC4uYzg4MDIxMyAxMDA2NDQKLS0tLSBhL2xpYnVzYi9NYWtlZmlsZS5hbQotKysrIGIvbGlidXNiL01ha2VmaWxlLmFtCi1AQCAtMSwyICswLDAgQEAKLS1hbGw6IGxpYnVzYi0xLjAubGEgbGlidXNiLTEuMC5kbGwKLS0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXNiL2xpYnVzYjFfMS4wLjIyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiMV8xLjAuMjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkOWQ3NzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiMV8xLjAuMjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1TVU1NQVJZID0gIlVzZXJzcGFjZSBsaWJyYXJ5IHRvIGFjY2VzcyBVU0IgKHZlcnNpb24gMS4wKSIKLUhPTUVQQUdFID0gImh0dHA6Ly9saWJ1c2Iuc2YubmV0IgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3LmxpYnVzYi5vcmcvcmVwb3J0IgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiYzA5MzkwMTg1N2ZjZDExOGYwNjVmOTAwOTgyYzI0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2xpYnVzYi9saWJ1c2ItJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1kbGwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0NjYyNjc4ODlkYWVhZDQ3Njc0ZGY5MzNjZWE5Y2FjYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NWFlYjlkNTlhNGZkYjgwMGQzMjlhNTQ1YzJlNjc5OWY3MzIzNjIxOTNiNDY1ZWExOThmMmFhMjc1NTE4MTU3IgotCi1TID0gIiR7V09SS0RJUn0vbGlidXNiLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHRlc3QKLQotUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPz89ICJ1ZGV2IgotUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLWVuYWJsZS11ZGV2LC0tZGlzYWJsZS11ZGV2LHVkZXYiCi0KLUVYVFJBX09FQ09ORiA9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0JaWYgWyAhICR7RH0ke2xpYmRpcn0gLWVmICR7RH0ke2Jhc2VfbGliZGlyfSBdOyB0aGVuCi0JCW12ICR7RH0ke2Jhc2VfbGliZGlyfS9wa2djb25maWcgJHtEfSR7bGliZGlyfQotCWZpCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgIG9lX3J1bm1ha2UgLUMgdGVzdHMgc3RyZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotZG9faW5zdGFsbF9wdGVzdCgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtCfS90ZXN0cy8ubGlicy9zdHJlc3MgJHtEfSR7UFRFU1RfUEFUSH0gICAgICAgICAKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9saWJkaXJ9Lyouc28uKiIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2Jhc2VfbGliZGlyfS8qLnNvICR7YmFzZV9saWJkaXJ9LyoubGEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxXzEuMC4yMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXNiL2xpYnVzYjFfMS4wLjIzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmZDY1OGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxXzEuMC4yMy5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIlVzZXJzcGFjZSBsaWJyYXJ5IHRvIGFjY2VzcyBVU0IgKHZlcnNpb24gMS4wKSIKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJ1c2Iuc2YubmV0IgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3LmxpYnVzYi5vcmcvcmVwb3J0IgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiYzA5MzkwMTg1N2ZjZDExOGYwNjVmOTAwOTgyYzI0IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2xpYnVzYi9saWJ1c2ItJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImJlNzllZDRhNGE0NDAxNjlkZWVjOGJlYWFjNmFhZTMzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRmYzE3YjJlZjM1MDI3NTc2NDFiZjhmZTJjMTRhZDg2ZWM4NjMwMmEyYjc4NWFiY2IwODA2ZmQwM2FhMTIwMWYiCisKK1MgPSAiJHtXT1JLRElSfS9saWJ1c2ItJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwdGVzdAorCitQQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gInVkZXYiCitQQUNLQUdFQ09ORklHW3VkZXZdID0gIi0tZW5hYmxlLXVkZXYsLS1kaXNhYmxlLXVkZXYsdWRldiIKKworRVhUUkFfT0VDT05GID0gIi0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKwlpZiBbICEgJHtEfSR7bGliZGlyfSAtZWYgJHtEfSR7YmFzZV9saWJkaXJ9IF07IHRoZW4KKwkJbXYgJHtEfSR7YmFzZV9saWJkaXJ9L3BrZ2NvbmZpZyAke0R9JHtsaWJkaXJ9CisJZmkKK30KKworZG9fY29tcGlsZV9wdGVzdCgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgb2VfcnVubWFrZSAtQyB0ZXN0cyBzdHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitkb19pbnN0YWxsX3B0ZXN0KCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBpbnN0YWxsIC1tIDc1NSAke0J9L3Rlc3RzLy5saWJzL3N0cmVzcyAke0R9JHtQVEVTVF9QQVRIfSAgICAgICAgIAorfQorCitGSUxFU18ke1BOfSArPSAiJHtiYXNlX2xpYmRpcn0vKi5zby4qIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmFzZV9saWJkaXJ9Lyouc28gJHtiYXNlX2xpYmRpcn0vKi5sYSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0XzEuMS4zNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0XzEuMS4zNC5iYgppbmRleCBhZDM3YjVhLi4xOTYxYmI1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdF8xLjEuMzQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjM0LmJiCkBAIC0yMCw3ICsyMCw3IEBACiAKIEJJTkNPTkZJRyA9ICIke2JpbmRpcn0veHNsdC1jb25maWciCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWctZGlzYWJsZWQgbGliX3BhY2thZ2UKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWctZGlzYWJsZWQgbGliX3BhY2thZ2UgbXVsdGlsaWJfaGVhZGVyCiAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKIAkjIFdlIGRvbid0IERFUEVORCBvbiBiaW51dGlscyBmb3IgYW5zaWRlY2wuaCBzbyBlbnN1cmUgd2UgZG9uJ3QgdXNlIHRoZSBoZWFkZXIuCkBAIC00Myw2ICs0MywxMCBAQAogICAgIGNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L3hzbHRwcm9jIFhNTF9DQVRBTE9HX0ZJTEVTPSR7c3lzY29uZmRpcn0veG1sL2NhdGFsb2cKIH0KIAorZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgb2VfbXVsdGlsaWJfaGVhZGVyIGxpYnhzbHQveHNsdGNvbmZpZy5oCit9CisKIEZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGlieHNsdC1wbHVnaW5zIgogRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0veHNsdENvbmYuc2giCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieWFtbC9saWJ5YW1sXzAuMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ5YW1sL2xpYnlhbWxfMC4yLjIuYmIKaW5kZXggZmJkMTk5MjAuLjUxMDVjZTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieWFtbC9saWJ5YW1sXzAuMi4yLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieWFtbC9saWJ5YW1sXzAuMi4yLmJiCkBAIC0xLDEzICsxLDEzIEBACiBTVU1NQVJZID0gIkxpYllBTUwgaXMgYSBZQU1MIDEuMSBwYXJzZXIgYW5kIGVtaXR0ZXIgd3JpdHRlbiBpbiBDLiIKIERFU0NSSVBUSU9OID0gIkxpYllBTUwgaXMgYSBDIGxpYnJhcnkgZm9yIHBhcnNpbmcgYW5kIGVtaXR0aW5nIGRhdGEgaW4gWUFNTCAxLjEsIFwKIGEgaHVtYW4tcmVhZGFibGUgZGF0YSBzZXJpYWxpemF0aW9uIGZvcm1hdC4gIgotSE9NRVBBR0UgPSAiaHR0cDovL3B5eWFtbC5vcmcvd2lraS9MaWJZQU1MIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXlhbWwub3JnL3dpa2kvTGliWUFNTCIKIFNFQ1RJT04gPSAibGlicy9kZXZlbCIKIAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNzZiNGM2OWJmY2Y4MjMxM2JiZGMwMzkzYjA0NDM4YSIKIAotU1JDX1VSSSA9ICJodHRwOi8vcHl5YW1sLm9yZy9kb3dubG9hZC9saWJ5YW1sL3lhbWwtJHtQVn0udGFyLmd6IgorU1JDX1VSSSA9ICJodHRwczovL3B5eWFtbC5vcmcvZG93bmxvYWQvbGlieWFtbC95YW1sLSR7UFZ9LnRhci5neiIKIFNSQ19VUklbbWQ1c3VtXSA9ICI1NGJmMTFjY2I4YmM0ODhiNWIzYmVjOTMxZjViNzBkYyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YTkxMDBhYjYxMDQ3ZmQ5YmQzOTViY2VmM2NlNTQwMzM2NWNhZmQ1NWMxZTBkMDI5OWNkZTE0OTU4ZTQ3YmU5IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L21wZnIvbXBmcl80LjAuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzQuMC4yLmJiCmluZGV4IDAzMDU5MTcuLjAwYzJkYzIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzQuMC4yLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzQuMC4yLmJiCkBAIC0xLDUgKzEsNSBAQAogU1VNTUFSWSA9ICJDIGxpYnJhcnkgZm9yIG11bHRpcGxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBjb21wdXRhdGlvbnMgd2l0aCBleGFjdCByb3VuZGluZyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubXBmci5vcmcvIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cubXBmci5vcmcvIgogTElDRU5TRSA9ICJMR1BMdjMrIgogU0VDVElPTiA9ICJkZXZlbCIKIApAQCAtMTAsNyArMTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAiCiBERVBFTkRTID0gImdtcCBhdXRvY29uZi1hcmNoaXZlIgogCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubXBmci5vcmcvbXBmci0ke1BWfS9tcGZyLSR7UFZ9LnRhci54eiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cubXBmci5vcmcvbXBmci0ke1BWfS9tcGZyLSR7UFZ9LnRhci54eiIKIFNSQ19VUklbbWQ1c3VtXSA9ICIzMjBmYmM0NDYzZDRjOGNiMWU1NjY5MjlkOGFkYzRmOCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZDNiZTcwODYwNGVhZTBlNDJkNTc4YmE5M2IzOTBjMmExNDVmMTc3NDNhNzQ0ZDhmM2Y4YzJhZDU4NTVhMzhhIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci8wMDAxLW1kLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci8wMDAxLW1kLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzY2Q2NzAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwMS1tZC1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSAxNDdmM2MyYWNiZDk2ZDQ0MDI1Y2VjMTE4MDBkZWQwMjgyMzI3NzY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTggU2VwIDIwMTcgMTc6MjI6NDMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gbWQ6IEZpeCBidWlsZCB3aXRoIG11c2wKLQotVGhlIE1JUFMgc3BlY2lmaWMgaGVhZGVyIDxzZ2lkZWZzLmg+IGlzIG5vdCBwcm92aWRlZCBieSBtdXNsCi1saW51eCBrZXJuZWwgaGVhZGVycyBwcm92aWRlIDxhc20vc2dpZGVmcy5oPiB3aGljaCBoYXMgc2FtZSBkZWZpbml0aW9ucwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZyBiL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZwotaW5kZXggNjQwYjE5Yy4uMzEyOTZhOCAxMDA2NDQKLS0tLSBhL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZwotKysrIGIvcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnCi1AQCAtNDk5LDcgKzQ5OSw3IEBACi0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAKLSAvKiBGb3IgX0FCSTY0ICovCi0tI2luY2x1ZGUgPHNnaWRlZnMuaD4KLSsjaW5jbHVkZSA8YXNtL3NnaWRlZnMuaD4KLSAKLSAjaWZkZWYgX19NSVBTRUJfXwotICNkZWZpbmUgSVNfQklHX0VORElBTiAxCi0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9uc3ByLnBjLmluIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvbnNwci5wYy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc0Y2FhYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9uc3ByLnBjLmluCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotb3NfbGlicz0tbHB0aHJlYWQgLWxkbAotcHJlZml4PU9FUFJFRklYCi1leGVjX3ByZWZpeD1PRUVYRUNQUkVGSVgKLWxpYmRpcj1PRUxJQkRJUgotaW5jbHVkZWRpcj1PRUlOQ0RJUgotCi1OYW1lOiBOU1BSCi1EZXNjcmlwdGlvbjogVGhlIE5ldHNjYXBlIFBvcnRhYmxlIFJ1bnRpbWUKLVZlcnNpb246IE5TUFJWRVJTSU9OCi1MaWJzOiAtTCR7bGliZGlyfSAtbHBsZHM0IC1scGxjNCAtbG5zcHI0IC1scHRocmVhZCAtbGRsCi1DZmxhZ3M6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjIzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4yMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUyNzYxYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjIzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkzICswLDAgQEAKLVNVTU1BUlkgPSAiTmV0c2NhcGUgUG9ydGFibGUgUnVudGltZSBMaWJyYXJ5IgotSE9NRVBBR0UgPSAgImh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvbnNwci8iCi1MSUNFTlNFID0gIkdQTC0yLjAgfCBNUEwtMi4wIHwgTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jb25maWd1cmUuaW47YmVnaW5saW5lPTM7ZW5kbGluZT02O21kNT05MGMyZmRlZTM4ZTQ1ZDYzMDJhYmNmZTQ3NWM4YjVjNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5pbjtiZWdpbmxpbmU9NDtlbmRsaW5lPTM4O21kNT1iZWRhMWRiYjk4YTUxNWY1NTdkM2U1OGVmMDZiY2E5OSIKLVNFQ1RJT04gPSAibGlicy9uZXR3b3JrIgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL25zcHIvcmVsZWFzZXMvdiR7UFZ9L3NyYy9uc3ByLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtYnVpbGQtb24teDg2XzY0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1zcmNkaXItZnJvbS1jb25maWd1cmUtaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtbmlvczItc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1kLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUuaW4tcmVtb3ZlLV9CVUlMRF9TVFJJTkctYW5kLV9CVUlMRF9USU1FLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25zcHIucGMuaW4gXAotIgotCi1DQUNIRURfQ09ORklHVVJFVkFSU19hcHBlbmRfbGliYy1tdXNsID0gIiBDRkxBR1M9JyR7Q0ZMQUdTfSAtRF9QUl9QT0xMX0FWQUlMQUJMRSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRF9QUl9IQVZFX09GRjY0X1QgLURfUFJfSU5FVDYgLURfUFJfSEFWRV9JTkVUX05UT1AgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLURfUFJfSEFWRV9HRVRIT1NUQllOQU1FMiAtRF9QUl9IQVZFX0dFVEFERFJJTkZPIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EX1BSX0lORVQ2X1BST0JFIC1ETk9fRExPUEVOX05VTEwnIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbnNwci9yZWxlYXNlcy8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJ2KD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjkwYWYwNDUwNDIzYjA1ODhmMGViYTYyNTVjMDdhYjc5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRiOWQ4MjEwMzdmYWY1NzIzZGE5MDE1MTVlZDljYWM4YjIzZWYxZWEzNzI5MDIyMjU5Nzc3MzkzNDUzNDc3YTQiCi0KLUNWRV9QUk9EVUNUID0gIm5ldHNjYXBlX3BvcnRhYmxlX3J1bnRpbWUiCi0KLVMgPSAiJHtXT1JLRElSfS9uc3ByLSR7UFZ9L25zcHIiCi0KLVJERVBFTkRTXyR7UE59LWRldiArPSAicGVybCIKLVRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotCi1URVNUUyA9ICIgXAotICAgIGFjY2VwdCBcCi0gICAgYWNjZXB0cmVhZCBcCi0gICAgYWNjZXB0cmVhZGVtdSBcCi0gICAgYWZmaW5pdHkgXAotICAgIGFsYXJtIFwKLSAgICBhbm9uZm0gXAotICAgIGF0b21pYyBcCi0gICAgYXR0YWNoIFwKLSAgICBiaWdmaWxlIFwKLSAgICBjbGVhbnVwIFwKLSAgICBjbHRzcnYgIFwKLSAgICBjb25jdXIgXAotICAgIGN2YXIgXAotICAgIGN2YXIyIFwKLSAgICBkbGx0ZXN0IFwKLSAgICBkdG9hIFwKLSAgICBlcnJjb2RlcyBcCi0gICAgZXhpdCBcCi0gICAgZmRjYWNoIFwKLSAgICBmaWxlaW8gXAotICAgIGZvcmVpZ24gXAotICAgIGZvcm1hdHRtIFwKLSAgICBmc3luYyBcCi0gICAgZ2V0aG9zdCBcCi0gICAgZ2V0cHJvdG8gXAotICAgIGkybCBcCi0gICAgaW5pdGNsayBcCi0gICAgaW5ydmFsIFwKLSAgICBpbnN0cnVtdCBcCi0gICAgaW50cmlvIFwKLSAgICBpbnRydXB0IFwKLSAgICBpb190aW1lb3V0IFwKLSAgICBpb2NvbnRociBcCi0gICAgam9pbiBcCi0gICAgam9pbmtrIFwKLSAgICBqb2lua3UgXAotICAgIGpvaW51ayBcCi0gICAgam9pbnV1IFwKLSAgICBsYXllciBcCi0gICAgbGF6eWluaXQgXAotICAgIGxpYmZpbGVuYW1lIFwKLSAgICBsbHRlc3QgXAotICAgIGxvY2sgXAotICAgIGxvY2tmaWxlIFwKLSAgICBsb2dmaWxlIFwKLSAgICBsb2dnZXIgXAotICAgIG1hbnlfY3YgXAotICAgIG11bHRpd2FpdCBcCi0gICAgbmFtZXNobTEgXAotICAgIG5ibGF5ZXIgXAotICAgIG5vbmJsb2NrIFwKLSAgICBudGlvdG8gXAotICAgIG50b2ggXAotICAgIG9wXzJsb25nIFwKLSAgICBvcF9leGNsIFwKLSAgICBvcF9maWxuZiBcCi0gICAgb3BfZmlsb2sgXAotICAgIG9wX25vZmlsIFwKLSAgICBwYXJlbnQgXAotICAgIHBhcnNldG0gXAotICAgIHBlZWsgXAotICAgIHBlcmYgXAotICAgIHBpcGVwaW5nIFwKLSAgICBwaXBlcGluZzIgXAotICAgIHBpcGVzZWxmIFwKLSAgICBwb2xsX25tIFwKLSAgICBwb2xsX3RvIFwKLSAgICBwb2xsYWJsZSBcCi0gICAgcHJmdGVzdCBcCi0gICAgcHJpbWJsb2sgXAotICAgIHByb3ZpZGVyIFwKLSAgICBwcnBvbGxtbCBcCi0gICAgcmFuZmlsZSBcCi0gICAgcmFuZHNlZWQgXAotICAgIHJlaW5pdCBcCi0gICAgcndsb2NrdGVzdCBcCi0gICAgc2VsX3NwZCBcCi0gICAgc2VsY3RfZXIgXAotICAgIHNlbGN0X25tIFwKLSAgICBzZWxjdF90byBcCi0gICAgc2VsaW50ciBcCi0gICAgc2VtYSBcCi0gICAgc2VtYWVyciBcCi0gICAgc2VtYXBpbmcgXAotICAgIHNlbmR6bGYgXAotICAgIHNlcnZlcl90ZXN0IFwKLSAgICBzZXJ2cl9rayBcCi0gICAgc2VydnJfdWsgXAotICAgIHNlcnZyX2t1IFwKLSAgICBzZXJ2cl91dSBcCi0gICAgc2hvcnRfdGhyZWFkIFwKLSAgICBzaWdwaXBlIFwKLSAgICBzb2NrZXQgXAotICAgIHNvY2tvcHQgXAotICAgIHNvY2twaW5nIFwKLSAgICBzcHJpbnRmIFwKLSAgICBzdGFjayBcCi0gICAgc3RkaW8gXAotICAgIHN0cjJhZGRyIFwKLSAgICBzdHJvZCBcCi0gICAgc3dpdGNoIFwKLSAgICBzeXN0ZW0gXAotICAgIHRlc3RiaXQgXAotICAgIHRlc3RmaWxlIFwKLSAgICB0aHJlYWRzIFwKLSAgICB0aW1lbWFjIFwKLSAgICB0aW1ldGVzdCBcCi0gICAgdHBkIFwKLSAgICB1ZHBzcnYgXAotICAgIHZlcmNoZWNrIFwKLSAgICB2ZXJzaW9uIFwKLSAgICB3cml0ZXYgXAotICAgIHhub3RpZnkgXAotICAgIHplcm9sZW4iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIG11bHRpbGliX3NjcmlwdAotCi1NVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWRldjoke2JpbmRpcn0vbnNwci1jb25maWciCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCW9lX3J1bm1ha2UgQ1JPU1NfQ09NUElMRT0xIENGTEFHUz0iLURYUF9VTklYICR7QlVJTERfQ0ZMQUdTfSIgTERGTEFHUz0iIiBDQz0iJHtCVUlMRF9DQ30iIC1DIGNvbmZpZyBleHBvcnQKLX0KLQotZG9fY29tcGlsZV9hcHBlbmQoKSB7Ci0Jb2VfcnVubWFrZSAtQyBwci90ZXN0cwotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1EICR7V09SS0RJUn0vbnNwci5wYy5pbiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3ByLnBjCi0gICAgc2VkIC1pICBcCi0gICAgLWUgJ3M6TlNQUlZFUlNJT046JHtQVn06ZycgXAotICAgIC1lICdzOk9FUFJFRklYOiR7cHJlZml4fTpnJyBcCi0gICAgLWUgJ3M6T0VMSUJESVI6JHtsaWJkaXJ9OmcnIFwKLSAgICAtZSAnczpPRUlOQ0RJUjoke2luY2x1ZGVkaXJ9OmcnIFwKLSAgICAtZSAnczpPRUVYRUNQUkVGSVg6JHtleGVjX3ByZWZpeH06ZycgXAotICAgICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcHIucGMKLQotICAgIG1rZGlyIC1wICR7RH0ke2xpYmRpcn0vbnNwci90ZXN0cwotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3ByL3Rlc3RzL3J1bnRlc3RzLnBsICR7RH0ke2xpYmRpcn0vbnNwci90ZXN0cwotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3ByL3Rlc3RzL3J1bnRlc3RzLnNoICR7RH0ke2xpYmRpcn0vbnNwci90ZXN0cwotICAgIGNkICR7Qn0vcHIvdGVzdHMKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtURVNUU30gJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCi0KLSAgICAjIGRlbGV0ZSBjb21waWxlLWV0LnBsIGFuZCBwZXJyLnByb3BlcnRpZXMgZnJvbSAke2JpbmRpcn0gYmVjYXVzZSB0aGVzZSBhcmUKLSAgICAjIG9ubHkgdXNlZCB0byBnZW5lcmF0ZSBwcmVyci5jIGFuZCBwcmVyci5oIGZpbGVzIGZyb20gcHJlcnIuZXQgYXQgY29tcGlsZQotICAgICMgdGltZQotICAgIHJtICR7RH0ke2JpbmRpcn0vY29tcGlsZS1ldC5wbCAke0R9JHtiaW5kaXJ9L3ByZXJyLnByb3BlcnRpZXMKLX0KLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28iCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtiaW5kaXJ9LyogJHtsaWJkaXJ9L25zcHIvdGVzdHMvKiAke2xpYmRpcn0vcGtnY29uZmlnIFwKLSAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9LyogJHtkYXRhZGlyfS9hY2xvY2FsLyogIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4MWM2OWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1maXgtbnNpbnN0YWxsLWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRml4IG5zcyBtdWx0aWxpYiBidWlsZCBvbiBvcGVuU1VTRSAxMS54IDMyYml0Ci0KLVdoaWxlIGJ1aWxkaW5nIGxpYjY0LW5zcyBvbiBvcGVuU1VTRSAxMS54IDMyYml0LCB0aGUgbnNpbnN0YWxsIHdpbGwKLWZhaWwgd2l0aCBlcnJvcjoKLQotKiBuc2luc3RhbGwuYzoxOjA6IHNvcnJ5LCB1bmltcGxlbWVudGVkOiA2NC1iaXQgbW9kZSBub3QgY29tcGlsZWQKLQotSXQgY2F1c2VkIGJ5IHRoZSAnLW02NCcgb3B0aW9uIHdoaWNoIHBhc3NlZCB0byBob3N0IGdjYy4KLQotVGhlIG5zaW5zdGFsbCB3YXMgYnVpbHQgZmlyc3Qgd2hpbGUgbnNzIHN0YXJ0aW5nIHRvIGJ1aWxkLCBpdCBvbmx5IHJ1bnMKLW9uIGhvc3QgdG8gaW5zdGFsbCBidWlsdCBmaWxlcywgaXQgZG9lc24ndCBuZWVkIGFueSBjcm9zcy1jb21wbGluZyBvcgotbXVsdGlsaWIgYnVpbGQgb3B0aW9ucy4gSnVzdCBjbGVhbiB0aGUgQVJDSEZMQUcgYW5kIExERkxBR1MgdG8gZml4IHRoaXMKLWVycm9yLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLUluZGV4OiBuc3MtMy4yNC9uc3MvY29yZWNvbmYvbnNpbnN0YWxsL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbnNzLTMuMjQub3JpZy9uc3MvY29yZWNvbmYvbnNpbnN0YWxsL01ha2VmaWxlCi0rKysgbnNzLTMuMjQvbnNzL2NvcmVjb25mL25zaW5zdGFsbC9NYWtlZmlsZQotQEAgLTE4LDYgKzE4LDEzIEBAIElOVEVSTkFMX1RPT0xTICA9IDEKLSAKLSBpbmNsdWRlICQoREVQVEgpL2NvcmVjb25mL2NvbmZpZy5tawotIAotKyMgbnNpbnN0YWxsIGlzIHVuZml0IGZvciBjcm9zcy1jb21waWxpbmcvbXVsdGlsaWItYnVpbGQgc2luY2UgaXQgd2FzCi0rIyBhbHdheXMgcnVuIG9uIGxvY2FsIGhvc3QgdG8gaW5zdGFsbCBidWlsdCBmaWxlcy4gVGhpcyBjaGFuZ2UgaW50ZW5kcwotKyMgdG8gY2xlYW4gdGhlICctbTY0JyBmcm9tIEFSQ0hGTEFHIGFuZCBMREZMQUdTLgotK0FSQ0hGTEFHID0KLStMREZMQUdTID0KLStDRkxBR1MgPQotKwotIGlmZXEgKCwkKGZpbHRlci1vdXQgT1MyIFdJTiUsJChPU19UQVJHRVQpKSkKLSBQUk9HUkFNCQk9Ci0gZWxzZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy5wYy5pbiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3MucGMuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMGY2MzUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy5wYy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLXByZWZpeD1PRVBSRUZJWAotZXhlY19wcmVmaXg9T0VFWEVDUFJFRklYCi1saWJkaXI9T0VMSUJESVIKLWluY2x1ZGVkaXI9T0VJTkNESVIKLQotTmFtZTogTlNTCi1EZXNjcmlwdGlvbjogTmV0d29yayBTZWN1cml0eSBTZXJ2aWNlcwotVmVyc2lvbjogJU5TU19WRVJTSU9OJQotUmVxdWlyZXM6IG5zcHIgPj0gJU5TUFJfVkVSU0lPTiUKLUxpYnM6IC1sc3NsMyAtbHNtaW1lMyAtbG5zczMgLWxzb2Z0b2tuMyAtbG5zc3V0aWwzCi1DZmxhZ3M6IC1JT0VJTkNESVIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjQ1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuNDUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4OWU3ZDYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuNDUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNjcgKzAsMCBAQAotU1VNTUFSWSA9ICJNb3ppbGxhJ3MgU1NMIGFuZCBUTFMgaW1wbGVtZW50YXRpb24iCi1ERVNDUklQVElPTiA9ICJOZXR3b3JrIFNlY3VyaXR5IFNlcnZpY2VzIChOU1MpIGlzIGEgc2V0IG9mIGxpYnJhcmllcyBcCi1kZXNpZ25lZCB0byBzdXBwb3J0IGNyb3NzLXBsYXRmb3JtIGRldmVsb3BtZW50IG9mIFwKLXNlY3VyaXR5LWVuYWJsZWQgY2xpZW50IGFuZCBzZXJ2ZXIgYXBwbGljYXRpb25zLiBcCi1BcHBsaWNhdGlvbnMgYnVpbHQgd2l0aCBOU1MgY2FuIHN1cHBvcnQgU1NMIHYyIGFuZCB2MywgXAotVExTLCBQS0NTIDUsIFBLQ1MgNywgUEtDUyAxMSwgUEtDUyAxMiwgUy9NSU1FLCBYLjUwOSBcCi12MyBjZXJ0aWZpY2F0ZXMsIGFuZCBvdGhlciBzZWN1cml0eSBzdGFuZGFyZHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9zZWN1cml0eS9wa2kvbnNzLyIKLVNFQ1RJT04gPSAibGlicyIKLQotREVQRU5EUyA9ICJzcWxpdGUzIG5zcHIgemxpYiBuc3MtbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAic3FsaXRlMy1uYXRpdmUgbnNwci1uYXRpdmUgemxpYi1uYXRpdmUiCi0KLUxJQ0VOU0UgPSAiTVBMLTIuMCB8IChNUEwtMi4wICYgR1BMLTIuMCspIHwgKE1QTC0yLjAgJiBMR1BMLTIuMSspIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9uc3MvQ09QWUlORzttZDU9M2IxZTg4ZTFiOWMwYjVhNGIyODgxZDQ2Y2NlMDZhMTggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbnNzL2xpYi9mcmVlYmwvbXBpL2RvYy9MSUNFTlNFO21kNT00OTFmMTU4ZDA5ZDk0ODQ2NmFmY2U4NWQ2ZjFmZTE4ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0UtTVBMO21kNT01ZDQyNWM4ZjMxNTdkYmYyMTJkYjJlYzUzZDllNTEzMiIKLQotVkVSU0lPTl9ESVIgPSAiJHtAZC5nZXRWYXIoJ0JQJykudXBwZXIoKS5yZXBsYWNlKCctJywgJ18nKS5yZXBsYWNlKCcuJywgJ18nKSArICdfUlRNJ30iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbW96aWxsYS5vcmcvc2VjdXJpdHkvbnNzL3JlbGVhc2VzLyR7VkVSU0lPTl9ESVJ9L3NyYy8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbnNzLnBjLmluIFwKLSAgICAgICAgICAgZmlsZTovL3NpZ25saWJzLnNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbnNzLWZpeC1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3Mtbm8tcnBhdGgtZm9yLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3MtZml4LWluY29ycmVjdC1zaGViYW5nLW9mLXBlcmwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1XdmFyYXJncy13aXRoLWNsYW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BxZy5jLVVMTF9hZGRlbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYmxhbmstY2VydDkuZGIgXAotICAgICAgICAgICBmaWxlOi8vYmxhbmsta2V5NC5kYiBcCi0gICAgICAgICAgIGZpbGU6Ly9zeXN0ZW0tcGtjczExLnR4dCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImYxNzUyZDcyMjNlZTlkOTEwZDU1MWU1NzI2NGJhZmE4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjExMmYwNTIyM2QxZmRlOTAyYzE3MDk2NmJmYzZmMDExYjI0YTgzOGJlMTY5NjliMTEwZWNmMmJiN2JjMjRlOGIiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemlsbGEvUHJvamVjdHMvTlNTL05TU19SZWxlYXNlcyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIk5TU18oP1A8cHZlcj4uKylfcmVsZWFzZV9ub3RlcyIKLQotaW5oZXJpdCBzaXRlaW5mbwotCi1URCA9ICIke1N9L3RlbnRhdGl2ZS1kaXN0IgotVERTID0gIiR7U30vdGVudGF0aXZlLWRpc3Qtc3RhZ2luZyIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2xpYmMtbXVzbCAoKSB7Ci0gICAgc2VkIC1pIC1lICcvLURIQVZFX1NZU19DREVGU19IL2QnICR7U30vbnNzL2xpYi9kYm0vY29uZmlnL2NvbmZpZy5tawotfQotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgIGV4cG9ydCBOU1BSX0lOQ0xVREVfRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfQotICAgIGV4cG9ydCBOU1BSX0xJQl9ESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9Ci0gICAgZXhwb3J0IE5TU19FTkFCTEVfV0VSUk9SPTAKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLSAgICBleHBvcnQgTERGTEFHUz0iIgotfQotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgICMgTmVlZCB0byBzZXQgUlBBVEggc28gdGhhdCBjaHJwYXRoIHdpbGwgZG8gaXRzIGpvYiBjb3JyZWN0bHkKLSAgICBSUEFUSD0iLVdsLC1ycGF0aC1saW5rLCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0JBU0VfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFfSIKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICBleHBvcnQgQ1JPU1NfQ09NUElMRT0xCi0gICAgZXhwb3J0IE5BVElWRV9DQz0iJHtCVUlMRF9DQ30iCi0gICAgZXhwb3J0IE5BVElWRV9GTEFHUz0iJHtCVUlMRF9DRkxBR1N9IgotICAgIGV4cG9ydCBCVUlMRF9PUFQ9MQotCi0gICAgZXhwb3J0IEZSRUVCTF9OT19ERVBFTkQ9MQotICAgIGV4cG9ydCBGUkVFQkxfTE9XSEFTSD0xCi0KLSAgICBleHBvcnQgTElCRElSPSR7bGliZGlyfQotICAgIGV4cG9ydCBNT1pJTExBX0NMSUVOVD0xCi0gICAgZXhwb3J0IE5TX1VTRV9HQ0M9MQotICAgIGV4cG9ydCBOU1NfVVNFX1NZU1RFTV9TUUxJVEU9MQotICAgIGV4cG9ydCBOU1NfRU5BQkxFX0VDQz0xCi0KLSAgICBleHBvcnQgT1NfUkVMRUFTRT0zLjQKLSAgICBleHBvcnQgT1NfVEFSR0VUPUxpbnV4Ci0gICAgZXhwb3J0IE9TX0FSQ0g9TGludXgKLQotICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9cHBjCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYzY0IiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9cHBjNjQKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHNlbCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjQiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0ZWwiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1taXBzCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAiYWFyY2g2NF9iZSIgXTsgdGhlbgotICAgICAgICBPU19URVNUPSJhYXJjaDY0IgotICAgIGVsc2UKLSAgICAgICAgT1NfVEVTVD0iJHtUQVJHRVRfQVJDSH0iCi0gICAgZmkKLQotICAgIGlmIFsgIiR7U0lURUlORk9fQklUU30iID0gIjY0IiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfNjQ9MQotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgLWEgIiR7U0lURUlORk9fQklUU30iID0gIjMyIiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfWDMyPTEKLSAgICBmaQotCi0gICAgZXhwb3J0IE5TU19ESVNBQkxFX0dURVNUUz0xCi0KLSAgICAjIFdlIGNhbiBtb2RpZnkgQ0MgaW4gdGhlIGVudmlyb25tZW50LCBidXQgaWYgd2Ugc2V0IGl0IHZpYSBhbgotICAgICMgYXJndW1lbnQgdG8gbWFrZSwgbnNpbnN0YWxsLCBhIGhvc3QgcHJvZ3JhbSwgd2lsbCBhbHNvIGJ1aWxkIHdpdGggaXQhCi0gICAgIwotICAgICMgbnNzIHByZXR0eSBtdWNoIGRvZXMgaXRzIG93biB0aGluZyB3aXRoIENGTEFHUywgc28gd2UgcHV0IHRoZW0gaW50byBDQy4KLSAgICAjIE9wdGltaXphdGlvbiB3aWxsIGdldCBjbG9iYmVyZWQsIGJ1dCBtb3N0IG9mIHRoZSBzdHVmZiB3aWxsIHN1cnZpdmUuCi0gICAgIyBUaGUgbW90aXZhdGlvbiBmb3IgdGhpcyBpcyB0byBwb2ludCB0byB0aGUgY29ycmVjdCBwbGFjZSBmb3IgZGVidWcKLSAgICAjIHNvdXJjZSBmaWxlcyBhbmQgQ0ZMQUdTIGRvZXMgdGhhdC4gIE5vdGhpbmcgdXNlcyBDQ0MuCi0gICAgIwotICAgIGV4cG9ydCBDQz0iJHtDQ30gJHtDRkxBR1N9IgotICAgIG1ha2UgLUMgLi9uc3MgQ0NDPSIke0NYWH0gLWciIFwKLSAgICAgICAgT1NfVEVTVD0ke09TX1RFU1R9IFwKLSAgICAgICAgUlBBVEg9IiR7UlBBVEh9IgotfQotCi1kb19jb21waWxlW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKLQotZG9faW5zdGFsbF9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLSAgICBleHBvcnQgTERGTEFHUz0iIgotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGV4cG9ydCBDUk9TU19DT01QSUxFPTEKLSAgICBleHBvcnQgTkFUSVZFX0NDPSIke0JVSUxEX0NDfSIKLSAgICBleHBvcnQgQlVJTERfT1BUPTEKLQotICAgIGV4cG9ydCBGUkVFQkxfTk9fREVQRU5EPTEKLQotICAgIGV4cG9ydCBMSUJESVI9JHtsaWJkaXJ9Ci0gICAgZXhwb3J0IE1PWklMTEFfQ0xJRU5UPTEKLSAgICBleHBvcnQgTlNfVVNFX0dDQz0xCi0gICAgZXhwb3J0IE5TU19VU0VfU1lTVEVNX1NRTElURT0xCi0gICAgZXhwb3J0IE5TU19FTkFCTEVfRUNDPTEKLQotICAgIGV4cG9ydCBPU19SRUxFQVNFPTMuNAotICAgIGV4cG9ydCBPU19UQVJHRVQ9TGludXgKLSAgICBleHBvcnQgT1NfQVJDSD1MaW51eAotCi0gICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1wcGMKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1wcGM2NAotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHMiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwc2VsIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjRlbCIgXTsgdGhlbgotICAgICAgICBPU19URVNUPW1pcHMKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJhYXJjaDY0X2JlIiBdOyB0aGVuCi0gICAgICAgIENQVV9BUkNIPWFhcmNoNjQKLSAgICAgICAgT1NfVEVTVD0iYWFyY2g2NCIKLSAgICBlbHNlCi0gICAgICAgIE9TX1RFU1Q9IiR7VEFSR0VUX0FSQ0h9IgotICAgIGZpCi0gICAgaWYgWyAiJHtTSVRFSU5GT19CSVRTfSIgPSAiNjQiIF07IHRoZW4KLSAgICAgICAgZXhwb3J0IFVTRV82ND0xCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiAtYSAiJHtTSVRFSU5GT19CSVRTfSIgPSAiMzIiIF07IHRoZW4KLSAgICAgICAgZXhwb3J0IFVTRV9YMzI9MQotICAgIGZpCi0KLSAgICBleHBvcnQgTlNTX0RJU0FCTEVfR1RFU1RTPTEKLQotICAgIG1ha2UgLUMgLi9uc3MgXAotICAgICAgICBDQ0M9IiR7Q1hYfSIgXAotICAgICAgICBPU19URVNUPSR7T1NfVEVTVH0gXAotICAgICAgICBTT1VSQ0VfTElCX0RJUj0iJHtURH0vJHtsaWJkaXJ9IiBcCi0gICAgICAgIFNPVVJDRV9CSU5fRElSPSIke1REfS8ke2JpbmRpcn0iIFwKLSAgICAgICAgaW5zdGFsbAotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7bGliZGlyfS8KLSAgICBmb3IgZmlsZSBpbiAke1N9L2Rpc3QvKi5PQkovbGliLyouc287IGRvCi0gICAgICAgIGVjaG8gIkluc3RhbGxpbmcgYGJhc2VuYW1lICRmaWxlYC4uLiIKLSAgICAgICAgY3AgJGZpbGUgICR7RH0vJHtsaWJkaXJ9LwotICAgIGRvbmUKLQotICAgIGZvciBzaGFyZWRfbGliIGluICR7VER9LyR7bGliZGlyfS8qLnNvLio7IGRvCi0gICAgICAgIGlmIFsgLWYgJHNoYXJlZF9saWIgXTsgdGhlbgotICAgICAgICAgICAgY3AgJHNoYXJlZF9saWIgJHtEfS8ke2xpYmRpcn0KLSAgICAgICAgICAgIGxuIC1zZiAkKGJhc2VuYW1lICRzaGFyZWRfbGliKSAke0R9LyR7bGliZGlyfS8kKGJhc2VuYW1lICRzaGFyZWRfbGliIC4xb2UpCi0gICAgICAgIGZpCi0gICAgZG9uZQotICAgIGZvciBzaGFyZWRfbGliIGluICR7VER9LyR7bGliZGlyfS8qLnNvOyBkbwotICAgICAgICBpZiBbIC1mICRzaGFyZWRfbGliIC1hICEgLWUgJHtEfS8ke2xpYmRpcn0vJHNoYXJlZF9saWIgXTsgdGhlbgotICAgICAgICAgICAgY3AgJHNoYXJlZF9saWIgJHtEfS8ke2xpYmRpcn0KLSAgICAgICAgZmkKLSAgICBkb25lCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS9uc3MzCi0gICAgaW5zdGFsbCAtbSA2NDQgLXQgJHtEfS8ke2luY2x1ZGVkaXJ9L25zczMgZGlzdC9wdWJsaWMvbnNzLyoKLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke2JpbmRpcn0KLSAgICBmb3IgYmluYXJ5IGluICR7VER9LyR7YmluZGlyfS8qOyBkbwotICAgICAgICBpbnN0YWxsIC1tIDc1NSAtdCAke0R9LyR7YmluZGlyfSAkYmluYXJ5Ci0gICAgZG9uZQotfQotCi1kb19pbnN0YWxsW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBDcmVhdGUgZW1wdHkgLmNoayBmaWxlcyBmb3IgdGhlIE5TUyBsaWJyYXJpZXMgYXQgYnVpbGQgdGltZS4gVGhleSBjb3VsZAotICAgICMgYmUgcmVnZW5lcmF0ZWQgYXQgdGFyZ2V0J3MgYm9vdCB0aW1lLgotICAgIGZvciBmaWxlIGluIGxpYnNvZnRva24zLmNoayBsaWJmcmVlYmwzLmNoayBsaWJuc3NkYm0zLmNoazsgZG8KLSAgICAgICAgdG91Y2ggJHtEfS8ke2xpYmRpcn0vJGZpbGUKLSAgICAgICAgY2htb2QgNzU1ICR7RH0vJHtsaWJkaXJ9LyRmaWxlCi0gICAgZG9uZQotICAgIGluc3RhbGwgLUQgLW0gNzU1ICR7V09SS0RJUn0vc2lnbmxpYnMuc2ggJHtEfS8ke2JpbmRpcn0vc2lnbmxpYnMuc2gKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcvCi0gICAgc2VkICdzLyVOU1NfVkVSU0lPTiUvJHtQVn0vJyAke1dPUktESVJ9L25zcy5wYy5pbiB8IHNlZCAncy8lTlNQUl9WRVJTSU9OJS80LjkuMi8nID4gJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VQUkVGSVg6JHtwcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VFWEVDUFJFRklYOiR7ZXhlY19wcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VMSUJESVI6JHtsaWJkaXJ9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VJTkNESVI6JHtpbmNsdWRlZGlyfS9uc3MzOmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAjIEl0IHVzZWQgdG8gY2FsbCBjZXJ0dXRpbCB0byBjcmVhdGUgYSBibGFuayBjZXJ0aWZpY2F0ZSB3aXRoIGVtcHR5IHBhc3N3b3JkIGF0Ci0gICAgIyBidWlsZCB0aW1lLCBidXQgdGhlIGNoZWNrc3VtIG9mIGtleTQuZGIgY2hhbmdlcyBldmVyeSB0aW1lIHdoZW4gY2VydHV0aWwgaXMgY2FsbGVkLgotICAgICMgSXQgY2F1c2VzIG5vbi1kZXRlcm1pbmlzbSBpc3N1ZSwgc28gcHJvdmlkZSBkYXRhYmFzZXMgd2l0aCBhIGJsYW5rIGNlcnRpZmljYXRlCi0gICAgIyB3aGljaCBhcmUgb3JpZ2luYWxseSBmcm9tIG91dHB1dCBvZiBuc3MgaW4gcWVtdXg4Ni02NCBidWlsZC4gWW91IGNhbiBnZXQgdGhlc2UKLSAgICAjIGRhdGFiYXNlcyBieToKLSAgICAjIGNlcnR1dGlsIC1OIC1kIHNxbDovZGF0YWJhc2UvcGF0aC8gLS1lbXB0eS1wYXNzd29yZAotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2JsYW5rLWNlcnQ5LmRiICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi9jZXJ0OS5kYgotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2JsYW5rLWtleTQuZGIgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiL2tleTQuZGIKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zeXN0ZW0tcGtjczExLnR4dCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvcGtjczExLnR4dAotfQotCi1QQUNLQUdFX1dSSVRFX0RFUFMgKz0gIm5zcy1uYXRpdmUiCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotICAgIGlmIFsgLW4gIiREIiBdOyB0aGVuCi0gICAgICAgIGZvciBJIGluICREJHtsaWJkaXJ9L2xpYiouY2hrOyBkbwotICAgICAgICAgICAgRE49YGRpcm5hbWUgJElgCi0gICAgICAgICAgICBCTj1gYmFzZW5hbWUgJEkgLmNoa2AKLSAgICAgICAgICAgIEZOPSRETi8kQk4uc28KLSAgICAgICAgICAgIHNobGlic2lnbiAtaSAkRk4KLSAgICAgICAgICAgIGlmIFsgJD8gLW5lIDAgXTsgdGhlbgotICAgICAgICAgICAgICAgIGV4aXQgMQotICAgICAgICAgICAgZmkKLSAgICAgICAgZG9uZQotICAgIGVsc2UKLSAgICAgICAgc2lnbmxpYnMuc2gKLSAgICBmaQotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tc21pbWUiCi1GSUxFU18ke1BOfS1zbWltZSA9ICJcCi0gICAgJHtiaW5kaXJ9L3NtaW1lIFwKLSIKLQotRklMRVNfJHtQTn0gPSAiXAotICAgICR7c3lzY29uZmRpcn0gXAotICAgICR7YmluZGlyfSBcCi0gICAgJHtsaWJkaXJ9L2xpYiouY2hrIFwKLSAgICAke2xpYmRpcn0vbGliKi5zbyBcCi0gICAgIgotCi1GSUxFU18ke1BOfS1kZXYgPSAiXAotICAgICR7bGliZGlyfS9uc3MgXAotICAgICR7bGliZGlyfS9wa2djb25maWcvKiBcCi0gICAgJHtpbmNsdWRlZGlyfS8qIFwKLSAgICAiCi0KLVJERVBFTkRTXyR7UE59LXNtaW1lID0gInBlcmwiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcDExLWtpdC9wMTEta2l0XzAuMjMuMTguMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcDExLWtpdC9wMTEta2l0XzAuMjMuMTguMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE5M2EwNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3AxMS1raXQvcDExLWtpdF8wLjIzLjE4LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIlByb3ZpZGVzIGEgd2F5IHRvIGxvYWQgYW5kIGVudW1lcmF0ZSBQS0NTIzExIG1vZHVsZXMiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTAyOTMzODg3ZjYwOTgwN2ZiYjU3YWE0MjM3ZDE0YTUwIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBndGstZG9jCi0KLURFUEVORFMgPSAibGlidGFzbjEgbGliZmZpIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcDExLWdsdWUvcDExLWtpdCIKLVNSQ1JFViA9ICJiMGViZTc1NTVjMjkxODA4ZGIyOTM3N2JhNzljYjgzMjYzMDFmMGE2IgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotQVVUT1RPT0xTX0FVWERJUiA9ICIke1N9L2J1aWxkL2xpdHRlciIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbdHJ1c3QtcGF0aHNdID0gIi0td2l0aC10cnVzdC1wYXRocz0vZXRjL3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0LC0td2l0aG91dC10cnVzdC1wYXRocywsY2EtY2VydGlmaWNhdGVzIgotCi0jIFRoaXMgcmVjaXBlIGRvZXMgbm90IHVzZSB0aGUgc3RhbmRhcmQgZ3RrLWRvYyBtNCBtYWNyb3MsIGFuZCBzbyB0aGUgLi9jb25maWd1cmUgZmxhZ3MKLSMgdGhhdCBjb250cm9sIGd0ay1kb2MgYnVpbGQgYXJlIG5vbi1zdGFuZGFyZAotRVhUUkFfT0VDT05GX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHVEtET0NfRU5BQkxFRCcsICdUcnVlJywgJy0tZW5hYmxlLWRvYyAtLWVuYWJsZS1kb2MtaHRtbCAtLWRpc2FibGUtZG9jLXBkZicsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWRpc2FibGUtZG9jJywgZCl9ICIKLQotIyBXaGVuIGJ1aWxkaW5nIG5hdGl2ZSByZWNpcGVzLCBkaXNhYmxlIGd0a2RvYywgYXMgaXQgaXMgbm90IG5lY2Vzc2FyeSwKLSMgcHVsbHMgaW4gYWRkaXRpb25hbCBkZXBlbmRlbmNpZXMsIGFuZCBtYWtlcyBidWlsZCB0aW1lcyBsb25nZXIKLUVYVFJBX09FQ09ORl9wcmVwZW5kX2NsYXNzLW5hdGl2ZSA9ICItLWRpc2FibGUtZG9jICIKLUVYVFJBX09FQ09ORl9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICItLWRpc2FibGUtZG9jICIKLQotVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUX2FwcGVuZCA9ICIgLS1lbmFibGUtZ3RrLWRvYy1odG1sIC0tZGlzYWJsZS1ndGstZG9jLXBkZiAtLWVuYWJsZS1ndGstZG9jIC0tZGlzYWJsZS1ndGstZG9jIgotCi0jIHAxMS1raXQgcmVsaWVzIG9uIHRoZXNlIHR3byBiZWluZyBjb3BpZWQgZnJvbSBzb3VyY2UgdHJlZQotIyBpbnN0ZWFkIG9mIGJlaW5nIHJlZ2VuZXJhdGVkIGJ5IGd0a2RvYy1zY2FuLCBidXQgZG9lc24ndCBzZXR1cAotIyBkZXBlbmRlbmNpZXMgY29ycmVjdGx5IHdoZW4gdGhlcmUgaXMgYSBwYXJhbGxlbCBidWlsZC4gTGV0J3MgcHJlLWNvcHkKLSMgdGhlbSBpbnN0ZWFkLgotZG9fY29tcGlsZV9wcmVwZW5kICgpIHsKLSAgICAgICAgY3AgJHtTfS9kb2MvbWFudWFsL3AxMS1raXQtb3ZlcnJpZGVzLnR4dCAke1N9L2RvYy9tYW51YWwvcDExLWtpdC1zZWN0aW9ucy50eHQgJHtCfS9kb2MvbWFudWFsLwotfQotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2xpYmRpcn0vcDExLWtpdC1wcm94eS5zbyBcCi0gICAgJHtsaWJkaXJ9L3BrY3MxMS8qLnNvIFwKLSAgICAke2xpYmRpcn0vcGtjczExLyoubGEiCi0KLSMgUE4gY29udGFpbnMgcDExLWtpdC1wcm94eS5zbywgYSBzeW1saW5rIHRvIGEgbG9hZGFibGUgbW9kdWxlCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJkZXYtc28iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3AxMS1raXQvcDExLWtpdF8wLjIzLjIwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wMTEta2l0L3AxMS1raXRfMC4yMy4yMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmE5M2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wMTEta2l0L3AxMS1raXRfMC4yMy4yMC5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZID0gIlByb3ZpZGVzIGEgd2F5IHRvIGxvYWQgYW5kIGVudW1lcmF0ZSBQS0NTIzExIG1vZHVsZXMiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTAyOTMzODg3ZjYwOTgwN2ZiYjU3YWE0MjM3ZDE0YTUwIgorCitpbmhlcml0IG1lc29uIGdldHRleHQgcGtnY29uZmlnIGd0ay1kb2MgYmFzaC1jb21wbGV0aW9uCisKK0RFUEVORFMgPSAibGlidGFzbjEgbGlidGFzbjEtbmF0aXZlIGxpYmZmaSIKKworREVQRU5EU19hcHBlbmQgPSAiJHtAJyBnbGliLTIuMCcgaWYgZC5nZXRWYXIoJ0dUS0RPQ19FTkFCTEVEJykgPT0gJ1RydWUnIGVsc2UgJyd9IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcDExLWdsdWUvcDExLWtpdCIKK1NSQ1JFViA9ICI3NjJjZGFhMmNkNWM1ZWMwOWNjODQ0ZjlhNmJkYzU1MWM3ZjZjOGVkIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbdHJ1c3QtcGF0aHNdID0gIi1EdHJ1c3RfcGF0aHM9L2V0Yy9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCwsLGNhLWNlcnRpZmljYXRlcyIKKworR1RLRE9DX01FU09OX09QVElPTiA9ICdndGtfZG9jJworCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2xpYmRpcn0vcDExLWtpdC1wcm94eS5zbyBcCisgICAgJHtsaWJkaXJ9L3BrY3MxMS8qLnNvIFwKKyAgICAke2xpYmRpcn0vcGtjczExLyoubGEgXAorICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9LyoiCisKKyMgUE4gY29udGFpbnMgcDExLWtpdC1wcm94eS5zbywgYSBzeW1saW5rIHRvIGEgbG9hZGFibGUgbW9kdWxlCitJTlNBTkVfU0tJUF8ke1BOfSA9ICJkZXYtc28iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JuZ2Quc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy9ybmdkLnNlcnZpY2UKaW5kZXggYWFhYWEyOS4uMDU1OWI5NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JuZ2Quc2VydmljZQorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvcm5nZC5zZXJ2aWNlCkBAIC04LDYgKzgsMjUgQEAKIFtTZXJ2aWNlXQogRW52aXJvbm1lbnRGaWxlPS1AU1lTQ09ORkRJUkAvZGVmYXVsdC9ybmctdG9vbHMKIEV4ZWNTdGFydD1AU0JJTkRJUkAvcm5nZCAtZiAkRVhUUkFfQVJHUworQ2FwYWJpbGl0eUJvdW5kaW5nU2V0PUNBUF9TWVNfQURNSU4KK0lQQWRkcmVzc0Rlbnk9YW55CitMb2NrUGVyc29uYWxpdHk9eWVzCitNZW1vcnlEZW55V3JpdGVFeGVjdXRlPXllcworTm9OZXdQcml2aWxlZ2VzPXllcworUHJpdmF0ZVRtcD15ZXMKK1Byb3RlY3RDb250cm9sR3JvdXBzPXllcworUHJvdGVjdEhvbWU9eWVzCitQcm90ZWN0SG9zdG5hbWU9eWVzCitQcm90ZWN0S2VybmVsTW9kdWxlcz15ZXMKK1Byb3RlY3RLZXJuZWxMb2dzPXllcworUHJvdGVjdFN5c3RlbT1zdHJpY3QKK1Jlc3RyaWN0QWRkcmVzc0ZhbWlsaWVzPUFGX1VOSVgKK1Jlc3RyaWN0TmFtZXNwYWNlcz15ZXMKK1Jlc3RyaWN0UmVhbHRpbWU9eWVzCitSZXN0cmljdFNVSURTR0lEPXllcworU3lzdGVtQ2FsbEFyY2hpdGVjdHVyZXM9bmF0aXZlCitTeXN0ZW1DYWxsRXJyb3JOdW1iZXI9RVBFUk0KK1N5c3RlbUNhbGxGaWx0ZXI9QHN5c3RlbS1zZXJ2aWNlCiAKIFtJbnN0YWxsXQotV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKK1dhbnRlZEJ5PXN5c2luaXQudGFyZ2V0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNi44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzYuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNhNDhhNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNi44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJSYW5kb20gbnVtYmVyIGdlbmVyYXRvciBkYWVtb24iCi1ERVNDUklQVElPTiA9ICJDaGVjayBhbmQgZmVlZCByYW5kb20gZGF0YSBmcm9tIGhhcmR3YXJlIGRldmljZSB0byBrZXJuZWwiCi1BVVRIT1IgPSAiUGhpbGlwcCBSdW1wZiwgSmVmZiBHYXJ6aWsgPGpnYXJ6aWtAcG9ib3guY29tPiwgXAotICAgICAgICAgIEhlbnJpcXVlIGRlIE1vcmFlcyBIb2xzY2h1aCA8aG1oQGRlYmlhbi5vcmc+IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL25ob3JtYW4vcm5nLXRvb2xzIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vbmhvcm1hbi9ybmctdG9vbHMvaXNzdWVzIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotREVQRU5EUyA9ICJzeXNmc3V0aWxzIgotCi1TUkNfVVJJID0gIlwKLSAgICBnaXQ6Ly9naXRodWIuY29tL25ob3JtYW4vcm5nLXRvb2xzLmdpdCBcCi0gICAgZmlsZTovL2luaXQgXAotICAgIGZpbGU6Ly9kZWZhdWx0IFwKLSAgICBmaWxlOi8vcm5nZC5zZXJ2aWNlIFwKLSIKLVNSQ1JFViA9ICJlYjVlMzRjN2ZiMDU1OTQ3NjBmOTlkODYzZmJlMDQwMWZlMjk3YjkzIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAibGliZ2NyeXB0IGxpYmppdHRlcmVudHJvcHkiCi1QQUNLQUdFQ09ORklHX2xpYmMtbXVzbCA9ICJsaWJhcmdwIGxpYmppdHRlcmVudHJvcHkiCi0KLVBBQ0tBR0VDT05GSUdbbGliYXJncF0gPSAiLS13aXRoLWxpYmFyZ3AsLS13aXRob3V0LWxpYmFyZ3AsYXJncC1zdGFuZGFsb25lLCIKLVBBQ0tBR0VDT05GSUdbbGliZ2NyeXB0XSA9ICItLXdpdGgtbGliZ2NyeXB0LC0td2l0aG91dC1saWJnY3J5cHQsbGliZ2NyeXB0LCIKLVBBQ0tBR0VDT05GSUdbbGliaml0dGVyZW50cm9weV0gPSAiLS1lbmFibGUtaml0dGVyZW50cm9weSwtLWRpc2FibGUtaml0dGVyZW50cm9weSxsaWJqaXR0ZXJlbnRyb3B5IgotUEFDS0FHRUNPTkZJR1tsaWJwMTFdID0gIi0td2l0aC1wa2NzMTEsLS13aXRob3V0LXBrY3MxMSxsaWJwMTEgb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbbmlzdGJlYWNvbl0gPSAiLS13aXRoLW5pc3RiZWFjb24sLS13aXRob3V0LW5pc3RiZWFjb24sY3VybCBsaWJ4bWwyIG9wZW5zc2wiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJybmctdG9vbHMiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAwMyAyIDMgNCA1IC4gc3RvcCAzMCAwIDYgMSAuIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAicm5nZC5zZXJ2aWNlIgotCi0jIFJlZmVyIGF1dG9nZW4uc2ggaW4gcm5nLXRvb2xzCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBjcCAke1N9L1JFQURNRS5tZCAke1N9L1JFQURNRQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1EbSAwNjQ0ICR7V09SS0RJUn0vZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3JuZy10b29scwotICAgIGluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9ybmctdG9vbHMKLSAgICBpbnN0YWxsIC1EbSAwNjQ0ICR7V09SS0RJUn0vcm5nZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3JuZ2Quc2VydmljZQotICAgIHNlZCAtaSBcCi0gICAgICAgIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLSAgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotICAgICAgICAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcm5nLXRvb2xzIFwKLSAgICAgICAgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vcm5nZC5zZXJ2aWNlCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNi45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzYuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Yzk4YTlhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzYuOS5iYgpAQCAtMCwwICsxLDU5IEBACitTVU1NQVJZID0gIlJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGRhZW1vbiIKK0RFU0NSSVBUSU9OID0gIkNoZWNrIGFuZCBmZWVkIHJhbmRvbSBkYXRhIGZyb20gaGFyZHdhcmUgZGV2aWNlIHRvIGtlcm5lbCIKK0FVVEhPUiA9ICJQaGlsaXBwIFJ1bXBmLCBKZWZmIEdhcnppayA8amdhcnppa0Bwb2JveC5jb20+LCBcCisgICAgICAgICAgSGVucmlxdWUgZGUgTW9yYWVzIEhvbHNjaHVoIDxobWhAZGViaWFuLm9yZz4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbmhvcm1hbi9ybmctdG9vbHMiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9uaG9ybWFuL3JuZy10b29scy9pc3N1ZXMiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCitERVBFTkRTID0gInN5c2ZzdXRpbHMiCisKK1NSQ19VUkkgPSAiXAorICAgIGdpdDovL2dpdGh1Yi5jb20vbmhvcm1hbi9ybmctdG9vbHMuZ2l0IFwKKyAgICBmaWxlOi8vaW5pdCBcCisgICAgZmlsZTovL2RlZmF1bHQgXAorICAgIGZpbGU6Ly9ybmdkLnNlcnZpY2UgXAorIgorU1JDUkVWID0gIjRhODY1Nzk3YTY5ZGQzOGM2NGE4NmFhMzI4ODRlY2M5YmE3YjRkMDgiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICJsaWJnY3J5cHQgbGliaml0dGVyZW50cm9weSIKK1BBQ0tBR0VDT05GSUdfbGliYy1tdXNsID0gImxpYmFyZ3AgbGliaml0dGVyZW50cm9weSIKKworUEFDS0FHRUNPTkZJR1tsaWJhcmdwXSA9ICItLXdpdGgtbGliYXJncCwtLXdpdGhvdXQtbGliYXJncCxhcmdwLXN0YW5kYWxvbmUsIgorUEFDS0FHRUNPTkZJR1tsaWJnY3J5cHRdID0gIi0td2l0aC1saWJnY3J5cHQsLS13aXRob3V0LWxpYmdjcnlwdCxsaWJnY3J5cHQsIgorUEFDS0FHRUNPTkZJR1tsaWJqaXR0ZXJlbnRyb3B5XSA9ICItLWVuYWJsZS1qaXR0ZXJlbnRyb3B5LC0tZGlzYWJsZS1qaXR0ZXJlbnRyb3B5LGxpYmppdHRlcmVudHJvcHkiCitQQUNLQUdFQ09ORklHW2xpYnAxMV0gPSAiLS13aXRoLXBrY3MxMSwtLXdpdGhvdXQtcGtjczExLGxpYnAxMSBvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tuaXN0YmVhY29uXSA9ICItLXdpdGgtbmlzdGJlYWNvbiwtLXdpdGhvdXQtbmlzdGJlYWNvbixjdXJsIGxpYnhtbDIgb3BlbnNzbCIKKworSU5JVFNDUklQVF9OQU1FID0gInJuZy10b29scyIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDAzIDIgMyA0IDUgLiBzdG9wIDMwIDAgNiAxIC4iCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJybmdkLnNlcnZpY2UiCisKKyMgUmVmZXIgYXV0b2dlbi5zaCBpbiBybmctdG9vbHMKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIGNwICR7U30vUkVBRE1FLm1kICR7U30vUkVBRE1FCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLURtIDA2NDQgJHtXT1JLRElSfS9kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvcm5nLXRvb2xzCisgICAgaW5zdGFsbCAtRG0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3JuZy10b29scworICAgIGluc3RhbGwgLURtIDA2NDQgJHtXT1JLRElSfS9ybmdkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vcm5nZC5zZXJ2aWNlCisgICAgc2VkIC1pIFwKKyAgICAgICAgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAorICAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9ybmctdG9vbHMgXAorICAgICAgICAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9ybmdkLnNlcnZpY2UKKworICAgIGlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ25pc3RiZWFjb24nLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KKyAgICAgICAgc2VkIC1pIFwKKyAgICAgICAgICAgIC1lICcvXklQQWRkcmVzc0Rlbnk9YW55L2QnIFwKKyAgICAgICAgICAgIC1lICcvXlJlc3RyaWN0QWRkcmVzc0ZhbWlsaWVzPS8gcy8kLyBBRl9JTkVUIEFGX0lORVQ2LycgXAorICAgICAgICAgICAgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vcm5nZC5zZXJ2aWNlCisgICAgZmkKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZlMWE0NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIlNoYXJlZCBNSU1FIHR5cGUgZGF0YWJhc2UgYW5kIHNwZWNpZmljYXRpb24iCi1IT01FUEFHRSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvc2hhcmVkLW1pbWUtaW5mbyIKLVNFQ1RJT04gPSAiYmFzZSIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1ERVBFTkRTID0gImxpYnhtbDIgaW50bHRvb2wtbmF0aXZlIGdsaWItMi4wIHNoYXJlZC1taW1lLWluZm8tbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvfmhhZGVzcy9zaGFyZWQtbWltZS1pbmZvLSR7UFZ9LnRhci54eiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS11cGRhdGUtbWltZWRiIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9taW1lIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZy9zaGFyZWQtbWltZS1pbmZvLnBjIgotCi0jIGZyZWVkZXNrdG9wLm9yZy54bWwgaXMgb25seSByZXF1aXJlZCB3aGVuIHVwZGF0aW5nIHRoZSBtaW1lIGRhdGFiYXNlLAotIyBwYWNrYWdlIGl0IHNlcGFyYXRlbHkKLVBBQ0tBR0VTID0rICJzaGFyZWQtbWltZS1pbmZvLWRhdGEiCi1GSUxFU19zaGFyZWQtbWltZS1pbmZvLWRhdGEgPSAiJHtkYXRhZGlyfS9taW1lL3BhY2thZ2VzL2ZyZWVkZXNrdG9wLm9yZy54bWwiCi1SREVQRU5EU19zaGFyZWQtbWltZS1pbmZvLWRhdGEgPSAic2hhcmVkLW1pbWUtaW5mbyIKLQotZG9faW5zdGFsbCAoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCXVwZGF0ZS1taW1lLWRhdGFiYXNlICR7RH0ke2RhdGFkaXJ9L21pbWUKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0KLQkke0J9L3VwZGF0ZS1taW1lLWRhdGFiYXNlICR7RH0ke2RhdGFkaXJ9L21pbWUKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8vaW5zdGFsbC1kYXRhLWhvb2sucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9pbnN0YWxsLWRhdGEtaG9vay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjYyZmY3NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9pbnN0YWxsLWRhdGEtaG9vay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLWZpeCBzaGFyZWQtbWltZS1pbmZvIGJ1aWxkIHJhY2UgY29uZGl0aW9uCi0KLVRoZSBkZWZpbml0aW9uIG9mIGluc3RhbGwtZGF0YS1ob29rIGluIE1ha2VmaWxlLmFtIGxlYWRzCi10byBtdWx0aXBsZSwgb3ZlcmxhcHBpbmcsIGV4ZWN1dGlvbnMgb2YgaW5zdGFsbC1iaW5QUk9HUkFNUwotdGFyZ2V0LiAgV2UgbW9kaWZ5IHRoZSBkZWZpbml0aW9uIHRvIGF2b2lkIHRoYXQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqc2xhdGVyQHdpbmRyaXZlci5jb20+Ci0KLUluZGV4OiBzaGFyZWQtbWltZS1pbmZvLTEuOS9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHNoYXJlZC1taW1lLWluZm8tMS45Lm9yaWcvTWFrZWZpbGUuYW0KLSsrKyBzaGFyZWQtbWltZS1pbmZvLTEuOS9NYWtlZmlsZS5hbQotQEAgLTUwLDcgKzUwLDkgQEAgZWxzZQotICAgdXBkYXRlX21pbWVfZGF0YWJhc2U9IiQodG9wX2J1aWxkZGlyKS91cGRhdGUtbWltZS1kYXRhYmFzZSQoRVhFRVhUKSIKLSBlbmRpZgotIAotLWluc3RhbGwtZGF0YS1ob29rOiBpbnN0YWxsLWJpblBST0dSQU1TCi0rIyBkbyBOT1QgbWFrZSB0aGlzIGRlcGVuZGVudCBvbiBhbnl0aGluZyEKLSsjCi0raW5zdGFsbC1kYXRhLWhvb2s6Ci0gaWYgRU5BQkxFX1VQREFURV9NSU1FREIKLSAJJCh1cGRhdGVfbWltZV9kYXRhYmFzZSkgLVYgIiQoREVTVERJUikkKGRhdGFkaXIpL21pbWUiCi0gZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvL3BhcmFsbGVsbWFrZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvL3BhcmFsbGVsbWFrZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVhMzRhNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9wYXJhbGxlbG1ha2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1UaGUgTWFrZWZpbGUgdXNlZCBieSBzaGFyZWQtbWltZS1pbmZvIGlzIG9uZSBiaWcgcmFjZSB3aXRoIHRoZSBTVUJESVJTIAotb3B0aW9uIGFuZCB0aGUgZGVwZW5kZW5jeSBzcGVjaWZpY2FsbHkgY2FsbGluZyBtYWtlIGFsbCBjb21iaW5pbmcgdG8KLWNyZWF0ZSBtdWx0aXBsZSBtYWtlIGluc3RhbmNlcyBhbGwgb2Ygd2hpY2ggbWF5IHRyeSBhbmQgYnVpbGQgdGFyZ2V0cwotbGlrZSB1cGRhdGUtbWltZS1kYXRhYmFzZS4KLQotVGhpcyBwYXRjaCByZW1vdmVzIHRob3NlIG9wdGlvbnMgbWVhbmluZyBtYWtlIGNhbiBjb3JyZWN0bHkgaWRlbnRpZnkKLWRlcGVuZGVuY2llcyBhbmQgc3RvcCBpdHNlbGYgcmFjaW5nIGl0c2VsZi4KLQotUlAgMTAvMTAvMjAxMQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IENvbnN0YW50aW4gTXVzY2EgPGNvbnN0YW50aW54Lm11c2NhQGludGVsLmNvbT4KLQotSW5kZXg6IHNoYXJlZC1taW1lLWluZm8tMS45L01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc2hhcmVkLW1pbWUtaW5mby0xLjkub3JpZy9NYWtlZmlsZS5hbQotKysrIHNoYXJlZC1taW1lLWluZm8tMS45L01ha2VmaWxlLmFtCi1AQCAtMSw1ICsxLDMgQEAKLS1TVUJESVJTPS4gcG8KLS0KLSBBTV9DUFBGTEFHUyA9ICQoQUxMX0NGTEFHUykKLSAKLSBwYWNrYWdlc2RpciA9ICQoZGF0YWRpcikvbWltZS9wYWNrYWdlcwotQEAgLTgxLDggKzc5LDcgQEAgZW5kaWYKLSAKLSBhbGw6ICQoZGVmYXVsdG1ha2VkZXBzKQotIAotLWNyZWF0ZS1wb3Q6Ci0tCSQoQU1fVl9HRU4pICQoTUFLRSkgLUMgcG8gc2hhcmVkLW1pbWUtaW5mby5wb3QKLStjcmVhdGUtcG90OiBwbwotIAotIGxvY2FsLXRlc3Q6IGNyZWF0ZS1wb3QgZnJlZWRlc2t0b3Aub3JnLnhtbCB1cGRhdGUtbWltZS1kYXRhYmFzZSQoRVhFRVhUKQotIGlmIENST1NTX0NPTVBJTElORwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm9fMS4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvXzEuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmYzIxMGIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm9fMS4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSBzaGFyZWQtbWltZS1pbmZvLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vcGFyYWxsZWxtYWtlLnBhdGNoIFwKLQkgICAgZmlsZTovL2luc3RhbGwtZGF0YS1ob29rLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDE4YzJjZWQ5ZGM0ZGQ1Y2E4YjA2YTc1NWU2ZDY0ZTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzYyNWE4M2I0ODM4YmVmYzhjYWZjZDU0ZTM2MTk5NDY1MTVkOWU0NGQ2M2Q2MWM0YWRmN2Y1NTEzZGRmYmViZiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTA2MGIwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm9fZ2l0LmJiCkBAIC0wLDAgKzEsNDMgQEAKK1NVTU1BUlkgPSAiU2hhcmVkIE1JTUUgdHlwZSBkYXRhYmFzZSBhbmQgc3BlY2lmaWNhdGlvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9zaGFyZWQtbWltZS1pbmZvIgorU0VDVElPTiA9ICJiYXNlIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK0RFUEVORFMgPSAibGlieG1sMiBpdHN0b29sLW5hdGl2ZSBnbGliLTIuMCBzaGFyZWQtbWltZS1pbmZvLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL3hkZy9zaGFyZWQtbWltZS1pbmZvLmdpdDtwcm90b2NvbD1odHRwcyIKK1NSQ1JFViA9ICI4MjliMjZkODVlN2Q4OWEwY2FlZTAzMDQ2YzNiY2UzNzNmMDRjODBhIgorUFYgPSAiMS4xNSIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIlJlbGVhc2UtKD9QPHB2ZXI+KFxkKyhcLVxkKykrKSkiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgcHl0aG9uM25hdGl2ZSBtaW1lCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtdXBkYXRlLW1pbWVkYiIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vbWltZSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9wa2djb25maWcvc2hhcmVkLW1pbWUtaW5mby5wYyIKKworIyBmcmVlZGVza3RvcC5vcmcueG1sIGlzIG9ubHkgcmVxdWlyZWQgd2hlbiB1cGRhdGluZyB0aGUgbWltZSBkYXRhYmFzZSwKKyMgcGFja2FnZSBpdCBzZXBhcmF0ZWx5CitQQUNLQUdFUyA9KyAic2hhcmVkLW1pbWUtaW5mby1kYXRhIgorRklMRVNfc2hhcmVkLW1pbWUtaW5mby1kYXRhID0gIiR7ZGF0YWRpcn0vbWltZS9wYWNrYWdlcy9mcmVlZGVza3RvcC5vcmcueG1sIgorUkRFUEVORFNfc2hhcmVkLW1pbWUtaW5mby1kYXRhID0gInNoYXJlZC1taW1lLWluZm8iCisKK2RvX2luc3RhbGwgKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisKKwl1cGRhdGUtbWltZS1kYXRhYmFzZSAke0R9JHtkYXRhZGlyfS9taW1lCit9CisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlICgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCisJJHtCfS91cGRhdGUtbWltZS1kYXRhYmFzZSAke0R9JHtkYXRhZGlyfS9taW1lCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL2ZpbGVzL0NWRS0yMDIwLTkzMjcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9maWxlcy9DVkUtMjAyMC05MzI3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlY2JiYWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9maWxlcy9DVkUtMjAyMC05MzI3LnBhdGNoCkBAIC0wLDAgKzEsMTQxIEBACitGcm9tIDQ1ZDQ5MTg1MWUxYmNhMzc4ZGUxNThhNWUyNzlmZDU4NGNlNTQ4ZTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiRC4gUmljaGFyZCBIaXBwIiA8ZHJoQGh3YWNpLmNvbT4KK0RhdGU6IE1vbiwgMTcgRmViIDIwMjAgMDA6MTI6MDQgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gW1BBVENIIDEvMl0gIFRha2UgY2FyZSB3aGVuIGNoZWNraW5nIHRoZSB0YWJsZSBvZiBhIFRLX0NPTFVNTgorICBleHByZXNzaW9uIG5vZGUgdG8gc2VlIGlmIHRoZSB0YWJsZSBpcyBhIHZpcnR1YWwgdGFibGUgdG8gZmlyc3QgZW5zdXJlIHRoYXQgCisgdGhlIEV4cHIueS5wVGFiIHBvaW50ZXIgaXMgbm90IG51bGwgZHVlIHRvIGdlbmVyYXRlZCBjb2x1bW4gb3B0aW1pemF0aW9ucy4gCisgVGlja2V0IFs0Mzc0ODYwYjI5MzgzMzgwXS4KKworRm9zc2lsT3JpZ2luLU5hbWU6IDlkMGQ0YWI5NWRjMGM1NmUwNTNjMjkyNGVkMzIyYTllYTdiMjU0MzllNmY3NDU5OWY3MDY5MDVhMTk5NGU0NTQKKworW1BBVENIIDIvMl0gQSBiZXR0ZXIgKHNtYWxsZXIgYW5kIGZhc3Rlcikgc29sdXRpb24gdG8gdGlja2V0CisgWzQzNzQ4NjBiMjkzODMzODBdLgorCitGb3NzaWxPcmlnaW4tTmFtZTogYWJjNDczZmI4ZmI5OTkwMDVkYzc5YTM2MGUzNGY5N2IzYjI1NDI5ZGVjZjE4MjBkZDJhZmE1YzE5NTc3NzUzZAorCitUaGUgdHdvIHBhdGNoZXMgd2VyZSBjb252ZXJ0ZWQgdG8gYW1hbGdhbWF0aW9uIGZvcm1hdAorCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAyMC05MzI3CistLS0KKyBzcWxpdGUzLmMgfCAzNSArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQorIHNxbGl0ZTMuaCB8ICAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NxbGl0ZTMuYyBiL3NxbGl0ZTMuYworaW5kZXggNTVkYzY4Ni4uNjRmYWUwNCAxMDA2NDQKKy0tLSBhL3NxbGl0ZTMuYworKysrIGIvc3FsaXRlMy5jCitAQCAtMTE2Nyw3ICsxMTY3LDcgQEAgZXh0ZXJuICJDIiB7CisgKi8KKyAjZGVmaW5lIFNRTElURV9WRVJTSU9OICAgICAgICAiMy4zMS4xIgorICNkZWZpbmUgU1FMSVRFX1ZFUlNJT05fTlVNQkVSIDMwMzEwMDEKKy0jZGVmaW5lIFNRTElURV9TT1VSQ0VfSUQgICAgICAiMjAyMC0wMS0yNyAxOTo1NTo1NCAzYmZhOWNjOTdkYTEwNTk4NTIxYjM0Mjk2MWRmOGY1ZjY4YzczODhmYTExNzM0NWVlYjUxNmVhYTgzN2JiNGQ2IgorKyNkZWZpbmUgU1FMSVRFX1NPVVJDRV9JRCAgICAgICIyMDIwLTAxLTI3IDE5OjU1OjU0IDNiZmE5Y2M5N2RhMTA1OTg1MjFiMzQyOTYxZGY4ZjVmNjhjNzM4OGZhMTE3MzQ1ZWViNTE2ZWFhODM3YmFsdDEiCisgCisgLyoKKyAqKiBDQVBJM1JFRjogUnVuLVRpbWUgTGlicmFyeSBWZXJzaW9uIE51bWJlcnMKK0BAIC0xNzQyOCw4ICsxNzQyOCwxMSBAQCBzdHJ1Y3QgVGFibGUgeworICovCisgI2lmbmRlZiBTUUxJVEVfT01JVF9WSVJUVUFMVEFCTEUKKyAjICBkZWZpbmUgSXNWaXJ0dWFsKFgpICAgICAgKChYKS0+bk1vZHVsZUFyZykKKysjICBkZWZpbmUgRXhwcklzVnRhYihYKSAgXAorKyAgICAgICAgICAgICAgKChYKS0+b3A9PVRLX0NPTFVNTiAmJiAoWCktPnkucFRhYiE9MCAmJiAoWCktPnkucFRhYi0+bk1vZHVsZUFyZykKKyAjZWxzZQorICMgIGRlZmluZSBJc1ZpcnR1YWwoWCkgICAgICAwCisrIyAgZGVmaW5lIEV4cHJJc1Z0YWIoWCkgICAgIDAKKyAjZW5kaWYKKyAKKyAvKgorQEAgLTEwNDEzMywxOSArMTA0MTM2LDI1IEBAIHN0YXRpYyBpbnQgaW1wbGllc05vdE51bGxSb3coV2Fsa2VyICpwV2Fsa2VyLCBFeHByICpwRXhwcil7CisgICAgIGNhc2UgVEtfTFQ6CisgICAgIGNhc2UgVEtfTEU6CisgICAgIGNhc2UgVEtfR1Q6CistICAgIGNhc2UgVEtfR0U6CisrICAgIGNhc2UgVEtfR0U6IHsKKysgICAgICBFeHByICpwTGVmdCA9IHBFeHByLT5wTGVmdDsKKysgICAgICBFeHByICpwUmlnaHQgPSBwRXhwci0+cFJpZ2h0OworICAgICAgIHRlc3RjYXNlKCBwRXhwci0+b3A9PVRLX0VRICk7CisgICAgICAgdGVzdGNhc2UoIHBFeHByLT5vcD09VEtfTkUgKTsKKyAgICAgICB0ZXN0Y2FzZSggcEV4cHItPm9wPT1US19MVCApOworICAgICAgIHRlc3RjYXNlKCBwRXhwci0+b3A9PVRLX0xFICk7CisgICAgICAgdGVzdGNhc2UoIHBFeHByLT5vcD09VEtfR1QgKTsKKyAgICAgICB0ZXN0Y2FzZSggcEV4cHItPm9wPT1US19HRSApOworLSAgICAgIGlmKCAocEV4cHItPnBMZWZ0LT5vcD09VEtfQ09MVU1OICYmIElzVmlydHVhbChwRXhwci0+cExlZnQtPnkucFRhYikpCistICAgICAgIHx8IChwRXhwci0+cFJpZ2h0LT5vcD09VEtfQ09MVU1OICYmIElzVmlydHVhbChwRXhwci0+cFJpZ2h0LT55LnBUYWIpKQorKyAgICAgIC8qIFRoZSB5LnBUYWI9MCBhc3NpZ25tZW50IGluIHdoZXJlY29kZS5jIGFsd2F5cyBoYXBwZW5zIGFmdGVyIHRoZQorKyAgICAgICoqIGltcGxpZXNOb3ROdWxsUm93KCkgdGVzdCAqLworKyAgICAgIGlmKCAocExlZnQtPm9wPT1US19DT0xVTU4gJiYgQUxXQVlTKHBMZWZ0LT55LnBUYWIhPTApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIElzVmlydHVhbChwTGVmdC0+eS5wVGFiKSkKKysgICAgICAgfHwgKHBSaWdodC0+b3A9PVRLX0NPTFVNTiAmJiBBTFdBWVMocFJpZ2h0LT55LnBUYWIhPTApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIElzVmlydHVhbChwUmlnaHQtPnkucFRhYikpCisgICAgICAgKXsKKy0gICAgICAgcmV0dXJuIFdSQ19QcnVuZTsKKysgICAgICAgIHJldHVybiBXUkNfUHJ1bmU7CisgICAgICAgfQorLQorKyAgICB9CisgICAgIGRlZmF1bHQ6CisgICAgICAgcmV0dXJuIFdSQ19Db250aW51ZTsKKyAgIH0KK0BAIC0xNDI1OTEsNyArMTQyNjAwLDggQEAgc3RhdGljIGludCBpc0F1eGlsaWFyeVZ0YWJPcGVyYXRvcigKKyAgICAgKiogICAgICAgTUFUQ0goZXhwcmVzc2lvbix2dGFiX2NvbHVtbikKKyAgICAgKi8KKyAgICAgcENvbCA9IHBMaXN0LT5hWzFdLnBFeHByOworLSAgICBpZiggcENvbC0+b3A9PVRLX0NPTFVNTiAmJiBJc1ZpcnR1YWwocENvbC0+eS5wVGFiKSApeworKyAgICB0ZXN0Y2FzZSggcENvbC0+b3A9PVRLX0NPTFVNTiAmJiBwQ29sLT55LnBUYWI9PTAgKTsKKysgICAgaWYoIEV4cHJJc1Z0YWIocENvbCkgKXsKKyAgICAgICBmb3IoaT0wOyBpPEFycmF5U2l6ZShhT3ApOyBpKyspeworICAgICAgICAgaWYoIHNxbGl0ZTNTdHJJQ21wKHBFeHByLT51LnpUb2tlbiwgYU9wW2ldLnpPcCk9PTAgKXsKKyAgICAgICAgICAgKnBlT3AyID0gYU9wW2ldLmVPcDI7CitAQCAtMTQyNjEzLDcgKzE0MjYyMyw4IEBAIHN0YXRpYyBpbnQgaXNBdXhpbGlhcnlWdGFiT3BlcmF0b3IoCisgICAgICoqIHdpdGggZnVuY3Rpb24gbmFtZXMgaW4gYW4gYXJiaXRyYXJ5IGNhc2UuCisgICAgICovCisgICAgIHBDb2wgPSBwTGlzdC0+YVswXS5wRXhwcjsKKy0gICAgaWYoIHBDb2wtPm9wPT1US19DT0xVTU4gJiYgSXNWaXJ0dWFsKHBDb2wtPnkucFRhYikgKXsKKysgICAgdGVzdGNhc2UoIHBDb2wtPm9wPT1US19DT0xVTU4gJiYgcENvbC0+eS5wVGFiPT0wICk7CisrICAgIGlmKCBFeHBySXNWdGFiKHBDb2wpICl7CisgICAgICAgc3FsaXRlM192dGFiICpwVnRhYjsKKyAgICAgICBzcWxpdGUzX21vZHVsZSAqcE1vZDsKKyAgICAgICB2b2lkICgqeE5vdFVzZWQpKHNxbGl0ZTNfY29udGV4dCosaW50LHNxbGl0ZTNfdmFsdWUqKik7CitAQCAtMTQyNjM2LDEwICsxNDI2NDcsMTIgQEAgc3RhdGljIGludCBpc0F1eGlsaWFyeVZ0YWJPcGVyYXRvcigKKyAgICAgaW50IHJlcyA9IDA7CisgICAgIEV4cHIgKnBMZWZ0ID0gcEV4cHItPnBMZWZ0OworICAgICBFeHByICpwUmlnaHQgPSBwRXhwci0+cFJpZ2h0OworLSAgICBpZiggcExlZnQtPm9wPT1US19DT0xVTU4gJiYgSXNWaXJ0dWFsKHBMZWZ0LT55LnBUYWIpICl7CisrICAgIHRlc3RjYXNlKCBwTGVmdC0+b3A9PVRLX0NPTFVNTiAmJiBwTGVmdC0+eS5wVGFiPT0wICk7CisrICAgIGlmKCBFeHBySXNWdGFiKHBMZWZ0KSApeworICAgICAgIHJlcysrOworICAgICB9CistICAgIGlmKCBwUmlnaHQgJiYgcFJpZ2h0LT5vcD09VEtfQ09MVU1OICYmIElzVmlydHVhbChwUmlnaHQtPnkucFRhYikgKXsKKysgICAgdGVzdGNhc2UoIHBSaWdodCAmJiBwUmlnaHQtPm9wPT1US19DT0xVTU4gJiYgcFJpZ2h0LT55LnBUYWI9PTAgKTsKKysgICAgaWYoIHBSaWdodCAmJiBFeHBySXNWdGFiKHBSaWdodCkgKXsKKyAgICAgICByZXMrKzsKKyAgICAgICBTV0FQKEV4cHIqLCBwTGVmdCwgcFJpZ2h0KTsKKyAgICAgfQorQEAgLTIyODQ0MCw3ICsyMjg0NTMsNyBAQCBTUUxJVEVfQVBJIGludCBzcWxpdGUzX3N0bXRfaW5pdCgKKyAjZW5kaWYgLyogIWRlZmluZWQoU1FMSVRFX0NPUkUpIHx8IGRlZmluZWQoU1FMSVRFX0VOQUJMRV9TVE1UVlRBQikgKi8KKyAKKyAvKioqKioqKioqKioqKiogRW5kIG9mIHN0bXQuYyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistI2lmIF9fTElORV9fIT0yMjg0NDMKKysjaWYgX19MSU5FX18hPTIyODQ1NgorICN1bmRlZiBTUUxJVEVfU09VUkNFX0lECisgI2RlZmluZSBTUUxJVEVfU09VUkNFX0lEICAgICAgIjIwMjAtMDEtMjcgMTk6NTU6NTQgM2JmYTljYzk3ZGExMDU5ODUyMWIzNDI5NjFkZjhmNWY2OGM3Mzg4ZmExMTczNDVlZWI1MTZlYWE4MzdiYWx0MiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9zcWxpdGUzLmggYi9zcWxpdGUzLmgKK2luZGV4IGNlZjZlZWEuLjViOTc5NmMgMTAwNjQ0CistLS0gYS9zcWxpdGUzLmgKKysrKyBiL3NxbGl0ZTMuaAorQEAgLTEyNSw3ICsxMjUsNyBAQCBleHRlcm4gIkMiIHsKKyAqLworICNkZWZpbmUgU1FMSVRFX1ZFUlNJT04gICAgICAgICIzLjMxLjEiCisgI2RlZmluZSBTUUxJVEVfVkVSU0lPTl9OVU1CRVIgMzAzMTAwMQorLSNkZWZpbmUgU1FMSVRFX1NPVVJDRV9JRCAgICAgICIyMDIwLTAxLTI3IDE5OjU1OjU0IDNiZmE5Y2M5N2RhMTA1OTg1MjFiMzQyOTYxZGY4ZjVmNjhjNzM4OGZhMTE3MzQ1ZWViNTE2ZWFhODM3YmI0ZDYiCisrI2RlZmluZSBTUUxJVEVfU09VUkNFX0lEICAgICAgIjIwMjAtMDEtMjcgMTk6NTU6NTQgM2JmYTljYzk3ZGExMDU5ODUyMWIzNDI5NjFkZjhmNWY2OGM3Mzg4ZmExMTczNDVlZWI1MTZlYWE4MzdiYWx0MSIKKyAKKyAvKgorICoqIENBUEkzUkVGOiBSdW4tVGltZSBMaWJyYXJ5IFZlcnNpb24gTnVtYmVycworLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjMwLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMzAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE4ZWViMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMzAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSBzcWxpdGUzLmluYwotCi1MSUNFTlNFID0gIlBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3FsaXRlMy5oO2VuZGxpbmU9MTE7bWQ1PTc4NmQzZGM1ODFlZmYwM2Y0ZmQ5ZTRhNzdlZDAwYzY2IgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuc3FsaXRlLm9yZy8yMDE5L3NxbGl0ZS1hdXRvY29uZi0ke1NRTElURV9QVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjUxMjUyZGM2YmM5MDk0YmExMWFiMTUxYmE2NTBmZjNjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhjNWE1MGRiMDg5YmQyYTFiMDhkYmM1YjAwZDIwMjc2MDJjYTdmZjIzOGJhNzY1OGZhYmNhNDU0ZDQyOThlNjAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMzEuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4zMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNTY0ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMzEuMS5iYgpAQCAtMCwwICsxLDEzIEBACityZXF1aXJlIHNxbGl0ZTMuaW5jCisKK0xJQ0VOU0UgPSAiUEQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcWxpdGUzLmg7ZW5kbGluZT0xMTttZDU9Nzg2ZDNkYzU4MWVmZjAzZjRmZDllNGE3N2VkMDBjNjYiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5zcWxpdGUub3JnLzIwMjAvc3FsaXRlLWF1dG9jb25mLSR7U1FMSVRFX1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMjAtOTMyNy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZDBhNTUzNTM0YzUyMTUwNGUzYWMzYWQzYjkwZjEyNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MjI4NGVmZWJjMDVhNzZmOTA5YzU4MGZmYTVjMDA4YTdkMjJhMTI4NzI4NWQ2OGI3ODI1YTJiNmI1MTk0OWFlIgorCisjIC0xOTI0MiBpcyBvbmx5IGFuIGlzc3VlIGluIHNwZWNpZmljIGRldmVsb3BtZW50IGJyYW5jaCBjb21taXRzCitDVkVfQ0hFQ0tfV0hJVEVMSVNUICs9ICJDVkUtMjAxOS0xOTI0MiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdmltL2ZpbGVzL25vLXBhdGgtYWRqdXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vZmlsZXMvbm8tcGF0aC1hZGp1c3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVjMmQ4MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdmltL2ZpbGVzL25vLXBhdGgtYWRqdXN0LnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK3ZpbTogZG8gbm90IGFkanVzdCBzY3JpcHQgcGF0aG5hbWVzCisKK1doZW4gY3Jvc3MtY29tcGlsaW5nLCB3ZSBkbyBub3Qgd2FudCB0byByZWZlcmVuY2UgdGhlIGhvc3QgdmVyc2lvbnMgb2YKK3RoaW5ncyBsaWtlIHBlcmwgYW5kIGF3ay4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworLS0tIGEvc3JjL01ha2VmaWxlCisrKysgYi9zcmMvTWFrZWZpbGUKK0BAIC0yNTA3LDExICsyNTA3LDE0IEBAIGluc3RhbGx0b29sczogJChUT09MUykgJChERVNURElSKSQoZXhlY18KKyAJCSBybSAtcmYgJCRjdnM7IFwKKyAJICAgICAgZmkKKyAJLWNobW9kICQoRklMRU1PRCkgJChERVNUX1RPT0xTKS8qCistIyByZXBsYWNlIHRoZSBwYXRoIGluIHNvbWUgdG9vbHMKKysKKysjIHJlcGxhY2UgdGhlIHBhdGggaW4gc29tZSB0b29scywgYnV0IG5vdCB3aGVuIGNyb3NzLWNvbXBpbGluZworK2lmbmVxICgkKENST1NTX0NPTVBJTElORyksMSkKKyAJcGVybHBhdGg9YC4vd2hpY2guc2ggcGVybGAgJiYgc2VkIC1lICJzKy91c3IvYmluL3BlcmwrJCRwZXJscGF0aCsiICQoVE9PTFNTT1VSQ0UpL2VmbV9wZXJsLnBsID4kKERFU1RfVE9PTFMpL2VmbV9wZXJsLnBsCisgCWF3a3BhdGg9YC4vd2hpY2guc2ggbmF3a2AgJiYgc2VkIC1lICJzKy91c3IvYmluL25hd2srJCRhd2twYXRoKyIgJChUT09MU1NPVVJDRSkvbXZlLmF3ayA+JChERVNUX1RPT0xTKS9tdmUuYXdrOyBpZiB0ZXN0IC16ICIkJGF3a3BhdGgiOyB0aGVuIFwKKyAJCWF3a3BhdGg9YC4vd2hpY2guc2ggZ2F3a2AgJiYgc2VkIC1lICJzKy91c3IvYmluL25hd2srJCRhd2twYXRoKyIgJChUT09MU1NPVVJDRSkvbXZlLmF3ayA+JChERVNUX1RPT0xTKS9tdmUuYXdrOyBpZiB0ZXN0IC16ICIkJGF3a3BhdGgiOyB0aGVuIFwKKyAJCWF3a3BhdGg9YC4vd2hpY2guc2ggYXdrYCAmJiBzZWQgLWUgInMrL3Vzci9iaW4vbmF3ayskJGF3a3BhdGgrIiAkKFRPT0xTU09VUkNFKS9tdmUuYXdrID4kKERFU1RfVE9PTFMpL212ZS5hd2s7IGZpOyBmaQorK2VuZGlmCisgCS1jaG1vZCAkKFNDUklQVE1PRCkgYGdyZXAgLWwgIl4jISIgJChERVNUX1RPT0xTKS8qYAorIAorICMgaW5zdGFsbCB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWMgZmlsZXMgZm9yIHRvb2xzLCBpZiB0aGV5IHdlcmUgdW5wYWNrZWQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbS10aW55XzguMS4xNTE4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltLXRpbnlfOC4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW0tdGlueV84LjEuMTUxOC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltLXRpbnlfOC4yLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW0uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltLmluYwppbmRleCAwYTMxZTY4Li45ZjNkYzA4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW0uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbS5pbmMKQEAgLTUsMjAgKzUsMjQgQEAKICMgdmltZGlmZiBkb2Vzbid0IGxpa2UgYnVzeWJveCBkaWZmCiBSU1VHR0VTVFNfJHtQTn0gPSAiZGlmZnV0aWxzIgogTElDRU5TRSA9ICJ2aW0iCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9ydW50aW1lL2RvYy91Z2FuZGEudHh0O2VuZGxpbmU9Mjg3O21kNT1mMWY4MmI0MjM2MDAwNWM3MGI4YzE5YjBlZjQ5M2Y3MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3J1bnRpbWUvZG9jL3VnYW5kYS50eHQ7ZW5kbGluZT0yODc7bWQ1PWExOWVkZDdlYzcwZDU3M2EwMDVkOWU1MDkzNzVhOTlhIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdmltL3ZpbS5naXQgXAogICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV9hY2xfaGVhZGVyX2NoZWNrLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3ZpbS1hZGQta25vYi13aGV0aGVyLWVsZi5oLWFyZS1jaGVja2VkLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtc3JjLU1ha2VmaWxlLWltcHJvdmUtcmVwcm9kdWNpYmlsaXR5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25vLXBhdGgtYWRqdXN0LnBhdGNoIFwKICIKLVNSQ1JFViA9ICIyMDJkOTgyYjM2ZDg3Y2Y5MWQ5OTJiZDdlMzBkMzIyM2JkYzcyY2Q5IgorU1JDUkVWID0gIjk4MDU2NTMzYjk2YjZiNWQ4ODQ5NjQxZGU5MzE4NWRkN2JjYWRjNDQiCisKKyMgRG8gbm90IGNvbnNpZGVyIC56IGluIHgueS56LCBhcyB0aGF0IGlzIHVwZGF0ZWQgd2l0aCBldmVyeSBjb21taXQKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkK1wuXGQrKVwuMCIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogVklNRElSID0gInZpbSR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19JHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVsxXX0iCiAKLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtYWx0ZXJuYXRpdmVzCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLWFsdGVybmF0aXZlcyBtaW1lLXhkZwogCiBDTEVBTkJST0tFTiA9ICIxIgogCkBAIC03OSwxMiArODMsNiBAQAogZG9faW5zdGFsbCgpIHsKICAgICBhdXRvdG9vbHNfZG9faW5zdGFsbAogCi0gICAgIyBXb3JrIGFyb3VuZCBmaWxlLXJkZXBzIHBpY2tpbmcgdXAgY3NoLCBhd2ssIHBlcmwgb3IgcHl0aG9uIGFzIGEgZGVwCi0gICAgY2htb2QgLXggJHtEfSR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS90b29scy92aW0xMzIKLSAgICBjaG1vZCAteCAke0R9JHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3Rvb2xzL212ZS5hd2sKLSAgICBjaG1vZCAteCAke0R9JHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3Rvb2xzLyoucGwKLSAgICBjaG1vZCAteCAke0R9JHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3Rvb2xzLyoucHkKLQogICAgICMgSW5zdGFsbCBleGFtcGxlIHZpbXJjIGZyb20gcnVudGltZSBmaWxlcwogICAgIGluc3RhbGwgLW0gMDY0NCBydW50aW1lL3ZpbXJjX2V4YW1wbGUudmltICR7RH0vJHtkYXRhZGlyfS8ke0JQTn0vdmltcmMKIApAQCAtMTA3LDcgKzEwNSwxMiBAQAogRklMRVNfJHtQTn0tdHV0b3IgPSAiJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3R1dG9yICR7YmluZGlyfS8ke0JQTn10dXRvciIKIEZJTEVTXyR7UE59LXZpbXJjID0gIiR7ZGF0YWRpcn0vJHtCUE59L3ZpbXJjIgogRklMRVNfJHtQTn0tZGF0YSA9ICIke2RhdGFkaXJ9LyR7QlBOfSIKKworIyBXZSBkbyBub3Qgd2FudCB0byBjb21wbGFpbiBpZiBwZXJsIG9yIGdhd2sgYXJlIG5vdCBvbiB0aGUgdGFyZ2V0LgorIwogRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3Rvb2xzIgorSU5TQU5FX1NLSVBfJHtQTn0tdG9vbHMgPSAiZmlsZS1yZGVwcyIKKwogRklMRVNfJHtQTn0tY29tbW9uID0gIiBcCiAgICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9LyoudmltIFwKICAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vYXV0b2xvYWQgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltXzguMS4xNTE4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltXzguMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltXzguMS4xNTE4LmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW1fOC4yLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC41OC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNTguMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVkMzgyYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC41OC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotU1VNTUFSWSA9ICJWaXJ0dWFsIHRlcm1pbmFsIGVtdWxhdG9yIEdUSysgd2lkZ2V0IGxpYnJhcnkiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2J1Z2xpc3QuY2dpP3Byb2R1Y3Q9dnRlIgotTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MysgJiBMR1BMdjIuMSsiCi1MSUNFTlNFX2xpYnZ0ZSA9ICJMR1BMdjMrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gIiBcCi0gICAgZmlsZTovL0NPUFlJTkcuR1BMMzttZDU9MmYzMWIyNjZkMzQ0MGRkN2VlNTBmOTJjZjY3ZDhlNmMgXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEwyO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgZmlsZTovL0NPUFlJTkcuTEdQTDM7bWQ1PWI1MmYyZDU3ZDEwYzRmN2VlNjdhN2ViOTYxNWQ1ZDI0IFwKLSIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBndGsrMyBsaWJwY3JlMiBsaWJ4bWwyLW5hdGl2ZSBncGVyZi1uYXRpdmUiCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi1HSVJfTUVTT05fT1BUSU9OID0gJ2dpcicKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBmZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLSMgdmFwaWdlbi5tNCBpcyByZXF1aXJlZCB3aGVuIHZhbGEgaXMgbm90IHByZXNlbnQgKGJ1dCB0aGUgb25lIGZyb20gdmFsYSBzaG91bGQgYmUgdXNlZCBub3JtYWxseSkKLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWFwcC5jYy11c2Utb2xkLXNjaG9vbC1hc2lnbm1lbnQtdG8tYXZvaWQtZ2NjLTQuOC1lcnIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLVdfRVhJVENPREUtbWFjcm8tZm9yLW5vbi1nbGliYy1zeXN0ZW1zLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZGFkYmYyYzFkOTg2NGQzZWExODU3MzhmOTdhYjYzYWYiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIzM2M5NjZkMmIxZjJjM2IwZjk0MTZkYmNhODgzZmQ3NDYxNTliNWJkMDQwMzUwZTNiNzhmODEwNGIyYTQyYmMwIgotCi1BTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKLQotIyBJbnN0ZWFkIG9mICJpbmhlcml0IHZhbGEiIHdlIGRvIHRoZSByZWxldmFudCBzZXR0aW5ncyBoZXJlIHNvIHdlIGNhbgotIyBzZXQgREVQRU5EUyBiYXNlZCBvbiBQQUNLQUdFQ09ORklHLgotCi0jIE91ciBwYXRjaGVkIHZlcnNpb24gb2YgVmFsYSBsb29rcyBpbiBTVEFHSU5HX0RBVEFESVIgZm9yIC52YXBpIGZpbGVzCi1leHBvcnQgU1RBR0lOR19EQVRBRElSCi0jIFVwc3RyZWFtIFZhbGEgPj0gMC4xMSBsb29rcyBpbiBYREdfREFUQV9ESVJTIGZvciAudmFwaSBmaWxlcwotZXhwb3J0IFhER19EQVRBX0RJUlMgPSAiJHtTVEFHSU5HX0RBVEFESVJ9IgotCi0jIEhlbHAgZy1pci1zY2FubmVyIGZpbmQgdGhlIC5zbyBmb3IgbGlua2luZwotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L3NyYy8ubGlicyIKLX0KLQotIyBQYWNrYWdlIGFkZGl0aW9uYWwgZmlsZXMKLUZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS92YWxhL3ZhcGkvKiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyIKLVBBQ0tBR0VDT05GSUdbdmFsYV0gPSAiLUR2YXBpPXRydWUsLUR2YXBpPWZhbHNlLHZhbGEtbmF0aXZlIHZhbGEiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLURnbnV0bHM9dHJ1ZSwtRGdudXRscz1mYWxzZSxnbnV0bHMiCi0jIHZhbGEgcmVxdWlyZXMgZ2lyCi1QQUNLQUdFQ09ORklHX3JlbW92ZV9jbGFzcy1uYXRpdmUgPSAidmFsYSIKLQotQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgotCi1QQUNLQUdFUyA9KyAibGlidnRlICR7UE59LXByb21wdCIKLUZJTEVTX2xpYnZ0ZSA9ICIke2xpYmRpcn0vKi5zby4qICR7bGliZGlyfS9naXJlcG9zaXRvcnktMS4wLyoiCi1GSUxFU18ke1BOfS1wcm9tcHQgPSAiJHtzeXNjb25mZGlyfS9wcm9maWxlLmQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjU4LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC41OC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxZGMyZTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC41OC4zLmJiCkBAIC0wLDAgKzEsNTYgQEAKK1NVTU1BUlkgPSAiVmlydHVhbCB0ZXJtaW5hbCBlbXVsYXRvciBHVEsrIHdpZGdldCBsaWJyYXJ5IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9idWdsaXN0LmNnaT9wcm9kdWN0PXZ0ZSIKK0xJQ0VOU0UgPSAiR1BMdjMgJiBMR1BMdjMrICYgTEdQTHYyLjErIgorTElDRU5TRV9saWJ2dGUgPSAiTEdQTHYzKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAorICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDM7bWQ1PTJmMzFiMjY2ZDM0NDBkZDdlZTUwZjkyY2Y2N2Q4ZTZjIFwKKyAgICBmaWxlOi8vQ09QWUlORy5MR1BMMjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEwzO21kNT1iNTJmMmQ1N2QxMGM0ZjdlZTY3YTdlYjk2MTVkNWQyNCBcCisiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ3RrKzMgbGlicGNyZTIgbGlieG1sMi1uYXRpdmUgZ3BlcmYtbmF0aXZlIgorCitHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgorR0lSX01FU09OX09QVElPTiA9ICdnaXInCisKK2luaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCisjIHZhcGlnZW4ubTQgaXMgcmVxdWlyZWQgd2hlbiB2YWxhIGlzIG5vdCBwcmVzZW50IChidXQgdGhlIG9uZSBmcm9tIHZhbGEgc2hvdWxkIGJlIHVzZWQgbm9ybWFsbHkpCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1hcHAuY2MtdXNlLW9sZC1zY2hvb2wtYXNpZ25tZW50LXRvLWF2b2lkLWdjYy00LjgtZXJyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1XX0VYSVRDT0RFLW1hY3JvLWZvci1ub24tZ2xpYmMtc3lzdGVtcy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImY1OWViMDc4NGEzNjFjMDkzOWMwM2Q0NTY2MjU1OTE2IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMjJkY2I1NGFjMmFkMWE1NmFiMGE3NDVlMTZjY2ZlYjM4M2YwYjU4NjBiNWJmYTE3ODQ1NjEyMTZmOThkNDk3NSIKKworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCisKKyMgSW5zdGVhZCBvZiAiaW5oZXJpdCB2YWxhIiB3ZSBkbyB0aGUgcmVsZXZhbnQgc2V0dGluZ3MgaGVyZSBzbyB3ZSBjYW4KKyMgc2V0IERFUEVORFMgYmFzZWQgb24gUEFDS0FHRUNPTkZJRy4KKworIyBPdXIgcGF0Y2hlZCB2ZXJzaW9uIG9mIFZhbGEgbG9va3MgaW4gU1RBR0lOR19EQVRBRElSIGZvciAudmFwaSBmaWxlcworZXhwb3J0IFNUQUdJTkdfREFUQURJUgorIyBVcHN0cmVhbSBWYWxhID49IDAuMTEgbG9va3MgaW4gWERHX0RBVEFfRElSUyBmb3IgLnZhcGkgZmlsZXMKK2V4cG9ydCBYREdfREFUQV9ESVJTID0gIiR7U1RBR0lOR19EQVRBRElSfSIKKworIyBIZWxwIGctaXItc2Nhbm5lciBmaW5kIHRoZSAuc28gZm9yIGxpbmtpbmcKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9zcmMvLmxpYnMiCit9CisKKyMgUGFja2FnZSBhZGRpdGlvbmFsIGZpbGVzCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vdmFsYS92YXBpLyoiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJnbnV0bHMiCitQQUNLQUdFQ09ORklHW3ZhbGFdID0gIi1EdmFwaT10cnVlLC1EdmFwaT1mYWxzZSx2YWxhLW5hdGl2ZSB2YWxhIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi1EZ251dGxzPXRydWUsLURnbnV0bHM9ZmFsc2UsZ251dGxzIgorIyB2YWxhIHJlcXVpcmVzIGdpcgorUEFDS0FHRUNPTkZJR19yZW1vdmVfY2xhc3MtbmF0aXZlID0gInZhbGEiCisKK0NGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKKworUEFDS0FHRVMgPSsgImxpYnZ0ZSAke1BOfS1wcm9tcHQiCitGSUxFU19saWJ2dGUgPSAiJHtsaWJkaXJ9Lyouc28uKiAke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LTEuMC8qIgorRklMRVNfJHtQTn0tcHJvbXB0ID0gIiR7c3lzY29uZmRpcn0vcHJvZmlsZS5kIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvc2l0ZS9hcm0tY29tbW9uIGIvcG9reS9tZXRhL3NpdGUvYXJtLWNvbW1vbgppbmRleCAxOThjOThjLi44YzM3ZjNmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvc2l0ZS9hcm0tY29tbW9uCisrKyBiL3Bva3kvbWV0YS9zaXRlL2FybS1jb21tb24KQEAgLTQsOSArNCw2IEBACiBhY19jdl9mdW5jX2xzdGF0X2VtcHR5X3N0cmluZ19idWc9JHthY19jdl9mdW5jX2xzdGF0X2VtcHR5X3N0cmluZ19idWc9bm99CiBhY19jdl9mdW5jX3N0YXRfZW1wdHlfc3RyaW5nX2J1Zz0ke2FjX2N2X2Z1bmNfc3RhdF9lbXB0eV9zdHJpbmdfYnVnPW5vfQogYWNfY3ZfZnVuY19zdGF0X2lnbm9yZXNfdHJhaWxpbmdfc2xhc2g9JHthY19jdl9mdW5jX3N0YXRfaWdub3Jlc190cmFpbGluZ19zbGFzaD1ub30KLWFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaD0ke2FjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaD1ub30KLWFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9JHthY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX3Vpb19oPW5vfQotYWNfY3Zfc2N0cD0ke2FjX2N2X3NjdHA9bm99CiAKICMgYmFzaAogYWNfY3ZfY19sb25nX2RvdWJsZT0ke2FjX2N2X2NfbG9uZ19kb3VibGU9eWVzfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3NpdGUvY29tbW9uLWdsaWJjIGIvcG9reS9tZXRhL3NpdGUvY29tbW9uLWdsaWJjCmluZGV4IDE0NDNmOGUuLmEwNjgwYmMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9zaXRlL2NvbW1vbi1nbGliYworKysgYi9wb2t5L21ldGEvc2l0ZS9jb21tb24tZ2xpYmMKQEAgLTEsNSArMSw2IEBACiAjIGdlbmVyYWwKIGFjX2N2X2hhdmVfZGVjbF9zeXNfc2lnbGlzdD0ke2FjX2N2X2hhdmVfZGVjbF9zeXNfc2lnbGlzdD15ZXN9CithY19jdl9mdW5jX2NhbGxvY18wX25vbm51bGw9JHthY19jdl9mdW5jX2NhbGxvY18wX25vbm51bGw9eWVzfQogYWNfY3ZfZnVuY19yZWFsbG9jX3dvcmtzPSR7YWNfY3ZfZnVuY19yZWFsbG9jX3dvcmtzPXllc30KIGFjX2N2X2Z1bmNfcmVhbGxvY18wX25vbm51bGw9JHthY19jdl9mdW5jX3JlYWxsb2NfMF9ub25udWxsPXllc30KIGFjX2N2X2Z1bmNfbWFsbG9jX3dvcmtzPSR7YWNfY3ZfZnVuY19tYWxsb2Nfd29ya3M9eWVzfQpAQCAtMTQsNiArMTUsNyBAQAogYWNfY3ZfZnVuY19wb3NpeF9nZXRncmdpZF9yPSR7YWNfY3ZfZnVuY19wb3NpeF9nZXRncmdpZF9yPXllc30KIGFjX2N2X3R5cGVfdWlkX3Q9e2FjX2N2X3R5cGVfdWlkX3Q9eWVzfQogYWNfY3ZfZnVuY19nZXRhZGRyaW5mbz0ke2FjX2N2X2Z1bmNfZ2V0YWRkcmluZm89eWVzfQorYWNfY3ZfZnVuY19zdHJ0b2Q9JHthY19jdl9mdW5jX3N0cnRvZD15ZXN9CiAKICMgYmFzaAogYmFzaF9jdl91bmRlcl9zeXNfc2lnbGlzdD0ke2Jhc2hfY3ZfdW5kZXJfc3lzX3NpZ2xpc3Q9eWVzfQpAQCAtMjgsNiArMzAsMTQgQEAKIAogIyBjb3JldXRpbHMKIGZ1X2N2X3N5c19zdGF0X3N0YXRmczJfYnNpemU9JHtmdV9jdl9zeXNfc3RhdF9zdGF0ZnMyX2JzaXplPXllc30KK2dsX2N2X2Z1bmNfZ2V0Y3dkX2Fib3J0X2J1Zz0ke2dsX2N2X2Z1bmNfZ2V0Y3dkX2Fib3J0X2J1Zz1ub30KK2dsX2N2X2Z1bmNfZ2V0Y3dkX251bGw9JHtnbF9jdl9mdW5jX2dldGN3ZF9udWxsPXllc30KK2dsX2N2X2Z1bmNfZ2V0Y3dkX3BhdGhfbWF4PSR7Z2xfY3ZfZnVuY19nZXRjd2RfcGF0aF9tYXg9eWVzfQorYWNfY3ZfZnVuY19nZXRncm91cHNfd29ya3M9JHthY19jdl9mdW5jX2dldGdyb3Vwc193b3Jrcz15ZXN9CitnbF9jdl9mdW5jX25hbm9zbGVlcD0ke2dsX2N2X2Z1bmNfbmFub3NsZWVwPSdubyAobWlzaGFuZGxlcyBsYXJnZSBhcmd1bWVudHMpJ30KK2dsX2N2X2Z1bmNfd29ya2luZ19ta3N0ZW1wPSR7Z2xfY3ZfZnVuY193b3JraW5nX21rc3RlbXA9eWVzfQorZ2xfY3ZfZnVuY193b3JraW5nX21rdGltZT0ke2dsX2N2X2Z1bmNfd29ya2luZ19ta3RpbWU9eWVzfQorZ2xfY3ZfZnVuY193b3JraW5nX3V0aW1lcz0ke2dsX2N2X2Z1bmNfd29ya2luZ191dGltZXM9eWVzfQogCiAjIGdsaWIKIGdsaWJfY3Zfc3RybGNweT0ke2dsaWJfY3Zfc3RybGNweT1ub30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9zaXRlL2NvbW1vbi1saW51eCBiL3Bva3kvbWV0YS9zaXRlL2NvbW1vbi1saW51eAppbmRleCA3MWVjOTYxLi4xYzFmZGFmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvc2l0ZS9jb21tb24tbGludXgKKysrIGIvcG9reS9tZXRhL3NpdGUvY29tbW9uLWxpbnV4CkBAIC00Nyw4ICs0NywxMyBAQAogaHdfY3ZfZnVuY192c25wcmludGZfYzk5PSR7aHdfY3ZfZnVuY192c25wcmludGZfYzk5PXllc30KIAogIyBjb3JldXRpbHMKK2FjX2N2X2Z1bmNfY2hvd25fd29ya3M9JHthY19jdl9mdW5jX2Nob3duX3dvcmtzPXllc30KK2FjX2N2X2Z1bmNfdXRpbWVfbnVsbD0ke2FjX2N2X2Z1bmNfdXRpbWVfbnVsbD15ZXN9CiBnbF9jdl9mdW5jX2ZzdGF0YXRfemVyb19mbGFnPSR7Z2xfY3ZfZnVuY19mc3RhdGF0X3plcm9fZmxhZz15ZXN9CitnbF9jdl9mdW5jX2xpbmtfZm9sbG93c19zeW1saW5rPSR7Z2xfY3ZfZnVuY19saW5rX2ZvbGxvd3Nfc3ltbGluaz1ub30KK2dsX2N2X2Z1bmNfdW5saW5rX2J1c3lfdGV4dD0ke2dsX2N2X2Z1bmNfdW5saW5rX2J1c3lfdGV4dD15ZXN9CiBnbF9jdl9oYXZlX3Byb2NfdXB0aW1lPSR7Z2xfY3ZfaGF2ZV9wcm9jX3VwdGltZT15ZXN9CitnbF9jdl9waXBlc19hcmVfZmlmb3M9JHtnbF9jdl9waXBlc19hcmVfZmlmb3M9J3llcyAoMSknfQogCiAjIG15c3FsCiBhY19jdl9zeXNfcmVzdGFydGFibGVfc3lzY2FsbHM9JHthY19jdl9zeXNfcmVzdGFydGFibGVfc3lzY2FsbHM9eWVzfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3NpdGUvY29tbW9uLW11c2wgYi9wb2t5L21ldGEvc2l0ZS9jb21tb24tbXVzbAppbmRleCAxYjRmYzMyLi40YmU4ZDAwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvc2l0ZS9jb21tb24tbXVzbAorKysgYi9wb2t5L21ldGEvc2l0ZS9jb21tb24tbXVzbApAQCAtMSw5ICsxLDExIEBACiAjIGdlbmVyYWwKIGFjX2N2X2hhdmVfZGVjbF9zeXNfc2lnbGlzdD0ke2FjX2N2X2hhdmVfZGVjbF9zeXNfc2lnbGlzdD1ub30KK2FjX2N2X2Z1bmNfY2FsbG9jXzBfbm9ubnVsbD0ke2FjX2N2X2Z1bmNfY2FsbG9jXzBfbm9ubnVsbD15ZXN9CiBhY19jdl9mdW5jX3JlYWxsb2Nfd29ya3M9JHthY19jdl9mdW5jX3JlYWxsb2Nfd29ya3M9eWVzfQogYWNfY3ZfZnVuY19yZWFsbG9jXzBfbm9ubnVsbD0ke2FjX2N2X2Z1bmNfcmVhbGxvY18wX25vbm51bGw9eWVzfQogYWNfY3ZfZnVuY19tYWxsb2Nfd29ya3M9JHthY19jdl9mdW5jX21hbGxvY193b3Jrcz15ZXN9CiBhY19jdl9mdW5jX21hbGxvY18wX25vbm51bGw9JHthY19jdl9mdW5jX21hbGxvY18wX25vbm51bGw9eWVzfQorYWNfY3ZfZnVuY19tZW1jbXBfd29ya2luZz0ke2FjX2N2X2Z1bmNfbWVtY21wX3dvcmtpbmc9eWVzfQogYWNfY3ZfZnVuY19nZXRwZ3JwX3ZvaWQ9eWVzCiBhY19jdl9mdW5jX3NldHBncnBfdm9pZD15ZXMKIGFjX2N2X2Z1bmNfc2V0Z3JlbnRfdm9pZD15ZXMKQEAgLTEzLDYgKzE1LDcgQEAKIGFjX2N2X2Z1bmNfcG9zaXhfZ2V0Z3JnaWRfcj0ke2FjX2N2X2Z1bmNfcG9zaXhfZ2V0Z3JnaWRfcj15ZXN9CiBhY19jdl9mdW5jX2dldGFkZHJpbmZvPSR7YWNfY3ZfZnVuY19nZXRhZGRyaW5mbz15ZXN9CiBhY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPSR7YWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD15ZXN9CithY19jdl9mdW5jX3N0cnRvZD0ke2FjX2N2X2Z1bmNfc3RydG9kPXllc30KIAogIyBnbGliCiBnbGliX2N2X3N0cmxjcHk9JHtnbGliX2N2X3N0cmxjcHk9bm99CkBAIC0zMiw5ICszNSwxOCBAQAogCiAjIGNvcmV1dGlscwogZnVfY3Zfc3lzX3N0YXRfc3RhdGZzMl9ic2l6ZT0ke2Z1X2N2X3N5c19zdGF0X3N0YXRmczJfYnNpemU9eWVzfQorZ2xfY3ZfZnVuY19nZXRjd2RfYWJvcnRfYnVnPSR7Z2xfY3ZfZnVuY19nZXRjd2RfYWJvcnRfYnVnPW5vfQorZ2xfY3ZfZnVuY19nZXRjd2RfbnVsbD0ke2dsX2N2X2Z1bmNfZ2V0Y3dkX251bGw9eWVzfQorZ2xfY3ZfZnVuY19nZXRjd2RfcGF0aF9tYXg9JHtnbF9jdl9mdW5jX2dldGN3ZF9wYXRoX21heD0nbm8sIGJ1dCBpdCBpcyBwYXJ0bHkgd29ya2luZyd9CithY19jdl9mdW5jX2dldGdyb3Vwc193b3Jrcz0ke2FjX2N2X2Z1bmNfZ2V0Z3JvdXBzX3dvcmtzPXllc30KIGdsX2N2X2Z1bmNfZ2V0dGltZW9mZGF5X2Nsb2JiZXI9JHtnbF9jdl9mdW5jX2dldHRpbWVvZmRheV9jbG9iYmVyPW5vfQorZ2xfY3ZfZnVuY19uYW5vc2xlZXA9JHtnbF9jdl9mdW5jX25hbm9zbGVlcD15ZXN9CitnbF9jdl9mdW5jX3N0cnRvZF93b3Jrcz0ke2dsX2N2X2Z1bmNfc3RydG9kX3dvcmtzPXllc30KIGdsX2N2X2Z1bmNfdHpzZXRfY2xvYmJlcj0ke2dsX2N2X2Z1bmNfdHpzZXRfY2xvYmJlcj1ub30KIGdsX2N2X2Z1bmNfZ2V0dGltZW9mZGF5X3Bvc2l4X3NpZ25hdHVyZT0ke2dsX2N2X2Z1bmNfZ2V0dGltZW9mZGF5X3Bvc2l4X3NpZ25hdHVyZT15ZXN9CitnbF9jdl9mdW5jX3dvcmtpbmdfbWtzdGVtcD0ke2dsX2N2X2Z1bmNfd29ya2luZ19ta3N0ZW1wPXllc30KK2dsX2N2X2Z1bmNfd29ya2luZ19ta3RpbWU9JHtnbF9jdl9mdW5jX3dvcmtpbmdfbWt0aW1lPXllc30KK2dsX2N2X2Z1bmNfd29ya2luZ191dGltZXM9JHtnbF9jdl9mdW5jX3dvcmtpbmdfdXRpbWVzPXllc30KIGFjX2N2X2Z1bmNfcG9zaXhfc3Bhd249JHthY19jdl9mdW5jX3Bvc2l4X3NwYXduPXllc30KIGFjX2N2X2Z1bmNfcG9zaXhfc3Bhd25fd29ya3M9JHthY19jdl9mdW5jX3Bvc2l4X3NwYXduX3dvcmtzPXllc30KIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3NpdGUvaXg4Ni1jb21tb24gYi9wb2t5L21ldGEvc2l0ZS9peDg2LWNvbW1vbgppbmRleCBjNWUzNTRjLi5hMjM4NDM3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvc2l0ZS9peDg2LWNvbW1vbgorKysgYi9wb2t5L21ldGEvc2l0ZS9peDg2LWNvbW1vbgpAQCAtMjcsMTAgKzI3LDcgQEAKIGFjX2N2X2Z1bmNfc3RhdF9pZ25vcmVzX3RyYWlsaW5nX3NsYXNoPSR7YWNfY3ZfZnVuY19zdGF0X2lnbm9yZXNfdHJhaWxpbmdfc2xhc2g9bm99CiBhY19jdl92YV92YWxfY29weT0ke2FjX2N2X3ZhX3ZhbF9jb3B5PXllc30KIAotYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPSR7YWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPW5vfQotYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF91aW9faD0ke2FjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9bm99CiBhY19jdl9saW51eF92ZXJzPSR7YWNfY3ZfbGludXhfdmVycz0yfQotYWNfY3Zfc2N0cD0ke2FjX2N2X3NjdHA9bm99CiAKIGFjX2N2X3BhdGhfRVNEX0NPTkZJRz1ubwogbGZfY3Zfc2FuZV9yZWFsbG9jPXllcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3NpdGUvbmlvczItbGludXggYi9wb2t5L21ldGEvc2l0ZS9uaW9zMi1saW51eAppbmRleCA2N2EzZmM4Li44YWMxOThhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvc2l0ZS9uaW9zMi1saW51eAorKysgYi9wb2t5L21ldGEvc2l0ZS9uaW9zMi1saW51eApAQCAtMiw5ICsyLDYgQEAKIGFjX2N2X2Z1bmNfbHN0YXRfZW1wdHlfc3RyaW5nX2J1Zz0ke2FjX2N2X2Z1bmNfbHN0YXRfZW1wdHlfc3RyaW5nX2J1Zz1ub30KIGFjX2N2X2Z1bmNfc3RhdF9lbXB0eV9zdHJpbmdfYnVnPSR7YWNfY3ZfZnVuY19zdGF0X2VtcHR5X3N0cmluZ19idWc9bm99CiBhY19jdl9mdW5jX3N0YXRfaWdub3Jlc190cmFpbGluZ19zbGFzaD0ke2FjX2N2X2Z1bmNfc3RhdF9pZ25vcmVzX3RyYWlsaW5nX3NsYXNoPW5vfQotYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPSR7YWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPW5vfQotYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF91aW9faD0ke2FjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9bm99Ci1hY19jdl9zY3RwPSR7YWNfY3Zfc2N0cD1ub30KIAogIyBhcGFjaGUKIGFjX2N2X3NpemVvZl9zc2l6ZV90PSR7YWNfY3Zfc2l6ZW9mX3NzaXplX3Q9NH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9zaXRlL3Bvd2VycGMzMi1saW51eCBiL3Bva3kvbWV0YS9zaXRlL3Bvd2VycGMzMi1saW51eAppbmRleCBmMzdlOTE1Li4xNzJhMDZjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvc2l0ZS9wb3dlcnBjMzItbGludXgKKysrIGIvcG9reS9tZXRhL3NpdGUvcG93ZXJwYzMyLWxpbnV4CkBAIC0zOSwxMCArMzksNiBAQAogIyBhcGFjaGUKIGFjX2N2X3NpemVvZl9zc2l6ZV90PSR7YWNfY3Zfc2l6ZW9mX3NzaXplX3Q9NH0KIAotYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPSR7YWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPW5vfQotYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF91aW9faD0ke2FjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9bm99Ci1hY19jdl9zY3RwPSR7YWNfY3Zfc2N0cD1ub30KLQogIyBzc2gKIGFjX2N2X2hhdmVfc3BhY2VfZF9uYW1lX2luX3N0cnVjdF9kaXJlbnQ9JHthY19jdl9kaXJlbnRfaGF2ZV9zcGFjZV9kX25hbWU9eWVzfQogYWNfY3ZfaGF2ZV9icm9rZW5fc25wcmludGY9JHthY19jdl9oYXZlX2Jyb2tlbl9zbnByaW50Zj1ub30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9zaXRlL3NoLWNvbW1vbiBiL3Bva3kvbWV0YS9zaXRlL3NoLWNvbW1vbgppbmRleCA5N2M5NjkzLi42YmRhMWMyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvc2l0ZS9zaC1jb21tb24KKysrIGIvcG9reS9tZXRhL3NpdGUvc2gtY29tbW9uCkBAIC0zMSwxMCArMzEsNiBAQAogIyBhcGFjaGUKIGFjX2N2X3NpemVvZl9zc2l6ZV90PSR7YWNfY3Zfc2l6ZW9mX3NzaXplX3Q9NH0KIAotYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPSR7YWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPW5vfQotYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF91aW9faD0ke2FjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9bm99Ci1hY19jdl9zY3RwPSR7YWNfY3Zfc2N0cD1ub30KLQogIyBzc2gKIGFjX2N2X2hhdmVfc3BhY2VfZF9uYW1lX2luX3N0cnVjdF9kaXJlbnQ9JHthY19jdl9kaXJlbnRfaGF2ZV9zcGFjZV9kX25hbWU9eWVzfQogYWNfY3ZfaGF2ZV9icm9rZW5fc25wcmludGY9JHthY19jdl9oYXZlX2Jyb2tlbl9zbnByaW50Zj1ub30KZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9idWlsZGFsbC1xZW11IGIvcG9reS9zY3JpcHRzL2J1aWxkYWxsLXFlbXUKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uY2E5YWFmYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvc2NyaXB0cy9idWlsZGFsbC1xZW11CkBAIC0wLDAgKzEsMTIwIEBACisjIS9iaW4vc2gKKyMgIENvcHlyaWdodCAoYykgMjAyMCBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KKyMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQorIworIyBidWlsZGFsbC1xZW11OiBhIHRvb2wgZm9yIGF1dG9tYXRpbmcgYnVpbGQgdGVzdGluZyBvZiByZWNpcGVzCisjIFRPRE86IEFkZCBzdXBwb3J0IGZvciBzZWxlY3Rpbmcgd2hpY2ggcWVtdSBhcmNoaXRlY3R1cmVzIHRvIGJ1aWxkCisjIFRPRE86IEFkZCBzdXBwb3J0IGZvciBxdWV1ZWluZyB1cCBtdWx0aXBsZSByZWNpcGUgYnVpbGRzCisjIFRPRE86IEFkZCBtb3JlIGxvZ2dpbmcgb3B0aW9ucyAoZS5nLiBsb2NhbC5jb25mIGluZm8sIGJpdGJha2UgZW52IGluZm8pCisKK3VzYWdlICgpCit7CisgICAgYmFzZT0kKGJhc2VuYW1lICIkMCIpCisgICAgZWNobyAiVXNhZ2U6ICRiYXNlIFtvcHRpb25zXSBbcmVjaXBlbmFtZS90YXJnZXRdIgorICAgIGVjaG8gIkV4ZWN1dGVzIGEgYnVpbGQgb2YgYSBnaXZlbiB0YXJnZXQgZm9yIHNlbGVjdGVkIExJQkNzLiBXaXRoIG5vIG9wdGlvbnMsIGRlZmF1bHQgdG8gYm90aCBsaWJjIGFuZCBtdXNsLiIKKyAgICBlY2hvICJPcHRpb25zOiIKKyAgICBlY2hvICItbCwgLS1saWJjICAgICAgICAgICAgU3BlY2lmeSBvbmUgb2YgXCJnbGliY1wiIG9yIFwibXVzbFwiIgorfQorCisKK2J1aWxkYWxsICgpCit7CisgICAgIyBHZXQgcGF0aCB0byBvZS1jb3JlIGRpcmVjdG9yeS4gU2luY2Ugb2UtaW5pdC1idWlsZC1lbnYgcHJlcGVuZHMgJFBBVEggd2l0aAorICAgICMgdGhlIHBhdGggdG8gdGhlIHNjcmlwdHMgZGlyZWN0b3J5LCBnZXQgaXQgZnJvbSB0aGVyZQorICAgIFNDUklQVFNfUEFUSD0iJChlY2hvICIkUEFUSCIgfCBjdXQgLWQgIjoiIC1mIDEpIgorICAgIE9FX0NPUkVfUEFUSD0kKGVjaG8gIiRTQ1JJUFRTX1BBVEgiIHwgc2VkICdzfFwoLipcKS8uKnxcMXwnKSAKKworICAgICMgR2V0IHRhcmdldCBsaXN0IGFuZCBob3N0IG1hY2hpbmUgaW5mb3JtYXRpb24KKyAgICBUQVJHRVRfTElTVD0kKGZpbmQgIiRPRV9DT1JFX1BBVEgiL21ldGEvY29uZi9tYWNoaW5lIC1tYXhkZXB0aCAxIC10eXBlIGYgfCBncmVwIHFlbXUgfCBzZWQgJ3N8LiovfHwnIHwgc2VkIC1lICdzL1wuY29uZi8vJykKKworICAgICMgU2V0IExJQkMgdmFsdWUgdG8gdXNlIGZvciB0aGUgYnVpbGRzIGJhc2VkIG9uIG9wdGlvbnMgcHJvdmlkZWQgYnkgdGhlIHVzZXIKKyAgICBpZiBbIC1uICIkMiIgXQorICAgIHRoZW4KKwlMSUJDX0xJU1Q9IiQyIgorCWVjaG8gIiRMSUJDX0xJU1QiCisgICAgZWxzZQorCUxJQkNfTElTVD0iZ2xpYmMgbXVzbCIKKwllY2hvICIkTElCQ19MSVNUIgorICAgIGZpCisKKyAgICBTVEFSVF9USU1FPSQoZGF0ZSAiKyVZLSVtLSVkXyVIOiVNOiVTIikKKyAgICBMT0dfRklMRT0iJDEtYnVpbGRhbGwubG9nIgorICAgIE9TX0lORk89JChncmVwICJQUkVUVFlfTkFNRT0iIC9ldGMvb3MtcmVsZWFzZSB8IGF3ayAtRiAiPSIgJ3twcmludCAkMn0nIHwgc2VkIC1lICdzL14iLy8nIC1lICdzLyIkLy8nKQorCisgICAgIyBBcHBlbmQgYW4gZXhpc3RpbmcgbG9nIGZpbGUgZm9yIHRoaXMgYnVpbGQgd2l0aCAub2xkIGlmIG9uZSBleGlzdHMKKyAgICBpZiBbIC1mICIke0xPR19GSUxFfSIgXSAKKyAgICB0aGVuCisgICAgICAgbXYgIiR7TE9HX0ZJTEV9IiAiJHtMT0dfRklMRX0ub2xkIgorICAgIGVsc2UKKwkgICB0b3VjaCAiJHtMT0dfRklMRX0iCisgICAgZmkKKworICAgICMgRmlsbCB0aGUgbG9nIGZpbGUgd2l0aCBidWlsZCBhbmQgaG9zdCBpbmZvCisgICAgZWNobyAiQlVJTERBTEwtUUVNVSBMT0cgRk9SICQxIiA+PiAiJHtMT0dfRklMRX0iCisgICAgZWNobyAiU1RBUlQgVElNRTogJHtTVEFSVF9USU1FfSIgPj4gIiR7TE9HX0ZJTEV9IgorICAgIGVjaG8gIkhPU1ROQU1FOiAkKHVuYW1lIC1uKSIgPj4gIiR7TE9HX0ZJTEV9IgorICAgIGVjaG8gIkhPU1QgT1M6ICR7T1NfSU5GT30iID4+ICIke0xPR19GSUxFfSIKKyAgICBlY2hvICJIT1NUIEtFUk5FTDogJCh1bmFtZSAtcikiID4+ICIke0xPR19GSUxFfSIKKyAgICBlY2hvICI9PT09PT09PT09PT09PT0iID4+ICIke0xPR19GSUxFfSIKKyAgICBlY2hvICJCVUlMRCBSRVNVTFRTOiIgPj4gIiR7TE9HX0ZJTEV9IgorCisgICAgIyBzdGFydCB0aGUgYnVpbGRzIGZvciBlYWNoIE1BQ0hJTkUgYW5kIFRDTElCQworICAgIGZvciBqIGluICR7TElCQ19MSVNUfSAKKyAgICBkbworCWVjaG8gIlskal0iID4+ICIke0xPR19GSUxFfSIKKwlmb3IgaSBpbiAke1RBUkdFVF9MSVNUfSAKKwlkbworCSAgICBlY2hvICIkaSIgIiRqIjsgXAorCSAgICBUQ0xJQkM9JGogTUFDSElORT0kaSBiaXRiYWtlICIkMSIgJiYgZWNobyAiUEFTUzogJGkiID4+ICIke0xPR19GSUxFfSIgfHwgZWNobyAiRkFJTDogJGkiID4+ICIke0xPR19GSUxFfSIKKwlkb25lCisgICAgZG9uZQorCisgICAgIyBHZXQgcGFzcy9mYWlsIHRvdGFscyBhbmQgYWRkIHRoZW0gdG8gdGhlIGVuZCBvZiB0aGUgbG9nCisgICAgUEFTU0VEPSQoZ3JlcCAiUEFTUzoiICIke0xPR19GSUxFfSIgfCB3YyAtbCkKKyAgICBGQUlMRUQ9JChncmVwICJGQUlMOiIgIiR7TE9HX0ZJTEV9IiB8IHdjIC1sKQorCisgICAgZWNobyAiPT09PT09PT09PT09PT09IiA+PiAiJHtMT0dfRklMRX0iCisgICAgZWNobyAiUEFTU0VEOiAke1BBU1NFRH0iID4+ICIke0xPR19GSUxFfSIKKyAgICBlY2hvICJGQUlMRUQ6ICR7RkFJTEVEfSIgPj4gIiR7TE9HX0ZJTEV9IgorfQorCisKKyMgZmFpbCBlbnRpcmUgc2NyaXB0IGlmIGFueSBjb21tYW5kIGZhaWxzCitzZXQgLWUKKworIyBwcmludCB1c2FnZSBhbmQgZXhpdCBpZiBub3QgZW5vdWdoIGFyZ3MgZ2l2ZW4KK1sgJCMgLWVxIDAgXSAmJiB1c2FnZSAmJiBleGl0IDEKKworIyBoYW5kbGUgYXJndW1lbnRzCitSRUNJUEU9Cit3aGlsZSBbICQjIC1ndCAwIF0KK2RvCisgICAgYXJnPSQxCisgICAgY2FzZSAkYXJnIGluCisJLWx8LS1saWJjKQorCWlmIFsgIiQyIiA9ICJnbGliYyIgXSB8fCBbICIkMiIgPSAibXVzbCIgXQorCXRoZW4KKwkgICAgTElCQ19MSVNUPSIkMiIKKwllbHNlCisJICAgIGVjaG8gIlVucmVjb2duaXplZCBsaWJjIG9wdGlvbi4iCisJICAgIHVzYWdlICYmIGV4aXQgMQorCWZpCisJc2hpZnQKKwlzaGlmdAorCTs7CisJKikKKyAgICAgICAgUkVDSVBFPSIkMSIKKwlzaGlmdAorCTs7CisgICAgZXNhYworZG9uZQorCitzZXQgLS0gIiRSRUNJUEUiCisKKyMgcnVuIGJ1aWxkYWxsIGZvciB0aGUgZ2l2ZW4gcmVjaXBlIGFuZCBMSUJDCitpZiBbIC1uICIkMSIgXQordGhlbgorCWJ1aWxkYWxsICIkMSIgIiRMSUJDX0xJU1QiCitmaQorCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvY29tYm8tbGF5ZXIgYi9wb2t5L3NjcmlwdHMvY29tYm8tbGF5ZXIKaW5kZXggOWI1MGU5OC4uYTYzNGRkNiAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL2NvbWJvLWxheWVyCisrKyBiL3Bva3kvc2NyaXB0cy9jb21iby1sYXllcgpAQCAtODAsNyArODAsNyBAQAogICAgICAgICBsb2dnZXIuZGVidWcoIkxvYWRpbmcgY29uZmlnIGZpbGUgJXMiICUgc2VsZi5jb25mZmlsZSkKICAgICAgICAgc2VsZi5wYXJzZXIgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyKCkKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuY29uZmZpbGUpIGFzIGY6Ci0gICAgICAgICAgICBzZWxmLnBhcnNlci5yZWFkZnAoZikKKyAgICAgICAgICAgIHNlbGYucGFyc2VyLnJlYWRfZmlsZShmKQogCiAgICAgICAgICMgaW5pdGlhbGl6ZSBkZWZhdWx0IHZhbHVlcwogICAgICAgICBzZWxmLmNvbW1pdF9tc2dfdGVtcGxhdGUgPSAiQXV0b21hdGljIGNvbW1pdCB0byB1cGRhdGUgbGFzdF9yZXZpc2lvbiIKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9jb250cmliL2JiLXBlcmYvYnVpbGRzdGF0cy1wbG90LnNoIGIvcG9reS9zY3JpcHRzL2NvbnRyaWIvYmItcGVyZi9idWlsZHN0YXRzLXBsb3Quc2gKaW5kZXggODk4ODM0ZS4uNDVjMjdkMCAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL2NvbnRyaWIvYmItcGVyZi9idWlsZHN0YXRzLXBsb3Quc2gKKysrIGIvcG9reS9zY3JpcHRzL2NvbnRyaWIvYmItcGVyZi9idWlsZHN0YXRzLXBsb3Quc2gKQEAgLTM5LDcgKzM5LDEwIEBACiAKIEJTX0RJUj0idG1wL2J1aWxkc3RhdHMiCiBOPTEwCitSRUNJUEU9IiIKK1RBU0tTPSJjb21waWxlOmNvbmZpZ3VyZTpmZXRjaDppbnN0YWxsOnBhdGNoOnBvcHVsYXRlX2xpYzpwb3B1bGF0ZV9zeXNyb290OnVucGFjayIKIFNUQVRTPSJ1dGltZSIKK0FDQ1VNVUxBVEU9IiIKIFNVTT0iIgogT1VUREFUQV9GSUxFPSIkUFdEL2J1aWxkc3RhdHMtcGxvdC5vdXQiCiAKQEAgLTUxLDExICs1NCwxNSBAQAogICAgICAgICAgICAgICAgIChkZWZhdWx0OiAiJEJTX0RJUiIpCiAgIC1uIE4gICAgICAgICAgVG9wIE4gcmVjaXBlcyB0byBkaXNwbGF5LiBJZ25vcmVkIGlmIC1TIGlzIHByZXNlbnQKICAgICAgICAgICAgICAgICAoZGVmYXVsdDogIiROIikKKyAgLXIgcmVjaXBlICAgICBUaGUgcmVjaXBlIG1hc2sgdG8gYmUgc2VhcmNoZWQKKyAgLXQgdGFza3MgICAgICBUaGUgdGFza3MgdG8gYmUgY29tcHV0ZWQKKyAgICAgICAgICAgICAgICAoZGVmYXVsdDogIiRUQVNLUyIpCiAgIC1zIHN0YXRzICAgICAgVGhlIHN0YXRzIHRvIGJlIG1hdGNoZWQuIElmIG1vcmUgdGhhdCBvbmUgc3RhdCwgdW5pdHMKICAgICAgICAgICAgICAgICBzaG91bGQgYmUgdGhlIHNhbWUgYmVjYXVzZSBkYXRhIGlzIHBsb3QgYXMgaGlzdG9ncmFtLgogICAgICAgICAgICAgICAgIChzZWUgYnVpbGRzdGF0cy5zaCAtaCBmb3IgYWxsIG9wdGlvbnMpIG9yIGFueSBvdGhlciBkZWZpbmVkCiAgICAgICAgICAgICAgICAgKGJ1aWxkKXN0YXQgc2VwYXJhdGVkIGJ5IGNvbG9ucywgaS5lLiBzdGltZTp1dGltZQogICAgICAgICAgICAgICAgIChkZWZhdWx0OiAiJFNUQVRTIikKKyAgLWEgICAgICAgICAgICBBY2N1bXVsYXRlIGFsbCBzdGF0cyB2YWx1ZXMgZm9yIGZvdW5kIHJlY2lwZXMKICAgLVMgICAgICAgICAgICBTdW0gdmFsdWVzIGZvciBhIHBhcnRpY3VsYXIgc3RhdCBmb3IgZm91bmQgcmVjaXBlcwogICAtbyAgICAgICAgICAgIE91dHB1dCBkYXRhIGZpbGUuCiAgICAgICAgICAgICAgICAgKGRlZmF1bHQ6ICIkT1VUREFUQV9GSUxFIikKQEAgLTY0LDMyICs3MSw0MSBAQAogfQogCiAjIFBhcnNlIGFuZCB2YWxpZGF0ZSBhcmd1bWVudHMKLXdoaWxlIGdldG9wdHMgImI6bjpzOm86U2giIE9QVDsgZG8KLQljYXNlICRPUFQgaW4KLQliKQotCQlCU19ESVI9IiRPUFRBUkciCi0JCTs7Ci0JbikKLQkJTj0iJE9QVEFSRyIKLQkJOzsKLQlzKQotCSAgICAgICAgU1RBVFM9IiRPUFRBUkciCi0JICAgICAgICA7OwotCVMpCi0JICAgICAgICBTVU09InkiCi0JICAgICAgICA7OwotCW8pCi0JICAgICAgICBPVVREQVRBX0ZJTEU9IiRPUFRBUkciCi0JICAgICAgICA7OwotCWgpCi0JCXVzYWdlCi0JCWV4aXQgMAotCQk7OwotCSopCi0JCXVzYWdlCi0JCWV4aXQgMQotCQk7OwotCWVzYWMKK3doaWxlIGdldG9wdHMgImI6bjpyOnQ6czpvOmFTaCIgT1BUOyBkbworICAgIGNhc2UgJE9QVCBpbgorICAgIGIpCisgICAgICAgIEJTX0RJUj0iJE9QVEFSRyIKKyAgICAgICAgOzsKKyAgICBuKQorICAgICAgICBOPSIkT1BUQVJHIgorICAgICAgICA7OworICAgIHIpCisgICAgICAgIFJFQ0lQRT0iLXIgJE9QVEFSRyIKKyAgICAgICAgOzsKKyAgICB0KQorICAgICAgICBUQVNLUz0iJE9QVEFSRyIKKyAgICAgICAgOzsKKyAgICBzKQorICAgICAgICBTVEFUUz0iJE9QVEFSRyIKKyAgICAgICAgOzsKKyAgICBhKQorICAgICAgICBBQ0NVTVVMQVRFPSItYSIKKyAgICAgICAgOzsKKyAgICBTKQorICAgICAgICBTVU09InkiCisgICAgICAgIDs7CisgICAgbykKKyAgICAgICAgT1VUREFUQV9GSUxFPSIkT1BUQVJHIgorICAgICAgICA7OworICAgIGgpCisgICAgICAgIHVzYWdlCisgICAgICAgIGV4aXQgMAorICAgICAgICA7OworICAgICopCisgICAgICAgIHVzYWdlCisgICAgICAgIGV4aXQgMQorICAgICAgICA7OworICAgIGVzYWMKIGRvbmUKIAogIyBHZXQgbnVtYmVyIG9mIHN0YXRzCkBAIC0xMDEsMTAgKzExNywxMCBAQAogCiAjIFBhcnNlIGJ1aWxkc3RhdHMgcmVjaXBlcyB0byBwcm9kdWNlIGEgc2luZ2xlIHRhYmxlCiBPVVRCVUlMRFNUQVRTPSIkUFdEL2J1aWxkc3RhdHMubG9nIgotJENEL2J1aWxkc3RhdHMuc2ggLUggLXMgIiRTVEFUUyIgLUggPiAkT1VUQlVJTERTVEFUUworJENEL2J1aWxkc3RhdHMuc2ggLWIgIiRCU19ESVIiIC1zICIkU1RBVFMiIC10ICIkVEFTS1MiICRSRUNJUEUgJEFDQ1VNVUxBVEUgLUggPiAkT1VUQlVJTERTVEFUUwogCiAjIEdldCBoZWFkZXJzCi1IRUFERVJTPSQoY2F0ICRPVVRCVUlMRFNUQVRTIHwgc2VkIC1uIC1lICcxcy8gLy0vZycgLWUgJzFzLzovIC9ncCcpCitIRUFERVJTPSQoY2F0ICRPVVRCVUlMRFNUQVRTIHwgc2VkIC1uIC1lICdzL1woLipcKS8iXDEiLycgLWUgJzFzLyAvXFxcXFxcXFwgL2cnIC1lICdzL18vXFxcXFxcXFxfL2cnIC1lICcxcy86LyIgIi9ncCcpCiAKIGVjaG8gLWUgInNldCBib3h3aWR0aCAwLjkgcmVsYXRpdmUiCiBlY2hvIC1lICJzZXQgc3R5bGUgZGF0YSBoaXN0b2dyYW1zIgpAQCAtMTEzLDcgKzEyOSw3IEBACiAKICMgR2V0IG91dHB1dCBkYXRhCiBpZiBbIC16ICIkU1VNIiBdOyB0aGVuCi0gICAgY2F0ICRPVVRCVUlMRFNUQVRTIHwgc2VkIC1lICcxZCcgfCBzb3J0IC1rMyAtbiAtciB8IGhlYWQgLSROID4gJE9VVERBVEFfRklMRQorICAgIGNhdCAkT1VUQlVJTERTVEFUUyB8IHNlZCAtZSAnMWQnIC1lICdzL18vXFxcXF8vZycgfCBzb3J0IC1rMyAtbiAtciB8IGhlYWQgLSROID4gJE9VVERBVEFfRklMRQogICAgICMgaW5jbHVkZSB0YXNrIGF0IHJlY2lwZSBjb2x1bW4KICAgICBzZWQgLWkgLWUgIjFpXAogJHtIRUFERVJTfSIgJE9VVERBVEFfRklMRQpAQCAtMTI1LDggKzE0MSw4IEBACiAgICAgZGVjbGFyZSAtYSBzdW1hcmdzCiAgICAgaj0wCiAgICAgZm9yIGkgaW4gYHNlcSAkbnN0YXRzYDsgZG8KLQlzdW1hcmdzW2pdPXN1bTsgaj0kKCggJGogKyAxICkpCi0Jc3VtYXJnc1tqXT1gZXhwciAzICsgJGkgLSAxYDsgIGo9JCgoICRqICsgMSApKQorICAgICAgICBzdW1hcmdzW2pdPXN1bTsgaj0kKCggJGogKyAxICkpCisgICAgICAgIHN1bWFyZ3Nbal09YGV4cHIgMyArICRpIC0gMWA7ICBqPSQoKCAkaiArIDEgKSkKICAgICBkb25lCiAKICAgICAjIERvIHRoZSBwcm9jZXNzaW5nIHdpdGggZGF0YW1hc2gKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9jb250cmliL2JiLXBlcmYvYnVpbGRzdGF0cy5zaCBiL3Bva3kvc2NyaXB0cy9jb250cmliL2JiLXBlcmYvYnVpbGRzdGF0cy5zaAppbmRleCBlOWVjMmQ0Li5lNDVjZmMxIDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvY29udHJpYi9iYi1wZXJmL2J1aWxkc3RhdHMuc2gKKysrIGIvcG9reS9zY3JpcHRzL2NvbnRyaWIvYmItcGVyZi9idWlsZHN0YXRzLnNoCkBAIC0zNiw4ICszNiwxMCBAQAogQ2hpbGQgcnVzYWdlIHJ1X25pdmNzdyIKIAogQlNfRElSPSJ0bXAvYnVpbGRzdGF0cyIKK1JFQ0lQRT0iIgogVEFTS1M9ImNvbXBpbGU6Y29uZmlndXJlOmZldGNoOmluc3RhbGw6cGF0Y2g6cG9wdWxhdGVfbGljOnBvcHVsYXRlX3N5c3Jvb3Q6dW5wYWNrIgogU1RBVFM9IiRUSU1FIgorQUNDVU1VTEFURT0iIgogSEVBREVSPSIiICMgTm8gaGVhZGVyIGJ5IGRlZmF1bHQKIAogZnVuY3Rpb24gdXNhZ2UgewpAQCAtNDYsNiArNDgsNyBAQAogVXNhZ2U6ICRDTUQgWy1iIGJ1aWxkc3RhdHNfZGlyXSBbLXQgZG9fdGFza10KICAgLWIgYnVpbGRzdGF0cyBUaGUgcGF0aCB3aGVyZSB0aGUgZm9sZGVyIHJlc2lkZXMKICAgICAgICAgICAgICAgICAoZGVmYXVsdDogIiRCU19ESVIiKQorICAtciByZWNpcGUgICAgIFRoZSByZWNpcGUgdG8gYmUgY29tcHV0ZWQKICAgLXQgdGFza3MgICAgICBUaGUgdGFza3MgdG8gYmUgY29tcHV0ZWQKICAgICAgICAgICAgICAgICAoZGVmYXVsdDogIiRUQVNLUyIpCiAgIC1zIHN0YXRzICAgICAgVGhlIHN0YXRzIHRvIGJlIG1hdGNoZWQuIE9wdGlvbnM6IFRJTUUsIElPLCBSVVNBR0UsIENISUxEX1JVU0FHRQpAQCAtNTYsODcgKzU5LDEwOSBAQAogICAgICAgICAgICAgICAgICAgICBJTz0kSU8KICAgICAgICAgICAgICAgICAgICAgUlVTQUdFPSRSVVNBR0UKICAgICAgICAgICAgICAgICAgICAgQ0hJTERfUlVTQUdFPSRDSElMRF9SVVNBR0UKKyAgLWEgICAgICAgICAgICBBY2N1bXVsYXRlIGFsbCBzdGF0cyB2YWx1ZXMgZm9yIGZvdW5kIHJlY2lwZXMKICAgLWggICAgICAgICAgICBEaXNwbGF5IHRoaXMgaGVscCBtZXNzYWdlCiBFT00KIH0KIAogIyBQYXJzZSBhbmQgdmFsaWRhdGUgYXJndW1lbnRzCi13aGlsZSBnZXRvcHRzICJiOnQ6czpIaCIgT1BUOyBkbwotCWNhc2UgJE9QVCBpbgotCWIpCi0JCUJTX0RJUj0iJE9QVEFSRyIKLQkJOzsKLQl0KQotCQlUQVNLUz0iJE9QVEFSRyIKLQkJOzsKLQlzKQotCQlTVEFUUz0iJE9QVEFSRyIKLQkJOzsKLQlIKQotCSAgICAgICAgSEVBREVSPSJ5IgotCSAgICAgICAgOzsKLQloKQotCQl1c2FnZQotCQlleGl0IDAKLQkJOzsKLQkqKQotCQl1c2FnZQotCQlleGl0IDEKLQkJOzsKLQllc2FjCit3aGlsZSBnZXRvcHRzICJiOnI6dDpzOmFIaCIgT1BUOyBkbworICAgIGNhc2UgJE9QVCBpbgorICAgIGIpCisgICAgICAgIEJTX0RJUj0iJE9QVEFSRyIKKyAgICAgICAgOzsKKyAgICByKQorICAgICAgICBSRUNJUEU9IiRPUFRBUkciCisgICAgICAgIDs7CisgICAgdCkKKyAgICAgICAgVEFTS1M9IiRPUFRBUkciCisgICAgICAgIDs7CisgICAgcykKKyAgICAgICAgU1RBVFM9IiRPUFRBUkciCisgICAgICAgIDs7CisgICAgYSkKKyAgICAgICAgQUNDVU1VTEFURT0ieSIKKyAgICAgICAgOzsKKyAgICBIKQorICAgICAgICBIRUFERVI9InkiCisgICAgICAgIDs7CisgICAgaCkKKyAgICAgICAgdXNhZ2UKKyAgICAgICAgZXhpdCAwCisgICAgICAgIDs7CisgICAgKikKKyAgICAgICAgdXNhZ2UKKyAgICAgICAgZXhpdCAxCisgICAgICAgIDs7CisgICAgZXNhYwogZG9uZQogCiAjIEVuc3VyZSB0aGUgYnVpbGRzdGF0cyBmb2xkZXIgZXhpc3RzCiBpZiBbICEgLWQgIiRCU19ESVIiIF07IHRoZW4KLQllY2hvICJFUlJPUjogJEJTX0RJUiBkb2VzIG5vdCBleGlzdCIKLQl1c2FnZQotCWV4aXQgMQorICAgIGVjaG8gIkVSUk9SOiAkQlNfRElSIGRvZXMgbm90IGV4aXN0IgorICAgIHVzYWdlCisgICAgZXhpdCAxCiBmaQogCiBzdGF0cz0iIgogSUZTPSI6IgogZm9yIHN0YXQgaW4gJHtTVEFUU307IGRvCi0JY2FzZSAkc3RhdCBpbgotCSAgICBUSU1FKQotCQlzdGF0cz0iJHtzdGF0c306JHtUSU1FfSIKLQkJOzsKLQkgICAgSU8pCi0JCXN0YXRzPSIke3N0YXRzfToke0lPfSIKLQkJOzsKLQkgICAgUlVTQUdFKQotCQlzdGF0cz0iJHtzdGF0c306JHtSVVNBR0V9IgotCQk7OwotCSAgICBDSElMRF9SVVNBR0UpCi0JCXN0YXRzPSIke3N0YXRzfToke0NISUxEX1JVU0FHRX0iCi0JCTs7Ci0JICAgICopCi0JCXN0YXRzPSIke1NUQVRTfSIKLQllc2FjCisgICAgY2FzZSAkc3RhdCBpbgorICAgICAgICBUSU1FKQorICAgICAgICAgICAgc3RhdHM9IiR7c3RhdHN9OiR7VElNRX0iCisgICAgICAgICAgICA7OworICAgICAgICBJTykKKyAgICAgICAgICAgIHN0YXRzPSIke3N0YXRzfToke0lPfSIKKyAgICAgICAgICAgIDs7CisgICAgICAgIFJVU0FHRSkKKyAgICAgICAgICAgIHN0YXRzPSIke3N0YXRzfToke1JVU0FHRX0iCisgICAgICAgICAgICA7OworICAgICAgICBDSElMRF9SVVNBR0UpCisgICAgICAgICAgICBzdGF0cz0iJHtzdGF0c306JHtDSElMRF9SVVNBR0V9IgorICAgICAgICAgICAgOzsKKyAgICAgICAgKikKKyAgICAgICAgICAgIHN0YXRzPSIke1NUQVRTfSIKKyAgICAgICAgICAgIDs7CisgICAgZXNhYwogZG9uZQogCiAjIHJlbW92ZSBwb3NzaWJsZSBjb2xvbiBhdCB0aGUgYmVnaW5uaW5nCiBzdGF0cz0iJChlY2hvICIkc3RhdHMiIHwgc2VkIC1lICdzL146Ly8xJykiCiAKICMgUHJvdmlkZSBhIGhlYWRlciBpZiByZXF1aXJlZCBieSB0aGUgdXNlcgotWyAtbiAiJEhFQURFUiIgXSAmJiB7IGVjaG8gInRhc2s6cmVjaXBlOiRzdGF0cyI7IH0KK2lmIFsgLW4gIiRIRUFERVIiIF0gOyB0aGVuCisgICAgaWYgWyAtbiAiJEFDQ1VNVUxBVEUiIF07IHRoZW4KKyAgICAgICAgZWNobyAidGFzazpyZWNpcGU6YWNjdW11bGF0ZWQoJHtzdGF0cy8vOi87fSkiCisgICAgZWxzZQorICAgICAgICBlY2hvICJ0YXNrOnJlY2lwZTokc3RhdHMiCisgICAgZmkKK2ZpCiAKIGZvciB0YXNrIGluICR7VEFTS1N9OyBkbwogICAgIHRhc2s9ImRvXyR7dGFza30iCi0gICAgZm9yIGZpbGUgaW4gJChmaW5kICR7QlNfRElSfSAtdHlwZSBmIC1uYW1lICR7dGFza30gfCBhd2sgJ0JFR0lOeyBPUlM9IiI7IE9GUz0iOiIgfSB7IHByaW50ICQwLCIiIH0nKTsgZG8KKyAgICBmb3IgZmlsZSBpbiAkKGZpbmQgJHtCU19ESVJ9IC10eXBlIGYgLXBhdGggKiR7UkVDSVBFfSovJHt0YXNrfSB8IGF3ayAnQkVHSU57IE9SUz0iIjsgT0ZTPSI6IiB9IHsgcHJpbnQgJDAsIiIgfScpOyBkbwogICAgICAgICByZWNpcGU9IiQoYmFzZW5hbWUgJChkaXJuYW1lICRmaWxlKSkiCi0JdGltZXM9IiIKLQlmb3Igc3RhdCBpbiAke3N0YXRzfTsgZG8KLQkgICAgWyAteiAiJHN0YXQiIF0gJiYgeyBlY2hvICJlbXB0eSBzdGF0cyI7IH0KLQkgICAgdGltZT0kKHNlZCAtbiAtZSAicy9eXCgkc3RhdFwpOiBcXCguKlxcKS9cXDIvcCIgJGZpbGUpCi0JICAgICMgaW4gY2FzZSB0aGUgc3RhdCBpcyBub3QgcHJlc2VudCwgc2V0IHRoZSB2YWx1ZSBhcyBOQQotCSAgICBbIC16ICIkdGltZSIgXSAmJiB7IHRpbWU9Ik5BIjsgfQotCSAgICAjIEFwcGVuZCBpdCB0byB0aW1lcwotCSAgICBpZiBbIC16ICIkdGltZXMiIF07IHRoZW4KLQkJdGltZXM9IiR7dGltZX0iCi0JICAgIGVsc2UKLQkJdGltZXM9IiR7dGltZXN9ICR7dGltZX0iCi0JICAgIGZpCi0JZG9uZQorICAgICAgICB0aW1lcz0iIgorICAgICAgICBmb3Igc3RhdCBpbiAke3N0YXRzfTsgZG8KKyAgICAgICAgICAgIFsgLXogIiRzdGF0IiBdICYmIHsgZWNobyAiZW1wdHkgc3RhdHMiOyB9CisgICAgICAgICAgICB0aW1lPSQoc2VkIC1uIC1lICJzL15cKCRzdGF0XCk6IFxcKC4qXFwpL1xcMi9wIiAkZmlsZSkKKyAgICAgICAgICAgICMgaW4gY2FzZSB0aGUgc3RhdCBpcyBub3QgcHJlc2VudCwgc2V0IHRoZSB2YWx1ZSBhcyBOQQorICAgICAgICAgICAgWyAteiAiJHRpbWUiIF0gJiYgeyB0aW1lPSJOQSI7IH0KKyAgICAgICAgICAgICMgQXBwZW5kIGl0IHRvIHRpbWVzCisgICAgICAgICAgICBpZiBbIC16ICIkdGltZXMiIF07IHRoZW4KKyAgICAgICAgICAgICAgICB0aW1lcz0iJHt0aW1lfSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aW1lcz0iJHt0aW1lc30gJHt0aW1lfSIKKyAgICAgICAgICAgIGZpCisgICAgICAgIGRvbmUKKyAgICAgICAgaWYgWyAtbiAiJEFDQ1VNVUxBVEUiIF07IHRoZW4KKyAgICAgICAgICAgIElGUz0nICc7IHZhbHVlc2FycmF5PSgke3RpbWVzfSk7IElGUz0nOicKKyAgICAgICAgICAgIHRpbWVzPTAKKyAgICAgICAgICAgIGZvciB2YWx1ZSBpbiAiJHt2YWx1ZXNhcnJheVtAXX0iOyBkbworICAgICAgICAgICAgICAgIFsgIiR2YWx1ZSIgPT0gIk5BIiBdICYmIHsgZWNobyAiRVJST1I6IHN0YXQgaXMgbm90IHByZXNlbnQuIjsgdXNhZ2U7IGV4aXQgMTsgfQorICAgICAgICAgICAgICAgIHRpbWVzPSQoKCAkdGltZXMgKyAkdmFsdWUgKSkKKyAgICAgICAgICAgIGRvbmUKKyAgICAgICAgZmkKICAgICAgICAgZWNobyAiJHt0YXNrfSAke3JlY2lwZX0gJHt0aW1lc30iCiAgICAgZG9uZQogZG9uZQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2dlbi1sb2NrZWRzaWctY2FjaGUgYi9wb2t5L3NjcmlwdHMvZ2VuLWxvY2tlZHNpZy1jYWNoZQppbmRleCA5YmZhZTlkLi5jZDhmOWE0IDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvZ2VuLWxvY2tlZHNpZy1jYWNoZQorKysgYi9wb2t5L3NjcmlwdHMvZ2VuLWxvY2tlZHNpZy1jYWNoZQpAQCAtNzgsMTEgKzc4LDE1IEBACiBzc3RhdGVfY29udGVudF9jYWNoZSA9IHt9CiBmb3IgcyBpbiBzaWdzOgogICAgIHByZWZpeCA9IHNbOjJdCisgICAgcHJlZml4MiA9IHNbMjo0XQogICAgIGlmIHByZWZpeCBub3QgaW4gc3N0YXRlX2NvbnRlbnRfY2FjaGU6Ci0gICAgICAgIHNzdGF0ZV9jb250ZW50X2NhY2hlW3ByZWZpeF0gPSBidWlsZF9zaGFfY2FjaGUocHJlZml4KQorICAgICAgICBzc3RhdGVfY29udGVudF9jYWNoZVtwcmVmaXhdID0ge30KKyAgICBpZiBwcmVmaXgyIG5vdCBpbiBzc3RhdGVfY29udGVudF9jYWNoZVtwcmVmaXhdOgorICAgICAgICBzc3RhdGVfY29udGVudF9jYWNoZVtwcmVmaXhdW3ByZWZpeDJdID0gYnVpbGRfc2hhX2NhY2hlKHByZWZpeCArICIvIiArIHByZWZpeDIpCiAKLSAgICBmb3IgZiBpbiBzc3RhdGVfY29udGVudF9jYWNoZVtwcmVmaXhdW3NdOgotICAgICAgICBmaWxlcy5hZGQoZikKKyAgICBpZiBzIGluIHNzdGF0ZV9jb250ZW50X2NhY2hlW3ByZWZpeF1bcHJlZml4Ml06CisgICAgICAgIGZvciBmIGluIHNzdGF0ZV9jb250ZW50X2NhY2hlW3ByZWZpeF1bcHJlZml4Ml1bc106CisgICAgICAgICAgICBmaWxlcy5hZGQoZikKIAogZWxhcHNlZCA9IHRpbWUucGVyZl9jb3VudGVyKCkgLSBzdGFydF90aW1lCiBwcmludCgiR2F0aGVyaW5nIGZpbGUgbGlzdCB0b29rICUuMWZzIiAlIGVsYXBzZWQpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvaW5zdGFsbC1idWlsZHRvb2xzIGIvcG9reS9zY3JpcHRzL2luc3RhbGwtYnVpbGR0b29scwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jNmIzYTFlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9zY3JpcHRzL2luc3RhbGwtYnVpbGR0b29scwpAQCAtMCwwICsxLDMzOSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworCisjIEJ1aWxkdG9vbHMgYW5kIGJ1aWxkdG9vbHMgZXh0ZW5kZWQgaW5zdGFsbGVyIGhlbHBlciBzY3JpcHQKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgSW50ZWwgQ29ycG9yYXRpb24KKyMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQorIworIyAgTk9URTogLS13aXRoLWV4dGVuZGVkLWJ1aWxkdG9vbHMgaXMgb24gYnkgZGVmYXVsdAorIworIyAgRXhhbXBsZSB1c2FnZSAoZXh0ZW5kZWQgYnVpbGR0b29scyBmcm9tIG1pbGVzdG9uZSk6CisjICAgICgxKSB1c2luZyAtLXVybCBhbmQgLS1maWxlbmFtZQorIyAgICAgICAgJCBpbnN0YWxsLWJ1aWxkdG9vbHMgXAorIyAgICAgICAgICAtLXVybCBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMveW9jdG8vbWlsZXN0b25lcy95b2N0by0zLjFfTTMvYnVpbGR0b29scyBcCisjICAgICAgICAgIC0tZmlsZW5hbWUgeDg2XzY0LWJ1aWxkdG9vbHMtZXh0ZW5kZWQtbmF0aXZlc2RrLXN0YW5kYWxvbmUtMy4wK3NuYXBzaG90LTIwMjAwMzE1LnNoCisjICAgICgyKSB1c2luZyAtLWJhc2UtdXJsLCAtLXJlbGVhc2UsIC0taW5zdGFsbGVyLXZlcnNpb24gYW5kIC0tYnVpbGQtZGF0ZQorIyAgICAgICAgJCBpbnN0YWxsLWJ1aWxkdG9vbHMgXAorIyAgICAgICAgICAtLWJhc2UtdXJsIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy95b2N0byBcCisjICAgICAgICAgIC0tcmVsZWFzZSB5b2N0by0zLjFfTTMgXAorIyAgICAgICAgICAtLWluc3RhbGxlci12ZXJzaW9uIDMuMCtzbmFwc2hvdAorIyAgICAgICAgICAtLWJ1aWxkLWRhdGUgMjAyMDAwMzE1CisjCisjICBFeGFtcGxlIHVzYWdlIChzdGFuZGFyZCBidWlsZHRvb2xzIGZyb20gcmVsZWFzZSk6CisjICAgICgzKSB1c2luZyAtLXVybCBhbmQgLS1maWxlbmFtZQorIyAgICAgICAgJCBpbnN0YWxsLWJ1aWxkdG9vbHMgLS13aXRob3V0LWV4dGVuZGVkLWJ1aWxkdG9vbHMgXAorIyAgICAgICAgICAtLXVybCBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMveW9jdG8veW9jdG8tMy4wLjIvYnVpbGR0b29scyBcCisjICAgICAgICAgIC0tZmlsZW5hbWUgeDg2XzY0LWJ1aWxkdG9vbHMtbmF0aXZlc2RrLXN0YW5kYWxvbmUtMy4wLjIuc2gKKyMgICAgKDQpIHVzaW5nIC0tYmFzZS11cmwsIC0tcmVsZWFzZSBhbmQgLS1pbnN0YWxsZXItdmVyc2lvbgorIyAgICAgICAgJCBpbnN0YWxsLWJ1aWxkdG9vbHMgLS13aXRob3V0LWV4dGVuZGVkLWJ1aWxkdG9vbHMgXAorIyAgICAgICAgICAtLWJhc2UtdXJsIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy95b2N0byBcCisjICAgICAgICAgIC0tcmVsZWFzZSB5b2N0by0zLjAuMiBcCisjICAgICAgICAgIC0taW5zdGFsbGVyLXZlcnNpb24gMy4wLjIKKyMKKworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzaGxleAoraW1wb3J0IHN0YXQKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKK2Zyb20gdXJsbGliLnBhcnNlIGltcG9ydCBxdW90ZQorCitzY3JpcHRzX3BhdGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpCitsaWJfcGF0aCA9IHNjcmlwdHNfcGF0aCArICcvbGliJworc3lzLnBhdGggPSBzeXMucGF0aCArIFtsaWJfcGF0aF0KK2ltcG9ydCBzY3JpcHR1dGlscworaW1wb3J0IHNjcmlwdHBhdGgKKworCitQUk9HTkFNRSA9ICdpbnN0YWxsLWJ1aWxkdG9vbHMnCitsb2dnZXIgPSBzY3JpcHR1dGlscy5sb2dnZXJfY3JlYXRlKFBST0dOQU1FLCBzdHJlYW09c3lzLnN0ZG91dCkKKworREVGQVVMVF9JTlNUQUxMX0RJUiA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KHNjcmlwdHNfcGF0aClbMF0sJ2J1aWxkdG9vbHMnKQorREVGQVVMVF9CQVNFX1VSTCA9ICdodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMveW9jdG8nCitERUZBVUxUX1JFTEVBU0UgPSAneW9jdG8tMy4xJworREVGQVVMVF9JTlNUQUxMRVJfVkVSU0lPTiA9ICczLjEnCitERUZBVUxUX0JVSUxEREFURSA9ICcnCisKKyMgUHl0aG9uIHZlcnNpb24gc2FuaXR5IGNoZWNrCitpZiBub3QgKHN5cy52ZXJzaW9uX2luZm8ubWFqb3IgPT0gMyBhbmQgc3lzLnZlcnNpb25faW5mby5taW5vciA+PSA0KToKKyAgICBsb2dnZXIuZXJyb3IoIlRoaXMgc2NyaXB0IHJlcXVpcmVzIFB5dGhvbiAzLjQgb3IgZ3JlYXRlciIpCisgICAgbG9nZ2VyLmVycm9yKCJZb3UgaGF2ZSBQeXRob24gJXMuJXMiICUKKwkgIChzeXMudmVyc2lvbl9pbmZvLm1ham9yLCBzeXMudmVyc2lvbl9pbmZvLm1pbm9yKSkKKyAgICBzeXMuZXhpdCgxKQorCisjIFRoZSBmb2xsb3dpbmcgdGhyZWUgZnVuY3Rpb25zIGFyZSBjb3BpZWQgZGlyZWN0bHkgZnJvbQorIyBiaXRiYWtlL2xpYi9iYi91dGlscy5weSwgaW4gb3JkZXIgdG8gYWxsb3cgdGhpcyBzY3JpcHQKKyMgdG8gcnVuIG9uIHZlcnNpb25zIG9mIHB5dGhvbiBlYXJsaWVyIHRoYW4gd2hhdCBiaXRiYWtlCisjIHN1cHBvcnRzIChlLmcuIGxlc3MgdGhhbiBQeXRob24gMy41IGZvciBZUCAzLjEgcmVsZWFzZSkKKworZGVmIF9oYXNoZXIobWV0aG9kLCBmaWxlbmFtZSk6CisgICAgaW1wb3J0IG1tYXAKKworICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBtbWFwLm1tYXAoZi5maWxlbm8oKSwgMCwgYWNjZXNzPW1tYXAuQUNDRVNTX1JFQUQpIGFzIG1tOgorICAgICAgICAgICAgICAgIGZvciBjaHVuayBpbiBpdGVyKGxhbWJkYTogbW0ucmVhZCg4MTkyKSwgYicnKToKKyAgICAgICAgICAgICAgICAgICAgbWV0aG9kLnVwZGF0ZShjaHVuaykKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAjIFlvdSBjYW4ndCBtbWFwKCkgYW4gZW1wdHkgZmlsZSBzbyBzaWxlbmNlIHRoaXMgZXhjZXB0aW9uCisgICAgICAgICAgICBwYXNzCisgICAgcmV0dXJuIG1ldGhvZC5oZXhkaWdlc3QoKQorCisKK2RlZiBtZDVfZmlsZShmaWxlbmFtZSk6CisgICAgIiIiCisgICAgUmV0dXJuIHRoZSBoZXggc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBNRDUgY2hlY2tzdW0gb2YgZmlsZW5hbWUuCisgICAgIiIiCisgICAgaW1wb3J0IGhhc2hsaWIKKyAgICByZXR1cm4gX2hhc2hlcihoYXNobGliLm1kNSgpLCBmaWxlbmFtZSkKKworZGVmIHNoYTI1Nl9maWxlKGZpbGVuYW1lKToKKyAgICAiIiIKKyAgICBSZXR1cm4gdGhlIGhleCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIDI1Ni1iaXQgU0hBIGNoZWNrc3VtIG9mCisgICAgZmlsZW5hbWUuCisgICAgIiIiCisgICAgaW1wb3J0IGhhc2hsaWIKKyAgICByZXR1cm4gX2hhc2hlcihoYXNobGliLnNoYTI1NigpLCBmaWxlbmFtZSkKKworCitkZWYgbWFpbigpOgorICAgIGdsb2JhbCBERUZBVUxUX0lOU1RBTExfRElSCisgICAgZ2xvYmFsIERFRkFVTFRfQkFTRV9VUkwKKyAgICBnbG9iYWwgREVGQVVMVF9SRUxFQVNFCisgICAgZ2xvYmFsIERFRkFVTFRfSU5TVEFMTEVSX1ZFUlNJT04KKyAgICBnbG9iYWwgREVGQVVMVF9CVUlMRERBVEUKKyAgICBmaWxlbmFtZSA9ICIiCisgICAgcmVsZWFzZSA9ICIiCisgICAgYnVpbGR0b29sc191cmwgPSAiIgorICAgIGluc3RhbGxfZGlyID0gIiIKKworICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAorICAgICAgICBkZXNjcmlwdGlvbj0iQnVpbGR0b29scyBpbnN0YWxsYXRpb24gaGVscGVyIiwKKyAgICAgICAgYWRkX2hlbHA9RmFsc2UpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXUnLCAnLS11cmwnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nVVJMIGZyb20gd2hlcmUgdG8gZmV0Y2ggYnVpbGR0b29scyBTREsgaW5zdGFsbGVyLCBub3QgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkaW5nIGZpbGVuYW1lIChvcHRpb25hbClcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1JlcXVpcmVzIC0tZmlsZW5hbWUuJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1mJywgJy0tZmlsZW5hbWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZmlsZW5hbWUgZm9yIHRoZSBidWlsZHRvb2xzIFNESyBpbnN0YWxsZXIgdG8gYmUgaW5zdGFsbGVkICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhvcHRpb25hbClcblJlcXVpcmVzIC0tdXJsJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1kJywgJy0tZGlyZWN0b3J5JywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9REVGQVVMVF9JTlNUQUxMX0RJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2RpcmVjdG9yeSB3aGVyZSBidWlsZHRvb2xzIFNESyB3aWxsIGJlIGluc3RhbGxlZCAob3B0aW9uYWwpJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1yJywgJy0tcmVsZWFzZScsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PURFRkFVTFRfUkVMRUFTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1lvY3RvIFByb2plY3QgcmVsZWFzZSBzdHJpbmcgZm9yIFNESyB3aGljaCB3aWxsIGJlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luc3RhbGxlZCAob3B0aW9uYWwpJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1WJywgJy0taW5zdGFsbGVyLXZlcnNpb24nLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1ERUZBVUxUX0lOU1RBTExFUl9WRVJTSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndmVyc2lvbiBzdHJpbmcgZm9yIHRoZSBTREsgdG8gYmUgaW5zdGFsbGVkIChvcHRpb25hbCknLAorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWInLCAnLS1iYXNlLXVybCcsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PURFRkFVTFRfQkFTRV9VUkwsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdiYXNlIFVSTCBmcm9tIHdoaWNoIHRvIGZldGNoIFNESyAob3B0aW9uYWwpJywgYWN0aW9uPSdzdG9yZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXQnLCAnLS1idWlsZC1kYXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9REVGQVVMVF9CVUlMRERBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdCdWlsZCBkYXRlIG9mIHByZS1yZWxlYXNlIFNESyAob3B0aW9uYWwpJywgYWN0aW9uPSdzdG9yZScpCisgICAgZ3JvdXAgPSBwYXJzZXIuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cCgpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXdpdGgtZXh0ZW5kZWQtYnVpbGR0b29scycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3dpdGhfZXh0ZW5kZWRfYnVpbGR0b29scycsCisgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZW5hYmxlIGV4dGVuZGVkIGJ1aWxkdG9vbHMgdGFyYmFsbCAob24gYnkgZGVmYXVsdCknKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS13aXRob3V0LWV4dGVuZGVkLWJ1aWxkdG9vbHMnLCBhY3Rpb249J3N0b3JlX2ZhbHNlJywKKyAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nd2l0aF9leHRlbmRlZF9idWlsZHRvb2xzJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlzYWJsZSBleHRlbmRlZCBidWlsZHRvb2xzICh0cmFkaXRpb25hbCBidWlsZHRvb2xzIHRhcmJhbGwpJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYycsICctLWNoZWNrJywgaGVscD0nZW5hYmxlIG1kNSBjaGVja3N1bSBjaGVja2luZycsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1EJywgJy0tZGVidWcnLCBoZWxwPSdlbmFibGUgZGVidWcgb3V0cHV0JywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXEnLCAnLS1xdWlldCcsIGhlbHA9J3ByaW50IG9ubHkgZXJyb3JzJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCisKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctaCcsICctLWhlbHAnLCBhY3Rpb249J2hlbHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1hcmdwYXJzZS5TVVBQUkVTUywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3Nob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQnKQorCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIGlmIGFyZ3MuZGVidWc6CisgICAgICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLkRFQlVHKQorICAgIGVsaWYgYXJncy5xdWlldDoKKyAgICAgICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuRVJST1IpCisKKyAgICBpZiBhcmdzLnVybCBhbmQgYXJncy5maWxlbmFtZToKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCItLXVybCBhbmQgLS1maWxlbmFtZSBkZXRlY3RlZC4gSWdub3JpbmcgLS1iYXNlLXVybCAiCisgICAgICAgICAgICAgICAgICAgICAiLS1yZWxlYXNlIC0taW5zdGFsbGVyLXZlcnNpb24gIGFyZ3VtZW50cy4iKQorICAgICAgICBmaWxlbmFtZSA9IGFyZ3MuZmlsZW5hbWUKKyAgICAgICAgYnVpbGR0b29sc191cmwgPSAiJXMvJXMiICUgKGFyZ3MudXJsLCBmaWxlbmFtZSkKKyAgICBlbHNlOgorICAgICAgICBpZiBhcmdzLmJhc2VfdXJsOgorICAgICAgICAgICAgYmFzZV91cmwgPSBhcmdzLmJhc2VfdXJsCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiYXNlX3VybCA9IERFRkFVTFRfQkFTRV9VUkwKKyAgICAgICAgaWYgYXJncy5yZWxlYXNlOgorICAgICAgICAgICAgIyBjaGVjayBpZiB0aGlzIGlzIGEgcHJlLXJlbGVhc2UgIm1pbGVzdG9uZSIgU0RLCisgICAgICAgICAgICBtID0gcmUuc2VhcmNoKHIiXig/UDxkaXN0cm8+W2EtekEtWlwtXSspKD9QPHZlcnNpb24+WzAtOS5dKykoP1A8bWlsZXN0b25lPl9NWzEtOV0pJCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MucmVsZWFzZSkKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygibWlsZXN0b25lIHJlZ2V4OiAlcyIgJSBtKQorICAgICAgICAgICAgaWYgbSBhbmQgbS5ncm91cCgnbWlsZXN0b25lJyk6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJyZWxlYXNlW2Rpc3Ryb106ICVzIiAlIG0uZ3JvdXAoJ2Rpc3RybycpKQorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygicmVsZWFzZVt2ZXJzaW9uXTogJXMiICUgbS5ncm91cCgndmVyc2lvbicpKQorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygicmVsZWFzZVttaWxlc3RvbmVdOiAlcyIgJSBtLmdyb3VwKCdtaWxlc3RvbmUnKSkKKyAgICAgICAgICAgICAgICBpZiBub3QgYXJncy5idWlsZF9kYXRlOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIk1pbGVzdG9uZSBpbnN0YWxsZXJzIHJlcXVpcmUgLS1idWlsZC1kYXRlIikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiBhcmdzLndpdGhfZXh0ZW5kZWRfYnVpbGR0b29sczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gIng4Nl82NC1idWlsZHRvb2xzLWV4dGVuZGVkLW5hdGl2ZXNkay1zdGFuZGFsb25lLSVzLSVzLnNoIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLmluc3RhbGxlcl92ZXJzaW9uLCBhcmdzLmJ1aWxkX2RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9ICJ4ODZfNjQtYnVpbGR0b29scy1uYXRpdmVzZGstc3RhbmRhbG9uZS0lcy0lcy5zaCIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5pbnN0YWxsZXJfdmVyc2lvbiwgYXJncy5idWlsZF9kYXRlKQorICAgICAgICAgICAgICAgICAgICBzYWZlX2ZpbGVuYW1lID0gcXVvdGUoZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkdG9vbHNfdXJsID0gIiVzL21pbGVzdG9uZXMvJXMvYnVpbGR0b29scy8lcyIgJSAoYmFzZV91cmwsIGFyZ3MucmVsZWFzZSwgc2FmZV9maWxlbmFtZSkKKyAgICAgICAgICAgICMgcmVndWxhciByZWxlYXNlIFNESworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBhcmdzLndpdGhfZXh0ZW5kZWRfYnVpbGR0b29sczoKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSAieDg2XzY0LWJ1aWxkdG9vbHMtZXh0ZW5kZWQtbmF0aXZlc2RrLXN0YW5kYWxvbmUtJXMuc2giICUgYXJncy5pbnN0YWxsZXJfdmVyc2lvbgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gIng4Nl82NC1idWlsZHRvb2xzLW5hdGl2ZXNkay1zdGFuZGFsb25lLSVzLnNoIiAlIGFyZ3MuaW5zdGFsbGVyX3ZlcnNpb24KKyAgICAgICAgICAgICAgICBzYWZlX2ZpbGVuYW1lID0gcXVvdGUoZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgYnVpbGR0b29sc191cmwgPSAiJXMvJXMvYnVpbGR0b29scy8lcyIgJSAoYmFzZV91cmwsIGFyZ3MucmVsZWFzZSwgc2FmZV9maWxlbmFtZSkKKworICAgIHRtcHNka19kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICB0cnk6CisgICAgICAgICMgRmV0Y2ggaW5zdGFsbGVyCisgICAgICAgIGxvZ2dlci5pbmZvKCJGZXRjaGluZyBidWlsZHRvb2xzIGluc3RhbGxlciIpCisgICAgICAgIHRtcGJ1aWxkdG9vbHMgPSBvcy5wYXRoLmpvaW4odG1wc2RrX2RpciwgZmlsZW5hbWUpCisgICAgICAgIHJldCA9IHN1YnByb2Nlc3MuY2FsbCgid2dldCAtcSAtTyAlcyAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRtcGJ1aWxkdG9vbHMsIGJ1aWxkdG9vbHNfdXJsKSwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgaWYgcmV0ICE9IDA6CisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNvdWxkIG5vdCBkb3dubG9hZCBmaWxlIGZyb20gJXMiICUgYnVpbGR0b29sc191cmwpCisgICAgICAgICAgICByZXR1cm4gcmV0CisKKyAgICAgICAgIyBWZXJpZnkgY2hlY2tzdW0KKyAgICAgICAgaWYgYXJncy5jaGVjazoKKyAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJGZXRjaGluZyBidWlsZHRvb2xzIGluc3RhbGxlciBjaGVja3N1bSIpCisgICAgICAgICAgICBjaGVja3N1bV90eXBlID0gIiIKKyAgICAgICAgICAgIGZvciBjaGVja3N1bV90eXBlIGluIFsibWQ1c3VtIiwgInNoYTI1NiJdOgorICAgICAgICAgICAgICAgIGNoZWNrX3VybCA9ICJ7fS57fSIuZm9ybWF0KGJ1aWxkdG9vbHNfdXJsLCBjaGVja3N1bV90eXBlKQorICAgICAgICAgICAgICAgIGNoZWNrc3VtX2ZpbGVuYW1lID0gInt9Lnt9Ii5mb3JtYXQoZmlsZW5hbWUsIGNoZWNrc3VtX3R5cGUpCisgICAgICAgICAgICAgICAgdG1wYnVpbGR0b29sc19jaGVja3N1bSA9IG9zLnBhdGguam9pbih0bXBzZGtfZGlyLCBjaGVja3N1bV9maWxlbmFtZSkKKyAgICAgICAgICAgICAgICByZXQgPSBzdWJwcm9jZXNzLmNhbGwoIndnZXQgLXEgLU8gJXMgJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRtcGJ1aWxkdG9vbHNfY2hlY2tzdW0sIGNoZWNrX3VybCksIHNoZWxsPVRydWUpCisgICAgICAgICAgICAgICAgaWYgcmV0ID09IDA6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIHJldCAhPSAwOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNvdWxkIG5vdCBkb3dubG9hZCBmaWxlIGZyb20gJXMiICUgY2hlY2tfdXJsKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0CisgICAgICAgICAgICByZWdleCA9IHJlLmNvbXBpbGUociJeKD9QPGNoZWNrc3VtPlswLTlhLWZdKylcc1xzKD9QPHBhdGg+LiovKT8oP1A8ZmlsZW5hbWU+LiopJCIpCisgICAgICAgICAgICB3aXRoIG9wZW4odG1wYnVpbGR0b29sc19jaGVja3N1bSwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgICAgICBvcmlnaW5hbCA9IGYucmVhZCgpCisgICAgICAgICAgICAgICAgbSA9IHJlLnNlYXJjaChyZWdleCwgb3JpZ2luYWwuZGVjb2RlKCJ1dGYtOCIpKQorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiY2hlY2tzdW0gcmVnZXggbWF0Y2g6ICVzIiAlIG0pCisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJjaGVja3N1bTogJXMiICUgbS5ncm91cCgnY2hlY2tzdW0nKSkKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoInBhdGg6ICVzIiAlIG0uZ3JvdXAoJ3BhdGgnKSkKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoImZpbGVuYW1lOiAlcyIgJSBtLmdyb3VwKCdmaWxlbmFtZScpKQorICAgICAgICAgICAgICAgIGlmIGZpbGVuYW1lICE9IG0uZ3JvdXAoJ2ZpbGVuYW1lJyk6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRmlsZW5hbWUgZG9lcyBub3QgbWF0Y2ggbmFtZSBpbiBjaGVja3N1bSIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgICAgICAgICAgY2hlY2tzdW0gPSBtLmdyb3VwKCdjaGVja3N1bScpCisgICAgICAgICAgICBpZiBjaGVja3N1bV90eXBlID09ICJtZDVzdW0iOgorICAgICAgICAgICAgICAgIGNoZWNrc3VtX3ZhbHVlID0gbWQ1X2ZpbGUodG1wYnVpbGR0b29scykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY2hlY2tzdW1fdmFsdWUgPSBzaGEyNTZfZmlsZSh0bXBidWlsZHRvb2xzKQorICAgICAgICAgICAgaWYgY2hlY2tzdW0gPT0gY2hlY2tzdW1fdmFsdWU6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJDaGVja3N1bSBzdWNjZXNzIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJDaGVja3N1bSAlcyBleHBlY3RlZC4gQWN0dWFsIGNoZWNrc3VtIGlzICVzLiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hlY2tzdW0sIGNoZWNrc3VtX3ZhbHVlKSkKKworICAgICAgICAjIE1ha2UgaW5zdGFsbGVyIGV4ZWN1dGFibGUKKyAgICAgICAgbG9nZ2VyLmluZm8oIk1ha2luZyBpbnN0YWxsZXIgZXhlY3V0YWJsZSIpCisgICAgICAgIHN0ID0gb3Muc3RhdCh0bXBidWlsZHRvb2xzKQorICAgICAgICBvcy5jaG1vZCh0bXBidWlsZHRvb2xzLCBzdC5zdF9tb2RlIHwgc3RhdC5TX0lFWEVDKQorICAgICAgICBsb2dnZXIuZGVidWcob3Muc3RhdCh0bXBidWlsZHRvb2xzKSkKKyAgICAgICAgaWYgYXJncy5kaXJlY3Rvcnk6CisgICAgICAgICAgICBpbnN0YWxsX2RpciA9IGFyZ3MuZGlyZWN0b3J5CisgICAgICAgICAgICByZXQgPSBzdWJwcm9jZXNzLmNhbGwoIiVzIC1kICVzIC15IiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRtcGJ1aWxkdG9vbHMsIGluc3RhbGxfZGlyKSwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGluc3RhbGxfZGlyID0gIi9vcHQvcG9reS8lcyIgJSBhcmdzLmluc3RhbGxlcl92ZXJzaW9uCisgICAgICAgICAgICByZXQgPSBzdWJwcm9jZXNzLmNhbGwoIiVzIC15IiAlIHRtcGJ1aWxkdG9vbHMsIHNoZWxsPVRydWUpCisgICAgICAgIGlmIHJldCAhPSAwOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJDb3VsZCBub3QgcnVuIGJ1aWxkdG9vbHMgaW5zdGFsbGVyIikKKworICAgICAgICAjIFNldHVwIHRoZSBlbnZpcm9ubWVudAorICAgICAgICBsb2dnZXIuaW5mbygiU2V0dGluZyB1cCB0aGUgZW52aXJvbm1lbnQiKQorICAgICAgICByZWdleCA9IHJlLmNvbXBpbGUocideKD9QPGV4cG9ydD5leHBvcnQgKT8oP1A8ZW52X3Zhcj5bQS1aX10rKT0oP1A8ZW52X3ZhbD4uKykkJykKKyAgICAgICAgd2l0aCBvcGVuKCIlcy9lbnZpcm9ubWVudC1zZXR1cC14ODZfNjQtcG9reXNkay1saW51eCIgJQorICAgICAgICAgICAgICAgICAgaW5zdGFsbF9kaXIsICdyYicpIGFzIGY6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgIG1hdGNoID0gcmVnZXguc2VhcmNoKGxpbmUuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiZXhwb3J0IHJlZ2V4OiAlcyIgJSBtYXRjaCkKKyAgICAgICAgICAgICAgICBpZiBtYXRjaDoKKyAgICAgICAgICAgICAgICAgICAgZW52X3ZhciA9IG1hdGNoLmdyb3VwKCdlbnZfdmFyJykKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJlbnZfdmFyOiAlcyIgJSBlbnZfdmFyKQorICAgICAgICAgICAgICAgICAgICBlbnZfdmFsID0gbWF0Y2guZ3JvdXAoJ2Vudl92YWwnKQorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoImVudl92YWw6ICVzIiAlIGVudl92YWwpCisgICAgICAgICAgICAgICAgICAgIG9zLmVudmlyb25bZW52X3Zhcl0gPSBlbnZfdmFsCisKKyAgICAgICAgIyBUZXN0IGluc3RhbGxhdGlvbgorICAgICAgICBsb2dnZXIuaW5mbygiVGVzdGluZyBpbnN0YWxsYXRpb24iKQorICAgICAgICB0b29sID0gIiIKKyAgICAgICAgbSA9IHJlLnNlYXJjaCgiZXh0ZW5kZWQiLCB0bXBidWlsZHRvb2xzKQorICAgICAgICBsb2dnZXIuZGVidWcoImV4dGVuZGVkIHJlZ2V4OiAlcyIgJSBtKQorICAgICAgICBpZiBhcmdzLndpdGhfZXh0ZW5kZWRfYnVpbGR0b29scyBhbmQgbm90IG06CisgICAgICAgICAgICBsb2dnZXIuaW5mbygiSWdub3JpbmcgLS13aXRoLWV4dGVuZGVkLWJ1aWxkdG9vbHMgYXMgZmlsZW5hbWUgIgorICAgICAgICAgICAgICAgICAgICAgICAgImRvZXMgbm90IGNvbnRhaW4gJ2V4dGVuZGVkJyIpCisgICAgICAgIGlmIGFyZ3Mud2l0aF9leHRlbmRlZF9idWlsZHRvb2xzIGFuZCBtOgorICAgICAgICAgICAgdG9vbCA9ICdnY2MnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0b29sID0gJ3RhcicKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCJpbnN0YWxsX2RpcjogJXMiICUgaW5zdGFsbF9kaXIpCisgICAgICAgIGNtZCA9IHNobGV4LnNwbGl0KCIvdXNyL2Jpbi93aGljaCAlcyIgJSB0b29sKQorICAgICAgICBsb2dnZXIuZGVidWcoImNtZDogJXMiICUgY21kKQorICAgICAgICBsb2dnZXIuZGVidWcoInRvb2w6ICVzIiAlIHRvb2wpCisgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgb3V0cHV0LCBlcnJvcnMgPSBwcm9jLmNvbW11bmljYXRlKCkKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCJwcm9jLmFyZ3M6ICVzIiAlIHByb2MuYXJncykKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCJwcm9jLmNvbW11bmljYXRlKCk6IG91dHB1dCAlcyIgJSBvdXRwdXQpCisgICAgICAgIGxvZ2dlci5kZWJ1ZygicHJvYy5jb21tdW5pY2F0ZSgpOiBlcnJvcnMgJXMiICUgZXJyb3JzKQorICAgICAgICB3aGljaF90b29sID0gb3V0cHV0LmRlY29kZSgndXRmLTgnKQorICAgICAgICBsb2dnZXIuZGVidWcoIndoaWNoICVzOiAlcyIgJSAodG9vbCwgd2hpY2hfdG9vbCkpCisgICAgICAgIHJldCA9IHByb2MucmV0dXJuY29kZQorICAgICAgICBpZiBub3Qgd2hpY2hfdG9vbC5zdGFydHN3aXRoKGluc3RhbGxfZGlyKToKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiU29tZXRoaW5nIHdlbnQgd3Jvbmc6ICVzIG5vdCBmb3VuZCBpbiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICh0b29sLCBpbnN0YWxsX2RpcikpCisgICAgICAgIGlmIHJldCAhPSAwOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJTb21ldGhpbmcgd2VudCB3cm9uZzogaW5zdGFsbGF0aW9uIGZhaWxlZCIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2dnZXIuaW5mbygiSW5zdGFsbGF0aW9uIHN1Y2Nlc3NmdWwuIFJlbWVtYmVyIHRvIHNvdXJjZSB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgImVudmlyb25tZW50IHNldHVwIHNjcmlwdCBub3cgYW5kIGluIGFueSBuZXcgc2Vzc2lvbi4iKQorICAgICAgICByZXR1cm4gcmV0CisKKyAgICBmaW5hbGx5OgorICAgICAgICAjIGNsZWFudXAgdG1wIGRpcmVjdG9yeQorICAgICAgICBzaHV0aWwucm10cmVlKHRtcHNka19kaXIpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0cnk6CisgICAgICAgIHJldCA9IG1haW4oKQorICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHJldCA9IDEKKyAgICAgICAgaW1wb3J0IHRyYWNlYmFjaworCisgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQorICAgIHN5cy5leGl0KHJldCkKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weSBiL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weQppbmRleCAxYzBjZDhhLi5iYWI2NDRiIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvc3RhbmRhcmQucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3N0YW5kYXJkLnB5CkBAIC0xNDUsOCArMTQ1LDggQEAKICAgICAgICAgZXh0cmFjbWRvcHRzICs9ICcgLS1zcmMtc3ViZGlyICIlcyInICUgYXJncy5zcmNfc3ViZGlyCiAgICAgaWYgYXJncy5hdXRvcmV2OgogICAgICAgICBleHRyYWNtZG9wdHMgKz0gJyAtYScKLSAgICBpZiBhcmdzLmZldGNoX2RldjoKLSAgICAgICAgZXh0cmFjbWRvcHRzICs9ICcgLS1mZXRjaC1kZXYnCisgICAgaWYgYXJncy5ucG1fZGV2OgorICAgICAgICBleHRyYWNtZG9wdHMgKz0gJyAtLW5wbS1kZXYnCiAgICAgaWYgYXJncy5taXJyb3JzOgogICAgICAgICBleHRyYWNtZG9wdHMgKz0gJyAtLW1pcnJvcnMnCiAgICAgaWYgYXJncy5zcmNyZXY6CkBAIC0yNjAsMTQgKzI2MCwxMCBAQAogICAgICAgICAgICAgICAgIGYud3JpdGUoJ31cbicpCiAKICAgICAgICAgICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25wbScsIHJkKToKLSAgICAgICAgICAgICAgICBmLndyaXRlKCdkb19pbnN0YWxsX2FwcGVuZCgpIHtcbicpCi0gICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICMgUmVtb3ZlIGZpbGVzIGFkZGVkIHRvIHNvdXJjZSBkaXIgYnkgZGV2dG9vbC9leHRlcm5hbHNyY1xuJykKLSAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgcm0gLWYgJHtOUE1fSU5TVEFMTERJUn0vc2luZ2xldGFzay5sb2NrXG4nKQotICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICBybSAtcmYgJHtOUE1fSU5TVEFMTERJUn0vLmdpdFxuJykKLSAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgcm0gLXJmICR7TlBNX0lOU1RBTExESVJ9L29lLWxvY2FsLWZpbGVzXG4nKQotICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICBmb3Igc3ltbGluayBpbiAke0VYVEVSTkFMU1JDX1NZTUxJTktTfSA7IGRvXG4nKQotICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgcm0gLWYgJHtOUE1fSU5TVEFMTERJUn0vJHtzeW1saW5rJSU6Kn1cbicpCi0gICAgICAgICAgICAgICAgZi53cml0ZSgnICAgIGRvbmVcbicpCisgICAgICAgICAgICAgICAgZi53cml0ZSgncHl0aG9uIGRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7XG4nKQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICBwa2dkaXIgPSBkLmdldFZhcigiTlBNX1BBQ0tBR0UiKVxuJykKKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgbG9ja2ZpbGUgPSBvcy5wYXRoLmpvaW4ocGtnZGlyLCAic2luZ2xldGFzay5sb2NrIilcbicpCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgIGJiLnV0aWxzLnJlbW92ZShsb2NrZmlsZSlcbicpCiAgICAgICAgICAgICAgICAgZi53cml0ZSgnfVxuJykKIAogICAgICAgICAjIENoZWNrIGlmIHRoZSBuZXcgbGF5ZXIgcHJvdmlkZXMgcmVjaXBlcyB3aG9zZSBwcmlvcml0aWVzIGhhdmUgYmVlbgpAQCAtOTQwLDggKzkzNiwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgJ31cbicpCiAgICAgICAgICAgICBpZiByZC5nZXRWYXJGbGFnKCdkb19tZW51Y29uZmlnJywndGFzaycpOgogICAgICAgICAgICAgICAgIGYud3JpdGUoJ1xuZG9fY29uZmlndXJlX2FwcGVuZCgpIHtcbicKLSAgICAgICAgICAgICAgICAnICAgIGNwICR7Qn0vLmNvbmZpZyAke1N9Ly5jb25maWcuYmFzZWxpbmVcbicKLSAgICAgICAgICAgICAgICAnICAgIGxuIC1zZlQgJHtCfS8uY29uZmlnICR7U30vLmNvbmZpZy5uZXdcbicKKyAgICAgICAgICAgICAgICAnICAgIGlmIFsgISAke0RFVlRPT0xfRElTQUJMRV9NRU5VQ09ORklHfSBdOyB0aGVuXG4nCisgICAgICAgICAgICAgICAgJyAgICAgICAgY3AgJHtCfS8uY29uZmlnICR7U30vLmNvbmZpZy5iYXNlbGluZVxuJworICAgICAgICAgICAgICAgICcgICAgICAgIGxuIC1zZlQgJHtCfS8uY29uZmlnICR7U30vLmNvbmZpZy5uZXdcbicKKyAgICAgICAgICAgICAgICAnICAgIGZpXG4nCiAgICAgICAgICAgICAgICAgJ31cbicpCiAgICAgICAgICAgICBpZiBpbml0aWFsX3JldjoKICAgICAgICAgICAgICAgICBmLndyaXRlKCdcbiMgaW5pdGlhbF9yZXY6ICVzXG4nICUgaW5pdGlhbF9yZXYpCkBAIC0yMTk3LDcgKzIxOTUsNyBAQAogICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1zYW1lLWRpcicsICctcycsIGhlbHA9J0J1aWxkIGluIHNhbWUgZGlyZWN0b3J5IGFzIHNvdXJjZScsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCiAgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLW5vLXNhbWUtZGlyJywgaGVscD0nRm9yY2UgYnVpbGQgaW4gYSBzZXBhcmF0ZSBidWlsZCBkaXJlY3RvcnknLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAgIHBhcnNlcl9hZGQuYWRkX2FyZ3VtZW50KCctLWZldGNoJywgJy1mJywgaGVscD0nRmV0Y2ggdGhlIHNwZWNpZmllZCBVUkkgYW5kIGV4dHJhY3QgaXQgdG8gY3JlYXRlIHRoZSBzb3VyY2UgdHJlZSAoZGVwcmVjYXRlZCAtIHBhc3MgYXMgcG9zaXRpb25hbCBhcmd1bWVudCBpbnN0ZWFkKScsIG1ldGF2YXI9J1VSSScpCi0gICAgcGFyc2VyX2FkZC5hZGRfYXJndW1lbnQoJy0tZmV0Y2gtZGV2JywgaGVscD0nRm9yIG5wbSwgYWxzbyBmZXRjaCBkZXZEZXBlbmRlbmNpZXMnLCBhY3Rpb249InN0b3JlX3RydWUiKQorICAgIHBhcnNlcl9hZGQuYWRkX2FyZ3VtZW50KCctLW5wbS1kZXYnLCBoZWxwPSdGb3IgbnBtLCBhbHNvIGZldGNoIGRldkRlcGVuZGVuY2llcycsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCiAgICAgcGFyc2VyX2FkZC5hZGRfYXJndW1lbnQoJy0tdmVyc2lvbicsICctVicsIGhlbHA9J1ZlcnNpb24gdG8gdXNlIHdpdGhpbiByZWNpcGUgKFBWKScpCiAgICAgcGFyc2VyX2FkZC5hZGRfYXJndW1lbnQoJy0tbm8tZ2l0JywgJy1nJywgaGVscD0nSWYgZmV0Y2hpbmcgc291cmNlLCBkbyBub3Qgc2V0IHVwIHNvdXJjZSB0cmVlIGFzIGEgZ2l0IHJlcG9zaXRvcnknLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAgIGdyb3VwID0gcGFyc2VyX2FkZC5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKCkKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGUucHkgYi9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlLnB5CmluZGV4IDRjNGJiYWQuLjZjYmY0ZGUgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGUucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZS5weQpAQCAtNDc3LDggKzQ3Nyw2IEBACiAgICAgICAgICAgICBzdG9yZVRhZ05hbWUgPSBwYXJhbXNbJ3RhZyddCiAgICAgICAgICAgICBwYXJhbXNbJ25vYnJhbmNoJ10gPSAnMScKICAgICAgICAgICAgIGRlbCBwYXJhbXNbJ3RhZyddCi0gICAgICAgIGlmIHNjaGVtZSA9PSAnbnBtJzoKLSAgICAgICAgICAgIHBhcmFtc1snbm92ZXJpZnknXSA9ICcxJwogICAgICAgICBmZXRjaHVyaSA9IGJiLmZldGNoMi5lbmNvZGV1cmwoKHNjaGVtZSwgbmV0d29yaywgcGF0aCwgdXNlciwgcGFzc3dkLCBwYXJhbXMpKQogCiAgICAgICAgIHRtcHBhcmVudCA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdCQVNFX1dPUktESVInKQpAQCAtNzE0LDEwICs3MTIsOCBAQAogICAgICAgICBsaW5lc19hZnRlci5hcHBlbmQoJ0lOU0FORV9TS0lQXyR7UE59ICs9ICJhbHJlYWR5LXN0cmlwcGVkIicpCiAgICAgICAgIGxpbmVzX2FmdGVyLmFwcGVuZCgnJykKIAotICAgIGlmIGFyZ3MuZmV0Y2hfZGV2OgotICAgICAgICBleHRyYXZhbHVlc1snZmV0Y2hkZXYnXSA9IFRydWUKLSAgICBlbHNlOgotICAgICAgICBleHRyYXZhbHVlc1snZmV0Y2hkZXYnXSA9IE5vbmUKKyAgICBpZiBhcmdzLm5wbV9kZXY6CisgICAgICAgIGV4dHJhdmFsdWVzWydOUE1fSU5TVEFMTF9ERVYnXSA9IDEKIAogICAgICMgRmluZCBhbGwgcGx1Z2lucyB0aGF0IHdhbnQgdG8gcmVnaXN0ZXIgaGFuZGxlcnMKICAgICBsb2dnZXIuZGVidWcoJ0xvYWRpbmcgcmVjaXBlIGhhbmRsZXJzJykKQEAgLTEzMTMsNyArMTMwOSw3IEBACiAgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctUycsICctLXNyY3JldicsIGhlbHA9J1NvdXJjZSByZXZpc2lvbiB0byBmZXRjaCBpZiBmZXRjaGluZyBmcm9tIGFuIFNDTSBzdWNoIGFzIGdpdCAoZGVmYXVsdCBsYXRlc3QpJykKICAgICBwYXJzZXJfY3JlYXRlLmFkZF9hcmd1bWVudCgnLUInLCAnLS1zcmNicmFuY2gnLCBoZWxwPSdCcmFuY2ggaW4gc291cmNlIHJlcG9zaXRvcnkgaWYgZmV0Y2hpbmcgZnJvbSBhbiBTQ00gc3VjaCBhcyBnaXQgKGRlZmF1bHQgbWFzdGVyKScpCiAgICAgcGFyc2VyX2NyZWF0ZS5hZGRfYXJndW1lbnQoJy0ta2VlcC10ZW1wJywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0nS2VlcCB0ZW1wb3JhcnkgZGlyZWN0b3J5IChmb3IgZGVidWdnaW5nKScpCi0gICAgcGFyc2VyX2NyZWF0ZS5hZGRfYXJndW1lbnQoJy0tZmV0Y2gtZGV2JywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0nRm9yIG5wbSwgYWxzbyBmZXRjaCBkZXZEZXBlbmRlbmNpZXMnKQorICAgIHBhcnNlcl9jcmVhdGUuYWRkX2FyZ3VtZW50KCctLW5wbS1kZXYnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdGb3IgbnBtLCBhbHNvIGZldGNoIGRldkRlcGVuZGVuY2llcycpCiAgICAgcGFyc2VyX2NyZWF0ZS5hZGRfYXJndW1lbnQoJy0tZGV2dG9vbCcsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9YXJncGFyc2UuU1VQUFJFU1MpCiAgICAgcGFyc2VyX2NyZWF0ZS5hZGRfYXJndW1lbnQoJy0tbWlycm9ycycsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9J0VuYWJsZSBQUkVNSVJST1JTIGFuZCBNSVJST1JTIGZvciBzb3VyY2UgdHJlZSBmZXRjaGluZyAoZGlzYWJsZWQgYnkgZGVmYXVsdCkuJykKICAgICBwYXJzZXJfY3JlYXRlLnNldF9kZWZhdWx0cyhmdW5jPWNyZWF0ZV9yZWNpcGUpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX2J1aWxkc3lzLnB5IGIvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9idWlsZHN5cy5weQppbmRleCAzY2IwMjc2Li4zNWE5N2M5IDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX2J1aWxkc3lzLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfYnVpbGRzeXMucHkKQEAgLTIyNiw5ICsyMjYsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBwa2cgPT0gJ1BrZ0NvbmZpZyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdHMuYXBwZW5kKCdwa2djb25maWcnKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBwa2cgPT0gJ1B5dGhvbkludGVycCc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdHMuYXBwZW5kKCdweXRob25uYXRpdmUnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRzLmFwcGVuZCgncHl0aG9uM25hdGl2ZScpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIHBrZyA9PSAnUHl0aG9uTGlicyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdHMuYXBwZW5kKCdweXRob24tZGlyJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0cy5hcHBlbmQoJ3B5dGhvbjMtZGlyJykKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUcnkgdG8gbWFwIHZpYSBsb29raW5nIGF0IGluc3RhbGxlZCBDTWFrZSBwYWNrYWdlcyBpbiBwa2dkYXRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwID0gZmluZF9jbWFrZV9wYWNrYWdlKHBrZykKQEAgLTQxNyw3ICs0MTcsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgcHJvZ2NsYXNzbWFwID0geydnY29uZnRvb2wtMic6ICdnY29uZicsCiAgICAgICAgICAgICAgICAgJ3BrZy1jb25maWcnOiAncGtnY29uZmlnJywKLSAgICAgICAgICAgICAgICAncHl0aG9uJzogJ3B5dGhvbm5hdGl2ZScsCisgICAgICAgICAgICAgICAgJ3B5dGhvbic6ICdweXRob24zbmF0aXZlJywKICAgICAgICAgICAgICAgICAncHl0aG9uMyc6ICdweXRob24zbmF0aXZlJywKICAgICAgICAgICAgICAgICAncGVybCc6ICdwZXJsbmF0aXZlJywKICAgICAgICAgICAgICAgICAnbWFrZWluZm8nOiAndGV4aW5mbycsCkBAIC01NjYsMTYgKzU2Niw3IEBACiAgICAgICAgICAgICBlbGlmIGtleXdvcmQgPT0gJ0FYX1BST0dfWFNMVFBST0MnOgogICAgICAgICAgICAgICAgIGRlcHMuYXBwZW5kKCdsaWJ4c2x0LW5hdGl2ZScpCiAgICAgICAgICAgICBlbGlmIGtleXdvcmQgaW4gWydBQ19QWVRIT05fREVWRUwnLCAnQVhfUFlUSE9OX0RFVkVMJywgJ0FNX1BBVEhfUFlUSE9OJ106Ci0gICAgICAgICAgICAgICAgcHl0aG9uY2xhc3MgPSAncHl0aG9ubmF0aXZlJwotICAgICAgICAgICAgICAgIHJlcyA9IHZlcnNpb25fcmUuc2VhcmNoKHZhbHVlKQotICAgICAgICAgICAgICAgIGlmIHJlczoKLSAgICAgICAgICAgICAgICAgICAgaWYgcmVzLmdyb3VwKDEpLnN0YXJ0c3dpdGgoJzMnKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHB5dGhvbmNsYXNzID0gJ3B5dGhvbjNuYXRpdmUnCi0gICAgICAgICAgICAgICAgIyBBdm9pZCByZXBsYWNpbmcgcHl0aG9uM25hdGl2ZSB3aXRoIHB5dGhvbm5hdGl2ZQotICAgICAgICAgICAgICAgIGlmIG5vdCBweXRob25jbGFzcyBpbiBpbmhlcml0cyBhbmQgbm90ICdweXRob24zbmF0aXZlJyBpbiBpbmhlcml0czoKLSAgICAgICAgICAgICAgICAgICAgaWYgJ3B5dGhvbm5hdGl2ZScgaW4gaW5oZXJpdHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0cy5yZW1vdmUoJ3B5dGhvbm5hdGl2ZScpCi0gICAgICAgICAgICAgICAgICAgIGluaGVyaXRzLmFwcGVuZChweXRob25jbGFzcykKKyAgICAgICAgICAgICAgICBweXRob25jbGFzcyA9ICdweXRob24zbmF0aXZlJwogICAgICAgICAgICAgZWxpZiBrZXl3b3JkID09ICdBWF9XSVRIX0NVUlNFUyc6CiAgICAgICAgICAgICAgICAgZGVwcy5hcHBlbmQoJ25jdXJzZXMnKQogICAgICAgICAgICAgZWxpZiBrZXl3b3JkID09ICdBWF9QQVRIX0JEQic6CmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX25wbS5weSBiL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfbnBtLnB5CmluZGV4IDM5NDI5ZWIuLjU3OWI3YWUgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfbnBtLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfbnBtLnB5CkBAIC0xLDMyMSArMSwyNTUgQEAKLSMgUmVjaXBlIGNyZWF0aW9uIHRvb2wgLSBub2RlLmpzIE5QTSBtb2R1bGUgc3VwcG9ydCBwbHVnaW4KLSMKICMgQ29weXJpZ2h0IChDKSAyMDE2IEludGVsIENvcnBvcmF0aW9uCisjIENvcHlyaWdodCAoQykgMjAyMCBTYXZvaXItRmFpcmUgTGludXgKICMKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIworIiIiUmVjaXBlIGNyZWF0aW9uIHRvb2wgLSBucG0gbW9kdWxlIHN1cHBvcnQgcGx1Z2luIiIiCiAKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgdGVtcGZpbGUKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBqc29uCi1mcm9tIHJlY2lwZXRvb2wuY3JlYXRlIGltcG9ydCBSZWNpcGVIYW5kbGVyLCBzcGxpdF9wa2dfbGljZW5zZXMsIGhhbmRsZV9saWNlbnNlX3ZhcnMKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBiYgorZnJvbSBiYi5mZXRjaDIubnBtIGltcG9ydCBOcG1FbnZpcm9ubWVudAorZnJvbSBiYi5mZXRjaDIubnBtc3cgaW1wb3J0IGZvcmVhY2hfZGVwZW5kZW5jaWVzCitmcm9tIHJlY2lwZXRvb2wuY3JlYXRlIGltcG9ydCBSZWNpcGVIYW5kbGVyCitmcm9tIHJlY2lwZXRvb2wuY3JlYXRlIGltcG9ydCBndWVzc19saWNlbnNlCitmcm9tIHJlY2lwZXRvb2wuY3JlYXRlIGltcG9ydCBzcGxpdF9wa2dfbGljZW5zZXMKIAotbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ3JlY2lwZXRvb2wnKQotCi0KLXRpbmZvaWwgPSBOb25lCitUSU5GT0lMID0gTm9uZQogCiBkZWYgdGluZm9pbF9pbml0KGluc3RhbmNlKToKLSAgICBnbG9iYWwgdGluZm9pbAotICAgIHRpbmZvaWwgPSBpbnN0YW5jZQotCisgICAgIiIiSW5pdGlhbGl6ZSB0aW5mb2lsIiIiCisgICAgZ2xvYmFsIFRJTkZPSUwKKyAgICBUSU5GT0lMID0gaW5zdGFuY2UKIAogY2xhc3MgTnBtUmVjaXBlSGFuZGxlcihSZWNpcGVIYW5kbGVyKToKLSAgICBsb2NrZG93bnBhdGggPSBOb25lCisgICAgIiIiQ2xhc3MgdG8gaGFuZGxlIHRoZSBucG0gcmVjaXBlIGNyZWF0aW9uIiIiCiAKLSAgICBkZWYgX2Vuc3VyZV9ucG0oc2VsZiwgZml4ZWRfc2V0dXA9RmFsc2UpOgotICAgICAgICBpZiBub3QgdGluZm9pbC5yZWNpcGVzX3BhcnNlZDoKLSAgICAgICAgICAgIHRpbmZvaWwucGFyc2VfcmVjaXBlcygpCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfbnBtX25hbWUobmFtZSk6CisgICAgICAgICIiIkdlbmVyYXRlIGEgWW9jdG8gZnJpZW5kbHkgbnBtIG5hbWUiIiIKKyAgICAgICAgbmFtZSA9IHJlLnN1YigiLyIsICItIiwgbmFtZSkKKyAgICAgICAgbmFtZSA9IG5hbWUubG93ZXIoKQorICAgICAgICBuYW1lID0gcmUuc3ViKHIiW15cLWEtejAtOV0iLCAiIiwgbmFtZSkKKyAgICAgICAgbmFtZSA9IG5hbWUuc3RyaXAoIi0iKQorICAgICAgICByZXR1cm4gbmFtZQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfZ2V0X3JlZ2lzdHJ5KGxpbmVzKToKKyAgICAgICAgIiIiR2V0IHRoZSByZWdpc3RyeSB2YWx1ZSBmcm9tIHRoZSAnbnBtOi8vcmVnaXN0cnknIHVybCIiIgorICAgICAgICByZWdpc3RyeSA9IE5vbmUKKworICAgICAgICBkZWYgX2hhbmRsZV9yZWdpc3RyeSh2YXJuYW1lLCBvcmlndmFsdWUsIG9wLCBuZXdsaW5lcyk6CisgICAgICAgICAgICBub25sb2NhbCByZWdpc3RyeQorICAgICAgICAgICAgaWYgb3JpZ3ZhbHVlLnN0YXJ0c3dpdGgoIm5wbTovLyIpOgorICAgICAgICAgICAgICAgIHJlZ2lzdHJ5ID0gcmUuc3ViKHIiXm5wbTovLyIsICJodHRwOi8vIiwgb3JpZ3ZhbHVlLnNwbGl0KCI7IilbMF0pCisgICAgICAgICAgICByZXR1cm4gb3JpZ3ZhbHVlLCBOb25lLCAwLCBUcnVlCisKKyAgICAgICAgYmIudXRpbHMuZWRpdF9tZXRhZGF0YShsaW5lcywgWyJTUkNfVVJJIl0sIF9oYW5kbGVfcmVnaXN0cnkpCisKKyAgICAgICAgcmV0dXJuIHJlZ2lzdHJ5CisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9lbnN1cmVfbnBtKCk6CisgICAgICAgICIiIkNoZWNrIGlmIHRoZSAnbnBtJyBjb21tYW5kIGlzIGF2YWlsYWJsZSBpbiB0aGUgcmVjaXBlcyIiIgorICAgICAgICBpZiBub3QgVElORk9JTC5yZWNpcGVzX3BhcnNlZDoKKyAgICAgICAgICAgIFRJTkZPSUwucGFyc2VfcmVjaXBlcygpCisKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmQgPSB0aW5mb2lsLnBhcnNlX3JlY2lwZSgnbm9kZWpzLW5hdGl2ZScpCisgICAgICAgICAgICBkID0gVElORk9JTC5wYXJzZV9yZWNpcGUoIm5vZGVqcy1uYXRpdmUiKQogICAgICAgICBleGNlcHQgYmIucHJvdmlkZXJzLk5vUHJvdmlkZXI6Ci0gICAgICAgICAgICBpZiBmaXhlZF9zZXR1cDoKLSAgICAgICAgICAgICAgICBtc2cgPSAnbm9kZWpzLW5hdGl2ZSBpcyByZXF1aXJlZCBmb3IgbnBtIGJ1dCBpcyBub3QgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIFNESycKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbXNnID0gJ25vZGVqcy1uYXRpdmUgaXMgcmVxdWlyZWQgZm9yIG5wbSBidXQgaXMgbm90IGF2YWlsYWJsZSAtIHlvdSB3aWxsIGxpa2VseSBuZWVkIHRvIGFkZCBhIGxheWVyIHRoYXQgcHJvdmlkZXMgbm9kZWpzJwotICAgICAgICAgICAgbG9nZ2VyLmVycm9yKG1zZykKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGJpbmRpciA9IHJkLmdldFZhcignU1RBR0lOR19CSU5ESVJfTkFUSVZFJykKLSAgICAgICAgbnBtcGF0aCA9IG9zLnBhdGguam9pbihiaW5kaXIsICducG0nKQorICAgICAgICAgICAgYmIuZXJyb3IoIk5vdGhpbmcgcHJvdmlkZXMgJ25vZGVqcy1uYXRpdmUnIHdoaWNoIGlzIHJlcXVpcmVkIGZvciB0aGUgYnVpbGQiKQorICAgICAgICAgICAgYmIubm90ZSgiWW91IHdpbGwgbGlrZWx5IG5lZWQgdG8gYWRkIGEgbGF5ZXIgdGhhdCBwcm92aWRlcyBub2RlanMiKQorICAgICAgICAgICAgc3lzLmV4aXQoMTQpCisKKyAgICAgICAgYmluZGlyID0gZC5nZXRWYXIoIlNUQUdJTkdfQklORElSX05BVElWRSIpCisgICAgICAgIG5wbXBhdGggPSBvcy5wYXRoLmpvaW4oYmluZGlyLCAibnBtIikKKwogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobnBtcGF0aCk6Ci0gICAgICAgICAgICB0aW5mb2lsLmJ1aWxkX3RhcmdldHMoJ25vZGVqcy1uYXRpdmUnLCAnYWRkdG9fcmVjaXBlX3N5c3Jvb3QnKQorICAgICAgICAgICAgVElORk9JTC5idWlsZF90YXJnZXRzKCJub2RlanMtbmF0aXZlIiwgImFkZHRvX3JlY2lwZV9zeXNyb290IikKKwogICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG5wbXBhdGgpOgotICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcignbnBtIHJlcXVpcmVkIHRvIHByb2Nlc3Mgc3BlY2lmaWVkIHNvdXJjZSwgYnV0IG5vZGVqcy1uYXRpdmUgZGlkIG5vdCBzZWVtIHRvIHBvcHVsYXRlIGl0JykKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgICAgIGJiLmVycm9yKCJGYWlsZWQgdG8gYWRkICducG0nIHRvIHN5c3Jvb3QiKQorICAgICAgICAgICAgICAgIHN5cy5leGl0KDE0KQorCiAgICAgICAgIHJldHVybiBiaW5kaXIKIAotICAgIGRlZiBfaGFuZGxlX2xpY2Vuc2Uoc2VsZiwgZGF0YSk6Ci0gICAgICAgICcnJwotICAgICAgICBIYW5kbGUgdGhlIGxpY2Vuc2UgdmFsdWUgZnJvbSBhbiBucG0gcGFja2FnZS5qc29uIGZpbGUKLSAgICAgICAgJycnCi0gICAgICAgIGxpY2Vuc2UgPSBOb25lCi0gICAgICAgIGlmICdsaWNlbnNlJyBpbiBkYXRhOgotICAgICAgICAgICAgbGljZW5zZSA9IGRhdGFbJ2xpY2Vuc2UnXQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShsaWNlbnNlLCBkaWN0KToKLSAgICAgICAgICAgICAgICBsaWNlbnNlID0gbGljZW5zZS5nZXQoJ3R5cGUnLCBOb25lKQotICAgICAgICAgICAgaWYgbGljZW5zZToKLSAgICAgICAgICAgICAgICBpZiAnT1InIGluIGxpY2Vuc2U6Ci0gICAgICAgICAgICAgICAgICAgIGxpY2Vuc2UgPSBsaWNlbnNlLnJlcGxhY2UoJ09SJywgJ3wnKQotICAgICAgICAgICAgICAgICAgICBsaWNlbnNlID0gbGljZW5zZS5yZXBsYWNlKCdBTkQnLCAnJicpCi0gICAgICAgICAgICAgICAgICAgIGxpY2Vuc2UgPSBsaWNlbnNlLnJlcGxhY2UoJyAnLCAnXycpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaWNlbnNlWzBdID09ICcoJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2UgPSAnKCcgKyBsaWNlbnNlICsgJyknCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbGljZW5zZSA9IGxpY2Vuc2UucmVwbGFjZSgnQU5EJywgJyYnKQotICAgICAgICAgICAgICAgICAgICBpZiBsaWNlbnNlWzBdID09ICcoJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2UgPSBsaWNlbnNlWzE6XQotICAgICAgICAgICAgICAgICAgICBpZiBsaWNlbnNlWy0xXSA9PSAnKSc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaWNlbnNlID0gbGljZW5zZVs6LTFdCi0gICAgICAgICAgICAgICAgbGljZW5zZSA9IGxpY2Vuc2UucmVwbGFjZSgnTUlUL1gxMScsICdNSVQnKQotICAgICAgICAgICAgICAgIGxpY2Vuc2UgPSBsaWNlbnNlLnJlcGxhY2UoJ1B1YmxpYyBEb21haW4nLCAnUEQnKQotICAgICAgICAgICAgICAgIGxpY2Vuc2UgPSBsaWNlbnNlLnJlcGxhY2UoJ1NFRSBMSUNFTlNFIElOIEVVTEEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NFRS1MSUNFTlNFLUlOLUVVTEEnKQotICAgICAgICByZXR1cm4gbGljZW5zZQorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX25wbV9nbG9iYWxfY29uZmlncyhkZXYpOgorICAgICAgICAiIiJHZXQgdGhlIG5wbSBnbG9iYWwgY29uZmlndXJhdGlvbiIiIgorICAgICAgICBjb25maWdzID0gW10KIAotICAgIGRlZiBfc2hyaW5rd3JhcChzZWxmLCBzcmN0cmVlLCBsb2NhbGZpbGVzZGlyLCBleHRyYXZhbHVlcywgbGluZXNfYmVmb3JlLCBkKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcnVuZW52ID0gZGljdChvcy5lbnZpcm9uLCBQQVRIPWQuZ2V0VmFyKCdQQVRIJykpCi0gICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bignbnBtIHNocmlua3dyYXAnLCBjd2Q9c3JjdHJlZSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBlbnY9cnVuZW52LCBzaGVsbD1UcnVlKQotICAgICAgICBleGNlcHQgYmIucHJvY2Vzcy5FeGVjdXRpb25FcnJvciBhcyBlOgotICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ25wbSBzaHJpbmt3cmFwIGZhaWxlZDpcbiVzJyAlIGUuc3Rkb3V0KQotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGRldjoKKyAgICAgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgiYWxzbyIsICJkZXZlbG9wbWVudCIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29uZmlncy5hcHBlbmQoKCJvbmx5IiwgInByb2R1Y3Rpb24iKSkKIAotICAgICAgICB0bXBmaWxlID0gb3MucGF0aC5qb2luKGxvY2FsZmlsZXNkaXIsICducG0tc2hyaW5rd3JhcC5qc29uJykKLSAgICAgICAgc2h1dGlsLm1vdmUob3MucGF0aC5qb2luKHNyY3RyZWUsICducG0tc2hyaW5rd3JhcC5qc29uJyksIHRtcGZpbGUpCi0gICAgICAgIGV4dHJhdmFsdWVzLnNldGRlZmF1bHQoJ2V4dHJhZmlsZXMnLCB7fSkKLSAgICAgICAgZXh0cmF2YWx1ZXNbJ2V4dHJhZmlsZXMnXVsnbnBtLXNocmlua3dyYXAuanNvbiddID0gdG1wZmlsZQotICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCdOUE1fU0hSSU5LV1JBUCA6PSAiJHtUSElTRElSfS8ke1BOfS9ucG0tc2hyaW5rd3JhcC5qc29uIicpCisgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgic2F2ZSIsICJmYWxzZSIpKQorICAgICAgICBjb25maWdzLmFwcGVuZCgoInBhY2thZ2UtbG9jayIsICJmYWxzZSIpKQorICAgICAgICBjb25maWdzLmFwcGVuZCgoInNocmlua3dyYXAiLCAiZmFsc2UiKSkKKyAgICAgICAgcmV0dXJuIGNvbmZpZ3MKIAotICAgIGRlZiBfbG9ja2Rvd24oc2VsZiwgc3JjdHJlZSwgbG9jYWxmaWxlc2RpciwgZXh0cmF2YWx1ZXMsIGxpbmVzX2JlZm9yZSwgZCk6Ci0gICAgICAgIHJ1bmVudiA9IGRpY3Qob3MuZW52aXJvbiwgUEFUSD1kLmdldFZhcignUEFUSCcpKQotICAgICAgICBpZiBub3QgTnBtUmVjaXBlSGFuZGxlci5sb2NrZG93bnBhdGg6Ci0gICAgICAgICAgICBOcG1SZWNpcGVIYW5kbGVyLmxvY2tkb3ducGF0aCA9IHRlbXBmaWxlLm1rZHRlbXAoJ3JlY2lwZXRvb2wtbnBtLWxvY2tkb3duJykKLSAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCducG0gaW5zdGFsbCBsb2NrZG93biAtLXByZWZpeCAlcycgJSBOcG1SZWNpcGVIYW5kbGVyLmxvY2tkb3ducGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD1zcmN0cmVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsIGVudj1ydW5lbnYsIHNoZWxsPVRydWUpCi0gICAgICAgIHJlbG9ja2JpbiA9IG9zLnBhdGguam9pbihOcG1SZWNpcGVIYW5kbGVyLmxvY2tkb3ducGF0aCwgJ25vZGVfbW9kdWxlcycsICdsb2NrZG93bicsICdyZWxvY2suanMnKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocmVsb2NrYmluKToKLSAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdDb3VsZCBub3QgZmluZCByZWxvY2suanMgd2l0aGluIGxvY2tkb3duIGRpcmVjdG9yeTsgc2tpcHBpbmcgbG9ja2Rvd24nKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCdub2RlICVzJyAlIHJlbG9ja2JpbiwgY3dkPXNyY3RyZWUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgZW52PXJ1bmVudiwgc2hlbGw9VHJ1ZSkKLSAgICAgICAgZXhjZXB0IGJiLnByb2Nlc3MuRXhlY3V0aW9uRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdsb2NrZG93bi1yZWxvY2sgZmFpbGVkOlxuJXMnICUgZS5zdGRvdXQpCi0gICAgICAgICAgICByZXR1cm4KKyAgICBkZWYgX3J1bl9ucG1faW5zdGFsbChzZWxmLCBkLCBzcmN0cmVlLCByZWdpc3RyeSwgZGV2KToKKyAgICAgICAgIiIiUnVuIHRoZSAnbnBtIGluc3RhbGwnIGNvbW1hbmQgd2l0aG91dCBidWlsZGluZyB0aGUgYWRkb25zIiIiCisgICAgICAgIGNvbmZpZ3MgPSBzZWxmLl9ucG1fZ2xvYmFsX2NvbmZpZ3MoZGV2KQorICAgICAgICBjb25maWdzLmFwcGVuZCgoImlnbm9yZS1zY3JpcHRzIiwgInRydWUiKSkKIAotICAgICAgICB0bXBmaWxlID0gb3MucGF0aC5qb2luKGxvY2FsZmlsZXNkaXIsICdsb2NrZG93bi5qc29uJykKLSAgICAgICAgc2h1dGlsLm1vdmUob3MucGF0aC5qb2luKHNyY3RyZWUsICdsb2NrZG93bi5qc29uJyksIHRtcGZpbGUpCi0gICAgICAgIGV4dHJhdmFsdWVzLnNldGRlZmF1bHQoJ2V4dHJhZmlsZXMnLCB7fSkKLSAgICAgICAgZXh0cmF2YWx1ZXNbJ2V4dHJhZmlsZXMnXVsnbG9ja2Rvd24uanNvbiddID0gdG1wZmlsZQotICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCdOUE1fTE9DS0RPV04gOj0gIiR7VEhJU0RJUn0vJHtQTn0vbG9ja2Rvd24uanNvbiInKQorICAgICAgICBpZiByZWdpc3RyeToKKyAgICAgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgicmVnaXN0cnkiLCByZWdpc3RyeSkpCiAKLSAgICBkZWYgX2hhbmRsZV9kZXBlbmRlbmNpZXMoc2VsZiwgZCwgZGVwcywgb3B0ZGVwcywgZGV2ZGVwcywgbGluZXNfYmVmb3JlLCBzcmN0cmVlKToKLSAgICAgICAgaW1wb3J0IHNjcmlwdHV0aWxzCi0gICAgICAgICMgSWYgdGhpcyBpc24ndCBhIHNpbmdsZSBtb2R1bGUgd2UgbmVlZCB0byBnZXQgdGhlIGRlcGVuZGVuY2llcwotICAgICAgICAjIGFuZCBhZGQgdGhlbSB0byBTUkNfVVJJCi0gICAgICAgIGRlZiB2YXJmdW5jKHZhcm5hbWUsIG9yaWd2YWx1ZSwgb3AsIG5ld2xpbmVzKToKLSAgICAgICAgICAgIGlmIHZhcm5hbWUgPT0gJ1NSQ19VUkknOgotICAgICAgICAgICAgICAgIGlmIG5vdCBvcmlndmFsdWUuc3RhcnRzd2l0aCgnbnBtOi8vJyk6Ci0gICAgICAgICAgICAgICAgICAgIHNyY191cmkgPSBvcmlndmFsdWUuc3BsaXQoKQotICAgICAgICAgICAgICAgICAgICBkZXBsaXN0ID0ge30KLSAgICAgICAgICAgICAgICAgICAgZm9yIGRlcCwgZGVwdmVyIGluIG9wdGRlcHMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlcGRhdGEgPSBzZWxmLmdldF9ucG1fZGF0YShkZXAsIGRlcHZlciwgZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuY2hlY2tfbnBtX29wdGlvbmFsX2RlcGVuZGVuY3koZGVwZGF0YSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwbGlzdFtkZXBdID0gZGVwZGF0YQotICAgICAgICAgICAgICAgICAgICBmb3IgZGVwLCBkZXB2ZXIgaW4gZGV2ZGVwcy5pdGVtcygpOgotICAgICAgICAgICAgICAgICAgICAgICAgZGVwZGF0YSA9IHNlbGYuZ2V0X25wbV9kYXRhKGRlcCwgZGVwdmVyLCBkKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5jaGVja19ucG1fb3B0aW9uYWxfZGVwZW5kZW5jeShkZXBkYXRhKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBsaXN0W2RlcF0gPSBkZXBkYXRhCi0gICAgICAgICAgICAgICAgICAgIGZvciBkZXAsIGRlcHZlciBpbiBkZXBzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXBkYXRhID0gc2VsZi5nZXRfbnBtX2RhdGEoZGVwLCBkZXB2ZXIsIGQpCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXBsaXN0W2RlcF0gPSBkZXBkYXRhCisgICAgICAgIGJiLnV0aWxzLnJlbW92ZShvcy5wYXRoLmpvaW4oc3JjdHJlZSwgIm5vZGVfbW9kdWxlcyIpLCByZWN1cnNlPVRydWUpCiAKLSAgICAgICAgICAgICAgICAgICAgZXh0cmFfdXJscyA9IFtdCi0gICAgICAgICAgICAgICAgICAgIGZvciBkZXAsIGRlcGRhdGEgaW4gZGVwbGlzdC5pdGVtcygpOgotICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IGRlcGRhdGEuZ2V0KCd2ZXJzaW9uJywgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHZlcnNpb246Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztuYW1lPSVzO3ZlcnNpb249JXM7c3ViZGlyPW5vZGVfbW9kdWxlcy8lcycgJSAoZGVwLCB2ZXJzaW9uLCBkZXApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfdXJscy5hcHBlbmQodXJsKQotICAgICAgICAgICAgICAgICAgICBpZiBleHRyYV91cmxzOgotICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0dXRpbHMuZmV0Y2hfdXJsKHRpbmZvaWwsICcgJy5qb2luKGV4dHJhX3VybHMpLCBOb25lLCBzcmN0cmVlLCBsb2dnZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICBzcmNfdXJpLmV4dGVuZChleHRyYV91cmxzKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNyY191cmksIE5vbmUsIC0xLCBUcnVlCi0gICAgICAgICAgICByZXR1cm4gb3JpZ3ZhbHVlLCBOb25lLCAwLCBUcnVlCi0gICAgICAgIHVwZGF0ZWQsIG5ld2xpbmVzID0gYmIudXRpbHMuZWRpdF9tZXRhZGF0YShsaW5lc19iZWZvcmUsIFsnU1JDX1VSSSddLCB2YXJmdW5jKQotICAgICAgICBpZiB1cGRhdGVkOgotICAgICAgICAgICAgZGVsIGxpbmVzX2JlZm9yZVs6XQotICAgICAgICAgICAgZm9yIGxpbmUgaW4gbmV3bGluZXM6Ci0gICAgICAgICAgICAgICAgIyBIYWNrIHRvIGF2b2lkIG5ld2xpbmVzIHRoYXQgZWRpdF9tZXRhZGF0YSBpbnNlcnRzCi0gICAgICAgICAgICAgICAgaWYgbGluZS5lbmRzd2l0aCgnXG4nKToKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbOi0xXQotICAgICAgICAgICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQobGluZSkKLSAgICAgICAgcmV0dXJuIHVwZGF0ZWQKKyAgICAgICAgZW52ID0gTnBtRW52aXJvbm1lbnQoZCwgY29uZmlncz1jb25maWdzKQorICAgICAgICBlbnYucnVuKCJucG0gaW5zdGFsbCIsIHdvcmtkaXI9c3JjdHJlZSkKKworICAgIGRlZiBfZ2VuZXJhdGVfc2hyaW5rd3JhcChzZWxmLCBkLCBzcmN0cmVlLCBkZXYpOgorICAgICAgICAiIiJDaGVjayBhbmQgZ2VuZXJhdGUgdGhlICducG0tc2hyaW5rd3JhcC5qc29uJyBmaWxlIGlmIG5lZWRlZCIiIgorICAgICAgICBjb25maWdzID0gc2VsZi5fbnBtX2dsb2JhbF9jb25maWdzKGRldikKKworICAgICAgICBlbnYgPSBOcG1FbnZpcm9ubWVudChkLCBjb25maWdzPWNvbmZpZ3MpCisgICAgICAgIGVudi5ydW4oIm5wbSBzaHJpbmt3cmFwIiwgd29ya2Rpcj1zcmN0cmVlKQorCisgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc3JjdHJlZSwgIm5wbS1zaHJpbmt3cmFwLmpzb24iKQorCisgICAgZGVmIF9oYW5kbGVfbGljZW5zZXMoc2VsZiwgc3JjdHJlZSwgc2hyaW5rd3JhcF9maWxlLCBkZXYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGV4dHJhIGxpY2Vuc2UgZmlsZXMgYW5kIHRoZSBsaXN0IG9mIHBhY2thZ2VzIiIiCisgICAgICAgIGxpY2ZpbGVzID0gW10KKyAgICAgICAgcGFja2FnZXMgPSB7fQorCisgICAgICAgIGRlZiBfbGljZmlsZXNfYXBwZW5kKGxpY2ZpbGUpOgorICAgICAgICAgICAgIiIiQXBwZW5kICdsaWNmaWxlJyB0byB0aGUgbGljZW5zZSBmaWxlcyBsaXN0IiIiCisgICAgICAgICAgICBsaWNmaWxlcGF0aCA9IG9zLnBhdGguam9pbihzcmN0cmVlLCBsaWNmaWxlKQorICAgICAgICAgICAgbGljbWQ1ID0gYmIudXRpbHMubWQ1X2ZpbGUobGljZmlsZXBhdGgpCisgICAgICAgICAgICBsaWNmaWxlcy5hcHBlbmQoImZpbGU6Ly8lczttZDU9JXMiICUgKGxpY2ZpbGUsIGxpY21kNSkpCisKKyAgICAgICAgIyBIYW5kbGUgdGhlIHBhcmVudCBwYWNrYWdlCisgICAgICAgIF9saWNmaWxlc19hcHBlbmQoInBhY2thZ2UuanNvbiIpCisgICAgICAgIHBhY2thZ2VzWyIke1BOfSJdID0gIiIKKworICAgICAgICAjIEhhbmRsZSB0aGUgZGVwZW5kZW5jaWVzCisgICAgICAgIGRlZiBfaGFuZGxlX2RlcGVuZGVuY3kobmFtZSwgcGFyYW1zLCBkZXB0cmVlKToKKyAgICAgICAgICAgIHN1ZmZpeCA9ICItIi5qb2luKFtzZWxmLl9ucG1fbmFtZShkZXApIGZvciBkZXAgaW4gZGVwdHJlZV0pCisgICAgICAgICAgICBkZXN0ZGlycyA9IFtvcy5wYXRoLmpvaW4oIm5vZGVfbW9kdWxlcyIsIGRlcCkgZm9yIGRlcCBpbiBkZXB0cmVlXQorICAgICAgICAgICAgZGVzdGRpciA9IG9zLnBhdGguam9pbigqZGVzdGRpcnMpCisgICAgICAgICAgICBfbGljZmlsZXNfYXBwZW5kKG9zLnBhdGguam9pbihkZXN0ZGlyLCAicGFja2FnZS5qc29uIikpCisgICAgICAgICAgICBwYWNrYWdlc1siJHtQTn0tIiArIHN1ZmZpeF0gPSBkZXN0ZGlyCisKKyAgICAgICAgd2l0aCBvcGVuKHNocmlua3dyYXBfZmlsZSwgInIiKSBhcyBmOgorICAgICAgICAgICAgc2hyaW5rd3JhcCA9IGpzb24ubG9hZChmKQorCisgICAgICAgIGZvcmVhY2hfZGVwZW5kZW5jaWVzKHNocmlua3dyYXAsIF9oYW5kbGVfZGVwZW5kZW5jeSwgZGV2KQorCisgICAgICAgIHJldHVybiBsaWNmaWxlcywgcGFja2FnZXMKIAogICAgIGRlZiBwcm9jZXNzKHNlbGYsIHNyY3RyZWUsIGNsYXNzZXMsIGxpbmVzX2JlZm9yZSwgbGluZXNfYWZ0ZXIsIGhhbmRsZWQsIGV4dHJhdmFsdWVzKToKLSAgICAgICAgaW1wb3J0IGJiLnV0aWxzCi0gICAgICAgIGltcG9ydCBvZS5wYWNrYWdlCi0gICAgICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CisgICAgICAgICIiIkhhbmRsZSB0aGUgbnBtIHJlY2lwZSBjcmVhdGlvbiIiIgogCi0gICAgICAgIGlmICdidWlsZHN5c3RlbScgaW4gaGFuZGxlZDoKKyAgICAgICAgaWYgImJ1aWxkc3lzdGVtIiBpbiBoYW5kbGVkOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICAgICAgZGVmIHJlYWRfcGFja2FnZV9qc29uKGZuKToKLSAgICAgICAgICAgIHdpdGggb3BlbihmbiwgJ3InLCBlcnJvcnM9J3N1cnJvZ2F0ZWVzY2FwZScpIGFzIGY6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGpzb24ubG9hZHMoZi5yZWFkKCkpCisgICAgICAgIGZpbGVzID0gUmVjaXBlSGFuZGxlci5jaGVja2ZpbGVzKHNyY3RyZWUsIFsicGFja2FnZS5qc29uIl0pCiAKLSAgICAgICAgZmlsZXMgPSBSZWNpcGVIYW5kbGVyLmNoZWNrZmlsZXMoc3JjdHJlZSwgWydwYWNrYWdlLmpzb24nXSkKLSAgICAgICAgaWYgZmlsZXM6Ci0gICAgICAgICAgICBkID0gYmIuZGF0YS5jcmVhdGVDb3B5KHRpbmZvaWwuY29uZmlnX2RhdGEpCi0gICAgICAgICAgICBucG1fYmluZGlyID0gc2VsZi5fZW5zdXJlX25wbSgpCi0gICAgICAgICAgICBpZiBub3QgbnBtX2JpbmRpcjoKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgxNCkKLSAgICAgICAgICAgIGQucHJlcGVuZFZhcignUEFUSCcsICclczonICUgbnBtX2JpbmRpcikKKyAgICAgICAgaWYgbm90IGZpbGVzOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICAgICAgICAgIGRhdGEgPSByZWFkX3BhY2thZ2VfanNvbihmaWxlc1swXSkKLSAgICAgICAgICAgIGlmICduYW1lJyBpbiBkYXRhIGFuZCAndmVyc2lvbicgaW4gZGF0YToKLSAgICAgICAgICAgICAgICBleHRyYXZhbHVlc1snUE4nXSA9IGRhdGFbJ25hbWUnXQotICAgICAgICAgICAgICAgIGV4dHJhdmFsdWVzWydQViddID0gZGF0YVsndmVyc2lvbiddCi0gICAgICAgICAgICAgICAgY2xhc3Nlcy5hcHBlbmQoJ25wbScpCi0gICAgICAgICAgICAgICAgaGFuZGxlZC5hcHBlbmQoJ2J1aWxkc3lzdGVtJykKLSAgICAgICAgICAgICAgICBpZiAnZGVzY3JpcHRpb24nIGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgICAgIGV4dHJhdmFsdWVzWydTVU1NQVJZJ10gPSBkYXRhWydkZXNjcmlwdGlvbiddCi0gICAgICAgICAgICAgICAgaWYgJ2hvbWVwYWdlJyBpbiBkYXRhOgotICAgICAgICAgICAgICAgICAgICBleHRyYXZhbHVlc1snSE9NRVBBR0UnXSA9IGRhdGFbJ2hvbWVwYWdlJ10KKyAgICAgICAgd2l0aCBvcGVuKGZpbGVzWzBdLCAiciIpIGFzIGY6CisgICAgICAgICAgICBkYXRhID0ganNvbi5sb2FkKGYpCiAKLSAgICAgICAgICAgICAgICBmZXRjaGRldiA9IGV4dHJhdmFsdWVzWydmZXRjaGRldiddIG9yIE5vbmUKLSAgICAgICAgICAgICAgICBkZXBzLCBvcHRkZXBzLCBkZXZkZXBzID0gc2VsZi5nZXRfbnBtX3BhY2thZ2VfZGVwZW5kZW5jaWVzKGRhdGEsIGZldGNoZGV2KQotICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9kZXBlbmRlbmNpZXMoZCwgZGVwcywgb3B0ZGVwcywgZGV2ZGVwcywgbGluZXNfYmVmb3JlLCBzcmN0cmVlKQorICAgICAgICBpZiAibmFtZSIgbm90IGluIGRhdGEgb3IgInZlcnNpb24iIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICAgICAgICAgICAgICAjIFNocmlua3dyYXAKLSAgICAgICAgICAgICAgICBsb2NhbGZpbGVzZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J3JlY2lwZXRvb2wtbnBtJykKLSAgICAgICAgICAgICAgICBzZWxmLl9zaHJpbmt3cmFwKHNyY3RyZWUsIGxvY2FsZmlsZXNkaXIsIGV4dHJhdmFsdWVzLCBsaW5lc19iZWZvcmUsIGQpCisgICAgICAgIGV4dHJhdmFsdWVzWyJQTiJdID0gc2VsZi5fbnBtX25hbWUoZGF0YVsibmFtZSJdKQorICAgICAgICBleHRyYXZhbHVlc1siUFYiXSA9IGRhdGFbInZlcnNpb24iXQogCi0gICAgICAgICAgICAgICAgIyBMb2NrZG93bgotICAgICAgICAgICAgICAgIHNlbGYuX2xvY2tkb3duKHNyY3RyZWUsIGxvY2FsZmlsZXNkaXIsIGV4dHJhdmFsdWVzLCBsaW5lc19iZWZvcmUsIGQpCisgICAgICAgIGlmICJkZXNjcmlwdGlvbiIgaW4gZGF0YToKKyAgICAgICAgICAgIGV4dHJhdmFsdWVzWyJTVU1NQVJZIl0gPSBkYXRhWyJkZXNjcmlwdGlvbiJdCiAKLSAgICAgICAgICAgICAgICAjIFNwbGl0IGVhY2ggbnBtIG1vZHVsZSBvdXQgdG8gaXMgb3duIHBhY2thZ2UKLSAgICAgICAgICAgICAgICBucG1wYWNrYWdlcyA9IG9lLnBhY2thZ2UubnBtX3NwbGl0X3BhY2thZ2VfZGlycyhzcmN0cmVlKQotICAgICAgICAgICAgICAgIGxpY3ZhbHVlcyA9IE5vbmUKLSAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBoYW5kbGVkOgotICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGl0ZW0sIHR1cGxlKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0ZW1bMF0gPT0gJ2xpY2Vuc2UnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpY3ZhbHVlcyA9IGl0ZW1bMV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGlmIG5vdCBsaWN2YWx1ZXM6Ci0gICAgICAgICAgICAgICAgICAgIGxpY3ZhbHVlcyA9IGhhbmRsZV9saWNlbnNlX3ZhcnMoc3JjdHJlZSwgbGluZXNfYmVmb3JlLCBoYW5kbGVkLCBleHRyYXZhbHVlcywgZCkKLSAgICAgICAgICAgICAgICBpZiBsaWN2YWx1ZXM6Ci0gICAgICAgICAgICAgICAgICAgICMgQXVnbWVudCB0aGUgbGljZW5zZSBsaXN0IHdpdGggaW5mb3JtYXRpb24gd2UgaGF2ZSBpbiB0aGUgcGFja2FnZXMKLSAgICAgICAgICAgICAgICAgICAgbGljZW5zZXMgPSB7fQotICAgICAgICAgICAgICAgICAgICBsaWNlbnNlID0gc2VsZi5faGFuZGxlX2xpY2Vuc2UoZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbGljZW5zZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2VzWycke1BOfSddID0gbGljZW5zZQotICAgICAgICAgICAgICAgICAgICBmb3IgcGtnbmFtZSwgcGtnaXRlbSBpbiBucG1wYWNrYWdlcy5pdGVtcygpOgotICAgICAgICAgICAgICAgICAgICAgICAgXywgcGRhdGEgPSBwa2dpdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICBsaWNlbnNlID0gc2VsZi5faGFuZGxlX2xpY2Vuc2UocGRhdGEpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBsaWNlbnNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2VzW3BrZ25hbWVdID0gbGljZW5zZQotICAgICAgICAgICAgICAgICAgICAjIE5vdyB3cml0ZSBvdXQgdGhlIHBhY2thZ2Utc3BlY2lmaWMgbGljZW5zZSB2YWx1ZXMKLSAgICAgICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHN0cmlwIG91dCB0aGUganNvbiBkYXRhIGRpY3RzIGZvciB0aGlzIHNpbmNlIHNwbGl0X3BrZ19saWNlbnNlcwotICAgICAgICAgICAgICAgICAgICAjIGlzbid0IGV4cGVjdGluZyBpdAotICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyA9IE9yZGVyZWREaWN0KCh4LHlbMF0pIGZvciB4LHkgaW4gbnBtcGFja2FnZXMuaXRlbXMoKSkKLSAgICAgICAgICAgICAgICAgICAgcGFja2FnZXNbJyR7UE59J10gPSAnJwotICAgICAgICAgICAgICAgICAgICBwa2dsaWNlbnNlcyA9IHNwbGl0X3BrZ19saWNlbnNlcyhsaWN2YWx1ZXMsIHBhY2thZ2VzLCBsaW5lc19hZnRlciwgbGljZW5zZXMpCi0gICAgICAgICAgICAgICAgICAgIGFsbF9saWNlbnNlcyA9IGxpc3Qoc2V0KFtpdGVtLnJlcGxhY2UoJ18nLCAnICcpIGZvciBwa2dsaWNlbnNlIGluIHBrZ2xpY2Vuc2VzLnZhbHVlcygpIGZvciBpdGVtIGluIHBrZ2xpY2Vuc2VdKSkKLSAgICAgICAgICAgICAgICAgICAgaWYgJyYnIGluIGFsbF9saWNlbnNlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsbF9saWNlbnNlcy5yZW1vdmUoJyYnKQotICAgICAgICAgICAgICAgICAgICBleHRyYXZhbHVlc1snTElDRU5TRSddID0gJyAmICcuam9pbihhbGxfbGljZW5zZXMpCisgICAgICAgIGlmICJob21lcGFnZSIgaW4gZGF0YToKKyAgICAgICAgICAgIGV4dHJhdmFsdWVzWyJIT01FUEFHRSJdID0gZGF0YVsiaG9tZXBhZ2UiXQogCi0gICAgICAgICAgICAgICAgIyBOZWVkIHRvIG1vdmUgUyBzZXR0aW5nIGFmdGVyIGluaGVyaXQgbnBtCi0gICAgICAgICAgICAgICAgZm9yIGksIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzX2JlZm9yZSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnUyA9Jyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lc19iZWZvcmUucG9wKGkpCi0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lc19hZnRlci5pbnNlcnQoMCwgJyMgTXVzdCBiZSBzZXQgYWZ0ZXIgaW5oZXJpdCBucG0gc2luY2UgdGhhdCBpdHNlbGYgc2V0cyBTJykKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzX2FmdGVyLmluc2VydCgxLCBsaW5lKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZGV2ID0gYmIudXRpbHMudG9fYm9vbGVhbihzdHIoZXh0cmF2YWx1ZXMuZ2V0KCJOUE1fSU5TVEFMTF9ERVYiLCAiMCIpKSwgRmFsc2UpCisgICAgICAgIHJlZ2lzdHJ5ID0gc2VsZi5fZ2V0X3JlZ2lzdHJ5KGxpbmVzX2JlZm9yZSkKIAotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGJiLm5vdGUoIkNoZWNraW5nIGlmIG5wbSBpcyBhdmFpbGFibGUgLi4uIikKKyAgICAgICAgIyBUaGUgbmF0aXZlIG5wbSBpcyB1c2VkIGhlcmUgKGFuZCBub3QgdGhlIGhvc3Qgb25lKSB0byBlbnN1cmUgdGhhdCB0aGUKKyAgICAgICAgIyBucG0gdmVyc2lvbiBpcyBoaWdoIGVub3VnaCB0byBlbnN1cmUgYW4gZWZmaWNpZW50IGRlcGVuZGVuY3kgdHJlZQorICAgICAgICAjIHJlc29sdXRpb24gYW5kIGF2b2lkIGlzc3VlIHdpdGggdGhlIHNocmlua3dyYXAgZmlsZSBmb3JtYXQuCisgICAgICAgICMgTW9yZW92ZXIgdGhlIG5hdGl2ZSBucG0gaXMgbWFuZGF0b3J5IGZvciB0aGUgYnVpbGQuCisgICAgICAgIGJpbmRpciA9IHNlbGYuX2Vuc3VyZV9ucG0oKQogCi0gICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBkID0gYmIuZGF0YS5jcmVhdGVDb3B5KFRJTkZPSUwuY29uZmlnX2RhdGEpCisgICAgICAgIGQucHJlcGVuZFZhcigiUEFUSCIsIGJpbmRpciArICI6IikKKyAgICAgICAgZC5zZXRWYXIoIlMiLCBzcmN0cmVlKQogCi0gICAgIyBGSVhNRSB0aGlzIGlzIGR1cGxpY2F0ZWQgZnJvbSBsaWIvYmIvZmV0Y2gyL25wbS5weQotICAgIGRlZiBfcGFyc2VfdmlldyhzZWxmLCBvdXRwdXQpOgotICAgICAgICAnJycKLSAgICAgICAgUGFyc2UgdGhlIG91dHB1dCBvZiBucG0gdmlldyAtLWpzb247IHRoZSBsYXN0IEpTT04gcmVzdWx0Ci0gICAgICAgIGlzIGFzc3VtZWQgdG8gYmUgdGhlIG9uZSB0aGF0IHdlJ3JlIGludGVyZXN0ZWQgaW4uCi0gICAgICAgICcnJwotICAgICAgICBwZGF0YSA9IE5vbmUKLSAgICAgICAgb3V0ZGVwcyA9IHt9Ci0gICAgICAgIGRhdGFsaW5lcyA9IFtdCi0gICAgICAgIGJyYWNlbGV2ZWwgPSAwCi0gICAgICAgIGZvciBsaW5lIGluIG91dHB1dC5zcGxpdGxpbmVzKCk6Ci0gICAgICAgICAgICBpZiBicmFjZWxldmVsOgotICAgICAgICAgICAgICAgIGRhdGFsaW5lcy5hcHBlbmQobGluZSkKLSAgICAgICAgICAgIGVsaWYgJ3snIGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgZGF0YWxpbmVzID0gW10KLSAgICAgICAgICAgICAgICBkYXRhbGluZXMuYXBwZW5kKGxpbmUpCi0gICAgICAgICAgICBicmFjZWxldmVsID0gYnJhY2VsZXZlbCArIGxpbmUuY291bnQoJ3snKSAtIGxpbmUuY291bnQoJ30nKQotICAgICAgICBpZiBkYXRhbGluZXM6Ci0gICAgICAgICAgICBwZGF0YSA9IGpzb24ubG9hZHMoJ1xuJy5qb2luKGRhdGFsaW5lcykpCi0gICAgICAgIHJldHVybiBwZGF0YQorICAgICAgICBiYi5ub3RlKCJHZW5lcmF0aW5nIHNocmlua3dyYXAgZmlsZSAuLi4iKQorICAgICAgICAjIFRvIGdlbmVyYXRlIHRoZSBzaHJpbmt3cmFwIGZpbGUgdGhlIGRlcGVuZGVuY2llcyBoYXZlIHRvIGJlIGluc3RhbGxlZAorICAgICAgICAjIGZpcnN0LiBEdXJpbmcgdGhlIGdlbmVyYXRpb24gcHJvY2VzcyBzb21lIGZpbGVzIG1heSBiZSB1cGRhdGVkIC8KKyAgICAgICAgIyBkZWxldGVkLiBCeSBkZWZhdWx0IGRldnRvb2wgdHJhY2tzIHRoZSBkaWZmcyBpbiB0aGUgc3JjdHJlZSBhbmQgcmFpc2VzCisgICAgICAgICMgZXJyb3JzIHdoZW4gZmluaXNoaW5nIHRoZSByZWNpcGUgaWYgc29tZSBkaWZmcyBhcmUgZm91bmQuCisgICAgICAgIGdpdF9leGNsdWRlX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc3JjdHJlZSwgIi5naXQiLCAiaW5mbyIsICJleGNsdWRlIikKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZ2l0X2V4Y2x1ZGVfZmlsZSk6CisgICAgICAgICAgICB3aXRoIG9wZW4oZ2l0X2V4Y2x1ZGVfZmlsZSwgInIrIikgYXMgZjoKKyAgICAgICAgICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBbIi9ub2RlX21vZHVsZXMvIiwgIi9ucG0tc2hyaW5rd3JhcC5qc29uIl06CisgICAgICAgICAgICAgICAgICAgIGlmIGxpbmUgbm90IGluIGxpbmVzOgorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShsaW5lICsgIlxuIikKIAotICAgICMgRklYTUUgdGhpcyBpcyBlZmZlY3RpdmVseSBkdXBsaWNhdGVkIGZyb20gbGliL2JiL2ZldGNoMi9ucG0ucHkKLSAgICAjIChzcGxpdCBvdXQgZnJvbSBfZ2V0ZGVwZW5kZW5jaWVzKCkpCi0gICAgZGVmIGdldF9ucG1fZGF0YShzZWxmLCBwa2csIHZlcnNpb24sIGQpOgotICAgICAgICBpbXBvcnQgYmIuZmV0Y2gyCi0gICAgICAgIHBrZ2Z1bGxuYW1lID0gcGtnCi0gICAgICAgIGlmIHZlcnNpb24gIT0gJyonIGFuZCBub3QgJy8nIGluIHZlcnNpb246Ci0gICAgICAgICAgICBwa2dmdWxsbmFtZSArPSAiQCclcyciICUgdmVyc2lvbgotICAgICAgICBsb2dnZXIuZGVidWcoMiwgIkNhbGxpbmcgZ2V0ZGVwcyBvbiAlcyIgJSBwa2cpCi0gICAgICAgIHJ1bmVudiA9IGRpY3Qob3MuZW52aXJvbiwgUEFUSD1kLmdldFZhcignUEFUSCcpKQotICAgICAgICBmZXRjaGNtZCA9ICJucG0gdmlldyAlcyAtLWpzb24iICUgcGtnZnVsbG5hbWUKLSAgICAgICAgb3V0cHV0LCBfID0gYmIucHJvY2Vzcy5ydW4oZmV0Y2hjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgZW52PXJ1bmVudiwgc2hlbGw9VHJ1ZSkKLSAgICAgICAgZGF0YSA9IHNlbGYuX3BhcnNlX3ZpZXcob3V0cHV0KQotICAgICAgICByZXR1cm4gZGF0YQorICAgICAgICBsb2NrX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc3JjdHJlZSwgInBhY2thZ2UtbG9jay5qc29uIikKKyAgICAgICAgbG9ja19jb3B5ID0gbG9ja19maWxlICsgIi5jb3B5IgorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhsb2NrX2ZpbGUpOgorICAgICAgICAgICAgYmIudXRpbHMuY29weWZpbGUobG9ja19maWxlLCBsb2NrX2NvcHkpCiAKLSAgICAjIEZJWE1FIHRoaXMgaXMgZWZmZWN0aXZlbHkgZHVwbGljYXRlZCBmcm9tIGxpYi9iYi9mZXRjaDIvbnBtLnB5Ci0gICAgIyAoc3BsaXQgb3V0IGZyb20gX2dldGRlcGVuZGVuY2llcygpKQotICAgIGRlZiBnZXRfbnBtX3BhY2thZ2VfZGVwZW5kZW5jaWVzKHNlbGYsIHBkYXRhLCBmZXRjaGRldik6Ci0gICAgICAgIGRlcGVuZGVuY2llcyA9IHBkYXRhLmdldCgnZGVwZW5kZW5jaWVzJywge30pCi0gICAgICAgIG9wdGlvbmFsRGVwZW5kZW5jaWVzID0gcGRhdGEuZ2V0KCdvcHRpb25hbERlcGVuZGVuY2llcycsIHt9KQotICAgICAgICBkZXBlbmRlbmNpZXMudXBkYXRlKG9wdGlvbmFsRGVwZW5kZW5jaWVzKQotICAgICAgICBpZiBmZXRjaGRldjoKLSAgICAgICAgICAgIGRldkRlcGVuZGVuY2llcyA9IHBkYXRhLmdldCgnZGV2RGVwZW5kZW5jaWVzJywge30pCi0gICAgICAgICAgICBkZXBlbmRlbmNpZXMudXBkYXRlKGRldkRlcGVuZGVuY2llcykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRldkRlcGVuZGVuY2llcyA9IHt9Ci0gICAgICAgIGRlcHNmb3VuZCA9IHt9Ci0gICAgICAgIG9wdGRlcHNmb3VuZCA9IHt9Ci0gICAgICAgIGRldmRlcHNmb3VuZCA9IHt9Ci0gICAgICAgIGZvciBkZXAgaW4gZGVwZW5kZW5jaWVzOgotICAgICAgICAgICAgaWYgZGVwIGluIG9wdGlvbmFsRGVwZW5kZW5jaWVzOgotICAgICAgICAgICAgICAgIG9wdGRlcHNmb3VuZFtkZXBdID0gZGVwZW5kZW5jaWVzW2RlcF0KLSAgICAgICAgICAgIGVsaWYgZGVwIGluIGRldkRlcGVuZGVuY2llczoKLSAgICAgICAgICAgICAgICBkZXZkZXBzZm91bmRbZGVwXSA9IGRlcGVuZGVuY2llc1tkZXBdCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRlcHNmb3VuZFtkZXBdID0gZGVwZW5kZW5jaWVzW2RlcF0KLSAgICAgICAgcmV0dXJuIGRlcHNmb3VuZCwgb3B0ZGVwc2ZvdW5kLCBkZXZkZXBzZm91bmQKKyAgICAgICAgc2VsZi5fcnVuX25wbV9pbnN0YWxsKGQsIHNyY3RyZWUsIHJlZ2lzdHJ5LCBkZXYpCisgICAgICAgIHNocmlua3dyYXBfZmlsZSA9IHNlbGYuX2dlbmVyYXRlX3Nocmlua3dyYXAoZCwgc3JjdHJlZSwgZGV2KQogCi0gICAgIyBGSVhNRSB0aGlzIGlzIGVmZmVjdGl2ZWx5IGR1cGxpY2F0ZWQgZnJvbSBsaWIvYmIvZmV0Y2gyL25wbS5weQotICAgICMgKHNwbGl0IG91dCBmcm9tIF9nZXRkZXBlbmRlbmNpZXMoKSkKLSAgICBkZWYgY2hlY2tfbnBtX29wdGlvbmFsX2RlcGVuZGVuY3koc2VsZiwgcGRhdGEpOgotICAgICAgICBwa2dfb3MgPSBwZGF0YS5nZXQoJ29zJywgTm9uZSkKLSAgICAgICAgaWYgcGtnX29zOgotICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGtnX29zLCBsaXN0KToKLSAgICAgICAgICAgICAgICBwa2dfb3MgPSBbcGtnX29zXQotICAgICAgICAgICAgYmxhY2tsaXN0ID0gRmFsc2UKLSAgICAgICAgICAgIGZvciBpdGVtIGluIHBrZ19vczoKLSAgICAgICAgICAgICAgICBpZiBpdGVtLnN0YXJ0c3dpdGgoJyEnKToKLSAgICAgICAgICAgICAgICAgICAgYmxhY2tsaXN0ID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgaWYgKG5vdCBibGFja2xpc3QgYW5kICdsaW51eCcgbm90IGluIHBrZ19vcykgb3IgJyFsaW51eCcgaW4gcGtnX29zOgotICAgICAgICAgICAgICAgIHBrZyA9IHBkYXRhLmdldCgnbmFtZScsICdVbm5hbWVkIHBhY2thZ2UnKQotICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiU2tpcHBpbmcgJXMgc2luY2UgaXQncyBpbmNvbXBhdGlibGUgd2l0aCBMaW51eCIgJSBwa2cpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGxvY2tfY29weSk6CisgICAgICAgICAgICBiYi51dGlscy5tb3ZlZmlsZShsb2NrX2NvcHksIGxvY2tfZmlsZSkKKworICAgICAgICAjIEFkZCB0aGUgc2hyaW5rd3JhcCBmaWxlIGFzICdleHRyYWZpbGVzJworICAgICAgICBzaHJpbmt3cmFwX2NvcHkgPSBzaHJpbmt3cmFwX2ZpbGUgKyAiLmNvcHkiCisgICAgICAgIGJiLnV0aWxzLmNvcHlmaWxlKHNocmlua3dyYXBfZmlsZSwgc2hyaW5rd3JhcF9jb3B5KQorICAgICAgICBleHRyYXZhbHVlcy5zZXRkZWZhdWx0KCJleHRyYWZpbGVzIiwge30pCisgICAgICAgIGV4dHJhdmFsdWVzWyJleHRyYWZpbGVzIl1bIm5wbS1zaHJpbmt3cmFwLmpzb24iXSA9IHNocmlua3dyYXBfY29weQorCisgICAgICAgIHVybF9sb2NhbCA9ICJucG1zdzovLyVzIiAlIHNocmlua3dyYXBfZmlsZQorICAgICAgICB1cmxfcmVjaXBlPSAibnBtc3c6Ly8ke1RISVNESVJ9LyR7QlBOfS9ucG0tc2hyaW5rd3JhcC5qc29uIgorCisgICAgICAgIGlmIGRldjoKKyAgICAgICAgICAgIHVybF9sb2NhbCArPSAiO2Rldj0xIgorICAgICAgICAgICAgdXJsX3JlY2lwZSArPSAiO2Rldj0xIgorCisgICAgICAgICMgQWRkIHRoZSBucG1zdyB1cmwgaW4gdGhlIFNSQ19VUkkgb2YgdGhlIGdlbmVyYXRlZCByZWNpcGUKKyAgICAgICAgZGVmIF9oYW5kbGVfc3JjdXJpKHZhcm5hbWUsIG9yaWd2YWx1ZSwgb3AsIG5ld2xpbmVzKToKKyAgICAgICAgICAgICIiIlVwZGF0ZSB0aGUgdmVyc2lvbiB2YWx1ZSBhbmQgYWRkIHRoZSAnbnBtc3c6Ly8nIHVybCIiIgorICAgICAgICAgICAgdmFsdWUgPSBvcmlndmFsdWUucmVwbGFjZSgidmVyc2lvbj0iICsgZGF0YVsidmVyc2lvbiJdLCAidmVyc2lvbj0ke1BWfSIpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoInZlcnNpb249bGF0ZXN0IiwgInZlcnNpb249JHtQVn0iKQorICAgICAgICAgICAgdmFsdWVzID0gW2xpbmUuc3RyaXAoKSBmb3IgbGluZSBpbiB2YWx1ZS5zdHJpcCgnXG4nKS5zcGxpdGxpbmVzKCldCisgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKHVybF9yZWNpcGUpCisgICAgICAgICAgICByZXR1cm4gdmFsdWVzLCBOb25lLCA0LCBGYWxzZQorCisgICAgICAgIChfLCBuZXdsaW5lcykgPSBiYi51dGlscy5lZGl0X21ldGFkYXRhKGxpbmVzX2JlZm9yZSwgWyJTUkNfVVJJIl0sIF9oYW5kbGVfc3JjdXJpKQorICAgICAgICBsaW5lc19iZWZvcmVbOl0gPSBbbGluZS5yc3RyaXAoJ1xuJykgZm9yIGxpbmUgaW4gbmV3bGluZXNdCisKKyAgICAgICAgIyBJbiBvcmRlciB0byBnZW5lcmF0ZSBjb3JyZWN0IGxpY2VuY2UgY2hlY2tzdW1zIGluIHRoZSByZWNpcGUgdGhlCisgICAgICAgICMgZGVwZW5kZW5jaWVzIGhhdmUgdG8gYmUgZmV0Y2hlZCBhZ2FpbiB1c2luZyB0aGUgbnBtc3cgdXJsCisgICAgICAgIGJiLm5vdGUoIkZldGNoaW5nIG5wbSBkZXBlbmRlbmNpZXMgLi4uIikKKyAgICAgICAgYmIudXRpbHMucmVtb3ZlKG9zLnBhdGguam9pbihzcmN0cmVlLCAibm9kZV9tb2R1bGVzIiksIHJlY3Vyc2U9VHJ1ZSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoMi5GZXRjaChbdXJsX2xvY2FsXSwgZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIGZldGNoZXIudW5wYWNrKHNyY3RyZWUpCisKKyAgICAgICAgYmIubm90ZSgiSGFuZGxpbmcgbGljZW5jZXMgLi4uIikKKyAgICAgICAgKGxpY2ZpbGVzLCBwYWNrYWdlcykgPSBzZWxmLl9oYW5kbGVfbGljZW5zZXMoc3JjdHJlZSwgc2hyaW5rd3JhcF9maWxlLCBkZXYpCisgICAgICAgIGV4dHJhdmFsdWVzWyJMSUNfRklMRVNfQ0hLU1VNIl0gPSBsaWNmaWxlcworICAgICAgICBzcGxpdF9wa2dfbGljZW5zZXMoZ3Vlc3NfbGljZW5zZShzcmN0cmVlLCBkKSwgcGFja2FnZXMsIGxpbmVzX2FmdGVyLCBbXSkKKworICAgICAgICBjbGFzc2VzLmFwcGVuZCgibnBtIikKKyAgICAgICAgaGFuZGxlZC5hcHBlbmQoImJ1aWxkc3lzdGVtIikKKwogICAgICAgICByZXR1cm4gVHJ1ZQogCi0KIGRlZiByZWdpc3Rlcl9yZWNpcGVfaGFuZGxlcnMoaGFuZGxlcnMpOgorICAgICIiIlJlZ2lzdGVyIHRoZSBucG0gaGFuZGxlciIiIgogICAgIGhhbmRsZXJzLmFwcGVuZCgoTnBtUmVjaXBlSGFuZGxlcigpLCA2MCkpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3Jlc3VsdHRvb2wvcmVwb3J0LnB5IGIvcG9reS9zY3JpcHRzL2xpYi9yZXN1bHR0b29sL3JlcG9ydC5weQppbmRleCA2OTJkZDdhLi43Y2VjZWFjIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3Jlc3VsdHRvb2wvcmVwb3J0LnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvcmVzdWx0dG9vbC9yZXBvcnQucHkKQEAgLTIxMiw3ICsyMTIsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbj1tYXhsZW4pCiAgICAgICAgIHByaW50KG91dHB1dCkKIAotICAgIGRlZiB2aWV3X3Rlc3RfcmVwb3J0KHNlbGYsIGxvZ2dlciwgc291cmNlX2RpciwgYnJhbmNoLCBjb21taXQsIHRhZywgdXNlX3JlZ3Jlc3Npb25fbWFwLCByYXdfdGVzdCk6CisgICAgZGVmIHZpZXdfdGVzdF9yZXBvcnQoc2VsZiwgbG9nZ2VyLCBzb3VyY2VfZGlyLCBicmFuY2gsIGNvbW1pdCwgdGFnLCB1c2VfcmVncmVzc2lvbl9tYXAsIHJhd190ZXN0LCBzZWxlY3RlZF90ZXN0X2Nhc2Vfb25seSk6CisgICAgICAgIGRlZiBwcmludF9zZWxlY3RlZF90ZXN0Y2FzZV9yZXN1bHQodGVzdHJlc3VsdHMsIHNlbGVjdGVkX3Rlc3RfY2FzZV9vbmx5KToKKyAgICAgICAgICAgIGZvciB0ZXN0c3VpdGUgaW4gdGVzdHJlc3VsdHM6CisgICAgICAgICAgICAgICAgZm9yIHJlc3VsdGlkIGluIHRlc3RyZXN1bHRzW3Rlc3RzdWl0ZV06CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRlc3RyZXN1bHRzW3Rlc3RzdWl0ZV1bcmVzdWx0aWRdWydyZXN1bHQnXQorICAgICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2VfcmVzdWx0ID0gcmVzdWx0LmdldChzZWxlY3RlZF90ZXN0X2Nhc2Vfb25seSwge30pCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3RfY2FzZV9yZXN1bHQuZ2V0KCdzdGF0dXMnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdGb3VuZCBzZWxlY3RlZCB0ZXN0IGNhc2UgcmVzdWx0IGZvciAlcyBmcm9tICVzJyAlIChzZWxlY3RlZF90ZXN0X2Nhc2Vfb25seSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRpZCkpCisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCh0ZXN0X2Nhc2VfcmVzdWx0WydzdGF0dXMnXSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdDb3VsZCBub3QgZmluZCBzZWxlY3RlZCB0ZXN0IGNhc2UgcmVzdWx0IGZvciAlcyBmcm9tICVzJyAlIChzZWxlY3RlZF90ZXN0X2Nhc2Vfb25seSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRpZCkpCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3RfY2FzZV9yZXN1bHQuZ2V0KCdsb2cnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KHRlc3RfY2FzZV9yZXN1bHRbJ2xvZyddKQogICAgICAgICB0ZXN0X2NvdW50X3JlcG9ydHMgPSBbXQogICAgICAgICBjb25maWdtYXAgPSByZXN1bHR1dGlscy5zdG9yZV9tYXAKICAgICAgICAgaWYgdXNlX3JlZ3Jlc3Npb25fbWFwOgpAQCAtMjM1LDEyICsyNDksMTggQEAKICAgICAgICAgICAgIGZvciB0ZXN0c3VpdGUgaW4gdGVzdHJlc3VsdHM6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGVzdHJlc3VsdHNbdGVzdHN1aXRlXS5nZXQocmF3X3Rlc3QsIHt9KQogICAgICAgICAgICAgICAgIGlmIHJlc3VsdDoKLSAgICAgICAgICAgICAgICAgICAgcmF3X3Jlc3VsdHNbdGVzdHN1aXRlXSA9IHJlc3VsdAorICAgICAgICAgICAgICAgICAgICByYXdfcmVzdWx0c1t0ZXN0c3VpdGVdID0ge3Jhd190ZXN0OiByZXN1bHR9CiAgICAgICAgICAgICBpZiByYXdfcmVzdWx0czoKLSAgICAgICAgICAgICAgICBwcmludChqc29uLmR1bXBzKHJhd19yZXN1bHRzLCBzb3J0X2tleXM9VHJ1ZSwgaW5kZW50PTQpKQorICAgICAgICAgICAgICAgIGlmIHNlbGVjdGVkX3Rlc3RfY2FzZV9vbmx5OgorICAgICAgICAgICAgICAgICAgICBwcmludF9zZWxlY3RlZF90ZXN0Y2FzZV9yZXN1bHQocmF3X3Jlc3VsdHMsIHNlbGVjdGVkX3Rlc3RfY2FzZV9vbmx5KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHByaW50KGpzb24uZHVtcHMocmF3X3Jlc3VsdHMsIHNvcnRfa2V5cz1UcnVlLCBpbmRlbnQ9NCkpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHByaW50KCdDb3VsZCBub3QgZmluZCByYXcgdGVzdCByZXN1bHQgZm9yICVzJyAlIHJhd190ZXN0KQogICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgaWYgc2VsZWN0ZWRfdGVzdF9jYXNlX29ubHk6CisgICAgICAgICAgICBwcmludF9zZWxlY3RlZF90ZXN0Y2FzZV9yZXN1bHQodGVzdHJlc3VsdHMsIHNlbGVjdGVkX3Rlc3RfY2FzZV9vbmx5KQorICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgZm9yIHRlc3RzdWl0ZSBpbiB0ZXN0cmVzdWx0czoKICAgICAgICAgICAgIGZvciByZXN1bHRpZCBpbiB0ZXN0cmVzdWx0c1t0ZXN0c3VpdGVdOgogICAgICAgICAgICAgICAgIHNraXAgPSBGYWxzZQpAQCAtMjY4LDcgKzI4OCw3IEBACiBkZWYgcmVwb3J0KGFyZ3MsIGxvZ2dlcik6CiAgICAgcmVwb3J0ID0gUmVzdWx0c1RleHRSZXBvcnQoKQogICAgIHJlcG9ydC52aWV3X3Rlc3RfcmVwb3J0KGxvZ2dlciwgYXJncy5zb3VyY2VfZGlyLCBhcmdzLmJyYW5jaCwgYXJncy5jb21taXQsIGFyZ3MudGFnLCBhcmdzLnVzZV9yZWdyZXNzaW9uX21hcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnJhd190ZXN0X29ubHkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5yYXdfdGVzdF9vbmx5LCBhcmdzLnNlbGVjdGVkX3Rlc3RfY2FzZV9vbmx5KQogICAgIHJldHVybiAwCiAKIGRlZiByZWdpc3Rlcl9jb21tYW5kcyhzdWJwYXJzZXJzKToKQEAgLTI4Nyw0ICszMDcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0naW5zdGVhZCBvZiB0aGUgZGVmYXVsdCAic3RvcmVfbWFwIiwgdXNlIHRoZSAicmVncmVzc2lvbl9tYXAiIGZvciByZXBvcnQnKQogICAgIHBhcnNlcl9idWlsZC5hZGRfYXJndW1lbnQoJy1yJywgJy0tcmF3X3Rlc3Rfb25seScsIGRlZmF1bHQ9JycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdvdXRwdXQgcmF3IHRlc3QgcmVzdWx0IG9ubHkgZm9yIHRoZSB1c2VyIHByb3ZpZGVkIHRlc3QgcmVzdWx0IGlkJykKLQorICAgIHBhcnNlcl9idWlsZC5hZGRfYXJndW1lbnQoJy1zJywgJy0tc2VsZWN0ZWRfdGVzdF9jYXNlX29ubHknLCBkZWZhdWx0PScnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nb3V0cHV0IHNlbGVjdGVkIHRlc3QgY2FzZSByZXN1bHQgZm9yIHRoZSB1c2VyIHByb3ZpZGVkIHRlc3QgY2FzZSBpZCwgaWYgYm90aCB0ZXN0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc3VsdCBpZCBhbmQgdGVzdCBjYXNlIGlkIGFyZSBwcm92aWRlZCB0aGVuIG91dHB1dCB0aGUgc2VsZWN0ZWQgdGVzdCBjYXNlIHJlc3VsdCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcm9tIHRoZSBwcm92aWRlZCB0ZXN0IHJlc3VsdCBpZCcpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3Jlc3VsdHRvb2wvcmVzdWx0dXRpbHMucHkgYi9wb2t5L3NjcmlwdHMvbGliL3Jlc3VsdHRvb2wvcmVzdWx0dXRpbHMucHkKaW5kZXggZjBhZThlYy4uNWZlYzAxZiAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi9yZXN1bHR0b29sL3Jlc3VsdHV0aWxzLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvcmVzdWx0dG9vbC9yZXN1bHR1dGlscy5weQpAQCAtMTI3LDEwICsxMjcsNyBAQAogICAgICAgICAgICAgZGF0YSA9IGxvZ2RhdGEuZ2V0KCJjb21wcmVzc2VkIikKICAgICAgICAgICAgIGRhdGEgPSBiYXNlNjQuYjY0ZGVjb2RlKGRhdGEuZW5jb2RlKCJ1dGYtOCIpKQogICAgICAgICAgICAgZGF0YSA9IHpsaWIuZGVjb21wcmVzcyhkYXRhKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLmRlY29kZSgidXRmLTgiKQotICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKLSAgICAgICAgICAgICAgICByZXR1cm4gZGF0YQorICAgICAgICAgICAgcmV0dXJuIGRhdGEuZGVjb2RlKCJ1dGYtOCIsIGVycm9ycz0naWdub3JlJykKICAgICByZXR1cm4gTm9uZQogCiBkZWYgcHRlc3RyZXN1bHRfZ2V0X2xvZyhyZXN1bHRzLCBzZWN0aW9uKToKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvc2NyaXB0dXRpbHMucHkgYi9wb2t5L3NjcmlwdHMvbGliL3NjcmlwdHV0aWxzLnB5CmluZGV4IDQ1YmRhZjUuLmY5MjI1NWQgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvc2NyaXB0dXRpbHMucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9zY3JpcHR1dGlscy5weQpAQCAtNzcsNyArNzcsNiBAQAogCiAKIGRlZiBsb2FkX3BsdWdpbnMobG9nZ2VyLCBwbHVnaW5zLCBwbHVnaW5wYXRoKToKLSAgICBpbXBvcnQgaW1wCiAKICAgICBkZWYgbG9hZF9wbHVnaW4obmFtZSk6CiAgICAgICAgIGxvZ2dlci5kZWJ1ZygnTG9hZGluZyBwbHVnaW4gJXMnICUgbmFtZSkKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvcWVtdXg4Ni1kaXJlY3RkaXNrLndrcyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvcWVtdXg4Ni1kaXJlY3RkaXNrLndrcwppbmRleCBjOGQ5ZjEyLi4yMmI0NTIxIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL3FlbXV4ODYtZGlyZWN0ZGlzay53a3MKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9xZW11eDg2LWRpcmVjdGRpc2sud2tzCkBAIC00LDUgKzQsNSBAQAogCiBpbmNsdWRlIGNvbW1vbi53a3MuaW5jCiAKLWJvb3Rsb2FkZXIgIC0tdGltZW91dD0wICAtLWFwcGVuZD0idmdhPTAgcncgb3Byb2ZpbGUudGltZXI9MSByb290ZnN0eXBlPWV4dDQgIgorYm9vdGxvYWRlciAgLS10aW1lb3V0PTAgIC0tYXBwZW5kPSJydyBvcHJvZmlsZS50aW1lcj0xIHJvb3Rmc3R5cGU9ZXh0NCAiCiAKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL2VuZ2luZS5weSBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL2VuZ2luZS5weQppbmRleCA3ZTY2MjA3Li4wMTg4MTViIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9lbmdpbmUucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvZW5naW5lLnB5CkBAIC0yODAsNyArMjgwLDcgQEAKICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CiAgICAgICAgICIiIkdldCBwYXRoIHRvIHRoZSBleGVjdXRhYmxlIGluIGEgbGF6eSB3YXkuIiIiCiAgICAgICAgIGlmIG5hbWUgaW4gKCJtZGlyIiwgIm1jb3B5IiwgIm1kZWwiLCAibWRlbHRyZWUiLCAic2ZkaXNrIiwgImUyZnNjayIsCi0gICAgICAgICAgICAgICAgICAgICJyZXNpemUyZnMiLCAibWtzd2FwIiwgIm1rZG9zZnMiLCAiZGVidWdmcyIpOgorICAgICAgICAgICAgICAgICAgICAicmVzaXplMmZzIiwgIm1rc3dhcCIsICJta2Rvc2ZzIiwgImRlYnVnZnMiLCJibGtpZCIpOgogICAgICAgICAgICAgYW5hbWUgPSAiXyVzIiAlIG5hbWUKICAgICAgICAgICAgIGlmIGFuYW1lIG5vdCBpbiBzZWxmLl9fZGljdF9fOgogICAgICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwgYW5hbWUsIGZpbmRfZXhlY3V0YWJsZShuYW1lLCBzZWxmLnBhdGhzKSkKQEAgLTI5MSw3ICsyOTEsNyBAQAogCiAgICAgZGVmIF9nZXRfcGFydF9pbWFnZShzZWxmLCBwbnVtKToKICAgICAgICAgaWYgcG51bSBub3QgaW4gc2VsZi5wYXJ0aXRpb25zOgotICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIlBhcnRpdGlvbiAlcyBpcyBub3QgaW4gdGhlIGltYWdlIikKKyAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJQYXJ0aXRpb24gJXMgaXMgbm90IGluIHRoZSBpbWFnZSIgJSBwbnVtKQogICAgICAgICBwYXJ0ID0gc2VsZi5wYXJ0aXRpb25zW3BudW1dCiAgICAgICAgICMgY2hlY2sgaWYgZnN0eXBlIGlzIHN1cHBvcnRlZAogICAgICAgICBmb3IgZnN0eXBlIGluIHNlbGYuZnN0eXBlczoKQEAgLTMxNCw2ICszMTQsOSBAQAogICAgICAgICAgICAgICAgICAgICBzZWVrPXNlbGYucGFydGl0aW9uc1twbnVtXS5zdGFydCkKIAogICAgIGRlZiBkaXIoc2VsZiwgcG51bSwgcGF0aCk6CisgICAgICAgIGlmIHBudW0gbm90IGluIHNlbGYucGFydGl0aW9uczoKKyAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJQYXJ0aXRpb24gJXMgaXMgbm90IGluIHRoZSBpbWFnZSIgJSBwbnVtKQorCiAgICAgICAgIGlmIHNlbGYucGFydGl0aW9uc1twbnVtXS5mc3R5cGUuc3RhcnRzd2l0aCgnZXh0Jyk6CiAgICAgICAgICAgICByZXR1cm4gZXhlY19jbWQoInt9IHt9IC1SICdscyAtbCB7fSciLmZvcm1hdChzZWxmLmRlYnVnZnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9nZXRfcGFydF9pbWFnZShwbnVtKSwKQEAgLTMyMywxNiArMzI2LDMxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9nZXRfcGFydF9pbWFnZShwbnVtKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgpKQogCi0gICAgZGVmIGNvcHkoc2VsZiwgc3JjLCBwbnVtLCBwYXRoKToKKyAgICBkZWYgY29weShzZWxmLCBzcmMsIGRlc3QpOgogICAgICAgICAiIiJDb3B5IHBhcnRpdGlvbiBpbWFnZSBpbnRvIHdpYyBpbWFnZS4iIiIKKyAgICAgICAgcG51bSA9ICBkZXN0LnBhcnQgaWYgaXNpbnN0YW5jZShzcmMsIHN0cikgZWxzZSBzcmMucGFydAorCiAgICAgICAgIGlmIHNlbGYucGFydGl0aW9uc1twbnVtXS5mc3R5cGUuc3RhcnRzd2l0aCgnZXh0Jyk6Ci0gICAgICAgICAgICBjbWQgPSAicHJpbnRmICdjZCB7fVxud3JpdGUge30ge31cbicgfCB7fSAtdyB7fSIuXAotICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdChwYXRoLCBzcmMsIG9zLnBhdGguYmFzZW5hbWUoc3JjKSwKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc3JjLCBzdHIpOgorICAgICAgICAgICAgICAgIGNtZCA9ICJwcmludGYgJ2NkIHt9XG53cml0ZSB7fSB7fVxuJyB8IHt9IC13IHt9Ii5cCisgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KG9zLnBhdGguZGlybmFtZShkZXN0LnBhdGgpLCBzcmMsIG9zLnBhdGguYmFzZW5hbWUoc3JjKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWJ1Z2ZzLCBzZWxmLl9nZXRfcGFydF9pbWFnZShwbnVtKSkKKyAgICAgICAgICAgIGVsc2U6ICMgY29weSBmcm9tIHdpYworICAgICAgICAgICAgICAgICMgcnVuIGJvdGggZHVtcCBhbmQgcmR1bXAgdG8gc3VwcG9ydCBib3RoIGZpbGVzIGFuZCBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBjbWQgPSAicHJpbnRmICdjZCB7fVxuZHVtcCAve30ge31cbnJkdW1wIC97fSB7fVxuJyB8IHt9IHt9Ii5cCisgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KG9zLnBhdGguZGlybmFtZShzcmMucGF0aCksIHNyYy5wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0LCBzcmMucGF0aCwgZGVzdCwgc2VsZi5kZWJ1Z2ZzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9nZXRfcGFydF9pbWFnZShwbnVtKSkKICAgICAgICAgZWxzZTogIyBmYXQKLSAgICAgICAgICAgIGNtZCA9ICJ7fSAtaSB7fSAtc25vcCB7fSA6Ont9Ii5mb3JtYXQoc2VsZi5tY29weSwKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc3JjLCBzdHIpOgorICAgICAgICAgICAgICAgIGNtZCA9ICJ7fSAtaSB7fSAtc25vcCB7fSA6Ont9Ii5mb3JtYXQoc2VsZi5tY29weSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ2V0X3BhcnRfaW1hZ2UocG51bSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYywgcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLCBkZXN0LnBhdGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNtZCA9ICJ7fSAtaSB7fSAtc25vcCA6Ont9IHt9Ii5mb3JtYXQoc2VsZi5tY29weSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ2V0X3BhcnRfaW1hZ2UocG51bSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYy5wYXRoLCBkZXN0KQorCiAgICAgICAgIGV4ZWNfY21kKGNtZCwgYXNfc2hlbGw9VHJ1ZSkKICAgICAgICAgc2VsZi5fcHV0X3BhcnRfaW1hZ2UocG51bSkKIApAQCAtNDI0LDcgKzQ0Miw3IEBACiAgICAgICAgICAgICBvdXRmLmZsdXNoKCkKIAogICAgICAgICBkZWYgcmVhZF9wdGFibGUocGF0aCk6Ci0gICAgICAgICAgICBvdXQgPSBleGVjX2NtZCgie30gLWRKIHt9Ii5mb3JtYXQoc2VsZi5zZmRpc2ssIHBhdGgpKQorICAgICAgICAgICAgb3V0ID0gZXhlY19jbWQoInt9IC1KIHt9Ii5mb3JtYXQoc2VsZi5zZmRpc2ssIHBhdGgpKQogICAgICAgICAgICAgcmV0dXJuIGpzb24ubG9hZHMob3V0KQogCiAgICAgICAgIGRlZiB3cml0ZV9wdGFibGUocGFydHMsIHRhcmdldCk6CkBAIC01MjUsNyArNTQzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJjcmVhdGluZyBzd2FwIHBhcnRpdGlvbiB7fSIuZm9ybWF0KHBudW0pKQogICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBwYXJ0LmdldCgibmFtZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbF9zdHIgPSAiLUwge30iLmZvcm1hdChsYWJlbCkgaWYgbGFiZWwgZWxzZSAnJwotICAgICAgICAgICAgICAgICAgICAgICAgdXVpZCA9IHBhcnQuZ2V0KCJ1dWlkIikKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IGV4ZWNfY21kKCJ7fSAtLXByb2JlIHt9Ii5mb3JtYXQoc2VsZi5ibGtpZCwgc2VsZi5fZ2V0X3BhcnRfaW1hZ2UocG51bSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgdXVpZCA9IG91dFtvdXQuaW5kZXgoIlVVSUQ9XCIiKSs2Om91dC5pbmRleCgiVVVJRD1cIiIpKzQyXQogICAgICAgICAgICAgICAgICAgICAgICAgdXVpZF9zdHIgPSAiLVUge30iLmZvcm1hdCh1dWlkKSBpZiB1dWlkIGVsc2UgJycKICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihwYXJ0Zm5hbWUsICd3JykgYXMgc3BhcnNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmZ0cnVuY2F0ZShzcGFyc2UuZmlsZW5vKCksIHBhcnRbJ3NpemUnXSAqIHNlbGYuX2xzZWN0b3Jfc2l6ZSkKQEAgLTU1MSwxMSArNTcwLDE1IEBACiAKIGRlZiB3aWNfY3AoYXJncywgbmF0aXZlX3N5c3Jvb3QpOgogICAgICIiIgotICAgIENvcHkgbG9jYWwgZmlsZSBvciBkaXJlY3RvcnkgdG8gdGhlIHZmYXQgcGFydGl0aW9uIG9mCisgICAgQ29weSBmaWxlIG9yIGRpcmVjdG9yeSB0by9mcm9tIHRoZSB2ZmF0L2V4dCBwYXJ0aXRpb24gb2YKICAgICBwYXJ0aXRpb25lZCBpbWFnZS4KICAgICAiIiIKLSAgICBkaXNrID0gRGlzayhhcmdzLmRlc3QuaW1hZ2UsIG5hdGl2ZV9zeXNyb290KQotICAgIGRpc2suY29weShhcmdzLnNyYywgYXJncy5kZXN0LnBhcnQsIGFyZ3MuZGVzdC5wYXRoKQorICAgIGlmIGlzaW5zdGFuY2UoYXJncy5kZXN0LCBzdHIpOgorICAgICAgICBkaXNrID0gRGlzayhhcmdzLnNyYy5pbWFnZSwgbmF0aXZlX3N5c3Jvb3QpCisgICAgZWxzZToKKyAgICAgICAgZGlzayA9IERpc2soYXJncy5kZXN0LmltYWdlLCBuYXRpdmVfc3lzcm9vdCkKKyAgICBkaXNrLmNvcHkoYXJncy5zcmMsIGFyZ3MuZGVzdCkKKwogCiBkZWYgd2ljX3JtKGFyZ3MsIG5hdGl2ZV9zeXNyb290KToKICAgICAiIiIKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL2hlbHAucHkgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9oZWxwLnB5CmluZGV4IDgxMmViZTMuLmJkM2EyYjkgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL2hlbHAucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvaGVscC5weQpAQCAtMzQxLDEyICszNDEsMTUgQEAKIAogd2ljX2NwX3VzYWdlID0gIiIiCiAKLSBDb3B5IGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0byB0aGUgdmZhdCBvciBleHQqIHBhcnRpdGlvbgorIENvcHkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvL2Zyb20gdGhlIHZmYXQgb3IgZXh0KiBwYXJ0aXRpb24KIAotIHVzYWdlOiB3aWMgY3AgPHNyYz4gPGltYWdlPjo8cGFydGl0aW9uPls8cGF0aD5dIFstLW5hdGl2ZS1zeXNyb290IDxwYXRoPl0KKyB1c2FnZTogd2ljIGNwIDxzcmM+IDxkZXN0PiBbLS1uYXRpdmUtc3lzcm9vdCA8cGF0aD5dCiAKLSBUaGlzIGNvbW1hbmQgIGNvcGllcyBsb2NhbCBmaWxlcyBvciBkaXJlY3RvcmllcyB0byB0aGUgdmZhdCBvciBleHQqIHBhcnRpdGlvbnMKLW9mIHBhcnRpdGlvbmVkICBpbWFnZS4KKyBzb3VyY2UvZGVzdGluYXRpb24gaW1hZ2UgaW4gZm9ybWF0IDxpbWFnZT46PHBhcnRpdGlvbj5bPHBhdGg+XQorCisgVGhpcyBjb21tYW5kIGNvcGllcyBmaWxlcyBvciBkaXJlY3RvcmllcyBlaXRoZXIKKyAgLSBmcm9tIGxvY2FsIHRvIHZmYXQgb3IgZXh0KiBwYXJ0aXRpb25zIG9mIHBhcnRpdGlvbmVkIGltYWdlCisgIC0gZnJvbSB2ZmF0IG9yIGV4dCogcGFydGl0aW9ucyBvZiBwYXJ0aXRpb25lZCBpbWFnZSB0byBsb2NhbAogCiAgU2VlICd3aWMgaGVscCBjcCcgZm9yIG1vcmUgZGV0YWlsZWQgaW5zdHJ1Y3Rpb25zLgogCkBAIC0zNTUsMTYgKzM1OCwxOCBAQAogd2ljX2NwX2hlbHAgPSAiIiIKIAogTkFNRQotICAgIHdpYyBjcCAtIGNvcHkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvIHRoZSB2ZmF0IG9yIGV4dCogcGFydGl0aW9ucworICAgIHdpYyBjcCAtIGNvcHkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvL2Zyb20gdGhlIHZmYXQgb3IgZXh0KiBwYXJ0aXRpb25zCiAKIFNZTk9QU0lTCi0gICAgd2ljIGNwIDxzcmM+IDxpbWFnZT46PHBhcnRpdGlvbj4KLSAgICB3aWMgY3AgPHNyYz4gPGltYWdlPjo8cGFydGl0aW9uPjxwYXRoPgotICAgIHdpYyBjcCA8c3JjPiA8aW1hZ2U+OjxwYXJ0aXRpb24+PHBhdGg+IC0tbmF0aXZlLXN5c3Jvb3QgPHBhdGg+CisgICAgd2ljIGNwIDxzcmM+IDxkZXN0Pjo8cGFydGl0aW9uPgorICAgIHdpYyBjcCA8c3JjPjo8cGFydGl0aW9uPiA8ZGVzdD4KKyAgICB3aWMgY3AgPHNyYz4gPGRlc3QtaW1hZ2U+OjxwYXJ0aXRpb24+PHBhdGg+CisgICAgd2ljIGNwIDxzcmM+IDxkZXN0LWltYWdlPjo8cGFydGl0aW9uPjxwYXRoPiAtLW5hdGl2ZS1zeXNyb290IDxwYXRoPgogCiBERVNDUklQVElPTgotICAgIFRoaXMgY29tbWFuZCBjb3BpZXMgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvIHRoZSB2ZmF0IG9yIGV4dCogcGFydGl0aW9uIG9mCi0gICAgdGhlIHBhcnRpdGlvbmVkIGltYWdlLgorICAgIFRoaXMgY29tbWFuZCBjb3BpZXMgZmlsZXMgb3IgZGlyZWN0b3JpZXMgZWl0aGVyCisgICAgICAtIGZyb20gbG9jYWwgdG8gdmZhdCBvciBleHQqIHBhcnRpdGlvbnMgb2YgcGFydGl0aW9uZWQgaW1hZ2UKKyAgICAgIC0gZnJvbSB2ZmF0IG9yIGV4dCogcGFydGl0aW9ucyBvZiBwYXJ0aXRpb25lZCBpbWFnZSB0byBsb2NhbAogCiAgICAgVGhlIGZpcnN0IGZvcm0gb2YgaXQgY29waWVzIGZpbGUgb3IgZGlyZWN0b3J5IHRvIHRoZSByb290IGRpcmVjdG9yeSBvZgogICAgIHRoZSBwYXJ0aXRpb246CkBAIC0zOTcsNiArNDAyLDEwIEBACiAgICAgICAgICAgICAgICA0IGZpbGVzICAgICAgICAgICAgICAgICAgIDAgYnl0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUgNjc1IDM5MiBieXRlcyBmcmVlCiAKKyAgICBUaGUgdGhpcmQgZm9ybSBvZiB0aGUgY29tbWFuZCBjb3BpZXMgZmlsZSBvciBkaXJlY3RvcnkgZnJvbSB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeQorICAgIG9uIHRoZSBwYXJ0aXRpb24gdG8gbG9jYWw6CisgICAgICAgJCB3aWMgY3AgdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni02NC9jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni02NC53aWM6MS92bWxpbnV6IHRlc3QKKwogICAgIFRoZSAtbiBvcHRpb24gaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBwYXRoIHRvIHRoZSBuYXRpdmUgc3lzcm9vdAogICAgIGNvbnRhaW5pbmcgdGhlIHRvb2xzKHBhcnRlZCBhbmQgbXRvb2xzKSB0byB1c2UuCiAiIiIKQEAgLTUyNyw3ICs1MzYsOCBAQAogCiAgICAgU291cmNlIHBsdWdpbnMgY2FuIGFsc28gYmUgaW1wbGVtZW50ZWQgYW5kIGFkZGVkIGJ5IGV4dGVybmFsCiAgICAgbGF5ZXJzIC0gYW55IHBsdWdpbnMgZm91bmQgaW4gYSBzY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvCi0gICAgZGlyZWN0b3J5IGluIGFuIGV4dGVybmFsIGxheWVyIHdpbGwgYWxzbyBiZSBtYWRlIGF2YWlsYWJsZS4KKyAgICBvciBsaWIvd2ljL3BsdWdpbnMvc291cmNlLyBkaXJlY3RvcnkgaW4gYW4gZXh0ZXJuYWwgbGF5ZXIgd2lsbAorICAgIGFsc28gYmUgbWFkZSBhdmFpbGFibGUuCiAKICAgICBXaGVuIHRoZSB3aWMgaW1wbGVtZW50YXRpb24gbmVlZHMgdG8gaW52b2tlIGEgcGFydGl0aW9uLXNwZWNpZmljCiAgICAgaW1wbGVtZW50YXRpb24sIGl0IGxvb2tzIGZvciB0aGUgcGx1Z2luIHRoYXQgaGFzIHRoZSBzYW1lIG5hbWUgYXMKQEAgLTk2MCw2ICs5NzAsMjYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBvbWl0dGVkLCBub3QgdGhlIGRpcmVjdG9yeSBpdHNlbGYuIFRoaXMgb3B0aW9uIG9ubHkKICAgICAgICAgICAgICAgICAgICAgICAgICBoYXMgYW4gZWZmZWN0IHdpdGggdGhlIHJvb3RmcyBzb3VyY2UgcGx1Z2luLgogCisgICAgICAgICAtLWluY2x1ZGUtcGF0aDogVGhpcyBvcHRpb24gaXMgc3BlY2lmaWMgdG8gd2ljLiBJdCBhZGRzIHRoZSBjb250ZW50cworICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBnaXZlbiBwYXRoIG9yIGEgcm9vdGZzIHRvIHRoZSByZXN1bHRpbmcgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG9wdGlvbiBjb250YWlucyB0d28gZmllbGRzLCB0aGUgb3JpZ2luIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi4gV2hlbiB0aGUgb3JpZ2luIGlzIGEgcm9vdGZzLCBpdCBmb2xsb3dzCisgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNhbWUgbG9naWMgYXMgdGhlIHJvb3Rmcy1kaXIgYXJndW1lbnQgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zIGFuZCBvd25lcnMgYXJlIGtlcHQuIFdoZW4gdGhlIG9yaWdpbiBpcyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgaXQgaXMgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB3aWMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nIG5vdCB0aGUgcm9vdGZzIGl0c2VsZiBzbyB1c2Ugb2YgYW4gYWJzb2x1dGUKKyAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoIGlzIHJlY29tbWVuZGVkLCBhbmQgdGhlIG93bmVyIGFuZCBncm91cCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICByb290OnJvb3QuIElmIG5vIGRlc3RpbmF0aW9uIGlzIGdpdmVuIGl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBzZXQgdG8gdGhlIHJvb3Qgb2YgdGhlIHJvb3Rmcy4gVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiBvbmx5IGhhcyBhbiBlZmZlY3Qgd2l0aCB0aGUgcm9vdGZzIHNvdXJjZQorICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbi4KKworICAgICAgICAgLS1jaGFuZ2UtZGlyZWN0b3J5OiBUaGlzIG9wdGlvbiBpcyBzcGVjaWZpYyB0byB3aWMuIEl0IGNoYW5nZXMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIGRpcmVjdG9yeSBiZWZvcmUgY29weWluZyB0aGUgZmlsZXMuIFRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uIGlzIHVzZWZ1bCB3aGVuIHdlIHdhbnQgdG8gc3BsaXQgYSByb290ZnMgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUgcGFydGl0aW9ucyBhbmQgd2Ugd2FudCB0byBrZWVwIHRoZSByaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9ucyBhbmQgdXNlcm5hbWVzIGluIGFsbCB0aGUgcGFydGl0aW9ucy4KKwogICAgICAgICAgLS1leHRyYS1zcGFjZTogVGhpcyBvcHRpb24gaXMgc3BlY2lmaWMgdG8gd2ljLiBJdCBhZGRzIGV4dHJhCiAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZSBhZnRlciB0aGUgc3BhY2UgZmlsbGVkIGJ5IHRoZSBjb250ZW50CiAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgcGFydGl0aW9uLiBUaGUgZmluYWwgc2l6ZSBjYW4gZ28KZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL2tzcGFyc2VyLnB5IGIvcG9reS9zY3JpcHRzL2xpYi93aWMva3NwYXJzZXIucHkKaW5kZXggNmE2NDNiYS4uYjhiZWZlNyAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi93aWMva3NwYXJzZXIucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMva3NwYXJzZXIucHkKQEAgLTEzNyw2ICsxMzcsOCBAQAogICAgICAgICBwYXJ0LmFkZF9hcmd1bWVudCgnLS1hY3RpdmUnLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgICAgICBwYXJ0LmFkZF9hcmd1bWVudCgnLS1hbGlnbicsIHR5cGU9aW50KQogICAgICAgICBwYXJ0LmFkZF9hcmd1bWVudCgnLS1leGNsdWRlLXBhdGgnLCBuYXJncz0nKycpCisgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLWluY2x1ZGUtcGF0aCcsIG5hcmdzPScrJywgYWN0aW9uPSdhcHBlbmQnKQorICAgICAgICBwYXJ0LmFkZF9hcmd1bWVudCgnLS1jaGFuZ2UtZGlyZWN0b3J5JykKICAgICAgICAgcGFydC5hZGRfYXJndW1lbnQoIi0tZXh0cmEtc3BhY2UiLCB0eXBlPXNpemV0eXBlKQogICAgICAgICBwYXJ0LmFkZF9hcmd1bWVudCgnLS1mc29wdGlvbnMnLCBkZXN0PSdmc29wdHMnKQogICAgICAgICBwYXJ0LmFkZF9hcmd1bWVudCgnLS1mc3R5cGUnLCBkZWZhdWx0PSd2ZmF0JywKQEAgLTI0NSw2ICsyNDcsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJ2Jvb3Rsb2FkZXInKToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmJvb3Rsb2FkZXI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ib290bG9hZGVyID0gcGFyc2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDb25jYXRlbmF0ZSB0aGUgc3RyaW5ncyBzZXQgaW4gQVBQRU5ECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kX3ZhciA9IGdldF9iaXRiYWtlX3ZhcigiQVBQRU5EIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhcHBlbmRfdmFyOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJvb3Rsb2FkZXIuYXBwZW5kID0gJyAnLmpvaW4oZmlsdGVyKE5vbmUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLmJvb3Rsb2FkZXIuYXBwZW5kLCBhcHBlbmRfdmFyKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9ICIlczolZDogbW9yZSB0aGFuIG9uZSBib290bG9hZGVyIHNwZWNpZmllZCIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChjb25mcGF0aCwgbGluZW5vKQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi93aWMvbWlzYy5weSBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL21pc2MucHkKaW5kZXggMWYxOTliOS4uOTE5NzViYSAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi93aWMvbWlzYy5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9taXNjLnB5CkBAIC00NSw3ICs0NSw4IEBACiAgICAgICAgICAgICAgICAgICAicGFydGVkIjogInBhcnRlZCIsCiAgICAgICAgICAgICAgICAgICAic2ZkaXNrIjogInV0aWwtbGludXgiLAogICAgICAgICAgICAgICAgICAgInNnZGlzayI6ICJncHRmZGlzayIsCi0gICAgICAgICAgICAgICAgICAic3lzbGludXgiOiAic3lzbGludXgiCisgICAgICAgICAgICAgICAgICAic3lzbGludXgiOiAic3lzbGludXgiLAorICAgICAgICAgICAgICAgICAgInRhciI6ICJ0YXIiCiAgICAgICAgICAgICAgICAgIH0KIAogZGVmIHJ1bnRvb2woY21kbG5fb3JfYXJncyk6CkBAIC0xMTIsNiArMTEzLDE1IEBACiAgICAgIiIiCiAgICAgcmV0dXJuIF9leGVjX2NtZChjbWRfYW5kX2FyZ3MsIGFzX3NoZWxsKVsxXQogCitkZWYgZmluZF9leGVjdXRhYmxlKGNtZCwgcGF0aHMpOgorICAgIHJlY2lwZSA9IGNtZAorICAgIGlmIHJlY2lwZSBpbiBOQVRJVkVfUkVDSVBFUzoKKyAgICAgICAgcmVjaXBlID0gIE5BVElWRV9SRUNJUEVTW3JlY2lwZV0KKyAgICBwcm92aWRlZCA9IGdldF9iaXRiYWtlX3ZhcigiQVNTVU1FX1BST1ZJREVEIikKKyAgICBpZiBwcm92aWRlZCBhbmQgIiVzLW5hdGl2ZSIgJSByZWNpcGUgaW4gcHJvdmlkZWQ6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICByZXR1cm4gc3Bhd24uZmluZF9leGVjdXRhYmxlKGNtZCwgcGF0aHMpCiAKIGRlZiBleGVjX25hdGl2ZV9jbWQoY21kX2FuZF9hcmdzLCBuYXRpdmVfc3lzcm9vdCwgcHNldWRvPSIiKToKICAgICAiIiIKQEAgLTEzNiw3ICsxNDYsNyBAQAogICAgIGxvZ2dlci5kZWJ1ZygiZXhlY19uYXRpdmVfY21kOiAlcyIsIG5hdGl2ZV9jbWRfYW5kX2FyZ3MpCiAKICAgICAjIElmIHRoZSBjb21tYW5kIGlzbid0IGluIHRoZSBuYXRpdmUgc3lzcm9vdCBzYXkgd2UgZmFpbGVkLgotICAgIGlmIHNwYXduLmZpbmRfZXhlY3V0YWJsZShhcmdzWzBdLCBuYXRpdmVfcGF0aHMpOgorICAgIGlmIGZpbmRfZXhlY3V0YWJsZShhcmdzWzBdLCBuYXRpdmVfcGF0aHMpOgogICAgICAgICByZXQsIG91dCA9IF9leGVjX2NtZChuYXRpdmVfY21kX2FuZF9hcmdzLCBUcnVlKQogICAgIGVsc2U6CiAgICAgICAgIHJldCA9IDEyNwpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi93aWMvcGFydGl0aW9uLnB5IGIvcG9reS9zY3JpcHRzL2xpYi93aWMvcGFydGl0aW9uLnB5CmluZGV4IGQ4MDk0MDguLjdkOWRkNjEgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BhcnRpdGlvbi5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9wYXJ0aXRpb24ucHkKQEAgLTMwLDYgKzMwLDggQEAKICAgICAgICAgc2VsZi5kZXZpY2UgPSBOb25lCiAgICAgICAgIHNlbGYuZXh0cmFfc3BhY2UgPSBhcmdzLmV4dHJhX3NwYWNlCiAgICAgICAgIHNlbGYuZXhjbHVkZV9wYXRoID0gYXJncy5leGNsdWRlX3BhdGgKKyAgICAgICAgc2VsZi5pbmNsdWRlX3BhdGggPSBhcmdzLmluY2x1ZGVfcGF0aAorICAgICAgICBzZWxmLmNoYW5nZV9kaXJlY3RvcnkgPSBhcmdzLmNoYW5nZV9kaXJlY3RvcnkKICAgICAgICAgc2VsZi5mc29wdHMgPSBhcmdzLmZzb3B0cwogICAgICAgICBzZWxmLmZzdHlwZSA9IGFyZ3MuZnN0eXBlCiAgICAgICAgIHNlbGYubGFiZWwgPSBhcmdzLmxhYmVsCkBAIC0xODksNyArMTkxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLm1vdW50cG9pbnQsIHNlbGYuc2l6ZSwgc2VsZi5maXhlZF9zaXplKSkKIAogICAgIGRlZiBwcmVwYXJlX3Jvb3RmcyhzZWxmLCBjcl93b3JrZGlyLCBvZV9idWlsZGRpciwgcm9vdGZzX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX3N5c3Jvb3QsIHJlYWxfcm9vdGZzID0gVHJ1ZSk6CisgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9zeXNyb290LCByZWFsX3Jvb3RmcyA9IFRydWUsIHBzZXVkb19kaXIgPSBOb25lKToKICAgICAgICAgIiIiCiAgICAgICAgIFByZXBhcmUgY29udGVudCBmb3IgYSByb290ZnMgcGFydGl0aW9uIGkuZS4gY3JlYXRlIGEgcGFydGl0aW9uCiAgICAgICAgIGFuZCBmaWxsIGl0IGZyb20gYSAvcm9vdGZzIGRpci4KQEAgLTE5NywxNSArMTk5LDE0IEBACiAgICAgICAgIEN1cnJlbnRseSBoYW5kbGVzIGV4dDIvMy80LCBidHJmcywgdmZhdCBhbmQgc3F1YXNoZnMuCiAgICAgICAgICIiIgogICAgICAgICBwX3ByZWZpeCA9IG9zLmVudmlyb24uZ2V0KCJQU0VVRE9fUFJFRklYIiwgIiVzL3VzciIgJSBuYXRpdmVfc3lzcm9vdCkKLSAgICAgICAgcF9sb2NhbHN0YXRlZGlyID0gb3MuZW52aXJvbi5nZXQoIlBTRVVET19MT0NBTFNUQVRFRElSIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzLy4uL3BzZXVkbyIgJSAgcm9vdGZzX2RpcikKLSAgICAgICAgcF9wYXNzd2QgPSBvcy5lbnZpcm9uLmdldCgiUFNFVURPX1BBU1NXRCIsIHJvb3Rmc19kaXIpCi0gICAgICAgIHBfbm9zeW1saW5rZXhwID0gb3MuZW52aXJvbi5nZXQoIlBTRVVET19OT1NZTUxJTktFWFAiLCAiMSIpCi0gICAgICAgIHBzZXVkbyA9ICJleHBvcnQgUFNFVURPX1BSRUZJWD0lczsiICUgcF9wcmVmaXgKLSAgICAgICAgcHNldWRvICs9ICJleHBvcnQgUFNFVURPX0xPQ0FMU1RBVEVESVI9JXM7IiAlIHBfbG9jYWxzdGF0ZWRpcgotICAgICAgICBwc2V1ZG8gKz0gImV4cG9ydCBQU0VVRE9fUEFTU1dEPSVzOyIgJSBwX3Bhc3N3ZAotICAgICAgICBwc2V1ZG8gKz0gImV4cG9ydCBQU0VVRE9fTk9TWU1MSU5LRVhQPSVzOyIgJSBwX25vc3ltbGlua2V4cAotICAgICAgICBwc2V1ZG8gKz0gIiVzICIgJSBnZXRfYml0YmFrZV92YXIoIkZBS0VST09UQ01EIikKKyAgICAgICAgaWYgKHBzZXVkb19kaXIpOgorICAgICAgICAgICAgcHNldWRvID0gImV4cG9ydCBQU0VVRE9fUFJFRklYPSVzOyIgJSBwX3ByZWZpeAorICAgICAgICAgICAgcHNldWRvICs9ICJleHBvcnQgUFNFVURPX0xPQ0FMU1RBVEVESVI9JXM7IiAlIHBzZXVkb19kaXIKKyAgICAgICAgICAgIHBzZXVkbyArPSAiZXhwb3J0IFBTRVVET19QQVNTV0Q9JXM7IiAlIHJvb3Rmc19kaXIKKyAgICAgICAgICAgIHBzZXVkbyArPSAiZXhwb3J0IFBTRVVET19OT1NZTUxJTktFWFA9MTsiCisgICAgICAgICAgICBwc2V1ZG8gKz0gIiVzICIgJSBnZXRfYml0YmFrZV92YXIoIkZBS0VST09UQ01EIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBzZXVkbyA9IE5vbmUKIAogICAgICAgICByb290ZnMgPSAiJXMvcm9vdGZzXyVzLiVzLiVzIiAlIChjcl93b3JrZGlyLCBzZWxmLmxhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubywgc2VsZi5mc3R5cGUpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5iYXNlLnB5IGIvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2luYmFzZS5weQppbmRleCBmNzRkNjQzLi5kOWI0ZTU3IDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5iYXNlLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbmJhc2UucHkKQEAgLTE4LDcgKzE4LDcgQEAKIAogUExVR0lOX1RZUEVTID0gWyJpbWFnZXIiLCAic291cmNlIl0KIAotU0NSSVBUU19QTFVHSU5fRElSID0gInNjcmlwdHMvbGliL3dpYy9wbHVnaW5zIgorU0NSSVBUU19QTFVHSU5fRElSID0gWyJzY3JpcHRzL2xpYi93aWMvcGx1Z2lucyIsICJsaWIvd2ljL3BsdWdpbnMiXQogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignd2ljJykKIApAQCAtMzgsMTAgKzM4LDExIEBACiAgICAgICAgICAgICBjbHMuX3BsdWdpbl9kaXJzID0gW29zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAncGx1Z2lucycpXQogICAgICAgICAgICAgbGF5ZXJzID0gZ2V0X2JpdGJha2VfdmFyKCJCQkxBWUVSUyIpIG9yICcnCiAgICAgICAgICAgICBmb3IgbGF5ZXJfcGF0aCBpbiBsYXllcnMuc3BsaXQoKToKLSAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGxheWVyX3BhdGgsIFNDUklQVFNfUExVR0lOX0RJUikKLSAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZXhwYW5kdXNlcihwYXRoKSkKLSAgICAgICAgICAgICAgICBpZiBwYXRoIG5vdCBpbiBjbHMuX3BsdWdpbl9kaXJzIGFuZCBvcy5wYXRoLmlzZGlyKHBhdGgpOgotICAgICAgICAgICAgICAgICAgICBjbHMuX3BsdWdpbl9kaXJzLmluc2VydCgwLCBwYXRoKQorICAgICAgICAgICAgICAgIGZvciBzY3JpcHRfcGx1Z2luX2RpciBpbiBTQ1JJUFRTX1BMVUdJTl9ESVI6CisgICAgICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4obGF5ZXJfcGF0aCwgc2NyaXB0X3BsdWdpbl9kaXIpCisgICAgICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5leHBhbmR1c2VyKHBhdGgpKQorICAgICAgICAgICAgICAgICAgICBpZiBwYXRoIG5vdCBpbiBjbHMuX3BsdWdpbl9kaXJzIGFuZCBvcy5wYXRoLmlzZGlyKHBhdGgpOgorICAgICAgICAgICAgICAgICAgICAgICAgY2xzLl9wbHVnaW5fZGlycy5pbnNlcnQoMCwgcGF0aCkKIAogICAgICAgICBpZiBwdHlwZSBub3QgaW4gUExVR0lOUzoKICAgICAgICAgICAgICMgbG9hZCBhbGwgcHR5cGUgcGx1Z2lucwpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9pbWFnZXIvZGlyZWN0LnB5IGIvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9pbWFnZXIvZGlyZWN0LnB5CmluZGV4IDI0NDFjYzMuLjJkMDZjMjQgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvaW1hZ2VyL2RpcmVjdC5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL2ltYWdlci9kaXJlY3QucHkKQEAgLTQwMyw3ICs0MDMsNyBAQAogICAgICAgICAgICAgICAgICMgUmVzZXJ2ZSBhIHNlY3RvciBmb3IgRUJSIGZvciBldmVyeSBsb2dpY2FsIHBhcnRpdGlvbgogICAgICAgICAgICAgICAgICMgYmVmb3JlIGFsaWdubWVudCBpcyBwZXJmb3JtZWQuCiAgICAgICAgICAgICAgICAgaWYgcGFydC50eXBlID09ICdsb2dpY2FsJzoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5vZmZzZXQgKz0gMQorICAgICAgICAgICAgICAgICAgICBzZWxmLm9mZnNldCArPSAyCiAKICAgICAgICAgICAgIGFsaWduX3NlY3RvcnMgPSAwCiAgICAgICAgICAgICBpZiBwYXJ0LmFsaWduOgpAQCAtNDQ2LDcgKzQ0Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4dGVuZGVkcGFydCA9IHBhcnQubnVtCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4dGVuZGVkX3NpemVfc2VjICs9IGFsaWduX3NlY3RvcnMKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5leHRlbmRlZF9zaXplX3NlYyArPSBwYXJ0LnNpemVfc2VjICsgMQorICAgICAgICAgICAgICAgICAgICBzZWxmLmV4dGVuZGVkX3NpemVfc2VjICs9IHBhcnQuc2l6ZV9zZWMgKyAyCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5wcmltYXJ5X3BhcnRfbnVtICs9IDEKICAgICAgICAgICAgICAgICAgICAgcGFydC5udW0gPSBzZWxmLnByaW1hcnlfcGFydF9udW0KQEAgLTUxMiw3ICs1MTIsNyBAQAogICAgICAgICAgICAgICAgICMgYWRkIGEgc2VjdG9yIGF0IHRoZSBiYWNrLCBzbyB0aGF0IHRoZXJlIGlzIGVub3VnaAogICAgICAgICAgICAgICAgICMgcm9vbSBmb3IgYWxsIGxvZ2ljYWwgcGFydGl0aW9ucy4KICAgICAgICAgICAgICAgICBzZWxmLl9jcmVhdGVfcGFydGl0aW9uKHNlbGYucGF0aCwgImV4dGVuZGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIHBhcnQuc3RhcnQgLSAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgcGFydC5zdGFydCAtIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4dGVuZGVkX3NpemVfc2VjKQogCiAgICAgICAgICAgICBpZiBwYXJ0LmZzdHlwZSA9PSAic3dhcCI6CkBAIC01ODAsOSArNTgwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5uYXRpdmVfc3lzcm9vdCkKIAogICAgIGRlZiBjbGVhbnVwKHNlbGYpOgotICAgICAgICAjIHJlbW92ZSBwYXJ0aXRpb24gaW1hZ2VzCi0gICAgICAgIGZvciBpbWFnZSBpbiBzZXQoc2VsZi5wYXJ0aW1hZ2VzKToKLSAgICAgICAgICAgIG9zLnJlbW92ZShpbWFnZSkKKyAgICAgICAgcGFzcwogCiAgICAgZGVmIGFzc2VtYmxlKHNlbGYpOgogICAgICAgICBsb2dnZXIuZGVidWcoIkluc3RhbGxpbmcgcGFydGl0aW9ucyIpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9yYXdjb3B5LnB5IGIvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvcmF3Y29weS5weQppbmRleCA4Mjk3MGNlLi4zYzQ5OTdkIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9yYXdjb3B5LnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL3Jhd2NvcHkucHkKQEAgLTU3LDcgKzU3LDcgQEAKICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJObyBmaWxlIHNwZWNpZmllZCIpCiAKICAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKGtlcm5lbF9kaXIsIHNvdXJjZV9wYXJhbXNbJ2ZpbGUnXSkKLSAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKGNyX3dvcmtkaXIsICIlcy4lcyIgJSAoc291cmNlX3BhcmFtc1snZmlsZSddLCBwYXJ0LmxpbmVubykpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbihjcl93b3JrZGlyLCAiJXMuJXMiICUgKG9zLnBhdGguYmFzZW5hbWUoc291cmNlX3BhcmFtc1snZmlsZSddKSwgcGFydC5saW5lbm8pKQogCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmRpcm5hbWUoZHN0KSk6CiAgICAgICAgICAgICBvcy5tYWtlZGlycyhvcy5wYXRoLmRpcm5hbWUoZHN0KSkKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL3Jvb3Rmcy5weSBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL3Jvb3Rmcy5weQppbmRleCBlMjZlOTViLi5mMWRiODNmIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9yb290ZnMucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2Uvcm9vdGZzLnB5CkBAIC0xNywxMCArMTcsMTEgQEAKIGltcG9ydCBzeXMKIAogZnJvbSBvZS5wYXRoIGltcG9ydCBjb3B5aGFyZGxpbmt0cmVlCitmcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgKIAogZnJvbSB3aWMgaW1wb3J0IFdpY0Vycm9yCiBmcm9tIHdpYy5wbHVnaW5iYXNlIGltcG9ydCBTb3VyY2VQbHVnaW4KLWZyb20gd2ljLm1pc2MgaW1wb3J0IGdldF9iaXRiYWtlX3ZhcgorZnJvbSB3aWMubWlzYyBpbXBvcnQgZ2V0X2JpdGJha2VfdmFyLCBleGVjX25hdGl2ZV9jbWQKIAogbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ3dpYycpCiAKQEAgLTMyLDYgKzMzLDIyIEBACiAgICAgbmFtZSA9ICdyb290ZnMnCiAKICAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9fdmFsaWRhdGVfcGF0aChjbWQsIHJvb3Rmc19kaXIsIHBhdGgpOgorICAgICAgICBpZiBvcy5wYXRoLmlzYWJzKHBhdGgpOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCIlczogTXVzdCBiZSByZWxhdGl2ZTogJXMiICUgKGNtZCwgb3JpZ19wYXRoKSkKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICAgICAgIyBEaXNhbGxvdyBjbGltYmluZyBvdXRzaWRlIG9mIHBhcmVudCBkaXJlY3RvcnkgdXNpbmcgJy4uJywKKyAgICAgICAgIyBiZWNhdXNlIGRvaW5nIHNvIGNvdWxkIGJlIHF1aXRlIGRpc2FzdHJvdXMgKHdlIHdpbGwgZGVsZXRlIHRoZQorICAgICAgICAjIGRpcmVjdG9yeSwgb3IgbW9kaWZ5IGEgZGlyZWN0b3J5IG91dHNpZGUgT3BlbkVtYmVkZGVkKS4KKyAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmpvaW4ocm9vdGZzX2RpciwgcGF0aCkpCisgICAgICAgIGlmIG5vdCBmdWxsX3BhdGguc3RhcnRzd2l0aChvcy5wYXRoLnJlYWxwYXRoKHJvb3Rmc19kaXIpKToKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiJXM6IE11c3QgcG9pbnQgaW5zaWRlIHRoZSByb290ZnM6IiAlIChjbWQsIHBhdGgpKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKworICAgICAgICByZXR1cm4gZnVsbF9wYXRoCisKKyAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIF9fZ2V0X3Jvb3Rmc19kaXIocm9vdGZzX2Rpcik6CiAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIocm9vdGZzX2Rpcik6CiAgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5yZWFscGF0aChyb290ZnNfZGlyKQpAQCAtNDQsNiArNjEsMTUgQEAKIAogICAgICAgICByZXR1cm4gb3MucGF0aC5yZWFscGF0aChpbWFnZV9yb290ZnNfZGlyKQogCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfX2dldF9wc2V1ZG8obmF0aXZlX3N5c3Jvb3QsIHJvb3RmcywgcHNldWRvX2Rpcik6CisgICAgICAgIHBzZXVkbyA9ICJleHBvcnQgUFNFVURPX1BSRUZJWD0lcy91c3I7IiAlIG5hdGl2ZV9zeXNyb290CisgICAgICAgIHBzZXVkbyArPSAiZXhwb3J0IFBTRVVET19MT0NBTFNUQVRFRElSPSVzOyIgJSBwc2V1ZG9fZGlyCisgICAgICAgIHBzZXVkbyArPSAiZXhwb3J0IFBTRVVET19QQVNTV0Q9JXM7IiAlIHJvb3RmcworICAgICAgICBwc2V1ZG8gKz0gImV4cG9ydCBQU0VVRE9fTk9TWU1MSU5LRVhQPTE7IgorICAgICAgICBwc2V1ZG8gKz0gIiVzICIgJSBnZXRfYml0YmFrZV92YXIoIkZBS0VST09UQ01EIikKKyAgICAgICAgcmV0dXJuIHBzZXVkbworCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGRvX3ByZXBhcmVfcGFydGl0aW9uKGNscywgcGFydCwgc291cmNlX3BhcmFtcywgY3IsIGNyX3dvcmtkaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9lX2J1aWxkZGlyLCBib290aW1nX2Rpciwga2VybmVsX2RpciwKQEAgLTY4LDEwICs5NCwxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdCBpcyBub3QgYSB2YWxpZCBwYXRoLCBleGl0aW5nIiAlIHBhcnQucm9vdGZzX2RpcikKIAogICAgICAgICBwYXJ0LnJvb3Rmc19kaXIgPSBjbHMuX19nZXRfcm9vdGZzX2Rpcihyb290ZnNfZGlyKQorICAgICAgICBwc2V1ZG9fZGlyID0gb3MucGF0aC5qb2luKHBhcnQucm9vdGZzX2RpciwgIi4uL3BzZXVkbyIpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmxleGlzdHMocHNldWRvX2Rpcik6CisgICAgICAgICAgICBsb2dnZXIud2FybigiJXMgZm9sZGVyIGRvZXMgbm90IGV4aXN0LiAiCisgICAgICAgICAgICAgICAgICAgICAgICAiVXNlcm5hbWVzIGFuZCBwZXJtaXNzaW9ucyB3aWxsIGJlIGludmFsaWQgIiAlIHBzZXVkb19kaXIpCisgICAgICAgICAgICBwc2V1ZG9fZGlyID0gTm9uZQogCiAgICAgICAgIG5ld19yb290ZnMgPSBOb25lCisgICAgICAgIG5ld19wc2V1ZG8gPSBOb25lCiAgICAgICAgICMgSGFuZGxlIGV4Y2x1ZGVkIHBhdGhzLgotICAgICAgICBpZiBwYXJ0LmV4Y2x1ZGVfcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgcGFydC5leGNsdWRlX3BhdGggb3IgcGFydC5pbmNsdWRlX3BhdGggb3IgcGFydC5jaGFuZ2VfZGlyZWN0b3J5OgogICAgICAgICAgICAgIyBXZSBuZWVkIGEgbmV3IHJvb3RmcyBkaXJlY3Rvcnkgd2UgY2FuIGRlbGV0ZSBmaWxlcyBmcm9tLiBDb3B5IHRvCiAgICAgICAgICAgICAjIHdvcmtkaXIuCiAgICAgICAgICAgICBuZXdfcm9vdGZzID0gb3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmpvaW4oY3Jfd29ya2RpciwgInJvb3RmcyVkIiAlIHBhcnQubGluZW5vKSkKQEAgLTc5LDIyICsxMTEsOTMgQEAKICAgICAgICAgICAgIGlmIG9zLnBhdGgubGV4aXN0cyhuZXdfcm9vdGZzKToKICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKG9zLnBhdGguam9pbihuZXdfcm9vdGZzKSkKIAotICAgICAgICAgICAgY29weWhhcmRsaW5rdHJlZShwYXJ0LnJvb3Rmc19kaXIsIG5ld19yb290ZnMpCisgICAgICAgICAgICBpZiBwYXJ0LmNoYW5nZV9kaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgY2QgPSBwYXJ0LmNoYW5nZV9kaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBpZiBjZFstMV0gPT0gJy8nOgorICAgICAgICAgICAgICAgICAgICBjZCA9IGNkWzotMV0KKyAgICAgICAgICAgICAgICBvcmlnX2RpciA9IGNscy5fX3ZhbGlkYXRlX3BhdGgoIi0tY2hhbmdlLWRpcmVjdG9yeSIsIHBhcnQucm9vdGZzX2RpciwgY2QpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG9yaWdfZGlyID0gcGFydC5yb290ZnNfZGlyCisgICAgICAgICAgICBjb3B5aGFyZGxpbmt0cmVlKG9yaWdfZGlyLCBuZXdfcm9vdGZzKQogCi0gICAgICAgICAgICBmb3Igb3JpZ19wYXRoIGluIHBhcnQuZXhjbHVkZV9wYXRoOgorICAgICAgICAgICAgIyBDb252ZXJ0IHRoZSBwc2V1ZG8gZGlyZWN0b3J5IHRvIGl0cyBuZXcgbG9jYXRpb24KKyAgICAgICAgICAgIGlmIChwc2V1ZG9fZGlyKToKKyAgICAgICAgICAgICAgICBuZXdfcHNldWRvID0gb3MucGF0aC5yZWFscGF0aCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGNyX3dvcmtkaXIsICJwc2V1ZG8lZCIgJSBwYXJ0LmxpbmVubykpCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5sZXhpc3RzKG5ld19wc2V1ZG8pOgorICAgICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKG5ld19wc2V1ZG8pCisgICAgICAgICAgICAgICAgb3MubWtkaXIobmV3X3BzZXVkbykKKyAgICAgICAgICAgICAgICBzaHV0aWwuY29weShvcy5wYXRoLmpvaW4ocHNldWRvX2RpciwgImZpbGVzLmRiIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKG5ld19wc2V1ZG8sICJmaWxlcy5kYiIpKQorCisgICAgICAgICAgICAgICAgcHNldWRvX2NtZCA9ICIlcyAtQiAtbSAlcyAtTSAlcyIgJSAoY2xzLl9fZ2V0X3BzZXVkbyhuYXRpdmVfc3lzcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19yb290ZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcHNldWRvKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnX2RpciwgbmV3X3Jvb3RmcykKKyAgICAgICAgICAgICAgICBleGVjX25hdGl2ZV9jbWQocHNldWRvX2NtZCwgbmF0aXZlX3N5c3Jvb3QpCisKKyAgICAgICAgICAgIGZvciBpbl9wYXRoIGluIHBhcnQuaW5jbHVkZV9wYXRoIG9yIFtdOgorICAgICAgICAgICAgICAgICNwYXJzZSBhcmd1bWVudHMKKyAgICAgICAgICAgICAgICBpbmNsdWRlX3BhdGggPSBpbl9wYXRoWzBdCisgICAgICAgICAgICAgICAgaWYgbGVuKGluX3BhdGgpID4gMjoKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCInSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBpbmNsdWRlLXBhdGgiKQorICAgICAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAgICAgICAgICAgIGlmIGxlbihpbl9wYXRoKSA9PSAyOgorICAgICAgICAgICAgICAgICAgICBwYXRoID0gaW5fcGF0aFsxXQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHBhdGggPSBOb25lCisKKyAgICAgICAgICAgICAgICAjIFBhY2sgZmlsZXMgdG8gYmUgaW5jbHVkZWQgaW50byBhIHRhciBmaWxlLgorICAgICAgICAgICAgICAgICMgV2UgbmVlZCB0byBjcmVhdGUgYSB0YXIgZmlsZSwgYmVjYXVzZSB0aGF0IHdheSB3ZSBjYW4ga2VlcCB0aGUKKyAgICAgICAgICAgICAgICAjIHBlcm1pc3Npb25zIGZyb20gdGhlIGZpbGVzIGV2ZW4gd2hlbiB0aGV5IGJlbG9uZyB0byBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAjIHBzZXVkbyBlbnZpcm9tZW50cy4KKyAgICAgICAgICAgICAgICAjIElmIHdlIHNpbXBseSBjb3B5IGZpbGVzIHVzaW5nIGNvcHloYXJkbGlua3RyZWUvY29weXRyZWUuLi4gdGhlCisgICAgICAgICAgICAgICAgIyBjb3BpZWQgZmlsZXMgd2lsbCBiZWxvbmcgdG8gdGhlIHVzZXIgcnVubmluZyB3aWMuCisgICAgICAgICAgICAgICAgdGFyX2ZpbGUgPSBvcy5wYXRoLnJlYWxwYXRoKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGNyX3dvcmtkaXIsICJpbmNsdWRlLXBhdGglZC50YXIiICUgcGFydC5saW5lbm8pKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGluY2x1ZGVfcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKGluY2x1ZGVfcGF0aCkpCisgICAgICAgICAgICAgICAgICAgIHRhcl9jbWQgPSAidGFyIGMgLS1vd25lcj1yb290IC0tZ3JvdXA9cm9vdCAtZiAlcyAtQyAlcyAlcyIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcl9maWxlLCBwYXJlbnQsIG9zLnBhdGgucmVscGF0aChpbmNsdWRlX3BhdGgsIHBhcmVudCkpCisgICAgICAgICAgICAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZCh0YXJfY21kLCBuYXRpdmVfc3lzcm9vdCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiBpbmNsdWRlX3BhdGggaW4ga3Jvb3Rmc19kaXI6CisgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX3BhdGggPSBrcm9vdGZzX2RpcltpbmNsdWRlX3BhdGhdCisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfcGF0aCA9IGNscy5fX2dldF9yb290ZnNfZGlyKGluY2x1ZGVfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9wc2V1ZG8gPSBvcy5wYXRoLmpvaW4oaW5jbHVkZV9wYXRoLCAiLi4vcHNldWRvIikKKyAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5sZXhpc3RzKGluY2x1ZGVfcHNldWRvKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHBzZXVkbyA9IGNscy5fX2dldF9wc2V1ZG8obmF0aXZlX3N5c3Jvb3QsIGluY2x1ZGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9wc2V1ZG8pCisgICAgICAgICAgICAgICAgICAgICAgICB0YXJfY21kID0gInRhciBjZiAlcyAtQyAlcyAuIiAlICh0YXJfZmlsZSwgaW5jbHVkZV9wYXRoKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcHNldWRvID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgdGFyX2NtZCA9ICJ0YXIgYyAtLW93bmVyPXJvb3QgLS1ncm91cD1yb290IC1mICVzIC1DICVzIC4iICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJfZmlsZSwgaW5jbHVkZV9wYXRoKQorICAgICAgICAgICAgICAgICAgICBleGVjX25hdGl2ZV9jbWQodGFyX2NtZCwgbmF0aXZlX3N5c3Jvb3QsIHBzZXVkbykKKworICAgICAgICAgICAgICAgICNjcmVhdGUgZGVzdGluYXRpb24KKyAgICAgICAgICAgICAgICBpZiBwYXRoOgorICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IGNscy5fX3ZhbGlkYXRlX3BhdGgoIi0taW5jbHVkZS1wYXRoIiwgbmV3X3Jvb3RmcywgcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgUGF0aChkZXN0aW5hdGlvbikubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gbmV3X3Jvb3RmcworCisgICAgICAgICAgICAgICAgI2V4dHJhY3QgZGVzdGluYXRpb24KKyAgICAgICAgICAgICAgICB1bnRhcl9jbWQgPSAidGFyIHhmICVzIC1DICVzIiAlICh0YXJfZmlsZSwgZGVzdGluYXRpb24pCisgICAgICAgICAgICAgICAgaWYgbmV3X3BzZXVkbzoKKyAgICAgICAgICAgICAgICAgICAgcHNldWRvID0gY2xzLl9fZ2V0X3BzZXVkbyhuYXRpdmVfc3lzcm9vdCwgbmV3X3Jvb3RmcywgbmV3X3BzZXVkbykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBwc2V1ZG8gPSBOb25lCisgICAgICAgICAgICAgICAgZXhlY19uYXRpdmVfY21kKHVudGFyX2NtZCwgbmF0aXZlX3N5c3Jvb3QsIHBzZXVkbykKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUodGFyX2ZpbGUpCisKKyAgICAgICAgICAgIGZvciBvcmlnX3BhdGggaW4gcGFydC5leGNsdWRlX3BhdGggb3IgW106CiAgICAgICAgICAgICAgICAgcGF0aCA9IG9yaWdfcGF0aAotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNhYnMocGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiTXVzdCBiZSByZWxhdGl2ZTogLS1leGNsdWRlLXBhdGg9JXMiICUgb3JpZ19wYXRoKQotICAgICAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQogCi0gICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmpvaW4obmV3X3Jvb3RmcywgcGF0aCkpCisgICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gY2xzLl9fdmFsaWRhdGVfcGF0aCgiLS1leGNsdWRlLXBhdGgiLCBuZXdfcm9vdGZzLCBwYXRoKQogCi0gICAgICAgICAgICAgICAgIyBEaXNhbGxvdyBjbGltYmluZyBvdXRzaWRlIG9mIHBhcmVudCBkaXJlY3RvcnkgdXNpbmcgJy4uJywKLSAgICAgICAgICAgICAgICAjIGJlY2F1c2UgZG9pbmcgc28gY291bGQgYmUgcXVpdGUgZGlzYXN0cm91cyAod2Ugd2lsbCBkZWxldGUgdGhlCi0gICAgICAgICAgICAgICAgIyBkaXJlY3RvcnkpLgotICAgICAgICAgICAgICAgIGlmIG5vdCBmdWxsX3BhdGguc3RhcnRzd2l0aChuZXdfcm9vdGZzKToKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCInJXMnIHBvaW50cyB0byBhIHBhdGggb3V0c2lkZSB0aGUgcm9vdGZzIiAlIG9yaWdfcGF0aCkKLSAgICAgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5sZXhpc3RzKGZ1bGxfcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgICAgICBpZiBwYXRoLmVuZHN3aXRoKG9zLnNlcCk6CiAgICAgICAgICAgICAgICAgICAgICMgRGVsZXRlIGNvbnRlbnQgb25seS4KQEAgLTEwOSw0ICsyMTIsNSBAQAogICAgICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGZ1bGxfcGF0aCkKIAogICAgICAgICBwYXJ0LnByZXBhcmVfcm9vdGZzKGNyX3dvcmtkaXIsIG9lX2J1aWxkZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19yb290ZnMgb3IgcGFydC5yb290ZnNfZGlyLCBuYXRpdmVfc3lzcm9vdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcm9vdGZzIG9yIHBhcnQucm9vdGZzX2RpciwgbmF0aXZlX3N5c3Jvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHNldWRvX2RpciA9IG5ld19wc2V1ZG8gb3IgcHNldWRvX2RpcikKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9vZS1idWlsZC1wZXJmLXJlcG9ydCBiL3Bva3kvc2NyaXB0cy9vZS1idWlsZC1wZXJmLXJlcG9ydAppbmRleCAyMWJkZTdlLi5lNzgxZjRmIDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvb2UtYnVpbGQtcGVyZi1yZXBvcnQKKysrIGIvcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtcmVwb3J0CkBAIC0zNzIsNyArMzcyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFydF9vcHRzPWNoYXJ0X29wdHMpKQogCiAKLWRlZiBnZXRfYnVpbGRzdGF0cyhyZXBvLCBub3Rlc19yZWYsIHJldnMsIG91dGRpcj1Ob25lKToKK2RlZiBnZXRfYnVpbGRzdGF0cyhyZXBvLCBub3Rlc19yZWYsIG5vdGVzX3JlZjIsIHJldnMsIG91dGRpcj1Ob25lKToKICAgICAiIiJHZXQgdGhlIGJ1aWxkc3RhdHMgZnJvbSBnaXQgbm90ZXMiIiIKICAgICBmdWxsX3JlZiA9ICdyZWZzL25vdGVzLycgKyBub3Rlc19yZWYKICAgICBpZiBub3QgcmVwby5yZXZfcGFyc2UoZnVsbF9yZWYpOgpAQCAtMzkxLDggKzM5MSwxMyBAQAogICAgICAgICBmb3IgdGFnIGluIHJldi50YWdzOgogICAgICAgICAgICAgbG9nLmRlYnVnKCcgICAgJXMnLCB0YWcpCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgYnNfYWxsID0ganNvbi5sb2FkcyhyZXBvLnJ1bl9jbWQoWydub3RlcycsICctLXJlZicsIG5vdGVzX3JlZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3cnLCB0YWcgKyAnXjAnXSkpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBic19hbGwgPSBqc29uLmxvYWRzKHJlcG8ucnVuX2NtZChbJ25vdGVzJywgJy0tcmVmJywgbm90ZXNfcmVmLCAnc2hvdycsIHRhZyArICdeMCddKSkKKyAgICAgICAgICAgICAgICBleGNlcHQgR2l0RXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdGVzX3JlZjI6CisgICAgICAgICAgICAgICAgICAgICAgICBic19hbGwgPSBqc29uLmxvYWRzKHJlcG8ucnVuX2NtZChbJ25vdGVzJywgJy0tcmVmJywgbm90ZXNfcmVmMiwgJ3Nob3cnLCB0YWcgKyAnXjAnXSkpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZXhjZXB0IEdpdEVycm9yOgogICAgICAgICAgICAgICAgIGxvZy53YXJuaW5nKCJCdWlsZHN0YXRzIG5vdCBmb3VuZCBmb3IgJXMiLCB0YWcpCiAgICAgICAgICAgICAgICAgYnNfYWxsID0ge30KQEAgLTU4OSw5ICs1OTQsMTIgQEAKICAgICBidWlsZHN0YXRzID0gTm9uZQogICAgIGlmIGFyZ3MuZHVtcF9idWlsZHN0YXRzIG9yIGFyZ3MuaHRtbDoKICAgICAgICAgb3V0ZGlyID0gJ29lLWJ1aWxkLXBlcmYtYnVpbGRzdGF0cycgaWYgYXJncy5kdW1wX2J1aWxkc3RhdHMgZWxzZSBOb25lCi0gICAgICAgIG5vdGVzX3JlZiA9ICdidWlsZHN0YXRzL3t9L3t9L3t9Jy5mb3JtYXQoYXJncy5ob3N0bmFtZSwgYXJncy5icmFuY2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5tYWNoaW5lKQotICAgICAgICBidWlsZHN0YXRzID0gZ2V0X2J1aWxkc3RhdHMocmVwbywgbm90ZXNfcmVmLCBbcmV2X2wsIHJldl9yXSwgb3V0ZGlyKQorICAgICAgICBub3Rlc19yZWYgPSAnYnVpbGRzdGF0cy97fS97fS97fScuZm9ybWF0KGFyZ3MuaG9zdG5hbWUsIGFyZ3MuYnJhbmNoLCBhcmdzLm1hY2hpbmUpCisgICAgICAgIG5vdGVzX3JlZjIgPSBOb25lCisgICAgICAgIGlmIGFyZ3MuYnJhbmNoMjoKKyAgICAgICAgICAgIG5vdGVzX3JlZiA9ICdidWlsZHN0YXRzL3t9L3t9L3t9Jy5mb3JtYXQoYXJncy5ob3N0bmFtZSwgYXJncy5icmFuY2gyLCBhcmdzLm1hY2hpbmUpCisgICAgICAgICAgICBub3Rlc19yZWYyID0gJ2J1aWxkc3RhdHMve30ve30ve30nLmZvcm1hdChhcmdzLmhvc3RuYW1lLCBhcmdzLmJyYW5jaCwgYXJncy5tYWNoaW5lKQorICAgICAgICBidWlsZHN0YXRzID0gZ2V0X2J1aWxkc3RhdHMocmVwbywgbm90ZXNfcmVmLCBub3Rlc19yZWYyLCBbcmV2X2wsIHJldl9yXSwgb3V0ZGlyKQogCiAgICAgIyBQcmludCByZXBvcnQKICAgICBpZiBub3QgYXJncy5odG1sOgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtdGVzdCBiL3Bva3kvc2NyaXB0cy9vZS1idWlsZC1wZXJmLXRlc3QKaW5kZXggMGIxM2YyNC4uMDBlMDBiNCAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtdGVzdAorKysgYi9wb2t5L3NjcmlwdHMvb2UtYnVpbGQtcGVyZi10ZXN0CkBAIC0xLDQgKzEsNCBAQAotIyEvdXNyL2Jpbi9weXRob24zCisjIS91c3IvYmluL2VudiBweXRob24zCiAjCiAjIEJ1aWxkIHBlcmZvcm1hbmNlIHRlc3Qgc2NyaXB0CiAjCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwgYi9wb2t5L3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwKaW5kZXggOTZiYjBjMy4uYmEwYTliNCAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL29lLWJ1aWxkZW52LWludGVybmFsCisrKyBiL3Bva3kvc2NyaXB0cy9vZS1idWlsZGVudi1pbnRlcm5hbApAQCAtMjksMjIgKzI5LDE1IEBACiAgICAgcmV0dXJuIDEKIGZpCiAKLXB5X3YyN19jaGVjaz0kKHB5dGhvbjIgLWMgJ2ltcG9ydCBzeXM7IHByaW50IHN5cy52ZXJzaW9uX2luZm8gPj0gKDIsNywzKScpCi1pZiBbICIkcHlfdjI3X2NoZWNrIiAhPSAiVHJ1ZSIgXTsgdGhlbgotICAgIGVjaG8gPiYyICJPcGVuRW1iZWRkZWQgcmVxdWlyZXMgJ3B5dGhvbicgdG8gYmUgcHl0aG9uIHYyICg+PSAyLjcuMyksIG5vdCBweXRob24gdjMuIgotICAgIGVjaG8gPiYyICJQbGVhc2UgdXBncmFkZSB5b3VyIHB5dGhvbiB2Mi4iCi1maQotdW5zZXQgcHlfdjI3X2NoZWNrCi0KICMgV2UgcG90ZW50aWFsbHkgaGF2ZSBjb2RlIHRoYXQgZG9lc24ndCBwYXJzZSBjb3JyZWN0bHkgd2l0aCBvbGRlciB2ZXJzaW9ucyAKICMgb2YgUHl0aG9uLCBhbmQgcmF0aGVyIHRoYW4gZml4aW5nIHRoYXQgYW5kIGJlaW5nIGV0ZXJuYWxseSB2aWdpbGFudCBmb3IgCiAjIGFueSBvdGhlciBuZXcgZmVhdHVyZSB1c2UsIGp1c3QgY2hlY2sgdGhlIHZlcnNpb24gaGVyZS4KLXB5X3YzNF9jaGVjaz0kKHB5dGhvbjMgLWMgJ2ltcG9ydCBzeXM7IHByaW50KHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsNCwwKSknKQotaWYgWyAiJHB5X3YzNF9jaGVjayIgIT0gIlRydWUiIF07IHRoZW4KLSAgICBlY2hvID4mMiAiQml0QmFrZSByZXF1aXJlcyBQeXRob24gMy40LjAgb3IgbGF0ZXIgYXMgJ3B5dGhvbjMnIgorcHlfdjM1X2NoZWNrPSQocHl0aG9uMyAtYyAnaW1wb3J0IHN5czsgcHJpbnQoc3lzLnZlcnNpb25faW5mbyA+PSAoMyw1LDApKScpCitpZiBbICIkcHlfdjM1X2NoZWNrIiAhPSAiVHJ1ZSIgXTsgdGhlbgorICAgIGVjaG8gPiYyICJCaXRCYWtlIHJlcXVpcmVzIFB5dGhvbiAzLjUuMCBvciBsYXRlciBhcyAncHl0aG9uMyAoc2NyaXB0cy9pbnN0YWxsLWJ1aWxkdG9vbHMgY2FuIGJlIHVzZWQgaWYgbmVlZGVkKSciCiAgICAgcmV0dXJuIDEKIGZpCi11bnNldCBweV92MzRfY2hlY2sKK3Vuc2V0IHB5X3YzNV9jaGVjawogCiBpZiBbIC16ICIkQkRJUiIgXTsgdGhlbgogICAgIGlmIFsgLXogIiQxIiBdOyB0aGVuCkBAIC0xMTMsNyArMTA2LDggQEAKIEhUVFBTX1BST1hZIGh0dHBzX3Byb3h5IEZUUF9QUk9YWSBmdHBfcHJveHkgRlRQU19QUk9YWSBmdHBzX3Byb3h5IEFMTF9QUk9YWSBcCiBhbGxfcHJveHkgTk9fUFJPWFkgbm9fcHJveHkgU1NIX0FHRU5UX1BJRCBTU0hfQVVUSF9TT0NLIEJCX1NSQ1JFVl9QT0xJQ1kgXAogU0RLTUFDSElORSBCQl9OVU1CRVJfVEhSRUFEUyBCQl9OT19ORVRXT1JLIFBBUkFMTEVMX01BS0UgR0lUX1BST1hZX0NPTU1BTkQgXAotU09DS1M1X1BBU1NXRCBTT0NLUzVfVVNFUiBTQ1JFRU5ESVIgU1RBTVBTX0RJUiBCQlBBVEhfRVhUUkEgQkJfU0VUU0NFTkVfRU5GT1JDRSIKK1NPQ0tTNV9QQVNTV0QgU09DS1M1X1VTRVIgU0NSRUVORElSIFNUQU1QU19ESVIgQkJQQVRIX0VYVFJBIEJCX1NFVFNDRU5FX0VORk9SQ0UgXAorQkJfTE9HQ09ORklHIgogCiBCQl9FTlZfRVhUUkFXSElURT0iJChlY2hvICRCQl9FTlZfRVhUUkFXSElURSAkQkJfRU5WX0VYVFJBV0hJVEVfT0UgfCB0ciAnICcgJ1xuJyB8IExDX0FMTD1DIHNvcnQgLS11bmlxdWUgfCB0ciAnXG4nICcgJykiCiAKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9vZS1wa2dkYXRhLWJyb3dzZXIgYi9wb2t5L3NjcmlwdHMvb2UtcGtnZGF0YS1icm93c2VyCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjhkMjIzMTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L3NjcmlwdHMvb2UtcGtnZGF0YS1icm93c2VyCkBAIC0wLDAgKzEsMjUzIEBACisjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMworCitpbXBvcnQgb3MsIHN5cywgZW51bSwgYXN0CisKK3NjcmlwdHNfcGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKK2xpYl9wYXRoID0gc2NyaXB0c19wYXRoICsgJy9saWInCitzeXMucGF0aCA9IHN5cy5wYXRoICsgW2xpYl9wYXRoXQorCitpbXBvcnQgc2NyaXB0cGF0aAorYml0YmFrZXBhdGggPSBzY3JpcHRwYXRoLmFkZF9iaXRiYWtlX2xpYl9wYXRoKCkKK2lmIG5vdCBiaXRiYWtlcGF0aDoKKyAgICBwcmludCgiVW5hYmxlIHRvIGZpbmQgYml0YmFrZSBieSBzZWFyY2hpbmcgcGFyZW50IGRpcmVjdG9yeSBvZiB0aGlzIHNjcmlwdCBvciBQQVRIIikKKyAgICBzeXMuZXhpdCgxKQoraW1wb3J0IGJiCisKK2ltcG9ydCBnaQorZ2kucmVxdWlyZV92ZXJzaW9uKCdHdGsnLCAnMy4wJykKK2Zyb20gZ2kucmVwb3NpdG9yeSBpbXBvcnQgR3RrLCBHZGssIEdPYmplY3QKKworUmVjaXBlQ29sdW1ucyA9IGVudW0uSW50RW51bSgiUmVjaXBlQ29sdW1ucyIsIHsiUmVjaXBlIjogMH0pCitQYWNrYWdlQ29sdW1ucyA9IGVudW0uSW50RW51bSgiUGFja2FnZUNvbHVtbnMiLCB7IlBhY2thZ2UiOiAwLCAiU2l6ZSI6IDF9KQorRmlsZUNvbHVtbnMgPSBlbnVtLkludEVudW0oIkZpbGVDb2x1bW5zIiwgeyJGaWxlbmFtZSI6IDAsICJTaXplIjogMX0pCisKK2ltcG9ydCB0aW1lCitkZWYgdGltZWl0KGYpOgorICAgIGRlZiB0aW1lZCgqYXJncywgKiprdyk6CisgICAgICAgIHRzID0gdGltZS50aW1lKCkKKyAgICAgICAgcHJpbnQgKCJmdW5jOiVyIGNhbGxpbmciICUgZi5fX25hbWVfXykKKyAgICAgICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKKyAgICAgICAgdGUgPSB0aW1lLnRpbWUoKQorICAgICAgICBwcmludCAoJ2Z1bmM6JXIgYXJnczpbJXIsICVyXSB0b29rOiAlMi40ZiBzZWMnICUgXAorICAgICAgICAgIChmLl9fbmFtZV9fLCBhcmdzLCBrdywgdGUtdHMpKQorICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgcmV0dXJuIHRpbWVkCisKK2RlZiBodW1hbl9zaXplKG5ieXRlcyk6CisgICAgaW1wb3J0IG1hdGgKKyAgICBzdWZmaXhlcyA9IFsnQicsICdrQicsICdNQicsICdHQicsICdUQicsICdQQiddCisgICAgaHVtYW4gPSBuYnl0ZXMKKyAgICByYW5rID0gMAorICAgIGlmIG5ieXRlcyAhPSAwOgorICAgICAgICByYW5rID0gaW50KChtYXRoLmxvZzEwKG5ieXRlcykpIC8gMykKKyAgICAgICAgcmFuayA9IG1pbihyYW5rLCBsZW4oc3VmZml4ZXMpIC0gMSkKKyAgICAgICAgaHVtYW4gPSBuYnl0ZXMgLyAoMTAwMC4wICoqIHJhbmspCisgICAgZiA9ICgnJS4yZicgJSBodW1hbikucnN0cmlwKCcwJykucnN0cmlwKCcuJykKKyAgICByZXR1cm4gJyVzICVzJyAlIChmLCBzdWZmaXhlc1tyYW5rXSkKKworZGVmIGxvYWQoZmlsZW5hbWUsIHN1ZmZpeD1Ob25lKToKKyAgICBmcm9tIGNvbmZpZ3BhcnNlciBpbXBvcnQgQ29uZmlnUGFyc2VyCisgICAgZnJvbSBpdGVydG9vbHMgaW1wb3J0IGNoYWluCisKKyAgICBwYXJzZXIgPSBDb25maWdQYXJzZXIoKQorICAgIGlmIHN1ZmZpeDoKKyAgICAgICAgcGFyc2VyLm9wdGlvbnhmb3JtID0gbGFtYmRhIG9wdGlvbjogb3B0aW9uLnJlcGxhY2UoIl8iICsgc3VmZml4LCAiIikKKyAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIGxpbmVzOgorICAgICAgICBsaW5lcyA9IGNoYWluKCgiW2Zha2VdIiwpLCBsaW5lcykKKyAgICAgICAgcGFyc2VyLnJlYWRfZmlsZShsaW5lcykKKworICAgICMgVE9ETyBleHRyYWN0IHRoZSBkYXRhIGFuZCBwdXQgaXQgaW50byBhIHJlYWwgZGljdCBzbyB3ZSBjYW4gdHJhbnNmb3JtIHNvbWUKKyAgICAjIHZhbHVlcyB0byBpbnRzPworICAgIHJldHVybiBwYXJzZXJbImZha2UiXQorCitkZWYgZmluZF9wa2dkYXRhKCk6CisgICAgaW1wb3J0IHN1YnByb2Nlc3MKKyAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgoImJpdGJha2UiLCAiLWUiKSwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCisgICAgZm9yIGxpbmUgaW4gb3V0cHV0LnNwbGl0bGluZXMoKToKKyAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJQS0dEQVRBX0RJUj0iKToKKyAgICAgICAgICAgIHJldHVybiBsaW5lLnNwbGl0KCI9IiwgMSlbMV0uc3RyaXAoIlwnXCIiKQorICAgICMgVE9ETyBleGNlcHRpb24gb3Igc29tZXRoaW5nCisgICAgcmV0dXJuIE5vbmUKKworZGVmIHBhY2thZ2VzX2luX3JlY2lwZShwa2dkYXRhLCByZWNpcGUpOgorICAgICIiIgorICAgIExvYWQgdGhlIHJlY2lwZSBwa2dkYXRhIHRvIGRldGVybWluZSB0aGUgbGlzdCBvZiBydW50aW1lIHBhY2thZ2VzLgorICAgICIiIgorICAgIGRhdGEgPSBsb2FkKG9zLnBhdGguam9pbihwa2dkYXRhLCByZWNpcGUpKQorICAgIHBhY2thZ2VzID0gZGF0YVsiUEFDS0FHRVMiXS5zcGxpdCgpCisgICAgcmV0dXJuIHBhY2thZ2VzCisKK2RlZiBsb2FkX3J1bnRpbWVfcGFja2FnZShwa2dkYXRhLCBwYWNrYWdlKToKKyAgICByZXR1cm4gbG9hZChvcy5wYXRoLmpvaW4ocGtnZGF0YSwgInJ1bnRpbWUiLCBwYWNrYWdlKSwgc3VmZml4PXBhY2thZ2UpCisKK2RlZiByZWNpcGVfZnJvbV9wYWNrYWdlKHBrZ2RhdGEsIHBhY2thZ2UpOgorICAgIGRhdGEgPSBsb2FkKG9zLnBhdGguam9pbihwa2dkYXRhLCAicnVudGltZSIsIHBhY2thZ2UpLCBzdWZmaXg9cGFja2FnZSkKKyAgICByZXR1cm4gZGF0YVsiUE4iXQorCitkZWYgc3VtbWFyeShkYXRhKToKKyAgICBzID0gIiIKKyAgICBzICs9ICJ7MFtQS0ddfSB7MFtQS0dWXX0tezBbUEtHUl19XG57MFtMSUNFTlNFXX1cbnswW1NVTU1BUlldfVxuIi5mb3JtYXQoZGF0YSkKKworICAgIHJldHVybiBzCisKKworY2xhc3MgUGtnVWkoKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGtnZGF0YSk6CisgICAgICAgIHNlbGYucGtnZGF0YSA9IHBrZ2RhdGEKKyAgICAgICAgc2VsZi5jdXJyZW50X3JlY2lwZSA9IE5vbmUKKyAgICAgICAgc2VsZi5yZWNpcGVfaXRlcnMgPSB7fQorICAgICAgICBzZWxmLnBhY2thZ2VfaXRlcnMgPSB7fQorCisgICAgICAgIGJ1aWxkZXIgPSBHdGsuQnVpbGRlcigpCisgICAgICAgIGJ1aWxkZXIuYWRkX2Zyb21fZmlsZShvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIm9lLXBrZ2RhdGEtYnJvd3Nlci5nbGFkZSIpKQorCisgICAgICAgIHNlbGYud2luZG93ID0gYnVpbGRlci5nZXRfb2JqZWN0KCJ3aW5kb3ciKQorICAgICAgICBzZWxmLndpbmRvdy5jb25uZWN0KCJkZWxldGUtZXZlbnQiLCBHdGsubWFpbl9xdWl0KQorCisgICAgICAgIHNlbGYucmVjaXBlX3N0b3JlID0gYnVpbGRlci5nZXRfb2JqZWN0KCJyZWNpcGVfc3RvcmUiKQorICAgICAgICBzZWxmLnJlY2lwZV92aWV3ID0gYnVpbGRlci5nZXRfb2JqZWN0KCJyZWNpcGVfdmlldyIpCisgICAgICAgIHNlbGYucGFja2FnZV9zdG9yZSA9IGJ1aWxkZXIuZ2V0X29iamVjdCgicGFja2FnZV9zdG9yZSIpCisgICAgICAgIHNlbGYucGFja2FnZV92aWV3ID0gYnVpbGRlci5nZXRfb2JqZWN0KCJwYWNrYWdlX3ZpZXciKQorCisgICAgICAgICMgU29tZWhvdyByZXNpemFibGUgZG9lcyBub3QgZ2V0IHNldCB2aWEgYnVpbGRlciB4bWwKKyAgICAgICAgcGFja2FnZV9uYW1lX2NvbHVtbiA9IGJ1aWxkZXIuZ2V0X29iamVjdCgicGFja2FnZV9uYW1lX2NvbHVtbiIpCisgICAgICAgIHBhY2thZ2VfbmFtZV9jb2x1bW4uc2V0X3Jlc2l6YWJsZShUcnVlKQorICAgICAgICBmaWxlX25hbWVfY29sdW1uID0gYnVpbGRlci5nZXRfb2JqZWN0KCJmaWxlX25hbWVfY29sdW1uIikKKyAgICAgICAgZmlsZV9uYW1lX2NvbHVtbi5zZXRfcmVzaXphYmxlKFRydWUpCisKKyAgICAgICAgc2VsZi5yZWNpcGVfdmlldy5nZXRfc2VsZWN0aW9uKCkuY29ubmVjdCgiY2hhbmdlZCIsIHNlbGYub25fcmVjaXBlX2NoYW5nZWQpCisgICAgICAgIHNlbGYucGFja2FnZV92aWV3LmdldF9zZWxlY3Rpb24oKS5jb25uZWN0KCJjaGFuZ2VkIiwgc2VsZi5vbl9wYWNrYWdlX2NoYW5nZWQpCisKKyAgICAgICAgc2VsZi5wYWNrYWdlX3N0b3JlLnNldF9zb3J0X2NvbHVtbl9pZChQYWNrYWdlQ29sdW1ucy5QYWNrYWdlLCBHdGsuU29ydFR5cGUuQVNDRU5ESU5HKQorICAgICAgICBidWlsZGVyLmdldF9vYmplY3QoInBhY2thZ2Vfc2l6ZV9jb2x1bW4iKS5zZXRfY2VsbF9kYXRhX2Z1bmMoYnVpbGRlci5nZXRfb2JqZWN0KCJwYWNrYWdlX3NpemVfY2VsbCIpLCBsYW1iZGEgY29sdW1uLCBjZWxsLCBtb2RlbCwgaXRlciwgZGF0YTogY2VsbC5zZXRfcHJvcGVydHkoInRleHQiLCBodW1hbl9zaXplKG1vZGVsW2l0ZXJdW1BhY2thZ2VDb2x1bW5zLlNpemVdKSkpCisKKyAgICAgICAgc2VsZi5sYWJlbCA9IGJ1aWxkZXIuZ2V0X29iamVjdCgibGFiZWwxIikKKyAgICAgICAgc2VsZi5kZXBlbmRzX2xhYmVsID0gYnVpbGRlci5nZXRfb2JqZWN0KCJkZXBlbmRzX2xhYmVsIikKKyAgICAgICAgc2VsZi5yZWNvbW1lbmRzX2xhYmVsID0gYnVpbGRlci5nZXRfb2JqZWN0KCJyZWNvbW1lbmRzX2xhYmVsIikKKyAgICAgICAgc2VsZi5zdWdnZXN0c19sYWJlbCA9IGJ1aWxkZXIuZ2V0X29iamVjdCgic3VnZ2VzdHNfbGFiZWwiKQorICAgICAgICBzZWxmLnByb3ZpZGVzX2xhYmVsID0gYnVpbGRlci5nZXRfb2JqZWN0KCJwcm92aWRlc19sYWJlbCIpCisKKyAgICAgICAgc2VsZi5kZXBlbmRzX2xhYmVsLmNvbm5lY3QoImFjdGl2YXRlLWxpbmsiLCBzZWxmLm9uX2xpbmtfYWN0aXZhdGUpCisgICAgICAgIHNlbGYucmVjb21tZW5kc19sYWJlbC5jb25uZWN0KCJhY3RpdmF0ZS1saW5rIiwgc2VsZi5vbl9saW5rX2FjdGl2YXRlKQorICAgICAgICBzZWxmLnN1Z2dlc3RzX2xhYmVsLmNvbm5lY3QoImFjdGl2YXRlLWxpbmsiLCBzZWxmLm9uX2xpbmtfYWN0aXZhdGUpCisKKyAgICAgICAgc2VsZi5maWxlX3N0b3JlID0gYnVpbGRlci5nZXRfb2JqZWN0KCJmaWxlX3N0b3JlIikKKyAgICAgICAgc2VsZi5maWxlX3N0b3JlLnNldF9zb3J0X2NvbHVtbl9pZChGaWxlQ29sdW1ucy5GaWxlbmFtZSwgR3RrLlNvcnRUeXBlLkFTQ0VORElORykKKyAgICAgICAgYnVpbGRlci5nZXRfb2JqZWN0KCJmaWxlX3NpemVfY29sdW1uIikuc2V0X2NlbGxfZGF0YV9mdW5jKGJ1aWxkZXIuZ2V0X29iamVjdCgiZmlsZV9zaXplX2NlbGwiKSwgbGFtYmRhIGNvbHVtbiwgY2VsbCwgbW9kZWwsIGl0ZXIsIGRhdGE6IGNlbGwuc2V0X3Byb3BlcnR5KCJ0ZXh0IiwgaHVtYW5fc2l6ZShtb2RlbFtpdGVyXVtGaWxlQ29sdW1ucy5TaXplXSkpKQorCisgICAgICAgIHNlbGYuZmlsZXNfdmlldyA9IGJ1aWxkZXIuZ2V0X29iamVjdCgiZmlsZXNfc2Nyb2xsdmlldyIpCisgICAgICAgIHNlbGYuZmlsZXNfbGFiZWwgPSBidWlsZGVyLmdldF9vYmplY3QoImZpbGVzX2xhYmVsIikKKworICAgICAgICBzZWxmLmxvYWRfcmVjaXBlcygpCisKKyAgICAgICAgc2VsZi5yZWNpcGVfdmlldy5zZXRfY3Vyc29yKEd0ay5UcmVlUGF0aC5uZXdfZmlyc3QoKSkKKworICAgICAgICBzZWxmLndpbmRvdy5zaG93KCkKKworICAgIGRlZiBvbl9saW5rX2FjdGl2YXRlKHNlbGYsIGxhYmVsLCB1cmxfc3RyaW5nKToKKyAgICAgICAgZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlCisgICAgICAgIHVybCA9IHVybHBhcnNlKHVybF9zdHJpbmcpCisgICAgICAgIGlmIHVybC5zY2hlbWUgPT0gInBhY2thZ2UiOgorICAgICAgICAgICAgcGFja2FnZSA9IHVybC5wYXRoCisgICAgICAgICAgICByZWNpcGUgPSByZWNpcGVfZnJvbV9wYWNrYWdlKHNlbGYucGtnZGF0YSwgcGFja2FnZSkKKworICAgICAgICAgICAgaXQgPSBzZWxmLnJlY2lwZV9pdGVyc1tyZWNpcGVdCisgICAgICAgICAgICBwYXRoID0gc2VsZi5yZWNpcGVfc3RvcmUuZ2V0X3BhdGgoaXQpCisgICAgICAgICAgICBzZWxmLnJlY2lwZV92aWV3LnNldF9jdXJzb3IocGF0aCkKKyAgICAgICAgICAgIHNlbGYucmVjaXBlX3ZpZXcuc2Nyb2xsX3RvX2NlbGwocGF0aCkKKworICAgICAgICAgICAgc2VsZi5vbl9yZWNpcGVfY2hhbmdlZChzZWxmLnJlY2lwZV92aWV3LmdldF9zZWxlY3Rpb24oKSkKKworICAgICAgICAgICAgaXQgPSBzZWxmLnBhY2thZ2VfaXRlcnNbcGFja2FnZV0KKyAgICAgICAgICAgIHBhdGggPSBzZWxmLnBhY2thZ2Vfc3RvcmUuZ2V0X3BhdGgoaXQpCisgICAgICAgICAgICBzZWxmLnBhY2thZ2Vfdmlldy5zZXRfY3Vyc29yKHBhdGgpCisgICAgICAgICAgICBzZWxmLnBhY2thZ2Vfdmlldy5zY3JvbGxfdG9fY2VsbChwYXRoKQorCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgb25fcmVjaXBlX2NoYW5nZWQoc2VsZiwgc2VsZWN0aW9uKToKKyAgICAgICAgc2VsZi5wYWNrYWdlX3N0b3JlLmNsZWFyKCkKKyAgICAgICAgc2VsZi5wYWNrYWdlX2l0ZXJzID0ge30KKworICAgICAgICAobW9kZWwsIGl0KSA9IHNlbGVjdGlvbi5nZXRfc2VsZWN0ZWQoKQorICAgICAgICBpZiBub3QgaXQ6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICByZWNpcGUgPSBtb2RlbFtpdF1bUmVjaXBlQ29sdW1ucy5SZWNpcGVdCisgICAgICAgIHBhY2thZ2VzID0gcGFja2FnZXNfaW5fcmVjaXBlKHNlbGYucGtnZGF0YSwgcmVjaXBlKQorICAgICAgICBmb3IgcGFja2FnZSBpbiBwYWNrYWdlczoKKyAgICAgICAgICAgICMgVE9ETyBhbHNvIHNob3cgUEtHIGFmdGVyIGRlYmlhbi1yZW5hbWluZz8KKyAgICAgICAgICAgIGRhdGEgPSBsb2FkX3J1bnRpbWVfcGFja2FnZShzZWxmLnBrZ2RhdGEsIHBhY2thZ2UpCisgICAgICAgICAgICAjIFRPRE8gc3Rhc2ggZGF0YSB0byBhdm9pZCByZWFkaW5nIGluIG9uX3BhY2thZ2VfY2hhbmdlZAorICAgICAgICAgICAgc2VsZi5wYWNrYWdlX2l0ZXJzW3BhY2thZ2VdID0gc2VsZi5wYWNrYWdlX3N0b3JlLmFwcGVuZChbcGFja2FnZSwgaW50KGRhdGFbIlBLR1NJWkUiXSldKQorCisgICAgICAgIHBhY2thZ2UgPSByZWNpcGUgaWYgcmVjaXBlIGluIHBhY2thZ2VzIGVsc2Ugc29ydGVkKHBhY2thZ2VzKVswXQorICAgICAgICBwYXRoID0gc2VsZi5wYWNrYWdlX3N0b3JlLmdldF9wYXRoKHNlbGYucGFja2FnZV9pdGVyc1twYWNrYWdlXSkKKyAgICAgICAgc2VsZi5wYWNrYWdlX3ZpZXcuc2V0X2N1cnNvcihwYXRoKQorICAgICAgICBzZWxmLnBhY2thZ2Vfdmlldy5zY3JvbGxfdG9fY2VsbChwYXRoKQorCisgICAgZGVmIG9uX3BhY2thZ2VfY2hhbmdlZChzZWxmLCBzZWxlY3Rpb24pOgorICAgICAgICBzZWxmLmxhYmVsLnNldF90ZXh0KCIiKQorICAgICAgICBzZWxmLmZpbGVfc3RvcmUuY2xlYXIoKQorICAgICAgICBzZWxmLmRlcGVuZHNfbGFiZWwuaGlkZSgpCisgICAgICAgIHNlbGYucmVjb21tZW5kc19sYWJlbC5oaWRlKCkKKyAgICAgICAgc2VsZi5zdWdnZXN0c19sYWJlbC5oaWRlKCkKKyAgICAgICAgc2VsZi5wcm92aWRlc19sYWJlbC5oaWRlKCkKKyAgICAgICAgc2VsZi5maWxlc192aWV3LmhpZGUoKQorICAgICAgICBzZWxmLmZpbGVzX2xhYmVsLmhpZGUoKQorCisgICAgICAgIChtb2RlbCwgaXQpID0gc2VsZWN0aW9uLmdldF9zZWxlY3RlZCgpCisgICAgICAgIGlmIGl0IGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBwYWNrYWdlID0gbW9kZWxbaXRdW1BhY2thZ2VDb2x1bW5zLlBhY2thZ2VdCisgICAgICAgIGRhdGEgPSBsb2FkX3J1bnRpbWVfcGFja2FnZShzZWxmLnBrZ2RhdGEsIHBhY2thZ2UpCisKKyAgICAgICAgc2VsZi5sYWJlbC5zZXRfdGV4dChzdW1tYXJ5KGRhdGEpKQorCisgICAgICAgIGZpbGVzID0gYXN0LmxpdGVyYWxfZXZhbChkYXRhWyJGSUxFU19JTkZPIl0pCisgICAgICAgIGlmIGZpbGVzOgorICAgICAgICAgICAgc2VsZi5maWxlc19sYWJlbC5zZXRfdGV4dCgiezB9IGZpbGVzIHRha2UgezF9LiIuZm9ybWF0KGxlbihmaWxlcyksIGh1bWFuX3NpemUoaW50KGRhdGFbIlBLR1NJWkUiXSkpKSkKKyAgICAgICAgICAgIHNlbGYuZmlsZXNfdmlldy5zaG93KCkKKyAgICAgICAgICAgIGZvciBmaWxlbmFtZSwgc2l6ZSBpbiBmaWxlcy5pdGVtcygpOgorICAgICAgICAgICAgICAgIHNlbGYuZmlsZV9zdG9yZS5hcHBlbmQoW2ZpbGVuYW1lLCBzaXplXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmlsZXNfdmlldy5oaWRlKCkKKyAgICAgICAgICAgIHNlbGYuZmlsZXNfbGFiZWwuc2V0X3RleHQoIlRoaXMgcGFja2FnZSBoYXMgbm8gZmlsZXMuIikKKyAgICAgICAgc2VsZi5maWxlc19sYWJlbC5zaG93KCkKKworICAgICAgICBkZWYgdXBkYXRlX2RlcHMoZmllbGQsIHByZWZpeCwgbGFiZWwsIGNsaWNrYWJsZT1UcnVlKToKKyAgICAgICAgICAgIGlmIGZpZWxkIGluIGRhdGE6CisgICAgICAgICAgICAgICAgbCA9IFtdCisgICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZlcnNpb24gaW4gYmIudXRpbHMuZXhwbG9kZV9kZXBfdmVyc2lvbnMyKGRhdGFbZmllbGRdKS5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBpZiBjbGlja2FibGU6CisgICAgICAgICAgICAgICAgICAgICAgICBsLmFwcGVuZCgiPGEgaHJlZj0ncGFja2FnZTp7MH0nPnswfTwvYT4gezF9Ii5mb3JtYXQobmFtZSwgIiAiLmpvaW4odmVyc2lvbikpLnN0cmlwKCkpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBsLmFwcGVuZCgiezB9IHsxfSIuZm9ybWF0KG5hbWUsICIgIi5qb2luKHZlcnNpb24pKS5zdHJpcCgpKQorICAgICAgICAgICAgICAgIGxhYmVsLnNldF9tYXJrdXAocHJlZml4ICsgIiwgIi5qb2luKGwpKQorICAgICAgICAgICAgICAgIGxhYmVsLnNob3coKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsYWJlbC5oaWRlKCkKKyAgICAgICAgdXBkYXRlX2RlcHMoIlJERVBFTkRTIiwgIkRlcGVuZHM6ICIsIHNlbGYuZGVwZW5kc19sYWJlbCkKKyAgICAgICAgdXBkYXRlX2RlcHMoIlJSRUNPTU1FTkRTIiwgIlJlY29tbWVuZHM6ICIsIHNlbGYucmVjb21tZW5kc19sYWJlbCkKKyAgICAgICAgdXBkYXRlX2RlcHMoIlJTVUdHRVNUUyIsICJTdWdnZXN0czogIiwgc2VsZi5zdWdnZXN0c19sYWJlbCkKKyAgICAgICAgdXBkYXRlX2RlcHMoIlJQUk9WSURFUyIsICJQcm92aWRlczogIiwgc2VsZi5wcm92aWRlc19sYWJlbCwgY2xpY2thYmxlPUZhbHNlKQorCisgICAgZGVmIGxvYWRfcmVjaXBlcyhzZWxmKToKKyAgICAgICAgZm9yIHJlY2lwZSBpbiBzb3J0ZWQob3MubGlzdGRpcihwa2dkYXRhKSk6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4ocGtnZGF0YSwgcmVjaXBlKSk6CisgICAgICAgICAgICAgICAgc2VsZi5yZWNpcGVfaXRlcnNbcmVjaXBlXSA9IHNlbGYucmVjaXBlX3N0b3JlLmFwcGVuZChbcmVjaXBlXSkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBpbXBvcnQgYXJncGFyc2UKKworICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSdwa2dkYXRhIGJyb3dzZXInKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1wJywgJy0tcGtnZGF0YScsIGhlbHA9Ik9wdGlvbmFsIGxvY2F0aW9uIG9mIHBrZ2RhdGEiKQorCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICBwa2dkYXRhID0gYXJncy5wa2dkYXRhIGlmIGFyZ3MucGtnZGF0YSBlbHNlIGZpbmRfcGtnZGF0YSgpCisgICAgIyBUT0RPIGFzc2VydCBwa2dkYXRhIGlzIGEgZGlyZWN0b3J5CisgICAgd2luZG93ID0gUGtnVWkocGtnZGF0YSkKKyAgICBHdGsubWFpbigpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvb2UtcGtnZGF0YS1icm93c2VyLmdsYWRlIGIvcG9reS9zY3JpcHRzL29lLXBrZ2RhdGEtYnJvd3Nlci5nbGFkZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDA2YzgyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9zY3JpcHRzL29lLXBrZ2RhdGEtYnJvd3Nlci5nbGFkZQpAQCAtMCwwICsxLDMzNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gR2VuZXJhdGVkIHdpdGggZ2xhZGUgMy4xOC4zIC0tPgorPGludGVyZmFjZT4KKyAgPHJlcXVpcmVzIGxpYj0iZ3RrKyIgdmVyc2lvbj0iMy4xMiIvPgorICA8b2JqZWN0IGNsYXNzPSJHdGtMaXN0U3RvcmUiIGlkPSJmaWxlX3N0b3JlIj4KKyAgICA8Y29sdW1ucz4KKyAgICAgIDwhLS0gY29sdW1uLW5hbWUgRmlsZW5hbWUgLS0+CisgICAgICA8Y29sdW1uIHR5cGU9ImdjaGFyYXJyYXkiLz4KKyAgICAgIDwhLS0gY29sdW1uLW5hbWUgU2l6ZSAtLT4KKyAgICAgIDxjb2x1bW4gdHlwZT0iZ2xvbmciLz4KKyAgICA8L2NvbHVtbnM+CisgIDwvb2JqZWN0PgorICA8b2JqZWN0IGNsYXNzPSJHdGtMaXN0U3RvcmUiIGlkPSJwYWNrYWdlX3N0b3JlIj4KKyAgICA8Y29sdW1ucz4KKyAgICAgIDwhLS0gY29sdW1uLW5hbWUgUGFja2FnZSAtLT4KKyAgICAgIDxjb2x1bW4gdHlwZT0iZ2NoYXJhcnJheSIvPgorICAgICAgPCEtLSBjb2x1bW4tbmFtZSBTaXplIC0tPgorICAgICAgPGNvbHVtbiB0eXBlPSJnbG9uZyIvPgorICAgIDwvY29sdW1ucz4KKyAgPC9vYmplY3Q+CisgIDxvYmplY3QgY2xhc3M9Ikd0a0xpc3RTdG9yZSIgaWQ9InBrZ2RhdGFfc3RvcmUiPgorICAgIDxjb2x1bW5zPgorICAgICAgPCEtLSBjb2x1bW4tbmFtZSBOYW1lIC0tPgorICAgICAgPGNvbHVtbiB0eXBlPSJnY2hhcmFycmF5Ii8+CisgICAgICA8IS0tIGNvbHVtbi1uYW1lIFBhdGggLS0+CisgICAgICA8Y29sdW1uIHR5cGU9ImdjaGFyYXJyYXkiLz4KKyAgICA8L2NvbHVtbnM+CisgIDwvb2JqZWN0PgorICA8b2JqZWN0IGNsYXNzPSJHdGtMaXN0U3RvcmUiIGlkPSJyZWNpcGVfc3RvcmUiPgorICAgIDxjb2x1bW5zPgorICAgICAgPCEtLSBjb2x1bW4tbmFtZSBSZWNpcGUgLS0+CisgICAgICA8Y29sdW1uIHR5cGU9ImdjaGFyYXJyYXkiLz4KKyAgICA8L2NvbHVtbnM+CisgIDwvb2JqZWN0PgorICA8b2JqZWN0IGNsYXNzPSJHdGtXaW5kb3ciIGlkPSJ3aW5kb3ciPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICA8cHJvcGVydHkgbmFtZT0idGl0bGUiIHRyYW5zbGF0YWJsZT0ieWVzIj5QYWNrYWdlIERhdGEgQnJvd3NlcjwvcHJvcGVydHk+CisgICAgPHByb3BlcnR5IG5hbWU9ImRlZmF1bHRfd2lkdGgiPjEyMDA8L3Byb3BlcnR5PgorICAgIDxwcm9wZXJ0eSBuYW1lPSJkZWZhdWx0X2hlaWdodCI+OTAwPC9wcm9wZXJ0eT4KKyAgICA8cHJvcGVydHkgbmFtZT0iaWNvbl9uYW1lIj5hY2Nlc3Nvcmllcy1kaWN0aW9uYXJ5PC9wcm9wZXJ0eT4KKyAgICA8cHJvcGVydHkgbmFtZT0iaGFzX3Jlc2l6ZV9ncmlwIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICA8Y2hpbGQ+CisgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtCb3giIGlkPSJib3gxIj4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtYXJnaW5fbGVmdCI+NDwvcHJvcGVydHk+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtYXJnaW5fcmlnaHQiPjQ8L3Byb3BlcnR5PgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ibWFyZ2luX3RvcCI+NDwvcHJvcGVydHk+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtYXJnaW5fYm90dG9tIj40PC9wcm9wZXJ0eT4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9Im9yaWVudGF0aW9uIj52ZXJ0aWNhbDwvcHJvcGVydHk+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzcGFjaW5nIj40PC9wcm9wZXJ0eT4KKyAgICAgICAgPGNoaWxkPgorICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0NvbWJvQm94IiBpZD0icGtnZGF0YV9jb21ibyI+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibW9kZWwiPnBrZ2RhdGFfc3RvcmU8L3Byb3BlcnR5PgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImlkX2NvbHVtbiI+MTwvcHJvcGVydHk+CisgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0NlbGxSZW5kZXJlclRleHQiIGlkPSJjZWxscmVuZGVyZXJ0ZXh0NSIvPgorICAgICAgICAgICAgICA8YXR0cmlidXRlcz4KKyAgICAgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9InRleHQiPjA8L2F0dHJpYnV0ZT4KKyAgICAgICAgICAgICAgPC9hdHRyaWJ1dGVzPgorICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+MDwvcHJvcGVydHk+CisgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICA8L2NoaWxkPgorICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrUGFuZWQiIGlkPSJwYW5lZDEiPgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjQwMDwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb25fc2V0Ij5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrU2Nyb2xsZWRXaW5kb3ciIGlkPSJzY3JvbGxlZHdpbmRvdzEiPgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2hhZG93X3R5cGUiPmluPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibWluX2NvbnRlbnRfd2lkdGgiPjEwMDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrVHJlZVZpZXciIGlkPSJyZWNpcGVfdmlldyI+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtb2RlbCI+cmVjaXBlX3N0b3JlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNlYXJjaF9jb2x1bW4iPjA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZml4ZWRfaGVpZ2h0X21vZGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2hvd19leHBhbmRlcnMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPGNoaWxkIGludGVybmFsLWNoaWxkPSJzZWxlY3Rpb24iPgorICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1RyZWVTZWxlY3Rpb24iIGlkPSJ0cmVldmlldy1zZWxlY3Rpb24xIi8+CisgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtUcmVlVmlld0NvbHVtbiIgaWQ9InRyZWV2aWV3Y29sdW1uMSI+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2l6aW5nIj5maXhlZDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idGl0bGUiIHRyYW5zbGF0YWJsZT0ieWVzIj5SZWNpcGU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtDZWxsUmVuZGVyZXJUZXh0IiBpZD0iY2VsbHJlbmRlcmVydGV4dDEiLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0Ij4wPC9hdHRyaWJ1dGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXR0cmlidXRlcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJlc2l6ZSI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaHJpbmsiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtQYW5lZCIgaWQ9InBhbmVkMiI+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+NDAwPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb25fc2V0Ij5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtTY3JvbGxlZFdpbmRvdyIgaWQ9InNjcm9sbGVkd2luZG93MiI+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaGFkb3dfdHlwZSI+aW48L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibWluX2NvbnRlbnRfd2lkdGgiPjEwMDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtUcmVlVmlldyIgaWQ9InBhY2thZ2VfdmlldyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtb2RlbCI+cGFja2FnZV9zdG9yZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2VhcmNoX2NvbHVtbiI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2hvd19leHBhbmRlcnMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZCBpbnRlcm5hbC1jaGlsZD0ic2VsZWN0aW9uIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrVHJlZVNlbGVjdGlvbiIgaWQ9InRyZWV2aWV3LXNlbGVjdGlvbjIiLz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1RyZWVWaWV3Q29sdW1uIiBpZD0icGFja2FnZV9uYW1lX2NvbHVtbiI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJlc2l6YWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNpemluZyI+YXV0b3NpemU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0aXRsZSIgdHJhbnNsYXRhYmxlPSJ5ZXMiPlBhY2thZ2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzb3J0X2NvbHVtbl9pZCI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrQ2VsbFJlbmRlcmVyVGV4dCIgaWQ9ImNlbGxyZW5kZXJlcnRleHQyIi8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXR0cmlidXRlcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0Ij4wPC9hdHRyaWJ1dGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F0dHJpYnV0ZXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtUcmVlVmlld0NvbHVtbiIgaWQ9InBhY2thZ2Vfc2l6ZV9jb2x1bW4iPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyZXNpemFibGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaXppbmciPmF1dG9zaXplPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idGl0bGUiIHRyYW5zbGF0YWJsZT0ieWVzIj5TaXplPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic29ydF9jb2x1bW5faWQiPjE8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0NlbGxSZW5kZXJlclRleHQiIGlkPSJwYWNrYWdlX3NpemVfY2VsbCIvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyZXNpemUiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNocmluayI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtCb3giIGlkPSJib3gyIj4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtYXJnaW5fbGVmdCI+NDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJvcmllbnRhdGlvbiI+dmVydGljYWw8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic3BhY2luZyI+NDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtMYWJlbCIgaWQ9ImxhYmVsMSI+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieGFsaWduIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPmxhYmVsPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrTGFiZWwiIGlkPSJkZXBlbmRzX2xhYmVsIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4YWxpZ24iPjA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIiB0cmFuc2xhdGFibGU9InllcyI+ZGVwZW5kc19sYWJlbDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0id3JhcCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idHJhY2tfdmlzaXRlZF9saW5rcyI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj4xPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtMYWJlbCIgaWQ9InJlY29tbWVuZHNfbGFiZWwiPgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InhhbGlnbiI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGFiZWwiIHRyYW5zbGF0YWJsZT0ieWVzIj5yZWNzX2xhYmVsPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ3cmFwIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0cmFja192aXNpdGVkX2xpbmtzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjI8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0xhYmVsIiBpZD0ic3VnZ2VzdHNfbGFiZWwiPgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InhhbGlnbiI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGFiZWwiIHRyYW5zbGF0YWJsZT0ieWVzIj5zdWdnZXN0c19sYWJlbDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0id3JhcCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idHJhY2tfdmlzaXRlZF9saW5rcyI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj4zPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtMYWJlbCIgaWQ9InByb3ZpZGVzX2xhYmVsIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4YWxpZ24iPjA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIiB0cmFuc2xhdGFibGU9InllcyI+cHJvdmlkZXNfbGFiZWw8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IndyYXAiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRyYWNrX3Zpc2l0ZWRfbGlua3MiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+NDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrTGFiZWwiIGlkPSJmaWxlc19sYWJlbCI+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieGFsaWduIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPmZpbGVzX2xhYmVsPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJlbGxpcHNpemUiPmVuZDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1Njcm9sbGVkV2luZG93IiBpZD0iZmlsZXNfc2Nyb2xsdmlldyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaGFkb3dfdHlwZSI+aW48L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtUcmVlVmlldyIgaWQ9ImZpbGVzX3ZpZXciPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibW9kZWwiPmZpbGVfc3RvcmU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJydWxlc19oaW50Ij5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2VhcmNoX2NvbHVtbiI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNob3dfZXhwYW5kZXJzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkIGludGVybmFsLWNoaWxkPSJzZWxlY3Rpb24iPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrVHJlZVNlbGVjdGlvbiIgaWQ9InRyZWV2aWV3LXNlbGVjdGlvbjMiLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1RyZWVWaWV3Q29sdW1uIiBpZD0iZmlsZV9uYW1lX2NvbHVtbiI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0aXRsZSIgdHJhbnNsYXRhYmxlPSJ5ZXMiPk5hbWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic29ydF9pbmRpY2F0b3IiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic29ydF9jb2x1bW5faWQiPjA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrQ2VsbFJlbmRlcmVyVGV4dCIgaWQ9ImNlbGxyZW5kZXJlcnRleHQzIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJiYWNrZ3JvdW5kX3JnYmEiPnJnYmEoMCwwLDAsMCk8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGVzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0Ij4wPC9hdHRyaWJ1dGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hdHRyaWJ1dGVzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtUcmVlVmlld0NvbHVtbiIgaWQ9ImZpbGVfc2l6ZV9jb2x1bW4iPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idGl0bGUiIHRyYW5zbGF0YWJsZT0ieWVzIj5TaXplPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNvcnRfaW5kaWNhdG9yIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNvcnRfY29sdW1uX2lkIj4xPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0NlbGxSZW5kZXJlclRleHQiIGlkPSJmaWxlX3NpemVfY2VsbCIvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGVzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0Ij4xPC9hdHRyaWJ1dGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hdHRyaWJ1dGVzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjY8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyZXNpemUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2hyaW5rIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJlc2l6ZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNocmluayI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+MTwvcHJvcGVydHk+CisgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICA8L2NoaWxkPgorICAgICAgPC9vYmplY3Q+CisgICAgPC9jaGlsZD4KKyAgPC9vYmplY3Q+Cis8L2ludGVyZmFjZT4KZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9vZS1ydW4tbmF0aXZlIGIvcG9reS9zY3JpcHRzL29lLXJ1bi1uYXRpdmUKaW5kZXggYmVhNWQ2OS4uNGU2M2U2OSAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL29lLXJ1bi1uYXRpdmUKKysrIGIvcG9reS9zY3JpcHRzL29lLXJ1bi1uYXRpdmUKQEAgLTE2LDcgKzE2LDcgQEAKICAgICBlY2hvICdPcGVuRW1iZWRkZWQgcnVuLW5hdGl2ZSAtIHJ1bnMgbmF0aXZlIHRvb2xzJwogICAgIGVjaG8gJycKICAgICBlY2hvICdhcmd1bWVudHM6JwotICAgIGVjaG8gJyAgbmF0aXZlLXJlY2lwZSAgICAgICBUaGUgcmVjaXBlIHdoaWNoIHByb3ZvaWRlcyB0b29sJworICAgIGVjaG8gJyAgbmF0aXZlLXJlY2lwZSAgICAgICBUaGUgcmVjaXBlIHdoaWNoIHByb3ZpZGVzIHRvb2wnCiAgICAgZWNobyAnICB0b29sICAgICAgICAgICAgICAgIE5hdGl2ZSB0b29sIHRvIHJ1bicKICAgICBlY2hvICcnCiAgICAgZXhpdCAyCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfZGVza3RvcF9kYXRhYmFzZSBiL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9kZXNrdG9wX2RhdGFiYXNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MDNiNDkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfZGVza3RvcF9kYXRhYmFzZQpAQCAtMCwwICsxLDggQEAKKyMhL2Jpbi9zaAorIworIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCisjCisjIFBvc3QtaW5zdGFsbCBpbnRlcmNlcHQgZm9yIG1pbWUteGRnLmJiY2xhc3MKKwordXBkYXRlLWRlc2t0b3AtZGF0YWJhc2UgJEQke2Rlc2t0b3BfZGlyfQorCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfZm9udF9jYWNoZSBiL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9mb250X2NhY2hlCmluZGV4IDMwNTNjNzAuLjQ2YmRiOGMgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9mb250X2NhY2hlCisrKyBiL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9mb250X2NhY2hlCkBAIC02LDQgKzYsNiBAQAogc2V0IC1lCiAKIFBTRVVET19VTkxPQUQ9MSAke2JpbnByZWZpeH1xZW11d3JhcHBlciAtTCAkRCAtRSAke2ZvbnRjb25maWdjYWNoZWVudn0gJEQke2xpYmV4ZWNkaXJ9LyR7YmlucHJlZml4fWZjLWNhY2hlIC0tc3lzcm9vdD0kRCAtLXN5c3RlbS1vbmx5ICR7Zm9udGNvbmZpZ2NhY2hlcGFyYW1zfQorCiBjaG93biAtUiByb290OnJvb3QgJEQke2ZvbnRjb25maWdjYWNoZWRpcn0KK2ZpbmQgJEQgLXR5cGUgZiAtbmFtZSAudXVpZCAtZXhlYyBjaG93biByb290OnJvb3QgJ3t9JyArCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfbWltZV9kYXRhYmFzZSBiL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9taW1lX2RhdGFiYXNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MmQxZTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfbWltZV9kYXRhYmFzZQpAQCAtMCwwICsxLDkgQEAKKyMhL2Jpbi9zaAorIworIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCisjCisjIFBvc3QtaW5zdGFsbCBpbnRlcmNlcHQgZm9yIG1pbWUuYmJjbGFzcworCitlY2hvICJVcGRhdGluZyBNSU1FIGRhdGFiYXNlLi4uIHRoaXMgbWF5IHRha2UgYSB3aGlsZS4iCit1cGRhdGUtbWltZS1kYXRhYmFzZSAkRCR7bWltZWRpcn0KKwpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX3VkZXZfaHdkYiBiL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV91ZGV2X2h3ZGIKaW5kZXggYzRmYjJiZi4uMTAyZTk5YiAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX3VkZXZfaHdkYgorKysgYi9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfdWRldl9od2RiCkBAIC01LDUgKzUsMTcgQEAKIAogc2V0IC1lCiAKLVBTRVVET19VTkxPQUQ9MSAke2JpbnByZWZpeH1xZW11d3JhcHBlciAtTCAkRCAkRCR7bGliZXhlY2Rpcn0vJHtiaW5wcmVmaXh9dWRldmFkbSBod2RiIC0tdXBkYXRlIC0tcm9vdCAkRAotY2hvd24gcm9vdDpyb290ICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCitjYXNlICIke1BSRUZFUlJFRF9QUk9WSURFUl91ZGV2fSIgaW4KKwlzeXN0ZW1kKQorCQlVREVWX0VYVFJBX0FSR1M9Ii0tdXNyIgorCQlVREVWTElCRElSPSIke3Jvb3RsaWJleGVjZGlyfSIKKwkJOzsKKworCSopCisJCVVERVZfRVhUUkFfQVJHUz0iIgorCQlVREVWTElCRElSPSIke3N5c2NvbmZkaXJ9IgorCQk7OworZXNhYworCitQU0VVRE9fVU5MT0FEPTEgJHtiaW5wcmVmaXh9cWVtdXdyYXBwZXIgLUwgJEQgJEQke2xpYmV4ZWNkaXJ9LyR7YmlucHJlZml4fXVkZXZhZG0gaHdkYiAtLXVwZGF0ZSAtLXJvb3QgJEQgJHtVREVWX0VYVFJBX0FSR1N9CitjaG93biByb290OnJvb3QgJEQke1VERVZMSUJESVJ9L3VkZXYvaHdkYi5iaW4KZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9weWJvb3RjaGFydGd1aS9weWJvb3RjaGFydGd1aS9kcmF3LnB5IGIvcG9reS9zY3JpcHRzL3B5Ym9vdGNoYXJ0Z3VpL3B5Ym9vdGNoYXJ0Z3VpL2RyYXcucHkKaW5kZXggYWRkNWM1My4uNTMzMjRiOSAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL3B5Ym9vdGNoYXJ0Z3VpL3B5Ym9vdGNoYXJ0Z3VpL2RyYXcucHkKKysrIGIvcG9reS9zY3JpcHRzL3B5Ym9vdGNoYXJ0Z3VpL3B5Ym9vdGNoYXJ0Z3VpL2RyYXcucHkKQEAgLTMwOCw3ICszMDgsNyBAQAogcHJvY19oID0gMTYgIyB0aGUgaGVpZ2h0IG9mIGEgcHJvY2VzcwogbGVnX3MgPSAxMAogTUlOX0lNR19XID0gODAwCi1DVU1MX0hFSUdIVCA9IDIwMDAgIyBJbmNyZWFzZWQgdmFsdWUgdG8gYWNjb21vZGF0ZSBDUFUgYW5kIEkvTyBHcmFwaHMKK0NVTUxfSEVJR0hUID0gMjAwMCAjIEluY3JlYXNlZCB2YWx1ZSB0byBhY2NvbW1vZGF0ZSBDUFUgYW5kIEkvTyBHcmFwaHMKIE9QVElPTlMgPSBOb25lCiAKIGRlZiBleHRlbnRzKG9wdGlvbnMsIHhzY2FsZSwgdHJhY2UpOgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3B5Ym9vdGNoYXJ0Z3VpL3B5Ym9vdGNoYXJ0Z3VpL3BhcnNpbmcucHkgYi9wb2t5L3NjcmlwdHMvcHlib290Y2hhcnRndWkvcHlib290Y2hhcnRndWkvcGFyc2luZy5weQppbmRleCBlZjJkM2QzLi5iNDJkYWM2IDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvcHlib290Y2hhcnRndWkvcHlib290Y2hhcnRndWkvcGFyc2luZy5weQorKysgYi9wb2t5L3NjcmlwdHMvcHlib290Y2hhcnRndWkvcHlib290Y2hhcnRndWkvcGFyc2luZy5weQpAQCAtMTgsNyArMTgsNyBAQAogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGFyZmlsZQotZnJvbSB0aW1lIGltcG9ydCBjbG9jaworaW1wb3J0IHRpbWUKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgcmVkdWNlCiAKQEAgLTcyMyw3ICs3MjMsNyBAQAogCiBkZWYgX2RvX3BhcnNlKHdyaXRlciwgc3RhdGUsIGZpbGVuYW1lLCBmaWxlKToKICAgICB3cml0ZXIuaW5mbygicGFyc2luZyAnJXMnIiAlIGZpbGVuYW1lKQotICAgIHQxID0gY2xvY2soKQorICAgIHQxID0gdGltZS5wcm9jZXNzX3RpbWUoKQogICAgIG5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKQogICAgIGlmIG5hbWUgPT0gInByb2NfZGlza3N0YXRzLmxvZyI6CiAgICAgICAgIHN0YXRlLmRpc2tfc3RhdHMgPSBfcGFyc2VfcHJvY19kaXNrX3N0YXRfbG9nKGZpbGUpCkBAIC03NDMsNyArNzQzLDcgQEAKICAgICAgICAgc3RhdGUubW9uaXRvcl9kaXNrID0gX3BhcnNlX21vbml0b3JfZGlza19sb2coZmlsZSkKICAgICBlbGlmIG5vdCBmaWxlbmFtZS5lbmRzd2l0aCgnLmxvZycpOgogICAgICAgICBfcGFyc2VfYml0YmFrZV9idWlsZHN0YXRzKHdyaXRlciwgc3RhdGUsIGZpbGVuYW1lLCBmaWxlKQotICAgIHQyID0gY2xvY2soKQorICAgIHQyID0gdGltZS5wcm9jZXNzX3RpbWUoKQogICAgIHdyaXRlci5pbmZvKCIgICVzIHNlY29uZHMiICUgc3RyKHQyLXQxKSkKICAgICByZXR1cm4gc3RhdGUKIApkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3JwbTJjcGlvLnNoIGIvcG9reS9zY3JpcHRzL3JwbTJjcGlvLnNoCmluZGV4IDg3NmM1M2MuLjdjZDc3MWIgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9ycG0yY3Bpby5zaAorKysgYi9wb2t5L3NjcmlwdHMvcnBtMmNwaW8uc2gKQEAgLTIyLDcgKzIyLDggQEAKIAogCWk9MAogCXdoaWxlIFsgJGkgLWx0IDggXTsgZG8KLQkJYj0iJChfZGQgJCgoJG9mZnNldCArICRpKSkgYnM9MSBjb3VudD0xKSIKKyAJCWI9JChfZGQgJCgoJG9mZnNldCArICRpKSkgYnM9MSBjb3VudD0xOyBlY2hvIFgpCisgCQliPSR7YiVYfQogCQlbIC16ICIkYiIgXSAmJgogCQkJYj0iMCIgfHwKIAkJCWI9IiQoZXhlYyBwcmludGYgJyV1XG4nICInJGIiKSIKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9ydW5xZW11IGIvcG9reS9zY3JpcHRzL3J1bnFlbXUKaW5kZXggNWM1NmMzZi4uMzEwZDc5ZiAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL3J1bnFlbXUKKysrIGIvcG9reS9zY3JpcHRzL3J1bnFlbXUKQEAgLTEzNSw2ICsxMzUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgJ0RFUExPWV9ESVJfSU1BR0UnLAogICAgICAgICAgICAgICAgICAgICAgICAgJ09FX1RNUERJUicsCiAgICAgICAgICAgICAgICAgICAgICAgICAnT0VDT1JFX05BVElWRV9TWVNST09UJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdNVUxUSUNPTkZJRycsCiAgICAgICAgICAgICAgICAgICAgICAgICApCiAKICAgICAgICAgc2VsZi5xZW11X29wdCA9ICcnCkBAIC0xNjQsNiArMTY1LDcgQEAKICAgICAgICAgc2VsZi5rdm1fZW5hYmxlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYudmhvc3RfZW5hYmxlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYuc2xpcnBfZW5hYmxlZCA9IEZhbHNlCisgICAgICAgIHNlbGYubmV0X2JyaWRnZSA9IE5vbmUKICAgICAgICAgc2VsZi5uZnNfaW5zdGFuY2UgPSAwCiAgICAgICAgIHNlbGYubmZzX3J1bm5pbmcgPSBGYWxzZQogICAgICAgICBzZWxmLnNlcmlhbGNvbnNvbGUgPSBGYWxzZQpAQCAtMTgzLDYgKzE4NSw4IEBACiAgICAgICAgIHNlbGYudm10eXBlcyA9ICgnaGRkaW1nJywgJ2lzbycpCiAgICAgICAgIHNlbGYuZnNpbmZvID0ge30KICAgICAgICAgc2VsZi5uZXR3b3JrX2RldmljZSA9ICItZGV2aWNlIGUxMDAwLG5ldGRldj1uZXQwLG1hYz1ATUFDQCIKKyAgICAgICAgc2VsZi5jbWRsaW5lX2lwX3NsaXJwID0gImlwPWRoY3AiCisgICAgICAgIHNlbGYuY21kbGluZV9pcF90YXAgPSAiaXA9MTkyLjE2OC43LkBDTElFTlRAOjoxOTIuMTY4LjcuQEdBVEVXQVlAOjI1NS4yNTUuMjU1LjAiCiAgICAgICAgICMgVXNlIGRpZmZlcmVudCBtYWMgc2VjdGlvbiBmb3IgdGFwIGFuZCBzbGlycCB0byBhdm9pZAogICAgICAgICAjIGNvbmZsaWN0cywgZS5nLiwgd2hlbiBvbmUgaXMgcnVubmluZyB3aXRoIHRhcCwgdGhlIG90aGVyIGlzCiAgICAgICAgICMgcnVubmluZyB3aXRoIHNsaXJwLgpAQCAtNDAxLDkgKzQwNSw3IEBACiAgICAgICAgICAgICBzZWxmLnNldCgiTUFDSElORSIsIGFyZykKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGNtZCA9ICdNQUNISU5FPSVzIGJpdGJha2UgLWUnICUgYXJnCi0gICAgICAgIGxvZ2dlci5pbmZvKCdSdW5uaW5nICVzLi4uJyAlIGNtZCkKLSAgICAgICAgc2VsZi5iaXRiYWtlX2UgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHNoZWxsPVRydWUpLmRlY29kZSgndXRmLTgnKQorICAgICAgICBzZWxmLmJpdGJha2VfZSA9IHNlbGYucnVuX2JpdGJha2VfZW52KGFyZykKICAgICAgICAgIyBiaXRiYWtlIC1lIGRvZXNuJ3QgcmVwb3J0IGludmFsaWQgTUFDSElORSBhcyBhbiBlcnJvciwgc28KICAgICAgICAgIyBsZXQncyBjaGVjayBERVBMT1lfRElSX0lNQUdFIHRvIG1ha2Ugc3VyZSB0aGF0IGl0IGlzIGEgdmFsaWQKICAgICAgICAgIyBNQUNISU5FLgpAQCAtNDg2LDYgKzQ4OCw4IEBACiAgICAgICAgICAgICAgICAgc2VsZi52aG9zdF9lbmFibGVkID0gVHJ1ZQogICAgICAgICAgICAgZWxpZiBhcmcgPT0gJ3NsaXJwJzoKICAgICAgICAgICAgICAgICBzZWxmLnNsaXJwX2VuYWJsZWQgPSBUcnVlCisgICAgICAgICAgICBlbGlmIGFyZy5zdGFydHN3aXRoKCdicmlkZ2U9Jyk6CisgICAgICAgICAgICAgICAgc2VsZi5uZXRfYnJpZGdlID0gJyVzJyAlIGFyZ1tsZW4oJ2JyaWRnZT0nKTpdCiAgICAgICAgICAgICBlbGlmIGFyZyA9PSAnc25hcHNob3QnOgogICAgICAgICAgICAgICAgIHNlbGYuc25hcHNob3QgPSBUcnVlCiAgICAgICAgICAgICBlbGlmIGFyZyA9PSAncHVibGljdm5jJzoKQEAgLTgwMyw3ICs4MDcsNyBAQAogICAgIGRlZiBjaGVja19hbmRfc2V0KHNlbGYpOgogICAgICAgICAiIiJDaGVjayBjb25maWdzIHNhbml0eSBhbmQgc2V0IHdoZW4gbmVlZGVkIiIiCiAgICAgICAgIHNlbGYudmFsaWRhdGVfcGF0aHMoKQotICAgICAgICBpZiBub3Qgc2VsZi5zbGlycF9lbmFibGVkOgorICAgICAgICBpZiBub3Qgc2VsZi5zbGlycF9lbmFibGVkIGFuZCBub3Qgc2VsZi5uZXRfYnJpZGdlOgogICAgICAgICAgICAgY2hlY2tfdHVuKCkKICAgICAgICAgIyBDaGVjayBhdWRpbwogICAgICAgICBpZiBzZWxmLmF1ZGlvX2VuYWJsZWQ6CkBAIC05MzMsMjkgKzkzNywzMCBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLnNldCgnU1RBR0lOR19CSU5ESVJfTkFUSVZFJywgJyVzL3Vzci9iaW4nICUgc2VsZi5nZXQoJ1NUQUdJTkdfRElSX05BVElWRScpKQogCiAgICAgZGVmIHByaW50X2NvbmZpZyhzZWxmKToKLSAgICAgICAgbG9nZ2VyLmluZm8oJ0NvbnRpbnVpbmcgd2l0aCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6XG4nKQorICAgICAgICBsb2dvdXRwdXQgPSBbJ0NvbnRpbnVpbmcgd2l0aCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6J10KICAgICAgICAgaWYgbm90IHNlbGYuZnN0eXBlIGluIHNlbGYudm10eXBlczoKLSAgICAgICAgICAgIHByaW50KCdLRVJORUw6IFslc10nICUgc2VsZi5rZXJuZWwpCisgICAgICAgICAgICBsb2dvdXRwdXQuYXBwZW5kKCdLRVJORUw6IFslc10nICUgc2VsZi5rZXJuZWwpCiAgICAgICAgICAgICBpZiBzZWxmLmJpb3M6Ci0gICAgICAgICAgICAgICAgcHJpbnQoJ0JJT1M6IFslc10nICUgc2VsZi5iaW9zKQorICAgICAgICAgICAgICAgIGxvZ291dHB1dC5hcHBlbmQoJ0JJT1M6IFslc10nICUgc2VsZi5iaW9zKQogICAgICAgICAgICAgaWYgc2VsZi5kdGI6Ci0gICAgICAgICAgICAgICAgcHJpbnQoJ0RUQjogWyVzXScgJSBzZWxmLmR0YikKLSAgICAgICAgcHJpbnQoJ01BQ0hJTkU6IFslc10nICUgc2VsZi5nZXQoJ01BQ0hJTkUnKSkKKyAgICAgICAgICAgICAgICBsb2dvdXRwdXQuYXBwZW5kKCdEVEI6IFslc10nICUgc2VsZi5kdGIpCisgICAgICAgIGxvZ291dHB1dC5hcHBlbmQoJ01BQ0hJTkU6IFslc10nICUgc2VsZi5nZXQoJ01BQ0hJTkUnKSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZnN0eXBlX2ZsYWdzID0gJyAoJyArICcsICcuam9pbihzZWxmLmZzaW5mb1tzZWxmLmZzdHlwZV0pICsgJyknCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIGZzdHlwZV9mbGFncyA9ICcnCi0gICAgICAgIHByaW50KCdGU1RZUEU6IFslcyVzXScgJSAoc2VsZi5mc3R5cGUsIGZzdHlwZV9mbGFncykpCisgICAgICAgIGxvZ291dHB1dC5hcHBlbmQoJ0ZTVFlQRTogWyVzJXNdJyAlIChzZWxmLmZzdHlwZSwgZnN0eXBlX2ZsYWdzKSkKICAgICAgICAgaWYgc2VsZi5mc3R5cGUgID09ICduZnMnOgotICAgICAgICAgICAgcHJpbnQoJ05GU19ESVI6IFslc10nICUgc2VsZi5yb290ZnMpCisgICAgICAgICAgICBsb2dvdXRwdXQuYXBwZW5kKCdORlNfRElSOiBbJXNdJyAlIHNlbGYucm9vdGZzKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnQoJ1JPT1RGUzogWyVzXScgJSBzZWxmLnJvb3RmcykKKyAgICAgICAgICAgIGxvZ291dHB1dC5hcHBlbmQoJ1JPT1RGUzogWyVzXScgJSBzZWxmLnJvb3RmcykKICAgICAgICAgaWYgc2VsZi5vdm1mX2Jpb3M6Ci0gICAgICAgICAgICBwcmludCgnT1ZNRjogJXMnICUgc2VsZi5vdm1mX2Jpb3MpCisgICAgICAgICAgICBsb2dvdXRwdXQuYXBwZW5kKCdPVk1GOiAlcycgJSBzZWxmLm92bWZfYmlvcykKICAgICAgICAgaWYgKHNlbGYub3ZtZl9zZWNib290X3Bra2VrMSk6Ci0gICAgICAgICAgICBwcmludCgnU0VDQk9PVCBQS0tFSzE6IFslcy4uLl0nICUgc2VsZi5vdm1mX3NlY2Jvb3RfcGtrZWsxWzA6MTAwXSkKLSAgICAgICAgcHJpbnQoJ0NPTkZGSUxFOiBbJXNdJyAlIHNlbGYucWVtdWJvb3QpCi0gICAgICAgIHByaW50KCcnKQorICAgICAgICAgICAgbG9nb3V0cHV0LmFwcGVuZCgnU0VDQk9PVCBQS0tFSzE6IFslcy4uLl0nICUgc2VsZi5vdm1mX3NlY2Jvb3RfcGtrZWsxWzA6MTAwXSkKKyAgICAgICAgbG9nb3V0cHV0LmFwcGVuZCgnQ09ORkZJTEU6IFslc10nICUgc2VsZi5xZW11Ym9vdCkKKyAgICAgICAgbG9nb3V0cHV0LmFwcGVuZCgnJykKKyAgICAgICAgbG9nZ2VyLmluZm8oJ1xuJy5qb2luKGxvZ291dHB1dCkpCiAKICAgICBkZWYgc2V0dXBfbmZzKHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5uZnNfc2VydmVyOgpAQCAtOTg1LDcgKzk5MCw3IEBACiAgICAgICAgICAgICAjIFVzZSAnJXMnIHNpbmNlIHRoZXkgYXJlIGludGVnZXJzCiAgICAgICAgICAgICBvcy5wdXRlbnYoaywgJyVzJyAlIHYpCiAKLSAgICAgICAgc2VsZi51bmZzX29wdHM9Im5mc3ZlcnM9Myxwb3J0PSVzLHVkcCxtb3VudHBvcnQ9JXMiICUgKG5mc2RfcG9ydCwgbW91bnRkX3BvcnQpCisgICAgICAgIHNlbGYudW5mc19vcHRzPSJuZnN2ZXJzPTMscG9ydD0lcyx0Y3AsbW91bnRwb3J0PSVzIiAlIChuZnNkX3BvcnQsIG1vdW50ZF9wb3J0KQogCiAgICAgICAgICMgRXh0cmFjdCAudGFyLmJ6MiBvciAudGFyLmJ6IGlmIG5vIG5mcyBkaXIKICAgICAgICAgaWYgbm90IChzZWxmLnJvb3RmcyBhbmQgb3MucGF0aC5pc2RpcihzZWxmLnJvb3RmcykpOgpAQCAtMTAyMCwxMiArMTAyNSwxOCBAQAogCiAgICAgICAgIHNlbGYubmZzX3J1bm5pbmcgPSBUcnVlCiAKKyAgICBkZWYgc2V0dXBfbmV0X2JyaWRnZShzZWxmKToKKyAgICAgICAgc2VsZi5zZXQoJ05FVFdPUktfQ01EJywgJy1uZXRkZXYgYnJpZGdlLGJyPSVzLGlkPW5ldDAsaGVscGVyPSVzIC1kZXZpY2UgdmlydGlvLW5ldC1wY2ksbmV0ZGV2PW5ldDAgJyAlICgKKyAgICAgICAgICAgIHNlbGYubmV0X2JyaWRnZSwgb3MucGF0aC5qb2luKHNlbGYuYmluZGlyX25hdGl2ZSwgJ3FlbXUtb2UtYnJpZGdlLWhlbHBlcicpKSkKKwogICAgIGRlZiBzZXR1cF9zbGlycChzZWxmKToKICAgICAgICAgIiIiU2V0dXAgdXNlciBuZXR3b3JraW5nIiIiCiAKICAgICAgICAgaWYgc2VsZi5mc3R5cGUgPT0gJ25mcyc6CiAgICAgICAgICAgICBzZWxmLnNldHVwX25mcygpCi0gICAgICAgIHNlbGYua2VybmVsX2NtZGxpbmVfc2NyaXB0ICs9ICcgaXA9ZGhjcCcKKyAgICAgICAgbmV0Y29uZiA9ICIgIiArIHNlbGYuY21kbGluZV9pcF9zbGlycAorICAgICAgICBsb2dnZXIuaW5mbygiTmV0d29yayBjb25maWd1cmF0aW9uOiVzIiwgbmV0Y29uZikKKyAgICAgICAgc2VsZi5rZXJuZWxfY21kbGluZV9zY3JpcHQgKz0gbmV0Y29uZgogICAgICAgICAjIFBvcnQgbWFwcGluZwogICAgICAgICBob3N0ZndkID0gIixob3N0ZndkPXRjcDo6MjIyMi06MjIsaG9zdGZ3ZD10Y3A6OjIzMjMtOjIzIgogICAgICAgICBxYl9zbGlycF9vcHRfZGVmYXVsdCA9ICItbmV0ZGV2IHVzZXIsaWQ9bmV0MCVzLHRmdHA9JXMiICUgKGhvc3Rmd2QsIHNlbGYuZ2V0KCdERVBMT1lfRElSX0lNQUdFJykpCkBAIC0xMTIwLDcgKzExMzEsMTEgQEAKICAgICAgICAgICAgIHVpZCA9IG9zLmdldHVpZCgpCiAgICAgICAgICAgICBsb2dnZXIuaW5mbygiU2V0dGluZyB1cCB0YXAgaW50ZXJmYWNlIHVuZGVyIHN1ZG8iKQogICAgICAgICAgICAgY21kID0gKCdzdWRvJywgc2VsZi5xZW11aWZ1cCwgc3RyKHVpZCksIHN0cihnaWQpLCBzZWxmLmJpbmRpcl9uYXRpdmUpCi0gICAgICAgICAgICB0YXAgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQpLmRlY29kZSgndXRmLTgnKS5zdHJpcCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdGFwID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kKS5kZWNvZGUoJ3V0Zi04Jykuc3RyaXAoKQorICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdTZXR0aW5nIHVwIHRhcCBkZXZpY2UgZmFpbGVkOlxuJXNcblJ1biBydW5xZW11LWdlbi10YXBkZXZzIHRvIG1hbnVhbGx5IGNyZWF0ZSBvbmUuJyAlIHN0cihlKSkKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQogICAgICAgICAgICAgbG9ja2ZpbGUgPSBvcy5wYXRoLmpvaW4obG9ja2RpciwgdGFwKQogICAgICAgICAgICAgc2VsZi50YXBsb2NrID0gbG9ja2ZpbGUgKyAnLmxvY2snCiAgICAgICAgICAgICBzZWxmLmFjcXVpcmVfdGFwbG9jaygpCkBAIC0xMTI5LDE2ICsxMTQ0LDE4IEBACiAKICAgICAgICAgaWYgbm90IHRhcDoKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRmFpbGVkIHRvIHNldHVwIHRhcCBkZXZpY2UuIFJ1biBydW5xZW11LWdlbi10YXBkZXZzIHRvIG1hbnVhbGx5IGNyZWF0ZS4iKQotICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCiAgICAgICAgIHNlbGYudGFwID0gdGFwCiAgICAgICAgIHRhcG51bSA9IGludCh0YXBbMzpdKQogICAgICAgICBnYXRld2F5ID0gdGFwbnVtICogMiArIDEKICAgICAgICAgY2xpZW50ID0gZ2F0ZXdheSArIDEKICAgICAgICAgaWYgc2VsZi5mc3R5cGUgPT0gJ25mcyc6CiAgICAgICAgICAgICBzZWxmLnNldHVwX25mcygpCi0gICAgICAgIG5ldGNvbmYgPSAiMTkyLjE2OC43LiVzOjoxOTIuMTY4LjcuJXM6MjU1LjI1NS4yNTUuMCIgJSAoY2xpZW50LCBnYXRld2F5KQotICAgICAgICBsb2dnZXIuaW5mbygiTmV0d29yayBjb25maWd1cmF0aW9uOiAlcyIsIG5ldGNvbmYpCi0gICAgICAgIHNlbGYua2VybmVsX2NtZGxpbmVfc2NyaXB0ICs9ICIgaXA9JXMiICUgbmV0Y29uZgorICAgICAgICBuZXRjb25mID0gIiAiICsgc2VsZi5jbWRsaW5lX2lwX3RhcAorICAgICAgICBuZXRjb25mID0gbmV0Y29uZi5yZXBsYWNlKCdAQ0xJRU5UQCcsIHN0cihjbGllbnQpKQorICAgICAgICBuZXRjb25mID0gbmV0Y29uZi5yZXBsYWNlKCdAR0FURVdBWUAnLCBzdHIoZ2F0ZXdheSkpCisgICAgICAgIGxvZ2dlci5pbmZvKCJOZXR3b3JrIGNvbmZpZ3VyYXRpb246JXMiLCBuZXRjb25mKQorICAgICAgICBzZWxmLmtlcm5lbF9jbWRsaW5lX3NjcmlwdCArPSBuZXRjb25mCiAgICAgICAgIG1hYyA9ICIlcyUwMngiICUgKHNlbGYubWFjX3RhcCwgY2xpZW50KQogICAgICAgICBxYl90YXBfb3B0ID0gc2VsZi5nZXQoJ1FCX1RBUF9PUFQnKQogICAgICAgICBpZiBxYl90YXBfb3B0OgpAQCAtMTE1Nyw5ICsxMTc0LDEzIEBACiAgICAgICAgIGlmIHN5cy5zdGRpbi5pc2F0dHkoKToKICAgICAgICAgICAgIHNlbGYuc2F2ZWRfc3R0eSA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCgic3R0eSIsICItZyIpKS5kZWNvZGUoJ3V0Zi04Jykuc3RyaXAoKQogICAgICAgICBzZWxmLm5ldHdvcmtfZGV2aWNlID0gc2VsZi5nZXQoJ1FCX05FVFdPUktfREVWSUNFJykgb3Igc2VsZi5uZXR3b3JrX2RldmljZQotICAgICAgICBpZiBzZWxmLnNsaXJwX2VuYWJsZWQ6CisgICAgICAgIGlmIHNlbGYubmV0X2JyaWRnZToKKyAgICAgICAgICAgIHNlbGYuc2V0dXBfbmV0X2JyaWRnZSgpCisgICAgICAgIGVsaWYgc2VsZi5zbGlycF9lbmFibGVkOgorICAgICAgICAgICAgc2VsZi5jbWRsaW5lX2lwX3NsaXJwID0gc2VsZi5nZXQoJ1FCX0NNRExJTkVfSVBfU0xJUlAnKSBvciBzZWxmLmNtZGxpbmVfaXBfc2xpcnAKICAgICAgICAgICAgIHNlbGYuc2V0dXBfc2xpcnAoKQogICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jbWRsaW5lX2lwX3RhcCA9IHNlbGYuZ2V0KCdRQl9DTURMSU5FX0lQX1RBUCcpIG9yIHNlbGYuY21kbGluZV9pcF90YXAKICAgICAgICAgICAgIHNlbGYuc2V0dXBfdGFwKCkKIAogICAgIGRlZiBzZXR1cF9yb290ZnMoc2VsZik6CkBAIC0xMTc1LDYgKzExOTYsMTAgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYucm9vdGZzX29wdGlvbnMgPSAnLWRyaXZlIGZpbGU9JXMsaWY9dmlydGlvLGZvcm1hdD0lcycgJSAoc2VsZi5yb290ZnMsIHJvb3Rmc19mb3JtYXQpCiAKKyAgICAgICAgcWJfcm9vdGZzX2V4dHJhX29wdCA9IHNlbGYuZ2V0KCJRQl9ST09URlNfRVhUUkFfT1BUIikKKyAgICAgICAgaWYgcWJfcm9vdGZzX2V4dHJhX29wdCBhbmQgbm90IHFiX3Jvb3Rmc19leHRyYV9vcHQuc3RhcnRzd2l0aCgiLCIpOgorICAgICAgICAgICAgcWJfcm9vdGZzX2V4dHJhX29wdCA9ICIsIiArIHFiX3Jvb3Rmc19leHRyYV9vcHQKKwogICAgICAgICBpZiBzZWxmLmZzdHlwZSBpbiAoJ2NwaW8uZ3onLCAnY3BpbycpOgogICAgICAgICAgICAgc2VsZi5rZXJuZWxfY21kbGluZSA9ICdyb290PS9kZXYvcmFtMCBydyBkZWJ1Z3NoZWxsJwogICAgICAgICAgICAgc2VsZi5yb290ZnNfb3B0aW9ucyA9ICctaW5pdHJkICVzJyAlIHNlbGYucm9vdGZzCkBAIC0xMTg3LDExICsxMjEyLDE1IEBACiAgICAgICAgICAgICAgICAgICAgIGRyaXZlX3R5cGUgPSBzZWxmLmdldCgnUUJfRFJJVkVfVFlQRScpCiAgICAgICAgICAgICAgICAgICAgIGlmIGRyaXZlX3R5cGUuc3RhcnRzd2l0aCgiL2Rldi9zZCIpOgogICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1VzaW5nIHNjc2kgZHJpdmUnKQotICAgICAgICAgICAgICAgICAgICAgICAgdm1fZHJpdmUgPSAnLWRyaXZlIGlmPW5vbmUsaWQ9aGQsZmlsZT0lcyxmb3JtYXQ9JXMgLWRldmljZSB2aXJ0aW8tc2NzaS1wY2ksaWQ9c2NzaSAtZGV2aWNlIHNjc2ktaGQsZHJpdmU9aGQnIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNlbGYucm9vdGZzLCByb290ZnNfZm9ybWF0KQorICAgICAgICAgICAgICAgICAgICAgICAgdm1fZHJpdmUgPSAnLWRyaXZlIGlmPW5vbmUsaWQ9aGQsZmlsZT0lcyxmb3JtYXQ9JXMgLWRldmljZSB2aXJ0aW8tc2NzaS1wY2ksaWQ9c2NzaSAtZGV2aWNlIHNjc2ktaGQsZHJpdmU9aGQlcycgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc2VsZi5yb290ZnMsIHJvb3Rmc19mb3JtYXQsIHFiX3Jvb3Rmc19leHRyYV9vcHQpCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgZHJpdmVfdHlwZS5zdGFydHN3aXRoKCIvZGV2L2hkIik6CiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnVXNpbmcgaWRlIGRyaXZlJykKICAgICAgICAgICAgICAgICAgICAgICAgIHZtX2RyaXZlID0gIi1kcml2ZSBmaWxlPSVzLGZvcm1hdD0lcyIgJSAoc2VsZi5yb290ZnMsIHJvb3Rmc19mb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIGVsaWYgZHJpdmVfdHlwZS5zdGFydHN3aXRoKCIvZGV2L3ZkYiIpOgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1VzaW5nIGJsb2NrIHZpcnRpbyBkcml2ZScpOworICAgICAgICAgICAgICAgICAgICAgICAgdm1fZHJpdmUgPSAnLWRyaXZlIGlkPWRpc2swLGZpbGU9JXMsaWY9bm9uZSxmb3JtYXQ9JXMgLWRldmljZSB2aXJ0aW8tYmxrLWRldmljZSxkcml2ZT1kaXNrMCVzJyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzZWxmLnJvb3Rmcywgcm9vdGZzX2Zvcm1hdCxxYl9yb290ZnNfZXh0cmFfb3B0KQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgIyB2aXJ0aW8gbWlnaHQgaGF2ZSBiZWVuIHNlbGVjdGVkIGV4cGxpY2l0bHkgKGp1c3QgdXNlIGl0KSwgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICMgaXMgdXNlZCBhcyBmYWxsYmFjayAodGhlbiB3YXJuIGFib3V0IHRoYXQpLgpAQCAtMTQwNSwxMCArMTQzNCw3IEBACiAKICAgICAgICAgc2VsZi5jbGVhbmVkID0gVHJ1ZQogCi0gICAgZGVmIGxvYWRfYml0YmFrZV9lbnYoc2VsZiwgbWFjaD1Ob25lKToKLSAgICAgICAgaWYgc2VsZi5iaXRiYWtlX2U6Ci0gICAgICAgICAgICByZXR1cm4KLQorICAgIGRlZiBydW5fYml0YmFrZV9lbnYoc2VsZiwgbWFjaD1Ob25lKToKICAgICAgICAgYml0YmFrZSA9IHNodXRpbC53aGljaCgnYml0YmFrZScpCiAgICAgICAgIGlmIG5vdCBiaXRiYWtlOgogICAgICAgICAgICAgcmV0dXJuCkBAIC0xNDE2LDE0ICsxNDQyLDI0IEBACiAgICAgICAgIGlmIG5vdCBtYWNoOgogICAgICAgICAgICAgbWFjaCA9IHNlbGYuZ2V0KCdNQUNISU5FJykKIAorICAgICAgICBtdWx0aWNvbmZpZyA9IHNlbGYuZ2V0KCdNVUxUSUNPTkZJRycpCisgICAgICAgIGlmIG11bHRpY29uZmlnOgorICAgICAgICAgICAgbXVsdGljb25maWcgPSAibWM6JXMiICUgbXVsdGljb25maWcKKwogICAgICAgICBpZiBtYWNoOgotICAgICAgICAgICAgY21kID0gJ01BQ0hJTkU9JXMgYml0YmFrZSAtZScgJSBtYWNoCisgICAgICAgICAgICBjbWQgPSAnTUFDSElORT0lcyBiaXRiYWtlIC1lICVzJyAlIChtYWNoLCBtdWx0aWNvbmZpZykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNtZCA9ICdiaXRiYWtlIC1lJworICAgICAgICAgICAgY21kID0gJ2JpdGJha2UgLWUgJXMnICUgbXVsdGljb25maWcKIAogICAgICAgICBsb2dnZXIuaW5mbygnUnVubmluZyAlcy4uLicgJSBjbWQpCisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHNoZWxsPVRydWUpLmRlY29kZSgndXRmLTgnKQorCisgICAgZGVmIGxvYWRfYml0YmFrZV9lbnYoc2VsZiwgbWFjaD1Ob25lKToKKyAgICAgICAgaWYgc2VsZi5iaXRiYWtlX2U6CisgICAgICAgICAgICByZXR1cm4KKwogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmJpdGJha2VfZSA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc2hlbGw9VHJ1ZSkuZGVjb2RlKCd1dGYtOCcpCisgICAgICAgICAgICBzZWxmLmJpdGJha2VfZSA9IHNlbGYucnVuX2JpdGJha2VfZW52KG1hY2g9bWFjaCkKICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGVycjoKICAgICAgICAgICAgIHNlbGYuYml0YmFrZV9lID0gJycKICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJDb3VsZG4ndCBydW4gJ2JpdGJha2UgLWUnIHRvIGdhdGhlciBlbnZpcm9ubWVudCBpbmZvcm1hdGlvbjpcbiVzIiAlIGVyci5vdXRwdXQuZGVjb2RlKCd1dGYtOCcpKQpAQCAtMTQzOCw3ICsxNDc0LDEzIEBACiAgICAgICAgIGlmIHJlc3VsdCBhbmQgb3MucGF0aC5leGlzdHMocmVzdWx0KToKICAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAotICAgICAgICBjbWQgPSAoJ2JpdGJha2UnLCAncWVtdS1oZWxwZXItbmF0aXZlJywgJy1lJykKKyAgICAgICAgY21kID0gWydiaXRiYWtlJywgJy1lJ10KKyAgICAgICAgbXVsdGljb25maWcgPSBzZWxmLmdldCgnTVVMVElDT05GSUcnKQorICAgICAgICBpZiBtdWx0aWNvbmZpZzoKKyAgICAgICAgICAgIGNtZC5hcHBlbmQoJ21jOiVzOnFlbXUtaGVscGVyLW5hdGl2ZScgJSBtdWx0aWNvbmZpZykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNtZC5hcHBlbmQoJ3FlbXUtaGVscGVyLW5hdGl2ZScpCisKICAgICAgICAgbG9nZ2VyLmluZm8oJ1J1bm5pbmcgJXMuLi4nICUgc3RyKGNtZCkpCiAgICAgICAgIG91dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCkuZGVjb2RlKCd1dGYtOCcpCiAKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9ydW5xZW11LWV4dHJhY3Qtc2RrIGIvcG9reS9zY3JpcHRzL3J1bnFlbXUtZXh0cmFjdC1zZGsKaW5kZXggOGE0ZWU5MC4uOWJjMGMwNyAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL3J1bnFlbXUtZXh0cmFjdC1zZGsKKysrIGIvcG9reS9zY3JpcHRzL3J1bnFlbXUtZXh0cmFjdC1zZGsKQEAgLTY5LDcgKzY5LDcgQEAKIHBzZXVkb19zdGF0ZV9kaXI9IiRTREtfUk9PVEZTX0RJUi8uLi8kKGJhc2VuYW1lICIkU0RLX1JPT1RGU19ESVIiKS5wc2V1ZG9fc3RhdGUiCiBwc2V1ZG9fc3RhdGVfZGlyPSIkKHJlYWRsaW5rIC1mICRwc2V1ZG9fc3RhdGVfZGlyKSIKIAotZGVidWdfaW1hZ2U9ImBlY2hvICRST09URlNfVEFSQkFMTCB8IGdyZXAgJ1wtZGJnXC50YXJcLidgIgorZGVidWdfaW1hZ2U9ImBlY2hvICRST09URlNfVEFSQkFMTCB8IGdyZXAgJ1wtZGJnXC5yb290ZnNcLnRhcidgIgogCiBpZiBbIC1lICIkcHNldWRvX3N0YXRlX2RpciIgLWEgLXogIiRkZWJ1Z19pbWFnZSIgXTsgdGhlbgogCWVjaG8gIkVycm9yOiAkcHNldWRvX3N0YXRlX2RpciBhbHJlYWR5IGV4aXN0cyEiCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvdGlueS9rc2l6ZS5weSBiL3Bva3kvc2NyaXB0cy90aW55L2tzaXplLnB5CmluZGV4IGJjMTE5MTkuLjgzMTZiODUgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy90aW55L2tzaXplLnB5CisrKyBiL3Bva3kvc2NyaXB0cy90aW55L2tzaXplLnB5CkBAIC0yNyw3ICsyNyw3IEBACiBjbGFzcyBTaXplczoKICAgICBkZWYgX19pbml0X18oc2VsZiwgZ2xvYik6CiAgICAgICAgIHNlbGYudGl0bGUgPSBnbG9iCi0gICAgICAgIHAgPSBQb3Blbigic2l6ZSAtdCAiICsgc3RyKGdsb2IpLCBzaGVsbD1UcnVlLCBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUpCisgICAgICAgIHAgPSBQb3Blbigic2l6ZSAtdCAiICsgc3RyKGdsb2IpLCBzaGVsbD1UcnVlLCBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUsIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQogICAgICAgICBvdXRwdXQgPSBwLmNvbW11bmljYXRlKClbMF0uc3BsaXRsaW5lcygpCiAgICAgICAgIGlmIGxlbihvdXRwdXQpID4gMjoKICAgICAgICAgICAgIHNpemVzID0gb3V0cHV0Wy0xXS5zcGxpdCgpWzA6NF0KQEAgLTQ5LDE0ICs0OSwxNCBAQAogICAgICAgICBwYXRoID0gb3MucGF0aC5kaXJuYW1lKGZpbGVuYW1lKQogCiAgICAgICAgIHAgPSBQb3BlbigibHMgIiArIHN0cihwYXRoKSArICIvKi5vIHwgZ3JlcCAtdiBidWlsdC1pbi5vIiwKLSAgICAgICAgICAgICAgICAgIHNoZWxsPVRydWUsIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSkKKyAgICAgICAgICAgICAgICAgIHNoZWxsPVRydWUsIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCiAgICAgICAgIGdsb2IgPSAnICcuam9pbihwLmNvbW11bmljYXRlKClbMF0uc3BsaXRsaW5lcygpKQogICAgICAgICBvcmVwb3J0ID0gUmVwb3J0KGdsb2IsIHN0cihwYXRoKSArICIvKi5vIikKICAgICAgICAgb3JlcG9ydC5zaXplcy50aXRsZSA9IHN0cihwYXRoKSArICIvKi5vIgogICAgICAgICByLnBhcnRzLmFwcGVuZChvcmVwb3J0KQogCiAgICAgICAgIGlmIHN1Ymdsb2I6Ci0gICAgICAgICAgICBwID0gUG9wZW4oImxzICIgKyBzdWJnbG9iLCBzaGVsbD1UcnVlLCBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUpCisgICAgICAgICAgICBwID0gUG9wZW4oImxzICIgKyBzdWJnbG9iLCBzaGVsbD1UcnVlLCBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUsIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQogICAgICAgICAgICAgZm9yIGYgaW4gcC5jb21tdW5pY2F0ZSgpWzBdLnNwbGl0bGluZXMoKToKICAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5kaXJuYW1lKGYpCiAgICAgICAgICAgICAgICAgci5wYXJ0cy5hcHBlbmQoUmVwb3J0LmNyZWF0ZShmLCBwYXRoLCBzdHIocGF0aCkgKyAiLyovYnVpbHQtaW4ubyIpKQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3dpYyBiL3Bva3kvc2NyaXB0cy93aWMKaW5kZXggZWE2MTQxMC4uMjQ3MDBmMyAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL3dpYworKysgYi9wb2t5L3NjcmlwdHMvd2ljCkBAIC0zOTIsOSArMzkyLDkgQEAKIAogZGVmIHdpY19pbml0X3BhcnNlcl9jcChzdWJwYXJzZXIpOgogICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoInNyYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJzb3VyY2Ugc3BlYyIpCi0gICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgiZGVzdCIsIHR5cGU9aW1ncGF0aHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJpbWFnZSBzcGVjOiA8aW1hZ2U+Ojx2ZmF0IHBhcnRpdGlvbj5bPHBhdGg+XSIpCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJpbWFnZSBzcGVjOiA8aW1hZ2U+Ojx2ZmF0IHBhcnRpdGlvbj5bPHBhdGg+XSBvciA8ZmlsZT4iKQorICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoImRlc3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iaW1hZ2Ugc3BlYzogPGltYWdlPjo8dmZhdCBwYXJ0aXRpb24+WzxwYXRoPl0gb3IgPGZpbGU+IikKICAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCItbiIsICItLW5hdGl2ZS1zeXNyb290IiwKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InBhdGggdG8gdGhlIG5hdGl2ZSBzeXNyb290IGNvbnRhaW5pbmcgdGhlIHRvb2xzIikKIApAQCAtNTIyLDYgKzUyMiwxNiBAQAogICAgICAgICAgICAgICAgIGhscHRbMF0oaGxwdFsxXSwgaGxwdFsyXSkKICAgICAgICAgICAgIHJldHVybiAwCiAKKyAgICAjIHZhbGlkYXRlIHdpYyBjcCBzcmMgYW5kIGRlc3QgcGFyYW1ldGVyIHRvIGlkZW50aWZ5IHdoaWNoIG9uZSBvZiBpdCBpcworICAgICMgaW1hZ2UgYW5kIGNhc3QgaXQgaW50byBpbWd0eXBlCisgICAgaWYgYXJncy5jb21tYW5kID09ICJjcCI6CisgICAgICAgIGlmICI6IiBpbiBhcmdzLmRlc3Q6CisgICAgICAgICAgICBhcmdzLmRlc3QgPSBpbWd0eXBlKGFyZ3MuZGVzdCkKKyAgICAgICAgZWxpZiAiOiIgaW4gYXJncy5zcmM6CisgICAgICAgICAgICBhcmdzLnNyYyA9IGltZ3R5cGUoYXJncy5zcmMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBhcmdwYXJzZS5Bcmd1bWVudFR5cGVFcnJvcigibm8gaW1hZ2Ugb3IgcGFydGl0aW9uIG51bWJlciBzcGVjaWZpZWQuIikKKwogICAgIHJldHVybiBobHAuaW52b2tlX3N1YmNvbW1hbmQoYXJncywgcGFyc2VyLCBobHAud2ljX2hlbHBfdXNhZ2UsIHN1YmNvbW1hbmRzKQogCiAKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy95b2N0by1jaGVjay1sYXllciBiL3Bva3kvc2NyaXB0cy95b2N0by1jaGVjay1sYXllcgppbmRleCAwMTA4MzBmLi5jYTZjNzliIDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMveW9jdG8tY2hlY2stbGF5ZXIKKysrIGIvcG9reS9zY3JpcHRzL3lvY3RvLWNoZWNrLWxheWVyCkBAIC04NCw3ICs4NCw3IEBACiAgICAgICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLkVSUk9SKQogCiAgICAgaWYgbm90ICdCVUlMRERJUicgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgbG9nZ2VyLmVycm9yKCJZb3UgbXVzdCBzb3VyY2UgdGhlIGVudmlyb25tZW50IGJlZm9yZSBydW4gdGhpcyBzY3JpcHQuIikKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJZb3UgbXVzdCBzb3VyY2UgdGhlIGVudmlyb25tZW50IGJlZm9yZSBydW5uaW5nIHRoaXMgc2NyaXB0LiIpCiAgICAgICAgIGxvZ2dlci5lcnJvcigiJCBzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYiKQogICAgICAgICByZXR1cm4gMQogICAgIGJ1aWxkZGlyID0gb3MuZW52aXJvblsnQlVJTERESVInXQpAQCAtOTIsNyArOTIsNyBAQAogCiAgICAgbGF5ZXJzID0gZGV0ZWN0X2xheWVycyhhcmdzLmxheWVycywgYXJncy5ub19hdXRvKQogICAgIGlmIG5vdCBsYXllcnM6Ci0gICAgICAgIGxvZ2dlci5lcnJvcigiRmFpbCB0byBkZXRlY3QgbGF5ZXJzIikKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJGYWlsZWQgdG8gZGV0ZWN0IGxheWVycyIpCiAgICAgICAgIHJldHVybiAxCiAgICAgaWYgYXJncy5hZGRpdGlvbmFsX2xheWVyczoKICAgICAgICAgYWRkaXRpb25hbF9sYXllcnMgPSBkZXRlY3RfbGF5ZXJzKGFyZ3MuYWRkaXRpb25hbF9sYXllcnMsIGFyZ3Mubm9fYXV0bykKQEAgLTEwOCw3ICsxMDgsNyBAQAogICAgIGZvciBsYXllciBpbiBsYXllcnM6CiAgICAgICAgIGlmIGxheWVyWyd0eXBlJ10gPT0gTGF5ZXJUeXBlLkVSUk9SX0JTUF9ESVNUUk86CiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIiVzOiBDYW4ndCBiZSBESVNUUk8gYW5kIEJTUCB0eXBlIGF0IHRoZSBzYW1lIHRpbWUuIlwKLSAgICAgICAgICAgICAgICAgICAgICIgVGhlIGNvbmYvZGlzdHJvIGFuZCBjb25mL21hY2hpbmUgZm9sZGVycyB3YXMgZm91bmQuIlwKKyAgICAgICAgICAgICAgICAgICAgICIgQm90aCBjb25mL2Rpc3RybyBhbmQgY29uZi9tYWNoaW5lIGZvbGRlcnMgd2VyZSBmb3VuZC4iXAogICAgICAgICAgICAgICAgICAgICAgJSBsYXllclsnbmFtZSddKQogICAgICAgICAgICAgbGF5ZXJzLnJlbW92ZShsYXllcikKICAgICAgICAgZWxpZiBsYXllclsndHlwZSddID09IExheWVyVHlwZS5FUlJPUl9OT19MQVlFUl9DT05GOgo=